pax_global_header00006660000000000000000000000064136115332070014513gustar00rootroot0000000000000052 comment=fda5e5c402b1cb57dda010d21c656e6f9d8d1544 libvips-8.9.1/000077500000000000000000000000001361153320700132025ustar00rootroot00000000000000libvips-8.9.1/.editorconfig000066400000000000000000000005031361153320700156550ustar00rootroot00000000000000# http://editorconfig.org [*] end_of_line = lf charset = utf-8 trim_trailing_whitespace = false insert_final_newline = true [*.{cpp,c,h}] indent_style = tab indent_size = 8 [*.py] indent_style = space indent_size = 4 [Makefile.am] indent_style = tab indent_size = 8 [configure.ac] indent_style = space indent_size = 2 libvips-8.9.1/.gitattributes000066400000000000000000000002041361153320700160710ustar00rootroot00000000000000# Shell scripts and Automake sources can't have CRLF line endings configure.ac eol=lf Makefile.am eol=lf *.m4 eol=lf *.sh eol=lf libvips-8.9.1/.github/000077500000000000000000000000001361153320700145425ustar00rootroot00000000000000libvips-8.9.1/.github/FUNDING.yml000066400000000000000000000000311361153320700163510ustar00rootroot00000000000000open_collective: libvips libvips-8.9.1/.gitignore000066400000000000000000000054571361153320700152050ustar00rootroot00000000000000compile .pytest_cache a.out *.log *.trs cov-int tmp tmp-* test/variables.sh libvips/introspect scan compile po/*.pot test-driver vips-*.tar.gz doc/setup-build.stamp doc/tmpl-build.stamp doc/tmpl.stamp doc/tmpl/ doc/gtk-doc.make doc/libvips-docs.sgml doc/libvips-docs.xml libvips-scan libvips-scan.c Makefile.in TAGS tags *.o *.a fuzz/*_fuzzer Vips-8.0.gir Vips-8.0.typelib .*.swp *.lo *.bak *.vect *.la Vips-8.0.gir Vips-8.0.typelib *.pc *.pyc *.pyo .deps .libs aclocal.m4 config.* configure depcomp autom4te.cache/ install-sh libtool libvips/include/vips/version.h fred ltmain.sh m4/gtk-doc.m4 m4/intltool.m4 m4/libtool.m4 m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 m4/codeset.m4 m4/gettext.m4 m4/glibc21.m4 m4/iconv.m4 m4/introspection.m4 m4/lcmessage.m4 m4/progtest.m4 missing mkinstalldirs po/Makefile.in.in po/POTFILES po/de.gmo py-compile stamp-h1 swig/python/setup.py swig/vipsCC/VDisplay.py swig/vipsCC/VError.py swig/vipsCC/VImage.h swig/vipsCC/VImage.py swig/vipsCC/VMask.py swig/vipsCC/vdisplaymodule.cxx swig/vipsCC/verrormodule.cxx swig/vipsCC/vimagemodule.cxx swig/vipsCC/vmaskmodule.cxx tools/edvips tools/header tools/vipsedit tools/vipsheader tools/vips tools/vipsthumbnail tools/find_mosaic tools/mergeup tools/cooc tools/cooc_features tools/glds tools/glds_features tools/simcontr tools/sines tools/spatres tools/squares tools/batch_crop tools/batch_image_convert tools/batch_rubber_sheet tools/light_correct tools/shrink_width # we can't ignore all Makefile since we have a couple of hand-made ones Makefile doc/Makefile libvips/Makefile libvips/acquire/Makefile libvips/arithmetic/Makefile libvips/boolean/Makefile libvips/cimg/Makefile libvips/colour/Makefile libvips/conversion/Makefile libvips/convolution/Makefile libvips/deprecated/Makefile libvips/format/Makefile libvips/freq_filt/Makefile libvips/histograms_lut/Makefile libvips/include/Makefile libvips/include/vips/Makefile libvips/inplace/Makefile libvips/iofuncs/Makefile libvips/mask/Makefile libvips/morphology/Makefile libvips/mosaicing/Makefile libvips/other/Makefile libvips/relational/Makefile libvips/resample/Makefile libvips/video/Makefile libvipsCC/Makefile libvipsCC/include/Makefile libvipsCC/include/vips/Makefile man/Makefile po/Makefile swig/Makefile swig/vipsCC/Makefile tools/Makefile tools/iofuncs/Makefile tools/mosaicing/Makefile tools/other/Makefile tools/scripts/Makefile # various things made by gtk-doc doc/html-build.stamp doc/html.stamp doc/html/ doc/libvips-decl-list.txt doc/libvips-decl.txt doc/libvips-overrides.txt doc/libvips-sections.txt doc/libvips-undeclared.txt doc/libvips-undocumented.txt doc/libvips-unused.txt doc/libvips.args doc/libvips.hierarchy doc/libvips.interfaces doc/libvips.prerequisites doc/libvips.signals doc/libvips.types doc/scan-build.stamp doc/sgml-build.stamp doc/sgml.stamp doc/xml/ gtkdocerrors libvips-8.9.1/.travis.yml000066400000000000000000000074461361153320700153260ustar00rootroot00000000000000language: cpp before_script: - $PYTHON -m pip download --no-deps https://github.com/libvips/pyvips/archive/$PYVIPS_VERSION.tar.gz - tar xf $PYVIPS_VERSION.tar.gz - $PYTHON -m pip install --user --upgrade pyvips-$PYVIPS_VERSION/[test] - ./autogen.sh --disable-dependency-tracking --with-jpeg-includes=$JPEG/include --with-jpeg-libraries=$JPEG/lib --with-magick=$WITH_MAGICK - make -j$JOBS -s script: - make -j$JOBS -s -k V=0 VERBOSE=1 check - LD_LIBRARY_PATH=$PWD/libvips/.libs DYLD_LIBRARY_PATH=$PWD/libvips/.libs LD_PRELOAD=$ASAN_DSO $PYTHON -m pytest -sv --log-cli-level=WARNING test/test-suite matrix: allow_failures: - os: osx fast_finish: true include: - os: linux sudo: required dist: xenial compiler: gcc env: - PYTHON=python2 - PYVIPS_VERSION=master - JPEG=/usr - JOBS=`nproc` - WITH_MAGICK=yes cache: ccache - os: linux sudo: required dist: xenial compiler: clang env: - PYTHON=python2 - PYVIPS_VERSION=master - JPEG=/usr - JOBS=`nproc` - WITH_MAGICK=no - CFLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer -fopenmp -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" - LDFLAGS="-fsanitize=address,undefined -dynamic-asan -fopenmp=libiomp5" - ASAN_DSO=/usr/local/clang-7.0.0/lib/clang/7.0.0/lib/linux/libclang_rt.asan-x86_64.so - LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/suppressions/lsan.supp" - UBSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/suppressions/ubsan.supp" # comment these out, I get strange parse errors from asan for some # reason # # ASAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/suppressions/asan.supp" install: # add support for WebP - wget http://archive.ubuntu.com/ubuntu/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_amd64.deb - wget http://archive.ubuntu.com/ubuntu/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_amd64.deb - wget http://archive.ubuntu.com/ubuntu/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_amd64.deb - wget http://archive.ubuntu.com/ubuntu/pool/main/libw/libwebp/libwebp6_0.6.1-2_amd64.deb - sudo dpkg -i *.deb cache: ccache - os: osx osx_image: xcode10.1 env: - PYTHON=python2 - PYVIPS_VERSION=master - JPEG=/usr/local - JOBS="`sysctl -n hw.ncpu`" - WITH_MAGICK=yes - PATH="/usr/local/opt/ccache/libexec:$PATH" - HOMEBREW_NO_AUTO_UPDATE=1 cache: ccache addons: apt: update: true sources: # use a more recent imagemagick instead of 6.8.9-9 - sourceline: 'ppa:opencpu/imagemagick' # add support for HEIF files - sourceline: 'ppa:strukturag/libheif' - sourceline: 'ppa:strukturag/libde265' packages: - automake - gtk-doc-tools - gobject-introspection - libfftw3-dev - libexif-dev - libjpeg-turbo8-dev - libpng12-dev - libwebp-dev # missing on xenial, unfortunately # - libwebpmux2 - libtiff5-dev - libheif-dev - libexpat1-dev - libmagick++-dev - bc - libcfitsio3-dev - libgsl0-dev - libmatio-dev - liborc-0.4-dev - liblcms2-dev - libpoppler-glib-dev - librsvg2-dev - libgif-dev - libopenexr-dev - libpango1.0-dev - libgsf-1-dev - libopenslide-dev - libffi-dev - libiomp-dev homebrew: packages: - ccache - gtk-doc - gobject-introspection - fftw - libexif - webp - imagemagick - cfitsio - gsl - libmatio - orc - little-cms2 - poppler - librsvg - openexr - pango - libgsf - openslide libvips-8.9.1/AUTHORS000066400000000000000000000017221361153320700142540ustar00rootroot00000000000000Authors of VIPS See also the files THANKS and ChangeLog Nicos Dessipris and Kirk Martinez started VIPS in 1990. John Cupitt started ip in late 1990, and took over maintenance of the VIPS library in 1995. Ruven Pillay, Steve Perry, Lars Raffelt, David Saunders, Jean-Philippe Laurant, Ahmed Abood, Helene Chahine, Joe Padfield, Andrey Kiselev, Lev Serebryakov, Simon Goodall, Konrad Lang, Markus Wollgarten, Jesper Friis, Tom Vajzovic, Chris Leick and others contributed patches for the library and ip. Hans Breuer contributed many win32 compatibility fixes and a win32 build system. Dennis Lubert cleaned up the C++ API. Jose Manuel Menendez Garcia, Javier Alejandre Arenas, and Juan Torres Arjona contributed the tmake VIPS.DLL build system and the MSVC project files. Nicolas Robidoux contributed optimized bilinear and bicubic code to the VipsInterpolate class and, with Chantal Racette and Adam Turcotte, contributed the novel LBB, Nohalo and VSQBS interpolators. libvips-8.9.1/COPYING000066400000000000000000000636421361153320700142500ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, 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 and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, 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 library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete 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 distribute a copy of this License along with the Library. 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 Library or any portion of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, 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 Library, 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 Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you 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. If distribution of 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 satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be 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. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library 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. 9. 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 Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library 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 with this License. 11. 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 Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library 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 Library. 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. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library 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. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser 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 Library 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 Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, 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 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. 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 LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! libvips-8.9.1/ChangeLog000066400000000000000000004073031361153320700147630ustar00rootroot0000000000000020/6/19 started 8.9.1 - don't use the new source loaders for new_from_file or new_from_buffer, it will break the loader priority system - fix thumbnail autorot [janko] - fix a warning with magicksave with no delay array [chregu] - fix a race in tiled tiff load [kleisauke] - better imagemagick init [LebronCurry] - lock for metadata changes [jcupitt] 20/6/19 started 8.9.0 - add vips_image_get/set_array_int() - disable webp alpha output if all frame fill the canvas and are solid - support arrays of delays for animated images [deftomat] - add "unlimited" flag to svgload - disable webp alpha output if all frames fill the canvas and are solid - add "compression" option to heifsave [lovell] - support webp and zstd compression in tiff - loaders use "minimise" to close input files earlier - integrate support for oss-fuzz [omira-sch] - add vips_switch() / vips_case() ... fast many-way ifthenelse - better const handling for arithmetic operators fixes comparisons against out of range values - sharpen restores input colourspace - handle alpha in heifload / heifsave [meyermarcel] - add @interpretation and @format to rawload - nifti load/save uses double for all floating point metadata - add vips_error_buffer_copy() - add VipsSource and VipsTarget: a universal IO class for loaders and savers - jpeg, png, tiff (though not tiffsave), rad, svg, ppm and webp use the new IO class - rewritten ppm load/save is faster and uses less memory - add @no_strip option to dzsave [kalozka1] - add iiif layout to dzsave - fix use of resolution-unit metadata on tiff save [kayarre] - support TIFF CIELAB images with alpha [angelmixu] - support TIFF with premultiplied alpha in any band - block metadata changes on shared images [pvdz] - RGB and sRGB are synonmous 17/9/19 started 8.8.4 - improve compatibility with older imagemagick versions - remove realpath, since it can fail on systems with grsec 31/8/19 started 8.8.3 - revert sharpen restoring the input colourspace - xres/yres tiffsave params were in pixels/cm [f--f] 9/7/19 started 8.8.2 - better early shutdown in readers - don't attempt to save large XMP to jpeg [tnextday] - always fetch HEIC metadata from the main image [zhoux2016] - fix loop in malformed ppm [Kyle-Kyle] - better support for PNGs with long comment names - fix build with GM - add locks for pdfium load - fix build with MSVC - fix a problem with shinkv tail processing [angelmixu] - fix a read one byte beyond buffer bug in jpegload - make GIF parsing less strict - better feof() handling in GIF load - clip coding and interpretation on vips image read - check image bounds for GIF load - prevent over-pre-shrink in thumbnail [kleisauke] - fix sharpen with sigma 0.5 [2h4dl] - sharpen restores input colourspace - verify bands/format for coded images - improve data_length handling for jpeg metadata 24/5/19 started 8.8.1 - improve realpath() use on older libc - better magickload error messages - more consistent behaviour for page-height metadata - fix for composite with many small images and some combinations of blend modes - fix memleak in tiff pyr save to memory [scossu] - istiff attempts to read the first directory rather than just testing the magic number [przemyslawpluta] - much faster ismagick() [jcupitt] - better behaviour for vips_region_fetch() if request lies partly ouside image - remove 256 band limit in arithmetic.c [erdmann] - disable Orc if building with CET [lovell] - fix vipsthumbnail with pyr tiff [kleisauke] - text autofit could occasionally terminate early [levmorozov] - fewer warnings on tiffload [chregu] - vips_resize() breaks aspect ratio and limits shrink to prevent <1px dimensions [lovell] 21/9/18 started 8.8.0 - much faster smartcrop [lovell] - add low/high to smartcrop [jcupitt] - add XMP support to png read/write [jcupitt] - deprecate thumbnail auto_rotate, add no_rotate [jcupitt] - implement thumbnail shrink-on-load for openslide images [jcupitt] - add animated webp support [jcupitt] - revise vips_cast() to improve behaviour with uint images [erdmann] - add bandand()/or()/eor() to cplusplus binding [clcaalu] - implement shrink-on-load for tiff pyramids [jcupitt] - added vips_image_set_blob_copy() [jcupitt] - don't stop composite on first non-transparent image [felixbuenemann, GDmac] - add vips_rect_overlapsrect() - composite is much faster at positioning subimages - stop tiff pyr layers if width or height drop to 1 [gvincke] - dzsave has a new skip_blanks option - add vips_CMYK2XYZ() and vips_XYZ2CMYK(), plus associated routes - include cmyk and srgb fallback profiles - add vips_profile_load() and use it everywhere - fix race in temp filename creation [lhecker] - add @reduction_effort param to webpsave [lovell] - add @option_string param to thumbnail_buffer [kleisauke] - add XMP, IPCT, ICC, EXIF etc. support to magickload/magicksave - much lower memuse for gifload - tilecache speedups - add vips_heifload(), vips_heifsave() - add heif thumbnail support to vips_thumbnail() - free threadpool earlier, reducing mem growth for some long-running processes [jtorresfabra] - add vips_region_fetch() / _width() / _height() for language bindings - vips_text() supports justification - move vips_image_set_kill() and iskilled() to the public API - dzsave to szi sets suffix correctly [martinweihrauch] - dzsave szi writes "scan-properties.xml" - add vips_image_(get|set)_image() - add openslideload option to attach all associated images as metadata - dzsave to szi will write all associated images - remove old c++ and python interfaces - vipsthumbnail can thumbnail animated and multipage images - deprecate webpload @shrink, use @scale instead 31/3/19 started 8.7.5 - better buffer sizing in tiff reader [omira-sch] 4/1/19 started 8.7.4 - magickload with magick6 API did not chain exceptions correctly causing a memory leak under some conditions [kleisauke] - zero memory on allocate to prevent write of uninitialized memory under some error conditions [Balint Varga-Perke] 21/11/18 started 8.7.3 - fix infinite loop for autofit with non-scaleable font - mapim was not offsetting by window offset [erdmann] - better rounding for scale [kleisauke] - fix a memleak in magick6load [kleisauke] 21/11/18 started 8.7.2 - more info output for temp files to help diagnose problems - vips_text() could set the wrong DPI - vips_text() leaked in autofit mode 23/9/18 started 8.7.1 - update function list in docs [janko-m] - test for g_str_to_ascii() [jcupitt] - fix temp file open on Windows and fallback on linux [lovell] 23/12/17 started 8.7.0 - add magicksave, save image with libMagick [dlemstra] - remove jpeg thumbnail from EXIF if "jpeg-thumbnail-data" has been removed by user - hough_line scales width to 0 - 180, not 0 - 360 - hough_line is 4x faster - hough_circle is 2x faster - add vips_sobel() and vips_canny() edge detectors - add vips_rotate() ... a convenience method for vips_similarity() - svgload was missing is_a [lovell] - better header sniffing for small files - drop incompatible ICC profiles before save - better hasalpha rules - create funcs always make MULTIBAND (ie. no alpha) - use O_TMPFILE, if available [Alexander--] - set "interlaced=1" for interlaced JPG and PNG images - add PDFium PDF loader - jpegload adds a jpeg-chroma-subsample field with eg. 4:4:4 for no chrominance subsampling. - tiffload, pdfload, magickload set VIPS_META_N_PAGES "n-pages" metadata item - add fontfile option to vips_text() [fangqiao] - add vips_transpose3d() -- swap major dimensions in a volumetric image - remove vips7 stuff from default API ... you must now #include it explicitly - added vips_argument_get_id() to fix derived classes on win32 [angelmixu] - fix compile with MSVC 2017 [angelmixu] - pdfload has a option for background - vips7 C++ interface defaults off - make members, getters and operators "const" in cpp API - composite has params for x/y position of sub-images [medakk] - add Mitchell kernel - pyramid builders have a choice of 2x2 shrinkers [harukizaemon] - add `palette` option to pngsave [felixbuenemann] - add basic nifti load/save support - support writing string-valued fields via libexif - paste in the test suite from pyvips - get EXIF tag names from tag plus ifd [@Nan619] - escape ASCII control characters in XML - magickload now sniffs some file types itself - update radiance load from upstream - add region_shrink to tiffsave - mapim could fail for float index images with coordinates out of int range - scale openexr alpha to 0 - 255 - close input earlier, when we can [kleisauke] - add vips_object_get_args() for language bindings [kleisauke] 12/3/18 started 8.6.4 - better fitting of fonts with overhanging edges [Adrià] - revise C++ example [fangqiao] - strict round down on jpeg shrink on load [davidwood] - configure test for g++ 7.2 and composite.cpp - don't Ping in magickload, too unreliable - ensure WebP can add metadata when compiled with libwebpmux [lovell] - improve accuracy of vector path convolution [felixbuenemann] 12/2/18 started 8.6.3 - use pkg-config to find libjpeg, if we can - better clean of output image in vips_image_write() fixes a crash writing twice to memory - better rounding behaviour in convolution means we hit the vector path more often - fix a crash if a delayed load failed [gsharpsh00ter] - icc_import attaches the fallback profile if it used it 5/1/18 started 8.6.2 - vips_sink_screen() keeps a ref to the input image ... stops a rare race - fix a minor accidental ABI break in 8.6.0 -> 8.6.1 [remicollet] - fix read of plane-separate TIFFs with large strips [remicollet] - fix a C++ warning in composite.cpp [lovell] - remove number of images limit in composite - composite allows 1 mode ... reused for all joins - fix race in vips_sink() for seq read 10/12/17 started 8.6.1 - fix mmap window new/free cycling - fix some compiler warnings - remove the 64-image limit on bandary operations - better version date [bmwiedemann] - bump wrapper script version [bgilbert] - fix a memleak on error during jpeg buffer write [lovell] - fix misspelling of IPTC as IPCT [lovell] - seq could be set on small images opened in random-access mode [aferrero2707] - fix small memleak in dzsave [lovell] - small speedup for rgb->g [lovell] 15/4/17 started 8.6.0 - supports fits images with leading non-image HDUs, thanks benepo - add vips_image_new_from_image() and vips_image_new_from_image1() ... make a constant image - add new_from_image() to Python as well - slight change to cpp new_from_image() to match py/C behaviour - vips_conv(), vips_compass(), vips_convsep() default to FLOAT precision - add FORCE resize mode to break aspect ratio - add vips_thumbnail_image() - better prefix guessing on Windows, thanks tumagonx - savers support a "page_height" option for multipage save - rename 'disc' as 'memory' and default off - add vips_find_trim(), search for non-background areas - remove lcms1 support, it had bitrotted - `join` tagged as seq - support tiffsave_buffer for pyramids, thanks bubba - thumbnail and vipsthumbnail have an option for rendering intent, thanks kleisauke - set file create time on Windows, thanks dlong500 - remove python tests ... moved to pyvips test suite - vips7 and vips8 python bindings default to off ... use the new pyvips binding instead - better svgload: larger output, handle missing width/height, thanks lovell - add vips_gravity() ... embed, but with direction rather than position - vips_text() can autofit text to a box, thanks gargsms - add vips_composite() / vips_composite2(): merge a set of images with a set of blend modes - better gobject-introspection annotations, thanks astavale - vips_image_write() severs all links between images, when it can ... thanks Warren and Nakilon - vector path for convolution is more accurate and can handle larger masks - linear and cubic kernels for reduce are higher quality - added vips_value_set_blob_free() - "--size Nx" to vipsthumbnail was broken, thanks jrochkind - fix build with gcc 7 - add vips_fill_nearest() ... fill pixels with nearest colour - add VIPS_COMBINE_MIN, a new combining mode for vips_compass() - vips_hist_find_indexed() now has a @combine parameter - vips_affine() and vips_similarity() have a "background" parameter - fix nasty jaggies on the edges of affine output, thanks chregu - add gif-delay, gif-comment and gif-loop metadata - add dispose handling to gifload - dzsave outputs extra right and bottom overlap-only tiles, for closer spec adherence - deprecate the "centre" option for vips_resize(): it's now always on - setting the EXIF data block automatically sets other image tags - add "extend" option to affine; resize uses it to stop black edges 29/8/17 started 8.5.9 - make --fail stop jpeg read on any libjpeg warning, thanks @mceachen - don't build enumtypes so often, removing perl as a compile dependency - fix a crash with heavy use of draw operations from language bindings, thanks @Nakilon 2/8/17 started 8.5.8 - fix transparency detection in merge, thanks Haida - define env var VIPS_WARNING to hide warning messages - shut down dzsave output earlier to help mark-sweep bindings - fix webp thumbnail upscale, thanks Kleis 9/6/17 started 8.5.7 - better smartcrop - transform cmyk->rgb automatically on write if there's an embedded profile and the saver does not support cmyk - fix DPI mixup in svgload ... we were writing images about 20% too large, thanks Fosk 19/5/17 started 8.5.6 - tiff read with start page > 0 could break edge tiles or strips - raise b64 limit to allow for huge profiles (thanks jaume) - fix error return in blob save (thanks jaume) - tag vipsprofile as py2 (thanks ioquatix) - don't cache thumbnail (thanks tomasc) 23/4/17 started 8.5.5 - doc polishing - more improvements for truncated PNG files, thanks juyunsang - improve corrupted jpg handling, thanks juyunsang - fix small test suite issues on os x 23/4/17 started 8.5.4 - don't depend on image width when setting n_lines, thanks kleisauke 7/4/17 started 8.5.3 - more link fixing in docs - revise cache sizing again to help out of order errors under heavy load, thanks kleisauke 25/3/17 started 8.5.2 - better behaviour for truncated PNG files, thanks Yury - missing proto for vips_tiffsave_buffer(), thanks greut - move some docs from the wiki and blog into core libvips docs - add support for markdown in docs 25/3/17 started 8.5.1 - init more classes earlier, thanks David 13/10/16 started 8.5.0 - rewritten buffer system is safer and frees memory earlier - added tiff save to buffer - added dzsave save to buffer (zip only) - revise header get/set functions - better vipsheader behaviour with complex field types - added vips_image_hasalpha() - added vips_thumbnail() / vips_thumbnail_buffer() - webpload/webpsave read and write icc, xmp, exif metadata - better >4gb detect for zip dzsave output [Felix Bünemann] - all loaders have a @fail option, meaning fail on first warning, though it only does anything for jpg and csv - add vips_image_get_fields() to help bindings - add tiff multi-page read/write - add VIPS_META_PAGE_HEIGHT metadata - IM6/IM7 magickload supports page/n/page-height, all_frames deprecated - gifload supports n/page-height - added #defines for VIPS_SONAME, VIPS_LIBRARY_CURRENT, VIPS_LIBRARY_REVISION, VIPS_LIBRARY_AGE - better support for bscale / bzero in fits images - deprecate vips_warn() / vips_info(); use g_warning() / g_info() instead - vipsthumbnail supports much fancier geometry strings, thanks tomasc - vips_thumbnail() has new @size option - fix --vips-cache-max etc. - add compute reordering, plus some new API to support it: vips_reorder_margin_hint() and vips_reorder_prepare_many(), thanks aferrero2707 - kick load operations from cache on read error, thanks gaillard - fix return from C++ assignment operator overloads (+=, -= etc) - add @max_slope to vips_hist_local() to implement CLAHE, thanks hunter-87 - vips_gaussnoise() pixels are reproducible on recalc, thanks MvGulik - max/min sort values by y and x coordinate - tiff read uses libtiff scanline API if rows-per-strip is large - vips_region_shrink() knows about alpha, helps dzsave and tiffsave - use expat, not libxml, for XML load ... removes a required dependency, since we get expat as part of glib - new sequential mode infrastructure is faster and more flexible - add vips_smartcrop(), based on sharp's smartcropper - vipsthumbnail has a --smartcrop option - added vips_rot90() etc. convenience functions - fix vips_resize() bug when hscale and vscale were very different 8/12/16 started 8.4.5 - allow libgsf-1.14.26 to help centos, thanks tdiprima 11/11/16 started 8.4.4 - fix crash in vips.exe arg parsing on Windows, thanks Yury 18/10/16 started 8.4.3 - fix error detection in gif_close, thanks aaron42net - fix tiny threading memleak - improve compatibility with very old glib, see #548 27/9/16 started 8.4.2 - small doc improvements - fix error message for metadata fetch type mismatch - resolve a race condition in thread shutdown, thanks Lovell 1/5/16 started 8.4 - many more wepsave options [Felix Bünemann] - added quant_table option to wepsave [Felix Bünemann] - added @n option to pdfload, thanks andris - dzsave won't write empty tiles in google mode, thanks bverem, perog, felixbuenemann - allow nested [] in CLI args - restore BandFmt on unpremultiply in vipsthumbnail - better python detection and build [Felix Bünemann] - max-alpha defaults to 65535 for RGB16/GREY16 - added radsave_buffer [Henri Chain] - support tiff orientation tag - autorotate option for tiff load - tiffsave converts for jpg if jpg compression is turned on - tiffsave supports --strip - conversions to GREY16 could lock - free pixel buffers on image close as well as thread exit ... stops main thread buffers clogging up the system - dzsave can write compressed zips [Felix Bünemann] - vips_image_write() only refs the input when it has to ... makes it easier to combine many images in bounded memory - VImage::write() implementation was missing - VImage::write() return value changed from void to VImage to help chaining - added C++ arithmetic assignment overloads, += etc. - VImage::ifthenelse() with double args was missing =0 on options - better accuracy for reducev with smarter multiplication - better quality for vips_resize() with linear/cubic kernels - pyvips8 can create new metadata - better upsizing with vips_resize() - add imagemagick v7 support, thanks sachinwalia2k8 - added vips_worley(), vips_perlin() noise generators - added vips_convf(), vips_convi(), vips_convasep(), vips_conva() ... im_conv*() functions rewritten as classes - vips_convsep() calls vips_convasep() for the approximate case - new fixed-point vector path for convi is up to about 2x faster - gif loader can make 1, 2, 3, or 4 bands depending on file contents - support --strip for pngsave - add svgz support [Felix Bünemann] - rename boostrap.sh -> autogen.sh to help snapcraft - support unicode filenames on Windows - added VIPS_ROUND as well as VIPS_RINT - resize/reduce*/shrink*/affine now round output size to nearest rather than rounding down, thanks ioquatix - better support for tile overlaps in google maps mode in dzsave - dzsave puts vips-properties.xml in the main dir for gm and zoomify layouts - resize and reduce have @centre option for centre convention downsampling - vipsthumbnail uses centre convention to better match imagemagick _ add vips_foreign_get_suffixes() 19/8/16 started 8.3.4 - better transparency handling in gifload, thanks diegocsandrim 30/7/16 started 8.3.3 - fix performance regression in 8.3.2, thanks Lovell - yet more robust vips file reading 18/5/16 started 8.3.2 - more robust vips image reading - more robust tiff read [Matt Richards] 15/4/16 started 8.3.1 - rename vips wrapper script, it was still vips-8.2, thanks Benjamin - export C++ operator overloads for MSVC linking [Lovell] - fix magickload @page with GraphicsMagick - add giflib5 support - allow resize >1 on one axis, <1 on the other - vips_resize has an optional @kernel argument - fix giflib4 detection [felixbuenemann] 29/1/16 started 8.3 - add vips_reduce*() ... a fast path for affine downsize - vips_resize() uses vips_reduce() with lanczos3 - bicubic is better on 32-bit int images - add pdfload, svgload, gifload for PDF, SVG and GIF rendering - vipsthumbnail knows about pdfload and svgload - added @page param to magickload - matload is more specific (thanks bithive) - lower mem use for progressive jpg decode - sharpen has a new @sigma param, @radius is deprecated - sharpen allows a much greater range of parameters - sharpen defaults now suitable for screen output - better handling of deprecated args in python - much better handling of arrayimage command-line args - faster hist_find (Lovell Fuller) - webpload has a @shrink parameter for shrink-on-load - vipsthumbnail knows about webp shrink-on-load - better behaviour for vips_cast() shift of non-int types (thanks apacheark) - python .bandrank() now works like .bandjoin() - vipsthumbnail --interpolator and --sharpen switches are deprecated - switches to disable PPM, Rad and Analyze support - added VIPS_COUNT_PIXELS(), overcomputation tracking - @out_format in vips_system() can contain [options] - webpsave_buffer no longer ignores @lossless, thanks aaron42net - float tiff tagged as scRGB to match photoshop convention, thanks Murat - better jpeg autorot, thanks otto 24/3/16 started 8.2.4 - fix nohalo and vsqbs interpolators, thanks Rafael 27/1/16 started 8.2.3 - fix a crash with SPARC byte-order labq vips images - fix parsing of filenames containing brackets, thanks shilpi230 - fix hist_entropy (lovell) - small fixes to radiance load 12/1/16 started 8.2.2 - changes to ease compiling C++ binding with MSVC [Lovell Fuller] - reorder file tests to put slow loaders last - ifthenelse needs less C stack during eval - better rounding in bilinear interpolator - fix to "make check" in non-C locales [felixbuenemann] - use compiler builtins isnan, isinf, fabs, fmin, fmax, ceil, floor when possible [Lovell Fuller] - tune vips_shrinkh(), 30% faster [Lovell Fuller] - remove SEQ hint from vips_subsample(), fixes cli performance [erdmann] - fix double free on attach ICC profile from file in tiff write [erdmann] - use g_assert_not_reached() - better vips-from-C docs - remove Duff from im_conv() / im_conv_f() for a 25% speedup [Lovell Fuller] 1/1/16 started 8.2.1 - add a compat stub [Benjamin Gilbert] - python bandjoin is now just an instance function - small doc improvements - small vips7 C++ improvement - remove exception specifications from vips8 C++ interface [Lovell Fuller] - VImage::get_typeof() now returns GType 7/10/15 started 8.2.0 - added im_bufmagick2vips(), a vips7 wrapper for magick load from buffer - fetch unset property now returns default value rather than warning - many more const declarations to help gobject-introspection - rewritten vips_shrink() is 2x faster, much lower memuse, now handles complex - only allow [] for filename options - add memory.h to Python API .. makes tracked highwater visible - added bandjoin_const to add constant bands to an image - better alpha handling for tiff write, thanks sadaqatullahn - better cache sizing for vips_resize() - sizealike / formatalike / bandsalike elide completely if they can for a x2 saving in C stack use in many cases - added vips_mapim() ... resample with an index image, plus test - try to improve vips_resize() quality a little more - vips_resize() can do non-square resizes - dzsave removes tile metadata by default, thanks Benjamin - jpeg strip option removes a little more, thanks Benjamin - added vips_image_new_from_memory_copy() - improve vips_sink_screen() stability under heavy load - added vips_arrayjoin() - Python x.bandjoin(y) is now x.ibandjoin(y), sorry - faster and lower-mem TIFF read - faster bilinear interpolator - TIFF loads and saves IMAGEDESCRIPTION - add --properties flag to tiffsave - dzsave defaults changed: now writes 256x256 jpegs for non-edge tiles, thanks Daniel 7/5/15 started 8.1.1 - oop, vips-8.0 wrapper script should be vips-8.1, thanks Danilo - fix vips7 pathname parsing on windows, thanks Lovell 7/5/15 starteld 8.1.0 - add vips_premultiply(), vips_unpremultiply() - change the alpha range rules for vips_flatten() to match vips_premultiply() - vipsthumbnail uses vips_resize() rather than its own code - vipsthumbnail uses vips_premultiply() for better alpha quality - added bandand() bandor() bandeor() convenience funcs to Python - oops, base64 encode could pad by up to two zero bytes - added VipsRefString as a thing that gi bindings can unpack - support "with Vips.Image as i:" in Python - try to support DOS CSV and PPM files on linux - add vips_byteswap(), remove byteswap option from vips_copy() - add vips_bandfold()/vips_bandunfold() - dzsave supports zip output > 4gb, thanks benjamin - add support for HSV colourspace [Jonas Øgaard] - skip oversized markers in jpeg write - jpeg exif tags saved as name rather than title - can now set any jpeg exif tag, not just modify existing tags - add vips_hist_entropy() - vips_log(), vips_log10() are zero-avoiding - better overlap handling for dzsave, thanks robclouth - add @spacing option to vips_text() - tiff loads and saves IPCT and Photoshop data 7/5/15 started 8.0.3 - dzsave and tif pyr write could fail for some image dimensions, thanks Jonas 4/5/15 started 8.0.2 - fix a refcount error in C++ wrapper, thanks huskier - better C++ api test - test suite improvements - remove a couple of stray header decls, thanks benjamin 25/4/15 started 8.0.1 - fix some compiler warnings - work around a glib bug that can cause segv under load - add some notes on threading to the docs - better leak reporting 11/2/15 started 8.0 - remove old doc stuff, lots of doc improvements - add fliphor(), flipver(), rot90(), rot180(), rot270(), median(), dilate(), erode() convenience methods to Python and C++ - python: use [] to index and slice image bands, use () to get a point - c++: use [] to band index, () returns a vector - add shift option to cast - sRGB2scRGB and scRGB2sRGB scale 16-bit alpha to and from 8-bit - add magickload_buffer() [mcuelenaere] - add vips_foreign_is_a_buffer() [mcuelenaere] - added test_foreign.py, plus more test images - added vips_region_shrink(), fast x2 shrinker - rewritten tiff writer is about 3 - 4x faster at making pyramids - jpg, magick, png, tiff readers now use only 1 fd per input image - added vips_info_set(), vips_progress_set(), vips_profile_set() ... bindings can now support all the vips command-line options if they wish - better conversion to greyscale, thanks bkw - add vips_image_copy_memory(), improves stability with heavy threading - jpegsave supports new mozjpeg features [lovell] - add vips_vipsload(), vips_vipssave() ... why not 26/3/15 started 7.42.4 - im_maxpos_avg() avoids NaN - small tiffsave doc improvements - better thresholding for tiffsave "squash" mode - add @miniswhite mode to tiffsave 6/2/15 started 7.42.3 - bump version for back-compat ABI change - added vips_image_memory(), an alias for vips_image_new_memory() - improvements to configure for python - remove --disable-cxx configure flag - python imageize preserves interpretation - fix dzsave as a target format 30/12/14 started 7.42.2 - C++ required output params were broken, thanks Lovell - remove VImage::scale() to get scale from header, it clashed with the VipsScale operator, thanks Lovell - allow c++ set enum from string - display param default and range in usage - better docs - more tests - renamed VIPS_FOREIGN_DZ_DEPTH_1 as VIPS_FOREIGN_DZ_DEPTH_ONE etc. to help bindings - vipsthumbnail will return an error code if one or more conversions failed - disable chroma subsample in jpeg-tiff if Q >= 90 - try to handle tiffs with old-style 8-bit colormaps - rename vipsthumbnail -o as -f, -o stays as a hidden flag - fix some small leaks - faster openslide load, thanks Benjamin - add VInterpolate class to cplusplus binding, thanks Lovell - add lower-level operation cache access - turn on leak testing in test suite - don't use isnormal() to test for crazy FP numbers, thanks Murat - much faster RGB16 -> sRGB path 24/12/14 started 7.42.1 - add gobject-2.0 to Requires: in vips and vips-cpp .pc files - bump soname - fix VipsBlob read - remove "future" dependency, thanks bgilbert 4/11/14 started 7.42.0 - better default resolution for png load - better pbm (one bit) load, better pfm (float) load/save - added pbm (one bit) save - changed vips_gaussblur() parameters, sorry - add .szi as a dzsave zip synonym - support tiff XMP metadata - support @density arg to magickload [Lovell] - support python3.4 and python2.7 in new python binding - vips_gaussmat() and vips_logmat() are now int by default, to match vips_conv(), and use @precision, not @integer - added --disable-pyvips8 switch to turn off new py binding - "vips thing" exit status can now be used to test for optional components 25/7/14 started 7.41.0 - start working on --disable-deprecated - fix pngload with libpng >1.6.1 - add vips_resize() - return of vips_init(), but just for bindings - revised type.c to make it more binding-friendly - add @background arg to save: the colour to flatten against - add VIPS_ARGUMENT_MODIFY flag ... used for draw_circle etc, meaning an op which modifies its argument - rename VIPS_OPERATION_RELATIONAL_NOTEQUAL as VIPS_OPERATION_RELATIONAL_NOTEQ for consistency - python vips8 binding - python vips8 test suite: test_arithmetic.py, test_colour.py, test_conversion.py - move zoomify ImageProperties file, now a better match to the offical tool - rename VIPS_ANGLE_180 as VIPS_ANGLE_D180 etc. to help python - remove cimg support, we have a gmic plugin now instead - add support for vips8 plugins - added "autorotate" option to jpeg load - added autorot operator - added @filter option to pngsave (Lovell) - C++ vips8 binding 27/10/14 started 7.40.12 - better tiff detection (Lovell) - fix memleak in sharpen (Lovell) - fix profile handling in XYZ2scRGB, thanks Lovell 8/10/14 started 7.40.11 - rework extra band handling for colour functions - set interpretation of matlut output more carefully 8/9/14 started 7.40.10 - icc_import and icc_transform checks the input profile for compatibility with the image, thanks James - try to make vips_thread_shutdown() optional 8/9/14 started 7.40.9 - support jfif resunit "none" - support GRAY as an input and output ICC space - fix a read loop with setjmp() in png read, if the png file is broken - fix vipsthumbnail with both input cmyk and output rgb profiles specified - vipsthumbnail retries with specified input profile if embedded profile is broken - add @profile option to pngsave, matching tiff and jpeg - fix a race in the operation cache [Lovell] 8/9/14 started 7.40.8 - fix configure on rhel6 [Lovell] - mono <-> rgb converters were not handling extra bands, thanks James - support jpeg resunit "none" 21/8/14 started 7.40.7 - width and height were swapped in matlab load - set interpretation more carefully on matlab load - fix memleak in tilecache [Lovell] - fix memleak in VipsArray [Lovell] - fix memleak in webp load from buffer [Lovell] - fix memleak in png save to buffer [Lovell] - make out of order read in png and jpg a fatal error - add thread_shutdown() to C++ (and thereby to python) 12/8/14 started 7.40.6 - more doc fixes - fix similarity rotate+scale, thanks Topochicho - fix 16-bit PNG save, thanks John - fix dzsave date on Windows, thanks John - fix vipsthumbnail on many-core systems, thanks James 25/7/14 started 7.40.5 - fix a race in im_maxpos_avg() - limit n_thr on tiny images - don't exit() on memleak detected, just warn - add "autocrop" option to openslide load - argh fix affine, again, there were sometimes black bars with nohalo and the vips8 interface - pngsave in interlaced mode makes a copy of the image, so it's always seq - vipsthumbnail shrinks to 1/2 window_size - vipsthumbnail has an anti-alias filter between shrink and affine - vipsthumbnail defaults to bicubic - better rounding behaviour for fixed-point bicubic reduces noise - fix pngload with libpng >=1.6.11 - fix colour for openslide read associated 4/7/14 started 7.40.4 - fix vips_rawsave_fd(), thanks aferrero2707 - fix im_point() - vips_scale() now does round to nearest to avoid rounding errors - improve im_openout() compat macro - more vips7 compatibility fixes, thanks steve - more robust vips_system() - add webp support to vips7 30/6/14 started 7.40.3 - fix interlaced thumbnails in vipsthumbnail, thanks lovell - fix use of "header" in benchmark/, thanks David - fits save now caches the image before write, so it's top-to-bottom - add --properties argument to dzsave, thanks bgilbert, jhenriksen 25/6/14 started 7.40.2 - dzsave write to zip stops at 4gb, thanks bgilbert - improve short option name handling, thanks bgilbert - added --enable-docs configure option to help freebsd - removed a bash-ism from configure to help freebsd - don't assume GType fits in an int to help freebsd 24/6/14 started 7.40.1 - revise man.1 pages - fix vips_guess_prefix() 23/6/14 started 7.40.0 - version bump - renamed "header" as "vipsheader" and "edvips" as "vipsedit" 21/1/14 started 7.39.0 - auto-decode for (almost) all operations, see vips_image_decode() - background render thread cleans up and quits neatly - colourspace has a source_space option - operations can be tagged as "deprecated" - redo im_draw_circle(), im_draw_flood(), im_draw_line(), im_draw_mask(), im_draw_image(), im_draw_rect(), im_draw_point(), im_read_point(), im_draw_smudge(), im_label_regions() as classes - better rounding in vips_flatten() - VipsStatistic operations are sequential - vipsthumbnail has --rotate auto-rotate option - removed embedded thumbnail reader from vipsthumbnail: embedded thumbnails are too unlike the main image - fix to vipsthumbnail --crop, thanks Alessandro - add vips_sum() - add vips_hough base class and vips_hough_line() - add "mode" param to vips_draw_image() - add vips_hough_circle() - reduce default cache size to 1,000 operations - added "postbuild" signal - vips_system() now supports many input images and you can change image argument order - support 16-bit palette TIFFs, plus palette TIFFs can have an alpha - libgsf-1 is now an optional dependency - dzsave can directly write a ZIP file - add ".vips" as an alternative suffix for vips files - added vips_tiffload_buffer() - added vips_image_new_from_buffer(), vips_image_write_to_buffer() - added vips_object_set_from_string() - added @container option to dzsave - support 1/2/4 bit palette tiff images with alpha - vips_system() now uses g_spawn_command_line_sync() - added im_tile_cache_random() to help nip2 - added hough_circle() to vips7 C++ API - added Travis CI config, thanks Lovell - im_*merge(), im_*mosaic(), im_match*(), im_global_balance*(), im_remosaic(), im_*mosaic1(), im_*merge1() redone as classes - better filename tracking for globalbalance - revised vips8 image load/save API, now simpler and more logical - operations emit "invalidate" if any of their input images invalidate - operation cache drops ops on invalidate - skipahead is back, thanks to a new threadpool tweak 6/3/14 started 7.38.6 - grey ramp minimum was wrong - vipsthumbnail --crop could fail for very non-square images, thanks Alessandro - fix a crash in vips_rawsave(), thanks Andrea - updated German translation, thanks Chris - fix coordinate error in affine, thanks ferryfax 24/2/14 started 7.38.5 - jpeg load from buffer could write to input, thanks Lovell - fix webpload from buffer, thanks Lovell - vips_sequential() could fail under heavy load - remove support for seq mode read for operations like extract 13/2/14 started 7.38.4 - --sharpen=none option to vipsthumbnail was broken, thanks ferryfax - more locking on property create and lookup to help very-threaded systems, thanks Nick 22/1/14 started 7.38.3 - undeprecate VIPS_MASK_IDEAL_HIGHPASS and friends, ruby-vips was using them, thanks ahacking 22/1/14 started 7.38.2 - auto RAD decode for affine - falsecolour was not working for some image types - foreign memory buffer images did not have the right dhint, broke command-line falsecolour on sequential images - support many Radiance readers active at once - add secret "rgbjpeg" flag to vips_tiffsave() to help IIP 19/1/14 started 7.38.1 - bump soname, thanks benjamin - better conversion to and from scrgb/xyz for rad (hdr) - fix --interpolate flag to vipsthumbnail, thanks Lovell 18/1/14 started 7.38.0 - version bump 19/10/13 started 7.37.0 - redone im_rotate_*mask45(), im_gauss_*mask*(), im_log_*mask(), im_dilate(), im_erode(), im_rank_image(), im_compass(), im_linedet(), im_gradient(), im_convsep(), im_convsep_f(), im_fastcor(), im_spcor(), im_sharpen() as classes - im_gradcor() deprecated - vips_init() now does some ABI compat checking, though this change requires an ABI break - add "interlace" option to vips_jpegsave() - remove vips_image_copy_fields() and vips_demand_hint() and add vips_image_pipeline() to do both jobs - vipsthumbnail allows non-square bounding boxes, thanks seth - add vips_matrixprint() - add @point subsample mode to vips_subsample() - im_contrast_surface() deprecated: it was slower than calling conv a few times - radiance load supports sequential read - rewritten radiance decode is much faster - add vips_crop(), a synonym for vips_extract_area() - rename vips_gammacorrect() as vips_gamma(), now takes 1 / exp - vips_gamma() works for any format - add --linear mode to vipsthumbnail - support XYZ as a PCS for vips_icc_import() and vips_icc_export() - add --strip option to jpegsave - added vips_gaussblur() convenience function - added --vips-profile, records and dumps thread timing and memory use info - added vipsprofile, visualises --vips-profile output - auto-vectorization-friendly inner loops - added vips::init() and vips::shutdown() to C++ API - reuse pixel buffers on sharing to reduce mem cycling - conv is SMALLTILE, huge mem use saving on wide images - vipsthumbnail has a --crop option - remove video4linux1 code, it was useless on all modern linuxes - redone freq filter builders as classes - redone im_fwfft(), im_invfft(), im_freqflt(), im_disp_ps(), im_fractsurf(), im_phasecor() as classes - vips_colourspace() allows B_W, GREY16, RGB16 as source / target - added vips_thread_shutdown(), thanks Lovell - vips_linear() has a uchar output mode - redone im_cntlines(), im_rank() as classes - move im_zerox() to deprecated, it wasm't very useful 9/1/14 started 7.36.6 - fix some clang compiler warnings 20/11/13 started 7.36.5 - better cache sizing in unbuffered sequential mode - allow larger tile_size in dzsave - remove use of PATH_MAX to help gnu hurd - fix vips_hist_match() 15/11/13 started 7.36.4 - improve compat with im_init_world() 18/10/13 started 7.36.3 - fix compiler warnings in ubuntu 13.10 - reverse similarity rotation direction to match the convention used elsewhere in vips - fix blocked caching of sequential load operations - fix cache flags - fix --delete option to vipsthumbnail 10/10/13 started 7.36.2 - better jpeg startup - rename jpeg bool type to reduce confusion between libraries 3/10/13 started 7.36.1 - fix to help OS X build 3/10/13 started 7.36.0 - version bump 1/7/13 started 7.35.0 - added vips_matrixload() and vips_matrixsave(), load and save vips mat format - rename image arrays as image matrices ... INTERPRETATION_ARRAY -> INTERPRETATION_MATRIX etc. - rewrite im_buildlut(), im_identity*(), im_maplut(), im_falsecolour(), im_gammacorrect(), im_histgr(), im_histcum(), im_histnorm(), im_heq(), im_histnD(), im_histindexed(), im_histspec(), im_invertlut(), im_lhisteq(), im_stdif(), im_project(), im_profile(), im_tone_build*(), im_mpercent*(), im_ismonotonic() as classes - vips_hist_local(), vips_stdif() do any number of bands - thin vips8 wrapper for im_histplot() - added vips_error_freeze() / vips_error_thaw() - used freeze() / thaw() to stop file format sniffers logging spurious errors - vipsthumbnail uses embedded jpg thumbnails if it can - rename vips_diag() as vips_info(), add --vips-info flag - deprecate im_hsp() - added vips_webpload(), vips_webpload_buffer(), vips_webpsave(), vips_webpsave_buffer(), vips_webpsave_mime() - tiff reader allows separate planes for strip read - tiff reader and writer allow many more formats, eg. 32-bit int, complex, etc. - tiff reader and writer allow any number of bands - added vips_image_new_matrixv() - dzsave basename param now called filename, so you can use .dz as a destination (basename is still there but deprecated) - new _UNBUFFERED sequential mode saves memory in some important cases - vips_conv() is a simple wrapper over the old convolution functions - new optimize_coding param for jpeg write produces optimal Huffman tables, thanks Lovell - im_tone_map() and im_tone_analyse() deprecated - new --band arg to vips_maplut() replaces im_tone_map() functionality - added vips_similarity(), simple wrapper for vips_affine() that lets you give a scale and rotate 3/7/13 started 7.34.2 - lower priority for Matlab load to reduce segvs from Mat_Open(), thanks Michael - null-terminate libexif strings, thanks Mike - openslide always outputs solid pixels 28/6/13 started 7.34.1 - fix morphological operators on non-uchar images - remove any ICC profile when we use vips to go to srgb 7/6/13 started 7.34.0 - version bump - oops, VImage.PIL_mode_from_vips() failed for CMYK, thanks Alessandro - fix no-pango build - add im_vips2dz(): run the deepzoom writer from vips7 - vips_magickload() has an option to read all images in a sequence - redo im_make_xy(), im_*eye(), im_zone*(), im_sines() as classes - added vips_pngload_buffer() - faster --centre option to dzsave, thanks Kacey 12/3/13 started 7.33.0 - vipsthumbnail lets you specify the sharpening mask - turn off caching for im_copy()/vips_copy(), we use copy to stop sharing, and it's cheap so caching doesn't help anyway - auto rshift down to 8 bits on save, if necessary - im_gaussnoise(), im_copy_file(), im_grid(), im_scale(), im_scaleps(), im_wrap(), im_rotquad(), im_zoom(), im_subsample(), im_msb(), im_text(), im_system(), im_system_image() redone as classes - add --angle option to dzsave - another vips_shrink() fix argh 14/5/13 started 7.32.4 - icc import and export could segv on very wide images - fix centos 5 build, thanks re-boot 16/4/13 started 7.32.3 - rename GETTEXT_PACKAGE as vips7.32 to help Debian (thanks Jay) - added "persistent" option to tilecache 12/3/13 started 7.32.2 - removed some left-over debugging code from configure.ac - better handling of args without values, thanks Ruven - better error messages from vips.c - fix demand hints so "vips shrink" works again, thanks Jan - im_jpeg2vips.c builds without jpeglib.h, thanks Alessandro 6/2/13 started 7.32.1 - fix --without-lcms, thanks speckins - updates to licence, thanks Benjamin - remove "fred" from dist - better bootstrap on OS X 22/1/13 started 7.32.0 - tilecache in threaded mode could deadlock if the downstream pixel source raised an error (thanks Todd) - fix another dzsave corner-case (thanks Martin) - neater output for "header" - added VIPS_META_LOADER: record the loader name = header displays this loader hint - vipsthumbnail is better at cache sizing 31/8/12 started 7.31.0 - redone im_Lab2XYZ(), im_XYZ2Lab(), im_Lab2LCh(), im_LCh2Lab(), im_UCS2LCh, im_LCh2UCS(), im_XYZ2Yxy(), im_Yxy2XYZ(), im_float2rad(), im_rad2float(), im_Lab2LabQ(), im_LabQ2Lab(), im_Lab2LabS(), im_LabS2Lab(), im_LabQ2LabS(), im_LabS2LabQ(), im_LabQ2disp(), im_XYZ2disp(), im_disp2XYZ(), im_icc_import*(), im_icc_export*(), im_icc_transform*(), im_dE_fromLab(), im_dECMC_fromLab(), im_dE00_from_Lab(), im_icc_ac2rc() as classes - added vips_colourspace(), vips_colourspace_issupported(), replaces all derived conversions - faster and more accurate sRGB <-> XYZ conversion - support 16-bit sRGB import and export - rename UCS colourspace as CMC - dzsave can write zoomify and google maps layout as well - tilecache supports threaded access, so openslide read now threads - openslide2vips gets underlying tile size from openslide - embed has 'background' option - dzsave --layout google has a @background option - dzsave has a --depth option - update for new glib threading API - remove no threads option, glib no longer support it - better --help output for vips driver prog - vipsthumbnail -o allows absolute file names - much better exif handling for jpg images (thanks Gary) - preserve jpeg app13 (photoshop ipct) - vips_max() / _min() track the top n maxima / minima - deprecate im_maxpos_avg(): too specialised to be worth maintaining - deprecate im_linreg(): easily done by combining other operators - deprecate im_point(): easily done by combining other operators - add binary complex operations, with cross_phase as the only one so far - added vips_bandbool(), with vips_bandand(), _bandor(), _bandeor() as convenience functions - added scRGB colourspace, linear light float space with sRGB primaries - all interpolators use corner convention ... we had round-to-nearest in several of them before, causing a range of annoying problems - redone im_affine*() as a class - added input space displacement to affine - VipsArea is threadsafe - dzsave has a --centre option 31/12/12 started 7.30.8 - png icc profile write was broken 31/12/12 started 7.30.7 - better option parsing for "vips", thanks Haida - small fixes to help OS X - backported threaded tile cache from next version, im_tile_cache() now uses it to prevent a deadlock, see comment there 14/11/12 started 7.30.6 - capture tiff warnings earlier 14/11/12 started 7.30.5 - fix libtool version mess up (thanks Benjamin) 2/10/12 started 7.30.4 - remove options from format string in .dzi (thanks Martin) - vipsCC.pc required the wrong version of vips (thanks Alessandro) - larger max tile size for dzsave - linecache is 50% larger to leave some slop room 13/9/12 started 7.30.3 - linecache sized itself too large - fix a compile failure if libtiff was not found (thanks Martin) - dzsave did not work for images with an odd number of scanlines (thanks Martin) 4/9/12 started 7.30.2 - sequential stops all threads on error - sequential delays ahead threads rather than blocking them completely 6/8/12 started 7.30.1 - fixes to dzsave: shrink down to a 1x1 pixel tile, round image size up on shrink, write a .dzi file with the pyramid params, default tile size and overlap now matches the openslide writer - wrap VipsInterpolate for C++ - so affinei and affinei_all appear in Python - be more cautious enabling YCbCr mode in tiff write - add "DEPRECATED" flag to arguments - jpeg load/save note and use the preferred resolution unit - better error msgs for enum args - fix compiler warnings in production build (thanks Dmitry) - fix spurious warnings about exif updates - VipsSequential has an integrated cache and stalls out of order threads - add a line cache ... sizes up dynamically with request size - tilecache / linecache use a hash table not a linear list 20/7/12 started 7.30.0 - support "rs" mode in vips7 - add --vips-version cmdline arg - fix --without-tiff / exr / jpeg / png / magick - add --vips-fatal flag 19/3/12 started 7.29.0 - sanity-check PNG read geometry - nearest-neighbor interpolation rounds coordinates to nearest instead of rounding down (thanks Nicolas) - add dzsave, save in deep zoom format - rework im_shrink() as a class - remove im_rightshift_size(), just a convenience function now - vipsthumbnail no longer removes profiles by default - much more gentle sharpening in thumbnails - added "minimise" signal, used by tilecache to drop - add :seq support to im_tiff2vips(), im_jpeg2vips() ... helps ruby-vips - better thread safety for vips8 operation dispatch - better thread safety for upstream / downstream image linking - added "rs" open mode, removed "rd" - added vips_operation_get_flags() ... system for attaching sets of flags to operations - added VIPS_OPERATION_SEQUENTIAL flag - vips8 command-line interface uses this to turn sequential mode on automatically when possible - better handling of input files in vips7 command-line interface - sequential can skip ahead, so extract / insert are now seq 16/7/12 started 7.28.10 - wopconst was broken - vips_sign() was broken - png save compression range was wrong - more/moreeq was wrong - vips7 ppm save with options was broken - don't cache write operations 18/6/12 started 7.28.9 - slightly more memory debugging output - remove references to the static bicubic interpolator from the docs - fix temp file handling on Windows --- was breaking for non-vips files over 100mb - better support for using images from multiple threads 18/6/12 started 7.28.8 - fixes for centos5 portability 18/6/12 started 7.28.7 - add vips_flatten() -- flatten RGBA to RGB - better alpha handling in PNG load - don't save RGBA PNG as CMYK JPG (thanks Tobsn) - fix a crash with malformed jpg files (thanks Grigoriy) - vipsthumbnail enables sequential mode more and caches lines better 19/4/12 started 7.28.6 - better resolution unit handling in deprecated im_vips2tiff() - use TIFF_CFLAGS output from pkg-config (thanks Jay) - much faster vips_argument_map() - make jpeg pyramids work with tiff4 - tiff loader always offers THINSTRIP (thanks Diuming) - add "nocache" operation flag, set for sequential load (thanks Diuming) - fix a crash in the tiff reader for huge values of RowsPerStrip (thanks Nicolas) - remove use of G_DEFINE_BOXED_TYPE() to help compat (thanks Jake) 19/4/12 started 7.28.5 - ifthenelse blend mode was broken - small blend speedup - default to libtiff-4 17/4/12 started 7.28.4 - up max buffer size for vipsbuf 6/4/12 started 7.28.3 - vips_divide() failed for int arguments - fix warning for unused vips7 gvalue argument - fix openslide read: always return png-style rgba, im_argb2rgba() becomes a NOP - cast to unsigned int now removes <0 values - vips7 interface to openslide now supports :,level,associated options (thanks Benjamin) - make vips8 cache smaller - more accurate progress reporting 13/3/12 started 7.28.2 - xres/yres tiffsave args were broken 13/3/12 started 7.28.1 - add ICC profile read/write for png files 30/1/12 started 7.28.0 - version bump - added vips_foreign_find_save_options()/vips_foreign_find_load_options() - delayed write to foreign via a "w" image was not working - support operations with many returns in Python - sequential read mode - better im_shrink() - added vips_sequential() - new vips_sink_memory() keeps read ordering - tiff, jpeg, png readers support sequential read - max/min avoid NaN - oop, histnorm was broken by the new vipsstats - never use IM ping to get a header, fixes BMP load - set @filename for non-vips formats in vips7 compat layer - make Xres/Yres double - completely disable debug by default in production builds 20/8/11 started 7.27.0 - version bump for new dev cycle - im_subtract(), im_avg(), im_min(), im_minpos(), im_copy(), im_embed(), im_flophor(), im_flipver(), im_insert(), im_insert_noexpand(), im_lrjoin(), im_tbjoin(), im_extract_area(), im_extract_bands(), im_extract_areabands(), im_replicate(), im_clip2fmt(), im_gbandjoin(), im_bandjoin(), im_invert(), im_lintra(), im_lintra_vec(), im_black(), im_rot90, im_rot180(), im_rot270() im_sintra(), im_costra(), im_tantra(), im_asintra(), im_acostra(), im_atantra(), im_exptra(), im_exp10tra(), im_logtra(), im_log10tra(), im_abs(), im_sign(), im_max(), im_maxpos(), im_deviate(), im_divide(), im_multiply(), im_stats(), im_measure(), im_recomb(), im_floor(), im_ceil(), im_rint(), im_equal*(), im_notequal*(), im_less*(), im_lesseq*(), im_more*(), im_moreeq*(), im_remainder*(), im_and*(), im_or*(), im_eor*(), im_shift*(), im_pow*(), im_exp*(), im_ifthenelse(), im_blend(), im_c2amph(), im_c2rect(), im_bandmean(), im_c2real(), im_c2imag(), im_ri2c(), im_jpeg*2vips(), im_vips2jpeg*(), im_tiff2vips(), im_vips2tiff(), im_exr2vips(), im_fits2vips(), im_vips2fits(), im_analyze2vips(), im_raw2vips(), im_vips2raw(), im_magick2vips(), im_png2vips(), im_png2*(), im_ppm2vips(), im_vips2ppm(), im_mat2vips(), im_rad2vips(), im_vips2rad() redone as classes - added argument priorites to help control arg ordering - generate has a 'stop' param to signal successful early termination - added optional output args, eg. x/y for min - CLI supports optional output args - in im_vips2tiff, enable YCbCr compression for jpeg write - VipsMin stops search early if it can - C API supports optional output args - switch back to int-valued operations - add the operation cache, various --vips-cache-* flags - fallback vips_init() - vips_tracked_malloc() tracks allocation size and can report total mem usage - cache limits, drop, init, flush plus command-line controls - remove dmalloc support, was never used and valgrind is better - im_csv2vips() allows quoted strings, including escaped quotes - added vips_shutdown() - added --vips-leak flag - more VipsImage props - added vips_image_write(), old one becomes vips_image_write_to_file() - added vips_region_paint_pel() - added VipsArea as a public struct - added array members and arguments - added nary - remove VipsPool, vips_object_local_array() is much better - cache.c now drops if you have too many open files - CLI args to change max files - new format for handling exif tags - switch SMALLTILE to 128, 512 was just too big - oop mode "rd" was not always being used for images - added ARRAY interpretation for images - VipsStats tracks minpos/maxpos as well - moved mask/ to deprecated - use atexit() to call vips_shutdown() - set _O_TEMPORARY on delete-on-close temp images if possible - unlink temps on rewind on *nix, less likely to leave temps on a crash - added complex conj as a basic operation - rect/polar/conj work on any format, not just complex - new VipsFile system for load/save in image formats - options now introspectable, try "vips jpegsave" - copy swap uses glib byteswap macros, about 2x faster - edvips can change vips header byte ordering - "header" is terse by default - "header" outputs filenames if working on many files - added openslide support (Benjamin Gilbert) - allow new-style load/save options in filenames to vips_image_new_from_file() etc. - VipsFormat is deprecated - remove outchecks from documented API - support gobject-introspection - new Python binding based on gobject-introspection - only spot options at the end of arg strings - add vips_cache() as a vips8 operator - remove the old fft fallback - remove fftw2 support - much faster im_draw_smudge() 14/1/12 started 7.26.8 - interpolate CLI args were broken (thanks speckins) 5/12/11 started 7.26.7 - lazy read from tiled tiff from layers other than 0 was broken - optional args to vips_call*() do not work, disabled (fixed correctly in master) - address calculations in files over 4gb were broken on 32-bit platforms (broken since March 2011, oops) 12/10/11 started 7.26.6 - NOCACHE was not being set correctly on OS X causing performance problems with large files - update Orientation exif tag on jpeg write 12/10/11 started 7.26.5 - jpeg read/write copies over XMP data - handle offset correctly in separable convolutions (thanks Nicolas) - macros for class arg boilerplate - class arg order set by new 'priority' param - VipsExtend, VipsDirection enums added 12/9/11 started 7.26.4 - fallback vips_init() - im_openout() compat stub was wrong, breaking ruby-vips - vips_class_map_concrete_all() needed a compat macro too - vips_class_map_all() was broken 10/8/11 started 7.26.3 - don't use G_VALUE_COLLECT_INIT(), many platforms do not have a glib this recent - don't leave image->kill set when we detect termination - test for a working C++ compiler, disable C++ parts of none found 10/8/11 started 7.26.2 - oops, im_benchmark.c had some stuff turned off - configure option --without-cfitsio was broken (thanks Mike) 26/7/11 started 7.26.1 - doc fixups - oops, ==0 missing from a strcmp() in vips7compat - fixed a race in im_XYZ2Lab() table build - added im_concurrency_get() to operation db - better benchmarkn.sh runs for the correct number of CPUs automatically, runs three times for each one, and just reports the fastest 26/7/11 started 7.26.0 - version bunp for 7.26 - various fixes to get win32 and OS X building 6/12/10 started 7.25.0 - attach the jpeg thumbnail and multiscan fields (thanks Mike) - faster tiff read for some common cases - faster im_tile_cache() - if we use C++ in libvips, add -lstdc++ to vips-7.xx.pc - im_vips2png() / im_png2vips() set / get png resolution (thanks Zhiyu Wu) - updated README - don't use tables for bilinear on float data for a small speedup (thanks Nicolas Robidoux) - no tables for uchar either, about a 15% speedup (thanks Nicolas) - dmask write was broken - lr/tbmerge() cast images to match, like im_insert() - lr/tbmosaic() work for any mix of image formats / bands - removed ancient balance stuff from im_lr/tbmosaic() - gtk-doc for mosaicing - add im_fits2vips() to the operation database - im_fits2vips() is lazy and much faster - im__file_open_write() / _read() has a flag for text_mode, get rid of all the remaining fopen()s - move cooc_* and glds_* to deprecated - move im_dif_std() to almostdeprecated - move im_simcontr() to almostdeprecated - add im_sines() to operation db - move im_spatres() to almostdeprecated - done gtk-doc for other - --vips-progress tells you about nthreads, tile size, nlines - gtk-doc for interpolate - move im_stretch3() to deprecated - move im_clamp() to deprecated - gtk-doc for video ... all operators done! amazing argh - set MAP_NOCACHE on OS X, otherwise performance dives off a cliff with files larger than memory - removed man pages, we are all gtk-doc now - im_jpeg2vips() ignores weird APP1 chunks - im_add() for int/uint was broken - im_ri2c() was broken - added VIPS_FORMAT_BIGENDIAN format flag - moved IMAGE and REGION to VipsImage and VipsRegion, classes over VipsObject - Rect -> VipsRect - libpng-1.5 supported - better png read for 1-bit and palette images - fits write - better fits metadata support - renamed all header fields, old names still supported, hopefully - all of iofuncs moved to vips_ namespace - lots of old iofuncs API moved to deprecated - added VipsOperation, an abstract base class for all vips operations - added VipsAdd, the first operation object - im_tiff2vips() int/uint mixup for rows_per_strip, thanks Bubba - removed the links feature, won't work with vips8 - got rid of the tools/ subdirs - added im_bufjpeg2vips() - tiff reader can do 1, 2, 4, 8 bit palette images - tiff palette read can do mono images - im_bufjpeg2vips() has a "header_only" parameter - added vips_image_get_data() - updated German translation (thanks Chris) - fixed typo in im_conv() overflow estimation which could cause errors - vips.c has new action syntax, knows about vips8 operations - add now has sizealike - vips7 binops all do sizealike too, also gbandjoin and ifthenelse - new API is now functional - vips.c generates GOption flags for vips8 operations - added im_gauss_dmask_sep() - laplacian generator lost -ve lobes for large sigma - added im_aconv(), approximate convolution - bumped smalltile to 512x512 for testing - added VipsPool, got rid of floating refs again, argh - VIPS_EXEEXT is now part of the exported API - im_blend() also does sizealike, oops - jpeg write was not inverting CMYK, thanks Ole - im_falsecolour() converts to mono 8-bit for you - im_icc_import*/export*() cast inputs for you - im_vips2tiff() uses im__temp_name() for intermediates - added vips_wrap7 ... wrap up vips7 operations as vips8 classes - man pages are back for commands 30/11/10 started 7.24.0 - bump for new stable - added im_dmask2imask(), im_imask2dmask() - im_rotate_*mask90() can do masks of any size (thanks Adam Turcotte) 18/7/10 started 7.23.0 - im_vips2bufjpeg() writes to a linked list, so it will work for any size image and header - added im_vips2bufpng() - use GetTempPath() to pick a temp dir on Windows - added "rd" mode to im_open() - vipsthumbnail and vips use "rd" - im_divide spots /0 - remove liboil dependency, we will use Orc instead - various small cleanups (thanks Tim) - add lcms2 support - VImage(filename) defaults to "rd" mode - revise window_offset / window_size, again - fix a mixup with ANY hints that caused performance problems on the main benchmark - rewritten im_circle as im_draw_circle, im_circle moved to almostdeprecated - added IM_TYPE_RW args for inplace ops --- nip2 uses this to wrap inplace ops automatically - special-case 3x3 masks in im_conv() for a 20% speedup - add IM_TYPE_RW flag for im__rw_image, helps nip2 auto-wrap inplace ops - im_insertplace() casts and bandalikes - copy iconv.m4 and friends in bootstrap, thanks Mike - moved the stupid _copy() versions of the inplace ops to deprecated, since nip2 can call inplace ops directly now - added im_draw_rect(), moved im_paintrect() to deprecated - added im_draw_image(), moved im_insertplace() to deprecated - added im_draw_line(), now clips, moved im_fastline() to deprecated - added im_draw_line_user(), now clips, moved im_fastlineuser() to deprecated - added im_draw_mask(), now wrappable, moved im_plotmask() to deprecated - added im_draw_point(), moved im_plotpoint() to deprecated - added im_read_point(), now partial, moved im_readpoint() to deprecated - added im_draw_smudge(), moved im_smudge() / im_smear() to deprecated - convolution functions support complex images - im_blend() can have any format condition image and it's converted to uchar - security fix for vips-7.23 wrapper script (thanks Jay) - im_affine() has a larger safety margin - fix gtk-doc warnings - small mask load/save improvements - mask gtk-doc done - add cfitsio dependency - add FITS reader - land the vector branch and the orc dependency ... we have SSE erode/dilate/add/conv - add IM_SWAP - dilate/erode do (!=0) on non-uchar images - add multipass Orc to im_conv(), 3.5x faster for 5x5 mask - im_profile() works for any image format, any number of bands - im_rank_image() works for mix of formats, bands - morph gtk-doc done - oops, missing braces in debug.h and util.h, thanks Laurence - update C++/Python binding - oop, bool constants are always (int) now, so (^-1) works for unsigned types, thanks Nicolas Robidoux - much lower memuse for im_cache() in complex pipelines - im_scale_dmask() normalises to 20, not 100 ... we hit the fast conv path more often 12/5/10 started 7.22.2 - the conditional image of ifthenelse can be any format, a (!=0) is added if necessary - oops vipsthumbnail sharpening was turning off for integer shrinks, thanks Nicolas Robidoux - im_vips2jpeg() could fail for very small images (thanks Tim) - threadpool wasn't stopping on allocate errors (thanks Tim) - vips_sink_disc() could block if allocate failed (thanks Tim) 12/5/10 started 7.22.1 - fix a problem with tiff pyramid write and >1cpu, thanks Ruven - constant ops clip to target range - oops, moreconst and moreeqconst were the same - better buffer handling in sinkdisc for single-line images - less chatty errors from "vips" - oops, don't rename "copy_set" as "copy_", thanks Ole 12/5/10 started 7.22.0 - bump and rename - vipsthumbnail has a manualpage and sharpens correctly - more interpolator work - fixes to --disable-cxx mode (thanks Mike) - added German translation, thanks Chris Leick - fixed typos in some messages, thanks Chris Leick - fix gettext startup - all "colour" in messages changed to "color", have a proper en_GB translation file - vipsthumbnail delete profile failed if there was a profile - interpolate cli unref was broken - more accurate, slightly faster bilinear and bicubic (thanks Nicolas Robidoux) 21/3/10 started 7.21.3 - added progress feedback to threadpool - --vips-wbuffer2 switch does all wbuffer use now - im_wbuffer2() renamed as vips_discsink(), some cleanups - im_gammacorrect() can do 16-bit images too - im_histplot() could fail for signed int histograms - im_fwfft() and im_invfft() could free their output image too early - added im_local_imask(), im_local_dmask() - added im_mpercent_hist() - im_maplut() casts the index image to one of the uint types - fixed a couple of /0 problems with scale == 0 masks - set G_LOG_DOMAIN to VIPS so we can use g_warning etc. - added VIPS_DEBUG_MSG() macro - --vips-wbuffer2 turns on threadpool for im_iterate as well - im_vips2tiff() uses vips_sink() instead of threadgroup - strip out threadgroup - add --enable-debug=xxx flag - im_iterate() -> vips_sink() - better number-of-bands detection for im_magick2vips() - added im_get_argv0() - added PFM read / write 16/1/10 started 7.21.2 - "invalidate" is careful to keep images alive, so invalidate callbacks can do im_close() - flood_blob could loop if start point == ink - added im_meta_remove() - added remove profile option to vipsthumbnail - added vips_bandfmt_iscomplex() and friends, im_iscomplex() and friends deprecated - im_bandjoin()/im_gbandjoin() work with images of varying formats - added im_copy_native(), deprecated im_copy_from() and friends - im_check*() name rationalisation - finally removed old flood stuff - im_insert*() bandalike and formatalike - im_*join() bandalike and formatalike - im_ri2c() bandalike - im_vips2png() saves 16-bit PNGs, if necessary - vipsthumbnail has selectable interpolators, optional sharpen - moved a lot of stuff (eg. im_iscomplex()) from deprecated to almostdeprecated to avoid breakage - im_csv2vips(): allow lines that end with EOF rather than \n - im_vips2tiff has a bigtiff option - oops, im_lineset() needs to ask for WIO of mask and ink - move cache invalidation to REGION, fixes a race - don't im_invalidate() after paint, it can cause horrible performance problems ... for example, im_plotmask() used as the action operator for im_fastlineuser() is terrible - instead, users of the inplace operations need to call im_invalidate() at the end of a set of paint actions to trigger an update - parent/child renamed as upstream/downstream in DAG - set VIPS_ICC_DIR in configure - ICC profiles are looked for in VIPS_ICC_DIR as a fallback - im_render() mask image generation no longer triggers image calc - threadgroups scale output buffers with number of threads for smalltile ... improves SMP scaling for narrow images on many-way machines - default to max number of processors (--vips-concurrency and IM_CONCURRENCY set >0 can override) on linux and win32 - better nprocs guesser - im_render() fixes to help the paintbox, some speedups too - added im_wbuffer2(), a new distributed threading system, and --vips-wbuffer2 to enable it, thank you Christian 15/1/10 started 7.21.1 - added "written" callbacks, used to implement write to non-vips formats 26/11/09 started 7.21.0 - branch for new dev cycle - argh, missing init from colour.c (thanks Peter) - argh, im_measure() was not looping over bands correctly (thanks Peter) - removed mmap_limit, we now always use windows ... reduces VM use hugely, because mmap windows are freed when their regions are freed, while images are only unmapped when they are closed - have a min bytes for mmap windows as well, so we don't make too many tiny windows - im_disp2Lab() was broken - deprecated.h is now defined in terms of current functionality, rather than repeating stuff - im_flood() and friends rewritten, typically 4x faster - removed --with-cimg option, added --disable-cxx - added im_system_image() (thanks Roland) - added postclose callbacks - added vipsthumbnail - oops, generate C++/Python wrappers for deprecated operations by default - read TIFF images strip-wise, not scanline-wise - better TIFF YCbCr reading (thanks Ole) - isanalyze generates fewer silly error messages 26/11/09 started 7.20.3 - updated en_GB.po translation - file_length is gint64 to avoid win32 breakage 23/11/09 started 7.20.2 - GETTEXT_PACKAGE now includes lib version number (thanks Jay) 11/11/09 started 7.20.1 - oop, im_clip2fmt() was missing PTOP flag, should get a small speedup - im_conv() / im_convf() didn't like all-zero masks - small updates to im_convf() from im_conv() - im_read_imask() produced an incorrect error message if passed a doublemask - rename im_convf(), im_convsepf() as _f() - vips.c drops _f suffix when overloading - regenerate C++ binding, don't make deprecated package 9/11/09 started 7.20.0 - removed vips-7.x.spec.in, shouldn't really have this in SVN - bumped version to 7.20 - fixes to get "make dist" working again 3/4/09 started 7.19.0 - version bump - tiny conv speedup - catch lcms error messages - fix includes for gtk+-3.0 - report virtual memory too in im__print_all() - cosmetic changes to nohalo - im_magick2vips() needs to invert alpha - now (more or less) passes -Wextra - added "fail" option to im_jpeg2vips: fail with an error on any warning (thank you Ole) - started gtk-doc changes - renamed im_meta_get_type() and im_header_get_type() as im_meta_get_typeof() and im_header_get_typeof() to prevent confusion with GObject type definers (was breaking gtkdoc object scan) - revised more names, limited documented API - im_buildlut() could segv for non-zero based tables (thanks Jack) - VIPS_BUF_STATIC() does not take length arg - check for SetImageOption() so we work with GraphicsMagick too - "header" sets a non-zero exit code if anything failed - add and use im_check_uncoded() and friends - matlab load handles column-major and plane-separated images (thanks Mikhail) - JPEG save allows "none" for profile, meaning don't attach a profile - saner, simpler, faster typecasting for im_add(), im_subtract(), im_multiply(), im_divide(), im_remainder() - im_remainder() has a float result for float types - im_measure() allows sel == NULL, meaning all patches - added "deprecated" package - faster, simpler, better im_max(), im_min, im_avg(), im_deviate() - im_max() returns true modulus, not square of modulus, for complex images - im_avg() works for complex, returning average modulus - im_system() fix (thanks Roland) - im_system() rewrite - im_maxpos()/im_minpos() are partial and work for complex - im_max()/im_min() are now convenience functions - im_maxpos_avg() handles complex and multi-band images - added im_point(), rewrite im_point_bilinear() in terms of this - close callbacks now happen *after* images have closed resources (such as open files) ... this lets them delete temps and stuff. Expect breakage :( - added vips_interpolate_get_window_offset() - boolean revised: smaller, more general, faster - im_remainderconst_vec() renamed to im_remainder_vec() for consistency - added im_shift*_vec() - renamed im_eor_vec() as im_eorimage_vec() for consistency, also and, or - renamed im_eorconst() as im_eorimage_const() for consistency, also and, or - relational revised: smaller, more general, faster - im_blend()/im_ifthenelse() allows many-band conditional, 1-band then/else - im_blend()/im_ifthenelse() allows band and format to differ between then and else parts - better im_check() functions - added im_flood_other() as start of simple segmentation operator - added im_label_regions() - im_printlines(), im_debugim() deprecated (use im_vips2csv() instead) - meta, header, callback, error, region, check, generate, memory gtkdocs - removed printlines tool, vips2csv is much better - removed other useless tools as well: debugim, binfile - fix up addr calcs on 64-bit machines with >2gb images and inplace ops (thanks Christoph) - im_generate() checks that im_demand_hint() has been called for this image - im_jpeg2vips.c, set scale_num on shrink (thanks Guido) - heh argh reading history always stopped after the first line (thanks Haida) - added im_histindexed - new im_iterate() calls start and stop functions from workers so resources they make are owned by the worker thread ... this makes it possible to have start functions which create mutiple regions and therefore allows im_iterate() to scan more than one image at once - threadgroup no longer has any default action, you must attach a work function - added im_copy_file() - added im_insertset() - im_insertplace() allows small to be outside big - added im__colour_difference(), colour ops now work on any image format - added im_col_display_get_table(), so display tables are now shared by name - added im__colour_unary() - drop "set" postfix from names, so "insert" can now take a vector of positions - deprecate all the "_raw" variants, not really necessary now - removed "contrib", not very useful anymore - added im_header_as_string() - im_malloc()/im_free() now call g_try_malloc()/g_free() ... removes confusion over whether to use im_free() or g_free() for things like im_header_string() - added im_history_get(), im_getexp(), im_printdesc() as wrapped functions ... so you no longer need the "header" program - image vectors from Python work, woo 25/3/09 started 7.18.0 - revised version numbers - updated vipsmanual - revised manpages - removed name and "changed" from vipsobject since we don't use them yet - explicitly link with stdc++ for nohalo etc. stuff - wrap im_gauss_imask_sep in C++/Python 6/3/09 started 7.17.3 - revised nohalo - remove fading stuff from im_render() -- cleaner and simpler - configure spots support for "restrict" - reset dcm:display-range on magick read to help DICOM - saner im_buildlut() behaviour - added im_gauss_imask_sep() - allow open and view of truncated images (thanks Joe & Rachel) - revising rounding on im_affine*() coordinate transforms to make them more stable - added Radiance write - added im_float2rad() - added IM_CODING_RAD, support where it makes sense (extract, flip, rotate, etc.) - IM_PROGRESS env var - docs for rad2float and IM_CODING_RAD 3/3/09 started 7.17.2 - im_magick2vips.c: allow funky bit depths, like 14 (thanks Mikkel) - isradiance was returning TRUE too often - radiance loader now loads packed RGBE/XYZE instead of unpacking to float - added im_rad2float() 11/10/08 started 7.17.0 - merge vips-7.16 brach back into trunk - bumped version number to 7.17.0 - re-added type.[hc] - added vipsinterpolate and im_affinei - added yafrsmooth interpolation - added yafrtest - added yafrnohalo - ubuntu 8.10 changes - interpolators get an output pointer, not region - tuning for bicubic - revised transform / clip code, we now do corner not centre - yafr-smooth reworked along the lines of bicubic - cleanups after yafr hacking - added affinei_all - don't set im_error() on failed callback - moved im_format_t to VipsFormat, now sits over VipsObject - IM_FORMAT_FLAG_PARTIAL -> VIPS_FORMAT_PARTIAL - updated docs - interpolators use type introspection - added vips --list classes, does formats too - include sys/param.h to get PATH_MAX in more places - added vips_format_get_flags() - oop, forgot to check for cancel during tiled tiff write - don't use mmap for tiff read: no performance advantage, chews up VM - VIPS_INTERPOLATE_SHIFT bumped to 12, we need the extra precision for u16 gel data - added string->double transform for cmdline args - merged class-params branch back into trunk - IM_FREE() can do "const char*" variables - im_buf_t renamed as VipsBuf - added vips_object_to_string() - added "nickname" and "description" properties to VipsObject - shift/and/or/eor ops were broken for non-int types - added nohalo interpolator - updated format docs - IM_INPUT_INTERPOLATE() now used by affinei and affinei_all - added vips_object_new - resamplers/interpolators now in a resample package - removed yafrnohalo.c - added matio as a dependency - added Matlab save file read - added Radiance file read - better file-not-found messages 11/9/08 started 7.16.3 - oop typo in manpage for im_project() - doc fixes - returning non-zero from eval callbacks was not always stopping computation 11/9/08 started 7.16.2 - added --without-v4l option - added -no-undefined to libsrcCC build, so we get a libvipsCC.dll - removed the swig dependency: we include the generated bindings in the distribution tarball 6/9/08 started 7.16.1 - trigger eval callbacks on tiled tiff write - added vips as an im_format_t - added im_format_write()/_read() convenience functions - more cleanups for the format API, argh - removed win32/ directory now mingw finally makes DLLs correctly - removed the windowed spcor for now, it has some edge effects 24/8/08 branch for 7.16 - renames and version numbers - load plgs from libdir as well as libdir/vips-x.x for compat - complex -> complex conversion was broken - refstring <-> gstring transforms - better behaviour with Magick non-presence - added --enable-links switch to configure ... we no longer make the bin/im_* links by default - started a 'format' section in the docs - configure fails if no gettext found - revised po/ - released as 7.16.0! 25/5/08 fork for loadable image format branch - image load/save in non-vips format code moved to own dir - simple format searching added - some cleanups for vips load - im_open() simplified - add im_format_flags - only consider formats with a save method in im_format_for_name() - oops, format sort order was reversed - im_filename_suffix() includes "." in suffix - merge back into trunk for 7.15.1 - remove im_ispng(), im_png2vips_header() etc. & friends - add "vips --list formats" - rename VBuf as im_buf_t for consistency - add type.[hc], start of new type system - removed man pages for IM_MIN, MAX and RINT to avoid case confusion on OS X / win 7/3/08 started 7.15.0 - MAGIC constants should be tagged as unsigned - write MAGIC correctly on sparc/powerpc machines (thanks Joe) - oop, we were still making fade threads even when not fading - tiny cond jump fixes for valgrind in colour.c - remove -lstdc++ from libs, except on windows - push Magick cflags earlier in the include order to make it easier to pick GraphicsMagick over ImageMagick (thanks Mikhail) - fix the en_GB translation - use meta to preserve resunit between tiff load and save - small doc improvements - read and write CMYKA tiff (thanks Doron) - performance improvements for morphology ops, esp. when zooming out - oop, im_render() was broken for mask == NULL - better support for multiple Python installs (thanks Jay) - better IM_SETSTR() stops some warnings - im_histcum() works for signed histograms - better rounding for im_conv(), im_convsep() - tiny speedup for im_conv() - better /0 test for remainderconst - revise i18n configure, get rid of intltool - command-line IMAGVEC input could segv with non-vips image output - added .tobuffer()/.frombuffer(), .tostring()/.fromstring() to Python binding - add PIL_mode_from_vips () and vips_from_PIL_mode () utility functions - update docs for new Python stuff - FIND_ macros no longer search for stuff, you have to specify prefixes if the packages are not on the default path (or in $prefix). This avoids some accidents on some platforms - configure prints a summary of optional packages found at the end - im_lhisteq() checks for window too small - added invalidate callbacks - now tests for MagickWand before ImageMagick (thanks Adam Turcotte) - added "-rotate" option to vips2dj - added man page for im_resize_linear - better jpeg-in-tiff YCbCr read (thanks Ole) - oops, invalidatefns were not being freed on im__close() - VMask() can init from std::vector, so Python can init from [] - added IM_LIBDIR, im_guess_libdir() - load plugins from libdir/vips-x.x on startup - added meta get/set int/double/string/area/blob/GValue to C++ API - include time_t in vips.h, thanks Nicolas Robidoux - lock global image list (thanks lee) 25/1/08 started 7.14.0 - bump all version numbers for new stable - better CMYK JPEG read (thanks Ole) - add __str__ to VError in Python (thanks Ole) - revert the dynamic wrapping for Python :-( next version! - added VImage::convert2disc (thanks Ole) - you can now set the jpeg quality factor for tiff pyramids (thanks Joe) - you can now shrink jpegs during read, see "man im_jpeg2vips" - added CMYK JPEG write - optionally use GraphicsMagick (thanks Bob Friesenhahn) - look for MAGICKCORE_HDRI_SUPPORT (thanks Marcel) - set icc profiles in tiff pyramids explicitly (thanks Joe) - add --without-cimg configure option - add im_maxpos_subpel - make im_abs compile without liboil - add im_align_bands - fix type overflow in complex division - fix im_cross_phase and im_addgnoise (Tom) - updated docs, C++ and python - header no longer stops on error - C++ dummy2.cpp helps OS X linking 12/12/07 started 7.13.3 - added "include " to VImage.cc to help gcc 4.3 - started moving the python binding to dynamic wrapping - added im_wrap(), im_wraptwo(), im_phasecor_fft(), im_cross_phase() (Tom) - memleak plugged in im_save_string_setf() - bugfix in and docs for im_gradcor() (Tom) - use Glib macros to make im_msb work on big-endian platforms (Tom) - use Glib macros to get rid of needless compile warnings (Tom) - fix type overflow in im_c2ps/im_abs (Tom) 31/10/07 started 7.13.2 - build cimg on windows fixes - various include cleanups, updated man pages - break im_wbuffer() out to a separate API - use im_wbuffer() to make im_vips2jpeg() compress in the background - also im_vips2png(), im_vips2tiff(), im_vips2ppm() - revised evaluation progress system - new evalstart/evalend/preclose callbacks fix over/underflow reporting - but the meaning of evalend has changed in a non-backwards-compatible way :( use preclose instead ito get the old behaviour - added "--vips-progress" flag to turn on a simple eval progress tracker - make im_spcor[12] static, im_spcor is wrapper (Tom) 28/9/07 started 7.13.1 - vips2dj can print RGB images - oop, include missing - add protos for generate/iterate function args, fix warnings - add cimg package, we now have C++ source inside VIPS, sigh - added OUTPUT_DOUBLEVEC and OUTPUT_INTVEC, use for im_maxpos_vec() and friends 29/8/07 started 7.13.0 - we now have a trunk and the version is 7.13.x, woo! - move manpages into a separate man/ dir ... speeds up builds a lot on windows - don't install malkovich - don't fail on unknown args for python (thanks Simon) 1/8/07 started 7.12.5 - im_embed() is more general ... x and y can be negative - predicate.c is smaller and cleaner - libsrcCC link improvement from Pablo - support 32/64-bit ImageMagick as well (thanks Marcel) - better im_magick2vips() for Q8 ImageMagick - split repository to trunk/branches ready for a stable 7.12.x branch 27/7/07 started 7.12.4 - proto.h had vars called small, breaking on win32 - more python fixing, we now have working matricies too 17/7/07 started 7.12.3 - fix to VImage.i for gcc 4.2 (thanks Damir) - eek, off by 1 for more than 1 band hists - needed a slightly larger worst-case buffer in im__b64_encode() - tiny cleanup for make_hI() prevents cond jump on ui in valgrind - --disable-threads was broken again - remove .svn dirs from dist - now passes distcheck again 17/7/07 started 7.12.2 - added im_bandmean() - added support for TIFFTAG_PREDICTOR (Andrey Kiselev) - fix TIFFOpen() mode snafu (Andrey Kiselev) 11/5/07 started 7.12.1 - memory.c abort()s with DEBUG - oops, im_bits_of_fmt() manpage was not being installed - im_histcum() can do all image types - updated NEWS - added im_csv2vips_header() - command-line csv read was broken (thanks Tom) - removed length limit on argument vectors (Tom) - added IM_PREFIX, configure-time install prefix - oop, turned off memory.c DEBUG - fix some bogus gcc 4.1 warnings with im_open_local_array() - better vips usage message - oops, IM_ANY missing from im_demand_hint() manpage (thanks Shahid) - just warn if plugins fail to load in im_init_world() - expose Vargv and make refblock public rather than private so that subclasses of VImage can add vips-style member operations (thanks Pablo) - oops, im_initdesc() needed to have bbits set correctly (thanks Shahid) - make VError derive from std::exception more officially - woo, got exceptions working in SWIG - soname version bumped to 12.x.x - oops, added vector ops to Python - check for overflow of int in return of strtol in dispatch system (Tom) - add im_[di]mask_[xy]size to dispatch system (Tom) - add im_gradcor(), im_grad_[xy] (Tom) 26/3/07 started 7.11.21 - ooo, added %include "std_except.i" & friends to VError.i, VImage.i - im_init_world() is more lenient about recursive invocation - im_gbandjoin() falls back to im_copy() for 1 input image - race condition fixed in im_render.c (thanks Simon) - bump for 7.12!!! 26/1/07 started 7.11.20 - another fix to im_region_image() (thanks Mikkel) - tiny speed up to im_rect_includesrect() - avoid recursive invocation in im_init_world() (thanks Christian) - fix to extract_prefix (thanks Christian) - buffer cache is now per thread - combine buffer unref and ref in a single operation to reduce malloc/free cycles - new internal API for passing regions between threads means we can remove buffer locks - more buffer/region sanity checks, plus a memory barrier - lock around error buffer changes - im_vips2mask() was wrong for nx1 m-band images - liboil back to "test" - add buffer_cache_list to avoid GHashTable _insert()s - oop, --vips-concurrency was broken - renamed (in dispatch layer) im_and/or/eor_const -> im_and/or/eorimageconst for consistency - C++ API wraps IMAGEVEC, DOUBLEVEC, INTVEC arguments - oop, IMAGE % vector was broken 21/12/06 started 7.11.19 - added im_linreg() (Tom) - various C++ API polishes, plus a bugfix (Dennis Lubert) - vips.spec split to devel and python too (Dennis Lubert) - be more explicit about sizeof(magic) - init magic to native order by default (thanks Dennis) - Hist becomes im_history_get() - new history mechanism is faster, uses much less memory, and removes duplicate lines - added im_get_option_group() - added official im_concurrency_set()/_get()() - don't read bbits from vips files ... set ourselves from bandfmt - oops add RGB16 and GREY16 to C++ header - --list packages option to vips.c - updated docs to 7.12 - oops, im_region_image() snafu was causing a lot of recomputation - make im_mpercent() suck a little less - EXIF save was a bit bOrked ... cause of mac crashes? - im_histgr(), im_heq(), im_hist() all number bands from zero now - fix stride in liboil calls - set RGB16 on 16-bit RGB ICC export 29/11/06 started 7.11.18 - added im_buffer_t so regions can share calculated pixels: 2-3x speedup on the benchmark - im_region_local() -> im_region_buffer() - im_sharpen() order change to help sharing - im_invalidate() clears buffer caches - add sentinel attributes - add some missing im_demand_hint()s - paint ops invalidate the output image - fix nothread eval - raise threads limit to 1024 (thanks Christian) - manual redone - vipsCC python init() hooks - add liboil dependency - use liboil for im_abs(), im_add(), im_divide(), im_floor(), im_multiply(), im_subtract(), im_lintra(), im_avg(),im_deviate() - quiet libtoolize test (thanks Tom) - im_benchmarkn now regrows image each time - strip meta from sample2.v ... saves a lot of mem (esp. Hist) - added im_isscalar() (Tom) - added IM_REGION_ADDR_TOPLEFT() (Tom) - reduce size of im_rightshift_size.c to help compile (Tom) - make im_stop_many(NULL) safe (Tom) 24/11/06 started 7.11.17 1;5Q - better benchmark script makes graphing easier - double-buffer image file writes - reuse write threads - clean up threadgroup / iterate / generate - added im_benchmarkn to make it easier to make a CPU-bound op on large machines - im_cache() failed for cpus > 1 1/11/06 started 7.11.16 - moved im__convert_saveable() into im_copy() (thanks Christian) - missing gobject dependency (thanks Christian) - --enable-threads was broken (thanks Christian) - eval without theads was broken (thanks Christian) - LIBADD libvips.la to libvipsCC.la (thanks Simon) - benchmark.sh is now plain sh, not bash - set ORIENTATION_TOPLEFT in im_vips2tiff (thanks Josef) - oops, im_vips2csv() output separator was broken - added im_benchmark2 - move XYZ2Lab LUT build outside the eval thread 30/10/06 started 7.11.15 - print leaked windows - oops, race condition in im_window_unref() - integrated im_region_window() into im_region_image(), tiny speed up 6/10/06 started 7.11.14 - ifthenelse and affine dhints revised - buildlut no longer outputs x cods - configure asks for glib >= 2.6 (we need GOption) - configure uses AC_TOOL_CHECK to find tool names to help cross-compiling. - better configure test for libexif - add C++ include ... include in a namespace - added im_benchmark / SMP benchmark script - add im_maxpos_avg() and im_point_bilinear() (Tom) - make im_region_free(NULL) safe (Tom) - link in manpages for im_contrast_surface (Tom) 8/9/06 started 7.11.11 - add im_norm_dmask() - removed old code for gradient and lindetect - internal decls split from proto.h to help SWIG - test for python and SWIG during configure - added python dir for the binding - python binding done! - oops, --without-python was broken (thanks Tom) - added python/test - add im_lu_decomp() im_lu_solve(), rewrite NR type functions in terms of these (Tom) 23/6/06 started 7.11.10 - still more im_affine() rounding/clipping tweaks - ignore "--" arguments to vips.c - im_init_world() also sets g_*_prgname() and loads plugins - add manpage for im_init_world() (oops) - error_exit() prints prgname - various cygwin fixes - fix cache thread assert failure (thanks Joe) - "header" now uses GOption, slightly different args, will loop over args - fixed assert() overenthusiasm in im_prepare() - im_csv2vips() now has separate whitespace / separator tables - add im_rightshift_size() (Tom) - add im_maxpos_vec(), im_minpos_vec() (Tom) - add im_norm_dmask() (Tom) - make im_free_[di]mask(NULL) safe (Tom) 23/6/06 started 7.11.9 - back on sourceforge CVS again - require openexr 1.2.2 or greater - range check xy on im_insert*() for sanity - VMask::invertlut decl removed (thanks Jean) - added \"all\" option to vips.c 17/5/06 started 7.11.8 - debrokened openexr read - added im_tile_cache() - added tiled read to im_exr2vips() - im_tiff2vips() now uses im_tile_cache() rather than its own cache ... faster in some cases, less RAM use in some cases, saves 200+ lines - removed 'broken' read option from im_tiff2vips() - read/write doubles with g_ascii_strtod() and friends where appropriate - add a "thread" member to region to help sanity check region ownership - saner threadgroup fixes a race problem on gcc 4.0.3 / amd64 - added im_vips2csv() - im_open() now does CSV read/write too - oops, broke vips main prog for function name in argv1 case 22/4/06 started 7.11.7 - split vips_png.c to im_vips2png.c and im_png2vips.c - added OpenEXR dependency - added im_exr2vips(), im_exr2vips_header() - added im_isexr(), im_open() knows about OpenEXR - added im_contrast_surface(), im_contrast_surface_raw() (Tom) - added im_msb(), im_msb_band() (Tom) - im_scale() sets Type on output - added RGB16, GREY16 types - im_*2vips() set these types if appropriate - configure fixes for mac - vips main prog uses GOption - im_icc_* locks around calls to cmsDoTransform() to avoid corruption on SMP machines - add im_prepare_many() (Tom) 10/3/06 started 7.11.6 - typo in manpage and header for im_rect_dup() (Tom) - don't abort image load if XML read fails - added im_video_test() ... test video source - oops, lcms .pc finder was not working - clipping problem in im_affine() fixed (thanks Clare) - test for attr support in libmagick - im_text() returns an error for empty string - im_falsecolour() scale reversed - im_remosaic() could crash on bad mosaics - configure changes to fix --without-magick, lcms and fftw (but sadly we now require .pc files for these libs) - im_vips2jpeg() automatically converts to 1 or 3 band sRGB uchar for write - also im_vips2png() - added im_project() 20/2/06 started 7.11.5 - added im_csv2vips() - commas in filename options can be escaped with a '\' - raise tile buffer limit (thanks Ruven) - im_spcor() and im_fastcor() have prettier borders - im_fastcor() returns sum of squares of differences, not sum of abs of differences 18/11/05 started 7.11.4 - small win32 fixes, thanks Juan - added im_flood_blob_copy() ... a temporary hack - much faster im_histplot() - read RGBA palette-ized PNG images more robustly (thanks Tom) - turn on -ms-bitfields automatically for mingw 26/9/05 started 7.11.3 - better error recovery for im_binfile() file too large - all raw files now use mmap windows, so (eg.) ppm and analyze reads can go >2GB - remove DISABLE_COMPAT ... you now have to define IM_ENABLE_DEPRECATED to get broken #defines - fix to build without exif, thanks Chas - use native win32 API for seek()/truncate() to work with large files - use attribute to check printf-style args with gcc - fix gcc4 warnings - removed ebuild, since it's in gentoo now - im_magick2vips() sets meta from attributes (good for dicom) - im_magick2vips() writes many-frame images as tall thin VIPS images - im_histcum() was broken for vertical histograms - im_histnorm() is neater - simpler and faster inner loop for im_conv() and im_convf() avoids gcc4 bug - appendc() was reading past the end of the buffer on MSB machines 13/6/05 started 7.11.2 - im_copy_set() was messed up in 7.11.1 - put into CVS, phew - fixed a rounding bug in im_affine() ... should no longer get black edges on image resize - if TIFF open fails in im_open(), try going through libmagick - merge requires all bands == 0 for transparency (used to just check 1st band) - 16 bit LAB TIFF read/write was wrong - new GType for refstring makes it visible from im_header_map() - jpeg loader attaches exif data (and human-readable meta fields) - jpeg saver writes any exif data - meta not wiped by im_*incheck() in a "w" image - meta keeps traverse order - now require glib >= 2.4 - require libxml-2.0 for meta save and new history mechanism - no more .desc files, history saved in XML after pixel data - i/s/d meta fields saved there too - added base64 encode/decode - added blob header write - added a save string type: types which define transforms to and from the save format get serialized - GValue meta API now exposed, since we can serialise anything - jpeg loader loads ICC profiles - jpeg saver saves ICC profiles from the VIPS header - src/header.c knows about meta system - added im_analyze2vips(), im_grid(), im_raw2vips() - extract/grid/replicate/zoom were not setting TRANSFORM flag - better falsecolour LUT - less stupid + more portable read/write of VIPS header - better im_updatehist() - jpeg load sets vips xres/yres from exif, if possible - jpeg save sets exif xres/yres from vips, if possible - icc_export and icc_transform attach profiles and intents to output images - added im_icc_import_embedded() to import with an embedded profile - split vips_jpeg.c into two, it was getting too big - added im_cp_descv(), im_cp_desc_array(), funcs use them - removed im_append_Hist() from API - fixed meta copy bug - better history copy, removed nonsense about 1st line of Hist being special - tiff read/write now reads/writes ICC profile from meta - edvips rewritten to remove stupidness, and can now set xml - header can now print xml extension block - IM_ prefix for colour temp names 1/6/05 started 7.11 - added im_copy_morph() - im_region_region() allows Bands and BandFmt to differ, provided sizeof( pel ) is the same ... makes im_copy_morph() work - added im_meta*() functions (MW) - im_header_*() rewritten for meta - added im_header_exists(), im_header_map() - use pkg-config to find libpng and ImageMagick - added im_lineset() - added im_extract_areabands() (JF) - added im_copy_from() (JF) 15/4/05 started 7.10.12 - im_ifthenelse just evals left/right for region all zero/all one - also im_blend - swap g_setenv() back to plain setenv() so we work with glib 2.2 9/4/05 JC started 7.10.11 - docs no longer have broken links - fixed memleak in im_text() 8/4/05 - one bit tiff read was sometimes reading a byte too far in each scanline 14/1/05 started 7.10.9 - im_filename_split() will now usually work for filenames containing ':' characters - added im_render_fade() for fancier nip2 image repaint - added "ccittfax4" as a TIFF compression option - fix all 64-bit compiler warnings - "," allowed as column separator in mask read - better at spotting singular matricies - small im_render() tidies - glib dependency reduced to just 2.0, but untested ... helps people building on older systems who aren't interested in nip2 - removing leading spaces from IMAGEVEC arguments - load non-interlaced PNGs more efficiently - 1 point mosaic functions work on more image types - better memory allocation debugging info - local memory on regions can shrink as well as grow - shut down threadgroups on render if no dirty tiles - limit number of simultaneous renders - higher mmap window threshold - allow max == -1 for unlimited render cache - 'priority' marks non-suspendable renders - im_embed() mode == 4 paints white pels - im_tiff2vips() was broken with --disable-threads - oops, im_errormsg() compat macros were GCC only - larger default tile size and strip height - tiff write sets PHOTOMETRIC_CIELAB for vips TYPE_LAB images ... so we can write float LAB as well as float RGB (thanks Ruven) - also 16 bit LAB TIFF write - im_render() rewritten 20/11/04 started 7.10.8 - im_sharpen() is ~15% faster - more quoting for MAGICK finder - im_XYZ2Lab() uses a LUT rather than cbrt(), 5x faster - --disable-threads removes gthread dependency completely (thanks Simon) - intercept TIFF warnings as well as errors ... stops occasional libMagick exceptions - add im_init_world() to im_init() as well to help backwards compat (thanks Simon) - im_icc_present() function description was broken, thanks Jay - oops, libtool library versioning was wrong, thanks Jay - can now make TIFF pyramids of any non-complex image type (was uchar and LAB only), thanks Ruven - 1st order mosaic code now works for LABQ too - build system changes to make "make distcheck" work - RPM .spec files fixed up and updated by configure (thanks Simon) - tiny cleanups for vdump - use g_setenv()/g_getenv() - tiny improvements to IM_FREE*() - tiny VImage debug print fixes (thanks Jay) - swap off_t for gint64 to fix LARGEFILE support on win32 - computation feedback now uses gint64 for number of pels, so we give feedback correctly on images with >2**31 pels - other small fixes for >2**31 pels in an image 10/11/04 started 7.10.7 - im_histnD() was not checking BandFmt (thanks Kirk) - improvements to threading system speed up non-vips output in some cases - use cbrt(x) where we can ... 10x faster than pow(x,1.0/3) on win32 - typeo in im_text() when built without PANGOFT2 (thanks Stefan) 1/11/04 styarted 7.10.6 - tiny doc fixes - scripts now only depend on 'vips' program - im_open( "r" ) is now lazier ... for non-VIPS formats, we delay read until the first ->generate() - so im_open_header() now deprecated since im_open("r") is identical - now looks for fftw3 as well as fftw2 ... slightly faster ffts 19/10/04 started 7.10.5 - fix to light_correct (thanks Jay) - edvips knows about xoffset/yoffset - better vips enum<->char conversions 4/10/04 started 7.10.4 - man page fixes (thanks Jay) - removed last csh scripts (thanks Jay) - scripts default VIPSHOME to $prefix (thanks Jay) - doc build system tidies - im_rank() edge padding was wrong - im_vips2tiff() can now embed ICC profiles 22/9/04 started 7.10.3 - mildly better im_vips2tiff() - *, -, +, /, % between two images now work for mixed number of bands - im_free() was missing a man page - revised documentation 1/9/04 started 7.10.2 - C++ .pc files were still set for 7.9, grr - im_insertplace() didn't check compatibility of images (thanks Matt) 27/7/04 started 7.10.1 - set default stack size explicitly to help platforms with a very low default - 16 bit RGB tiff read was broken (bug introduced in 7.9.5, thanks Haida) - !pangoft2 was broken, thanks Kenneth - win32 build fixes 12/7/04 renamed as 7.10.0 - added NOCACHE function flag ... stops nip memoising video & paint ops - added im_extract_bands() ... takes out many bands from an image - im_vips2tiff() scanline write speed up for area pipelines 10/6/04 started 7.9.6 - tiny polishing of im_ppm2vips() - im_blend() can now work on labq - boolean ops all work on float/complex images (by casting to int) - im_maplut() was broken for 1 band image + many band lut + >8 bit output - im_lintra_vec() now handles 1 band image and many band vector to make many band image - oops, im_lintra_vec() was missing a man page - im_measure() can work on labq - im_lhisteq() uses new embed mode, _raw() version is one pixel smaller, sets Xoffset/Yoffset for new origin scheme - generalised im_tone_build() to any image type to make im_tone_build_range() 20/5/04 started 7.9.5 - tiff output res can be a single number too - added im_text() to make a bitmap from a string with pango - im_tiff2vips() does 16 bit RGBA - im_binfile() was broken since 7.9.2 due to im_mapfile() change - im_ppm2vips() now works for 16 bit images - added im_copy_swap() ... copies, reversing byte order - im_resize_linear() was broken for some images, thanks Javi 8/3/04 started 7.9.4 - oops, config.h include missing in a few places - im_vips2tiff() can now write 1 bit images - im__find_lr/tboverlap() now exported to nip - better edge tile handling for tiff read/write (thanks Ruven) - added extend-pixels-from-edge mode to im_embed() - im_conv*(), im_rank(), im_stdif(), im_dilate(), im_erode() all use it to expand their input, so their output now has guess borders, not black borders - im_fastcor() now does an im_embed( 1 ) on the output ... the zero borders were very annoying before, since you would usually be searching for the minimum point - no change to im_spcor(), since you will usually be searching for the maximum - better im_render() cache behaviour under heavy loads - im_affine() revised * clip, resample and transform is now pixel-perfect for all inputs (I hope) * uses the new embed to make sure there are no black borders from edge interpolation * about 20 - 30% faster - policy change: Xoffset and Yoffset are now set by all operations to record the position of the input origin in the output - im_replicate() is much faster for some cases - added tile and mirror flags to im_embed() - added im_cache() convenience function - better ETA for image calculation - im_tiff2vips() now has a "broken" option so it can read tiled tiffs made with earlier versions of vips - on convert float to int format, now does floor() not rint() ... more 'mathematical' - added im_rint() - im_sharpen() now uses a gaussian mask - im_convsep() more resistant to int overflow problems - added im_make_xy(), avoids rounding problems with the old float-based thing - im_profile() now makes vertical images for a vertical profile - added im_vips2tiff() option to set the resolution in inches not cm (thanks Andrey) - im_binfile() is now exported 6/2/04 started 7.9.3 - added an im_init_world() to im_open(), to help old progs - renamed VSemaphore as im_semaphore_t - started using libtool library versioning - now uses g_module_*() in place of dlopen() - now uses pkg-config instead of vips-config (thanks Simon) - fixes to vips.h for _ADDR() with DEBUG on (thanks Konrad) 10/12/03 started 7.9.2 - patches for freebsd, thanks Lev Serebryakov - vips2dj knows about my colour laser printer - added i18n support, glib/gmodule/gthread dependency - im_error*() API revised to be more i18n friendly - List type removed, now uses g_slist - VBuf added, some more utility funcs pushed down from nip - im_thread stuff removed, now uses g_thread - im_lock stuff removed, now uses g_mutex - im_semaphore_t renamed to VSemaphore, not sure this is a good idea - build with --disable-threads to turn off threaded render - #include now pulls in most of the public API, you shouldn't need other vips includes very often - im_close() is better at cleaning up if there's an error - inverse FFTs could fail for wider-than-high images with fftw - better im_icc_transform error messages - bug fix in im_render with large caches - im_binfile() now has an offset parameter - im_mapfile()/im_unmapfile() now work on IMAGE and record the length of the file they mapped ... this lets VIPS successfully unmap a file if it changes size while it's open 20/10/03 started 7.9.1 - threadgroups now have their own kill flag - im_plotmask() now does anti-aliasing - im_iterate() fix for operations on mmap window images (thanks Clare) - im_writeline() stops on kill - fix for im_fwfft() segv for wider-than-high real images (thanks Andrey) - fix for im_fwfft() to work for non-square real images (thanks Andrey) - can now read and write 32-bit IEEE float TIFF (Andrey Kiselev) - clean-ups for colour.c (Andrey Kiselev) - no longer lets you make an image with width|height|bands == 0 (thanks Joe) - im_vips2tiff(), im_vips2*jpeg*(), im_vips2png(), im_vips2ppm() could sometimes fail for mmap window input images (thanks David) - added IM_RECT_HCENTRE(), IM_RECT_VCENTRE() macros 20/8/03 JC - started 7.9.0 - added im_rank_image() ... im_maxvalue() a special case of this - im_subtract() goes up to int earlier for better value preserving, thanks Haida - im_rank() much faster for large windows, correct result on all platforms (dratted memcpy() was causing problems before) - fixed problem with libMagick config if installed somewhere strange - fixed problem with include order in library compile - added --without-magick configure option - added im_render(), threaded background image paint - added im_replicate(), replicate an image horizontally and vertically 31/5/03 JC - started 7.8.11 - fixed a problem with relational operators and some combinations of input types (bug introduced in 7.8.9), thanks Haida - vips-7.8 script overrides VIPSHOME environment variable - better im_guess_prefix - stupid light_correct script no longer uses /pics/tmp - added batch_crop script 22/5/03 - started 7.8.10 - the JPEG writer can embed ICC profiles in output images ... although I've yet to see it make any difference :-( test this carefully at some point - fixed a possible coredumper in jpeg write - jpeg read now spots truncated files - im_invertlut() now makes an image, not a mask ... sorry :-( - im_histnD() makes an n-dimensional histogram from an n-band image - im_col_pythagoras() patch - IM_NUMBER() now returns int not size_t - new win32 build system from Juan and friends, based on tmake - sample project files for MSVC added, thanks Juan - win32/ subdir now has the win32 build systems - spec/ subdir now has the spec files for building RPMs - dist now includes formatted documentation - license change: VIPS is now LGPL, nip stays GPL ... this means proprietary programs can link against the vips library - had a report of a working VIPS build on a 64 bit system (!) - im_log_dmask() now includes all of the negative lobe, thanks matt - vips-7.8 start script now auto-relocates - im_spcor_raw(), im_fastcor_raw() now exported 29/4/03 - started 7.8.9 - changes to build to help MSVC - oops, makedef.pl missed out function names with an initial cap, and error_exit() - im_min() and im_max() gave random wrong results for >1 thread on >1 CPU machines (bug introduced in 7.7.20), thanks Joe - vips.c no longer generates C++ wrappers for functions with no image argument (thanks Haida) - im_invertlut() now wrapped by hand in VMask.cc - C++ docs updated - added im_open_header(), returns an IMAGE with just width/height/etc and no data - ... so now "header" will print useful stuff even on truncated files - tiff writer knows about alpha (thanks Jenny) 7/2/03 - started 7.8.8 - build failed with lcms turned off - im_spcor() could segv for 16bit images (thanks Joe) - im_tiff2vips() read resolution expressed as pixels/cm incorrectly - im_vips2tiff() tries not to write mad resolutions - header and im_open file type tests reordered for slight speedup - im_copy_set() had a broken dispatch function for xres/yres - im_fwfft() exploits libfftw real -> complex transform if possible for a 2x speed-up (thanks Matt) - im_invfftr() added for complex -> real inverse transform for 2x speed-up (thanks Matt) - im_freqflt() now uses im_invfftr() for real result and speedup - im_flipver() could segv on some inputs, thanks Clare - relational operators now work on complex - relational rewritten ... now fractionally slower, but 1/3 the size - vips2dj -1:1 produced incorrect height - better overlap-too-small detection in mosaicing code - im_system() can have NULL output - global balance ignores overlaps with only transparent pixels 3/1/03 - started 7.8.7 - worked in patch from Hans Breuer (thanks!) - png read/write with im_png2vips(), im_png2vips_header(), im_vips2png(), im_ispng() - im_errorstring() and im_col_displays() are now functions not externs (helps DLLs) - many include fixes to help native win32 build - added libMagick support, 78 file formats now loadable with im_magick2vips(), im_magick2vips_header() and im_ismagick(), w00t - now installs vips.m4 to $prefix/share/aclocal - added im_icc_export_depth() ... export to device space with a specified bit depth (8 or 16) - vips.def now rebuilt with custom rule in libsrc/Makefile.am - removed externs im_Type, im_BandFmt, im_Coding, im_Compression to simplify DLL build - im_mmap() -> im__mmap(), since it's supposed to be an internal function - new vips-7.8.x/proj directory holds unsupported sample makefiles and config.h for building with the MSC toolchain - new scripts batch_image_convert and batch_rubber_sheet (thanks Joe) - added the RPM .spec files to the main distribution - InitializeMagic() now passed "" rather than NULL to avoid assert() problems on some libMagic versions 2/12/02 - started 7.8.6 - now reads 8-bit RGBA tiff - C++ build guide fixes (thanks fsicre) - im_Type2char array text slightly messed up - global_balance is safer for complex mixed mosaics - removed im_lintra() fallback to im_copy() for scale == 1, offset == 0 ... too confusing - im_tiff2vips() now reads 16-bit LAB - added im_Lab2LabS() and im_LabS2Lab() 5/11/02 - started 7.8.5 - fix for mmap window of local region ... caused im_iterate() to break sometimes for large images, in turn occasionally breaking im_max()/im_min()/etc. (thanks Joe) - tiny speed up for im_rot90()/270() - on install on win32, add .exe suffix for links - vips.c knows to remove .exe suffix for linked commands - added im_errormsg_system() ... decode win32 error codes too - pagesize calcs for roving mmap windows were messed up on win32 (thanks Kirk) - some TODO cleanups - global balance broke horribly if you had filenames with spaces in (thanks Clare) 31/10/02 - started 7.8.4 - im_unmapfile() includes mixed up on mac os x - libtool patched for mac os x - vips.c sets numeric locale to "C" 27/10/02 - started 7.8.3 - configure fixes help mac os x - im_guess_prefix() adds ".exe" suffix on w32 if not there - changed im_measure() error messages to number bands from 1 - added func descriptor for im_read_dmask() to help nip, updated C++ API, docs 21/10/02 JC - started 7.8.2 - tries rand() if random() is not available - tries mktemp() if mkstemp() is not available - turns off realpath() if not available - added IM_DIR_SEP/IM_DIR_SEP_STR directory separator character/string - added IM_PATH_SEP/IM_PATH_SEP_STR path separator character/string - added im_path_is_absolute() - vips.c knows to link to vips.exe on win32 - spot mingw* and set BINARY_OPEN - open images in binary too (since we now read() the header) 10/10/02 JC - im_lintra() and im_lintra_vec() were broken for complex images :-( thanks matt - renamed im_and() as im_andimage(), im_eor() as im_eorimage() and im_or() as im_orimage() ... avoids breakage in the C++ layer - added im_dE00_fromLab() - limited release as vips-7.8.0 2/10/02 - renamed as vips-7.8, woohoo - revised documentation 19/9/02 JC - started sorting out VIPS #defines ... there are now a sensible set of new names (eg. NOCODING becomes IM_CODING_NONE, LAB becomes IM_TYPE_LAB) - define IM_NO_VIPS7_COMPAT to turn off the old names - added im_mmap()/im_munmap() layer for windows portability - removed the contents of history.h .. obsolete - added IM_IMAGE_ADDR() macro 10/9/02 JC - handle errors from TIFF lib correctly - configure fixes for cygwin - CMYK TIFF write fixed - configure fixes for mingw 5/9/02 JC - im_cp_desc() now copies Xoffset/Yoffset 21/8/02 JC - started 7.7.24 - reads CMYK TIFF - reads dpi from TIFFs - better float Xres/Yres 14/8/02 JC - new header fields Xoffset and Yoffset ... used by functions to hint the position of the origin in output images - support added to c++ api and to header - im__lrmerge(), im__tbmerge(), im__affine(), im_insert(), set Xoffset/Yoffset - now uses , not for better suse w0rkage - better configure for fftw (uses libdfftw name if libfftw not found) 8/8/02 JC - large file support with mmap() windows ... had to change im_prepare_inplace() to im_prepare_to() benchmark: - system hardware: 2 x 2.5GHz P4, 1GB RAM, 15k SCSI, ReiserFS os: suse 8 (kernel 2.4.18) compiler: gcc 2.95.3, -O2, threads turned on images: fred.v, fred2.v; both 4k by 4k LABPACK (64MB) images: jim.v, jim2.v; both 15k by 15k LABPACK (900MB) time: smallest real of 5 runs, system idle vips: 7.7.23, debug on in im_openin.c, window limit set with an environment variable - benchmarks cpu-bound: im_sharpen fred.v fred3.v 11 1.5 20 50 1 2 io-bound: im_insert fred.v fred2.v fred3.v 4000 0 worst-case: im_rot90 fred.v fred3.v - results desktop: no mmap windows mmap windows cpu-bound real 0m3.712s real 0m3.970s user 0m6.010s user 0m6.390s sys 0m0.900s sys 0m1.110s io-bound real 0m1.813s real 0m1.865s user 0m0.900s user 0m0.990s sys 0m1.720s sys 0m1.520s worst-case real 0m1.344s real 0m3.039s user 0m1.270s user 0m2.230s sys 0m0.850s sys 0m3.050s not quite sure why sharpen is a little slower (4%?) ... IO speed is about the same though ... worst-case is having to constantly move windows about (500,000 page faults, vs 10,000 for no windows) again, with an image larger than RAM no mmap windows mmap windows io-bound real 2m52.759s real 2m11.172s user 0m14.940s user 0m14.890s sys 0m29.940s sys 0m26.560s worst-case real 3m35.391s real 3m50.760s user 0m19.850s user 0m26.600s sys 0m12.650s sys 0m43.130s mmap windows actually slightly faster in this case ... plus they stress the OS less 31/7/02 JC - added -lm for better lcms detect - README notes for fftw on suse8 - im_profile() sets HISTOGRAM for output image - im_copy()/im_copy_set() function descriptor no longer sets PTOP ... helps avoid LUT problems - im_subsample()/im_zoom() fall back to im_copy() for shrink/grow == 1 - im_lintra() falls back to im_copy() for scale == 1, offset == 0 - no longer use Type == LUT ... all just Type == HISTOGRAM now - im_blend() was messed up for > 1 band images :( 16/7/02 JC - started 7.7.23 - im_XYZ2sRGB() wasn't setting Type = sRGB - im_icc_import() was broken for rgb - im_header_string() had wrong return type in function database 13/7/02 JC - added im_flood_blob() - added im_open_local_array() ... C API convenience function - oop, im_flood() was missing a man page - Type == FOURIER added to help visualisation - released as 7.7.22 30/6/02 JC - JPEG, TIFF and PPM import all now set sRGB Type for RGB import - im_header_int(), im_header_double() and im_header_string() added to aid UIs - now uses gettimeofday(), not time() - for consistency with other trig functions, im_c2amph() now returns degrees not radians (ouch) - added im_c2rect() ... turn (amp, phase) to rectangular - added im_sign() ... unit vector in direction of value - better im_scaleps() ... old code was terrible - rewritten im_rotquad() ... now partial - im_icc_export()/_import() now do ABSOLUTE correctly - added im_icc_ac2rc() ... converts absolute to relative colorimetry 25/6/02 JC - added im_copy_set(3) ... like im_copy(), but set informational header fields 20/6/02 JC - added im_ceil(), im_floor() - im_Lab2LabQ was not clipping a/b range correctly - im_icc_export(), own ABSOLUTE mode - released as 7.7.21 28/5/02 JC - im_remainderconst_vec broken for float/double - added Yxy colourspace 16/05/02 JC - auug, libtool was all messed up ... redone all the autotools stuff - uses libtool convenience libraries to build vips in sections - uses config subdir for temp files and .m4 things - patched stupid suse config.guess - vips2dj patched for better raw cmyk - released as 7.7.20 12/5/02 JC - im_vips2jpeg*() and im_vips2ppm() now both partial - started updating the C++ guide - had to change the location of the C++ headers :-( all C++ progs should now have: #include this is so things can work on systems which do not have case sensitive file systems - changes for Mac OS X * im_system() TRUE/FALSE removed * searches /*/[lib|include] to get fink libs for tiff and jpeg 30/4/02 JC - several functions were missing IM_FN_PIO in their descriptor ... this was harmless for nip/ip/C, but broke the ref counting in the C++ layer - im_system() now defaults "/tmp" for temp files - STRING input and output args were broken for C++ :-( - threads exit more quickly on error - im_min()/im_max() now partial (at last) - im_remainderconst()/im_remainderconst_vec() added - --with-dmalloc configure switch - vips2dj does CMYK and mono too - im_vips2tiff() allows any number of bands (but not the right way to write CMYK, see TODO) 26/4/02 JC - old ICC profile reader removed - little cms wrapped ... configure spots it, im_icc_transform() uses it to map between two images - also im_icc_import() and im_icc_export() so you can see PCS images - im_icc_present() to test for existence of lib - README fixes 4/4/02 JC - TODO changes - oops, DEBUG left on in im_invertlut() 2/4/02 JC - im_fwfft.c/im_invfft.c now use libfftw if available ... about 5x speed up and double precision - added FIND_FFTW autoconf macro - include/vips/proto.h changes 26/3/02 JC - started 7.7.19 25/3/02 JC - im_log_dmask() was broken (thanks matt) - casts between VDMask and VIMask were broken (thanks matt) - various error msgs improvements and tiny man page fixes 13/3/02 JC - tb/lr merge first/last cache moved to per-call state for better sharing - im_remosaic() bails out faster on error and makes better error messages 13/3/02 ruven - im_vips2tiff() pyramids stop at tilesize, not 64x64 25/02/02 JC - im_remosaic() is smarter, and works better with im_global_balance() - im_affine() 2x faster 14/2/02 JC - started 7.7.18 - vips.m4 and libsrc/Makefile.am fixes for IRIX 11/02/02 JC - vips/thread.h and vips/threadgroup.h were missing extern "C" for C++ - VImage::write() now tracks dependencies, so you can write() to a partial safely ... although it's not a very useful thing to do (thanks Mike) - new VImage::print() function for debugging - added im_print() 22/01/02 JC - started 7.7.17 15/01/02 JC - im_rect_unionrect() and im_rect_intersectrect() safer for repeated args - im_video_v4l() no longer perrror()s on ioctl fail for less spam 03/01/02 JC - started 7.7.16 - im_version_string() really does return the date as well now 12/12/01 JC - im_guess_prefix() extra smartness for relative path names - VImage() no longer uses tmpnam() (thanks Paul) 11/12/01 JC - renamed im_fexists() as im_existsf() 7/12/01 JC - ppm man pages added (doh) 28/11/01 JC - warnings on g++ 2.96 fixed 22/11/01 JC - started 7.7.15 - im_video_v4l() failed to compile on non-linux platforms 7/11/01 JC - im_remosaic() added - im_*merge() are more intelligent about transparency in bizarre overlaps - grr! putenv() semantics change on more recent clibs ... should be safer now 19/10/01 JC - VDisplay( "display name" ) segved on unknown display :-( thanks mike 26/9/01 JC - contrib tools get data files from share/vips/xxx area now - im_vipshome() renamed as im_guess_prefix(), reworked for new package layout - doc/ build sorted out - ... but of course, docs still need updating for 7.8 20/9/01 JC - fix to im_vipshome() - ip2 renamed as nip - split to library only ... separate ip and nip packages - new VIPS_VERSION_* macros set from configure.in in vips/version.h.in - vips.m4 VIPS finder - reworked README, doc/README and TODO - now installs to /usr/local/ by default - fmask4th.c was including varargs.h ... d'oh - include area reorganised: everything inside now ... hopefully the only user-visible change is that all plain C progs need to change: #include to: #include the C++ API should be unaltered 21/8/01 ruven - im_setupout() was missing some #includes 20/8/01 JC - started 7.7.14 15/8/01 JC - added libxml dependency for ip2 27/7/01 JC - im_conv(), im_convf(), im_convsep(), im_convsepf() now reject masks with scale == 0 26/7/01 JC - started 7.7.12 25/7/01 JC - started 7.7.11 - oop, im_histeq() and im_tonemap() also missed - better error messages from im_run_command() 23/7/01 JC - started 7.7.10 - im_sharpen() failed due to change in im_band_extract() offset 20/7/01 JC - started 7.7.9 4/7/01 JC - im_open(,"w") open() delayed until im_setupout(), very slightly safer - updated im_open() man page - im_tiff2vips() now embeds index in filename ... and it's page number (from 0), not subsample factor - finally bit the bullet ... im_extract()/im_extract_band() now number from zero (sorry!) - and im_lrmosaic()/im_tbmosaic() bandno param too 29/6/01 JC - im_region_free() now frees immediately 27/6/01 JC - im_vips2tiff() man page updated for deflate, 2 years late 22/6/01 JC - oops, limit wrong on im_rank() 21/6/01 JC - better post_install for --prefix outside VIPS's tree - -ltiff needs -lm in acinclude.m4 ... fixes configure on redhat 7.x 13/6/01 JC - started 7.7.8 6/6/01 JC - im_invertlut() added 31/5/01 JC - im_colour_temperature, im_XYZ2Lab_temp, im_Lab2XYZ_temp added - ... colour temp stuff needs sorting out properly 25/5/01 JC - added vips-config script, cf. gtk-config - --without-threads option added - did a bit of work on the C++ API docs 24/5/01 JC - added im_tiff2vips_header(), im_jpeg2vips_header() and im_ppm2vips_header() - header uses these to print fields quickly - switched to config.h - configure.in rewritten ... much nicer, fewer options, more automatic 17/5/01 JC - im_matinv() didn't free stuff correctly on singular matrix 16/5/01 JC - vips2dj now knows about 5000ps printers - allow RW mode for non-native VIPS image files, for 8 bit images 2/5/01 JC - started 7.7.7 1/5/01 JC - im_addgnoise() did not work for >1 band images 23/4/01 JC - configure options to remove support for JPEG and TIFF ... helpful for a no- dependencies build 20/4/01 JC - im_(v)snprintf() added - all sprintf()s removed 15/4/01 JC - im_affine() had a rounding problem 11/4/01 JC - tiny mosaicing bug fixed in im__lrcalcon - started 7.7.6 21/3/01 JC - new iblend code in im_tbmerge() was typo-d - mosaic1 was broken by affine too 20/3/01 JC - im_image() failed for FMTUCHAR 12/3/01 JC - started 7.7.5 - im_sharpen() uses seperable convolution for big speed up - new "Print" menu 11/3/01 JC - REALVEC renamed as DOUBLEVEC - added IMAGEVEC - added IM_INPUT_IMAGEVEC - gbandjoin now has function description - new function im_maxvalue() - im_compass()/im_lindetect() reimplemented with im_conv()/im_maxvalue(), about 15% faster, works for any type, partial - im_gradient() reimplemented with im_conv()/im_abs()/im_add(), about 30% slower, works for any type, partial 10/3/01 JC - new function, im_clip2fmt() converts between any image formats ... slightly faster than the old im_clip() - legacy im_clip2us() etc. functions now just call this 9/3/01 JC - im_conv() rewritten, simpler, about 10% faster - im_convsep() rewritten, now does any non-complex type, partial, 20% faster - new functions: im_convf(), im_convsepf() for DOUBLEMASK - raw versions of each - legacy convolvers (eg. im_convbi()) removed 8/3/01 JC - new function im_blend() - new function im_lab_morph() - speed up to im_ifthenelse() - speed up to im_*merge() (uses integer arithmetic for integer blends) 4/3/01 JC - tiny speed ups to im_histgr() - speed ups to im_maplut() 3/3/01 JC - new functions: im_histnorm(), im_histcum() - im_histeq() more general - im_vipshome() --- better behaviour for relative paths 2/3/01 JC - new video package - im_video_v4l1() (video for linux) added - configure.in switches to turn v4l1 on and off 1/3/01 JC - new im_histspec() implementation ... more general, bugs removed 14/2/01 JC - better vips2dj usage message 13/2/01 JC - im_image_sanity() added, called in various places in iofuncs 9/2/01 JC - added 'check' and 'name' class member stuff to ip from ip_gtk2 - new "Plot" menu - new "Overlay" menu - more stuff in _stdenv/_list ... curried forms of head/tail etc. 7/2/01 JC - started 7.7.4 - vips2dj and vdump now use im_vipshome() 5/2/01 JC - new im_vipshome() function - min()/max() macros renamed as MIN()/MAX() - new im_load_plugins() function - vips.exe and ip now load $VIPSHOME/lib plugins at startup 2/2/01 JC - mosaicing functions now have an extra max blend width parameter 30/1/01 JC - fixed tbmerge no overlap detect 13/12/00 JC - started 7.7.3 30/12/00 JC - vips.h fixes for cygwin/wingdi conflict 27/11/00 JC - added im_vips2ppm(), im_open() imports and exports it - fixed nasty implicit output conversion problem for PIO dispatch() calls 21/11/00 JC - added im_ppm2vips() 16/11/00 JC - configure.in fixes ... jpeg found correctly now - searches for libz as well 16/11/00 JC - started 7.7.2 5/11/00 JC - speed up to lab2labq 19/10/00 JC - started 7.7.1 13/1/00 JC - oops, im_open() was missing an 'else' in jpeg/tiff load 5/8/00 JC - im_vips2tiff() now has mode string embedded in output filename - im_vips2jpeg() now has qfac in output filename - im_open() understands this 11/7/00 JC - new im_image() function ... wraps a VIPS image around a memory buffer - C++ layer changes: * now use #include * error renamed as VError * new VMask() constructors * new VImage() constructor * new VImage::data() access member * more operator equivalences: <, >, <=, >=, ==, !=, &, |, ^, % 17/6/00 JC - more consts added to vips protos 10/5/00 JC - minor configure.in changes to help solaris - removed _TIFFmalloc() and _TIFFfree() calls 9/3/00 JC - fixed rounding problem in generate grid 8/3/00 JC - fixup to im_system() temp dir 7/3/00 JC - added im_system() - small tidies 1/3/00 JC - better plugin test in configure.in 26/2/00 JC - fixes to Makefile.am in ip/src* and configure.in, to help ip find the right gtk includes on systems with more than one gtk-xxx installed 21/2/00 JC - now builds ip and ip_gtk2 16/2/00 JC - configure.in fixes for xil and some TIFF/JPEG strangeness 15/2/00 JC - im_global_balancef() was broken! d'oh - note in README about enabling video cards 10/2/00 JC - configure now searches for xil ... FIND_XIL macro - im_zoom() spots integer overflow - better shape set on region drag end in ip - better zoom-too-far handling in ip 13/1/00 JC - fixes to configure etc. to help cygwin - jpeg is now searched for too ... FIND_JPEG macro 10/1/00 JC - global_balance() now uses new affine() atuff 27/12/99 JC - mosaic1 stuff now uses new affine() funcs 21/12/99 JC - added Joe's docs - im_LabS2LabQ() rounding on a/b slightly broken for a/b == 0 20/12/99 JC - new function: im_affine() - similarity*() now in terms of affine() - tests for error return in reduce.c from maplut - small clean-ups 15/12/99 - im_version() added, new iofuncs package for it - ip did not call zero-input-arg vips functions - vips.c did not like zero-input-arg functions 6/12/99 JC - Sobel filter was a bit broken 3/12/99 JC - menu reorganisation - generate gauss mask dialog 2/12/99 JC - reworked text file IO, better error messages 1/12/99 JC - reworked .iprc filename stuff, cleaner 30/11/99 JC - better menu set switcher in calc preferences - ip now thinks it's 7.7 - did a spellcheck on the ip guide 29/11/99 JC - 7.7 started! - srgb D65->D50 converter - Negate added to arith - find similar pixel value dialog - find similar colour dialog - paste into background dialog 19/11/99 JC - adjust labq was mising - shrink image defaulted to /2 not /1 - sharpdropshadow broken - Rotate.* broken - vips-7.6.3 release 18/11/99 JC - ip didn't report space free on >2GB filesystems correctly - ip did not link statically against libXpm on solaris7 17/11/99 JC - im_histplot() failed for all 0's histogram - new profile_image dialog - man pages for im_sRGB2XYZ/im_XYZ2sRGB were broken - new colourize image dialog - new shrink image image dialog - new expand image image dialog - better doc Makefiles 16/11/99 JC - more menu reorganising - new image_to_mask/mask_to_image buttons - new match_two_images dialog - new measure_colour_chart dialog 15/11/99 JC - new custom LABQ sharpen in Image menu - configure support for SGI video (thanks Ruven) - menu fiddling in ip - new "resize canvas" menu item - im_insert_noexpand() added, no docs tho' 11/11/99 JC - new ip menu item: Image=>Adjust white/black/saturation of LabQ - fixed bug in decompose complex number - browse-icons now ignores errors - better error msg for "12 12" etc cases 10/11/99 JC - open hi-res gives proper error msg if no file found - made file-select boxes a bit more compact and clearer - updated configure.in for vips-examples-7.6 9/11/99 JC - new column start point moved - vdump now defaults to subsample 1, portrait - navigation boxes were broken - no longer shrink-to-fit if loading as high res - better positioning of zoom windows - removed some old cruft 8/11/99 JC - ooops, im_remainder() got lost somehow - refguide converted to latex and updated - cppguide updated 5/11/99 JC - libguide converted to latex and updated 4/11/99 JC - ip guide now latex2htmls cleanly ... still needs updating tho' - cpp/app guide latex2html redone 2/11/99 JC - configure no longer adds -32 to IRIX builds for you - some more stuff in README - simple DEBUGM malloc tracking, made libsrc/iofuncs/memory.c - changed im_malloc() to return void * - removed duplicate im_malloc() proto from util.h - changed all malloc/free to go through im_malloc()/im_free() 23/10/99 JC - double-click on error image now pops a load browser and an error dialog - add-new-column no longer scrolls to right edge of workspace - better scroll-to-bottom on item add - load ws twice does not cause 'already open' errors - memorise directory button in fsb 18/10/99 JC - new FIND_TIFF/FIND_MOTIF macros for acinclude.m4 - new ./configure switches, see ./configure --help - enabled static libs 8/10/99 - broke action_proc_bop() into smaller functions, stops bad code gen on gcc2.95.1 (and others, prolly) - restored old Makefiles in doc/src/ipguide - vips7.6 script renamed as vips-7.6 5/10/99 - replace image was broken - some menu reorganisation - 'reload all menus' button 4/10/99 - computed regions in ip were broken - updated system.iprc defaults - new menu item: adjust white/black points 2/10/99 - browse icons was broken - greyscale 16-bit tiled tiff was broken - extra mutex locks for TIFF*() in im_tiff2vips() 1/10/99 - some automake probs fixed - squished two ip bugs 30/9/99 - fixed problem with pthreads, now works on suse6.2 as well - new API stuff for threaded evaluation with im_threadgroup_t - new public interface provide platform independent threads/locks/semaphores - no error box if you zoom out too far now 26/9/99 - lr/tb merge blend was not quite right ... should be smoother now - histplot broken for float images 24/9/99 - better mono->labq converter - more portable ispoweroftwo detect for freq filter stuff 23/9/99 - better graphics expose handling 17/9/99 - >/< stuff in ip was a bit mixed up - ink preview fixed for mono images - help popup fixed 15/9/99 - linedetect and sobel filters for ip, thnx Kirk 14/9/99 - Find_histogram was broken - im_profile() man pages was broken - ooops, ip had old set of macros 10/9/99 - im_and/im_or/im_eor now work for any integer type Summer hols: (2nd half August '99) - initial heap block larger to avoid start gcs - def slicer fixed - larger max heap - toolkits with initial '_' hidden by default - custom recomb - dialog.def removed - ... other menu fixes - generate grid menu - im_remainder() added - new cursor change code, hglass rotates during comp! - dialog.c handles cursor changes better - rubber band in paintbox displays - mag widget stays on right! - undo/redo single pixel paint ops - heap size control from prefs - cancel for reductions as well as for image calc - browse stuff reworked, no more .icon.v files - save stops you overwriting open .v files - better animate_countdown() handling - better resize behaviour for bars added to images - better code generation, bug fixed in state tracking - auto recover from crash libvips-8.9.1/INSTALL000066400000000000000000000366051361153320700142450ustar00rootroot00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. libvips-8.9.1/Makefile.am000066400000000000000000000010671361153320700152420ustar00rootroot00000000000000SUBDIRS = \ libvips \ cplusplus \ tools \ po \ man \ doc \ test \ fuzz EXTRA_DIST = \ m4 \ benchmark \ autogen.sh \ vips.pc.in \ vips-cpp.pc.in \ suppressions \ depcomp \ README.md pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = vips.pc vips-cpp.pc dist-hook: # make sure we don't get any .svn dirs from EXTRA_DIST # also "fred" gets left around occasionally -find $(distdir) -name .svn -exec rm -rf {} \; -find $(distdir) -name fred -exec rm {} \; ACLOCAL_AMFLAGS = -I m4 DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc --enable-introspection libvips-8.9.1/NEWS000066400000000000000000000221631361153320700137050ustar00rootroot00000000000000VIPS changed from 7.10 to 7.12 (not exhaustive, see ChangeLog for details) Non-backwards compatible changes ================================ - IMAGE->Hist is deprecated, use im_history_get() instead - im_append_Hist() removed - IMAGE->Bbits is deprecated (now ignored) - im_region_local() replaced by im_region_buffer() VIPS enhancements ================= - new backwards and forwards compatible VIPS file format: it has a new metadata system that efficiently shares and propogates ICC profiles, EXIF data, etc. & whatever - speed ups: new pixel buffer cache saves and reuses computations, uses liboil where possible for a small speedup - SMP scaling: simplified lock system improves SMP scaling, double-buffered image writes overlap computation - lower mem use: new mmap window cache shares file mappings, history buffers share and reuse image history metadata - built-in support for new image formats: OpenEXR, Analyze7, CSV - RGB16 and GREY16 image hints - uses GOption for much better command-line argument handling - better C++ binding: namespaces, VError derives from std::exception, image and number vector constants - python binding - gcc sentinel attributes added - added GValue as an arg type - added im_benchmark() and friends for testing - new functions: im_analyze2vips(), im_benchmark*(), im_buildlut(), im_concurrency_get/set(), im_contrast_surface(), im_contrast_surface_raw(), im_copy_from(), im_copy_morph(), im_cp_desc_array(), im_cp_descv(), im_extract_areabands(), im_flood_blob_copy(), im_get_option_group(), im_grid(), im_header_exists(), im_header_map(), im_history_get(), im_invalidate(), im_isscalar(), im_lineset(), im_linreg(), im_meta*(), im_msb(), im_norm_dmask(), im_project(), im_raw2vips(), IM_REGION_ADDR_TOPLEFT(), im_tile_cache(), im_video_test() VIPS changed from 7.8 to 7.10 (not exhaustive, see ChangeLog for details) Non-backwards compatible changes ================================ - no longer generates vips-config script, instead it makes .pc files for pkg-config ... replace any "vips-config" with "pkg-config vips-7.10" - origin hint semantics changed ... it now records the position in the output image of the origin of the input image - all float to int casts on pixel values are now floor() rather than rint(), for consistency with C casting semantics VIPS enhancements ================= - nip reworked for gtk+-2.4, now called nip2 - now based on glib, so VIPS no longer has it's own thread, plugin and data structure libraries - i18n support, although not quite complete yet - new error message API to make i18n possible (compatibility macros mean the old API still works) - new 'start up VIPS' call, im_init_world(), sets up i18n and threads (optional to call it, but i18n won't fully work unless you do) - C programs now just need "#include ", no other includes required - wraps the Pango font rendering library, see im_text() - new function flag: NOCACHE ... means the result of the call should not be cached, useful for video grab functions and paintbox functions - im_embed() now supports a wider range of embedding styles, including a fast edge stretch - all area operations use the new embed style to expand their input rather than their output, so there are no more black borders on filtered images - other new functions: im_render(), im_cache(), im_extract_bands(), im_copy_swap(), im_rint(), im_make_xy(), im_init_world(), im_error(), im_warn(), im_diag(), im_rank_image(), im_replicate() - many fixes and improvements to old funcs - configure and portability improvements Bug fixes ========= - all serious bug fixes got back-ported to 7.8, I think VIPS changes from 7.6 to 7.8 (again, not exhaustive, see ChangeLog for details) Non-backwards compatible changes ================================ - output format options specified in filenames: new prototypes for load and save tiff and jpeg - C++ API name changes ... error => VError - include path change - C includes - C++ includes - im_extract*() numbers bands from zero, not from 1 ... also other funcs which refer to bands (eg. im_lrmosaic() etc.) - mosaic funcs have extra max blend width parameter VIPS enhancements ================= - rewritten and much fancier ip (see separate docs), now called nip ... old ip (slightly fixed) still there - mmap windows remove 2GB image size limit - images have an origin hint field - icc transforms supported via wrapping of Little CMS - much, much faster Fourier transforms via wrapping of libfwfft - ppm/pgm/pbm read/write - C++ API enhancements: new constructors, more operator equivalences - new colourspace: Yxy - support for D50 colour temperature images - new functions: im_image(), im_system(), im_version*(), im_blend(), im_copy_set(), im_flood_blob(), im_icc_*(), im_open_local_array(), im_header_*(), im_sign(), im_ceil(), im_floor(), im_remainderconst*(), im_print(), im_guess_prefix(), im_remosaic(), im_invertlut(), Yxy funcs, color temperature funcs, im_clip2fmt(), im_blend(), im_lab_morph(), im_histnorm(), im_histcum(), im_video_v4l(), im_LabS2Lab(), im_Lab2LabS() - new type: IMAGEVEC - header is much faster - ip/nip split to separate packages - better vips2dj - better cygwin support, mingw support too - Mac OS X and Windows build support - new set of sensible #define names, old names can be turned off with -DIM_NO_VIPS7_COMPAT - many configure improvements Bug fixes ========= - speed ups - fixes to implicit image format conversions - im_zoom() spots integer overflow - im_LabS2LabQ() rounding on a/b slightly broken for a/b == 0 - fixes to refcounting in C++ API - mask casts in C++ were broken VIPS Changes for 7.4 to 7.6 Non-backwards compatible changes ================================ - im_histplot() has new (and better) rules - im_andconst(), im_orconst() and im_eorconst() now take a double, not an unsigned char, as their constant argument type - im_global_balance_float() renamed as im_global_balancef() to be more consistent with other functions - im_global_balance_search() removed ... you can do this efficiently with an ip macro now - new parameter "gamma" to im_global_balance() and im_global_balancef() ... sets the gamma for the input device with which the images were captured, set to 1.0 for old behaviour - im_malloc() now returns void *, not char * Bug fixes ========= - tiny memory leak in im_list_remove() fixed - oops, the value for sRGB in the header was wrong, now 22 - missing function descriptor for im_rank_raw() - im_dECMC_fromLab() was broken - im_erode() and im_dilate() output incorrect error messages if mask elements were not one of 0, 128, 255 - im_rotate_*mask*() functions were not preserving scale and offset values Package enhancements ==================== The whole thing is now GPL, with GNU configure ip changes ========== - better display control bar - matrix operations now appear in the workspace - new UI elements: input options and toggles - better LUT optimisation --- arithmetic operations on UCHAR images should be much faster - new macro language --- same as old one, but faster and much more powerful - all standard menus rewritten in new macro language, much nicer! - batch operations with Group/Ungroup - now uses GDK for drawing in image windows, much better colour handling on 8/16-bit graphics cards - image repaint is now threaded for an about-linear speedup as you add more CPUs - many interface improvements and polishes VIPS enhancements ================= - VIPS now uses POSIX threads (7.4 used Solaris threads) and has been rejigged to provide a nice threading API to functions which call the library - im_open() now knows about LSB- and MSB- first VIPS images, and silently converts them to native order ... it also now ignores case when deciding what format to write - new parameter type IM_INPUT_REALVEC, a vector of doubles - new set of functions with vector constants: im_lintra_vec(), im_powtra_vec(), im_expntra_vec(), all relational (im_equal_vec(), im_notequal_vec(), etc.), all boolean (im_and_vec() etc.) - new flag for function descriptors: "IM_FN_PTOP" set for point-to-point functions ... makes ip use LUTs for operation - im_tiff2vips() now reads and writes 16-bit images, and knows about zip (deflate) compression - convenience functions im_extract_band() extracts a band from an image; im_extract_area() extracts an area - im_list_member() tests for list contains object - new functions im_write_*mask_name(), im_create_*maskv() _ new functions im_remainder() and im_profile() - fourier filtering, forward transform, reverse transform, make power spectrum all free memory more quickly, making them suitable for very large images - new functions im_isMSBfirst() and im_amiMSBfirst() test images and this processor for MSB first byte order - im_malloc() now prints low-on-memory warnings to stderr with im_warning() for easier bug catching - D65_X0 updated for latest recommedations, D60, D93, D55, D50, A, B, C added - minor fixes to the C++ interface to bring it in line with the newer ANSI standards - more and more comprehensive prototypes in "proto.h" to aid C++ (use of "const" etc.) - im_and*(), im_or*() and im_eor*() can now work on any integer image libvips-8.9.1/README.md000066400000000000000000000263571361153320700144760ustar00rootroot00000000000000# libvips : an image processing library [![Build Status](https://travis-ci.org/libvips/libvips.svg?branch=master)](https://travis-ci.org/libvips/libvips) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/libvips.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=2&q=proj:libvips) [![Coverity Status](https://scan.coverity.com/projects/6503/badge.svg)](https://scan.coverity.com/projects/jcupitt-libvips) libvips is a [demand-driven, horizontally threaded](https://github.com/libvips/libvips/wiki/Why-is-libvips-quick) image processing library. Compared to similar libraries, [libvips runs quickly and uses little memory](https://github.com/libvips/libvips/wiki/Speed-and-memory-use). libvips is licensed under the [LGPL 2.1+](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html). It has around [300 operations](http://libvips.github.io/libvips/API/current/func-list.html) covering arithmetic, histograms, convolution, morphological operations, frequency filtering, colour, resampling, statistics and others. It supports a large range of [numeric types](http://libvips.github.io/libvips/API/current/VipsImage.html#VipsBandFormat), from 8-bit int to 128-bit complex. Images can have any number of bands. It supports a good range of image formats, including JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF, Analyze, NIfTI, DeepZoom, and OpenSlide. It can also load images via ImageMagick or GraphicsMagick, letting it work with formats like DICOM. It comes with bindings for [C](http://libvips.github.io/libvips/API/current/using-from-c.html), [C++](http://libvips.github.io/libvips/API/current/using-from-cpp.html), and the [command-line](http://libvips.github.io/libvips/API/current/using-cli.html). Full bindings are available for [Ruby](https://rubygems.org/gems/ruby-vips), [Python](https://pypi.python.org/pypi/pyvips), [PHP](https://github.com/libvips/php-vips), [C# / .NET](https://www.nuget.org/packages/NetVips), [Go](https://github.com/davidbyttow/govips), and [Lua](https://github.com/libvips/lua-vips). libvips is used as an image processing engine by [sharp (on node.js)](https://www.npmjs.org/package/sharp), [bimg](https://github.com/h2non/bimg), [sharp for Go](https://github.com/DAddYE/vips), [Ruby on Rails](http://edgeguides.rubyonrails.org/active_storage_overview.html), [carrierwave-vips](https://github.com/eltiare/carrierwave-vips), [mediawiki](http://www.mediawiki.org/wiki/Extension:VipsScaler), [PhotoFlow](https://github.com/aferrero2707/PhotoFlow) and others. The official libvips GUI is [nip2](https://github.com/libvips/nip2), a strange combination of a spreadsheet and an photo editor. # Install There are packages for most Unix-like operating systems, including macOS. Check your package manager. There are binaries for Windows in [releases](https://github.com/libvips/libvips/releases). The [libvips website](https://libvips.github.io/libvips) has [detailed install notes](https://libvips.github.io/libvips/install.html). # Building libvips from a source tarball We keep pre-baked tarballs in [releases](https://github.com/libvips/libvips/releases). Untar, then in the libvips directory you should just be able to do: ./configure Check the summary at the end of `configure` carefully. libvips must have `build-essential`, `pkg-config`, `glib2.0-dev`, `libexpat1-dev`. You'll need the dev packages for the file format support you want. For basic jpeg and tiff support, you'll need `libtiff5-dev`, `libjpeg-turbo8-dev`, and `libgsf-1-dev`. See the **Dependencies** section below for a full list of the things that libvips can be configured to use. Once `configure` is looking OK, compile and install with the usual: make sudo make install By default this will install files to `/usr/local`. # Testing Run the test suite with: make check Run a specific test with: pytest --verbose pytest test/test-suite/test_foreign.py -k test_tiff # Building libvips from git Clone the latest sources with: git clone git://github.com/libvips/libvips.git Building from git needs more packages -- you'll need at least `gtk-doc` and `gobject-introspection`, see the dependencies section below. For example: brew install gtk-doc Then build the build system with: ./autogen.sh --prefix=/home/john/vips Debug build: CFLAGS="-g -Wall" CXXFLAGS="-g -Wall" \ ./configure --prefix=/home/john/vips --enable-debug make make install Leak check. Use the suppressions file `supp/valgrind.supp`. export G_DEBUG=gc-friendly valgrind --suppressions=vips-x.y.z/supp/valgrind.supp \ --leak-check=yes \ vips ... > vips-vg.log 2>&1 Memory error debug: valgrind --vgdb=yes --vgdb-error=0 vips ... valgrind threading check: valgrind --tool=helgrind vips ... > vips-vg.log 2>&1 Clang build: CC=clang CXX=clang++ ./configure --prefix=/home/john/vips Clang static analysis: scan-build ./configure --disable-introspection --disable-debug scan-build -o scan -v make scan-view scan/2013-11-22-2 Clang dynamic analysis: FLAGS="-g -O1 -fno-omit-frame-pointer" CC=clang CXX=clang++ LD=clang \ CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" LDFLAGS=-fsanitize=address \ ./configure --prefix=/home/john/vips FLAGS="-O1 -g -fsanitize=thread" FLAGS="$FLAGS -fPIC" FLAGS="$FLAGS -fno-omit-frame-pointer -fno-optimize-sibling-calls" CC=clang CXX=clang++ LD=clang \ CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" \ LDFLAGS="-fsanitize=thread -fPIC" \ ./configure --prefix=/home/john/vips \ --without-magick \ --disable-introspection G_DEBUG=gc-friendly vips copy ~/pics/k2.jpg x.jpg >& log Build with the GCC auto-vectorizer and diagnostics (or just -O3): FLAGS="-O2 -march=native -ffast-math" FLAGS="$FLAGS -ftree-vectorize -fdump-tree-vect-details" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" \ ./configure --prefix=/home/john/vips # Dependencies libvips has to have `glib2.0-dev` and `libexpat1-dev`. Other dependencies are optional. ## Optional dependencies If suitable versions are found, libvips will add support for the following libraries automatically. See `./configure --help` for a set of flags to control library detection. Packages are generally found with `pkg-config`, so make sure that is working. Libraries like giflib and nifti do not use `pkg-config` so libvips will also look for them in the default path and in `$prefix`. If you have installed your own versions of these libraries in a different location, libvips will not see them. Use switches to libvips configure like: ./configure --prefix=/Users/john/vips \ --with-giflib-includes=/opt/local/include \ --with-giflib-libraries=/opt/local/lib or perhaps: CFLAGS="-g -Wall -I/opt/local/include -L/opt/local/lib" \ CXXFLAGS="-g -Wall -I/opt/local/include -L/opt/local/lib" \ ./configure --prefix=/Users/john/vips ### libjpeg The IJG JPEG library. Use the `-turbo` version if you can. ### libexif If available, libvips adds support for EXIF metadata in JPEG files. ### giflib The standard gif loader. If this is not present, vips will try to load gifs via imagemagick instead. ### librsvg The usual SVG loader. If this is not present, vips will try to load SVGs via imagemagick instead. ### PDFium If present, libvips will attempt to load PDFs via PDFium. This library must be packaged by https://github.com/jcupitt/docker-builds/tree/master/pdfium If PDFium is not detected, libvips will look for poppler-glib instead. ### poppler-glib The Poppler PDF renderer, with a glib API. If this is not present, vips will try to load PDFs via imagemagick. ### libgsf-1 If available, libvips adds support for creating image pyramids with `dzsave`. ### libtiff The TIFF library. It needs to be built with support for JPEG and ZIP compression. 3.4b037 and later are known to be OK. ### fftw3 If libvips finds this library, it uses it for fourier transforms. ### lcms2 If present, `vips_icc_import()`, `vips_icc_export()` and `vips_icc_transform()` are available for transforming images with ICC profiles. ### libpng If present, libvips can load and save png files. ### libimagequant If present, libvips can write 8-bit palette-ised PNGs. ### ImageMagick, or optionally GraphicsMagick If available, libvips adds support for loading all libMagick-supported image file types. Use `--with-magickpackage=GraphicsMagick` to build against graphicsmagick instead. Imagemagick 6.9+ needs to have been built with `--with-modules`. Most packaged IMs are, I think. If you are going to be using libvips with untrusted images, perhaps in a web server, for example, you should consider the security implications of enabling a package with such a large attack surface. ### pangoft2 If available, libvips adds support for text rendering. You need the package pangoft2 in `pkg-config --list-all`. ### orc-0.4 If available, vips will accelerate some operations with this run-time compiler. ### matio If available, vips can load images from Matlab save files. ### cfitsio If available, vips can load FITS images. ### libwebp If available, vips can load and save WebP images. ### libniftiio If available, vips can load and save NIFTI images. ### OpenEXR If available, libvips will directly read (but not write, sadly) OpenEXR images. ### OpenSlide If available, libvips can load OpenSlide-supported virtual slide files: Aperio, Hamamatsu, Leica, MIRAX, Sakura, Trestle, and Ventana. ### libheif If available, libvips can load and save HEIC images. # Contributors ### Code Contributors This project exists thanks to all the people who contribute. ### Organizations Support this project with your organization. Your logo will show up here with a link to your website. libvips-8.9.1/THANKS000066400000000000000000000007531361153320700141220ustar00rootroot00000000000000VIPS THANKS file VIPS was originally written by Nicos Dessipris, Kirk Martinez and John Cupitt. Many people have contributed to VIPS by reporting problems, suggesting improvements, or offering code. Matthew Hanson Joe Padfield Haida Liang Ian Clarke Steve Perry Stephen Chang David Saunders Mike Westmacott Chris Hurst Jim Coddington Lou Rachel Billinge Colin White ENST Thomson-CSF We've also had very helpful funding from the European Commission and Hewlett-Packard. libvips-8.9.1/autogen.sh000077500000000000000000000033161361153320700152060ustar00rootroot00000000000000#!/bin/sh # set -x # a bunch of cleaning up ... make certain everything will be regenerated rm -f Makefile Makefile.in aclocal.m4 rm -rf autom4te.cache # remove m4/ macros put there by libtool etc. rm -f m4/libtool.m4 rm -f m4/lt~obsolete.m4 rm -f m4/ltoptions.m4 rm -f m4/ltsugar.m4 rm -f m4/ltversion.m4 rm -f m4/gtk-doc.m4 rm -f config.* configure depcomp rm -f install-sh intltool-* libtool ltmain.sh missing mkinstalldirs rm -f stamp-* rm -f benchmark/temp* find doc -depth \( \ -path doc/libvips-docs.xml.in \ -o -path doc/Makefile.am \ -o -path 'doc/images/*' \ -o -name '*.xml' ! -name libvips-docs.xml ! -path 'doc/xml/*' \ -o -name '*.py' \ -o -name '*.md' \ -o -name '*.docbook' \ \) -prune -or \( \ -type f \ -o -type d -empty \ \) -delete ACDIR=`aclocal --print-ac-dir` # OS X with brew has a dirlist in ACDIR that points to several directories # dirlist supports wildcards, but that would require eval ... which is evil if [ -e $ACDIR/dirlist ]; then ACDIR=`cat $ACDIR/dirlist` fi gtkdocize --copy --docdir doc --flavour no-tmpl || exit 1 # some systems need libtoolize, some glibtoolize ... how annoying printf "testing for glibtoolize ... " if glibtoolize --version >/dev/null 2>&1; then LIBTOOLIZE=glibtoolize echo using glibtoolize else LIBTOOLIZE=libtoolize echo using libtoolize fi test -r aclocal.m4 || touch aclocal.m4 # gettextize produces quite a bit of benign and misleading text output, hide # it ... hopefully any errors will go to stderr and not be hidden glib-gettextize --force --copy > /dev/null test -r aclocal.m4 && chmod u+w aclocal.m4 aclocal -I m4 autoconf autoheader $LIBTOOLIZE --copy --force --automake automake --add-missing --copy ./configure $* libvips-8.9.1/benchmark/000077500000000000000000000000001361153320700151345ustar00rootroot00000000000000libvips-8.9.1/benchmark/README000066400000000000000000000012371361153320700160170ustar00rootroot00000000000000VIPS SMP benchmark ------------------ This is adapted from the system used to generate images for a Print On Demand project at The National Gallery. Images from a 10k by 10k studio digital camera are colour processed, resized, cropped and sharpened. This thing was originally processing images off a remote server over a 100Mbit/s network. No attempt was made to make it quick (there was no point): you could make it a lot faster very easily. But it still serves as a benchmark which has been tested over many years. It is getting to < 1s per run now though! See https://github.com/libvips/libvips/wiki/Benchmarks for results. Feel free to contribute your own. libvips-8.9.1/benchmark/benchmarkn-osx.sh000077500000000000000000000023651361153320700204200ustar00rootroot00000000000000#!/bin/bash uname -a gcc --version vips --version # how large an image do you want to process? # sample2.v is 290x442 pixels ... replicate this many times horizontally and # vertically to get a highres image for the benchmark tile=13 # how complex an operation do you want to run? # this sets the number of copies of the benchmark we chain together: # higher values run more slowly and are more likely to be CPU-bound chain=1 echo building test image ... echo "tile=$tile" vips im_replicate sample2.v temp.v $tile $tile if [ $? != 0 ]; then echo "build of test image failed -- out of disc space?" exit 1 fi echo -n "test image is" `vipsheader -f width temp.v` echo " by" `vipsheader -f height temp.v` "pixels" max_cpus=`vips im_concurrency_get` echo "max cpus = $max_cpus" echo "starting benchmark ..." echo /usr/bin/time vips \ --vips-concurrency=xx \ im_benchmarkn temp.v temp2.v $chain for((cpus = 1; cpus <= max_cpus; cpus++)); do echo cpus = $cpus /usr/bin/time vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1 /usr/bin/time vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1 /usr/bin/time vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1 done libvips-8.9.1/benchmark/benchmarkn.sh000077500000000000000000000030341361153320700176030ustar00rootroot00000000000000#!/bin/bash uname -a gcc --version vips --version # how large an image do you want to process? # sample2.v is 290x442 pixels ... replicate this many times horizontally and # vertically to get a highres image for the benchmark tile=13 # how complex an operation do you want to run? # this sets the number of copies of the benchmark we chain together: # higher values run more slowly and are more likely to be CPU-bound chain=1 echo building test image ... echo "tile=$tile" vips im_replicate sample2.v temp.v $tile $tile if [ $? != 0 ]; then echo "build of test image failed -- out of disc space?" exit 1 fi echo -n "test image is" `vipsheader -f width temp.v` echo " by" `vipsheader -f height temp.v` "pixels" max_cpus=`vips im_concurrency_get` echo "max cpus = $max_cpus" echo "starting benchmark ..." echo /usr/bin/time -f %e vips \ --vips-concurrency=xx \ im_benchmarkn temp.v temp2.v $chain echo reported real-time is best of three runs echo cpus real-time for((cpus = 1; cpus <= max_cpus; cpus++)); do t1=`/usr/bin/time -f %e vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1` if [ $? != 0 ]; then echo "benchmark failed -- install problem?" exit 1 fi t2=`/usr/bin/time -f %e vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1` t3=`/usr/bin/time -f %e vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1` # echo $t1 $t2 $t3 if [[ $t2 < $t1 ]]; then t1=$t2 fi if [[ $t3 < $t1 ]]; then t1=$t3 fi echo $cpus $t1 done libvips-8.9.1/benchmark/sample2.v000066400000000000000000017514201361153320700167000ustar00rootroot00000000000000" d ƮDqx~ Ǵ޴ f! O}_­ r`Ҭ&[̳ƴ|-yBDiZb۬(1,s[ĪLޘ(éDЭ51)ª Se3om2tSSƥ7+A !mB !r!MwY(pB "d!fPҲ«i̫֯;֣c"T?[h@eޤ2)Q8Dܠ gUɚ 4AO  ԫw ? ' GCIPӒ  mMŴ F%ũg >  "'FCT>-cgoB2Z5nm0 @ԡa߭INDɱqP شi ĭ!! !bS+  gԥk۫/ԩFϩ{ e1Ϸc&!T! Ǩ:, ̜/exw8]ݬ߮5_ʟ`{"0P7gbǛD;Kar A8 !ѫpU.E )KD "(Vi%!h lGФ8ѕ8Px/ԧ(HƤsڝe2ě`ۨ3wsC<ؤP IAsΧh^0Ϝ/VGG3ͳU ֭ˤœ  דU"ڱ$"\ ;e   ]ѳ;.Pg`Ƶq׵X `Ym{@6%~7O)"аM )Neϫ&K#ئ Ũ\Bܶ[QѨիW6cʫ! " # ΫDϤĮ.@Sq%5y] ŏ#ӱ^ƚ !M. iǢ6>Hׅ׍tի u@u.Ŭmxx!1  F5ϥK ̟fY"OKܜ;{|}Z/Û!qmܴ aaa\53Š&@C$\Aݧ3Tޯx*ͥŤÞr+P &  D۬!"z( ŵxͮèu dzdΩgp|{ wb+<29ZN>>b`,o*al?"Ѭi @U*ب"$ ޚڥyP Φ ""#ܨjΠ/ةX9RiLa` | ʌ+Kv=Hɦ`rnoҔx=3Ǧgs Վ tf֦$W  ݻOO;/D [ޘ1sL_2 ȇʕ? ‘uYvxEXی}G1@[ҤثLR%МSn #դ}y]7%]EPAUѫ2%Ə՛oʚ%ۏTzجǠ֟ ݤ>FD~d>oRͪP ȬԨè+d] Z; $XśE@ܣ Kw֕Wptnñ93WڨTpX:iƪ} Ģ  ݢS~֗  Иʞޫ*qK+ޕ͞c^Ь^ߙ\t_ѐ)ߘ Ө^5.ݮgxǪ ICtUD@_/Be#%kuS0T^Ħ1ɕ~zol`(|uwL@V77U3ȕݖJ8YYV3t4j+˰L{<pJ͠ȓқ!ٞިΗ̧Ө)M˱~SAȕڝ#ިX٣ܮд< iИ ˠ $;yݢDJZQMȞWvqhkʐEߑ.ƝĘéګly!שϫf[ͨܣР@@PgϡesC  v6Dՠ e Žȫp OhÜ0Ȭo(%:ԓc'yʮ (-^yxq  ͯնvabȒHwyz  ؛1dh#p r Cfɠפ˞"Y3Xj.]ӗeҘҒYm}cE Y!To Ջə_$IF feܜVYB"<uyW7rק Т98{ G18|=&,iwOg8! xG%Dw]ȚUޚfܕ[cTU<{֟%. ʡĠ] 7ӣ&C,:Vvۄ 4gFo18TԠv{ة&a(??ӢX=~\-@6܄c=V) d}Ö ֘>C!qrW{ pٰ=£ͣ }f{9$@C|%U8P-ܡdXĠlE6P0϶̶ # \Ͳ&5ƕtNl tNxZLα2;[1ߊD)mڢӳBE{ny[0.FѨR)d "gCPp2x ıѲֲq J|  ۠i}HN&s3 ~SD=1TܶyVyƞ#tiQkSb|ۡߥ,}`!QW/?!D*/u܅f.uˢsܦkwΟɟ m,yDڈ}߮/ŕCSR2lͣB^ ί@3ء>qâˬ߱7Ԝ)ߡ'֦ʩ!$$"ʡ he\zM&~ѳa*>+eƬ 88ֲڵ;YHQ̒EIHtҰp41?&5Ǡ,^ȢZ ĝ\Gcˬ[дLh( u) ܛ)f L   Ԭ Yf< BXw5 9J?fv X#pt"לԙ\Hf* (b ׏rЪί]OԓBރӇAխ+Қ֡ѧ~=aQ'%ԕ"#ŵgO9u-ע o.aG۩̳/SSȧDOj8eLn~u 3ȴs {v|Tئќ%zߟMZ*6ʦ"եƨzMٝqÚh7#}X>ZuÛâjժܦgcv{y|!@*#gԦۧ= ͬS?_ ;    b, 3,U Ǜpvբ#Ī5Uա@n6]ԏK؞oPOɀўSŚ ƛۢ#G7á8Z,9߄1ղ"qNPFS;;+˞Xusxǔan 8ݢߖ]98"Qw|(~ !m{~0> Y8 ˨ M)x?!aQŜ߯$ rg!ç6`.ffQޚݙ 0mAε( k8} 3,RfQ L  ˧#@OX3&GɷJ ! ժ4RʝМ N g T%E >B֩_+%y&ALTA5Ϟ#ς Hã=y  ͬ֬qˇ~ĖښR۟EC}mǩ٬yŞ0`=&'=)OmxɊt>Q_bV^ òQ0FR=<K 3PŗySŞɜ LԥեyǒlԒ4y .t~8q+|ªx њ#")|TOg!!" c Ĭѧڵ1&Ǫ ME ߱ էɧO]9צ S!9#[ ȱ   ;6ky+g ŧ"" 1ݨ-F/ݛ[|[% K̪  ^Ũ ^k۲ !ۛ=;Ǎm <ju  z +4[М  @ W _ewyyYاڧOo:ՙ uA &wѧբu(ڧSp(9-jԤXYڌ͍ٝKφ, ˠKSX N̩ Cgܤ==[6ҡy8ѝ58֣3# ߑ@SI3͌mҡ vͤ/{>P(  Ҟ7 7"TęISoٖ wO=GbǝRY Q 5qLӦd΢4L! " !$!Xh +!M1lFt& Brco\ ?%Ůd\ ң }ë¨t ""RMPnxAw s} =%f- Ǯ  ׬j5v!!٣3*9MDY"uУ N   I3>̳WS;t}X Ù3\d\ƆHd1h#r 46'0l8WW{ҪjMܗ2 ̥yC̓գK" >X<>Ar>ϡt03БԁGz͙VȦ_5JgL ʬ}zG;%qlљ˧f ʩԧӠAGڬ Oߩ- W,wU5ՠϥܻXΎNT QPʪ "˥ F1L6   C; ݮ í +̫řmQ2 ó"!<ѝv)݉"w|wGv@  ?.k,KK<PdڮQΣȔ(AeE5|эݘDhC]2ݲ#VV*ڨ="&.Ы U= թ 7ɩ19֩Pi6=mƨR+'W3,$Ab>z\ߪ3Z  }*hנ{Aʤ?4}y;§KxT oai,cEԣ9; ~9Y ֪"}ΣDw\r F   E 8 ]"F L8,?PiIi!]Sp_T c 0ׯ[ݲısʣ3ܐ@Z!Ý ZE!яĢls9|~ڕM"'rrdј̴0 z'-&XX=lG1Nרf©ۤ@.ߝڌzv_^~DZP"w 9ٯw ]ҥ'ѩ("Ĭ:گ;)RAv4xDݩjCʛ!*ܝYNU>l4`tI=ѳm d,Τ(b^/4pd+>Yy ƭ3,+4۪   T = )"gˠ0b3 mNcl~i*ԧ+'{*r]!j|  ڮOGqڨW>a4h~wx3mǓlŕrA_u:HɁ  Ɔ~QpBf̘MC%8uYY6ܮ+b2ٝےzdL<Y/cz` CsaP{KܗSߣO?ۭȫ+9<]V  ۮ!ѧDwnҫ /!֣-u|S'Ø{3Q۝-ܨԞ[7Ggd%Z D?>*irik{ߦlK%i#ϥaޞy"3pM+Eީũ   rާvM~P=P7ާʦP4Xb.^Eۙy&ܛx]5b0՟h%RbПY  y0dD "i&x .z9uu mÎ[ ] ك~ˑu~ -Ɠ^.טD)x~ Oӫݲε 1"ɛҌ`اͰJN}xBq?_^ y"sQ˧ZN\ = q>AžYN MB9\+ Ƨٜۙ_IOq!r!?ˠf{'$w Şٙ¡ܫpr _z+0!z#A&GΫq8   _''ͭ|td:#ʣWҧwie   ϟlro~=۩KՒNT1&@Зqʫىɞ\>ٱܚ|Y8"Ȏ ~  R ٩ Fs r :})Atd~  ? nN C}~N., d`ߔ#Fl } c#թ=b p|>8ia_?A {\i>1Xլt+G vmݫ^$; 4ܝ1bML  Fk d'P T;@ fӞ œ  xq0{ . -\|DQ~ a K"$} ! +˷/ի Z4Ms5+\)Ή)Z0Ǧ!Qez;XÔ~*|^)ǜ[Bmk լ ϫ;3܏6M}dLzt  Bذa,͟ʲDF$j ֛ j_ d! j`o ko ~ YP|rȏ6e}N#Oot+LČ?5Ǐ ߏ=1 Ӫ{B͕ #O|S90B1ԝ}̰Q6B_-Znr7v/|"ΙF50'l=؏T~0C`r* m ڐ Cۍ͓HOX Se nI+Æcw~a\6dG`сLQVҨ!̟֝8.ÙD"ϤߣVyyȖލŮ?G r&ҢؠG؟yŘ\w7YHوa9۩jg|6/kAjɫx Mt *ذ@ݢwk>ǵ9 "eE8v  >8C9o/ M|-2EʣI"^1 vԢ ODC ϫ!ŠϓUښ1>]Ыɫ$~ϲ!q '̬R\J )VO `ݛf w9WΥߥ Ǥ3#Х",:nK@\ wˣgW@ftI'۠әFL l~   M, rMŤΟ_VYk+U!֗ ģ*DW\t BަDd)REH)Ӥ(,chbR/֦[5ؚӌO§ A6^p-5!"P|<?N$én w{ s NSח!ٜzB˻Ruz#<[5t".|(&m %HsuŊEsRe š<  R٧|I^,Q}B&G/ʫE)a<{PŨƱriR zڭ @-[$w w j߯0ń ~ ڛS8  ~ݡ{jtKԝ ץ@ v M| { Lw ʪΫ_ ǣ_i& ם!A =D"kͯ*ϔ$<1I |Ҭ#G Tʖze5!FeGʳfGşբ*+.u2֦ݩGGt4Y4MP!߫!!yB;;~ RS po ڋHߦp ) O;r׭߶wgj@+̎h- ݥݏgQޡҟҡ}paɗN<[՝gkN$aɌ pjЩ%7HEtV߬ecD @ݬܯȭUUƞ9 V1$.{ >y= bڟw˞^چlj  ɠYnmqz3ި|ѺдX | 6̭Dbuyآt= fӨ !ړ  w}\SkKQΣ)ޮհ@ģƤE{,ey/BrK,a"ՙƝץ?wbDM\)RL2& `7AuEXʬ+հ   Tr7f i 1z D!F\oeXDdG~ap Ҳ ٳ!~z&Ҝ͛8xݟmJ(Í} z KS+!I5d ΫΥ!j   þTikn̯@ʩRC%HȦ 2* ~xY9-#| X}Ɖ zYfߙa ՗ _ʛ [ ڧv 9~½в?v[* |7 z n`=s*׭^t g"#  dEVʲ ̩Y °gشs.ĜP%fϪ/tDɯ 16 Dճ/}('Rdݚ"ןol;0nZٯǧޥ\!$GJwn=R 1ıϪZ{%y  g!wBr Sn msU-y J{ ZφX w? 7@ɈTU-8sO S$a=go3vZ(ɜ̪2^?FњDߍ /"wy ߛjܢ !2 . ֨ 9ߗ+uN"Dr6@   F  #$r?8'NJ&`!̲2yb)ל1eFٜ k^ w a= F t5 Y ݡd\QHSѠ?ͨYII  >7 Mv٠jf ܧDߤ1ׯDe۩(Z[A% x[`& װ)C    S զң`эܘgm(Eq $! H!7',42 Tvpg m r kzՊ 'p۟{|͌gʒY/.t}e`B(2s.!ES#Wڠ,܎ߋ^ݗm,zR7W     6!h~݈7܅ l "|BJi z,ÀLٲw5ڎ=x`TؑaǙљY˻qDDK z w !]i9ƻ ˻ hқȝKqʫ{Ԛv Н  s J = $6{[ Ͱ  qCɟvƝBd59կ=֦!ձbǭr15٠6  .۩ Ax Ψ#"KЖ%!Ȃ`ҕHbc]%VgP=GQ،O~y n jr{r q ǃ ՒB 9؛ e#2ٚ͜V݄v}2A \  b_]"ҍ!lk$7Uf'EyW5`va ٫ r ׁ )u փ(  R8Е$: Ťt[w }UBvz| eϪT '"͕ܕ.1 ·X"Ӿ߸V[ͻ<4D1 mϪ/.9pHٟ-y՘. x֞ޙOgQylM9 ĜޞTBQ\:T+Ȩ_|٢ AW_  fͬ+F Jʚ#x V|u 9@TڢR٧ӭϱòZ5B( _~Έ{cb8őǙEݢ;,1Kuz ֲ T xЛ{"N ԧ4ö٪j_4]0\  ~~o Ղ;&| \ψ„!p  M Ioҙ w * L  Upٖ͐0t 5Fh-˿^ܸ Ϫ[éƤ3ɢIϵ -;DT.ZxJҤcb)yJ*eEG{L̞էզEf!C ڈѨP~ϛ/΅{XǧتN'Q<ߛ$"(/w { يݕ]"k:"̱lL[Ėt?xyÙ͞;Z < bW]7h,_91̘94u 6+X3#ʱL{ SZɴW شx ީLV 9Q քr }$ɫuqv<љY@íΦ   lX]T!ڤ#ՑYҞ_]x_-޸1Hj¬ A8C$ \(|`ܜɝkIQ-$NЕ"96ǣץ˥j '_'I͕Z11OB9[hH ˦5h"j՟3ʩ.cʂƊJv [!@; zĨա "qf2aI9қOΓ.W[՚͜`pġڤTШeΰʹPϮ^yѱ٨W<W_-vVA_ |.֔ W^`StȫγOp^ \  /Ũcz"JN IJio޿r9\KbOKCvߢ.Urv)˛1 ˜ޞR )3a3ЙU ZR+qŖ%n`2X.P3TS6]AnX`2_f++L^MT57 a͉ՅWט 3Ֆ}Щo6-J^Dy<ҋE~ޘɘKrKy2DqP7h ģҠ.!9Z}QH#Əo ޓ٭8ck%YŤΑD~T1NV t6oSE޶H  Hώߝ  ax^v7G sq  ɣŝ!h.Ȥ8no8Hۘ#VޟLۙv5 *Ҏ ؙ beY ΤHc8 ,S%Ȏ$60D֑.v0* ٘)ʴ:dۮȡtT=Wo 480EQQ"ڠdɟؠ kz "} "(ǁMD"Vҏ@Є ֗џ* 3z M~㪠Qv!yԖMk&ޒ#x ~ dɜæ .w 8y 1~bw~{ًIidbrs !*K/yFMrcϳi ,~L ϔW֤wvr՛9dH:ILɻ ʺ )]?؜TWAЫıɠ3,YטF\v.՟-+jC-zWSz  Ց~gr2,ܥТЖ3t/ ٙș$ݢ $ۀ$<jK-LE.S͹  «OV@ 4egIfIף$K 9I8HMgKߝKԚ۝.nFS˖v y z ,Lz=9. Ё}ՌR, af ߈܊,SG2{ؚ^:}Myl!"t} C2 &w }ӛr i| !u Tx e ƕ̜SY%>D̐֊ |  y s|jQԚ$eTRVȔ>ŗǍ[͛F 4ߜ dK ߦӾǼ ̳ sɬħa"3`?9l{S&Gm5o4!s5%h".R} y  (-%xʐQO™S74ď!rl B˥ɚ*# %!2!N0r(ϲ˰d֯ߦ!хL{ #O՝N9dXtG%KcZS]Wdz @ f: >˥ПiYtdC˫ڡAJ#-;]aƅye2sPwnʍ/̆~ k ڐӝQPt#)z w x >v yљݓ.6pTSv u q vz>L/~ &ؘXڜ, b  k\-\b |J֞}ӝқXE,w}wzO&y"/rߎȑVv{ӛS A&Dp S ~ 1BX~ԟ% r .(Le} y syjhyҞ  mWͷFMڳ1*.<{3qyKfPTHxe6By~hϻm֠čqԁ~z d d Wf=jFՙ2Řmyavj@=| |fǚKrcuv]ΧmI֖5   =Q~ojy } <RKJKE/gI~ z^|'kI0$M b e :I &u݉  ]֝R lLBΦ N}2RmRojB6_N TP1W `җz :% B s ҝ}Jkr6P;"ƚř՜ .݂Ж)=J˩pۘ"fǤέ'ٷ\'?CAvY' ,u܊P<V˜$ؓrFf;-ٟ!-cޣQWxhf=ws p 7 sRȚ8[4ɟ5)#6m'Х;pό]}o?nޜšB)V||1TM˥)TT٦:®] ?LU'ϴѩj?A٥~±xx$ 3 > vC hk#S g { 0 TkΦ/ IBi ͞ ޽ŬJ, (#<Ӊ_U +ÓTk =~ U?hߔŗ<^vCٝ (E?j%fvf/ʢʥ9cܲ Brq{P ?Q%{ǍuȖ͢'yQQ? ~7[F-ۗyޠʄC̔ÔjԙpΜb!QףڟqQ ܟ--{~k "s  eM]mݡrY?~ ȡơvuʈIwAj&- S܃ !g )ը8rngՉ-ܚr#K~  Uߣx'[:M)c߲?_Ւ`J  ' Ѱ_D4Ÿ Ź9a[o*@ޡ!5eN{trUՄKnj$l ĆĘC,Fυ AbXxјU<} Sߝn/ʒr{Pof"Ϥ3֠g!XNݘb}f=q~bأ]#s٩ UmrlÙN#",ڊ!ȕƣ4fn_Yơ !g"jzѤ{%ڌlO_xlt҉Yb&¤o)Ĭݪz,Yޡ˟0֘L{b%#֑?ϙ9T`#W""m}/ʏ5NMx:u  v ̡ovѧ˛U @ı }T٦Q}ÌMRV[ bY{[b*Df*ʩȘ{c ͻ"& ƷrAj wΎ 1ю X|V/N9O2U[5"$- ٛB .Ku=7-ҡoglem\j"\t%XrĭMKZ Ϣ¥"{ٞ\r\>Sݑ'SrBX) kjלOץ!$-׫Rn? y ;n|>=kd:ԫ6|+NKh-ԞTwǜpiÞǀJԄ5&ƋO̕u#\<  !"3!ɬܪРkWґ<}w`_x ݗӢwn̥͟n}DW,Tձ߬ sz}u B{ eG/zqs f!&:1BXTiɞT0 @p8#?3 ig 1 $ ܌ =  NjΊy1f,Üe\ Мg™ 7k'saqq RWkSњ2$ʢhyU} c͞d50GtC9kw'"5$UI` kȑapa׬C72U̟ -֩ЯuMH}:n^w o U zCY} (kb T 9Lĥ=xU`ܓz{1+Ayo1} v jw ۘ!j ~ } O0\ ߣ[& av#}_Sɭ+FQY H,B#eő <Ʌ| 0lXyȤ"z#̌ ɪJ9a۞L$;>.+ֈ̄lp = S E o M;   ( ( w & eo -Ow #SŚ&V u 0I'A z=Iptq͟rWy?+9o:aǤMVɣşhYԦk6ni kѪ&ޓ3PIPpR ɨHŰ B$x z  Ȧlql1R@Q :թ V#@{p7P̪v6Ҥ_ؚl6 ~ux B+ȖK ȟ !E) رѤnkNJ9q~  \V? )  ֕!J   Đ٢k^;=Zpuɂ   ̂ ~  P~{b) Á 4    }Ï @ [  ؛S{ rQϛt%|4W3 : ם hhPӪݬ*7ԝά  `ʥ|fP z5< z#ӚʧNo/mAϬr"ݞn<u%" r,ƩϤ1S$ tcAƢ)(&t@1?۫Kѝ8f??YͰLtyt ʠCdãa1>$Ypjİ^>(bOAqٗGyV=qne͜] 5   _k q: ? 3w'QVh̼ҩ`sj H|    B } ~%}}}#   ӂ ЀG2W P ݕ(*n Gڔ >syT~ِP Ę@## Ҡ%ʢҖۋ>^ʬŧd;uȡʥpI£#e&q5 @ "*[(  yƜ֢FKaFx*TťΩ PӪ̧g /+Nإ٩WαƣԌޚ.ŬZvhJ2iMȫjΨ'`uK%n]ܵӭn{حڰΥ ӣԗޗqв0E'V5ݞ}2Zõ% m *ƥ1cl   ҵT4Awq p39~ z  K ]  / [#~ }G}|} B 0 8ـ+~|~Ӏ3   PIV9 &ь6#S 5w֎Ǣܲϟv @ RXtmH # "ۧ§ؔ]:V-פGC<Iݒfbǒ#ʗHIԛ!J%kȧߧۭ!EK&ߪy4|]b_iך~>qHRs$ۨԫ3%9&Π ےv +<!BV Gܟ?̫tP", µϯ5H +[;آińM=ҖܜU?p-Vجɶ%9:{  ߫.&2PR k WG|ۚ^3rQym{À  у r ~}P}~Yr~"߅؊n @ߔaE XŲjP#v  `  7ϵek] ( Ý6ϟ5= \ ح rb}59ì&c˨,4<Hl*OF! !Xʼn^ΞǪ/DƧ! 5U Z..T$K $ krwx8Tߏ 7wf C  8 (Zߣ   VR,GƓI4Iڟ£DZ! I(ߠܖLXɟ# l XˌnҞg~~ÒN TQܖDC[.Mɯr]K<  ^-{Y9 FHMۚxu7Qw 3~ ]~Ł  ) ߀€} A~~]h̀Gzv]}6jMK xk}~ x ,     #  p`ʥ ȠUq7F<eAp Ǭ Qa/TyAږ Mѯ˯ Z98ڕ vw By j8%R<s2ɦߛC!~ G̢1 P* \  L"!  l iL\ Ѫ   ŔLt™FDsL{ l%6v͟.#>a  ؃{$y?c2_ uӘ8 h;ϟ[D R YvZϜ!L%{h{mn -|A  0ր,~ʀ7~ ;@ * ~|}M  ӆ$˝ҌJ đ) ( I  ֑ 0 DΨF׶n j~Y\EĦQ m~$ͩFݥߟQP$f)UK~P׫ױRӨsէjeƕەƙt pv ѐ ʦw !٥{OإʟFf˟[~_}&q '  !*!c bߪz LНۢ>6!~O̜s{%U }% BIfoa7>Iʛ%PX~<|}9  M ֋ԗQ?ۅ 's]ޠ-N7dVEk gɤ R b A<_Nxʤ&v}F   fL(v C {}a3In  S ˀ  ! ) ~ԋs•1W ܒOkD$8\    7  ƹ< $|^mx q}Ϡ&EVȓ "ʵU"I e`- w iKܧ4W֣K3=b؜jy Lu J2ĭ0i]ơp`#k˯~ *;" êO)]9Je 4ӢΤ| I >4vΨQw{PՌ0v t 1Ɔ۔܁UR +Ę^d 5<ޠŠБrϋ} ~  Ŕ =!S 4Ճߜx{ȭ 6ָy|ܖ AlVT'x  i١ӯʹ |IGz  |i2.0O~  € ԁ7  ɀ _~I|{j> wv ~~   C   ~zXN0S  ʕ SK   " ρ-g }x F:H oy* mMۙޭw ٣#r`Ƨ X.<ܥҨͪbhUʃƊ |өkMΣ͠ס; ,= z\veZr.a %Ǯ{^Ş~ ԯt%QMiF8ʘ<<ݍĶPج=QρȜLObMےחǎKt"3\ʙӚ"1ĉX3ƝX!`IuЗK M qͬ˩)h4|ރ ɞܝ5mt ٓ a ^ K߻!Rak]P4  xx}}})_|} T~ a   8 "}~ր ۂ t.Z YT ] || Ѓd*i )`S ^/ՐI  ȁ  ~yPQjkĘpLll? <X؞'^DŻ Щ1Pơ¡7;| OUTTǔ؞AkW KИbuү0_߰6P V O/i Rr.\ e[n( + / Pޠ '~: ƖL]rЏLdO;D &Fka&ݶ$ߢĒt3v)kΡg$ 5ʄȗs| J   V-  Ĝ Ҥ P /3ktx FӁwZxjy}}P~~B~C# ށ   ~  V~ ` ݀ ~~a~ł X  {Ӏo~}|w!`̒܍ \\S y   Px w -uv%ƙ L #blΧסv~Ɩ<ʆ &0HK ž !֪,M#Y̗^~(<8|ێG٧ØiqVixW./`&S4!'N7 Q 8>' Z ɱY(N'§I:m  ! #! F#kcZٔܗ$ژͅې,% 14sE5{ιh6o ֪ŘГbCtmݔ>bOԘ' Ǥ:   ȩP 9Xwh{Vyyy~3~~ 8}$~~E}̀C  4    GV~b~' ˁ  I-~8ցO}~  1Ò<3" K Κ   D : + hqRAsšYAzԛK0ʍ֠ '$l ΧO  á+ "q ^"֔[*gB31iju[!s!y %*  MkggĜQάuOݦ 1   6ǛƙCi#<ǒނh֗хdo_t v ޓΦɳ{JՈsz m\HSbՃ "{ 'Ǫ Dh^F3İtKy.~ȍ kfnݯZ+O fϪ   Ŵ\p b  {|}{@|${|~|/qv n /~ €   Cnb|_ a; Y ~| ; ' OȞgŘ%$H; Yʟ f L!b' ӟ`f8T9^ەG|!Eեb,d'N۝ sd BmsΥ|ǭJ`hEj RQ5;\|ߦEM\ 9;F0c2> ]~|w2%z kɨx Ĭ  4d#:ח z+nm  m 1v˦řkdiQҕ. { ݷd 8IѰ)t~hݏ%Bv zuPS| Bn * -  N zdj0 C<  dzA{D|y}~#~x= } ~ x} z ]G Ղ  S}}GD%p~$~}m R&  0 0Mگ-9" ȭ ئ o1ƝڞǛeqD -!Y!Mch 5Ƴ1 2A @ܙXѥq j6!(!H{HѨ3ԝOy`۫sKTIeҝkJ&'d/ >p y ߏͨ  ޭ <!yɑ$0|ʂ?|Wn x=n |%•Ewߐ}!zAȉш3d*M%Ytބ ÓÑJv}P#֧})y V׈` ?wHڕs   S} Qv )  ˖ &}{n}i}}A~J  ~ׁ~z } 4  z~ J , ~}}3| ;~ 8 s}vI}Lwz l_O =*:P A   ť  j !   J T@< U͟ī  ל!"*!yj tFJ WF[ZLɰΰ-S#; # ̨L1:QUڊyצSίtٳw5^$qۡm 40ĠDz ^-`ŏڐt { ^M<h˧jj!{u|ˑMژڃ\a|vP#'G"~; 5zP_~fʡAd{?vm<sȀ c חY4ЭA ߝѣE Tx φ b@p ]{R~ 6_Ȧ  4=ׁ~A{|6   e ~ {|  \ } `_ q s~ ~A}y U| ={ I ~ ~ 4z pz vw.Z yJ  k ܟt.T   z ?E   ʫ STU  ЙQP\>nZ!# cxїr^(voɠ{ݫͧ_<z] ͮ ;R"J K  ժ]_iԡU@˞SHxPzuz#x!ɘt<гK76*ȵ6ծ\ģs'ˤjѤylg+Fͦ[:ԨfX,Y0`ږ~C!Ҁ xHɭxA9, DȈ@} j4/kè9 TA WKu2@ Zea 4O*  {  7lUϥ  G  7Ђt~y{[{|l~   ~   o  ~P V~ހ }7~~ Ay | I| z } V|Hz 3}\lC^ʒ?}dyqߛ9 U ԧ * ! pيk6)fYޢ@Ury" "oʙdw7""d( ǪvQXb#!!.!EXn&˟Ţ+ |( K0iu67̪IoK`PU@  PqpެXϢXZ+R"OͰϮWĜ͓#ta|V{ƪ̸bokRŕ A;o-ϩ&[<4O }üUiTj™ a K!(?2͗̚qG  DםW ={ ߀ W ڗ֦% ͟ ̏ j~ ƀ2[|}}{.} ~ .~  z 8  ܀ k } ~~}] ~ }z ~ w} z | S} ~{ ~ քG -C?W=mN*)Yfu hԓP6nHkG3s  3֓0ϤXg0XǪO̧Κ/d E ܰS"s =Pj 5U*qxe I wĢɚ.J&UH2˪ޱc ̣ zհfIKM# ճ,D اQ!fmUpV T´׳>DâH9Irޣ ˵y1aUĒÕF)4$ֳ̰ ȨOC6.;3\ \<FXڹ{  %| ӎ ńn \r Q J # "}~$;|mwdz {}l ~ F  ~ ~ ~~ ~ } J Gs&~ } {} ~~}A~  <h uz Udѓ T<IX_m@yj#EbA~C]+¡p~ ^ 7x?F®ZuyDAQԖڶIif0џC=# j ?:}{ yQ[g!1I@Μ:אG{֤Ʋݬޫ;[q{5(*ZcIkPƞR<ݸ޻O$|_Er_@ %)Y :  H{ | ~ ς  }}i צ CY K A |#{ ^2~zjvx C~ } ~ }}~ ~~~{ y 5} ~5u ׀ `~~ i} ʀ+; ~  rqن $ ԥ  ~BkCx q HͯxѦf5MhW {i~Ԙiժhώb3(Yk!z ]Ƥ٨K6 .̧#a`|)"j#ٶ 0 }} ٛgSkG 9֍~  {  9;Κ,\ Wʥ'йnS6D$U !A~ٙE` -Ơт x86ҔǢ`O?m" a/Ԗ&&GػڱE d τ | | x{~~  ) $ ( ԥ  a I   E | { *} j}6y yL z|} x~j~}}D}}z } }Q~8H C YC}~~ } Yf} j} | f>l  Ĕ < " j u   ɮ ٻbIߕ[rCz׮^GYۙѐ ghH| v ~܍{*ܛSZ, ]N,+I @os_"e4ڢ'ªHg%Z ^_2: # Ö]Y4ܠC)^Ў 6c |E֤ ͇ԌLy ~ ,6~"~h‰ۖĘPʝ^! ͙k|2yAG[Ԏ%ؚ2 d z=l݋<    3 w-; G" j R 71} e@ -|~p~  { }i pe    *   = Ў ݂  x z yz{L{|C|A}-}(x{8|}p}K}   ~~  x Vz ~Gs~ 0Ўm  3 t < gk ґ­ q]cV< \2^ 660'uH&@|  Rhf֑˝9fϲ!k"_| Jgɲuvٖ(q- $,#߯ VsS`o9QvVp j:AK9<S v8:ڸ'  Տf|ӓ H} y|rנ ʍ^ {{J&fx [ , FyʍoN[ \̑,{C7| z |  KH : ֖ ћ  ž " 2| | x z ~~w0ww9yvxwwR{~~%|*~ ~~~~y~|Հ 1| {~A+y  bX & I ێ Տ ~ v  I` &ҡnA - | ||"u v Ay5Ѧiɗ6ӜQ Мǔ.jW ԝd߰Q գWnd ʞSN=Dݒ([/gߚP] !"#ݳ!TݑpQ$j$ވ2QRŒh B T3`f L((cRq*4   } Or+@ YE|$l ؃||aF?ܓĝמܐYHҗ0*͋ڂ 5 | Ѩ _CӃW-p  Pr u h .v  ϊҙ+҂P { s{  ƀ     Ě /զ <- Y _} ^v x x J{zx yvxv{tvuJv~~рzT5݀|^z}~~( ~{ }e=@ʂ= Z e c ny σ   {  >@ݙx-bj{s { u \z-ŖϕڙNG˰&=@;?Z%'MDk9”%ӚgܡM`Myʥ?,RsR<9  ߝG2Rlʌg_"ʰɖAXԮխůЮn >֗gƙcDwwgf>F2mޜPғЌrF۬{ r s|Œ  py{(Y    t ]{ |$yu5 E5ҙʗ ~~€ d Y / ȗ  p Υ  $  | t  w `{{vz +w x vs?ot Aqv=~oW~)~}~z}{}}~/~3|i}~ ?~} ~\ӡ' ؂ t |  ք [̚ t rԚђ݉ŖIVz<Hnit[} 8~ /"Ԙ&9^[K_x]r#}(o2ƣAUU__?֘)v˦4TkB:CutKRεp?4Bl. `̤A)ƪ4[y=k`ڣgJ›&u1*4+ 0}8Z2~XttdO<<.H(Њ  Ԉ # a KM@h  ā   %  Q  q › p  :ϕ 1 8 | |-}{y v utnmlpr\y { X7x~ n~m|N|}7{|}&}~~~~3}1}NI n  9x }s   В \}h-Y  1_MLߖ͖ҝ"mک-:R͢>wu @pJn w } yNmѤ˥Aʮm3lѢcNת\qIFRj{ ** `>ސM8ך!X)8֯ŭt eɮX iN\Zn_2dsCƏ_S xͫ;ʼvB,DQ̯E å *k(QD~jڪ6Ϋl$ciήMٚ 6  Œ  "`8~  3 L o / : /  Ԟi  rQ  * ~} .{{{tyr r qNmkkpu=x~&~e}}EzwG{ yius|L,~Ā ̃g~7 T#z}{ >e s  3    . ʔtY ֩DYϡ ߑyϣ0b! ڱ+e(uآ4ͤ|0 ~ up s yʞ3w[.DƧ˭m̒qѠͦL"ԝœG"fԠMa) #!,M J*٘z>A&̬7I%ENL՟ )דmjw ńܘvҥCns8 z X}<ٸQD=R* E˫X_S)0;נ$VĢ*( ހ Bɐ8Ҝ Ez { }   d  =  ,q  ы  v K{ `w yzywomYy zϚ Y Ev jp PyxxqVˑ <iʇޔJ<"ˢxЀ)rFH:ڟU[uIǦڛr Ar wN@  $ Yݥ~٣or-x ǂ ` !h0Ό/±I|jx^ԤXB:@۠b1, U<g2q̠/~-QߣRW`pO-.Ĵ`׌S x&)Gr n jy | &vڛ{5|RyZ^!\y{ Q =  v} ^  q   } w{ dx ӛX D U؇ J ׋  -  r o eh h oGm npQoplnqrs ux x v xtu]uvvsp feilgi0kmq .w xw3z)|a~b ў  v ?}Ӂsr X  <HN}A|   ؑ}YzA]qW/HӃ=5 Z{|:{[=xӕɨ{u v 3w+ ?~{auu'{{bKޝ;9 d Fl˄ƒ;`b)GگߠCq3æԥ-ysƠHW $8 Xw$QFH¦ 3" ;nT~ `(̈r<g<1ҟ٩mt 2v   9:B y :z  l CӒvWhx_#<   LJ ^ 4 }V}  ?  3 P~ z m J# G  X M 0 Z { x j Ke c i j mk\lqttpqt8tsuwvuqp qutlg'mZn f[ebOvu]tp=}[8҂g }  p W U I ~7> QpA ͂uks ^t2ˌquщ  -w*އ‡`:{!w c}g?}B?~I5_/`ue$ 9 h:čÅ|uwA#ܝy 6z A R zsȱAn~֌ 4`ޮ ؅ ٖ٧tR=/' L(cA$:D`)ԯQLz͞JzfFp z zӭTS\Ӑ 2 7c.dX} hIɎt u'nw ~ Oy .<Ј~ ȃ |  ͙ e u  #  ̋ / i t h/ce l k m lnl-ppqOws"s*swv vuv/tanvotu|qk)gsq/ehYf{o RvW3ẂE  ͗ 0   ߡi} ѐ Gټdma < gT ۥ U^xމfTGx   /U<ΞJDv :Îޕ$s.Ɇ'ۦ{֋#P4֣`HeUȆۣ6@̍R\=3KإÝ ֗t w  Fa?#¦3`wG:jz S :٠J5%45 joN9)C   #CQ3w 5y y@4s0# ֌~x {  B~ v 6 ǖ   )  J҇ t )idh km(m l$mnoqWy=xjsr w:yHut7u>pntwyfnll dmv7pygqi}ask p݅  -Ԇ ̓ ˤ٤ܨ+{Uޱ   2ɵi fn>dcÙӘz Hݞ4@aޅ6i O%"MP+޴ $AJ۔p[ “E7Xx əhHJzvbAvD cWъ܍/ٗ/R=zFٸ{֞z*peI7 xnˁyorũe o |   4 0%ۥJ~ezvH> ;w! y1~l ?gO+PUݒLyx k   Z  c    ce  E Ii[} ko h h Ij +pun bnTn Mf nisy|o q x#ws Ct{upuz |%xawcuJu_inFt@o.ghjnmv!ˉd2UؐJCΩFak  x 2pYZ4hǤ ?v:.Ȅч]w6frC?9fl K̍.xh*v&DWMOލ6д  (Nz׈d[ng.NjF:|Ɩwۘe!جRV d:ϔqBߑߓ;Ol!0z2:~l us tو ׋݀K@`7T1|s r y ~m)ÓC gT]ti :gr6_|5 ǀ[͏R QՑ0w \/ K=Е$!  RB 4 H  u ^o g m Nm o oq9r rAr{EzImn uxwwv|t { *~ ~-}H} w}?jCnmqOo(o[ovl ~j0   Cz\R+Ll+e2|ِ //S |.U[`}.~y {z Ç5Ֆ:R]7<  .  Ǟ!*̐OA؛D;mC)A A  ʀ} y T.#٥:|v3UC?^,ʳݯ9m({1zCo׮WkǙx w | Ѧ Nbz x [;(W?X@g|o n | Rzav WtFy Ǔz}v~xprtx} z{}= ] f BלƔz I}yZ$8}Q߈}C 7  b  ~ r m j m os wq@yx4~6xqo w xGyv|xqw{  ă}~Ѐ {qipqnjsrwz xy  i  0ݍ Dx_aё z ^ ͔A ƙ^ ѐ->Llwo Gn ^߁ AsJbza%V9z x >x dߊ͏`wE MԚ~sK3}dўx!J / ã Rtxx:v y# AeymfةϜ]7mm9YL 2;v p٧yJ%Ԯ#tXr-}~ d ;i>̈NZ(OɜfIw/9UW! X ’ ؇ ޗ2w|  W} ʆv~Sgj uŒْ B  ~ ˜p ǟKÙ|ߍ v }  w N ҋ ? }x 8p m j n -o qx\K ~l}|s r tv x x  ywy Qz pM~} ~&yxaz%uu6p4cnuy { x ~n xAB \t 1yZ$~s U fj`l  _ >  Ք Z ` Dv * $4c#"ʈ|l rbvו Y Ք r Dqzބ| yr r s Xv*~NXn qy~i96 ˅Ei}lçZe'% ,(to (v:|s@!ؘ |o !rYOO#β~}Q#3'$@ōΓhn, ՋЪ>Ӟܱ(U Xdsei } . O~  ]|    / ] L }ywqx  7 7՘{a$vwzՒ  l  . ! m Ml ti j n o xہc~ujTq,v _w x 0{f{y{ ^~}|qopvtqhkqz.} &s ?k yEw|MRi t r ka o ˧EDvep t Qif oz`tC_ ň2uË݀V̘f}v|Fq v|~}v q s }V٠y g c k r{ j Ib#  y  b# GW  n ^oڀ!͠Ei}g&)nӢGdޤЮAfމ:r!#S# !ߕ-ӑ];be~-pi҃<*;&,k/סA͊ +  ~ 4 |@s=| z ݯ ҹ Ly } # [ ^š : 1ؔ wqfs[ e  r}5t g~  Nͦ]8 o y=3  z? 6 PqXx!١kf=73\vzZq|`9 ҍ ^3~ r Ah q ōcϹA՟|}x v  #3^ ̀  }MwL kQ͈0L?[|k[(gfE=MG  p̚ȣW=ǝ̎5ס uˀ>'MBqM}' ,Ô4Dd ^z~0 Q ]3v i Ǖ֔ "lz o ̕ vƆ y" ǚq] 1jǜL[&Bjb |r }  2 0 F s k i 0k nHq<{ Os}|Ltuoq_uztvzZ}[{f}x}| ~c{Czt^tuuqArPx *} z y i =f !} 3 z)eiwà#Q  2uA|  2m sUR J 8!{ |N|Fޢג`}bϏ)#| TG% o h 1ӬĥsV(AWP| Ax Vբ‡{*ԡӎې^Ώ () @*-$NδUE {j ¦C9 ;TabCQ} Ϫ`Y`wFmvDbãWbӒ%v hutvt` Ҁ u pĊ & 8rx 0  f~l~dؔ0ȝ9לҕ,k'c~ & | $ 0  ~s k o no]Vvryy y*vs v   N ʆ‚}@χЉЌ6_yM2G aX}x  5 1 ` А   rp 8n Cn 5olr|f~~~+}_{ sios-t )v s rAvw2z y Nx { x w~zhwlDnty5~ x rs vl rՂQ? X`B d(2 v st  ̥1ϣZRZǠ b / N|  ׄ ,I M 9lOmߚAd}[} ~|}}s~szωz   y 1q z ٙNO4O}Y|@: H9Ӡn \?=VH٧8~Y;\ hdШb:T}xV۪@ҩdLӌN8RbY>EĚ 4x  hߗe Os }y> \ J ܘ ׈c#™JG ω w 2 \ rD.E=> 6kyWUvow ڈ o -P jq l i mot~ ~| v TmAk Gn esvs q nZqtw y HyzywEyzrsy~ \HsioEd Pc qs[ m <wNm ; Qz y 0ٗ ̠oݥ .WfΖU7K 5<K {   ~  < v?U׏sFP9ȜƎn ݨjz s {yv |,~~sfi q %t ~s } +m1t x Xtʎ lo@>v0,0P x b7Ox  'njhfȫɪ1E^DaQLīݫƨP?$Зe'߬p@ԢmzԢ8ߩ3b; c , —  Ŗ Ɣ '֓Ġi d]~GC*Ѐʆ^5ԅJGԌl-X'lQUOt  É  t i n}nou\O1|{w n k k popm!niklSr p )u|xxXy}?}y~ w uia>SV __~x  Զ%k~Ryȥ.lӏ) Nj ;N *>;6 כ1w v `)9zdO߰҈DЩ1Bzi>Gw%j i sv v ѩKQy:MQVb"đ$߹& } e7@N;[j0ڧo/{b1ks eͭ«2RugӟAm#עd||m}{z ' X  2 ? A̘Δ1Ɲ} ԊۏRJ%튅ﲃ@//$FBiRZtAo G ܆ ˊ  E  s k @m p Wl$t ~~zu k|lprk kkigk_mp+k #o su{hy|}~~ ~rj8X+N1N-OP BT Uxne"fF%v|ڠ:Ȝ%\  f -B ϜԨ"eOޑqs&dut4  2*ƗǞ+Z&x#~ EOsŪ9|z6!֚L*u%ӳ^׮qBq>LӇEΣ=34"{y~Yݤåϟqҩ?%1­[Ylå~1؏^~3-Kܝ~ًN p m)~ }} x L { J75 o֖fQ<͍ш Z읃Rt ~8zWZ٢b;mWZr\s  '  | m hi o k s' }}xq i5n[qomkFef h3j)j bm o k Cm lq^v|OywyZvihXNMiLQHJ LFU V u  ǩBŢlݫQE< Q  !tܮʫ dѯ<qr Ο%E IS;Q#8LW X=ڐ{O.ޜ(N c'HܢߘMm ͜ްL*tscLԢKF£2oѣ'ͩ n ۬ t!!ʧЧƢQfOxyg|_C x}{0W(3םx l}|r{ ' Cߥ%f V)QwߎXe<oJut h h Lhkfyd 7}&}lZapӂ ϊ f    o  U} k h p!j s|mm|tn f mn uvmfhPd c ig .gi jmll j j ]ruvwxTu[{N6KNiMoMLLdIL hQ YV ^h "u} TѝVy7˖ 0Ǥ9&} Ĝ ݚiqexݧ{ehH w}(R'Z-ǡ zrP[ BܓHZr֑~ݒpjXp ix_s&|7t1:L8}.^ʛJ!@fbCv#w˜DСͪͧ"!>*tzʌƕEץʬ u0qv~ 1~sC|:)e˜ {  w }χ ¥Z Ĝ joDqk1 U}C}|Qq저c }~5s p ^ ] R TdNV~LKu=h`X\fzwH   / ^ ͅ  m h [mmqtypl m QomsWn(f c c ag i kg i h k enrvorvCws\OHJJLLIVJMK N 'R]M_Jב X  I orfu , zŷ0UJQ#k X)ݩ4XCuƤs.ݣP,{ W  78ڱ*X ͍ \gBڳ+"  ʳ׫9Ȟƥ:tOѥؚҪٰޣnd  Ԑ*  `#A̝S2LzGvR  ˓}H!K׊zĄ \ ~ n~|t~lsEm ugjʖg£x a {u~ g Q Z~p%xq`qq xr_y4w+y靁y ]n c [ \T RPL P U~f;ݓfTv2[XVWm[k܈  Ђ 7 Ȇ ۅ O Gt f sj ulrr yIy qk n^ommm3cekip2mmDoonJm hpru[zxNtayPFMbKoKECJPPM{P XEX_fu*ϔu + ƖؚY٤ŏ,b:xe?)U.6" 3zc ԩgJ!.&zuIv x  } țt!7yɲ/3ҵeتӏv .:EPէr#0&dXQߥ8k |əVdpn7)U~- acy^!o"`phϡZDnXh w:C}TwqvciZޝy   v }'  BpXX&rkyouY{_"V\ R WNZVibkqT .Q J Q%OR NTM `K Sx xhSPT +Q T mS bY p ރ ܃ +  w te j n  k Io s hp t j  l k Yq,r\pmliiLk/ocoNolWkooowx6w~%z|zzfTHIHIDBI!NNKPTQ lU nTZ^Yhnэ n   '  ܝ7%ND Ge{rLjAFѷͶ "6aܨ5S,zyPu ŜTu=A֪q| 5[]6lΠw@-tG8ˤLt ̩kț|I ے˗ڤ8enw {Ǘp`Ք AY- «g~YݖoVgw4,t~ljY}-mfT  %ăn͙'g#}ZSV T AN OM N JHLMOcPP`R"NKNOOoQ/QJNAP ^{4%Ԓ<8}aTVVU hU S i " S = ֆ X ł s /i j n k q k `n nk j ,j monoqjf@hikle_ nukqw|:y|vIsta%RFDxFGH)FCJNOPNS WmXVVkV U Ywku~D/c N ͨ'Mѕ ɥF-    eCR$ ͵ ~~ T o  NAƫ̩q };% ݞ`͜ (~ j| ʀ 6ҫ.jcQ94"ar xVH66ŝ͏~ ˝Л²ި=@$؇яxT~ڋ~߁6` e ϟØ `&(04|b UZGH [M(P RN.NLK%HOL]LIJMN:PLL I M}RSjW\qtٔgC]YtXXoW1TR@`y= A   ܀ 4~ q g h lm q vm ilmll /m In l oqNkkkhkjpndps>vduxp|x]{Rq=fX"PE=@CFFgGDDIMPMQ\PUVVVUR UU5\V| ʏМ3t1$w5 ;ĩT̮.I+ӱ|d}  Z gvh ~ !]}!BП!;naN9zqөҬ%au{u34=5Jz|§3H#QñұĨ![w-ݢy kxG{ȇ!'g~}R K 4 M #jTѝWZY/}?d] DN NK JML)NPQRLMMO&NK9OUIM!N(N ~QQRdTTUmZ_bTqM8~ji5]]   Q{ j|$>ү׵##{)tg Q MMO(LNZOuO"Q#PQQQSURQM^R5TSGTVVXTXXUiV:T|QWOLLX4nubX]bI`Z,XVT9XsU` v|x&x Qr gp l m 0n o prn p[o(n l ~l rEt?ql 6o o t{wuuABHNOKALONNMQtS\VZZVwVQXUXVWZ~Y;_jxYmyƅϓڮwĦ;;(O@ϲFYf} ثݦ8ܬ1^ 0 "њΖ̝ q tt]ʭ\'ƖǶu_ yL|F_" O ͧڤx\#;p s y \¥ЩGժj^x| p8B  a!7}Up 1 ^˭؝ fHPcթБ}zÊ  @*s;5~uyF~}'DG B||i(٩i ϊwTnZPIL IkMLOQMQROQARUW UEUDTVUHTTXVgWZ+V XrVOUlS TpOIMzEE=TKm@eZbb8\WTSTT Z nkv rq\l o i zg l jo no lp{m em m p #k np]sm  l l 3p+w.ax}x3yurAk Y WU6]DY]zaa`PQIX(VkV4VTVKUT:V TRMqK~A<==E[=d;Ya}c]JZ6TT VSWc:mn n=ih k Ek l f cj Zg l &k j k m qIsDro  n Zp rtDw\|OzsVnQfX XmVYXZ]a]7^OEFLKLM5M\O-KL P$R8T\`^],X~WLVYBX`XiWYYohz30z Ï [rɰ>oֹ,7_ Fe,#ڪ@sFvF:ְNP}3gtʮH4Vӑέ.  ϗڠ܃,xvHtߩ; د]SժUhd=^-W єג 2'_=ЙDȚx٩4!mH  | dӔw .[M̫~; Ѝlh *Y XL NxQU3SyUHV]UX5YXWNX8VAVVWWW|WV*VlWV(UVVVU5UTS LH?=3:<Hk)^Y!`Fe^JYCU/RTvTXT]gn p m nRL~I@;m?>pDZZ\u_c_Z%UTV&VUU|aRk s$pn Vn Lm q Gn o gn n _g gi r o sp m pnGmoljn`p mi^Z*YZ1YXZZZ6X]5^js\O:JCLNMQNLORT2XY|W VUIUXZb\[XX]/\]ag6o Yc<  .f$Ф&0g2(y';t3<ɤ]~;z:Ϥg{:5ĨHˠѨ   U 7 D 1[GV ׎ƕ,٩ܗu#ǥ?f/ǧ ͔cf\ZZ mʉCYc  b%7=yh~{}7pFy  4%IjMzncW c u}s]XZSlR^SVXxUqWVX?VfVHVVXXWU W5W|X{U V VVUVBUW6VVVSRYMJHCEH<SZ~^mb,b`ZUUwUVRWZ$^lDo (m o Gm bo Wp o Yv zq[k {j ;p +m hk Lp l k o Yknmkkne`3YW?Y`j[K8JM#NNOOSuVYXOV;T,VjYdWY[Zt^^]^\[_ajCs } Э"3Ǥ_&қ"#TaD{\ Ϩ͓aз57Ca-Xc/x|Hݯ! Uy@bҶ=|Y/ vˢ֬L>حp"!p ҕl| &E  x1eC#9"'_~5ō2|xo r S +`>^V(] UYklhcSDSpTSUW]]NW>WYVUVW Y WVVWXUSnXWHVV~UXVV&XV8S0MM%MKL7IHNQ`-`e&d_[NUSVTUVYd6m Go 2j o ~n o r  "ln 6vu g$k on oo o .n XlkhiVidYU S4YY\bXXWZ WxXZ0ZfZX'XzaXP-LMMMGOPWPUV XXZVT#W.WX[^`]^p_V`_aem!y|,#~N ;FǞd,а ĚkE=g6t*ٲPܗ}: =lRt-eǝGdв QsuR,UO!= ku8zz$}6}r .zVz-̓=IV¤h Ԋ$@N J]{x b{PFЛ1 }|YZ\bSVT!NUVVVoVX3YbVW{VWyUV]TWWS W4UUSVVU[UVPVYX"W VWQPxMOJOPZYZOR2SaCbbb:_CZUWWVW)TTaoqn o nho p }ӡr n Z"u xl o km to njfwk jf` XTnSVWj][YYXYWVAX{XUTRWmWV:TKNOXQR;XBW U W V DU @TW,WXX_?_a^Y_``^_Kd1frvtx UzQq Ue.9ޅ]ɤiٔzȷe: X!#^]͒4j߬$Ù̚S05"T!p^ב,!n}s8!@57=ή:`Ӣ1z dq O} Є @{~|Θdܘ*$EΠ%E͆Кm!gd!a tݡ_ p"iiY R{PQ RU?W-TW8UU T UUW_VW UV4VGWT SU U U V VV?SVUVW`XVTSUSQO QTXC\ X`ccd_a7ZVTUDWWEUxSW[i6p 7m n nl l i n}f p Ok ΃s l m n n m l lkj~hd[xTT2S\VTZ]\[]YQV*UbWuWIY9TTXWvXYMLyI 2O S6WVnWYWW,VYWjWWUYZatc]Y ZO[XN`egdm5l ]&vڡU3܌}u's ю|Oӧr632b4!G #I O "٭!c !?{c~Ӝ!Σ/Ùh; !.ƚʟő *$,DUM5-63*]~XȮAd ( <G C~  –' ڦX֙s" ls  Fت^K֞6͓טL ̉fџΣҥa ~tiaperWRT(QUWVQUEV#UTUURVWVTVwUW [)ZYXX[V6W['XWTXWW:ZT(QK O RV8UWWV3XkVUVPXeYblzf^]_ ^x]]_cZelhfv 0 "LζHD|{{tfkcˠפݪͤ(g u#"W"̮%!Ԫ!L| j} m.ɑ3F2E֦8s`8;Λ,{% A+`ƨۢ~ؘ: |5_:kޡMЛpZеԵVd܀{{ ~  P'kݨF$oKAc ӏwKzYeWOWXVUSwU7VV9VUUToTUUVAVW?VYVW$VeUU T U ]U rV ZUU&UV UVVVVVW"WfVUQU V XPZceah` [V|TUW]GYSUtT[mc>k n m qm wk }k j p i m h ohj khjk um l l ]n m Qg^WRQTpWSTVWO\XYWmTWKYjXjY0WYi[X Y.WJUfO"SWX|UWgVW|WPVWWJWXZbc^[v\{_8]/[^adixK  % @"CM L2NլkMڨ' UŬi̪wuƞ-2` j1d,MAWC9:WX!Z  tdВ֑1/0#!-߬TSs( S /ΰߴ@2ҏ}qlOU˕2ˢG ֚lU Q}NUIUmU R aR TWWlVUUVVxUV{V}UYVW}U-WVkVGVV W VW\WWVS U TV UUUTUVV[VVUVfW\`gf2h a^pWWX|\kYmW0UQY_kko  h l |l n{jn Fo _j n}k en n r _p vrj gk o h f4TR#R{T'UUUUUTTLYY8XjZVXUUXXZZWZ6UpU~VvV VlVXWAXw[ WfW ,XXYJ]#^_^m`[JZ ]a^']`dzo r.x"h#A 1Ԩآ"]$\Ěܚ ˬ)<YG<d|X |A:  ѤٞМʥwcP7 PQ6)ma<f\jM"#!٦EC Հ!!$5iחٟp'9|) ;] Dde޳Ëz i Jw۠ȩѩЯԡEͦӠ(gV>Suamџʚ$Ǔ̜Ԥz #"SáӴٖܐ dhnv]k}z3*Ör}ŀ&x|# ’?/ǑVԘOGˋEڈ$7Yʚ% +֚sn^OL BO RRSR]PtPPSgVVWUhTwWbUUVW_ZjkGXCSeVqUU -W U!VVVVZ[YVVVUVV:VIUFT>TVVVT VeX^cX`aoam_\XUUVS=UVUUEZdd h f Adf 7ccVfhZhil .ql oi l j]i ^ WJCMUWZVUUTW R TWVpXZVqtqZR4RAb3l[hXXDYT W sV \V YYVUTGUVW Y9_a~`ZR]r]];\1X!WYY9[`ef V ˙uYAP~GتШɥzܜi٤'suء[܊T(#'ޑh  IY*%Uښ?ܛn_~~9χ^gy \2  vP4f#Ҡ֣Ŗܓ;}}ӈƔdMړC+{A΀fpU~K"K QPRIRR)POR\TXWCV-VDVUU ET VZVW\^XSU=U TOTnV=USvSWRXYbVU[U T ATWXSCPOUWVVVVW[`+`e``b4[XTWWUWTW(X[__`Z]QVJaX`Ec6lfvgFg hk %gX]ZCH Fc?MnWYVBTUVXWWkVVVX!Y]\[VUIW~V\xWIWX&WYV;WVUVVVTVwVVX,WZA^B\^\\m][YEXYWYGblgN ҧÃ} t kz _|{uyæsn*+Uvԟ&6-}jW"sK H єzQ]۝ݣY{E9At1 RDx [~zǞ)Kk8tܛp{f*Sʞ XwCJ̭}F|   ] ߜ4 LӞ"9dU1H=NQ:QP lQ zRQ?OO*SdV @V?V NV VUUW (U UVVAV X4W]UUUVsVV*UWXeVQVVViV~U mRU}W.ZUGQURXVWVW,WW^aa\`j^u[Z.WVWW%UMTV\\[\[SQMV{VYZ{`_]$_ d\WPBHDA|;>/KViXoW+RVu\0^\6TVWWW.YTlX WWSWCXWV%VYZX.VrW!VUVVUWvVWVVXbm`\b_Y[[XDX.XZj[a fihPu%>֋@s k nz~ yLx  5Ӝ۞"6њ1ǘpٗΔ^OlȞğ}&~x-5TJ"{|ĔQ<PΘ<u6|A_|a}4v߯ob ˓  ƞH~ݗ +^DC)v8dOPMOEP]RO 4Q ,QPOPT VSXUW ^W W T TWUV~VVW S TUDUWWrTV'TVXnVVVoVuT=V VUX^.RQ T V'VVYZWs[ud]_+[Y[NYVWWVU%WV5WWVNMFF&IOOQP{TNNFPbIZQLH[7=<JYS|TTTY]M`>XTSyTVjVSXTTXtX`V>XXXSXuZ8XYVVWUWVXWfWX6W[\b^Y,Z[8XV_UEVZ\bjx  =MǞk ۍQ w w z  2~DIh:yۦУ˨4 <J.ǣi%ŨZ4s/I.Ɠ<n.xޏot ƣ`MHLMr }ץܙ%=t|oĒޏ۔5WPÚseDƟ&ҌdQݑ 7

kIGHB{A"GVHX XV;WecwZ:QBSIRVWUfWWX@XXAXVWVV WXWUfUVhV%VVXYWXYXWWZc^VYZ`VY9Y^=]_]er o ύabߥ0‡|Lyvy{ Ltay2ɦ֦k.}N]~qg]X< בaæ՞҅y Hn -+qΨ{ ҧqZ~`@“ϚC–,f f1b nswlIԐͷPI |R! لb J̕ď)}xbMQP:QOqRS5T=NMkOPSV0WWX/V(URTVVXmWwVxT UUNRTxS UVVV-VT T nUSVY\VUXVXgfRW;TVX!WyVX4WXWY^ZZa`[WOV&Y1XUVRUuRTP-KH$EaENHtIhFG E@AD8?K@ @AaEAHE>GKyOUcG\RZXfw|W2PSUWVWWZ YYXfVV?V WWWZsWUS WWsUVV0XY(XXY[STXYMYZ[XZYsY^d\]eno} :>E>9nkwss5w  { { 0aB~| ίͩа'~#٥"~"ѱ qjS z Ԗq<֚= TӘݝ#).S8VmW!L rƃxuQّd~vx o 5ڒ X fؚ)|;v RvߗSގlRcSQQ[PPQPPLRjPNNT-VWWWW1VVAUlSUVX?V/VU5V5WmV~TT $TUUU"UUW _T UWaXVVUVqXmXXWTUXXVWWVSUVY XGZY__l\-YbX>YXYULVTTRrTRPMLUH FHmDGEBA:Dq?> GB?C,MwMSAa_`\_=kc^SSBIDHkBPUX*Y?XkTtTH\n[R=VRVXXZ[xZ"\[UUVVe[iW`XVZZXDWZ WW"VeVyUTVSRSWZZadZWVJXXQZK]fnHy J:/_КϕVǣk0˪ {}x8ٵݧn9 cEp?j ٗ' xG!`M{n۪ /#<W6#DssEت6O؋w U \f 4gى~ "|pZQ/PNRMPQ?RQP OP?NNQUTV SYZ3YCCC@?D{F5G ISRLXUVUWUT3U_nZYWXVXX*XY/Y[qXXWWXZkXYVZaY-X6XXVVVlTUV$U&OS7WY`]c$a\VVU,XY^blw :^E nߩtd}ͧBR>ҫ5_jٳv8DBӵ(?֙> íŮ,řۇ^4܎ٞYgd~ǨGX h>Ր'46uǜG۬8K|@ڰ{ pf]Qo~)xv =pAR iP HP NMN|RVU"TNNkOxR T V9YWUU/WXpZ;VV TXXTW(VVYXW&US V RWTlUV_WXWyXVT X,VUTUVXTYWdW$WYbWXZXVWVWhWYo]`^_Fa1[[TQUTcVRmRV'NSH?>?B<=@?G@_<C3HH[Ur[ZXV[XV&WBWT5Q}V[kXYUYTXz[Y,[ WRXXX#U>XoW:SUUXY^Y1WVTuUUVTRQSWVUZ-ebXV}WXY\v>R>;@ADKuOS'b[ZWJX1VWYQVVW[\[8[ZhXlYVzVU X^UVY WWWUUVZYgXTVwU]TWVTQySS|OSa[b"VUuU0XZ!\ZYhd $=PԨ=5*ct˲x ? iQ=eiNƴ nΫ_L\M 3 5O(d@&͗%[ŊZ]Ķ B;=$w ў0՟5 ,S5;h {kkrrt0YNMONcO@LNQzPONRP]RIUWYYWWZZ]#WTKTTUTQ7UJUfVVWVU TSTTTUU UYWUT NWVVVVVYYXVWWT X W.WHWX?V\XWXSYQcbkqlr_jW TnW YaUTTSNPEMA@T;AP@@?Z?>C>FC[elBfbxSUSUWWW~WUZT[YWsW,XvXSSSWy[^YYZ] XUXRlTUWZ~WS/W?UUZ\UHSPP&NV^cYUU\Y[\X]c]A~ϛ1rԯ:8߫OCaΪ9 γ"wͫ٬  ٨۩V t0&ܫܵݵQ )!ͦУ { 9 ZSZg5 ͅ  GHå;] |ۄ|oHաp"*ϒj&6_>qFʑ ,Z܋`ňc^QINNON3MlOOdPPRRKVUjXXXWWQYZfXU TSU$TV;TW'VV:XWTUS cU TU,UgUUVVvWdWEVTW[VWUR"UUbVHVVTVWWWUTW"Y-WV>WUrUUV TVWVUUuVWVY2_3f|wG`j_TQtTSUaVWQQNKCyAC@JAB C=EI@S|H#Ђu} u\E[\^L[]Z-ZWVhVVYWTrV.VZXVVXXWxW[ZXX&UnWWWXWW,V7VwUUJTTSYO\ ]Z!WVYWXZ>Y?W_^/b&bb; uzޣ`  *ޣɢĢ)X $ pGxK ]5lճ m !n!Kx!:x=K#=qfze۹][A-{v{ h ˥~9K,S}˖rAJ5ɟգ1AVЙ  {_PMH#KN;NOZKNNPTVWjU:UEXTY0XXUV6VXZ,\&WQUXX(VTURRUw [@ߦT&P٪a4  DO ϒWݞ Hߗ(i/ MU(Ta@exݳIR B{/3q2_U)c=iy:ѩVc^lQ Ҙ'd'݅v]N?N:N;LNNONOPSSHY>X!WWE[ WWWBUSRXZh^\TQlV UBUVUTTTFRRQTV?HaGDGSJHufYQTUvYUoZW0VKVRVWxVWZW'XWWuWYV4WVhTjT3X@WXgWVU SWZ.YWXUaP"KL T0_a dJ^] YY0VXWZ ]zZe[]`Zf_#7% PĘՙ?xv{ |s|\? Ա&!ÈÚȣ̬7k@ɤ0|ݯ $ ޡ:ҦN`ϝl|%Ȅ>y֘!$1./݁@U4lݟx>x$JϞǟ ߙeWr]hUK7KJLNNMM-PRZXVW#W-XZYIXmWWUSSWVWURRxRTTTQSPBOOSwUU U(TbUVHVUVVST]U(UVTpSVUV}TVbWW.WNVWYYWVjRW VTAZzZ^h\2V[QSUSTX{WH]YWRPrFi?<@>AE%DHoKPv paXdQUUXVXWUWUSW~[WOSTWWWT TZVSTVVZt^ \(XWY VT CVVWF\X2XQ9JQxV^]_\\[*WNWUTXuYV9V[l^"c_s &}|xҋڏÕwі}. _g!w1p?4Lq!K&oJ   կ!a4-Ϗj .NF}fݶqm: vc~}ɒ٨̩!j٦=:ז˙ ﲅwVOqLWYXgUiXXWU!VdVWSX[[ZZSVKTPV6U'UVV7WV+TTQZG;;F@CCEGQ]XjkIZXSTWoVWUWVHVYkRX)YWkTVV"V]VW 2X 8VV~V>YWWX`X[vXX|WW:T0VVYWY9TW8RNQrTx[]E\[Z\` YTT UXXZ>V[cb+_quקd~ s| ͍̋SLJ =^W¬muرbp sm е{! vQt s֊7 ՙ \͔NbgL~#e| .w~tܣyNJ7!~sâƢrV J ӋPc}-~@goPO,LLN$MMNMPTWW4UqW5WY [\XW+TUUUWXJVrU S.SNPQSXXPOYNYRT_XTU:UVV[V5TV#TTVSUW/UTUTUUY[)UT1UQUxY[YPVT UW,VW\_.[VWQT5UVXWVVWVU UWU OB<J:kABVBGH}W`uh^~ZZNXTT[UUTRWUU[T[pWUSTVVRVVWWQXWWWXgXXWWY'YWVVVXTNUTV}W][>Y'XXTTVX)Y1XY\ZchvݍydǀEuxw~@_"K:86kŦyɈvOyZT43O !9)jh 2s-v% ?   RV Z- #ߕʧؔ ‚`ny|CX3ݫ  ʪc˦\x aUŒ֊0~m.WI|NM{OONNN~PwSYTUbT VVY)\E_'[ W_SS*TT#T8SUVTSjQJRJQ:QPQO+Q(MPRYSST 0U wUU1UVXYVVW!UyVUULTYVTUV|XWY5VR V&U^WUU;SVW\^:YX,TSSW0XWW1Y VWNWHXX|YgRD;:;?@CGN\][X.WWrVShUS+SmRVVWY*\YVTUTUVVVXVViW\WYW%WYXWNVXWZdUUXa,WRSdSS%U[YX$VLXStQV{XXY9Z]$bTfdނ;W"|ٜ-Ҙu} *,b,çӚ2Up bM3ˑ!$U{x| q 4   ʙ  f3dӐ B,ޞ߼}oVz  # !{|Ҟ͛Y i܉I>wQYP.LMM\O8NO@NNPUWUV CUUXYXWWgTT9UTTTTU:VW_SQ_NMSPQPLfN.OQUTT(U U ^V T R V]WUWRVVUVUU T WBTVX'VTW@WHX\RUT+UVUIVXZYSTWX]IWWZX5VVWVxTPD7<h>X?AF5KWb`oacYXX.W7UUUTV_UVV[a3\8UVWTtUVdWWYXWYW^WMVtWWWTX{X=XVZWRV[ibVWOJNNS~OTWWEYhWXXWTUJWZ}ZY[bzdF]v b8DHu%$s]MM(әT{@͝'!εzk#d{׈6'f߯.߫|dga;; s <Yʝl4!wzEy%zoNQжquo}  ҝ מ"!T/zYTnY<}@hLJJxMNNNM|NP`TlUVTVWUU-XXWpWUaUTT TTUU!VvTRMM@IfLOOMO~O8QVIU1RTU UUTJU1W*XxWW,TU UoTUV;UUW"VWfW9VVW6[ \BXFWWWW[VWkZUXV)VXXWWWVWW0X4XWTUfRBp;A>CIT\ `Bc#a5[RY5XUWUSV*YVVZ8[awY'UVXXwW'YPX\<^Y>YXVWgUgUV#WTW&XZWSRUaXQPkNJ\Z2WUX d^VRXN[\`Z$^esiHm >jx7iJB ԫŌq}ըեIl2̶  ȷ {8×.,y , ܥB 7s! +~Z)vۅz9vwfzGz|jowؙĠݫ!"iƣǙ[{x~^'=oVJNSONN8KKyNORWWUUhW7VXAYZ1XVFV4RUWVT[TMVAWTKTSLKnMSNQEQO6MMPSUST,UHUVUWVVXWVW V=UTWV4WjWuVWVVT4UXX?ZVW`UVZW]TX0U$VUXWWjX.UVVZRVW/W~VVVRB@CACFGIU_?_]~aS^ZYmWWGXVUZjVW8W\^XTSVWVW&WbWXXRYXdXUVqUqTwT $VsW[{ZYYSIRTfFcO;M^JQskVTX3[[YW/WeXeZ [^[^aire 8seԜ!0qd_,Ƙf@~ A !j)e5αܨiב Lq_j A"Ě#6 9E 4 ][ X|z]ؓ? s XqƏ{r~];5T3 ͦ RUȡ{Y}Av?mgyUN+J)L"OMMM'LNQ#TWUwUVJW VWYYY"UETVwTETUaTzTTrUJWTRP LKMNLN:MLLMOS8SVTeT[UUVY XW^VVUUVW XiWWZTTVWeV[eYVWVDWhWYuY]WWTWXVeYWVW.W9WlVXf\q[X{YRKD@~@*=lEHNr]L_^LV[\`XfWVRXAYVWYnXZOX(WrVXS RU>TUXXURSSNOP NMMR WZ ZWWWWYXW\UUTJU4SRTTUTTcSCRRQHP*ONO.M2MMMVLNzQVSS)UUV.UV.cilYQVCV[XUVSW VVVUiUcW]WSVcTUS`6o]WVbUVBWoVoXUVWVRTyXnVVY_[RjJK??LWl`:]&ZWJUrSTUUVV WX(VX^XXUVVWVVVViVV@XIWWTVUVXXyXWWUVSV+YVYf^[Q9KM|LMMPSbZ^YU;VMVWKYYZZXZacvcel3Ɨ ɡD  Meנ*+c!k'!M pt~~u+s <qxpTѩ<fڑ79\z #x;-ǡJ+8~ ZA/Mc͋*}idDΥ%3Kf{RtR[GKMLM3MLOjMMO,RV ZGUT_WX2WWnWUZUUT,USTcTiTUTHTUPSPNKNKKvLLENLPWNTUyT=T|WUVVWp{ZR UYWVWTVW/UVwVVTVUT0VzWVYgYUzU UTsVX.V-UUVxT XfUTUoWPX`(UFLE=KfWU\\ZXVS5U VWWbTUWWWWWTkWV&RWsX XyXXsWV{WrVVJURoVWWYXMWWvVsXXVW[U.O&JKRNvN P$SWhWWVVVWZY\\WcW6\R_5b+em*i wp7FV !  %2қ[[-vvDx\l2z H Ö0|\ K& ƟXߊ_Ԧؤً$! ¦ABFGĩwԚ]MR\!t{ AP61Ʌ~kWKN$NNM3NiMcNONOSVXWUiS V UWWhVVT[VUHTSTSUwS TS0UW5TNKN6MKVMJKNZMNSVKWUUCVUTW[]tURUV)U7VVTVoVWTVVVVVWkVTVTW9VU W W0X>W%UUVVSWUULTT_S|T'RyTT SVT+UHRPMMM7MNMLLM@MMU[XSS VUV"U|T0TTUVbTWhUHVT7U1TUWVW,VV2V5XXfX4TTVDV GV V W V%U VXYVDWX.WV]VWW\ ]VdXNO!PMBWUeY!XW9VmWVVWWXVRWVWW0WWVWtXBV'Y(YX[X[WVWUWlU]R ZXYWX_X5[1XSVUTKTU)R>PL?MNNPT\]]VKT@UFWvWWm\_^XNZ7Zj\Y}bhmn| t<CPu2 _.THd;}HvT !:Z>lZ˫;Q)z4˓Ϭavxt8U2Sșl Ň!(؇h|fVT?NNO]NHMLLKLOQUYXVVOU8W XWWV6V+UUAUoPSUSQORRvS|R PgLM5JKI6LqKMO6P(UZY&USUTS SUSV'RSZR,VXVEVVUW^WlX,VT VUSUUNXUlVVVWzWVjVYrU MW/Z#X$XrVUV@WXXn\`j\pLxQ H+FU[XRWYUUV-VBVX^XaVVVVYtVVSwX ZWWWUVUVUVTXDV~VVsVUX9W`XXY[iXW1XUSXOQ@NlOdM&KUNMM~VZ[XVkUxV!V+VWgXZXhZYcX\e&hp"sǤ)ϰۮp6$oIb:0lnٺV/*ى ofU߉yӨ=cB 3POHsж~A TP"p q+ GՂ{Pšo IXF"(W(q=`X;SNNONOLIN!NQjU^ZnXYVT (S xV TUTVWTTHTQSRSRRSRUlR!MIMNSNNKoMONQW^6ZU}XYYTPTV2TEY;[SV UWV.UXWwVWIVXVUSoV}WiVWyW4V$WVVWVMT VIXWX\VWW W WX6\4˛]/$6!.:>ZMhd%٪`9g#j ؃{E#c@ swM/Ô4 Ԅ,&~evYMX SOPNKM;MMiLORXYrXV WUU rWIWfUVHURTV6XVWXWXqW=V`XVR R WVV@VWY3WXVWWXWsWUWXX7Zogؗ*v)MKJKgU9Xa\N[W#U/WSX"YTMTTVUW VWVGWTSVRRjWYUfUVUWXWUSUUW1XUW1Y[3[X?WTlMwLONM5NfNzO=NyQTU9V8VWVEWCWWBWiW]XY\XY^exfjr W CɴIJ1c   z3޹g3a][DZdXّm}9ȵ4ШG͠^O8Ǯ9 ~K GwЗI_]!o|z s~{՘U ȂӇuz^VQNMPOMMLLV@VyX5VwWYVWYVUVVUVR WVT FW X BWCZs\oō7ЏB[;GQFV"ZBZ;Z\VeVW%WVVScUTWzVTWCV-WFVUU_VV+VU#WVSEW,XVTUUbW-WV`W%Xm_H[/XJVURONL:K!MNhOxLOsS TU@VUVWY~X0WXf[Z:YZ\Vafj?r | ͢V!iuN.Ĭ yϬftߩb$Ę? A!M'AϤHtFߚ"y;dFqVYRԷwˠCS"r! |x Aw e~  ,ڛ NNuϊ2Z+ uQ[VN~NMKK%K)MKINYO5PTZ^BXxVUVZUS TuTVsU9TSQUNpNS$TS3RIPRQfPONO LM(MSLL?O5MPW`8WX^U\WV=VVhV@WIRUpUTVVV UVV*STVVVT}WW.T5Z!XVnUfVVkVUWVX!VWW\V #T WXS[~c3l|ěz ].H>JMTXX\Y YcX UuXVOVUV?YWVVULVW$W*W(W7WX(VMZ*Y(YXVnW+WeYV-W)WZXnTWXZ^*XVWUTEOOOfKNOMNNShS1SVNUVWXZXYZ][[]bReii&p|%3ġ o YJWQ { ^=Ѵڥ˞PC Un61 3ם=1SO0Q+cǧȟ,{e[W\9ȫ WƢkydy n} t d K ʋUqYRLML"N'MNWMHLO#Q7SXBZ2YaXHV /V&W&USRSTTwTTBRQ/RSRS&R PwNP=KOOwNLLXLM,LMsPOPU[VX#\]RWUTT W vVTNTUTUUHV UV|WUVUVZV{VYVVU RWWYVVWVWXXVXU9V UW)UW.X]ctAfRHBK}T]x[\Y3xw& fk"Mt`s\TP&J#LLKMOvNOQUY_Y1YjYqWYJZnX>YURSPT#TTT$SRQRRQOOLHlFL'S]TNkLJkJLLOTYZxX\?d}[WOSUUvWx_c?VSV;X6WKU.W?UUVTWVWSjW^VV}VWYrWWYiS U qVVoXPVyVVWW@XY\b*`]'\RGAQVX[Y7XVWWWXTYXZYyX|VTVUYV$WY6X'SSW ZXVlUWqV/UUVXyVu\?YXbWVVU|S$OMMNQNLNK>JNUMPQToXWW8VW\O_y_[A\=[^A^cXf5cdk3kyߊ TjҖҙ*LMgճM T# JПٚ:TMqOf2  бĄ۫tvW  (}  ƦD_G2=;FV~?Ʃz:6 zhWPLCKqK JGKMMNOTZl\VU~U=VXYX3XW_SSTTzT_T|TSNS\QjQQXN"MIB,DGKM=M3LLJMLNOTXFY`Zj^d^XdRTTiTt[^[U7SViWW@U=TURWVrWyVWUXWZUXVtVWV|WV dW 3W VW"UvUWwVVXX\ZY Z]C\i]__aWa bilmw ʩoKDȊG VLBǬ FKH{FTe* Ϥ ʦt< |u{z |q,q,,ӥޥҮTMsݥ/q BɈy[SMJIKJ"IiIKN>PQW7\^xVU UUVVWXPVUU(T)TUDSTwRRQrP POLB?I,IIYLONLNLL9MORQUXZx\m`~YXWvVRTV#U#VSU W4V U~VBR`STTW1XWVVYW@XiW W ZIV7VtWnWVWaWBWW VV1UCVVYO[Qbtbe]\X|MrB@MX`Y^XtV+YXZW.YWWZZ0[YyUVW UVWVVVWWV1UvUVTHW;XLVSTZYjX/YWVSfM@KM\JpMQLNWKL3MNbPTEUK(FIL!MKNCNMMcPT[M_\[5ZDFIGII2N6M`LLLLNmNQcVqZ[~WWD\YUWY WVTW\UVOVV>TnVU.RU}V*VVW U uWV`WeVWW-T ZV ^X ,W KW WW[W=W-SsVVvW T W T .UiY*X]_fkKQLUXv_ XSTWVW.XWW VUWDWVWW(VVsYT^VVWY>W{WV\W4VVVVdW7UrX|WcWYVPNwLLOILKN)N#MK MMOQ{TUVUVVZZY[LZW\X\T_b>bqbgjHdOzP2\y+X,vsLp8n o Cȉ +!I"1OAqȗaaoܟe"xRzi`lgtfg4̙oe>K 0̊Xވ5 Jia ]xz?kv wYqO4ONKJ;J{G?JKiMQYafc`CY5X%WYKVU=VkTRR2S~RS T4TUTgSRROMF7>ZA}GEZHIKkM H4J !NLLzNQW\ZUV\[YPW W_ZVUUXYVFShURQVVUU V AX 7XV@XWXbVV X CW AW pWWVVV{UvUW U EW lWVV Y]]]ZZTGMTZU^lYVUVT!UYvVVVWWVWsVWTVZ|UXW|WUXjY^TVWTV+VVV2VY$WmWV@ML]JpLaLL;LNN-NL{MMROReUcTUlVVwWZ,Zq[Q`-_:[[\1\aUbff%iemʄzZ Aؙe}!rV Uy9o m l y ~ ~ n A3"Lɢ':)eǣdTQ ˍ K Zw h >iaU4vLq?~<~{F pl֋ ؀ u  Ɗ ň_3~ojVLNNUMMKIMMMR Yb`[WSOUVWUTXTRSS|U3TSSR9RSOK@@mAG.EDKJ@JIL`K LLFP;PT[Y=VW\x[V Ub\[W?VVVQYd_U#SQTkTeXUuVHVgT VVV(W@WXVT W ]U XVW3XVVWV W U(VbVBVXVW]XUND}I)PrXPV'Z+VTX~VT\X4VlW3VWRTWTUWSVW@W2W3W9WyV?VWhW/UWWOTTV?W1VU~X.X}WT*IJKLSKLN&MNNLNNbOQPSU#V6VW[YU[xZ\[:`$\_Y\_GaTde$gif|zԛ5Ǥ_ͣ`Z \Џz p t v ރ hw" ޡ T\VT0aaٮc5֑{t )|!x E #ޘ.w.8?P݅ъ5Ą Ήqb@X),{Z=SDNKJMRLKpKOJLhNQIYqcaUYW4WVU]VVVV"SSRSS_TaT4S RhSV9VKmB? CIsG  ͘ޏ6o}Ro6 |DrDS%OfKHHMN4KKJOL6O|Q XbncXVuS{TVUUV,W%SRTQR S3TTfSRjSWuSH=e>,D F0HKNNMnLMxKNONaPQ"XG`BZW W$_w]9ZwVUV;UWLWnX7WXHWX^_!WVU VV V cVWVVV5VV@WSUVUV&VYVWT WV~WTVWUUXXX] \|URBiFnMoO_LS RVZXWX$[WfWFVW*XjWIWOXX*V*WWfVXX WNWY6VWWW[VWWVX0VUVWPNZL0LKMS4Q5MM{MOPMNNRT}T9TOU"WVWT AVXX YXYYUyYg_c{cdhgo nË1rFǧݢ5 0 I@-] dx G JIwЬ8WPZnBR$ >P}b =яrPd.!!Nׂ l]xj\ɚ&\˛= JڋdR<{aOOKGYJJNOMEL5KKiMPtXa\VUVUW)WTQV=UQSZRGSTS,RTSReQPKD>?EFH#J]MlO LLIEMMPYNP:S[`WV#V\[JYX8V6RUgW8VVVVXVXWxVWpV |V VnW.VVlUVV8U VVVrV@VVWVVWsVaTVVUX VYWZ4Z\Vjuo 54MÚɤu{g1"ͦ!_:a۶}*X a:d1g8K $#ģ[IZzcAEGGJMLTKLYM5LLKLLMOOMIMQ>OX]YVUTR R T V UWU^TmQXVVW$TVXWUYX2XVV]VUGVWWUUW"V$VWWXXXVUAVvWV9V xVYCW)WTWVW,VVV/VMGM}MNO3P2PRPO|SX0XXXYSV9UcVAV!STS_S-STTSROGk=CLE~FKNkNPNM=M7MhLLMNLKmL7LOwPDOQNT\^GZ%W4TVVGSVWvc85uROjSUVW~W#VVV=W IZ XWWWaYVZX2WWYNY.UJV VW@V V X W!VWHW\tXWrY4NJ LOOXUX2VVUxVY9VVX?UVKVW'Z]XxZWVX^V[vV XUVUR9UVV1\.U T[1_DR KILLK?NJqLLJlJIPuM2K{LLP~UVS UU~UW EV V=VYWTSSUX9_de3bfb=b# hO8ޮw3\^ xm"ٴ$vX7z ۫ڏ$mLo޽-ݿXڐYsy! 5 ;f3Еڎ>4} B$~ @;ʊj'ۈmQ CP N 0KL\NMxLMzMAOQQPN{QDUIWWgW\XZW*USTTSSqSMTRTS QLyGpBD6ED]JCM@N-M1L;LLLKLKMMgLKMOSVOSUX[\XFWlTUPUeTWGZa|CtR/MSTUuUVU FW T U RV VmWVVXWVWUW IUU .UVWVVWWY+VXaXwX5W]VS LKQNQSVWWVYWUVWW9WWVWWVXWVXZWVWVUpW#SUWX.W U7R*V VmPcM)KTKKK P-JbNLJM1LQ=MLMN+QW W2V S UV V V$VWWWdTQQV"X`cgce.f`V{NA9عɻԺ<B1Ϩe R4 ܮu&ܭ}rŎ>!Xw?|J ̐v G;ʝ!éoyʫ!4 `Uٞ-6]*sqi`y' L\U,fM N IrKcMNNNM4K!QmSSPMPS+ThUWXZWSQSSR:SS TSTRReM/CBEEH8J`O=MMKrL4KLiKMKM MMMNaQ}VTWWXM\XEVUrVVUUW[tcqzqRO]TVVDVVUYVV*WW GTVU[W*VW)W W W fV W V TWVVV`V6UVXVVVyX_SQ LL]P%QGRPUVHWBVY(XEWXZ8Y`WUWGW"XVVVV:VFWVVTVUHXXJVVTRS1Q8IMPMLP]QPQnOIPRVVTP`QRVW!WY2X3Y&W&TST\TESSnRRSRSPHBACF2K NNLIyJ!M9M*LNP0MWNFN4N%NRxX][W$XZg^_WVVHUVWZ=\`a\WRR2TVUT V)V ViWVXVW*UU VsVWW JV VV V VUX`UW QV W UUV!VzZ X/YU`O PSPRTWVXMXJX?WXY \YWWWVpUSVXxVVTVNSrSTVUW#VPUHTFQQLzL1LLDO LpKKLLL@LLsLMJILOxOSTU=TUU UUVVYVtXVTSV\\`fjddhdvd[/dF{ʪh)Ԧk}F9cD)"DW xLĦ D+ޒAٌ b7/ DSCɢxgy3 pJˉ~A[QcOLPUTUT+SXQSPTTxQ8Q PQRTlXWcXY%UTRSSRRRQRRYR OI&BAtF*HMQOJMLMEMI LN6NaN3MN\OQET YSZYTTZ8_9XX VUT X_eg=_%S9QRV.WVVUSiVSVRVV>VVV ^T V|VXVxW&Y|VUUUUkV(UX 6V V W(UuWV2VBW%XT4NRTRTVYVZ WXZ*X$WX\VWBX,XWVYW9VVT2VSTrTJTuV2W!ST!P/NNKMKLL JK/LMM3N&N#NQiKNaMPSVTUWTUV:XVKUW6TQQRZ[^ac{dDfi%vkwAJ ̭dg-blEvK?دֵӽmMg@ѣWVؠۢdo"kXn,}NH`pw}eb_9 +oө~Г ԋ ;`sVMRLI KoPWWPQOPQtSENMOcRUW}WzWUUUvSSTuTRPPQDRSQMF>Z?%HPRlQO/MO=LkL9LM}NQNOMQUPUtVZ%[fYXHYZZzWtXXSW KV %[usyc=QR JR TfWVHWRVUUVXW UTT V VUXVWWWXgWUPVsWVUCV VWXVUVUTEV\T~ORRQU.WWYWXWWYUXdXXXcXW|VWVVUrUWSRS T`VX/V9RQNLFNDKM\K4LkKRL2KL)OO6JHOQCM[NO6RSTU?UUUgUTWVSUVSRPO ]4c`z^`dgYea/sygrhmZ$l!)!;n<  NgDV̟z :AȪ^8-kxlu9+bܭ!!0Uʪ  қCY`ɤً AƇ h2VeO ?J K^JJ`M;QPKAO!PPOOOsQRV;WVOVVcT-SzTfTQTURRQRQQzK@AF K:Q6Q}NMMLmKBLMOmR`VzSg ` d oH šzҢ5\BN9?soEB\qޯ o %S#\"#|"* n"\τ ʅw ɪ  מOɉNJJ_mO6JIMLOQTXU0V/UQUTeUUSRUX\8XToU'U-TUWTPkS QON.FA>@>_CIYLtIVEG*LRNLMKNQYd^[c\_2``Z\]ZGYYa[ZcZXUSVVaXS S TUV UtV V]VYqV$WVVXWWW V )XY,XX W UVAVV V VXVV gU WDWeTVCSVZ/TpWzTeR|RqSTUUWZV6WWTXgUfXaXWX;XYp]ZMWWY1X]UUSTbSfTU/R1SPN~KLMLKKTMKLJJLJLHILKOURT TTTSUhViVWSzU7WETbRLNMGL7KEPIN"U,_bdneffyC  i9osfyPۃ.!ouLZ^ 6f {\o2Hxwj*.ۯA3Qx{UY¤Xv&==נ͘Rܥ]| ܓl Κ ~ _C[MLiKN2PPRITVVYXjWVUTWW9W WoYEZXUSSTUVqTRP/QQMB@^C>P@WBEaHEGrGeKN`LMvMM(QU][+_\ZYZYWXVWYYVWVUcUVvTSRUT BU V VAV bW gVX~V UWWVVWW BWVTWFWWVV V V EWaWNW V ,W V W)WVfUTV X|VWUPP*NZSkSP VVXWWWOTWVWVXZ_[YWU7WUTS>STTSOISOLFLILM%P MMIYKMKJJ\HGHFKEOSEH*FSHqSRSRTSUVUW0UUXTT RNML9LNLOQ.NQWJ`ehOc@f iÔ 1UC Ŗ1! }l^ [n G~o?@ѯĩҙJdM4w[c$  ! ޢ:kRL{ ЋNj=4kV MKKPUU 7T T9SUUY^^Z[\]"\YXSUR S UTdTSQRRoQPHLgE?BA>?CGHGqHcJQR S TWfW5\`^^2^\\i[\`@XpTS$U/TT!TITDSQQ5POHB?OG#HCAUB/EHG]JaIJPLfMrLMMoMPSY_\\Z[^_\]]?ZXYYY4XJVNT VUVV9V(UU~XUV V QU VW=V VX4W U WVVLVVWVVUWZGX*Y W U U W X V X UVUCUZZZ5X&TRUTWX*WXV`WX>UXWaXLYUXBWUVUW2X&WV"W[TRTNO>KLLLxKQKJL K8K B}B?ACFED,FIXM;Q USTGSTTU|TQU;VXVRQONNOOPOOHQSbeoeDdgvL{uד]:zw[^ uBlpPN!:@,Фbj=,rmMۤ ^|xB Д[pMU NKMMPdS SpTWZZ`!`QZ[Z\R^_!^8X.TSSS S:TTARR0PMMJEABEFgGC[@'EH_HIkI_K KMDJLM*NJR"W[(][+[E\3]]\)[[kZ=Z[%ZXuVU |WUVWXTVVWWCV W FVX_W%WW$W VU WWhWgVW0U"UX=UVYVV U V >VV;WU!VU}UUUZWOVU`UVrWYXZXnT)X!WW WY]XRYU2WWWyVU\V V[TUU>TRSP N*KNJLK`LKJLLKI@>:>DAgFEGfIJMOSTOUTeTVUU'V!TU>T&R*PONBMO"PbPvOOSXBbee}gUksc  ps?QU0d [$ILeNɇ?kr+ AH(: ZОǜI4 k ߰4ܴ_97Սi1U lZ/]F j TLM)L,LQSUW2Z\^5XXYXjW[^9VVlTUTSTTSSyRQ3MJF?F@EFFGD;@WFDGIJIKOnN OLLSOQV[^\=\Z[__ZYZZ_ ]WXVU)WWWWkVVUUrVVVSrVVWdWVW UW V8VVFUVVtVVU U VIW W @V oXmXW VWVU)TiUVYVURVVZ-YXWVVW#WXXVWVWZmXUUeV U-UV1TSTcSaPYMKMgJL KsKLIJHD<9<;AF,@AEKLN'QU,V_UVUWeU|UMW!SQRPPLPPPSOOOPSPZ h cdj &%>Uz3խ@ƮҦp [G'1@-V*Ϝ _Kd@v\ ORKOPON;B1FGbHqIJKdKM?LMOWOpSW_[__[[k][ZZJ\\ZZVXW^UU V V W Y #T W UV BTVVaV W /Y d=hehc;@@#aСۦ<BW=dy }z vN"ӹ\w‰ N O֙B<HU%'y  Aت[(٬d N%УҤߡ ؉_ L K)H=N]PR"SqT AVYiXY}WURaPOLOPMT'TSUT}RRxONDA=BEIMGLjhpz>xG*:A\GI;GcE KeLM+MSLNtMLMQVa_L_`[wZ}WWYY?X[CWxVSU V oV V QTXVWVVxUVVX V V W VRWWYWwWVVVVWmVXVUY8VdVW UU HVpWX,UV-WXXDTT_U=XXYYuXAnE>=DKMNQQRTbS6UU KTsUNSqRRXRONiMmOOOPNMP~PV|`_k`o{xmMc{ ޭu۬ة(ðXޣ֦ q nǤ ~ 9s5 ܯ&g} ʣEB4ϒ9#mT §-8Gש i ) ¥ _sfȖ|p l`y)X K AIJL RiSU9U?VWVWWUiT SDRSaRPL;MSiU U|STRQKB<<K>@2FJL_. Jb70?EHJGHKMLLMOEMoLM RsZ]_Y=WXY#XWoWUUTT \U 9R VXVWXYUUTWVV V _VWkU R VuW:VzW%X(WWVXUV5VVW:WqVlXVRVWEX"VUV[XYWTNS:WWXXXXWOXYV4VVbXW XXKWX3VUVU>J?AAB9GmKO.OQ8PVUpTU3UUVSRS'RVNNfNNO*OAOaOXPQbV\-\_#ou[pbFy(?ǫxݬΫE'x )  Fҭcm 9s $|4I\: a9 ɧSگ}ޠ v8Ć<ݒǚptU MMNQGVAWV@VX1WeVSSSXS TU@RPKNSVpUUS!QLXAj?;=iEFH OPmP ֠0 kN73?FGJNI J6LtMNoI*M5M^MLKN W[4ZXWX{XX WVW$TjUUcTTUWWB@pA:C>E9<?a>A3=EQYQkORPFQ;S(V5UU]UW0Y+US8RRP NODP&PPPP PT\WzYFXYYkcg/kq{[[nUٯ.l'̏˗mcHǥ W m y(ȸMVZ Lsx|~H|F|,]Eɑ'#Lxe DQ1mtOϚw/aЊF/_ mT K8MOSVVXXZ\dPaNUOQ`SQON*R@SWVV!TSR5L^D;B;E5GGK[? ԓ _ } iP:F@E6K_HII=KKNONKLM;LMMvNRX\[X XWW9XwY WWSUVEVVsWaWVVUvVV=UVVwU T V VVQT^V W xV T ZU fVVU W V W_UWWWTWBVWOW"VWVVVU.V X$[XX V\T XU&XnVV]>X4XSUVXWV WTUVUVcV-XBW TT1M$LN^KINAQNRLLNKK?9:?e=@P>@bF.KOQ%ScRTVyUiUWhXW STWSzP4OyOjOPQwQPCVVbVXXY`gPio!| *"}# 8XޘqrЗ"yq޶ƴ۶N%M{x}7xPyڛIש>!!v# ՋOń|z:I6- $(]o^YJ H:LOTtVV XZZ^ll\YOOFNMN[S!WXSQSSPOH?;DFH^^}_ v ɑ k  ٝ u LL7 >EJIF\IKJZMLKMM~JxMNSoX\,XWXX{Y:WW VTU /UX=VjVDVVWVWVNVVU?X S XTVVTU U V 7V VVVVXVW7VXWrWVUWVXTcVTSVUYZ\X$WoWiXWVVnXbWYXsVU0XXSYXVXVUW`VuU"UVX^UTMHMIMMMSOM\NNONKFV9<b?B?X??mADLQOsOQS1TT:TU$XWTTkUS~OOL)OQPLrQZWV WWZbihqo|ж"ȪϩL@ަ DVxxPvfzco1?:zq{ZUtvʏuTÎ ɂQZq}5yxu7y  ǜ @JϗѕW|[K K PSTcW 1X hY\`ocrrz*o V*JRFIMQ-W[ URNQBQOG=@HIUX% =     ߙ O\OI77?NILOrKK5K MMM0LjLJMzNO R[[ZYY/WXX_T!TT/T TTKMLLKwMONOeOJORM:;?@B@1BpFXLPOQSV,UUSUU~T7R TTQFKONOQtPR S FWW3VUlXZ^regdp "fNةABY<2 J ՔPbcӍt P||Ȕucճ>M|  hvM]e>{~"$D!T.m 2}|~ lF ۑF}|iL?ZJ JzOT V3X RX ZY]$dXk zuxX{EG GJM=Tw[]X=QPLA=A5ISu; ֖     {QS8 >JMPZN#LI 6MMKLdLMLLPwV[~\S\ZXXWX UVUTV VV[ZVVVU VWGUpVW U T VfU(XW\UV mV VW0U(WWvXbTVVVVqW X\XMWV`XUVRSQRTWU)WbWX[YRX.Z[WjZZYX\Z[XVTWWVX6WVW\VTOjJKLgMNNO\N,KkP.PKWR; 9;k@ABBKNO+PQSTVUyTUVRTCUSxQmLLOPPPR T _WVWVX=Z^b=g hm֦EL/*y  w hpgiLd vsTio˚ɘ҃NO[=  c'V|&,!"T 1"^7yW K5KPT X AYX \iqwyyYP'JHdJHJzMTabgXOG<k< DG\{  Ҕ 3 Ț ٗw |!I9~DOTNNRMLIMMLLLMLLP3T\\j\Y XWUV|V-VwXW&V VWUVVUVU 5V SVXVPVXV V-TUXUV V}UVVYVvWVVNV=VV Z fW V W1VWUVjVSOQMNdOUVW2WXWfWWeXUXIX Y[{[\|\Y:WYVgUXVdX WXUZWYZ[ROJJM4MEMNuOfOiP~UWq8^ I7<=YBC"EHKNOaQ5SS6UgUTUUcURTTHROLN7Q ORT+W W XWqWWX^Fdc9gCknVȨuf۪2* J =-)փ7frӪ6zӥrp[W^w  Y߉r ,4եCYB~dΛsRgKuKZQ V LX ZZ]_ivFztXGuHGjHHKuIG^LNWSa\XH?=C6HsJePsV  0  g c poH?HO|NFMO:ONMMMBM1LJ_KMhPcV7\[ YlYCUTrSjS}VNX7VzXUVVV$VWVW`S WYTYV;YeW rT DVWGVWUV W W RW V aVVV/VkUU@TVYW IU HVVfUVVPLLOOuQUWX7YQXWzXaV^VW6WY;ZZ^b`XMTVLUKVU}WxXYWU.YW)W,NK!KLLMNOP U]rَ,WU97 J>AD`FKMQPaRNTU(UUUU9WT-TmUSO.NMPhPcQTW VY WVOWX[^+bb+eShVm b:(Aơ@ͯՇH ֔ 2 ?֓s3rp { U &ka `I/$Y%Ž#0Xo{Py~ΐRHH$re!cUHJ MSWY [[_Wf:dm[o[L>DHHHJJQGHLhQRuNA;?6DxGqOj@ ; @ ~ZIFMxNNMNvRRRLPtLLMgLLtM MQWKY[Y:VUWVUW:YW WWWUWVvWT9VFWVUWX X X %U XFVAVEVVCWVU V #VWVQVWWWUTXW2W %UXWDV`U7OKLLgKR[T{XYYYXXY(VWWXWKWqZ+^XT{VLV`VUVZY\VX\zVSLMMOM2NhOPR?S~ې- 7e>e6 ;ZAD@IP`O PSRSUW#VTUUBQTZT]RNN$PQQ$RUT V V WBW WqYy])a1aaa+jn;yOqձߡܡ=Y 7٭Sў ̞}w}9iiS{} X SL#r\.çzj#!W8E[#""!w'}yz~/5YDʥ8̇!5}YF kJ /NTYpY \kgakDkwmO_Q;JFFHHHJKL(LLnMSG>;>DH\Qf kJ (tT[J^KNONM|P|SRrRP8O'PLaLMO`T<\^3^YXXuWX X9V`W WW\VTVVVVW@XW WX V V W WX2VUVTVVV W Y6VTXUW V VWU\YbU]SWyVUYb]*^{XBVXVVQNJMOLMNQQOTd ȭ d> (6 <@CI1ONNR@RRUaVUXAVQ1RTQNOQ!TPPW UWvVUVX:Y_oc aXA\Itߍ U1}R2V a QŔ  E  :p 4 < a4E&{m>4}ȅŒ$M$HB30 ڐ.~{5q~4uŔA.ߔWoOFvKTXY \ ir {yi[tWTNM;JKjLOINLLL^LG<>CEIQ3e @* @e^LIMNLLZN1NP|QQqQQNEJJOQTYW X|VIU!X XUXXGV%U HW WwVyVVX \(ZV T+WU U HWWVV HU X`VWUUV&WUV CVXSVW,W W V%VW VWVHV]UUTBCHJLOQUUUTV9WWcSRRRLFMQQP*RU VV,TOUW)VzY`?dg^VVfm^BZ$+yJ =9_ Lܮo Fٓ  O Q  C  ۝ ƄpzΟ<| t#̣~ʝPWyF [ 7mixSDMoUUY ] ` qw)|Cx bU^OHQ6O3M@LLMGNMK}LxLJC??vChDIXv? S @LzQ^KJLLdM=MN\NQPMNPGQNLPxSaV"VTROUUSUXHWVUV UVUhVWwX\4W V NVVTXUW1WW}VWX"WAVU U)VVYU V#WlXWUVTVVV TVbVySPMKNLMO=T1TVU V SU U TVBVvTVVTV(UUVVxVkVXZ9ZXWVTKnLLKMMjNO1QU Y^r(] :I 5 7;8D4ELK_MO\R|UMTT[TVcU YjVSRP]OTKKLPCU UWV#TW6VVX[s\YUR@\-s)Em!Ś g ¹Kʰ^\P  lx{  Yޞe 3(#?ۚ > ,yФ"w~#k"2bC~ Ҙ$W!:{V}FO4VZ`jw2xujYLH9JKKL-KN#MmM5LFK?HpG@;=D5FALd͋  ;(ykWJHLK`K^LMIPTT SP?P?RUSQPQRjST[TuT#SrTaVMURVWWVVWsYV!TUmW9W U V oV qW UUVWpUVUVVVTUV\VWqVVAVW&WZXFXlX WdVQV SW W"VUTPML)LNPWWVV V XVVV3VWjX1UW{VUVVVhXvY\ Z]XYcVOPJK>MtMONO=Q QUZ GͶ #Q5 :{=GJyLMbOS/STUETUUWGVoUTQLLMMQQ]U!WW7VJV5WhVVUVXVVZSpM= ϥ¥&T<]® 8˷kQ(Dߞ &l!I  no w >>ZG$X%]zJz !)d'{щp y $? h|YGtOTV[*gr|wolr^MIzGKHN MMMIMOSM4KbK{IGBQ<A{CFFR{ \ ӚB em^TFPIkJKILmM0NR|UTUSQEVhWV[RWQP~RUTOTTTT!UY>W VXVUVVUV9S T _W:W U eW VVW$WT VVVVUUUVEVVWWWWYVVWUV UXVuUmT7NKMOMP+PTXV WVX2FO]KtMP SRUVUUU1U,X_YWTyMIKXNR TWUVeWW]WV=VVVVFXZ^ j ֣w͐Ms@կS) D`Š7) ʖ ?߬=&#=C!{!x ؅!]ҤbkMjhoyz  \̂ȆySC MW^lz}qinUF"HJoL_MQL%LMHN N`LqKMK0J~F?<AEKrUnG6š k |s` AQK}LHK2LLLLLPYVSPST TUUOSaP SU|VVRSV/YUU W VWVVTV;UVWVWW|WWQXXW8VVVTV V ZV~WVTWV VWVVW W V yU WVVWXW}VSO}IPJGK{NUPKSVX:WyWWNXWXYWUVXOVW VWV>W9[YRWWYXW1RgMHLNMLLOQ%UBWds MӜ܊^6 $:@/HM$IkNOTSV1U=TU/TbU VXKZVPQNQTXWV'VX[P[jWvUW7U VZh[foԯUѦnrp{֔*r 7r?*0ިԛ ޗѶMP ͣ 2٩M| &ٟДҜA </SUxI|Z|z(zd b v I)b4ʈrRH?P:[Aeũr ~eW&GGK_LMrLhLNN N N6LKICD?>CFNepѤ#^ o U 1K1FKLLLM_MOEPNPRVWVVdRQTQUVThT-STV XZgSQTW5WU WUW2VVUU[WVDTWMUWHWWSW V UVQVW4V wU UzYW3V VXW$VV V W U VWVXTnVOUSNL'LFNWOQlUYZ/W_X X5WWWlX(XSWBYEW CT VcWW>W[8X(WWXWVOLLMM0KM>LOQ1S[[ Kʲ@BnA 9U;GMKMP\SRSlUU7T^UIgMtOP>RWXWXWTX X7X WWX"UV 6V +UWeV.UW!\HYW7WDWSWVR&IIK[MMOLNQTZ |VpA T9]@]FdNLN{PRHSSVAV8UWY"VXFW2UTk[>ZyUXW"WVtWWYJXXZCXOUfVZ^eoXӮrƫʨשxIv2 K  Ǐ Y՝.~} <B%p X@ 2nU@w~~|$&&trry_ }uj4l%kL?Z=uQHQ\ 3n+ykbYRIKUM|O MLOKOLMOuMpM1JJ-E><? FU~ r lo` MmJ}JLKM!LLLLOSSX;Z[V%StRUhWVUV/UX\ [VvTQ&SUUVU]W X [WW/UPVUDVFVWSYYiWW0WWRXWVWUUVVEW/WQW1UV TWW(WVVUT uU OV VUNJP:OR T EWZWkXrWXWJWWWVVT V?VUeUgUW XTXVX\V^QUNIKLJ ;LM[a_IS2=k\>7ȝ!*rז< Ĝ TV,O!ج1u=ڣ|Ʈݵ&}tG? ""r)q rbrewvxi~wU ܒKv,QJ+Tg ~Qp[LH'GHJLNX_YVWWYWXiWWWWV|W2VgWOUUVVWVVuUUVVVUW T WVW2WVWLVWVWXYXlW{WV{WEXQPUUUS_QPNNCM1LtN'MJMJO$QSXeC\p3Ԍ ^\ < 8BMLOST9TQRwRSUTV]x[WUUUrVZWX1b_hYU T XU VUT W [ \\AbSkf_ڂh 9{oLިۦuHTŸ[ЧOD75 PȻ.9%9 v%Cse/otzIxIxYw{xm gbw ~P <ZיbL5ϐ ~Dq&{h2-uUE^FLOMQMKELLDLNNPPNMM.MMk^ !6 F|(c R K7IdKLMqLMcNUMEMnMQU[Y\WVMVST|WiY,ZZ[XXTS5W7X*WVTWXVW6VU6SVVWmU WZWW;VWLYYXnX?Y X XjYZ=YX/XWXmXLWiWXzVWPVVUUUtU TUGSUTU_UWU V T WdY;WXgVVUVW-X|WWrVVXW'UPOUPUuRlSRNOO5MMK!MKMJNP.PUoј.{ c W4:>wJJMWQT1QMjR4TMUUUUdYVUyTSUVVDWf#jU T NT U TU WY[[X^dfb\y `Ƭ֥̤ݤB17~]'21t@"x?б 3 ׍ƁMqftbgq{D}]umkr?uss ) ~Ӂ4:ҏx~>aJhBZEKKKAMJILLMNOQgPO8OPN 2`  %Cpi] vN JJMdILJKKK+LOPWM[YW[WFUtS SU}Z^YXW^U UGV,WGVV$UWUTZW%WV1U/VV5U?T:VVWVWOX|YViVX W tX Y ZvXZXCXlXyXX XxVW?VUV+TTFUNUTRtMN&SRS V BV BW V VW)V@WUxU V W[W0WUrW WWWW@W`T6STTmQSRQML MzKNtM$M-NNP3Pt[~z0ڸгKyv l0F7DD%LO~RPO7Q7TVgTQSTUASTTSUVSVW]wc}T 0U PV V 0V ~V yWuXYZ^ adYi%ݵKʦnoŤHi% ^ j%uI%)1,1q .|wzwx o *gHrFx7st\sfJf n [spqׇ [[ݧ«ʛɉܕtފ{-iP;>JKNMNL5IL2LkNZOPGQ'PlPSP9QS k  zc ] RMKJZJPLN?LQMNLMOT Y\4XYfV?VVUUXH[[XpUTV-VVEUUWxULSUVxUTUVWW+UOUUVVT mU PYWXXYvYW [ Z][Y$YWXV WXXNVUUUPSUUTSPMMNNO R @W V U V W VVU/VX8VVW VVBVUTWWUmUWTSSRUPuKNMLNN6NOOsRT[i}Ŝh߳"|"[];= L~NeM PRhN0MQSTRTRSfTTUTV>U WWjVX Y S UW V eU U V V Y_\\`tcedgl  Q TŞVfNIHN˔ɋpՄ SݶVSL؟=+ϥX[ gxl _ %}̀wrx| yqmpBsor% +*ڤ@oTÕă  *x YH&:@/JANOzOXWSUWWWX/UWVVVSUVBUUWUVY|VVVW}WVQVUKUUUVVX"VUY:W XZXW jX V W V UWT5XWTU V 1W TPmNP(PNeMMNRXY}VWVUVVU`V+VVOVdU*UVMSTWVUUYVrTTISRPyOPN/N!LILMoNOPWW6V{ՒjqB^& uhO4JJMOTOOAPRRrWuW@VVXYX|TS{SUVWVXYY^X WW>V'VKX,Y;XY] `gj||ȫʢPʕ߈ʖjlqnʬģ<z U(ON Koz ]n c nywzzwʁvl|rogko~  ׉ԋ e {ty V ; wPqprK(CYȏ ^Pk;z;LZ<HNkKM_NGNOrQR#TTBT0UAUPKOU$\ {?y9j L uDJLKLK J2L1M;NMNSXt[_b]Z>Z&Z XXU:VW_WZW+VWWWMXUVVV8UUVhVWFWIVUVWWXVWVWYWW W /WWTW]XbVVJUW9WeWWEVVVUVYVZT U W TVW U TVUVWV)TYUV&SPMNLN3NOL S VUXUVUVaUUUiW XsVX3VUUTQTRS SSRSQPLO0L+LMxMNFOPSNg @}Ѧĝ?~F> PVMMQVhRUTUXh#pVZ W YS)TVV%U U X-YYXWuV 2VGXZ:YmWSZ(Y`%h~,Ȏ >' Ԛ:n* | |~ ܌ S˝  A dqҴ[ `{j_ \ _d4psXb zY ` #nBsqifn"pr  ')%- yؑƝU2N'y X|ӓMrZ'K @ GYJ>M&LMMNZORUVVScQqNMOSaWa }M  8Y U V JKK_JIL'M+MLM;MQZ ^_*\n[[xZXSxVmWU yUVYUUSV6V TUATTPNLKN OOP CU9U]T&STUkV{UV6V VTVX1VW@UxVUTQUST?RS#QSORJPLMmM]KKLMOPSN /f#w0.BɛÜF8 QVGEmKZQMRTVTXWk UUL ҼMЎ_TGSUVU U S W?W1V(V AT oWYZXXXZZfCsw h@ # {oni| / 6 P  }  ."uX| z w^u:l] }[Z\ <[ Ylh b J] ] f bj #k8orт՜2Ru v v:ұQEgVbWm7rwGDIL{LL1M\NMOQUUU?THR P.NQSW`ۈb q SHUT JK1JLKLLFLLLN0R]_^\\!\]YWUVXWYBWUVVUVWVWWU XYVX3WWXNWQWhW #X )WWW"UWVUVUEV#TwUW BV UVZWTUV,TUVtV VYTfQONOQhU@S4U0TTT@TUUnVX)WQVNWWbWVVxUUURRO SRR`SQTzPNNN8K!KMLMqOPNP CcyܟާT؞ ]R9 1I PD*??1GOTdVSX_ _ pU`VTV`W+VS[U YU VpV0T [V*WX[YXYXC\&dd j7yޔ1|}{ Ҏv ~ phs\v  % ݁ }  | r{{}{sVs2nt {|-z|=o2]5Y *XCX uroh)_ a If r~ Į3ӯ/yVr%Ц WD/ʜ6F%l&nid DaGJOKMM[LNPOR^X;Y VRkR8OMHOTCW+h! mS9UQHJLzLLBLMM M3MOU^]]\\i]7^dYWSVuVVWgWeWW V9VUGXBVW'WeWVXZXWX@XWWCWNW.WWsXHWW 'W WXvW W oWWWVWW UaV>V VUW%U4VVUeSgSQRU=SyRRQSTtWVmS?TTT3U UVVWXWVlUXKXFUNRTUUTTRYRTSTuPuROMMLIDLM]MO>P PTSq  7ۦ˘]g d> *?L B@V>[@KHR@UASVU Xii[zW dU TVWXuU{V+X W CV U VWY^{[XnVX[`*birlX Mvsr}n}~|P zw } Tw k q ' ƓK ,} { E} w|l n(wwpsp Vv~V}{gjb e z_ z(vrmkk v<T< ۱84&ܪȶM'g_qMLV @CHKNNO(NxNoOPIRHV#YWSPSQRTY[e[ d1U pT NJWKLM^KKMWMWNOSGX^^ ]]\]^)\][V+VHX9VSTVRUVUUWW/W^XqXXXVWWHW\YWVWWEW W:W3VVVWiVWW NV W WXhW&VUVUXrVGVYXVUUUT{S5QqSTAE=>>ADO VUTS oO URWVTtV W U%TTaV9VV T VXyZ6]\XWY[8]drl{t+ %x(b `k wi &{ s y }ryvl2Հ ly x y ;s qpvv_rnysz ~| ueq,rad ustnmr-~+^u#ӏ̌^̨~b} =  $~l:&Zj Î lH!@HM ONMNN[PS&STWXMSQ OSUcEܝ ׃X"U RKdL!LKLLMMN/N6OV^F` \w[]~]]])[Y}VRUWuVV]WYXeVvUCVWWtX.WWWXYXWY1X WWX,WVWaXGWWpW?VW^WXnXWWiUUXWVW'XrWLZWXjTVyUTTQTTMUUrUUWWGVWVVV~XWWYZWX^TrVMSz +o     }Up4 =@#AISWXWUWTUtVhV ]T ,V`[_X1TUgVXVWSVjVWZp[u[Z`YXiY|^a}fLsb> `p#7p5  @l a gmsuvgU`kw!sEm\X $T V fX )Z\\@V[ ^ c gn0ou| ic5e+i`wGM  G ڏ ~ k ^UZhqy3Κa1'ƛ6lI:BH4HJMNNOLR(UnUtWUR>OKN5VmM  WA INKML7KKLLM]PX\q]i_^1_\^']YX Y_g^GV+VVOWUVUVVUUVV0W@WaYUYYWAWAWWVV=WVXUX7UVYVVVW.WTWWV W WyUVaUVUVUU VKWNVRWV+WXVWWHWkWIWNXW~Y"XsU ZY2XWVWXWvU V VVFVXKVWbVTPNELOOOP PaNNMNTLIOQS:S FR t  ׫9Įϧl™yh N 7 EHuJVQVW?VUWVV UVY9ZXVW5VWVW'TUWHWFYh\"[[ ZW ]b8eYpR 7ߥ: p՝ɔh YW ] h |uۆepRd8cllZ RR PY [ }Z [ $] a Glp%@{I JLOOFM'N 9TWUU]SQMMQT\ xKk QVBK0NtMMjKKN#NMMQ"V]_][XXZq\BZZXXRVU2TTVVCVXYWVVfVUcTWjVGWRWdWjUYVVSWVWWYYXWVU WWWXVVVW_WJUWWY9X'VUYV VVkWRUsV'THVW_VQV+WkUUVWW~W"VW-VVTVUV6UUUVWWVV U X WS W|Y5YVT)UJRXMMP|OzOMLOQNsMXNcIMPSUjQ g  ) # /lM7g,6:A&J,UUVUTVMVW VV}WkVWVTWXVVVTzWVWZu[OZZZB]ebfq n̟էqЬΘw psC`Yd\S\ kk{zr7nqfZjkgN` ] Y PX]] ^ `Vjp.vrmRi#el<|$zQ_\T S hd{oՓË}~]xs h#n Sh Ki e\a#[d%rגb՞՜~UJ? BKMMN-NMO\SW?WVTPMQSuT_!0 UJCEJLLMXLM@NYONLNSY\YYY[\J[gZCYXW)VVWXNVVW(W}WVVX VCVV^WfWwX VV!VMVyUQV0WWWhUY=X5W9T VV%W&W2VW6TVUVWZYaVVV[WkVV VUV*UU5VV&TV VtWjVYTuV1VSVVzVPUWTUUVUWZYFWWWWYV UUfX VUT.USPNPQiOOMnOMKMmMNPUW[ hB3 n + +Y az| ^ 6i<JSTVUV1TUVU V UYMVUVVvWYY}W{T V UXeY]7['[?\^]Ubfo|ޗ eߤ}(zۜy f e`>jwyuz"tn%mGpJt qb [ odgjGuvH{|2zqoM{̓TQ$wo]aobv~ԈԀ}f mz~ sh?h bZ TZhp4@xUNFExN+PNOkOgPRTWWWoSPHLR1S(V^| K#1wOKBJMgMOLLKOLMOQIW XXW|XX8XYY;XXWW'WdX6YX-UUTTrU\STVWVUUVWU\U}SUVVqVhVVV/WWVVVVzVRVVUV-WCVVVXXWW8VzW 0U 0WVsVUZUVeUVT\UVoWzWTTXU*VjVVW WhUT W BVT*VZ0WVVYVW_VVVU8sDUQ)GHO OMLKJOTUUsVRVTxQOU=XgVX[t ^^q HqCYHLN;NXMKKLLkNzOaPRTSTTRSVVLV"VVVWZtYDV1U\TUV>UW1VX.VlUV+UU T UUTT6VW`UVTgV#UVVV VVWJVUpVRWWXW9W W>WWzW|UVIUV@UTTcTTTTT~TWWUSVITZV1UwVV#VUgX W VV=YVpW"VW6WUU&SSWSiTVpSUBThQ\PP POP OPPCOM"LlMfPRR YU hlĴԵ *[)"  K o:  YA}FOcRUWUSTGNMNOfOPTiVUVSUAU`U?QOUTeSiX_- E nIaCJLMMMLLKLKtJOiNMO0LM'K NOLPQTRSPUTSTUUkUVWXWWUTVUU UU'VUxU>UVUVlWVaW6W MV V }U pWnWvWV|U(T U WWlWWUXWVbUWUVYWTRTTU'V(UYVVVTEUUyVUTiUVUWBVWeVPXpVW3VTW$VuTUTU8UVoUU ܍ _" Ѓ ؠ u tJEMPUWWSTTUVUV VxUVVV-UPVOVVXZYAXUYZZ\__bAip Dٌ Zjpxʥ_~gg Ht\}6n_$W Iymq  {w\|̈́^@zӞ(w vz>/6ɗ_,sVOF5GN^MMxNkOQ=U8WWbWU|SNLHM:ZIcX[n/gGENLMNNkMKKI^KNK LM9KJKNRLKKLiMLLQQNOM/NNQUUUVUVWWV\W{T U UUUU`UV)VVVVUWBUVV V V VZhWWZUW}VyWWWWUW pVWU;USkUUTT SU]TTU V V$UU_VX$UU-UeVW7UUUUUVViTUVVUVLUVWVZV @S USPO6PMPoQeRUTUQKrMMONPfRR T opw"%  !z  4}TCKQVY+WTT@WTUUUV*UWUTW VdWWZw[~X}YYZ\^b;i1o  sۑXRɉ Қԭ¦5ڢHwotrd?^ a bj q~u` QRPgS]d JsxutrOm {n Sd g_m%mmxxquAƐ) n܈qGd}dp ݡh1}_ŖguZLULKyNOVN?OPTRWX'WVUS\OjL`J+MQQVv Ҏ iC BJMMMLLIIMNNNLJLbLLMLMLNMKJ}K}KLPTWV%U@V|WXYW:V TUOUUhU`VcV>VNVITyU'ViW`WX=UV{VWYBWQVVRWYWWaT AV*USVUVTVaU VVCWXDXYZH]^:]|cMaerkLw u˚K ܮOx9Tfh{~yz}]vb_3e e wi edYW ?^jru[vx qfe p~wlsl3q#psL{+l| Tg\fpw/ߠPp!~_YTMK _L|N"NP T bW X zWUTQiMLM_M}R:SYs MKyGCbKM8LwPMM MMNsR\VLLLMMpNN(MM`LLpL0KLMLLINlPESUUUeSV?UVWUTUiTS TV{VHVJUS(VWWVW>WTVzUVVmWUUW V WVVW U nXVUTTRUTmU2U5SUT+PNLqMPRWV(VSW*VoUUV)VTTUU[VXWU V$YZag\SWVVmUOSUV5TQfOONNQ)PAOMKNLNM XR S[Xe ~ 4%W  S԰ GR D]QNURVW{VBX`YWTWiW/WSWUUVUXWWrYYZ$]\`_`|ctf[t ݣ \I u8"Lψ$e#Hzuo{ br s΄&s 3h &V UY a k vyYˁtm xnu@noo2oon| Dm#| 2h9^^iHpxZ}RslY\WO\LlK WLcOoQ TV V VUTQrMNPMQGT V bE  r JAKWLMlML2MHN?N3OSQKHKLM3NLLPLkMNhLLKcKKuOPsOQSTS2TUpVTU`VUVoW1U)TU&UUlUaVUVV8UVGVU V ,U V V6VVVVVVU VVQU}UUVVUUTESRP{N4MNNPOTMVWV[UV&VTVUU*U&UFVUVVzU R X;] f WtQVUSWEWTUbSzPPOOJOON[N:MHOLO J R ?S Z v ( &§ 4;&ߴзyC d5ONSXSWWWYWWOVVTWUUTxTsW~VX YSXXrX]\]W^_Tb_gɊ 9 //ʞr( 5 .ΪqV=JtkG<% (ՖǙX c|G[S R _ o^rHhswՁ @qsct#r`osG љ w edbiepyZ*ioϊn,\`AZRz@o _{aems%}~2ӘlJu b]`ZKReK}L M QTUVVWWTRT W+XV[yc^lW6KJWL?MNMML@NNZOOMK"LMlMEM@M]MMOSQMUJKLNN MlMMQvTVTwSuTTTV-WX8UWTW+WVVUVVUbVW@V$VYWbWV{WVWKVVVQVVVVUUTTUUTOTSRGQKOLLNbOPZTgVUVUVIUUW9UXsXUVSU]TUSQSTiejTRSNVXVEXV&UhXkUQNONNN.OdLN6OMN#O NSsUmpJ~  #o$'s 5WOVlTWXwYXVUuV \UVrUVIVWZ[ZZWWXWUW^"craYZ\dzΝ fpo߯ا:fg x  gLu\A[ <IjT  N }(Z m\o7;l  ɚD1pHl;nqt;ngjoqBh ZZbmriz9nϖ_s?]XRL L O)RVW KU VlW WUQTYLih [wjY{x iP\JXNJKLNDOMNOOQQPKNlLNOML~MENR RQNCM(MNMOUP~QRT:S{S PUDSU2U UV8VfU=V`XW4VUjUV#RV"UVqUVX VVV4VU2TUUWUVhTT UUTGUnTTT]QOMMUMMO+QUTV&U VV@V VXtVX#VTUSTTWQTOS.TdST.TVYX(W7VW@UuQ7OBO0ONOiNKMsMLOOPRKYms! |d   /[ɠwު`į< LmPuWUV Z ZXBUS VVVUVWX i][WUVTVUU UlY[dYnOrLPQv Ԥ -:aKYr,ڒ%Hσ Ս+  ҳVû"aTt7^qWc hs$}#g_ h v{xpwsjj fZ;Zcg=ig pȋo<]p:؉|_U'QW6V[TUUeUUVWUmUJTTTWTVTTQNLVNLzNOQ,UBV1U?UVVdWjWkUW CVSSSSrTVtrh' q^`)[~v6Jsts~!,ZəȉV{Fg%WtTQ SXXVzVhVVVU QQPNNTWgύѣ ' }]d pR SQMXWVSRQ[MSKL&LMOT V*TTVTR.QPxNL9OP[RW7X )t _C ڝ$'ɞs1k(  q XS]TYWVU WT U WX)W9VW*VWYWVSTFTTxPRQIECRAB>>ONw yC)eTXXmmxVjihxzWyJswd>v-mƃ   W# F F>ɪݩc%%ΥU!`sa l_Wi ~xɖFq _^0uyԧU5#|jZWV MV YYWUVVW$VSdPqMLLCRVm \ Sk WTBRO/NKMqM?MLNQU>T8PRV%WY@XWV VUVUSRSUTSBT VLVSRjOMTLGKNMM3PST#T3UU4V7Y VWWWVV)UKUUAUUCW0VXWUUUUU4UFTU\UTUUWXUSS[RcPPS9U@VUGUU@VVVUUVUVVUWsTUUWhTR+QRR`TSTWVfXXXZS]ZYXR,PtVVaRR0Q~OMWOCPSS^ iu|pqʚf #!| | [QT]?W1WV UVW4Y WhW V X]`h[Y .VUTSPRQH`AAi@hA=3CWjc4؉`]4_mziq oy"{{ywpk` k ` vߊ  H |=ma<Q)Ԕx vw qwݑ Ε\Z| aYg~̈I٣c*~thYAU >V ,X X ^X_WX)Y9YWXW&TQ4N`NmPS?k  s3YT2OL(KNLM5>JUncԔ4wbndkpH{zuozχq2{rml z 6}%Η}a " Ԗ `Ve&7zQr}f;f|Yc_Gne{IQlpB|"xrn\_wW Y pV X ,X HY YYYXeVUSBQ:SV\q - $؃p X T=O|MLyMV(UTU/VyVVVU RW _VT_U7SXVTS UUUPSSTNTVU>VTW7X\Y[\K_YY_V[XT0RSOO8QRRxmthΞ Ȱ^x5ͅ #*z !_ In K ! hP PXY[ZYENLY;Ϝ B s ]r "pus{zqxRZ}wP A} { %yx]}+Õ/h=*N*# *Ģf! Pt` 6_ kHx{ye 0XZe1mpt|rϒTA]yv 5zn~vhc H_ _ ^ [ 1[ ] &] YVVUMRRQV\rv9 l W JSfPqLLZNMKJMLOTXXV3VWXHVVUvVJUSTmV{VRUUVVW@VUSSPPMwLMVLMdN PS2S6TSUVV*VYX)VHV W 6V @S VVUU:WtWVVc _ _ }c ]gY4W3RMG??f=BcAGPZWhp~`sp z&Pxwtnnv;{lz3}g oHlnr vt{́Ɋݓy j V h~|z^ؓ^~5s[ S` zq Na[XUWb5x{ q /n u Ń:x pp$s Amf8e h f Y_ X BXBW:TQXk( mm Hzg YVzQwO8NOPMCL[KLtJNQW;XWhUzW3X6WVW3WVQRSTVVTTTR|SYSRROJKLMNTUVVYUVVV,UMTS TW>V1VVU TTU_TU5URT2T`TTTRT:SRRzSUTTSXWW>WrXWWWVXXZVR OkQQRRQPOTST@TRU*VRWYZTXYX_[ZkZXYy]RPyKRX]d D, 8~,ܹ^u. 0 h %ǃ ' *i 0WEȒ oy^ZXZV&U U V,XXYY\M^ ow ~ { v y M '{{mXJINF<?@DDcLMTct s ez؁ xjf q}zx|y 4 y wb ` \ ^)ePmjka mxp^W \eYWS 7O R _ !e !bvS^Q QSq q-yA|]։{- iSki #|oΊuag ~ t H/~~j   = ="   ƅ | y } Y  ̀    | s]mvw Ҕ|TYSXUPlPOMMLLLNNKMQUVV%TUGUTTLVU@TRSDWJWtUW VVVUVVVVlUT#SPMLOOYQUUUVMVZVVTRSRTSS UUYTRR"RQpTeVT\POMlPjQ?MNOpNQSTWULVVVVV W X1WVWpUBU UUWTSgTTRQSQXQnRQRRSWVT,TVTVYTX6W'X\\USNFOTBYu ZLr!* #QU" [p\/d n = ~ 8n\ VqU #[] k kx=y M M у   ܀ #~ ~ x   \y AyԂ e       plA{/ yXWY`?ZONTPN~M6NVMKcKNNQVVVVrVT'V4VTV*UUVTIUV5V!WVLVHVzWXVUXUUUSR>OLOcORVxUUoVHW}ViVs2t0hu&u '&i4͟<-ُM ~ . wQun^ kitX|l| |  À  1  i  } | y { W|0okb TRSXVD\^YZhclz2צ=5] ^ f o$sJu!lhZceimu.To ۠ OXT X \ a ` q@w \+yqaYnfu{| C zn,b[ +Z Z ^ 8i ecgiw J ? Sҧ2Pڣ 2 G ϊ ƒ } a{ ӆ F ( j  ~] Н Nbbe YFOMN6MLGL@MiLLtMN^PFTVlWVWWW]SWS FUpVjUVV"VMUTS VVVWXWUTW%Y%W UTnQNjKPMQsRTVVFVV V `UeS%SSSNRQPQRQkPPNpOQQQR8QUYSUU~TT ST-UUUXc<^*V WWVjTlQPSVVmUTU(RSSPPNONSQRR1QNOOO&NQM4O!MReQQPdLyJR0Xs 4"O} 0p/o)l#u )*8!׏юx =x = Ŏ݃cxf rx}{q~? BP e  D & z vy S}}l \uRSYZZ[lbdeuiu#Hbec mut@rjljhCk`luɗc Y_] ] (Y &[ _ ]lsB}}o_R] oysu{rtmh 6f dcrZ V 5Y Z]itHtDvr j ͡ )  K' Ώ  6 ] N| |  ݅ 7 5 Xɦ 8 qqo{ IigfXN [N$NMMMKKMM2LOSWWMV&W\XUT UUUyUV UUUUVUUWWYWW)V8WCYbWTUKQONUMNQSWVWW9V 9U S|QqQ2RiRaQPRTpRQRPkQQHPQSTzSWTUKTUUU2VUT U#XlcPXWXUU.UtUSTRTMTSRP:OPONiN|OPQXOWQPxNMNxMJMM OLOaRQLKR\ H ;f #p )q $p $)x $x>ǎɑKdf8 (  ʢ+ +ΙP:ou 2tv |d    C } {~ n  !| y y y{ ~ o ^eNPV[YWTXXg?kl/sl  rzpmm/khbjpqxC)  ! bk i X 6T ]  .  {3umb?a l n,kwpmuRpYo qZl j~aX U ZgEz{on  , u D ͭ -wԦȚ   X  } } ]|G  ؖՙ { )l=dSj} H  n\iNNNMM-LMPM MORVV8VUV"VrUU!UrUWYgUUVUV7VmWUUWWUVzW!XGVV QMzMMM\PSVW0VTVoVTSAQQ.QPPQLRGRRNSRQQeQ9PCRScS&W+U aT U U5V|UTQTMU]K[eVLV-VUVUgUUYTR$T/TVRMOOONO>OP%OyPPPRNMO,N MOOPQS0S"VTYg ĵ|"H"v !s ms lQۈqs   dםl ^\$ _yxLs |  p р    = ]  } } 9{ T~ .rcWSREV(XYRPcUq.o pvH}uhuikbaj@n}q4zx i` h g U Q]ī x F{pp~n7m e p^ ;eqxz~ {v Poha a G_agnp6eft  F ߨ} z[΢c 3  L  ց } P| }|o| }  q A| vr(rnu A ̈6zl`VORQO^NiMLLSLLNYNOSYW[VViT#TU6UUUUBU1WTVWUVUhU VUUVVVWWLVW VURONNVMPgT/UYWVVVWU7TRRRMPQQRqR.RRRR9OQQRKRQV `T V T &U[UU.SQ&TWUwTV6U*SSUVaTTTQRwTWVOSQWMMKNOQOODPDPPQQROPPQR#QKRSRT|[U|[z G(pҷ !Á"`s hhp "L_Ӝ` h22k Pޒ 1ӳz.~- 2 p  ܆  e ۅ k 4 : | | q h ^]^gZ4^YYb p Al -_ ]c oEpҜ}qe ` fa]<`Rb n3nt{bfne _ .` [Y .R W\ȳǏwNsr.g \ V_ Goi{ {^o Ui k j .g efhb+h(}   ~  -LGS b ц r ;}}M{2z z Ry z {}}n~ u ̄tb{UPPLLKONN=LMMN*LOUMYYVU]UTTTITUTUU ViV`UV VVVUUWVV W W X UTPLMoLPRW{W U&UUUUDTTSQyRRQyQhQQQRRRZPRRnSfSDTVVmUwTU*T^TSSTUTU3UT@SrT]TTT)TS4SQUJV)US PMLN|PPPP Q8PQQPTNoPcPQS UMTRQRVR`R@?  n9&xcj~1!K*{ύ:c NVp3~  ~ }!ܦ,u} E P p  [ )  }  | Vx n Pd [c jj[cxipl chpDhWU Y ,c } q zW*i UZ }_ [ X Z W_pq@d W ndtq^ ` f B\ [ϫ1أ6'{wma ^ g hryFwxs .tnn ts,j bfiik'q ̕  Ж \ E,Ť  3dȏ  ԅ ȁ v|| Q} <| P| N{ Qz |}* | n * 9 }i;VRRONP3OKM'LNeNVORVVWUTTVU TTTUOVU V UUUVW`WUUV(V lV U X+VVTRbNLyMORVJVcUUNVUUTSURRRMRRST:V=U_UTUXTTTSSTU:USrR6S&QPPQNOuQKP QzSUTEQOOMVRjΎ G_XZ q*Ez [>Z0s/^ nċ $ o ̦N}   q   à x ; A y~ m| f} rw v q f f +q udi_xux zk1v+nE]] ~l~-qn /ot'TZX 3g \ pszw,k 9m<|DEwgm Ǔ / g Sd ~ r\ W W V U sZUSOY eka Va Ii4dHC{zlh b \ Z !] f q} ~j dcbkxy ;  oߙ g ՛ қ      w} | r| { { | (}}8R  ob=XQ@R.N(LQMM MMtMtNhN`N]SUUTTMU?VU UzT S T T 7T S CTUV5UU U%UVrU AT S \UVVZUR{MNP:RV!VVUTUSORSRQPRTST(SQRSSOSZU?UUSSASUTTgUSTV$UfUT"TiR OPRRR+RPJHMUaVsTSWQOTTU$S{QoO9P SPQ:SVRBNONN"QN]m> 7 N#&k 'G $J/C`ޚ!bxjNt8| v On 0ubjghfl[mf t z~ r ӆ   .  z x !  ~ } y x u?v?z jr i iSuimc݌ &#ys xXɌ$~`q c Xtk  B$lQ\ V JR P [Y ] `X }\ PbgvrJh hg-#{$Sn|qa$[[^m "Dh _m ~  @ d@@ ; $Ï  T י 7   щ    | i{| { z ~H0ݗ ڢ=$ }tc[T8PPLM"LM~MhMUMMORVqWSTTTUTS S ]TVTTTSCTU@V[USjVYVTYSSV*VWVR*NOORUVW}UUUSOOS#QQQSQSSSSSR(RSJSVlVUS"NRUV_TTRSUUTqRSQEQPQ`RO^PNK6HHHR^URQ6SPNSuUVX.RQ2RlSCOOPQOL9M~LO,OPZ'f%ztÌ͚,%} $?| 0#9 >̢d˔ʇEr|- B|g ^a u vu [m q]_8jZ]Midws ] ?    a q  ʃ J | z x -x t uz s k pa|aB^[w0 x~z v wyoΉ]wh dbژ YmU9n^XS \OOT ` aen?au|nl+; 6υwk gE^d gv  pDb p  M) ' " K |Iȕ } { +   T ~ | r{k| X{ | !| ~ O_  wUZiRPMTM KL8LMMMNR`WXjWUSTUdTTlTTUnVXVV>VgVPVWAWZWEW VvWX$Y2Z!WUPM FM NQTWWRUV;UTbPOQ{QQQ3RRmSSRRQWRRSU>TTJQ(NRTUFVS~T}SdTT TR Q!R RPKOQYNMLKHIhNPOOR`SRRSW_ZUOdU RzRQEMyMLNO>NOPWG_Ymy] R ~~ = \ w2%F2z p xip X^/jr ymgj[af5n$dri} … b `   5 φ ń K{ {ww y [{ Iv u z(qi z\R|Xfsfg ^s~ n|ts~`~]|@tyĄސu]0sY RRVR \iIlMzYzrvq Ш ٪W?z{o f ` j{ x} r u  mŨѦ  X z8*U  υ  ~ | | | | | } |{8 [t cރ]bRYPOLKLLM{LMNQ6VZZVST*TUSTvUVVLXWVWXYsYYYXAXWX;XvY ZVPM M NPS_WWUsV U-UfSQOfQ$Q PQQ?PS@SR OQ QPR SHSRmP QQbTUSTVUT4SQ{RPQRRUPNLLIGIJLJyNRPQTVcSKS9PXXWQJRQGS'RJL@O-LONP0PVW[f)uq] դ  ٠,Spq" }Ç{ n u͓{[bgj kc6TS^ahq:te`nn| $  % ׇ   @  { uu z +}qxy f{o f pW NYrme Kh z zt]y{ɍxƈY{~{1{)}o^]W \X]X ]nysOm3bqStɬ!, lsUXܫ&x*z2pOl7lmtl ֔  R~u By Sr 6 U   ˊ ͊  ̍  Ո ӄ  u}mz y k| } C @ ֭ڥ Ӑ׉fRRQ?N9LN"NLKLWNPU[Z>ZZ-VUJT+RTuUVW5WXXYUY[/ZZ%[YtZ XXXYD[*XPP{L O0NOQU VUVVTUROPwPZNPHPHPRJScRRSjQ9OQcR@SRMPQRRTURU}RQO,PgPPRJR NKna \ ;b :^ `nyxhYfpWPgܬEP}ʥ~xs|qh ?c s ăvdb ў =D Җ  > U l ƅ     Ό  || sosy | Ƀ ښ#uM בьlTnTRQOlNM~N1N=MNnOTaYZYVSRQTDTU7UV8WYYZZZbY`YfYYYZNZ}ZY`XWRnLLNP;PSVWVV}VUURQ?NPIPOPQQRSRSU1RQRSTUU&RRRSTT|TRR?P@P5NNORRPJN.OIJKKLsJ LNRStRRRRTRQSRQRScPNMR'ObMyOVKW _*h{k ( gѝ} %W %) S &{ 'Fojns s4p̃ h|wCucva` cPfJ4JLJ[HL&LLKMONPONQRRQ*S*R:QQR{SrP`O!PPfN`QVRjZMaEO04 )~&"$#n'1g b d ^kڔ W}rw ^s ]U`fh f h mnu4{  A~| s F $ O} Az z ~} \ u i rPmKZKtOTlYgu yy]ptxy#FӋR~xurrBs wv[u)nbkk(cZ Z^ Ar%pbSPUf  ۦ˩u6ҭPӨ#!-vs|w1tAi^ _ i !quoh(j L|kɕ# 7 v ~ { [z 5}  W [jOsCeKi}dO S 'ZP%ɋӋJ\sV&QANM^N MM[LMwMLNQQuUYjWV>UeRS"U%UVBSUXXjXNVUX XWdWUWYmX]WX_XQMOkPPzPUVX8VV1UeQO;MQNONLNPRcTVYX9XgURYQ TXV1UPVqU%STQRR+QQ8ONNfMeM MwNIbIKeLJZKNJMLL>NNO N_MS}V RQRPNQSRM]NPkP}NQaR_rj7  X%!r%~ %7k%mi cYXw~w uilqtz sy \ PWd~r s )h stckSvBy|~I|  g { { } H} { lm ]~JFHQ$PQYj sppPlp^oRnZUjX*~#|yAsuqp wpGnnjkfd_UUS] c e V WSf1  ֨  !(רAϟHsl%g ` _3f o Uy{~.vs[x !w ! } |  d z y x4 % .  5  ro~/  # ˢ3ܤ!} IwXLKJNOKNMMVLLL_KN8T>XVTUT T8TU U STY+ZIXV@R%QVcUW]WIWWWUUXjV]RO]MLMN TVWUTSRNO O3ONLNaRTUVjU^UIRQNRTEVVOTSrSSR=PPNQO=LMMNVNtOJIKcLqKKML6KrNuNVOOFO'NRTUrS RQBO4RTRqL cPAQONOTtvږ S E ՚ t (n $5k !iY GU_w ۞6}Lp kl q E` M2QWhn [f _\Ha;`kG|}z,z/}4|y}||r z yS{ v x_vt n _MSH(JPfNKSodd _ +d vn $ol|VZ 'ˌ"5~ulxhe mEmkOc b\`W RRO iR U g j b`e? 0ŪQ M! ک(1Fnsce i gl Knnw f~{ryzrq|__] ِ { v ~ S E Š  } ȃ Յ |wilu ƈϞS.ڤ  Y~uYaII KN+NLL*MLuLLNzRfVVTgU#SxRTKT S _SUWZY{YvWSyOQRUU|UVoUUTRzTGT`QPMLFN$O>QWWVTTkROOLLLNJOPRSrRSSQ^PP+QU\WUUSSzTRPLMMjLFJLL^OOMpKyJhLKSL#KJKPMMMrLMOVQTSTXS:RiNORTQOTTP OPA^V Ü <x7z p}Z{ u {ss n!nl[ Re n>i vn ikPLBOPWK_ajT\Vb)k}}`{yey {{+pEe!lgq wrkoqqocOqIKNL%IOxaYc \\i o _pBx s3Lxibe` Y enm|b 5\ OS POP jM K O 'a t (n\ {$_KԬ: S^+o}gpe Np )yzjuwzv (omWmu d E sux  ̆ ́ { FvJ Ê    ]ҬĩȝЌ { {u>e8OGJ &IVLWLvMLMLNnM_NjPkTXBUrUuTURS7S T \TTWV2Y>[rYVROPSTVJS#URPQS|QOML:LNXQWW~UUnTTrRPFL8KMOCOPPQfQRyRNQRORUVTTQTSSQMLEMoLLL LN^OPLKL KIJIQJLoM5LM NOQUxTT#SPMNRR]TWXUEQJY#r.2ˤxn`ltz  v%{svr;\OXNotb_ rltOK|VO-RSB\8auU]R5aglrvzz zykl`gjv wnq8e[hnvkdQPHJ-OMCJ|LW \XlZco qqz}8~t+c5fc [ _yntl` W OOP O ]PFZ j_ l h V K=!Y*]Jx2Ekf XC 7^l #h>|xaO2H;IOEMuRXz\ /&5 )߈ &k $Ԋ ppb Ikk Qs 1i _ )] j 7i wN_ k zt]V_qu~ s gBnx{|yp Hy-~Q|tivq El %_g!jebad^YRTVPWL+K^l h swxēuփxd}oirp tw,ztorsho;f ZX Y j "spiZ/dS!Xy`5@ghf k oog ]s]f 4j m kbe a ea }r9ߕ 0 X ρz z 5x ax }'W^Q  z xvx8 ݗ˃nx]]\}HIhLP,OOONOMMTXWTSTTqSSzTjT T yU1WsWY][ZZYDVRPhSOTlS,TXTMMLRNEPRSYA[ ®j|` g dhdg Xk Wt Z k s[SY#iw ؋  Tt>hepy\~z y/{X|uo{ yzf^H`bosXsj-S~L|}m"}"fg^~Wg&_d l m f a^gs Ls q pm7jm if _dxH(ˑ Qx ]s x  T~4Q   ~Nc{|  ]. L}Օri j4HFjJMhMNOP*PtNM[TZ [WTT@T SRS T T MU WDW,Y|\lZ]Z'YY4URR9SfSDUVSO~LN9LOlO*NPSVV7XRMHKTL4L]LKLL}LO MKGJCJPWWVT+UgTTVWFT!QNPQ~QNNMLL LHKXL"L(IMPSORRUSKSSPQQU0TOLOSaM sBy$"| %Mz! R u\~rkDm_ fic k 6t z=q ^z} c T7PtS\Zb  ;  ihyn(u}o{ vy sm~ ' n]\_qw F D     p S{ w {˂@ NR̊ W czѢ~SIJHMfNRPsUp] j !tQU[PnYT]YPTRTKSTTSTWNWaWXVYYYYY.X,XZXSQJTSBRQvOMKYKLVK/LLORETUYqXQKyKKMVLL(J]LMQGE~JLJMPMSWV6UjS RUV{U V bVUTS9PRQ{QNQOOPLJ=IMQRSU5UUUVSQONMOYO%QVpC '!_s`zmb4ist#|!>K95e vN [ UX u\rYmVgˀ!*Jna^ RUPUthvr Ռ x m a|vogUh2sv28Kz [y}uxszpno Pr sx Eׅgd P^ h܂hiNȋ%~td Z W /[ [ >XY b KsqR` aUPn[ lq x4Lœ  rmaye 'fr |  ֆ y |@xfvnb _h eq"z~߅yDŽ)  t x ~{ -  b  {   Dڔ#O  >v y6~~= S i ҏƔޗJOV2K!KLN4PYm eutVUY\$X>TT USRRT UzVWWWXsXXYXE[,[Z-TRSQPPNNMMKEKjMLNNRXYeSMzKJKKKKN&NIFHJJ5KJQ=UUvTSRRUV WWUUTQQ+R S'R Q}RSQQQNKLOSDSUzUwUWRUS/OnOdNMORU5ZbyUߏ D }0y ܀w">u&s $yՔ9c1Q U`^l}wi d w9Ulyvbf Kg lvx a s ת/z\yd h j .M7ڞHą't4rrk/n os x| C pj^ }d '|!͌9sՅrbA\ {^ h b j` U }Rb heh\ QWc 9g ʛ!C Pɨ}Ijo o q hz 5T,؈  nz/rwf aXh zr } yފt y y5w|pܙ  ϡ  ː$ 6 ̃s^zXuF   }XJKJMPlRW\iR] 4wYXZ VSS*UTT&S WRTLUVVW=VWWYZlYXVS>RSRWR1PONMM;LLHMNpPO%R>XXVO|L K;LLMLYM;LJJ3K6JIH{J,LQTTUTRV5WWWWUYUuS[QRQRQRhSRHSdSR;RSNPU UUUTUU'RNONLO(PW"a~ 1J~˕B!y% q!zz>z~m -YWrb|ynC[J^ r.0} {  vwq a ~ JͰ2cdlhKlz R99- xEoolm dr vP c  ͅmj t  ߏՇS~l^_ >f olVn2o] iMLR a[2i` T^in:<j  5; c y\zu Un q ~- E}Vth /i :q v  hzx  }uZuT} +#  G :| xa)6 F )(   v$8.dLJ^N_PRpV+^ ^^ ` ~YYTVWUTKU VUTVTSTVV:U UUaSWX/YkXV"QS*SWpW2SzRWPLKILM{KLfKM?OQuVZYTKMKLLeLKM MKN0M"J{G HJIHMlQSUVTWWWVVT?SQRkQQQPRRRXSSWRTuQjTdTUTT:STSQNMO-NNOO~S ouvz g xxk j , sq{ԑEyauBzppiszk _]_ {ɝ@Ǒ  (v DplSOdZ3'iKgr"w{| H*M^oJySh uj!k n o qu ڪv ({ | W|&ߒ  ڙ6gse:g }hhkoElb =RN T _ >^F[oh ouޟ- xo-b{ke t ,3So zM  noz  Ւ   i}Ztomo7xā ͒ h & Ł G z-{I  YőߐR (  Sz|X S  ݜٝ!ymOHLzPQQ#SDTSNVPUWV|UTxS\VVMVVCVNV:V#V\U IUVU XZj[ YVPWQT trʫkeeowu {tjw"jr ǖ L C }Rrl i En | ؖ m  ~uvtvL g  نywg ܇*   :ؠr3'ZLM^MOP"OKWJKAJIIFpGJOESTWV~VJU$V U U S S=QQLQQQRVRyQ SyTBSCS?ST TSTMSSQMLNNaOAOV[wgz[Y(XWRPRW[V(SgRx ߢ fv JGJ^jj X^I dȰTuNFAGF[p)  1ŭў {dovvHor8 -5ɇ f ]^v_Rc)p q:b c wҥcoux)xs c ey{Vkb :[ qQGLZ_ k ?ok (aZ1߷4=ܵձZ@%y PW ct$ʙoSD3@Skh   ` RPyÞvlݧh _MHBXd `i ~#u Eyb mQjqr~ Ol | # pp qtVqr} Ҋ (]_F{gX Th m f b e,. p7,ʪ> ݇u ,f t_ qoB` ] ZzRN "Y _ 4e j i pܹNCŅoc f qnwTQ  D  ̦tS  p QΖ|  ֋ a8yF 2  5 m  } d]Xͺ ̞{Y"OUK1M%OQQNQSdVZ\WKU.TUUVWSXVTKWXVVVX ZpZZ ZV&QSPTUR\PQQ9NRKMNLMLMvOZR UQUT[R]NEJLMK?LdKIGGmJ-MyOQP*K'H5IHKMJ LO!NqMKLK=PP}QPQSTQSTSOT(SjUU1VWTQMXNM@L[NLMROWpaev} 0PǘcQD-Xyb jg}͎X@i d Ke x g1E6- \IUrmgpx ɏ 0L{{ pxD~ m \h c v` %` v qtuyw|N q  UN_ f f :b _czmuיɰ t {jTޓ|kzm~qa u] _d @X\_b f f m >ϸFAR*O|f $_ Eg m â ͤ =*d m    ?ˋy ̀ʕb  ˳ Pڙ Y *8ͺ͖^LL!OQRROPV/Y[[WVZVUUVWXVUVzWrUVHTUZWYXXUSHPSVRP'QGQO|LbLNDNLMMO PSX U1SNKuMRLKDIH#FHK/NQPsOGN JJ5ItIJFGI3G4G_HK_KTON;LK LQRRT9TATU`ST T MU W2TRMLL[MMMLOV]{ NU =Ss /b?Y] h u u q{%y:_4AThsR S jzLJCjʃ H U v k -rv jq eQZ  ԧ[ '&xQtxIxy5 v   i @OhY=b /d Z Z R U X Zpț /4ps IQrvtbs*p f Yb e Gpnjhdae b ^ )f ׬8^<  j Z I] h w> ] A  e+B m՘Ɵ¥  o ? ~q #r y ~ ̄%"'Cî C ɘ L?[]rPJOQROOUYZFXUdUTVVUVnVVuUsTVSUVxUU:VcX Y"WUT;QSWUOnO=PP5MMqMM MLMN+P6RWUU5NJ|MZL,K JIHILQRBPwPMI0IKIIGFGFFGKLNLHGdKXMOQRSV:UTT @T U U U $QNMKL%MNOPVw^wǔ = ~ (ORg - v V TT` v vo ||y G {X` {S0y  jisVuc y }ޒ9a_Rn j i d R txo u x\t`s Z}і  ЃTGS&]bSQP5M RVsfi+; W| An ~ :rPX_g h nf iws{tkfb X d٤2 Ȭ 6@ ـ f bf *ms  8  2 a9¡6/ 2  !-s _nYn^r $}.+Dw % 2mdT ƌ ܌$%.$w$ WHNQRQSUW bWVVWrUeVUUUSVWTUUWV&VPV2TUqVXVUNTR0TOWTN(PQ=PNM2MNM0I +L ^K NRSURS3NJM3KPKWKIIPILQQPQNjJJxJdIjIHE`E)GITJLOOeMJ'HK]K LMLOSTRVTIQR/QPOuLLZMNqLNL N QS,TRNLMLLKfIIJ LQRQ;QpNK1IeKsJGKH^HfHJM+PiP`OEMIJ$KLsLJGJO>QQRSRRQNNLKMMNHRYbe]Uvq AneP.CM|kR KyMUooxj Dnp=tp OÍ 2n_` u OiP\OPLXU(O CLQN1P t́ n`XGhGK]P Uj^R]s  Ě oTY XYg "el [p_L\.g|zNnOD]cddgki Qr #ovdk~% p0` S 7Y #Q 5\ ngqy*t}dc e4=qix# ۖ7 ,(Ԯ , ?{|nk k |e V^6z%ƙ( ʮ|NR%O&:ǚVv ؒ; q f m Bp %s %v ~HdjL1L|SsWXVVTVWtXWcVVVV V)VaV\VV/VEWUUV[UuVVY2XTST7TXqVURRMR"PO`NRLNkMNL N P-RT\SNJKK}KKJJAJBLQS'RSNL6IJK*H+JaK.IMKMOOxNMWJLNNN!KH6JOPPgOcOENO^NMMMM_NNOjTF[^c;d%e7nx_Y:KVkg:\ POSj N~nn cfK^ k ~&qLZ T~i xFs m NGHHPPLZ zym\ qPGD H]IT`rdU2Za 9} 5lW WXd i Kk Moc9r\ c jjmlNLQ^ fdgqYpr{yb f ir =Ty?i_^W .K Rc fgk[ \ Sf q\A;a[ϊ:Qٲ B Í t _i j uΩ*̮Ѧ̣Ӫbe ںk 1)   N ;yh .g h !k $p &x#O֟j/o$MLSVXhVU*V2VpW2WSUT [V JV'UVqV7UVV?VKUVgUTUUWWsUTUTXXV{SR QQSOKLDKLMNP~RSU$PSL/K`KK"L(KUKJ]MwOQR5RO#LJ1ISISInHMXLPOOP#PvO=NNN OUOFAGJ ,Yckj i e[` xZwi ^ *Z\]an#mKi_ U Bk {Sr-f RR_Kw\yg{eciIqt v!ws] _ vchy *svrn\j&SOUe b x\[[P ZRfJ#5"\BCǚr%^8' Ʈa| ך } t yy!z||<.,M:ӛ֤\|ɦ dò#1 L)>ulxVl *j #&k (s!2 hKv~QRMNQVX`W TUVQUUVUW V4UUUjU UUV=V-T U dT XUVVVVGUU!SrTXZXVS RRgTSMK2LLN-NQiQKRgTVPLLLKMKJwJNRwSIQQOlOyMlLKK JNPPP`RQPN5QOlNMNMMMM OrR,U:U,O5LvM[LMNMNPKNAKTXctCKqSQVm Dqq=x-tx`ARU`e6h \]NmK We` g qj _ | J){ SMe rd -Y (_.h ln`fRwLL bv T ] Z Ca]gi Ck bOa]>blBsotg Z q 9֌mcb ljskns(ySynp^ {\ \^(d Dozmrjg _h Y j\z gn] QVH `OfU@ݓdٞ7v5y I} ~܆ ?Ϭ+,m"}$y{΄ΦȫԔ  Q 5O)ĥ  ʦq[ Bp !h(l $yQzzhPKP&UXVUV|V6VVZVqUU UUT*STTTSUVUV%UUUWWVUKUeTWZ`YVThST;VV[OKKeLKMP>P RT.O}LcLKIKXLLKgMgMPfS~QR^QSQmPOLLSN;OPSVTSQQNM L[LN"NMJN$NW8XOLMNONNMO'N*NSXk{ mU]]k Cnqy{w5e `Y\_uszH u UL`O X \ Se \u v f ag !2ok\ b r\j] ~Z]q z ma\R q  k ]]j^dmlwctg Cb kossphv ثZJ %~xkzdIm~qz?xlb a Y Y )[ vegiql of j ^pTLUr XM&FQk ٜ!lMp *7ۥۤ@ Sp}/{}56$$Ư{Y+|"r{̣ N :@ y n   ;":+   Mm %wr%rv BB)|4S]L6PUWXVWVWU V9VVVUUUuTAT&TTiUl_ e /c \ YM]m y p(b^x k ezhnsw j %iMp ysIm?m0px {QǏrbmrusImfYiN[ TLU_ >g$l k mn{ [ h kMHFPd xVMyfy~ fŦ[zr|E|mhvԇNeǮCÃ~Y]1.s, σ= s ({ t l U  K * 8C ßBx[ܝ>R|TNQV;WWVVWV V VWwWUUjTTUVWiU&UUbUUV2VVWVV]UVXUXV"VSUT@TVWQMJJJJ\ISMOPN~KJLKtKM>MM:K:MQRQQRSSlRJNHN"OOYQaTVWYVEUUtP,JJOPOML"JPU.TGMJLwN,QO/NNsOOMQQV:^jk|dVg0_ T_ Ekfl ksrhem w)}yw~|qSORF[ {\` +tl  F Gv"˔ n^ ] ] V%\g  E ! Sogp߫xΜa} r kyh4kyio Qk LkoK{msobhd r%uaMצ ]C inqpomg>h] >OOV UUUVWVUVKU}UWaV;VgVHUVVWYXVUVUUUVQMKKH[C,@gBFKOKKJL LpKaMYOKJKOdRR_R|RTSSDPzP)PPTRS_UyVU|UsSRPkJaJNOPMwLuMQRR`MJ7LNsO[NwKNPQeRYv]4`\]=YZaO_f[bqr {ywjc e Ro F|-Y{pr=kd RzV7a_`bJqI ˛ linHq> mZ !XGQwU X |$| hkQCns ao _j h gf dgl p ts;qn^^ k rsv ʎzjCmk kfgad ^SKMS[ Yi`ombs /n oX AAMJ qNV e<SהM$ňzyzE: 6{i̘1ƈߢʡZo?|   9TwL|# eķ z| TLPVVWFWfX'X$V]V2VXWUUXUTUWWW4U TUgUVV VVsUV(XW Z^ZWVUUUURMK&D?=N?FCIN%M LKKIJKh XU{NwRiN]k\T'Q]j | o b Jb e i cn l&iJgn v~ rj b OZP_ npc ` =Y e d fGe j -jje 8` ^^\ z` ^NNWV3f y eT] a?^ PLVA8@KN;PϪߛg4ׇ}y}0 ])EO?ŠN!Cjw^Ӯ(  ܪ #K֢~[  ]N&!/PY/wcȝ(]NPUXWY]+[SSUXWUTUTUVcUVTSTXVAX8UUXRVVY[fa4cZ;VVW@VYVUSOIAA=?mCGL+NKIHJKhL3K,KJ"LTLLQR+ORcSTSS_TQ PSZVWW;USQEMM ONPP)N'OPUUQdNMOK^MOONXOP2Sc\NNKQ`g ` pyyl b`e hypmhO wLNY Bov o ` [ a l n(yr] W7R~M YU ˗|xhWXONwOND @ !Po zl c Pa ` _ 0e Jq>o]l k g tyHp+`X +jn4a W PP M V X_zf y wvn^ b ] -Yo]t]-X )RZTO0`tC\ L U.R-J CCJFFK K~KnFxۢCCs4~Е$/Ĵ`x#?tMUٶMB ,"FEӬ* ~ ( !& (z 'u ;v6 HnpTeNPVNWW\in6WQTY;XVUuU7TU\U#TGV[UwTUVSWVV^WWX]_^[XFVW+V W=VVW PI`CrB=]?CEINwKJJJKKKLK/LAKADKLIJ$M4MLJKL LIILOQZ>f?AAIeKJTMMLKJiLLLKKMNRPbKJOsRS{RRjQ+SpRMRULW$XUR,O NMM_MALO|OQTRsOLqM^NMORW1e y}׌yRIt b]ci 8qtuo@ruHc ]b p ۅtc b *g c fLcjc cZfw u ` { c^7Rd Mm d] []C_ X] g b U,L 6]~ &uk j m_ S [ ^ ^  ZWc  lб p֙{!rł } 6e Y ET T .Ye 3 ʗsF cx}|w{UwiwUIM3SSMNZ a WEX޷0~ n} Nsȗglq˒ך b iLa˸.߫_^_r.Ԛ@ѢX _$հgΣx ,S e  )wy Ӊ$`z KіinJNTPUUVVUUoUWMVVtV~U(U'T U VW%UU*VVW(VVVsUUTUWWVWVW3WfWEWUT~PLHD>>@HABDGJLJLLnK&ILKCKL$L_LLONLNKfNFPT'RQS|VFSST~U@VU2SQNVKL~NCMO~P:SSQ:NLMNNQ$SUbVumtia j zlr n Qda^`mdpnXce Qe Ya s( r;_ [ d q }My l :^ a m O~ {"d XJTg _l ]W?U R 1Xb }m eO `Kx ~ } Ez !zi [ GU kS sT RS.Si !u`7s$zs i_ @S &Q Q1QUfr2֞F5tvwLm<\9Q+QUISzK7MW [L:hy l p:]To(-T^!Ɋz  t:D5%۪$ЗJ1t:?K ֱA ׬į;  ^ )3WA#ƠIͦ _ٙsP#N}T!V#VWXBB@BGDKJJG G ILL2KLKLLK]HLNO+QNQR;QRTV@WXW>SR@RSSQP)LNOSV[WOMMNTWRbRUXJo`l >iMzxU ~'e WXyZ_Fk nc i ltU }b Wf vC;qUt *p jX 2f jo \ ]obYJTQ"VcR_Yc Y hY nz Ώ`nf  p)^ eZ^ X:RMIY & :qoNb``cf ] ff m ]V S U~ f]oizijf djg G_ V2Wua e SE+JR R R#@  GU͓ Y׶h !toHv7Wgc̨i/S_Do@ʞ#-?6؎:Z!1 ҕc}}YJQXVVVEXWKWW,W#VWVVUUiUUWWV^UUUW9WXVV KWX WX{WbYSXWWVCSXSPLFA1?7BDB CcHKJKIIK~KKKIL MNDJL8NZPTRRAQQRDS+TVX3Y[WSjSRPQ QNcLOS:WZTLOgLP4STSV[&j~ 8ܙ U f 4[X`YOoxL mzCz|9 Ւuc fIs }q[ n2v bZ s qWTTYkYO__ Z V n[ e   M3ɏ|QvLp {l X:VOP]b Kj j aa ga^cOh9  Qr Y T=XuGqRʀac gf 6ks,r i `n^ b k [EES!YY ʫש #vpxy2y )RӰ*iߵ ~ߑr:[![ Lg 5}!%"U"ۤǦ) \ `^ʔ0D  L~̈ˊ̩Ofƫ˧>N $e_LQUVGV[WWXbW`VVWX#VVVFVUWWVEU\UVXBXZ4XVWW$WWVX|X8VVUrRSWRgLAA@AACACHM@L#MeNNKKKLLKMNnMIKNRTSSSRtRRSTUWYXZWVTOPkOiMK NFRWVQ a O[Y$O S`WZ Z[ gxibueo͚ * { [ QJSuZ|iea^/\RVdKktU|Ewk h Sd 3d p k RD\No_ ^a¥+ߥnjBzqknyI  GZ\{L]AX \3_i Y|'6%0d~J'qdϟ~?i cH ĩ42)P|wݖm%PPSU W/VW^W]ViVVmWWgTWEVfTUUVUUU!UW@XXYYX XXWXWWW_VOVV?CHL8L/NJQNyKJJNLLPLLLmJNM5MVOvRTjS:RU]UTWTU)V,YiYX1WVPNZOL7O}P5UWSKNLJMMPST WCa. Lnx6ȷck f Rr 4f z ?hze@n }w~Ԁ T 7 T zsfy q\oiQ^ Y `SSW_ 0d ` b `~[ Y] 'c f  vq _8zĝ  }[o=_ PRW |X X _g;nn~r ԇrWN)MAQQ{NAM KfI$S an Tw'}uztla lbstwjOL\ `] K48Pϖx~uA@ADIJKO RMI`KnM`JJLLLeK#KKhK PSkSSVTT1UVU#V1XZQX4VZWUS1T(OQS}XTQGM>LIMgNNQQpX<_iZ5Qu_.ߘsu n zvVo y e q-a_MrS|ߤˠї $ ? @~ (y0jpjd [XSVd] b ] `lj 7fa `bMg i/` ]wߟ}K j?Nlc ^ ^ l0|~u wZAPq:M(WDdԕ ߒ;ݝfzrS>O TW VVmUUUTS iV wV VVUVVcU'TTVVWYZXXXdWXXW]X7VVzWW'W=U%RR2K><K@xC6B@BH%JLLO(QKK*GKFNCKKMMNIJIKOQQSgs&eGCb  ۰k^ [krs7}h P pKhpv>u z txr{t l У }6xhEg0a \VY,` a -Z X i ^:c {h `aba"^\ pm™ ު2[ K Q kU UY\WTY D` ` ^ )WT ^ !n z Dvr`M FJqVc kpقL{YjIktnq9rv|${%{Őr!+ѧỦ ^ ;y9t}lsOg ^^`@_ *[>VVYeL~ ˎ#S+ݭO/ޞ\Dž%~|%pt &w "73o s,ě~Ӌ9prUPSUW2VpUVVWTXXvX.XfWVVW U'U(UZVWX\WbXIXXtXXWWX:YZvXqWYZV&VULBAJBCtBEJKLHLN#RMIKMK KFLvLMLmKH?IL?OPSR0TRQRsU(W-ZY`X$ZRZhX1X]XWW3V SHOJKNOBMeNOOSGXgB}aHX1s {}hV U-g J}D}lx  G '~( n1j#mj[[ 6!:yf[] vXTP\g unS^ X [ [ =ajXacg>`^\Ye } iz  ̘ ȵ} NsJ M tV ] W\XTZ ^2__%_ oZ Zd m x %x1Šf _PJjON`k 8n vz p5elnlpr|mmoVƒ!{d: T [EΠ+lCwa `^ e5sMz uScsX\k 2  Cܴ<1ȬխkݞsF!&!E drŧ4[vDDqVCNoRV:VMUpVV1VWYcXuYY&UV&V%V *U V 6VEWWWQWWXY'X~WYXWWWXlWuUQXXWUhXhW*LB ? CYCCF[JJLMNQrOKK3LmKIVJMMeMKI3M!LOPRSTS QTUYaYZjYYZWW XXWVPLJMoMO{OX d ozu o\ Ypa*| pp l_` =Y f^ \\k yL^ X GW []`_^ b`Wckwk s pswTˢ  ] oy u b Na a RbA` ti op{zwxs?էGߎ{u i  lט(#̵ĶZ߽(عѾ ۫~ ' { gB ԙޓuDxbx | t}}! # Ѣέ&'~2Wӝ L ~ޣcuF֫ ˗v9ULTaVMWYWV UaUiVWZ<[+WVVW^U KU VWX VW}V'VXXVUhVWXXWcX*XZ_XxWSI.=pAC1DqEGJ}J$KN8OUOMJyJNMG?DzIIKMLNOPbRQQRSTLTU7SVXZXYXX*VYXZUPpL[JKVN*NPPQTXZ_gr ` X KT| :nfJ|w_ Z}tW_/ƿq*@j  u ^Rk\ ( +KHW RZ Y dYa^^ b gQv Տb s̛֓,IZn f ;^ O\ 6\a`[ n Znj `]XVZ8fFe _ ]kہz r~ 0rrFcE^R:tP~nhk Wh1` jrt ){Mx{yY~zd 7j pov!@ 5Ƿ7g.`ļ }!o D  Ҡz$pfi p /s $Ut &<{('%VycҧbE4̤6HjZ F֘}XoKuPTWYY/UT ~S UXeY#WV!V5VXJVVW"W5X WWWV^WwWV@UVWWWWX_WXWWRH{;?SCD#D.H{KKKwNPNLCJ/LPNFGI-GIHLMONNP0RCRSSmSV U^R{VcUYY|Y[AZ/Y\T|O"LyJKNNPQS{Wt[EY\cl ^j Y V]Rec, 5 +rjK D dc c.wIm!<J } in~ N M a Y yZ XCZc  >BCCGKL"KOOMMN OYQPJJII-J MMNMMN*PpS9VUUV!XUSUU2VWDY[^:\YRMyKK@M\NOO=PUXY[c]pi ha@e sE ֣ - n{SB 1Cqb1q$| ΋XS.(o ٜ ~mWz ʭ, Nnm\ UX NCSc rm|g d k s sa [ G|b+ՠ0  h }V r] a o` xZ k[ tpMWo ;SYi wjY-Q X ΓlGrjPkXjwtfxmR qҀ3ɓ : wmBdej E7!9rwzx|spnx Έ p n].9rmN>8ӰV|v4yqz6x q &xn %p &{p %o dq u x ~x3 = ګͧ1YN΍} %)t #p  zˁօa=m7pPO TxUcVV YT UUW?X?VyUUUVVAWVVV>V WW8VVVGVKUT UV{WWZWUVV TTQ8G?>EACCRF7JLL]NPFOO+PcOPPNHKKKKNNMLNN?PRXoXW#WxUXUUTTUWY$\\:WkRGKuK&M]N;ONMTMuTYnY]o(yx oϝ 6 ?q { ۡ(  g<ѳʖ2yx7a[g*y < ߸þ9t D 4 e  ~kyҖ> Mv8r q O MY]+nmrd a F\ a ?g ]f +#]F  pX  ^ _ e (_ ^ :h ||e VFae !wvf ] Y ,}Hόno{Is sn3h{excmykf |^ztQ $ - qggn! |dyyVpfCce l+ VL̢ gܻnsܺK  }+~8z!p $n $o "8n p q !Mp Bp 4t #$Z[ N ߠ  S ? } x5xx$z 8~ ߎ+tSrOSUHVuVUVV?WVV0UUyTUUWSWVVWVVUVVVVhU JUUUW;WCVVcUU1T!PG@>.>A]B@EJLKN0PwPP1OO!PONlM(LKJ:MNLJ`MMPRuVUX+V VQVUUKTSuV6VWXYVPK1KLNOXNLMRHX\^xέ{ X d w P  %؝]] } 5kXviPVo\qN8 z ~ _y c ڊv mmtO(d $M Z omDi-d Z Z n Jz)< ) ة 2~}c j _ b b a S^ ] k \ qYml Z{ c rw-v=u{ y%jwh fb`aT^;b0Q tz  Snco:ẓ!ժݧazzseb +dcelE`5^W5ݿ7ڹǴlz i<p y .w!Qp q#r#s !!s !q $Zp &"q (}"#ʘ B ڣ ʠ  bא Ҕ ŋÑ bM˓ӒwT8ORTRUUVQVIVsW^VV0UTTUUWVWWWVW6WWVW"WVVeVUUW^WWlUfUU\SPIA@BBB@3BGKL1MPPNRQYO#OPPNN3OQKYLLbKsJJLOR{ Ft u -v ({"N} c  E :״ƪԥ PZfOYKO"SjTVVW/XWbV &V rU UVVnVWHXX&W(VnWcVVWXtV%UUbUUVVWWVV/UwSS%N\D@ BCvAl?jGKKMOQQOLOQNCLM~OP4M4KKKKKMdNQUTUXcXXCXZZX]_c\t\VGOKKNNONNLPtQT.Vfm R*y nőض7p[{s  Ֆ|h%a iUzsz * Khy hhœ G؆ lmpykvrukmbnrrns ڠ y &YۖN"/b ZZ FZ `c nB 4|tki^ s V\ $y e~{}'ے' tqXt?unc d`vU*eq\y_Qomovv r 3w2R2v[<{g/~1Ȉ_5j   J ՘6%w { ^!A΅ە :  G \JNRTVXnYoZRXVWkW:UU'UV&WYXXVWVVVjWXMVUTUUU@V%UdWVV[V/USSQcE>ACA>EIYLOQS+PNKLR_QmOPOPP[MLKMKKNMPTTU.VW$VXYM\6^]\ [VvO[LLNaMN#OSS/VF[@r ~F D݇ G 'ҲΦ<xr r `z *uNl igt" *6x yQ{{0a)k t\ _ L̝r  }.?6~ q sh c nhqcfi i ۜ @ G \ !  އ#dd o\ i \r s ƅ pȘ la@X X1T kB ]ƾvNhm|݂ DZא ~.t#s qsDpngWtxUeނ~*fEA"Q {ΏvsϦpmpuvҪ!RĹz c f   9  ;&—J(mq (6Q ,9n ͛K-.uWHLS%TUWXXWVWXmVTUvVWWX0WXW VWWWWWV+UU,UOVFVVVVV/TRT_TEI@BFCB@xD/I1LO)RRPO2JJdQSQQvRSPMLKMQLMPTN:MS=VoUV!VV Y]Z \[FZgYYUANJeMINNPRUTfYj>n {@{ ;%8œn~>spba 6aljNmyz!zh ԛݣwOj ` Z Cd pZ H\ <~8ʤ u Pt=;}s $si_a^ whA   ;   {^sy    3snd ` ^Z ` w lKp[Lg *7 9Ke {r{fwXvnQopg n(>ʉ$  .+s -$wvܥt0CpwfzF4ͭ #Km Ω_  v(5 "zg՚S"ewߝ5>aRvFrKRbUUTW^XVVWMWXWkVV[VVWXBX XY0WXKWWWWVVmUUVX~WwWYW,UT5TT)T/LA>~ACC.ENIK LPR)QNBIGOQ?R&T6RPOMKwKjN PPOMSRTUTTU^XQ\sZYYwWsXVcPcIN;OWOdQR)TUV[rC! ͋J Ւ W/ D XŶv&ϗG 6qA]Wck}k nnjf LsYeVEW8jqi ub:uG W; Nw :ی ߂-r`^\ {hyhy Jy 2ׇ҄ h r   yab3bjKksih{ h I /c _ s Z Ճ ~ 9p~xkFrhoJg!LIdҤ_ǘΘy ɚXykd{3!9fnd˵1ߴõ$Tm W]Ϩˣ D:ʠwXxY|v %m Bu‰(ڬ^Øaj} P\HLQ]T.ThVUVUV[X\Y}XVUVVVWtXWXXWXfWWWVXYWpUVWW^WgWKUTUUW,Q/BB>ABABHU_r[dqx.q7qa hW {fnjb WRkZ v Ii 0 3 & `5 Upab{^ ` ` m 2rr Fݚ G*v:ga[h$tyt"k[s !@ zslw4 :Zm wsȃ H|pT;Ssέh10څT~ it V  Ɣ<Wi{WdtÀD{u6U'߭͵u;̭y 2 /s,{{ t fk sk jr| Ö{WckOcILQS3T|V UYUV_XbYYVV JW ,V UU W~X>XWWqWWVUX[YfTJVY>XTWWVUTJW=ZTF[@lAA?@FKLQQQNLJIJNhR)RTSRbPPFNLJPOPaQKSnRTQUSTPVXU[[YYYXtYY4RLuMSRS,RV?TW*_p }* _[U\y  ` Ͱ"ٽc~ȇrx(~:||kbY LXY[ V TP_ R { ~5{ju yv 0-pmzd j` T` g s1lk7y  ؞ N{^0MAƓYl`akw{}wkL"GBxqFwЇ~FYԈr } RҌ ~?JБ-_jkP   `  /Bli͌oj9v~ ~Fu e4p2rh~ĺ}۲^/ e j8͌ vp 6h e h Rtˆ:4 }{\ ShHJMQRTMUUUVWXXVU V >UVV;VWEXVVWY-X\VXwZX{UVYfXXWVUT0ShTXVuF?AAzfhn1~ˑ'֭L<cmviJI|$Rw{sj /g Ru4֋d<~`JHzGL{LPRTVdUUU|VeWWVUVUVV[VV^VwWVjWWXWWV^VwVOUNVWkWWX8VUPSTTXtUH?@@ A/DdGqJ LQ!RPeNLIMRRS^SvQQGR4P0R*QPBPRT{STTT?TVUYjXqZ]V\)XYX]VnRIFJ.PlRVFhӆf^^Yl] a hYZz  P k Q i : ʎ uɬ}Zqז}r`|\Q]\ VSS o_  ɮ ݺؘdI> wߦ= 9>mpFtvrqPg ^o8^&Qq#Q_!zBi5^fc fem M aPOء [|n E  ]˙NTKn љ Ѯe М ц(d,ޣm_gq%sk  jiBl4u]̷V\$Qдĭ b fg)   &a{e\ NCTC0FRLNPRTW&WVUT VWUUeVVVUUW@WW WOW,XFWV$TTTUUUKUW]V^UT6TTW/W;K@@A@EI8L"KPURVPOaKGO*T+T$QS$RQ5SZSRR0  ݮ L A ylJ D fHkF`ELOORPTUWZ&XUUW:WVVWX/WUVVqV7VVWXtXfW[VNUVVVUWtVUUcTU*UlWM@@FDCGKEKN_OQ#QLHOJPDQ SxRR`RRpQPQQRS"TEUV1V{XWXY[YT|UoVZWLQ-L6KRWV_O\UZ]Gr N :U Q\ [;y k Ad &` \_Z aW[gf ph v3MdFhYzd [ YZZb yfDg]W n_W[J1 ~d:ZwY_ Ya w J`ri3W ?pwa Z&a salmuΎ/K nxf;ZUadJko{\wuq ސ  x+ ח ǡ R)ϔ^ E݋p  ̎{X 2C u \#S-+զ^o φb1Xe}   Wxx S Dߙ< ߵYP̷- EhT|\V fܴ ڭ g \ '{P uK LEDhJPROQTpUWZYW{V(W`WUUWXWVVTUUVViWYWVWVUUUVmVVVfUTThSTV O:D@ELE]BGL^LO PQRPMJHpGJ,KRRR:R[RQTPR[RsS@TUUMVVX4ZYYZ YUPQVZYPR_LM'PVf]]^Fcr@ JekPi Bp |}0 M םY}|{\Qex ,ʱr{Dfog(  M,׾`ؽ >cwԸ,  ZyHSmUTGBGPPQRU?W4Y7YXX?X$VUUVXAVVVVyV.UOV VVUMVVV9UUzVX>VVUTSTwSSP$ICDDAFLN`ORPONJGEJP\Q9R'STMQ:R|SISSTUUdVYZ4ZDXZVXUSTX[YUZU@NWP^1^`ijsI r bn}|wu.W9trWdui:fzj9~ ,{l Ӑ׮:>H wr!dhvx{ | `oqkaW\^` rn̲UɨƝ3/|d `Bwox ʜ$ -ut#-iROQQQU*\ ax_ ciosvT~o"Elsz_ @[8olmz9,[ҭQةhi@3~l ,bث~LD(*| S y$ c߭ί_bcs~6ͻ؇e`Ɓ& pO @_EcYYa۪:HWϹز\ s!j U\CZJAGRHRQS.UWX9XfXXIWUUUVXVUWWVgVGVVVVbVGVUTT !VXvVW-V,TST'SSOKC'C C?BKON*POONLJ$GMLOORRRQQSTTT_UVWYYZ|Y[|Z~WW/YYV^X]\paNX ]]cqk}F ޴,N ! YyFmk  b 9 9svCv ŭ L±īإ  c RueoWniponklve2xjC2u_!zSg l|r] | {$(q1XTUTX BY !X bdf;jtvyd Mjo{uS|;'β(  f NNl!N gQ^to,O#)@c+| v ] ˍԷн8q'ml``Buc } 7? -Ĵ}թ Т =aNL/}Ի| ̃f` aV\Z8LwBHRTSUWX#WrWFWqVUTiU&TT%VRUVW3WW VWXXW`WWUT S V;WWVVUUgSpRSP0IBBrDARDIMN{OOPPLK HLNNePtR$PuQWQRU7TYShTrVUWqXY Z[]1[ZZ]Z\`^u`h`SY^`Agw9 " l 7 j |Ek z & L 6  d5֝ ͝   uZ Ǡ*} hmxqzs)jl giqsƗݔ{=k}f}Iϋo$jt&wo[YWXQW S Qcuf^eWhlҔݛR%01y݀igy  ;a~ pßҥ1נӥIa  ։3 Lo  x+y/T^O#PPQQmL INI|M!MjN[PVQPDQRYSUT>SwTUgVWoY9ZgZ]\[^H\mZYZ]z\[nX\^bg=r<z | Ͳ g 3  Qjz ƫ X Ct[d խ M 8 ]߫]  I Ǘ~ A r+fHjkhb[kkjbj[Mzt {}|j{vt jeX XWZYX Q$Wulqa`h3l4Vp!V|A`$¦(uF̯#1_)jTzm]8c  ӫ \ cqǭ^]ԺڼȶCBx~9WPȩ 2r> G ~«rîظ    ڐ {H ӳl  Y]JoF\EB>F)PSS{UVXWWW6X"XgVgUpUSTU;TVW W^X/YzYCXViVWXWWVWVVUUjUSkRRQcKiCZCEDEH LNP)QRQN5KoK M"LO2QQPQoR9STSSTUUW%YZYYYYF[ZWY:Y[\f[Z\]``bndӒ ߠ*  ? 5   t݂ 0 H  lkb^efnf~avҘ ݣî3; {rn9o 'ohm]Z W VXX6Sb #uxg6\m1v}߇c ͠u>y"b&B#ȯF-A#H|ܭfRjAܩ} ee ˱N,  S gŹOۼL_C~@xՎӯ1!{ Q ) ');C"Wx  d ܐџ & g ls SCACBWEMRBTVVTWWLX~XYOZYXVU#S9U,TUYWXcYyXzY(XXWWXXWfW[VW~VUTU`TRSRQhPLVEjC>FpFFHfL^OPRQ`P%MLKLnL!ORR Q7QSNSSRSSJTSW1XZgXWVqWZ@ZWZ6\^]<]^f\U]{_a,`[^wB_ٜ<Ú xL __} g "A ~4{ <Q 0 e V h~@z0qh bIokagk<g? fw~guSrolcb#[ TSxUW>e xte[Vh{Vzv   Ţ ֧ {! &%#o4߶U9η-R odζ,dzl>׬O>ry | *$޶ I |+vHM 0 _ N""L K ' H{ҕ (A  > U I {Z C o?@RC BEJPTfVTV1V9V|WYYY:XkVV+U/V|VUW8X6X(WWWY+XRXLYSYUWVVhUVU[SlTSSJRHS8QeOKEsBENGG6I LNPxQuQNLLJKKOLRS QRS|SRRTTT;SVVWZXXXY;X\'ZeYZ^]]a}__qcbdee%m< $Pӓy~/+x   ͯ6   IZ ֗ + ֢  XmE}mwp(n5cv?ݦqݟm9V}pt9r,onKe=W PN*SW^ ohi3`sQ_vxgn aED1!A ˕ !" 0$ ,r й OcBѩ}lǦf˧"W Ax-OP),{ĹbtI1صa` }nn . P+|M(`} $څ v i O  3 ӗ uÈk it P; <BDCDHNSW VW VVEWQZ2[>XoWVVVV[VUVVVGVV3WXXXYYX!WV UVUUuUT6SRYPOIJCAQFH E2HKMO OPPMKKPK"JENS2RQSRS*SiRRTUTHUTPSUVlY\]]O[Y[}]]_'`acSjf`gilou D [JT`=Զ Ѥ @ ) _ۛ ė ܎E `ջ [ksgZ4}}iTklA\%2/ڵX1: qzcwGtrSlbU3RU6Z "\[YWRiXlXvoܛ,rמӟƝ)YMe!"9+\KT ǹ #»TQֻ©rXN/3-ۨdcƓʘ.-<ٮPjG} m4m ݲ ;&)v %=x   YJ̬ >  3 Ln c~aC;CF8ACfFKbQT W 'WVW#Z[9Y+WVVVVrUT UUT*UjUUWXXPYYXUVZVW=VUUTUSSWPOoKHDAHI)EIHL3MNP QPOGNLKJ.NjQR0RRS SS(S*SbUVWTSSUXZP\\\RZ\i^=^^_`bdnYiik{1w|y 8 ߯pԸڸeEͤ T - J Wh֦z(xwfU\t`ې4~[}uc|?*qK=A~\tZv#rEh[ kR S ZYQZW [ ][c ~h xy V}41 1"$ј)ĶQ4ػpaKyDvr˯ Oqٱuusiݞ* _ؽ9 )E_~&e$tQsҮ d n $ì w %3p B -sp Pף# {,vez v =lS>BB@AD;IOR qZRWrV _B``` "l iwu ^RSҢ{UªWpF L¸:@RgP/geuf4nsγt;dȩiO2ۺͿK"FYOq{b { ϸεy } #u #{  ? Dկ 6  H#y(id d fLn{yR_S-J@?A5@BKuNQTAVXXSKB@CCrF;JmLP RFVY]X'WWVJVVZ]X7TLU8VV>VVTTTW;VWXYWWUUKV\[$ad)^WDQPO[KEG/BEH|F/G(NRRaRQDQwRNP4O+MLM1NO:QR$RgTpUT-TT3RTU0RQQW:W.VViXXY[]x\_c&kXoU~wD uİa8MVנȨdȬ/(ݎx q ?؞̝ w @+ 3Ttj skЬuL)]: Na~#"[ EV6a~$wl\m9[/vx Œ#;X  Ok\x՜(TX@ߘɛ3͝8T  WϱUƤĠ{\ܪx%Y6%>Ļ$R#CG 5 { ^غ% ˿û:o+9P;{  ظ_w"n&s & w!V~ ѹ%B؟n ђX3d &G I6OST0RNHCDFEGJMPRBYo[X3W-UUnVWY[X TVRXYVUUUcWGWXdXXWWW=TTY_lkRbWP\IFDFI HJNTLS>RQoQbQ!PPnNNqOOP?QSSUUVVRU,WWW5SdTUU)VVCX[ [ \\^4_g{hO p ( 9.e8JmSbjDm֓ "   v0lڠ{G!7Oα J ݓݣ3 z p ]ruقAj F O>4xwlF8-ayRCTU>׶y*ɲ '4j"1i  Ũ  ;.:ż*x9Wy- JŬںSKϗ<&x%o &p #vhv~<ŸM07y` A FPMMQROIbFsIKGM NORY\WTRRVXZo[WTW]`%WUWFWWWXXXXWVSTUW](`6capXMSGFDDHGGNTXU QQQQOPO.N@O:OPQTnTU5W9WOVTVXZZVRkSXUW"X[Z]<]]_^Xm}Ԕ ǚ S J   Ey]FOVC{K m xq Qt ٢ < Q$ ֺNξR԰PT c _ tsE V'Ip` U ZUh $8g > )  k&n"θ!ʳܧww1dZàJR)a2~+ζ¸ne#f+ e74"נ~Nȩԥ  9ٺPl1~>Ccؚ ȴػ8<L$^w *l %m n| jlRC O[OHAP~SRONS QPN'NNPUXGUS1QRWHX[K]XEUBY*_`5X  # ߬ܮ_KɵǺ_P! c( wuh<  И vW׮K= ņ![q-JBͫ]Ȭ#q޵6\.5Iߕ|J;#+^ ܿAIuKYo l vS  ۝؎ ` u\ K uL۴NP@VGUW3al]LN8LONUOSSSU[j$fQ]\]bg]4VHUUVWWVWUXsWX'WWUU/U]U UUKTTESNLbJEzBCFHINRSSPOOuNNMONtN}NCQR}TUUVUTV}Z6]]yZXV2WWjW_WZUZ]f_efq) g@X^ֵ 5ײԺۺ§{ڡ Ń~Q `Tl|>^ _ o  ɢ Y qί-} jum ty[ӻŶ N u\~}a g{ Ϋ9:ݹȽdؽJGz!FƦUf?   { Цblíǩ ܟ+ q$ Y7 `_<ͥnԶ!UBC7 P"|z|JСآHټMSI8կ`@y`n q x R| ݬ ī S` }r9_ T_kKcGOW+WYXx`fWJLO)NQ#n}on Kp nx iD ›EdҀeSO F BMV@[de` TKMPP-PRST8Vg[NcfCc[/Z[\ZT-TVWXWVVVfVsVWXWpUZV VUVTSMJK|IFI(JgJMFQST QQS,Q%PONGN}KOQSTSTzTUWY[E\[BZXUCUVX1WY^b\^aeQmwp} Ԍ͚ V'H-Ȼ2G̬2 t1|_,FҧAqlr'u%~ɕ uXnaf -a ~r+~}:y-ya".! \rb \b dmOjC _ Eʞ8pt ̧    [6HӹʤPuCЦ*  F 6 M $ ' ǰ׶n7d H)­(5ˮ<o_mۯtJ2ѺiO Ê#  8dǸ'VzSp Gw Ch״ ^ ؈œ&]QG < ElOVW ^jgt])Y ROQrNPPQRVbnsjy{xcmY FUSPNOSYW:XaYsYKWW6VVWXpX_WVvVVUVjUkTOKKJHJJKM\OQUSS1QSRP_PNNL,ORLTeT STTYUYZ:[]YXWTSWXX[`]0^fa`e~mxm z  ,CYܴӷF 'k 1t< s&Sr-bkw6|Kp'feFcfQk3t .. p e<\\api)dl5OH[z2m0 "` X  AUZKή[3y# B V ݬ m [ y ܰL̵XPIA̩Ʀ2ܬӬ̫x 4]*wT0ںjwh[˩VU}ȵ>|gzojh ZVxtQ@ DOrWY\_[H^Q`\NT(KiP7RKRU[ZCnR}_c^VT;MMS8VWTWXWW:VWWtXYV}VWWqWVyUTqNJ-KlLII+JLNORDRTsQGPRnPQQMLQ RS/S}SSTUYY ZZ{WYW:WVWXWZ]^^_qaen~tBps ĵjެǩe  [swhrą ŏ ԇ՘cc ^ZLbw  M *|uj$`J_>kq_q|oUNY r9d\] fff:h4^NHԱ1ѝV2eO¹ gbj?¹ `ڲ}խ A[Gã ~ x ַxd`r m2Ym5 ЬeRtj}O UoW7(>Ջ۽v.YԼWɃ  #wL ם { tB ކw\KNK T UVGZ%]-n׈p~j^NN;R(T[U\uU9)|^`VR6OTWmVVVWZWWWXXXW$VyVWWVVMTPLLmMKHJLNMM|NRWSTSPQQPxSOMRRqRTUUTUVaXjYYWSTdWWZ#YZ]_-__`eoI Ɍ SΫ![Ҥ}Kbq  Rb}-)5*<` W a8v wwl__q^xpvS- Qr:iaM_CclkiVǤ[#TܹNҹo=ԾȞClڻ@Aڸq>SݶXQ=ݕ̡ ] Kl CȂk KjVqÒN40o  βeSK+O}W\ݺӶl`% u \D  "   ч YWߌKsWQ T 1TWbu{fv@PKvQ@VDY_`pf  m qY(SYR'TTV%VW+UUWWHWZ!YXWUV]WNWVViSQKLM~KKLcLKNOQTPU)RRKRQ^RQiPSSSTTTGVVVYnWW5TnSeUXXXZ#Z#\z^`_@agvq ӟ{CXuv[Kg  4 g| s ސ s ͥۛ$ipt ֱ٢$VМ?̞ڦ V8׶NĽRDʻٷci~]ظ"^BwnVCz _ʲn; [ytR)Z:6۪k M ǎ3 ضݭjʄ^}}n}8]I%=61^m9ݯ 2 q Ϗ 1 k E.>Vy7[ZS U fY.f ,Vt y Xϩb {- p / wE x|Eڤ[wV[ U 7Tb^|يV[KKP^}b8l q[iY7QgPuSVX*WWY_*b7]VXXVWWW3UV6TSP!KzLEKKMLL@LMMO ORTTTSShTRT:SU{TOU9TTTUWUVU VY7XXBXY ZY\]_od1oׅ. &)aںv[i g^] Zs  zze ͟ ؐ  UXjJ^)` b>tvwbsXn@b a nl\]e kki`kz¥PK$ noP1w `Ă @Uա" m!X L ƪ  U asM%ԸvθY:zZu  >ّxFnwMNZJ   Qoϔ*ď ˕Q%ί5Û#&@"xavp~qm%{TQ׽*epSY-ֲP~ 7  -  ۑ * % ~ _{ q jb 4vɐ`XYHLS b~ەʣȸ_7 ݬ 'wb[Q/LcPSWX9W5[eKkbAXVXjWDUVV7TRO}ILLK}LM2LKgM$MMHN*OS)V"UU\SU SU'TzTT3TSST6VWW8W:UzXZWYQXrXY[X]h]\_2cKq %Is #ͭ˹z3cd|q_ s$ ϑӦ ~ _ v U_"l%tgj xuh${l ~yVlQc i_s\jiksZqkg7qu}*nrupY{ +vz;v{` P^xaɌ  ދa   _9%!ٓܫjp>=#5wژҵ 05v}ej|qm  \  ; V ˮҰ?^j`ʶ C5ooymBlgg޴ѴɴNvHa Ε ^ |  O  _ kuN 5 Ù  EVZ%I.OCWc}!9Bl>~eUNKKNR%W|XXz\2hq4gYW]zYVRV=VUGRNJaMyLEMMKLKM`NqMMORaUUlUT@TTUUTS STTTWVZ:XVqW?Yy[YYXDYFZ\^?_~aiڄ8!ˆۑ֒ӛ eէ4ܳ/MԪ*SKn | -. ?  ɱaK 6 * -IGډrϣ +D~Lxp5jvw *|}ey"uIp kjqntdh jlyrtMbcX4Y;M9N v[ #h s+yʍš 2  2C ! j $ݢ%=> ¦j/ͺ5+UoVs&D $ c2X ʤ pg!@(ޤ#_TfG 9<j\ԣq}Vo.p .tg m :x å 5wx Ԭ]t'+ ˫ ؇w yB ei49Rʱ4,C ߽&%ו  w ͇ W  f ͵ #в XqcPV^dpٞ ˲y. XzhgVY[H&LP&OOQV9YQY\df2ZdVZnZUVETtTRtPiMMLaM MMM2MO9NNNOwPUVT UU;TTTSS;T^TSVXYYBUZR_S UbXY"XXvXZ]`^`1cEbYn |~yp !q !m %q &[q 2n Sn "~!KFb +  Oni0žwH2[ƯKl}.O^z}w9yXxy:||{1qm_j 6 m-jR] j |ǐyŨ;˴ X = ڛ F& *A ֈ&}jtܫۥ nGϙ`~YlUjw ʘI|Ĩ[?V)|t|X5~Q.w77@zɕު9ZĴ .Ĵ q"Ķ?hX v6ӝB * Vq³ sVNX\eq!}  Ƹ˶s{\`7\QTNPPpQR'U%YYrYl]fu^UVW`W VLTSROLNMMN>MLN'ON$MNVQ-RUVUVGUTT TTR>TcTSVZ]YV;STVW7XXlXYfX],]r_a_^n ̈fer n !p !1o "n !l `m p %r&pCrN~}WbO®^ݴ  # U m k :˻̨˕aܾ;N&Y--{ lHoKx{~ ||Ovnm r Κkfv mydJ%%GA12 #)ԣ h}vx|\ixlI ٤ 6@_֌LKX/ȌXLsx=ӧbe҃y ҬikǘЌ&j-kܺ޹ !b)yj ,]x 1 Ks?Y̧Өв }YY<^rbk`} {r]$_f)VO_QoP=OlOhRPVjWWRZ#fgbVTVVdUSS\QcNoLM|LMVLL`N>NNOfOQ~SUUUWU%TSTTRbSTzTVtY\\Y"WUVW\V#VW^XYY[]D^boH  t̯]|D  m  ǾSxY"~ jfuO |uytTnhc  Q  Ŕ (gee&vAξT[IJ% $n~wxm{O }1 rlrC sCOݪv9m5~o  Q,L~3ȑ`ʫ)YDz)ɸkhz!9/-AܬGʝGֱ1zնkжǦ ? ^X`diF| (qs)](YrYTPRRRSQ4P)TUVDX_^^WSSSRPONLLMM$MMC b &6]ّ*ΎPo,  kM w@ GSR <۩9&ë̱ͮdȔ  Ȏ ^ o1ȫȨȨkd?~o}:*˸Dĭ el\FrO]cdzܩȎ1βɳ=] )  ,e5Yb{j!n|] aŽds(g[!O*MORZ=axY7RdTV8WY[ZUPiONjONMMPL=LN;NMN'NMOOPSITeTU W|WCTS TTSSRQRSVUWZe\XlVVVaWX)XYZZ\\^wc`j} lʖ UJ}o "n Ts ,s"@rruwy+ _  LǢܚV!  ycEn7 ПSh pF<Ԩƴ*= s׏ r` ^ vy հ4)E}32qo9  DX $M[3\űЋyS D| %a.o O ڻ8':P92:  {ۨc  ) ϑ H:`|!ʢٗA|ȷrܴܸ³k\˨ |+l{lu] ]6Z0ԳlK޸׻\w O~ h hmjoLv N ҄xhoLI[[\S^bl W A e{m l "q o rRw LJJ Ҫ|˴ס ҍ gϨMȤQ7LrΫaa8 Ļػf w  e$Ԧ ƨ  #pAg Yp -  D Ƿ^̱wgimK~  awf- Ը}{&l!TAGV  nju|meHapxQȻ#>̰ϕʖEnm&* 8   &>; |ƢcˢDǔ["!CԲFԨv]qe= } _|;[úw-ѷ͵Ƹ  Vu j yxu~ $Y?]oOPI K SqYIUPgOT[1rZzo bV KKZMLLJILtN;M4NNPMOON1M(RTrU[UTnUUjUwTmUTNSTTlRFSUZbq]WaTVwWXeX3X!Y+Zr[\\~^bp\qӭfʱəa_t"ytw р xʤϥ F lyW Z u VY C J;LPfݴf@] ۡvưaZn%`( ж-7:{ übuֵwqw|mg q||ό"GCfNdũ<_֫!<ԲZҒ H z^hwb` sǎ/sѯx!%!##1wB9WݣOc+0T7F!!ˏ#S ;c˱ mw͓na>my8 sиü¼}{K zr X{=vG%`(߷| R uT\K K @NXP7ON$NS.Zq|q_TWMiK MM4KIHK?MYMNMOSVPOS3TUvUUITUTT jT dTTUETTSTTZ^{ZUBSUXYoXWXgX Y[\X^ubt V"ǥ7@  ] |  ̨ fP  Kv   C_^b<~ t>g<L+»VhYVZ"ɾaΔU Bͤ }p| c{4SjdqxozPv |+ǖҰ_*ͻx CA#U6 [}7'v?qvK*  ܩrMԭ7hz%˦o6ǩwHD5sVӑ 89O[ŷԲJ[> ӲzL< ~E)A̗Ϣ*՞!Ȗt"  _\,#U3' 9z  }gqh\̹" \STLN:O#O)P{P,SYg{@|kVNqJLMBK BIFGJMOP9QV!ZROSrTV,VrV)UYST|UT ST \UVUST|SW YXSUUaVV+WwW'WWWY\\^`v9 A`'sө Za| \~ 4 8 P"m }S ՜avjJl&D.c«Ϧ"٦bd )ȷS&mp"zr a qu8өwhtrxe:  qݴ j ҪtFq ~,~m'j{̂DڎYv ߥİSC*©i9#v<rKtt;Yb(Ag=b ٭ Fے] ßMpڪZ1Aՙ@mU~ ܘ|K#móԴ Wf 5 ׆ soԥ (xO2zdMKOOpQRV]k†l{ Rg;OL5MMzKHDQDI OTRQOyRP}NTHU_W3V(V UT1UUU`T U$U0USR[T!W[YXTVUT!ST{UdWXZ\]1`hd| :@ 8 U [ { f H o ˈ [l 9p` Z :gb~ϑ җ ~!)ٰ Ӛyߑ)h  ]Xl|sm kdaf'?nq4vɹ&ސ ۃӣiD =9ާ Z \!!~\Oo64^7p S E  680" =zۙE#Ǧ iKPQv=Oi1&jF Hҭ(lgV7F< c!ȊGuy #N 1$8]+R N q}!Z{sNHRMNzPSYdoLhRhMMMgK#GD'EIOSV^\[mPLMOSUGVU V4VW:XVaUTUTgT S/RUX[YVTU8RRnQTXZ&[z[]aij 0XغrT 5  N –rՖ*(/ h S ;_ mtx!ˊ][ Kg{[Whϫ  K axvpQbZk}S6 |nv(?  6? ʪ٬  ǧ؃{&t Ոnxa\9dis q~  ӭ 0·}ͺ)³}gyQ[R^ӵpM+ZFaݬɰŰϤAlLDz1(}\tsn  g'7%8Dz%O}A}^gnijՂVKMO#OT\piYiw |piWRMHJvItGqCGKWyiP8L\PSTTUVWX]i \BSSWJUHTTTrTV'Xu\\U\SU6RP QUY[\^_ brlM " [ =0_ s  d`֢R9SzmAd wzc o/u ga&c p R{Kϐ  Zjs_u|c×": rx+`rb~Zb~ք&` 6j ! $m:%6 ɗY¢ Íu vjEڌ͋Uva U\hfxzH}rsuyw eif  ð ju-Cqt#{ jϞ6=qF2" mð& 5I$ʭGtʘG{%^  x r  Վ֥"˼Ըh`Uѹn p9~y Ҽv>Q  lGQ|NOgP(V!^oXpgVZPSQMRGjGGECeGaKaa1ԂUKORTUWY\.p~,ePQRWNVqTUVWX]_}TSTSQSW<[.[^l`:a eMp ; U=ѻ & M L @5{Ѻݬ<Tgiy x Jȇ  ^ TT)TUg* M#ue nlMbfÇ9zM@LPsmo`g A^BslG>td 'g ÌI+!'\  I$l h P ?  0ąd Z js~mvi(c](] X hRt  Ϝ U ɺlsXPs a%؞Jw  ΪԤ ۳е>rƔ˟5֢  Ț ! k Dyu kQ!RlϭN4*ʱͰZٌ}59׾ܻih aT4RS7Ye{…*}`VWJU9NJFEwBBGKfv \ ܌YILtOTV(ZV`"l|?J^INSrWW V f4};l{Ab -g  > ;Fc ` Zȍ /t7ibwaa a$Yb}dl  LkWblˮ\(ʬy , dtب؎+Nʫٵ | ݣԜ{u|!!æu¡]3f  K  5 ׇN ȇ Մ N~vx #ͬ&p ,  ٮƩz zwa<ͲF$aΓ x[bs]<[_knfz ed]WRNH!A?B^JfOne| L^\IJJMTXirwP}yU8MUMXWWX]Y_tf~ʃeuQTETU@V>X^\G^Wbbfhis ~ Bk- } v fϯe 5 6Ԩՙ= čBj T bW FY^a lypp`` mqf|]p w` & hو ڤ R }IzL^ѥ{ 0 ]: f gխ$"6!Es߿ 0 Z ~@ݍ _s < "zic,forjjZr    ۺ޹"ö& J=QzD6ӏl8ʪƭ D 2Z : J ϝ=rG ~t&˫"L#xzp{\z x v} p g Ms ~ 7_x .°jįNmr۬(gЫd E~{9~ ó{41z Fsmd^rS_ >nMc}YXTPJ@JN TnZVU W Mktxpoa8z &\ Um 7s} i 8Aݻ:=&Ѹdǹ<ذCȝV{tr4nqp :cv!y @ѐw]u! تcʊPz wptsx{"<9@´t/b!Ǐliv : `   j6 ڥ)' , K3V{(~bjfbiNr{ 7]z L|҄5*y6u) g W / Ü ǶԷp2ެF< G,D˨ج<ɻ   w c id~ ` ߠ ǣ|4oOWbRSPG*D^O_RUfg_ ے ~sWIOa}\}y uSLR,VWWZ1f\"nf.SPSUZA\_bYpp|l| Κ a Ԡ 2 "w" /e-<tq!Wj fg_e|t4 * e|t&E3qq xmx y CyTh[cspcqersv;b Y m wc A Ӥ T Ӳa=f$7vmܴǰ+ҷ_Vnv]ij d oxQy!Kw"ܖj .v @ IU v1 Ј$!C~|ttw"yx4(&HʲxET`ƋFVȤlԥdբxŧ = uhÙYГ g-ݴ#)ƞP=wox ވ  ,ykX >*Nƣm16-sլޮ rɑiǵذ8g '  Ň wus T  < zYTpTX|WCPW_X_w t K6BwvTSO[w"NYrQINUWTW\pQ-pyUOTWO[^F`Ma4d5roclIbF ޶l}7Jz &w /v -r %l "7l %h $iglz0~jhn{T6AjS݈D#~ dAߣ}(V `q|{z Ʌ <dq k3k y Ip   ) $BŹGC1lǷ-خpií  M Қ9mrp^k<} Yp ٓz} Dͥ bk*%#Ą}]x}w:DiU>=ٴ*UbӔÌV& &zN'E?YEd`ڭBP%%S a,"3մgs\HKR\TW2ZpAH]HOUYN\?_@`Zeq~v7e u  V û,U#=s ) t &t%q%Fr%r)t*9s&Qt wwz!Nzo_ e z3 [F$?ۑ̡ncoTD]s -   nux / ˗ J&)  ѧ8n  uDވ 6n||bUsbߐѬC1} ٙ gyJ!ֆ!p2|[pnlگ$B'ѭ}J:`lՖ 6nq`Ƭ}n;Tomx gCQި}1xZQnv  Čp</:? apεz-at   ի װ^xmWVn~|g̡ z [ IhZLUxhFWb͘JmzJKORUWlȘ؟gfPW1\.]_atjp~~kx 2*Fޟƈ=t "q "t&w(ou'`x)-y0w/qq $wp"m $+l &q)p%7pi g p.-NXB(G/Ȑo^at   &? ( KJ߶) ƚÝ  ^NjI K ע͘7 dTAwIu/̑U٤חCէP;7®n   a y=pyG{Iv vJ=Ȭ!jŰU30gZ΂H|9Β&Aʎԑ*  ,hԭ%kth^c xˢʭsߥ`?ߏ˛XY  <UWGVkx¢Ť%]`X@viճ1,o<̳mo>Ez ;  ܨȠm[Ykzav.̣°  oҟ kdIW;* oMM0RTmVWb}Ο lQ^W[]^^]i A  Y x`.ĩ # 0Ts p &{,w*x&y28x1q (Iq q #_r)r)Pr$q r!or '~u | ִG 'Θ n{ xy r Qέ J $ѱb ; j ߚTq Ľ.P ݎZ o0e l{ }QY&sRvtqfvم*&-$ڢ*9 !e˒ }:n:xwx / '  шĂ1{`N;?Ѱ]ES%z Ɣݣ1Τa=ډ,,٭|cj9Vh ̦FVhǣ9_<Z(5gvLGo]_أEƵ ӴͷԵchJ lњ`   cQ` 8]Z\[6= {Ц  p `'KmWKatR%N8RT4VW^2y4  XsSWYXVHV2]s lB  ɶHn z   # 7{Wv#&+~%|"|1|2Up &p u x+r %u/v"u!u qu $z%?  FжֹF.%6r~M c    wzF , J0 mq < + %WE\ W f #wcc2xQ ^ c jf>#k W"ڊ_3ݰ)ٷP{Ҋ\ hw(%~)x s )z r ptx Q;7Ӯf_ (+ e ף6  G:aFzxs}zxuCNLܰěޮsh iT`׮`͎xtޠ,kg ^L41r Hb"سMѩ̥ k }bl ގpOMSVe]YZO Ve Y  4i `OYyf %/ ́[R$TSIV9XatŢ {UUjWUNMWp   ` % ǥ   X oۋO&)t@v|{'r $zv u &u$v 0z$#}d u ݣܭzzѣO e #\ a nq h ޗ a jc-x } WJ  _tYzFɔ 5؂~ i c x{y~CrfFbKmm~.E&f"d"t|$tjeԨYٵYj} wsz2nʉ l ͖~o~%w'v  ){ѥU   e f Oh u)\ e!s"Ы%vukfy݌B!k;7ȵ³Ds b V%sbaF|4Ʃԗ[.!!ɜv)3 ͨԤ\p&+4xg'ܦ ah   qU1PSWzchחơF Q  ̞A{g}Xds  5PYgSSRSWg`r.̤¢  =WRSWxVZNJW   C{ ١ ^ě  ֠ Л6`{ :y v %x~):xz ;  r ܒDsjlV .S ` p  #‰ub Xiρ p 8 Ў 0̅ Յ$Ʌ o}ȃr5|> #ēoL Uu  Jˡܘ!"$!}xk ~V &$p^antqՖ iO q |ʀ?} o 7x }ۇ.M}  Ѩ  { t^ &`mȧܳC 7o@v]jw4nE®ϲqWNg{Z! W !Ɩ$n"C!9=ΥN  g'lKԴi(ӹpw XpT!pf ^ ~ d  6cTU>Yh|w #yخ T&2 S ܙwmosTtەRɣ/?qVPMjNS]p`  ![SCXWOuKb:$ !  _[+B Y L/ T Q   ˠ h * !Y' A  {{ lz} őkamޞ$Ŏ|}Hk rqFL %jLcXbb lv Ž N W zxpDxm ɮ k0$^kîrO%ŞYuCjyԄċ8Z2+!3Ъctǐ$1s:י|e9dfK1ɸZ 8B@p UOh  3Ch RiSWX`#{ T   Ƴ2 w _(qy0{|Ȣ٠b7!-x!bCW8MoMR=[mi   E:k(TWVNMPi D ( Ϋ ӎQuxyI !ݪ î h 2 k ) z 3 &{ {v|ֆjhd=`] 9h n}c T ReޭbgR|c y K~ in_r &~6 #Pˤ >ȞՔëW [% y$h  k Ud u!" э!cPdng cg h_ l  }Lkİ{?<<.خ wEm{߈c0Mݴr^sjش7ɚsU0ğ^'N|2-unoӥH>ժ+ٵ/! r´,yp`\S?j T "]fPoStWa}J QO98  q 7 ǀF.ؕb4KJ<q3pjWPR.]!q § X%{ WSRgL2OlH ɚ հgh l xE{*= THԔ r. A fի.ڬA |~\p'x1{  zcoqg |؋ȗ t FirEntq ] UPyUq  T Ǖܗ?Q8}%0ۥ}>j/' 'D8vpoHt0o_ic|[x!Zk:~j ~vh u zx {d؎_}Ǯ7vɮ{ qQŧ~د_+ي}Jg-a5Ͼ{s|` !Ն7Πi٨˩ ѣ qX3da7cU  dz&/i0DH{nagz #ؚmS VclpP~j? nnTJn5#yn:ut`T1QSZv 8 6 YLMAH6Mts> ܦӡ   ϫ  g p 8~ ȋ Q `r#| ŏ#v o3 h jn- -Yd B | s t1 Qғ@ I L}{x 5s+ ـfp>~jo#\e ^ ` UR S fv >9 /ۯm;T6,@ `NU_'~^}xiy  3obXYkYF j{Me ?\T ` g ؇ _ S߬xP P 2u ;$ojۅ͇Ɯcmi<QԽҽW۲P*%О#Ǘa@zϲ± &9bԪά8mը8H߸*l|͖Ls{s ݡwvX\u * oW T]88 < K`؋I"||zsa-SN1Tv. ֲheЫՑ ^HpH.C.JtC ʭ - ֦Al r ~  y   ` pub | o{j wהW TM^ 7Lz5j݄? z{0~ufs"<^ ] YT E^}  sX#ڄ D9K  ݷ2 <C )oztH}<{ [Z_*z; Y MidiX j S  u k Ű=sT ٗ1 ֏ |1sVyz .w/nF+Z`qҝ$$I$cdɢ{> !ٴ̷1˵fGfXԣf2Ÿͪxu#ѵִZ̧_" %utTÑ K .ߙ{fIkӚ 5ØΣֳ DԪ6܊ zwلQ{~avxfs `x_S:NzRt ,   I_qJwFByJj ]  1 i o * % Ҙ 1`tx$ 5jpw t kvTy\+ @̝8 /  !|<|6RJՍ* q.5"te _ Q` a^ mN @z%?N|Y jи] · $) K}tP`ӗ7mT`n̉wO[ރ >vhq rt|Ž /udWCXߖY ݡ 8 Ta 6  ٞ?X@Ve}qqqנҏj˟ͫk޷ۼ9հ~7t`f˞ǣ ZӱзbƛmA7K#QHzt+)ܟ]K0δz<Ԏހ}r ~ s - . 1*m T\ ʹ/{> (~ { ޓ ΌĔ١:łc T>OqQk  ;C C OPFE5MYh Y´q = Ό l U`6q B  v Jn%} q 'A i] ]` [k# { eE { A ײD͔jvpĄܖثw(yH߸=\|f q  sw-b ٠  @1f ">Ѯѯ V '8 %"!tNuZpy~-ɩxach~_$2 H݃k"6զW{@ ?ϡګ <ff ѭrd̥IQx*qs6nhs*BvnP7͸_vݍX}r O۪|T۳gȭߝ؉Ӈz 7}p4tѐ U r ϓ (6f  s ۫  ܆ OI C<#hVPhQf`˝  c UT0JHN d n 6u E ~ :\Yt  &IɵnxM#k ~n p mj S @V Z U6Vd xrl Q  Oڪ9x8pXp5rpmkl!~OLa@@+'} ! ߵv= z`L&Y0 n!!{ fi$/zf yg "#85h@YC`aqbwԃMW͖Ɋ/. (|UӔZ t  }   AߪƨU  4܈v`}$Ga5C߿<S08y^_5maѷ$7۩ ,+}|b4nLH-No;;meZ~  % }ovޝ  m   ! ˚ڶ  j  ׌  |ԇDeB / ͩ Qޜko\YƤў]$u"ćniy t ~"À%"!EzXecu| rrҐ_6TX)gӈÔph!y w  Yo1h$z zt.ǩ̯ùq!pd]g٨:\8)ZӨ/d^Yɡ: |{~ 9'zړcW߲d0SH,`ϝ۝آ t Xxkgx԰{ < / p ϫ Ū  u  Ƒ}t | ߱ Ţ Q pt^\c|dl ӟ ܘ m~USKL V u}SbVdz' Uzzw; ' ?̬ t i{  m Nc Gil~Y^PQ W h2p y ^ NFƈj|Nz<{?tmqpw «͸- O}}ynqxmk&7p_1WknX!ɣ"#șV  r bdW[ h{hVS jۛJ> #Ɂ(xhg # O *{ x vDLֈ7 ݈؏FQMe]D zwK `yr1~$PԵOU=U|{zex*v¼ǽC.j~"E/z|o4>6j ߅r rҒ S +b޸ڤēLPU4 - wh{'θͶ0߰  ƭhQ   qW`eHoa k Y # lW?3yYJwzm 4ߠJh\2hpU T;ش*" $|phin~5nuӰ AڴB0t"E͖{%ptc ix A |`Cux&Z|. f6 7 <#   W ƫ֐k0]bby: j pVj_^^UZȴIS*yv   V &n*+ָi j $d cjuDO ϫi\pڭ O j'`sD  tq gmaqb}ȠlkM LRsc fMF޲e  X  7&Hy e4{r|.|Bh~!$$&"$o %G 'f %{ ̋ A ! !6R;{r 0MzsĔ#^rU:} pڷз~E5F!m֦) {̄a=@ȶֽJq).0u} $!}:*G% ϳ S^ͩ#$j|+oviv'A0S8v|k,Ǵ[%ēՇgqLb m z {Z]ƫYZa < % R 5 , #˦ > Z ]?M\CNV Vm 6  > , Ee TPIX @oJ Jյgқ '  chs޹i7~ Ճ k{n`v}| 4 M *ԫSii5X yf:\] v Fwf }w  e s{u5~'  >=zQHQ[i ͮJ>J Hq   ߶9 $Ηv|||z0V"k" x9] Tbp{?gv  BQX(,7ɼm̷̯ Ŝ:WC7ŴjĹxܺgƭ`N^`&fP  KvX?p.sk  n ޥctͳͬ!jҵ "­H'C9g{ʀ  2fkbWpu0 ߵغҹeALM"k Axbę {,{UzI~ iͯOզߡٔ ă \2quzιImX$ŏ Ǵҹ_q`1v^koPչE_ Șp EdVny+wt-bjoi vnwrmkqkpӊb1qW /4VVvq,ޱj"թfثm_z~ \gq' ^#%,-Ѓ!FV{^ ^b j nloT{ b!3}!kY[d;yWv|vHؕ ͮv 0  N !!wkBr4ErtzV|%'= t$+ZX!ԉ!J bW3޹uv(mLS؟ Bݻ6G˰GҸ*<βʯڮ NmV1a cZ,,įi$$т>v@ݹ+n&YD6\hdR y `}èĥ̕q.eiɹ$ 05q%2' :|ɵC}!lhajFp^j 6w1xSp~nlyqpbS"һ* GMWPkkZ'5ƫ ܹR߰  X߆ 6 ľ#͸ݶ>Mւ:"h  e5a rm r4swszzp Tus{k}4ood{+Q#ywZܚ RڮSОJ v  ŷXã Lty|ifmSu x} =m[3- Ih7fDŋ!p! ȑ ̨"u4mȄA  ռկ̶#մ!n# iQT]s Ǜ< =LYH}ߊKv  KNQ&n>ӫɦgSIдZu ΞUϩ hzov[ϟϓ}A~ E 0 byT2 Q|۽ª؝!/{"ddg tEz q 0p~nncjm q2|~? V+CUM=k}bzn}F f% ۳ٸqX%& &zU"X"(.|Sm p &u#vcv*s:n%c =cRwps{#qx*pozwlwL6{HH(+Ҹ8$|ݫ N U]]1P{nqKugux{ !mF|5fc"Մ gDѤş!Т;B4` } ,u}ֵ+&% FF6IV,[,ÆD  o yCw8ؒinRi X%/v cp ívōϒC { h ^{ bMT<i݄!Tn/    g߻!%fڬ0}Be nj,*s(jjtmo{@ gwp j wc pq "p $ywpcOϸz ^ AM Fj  R Bf i vs z ~~? gYsmp"D ΂3}S]'&_Ű׭r w &w $s prnV`S]qu}Ozw%}|vujʉ|yhߪuM t 0=<gJk(ՙŽV=̀y|}z}O;f o~@Z"Q|fLƻ@usja 8aGٴ@˷\hǯܬT-61,KDߒ b ұ Я ȴZ n h`1!Z_ Uxuh~5pUAGC,†H-~Wy ~ *Ҭ3;2/=8 Lҫ ެ زoyqQ ٭W)h@ޕsbk}~ 5S|Oy 5r'c " wrZ#:z1yD Z3vd {  H7[O iζ/g<x ZT MqeU۪=!'z܌ & !l]~fѨն n !j{!=  TNJ\4  ?zg|pyݗ&2%I܆!H@l<emBn^Z\l" "x x$#l"u0zw}Jtu^w yx t " ! n kʥA;Crtu r y#xZX~Ikqvl| utqyݚWYqݠTE.xݝ"eʱCԧ95q̩tEfqӨ/ʧ3ym~wn\ Ӄ~| QaT«&n&fy  Ih׵ٵ4 rƳ_i|} C~ǢIܡ˥ -ɫ)SYGܧ."scnɽ ު9WsKzIiгykߘDznG|n!6Sˬ/ M 7Zj ܴ2ܽZ b{ gf} ­&" @83@sAbK|eaM;P[̤ yT; н-_@{8s|~|@ڐv o"%@ )o ! { ߪmD8$T; e~#y} xwB )3 7wV  z.UlKςYao݇gFݤ_ɠ2,e8jx-6Ѡi/yq} ߄=< )$pq7Njjlݡ@ /i"DjϱQly k wB Ʃ;;1**#"9wdC_-ŵlR KigFuEl٪Eڧ(˭O27 Y- zji޳hc    ۱ hkHyҰ   eom֢("!* ( ҊǛ e U!Կp qgIqN\ ͗6 =8 Jm OGz*yɆk&# $8)-' Y !!*vfv 4W^,  x/gХ6W  8jxӰ˹]^z9`>tJ,i zTOݚ ܫCo p|LfRqrOԯˬSws(؍t|͕ Ƶ"Ͷ! UWɮ  A3ИM`m !"ޱX+\NO}J+ sXLj (MbM8+ڰ`&1  ²Uq  Z Q u<ΪЭ[Xx  sն߹ Ȳ* / Ϗ, l69bHapo Rd e  ^ueSqz{pt ؟ օ~|-:lU[d|ʛa$QD(ooq3~cВ'X (,@1C/Ö+Ԟ a Ϛe"Ė1+ܨ2m)|Чϧ6 ,R&Zd`4 Rh}1}Ͳ³T$ktx .;Hi-zmͩ!pʄ؇J`ȫ ;zϳ  ΀ `S-ytj  қ{r&xv(;.ĭX\wb; ʪĨ(C) a Ȁ@_j hwׯ !" SP/  p{ _ ׹ +̴cs!  D :ܻüEH/uwa c Z[ `p\c jp3c xt yB zҢe]x"vvm [l!%#Goio[NΣȘ'7r zl{$ ( )E ./1 ' ' *h~ '{m !$7ܤʥ]}N~l^Zoz|>bj5CB+y {RmF$ دM2w$hl͞Ϊ]uG.գjF Vb/KٳݮgsՌϕ#~}K 3 T%ʱD0c ī,'% P !_L*U߬Qƪbc"u 3aX  P 5=   A ɳDx)ft!_ P  l*oʏϦf ]le!G`q̸W [ ReR s ްSW_H +9 }ouhd[\_gmip [U} 1NxȦݢyG~} d?- Z#إ-[|ˬ¦ʦ r f<{pr!{ #E% &lj)F - ( &+ *m&c _*mwv,i=k#v$_3Ԫ˭լ`¨>J؍}p}ӛu3ȩ> 6 ~ !M U  |#uءNGk?MmJٴ/j?׫*%g mok~%~5sc.&j]Ȧ Q G~ظu-^rOˤM-S̬+!I& g۩Rʭ߫# O?c4 ީy!D/.DO?3\0i\?ٲǭn~  4JF>yspdhȷL0&:Ӕy _ & | %ۺO8eαo֡ 6 ٔuVUXdppCj Ov 5rW%`qKw sr DK# F i x܅hzo"no!z R}!ـ "| '| o Wr pb  \]rdbe1_jbuƓ!-ҩ$CoAfy9̧>Π   c}  d .Z4Š ~J{mױu#ݬƮI JhɄQ; _J3s٣ ԯ ^  9;7s[DëLԧ¥[4Ūǩk1Cq ٦ ="ѩe],Z  wYh5 ivnv=Zmfh  Zc  tXÛ{Ǽ)b~qϧ5ň ܪ : hp 62 z UMT \eehu҇ nQ>jOnp[#J :sgƐ^<"r$5g r{}z tkDkbbs_dbd_d0qڢ gXi V@ʩcx}k h `yBmi y xQjõVp{w9[dZ׫ܫsűy_m >M[1`az̐"ޫReg uڮ ٭ ȷ8X+űb   ƯҳQӧu"*Vmn z ȨNPPũt$ܛ nxv+θ?ͥj%XԷ2-y$Rl% 2l! yzV׶ØʞP@سW" B Ҳ <}ڭl)Ӈb  VU ide` ed f~ʽ!)ŭBrp:2˦ޡ4yX|˻nol(r{4zusslaR]_bbBe`!` gb eygv|#ڭ\̩{ Mr xc[eUv } :W2Bye4 i Y~o9׳өʭg|<AMvEK|/0be֨'* @v 6/8A+zg? aHt% _ @}̠ aHU%q^_2Aâgjm1Lc:lJowѡ7߱_@ٹ\ u Ret˷ ܒԲLھغ4RȴD&u?" +ղ RFThn1mi1g'URܧ^ߕy|cxj~EoYɲb}w Y ut| xrptre\@_Da`_am]\ e C{#Edb |!c  "nݐ | vy ):ĨV*Z| Љ ŶzX  !Yi<hJw%Eq3r#йx̧cHxb.V7!qf`۱m":YGn=Y=JȠ9MGhb ٪C,b>Mggɍ ˗ lVūRzAq{߫i@o:ܳݱh3÷̩ұJg e Ag;ԡ3 W`4w* 1  zIWSu5~q_ 'y gXq  -|Efvo*Pe[BvSf lР q ؝ws~"M#y"r suxobebdu`q\[+lwI 3 zz}&ڐ pk  x  Ϝ%ϦT| ~|  s2 y@;'Ԥ('Ԙ `|:V%T(}R!"~ v=('-!ȧh`ZmI]¯=@պ>B:ӑ7j[ʣNܫi V/R2Br^WǪڵ^}t*6 `aöַ϶p)ȳ_6-ή{IJP$ݳĨ|iJ@e_ uԪѧ   poeZPlR q\ -b u6ѩ54eu(}أAWѱnO[W1j9ӓ#"7%v%+${#Iz"T|#w3ri=dcb`\YZis ޡΜ xf!yNd!> } ǁd6Ж|\vy V`d* TeӒ"ŨaO.ZVh^ՂH| w cܩ  t{#"pi wq’rПm˵ڇOXR ˢҔͦǨD@Y?xЩɬ>:Ʀ֩B<eǗ|Fv]4FկE MЫDgW8iG\$R~ TĮԬz޵hUݰ߰0_CUš$:Tq( X=-E L[t   3 tr~z L']|L 9O S`tR4;r?fݧVILu˺ZyjSSZ zzw:##U!E#ā"x~er[h`r]q[\pY?fhى  EpWoz}|I}*В O z wi>@̝[+~ lr 5m uqryψAʮDk(y/ا^}z|Z~ תrК?!dnhFtͅ,.\o`ĵ)4KUBut}na-]eMű+`bpęz^hJed å ֥y˰Ñ."/ $ ԙO<ܱ!ܱ8Jv@Oؚ}D%L8}mFOU CŐٸV 'cN~)չ f  II  nQ rN [ ']XIR= v0wZ͟?H \|dԹ>]j9] !mʆzK:#|"k!z!u}"oT`YW Vc1Z^ mV¡b }n!urinw\ ;ې΢{^U\  t k dkmu` 9³t֬ ٨KkƇ|sV̨Q(kLZ}yjiwr4ɛ"Ԧj? zmwݨqOʨҧn(~o XFg՚֢&e'ЯvƘ*ĞA'Jw )b&4۲"Op4ҡ2iQʨC{'հ<rC$hٳ<mc#Sn ʞϠ/ւ<TOV G < я  7hW ~^zˀ 7+Χū_}?y>S c |2 }#F0 "P$z"%||wn!do\W h kw9ha2c yMtmjz8*r#0s }wx u5xZ_ Ϗ ~ A , -  :  (j g l?gRf}fT֛֠yѝݥg^!K Pm  $  ʘm@x+&vkhng Vm|ُ{  γC,އ4rcx   'UNڰɤ"E (.v|TѥSf!ƪ(#Ccvy-Ū<   RUGb"o}xͧ{3Lҳ[W!"DBRV3{ h;EVƎ,Ý& le¸sȥ  Foi}olo  s +l-Ռ ޞ_I5#ȕ COT$z)Ԟ}Ԉg"zȟ`(k/ ڄnfl@{x2jr| ` ‹ )|">z#| zd|{t9 É    i ` l ax wxzvyl{6dMQ,z   -0<̍/Mҫ jbwr ld he Xt$!uF `$Jmv ݁ !~I,̲öYɨò ~у|]˸Qe ]įHѳ)ڧUͭ ^~}Սd-  ~? ɬ!ձGק۝VyِǭxbqʴڶhS:-jxvLص.#;&jѻ6#mҸʴèRYú1eA٢J = rвVuӤπa #_gq ͥ ѱ m C"ݍ$xe Wx<Fjޟ T  r$q" 5 %Ơ ,  eY`dp)xmjgt}ϖ |"oy$b| z mzw mC|y:~       `U $ bV؈02ަ)xСȅ   6իϵ:8x*< G>߉w;a \ i I `o!ݭ dp}lrwq VpzEXJ[}5 ) |y|c=ЩdJa- }  r _|\M,  ~$OSȝvٱ7'F2I}9w# +ܴ# `H7(GP   #H۽'ײ=˺@ܩ./P23  /~ jܷ{/JgCބ! Z FYfv' vm#g "Fdpz| $Ƨx<2 o rqi1##33 đ <\,Q\Jgj__0av-}  O!u %Ly :|z@o\}|v | | ʇ ގ K  %|ţCo ֥] 6 oɦ6k~ ~ ʉCܓήϹٳf"cģ  T qK] k ~nCȪ?٧Ʒ޵ܳڨnYmhmnh ?glӛO&5'+byv#vg&N| 6\U vyj\ 9    |yqxT ލ - t%΢ͦ+U8v/zv |%x|)+'۴ SkutGܼܶkpG ٣ U0J In'#ZSc q [ԱG hPRVWqVrZ#8T|fv +0Sr9f wGz [ ׬ԝ!"F ֌ 3 \VY_gg9`/aNp̂g5 Nݢru&x!}txghU  xz]~| 7  Օ  ˒ 3 0 OXTv̮wي:tL9 $4U(̵j,Ʈ7 ˟  gsIިO EVg roqo~km}pgp{ooχ/ʣ&1[2Q f ŧ C p"zu v/J5ޑOȚ~ Q 6ϵ^DC/|da &ٱűc0ѮwLӸ){ysnžnº7euf [Ы´ܒ $ ڲ|'-5Ҏ!_P}_v 6 z ^ TYUa.~x=  طkۛ ۏ  1%wl۟MZ  _ >+ P {oW`j]]\foh fj y' ݦmvx|YufR Ă O X ґ  ? ?X Ԝ qBXlbuƤ$1Յ?mČA_¨?R%iͳ%  ݠ  `pvvU!gZO@+c5z2vA|{tzd\j-;h{~qlٟ$G&   ( {^   qAj xē'֥ڞx;$ԚÚ zI!}{߄?g "ڟá$7!kb8XT^wj Lq*(c((*зRQЬ*Ӷt gFє }t<#5 dd Se  m ڭ  ơ ~`?belfVi~!g0J 2ME $!6 * P B  p!f`cOi}fWlvT q/ wy\l'bI[Ɖ? ߊ 7  t  [ݐ<2#)hOj}jXe Kq֒>յѱѶvQ  hmuOSêjJSθܱ%C6}RΜբ~xt6xn[{љC!  ƥ ƪ!!!$({Ю'ҳ?= vg vw/ę\] l &$̍  fz RTSHgH ~ :Rȣxѵ_) !~ڷλu!L/k m ʎ -AݹcWwjt}ʯdz\}  ƷЫ޴@';4l 1V h  4z}gPp xxbMbf%4g&3& v mQ.Ч%d0 Ϫ۪ G KΣ+ ~mi kkmky * 5`P0 Crqa^`,7 Ym ~͠P# U5}Ŕ*zՃԀy~& Bj@jj}fc  o+tϪFUʺkx#|~]˓NL#t}m~ r{-uߢ! vYƮӲֵsP0l 8v R A K:%; {rzɎ=yTz 2Z 2j|AЩѣq IdYûʽںնc]vxdW ȹ(P&fpɹȳtx4.CmD] } µ/fX%8{m Z m g  enkxVzkxf] K$Mrm  J ̸CΰO ”! ̰  &۟ !7{mhk~keno6 ] 9 Ý͖1rj`%[]( W ͐ "+yBRǗR N(;i ! IPJ{4}^tOj=DmKm  im#b]īl((ю   ڄvXo?V˔Е|Ӡt}w}V_0hAyGK=*o yՕ*P)"  GHhU-uVz  p  jmfb ;~ [- ?  `Z5Z1wS!,d#z%n"-ժ2 ϰ O@hYȩBs f Ԟ[ G׀fjxu| s~n|F U"!k_(R  x 1Gү˳ܱv!ծӫ-ߩ { g]agmt|ܟ< < T U_w_iUfWR $ S Ñ 8{pbGc_|Sљu֎C!c(ˑNĀwzߑGȣdHFʨMs?ۋA~#ݫ4ɷLZ3͗Ɏ+ؒ ј X{phLٓ|B(~ՃH?AҲ|pϦx },4r z ߘ'ZK̖4   ^ӈj{q !՟ ~.@[  u$pC?( вF"̧ uԲŤ  ݺW^ϯZs&E? $$!ӓ ~KШNĨiڥˣ{T C  Xd h;jkmnrlz  'r%!xR[ ?P Mj  0§` Jw c=Z]Zc Lo%zf  ֟ i~]sPeW(YL 2  rʒPFZ`xƱ Eq޸5-Eȑyb%dR3avg_l#Tݯ}c"<Gؼ|ȥy3!_ڦDa>%7;}vМҠ"K5~M\߇dz˶Ϲ4}8jTz z|g=Ϊ1 5 | 6}Zz`TVկ T#֥v{Р<̪s%Ѷnp !͢ pҤUy۠ʛ K5owW4ɮeЬ}{|.g|9=4MΛ ;'_ ejlcl?p h':׬IJ{" _ϐ$lQůs ۦ+ H vͪoŨl[(Y  eZYv\ b5o x >,  |"h\b. P М[$KٹbOa^/Uގ<m`` _۴cNԈ"Y""ͷa@k:%bU&ŝX*Ɔ |z=pJ _ujb/ ޶"ڶ&"ݘ.}MūݡF  zr܍pKR'e%ب[N ף©*wحI} ޫ3zxƩJ^"Z dLm_y 4˶apXŘ 9ƴp~"#   L =}[ Iasnskh~uk4w!m^޴~)Cҳȴ(ͳŬI ǧ ƭN  MSe! 5ha&gshh u <ô J $s|#f`\flibvips-8.9.1/configure.ac000066400000000000000000001214441361153320700154760ustar00rootroot00000000000000# Process this file with autoconf to produce a configure script. # also update the version number in the m4 macros below AC_INIT([vips], [8.9.1], [vipsip@jiscmail.ac.uk]) # required for gobject-introspection AC_PREREQ(2.62) # gobject-introspection recommends -Wno-portability # foreign stops complaints about a missing README (we use README.md instead) # and missing INSTALL (the standard Gnu INSTALL is not very useful) # subdir-objects lets us have dumy.cc in a subdir AM_INIT_AUTOMAKE([-Wno-portability foreign subdir-objects]) AC_CONFIG_HEADERS(config.h) AC_CONFIG_MACRO_DIR([m4]) # user-visible library versioning m4_define([vips_major_version], [8]) m4_define([vips_minor_version], [9]) m4_define([vips_micro_version], [1]) m4_define([vips_version], [vips_major_version.vips_minor_version.vips_micro_version]) VIPS_MAJOR_VERSION=vips_major_version() VIPS_MINOR_VERSION=vips_minor_version() VIPS_MICRO_VERSION=vips_micro_version() VIPS_VERSION=vips_version() VIPS_VERSION_STRING=$VIPS_VERSION-`date -u -r ChangeLog` # libtool library versioning ... not user-visible (except as part of the # library file name) and does not correspond to major/minor/micro above # rules: # sources changed: increment revision # binary interface changed: increment current, reset revision to 0 # binary interface changes backwards compatible?: increment age # binary interface changes not backwards compatible?: reset age to 0 LIBRARY_CURRENT=54 LIBRARY_REVISION=1 LIBRARY_AGE=12 # patched into include/vips/version.h AC_SUBST(VIPS_VERSION) AC_SUBST(VIPS_VERSION_STRING) AC_SUBST(VIPS_MAJOR_VERSION) AC_SUBST(VIPS_MINOR_VERSION) AC_SUBST(VIPS_MICRO_VERSION) # put into library name by libsrc/Makefile.am and libsrcCC/Makefile.am AC_SUBST(LIBRARY_CURRENT) AC_SUBST(LIBRARY_REVISION) AC_SUBST(LIBRARY_AGE) # init introspection support GOBJECT_INTROSPECTION_CHECK([1.30.0]) # gir needs a list of source files to scan for introspection # # build with a glob and a list of files to exclude from scanning # see also IGNORE_HFILES in doc/Makefile.am introspection_sources=$(cd libvips ; find . -name "*.c"; find . -name "*.cpp") filter_list="deprecated introspect.c dummy.c fuzz " # contains(string, substring) # # Returns 0 if the specified string contains the specified substring, # otherwise returns 1. contains() { string="$1" substring="$2" if test x"${string#*$substring}" != x"$string"; then return 0 # $substring is in $string else return 1 # $substring is not in $string fi } introspection_sources2= for name in $introspection_sources; do found=0 for filter in $filter_list; do if contains $name ${filter}; then found=1 fi done if [[ $found -eq 0 ]]; then introspection_sources2="$introspection_sources2 $name" fi done vips_introspection_sources="$introspection_sources2" # add headers that form the public vips8 API .. don't do a find and exclude, # we end up excluding almost everything argh headers="\ basic.h \ vips.h \ object.h \ image.h \ error.h \ foreign.h \ freqfilt.h \ interpolate.h \ header.h \ histogram.h \ operation.h \ enumtypes.h \ conversion.h \ arithmetic.h \ colour.h \ convolution.h \ create.h \ draw.h \ morphology.h \ mosaicing.h \ type.h \ rect.h \ resample.h \ memory.h \ region.h" for name in $headers; do vips_introspection_sources="$vips_introspection_sources include/vips/$name" done AC_SUBST(vips_introspection_sources) AC_CANONICAL_HOST AC_DEFINE_UNQUOTED(G_LOG_DOMAIN, "VIPS", [Domain for glib logging messages.]) m4_define([debug_default], [no]) AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@], [turn on debugging @<:@default=debug_default()@:>@]),, enable_debug=debug_default()) if test x"$enable_debug" = x"yes"; then VIPS_DEBUG_FLAGS="-DDEBUG_FATAL -DDEBUG_LEAK" else VIPS_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS" if test x"$enable_debug" = x"no"; then VIPS_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS" fi fi # option to disable deprecated code, shaves a bit off the library size AC_ARG_ENABLE(deprecated, AS_HELP_STRING([--enable-deprecated], [build deprecated components (default: yes)])) VIPS_ENABLE_DEPRECATED=0 if test x"$enable_deprecated" != x"no"; then VIPS_ENABLE_DEPRECATED=1 enable_deprecated=yes fi AM_CONDITIONAL(ENABLE_DEPRECATED, [test x"$enable_deprecated" = x"yes"]) # this gets pasted into version.h as a #define AC_SUBST(VIPS_ENABLE_DEPRECATED) # we are a C library with some optional C++ components inside it # on most platforms, but not all, we just include -lstdc++ in the link line # for programs # we ought to have a proper configure test for this :( AC_MSG_CHECKING([for needs -lstdc++]) case "$host_os" in freebsd*) vips_needs_stdcpp=no ;; *) vips_needs_stdcpp=yes ;; esac AC_MSG_RESULT([$vips_needs_stdcpp]) AC_MSG_CHECKING([for native Win32]) case "$host" in *-*-mingw*) vips_os_win32=yes ;; *) vips_os_win32=no ;; esac AC_MSG_RESULT([$vips_os_win32]) if test x"$vips_os_win32" = x"yes"; then AC_DEFINE(OS_WIN32,1,[native win32]) # makes gcc use win native alignment VIPS_CFLAGS="-mms-bitfields $VIPS_CFLAGS" fi # CImg needs flags changed on win32 AM_CONDITIONAL(OS_WIN32, [test x"$vips_os_win32" = x"yes"]) # Cygwin/mingw need binary open to avoid CR/LF madness # ... should be a better way to test for this AC_MSG_CHECKING([for binary open needed]) case "$host_os" in cygwin* | mingw*) vips_binary_open=yes ;; *) vips_binary_open=no ;; esac AC_MSG_RESULT([$vips_binary_open]) if test x"$vips_binary_open" = x"yes"; then AC_DEFINE(BINARY_OPEN,1,[define to open non-text files in binary mode]) fi AC_MSG_CHECKING([for Mac OS X]) case "$host" in *-*-darwin*) vips_os_darwin=yes ;; *) vips_os_darwin=no ;; esac AC_MSG_RESULT([$vips_os_darwin]) if test x"$vips_os_darwin" = x"yes"; then AC_DEFINE(VIPS_OS_DARWIN,1,[native Mac OS X]) fi # set the default directory for ICC profiles if test x"$vips_os_darwin" = x"yes"; then profile_dir="/Library/ColorSync/Profiles" elif test x"$vips_os_win32" = x"yes"; then # need double escapes since this will get pasted into a #define in a C # header ... the C:\Windows is usually overrwritten with the result of # GetWindowsDirectoryW() profile_dir="C:\\\\Windows\\\\System32\\\\spool\\\\drivers\\\\color" else profile_dir="/usr/share/color/icc" fi AC_DEFINE_UNQUOTED(VIPS_ICC_DIR,"$profile_dir",[default directory for ICC profiles]) # we want largefile support, if possible AC_SYS_LARGEFILE # Checks for programs. AC_PROG_AWK AC_PROG_CC AC_PROG_CC_STDC AC_PROG_CXX AC_PROG_RANLIB AC_PROG_INSTALL AC_PROG_LN_S AM_WITH_DMALLOC # we need a fully expanded version of $libdir # without this we get something like # define VIPS_LIBDIR ${exec_prefix}/lib # argh test x"$prefix" = x"NONE" && prefix=$ac_default_prefix test x"$exec_prefix" = x"NONE" && exec_prefix='${prefix}' # set $expanded_value to the fully-expanded value of the argument expand () { eval expanded_value=$1 if test x"$expanded_value" != x"$1"; then expand "$expanded_value" fi } expand $libdir VIPS_LIBDIR=$expanded_value # this gets pasted into version.h as a #define VIPS_EXEEXT=$EXEEXT AC_SUBST(VIPS_EXEEXT) # vips.c/im_guess_prefix.c need to know the exe suffix and (as a fallback) # the configure-time install prefix AC_DEFINE_UNQUOTED(VIPS_PREFIX,"$prefix",[configure-time install prefix]) AC_DEFINE_UNQUOTED(VIPS_LIBDIR,"$VIPS_LIBDIR",[configure-time library directory]) # i18n # we need to name our .mo with major.minor so we can have multiple versions # installed in parallel on Debian expand vips$VIPS_MAJOR_VERSION.$VIPS_MINOR_VERSION GETTEXT_PACKAGE=$expanded_value AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [The prefix for our gettext translation domains.]) # the 'malkovich' one is there for testing only, remove for release #ALL_LINGUAS="en_GB de malkovich" ALL_LINGUAS="en_GB de" AM_GLIB_GNU_GETTEXT # we need to disable some features on some known-bad gcc versions # these will be "" for clang etc. # # I couldn't get this to work, mysterious! do it ourselves # # AX_CHECK_COMPILE_FLAG([-dumpversion], # [ax_gcc_version_option=yes], # [ax_gcc_version_option=no] # ) AC_MSG_CHECKING([for gcc version]) GCC_VERSION="" version=$($CC -dumpversion) if test $? = 0; then GCC_VERSION=$version AC_MSG_RESULT([$GCC_VERSION]) else AC_MSG_RESULT([-dumpversion not supported]) fi GCC_VERSION_MAJOR=$(echo $GCC_VERSION | cut -d'.' -f1) GCC_VERSION_MINOR=$(echo $GCC_VERSION | cut -d'.' -f2) GCC_VERSION_PATCH=$(echo $GCC_VERSION | cut -d'.' -f3) # Checks for libraries. # build list of pkg-config packages we used here PACKAGES_USED="" # build list of extra libs we need here # the main one is jpeg: it does not have a .pc file, so when we make vips.pc # we need to put -ljpeg into libs ourselves EXTRA_LIBS_USED="" # Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC AC_CHECK_HEADERS([errno.h math.h fcntl.h limits.h stdlib.h string.h sys/file.h sys/ioctl.h sys/param.h sys/time.h sys/mman.h sys/types.h sys/stat.h unistd.h io.h direct.h windows.h]) # uncomment to change which libs we build # AC_DISABLE_SHARED # AC_DISABLE_STATIC AC_LIBTOOL_WIN32_DLL AC_CHECK_TOOL(DLLWRAP, dllwrap) AC_CHECK_TOOL(DLLTOOL, dlltool) AC_CHECK_TOOL(OBJDUMP, objdump) AC_CHECK_TOOL(RANLIB, ranlib) AC_CHECK_TOOL(STRIP, strip) AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(AS, as) AC_CHECK_TOOL(LD, ld) AC_PROVIDE([AC_LIBTOOL_WIN32_DLL]) AC_PROG_LIBTOOL # Checks for typedefs, structures, and compiler characteristics. AC_C_RESTRICT AX_GCC_VAR_ATTRIBUTE(vector_size) AC_C_CONST AC_TYPE_MODE_T AC_TYPE_OFF_T AC_TYPE_SIZE_T # g++/gcc 4.x and 5.x have rather broken vector support ... 5.4.1 seems to # work, but 5.4.0 fails to even compile AC_MSG_CHECKING([for gcc with working vector support]) if test x"$GCC_VERSION_MAJOR" != x"4" -a x"$GCC_VERSION_MAJOR" != x"5"; then AC_MSG_RESULT([yes]) else ax_cv_have_var_attribute_vector_size=no AC_MSG_RESULT([no]) fi # we need to be able to shuffle vectors in C++ if test x"$ax_cv_have_var_attribute_vector_size" = x"yes"; then AC_MSG_CHECKING([for C++ vector shuffle]) AC_LANG_PUSH([C++]) AC_TRY_COMPILE([ typedef float v4f __attribute__((vector_size(4 * sizeof(float)))); ],[ v4f f; f[3] = 99; ],[ AC_MSG_RESULT([yes]) have_vector_shuffle=yes ], [ AC_MSG_RESULT([no]) have_vector_shuffle=no ]) AC_LANG_POP([C++]) if test x"$have_vector_shuffle" = x"yes"; then AC_DEFINE_UNQUOTED(HAVE_VECTOR_SHUFFLE, 1, [define if your C++ can shuffle vectors]) fi fi # we also need to be able to mix vector and scalar arithmetic if test x"$have_vector_shuffle" = x"yes"; then AC_MSG_CHECKING([for C++ vector arithmetic]) AC_LANG_PUSH([C++]) AC_TRY_COMPILE([ typedef float v4f __attribute__((vector_size(4 * sizeof(float)))); ],[ v4f f = {1, 2, 3, 4}; f *= 12.0; v4f g = {5, 6, 7, 8}; f = g > 0 ? g : -1 * g; ],[ AC_MSG_RESULT([yes]) have_vector_arith=yes ], [ AC_MSG_RESULT([no]) have_vector_arith=no ]) AC_LANG_POP([C++]) fi # gcc 7.2 seems to work, but then gets confused by signed constants in # templates if test x"$have_vector_arith" = x"yes"; then AC_MSG_CHECKING([for C++ signed constants in vector templates]) AC_LANG_PUSH([C++]) AC_TRY_COMPILE([ typedef float v4f __attribute__((vector_size(4 * sizeof(float)))); template static void h( v4f B ) { v4f f; f = -1 * B; } ],[ ],[ AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) have_vector_arith=no ]) AC_LANG_POP([C++]) if test x"$have_vector_arith" = x"yes"; then AC_DEFINE_UNQUOTED(HAVE_VECTOR_ARITH, 1, [define if your C++ can mix vector and scalar arithmetic]) fi fi # Checks for library functions. AC_FUNC_MEMCMP AC_FUNC_MMAP AC_FUNC_VPRINTF AC_CHECK_FUNCS([getcwd gettimeofday getwd memset munmap putenv realpath strcasecmp strchr strcspn strdup strerror strrchr strspn vsnprintf realpath mkstemp mktemp random rand sysconf atexit]) AC_CHECK_LIB(m,cbrt,[AC_DEFINE(HAVE_CBRT,1,[have cbrt() in libm.])]) AC_CHECK_LIB(m,hypot,[AC_DEFINE(HAVE_HYPOT,1,[have hypot() in libm.])]) AC_CHECK_LIB(m,atan2,[AC_DEFINE(HAVE_ATAN2,1,[have atan2() in libm.])]) # have to have these # need glib 2.6 for GOption PKG_CHECK_MODULES(REQUIRED, glib-2.0 >= 2.6 gmodule-2.0 gobject-2.0) PACKAGES_USED="$PACKAGES_USED glib-2.0 gmodule-2.0 gobject-2.0" # from 2.12 we have g_base64_encode() PKG_CHECK_MODULES(BASE64_ENCODE, glib-2.0 >= 2.12, [AC_DEFINE(HAVE_BASE64_ENCODE,1, [define if your glib has g_base64_encode().] ) ], [: ] ) # from 2.14 we have g_option_context_get_help() PKG_CHECK_MODULES(CONTEXT_GET_HELP, glib-2.0 >= 2.14, [AC_DEFINE(HAVE_CONTEXT_GET_HELP,1, [define if your glib has g_option_context_get_help().] ) ], [: ] ) # from 2.15 we have GIO PKG_CHECK_MODULES(GIO, glib-2.0 >= 2.15, [AC_DEFINE(HAVE_GIO,1, [define if your glib has GIO.] ) ], [: ] ) # from 2.28 we have a monotonic timer PKG_CHECK_MODULES(MONOTONIC_TIME, glib-2.0 >= 2.28, [AC_DEFINE(HAVE_MONOTONIC_TIME,1, [define if your glib has g_get_monotonic_time().] ) ], [: ] ) # from 2.62 we have datetime PKG_CHECK_MODULES(DATE_TIME_FORMAT_ISO8601, glib-2.0 >= 2.62, [AC_DEFINE(HAVE_DATE_TIME_FORMAT_ISO8601,1, [define if your glib has g_date_time_format_iso8601().] ) ], [: ] ) # the old threading system PKG_CHECK_MODULES(GTHREAD, gthread-2.0) PACKAGES_USED="$PACKAGES_USED gthread-2.0" # from 2.32 there are a new set of thread functions, annoyingly PKG_CHECK_MODULES(THREADS, glib-2.0 >= 2.32, [AC_DEFINE(HAVE_MUTEX_INIT,1,[define if your glib has g_mutex_init().]) AC_DEFINE(HAVE_COND_INIT,1,[define if your glib has g_cond_init().]) AC_DEFINE(HAVE_THREAD_NEW,1,[define if your glib has g_thread_new().]) AC_DEFINE(HAVE_PRIVATE_INIT,1,[define if your glib has G_PRIVATE_INIT().]) AC_DEFINE(HAVE_VALUE_GET_SCHAR,1, [define if your glib has g_value_get_schar().] ) ], [: ] ) # if available, we use pthread_setattr_default_np() to raise the per-thread # stack size ... musl (libc on Alpine), for example, has a very small stack per # thread by default save_pthread_LIBS="$LIBS" save_pthread_CFLAGS="$CFLAGS" LIBS="$LIBS $GTHREAD_LIBS" CFLAGS="$CFLAGS $GTHREAD_CFLAGS" AC_CHECK_FUNC(pthread_setattr_default_np, [AC_DEFINE(HAVE_PTHREAD_DEFAULT_NP,1,[have pthread_setattr_default_np().]) ] ) LIBS="$save_pthread_LIBS" CFLAGS="$save_pthread_CFLAGS" # from 2.36 the type system inits itself PKG_CHECK_MODULES(TYPE_INIT, glib-2.0 < 2.36, [AC_DEFINE(HAVE_TYPE_INIT,1,[define if your glib needs g_type_init().]) ], [: ] ) # from 2.40, on win32 we have g_win32_get_command_line() PKG_CHECK_MODULES(WIN32_GET_COMMAND_LINE, glib-2.0 >= 2.40, [if test x"$vips_os_win32" = x"yes"; then AC_DEFINE(HAVE_G_WIN32_GET_COMMAND_LINE,1,[define if your glib has g_win32_get_command_line().]) have_g_win32_get_command_line=yes fi ], [: ] ) # from 2.40, have g_str_to_ascii() PKG_CHECK_MODULES(STR_TO_ASCII, glib-2.0 >= 2.40, [AC_DEFINE(HAVE_G_STR_TO_ASCII,1,[define if your glib has g_str_to_ascii().]) ], [: ] ) # from 2.48 we have g_uint_checked_mul() etc. PKG_CHECK_MODULES(HAVE_CHECKED_MUL, glib-2.0 >= 2.48, [AC_DEFINE(HAVE_CHECKED_MUL,1,[define if your glib has checked multiply.]) ], [: ] ) # check for gtk-doc GTK_DOC_CHECK([1.14],[--flavour no-tmpl]) # we need expat ... we'd love to use expat.pc, but sadly this is only available # for recent linuxes, so we have to use the old and horrible expat.m4 AM_WITH_EXPAT if test x"$expat_found" = x"no"; then exit 1 fi # optional supporting libraries AC_ARG_WITH([gsf], AS_HELP_STRING([--without-gsf], [build without libgsf-1 (default: test)])) # libgsf-1 1.14.21 crashes # .27 is known to work well # .26 seems OK but has not been tested much # not sure about 22-25 if test x"$with_gsf" != x"no"; then PKG_CHECK_MODULES(GSF, libgsf-1 >= 1.14.26, [AC_DEFINE(HAVE_GSF,1,[define if you have libgsf-1 installed.]) with_gsf=yes PACKAGES_USED="$PACKAGES_USED libgsf-1" ], [AC_MSG_WARN([libgsf-1 not found; disabling dzsave support]) with_gsf=no ] ) # zip64 and deflate-level came in .31 PKG_CHECK_MODULES(GSF_ZIP64, libgsf-1 >= 1.14.31, [AC_DEFINE(HAVE_GSF_ZIP64,1,[define if your libgsf supports zip64.]) AC_DEFINE(HAVE_GSF_DEFLATE_LEVEL,1, [define if your libgsf supports deflate-level.]) ], [: ] ) fi AC_ARG_WITH([fftw], AS_HELP_STRING([--without-fftw], [build without fftw (default: test)])) if test x"$with_fftw" != x"no"; then PKG_CHECK_MODULES(FFTW, fftw3, [AC_DEFINE(HAVE_FFTW,1,[define if you have fftw3 installed.]) with_fftw=yes PACKAGES_USED="$PACKAGES_USED fftw3" ], [AC_MSG_WARN([fftw not found; disabling fftw support]) with_fftw=no ] ) fi # ImageMagick AC_ARG_WITH([magick], AS_HELP_STRING([--without-magick], [build without libMagic (default: test)])) AC_ARG_WITH([magickpackage], AS_HELP_STRING([--with-magickpackage], [magickpackage to use (default: MagickCore; try GraphicsMagick to build against gm instead)])) # set the default magick package ... very old imagemagicks called it # ImageMagick if test x"$with_magickpackage" = x""; then PKG_CHECK_MODULES(MAGICK_WAND, MagickCore, [with_magickpackage=MagickCore ], [PKG_CHECK_MODULES(IMAGE_MAGICK, ImageMagick, [with_magickpackage=ImageMagick ], [AC_MSG_WARN([neither MagickCore nor ImageMagick found; disabling Magick support]) with_magick=no ] ) ] ) fi # we have a separate loader for magick7 with fewer ifdef # options; only test for features on the magick6 case magick_version= if test x"$with_magick" != x"no"; then PKG_CHECK_MODULES(MAGICK, $with_magickpackage >= 7.0, [AC_DEFINE(HAVE_MAGICK7,1,[define if you have libMagick7 installed.]) with_magick=yes magick7=yes magick_version=magick7 PACKAGES_USED="$PACKAGES_USED $with_magickpackage" ], [PKG_CHECK_MODULES(MAGICK, $with_magickpackage, [AC_DEFINE(HAVE_MAGICK6,1,[define if you have libMagick6 installed.]) with_magick=yes magick6=yes magick_version=magick6 PACKAGES_USED="$PACKAGES_USED $with_magickpackage" ], [AC_MSG_WARN([$with_magickpackage not found; disabling Magick support]) with_magick=no ] ) ] ) else with_magick=no magick6=no magick_version=none with_magickpackage=none fi if test x"$magick6" = x"yes"; then # do we have number_scenes in image_info ... imagemagick uses this save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $MAGICK_CFLAGS" AC_CHECK_MEMBER([struct _ImageInfo.number_scenes], AC_DEFINE(HAVE_NUMBER_SCENES,1, [define if your magick has ImageInfo.number_scenes.]), [], [#include ]) CFLAGS="$save_CFLAGS" fi if test x"$magick6" = x"yes"; then # the magick6 API varies a lot between magick versions, and between GM and # IM save_LIBS="$LIBS" LIBS="$LIBS $MAGICK_LIBS" AC_CHECK_FUNCS([InheritException AcquireExceptionInfo SetImageProperty SetImageExtent AcquireImage GetVirtualPixels ResetImageProfileIterator ResetImageAttributeIterator ResetImagePropertyIterator MagickCoreGenesis SetImageOption BlobToStringInfo OptimizePlusImageLayers OptimizeImageTransparency]) LIBS="$save_LIBS" fi if test x"$magick6" = x"yes"; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $MAGICK_CFLAGS" # the range of ColorspaceType has expanded several times AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [#include ], [ColorspaceType colorspace = CMYColorspace] )], [AC_DEFINE(HAVE_CMYCOLORSPACE,1, [define if your Magick has CMYColorspace.]) ] ) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [#include ], [ColorspaceType colorspace = HCLpColorspace] )], [AC_DEFINE(HAVE_HCLPCOLORSPACE,1, [define if your Magick has HCLpColorspace.]) ] ) # GetImageMagick() takes two args under GM, three under IM AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [#include ], [(void)GetImageMagick(NULL, 0, NULL)] )], [AC_DEFINE(HAVE_GETIMAGEMAGICK3,1, [define if your GetImageMagick() takes three arguments.]) ] ) CFLAGS="$save_CFLAGS" fi # have flags to turn load and save off independently ... some people will want # save but not load, for example AC_ARG_ENABLE([magickload], AS_HELP_STRING([--disable-magickload], [disable libMagic load (default: enabled)])) AC_ARG_ENABLE([magicksave], AS_HELP_STRING([--disable-magicksave], [disable libMagic save (default: enabled)])) if test x"$enable_magicksave" != x"yes"; then # we need ImportImagePixels ... GM is missing this sadly save_LIBS="$LIBS" LIBS="$LIBS $MAGICK_LIBS" AC_CHECK_FUNCS(ImportImagePixels,[ AC_DEFINE(HAVE_IMPORTIMAGEPIXELS,1, [define if you have ImportImagePixels.]) ],[] ) AC_CHECK_FUNCS(ImagesToBlob,[ AC_DEFINE(HAVE_IMAGESTOBLOB,1, [define if you have ImagesToBlob.]) ],[] ) LIBS="$save_LIBS" fi if test x"$with_magick" != x"no"; then if test x"$enable_magickload" != x"no"; then AC_DEFINE(ENABLE_MAGICKLOAD,1,[define to enable load with libMagick]) enable_magickload=yes fi if test x"$enable_magicksave" != x"no"; then AC_DEFINE(ENABLE_MAGICKSAVE,1,[define to enable save with libMagick]) enable_magicksave=yes fi else enable_magickload=no enable_magicksave=no fi # orc AC_ARG_WITH([orc], AS_HELP_STRING([--without-orc], [build without orc (default: test)])) if test x"$with_orc" != x"no"; then # we use loadpw etc. PKG_CHECK_MODULES(ORC, orc-0.4 >= 0.4.11, [AC_DEFINE(HAVE_ORC,1,[define if you have orc-0.4.11 or later installed.]) with_orc=yes PACKAGES_USED="$PACKAGES_USED orc-0.4" save_LIBS="$LIBS" LIBS="$LIBS $ORC_LIBS" AC_CHECK_FUNCS(orc_program_get_error, AC_DEFINE(HAVE_ORC_PROGRAM_GET_ERROR,1, [define if your orc has orc_program_get_error.])) LIBS="$save_LIBS" ], [AC_MSG_WARN([orc-0.4.11 or later not found; disabling orc support]) with_orc=no ] ) fi # orc 0.4.30+ works with cf-protection, but 0.4.30 has a bug with multiple # definitions of OrcTargetPowerPCFlags, so insist on 0.4.31 if test x"$with_orc" = x"yes"; then PKG_CHECK_MODULES(ORC_CF_PROTECTION, orc-0.4 >= 0.4.31, [AC_DEFINE(HAVE_ORC_CF_PROTECTION,1, [define if your orc works with cf-protection.] ) ], [: ] ) fi # lcms ... refuse to use lcms1 AC_ARG_WITH([lcms], AS_HELP_STRING([--without-lcms], [build without lcms (default: test)])) if test x"$with_lcms" != x"no"; then PKG_CHECK_MODULES(LCMS, lcms2, [AC_DEFINE(HAVE_LCMS2,1,[define if you have lcms2 installed.]) with_lcms="yes (lcms2)" PACKAGES_USED="$PACKAGES_USED lcms2" ], [AC_MSG_WARN([lcms2 not found; disabling ICC profile support]) with_lcms=no ] ) fi # we need a conditional for this to only compile in fallback profiles if lcms # is detected AM_CONDITIONAL(ENABLE_LCMS, [test x"$with_lcms" != x"no"]) # OpenEXR AC_ARG_WITH([OpenEXR], AS_HELP_STRING([--without-OpenEXR], [build without OpenEXR (default: test)])) # require 1.2.2 since 1.2.1 has a broken ImfCloseTiledInputFile() if test x"$with_OpenEXR" != x"no"; then PKG_CHECK_MODULES(OPENEXR, OpenEXR >= 1.2.2, [AC_DEFINE(HAVE_OPENEXR,1,[define if you have OpenEXR >=1.2.2 installed.]) with_OpenEXR=yes PACKAGES_USED="$PACKAGES_USED OpenEXR" ], [AC_MSG_WARN([OpenEXR not found; disabling OpenEXR support]) with_OpenEXR=no ] ) fi # nifti AC_ARG_WITH([nifti], AS_HELP_STRING([--without-nifti], [build without nifti (default: test)])) if test x"$with_nifti" != x"no"; then FIND_NIFTI([ with_nifti=yes ],[ with_nifti=no ] ) fi # libheif AC_ARG_WITH([heif], AS_HELP_STRING([--without-heif], [build without libheif (default: test)])) if test x"$with_heif" != x"no"; then PKG_CHECK_MODULES(HEIF, libheif, [with_heif=yes have_h265_decoder=`$PKG_CONFIG libheif --variable builtin_h265_decoder` # test for !=no so that we work for older libheif which does not have # this variable if test x"$have_h265_decoder" != x"no"; then AC_DEFINE(HAVE_HEIF_DECODER,1, [define if your libheif has decode support.]) fi have_h265_encoder=`$PKG_CONFIG libheif --variable builtin_h265_encoder` if test x"$have_h265_encoder" != x"no"; then AC_DEFINE(HAVE_HEIF_ENCODER,1, [define if your libheif has encode support.]) fi PACKAGES_USED="$PACKAGES_USED libheif" ], [AC_MSG_WARN([libheif not found; disabling HEIF support]) with_heif=no have_h265_decoder= have_h265_encoder= ] ) fi # heif_context_set_primary_image not in 1.1 if test x"$with_heif" = x"yes"; then save_LIBS="$LIBS" LIBS="$LIBS $HEIF_LIBS" AC_CHECK_FUNCS(heif_context_set_primary_image,[ AC_DEFINE(HAVE_HEIF_CONTEXT_SET_PRIMARY_IMAGE,1, [define if you have heif_context_set_primary_image.]) ],[] ) LIBS="$save_LIBS" fi # heif_encoding_options_alloc not in 1.1 if test x"$with_heif" = x"yes"; then save_LIBS="$LIBS" LIBS="$LIBS $HEIF_LIBS" AC_CHECK_FUNCS(heif_encoding_options_alloc,[ AC_DEFINE(HAVE_HEIF_ENCODING_OPTIONS_ALLOC,1, [define if you have heif_encoding_options_alloc.]) ],[] ) LIBS="$save_LIBS" fi # exif/xmp profile support not in 1.1 if test x"$with_heif" = x"yes"; then save_LIBS="$LIBS" LIBS="$LIBS $HEIF_LIBS" AC_CHECK_FUNCS(heif_context_add_exif_metadata,[ AC_DEFINE(HAVE_HEIF_CONTEXT_ADD_EXIF_METADATA,1, [define if you have heif_context_add_exif_metadata.]) ],[] ) LIBS="$save_LIBS" fi # color profile support added in 1.3.3 if test x"$with_heif" = x"yes"; then save_LIBS="$LIBS" LIBS="$LIBS $HEIF_LIBS" AC_CHECK_FUNCS(heif_image_handle_get_raw_color_profile,[ AC_DEFINE(HAVE_HEIF_COLOR_PROFILE,1, [define if you have heif_image_handle_get_raw_color_profile.]) ],[] ) LIBS="$save_LIBS" fi # fetch untransformed width/height added in 1.3.4 if test x"$with_heif" = x"yes"; then save_LIBS="$LIBS" LIBS="$LIBS $HEIF_LIBS" AC_CHECK_FUNCS(heif_image_handle_get_ispe_width,[ AC_DEFINE(HAVE_HEIF_IMAGE_HANDLE_GET_ISPE_WIDTH,1, [define if you have heif_image_handle_get_ispe_width.]) ],[] ) LIBS="$save_LIBS" fi # pdfium AC_ARG_WITH([pdfium], AS_HELP_STRING([--without-pdfium], [build without pdfium (default: test)])) if test x"$with_pdfium" != x"no"; then FIND_PDFIUM([ if test x"$with_poppler" != x"no"; then AC_MSG_WARN([PDFium found, disabling poppler]) with_poppler=no fi EXTRA_LIBS_USED="$EXTRA_LIBS_USED $PDFIUM_LIBS" with_pdfium=yes ],[ with_pdfium=no ] ) fi # poppler AC_ARG_WITH([poppler], AS_HELP_STRING([--without-poppler], [build without poppler (default: test)])) if test x"$with_poppler" != x"no"; then PKG_CHECK_MODULES(POPPLER, [poppler-glib >= 0.16.0 cairo >= 1.2], [AC_DEFINE(HAVE_POPPLER,1,[define if you have poppler-glib >= 0.16.0 and cairo >= 1.2 installed.]) with_poppler=yes PACKAGES_USED="$PACKAGES_USED poppler-glib cairo" ], [AC_MSG_WARN([poppler-glib >= 0.16.0 or cairo >= 1.2 not found; disabling PDF load via poppler]) with_poppler=no ] ) fi # librsvg AC_ARG_WITH([rsvg], AS_HELP_STRING([--without-rsvg], [build without rsvg (default: test)])) # 2.40.3 so we get the UNLIMITED open flag if test x"$with_rsvg" != x"no"; then PKG_CHECK_MODULES(RSVG, [librsvg-2.0 >= 2.40.3 cairo >= 1.2], [AC_DEFINE(HAVE_RSVG,1,[define if you have librsvg-2.0 >= 2.40.3 and cairo >= 1.2 installed.]) with_rsvg=yes PACKAGES_USED="$PACKAGES_USED librsvg-2.0 cairo" ], [AC_MSG_WARN([librsvg-2.0 >= 2.40.3 or cairo >= 1.2 not found; disabling SVG load via rsvg]) with_rsvg=no ] ) fi # zlib # some platforms, like macosx, are missing the .pc files for zlib, so # we fall back to FIND_ZLIB AC_ARG_WITH([zlib], AS_HELP_STRING([--without-zlib], [build without zlib (default: test)])) if test x"$with_zlib" != x"no"; then PKG_CHECK_MODULES(ZLIB, zlib >= 0.4, [AC_DEFINE(HAVE_ZLIB,1,[define if you have zlib installed.]) with_zlib=yes PACKAGES_USED="$PACKAGES_USED zlib" ], [FIND_ZLIB( [with_zlib="yes (found by search)" ], [AC_MSG_WARN([zlib not found; disabling SVGZ buffer support]) with_zlib=no ] ) ] ) fi # OpenSlide AC_ARG_WITH([openslide], AS_HELP_STRING([--without-openslide], [build without OpenSlide (default: test)]) ) if test x"$with_openslide" != x"no"; then PKG_CHECK_MODULES(OPENSLIDE, [openslide >= 3.4.0], [AC_DEFINE(HAVE_OPENSLIDE_3_4,1,[define if you have OpenSlide >= 3.4.0 installed.]) AC_DEFINE(HAVE_OPENSLIDE,1,[define if you have OpenSlide >= 3.3.0 installed.]) with_openslide=yes PACKAGES_USED="$PACKAGES_USED openslide" ], [AC_MSG_NOTICE([OpenSlide >= 3.4.0 not found; checking for >= 3.3.0]) PKG_CHECK_MODULES(OPENSLIDE, [openslide >= 3.3.0], [AC_DEFINE(HAVE_OPENSLIDE,1,[define if you have OpenSlide >= 3.3.0 installed.]) with_openslide=yes PACKAGES_USED="$PACKAGES_USED openslide" ], [AC_MSG_WARN([OpenSlide >= 3.3.0 not found; disabling virtual slide support]) with_openslide=no ] ) ] ) fi # matio AC_ARG_WITH([matio], AS_HELP_STRING([--without-matio], [build without matio (default: test)])) if test x"$with_matio" != x"no"; then PKG_CHECK_MODULES(MATIO, matio, [AC_DEFINE(HAVE_MATIO,1,[define if you have matio installed.]) with_matio=yes PACKAGES_USED="$PACKAGES_USED matio" ], [AC_MSG_WARN([matio not found; disabling matio support]) with_matio=no ] ) fi # not external libraries, but have options to disable them, helps to # reduce attack surface AC_ARG_WITH([ppm], AS_HELP_STRING([--without-ppm], [build without ppm (default: with)])) if test x"$with_ppm" != x"no"; then AC_DEFINE(HAVE_PPM,1,[define to build ppm support.]) with_ppm=yes fi AC_ARG_WITH([analyze], AS_HELP_STRING([--without-analyze], [build without analyze (default: with)])) if test x"$with_analyze" != x"no"; then AC_DEFINE(HAVE_ANALYZE,1,[define to build analyze support.]) with_analyze=yes fi AC_ARG_WITH([radiance], AS_HELP_STRING([--without-radiance], [build without radiance (default: with)])) if test x"$with_radiance" != x"no"; then AC_DEFINE(HAVE_RADIANCE,1,[define to build radiance support.]) with_radiance=yes fi # cfitsio AC_ARG_WITH([cfitsio], AS_HELP_STRING([--without-cfitsio], [build without cfitsio (default: test)])) if test x"$with_cfitsio" != x"no"; then PKG_CHECK_MODULES(CFITSIO, cfitsio, [AC_DEFINE(HAVE_CFITSIO,1,[define if you have cfitsio installed.]) with_cfitsio=yes PACKAGES_USED="$PACKAGES_USED cfitsio" ], [AC_MSG_WARN([cfitsio not found; disabling cfitsio support]) with_cfitsio=no ] ) fi # libwebp ... target 0.6+ to reduce complication # webp has the stuff for handling metadata in two separate libraries -- we # insit on having all of them AC_ARG_WITH([libwebp], AS_HELP_STRING([--without-libwebp], [build without libwebp (default: test)])) if test x"$with_libwebp" != x"no"; then PKG_CHECK_MODULES(LIBWEBP, libwebp >= 0.6 libwebpmux >= 0.6 libwebpdemux >= 0.6, [AC_DEFINE(HAVE_LIBWEBP,1,[define if you have libwebp/libwebpmux/libwebpdemux installed.]) with_libwebp=yes PACKAGES_USED="$PACKAGES_USED libwebp libwebpmux libwebpdemux" ], [AC_MSG_WARN([libwebp, mux, demux not found; disabling WEBP support]) with_libwebp=no ] ) fi # pangoft2 AC_ARG_WITH([pangoft2], AS_HELP_STRING([--without-pangoft2], [build without pangoft2 (default: test)])) if test x"$with_pangoft2" != x"no"; then PKG_CHECK_MODULES(PANGOFT2, pangoft2, [AC_DEFINE(HAVE_PANGOFT2,1,[define if you have pangoft2 installed.]) with_pangoft2=yes PACKAGES_USED="$PACKAGES_USED pangoft2" ], [AC_MSG_WARN([pangoft2 not found; disabling pangoft2 support]) with_pangoft2=no ] ) fi # look for TIFF with pkg-config ... fall back to our tester # pkgconfig support for libtiff starts with libtiff-4 AC_ARG_WITH([tiff], AS_HELP_STRING([--without-tiff], [build without libtiff (default: test)])) if test x"$with_tiff" != x"no"; then PKG_CHECK_MODULES(TIFF, libtiff-4, [AC_DEFINE(HAVE_TIFF,1,[define if you have libtiff installed.]) with_tiff="yes (pkg-config libtiff-4)" PACKAGES_USED="$PACKAGES_USED libtiff-4" ], [FIND_TIFF( with_tiff="yes (found by search)", [AC_MSG_WARN([libtiff not found; disabling TIFF support]) with_tiff=no ] ) ] ) fi # WEBP in TIFF added in libtiff 4.0.10 if test x"$with_tiff" != x"no"; then save_INCLUDES="$INCLUDES" INCLUDES="$INCLUDES $TIFF_INCLUDES" AC_CHECK_DECL(COMPRESSION_WEBP,[ AC_DEFINE(HAVE_TIFF_COMPRESSION_WEBP,1,[define if your libtiff has webp.]) ],[ ],[ [#include ] ] ) INCLUDES="$save_INCLUDES" fi # giflib FIND_GIFLIB( [with_giflib="yes (found by search)" ], [AC_MSG_WARN([giflib not found; disabling direct GIF support]) with_giflib=no ] ) # look for PNG with pkg-config ... fall back to our tester AC_ARG_WITH([png], AS_HELP_STRING([--without-png], [build without libpng (default: test)])) if test x"$with_png" != x"no"; then PKG_CHECK_MODULES(PNG, libpng >= 1.2.9, [AC_DEFINE(HAVE_PNG,1,[define if you have libpng installed.]) with_png="yes (pkg-config libpng >= 1.2.9)" PACKAGES_USED="$PACKAGES_USED libpng" ], [FIND_PNG( [with_png="yes (found by search)" ], [AC_MSG_WARN([libpng not found; disabling PNG support]) with_png=no ] ) ] ) fi if test x"$with_png" != x"no"; then save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PNG_LIBS $LIBS" CFLAGS="$PNG_INCLUDES $CFLAGS" AC_CHECK_FUNCS(png_set_chunk_malloc_max, AC_DEFINE(HAVE_PNG_SET_CHUNK_MALLOC_MAX,1, [define if your libpng has png_set_chunk_malloc_max.])) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # look for libimagequant with pkg-config (only if libpng is enabled) AC_ARG_WITH([imagequant], AS_HELP_STRING([--without-imagequant], [build without imagequant (default: test)])) if test x"$with_imagequant" != x"no" && test x"$with_png" != x"no"; then PKG_CHECK_MODULES(IMAGEQUANT, imagequant, [AC_DEFINE(HAVE_IMAGEQUANT,1,[define if you have imagequant installed.]) with_imagequant=yes PACKAGES_USED="$PACKAGES_USED imagequant" ], [AC_MSG_WARN([libimagequant not found; disabling 8bpp PNG support]) with_imagequant=no ] ) else with_imagequant=no fi # look for libjpeg with pkg-config ... fall back to our tester AC_ARG_WITH([jpeg], AS_HELP_STRING([--without-jpeg], [build without libjpeg (default: test)])) if test x"$with_jpeg" != x"no"; then PKG_CHECK_MODULES(JPEG, libjpeg, [AC_DEFINE(HAVE_JPEG,1,[define if you have libjpeg installed.]) with_jpeg="yes (pkg-config)" PACKAGES_USED="$PACKAGES_USED libjpeg" ], [FIND_JPEG( [with_jpeg="yes (found by search)" EXTRA_LIBS_USED="$EXTRA_LIBS_USED -ljpeg" ], [AC_MSG_WARN([libjpeg not found; disabling JPEG support]) with_jpeg=no ] ) ] ) fi # features like trellis quant are exposed as extension parameters ... # mozjpeg 3.2 and later have #define JPEG_C_PARAM_SUPPORTED, but we must # work with earlier versions if test x"$with_jpeg" != x"no"; then save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$JPEG_LIBS $LIBS" CFLAGS="$JPEG_INCLUDES $CFLAGS" AC_CHECK_FUNCS(jpeg_c_bool_param_supported, AC_DEFINE(HAVE_JPEG_EXT_PARAMS,1, [define if your libjpeg has extension parameters.])) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # libexif AC_ARG_WITH([libexif], AS_HELP_STRING([--without-libexif], [build without libexif (default: test)])) if test x"$with_libexif" != x"no"; then PKG_CHECK_MODULES(EXIF, libexif >= 0.6, [AC_DEFINE(HAVE_EXIF,1,[define if you have libexif >= 0.6 installed.]) with_libexif=yes PACKAGES_USED="$PACKAGES_USED libexif" ], [AC_MSG_WARN([libexif >= 0.6 not found; disabling exif support]) with_libexif=no ] ) fi # some libexif packages need include , some just # how annoying if test x"$with_libexif" != x"no"; then # cppflags not cflags because we want the preproc to see the -I as well save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$EXIF_CFLAGS $CPPFLAGS" AC_CHECK_HEADER(exif-data.h, AC_DEFINE(UNTAGGED_EXIF,1,[libexif includes don't need libexif prefix])) CPPFLAGS="$save_CPPFLAGS" fi # fuzzing AC_ARG_VAR([LIB_FUZZING_ENGINE], [fuzzing library, e.g. /path/to/libFuzzer.a]) if test x"$LIB_FUZZING_ENGINE" = x; then LIB_FUZZING_ENGINE="libstandaloneengine.a" fi # Gather all up for VIPS_CFLAGS, VIPS_INCLUDES, VIPS_LIBS # sort includes to get longer, more specific dirs first # helps, for example, selecting graphicsmagick over imagemagick VIPS_CFLAGS=`for i in $VIPS_CFLAGS $GTHREAD_CFLAGS $REQUIRED_CFLAGS $EXPAT_CFLAGS $ZLIB_CFLAGS $PANGOFT2_CFLAGS $GSF_CFLAGS $FFTW_CFLAGS $MAGICK_CFLAGS $JPEG_CFLAGS $PNG_CFLAGS $IMAGEQUANT_CFLAGS $EXIF_CFLAGS $MATIO_CFLAGS $CFITSIO_CFLAGS $LIBWEBP_CFLAGS $LIBWEBPMUX_CFLAGS $GIFLIB_INCLUDES $RSVG_CFLAGS $PDFIUM_INCLUDES $POPPLER_CFLAGS $OPENEXR_CFLAGS $OPENSLIDE_CFLAGS $ORC_CFLAGS $TIFF_CFLAGS $LCMS_CFLAGS $HEIF_CFLAGS do echo $i done | sort -ru` VIPS_CFLAGS=`echo $VIPS_CFLAGS` VIPS_CFLAGS="$VIPS_DEBUG_FLAGS $VIPS_CFLAGS" VIPS_INCLUDES="$ZLIB_INCLUDES $PNG_INCLUDES $TIFF_INCLUDES $JPEG_INCLUDES $NIFTI_INCLUDES" VIPS_LIBS="$ZLIB_LIBS $HEIF_LIBS $MAGICK_LIBS $PNG_LIBS $IMAGEQUANT_LIBS $TIFF_LIBS $JPEG_LIBS $GTHREAD_LIBS $REQUIRED_LIBS $EXPAT_LIBS $PANGOFT2_LIBS $GSF_LIBS $FFTW_LIBS $ORC_LIBS $LCMS_LIBS $GIFLIB_LIBS $RSVG_LIBS $NIFTI_LIBS $PDFIUM_LIBS $POPPLER_LIBS $OPENEXR_LIBS $OPENSLIDE_LIBS $CFITSIO_LIBS $LIBWEBP_LIBS $LIBWEBPMUX_LIBS $MATIO_LIBS $EXIF_LIBS -lm" AC_SUBST(VIPS_LIBDIR) AC_SUBST(VIPS_CFLAGS) AC_SUBST(VIPS_INCLUDES) AC_SUBST(VIPS_LIBS) AC_SUBST(PACKAGES_USED) AC_SUBST(EXTRA_LIBS_USED) # needed by test/variables.sh.in # :( what's a better way to do this, argh TOP_SRCDIR=$ac_pwd AC_SUBST(TOP_SRCDIR) AC_OUTPUT([ vips.pc vips-cpp.pc Makefile libvips/include/vips/version.h libvips/include/Makefile libvips/include/vips/Makefile libvips/Makefile libvips/arithmetic/Makefile libvips/colour/Makefile libvips/colour/profiles/Makefile libvips/conversion/Makefile libvips/convolution/Makefile libvips/deprecated/Makefile libvips/foreign/Makefile libvips/freqfilt/Makefile libvips/histogram/Makefile libvips/draw/Makefile libvips/iofuncs/Makefile libvips/morphology/Makefile libvips/mosaicing/Makefile libvips/create/Makefile libvips/resample/Makefile cplusplus/include/Makefile cplusplus/include/vips/Makefile cplusplus/Makefile tools/Makefile tools/batch_crop tools/batch_image_convert tools/batch_rubber_sheet tools/light_correct tools/shrink_width test/Makefile test/variables.sh test/test-suite/Makefile test/test-suite/helpers/Makefile man/Makefile doc/Makefile doc/libvips-docs.xml po/Makefile.in fuzz/Makefile ]) AC_MSG_RESULT([dnl * build options native win32: $vips_os_win32 native OS X: $vips_os_darwin open files in binary mode: $vips_binary_open enable debug: $enable_debug enable deprecated library components: $enable_deprecated enable docs with gtkdoc: $enable_gtk_doc gobject introspection: $found_introspection enable radiance support: $with_radiance enable analyze support: $with_analyze enable PPM support: $with_ppm * optional dependencies use fftw3 for FFT: $with_fftw Magick package: $with_magickpackage Magick API version: $magick_version load with libMagick: $enable_magickload save with libMagick: $enable_magicksave accelerate loops with orc: $with_orc (requires orc-0.4.11 or later) ICC profile support with lcms: $with_lcms file import with niftiio: $with_nifti file import with libheif: $with_heif file import with OpenEXR: $with_OpenEXR file import with OpenSlide: $with_openslide (requires openslide-3.3.0 or later) file import with matio: $with_matio PDF import with PDFium $with_pdfium PDF import with poppler-glib: $with_poppler (requires poppler-glib 0.16.0 or later) SVG import with librsvg-2.0: $with_rsvg (requires librsvg-2.0 2.34.0 or later) zlib: $with_zlib file import with cfitsio: $with_cfitsio file import/export with libwebp: $with_libwebp (requires libwebp, libwebpmux, libwebpdemux 0.6.0 or later) text rendering with pangoft2: $with_pangoft2 file import/export with libpng: $with_png (requires libpng-1.2.9 or later) support 8bpp PNG quantisation: $with_imagequant (requires libimagequant) file import/export with libtiff: $with_tiff file import/export with giflib: $with_giflib file import/export with libjpeg: $with_jpeg image pyramid export: $with_gsf (requires libgsf-1 1.14.26 or later) use libexif to load/save JPEG metadata: $with_libexif ]) if test x"$vips_os_win32" = x"yes"; then if test x"$have_g_win32_get_command_line" != x"yes"; then AC_MSG_RESULT([dnl Your glib is too old, vips will not support unicode command-line arguments. ]) fi fi libvips-8.9.1/cplusplus/000077500000000000000000000000001361153320700152345ustar00rootroot00000000000000libvips-8.9.1/cplusplus/Makefile.am000066400000000000000000000014351361153320700172730ustar00rootroot00000000000000SUBDIRS = \ include AM_CPPFLAGS = \ -I$(top_srcdir)/libvips/include \ -I$(top_srcdir)/cplusplus/include \ @VIPS_CFLAGS@ lib_LTLIBRARIES = libvips-cpp.la libvips_cpp_la_SOURCES = \ VImage.cpp \ VInterpolate.cpp \ VConnection.cpp \ VError.cpp libvips_cpp_la_LDFLAGS = \ -no-undefined \ -version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@ libvips_cpp_la_LIBADD = \ $(top_builddir)/libvips/libvips.la @VIPS_LIBS@ vips-operators.cpp: echo "// bodies for vips operations" > vips-operators.cpp; \ echo -n "// " >> vips-operators.cpp; \ date >> vips-operators.cpp; \ echo "// this file is generated automatically, do not edit!" >> vips-operators.cpp; \ ./gen-operators.py -g cpp >> vips-operators.cpp EXTRA_DIST = \ README \ vips-operators.cpp \ gen-operators.py libvips-8.9.1/cplusplus/README000066400000000000000000000002101361153320700161050ustar00rootroot00000000000000This is the vips8 C++ binding. The old vips7 binding is still there, but this one is better. See the vips API docs for documentation. libvips-8.9.1/cplusplus/VConnection.cpp000066400000000000000000000063671361153320700202010ustar00rootroot00000000000000/* Object part of the VSource and VTarget class */ /* Copyright (C) 1991-2001 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* #define VIPS_DEBUG #define VIPS_DEBUG_VERBOSE */ VIPS_NAMESPACE_START VSource VSource::new_from_descriptor( int descriptor ) { VipsSource *input; if( !(input = vips_source_new_from_descriptor( descriptor )) ) throw VError(); VSource out( input ); return( out ); } VSource VSource::new_from_file( const char *filename ) { VipsSource *input; if( !(input = vips_source_new_from_file( filename )) ) throw VError(); VSource out( input ); return( out ); } VSource VSource::new_from_blob( VipsBlob *blob ) { VipsSource *input; if( !(input = vips_source_new_from_blob( blob )) ) throw VError(); VSource out( input ); return( out ); } VSource VSource::new_from_memory( const void *data, size_t size ) { VipsSource *input; if( !(input = vips_source_new_from_memory( data, size )) ) throw VError(); VSource out( input ); return( out ); } VSource VSource::new_from_options( const char *options ) { VipsSource *input; if( !(input = vips_source_new_from_options( options )) ) throw VError(); VSource out( input ); return( out ); } VOption * VOption::set( const char *name, const VSource value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, VIPS_TYPE_SOURCE ); g_value_set_object( &pair->value, value.get_source() ); options.push_back( pair ); return( this ); } VTarget VTarget::new_to_descriptor( int descriptor ) { VipsTarget *output; if( !(output = vips_target_new_to_descriptor( descriptor )) ) throw VError(); VTarget out( output ); return( out ); } VTarget VTarget::new_to_file( const char *filename ) { VipsTarget *output; if( !(output = vips_target_new_to_file( filename )) ) throw VError(); VTarget out( output ); return( out ); } VTarget VTarget::new_to_memory() { VipsTarget *output; if( !(output = vips_target_new_to_memory()) ) throw VError(); VTarget out( output ); return( out ); } VOption * VOption::set( const char *name, const VTarget value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, VIPS_TYPE_TARGET ); g_value_set_object( &pair->value, value.get_target() ); options.push_back( pair ); return( this ); } VIPS_NAMESPACE_END libvips-8.9.1/cplusplus/VError.cpp000066400000000000000000000023611361153320700171610ustar00rootroot00000000000000// Code for error type /* Copyright (C) 1991-2001 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include VIPS_NAMESPACE_START std::ostream &operator<<( std::ostream &file, const VError &err ) { err.ostream_print( file ); return( file ); } void VError::ostream_print( std::ostream &file ) const { file << _what; } VIPS_NAMESPACE_END libvips-8.9.1/cplusplus/VImage.cpp000066400000000000000000000706601361153320700171210ustar00rootroot00000000000000/* Object part of VImage class * * 30/12/14 * - allow set enum value from string * 10/6/16 * - missing implementation of VImage::write() * 11/6/16 * - added arithmetic assignment overloads, += etc. */ /* Copyright (C) 1991-2001 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* #define VIPS_DEBUG #define VIPS_DEBUG_VERBOSE */ VIPS_NAMESPACE_START std::vector to_vectorv( int n, ... ) { std::vector vector( n ); va_list ap; va_start( ap, n ); for( int i = 0; i < n; i++ ) vector[i] = va_arg( ap, double ); va_end( ap ); return( vector ); } std::vector to_vector( double value ) { return( to_vectorv( 1, value ) ); } std::vector to_vector( int n, double array[] ) { std::vector vector( n ); for( int i = 0; i < n; i++ ) vector[i] = array[i]; return( vector ); } std::vector negate( std::vector vector ) { std::vector new_vector( vector.size() ); for( unsigned int i = 0; i < vector.size(); i++ ) new_vector[i] = vector[i] * -1; return( new_vector ); } std::vector invert( std::vector vector ) { std::vector new_vector( vector.size() ); for( unsigned int i = 0; i < vector.size(); i++ ) new_vector[i] = 1.0 / vector[i]; return( new_vector ); } VOption::~VOption() { std::list::iterator i; for( i = options.begin(); i != options.end(); ++i ) delete *i; } // input bool VOption * VOption::set( const char *name, bool value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, G_TYPE_BOOLEAN ); g_value_set_boolean( &pair->value, value ); options.push_back( pair ); return( this ); } // input int ... this path is used for enums as well VOption * VOption::set( const char *name, int value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, G_TYPE_INT ); g_value_set_int( &pair->value, value ); options.push_back( pair ); return( this ); } // input double VOption * VOption::set( const char *name, double value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, G_TYPE_DOUBLE ); g_value_set_double( &pair->value, value ); options.push_back( pair ); return( this ); } VOption * VOption::set( const char *name, const char *value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, G_TYPE_STRING ); g_value_set_string( &pair->value, value ); options.push_back( pair ); return( this ); } // input image VOption * VOption::set( const char *name, const VImage value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, VIPS_TYPE_IMAGE ); g_value_set_object( &pair->value, value.get_image() ); options.push_back( pair ); return( this ); } // input double array VOption * VOption::set( const char *name, std::vector value ) { Pair *pair = new Pair( name ); double *array; unsigned int i; pair->input = true; g_value_init( &pair->value, VIPS_TYPE_ARRAY_DOUBLE ); vips_value_set_array_double( &pair->value, NULL, static_cast< int >( value.size() ) ); array = vips_value_get_array_double( &pair->value, NULL ); for( i = 0; i < value.size(); i++ ) array[i] = value[i]; options.push_back( pair ); return( this ); } // input int array VOption * VOption::set( const char *name, std::vector value ) { Pair *pair = new Pair( name ); int *array; unsigned int i; pair->input = true; g_value_init( &pair->value, VIPS_TYPE_ARRAY_INT ); vips_value_set_array_int( &pair->value, NULL, static_cast< int >( value.size() ) ); array = vips_value_get_array_int( &pair->value, NULL ); for( i = 0; i < value.size(); i++ ) array[i] = value[i]; options.push_back( pair ); return( this ); } // input image array VOption * VOption::set( const char *name, std::vector value ) { Pair *pair = new Pair( name ); VipsImage **array; unsigned int i; pair->input = true; g_value_init( &pair->value, VIPS_TYPE_ARRAY_IMAGE ); vips_value_set_array_image( &pair->value, static_cast< int >( value.size() ) ); array = vips_value_get_array_image( &pair->value, NULL ); for( i = 0; i < value.size(); i++ ) { VipsImage *vips_image = value[i].get_image(); array[i] = vips_image; g_object_ref( vips_image ); } options.push_back( pair ); return( this ); } // input blob VOption * VOption::set( const char *name, VipsBlob *value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, VIPS_TYPE_BLOB ); g_value_set_boxed( &pair->value, value ); options.push_back( pair ); return( this ); } // output bool VOption * VOption::set( const char *name, bool *value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vbool = value; g_value_init( &pair->value, G_TYPE_BOOLEAN ); options.push_back( pair ); return( this ); } // output int VOption * VOption::set( const char *name, int *value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vint = value; g_value_init( &pair->value, G_TYPE_INT ); options.push_back( pair ); return( this ); } // output double VOption * VOption::set( const char *name, double *value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vdouble = value; g_value_init( &pair->value, G_TYPE_DOUBLE ); options.push_back( pair ); return( this ); } // output image VOption * VOption::set( const char *name, VImage *value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vimage = value; g_value_init( &pair->value, VIPS_TYPE_IMAGE ); options.push_back( pair ); return( this ); } // output doublearray VOption * VOption::set( const char *name, std::vector *value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vvector = value; g_value_init( &pair->value, VIPS_TYPE_ARRAY_DOUBLE ); options.push_back( pair ); return( this ); } // output blob VOption * VOption::set( const char *name, VipsBlob **value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vblob = value; g_value_init( &pair->value, VIPS_TYPE_BLOB ); options.push_back( pair ); return( this ); } // just g_object_set_property(), except we allow set enum from string static void set_property( VipsObject *object, const char *name, const GValue *value ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); GType type = G_VALUE_TYPE( value ); GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) { g_warning( "%s", vips_error_buffer() ); vips_error_clear(); return; } if( G_IS_PARAM_SPEC_ENUM( pspec ) && type == G_TYPE_STRING ) { GType pspec_type = G_PARAM_SPEC_VALUE_TYPE( pspec ); int enum_value; GValue value2 = { 0 }; if( (enum_value = vips_enum_from_nick( object_class->nickname, pspec_type, g_value_get_string( value ) )) < 0 ) { g_warning( "%s", vips_error_buffer() ); vips_error_clear(); return; } g_value_init( &value2, pspec_type ); g_value_set_enum( &value2, enum_value ); g_object_set_property( G_OBJECT( object ), name, &value2 ); g_value_unset( &value2 ); } else g_object_set_property( G_OBJECT( object ), name, value ); } // walk the options and set props on the operation void VOption::set_operation( VipsOperation *operation ) { std::list::iterator i; for( i = options.begin(); i != options.end(); ++i ) if( (*i)->input ) { #ifdef VIPS_DEBUG_VERBOSE printf( "set_operation: " ); vips_object_print_name( VIPS_OBJECT( operation ) ); char *str_value = g_strdup_value_contents( &(*i)->value ); printf( ".%s = %s\n", (*i)->name, str_value ); g_free( str_value ); #endif /*VIPS_DEBUG_VERBOSE*/ set_property( VIPS_OBJECT( operation ), (*i)->name, &(*i)->value ); } } // walk the options and fetch any requested outputs void VOption::get_operation( VipsOperation *operation ) { std::list::iterator i; for( i = options.begin(); i != options.end(); ++i ) if( ! (*i)->input ) { const char *name = (*i)->name; g_object_get_property( G_OBJECT( operation ), name, &(*i)->value ); #ifdef VIPS_DEBUG_VERBOSE printf( "get_operation: " ); vips_object_print_name( VIPS_OBJECT( operation ) ); char *str_value = g_strdup_value_contents( &(*i)->value ); printf( ".%s = %s\n", name, str_value ); g_free( str_value ); #endif /*VIPS_DEBUG_VERBOSE*/ GValue *value = &(*i)->value; GType type = G_VALUE_TYPE( value ); if( type == VIPS_TYPE_IMAGE ) { // rebox object VipsImage *image = VIPS_IMAGE( g_value_get_object( value ) ); *((*i)->vimage) = VImage( image ); } else if( type == G_TYPE_INT ) *((*i)->vint) = g_value_get_int( value ); else if( type == G_TYPE_BOOLEAN ) *((*i)->vbool) = g_value_get_boolean( value ); else if( type == G_TYPE_DOUBLE ) *((*i)->vdouble) = g_value_get_double( value ); else if( type == VIPS_TYPE_ARRAY_DOUBLE ) { int length; double *array = vips_value_get_array_double( value, &length ); int j; ((*i)->vvector)->resize( length ); for( j = 0; j < length; j++ ) (*((*i)->vvector))[j] = array[j]; } else if( type == VIPS_TYPE_BLOB ) { // our caller gets a reference *((*i)->vblob) = (VipsBlob *) g_value_dup_boxed( value ); } } } void VImage::call_option_string( const char *operation_name, const char *option_string, VOption *options ) { VipsOperation *operation; VIPS_DEBUG_MSG( "call_option_string: starting for %s ...\n", operation_name ); if( !(operation = vips_operation_new( operation_name )) ) { delete options; throw( VError() ); } /* Set str options before vargs options, so the user can't * override things we set deliberately. */ if( option_string && vips_object_set_from_string( VIPS_OBJECT( operation ), option_string ) ) { vips_object_unref_outputs( VIPS_OBJECT( operation ) ); g_object_unref( operation ); delete options; throw( VError() ); } if( options ) options->set_operation( operation ); /* Build from cache. */ if( vips_cache_operation_buildp( &operation ) ) { vips_object_unref_outputs( VIPS_OBJECT( operation ) ); g_object_unref( operation ); delete options; throw( VError() ); } /* Walk args again, writing output. */ if( options ) options->get_operation( operation ); /* We're done with options! */ delete options; /* The operation we have built should now have been reffed by * one of its arguments or have finished its work. Either * way, we can unref. */ g_object_unref( operation ); } void VImage::call( const char *operation_name, VOption *options ) { call_option_string( operation_name, NULL, options ); } VImage VImage::new_from_file( const char *name, VOption *options ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; VImage out; vips__filename_split8( name, filename, option_string ); if( !(operation_name = vips_foreign_find_load( filename )) ) { delete options; throw VError(); } call_option_string( operation_name, option_string, (options ? options : VImage::option())-> set( "filename", filename )-> set( "out", &out ) ); return( out ); } VImage VImage::new_from_buffer( const void *buf, size_t len, const char *option_string, VOption *options ) { const char *operation_name; VipsBlob *blob; VImage out; if( !(operation_name = vips_foreign_find_load_buffer( buf, len )) ) { delete options; throw( VError() ); } /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); options = (options ? options : VImage::option())-> set( "buffer", blob )-> set( "out", &out ); vips_area_unref( VIPS_AREA( blob ) ); call_option_string( operation_name, option_string, options ); return( out ); } VImage VImage::new_from_buffer( const std::string &buf, const char *option_string, VOption *options ) { return( new_from_buffer( buf.c_str(), buf.size(), option_string, options ) ); } VImage VImage::new_from_source( VSource source, const char *option_string, VOption *options ) { const char *operation_name; VImage out; if( !(operation_name = vips_foreign_find_load_source( source.get_source() )) ) { delete options; throw( VError() ); } options = (options ? options : VImage::option())-> set( "source", source )-> set( "out", &out ); call_option_string( operation_name, option_string, options ); return( out ); } VImage VImage::new_matrix( int width, int height ) { return( VImage( vips_image_new_matrix( width, height ) ) ); } VImage VImage::new_matrixv( int width, int height, ... ) { VImage matrix = new_matrix( width, height ); VipsImage *vips_matrix = matrix.get_image(); va_list ap; va_start( ap, height ); for( int y = 0; y < height; y++ ) for( int x = 0; x < width; x++ ) *VIPS_MATRIX( vips_matrix, x, y ) = va_arg( ap, double ); va_end( ap ); return( matrix ); } VImage VImage::write( VImage out ) const { if( vips_image_write( this->get_image(), out.get_image() ) ) throw VError(); return( out ); } void VImage::write_to_file( const char *name, VOption *options ) const { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; vips__filename_split8( name, filename, option_string ); if( !(operation_name = vips_foreign_find_save( filename )) ) { delete options; throw VError(); } call_option_string( operation_name, option_string, (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } void VImage::write_to_buffer( const char *suffix, void **buf, size_t *size, VOption *options ) const { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; VipsBlob *blob; vips__filename_split8( suffix, filename, option_string ); if( !(operation_name = vips_foreign_find_save_buffer( filename )) ) { delete options; throw VError(); } call_option_string( operation_name, option_string, (options ? options : VImage::option())-> set( "in", *this )-> set( "buffer", &blob ) ); if( blob ) { if( buf ) { *buf = VIPS_AREA( blob )->data; VIPS_AREA( blob )->free_fn = NULL; } if( size ) *size = VIPS_AREA( blob )->length; vips_area_unref( VIPS_AREA( blob ) ); } } void VImage::write_to_target( const char *suffix, VTarget target, VOption *options ) const { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; vips__filename_split8( suffix, filename, option_string ); if( !(operation_name = vips_foreign_find_save_target( filename )) ) { delete options; throw VError(); } call_option_string( operation_name, option_string, (options ? options : VImage::option())-> set( "in", *this )-> set( "target", target ) ); } #include "vips-operators.cpp" std::vector VImage::bandsplit( VOption *options ) const { std::vector b; for( int i = 0; i < bands(); i++ ) b.push_back( extract_band( i ) ); return( b ); } VImage VImage::bandjoin( VImage other, VOption *options ) const { VImage v[2] = { *this, other }; std::vector vec( v, v + VIPS_NUMBER( v ) ); return( bandjoin( vec, options ) ); } VImage VImage::composite( VImage other, VipsBlendMode mode, VOption *options ) const { VImage v[2] = { *this, other }; std::vector ivec( v, v + VIPS_NUMBER( v ) ); int m[1] = { static_cast( mode ) }; std::vector mvec( m, m + VIPS_NUMBER( m ) ); return( composite( ivec, mvec, options ) ); } std::complex VImage::minpos( VOption *options ) const { double x, y; (void) min( (options ? options : VImage::option()) -> set( "x", &x ) -> set( "y", &y ) ); return( std::complex( x, y ) ); } std::complex VImage::maxpos( VOption *options ) const { double x, y; (void) max( (options ? options : VImage::option()) -> set( "x", &x ) -> set( "y", &y ) ); return( std::complex( x, y ) ); } // Operator overloads VImage VImage::operator[]( int index ) const { return( this->extract_band( index ) ); } std::vector VImage::operator()( int x, int y ) const { return( this->getpoint( x, y ) ); } VImage operator+( const VImage a, const VImage b ) { return( a.add( b ) ); } VImage operator+( double a, const VImage b ) { return( b.linear( 1.0, a ) ); } VImage operator+( const VImage a, double b ) { return( a.linear( 1.0, b ) ); } VImage operator+( const std::vector a, const VImage b ) { return( b.linear( 1.0, a ) ); } VImage operator+( const VImage a, const std::vector b ) { return( a.linear( 1.0, b ) ); } VImage & operator+=( VImage &a, const VImage b ) { return( a = a + b ); } VImage & operator+=( VImage &a, const double b ) { return( a = a + b ); } VImage & operator+=( VImage &a, const std::vector b ) { return( a = a + b ); } VImage operator-( const VImage a, const VImage b ) { return( a.subtract( b ) ); } VImage operator-( double a, const VImage b ) { return( b.linear( -1.0, a ) ); } VImage operator-( const VImage a, double b ) { return( a.linear( 1.0, -b ) ); } VImage operator-( const std::vector a, const VImage b ) { return( b.linear( -1.0, a ) ); } VImage operator-( const VImage a, const std::vector b ) { return( a.linear( 1.0, vips::negate( b ) ) ); } VImage & operator-=( VImage &a, const VImage b ) { return( a = a - b ); } VImage & operator-=( VImage &a, const double b ) { return( a = a - b ); } VImage & operator-=( VImage &a, const std::vector b ) { return( a = a - b ); } VImage operator-( const VImage a ) { return( a * -1 ); } VImage operator*( const VImage a, const VImage b ) { return( a.multiply( b ) ); } VImage operator*( double a, const VImage b ) { return( b.linear( a, 0.0 ) ); } VImage operator*( const VImage a, double b ) { return( a.linear( b, 0.0 ) ); } VImage operator*( const std::vector a, const VImage b ) { return( b.linear( a, 0.0 ) ); } VImage operator*( const VImage a, const std::vector b ) { return( a.linear( b, 0.0 ) ); } VImage & operator*=( VImage &a, const VImage b ) { return( a = a * b ); } VImage & operator*=( VImage &a, const double b ) { return( a = a * b ); } VImage & operator*=( VImage &a, const std::vector b ) { return( a = a * b ); } VImage operator/( const VImage a, const VImage b ) { return( a.divide( b ) ); } VImage operator/( double a, const VImage b ) { return( b.pow( -1.0 ).linear( a, 0.0 ) ); } VImage operator/( const VImage a, double b ) { return( a.linear( 1.0 / b, 0.0 ) ); } VImage operator/( const std::vector a, const VImage b ) { return( b.pow( -1.0 ).linear( a, 0.0 ) ); } VImage operator/( const VImage a, const std::vector b ) { return( a.linear( vips::invert( b ), 0.0 ) ); } VImage & operator/=( VImage &a, const VImage b ) { return( a = a / b ); } VImage & operator/=( VImage &a, const double b ) { return( a = a / b ); } VImage & operator/=( VImage &a, const std::vector b ) { return( a = a / b ); } VImage operator%( const VImage a, const VImage b ) { return( a.remainder( b ) ); } VImage operator%( const VImage a, const double b ) { return( a.remainder_const( to_vector( b ) ) ); } VImage operator%( const VImage a, const std::vector b ) { return( a.remainder_const( b ) ); } VImage & operator%=( VImage &a, const VImage b ) { return( a = a % b ); } VImage & operator%=( VImage &a, const double b ) { return( a = a % b ); } VImage & operator%=( VImage &a, const std::vector b ) { return( a = a % b ); } VImage operator<( const VImage a, const VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_LESS ) ); } VImage operator<( const double a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_MORE, to_vector( a ) ) ); } VImage operator<( const VImage a, const double b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESS, to_vector( b ) ) ); } VImage operator<( const std::vector a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_MORE, a ) ); } VImage operator<( const VImage a, const std::vector b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESS, b ) ); } VImage operator<=( const VImage a, const VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_LESSEQ ) ); } VImage operator<=( const double a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ, to_vector( a ) ) ); } VImage operator<=( const VImage a, const double b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ, to_vector( b ) ) ); } VImage operator<=( const std::vector a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ, a ) ); } VImage operator<=( const VImage a, const std::vector b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ, b ) ); } VImage operator>( const VImage a, const VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_MORE ) ); } VImage operator>( const double a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESS, to_vector( a ) ) ); } VImage operator>( const VImage a, const double b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_MORE, to_vector( b ) ) ); } VImage operator>( const std::vector a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESS, a ) ); } VImage operator>( const VImage a, const std::vector b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_MORE, b ) ); } VImage operator>=( const VImage a, const VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_MOREEQ ) ); } VImage operator>=( const double a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ, to_vector( a ) ) ); } VImage operator>=( const VImage a, const double b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ, to_vector( b ) ) ); } VImage operator>=( const std::vector a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ, a ) ); } VImage operator>=( const VImage a, const std::vector b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ, b ) ); } VImage operator==( const VImage a, const VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_EQUAL ) ); } VImage operator==( const double a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL, to_vector( a ) ) ); } VImage operator==( const VImage a, const double b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL, to_vector( b ) ) ); } VImage operator==( const std::vector a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL, a ) ); } VImage operator==( const VImage a, const std::vector b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL, b ) ); } VImage operator!=( const VImage a, const VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_NOTEQ ) ); } VImage operator!=( const double a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ, to_vector( a ) ) ); } VImage operator!=( const VImage a, const double b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ, to_vector( b ) ) ); } VImage operator!=( const std::vector a, const VImage b ) { return( b.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ, a ) ); } VImage operator!=( const VImage a, const std::vector b ) { return( a.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ, b ) ); } VImage operator&( const VImage a, const VImage b ) { return( a.boolean( b, VIPS_OPERATION_BOOLEAN_AND ) ); } VImage operator&( const double a, const VImage b ) { return( b.boolean_const( VIPS_OPERATION_BOOLEAN_AND, to_vector( a ) ) ); } VImage operator&( const VImage a, const double b ) { return( a.boolean_const( VIPS_OPERATION_BOOLEAN_AND, to_vector( b ) ) ); } VImage operator&( const std::vector a, const VImage b ) { return( b.boolean_const( VIPS_OPERATION_BOOLEAN_AND, a ) ); } VImage operator&( const VImage a, const std::vector b ) { return( a.boolean_const( VIPS_OPERATION_BOOLEAN_AND, b ) ); } VImage & operator&=( VImage &a, const VImage b ) { return( a = a & b ); } VImage & operator&=( VImage &a, const double b ) { return( a = a & b ); } VImage & operator&=( VImage &a, const std::vector b ) { return( a = a & b ); } VImage operator|( const VImage a, const VImage b ) { return( a.boolean( b, VIPS_OPERATION_BOOLEAN_OR ) ); } VImage operator|( const double a, const VImage b ) { return( b.boolean_const( VIPS_OPERATION_BOOLEAN_OR, to_vector( a ) ) ); } VImage operator|( const VImage a, const double b ) { return( a.boolean_const( VIPS_OPERATION_BOOLEAN_OR, to_vector( b ) ) ); } VImage operator|( const std::vector a, const VImage b ) { return( b.boolean_const( VIPS_OPERATION_BOOLEAN_OR, a ) ); } VImage operator|( const VImage a, const std::vector b ) { return( a.boolean_const( VIPS_OPERATION_BOOLEAN_OR, b ) ); } VImage & operator|=( VImage &a, const VImage b ) { return( a = a | b ); } VImage & operator|=( VImage &a, const double b ) { return( a = a | b ); } VImage & operator|=( VImage &a, const std::vector b ) { return( a = a | b ); } VImage operator^( const VImage a, const VImage b ) { return( a.boolean( b, VIPS_OPERATION_BOOLEAN_EOR ) ); } VImage operator^( const double a, const VImage b ) { return( b.boolean_const( VIPS_OPERATION_BOOLEAN_EOR, to_vector( a ) ) ); } VImage operator^( const VImage a, const double b ) { return( a.boolean_const( VIPS_OPERATION_BOOLEAN_EOR, to_vector( b ) ) ); } VImage operator^( const std::vector a, const VImage b ) { return( b.boolean_const( VIPS_OPERATION_BOOLEAN_EOR, a ) ); } VImage operator^( const VImage a, const std::vector b ) { return( a.boolean_const( VIPS_OPERATION_BOOLEAN_EOR, b ) ); } VImage & operator^=( VImage &a, const VImage b ) { return( a = a ^ b ); } VImage & operator^=( VImage &a, const double b ) { return( a = a ^ b ); } VImage & operator^=( VImage &a, const std::vector b ) { return( a = a ^ b ); } VImage operator<<( const VImage a, const VImage b ) { return( a.boolean( b, VIPS_OPERATION_BOOLEAN_LSHIFT ) ); } VImage operator<<( const VImage a, const double b ) { return( a.boolean_const( VIPS_OPERATION_BOOLEAN_LSHIFT, to_vector( b ) ) ); } VImage operator<<( const VImage a, const std::vector b ) { return( a.boolean_const( VIPS_OPERATION_BOOLEAN_LSHIFT, b ) ); } VImage & operator<<=( VImage &a, const VImage b ) { return( a = a << b ); } VImage & operator<<=( VImage &a, const double b ) { return( a = a << b ); } VImage & operator<<=( VImage &a, const std::vector b ) { return( a = a << b ); } VImage operator>>( const VImage a, const VImage b ) { return( a.boolean( b, VIPS_OPERATION_BOOLEAN_RSHIFT ) ); } VImage operator>>( const VImage a, const double b ) { return( a.boolean_const( VIPS_OPERATION_BOOLEAN_RSHIFT, to_vector( b ) ) ); } VImage operator>>( const VImage a, const std::vector b ) { return( a.boolean_const( VIPS_OPERATION_BOOLEAN_RSHIFT, b ) ); } VImage & operator>>=( VImage &a, const VImage b ) { return( a = a << b ); } VImage & operator>>=( VImage &a, const double b ) { return( a = a << b ); } VImage & operator>>=( VImage &a, const std::vector b ) { return( a = a << b ); } VIPS_NAMESPACE_END libvips-8.9.1/cplusplus/VInterpolate.cpp000066400000000000000000000033021361153320700203520ustar00rootroot00000000000000/* Object part of VInterpolate class */ /* Copyright (C) 1991-2001 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* #define VIPS_DEBUG #define VIPS_DEBUG_VERBOSE */ VIPS_NAMESPACE_START VInterpolate VInterpolate::new_from_name( const char *name, VOption *options ) { VipsInterpolate *interp; if( !(interp = vips_interpolate_new( name )) ) { delete options; throw VError(); } delete options; VInterpolate out( interp ); return( out ); } VOption * VOption::set( const char *name, const VInterpolate value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, VIPS_TYPE_INTERPOLATE ); g_value_set_object( &pair->value, value.get_interpolate() ); options.push_back( pair ); return( this ); } VIPS_NAMESPACE_END libvips-8.9.1/cplusplus/examples/000077500000000000000000000000001361153320700170525ustar00rootroot00000000000000libvips-8.9.1/cplusplus/examples/avg.cpp000066400000000000000000000007261361153320700203400ustar00rootroot00000000000000/* * compile with: * * g++ -g -Wall avg.cpp `pkg-config vips-cpp --cflags --libs` * */ #define DEBUG #include using namespace vips; int main( int argc, char **argv ) { if( vips_init( argv[0] ) ) vips_error_exit( NULL ); VImage in = VImage::new_from_file( argv[1], VImage::option()->set( "access", VIPS_ACCESS_SEQUENTIAL ) ); double avg; avg = in.avg(); printf( "avg = %g\n", avg ); vips_shutdown(); return( 0 ); } libvips-8.9.1/cplusplus/examples/buffer.cpp000066400000000000000000000016761361153320700210410ustar00rootroot00000000000000/* * compile with: * * g++ -g -Wall buffer.cpp `pkg-config vips-cpp --cflags --libs` * */ #define DEBUG #include using namespace vips; int main( int argc, char **argv ) { if( VIPS_INIT( argv[0] ) ) vips_error_exit( NULL ); // load an image from a file VImage im = VImage::new_from_file( argv[1], VImage::option()->set( "access", "sequential" ) ); printf( "loaded %d x %d pixel image from %s\n", im.width(), im.height(), argv[1] ); // write to a formatted memory buffer size_t size; void *buf; im.write_to_buffer( ".png", &buf, &size ); printf( "written to memory %p in png format, %zu bytes\n", buf, size ); // load from the formatted memory area im = VImage::new_from_buffer( buf, size, "" ); printf( "loaded from memory, %d x %d pixel image\n", im.width(), im.height() ); // write back to a file im.write_to_file( argv[2] ); printf( "written back to %s\n", argv[2] ); return( 0 ); } libvips-8.9.1/cplusplus/examples/embed.cpp000066400000000000000000000010131361153320700206250ustar00rootroot00000000000000/* * compile with: * * g++ -g -Wall embed.cpp `pkg-config vips-cpp --cflags --libs` * */ #define DEBUG #include using namespace vips; int main( int argc, char **argv ) { if( vips_init( argv[0] ) ) vips_error_exit( NULL ); VImage in = VImage::new_from_file( argv[1], VImage::option()->set( "access", "sequential" ) ); VImage out = in.embed( 10, 10, 1000, 1000, VImage::option()->set( "extend", "copy" ) ); out.write_to_file( argv[2] ); vips_shutdown(); return( 0 ); } libvips-8.9.1/cplusplus/examples/invert.cpp000066400000000000000000000012351361153320700210660ustar00rootroot00000000000000/* * compile with: * * g++ -g -Wall invert.cpp `pkg-config vips-cpp --cflags --libs` * */ #define DEBUG #include using namespace vips; int main( int argc, char **argv ) { if( vips_init( argv[0] ) ) vips_error_exit( NULL ); printf( "these should match if VImage is compile-time-only\n" ); printf( "sizeof( VipsImage *) = %zd\n", sizeof( VipsImage *) ); printf( "sizeof( VImage ) = %zd\n", sizeof( VImage ) ); VImage in = VImage::new_from_file( argv[1], VImage::option()->set( "access", VIPS_ACCESS_SEQUENTIAL ) ); VImage out; out = in.invert(); out.write_to_file( argv[2] ); vips_shutdown(); return( 0 ); } libvips-8.9.1/cplusplus/examples/profile.cpp000066400000000000000000000007221361153320700212170ustar00rootroot00000000000000/* * compile with: * * g++ -g -Wall profile.cpp `pkg-config vips-cpp --cflags --libs` * */ #define DEBUG #include using namespace vips; int main( int argc, char **argv ) { if( vips_init( argv[0] ) ) vips_error_exit( NULL ); VImage in = VImage::new_from_file( argv[1] ); VImage rows; VImage cols = in.profile( &rows ); rows.write_to_file( argv[2] ); cols.write_to_file( argv[3] ); vips_shutdown(); return( 0 ); } libvips-8.9.1/cplusplus/examples/resize.cpp000066400000000000000000000010021361153320700210500ustar00rootroot00000000000000/* compile with: * * g++ -g -Wall resize.cpp `pkg-config vips-cpp --cflags --libs` */ #include using namespace vips; int main( int argc, char **argv ) { if( VIPS_INIT( argv[0] ) ) vips_error_exit( NULL ); VImage in = VImage::new_from_file( argv[1], VImage::option() ->set( "access", "sequential" ) ); VImage out = in.resize( 0.2, VImage::option() ->set( "kernel", "cubic" ) ->set( "vscale", 0.2 ) ); out.write_to_file( argv[2] ); vips_shutdown(); return( 0 ); } libvips-8.9.1/cplusplus/examples/test.cpp000066400000000000000000000200611361153320700205340ustar00rootroot00000000000000/* Test the C++ API. * * This isn't a full test suite, look in the Python area for that. This is * just supposed to check that the C++ binding is working. * * compile with: * * g++ -g -Wall test.cpp `pkg-config vips-cpp --cflags --libs` * * run with: * * ./a.out ~/pics/k2.jpg ~/pics/shark.jpg --vips-leak * valgrind --leak-check=yes ./a.out ~/pics/k2.jpg ~/pics/shark.jpg * rm x.tif * */ /* #define VIPS_DEBUG #define VIPS_DEBUG_VERBOSE */ #include #include using namespace vips; bool equal_vector( std::vector a, std::vector b ) { for( unsigned int i = 0; i < a.size(); i++ ) if( fabs( a[i] - b[i] ) > 0.001 ) { printf( "vectors differ at %u: should be [", i ); for( unsigned int i = 0; i < a.size(); i++ ) { if( i > 0 ) printf( ", " ); printf( "%g", a[i] ); } printf( "], is [" ); for( unsigned int i = 0; i < a.size(); i++ ) { if( i > 0 ) printf( ", " ); printf( "%g", a[i] ); } printf( "]\n" ); return( false ); } return( true ); } bool equal_double( double a, double b ) { if( fabs( a - b ) > 0.001 ) { printf( "doubles differ: should be %g, is %g\n", a, b ); return( false ); } return( true ); } /* We can't do this with a template, I think we'd need partially-parameterised * template, which is C++11 only. */ /* Only test a few points and only test uchar: we are just testing the C++ * overloads, we rely on the python test suite for testing the underlying * vips operators. */ #define TEST_BINARY( OPERATOR ) \ void \ test_binary_##OPERATOR( VImage left, VImage right ) \ { \ for( int x = 10; x < 30; x += 10 ) { \ std::vector p_left = left.getpoint( x, x ); \ std::vector p_right = right.getpoint( x, x ); \ std::vector p_result = \ OPERATOR, \ std::vector, \ std::vector >(p_left, p_right ); \ \ VImage im_result; \ std::vector p_im_result; \ \ /* test: image = image OP image \ */ \ im_result = OPERATOR( left, right ); \ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_vector( p_result, p_im_result ) ) { \ printf( #OPERATOR \ "(VImage, VImage) failed at (%d, %d)\n", \ x, x ); \ abort(); \ } \ \ /* test: image = image OP vec \ */ \ im_result = \ OPERATOR >( left, p_right );\ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_vector( p_result, p_im_result ) ) { \ printf( #OPERATOR \ "(VImage, vector) failed at (%d, %d)\n", \ x, x ); \ abort(); \ } \ \ /* test: image = vec OP image \ */ \ im_result = \ OPERATOR, \ VImage>( p_left, right ); \ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_vector( p_result, p_im_result ) ) { \ printf( #OPERATOR \ "(vector, VImage) failed at (%d, %d)\n", \ x, x ); \ abort(); \ } \ \ /* test: image = image OP double \ */ \ for( unsigned int i = 0; i < p_right.size(); i++ ) { \ im_result = \ OPERATOR( left, p_right[i] ); \ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_double( p_result[i], p_im_result[i] ) ) { \ printf( #OPERATOR \ "(VImage, double) failed at " \ "(%d, %d)\n", \ x, x ); \ abort(); \ } \ } \ \ /* test: image = double OP image \ */ \ for( unsigned int i = 0; i < p_left.size(); i++ ) { \ im_result = \ OPERATOR( p_left[i], right ); \ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_double( p_result[i], p_im_result[i] ) ) { \ printf( #OPERATOR \ "(double, VImage) failed at " \ "(%d, %d)\n", \ x, x ); \ abort(); \ } \ } \ } \ } // eg. double = double + double // or image = double + image template A test_add( B left, C right ) { return( left + right ); } template std::vector operator+(std::vector &v1, const std::vector &v2) { std::vector result( v1.size() ); for( unsigned int i = 0; i < v1.size(); i++ ) result[i] = v1[i] + v2[i]; return( result ); } TEST_BINARY( test_add ); template A test_subtract( B left, C right ) { return( left - right ); } template std::vector operator-(std::vector &v1, const std::vector &v2) { std::vector result( v1.size() ); for( unsigned int i = 0; i < v1.size(); i++ ) result[i] = v1[i] - v2[i]; return( result ); } TEST_BINARY( test_subtract ); template A test_multiply( B left, C right ) { return( left * right ); } template std::vector operator*(std::vector &v1, const std::vector &v2) { std::vector result( v1.size() ); for( unsigned int i = 0; i < v1.size(); i++ ) result[i] = v1[i] * v2[i]; return( result ); } TEST_BINARY( test_multiply ); template A test_divide( B left, C right ) { return( left / right ); } template std::vector operator/(std::vector &v1, const std::vector &v2) { std::vector result( v1.size() ); for( unsigned int i = 0; i < v1.size(); i++ ) result[i] = v1[i] / v2[i]; return( result ); } TEST_BINARY( test_divide ); int main( int argc, char **argv ) { if( VIPS_INIT( argv[0] ) ) vips_error_exit( NULL ); VImage left = VImage::new_from_file( argv[1] ); VImage right = VImage::new_from_file( argv[2] ); { printf( "testing constant args ...\n" ); double a[] = { 1.0, 2.0, 3.0 }; double b[] = { 4.0, 5.0, 6.0 }; std::vector avec( a, a + VIPS_NUMBER( a ) ); std::vector bvec( b, b + VIPS_NUMBER( b ) ); VImage out = left.linear( avec, bvec ); out.write_to_file( "x.tif" ); } { printf( "testing operator overloads ...\n" ); test_binary_test_add( left, right ); test_binary_test_subtract( left, right ); test_binary_test_multiply( left, right ); test_binary_test_divide( left, right ); VImage band_one = left[1]; std::vector point = left(0, 0); } { // write to a formatted memory buffer printf( "testing formatted memory write ...\n" ); size_t size; void *buf; left.write_to_buffer( ".png", &buf, &size ); printf( "written to memory %p in png format, %zu bytes\n", buf, size ); // load from the formatted memory area VImage im = VImage::new_from_buffer( buf, size, "" ); printf( "loaded from memory, %d x %d pixel image\n", im.width(), im.height() ); // write back to a file im.write_to_file( "x.tif" ); printf( "written back to x.tif\n" ); g_free( buf ); } { // write to a vanilla memory buffer printf( "testing memory array write ...\n" ); size_t size; void *buf; buf = left.write_to_memory( &size ); printf( "written to memory %p as an array, %zu bytes\n", buf, size ); // load from the memory array VImage im = VImage::new_from_memory( buf, size, left.width(), left.height(), left.bands(), left.format() ); printf( "loaded from memory array, %d x %d pixel image\n", im.width(), im.height() ); // write back to a file im.write_to_file( "x.tif" ); printf( "written back to x.tif\n" ); g_free( buf ); } { printf( "testing double return from operation ...\n" ); double avg = left.avg(); printf( "left.avg() = %g\n", avg ); } { printf( "testing optional enum args ...\n" ); VImage out = left.embed( 10, 10, 1000, 1000, VImage::option()->set( "extend", "copy" ) ); out.write_to_file( "x.tif" ); } { printf( "testing multiple image return ...\n" ); VImage rows; VImage cols = left.profile( &rows ); rows.write_to_file( "x.tif" ); cols.write_to_file( "x.tif" ); } { printf( "testing interpolators ...\n" ); VInterpolate interp = VInterpolate::new_from_name( "nohalo" ); VImage out; out = left.resize( 0.2, VImage::option()->set( "interpolate", interp ) ); out.write_to_file( "x.tif" ); } { printf( "testing new_from_image() ...\n" ); VImage out = left.new_from_image( 128 ); out.write_to_file( "x.tif" ); } printf( "all tests passed\n" ); return( 0 ); } libvips-8.9.1/cplusplus/examples/test_overloads.cpp000066400000000000000000000215041361153320700226150ustar00rootroot00000000000000/* Test +/-* overloads with every combination of vector, image and double. * This isn't a full test suite, look in the Python area for that. * * compile with: * * g++ -g -Wall test_overloads.cpp `pkg-config vips-cpp --cflags --libs` * * run with: * * valgrind --leak-check=yes ./a.out ~/pics/k2.jpg ~/pics/shark.jpg * */ /* #define VIPS_DEBUG #define VIPS_DEBUG_VERBOSE */ #include #include using namespace vips; bool equal_vector( std::vector a, std::vector b ) { for( unsigned int i = 0; i < a.size(); i++ ) if( fabs( a[i] - b[i] ) > 0.001 ) { printf( "vectors differ at %u: should be [", i ); for( unsigned int i = 0; i < a.size(); i++ ) { if( i > 0 ) printf( ", " ); printf( "%g", a[i] ); } printf( "], is [" ); for( unsigned int i = 0; i < a.size(); i++ ) { if( i > 0 ) printf( ", " ); printf( "%g", a[i] ); } printf( "]\n" ); return( false ); } return( true ); } bool equal_double( double a, double b ) { if( fabs( a - b ) > 0.001 ) { printf( "doubles differ: should be %g, is %g\n", a, b ); return( false ); } return( true ); } /* We can't do this with a template, I think we'd need partially-parameterised * template, which is C++11 only. */ /* Only test a few points and only test uchar: we are just testing the C++ * overloads, we rely on the python test suite for testing the underlying * vips operators. */ #define TEST_BINARY( OPERATOR ) \ void \ test_binary_##OPERATOR( VImage left, VImage right ) \ { \ for( int x = 10; x < 30; x += 10 ) { \ std::vector p_left = left.getpoint( x, x ); \ std::vector p_right = right.getpoint( x, x ); \ std::vector p_result = \ OPERATOR, \ std::vector, \ std::vector >(p_left, p_right ); \ \ VImage im_result; \ std::vector p_im_result; \ \ /* test: image = image OP image \ */ \ im_result = OPERATOR( left, right ); \ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_vector( p_result, p_im_result ) ) { \ printf( #OPERATOR \ "(VImage, VImage) failed at (%d, %d)\n", \ x, x ); \ abort(); \ } \ \ /* test: image = image OP vec \ */ \ im_result = \ OPERATOR >( left, p_right );\ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_vector( p_result, p_im_result ) ) { \ printf( #OPERATOR \ "(VImage, vector) failed at (%d, %d)\n", \ x, x ); \ abort(); \ } \ \ /* test: image = vec OP image \ */ \ im_result = \ OPERATOR, \ VImage>( p_left, right ); \ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_vector( p_result, p_im_result ) ) { \ printf( #OPERATOR \ "(vector, VImage) failed at (%d, %d)\n", \ x, x ); \ abort(); \ } \ \ /* test: image = image OP double \ */ \ for( unsigned int i = 0; i < p_right.size(); i++ ) { \ im_result = \ OPERATOR( left, p_right[i] ); \ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_double( p_result[i], p_im_result[i] ) ) { \ printf( #OPERATOR \ "(VImage, double) failed at " \ "(%d, %d)\n", \ x, x ); \ abort(); \ } \ } \ \ /* test: image = double OP image \ */ \ for( unsigned int i = 0; i < p_left.size(); i++ ) { \ im_result = \ OPERATOR( p_left[i], right ); \ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_double( p_result[i], p_im_result[i] ) ) { \ printf( #OPERATOR \ "(double, VImage) failed at " \ "(%d, %d)\n", \ x, x ); \ abort(); \ } \ } \ } \ } // eg. double = double + double // or image = double + image template A test_add( B left, C right ) { return( left + right ); } template std::vector operator+( std::vector &v1, const std::vector &v2 ) { std::vector result( v1.size() ); for( unsigned int i = 0; i < v1.size(); i++ ) result[i] = v1[i] + v2[i]; return( result ); } TEST_BINARY( test_add ); template A test_subtract( B left, C right ) { return( left - right ); } template std::vector operator-( std::vector &v1, const std::vector &v2 ) { std::vector result( v1.size() ); for( unsigned int i = 0; i < v1.size(); i++ ) result[i] = v1[i] - v2[i]; return( result ); } TEST_BINARY( test_subtract ); template A test_multiply( B left, C right ) { return( left * right ); } template std::vector operator*( std::vector &v1, const std::vector &v2 ) { std::vector result( v1.size() ); for( unsigned int i = 0; i < v1.size(); i++ ) result[i] = v1[i] * v2[i]; return( result ); } TEST_BINARY( test_multiply ); template A test_divide( B left, C right ) { return( left / right ); } template std::vector operator/( std::vector &v1, const std::vector &v2 ) { std::vector result( v1.size() ); for( unsigned int i = 0; i < v1.size(); i++ ) result[i] = v1[i] / v2[i]; return( result ); } TEST_BINARY( test_divide ); /* We can't test remainder easily, vips does not support constant % image. */ /* We'd need an int version to test the bool operators, C++ does not like * double & double. */ /* Only test a few points and only test uchar: we are just testing the C++ * overloads, we rely on the python test suite for testing the underlying * vips operators. */ #define TEST_ASSIGNMENT( OPERATOR ) \ void \ test_assignment_##OPERATOR( VImage left, VImage right ) \ { \ for( int x = 10; x < 30; x += 10 ) { \ std::vector p_left = left.getpoint( x, x ); \ std::vector p_right = right.getpoint( x, x ); \ std::vector p_result = p_left; \ OPERATOR, \ std::vector >( p_result, p_right ); \ \ /* test: image OP= image \ */ \ VImage im_result = left; \ OPERATOR( im_result, right ); \ std::vector p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_vector( p_result, p_im_result ) ) { \ printf( #OPERATOR \ "(VImage, VImage) failed at (%d, %d)\n", \ x, x ); \ abort(); \ } \ \ /* test: image OP= vec \ */ \ im_result = left; \ OPERATOR >( im_result, p_right ); \ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_vector( p_result, p_im_result ) ) { \ printf( #OPERATOR \ "(VImage, vector) failed at (%d, %d)\n", \ x, x ); \ abort(); \ } \ \ \ /* test: image OP= double \ */ \ for( unsigned int i = 0; i < p_left.size(); i++ ) { \ im_result = left; \ OPERATOR( im_result, p_right[i] ); \ p_im_result = im_result.getpoint( x, x ); \ \ if( !equal_double( p_result[i], p_im_result[i] ) ) { \ printf( #OPERATOR \ "(VImage, double) failed at " \ "(%d, %d)\n", \ x, x ); \ abort(); \ } \ } \ } \ } template std::vector & operator+=( std::vector & a, std::vector b ) { return( a = a + b ); } template void test_plusequals( A &left, B right ) { left += right; } TEST_ASSIGNMENT( test_plusequals ); template std::vector & operator-=( std::vector & a, std::vector b ) { return( a = a - b ); } template void test_minusequals( A &left, B right ) { left -= right; } TEST_ASSIGNMENT( test_minusequals ); template std::vector & operator*=( std::vector & a, std::vector b ) { return( a = a * b ); } template void test_timesequals( A &left, B right ) { left *= right; } TEST_ASSIGNMENT( test_timesequals ); template std::vector & operator/=( std::vector & a, std::vector b ) { return( a = a / b ); } template void test_divideequals( A &left, B right ) { left /= right; } TEST_ASSIGNMENT( test_divideequals ); /* We can't test remainder easily, vips does not support constant % image. */ /* We'd need an int version to test the bool operators. */ int main( int argc, char **argv ) { if( VIPS_INIT( argv[0] ) ) vips_error_exit( NULL ); VImage left = VImage::new_from_file( argv[1] ); VImage right = VImage::new_from_file( argv[2] ); VImage band_one = left[1]; std::vector point = left(0, 0); test_binary_test_add( left, right ); test_binary_test_subtract( left, right ); test_binary_test_multiply( left, right ); test_binary_test_divide( left, right ); test_assignment_test_plusequals( left, right ); test_assignment_test_minusequals( left, right ); test_assignment_test_timesequals( left, right ); test_assignment_test_divideequals( left, right ); vips_shutdown(); return( 0 ); } libvips-8.9.1/cplusplus/gen-operators.py000077500000000000000000000162401361153320700204010ustar00rootroot00000000000000#!/usr/bin/env python # This file generates the member definitions and declarations for all vips # operators. # this needs pyvips # # pip install --user pyvips # Sample member declaration: # VImage invert(VOption *options = 0) const; # Sample member definition: # VImage VImage::invert( VOption *options ) const # { # VImage out; # # call( "invert", # (options ? options : VImage::option())-> # set( "in", *this )-> # set( "out", &out ) ); # # return( out ); # } import argparse from pyvips import Introspect, Operation, GValue, Error, \ ffi, gobject_lib, type_map, type_from_name, nickname_find, type_name # TODO Move to pyvips.GValue source_type = type_from_name('VipsSource') target_type = type_from_name('VipsTarget') # turn a GType into a C++ type gtype_to_cpp = { GValue.gbool_type: 'bool', GValue.gint_type: 'int', GValue.gdouble_type: 'double', GValue.gstr_type: 'const char *', GValue.refstr_type: 'char *', GValue.gflags_type: 'int', GValue.image_type: 'VImage', source_type: 'VSource', target_type: 'VTarget', GValue.array_int_type: 'std::vector', GValue.array_double_type: 'std::vector', GValue.array_image_type: 'std::vector', GValue.blob_type: 'VipsBlob *' } cplusplus_suffixes = ('*', '&') cplusplus_keywords = ('case', 'switch') # values for VipsArgumentFlags _REQUIRED = 1 _INPUT = 16 _OUTPUT = 32 _DEPRECATED = 64 _MODIFY = 128 # for VipsOperationFlags _OPERATION_DEPRECATED = 8 def get_cpp_type(gtype): """Map a gtype to C++ type name we use to represent it. """ if gtype in gtype_to_cpp: return gtype_to_cpp[gtype] fundamental = gobject_lib.g_type_fundamental(gtype) # enum params use the C name as their name if fundamental == GValue.genum_type: return type_name(gtype) if fundamental in gtype_to_cpp: return gtype_to_cpp[fundamental] return '' # swap any '-' for '_' def cppize(name): return name.replace('-', '_') def generate_operation(operation_name, declaration_only=False): intro = Introspect.get(operation_name) required_output = [name for name in intro.required_output if name != intro.member_x] has_output = len(required_output) >= 1 # Add a C++ style comment block with some additional markings (@param, # @return) if declaration_only: result = '\n/**\n * {}.'.format(intro.description.capitalize()) for name in intro.method_args: result += '\n * @param {} {}.' \ .format(cppize(name), intro.details[name]['blurb']) if has_output: # skip the first element for name in required_output[1:]: result += '\n * @param {} {}.' \ .format(cppize(name), intro.details[name]['blurb']) result += '\n * @param options Optional options.' if has_output: result += '\n * @return {}.' \ .format(intro.details[required_output[0]]['blurb']) result += '\n */\n' else: result = '\n' if intro.member_x is None and declaration_only: result += 'static ' if has_output: # the first output arg will be used as the result cpp_type = get_cpp_type(intro.details[required_output[0]]['type']) spacing = '' if cpp_type.endswith(cplusplus_suffixes) else ' ' result += '{0}{1}'.format(cpp_type, spacing) else: result += 'void ' if not declaration_only: result += 'VImage::' cplusplus_operation = operation_name if operation_name in cplusplus_keywords: cplusplus_operation += '_image' result += '{0}( '.format(cplusplus_operation) for name in intro.method_args: details = intro.details[name] gtype = details['type'] cpp_type = get_cpp_type(gtype) spacing = '' if cpp_type.endswith(cplusplus_suffixes) else ' ' result += '{0}{1}{2}, '.format(cpp_type, spacing, cppize(name)) # output params are passed by reference if has_output: # skip the first element for name in required_output[1:]: details = intro.details[name] gtype = details['type'] cpp_type = get_cpp_type(gtype) spacing = '' if cpp_type.endswith(cplusplus_suffixes) else ' ' result += '{0}{1}*{2}, '.format(cpp_type, spacing, cppize(name)) result += 'VOption *options {0})'.format('= 0 ' if declaration_only else '') # if no 'this' available, it's a class method and they are all const if intro.member_x is not None: result += ' const' if declaration_only: result += ';' return result result += '\n{\n' if has_output: # the first output arg will be used as the result name = required_output[0] cpp_type = get_cpp_type(intro.details[name]['type']) spacing = '' if cpp_type.endswith(cplusplus_suffixes) else ' ' result += ' {0}{1}{2};\n\n'.format(cpp_type, spacing, cppize(name)) result += ' call( "{0}",\n'.format(operation_name) result += ' (options ? options : VImage::option())' if intro.member_x is not None: result += '->\n' result += ' set( "{0}", *this )'.format(intro.member_x) all_required = intro.method_args if has_output: # first element needs to be passed by reference arg = cppize(required_output[0]) result += '->\n' result += ' set( "{0}", &{1} )' \ .format(required_output[0], arg) # append the remaining list all_required += required_output[1:] for name in all_required: arg = cppize(name) result += '->\n' result += ' set( "{0}", {1} )'.format(name, arg) result += ' );\n' if has_output: result += '\n' result += ' return( {0} );\n'.format(required_output[0]) result += '}' return result def generate_operators(declarations_only=False): all_nicknames = [] def add_nickname(gtype, a, b): nickname = nickname_find(gtype) try: # can fail for abstract types intro = Introspect.get(nickname) # we are only interested in non-deprecated operations if (intro.flags & _OPERATION_DEPRECATED) == 0: all_nicknames.append(nickname) except Error: pass type_map(gtype, add_nickname) return ffi.NULL type_map(type_from_name('VipsOperation'), add_nickname) # add 'missing' synonyms by hand all_nicknames.append('crop') # make list unique and sort all_nicknames = list(set(all_nicknames)) all_nicknames.sort() for nickname in all_nicknames: print(generate_operation(nickname, declarations_only)) parser = argparse.ArgumentParser(description='C++ binding generator') parser.add_argument('--gen', '-g', default='cpp', choices=['h', 'cpp'], help='File to generate: h (headers) or cpp ' + \ '(implementations) (default: %(default)s)') if __name__ == '__main__': args = parser.parse_args() generate_operators(args.gen == 'h') libvips-8.9.1/cplusplus/include/000077500000000000000000000000001361153320700166575ustar00rootroot00000000000000libvips-8.9.1/cplusplus/include/Makefile.am000066400000000000000000000000201361153320700207030ustar00rootroot00000000000000 SUBDIRS = vips libvips-8.9.1/cplusplus/include/vips/000077500000000000000000000000001361153320700176405ustar00rootroot00000000000000libvips-8.9.1/cplusplus/include/vips/Makefile.am000066400000000000000000000006151361153320700216760ustar00rootroot00000000000000pkginclude_HEADERS = \ VError8.h \ VImage8.h \ VInterpolate8.h \ VConnection8.h \ vips8 \ vips-operators.h vips-operators.h: echo "// headers for vips operations" > vips-operators.h; \ echo -n "// " >> vips-operators.h; \ date >> vips-operators.h; \ echo "// this file is generated automatically, do not edit!" >> vips-operators.h; \ ./../../gen-operators.py -g h >> vips-operators.h libvips-8.9.1/cplusplus/include/vips/VConnection8.h000066400000000000000000000036561361153320700223400ustar00rootroot00000000000000// VIPS connection wrapper /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VCONNECTION_H #define VIPS_VCONNECTION_H #include VIPS_NAMESPACE_START class VSource : VObject { public: VSource( VipsSource *input, VSteal steal = STEAL ) : VObject( (VipsObject *) input, steal ) { } static VSource new_from_descriptor( int descriptor ); static VSource new_from_file( const char *filename ); static VSource new_from_blob( VipsBlob *blob ); static VSource new_from_memory( const void *data, size_t size ); static VSource new_from_options( const char *options ); VipsSource * get_source() const { return( (VipsSource *) VObject::get_object() ); } }; class VTarget : VObject { public: VTarget( VipsTarget *output, VSteal steal = STEAL ) : VObject( (VipsObject *) output, steal ) { } static VTarget new_to_descriptor( int descriptor ); static VTarget new_to_file( const char *filename ); static VTarget new_to_memory(); VipsTarget * get_target() const { return( (VipsTarget *) VObject::get_object() ); } }; VIPS_NAMESPACE_END #endif /*VIPS_VCONNECTION_H*/ libvips-8.9.1/cplusplus/include/vips/VError8.h000066400000000000000000000026501361153320700213230ustar00rootroot00000000000000// Header for error type /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VERROR_H #define VIPS_VERROR_H #include #include #include #include VIPS_NAMESPACE_START class VIPS_CPLUSPLUS_API VError : public std::exception { std::string _what; public: VError( const std::string &what ) : _what( what ) {} VError() : _what( vips_error_buffer() ) {} virtual ~VError() throw() {} // Extract string virtual const char *what() const throw() { return _what.c_str(); } void ostream_print( std::ostream & ) const; }; VIPS_NAMESPACE_END #endif /*VIPS_VERROR_H*/ libvips-8.9.1/cplusplus/include/vips/VImage8.h000066400000000000000000000660071361153320700212620ustar00rootroot00000000000000// VIPS image wrapper /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VIMAGE_H #define VIPS_VIMAGE_H #include #include #include #include #include VIPS_NAMESPACE_START /* Small utility things. */ VIPS_CPLUSPLUS_API std::vector to_vectorv( int n, ... ); VIPS_CPLUSPLUS_API std::vector to_vector( double value ); VIPS_CPLUSPLUS_API std::vector to_vector( int n, double array[] ); VIPS_CPLUSPLUS_API std::vector negate( std::vector value ); VIPS_CPLUSPLUS_API std::vector invert( std::vector value ); enum VSteal { NOSTEAL = 0, STEAL = 1 }; /* A smart VipsObject pointer class ... use g_object_ref()/_unref() for * lifetime management. */ class VObject { private: // can be NULL, see eg. VObject() VipsObject *vobject; public: VObject( VipsObject *new_vobject, VSteal steal = STEAL ) : vobject( new_vobject ) { // we allow NULL init, eg. "VImage a;" g_assert( !new_vobject || VIPS_IS_OBJECT( new_vobject ) ); #ifdef VIPS_DEBUG_VERBOSE printf( "VObject constructor, obj = %p, steal = %d\n", new_vobject, steal ); if( new_vobject ) { printf( " obj " ); vips_object_print_name( VIPS_OBJECT( new_vobject ) ); printf( "\n" ); } #endif /*VIPS_DEBUG_VERBOSE*/ if( !steal ) { #ifdef VIPS_DEBUG_VERBOSE printf( " reffing object\n" ); #endif /*VIPS_DEBUG_VERBOSE*/ g_object_ref( vobject ); } } VObject() : vobject( 0 ) { } // copy constructor VObject( const VObject &a ) : vobject( a.vobject ) { g_assert( VIPS_IS_OBJECT( a.vobject ) ); #ifdef VIPS_DEBUG_VERBOSE printf( "VObject copy constructor, obj = %p\n", vobject ); printf( " reffing object\n" ); #endif /*VIPS_DEBUG_VERBOSE*/ g_object_ref( vobject ); } // assignment ... we must delete the old ref // old can be NULL, new must not be NULL VObject &operator=( const VObject &a ) { VipsObject *old_vobject; #ifdef VIPS_DEBUG_VERBOSE printf( "VObject assignment\n" ); printf( " reffing %p\n", a.vobject ); printf( " unreffing %p\n", vobject ); #endif /*VIPS_DEBUG_VERBOSE*/ g_assert( !vobject || VIPS_IS_OBJECT( vobject ) ); g_assert( a.vobject && VIPS_IS_OBJECT( a.vobject ) ); // delete the old ref at the end ... otherwise "a = a;" could // unref before reffing again old_vobject = vobject; vobject = a.vobject; g_object_ref( vobject ); if( old_vobject ) g_object_unref( old_vobject ); return( *this ); } // this mustn't be virtual: we want this class to only be a pointer, // no vtable allowed ~VObject() { #ifdef VIPS_DEBUG_VERBOSE printf( "VObject destructor\n" ); printf( " unreffing %p\n", vobject ); #endif /*VIPS_DEBUG_VERBOSE*/ g_assert( !vobject || VIPS_IS_OBJECT( vobject ) ); if( vobject ) g_object_unref( vobject ); } VipsObject *get_object() const { g_assert( !vobject || VIPS_IS_OBJECT( vobject ) ); return( vobject ); } bool is_null() const { return vobject == 0; } }; class VIPS_CPLUSPLUS_API VImage; class VIPS_CPLUSPLUS_API VInterpolate; class VIPS_CPLUSPLUS_API VSource; class VIPS_CPLUSPLUS_API VTarget; class VIPS_CPLUSPLUS_API VOption; class VOption { private: struct Pair { const char *name; // the thing we pass to and from our caller GValue value; // an input or output parameter ... we guess the direction // from the arg to set() bool input; // the pointer we write output values to union { bool *vbool; int *vint; double *vdouble; VImage *vimage; std::vector *vvector; VipsBlob **vblob; }; Pair( const char *name ) : name( name ), input( false ), vimage( 0 ) { // argh = {0} won't work wil vanilla C++ memset( &value, 0, sizeof( GValue ) ); } ~Pair() { g_value_unset( &value ); } }; std::list options; public: VOption() { } virtual ~VOption(); VOption *set( const char *name, bool value ); VOption *set( const char *name, int value ); VOption *set( const char *name, double value ); VOption *set( const char *name, const char *value ); VOption *set( const char *name, const VImage value ); VOption *set( const char *name, const VInterpolate value ); VOption *set( const char *name, const VSource value ); VOption *set( const char *name, const VTarget value ); VOption *set( const char *name, std::vector value ); VOption *set( const char *name, std::vector value ); VOption *set( const char *name, std::vector value ); VOption *set( const char *name, VipsBlob *value ); VOption *set( const char *name, bool *value ); VOption *set( const char *name, int *value ); VOption *set( const char *name, double *value ); VOption *set( const char *name, VImage *value ); VOption *set( const char *name, std::vector *value ); VOption *set( const char *name, VipsBlob **blob ); void set_operation( VipsOperation *operation ); void get_operation( VipsOperation *operation ); }; class VImage : VObject { public: using VObject::is_null; VImage( VipsImage *image, VSteal steal = STEAL ) : VObject( (VipsObject *) image, steal ) { } // an empty (NULL) VImage, eg. "VImage a;" VImage() : VObject( 0 ) { } VipsImage * get_image() const { return( (VipsImage *) VObject::get_object() ); } int width() const { return( vips_image_get_width( get_image() ) ); } int height() const { return( vips_image_get_height( get_image() ) ); } int bands() const { return( vips_image_get_bands( get_image() ) ); } VipsBandFormat format() const { return( vips_image_get_format( get_image() ) ); } VipsCoding coding() const { return( vips_image_get_coding( get_image() ) ); } VipsInterpretation interpretation() const { return( vips_image_get_interpretation( get_image() ) ); } VipsInterpretation guess_interpretation() const { return( vips_image_guess_interpretation( get_image() ) ); } double xres() const { return( vips_image_get_xres( get_image() ) ); } double yres() const { return( vips_image_get_yres( get_image() ) ); } int xoffset() const { return( vips_image_get_xoffset( get_image() ) ); } int yoffset() const { return( vips_image_get_yoffset( get_image() ) ); } bool has_alpha() const { return( vips_image_hasalpha( get_image() ) ); } const char * filename() const { return( vips_image_get_filename( get_image() ) ); } const void * data() const { return( vips_image_get_data( get_image() ) ); } void set( const char *field, int value ) { vips_image_set_int( this->get_image(), field, value ); } void set( const char *field, int *value, int n ) { vips_image_set_array_int( this->get_image(), field, value, n ); } void set( const char *field, std::vector value ) { vips_image_set_array_int( this->get_image(), field, &value[0], static_cast( value.size() ) ); } void set( const char *field, double value ) { vips_image_set_double( this->get_image(), field, value ); } void set( const char *field, const char *value ) { vips_image_set_string( this->get_image(), field, value ); } void set( const char *field, VipsCallbackFn free_fn, void *data, size_t length ) { vips_image_set_blob( this->get_image(), field, free_fn, data, length ); } GType get_typeof( const char *field ) const { return( vips_image_get_typeof( this->get_image(), field ) ); } int get_int( const char *field ) const { int value; if( vips_image_get_int( this->get_image(), field, &value ) ) throw( VError() ); return( value ); } void get_array_int( const char *field, int **out, int *n ) const { if( vips_image_get_array_int( this->get_image(), field, out, n ) ) throw( VError() ); } std::vector get_array_int( const char *field ) const { int length; int *array; if( vips_image_get_array_int( this->get_image(), field, &array, &length ) ) throw( VError() ); std::vector vector( array, array + length ); return( vector ); } double get_double( const char *field ) const { double value; if( vips_image_get_double( this->get_image(), field, &value ) ) throw( VError() ); return( value ); } const char * get_string( const char *field ) const { const char *value; if( vips_image_get_string( this->get_image(), field, &value ) ) throw( VError() ); return( value ); } const void * get_blob( const char *field, size_t *length ) const { const void *value; if( vips_image_get_blob( this->get_image(), field, &value, length ) ) throw( VError() ); return( value ); } bool remove( const char *name ) const { return( vips_image_remove( get_image(), name ) ); } static VOption * option() { return( new VOption() ); } static void call_option_string( const char *operation_name, const char *option_string, VOption *options = 0 ); static void call( const char *operation_name, VOption *options = 0 ); static VImage new_memory() { return( VImage( vips_image_new_memory() ) ); } static VImage new_temp_file( const char *file_format = ".v" ) { VipsImage *image; if( !(image = vips_image_new_temp_file( file_format )) ) throw( VError() ); return( VImage( image ) ); } static VImage new_from_file( const char *name, VOption *options = 0 ); static VImage new_from_memory( void *data, size_t size, int width, int height, int bands, VipsBandFormat format ) { VipsImage *image; if( !(image = vips_image_new_from_memory( data, size, width, height, bands, format )) ) throw( VError() ); return( VImage( image ) ); } static VImage new_from_buffer( const void *buf, size_t len, const char *option_string, VOption *options = 0 ); static VImage new_from_buffer( const std::string &buf, const char *option_string, VOption *options = 0 ); static VImage new_from_source( VSource source, const char *option_string, VOption *options = 0 ); static VImage new_matrix( int width, int height ); static VImage new_matrix( int width, int height, double *array, int size ) { VipsImage *image; if( !(image = vips_image_new_matrix_from_array( width, height, array, size )) ) throw( VError() ); return( VImage( image ) ); } static VImage new_matrixv( int width, int height, ... ); VImage new_from_image( std::vector pixel ) const { VipsImage *image; if( !(image = vips_image_new_from_image( this->get_image(), &pixel[0], static_cast( pixel.size() ) )) ) throw( VError() ); return( VImage( image ) ); } VImage new_from_image( double pixel ) const { return( new_from_image( to_vectorv( 1, pixel ) ) ); } VImage copy_memory() const { VipsImage *image; if( !(image = vips_image_copy_memory( this->get_image() )) ) throw( VError() ); return( VImage( image ) ); } VImage write( VImage out ) const; void write_to_file( const char *name, VOption *options = 0 ) const; void write_to_buffer( const char *suffix, void **buf, size_t *size, VOption *options = 0 ) const; void write_to_target( const char *suffix, VTarget target, VOption *options = 0 ) const; void * write_to_memory( size_t *size ) const { void *result; if( !(result = vips_image_write_to_memory( this->get_image(), size )) ) throw( VError() ); return( result ); } #include "vips-operators.h" // a few useful things VImage linear( double a, double b, VOption *options = 0 ) const { return( this->linear( to_vector( a ), to_vector( b ), options ) ); } VImage linear( std::vector a, double b, VOption *options = 0 ) const { return( this->linear( a, to_vector( b ), options ) ); } VImage linear( double a, std::vector b, VOption *options = 0 ) const { return( this->linear( to_vector( a ), b, options ) ); } std::vector bandsplit( VOption *options = 0 ) const; VImage bandjoin( VImage other, VOption *options = 0 ) const; VImage bandjoin( double other, VOption *options = 0 ) const { return( bandjoin( to_vector( other ), options ) ); } VImage bandjoin( std::vector other, VOption *options = 0 ) const { return( bandjoin_const( other, options ) ); } VImage composite( VImage other, VipsBlendMode mode, VOption *options = 0 ) const; std::complex minpos( VOption *options = 0 ) const; std::complex maxpos( VOption *options = 0 ) const; VImage fliphor( VOption *options = 0 ) const { return( flip( VIPS_DIRECTION_HORIZONTAL, options ) ); } VImage flipver( VOption *options = 0 ) const { return( flip( VIPS_DIRECTION_VERTICAL, options ) ); } VImage rot90( VOption *options = 0 ) const { return( rot( VIPS_ANGLE_D90, options ) ); } VImage rot180( VOption *options = 0 ) const { return( rot( VIPS_ANGLE_D180, options ) ); } VImage rot270( VOption *options = 0 ) const { return( rot( VIPS_ANGLE_D270, options ) ); } VImage dilate( VImage mask, VOption *options = 0 ) const { return( morph( mask, VIPS_OPERATION_MORPHOLOGY_DILATE, options ) ); } VImage erode( VImage mask, VOption *options = 0 ) const { return( morph( mask, VIPS_OPERATION_MORPHOLOGY_ERODE, options ) ); } VImage median( int size = 3, VOption *options = 0 ) const { return( rank( size, size, (size * size) / 2, options ) ); } VImage floor( VOption *options = 0 ) const { return( round( VIPS_OPERATION_ROUND_FLOOR, options ) ); } VImage ceil( VOption *options = 0 ) const { return( round( VIPS_OPERATION_ROUND_CEIL, options ) ); } VImage rint( VOption *options = 0 ) const { return( round( VIPS_OPERATION_ROUND_RINT, options ) ); } VImage bandand( VOption *options = 0 ) const { return( bandbool( VIPS_OPERATION_BOOLEAN_AND, options ) ); } VImage bandor( VOption *options = 0 ) const { return( bandbool( VIPS_OPERATION_BOOLEAN_OR, options ) ); } VImage bandeor( VOption *options = 0 ) const { return( bandbool( VIPS_OPERATION_BOOLEAN_EOR, options ) ); } VImage real( VOption *options = 0 ) const { return( complexget( VIPS_OPERATION_COMPLEXGET_REAL, options ) ); } VImage imag( VOption *options = 0 ) const { return( complexget( VIPS_OPERATION_COMPLEXGET_IMAG, options ) ); } VImage polar( VOption *options = 0 ) const { return( complex( VIPS_OPERATION_COMPLEX_POLAR, options ) ); } VImage rect( VOption *options = 0 ) const { return( complex( VIPS_OPERATION_COMPLEX_RECT, options ) ); } VImage conj( VOption *options = 0 ) const { return( complex( VIPS_OPERATION_COMPLEX_CONJ, options ) ); } VImage sin( VOption *options = 0 ) const { return( math( VIPS_OPERATION_MATH_SIN, options ) ); } VImage cos( VOption *options = 0 ) const { return( math( VIPS_OPERATION_MATH_COS, options ) ); } VImage tan( VOption *options = 0 ) const { return( math( VIPS_OPERATION_MATH_TAN, options ) ); } VImage asin( VOption *options = 0 ) const { return( math( VIPS_OPERATION_MATH_ASIN, options ) ); } VImage acos( VOption *options = 0 ) const { return( math( VIPS_OPERATION_MATH_ACOS, options ) ); } VImage atan( VOption *options = 0 ) const { return( math( VIPS_OPERATION_MATH_ATAN, options ) ); } VImage log( VOption *options = 0 ) const { return( math( VIPS_OPERATION_MATH_LOG, options ) ); } VImage log10( VOption *options = 0 ) const { return( math( VIPS_OPERATION_MATH_LOG10, options ) ); } VImage exp( VOption *options = 0 ) const { return( math( VIPS_OPERATION_MATH_EXP, options ) ); } VImage exp10( VOption *options = 0 ) const { return( math( VIPS_OPERATION_MATH_EXP10, options ) ); } VImage pow( VImage other, VOption *options = 0 ) const { return( math2( other, VIPS_OPERATION_MATH2_POW, options ) ); } VImage pow( double other, VOption *options = 0 ) const { return( math2_const( VIPS_OPERATION_MATH2_POW, to_vector( other ), options ) ); } VImage pow( std::vector other, VOption *options = 0 ) const { return( math2_const( VIPS_OPERATION_MATH2_POW, other, options ) ); } VImage wop( VImage other, VOption *options = 0 ) const { return( math2( other, VIPS_OPERATION_MATH2_WOP, options ) ); } VImage wop( double other, VOption *options = 0 ) const { return( math2_const( VIPS_OPERATION_MATH2_WOP, to_vector( other ), options ) ); } VImage wop( std::vector other, VOption *options = 0 ) const { return( math2_const( VIPS_OPERATION_MATH2_WOP, other, options ) ); } VImage ifthenelse( std::vector th, VImage el, VOption *options = 0 ) const { return( ifthenelse( el.new_from_image( th ), el, options ) ); } VImage ifthenelse( VImage th, std::vector el, VOption *options = 0 ) const { return( ifthenelse( th, th.new_from_image( el ), options ) ); } VImage ifthenelse( std::vector th, std::vector el, VOption *options = 0 ) const { return( ifthenelse( new_from_image( th ), new_from_image( el ), options ) ); } VImage ifthenelse( double th, VImage el, VOption *options = 0 ) const { return( ifthenelse( to_vector( th ), el, options ) ); } VImage ifthenelse( VImage th, double el, VOption *options = 0 ) const { return( ifthenelse( th, to_vector( el ), options ) ); } VImage ifthenelse( double th, double el, VOption *options = 0 ) const { return( ifthenelse( to_vector( th ), to_vector( el ), options ) ); } // Operator overloads VImage operator[]( int index ) const; std::vector operator()( int x, int y ) const; friend VIPS_CPLUSPLUS_API VImage operator+( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator+( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator+( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator+( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator+( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage & operator+=( VImage &a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage & operator+=( VImage &a, const double b ); friend VIPS_CPLUSPLUS_API VImage & operator+=( VImage &a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator-( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator-( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator-( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator-( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator-( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage & operator-=( VImage &a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage & operator-=( VImage &a, const double b ); friend VIPS_CPLUSPLUS_API VImage & operator-=( VImage &a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator-( const VImage a ); friend VIPS_CPLUSPLUS_API VImage operator*( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator*( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator*( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator*( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator*( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage & operator*=( VImage &a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage & operator*=( VImage &a, const double b ); friend VIPS_CPLUSPLUS_API VImage & operator*=( VImage &a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator/( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator/( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator/( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator/( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator/( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage & operator/=( VImage &a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage & operator/=( VImage &a, const double b ); friend VIPS_CPLUSPLUS_API VImage & operator/=( VImage &a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator%( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator%( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator%( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage & operator%=( VImage &a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage & operator%=( VImage &a, const double b ); friend VIPS_CPLUSPLUS_API VImage & operator%=( VImage &a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator<( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator<( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator<( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator<( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator<( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator<=( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator<=( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator<=( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator<=( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator<=( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator>( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator>( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator>( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator>( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator>( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator>=( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator>=( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator>=( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator>=( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator>=( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator==( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator==( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator==( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator==( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator==( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator!=( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator!=( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator!=( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator!=( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator!=( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator&( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator&( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator&( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator&( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator&( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage & operator&=( VImage &a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage & operator&=( VImage &a, const double b ); friend VIPS_CPLUSPLUS_API VImage & operator&=( VImage &a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator|( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator|( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator|( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator|( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator|( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage & operator|=( VImage &a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage & operator|=( VImage &a, const double b ); friend VIPS_CPLUSPLUS_API VImage & operator|=( VImage &a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator^( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator^( const double a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator^( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator^( const std::vector a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator^( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage & operator^=( VImage &a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage & operator^=( VImage &a, const double b ); friend VIPS_CPLUSPLUS_API VImage & operator^=( VImage &a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator<<( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator<<( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator<<( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage & operator<<=( VImage &a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage & operator<<=( VImage &a, const double b ); friend VIPS_CPLUSPLUS_API VImage & operator<<=( VImage &a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage operator>>( const VImage a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage operator>>( const VImage a, const double b ); friend VIPS_CPLUSPLUS_API VImage operator>>( const VImage a, const std::vector b ); friend VIPS_CPLUSPLUS_API VImage & operator>>=( VImage &a, const VImage b ); friend VIPS_CPLUSPLUS_API VImage & operator>>=( VImage &a, const double b ); friend VIPS_CPLUSPLUS_API VImage & operator>>=( VImage &a, const std::vector b ); }; VIPS_NAMESPACE_END #endif /*VIPS_VIMAGE_H*/ libvips-8.9.1/cplusplus/include/vips/VInterpolate8.h000066400000000000000000000026031361153320700225160ustar00rootroot00000000000000// VIPS interpolate wrapper /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VINTERPOLATE_H #define VIPS_VINTERPOLATE_H #include VIPS_NAMESPACE_START class VInterpolate : VObject { public: VInterpolate( VipsInterpolate *interpolate, VSteal steal = STEAL ) : VObject( (VipsObject *) interpolate, steal ) { } static VInterpolate new_from_name( const char *name, VOption *options = 0 ); VipsInterpolate * get_interpolate() const { return( (VipsInterpolate *) VObject::get_object() ); } }; VIPS_NAMESPACE_END #endif /*VIPS_VINTERPOLATE_H*/ libvips-8.9.1/cplusplus/include/vips/vips-operators.h000066400000000000000000001630331361153320700230140ustar00rootroot00000000000000// headers for vips operations // Wed 01 Jan 2020 12:22:11 PM CET // this file is generated automatically, do not edit! /** * Transform lch to cmc. * @param options Optional options. * @return Output image. */ VImage CMC2LCh( VOption *options = 0 ) const; /** * Transform cmyk to xyz. * @param options Optional options. * @return Output image. */ VImage CMYK2XYZ( VOption *options = 0 ) const; /** * Transform hsv to srgb. * @param options Optional options. * @return Output image. */ VImage HSV2sRGB( VOption *options = 0 ) const; /** * Transform lch to cmc. * @param options Optional options. * @return Output image. */ VImage LCh2CMC( VOption *options = 0 ) const; /** * Transform lch to lab. * @param options Optional options. * @return Output image. */ VImage LCh2Lab( VOption *options = 0 ) const; /** * Transform lab to lch. * @param options Optional options. * @return Output image. */ VImage Lab2LCh( VOption *options = 0 ) const; /** * Transform float lab to labq coding. * @param options Optional options. * @return Output image. */ VImage Lab2LabQ( VOption *options = 0 ) const; /** * Transform float lab to signed short. * @param options Optional options. * @return Output image. */ VImage Lab2LabS( VOption *options = 0 ) const; /** * Transform cielab to xyz. * @param options Optional options. * @return Output image. */ VImage Lab2XYZ( VOption *options = 0 ) const; /** * Unpack a labq image to float lab. * @param options Optional options. * @return Output image. */ VImage LabQ2Lab( VOption *options = 0 ) const; /** * Unpack a labq image to short lab. * @param options Optional options. * @return Output image. */ VImage LabQ2LabS( VOption *options = 0 ) const; /** * Convert a labq image to srgb. * @param options Optional options. * @return Output image. */ VImage LabQ2sRGB( VOption *options = 0 ) const; /** * Transform signed short lab to float. * @param options Optional options. * @return Output image. */ VImage LabS2Lab( VOption *options = 0 ) const; /** * Transform short lab to labq coding. * @param options Optional options. * @return Output image. */ VImage LabS2LabQ( VOption *options = 0 ) const; /** * Transform xyz to cmyk. * @param options Optional options. * @return Output image. */ VImage XYZ2CMYK( VOption *options = 0 ) const; /** * Transform xyz to lab. * @param options Optional options. * @return Output image. */ VImage XYZ2Lab( VOption *options = 0 ) const; /** * Transform xyz to yxy. * @param options Optional options. * @return Output image. */ VImage XYZ2Yxy( VOption *options = 0 ) const; /** * Transform xyz to scrgb. * @param options Optional options. * @return Output image. */ VImage XYZ2scRGB( VOption *options = 0 ) const; /** * Transform yxy to xyz. * @param options Optional options. * @return Output image. */ VImage Yxy2XYZ( VOption *options = 0 ) const; /** * Absolute value of an image. * @param options Optional options. * @return Output image. */ VImage abs( VOption *options = 0 ) const; /** * Add two images. * @param right Right-hand image argument. * @param options Optional options. * @return Output image. */ VImage add( VImage right, VOption *options = 0 ) const; /** * Affine transform of an image. * @param matrix Transformation matrix. * @param options Optional options. * @return Output image. */ VImage affine( std::vector matrix, VOption *options = 0 ) const; /** * Load an analyze6 image. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage analyzeload( const char *filename, VOption *options = 0 ); /** * Join an array of images. * @param in Array of input images. * @param options Optional options. * @return Output image. */ static VImage arrayjoin( std::vector in, VOption *options = 0 ); /** * Autorotate image by exif tag. * @param options Optional options. * @return Output image. */ VImage autorot( VOption *options = 0 ) const; /** * Find image average. * @param options Optional options. * @return Output value. */ double avg( VOption *options = 0 ) const; /** * Boolean operation across image bands. * @param boolean boolean to perform. * @param options Optional options. * @return Output image. */ VImage bandbool( VipsOperationBoolean boolean, VOption *options = 0 ) const; /** * Fold up x axis into bands. * @param options Optional options. * @return Output image. */ VImage bandfold( VOption *options = 0 ) const; /** * Bandwise join a set of images. * @param in Array of input images. * @param options Optional options. * @return Output image. */ static VImage bandjoin( std::vector in, VOption *options = 0 ); /** * Append a constant band to an image. * @param c Array of constants to add. * @param options Optional options. * @return Output image. */ VImage bandjoin_const( std::vector c, VOption *options = 0 ) const; /** * Band-wise average. * @param options Optional options. * @return Output image. */ VImage bandmean( VOption *options = 0 ) const; /** * Band-wise rank of a set of images. * @param in Array of input images. * @param options Optional options. * @return Output image. */ static VImage bandrank( std::vector in, VOption *options = 0 ); /** * Unfold image bands into x axis. * @param options Optional options. * @return Output image. */ VImage bandunfold( VOption *options = 0 ) const; /** * Make a black image. * @param width Image width in pixels. * @param height Image height in pixels. * @param options Optional options. * @return Output image. */ static VImage black( int width, int height, VOption *options = 0 ); /** * Boolean operation on two images. * @param right Right-hand image argument. * @param boolean boolean to perform. * @param options Optional options. * @return Output image. */ VImage boolean( VImage right, VipsOperationBoolean boolean, VOption *options = 0 ) const; /** * Boolean operations against a constant. * @param boolean boolean to perform. * @param c Array of constants. * @param options Optional options. * @return Output image. */ VImage boolean_const( VipsOperationBoolean boolean, std::vector c, VOption *options = 0 ) const; /** * Build a look-up table. * @param options Optional options. * @return Output image. */ VImage buildlut( VOption *options = 0 ) const; /** * Byteswap an image. * @param options Optional options. * @return Output image. */ VImage byteswap( VOption *options = 0 ) const; /** * Cache an image. * @param options Optional options. * @return Output image. */ VImage cache( VOption *options = 0 ) const; /** * Canny edge detector. * @param options Optional options. * @return Output image. */ VImage canny( VOption *options = 0 ) const; /** * Use pixel values to pick cases from an array of images. * @param cases Array of case images. * @param options Optional options. * @return Output image. */ VImage case_image( std::vector cases, VOption *options = 0 ) const; /** * Cast an image. * @param format Format to cast to. * @param options Optional options. * @return Output image. */ VImage cast( VipsBandFormat format, VOption *options = 0 ) const; /** * Convert to a new colorspace. * @param space Destination color space. * @param options Optional options. * @return Output image. */ VImage colourspace( VipsInterpretation space, VOption *options = 0 ) const; /** * Convolve with rotating mask. * @param mask Input matrix image. * @param options Optional options. * @return Output image. */ VImage compass( VImage mask, VOption *options = 0 ) const; /** * Perform a complex operation on an image. * @param cmplx complex to perform. * @param options Optional options. * @return Output image. */ VImage complex( VipsOperationComplex cmplx, VOption *options = 0 ) const; /** * Complex binary operations on two images. * @param right Right-hand image argument. * @param cmplx binary complex operation to perform. * @param options Optional options. * @return Output image. */ VImage complex2( VImage right, VipsOperationComplex2 cmplx, VOption *options = 0 ) const; /** * Form a complex image from two real images. * @param right Right-hand image argument. * @param options Optional options. * @return Output image. */ VImage complexform( VImage right, VOption *options = 0 ) const; /** * Get a component from a complex image. * @param get complex to perform. * @param options Optional options. * @return Output image. */ VImage complexget( VipsOperationComplexget get, VOption *options = 0 ) const; /** * Blend an array of images with an array of blend modes. * @param in Array of input images. * @param mode Array of VipsBlendMode to join with. * @param options Optional options. * @return Output image. */ static VImage composite( std::vector in, std::vector mode, VOption *options = 0 ); /** * Blend a pair of images with a blend mode. * @param overlay Overlay image. * @param mode VipsBlendMode to join with. * @param options Optional options. * @return Output image. */ VImage composite2( VImage overlay, VipsBlendMode mode, VOption *options = 0 ) const; /** * Convolution operation. * @param mask Input matrix image. * @param options Optional options. * @return Output image. */ VImage conv( VImage mask, VOption *options = 0 ) const; /** * Approximate integer convolution. * @param mask Input matrix image. * @param options Optional options. * @return Output image. */ VImage conva( VImage mask, VOption *options = 0 ) const; /** * Approximate separable integer convolution. * @param mask Input matrix image. * @param options Optional options. * @return Output image. */ VImage convasep( VImage mask, VOption *options = 0 ) const; /** * Float convolution operation. * @param mask Input matrix image. * @param options Optional options. * @return Output image. */ VImage convf( VImage mask, VOption *options = 0 ) const; /** * Int convolution operation. * @param mask Input matrix image. * @param options Optional options. * @return Output image. */ VImage convi( VImage mask, VOption *options = 0 ) const; /** * Seperable convolution operation. * @param mask Input matrix image. * @param options Optional options. * @return Output image. */ VImage convsep( VImage mask, VOption *options = 0 ) const; /** * Copy an image. * @param options Optional options. * @return Output image. */ VImage copy( VOption *options = 0 ) const; /** * Count lines in an image. * @param direction Countlines left-right or up-down. * @param options Optional options. * @return Number of lines. */ double countlines( VipsDirection direction, VOption *options = 0 ) const; /** * Extract an area from an image. * @param left Left edge of extract area. * @param top Top edge of extract area. * @param width Width of extract area. * @param height Height of extract area. * @param options Optional options. * @return Output image. */ VImage crop( int left, int top, int width, int height, VOption *options = 0 ) const; /** * Load csv from file. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage csvload( const char *filename, VOption *options = 0 ); /** * Save image to csv file. * @param filename Filename to save to. * @param options Optional options. */ void csvsave( const char *filename, VOption *options = 0 ) const; /** * Calculate de00. * @param right Right-hand input image. * @param options Optional options. * @return Output image. */ VImage dE00( VImage right, VOption *options = 0 ) const; /** * Calculate de76. * @param right Right-hand input image. * @param options Optional options. * @return Output image. */ VImage dE76( VImage right, VOption *options = 0 ) const; /** * Calculate decmc. * @param right Right-hand input image. * @param options Optional options. * @return Output image. */ VImage dECMC( VImage right, VOption *options = 0 ) const; /** * Find image standard deviation. * @param options Optional options. * @return Output value. */ double deviate( VOption *options = 0 ) const; /** * Divide two images. * @param right Right-hand image argument. * @param options Optional options. * @return Output image. */ VImage divide( VImage right, VOption *options = 0 ) const; /** * Draw a circle on an image. * @param ink Color for pixels. * @param cx Centre of draw_circle. * @param cy Centre of draw_circle. * @param radius Radius in pixels. * @param options Optional options. */ void draw_circle( std::vector ink, int cx, int cy, int radius, VOption *options = 0 ) const; /** * Flood-fill an area. * @param ink Color for pixels. * @param x DrawFlood start point. * @param y DrawFlood start point. * @param options Optional options. */ void draw_flood( std::vector ink, int x, int y, VOption *options = 0 ) const; /** * Paint an image into another image. * @param sub Sub-image to insert into main image. * @param x Draw image here. * @param y Draw image here. * @param options Optional options. */ void draw_image( VImage sub, int x, int y, VOption *options = 0 ) const; /** * Draw a line on an image. * @param ink Color for pixels. * @param x1 Start of draw_line. * @param y1 Start of draw_line. * @param x2 End of draw_line. * @param y2 End of draw_line. * @param options Optional options. */ void draw_line( std::vector ink, int x1, int y1, int x2, int y2, VOption *options = 0 ) const; /** * Draw a mask on an image. * @param ink Color for pixels. * @param mask Mask of pixels to draw. * @param x Draw mask here. * @param y Draw mask here. * @param options Optional options. */ void draw_mask( std::vector ink, VImage mask, int x, int y, VOption *options = 0 ) const; /** * Paint a rectangle on an image. * @param ink Color for pixels. * @param left Rect to fill. * @param top Rect to fill. * @param width Rect to fill. * @param height Rect to fill. * @param options Optional options. */ void draw_rect( std::vector ink, int left, int top, int width, int height, VOption *options = 0 ) const; /** * Blur a rectangle on an image. * @param left Rect to fill. * @param top Rect to fill. * @param width Rect to fill. * @param height Rect to fill. * @param options Optional options. */ void draw_smudge( int left, int top, int width, int height, VOption *options = 0 ) const; /** * Save image to deepzoom file. * @param filename Filename to save to. * @param options Optional options. */ void dzsave( const char *filename, VOption *options = 0 ) const; /** * Save image to dz buffer. * @param options Optional options. * @return Buffer to save to. */ VipsBlob *dzsave_buffer( VOption *options = 0 ) const; /** * Embed an image in a larger image. * @param x Left edge of input in output. * @param y Top edge of input in output. * @param width Image width in pixels. * @param height Image height in pixels. * @param options Optional options. * @return Output image. */ VImage embed( int x, int y, int width, int height, VOption *options = 0 ) const; /** * Extract an area from an image. * @param left Left edge of extract area. * @param top Top edge of extract area. * @param width Width of extract area. * @param height Height of extract area. * @param options Optional options. * @return Output image. */ VImage extract_area( int left, int top, int width, int height, VOption *options = 0 ) const; /** * Extract band from an image. * @param band Band to extract. * @param options Optional options. * @return Output image. */ VImage extract_band( int band, VOption *options = 0 ) const; /** * Make an image showing the eye's spatial response. * @param width Image width in pixels. * @param height Image height in pixels. * @param options Optional options. * @return Output image. */ static VImage eye( int width, int height, VOption *options = 0 ); /** * False-color an image. * @param options Optional options. * @return Output image. */ VImage falsecolour( VOption *options = 0 ) const; /** * Fast correlation. * @param ref Input reference image. * @param options Optional options. * @return Output image. */ VImage fastcor( VImage ref, VOption *options = 0 ) const; /** * Fill image zeros with nearest non-zero pixel. * @param options Optional options. * @return Value of nearest non-zero pixel. */ VImage fill_nearest( VOption *options = 0 ) const; /** * Search an image for non-edge areas. * @param top Top edge of extract area. * @param width Width of extract area. * @param height Height of extract area. * @param options Optional options. * @return Left edge of image. */ int find_trim( int *top, int *width, int *height, VOption *options = 0 ) const; /** * Load a fits image. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage fitsload( const char *filename, VOption *options = 0 ); /** * Save image to fits file. * @param filename Filename to save to. * @param options Optional options. */ void fitssave( const char *filename, VOption *options = 0 ) const; /** * Flatten alpha out of an image. * @param options Optional options. * @return Output image. */ VImage flatten( VOption *options = 0 ) const; /** * Flip an image. * @param direction Direction to flip image. * @param options Optional options. * @return Output image. */ VImage flip( VipsDirection direction, VOption *options = 0 ) const; /** * Transform float rgb to radiance coding. * @param options Optional options. * @return Output image. */ VImage float2rad( VOption *options = 0 ) const; /** * Make a fractal surface. * @param width Image width in pixels. * @param height Image height in pixels. * @param fractal_dimension Fractal dimension. * @param options Optional options. * @return Output image. */ static VImage fractsurf( int width, int height, double fractal_dimension, VOption *options = 0 ); /** * Frequency-domain filtering. * @param mask Input mask image. * @param options Optional options. * @return Output image. */ VImage freqmult( VImage mask, VOption *options = 0 ) const; /** * Forward fft. * @param options Optional options. * @return Output image. */ VImage fwfft( VOption *options = 0 ) const; /** * Gamma an image. * @param options Optional options. * @return Output image. */ VImage gamma( VOption *options = 0 ) const; /** * Gaussian blur. * @param sigma Sigma of Gaussian. * @param options Optional options. * @return Output image. */ VImage gaussblur( double sigma, VOption *options = 0 ) const; /** * Make a gaussian image. * @param sigma Sigma of Gaussian. * @param min_ampl Minimum amplitude of Gaussian. * @param options Optional options. * @return Output image. */ static VImage gaussmat( double sigma, double min_ampl, VOption *options = 0 ); /** * Make a gaussnoise image. * @param width Image width in pixels. * @param height Image height in pixels. * @param options Optional options. * @return Output image. */ static VImage gaussnoise( int width, int height, VOption *options = 0 ); /** * Read a point from an image. * @param x Point to read. * @param y Point to read. * @param options Optional options. * @return Array of output values. */ std::vector getpoint( int x, int y, VOption *options = 0 ) const; /** * Load gif with giflib. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage gifload( const char *filename, VOption *options = 0 ); /** * Load gif with giflib. * @param buffer Buffer to load from. * @param options Optional options. * @return Output image. */ static VImage gifload_buffer( VipsBlob *buffer, VOption *options = 0 ); /** * Global balance an image mosaic. * @param options Optional options. * @return Output image. */ VImage globalbalance( VOption *options = 0 ) const; /** * Place an image within a larger image with a certain gravity. * @param direction direction to place image within width/height. * @param width Image width in pixels. * @param height Image height in pixels. * @param options Optional options. * @return Output image. */ VImage gravity( VipsCompassDirection direction, int width, int height, VOption *options = 0 ) const; /** * Make a grey ramp image. * @param width Image width in pixels. * @param height Image height in pixels. * @param options Optional options. * @return Output image. */ static VImage grey( int width, int height, VOption *options = 0 ); /** * Grid an image. * @param tile_height chop into tiles this high. * @param across number of tiles across. * @param down number of tiles down. * @param options Optional options. * @return Output image. */ VImage grid( int tile_height, int across, int down, VOption *options = 0 ) const; /** * Load a heif image. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage heifload( const char *filename, VOption *options = 0 ); /** * Load a heif image. * @param buffer Buffer to load from. * @param options Optional options. * @return Output image. */ static VImage heifload_buffer( VipsBlob *buffer, VOption *options = 0 ); /** * Save image in heif format. * @param filename Filename to load from. * @param options Optional options. */ void heifsave( const char *filename, VOption *options = 0 ) const; /** * Save image in heif format. * @param options Optional options. * @return Buffer to save to. */ VipsBlob *heifsave_buffer( VOption *options = 0 ) const; /** * Form cumulative histogram. * @param options Optional options. * @return Output image. */ VImage hist_cum( VOption *options = 0 ) const; /** * Estimate image entropy. * @param options Optional options. * @return Output value. */ double hist_entropy( VOption *options = 0 ) const; /** * Histogram equalisation. * @param options Optional options. * @return Output image. */ VImage hist_equal( VOption *options = 0 ) const; /** * Find image histogram. * @param options Optional options. * @return Output histogram. */ VImage hist_find( VOption *options = 0 ) const; /** * Find indexed image histogram. * @param index Index image. * @param options Optional options. * @return Output histogram. */ VImage hist_find_indexed( VImage index, VOption *options = 0 ) const; /** * Find n-dimensional image histogram. * @param options Optional options. * @return Output histogram. */ VImage hist_find_ndim( VOption *options = 0 ) const; /** * Test for monotonicity. * @param options Optional options. * @return true if in is monotonic. */ bool hist_ismonotonic( VOption *options = 0 ) const; /** * Local histogram equalisation. * @param width Window width in pixels. * @param height Window height in pixels. * @param options Optional options. * @return Output image. */ VImage hist_local( int width, int height, VOption *options = 0 ) const; /** * Match two histograms. * @param ref Reference histogram. * @param options Optional options. * @return Output image. */ VImage hist_match( VImage ref, VOption *options = 0 ) const; /** * Normalise histogram. * @param options Optional options. * @return Output image. */ VImage hist_norm( VOption *options = 0 ) const; /** * Plot histogram. * @param options Optional options. * @return Output image. */ VImage hist_plot( VOption *options = 0 ) const; /** * Find hough circle transform. * @param options Optional options. * @return Output image. */ VImage hough_circle( VOption *options = 0 ) const; /** * Find hough line transform. * @param options Optional options. * @return Output image. */ VImage hough_line( VOption *options = 0 ) const; /** * Output to device with icc profile. * @param options Optional options. * @return Output image. */ VImage icc_export( VOption *options = 0 ) const; /** * Import from device with icc profile. * @param options Optional options. * @return Output image. */ VImage icc_import( VOption *options = 0 ) const; /** * Transform between devices with icc profiles. * @param output_profile Filename to load output profile from. * @param options Optional options. * @return Output image. */ VImage icc_transform( const char *output_profile, VOption *options = 0 ) const; /** * Make a 1d image where pixel values are indexes. * @param options Optional options. * @return Output image. */ static VImage identity( VOption *options = 0 ); /** * Ifthenelse an image. * @param in1 Source for TRUE pixels. * @param in2 Source for FALSE pixels. * @param options Optional options. * @return Output image. */ VImage ifthenelse( VImage in1, VImage in2, VOption *options = 0 ) const; /** * Insert image @sub into @main at @x, @y. * @param sub Sub-image to insert into main image. * @param x Left edge of sub in main. * @param y Top edge of sub in main. * @param options Optional options. * @return Output image. */ VImage insert( VImage sub, int x, int y, VOption *options = 0 ) const; /** * Invert an image. * @param options Optional options. * @return Output image. */ VImage invert( VOption *options = 0 ) const; /** * Build an inverted look-up table. * @param options Optional options. * @return Output image. */ VImage invertlut( VOption *options = 0 ) const; /** * Inverse fft. * @param options Optional options. * @return Output image. */ VImage invfft( VOption *options = 0 ) const; /** * Join a pair of images. * @param in2 Second input image. * @param direction Join left-right or up-down. * @param options Optional options. * @return Output image. */ VImage join( VImage in2, VipsDirection direction, VOption *options = 0 ) const; /** * Load jpeg from file. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage jpegload( const char *filename, VOption *options = 0 ); /** * Load jpeg from buffer. * @param buffer Buffer to load from. * @param options Optional options. * @return Output image. */ static VImage jpegload_buffer( VipsBlob *buffer, VOption *options = 0 ); /** * Load image from jpeg source. * @param source Source to load from. * @param options Optional options. * @return Output image. */ static VImage jpegload_source( VSource source, VOption *options = 0 ); /** * Save image to jpeg file. * @param filename Filename to save to. * @param options Optional options. */ void jpegsave( const char *filename, VOption *options = 0 ) const; /** * Save image to jpeg buffer. * @param options Optional options. * @return Buffer to save to. */ VipsBlob *jpegsave_buffer( VOption *options = 0 ) const; /** * Save image to jpeg mime. * @param options Optional options. */ void jpegsave_mime( VOption *options = 0 ) const; /** * Save image to jpeg target. * @param target Target to save to. * @param options Optional options. */ void jpegsave_target( VTarget target, VOption *options = 0 ) const; /** * Label regions in an image. * @param options Optional options. * @return Mask of region labels. */ VImage labelregions( VOption *options = 0 ) const; /** * Calculate (a * in + b). * @param a Multiply by this. * @param b Add this. * @param options Optional options. * @return Output image. */ VImage linear( std::vector a, std::vector b, VOption *options = 0 ) const; /** * Cache an image as a set of lines. * @param options Optional options. * @return Output image. */ VImage linecache( VOption *options = 0 ) const; /** * Make a laplacian of gaussian image. * @param sigma Radius of Logmatian. * @param min_ampl Minimum amplitude of Logmatian. * @param options Optional options. * @return Output image. */ static VImage logmat( double sigma, double min_ampl, VOption *options = 0 ); /** * Load file with imagemagick. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage magickload( const char *filename, VOption *options = 0 ); /** * Load buffer with imagemagick. * @param buffer Buffer to load from. * @param options Optional options. * @return Output image. */ static VImage magickload_buffer( VipsBlob *buffer, VOption *options = 0 ); /** * Save file with imagemagick. * @param filename Filename to save to. * @param options Optional options. */ void magicksave( const char *filename, VOption *options = 0 ) const; /** * Save image to magick buffer. * @param options Optional options. * @return Buffer to save to. */ VipsBlob *magicksave_buffer( VOption *options = 0 ) const; /** * Resample with a map image. * @param index Index pixels with this. * @param options Optional options. * @return Output image. */ VImage mapim( VImage index, VOption *options = 0 ) const; /** * Map an image though a lut. * @param lut Look-up table image. * @param options Optional options. * @return Output image. */ VImage maplut( VImage lut, VOption *options = 0 ) const; /** * Make a butterworth filter. * @param width Image width in pixels. * @param height Image height in pixels. * @param order Filter order. * @param frequency_cutoff Frequency cutoff. * @param amplitude_cutoff Amplitude cutoff. * @param options Optional options. * @return Output image. */ static VImage mask_butterworth( int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, VOption *options = 0 ); /** * Make a butterworth_band filter. * @param width Image width in pixels. * @param height Image height in pixels. * @param order Filter order. * @param frequency_cutoff_x Frequency cutoff x. * @param frequency_cutoff_y Frequency cutoff y. * @param radius radius of circle. * @param amplitude_cutoff Amplitude cutoff. * @param options Optional options. * @return Output image. */ static VImage mask_butterworth_band( int width, int height, double order, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, VOption *options = 0 ); /** * Make a butterworth ring filter. * @param width Image width in pixels. * @param height Image height in pixels. * @param order Filter order. * @param frequency_cutoff Frequency cutoff. * @param amplitude_cutoff Amplitude cutoff. * @param ringwidth Ringwidth. * @param options Optional options. * @return Output image. */ static VImage mask_butterworth_ring( int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, double ringwidth, VOption *options = 0 ); /** * Make fractal filter. * @param width Image width in pixels. * @param height Image height in pixels. * @param fractal_dimension Fractal dimension. * @param options Optional options. * @return Output image. */ static VImage mask_fractal( int width, int height, double fractal_dimension, VOption *options = 0 ); /** * Make a gaussian filter. * @param width Image width in pixels. * @param height Image height in pixels. * @param frequency_cutoff Frequency cutoff. * @param amplitude_cutoff Amplitude cutoff. * @param options Optional options. * @return Output image. */ static VImage mask_gaussian( int width, int height, double frequency_cutoff, double amplitude_cutoff, VOption *options = 0 ); /** * Make a gaussian filter. * @param width Image width in pixels. * @param height Image height in pixels. * @param frequency_cutoff_x Frequency cutoff x. * @param frequency_cutoff_y Frequency cutoff y. * @param radius radius of circle. * @param amplitude_cutoff Amplitude cutoff. * @param options Optional options. * @return Output image. */ static VImage mask_gaussian_band( int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, VOption *options = 0 ); /** * Make a gaussian ring filter. * @param width Image width in pixels. * @param height Image height in pixels. * @param frequency_cutoff Frequency cutoff. * @param amplitude_cutoff Amplitude cutoff. * @param ringwidth Ringwidth. * @param options Optional options. * @return Output image. */ static VImage mask_gaussian_ring( int width, int height, double frequency_cutoff, double amplitude_cutoff, double ringwidth, VOption *options = 0 ); /** * Make an ideal filter. * @param width Image width in pixels. * @param height Image height in pixels. * @param frequency_cutoff Frequency cutoff. * @param options Optional options. * @return Output image. */ static VImage mask_ideal( int width, int height, double frequency_cutoff, VOption *options = 0 ); /** * Make an ideal band filter. * @param width Image width in pixels. * @param height Image height in pixels. * @param frequency_cutoff_x Frequency cutoff x. * @param frequency_cutoff_y Frequency cutoff y. * @param radius radius of circle. * @param options Optional options. * @return Output image. */ static VImage mask_ideal_band( int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, VOption *options = 0 ); /** * Make an ideal ring filter. * @param width Image width in pixels. * @param height Image height in pixels. * @param frequency_cutoff Frequency cutoff. * @param ringwidth Ringwidth. * @param options Optional options. * @return Output image. */ static VImage mask_ideal_ring( int width, int height, double frequency_cutoff, double ringwidth, VOption *options = 0 ); /** * First-order match of two images. * @param sec Secondary image. * @param xr1 Position of first reference tie-point. * @param yr1 Position of first reference tie-point. * @param xs1 Position of first secondary tie-point. * @param ys1 Position of first secondary tie-point. * @param xr2 Position of second reference tie-point. * @param yr2 Position of second reference tie-point. * @param xs2 Position of second secondary tie-point. * @param ys2 Position of second secondary tie-point. * @param options Optional options. * @return Output image. */ VImage match( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, VOption *options = 0 ) const; /** * Apply a math operation to an image. * @param math math to perform. * @param options Optional options. * @return Output image. */ VImage math( VipsOperationMath math, VOption *options = 0 ) const; /** * Binary math operations. * @param right Right-hand image argument. * @param math2 math to perform. * @param options Optional options. * @return Output image. */ VImage math2( VImage right, VipsOperationMath2 math2, VOption *options = 0 ) const; /** * Binary math operations with a constant. * @param math2 math to perform. * @param c Array of constants. * @param options Optional options. * @return Output image. */ VImage math2_const( VipsOperationMath2 math2, std::vector c, VOption *options = 0 ) const; /** * Load mat from file. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage matload( const char *filename, VOption *options = 0 ); /** * Load matrix from file. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage matrixload( const char *filename, VOption *options = 0 ); /** * Print matrix. * @param options Optional options. */ void matrixprint( VOption *options = 0 ) const; /** * Save image to matrix file. * @param filename Filename to save to. * @param options Optional options. */ void matrixsave( const char *filename, VOption *options = 0 ) const; /** * Find image maximum. * @param options Optional options. * @return Output value. */ double max( VOption *options = 0 ) const; /** * Measure a set of patches on a color chart. * @param h Number of patches across chart. * @param v Number of patches down chart. * @param options Optional options. * @return Output array of statistics. */ VImage measure( int h, int v, VOption *options = 0 ) const; /** * Merge two images. * @param sec Secondary image. * @param direction Horizontal or vertcial merge. * @param dx Horizontal displacement from sec to ref. * @param dy Vertical displacement from sec to ref. * @param options Optional options. * @return Output image. */ VImage merge( VImage sec, VipsDirection direction, int dx, int dy, VOption *options = 0 ) const; /** * Find image minimum. * @param options Optional options. * @return Output value. */ double min( VOption *options = 0 ) const; /** * Morphology operation. * @param mask Input matrix image. * @param morph Morphological operation to perform. * @param options Optional options. * @return Output image. */ VImage morph( VImage mask, VipsOperationMorphology morph, VOption *options = 0 ) const; /** * Mosaic two images. * @param sec Secondary image. * @param direction Horizontal or vertcial mosaic. * @param xref Position of reference tie-point. * @param yref Position of reference tie-point. * @param xsec Position of secondary tie-point. * @param ysec Position of secondary tie-point. * @param options Optional options. * @return Output image. */ VImage mosaic( VImage sec, VipsDirection direction, int xref, int yref, int xsec, int ysec, VOption *options = 0 ) const; /** * First-order mosaic of two images. * @param sec Secondary image. * @param direction Horizontal or vertcial mosaic. * @param xr1 Position of first reference tie-point. * @param yr1 Position of first reference tie-point. * @param xs1 Position of first secondary tie-point. * @param ys1 Position of first secondary tie-point. * @param xr2 Position of second reference tie-point. * @param yr2 Position of second reference tie-point. * @param xs2 Position of second secondary tie-point. * @param ys2 Position of second secondary tie-point. * @param options Optional options. * @return Output image. */ VImage mosaic1( VImage sec, VipsDirection direction, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, VOption *options = 0 ) const; /** * Pick most-significant byte from an image. * @param options Optional options. * @return Output image. */ VImage msb( VOption *options = 0 ) const; /** * Multiply two images. * @param right Right-hand image argument. * @param options Optional options. * @return Output image. */ VImage multiply( VImage right, VOption *options = 0 ) const; /** * Load a nifti image. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage niftiload( const char *filename, VOption *options = 0 ); /** * Save image to nifti file. * @param filename Filename to save to. * @param options Optional options. */ void niftisave( const char *filename, VOption *options = 0 ) const; /** * Load an openexr image. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage openexrload( const char *filename, VOption *options = 0 ); /** * Load file with openslide. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage openslideload( const char *filename, VOption *options = 0 ); /** * Load pdf with libpoppler. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage pdfload( const char *filename, VOption *options = 0 ); /** * Load pdf with libpoppler. * @param buffer Buffer to load from. * @param options Optional options. * @return Output image. */ static VImage pdfload_buffer( VipsBlob *buffer, VOption *options = 0 ); /** * Find threshold for percent of pixels. * @param percent Percent of pixels. * @param options Optional options. * @return Threshold above which lie percent of pixels. */ int percent( double percent, VOption *options = 0 ) const; /** * Make a perlin noise image. * @param width Image width in pixels. * @param height Image height in pixels. * @param options Optional options. * @return Output image. */ static VImage perlin( int width, int height, VOption *options = 0 ); /** * Calculate phase correlation. * @param in2 Second input image. * @param options Optional options. * @return Output image. */ VImage phasecor( VImage in2, VOption *options = 0 ) const; /** * Load png from file. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage pngload( const char *filename, VOption *options = 0 ); /** * Load png from buffer. * @param buffer Buffer to load from. * @param options Optional options. * @return Output image. */ static VImage pngload_buffer( VipsBlob *buffer, VOption *options = 0 ); /** * Load png from source. * @param source Source to load from. * @param options Optional options. * @return Output image. */ static VImage pngload_source( VSource source, VOption *options = 0 ); /** * Save image to png file. * @param filename Filename to save to. * @param options Optional options. */ void pngsave( const char *filename, VOption *options = 0 ) const; /** * Save image to png buffer. * @param options Optional options. * @return Buffer to save to. */ VipsBlob *pngsave_buffer( VOption *options = 0 ) const; /** * Save image to target as png. * @param target Target to save to. * @param options Optional options. */ void pngsave_target( VTarget target, VOption *options = 0 ) const; /** * Load ppm from file. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage ppmload( const char *filename, VOption *options = 0 ); /** * Save image to ppm file. * @param filename Filename to save to. * @param options Optional options. */ void ppmsave( const char *filename, VOption *options = 0 ) const; /** * Premultiply image alpha. * @param options Optional options. * @return Output image. */ VImage premultiply( VOption *options = 0 ) const; /** * Find image profiles. * @param rows First non-zero pixel in row. * @param options Optional options. * @return First non-zero pixel in column. */ VImage profile( VImage *rows, VOption *options = 0 ) const; /** * Load named icc profile. * @param name Profile name. * @param options Optional options. * @return Loaded profile. */ static VipsBlob *profile_load( const char *name, VOption *options = 0 ); /** * Find image projections. * @param rows Sums of rows. * @param options Optional options. * @return Sums of columns. */ VImage project( VImage *rows, VOption *options = 0 ) const; /** * Resample an image with a quadratic transform. * @param coeff Coefficient matrix. * @param options Optional options. * @return Output image. */ VImage quadratic( VImage coeff, VOption *options = 0 ) const; /** * Unpack radiance coding to float rgb. * @param options Optional options. * @return Output image. */ VImage rad2float( VOption *options = 0 ) const; /** * Load a radiance image from a file. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage radload( const char *filename, VOption *options = 0 ); /** * Load rad from buffer. * @param buffer Buffer to load from. * @param options Optional options. * @return Output image. */ static VImage radload_buffer( VipsBlob *buffer, VOption *options = 0 ); /** * Load rad from source. * @param source Source to load from. * @param options Optional options. * @return Output image. */ static VImage radload_source( VSource source, VOption *options = 0 ); /** * Save image to radiance file. * @param filename Filename to save to. * @param options Optional options. */ void radsave( const char *filename, VOption *options = 0 ) const; /** * Save image to radiance buffer. * @param options Optional options. * @return Buffer to save to. */ VipsBlob *radsave_buffer( VOption *options = 0 ) const; /** * Save image to radiance target. * @param target Target to save to. * @param options Optional options. */ void radsave_target( VTarget target, VOption *options = 0 ) const; /** * Rank filter. * @param width Window width in pixels. * @param height Window height in pixels. * @param index Select pixel at index. * @param options Optional options. * @return Output image. */ VImage rank( int width, int height, int index, VOption *options = 0 ) const; /** * Load raw data from a file. * @param filename Filename to load from. * @param width Image width in pixels. * @param height Image height in pixels. * @param bands Number of bands in image. * @param options Optional options. * @return Output image. */ static VImage rawload( const char *filename, int width, int height, int bands, VOption *options = 0 ); /** * Save image to raw file. * @param filename Filename to save to. * @param options Optional options. */ void rawsave( const char *filename, VOption *options = 0 ) const; /** * Write raw image to file descriptor. * @param fd File descriptor to write to. * @param options Optional options. */ void rawsave_fd( int fd, VOption *options = 0 ) const; /** * Linear recombination with matrix. * @param m matrix of coefficients. * @param options Optional options. * @return Output image. */ VImage recomb( VImage m, VOption *options = 0 ) const; /** * Reduce an image. * @param hshrink Horizontal shrink factor. * @param vshrink Vertical shrink factor. * @param options Optional options. * @return Output image. */ VImage reduce( double hshrink, double vshrink, VOption *options = 0 ) const; /** * Shrink an image horizontally. * @param hshrink Horizontal shrink factor. * @param options Optional options. * @return Output image. */ VImage reduceh( double hshrink, VOption *options = 0 ) const; /** * Shrink an image vertically. * @param vshrink Vertical shrink factor. * @param options Optional options. * @return Output image. */ VImage reducev( double vshrink, VOption *options = 0 ) const; /** * Relational operation on two images. * @param right Right-hand image argument. * @param relational relational to perform. * @param options Optional options. * @return Output image. */ VImage relational( VImage right, VipsOperationRelational relational, VOption *options = 0 ) const; /** * Relational operations against a constant. * @param relational relational to perform. * @param c Array of constants. * @param options Optional options. * @return Output image. */ VImage relational_const( VipsOperationRelational relational, std::vector c, VOption *options = 0 ) const; /** * Remainder after integer division of two images. * @param right Right-hand image argument. * @param options Optional options. * @return Output image. */ VImage remainder( VImage right, VOption *options = 0 ) const; /** * Remainder after integer division of an image and a constant. * @param c Array of constants. * @param options Optional options. * @return Output image. */ VImage remainder_const( std::vector c, VOption *options = 0 ) const; /** * Replicate an image. * @param across Repeat this many times horizontally. * @param down Repeat this many times vertically. * @param options Optional options. * @return Output image. */ VImage replicate( int across, int down, VOption *options = 0 ) const; /** * Resize an image. * @param scale Scale image by this factor. * @param options Optional options. * @return Output image. */ VImage resize( double scale, VOption *options = 0 ) const; /** * Rotate an image. * @param angle Angle to rotate image. * @param options Optional options. * @return Output image. */ VImage rot( VipsAngle angle, VOption *options = 0 ) const; /** * Rotate an image. * @param options Optional options. * @return Output image. */ VImage rot45( VOption *options = 0 ) const; /** * Rotate an image by a number of degrees. * @param angle Rotate anticlockwise by this many degrees. * @param options Optional options. * @return Output image. */ VImage rotate( double angle, VOption *options = 0 ) const; /** * Perform a round function on an image. * @param round rounding operation to perform. * @param options Optional options. * @return Output image. */ VImage round( VipsOperationRound round, VOption *options = 0 ) const; /** * Transform srgb to hsv. * @param options Optional options. * @return Output image. */ VImage sRGB2HSV( VOption *options = 0 ) const; /** * Convert an srgb image to scrgb. * @param options Optional options. * @return Output image. */ VImage sRGB2scRGB( VOption *options = 0 ) const; /** * Convert scrgb to bw. * @param options Optional options. * @return Output image. */ VImage scRGB2BW( VOption *options = 0 ) const; /** * Transform scrgb to xyz. * @param options Optional options. * @return Output image. */ VImage scRGB2XYZ( VOption *options = 0 ) const; /** * Convert an scrgb image to srgb. * @param options Optional options. * @return Output image. */ VImage scRGB2sRGB( VOption *options = 0 ) const; /** * Scale an image to uchar. * @param options Optional options. * @return Output image. */ VImage scale( VOption *options = 0 ) const; /** * Check sequential access. * @param options Optional options. * @return Output image. */ VImage sequential( VOption *options = 0 ) const; /** * Unsharp masking for print. * @param options Optional options. * @return Output image. */ VImage sharpen( VOption *options = 0 ) const; /** * Shrink an image. * @param hshrink Horizontal shrink factor. * @param vshrink Vertical shrink factor. * @param options Optional options. * @return Output image. */ VImage shrink( double hshrink, double vshrink, VOption *options = 0 ) const; /** * Shrink an image horizontally. * @param hshrink Horizontal shrink factor. * @param options Optional options. * @return Output image. */ VImage shrinkh( int hshrink, VOption *options = 0 ) const; /** * Shrink an image vertically. * @param vshrink Vertical shrink factor. * @param options Optional options. * @return Output image. */ VImage shrinkv( int vshrink, VOption *options = 0 ) const; /** * Unit vector of pixel. * @param options Optional options. * @return Output image. */ VImage sign( VOption *options = 0 ) const; /** * Similarity transform of an image. * @param options Optional options. * @return Output image. */ VImage similarity( VOption *options = 0 ) const; /** * Make a 2d sine wave. * @param width Image width in pixels. * @param height Image height in pixels. * @param options Optional options. * @return Output image. */ static VImage sines( int width, int height, VOption *options = 0 ); /** * Extract an area from an image. * @param width Width of extract area. * @param height Height of extract area. * @param options Optional options. * @return Output image. */ VImage smartcrop( int width, int height, VOption *options = 0 ) const; /** * Sobel edge detector. * @param options Optional options. * @return Output image. */ VImage sobel( VOption *options = 0 ) const; /** * Spatial correlation. * @param ref Input reference image. * @param options Optional options. * @return Output image. */ VImage spcor( VImage ref, VOption *options = 0 ) const; /** * Make displayable power spectrum. * @param options Optional options. * @return Output image. */ VImage spectrum( VOption *options = 0 ) const; /** * Find many image stats. * @param options Optional options. * @return Output array of statistics. */ VImage stats( VOption *options = 0 ) const; /** * Statistical difference. * @param width Window width in pixels. * @param height Window height in pixels. * @param options Optional options. * @return Output image. */ VImage stdif( int width, int height, VOption *options = 0 ) const; /** * Subsample an image. * @param xfac Horizontal subsample factor. * @param yfac Vertical subsample factor. * @param options Optional options. * @return Output image. */ VImage subsample( int xfac, int yfac, VOption *options = 0 ) const; /** * Subtract two images. * @param right Right-hand image argument. * @param options Optional options. * @return Output image. */ VImage subtract( VImage right, VOption *options = 0 ) const; /** * Sum an array of images. * @param in Array of input images. * @param options Optional options. * @return Output image. */ static VImage sum( std::vector in, VOption *options = 0 ); /** * Load svg with rsvg. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage svgload( const char *filename, VOption *options = 0 ); /** * Load svg with rsvg. * @param buffer Buffer to load from. * @param options Optional options. * @return Output image. */ static VImage svgload_buffer( VipsBlob *buffer, VOption *options = 0 ); /** * Load svg from source. * @param source Source to load from. * @param options Optional options. * @return Output image. */ static VImage svgload_source( VSource source, VOption *options = 0 ); /** * Find the index of the first non-zero pixel in tests. * @param tests Table of images to test. * @param options Optional options. * @return Output image. */ static VImage switch_image( std::vector tests, VOption *options = 0 ); /** * Run an external command. * @param cmd_format Command to run. * @param options Optional options. */ static void system( const char *cmd_format, VOption *options = 0 ); /** * Make a text image. * @param text Text to render. * @param options Optional options. * @return Output image. */ static VImage text( const char *text, VOption *options = 0 ); /** * Generate thumbnail from file. * @param filename Filename to read from. * @param width Size to this width. * @param options Optional options. * @return Output image. */ static VImage thumbnail( const char *filename, int width, VOption *options = 0 ); /** * Generate thumbnail from buffer. * @param buffer Buffer to load from. * @param width Size to this width. * @param options Optional options. * @return Output image. */ static VImage thumbnail_buffer( VipsBlob *buffer, int width, VOption *options = 0 ); /** * Generate thumbnail from image. * @param width Size to this width. * @param options Optional options. * @return Output image. */ VImage thumbnail_image( int width, VOption *options = 0 ) const; /** * Generate thumbnail from source. * @param source Source to load from. * @param width Size to this width. * @param options Optional options. * @return Output image. */ static VImage thumbnail_source( VSource source, int width, VOption *options = 0 ); /** * Load tiff from file. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage tiffload( const char *filename, VOption *options = 0 ); /** * Load tiff from buffer. * @param buffer Buffer to load from. * @param options Optional options. * @return Output image. */ static VImage tiffload_buffer( VipsBlob *buffer, VOption *options = 0 ); /** * Load tiff from source. * @param source Source to load from. * @param options Optional options. * @return Output image. */ static VImage tiffload_source( VSource source, VOption *options = 0 ); /** * Save image to tiff file. * @param filename Filename to save to. * @param options Optional options. */ void tiffsave( const char *filename, VOption *options = 0 ) const; /** * Save image to tiff buffer. * @param options Optional options. * @return Buffer to save to. */ VipsBlob *tiffsave_buffer( VOption *options = 0 ) const; /** * Cache an image as a set of tiles. * @param options Optional options. * @return Output image. */ VImage tilecache( VOption *options = 0 ) const; /** * Build a look-up table. * @param options Optional options. * @return Output image. */ static VImage tonelut( VOption *options = 0 ); /** * Transpose3d an image. * @param options Optional options. * @return Output image. */ VImage transpose3d( VOption *options = 0 ) const; /** * Unpremultiply image alpha. * @param options Optional options. * @return Output image. */ VImage unpremultiply( VOption *options = 0 ) const; /** * Load vips from file. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage vipsload( const char *filename, VOption *options = 0 ); /** * Save image to vips file. * @param filename Filename to save to. * @param options Optional options. */ void vipssave( const char *filename, VOption *options = 0 ) const; /** * Load webp from file. * @param filename Filename to load from. * @param options Optional options. * @return Output image. */ static VImage webpload( const char *filename, VOption *options = 0 ); /** * Load webp from buffer. * @param buffer Buffer to load from. * @param options Optional options. * @return Output image. */ static VImage webpload_buffer( VipsBlob *buffer, VOption *options = 0 ); /** * Load webp from source. * @param source Source to load from. * @param options Optional options. * @return Output image. */ static VImage webpload_source( VSource source, VOption *options = 0 ); /** * Save image to webp file. * @param filename Filename to save to. * @param options Optional options. */ void webpsave( const char *filename, VOption *options = 0 ) const; /** * Save image to webp buffer. * @param options Optional options. * @return Buffer to save to. */ VipsBlob *webpsave_buffer( VOption *options = 0 ) const; /** * Save image to webp target. * @param target Target to save to. * @param options Optional options. */ void webpsave_target( VTarget target, VOption *options = 0 ) const; /** * Make a worley noise image. * @param width Image width in pixels. * @param height Image height in pixels. * @param options Optional options. * @return Output image. */ static VImage worley( int width, int height, VOption *options = 0 ); /** * Wrap image origin. * @param options Optional options. * @return Output image. */ VImage wrap( VOption *options = 0 ) const; /** * Make an image where pixel values are coordinates. * @param width Image width in pixels. * @param height Image height in pixels. * @param options Optional options. * @return Output image. */ static VImage xyz( int width, int height, VOption *options = 0 ); /** * Make a zone plate. * @param width Image width in pixels. * @param height Image height in pixels. * @param options Optional options. * @return Output image. */ static VImage zone( int width, int height, VOption *options = 0 ); /** * Zoom an image. * @param xfac Horizontal zoom factor. * @param yfac Vertical zoom factor. * @param options Optional options. * @return Output image. */ VImage zoom( int xfac, int yfac, VOption *options = 0 ) const; libvips-8.9.1/cplusplus/include/vips/vips8000066400000000000000000000027221361153320700206370ustar00rootroot00000000000000// Include file to get vips C++ binding /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_CPLUSPLUS #define VIPS_CPLUSPLUS #include #include /* Define VIPS_CPLUSPLUS_EXPORTS to build a DLL using MSVC. */ #ifdef _MSC_VER # ifdef VIPS_CPLUSPLUS_EXPORTS # define VIPS_CPLUSPLUS_API __declspec(dllexport) # else # define VIPS_CPLUSPLUS_API __declspec(dllimport) # endif #else # define VIPS_CPLUSPLUS_API #endif #define VIPS_NAMESPACE_START namespace vips { #define VIPS_NAMESPACE_END } #include "VError8.h" #include "VImage8.h" #include "VInterpolate8.h" #include "VConnection8.h" #endif /*VIPS_CPLUSPLUS*/ libvips-8.9.1/cplusplus/vips-operators.cpp000066400000000000000000002261421361153320700207440ustar00rootroot00000000000000// bodies for vips operations // Wed 01 Jan 2020 12:22:12 PM CET // this file is generated automatically, do not edit! VImage VImage::CMC2LCh( VOption *options ) const { VImage out; call( "CMC2LCh", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::CMYK2XYZ( VOption *options ) const { VImage out; call( "CMYK2XYZ", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::HSV2sRGB( VOption *options ) const { VImage out; call( "HSV2sRGB", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::LCh2CMC( VOption *options ) const { VImage out; call( "LCh2CMC", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::LCh2Lab( VOption *options ) const { VImage out; call( "LCh2Lab", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::Lab2LCh( VOption *options ) const { VImage out; call( "Lab2LCh", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::Lab2LabQ( VOption *options ) const { VImage out; call( "Lab2LabQ", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::Lab2LabS( VOption *options ) const { VImage out; call( "Lab2LabS", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::Lab2XYZ( VOption *options ) const { VImage out; call( "Lab2XYZ", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::LabQ2Lab( VOption *options ) const { VImage out; call( "LabQ2Lab", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::LabQ2LabS( VOption *options ) const { VImage out; call( "LabQ2LabS", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::LabQ2sRGB( VOption *options ) const { VImage out; call( "LabQ2sRGB", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::LabS2Lab( VOption *options ) const { VImage out; call( "LabS2Lab", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::LabS2LabQ( VOption *options ) const { VImage out; call( "LabS2LabQ", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::XYZ2CMYK( VOption *options ) const { VImage out; call( "XYZ2CMYK", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::XYZ2Lab( VOption *options ) const { VImage out; call( "XYZ2Lab", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::XYZ2Yxy( VOption *options ) const { VImage out; call( "XYZ2Yxy", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::XYZ2scRGB( VOption *options ) const { VImage out; call( "XYZ2scRGB", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::Yxy2XYZ( VOption *options ) const { VImage out; call( "Yxy2XYZ", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::abs( VOption *options ) const { VImage out; call( "abs", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::add( VImage right, VOption *options ) const { VImage out; call( "add", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right ) ); return( out ); } VImage VImage::affine( std::vector matrix, VOption *options ) const { VImage out; call( "affine", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "matrix", matrix ) ); return( out ); } VImage VImage::analyzeload( const char *filename, VOption *options ) { VImage out; call( "analyzeload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::arrayjoin( std::vector in, VOption *options ) { VImage out; call( "arrayjoin", (options ? options : VImage::option())-> set( "out", &out )-> set( "in", in ) ); return( out ); } VImage VImage::autorot( VOption *options ) const { VImage out; call( "autorot", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } double VImage::avg( VOption *options ) const { double out; call( "avg", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::bandbool( VipsOperationBoolean boolean, VOption *options ) const { VImage out; call( "bandbool", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "boolean", boolean ) ); return( out ); } VImage VImage::bandfold( VOption *options ) const { VImage out; call( "bandfold", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::bandjoin( std::vector in, VOption *options ) { VImage out; call( "bandjoin", (options ? options : VImage::option())-> set( "out", &out )-> set( "in", in ) ); return( out ); } VImage VImage::bandjoin_const( std::vector c, VOption *options ) const { VImage out; call( "bandjoin_const", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "c", c ) ); return( out ); } VImage VImage::bandmean( VOption *options ) const { VImage out; call( "bandmean", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::bandrank( std::vector in, VOption *options ) { VImage out; call( "bandrank", (options ? options : VImage::option())-> set( "out", &out )-> set( "in", in ) ); return( out ); } VImage VImage::bandunfold( VOption *options ) const { VImage out; call( "bandunfold", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::black( int width, int height, VOption *options ) { VImage out; call( "black", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::boolean( VImage right, VipsOperationBoolean boolean, VOption *options ) const { VImage out; call( "boolean", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right )-> set( "boolean", boolean ) ); return( out ); } VImage VImage::boolean_const( VipsOperationBoolean boolean, std::vector c, VOption *options ) const { VImage out; call( "boolean_const", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "boolean", boolean )-> set( "c", c ) ); return( out ); } VImage VImage::buildlut( VOption *options ) const { VImage out; call( "buildlut", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::byteswap( VOption *options ) const { VImage out; call( "byteswap", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::cache( VOption *options ) const { VImage out; call( "cache", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::canny( VOption *options ) const { VImage out; call( "canny", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::case_image( std::vector cases, VOption *options ) const { VImage out; call( "case", (options ? options : VImage::option())-> set( "index", *this )-> set( "out", &out )-> set( "cases", cases ) ); return( out ); } VImage VImage::cast( VipsBandFormat format, VOption *options ) const { VImage out; call( "cast", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "format", format ) ); return( out ); } VImage VImage::colourspace( VipsInterpretation space, VOption *options ) const { VImage out; call( "colourspace", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "space", space ) ); return( out ); } VImage VImage::compass( VImage mask, VOption *options ) const { VImage out; call( "compass", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "mask", mask ) ); return( out ); } VImage VImage::complex( VipsOperationComplex cmplx, VOption *options ) const { VImage out; call( "complex", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "cmplx", cmplx ) ); return( out ); } VImage VImage::complex2( VImage right, VipsOperationComplex2 cmplx, VOption *options ) const { VImage out; call( "complex2", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right )-> set( "cmplx", cmplx ) ); return( out ); } VImage VImage::complexform( VImage right, VOption *options ) const { VImage out; call( "complexform", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right ) ); return( out ); } VImage VImage::complexget( VipsOperationComplexget get, VOption *options ) const { VImage out; call( "complexget", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "get", get ) ); return( out ); } VImage VImage::composite( std::vector in, std::vector mode, VOption *options ) { VImage out; call( "composite", (options ? options : VImage::option())-> set( "out", &out )-> set( "in", in )-> set( "mode", mode ) ); return( out ); } VImage VImage::composite2( VImage overlay, VipsBlendMode mode, VOption *options ) const { VImage out; call( "composite2", (options ? options : VImage::option())-> set( "base", *this )-> set( "out", &out )-> set( "overlay", overlay )-> set( "mode", mode ) ); return( out ); } VImage VImage::conv( VImage mask, VOption *options ) const { VImage out; call( "conv", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "mask", mask ) ); return( out ); } VImage VImage::conva( VImage mask, VOption *options ) const { VImage out; call( "conva", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "mask", mask ) ); return( out ); } VImage VImage::convasep( VImage mask, VOption *options ) const { VImage out; call( "convasep", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "mask", mask ) ); return( out ); } VImage VImage::convf( VImage mask, VOption *options ) const { VImage out; call( "convf", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "mask", mask ) ); return( out ); } VImage VImage::convi( VImage mask, VOption *options ) const { VImage out; call( "convi", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "mask", mask ) ); return( out ); } VImage VImage::convsep( VImage mask, VOption *options ) const { VImage out; call( "convsep", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "mask", mask ) ); return( out ); } VImage VImage::copy( VOption *options ) const { VImage out; call( "copy", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } double VImage::countlines( VipsDirection direction, VOption *options ) const { double nolines; call( "countlines", (options ? options : VImage::option())-> set( "in", *this )-> set( "nolines", &nolines )-> set( "direction", direction ) ); return( nolines ); } VImage VImage::crop( int left, int top, int width, int height, VOption *options ) const { VImage out; call( "crop", (options ? options : VImage::option())-> set( "input", *this )-> set( "out", &out )-> set( "left", left )-> set( "top", top )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::csvload( const char *filename, VOption *options ) { VImage out; call( "csvload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } void VImage::csvsave( const char *filename, VOption *options ) const { call( "csvsave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VImage VImage::dE00( VImage right, VOption *options ) const { VImage out; call( "dE00", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right ) ); return( out ); } VImage VImage::dE76( VImage right, VOption *options ) const { VImage out; call( "dE76", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right ) ); return( out ); } VImage VImage::dECMC( VImage right, VOption *options ) const { VImage out; call( "dECMC", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right ) ); return( out ); } double VImage::deviate( VOption *options ) const { double out; call( "deviate", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::divide( VImage right, VOption *options ) const { VImage out; call( "divide", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right ) ); return( out ); } void VImage::draw_circle( std::vector ink, int cx, int cy, int radius, VOption *options ) const { call( "draw_circle", (options ? options : VImage::option())-> set( "image", *this )-> set( "ink", ink )-> set( "cx", cx )-> set( "cy", cy )-> set( "radius", radius ) ); } void VImage::draw_flood( std::vector ink, int x, int y, VOption *options ) const { call( "draw_flood", (options ? options : VImage::option())-> set( "image", *this )-> set( "ink", ink )-> set( "x", x )-> set( "y", y ) ); } void VImage::draw_image( VImage sub, int x, int y, VOption *options ) const { call( "draw_image", (options ? options : VImage::option())-> set( "image", *this )-> set( "sub", sub )-> set( "x", x )-> set( "y", y ) ); } void VImage::draw_line( std::vector ink, int x1, int y1, int x2, int y2, VOption *options ) const { call( "draw_line", (options ? options : VImage::option())-> set( "image", *this )-> set( "ink", ink )-> set( "x1", x1 )-> set( "y1", y1 )-> set( "x2", x2 )-> set( "y2", y2 ) ); } void VImage::draw_mask( std::vector ink, VImage mask, int x, int y, VOption *options ) const { call( "draw_mask", (options ? options : VImage::option())-> set( "image", *this )-> set( "ink", ink )-> set( "mask", mask )-> set( "x", x )-> set( "y", y ) ); } void VImage::draw_rect( std::vector ink, int left, int top, int width, int height, VOption *options ) const { call( "draw_rect", (options ? options : VImage::option())-> set( "image", *this )-> set( "ink", ink )-> set( "left", left )-> set( "top", top )-> set( "width", width )-> set( "height", height ) ); } void VImage::draw_smudge( int left, int top, int width, int height, VOption *options ) const { call( "draw_smudge", (options ? options : VImage::option())-> set( "image", *this )-> set( "left", left )-> set( "top", top )-> set( "width", width )-> set( "height", height ) ); } void VImage::dzsave( const char *filename, VOption *options ) const { call( "dzsave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VipsBlob *VImage::dzsave_buffer( VOption *options ) const { VipsBlob *buffer; call( "dzsave_buffer", (options ? options : VImage::option())-> set( "in", *this )-> set( "buffer", &buffer ) ); return( buffer ); } VImage VImage::embed( int x, int y, int width, int height, VOption *options ) const { VImage out; call( "embed", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "x", x )-> set( "y", y )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::extract_area( int left, int top, int width, int height, VOption *options ) const { VImage out; call( "extract_area", (options ? options : VImage::option())-> set( "input", *this )-> set( "out", &out )-> set( "left", left )-> set( "top", top )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::extract_band( int band, VOption *options ) const { VImage out; call( "extract_band", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "band", band ) ); return( out ); } VImage VImage::eye( int width, int height, VOption *options ) { VImage out; call( "eye", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::falsecolour( VOption *options ) const { VImage out; call( "falsecolour", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::fastcor( VImage ref, VOption *options ) const { VImage out; call( "fastcor", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "ref", ref ) ); return( out ); } VImage VImage::fill_nearest( VOption *options ) const { VImage out; call( "fill_nearest", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } int VImage::find_trim( int *top, int *width, int *height, VOption *options ) const { int left; call( "find_trim", (options ? options : VImage::option())-> set( "in", *this )-> set( "left", &left )-> set( "top", top )-> set( "width", width )-> set( "height", height ) ); return( left ); } VImage VImage::fitsload( const char *filename, VOption *options ) { VImage out; call( "fitsload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } void VImage::fitssave( const char *filename, VOption *options ) const { call( "fitssave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VImage VImage::flatten( VOption *options ) const { VImage out; call( "flatten", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::flip( VipsDirection direction, VOption *options ) const { VImage out; call( "flip", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "direction", direction ) ); return( out ); } VImage VImage::float2rad( VOption *options ) const { VImage out; call( "float2rad", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::fractsurf( int width, int height, double fractal_dimension, VOption *options ) { VImage out; call( "fractsurf", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "fractal_dimension", fractal_dimension ) ); return( out ); } VImage VImage::freqmult( VImage mask, VOption *options ) const { VImage out; call( "freqmult", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "mask", mask ) ); return( out ); } VImage VImage::fwfft( VOption *options ) const { VImage out; call( "fwfft", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::gamma( VOption *options ) const { VImage out; call( "gamma", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::gaussblur( double sigma, VOption *options ) const { VImage out; call( "gaussblur", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "sigma", sigma ) ); return( out ); } VImage VImage::gaussmat( double sigma, double min_ampl, VOption *options ) { VImage out; call( "gaussmat", (options ? options : VImage::option())-> set( "out", &out )-> set( "sigma", sigma )-> set( "min_ampl", min_ampl ) ); return( out ); } VImage VImage::gaussnoise( int width, int height, VOption *options ) { VImage out; call( "gaussnoise", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } std::vector VImage::getpoint( int x, int y, VOption *options ) const { std::vector out_array; call( "getpoint", (options ? options : VImage::option())-> set( "in", *this )-> set( "out_array", &out_array )-> set( "x", x )-> set( "y", y ) ); return( out_array ); } VImage VImage::gifload( const char *filename, VOption *options ) { VImage out; call( "gifload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::gifload_buffer( VipsBlob *buffer, VOption *options ) { VImage out; call( "gifload_buffer", (options ? options : VImage::option())-> set( "out", &out )-> set( "buffer", buffer ) ); return( out ); } VImage VImage::globalbalance( VOption *options ) const { VImage out; call( "globalbalance", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::gravity( VipsCompassDirection direction, int width, int height, VOption *options ) const { VImage out; call( "gravity", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "direction", direction )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::grey( int width, int height, VOption *options ) { VImage out; call( "grey", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::grid( int tile_height, int across, int down, VOption *options ) const { VImage out; call( "grid", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "tile_height", tile_height )-> set( "across", across )-> set( "down", down ) ); return( out ); } VImage VImage::heifload( const char *filename, VOption *options ) { VImage out; call( "heifload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::heifload_buffer( VipsBlob *buffer, VOption *options ) { VImage out; call( "heifload_buffer", (options ? options : VImage::option())-> set( "out", &out )-> set( "buffer", buffer ) ); return( out ); } void VImage::heifsave( const char *filename, VOption *options ) const { call( "heifsave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VipsBlob *VImage::heifsave_buffer( VOption *options ) const { VipsBlob *buffer; call( "heifsave_buffer", (options ? options : VImage::option())-> set( "in", *this )-> set( "buffer", &buffer ) ); return( buffer ); } VImage VImage::hist_cum( VOption *options ) const { VImage out; call( "hist_cum", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } double VImage::hist_entropy( VOption *options ) const { double out; call( "hist_entropy", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::hist_equal( VOption *options ) const { VImage out; call( "hist_equal", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::hist_find( VOption *options ) const { VImage out; call( "hist_find", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::hist_find_indexed( VImage index, VOption *options ) const { VImage out; call( "hist_find_indexed", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "index", index ) ); return( out ); } VImage VImage::hist_find_ndim( VOption *options ) const { VImage out; call( "hist_find_ndim", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } bool VImage::hist_ismonotonic( VOption *options ) const { bool monotonic; call( "hist_ismonotonic", (options ? options : VImage::option())-> set( "in", *this )-> set( "monotonic", &monotonic ) ); return( monotonic ); } VImage VImage::hist_local( int width, int height, VOption *options ) const { VImage out; call( "hist_local", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::hist_match( VImage ref, VOption *options ) const { VImage out; call( "hist_match", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "ref", ref ) ); return( out ); } VImage VImage::hist_norm( VOption *options ) const { VImage out; call( "hist_norm", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::hist_plot( VOption *options ) const { VImage out; call( "hist_plot", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::hough_circle( VOption *options ) const { VImage out; call( "hough_circle", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::hough_line( VOption *options ) const { VImage out; call( "hough_line", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::icc_export( VOption *options ) const { VImage out; call( "icc_export", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::icc_import( VOption *options ) const { VImage out; call( "icc_import", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::icc_transform( const char *output_profile, VOption *options ) const { VImage out; call( "icc_transform", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "output_profile", output_profile ) ); return( out ); } VImage VImage::identity( VOption *options ) { VImage out; call( "identity", (options ? options : VImage::option())-> set( "out", &out ) ); return( out ); } VImage VImage::ifthenelse( VImage in1, VImage in2, VOption *options ) const { VImage out; call( "ifthenelse", (options ? options : VImage::option())-> set( "cond", *this )-> set( "out", &out )-> set( "in1", in1 )-> set( "in2", in2 ) ); return( out ); } VImage VImage::insert( VImage sub, int x, int y, VOption *options ) const { VImage out; call( "insert", (options ? options : VImage::option())-> set( "main", *this )-> set( "out", &out )-> set( "sub", sub )-> set( "x", x )-> set( "y", y ) ); return( out ); } VImage VImage::invert( VOption *options ) const { VImage out; call( "invert", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::invertlut( VOption *options ) const { VImage out; call( "invertlut", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::invfft( VOption *options ) const { VImage out; call( "invfft", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::join( VImage in2, VipsDirection direction, VOption *options ) const { VImage out; call( "join", (options ? options : VImage::option())-> set( "in1", *this )-> set( "out", &out )-> set( "in2", in2 )-> set( "direction", direction ) ); return( out ); } VImage VImage::jpegload( const char *filename, VOption *options ) { VImage out; call( "jpegload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::jpegload_buffer( VipsBlob *buffer, VOption *options ) { VImage out; call( "jpegload_buffer", (options ? options : VImage::option())-> set( "out", &out )-> set( "buffer", buffer ) ); return( out ); } VImage VImage::jpegload_source( VSource source, VOption *options ) { VImage out; call( "jpegload_source", (options ? options : VImage::option())-> set( "out", &out )-> set( "source", source ) ); return( out ); } void VImage::jpegsave( const char *filename, VOption *options ) const { call( "jpegsave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VipsBlob *VImage::jpegsave_buffer( VOption *options ) const { VipsBlob *buffer; call( "jpegsave_buffer", (options ? options : VImage::option())-> set( "in", *this )-> set( "buffer", &buffer ) ); return( buffer ); } void VImage::jpegsave_mime( VOption *options ) const { call( "jpegsave_mime", (options ? options : VImage::option())-> set( "in", *this ) ); } void VImage::jpegsave_target( VTarget target, VOption *options ) const { call( "jpegsave_target", (options ? options : VImage::option())-> set( "in", *this )-> set( "target", target ) ); } VImage VImage::labelregions( VOption *options ) const { VImage mask; call( "labelregions", (options ? options : VImage::option())-> set( "in", *this )-> set( "mask", &mask ) ); return( mask ); } VImage VImage::linear( std::vector a, std::vector b, VOption *options ) const { VImage out; call( "linear", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "a", a )-> set( "b", b ) ); return( out ); } VImage VImage::linecache( VOption *options ) const { VImage out; call( "linecache", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::logmat( double sigma, double min_ampl, VOption *options ) { VImage out; call( "logmat", (options ? options : VImage::option())-> set( "out", &out )-> set( "sigma", sigma )-> set( "min_ampl", min_ampl ) ); return( out ); } VImage VImage::magickload( const char *filename, VOption *options ) { VImage out; call( "magickload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::magickload_buffer( VipsBlob *buffer, VOption *options ) { VImage out; call( "magickload_buffer", (options ? options : VImage::option())-> set( "out", &out )-> set( "buffer", buffer ) ); return( out ); } void VImage::magicksave( const char *filename, VOption *options ) const { call( "magicksave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VipsBlob *VImage::magicksave_buffer( VOption *options ) const { VipsBlob *buffer; call( "magicksave_buffer", (options ? options : VImage::option())-> set( "in", *this )-> set( "buffer", &buffer ) ); return( buffer ); } VImage VImage::mapim( VImage index, VOption *options ) const { VImage out; call( "mapim", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "index", index ) ); return( out ); } VImage VImage::maplut( VImage lut, VOption *options ) const { VImage out; call( "maplut", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "lut", lut ) ); return( out ); } VImage VImage::mask_butterworth( int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, VOption *options ) { VImage out; call( "mask_butterworth", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "order", order )-> set( "frequency_cutoff", frequency_cutoff )-> set( "amplitude_cutoff", amplitude_cutoff ) ); return( out ); } VImage VImage::mask_butterworth_band( int width, int height, double order, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, VOption *options ) { VImage out; call( "mask_butterworth_band", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "order", order )-> set( "frequency_cutoff_x", frequency_cutoff_x )-> set( "frequency_cutoff_y", frequency_cutoff_y )-> set( "radius", radius )-> set( "amplitude_cutoff", amplitude_cutoff ) ); return( out ); } VImage VImage::mask_butterworth_ring( int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, double ringwidth, VOption *options ) { VImage out; call( "mask_butterworth_ring", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "order", order )-> set( "frequency_cutoff", frequency_cutoff )-> set( "amplitude_cutoff", amplitude_cutoff )-> set( "ringwidth", ringwidth ) ); return( out ); } VImage VImage::mask_fractal( int width, int height, double fractal_dimension, VOption *options ) { VImage out; call( "mask_fractal", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "fractal_dimension", fractal_dimension ) ); return( out ); } VImage VImage::mask_gaussian( int width, int height, double frequency_cutoff, double amplitude_cutoff, VOption *options ) { VImage out; call( "mask_gaussian", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "frequency_cutoff", frequency_cutoff )-> set( "amplitude_cutoff", amplitude_cutoff ) ); return( out ); } VImage VImage::mask_gaussian_band( int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, VOption *options ) { VImage out; call( "mask_gaussian_band", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "frequency_cutoff_x", frequency_cutoff_x )-> set( "frequency_cutoff_y", frequency_cutoff_y )-> set( "radius", radius )-> set( "amplitude_cutoff", amplitude_cutoff ) ); return( out ); } VImage VImage::mask_gaussian_ring( int width, int height, double frequency_cutoff, double amplitude_cutoff, double ringwidth, VOption *options ) { VImage out; call( "mask_gaussian_ring", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "frequency_cutoff", frequency_cutoff )-> set( "amplitude_cutoff", amplitude_cutoff )-> set( "ringwidth", ringwidth ) ); return( out ); } VImage VImage::mask_ideal( int width, int height, double frequency_cutoff, VOption *options ) { VImage out; call( "mask_ideal", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "frequency_cutoff", frequency_cutoff ) ); return( out ); } VImage VImage::mask_ideal_band( int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, VOption *options ) { VImage out; call( "mask_ideal_band", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "frequency_cutoff_x", frequency_cutoff_x )-> set( "frequency_cutoff_y", frequency_cutoff_y )-> set( "radius", radius ) ); return( out ); } VImage VImage::mask_ideal_ring( int width, int height, double frequency_cutoff, double ringwidth, VOption *options ) { VImage out; call( "mask_ideal_ring", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "frequency_cutoff", frequency_cutoff )-> set( "ringwidth", ringwidth ) ); return( out ); } VImage VImage::match( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, VOption *options ) const { VImage out; call( "match", (options ? options : VImage::option())-> set( "ref", *this )-> set( "out", &out )-> set( "sec", sec )-> set( "xr1", xr1 )-> set( "yr1", yr1 )-> set( "xs1", xs1 )-> set( "ys1", ys1 )-> set( "xr2", xr2 )-> set( "yr2", yr2 )-> set( "xs2", xs2 )-> set( "ys2", ys2 ) ); return( out ); } VImage VImage::math( VipsOperationMath math, VOption *options ) const { VImage out; call( "math", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "math", math ) ); return( out ); } VImage VImage::math2( VImage right, VipsOperationMath2 math2, VOption *options ) const { VImage out; call( "math2", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right )-> set( "math2", math2 ) ); return( out ); } VImage VImage::math2_const( VipsOperationMath2 math2, std::vector c, VOption *options ) const { VImage out; call( "math2_const", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "math2", math2 )-> set( "c", c ) ); return( out ); } VImage VImage::matload( const char *filename, VOption *options ) { VImage out; call( "matload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::matrixload( const char *filename, VOption *options ) { VImage out; call( "matrixload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } void VImage::matrixprint( VOption *options ) const { call( "matrixprint", (options ? options : VImage::option())-> set( "in", *this ) ); } void VImage::matrixsave( const char *filename, VOption *options ) const { call( "matrixsave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } double VImage::max( VOption *options ) const { double out; call( "max", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::measure( int h, int v, VOption *options ) const { VImage out; call( "measure", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "h", h )-> set( "v", v ) ); return( out ); } VImage VImage::merge( VImage sec, VipsDirection direction, int dx, int dy, VOption *options ) const { VImage out; call( "merge", (options ? options : VImage::option())-> set( "ref", *this )-> set( "out", &out )-> set( "sec", sec )-> set( "direction", direction )-> set( "dx", dx )-> set( "dy", dy ) ); return( out ); } double VImage::min( VOption *options ) const { double out; call( "min", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::morph( VImage mask, VipsOperationMorphology morph, VOption *options ) const { VImage out; call( "morph", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "mask", mask )-> set( "morph", morph ) ); return( out ); } VImage VImage::mosaic( VImage sec, VipsDirection direction, int xref, int yref, int xsec, int ysec, VOption *options ) const { VImage out; call( "mosaic", (options ? options : VImage::option())-> set( "ref", *this )-> set( "out", &out )-> set( "sec", sec )-> set( "direction", direction )-> set( "xref", xref )-> set( "yref", yref )-> set( "xsec", xsec )-> set( "ysec", ysec ) ); return( out ); } VImage VImage::mosaic1( VImage sec, VipsDirection direction, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, VOption *options ) const { VImage out; call( "mosaic1", (options ? options : VImage::option())-> set( "ref", *this )-> set( "out", &out )-> set( "sec", sec )-> set( "direction", direction )-> set( "xr1", xr1 )-> set( "yr1", yr1 )-> set( "xs1", xs1 )-> set( "ys1", ys1 )-> set( "xr2", xr2 )-> set( "yr2", yr2 )-> set( "xs2", xs2 )-> set( "ys2", ys2 ) ); return( out ); } VImage VImage::msb( VOption *options ) const { VImage out; call( "msb", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::multiply( VImage right, VOption *options ) const { VImage out; call( "multiply", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right ) ); return( out ); } VImage VImage::niftiload( const char *filename, VOption *options ) { VImage out; call( "niftiload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } void VImage::niftisave( const char *filename, VOption *options ) const { call( "niftisave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VImage VImage::openexrload( const char *filename, VOption *options ) { VImage out; call( "openexrload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::openslideload( const char *filename, VOption *options ) { VImage out; call( "openslideload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::pdfload( const char *filename, VOption *options ) { VImage out; call( "pdfload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::pdfload_buffer( VipsBlob *buffer, VOption *options ) { VImage out; call( "pdfload_buffer", (options ? options : VImage::option())-> set( "out", &out )-> set( "buffer", buffer ) ); return( out ); } int VImage::percent( double percent, VOption *options ) const { int threshold; call( "percent", (options ? options : VImage::option())-> set( "in", *this )-> set( "threshold", &threshold )-> set( "percent", percent ) ); return( threshold ); } VImage VImage::perlin( int width, int height, VOption *options ) { VImage out; call( "perlin", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::phasecor( VImage in2, VOption *options ) const { VImage out; call( "phasecor", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "in2", in2 ) ); return( out ); } VImage VImage::pngload( const char *filename, VOption *options ) { VImage out; call( "pngload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::pngload_buffer( VipsBlob *buffer, VOption *options ) { VImage out; call( "pngload_buffer", (options ? options : VImage::option())-> set( "out", &out )-> set( "buffer", buffer ) ); return( out ); } VImage VImage::pngload_source( VSource source, VOption *options ) { VImage out; call( "pngload_source", (options ? options : VImage::option())-> set( "out", &out )-> set( "source", source ) ); return( out ); } void VImage::pngsave( const char *filename, VOption *options ) const { call( "pngsave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VipsBlob *VImage::pngsave_buffer( VOption *options ) const { VipsBlob *buffer; call( "pngsave_buffer", (options ? options : VImage::option())-> set( "in", *this )-> set( "buffer", &buffer ) ); return( buffer ); } void VImage::pngsave_target( VTarget target, VOption *options ) const { call( "pngsave_target", (options ? options : VImage::option())-> set( "in", *this )-> set( "target", target ) ); } VImage VImage::ppmload( const char *filename, VOption *options ) { VImage out; call( "ppmload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } void VImage::ppmsave( const char *filename, VOption *options ) const { call( "ppmsave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VImage VImage::premultiply( VOption *options ) const { VImage out; call( "premultiply", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::profile( VImage *rows, VOption *options ) const { VImage columns; call( "profile", (options ? options : VImage::option())-> set( "in", *this )-> set( "columns", &columns )-> set( "rows", rows ) ); return( columns ); } VipsBlob *VImage::profile_load( const char *name, VOption *options ) { VipsBlob *profile; call( "profile_load", (options ? options : VImage::option())-> set( "profile", &profile )-> set( "name", name ) ); return( profile ); } VImage VImage::project( VImage *rows, VOption *options ) const { VImage columns; call( "project", (options ? options : VImage::option())-> set( "in", *this )-> set( "columns", &columns )-> set( "rows", rows ) ); return( columns ); } VImage VImage::quadratic( VImage coeff, VOption *options ) const { VImage out; call( "quadratic", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "coeff", coeff ) ); return( out ); } VImage VImage::rad2float( VOption *options ) const { VImage out; call( "rad2float", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::radload( const char *filename, VOption *options ) { VImage out; call( "radload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::radload_buffer( VipsBlob *buffer, VOption *options ) { VImage out; call( "radload_buffer", (options ? options : VImage::option())-> set( "out", &out )-> set( "buffer", buffer ) ); return( out ); } VImage VImage::radload_source( VSource source, VOption *options ) { VImage out; call( "radload_source", (options ? options : VImage::option())-> set( "out", &out )-> set( "source", source ) ); return( out ); } void VImage::radsave( const char *filename, VOption *options ) const { call( "radsave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VipsBlob *VImage::radsave_buffer( VOption *options ) const { VipsBlob *buffer; call( "radsave_buffer", (options ? options : VImage::option())-> set( "in", *this )-> set( "buffer", &buffer ) ); return( buffer ); } void VImage::radsave_target( VTarget target, VOption *options ) const { call( "radsave_target", (options ? options : VImage::option())-> set( "in", *this )-> set( "target", target ) ); } VImage VImage::rank( int width, int height, int index, VOption *options ) const { VImage out; call( "rank", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "width", width )-> set( "height", height )-> set( "index", index ) ); return( out ); } VImage VImage::rawload( const char *filename, int width, int height, int bands, VOption *options ) { VImage out; call( "rawload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename )-> set( "width", width )-> set( "height", height )-> set( "bands", bands ) ); return( out ); } void VImage::rawsave( const char *filename, VOption *options ) const { call( "rawsave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } void VImage::rawsave_fd( int fd, VOption *options ) const { call( "rawsave_fd", (options ? options : VImage::option())-> set( "in", *this )-> set( "fd", fd ) ); } VImage VImage::recomb( VImage m, VOption *options ) const { VImage out; call( "recomb", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "m", m ) ); return( out ); } VImage VImage::reduce( double hshrink, double vshrink, VOption *options ) const { VImage out; call( "reduce", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "hshrink", hshrink )-> set( "vshrink", vshrink ) ); return( out ); } VImage VImage::reduceh( double hshrink, VOption *options ) const { VImage out; call( "reduceh", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "hshrink", hshrink ) ); return( out ); } VImage VImage::reducev( double vshrink, VOption *options ) const { VImage out; call( "reducev", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "vshrink", vshrink ) ); return( out ); } VImage VImage::relational( VImage right, VipsOperationRelational relational, VOption *options ) const { VImage out; call( "relational", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right )-> set( "relational", relational ) ); return( out ); } VImage VImage::relational_const( VipsOperationRelational relational, std::vector c, VOption *options ) const { VImage out; call( "relational_const", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "relational", relational )-> set( "c", c ) ); return( out ); } VImage VImage::remainder( VImage right, VOption *options ) const { VImage out; call( "remainder", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right ) ); return( out ); } VImage VImage::remainder_const( std::vector c, VOption *options ) const { VImage out; call( "remainder_const", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "c", c ) ); return( out ); } VImage VImage::replicate( int across, int down, VOption *options ) const { VImage out; call( "replicate", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "across", across )-> set( "down", down ) ); return( out ); } VImage VImage::resize( double scale, VOption *options ) const { VImage out; call( "resize", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "scale", scale ) ); return( out ); } VImage VImage::rot( VipsAngle angle, VOption *options ) const { VImage out; call( "rot", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "angle", angle ) ); return( out ); } VImage VImage::rot45( VOption *options ) const { VImage out; call( "rot45", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::rotate( double angle, VOption *options ) const { VImage out; call( "rotate", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "angle", angle ) ); return( out ); } VImage VImage::round( VipsOperationRound round, VOption *options ) const { VImage out; call( "round", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "round", round ) ); return( out ); } VImage VImage::sRGB2HSV( VOption *options ) const { VImage out; call( "sRGB2HSV", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::sRGB2scRGB( VOption *options ) const { VImage out; call( "sRGB2scRGB", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::scRGB2BW( VOption *options ) const { VImage out; call( "scRGB2BW", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::scRGB2XYZ( VOption *options ) const { VImage out; call( "scRGB2XYZ", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::scRGB2sRGB( VOption *options ) const { VImage out; call( "scRGB2sRGB", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::scale( VOption *options ) const { VImage out; call( "scale", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::sequential( VOption *options ) const { VImage out; call( "sequential", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::sharpen( VOption *options ) const { VImage out; call( "sharpen", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::shrink( double hshrink, double vshrink, VOption *options ) const { VImage out; call( "shrink", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "hshrink", hshrink )-> set( "vshrink", vshrink ) ); return( out ); } VImage VImage::shrinkh( int hshrink, VOption *options ) const { VImage out; call( "shrinkh", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "hshrink", hshrink ) ); return( out ); } VImage VImage::shrinkv( int vshrink, VOption *options ) const { VImage out; call( "shrinkv", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "vshrink", vshrink ) ); return( out ); } VImage VImage::sign( VOption *options ) const { VImage out; call( "sign", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::similarity( VOption *options ) const { VImage out; call( "similarity", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::sines( int width, int height, VOption *options ) { VImage out; call( "sines", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::smartcrop( int width, int height, VOption *options ) const { VImage out; call( "smartcrop", (options ? options : VImage::option())-> set( "input", *this )-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::sobel( VOption *options ) const { VImage out; call( "sobel", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::spcor( VImage ref, VOption *options ) const { VImage out; call( "spcor", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "ref", ref ) ); return( out ); } VImage VImage::spectrum( VOption *options ) const { VImage out; call( "spectrum", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::stats( VOption *options ) const { VImage out; call( "stats", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::stdif( int width, int height, VOption *options ) const { VImage out; call( "stdif", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::subsample( int xfac, int yfac, VOption *options ) const { VImage out; call( "subsample", (options ? options : VImage::option())-> set( "input", *this )-> set( "out", &out )-> set( "xfac", xfac )-> set( "yfac", yfac ) ); return( out ); } VImage VImage::subtract( VImage right, VOption *options ) const { VImage out; call( "subtract", (options ? options : VImage::option())-> set( "left", *this )-> set( "out", &out )-> set( "right", right ) ); return( out ); } VImage VImage::sum( std::vector in, VOption *options ) { VImage out; call( "sum", (options ? options : VImage::option())-> set( "out", &out )-> set( "in", in ) ); return( out ); } VImage VImage::svgload( const char *filename, VOption *options ) { VImage out; call( "svgload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::svgload_buffer( VipsBlob *buffer, VOption *options ) { VImage out; call( "svgload_buffer", (options ? options : VImage::option())-> set( "out", &out )-> set( "buffer", buffer ) ); return( out ); } VImage VImage::svgload_source( VSource source, VOption *options ) { VImage out; call( "svgload_source", (options ? options : VImage::option())-> set( "out", &out )-> set( "source", source ) ); return( out ); } VImage VImage::switch_image( std::vector tests, VOption *options ) { VImage out; call( "switch", (options ? options : VImage::option())-> set( "out", &out )-> set( "tests", tests ) ); return( out ); } void VImage::system( const char *cmd_format, VOption *options ) { call( "system", (options ? options : VImage::option())-> set( "cmd_format", cmd_format ) ); } VImage VImage::text( const char *text, VOption *options ) { VImage out; call( "text", (options ? options : VImage::option())-> set( "out", &out )-> set( "text", text ) ); return( out ); } VImage VImage::thumbnail( const char *filename, int width, VOption *options ) { VImage out; call( "thumbnail", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename )-> set( "width", width ) ); return( out ); } VImage VImage::thumbnail_buffer( VipsBlob *buffer, int width, VOption *options ) { VImage out; call( "thumbnail_buffer", (options ? options : VImage::option())-> set( "out", &out )-> set( "buffer", buffer )-> set( "width", width ) ); return( out ); } VImage VImage::thumbnail_image( int width, VOption *options ) const { VImage out; call( "thumbnail_image", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out )-> set( "width", width ) ); return( out ); } VImage VImage::thumbnail_source( VSource source, int width, VOption *options ) { VImage out; call( "thumbnail_source", (options ? options : VImage::option())-> set( "out", &out )-> set( "source", source )-> set( "width", width ) ); return( out ); } VImage VImage::tiffload( const char *filename, VOption *options ) { VImage out; call( "tiffload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::tiffload_buffer( VipsBlob *buffer, VOption *options ) { VImage out; call( "tiffload_buffer", (options ? options : VImage::option())-> set( "out", &out )-> set( "buffer", buffer ) ); return( out ); } VImage VImage::tiffload_source( VSource source, VOption *options ) { VImage out; call( "tiffload_source", (options ? options : VImage::option())-> set( "out", &out )-> set( "source", source ) ); return( out ); } void VImage::tiffsave( const char *filename, VOption *options ) const { call( "tiffsave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VipsBlob *VImage::tiffsave_buffer( VOption *options ) const { VipsBlob *buffer; call( "tiffsave_buffer", (options ? options : VImage::option())-> set( "in", *this )-> set( "buffer", &buffer ) ); return( buffer ); } VImage VImage::tilecache( VOption *options ) const { VImage out; call( "tilecache", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::tonelut( VOption *options ) { VImage out; call( "tonelut", (options ? options : VImage::option())-> set( "out", &out ) ); return( out ); } VImage VImage::transpose3d( VOption *options ) const { VImage out; call( "transpose3d", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::unpremultiply( VOption *options ) const { VImage out; call( "unpremultiply", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::vipsload( const char *filename, VOption *options ) { VImage out; call( "vipsload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } void VImage::vipssave( const char *filename, VOption *options ) const { call( "vipssave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VImage VImage::webpload( const char *filename, VOption *options ) { VImage out; call( "webpload", (options ? options : VImage::option())-> set( "out", &out )-> set( "filename", filename ) ); return( out ); } VImage VImage::webpload_buffer( VipsBlob *buffer, VOption *options ) { VImage out; call( "webpload_buffer", (options ? options : VImage::option())-> set( "out", &out )-> set( "buffer", buffer ) ); return( out ); } VImage VImage::webpload_source( VSource source, VOption *options ) { VImage out; call( "webpload_source", (options ? options : VImage::option())-> set( "out", &out )-> set( "source", source ) ); return( out ); } void VImage::webpsave( const char *filename, VOption *options ) const { call( "webpsave", (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } VipsBlob *VImage::webpsave_buffer( VOption *options ) const { VipsBlob *buffer; call( "webpsave_buffer", (options ? options : VImage::option())-> set( "in", *this )-> set( "buffer", &buffer ) ); return( buffer ); } void VImage::webpsave_target( VTarget target, VOption *options ) const { call( "webpsave_target", (options ? options : VImage::option())-> set( "in", *this )-> set( "target", target ) ); } VImage VImage::worley( int width, int height, VOption *options ) { VImage out; call( "worley", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::wrap( VOption *options ) const { VImage out; call( "wrap", (options ? options : VImage::option())-> set( "in", *this )-> set( "out", &out ) ); return( out ); } VImage VImage::xyz( int width, int height, VOption *options ) { VImage out; call( "xyz", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::zone( int width, int height, VOption *options ) { VImage out; call( "zone", (options ? options : VImage::option())-> set( "out", &out )-> set( "width", width )-> set( "height", height ) ); return( out ); } VImage VImage::zoom( int xfac, int yfac, VOption *options ) const { VImage out; call( "zoom", (options ? options : VImage::option())-> set( "input", *this )-> set( "out", &out )-> set( "xfac", xfac )-> set( "yfac", yfac ) ); return( out ); } libvips-8.9.1/doc/000077500000000000000000000000001361153320700137475ustar00rootroot00000000000000libvips-8.9.1/doc/Cite.md000066400000000000000000000012271361153320700151570ustar00rootroot00000000000000 Cite 3 libvips Cite References to cite for libvips Martinez, K. and Cupitt, J. (2005) [VIPS -- a highly tuned image processing software architecture](http://eprints.ecs.soton.ac.uk/12371). In Proceedings of IEEE International Conference on Image Processing 2, pp. 574-577, Genova. Cupitt, J. and Martinez, K. (1996) [VIPS: An image processing system for large images](http://eprints.soton.ac.uk/252227/1/vipsspie96a.pdf), Proc. SPIE, vol. 2663, pp. 19--28. libvips-8.9.1/doc/Cite.xml000066400000000000000000000016741361153320700153650ustar00rootroot00000000000000 Cite 3 libvips Cite References to cite for libvips Martinez, K. and Cupitt, J. (2005) VIPS – a highly tuned image processing software architecture. In Proceedings of IEEE International Conference on Image Processing 2, pp. 574-577, Genova. Cupitt, J. and Martinez, K. (1996) VIPS: An image processing system for large images, Proc. SPIE, vol. 2663, pp. 19–28. libvips-8.9.1/doc/Examples.md000066400000000000000000000110471361153320700160520ustar00rootroot00000000000000 Examples 3 libvips libvips examples A few example Python programs using libvips This page shows a few libvips examples using Python. They will work with small syntax changes in any language with a libvips binding. The libvips test suite is written in Python and exercises every operation in the API. It's also a useful source of examples. # Average a region of interest box on an image ``` python #!/usr/bin/env python import sys import pyvips left = 10 top = 10 width = 64 height = 64 image = pyvips.Image.new_from_file(sys.argv[1]) roi = image.crop(left, top, width, height) print 'average:', roi.avg() ``` # libvips and numpy You can use `pyvips.Image.new_from_memory()` to make a vips image from an area of memory. The memory array needs to be laid out band-interleaved, as a set of scanlines, with no padding between lines. ```python #!/usr/bin/env python import sys import time import pyvips from PIL import Image import numpy as np if len(sys.argv) != 3: print('usage: {0} input-filename output-filename'.format(sys.argv[0])) sys.exit(-1) # map vips formats to np dtypes format_to_dtype = { 'uchar': np.uint8, 'char': np.int8, 'ushort': np.uint16, 'short': np.int16, 'uint': np.uint32, 'int': np.int32, 'float': np.float32, 'double': np.float64, 'complex': np.complex64, 'dpcomplex': np.complex128, } # map np dtypes to vips dtype_to_format = { 'uint8': 'uchar', 'int8': 'char', 'uint16': 'ushort', 'int16': 'short', 'uint32': 'uint', 'int32': 'int', 'float32': 'float', 'float64': 'double', 'complex64': 'complex', 'complex128': 'dpcomplex', } # load with PIL start_pillow = time.time() pillow_img = np.asarray(Image.open(sys.argv[1])) print('Pillow Time:', time.time()-start_pillow) print('original shape', pillow_img.shape) # load with vips to a memory array start_vips = time.time() img = pyvips.Image.new_from_file(sys.argv[1], access='sequential') mem_img = img.write_to_memory() # then make a numpy array from that buffer object np_3d = np.ndarray(buffer=mem_img, dtype=format_to_dtype[img.format], shape=[img.height, img.width, img.bands]) print('Vips Time:', time.time()-start_vips) print('final shape', np_3d.shape) # verify we have the same result print('Sum of the Differences:', np.sum(np_3d-pillow_img)) # make a vips image from the numpy array height, width, bands = np_3d.shape linear = np_3d.reshape(width * height * bands) vi = pyvips.Image.new_from_memory(linear.data, width, height, bands, dtype_to_format[str(np_3d.dtype)]) # and write back to disc for checking vi.write_to_file(sys.argv[2]) ``` # Build huge image mosaic This makes a 100,000 x 100,000 black image, then inserts all the images you pass on the command-line into it at random positions. libvips is able to run this program in sequential mode: it'll open all the input images at the same time, and stream pixels from them as it needs them to generate the output. To test it, first make a large 1-bit image. This command will take the green channel and write as a 1-bit fax image. `wtc.jpg` is a test 10,000 x 10,000 jpeg: ``` $ vips extract_band wtc.jpg x.tif[squash,compression=ccittfax4,strip] 1 ``` Now make 1,000 copies of that image in a subdirectory: ``` $ mkdir test $ for i in {1..1000}; do cp x.tif test/$i.tif; done ``` And run this Python program on them: ``` $ time ./try255.py x.tif[squash,compression=ccittfax4,strip,bigtif] test/* real 1m59.924s user 4m5.388s sys 0m8.936s ``` It completes in just under two minutes on this laptop, and needs about 7gb of RAM to run. It would need about the same amount of memory for a full-colour RGB image, I was just keen to keep disc usage down. If you wanted to handle transparency, or if you wanted mixed CMYK and RGB images, you'd need to do some more work to convert them all into the same colourspace before inserting them. ``` python #!/usr/bin/env python import sys import random import pyvips # this makes a 8-bit, mono image of 100,000 x 100,000 pixels, each pixel zero im = pyvips.Image.black(100000, 100000) for filename in sys.argv[2:]: tile = pyvips.Image.new_from_file(filename, access='sequential') im = im.insert(tile, random.randint(0, im.width - tile.width), random.randint(0, im.height - tile.height)) im.write_to_file(sys.argv[1]) ``` libvips-8.9.1/doc/Examples.xml000066400000000000000000000126171361153320700162560ustar00rootroot00000000000000 Examples 3 libvips libvips examples A few example Python programs using libvips This page shows a few libvips examples using Python. They will work with small syntax changes in any language with a libvips binding. The libvips test suite is written in Python and exercises every operation in the API. It’s also a useful source of examples. Average a region of interest box on an image #!/usr/bin/env python import sys import pyvips left = 10 top = 10 width = 64 height = 64 image = pyvips.Image.new_from_file(sys.argv[1]) roi = image.crop(left, top, width, height) print 'average:', roi.avg() libvips and numpy You can use pyvips.Image.new_from_memory() to make a vips image from an area of memory. The memory array needs to be laid out band-interleaved, as a set of scanlines, with no padding between lines. #!/usr/bin/env python import sys import time import pyvips from PIL import Image import numpy as np if len(sys.argv) != 3: print('usage: {0} input-filename output-filename'.format(sys.argv[0])) sys.exit(-1) # map vips formats to np dtypes format_to_dtype = { 'uchar': np.uint8, 'char': np.int8, 'ushort': np.uint16, 'short': np.int16, 'uint': np.uint32, 'int': np.int32, 'float': np.float32, 'double': np.float64, 'complex': np.complex64, 'dpcomplex': np.complex128, } # map np dtypes to vips dtype_to_format = { 'uint8': 'uchar', 'int8': 'char', 'uint16': 'ushort', 'int16': 'short', 'uint32': 'uint', 'int32': 'int', 'float32': 'float', 'float64': 'double', 'complex64': 'complex', 'complex128': 'dpcomplex', } # load with PIL start_pillow = time.time() pillow_img = np.asarray(Image.open(sys.argv[1])) print('Pillow Time:', time.time()-start_pillow) print('original shape', pillow_img.shape) # load with vips to a memory array start_vips = time.time() img = pyvips.Image.new_from_file(sys.argv[1], access='sequential') mem_img = img.write_to_memory() # then make a numpy array from that buffer object np_3d = np.ndarray(buffer=mem_img, dtype=format_to_dtype[img.format], shape=[img.height, img.width, img.bands]) print('Vips Time:', time.time()-start_vips) print('final shape', np_3d.shape) # verify we have the same result print('Sum of the Differences:', np.sum(np_3d-pillow_img)) # make a vips image from the numpy array height, width, bands = np_3d.shape linear = np_3d.reshape(width * height * bands) vi = pyvips.Image.new_from_memory(linear.data, width, height, bands, dtype_to_format[str(np_3d.dtype)]) # and write back to disc for checking vi.write_to_file(sys.argv[2]) Build huge image mosaic This makes a 100,000 x 100,000 black image, then inserts all the images you pass on the command-line into it at random positions. libvips is able to run this program in sequential mode: it’ll open all the input images at the same time, and stream pixels from them as it needs them to generate the output. To test it, first make a large 1-bit image. This command will take the green channel and write as a 1-bit fax image. wtc.jpg is a test 10,000 x 10,000 jpeg: $ vips extract_band wtc.jpg x.tif[squash,compression=ccittfax4,strip] 1 Now make 1,000 copies of that image in a subdirectory: $ mkdir test $ for i in {1..1000}; do cp x.tif test/$i.tif; done And run this Python program on them: $ time ./try255.py x.tif[squash,compression=ccittfax4,strip,bigtif] test/* real 1m59.924s user 4m5.388s sys 0m8.936s It completes in just under two minutes on this laptop, and needs about 7gb of RAM to run. It would need about the same amount of memory for a full-colour RGB image, I was just keen to keep disc usage down. If you wanted to handle transparency, or if you wanted mixed CMYK and RGB images, you’d need to do some more work to convert them all into the same colourspace before inserting them. #!/usr/bin/env python import sys import random import pyvips # this makes a 8-bit, mono image of 100,000 x 100,000 pixels, each pixel zero im = pyvips.Image.black(100000, 100000) for filename in sys.argv[2:]: tile = pyvips.Image.new_from_file(filename, access='sequential') im = im.insert(tile, random.randint(0, im.width - tile.width), random.randint(0, im.height - tile.height)) im.write_to_file(sys.argv[1]) libvips-8.9.1/doc/How-it-opens-files.md000066400000000000000000000114751361153320700176720ustar00rootroot00000000000000 Opening files 3 libvips Opening How libvips opens files libvips now has at least four different ways of opening image files, each best for different file types, file sizes and image use cases. libvips tries hard to pick the best strategy in each case and mostly you don't need to know what it is doing behind the scenes, except unfortunately when you do. This page tries to explain what the different strategies are and when each is used. If you are running into unexpected memory, disc or CPU use, this might be helpful. `vips_image_new_from_file()` has the official documentation. # Direct access This is the fastest and simplest one. The file is mapped directly into the process's address space and can be read with ordinary pointer access. Small files are completely mapped; large files are mapped in a series of small windows that are shared and which scroll about as pixels are read. Files which are accessed like this can be read by many threads at once, making them especially quick. They also interact well with the computer's operating system: your OS will use spare memory to cache recently used chunks of the file. For this to be possible, the file format needs to be a simple dump of a memory array. libvips supports direct access for vips, 8-bit binary ppm/pbm/pnm, analyse and raw. libvips has a special direct write mode where pixels can be written directly to the file image. This is used for the [draw operators](libvips-draw.html). # Random access via load library Some image file formats have libraries which allow true random access to image pixels. For example, libtiff lets you read any tile out of a tiled tiff image very quickly. Because the libraries allow true random access, libvips can simply hook the image load library up to the input of the operation pipeline. These libraries are generally single-threaded, so only one thread may read at once, making them slower than simple direct access. Additionally, tiles are often compressed, meaning that each time a tile is fetched it must be decompressed. libvips keeps a cache of recently-decompressed tiles to try to avoid repeatedly decompressing the same tile. libvips can load tiled tiff, tiled OpenEXR, FITS and OpenSlide images in this manner. # Full decompression Many image load libraries do not support random access. In order to use images of this type as inputs to pipelines, libvips has to convert them to a random access format first. For small images (less than 100mb when decompressed), libvips allocates a large area of memory and decompresses the entire image to that. It then uses that memory buffer of decompressed pixels to feed the pipeline. For large images, libvips decompresses to a temporary file on disc, then loads that temporary file in direct access mode (see above). Note that on open libvips just reads the image header and is quick: the image decompress happens on the first pixel access. You can control this process with environment variables, command-line flags and API calls as you choose, see vips_image_new_from_file(). They let you set the threshold at which libvips switches between memory and disc and where on disc the temporary files are held. This is the slowest and most memory-hungry way to read files, but it's unavoidable for many file formats. Unless you can use the next one! # Sequential access This a fairly recent addition to libvips and is a hybrid of the previous two. Imagine how this command might be executed: ``` $ vips flip fred.jpg jim.jpg vertical ``` meaning, read `fred.jpg`, flip it up-down, and write as `jim.jpg`. In order to write `jim.jpg` top-to-bottom, it'll have to read `fred.jpg` bottom-to-top. Unfortunately libjpeg only supports top-to-bottom reading and writing, so libvips must convert `fred.jpg` to a random access format before it can run the flip operation. However many useful operations do not require true random access.  For example: ``` $ vips shrink fred.png jim.png 10 10 ``` meaning shrink `fred.png` by a factor of 10 in both axes and write as `jim.png`. You can imagine this operation running without needing `fred.png` to be completely decompressed first. You just read 10 lines from `fred.png` for every one line you write to `jim.png`. To help in this case, libvips has a hint you can give to loaders to say "I will only need pixels from this image in top-to-bottom order". With this hint set, libvips will hook up the pipeline of operations directly to the read-a-line interface provided by the image library, and add a small cache of the most recent 100 or so lines. This is done automatically in command-line operation. In programs, you need to set `access` to #VIPS_ACCESS_SEQUENTIAL in calls to functions like vips_image_new_from_file(). libvips-8.9.1/doc/How-it-opens-files.xml000066400000000000000000000140451361153320700200660ustar00rootroot00000000000000 Opening files 3 libvips Opening How libvips opens files libvips now has at least four different ways of opening image files, each best for different file types, file sizes and image use cases. libvips tries hard to pick the best strategy in each case and mostly you don’t need to know what it is doing behind the scenes, except unfortunately when you do. This page tries to explain what the different strategies are and when each is used. If you are running into unexpected memory, disc or CPU use, this might be helpful. vips_image_new_from_file() has the official documentation. Direct access This is the fastest and simplest one. The file is mapped directly into the process’s address space and can be read with ordinary pointer access. Small files are completely mapped; large files are mapped in a series of small windows that are shared and which scroll about as pixels are read. Files which are accessed like this can be read by many threads at once, making them especially quick. They also interact well with the computer’s operating system: your OS will use spare memory to cache recently used chunks of the file. For this to be possible, the file format needs to be a simple dump of a memory array. libvips supports direct access for vips, 8-bit binary ppm/pbm/pnm, analyse and raw. libvips has a special direct write mode where pixels can be written directly to the file image. This is used for the draw operators. Random access via load library Some image file formats have libraries which allow true random access to image pixels. For example, libtiff lets you read any tile out of a tiled tiff image very quickly. Because the libraries allow true random access, libvips can simply hook the image load library up to the input of the operation pipeline. These libraries are generally single-threaded, so only one thread may read at once, making them slower than simple direct access. Additionally, tiles are often compressed, meaning that each time a tile is fetched it must be decompressed. libvips keeps a cache of recently-decompressed tiles to try to avoid repeatedly decompressing the same tile. libvips can load tiled tiff, tiled OpenEXR, FITS and OpenSlide images in this manner. Full decompression Many image load libraries do not support random access. In order to use images of this type as inputs to pipelines, libvips has to convert them to a random access format first. For small images (less than 100mb when decompressed), libvips allocates a large area of memory and decompresses the entire image to that. It then uses that memory buffer of decompressed pixels to feed the pipeline. For large images, libvips decompresses to a temporary file on disc, then loads that temporary file in direct access mode (see above). Note that on open libvips just reads the image header and is quick: the image decompress happens on the first pixel access. You can control this process with environment variables, command-line flags and API calls as you choose, see vips_image_new_from_file(). They let you set the threshold at which libvips switches between memory and disc and where on disc the temporary files are held. This is the slowest and most memory-hungry way to read files, but it’s unavoidable for many file formats. Unless you can use the next one! Sequential access This a fairly recent addition to libvips and is a hybrid of the previous two. Imagine how this command might be executed: $ vips flip fred.jpg jim.jpg vertical meaning, read fred.jpg, flip it up-down, and write as jim.jpg. In order to write jim.jpg top-to-bottom, it’ll have to read fred.jpg bottom-to-top. Unfortunately libjpeg only supports top-to-bottom reading and writing, so libvips must convert fred.jpg to a random access format before it can run the flip operation. However many useful operations do not require true random access.  For example: $ vips shrink fred.png jim.png 10 10 meaning shrink fred.png by a factor of 10 in both axes and write as jim.png. You can imagine this operation running without needing fred.png to be completely decompressed first. You just read 10 lines from fred.png for every one line you write to jim.png. To help in this case, libvips has a hint you can give to loaders to say I will only need pixels from this image in top-to-bottom order. With this hint set, libvips will hook up the pipeline of operations directly to the read-a-line interface provided by the image library, and add a small cache of the most recent 100 or so lines. This is done automatically in command-line operation. In programs, you need to set access to #VIPS_ACCESS_SEQUENTIAL in calls to functions like vips_image_new_from_file(). libvips-8.9.1/doc/How-it-works.md000066400000000000000000000324441361153320700166120ustar00rootroot00000000000000 How libvips works 3 libvips Internals A high-level technical overview of libvips's evaluation system Compared to most image processing libraries, VIPS needs little RAM and runs quickly, especially on machines with more than one CPU. VIPS achieves this improvement by only keeping the pixels currently being processed in RAM and by having an efficient, threaded image IO system. This page explains how these features are implemented. **Images** VIPS images have three dimensions: width, height and bands. Bands usually (though not always) represent colour. These three dimensions can be any size up to 2 ** 31 elements. Every band element in an image has to have the same format. A format is an 8-, 16- or 32-bit int, signed or unsigned, 32- or 64-bit float, and 64- or 128-bit complex. **Regions** An image can be very large, much larger than the available memory, so you can't just access pixels with a pointer \*. Instead, you read pixels from an image with a region. This is a rectangular sub-area of an image. In C, the API looks like: ```c VipsImage *image = vips_image_new_from_file( filename, NULL ); VipsRegion *region = vips_region_new( image ); // ask for a 100x100 pixel region at 0x0 (top left) VipsRect r = { left: 0, top: 0, width: 100, height: 100 }; if( vips_region_prepare( region, &r ) ) vips_error( ... ); // get a pointer to the pixel at x, y, where x, y must // be within the region // as long as you stay within the valid area for the region, // you can address pixels with regular pointer arithmetic // compile with -DDEBUG and the macro will check bounds for you // add VIPS_REGION_LSKIP() to move down a line VipsPel *pixel = VIPS_REGION_ADDR( region, x, y ); // you can call vips_region_prepare() many times // everything in libvips is a GObject ... when you're done, // just free with g_object_unref( region ); ``` The action that `vips_region_prepare()` takes varies with the type of image. If the image is a file on disc, for example, then VIPS will arrange for a section of the file to be read in. (\* there is an image access mode where you can just use a pointer, but it's rarely used) **Partial images** A partial image is one where, instead of storing a value for each pixel, VIPS stores a function which can make any rectangular area of pixels on demand. If you use `vips_region_prepare()` on a region created on a partial image, VIPS will allocate enough memory to hold the pixels you asked for and use the stored function to calculate values for just those pixels \*. The stored function comes in three parts: a start function, a generate function and a stop function. The start function creates a state, the generate function uses the state plus a requested area to calculate pixel values and the stop function frees the state again. Breaking the stored function into three parts is good for SMP scaling: resource allocation and synchronisation mostly happens in start functions, so generate functions can run without having to talk to each other. VIPS makes a set of guarantees about parallelism that make this simple to program. Start and stop functions are mutually exclusive and a state is never used by more than one generate. In other words, a start / generate / generate / stop sequence works like a thread. ![](Sequence.png) (\* in fact VIPS keeps a cache of calculated pixel buffers and will return a pointer to a previously-calculated buffer if it can) **Operations** VIPS operations read input images and write output images, performing some transformation on the pixels. When an operation writes to an image the action it takes depends upon the image type. For example, if the image is a file on disc then VIPS will start a data sink to stream pixels to the file, or if the image is a partial one then it will just attach start / generate / stop functions. Like most threaded image processing systems, all VIPS operations have to be free of side-effects. In other words, operations cannot modify images, they can only create new images. This could result in a lot of copying if an operation is only making a small change to a large image so VIPS has a set of mechanisms to copy image areas by just adjusting pointers. Most of the time no actual copying is necessary and you can perform operations on large images at low cost. **Run-time code generation** VIPS uses [Orc](http://code.entropywave.com/orc/), a run-time compiler, to generate code for some operations. For example, to compute a convolution on an 8-bit image, VIPS will examine the convolution matrix and the source image and generate a tiny program to calculate the convolution. This program is then "compiled" to the vector instruction set for your CPU, for example SSE3 on most x86 processors. Run-time vector code generation typically speeds operations up by a factor of three or four. **Joining operations together** The region create / prepare / prepare / free calls you use to get pixels from an image are an exact parallel to the start / generate / generate / stop calls that images use to create pixels. In fact, they are the same: a region on a partial image holds the state created by that image for the generate function that will fill the region with pixels. ![](Combine.png) VIPS joins image processing operations together by linking the output of one operation (the start / generate / stop sequence) to the input of the next (the region it uses to get pixels for processing). This link is a single function call, and very fast. Additionally, because of the the split between allocation and processing, once a pipeline of operations has been set up, VIPS is able to run without allocating and freeing memory. This graph (generated by `vipsprofile`, the vips profiler) shows memory use over time for a vips pipeline running on a large image. The bottom trace shows total memory, the upper traces show threads calculating useful results (green), threads blocked on synchronisation (red) and memory allocations (white ticks). ![](Memtrace.png) Because the intermediate image is just a small region in memory, a pipeline of operations running together needs very little RAM. In fact, intermediates are small enough that they can fit in L2 cache on most machines, so an entire pipeline can run without touching main memory. And finally, because each thread runs a very cheap copy of just the writeable state of the entire pipeline, threads can run with few locks. VIPS needs just four lock operations per output tile, regardless of the pipeline length or complexity. **Data sources** VIPS has data sources which can supply pixels for processing from a variety of sources. VIPS can stream images from files in VIPS native format, from tiled TIFF files, from binary PPM/PGM/PBM/PFM, from Radiance (HDR) files, from FITS images and from tiled OpenEXR images. VIPS will automatically unpack other formats to temporary disc files for you but this can obviously generate a lot of disc traffic. It also has a special sequential mode for streaming operations on non-random-access formats. Another section in these docs explains [how libvips opens a file](How-it-opens-files.md.html). One of the sources uses the [ImageMagick](http://www.imagemagick.org) (or optionally [GraphicsMagick](http://www.graphicsmagick.org) library, so VIPS can read any image format that these libraries can read. VIPS images are held on disc as a 64-byte header containing basic image information like width, height, bands and format, then the image data as a single large block of pixels, left-to-right and top-to-bottom, then an XML extension block holding all the image metadata, such as ICC profiles and EXIF blocks. When reading from a large VIPS image (or any other format with the same structure on disc, such as binary PPM), VIPS keeps a set of small rolling windows into the file, some small number of scanlines in size. As pixels are demanded by different threads VIPS will move these windows up and down the file. As a result, VIPS can process images much larger than RAM, even on 32-bit machines. **Data sinks** In a demand-driven system, something has to do the demanding. VIPS has a variety of data sinks that you can use to pull image data though a pipeline in various situations. There are sinks that will build a complete image in memory, sinks to draw to a display, sinks to loop over an image (useful for statistical operations, for example) and sinks to stream an image to disc. The disc sink looks something like this: ![](Sink.png) The sink keeps two buffers\*, each as wide as the image. It starts threads as rapidly as it can up to the concurrency limit, filling each buffer with tiles\*\* of calculated pixels, each thread calculating one tile at once. A separate background thread watches each buffer and, as soon as the last tile in a buffer finishes, writes that complete set of scanlines to disc using whatever image write library is appropriate. VIPS can write with libjpeg, libtiff, libpng and others. It then wipes the buffer and repositions it further down the image, ready for the next set of tiles to stream in. These features in combination mean that, once a pipeline of image processing operations has been built, VIPS can run almost lock-free. This is very important for SMP scaling: you don't want the synchronization overhead to scale with either the number of threads or the complexity of the pipeline of operations being performed. As a result, VIPS scales almost linearly with increasing numbers of threads: ![](Vips-smp.png) Number of CPUs is on the horizontal axis, speedup is on the vertical axis. Taken from the [[Benchmarks]] page. (\* there can actually be more than one, it allocate enough buffers to ensure that there are at least two tiles for every thread) (\*\* tiles can be any shape and size, VIPS has a tile hint system that operations use to tell sinks what tile geometry they prefer) **Operation cache** Because VIPS operations are free of side-effects\*, you can cache them. Every time you call an operation, VIPS searches the cache for a previous call to the same operation with the same arguments. If it finds a match, you get the previous result again. This can give a huge speedup. By default, VIPS caches the last 1,000 operation calls. You can also control the cache size by memory use or by files opened. (\* Some vips operations DO have side effects, for example, `vips_draw_circle()` will draw a circle on an image. These operations emit an "invalidate" signal on the image they are called on and this signal makes all downstream operations and caches drop their contents.) **Operation database and APIs** VIPS has around 300 image processing operations written in this style. Each operation is a GObject class. You can use the standard GObject calls to walk the class hierarchy and discover operations, and libvips adds a small amount of extra introspection metadata to handle things like optional arguments. The [C API](using-from-c.html) is a set of simple wrappers which create class instances for you. The [C++ API](using-from-cpp.html) is a little fancier and adds things like automatic object lifetime management. The [command-line interface](using-cli.html) uses introspection to run any vips operation in the class hierarchy. There are bindings for [many other languages](https://libvips.github.io/libvips/) on many platforms. Most of these bindings use the introspection system to generate the binding at run-time. **Snip** The VIPS GUI, nip2, has its own scripting language called Snip. Snip is a lazy, higher-order, purely functional, object oriented language. Almost all of nip2's menus are implemented in it, and nip2 workspaces are Snip programs. VIPS operations listed in the operation database appear as Snip functions. For example, `abs` can be used from Snip as: ``` // absolute value of image b a = vips_call "abs" [b] []; ``` However, `abs` won't work on anything except the primitive vips image type. It can't be used on any class, or list or number. Definitions in `_stdenv.dev` wrap each VIPS operation as a higher level Snip operation. For example: ``` abs x = oo_unary_function abs_op x, is_class x = vips_call "abs" [x] [], is_image x = abs_cmplx x, is_complex x = abs_num x, is_real x = abs_list x, is_real_list x = abs_list (map abs_list x), is_matrix x = error (_ "bad arguments to " ++ "abs") { abs_op = Operator "abs" abs Operator_type.COMPOUND false; abs_list l = (sum (map square l)) ** 0.5; abs_num n = n, n >= 0 = -n; abs_cmplx c = ((re c)**2 + (im c)**2) ** 0.5; } ``` This defines the behaviour of `abs` for the base Snip types (number, list, matrix, image and so on), then classes will use that to define operator behaviour on higher-level objects. Now you can use: ``` // absolute value of anything a = abs b; ``` and you ought to get sane behaviour for any object, including things like the `Matrix` class. You can write Snip classes which present functions to the user as menu items. For example, `Math.def` has this: ``` Math_arithmetic_item = class Menupullright "_Arithmetic" "basic arithmetic for objects" { Absolute_value_item = class Menuaction "A_bsolute Value" "absolute value of x" { action x = map_unary abs x; } } ``` Now the user can select an object and click `Math / Abs` to find the absolute value of that object. libvips-8.9.1/doc/How-it-works.xml000066400000000000000000000376311361153320700170150ustar00rootroot00000000000000 How libvips works 3 libvips Internals A high-level technical overview of libvips’s evaluation system Compared to most image processing libraries, VIPS needs little RAM and runs quickly, especially on machines with more than one CPU. VIPS achieves this improvement by only keeping the pixels currently being processed in RAM and by having an efficient, threaded image IO system. This page explains how these features are implemented. Images VIPS images have three dimensions: width, height and bands. Bands usually (though not always) represent colour. These three dimensions can be any size up to 2 ** 31 elements. Every band element in an image has to have the same format. A format is an 8-, 16- or 32-bit int, signed or unsigned, 32- or 64-bit float, and 64- or 128-bit complex. Regions An image can be very large, much larger than the available memory, so you can’t just access pixels with a pointer *. Instead, you read pixels from an image with a region. This is a rectangular sub-area of an image. In C, the API looks like: VipsImage *image = vips_image_new_from_file( filename, NULL ); VipsRegion *region = vips_region_new( image ); // ask for a 100x100 pixel region at 0x0 (top left) VipsRect r = { left: 0, top: 0, width: 100, height: 100 }; if( vips_region_prepare( region, &r ) ) vips_error( ... ); // get a pointer to the pixel at x, y, where x, y must // be within the region // as long as you stay within the valid area for the region, // you can address pixels with regular pointer arithmetic // compile with -DDEBUG and the macro will check bounds for you // add VIPS_REGION_LSKIP() to move down a line VipsPel *pixel = VIPS_REGION_ADDR( region, x, y ); // you can call vips_region_prepare() many times // everything in libvips is a GObject ... when you're done, // just free with g_object_unref( region ); The action that vips_region_prepare() takes varies with the type of image. If the image is a file on disc, for example, then VIPS will arrange for a section of the file to be read in. (* there is an image access mode where you can just use a pointer, but it’s rarely used) Partial images A partial image is one where, instead of storing a value for each pixel, VIPS stores a function which can make any rectangular area of pixels on demand. If you use vips_region_prepare() on a region created on a partial image, VIPS will allocate enough memory to hold the pixels you asked for and use the stored function to calculate values for just those pixels *. The stored function comes in three parts: a start function, a generate function and a stop function. The start function creates a state, the generate function uses the state plus a requested area to calculate pixel values and the stop function frees the state again. Breaking the stored function into three parts is good for SMP scaling: resource allocation and synchronisation mostly happens in start functions, so generate functions can run without having to talk to each other. VIPS makes a set of guarantees about parallelism that make this simple to program. Start and stop functions are mutually exclusive and a state is never used by more than one generate. In other words, a start / generate / generate / stop sequence works like a thread. (* in fact VIPS keeps a cache of calculated pixel buffers and will return a pointer to a previously-calculated buffer if it can) Operations VIPS operations read input images and write output images, performing some transformation on the pixels. When an operation writes to an image the action it takes depends upon the image type. For example, if the image is a file on disc then VIPS will start a data sink to stream pixels to the file, or if the image is a partial one then it will just attach start / generate / stop functions. Like most threaded image processing systems, all VIPS operations have to be free of side-effects. In other words, operations cannot modify images, they can only create new images. This could result in a lot of copying if an operation is only making a small change to a large image so VIPS has a set of mechanisms to copy image areas by just adjusting pointers. Most of the time no actual copying is necessary and you can perform operations on large images at low cost. Run-time code generation VIPS uses Orc, a run-time compiler, to generate code for some operations. For example, to compute a convolution on an 8-bit image, VIPS will examine the convolution matrix and the source image and generate a tiny program to calculate the convolution. This program is then compiled to the vector instruction set for your CPU, for example SSE3 on most x86 processors. Run-time vector code generation typically speeds operations up by a factor of three or four. Joining operations together The region create / prepare / prepare / free calls you use to get pixels from an image are an exact parallel to the start / generate / generate / stop calls that images use to create pixels. In fact, they are the same: a region on a partial image holds the state created by that image for the generate function that will fill the region with pixels. VIPS joins image processing operations together by linking the output of one operation (the start / generate / stop sequence) to the input of the next (the region it uses to get pixels for processing). This link is a single function call, and very fast. Additionally, because of the the split between allocation and processing, once a pipeline of operations has been set up, VIPS is able to run without allocating and freeing memory. This graph (generated by vipsprofile, the vips profiler) shows memory use over time for a vips pipeline running on a large image. The bottom trace shows total memory, the upper traces show threads calculating useful results (green), threads blocked on synchronisation (red) and memory allocations (white ticks). Because the intermediate image is just a small region in memory, a pipeline of operations running together needs very little RAM. In fact, intermediates are small enough that they can fit in L2 cache on most machines, so an entire pipeline can run without touching main memory. And finally, because each thread runs a very cheap copy of just the writeable state of the entire pipeline, threads can run with few locks. VIPS needs just four lock operations per output tile, regardless of the pipeline length or complexity. Data sources VIPS has data sources which can supply pixels for processing from a variety of sources. VIPS can stream images from files in VIPS native format, from tiled TIFF files, from binary PPM/PGM/PBM/PFM, from Radiance (HDR) files, from FITS images and from tiled OpenEXR images. VIPS will automatically unpack other formats to temporary disc files for you but this can obviously generate a lot of disc traffic. It also has a special sequential mode for streaming operations on non-random-access formats. Another section in these docs explains how libvips opens a file. One of the sources uses the ImageMagick (or optionally GraphicsMagick library, so VIPS can read any image format that these libraries can read. VIPS images are held on disc as a 64-byte header containing basic image information like width, height, bands and format, then the image data as a single large block of pixels, left-to-right and top-to-bottom, then an XML extension block holding all the image metadata, such as ICC profiles and EXIF blocks. When reading from a large VIPS image (or any other format with the same structure on disc, such as binary PPM), VIPS keeps a set of small rolling windows into the file, some small number of scanlines in size. As pixels are demanded by different threads VIPS will move these windows up and down the file. As a result, VIPS can process images much larger than RAM, even on 32-bit machines. Data sinks In a demand-driven system, something has to do the demanding. VIPS has a variety of data sinks that you can use to pull image data though a pipeline in various situations. There are sinks that will build a complete image in memory, sinks to draw to a display, sinks to loop over an image (useful for statistical operations, for example) and sinks to stream an image to disc. The disc sink looks something like this: The sink keeps two buffers*, each as wide as the image. It starts threads as rapidly as it can up to the concurrency limit, filling each buffer with tiles** of calculated pixels, each thread calculating one tile at once. A separate background thread watches each buffer and, as soon as the last tile in a buffer finishes, writes that complete set of scanlines to disc using whatever image write library is appropriate. VIPS can write with libjpeg, libtiff, libpng and others. It then wipes the buffer and repositions it further down the image, ready for the next set of tiles to stream in. These features in combination mean that, once a pipeline of image processing operations has been built, VIPS can run almost lock-free. This is very important for SMP scaling: you don’t want the synchronization overhead to scale with either the number of threads or the complexity of the pipeline of operations being performed. As a result, VIPS scales almost linearly with increasing numbers of threads: Number of CPUs is on the horizontal axis, speedup is on the vertical axis. Taken from the [[Benchmarks]] page. (* there can actually be more than one, it allocate enough buffers to ensure that there are at least two tiles for every thread) (** tiles can be any shape and size, VIPS has a tile hint system that operations use to tell sinks what tile geometry they prefer) Operation cache Because VIPS operations are free of side-effects*, you can cache them. Every time you call an operation, VIPS searches the cache for a previous call to the same operation with the same arguments. If it finds a match, you get the previous result again. This can give a huge speedup. By default, VIPS caches the last 1,000 operation calls. You can also control the cache size by memory use or by files opened. (* Some vips operations DO have side effects, for example, vips_draw_circle() will draw a circle on an image. These operations emit an invalidate signal on the image they are called on and this signal makes all downstream operations and caches drop their contents.) Operation database and APIs VIPS has around 300 image processing operations written in this style. Each operation is a GObject class. You can use the standard GObject calls to walk the class hierarchy and discover operations, and libvips adds a small amount of extra introspection metadata to handle things like optional arguments. The C API is a set of simple wrappers which create class instances for you. The C++ API is a little fancier and adds things like automatic object lifetime management. The command-line interface uses introspection to run any vips operation in the class hierarchy. There are bindings for many other languages on many platforms. Most of these bindings use the introspection system to generate the binding at run-time. Snip The VIPS GUI, nip2, has its own scripting language called Snip. Snip is a lazy, higher-order, purely functional, object oriented language. Almost all of nip2’s menus are implemented in it, and nip2 workspaces are Snip programs. VIPS operations listed in the operation database appear as Snip functions. For example, abs can be used from Snip as: // absolute value of image b a = vips_call "abs" [b] []; However, abs won’t work on anything except the primitive vips image type. It can’t be used on any class, or list or number. Definitions in _stdenv.dev wrap each VIPS operation as a higher level Snip operation. For example: abs x = oo_unary_function abs_op x, is_class x = vips_call "abs" [x] [], is_image x = abs_cmplx x, is_complex x = abs_num x, is_real x = abs_list x, is_real_list x = abs_list (map abs_list x), is_matrix x = error (_ "bad arguments to " ++ "abs") { abs_op = Operator "abs" abs Operator_type.COMPOUND false; abs_list l = (sum (map square l)) ** 0.5; abs_num n = n, n >= 0 = -n; abs_cmplx c = ((re c)**2 + (im c)**2) ** 0.5; } This defines the behaviour of abs for the base Snip types (number, list, matrix, image and so on), then classes will use that to define operator behaviour on higher-level objects. Now you can use: // absolute value of anything a = abs b; and you ought to get sane behaviour for any object, including things like the Matrix class. You can write Snip classes which present functions to the user as menu items. For example, Math.def has this: Math_arithmetic_item = class Menupullright "_Arithmetic" "basic arithmetic for objects" { Absolute_value_item = class Menuaction "A_bsolute Value" "absolute value of x" { action x = map_unary abs x; } } Now the user can select an object and click Math / Abs to find the absolute value of that object. libvips-8.9.1/doc/Makefile.am000066400000000000000000000135031361153320700160050ustar00rootroot00000000000000## Process this file with automake to produce Makefile.in # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE=libvips # Uncomment for versioned docs and specify the version of the module, e.g. '2'. #DOC_MODULE_VERSION=2 # The top-level XML file (SGML in the past). You can change this if you want to. DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR=$(top_srcdir)/libvips # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS= # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS=--rebuild-types # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS=--xml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS= # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS= # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS= # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB=$(top_srcdir)/libvips/include/vips/*.h CFILE_GLOB=$(top_srcdir)/libvips/*/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES= # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_VIPS_INCLUDE = \ almostdeprecated.h \ cimg_funcs.h \ deprecated.h \ vips7compat.h \ dispatch.h \ enumtypes.h \ internal.h \ thread.h \ intl.h \ format.h \ mask.h \ private.h \ video.h # ignore all .h files in libvips/*, these are internal IGNORE_VIPS_C = \ binary.h \ hough.h \ nary.h \ parithmetic.h \ statistic.h \ unaryconst.h \ unary.h \ CImg.h \ pcolour.h \ bandary.h \ pconversion.h \ correlation.h \ pconvolution.h \ pcreate.h \ pmask.h \ point.h \ drawink.h \ pdraw.h \ analyze2vips.h \ csv.h \ dbh.h \ fits.h \ jpeg.h \ magick.h \ matlab.h \ openexr2vips.h \ openslide2vips.h \ ppm.h \ radiance.h \ tiff.h \ vipsjpeg.h \ vipspng.h \ webp.h \ pfreqfilt.h \ hist_unary.h \ phistogram.h \ base64.h \ sink.h \ vipsmarshal.h \ pmorphology.h \ global_balance.h \ pmosaicing.h \ presample.h \ templates.h IGNORE_HFILES = $(IGNORE_VIPS_INCLUDE) $(IGNORE_VIPS_C) # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES = \ $(top_srcdir)/doc/images/owl.jpg \ $(top_srcdir)/doc/images/tn_owl.jpg \ $(top_srcdir)/doc/images/interconvert.png \ $(top_srcdir)/doc/images/Combine.png \ $(top_srcdir)/doc/images/Memtrace.png \ $(top_srcdir)/doc/images/Sequence.png \ $(top_srcdir)/doc/images/Sink.png \ $(top_srcdir)/doc/images/Vips-smp.png # we have some files in markdown ... convert to docbook for gtk-doc # pandoc makes sect1 headers, we want refsect3 for gtk-doc .md.xml: pandoc -s --template="$(realpath pandoc-docbook-template.docbook)" --wrap=none -V title="$<" -f markdown+smart -t docbook-smart -o $@ $< sed -e s/sect1/refsect3/g < $@ > x && mv x $@ # Our markdown source files markdown_content_files = \ How-it-works.md \ Using-vipsthumbnail.md \ How-it-opens-files.md \ Examples.md \ Cite.md \ binding.md \ Making-image-pyramids.md # converted to xml in this dir by pandoc markdown_content_files_docbook = $(markdown_content_files:.md=.xml) # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files = \ using-command-line.xml \ using-C.xml \ using-threads.xml \ using-cpp.xml \ extending.xml \ function-list.xml \ file-format.xml \ ${markdown_content_files_docbook} # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files = \ using-command-line.xml \ using-C.xml \ using-threads.xml \ using-cpp.xml \ extending.xml \ function-list.xml \ file-format.xml \ ${markdown_content_files_docbook} # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS = @VIPS_CFLAGS@ @VIPS_INCLUDES@ GTKDOC_LIBS = @VIPS_CFLAGS@ ${top_builddir}/libvips/libvips.la @VIPS_LIBS@ # This includes the standard gtk-doc make rules, copied by gtkdocize. include gtk-doc.make # Other files to distribute # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST += \ ${markdown_content_files} \ images \ gen-function-list.py # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt DISTCLEANFILES = libvips.types # Comment this out if you want 'make check' to test you doc status # and run some sanity checks if ENABLE_GTK_DOC TESTS_ENVIRONMENT = \ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) #TESTS = $(GTKDOC_CHECK) endif -include $(top_srcdir)/git.mk libvips-8.9.1/doc/Making-image-pyramids.md000066400000000000000000000150761361153320700204160ustar00rootroot00000000000000 Image pyramids 3 libvips Pyramids How to use libvips to make image pyramids libvips includes `vips_dzsave()`, an operation that can build image pyramids compatible with [DeepZoom](http://en.wikipedia.org/wiki/Deep_Zoom), Zoomify and [Google Maps](https://developers.google.com/maps/) image viewers. It's fast and can generate pyramids for large images using only a small amount of memory. The TIFF writer, `vips_tiffsave()` can also build tiled pyramidal TIFF images, but that's very simple to use. This page concentrates on the DeepZoom builder. Run dzsave with no arguments to see a summary: ``` $ vips dzsave save image to deepzoom file usage: dzsave in filename where: in - Image to save, input VipsImage filename - Filename to save to, input gchararray optional arguments: basename - Base name to save to, input gchararray layout - Directory layout, input VipsForeignDzLayout default: dz allowed: dz, zoomify, google suffix - Filename suffix for tiles, input gchararray overlap - Tile overlap in pixels, input gint default: 1 min: 0, max: 8192 tile-size - Tile size in pixels, input gint default: 254 min: 1, max: 8192 centre - Center image in tile, input gboolean default: false depth - Pyramid depth, input VipsForeignDzDepth default: onepixel allowed: onepixel, onetile, one angle - Rotate image during save, input VipsAngle default: d0 allowed: d0, d90, d180, d270 container - Pyramid container type, input VipsForeignDzContainer default: fs allowed: fs, zip properties - Write a properties file to the output directory, input gboolean default: false compression - ZIP deflate compression level, input gint default: 0 min: -1, max: 9 strip - Strip all metadata from image, input gboolean default: false background - Background value, input VipsArrayDouble operation flags: sequential nocache ``` You can also call `vips_dzsave()` from any language with a libvips binding, or by using `.dz` or `.szi` as an output file suffix. # Writing [DeepZoom](http://en.wikipedia.org/wiki/Deep_Zoom) pyramids The `--layout` option sets the basic mode of operation. With no `--layout`, dzsave writes DeepZoom pyramids. For example: ``` $ vips dzsave huge.tif mydz ``` This will create a directory called `mydz_files` containing the image tiles, and write a file called `mydz.dzi` containing the image metadata.  You can use the `--suffix` option to control how tiles are written. For example: ``` $ vips dzsave huge.tif mydz --suffix .jpg[Q=90] ``` will write JPEG tiles with the quality factor set to 90. You can set any format write options you like, see the API docs for `vips_jpegsave()` for details. # Writing Zoomify pyramids Use `--layout zoomify` to put dzsave into zoomify mode. For example: ``` $ vips dzsave huge.tif myzoom --layout zoomify ``` This will create a directory called `myzoom` containing a file called `ImageProperties.xml` with the image metadata in, and a series of directories called `TileGroupn`, each containing 256 image tiles. As with DeepZoom, you can use `--suffix` to set jpeg quality. # Writing [Google Maps](https://developers.google.com/maps/) pyramids Use `--layout google` to write Google maps-style pyramids. These are compatible with [leaflet](http://leafletjs.com/). For example: ``` $ vips dzsave wtc.tif gmapdir --layout google ``` Will create a directory called `gmapdir` containing `blank.png`, the file to display for blank tiles, and a set of numbered directories, one for each zoom level. The pyramid can be sparse (blank tiles are not written). As with DeepZoom, you can use `--suffix` to set jpeg quality. Use `--background` to set the background colour. This is the colour displayed for bits of the pyramid not in the image (image edges, for example). By default, the image background is white. Use `--centre` to add a border to the image large enough to centre the image within the lowest resolution tile. By default, images are not centred. For example: ``` $ vips dzsave wtc.tif gmapdir --layout google --background 0 --centre ``` # Other options You can use `--tile-size` and `--overlap` to control how large the tiles are and how they overlap (obviously). They default to the correct values for the selected layout. You can use `--depth` to control how deep the pyramid should be. Possible values are `onepixel`, `onetile` and `one`. `onepixel` means the image is shrunk until it fits within a single pixel. `onetile` means shrink until it fits with a tile. `one` means only write one pyramid layer (the highest resolution one). It defaults to the correct value for the selected layout. `--depth one` is handy for slicing up a large image into tiles (rather than a pyramid). You can use `--angle` to do a 90, 180 or 270 degree rotate of an image during pyramid write. You can use `--container` to set the container type. Normally dzsave will write a tree of directories, but with `--container zip` you'll get a zip file instead. Use .zip as the directory suffix to turn on zip format automatically: ``` $ vips dzsave wtc.tif mypyr.zip ``` to write a zipfile containing the tiles. You can use `.szi` as a suffix to enable zip output as well. Use `--properties` to output an XML file called `vips-properties.xml`. This contains a dump of all the metadata vips has about the image as a set of name-value pairs. It's handy with openslide image sources. # Preprocessing images You can use `.dz` as a filename suffix, meaning send the image to `vips_dzsave()`. This means you can write the output of any vips operation to a pyramid. For example: ``` $ vips extract_area huge.svs mypy.dz[layout=google] 100 100 10000 10000 ``` The arguments to `extract_area` are image-in, image-out, left, top, width, height. So this command will cut out a 10,000 by 10,000 pixel area from near the top-left-hand corner of an Aperio slide image, then build a pyramid in Google layout using just those pixels. If you are working from OpenSlide images, you can use the shrink-on-load feature of many of those formats. For example: ``` $ vips dzsave CMU-1.mrxs[level=1] x ``` Will pull out level 1 (the half-resolution level of an MRXS slide) and make a pyramid from that. # Troubleshooting If you are building vips from source you do need to check the summary at the end of configure carefully. You must have the `libgsf-1-dev` package for `vips_dzsave()` to work. libvips-8.9.1/doc/Making-image-pyramids.xml000066400000000000000000000217061361153320700206130ustar00rootroot00000000000000 Image pyramids 3 libvips Pyramids How to use libvips to make image pyramids libvips includes vips_dzsave(), an operation that can build image pyramids compatible with DeepZoom, Zoomify and Google Maps image viewers. It’s fast and can generate pyramids for large images using only a small amount of memory. The TIFF writer, vips_tiffsave() can also build tiled pyramidal TIFF images, but that’s very simple to use. This page concentrates on the DeepZoom builder. Run dzsave with no arguments to see a summary: $ vips dzsave save image to deepzoom file usage: dzsave in filename where: in - Image to save, input VipsImage filename - Filename to save to, input gchararray optional arguments: basename - Base name to save to, input gchararray layout - Directory layout, input VipsForeignDzLayout default: dz allowed: dz, zoomify, google suffix - Filename suffix for tiles, input gchararray overlap - Tile overlap in pixels, input gint default: 1 min: 0, max: 8192 tile-size - Tile size in pixels, input gint default: 254 min: 1, max: 8192 centre - Center image in tile, input gboolean default: false depth - Pyramid depth, input VipsForeignDzDepth default: onepixel allowed: onepixel, onetile, one angle - Rotate image during save, input VipsAngle default: d0 allowed: d0, d90, d180, d270 container - Pyramid container type, input VipsForeignDzContainer default: fs allowed: fs, zip properties - Write a properties file to the output directory, input gboolean default: false compression - ZIP deflate compression level, input gint default: 0 min: -1, max: 9 strip - Strip all metadata from image, input gboolean default: false background - Background value, input VipsArrayDouble operation flags: sequential nocache You can also call vips_dzsave() from any language with a libvips binding, or by using .dz or .szi as an output file suffix. Writing <ulink url="http://en.wikipedia.org/wiki/Deep_Zoom">DeepZoom</ulink> pyramids The --layout option sets the basic mode of operation. With no --layout, dzsave writes DeepZoom pyramids. For example: $ vips dzsave huge.tif mydz This will create a directory called mydz_files containing the image tiles, and write a file called mydz.dzi containing the image metadata.  You can use the --suffix option to control how tiles are written. For example: $ vips dzsave huge.tif mydz --suffix .jpg[Q=90] will write JPEG tiles with the quality factor set to 90. You can set any format write options you like, see the API docs for vips_jpegsave() for details. Writing Zoomify pyramids Use --layout zoomify to put dzsave into zoomify mode. For example: $ vips dzsave huge.tif myzoom --layout zoomify This will create a directory called myzoom containing a file called ImageProperties.xml with the image metadata in, and a series of directories called TileGroupn, each containing 256 image tiles. As with DeepZoom, you can use --suffix to set jpeg quality. Writing <ulink url="https://developers.google.com/maps/">Google Maps</ulink> pyramids Use --layout google to write Google maps-style pyramids. These are compatible with leaflet. For example: $ vips dzsave wtc.tif gmapdir --layout google Will create a directory called gmapdir containing blank.png, the file to display for blank tiles, and a set of numbered directories, one for each zoom level. The pyramid can be sparse (blank tiles are not written). As with DeepZoom, you can use --suffix to set jpeg quality. Use --background to set the background colour. This is the colour displayed for bits of the pyramid not in the image (image edges, for example). By default, the image background is white. Use --centre to add a border to the image large enough to centre the image within the lowest resolution tile. By default, images are not centred. For example: $ vips dzsave wtc.tif gmapdir --layout google --background 0 --centre Other options You can use --tile-size and --overlap to control how large the tiles are and how they overlap (obviously). They default to the correct values for the selected layout. You can use --depth to control how deep the pyramid should be. Possible values are onepixel, onetile and one. onepixel means the image is shrunk until it fits within a single pixel. onetile means shrink until it fits with a tile. one means only write one pyramid layer (the highest resolution one). It defaults to the correct value for the selected layout. --depth one is handy for slicing up a large image into tiles (rather than a pyramid). You can use --angle to do a 90, 180 or 270 degree rotate of an image during pyramid write. You can use --container to set the container type. Normally dzsave will write a tree of directories, but with --container zip you’ll get a zip file instead. Use .zip as the directory suffix to turn on zip format automatically: $ vips dzsave wtc.tif mypyr.zip to write a zipfile containing the tiles. You can use .szi as a suffix to enable zip output as well. Use --properties to output an XML file called vips-properties.xml. This contains a dump of all the metadata vips has about the image as a set of name-value pairs. It’s handy with openslide image sources. Preprocessing images You can use .dz as a filename suffix, meaning send the image to vips_dzsave(). This means you can write the output of any vips operation to a pyramid. For example: $ vips extract_area huge.svs mypy.dz[layout=google] 100 100 10000 10000 The arguments to extract_area are image-in, image-out, left, top, width, height. So this command will cut out a 10,000 by 10,000 pixel area from near the top-left-hand corner of an Aperio slide image, then build a pyramid in Google layout using just those pixels. If you are working from OpenSlide images, you can use the shrink-on-load feature of many of those formats. For example: $ vips dzsave CMU-1.mrxs[level=1] x Will pull out level 1 (the half-resolution level of an MRXS slide) and make a pyramid from that. Troubleshooting If you are building vips from source you do need to check the summary at the end of configure carefully. You must have the libgsf-1-dev package for vips_dzsave() to work. libvips-8.9.1/doc/Using-vipsthumbnail.md000066400000000000000000000223211361153320700202410ustar00rootroot00000000000000 Using `vipsthumbnail` 3 libvips `vipsthumbnail` Introduction to `vipsthumbnail`, with examples libvips ships with a handy command-line image thumbnailer, `vipsthumbnail`. This page introduces it, with some examples. The thumbnailing functionality is implemented by `vips_thumbnail()` and `vips_thumbnail_buffer()` (which thumbnails an image held as a string), see the docs for details. You can use these functions from any language with a libvips binding. For example, from PHP you could write: ```php?start_inline=1 $filename = "image.jpg"; $image = Vips\Image::thumbnail($filename, 200, ["height" => 200]); $image->writeToFile("my-thumbnail.jpg"); ``` # libvips options `vipsthumbnail` supports the usual range of vips command-line options. A few of them are useful: `--vips-cache-trace` shows each operation as libvips starts it. It can be handy to see exactly what operations `vipsthumbnail` is running for you. `--vips-leak` turns on the libvips memory leak checker. As well as reporting leaks (hopefully there are none) it also tracks and reports peak memory use. `--vips-progress` runs a progress indicator during computation. It can be useful to see where libvips is looping and how often. `--vips-info` shows a higher level view of the operations that `vipsthumbnail` is running.  # Looping `vipsthumbnail` can process many images in one command. For example: ``` $ vipsthumbnail *.jpg ``` will make a thumbnail for every jpeg in the current directory.  See the [Output directory](#output-directory) section below to see how to change where thumbnails are written. `vipsthumbnail` will process images one after the other. You can get a good speedup by running several `vipsthumbnail`s in parallel, depending on how much load you want to put on your system. For example: ``` $ parallel vipsthumbnail ::: *.jpg ``` # Thumbnail size You can set the bounding box of the generated thumbnail with the `--size` option. For example: ``` $ vipsthumbnail shark.jpg --size 200x100 ``` Use a single number to set a square bounding box. You can omit either number but keep the x to mean resize just based on that axis, for example: ``` $ vipsthumbnail shark.jpg --size 200x ``` Will resize to 200 pixels across, no matter what the height of the input image is. You can append `<` or `>` to mean only resize if the image is smaller or larger than the target. You can append `!` to force a resize to the exact target size, breaking the aspect ratio. # Cropping `vipsthumbnail` normally shrinks images to fit within the box set by `--size`. You can use the `--smartcrop` option to crop to fill the box instead. Excess pixels are trimmed away using the strategy you set. For example: ``` $ vipsthumbnail owl.jpg --smartcrop attention -s 128 ``` Where `owl.jpg` is an off-centre composition: ![](owl.jpg) Gives this result: ![](tn_owl.jpg) First it shrinks the image to get the vertical axis to 128 pixels, then crops down to 128 pixels across using the `attention` strategy. This one searches the image for features which might catch a human eye, see `vips_smartcrop()` for details. # Linear light Shrinking images involves combining many pixels into one. Arithmetic averaging really ought to be in terms of the number of photons, but (for historical reasons) the values stored in image files are usually related to the voltage that should be applied to the electron gun in a CRT display. `vipsthumbnail` has an option to perform image shrinking in linear space, that is, a colourspace where values are proportional to photon numbers. For example: ``` $ vipsthumbnail fred.jpg --linear ``` The downside is that in linear mode, none of the very fast shrink-on-load tricks that `vipsthumbnail` normally uses are possible, since the shrinking is done at encode time, not decode time, and is done in terms of CRT voltage, not photons. This can make linear light thumbnailing of large images extremely slow. For example, for a 10,000 x 10,000 pixel JPEG I see: ``` $ time vipsthumbnail wtc.jpg real 0m0.317s user 0m0.292s sys 0m0.016s $ time vipsthumbnail wtc.jpg --linear real 0m4.660s user 0m4.640s sys 0m0.016s ``` # Output directory You set the thumbnail write parameters with the `-o` option. This is a pattern which the input filename is pasted into to produce the output filename. For example: ``` $ vipsthumbnail fred.jpg jim.tif -o tn_%s.jpg ``` For each of the files to be thumbnailed, `vipsthumbnail` will drop the extension (`.jpg` and `.tif` in this case) and then substitute the name into the `-o` option, replacing the `%s` So this example will write thumbnails to `tn_fred.jpg` and `tn_jim.jpg`. If the pattern given to `-o` is an absolute path, any path components are dropped from the input filenames. This lets you write all of your thumbnails to a specific directory, if you want. For example: ``` $ vipsthumbnail fred.jpg ../jim.tif -o /mythumbs/tn_%s.jpg ``` Now both thumbnails will be written to `/mythumbs`, even though the source images are in different directories. Conversely, if `-o` is set to a relative path, any path component from the input file is prepended. For example: ``` $ vipsthumbnail fred.jpg ../jim.tif -o mythumbs/tn_%s.jpg ``` Now both input files will have thumbnails written to a subdirectory of their current directory. # Output format and options You can use `-o` to specify the thumbnail image format too. For example:  ``` $ vipsthumbnail fred.jpg ../jim.tif -o tn_%s.png ``` Will write thumbnails in PNG format. You can give options to the image write operation as a list of comma-separated arguments in square brackets. For example: ``` $ vipsthumbnail fred.jpg ../jim.tif -o tn_%s.jpg[Q=90,optimize_coding] ``` will write jpeg images with quality 90, and will turn on the libjpeg coding optimizer. Check the image write operations to see all the possible options. For example: ``` $ vips jpegsave save image to jpeg file usage: jpegsave in filename where: in - Image to save, input VipsImage filename - Filename to save to, input gchararray optional arguments: Q - Q factor, input gint default: 75 min: 1, max: 100 profile - ICC profile to embed, input gchararray optimize-coding - Compute optimal Huffman coding tables, input gboolean default: false interlace - Generate an interlaced (progressive) jpeg, input gboolean default: false no-subsample - Disable chroma subsample, input gboolean default: false trellis-quant - Apply trellis quantisation to each 8x8 block, input gboolean default: false overshoot-deringing - Apply overshooting to samples with extreme values, input gboolean default: false optimize-scans - Split the spectrum of DCT coefficients into separate scans, input gboolean default: false quant-table - Use predefined quantization table with given index, input gint default: 0 min: 0, max: 8 strip - Strip all metadata from image, input gboolean default: false background - Background value, input VipsArrayDouble ``` The `strip` option is especially useful. Many image have very large IPCT, ICC or XMP metadata items embedded in them, and removing these can give a large saving. For example: ``` $ vipsthumbnail 42-32157534.jpg $ ls -l tn_42-32157534.jpg -rw-r–r– 1 john john 6682 Nov 12 21:27 tn_42-32157534.jpg ``` `strip` almost halves the size of the thumbnail: ``` $ vipsthumbnail 42-32157534.jpg -o x.jpg[optimize_coding,strip] $ ls -l x.jpg -rw-r–r– 1 john john 3600 Nov 12 21:27 x.jpg ``` # Colour management `vipsthumbnail` will optionally put images through LittleCMS for you. You can use this to move all thumbnails to the same colour space. All web browsers assume that images without an ICC profile are in sRGB colourspace, so if you move your thumbnails to sRGB, you can strip all the embedded profiles. This can save several kb per thumbnail. For example: ``` $ vipsthumbnail shark.jpg $ ls -l tn_shark.jpg -rw-r–r– 1 john john 7295 Nov  9 14:33 tn_shark.jpg ``` Now encode with sRGB and delete any embedded profile: ``` $ vipsthumbnail shark.jpg --eprofile srgb --delete $ ls -l tn_shark.jpg -rw-r–r– 1 john john 4229 Nov  9 14:33 tn_shark.jpg ``` (You can use the filename of any RGB profile. The magic string `srgb` selects a high-quality sRGB profile that's built into libvips.) `tn_shark.jpg` will look identical to a user, but it's almost half the size. You can also specify a fallback input profile to use if the image has no embedded one. This can often happen with CMYK images, producing an error message like: ``` $ vipsthumbnail kgdev.jpg vipsthumbnail: unable to thumbnail kgdev.jpg vips_colourspace: no known route from 'cmyk' to 'srgb' ``` If you supply a CMYK profile, it will be able to convert the image, for example: ``` $ vipsthumbnail kgdev.jpg --iprofile cmyk ``` (As before, the magic string `cmyk` selects a high-quality CMYK profile that's built into libvips, but you can use any CMYK profile you like.) # Final suggestion Putting all this together, I suggest this as a sensible set of options: ``` $ vipsthumbnail fred.jpg \ --size 128 \ -o tn_%s.jpg[optimize_coding,strip] \ --eprofile srgb ``` libvips-8.9.1/doc/Using-vipsthumbnail.xml000066400000000000000000000322741361153320700204510ustar00rootroot00000000000000 Using vipsthumbnail 3 libvips vipsthumbnail Introduction to vipsthumbnail, with examples libvips ships with a handy command-line image thumbnailer, vipsthumbnail. This page introduces it, with some examples. The thumbnailing functionality is implemented by vips_thumbnail() and vips_thumbnail_buffer() (which thumbnails an image held as a string), see the docs for details. You can use these functions from any language with a libvips binding. For example, from PHP you could write: $filename = "image.jpg"; $image = Vips\Image::thumbnail($filename, 200, ["height" => 200]); $image->writeToFile("my-thumbnail.jpg"); libvips options vipsthumbnail supports the usual range of vips command-line options. A few of them are useful: --vips-cache-trace shows each operation as libvips starts it. It can be handy to see exactly what operations vipsthumbnail is running for you. --vips-leak turns on the libvips memory leak checker. As well as reporting leaks (hopefully there are none) it also tracks and reports peak memory use. --vips-progress runs a progress indicator during computation. It can be useful to see where libvips is looping and how often. --vips-info shows a higher level view of the operations that vipsthumbnail is running.  Looping vipsthumbnail can process many images in one command. For example: $ vipsthumbnail *.jpg will make a thumbnail for every jpeg in the current directory.  See the Output directory section below to see how to change where thumbnails are written. vipsthumbnail will process images one after the other. You can get a good speedup by running several vipsthumbnails in parallel, depending on how much load you want to put on your system. For example: $ parallel vipsthumbnail ::: *.jpg Thumbnail size You can set the bounding box of the generated thumbnail with the --size option. For example: $ vipsthumbnail shark.jpg --size 200x100 Use a single number to set a square bounding box. You can omit either number but keep the x to mean resize just based on that axis, for example: $ vipsthumbnail shark.jpg --size 200x Will resize to 200 pixels across, no matter what the height of the input image is. You can append < or > to mean only resize if the image is smaller or larger than the target. You can append ! to force a resize to the exact target size, breaking the aspect ratio. Cropping vipsthumbnail normally shrinks images to fit within the box set by --size. You can use the --smartcrop option to crop to fill the box instead. Excess pixels are trimmed away using the strategy you set. For example: $ vipsthumbnail owl.jpg --smartcrop attention -s 128 Where owl.jpg is an off-centre composition:

Gives this result:
First it shrinks the image to get the vertical axis to 128 pixels, then crops down to 128 pixels across using the attention strategy. This one searches the image for features which might catch a human eye, see vips_smartcrop() for details. Linear light Shrinking images involves combining many pixels into one. Arithmetic averaging really ought to be in terms of the number of photons, but (for historical reasons) the values stored in image files are usually related to the voltage that should be applied to the electron gun in a CRT display. vipsthumbnail has an option to perform image shrinking in linear space, that is, a colourspace where values are proportional to photon numbers. For example: $ vipsthumbnail fred.jpg --linear The downside is that in linear mode, none of the very fast shrink-on-load tricks that vipsthumbnail normally uses are possible, since the shrinking is done at encode time, not decode time, and is done in terms of CRT voltage, not photons. This can make linear light thumbnailing of large images extremely slow. For example, for a 10,000 x 10,000 pixel JPEG I see: $ time vipsthumbnail wtc.jpg real 0m0.317s user 0m0.292s sys 0m0.016s $ time vipsthumbnail wtc.jpg --linear real 0m4.660s user 0m4.640s sys 0m0.016s Output directory You set the thumbnail write parameters with the -o option. This is a pattern which the input filename is pasted into to produce the output filename. For example: $ vipsthumbnail fred.jpg jim.tif -o tn_%s.jpg For each of the files to be thumbnailed, vipsthumbnail will drop the extension (.jpg and .tif in this case) and then substitute the name into the -o option, replacing the %s So this example will write thumbnails to tn_fred.jpg and tn_jim.jpg. If the pattern given to -o is an absolute path, any path components are dropped from the input filenames. This lets you write all of your thumbnails to a specific directory, if you want. For example: $ vipsthumbnail fred.jpg ../jim.tif -o /mythumbs/tn_%s.jpg Now both thumbnails will be written to /mythumbs, even though the source images are in different directories. Conversely, if -o is set to a relative path, any path component from the input file is prepended. For example: $ vipsthumbnail fred.jpg ../jim.tif -o mythumbs/tn_%s.jpg Now both input files will have thumbnails written to a subdirectory of their current directory. Output format and options You can use -o to specify the thumbnail image format too. For example:  $ vipsthumbnail fred.jpg ../jim.tif -o tn_%s.png Will write thumbnails in PNG format. You can give options to the image write operation as a list of comma-separated arguments in square brackets. For example: $ vipsthumbnail fred.jpg ../jim.tif -o tn_%s.jpg[Q=90,optimize_coding] will write jpeg images with quality 90, and will turn on the libjpeg coding optimizer. Check the image write operations to see all the possible options. For example: $ vips jpegsave save image to jpeg file usage: jpegsave in filename where: in - Image to save, input VipsImage filename - Filename to save to, input gchararray optional arguments: Q - Q factor, input gint default: 75 min: 1, max: 100 profile - ICC profile to embed, input gchararray optimize-coding - Compute optimal Huffman coding tables, input gboolean default: false interlace - Generate an interlaced (progressive) jpeg, input gboolean default: false no-subsample - Disable chroma subsample, input gboolean default: false trellis-quant - Apply trellis quantisation to each 8x8 block, input gboolean default: false overshoot-deringing - Apply overshooting to samples with extreme values, input gboolean default: false optimize-scans - Split the spectrum of DCT coefficients into separate scans, input gboolean default: false quant-table - Use predefined quantization table with given index, input gint default: 0 min: 0, max: 8 strip - Strip all metadata from image, input gboolean default: false background - Background value, input VipsArrayDouble The strip option is especially useful. Many image have very large IPCT, ICC or XMP metadata items embedded in them, and removing these can give a large saving. For example: $ vipsthumbnail 42-32157534.jpg $ ls -l tn_42-32157534.jpg -rw-r–r– 1 john john 6682 Nov 12 21:27 tn_42-32157534.jpg strip almost halves the size of the thumbnail: $ vipsthumbnail 42-32157534.jpg -o x.jpg[optimize_coding,strip] $ ls -l x.jpg -rw-r–r– 1 john john 3600 Nov 12 21:27 x.jpg Colour management vipsthumbnail will optionally put images through LittleCMS for you. You can use this to move all thumbnails to the same colour space. All web browsers assume that images without an ICC profile are in sRGB colourspace, so if you move your thumbnails to sRGB, you can strip all the embedded profiles. This can save several kb per thumbnail. For example: $ vipsthumbnail shark.jpg $ ls -l tn_shark.jpg -rw-r–r– 1 john john 7295 Nov  9 14:33 tn_shark.jpg Now encode with sRGB and delete any embedded profile: $ vipsthumbnail shark.jpg --eprofile /usr/share/color/icc/sRGB.icc --delete $ ls -l tn_shark.jpg -rw-r–r– 1 john john 4229 Nov  9 14:33 tn_shark.jpg It’ll look identical to a user, but be almost half the size. You can also specify a fallback input profile to use if the image has no embedded one. This can often happen with CMYK images, producing an error message like: $ vipsthumbnail kgdev.jpg vipsthumbnail: unable to thumbnail kgdev.jpg vips_colourspace: no known route from 'cmyk' to 'srgb' If you supply a CMYK profile, it will be able to convert the image, for example: $ vipsthumbnail kgdev.jpg --iprofile /usr/share/color/icc/colord/FOGRA28L_webcoated.icc I’ve had good results with this profile: https://github.com/libvips/nip2/blob/master/share/nip2/data/cmyk.icm It makes nice-looking images from most CMYK files, and is completely free. Auto-rotate Many JPEG files have a hint set in the header giving the image orientation. If you strip out the metadata, this hint will be lost, and the image will appear to be rotated. If you use the --rotate option, vipsthumbnail examines the image header and if there’s an orientation tag, applies and removes it. Final suggestion Putting all this together, I suggest this as a sensible set of options: $ vipsthumbnail fred.jpg \ --size 128 \ -o tn_%s.jpg[optimize_coding,strip] \ --eprofile /usr/share/color/icc/sRGB.icc \ --rotate libvips-8.9.1/doc/binding.md000066400000000000000000000151261361153320700157100ustar00rootroot00000000000000 How to write bindings 3 libvips Binding Writing bindings for libvips There are full libvips bindings for quite a few environments now: C, C++, command-line, Ruby, PHP, Lua, Python and JavaScript (node). This chapter runs through the four main styles that have been found to work well. If you want to write a new binding, one of these should be close to what you need. # Don't bind the top-level C API The libvips C API (vips_add() and so on) is very inconvenient and dangerous to use from other languages due to its heavy use of varargs. It's much better to use the layer below. This lower layer is structured as create operator, set parameters, execute, extract results. For example, you can execute vips_invert() like this: ```C /* compile with * * gcc -g -Wall callvips.c `pkg-config vips --cflags --libs` * */ #include int main( int argc, char **argv ) { VipsImage *in; VipsImage *out; VipsOperation *op; VipsOperation *new_op; GValue gvalue = { 0 }; if( VIPS_INIT( argv[0] ) ) /* This shows the vips error buffer and quits with a fail exit * code. */ vips_error_exit( NULL ); /* This will print a table of any ref leaks on exit, very handy for * development. */ vips_leak_set( TRUE ); if( argc != 3 ) vips_error_exit( "usage: %s input-filename output-filename", argv[0] ); if( !(in = vips_image_new_from_file( argv[1], NULL )) ) vips_error_exit( NULL ); /* Create a new operator from a nickname. NULL for unknown operator. */ op = vips_operation_new( "invert" ); /* Init a gvalue as an image, set it to in, use the gvalue to set the * operator property. */ g_value_init( &gvalue, VIPS_TYPE_IMAGE ); g_value_set_object( &gvalue, in ); g_object_set_property( G_OBJECT( op ), "in", &gvalue ); g_value_unset( &gvalue ); /* We no longer need in: op will hold a ref to it as long as it needs * it. */ g_object_unref( in ); /* Call the operation. This will look up the operation+args in the vips * operation cache and either return a previous operation, or build * this one. In either case, we have a new ref we must release. */ if( !(new_op = vips_cache_operation_build( op )) ) { g_object_unref( op ); vips_error_exit( NULL ); } g_object_unref( op ); op = new_op; /* Now get the result from op. g_value_get_object() does not ref the * object, so we need to make a ref for out to hold. */ g_value_init( &gvalue, VIPS_TYPE_IMAGE ); g_object_get_property( G_OBJECT( op ), "out", &gvalue ); out = VIPS_IMAGE( g_value_get_object( &gvalue ) ); g_object_ref( out ); g_value_unset( &gvalue ); /* All done: we can unref op. The output objects from op actually hold * refs back to it, so before we can unref op, we must unref them. */ vips_object_unref_outputs( VIPS_OBJECT( op ) ); g_object_unref( op ); if( vips_image_write_to_file( out, argv[2], NULL ) ) vips_error_exit( NULL ); g_object_unref( out ); return( 0 ); } ``` libvips has a couple of extra things to let you examine the arguments and types of an operator at runtime. Use vips_argument_map() to loop over all the arguments of an operator, and vips_object_get_argument() to fetch the type and flags of a specific argument. Use vips_operation_get_flags() to get general information about an operator. # Compiled language which can call C The C++ binding uses this lower layer to define a function called `VImage::call()` which can call any libvips operator with a not-varargs set of variable arguments. A small Python program walks the set of all libvips operators and generates a set of static bindings. For example: ```c++ VImage VImage::invert( VOption *options ) { VImage out; call( "invert", (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } ``` So from C++ you can call any libvips operator (though without type-safety) with `VImage::call()`, or use the member functions on `VImage` to get type-safe calls for at least the required operator arguments. The `VImage` class also adds automatic reference counting, constant expansion, operator overloads, and various other useful features. # Dynamic language with FFI Languages like Ruby, Python, JavaScript and LuaJIT can't call C directly, but they do support FFI. The bindings for these languages work rather like C++, but use FFI to call into libvips and run operations. Since these languages are dynamic, they can add another trick: they intercept the method-missing hook and attempt to run any method calls not implemented by the `Image` class as libvips operators. This makes these bindings self-writing: they only contain a small amount of code and just expose everything they find in the libvips class hierarchy. # Dynamic langauge without FFI PHP does not have FFI, unfortunately, so for this language a small native module implements the general `vips_call()` function for PHP language types, and a larger pure PHP layer makes it convenient to use. # gobject-introspection The C source code to libvips has been marked up with special comments describing the interface in a standard way. These comments are read by the `gobject-introspection` package when libvips is compiled and used to generate a typelib, a description of how to call the library. Many languages have gobject-introspection packages: all you need to do to call libvips from your favorite language is to start g-o-i, load the libvips typelib, and you should have the whole library available. For example, from Python it's as simple as: ```python from gi.repository import Vips ``` You can now use all of the libvips introspection machinery, as noted above. Unfortunately g-o-i has some strong disadvantages. It is not very portable, since you will need a g-o-i layer for whatever platform you are targetting; it does not cross-compile well, since typelibs include a lot of very-low level data (such as exact structure layouts); and installation for your users is likely to be tricky. If you have a choice, I would recommend simply using FFI. # Documentation You can generate searchable docs from a .gir (the thing that is built from scanning libvips and which in turn turn the typelib is made from) with g-ir-doc-tool, for example: ``` $ g-ir-doc-tool --language=Python -o ~/mydocs Vips-8.0.gir ``` Then to view them, either: ``` $ yelp ~/mydocs ``` Or perhaps: ``` $ cd ~/mydocs $ yelp-build html . ``` To make HTML docs. This is an easy way to see what you can call in the library. libvips-8.9.1/doc/binding.xml000066400000000000000000000204731361153320700161110ustar00rootroot00000000000000 How to write bindings 3 libvips Binding Writing bindings for libvips There are full libvips bindings for quite a few environments now: C, C++, command-line, Ruby, PHP, Lua, Python and JavaScript (node). This chapter runs through the four main styles that have been found to work well. If you want to write a new binding, one of these should be close to what you need.
Don’t bind the top-level C API The libvips C API (vips_add() and so on) is very inconvenient and dangerous to use from other languages due to its heavy use of varargs. It’s much better to use the layer below. This lower layer is structured as create operator, set parameters, execute, extract results. For example, you can execute vips_invert() like this: /* compile with * * gcc -g -Wall callvips.c `pkg-config vips --cflags --libs` * */ #include <vips/vips.h> int main( int argc, char **argv ) { VipsImage *in; VipsImage *out; VipsOperation *op; VipsOperation *new_op; GValue gvalue = { 0 }; if( VIPS_INIT( argv[0] ) ) /* This shows the vips error buffer and quits with a fail exit * code. */ vips_error_exit( NULL ); /* This will print a table of any ref leaks on exit, very handy for * development. */ vips_leak_set( TRUE ); if( argc != 3 ) vips_error_exit( "usage: %s input-filename output-filename", argv[0] ); if( !(in = vips_image_new_from_file( argv[1], NULL )) ) vips_error_exit( NULL ); /* Create a new operator from a nickname. NULL for unknown operator. */ op = vips_operation_new( "invert" ); /* Init a gvalue as an image, set it to in, use the gvalue to set the * operator property. */ g_value_init( &gvalue, VIPS_TYPE_IMAGE ); g_value_set_object( &gvalue, in ); g_object_set_property( G_OBJECT( op ), "in", &gvalue ); g_value_unset( &gvalue ); /* We no longer need in: op will hold a ref to it as long as it needs * it. */ g_object_unref( in ); /* Call the operation. This will look up the operation+args in the vips * operation cache and either return a previous operation, or build * this one. In either case, we have a new ref we must release. */ if( !(new_op = vips_cache_operation_build( op )) ) { g_object_unref( op ); vips_error_exit( NULL ); } g_object_unref( op ); op = new_op; /* Now get the result from op. g_value_get_object() does not ref the * object, so we need to make a ref for out to hold. */ g_value_init( &gvalue, VIPS_TYPE_IMAGE ); g_object_get_property( G_OBJECT( op ), "out", &gvalue ); out = VIPS_IMAGE( g_value_get_object( &gvalue ) ); g_object_ref( out ); g_value_unset( &gvalue ); /* All done: we can unref op. The output objects from op actually hold * refs back to it, so before we can unref op, we must unref them. */ vips_object_unref_outputs( VIPS_OBJECT( op ) ); g_object_unref( op ); if( vips_image_write_to_file( out, argv[2], NULL ) ) vips_error_exit( NULL ); g_object_unref( out ); return( 0 ); } libvips has a couple of extra things to let you examine the arguments and types of an operator at runtime. Use vips_argument_map() to loop over all the arguments of an operator, and vips_object_get_argument() to fetch the type and flags of a specific argument. Use vips_operation_get_flags() to get general information about an operator.
Compiled language which can call C The C++ binding uses this lower layer to define a function called VImage::call() which can call any libvips operator with a not-varargs set of variable arguments. A small Python program walks the set of all libvips operators and generates a set of static bindings. For example: VImage VImage::invert( VOption *options ) { VImage out; call( "invert", (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } So from C++ you can call any libvips operator (though without type-safety) with VImage::call(), or use the member functions on VImage to get type-safe calls for at least the required operator arguments. The VImage class also adds automatic reference counting, constant expansion, operator overloads, and various other useful features.
Dynamic language with FFI Languages like Ruby, Python, JavaScript and LuaJIT can’t call C directly, but they do support FFI. The bindings for these languages work rather like C++, but use FFI to call into libvips and run operations. Since these languages are dynamic, they can add another trick: they intercept the method-missing hook and attempt to run any method calls not implemented by the Image class as libvips operators. This makes these bindings self-writing: they only contain a small amount of code and just expose everything they find in the libvips class hierarchy.
Dynamic langauge without FFI PHP does not have FFI, unfortunately, so for this language a small native module implements the general vips_call() function for PHP language types, and a larger pure PHP layer makes it convenient to use.
gobject-introspection The C source code to libvips has been marked up with special comments describing the interface in a standard way. These comments are read by the gobject-introspection package when libvips is compiled and used to generate a typelib, a description of how to call the library. Many languages have gobject-introspection packages: all you need to do to call libvips from your favorite language is to start g-o-i, load the libvips typelib, and you should have the whole library available. For example, from Python it’s as simple as: from gi.repository import Vips You can now use all of the libvips introspection machinery, as noted above. Unfortunately g-o-i has some strong disadvantages. It is not very portable, since you will need a g-o-i layer for whatever platform you are targetting; it does not cross-compile well, since typelibs include a lot of very-low level data (such as exact structure layouts); and installation for your users is likely to be tricky. If you have a choice, I would recommend simply using FFI.
Documentation You can generate searchable docs from a .gir (the thing that is built from scanning libvips and which in turn turn the typelib is made from) with g-ir-doc-tool, for example: $ g-ir-doc-tool --language=Python -o ~/mydocs Vips-8.0.gir Then to view them, either: $ yelp ~/mydocs Or perhaps: $ cd ~/mydocs $ yelp-build html . To make HTML docs. This is an easy way to see what you can call in the library.
libvips-8.9.1/doc/extending.xml000066400000000000000000000337271361153320700164720ustar00rootroot00000000000000 Extending VIPS 3 VIPS Library Extending How to add operations to VIPS Introduction This section runs quickly through adding a simple operator to VIPS. For more information, see #VipsOperation and #VipsRegion. A good starting point for a new operation is a similar one in the VIPS library. All VIPS operations are subclasses of #VipsOperation, which in turn subclasses #VipsObject and then %GObject. You add an operation to VIPS by defining a new subclass of #VipsOperation and arranging for its class_init() to be called, perhaps by calling its get_type() function. The class and object structures First you need to define a new object struct and a new class struct. typedef struct _Negative { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int image_max; } Negative; typedef struct _NegativeClass { VipsOperationClass parent_class; /* No new class members needed for this op. */ } NegativeClass; This operation will find the photographic negative of an unsigned 8-bit image, optionally letting you specify the value which the pixels "pivot" about. It doesn't need any class members (ie. values common to all operations of this type), so the second struct is empty. See the source to vips_invert() for a more complete version of this operation that's actually in the library. %GObject has a handy macro to write some of the boilerplate for you. G_DEFINE_TYPE( Negative, negative, VIPS_TYPE_OPERATION ); G_DEFINE_TYPE() defines a function called negative_get_type(), which registers this new class and returns its %GType (a pointer-sized integer). negative_get_type() in turn needs two functions, negative_init(), to initialise a new instance, and negative_class_init(), to initialise a new class. Class and object initialisation negative_init() is very simple, it just sets the default value for our optional parameter. static void negative_init( Negative *negative ) { negative->image_max = 255; } negative_class_init() is more complicated: it has to set various fields in various superclasses and define the operation's parameters. static void negative_class_init( NegativeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "negative"; object_class->description = "photographic negative"; object_class->build = negative_build; VIPS_ARG_IMAGE( class, "in", 1, "Input", "Input image", VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( Negative, in ) ); VIPS_ARG_IMAGE( class, "out", 2, "Output", "Output image", VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( Negative, out ) ); VIPS_ARG_INT( class, "image_max", 4, "Image maximum", "Maximum value in image: pivot about this", VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( Negative, image_max ), 0, 255, 255 ); } In %GObject, it needs to set the getters and setters for this class. vips has a generic get/set system, so any subclass of #VipsObject needs to use the vips ones. In #VipsObject, it needs to set the operation @nickname and @description, and set a build function (see below). @nickname is used to refer to this operation in the API, @description is used to explain this operation to users and will be translated into their language. Finally, it needs to define the arguments the constructor for this class takes. There are a set of handy macros for doing this, see VIPS_ARG_INT() and friends. The first few parameters are always the same and mean: class pointer for argument, argument name, argument priority (bindings expect required arguments in order of priority), long argument name (this one is internationalised and displayed to users), description (again, users can see this), some flags describing the argument, and finally the position of the member in the struct. Integer arguments take three more values: the minimum, maximum and default value for the argument. The build() function The build function is the thing #VipsObject calls during object construction, after all arguments have been supplied and before the object is used. It has two roles: to verify that arguments are correct, and then to construct the object. After build(), the object is expected to be ready for use. static int negative_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); Negative *negative = (Negative *) object; if( VIPS_OBJECT_CLASS( negative_parent_class )->build( object ) ) return( -1 ); if( vips_check_uncoded( class->nickname, negative->in ) || vips_check_format( class->nickname, negative->in, VIPS_FORMAT_UCHAR ) ) return( -1 ); g_object_set( object, "out", vips_image_new(), NULL ); if( vips_image_pipelinev( negative->out, VIPS_DEMAND_STYLE_THINSTRIP, negative->in, NULL ) ) return( -1 ); if( vips_image_generate( negative->out, vips_start_one, negative_generate, vips_stop_one, negative->in, negative ) ) return( -1 ); return( 0 ); } negative_build() first chains up to the superclass: this will check that all input arguments have been supplied and are sane. Next, it adds its own checks. This is a demo operation, so we just work for uncoded, unsigned 8-bit images. There are a lot of convenience functions like vips_check_format(), see the docs. Next, it creates the output image. This needs to be set with g_object_set() so that vips can see that it has been assigned. vips will also handle the reference counting for you. vips_image_pipelinev() links our new image onto the input image and notes that this operation prefers to work in lines. You can request other input geometries, see #VipsDemandStyle. The geometry hint is just a hint, an operation needs to be able to supply any size #VipsRegion on request. If you must have a certain size request, you can put a cache in the pipeline after your operation, see vips_linecache() and vips_tilecache(). You can also make requests to your operation ordered, see vips_sequential(). Finally, vips_image_generate() attaches a set of callbacks to the output image to generate chunks of it on request. vips_start_one() and vips_stop_one() are convenience functions that make the input region for you, see below. The generate() function The generate() function does the actual image processing. negative_generate() (of type #VipsGenerateFn, supplied to vips_image_generate() above) is called whenever some pixels of our output image are required. static int negative_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { /* The area of the output region we have been asked to make. */ VipsRect *r = &or->valid; /* The sequence value ... the thing returned by vips_start_one(). */ VipsRegion *ir = (VipsRegion *) vseq; VipsImage *in = (VipsImage *) a; Negative *negative = (Negative *) b; int line_size = r->width * negative->in->Bands; int x, y; /* Request matching part of input region. */ if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { unsigned char *p = (unsigned char *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); unsigned char *q = (unsigned char *) VIPS_REGION_ADDR( or, r->left, r->top + y ); for( x = 0; x < line_size; x++ ) q[x] = negative->image_max - p[x]; } return( 0 ); } This has to calculate a section of the output image. The output #VipsRegion, @or, contains a #VipsRect called @valid which is the area needing calculation. This call to negative_generate() must somehow make this part of @or contain pixel data. @vseq is the sequence value. This is the per-thread state for this generate, created (in this example) by vips_start_one(). In this simple case it's just a #VipsRegion defined on the input image. If you need more per-thread state you can write your own start and stop functions and have a struct you create and pass as a sequence value. There are plenty of examples in the VIPS source code, see vips_rank(). @a and @b are the last two arguments to vips_image_generate() above. @stop is a bool pointer you can set to stop computation early. vips_min() on an unsigned int image, for example, will set @stop as soon as it sees a zero, and will not scan the entire image. The first thing negative_generate() does is use vips_region_prepare() to ask for the corresponding pixels from the input image. Operations which do coordinate transforms or which need an area of input for each output point will need to calculate a new rect before calling vips_region_prepare(). Finally, it can calculate some pixels. negative_generate() loops over the valid area of the output and calls VIPS_REGION_ADDR() for each line. This macro is reasonaly quick, but it's best not to call it for each pixel. Once per line is fine though. Adding to VIPS To add the operation to vips, just call negative_get_type(). You can include the source in your program, or use %GModule to make a binary plugin that will be loaded by libvips at startup. There are some example plugins available. You can then use @negative from any of the vips interfaces. For example, in Python you'd use it like this: out = in.negative(image_max = 128) From the command-line it'd look like this: $ vips negative in.png out.tif --image-max 128 And from C like this: VipsImage *in; VipsImage *out; if( vips_call( "negative", in, &out, "image_max", 128, NULL ) ) ... error Unfortunately that will do almost no compile-time type checking, so all vips operations have a tiny extra wrapper to add a bit of safety. For example: static int negative( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "negative", ap, in, out ); va_end( ap ); return( result ); } And now you can write: if( negative( in, &out, "image_max", 128, NULL ) ) ... error and it's at least a bit safer. Other types of operation Change the _build() function to make other types of operation. Use vips_image_generate() with vips_start_many() to make operations which demand pixels from more than one image at once, such as image plus image. Use vips_sink() instead of vips_image_generate() to loop over an image and calculate a value. vips uses this for the statistics operations, like vips_avg(). Use vips_image_wio_input() to get an entire image into memory so you can read it with a pointer. This will obviously not scale well to very large images, but some operations, like FFTs or flood-fill, need the whole image to be available at once. Make area operations, like filters, by enlarging the #VipsRect that _generate() is given before calling vips_region_prepare(). You can enlarge the input image, so that the output image is the same size as the original input, by using vips_embed() within the _build() function. Make things like flips and rotates by making larger changes to the #VipsRect in _generate(). Make zero-copy operations, like vips_insert(), with vips_region_region(). libvips-8.9.1/doc/file-format.xml000066400000000000000000000201341361153320700166760ustar00rootroot00000000000000 The VIPS file format 3 VIPS Library File format The VIPS file format Introduction VIPS has a simple, native file format. It's very fast, there is no image size limit, and it supports arbitrary metadata. Although few other programs can read these images (though recent versions of ImageMagick do have basic support for .vips format), it can be useful as an intermediate format for command-line processing. For example: $ vips invert input.tif t.v $ vips gamma t.v output.tif is faster than using .tif for the temporary intermediate image. This section documents the VIPS file format. VIPS comes with a command-line program called vipsedit which is useful for destructively changing fields in a vips image. The vipsheader program can be used to extract any metadata. VIPS files come in three parts. First, there is a 64-byte header, containing an identifying magic number and a set of very basic fields, such as image width in pixels. Next, the image data is stored as a set of band-interleaved scanlines, from the top of the image to the bottom. Finally, after the pixel data comes an optional block of XML containing any extra metadata, such as an ICC profile or the EXIF data. The header The fields in the VIPS header are always stored least-significant byte first (Intel ordering). Only the most basic information about the image is in the header: most metadata is stored in the XML extension block after the pixel data. If the first four bytes of the file are in order 08 f2 a6 b6, the image data (see the next section) is stored in Intel byte order (LSB first) and will need to be swapped if read on a SPARC-style machine (MSB first). If the magic number is b6 a6 f2 08, the image data is in SPARC order and will need to swapped if read on an Intel-style machine. libvips does this swapping automatically. The VIPS header Bytes Type VIPS name Meaning 0 -- 3 VIPS magic number: 08 f2 a6 b6, or b6 a6 f2 08 4 -- 7 int32 width Width of image, in pixels 8 -- 11 int32 height Height of image, in pixels 12 -- 15 int32 bands Number of image bands 16 -- 19 Unused 20 -- 23 #VipsBandFormat format Band format 24 -- 27 #VipsCoding coding Image coding 28 -- 31 #VipsInterpretation interpretation Pixel interpretation 32 -- 35 float32 xres Horizontal resolution, in pixels per millimetre 36 -- 39 float32 yres Vertical resolution, in pixels per millimetre 40 -- 47 Unused 48 -- 51 int32 xoffset Horizontal offset of origin, in pixels 52 -- 55 int32 yoffset Vertical offset of origin, in pixels 56 -- 63 Unused
The image data If coding is set to #VIPS_CODING_NONE, pixels are stored in native C format, that is, the native format of the machine that wrote the data. If you open a big-endian image on a little-endian machine, VIPS will automatically byte-swap for you. VIPS has 10 band formats, see #VipsBandFormat. Image data is stored as a simple list of scanlines, from the top of the image to the bottom. Pixels are band-interleaved, so RGBRGBRGBRGB, for example. There is no padding at the end of scanlines. If coding is set to #VIPS_CODING_LABQ, each pixel is four bytes, with 10 bits for L* and 11 bits for each of a* and b*. These 32 bits are packed into 4 bytes, with the most significant 8 bits of each value in the first 3 bytes, and the left-over bits packed into the final byte as 2:3:3. If coding is set to #VIPS_CODING_RAD, each pixel is RGB or XYZ float, with 8 bits of mantissa and then 8 bits of exponent, shared between the three channels. This coding style is used by the Radiance family of programs (and the HDR format) commonly used for HDR imaging. Other values of coding can set other coding styles. Use VIPS_IMAGE_SIZEOF_IMAGE() to calculate the size of the image data section. The metadata Following the image data is a chunk of XML holding a simple list of name-value pairs. Binary data is encoded with base64. Use vips_image_set() and friends to set and get image metadata. You can use vipsheader -f getext some_file.v to get the XML from a VIPS image, and vipsedit --setext some_file.v < file.xml to replace the XML.
libvips-8.9.1/doc/function-list.xml000066400000000000000000001062561361153320700173010ustar00rootroot00000000000000 VIPS function list 3 VIPS Library Using VIPS List of VIPS functions and operators Function list VIPS has a set of operators each of which computes some useful image processing operation. Each operator is implemented as a %GObject class, for example VipsGamma. Classes are identified by their unique nickname, in this case gamma. From the command-line, C++ and most language bindings, you use the nickname to call the operator. For example in C++: vips::VImage fred = ...; vips::VImage jim = fred.gamma(); or Python: fred = jim.gamma() VIPS has a set of C wrapper functions for calling operators, in this case vips_gamma(): VipsImage *fred = ...; VipsImage *jim; if (vips_gamma(fred, &jim, NULL)) ...error; Some operators have many C convenience functions. This table lists all the VIPS operators with their C convenience functions and a short description. It's supposed to be useful for searching. See the API docs each function links to for more details. VIPS functions and operators Operator Description C functions CMC2LCh Transform lch to cmc vips_CMC2LCh() CMYK2XYZ Transform cmyk to xyz vips_CMYK2XYZ() HSV2sRGB Transform hsv to srgb vips_HSV2sRGB() LCh2CMC Transform lch to cmc vips_LCh2CMC() LCh2Lab Transform lch to lab vips_LCh2Lab() Lab2LCh Transform lab to lch vips_Lab2LCh() Lab2LabQ Transform float lab to labq coding vips_Lab2LabQ() Lab2LabS Transform float lab to signed short vips_Lab2LabS() Lab2XYZ Transform cielab to xyz vips_Lab2XYZ() LabQ2Lab Unpack a labq image to float lab vips_LabQ2Lab() LabQ2LabS Unpack a labq image to short lab vips_LabQ2LabS() LabQ2sRGB Convert a labq image to srgb vips_LabQ2sRGB() LabS2Lab Transform signed short lab to float vips_LabS2Lab() LabS2LabQ Transform short lab to labq coding vips_LabS2LabQ() XYZ2CMYK Transform xyz to cmyk vips_XYZ2CMYK() XYZ2Lab Transform xyz to lab vips_XYZ2Lab() XYZ2Yxy Transform xyz to yxy vips_XYZ2Yxy() XYZ2scRGB Transform xyz to scrgb vips_XYZ2scRGB() Yxy2XYZ Transform yxy to xyz vips_Yxy2XYZ() abs Absolute value of an image vips_abs() add Add two images vips_add() affine Affine transform of an image vips_affine() analyzeload Load an analyze6 image vips_analyzeload() arrayjoin Join an array of images vips_arrayjoin() autorot Autorotate image by exif tag vips_autorot() avg Find image average vips_avg() bandbool Boolean operation across image bands vips_bandbool(), vips_bandand(), vips_bandor(), vips_bandeor(), vips_bandmean() bandfold Fold up x axis into bands vips_bandfold() bandjoin Bandwise join a set of images vips_bandjoin(), vips_bandjoin2() bandjoin_const Append a constant band to an image vips_bandjoin_const(), vips_bandjoin_const1() bandmean Band-wise average vips_bandmean() bandrank Band-wise rank of a set of images vips_bandrank() bandunfold Unfold image bands into x axis vips_bandunfold() black Make a black image vips_black() boolean Boolean operation on two images vips_boolean(), vips_andimage(), vips_orimage(), vips_eorimage(), vips_lshift(), vips_rshift() boolean_const Boolean operations against a constant vips_boolean_const(), vips_andimage_const(), vips_orimage_const(), vips_eorimage_const(), vips_lshift_const(), vips_rshift_const(), vips_boolean_const1(), vips_andimage_const1(), vips_orimage_const1(), vips_eorimage_const1(), vips_lshift_const1(), vips_rshift_const1() buildlut Build a look-up table vips_buildlut() byteswap Byteswap an image vips_byteswap() cache Cache an image vips_cache() canny Canny edge detector vips_canny() case Use pixel values to pick cases from an array of images vips_case() cast Cast an image vips_cast(), vips_cast_uchar(), vips_cast_char(), vips_cast_ushort(), vips_cast_shortcast_uint(), vips_cast_int(), vips_cast_float(), vips_cast_double(), vips_cast_complex(), vips_cast_dpcomplex() colourspace Convert to a new colorspace vips_colourspace() compass Convolve with rotating mask vips_compass() complex Perform a complex operation on an image vips_complex(), vips_polar(), vips_rect(), vips_conj() complex2 Complex binary operations on two images vips_complex2(), vips_cross_phase() complexform Form a complex image from two real images vips_complexform() complexget Get a component from a complex image vips_complexget(), vips_real(), vips_imag() composite Blend an array of images with an array of blend modes vips_composite() composite2 Blend a pair of images with a blend mode vips_composite2() conv Convolution operation vips_conv() conva Approximate integer convolution vips_conva() convasep Approximate separable integer convolution vips_convasep() convf Float convolution operation vips_convf() convi Int convolution operation vips_convi() convsep Seperable convolution operation vips_convsep() copy Copy an image vips_copy() countlines Count lines in an image vips_countlines() csvload Load csv from file vips_csvload() csvsave Save image to csv file vips_csvsave() dE00 Calculate de00 vips_dE00() dE76 Calculate de76 vips_dE76() dECMC Calculate decmc vips_dECMC() deviate Find image standard deviation vips_deviate() divide Divide two images vips_divide() draw_circle Draw a circle on an image vips_draw_circle(), vips_draw_circle1() draw_flood Flood-fill an area vips_draw_flood(), vips_draw_flood1() draw_image Paint an image into another image vips_draw_image() draw_line Draw a line on an image vips_draw_line(), vips_draw_line1() draw_mask Draw a mask on an image vips_draw_mask(), vips_draw_mask1() draw_rect Paint a rectangle on an image vips_draw_rect(), vips_draw_rect1(), vips_draw_point(), vips_draw_point1() draw_smudge Blur a rectangle on an image vips_draw_smudge() dzsave Save image to deepzoom file vips_dzsave() dzsave_buffer Save image to dz buffer vips_dzsave_buffer() embed Embed an image in a larger image vips_embed() extract_area Extract an area from an image vips_extract_area(), vips_crop() extract_band Extract band from an image vips_extract_band() eye Make an image showing the eye's spatial response vips_eye() falsecolour False-color an image vips_falsecolour() fastcor Fast correlation vips_fastcor() fill_nearest Fill image zeros with nearest non-zero pixel vips_fill_nearest() find_trim Search an image for non-edge areas vips_find_trim() fitsload Load a fits image vips_fitsload() fitssave Save image to fits file vips_fitssave() flatten Flatten alpha out of an image vips_flatten() flip Flip an image vips_flip() float2rad Transform float rgb to radiance coding vips_float2rad() fractsurf Make a fractal surface vips_fractsurf() freqmult Frequency-domain filtering vips_freqmult() fwfft Forward fft vips_fwfft() gamma Gamma an image vips_gamma() gaussblur Gaussian blur vips_gaussblur() gaussmat Make a gaussian image vips_gaussmat() gaussnoise Make a gaussnoise image vips_gaussnoise() getpoint Read a point from an image vips_getpoint() gifload Load gif with giflib vips_gifload() gifload_buffer Load gif with giflib vips_gifload_buffer() globalbalance Global balance an image mosaic vips_globalbalance() gravity Place an image within a larger image with a certain gravity vips_gravity() grey Make a grey ramp image vips_grey() grid Grid an image vips_grid() heifload Load a heif image vips_heifload() heifload_buffer Load a heif image vips_heifload_buffer() heifsave Save image in heif format vips_heifsave() heifsave_buffer Save image in heif format vips_heifsave_buffer() hist_cum Form cumulative histogram vips_hist_cum() hist_entropy Estimate image entropy vips_hist_entropy() hist_equal Histogram equalisation vips_hist_equal() hist_find Find image histogram vips_hist_find() hist_find_indexed Find indexed image histogram vips_hist_find_indexed() hist_find_ndim Find n-dimensional image histogram vips_hist_find_ndim() hist_ismonotonic Test for monotonicity vips_hist_ismonotonic() hist_local Local histogram equalisation vips_hist_local() hist_match Match two histograms vips_hist_match() hist_norm Normalise histogram vips_hist_norm() hist_plot Plot histogram vips_hist_plot() hough_circle Find hough circle transform vips_hough_circle() hough_line Find hough line transform vips_hough_line() icc_export Output to device with icc profile vips_icc_export() icc_import Import from device with icc profile vips_icc_import() icc_transform Transform between devices with icc profiles vips_icc_transform() identity Make a 1d image where pixel values are indexes vips_identity() ifthenelse Ifthenelse an image vips_ifthenelse() insert Insert image @sub into @main at @x, @y vips_insert() invert Invert an image vips_invert() invertlut Build an inverted look-up table vips_invertlut() invfft Inverse fft vips_invfft() join Join a pair of images vips_join() jpegload Load jpeg from file vips_jpegload() jpegload_buffer Load jpeg from buffer vips_jpegload_buffer() jpegload_source Load image from jpeg source vips_jpegload_source() jpegsave Save image to jpeg file vips_jpegsave() jpegsave_buffer Save image to jpeg buffer vips_jpegsave_buffer() jpegsave_mime Save image to jpeg mime vips_jpegsave_mime() jpegsave_target Save image to jpeg target vips_jpegsave_target() labelregions Label regions in an image vips_labelregions() linear Calculate (a * in + b) vips_linear(), vips_linear1() linecache Cache an image as a set of lines vips_linecache() logmat Make a laplacian of gaussian image vips_logmat() magickload Load file with imagemagick vips_magickload() magickload_buffer Load buffer with imagemagick vips_magickload_buffer() magicksave Save file with imagemagick vips_magicksave() magicksave_buffer Save image to magick buffer vips_magicksave_buffer() mapim Resample with a map image vips_mapim() maplut Map an image though a lut vips_maplut() mask_butterworth Make a butterworth filter vips_mask_butterworth() mask_butterworth_band Make a butterworth_band filter vips_mask_butterworth_band() mask_butterworth_ring Make a butterworth ring filter vips_mask_butterworth_ring() mask_fractal Make fractal filter vips_mask_fractal() mask_gaussian Make a gaussian filter vips_mask_gaussian() mask_gaussian_band Make a gaussian filter vips_mask_gaussian_band() mask_gaussian_ring Make a gaussian ring filter vips_mask_gaussian_ring() mask_ideal Make an ideal filter vips_mask_ideal() mask_ideal_band Make an ideal band filter vips_mask_ideal_band() mask_ideal_ring Make an ideal ring filter vips_mask_ideal_ring() match First-order match of two images vips_match() math Apply a math operation to an image vips_math(), vips_sin(), vips_cos(), vips_tan(), vips_asin(), vips_acos(), vips_atan(), vips_exp(), vips_exp10(), vips_log(), vips_log10() math2 Binary math operations vips_math2(), vips_pow(), vips_wop() math2_const Binary math operations with a constant vips_math2_const(), vips_andimage_const(), vips_orimage_const(), vips_eorimage_const(), vips_lshift_const(), vips_rshift_const(), vips_math2_const1(), vips_andimage_const1(), vips_orimage_const1(), vips_eorimage_const1(), vips_lshift_const1(), vips_rshift_const1() matload Load mat from file vips_matload() matrixload Load matrix from file vips_matrixload() matrixprint Print matrix vips_matrixprint() matrixsave Save image to matrix file vips_matrixsave() max Find image maximum vips_max() measure Measure a set of patches on a color chart vips_measure() merge Merge two images vips_merge() min Find image minimum vips_min() morph Morphology operation vips_morph() mosaic Mosaic two images vips_mosaic() mosaic1 First-order mosaic of two images vips_mosaic1() msb Pick most-significant byte from an image vips_msb() multiply Multiply two images vips_multiply() niftiload Load a nifti image vips_niftiload() niftisave Save image to nifti file vips_niftisave() openexrload Load an openexr image vips_openexrload() openslideload Load file with openslide vips_openslideload() pdfload Load pdf with libpoppler vips_pdfload() pdfload_buffer Load pdf with libpoppler vips_pdfload_buffer() percent Find threshold for percent of pixels vips_percent() perlin Make a perlin noise image vips_perlin() phasecor Calculate phase correlation vips_phasecor() pngload Load png from file vips_pngload() pngload_buffer Load png from buffer vips_pngload_buffer() pngload_source Load png from source vips_pngload_source() pngsave Save image to png file vips_pngsave() pngsave_buffer Save image to png buffer vips_pngsave_buffer() pngsave_target Save image to target as png vips_pngsave_target() ppmload Load ppm from file vips_ppmload() ppmsave Save image to ppm file vips_ppmsave() premultiply Premultiply image alpha vips_premultiply() profile Find image profiles vips_profile() profile_load Load named icc profile vips_profile_load() project Find image projections vips_project() quadratic Resample an image with a quadratic transform vips_quadratic() rad2float Unpack radiance coding to float rgb vips_rad2float() radload Load a radiance image from a file vips_radload() radload_buffer Load rad from buffer vips_radload_buffer() radload_source Load rad from source vips_radload_source() radsave Save image to radiance file vips_radsave() radsave_buffer Save image to radiance buffer vips_radsave_buffer() radsave_target Save image to radiance target vips_radsave_target() rank Rank filter vips_rank(), vips_median() rawload Load raw data from a file vips_rawload() rawsave Save image to raw file vips_rawsave() rawsave_fd Write raw image to file descriptor vips_rawsave_fd() recomb Linear recombination with matrix vips_recomb() reduce Reduce an image vips_reduce() reduceh Shrink an image horizontally vips_reduceh() reducev Shrink an image vertically vips_reducev() relational Relational operation on two images vips_relational(), vips_equal(), vips_notequal(), vips_less(), vips_lesseq(), vips_more(), vips_moreeq() relational_const Relational operations against a constant vips_relational_const(), vips_equal_const(), vips_notequal_const(), vips_less_const(), vips_lesseq_const(), vips_more_const(), vips_moreeq_const(), vips_relational_const1(), vips_equal_const1(), vips_notequal_const1(), vips_less_const1(), vips_lesseq_const1(), vips_more_const1(), vips_moreeq_const1() remainder Remainder after integer division of two images vips_remainder() remainder_const Remainder after integer division of an image and a constant vips_remainder_const(), vips_remainder_const1() replicate Replicate an image vips_replicate() resize Resize an image vips_resize() rot Rotate an image vips_rot() rot45 Rotate an image vips_rot45() rotate Rotate an image by a number of degrees vips_rotate() round Perform a round function on an image vips_round(), vips_floor(), vips_ceil(), vips_rint() sRGB2HSV Transform srgb to hsv vips_sRGB2HSV() sRGB2scRGB Convert an srgb image to scrgb vips_sRGB2scRGB() scRGB2BW Convert scrgb to bw vips_scRGB2BW() scRGB2XYZ Transform scrgb to xyz vips_scRGB2XYZ() scRGB2sRGB Convert an scrgb image to srgb vips_scRGB2sRGB() scale Scale an image to uchar vips_scale() sequential Check sequential access vips_sequential() sharpen Unsharp masking for print vips_sharpen() shrink Shrink an image vips_shrink() shrinkh Shrink an image horizontally vips_shrinkh() shrinkv Shrink an image vertically vips_shrinkv() sign Unit vector of pixel vips_sign() similarity Similarity transform of an image vips_similarity() sines Make a 2d sine wave vips_sines() smartcrop Extract an area from an image vips_smartcrop() sobel Sobel edge detector vips_sobel() spcor Spatial correlation vips_spcor() spectrum Make displayable power spectrum vips_spectrum() stats Find many image stats vips_stats() stdif Statistical difference vips_stdif() subsample Subsample an image vips_subsample() subtract Subtract two images vips_subtract() sum Sum an array of images vips_sum() svgload Load svg with rsvg vips_svgload() svgload_buffer Load svg with rsvg vips_svgload_buffer() svgload_source Load svg from source vips_svgload_source() switch Find the index of the first non-zero pixel in tests vips_switch() system Run an external command vips_system() text Make a text image vips_text() thumbnail Generate thumbnail from file vips_thumbnail() thumbnail_buffer Generate thumbnail from buffer vips_thumbnail_buffer() thumbnail_image Generate thumbnail from image vips_thumbnail_image() thumbnail_source Generate thumbnail from source vips_thumbnail_source() tiffload Load tiff from file vips_tiffload() tiffload_buffer Load tiff from buffer vips_tiffload_buffer() tiffload_source Load tiff from source vips_tiffload_source() tiffsave Save image to tiff file vips_tiffsave() tiffsave_buffer Save image to tiff buffer vips_tiffsave_buffer() tilecache Cache an image as a set of tiles vips_tilecache() tonelut Build a look-up table vips_tonelut() transpose3d Transpose3d an image vips_transpose3d() unpremultiply Unpremultiply image alpha vips_unpremultiply() vipsload Load vips from file vips_vipsload() vipssave Save image to vips file vips_vipssave() webpload Load webp from file vips_webpload() webpload_buffer Load webp from buffer vips_webpload_buffer() webpload_source Load webp from source vips_webpload_source() webpsave Save image to webp file vips_webpsave() webpsave_buffer Save image to webp buffer vips_webpsave_buffer() webpsave_target Save image to webp target vips_webpsave_target() worley Make a worley noise image vips_worley() wrap Wrap image origin vips_wrap() xyz Make an image where pixel values are coordinates vips_xyz() zone Make a zone plate vips_zone() zoom Zoom an image vips_zoom()
libvips-8.9.1/doc/gen-function-list.py000066400000000000000000000067721361153320700177020ustar00rootroot00000000000000#!/usr/bin/env python # walk vips and generate a list of all operators and their descriptions # for docs # this needs pyvips # # pip install --user pyvips # sample output: # # gamma # Gamma an image # vips_gamma() # from pyvips import Introspect, Operation, Error, \ ffi, type_map, type_from_name, nickname_find # for VipsOperationFlags _OPERATION_DEPRECATED = 8 def gen_function(operation_name, overloads): intro = Introspect.get(operation_name) c_operations = 'vips_{}()'.format(operation_name) if overloads: c_operations += ', ' + (', '.join('vips_{}()'.format(n) for n in overloads)) result = '\n' result += ' {}\n'.format(operation_name) result += ' {}\n'.format(intro.description.capitalize()) result += ' {}\n'.format(c_operations) result += '' return result def gen_function_list(): all_nicknames = [] def add_nickname(gtype, a, b): nickname = nickname_find(gtype) try: # can fail for abstract types intro = Introspect.get(nickname) # we are only interested in non-deprecated operations if (intro.flags & _OPERATION_DEPRECATED) == 0: all_nicknames.append(nickname) except Error: pass type_map(gtype, add_nickname) return ffi.NULL type_map(type_from_name('VipsOperation'), add_nickname) # make list unique and sort all_nicknames = list(set(all_nicknames)) all_nicknames.sort() # make dict with overloads overloads = { 'bandbool': ['bandand', 'bandor', 'bandeor', 'bandmean'], 'bandjoin': ['bandjoin2'], 'bandjoin_const': ['bandjoin_const1'], 'boolean': ['andimage', 'orimage', 'eorimage', 'lshift', 'rshift'], 'cast': ['cast_uchar', 'cast_char', 'cast_ushort', 'cast_short' 'cast_uint', 'cast_int', 'cast_float', 'cast_double', 'cast_complex', 'cast_dpcomplex'], 'complex': ['polar', 'rect', 'conj'], 'complex2': ['cross_phase'], 'complexget': ['real', 'imag'], 'draw_circle': ['draw_circle1'], 'draw_flood': ['draw_flood1'], 'draw_line': ['draw_line1'], 'draw_mask': ['draw_mask1'], 'draw_rect': ['draw_rect1', 'draw_point', 'draw_point1'], 'extract_area': ['crop'], 'linear': ['linear1'], 'math': ['sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'exp', 'exp10', 'log', 'log10'], 'math2': ['pow', 'wop'], 'rank': ['median'], 'relational': ['equal', 'notequal', 'less', 'lesseq', 'more', 'moreeq'], 'remainder_const': ['remainder_const1'], 'round': ['floor', 'ceil', 'rint'], } overloads['boolean_const'] = [o + '_const' for o in overloads['boolean']] + ['boolean_const1'] + \ [o + '_const1' for o in overloads['boolean']] overloads['math2_const'] = [o + '_const' for o in overloads['boolean']] + ['math2_const1'] + \ [o + '_const1' for o in overloads['boolean']] overloads['relational_const'] = [o + '_const' for o in overloads['relational']] + ['relational_const1'] + \ [o + '_const1' for o in overloads['relational']] for nickname in all_nicknames: result = gen_function(nickname, overloads[nickname] if nickname in overloads else None) print(result) if __name__ == '__main__': gen_function_list() libvips-8.9.1/doc/images/000077500000000000000000000000001361153320700152145ustar00rootroot00000000000000libvips-8.9.1/doc/images/Combine.png000066400000000000000000000312031361153320700172750ustar00rootroot00000000000000PNG  IHDR?kPsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATxwgo7; R4b[ bEMlXK,1[?5FMK 4 p;Wa;ߙ{YY\yyCbT硚&5ڻ"""] hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">`{7@ږ@/go]tmnJi N`sEipά^q@vV+ιo[ҡDZzVZ0_wr=PulB[5VC| (6$AeH&GuXi)m޼1/^ ۯ4>r-L˃;_ʚDx;fv p,0̞~[ʫ">i{ =̼9wyUUnR]׬Vee_Uؖԯ ] Ue(ӀSz.)ރ_C"%.]ϭUe0/997VM$63;N3DO7ˊ{ϯZ2lHNwI]mu.ނyuHH9vicZ/9YS}Ӂfvsnͮ/yTS3Ԓ%=׭ߔYkJM~`εqb}_eC1f$s FZbȪ>sp 3luVMXS.TS+PI?Wz,LwlLM:8Ք?(;~Lo?1 #^}n-73gFCnH뇋/gFY{i )P@wPe/>{>HJQ?pU6Dඅph.rYm)HKRMzT4ϖqB  .E"ag`TS"] eoqYEbb Zio$M}絇z!Ͽ5ujJ:-t⳷->{G+*vmwkzN̓q+}UqmoMՔt> fcYaofe}uy0 p - w|FU/>}%(H;M ĩQ@w0>{5ǹ%iI< -ƆKRF|{~!}qicj@5%7̃ks1!)˗ΪR֚:5u|sQP63S7o\Y9S*clH9N:nw6p: mRSC͙'I)]fvuief6gt; ).IٴkW/LރT7+ݑÆXMJNJP)i]TgC@vjiY0fGt7vEo}r@C6{lN)LK 5dC^YKL~פjB¯glk]̜KH^XVk"{o=vrN-Vr:;Tr ϼz$79`I'ac%$WWWMIcsdι^ 1OkǁޯQ{>0f E}8s+' dzv82Dp `49~Zb3Oe|mzf7^?|v]˹7֬ܲ2.y ˩hNWf =ˊY=yf={Gtm sjT1h͚:ԝxM={B Gիp8}ffߘf0I3̖f4ߙR3[kfefY3rmf֏v[{X=jrsIK3ڻD,..jC ft[`F瞸)4pȒh=lθ ~去*7|=?\s͕鑗^b<л7:?1/Kw0;( 4l^1A{6m,N\`FMC5U[j3,{V~sCh7ύ)+jJb望>uhS u]oaej0~-pb&n~ qH@Q1ޯwwD#PR@vN}lEvKǨ驠E3rM| ͻ4Ϲ *hэi E PBmՔt: fC6vX/]bؽZbSjK{ܖY.]SSՔt. &ÎԾ-htvo 'è o mw}֦(Ք(;U} HUe^?oՊwm^?šѦ9LՔ?ɥ>s˃@'=-Ï?Kzp#9_\kC̔G011{ޜ;RXyxiZι\ 5ZWg\u֚kIݔ-ޫgqt跫vY_]֯{#}]aȰ_ݑ lp8xT(}q=pJ{tAZ_gn)ݲS}Ev$ةލ>S *Km%Pu\q+?ե dMEk ;r.6-v/SsoskՕ6z5ujJvv#>hFHP6q ?狷z6Y=$9Q{RH , gaH(ݢ~[L{tjj6r ލ.ow^{7 ?XV)t}ژTSQgeW^޷^d` o7Kfkn4 09'dIǠi N䄓X^n03@P:BJHTS"G݉9ޞ͆nTS"-G*!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!ۻ1>q;#:dfdĥuMKZU~FT5gm{YM5%-NhMٴ83ҳӣ^CN)wHU4Y|N5%c hi 혴:Z ݫg5uݺW[ BAj-?|:"S:ǀX'i_))e]n}f8<Nʃ)Őඟ/+r@pmVBEk +IK_~>y'qP+jJ$v hi < {.ekwk\0ed\yrM$Rm%%ߝK}K<GUʈ/DCtm]8nSEmrkOeuIGfz{%~5\⿳g2tqqI./+/PtgʆKXVtT5Yt.X:Q^>@qW)?}+~t=oڜqLgg {} W%V5H5պTSTgAKCeC:i9|[D39됚6v>oHN]wޛh֣E ḫ.ޘu@CpzvIJZ?yK~TS"G-ٱ޳?g=. 7`?#=u-mx:TS"OəYp?>fw6l8g~$..=R]Uܓ7jDvjJe(J?<԰R b:$ .3-DZ3lˤE0ap|p!Эٕ)^~Hd?PMtk :F6{;>nP*y[~*;TS"-DI{Ϧ΃Ai)nw.פT0g曹m.SMuiQ8O͑3ĕfUWU%%XUDZ;?6BZhO􆬜 @(T7]iA =ye6)ޟC҂Rv٫W nn@]=ij~vs>Et"nkMX#㓎8<>)9PM0;1>ԾS쬝ffgفEޓ̙N_?tQGpZA#~kG vEX`gѣ{ pU/6|Vu)i¯?W pZjkXScO攜 5\]r?jb7VM*8 iGgk۶iafw?afG+ ǟ53g{Ƈܫ|cpZafܺMx{)M%aH2ecAy3`7uΨs[asڵOϵc]^aXtg}>>xO+FTpi]{6ԪUSmZiL|/^|"nTS{&ܛf6snbi;Y9 䜫0@9.:7,uE ^k}Khuιpt+ ]rrzWN([93zC||⑗Bֹicz}"gCd?_|1>8z4kj fd\{}E:5k¡xc_Ĥ!Dܖ`MIM1bݷdN{տ{ 1PpAScoIǚ*)D7br. fgt1+)qMj;6ιj`2pc0H4)ιEf Xwrdzt3XwY`9l+>V]\ks^A$gwݗw7ƀe49aY?G>O<8ߞux^yNnz֬ګR~M N7'oﵵqۿm˗~ɛ#=z}oγC-R5pIs憪J"XnKԔ~/y#[s٣x|s.lfû@10<mf< \{hqf \Y)?W TU #O١O_q1%?j;x:3gd2*^{3RSͪ*6nnwcI)!bTSE0ILJ '$}gTS[RSf5]S'>vL0_ZW{RM.y9W `fG5KL;hOK-şIDATpsf6̎r} k~9>naf<7t#n׬iv승k I}GR/>}H`68`~/2v%m-KKٔN<3l/*SS̪n\oSS6 ..rU s->>1srqŧ{+Wv555,^޾#Sp kin_qŮ'^Ԝ*< 9w5!t̓gr}kfOϛ]@Nfn c[׷ХMM看R`_  x8hX9\uTWc~f&I#FJ^~ 0xrXpƊrjjچxz޸)egZFn~Mmpm/`\s}h7K}v^/zʲƽzpZ޽CaK)'G9M?)=  _>fjg  {tI$7ՔH t'ss޳9iCEo%N5fRcFS)n6B]l%pnH D7 okP "C5%BНs~N;Ȩ(_05緪ҾTS"-G-\XH ߻9ƲϿa㋆?qcTS"-@EI{1pPhښ/>=W8\HNɨ;GY6ՔHP@ ιw˽ghz"*|ٽₑ/}~nH} h9w[.0 #*W?|wrүN>W 0uCvp)ݣ$z{4X0Ȧ@)F,Ca)sLM&.\>KkQMu.ɛGףﮀYÏsaL3 }aptx]辣%l#UUUλ-{Պg:nсO]ZjuZOgΤCt0wL;s4P^9ǿ };cP`'`) ,wWeOf^?} kkچjJ:T@KۉM+v" G} W-2r2l[iyM(-T9ݏ;ǟ|#{ՔH(ess6D؜ w@eBR<^nvuUA0b]ƲEIE#LʛrUfS ))IιT388 DX?̻EV 28׷в}G'vﯛwb))%fιߙY8`%;wJZFVMzzvmFfNMC+F9$-=K] ՔȎ)e8kl}.EvF5%-ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@ZDDć""">!)EDD|H-""C hR@PC{7B̪6zT籪G5yj9ڻ """uqZDDć""">!)EDD|H-""C hR@ZDDć""">!)E|zYb{C f4fm6}3۱3f66b3sfm3fnΘl=5̞3.i5sۻ;cf53͒6; n1 s݀A@2py6I:ι@O}$mfSfv4OlkfkfY-~O~ff+31!qA3-3fe4.\s `A~3{~af 3;̎\3`#3ˋƯ[޹f4:\ef6Qq3>Zq3j]ιws 7''!-̎7-f>2}t3f ff_Y-2lkl-4qIfvGt;Qs9W}\ | mOBZJh 8 H>^~a3뀓-̎0q#Tn>?8 uWOAp8xx8 Ӝs=j"3;F@jt+4`wΩGҦu':0 o0rԏ?7Rw,pE$D 7:!52;&wӀw{munvw;V; lp}l+%{-?q gߣK۸ʞ' 9W 99.~p6DƱmMpνwkQ`#ǁ)ffvކW-6sw9犁S[kf}sZX.gs=\p`?j|;⣀D bk,& hι߆]E@x'}C|k̷ /1p>ޞw, к?rmpE;`vTSS;¹5Krنɶ]a7ְhw篁 ι]\?i{ -E@sn9s.nx'^\WSiiXSo`x; I_Qѝ+R/kIH:ZTo?ssfx9X[5V:ks/ ƭ;$Bt x9w_,o=+fHlPp5ι.h0۩ zqν o50̒sU0y!f.֩w`jf5,{YO143bfg6&֮΃eϓlx ;LzWfnf{ُ{3;X-xݡVY#i79,̮6od3n7٤vjxv2fN;~s ƅN 7xm6Px7~ׅsn%nixJ܃wo>^wAx]WFs?2`v?;Ro.P}#/l~ ᝸xƴ$:>*چ'6? p*^m݈qG_5WWS }'~w D3zIxg[On;]j~=HëOzf>iZJ0Xbfιs.9E]MM;)RdWmWS?.sq'nʧfVy gMY .T8nZ`fK񺾳UAo¬IENDB`libvips-8.9.1/doc/images/Memtrace.png000066400000000000000000001604461361153320700174720ustar00rootroot00000000000000PNG  IHDRPU pHYs{Rk IDATxy\Uy]j^K 4De:~UGgՁ;QfA.0Mš,@BB'tzǹuzI{F sΩh^s=){]L]޵ 7 s6?py>o3ۦ!,JΑ1+Qs(Ľ62+DLb>@Qr 6} !2b>K2j] ȀٙDaњG@̗=g qEF[6e@LiO0$"cVd3yȀC&b^_+֩9owyP"2+H H_b}Qfg^${ jlJ 8|b6&Y#>Zp a@+l'L900YJP%A~!JyP=L 0'bCrB_z;`zlRy @q\4h A'2:Ķ_f]_ oRř9lCEurmpրGp10I?[?fI/fGNv*1< |0{%O&؃ ڨ) '*QR9P+83f,{#d@yh.,I&KaHu@.UR\^ȅ#DpR9%"/xXP+lyO$oi!K&5LȄ UQ"ɢI"ٞwEOj3$Q 4 Rwi8cFMccz$xo,g{>?~_mXj4֜zz2MSQ5}?OԗZo mxؗ%GE4j圊Wkj}}(KCEh6ny([:<ٳ?իru޻~]Ѽ8f-(aQ>ݝ&qLϛ"mA؏ JX={n={{7k]wѳ~]^s˖f5knhT?˞}{Ox^Ѹfͭ7+{ v/dv2s9gƝ߸qgaö Ffq?wh}MOp2wpaQěk1oO[mk_smKΫXH]·w{$|< oJ֟?ߞygr9&q晳WZve v>-?o>Xlރ}Q[.k3f\{w؂rgjXԸ_o<εe޿avgcIYAKQr({%zF)_-=$B%Ie0\,%Dd9!LD%Ir_bȤILF #|,]"d0 &7).q8/XB`p7'xPOdָ7!]R"샢(1s $+E%4:au1 zp$Ȃ oDu ɂI%a F%ATxHpN@DPl`rrLfI$%LQA6&A 2R*!l.)>؈ȐI)3fȐeɧOpX+UrGf@LRPT{⋻zܳk.\sƝ+W.֟xE'>o}}'?o;w~{ʳ6?ѯ*\??7|w<|gNPm[u(^`Ay:%2.{-hc\Uyׅs9͛wß]{mٽvᩝUU{]/s͟}`R|GL42x}p}g+W.ۛk-o[[CS[6mص@wwDlaqy]qŹGO.Z4'-nѨ7v4ݸKo^{"ƍvv6 e_xfp[/6^iD7zi3_5k~/4VFybX楛nmmmm;묎wk>uFX,R&)e-s.ӽkׁk?XňFu;׻zlWީ? K|wqN;K|~kŇ~,>_? ફN'i[6W5Fs`Xn[6?ްvr9} /q ܜnh?MWW>tO_~֭ۺhќikWFh4) rΚ5/]zص}+V,zߩF?٬{_}pݺmK.b.W}gomѨpa痿Iz|V-?5VZjҚZ~?mF_j΋Fh4B-|Ņ ;iu x9uחOm6l~v}Xr9}OoӺuۮrMlP?_/7sgo}}ƽ{-Y2wɒa26Fh4ǎ#=q)Kh4͛#Ӳ Ы FhLh4F}F-4FL'zmh4f:k Fh4Ӊ^[h4FN{"7,k֤2@>orgK۔u ZV`x,+uab=֏Шwc2{D֑Gr,"{Ÿ 'L!W9)dL+V4TFUB':Ya|M^Q}I,TBZ|_szm/NsLq^Sgmw~?èvݶΜ2gm=oiQ8PSd"yݖ8;l4;h5D>h ݃D7'eV(4V wv;"/{Mq,Q.>(s{LE)6*DXUi*X~)sXIFb$J:VM`ơrFeq"R3v{{ZF}qRư^e} E cdPe!؊,2IrQdڌ_=2Q*%[1_xDNL"5èR7/;~&9L4*` 2x sݹܦi5L^[h4FND4ȇs_{ƭ޺q8k=񙯞ܐ?j?uk_}^sCcW}h݌x{uK5%Oﱦ?XSյ6e6_|s/U&> W/~>cWݸ2e_?x{ׯZ}ϾG~S?1њZzplX0o̸j8s^zE}x3N.'9/$/g4 g5쨚3kuڼҮPCCO5:;JxOoI=5{]o_tgxmծG羽6ggpV~)CMR+.~` ݽ/&r{%5gV^`j8E{jSn{o7׮/l<>`sz~ţM NZr՗^|kkSnGkfUc}wzuOeK}y rQ뤒ޖ_ޓ2 zG/T%9m*kkm̆}cMXtɋ_ZqA7`648`YCW/X|3.[+U9cؕmY_bz~`+va[p/ZgtU}ACV_?zvmVmS˺ E~ŚyCO^M9w@OG~~Ѝg.Yrhc믾t/h\8_.ٹ7 <\݊wt`8gX^Oxi,z[K/Wj8ϼ6l̷7?BݕZֽ~sz~kW3 茬T%FUW;yx5,S-_ޓ8A+pwW~0rbypqމEXU^[h& /<'r3g:F$-/-;m>_ PtOiO;s2k3r;gVfFP( sڇg 1nkcټq2-ÞOY:e!I>:7e)L:ո;e)Uq?]ҚNs3["H:J!5e\kS.UY&M(mmMو%39Spc]@Kc>yQ_5 N%Hv }3+֔E&gV'\q$KeE|I*wvk>ڞ;bږr՜||m1\Nmo*AUT;uV&7b8^N_W& VSF4Z?nǎ7i$'w''c(-~h9ɛ&!rܞ+? ЗI8|,'N&p`]9nk S:9ʆa3! 9IQlaREQAC(XF% Y,[aHEKh(*`, dFi&Q*TΔ  3P$0WliA'6Z'K.qq8PEk%U'q숕BLYUbDDq&Ljjo{ULA:ALUxSbb0JN|QzTZeyek$rIktLv-4+j -9ch׾Xa]ryqʬapCĢR*G}ے)kSyɄO@4ۖq@c}@:20N9SmlG$X-Kz>S ,,YT%<o VeH${"{X7 1[l@2-ɘRZ1@ ,lS+# @M D*P`a $['b:$!ؓu史zpM*PhlRu6 [Ƣ>ڔkR\_J$aPM*Uɑ,6@M5%mI0 ze@20MVt<miɘ  bDSvJ!t߶Al{Lʨx*:4 ( A 瓺W[OLcv@M *ٖ$ RH[F`(Jxшe4H%=H2%Tueģ~*IL\T3MM IDAT_&!3bQgE53qCW6R/ bĺm2GVT@DRu* %d%hp+U32(*@%ʭ &d Rj  B U >(Lh!R+)b :B31;ݯlRNֹ>=+DWo& ~O 1{$|f UlYFaOySj3TAW](̌/2#2c> rlޏy_ W'x "<τ%1X?)v¥i8SnYx(?'; S"pFBsFdC+<ܐLyQr{*Ќؒd6gD#2qڨyGj [ob8ol9VÃVK}.lS]兂 z>ǢDHrI7`>yM+bK!He+z(\^4~yQܵтe;Beq+ 㫚|z,Sb ŁVdr1['SQ7"x8q7Nԏ2:?0|[I%hg|^Dm?ό|ި.E,9̖qe赅Fh4DODh4tFhTxD"N F<:>B3uu7h4F3 d2D4FL'zmh4f:k F'(>v=?ڇqќىvA}|7}O#Sԫǭz- o#p=͖^[hchhvA桡u>CǭzMf}|,j4'9FysݿpM|g:I5+ȣr{Ͼ|#KR?y/P>ږ{K|~P e +~|y{}͛Fysћ|)sKs;i՟=7uE[!w%}aQ6oƍy˟nӯ3u;MC?}!'_~}m{@)y?C-~nӉFs2ͮ}q]Ba[~Z7箢ۿmkϢ:;S~Î+jmVmyOnnuuGl-g)|sYM^[h4 /H7`%^MUg^ޝшlkʮ8{:ܐNzшw/?P}QW]%g>]cO}5)7 ѝv-U{ڍ[C6oIe4 BѼu OoRx5fu%wxoҁ5dڐNL~?N_Jv__;{=kQ{xI }'F9uUD#2r½es_Nh4 h4F3˗y}h4FցFh4L&]]ӫVsBW Yhq^PDp_s%X" l C7)!A1"Gɼ'0% v 1DI8`!-I">8+[q\ٯ `#@,s^']RVP &` [v @-`" \w<Nn\K _dY3?mLoD:ouZsO?m``#zx97sEs}}zK_a.LsfnlHwmqs0/&>yhr]#1 Âj]h=gQTCFb.Sv[JrYy8BİK$=p<R@F[^H x$%&-/ c!h#kp^ >!p6DI1)h{"a d3/[<,B=2+H Α!d><0lMN( E]Q+8cP+"0fݗ#<`RUq8+B".;PELiﲎ:Cy^&*$@#&13=v`:+$QKFu 0) πkpFA32`{3#{L! y\J3yȀC32dO 6T8v8 w"ɄI>3 ~A5!ҞwTbԜ'*J ¢j;Paк꫿VeO?}ŊS}3n;xm]ϯzѨo_n Qfά;pob )9s 7|qL9Y3Ѣ~H4Lɒ)͸THӱ\_nݶlY{]r_~cŊEUW-Q~3WwzϢQۮ﾿Rmmņ?(S#7?+W.gX oSJϝvڟW\q?Or5̝zmKλ>xhJr𧶛mrUp/W~zn?]嬷?˟x兗:藏Z#y~51+ ǟ&,T*%$#,W ɹ`/g̠ɶlp3`/ga[V1M `Γj@D'0Y̹=qj p%lc+B4T=\u1!P؟8i&; ءWp/'`p`:/PD/l-  Q G@m@ rF}v#! `$neD0_$.PU]18 #aaYY5c=R5jO%"yBd:(ć`ʰqqýJ0A0 *dQ [^*O\l(qsp/;yђJ:}FY@~⌇*M%950t?/mmN̉恒RR?}Ad 631$@K~cbrΚ5/-Y2{ןsΩ޻~ժ v_yCVZz@߭ @.|K?߻rp)/|L7ছ>dٸq:{֮_M)֟~]S5xٗѸhќ ;s9'sDS$._“ri_0}VgND6m냃e':>~х γkȽh48aذa۵^/|_{MM꫗bvuu\hkkPOC}}{7ý{=s@GGe-kUpCPh+@EsyCfͰ|?;z78o_pggϿO;Y=sfwٶmh4cxnϴmǷ$nޡknҹEjjܿyd?/\馻[J٣$9eLO}'''þ̝w> `nufӦ]O[Lk]Fќ[:=o;w^_xsΜ?M._~fUUl]c)|?oxB \8s2ۙ غuh4F3yL/zܷUx~׮ſKɷGݬ1/0sx.wzOܵko·z{g\uՒ.y2^|_|F*Oen t>̩̎ɟ\裛Fh4eɒK̍Fnc.Fh4c]h4t"&nh4F3iBh4tFhh4F3赅Fh4D-4FL'v@sRL^6$GdJ aP8# _,?D@2K"SSrdEGDmY)H*m "i) 0K: H)]!"D<Dfz [h6,DL GHY^0J3Jmʲ6V+evU(GCR/ !GV_w%(E@do+Y9"SiRt0hv|9-(cԣBWA9L$ 0ufC١a-öO}9@+}N`ՎmuRmy0urNe蠔}ʢa4JV-koD{Aè! {B}1͆(QXr`zmw2=۲ZDBUK#(S5urcjSQ)cFiHnSѮ(uO!q/Ѭ45g u[٨JpQ>[;"ӎ00$E1)-4.V5ag<, H*]b'W{PW ݈j#=BME 3㶶D4' :qb9٢1sȱ|5e(G#{b{2'h8k Fh4Ӊ^[h4FNh#]8$3Sѡd>|P8~A3#9YQgp`b5Q;“%2oCB .` eѪ`"ڌ' "YfGmy$39Ԝ_Xw LODzU47E #+2D d[8.J{95m<.h4M^[h&c·|;w틫3<ʞ?-?cYȺ >ȺLָv{mZuG5\kbf>ݫ7_ЦmmD{z^vVSN]K}=;&n~d]\vټ13ugr~㊞>!+S2yW''C[_vo6^xv͵gbYewEmk.8S׽c^`o ys|=u.>U- t]=X#^ݛX8ݦ@׮qtf KIʥg_;{(bg']j*ZjXT>RzBO>Ww~WsZPĖ/l^zVc/9̣.[ڽ~syшug;[lޞ:kmmMT[ŇB;~@lh؜9Z9`ˎҳzzE=ͼ5]g }zK9gDC;1.0D4w艤\ےv%u 곻E0q3jGayCWRO{9ZotG+~qϦm՝|-975v5_Bt 'גsg9:FuݺY>khXcp4?E=7\{ބmo6]guȘ{b ?L26 w..KP-/y[[?d~06:bI2+Hcm~DS]>:%;:VmMą YgVDN\vYnɮ۔^w`;{m_ y9ezc 斌hKt|=a[!iju.93/:g;UTiZ\mY{Ǟtɡk74l3<#ĩϧ%G{ [jw'20lږY\EyXmkH=v 97b!}eo߾o9bxh[2z |" ̓h3a1\*W5M$Rv# G)qM"q/ɸ}$'(quNVvzE\äcyE5(ܓq<&kf9>3 6赅f8o0&->=o<ƁJБQ5Sr FB7YиW')?ъ A=&d?~jGhek>}iMzm<_!``lL`D0$00M` a  `̪fBqB0dmJ QF%"Br8sH ӐlK`,ϖɢ+D UU8[}hݗ_)T  1Py.TDCmj2#gR\_p#~2v@H|IΉE|CpU IDATPr-a7&! Dj\H> F|\UH%% I@uSTqThE,i2\xD#߈%-S&S "`4X2U=& `F]`P_뀐{jv5eM-kT B*9I69ː`'r8Rt FʋXnH;KBN`Ț*G;2(Duţ>ǣ*ڮAt@*q2Tayb`&,SVaH˔j7mTU7!D} Ĭk[} ݸw+_tu#¦[@aIz²$3wRz2KOL)%>%FvD,% ?$S/I(I`e(9QaIWP*6GJ)dY,%@ D!DG 1313I\ =,VU8 TMlݗd(}F!V g2X:yd,`!0*yd dTd#CVO'lSsXĂx0$308@ aA9#A=gB̤_Z_\LQ1OIE(SJPEYRzR1yPI3 KW]Q&8urJ^S UdE]G$OfqZRNOd`(cz[VW>Q, 22<-DT[:rs[k!ǖ?+wlyf[&}PIxhю}Q _,zmhNn?oneqEjU ;zn֜߷<ŏ;`\g{߾?\ٱ@6wvۗ|b/}~nݿEw?M)Vg)P Fy Fssgx?lYĒwfL>fEgwμgW?KP:ttʋ'ɺ'lχ߽wϛyE+/ٶ=4}b0>}Y|ͬI_Ҹ34{_ zmhNz⍝ywăi'o\{M@eٜ%3S&`k{-LTXֻV}~ʿ*nտ& Ah4o9@@qٱ Ƕ_~Q1̈-yZn! bѱ/>Lw_#.s(m{"M^[h4?. _7{fP_~sWK%>o@K5A8~ Iќlܖ2 y~xLLJyw?Xcy->ڔ75A!8ܷnʒ.W+;Rq@O׿gU.[Z ZCtּO3_<ӠFA#Fh TFh4q ?>h4Fy` OFh:˖F"ֺuWp-0X|b Lsd?c ɀ8'* $sXZ)|c %c`J#eJ c c 8AH bPj' k&,p (@ ůCQA9҃A\#K\(#`1 rT`! uJC@Q`P0A !j.@E0"P8zC5c"s# %B\D"|,Bi F3Pb8: Tc:Bs 0DeA0&d!=$ J ~b!%g"ZX#(@ 5FRޢC |:`JqD*0#1Be $#yO.)ř| k ^"8p(f- ~ah$3$ Т!PULmjQ"#`! `ȤcF>ДA ~vqUZY(|VTmBT,Ie8`:DBtQuSS(jRJMXajJ3b1РXH$MyM]}T*>knȲemmgbDZ֯vk+uq4)} Վ(= @TdM:5ZsmL8h"" ƀ||ci~ H9u>r0Z\-{ @2{8,B .9b2EDG`M<`yd Ȑ6cMi.u[#Ow!k oL2LyƢRvZj: |MYI$hqe@B13V  K>cL!PJp!hɘʌA<̳!&Vhz!Z$Mrgd yFnIKAn8  j.*tżڒҦl3]=ry D@y^v`6Y ><Chǁ<+U*zӠ>#y9#]P3`K=x9jEg6m"tUI9+@m@fr~kT((@E?+2RDPLMǚ C)%LMX̃)ψ, (U`\BLF$y I9'bI&c]L൵ͨ:k_&HD&7eF4c6_|_t_51?>VƭOa*꘣=1w+xhnn|v#j+W8VW*Zf{칍wmm3/n瞍W]uYoVZԔկW_lɒ]n{xAF$^r ؘXX}zoGL4'q?׷oHz88QoJ:v8vq%S`;-|\? ;Ԕ;w >YsM7}dӦ]T$bkҗ{r{C7skS֯3yիo?K[L;9~5_/遣Mr,#L"Gʼnsg̜4Nc FX9G;o†=NLǨaCjͽgv#\0.lN&cLv[?_xῨ㳷ofh_~#z̊/[OjmquYSLV)OycjsŊL ;7xeoo'?ypf{ƌgDɈIzh N ){^7wu׼Ooh]s\W~d{?\8ڲchOf7GHDphxcݖ(F a!x ,E@@*׏HyX  .[/3WşjV:!FtZ̫O UW>v]!<\F H'aCq ǔ\* <,1F-Aj,UH3Tz}d5?Jr X#+oE}jO5*UC.\B&B{-+Vqm\voSZjՂ{ٸto V93o*o speѪ~#{w/_yJgӦ5Jx⨙?jjާ[`ŊBh4Hӆ W_'w@mڴkŊӯgu?w_O2%{޿=p{o_Hz7~ժ;wdmm3V>Ӷ/Ν>sHڶ˾o|h4F&mm3-{=ueZ͛q睏{"8֚5g-YrZoo'_ lk6{6WZeZxL&*qkϞCjFXS$cQY6%(e?c#PY,S1aQ6t> p\|B9ٲf9"Eʽ1't> p̜S>rse cFX2 ˚*0Ԇw1{*Z`YC¶猞 s]!aY [Q߶OF=B=ڌ4#uU"U+"DQ2z;T ]e]\HU&xD KQ ceF2Vk۳ cM'h4~F3JQ-4Fь'zmh4f<ѿ' ƢG(AXΊ#yc3ƹK.2\SԱsa5p,cƱnRlHYx*L. }]$ |D4!e/W\g4OM`ݓ ܮw'>g}ӴI#\6tΙQ;]seR띑y-єw=֕-0D\LW%䎺[UCo-S{[miHyKTv; 3ҐLo{ Ioz7TSg|}}l;kV;Ν߳#1J` NLs`ogd{K֧W9pLy_ڴ#ugRl{xS}ǩ,S0с.@-%J -9ٺޡvũjusFf#bn;PC "~,Rj6?\0ʛ:cti,FC*q^<ȨXVl%>#9iGV,d$۱#KC1ԌRh:NJ[% h4F3赅f<9?x0t)Шb q$8EUԥ#p`é=Ѝ<}jAG3n "qFJ2jD Z)`R@jF#|HK `R22^|8RyW&$@X1z;B)V,c~5bCZ2${YLuTdp ܐ`[3`HA*kX|e !*'`Ha14IC3U4 근P I %@H%eK@% <*U&sJ1bLNpN"٦PuH `!VT;0,q %#b;0]L ,F(oj(zXʚ:t龺2=3{"E(p,kbAđ-#d"E"j-a ud 0@ #2!ˠ#A28LDmaȈ%  Ȩ-K""7 EIӠxTئLuj|ˤ-L`Ʉ5d2 `ɄoҶȱ$&>g'/`[viP Y*3D KF!$K&|S4*LN0LaXҶ$"۔,&pN`ԦPLNE[Y؎Mi[RHT-=`"RX$@L%|۔X`YdTorJDA0d7 J!&iDTXQQ(gY2A*tA5 kbkH#yCńcĢi$MXD*! NAQ`rrl;Ljeɨ#MCSĂPec5bHL&M.O%|I99Ty4Lr,,ce Ihdұjǒh`d2@L)#,) 1J&-c0Mo2z,"P%('B/TOA% 6p,SږW%; "JIJI$H&˔QGj)'àxT0I%`s2 kʸZ&"@"< %eAQGL150DđMLRE``a2;HĄaaX%+!jK@T/e\UZTq-Alxj ZS4d)gxd·M2]ZqFI !:"nk~ a_7}w#t&k) g˕ڷla"e#jb mW/8;zh>1־_J?DlRZo gw(MNj~J%\|X]E DrQ QJ4$jbA6o fah$ |EYpY,"3}48MS}9|4M09|fl|I< \ 2$ǖ}Y2rF4 |qDDXcK_ pFAQW}\D#"WdwY9 /UZA ےyGYmJ|Τ y#S<m0JQ/0ӔMS\EQS˻2Թ^ *n QQX8۔UDΫ;+0۔AnA`߀ߏLj4' wP5/ݻ잆-jw]Sƿo_;cve: F|hYzThkXwE}W~Cjc_7?xomr[ړ//\_|](z߫I㳦D'2͛}Bќ|gsVwhk{74K?֬8nn /H޵J^=Y_n\uٞ۾lo|?-_Գٺ) 7]~w;[&r͛h4oM~SԋuO6Xl>(.zE9|drF~ Fss(m=-տ)^$ܮI)Ol2د6׬8h4[h4mS ?/zDٜ '~pZl[}\I?2P>v{DHǾw~>n6KWk_g}ќϠj4O޿QO=]iku@5` gl|+m<^q(x^|-6kj>U㿲'zrO5M9kj۾gz5:?O5tgYS>/BmhAKOFh:-4Fь'ϝh4FѼuUDh4?oqU%oo|:8֭/^Ry@z4hƉNO330%x q95 *Xl.' Is@,.dڠ>Q#&!G0$:_2XGO(ǁ<L H&$B2 @HĘB>œ] &@$ ACߚ*^4gPW<#q`Ϟ3-o?;^5 ,Anqc)1* x1ja\s#O<32i{' |$ O DH*|D$MLIY.֚H,rcNAf $&{c!J2Z\& (!@V V'`&{h ]&x bӠ|V-A8x4h@Ȣ p8 `\궤 P!y>, ,%Jr@H,Wc!ȧh%m3rF+{LDT獥X%}f{ jE8 Yz_T+Jzp'mDIU OТԤDQgP0°P0,C,=V2m HByA`eUM@b.K.`D6c\&c*%T0ܿdQR@yƧ#W=d`VlD| vP)CJe'*k@"C3 ӆ3%X |NDHQyrM{Icu_߽d͚Yn;9 xq/}nXkяc}rv37B5k^̻Znnn|{Q]I?eJk޽lY;|L ꪋܿ?}Uy7r%L-\|[#j >< 'qgK~nݽjՂjmqիո=yr׿뚚5\|yۥ~ڦëV>Y|~oǺN&c\rC%u׮}wܱqo~{g?r\pFgg;G-Y^}իwmxCsmߖ{⾚rAT@ԋ\e9œt;;uR}M}Q>٭G0rJs1|=LsKP!GrLvkHIgJ$x8xHH( r >0 hZg$"Lsz( IyF}\}۔CdIz PiMg|N>0j@g1 "L1p"Lf89 e9.I||l_n=8e  ~PjI"X乌0xânCs`Te0#Lz>CɄ$ T,#K"C%dAy@e)а(mfL  +kH^C|4R𤘵p$"ICٰD7A@cpuXD>D \F9 CY ؿ?ck˗mݺsOMWL2mjq9gNK;::`۶G-ꍼ6w~uƝzLI=W2,|k_r j@{Wr:L-F>"^zӅr__s?9,"}U?n{Ow~z'n͟3js}}5kn|o}<2,Xp}pO,4F3aC/W>75.|ك>3m:`i۷nޜZ@ooba1wOzCAstzLm:eYƙgx]GNd?~?MU _ʝjgGG^7Fh4ŷau}mW]uڵϨAkn46}PFuo}ow?{ ._Fګ`iƯ| <:FFh[l>I({^vu}>nWY&?>偭[w7> dinnz-j`Ҥ; ~U|[˥sL}7U4FьN&cOHLr@ss-aC{H&cUĔ))({~BiV@GGgTĔ)|e)VUFh4Fh4d؉v@h4[ h4F3赅Fh4D-4Fь'zmh4f:tׄ:zm]mU1f , ڈ&͘V# 6plB".f"b'B me_W*)J1UCH\ʎzj0r]0#̓1 +saGE'5Z-4BBw"R\nzpF-!u;lA;F8lFH~_*Tp%˘-, =Fh4^[h4FO8͋'rOn*ۓ&HKK E$8!r"Bt)xHH/&BH SCz!!D me]DHU#D?4QAHG]AH e_dn}(CMR ʃ9,EOT&1*V6"r]D1gj4$2V =*SeX+#;DDUWN,5ua7=N6c0BAF{2MUg) 9)Rfա\Dwh4F3g9552}'& >L"*~͙>ް-3ZfN®Wco?w6^^;VBM<"Lr7nOɗࣛ7ju:ϓV-^MM%/YuϣM.j&ҿKWw9>m{XtY Kw=熥 29`uܫ")?^-]y m-~;ZqMxy֝{:3&B"D0*UxU*U۟o[|wbk"VETpSPJ涻31e |?^vfgy3'3gf,=~ݖT})i_`}vIlt<ag^2r? xS`ʵ_2VFִ/,_۹y(Mᢂ`Ai-rCuJUڧWQtkꥣ*)ҿ.y]74rP Tmܞ+9y>Kgn|q5I/Yc(s@G*Uݯ(,_9g ޘ~ո#2}wOg[SS WYy ^*QGW̋/ܱ KUċݪbN\sk/hc ;~DUb{kAgYnȚ//,`C>۾w D`Aܾ:``]VXHj|1䜣r]ƅUM#ŋ7yw>?꫽^r-μ|庌zDYmO kWUʅU .VUVՄ,8hTGwfegHbL;U} KT[\vtIݻ/+<ҨLw{11_:rէ6aCFpi8]s'T#+%7Joڑ+6՟9pVQl.~×隳i{jzM2rp{,z}{RSb_|忢Vu/Y+}B+w;~GxkU.9~vW|8㢂{EhgO۸#qٶԀ/-|c1VV P{z#qaƤ,s_b8^kC^Q>׿~5oANIJz}q#*M<8oor]:`~6H=w=l~^u(Ǐ W-;PXҭ#*?"zn+冽2ӣC/+,?^YMGT Eê*`߷q)g8^XP%-뽲"%?9ʘ.S޿wf4kyYݢ9#^+u~_++#Amٵ2q#*~_l̐`h ӟbgeZ zF-peZ$#?/6zf%#nу*[{mX2tpHonȣ;9M7vwϰ㸹+96$;zp.$QkN~zMq*l˜fiz=c`mH_j X#1?_nHUEVz4[tyuJe/7b9ua9o9WUWyJCsF_}|y {z^P5}5Ul?,:59 ),vOvO2V{A?%vuQؔr]- {y  j!o9GT&JO]+TS'>_њEЪDvɍdȊ~!CǷ 5uri~nߺF{:GT&v~gS-~^uYfFaXkNB^;'2fH0f ;;BӿwHSwEaωI x#*5naUjonXSU{u4n}Hv(2zt*UYF c6 2 baK0vyڷk@ɾ<ʹO/(؜No4UAkK+ (9v켖|k떕vkShLS 5rqNSǢ$ޒ{*AwɩoA:AVBH ӹoAZ㲤*h[uִ؉z'O*ip[5 7a4CK h$'ID&?4fʠUd*1ištIj^VlHCv&;B+Vl7uD[kJ-E-ȩQ%&@&o= g=#I(I0 ,@Mf;cYF` %"&稩ąQ⨩N"EGEF7a3@Dr̀0t Y pd, ДxI @W7wT#qCw3GEq+5@ 0@.cٱ2@DpsTwdtw'UCY^]!+6ȂK薶g"@Q⛏'p ƀ" UrpFkSUs!qgnJsM-*IF@PUt[~EV)A$n4Te Q䚊UX6+[&WITp8GP7!r(XMuA$PU-q`^1UNJqwgI.m7HUA(KjE`3@CLvJ_ 709i/XL)Ώf"TúH4fYB⻪W;@Mx>O,yLQ$Bź||= 4qCJ$G{H5P{(zUE(R$׈ŻDۮL^vjY*2` % ŰXn | rj#U_6@?B9x7|6aLEѨ̀uJ{mEF?Ŗ%L<ӽ"g9| n{tں&ST_LWp<#qymwEC^chButMc&YB64O:RlM^É%U8 P3M)^ǣ9! MHz «;&$u]04ǣ;^T5CwtM)ЅGw CxuGЄ4!˨iԔ UA£;Ö%T%T!M(j041z GSe 14 ݑ8(UUjG&|[џbmbkzՅ$# fN(2 Mnu{uG1YBUхLjU|u$Lښ"|^ЄbVdnxGw$* =[ں& ]x5O ͑et"$U D$T*£ YFغ hNjJLӄ;.4M,9]RmUH1lhGw4 =-KC>ۣ IB_uM-YDʒH8vЫۆ.|^qcS045$#xm5[f{ u ͑e4TL)ЄGw4-ޘ= GS,֗aps*&5ѵxƳWUa£;*^14Gֻ=x]>J.TEh:ѽ籏 X&TM r{l1t!x{NM^GUDq;n}%.R+-6ܣQapM0.|&1xHuN躐9&j3y]w7TDoRJ3g*(X^Ñ8XNz9/׆uw_Z;owa80EF3qXg⟏Bc`̆Y1>] &m*5w bpC#YC ~@,y1@` 6[']7]D`А]܏Uh8 N6 ,^'l"}hTM%{L3U"c 8[_Seu4w‰ۂUUdmM0@qz?Ŏ.pʖIyt{|bF5sGha{h8q%2M> ~cQKD%<.wbMlxul-%yifGN:rYr“5gɻi^4"o}uq{m88b j9YjES0^*1ʠ;;T]2FmѝLK xc:c8`(@0jIQc8+/mwfѣ%q2b,EwjòpCRƆTTi)^qPZuɍGU"2U& Eb6s35$ǧ G%IB`FpbW!d2C,cASU$5Y"22iJ1:&Nb]# `,Q]EڰB 7dŠq!@qą[W8c1bd;DQ*lT5*$ &OD\tء"DKDDEXEn8,l7-IeIG!lMN.+EVWqQ\HF6dVP"\ˡɂ5-Hs8"MIf;ܧ.#IXS'{ 2cNC3HjD!`ԇeM5urI8ٝA`M&p@!f3]uTHs(:1ޘp(#b\_fL xcQ"5*:wDy5fC}^[ ZG&u/">;ۊ1EF.aF1t+>(9䕹(<~2oA!DB!-Q߂B!mBiK| r2YY$)QBieevȈ[B!-Q߂B!moJ탳^a9o '^ò#d,k$vv=US[{oo9pjlw8{gwLv1Q߂L0lg@ȩ!h(O @uŠ[7HiE:&;B8[BlS.=< ܳK;М{ojʝ{R/[ri؜w=iQ?z/y/[웾?VYAWqS O|p4식qqͺ~ϔKW*ϼڻ[Bl2/?CԮZXk?VgV&)E}ݱ/s7)L{d@ϺcyO74_l[p7t[9 &3u;KRϝo~͜`¡U+e ,\gߴGFtUT*k_i{$ry^|+>OvyǏJzr`=v~m0!]-!N6ts?T*}r‰83yʽO(M^7/'i{*ʃΈ?".\rг+;o !g[BRL{z ssB8_>[y1+WɻJl!g&[Bx?-q{j^NxƯՔÿ~l Kr'jGUDvYZޑ8AI(W׺u}c^y01'o;Sל̨;s{r{DwvIy;əS'" | ,|״I|װd뾵/ׇ7_kٙ}]nFϛrCs`gfyl =[4!U!.]y9a]s@~ߺ}k%5%=յF_ryy9ᒃӓW,,Ж6-|hTENykuVv!qԷ BH[BiK6|HbDC r tML*w:>Ө, (Ӭ3'qE}gF:Ѻ Vު|gBRҰ gB F/mYdg֭+x`-J=;;`->F @^»աF ̜9aȐ<زe+2zL*w]~тx{ 8_gt#JO-mCgJ~{̈vN̈́:;";lŎ?Glu.L`탢{:ꋫ IDAT ,O=_Į<㨯jVB ]oΝޣG۞C`-ɓ;{^yyMff%k]?;޸MvNvBi}Űa-ZU\Ý,(%&[{n۶ذ~F_=Ѝ=z4s!9zBph}v'v=˳oaoǣ%y}X/4yp]W9g_oߟ˩׸w#.F_?DNaMxϞ6 xA\?ć~:BHgoߟ1f5kv=-~7vy[K,:o[o}b͚fM~FMv뺒YgeWOƍw\tSOGOVx꧞z;uu͚?lհaw>5k58pVuu(H9眞o|4 VALMX;疔=koiw 33Q)+ʯԾjV++uJjPΔZ:c=$TIB j?U)d\Q Wc9CBދ iEo WY>ppQJm90i߷ɥ-[~{׬qu{Ӧ-(iɓϝjb%K2nfMO8Qif:,Bb/u[䞁_1pO ~m=0oM24iʕ[V*j4_'d\0턼[n-ZxYΠ=|tvkD[g'tKO8!U/[o}:f@oQWy寿~_-˾si~O>y[0Ȳn{_jkæKLԄաI7oڵlYΝ`d֬I6ɍꩧf1nm̟,//=?EB!eu5499irUN{I!wB!-B!*Է BH[!Bڒx4!Bcwv BDɜ%E;;6# PNEY30-_w]` }jBfegr*gVS&#_-۬sggv|zܸ{7mݢs,ajjgF  -;lX!C~c-K<"-{W7Zxժ/?pK.Kڬ/;;6hm&_NtuO]iͻu:wNdDd8ʯnַgݼK=ZҢM+E^٥Kյ~[E= ^MGtC446p;a4oךϛ74c#G4'[7~3z􀲲܌_^[:lwyǎ=۟!aշHCe-\~yfywI|:cƂA{9/~sB%BH'ǫ}E g{PS/sg=//+؁/N:Fպ n]wժ`pѮ]O Nw ee/:0??Q'z{#fM^ti#!BH+Wna\KBqߍ{oK,7>Z\cK|rVIIʕu]itrsg^=̟<6o~ߛ? ӌy~ sz0=%KaӦ]<~}%%eo;kɓf,\CP֩:C]=3B ~muv8Ppm}[Utv4'|`J{|V Y|;z^&=f7X]P lh7ZL8iZ8qʕǎ=of̸M'O>wE~+7SO=m؛n*r'd{ 6|#1ukvϟxMPUyƌ{G_}kj@ 3x8:V [,ݭKH qD]8p0 0 ,\cm_M.C9nцV6BGZ5Έnusi(|` Er]03BB7Ĥ@Co"}97L( 2n(c 8 hhuXr@+; 0@!$H︫0"0(bt6pD@Bc`瀘hQIĀaC%J3.PHN Ս8b"<`oMXLDDY)0QA0&r@n9K队f=v~o[?rJiiޢ#G?Qq1,樀(OjV^20׶eN9%E:Z*sjQI~[r p^խ&2yvQA45: !C9SPD<*lS%,B8ϒ:LɮbEҼ@ҥk˩yyYM߼WΟXz7~gϾf Zmg^70nz Ý92R|z_2?8?:8B!d9~UW<Æ;NCɣ2M331mM͟XD}DWa)- k; 7vp = N-l44cw\C!8چN5;>d{+2j=فE~?phᖾڴs`L}= ^KIIl93BIIա%Ktʭdi}n%Y^߰᫋.U+2j=Z mE~dV &ݻ{ !3B [l߾߲Gfفo~Aiiޒ2 Ws+߸ѣy <!d⋒_|QD,))>}}]7kh[S `njXzk#>bꭹtwRiiկ~gY~k'BHۢB!-3 !B\Է BH[!B-!ҖoA!D} B!<; ]/p?QkYtn0BHEGKO!o&B!D} B!%[]iXW?u !mphUxy3t1O /',^n !Bc9[CS̚\ݤo[ٷkfBHǣ̔K?r׶Cq]P]ZIfgdΐ)~;SkCm ^.Ma{=97]s`ZwăumNBOooڤC2k[?fZn,b|Y?{~i9eA!4[m_kΰZgk~6V1;>oTCsf]wcZr{D~װ{ћ=?'3~=]76K?ֽ[ܽuX޳%wós6_ӑ^ B Qߢ3Mnsr3"J+4(9q{jP~\hTŒwݙ7sܑ%<%=͉!X2gpzuy9fK!t[@iK޾; IDAT%Ϲ}gѨΈ&]izeIO ظ=UUD~z[B:h0`=n|Vx&{b_UTui~. 8bfTj~BHǠE>7n=x  443^c*ВOr J^ &pѨ MN!NA} =} o{K 8\Y1~ krfTo|0[эVUk囿 Mym~j4J|%eo<[2| Px篭ZVͻauZ>4xo<?!ٛCspO(mNxBFD!gQn薸Cde!3=)E#+ krb`^=Ύ6&B6?f2*?ydG?|sXV9O34.SVr;ziik#6zv!B]!BH[k"k5kmMjԪCmT ַSʦifuiV$bGP_iM3D)el93^;H~EGDHݵ)S~WZ7Ҽӧ|˖/Kwk-[yK/9nܽ班^_;묌'ս{ܹt2OYYϾc}.So':% uc!EG&BrsĎ>\@Gf扱c旯QLP8N>OfyEb67Ӵ z[t:y[:KtV:-[RXx.11]@\v V^PP!vpI#|aT/׉܅z  |'N|:44ر]!A >8'tvv؁@K,{KOl/9yfLLh~Y+T*G޼yύN~~؁@K&׌Dn6ѸB?)v `B('l٤S.;NuvFn]M;%$l7bֱЕĄTeo@nP8%`'@gf46}`Ӧ=V?TN6ŎZeZFPgvv) N5L>e؁[ }{fe sgR*.\(v p7<=r xp%q {J;h˗>r xk٥ǎ;"hE-4}|⊋+Ŏ:e% 6e./  IEP -=ޱcVLJ1̐[ed,1 W0xZCp>|0MOœ`25bTYLLhZZ6 h'p2Y/@!o،\gPAT CWT$v`Fc7_$܇L-[xH@:^OERBXV b>X[FaSEЖaw; J[@[T*%; %A2hcuu )ot--r @ HMQ(+An-GP[@ G-$djt,*ʕ:.['bG] r hUH޽bG'cЮ/ؘԈ 0߽{ Ď`]tn׮Ď`:?Qe@ - +'4f&aw`ĉOc<`EXoVVQP *ؕVbS3`o!!>Ǐc'< RHStU-. CK²f>Qd`?#F +; []9.v ,􉀝t^%%zQ@@@&S#DN"#0'@w Α[[Cnw0 -t[=DFqL(@pFc[=DEffty-JeDa;nG;+FR\\ɲfͷ<=y`K@8<0bGaEM_@=z8ԘDXYYk67HD)\\<=N; WTXU޽!7o"47 Ǝf67&O#7l;h׮キ맟~;Ngfm;(12,=hձcpXբ*~Ă ~R(:#IcՍ7Ϝ'EN ,.]kkqrBUT fU0l `K-zBT*J_RogjE%3\]_}պ~z ̝;ޞEpܹs͛{_ߕ2rZߟ XEFYQQq)0pѪU?lVw 32CC""kSRZ-3v^_P89HQT**.֎֮ 󽷘GX YWϘ278X;mZRDo6j1v?XwoM^yeC37sǎ}kނf8mڳCܺCJvmLR7G߳ZPu׮22 cN 90pQbbOi˭J#c0u6QahM mZ= C75sj0tU游 Tʍ/rϞ-J.^Rllrg555. cȐ"m/:ב#GZ]A[TNnス};s-[1Lq_?'2ohnD>}ܦMhzo:9mw?I~?~pNX}8Li#N(ىWT\_WY-P8VWoY%V…-={-!d55~s_b\->C)/>>b|~0A^d;+zƅ2Ewv&b'պ߾9mڳUU*+7VUm"#6== GQQkjUUm6ӿnUҦѸd=M1bȽ%  F{KZ1B 'ccue~`0 !u(jk#o;פ(ټy:T,u wzY\Wwť%[fsΞ][Xxn/+ŋW[C v[+{&߫k+57HJ>0@Q^~,/Dh'y:~~W_-lOHY( ٺRHLLkY֜z 5+$--kkbY̙19д!IJ7-i46Fc#!<`E}]]c߾rT-W#NT۷qJ\77%+a2Y'(ER(ilnVVo=> ,k5cR(oג%w_o~Yhl{sԨQ <=]SR~A.mɏvhQ;] 45`m||}߮Ds>&3wlQqWU*efMpgd ?`jp2O .Ð*EjX_$VnX֜>@Ѱz?.t•{Kz{܌tݻ坑pe25Bܔ/J5:/'XxA~yK\qUrw{/>M-O㛥K7M{ uq闑Qmj4.|>s:(ȓߌI<+oG*N}?FOuPֶee=x2 ŋ_֍- BgW_ 6'LzZlZ4yHw22ҏ{% e}3jB:*JO 'M6U*l><|di4Vx{Oyygi\Ed25 2ГrTell &S#uԆ YMM=b462 =kVj ˚6_?b0\ ׿޹sAQyvݺfdd,ٰ!+8X M1r;(/9kƨ.|q=P8y-պՋ֍=D'bF/իFG=t蝴j)S<>aͯsX]R!dժ4 WذhK7䛻rsWnr8.n#!LKSKZjwAo:TeVi93$!aC8ֹf0\kM/v򔔹嗦Lѕ_ܺ5kf~S :;;jI>5pmzd֬Gï==]'N|zw_x9DyⴣGW-,<7qjSC+Ǐ 47:v׎Ǯ^iѣ} l͚}y L >|oO yr:S*++kFz';FW ɓ?] 479 Cvǎ/j;9pƠ /~Kn߸ :Eqo C{x<β YVuSeoed: vƌtd lVVQsmh`.-Ä́'OG}ݝhرΞDt骫kǜKJS)(/j{z>#[5lJ,O _5NTG) L :i6f|RI@2y>0ixQR݁kf..,ruEF:)ל`=Z͍QJ6Zk Lz@,Zkj(Esc1;@P퀀 J)`1p%(й5x^m\(fB,v ;8VGƷ9J!@x-Ӻm80 2ޓR*:h{_|lk|0ΐ*7J)/pG`:cy]0*6kWTp{}ZuĞ\4@T2pzǸ1󥞭/JKH= >#0#'߻ Mk]1؀8ݺj?\Z[1IZ_REiwz,?0[\rz?xTk6_"MDfbtcq?f{T+7J=)Ǝ=R J+P461  RzLY)eQJc(c׀;+'([p'8SLn%p0 8nB|>`ۂX :gR+W?-pO>) UZ7l/{ (gn2p װγ0vVn61=kv$T"pyL^q^9/ a}@6p{uY[a\w}:l0ו`{3cz,T`_-=(FusCT X ]R~r }j{>(WJqTyXn=YR=Re-&lj߄:iEJN!F:PF`,Ɓ7v`Dz#b4O&FR}3?pz@~袔Z/c$6ϝT`(PJRG\@oGeh.ɾ JZ{ӂьy{.wa\=Q N<#}wI؇HJ)|t?YJՖ]RuKFzhRNݩ~o`Ǹׁ ` {GOJ*8~Gk1ZR`\ ZgsD+\XZ?X9B)eZRD*qci R; MJ{Cx&_Y~GHkJ\;N9d}qwuRkc+;RJ=g=>κ{^JR0k[FZo8#ϟ1;[13@4 |_+jWJ=l5Y-gaܯ.;$Z 㑷՞GGhS@'F#vtGM0nZtO8*8x^{z砷ckyRj8Wm:uׄ8JQ.~,=+w<=q 9&uQe ĸ k8X\A}Q(GVjø-۸܏Z6~$]kjw)BZu>h}R*' pدRj0 k?1NFǣBԦ${!B4 yW!h$ !-${!d/BpBNBIB!Z8IB!D '^!h$ !-${!d/BpBNBIB!Z8IB!D '^!h$ !-${!d/BpBv:= CB@n`(35VFiOALB .!-Ws8&;z3ǁ J!D<p8fR+^ tmBF8%:aow4ZDB!Zm@ZZ}lll[`LF$[\p8HKQcV="!R1cف%X?`0ؔBN`ܭyNll>ABHsW:2#Sˆ سg䐝M^^V]2tP[!D\<!!g}t6og"#g`x{YwSCxE_TT-[ƺux衇߿lBSecv Q.뚔zR,:v۰X|:\?С7(/jr7s嗟u!8#&6فTG1k,***a9DD\bG)XXlm[99+))`ƍ3bRfWBC0gϞfXK_2Cx6J+~~ 쏾JK]gf\Ӿ6Lvmg_FMվ),,dƍڵL";;___',,( Fǎ[!N>44ZkS Y|̹qAtS[frgp:v&..-[ u`"= 5G34PFԪ嬾bŊdz}vktMBBBո?v1|pFEӦy05[VL,_ ϴimY" ||,|n ^z)Ν9pr,s~u2jt?k!$$4Z!//XJKK+e# `+=(-Mp+餥1o<͛G޽1c$}!DgP\rٵbƌvl\Hi b˖,޽EDEyqade|y.vsea]Ϙ1AgKٻ>f= EDF.rk>$$DoFJKK/(..f &$daar6[}l!+k K(,Ν;yG0`r ݺuk؍BSdz$!!klJ{׏ yq]y'ӷ?V|I*#Fѧ/CE _9f=5-&Gl &FRn.ygV?DL]XsNS+2B­I$qѾ}{֬]{uaaaL.1CNNO=xya j.]&:z| /6f${-@JF_bzӽR 833f̐kMا~JFFV/}_{Ӿ7}ZRe@ e@%0xEkY)H`:Y&{O{{nj+5k^^^&E&ѷVzfX!x{+֭+ /sNgݺp~DF s%=ֺeFkWESǫJqq1aë߼[f#<|"qJHIÇߤ4xq:v["̦.WJ^ʴ֛Ru%(:b|6~sZMD(.NN䫯203ӦQ+сzkyy,_KB//U5E&#-ƇrJJ2Y4MZk>c{9w CB۶{l6/:tÇcQNrr2<V2{Eii@R@)ezL/c=M||E3V8δZbf^=?ȤI( v1X0sؽ۸&U;jYf;#Ug웮 y+2dbb+Х_8["q: G 00Pnm/^ @ңS) $opבoA6m߿[4R`i-fU^kWKiwnbϿ 9{!j2rH>3LDٴ)MWyv^PPN||1۽I] IDATcڣrb@Iy29iէ8`$#F zMի裏hbz|3Y,^ _JqA}Y^{5y_1r^4[;w1cƘ\3&oʋhzRFf #F8S ѳd[,5o[`k?%%ݮ(+S.AAV>jٳ3((0Z FgV#% 4cؿ0.%#U˨=u:wjA6E?O.\ܹsbؾ}>;[s\BB׹2'HHXAB PJ1vXO.7G[]4+ WWwDjU>[]#+G9"ri O?,ZR'6~Z[*RQ$^h ?>_}qKu$4#m ?b 3)(Ƞ ȑ#>}::u2g) L# C=A. [#xTo/1Ϝَ[UNn>x{+<ڝ_2jt~~~VNh+8q"qqqdzqFN'YYde%k9]ves9tҥ dJPP-;%%,ZŢEYLƄ G!DDذXDhes/%%.lDEOj^9 |}njIqq(,,t7[rE?~[)%"+돪x8r{=z4)dfn5ӛJbׯ%ZIBVGm}ʾ} >|864Š#^*wy9FC%1g22CU:u*;YUӛ+ >ljnEAU k`o1^)Ν_vɵ$Z IBVK/]vhPVgj}Fv^`ر-0;!0n{fELi/*Je?S^$,,oiExf!f0`w}7ObtxMee̟g ÓO>)oͫ](0;$Bi„ \}<3Ӥ/#GvbXNnL&Mr)d/30adΜՠMĜ97=M&Or)B!̦/ ]ta֬Y/f0j |6ۙb0ի-[ $$~}u`N @)2e ]v^ ''+`ٌu;_ros:P^nG `u[H0:$بzLkG!D PJ?:,rJa' R+{ !'EiRJMf~Ƙn9psʩ-qpQg0kqJ?i?93 !h nS*^m8ؽnNxiS`Rx{+|Ro*썺B!-9?J)+=0?~\ Jfw%”Trlxt/CBQ9?5oRuKSPp%ow0߆P!ٟ͟$]е;`[|]q?f^sBFOR"ech!|gɖ67[!D3'ɾ7Ľ Xc6,4^hҷT@%PJ)!͔$ 4r뻿B' zR-E1޼'BG}=(€'%|_ WR*@!D3&ɾ~BV$Y^2 !+A!D$ɾ~?94n}GLqlB!Q렔 23ʴp+7@5!h$}9鉽ru㽢!*A!D*R2Tz~cxaz}MR#$C!D ⒽRʢLTJմV`RMJ,L??QqlB!E%{}Rʯڬ )>UJ >z&_p!6:$K` szD.",$6:* gW};ިZpBR-S< v+[+\)Sv:) t) F8y']-łr""fr;H8N~hL;@QL)a])D@>Zqw.N6b-*_{ (rWS^S'*-E=$$lyarH)up p 30(SJ>Z;,X!DѢzRjF7Q@:KR!h` Bk=W@8_'m>A=cA̍7 S4Fk}_ ̮QJ G'#`h_1NP J }!}`K(]UJ={MGJZϕRsuMMq u u&%KH[MVql<99jm$qqܽ~=,\vرtj>L @eVݡdTPJ!uʃId8?/ hX 1CJ?EKAu9ƍv5SGpvk'qܘ1|fdPp=|U^NEz:k6r ݻI7C~2v\~/SXKٵt){^xESn@U·v8?z2 =A"htL{ J)+BVGyZ(BNR:`6( &@.+,/G?0goLB^^ӉҼSPnnZju|J5}Z5 {6𮀇6~! ;0euZ}JwI @`1"`|eo,B`Ik|y{;Z% (cxx w W欄bx7_H?9̈́!^w e@ pgo8c u=D KOa^@U h$ٟu p)PApݰ×FI'xewCA(P LZjr}3q`isDW>xl)d[dtQ'4Jv0qHZʳ34]e7!D 4h!= C`^Nua( zvtr0Dk}.rERJ]WNi0(ӛk+*;OjC4F)M.״NӤNQJn:)c!WNN C DŽߓ~Rj4ZdJmcG&ƙt5*^PJk3͎H:T0L/ <).y*w^:}@cڜYyaƝaP[mYW&;a`@+%o/樂Z+7j 6l!+WedeQusݾ$J*GDK^'[!诵VϊJfz?&j`,`?d ?DS ɾa\dI|FO{_̈5RJZkGyaUsΝ$M2J)*ۺxpzQݟՙqc;Fe@]J R!VTjx}RҌ֥bw}?Ѥ 21ђe>.exԗx4bj.EwsfC ?gm_[% pMBf|9Ygw[RBIT^7=xq=﹇z<B(~f@)u FJc1I0%M%'x5kH# 8YYZYkwxl: I!& (^ްWX!"zE^OET"*  Uz ! %'{~l 1 lyٙ3CwΙ3vE`_fQioՀ31TX7a[{0T#!N-~@kl[~=4!p_u] Pd>m!`6S 9 :u8vQ!c&ǔR &?s C /m5|Crvx- #1:mQJ]^`/3qiZ_qRjhOŘ =o3_O8~6vJOГ77HWL !JANGয়شjR|`kۯ!-J<-k/jqy{&L xSMk~ SJM^ҍo#'^@kJ Ũ P19~! =U: jٯ^M˅iߟGoYgX_uW l+.lSJe~H) ,zk. B߆îE m*H¤^SJ}lWiZ:#tss) ~zUNH`mٰas?4I_~F J'Kx IDAT'ilRBl#+,HCf9@OpäھwzABlY)WkB_~Eւ{zVx56ҵk9O7߰曉7qz*: ˅{f.]!w$YcXN'NԌ]zcNUd=vkEa;+v;!*QJZ> n,_pϞEd|l?r.zdj/_=zzxXn\]^ vJZ$k"V67ܳÆ򡇸4$" _}-83ЃL,R5t~OWB ?c 0cH^JU7wIh /B G:RiFvfzJa~mo.Zϵ8Nd"!|3 pp,bZK0z l,/YqgY̩JW3 BwcsaSX{ qN8QO6h S7P|iه;pρ B3@ XqGm7(kOp5 JP"cФϥ+,8U1!'u6KwVN93jϷê;Ͳ^<3셨o`~|t-K~0ȋx|&uo\ftMyXثJw4f#GAx{!ֺ  R?΅[Pn)LRjR+;x;rVAW\ MDk}c\L( `ip>v73YkA)WJ[MV@RJkUm+hm,:5RCf;T Hiw,g{Assi_ PJRsI*z(Ÿ? HWJnN[Kp]rs~:eKƥD;4z4lݻұ#AuݟZe;3(ꃌ'D=ZRJ .~pMӊ(x`,$wPܪ{JaLG :_)cn5ԧ3(c3=1ZgjW;8ZTDqh(!ò^b{L Ч]22Ȏ {3s&)tJZuN~-_̏u;69 ~NjBX@k >4 ➀͉aWˆa(3HQլl/Oȏx #]йZjW^IK/e۶-?%按7C6%ukhۖ>:npdfRв%уw=~ݻR~.,oR"f[R_b=bt FG6Cli[{=ncukL+N\n5TZ|'Se'$~R/'`){8>LoBcfCZ gOB­5n))8@5<8xxC) BXLk>XFÆFz 2 <dC( ((h 1Pڤf7d{~}Ee[ZW*ޫk0?Zg(N0*ah~aa(lw:"h '$,|g,~,.,2ۍsN<)),";u}=wu/"^?F)-0~\H5: , 9^~O)[1&RLJ<#`hfM߰."fC!ChCf2\_ϒmϸJmZ5f`/Zfz}&ƣX1[y@zX#XCk=M)_kj= |Q+u9kg쎠+lv{sdh 9[?W]E7ߐKдi Bu+Gá?k. ZxQ"% !cGS#pà ڶ' \Yֽ4 !ZoPJ:'51tyPBᇤf/ce`9O|S1y'  %^!@m|$ }UkZ˲k¢m䷬`;/2ȬwDxsֻo"4²I&DfAh!6((6 xn/HjBрiRSb !j@Lk%7>0[1C)~)@,|m R͔S,)71kI+;!`/B4rBFNBIB!9 B!D#'^!h$ !{!`/B4rBFNBD8Ȝ T́ YkVM!D%އRm1敾sTJ6VP!{/SJE+1擮 ;g RZ_U!_{/QJwOb4՛BFEС:A\)`i Hl Ev>JBN(Ӂ d(Vs?VX JlMswW 0 #?ӃBH? J)u^y'`7\nmxO=8KcZkWB!D'ޝ T @J,^?}.,Z KBϣ~PJUU BTO PJEK5 apv~ ~;"B!D$'/4<VAK!N+< @wkT`=BJAy_m4WNɫͲcBH?J0.ߊOkKbݬwG-`_G`9KS_}8}YRQ>;x! {hv7k94 t̀ɾ>B!& upGjh Wn09A)G@!D&nB XCޣb`oд&$!h$8mСK+%0fYο !$0B)5l,]˃{UF`;3B4d26~.7^`\E9U.Y]"!/YWJݪ:O)Pg/2z[]. mw!Y J}rjƏ,R*zװ6K,,5YǖW!04f|T4 \5G)u:ՓOk\)5?fiWجl,׬'ۀր/BQ[?g)UZ׬v Lj]r%؏A90p@f$%AѣLT OgNXv-9IIzVɍ7LSQat˭ 1lE+ Hi,5`^#= \WM<`>xXH-#F2õs'ɀ\.R e(6kfٳݤqm55+Nu]{~ϔR1.8@KJl`: !gWa9iZcjJJubtNk]b]/;"v^VFYp0Th %SW ̡>`cͲedxEָPlZm6̿[[1WAf )jGѸ:I)u< LZ/O)f.nև*mϩ: t6~[k]X{~/&k.|pN:ȇ%оڗ@@J0$/aEkb Jw+u:B4`^VJy 6zCWth "&r>~ȭSp02{r\wͲD:ffȺul ֻ7]dُRhU==`yPJb\bT4p,qN>pa | _v`AET`Rj: !X/͚}TVJ] X2US^lJ q^}5} OL=p=z?\wjR֫}@MncM|x+.?NeZ߽6TGuGkK"ğUk wN3)sa!]ǠpBRS9zy>>Ko%Ny+^4b0‰hWUQxy NV*Zo>FjuL:hB<%Ve^)5xXj+|Ӝ0~$!;'5{>r5WL5= ?@.b ?ݍ1wJPr@k30Xycy ޻,ZkiSJi0wSH疛 廣B upXC]9]?rʼnRJ) ZC. 7&ŻE)Uq!D#$1Z3`Vz^k!ۗW@\ q^ !$(~3|K~g[A+bX 7%cy..G=VJIN!1 Ak]\3\?],8 \,v` ,WLɣ*O%hD$'A_p0<}ZrD]fI=QyYaJ>9BI?Z߀ P S?e.p Fބw("s way`*ݶ]L!&iaL)PXh2.7^iw%y~^\+NE@фN,O_Uj^ }7Aa5 'Ak}c܏59_`9m(ZvJ˔R+} t.Z|ufyG FD)ꢔJPJ+R2\_c$s8ޛRu=2;Ea3' Luy+ ~n`iPV! `z+E)RZUJ}qK5(/m0p|d7 8hZMVRcyf$UTCH.fCh5((4'7Y<ߖZ(yV։~TaU2)zG|@<\f/K9!Ch|9iPGW_i;d-!tnvdDtϞD&;(oi' >)8Y96R=c5.f$n0/FR>gyJWKs}QJ]VjϬw"Z5Z || l0=f`w2j6r qN'G2oV`L׮Y17>}톽{RP D+`  D..O^) c;97yH!Ю:C"h` C`o,i-bKo*w}fdI}|$mmT6@W}T`:Ϛ f}Rj;^Ut30c?FuVET+M>^&150h0Fj JT` A~^OK>"\ ͆rpGs`l|wR9SkB79u/b>1F=vKۍs iFZ  K)Z`/a&dB*Zy"TJy4OzF4TJ= 4jP& #øNfoAv6~Hk6o&p+ˣij ͆iZ @:h1)\d7Pu1p`Hn LUJ n1+/`/TJ^x2 xSk=b>T0p#Zb>Vk_,r|&];B}ٗU8k( ͸mM*Y!T7Ac7ܷo/<I oCaY; R\/.D}0ihR*zUwZS/VmN/7΅pז-ܗBۍp[.eͦMM4%$2qBR`L <+D`,T8cY)JHE!u F yAޓ&1d؇1ڣ//3۰G< IDATbz}Y>;k$ {S4pٳ=ag/|ib>j7Xl~+ӳ`>`/#=m,8 .K^,j>;xqv|n7 SgU13셨_o]wƒ@!nJC0&b-N9}d+Ļ-;^[c$ Q1Jc{7Sצp (C&ԓJuf K[jJ9$^zb7`pa~o9y<5۴֟17vJ0~ Œ*L cfŧJJ{ymx%:ڄt:^}6~l!yH~;g'I)fd+f\1%KȬ<aJpZ! BXHk=M)5\ !v; X oGj VD]aJ*h;0k3RU_ Viݗ3N;(hZcKπܶŔ,]ʑ,r}7ux8%TPGp pu ,#Gx )u@6mxyO}(6[jܯ`My$ Ǵ.`D8s3XEoS۷ׯ'S'fvv%*=3 l!w>B-'gZ/n¯qlǣwQJuĨw¶p9 ޼#]=7kFTvpO.Z=ۗ8YRB ( ;jʬ{aݎ}RǍ /Pm{oKh)0k<{MwU4ɾX\+N +>X>~th(~c_=?l6޾p)xOZ Ge$^!$Dc)#9ztXpG`/~Jko,}p5Kkcσ͞ZWIBv+ .;0RLsw|{›$ !ZP OMצi] cd΅EB9&J madޙz_5 `pI ?'^!BQ0qf$<x9B`u,lFk똅HBBk 0n;|1Z=NkM6{.t} 6iz0DkUx{!h@[xNr@FNgzAg.LCu{=DN)ru^=2GJd"q"9qg6:n-04 "H'99`}?H?l3`{8H DX+RYk·l*H(gHy-HD8BiUJu1~DJZ(_ZPJEX8 ) إtjZ$Nꞽ\hqJNرc˒ "~8;pCFuv!5iҤ>B ! %$$4Nc~kc0P{nl?=I\BR Tq̿= t8&$$HgXp8 &GO?eܹ o[T2!UV9oG/ ԘZw8a44i|[tr}⡇B!6p| < SzY5{Xq巁W^j 5iiih9x .<7"*6f`fuajd_ ~G)g]gC%$#B@84&U{1X ✜QFz!~) p8. ş1Q{fM6u͚5_~H! >{qLw8?68'r-~ȑaB4,$Qf&ӊxñK8zh K#$u޳ ]yw8}-,WDDD0x1cΝiޯBq:3.DCVf*d0OSȑ#-Boju24HNNfƍa fÆ $''guBa#B4T7XZPVVƦMXf k֬!==Oy}c7oN||<ۗ`Z!Յh44>sV\q=±ۛtfrQ?z( ,`1d/ E#(!!Af$()6^Ov{(:nRv:O+MuM?(Hzz:/by@!~!,"믿&11n&Ѳ>Wӳ12֭[O<-B!I`ٳKNw|]S\tx'#--#|r]OB`?sL #8t_]!BBZt:?OE}z5L2Ś !k{cѢEtzќfЭD6mz+VӳgO%lС?9sMqq1ӦM#332Ǝ7BqlnѩM6WNڍ#"1deeQTTġC(++`VO!N^kիhv (ڵ5k_4;ұc-Bx~۶mdffЦv?x. ڴ9B֯_o>2d^jB`rJ;uU&M%((Çf1bJ$cy߹s'[uB-Z0dHϛcct 5j1'&&Ƣ!X322 ksB:5yDD=j>ԳgObcc˗>l K#cw᭩馨8 =zPRY2ۋ9Zs-q5|b\< N||8n7ZORR!qq ޽%AQњ;ޅ QFgСC.Bx5JJJ k]c377'66/_',Ltٷ76qc!Ji9'nkΝŤr}-9pҴligܸh.22}ii6[j~^ۜerY8\WyVٺ|֭~61MnF̲ Xm*-֭[ILL_%%%Oy.\… ˗CCC0`fРA4mڴ>,'`Npp0%%%T5|֯ϧ[P. {iԩ)3=PTE ;))-VwMдiAAPVf|E ;Gո͚5ыl&//<6[(q CkW_}RAHvܓ븷kӢ%hq1G~Ǿ}S).ҥKٷo<1 !?{g@^8M~~:SX褸r~#l"'eeZSPpߏ)_L2ڵk->Bq,˃}˛[xז.aɒ?F>}XyD-JJJxgXnmڌ_ S@O lFAA?|Erj\f`*lι\E>R-˪s~pcQCD5L6͜oAѣǫr |3_@XXWn7SNeVc .̚5/¢ q,˃=E]D@@ش||`tqqxɾn)44?!(9=zXyD ;w.ө}\_ق9|0ӦM_1bvqÔѮ];ufq 0E+^_NQQtMV"Q |@T@zzҿz lذD+O𡈈\g*M,&GFFr5kB֮}ͦM3f ZB ,g-ojJ65:s~ᇵv WUA])%S$ 7K/3 1]vrXC%K^o+OAAAfem\JӦ,a$8gHIIaV&C |}y|C46JNJJJ[[U6 J)&NX>?>K 6== Akqqq%+Wer?BrrJPŦ|XR8`'R*P{wey/pL&dNB.Qr :JrĭrSRB{sRT U*Jl@H =Lf} !aK2|yyy߼3@fw#B!BN@bawfܰLɼ⋁3暚^{mEEpmRf^{̮]s^~e.,X(--"if/*fPTT#& ޼ P?<*TzEQ!wE2E˅:EQL`"`4 O=&L7ߤ}rr3a­$&fv먩ftEFF2o<͛8۬8ҰPUU@RT4wb^Ŵi ~L39t}ߏB hnnV4 ZFvIBBFP* uFN& 1"nV)[a/Lɾǜ9s馛Xv-6mmVm*0ntƎ8C:N ؿ+#""9s&{{6477Ju3,H/Znnn˜jeΝl߾ovZ+W:%%\rrr8q<E !6) L\@Rs)@ WQSm%,=?#'?c֭vڎc;NZAˊw{=7{7L${>U RZছb#w)XG{ 3fĠժ(//=(wݕ_v neJ>%f-TVVfQO,PV'ӄsr'Na6l؀Fa̟?Ӷ#_ ZMv@t@({nL1x $xPQ *l}$q{1***(--@(6j(NԩS8q"N'GE ę{fs'.W=.WhmE~~>_}v#!!]KaJQb%U !BOsG& !l.EQo=(! !JEwa{j&MĤIxq:YVIHH,ّjueL-tQUՉϧPQyƁ׫P^n3'~ONGI棏Q|I eevLH~8x!hZm?@nW^y>,Г7=q:6U*-ju:QQO#=i:s*\6l͛Y`d+3{:9" {FeEyXS`pWyKv !~Lajz҈Gkk+.WK2'`A2fQ\lc6݁ɤ!/DWa4Fs`M#ɓ Atb&?tO :]O3jzt&ƌyA{GΪUaѢEz~R Ⱥ{ۻޟϦWz;S;I:q"ula^xPXdLw%SnNNVwG}6F^Ig7=菫MZhzݍǣ0j:omDBzkUUc]?-fiٻw/K.(js5 = @PSS3<#/HbĔKOϣV끠eH&%EC{^ڵ\z^^3 a[вbE&NO]^/05۷wPXtG=g?L8q˅VkbҤb0LBCAf;8~8? v~ֆZÔ)oa0g}oɳ^?_駟|IF񥰕ZFQ|=ZpxhowuUˋַ*u;/(_>Lw'd;|[qi$^ [QQQLq|{tzY>S__DP&᧪[0~bnGq$%Y,|I:g2Ka'bԞbi~Ç; 큒NuV=rϢRE|wS;vyyy44I΅LRXtqߐU{uh=zbR^LDIʐkٴI|>cƌᩧ STT@Jt"#B^ oIJF;B%4b̟?[n;^!qZ-[FttYB' uIvQ 5u)J҅#I#/~ ٽ{7۶LS^f\Z=nO岣VYd iiiOtuu韘`0RHySIKd_hnnH#L҈VYl/ٳ}~HLy uⴘ%Bd/]222{AQhiiVz=FHbb?hZllGx7~\\>{mm<_GNX"˗W&n9 _m2]vETTII^}iIII~KL%OABB dee:i\}SW6.|rjN#?ouB@]]ٶ%rssyB|T  b1ԁH$J||'AJU<{h$!{}vf3!se#fssNz詥%]uhjں:_[w9 xa<0D"sA9 xa<0D"sA9 xa<0D"sA9 xa<0D"sA9 xa<0D"sA9 xa<0D"sA9 xa<0D"sA9 xa<0D u𲊺Qm])3=a40f󹈳@#Ahn9I]m~ \fN`Gﯥ@E#t?ȁh {"sA9 xa<0D"f`fٍw2fiffm$Yfqf#3bf6OdIo5IRǵf0%͐tCl]Kwsgf#f6o6'.t%-OVxI#)97\bw.9l>9Wfjs/:ދ}$iJǟH::3pSIc$%Mr=;%=*ǒ2$97o75)i]&iiq+m\$nb۶J9fefK%e vFH:9Pota()4UYf54BjIw; cmFN4Vsƅ9~=hE xg.7 ,}۟ I%=.aH$z3qpOͬnj%=蝪%%df&CIꪐ4rp~Th {&tN^!)KZIKk6Iձ,YXOHJ4bm],YI)Z#{Npg%wKQ44=kf/J97̆*8,Iι%VwIys1I2}V&49qz&v|_Iņ:if*M[9pҧԹsn-᜛;6ARu?TIwlEWcs]߄ܙxs9wsc߈ ,i] ĂE@] iY?nyed7 $i-0Eq쾇>۩MaoKafla,eϾ}Cw䜛gfWH*t"I],9W?Th+,[coY+97jsIv +54}5)J%MwΝ}=@;9gمflΓdI, QTþ)dfyNޕ̾^:34N{8|30EcN&iu}5I5#Vޗ/^r5f\R%][뜫tw6|E]H8GJZsnaNIlyْ*:d7Iڪ3K Oi^BY>_o%i21gI 3sfh~k++y5K%EKwŤg뱿hv, OgIrmi}B?bwLҶ;ܝkmK0ҦaJ 6]<36eo)j/saߐն)@0K xa<0D"sA9@[M-ݏ@ ̵#fO!HrIcI%}kĔHvb:a _xIK:CҐ}8ޖws-Pb`\/Ԗ5h~ u t46`f>IIYR߯oKѥS['UIe{T')G%tsUO&fN3oaeV[@GCkefv[$ jmJ-ҹ[3^3*=Ez0G$INO쯒qUIy[,+ݚ}̌åϵut$VbftWk"ytB龵vpyt2iSt@R]$qmЮ&j|+U?ųșlW$ ^(ݲ@:kޭVzbtrCWJ>OsMWWW+/Mq^Vﯦ_^-$J}DV0$()C2'btO,5#$IϘu߮H؂aKh. 3 )5(=tBI[N/f# )q5@!̵3,MIRf7IүJ=rbfYh-`fɒ^#g&KU\Òޞ".$ƵhGID3mSSEVnIJo/TIJR41)暙H^V#2Jzh I?oJsIRZlikXN&.t8f`fٍw2fiffm$Yfqf#D!r[Pw^}8}"bf6OdIo5Iḿf0%͐tCl]Kfffv2fg3볿anN5fK3˾ã ڬdwݥakPHWOS6gf}G~:qМ.tG$hpigT}1RsÝs]&is~WE IJ%fhs{4IKlfٹf}E/W 5kTvݚG{[;'i_B뒜{$m4fm:smrMq=ܰ|fS3{6\[if3c/iܨif63{F3%%Ŏ̎0_ٿC0,̮535nVnf13̮ک[,̎GIfv] aEskp`fwY^~cff[蜻9797O5&Y߽9nk3$(io{,u)W_*)'U |0I6=ˌCp\$.>1l .ntkl(%af$ QR$+Ox}uwǍ>te%KIg;sKk؛zX>IϸOvu`cf(ι{6jaSZZ53شY!)v-4RIE4JD~mQ,-Z'c݆ Nu›7k[^ZۍmR]ðs7H3CwhnC EU}ݮ)f圛gfWH*tCYsr,97\qꪝهKt\ ι==>04BёvTӕJ;cT敏Pͷ$Vtt sCgN9[ض,ӴIHU''+aݨQV\rI3^ԥa[j[7u^Ne;0q&@7ћo5\+Nm̸sHHH&1 ,'$l$Rt_Ɔ(a_E.St"fIQbt1YFNŊ>&I$ 1PbS&fvd /I06՛6J{s{`fc%3%ur]Emd`-]{ TWj-M8$qFA;ƙ"IsE9)6):r-iwI>VUYNxMzEϷHڝGJ:Ngfb)MZmG%K؄}D0q3:gtQMjx@wIϧȜ9Z׏JKUJ%3⋵c&ӄ?>ж9wsnCjv)isn>9wLgxC r97MҀ(s[c4%f轩q;F_W9h9^q&i[][I2Km?ٝak|H&sqVt;ιF89Z}~ s;Hc*ڵ>Hmfr)r)zK榛4vcnM޾圛 ):oOl)j/sMeێ}CvW~C,ϻ$0Kwޱz_ipg8jlsG(lٷx}v):yI?/׋ΕKzl47s]* žix, G?r},?;B*Uun uQlbzK׎V-+N/ܗ-s\3sν̖9_(C'FtER]%@ ̵_KjҤ 6Ʃ͆Wxdts[\ p-t42^5COo-|Z a8ސtMۊQҰIkC.\tKc|"'-zZ&hAιͬc+=~t֖8 p4؊Œq[ϯ|.)9#q-;v{[V]q]cf%#twt ??ҚwD*[Ks'$EzJplR" )?xG`gEttιlNJo,]T)~?_KN>:vJ05` i'C|o&TU_]isl񴼻o;|Ա8ktϝ:&"أ~/7a(e\\pN3W%tkB5sEMv5H=PFu^3Ͽvq'pk@AKu}/gL*I@HNuUYٗ՚9ߟ䲲/̺EBsk]|٭+~|CYiAC\>b钔zl{ϧf Xf.'5߯۸gN{ۖM+Si9#=s>X{?rr@\f|ε͒윟TKK2gChsvpчg K3$k{˻vgjWrIZvazP^0`>sKKR^+s.6k%/ܼ+$iv~;zUhs$I+Lt$)#ڮTR*tq[EZ{vռ:a$OrJHR3f\O;s[> aMy)oúřԵ>bWo(5eϚfN^%0"}%)5u|]vΙ>S{XrW26(Iotw! lKTwv^\oJ^dzZ^-0̜'I Cimnc㻆%iwj9d繒}Jsq>F4m@A`+L+/۞(I9ygW|r͵ krΪ-,5"kHϗi! $wN|ԩo>)۶yXI5 sm]SZ-A;͜kζ{LT~x\YuiW\\~$o@G`e9}79ꫧMܻ)??1<E COO'ud\cOԖǛY֖rsrNZWZgIwUg%}f|ZfϿlYjJnwUk|BP0_VZߒ+f  cw:wZYvIDAT>@a? $\vwY i.'lw*ʊW\YuH蔓/~B)xbHO7& ÒTVZȝ9Z'I@R|N;/3*h>c_]cFS_c>'Saa$HMI&|N8' ;'s:? Vnz'X5dp !'|O4@0K`gͯ95Х7p?o, y>ߠY+ |&g>Bm$_ΚL |C% HPMJ%)-#Z303$)X5`oN['ħ~>5XECn⤆TPG/{VUpgʂ>s3xqRVe q jj$m%96bq@\$l}-gTϊ+,Em+?l]&u3fkf 4l7>RW񔺪5nAג%)>>1s>sfNaYL"GwJQ[_/0sBv&IZ~EKuΔG!)9st׭KLJk}KݜWd፹HRR2gm}eJҖMooߔml\tZR%;^r_G I:+6wS)9͛.%3\Qg $u6|I?!$w5_U̩ԬL5UY- ZZzn}Ƌt9;/Km|=KKL0sgK I9]m}]#? 'iw5՛>|fukN\֬|"ӏU[-D.Žj^ںϸ,JM͚nXUUi3Z}F17&$4D$_ޔ~˙]7gw/4]:⬮KҺzqKn8\;qPo?Nz~ AG9͍n5K=zYݺTޭw+;wP%4ipֶl ew6mx/>X旤Gn`&0wCO-(Ҷ-hs/˙áwH^꒒R:KRuզꭁ-qe+| 8Dιz}Vvg&:jں:am&=mi9E7%6rzT vX '_)/g]s׈v0@3c%}ҩKڋ~t*Il^8g9+|UVVXUQ_]]\$SSRYj _<;m<oK]Ig^a]$҂8I̯-0Y|>o-WsA9 xa<0D"sA9 xa@֬³³w3ݬ`]~|颩v樱5UnqHںF:kΜF׸H$'=&@oMj:[K$ɒkR] мϺ7pqBq'p$Z>;u9iH _ֻߨo\$y颩p W֧誝Ï(̯//7k9qq [h#L(MLJ /[<-==3/XSUX#`[ZzNhə/MZwa|~'IK~߫.7G$mm󪤡#.D6c9c9x";JRI/gY-ua6mXTYY߹W$mݼ*nߧ貪Ҹɓ}9ZyԄ $iOu~{xHq.}z޿E,)=4C<{{EyQQߩK>oWu]y.T0wY0grcG2n>ϽC=̭G@V,>gy`KE)ʸ7_ߟ`w[6HKwUQOh:s@S\%|U'UFS&I/mwJ?GM8޼dgoUۛ6,K~>\~IJ{o=--='?7.K?𠒆#FW"}}9iYٝjvX#Iq^}GnX8URq'5|ܵ_ŪӇ8li}ަmF];7Ia|.5-;WӊF9`ovR~޿{r/x۳..6I29s1115Խ򩟼صn@7|#Ȭ/U[~]ucȃwxX -]tFvMu_rޞj?҂-W&JT֭]ٻ I{XU_8]ֳ+z ._xzvcz,0`ʶ' GHĶm]ݥ/$I<[/>豇gPMI ;p%ϼ/>w9Sm뒯7ϮA͓ '4q¹pqg@ ~}`͑^?GX:3OQ%:PFtbQ}Y|iɶ䔌gr^<Q_WWQd| =tKۺ]I 'KLLM5ާ,0oY9]r̴#.k^m]%3" rhYk++7.O8d|$9h'Qu#Eg{t?֮^׸UgnX$%7[ݰQǖ}5"?gƤ.Wgt nL;`le$>>꘲lX(9!)5ߩW$m[0grfZzNa/[<=} -vT^5qsm] a͂0w`{u?L~{n^+~Ҷ af0K20鍿|n =M{? 0`׶u f"Ww`o˦I߶ښJ-3#oc9wm7@K"PCz^!I.L~G}۶͟Wm(MѭJ&}Ooa3ݬHK UW0kJeV2u'lX8>XKN-q֐Gft C&IK|U__+tС%Djk*sf]^V7p>FW\C}ַzŗ5Օ韽k= 7[l1Ts_|j1Ǘ,YYFYiAq'^5emۼ:[UW}SygUuگz츓nULZt9gn~)m[9-CТ#9pڧ/-[<-{'|+KO :{!UsgSW[wԊ-WC5+K胾SRT1/ӹ&S}It5BVmmr}ֿfts+^n=֣}<Gs~$=R .ңЊ:_`߀JNy/*Y9]kof^t_"IK~胿ٷؒ`]ߺKA|Hɲ%ӳN8-˖L4t|S8Kgd 4aߒ-I?uj\\BD~?GLNqN_u]+]ۿǯ:ᤉ[KJN ?ez$֣UsfNosoA%g%V[[I$l=lsH_ +/+xu'VX~u^~Ϻ^yϡ{?i$=5ˊR 96)>9e^<;v3λfMþ,irMaՏ?t " CV[SWT1!7G[ _U#*>z_o1fBq絫e|>Пs.NsHf̜z5 2¡zsm/X߳nUi'u m zXez^A:3l{xu ..2Ws{xuþ)ҶsN}*2ϭsE32NBbr痋|=Kffvіs>4;j7w6& ӏaY\aMrJFwrꊸ}vPdYN$-]4rC"JϟW/W}64vYc2:N/};~܀WWl[|ío^}FT%$i9FWg{E#2r%6{y׬}WڶumJo s;Nti[q* Z>;uȰ#<"9%=,I۶Nu9dǰ-W&FacPMúmn^4tđe@ x 7$gqTYJJn߼qyRM #FWq丸H.}k%¿v!Ï,s?<[dz+#Z:H$b| l舣֯]ܭԬ$nLXӌ=ްvaaG7>{k"Hsh9{Aں#sA9 xa<0D"sA9 xa<0D"sA9 xa<0D"sA9 xa<0D"sA9 xa<0D"sA9 xa<0D"sA9 xa<^NIENDB`libvips-8.9.1/doc/images/Vips-smp.png000066400000000000000000000261431361153320700174460ustar00rootroot00000000000000PNG  IHDR IDATx{XUu{"j&)y PA9xijjy*W3IdjYd6fYvlP<+Pp~ **Y{~]ו{)}e[a*q8Pλ = ԯEܧ:A= ԏG7$P øhXrO"(9u== dH= ~tH:y/J.A,s^(''e`eZZL!Czll”pƺtHR0׬}JP+Ngw'VW{]p !)W9rZGUqq/UBR"(5k4|x0pJYT˩S%0a֯ɽխ[ G|pYןаaԠCɑ I%Ξ-{mGejԨEE]kHTi߾SISf -%ɛ4th||퀠T-+BJG2$I?pTCRPPS͝ۏ;J"L٢:1cz曯6{$BPؑ_LShh3-XFfqJRCҬY_:GX%ѣe=g8_AAMɣ0W_ԫU5vBQ [wB&ݢk۰![ÆOYO+!Y3(Ξ-̙Zpbbnw1{$DPJ11kմi-XnlH^䓽4i{ wO+`Ezڷ@Gaax,.imݺ.ĎXQSoE_~yPS,/cGFLSpJI]J2wkz普J"ǎTPpz<% [@>=%x&WB-у Ď<ƍ>| Ђ Qr:K5kVRRhtU45nHjEOJ KSB&=hx=[ckϞSzcYOkVԟ0($EENME_|qP/SJO'"(;wk4kהVGP@=*-5[ᄏ]O?UOO#(;vZtdv0{$T@=(i޽fKHzvFgfq߬nPC(M{ZϞ-i%$;Jp1T￿C ֋/Ѐm u@P eehԨ45j#u5z;\O)!ay$LÇחnYA uWck>6SAg%|uf1 R-[6RRRB҂Q@-;[n&%Ю]e=m4тjтV+#(JK }͘MO=E?!fz@P@5?~F딗W>뮣.x.cժC6lv М9} IaG Q7)" :;bG Uؼ9GÇRIIRRIcG 8={wJف5j6QRRnJ_'nil-?u|έ)a m1 J4~$!*`;=˖e{ӊK"(e=^D))QJPZjh=>}.oC ^`yǏ/Snn`*P}<Ҿs=vB5Ǝ%>}V'n?oܤ=C`9[9TJJ!:aG 2R͙S /tw=,` :iKq 륦C}[kI;J^+?XƭWFFMU;SAcG +?5t*5opvJqSSM5ztn#J^cϞ92MZk( #(xRC}wJO+A 8QӚ]ٳ*$#fx6lÛkB`G >}VzQի#Q([jU*(8 " I%tjܝJL,izZJ;tPFph|zZY8z`e˲ߨo֚1VxvLqdƏߠ[۷멠gbG ޥ6kP Ix4vMIIYO맟KO+<A ^sR11ij_ Dꪫ [Z(SӦmoC0{,Jnsť3zjߞ :x}Wڱc3}! ŎK9sV wGk7ލ%)iF'O(%%%PgNgwiܝz^zZa%:9|PFaJJk+Z,=7ӧ}! KbG {Zlɥǎ@]{\ÆRӦ IH)))ܹԳgOXZNN( 0@999nyJJz-bb"Ը1RjҥK+//O#G԰a**,,L Wll[`̓z "կe氏jebbBBB#ámV\KMMճ>&M(::Zn@[(Sw5yroa;5:7q8ʊrʊ߯`IRHH\8"3dg).nVy P~~O_%qkذ w5k^cƌx]vڻw:vLUQyZa xo=qnԍ7RAT{GOرcӄ t 7T\4hUXX <-pmr(/X))$j({衈eggO>JJJ!CE۷.\aYyvvivfx$0 sp8n >\^Z+ЫR6M pK*楘Z~A3`W˗gQޭ{}I"lԩmڔ.]Z=Q6n RJN$$j`G @IS3flK7k %`q{RLL`AZ E25u=DgCPS%`A99Ezt:TYnWhfx-,f#:tGHuĎ"&MڬUk_覛6{$Q}{x`IH.ĎbNgvkΜnBP^BN%%JL짶m܁W }=7斚9! ;J:U_ߠ r4eJouJn(/^ڰ# I<ٳz5EF '`ȑijޜV,%LMEKg BO+`0=jաtx WѰatuM؏<;J95yf}!K7L)Jdy92M͔ @%%`Tɻ;Uw#A ԓŒuiVEEN͝OAATAyHUW5Ұaz0LJ*d'cL@M,FUdu%@Pn~%F99Ej"sB%FcƤ{ FB.< 'UVVƏQ x+pMYG=:p1TFGqA ;C p Ж-9JNޭT ș3gV/][71{.BP.Y_\wd(\W##JI4{.FPu[u;J?bu4fzsOnjG%P|WQ G@-Ѿ;JRZw (Z3g6}^ں5WII4>;p5pYF`#%P&mQu=v+PMW7}tӋf8za̘6fw!(Xd;٣0G%de(!a;.}Gh쌠.vAx8zukͣ};JgΜULL%pI(Hq ۢ}@uT޾_7w\A [<}gРvfq ᇣZRRhpy%l%7H/NcR<^a+cǮ>t>sJ>^a (>5ǎt꥗H#(aysC=Qx!^ai۶*1qhP;|e9k}@ɓ7c+5x0;jWX?_ӾJXNy+}@q 7n h[nie(,,]OwSOѾ58zekGbA}!;܇%Rnnbc).EP+M"(uRSӾ=Jx 4q&wv0A KhP8zWؾ}g޼~W|Ɓ+kY6m=!(L٢f0ErѢE޽5j޽{kݺurrr4p@kq˰,k9٣jeJJÇkСbccl+66-^5ztYN@@#`SIa5M'O5\BIR|ruQ;v=ܣ]vUC5 ?eFzvjg钥y)ֿp{ _+88XZHe;v駻= qP{Zd&O\YTT?*ĉ4v/h`e||N˗+ (ڵ޽{%I \Ra\(W}sgwGRvucƌќ9sW_骫:ڠAB%$$h7o.0]y66(ѕpѣ%IW_}ukO4dhB}… 9;,j\};u~VTqɝ奎Hb W*oyٮ0]9 SlQW藿Qؘ`cH):LW޾i(pS+6v^~霠j Ӹqu[[= T-Ȋ{o}_;w멧= r&6Bw8tPoIo}V9q&}*TGA_OT<̃z[N#:= \g^Wy3giLzSTȑimiJԛ*k߹>wx^Q/֬9/}aG +kACPƏ_kumט= Gpe˲= A 9|Po^WY^Z}w#(IIu?ލ0܎y=;C}\;h` %\j- B;W̚5vpbƮ}p7ִ^Qg˖ei۶<%'ӾzJ ;WZy΃ҾJe;?L cG?C6>áwyh`m%jЯl(vF֬9о6Qh`G%6_kh`+Z>w2BLyHJ-|miK!(mrH[ (m5;K (m"=Z]#(m$-WFH6pane I~š= X;J/f1g룏x;J/RTԸqP&|"sPԯ_kG`[%=Z QVQzGպuG[!(eY)fѫ/V|&߬ y=ԩ[տkuh(`K(=ƍZ-=`v|+lPɻռ jg(`kzÇ 5kVfk(`{(=olҐ!QJsgy$Q"(=g=ԨDPzwݮ=ջw+Gy<Ν}(GTŽ;v|Z7{@%JQ|9998p5`tH[dJJJ= <J0dFbccl+66eZ]NNzkFAlӸ3sjj}Y5iDJMMuŇͺ u`(*a+80$$DYYYv\kД)[4`@uQ.ŽEOPzÎΞ-رsԬ\eDD,$EGwWLje-$%$l֧0qpZ C}0a5TUHV;\AYC;l]FH5YO>ٹ$Xo6m+_QրY 6*:쀠Ey8٣ ۢj-Ҍ4}mfG(wi6 kn(zĎvӊ+QVÄ Q+(7X]٣L@P^™3gY/]Qݩ.]tMW= $WJI_}P'N 탲ȩ7AqcdHLܩΝt.dy.ԼyD+jQNE}{mK+j ʵkkݺz\gˠt:K5aF=LW\dˠ\x4ijk(gT~~M۪߾U>>x8(gخkչ3}˳Վr׮|-[EsTvoIsZP= ʕ+2٣2"b""W><}ljDD,[nTaaWwV&NF !YnC&Lv ʪB:W\P_kTrA)U$6,NU+ڲdg[֘10{\Pfe`;zߤ?Zjl( TPYsL۷顇:= ",NgxcQ#_Xe* O5{XabMMӦj(Ďrƌ튌V:= b~GgI}~-Zt٣,w'nң+0٣,ȫ++@C7{EymP8曛s԰!oeJmT}6{y<%I-Z< jGYS훙8 &(+^"(/%"(0Wez@]yEPJvw&M(::Z%A~KBBB  0ATPP DW\q.uQQQZjU]TΞ=[p8\vi޽ر233TrʋRװzVi-vYTֺrAB%$$h%G2d;W .T-?MacNk:p&(.XeZN5AI3AauZ]:.\V8zq eV-Sw8?g5/ZHݻwWFԻwo[⚕֚Ν;O={Ԋ+*Yi咓kV[g{jk},sju3 Z]ijPZL0>ee5(99Y>|ZqJk]t>siȑ6lX5+S4e 2׭N:|M:Ur:Jrر>|x5W0Khhc0 ### 5mwk77n\s+̙3… =zTfu>|իi 4kVZaT}ZoFO?YСO?UVuJ2L ʆ ņaFqqg,P՟g1V[7h_uȈ4{0 [n\:I2JiӦ̊kVZsM41:ud׬r_9_F)a{ァ%Khf6a(??_z'x 1B}$۷0 iϞ=ҥ9GuVt:G?=[͚5K>? f?[+yĉF=Ǐjeǯ":嬲Ϊ 6ja]aFNN`8qzjҎeV[1c4g}Wꪫιf>:v4ap ׬N|:ϗǟt+ٳUXXٳg[n׬NIJJJw߭s^w:]5v ;4;6mW%*ښZӧ ðZgΜii7N###⚕Y_4''Ǹ{ ???{Fzzz5+0 gϞ_|quY$f.f.)M@z1I\cnNUuqO8ޫ8zfu== s p8.ܓ@~lp_spOpIENDB`libvips-8.9.1/doc/images/interconvert.png000066400000000000000000000664241361153320700204600ustar00rootroot00000000000000PNG  IHDRYssBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATxwxTE[ ! PC-ޛ4)Rl("b{E?D_ATU@޶|dҀf3g޽ܓΙ3gQ!-n@k>Ppi@p;@ H$DbAZq.ZH$B6+0[pw64OzP+s@k 1n |!5H$Dbi*AP<D"Xb AS`ix6Vx#S |N+;ӁoE`D"H(=M/@[2B4x: |Ra?d# `=bA"H$Ƒ=* ~ SwhWPv <\ H$;Ǒ WfXXTY*x5hX< oD"HG20.`psOem#D"H$w#y\ @t[m-P>#,pI$DRG< GDI0g#iTD"H$w#K1 Nn5` EUD" b4ڊGNbs62Cm$D"-Z[ `!-&D!!$.Wkm-B!u6;8Q"p؃)dOhg0B]fшbe]=K$KXp*i-X@Tb"e`Z3:w.aèCYZ(A!t~FƁ"m3#~=rH,@BX JlRCjp  ]3 a(T6:)0Ud>2$gQ^pų1Q4mrՐAp+6&p{=JhNKN&g:ncj1<Az=U-ON#h3h6m" 03fbȦEmuCpjǤ0蜿+8 q=l%z"N1 <LGب #,J6\7 uFb\`e5-BbS\FRq/(6cc?^8^ܙw.{5ŸnQQ=Yr-Zu N> lr۷giRc})}NYçKw7Y%WɫU(-awUx{᰾MZL±#x_649ScҙGa4 M+"s$DbCagf,7y |P :wfeF,9twޡs-mۖ{ >!8SV;vSvx.GL3IX 8AtX oq.o_ahaRFtbeGh_1a_7ڙ8Z c5BJ$ ܧF#/37&"//ܫVb@' 99e ڶ&W>0Ӊ)t=P$ %]nrr :MmX[V53a>2Ry2͚7'+1C Z@:W]Kѣ$ %7b@k1ʜp=f[9 R@OumuT7}Ͻ6=P,UiʗZeq)?p;2h҄%K8Ebڦ<jhLǷnMHTʕޝV[it޳ii. n ̨F[яe +7G6P1eq퍷'sa׽O5L]voh'H,#x D,\&ܹNO'۴b>Ms׈ ~ÛoһeKԭoW?H.޶I7oZ=zh8f k !8ld1VЅ0Plxf W", #@N0b}}_XS=Iy 7Ap ėݡ3 !D0V%n gsn]hܘG2{6;^%anz nnܚ5GtS޽$Fs-bW0wǏb.C~{D \FU;(cNi6PHx!0@͛} 뱉N}s XA,{H,#,;xr!~TIŸOv4ܙbbLT{|@:*| AU"gcπ@+,vP6R,8A9u7 MUtvR)6Yd( Z<ΰB \`!X䪠p7ҡ3$[Aom!oEM)h%7Kk0)r ",&C)DUΊtEG9hjNzx͔x=©(BraO"(2PR hFjp[g׸cP- мM:'Ē8A+b :>B3S/(o< -(:]((]3^ "`2F޿`_|/DX&ΜI#Kh6"]'i{7}Z%[FWYCd*,L4bOϡz9*V+nB@0p ŋW:fvJc(1`͆eƍ$h>A¨ohrbctNH\ Td"S*\ ֔]HLJ99SzZF$kW6l7QQdxxFSҽ@2>DbC"6cát8AD'!I8B]#1PQUM #N~6ލnڧӡ>C^F!YHڕ徢yjR]H B)T M~tZ9å39n~̂\ܵ  yőYҽE 1%J~8 !011Ձ3`70n,}B[tdʊxq˦՚FCCqgNbJ187d5L> EuYj&,o L"b_MO$hz<MTt\>{rc~KNٳL:| {pi"Mނ1XĒR=D-pdDT(:5c#,Z \Vnjax3`D$ad lF-woI42/b u)ɰ0^NŢƍ&'"/CA. Q'rM *kptW~4бER¨ ''4>Dr29/ޣu&N /wD~'uN>jk:Z āptD`l fZZwš!j< lRޛ0 tZ3(APܨ62lrZg   :z77TE߻q*,QRig8D0ULp@6>jqR1̞'e ϭ:uJ 4 wVjF:]Ka@ $Qc shgCfX04p֕2Ea_q7@%,DH2a#%ٓ{!Aw '{ś7tn9sePsvN-0ZVi~4k: 'krS'6kkƄ~ŋ\wqA[ҽEz2  WGA A nhp HuLWXK+`B-`A5$( ᚶU/*F,YwgتUJL$m[Bv/sn0KqJsۄlZ`/D[02;wBF;23=m_wq0&G]<l@LWH݈@=`nO)^zDR-{'X.6Ww[*lCC0\SdU4 Xi5l,:&0`M[ǀR|`JGlG}g?RHXXgcY$'D7Dd5Iwq?_MlyiUAo[Y€ ^ZES1^Į ǀ@mEXi"D\ Dׅ88UA#xY7_{0:gb8;|kLvH$eGs?jcY$t~;:l򇡯+ -P2Xț6EZjɈl#DrgB~D ip!G6Bi]^m7 Uz}~x+q" * NdHUh \W= K$A^Ī:ۊ#c @d^~qK2F)F/TQـԅӍaƝ\ hSQ׀SNp1-tBAe~+a_j9WZ D埔Zx"rEPׂ cL 7M)fX~uAa6P-=Nto?@bh! :c-{#^p;? HH?[xxn̲q`p;!^l*; 8G,oT^A+@mZ 3{?zÖc*Ż; }&P$R4BG~H1AJ$iT,bĈI+s+_\}CĔύR%/cB!hQ&:܆g'8rݔ?rL?S`EG yL>}v|[~G:CUDM" :=)_ vC䡘 T߭2%Aq^YଇdWHWP^fBLSV&T%M ~uCp%gxg-WHj W@ىF/Ć8qpQnqU_{QPuw]r]":CPqqFT{1x-tM_D|7Ċ>DJۍ 74B)B!X' a4D!JA dD"C?RXX XD"T2 DVC0%D")w M K H$Db%S@$ւH$Db"#$DbgAāD"C,=ikAxD"T s]m-!$DR!ipE H$a xeH$(s+xGl-D"H$ pkkA*xֶD"H$KQgdD"H*s㒂xD"T*F' %/ H$Jɣaւ2^@"H$ xmPD"TZ^FwdB~D"8 XH$TTƲXSƲH$DR!P!F+.)l-D"3o)@>P p@XY6Kx{V(XG"4p)q+\_"H$B00 ؀ehY`xpTUwx+0aP\l:5"oܻ[/zגH$X4Ȁz < 'A`:h8#b k݄3,4j*YP+%_!S\u2^@"H6e 1ঃ.q-$Btp3~N'a/׀gN [1ϫ!ouuӎ)P-Ǹ*U*f9e : K$D{݂ä+ॿKf@>1_ƶxљ9 *`°: EU{`Z4ʼ[ZcJ8Q H$=P P`%!VOYGaUb?.\Qpas .jm> Y,,s(W !|txc$_"H*n4Gţ> ]xJCi a~3ЩQNQG$ + ~iֹj0{(;>SވDJہ71!D"  h(EIֿ_~0;$"V$ 1 B@_á-ZD̅% :áʎt`2^@"H,!~ҭ0܋' 7<4;%WTj'Q#,5Rv$=D"Gu2-0`(k7ALDYIy*23v7\tl3yX1"H$ @G1}' 1\έ-a h @*"Ѱط [B Ql%<>.EDHD"#6ewa`eɯ IDAT[ S7!U$4^ ‰s d!X1s3ͮ]CG-H$G3V/ NV|2DFC| p hpW!߭'!00G񦥇l-D"Td)Y@95UhvLΊB|_lAOVn܏a H$Q `ؼtfy{Դ<+P :|0"p{ $2(AOSՙz *(=sܳ4C EACNcsժfCCD"48A[$@T,4 @;n5,s=\h:j(mQXiqDBZwwfWJH$(A[2Etx/>/oy ,ZpddLv6ݼɄ~Clg#hkUmXEFtHuMղkj>>,`';9/ȫE6H$]B |k( ThFeB;s,+N,%C|z${W6? ؀F%82ߟ*y{Y1*N K HwGȼί!H$Gx":W <"U*k6lw3(:qNo<YGF2qFMH0׭tl,~^?bZ_- x&bɈ*];o }|&)KWI$X pȥh?HL8w;g< RahPˆ(2MJ;>b=DSx}Ə?FISK`QWp\'[YN G5nÇ໵Vq')Woȍ}٭5jr0ݺQ8h:wض}; ۷У{sl:2RCJ$DAF-SշM1s&_|\NK#+(_>!#̨(L_DBzTIInja;fM\Υ2⯿)҅z?? ڟelj\,b=8 6o#SډEx8BQ/sMqq){7w,]^:œi2JyIߖhpH DMs}zϋ1TR2!@c-\\O k!(v`dϜyhtzxT*nnx{NIAǭ[NL cDz-#Q)R 04|y + v=%s'!x%:-]ʮɓ0> ȫ`=:ZwxܮI3yRJ`?hkW ,>K>h Apʗc mR%9QӤ0G.]h~gAF`z;u§S'=6F`bo3j$%qkfih}f&9\Rd^jvZd'^F#x_}%.T6.cƀ9K\9)jn(X/[1))$s5lH%%q3* v.Z~|ASMq$g% x#;$_ /ʨg`l[ 衴}5x]+]^ 7 tŜr HwB$kDtGvxxN~N޷j <> -0Pi[FۉQ ̀p󓻹;笝Qt Gsr '٘9M {4ըQeeI>)mˑOr^ROMDne .Ha j_ >V;c>GɾW혺x5@_E 4. 5|ᜩC#F3KG%h-:`%xtMKia~}*ĸ,G1flxÖeW;tN{[KT *TLu SW^GXS`#H솁[GU(DX3Cux%\5-w= .oabҙw/A3 Z_j <@a7<?.gC h;- ޴}'0/ G1@ Plukl-<yLB ;KYr>(-Asx I' /Ĕvݑ-`i% ( / xeGX*U}^Bws?"^B U`>xJF--kkLv#KދXGrǀ W]"}40!HgE]XS:6ץyN5@L(DwB9=5-ؾ&`5} [Pn3[ـ nM+ Uck ?wi GFvVò6nj[O(o;l)5.CPm- ̈́,w`>%؜J@a.5wN@,b Qm'@x'CoiLZ.Zx:V#-G4@<abXO0L :`"I9gZ!0 C:X|Do0F {dW_b#B狰kiK\sƣ!ɝwĄ7+  GC+"hΰA/KVY@g!b4d8#FM؄XGõ0?hO+bL oT@!7[Bh.΅:= 4_e_2"04}s@qS:] |9# %`0h:f#v Wp \BM}.:X`s]b@ښ!鈵k 0`/cXxs*!"TtH\:'8uK \B'#{qﱤdT3byhտwf$k)/@38мs<3u%&ZK LA'`[6? 7^@za1wh4,z ZD1\6#gŮAmxͼr[gBrb1Det@ĚoSNI y9` 7\xJu ǞPUsx%;g`4ON@Z@J5'@(x-<O*j btE!*ǭځ Kj%hE\Z7S`w0jh :D\"Kv*FHex I.l-UKZ x_+yd/ӁuWTdM_`[X `8H3l>N}BOe;"G# J&o ЅV077WܡN/:P-x 7w1-@:W!vJ*KKÈ* ;;["rd,϶XAZ-P{};C賃E8ݛȫQkkg  mU{ZWK<47+r k][,^ñ "Fd3?Mo1.9a^*: MOC5ڦRm+ pi Alv+,Y'w ~GdK/qLF"2w5 27͛,ZġYW~A"ѧf 'x}XAijNB_}O?54 73[w3[|9] 9@V9QQĿ ;l!tLXn}Go0`hPGGs}\} Lt6e ;/^W 4}ط>}Y>'cߘ_^x#j5,_Ni nlɲs ukV_nǎСm[qiWH]Me2nV C !tT&KZg\V(! wm\0Pta|0ށo|D\X\x#oNMLiymJF +ÔAQ\C k=6 %ET1.bc` e{\D@b/n+Hw*EzL{ΌYٕ? Fn#4*UPoDkx &>{?4s*1T* F#ĐEYun :bmz ˗s%'N~nDD[f&::\t'c&xK]fCMeIr-%\D:wu:ǎ2ok `9 ړ'I n'~݃cb8rի9HrVǤϚ妝;GѧSrXJ=(ߨRa MIܑ#$Ltsp.=}H:wӦCi+ޢgeƀDۮW#dO a$!2cE#:>Gg>b .οtd; TAtyȷj-Dԕ%^43{6UóCed5`Vcغqq$/ r-TRI Æd4‚\TB3hբݛz.z5q>Έ鷏+k'^4z(782c0t(K"W/!_FF$Rn=qKII'eӇqijL-i T#/sa515-T/j53h`wAms0꯿iQku})2 lNPO>+APӏ6A`srBLTZyW(&`pqASm@=l!!iOg TFSb"ϨTZMKp t2t:*P??^yMWs]ϰa=8ljCYcf& D5tgMP+<:ʨѨUg7WίRaЁFtr`,Eq{{E}~5ٮ]AhzjhZT$S k•jDP-O3ŸG`D* С443RC 9 >ǐ9spٶÃ>'ٜ6ϟo++O.A˜I֮]$Ebv6+,oɅg@͚8ĐH\ EؽDUx> oVX oucoBa0C O³0\> S DMJLx8D{,\7Nn|")SV"J 2&p4cŕ8 IB?'S}{t:7s-7\ML$ƍ#c YY,`رtACƒ%lye!pF=v,AZ-Z]2`~|BM ۺU ]af~͓3`~=D ]$ܺE^tlNt oͱkHؾ1:4N6?fM3̽gd=Z&Yw i-lw1ahNFߦAh(%ahjPmFN_sׯscX[dR8W? ("úb?Qc+cָ<Ӣ$ll &M__H\]5woϙCsx9-ݻ9p!gn\Oۗ&=G)S82b.^;GI|3a<˗V. ,a`Z\waԩ'*?d#K7l >CxLLs)H=@ʕ+\/QCݬ IDATpdLF #"H cW_q ;nsgg\26C&)2`/^49iH4{d7`} "dJ;pHn).qgh7f yyM9:}:G?t)| 7agmXH_+=F *qJ!hv.0Y ހo$E3[K!l'l^fka;G1blZAͰ\ F*c2()E܉ +p j5W]՚5 eL^Ő@] 6g!2`&bȷ'Mv6>c(ZU'N\c4(h\H^=vOjBׇaIEգc֛Ba1~~l>wYoF^nOe57: R$`wS1wuHo/qy^!;Lm8n5cfy;=6cmi8^c1쑷yT!'.o &}zzm+ H)#0bzXmʿx$#)TTkh B@b0*6CzW+CH U.HH~w/$ VqNb!'H[|!bT5d2w[V ]F yuʐ}*.Yt^{hca-̐q `ju~\&E~IɂE$?Pλ+ELμq?ɞ6kĔD䟀!I ݩ0(6ϋYG@nlɭ5D&t>O{ qi<()89.L$n `DI,6޸u_T P$m1߈ 1a #Elv8oh,?FpNd.Svt]D xk '&p{|DBl}0 TyqB ƱP[3H{|PA`:*#Y Ғ|-B[ 6c6">l0ghXd!UMQhmv0dz Xdݯm5V!-l Au|>;> ;LWͅT9qC=2PR_`6m1Pp>!4k']$E ːG`IFs u(Rt 6_pT1H) 7GUd>`CCy2 TJı|my\E4x  Zr_ R5_ާ$ljȱ1&hl5` 08 =a< 힂 9~Zo 5D_c< 힆= 9ĵfPK;HTk4tr\)0U؂/R #~ ;XLm&RKmn|V^{U6V| 2y#p,Z Amxk$ܬ`X<8S0t05xj',Z!sbJ(7n3VETVU!p<%s*/ė]xPt"YH/8o#ʢgt[ʅ\{9u4D1|xT+"d3z|CBϟaB_8x/r_JFwqkYf<{݄a֟P\W? GŒ$6[T!pǑ@hxm?Jȅ?)Xe-hFn!slĻ; rM5\!-*,WSx߄6M00c`rCXF䀸vrU>ס*xo}9oo7:{ E$fUH68٘ԂW,*5~/Tm͹<Fj.@$4ͣJS(:RJ5 /\l F(؉<(ZHFMAklE,V^E+bK|7l-ȏo!+<Y-/n/| R&9_`/?/#vʝ]HjOъq *"B O(:"X_2*RT澋REBgfO.iBs0EnE4`\ " |_ˑ80TPF!tQ@kyx|CF*`JFj]4C`n@ʢ6CgI(2#Vq^myhqv.S\"V[nP\2.Ek+JB[ڞfHS܌z{**%imAhn ypv v :Ӡ(i8ҐFqn<COۊsZAץ_́ݶNQcZ"lXhxi L؍񭁅h/ش*VPB( *W@UE/haa@aG-RP \#f:H@o}sH_c03Q[jpzց,jX2Rl( Y˾@1"<$wے H^|Ȭ8.Iw16WW=V?̙Ql$ /oߒ F?ɓ\Vǎ4mswařF:pWclIu 9'Zj l#(Ύ+TYO73`1"\5V$OB>X| pxڻԨU#"H0֮׬adTanl읮ҥq߻'laםä:Eqv91@˰WxZ!ky+tѣٚLڐ!7 0B.xj D!C{x~nJoͥ(g!q@Yy#%cpfcBm! .-~ F^N)a/9 @,KN&H<*Wԩ44PSRH#YѫBpEQ{,Hxxs]%w`s6hVUf袑G3ɀ;,eٳ<0_r :r0z4?FF``GD/\1),j8*>?CBH+,(M?Ht@+œM@[h6}gkaf|SxR+ϭ(L.?D!(7Anufz԰ʷW_egCvYn@E)V8B0(n0uV&xoF_$(vQ:_.5Fæp4ԐuAQ;ę\{Ͱ{`~+*P,2~zBH8.xq`=\(PJ]8Yjڡ#Bh,o^@b)x)8ۯ'3 H`$ࢍSq A2>=$ش͈0n$F J.]J:@jHǎ1hXںIݻk9I*œKHl|0tw6VhxАkh6)TQg,@My\,T>Q#Lj„٤ @t%ukݺqd9Ge*7HU͗`G;p/-&7YÑ H RK`1<1(N3XHWlbiݼ)ф^\BU\^ϖ-3u*nݺҥl]2@pn; 8 (l")Fǹ2E9%M%\-0!! 255}(ڵXzTm&``(D:aE VSNyA' 8^ Ҩ?PPnp\lŅ4WtlKԟonn4?xH+5`[F ³@w@[ OyjxP"=WQGѦ/ 0̣'OrZ5 ᮱iQiivjIE@B-H&݁ː Bpw8X|]wgZC! LnS-Hv'R`>RpKQC}̟<(&GO>>ի٫#"۾efȑTMp E_@2ĕ_ƟAqw?x%4} *̂/GCt  O@#$aqܒp\EQg 4ajK>s'ϝ#woV u&Ofɓ9r 7jD?I8X%V |whR R-5beb>X5J16 0 sm(yg<&KQ nguCx)8d-|Hf$(, 09 Xaèv ?Hzڵ=z*Qen-]ʉ fфQ%1۹8kRS-Z *Ŗ@_$rӵ$#$U˚k -*b8B0paO@YSf<\+cakihC,+ p 8n>N.^4䈳(sﲵ@wu5lKi C H}GQp$ 8 l-ݴ[ U)~t>@ ! 85, u 8rP PlφZ 6 sPe@)Z#eH>oy'R(9A:\rlD!_mU[cRAR#O_CFб8:Τ'oZ s6TׅW_@zR{^X >9c&uC( bvTD{@\m6qi(=DrLRQ2W@B@,R\O O8Bp?R* BmK );3 71V Cj+b1H4Bփd)`OƊߑ"R'8n␜[5{ 8қYi+m_,3Ź8|dj"|)Rx&a!M*j0Ce#-bPYv_qVSfՄI [&Y*S D2f# N6ˇ /Y.`Tn%–ʈe5T H-]#`EYhqShp/HHd(# ,BjDRw#6H@Hg$VWǃWAҋ8C:Ť,z܆֫ߠw30wԒW1e$r~xZ^EQ,( ^B|%[`Ax0*l `]+8R< Hqӊ(֥T@;l( @J4PqB`RlwU+L$ŀO $M;MF~\" [8EQr% E`ïPJA6]c&%qն(Jgo$*gRkq HF-(@{w~Wՠl,֎O~qh8ݑ[YE)('`%C]`M}sQp(?v7x*PbEJ:;GpwmSiSj NHc8};,;oI;VE)($K;y_F>pkH46mG̃rϠA|O2z0ĉ4R{٢Ḙ8'R T!P1ByP \\Hsq!-m)ٸ1D?|za WlуfÆQ? HhC њ(AEQo7$f A:??}}n*a( _~ɩ4RN4Y,J-(∜"m<,[FgÆ DO~Z2l $ptv|p!Έe([Yr"ɴF \!).uQQ$Ⱥysj6lY_p$v>(EGf ASY0Tc,n+?ڐmDEEӧ#14g,ZG3YgydXPVYw:`+jpQ1(Uc#-mr7hb\xH%ROr |Q<-_JӦ/8ܐ"J(B8ze/J R]lÏ\\mGKL\%!p˴y,`_%{!>SlҮzTr6XI!X ;|$n!BpG(=b~7F:S`0QL7yh}ݐ=ٜo>C,$CEOw`il[ 3۷hͶ5Gx;Ͷ >Og!'{20X.hވ5`?E3< Xb|-LeOS,VkRRVE)$L77@{j}!7M{HBr7dqPh˚ma|1l7y0}{!ɡL0LD1hg|gHO5f U8h1f? ˌU'6e (R0 c`%+A!XŐqpj3(I!x+߾90ym&;|4kÝu1]Dq菤W4!JBfB}>3[wx}8lq78EUDYq3d*>QdyEQ&xMޞcZ`seTk$}{E)D\_pħ'3-i8Tf9iIM  ULu}7@yfl{(F{DLIDHb[Yįl6#$!֊NXN:-[JL$Ē(JOX~󶂫`x[gx-H8@[$mo fmtǙ<^Cײ(w5!#/FnlQ=ϴmmjN 2o b9 B "h(EIa(>z`U & 6Km @3_ 1DfqgY+~0/+P :Y>~@Hρ >:cy-$e=+ GQ%$@6vQnas.!kK%n{`74C 1@ߦE!Y&w Q@C6 .C3;rc?o|>G_csA˫ :!{ YC:!6$?9 y#㜱rQգy>viȨ(JX*B\) n!+g[A'p](o(Da.@nx_5ؖH'E0O*  ;+N!Vţ9XPBRFLSQ[s[AˆB Kq[ ֔:f*C͍EqVaӇ~WI;HV#TUEqv"Mjf ۡ!uFgћnC%.nCyIU.((3KAnP*ʟI.Y쟌;k/(B2* GpD gn䂔;+bU 20A(ЧeQphLA2g5n!i/r5LQv@~>HfAO0ҡRb"R#! ZF 5Y,"DOG('XJrC % dzSQѪ3D~@.HJ>RxP}Zu됪%̶#=111膔5 DrAn9N46R(7F>EQEqX&!*8lm#Okh_9\!ʎƈFd݊YڇXN!A 0]A9@F12o`mbhblϬLD 5^EQ)c1o,?V&ۈD!H3k'2"M\G/8O AgBT` BQEQK$!47F~2w:t9ma{v'7{`r$ MLtBr@_hjl((MD! y]t|iKl"}ɈȊSba)n)2D, OFLMDdɴ>76[~(bx푎1H`B:Ura`!oBL/ofl @4G2Lq{hAF7{Mʊ(bW#7ͷ߁Ǹ3 ?FR{jO!mC#k#HH{ 8#ĩH ]i^̐sĢLF](.Jąp5`H 㬞ʽ%c7$z4jfl?T5_QLu &dD lr'D1g]E Z8X7 BZ*oCk+(JF&(Xk((?`(IENDB`libvips-8.9.1/doc/images/interconvert.svg000066400000000000000000000566021361153320700204700ustar00rootroot00000000000000 image/svg+xml Lab XYZ LCh scRGB Yxy UCS LabQ LabS ICC Any device withan ICC profile sRGB HSV libvips-8.9.1/doc/images/owl.jpg000066400000000000000000000510041361153320700165170ustar00rootroot00000000000000 ExifII*2&i:@2011:03:03 02:17:20j JFIFC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((i" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?䄔%RH_8|٠BOJr5=BբSP+z W./-m?.Mpŏ#zoj,FS3>R5QZ\zGi$\㞜z|1{e yly@jZ\[rfl :]'cZQ>أ*sۓj-h E,q[zX×}z ǯY{+RN.|QSQD#R)TOFbx$JPv3)j˧4>+E2lSqQ*Ur< H֬"VRHbkkšbUd~p3 t[@XӠVԮ]70bӒOaZu4)Y:by5y49%e!Xtskj}+|YRڗƷ#oJK|N'5v:rYF9$1YfUlRۉǢ{W<_gG,6ڷ1 !R|mkգx/ͷ{ETArٽگQȂC    ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX";!1Aa"Qq2B#3Rb$rc"!1A"Qqa ?YBNǠRWlJӴ{\-4^!Y ?tQ! )YIPV";$ "SIP]z}_B7uBB?k4T>QHMJ%T`\E#nV%]St0[Z)?tr0$Ri`UI4dRdn7?|Z/duO#`)"MP&N]* *zJ*T*ߒZ;JҽWjm NȵpuE{!0Z9?;I BBAB>&#0KWB>RLB(=Wtd([T@n#N t>YQ4K4$Piv)P@S0BB$ T#r[M * (B llF_$ZJBVCMJbR4Siv4!\]yKئɡT$Kd @/$T ґӒi% >h@YQFE!KI:YSBPB~`HE cɄPdM9uI2)1 $P!!W!P'hER?!]L ך4# {(uJL7;@ӴZ˺VAV'tJoh) /nHBVB "h{nH$!@SH]vBhPJ=ӭ@#PsY &LrRtOBQI4#i~ɠt%]0 엺 `?dB`\SIT$#d+hO$@B(EGʡ! ע`p?t! #iB=P-!hj:sG`}M 'NiVJ"Zi{"$EJЁi^J~BRTBP$ЊQBe tL a=L hB Z-w ZCӪE0D@򺣉o8 $c+8yjHGRvT| OfS ţdFhsC;-t7I+@s N_$nh z/q, Vh\й~C׋ |s9.>Gunk?ZְoB[DE&$@$_t#4B?t*#AH4rI?(#y!+GʠB^L飢TIEq8 j@^A'x#Ӳ&0荓g/4د.ønDka~<`\*40NS^)dHdpM r:fFos̒w;sr8u]7DlĆMZ ڬy~:@$v]5IELas0ib呌V˿X`ڡji^MMf,QpeF~V,;0Hd>R#] $*_B! TEZa tuBU' W)U#`HR:B:n}PP 6(h |'%r|=Ǣ-$J eBJ Ѝ{!?).Rj򏵧E*U`,Y"#o[Lw ٳk3e5,9r7  O-n4{uks3"\KWU3.3)# ai\^%}''5Ka"B74^ظ m %/ 1,H%׽9Ұ35jeYQi|1a5yDm?tp":wAlz!p(Oʅ/㥛 Yl$w/a\Y)"YKESZ*|ZCw痫‡#Coe?DpG'+$7^dP=;/ܜ)oBz.Y+gn;uVBcu88lV/,.󵻹~'rUɗ)czuzXkEG,sq _Lgk+b@`A$jjgNя71@O`R@sAGih !9jUGRL ?t#M@&NR4R$oO3$mۜZ!6-P\p0M_]~1kc#ce7$@X,, Fq{԰ub`Yp3z~V"cZ7^Gxyh6}V3%1GE˕?v #<sur ^#!xGf49 7 d!oOOPs<&::͋c~vFF26lHYR°vd<4Yȟږ-[ ϋ.ɇ` Ȃ+&F`riuM\6zE?.u7[cu|'#''%;n*.W xk׮\5t.X#.y"uϛ:I4"W|9ohPO×W[^d|v6s3",#CIM&He'OcWے\oq)#`;;Ƨ˅c1V7o].Tֶ= \;G3nYc>:ǩ/M#29`/m %tatϖ<1w \yZd$nh"}RW5j$Is!sfSYOZb-$5L5s(X$4mpkp㚄dWuXM'[HD*WBUvHJ%[[J>*BU%V4Кշ$:PJ]RDs*Nu5j$R]thN4JGثI&+#*#deP%TA)'HS['JZ Mf4 RNE#oDm@ep1Ӳi@|~KCt9n17z~Zjpl^f>r dc\g a89ў32H~D'@R61y![BߏbcZwt^Ֆ bx4^ָw`{~;L/KEjy;5ɝA\j5ÓW'4찖K5c9N/^|B=|m#@[Z#%};s cHAeywJTE!tr9c`Fާ93cCkZ냑.V0U04E\AcwlL4M6[O^3'-ycdqd51jUEf9r1aU &O? ث"r6J CKh\?ڵ<`J$-O07BޓN?tru5U+x1kf}֋2&l{2A(Yj|r.&}-4MFGs"dS'J؍cDNJR1 ]<֖lmakfp_$nMíJ)>Ys*RU[Ut*I:MV*RhК%*VBJJ~R ]}):IgB*--*BR#t )*iUJ):>HIE"A(%[sMD%[*%I&[%J4M4B:L4*N('J(U):RVa55SK~"&dL 1^=Wo) d:äp \W|KLimy[t{uƕ]#ɠ ?EX,!>yi;bF܁+_]73H{MҲHR)iE3\dޖlSl _^!L!Ŭ ]PasýlZڕĂώ%ۛS+Vh>c0ZmZnbXYg&V1/hSH浸3Hh1E"X/H-N8̺G+lEl 5U'̐[HViجi--q|O=mV6d'bhɇKZc?N,oW8y(h1ߐVG7^hVrHsRY: _zWJ4E,m{?rkLF7FkV\i<ls}WI{x,B%`FN,5$߲궠 <+{t(.p8 p˟hi%d$&TutJ%IRTWIRE*$JM!Unё*U$T"IRj%*UWӚT!M+%I]Ti?tWuU\H*UӢUSDT쮢JzMlUHQ5 t{&I6NE*NWe@"RRiT%:'H]H8\Li#?]0Ѯmq}pց4OtZ vmǑޖ fKih5'LPoO𺺳dd9"Ic0x~w+Z O{LjRs|akx.s}I6s+6CG-_Z,$ 3&+OSWӆ]gXrgw|-; Nr|gs\[}7'm h  ݹ>m_4cr.OO=#WP:;(IK zid)cFǛO$;DJIs rVaO9cBzZdtҞ'3 R\!8ֿ,~h Htt$)W.iC[eP$!8m|hㅎFl[rKo1+(?'䆒{%MvChs_cN\`%sLp56s_eO4ɷ+(] X?ӓ֟No=hp5eb: i+6,.deёuΓPkKGRWy/i?c5k4MVln<+916< ר+G"<ߞ0/`v> /p'(1ުY\9Z(k{h w#r݊ZÅnՍ4n6X(j6!p?2!uIJ!A)őkևN UyRu՛d&`n-L\-$ Ü~3M-F(e!o;̯ %@4"k pIP)ׯ5ewi7jʎ]lvK7ω1m;WEu1;XX<==#۲H \ n$%1OC Sbc~krm2b593+emkrj6kkaz)0]mdI ś2!uAЬgp'tc:(b|=cΏ^$oc;/1P q;xMG(z%;4Hᩴ7?w{#uh^ms­ҥ[&R)]*RiRhM+&U"*&)UI"B%tO=Ӯi*WIRj!*5uq;I^L/dGhJs5q4UT&'i)4*L:M:Up!RhNT E"6 NeReyik\ܧ)䙋m!4 ~CZbu:"X-,IC?lX7_ٮNV^<<2|IZ/Kt ~n#m׺S~b25iuyI^7dp"٨a~G]ԿӻƠ{)gQk\onn[m?R]l= ^z_#s:m3!jfKVmZ qf^Y_<-viqc҆F,itEqi)w 7CUckㇽ<]|}0lFwVNk tC;,~ R"-[6s˂cHQFX5\Ul81O J$2Qϩꔗa/ޖZoK,dms> .6 VL\MwC5eo<2qåBIϧ]\Ӫ(p0Ȳa:NbԲ0qőa-qgz,/1x._އ)[Ej`B^,}o8G%U\?q®ȮDJ+t*T$'H@N$BV#)QI]H@{*r $RT$t$uKIRJB"&'4^AA)n*MIժWJ'IRuIB+R+='HE&B=@?Кcai=F: ktJ5[L̜q#q$Ր֍'@?yxt s^Ϗ'9R:&O bǗ&6jEsxld𤽜;(9 u__O\XAiUj7sp5̄l!K" xg#KĄ-O 9Boe>mXqsN4~ qn:znI a!o,H wmäpd:W߰E.hatpuU&7av#L:قX'8Ck=[0iv8)PWKю4!keՑ猙'-eQaٰGJA0A6]?8#+JkŌHL̬GJ^szM $ШN@ B}!:EZk T"%I4h|)t %TR^ʑH&N!:E UN'VkR}#:N-hUHuU^U4TA4Ёi֊E =BfCqǠ=6i`K^ Җt/?sT#w\otomXk5_:tnۑ?eqΪR~el8Q+˅&<'`m{~,qrL.yz-hcZizGǐgA$jVzc?%d@+3%z}=~Ђfku1\\`-ǯu$k[͐Yp$hVz;9 U˃33qZ:W HAo2Ѹ=po nN cZ$h;=Çl]O74{ocOz沌GF\eRO0$rfrfSLmwY-fהU||n[e`3?'H~dνlc;'ڜNK&a޹d!v?[$Y:Vf˜g4+ FhFjKxZb&ŏ:~֊Wb97\%ď{ldO 8kcqs[lm$rBd1͊NYך6n O^-h$!p XypnmkC׺%&c㓞Dzpӌd;7t=B AI8 |ܯge;\Fv'Wó[u<>hU" :?6WѻK^Fxt18a;&%l?0FWUq0F,1/XsG[yWBX:2ǐ܆ n_ѝnz(PqI䑹~`|Z]~ǔeᙑHszzv||N=l IC\w;c3&m`sda9TI@) S עhcDYhmú|O[ ^0: 屽ly n=V,nn#"?ҏ%w`]9 fߺsE*켶0E+ҊLIR^MJFjILd]S:B] iOOecF4 tvW:S1E,Q\VM)ҘZQK.iLO˥-!0FҲiFJtOd벘1*J{& zStLHt)4KOeOd=)V-mM& tvY40E%K!iW>IRجtztW.IY/ nF08 m4?N`Вǹ*d!nOU;Ip,k^{fOІ,qsSM=ddkK龧w}?{b|qS ƾip|#(ۛqg6v[+װi |^/<1?#_+ݩ7oe&~+ ӏ]˕- L^F-?g7%GɡdlO:YCXn$]uam5گeNC~^D1VI),[9/h-sm]^XٳkwY 7cnVQ)Q ZZYC~c`EVuc{vݻ4GZx@dep$`$tV\t/4O۟ &C?P4[z/l'76/SL]/|^^n^V^ut0Y85~,a-ncst|m4@\=bl15Lmߖܖ!d& ҝ+R툊N)0FQY)1NdWdQ]'0F]")Q]JEvW:'^#J4ے"J"UIR6OACo]Nfъmdrk?<5][ ZY wVIl,n\R%5﮾niS,8Ѻא7A5kNe>H4K G8<>̌U1x:Ρy6Gq-ȝNepyE.}N]\_s'7e<[&pum[q=q%n:CVŠ 9dq"B\v+.r?P mPAحujhn3dގY2ka8s eYej8e/#zgֻ2^$lp68k$He m)&sy Of88sW#6z+4 :cwײf4&P%gP|5߁ΓS~kH c#kv cs67ZE6@uՋX2 y1&8;-ۭ'Yqݒ=Jz_ƮQur;憒ll#chkCַX;gj'Zߪu賆1-tMд]UBԩ] sdƑ~z|%@Zmxels˒,{zoʊ KXoYaZzrYc`M@ ebA>X2hu} D9 hi_dI9/kwX1_F$\zoi*tZUC0;)+R"nJI4K%"diW=(ҮJ`E+\HUHLIҴuDנNR 4HI*Rttii)A4VA*IR5CXIp,E'b+O),U=jFKHp'˾NS _>YE+QkZN lx9dL%iut= _? h`tK,D`vWF'a򥲜@ЭG+ϊ^C)cdž87=S<+t5[V+,B5-_Er_gFZ)8[\M: d[[v5ԞխyXl<֣٨?Uxu{Ysv{s[)u^,t5U^kX=1ݹH vä ۍ&Ҭj~`J;rJ\UB2VǥxZrQ{SvM#VOm]E9ıK7[]6!8͑٥IR&R:&R& RE"Z)0E!Zlibvips-8.9.1/doc/images/tn_owl.jpg000066400000000000000000000154201361153320700172220ustar00rootroot00000000000000JFIF ExifII*jr(2Viz2011:03:03 02:17:208c8c02100100 ( HHJFIFC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((i" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?䄔%RH_8|٠BOJr5=BբSP+z W./-m?.Mpŏ#zoj,FS3>R5QZ\zGi$\㞜z|1{e yly@jZ\[rfl :]'cZQ>أ*sۓj-h E,q[zX×}z ǯY{+RN.|QSQD#R)TOFbx$JPv3)j˧4>+E2lSqQ*Ur< H֬"VRHbkkšbUd~p3 t[@XӠVԮ]70bӒOaZu4)Y:by5y49%e!Xtskj}+|YRڗƷ#oJK|N'5v:rYF9$1YfUlRۉǢ{W<_gG,6ڷ1 !R|mkգx/ͷ{ETArٽگQȂC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?Q74i^Mmr3E)Q$ H4 H@➢ rN 8 v-.PE3!RPbu S:D S1*%Hx dd%Arڑݵlm U(AN&)*@@iåhLRi굛cCUyHO|h䉮Ϟ˴1;Y-I嬮kh5wU(n R 2IInmMu8Iʼf2 f;Q'U},n KK9ZQkG|̓;S?[$aBZF8QX^*e@&1O:F4IUp\:He||U]8羽ky"*:g-N䉒e;D<ʤ2)SA"gdQu*5d4%#2U˜EEJHLS)  NDV.E$l:~VWv{x}j6̶rZhɑ x<%n!X#o\vʶބ=\^Nz6 "m|p}p~7L .7HӤvhķf!ןcW .ZL7;iZm -dm~UvMlF[.we3쎎n7ӻTO"Q+ukB{k91=jг6jD11sU泒0tfq `[E]6+LlRs >f][}١V0ȫՁ f[IQz5f*k+mɦXL" i*^ijbU=EXsC*uZrJr({l6a .hdGnueWkr߮O nxBxKN9Me'ߊfg2Hv{H\tvHkke+r.NG`%m6Ev}) ƂE'qcv}6(Ȳ"d*Ӛ3V}b3oGe~RzJ6'RC^j- 5hX`>ȼ8iL ?1=ǧ^B;(v& y qK/1%][Gl'=<{WE- WE(Tv91XVhoމ1Zi^jM+^g9bLJw%))JX=Oj~j~jP9b[{0[ʆ&w,W?&2qֹj w"\AE}޺"Ƞ8= ^"8խ/FNq߅tQ*1}BRQO UoOݮg ' KF澟#%[u*I52 kqc n TAOX[sz#:8#bmJ$3 R P¥#al ۭn'؆VGI`@ǵO+9Xkvcqʋ 6R0r7\nX,][^Zdea:bRNAP6,Gr$Lck֦,c7f#"'2 ԛjbݵ1"4#Z?g8]J &ʺSD FICV@UV,vici8TTIܻ@[X, /X9n0O2=5>D˄b:h!"vɝc9^O-F['Rg.A u#s]58b8D!q qz-2;NW!`ykR}&aN&-C"hs=i``eF fc;?a\+H8UJ ҭu{)1ΖUHܱ#tk[\sU5C&QǛ2ȸ=y]G7[O$۬gEʜ3ǎ3Rs{΢gL)zspK= R(9z+ڣM(l4=I{W/$0{S \vдpkĖ<+2Exgl=q]5%^khf)8ǥTĺUr$<݀^P'xbE'Rԁ^qycrQrˑ\T,U7ns;ik Ko.Yd9W=vשP6 '=G^KkheUKg=th0[I9CBR-Zyl^qk֛vߌcۨK'3ܸʅ9'kV1\? lq4*YGZGe62º3xoXm#YMFT =g^#Ư%C/<`ΐ@8!}yBm"q` "_緷^}zjNOrI>sKzNlQ,MߡЎƮy^Ղs;ȭW.libvips-8.9.1/doc/images/x.jpg000066400000000000000000000153151361153320700161720ustar00rootroot00000000000000JFIF ExifII*jr(2Viz2011:03:03 02:17:208c8c02100100 ( HHJFIFC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((i" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?䄔%RH_8|٠BOJr5=BբSP+z W./-m?.Mpŏ#zoj,FS3>R5QZ\zGi$\㞜z|1{e yly@jZ\[rfl :]'cZQ>أ*sۓj-h E,q[zX×}z ǯY{+RN.|QSQD#R)TOFbx$JPv3)j˧4>+E2lSqQ*Ur< H֬"VRHbkkšbUd~p3 t[@XӠVԮ]70bӒOaZu4)Y:by5y49%e!Xtskj}+|YRڗƷ#oJK|N'5v:rYF9$1YfUlRۉǢ{W<_gG,6ڷ1 !R|mkգx/ͷ{ETArٽگQȂC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?M'p|D$]N !IW=q?C>@T@M9= |yMu_K%[BMVZ9nx GjKd"Ub6QX-b~n6>7#RѴIIT1; 'QUt㾢wƷrqiq{ Y*K(hN6J' R<0ErɊ]ҦRSH3L)TTʵ2Ёj@J'I: Ο*בqK[e *YnRei-ɑywk Œ-.7;$.@Br:{d;s+B/Rg1:m|~8kJrѳ:t-KzTa|{p3\6I. $>h ݮiC +?eJi4$evI뎎n7ԹS҈igadFnsk @8QtȲkE2㚭}DI.LpQqw8ɭ/6',R;d d˦tI]/]=><{V]ͯmJ֦Yz^TesUvEM{rikLVVS*T:c Diʞ(ZȢ[|8aV`rCoPp9\H$~s;RBmWae$z\M!C2:54ݒK{:G&,m˓0?RG^$lb+wȊH 1IXݟsg^rVDLzt淌լ(ksͼeEz xJ0U~g٢uaJd^_@mfUWW4b0pr;]{4Y}?gKƒKhq/r0i!sC* zaZ/mҵs+VJSJSS :&;T;gW1V" OOJ4\,X ouPxk֬.˙e[d}9EYSkX]ia/ Jԫ< R@>r;\O1s?z|YYJ|kqՔmܻJW|`-|Eq[1;`%I$ǥs#Ubca%g).ܢ9`B{T9XZ݉!>VH`DMB-'*TZưd][_ִ4GL ?ZμNG8Ir]0J0,r$Lc O+KYr Ep#f?&+ǒ0l Rmv\XpҘhzSL8]J &ʼS FICV@Ujͥ,"C ,*SOvԷ9 . |mFGU ȝp[EGQaew;dj(޼Yj8YX ?ZGǭ6*.'$^ZdvCc Nl~5]:Mf<{C֔  E`9c?ǿa\+H8UWE[e>QtEX@ G];nCxvae$zn)5"HzJ/{WQ I(6. "eN3ǎՄi<7c#gw8֟ڒK1M:__^=yTiIvBWO#ڹ}$0{TfsW^;hZW-s߉-xVdzH'_^B^e'mQÏTĺUr,"gc^gk2ī$N RIj/7LE$guB[ZvO?c1/ȭYd9ڹwU\ځdO9ץg6B{42 D 6EnL+Nz졂IGB[-ZldO(듎SXov1nD,>2xkq# y=]*ScК5(Yp͌= t՛IdY -Tǯu#xQ$ybuh 625^IP]4.צtG$zp4g4]R.Y"n[I IVڏ+ڏf?libvips-8.9.1/doc/libvips-docs.xml.in000066400000000000000000000076161361153320700175060ustar00rootroot00000000000000 ]> VIPS Reference Manual For VIPS @VIPS_VERSION@. The latest version of this documentation can be found on the VIPS website. VIPS Overview VIPS is a free image processing system. It is good with large images (images larger than the amount of RAM you have available), with many CPUs (speed scales linearly to at least 32 threads), for working with colour, for scientific analysis and for general research and development. As well as JPEG, TIFF and PNG images, it also supports scientific formats like FITS, Matlab, Analyze, PFM, Radiance and OpenSlide. It works on many UNIX-like platforms, as well as Windows and OS X. VIPS is released under the GNU Library General Public License (GNU LGPL). Core VIPS API VIPS operation API by section Other API (no gtkdoc comments yet) Object Hierarchy API Index libvips-8.9.1/doc/pandoc-docbook-template.docbook000066400000000000000000000007721361153320700220120ustar00rootroot00000000000000 $if(mathml)$ $else$ $endif$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ libvips-8.9.1/doc/using-C.xml000066400000000000000000000206201361153320700157760ustar00rootroot00000000000000 VIPS from C 3 VIPS Library Using VIPS How to use the VIPS library from C Introduction VIPS comes with a convenient, high-level C API. You should read the API docs for full details, but this section will try to give a brief overview. Library startup When your program starts, use VIPS_INIT() to start up the VIPS library. You should pass it the name of your program, usually argv[0]. Use vips_shutdown() when you exit. VIPS_INIT() is a macro to let it check that the libvips library you have linked to matches the libvips headers you included. You can add the VIPS flags to your %GObject command-line processing with vips_add_option_entries(). The #VipsImage class The basic data object is the #VipsImage. You can create an image from a file on disc or from an area of memory, either as a C-style array, or as a formatted object, like JPEG. See vips_image_new_from_file() and friends. Loading an image is fast: VIPS read just enough of the image to be able to get the various properties, such as width, but no decoding occurs until pixel values are really needed. Once you have an image, you can get properties from it in the usual way. You can use projection functions, like vips_image_get_width() or g_object_get(), to get %GObject properties. All VIPS objects are immutable, meaning you can only get properties, you can't set them. See VIPS Header to read about image properties. Reference counting VIPS is based on the %GObject library and is therefore reference counted. vips_image_new_from_file() returns an object with a count of 1. When you are done with an image, use g_object_unref() to dispose of it. If you pass an image to an operation and that operation needs to keep a copy of the image, it will ref it. So you can unref an image as soon as you no longer need it, you don't need to hang on to it in case anyone else is still using it. See #VipsOperation for more detail on VIPS reference counting conventions. VIPS operations Use things like vips_embed() to manipulate your images. You use it from C like this: const char *filename; VipsImage *in = vips_image_new_from_file (filename, NULL); const int x = 10; const int y = 10; const int width = 1000; const int height = 1000; VipsImage *out; if (vips_embed (in, &out, x, y, width, height, NULL)) error_handling(); Now out will hold a reference to a 1000 by 1000 pixel image, with in pasted 10 right and 10 down from the top left-hand corner. The remainder of the image will be black. If in is too large, it will be clipped at the image edges. Operations can take optional arguments. You give these as a set of NULL-terminated name-value pairs at the end of the call. For example, you can write: if (vips_embed (in, &out, x, y, width, height, "extend", VIPS_EXTEND_COPY, NULL)) error_handling(); And now the new edge pixels, which were black, will be filled with a copy of the edge pixels of in. Operation options are listed at the top of each operation's entry in the docs. Alternatively, the vips program is handy for getting a summary of an operation's parameters. For example: $ vips embed embed an image in a larger image usage: embed in out x y width height where: in - Input image, input VipsImage out - Output image, output VipsImage x - Left edge of input in output, input gint default: 0 min: -1000000000, max: 1000000000 y - Top edge of input in output, input gint default: 0 min: -1000000000, max: 1000000000 width - Image width in pixels, input gint default: 1 min: 1, max: 1000000000 height - Image height in pixels, input gint default: 1 min: 1, max: 1000000000 optional arguments: extend - How to generate the extra pixels, input VipsExtend default: black allowed: black, copy, repeat, mirror, white, background background - Colour for background pixels, input VipsArrayDouble operation flags: sequential-unbuffered See #VipsOperation for more information on running operations on images. The API docs have a handy table of all vips operations, if you want to find out how to do something, try searching that. When you are done, you can write the final image to a disc file, to a formatted memory buffer, or to C-style memory array. See vips_image_write_to_file() and friends. Getting pixels Use #VipsRegion to read pixels out of images. You can use VIPS_IMAGE_ADDR() as well, but this can need a large amount of memory to work. See extending for an introduction to writing your own operations. Error handling VIPS keeps a log of error message, see VIPS Error to find out how to get and clear the error log. Example On *nix systems, you can compile the example code with something like: $ gcc -g -Wall myprog.c `pkg-config vips --cflags --libs` On Windows, you'll need to set the compiler flags by hand, perhaps: x86_64-w64-mingw32-gcc-win32 -mms-bitfields \ -Ic:/vips-8.6/include \ -Ic:/vips-8.6/include/glib-2.0 \ -Ic:/vips-8.6/lib/glib-2.0/include \ myprog.c \ -Lc:/vips-8.6/lib \ -lvips -lz -ljpeg -lstdc++ -lxml2 -lfftw3 -lm -lMagickWand -llcms2 \ -lopenslide -lcfitsio -lpangoft2-1.0 -ltiff -lpng14 -lexif \ -lMagickCore -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 \ -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl \ -o myprog.exe VIPS from C example #include <stdio.h> #include <vips/vips.h> int main( int argc, char **argv ) { VipsImage *in; double mean; VipsImage *out; if( VIPS_INIT( argv[0] ) ) vips_error_exit( NULL ); if( argc != 3 ) vips_error_exit( "usage: %s infile outfile", argv[0] ); if( !(in = vips_image_new_from_file( argv[1], NULL )) ) vips_error_exit( NULL ); printf( "image width = %d\n", vips_image_get_width( in ) ); if( vips_avg( in, &mean, NULL ) ) vips_error_exit( NULL ); printf( "mean pixel value = %g\n", mean ); if( vips_invert( in, &out, NULL ) ) vips_error_exit( NULL ); g_object_unref( in ); if( vips_image_write_to_file( out, argv[2], NULL ) ) vips_error_exit( NULL ); g_object_unref( out ); return( 0 ); } libvips-8.9.1/doc/using-command-line.xml000066400000000000000000000156741361153320700201740ustar00rootroot00000000000000 VIPS from the command-line 1 VIPS Library Using VIPS How to use the VIPS library from the command-line Introduction Use the vips command to execute VIPS operations from the command-line. For example: $ vips rot k2.jpg x.jpg d90 Will rotate the image k2.jpg by 90 degrees anticlockwise and write the result to the file x.jpg. If you don't give any arguments to an operation, vips will give a short description, for example: $ vips rot rotate an image usage: rot in out angle where: in - Input image, input VipsImage out - Output image, output VipsImage angle - Angle to rotate image, input VipsAngle default: d90 allowed: d0, d90, d180, d270 There's a straightforward relationship with the C API: compare this to the API docs for vips_rot(). Listing all operations You can list all classes with: $ vips -l ... VipsOperation (operation), operations VipsSystem (system), run an external command VipsArithmetic (arithmetic), arithmetic operations VipsBinary (binary), binary operations VipsAdd (add), add two images ... etc. Each line shows the canonical name of the class (for example VipsAdd), the class nickname (add in this case), and a short description. Some subclasses of operation will show more: for example, subclasses of VipsForeign will show some of the extra flags supported by the file load/save operations. The API docs have a handy table of all vips operations, if you want to find out how to do something, try searching that. Optional arguments Many operations take optional arguments. You can supply these as command-line options. For example: $ vips gamma gamma an image usage: gamma in out where: in - Input image, input VipsImage out - Output image, output VipsImage optional arguments: exponent - Gamma factor, input gdouble default: 2.4 min: 1e-06, max: 1000 operation flags: sequential-unbuffered vips_gamma() applies a gamma factor to an image. By default, it uses 2.4, the sRGB gamma factor, but you can specify any gamma with the exponent option. Use it from the command-line like this: $ vips gamma k2.jpg x.jpg --exponent 0.42 This will read file k2.jpg, un-gamma it, and write the result to file x.jpg. Array arguments Some operations take arrays of values as arguments. For example, vips_affine() needs an array of four numbers for the 2x2 transform matrix. You pass arrays as space-separated lists: $ vips affine k2.jpg x.jpg "2 0 0 1" You may need the quotes to stop your shell breaking the argument at the spaces. vips_bandjoin() needs an array of input images to join, run it like this: $ vips bandjoin "k2.jpg k4.jpg" x.tif Implicit file format conversion vips will automatically convert between image file formats for you. Input images are detected by sniffing their first few bytes; output formats are set from the filename suffix. You can see a list of all the supported file formats with something like: $ vips -l foreign Then get a list of the options a format supports with: $ vips jpegsave You can pass options to the implicit load and save operations enclosed in square brackets after the filename: vips affine k2.jpg x.jpg[Q=90,strip] "2 0 0 1" Will write x.jpg at quality level 90 and will strip all metadata from the image. Chaining operations Because each operation runs in a separate process, you can't use libvips's chaining system to join operations together, you have to use intermediate files. The command-line interface is therefore quite a bit slower than Python or C. The best alternative is to use vips files for intermediates. Something like: vips invert input.jpg t1.v vips affine t1.v output.jpg "2 0 0 1" rm t1.v Other features Finally, vips has a couple of useful extra options. Use to get vips to display a simple progress indicator. Use and vips will leak-test on exit, and also display an estimate of peak memory use. Set G_MESSAGES_DEBUG=VIPS and GLib will display informational and debug messages from libvips. VIPS comes with a couple of other useful programs. vipsheader is a command which can print image header fields. vipsedit can change fields in vips format images. vipsthumbnail can make image thumbnails quickly. libvips-8.9.1/doc/using-cpp.xml000066400000000000000000000320071361153320700164000ustar00rootroot00000000000000 VIPS from C++ 3 VIPS Library Using VIPS How to use the VIPS library from C++ Introduction VIPS comes with a convenient C++ API. It is a very thin wrapper over the C API and adds automatic reference counting, exceptions, operator overloads, and automatic constant expansion. You can drop down to the C API at any point, so all the C API docs also work for C++. /* compile with: * g++ -g -Wall example.cc `pkg-config vips-cpp --cflags --libs` */ #include <vips/vips8> using namespace vips; int main (int argc, char **argv) { if (VIPS_INIT (argv[0])) vips_error_exit (NULL); if (argc != 3) vips_error_exit ("usage: %s input-file output-file", argv[0]); VImage in = VImage::new_from_file (argv[1], VImage::option ()->set ("access", VIPS_ACCESS_SEQUENTIAL)); double avg = in.avg (); printf ("avg = %g\n", avg); printf ("width = %d\n", in.width ()); in = VImage::new_from_file (argv[1], VImage::option ()->set ("access", VIPS_ACCESS_SEQUENTIAL)); VImage out = in.embed (10, 10, 1000, 1000, VImage::option ()-> set ("extend", "background")-> set ("background", 128)); out.write_to_file (argv[2]); vips_shutdown (); return (0); } Everything before VImage in = VImage::.. is exactly as the C API. vips_error_exit() just prints the arguments plus the libvips error log and exits with an error code. VImage in = VImage::.. is the C++ equivalent of vips_image_new_from_file(). It works in the same way, the differences being: VImage lifetime is managed automatically, like a smart pointer. You don't need to call g_object_unref(). Instead of using varargs and a %NULL-terminated option list, this function takes an optional VOption pointer. This gives a list of name / value pairs for optional arguments to the function. In this case we request unbuffered IO for the image, meaning, we expect to do a single top-to-bottom scan of the image and do not need it to be decompressed entirely. You can use the C enum name, as is done in this case, or use a string and have the string looked up. See below. The function will delete the VOption pointer for us when it's finished with it. Instead of returning %NULL on error, this constructor will raise a VError exception. There are a series of similar constructors which parallel the other constructors in the C API, see VImage::new_from_memory(), VImage::new_from_buffer(), and VImage::new_matrix(). The convenience function `VImage::new_from_image()` makes a constant image from an existing image. The image it returns will have the same size, interpretation, resolution and format as the image you call it on, but with every pixel having the constant value you specify. For example: new_image = image.new_from_image(12); Now `new_image` has the same size as `image`, but has one band, and every pixel has the value 12. You can pass a `std::vector<double>` as the argument to make a constant image with a different number of bands. There's also VImage::new_memory() and VImage::new_temp_file(), which when written to with VImage::write() will create whole images on memory or on disc. The next line finds the average pixel value, it's the equivalent of the vips_avg() function. The differences from the C API are: VImage::avg() is a member function: the this parameter is the first (the only, in this case) input image. The function returns the first output parameter, in this case the average pixel value. Other return values are via pointer arguments, as in the C API. Like VImage::new_from_file(), function raises the VError exception on error. Like VImage::new_from_file(), extra arguments are passed via an optional VOption parameter. There are none in this case, so the function brackets can be left empty. All other operations follow the same pattern, for example the C API call vips_add(): int vips_add( VipsImage *left, VipsImage *right, VipsImage **out, ... ); appears in C++ as: VImage VImage::add( VImage right, VOption *options ) const The next line uses VImage::width() to get the image width in pixels. There are similar functions paralleling vips_image_get_format() and friends. Use VImage::set() to set metadata fields, VImage::get_int() and c. to fetch metadata. Next we reload the image. The VImage::avg() will have scanned the image and reached the end of the file, we need to scan again for the next operation. If we'd selected random access mode (the default) in the original VImage::new_from_file(), we would not need to reload. The next line runs vips_embed() with two optional parameters. The first sets the value to an enum (here we use a string to set the value, it'll be looked up in the list of possible enum values, or you can use the symbols from the C API), the second sets the value to an int. The "background" parameter is actually a #VipsArrayDouble: if you pass an int instead, it will be automatically converted to a one-element array for you. You can pass a std::vector<double> too: the utility function VImage::to_vectorv() is a convenient way to make one. Finally, VImage::write_to_file() will write the new image to the filesystem. You can add a #VOption as a final parameter and set options for the writer if you wish. Again, the operation will throw a #VError exception on error. The other writers from the C API are also present: you can write to a memory array, to a formatted image in memory, or to another image. The API docs have a handy table of all vips operations, if you want to find out how to do something, try searching that. Automatic constant expansion The C++ API will automatically turn constants into images in some cases. For example, you can join two images together bandwise (the bandwise join of two RGB images would be a six-band image) with: VImage rgb = ...; VImage six_band = rgb.bandjoin( rgb ); You can also bandjoin a constant, for example: VImage rgb_with_alpha = rgb.bandjoin( 255 ); Will add an extra band to an image, with every element in the new band having the value 255. This is quite a general feature. You can use a constant in most places where you can use an image and it will be converted. For example: VImage a = (a < 128).ifthenelse( 128, a ); Will set every band element of a less than 128 to 128. The C++ API includes the usual range of arithmetic operator overloads. You can mix constants, vectors and images freely. The API overloads [] to be vips_extract_band(). You can write: VImage xyz = VImage::xyz( 256, 256 ) - VImage::to_vectorv( 2, 128.0, 128.0 ); VImage mask = (xyz[0].pow( 2 ) + xyz[1].pow( 2 )).pow( 0.5 ) < 100; to make a circular mask, for example. The API overloads () to be vips_getpoint(). You can write: VImage xyz = VImage::xyz( 256, 256 ) - VImage::to_vectorv( 2, 128.0, 128.0 ); // this will have the value [0, 0] std::vector<double> point = xyz(128, 128); Enum expansion VIPS operations which implement several functions with a controlling enum, such as vips_math(), are expanded to a set of member functions named after the enum. For example, the C function: int vips_math( VipsImage *in, VipsImage **out, VipsOperationMath math, ... ); where #VipsOperationMath has the member #VIPS_OPERATION_MATH_SIN, has a C convenience function vips_sin(): int vips_sin( VipsImage *in, VipsImage **out, ... ); and a C++ member function VImage::sin(): VImage VImage::sin( VOption *options = 0 ) const Image metadata VIPS images can have a lot of metadata attached to them, giving things like ICC profiles, EXIF data, and so on. You can use the command-line program vipsheader with the -a flag to list all the fields. You can read metadata items with the member functions get_int(), get_double(), get_string() and get_blob(). Use get_typeof() to call vips_image_get_typeof() and read the type of an item. This will return 0 for undefined fields. const char *VImage::get_string( const char *field ) throw( VError ); You can use the set() family of overloaded members to set metadata, for example: void VImage::set( const char *field, const char *value ); You can use these functions to manipulate exif metadata, for example: VImage im = VImage::new_from_file( "x.jpg" ) int orientation = im.get_int( VIPS_META_ORIENTATION ); im.set( VIPS_META_ORIENTATION, 2 ); im.write_to_file( "y.jpg" ); Extending the C++ interface The C++ interface comes in two parts. First, VImage8.h defines a simple layer over #GObject for automatic reference counting, then a generic way to call any vips8 operation with VImage::call(), then a few convenience functions, then a set of overloads. The member definition and declaration for each operation, for example VImage::add(), is generated by a small Python program called gen-operators.py. If you write a new VIPS operator, you'll need to rerun this program to make it visible in the C++ interface. You can write the wrapper yourself, of course, they are very simple. The one for VImage::add() looks like this: VImage VImage::add( VImage right, VOption *options ) const { VImage out; call("add", (options ? options : VImage::option())-> set("out", &out)-> set("left", *this)-> set("right", right)); return out; } Where VImage::call() is the generic call-a-vips8-operation function. libvips-8.9.1/doc/using-threads.xml000066400000000000000000000137121361153320700172520ustar00rootroot00000000000000 VIPS and threads 3 VIPS Library Using VIPS VIPS and threading Introduction This section tries to summarise the rules for threaded programs using libvips. Generally, libvips is threaded and thread-safe, with a few exceptions. Images On startup, you need to call VIPS_INIT() single-threaded. After that, you can freely create images in any thread and read them in any other thread. See the example at the end of this chapter. Note that results can also be shared between threads for you by the vips operation cache. The exception is the drawing operators, such as vips_draw_circle(). These operations modify their image argument so you can't call them on the same image from more than one thread. Reading from an image while another thread is writing to it with one of the draw operations will obviously also fail. When libvips calculates an image, by default it will use as many threads as you have CPU cores. Use vips_concurrency_set() to change this. Error handling libvips has a single error code (-1 or %NULL) returned by all functions on error. Error messages are not returned, instead they are logged in a single global error buffer shared by all threads, see vips_error_buffer(). This makes error handling very simple but the obvious downside is that because error returns and error messages are separate, when you detect an error return you can't be sure that what's in the error buffer is the message that matches your error. The simplest way to handle this is to present the whole error log to the user on the next interaction and leave it to them to decide what action caused the failure. Using #VipsRegion between threads #VipsImage objects are immutable and can be shared between threads very simply. However the lower-level #VipsRegion object used to implement #VipsImage (see Extending VIPS) is mutable and you can only use a #VipsRegion from one thread at once. In fact it's worse than that: to reduce locking, #VipsRegion keeps a lot of state in per-thread storage. If you want to create a region in one thread and use it in another, you have to first tag the region as unowned from the creating thread with vips__region_no_ownership(), then in the recieving thread take ownership with vips__region_take_ownership(). See the source for operations like vips_tilecache() if you're curious how this works. libvips includes a set of sanity checks for region ownership and will fail if you don't pass ownership correctly. Example This example runs many vips_resize() in parallel from many threads. VIPS and threads example /* Read from many threads. * * Compile with: * * gcc -g -Wall soak.c `pkg-config vips --cflags --libs` * * Run with: * * rm -rf x * mkdir x * for i in {0..10}; do ./a.out ~/pics/k2.jpg; done * */ #include <stdio.h> #include <glib.h> #include <vips/vips.h> /* How many pings we run at once. */ #define NUM_IN_PARALLEL (50) /* Number of tests we do in total. */ #define TOTAL_TESTS (NUM_IN_PARALLEL * 20) /* Workers queue up on this. */ GMutex allocation_lock; /* Our set of threads. */ GThread *workers[NUM_IN_PARALLEL]; /* Number of calls so far. */ int n_calls = 0; /* Our test function. This is called by NUM_IN_PARALLEL threads a total of * TOTAL_TESTS times. */ static int test (const char *filename) { VipsImage *im, *x; char output_file[256]; snprintf (output_file, 256, "x/tmp-%p.jpg", g_thread_self ()); if (!(im = vips_image_new_from_file (filename, "access", VIPS_ACCESS_SEQUENTIAL, NULL))) return (-1); if (vips_resize (im, &x, 0.1, NULL)) { g_object_unref (im); return (-1); } g_object_unref (im); im = x; if (vips_image_write_to_file (im, output_file, NULL)) { g_object_unref (im); return (-1); } g_object_unref (im); return (0); } /* What we run as a thread. */ static void * worker (void *data) { const char *filename = (const char *) data; for (;;) { gboolean done; done = FALSE; g_mutex_lock (&allocation_lock); n_calls += 1; if (n_calls > TOTAL_TESTS) done = TRUE; g_mutex_unlock (&allocation_lock); if (done) break; if (test (filename)) vips_error_exit (NULL); } return (NULL); } int main (int argc, char **argv) { int i; if (VIPS_INIT (argv[0])) vips_error_exit (NULL); g_mutex_init (&allocation_lock); for (i = 0; i < NUM_IN_PARALLEL; i++) workers[i] = g_thread_new (NULL, (GThreadFunc) worker, argv[1]); for (i = 0; i < NUM_IN_PARALLEL; i++) g_thread_join (workers[i]); return (0); } libvips-8.9.1/fuzz/000077500000000000000000000000001361153320700142005ustar00rootroot00000000000000libvips-8.9.1/fuzz/Makefile.am000066400000000000000000000012271361153320700162360ustar00rootroot00000000000000TESTS = \ test_fuzz.sh FUZZPROGS = \ jpegsave_file_fuzzer \ jpegsave_buffer_fuzzer \ pngsave_buffer_fuzzer \ webpsave_buffer_fuzzer \ sharpen_fuzzer \ thumbnail_fuzzer \ smartcrop_fuzzer \ mosaic_fuzzer AM_DEFAULT_SOURCE_EXT = .cc FUZZLIBS = libstandaloneengine.a # Include debug symbols by default as recommended by libfuzzer AM_CXXFLAGS = -g -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ AM_LDFLAGS = @LDFLAGS@ LDADD = ${top_builddir}/libvips/libvips.la @VIPS_LIBS@ @LIB_FUZZING_ENGINE@ libstandaloneengine_a_SOURCES = StandaloneFuzzTargetMain.c check_PROGRAMS = $(FUZZPROGS) noinst_LIBRARIES = $(FUZZLIBS) EXTRA_DIST = $(TESTS) libvips-8.9.1/fuzz/StandaloneFuzzTargetMain.c000066400000000000000000000034251361153320700212730ustar00rootroot00000000000000/*===- StandaloneFuzzTargetMain.c - standalone main() for fuzz targets. ---===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // This main() function can be linked to a fuzz target (i.e. a library // that exports LLVMFuzzerTestOneInput() and possibly LLVMFuzzerInitialize()) // instead of libFuzzer. This main() function will not perform any fuzzing // but will simply feed all input files one by one to the fuzz target. // // Use this file to provide reproducers for bugs when linking against libFuzzer // or other fuzzing engine is undesirable. //===----------------------------------------------------------------------===*/ #include #include #include #include extern int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size); extern int LLVMFuzzerInitialize(int *argc, char ***argv); int main(int argc, char **argv) { const char *progname; if ((progname = strrchr(argv[0], '/'))) progname++; else progname = argv[0]; fprintf(stderr, "%s: running %d inputs\n", progname, argc - 1); LLVMFuzzerInitialize(&argc, &argv); for (int i = 1; i < argc; i++) { fprintf(stderr, "Running: %s\n", argv[i]); FILE *f = fopen(argv[i], "r+"); assert(f); fseek(f, 0, SEEK_END); long len = ftell(f); fseek(f, 0, SEEK_SET); unsigned char *buf = (unsigned char*)malloc(len); size_t n_read = fread(buf, 1, len, f); fclose(f); assert(n_read == len); LLVMFuzzerTestOneInput(buf, len); free(buf); fprintf(stderr, "Done: %s: (%zd bytes)\n", argv[i], n_read); } } libvips-8.9.1/fuzz/common_fuzzer_corpus/000077500000000000000000000000001361153320700204705ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpus/.keep000066400000000000000000000000001361153320700214030ustar00rootroot00000000000000clusterfuzz-testcase-minimized-jpegsave_buffer_fuzzer-5658586599915520000066400000000000000000000002521361153320700350740ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpusII*0? P           clusterfuzz-testcase-minimized-jpegsave_buffer_fuzzer-5673786296238080000066400000000000000000000000541361153320700350640ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpus  !  A http clusterfuzz-testcase-minimized-jpegsave_buffer_fuzzer-5759265708441600000066400000000000000000000004411361153320700350510ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpusExifMM*b1 i cs  ;"5  ;"cs  ;"5 clusterfuzz-testcase-minimized-jpegsave_file_fuzzer-5662041322291200000066400000000000000000000077561361153320700345070ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpus   MatrRAP"A%Q 65535xFIF׀JFID׀ MatrRAP"A%Q 65535x MatrRAP"A%Q 65535xRAP"A%Q 65535x@?3aJ{FIF׀JFID׀ MatrRAP"A%Q 65535x MatrRAP"A%Q 65535xFIF׀JFID׀ MatrRAP"A%Q 65535x MatrRAP"A%Q 65535xclusterfuzz-testcase-minimized-pngsave_buffer_fuzzer-5078454764044288000066400000000000000000000001071361153320700347160ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpusPNG  IHDR  iTXt IDAT(@fIDATclusterfuzz-testcase-minimized-sharpen_fuzzer-5203581631725568000066400000000000000000000000151361153320700333470ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpusGIF8 =clusterfuzz-testcase-minimized-sharpen_fuzzer-5678720198639616000066400000000000000000000004621361153320700333760ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpusII*      R  clusterfuzz-testcase-minimized-sharpen_fuzzer-5691855517253632000066400000000000000000000031151361153320700333610ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpusII* I R         clusterfuzz-testcase-minimized-smartcrop_fuzzer-5687924892368896000066400000000000000000000001551361153320700337670ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpusGIF8 ! ,  clusterfuzz-testcase-minimized-thumbnail_fuzzer-5676300823429120000066400000000000000000000005721361153320700336710ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpusII*       clusterfuzz-testcase-minimized-thumbnail_fuzzer-5718717719117824000066400000000000000000000020321361153320700337040ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpusII* J Q       S clusterfuzz-testcase-minimized-thumbnail_fuzzer-5741423734816768000066400000000000000000000040051361153320700337060ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpusII*       S k clusterfuzz-testcase-minimized-webpsave_buffer_fuzzer-5207224829345792000066400000000000000000000002461361153320700350660ustar00rootroot00000000000000libvips-8.9.1/fuzz/common_fuzzer_corpusRIFFWEBPVP8L/0? pڶ\LQDUWL]\SfcZolbzri|.(/)3#.9+8E7FM@QSHYVM`ZQf]Tg' %*$- *6(5=1?C6HG;OL@VOCW,!)!3$+2",0#-1#05(9>/B.""/##0$&/#'.!(.!*. --.+.)-," ,"!/##-!#,&+'-*+*'(#%libvips-8.9.1/fuzz/jpegsave_buffer_fuzzer.cc000066400000000000000000000011561361153320700212540ustar00rootroot00000000000000#include extern "C" int LLVMFuzzerInitialize( int *argc, char ***argv ) { vips_concurrency_set( 1 ); return( 0 ); } extern "C" int LLVMFuzzerTestOneInput( const guint8 *data, size_t size ) { VipsImage *image; void *buf; size_t len; if( !(image = vips_image_new_from_buffer( data, size, "", NULL )) ) return( 0 ); if( image->Xsize > 100 || image->Ysize > 100 || image->Bands > 4 ) { g_object_unref( image ); return( 0 ); } if( vips_jpegsave_buffer( image, &buf, &len, NULL ) ) { g_object_unref( image ); return( 0 ); } g_free( buf ); g_object_unref( image ); return( 0 ); } libvips-8.9.1/fuzz/jpegsave_file_fuzzer.cc000066400000000000000000000017211361153320700207200ustar00rootroot00000000000000#include extern "C" int LLVMFuzzerInitialize( int *argc, char ***argv ) { vips_concurrency_set( 1 ); return( 0 ); } static int test_one_file( const char *name ) { VipsImage *image; void *buf; size_t len; if( !(image = vips_image_new_from_file( name, "access", VIPS_ACCESS_SEQUENTIAL, NULL )) ) return( 0 ); if( image->Xsize > 100 || image->Ysize > 100 || image->Bands > 4 ) { g_object_unref( image ); return( 0 ); } if( vips_jpegsave_buffer( image, &buf, &len, NULL ) ) { g_object_unref( image ); return( 0 ); } g_free( buf ); g_object_unref( image ); return( 0 ); } extern "C" int LLVMFuzzerTestOneInput( const guint8 *data, size_t size ) { char *name; if( !(name = vips__temp_name( "%s" )) ) return( 0 ); if( !g_file_set_contents( name, (const char *) data, size, NULL ) || test_one_file( name ) ) { g_unlink( name ); g_free( name ); return( 0 ); } g_unlink( name ); g_free( name ); return( 0 ); } libvips-8.9.1/fuzz/mosaic_fuzzer.cc000066400000000000000000000022201361153320700173630ustar00rootroot00000000000000#include struct mosaic_opt { guint8 dir : 1; guint16 xref; guint16 yref; guint16 xsec; guint16 ysec; }; extern "C" int LLVMFuzzerInitialize( int *argc, char ***argv ) { vips_concurrency_set( 1 ); return( 0 ); } extern "C" int LLVMFuzzerTestOneInput( const guint8 *data, size_t size ) { VipsImage *ref, *sec, *out; struct mosaic_opt *opt; double d; if( size < sizeof( struct mosaic_opt ) ) return( 0 ); if( !(ref = vips_image_new_from_buffer( data, size, "", NULL )) ) return( 0 ); if( ref->Xsize > 100 || ref->Ysize > 100 || ref->Bands > 4 ) { g_object_unref( ref ); return( 0 ); } if( vips_rot180( ref, &sec, NULL ) ) { g_object_unref( ref ); return( 0 ); } /* Extract some bytes from the tail to fuzz the arguments of the API. */ opt = (struct mosaic_opt *) (data + size - sizeof( struct mosaic_opt )); if( vips_mosaic( ref, sec, &out, (VipsDirection) opt->dir, opt->xref, opt->yref, opt->xsec, opt->ysec, NULL ) ) { g_object_unref( sec ); g_object_unref( ref ); return( 0 ); } vips_max( out, &d, NULL ); g_object_unref( out ); g_object_unref( sec ); g_object_unref( ref ); return( 0 ); } libvips-8.9.1/fuzz/pngsave_buffer_fuzzer.cc000066400000000000000000000011551361153320700211120ustar00rootroot00000000000000#include extern "C" int LLVMFuzzerInitialize( int *argc, char ***argv ) { vips_concurrency_set( 1 ); return( 0 ); } extern "C" int LLVMFuzzerTestOneInput( const guint8 *data, size_t size ) { VipsImage *image; void *buf; size_t len; if( !(image = vips_image_new_from_buffer( data, size, "", NULL )) ) return( 0 ); if( image->Xsize > 100 || image->Ysize > 100 || image->Bands > 4 ) { g_object_unref( image ); return( 0 ); } if( vips_pngsave_buffer( image, &buf, &len, NULL ) ) { g_object_unref( image ); return( 0 ); } g_free( buf ); g_object_unref( image ); return( 0 ); } libvips-8.9.1/fuzz/sharpen_fuzzer.cc000066400000000000000000000011751361153320700175600ustar00rootroot00000000000000#include extern "C" int LLVMFuzzerInitialize( int *argc, char ***argv ) { vips_concurrency_set( 1 ); return( 0 ); } extern "C" int LLVMFuzzerTestOneInput( const guint8 *data, size_t size ) { VipsImage *image, *out; double d; if( !(image = vips_image_new_from_buffer( data, size, "", NULL )) ) return( 0 ); if( image->Xsize > 100 || image->Ysize > 100 || image->Bands > 4 ) { g_object_unref( image ); return( 0 ); } if( vips_sharpen( image, &out, NULL ) ) { g_object_unref( image ); return( 0 ); } vips_avg( out, &d, NULL ); g_object_unref( out ); g_object_unref( image ); return( 0 ); } libvips-8.9.1/fuzz/smartcrop_fuzzer.cc000066400000000000000000000012061361153320700201250ustar00rootroot00000000000000#include extern "C" int LLVMFuzzerInitialize( int *argc, char ***argv ) { vips_concurrency_set( 1 ); return( 0 ); } extern "C" int LLVMFuzzerTestOneInput( const guint8 *data, size_t size ) { VipsImage *image, *out; double d; if( !(image = vips_image_new_from_buffer( data, size, "", NULL )) ) return( 0 ); if( image->Xsize > 100 || image->Ysize > 100 || image->Bands > 4 ) { g_object_unref( image ); return( 0 ); } if( vips_smartcrop( image, &out, 32, 32, NULL ) ) { g_object_unref( image ); return( 0 ); } vips_min( out, &d, NULL ); g_object_unref( out ); g_object_unref( image ); return( 0 ); } libvips-8.9.1/fuzz/test_fuzz.sh000077500000000000000000000007611361153320700166000ustar00rootroot00000000000000#!/bin/sh #set -x set -e # Glib is built without -fno-omit-frame-pointer. We need # to disable the fast unwinder to get full stacktraces. export ASAN_OPTIONS="fast_unwind_on_malloc=0:allocator_may_return_null=1" export UBSAN_OPTIONS="print_stacktrace=1" # Hide all warning messages from vips. export VIPS_WARNING=0 ret=0 for fuzzer in *_fuzzer; do for file in common_fuzzer_corpus/*; do if ! ./$fuzzer $file; then echo FAIL $fuzzer $file ret=1 fi done done exit $ret libvips-8.9.1/fuzz/thumbnail_fuzzer.cc000066400000000000000000000012111361153320700200720ustar00rootroot00000000000000#include extern "C" int LLVMFuzzerInitialize( int *argc, char ***argv ) { vips_concurrency_set( 1 ); return( 0 ); } extern "C" int LLVMFuzzerTestOneInput( const guint8 *data, size_t size ) { VipsImage *image, *out; double d; if( !(image = vips_image_new_from_buffer( data, size, "", NULL )) ) return( 0 ); if( image->Xsize > 100 || image->Ysize > 100 || image->Bands > 4 ) { g_object_unref( image ); return( 0 ); } if( vips_thumbnail_image( image, &out, 42, NULL ) ) { g_object_unref( image ); return( 0 ); } vips_avg( out, &d, NULL ); g_object_unref( out ); g_object_unref( image ); return( 0 ); } libvips-8.9.1/fuzz/webpsave_buffer_fuzzer.cc000066400000000000000000000011561361153320700212640ustar00rootroot00000000000000#include extern "C" int LLVMFuzzerInitialize( int *argc, char ***argv ) { vips_concurrency_set( 1 ); return( 0 ); } extern "C" int LLVMFuzzerTestOneInput( const guint8 *data, size_t size ) { VipsImage *image; void *buf; size_t len; if( !(image = vips_image_new_from_buffer( data, size, "", NULL )) ) return( 0 ); if( image->Xsize > 100 || image->Ysize > 100 || image->Bands > 4 ) { g_object_unref( image ); return( 0 ); } if( vips_webpsave_buffer( image, &buf, &len, NULL ) ) { g_object_unref( image ); return( 0 ); } g_free( buf ); g_object_unref( image ); return( 0 ); } libvips-8.9.1/libvips/000077500000000000000000000000001361153320700146525ustar00rootroot00000000000000libvips-8.9.1/libvips/Makefile.am000066400000000000000000000054451361153320700167160ustar00rootroot00000000000000OPTIONAL_COMPILE_DIR = OPTIONAL_DIST_DIR = OPTIONAL_LIB = if ENABLE_DEPRECATED OPTIONAL_COMPILE_DIR += deprecated OPTIONAL_LIB += deprecated/libdeprecated.la else OPTIONAL_DIST_DIR += deprecated endif SUBDIRS = \ include \ foreign \ arithmetic \ resample \ colour \ conversion \ convolution \ $(OPTIONAL_COMPILE_DIR) \ freqfilt \ histogram \ draw \ iofuncs \ morphology \ mosaicing \ create . lib_LTLIBRARIES = libvips.la # empty means default to C linking libvips_la_SOURCES = # make sure we link the top-level with c++ nodist_EXTRA_libvips_la_SOURCES = resample/dummy2.cc # DLLs need dependant libs there too ... put @VIPS_LIBS@ at the end libvips_la_LIBADD = \ resample/libresample.la \ arithmetic/libarithmetic.la \ colour/libcolour.la \ conversion/libconversion.la \ convolution/libconvolution.la \ $(OPTIONAL_LIB) \ foreign/libforeign.la \ freqfilt/libfreqfilt.la \ histogram/libhistogram.la \ draw/libdraw.la \ iofuncs/libiofuncs.la \ morphology/libmorphology.la \ mosaicing/libmosaicing.la \ create/libcreate.la \ @VIPS_LIBS@ libvips_la_LDFLAGS = \ -no-undefined \ -version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@ EXTRA_DIST = \ $(OPTIONAL_DIST_DIR) CLEANFILES = install-exec-hook: echo '/* This file is autogenerated, do not edit. */' > soname.h && \ . ./libvips.la && \ echo "#define VIPS_SONAME \"$$dlname\"" >> soname.h && \ cp soname.h $(DESTDIR)$(pkgincludedir) && \ rm soname.h -include $(INTROSPECTION_MAKEFILE) INTROSPECTION_GIRS = INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) if HAVE_INTROSPECTION AM_CPPFLAGS = \ -I${top_srcdir}/libvips/include \ @VIPS_CFLAGS@ \ @VIPS_INCLUDES@ \ @INTROSPECTION_CFLAGS@ AM_LDFLAGS = \ @INTROSPECTION_LIBS@ \ @LDFLAGS@ LDADD = @INTROSPECTION_LIBS@ @VIPS_CFLAGS@ libvips.la @VIPS_LIBS@ noinst_PROGRAMS = \ introspect$(EXEEXT) introspect_SOURCES = \ introspect.c # we can't get the _SOURCES lists from the subdirs directly, we get passed it # by configure instead introspection_sources = @vips_introspection_sources@ # we make the vips8 API Vips-8.0.gir: introspect$(EXEEXT) Vips_8_0_gir_INCLUDES = GObject-2.0 Vips_8_0_gir_CFLAGS = $(INCLUDES) -I${top_srcdir}/libvips/include Vips_8_0_gir_LIBS = libvips.la Vips_8_0_gir_FILES = $(introspection_sources) INTROSPECTION_GIRS += Vips-8.0.gir # don't use # --warn-all --verbose # too annoying Vips_8_0_gir_SCANNERFLAGS = \ --program=./introspect$(EXEEXT) \ --identifier-prefix=Vips \ --identifier-prefix=vips \ --symbol-prefix=vips \ --c-include=vips/vips.h girdir = $(datadir)/gir-1.0 gir_DATA = $(INTROSPECTION_GIRS) typelibdir = $(libdir)/girepository-1.0 typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) CLEANFILES += $(gir_DATA) $(typelib_DATA) endif libvips-8.9.1/libvips/arithmetic/000077500000000000000000000000001361153320700170035ustar00rootroot00000000000000libvips-8.9.1/libvips/arithmetic/Makefile.am000066400000000000000000000013311361153320700210350ustar00rootroot00000000000000noinst_LTLIBRARIES = libarithmetic.la libarithmetic_la_SOURCES = \ find_trim.c \ sum.c \ hough.c \ hough.h \ hough_line.c \ hough_circle.c \ abs.c \ complex.c \ deviate.c \ divide.c \ measure.c \ getpoint.c \ multiply.c \ remainder.c \ sign.c \ statistic.c \ statistic.h \ stats.c \ avg.c \ min.c \ max.c \ hist_find.c \ hist_find_ndim.c \ hist_find_indexed.c \ project.c \ profile.c \ subtract.c \ math.c \ arithmetic.c \ parithmetic.h \ binary.c \ binary.h \ unary.c \ unary.h \ nary.c \ nary.h \ unaryconst.c \ unaryconst.h \ relational.c \ boolean.c \ add.c \ linear.c \ invert.c \ math2.c \ round.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ libvips-8.9.1/libvips/arithmetic/abs.c000066400000000000000000000155331361153320700177230ustar00rootroot00000000000000/* absolute value * * Copyright: 1990, N. Dessipris, based on im_powtra() * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 5/5/93 J.Cupitt * - adapted from im_lintra to work with partial images * - complex and signed support added * 30/6/93 JC * - adapted for partial v2 * - ANSI conversion * - spe29873r6k3h()**!@lling errors removed * 9/2/95 JC * - adapted for im_wrap... * 20/6/02 JC * - tiny speed up * 8/12/06 * - add liboil support * 28/8/09 * - gtkdoc * - tiny polish * 31/7/10 * - remove liboil * 6/11/11 * - redone as a class * 3/12/13 * - add orc, though the speed improvement vs. gcc's auto-vectorizer * seems very marginal * 21/2/19 * - move orc init to first use of abs */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef VipsUnary VipsAbs; typedef VipsUnaryClass VipsAbsClass; G_DEFINE_TYPE( VipsAbs, vips_abs, VIPS_TYPE_UNARY ); static void * vips_abs_orc_init_cb( void *a ) { VipsAbs *abs = (VipsAbs *) a; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_GET_CLASS( abs ); VipsVector *v; vips_arithmetic_set_vector( aclass ); v = vips_arithmetic_get_program( aclass, VIPS_FORMAT_CHAR ); vips_vector_asm2( v, "absb", "d1", "s1" ); v = vips_arithmetic_get_program( aclass, VIPS_FORMAT_SHORT ); vips_vector_asm2( v, "absw", "d1", "s1" ); v = vips_arithmetic_get_program( aclass, VIPS_FORMAT_INT ); vips_vector_asm2( v, "absl", "d1", "s1" ); vips_arithmetic_compile( aclass ); return( NULL ); } static int vips_abs_build( VipsObject *object ) { static GOnce once = G_ONCE_INIT; VipsUnary *unary = (VipsUnary *) object; VIPS_ONCE( &once, vips_abs_orc_init_cb, object ); if( unary->in && vips_band_format_isuint( unary->in->BandFmt ) ) return( vips_unary_copy( unary ) ); if( VIPS_OBJECT_CLASS( vips_abs_parent_class )->build( object ) ) return( -1 ); return( 0 ); } /* Integer abs operation: just test and negate. */ #define ABS_INT( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) \ q[x] = p[x] < 0 ? 0 - p[x] : p[x]; \ } /* Float abs operation: call fabs(). */ #define ABS_FLOAT( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) \ q[x] = VIPS_FABS( p[x] ); \ } /* Complex abs operation: calculate modulus. */ #ifdef HAVE_HYPOT #define ABS_COMPLEX( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) { \ q[x] = hypot( p[0], p[1] ); \ p += 2; \ } \ } #else /*HAVE_HYPOT*/ #define ABS_COMPLEX( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) { \ double rp = p[0]; \ double ip = p[1]; \ double abs_rp = VIPS_FABS( rp ); \ double abs_ip = VIPS_FABS( ip ); \ \ if( abs_rp > abs_ip ) { \ double temp = ip / rp; \ \ q[x] = abs_rp * sqrt( 1.0 + temp * temp ); \ } \ else { \ double temp = rp / ip; \ \ q[x] = abs_ip * sqrt( 1.0 + temp * temp ); \ } \ \ p += 2; \ } \ } #endif /*HAVE_HYPOT*/ static void vips_abs_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsArithmeticClass *class = VIPS_ARITHMETIC_GET_CLASS( arithmetic ); VipsImage *im = arithmetic->ready[0]; const int bands = vips_image_get_bands( im ); int sz = width * bands; VipsVector *v; if( (v = vips_arithmetic_get_vector( class, vips_image_get_format( im ) )) ) { VipsExecutor ex; vips_executor_set_program( &ex, v, sz ); vips_executor_set_array( &ex, v->s[0], in[0] ); vips_executor_set_destination( &ex, out ); vips_executor_run( &ex ); } else { switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: ABS_INT( signed char ); break; case VIPS_FORMAT_SHORT: ABS_INT( signed short ); break; case VIPS_FORMAT_INT: ABS_INT( signed int ); break; case VIPS_FORMAT_FLOAT: ABS_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: ABS_FLOAT( double ); break; case VIPS_FORMAT_COMPLEX: ABS_COMPLEX( float ); break; case VIPS_FORMAT_DPCOMPLEX: ABS_COMPLEX( double ); break; default: g_assert_not_reached(); } } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Format doesn't change with abs, other than complex -> real. */ static const VipsBandFormat vips_abs_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, F, D, D }; static void vips_abs_class_init( VipsAbsClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "abs"; object_class->description = _( "absolute value of an image" ); object_class->build = vips_abs_build; aclass->process_line = vips_abs_buffer; vips_arithmetic_set_format_table( aclass, vips_abs_format_table ); } static void vips_abs_init( VipsAbs *abs ) { } /** * vips_abs: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * This operation finds the absolute value of an image. It does a copy for * unsigned integer types, negate for negative values in * signed integer types, fabs(3) for * float types, and calculates modulus for complex * types. * * See also: vips_sign(). * * Returns: 0 on success, -1 on error */ int vips_abs( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "abs", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/add.c000066400000000000000000000163521361153320700177060ustar00rootroot00000000000000/* add operation * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 29/4/93 J.Cupitt * - now works for partial images * 1/7/93 JC * - adapted for partial v2 * 9/5/95 JC * - simplified: now just handles 10 cases (instead of 50), using * im_clip2*() to help * - now uses im_wrapmany() rather than im_generate() * 31/5/96 JC * - SWAP() removed, *p++ removed * 27/9/04 * - im__cast_and_call() now matches bands as well * - ... so 1 band + 4 band image -> 4 band image * 8/12/06 * - add liboil support * 18/8/08 * - revise upcasting system * - im__cast_and_call() no longer sets bbits for you * - add gtkdoc comments * - remove separate complex case, just double size * 11/9/09 * - im__cast_and_call() becomes im__arith_binary() * - more of operation scaffold moved inside * 25/7/10 * - remove oil support again ... we'll try Orc instead * 29/10/10 * - move to VipsVector for Orc support * 28/2/11 * - argh vector int/uint was broken * 4/4/11 * - rewrite as a class * 2/12/13 * - remove vector code, gcc autovec with -O3 is now as fast */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" typedef VipsBinary VipsAdd; typedef VipsBinaryClass VipsAddClass; G_DEFINE_TYPE( VipsAdd, vips_add, VIPS_TYPE_BINARY ); #define LOOP( IN, OUT ) { \ IN * restrict left = (IN *) in[0]; \ IN * restrict right = (IN *) in[1]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = left[x] + right[x]; \ } static void add_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; /* Complex just doubles the size. */ const int sz = width * vips_image_get_bands( im ) * (vips_band_format_iscomplex( vips_image_get_format( im ) ) ? 2 : 1); int x; /* Add all input types. Keep types here in sync with * vips_add_format_table[] below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, unsigned short ); break; case VIPS_FORMAT_CHAR: LOOP( signed char, signed short ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short, unsigned int ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, signed int ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int, signed int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOP( double, double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for addition. Sign and value preserving. Make sure these * match the case statement in add_buffer() above. */ static const VipsBandFormat vips_add_format_table[10] = { /* UC C US S UI I F X D DX */ US, S, UI, I, UI, I, F, X, D, DX }; static void vips_add_class_init( VipsAddClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "add"; object_class->description = _( "add two images" ); aclass->process_line = add_buffer; vips_arithmetic_set_format_table( aclass, vips_add_format_table ); } static void vips_add_init( VipsAdd *add ) { } /** * vips_add: * @left: input image * @right: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * This operation calculates @in1 + @in2 and writes the result to @out. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), then the * following table is used to determine the output type: * * * VipsAdd type promotion * * * * input type * output type * * * * * uchar * ushort * * * char * short * * * ushort * uint * * * short * int * * * uint * uint * * * int * int * * * float * float * * * double * double * * * complex * complex * * * double complex * double complex * * * *
* * In other words, the output type is just large enough to hold the whole * range of possible values. * * Operations on integer images are performed using the processor's vector unit, * if possible. Disable this with --vips-novector or IM_NOVECTOR. * * See also: vips_subtract(), vips_linear(). * * Returns: 0 on success, -1 on error */ int vips_add( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "add", ap, left, right, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/arithmetic.c000066400000000000000000000570241361153320700213100ustar00rootroot00000000000000/* base class for all arithmetic operations * * properties: * - one output image, one or more inputs * - cast input images to match * - output is large enough to hold output values (value preserving) * - point-to-point operations (ie. each pixel depends only on the * corresponding pixel in the input) * - LUT-able: ie. arithmetic (image) can be exactly replaced by * maplut (image, arithmetic (lut)) for 8/16 bit int images */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "parithmetic.h" /** * SECTION: arithmetic * @short_description: operations which perform pixel arithmetic, trig, log, statistics * @stability: Stable * @include: vips/vips.h * * These operations perform pixel arithmetic, that is, they perform an * arithmetic operation, such as addition, on every pixel in an image or a * pair of images. All (except in a few cases noted below) will work with * images of any type or any mixture of types, of any size and of any number * of bands. * * For binary operations, if the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * In the same way, for operations that take an array constant, such as * vips_remainder_const(), you can mix single-element arrays or single-band * images freely. * * Arithmetic operations try to preserve precision by increasing the number of * bits in the output image when necessary. Generally, this follows the ANSI C * conventions for type promotion, so multiplying two * #VIPS_FORMAT_UCHAR images together, for example, produces a * #VIPS_FORMAT_USHORT image, and taking the vips_cos() of a * #VIPS_FORMAT_USHORT image produces #VIPS_FORMAT_FLOAT image. * * For binary arithmetic operations, type promotion occurs in two stages. * First, the two input images are cast up to the smallest common format, * that is, the type with the smallest range that can represent the full * range of both inputs. This conversion can be represented as a table: * * * Smallest common format * * * * @in2/@in1 * uchar * char * ushort * short * uint * int * float * double * complex * double complex * * * * * uchar * ushort * short * ushort * short * uint * int * float * double * complex * double complex * * * char * short * short * short * short * int * int * float * double * complex * double complex * * * ushort * ushort * short * ushort * short * uint * int * float * double * complex * double complex * * * short * short * short * short * short * int * int * float * double * complex * double complex * * * uint * uint * int * uint * int * uint * int * float * double * complex * double complex * * * int * int * int * int * int * int * int * float * double * complex * double complex * * * float * float * float * float * float * float * float * float * double * complex * double complex * * * double * double * double * double * double * double * double * double * double * double complex * double complex * * * complex * complex * complex * complex * complex * complex * complex * complex * double complex * complex * double complex * * * double complex * double complex * double complex * double complex * double complex * double complex * double complex * double complex * double complex * double complex * double complex * * * *
* * In the second stage, the operation is performed between the two identical * types to form the output. The details vary between operations, but * generally the principle is that the output type should be large enough to * represent the whole range of possible values, except that int never becomes * float. */ G_DEFINE_ABSTRACT_TYPE( VipsArithmetic, vips_arithmetic, VIPS_TYPE_OPERATION ); /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* For two integer types, the "largest", ie. one which can represent the * full range of both. */ static VipsBandFormat format_largest[6][6] = { /* UC C US S UI I */ /* UC */ { UC, S, US, S, UI, I }, /* C */ { S, C, I, S, I, I }, /* US */ { US, I, US, I, UI, I }, /* S */ { S, S, I, S, I, I }, /* UI */ { UI, I, UI, I, UI, I }, /* I */ { I, I, I, I, I, I } }; /* For two formats, find one which can represent the full range of both. */ static VipsBandFormat vips_format_common( VipsBandFormat a, VipsBandFormat b ) { if( vips_band_format_iscomplex( a ) || vips_band_format_iscomplex( b ) ) { if( a == VIPS_FORMAT_DPCOMPLEX || b == VIPS_FORMAT_DPCOMPLEX ) return( VIPS_FORMAT_DPCOMPLEX ); else return( VIPS_FORMAT_COMPLEX ); } else if( vips_band_format_isfloat( a ) || vips_band_format_isfloat( b ) ) { if( a == VIPS_FORMAT_DOUBLE || b == VIPS_FORMAT_DOUBLE ) return( VIPS_FORMAT_DOUBLE ); else return( VIPS_FORMAT_FLOAT ); } else return( format_largest[a][b] ); } int vips__formatalike_vec( VipsImage **in, VipsImage **out, int n ) { int i; VipsBandFormat format; g_assert( n >= 1 ); format = in[0]->BandFmt; for( i = 1; i < n; i++ ) format = vips_format_common( format, in[i]->BandFmt ); for( i = 0; i < n; i++ ) if( in[i]->BandFmt == format ) { /* Already in the right format ... just copy the image * pointer and add a ref. */ out[i] = in[i]; g_object_ref( in[i] ); } else { if( vips_cast( in[i], &out[i], format, NULL ) ) return( -1 ); } return( 0 ); } int vips__sizealike_vec( VipsImage **in, VipsImage **out, int n ) { int i; int width_max; int height_max; g_assert( n >= 1 ); width_max = in[0]->Xsize; height_max = in[0]->Ysize; for( i = 1; i < n; i++ ) { width_max = VIPS_MAX( width_max, in[i]->Xsize ); height_max = VIPS_MAX( height_max, in[i]->Ysize ); } for( i = 0; i < n; i++ ) if( in[i]->Xsize == width_max && in[i]->Ysize == height_max ) { /* Already the right size ... just copy the image * pointer and add a ref. */ out[i] = in[i]; g_object_ref( in[i] ); } else { if( vips_embed( in[i], &out[i], 0, 0, width_max, height_max, NULL ) ) return( -1 ); } return( 0 ); } /* Make an n-band image. Input 1 or n bands. */ int vips__bandup( const char *domain, VipsImage *in, VipsImage **out, int n ) { VipsImage **bands; int i; int result; if( in->Bands == n ) return( vips_copy( in, out, NULL ) ); if( in->Bands != 1 ) { vips_error( domain, _( "not one band or %d bands" ), n ); return( -1 ); } if( n > VIPS_MAX_COORD || n < 1 ) { vips_error( domain, "%s", _( "bad bands" ) ); return( -1 ); } if( !(bands = VIPS_ARRAY( NULL, n, VipsImage * )) ) return( -1 ); for( i = 0; i < n; i++ ) bands[i] = in; result = vips_bandjoin( bands, out, n, NULL ); VIPS_FREE( bands ); return( result ); } /* base_bands is the default minimum. * * Handy for example, if you have VipsLinear with * a 3-element vector of constants and a 1-band input image, you need to cast * the image up to three bands. */ int vips__bandalike_vec( const char *domain, VipsImage **in, VipsImage **out, int n, int base_bands ) { int i; int max_bands; VipsInterpretation interpretation; g_assert( n >= 1 ); /* We try to set the interpretation of the output images from the * interpretation of the n-band input. For example, if we are matching * a set of BW images to an RGB image, we want the BW images to be * tagged as RGB. */ max_bands = base_bands; interpretation = VIPS_INTERPRETATION_ERROR; for( i = 0; i < n; i++ ) { /* >= so we can pick up interpretation if base_bands is equal * to the number of bands of the largest image. */ if( in[i]->Bands >= max_bands ) { max_bands = in[i]->Bands; interpretation = in[i]->Type; } } for( i = 0; i < n; i++ ) if( in[i]->Bands == max_bands ) { /* Already the right number of bands ... just copy the * image pointer and add a ref. */ out[i] = in[i]; g_object_ref( in[i] ); } else { if( vips__bandup( domain, in[i], &out[i], max_bands ) ) return( -1 ); if( interpretation != VIPS_INTERPRETATION_ERROR ) out[i]->Type = interpretation; } return( 0 ); } int vips__formatalike( VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ) { VipsImage *in[2]; VipsImage *out[2]; in[0] = in1; in[1] = in2; if( vips__formatalike_vec( in, out, 2 ) ) return( -1 ); *out1 = out[0]; *out2 = out[1]; return( 0 ); } int vips__sizealike( VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ) { VipsImage *in[2]; VipsImage *out[2]; in[0] = in1; in[1] = in2; if( vips__sizealike_vec( in, out, 2 ) ) return( -1 ); *out1 = out[0]; *out2 = out[1]; return( 0 ); } int vips__bandalike( const char *domain, VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ) { VipsImage *in[2]; VipsImage *out[2]; in[0] = in1; in[1] = in2; if( vips__bandalike_vec( domain, in, out, 2, 1 ) ) return( -1 ); *out1 = out[0]; *out2 = out[1]; return( 0 ); } /* Our sequence value. */ typedef struct { VipsArithmetic *arithmetic; /* Set of input regions. */ VipsRegion **ir; /* For each input, an input pointer. */ VipsPel **p; } VipsArithmeticSequence; static int vips_arithmetic_stop( void *vseq, void *a, void *b ) { VipsArithmeticSequence *seq = (VipsArithmeticSequence *) vseq; if( seq->ir ) { int i; for( i = 0; seq->ir[i]; i++ ) VIPS_UNREF( seq->ir[i] ); VIPS_FREE( seq->ir ); } VIPS_FREE( seq->p ); VIPS_FREE( seq ); return( 0 ); } static void * vips_arithmetic_start( VipsImage *out, void *a, void *b ) { VipsImage **in = (VipsImage **) a; VipsArithmetic *arithmetic = (VipsArithmetic *) b; VipsArithmeticSequence *seq; int i, n; if( !(seq = VIPS_NEW( NULL, VipsArithmeticSequence )) ) return( NULL ); seq->arithmetic = arithmetic; seq->ir = NULL; seq->p = NULL; /* How many images? */ for( n = 0; in[n]; n++ ) ; /* Alocate space for region array. */ if( !(seq->ir = VIPS_ARRAY( NULL, n + 1, VipsRegion * )) ) { vips_arithmetic_stop( seq, NULL, NULL ); return( NULL ); } /* Create a set of regions. */ for( i = 0; i < n; i++ ) if( !(seq->ir[i] = vips_region_new( in[i] )) ) { vips_arithmetic_stop( seq, NULL, NULL ); return( NULL ); } seq->ir[n] = NULL; /* Input pointers. */ if( !(seq->p = VIPS_ARRAY( NULL, n + 1, VipsPel * )) ) { vips_arithmetic_stop( seq, NULL, NULL ); return( NULL ); } return( seq ); } static int vips_arithmetic_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsArithmeticSequence *seq = (VipsArithmeticSequence *) vseq; VipsRegion **ir = seq->ir; VipsArithmetic *arithmetic = VIPS_ARITHMETIC( b ); VipsArithmeticClass *class = VIPS_ARITHMETIC_GET_CLASS( arithmetic ); VipsRect *r = &or->valid; VipsPel *q; int i, y; /* Prepare all input regions and make buffer pointers. */ if( vips_reorder_prepare_many( or->im, ir, r ) ) return( -1 ); for( i = 0; ir[i]; i++ ) seq->p[i] = (VipsPel *) VIPS_REGION_ADDR( ir[i], r->left, r->top ); seq->p[i] = NULL; q = (VipsPel *) VIPS_REGION_ADDR( or, r->left, r->top ); VIPS_GATE_START( "vips_arithmetic_gen: work" ); for( y = 0; y < r->height; y++ ) { class->process_line( arithmetic, q, seq->p, r->width ); for( i = 0; ir[i]; i++ ) seq->p[i] += VIPS_REGION_LSKIP( ir[i] ); q += VIPS_REGION_LSKIP( or ); } VIPS_GATE_STOP( "vips_arithmetic_gen: work" ); VIPS_COUNT_PIXELS( or, VIPS_OBJECT_CLASS( class )->nickname ); return( 0 ); } static int vips_arithmetic_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsArithmeticClass *aclass = VIPS_ARITHMETIC_GET_CLASS( arithmetic ); VipsImage **decode; VipsImage **format; VipsImage **band; VipsImage **size; int i; #ifdef DEBUG printf( "vips_arithmetic_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_arithmetic_parent_class )-> build( object ) ) return( -1 ); g_object_set( arithmetic, "out", vips_image_new(), NULL ); decode = (VipsImage **) vips_object_local_array( object, arithmetic->n ); format = (VipsImage **) vips_object_local_array( object, arithmetic->n ); band = (VipsImage **) vips_object_local_array( object, arithmetic->n ); size = (VipsImage **) vips_object_local_array( object, arithmetic->n ); /* Decode RAD/LABQ etc. */ for( i = 0; i < arithmetic->n; i++ ) if( vips_image_decode( arithmetic->in[i], &decode[i] ) ) return( -1 ); /* Cast our input images up to a common format, bands and size. */ if( vips__formatalike_vec( decode, format, arithmetic->n ) || vips__bandalike_vec( class->nickname, format, band, arithmetic->n, arithmetic->base_bands ) || vips__sizealike_vec( band, size, arithmetic->n ) ) return( -1 ); /* Keep a copy of the processed images here for subclasses. */ arithmetic->ready = size; if( vips_image_pipeline_array( arithmetic->out, VIPS_DEMAND_STYLE_THINSTRIP, arithmetic->ready ) ) return( -1 ); arithmetic->out->Bands = arithmetic->ready[0]->Bands; if( arithmetic->format != VIPS_FORMAT_NOTSET ) arithmetic->out->BandFmt = arithmetic->format; else arithmetic->out->BandFmt = aclass->format_table[arithmetic->ready[0]->BandFmt]; if( vips_image_generate( arithmetic->out, vips_arithmetic_start, vips_arithmetic_gen, vips_arithmetic_stop, arithmetic->ready, arithmetic ) ) return( -1 ); return( 0 ); } static void vips_arithmetic_class_init( VipsArithmeticClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "arithmetic"; vobject_class->description = _( "arithmetic operations" ); vobject_class->build = vips_arithmetic_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsArithmetic, out ) ); } static void vips_arithmetic_init( VipsArithmetic *arithmetic ) { arithmetic->base_bands = 1; arithmetic->format = VIPS_FORMAT_NOTSET; } void vips_arithmetic_set_format_table( VipsArithmeticClass *class, const VipsBandFormat *format_table ) { g_assert( !class->format_table ); class->format_table = format_table; } void vips_arithmetic_set_vector( VipsArithmeticClass *class ) { int i; g_assert( class->format_table ); for( i = 0; i < VIPS_FORMAT_LAST; i++ ) { int isize = vips_format_sizeof( i ); int osize = vips_format_sizeof( (int) class->format_table[i] ); VipsVector *v; v = vips_vector_new( "arithmetic", osize ); vips_vector_source_name( v, "s1", isize ); vips_vector_source_name( v, "s2", isize ); vips_vector_temporary( v, "t1", osize ); vips_vector_temporary( v, "t2", osize ); class->vectors[i] = v; } } /* Get the stub for this program ... use _get_vector() to get the compiled * code. */ VipsVector * vips_arithmetic_get_program( VipsArithmeticClass *class, VipsBandFormat fmt ) { g_assert( (int) fmt >= 0 && (int) fmt < VIPS_FORMAT_LAST ); g_assert( !class->vector_program[fmt] ); class->vector_program[fmt] = TRUE; return( class->vectors[fmt] ); } /* Get the compiled code for this type, if available. */ VipsVector * vips_arithmetic_get_vector( VipsArithmeticClass *class, VipsBandFormat fmt ) { g_assert( fmt >= 0 && fmt < VIPS_FORMAT_LAST ); if( !vips_vector_isenabled() || !class->vector_program[fmt] ) return( NULL ); return( class->vectors[fmt] ); } void vips_arithmetic_compile( VipsArithmeticClass *class ) { int i; g_assert( class->format_table ); for( i = 0; i < VIPS_FORMAT_LAST; i++ ) if( class->vector_program[i] && !vips_vector_compile( class->vectors[i] ) ) /* If compilation fails, turn off the vector for this * type. */ class->vector_program[i] = FALSE; #ifdef DEBUG printf( "vips_arithmetic_compile: " ); for( i = 0; i < VIPS_FORMAT_LAST; i++ ) if( class->vector_program[i] ) printf( "%s ", vips_enum_nick( VIPS_TYPE_BAND_FORMAT, i ) ); printf( "\n" ); #endif /*DEBUG*/ } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_arithmetic_operation_init( void ) { extern GType vips_add_get_type( void ); extern GType vips_sum_get_type( void ); extern GType vips_subtract_get_type( void ); extern GType vips_multiply_get_type( void ); extern GType vips_divide_get_type( void ); extern GType vips_invert_get_type( void ); extern GType vips_avg_get_type( void ); extern GType vips_min_get_type( void ); extern GType vips_max_get_type( void ); extern GType vips_deviate_get_type( void ); extern GType vips_linear_get_type( void ); extern GType vips_math_get_type( void ); extern GType vips_abs_get_type( void ); extern GType vips_sign_get_type( void ); extern GType vips_stats_get_type( void ); extern GType vips_hist_find_get_type( void ); extern GType vips_hist_find_ndim_get_type( void ); extern GType vips_hist_find_indexed_get_type( void ); extern GType vips_hough_line_get_type( void ); extern GType vips_hough_circle_get_type( void ); extern GType vips_project_get_type( void ); extern GType vips_profile_get_type( void ); extern GType vips_measure_get_type( void ); extern GType vips_getpoint_get_type( void ); extern GType vips_round_get_type( void ); extern GType vips_relational_get_type( void ); extern GType vips_relational_const_get_type( void ); extern GType vips_remainder_get_type( void ); extern GType vips_remainder_const_get_type( void ); extern GType vips_boolean_get_type( void ); extern GType vips_boolean_const_get_type( void ); extern GType vips_math2_get_type( void ); extern GType vips_math2_const_get_type( void ); extern GType vips_complex_get_type( void ); extern GType vips_complex2_get_type( void ); extern GType vips_complexget_get_type( void ); extern GType vips_complexform_get_type( void ); extern GType vips_find_trim_get_type( void ); vips_add_get_type(); vips_sum_get_type(); vips_subtract_get_type(); vips_multiply_get_type(); vips_divide_get_type(); vips_invert_get_type(); vips_avg_get_type(); vips_min_get_type(); vips_max_get_type(); vips_deviate_get_type(); vips_linear_get_type(); vips_math_get_type(); vips_abs_get_type(); vips_sign_get_type(); vips_stats_get_type(); vips_hist_find_get_type(); vips_hist_find_ndim_get_type(); vips_hist_find_indexed_get_type(); vips_hough_line_get_type(); vips_hough_circle_get_type(); vips_project_get_type(); vips_profile_get_type(); vips_measure_get_type(); vips_getpoint_get_type(); vips_round_get_type(); vips_relational_get_type(); vips_relational_const_get_type(); vips_remainder_get_type(); vips_remainder_const_get_type(); vips_boolean_get_type(); vips_boolean_const_get_type(); vips_math2_get_type(); vips_math2_const_get_type(); vips_complex_get_type(); vips_complex2_get_type(); vips_complexget_get_type(); vips_complexform_get_type(); vips_find_trim_get_type(); } libvips-8.9.1/libvips/arithmetic/avg.c000066400000000000000000000132321361153320700177250ustar00rootroot00000000000000/* avg ... average value of image * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/08/1990 * Modified on: * 5/5/93 JC * - now does partial images * - less likely to overflow * 1/7/93 JC * - adapted for partial v2 * - ANSI C * 21/2/95 JC * - modernised again * 11/5/95 JC * - oops! return( NULL ) in im_avg(), instead of return( -1 ) * 20/6/95 JC * - now returns double * 13/1/05 * - use 64 bit arithmetic * 8/12/06 * - add liboil support * 18/8/09 * - gtkdoc, minor reformatting * 7/9/09 * - rewrite for im__wrapiter() * - add complex case (needed for im_max()) * 8/9/09 * - wrapscan stuff moved here * 31/7/10 * - remove liboil * 24/8/11 * - rewrite as a class * 12/9/14 * - oops, fix complex avg */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "statistic.h" typedef struct _VipsAvg { VipsStatistic parent_instance; double sum; double out; } VipsAvg; typedef VipsStatisticClass VipsAvgClass; G_DEFINE_TYPE( VipsAvg, vips_avg, VIPS_TYPE_STATISTIC ); static int vips_avg_build( VipsObject *object ) { VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsAvg *avg = (VipsAvg *) object; gint64 vals; double average; if( VIPS_OBJECT_CLASS( vips_avg_parent_class )->build( object ) ) return( -1 ); vals = (gint64) vips_image_get_width( statistic->in ) * vips_image_get_height( statistic->in ) * vips_image_get_bands( statistic->in ); average = avg->sum / vals; g_object_set( object, "out", average, NULL ); return( 0 ); } /* Start function: allocate space for a double in which we can accumulate the * sum for this thread. */ static void * vips_avg_start( VipsStatistic *statistic ) { return( (void *) g_new0( double, 1 ) ); } /* Stop function. Add this little sum to the main sum. */ static int vips_avg_stop( VipsStatistic *statistic, void *seq ) { VipsAvg *avg = (VipsAvg *) statistic; double *sum = (double *) seq; avg->sum += *sum; g_free( seq ); return( 0 ); } /* Sum pels in this section. */ #define LOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ \ for( i = 0; i < sz; i++ ) \ m += p[i]; \ } #define CLOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ \ for( i = 0; i < sz; i++ ) { \ double mod = sqrt( p[0] * p[0] + p[1] * p[1] ); \ \ m += mod; \ p += 2; \ } \ } /* Loop over region, accumulating a sum in *tmp. */ static int vips_avg_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { const int sz = n * vips_image_get_bands( statistic->in ); double *sum = (double *) seq; int i; double m; m = *sum; /* Now generate code for all types. */ switch( vips_image_get_format( statistic->in ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOP( signed char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOP( signed short ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int ); break; case VIPS_FORMAT_FLOAT: LOOP( float ); break; case VIPS_FORMAT_DOUBLE: LOOP( double ); break; case VIPS_FORMAT_COMPLEX: CLOOP( float ); break; case VIPS_FORMAT_DPCOMPLEX: CLOOP( double ); break; default: g_assert_not_reached(); } *sum = m; return( 0 ); } static void vips_avg_class_init( VipsAvgClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "avg"; object_class->description = _( "find image average" ); object_class->build = vips_avg_build; sclass->start = vips_avg_start; sclass->scan = vips_avg_scan; sclass->stop = vips_avg_stop; VIPS_ARG_DOUBLE( class, "out", 2, _( "Output" ), _( "Output value" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsAvg, out ), -INFINITY, INFINITY, 0.0 ); } static void vips_avg_init( VipsAvg *avg ) { } /** * vips_avg: (method) * @in: input #VipsImage * @out: (out): output pixel average * @...: %NULL-terminated list of optional named arguments * * This operation finds the average value in an image. It operates on all * bands of the input image: use vips_stats() if you need to calculate an * average for each band. For complex images, return the average modulus. * * See also: vips_stats(), vips_bandmean(), vips_deviate(), vips_rank() * * Returns: 0 on success, -1 on error */ int vips_avg( VipsImage *in, double *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "avg", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/binary.c000066400000000000000000000054111361153320700204340ustar00rootroot00000000000000/* base class for all binary operations * * 13/3/11 * - argh, forgot to make a private array for the inputs * 16/5/11 * - added sizealike * 30/10/11 * - moe most functionality into arithmetic.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" G_DEFINE_ABSTRACT_TYPE( VipsBinary, vips_binary, VIPS_TYPE_ARITHMETIC ); static int vips_binary_build( VipsObject *object ) { VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsBinary *binary = VIPS_BINARY( object ); arithmetic->n = 2; arithmetic->in = (VipsImage **) vips_object_local_array( object, 2 ); arithmetic->in[0] = binary->left; arithmetic->in[1] = binary->right; if( arithmetic->in[0] ) g_object_ref( arithmetic->in[0] ); if( arithmetic->in[1] ) g_object_ref( arithmetic->in[1] ); if( VIPS_OBJECT_CLASS( vips_binary_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_binary_class_init( VipsBinaryClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "binary"; vobject_class->description = _( "binary operations" ); vobject_class->build = vips_binary_build; /* Create properties. */ VIPS_ARG_IMAGE( class, "left", 1, _( "Left" ), _( "Left-hand image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBinary, left ) ); VIPS_ARG_IMAGE( class, "right", 2, _( "Right" ), _( "Right-hand image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBinary, right ) ); } static void vips_binary_init( VipsBinary *binary ) { /* Init our instance fields. */ } libvips-8.9.1/libvips/arithmetic/binary.h000066400000000000000000000036701361153320700204460ustar00rootroot00000000000000/* base class for all binary arithmetic operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_BINARY_H #define VIPS_BINARY_H #include #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "parithmetic.h" #define VIPS_TYPE_BINARY (vips_binary_get_type()) #define VIPS_BINARY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), VIPS_TYPE_BINARY, VipsBinary )) #define VIPS_BINARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), VIPS_TYPE_BINARY, VipsBinaryClass)) #define VIPS_IS_BINARY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_BINARY )) #define VIPS_IS_BINARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_BINARY )) #define VIPS_BINARY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), VIPS_TYPE_BINARY, VipsBinaryClass )) typedef struct _VipsBinary { VipsArithmetic parent_instance; /* Original left and right image args. */ VipsImage *left; VipsImage *right; } VipsBinary; typedef VipsArithmeticClass VipsBinaryClass; GType vips_binary_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_BINARY_H*/ libvips-8.9.1/libvips/arithmetic/boolean.c000066400000000000000000000545741361153320700206050ustar00rootroot00000000000000/* boolean.c --- various bit operations * * Modified: * 15/12/94 JC * - ANSIfied * - adapted to partials with im_wrap... * 25/1/95 JC * - added check1ary(), check2ary() * 8/2/95 JC * - new im_wrapmany * 19/7/95 JC * - added im_shiftleft() and im_shiftright() * 6/7/98 JC * - added _vec forms * - removed *p++ stuff * 10/9/99 JC * - and/or/eor now do all int types * 10/10/02 JC * - renamed im_and() etc. as im_andimage() to remove breakage in the C++ * layer if operator names are turned on * 30/6/04 * - now cast float/complex args to int * 11/9/09 * - use new im__cast_and__call() * - therefore now supports 1-band $op n-band * 17/9/09 * - moved to im__arith_binary*() * - renamed im_eor_vec() as im_eorimage_vec() for C++ sanity * 21/11/10 * - oop, constants are always (int) now, so (^-1) works for unsigned * types * 12/11/11 * - redo as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" #include "unaryconst.h" typedef struct _VipsBoolean { VipsBinary parent_instance; VipsOperationBoolean operation; } VipsBoolean; typedef VipsBinaryClass VipsBooleanClass; G_DEFINE_TYPE( VipsBoolean, vips_boolean, VIPS_TYPE_BINARY ); static int vips_boolean_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBinary *binary = (VipsBinary *) object; if( binary->left && vips_check_noncomplex( class->nickname, binary->left ) ) return( -1 ); if( binary->right && vips_check_noncomplex( class->nickname, binary->right ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_boolean_parent_class )->build( object ) ) return( -1 ); return( 0 ); } #define LOOP( TYPE, OP ) { \ TYPE * restrict left = (TYPE *) in[0]; \ TYPE * restrict right = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = left[x] OP right[x]; \ } #define FLOOP( TYPE, OP ) { \ TYPE * restrict left = (TYPE *) in[0]; \ TYPE * restrict right = (TYPE *) in[1]; \ int * restrict q = (int *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = ((int) left[x]) OP ((int) right[x]); \ } #define SWITCH( I, F, OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: I( unsigned char, OP ); break; \ case VIPS_FORMAT_CHAR: I( signed char, OP ); break; \ case VIPS_FORMAT_USHORT: I( unsigned short, OP ); break; \ case VIPS_FORMAT_SHORT: I( signed short, OP ); break; \ case VIPS_FORMAT_UINT: I( unsigned int, OP ); break; \ case VIPS_FORMAT_INT: I( signed int, OP ); break; \ case VIPS_FORMAT_FLOAT: F( float, OP ); break; \ case VIPS_FORMAT_DOUBLE: F( double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } #define FNLOOP( TYPE, FN ) { \ TYPE * restrict left = (TYPE *) in[0]; \ TYPE * restrict right = (TYPE *) in[1]; \ int * restrict q = (int *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = FN( left[x], right[x] ); \ } static void vips_boolean_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsBoolean *boolean = (VipsBoolean *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( boolean->operation ) { case VIPS_OPERATION_BOOLEAN_AND: SWITCH( LOOP, FLOOP, & ); break; case VIPS_OPERATION_BOOLEAN_OR: SWITCH( LOOP, FLOOP, | ); break; case VIPS_OPERATION_BOOLEAN_EOR: SWITCH( LOOP, FLOOP, ^ ); break; /* Special case: we need to be able to use VIPS_LSHIFT_INT(). */ case VIPS_OPERATION_BOOLEAN_LSHIFT: switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, << ); break; case VIPS_FORMAT_CHAR: FNLOOP( signed char, VIPS_LSHIFT_INT ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short, << ); break; case VIPS_FORMAT_SHORT: FNLOOP( signed short, VIPS_LSHIFT_INT ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, << ); break; case VIPS_FORMAT_INT: FNLOOP( signed int, VIPS_LSHIFT_INT ); break; case VIPS_FORMAT_FLOAT: FLOOP( float, << ); break; case VIPS_FORMAT_DOUBLE: FLOOP( double, << ); break; default: g_assert_not_reached(); } break; case VIPS_OPERATION_BOOLEAN_RSHIFT: SWITCH( LOOP, FLOOP, >> ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type conversions for boolean. */ static const VipsBandFormat vips_boolean_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, I, I, I, I, }; static void vips_boolean_class_init( VipsBooleanClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "boolean"; object_class->description = _( "boolean operation on two images" ); object_class->build = vips_boolean_build; aclass->process_line = vips_boolean_buffer; vips_arithmetic_set_format_table( aclass, vips_boolean_format_table ); VIPS_ARG_ENUM( class, "boolean", 200, _( "Operation" ), _( "boolean to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBoolean, operation ), VIPS_TYPE_OPERATION_BOOLEAN, VIPS_OPERATION_BOOLEAN_AND ); } static void vips_boolean_init( VipsBoolean *boolean ) { } static int vips_booleanv( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationBoolean operation, va_list ap ) { return( vips_call_split( "boolean", ap, left, right, out, operation ) ); } /** * vips_boolean: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @boolean: boolean operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various boolean operations on pairs of images. * * The output image is the same format as the upcast input images for integer * types. Float types are cast to int before processing. Complex types are not * supported. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic). * * See also: vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_boolean( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationBoolean boolean, ... ) { va_list ap; int result; va_start( ap, boolean ); result = vips_booleanv( left, right, out, boolean, ap ); va_end( ap ); return( result ); } /** * vips_andimage: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_AND on a pair of images. See * vips_boolean(). * * Returns: 0 on success, -1 on error */ int vips_andimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_booleanv( left, right, out, VIPS_OPERATION_BOOLEAN_AND, ap ); va_end( ap ); return( result ); } /** * vips_orimage: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_OR on a pair of images. See * vips_boolean(). * * Returns: 0 on success, -1 on error */ int vips_orimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_booleanv( left, right, out, VIPS_OPERATION_BOOLEAN_OR, ap ); va_end( ap ); return( result ); } /** * vips_eorimage: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_EOR on a pair of images. See * vips_boolean(). * * Returns: 0 on success, -1 on error */ int vips_eorimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_booleanv( left, right, out, VIPS_OPERATION_BOOLEAN_EOR, ap ); va_end( ap ); return( result ); } /** * vips_lshift: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_LSHIFT on a pair of images. See * vips_boolean(). * * Returns: 0 on success, -1 on error */ int vips_lshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_booleanv( left, right, out, VIPS_OPERATION_BOOLEAN_LSHIFT, ap ); va_end( ap ); return( result ); } /** * vips_rshift: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_RSHIFT on a pair of images. See * vips_boolean(). * * Returns: 0 on success, -1 on error */ int vips_rshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_booleanv( left, right, out, VIPS_OPERATION_BOOLEAN_RSHIFT, ap ); va_end( ap ); return( result ); } typedef struct _VipsBooleanConst { VipsUnaryConst parent_instance; VipsOperationBoolean operation; } VipsBooleanConst; typedef VipsUnaryConstClass VipsBooleanConstClass; G_DEFINE_TYPE( VipsBooleanConst, vips_boolean_const, VIPS_TYPE_UNARY_CONST ); static int vips_boolean_const_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsUnary *unary = (VipsUnary *) object; if( unary->in && vips_check_noncomplex( class->nickname, unary->in ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_boolean_const_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } #define LOOPC( TYPE, OP ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int * restrict c = uconst->c_int; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) \ q[i] = p[i] OP c[b]; \ } #define FLOOPC( TYPE, OP ) { \ TYPE * restrict p = (TYPE *) in[0]; \ int * restrict q = (int *) out; \ int * restrict c = uconst->c_int; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) \ q[i] = ((int) p[i]) OP ((int) c[b]); \ } static void vips_boolean_const_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsUnaryConst *uconst = (VipsUnaryConst *) arithmetic; VipsBooleanConst *bconst = (VipsBooleanConst *) arithmetic; VipsImage *im = arithmetic->ready[0]; int bands = im->Bands; int i, x, b; switch( bconst->operation ) { case VIPS_OPERATION_BOOLEAN_AND: SWITCH( LOOPC, FLOOPC, & ); break; case VIPS_OPERATION_BOOLEAN_OR: SWITCH( LOOPC, FLOOPC, | ); break; case VIPS_OPERATION_BOOLEAN_EOR: SWITCH( LOOPC, FLOOPC, ^ ); break; case VIPS_OPERATION_BOOLEAN_LSHIFT: SWITCH( LOOPC, FLOOPC, << ); break; case VIPS_OPERATION_BOOLEAN_RSHIFT: SWITCH( LOOPC, FLOOPC, >> ); break; default: g_assert_not_reached(); } } static void vips_boolean_const_class_init( VipsBooleanConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "boolean_const"; object_class->description = _( "boolean operations against a constant" ); object_class->build = vips_boolean_const_build; aclass->process_line = vips_boolean_const_buffer; vips_arithmetic_set_format_table( aclass, vips_boolean_format_table ); VIPS_ARG_ENUM( class, "boolean", 200, _( "Operation" ), _( "boolean to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBooleanConst, operation ), VIPS_TYPE_OPERATION_BOOLEAN, VIPS_OPERATION_BOOLEAN_AND ); } static void vips_boolean_const_init( VipsBooleanConst *boolean_const ) { } static int vips_boolean_constv( VipsImage *in, VipsImage **out, VipsOperationBoolean operation, double *c, int n, va_list ap ) { VipsArea *area_c; double *array; int result; int i; area_c = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array = (double *) area_c->data; for( i = 0; i < n; i++ ) array[i] = c[i]; result = vips_call_split( "boolean_const", ap, in, out, operation, area_c ); vips_area_unref( area_c ); return( result ); } /** * vips_boolean_const: (method) * @in: input image * @out: (out): output image * @boolean: boolean operation to perform * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform various boolean operations on an image against an array of * constants. * * The output type is always uchar, with 0 for FALSE and 255 for TRUE. * * If the array of constants has just one element, that constant is used for * all image bands. If the array has more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_boolean_const( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, boolean, c, n, ap ); va_end( ap ); return( result ); } /** * vips_andimage_const: (method) * @in: input image * @out: (out): output image * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_AND on an image and an array of constants. * See vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_andimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_AND, c, n, ap ); va_end( ap ); return( result ); } /** * vips_orimage_const: (method) * @in: input image * @out: (out): output image * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_OR on an image and an array of constants. * See vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_orimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_OR, c, n, ap ); va_end( ap ); return( result ); } /** * vips_eorimage_const: (method) * @in: input image * @out: (out): output image * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_EOR on an image and an array of constants. * See vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_eorimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_EOR, c, n, ap ); va_end( ap ); return( result ); } /** * vips_lshift_const: (method) * @in: input image * @out: (out): output image * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_LSHIFT on an image and an array of constants. * See vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_lshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_LSHIFT, c, n, ap ); va_end( ap ); return( result ); } /** * vips_rshift_const: (method) * @in: input image * @out: (out): output image * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_LSHIFT on an image and an array of constants. * See vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_rshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_RSHIFT, c, n, ap ); va_end( ap ); return( result ); } /** * vips_boolean_const1: (method) * @in: input image * @out: (out): output image * @boolean: boolean operation to perform * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform various boolean operations on an image with a single constant. See * vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_boolean_const1( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, boolean, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_andimage_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_AND on an image and a constant. * See vips_boolean_const1(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_andimage_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_AND, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_orimage_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_OR on an image and a constant. * See vips_boolean_const1(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_orimage_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_OR, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_eorimage_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_EOR on an image and a constant. * See vips_boolean_const1(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_eorimage_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_EOR, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_lshift_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_LSHIFT on an image and a constant. * See vips_boolean_const1(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_lshift_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_LSHIFT, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_rshift_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_RSHIFT on an image and a constant. * See vips_boolean_const1(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_rshift_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_RSHIFT, &c, 1, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/complex.c000066400000000000000000000563511361153320700206300ustar00rootroot00000000000000/* complex.c ... various complex operations * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 12/02/1990 * Modified on : 09/05/1990 * 15/6/93 JC * - stupid stupid includes and externs fixed * - I have been editing for 1 1/2 hours and I'm still drowning in * rubbish extetrnshh * 13/12/94 JC * - modernised * 9/7/02 JC * - degree output, for consistency * - slightly better behaviour in edge cases * 27/1/10 * - modernised * - gtk-doc * 19/11/11 * - redo as a class * 21/11/11 * - add vips_complexget() * 29/9/15 * - return 0 for cross-product where one arg is zero */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" #include "binary.h" typedef struct _VipsComplex { VipsUnary parent_instance; VipsOperationComplex cmplx; } VipsComplex; typedef VipsUnaryClass VipsComplexClass; G_DEFINE_TYPE( VipsComplex, vips_complex, VIPS_TYPE_UNARY ); #define LOOP( IN, OUT, OP ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q, p[x], 0.0 ); \ \ q += 2; \ } \ } #define CLOOP( IN, OUT, OP ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q, p[0], p[1] ); \ \ p += 2; \ q += 2; \ } \ } #define SWITCH( OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: \ LOOP( unsigned char, float, OP ); break; \ case VIPS_FORMAT_CHAR: \ LOOP( signed char, float, OP ); break; \ case VIPS_FORMAT_USHORT: \ LOOP( unsigned short, float, OP ); break; \ case VIPS_FORMAT_SHORT: \ LOOP( signed short, float, OP ); break; \ case VIPS_FORMAT_UINT: \ LOOP( unsigned int, float, OP ); break; \ case VIPS_FORMAT_INT: \ LOOP( signed int, float, OP ); break; \ case VIPS_FORMAT_FLOAT: \ LOOP( float, float, OP ); break; \ case VIPS_FORMAT_DOUBLE: \ LOOP( double, double, OP ); break;\ case VIPS_FORMAT_COMPLEX: \ CLOOP( float, float, OP ); break; \ case VIPS_FORMAT_DPCOMPLEX: \ CLOOP( double, double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } static double vips_complex_hypot( double a, double b ) { double d; #ifdef HAVE_HYPOT d = hypot( a, b ); #else d = sqrt( a * a + b * b ); #endif return( d ); } static double vips_complex_atan2( double a, double b ) { double h; #ifdef HAVE_ATAN2 h = VIPS_DEG( atan2( b, a ) ); if( h < 0.0 ) h += 360; #else h = vips_col_ab2h( a, b ); #endif return( h ); } #define POLAR( Q, X, Y ) { \ double re = (X); \ double im = (Y); \ double am, ph; \ \ am = vips_complex_hypot( re, im ); \ ph = vips_complex_atan2( re, im ); \ \ Q[0] = am; \ Q[1] = ph; \ } #define RECT( Q, X, Y ) { \ double am = (X); \ double ph = (Y); \ double re, im; \ \ re = am * cos( VIPS_RAD( ph ) ); \ im = am * sin( VIPS_RAD( ph ) ); \ \ Q[0] = re; \ Q[1] = im; \ } #define CONJ( Q, X, Y ) { \ double re = (X); \ double im = (Y); \ \ im *= -1; \ \ Q[0] = re; \ Q[1] = im; \ } static void vips_complex_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsComplex *cmplx = (VipsComplex *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( cmplx->cmplx ) { case VIPS_OPERATION_COMPLEX_POLAR: SWITCH( POLAR ); break; case VIPS_OPERATION_COMPLEX_RECT: SWITCH( RECT ); break; case VIPS_OPERATION_COMPLEX_CONJ: SWITCH( CONJ ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_complex_format_table[10] = { /* UC C US S UI I F X D DX */ X, X, X, X, X, X, X, X, DX, DX }; static void vips_complex_class_init( VipsComplexClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "complex"; object_class->description = _( "perform a complex operation on an image" ); aclass->process_line = vips_complex_buffer; vips_arithmetic_set_format_table( aclass, vips_complex_format_table ); VIPS_ARG_ENUM( class, "cmplx", 200, _( "Operation" ), _( "complex to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsComplex, cmplx ), VIPS_TYPE_OPERATION_COMPLEX, VIPS_OPERATION_COMPLEX_POLAR ); } static void vips_complex_init( VipsComplex *cmplx ) { } static int vips_complexv( VipsImage *in, VipsImage **out, VipsOperationComplex cmplx, va_list ap ) { return( vips_call_split( "complex", ap, in, out, cmplx ) ); } /** * vips_complex: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @cmplx: complex operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various operations on complex images. * * Angles are expressed in degrees. The output type is complex unless the * input is double or dpcomplex, in which case the output is dpcomplex. * * Returns: 0 on success, -1 on error */ int vips_complex( VipsImage *in, VipsImage **out, VipsOperationComplex cmplx, ... ) { va_list ap; int result; va_start( ap, cmplx ); result = vips_complexv( in, out, cmplx, ap ); va_end( ap ); return( result ); } /** * vips_polar: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEX_POLAR on an image. See vips_complex(). * * Returns: 0 on success, -1 on error */ int vips_polar( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complexv( in, out, VIPS_OPERATION_COMPLEX_POLAR, ap ); va_end( ap ); return( result ); } /** * vips_rect: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEX_RECT on an image. See vips_complex(). * * Returns: 0 on success, -1 on error */ int vips_rect( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complexv( in, out, VIPS_OPERATION_COMPLEX_RECT, ap ); va_end( ap ); return( result ); } /** * vips_conj: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEX_CONJ on an image. See vips_complex(). * * Returns: 0 on success, -1 on error */ int vips_conj( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complexv( in, out, VIPS_OPERATION_COMPLEX_CONJ, ap ); va_end( ap ); return( result ); } typedef struct _VipsComplex2 { VipsBinary parent_instance; VipsOperationComplex2 cmplx; } VipsComplex2; typedef VipsBinaryClass VipsComplex2Class; G_DEFINE_TYPE( VipsComplex2, vips_complex2, VIPS_TYPE_BINARY ); #define LOOP2( IN, OUT, OP ) { \ IN *p1 = (IN *) in[0]; \ IN *p2 = (IN *) in[1]; \ OUT *q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q, p1[x], 0.0, p2[x], 0.0 ); \ \ q += 2; \ } \ } #define CLOOP2( IN, OUT, OP ) { \ IN *p1 = (IN *) in[0]; \ IN *p2 = (IN *) in[1]; \ OUT *q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q, p1[0], p1[1], p2[0], p2[1] ); \ \ p1 += 2; \ p2 += 2; \ q += 2; \ } \ } #define SWITCH2( OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: \ LOOP2( unsigned char, float, OP ); break; \ case VIPS_FORMAT_CHAR: \ LOOP2( signed char, float, OP ); break; \ case VIPS_FORMAT_USHORT: \ LOOP2( unsigned short, float, OP ); break; \ case VIPS_FORMAT_SHORT: \ LOOP2( signed short, float, OP ); break; \ case VIPS_FORMAT_UINT: \ LOOP2( unsigned int, float, OP ); break; \ case VIPS_FORMAT_INT: \ LOOP2( signed int, float, OP ); break; \ case VIPS_FORMAT_FLOAT: \ LOOP2( float, float, OP ); break; \ case VIPS_FORMAT_DOUBLE: \ LOOP2( double, double, OP ); break;\ case VIPS_FORMAT_COMPLEX: \ CLOOP2( float, float, OP ); break; \ case VIPS_FORMAT_DPCOMPLEX: \ CLOOP2( double, double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } /* There doesn't seem to be much difference in speed between these two methods * (on an Athlon64), so I use the modulus argument version, since atan2() is * in c89 but hypot() is c99. * * If you think that it might be faster on your platform, uncomment the * following: */ #define USE_MODARG_DIV #ifdef USE_MODARG_DIV #define CROSS( Q, X1, Y1, X2, Y2 ) { \ if( ((X1) == 0.0 && (Y1) == 0.0) || \ ((X2) == 0.0 && (Y2) == 0.0) ) { \ Q[0] = 0.0; \ Q[1] = 0.0; \ } \ else { \ double arg = atan2( X2, X1 ) - atan2( Y2, Y1 ); \ \ Q[0] = cos( arg ); \ Q[1] = sin( arg ); \ } \ } #else /* USE_MODARG_DIV */ #define CROSS( Q, X1, Y1, X2, Y2 ) { \ if( ((X1) == 0.0 && (Y1) == 0.0) || \ ((X2) == 0.0 && (Y2) == 0.0) ) { \ Q[0] = 0.0; \ Q[1] = 0.0; \ } \ else if( ABS( Y1 ) > ABS( Y2 ) ) { \ double a = Y2 / Y1; \ double b = Y1 + Y2 * a; \ double re = (X1 + X2 * a) / b; \ double im = (X2 - X1 * a) / b; \ double mod = vips__hypot( re, im ); \ \ Q[0] = re / mod; \ Q[1] = im / mod; \ } \ else { \ double a = Y1 / Y2; \ double b = Y2 + Y1 * a; \ double re = (X1 * a + X2) / b; \ double im = (X2 * a - X1) / b; \ double mod = vips__hypot( re, im ); \ \ Q[0] = re / mod; \ Q[1] = im / mod; \ } \ } #endif /* USE_MODARG_DIV */ static void vips_complex2_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsComplex2 *cmplx = (VipsComplex2 *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( cmplx->cmplx ) { case VIPS_OPERATION_COMPLEX2_CROSS_PHASE: SWITCH2( CROSS ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_complex2_format_table[10] = { /* UC C US S UI I F X D DX */ X, X, X, X, X, X, X, X, DX, DX }; static void vips_complex2_class_init( VipsComplex2Class *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "complex2"; object_class->description = _( "complex binary operations on two images" ); aclass->process_line = vips_complex2_buffer; vips_arithmetic_set_format_table( aclass, vips_complex2_format_table ); VIPS_ARG_ENUM( class, "cmplx", 200, _( "Operation" ), _( "binary complex operation to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsComplex2, cmplx ), VIPS_TYPE_OPERATION_COMPLEX2, VIPS_OPERATION_COMPLEX2_CROSS_PHASE ); } static void vips_complex2_init( VipsComplex2 *cmplx ) { } static int vips_complex2v( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationComplex2 cmplx, va_list ap ) { return( vips_call_split( "complex2", ap, left, right, out, cmplx ) ); } /** * vips_complex2: * @left: input #VipsImage * @right: input #VipsImage * @out: (out): output #VipsImage * @cmplx: complex2 operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various binary operations on complex images. * * Angles are expressed in degrees. The output type is complex unless the * input is double or dpcomplex, in which case the output is dpcomplex. * * Returns: 0 on success, -1 on error */ int vips_complex2( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationComplex2 cmplx, ... ) { va_list ap; int result; va_start( ap, cmplx ); result = vips_complex2v( left, right, out, cmplx, ap ); va_end( ap ); return( result ); } /** * vips_cross_phase: * @left: input #VipsImage * @right: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEX2_CROSS_PHASE on an image. * See vips_complex2(). * * Returns: 0 on success, -1 on error */ int vips_cross_phase( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complex2v( left, right, out, VIPS_OPERATION_COMPLEX2_CROSS_PHASE, ap ); va_end( ap ); return( result ); } typedef struct _VipsComplexget { VipsUnary parent_instance; VipsOperationComplexget get; } VipsComplexget; typedef VipsUnaryClass VipsComplexgetClass; G_DEFINE_TYPE( VipsComplexget, vips_complexget, VIPS_TYPE_UNARY ); static int vips_complexget_build( VipsObject *object ) { VipsUnary *unary = (VipsUnary *) object; VipsComplexget *complexget = (VipsComplexget *) object; if( unary->in && !vips_band_format_iscomplex( unary->in->BandFmt ) && complexget->get == VIPS_OPERATION_COMPLEXGET_REAL ) return( vips_unary_copy( unary ) ); if( VIPS_OBJECT_CLASS( vips_complexget_parent_class )->build( object ) ) return( -1 ); return( 0 ); } #define GETLOOP( TYPE, OP ) { \ TYPE *p __attribute__ ((unused)) = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q[x], p[x], 0.0 ); \ } \ } #define CGETLOOP( TYPE, OP ) { \ TYPE *p __attribute__ ((unused)) = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q[x], p[0], p[1] ); \ \ p += 2; \ } \ } #define GETSWITCH( OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: \ GETLOOP( unsigned char, OP ); break; \ case VIPS_FORMAT_CHAR: \ GETLOOP( signed char, OP ); break; \ case VIPS_FORMAT_USHORT: \ GETLOOP( unsigned short, OP ); break; \ case VIPS_FORMAT_SHORT: \ GETLOOP( signed short, OP ); break; \ case VIPS_FORMAT_UINT: \ GETLOOP( unsigned int, OP ); break; \ case VIPS_FORMAT_INT: \ GETLOOP( signed int, OP ); break; \ case VIPS_FORMAT_FLOAT: \ GETLOOP( float, OP ); break; \ case VIPS_FORMAT_DOUBLE: \ GETLOOP( double, OP ); break;\ case VIPS_FORMAT_COMPLEX: \ CGETLOOP( float, OP ); break; \ case VIPS_FORMAT_DPCOMPLEX: \ CGETLOOP( double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } #define REAL( Q, X, Y ) { \ Q = X; \ } #define IMAG( Q, X, Y ) { \ Q = Y; \ } static void vips_complexget_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsComplexget *complexget = (VipsComplexget *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( complexget->get ) { case VIPS_OPERATION_COMPLEXGET_REAL: GETSWITCH( REAL ); break; case VIPS_OPERATION_COMPLEXGET_IMAG: GETSWITCH( IMAG ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_complexget_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, F, D, D }; static void vips_complexget_class_init( VipsComplexgetClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "complexget"; object_class->description = _( "get a component from a complex image" ); object_class->build = vips_complexget_build; aclass->process_line = vips_complexget_buffer; vips_arithmetic_set_format_table( aclass, vips_complexget_format_table ); VIPS_ARG_ENUM( class, "get", 200, _( "Operation" ), _( "complex to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsComplexget, get ), VIPS_TYPE_OPERATION_COMPLEXGET, VIPS_OPERATION_COMPLEXGET_REAL ); } static void vips_complexget_init( VipsComplexget *complexget ) { } static int vips_complexgetv( VipsImage *in, VipsImage **out, VipsOperationComplexget get, va_list ap ) { return( vips_call_split( "complexget", ap, in, out, get ) ); } /** * vips_complexget: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @get: complex operation to perform * @...: %NULL-terminated list of optional named arguments * * Get components of complex images. * * The output type is the same as the input type, except #VIPS_FORMAT_COMPLEX * becomes #VIPS_FORMAT_FLOAT and #VIPS_FORMAT_DPCOMPLEX becomes * #VIPS_FORMAT_DOUBLE. * * Returns: 0 on success, -1 on error */ int vips_complexget( VipsImage *in, VipsImage **out, VipsOperationComplexget get, ... ) { va_list ap; int result; va_start( ap, get ); result = vips_complexgetv( in, out, get, ap ); va_end( ap ); return( result ); } /** * vips_real: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEXGET_REAL on an image. See vips_complexget(). * * Returns: 0 on success, -1 on error */ int vips_real( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complexgetv( in, out, VIPS_OPERATION_COMPLEXGET_REAL, ap ); va_end( ap ); return( result ); } /** * vips_imag: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEXGET_IMAG on an image. See vips_complexget(). * * Returns: 0 on success, -1 on error */ int vips_imag( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complexgetv( in, out, VIPS_OPERATION_COMPLEXGET_IMAG, ap ); va_end( ap ); return( result ); } typedef VipsBinary VipsComplexform; typedef VipsBinaryClass VipsComplexformClass; G_DEFINE_TYPE( VipsComplexform, vips_complexform, VIPS_TYPE_BINARY ); static int vips_complexform_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBinary *binary = (VipsBinary *) object; if( binary->left && vips_check_noncomplex( class->nickname, binary->left ) ) return( -1 ); if( binary->right && vips_check_noncomplex( class->nickname, binary->right ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_complexform_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } #define CFORM( IN, OUT ) { \ IN *left = (IN *) in[0]; \ IN *right = (IN *) in[1]; \ OUT *q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[0] = left[x]; \ q[1] = right[x]; \ \ q += 2; \ } \ } static void vips_complexform_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; /* Keep types here in sync with bandfmt_complexform[] * below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: CFORM( unsigned char, float ); break; case VIPS_FORMAT_CHAR: CFORM( signed char, float ); break; case VIPS_FORMAT_USHORT: CFORM( unsigned short, float ); break; case VIPS_FORMAT_SHORT: CFORM( signed short, float ); break; case VIPS_FORMAT_UINT: CFORM( unsigned int, float ); break; case VIPS_FORMAT_INT: CFORM( signed int, float ); break; case VIPS_FORMAT_FLOAT: CFORM( float, float ); break; case VIPS_FORMAT_DOUBLE: CFORM( double, double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for form complex. Sign and value preserving. Make sure * these match the case statement in complexform_buffer() above. */ static int vips_complexform_format_table[10] = { /* UC C US S UI I F X D DX */ X, X, X, X, X, X, X, X, DX,DX }; static void vips_complexform_class_init( VipsComplexformClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "complexform"; object_class->description = _( "form a complex image from two real images" ); object_class->build = vips_complexform_build; aclass->process_line = vips_complexform_buffer; vips_arithmetic_set_format_table( aclass, vips_complexform_format_table ); } static void vips_complexform_init( VipsComplexform *complexform ) { } /** * vips_complexform: * @left: input image * @right: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Compose two real images to make a complex image. If either @left or @right * are #VIPS_FORMAT_DOUBLE, @out is #VIPS_FORMAT_DPCOMPLEX. Otherwise @out * is #VIPS_FORMAT_COMPLEX. @left becomes the real component of @out and * @right the imaginary. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * See also: vips_complexget(). * * Returns: 0 on success, -1 on error */ int vips_complexform( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "complexform", ap, left, right, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/deviate.c000066400000000000000000000136441361153320700206000ustar00rootroot00000000000000/* VipsDeviate * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/08/1990 * Modified on: * 5/5/93 JC * - now does partial images * - less likely to overflow * - adapted from im_deviate * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 21/2/95 JC * - modernised again * 11/5/95 JC * - oops! return( NULL ) in im_deviate(), instead of return( -1 ) * 20/6/95 JC * - now returns double, not float * 13/1/05 * - use 64 bit arithmetic * 8/12/06 * - add liboil support * 2/9/09 * - gtk-doc comment * - minor reformatting * 4/9/09 * - use im__wrapscan() * 31/7/10 * - remove liboil * 6/11/11 * - rewrite as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "statistic.h" typedef struct _VipsDeviate { VipsStatistic parent_instance; double sum; double sum2; double out; } VipsDeviate; typedef VipsStatisticClass VipsDeviateClass; G_DEFINE_TYPE( VipsDeviate, vips_deviate, VIPS_TYPE_STATISTIC ); static int vips_deviate_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsDeviate *deviate = (VipsDeviate *) object; gint64 vals; double s, s2; if( statistic->in && vips_check_noncomplex( class->nickname, statistic->in ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_deviate_parent_class )->build( object ) ) return( -1 ); /* NOTE: NR suggests a two-pass algorithm to minimise roundoff. But that's too expensive for us :-( so do it the old one-pass way. */ /* Calculate and return deviation. Add a fabs to stop sqrt(<=0). */ vals = (gint64) vips_image_get_width( statistic->in ) * vips_image_get_height( statistic->in ) * vips_image_get_bands( statistic->in ); s = deviate->sum; s2 = deviate->sum2; g_object_set( object, "out", sqrt( VIPS_FABS( s2 - (s * s / vals) ) / (vals - 1) ), NULL ); return( 0 ); } /* Start function: allocate space for an array in which we can accumulate the * sum and sum of squares for this thread. */ static void * vips_deviate_start( VipsStatistic *statistic ) { return( (void *) g_new0( double, 2 ) ); } /* Stop function. Add this little sum to the main sum. */ static int vips_deviate_stop( VipsStatistic *statistic, void *seq ) { VipsDeviate *deviate = (VipsDeviate *) statistic; double *ss2 = (double *) seq; deviate->sum += ss2[0]; deviate->sum2 += ss2[1]; g_free( ss2 ); return( 0 ); } #define LOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ \ for( x = 0; x < sz; x++ ) { \ TYPE v = p[x]; \ \ sum += v; \ sum2 += (double) v * (double) v; \ } \ } static int vips_deviate_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { const int sz = n * vips_image_get_bands( statistic->in ); double *ss2 = (double *) seq; double sum; double sum2; sum = ss2[0]; sum2 = ss2[1]; /* Now generate code for all types. */ switch( vips_image_get_format( statistic->in ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOP( signed char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOP( signed short ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int ); break; case VIPS_FORMAT_FLOAT: LOOP( float ); break; case VIPS_FORMAT_DOUBLE: LOOP( double ); break; default: g_assert_not_reached(); } ss2[0] = sum; ss2[1] = sum2; return( 0 ); } static void vips_deviate_class_init( VipsDeviateClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "deviate"; object_class->description = _( "find image standard deviation" ); object_class->build = vips_deviate_build; sclass->start = vips_deviate_start; sclass->scan = vips_deviate_scan; sclass->stop = vips_deviate_stop; VIPS_ARG_DOUBLE( class, "out", 2, _( "Output" ), _( "Output value" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsDeviate, out ), -INFINITY, INFINITY, 0.0 ); } static void vips_deviate_init( VipsDeviate *deviate ) { } /** * vips_deviate: (method) * @in: input #VipsImage * @out: (out): output pixel standard deviation * @...: %NULL-terminated list of optional named arguments * * This operation finds the standard deviation of all pixels in @in. It * operates on all bands of the input image: use vips_stats() if you need * to calculate an average for each band. * * Non-complex images only. * * See also: vips_avg(), vips_stats().. * * Returns: 0 on success, -1 on error */ int vips_deviate( VipsImage *in, double *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "deviate", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/divide.c000066400000000000000000000207201361153320700204140ustar00rootroot00000000000000/* Divide two images * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 29/4/93 JC * - now works for partial images * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 19/10/93 JC * - coredump-inducing bug in complex*complex fixed * 13/12/93 * - char * short bug fixed * 12/6/95 JC * - new im_multiply adapted to make new im_divide * 27/9/04 * - updated for 1 band $op n band image -> n band image case * 8/12/06 * - add liboil support * 18/8/08 * - revise upcasting system * - add gtkdoc comments * 31/7/10 * - remove liboil support * - avoid /0 * 6/11/11 * - rewrite as a class * 22/2/12 * - avoid /0 for complex as well * 6/4/12 * - fixed switch cases * - fixed int operands with <1 result */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" typedef VipsBinary VipsDivide; typedef VipsBinaryClass VipsDivideClass; G_DEFINE_TYPE( VipsDivide, vips_divide, VIPS_TYPE_BINARY ); /* Complex divide. */ #ifdef USE_MODARG_DIV /* This is going to be much slower */ #define CLOOP( TYPE ) { \ TYPE * restrict left = (TYPE *) in[0]; \ TYPE * restrict right = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ int i; \ \ for( i = 0; i < sz; i++ ) { \ if( right[0] == 0.0 && \ right[1] == 0.0 ) { \ q[0] = 0.0; \ q[1] = 0.0; \ } \ else { \ double arg = atan2( left[1], left[0] ) - \ atan2( right[1], right[0] ); \ double mod = hypot( left[1], left[0] ) / \ hypot( right[1], right[0] ); \ \ q[0] = mod * cos( arg ); \ q[1] = mod * sin( arg ); \ } \ \ left += 2; \ right += 2; \ q += 2; \ } \ } #else /* USE_MODARG_DIV */ #define CLOOP( TYPE ) { \ TYPE * restrict left = (TYPE *) in[0]; \ TYPE * restrict right = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ int i; \ \ for( i = 0; i < sz; i++ ) { \ if( right[0] == 0.0 && \ right[1] == 0.0 ) { \ q[0] = 0.0; \ q[1] = 0.0; \ } \ else if( VIPS_FABS( right[0] ) > VIPS_FABS( right[1] ) ) { \ double a = right[1] / right[0]; \ double b = right[0] + right[1] * a; \ \ q[0] = (left[0] + left[1] * a) / b; \ q[1] = (left[1] - left[0] * a) / b; \ } \ else { \ double a = right[0] / right[1]; \ double b = right[1] + right[0] * a; \ \ q[0] = (left[0] * a + left[1]) / b; \ q[1] = (left[1] * a - left[0]) / b; \ } \ \ left += 2; \ right += 2; \ q += 2; \ } \ } #endif /* USE_MODARG_DIV */ /* Real divide. Cast in to OUT before divide so we work for float output. */ #define RLOOP( IN, OUT ) { \ IN * restrict left = (IN *) in[0]; \ IN * restrict right = (IN *) in[1]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = right[x] == 0 ? 0 : (OUT) left[x] / (OUT) right[x]; \ } static void vips_divide_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; /* Keep types here in sync with vips_divide_format_table[] * below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: RLOOP( signed char, float ); break; case VIPS_FORMAT_UCHAR: RLOOP( unsigned char, float ); break; case VIPS_FORMAT_SHORT: RLOOP( signed short, float ); break; case VIPS_FORMAT_USHORT: RLOOP( unsigned short, float ); break; case VIPS_FORMAT_INT: RLOOP( signed int, float ); break; case VIPS_FORMAT_UINT: RLOOP( unsigned int, float ); break; case VIPS_FORMAT_FLOAT: RLOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: RLOOP( double, double ); break; case VIPS_FORMAT_COMPLEX: CLOOP( float ); break; case VIPS_FORMAT_DPCOMPLEX: CLOOP( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for division. Sign and value preserving. Make sure * these match the case statement in divide_buffer() above. */ static int vips_divide_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, X, D, DX }; static void vips_divide_class_init( VipsDivideClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "divide"; object_class->description = _( "divide two images" ); aclass->process_line = vips_divide_buffer; vips_arithmetic_set_format_table( aclass, vips_divide_format_table ); } static void vips_divide_init( VipsDivide *divide ) { } /** * vips_divide: * @left: input image * @right: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * This operation calculates @in1 / @in2 and writes the result to @out. If any * pixels in @in2 are zero, the corresponding pixel in @out is also zero. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), then the * following table is used to determine the output type: * * * vips_divide() type promotion * * * * input type * output type * * * * * uchar * float * * * char * float * * * ushort * float * * * short * float * * * uint * float * * * int * float * * * float * float * * * double * double * * * complex * complex * * * double complex * double complex * * * *
* * In other words, the output type is just large enough to hold the whole * range of possible values. * * See also: vips_multiply(), vips_linear(), vips_pow(). * * Returns: 0 on success, -1 on error */ int vips_divide( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "divide", ap, left, right, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/find_trim.c000066400000000000000000000170511361153320700211260ustar00rootroot00000000000000/* return the bounding box of the non-border part of the image * * 26/7/17 * - from a ruby example * 18/9/17 kleisauke * - missing bandor * - only flatten if there is an alpha */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsFindTrim { VipsOperation parent_instance; VipsImage *in; double threshold; VipsArrayDouble *background; int left; int top; int width; int height; } VipsFindTrim; typedef VipsOperationClass VipsFindTrimClass; G_DEFINE_TYPE( VipsFindTrim, vips_find_trim, VIPS_TYPE_OPERATION ); static int vips_find_trim_build( VipsObject *object ) { VipsFindTrim *find_trim = (VipsFindTrim *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 20 ); VipsImage *in; double *background; int n; double *neg_bg; double *ones; int i; double left; double top; double right; double bottom; if( VIPS_OBJECT_CLASS( vips_find_trim_parent_class )->build( object ) ) return( -1 ); /* Is "background" unset? Default to the correct value * for this interpretation. */ if( !vips_object_argument_isset( object, "background" ) ) if( find_trim->in->Type == VIPS_INTERPRETATION_GREY16 || find_trim->in->Type == VIPS_INTERPRETATION_RGB16 ) { vips_area_unref( VIPS_AREA( find_trim->background ) ); find_trim->background = vips_array_double_newv( 1, 65535.0 ); } /* Flatten out alpha, if any. */ in = find_trim->in; if( vips_image_hasalpha( in ) ) { if( vips_flatten( in, &t[0], "background", find_trim->background, NULL ) ) return( -1 ); in = t[0]; } /* We want to subtract the bg. */ background = vips_array_double_get( find_trim->background, &n ); if( !(neg_bg = VIPS_ARRAY( find_trim, n, double )) || !(ones = VIPS_ARRAY( find_trim, n, double )) ) return( -1 ); for( i = 0; i < n; i++ ) { neg_bg[i] = -1 * background[i]; ones[i] = 1.0; } /* Smooth, find difference from bg, abs, threshold. */ if( vips_median( in, &t[1], 3, NULL ) || vips_linear( t[1], &t[2], ones, neg_bg, n, NULL ) || vips_abs( t[2], &t[3], NULL ) || vips_more_const1( t[3], &t[4], find_trim->threshold, NULL ) || vips_bandor( t[4], &t[5], NULL ) ) return( -1 ); in = t[5]; /* t[6] == column sums, t[7] == row sums. */ if( vips_project( in, &t[6], &t[7], NULL ) ) return( -1 ); /* t[8] == search column sums in from left. */ if( vips_profile( t[6], &t[8], &t[9], NULL ) || vips_avg( t[9], &left, NULL ) ) return( -1 ); if( vips_flip( t[6], &t[10], VIPS_DIRECTION_HORIZONTAL, NULL ) || vips_profile( t[10], &t[11], &t[12], NULL ) || vips_avg( t[12], &right, NULL ) ) return( -1 ); /* t[8] == search column sums in from left. */ if( vips_profile( t[7], &t[13], &t[14], NULL ) || vips_avg( t[13], &top, NULL ) ) return( -1 ); if( vips_flip( t[7], &t[15], VIPS_DIRECTION_VERTICAL, NULL ) || vips_profile( t[15], &t[16], &t[17], NULL ) || vips_avg( t[16], &bottom, NULL ) ) return( -1 ); g_object_set( find_trim, "left", (int) left, "top", (int) top, "width", (int) VIPS_MAX( 0, (t[6]->Xsize - right) - left ), "height", (int) VIPS_MAX( 0, (t[7]->Ysize - bottom) - top ), NULL ); return( 0 ); } static void vips_find_trim_class_init( VipsFindTrimClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "find_trim"; object_class->description = _( "search an image for non-edge areas" ); object_class->build = vips_find_trim_build; //operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "in" ), _( "Image to find_trim" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFindTrim, in ) ); VIPS_ARG_DOUBLE( class, "threshold", 2, _( "Threshold" ), _( "Object threshold" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsFindTrim, threshold ), 0, INFINITY, 10.0 ); VIPS_ARG_BOXED( class, "background", 3, _( "Background" ), _( "Color for background pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsFindTrim, background ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_INT( class, "left", 5, _( "Left" ), _( "Left edge of image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsFindTrim, left ), 0, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "top", 11, _( "Top" ), _( "Top edge of extract area" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsFindTrim, top ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "width", 12, _( "Width" ), _( "Width of extract area" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsFindTrim, width ), 0, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 13, _( "Height" ), _( "Height of extract area" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsFindTrim, height ), 0, VIPS_MAX_COORD, 1 ); } static void vips_find_trim_init( VipsFindTrim *find_trim ) { find_trim->threshold = 10; find_trim->background = vips_array_double_newv( 1, 255.0 ); } /** * vips_find_trim: (method) * @in: image to find_trim * @left: (out): output left edge * @top: (out): output top edge * @width: (out): output width * @height: (out): output height * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @threshold: %gdouble, background / object threshold * * @background: #VipsArrayDouble, background colour * * Search @in for the bounding box of the non-background area. * * Any alpha is flattened out, then the image is median-filtered, all the row * and column sums of the absolute * difference from @background are calculated in a * single pass, then the first row or column in each of the * four directions where the sum is greater than @threshold gives the bounding * box. * * If the image is entirely background, vips_find_trim() returns @width == 0 * and @height == 0. * * @background defaults to 255, or 65535 for 16-bit images. Set another value, * or use vips_getpoint() to pick a value from an edge. You'll need to flatten * before vips_getpoint() to get a correct background value. * * @threshold defaults to 10. * * The image needs to be at least 3x3 pixels in size. * * See also: vips_getpoint(), vips_extract_area(), vips_smartcrop(). * * Returns: 0 on success, -1 on error */ int vips_find_trim( VipsImage *in, int *left, int *top, int *width, int *height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "find_trim", ap, in, left, top, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/getpoint.c000066400000000000000000000121301361153320700207750ustar00rootroot00000000000000/* read a single getpoint * * Copyright: J. Cupitt * Written: 15/06/1992 * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 5/12/06 * - im_invalidate() after paint * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 29/9/10 * - gtk-doc * - use Draw base class * - read_getpoint partial-ised * 10/2/14 * - redo as a class * 16/12/14 * - free the input region much earlier * 14/10/16 * - crop to a memory image rather than using a region ... this means we * use workers to calculate pixels and therefore use per-thread caching * in the revised buffer system */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "statistic.h" typedef struct _VipsGetpoint { VipsOperation parent_instance; VipsImage *in; int x; int y; VipsArrayDouble *out_array; } VipsGetpoint; typedef VipsOperationClass VipsGetpointClass; G_DEFINE_TYPE( VipsGetpoint, vips_getpoint, VIPS_TYPE_OPERATION ); static int vips_getpoint_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsGetpoint *getpoint = (VipsGetpoint *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); double *vector; int n; VipsArrayDouble *out_array; if( VIPS_OBJECT_CLASS( vips_getpoint_parent_class )->build( object ) ) return( -1 ); t[1] = vips_image_new_memory(); if( vips_crop( getpoint->in, &t[0], getpoint->x, getpoint->y, 1, 1, NULL ) || vips_image_write( t[0], t[1] ) ) return( -1 ); if( !(vector = vips__ink_to_vector( class->nickname, getpoint->in, VIPS_IMAGE_ADDR( t[1], 0, 0 ), &n )) ) return( -1 ); out_array = vips_array_double_new( vector, n ); g_object_set( object, "out_array", out_array, NULL ); vips_area_unref( VIPS_AREA( out_array ) ); return( 0 ); } static void vips_getpoint_class_init( VipsGetpointClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "getpoint"; object_class->description = _( "read a point from an image" ); object_class->build = vips_getpoint_build; VIPS_ARG_IMAGE( class, "in", 1, _( "in" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGetpoint, in ) ); VIPS_ARG_BOXED( class, "out_array", 2, _( "Output array" ), _( "Array of output values" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsGetpoint, out_array ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_INT( class, "x", 5, _( "x" ), _( "Point to read" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGetpoint, x ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "y", 6, _( "y" ), _( "Point to read" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGetpoint, y ), 0, VIPS_MAX_COORD, 0 ); } static void vips_getpoint_init( VipsGetpoint *getpoint ) { } /** * vips_getpoint: (method) * @in: image to read from * @vector: (out)(array length=n): output pixel value here * @n: length of output vector * @x: position to read * @y: position to read * @...: %NULL-terminated list of optional named arguments * * Reads a single pixel on an image. * * The pixel values are returned in @vector, the length of the * array in @n. You must free the array with g_free() when you are done with * it. * * See also: vips_draw_point(). * * Returns: 0 on success, or -1 on error. */ int vips_getpoint( VipsImage *in, double **vector, int *n, int x, int y, ... ) { va_list ap; VipsArrayDouble *out_array; VipsArea *area; int result; va_start( ap, y ); result = vips_call_split( "getpoint", ap, in, &out_array, x, y ); va_end( ap ); if( result ) return( -1 ); area = VIPS_AREA( out_array ); *vector = VIPS_ARRAY( NULL, area->n, double ); if( !*vector ) { vips_area_unref( area ); return( -1 ); } memcpy( *vector, area->data, area->n * area->sizeof_type ); *n = area->n; vips_area_unref( area ); return( 0 ); } libvips-8.9.1/libvips/arithmetic/hist_find.c000066400000000000000000000252341361153320700211240ustar00rootroot00000000000000/* find histograms * * Copyright: 1990, 1991, N. Dessipris. * * Author: Nicos Dessipris. * Written on: 09/07/1990 * Modified on : 11/03/1991 * 19/7/93 JC * - test for Coding type added * 26/10/94 JC * - rewritten for ANSI * - now does USHORT too * - 5 x faster! * 2/6/95 JC * - rewritten for partials * 3/3/01 JC * - tiny speed ups * 21/1/07 * - number bands from zero * 24/3/10 * - gtkdoc * - small cleanups * 25/1/12 * - cast @in to u8/u16. * 12/8/13 * - redo as a class * 28/2/16 lovell * - unroll common cases */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "statistic.h" /* Accumulate a histogram in one of these. */ typedef struct { int bands; /* Number of bands in output */ int which; /* If one band in out, which band of input */ int size; /* Number of bins for each band */ int mx; /* Maximum value we have seen */ unsigned int **bins; /* All the bins! */ } Histogram; typedef struct _VipsHistFind { VipsStatistic parent_instance; /* -1 for all bands, or the band we scan. */ int which; /* Main image histogram. Subhists accumulate to this. */ Histogram *hist; /* Write hist to this output image. */ VipsImage *out; } VipsHistFind; typedef VipsStatisticClass VipsHistFindClass; G_DEFINE_TYPE( VipsHistFind, vips_hist_find, VIPS_TYPE_STATISTIC ); /* Build a Histogram. */ static Histogram * histogram_new( VipsHistFind *hist_find, int bands, int which, int size ) { Histogram *hist; int i; if( !(hist = VIPS_NEW( hist_find, Histogram )) || !(hist->bins = VIPS_ARRAY( hist_find, bands, unsigned int * )) ) return( NULL ); for( i = 0; i < bands; i++ ) { if( !(hist->bins[i] = VIPS_ARRAY( hist_find, size, unsigned int )) ) return( NULL ); memset( hist->bins[i], 0, size * sizeof( unsigned int ) ); } hist->bands = bands; hist->which = which; hist->size = size; hist->mx = 0; return( hist ); } static int vips_hist_find_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsHistFind *hist_find = (VipsHistFind *) object; unsigned int *obuffer; unsigned int *q; int i, j; g_object_set( object, "out", vips_image_new(), NULL ); if( statistic->in && vips_check_bandno( class->nickname, statistic->in, hist_find->which ) ) return( -1 ); /* main hist made on first thread start. */ if( VIPS_OBJECT_CLASS( vips_hist_find_parent_class )->build( object ) ) return( -1 ); /* Make the output image. */ if( vips_image_pipelinev( hist_find->out, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) ) return( -1 ); vips_image_init_fields( hist_find->out, hist_find->hist->mx + 1, 1, hist_find->hist->bands, VIPS_FORMAT_UINT, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); /* Interleave for output. */ if( !(obuffer = VIPS_ARRAY( object, VIPS_IMAGE_N_ELEMENTS( hist_find->out ), unsigned int )) ) return( -1 ); for( q = obuffer, j = 0; j < hist_find->out->Xsize; j++ ) for( i = 0; i < hist_find->out->Bands; i++ ) *q++ = hist_find->hist->bins[i][j]; if( vips_image_write_line( hist_find->out, 0, (VipsPel *) obuffer ) ) return( -1 ); return( 0 ); } /* Build a sub-hist, based on the main hist. */ static void * vips_hist_find_start( VipsStatistic *statistic ) { VipsHistFind *hist_find = (VipsHistFind *) statistic; /* Make the main hist, if necessary. */ if( !hist_find->hist ) hist_find->hist = histogram_new( hist_find, hist_find->which == -1 ? statistic->ready->Bands : 1, hist_find->which, statistic->ready->BandFmt == VIPS_FORMAT_UCHAR ? 256 : 65536 ); return( (void *) histogram_new( hist_find, hist_find->hist->bands, hist_find->hist->which, hist_find->hist->size ) ); } /* Join a sub-hist onto the main hist. */ static int vips_hist_find_stop( VipsStatistic *statistic, void *seq ) { Histogram *sub_hist = (Histogram *) seq; VipsHistFind *hist_find = (VipsHistFind *) statistic; Histogram *hist = hist_find->hist; int i, j; g_assert( sub_hist->bands == hist->bands && sub_hist->size == hist->size ); /* Add on sub-data. */ hist->mx = VIPS_MAX( hist->mx, sub_hist->mx ); for( i = 0; i < hist->bands; i++ ) for( j = 0; j < hist->size; j++ ) hist->bins[i][j] += sub_hist->bins[i][j]; /* Blank out sub-hist to make sure we can't add it again. */ sub_hist->mx = 0; for( i = 0; i < sub_hist->bands; i++ ) sub_hist->bins[i] = NULL; return( 0 ); } /* Hist of all bands of uchar. */ static int vips_hist_find_uchar_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; unsigned int *bins = hist->bins[0]; int nb = statistic->ready->Bands; VipsPel *p = (VipsPel *) in; int j; /* The inner loop cannot be auto-vectorized by the compiler. * Unroll for common cases. */ switch( nb ) { case 1: for( j = 0; j < n; j++ ) bins[p[j]] += 1; break; case 2: for( j = 0; j < n; j++ ) { hist->bins[0][p[0]] += 1; hist->bins[1][p[1]] += 1; p += 2; } break; case 3: for( j = 0; j < n; j++ ) { hist->bins[0][p[0]] += 1; hist->bins[1][p[1]] += 1; hist->bins[2][p[2]] += 1; p += 3; } break; case 4: for( j = 0; j < n; j++ ) { hist->bins[0][p[0]] += 1; hist->bins[1][p[1]] += 1; hist->bins[2][p[2]] += 1; hist->bins[3][p[3]] += 1; p += 4; } break; default: /* Loop when >4 bands */ for( j = 0; j < n; j++ ) { int z; for( z = 0; z < nb; z++ ) hist->bins[z][p[z]] += 1; p += nb; } } /* Note the maximum. */ hist->mx = 255; return( 0 ); } /* Histogram of a selected band of a uchar image. */ static int vips_hist_find_uchar_extract_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; int nb = statistic->ready->Bands; int max = n * nb; unsigned int *bins = hist->bins[0]; VipsPel *p = (VipsPel *) in; int i; for( i = hist->which; i < max; i += nb ) bins[p[i]] += 1; /* Note the maximum. */ hist->mx = 255; return( 0 ); } /* Histogram of all bands of a ushort image. */ static int vips_hist_find_ushort_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; int mx = hist->mx; int nb = statistic->ready->Bands; unsigned short *p = (unsigned short *) in; int j, z; for( j = 0; j < n; j++ ) { for( z = 0; z < nb; z++ ) { int v = p[z]; /* Adjust maximum. */ if( v > mx ) mx = v; hist->bins[z][v] += 1; } p += nb; } /* Note the maximum. */ hist->mx = mx; return( 0 ); } /* Histogram of one band of a ushort image. */ static int vips_hist_find_ushort_extract_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; int mx = hist->mx; unsigned int *bins = hist->bins[0]; unsigned short *p = (unsigned short *) in; int nb = statistic->ready->Bands; int max = nb * n; int i; for( i = hist->which; i < max; i += nb ) { int v = p[i]; /* Adjust maximum. */ if( v > mx ) mx = v; bins[v] += 1; } /* Note the maximum. */ hist->mx = mx; return( 0 ); } static int vips_hist_find_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { VipsHistFind *hist_find = (VipsHistFind *) statistic; VipsStatisticScanFn scan; if( hist_find->which < 0 ) { if( statistic->ready->BandFmt == VIPS_FORMAT_UCHAR ) scan = vips_hist_find_uchar_scan; else scan = vips_hist_find_ushort_scan; } else { if( statistic->ready->BandFmt == VIPS_FORMAT_UCHAR ) scan = vips_hist_find_uchar_extract_scan; else scan = vips_hist_find_ushort_extract_scan; } return( scan( statistic, seq, x, y, in, n ) ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define US VIPS_FORMAT_USHORT /* Type mapping: go to uchar or ushort. */ static const VipsBandFormat vips_hist_find_format_table[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, US, US, US, US, US, US }; static void vips_hist_find_class_init( VipsHistFindClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_find"; object_class->description = _( "find image histogram" ); object_class->build = vips_hist_find_build; sclass->start = vips_hist_find_start; sclass->scan = vips_hist_find_scan; sclass->stop = vips_hist_find_stop; sclass->format_table = vips_hist_find_format_table; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output histogram" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistFind, out ) ); VIPS_ARG_INT( class, "band", 110, _( "Band" ), _( "Find histogram of band" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHistFind, which ), -1, 100000, -1 ); } static void vips_hist_find_init( VipsHistFind *hist_find ) { hist_find->which = -1; } /** * vips_hist_find: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @band: band to equalise * * Find the histogram of @in. Find the histogram for band @band (producing a * one-band histogram), or for all bands (producing an n-band histogram) if * @band is -1. * * @in is cast to u8 or u16. @out is always u32. * * See also: vips_hist_find_ndim(), vips_hist_find_indexed(). * * Returns: 0 on success, -1 on error */ int vips_hist_find( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_find", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/hist_find_indexed.c000066400000000000000000000305561361153320700226270ustar00rootroot00000000000000/* indexed histogram: use an index image to pick the bins * * 13/10/09 * - from im_histgr.c * 24/3/10 * - gtkdoc * 17/8/13 * - redo as a class * 2/11/17 * - add @combine ... pick a bin combine mode */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "statistic.h" struct _VipsHistFindIndexed; /* Accumulate a histogram in one of these. */ typedef struct { struct _VipsHistFindIndexed *indexed; VipsRegion *reg; /* Get index pixels with this */ int size; /* Length of bins */ int mx; /* Maximum value we have seen */ double *bins; /* All the bins! */ int *init; /* TRUE for bin has been initialised */ } Histogram; typedef struct _VipsHistFindIndexed { VipsStatistic parent_instance; VipsImage *index; /* Index image, cast to uchar/ushort. */ VipsImage *index_ready; /* Main image histogram. Subhists accumulate to this. */ Histogram *hist; /* Write hist to this output image. */ VipsImage *out; /* Combine bins with this. */ VipsCombine combine; } VipsHistFindIndexed; typedef VipsStatisticClass VipsHistFindIndexedClass; G_DEFINE_TYPE( VipsHistFindIndexed, vips_hist_find_indexed, VIPS_TYPE_STATISTIC ); static Histogram * histogram_new( VipsHistFindIndexed *indexed ) { VipsStatistic *statistic = VIPS_STATISTIC( indexed ); int bands = statistic->ready->Bands; Histogram *hist; if( !(hist = VIPS_NEW( indexed, Histogram )) ) return( NULL ); hist->indexed = indexed; hist->reg = NULL; hist->size = indexed->index_ready->BandFmt == VIPS_FORMAT_UCHAR ? 256 : 65536; hist->mx = 0; hist->bins = NULL; hist->init = NULL; if( !(hist->bins = VIPS_ARRAY( indexed, bands * hist->size, double )) || !(hist->init = VIPS_ARRAY( indexed, hist->size, int )) || !(hist->reg = vips_region_new( indexed->index_ready )) ) return( NULL ); memset( hist->bins, 0, bands * hist->size * sizeof( double ) ); memset( hist->init, 0, hist->size * sizeof( int ) ); return( hist ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define US VIPS_FORMAT_USHORT /* Type mapping: go to uchar or ushort. */ static const VipsBandFormat vips_hist_find_indexed_format[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, US, US, US, US, US, US }; static int vips_hist_find_indexed_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsHistFindIndexed *indexed = (VipsHistFindIndexed *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); g_object_set( object, "out", vips_image_new(), NULL ); /* main hist made on first thread start. */ /* index image must be cast to uchar/ushort. */ if( indexed->index && statistic->in ) { if( vips_check_uncoded( class->nickname, indexed->index ) || vips_check_size_same( class->nickname, indexed->index, statistic->in ) || vips_check_mono( class->nickname, indexed->index ) ) return( -1 ); if( vips_cast( indexed->index, &t[0], vips_hist_find_indexed_format[indexed->index->BandFmt], NULL ) ) return( -1 ); indexed->index_ready = t[0]; } if( statistic->in ) if( vips_check_noncomplex( class->nickname, statistic->in ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_hist_find_indexed_parent_class )-> build( object ) ) return( -1 ); VIPS_UNREF( indexed->hist->reg ); if( vips_image_pipelinev( indexed->out, VIPS_DEMAND_STYLE_ANY, statistic->ready, indexed->index_ready, NULL ) ) return( -1 ); vips_image_init_fields( indexed->out, indexed->hist->mx + 1, 1, statistic->ready->Bands, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); if( vips_image_write_line( indexed->out, 0, (VipsPel *) indexed->hist->bins ) ) return( -1 ); return( 0 ); } static void * vips_hist_find_indexed_start( VipsStatistic *statistic ) { VipsHistFindIndexed *indexed = (VipsHistFindIndexed *) statistic; /* Make the main hist, if necessary. */ if( !indexed->hist ) indexed->hist = histogram_new( indexed ); return( (void *) histogram_new( indexed ) ); } /* Combine B with A according to mode. */ #define COMBINE( MODE, A, B ) G_STMT_START { \ switch( MODE ) { \ case VIPS_COMBINE_MAX: \ (A) = VIPS_MAX( A, B ); \ break; \ \ case VIPS_COMBINE_SUM: \ (A) += (B); \ break; \ \ case VIPS_COMBINE_MIN: \ (A) = VIPS_MIN( A, B ); \ break; \ \ default: \ g_assert_not_reached(); \ } \ } G_STMT_END /* Join a sub-hist onto the main hist. */ static int vips_hist_find_indexed_stop( VipsStatistic *statistic, void *seq ) { Histogram *sub_hist = (Histogram *) seq; VipsHistFindIndexed *indexed = (VipsHistFindIndexed *) statistic; Histogram *hist = indexed->hist; int bands = statistic->ready->Bands; int i, j; double *bins; double *sub_bins; int *init; int *sub_init; hist->mx = VIPS_MAX( hist->mx, sub_hist->mx ); bins = hist->bins; sub_bins = sub_hist->bins; init = hist->init; sub_init = sub_hist->init; for( i = 0; i <= sub_hist->mx; i++ ) { if( sub_init[i] ) { if( init[i] ) for( j = 0; j < bands; j++ ) COMBINE( indexed->combine, bins[j], sub_bins[j] ); else { for( j = 0; j < bands; j++ ) bins[j] = sub_bins[j]; init[i] = TRUE; } } bins += bands; sub_bins += bands; } VIPS_UNREF( sub_hist->reg ); return( 0 ); } /* Accumulate a buffer of pels, uchar index. */ #define ACCUMULATE_UCHAR( TYPE ) { \ int x, z; \ TYPE *tv = (TYPE *) in; \ \ for( x = 0; x < n; x++ ) { \ int ix = i[x]; \ double *bin = hist->bins + ix * bands; \ \ if( hist->init[ix] ) \ for( z = 0; z < bands; z++ ) \ COMBINE( indexed->combine, bin[z], tv[z] ); \ else { \ for( z = 0; z < bands; z++ ) \ bin[z] = tv[z]; \ hist->init[ix] = TRUE; \ } \ \ tv += bands; \ } \ } /* A uchar index image. */ static void vips_hist_find_indexed_uchar_scan( VipsHistFindIndexed *indexed, Histogram *hist, void *in, void *index, int n ) { VipsStatistic *statistic = VIPS_STATISTIC( indexed ); int bands = statistic->ready->Bands; unsigned char *i = (unsigned char *) index; switch( statistic->ready->BandFmt ) { case VIPS_FORMAT_UCHAR: ACCUMULATE_UCHAR( unsigned char ); break; case VIPS_FORMAT_CHAR: ACCUMULATE_UCHAR( signed char ); break; case VIPS_FORMAT_USHORT: ACCUMULATE_UCHAR( unsigned short ); break; case VIPS_FORMAT_SHORT: ACCUMULATE_UCHAR( signed short ); break; case VIPS_FORMAT_UINT: ACCUMULATE_UCHAR( unsigned int ); break; case VIPS_FORMAT_INT: ACCUMULATE_UCHAR( signed int ); break; case VIPS_FORMAT_FLOAT: ACCUMULATE_UCHAR( float ); break; case VIPS_FORMAT_DOUBLE: ACCUMULATE_UCHAR( double ); break; default: g_assert_not_reached(); } /* Max is always 255. */ hist->mx = 255; } /* Accumulate a buffer of pels, ushort index. */ #define ACCUMULATE_USHORT( TYPE ) { \ int x, z; \ TYPE *tv = (TYPE *) in; \ \ for( x = 0; x < n; x++ ) { \ int ix = i[x]; \ double *bin = hist->bins + ix * bands; \ \ if( ix > mx ) \ mx = ix; \ \ if( hist->init[ix] ) \ for( z = 0; z < bands; z++ ) \ COMBINE( indexed->combine, bin[z], tv[z] ); \ else { \ for( z = 0; z < bands; z++ ) \ bin[z] = tv[z]; \ hist->init[ix] = TRUE; \ } \ \ tv += bands; \ } \ } /* A ushort index image. */ static void vips_hist_find_indexed_ushort_scan( VipsHistFindIndexed *indexed, Histogram *hist, void *in, void *index, int n ) { VipsStatistic *statistic = VIPS_STATISTIC( indexed ); int bands = statistic->ready->Bands; unsigned short *i = (unsigned short *) index; int mx; mx = hist->mx; switch( statistic->ready->BandFmt ) { case VIPS_FORMAT_UCHAR: ACCUMULATE_USHORT( unsigned char ); break; case VIPS_FORMAT_CHAR: ACCUMULATE_USHORT( signed char ); break; case VIPS_FORMAT_USHORT: ACCUMULATE_USHORT( unsigned short ); break; case VIPS_FORMAT_SHORT: ACCUMULATE_USHORT( signed short ); break; case VIPS_FORMAT_UINT: ACCUMULATE_USHORT( unsigned int ); break; case VIPS_FORMAT_INT: ACCUMULATE_USHORT( signed int ); break; case VIPS_FORMAT_FLOAT: ACCUMULATE_USHORT( float ); break; case VIPS_FORMAT_DOUBLE: ACCUMULATE_USHORT( double ); break; default: g_assert_not_reached(); } /* Note the maximum. */ hist->mx = mx; } typedef void (*VipsHistFindIndexedScanFn)( VipsHistFindIndexed *indexed, Histogram *hist, void *in, void *index, int n ); static int vips_hist_find_indexed_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; VipsHistFindIndexed *indexed = (VipsHistFindIndexed *) statistic; VipsRect r = { x, y, n, 1 }; VipsHistFindIndexedScanFn scan; /* Need the corresponding area of the index image. */ if( vips_region_prepare( hist->reg, &r ) ) return( -1 ); if( indexed->index_ready->BandFmt == VIPS_FORMAT_UCHAR ) scan = vips_hist_find_indexed_uchar_scan; else scan = vips_hist_find_indexed_ushort_scan; scan( indexed, hist, in, VIPS_REGION_ADDR( hist->reg, x, y ), n ); return( 0 ); } static void vips_hist_find_indexed_class_init( VipsHistFindIndexedClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_find_indexed"; object_class->description = _( "find indexed image histogram" ); object_class->build = vips_hist_find_indexed_build; sclass->start = vips_hist_find_indexed_start; sclass->scan = vips_hist_find_indexed_scan; sclass->stop = vips_hist_find_indexed_stop; VIPS_ARG_IMAGE( class, "index", 90, _( "Index" ), _( "Index image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistFindIndexed, index ) ); VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output histogram" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistFindIndexed, out ) ); VIPS_ARG_ENUM( class, "combine", 104, _( "Combine" ), _( "Combine bins like this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHistFindIndexed, combine ), VIPS_TYPE_COMBINE, VIPS_COMBINE_SUM ); } static void vips_hist_find_indexed_init( VipsHistFindIndexed *indexed ) { indexed->combine = VIPS_COMBINE_SUM; } /** * vips_hist_find_indexed: (method) * @in: input #VipsImage * @index: input index #VipsImage * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @combine: #VipsCombine, combine bins like this * * Make a histogram of @in, but use image @index to pick the bins. In other * words, element zero in @out contains the combination of all the pixels in @in * whose corresponding pixel in @index is zero. * * @index must have just one band and be u8 or u16. @in must be * non-complex. @out always has the same size and format as @in. * * Normally, bins are summed, but you can use @combine to set other combine * modes. * * This operation is useful in conjunction with vips_labelregions(). You can * use it to find the centre of gravity of blobs in an image, for example. * * See also: vips_hist_find(), vips_labelregions(). * * Returns: 0 on success, -1 on error */ int vips_hist_find_indexed( VipsImage *in, VipsImage *index, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_find_indexed", ap, in, index, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/hist_find_ndim.c000066400000000000000000000201471361153320700221310ustar00rootroot00000000000000/* n-dimensional histogram * * Written on: 8/7/03 * 10/11/04 * - oops, was not checking the bandfmt coming in * 24/3/10 * - gtkdoc * - small celanups * 17/8/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "statistic.h" struct _VipsHistFindNDim; /* Accumulate a histogram in one of these. */ typedef struct { struct _VipsHistFindNDim *ndim; int bins; int max_val; unsigned int ***data; } Histogram; typedef struct _VipsHistFindNDim { VipsStatistic parent_instance; /* Number of bins on each axis. */ int bins; /* Main image histogram. Subhists accumulate to this. */ Histogram *hist; /* Write hist to this output image. */ VipsImage *out; } VipsHistFindNDim; typedef VipsStatisticClass VipsHistFindNDimClass; G_DEFINE_TYPE( VipsHistFindNDim, vips_hist_find_ndim, VIPS_TYPE_STATISTIC ); /* Build a Histogram. */ static Histogram * histogram_new( VipsHistFindNDim *ndim ) { VipsImage *in = VIPS_STATISTIC( ndim )->ready; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( ndim ); int bins = ndim->bins; /* How many dimensions do we need to allocate? */ int ilimit = in->Bands > 2 ? bins : 1; int jlimit = in->Bands > 1 ? bins : 1; int i, j; Histogram *hist; if( !(hist = VIPS_NEW( ndim, Histogram )) ) return( NULL ); hist->ndim = ndim; hist->bins = bins; hist->max_val = in->BandFmt == VIPS_FORMAT_UCHAR ? 256 : 65536; if( bins < 1 || bins > hist->max_val ) { vips_error( class->nickname, _( "bins out of range [1,%d]" ), hist->max_val ); return( NULL ); } if( !(hist->data = VIPS_ARRAY( ndim, bins, unsigned int ** )) ) return( NULL ); memset( hist->data, 0, bins * sizeof( unsigned int ** ) ); for( i = 0; i < ilimit; i++ ) { if( !(hist->data[i] = VIPS_ARRAY( ndim, bins, unsigned int * )) ) return( NULL ); memset( hist->data[i], 0, bins * sizeof( unsigned int * ) ); for( j = 0; j < jlimit; j++ ) { if( !(hist->data[i][j] = VIPS_ARRAY( ndim, bins, unsigned int )) ) return( NULL ); memset( hist->data[i][j], 0, bins * sizeof( unsigned int ) ); } } return( hist ); } static int vips_hist_find_ndim_build( VipsObject *object ) { VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsHistFindNDim *ndim = (VipsHistFindNDim *) object; unsigned int *obuffer; int y, i, x, z; g_object_set( object, "out", vips_image_new(), NULL ); /* main hist made on first thread start. */ if( VIPS_OBJECT_CLASS( vips_hist_find_ndim_parent_class )-> build( object ) ) return( -1 ); if( vips_image_pipelinev( ndim->out, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) ) return( -1 ); vips_image_init_fields( ndim->out, ndim->bins, statistic->ready->Bands > 1 ? ndim->bins : 1, statistic->ready->Bands > 2 ? ndim->bins : 1, VIPS_FORMAT_UINT, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); if( !(obuffer = VIPS_ARRAY( ndim, VIPS_IMAGE_N_ELEMENTS( ndim->out ), unsigned int )) ) return( -1 ); for( y = 0; y < ndim->out->Ysize; y++ ) { for( i = 0, x = 0; x < ndim->out->Xsize; x++ ) for( z = 0; z < ndim->out->Bands; z++, i++ ) obuffer[i] = ndim->hist->data[z][y][x]; if( vips_image_write_line( ndim->out, y, (VipsPel *) obuffer ) ) return( -1 ); } return( 0 ); } static void * vips_hist_find_ndim_start( VipsStatistic *statistic ) { VipsHistFindNDim *ndim = (VipsHistFindNDim *) statistic; /* Make the main hist, if necessary. */ if( !ndim->hist ) ndim->hist = histogram_new( ndim ); return( (void *) histogram_new( ndim ) ); } /* Join a sub-hist onto the main hist. */ static int vips_hist_find_ndim_stop( VipsStatistic *statistic, void *seq ) { Histogram *sub_hist = (Histogram *) seq; VipsHistFindNDim *ndim = (VipsHistFindNDim *) statistic; Histogram *hist = ndim->hist; int i, j, k; for( i = 0; i < hist->bins; i++ ) for( j = 0; j < hist->bins; j++ ) for( k = 0; k < hist->bins; k++ ) if( hist->data[i] && hist->data[i][j] ) { hist->data[i][j][k] += sub_hist->data[i][j][k]; /* Zap sub-hist to make sure we * can't add it again. */ sub_hist->data[i][j][k] = 0; } return( 0 ); } #define LOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ \ for( i = 0, j = 0; j < n; j++ ) { \ for( k = 0; k < nb; k++, i++ ) \ index[k] = p[i] / scale; \ \ hist->data[index[2]][index[1]][index[0]] += 1; \ } \ } static int vips_hist_find_ndim_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; VipsImage *im = statistic->ready; int nb = im->Bands; double scale = (double) (hist->max_val + 1) / hist->bins; int i, j, k; int index[3]; /* Fill these with dimensions, backwards. */ index[0] = index[1] = index[2] = 0; switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short ); break; default: g_assert_not_reached(); } return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define US VIPS_FORMAT_USHORT #define UI VIPS_FORMAT_UINT /* Type mapping: go to uchar or ushort. */ static const VipsBandFormat vips_hist_find_ndim_format_table[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, US, US, US, US, US, US }; static void vips_hist_find_ndim_class_init( VipsHistFindNDimClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_find_ndim"; object_class->description = _( "find n-dimensional image histogram" ); object_class->build = vips_hist_find_ndim_build; sclass->start = vips_hist_find_ndim_start; sclass->scan = vips_hist_find_ndim_scan; sclass->stop = vips_hist_find_ndim_stop; sclass->format_table = vips_hist_find_ndim_format_table; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output histogram" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistFindNDim, out ) ); VIPS_ARG_INT( class, "bins", 110, _( "Bins" ), _( "Number of bins in each dimension" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHistFindNDim, bins ), 1, 65536, 10 ); } static void vips_hist_find_ndim_init( VipsHistFindNDim *ndim ) { ndim->bins = 10; } /** * vips_hist_find_ndim: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @bins: number of bins to make on each axis * * Make a one, two or three dimensional histogram of a 1, 2 or * 3 band image. Divide each axis into @bins bins .. ie. * output is 1 x bins, bins x bins, or bins x bins x bins bands. * @bins defaults to 10. * * Images are cast to uchar or ushort before histogramming. * * See also: vips_hist_find(), vips_hist_find_indexed(). * * Returns: 0 on success, -1 on error */ int vips_hist_find_ndim( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_find_ndim", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/hough.c000066400000000000000000000110471361153320700202640ustar00rootroot00000000000000/* hough transform * * 7/3/14 * - from hist_find.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "statistic.h" #include "hough.h" G_DEFINE_ABSTRACT_TYPE( VipsHough, vips_hough, VIPS_TYPE_STATISTIC ); static VipsImage * vips_hough_new_accumulator( VipsHough *hough ) { VipsHoughClass *class = VIPS_HOUGH_GET_CLASS( hough ); VipsStatistic *statistic = VIPS_STATISTIC( hough ); VipsImage *accumulator; accumulator = vips_image_new_memory(); vips_image_pipelinev( accumulator, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ); if( class->init_accumulator( hough, accumulator ) || vips_image_write_prepare( accumulator ) ) { g_object_unref( accumulator ); return( NULL ); } /* vips does not guarantee image mem is zeroed. */ memset( VIPS_IMAGE_ADDR( accumulator, 0, 0 ), 0, VIPS_IMAGE_SIZEOF_IMAGE( accumulator ) ); return( accumulator ); } static int vips_hough_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsHough *hough = (VipsHough *) object; VipsImage *out; /* Mono only, we use the bands dimension of the output image for * a parameter. */ if( statistic->in ) if( vips_check_mono( class->nickname, statistic->in ) ) return( -1 ); if( !(out = vips_hough_new_accumulator( hough )) ) return( -1 ); g_object_set( object, "out", out, NULL ); if( VIPS_OBJECT_CLASS( vips_hough_parent_class )->build( object ) ) return( -1 ); return( 0 ); } /* Build a new accumulator. */ static void * vips_hough_start( VipsStatistic *statistic ) { VipsHough *hough = (VipsHough *) statistic; VipsImage *accumulator; if( !(accumulator = vips_hough_new_accumulator( hough )) ) return( NULL ); return( (void *) accumulator ); } /* Add our finished accumulator to the main area. */ static int vips_hough_stop( VipsStatistic *statistic, void *seq ) { VipsImage *accumulator = (VipsImage *) seq; VipsHough *hough = (VipsHough *) statistic; if( vips_draw_image( hough->out, accumulator, 0, 0, "mode", VIPS_COMBINE_MODE_ADD, NULL ) ) { g_object_unref( accumulator ); return( -1 ); } g_object_unref( accumulator ); return( 0 ); } static int vips_hough_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { VipsHough *hough = (VipsHough *) statistic; VipsHoughClass *class = VIPS_HOUGH_GET_CLASS( hough ); VipsImage *accumulator = (VipsImage *) seq; VipsPel *p = (VipsPel *) in; int i; for( i = 0; i < n; i++ ) if( p[i] ) class->vote( hough, accumulator, x + i, y ); return( 0 ); } #define UC VIPS_FORMAT_UCHAR /* Input image is cast to this format. */ static const VipsBandFormat vips_hough_format_table[10] = { /* UC C US S UI I F X D DX */ UC, UC, UC, UC, UC, UC, UC, UC, UC, UC }; static void vips_hough_class_init( VipsHoughClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hough"; object_class->description = _( "find hough transform" ); object_class->build = vips_hough_build; sclass->start = vips_hough_start; sclass->scan = vips_hough_scan; sclass->stop = vips_hough_stop; sclass->format_table = vips_hough_format_table; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHough, out ) ); } static void vips_hough_init( VipsHough *hough ) { } libvips-8.9.1/libvips/arithmetic/hough.h000066400000000000000000000043701361153320700202720ustar00rootroot00000000000000/* hough transform * * 7/3/14 * - from hist_find.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_HOUGH_H #define VIPS_HOUGH_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_HOUGH (vips_hough_get_type()) #define VIPS_HOUGH( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_HOUGH, VipsHough )) #define VIPS_HOUGH_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_HOUGH, VipsHoughClass)) #define VIPS_IS_HOUGH( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_HOUGH )) #define VIPS_IS_HOUGH_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_HOUGH )) #define VIPS_HOUGH_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_HOUGH, VipsHoughClass )) typedef struct _VipsHough VipsHough; typedef struct _VipsHoughClass VipsHoughClass; typedef int (*VipsHoughInitAccumulator)( VipsHough *hough, VipsImage *accumulator ); typedef void (*VipsHoughVote)( VipsHough *hough, VipsImage *accumulator, int x, int y ); struct _VipsHough { VipsStatistic parent_instance; /* Sum the thread accumulators to here. */ VipsImage *out; }; struct _VipsHoughClass { VipsStatisticClass parent_class; /* Init an accumulator image. */ VipsHoughInitAccumulator init_accumulator; /* Vote function for this parameter space. */ VipsHoughVote vote; }; GType vips_hough_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_HOUGH_H*/ libvips-8.9.1/libvips/arithmetic/hough_circle.c000066400000000000000000000175331361153320700216130ustar00rootroot00000000000000/* hough transform for circles * * 7/3/14 * - from hough_line.c * 2/1/18 * - 20% speedup */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Derived in part from David Young's Matlab circle detector: * * http://www.mathworks.com/matlabcentral/fileexchange/26978-hough-transform-for-circles */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "statistic.h" #include "hough.h" typedef struct _VipsHoughCircle { VipsHough parent_instance; int scale; int min_radius; int max_radius; int width; int height; int bands; } VipsHoughCircle; typedef VipsHoughClass VipsHoughCircleClass; G_DEFINE_TYPE( VipsHoughCircle, vips_hough_circle, VIPS_TYPE_HOUGH ); /* Smaller circles have fewer pixels and therefore fewer votes. Scale bands by * the ratio of circumference, so all radii get equal weight. */ static void vips_hough_circle_normalise( VipsHoughCircle *hough_circle ) { VipsHough *hough = (VipsHough *) hough_circle; int max_radius = hough_circle->max_radius; int min_radius = hough_circle->min_radius; int scale = hough_circle->scale; int bands = hough_circle->bands; int width = hough_circle->width; int height = hough_circle->height; double max_circumference = 2 * VIPS_PI * max_radius; int b; for( b = 0; b < bands; b++ ) { int radius = b * scale + min_radius; double circumference = 2 * VIPS_PI * radius; double ratio = max_circumference / circumference; size_t n_pels = (size_t) width * height * bands; size_t i; guint *q; q = b + (guint *) VIPS_IMAGE_ADDR( hough->out, 0, 0 ); for( i = 0; i < n_pels; i += bands ) q[i] *= ratio; } } static int vips_hough_circle_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = (VipsStatistic *) object; VipsHoughCircle *hough_circle = (VipsHoughCircle *) object; int range = hough_circle->max_radius - hough_circle->min_radius; if( range <= 0 ) { vips_error( class->nickname, "%s", _( "parameters out of range" ) ); return( -1 ); } hough_circle->width = statistic->in->Xsize / hough_circle->scale; hough_circle->height = statistic->in->Ysize / hough_circle->scale; hough_circle->bands = 1 + range / hough_circle->scale; if( VIPS_OBJECT_CLASS( vips_hough_circle_parent_class )-> build( object ) ) return( -1 ); vips_hough_circle_normalise( hough_circle ); return( 0 ); } static int vips_hough_circle_init_accumulator( VipsHough *hough, VipsImage *accumulator ) { VipsHoughCircle *hough_circle = (VipsHoughCircle *) hough; vips_image_init_fields( accumulator, hough_circle->width, hough_circle->height, hough_circle->bands, VIPS_FORMAT_UINT, VIPS_CODING_NONE, VIPS_INTERPRETATION_MATRIX, 1.0, 1.0 ); return( 0 ); } /* Vote endpoints, with clip. */ static void vips_hough_circle_vote_endpoints_clip( VipsImage *image, int y, int x1, int x2, int quadrant, void *client ) { int r = *((int *) client); int b = image->Bands; if( y >= 0 && y < image->Ysize ) { guint *line = (guint *) VIPS_IMAGE_ADDR( image, 0, y ) + r; if( x1 >=0 && x1 < image->Xsize ) line[x1 * b] += 1; if( x2 >=0 && x2 < image->Xsize ) line[x2 * b] += 1; } } /* Vote endpoints, no clip. */ static void vips_hough_circle_vote_endpoints_noclip( VipsImage *image, int y, int x1, int x2, int quadrant, void *client ) { int r = *((int *) client); guint *line = (guint *) VIPS_IMAGE_ADDR( image, 0, y ) + r; int b = image->Bands; line[x1 * b] += 1; line[x2 * b] += 1; } /* Cast votes for all possible circles passing through x, y. */ static void vips_hough_circle_vote( VipsHough *hough, VipsImage *accumulator, int x, int y ) { VipsHoughCircle *hough_circle = (VipsHoughCircle *) hough; int min_radius = hough_circle->min_radius; int cx = x / hough_circle->scale; int cy = y / hough_circle->scale; int rb; g_assert( hough_circle->max_radius - min_radius >= 0 ); for( rb = 0; rb < hough_circle->bands; rb++ ) { /* r needs to be in scaled down image space. */ int r = rb + min_radius / hough_circle->scale; VipsDrawScanline draw_scanline; if( cx - r >= 0 && cx + r < accumulator->Xsize && cy - r >= 0 && cy + r < accumulator->Ysize ) draw_scanline = vips_hough_circle_vote_endpoints_noclip; else draw_scanline = vips_hough_circle_vote_endpoints_clip; vips__draw_circle_direct( accumulator, cx, cy, r, draw_scanline, &rb ); } } static void vips_hough_circle_class_init( VipsHoughClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsHoughClass *hclass = (VipsHoughClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hough_circle"; object_class->description = _( "find hough circle transform" ); object_class->build = vips_hough_circle_build; hclass->init_accumulator = vips_hough_circle_init_accumulator; hclass->vote = vips_hough_circle_vote; VIPS_ARG_INT( class, "scale", 119, _( "Scale" ), _( "Scale down dimensions by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHoughCircle, scale ), 1, 100000, 3 ); VIPS_ARG_INT( class, "min_radius", 120, _( "Min radius" ), _( "Smallest radius to search for" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHoughCircle, min_radius ), 1, 100000, 10 ); VIPS_ARG_INT( class, "max_radius", 121, _( "Max radius" ), _( "Largest radius to search for" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHoughCircle, max_radius ), 1, 100000, 20 ); } static void vips_hough_circle_init( VipsHoughCircle *hough_circle ) { hough_circle->scale = 1; hough_circle->min_radius = 10; hough_circle->max_radius = 20; } /** * vips_hough_circle: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @scale: scale down dimensions by this much * * @min_radius: smallest radius to search for * * @max_radius: largest radius to search for * * Find the circular Hough transform of an image. @in must be one band, with * non-zero pixels for image edges. @out is three-band, with the third channel * representing the detected circle radius. The operation scales the number of * votes by circle circumference so circles of differing size are given equal * weight. * * Use @max_radius and @min_radius to set the range of radii to search for. * * Use @scale to set how @in coordinates are scaled to @out coordinates. A * @scale of 3, for example, will make @out 1/3rd of the width and height of * @in, and reduce the number of radii tested (and hence the number of bands * int @out) by a factor of three as well. * * See also: vips_hough_line(). * * Returns: 0 on success, -1 on error */ int vips_hough_circle( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hough_circle", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/hough_line.c000066400000000000000000000117771361153320700213050ustar00rootroot00000000000000/* hough transform for lines * * 7/3/14 * - from hist_find.c * 1/2/18 * - change width to 0 - 180 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "statistic.h" #include "hough.h" typedef struct _VipsHoughLine { VipsHough parent_instance; /* Size of parameter space. */ int width; int height; /* LUT for this transform. */ double *sin; } VipsHoughLine; typedef VipsHoughClass VipsHoughLineClass; G_DEFINE_TYPE( VipsHoughLine, vips_hough_line, VIPS_TYPE_HOUGH ); static int vips_hough_line_build( VipsObject *object ) { VipsHoughLine *hough_line = (VipsHoughLine *) object; int width = hough_line->width; int i; if( !(hough_line->sin = VIPS_ARRAY( object, 2 * width, double )) ) return( -1 ); /* Map width to 180 degrees, width * 2 to 360. */ for( i = 0; i < 2 * width; i++ ) hough_line->sin[i] = sin( 2 * VIPS_PI * i / (2 * width) ); if( VIPS_OBJECT_CLASS( vips_hough_line_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static int vips_hough_line_init_accumulator( VipsHough *hough, VipsImage *accumulator ) { VipsHoughLine *hough_line = (VipsHoughLine *) hough; vips_image_init_fields( accumulator, hough_line->width, hough_line->height, 1, VIPS_FORMAT_UINT, VIPS_CODING_NONE, VIPS_INTERPRETATION_MATRIX, 1.0, 1.0 ); return( 0 ); } /* Cast votes for all lines passing through x, y. */ static void vips_hough_line_vote( VipsHough *hough, VipsImage *accumulator, int x, int y ) { VipsHoughLine *hough_line = (VipsHoughLine *) hough; VipsStatistic *statistic = (VipsStatistic *) hough; double xd = (double) x / statistic->ready->Xsize; double yd = (double) y / statistic->ready->Ysize; int width = hough_line->width; int height = hough_line->height; guint *data = (guint *) accumulator->data; int i; for( i = 0; i < width; i++ ) { int i90 = i + width / 2; double r = xd * hough_line->sin[i90] + yd * hough_line->sin[i]; int ri = height * r; if( ri >= 0 && ri < height ) data[i + ri * width] += 1; } } static void vips_hough_line_class_init( VipsHoughClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsHoughClass *hclass = (VipsHoughClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hough_line"; object_class->description = _( "find hough line transform" ); object_class->build = vips_hough_line_build; hclass->init_accumulator = vips_hough_line_init_accumulator; hclass->vote = vips_hough_line_vote; VIPS_ARG_INT( class, "width", 110, _( "Width" ), _( "horizontal size of parameter space" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHoughLine, width ), 1, 100000, 256 ); VIPS_ARG_INT( class, "height", 111, _( "Height" ), _( "Vertical size of parameter space" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHoughLine, height ), 1, 100000, 256 ); } static void vips_hough_line_init( VipsHoughLine *hough_line ) { hough_line->width = 256; hough_line->height = 256; } /** * vips_hough_line: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @width: horizontal size of parameter space * * @height: vertical size of parameter space * * Find the line Hough transform for @in. @in must have one band. @out has one * band, with pixels being the number of votes for that line. The X dimension * of @out is the line angle in 0 - 180 degrees, the Y dimension is the * distance of the closest part of that line to the origin in the top-left. * * Use @width @height to set the size of the parameter space image (@out), * that is, how accurate the line determination should be. * * See also: vips_hough_circle(). * * Returns: 0 on success, -1 on error */ int vips_hough_line( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hough_line", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/invert.c000066400000000000000000000111411361153320700204540ustar00rootroot00000000000000/* photographic negative ... just an example, really * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 12/02/1990 * Modified on : * 7/7/93 JC * - memory leaks fixed * - adapted for partial v2 * - ANSIfied * 22/2/95 JC * - tidied up again * 2/9/09 * - gtk-doc comment * 23/8/11 * - rewrite as a class * 7/12/12 * - only invert real part of complex */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef VipsUnary VipsInvert; typedef VipsUnaryClass VipsInvertClass; G_DEFINE_TYPE( VipsInvert, vips_invert, VIPS_TYPE_UNARY ); #define LOOP( TYPE, L ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = (L) - p[x]; \ } #define LOOPN( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = -1 * p[x]; \ } #define LOOPC( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[0] = -1 * p[0]; \ q[1] = p[1]; \ \ p += 2; \ q += 2; \ } \ } static void vips_invert_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, UCHAR_MAX ); break; case VIPS_FORMAT_CHAR: LOOPN( signed char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short, USHRT_MAX ); break; case VIPS_FORMAT_SHORT: LOOPN( signed short ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, UINT_MAX ); break; case VIPS_FORMAT_INT: LOOPN( signed int ); break; case VIPS_FORMAT_FLOAT: LOOPN( float ); break; case VIPS_FORMAT_DOUBLE: LOOPN( double ); break; case VIPS_FORMAT_COMPLEX: LOOPC( float ); break; case VIPS_FORMAT_DPCOMPLEX: LOOPC( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Format doesn't change with invert. */ static const VipsBandFormat vips_invert_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, X, D, DX }; static void vips_invert_class_init( VipsInvertClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "invert"; object_class->description = _( "invert an image" ); aclass->process_line = vips_invert_buffer; vips_arithmetic_set_format_table( aclass, vips_invert_format_table ); } static void vips_invert_init( VipsInvert *invert ) { } /** * vips_invert: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * For unsigned formats, this operation calculates (max - @in), eg. (255 - * @in) for uchar. For signed and float formats, this operation calculates (-1 * @in). * * For complex images, only the real part is inverted. See also vips_conj(). * * See also: vips_linear(). * * Returns: 0 on success, -1 on error */ int vips_invert( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "invert", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/linear.c000066400000000000000000000313241361153320700204240ustar00rootroot00000000000000/* im_lintra.c -- linear transform * * Copyright: 1990, N. Dessipris, based on im_powtra() * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 23/4/93 JC * - adapted to work with partial images * 1/7/93 JC * - adapted for partial v2 * 7/10/94 JC * - new IM_NEW() * - more typedefs * 9/2/95 JC * - adapted for im_wrap... * - operations on complex images now just transform the real channel * 29/9/95 JC * - complex was broken * 15/4/97 JC * - return(0) missing from generate, arrgh! * 1/7/98 JC * - im_lintra_vec added * 3/8/02 JC * - fall back to im_copy() for a == 1, b == 0 * 10/10/02 JC * - auug, failing to multiply imag for complex! (thanks matt) * 10/12/02 JC * - removed im_copy() fallback ... meant that output format could change * with value :-( very confusing * 30/6/04 * - added 1 band image * n band vector case * 8/12/06 * - add liboil support * 9/9/09 * - gtkdoc comment, minor reformat * 31/7/10 * - remove liboil * 31/10/11 * - rework as a class * - removed the 1-ary constant path, no faster * 30/11/13 * - 1ary is back, faster with gcc 4.8 * 14/1/14 * - add uchar output option * 30/9/17 * - squash constants with all elements equal so we use 1ary path more * often */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef struct _VipsLinear { VipsUnary parent_instance; /* Our constants: multiply by a, add b. */ VipsArea *a; VipsArea *b; /* uchar output. */ gboolean uchar; /* Our constants expanded to match arith->ready in size. */ int n; double *a_ready; double *b_ready; } VipsLinear; typedef VipsUnaryClass VipsLinearClass; G_DEFINE_TYPE( VipsLinear, vips_linear, VIPS_TYPE_UNARY ); static int vips_linear_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsUnary *unary = (VipsUnary *) object; VipsLinear *linear = (VipsLinear *) object; int i; /* If we have a three-element vector, we need to bandup the image to * match. */ linear->n = 1; if( linear->a ) linear->n = VIPS_MAX( linear->n, linear->a->n ); if( linear->b ) linear->n = VIPS_MAX( linear->n, linear->b->n ); if( unary->in ) { int bands; vips_image_decode_predict( unary->in, &bands, NULL ); linear->n = VIPS_MAX( linear->n, bands ); } arithmetic->base_bands = linear->n; if( unary->in && linear->a && linear->b ) { if( vips_check_vector( class->nickname, linear->a->n, unary->in ) || vips_check_vector( class->nickname, linear->b->n, unary->in ) ) return( -1 ); } /* If all elements of the constants are equal, we can shrink them down * to a single element. */ if( linear->a ) { double *ary = (double *) linear->a->data; gboolean all_equal; all_equal = TRUE; for( i = 1; i < linear->a->n; i++ ) if( ary[i] != ary[0] ) { all_equal = FALSE; break; } if( all_equal ) linear->a->n = 1; } if( linear->b ) { double *ary = (double *) linear->b->data; gboolean all_equal; all_equal = TRUE; for( i = 1; i < linear->b->n; i++ ) if( ary[i] != ary[0] ) { all_equal = FALSE; break; } if( all_equal ) linear->b->n = 1; } /* Make up-banded versions of our constants. */ linear->a_ready = VIPS_ARRAY( linear, linear->n, double ); linear->b_ready = VIPS_ARRAY( linear, linear->n, double ); for( i = 0; i < linear->n; i++ ) { if( linear->a ) { double *ary = (double *) linear->a->data; int j = VIPS_MIN( i, linear->a->n - 1 ); linear->a_ready[i] = ary[j]; } if( linear->b ) { double *ary = (double *) linear->b->data; int j = VIPS_MIN( i, linear->b->n - 1 ); linear->b_ready[i] = ary[j]; } } if( linear->uchar ) arithmetic->format = VIPS_FORMAT_UCHAR; if( VIPS_OBJECT_CLASS( vips_linear_parent_class )->build( object ) ) return( -1 ); return( 0 ); } /* Non-complex input, any output, all bands of the constant equal. */ #define LOOP1( IN, OUT ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ OUT a1 = a[0]; \ OUT b1 = b[0]; \ int sz = width * nb; \ \ for( x = 0; x < sz; x++ ) \ q[x] = a1 * (OUT) p[x] + b1; \ } /* Non-complex input, any output. */ #define LOOPN( IN, OUT ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( k = 0; k < nb; k++, i++ ) \ q[i] = a[k] * (OUT) p[i] + b[k]; \ } #define LOOP( IN, OUT ) { \ if( linear->a->n == 1 && linear->b->n == 1 ) { \ LOOP1( IN, OUT ); \ } \ else { \ LOOPN( IN, OUT ); \ } \ } /* Complex input, complex output. */ #define LOOPCMPLXN( IN, OUT ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < width; x++ ) \ for( k = 0; k < nb; k++ ) { \ q[0] = a[k] * p[0] + b[k]; \ q[1] = p[1]; \ q += 2; \ p += 2; \ } \ } /* Non-complex input, any output, all bands of the constant equal, uchar * output. */ #define LOOP1uc( IN ) { \ IN * restrict p = (IN *) in[0]; \ VipsPel * restrict q = (VipsPel *) out; \ float a1 = a[0]; \ float b1 = b[0]; \ int sz = width * nb; \ \ for( x = 0; x < sz; x++ ) { \ float t = a1 * p[x] + b1; \ \ q[x] = VIPS_FCLIP( 0, t, 255 ); \ } \ } /* Non-complex input, uchar output. */ #define LOOPNuc( IN ) { \ IN * restrict p = (IN *) in[0]; \ VipsPel * restrict q = (VipsPel *) out; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( k = 0; k < nb; k++, i++ ) { \ double t = a[k] * p[i] + b[k]; \ \ q[i] = VIPS_FCLIP( 0, t, 255 ); \ } \ } #define LOOPuc( IN ) { \ if( linear->a->n == 1 && linear->b->n == 1 ) { \ LOOP1uc( IN ); \ } \ else { \ LOOPNuc( IN ); \ } \ } /* Complex input, uchar output. */ #define LOOPCMPLXNuc( IN ) { \ IN * restrict p = (IN *) in[0]; \ VipsPel * restrict q = (VipsPel *) out; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( k = 0; k < nb; k++, i++ ) { \ double t = a[k] * p[0] + b[k]; \ \ q[i] = VIPS_FCLIP( 0, t, 255 ); \ p += 2; \ } \ } /* Lintra a buffer, n set of scale/offset. */ static void vips_linear_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; VipsLinear *linear = (VipsLinear *) arithmetic; double * restrict a = linear->a_ready; double * restrict b = linear->b_ready; int nb = im->Bands; int i, x, k; if( linear->uchar ) switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOPuc( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOPuc( signed char ); break; case VIPS_FORMAT_USHORT: LOOPuc( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOPuc( signed short ); break; case VIPS_FORMAT_UINT: LOOPuc( unsigned int ); break; case VIPS_FORMAT_INT: LOOPuc( signed int ); break; case VIPS_FORMAT_FLOAT: LOOPuc( float ); break; case VIPS_FORMAT_DOUBLE: LOOPuc( double ); break; case VIPS_FORMAT_COMPLEX: LOOPCMPLXNuc( float ); break; case VIPS_FORMAT_DPCOMPLEX: LOOPCMPLXNuc( double ); break; default: g_assert_not_reached(); } else switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, float ); break; case VIPS_FORMAT_CHAR: LOOP( signed char, float ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short, float ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, float ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, float ); break; case VIPS_FORMAT_INT: LOOP( signed int, float ); break; case VIPS_FORMAT_FLOAT: LOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: LOOP( double, double ); break; case VIPS_FORMAT_COMPLEX: LOOPCMPLXN( float, float ); break; case VIPS_FORMAT_DPCOMPLEX: LOOPCMPLXN( double, double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Format doesn't change with linear. */ static const VipsBandFormat vips_linear_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, X, D, DX }; static void vips_linear_class_init( VipsLinearClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "linear"; object_class->description = _( "calculate (a * in + b)" ); object_class->build = vips_linear_build; aclass->process_line = vips_linear_buffer; vips_arithmetic_set_format_table( aclass, vips_linear_format_table ); VIPS_ARG_BOXED( class, "a", 110, _( "a" ), _( "Multiply by this" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsLinear, a ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_BOXED( class, "b", 111, _( "b" ), _( "Add this" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsLinear, b ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_BOOL( class, "uchar", 112, _( "uchar" ), _( "Output should be uchar" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsLinear, uchar ), FALSE ); } static void vips_linear_init( VipsLinear *linear ) { } static int vips_linearv( VipsImage *in, VipsImage **out, double *a, double *b, int n, va_list ap ) { VipsArea *area_a; VipsArea *area_b; int result; area_a = VIPS_AREA( vips_array_double_new( a, n ) ); area_b = VIPS_AREA( vips_array_double_new( b, n ) ); result = vips_call_split( "linear", ap, in, out, area_a, area_b ); vips_area_unref( area_a ); vips_area_unref( area_b ); return( result ); } /** * vips_linear: (method) * @in: image to transform * @out: (out): output image * @a: (array length=n): array of constants for multiplication * @b: (array length=n): array of constants for addition * @n: length of constant arrays * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @uchar: output uchar pixels * * Pass an image through a linear transform, ie. (@out = @in * @a + @b). Output * is float for integer input, double for double input, complex for * complex input and double complex for double complex input. Set @uchar to * output uchar pixels. * * If the arrays of constants have just one element, that constant is used for * all image bands. If the arrays have more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_linear1(), vips_add(). * * Returns: 0 on success, -1 on error */ int vips_linear( VipsImage *in, VipsImage **out, double *a, double *b, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_linearv( in, out, a, b, n, ap ); va_end( ap ); return( result ); } /** * vips_linear1: (method) * @in: image to transform * @out: (out): output image * @a: constant for multiplication * @b: constant for addition * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @uchar: output uchar pixels * * Run vips_linear() with a single constant. * * See also: vips_linear(). * * Returns: 0 on success, -1 on error */ int vips_linear1( VipsImage *in, VipsImage **out, double a, double b, ... ) { va_list ap; int result; va_start( ap, b ); result = vips_linearv( in, out, &a, &b, 1, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/math.c000066400000000000000000000262301361153320700201030ustar00rootroot00000000000000/* VipsMath --- call various -lm functions (trig, log etc.) on images * * Copyright: 1990, N. Dessipris, based on im_powtra() * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 5/5/93 JC * - adapted from im_lintra to work with partial images * - incorrect implementation of complex logs removed * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 24/2/95 JC * - im_logtra() adapted to make im_sintra() * - adapted for im_wrapone() * 26/1/96 JC * - im_asintra() added * 30/8/09 * - gtkdoc * - tiny cleanups * - use im__math() * 19/9/09 * - im_sintra() adapted to make math.c * 4/11/11 * - redone as a class * 11/8/15 * - log/log10 zero-avoid */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef struct _VipsMath { VipsUnary parent_instance; VipsOperationMath math; } VipsMath; typedef VipsUnaryClass VipsMathClass; G_DEFINE_TYPE( VipsMath, vips_math, VIPS_TYPE_UNARY ); static int vips_math_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsUnary *unary = (VipsUnary *) object; if( unary->in && vips_check_noncomplex( class->nickname, unary->in ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_math_parent_class )->build( object ) ) return( -1 ); return( 0 ); } #define LOOP( IN, OUT, OP ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = OP( p[x] ); \ } #define SWITCH( OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: \ LOOP( unsigned char, float, OP ); break; \ case VIPS_FORMAT_CHAR: \ LOOP( signed char, float, OP ); break; \ case VIPS_FORMAT_USHORT: \ LOOP( unsigned short, float, OP ); break; \ case VIPS_FORMAT_SHORT: \ LOOP( signed short, float, OP ); break; \ case VIPS_FORMAT_UINT: \ LOOP( unsigned int, float, OP ); break; \ case VIPS_FORMAT_INT: \ LOOP( signed int, float, OP ); break; \ case VIPS_FORMAT_FLOAT: \ LOOP( float, float, OP ); break; \ case VIPS_FORMAT_DOUBLE: \ LOOP( double, double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } /* sin/cos/tan in degrees. */ #define DSIN( X ) (sin( VIPS_RAD( X ) )) #define DCOS( X ) (cos( VIPS_RAD( X ) )) #define DTAN( X ) (tan( VIPS_RAD( X ) )) #define ADSIN( X ) (VIPS_DEG( asin( X ) )) #define ADCOS( X ) (VIPS_DEG( acos( X ) )) #define ADTAN( X ) (VIPS_DEG( atan( X ) )) /* exp10() is a gnu extension, use pow(). */ #define EXP10( X ) (pow( 10.0, (X) )) /* Zero-avoiding log, cf. zero-avoiding behaviour of /. */ #define LOGZ( X ) ((X) == 0.0 ? 0.0 : log( X )) #define LOGZ10( X ) ((X) == 0.0 ? 0.0 : log10( X )) static void vips_math_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsMath *math = (VipsMath *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( math->math ) { case VIPS_OPERATION_MATH_SIN: SWITCH( DSIN ); break; case VIPS_OPERATION_MATH_COS: SWITCH( DCOS ); break; case VIPS_OPERATION_MATH_TAN: SWITCH( DTAN ); break; case VIPS_OPERATION_MATH_ASIN: SWITCH( ADSIN ); break; case VIPS_OPERATION_MATH_ACOS: SWITCH( ADCOS ); break; case VIPS_OPERATION_MATH_ATAN: SWITCH( ADTAN ); break; case VIPS_OPERATION_MATH_LOG: SWITCH( LOGZ ); break; case VIPS_OPERATION_MATH_LOG10: SWITCH( LOGZ10 ); break; case VIPS_OPERATION_MATH_EXP: SWITCH( exp ); break; case VIPS_OPERATION_MATH_EXP10: SWITCH( EXP10 ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_math_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, X, D, DX }; static void vips_math_class_init( VipsMathClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "math"; object_class->description = _( "apply a math operation to an image" ); object_class->build = vips_math_build; aclass->process_line = vips_math_buffer; vips_arithmetic_set_format_table( aclass, vips_math_format_table ); VIPS_ARG_ENUM( class, "math", 200, _( "Operation" ), _( "math to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMath, math ), VIPS_TYPE_OPERATION_MATH, VIPS_OPERATION_MATH_SIN ); } static void vips_math_init( VipsMath *math ) { } static int vips_mathv( VipsImage *in, VipsImage **out, VipsOperationMath math, va_list ap ) { return( vips_call_split( "math", ap, in, out, math ) ); } /** * vips_math: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @math: math operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various functions in -lm, the maths library, on images. * * Angles are expressed in degrees. The output type is float unless the * input is double, in which case the output is double. * * Non-complex images only. * * See also: vips_math2(). * * Returns: 0 on success, -1 on error */ int vips_math( VipsImage *in, VipsImage **out, VipsOperationMath math, ... ) { va_list ap; int result; va_start( ap, math ); result = vips_mathv( in, out, math, ap ); va_end( ap ); return( result ); } /** * vips_sin: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_SIN on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_sin( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_SIN, ap ); va_end( ap ); return( result ); } /** * vips_cos: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_COS on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_cos( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_COS, ap ); va_end( ap ); return( result ); } /** * vips_tan: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_TAN on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_tan( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_TAN, ap ); va_end( ap ); return( result ); } /** * vips_asin: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_ASIN on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_asin( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_ASIN, ap ); va_end( ap ); return( result ); } /** * vips_acos: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_ACOS on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_acos( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_ACOS, ap ); va_end( ap ); return( result ); } /** * vips_atan: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_ATAN on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_atan( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_ATAN, ap ); va_end( ap ); return( result ); } /** * vips_log: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_LOG on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_log( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_LOG, ap ); va_end( ap ); return( result ); } /** * vips_log10: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_LOG10 on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_log10( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_LOG10, ap ); va_end( ap ); return( result ); } /** * vips_exp: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_EXP on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_exp( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_EXP, ap ); va_end( ap ); return( result ); } /** * vips_exp10: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_EXP10 on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_exp10( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_EXP10, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/math2.c000066400000000000000000000360561361153320700201740ustar00rootroot00000000000000/* math2.c --- 2ary math funcs * * Copyright: 1990, N. Dessipris * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 10/12/93 JC * - now reports total number of x/0, rather than each one. * 1/2/95 JC * - rewritten for PIO with im_wrapone() * - incorrect complex code removed * - /0 reporting removed for ease of programming * 15/4/97 JC * - return( 0 ) missing, oops! * 6/7/98 JC * - _vec form added * 30/8/09 * - gtkdoc * - tiny cleanups * 20/9/09 * - im_powtra() adapated to make math2.c * 12/11/11 * - redone as a class * 17/7/12 * - wopconst was broken */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" #include "unaryconst.h" typedef struct _VipsMath2 { VipsBinary parent_instance; VipsOperationMath2 math2; } VipsMath2; typedef VipsBinaryClass VipsMath2Class; G_DEFINE_TYPE( VipsMath2, vips_math2, VIPS_TYPE_BINARY ); static int vips_math2_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBinary *binary = (VipsBinary *) object; if( binary->left && vips_check_noncomplex( class->nickname, binary->left ) ) return( -1 ); if( binary->right && vips_check_noncomplex( class->nickname, binary->right ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_math2_parent_class )->build( object ) ) return( -1 ); return( 0 ); } #define LOOP( IN, OUT, OP ) { \ IN * restrict p1 = (IN *) in[0]; \ IN * restrict p2 = (IN *) in[1]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ OP( q[x], p1[x], p2[x] ); \ } #define SWITCH( L, OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: \ L( unsigned char, float, OP ); break; \ case VIPS_FORMAT_CHAR: \ L( signed char, float, OP ); break; \ case VIPS_FORMAT_USHORT: \ L( unsigned short, float, OP ); break; \ case VIPS_FORMAT_SHORT: \ L( signed short, float, OP ); break; \ case VIPS_FORMAT_UINT: \ L( unsigned int, float, OP ); break; \ case VIPS_FORMAT_INT: \ L( signed int, float, OP ); break; \ case VIPS_FORMAT_FLOAT: \ L( float, float, OP ); break; \ case VIPS_FORMAT_DOUBLE: \ L( double, double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } #define POW( Y, X, E ) { \ double left = (double) (X); \ double right = (double) (E); \ \ /* Division by zero! Difficult to report tho' \ */ \ (Y) = (right == 0.5) \ ? sqrt( left ) \ : (left == 0.0 && right < 0.0) ? 0.0 : pow( left, right ); \ } #define WOP( Y, X, E ) POW( Y, E, X ) static void vips_math2_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsMath2 *math2 = (VipsMath2 *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( math2->math2 ) { case VIPS_OPERATION_MATH2_POW: SWITCH( LOOP, POW ); break; case VIPS_OPERATION_MATH2_WOP: SWITCH( LOOP, WOP ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for math2. Keep in sync with math2_buffer() above. */ static int vips_math2_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, X, D, DX }; static void vips_math2_class_init( VipsMath2Class *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "math2"; object_class->description = _( "binary math operations" ); object_class->build = vips_math2_build; aclass->process_line = vips_math2_buffer; vips_arithmetic_set_format_table( aclass, vips_math2_format_table ); VIPS_ARG_ENUM( class, "math2", 200, _( "Operation" ), _( "math to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMath2, math2 ), VIPS_TYPE_OPERATION_MATH2, VIPS_OPERATION_MATH2_POW ); } static void vips_math2_init( VipsMath2 *math2 ) { } static int vips_math2v( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationMath2 math2, va_list ap ) { return( vips_call_split( "math2", ap, left, right, out, math2 ) ); } /** * vips_math2: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @math2: math operation to perform * @...: %NULL-terminated list of optional named arguments * * This operation calculates a 2-ary maths operation on a pair of images * and writes the result to @out. The images may have any * non-complex format. @out is float except in the case that either of @left * or @right are double, in which case @out is also double. * * It detects division by zero, setting those pixels to zero in the output. * Beware: it does this silently! * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), and that format is the * result type. * * See also: vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_math2( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationMath2 math2, ... ) { va_list ap; int result; va_start( ap, math2 ); result = vips_math2v( left, right, out, math2, ap ); va_end( ap ); return( result ); } /** * vips_pow: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_POW on a pair of images. See * vips_math2(). * * Returns: 0 on success, -1 on error */ int vips_pow( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_math2v( left, right, out, VIPS_OPERATION_MATH2_POW, ap ); va_end( ap ); return( result ); } /** * vips_wop: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_WOP on a pair of images. See * vips_math2(). * * Returns: 0 on success, -1 on error */ int vips_wop( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_math2v( left, right, out, VIPS_OPERATION_MATH2_WOP, ap ); va_end( ap ); return( result ); } typedef struct _VipsMath2Const { VipsUnaryConst parent_instance; VipsOperationMath2 math2; } VipsMath2Const; typedef VipsUnaryConstClass VipsMath2ConstClass; G_DEFINE_TYPE( VipsMath2Const, vips_math2_const, VIPS_TYPE_UNARY_CONST ); static int vips_math2_const_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsUnary *unary = (VipsUnary *) object; if( unary->in && vips_check_noncomplex( class->nickname, unary->in ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_math2_const_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } #define LOOPC( IN, OUT, OP ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ double * restrict c = uconst->c_double; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) \ OP( q[i], p[i], c[b] ); \ } static void vips_math2_const_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsUnaryConst *uconst = (VipsUnaryConst *) arithmetic; VipsMath2Const *math2 = (VipsMath2Const *) arithmetic; VipsImage *im = arithmetic->ready[0]; int bands = im->Bands; int i, x, b; switch( math2->math2 ) { case VIPS_OPERATION_MATH2_POW: SWITCH( LOOPC, POW ); break; case VIPS_OPERATION_MATH2_WOP: SWITCH( LOOPC, WOP ); break; default: g_assert_not_reached(); break; } } static void vips_math2_const_class_init( VipsMath2ConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "math2_const"; object_class->description = _( "binary math operations with a constant" ); object_class->build = vips_math2_const_build; aclass->process_line = vips_math2_const_buffer; vips_arithmetic_set_format_table( aclass, vips_math2_format_table ); VIPS_ARG_ENUM( class, "math2", 200, _( "Operation" ), _( "math to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMath2Const, math2 ), VIPS_TYPE_OPERATION_MATH2, VIPS_OPERATION_MATH2_POW ); } static void vips_math2_const_init( VipsMath2Const *math2_const ) { } static int vips_math2_constv( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double *c, int n, va_list ap ) { VipsArea *area_c; double *array; int result; int i; area_c = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array = (double *) area_c->data; for( i = 0; i < n; i++ ) array[i] = c[i]; result = vips_call_split( "math2_const", ap, in, out, math2, area_c ); vips_area_unref( area_c ); return( result ); } /** * vips_math2_const: (method) * @in: input image * @out: (out): output image * @math2: math operation to perform * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * This operation calculates various 2-ary maths operations on an image and * an array of constants and writes the result to @out. * The image may have any * non-complex format. @out is float except in the case that @in * is double, in which case @out is also double. * * It detects division by zero, setting those pixels to zero in the output. * Beware: it does this silently! * * If the array of constants has just one element, that constant is used for * all image bands. If the array has more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_math2(), vips_math(). * * Returns: 0 on success, -1 on error */ int vips_math2_const( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_math2_constv( in, out, math2, c, n, ap ); va_end( ap ); return( result ); } /** * vips_pow_const: (method) * @in: left-hand input #VipsImage * @out: (out): output #VipsImage * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_POW on an image and a constant. See * vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_pow_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_math2_constv( in, out, VIPS_OPERATION_MATH2_POW, c, n, ap ); va_end( ap ); return( result ); } /** * vips_wop_const: (method) * @in: left-hand input #VipsImage * @out: (out): output #VipsImage * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_WOP on an image and a constant. See * vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_wop_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_math2_constv( in, out, VIPS_OPERATION_MATH2_WOP, c, n, ap ); va_end( ap ); return( result ); } /** * vips_math2_const1: (method) * @in: input image * @out: (out): output image * @math2: math operation to perform * @c: constant * @...: %NULL-terminated list of optional named arguments * * This operation calculates various 2-ary maths operations on an image and * a constant. See vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_math2_const1( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_math2_constv( in, out, math2, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_pow_const1: (method) * @in: left-hand input #VipsImage * @out: (out): output #VipsImage * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_POW on an image and a constant. See * vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_pow_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_math2_constv( in, out, VIPS_OPERATION_MATH2_POW, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_wop_const1: (method) * @in: left-hand input #VipsImage * @out: (out): output #VipsImage * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_WOP on an image and a constant. See * vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_wop_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_math2_constv( in, out, VIPS_OPERATION_MATH2_WOP, &c, 1, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/max.c000066400000000000000000000316501361153320700177410ustar00rootroot00000000000000/* find image maximum * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/05/1990 * Modified on : 18/03/1991, N. Dessipris * 23/11/92: J.Cupitt - correct result for more than 1 band now. * 23/7/93 JC * - im_incheck() call added * 20/6/95 JC * - now returns double for value, like im_max() * 4/9/09 * - gtkdoc comment * 8/9/09 * - rewrite based on im_max() to get partial * - move im_max() in here as a convenience function * 6/11/11 * - rewrite as a class * - abandon scan if we find maximum possible value * 24/2/12 * - avoid NaN in float/double/complex images * - allow +/- INFINITY as a result * 4/12/12 * - track and return top n values * 24/1/17 * - sort equal values by y then x to make order more consistent */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "statistic.h" /* Track max values and position here. We need one of these for each thread, * and one for the main value. * * We will generally only be tracking a small (<10?) number of values, so * simple arrays will be fastest. */ typedef struct _VipsValues { struct _VipsMax *max; /* Number of values we track. */ int size; /* How many values we have in the arrays. */ int n; /* Position and values. We track mod**2 for complex and do a sqrt() at * the end. The three arrays are sorted by @value, smallest first. */ double *value; int *x_pos; int *y_pos; } VipsValues; typedef struct _VipsMax { VipsStatistic parent_instance; /* Max number of values we track. */ int size; /* The single max. Can be unset if, for example, the whole image is * NaN. */ double out; int x; int y; /* And the positions and values we found as VipsArrays for returning * to our caller. */ VipsArrayDouble *out_array; VipsArrayInt *x_array; VipsArrayInt *y_array; /* Global state here. */ VipsValues values; } VipsMax; static void vips_values_init( VipsValues *values, VipsMax *max ) { values->max = max; values->size = max->size; values->n = 0; values->value = VIPS_ARRAY( max, values->size, double ); values->x_pos = VIPS_ARRAY( max, values->size, int ); values->y_pos = VIPS_ARRAY( max, values->size, int ); } /* Add a value. Do nothing if the value is too small. */ static void vips_values_add( VipsValues *values, double v, int x, int y ) { int i, j; /* Find insertion point. */ for( i = 0; i < values->n; i++ ) { if( v < values->value[i] ) break; if( v == values->value[i] ) { if( y < values->y_pos[i] ) break; if( y == values->y_pos[i] ) if( x <= values->x_pos[i] ) break; } } /* Array full? */ if( values->n == values->size ) { if( i > 0 ) { /* We need to move stuff to the left to make space, * shunting the smallest out. */ for( j = 0; j < i - 1; j++ ) { values->value[j] = values->value[j + 1]; values->x_pos[j] = values->x_pos[j + 1]; values->y_pos[j] = values->y_pos[j + 1]; } values->value[i - 1] = v; values->x_pos[i - 1] = x; values->y_pos[i - 1] = y; } } else { /* Not full, move stuff to the right into empty space. */ for( j = values->n; j > i; j-- ) { values->value[j] = values->value[j - 1]; values->x_pos[j] = values->x_pos[j - 1]; values->y_pos[j] = values->y_pos[j - 1]; } values->value[i] = v; values->x_pos[i] = x; values->y_pos[i] = y; values->n += 1; } } typedef VipsStatisticClass VipsMaxClass; G_DEFINE_TYPE( VipsMax, vips_max, VIPS_TYPE_STATISTIC ); static int vips_max_build( VipsObject *object ) { VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsMax *max = (VipsMax *) object; VipsValues *values = &max->values; vips_values_init( values, max ); if( VIPS_OBJECT_CLASS( vips_max_parent_class )->build( object ) ) return( -1 ); /* For speed we accumulate max ** 2 for complex. */ if( vips_band_format_iscomplex( vips_image_get_format( statistic->in ) ) ) { int i; for( i = 0; i < values->n; i++ ) values->value[i] = sqrt( values->value[i] ); } /* Don't set if there's no value (eg. if every pixel is NaN). This * will trigger an error later. */ if( values->n > 0 ) { VipsArrayDouble *out_array; VipsArrayInt *x_array; VipsArrayInt *y_array; out_array = vips_array_double_new( values->value, values->n ); x_array = vips_array_int_new( values->x_pos, values->n ); y_array = vips_array_int_new( values->y_pos, values->n ); /* We have to set the props via g_object_set() to stop vips * complaining they are unset. */ g_object_set( max, "out", values->value[values->n - 1], "x", values->x_pos[values->n - 1], "y", values->y_pos[values->n - 1], "out_array", out_array, "x_array", x_array, "y_array", y_array, NULL ); vips_area_unref( VIPS_AREA( out_array ) ); vips_area_unref( VIPS_AREA( x_array ) ); vips_area_unref( VIPS_AREA( y_array ) ); } #ifdef DEBUG { int i; printf( "vips_max_build: %d values found\n", values->n ); for( i = 0; i < values->n; i++ ) printf( "%d) %g\t%d\t%d\n", i, values->value[i], values->x_pos[i], values->y_pos[i] ); } #endif /*DEBUG*/ return( 0 ); } /* New sequence value. Make a private VipsValues for this thread. */ static void * vips_max_start( VipsStatistic *statistic ) { VipsValues *values; values = g_new( VipsValues, 1 ); vips_values_init( values, (VipsMax *) statistic ); return( (void *) values ); } /* Merge the sequence value back into the per-call state. */ static int vips_max_stop( VipsStatistic *statistic, void *seq ) { VipsMax *max = (VipsMax *) statistic; VipsValues *values = (VipsValues *) seq; int i; for( i = 0; i < values->n; i++ ) vips_values_add( &max->values, values->value[i], values->x_pos[i], values->y_pos[i] ); g_free( values ); return( 0 ); } /* Real max with an upper bound. * * Add values to the buffer if they are greater than the buffer minimum. If * the buffer isn't full, there is no minimum. * * Avoid a double test by splitting the loop into two phases: before and after * the buffer fills. * * Stop if our array fills with maxval. */ #define LOOPU( TYPE, UPPER ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ for( ; i < sz; i++ ) { \ if( p[i] > m ) { \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ if( m >= UPPER ) { \ statistic->stop = TRUE; \ break; \ } \ } \ } \ } /* float/double max ... no limits, and we have to avoid NaN. * * NaN compares false to every float value, so we don't need to test for NaN * in the second loop. */ #define LOOPF( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) \ if( !VIPS_ISNAN( p[i] ) ) \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ for( ; i < sz; i++ ) \ if( p[i] > m ) { \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ } \ } /* As LOOPF, but complex. Track max(mod ** 2) to avoid sqrt(). */ #define LOOPC( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) { \ TYPE mod2 = p[0] * p[0] + p[1] * p[1]; \ \ if( !VIPS_ISNAN( mod2 ) ) \ vips_values_add( values, p[i], x + i / bands, y ); \ \ p += 2; \ } \ m = values->value[0]; \ \ for( ; i < sz; i++ ) { \ TYPE mod2 = p[0] * p[0] + p[1] * p[1]; \ \ if( mod2 > m ) { \ vips_values_add( values, mod2, x + i / bands, y ); \ m = values->value[0]; \ } \ \ p += 2; \ } \ } /* Loop over region, adding to seq. */ static int vips_max_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { VipsValues *values = (VipsValues *) seq; const int bands = vips_image_get_bands( statistic->in ); const int sz = n * bands; int i; switch( vips_image_get_format( statistic->in ) ) { case VIPS_FORMAT_UCHAR: LOOPU( unsigned char, UCHAR_MAX ); break; case VIPS_FORMAT_CHAR: LOOPU( signed char, SCHAR_MAX ); break; case VIPS_FORMAT_USHORT: LOOPU( unsigned short, USHRT_MAX ); break; case VIPS_FORMAT_SHORT: LOOPU( signed short, SHRT_MAX ); break; case VIPS_FORMAT_UINT: LOOPU( unsigned int, UINT_MAX ); break; case VIPS_FORMAT_INT: LOOPU( signed int, INT_MAX ); break; case VIPS_FORMAT_FLOAT: LOOPF( float ); break; case VIPS_FORMAT_DOUBLE: LOOPF( double ); break; case VIPS_FORMAT_COMPLEX: LOOPC( float ); break; case VIPS_FORMAT_DPCOMPLEX: LOOPC( double ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_max_class_init( VipsMaxClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "max"; object_class->description = _( "find image maximum" ); object_class->build = vips_max_build; sclass->start = vips_max_start; sclass->scan = vips_max_scan; sclass->stop = vips_max_stop; VIPS_ARG_DOUBLE( class, "out", 1, _( "Output" ), _( "Output value" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMax, out ), -INFINITY, INFINITY, 0.0 ); VIPS_ARG_INT( class, "x", 2, _( "x" ), _( "Horizontal position of maximum" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMax, x ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "y", 3, _( "y" ), _( "Vertical position of maximum" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMax, y ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "size", 4, _( "Size" ), _( "Number of maximum values to find" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMax, size ), 1, 1000000, 10 ); VIPS_ARG_BOXED( class, "out_array", 6, _( "Output array" ), _( "Array of output values" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMax, out_array ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_BOXED( class, "x_array", 7, _( "x array" ), _( "Array of horizontal positions" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMax, x_array ), VIPS_TYPE_ARRAY_INT ); VIPS_ARG_BOXED( class, "y_array", 8, _( "y array" ), _( "Array of vertical positions" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMax, y_array ), VIPS_TYPE_ARRAY_INT ); } static void vips_max_init( VipsMax *max ) { max->size = 1; } /** * vips_max: (method) * @in: input #VipsImage * @out: (out): output pixel maximum * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @x: horizontal position of maximum * * @y: vertical position of maximum * * @size: number of maxima to find * * @out_array: return array of maximum values * * @x_array: corresponding horizontal positions * * @y_array: corresponding vertical positions * * This operation finds the maximum value in an image. * * By default it finds the single largest value. If @size is set >1, it will * find the @size largest values. It will stop searching early if has found * enough values. * Equal values will be sorted by y then x. * * It operates on all * bands of the input image: use vips_stats() if you need to find an * maximum for each band. * * For complex images, this operation finds the maximum modulus. * * You can read out the position of the maximum with @x and @y. You can read * out arrays of the values and positions of the top @size maxima with * @out_array, @x_array and @y_array. These values are returned sorted from * largest to smallest. * * If there are more than @size maxima, the maxima returned will be a random * selection of the maxima in the image. * * See also: vips_min(), vips_stats(). * * Returns: 0 on success, -1 on error */ int vips_max( VipsImage *in, double *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "max", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/measure.c000066400000000000000000000164161361153320700206200ustar00rootroot00000000000000/* im_measure.c * * Modified: * 19/8/94 JC * - now uses doubles for addressing * - could miss by up to h pixels previously! * - ANSIfied * - now issues warning if any deviations are greater than 20% of the * mean * 31/10/95 JC * - more careful about warning for averages <0, or averages near zero * - can get these cases with im_measure() of IM_TYPE_LAB images * 28/10/02 JC * - number bands from zero in error messages * 7/7/04 * - works on labq * 18/8/08 * - add gtkdoc comments * - remove deprecated im_extract() * 30/11/09 * - changes for im_extract() broke averaging * 9/11/11 * - redo as a class * 19/5/14 * - add auto-unpack */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "statistic.h" typedef struct _VipsMeasure { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int left; int top; int width; int height; int h; int v; } VipsMeasure; typedef VipsOperationClass VipsMeasureClass; G_DEFINE_TYPE( VipsMeasure, vips_measure, VIPS_TYPE_OPERATION ); static int vips_measure_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsMeasure *measure = (VipsMeasure *) object; VipsImage *ready; int bands; double pw; double ph; int j, i; int w, h; int b; if( VIPS_OBJECT_CLASS( vips_measure_parent_class )->build( object ) ) return( -1 ); if( vips_image_decode( measure->in, &ready ) ) return( -1 ); vips_object_local( measure, ready ); bands = vips_image_get_bands( ready ); g_object_set( object, "out", vips_image_new_matrix( bands, measure->h * measure->v ), NULL ); /* left/top/width/height default to the size of the image. */ if( !vips_object_argument_isset( object, "width" ) ) measure->width = vips_image_get_width( ready ); if( !vips_object_argument_isset( object, "height" ) ) measure->height = vips_image_get_height( ready ); /* How large are the patches we are to measure? */ pw = (double) measure->width / measure->h; ph = (double) measure->height / measure->v; /* The size of a patch. */ w = (pw + 1) / 2; h = (ph + 1) / 2; for( j = 0; j < measure->v; j++ ) { for( i = 0; i < measure->h; i++ ) { int x = measure->left + i * pw + (pw + 2) / 4; int y = measure->top + j * ph + (ph + 2) / 4; double avg, dev; for( b = 0; b < bands; b++ ) { VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); /* Extract and measure. */ if( vips_extract_area( ready, &t[0], x, y, w, h, NULL ) || vips_extract_band( t[0], &t[1], b, NULL ) || vips_avg( t[1], &avg, NULL ) || vips_deviate( t[1], &dev, NULL ) ) return( -1 ); /* Is the deviation large compared with the * average? This could be a clue that our * parameters have caused us to miss the * patch. Look out for averages <0, or * averages near zero (can get these if use * measure on IM_TYPE_LAB images). */ if( dev * 5 > VIPS_FABS( avg ) && VIPS_FABS( avg ) > 3 ) g_warning( _( "%s: " "patch %d x %d, " "band %d: " "avg = %g, sdev = %g" ), class->nickname, i, j, b, avg, dev ); *VIPS_MATRIX( measure->out, b, i + j * measure->h ) = avg; } } } return( 0 ); } static void vips_measure_class_init( VipsMeasureClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "measure"; object_class->description = _( "measure a set of patches on a color chart" ); object_class->build = vips_measure_build; VIPS_ARG_IMAGE( class, "in", 1, _( "in" ), _( "Image to measure" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMeasure, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output array of statistics" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMeasure, out ) ); VIPS_ARG_INT( class, "h", 5, _( "Across" ), _( "Number of patches across chart" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMeasure, h ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "v", 6, _( "Down" ), _( "Number of patches down chart" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMeasure, v ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "left", 10, _( "Left" ), _( "Left edge of extract area" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMeasure, left ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "top", 11, _( "Top" ), _( "Top edge of extract area" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMeasure, top ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "width", 12, _( "Width" ), _( "Width of extract area" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMeasure, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 13, _( "Height" ), _( "Height of extract area" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMeasure, height ), 1, VIPS_MAX_COORD, 1 ); } static void vips_measure_init( VipsMeasure *measure ) { } /** * vips_measure: (method) * @in: image to measure * @out: (out): array of measurements * @h: patches across chart * @v: patches down chart * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @left: area of image containing chart * * @top: area of image containing chart * * @width: area of image containing chart * * @height: area of image containing chart * * Analyse a grid of colour patches, producing an array of patch averages. * The mask has a row for each measured patch and a column for each image * band. The operations issues a warning if any patch has a deviation more * than 20% of * the mean. Only the central 50% of each patch is averaged. * * If the chart does not fill the whole image, use the optional @left, @top, * @width, @height arguments to indicate the * position of the chart. * * See also: vips_avg(), vips_deviate(). * * Returns: 0 on success, -1 on error */ int vips_measure( VipsImage *in, VipsImage **out, int h, int v, ... ) { va_list ap; int result; va_start( ap, v ); result = vips_call_split( "measure", ap, in, out, h, v ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/min.c000066400000000000000000000314271361153320700177410ustar00rootroot00000000000000/* find image minimum * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/05/1990 * Modified on : 18/03/1991, N. Dessipris * 23/11/92 JC * - correct result for more than 1 band now. * 23/7/93 JC * - im_incheck() added * 20/6/95 JC * - now returns double for value, like im_min() * 4/9/09 * - gtkdoc comment * 8/9/09 * - rewrite, from im_minpos() * 30/8/11 * - rewrite as a class * 5/9/11 * - abandon scan if we find minimum possible value * 24/2/12 * - avoid NaN in float/double/complex images * - allow +/- INFINITY as a result * 4/12/12 * - from min.c * - track and return bottom n values */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "statistic.h" /* Track min values and position here. We need one of these for each thread, * and one for the main value. * * We will generally only be tracking a small (<10?) number of values, so * simple arrays will be fastest. */ typedef struct _VipsValues { struct _VipsMin *min; /* The min number of values we track. */ int size; /* How many values we have in the arrays. */ int n; /* Position and values. We track mod**2 for complex and do a sqrt() at * the end. The three arrays are sorted by @value, largest first. */ double *value; int *x_pos; int *y_pos; } VipsValues; typedef struct _VipsMin { VipsStatistic parent_instance; /* Number of values we track. */ int size; /* The single min. Can be unset if, for example, the whole image is * NaN. */ double min; int x; int y; /* And the positions and values we found as VipsArrays for returning * to our caller. */ VipsArrayDouble *min_array; VipsArrayInt *x_array; VipsArrayInt *y_array; /* Global state here. */ VipsValues values; } VipsMin; static void vips_values_init( VipsValues *values, VipsMin *min ) { values->min = min; values->size = min->size; values->n = 0; values->value = VIPS_ARRAY( min, values->size, double ); values->x_pos = VIPS_ARRAY( min, values->size, int ); values->y_pos = VIPS_ARRAY( min, values->size, int ); } /* Add a value. Do nothing if the value is too large. */ static void vips_values_add( VipsValues *values, double v, int x, int y ) { int i, j; /* Find insertion point. */ for( i = 0; i < values->n; i++ ) { if( v > values->value[i] ) break; if( v == values->value[i] ) { if( y < values->y_pos[i] ) break; if( y == values->y_pos[i] ) if( x <= values->x_pos[i] ) break; } } /* Array full? */ if( values->n == values->size ) { if( i > 0 ) { /* We need to move stuff to the left to make space, * shunting the largest out. */ for( j = 0; j < i - 1; j++ ) { values->value[j] = values->value[j + 1]; values->x_pos[j] = values->x_pos[j + 1]; values->y_pos[j] = values->y_pos[j + 1]; } values->value[i - 1] = v; values->x_pos[i - 1] = x; values->y_pos[i - 1] = y; } } else { /* Not full, move stuff to the right into empty space. */ for( j = values->n; j > i; j-- ) { values->value[j] = values->value[j - 1]; values->x_pos[j] = values->x_pos[j - 1]; values->y_pos[j] = values->y_pos[j - 1]; } values->value[i] = v; values->x_pos[i] = x; values->y_pos[i] = y; values->n += 1; } } typedef VipsStatisticClass VipsMinClass; G_DEFINE_TYPE( VipsMin, vips_min, VIPS_TYPE_STATISTIC ); static int vips_min_build( VipsObject *object ) { VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsMin *min = (VipsMin *) object; VipsValues *values = &min->values; vips_values_init( values, min ); if( VIPS_OBJECT_CLASS( vips_min_parent_class )->build( object ) ) return( -1 ); /* For speed we accumulate min ** 2 for complex. */ if( vips_band_format_iscomplex( vips_image_get_format( statistic->in ) ) ) { int i; for( i = 0; i < values->n; i++ ) values->value[i] = sqrt( values->value[i] ); } /* Don't set if there's no value (eg. if every pixel is NaN). This * will trigger an error later. */ if( values->n > 0 ) { VipsArrayDouble *out_array; VipsArrayInt *x_array; VipsArrayInt *y_array; out_array = vips_array_double_new( values->value, values->n ); x_array = vips_array_int_new( values->x_pos, values->n ); y_array = vips_array_int_new( values->y_pos, values->n ); /* We have to set the props via g_object_set() to stop vips * complaining they are unset. */ g_object_set( min, "out", values->value[values->n - 1], "x", values->x_pos[values->n - 1], "y", values->y_pos[values->n - 1], "out_array", out_array, "x_array", x_array, "y_array", y_array, NULL ); vips_area_unref( VIPS_AREA( out_array ) ); vips_area_unref( VIPS_AREA( x_array ) ); vips_area_unref( VIPS_AREA( y_array ) ); } #ifdef DEBUG { int i; printf( "vips_min_build: %d values found\n", values->n ); for( i = 0; i < values->n; i++ ) printf( "%d) %g\t%d\t%d\n", i, values->value[i], values->x_pos[i], values->y_pos[i] ); } #endif /*DEBUG*/ return( 0 ); } /* New sequence value. Make a private VipsValues for this thread. */ static void * vips_min_start( VipsStatistic *statistic ) { VipsValues *values; values = g_new( VipsValues, 1 ); vips_values_init( values, (VipsMin *) statistic ); return( (void *) values ); } /* Merge the sequence value back into the per-call state. */ static int vips_min_stop( VipsStatistic *statistic, void *seq ) { VipsMin *min = (VipsMin *) statistic; VipsValues *values = (VipsValues *) seq; int i; for( i = 0; i < values->n; i++ ) vips_values_add( &min->values, values->value[i], values->x_pos[i], values->y_pos[i] ); g_free( values ); return( 0 ); } /* Real min with a lower bound. * * Add values to the buffer if they are less than the buffer maximum. If * the buffer isn't full, there is no maximum. * * Avoid a double test by splitting the loop into two phases: before and after * the buffer fills. * * Stop if our array fills with minval. */ #define LOOPU( TYPE, LOWER ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ for( ; i < sz; i++ ) { \ if( p[i] < m ) { \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ if( m <= LOWER ) { \ statistic->stop = TRUE; \ break; \ } \ } \ } \ } /* float/double min ... no limits, and we have to avoid NaN. * * NaN compares false to every float value, so we don't need to test for NaN * in the second loop. */ #define LOOPF( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) \ if( !VIPS_ISNAN( p[i] ) ) \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ for( ; i < sz; i++ ) \ if( p[i] < m ) { \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ } \ } /* As LOOPF, but complex. Track min(mod ** 2) to avoid sqrt(). */ #define LOOPC( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) { \ TYPE mod2 = p[0] * p[0] + p[1] * p[1]; \ \ if( !VIPS_ISNAN( mod2 ) ) \ vips_values_add( values, p[i], x + i / bands, y ); \ \ p += 2; \ } \ m = values->value[0]; \ \ for( ; i < sz; i++ ) { \ TYPE mod2 = p[0] * p[0] + p[1] * p[1]; \ \ if( mod2 < m ) { \ vips_values_add( values, mod2, x + i / bands, y ); \ m = values->value[0]; \ } \ \ p += 2; \ } \ } /* Loop over region, adding to seq. */ static int vips_min_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { VipsValues *values = (VipsValues *) seq; const int bands = vips_image_get_bands( statistic->in ); const int sz = n * bands; int i; switch( vips_image_get_format( statistic->in ) ) { case VIPS_FORMAT_UCHAR: LOOPU( unsigned char, 0 ); break; case VIPS_FORMAT_CHAR: LOOPU( signed char, SCHAR_MIN ); break; case VIPS_FORMAT_USHORT: LOOPU( unsigned short, 0 ); break; case VIPS_FORMAT_SHORT: LOOPU( signed short, SHRT_MIN ); break; case VIPS_FORMAT_UINT: LOOPU( unsigned int, 0 ); break; case VIPS_FORMAT_INT: LOOPU( signed int, INT_MIN ); break; case VIPS_FORMAT_FLOAT: LOOPF( float ); break; case VIPS_FORMAT_DOUBLE: LOOPF( double ); break; case VIPS_FORMAT_COMPLEX: LOOPC( float ); break; case VIPS_FORMAT_DPCOMPLEX: LOOPC( double ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_min_class_init( VipsMinClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "min"; object_class->description = _( "find image minimum" ); object_class->build = vips_min_build; sclass->start = vips_min_start; sclass->scan = vips_min_scan; sclass->stop = vips_min_stop; VIPS_ARG_DOUBLE( class, "out", 1, _( "Output" ), _( "Output value" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMin, min ), -INFINITY, INFINITY, 0.0 ); VIPS_ARG_INT( class, "x", 2, _( "x" ), _( "Horizontal position of minimum" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMin, x ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "y", 3, _( "y" ), _( "Vertical position of minimum" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMin, y ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "size", 4, _( "Size" ), _( "Number of minimum values to find" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMin, size ), 1, 1000000, 10 ); VIPS_ARG_BOXED( class, "out_array", 6, _( "Output array" ), _( "Array of output values" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMin, min_array ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_BOXED( class, "x_array", 7, _( "x array" ), _( "Array of horizontal positions" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMin, x_array ), VIPS_TYPE_ARRAY_INT ); VIPS_ARG_BOXED( class, "y_array", 8, _( "y array" ), _( "Array of vertical positions" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMin, y_array ), VIPS_TYPE_ARRAY_INT ); } static void vips_min_init( VipsMin *min ) { min->size = 1; } /** * vips_min: (method) * @in: input #VipsImage * @out: (out): output pixel minimum * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @x: horizontal position of minimum * * @y: vertical position of minimum * * @size: number of minima to find * * @out_array: return array of minimum values * * @x_array: corresponding horizontal positions * * @y_array: corresponding vertical positions * * This operation finds the minimum value in an image. * * By default it finds the single smallest value. If @size is set >1, it will * find the @size smallest values. It will stop searching early if has found * enough values. * Equal values will be sorted by y then x. * * It operates on all * bands of the input image: use vips_stats() if you need to find an * minimum for each band. * * For complex images, this operation finds the minimum modulus. * * You can read out the position of the minimum with @x and @y. You can read * out arrays of the values and positions of the top @size minima with * @out_array, @x_array and @y_array. * These values are returned sorted from * smallest to largest. * * If there are more than @size minima, the minima returned will be a random * selection of the minima in the image. * * See also: vips_min(), vips_stats(). * * Returns: 0 on success, -1 on error */ int vips_min( VipsImage *in, double *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "min", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/multiply.c000066400000000000000000000161701361153320700210330ustar00rootroot00000000000000/* im_multiply.c * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 29/4/93 JC * - now works for partial images * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 19/10/93 JC * - coredump-inducing bug in complex*complex fixed * 13/12/93 * - char * short bug fixed * 12/6/95 JC * - new im_add adapted to make new im_multiply * 27/9/04 * - updated for 1 band $op n band image -> n band image case * 8/12/06 * - add liboil support * 18/8/08 * - revise upcasting system * - add gtkdoc comments * 31/7/10 * - remove liboil * 7/11/11 * - redo as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" typedef VipsBinary VipsMultiply; typedef VipsBinaryClass VipsMultiplyClass; G_DEFINE_TYPE( VipsMultiply, vips_multiply, VIPS_TYPE_BINARY ); /* Complex multiply. */ #define CLOOP( TYPE ) { \ TYPE * restrict left = (TYPE *) in[0]; \ TYPE * restrict right = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ double x1 = left[0]; \ double y1 = left[1]; \ double x2 = right[0]; \ double y2 = right[1]; \ \ left += 2; \ right += 2; \ \ q[0] = x1 * x2 - y1 * y2; \ q[1] = x1 * y2 + x2 * y1; \ \ q += 2; \ } \ } /* Real multiply. */ #define RLOOP( IN, OUT ) { \ IN * restrict left = (IN *) in[0]; \ IN * restrict right = (IN *) in[1]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = left[x] * right[x]; \ } static void vips_multiply_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; /* Keep types here in sync with vips_bandfmt_multiply[] * below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: RLOOP( signed char, signed short ); break; case VIPS_FORMAT_UCHAR: RLOOP( unsigned char, signed short ); break; case VIPS_FORMAT_SHORT: RLOOP( signed short, signed int ); break; case VIPS_FORMAT_USHORT:RLOOP( unsigned short, signed int ); break; case VIPS_FORMAT_INT: RLOOP( signed int, signed int ); break; case VIPS_FORMAT_UINT: RLOOP( unsigned int, signed int ); break; case VIPS_FORMAT_FLOAT: RLOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: RLOOP( double, double ); break; case VIPS_FORMAT_COMPLEX: CLOOP( float ); break; case VIPS_FORMAT_DPCOMPLEX: CLOOP( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for multiplication. Sign and value preserving. Make sure * these match the case statement in multiply_buffer() above. */ static int vips_multiply_format_table[10] = { /* UC C US S UI I F X D DX */ US, S, UI, I, UI, I, F, X, D, DX }; static void vips_multiply_class_init( VipsMultiplyClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "multiply"; object_class->description = _( "multiply two images" ); aclass->process_line = vips_multiply_buffer; vips_arithmetic_set_format_table( aclass, vips_multiply_format_table ); } static void vips_multiply_init( VipsMultiply *multiply ) { } /** * vips_multiply: * @left: left-hand image * @right: right-hand image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * This operation calculates @left * @right and writes the result to @out. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), then the * following table is used to determine the output type: * * * VipsMultiply type promotion * * * * input type * output type * * * * * uchar * ushort * * * char * short * * * ushort * uint * * * short * int * * * uint * uint * * * int * int * * * float * float * * * double * double * * * complex * complex * * * double complex * double complex * * * *
* * In other words, the output type is just large enough to hold the whole * range of possible values. * * See also: vips_add(), vips_linear(). * * Returns: 0 on success, -1 on error */ int vips_multiply( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "multiply", ap, left, right, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/nary.c000066400000000000000000000044121361153320700201210ustar00rootroot00000000000000/* base class for all nary operations * * 18/3/14 * - from binary.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "nary.h" G_DEFINE_ABSTRACT_TYPE( VipsNary, vips_nary, VIPS_TYPE_ARITHMETIC ); static int vips_nary_build( VipsObject *object ) { VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsNary *nary = VIPS_NARY( object ); if( nary->in ) { arithmetic->in = nary->in->data; arithmetic->n = nary->in->n; } if( VIPS_OBJECT_CLASS( vips_nary_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_nary_class_init( VipsNaryClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "nary"; vobject_class->description = _( "nary operations" ); vobject_class->build = vips_nary_build; /* Create properties. */ VIPS_ARG_BOXED( class, "in", 0, _( "Input" ), _( "Array of input images" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsNary, in ), VIPS_TYPE_ARRAY_IMAGE ); } static void vips_nary_init( VipsNary *nary ) { /* Init our instance fields. */ } libvips-8.9.1/libvips/arithmetic/nary.h000066400000000000000000000035421361153320700201310ustar00rootroot00000000000000/* base class for all nary arithmetic operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_NARY_H #define VIPS_NARY_H #include #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "parithmetic.h" #define VIPS_TYPE_NARY (vips_nary_get_type()) #define VIPS_NARY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), VIPS_TYPE_NARY, VipsNary )) #define VIPS_NARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), VIPS_TYPE_NARY, VipsNaryClass)) #define VIPS_IS_NARY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_NARY )) #define VIPS_IS_NARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_NARY )) #define VIPS_NARY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), VIPS_TYPE_NARY, VipsNaryClass )) typedef struct _VipsNary { VipsArithmetic parent_instance; /* The input images. */ VipsArea *in; } VipsNary; typedef VipsArithmeticClass VipsNaryClass; GType vips_nary_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_NARY_H*/ libvips-8.9.1/libvips/arithmetic/parithmetic.h000066400000000000000000000066011361153320700214700ustar00rootroot00000000000000/* base class for all arithmetic operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PARITHMETIC_H #define VIPS_PARITHMETIC_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include #define VIPS_TYPE_ARITHMETIC (vips_arithmetic_get_type()) #define VIPS_ARITHMETIC( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_ARITHMETIC, VipsArithmetic )) #define VIPS_ARITHMETIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_ARITHMETIC, VipsArithmeticClass)) #define VIPS_IS_ARITHMETIC( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_ARITHMETIC )) #define VIPS_IS_ARITHMETIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_ARITHMETIC )) #define VIPS_ARITHMETIC_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_ARITHMETIC, VipsArithmeticClass )) struct _VipsArithmetic; typedef void (*VipsArithmeticProcessFn)( struct _VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ); typedef struct _VipsArithmetic { VipsOperation parent_instance; /* All have an output image. */ VipsImage *out; /* Array of input arguments, set these from a subclass. */ VipsImage **in; int n; /* The minimum number of output bands. For example, VipsLinear with a * three element constant must make at least a three-band output. */ int base_bands; /* The input images, ready for the operation. */ VipsImage **ready; /* Set this to override class->format_table. */ VipsBandFormat format; } VipsArithmetic; typedef struct _VipsArithmeticClass { VipsOperationClass parent_class; /* For each input format, what output format. Used for arithmetic * too, since we cast inputs to match. */ const VipsBandFormat *format_table; /* A vector program for each input type. */ VipsVector *vectors[VIPS_FORMAT_LAST]; /* ... and if we've set a program for this format. */ gboolean vector_program[VIPS_FORMAT_LAST]; /* The buffer processor. */ VipsArithmeticProcessFn process_line; } VipsArithmeticClass; GType vips_arithmetic_get_type( void ); void vips_arithmetic_set_format_table( VipsArithmeticClass *klass, const VipsBandFormat *format_table ); void vips_arithmetic_set_vector( VipsArithmeticClass *klass ); VipsVector *vips_arithmetic_get_vector( VipsArithmeticClass *klass, VipsBandFormat fmt ); void vips_arithmetic_compile( VipsArithmeticClass *klass ); VipsVector *vips_arithmetic_get_program( VipsArithmeticClass *klass, VipsBandFormat fmt ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PARITHMETIC_H*/ libvips-8.9.1/libvips/arithmetic/profile.c000066400000000000000000000175371361153320700206240ustar00rootroot00000000000000/* find image profiles * * 11/8/99 JC * - from im_cntlines() * 22/4/04 * - now outputs horizontal/vertical image * 9/11/10 * - any image format, any number of bands * - gtk-doc * 21/9/13 * - rewrite as a class * - output h and v profile in one pass * - partial * - output is int rather than ushort */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "statistic.h" struct _Edges; typedef struct { /* Horizontal array: Ys of top-most non-zero pixel. */ int *column_edges; /* Vertical array: Xs of left-most non-zero pixel. */ int *row_edges; } Edges; typedef struct _VipsProfile { VipsStatistic parent_instance; /* Main edge set. Threads accumulate to this. */ Edges *edges; /* Write profiles here. */ VipsImage *columns; VipsImage *rows; } VipsProfile; typedef VipsStatisticClass VipsProfileClass; G_DEFINE_TYPE( VipsProfile, vips_profile, VIPS_TYPE_STATISTIC ); static Edges * edges_new( VipsProfile *profile ) { VipsStatistic *statistic = VIPS_STATISTIC( profile ); VipsImage *in = statistic->ready; Edges *edges; int i; if( !(edges = VIPS_NEW( profile, Edges )) ) return( NULL ); edges->column_edges = VIPS_ARRAY( profile, in->Xsize * in->Bands, int ); edges->row_edges = VIPS_ARRAY( profile, in->Ysize * in->Bands, int ); if( !edges->column_edges || !edges->row_edges ) return( NULL ); for( i = 0; i < in->Xsize * in->Bands; i++ ) edges->column_edges[i] = in->Ysize; for( i = 0; i < in->Ysize * in->Bands; i++ ) edges->row_edges[i] = in->Xsize; return( edges ); } static int vips_profile_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsProfile *profile = (VipsProfile *) object; int y; if( statistic->in && vips_check_noncomplex( class->nickname, statistic->in ) ) return( -1 ); g_object_set( object, "columns", vips_image_new(), "rows", vips_image_new(), NULL ); /* main edge set made on first thread start. */ if( VIPS_OBJECT_CLASS( vips_profile_parent_class )->build( object ) ) return( -1 ); /* Make the output image. */ if( vips_image_pipelinev( profile->columns, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) || vips_image_pipelinev( profile->rows, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) ) return( -1 ); profile->columns->Ysize = 1; profile->columns->BandFmt = VIPS_FORMAT_INT; profile->columns->Type = VIPS_INTERPRETATION_HISTOGRAM; profile->rows->Xsize = 1; profile->rows->BandFmt = VIPS_FORMAT_INT; profile->rows->Type = VIPS_INTERPRETATION_HISTOGRAM; if( vips_image_write_line( profile->columns, 0, (VipsPel *) profile->edges->column_edges ) ) return( -1 ); for( y = 0; y < profile->rows->Ysize; y++ ) if( vips_image_write_line( profile->rows, y, (VipsPel *) profile->edges->row_edges + y * VIPS_IMAGE_SIZEOF_PEL( profile->rows ) ) ) return( -1 ); return( 0 ); } /* New edge accumulator. */ static void * vips_profile_start( VipsStatistic *statistic ) { VipsProfile *profile = (VipsProfile *) statistic; /* Make the main hist, if necessary. */ if( !profile->edges ) profile->edges = edges_new( profile ); return( (void *) edges_new( profile ) ); } /* We do this a lot. */ #define MINBANG( V, C ) ((V) = VIPS_MIN( V, C )) /* Add a line of pixels. */ #define ADD_PIXELS( TYPE ) { \ TYPE *p; \ int *column_edges; \ int *row_edges; \ \ p = (TYPE *) in; \ column_edges = edges->column_edges + x * nb; \ row_edges = edges->row_edges + y * nb; \ for( i = 0; i < n; i++ ) { \ for( j = 0; j < nb; j++ ) { \ if( p[j] ) { \ MINBANG( column_edges[j], y ); \ MINBANG( row_edges[j], x + i ); \ } \ } \ \ p += nb; \ column_edges += nb; \ } \ } /* Add a region to a profile. */ static int vips_profile_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { int nb = statistic->ready->Bands; Edges *edges = (Edges *) seq; int i, j; switch( statistic->ready->BandFmt ) { case VIPS_FORMAT_UCHAR: ADD_PIXELS( guchar ); break; case VIPS_FORMAT_CHAR: ADD_PIXELS( char ); break; case VIPS_FORMAT_USHORT: ADD_PIXELS( gushort ); break; case VIPS_FORMAT_SHORT: ADD_PIXELS( short ); break; case VIPS_FORMAT_UINT: ADD_PIXELS( guint ); break; case VIPS_FORMAT_INT: ADD_PIXELS( int ); break; case VIPS_FORMAT_FLOAT: ADD_PIXELS( float ); break; case VIPS_FORMAT_DOUBLE: ADD_PIXELS( double ); break; default: g_assert_not_reached(); } return( 0 ); } /* Join a sub-profile onto the main profile. */ static int vips_profile_stop( VipsStatistic *statistic, void *seq ) { VipsProfile *profile = (VipsProfile *) statistic; Edges *edges = profile->edges; Edges *sub_edges = (Edges *) seq; VipsImage *in = statistic->ready; int i; for( i = 0; i < in->Xsize * in->Bands; i++ ) MINBANG( edges->column_edges[i], sub_edges->column_edges[i] ); for( i = 0; i < in->Ysize * in->Bands; i++ ) MINBANG( edges->row_edges[i], sub_edges->row_edges[i] ); /* Blank out sub-profile to make sure we can't add it again. */ sub_edges->row_edges = NULL; sub_edges->column_edges = NULL; return( 0 ); } static void vips_profile_class_init( VipsProfileClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "profile"; object_class->description = _( "find image profiles" ); object_class->build = vips_profile_build; sclass->start = vips_profile_start; sclass->scan = vips_profile_scan; sclass->stop = vips_profile_stop; VIPS_ARG_IMAGE( class, "columns", 100, _( "Columns" ), _( "First non-zero pixel in column" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsProfile, columns ) ); VIPS_ARG_IMAGE( class, "rows", 101, _( "Rows" ), _( "First non-zero pixel in row" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsProfile, rows ) ); } static void vips_profile_init( VipsProfile *profile ) { } /** * vips_profile: (method) * @in: input image * @columns: (out): distances from top edge * @rows: (out): distances from left edge * @...: %NULL-terminated list of optional named arguments * * vips_profile() searches inward from the edge of @in and finds the * first non-zero pixel. Pixels in @columns have the distance from the top edge * to the first non-zero pixel in that column, @rows has the distance from the * left edge to the first non-zero pixel in that row. * * See also: vips_project(), vips_hist_find(). * * Returns: 0 on success, -1 on error */ int vips_profile( VipsImage *in, VipsImage **columns, VipsImage **rows, ... ) { va_list ap; int result; va_start( ap, rows ); result = vips_call_split( "profile", ap, in, columns, rows ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/project.c000066400000000000000000000212151361153320700206160ustar00rootroot00000000000000/* horizontal and vertical projection * * 20/4/06 * - from im_histgr() * 25/3/10 * - gtkdoc * - small celanups * 11/9/13 * - redo as a class, from vips_hist_find() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "statistic.h" struct _Project; typedef struct { /* Horizontal array: sums of all columns. */ void *column_sums; /* Vertical array: sums of all rows. */ void *row_sums; } Histogram; typedef struct _VipsProject { VipsStatistic parent_instance; /* Main image histogram. Subhists accumulate to this. */ Histogram *hist; /* Write sums here. */ VipsImage *columns; VipsImage *rows; } VipsProject; typedef VipsStatisticClass VipsProjectClass; G_DEFINE_TYPE( VipsProject, vips_project, VIPS_TYPE_STATISTIC ); /* Save a bit of typing. */ #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define D VIPS_FORMAT_DOUBLE #define N VIPS_FORMAT_NOTSET static const VipsBandFormat vips_project_format_table[10] = { /* UC C US S UI I F X D DX */ UI, I, UI, I, UI, I, D, N, D, N }; static Histogram * histogram_new( VipsProject *project ) { VipsStatistic *statistic = VIPS_STATISTIC( project ); VipsImage *in = statistic->ready; VipsBandFormat outfmt = vips_project_format_table[in->BandFmt]; int psize = vips_format_sizeof( outfmt ) * in->Bands; Histogram *hist; if( !(hist = VIPS_NEW( project, Histogram )) ) return( NULL ); hist->column_sums = VIPS_ARRAY( project, psize * in->Xsize, guchar ); hist->row_sums = VIPS_ARRAY( project, psize * in->Ysize, guchar ); if( !hist->column_sums || !hist->row_sums ) return( NULL ); memset( hist->column_sums, 0, psize * in->Xsize ); memset( hist->row_sums, 0, psize * in->Ysize ); return( hist ); } static int vips_project_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsProject *project = (VipsProject *) object; int y; if( statistic->in && vips_check_noncomplex( class->nickname, statistic->in ) ) return( -1 ); g_object_set( object, "columns", vips_image_new(), "rows", vips_image_new(), NULL ); /* main hist made on first thread start. */ if( VIPS_OBJECT_CLASS( vips_project_parent_class )->build( object ) ) return( -1 ); /* Make the output image. */ if( vips_image_pipelinev( project->columns, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) || vips_image_pipelinev( project->rows, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) ) return( -1 ); project->columns->Ysize = 1; project->columns->BandFmt = vips_project_format_table[statistic->ready->BandFmt]; project->columns->Type = VIPS_INTERPRETATION_HISTOGRAM; project->rows->Xsize = 1; project->rows->BandFmt = vips_project_format_table[statistic->ready->BandFmt]; project->rows->Type = VIPS_INTERPRETATION_HISTOGRAM; if( vips_image_write_line( project->columns, 0, (VipsPel *) project->hist->column_sums ) ) return( -1 ); for( y = 0; y < project->rows->Ysize; y++ ) if( vips_image_write_line( project->rows, y, (VipsPel *) project->hist->row_sums + y * VIPS_IMAGE_SIZEOF_PEL( project->rows ) ) ) return( -1 ); return( 0 ); } /* Build a sub-hist, based on the main hist. */ static void * vips_project_start( VipsStatistic *statistic ) { VipsProject *project = (VipsProject *) statistic; /* Make the main hist, if necessary. */ if( !project->hist ) project->hist = histogram_new( project ); return( (void *) histogram_new( project ) ); } /* Add a line of pixels. */ #define ADD_PIXELS( OUT, IN ) { \ OUT *row_sums = ((OUT *) hist->row_sums) + y * nb; \ OUT *column_sums; \ IN *p; \ \ column_sums = ((OUT *) hist->column_sums) + x * nb; \ p = (IN *) in; \ for( i = 0; i < n; i++ ) { \ for( j = 0; j < nb; j++ ) { \ column_sums[j] += p[j]; \ row_sums[j] += p[j]; \ } \ \ p += nb; \ column_sums += nb; \ } \ } /* Add a region to a project. */ static int vips_project_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { int nb = statistic->ready->Bands; Histogram *hist = (Histogram *) seq; int i, j; switch( statistic->ready->BandFmt ) { case VIPS_FORMAT_UCHAR: ADD_PIXELS( guint, guchar ); break; case VIPS_FORMAT_CHAR: ADD_PIXELS( int, char ); break; case VIPS_FORMAT_USHORT: ADD_PIXELS( guint, gushort ); break; case VIPS_FORMAT_SHORT: ADD_PIXELS( int, short ); break; case VIPS_FORMAT_UINT: ADD_PIXELS( guint, guint ); break; case VIPS_FORMAT_INT: ADD_PIXELS( int, int ); break; case VIPS_FORMAT_FLOAT: ADD_PIXELS( double, float ); break; case VIPS_FORMAT_DOUBLE: ADD_PIXELS( double, double ); break; default: g_assert_not_reached(); } return( 0 ); } #define ADD_BUFFER( TYPE, Q, P, N ) { \ TYPE *p = (TYPE *) (P); \ TYPE *q = (TYPE *) (Q); \ int n = (N); \ int i; \ \ for( i = 0; i < n; i++ ) \ q[i] += p[i]; \ } /* Join a sub-project onto the main project. */ static int vips_project_stop( VipsStatistic *statistic, void *seq ) { VipsProject *project = (VipsProject *) statistic; Histogram *hist = project->hist; Histogram *sub_hist = (Histogram *) seq; VipsImage *in = statistic->ready; VipsBandFormat outfmt = vips_project_format_table[in->BandFmt]; int hsz = in->Xsize * in->Bands; int vsz = in->Ysize * in->Bands; /* Add on sub-data. */ switch( outfmt ) { case VIPS_FORMAT_UINT: ADD_BUFFER( guint, hist->column_sums, sub_hist->column_sums, hsz ); ADD_BUFFER( guint, hist->row_sums, sub_hist->row_sums, vsz ); break; case VIPS_FORMAT_INT: ADD_BUFFER( int, hist->column_sums, sub_hist->column_sums, hsz ); ADD_BUFFER( int, hist->row_sums, sub_hist->row_sums, vsz ); break; case VIPS_FORMAT_DOUBLE: ADD_BUFFER( double, hist->column_sums, sub_hist->column_sums, hsz ); ADD_BUFFER( double, hist->row_sums, sub_hist->row_sums, vsz ); break; default: g_assert_not_reached(); } /* Blank out sub-project to make sure we can't add it again. */ sub_hist->column_sums = NULL; sub_hist->row_sums = NULL; return( 0 ); } static void vips_project_class_init( VipsProjectClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "project"; object_class->description = _( "find image projections" ); object_class->build = vips_project_build; sclass->start = vips_project_start; sclass->scan = vips_project_scan; sclass->stop = vips_project_stop; VIPS_ARG_IMAGE( class, "columns", 100, _( "Columns" ), _( "Sums of columns" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsProject, columns ) ); VIPS_ARG_IMAGE( class, "rows", 101, _( "Rows" ), _( "Sums of rows" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsProject, rows ) ); } static void vips_project_init( VipsProject *project ) { } /** * vips_project: (method) * @in: input image * @columns: (out): sums of columns * @rows: (out): sums of rows * @...: %NULL-terminated list of optional named arguments * * Find the horizontal and vertical projections of an image, ie. the sum * of every row of pixels, and the sum of every column of pixels. The output * format is uint, int or double, depending on the input format. * * Non-complex images only. * * See also: vips_hist_find(), vips_profile(). * * Returns: 0 on success, -1 on error */ int vips_project( VipsImage *in, VipsImage **columns, VipsImage **rows, ... ) { va_list ap; int result; va_start( ap, rows ); result = vips_call_split( "project", ap, in, columns, rows ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/relational.c000066400000000000000000000604631361153320700213120ustar00rootroot00000000000000/* relational.c --- various relational operations * * Modified: * 26/7/93 JC * - >,<,>=,<= tests now as (double) to prevent compiler warnings. Should * split into int/float cases really for speed. * 25/1/95 JC * - partialized * - updated * 7/2/95 JC * - oops! bug with doubles fixed * 3/7/98 JC * - vector versions added ... im_equal_vec(), im_lesseq_vec() etc * - small tidies * - should be a bit faster, lots of *q++ changed to q[x] * 10/3/03 JC * - reworked to remove nested #defines: a bit slower, but much smaller * - all except _vec forms now work on complex * 31/7/03 JC * - oops, relational_format was broken for some combinations * 23/9/09 * - gtkdoc * - use new im__arith_binary*() functions * - more meta-programming * 23/6/10 * - oops, moreconst and moreeqconst were the same * 4/11/11 * - redone as a class * 1/2/12 * - complex ==, != were broken * 16/7/12 * - im1 > im2, im1 >= im2 were broken * 17/9/14 * - im1 > im2, im1 >= im2 were still broken, but in a more subtle way */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "binary.h" #include "unaryconst.h" typedef struct _VipsRelational { VipsBinary parent_instance; VipsOperationRelational relational; } VipsRelational; typedef VipsBinaryClass VipsRelationalClass; G_DEFINE_TYPE( VipsRelational, vips_relational, VIPS_TYPE_BINARY ); #define RLOOP( TYPE, ROP ) { \ TYPE * restrict left = (TYPE *) in0; \ TYPE * restrict right = (TYPE *) in1; \ VipsPel * restrict q = (VipsPel *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = (left[x] ROP right[x]) ? 255 : 0; \ } #define CLOOP( TYPE, COP ) { \ TYPE * restrict left = (TYPE *) in0; \ TYPE * restrict right = (TYPE *) in1; \ VipsPel * restrict q = (VipsPel *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[x] = COP( left[0], left[1], right[0], right[1]) ? 255 : 0; \ \ left += 2; \ right += 2; \ } \ } #define SWITCH( R, C, ROP, COP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: R( unsigned char, ROP ); break; \ case VIPS_FORMAT_CHAR: R( signed char, ROP ); break; \ case VIPS_FORMAT_USHORT: R( unsigned short, ROP ); break; \ case VIPS_FORMAT_SHORT: R( signed short, ROP ); break; \ case VIPS_FORMAT_UINT: R( unsigned int, ROP ); break; \ case VIPS_FORMAT_INT: R( signed int, ROP ); break; \ case VIPS_FORMAT_FLOAT: R( float, ROP ); break; \ case VIPS_FORMAT_DOUBLE: R( double, ROP ); break;\ case VIPS_FORMAT_COMPLEX: C( float, COP ); break; \ case VIPS_FORMAT_DPCOMPLEX: C( double, COP ); break;\ \ default: \ g_assert_not_reached(); \ } #define CEQUAL( x1, y1, x2, y2 ) (x1 == x2 && y1 == y2) #define CNOTEQ( x1, y1, x2, y2 ) (x1 != x2 || y1 != y2) #define CLESS( x1, y1, x2, y2 ) (x1 * x1 + y1 * y1 < x2 * x2 + y2 * y2) #define CLESSEQ( x1, y1, x2, y2 ) (x1 * x1 + y1 * y1 <= x2 * x2 + y2 * y2) #define CMORE( x1, y1, x2, y2 ) (x1 * x1 + y1 * y1 > x2 * x2 + y2 * y2) #define CMOREEQ( x1, y1, x2, y2 ) (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) static void vips_relational_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsRelational *relational = (VipsRelational *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); VipsOperationRelational op; VipsPel *in0; VipsPel *in1; int x; in0 = in[0]; in1 = in[1]; op = relational->relational; if( op == VIPS_OPERATION_RELATIONAL_MORE ) { op = VIPS_OPERATION_RELATIONAL_LESS; VIPS_SWAP( VipsPel *, in0, in1 ); } if( op == VIPS_OPERATION_RELATIONAL_MOREEQ ) { op = VIPS_OPERATION_RELATIONAL_LESSEQ; VIPS_SWAP( VipsPel *, in0, in1 ); } switch( op ) { case VIPS_OPERATION_RELATIONAL_EQUAL: SWITCH( RLOOP, CLOOP, ==, CEQUAL ); break; case VIPS_OPERATION_RELATIONAL_NOTEQ: SWITCH( RLOOP, CLOOP, !=, CNOTEQ ); break; case VIPS_OPERATION_RELATIONAL_LESS: SWITCH( RLOOP, CLOOP, <, CLESS ); break; case VIPS_OPERATION_RELATIONAL_LESSEQ: SWITCH( RLOOP, CLOOP, <=, CLESSEQ ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_relational_format_table[10] = { /* UC C US S UI I F X D DX */ UC, UC, UC, UC, UC, UC, UC, UC, UC, UC }; static void vips_relational_class_init( VipsRelationalClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "relational"; object_class->description = _( "relational operation on two images" ); aclass->process_line = vips_relational_buffer; vips_arithmetic_set_format_table( aclass, vips_relational_format_table ); VIPS_ARG_ENUM( class, "relational", 200, _( "Operation" ), _( "relational to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRelational, relational ), VIPS_TYPE_OPERATION_RELATIONAL, VIPS_OPERATION_RELATIONAL_EQUAL ); } static void vips_relational_init( VipsRelational *relational ) { } static int vips_relationalv( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationRelational relational, va_list ap ) { return( vips_call_split( "relational", ap, left, right, out, relational ) ); } /** * vips_relational: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @relational: relational operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various relational operations on pairs of images. * * The output type is always uchar, with 0 for FALSE and 255 for TRUE. * * Less-than and greater-than for complex images compare the modulus. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic). * * To decide if pixels match exactly, that is have the same value in every * band, use vips_bandbool() after this operation to AND or OR image bands * together. * * See also: vips_boolean(), vips_bandbool(), vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_relational( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationRelational relational, ... ) { va_list ap; int result; va_start( ap, relational ); result = vips_relationalv( left, right, out, relational, ap ); va_end( ap ); return( result ); } /** * vips_equal: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_EQUAL on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_equal( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_EQUAL, ap ); va_end( ap ); return( result ); } /** * vips_notequal: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_NOTEQ on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_notequal( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_NOTEQ, ap ); va_end( ap ); return( result ); } /** * vips_more: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MORE on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_more( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_MORE, ap ); va_end( ap ); return( result ); } /** * vips_moreeq: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MOREEQ on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_moreeq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_MOREEQ, ap ); va_end( ap ); return( result ); } /** * vips_less: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESS on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_less( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_LESS, ap ); va_end( ap ); return( result ); } /** * vips_lesseq: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESSEQ on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_lesseq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_LESSEQ, ap ); va_end( ap ); return( result ); } typedef struct _VipsRelationalConst { VipsUnaryConst parent_instance; VipsOperationRelational relational; } VipsRelationalConst; typedef VipsUnaryConstClass VipsRelationalConstClass; G_DEFINE_TYPE( VipsRelationalConst, vips_relational_const, VIPS_TYPE_UNARY_CONST ); #define RLOOPCI( TYPE, OP ) { \ TYPE * restrict p = (TYPE *) in[0]; \ int * restrict c = uconst->c_int; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) \ out[i] = (p[i] OP c[b]) ? 255 : 0; \ } #define RLOOPCF( TYPE, OP ) { \ TYPE * restrict p = (TYPE *) in[0]; \ double * restrict c = uconst->c_double; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) \ out[i] = (p[i] OP c[b]) ? 255 : 0; \ } #define CLOOPC( TYPE, OP ) { \ TYPE * restrict p = (TYPE *) in[0]; \ \ for( i = 0, x = 0; x < width; x++ ) { \ double * restrict c = uconst->c_double; \ \ for( b = 0; b < bands; b++, i++ ) { \ out[i] = OP( p[0], p[1], c[0], c[1]) ? 255 : 0; \ \ p += 2; \ c += 2; \ } \ } \ } static void vips_relational_const_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsUnaryConst *uconst = (VipsUnaryConst *) arithmetic; VipsRelationalConst *rconst = (VipsRelationalConst *) arithmetic; VipsImage *im = arithmetic->ready[0]; int bands = im->Bands; gboolean is_int = uconst->is_int && vips_band_format_isint( im->BandFmt ); int i, x, b; switch( rconst->relational ) { case VIPS_OPERATION_RELATIONAL_EQUAL: if( is_int ) { SWITCH( RLOOPCI, CLOOPC, ==, CEQUAL ); } else { SWITCH( RLOOPCF, CLOOPC, ==, CEQUAL ); } break; case VIPS_OPERATION_RELATIONAL_NOTEQ: if( is_int ) { SWITCH( RLOOPCI, CLOOPC, !=, CNOTEQ ); } else { SWITCH( RLOOPCF, CLOOPC, !=, CNOTEQ ); } break; case VIPS_OPERATION_RELATIONAL_LESS: if( is_int ) { SWITCH( RLOOPCI, CLOOPC, <, CLESS ); } else { SWITCH( RLOOPCF, CLOOPC, <, CLESS ); } break; case VIPS_OPERATION_RELATIONAL_LESSEQ: if( is_int ) { SWITCH( RLOOPCI, CLOOPC, <=, CLESSEQ ); } else { SWITCH( RLOOPCF, CLOOPC, <=, CLESSEQ ); } break; case VIPS_OPERATION_RELATIONAL_MORE: if( is_int ) { SWITCH( RLOOPCI, CLOOPC, >, CMORE ); } else { SWITCH( RLOOPCF, CLOOPC, >, CMORE ); } break; case VIPS_OPERATION_RELATIONAL_MOREEQ: if( is_int ) { SWITCH( RLOOPCI, CLOOPC, >=, CMOREEQ ); } else { SWITCH( RLOOPCF, CLOOPC, >=, CMOREEQ ); } break; default: g_assert_not_reached(); } } static void vips_relational_const_class_init( VipsRelationalConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "relational_const"; object_class->description = _( "relational operations against a constant" ); aclass->process_line = vips_relational_const_buffer; vips_arithmetic_set_format_table( aclass, vips_relational_format_table ); VIPS_ARG_ENUM( class, "relational", 200, _( "Operation" ), _( "relational to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRelationalConst, relational ), VIPS_TYPE_OPERATION_RELATIONAL, VIPS_OPERATION_RELATIONAL_EQUAL ); } static void vips_relational_const_init( VipsRelationalConst *relational_const ) { } static int vips_relational_constv( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double *c, int n, va_list ap ) { VipsArea *area_c; double *array; int result; int i; area_c = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array = (double *) area_c->data; for( i = 0; i < n; i++ ) array[i] = c[i]; result = vips_call_split( "relational_const", ap, in, out, relational, area_c ); vips_area_unref( area_c ); return( result ); } /** * vips_relational_const: (method) * @in: input image * @out: (out): output image * @relational: relational operation to perform * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform various relational operations on an image and an array of * constants. * * The output type is always uchar, with 0 for FALSE and 255 for TRUE. * * If the array of constants has just one element, that constant is used for * all image bands. If the array has more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_boolean(), vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_relational_const( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, relational, c, n, ap ); va_end( ap ); return( result ); } /** * vips_equal_const: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_EQUAL on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_equal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_EQUAL, c, n, ap ); va_end( ap ); return( result ); } /** * vips_notequal_const: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_NOTEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_notequal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_NOTEQ, c, n, ap ); va_end( ap ); return( result ); } /** * vips_less_const: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESS on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_less_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_LESS, c, n, ap ); va_end( ap ); return( result ); } /** * vips_lesseq_const: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESSEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_lesseq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_LESSEQ, c, n, ap ); va_end( ap ); return( result ); } /** * vips_more_const: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MORE on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_more_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_MORE, c, n, ap ); va_end( ap ); return( result ); } /** * vips_moreeq_const: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MOREEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_moreeq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_MOREEQ, c, n, ap ); va_end( ap ); return( result ); } /** * vips_relational_const1: (method) * @in: input image * @out: (out): output image * @relational: relational operation to perform * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform various relational operations on an image and a constant. See * vips_relational_const(). * * See also: vips_boolean(), vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_relational_const1( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, relational, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_equal_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_EQUAL on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_equal_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_EQUAL, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_notequal_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_NOTEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_notequal_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_NOTEQ, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_less_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESS on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_less_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_LESS, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_lesseq_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESSEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_lesseq_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_LESSEQ, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_more_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MORE on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_more_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_MORE, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_moreeq_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MOREEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_moreeq_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_MOREEQ, &c, 1, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/remainder.c000066400000000000000000000276071361153320700211310ustar00rootroot00000000000000/* remainder.c * * 2/8/99 JC * - im_divide adapted to make im_remainder * 8/5/02 JC * - im_remainderconst added * - im_remainderconst_vec added * 27/9/04 * - updated for 1 band $op n band image -> n band image case * 26/2/07 * - oop, broken for _vec case :-( * 14/5/08 * - better /0 test * 27/8/08 * - revise upcasting system * - add gtkdoc comments * 23/6/10 * - constant ops clip to target range * 12/11/11 * - redone as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" #include "unaryconst.h" typedef VipsBinary VipsRemainder; typedef VipsBinaryClass VipsRemainderClass; G_DEFINE_TYPE( VipsRemainder, vips_remainder, VIPS_TYPE_BINARY ); static int vips_remainder_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBinary *binary = (VipsBinary *) object; if( binary->left && vips_check_noncomplex( class->nickname, binary->left ) ) return( -1 ); if( binary->right && vips_check_noncomplex( class->nickname, binary->right ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_remainder_parent_class )->build( object ) ) return( -1 ); return( 0 ); } /* Integer remainder-after-division. */ #define IREMAINDER( TYPE ) { \ TYPE * restrict p1 = (TYPE *) in[0]; \ TYPE * restrict p2 = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = p2[x] ? p1[x] % p2[x] : -1; \ } /* Float remainder-after-division. */ #define FREMAINDER( TYPE ) { \ TYPE * restrict p1 = (TYPE *) in[0]; \ TYPE * restrict p2 = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ double a = p1[x]; \ double b = p2[x]; \ \ q[x] = b ? a - b * VIPS_FLOOR (a / b) : -1; \ } \ } static void vips_remainder_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: IREMAINDER( signed char ); break; case VIPS_FORMAT_UCHAR: IREMAINDER( unsigned char ); break; case VIPS_FORMAT_SHORT: IREMAINDER( signed short ); break; case VIPS_FORMAT_USHORT:IREMAINDER( unsigned short ); break; case VIPS_FORMAT_INT: IREMAINDER( signed int ); break; case VIPS_FORMAT_UINT: IREMAINDER( unsigned int ); break; case VIPS_FORMAT_FLOAT: FREMAINDER( float ); break; case VIPS_FORMAT_DOUBLE:FREMAINDER( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for remainder. Keep in sync with remainder_buffer() above. */ static int vips_remainder_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, X, D, DX }; static void vips_remainder_class_init( VipsRemainderClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "remainder"; object_class->description = _( "remainder after integer division of two images" ); object_class->build = vips_remainder_build; aclass->process_line = vips_remainder_buffer; vips_arithmetic_set_format_table( aclass, vips_remainder_format_table ); } static void vips_remainder_init( VipsRemainder *remainder ) { } /** * vips_remainder: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * This operation calculates @left % @right (remainder after integer division) * and writes the result to @out. The images may have any * non-complex format. For float formats, vips_remainder() calculates @in1 - * @in2 * floor (@in1 / @in2). * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), and that format is the * result type. * * See also: vips_remainder_const(), vips_divide(), vips_round(). * * Returns: 0 on success, -1 on error */ int vips_remainder( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "remainder", ap, left, right, out ); va_end( ap ); return( result ); } typedef VipsUnaryConst VipsRemainderConst; typedef VipsUnaryConstClass VipsRemainderConstClass; G_DEFINE_TYPE( VipsRemainderConst, vips_remainder_const, VIPS_TYPE_UNARY_CONST ); static int vips_remainder_const_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsUnary *unary = (VipsUnary *) object; if( unary->in && vips_check_noncomplex( class->nickname, unary->in ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_remainder_const_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } /* Integer remainder-after-divide, per-band constant. */ #define IREMAINDERCONST( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int * restrict c = uconst->c_int; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) \ q[i] = p[i] % c[b]; \ } /* Float remainder-after-divide, per-band constant. */ #define FREMAINDERCONST( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int * restrict c = uconst->c_int; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) { \ double left = p[i]; \ double right = c[b]; \ \ q[i] = right ? \ left - right * floor( left / right ) : \ -1; \ } \ } static void vips_remainder_const_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsUnaryConst *uconst = (VipsUnaryConst *) arithmetic; VipsImage *im = arithmetic->ready[0]; int bands = im->Bands; int i, x, b; switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: IREMAINDERCONST( signed char ); break; case VIPS_FORMAT_UCHAR: IREMAINDERCONST( unsigned char ); break; case VIPS_FORMAT_SHORT: IREMAINDERCONST( signed short ); break; case VIPS_FORMAT_USHORT:IREMAINDERCONST( unsigned short ); break; case VIPS_FORMAT_INT: IREMAINDERCONST( signed int ); break; case VIPS_FORMAT_UINT: IREMAINDERCONST( unsigned int ); break; case VIPS_FORMAT_FLOAT: FREMAINDERCONST( float ); break; case VIPS_FORMAT_DOUBLE:FREMAINDERCONST( double ); break; default: g_assert_not_reached(); } } static void vips_remainder_const_class_init( VipsRemainderConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "remainder_const"; object_class->description = _( "remainder after integer division of an image " "and a constant" ); object_class->build = vips_remainder_const_build; aclass->process_line = vips_remainder_const_buffer; vips_arithmetic_set_format_table( aclass, vips_remainder_format_table ); } static void vips_remainder_const_init( VipsRemainderConst *remainder_const ) { } static int vips_remainder_constv( VipsImage *in, VipsImage **out, double *c, int n, va_list ap ) { VipsArea *area_c; double *array; int result; int i; area_c = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array = (double *) area_c->data; for( i = 0; i < n; i++ ) array[i] = c[i]; result = vips_call_split( "remainder_const", ap, in, out, area_c ); vips_area_unref( area_c ); return( result ); } /** * vips_remainder_const: (method) * @in: input image * @out: (out): output image * @c: (array length=n): array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * This operation calculates @in % @c (remainder after division by an * array of constants) * and writes the result to @out. * The image may have any * non-complex format. For float formats, vips_remainder_const() calculates * @in - @c * floor (@in / @c). * * If the array of constants has just one element, that constant is used for * all image bands. If the array has more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_remainder(), vips_divide(), vips_round(). * * Returns: 0 on success, -1 on error */ int vips_remainder_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_remainder_constv( in, out, c, n, ap ); va_end( ap ); return( result ); } /** * vips_remainder_const1: (method) * @in: input image * @out: (out): output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * This operation calculates @in % @c (remainder after division by a * constant) * and writes the result to @out. * The image may have any * non-complex format. For float formats, vips_remainder_const() calculates * @in - @c * floor (@in / @c). * * If the array of constants has just one element, that constant is used for * all image bands. If the array has more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_remainder(), vips_divide(), vips_round(). * * Returns: 0 on success, -1 on error */ int vips_remainder_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_remainder_constv( in, out, &c, 1, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/round.c000066400000000000000000000150371361153320700203040ustar00rootroot00000000000000/* round.c --- various rounding operations * * 20/6/02 JC * - adapted from im_abs() * 29/8/09 * - gtkdoc * - tiny cleanups * 19/9/09 * - im_ceil.c adapted to make round.c * 10/11/11 * - redone as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef struct _VipsRound { VipsUnary parent_instance; VipsOperationRound round; } VipsRound; typedef VipsUnaryClass VipsRoundClass; G_DEFINE_TYPE( VipsRound, vips_round, VIPS_TYPE_UNARY ); static int vips_round_build( VipsObject *object ) { VipsUnary *unary = (VipsUnary *) object; /* Is this one of the int types? Degenerate to vips_copy() if it * is. */ if( unary->in && vips_band_format_isint( unary->in->BandFmt ) ) return( vips_unary_copy( unary ) ); if( VIPS_OBJECT_CLASS( vips_round_parent_class )->build( object ) ) return( -1 ); return( 0 ); } #define LOOP( TYPE, OP ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = OP( p[x] ); \ } #define SWITCH( OP ) { \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_COMPLEX: \ case VIPS_FORMAT_FLOAT: LOOP( float, OP ); break; \ \ case VIPS_FORMAT_DPCOMPLEX: \ case VIPS_FORMAT_DOUBLE:LOOP( double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } \ } static void vips_round_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsRound *round = (VipsRound *) arithmetic; VipsImage *im = arithmetic->ready[0]; /* Complex just doubles the size. */ const int sz = width * im->Bands * (vips_band_format_iscomplex( im->BandFmt ) ? 2 : 1); int x; switch( round->round ) { case VIPS_OPERATION_ROUND_RINT: SWITCH( VIPS_RINT ); break; case VIPS_OPERATION_ROUND_CEIL: SWITCH( VIPS_CEIL ); break; case VIPS_OPERATION_ROUND_FLOOR: SWITCH( VIPS_FLOOR ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_round_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, X, D, DX }; static void vips_round_class_init( VipsRoundClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "round"; object_class->description = _( "perform a round function on an image" ); object_class->build = vips_round_build; aclass->process_line = vips_round_buffer; vips_arithmetic_set_format_table( aclass, vips_round_format_table ); VIPS_ARG_ENUM( class, "round", 200, _( "Round operation" ), _( "rounding operation to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRound, round ), VIPS_TYPE_OPERATION_ROUND, VIPS_OPERATION_ROUND_RINT ); } static void vips_round_init( VipsRound *round ) { } static int vips_roundv( VipsImage *in, VipsImage **out, VipsOperationRound round, va_list ap ) { return( vips_call_split( "round", ap, in, out, round ) ); } /** * vips_round: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @round: #VipsOperationRound rounding operation to perform * @...: %NULL-terminated list of optional named arguments * * Round to an integral value. * * Copy for integer types, round float and * complex types. * * The format of @out is always the same as @in, so you may wish to cast to an * integer format afterwards. * * See also: vips_cast() * * Returns: 0 on success, -1 on error */ int vips_round( VipsImage *in, VipsImage **out, VipsOperationRound round, ... ) { va_list ap; int result; va_start( ap, round ); result = vips_roundv( in, out, round, ap ); va_end( ap ); return( result ); } /** * vips_floor: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Round to an integral value with #VIPS_OPERATION_ROUND_FLOOR. See * vips_round(). * * Returns: 0 on success, -1 on error */ int vips_floor( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_roundv( in, out, VIPS_OPERATION_ROUND_FLOOR, ap ); va_end( ap ); return( result ); } /** * vips_ceil: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Round to an integral value with #VIPS_OPERATION_ROUND_CEIL. See * vips_round(). * * Returns: 0 on success, -1 on error */ int vips_ceil( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_roundv( in, out, VIPS_OPERATION_ROUND_CEIL, ap ); va_end( ap ); return( result ); } /** * vips_rint: (method) * @in: input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Round to an integral value with #VIPS_OPERATION_ROUND_RINT. See * vips_round(). * * Returns: 0 on success, -1 on error */ int vips_rint( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_roundv( in, out, VIPS_OPERATION_ROUND_RINT, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/sign.c000066400000000000000000000106521361153320700201130ustar00rootroot00000000000000/* im_sign.c * * 9/7/02 JC * - from im_cmulnorm * 9/9/09 * - gtkdoc, tidies * 6/11/11 * - redone as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef VipsUnary VipsSign; typedef VipsUnaryClass VipsSignClass; G_DEFINE_TYPE( VipsSign, vips_sign, VIPS_TYPE_UNARY ); #define CSIGN( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) { \ TYPE re = p[0]; \ TYPE im = p[1]; \ double fac = sqrt( re * re + im * im ); \ \ p += 2; \ \ if( fac == 0.0 ) { \ q[0] = 0.0; \ q[1] = 0.0; \ } \ else { \ q[0] = re / fac; \ q[1] = im / fac; \ } \ \ q += 2; \ } \ } #define SIGN( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ signed char * restrict q = (signed char *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) { \ TYPE v = p[x]; \ \ if( v > 0 ) \ q[x] = 1; \ else if( v == 0 ) \ q[x] = 0; \ else \ q[x] = -1; \ } \ } static void vips_sign_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsUnary *unary = VIPS_UNARY( arithmetic ); const int bands = vips_image_get_bands( unary->in ); int sz = width * bands; switch( vips_image_get_format( unary->in ) ) { case VIPS_FORMAT_UCHAR: SIGN( unsigned char ); break; case VIPS_FORMAT_CHAR: SIGN( signed char ); break; case VIPS_FORMAT_USHORT: SIGN( unsigned short ); break; case VIPS_FORMAT_SHORT: SIGN( signed short ); break; case VIPS_FORMAT_UINT: SIGN( unsigned int ); break; case VIPS_FORMAT_INT: SIGN( signed int ); break; case VIPS_FORMAT_FLOAT: SIGN( float ); break; case VIPS_FORMAT_DOUBLE: SIGN( double ); break; case VIPS_FORMAT_COMPLEX: CSIGN( float ); break; case VIPS_FORMAT_DPCOMPLEX: CSIGN( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_sign_format_table[10] = { /* UC C US S UI I F X D DX */ C, C, C, C, C, C, C, X, C, DX }; static void vips_sign_class_init( VipsSignClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "sign"; object_class->description = _( "unit vector of pixel" ); aclass->process_line = vips_sign_buffer; vips_arithmetic_set_format_table( aclass, vips_sign_format_table ); } static void vips_sign_init( VipsSign *sign ) { } /** * vips_sign: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Finds the unit vector in the direction of the pixel value. For non-complex * images, it returns a signed char image with values -1, 0, and 1 for negative, * zero and positive pixels. For complex images, it returns a * complex normalised to length 1. * * See also: vips_abs(). * * Returns: 0 on success, -1 on error */ int vips_sign( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "sign", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/statistic.c000066400000000000000000000105271361153320700211630ustar00rootroot00000000000000/* base class for all stats operations * * properties: * - one image in, single value or matrix out * - output depends on whole of input, ie. we have a sink * * 24/8/11 * - from im_avg.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "statistic.h" G_DEFINE_ABSTRACT_TYPE( VipsStatistic, vips_statistic, VIPS_TYPE_OPERATION ); static void * vips_statistic_scan_start( VipsImage *in, void *a, void *b ) { VipsStatistic *statistic = VIPS_STATISTIC( a ); VipsStatisticClass *class = VIPS_STATISTIC_GET_CLASS( statistic ); return( class->start( statistic ) ); } static int vips_statistic_scan( VipsRegion *region, void *seq, void *a, void *b, gboolean *stop ) { VipsStatistic *statistic = VIPS_STATISTIC( a ); VipsStatisticClass *class = VIPS_STATISTIC_GET_CLASS( statistic ); VipsRect *r = ®ion->valid; int lsk = VIPS_REGION_LSKIP( region ); int y; VipsPel *p; VIPS_DEBUG_MSG( "vips_statistic_scan: %d x %d @ %d x %d\n", r->width, r->height, r->left, r->top ); p = VIPS_REGION_ADDR( region, r->left, r->top ); for( y = 0; y < r->height; y++ ) { if( class->scan( statistic, seq, r->left, r->top + y, p, r->width ) ) return( -1 ); p += lsk; } /* If we've requested stop, pass the message on. */ if( statistic->stop ) *stop = TRUE; return( 0 ); } static int vips_statistic_scan_stop( void *seq, void *a, void *b ) { VipsStatistic *statistic = VIPS_STATISTIC( a ); VipsStatisticClass *class = VIPS_STATISTIC_GET_CLASS( statistic ); return( class->stop( statistic, seq ) ); } static int vips_statistic_build( VipsObject *object ) { VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsStatisticClass *sclass = VIPS_STATISTIC_GET_CLASS( statistic ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); #ifdef DEBUG printf( "vips_statistic_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_statistic_parent_class )->build( object ) ) return( -1 ); statistic->ready = statistic->in; if( vips_image_decode( statistic->ready, &t[0] ) ) return( -1 ); statistic->ready = t[0]; /* If there's a format table, cast the input. */ if( sclass->format_table ) { if( vips_cast( statistic->ready, &t[1], sclass->format_table[statistic->in->BandFmt], NULL ) ) return( -1 ); statistic->ready = t[1]; } if( vips_sink( statistic->ready, vips_statistic_scan_start, vips_statistic_scan, vips_statistic_scan_stop, statistic, NULL ) ) return( -1 ); return( 0 ); } static void vips_statistic_class_init( VipsStatisticClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "statistic"; vobject_class->description = _( "VIPS statistic operations" ); vobject_class->build = vips_statistic_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsStatistic, in ) ); } static void vips_statistic_init( VipsStatistic *statistic ) { } libvips-8.9.1/libvips/arithmetic/statistic.h000066400000000000000000000053221361153320700211650ustar00rootroot00000000000000/* base class for all stats operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_STATISTIC_H #define VIPS_STATISTIC_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_STATISTIC (vips_statistic_get_type()) #define VIPS_STATISTIC( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_STATISTIC, VipsStatistic )) #define VIPS_STATISTIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_STATISTIC, VipsStatisticClass)) #define VIPS_IS_STATISTIC( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_STATISTIC )) #define VIPS_IS_STATISTIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_STATISTIC )) #define VIPS_STATISTIC_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_STATISTIC, VipsStatisticClass )) typedef struct _VipsStatistic VipsStatistic; typedef struct _VipsStatisticClass VipsStatisticClass; typedef void *(*VipsStatisticStartFn)( VipsStatistic *statistic ); typedef int (*VipsStatisticScanFn)( VipsStatistic *statistic, void *seq, int x, int y, void *p, int n ); typedef int (*VipsStatisticStopFn)( VipsStatistic *statistic, void *seq ); struct _VipsStatistic { VipsOperation parent_instance; /* All have an input image. */ VipsImage *in; /* The input image cast and ready for processing. */ VipsImage *ready; /* Set this to stop computation early. */ gboolean stop; /* Client data for the subclass. */ void *a; void *b; }; struct _VipsStatisticClass { VipsOperationClass parent_class; /* Start/scan/stop, for vips_sink. */ VipsStatisticStartFn start; VipsStatisticScanFn scan; VipsStatisticStopFn stop; /* For each input format, what output format. If NULL, no casting. */ const VipsBandFormat *format_table; }; GType vips_statistic_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_STATISTIC_H*/ libvips-8.9.1/libvips/arithmetic/stats.c000066400000000000000000000255101361153320700203100ustar00rootroot00000000000000/* stats.c ... many image stats in a single pass * (C) Kirk Martinez 1993 23/4/93 J.Cupitt - adapted to partial images - special struct abandoned; now returns DOUBLEMASK. 1/7/93 JC - adapted for partial v2 - ANSIfied 27/7/93 JC - init of mask changed to use actual values, not IM_MAXDOUBLE and (-IM_MAXDOUBLE). These caused problems when assigned to floats. funny business with offset==42, yuk! 31/8/93 JC - forgot to init global max/min properly! sorry. 21/6/95 JC - still did not init max and min correctly --- now fixed for good * 13/1/05 * - use 64 bit arithmetic * 1/9/09 * - argh nope min/max was broken again for >1CPU in short pipelines on * some architectures * 7/9/09 * - rework based on new im__wrapscan() / im_max() ideas for a proper fix * - gtkdoc comment * 7/11/11 * - redone as a class * - track maxpos / minpos too */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "statistic.h" typedef struct _VipsStats { VipsStatistic parent_instance; VipsImage *out; gboolean set; /* FALSE means no value yet */ } VipsStats; typedef VipsStatisticClass VipsStatsClass; G_DEFINE_TYPE( VipsStats, vips_stats, VIPS_TYPE_STATISTIC ); /* Names for our columns. */ enum { COL_MIN = 0, COL_MAX = 1, COL_SUM = 2, COL_SUM2 = 3, COL_AVG = 4, COL_SD = 5, COL_XMIN = 6, COL_YMIN = 7, COL_XMAX = 8, COL_YMAX = 9, COL_LAST = 10 }; static int vips_stats_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsStats *stats = (VipsStats *) object; gint64 vals, pels; double *row0, *row; int b, y, i; if( vips_object_argument_isset( object, "in" ) ) { int bands = vips_image_get_bands( statistic->in ); if( vips_check_noncomplex( class->nickname, statistic->in ) ) return( -1 ); g_object_set( object, "out", vips_image_new_matrix( COL_LAST, bands + 1 ), NULL ); } if( VIPS_OBJECT_CLASS( vips_stats_parent_class )->build( object ) ) return( -1 ); pels = (gint64) vips_image_get_width( statistic->in ) * vips_image_get_height( statistic->in ); vals = pels * vips_image_get_bands( statistic->in ); row0 = VIPS_MATRIX( stats->out, 0, 0 ); row = VIPS_MATRIX( stats->out, 0, 1 ); for( i = 0; i < COL_LAST; i++ ) row0[i] = row[i]; for( b = 1; b < vips_image_get_bands( statistic->in ); b++ ) { row = VIPS_MATRIX( stats->out, 0, b + 1 ); if( row[COL_MIN] < row0[COL_MIN] ) { row0[COL_MIN] = row[COL_MIN]; row0[COL_XMIN] = row[COL_XMIN]; row0[COL_YMIN] = row[COL_YMIN]; } if( row[COL_MAX] > row0[COL_MAX] ) { row0[COL_MAX] = row[COL_MAX]; row0[COL_XMAX] = row[COL_XMAX]; row0[COL_YMAX] = row[COL_YMAX]; } row0[COL_SUM] += row[COL_SUM]; row0[COL_SUM2] += row[COL_SUM2]; } for( y = 1; y < vips_image_get_height( stats->out ); y++ ) { double *row = VIPS_MATRIX( stats->out, 0, y ); row[COL_AVG] = row[COL_SUM] / pels; row[COL_SD] = sqrt( VIPS_FABS( row[COL_SUM2] - (row[COL_SUM] * row[COL_SUM] / pels) ) / (pels - 1) ); } row0[COL_AVG] = row0[COL_SUM] / vals; row0[COL_SD] = sqrt( VIPS_FABS( row0[COL_SUM2] - (row0[COL_SUM] * row0[COL_SUM] / vals) ) / (vals - 1) ); return( 0 ); } /* Stop function. Add these little stats to the main set of stats. */ static int vips_stats_stop( VipsStatistic *statistic, void *seq ) { int bands = vips_image_get_bands( statistic->in ); VipsStats *global = (VipsStats *) statistic; VipsStats *local = (VipsStats *) seq; int b; if( local->set && !global->set ) { for( b = 0; b < bands; b++ ) { double *p = VIPS_MATRIX( local->out, 0, b + 1 ); double *q = VIPS_MATRIX( global->out, 0, b + 1 ); int i; for( i = 0; i < COL_LAST; i++ ) q[i] = p[i]; } global->set = TRUE; } else if( local->set && global->set ) { for( b = 0; b < bands; b++ ) { double *p = VIPS_MATRIX( local->out, 0, b + 1 ); double *q = VIPS_MATRIX( global->out, 0, b + 1 ); if( p[COL_MIN] < q[COL_MIN] ) { q[COL_MIN] = p[COL_MIN]; q[COL_XMIN] = p[COL_XMIN]; q[COL_YMIN] = p[COL_YMIN]; } if( p[COL_MAX] > q[COL_MAX] ) { q[COL_MAX] = p[COL_MAX]; q[COL_XMAX] = p[COL_XMAX]; q[COL_YMAX] = p[COL_YMAX]; } q[COL_SUM] += p[COL_SUM]; q[COL_SUM2] += p[COL_SUM2]; } } VIPS_FREEF( g_object_unref, local->out ); VIPS_FREEF( g_free, seq ); return( 0 ); } /* Start function: make a dummy local stats for the private use of this thread. */ static void * vips_stats_start( VipsStatistic *statistic ) { int bands = vips_image_get_bands( statistic->in ); VipsStats *stats; stats = g_new( VipsStats, 1 ); if( !(stats->out = vips_image_new_matrix( COL_LAST, bands + 1 )) ) { g_free( stats ); return( NULL ); } stats->set = FALSE; return( (void *) stats ); } /* We scan lines bands times to avoid repeating band loops. * Use temp variables of same type for min/max for faster comparisons. */ #define LOOP( TYPE ) { \ for( b = 0; b < bands; b++ ) { \ TYPE *p = ((TYPE *) in) + b; \ double *q = VIPS_MATRIX( local->out, 0, b + 1 ); \ TYPE small, big; \ double sum, sum2; \ int xmin, ymin; \ int xmax, ymax; \ \ if( local->set ) { \ small = q[COL_MIN]; \ big = q[COL_MAX]; \ sum = q[COL_SUM]; \ sum2 = q[COL_SUM2]; \ xmin = q[COL_XMIN]; \ ymin = q[COL_YMIN]; \ xmax = q[COL_XMAX]; \ ymax = q[COL_YMAX]; \ } \ else { \ small = p[0]; \ big = p[0]; \ sum = 0; \ sum2 = 0; \ xmin = x; \ ymin = y; \ xmax = x; \ ymax = y; \ } \ \ for( i = 0; i < n; i++ ) { \ TYPE value = *p; \ \ sum += value; \ sum2 += (double) value * (double) value; \ if( value > big ) { \ big = value; \ xmax = x + i; \ ymax = y; \ } \ else if( value < small ) { \ small = value; \ xmin = x + i; \ ymin = y; \ } \ \ p += bands; \ } \ \ q[COL_MIN] = small; \ q[COL_MAX] = big; \ q[COL_SUM] = sum; \ q[COL_SUM2] = sum2; \ q[COL_XMIN] = xmin; \ q[COL_YMIN] = ymin; \ q[COL_XMAX] = xmax; \ q[COL_YMAX] = ymax; \ } \ \ local->set = TRUE; \ } /* As above, but for float/double types where we have to avoid NaN. */ #define LOOPF( TYPE ) { \ for( b = 0; b < bands; b++ ) { \ TYPE *p = ((TYPE *) in) + b; \ double *q = VIPS_MATRIX( local->out, 0, b + 1 ); \ TYPE small, big; \ double sum, sum2; \ int xmin, ymin; \ int xmax, ymax; \ \ if( local->set ) { \ small = q[COL_MIN]; \ big = q[COL_MAX]; \ sum = q[COL_SUM]; \ sum2 = q[COL_SUM2]; \ xmin = q[COL_XMIN]; \ ymin = q[COL_YMIN]; \ xmax = q[COL_XMAX]; \ ymax = q[COL_YMAX]; \ } \ else { \ small = p[0]; \ big = p[0]; \ sum = 0; \ sum2 = 0; \ xmin = x; \ ymin = y; \ xmax = x; \ ymax = y; \ } \ \ for( i = 0; i < n; i++ ) { \ TYPE value = *p; \ \ sum += value; \ sum2 += (double) value * (double) value; \ if( value > big ) { \ big = value; \ xmax = x + i; \ ymax = y; \ } \ else if( value < small ) { \ small = value; \ xmin = x + i; \ ymin = y; \ } \ \ p += bands; \ } \ \ q[COL_MIN] = small; \ q[COL_MAX] = big; \ q[COL_SUM] = sum; \ q[COL_SUM2] = sum2; \ q[COL_XMIN] = xmin; \ q[COL_YMIN] = ymin; \ q[COL_XMAX] = xmax; \ q[COL_YMAX] = ymax; \ } \ \ local->set = TRUE; \ } /* Loop over region, accumulating a sum in *tmp. */ static int vips_stats_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { const int bands = vips_image_get_bands( statistic->in ); VipsStats *local = (VipsStats *) seq; int b, i; switch( vips_image_get_format( statistic->in ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOP( signed char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOP( signed short ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int ); break; case VIPS_FORMAT_FLOAT: LOOP( float ); break; case VIPS_FORMAT_DOUBLE: LOOP( double ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_stats_class_init( VipsStatsClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "stats"; object_class->description = _( "find many image stats" ); object_class->build = vips_stats_build; sclass->start = vips_stats_start; sclass->scan = vips_stats_scan; sclass->stop = vips_stats_stop; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output array of statistics" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsStats, out ) ); } static void vips_stats_init( VipsStats *stats ) { } /** * vips_stats: (method) * @in: image to scan * @out: (out): image of statistics * @...: %NULL-terminated list of optional named arguments * * Find many image statistics in a single pass through the data. @out is a * one-band #VIPS_FORMAT_DOUBLE image of at least 10 columns by n + 1 * (where n is number of bands in image @in) * rows. Columns are statistics, and are, in order: minimum, maximum, sum, * sum of squares, mean, standard deviation, x coordinate of minimum, y * coordinate of minimum, x coordinate of maximum, y coordinate of maximum. * Later versions of vips_stats() may add more columns. * * Row 0 has statistics for all * bands together, row 1 has stats for band 1, and so on. * * If there is more than one maxima or minima, one of them will be chosen at * random. * * See also: vips_avg(), vips_min(). * * Returns: 0 on success, -1 on error */ int vips_stats( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "stats", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/subtract.c000066400000000000000000000157521361153320700210100ustar00rootroot00000000000000/* Subtract two images * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 29/4/93 J.Cupitt * - now works for partial images * 1/7/93 JC * - adapted for partial v2 * 9/5/95 JC * - simplified: now just handles 10 cases (instead of 50), using * im_clip2*() to help * - now uses im_wrapmany() rather than im_generate() * 12/6/95 JC * - new im_add() adapted to make this * 31/5/96 JC * - what was this SWAP() stuff? failed for small - big! * 22/8/03 JC * - cast up more quickly to help accuracy * 27/9/04 * - updated for 1 band $op n band image -> n band image case * 8/12/06 * - add liboil support * 18/8/08 * - revise upcasting system * - add gtkdoc comments * - remove separate complex case, just double size * 31/7/10 * - remove liboil * 23/8/11 * - rewrite as a class from add.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" typedef VipsBinary VipsSubtract; typedef VipsBinaryClass VipsSubtractClass; G_DEFINE_TYPE( VipsSubtract, vips_subtract, VIPS_TYPE_BINARY ); #define LOOP( IN, OUT ) { \ IN * restrict left = (IN *) in[0]; \ IN * restrict right = (IN *) in[1]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = left[x] - right[x]; \ } static void vips_subtract_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; /* Complex just doubles the size. */ const int sz = width * vips_image_get_bands( im ) * (vips_band_format_iscomplex( vips_image_get_format( im ) ) ? 2 : 1); int x; /* Keep types here in sync with bandfmt_subtract[] * below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: LOOP( signed char, signed short ); break; case VIPS_FORMAT_UCHAR: LOOP( unsigned char, signed short ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, signed int ); break; case VIPS_FORMAT_USHORT:LOOP( unsigned short, signed int ); break; case VIPS_FORMAT_INT: LOOP( signed int, signed int ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, signed int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOP( double, double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for subtraction. Sign and value preserving. Make sure these * match the case statement in vips_subtract_buffer() above. */ static const VipsBandFormat vips_subtract_format_table[10] = { /* UC C US S UI I F X D DX */ S, S, I, I, I, I, F, X, D, DX }; static void vips_subtract_class_init( VipsSubtractClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "subtract"; object_class->description = _( "subtract two images" ); aclass->process_line = vips_subtract_buffer; vips_arithmetic_set_format_table( aclass, vips_subtract_format_table ); } static void vips_subtract_init( VipsSubtract *subtract ) { } /** * vips_subtract: * @in1: input image * @in2: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * This operation calculates @in1 - @in2 and writes the result to @out. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), then the * following table is used to determine the output type: * * * VipsSubtract type promotion * * * * input type * output type * * * * * uchar * short * * * char * short * * * ushort * int * * * short * int * * * uint * int * * * int * int * * * float * float * * * double * double * * * complex * complex * * * double complex * double complex * * * *
* * In other words, the output type is just large enough to hold the whole * range of possible values. * * See also: vips_add(), vips_linear(). * * Returns: 0 on success, -1 on error */ int vips_subtract( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "subtract", ap, left, right, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/sum.c000066400000000000000000000144641361153320700177640ustar00rootroot00000000000000/* sum an array of images * * 18/3/14 * - from add.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "nary.h" typedef VipsNary VipsSum; typedef VipsNaryClass VipsSumClass; G_DEFINE_TYPE( VipsSum, vips_sum, VIPS_TYPE_NARY ); #define LOOP( IN, OUT ) { \ IN ** restrict p = (IN **) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ OUT sum; \ \ sum = p[0][x]; \ for( i = 1; i < n; i++ ) \ sum += p[i][x]; \ q[x] = sum; \ } \ } static void sum_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; int n = arithmetic->n; /* Complex just doubles the size. */ const int sz = width * vips_image_get_bands( im ) * (vips_band_format_iscomplex( vips_image_get_format( im ) ) ? 2 : 1); int x; int i; /* Sum all input types. Keep types here in sync with * vips_sum_format_table[] below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, unsigned int ); break; case VIPS_FORMAT_CHAR: LOOP( signed char, signed int ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short, unsigned int ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, signed int ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int, signed int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOP( double, double ); break; default: g_assert_not_reached(); } } #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for addition. Sign and value preserving. Make sure these * match the case statement in sum_buffer() above. */ static const VipsBandFormat vips_sum_format_table[10] = { /* UC C US S UI I F X D DX */ UI, I, UI, I, UI, I, F, X, D, DX }; static void vips_sum_class_init( VipsSumClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "sum"; object_class->description = _( "sum an array of images" ); aclass->process_line = sum_buffer; vips_arithmetic_set_format_table( aclass, vips_sum_format_table ); } static void vips_sum_init( VipsSum *sum ) { } static int vips_sumv( VipsImage **in, VipsImage **out, int n, va_list ap ) { VipsArrayImage *array; int result; array = vips_array_image_new( in, n ); result = vips_call_split( "sum", ap, array, out ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } /** * vips_sum: * @in: (array length=n): array of input images * @out: (out): output image * @n: number of input images * @...: %NULL-terminated list of optional named arguments * * This operation sums all images in @in and writes the result to @out. * * If the images differ in size, the smaller images are enlarged to match the * largest by adding zero pixels along the bottom and right. * * If the number of bands differs, all but one of the images * must have one band. In this case, n-band images are formed from the * one-band images by joining n copies of the one-band images together, and then * the n-band images are operated upon. * * The input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), then the * following table is used to determine the output type: * * * VipsSum type promotion * * * * input type * output type * * * * * uchar * uint * * * char * int * * * ushort * uint * * * short * int * * * uint * uint * * * int * int * * * float * float * * * double * double * * * complex * complex * * * double complex * double complex * * * *
* * In other words, the output type is just large enough to hold the whole * range of possible values. * * See also: vips_add(). * * Returns: 0 on success, -1 on error */ int vips_sum( VipsImage **in, VipsImage **out, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_sumv( in, out, n, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/arithmetic/unary.c000066400000000000000000000054151361153320700203120ustar00rootroot00000000000000/* base class for all unary operations * * 30/10/11 * - from binary.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" G_DEFINE_ABSTRACT_TYPE( VipsUnary, vips_unary, VIPS_TYPE_ARITHMETIC ); static int vips_unary_build( VipsObject *object ) { VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsUnary *unary = VIPS_UNARY( object ); arithmetic->n = 1; arithmetic->in = (VipsImage **) vips_object_local_array( object, 1 ); arithmetic->in[0] = unary->in; if( arithmetic->in[0] ) g_object_ref( arithmetic->in[0] ); if( VIPS_OBJECT_CLASS( vips_unary_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_unary_class_init( VipsUnaryClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "unary"; vobject_class->description = _( "unary operations" ); vobject_class->build = vips_unary_build; /* Create properties. */ VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsUnary, in ) ); } static void vips_unary_init( VipsUnary *unary ) { /* Init our instance fields. */ } /* Call this before chaining up in _build() to make the operation fall back to * copy. */ int vips_unary_copy( VipsUnary *unary ) { VipsArithmetic *arithmetic = VIPS_ARITHMETIC( unary ); /* This isn't set by arith until build(), so we have to set * again here. * * Should arith set out in _init()? */ g_object_set( unary, "out", vips_image_new(), NULL ); return( vips_image_write( unary->in, arithmetic->out ) ); } libvips-8.9.1/libvips/arithmetic/unary.h000066400000000000000000000035611361153320700203170ustar00rootroot00000000000000/* base class for all unary arithmetic operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_UNARY_H #define VIPS_UNARY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "parithmetic.h" #define VIPS_TYPE_UNARY (vips_unary_get_type()) #define VIPS_UNARY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), VIPS_TYPE_UNARY, VipsUnary )) #define VIPS_UNARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), VIPS_TYPE_UNARY, VipsUnaryClass)) #define VIPS_IS_UNARY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_UNARY )) #define VIPS_IS_UNARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_UNARY )) #define VIPS_UNARY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), VIPS_TYPE_UNARY, VipsUnaryClass )) typedef struct _VipsUnary { VipsArithmetic parent_instance; VipsImage *in; } VipsUnary; typedef VipsArithmeticClass VipsUnaryClass; GType vips_unary_get_type( void ); int vips_unary_copy( VipsUnary *unary ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_UNARY_H*/ libvips-8.9.1/libvips/arithmetic/unaryconst.c000066400000000000000000000076351361153320700213670ustar00rootroot00000000000000/* an image plus a constant * * 11/11/11 * - from arith_binary_const * 21/8/19 * - revise to fix out of range comparisons */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unaryconst.h" G_DEFINE_ABSTRACT_TYPE( VipsUnaryConst, vips_unary_const, VIPS_TYPE_UNARY ); static int vips_unary_const_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsUnary *unary = (VipsUnary *) object; VipsUnaryConst *uconst = (VipsUnaryConst *) object; /* If we have a three-element vector we need to bandup the image to * match. */ uconst->n = 1; if( uconst->c ) uconst->n = VIPS_MAX( uconst->n, uconst->c->n ); if( unary->in ) uconst->n = VIPS_MAX( uconst->n, unary->in->Bands ); arithmetic->base_bands = uconst->n; if( unary->in && uconst->c ) { if( vips_check_vector( class->nickname, uconst->c->n, unary->in ) ) return( -1 ); } /* Some operations need int constants, for example boolean AND, SHIFT * etc. * * Some can use int constants as an optimisation, for example (x < * 12). It depends on the value though: obviously (x < 12.5) should * not use the int form. * * For complex images, we double the vector length and set the * imaginary part to 0. */ if( uconst->c ) { gboolean is_complex = vips_band_format_iscomplex( unary->in->BandFmt ); int step = is_complex ? 2 : 1; int n = step * uconst->n; double *c = (double *) uconst->c->data; int i; uconst->c_int = VIPS_ARRAY( object, n, int ); uconst->c_double = VIPS_ARRAY( object, n, double ); if( !uconst->c_int || !uconst->c_double ) return( -1 ); memset( uconst->c_int, 0, n * sizeof( int ) ); memset( uconst->c_double, 0, n * sizeof( double ) ); for( i = 0; i < n; i += step ) uconst->c_double[i] = c[VIPS_MIN( i / step, uconst->c->n - 1)]; for( i = 0; i < n; i += step ) uconst->c_int[i] = uconst->c_double[i]; uconst->is_int = TRUE; for( i = 0; i < n; i += step ) if( uconst->c_int[i] != uconst->c_double[i] ) { uconst->is_int = FALSE; break; } } if( VIPS_OBJECT_CLASS( vips_unary_const_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_unary_const_class_init( VipsUnaryConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "unary_const"; object_class->description = _( "unary operations with a constant" ); object_class->build = vips_unary_const_build; VIPS_ARG_BOXED( class, "c", 201, _( "c" ), _( "Array of constants" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsUnaryConst, c ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_unary_const_init( VipsUnaryConst *uconst ) { } libvips-8.9.1/libvips/arithmetic/unaryconst.h000066400000000000000000000043601361153320700213640ustar00rootroot00000000000000/* base class for all unaryconst arithmetic operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_UNARY_CONST_H #define VIPS_UNARY_CONST_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "unary.h" #define VIPS_TYPE_UNARY_CONST (vips_unary_const_get_type()) #define VIPS_UNARY_CONST( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_UNARY_CONST, VipsUnaryConst )) #define VIPS_UNARY_CONST_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_UNARY_CONST, VipsUnaryConstClass)) #define VIPS_IS_UNARY_CONST( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_UNARY_CONST )) #define VIPS_IS_UNARY_CONST_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_UNARY_CONST )) #define VIPS_UNARY_CONST_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_UNARY_CONST, VipsUnaryConstClass )) typedef struct _VipsUnaryConst { VipsUnary parent_instance; /* Our constants. */ VipsArea *c; /* Our constant expanded to match arith->ready in size. We need int * and double versions. * * is_int is TRUE if the two arrays are equal for every element. */ int n; int *c_int; double *c_double; gboolean is_int; } VipsUnaryConst; typedef struct _VipsUnaryConstClass { VipsUnaryClass parent_class; } VipsUnaryConstClass; GType vips_unary_const_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_UNARY_CONST_H*/ libvips-8.9.1/libvips/colour/000077500000000000000000000000001361153320700161555ustar00rootroot00000000000000libvips-8.9.1/libvips/colour/CMYK2XYZ.c000066400000000000000000000127521361153320700175700ustar00rootroot00000000000000/* Use lcms to move from CMYK to XYZ, if we can. This needs a working * vips_icc_import. * * 21/12/18 * - from scRGB2XYZ.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "profiles.h" #include "pcolour.h" #ifdef HAVE_LCMS2 typedef struct _VipsCMYK2XYZ { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipsCMYK2XYZ; typedef VipsColourCodeClass VipsCMYK2XYZClass; G_DEFINE_TYPE( VipsCMYK2XYZ, vips_CMYK2XYZ, VIPS_TYPE_OPERATION ); /* Our actual processing, as a VipsColourTransformFn. */ static int vips_CMYK2XYZ_process( VipsImage *in, VipsImage **out, ... ) { return( vips_icc_import( in, out, "embedded", TRUE, "pcs", VIPS_PCS_XYZ, NULL ) ); } static int vips_CMYK2XYZ_build( VipsObject *object ) { VipsCMYK2XYZ *CMYK2XYZ = (VipsCMYK2XYZ *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *out; if( VIPS_OBJECT_CLASS( vips_CMYK2XYZ_parent_class )->build( object ) ) return( -1 ); out = vips_image_new(); g_object_set( object, "out", out, NULL ); if( vips_copy( CMYK2XYZ->in, &t[0], NULL ) || vips__profile_set( t[0], "cmyk" ) || vips__colourspace_process_n( "CMYK2XYZ", t[0], &t[1], 4, vips_CMYK2XYZ_process ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } static void vips_CMYK2XYZ_class_init( VipsCMYK2XYZClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "CMYK2XYZ"; object_class->description = _( "transform CMYK to XYZ" ); object_class->build = vips_CMYK2XYZ_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCMYK2XYZ, in ) ); VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsCMYK2XYZ, out ) ); } static void vips_CMYK2XYZ_init( VipsCMYK2XYZ *CMYK2XYZ ) { } #else /*!HAVE_LCMS2*/ typedef VipsColourCode VipsCMYK2XYZ; typedef VipsColourCodeClass VipsCMYK2XYZClass; G_DEFINE_TYPE(VipsCMYK2XYZ, vips_CMYK2XYZ, VIPS_TYPE_COLOUR_CODE); void vips_CMYK2XYZ_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { unsigned char *p = (unsigned char *) in[0]; float *q = (float *) out; int i; for( i = 0; i < width; i++ ) { float c = p[0] / 255.0; float m = p[1] / 255.0; float y = p[2] / 255.0; float k = p[3] / 255.0; float r = 1.0 - (c * (1.0 - k) + k); float g = 1.0 - (m * (1.0 - k) + k); float b = 1.0 - (y * (1.0 - k) + k); q[0] = VIPS_D65_X0 * r; q[1] = VIPS_D65_Y0 * g; q[2] = VIPS_D65_Z0 * b; p += 4; q += 3; } } static void vips_CMYK2XYZ_class_init( VipsCMYK2XYZClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "CMYK2XYZ"; object_class->description = _( "transform CMYK to XYZ" ); colour_class->process_line = vips_CMYK2XYZ_line; } static void vips_CMYK2XYZ_init( VipsCMYK2XYZ *CMYK2XYZ ) { VipsColour *colour = VIPS_COLOUR( CMYK2XYZ ); VipsColourCode *code = VIPS_COLOUR_CODE( CMYK2XYZ ); colour->interpretation = VIPS_INTERPRETATION_XYZ; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 3; colour->input_bands = 4; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_UCHAR; code->input_interpretation = VIPS_INTERPRETATION_CMYK; } #endif /*HAVE_LCMS2*/ /** * vips_CMYK2XYZ: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Turn CMYK to XYZ. If the image has an embedded ICC profile this will be * used for the conversion. If there is no embedded profile, a generic * fallback profile will be used. * * Conversion is to D65 XYZ with relative intent. If you need more control * over the process, use vips_icc_import() instead. * * Returns: 0 on success, -1 on error */ int vips_CMYK2XYZ( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "CMYK2XYZ", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/HSV2sRGB.c000066400000000000000000000070421361153320700175640ustar00rootroot00000000000000/* to sRGB from HSV * * 9/6/15 * - from sRGB2HSV.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" #define SIXTH_OF_CHAR 42.5 typedef VipsColourCode VipsHSV2sRGB; typedef VipsColourCodeClass VipsHSV2sRGBClass; G_DEFINE_TYPE( VipsHSV2sRGB, vips_HSV2sRGB, VIPS_TYPE_COLOUR_CODE ); static void vips_HSV2sRGB_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { unsigned char *p = (unsigned char *) in[0]; unsigned char *q = (unsigned char *) out; int i; for( i = 0; i < width; i++ ) { float c, x, m; c = p[2] * p[1] / 255.0; x = c * (1 - VIPS_FABS( fmod( p[0] / SIXTH_OF_CHAR, 2 ) - 1 )); m = p[2] - c; if( p[0] < SIXTH_OF_CHAR ) { q[0] = c + m; q[1] = x + m; q[2] = 0 + m; } else if( p[0] < 2 * SIXTH_OF_CHAR ) { q[0] = x + m; q[1] = c + m; q[2] = 0 + m; } else if( p[0] < 3 * SIXTH_OF_CHAR ) { q[0] = 0 + m; q[1] = c + m; q[2] = x + m; } else if( p[0] < 4 * SIXTH_OF_CHAR ) { q[0] = 0 + m; q[1] = x + m; q[2] = c + m; } else if( p[0] < 5 * SIXTH_OF_CHAR ) { q[0] = x + m; q[1] = 0 + m; q[2] = c + m; } else { q[0] = c + m; q[1] = 0 + m; q[2] = x + m; } p += 3; q += 3; } } static void vips_HSV2sRGB_class_init( VipsHSV2sRGBClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "HSV2sRGB"; object_class->description = _( "transform HSV to sRGB" ); colour_class->process_line = vips_HSV2sRGB_line; } static void vips_HSV2sRGB_init( VipsHSV2sRGB *HSV2sRGB ) { VipsColour *colour = VIPS_COLOUR( HSV2sRGB ); VipsColourCode *code = VIPS_COLOUR_CODE( HSV2sRGB ); colour->interpretation = VIPS_INTERPRETATION_sRGB; colour->format = VIPS_FORMAT_UCHAR; colour->bands = 3; colour->input_bands = 3; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_UCHAR; code->input_interpretation = VIPS_INTERPRETATION_HSV; } /** * vips_HSV2sRGB: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert HSV to sRGB. * * HSV is a crude polar coordinate system for RGB images. It is provided for * compatibility with other image processing systems. See vips_Lab2LCh() for a * much better colour space. * * See also: vips_sRGB2HSV(). * * Returns: 0 on success, -1 on error. */ int vips_HSV2sRGB( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "HSV2sRGB", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/LCh2Lab.c000066400000000000000000000063521361153320700174760ustar00rootroot00000000000000/* im_LCh2Lab * * 15/11/94 JC * - error messages added * - memory leak fixed * 16/11/94 JC * - uses im_wrap_oneonebuf() now * 8/2/95 JC * - im_wrap v2 * 2/11/09 * - gtkdoc * 19/9/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsLCh2Lab; typedef VipsColourTransformClass VipsLCh2LabClass; G_DEFINE_TYPE( VipsLCh2Lab, vips_LCh2Lab, VIPS_TYPE_COLOUR_TRANSFORM ); /* Process a buffer of data. */ static void vips_LCh2Lab_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int x; for( x = 0; x < width; x++ ) { float L = p[0]; float C = p[1]; float h = p[2]; float a, b; p += 3; a = C * cos( VIPS_RAD( h ) ); b = C * sin( VIPS_RAD( h ) ); q[0] = L; q[1] = a; q[2] = b; q += 3; } } /** * vips_col_Ch2ab: * @C: Chroma * @h: Hue angle (degrees) * @a: return CIE a* value * @b: return CIE b* value * * Calculate ab from Ch, h in degrees. */ void vips_col_Ch2ab( float C, float h, float *a, float *b ) { float in[3]; float out[3]; float *x; /* could be anything, we don't use this value, but we must supply one * or static analyzers will complain. */ in[0] = 50.0; in[1] = C; in[2] = h; x = &in[0]; vips_LCh2Lab_line( NULL, (VipsPel *) out, (VipsPel **) &x, 1 ); *a = out[1]; *b = out[2]; } static void vips_LCh2Lab_class_init( VipsLCh2LabClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LCh2Lab"; object_class->description = _( "transform LCh to Lab" ); colour_class->process_line = vips_LCh2Lab_line; } static void vips_LCh2Lab_init( VipsLCh2Lab *LCh2Lab ) { VipsColour *colour = VIPS_COLOUR( LCh2Lab ); colour->interpretation = VIPS_INTERPRETATION_LAB; } /** * vips_LCh2Lab: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Turn LCh to Lab. * * Returns: 0 on success, -1 on error */ int vips_LCh2Lab( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LCh2Lab", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/LCh2UCS.c000066400000000000000000000117451361153320700174340ustar00rootroot00000000000000/* LCh2CMC * * Modified: * 2/11/09 * - gtkdoc * 19/9/12 * - redone as a class * 24/9/14 * - rechecked against original paper, seems OK */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsLCh2CMC; typedef VipsColourTransformClass VipsLCh2CMCClass; G_DEFINE_TYPE( VipsLCh2CMC, vips_LCh2CMC, VIPS_TYPE_COLOUR_TRANSFORM ); /* I ordered this paper from the library and it took ages. For reference, the * recommended short formula are: * * Lucs * = 1.744 * L, L < 16 * = (1/l) * (21.75 * ln(L) + 0.3838 * L - 38.54), otherwise * * Cucs = (l/c) * (0.162 * C + 10.92 * (ln(0.638 + 0.07216 * C)) + 4.907) * * hucs = h + D * f * where * D = k4 + k5 * P * | P | ** k6 * P = cos(k7 * h + k8) * f = (C ** 4 / (C ** 4 + 1900)) ** 0.5 * * h k4 k5 k6 k7 k8 * 0 - 49 133.87 -134.5 -0.924 1.727 340 * 49 - 110 11.78 -12.7 -0.218 2.120 333 * 110 - 269.5 13.87 10.93 0.140 1.000 -83 * 269.5 - 360 0.14 5.23 0.170 1.610 233 * * They have a much more complicated but slightly more accurate formula for * hucs. This one is pretty good, simple approximation. */ /** * vips_col_L2Lcmc: * @L: CIE L* * * Calculate Lcmc from L. * * Returns: Lcmc */ float vips_col_L2Lcmc( float L ) { float Lcmc; if( L < 16.0 ) Lcmc = 1.744 * L; else Lcmc = 21.75 * log( L ) + 0.3838 * L - 38.54; return( Lcmc ); } /** * vips_col_C2Ccmc: * @C: Chroma * * Calculate Ccmc from C. * * Returns: Ccmc. */ float vips_col_C2Ccmc( float C ) { float Ccmc; Ccmc = 0.162 * C + 10.92 * log( 0.638 + 0.07216 * C ) + 4.907; if( Ccmc < 0 ) Ccmc = 0; return( Ccmc ); } /** * vips_col_Ch2hcmc: * @C: Chroma * @h: Hue (degrees) * * Calculate hcmc from C and h. * * Returns: hcmc. */ float vips_col_Ch2hcmc( float C, float h ) { float P, D, f, g; float k4, k5, k6, k7, k8; float hcmc; if( h < 49.1 ) { k4 = 133.87; k5 = -134.5; k6 = -.924; k7 = 1.727; k8 = 340.0; } else if( h < 110.1 ) { k4 = 11.78; k5 = -12.7; k6 = -.218; k7 = 2.12; k8 = 333.0; } else if( h < 269.6 ) { k4 = 13.87; k5 = 10.93; k6 = 0.14; k7 = 1.0; k8 = -83.0; } else { k4 = .14; k5 = 5.23; k6 = .17; k7 = 1.61; k8 = 233.0; } P = cos( VIPS_RAD( k7 * h + k8 ) ); D = k4 + k5 * P * pow( VIPS_FABS( P ), k6 ); g = C * C * C * C; f = sqrt( g / (g + 1900.0) ); hcmc = h + D * f; return( hcmc ); } static void vips_LCh2CMC_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float *p = (float *) in[0]; float *q = (float *) out; int x; for( x = 0; x < width; x++ ) { float L = p[0]; float C = p[1]; float h = p[2]; p += 3; q[0] = vips_col_L2Lcmc( L ); q[1] = vips_col_C2Ccmc( C ); q[2] = vips_col_Ch2hcmc( C, h ); q += 3; } } static void vips_LCh2CMC_class_init( VipsLCh2CMCClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LCh2CMC"; object_class->description = _( "transform LCh to CMC" ); colour_class->process_line = vips_LCh2CMC_line; } static void vips_LCh2CMC_init( VipsLCh2CMC *LCh2CMC ) { VipsColour *colour = VIPS_COLOUR( LCh2CMC ); colour->interpretation = VIPS_INTERPRETATION_CMC; } /** * vips_LCh2CMC: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Turn LCh to CMC. * * The CMC colourspace is described in "Uniform Colour Space Based on the * CMC(l:c) Colour-difference Formula", M R Luo and B Rigg, Journal of the * Society of Dyers and Colourists, vol 102, 1986. Distances in this * colourspace approximate, within 10% or so, differences in the CMC(l:c) * colour difference formula. * * This operation generates CMC(1:1). For CMC(2:1), halve Lucs and double * Cucs. * * See also: vips_CMC2LCh(). * * Returns: 0 on success, -1 on error */ int vips_LCh2CMC( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LCh2CMC", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/Lab2LCh.c000066400000000000000000000066001361153320700174720ustar00rootroot00000000000000/* Turn Lab to LCh * * 2/11/09 * - gtkdoc * - cleanups * 18/9/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsLab2LCh; typedef VipsColourTransformClass VipsLab2LChClass; G_DEFINE_TYPE( VipsLab2LCh, vips_Lab2LCh, VIPS_TYPE_COLOUR_TRANSFORM ); /** * vips_col_ab2h: * @a: CIE a * @b: CIE b * * Returns: Hue (degrees) */ double vips_col_ab2h( double a, double b ) { double h; #ifdef HAVE_ATAN2 h = VIPS_DEG( atan2( b, a ) ); if( h < 0.0 ) h += 360; #else /* We have to get the right quadrant! */ if( a == 0 ) { if( b < 0.0 ) h = 270; else if( b == 0.0 ) h = 0; else h = 90; } else { double t = atan( b / a ); if( a > 0.0 ) if( b < 0.0 ) h = VIPS_DEG( t + VIPS_PI * 2.0 ); else h = VIPS_DEG( t ); else h = VIPS_DEG( t + VIPS_PI ); } #endif return( h ); } void vips_col_ab2Ch( float a, float b, float *C, float *h ) { #ifdef HAVE_ATAN2 *h = VIPS_DEG( atan2( b, a ) ); if( *h < 0.0 ) *h += 360; #else *h = vips_col_ab2h( a, b ); #endif #ifdef HAVE_HYPOT *C = hypot( a, b ); #else *C = sqrt( a * a + b * b ); #endif } static void vips_Lab2LCh_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int x; for( x = 0; x < width; x++ ) { float L = p[0]; float a = p[1]; float b = p[2]; float C, h; p += 3; C = sqrt( a * a + b * b ); h = vips_col_ab2h( a, b ); q[0] = L; q[1] = C; q[2] = h; q += 3; } } static void vips_Lab2LCh_class_init( VipsLab2LChClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "Lab2LCh"; object_class->description = _( "transform Lab to LCh" ); colour_class->process_line = vips_Lab2LCh_line; } static void vips_Lab2LCh_init( VipsLab2LCh *Lab2LCh ) { VipsColour *colour = VIPS_COLOUR( Lab2LCh ); colour->interpretation = VIPS_INTERPRETATION_LCH; } /** * vips_Lab2LCh: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Turn Lab to LCh. * * Returns: 0 on success, -1 on error */ int vips_Lab2LCh( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "Lab2LCh", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/Lab2LabQ.c000066400000000000000000000107171361153320700176470ustar00rootroot00000000000000/* Lab2LabQ: quantise FLOAT Lab image into 10 11 11 format * * 4 bytes per pel: l a b lsbs * this is an image wrapper which calls line-wise packing * Copyright K.Martinez 3/5/93 * Modified: * 7/6/93 JC * - adapted for partial v2 * 5/5/94 JC * - some nint->+0.5, for speed and to ease portability * - other nint->rint * - now inclues ! * 15/11/94 JC * - all nint(), rint() removed for speed * - now -128 rather than -127 for a, b * - checks input type properly * 16/11/94 JC * - uses new im_wrap_oneonebuf() * 22/5/95 JC * - changed L to scale by 10.24, not 10.23 * 11/7/95 JC * - now uses IM_RINT() for rounding * 4/9/97 JC * - L* = 100.0 now allowed * 5/11/00 JC * - go int earlier for speed up * 20/6/02 JC * - oops, were not clipping a/b range correctly * 1/11/09 * - gtkdoc * - cleanups * 20/9/12 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLab2LabQ; typedef VipsColourCodeClass VipsLab2LabQClass; G_DEFINE_TYPE( VipsLab2LabQ, vips_Lab2LabQ, VIPS_TYPE_COLOUR_CODE ); /* @(#) convert float Lab to packed Lab32 format 10 11 11 bits * works only on buffers, not IMAGEs * Copyright 1993 K.Martinez * Modified: 3/5/93, 16/6/93 */ static void vips_Lab2LabQ_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; VipsPel * restrict q = out; int i; for( i = 0; i < width; i++ ) { float fval; int lsbs; int intv; /* Scale L up to 10 bits. */ intv = VIPS_ROUND_UINT( 10.23 * p[0] ); intv = VIPS_CLIP( 0, intv, 1023 ); lsbs = (intv & 0x3) << 6; /* 00000011 -> 11000000 */ q[0] = intv >> 2; /* drop bot 2 bits and store */ fval = 8.0 * p[1]; /* do a */ intv = VIPS_RINT( fval ); intv = VIPS_CLIP( -1024, intv, 1023 ); lsbs |= (intv & 0x7) << 3; /* 00000111 -> 00111000 */ q[1] = intv >> 3; /* drop bot 3 bits & store */ fval = 8.0 * p[2]; /* do b */ intv = VIPS_RINT( fval ); intv = VIPS_CLIP( -1024, intv, 1023 ); lsbs |= (intv & 0x7); q[2] = intv >> 3; q[3] = lsbs; /* store lsb band */ p += 3; q += 4; } } void vips__Lab2LabQ_vec( VipsPel *out, float *in, int width ) { vips_Lab2LabQ_line( NULL, out, (VipsPel **) &in, width ); } static void vips_Lab2LabQ_class_init( VipsLab2LabQClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "Lab2LabQ"; object_class->description = _( "transform float Lab to LabQ coding" ); colour_class->process_line = vips_Lab2LabQ_line; } static void vips_Lab2LabQ_init( VipsLab2LabQ *Lab2LabQ ) { VipsColour *colour = VIPS_COLOUR( Lab2LabQ ); VipsColourCode *code = VIPS_COLOUR_CODE( Lab2LabQ ); colour->coding = VIPS_CODING_LABQ; colour->interpretation = VIPS_INTERPRETATION_LABQ; colour->format = VIPS_FORMAT_UCHAR; colour->input_bands = 3; colour->bands = 4; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_FLOAT; } /** * vips_Lab2LabQ: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert a Lab three-band float image to LabQ (#VIPS_CODING_LABQ). * * See also: vips_LabQ2Lab(). * * Returns: 0 on success, -1 on error. */ int vips_Lab2LabQ( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "Lab2LabQ", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/Lab2LabS.c000066400000000000000000000056011361153320700176450ustar00rootroot00000000000000/* Lab2LabS: quantise FLOAT Lab image into signed short format * * 12/12/02 JC * - from im_Lab2LabS * 1/11/09 * - gtkdoc * - cleanups * 20/9/12 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLab2LabS; typedef VipsColourCodeClass VipsLab2LabSClass; G_DEFINE_TYPE( VipsLab2LabS, vips_Lab2LabS, VIPS_TYPE_COLOUR_CODE ); static void vips_Lab2LabS_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; signed short * restrict q = (signed short *) out; int i; for( i = 0; i < width; i++ ) { q[0] = p[0] * (32767.0 / 100.0); q[1] = p[1] * (32768.0 / 128.0); q[2] = p[2] * (32768.0 / 128.0); q += 3; p += 3; } } static void vips_Lab2LabS_class_init( VipsLab2LabSClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "Lab2LabS"; object_class->description = _( "transform float Lab to signed short" ); colour_class->process_line = vips_Lab2LabS_line; } static void vips_Lab2LabS_init( VipsLab2LabS *Lab2LabS ) { VipsColour *colour = VIPS_COLOUR( Lab2LabS ); VipsColourCode *code = VIPS_COLOUR_CODE( Lab2LabS ); colour->interpretation = VIPS_INTERPRETATION_LABS; colour->format = VIPS_FORMAT_SHORT; colour->input_bands = 3; colour->bands = 3; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_FLOAT; } /** * vips_Lab2LabS: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Turn Lab to LabS, signed 16-bit int fixed point. * * See also: vips_LabQ2Lab(). * * Returns: 0 on success, -1 on error. */ int vips_Lab2LabS( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "Lab2LabS", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/Lab2XYZ.c000066400000000000000000000126651361153320700175260ustar00rootroot00000000000000/* Lab to XYZ. * * Modified: * 15/11/94 JC * - ANSIfied * - sets Type of output * - better error messages * 16/11/94 JC * - partialed * - in-line conversion * 8/2/95 JC * - new im_wrapone function * 2/11/09 * - gtkdoc * - cleanups * 18/9/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcolour.h" typedef struct _VipsLab2XYZ { VipsColourTransform parent_instance; /* The colour temperature -- default to D65. */ VipsArea *temp; /* Broken out as xyz. */ double X0; double Y0; double Z0; } VipsLab2XYZ; typedef VipsColourTransformClass VipsLab2XYZClass; G_DEFINE_TYPE( VipsLab2XYZ, vips_Lab2XYZ, VIPS_TYPE_COLOUR_TRANSFORM ); /* Process a buffer of data. */ static void vips_Lab2XYZ_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { VipsLab2XYZ *Lab2XYZ = (VipsLab2XYZ *) colour; float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int x; VIPS_DEBUG_MSG( "vips_Lab2XYZ_line: X0 = %g, Y0 = %g, Z0 = %g\n", Lab2XYZ->X0, Lab2XYZ->Y0, Lab2XYZ->Z0 ); for( x = 0; x < width; x++ ) { float L, a, b; float X, Y, Z; double cby, tmp; L = p[0]; a = p[1]; b = p[2]; p += 3; if( L < 8.0 ) { Y = (L * Lab2XYZ->Y0) / 903.3; cby = 7.787 * (Y / Lab2XYZ->Y0) + 16.0 / 116.0; } else { cby = (L + 16.0) / 116.0; Y = Lab2XYZ->Y0 * cby * cby * cby; } tmp = a / 500.0 + cby; if( tmp < 0.2069 ) X = Lab2XYZ->X0 * (tmp - 0.13793) / 7.787; else X = Lab2XYZ->X0 * tmp * tmp * tmp; tmp = cby - b / 200.0; if( tmp < 0.2069 ) Z = Lab2XYZ->Z0 * (tmp - 0.13793) / 7.787; else Z = Lab2XYZ->Z0 * tmp * tmp * tmp; /* Write. */ q[0] = X; q[1] = Y; q[2] = Z; q += 3; } } static int vips_Lab2XYZ_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsLab2XYZ *Lab2XYZ = (VipsLab2XYZ *) object; if( Lab2XYZ->temp ) { if( vips_check_vector_length( class->nickname, Lab2XYZ->temp->n, 3 ) ) return( -1 ); Lab2XYZ->X0 = ((double *) Lab2XYZ->temp->data)[0]; Lab2XYZ->Y0 = ((double *) Lab2XYZ->temp->data)[1]; Lab2XYZ->Z0 = ((double *) Lab2XYZ->temp->data)[2]; } if( VIPS_OBJECT_CLASS( vips_Lab2XYZ_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_Lab2XYZ_class_init( VipsLab2XYZClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "Lab2XYZ"; object_class->description = _( "transform CIELAB to XYZ" ); object_class->build = vips_Lab2XYZ_build; colour_class->process_line = vips_Lab2XYZ_line; VIPS_ARG_BOXED( class, "temp", 110, _( "Temperature" ), _( "Color temperature" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsLab2XYZ, temp ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_Lab2XYZ_init( VipsLab2XYZ *Lab2XYZ ) { VipsColour *colour = VIPS_COLOUR( Lab2XYZ ); Lab2XYZ->X0 = VIPS_D65_X0; Lab2XYZ->Y0 = VIPS_D65_Y0; Lab2XYZ->Z0 = VIPS_D65_Z0; colour->interpretation = VIPS_INTERPRETATION_XYZ; } /** * vips_Lab2XYZ: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @temp: #VipsArrayDouble, colour temperature * * Turn Lab to XYZ. The colour temperature defaults to D65, but can be * specified with @temp. * * Returns: 0 on success, -1 on error */ int vips_Lab2XYZ( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "Lab2XYZ", ap, in, out ); va_end( ap ); return( result ); } /** * vips_col_Lab2XYZ: * @L: Input CIE Lab value * @a: Input CIE Lab value * @b: Input CIE Lab value * @X: (out): Return CIE XYZ colour * @Y: (out): Return CIE XYZ colour * @Z: (out): Return CIE XYZ colour * * Calculate XYZ from Lab, D65. * * See also: vips_Lab2XYZ(). */ void vips_col_Lab2XYZ( float L, float a, float b, float *X, float *Y, float *Z ) { float in[3]; float *x; float out[3]; VipsLab2XYZ Lab2XYZ; in[0] = L; in[1] = a; in[2] = b; x = in; Lab2XYZ.X0 = VIPS_D65_X0; Lab2XYZ.Y0 = VIPS_D65_Y0; Lab2XYZ.Z0 = VIPS_D65_Z0; vips_Lab2XYZ_line( (VipsColour *) &Lab2XYZ, (VipsPel *) out, (VipsPel **) &x, 1 ); *X = out[0]; *Y = out[1]; *Z = out[2]; } libvips-8.9.1/libvips/colour/LabQ2Lab.c000066400000000000000000000077311361153320700176510ustar00rootroot00000000000000/* LabQ2Lab * * Copyright Kirk Martinez 2/5/1993 * * Modified: 16/6/93 * 7/6/93 JC * - adapted for partial v2 * 16/11/94 JC * - adapted to new im_wrap_oneonebuf() function. * 9/2/95 JC * - new im_wrapone function * 22/5/95 JC * - changed char to unsigned char for RS/6000 * - small tidies and speed-ups * 4/9/97 JC * - L* = 100.0 now handled correctly * 2/11/09 * - gtkdoc * 20/9/12 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLabQ2Lab; typedef VipsColourCodeClass VipsLabQ2LabClass; G_DEFINE_TYPE( VipsLabQ2Lab, vips_LabQ2Lab, VIPS_TYPE_COLOUR_CODE ); /* imb_LabQ2Lab: CONVERT n pels from packed 32bit Lab to float values * in a buffer * ARGS: VipsPel *inp pointer to first byte of Lab32 buffer * float *outbuf destination buffer * int n number of pels to process * (C) K.Martinez 2/5/93 */ static void vips_LabQ2Lab_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { signed char * restrict p = (signed char *) in[0]; float * restrict q = (float *) out; int l; int lsbs; /* for lsbs byte */ int i; /* counter */ /* Read input with a signed pointer to get signed ab easily. */ for( i = 0; i < width; i++ ) { /* Get extra bits. */ lsbs = ((unsigned char *) p)[3]; /* Build L. */ l = ((unsigned char *)p)[0]; l = (l << 2) | (lsbs >> 6); q[0] = (float) l * (100.0 / 1023.0); /* Build a. */ l = VIPS_LSHIFT_INT( p[1], 3) | ((lsbs >> 3) & 0x7); q[1] = (float) l * 0.125; /* And b. */ l = VIPS_LSHIFT_INT( p[2], 3) | (lsbs & 0x7); q[2] = (float) l * 0.125; p += 4; q += 3; } } void vips__LabQ2Lab_vec( float *out, VipsPel *in, int width ) { vips_LabQ2Lab_line( NULL, (VipsPel *) out, &in, width ); } static void vips_LabQ2Lab_class_init( VipsLabQ2LabClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LabQ2Lab"; object_class->description = _( "unpack a LabQ image to float Lab" ); colour_class->process_line = vips_LabQ2Lab_line; } static void vips_LabQ2Lab_init( VipsLabQ2Lab *LabQ2Lab ) { VipsColour *colour = VIPS_COLOUR( LabQ2Lab ); VipsColourCode *code = VIPS_COLOUR_CODE( LabQ2Lab ); colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_LAB; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 3; code->input_coding = VIPS_CODING_LABQ; } /** * vips_LabQ2Lab: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Unpack a LabQ (#VIPS_CODING_LABQ) image to a three-band float image. * * See also: vips_LabQ2Lab(), vips_LabQ2LabS(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_LabQ2Lab( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LabQ2Lab", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/LabQ2LabS.c000066400000000000000000000064261361153320700177740ustar00rootroot00000000000000/* LabQ2LabS * * 17/11/93 JC * - adapted from im_LabQ2LabS() * 16/11/94 JC * - uses new im_wrap_oneonebuf() fn * 9/2/95 JC * - new im_wrapone function * 2/11/09 * - gtkdoc * 21/9/12 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLabQ2LabS; typedef VipsColourCodeClass VipsLabQ2LabSClass; G_DEFINE_TYPE( VipsLabQ2LabS, vips_LabQ2LabS, VIPS_TYPE_COLOUR_CODE ); /* CONVERT n pels from packed 32bit Lab to signed short. */ static void vips_LabQ2LabS_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { unsigned char * restrict p = (unsigned char *) in[0]; signed short * restrict q = (signed short *) out; int i; unsigned char ext; signed short l, a, b; for( i = 0; i < width; i++ ) { /* Get most significant 8 bits of lab. */ l = p[0] << 7; a = p[1] << 8; b = p[2] << 8; /* Get x-tra bits. */ ext = p[3]; p += 4; /* Shift and mask in to lab. */ l |= (unsigned char) (ext & 0xc0) >> 1; a |= (ext & 0x38) << 2; b |= (ext & 0x7) << 5; /* Write! */ q[0] = l; q[1] = a; q[2] = b; q += 3; } } static void vips_LabQ2LabS_class_init( VipsLabQ2LabSClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LabQ2LabS"; object_class->description = _( "unpack a LabQ image to short Lab" ); colour_class->process_line = vips_LabQ2LabS_line; } static void vips_LabQ2LabS_init( VipsLabQ2LabS *LabQ2LabS ) { VipsColour *colour = VIPS_COLOUR( LabQ2LabS ); VipsColourCode *code = VIPS_COLOUR_CODE( LabQ2LabS ); colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_LABS; colour->format = VIPS_FORMAT_SHORT; colour->bands = 3; code->input_coding = VIPS_CODING_LABQ; } /** * vips_LabQ2LabS: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Unpack a LabQ (#VIPS_CODING_LABQ) image to a three-band short image. * * See also: vips_LabS2LabQ(), vips_LabQ2LabS(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_LabQ2LabS( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LabQ2LabS", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/LabQ2sRGB.c000066400000000000000000000301771361153320700177500ustar00rootroot00000000000000/* Turn Lab 32bit packed format into displayable rgb. Fast, but very * inaccurate: for display only! Note especially that this dithers and will * give different results on different runs. * * The XYZ <-> sRGB transform implemented is this one: * * http://en.wikipedia.org/wiki/SRGB * * 5/11/97 Steve Perry * - adapted from old ip code * 7/11/97 JC * - small tidies, added to VIPS * - LUT build split into separate function * 21/9/12 * - redone as a class * - sRGB only, support for other RGBs is now via lcms * 1/11/12 * - faster and more accurate sRGB <-> XYZ conversion * 6/11/12 * - added a 16-bit path * 11/12/12 * - spot NaN, Inf in XYZ2RGB, they break LUT indexing * - split sRGB <-> XYZ into sRGB <-> scRGB <-> XYZ so we can support * scRGB as a colourspace * 10/3/16 Lovell Fuller * - move vips_col_make_tables_LabQ2sRGB() to first pixel processing */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLabQ2sRGB; typedef VipsColourCodeClass VipsLabQ2sRGBClass; G_DEFINE_TYPE( VipsLabQ2sRGB, vips_LabQ2sRGB, VIPS_TYPE_COLOUR_CODE ); /* 8-bit linear -> sRGB lut. * * There's an extra element at the end to let us do a +1 for interpolation. */ int vips_Y2v_8[256 + 1]; /* 8-bit sRGB -> linear lut. */ float vips_v2Y_8[256]; /* 16-bit linear -> sRGB lut. * * There's an extra element at the end to let us do a +1 for interpolation. */ int vips_Y2v_16[65536 + 1]; /* 16-bit sRGB -> linear lut. */ float vips_v2Y_16[65536]; /* Do our own indexing of the arrays below to make sure we get efficient mults. */ #define INDEX( L, A, B ) (L + (A << 6) + (B << 12)) /* A set of LUTs for quick LabQ->sRGB transforms. */ static VipsPel vips_red[64 * 64 * 64]; static VipsPel vips_green[64 * 64 * 64]; static VipsPel vips_blue[64 * 64 * 64]; /* sRGB to scRGB. * * @range is eg. 256 for 8-bit data. */ static int vips_col_sRGB2scRGB( int range, float *lut, int r, int g, int b, float *R, float *G, float *B ) { int maxval = range - 1; int i; i = VIPS_CLIP( 0, r, maxval ); *R = lut[i]; i = VIPS_CLIP( 0, g, maxval ); *G = lut[i]; i = VIPS_CLIP( 0, b, maxval ); *B = lut[i]; return( 0 ); } /* Create the sRGB linear and unlinear luts. @range is eg. 256 for 8-bit luts. */ static void calcul_tables( int range, int *Y2v, float *v2Y ) { int i; for( i = 0; i < range; i++ ) { float f = (float) i / (range - 1); float v; if( f <= 0.0031308 ) v = 12.92 * f; else v = (1.0 + 0.055) * pow( f, 1.0 / 2.4 ) - 0.055; Y2v[i] = VIPS_RINT( (range - 1) * v ); } /* Copy the final element. This is used in the piecewise linear * interpolator below. */ Y2v[range] = Y2v[range - 1]; for( i = 0; i < range; i++ ) { float f = (float) i / (range - 1); if( f <= 0.04045 ) v2Y[i] = f / 12.92; else v2Y[i] = pow( (f + 0.055) / (1 + 0.055), 2.4 ); } } static void * calcul_tables_8( void *client ) { calcul_tables( 256, vips_Y2v_8, vips_v2Y_8 ); return( NULL ); } void vips_col_make_tables_RGB_8( void ) { static GOnce once = G_ONCE_INIT; VIPS_ONCE( &once, calcul_tables_8, NULL ); } int vips_col_sRGB2scRGB_8( int r, int g, int b, float *R, float *G, float *B ) { vips_col_make_tables_RGB_8(); return( vips_col_sRGB2scRGB( 256, vips_v2Y_8, r, g, b, R, G, B ) ); } static void * calcul_tables_16( void *client ) { calcul_tables( 65536, vips_Y2v_16, vips_v2Y_16 ); return( NULL ); } void vips_col_make_tables_RGB_16( void ) { static GOnce once = G_ONCE_INIT; VIPS_ONCE( &once, calcul_tables_16, NULL ); } int vips_col_sRGB2scRGB_16( int r, int g, int b, float *R, float *G, float *B ) { vips_col_make_tables_RGB_16(); return( vips_col_sRGB2scRGB( 65536, vips_v2Y_16, r, g, b, R, G, B ) ); } /* The matrix already includes the D65 channel weighting, so we just scale by * Y. */ #define SCALE (VIPS_D65_Y0) /* scRGB to XYZ. */ int vips_col_scRGB2XYZ( float R, float G, float B, float *X, float *Y, float *Z ) { *X = SCALE * 0.4124 * R + SCALE * 0.3576 * G + SCALE * 0.18056 * B; *Y = SCALE * 0.2126 * R + SCALE * 0.7152 * G + SCALE * 0.07220 * B; *Z = SCALE * 0.0193 * R + SCALE * 0.1192 * G + SCALE * 0.9505 * B; return( 0 ); } /* Turn XYZ into scRGB. */ int vips_col_XYZ2scRGB( float X, float Y, float Z, float *R, float *G, float *B ) { *R = 3.2406 / SCALE * X + -1.5372 / SCALE * Y + -0.4986 / SCALE * Z; *G = -0.9689 / SCALE * X + 1.8758 / SCALE * Y + 0.0415 / SCALE * Z; *B = 0.0557 / SCALE * X + -0.2040 / SCALE * Y + 1.0570 / SCALE * Z; return( 0 ); } /* Turn scRGB into sRGB. Return og=1 for out of gamut - rgb will contain an * approximation of the right colour. * * Return -1 for NaN, Inf etc. */ static int vips_col_scRGB2sRGB( int range, int *lut, float R, float G, float B, int *r, int *g, int *b, int *og_ret ) { int maxval = range - 1; int og; float Yf; int Yi; float v; /* XYZ can be Nan, Inf etc. Throw those values out, they will break * our clipping. * * Don't use isnormal(), it is false for 0.0 and for subnormal * numbers. */ if( VIPS_ISNAN( R ) || VIPS_ISINF( R ) || VIPS_ISNAN( G ) || VIPS_ISINF( G ) || VIPS_ISNAN( B ) || VIPS_ISINF( B ) ) { *r = 0; *g = 0; *b = 0; return( -1 ); } /* Clip range, set the out-of-gamut flag. */ #define CLIP( L, V, H ) { \ if( (V) < (L) ) { \ (V) = (L); \ og = 1; \ } \ if( (V) > (H) ) { \ (V) = (H); \ og = 1; \ } \ } /* Look up with a float index: interpolate between the nearest two * points. * * The +1 on the index is safe, see above. */ og = 0; Yf = R * maxval; CLIP( 0, Yf, maxval ); Yi = (int) Yf; v = lut[Yi] + (lut[Yi + 1] - lut[Yi]) * (Yf - Yi); *r = VIPS_RINT( v ); Yf = G * maxval; CLIP( 0, Yf, maxval ); Yi = (int) Yf; v = lut[Yi] + (lut[Yi + 1] - lut[Yi]) * (Yf - Yi); *g = VIPS_RINT( v ); Yf = B * maxval; CLIP( 0, Yf, maxval ); Yi = (int) Yf; v = lut[Yi] + (lut[Yi + 1] - lut[Yi]) * (Yf - Yi); *b = VIPS_RINT( v ); if( og_ret ) *og_ret = og; return( 0 ); } int vips_col_scRGB2sRGB_8( float R, float G, float B, int *r, int *g, int *b, int *og ) { vips_col_make_tables_RGB_8(); return( vips_col_scRGB2sRGB( 256, vips_Y2v_8, R, G, B, r, g, b, og ) ); } int vips_col_scRGB2sRGB_16( float R, float G, float B, int *r, int *g, int *b, int *og ) { vips_col_make_tables_RGB_16(); return( vips_col_scRGB2sRGB( 65536, vips_Y2v_16, R, G, B, r, g, b, og ) ); } /* Turn scRGB into BW. Return or=1 for out of gamut - g will contain an * approximation of the right colour. * * Return -1 for NaN, Inf etc. */ static int vips_col_scRGB2BW( int range, int *lut, float R, float G, float B, int *g, int *og_ret ) { int maxval = range - 1; float Y; int og; float Yf; int Yi; float v; /* The usual ratio. We do this in linear space before we gamma. */ Y = 0.2 * R + 0.7 * G + 0.1 * B; /* Y can be Nan, Inf etc. Throw those values out, they will break * our clipping. */ if( VIPS_ISNAN( Y ) || VIPS_ISINF( Y ) ) { *g = 0; return( -1 ); } /* Look up with a float index: interpolate between the nearest two * points. * * The +1 on the index is safe, see above. */ og = 0; Yf = Y * maxval; CLIP( 0, Yf, maxval ); Yi = (int) Yf; v = lut[Yi] + (lut[Yi + 1] - lut[Yi]) * (Yf - Yi); *g = VIPS_RINT( v ); if( og_ret ) *og_ret = og; return( 0 ); } int vips_col_scRGB2BW_16( float R, float G, float B, int *g, int *og ) { vips_col_make_tables_RGB_16(); return( vips_col_scRGB2BW( 65536, vips_Y2v_16, R, G, B, g, og ) ); } int vips_col_scRGB2BW_8( float R, float G, float B, int *g, int *og ) { vips_col_make_tables_RGB_8(); return( vips_col_scRGB2BW( 256, vips_Y2v_8, R, G, B, g, og ) ); } /* Build Lab->disp dither tables. */ static void * build_tables( void *client ) { int l, a, b; int t; for( l = 0; l < 64; l++ ) { for( a = 0; a < 64; a++ ) { for( b = 0; b < 64; b++ ) { /* Scale to lab space. */ float L = (l << 2) * (100.0/256.0); float A = (signed char) (a << 2); float B = (signed char) (b << 2); float X, Y, Z; float Rf, Gf, Bf; int rb, gb, bb; int oflow; vips_col_Lab2XYZ( L, A, B, &X, &Y, &Z ); vips_col_XYZ2scRGB( X, Y, Z, &Rf, &Gf, &Bf ); vips_col_scRGB2sRGB_8( Rf, Gf, Bf, &rb, &gb, &bb, &oflow ); t = INDEX( l, a, b ); vips_red[t] = rb; vips_green[t] = gb; vips_blue[t] = bb; } } } return( NULL ); } static void vips_col_make_tables_LabQ2sRGB( void ) { static GOnce once = G_ONCE_INIT; VIPS_ONCE( &once, build_tables, NULL ); } /* Process a buffer of data. */ static void vips_LabQ2sRGB_line( VipsColour *colour, VipsPel *q, VipsPel **in, int width ) { unsigned char *p = (unsigned char *) in[0]; int i, t; /* Current error. */ int le = 0; int ae = 0; int be = 0; vips_col_make_tables_LabQ2sRGB(); for( i = 0; i < width; i++ ) { /* Get colour, add in error from previous pixel. */ int L = p[0] + le; int A = (signed char) p[1] + ae; int B = (signed char) p[2] + be; p += 4; /* Look out for overflow. */ L = VIPS_MIN( 255, L ); A = VIPS_MIN( 127, A ); B = VIPS_MIN( 127, B ); /* Find new quant error. This will always be +ve. */ le = L & 3; ae = A & 3; be = B & 3; /* Scale to 0-63. */ L = (L >> 2) & 63; A = (A >> 2) & 63; B = (B >> 2) & 63; /* Convert to RGB. */ t = INDEX( L, A, B ); q[0] = vips_red[t]; q[1] = vips_green[t]; q[2] = vips_blue[t]; q += 3; } } static void vips_LabQ2sRGB_class_init( VipsLabQ2sRGBClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LabQ2sRGB"; object_class->description = _( "convert a LabQ image to sRGB" ); colour_class->process_line = vips_LabQ2sRGB_line; } static void vips_LabQ2sRGB_init( VipsLabQ2sRGB *LabQ2sRGB ) { VipsColour *colour = VIPS_COLOUR( LabQ2sRGB ); VipsColourCode *code = VIPS_COLOUR_CODE( LabQ2sRGB ); colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_sRGB; colour->format = VIPS_FORMAT_UCHAR; colour->bands = 3; code->input_coding = VIPS_CODING_LABQ; } /** * vips_LabQ2sRGB: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Unpack a LabQ (#VIPS_CODING_LABQ) image to a three-band short image. * * See also: vips_LabS2LabQ(), vips_LabQ2sRGB(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_LabQ2sRGB( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LabQ2sRGB", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/LabS2Lab.c000066400000000000000000000055321361153320700176500ustar00rootroot00000000000000/* LabS2Lab() * * 12/12/02 JC * - adapted from im_LabS2LabQ() * 2/11/09 * - gtkdoc, cleanup */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLabS2Lab; typedef VipsColourCodeClass VipsLabS2LabClass; G_DEFINE_TYPE( VipsLabS2Lab, vips_LabS2Lab, VIPS_TYPE_COLOUR_CODE ); /* Convert n pels from signed short to Lab. */ static void vips_LabS2Lab_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { signed short *p = (signed short *) in[0]; float *q = (float *) out; int i; for( i = 0; i < width; i++ ) { q[0] = p[0] / (32767.0 / 100.0); q[1] = p[1] / (32768.0 / 128.0); q[2] = p[2] / (32768.0 / 128.0); p += 3; q += 3; } } static void vips_LabS2Lab_class_init( VipsLabS2LabClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LabS2Lab"; object_class->description = _( "transform signed short Lab to float" ); colour_class->process_line = vips_LabS2Lab_line; } static void vips_LabS2Lab_init( VipsLabS2Lab *LabS2Lab ) { VipsColour *colour = VIPS_COLOUR( LabS2Lab ); VipsColourCode *code = VIPS_COLOUR_CODE( LabS2Lab ); colour->interpretation = VIPS_INTERPRETATION_LAB; colour->format = VIPS_FORMAT_FLOAT; colour->input_bands = 3; colour->bands = 3; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_SHORT; } /** * vips_LabS2Lab: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert a LabS three-band signed short image to a three-band float image. * * See also: vips_LabS2Lab(). * * Returns: 0 on success, -1 on error. */ int vips_LabS2Lab( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LabS2Lab", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/LabS2LabQ.c000066400000000000000000000072251361153320700177720ustar00rootroot00000000000000/* LabS2LabQ() * * 17/11/93 JC * - adapted from im_LabS2LabQ() * 16/11/94 JC * - adapted to new im_wrap_oneonebuf() function * 15/6/95 JC * - oops! rounding was broken * 6/6/95 JC * - added round-to-nearest * - somewhat slower ... * 21/12/99 JC * - a/b ==0 rounding was broken * 2/11/09 * - gtkdoc, cleanup * 21/9/12 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLabS2LabQ; typedef VipsColourCodeClass VipsLabS2LabQClass; G_DEFINE_TYPE( VipsLabS2LabQ, vips_LabS2LabQ, VIPS_TYPE_COLOUR_CODE ); /* Convert n pels from signed short to IM_CODING_LABQ. */ static void vips_LabS2LabQ_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { signed short *p = (signed short *) in[0]; unsigned char *q = (unsigned char *) out; int i; for( i = 0; i < width; i++ ) { int l, a, b; unsigned char ext; /* Get LAB, rounding to 10, 11, 11. */ l = p[0] + 16; l = VIPS_CLIP( 0, l, 32767 ); l >>= 5; /* Make sure we round -ves in the right direction! */ a = p[1]; if( a >= 0 ) a += 16; else a -= 16; a = VIPS_CLIP( -32768, a, 32767 ); a >>= 5; b = p[2]; if( b >= 0 ) b += 16; else b -= 16; b = VIPS_CLIP( -32768, b, 32767 ); b >>= 5; p += 3; /* Extract top 8 bits. */ q[0] = l >> 2; q[1] = a >> 3; q[2] = b >> 3; /* Form extension byte. */ ext = (l << 6) & 0xc0; ext |= (a << 3) & 0x38; ext |= b & 0x7; q[3] = ext; q += 4; } } static void vips_LabS2LabQ_class_init( VipsLabS2LabQClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LabS2LabQ"; object_class->description = _( "transform short Lab to LabQ coding" ); colour_class->process_line = vips_LabS2LabQ_line; } static void vips_LabS2LabQ_init( VipsLabS2LabQ *LabS2LabQ ) { VipsColour *colour = VIPS_COLOUR( LabS2LabQ ); VipsColourCode *code = VIPS_COLOUR_CODE( LabS2LabQ ); colour->coding = VIPS_CODING_LABQ; colour->interpretation = VIPS_INTERPRETATION_LABQ; colour->format = VIPS_FORMAT_UCHAR; colour->input_bands = 3; colour->bands = 4; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_SHORT; } /** * vips_LabS2LabQ: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert a LabS three-band signed short image to LabQ * * See also: vips_LabQ2LabS(). * * Returns: 0 on success, -1 on error. */ int vips_LabS2LabQ( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LabS2LabQ", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/Makefile.am000066400000000000000000000013541361153320700202140ustar00rootroot00000000000000noinst_LTLIBRARIES = libcolour.la SUBDIRS = profiles libcolour_la_SOURCES = \ profiles.c \ profiles.h \ profile_load.c \ colour.c \ pcolour.h \ CMYK2XYZ.c \ XYZ2CMYK.c \ colourspace.c \ dE76.c \ dE00.c \ dECMC.c \ icc_transform.c \ Lab2XYZ.c \ Lab2LCh.c \ LCh2Lab.c \ LCh2UCS.c \ UCS2LCh.c \ XYZ2Lab.c \ XYZ2Yxy.c \ Yxy2XYZ.c \ float2rad.c \ rad2float.c \ Lab2LabQ.c \ LabQ2Lab.c \ LabS2Lab.c \ Lab2LabS.c \ LabS2LabQ.c \ LabQ2LabS.c \ LabQ2sRGB.c \ sRGB2scRGB.c \ sRGB2HSV.c \ HSV2sRGB.c \ scRGB2XYZ.c \ scRGB2BW.c \ XYZ2scRGB.c \ scRGB2sRGB.c profiles.c: ./wrap-profiles.sh profiles profiles.c EXTRA_DIST = \ wrap-profiles.sh AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ libvips-8.9.1/libvips/colour/UCS2LCh.c000066400000000000000000000134211361153320700174250ustar00rootroot00000000000000/* Turn CMC to LCh * * 15/11/94 JC * - error messages added * - memory leak fixed * 16/11/94 JC * - uses im_wrap_oneonebuf() now * 2/11/09 * - gtkdoc * 30/11/09 * - argh, im_col_make_tables_CMC(); missing, thanks Peter * 19/9/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* Arrays for lookup tables for the inverse function. */ static float LI[1001]; static float CI[3001]; static float hI[101][361]; typedef VipsColourTransform VipsCMC2LCh; typedef VipsColourTransformClass VipsCMC2LChClass; G_DEFINE_TYPE( VipsCMC2LCh, vips_CMC2LCh, VIPS_TYPE_COLOUR_TRANSFORM ); /* Generate LI (inverse) tables. */ static void make_LI( void ) { int i; float Ll[1001]; for( i = 0; i < 1001; i++ ) Ll[i] = vips_col_L2Lcmc( i / 10.0 ); for( i = 0; i < 1001; i++ ) { int j; /* Must be 1000, since j will be +1 on exit. */ for( j = 0; j < 1000 && Ll[j] <= i / 10.0; j++ ) ; LI[i] = (j - 1) / 10.0 + (i / 10.0 - Ll[j - 1]) / ((Ll[j] - Ll[j - 1]) * 10.0); } } /* Generate Ccmc table. */ static void make_CI( void ) { int i; float Cl[3001]; for( i = 0; i < 3001; i++ ) Cl[i] = vips_col_C2Ccmc( i / 10.0 ); for( i = 0; i < 3001; i++ ) { int j; /* Must be 3000, since j will be +1 on exit. */ for( j = 0; j < 3000 && Cl[j] <= i / 10.0; j++ ) ; CI[i] = (j - 1) / 10.0 + (i / 10.0 - Cl[j - 1]) / ((Cl[j] - Cl[j - 1]) * 10.0); } } /* The difficult one: hcmc. */ static void make_hI( void ) { int i, j; float hl[101][361]; for( i = 0; i < 361; i++ ) for( j = 0; j < 101; j++ ) hl[j][i] = vips_col_Ch2hcmc( j * 2.0, i ); for( j = 0; j < 101; j++ ) { for( i = 0; i < 361; i++ ) { int k; for( k = 1; k < 360 && hl[j][k] <= i; k++ ) ; hI[j][i] = k - 1 + (i - hl[j][k - 1]) / (hl[j][k] - hl[j][k - 1]); } } } /** * vips_col_Lcmc2L: * @Lcmc: L cmc * * Calculate L from Lcmc using a table. Call vips_col_make_tables_CMC() at * least once before using this function. * * Returns: L* */ float vips_col_Lcmc2L( float Lcmc ) { int known; known = VIPS_FLOOR( Lcmc * 10.0 ); known = VIPS_CLIP( 0, known, 999 ); return( LI[known] + (LI[known + 1] - LI[known]) * (Lcmc * 10.0 - known) ); } /** * vips_col_Ccmc2C: * @Ccmc: Ccmc * * Calculate C from Ccmc using a table. * Call vips_col_make_tables_CMC() at * least once before using this function. * * Returns: C. */ float vips_col_Ccmc2C( float Ccmc ) { int known; known = VIPS_FLOOR( Ccmc * 10.0 ); known = VIPS_CLIP( 0, known, 2999 ); return( CI[known] + (CI[known + 1] - CI[known]) * (Ccmc * 10.0 - known) ); } /** * vips_col_Chcmc2h: * @C: Chroma * @hcmc: Hue cmc (degrees) * * Calculate h from C and hcmc, using a table. * Call vips_col_make_tables_CMC() at * least once before using this function. * * Returns: h. */ float vips_col_Chcmc2h( float C, float hcmc ) { int r; int known; /* Which row of the table? */ r = (int) ((C + 1.0) / 2.0); r = VIPS_CLIP( 0, r, 99 ); known = VIPS_FLOOR( hcmc ); known = VIPS_CLIP( 0, known, 359 ); return( hI[r][known] + (hI[r][(known + 1) % 360] - hI[r][known]) * (hcmc - known) ); } static void * tables_init( void *client ) { make_LI(); make_CI(); make_hI(); return( NULL ); } /** * vips_col_make_tables_CMC: * * Make the lookup tables for cmc. */ void vips_col_make_tables_CMC( void ) { static GOnce once = G_ONCE_INIT; VIPS_ONCE( &once, tables_init, NULL ); } /* Process a buffer of data. */ void vips_CMC2LCh_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float *p = (float *) in[0]; float *q = (float *) out; int x; for( x = 0; x < width; x++ ) { float Lcmc = p[0]; float Ccmc = p[1]; float hcmc = p[2]; /* Turn from CMC. */ float C = vips_col_Ccmc2C( Ccmc ); float h = vips_col_Chcmc2h( C, hcmc ); float L = vips_col_Lcmc2L( Lcmc ); p += 3; q[0] = L; q[1] = C; q[2] = h; q += 3; } } static void vips_CMC2LCh_class_init( VipsCMC2LChClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "CMC2LCh"; object_class->description = _( "transform LCh to CMC" ); colour_class->process_line = vips_CMC2LCh_line; } static void vips_CMC2LCh_init( VipsCMC2LCh *CMC2LCh ) { VipsColour *colour = VIPS_COLOUR( CMC2LCh ); vips_col_make_tables_CMC(); colour->interpretation = VIPS_INTERPRETATION_LCH; } /** * vips_CMC2LCh: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Turn LCh to CMC. * * See also: vips_LCh2CMC(). * * Returns: 0 on success, -1 on error */ int vips_CMC2LCh( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "CMC2LCh", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/XYZ2CMYK.c000066400000000000000000000134411361153320700175640ustar00rootroot00000000000000/* Use lcms to move from XYZ to CMYK, if we can. This needs a working * vips_icc_export. * * 21/12/18 * - from CMYK2XYZ.c * 09/01/2019 * - add CMYK <-> XYZ conversions if no lcms2 has been found */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcolour.h" #include "profiles.h" #ifdef HAVE_LCMS2 typedef struct _VipsXYZ2CMYK { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipsXYZ2CMYK; typedef VipsColourCodeClass VipsXYZ2CMYKClass; G_DEFINE_TYPE( VipsXYZ2CMYK, vips_XYZ2CMYK, VIPS_TYPE_OPERATION ); /* Our actual processing, as a VipsColourTransformFn. */ static int vips_XYZ2CMYK_process( VipsImage *in, VipsImage **out, ... ) { return( vips_icc_export( in, out, "pcs", VIPS_PCS_XYZ, NULL ) ); } static int vips_XYZ2CMYK_build( VipsObject *object ) { VipsXYZ2CMYK *XYZ2CMYK = (VipsXYZ2CMYK *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *out; if( VIPS_OBJECT_CLASS( vips_XYZ2CMYK_parent_class )->build( object ) ) return( -1 ); out = vips_image_new(); g_object_set( object, "out", out, NULL ); if( vips_copy( XYZ2CMYK->in, &t[0], NULL ) || vips__profile_set( t[0], "cmyk" ) || vips__colourspace_process_n( "XYZ2CMYK", t[0], &t[1], 3, vips_XYZ2CMYK_process ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } static void vips_XYZ2CMYK_class_init( VipsXYZ2CMYKClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "XYZ2CMYK"; object_class->description = _( "transform XYZ to CMYK" ); object_class->build = vips_XYZ2CMYK_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsXYZ2CMYK, in ) ); VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsXYZ2CMYK, out ) ); } static void vips_XYZ2CMYK_init( VipsXYZ2CMYK *XYZ2CMYK ) { } #else /*!HAVE_LCMS2*/ typedef VipsColourCode VipsXYZ2CMYK; typedef VipsColourCodeClass VipsXYZ2CMYKClass; G_DEFINE_TYPE(VipsXYZ2CMYK, vips_XYZ2CMYK, VIPS_TYPE_COLOUR_CODE); void vips_XYZ2CMYK_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float *p = (float *) in[0]; unsigned char *q = (unsigned char *) out; const float epsilon = 0.00001; int i; for( i = 0; i < width; i++ ) { float r = p[0] / VIPS_D65_X0; float g = p[1] / VIPS_D65_Y0; float b = p[2] / VIPS_D65_Z0; float c = 1.0 - r; float m = 1.0 - g; float y = 1.0 - b; float k = VIPS_MIN( c, VIPS_MIN( m, y ) ); float ik = 1.0 - k; if( ik < epsilon ) { q[0] = 255; q[1] = 255; q[2] = 255; q[3] = 255; } else { q[0] = VIPS_CLIP( 0, 255 * (c - k) / ik, 255 ); q[1] = VIPS_CLIP( 0, 255 * (m - k) / ik, 255 ); q[2] = VIPS_CLIP( 0, 255 * (y - k) / ik, 255 ); q[3] = VIPS_CLIP( 0, 255 * k, 255 ); } p += 3; q += 4; } } static void vips_XYZ2CMYK_class_init( VipsXYZ2CMYKClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "XYZ2CMYK"; object_class->description = _( "transform XYZ to CMYK" ); colour_class->process_line = vips_XYZ2CMYK_line; } static void vips_XYZ2CMYK_init( VipsXYZ2CMYK *XYZ2CMYK ) { VipsColour *colour = VIPS_COLOUR( XYZ2CMYK ); VipsColourCode *code = VIPS_COLOUR_CODE( XYZ2CMYK ); colour->interpretation = VIPS_INTERPRETATION_CMYK; colour->format = VIPS_FORMAT_UCHAR; colour->bands = 4; colour->input_bands = 3; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_FLOAT; code->input_interpretation = VIPS_INTERPRETATION_XYZ; } #endif /*HAVE_LCMS2*/ /** * vips_XYZ2CMYK: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Turn XYZ to CMYK. If the image has an embedded ICC profile this will be * used for the conversion. If there is no embedded profile, a generic * fallback profile will be used. * * Conversion is from D65 XYZ with relative intent. If you need more control * over the process, use vips_icc_export() instead. * * Returns: 0 on success, -1 on error */ int vips_XYZ2CMYK( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "XYZ2CMYK", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/XYZ2Lab.c000066400000000000000000000140401361153320700175130ustar00rootroot00000000000000/* Turn XYZ to Lab colourspace. * * Modifed: * 16/11/94 JC * - uses im_wrapone() * - in-line conversion * 27/1/03 JC * - swapped cbrt() for pow(), more portable * 12/11/04 * - swapped pow() for cbrt() again, pow() is insanely slow on win32 * - added a configure test for cbrt(). * 23/11/04 * - use a large LUT instead, about 5x faster * 23/11/06 * - ahem, build the LUT outside the eval thread * 2/11/09 * - gtkdoc * 3/8/11 * - fix a race in the table build * 19/9/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcolour.h" #ifndef HAVE_CBRT #define cbrt( X ) pow( (X), 1.0 / 3.0 ) #endif /*!HAVE_CBRT*/ /* Lookup table size. */ #define QUANT_ELEMENTS (100000) float cbrt_table[QUANT_ELEMENTS]; typedef struct _VipsXYZ2Lab { VipsColourTransform parent_instance; /* The colour temperature -- default to D65. */ VipsArea *temp; /* Broken out as xyz. */ double X0; double Y0; double Z0; } VipsXYZ2Lab; typedef VipsColourTransformClass VipsXYZ2LabClass; G_DEFINE_TYPE( VipsXYZ2Lab, vips_XYZ2Lab, VIPS_TYPE_COLOUR_TRANSFORM ); static void * table_init( void *client ) { int i; for( i = 0; i < QUANT_ELEMENTS; i++ ) { float Y = (double) i / QUANT_ELEMENTS; if( Y < 0.008856 ) cbrt_table[i] = 7.787 * Y + (16.0 / 116.0); else cbrt_table[i] = cbrt( Y ); } return( NULL ); } /* Process a buffer of data. */ static void vips_XYZ2Lab_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { static GOnce once = G_ONCE_INIT; VipsXYZ2Lab *XYZ2Lab = (VipsXYZ2Lab *) colour; float *p = (float *) in[0]; float *q = (float *) out; int x; VIPS_ONCE( &once, table_init, NULL ); for( x = 0; x < width; x++ ) { float nX, nY, nZ; int i; float f; float cbx, cby, cbz; nX = QUANT_ELEMENTS * p[0] / XYZ2Lab->X0; nY = QUANT_ELEMENTS * p[1] / XYZ2Lab->Y0; nZ = QUANT_ELEMENTS * p[2] / XYZ2Lab->Z0; p += 3; i = VIPS_FCLIP( 0, nX, QUANT_ELEMENTS - 2 ); f = nX - i; cbx = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]); i = VIPS_FCLIP( 0, nY, QUANT_ELEMENTS - 2 ); f = nY - i; cby = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]); i = VIPS_FCLIP( 0, nZ, QUANT_ELEMENTS - 2 ); f = nZ - i; cbz = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]); q[0] = 116.0 * cby - 16.0; q[1] = 500.0 * (cbx - cby); q[2] = 200.0 * (cby - cbz); q += 3; } } /** * vips_col_XYZ2Lab: * @X: Input CIE XYZ colour * @Y: Input CIE XYZ colour * @Z: Input CIE XYZ colour * @L: Return CIE Lab value * @a: Return CIE Lab value * @b: Return CIE Lab value * * Calculate XYZ from Lab, D65. * * See also: vips_XYZ2Lab(). */ void vips_col_XYZ2Lab( float X, float Y, float Z, float *L, float *a, float *b ) { float in[3]; float out[3]; float *x; VipsXYZ2Lab XYZ2Lab; in[0] = X; in[1] = Y; in[2] = Z; x = in; XYZ2Lab.X0 = VIPS_D65_X0; XYZ2Lab.Y0 = VIPS_D65_Y0; XYZ2Lab.Z0 = VIPS_D65_Z0; vips_XYZ2Lab_line( (VipsColour *) &XYZ2Lab, (VipsPel *) out, (VipsPel **) &x, 1 ); *L = out[0]; *a = out[1]; *b = out[2]; } static int vips_XYZ2Lab_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsXYZ2Lab *XYZ2Lab = (VipsXYZ2Lab *) object; if( XYZ2Lab->temp ) { if( vips_check_vector_length( class->nickname, XYZ2Lab->temp->n, 3 ) ) return( -1 ); XYZ2Lab->X0 = ((double *) XYZ2Lab->temp->data)[0]; XYZ2Lab->Y0 = ((double *) XYZ2Lab->temp->data)[1]; XYZ2Lab->Z0 = ((double *) XYZ2Lab->temp->data)[2]; } if( VIPS_OBJECT_CLASS( vips_XYZ2Lab_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_XYZ2Lab_class_init( VipsXYZ2LabClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "XYZ2Lab"; object_class->description = _( "transform XYZ to Lab" ); object_class->build = vips_XYZ2Lab_build; colour_class->process_line = vips_XYZ2Lab_line; VIPS_ARG_BOXED( class, "temp", 110, _( "Temperature" ), _( "Colour temperature" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsXYZ2Lab, temp ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_XYZ2Lab_init( VipsXYZ2Lab *XYZ2Lab ) { VipsColour *colour = VIPS_COLOUR( XYZ2Lab ); XYZ2Lab->X0 = VIPS_D65_X0; XYZ2Lab->Y0 = VIPS_D65_Y0; XYZ2Lab->Z0 = VIPS_D65_Z0; colour->interpretation = VIPS_INTERPRETATION_LAB; } /** * vips_XYZ2Lab: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @temp: #VipsArrayDouble, colour temperature * * Turn XYZ to Lab, optionally specifying the colour temperature. @temp * defaults to D65. * * Returns: 0 on success, -1 on error. */ int vips_XYZ2Lab( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "XYZ2Lab", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/XYZ2Yxy.c000066400000000000000000000051661361153320700176170ustar00rootroot00000000000000/* Turn XYZ to Yxy colourspace. * * Modified: * 29/5/02 JC * - from lab2xyz * 2/11/09 * - gtkdoc * - cleanups * 20/9/12 * redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsXYZ2Yxy; typedef VipsColourTransformClass VipsXYZ2YxyClass; G_DEFINE_TYPE( VipsXYZ2Yxy, vips_XYZ2Yxy, VIPS_TYPE_COLOUR_TRANSFORM ); static void vips_XYZ2Yxy_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int i; for( i = 0; i < width; i++ ) { float X = p[0]; float Y = p[1]; float Z = p[2]; double total = X + Y + Z; float x, y; p += 3; x = X / total; y = Y / total; q[0] = Y; q[1] = x; q[2] = y; q += 3; } } static void vips_XYZ2Yxy_class_init( VipsXYZ2YxyClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "XYZ2Yxy"; object_class->description = _( "transform XYZ to Yxy" ); colour_class->process_line = vips_XYZ2Yxy_line; } static void vips_XYZ2Yxy_init( VipsXYZ2Yxy *XYZ2Yxy ) { VipsColour *colour = VIPS_COLOUR( XYZ2Yxy ); colour->interpretation = VIPS_INTERPRETATION_YXY; } /** * vips_XYZ2Yxy: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Turn XYZ to Yxy. * * Returns: 0 on success, -1 on error */ int vips_XYZ2Yxy( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "XYZ2Yxy", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/XYZ2scRGB.c000066400000000000000000000061631361153320700177640ustar00rootroot00000000000000/* Turn XYZ to scRGB colourspace. * * 11/12/12 * - from Yxy2XYZ.c * 1/7/13 * - remove any ICC profile * 25/11/14 * - oh argh, revert the above */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsXYZ2scRGB; typedef VipsColourTransformClass VipsXYZ2scRGBClass; G_DEFINE_TYPE( VipsXYZ2scRGB, vips_XYZ2scRGB, VIPS_TYPE_COLOUR_TRANSFORM ); /* We used to have the comment: * We've converted to sRGB without a profile. We must remove any ICC * profile left over from import or there will be a mismatch between * pixel values and the attached profile. But this isn't right, we often call things sRGB that we know are not true sRGB, for example: vips sharpen k2.jpg x.jpg sharpen will treat k2 as being in sRGB space even if that image has a profile. If we drop the profile, x.jpg is suddenly untagged. */ void vips_XYZ2scRGB_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int i; for( i = 0; i < width; i++ ) { float X = p[0]; float Y = p[1]; float Z = p[2]; float R, G, B; p += 3; vips_col_XYZ2scRGB( X, Y, Z, &R, &G, &B ); q[0] = R; q[1] = G; q[2] = B; q += 3; } } static void vips_XYZ2scRGB_class_init( VipsXYZ2scRGBClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "XYZ2scRGB"; object_class->description = _( "transform XYZ to scRGB" ); colour_class->process_line = vips_XYZ2scRGB_line; } static void vips_XYZ2scRGB_init( VipsXYZ2scRGB *XYZ2scRGB ) { VipsColour *colour = VIPS_COLOUR( XYZ2scRGB ); colour->interpretation = VIPS_INTERPRETATION_scRGB; } /** * vips_XYZ2scRGB: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Turn XYZ to scRGB. * * Returns: 0 on success, -1 on error */ int vips_XYZ2scRGB( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "XYZ2scRGB", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/Yxy2XYZ.c000066400000000000000000000053501361153320700176120ustar00rootroot00000000000000/* Turn Yxy to XYZ colourspace. * * Modified: * 29/5/02 JC * - from lab2xyz * 2/11/09 * - gtkdoc * - cleanups * 20/9/12 * - redo as a class * 29/8/19 * - avoid /0 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsYxy2XYZ; typedef VipsColourTransformClass VipsYxy2XYZClass; G_DEFINE_TYPE( VipsYxy2XYZ, vips_Yxy2XYZ, VIPS_TYPE_COLOUR_TRANSFORM ); void vips_Yxy2XYZ_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int i; for( i = 0; i < width; i++ ) { float Y = p[0]; float x = p[1]; float y = p[2]; float X, Z; if( x == 0.0 || y == 0.0 ) { X = 0.0; Z = 0.0; } else { double total; total = Y / y; X = x * total; Z = (X - x * X - x * Y) / x; } q[0] = X; q[1] = Y; q[2] = Z; p += 3; q += 3; } } static void vips_Yxy2XYZ_class_init( VipsYxy2XYZClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "Yxy2XYZ"; object_class->description = _( "transform Yxy to XYZ" ); colour_class->process_line = vips_Yxy2XYZ_line; } static void vips_Yxy2XYZ_init( VipsYxy2XYZ *Yxy2XYZ ) { VipsColour *colour = VIPS_COLOUR( Yxy2XYZ ); colour->interpretation = VIPS_INTERPRETATION_XYZ; } /** * vips_Yxy2XYZ: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Turn XYZ to Yxy. * * Returns: 0 on success, -1 on error */ int vips_Yxy2XYZ( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "Yxy2XYZ", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/colour.c000066400000000000000000000510071361153320700176270ustar00rootroot00000000000000/* base class for all colour operations */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcolour.h" /** * SECTION: colour * @short_description: colour operators * @stability: Stable * @see_also: arithmetic * @include: vips/vips.h * * These operators let you transform coordinates and images between colour * spaces, calculate colour differences, and move * to and from device spaces. * * All operations process colour from the first few bands and pass other bands * through unaltered. This means you can operate on images with alpha channels * safely. If you move to or from 16-bit RGB, any alpha channels are rescaled * for you. * * Radiance images have four 8-bits bands and store 8 bits of R, G and B and * another 8 bits of exponent, common to all channels. They are widely used in * the HDR imaging community. * * The colour functions can be divided into three main groups. First, * functions to transform images between the different colour spaces supported * by VIPS: #VIPS_INTERPRETATION_sRGB, #VIPS_INTERPRETATION_scRGB, * #VIPS_INTERPRETATION_B_W, * #VIPS_INTERPRETATION_XYZ, #VIPS_INTERPRETATION_YXY, * #VIPS_INTERPRETATION_LAB, * #VIPS_INTERPRETATION_LCH, and * #VIPS_INTERPRETATION_CMC. * * There are also a set of minor colourspaces which are one of the above in a * slightly different format: * #VIPS_INTERPRETATION_LAB, #VIPS_INTERPRETATION_LABQ, * #VIPS_INTERPRETATION_LABS, #VIPS_INTERPRETATION_LCH, * #VIPS_INTERPRETATION_RGB16, and #VIPS_INTERPRETATION_GREY16. * * Use vips_colourspace() to move an image to a * target colourspace using the best sequence of colour transform operations. * * Secondly, there are a set of operations for * calculating colour difference metrics. Finally, VIPS wraps LittleCMS and * uses it to provide a set of operations for reading and writing images with * ICC profiles. * * This figure shows how the VIPS colour spaces interconvert: * * * * * * The colour spaces supported by VIPS are: * * * #VIPS_INTERPRETATION_LAB -- CIELAB '76 colourspace with a D65 white. This * uses three floats for each band, and bands have the obvious range. * * There are two * variants, #VIPS_INTERPRETATION_LABQ and #VIPS_INTERPRETATION_LABS, which * use ints to store values. These are less precise, but can be quicker to * store and process. * * #VIPS_INTERPRETATION_LCH is the same, but with a*b* as polar coordinates. * Hue is expressed in degrees. * * * #VIPS_INTERPRETATION_XYZ -- CIE XYZ. This uses three floats. * See #VIPS_D75_X0 and friends for values for the ranges * under various illuminants. * * #VIPS_INTERPRETATION_YXY is the same, but with little x and y. * * * #VIPS_INTERPRETATION_scRGB -- a linear colourspace with the sRGB * primaries. This is useful if you need linear light and don't care * much what the primaries are. * * Linearization is performed with the usual sRGB equations, see below. * * * #VIPS_INTERPRETATION_sRGB -- the standard sRGB colourspace, see: * [wikipedia sRGB](http://en.wikipedia.org/wiki/SRGB). * * This uses three 8-bit values for each of RGB. * * #VIPS_INTERPRETATION_RGB16 is the same, but using three 16-bit values for * RGB. * * #VIPS_INTERPRETATION_HSV is sRGB, but in polar coordinates. * #VIPS_INTERPRETATION_LCH is much better, only use HSV if you have to. * * * #VIPS_INTERPRETATION_B_W -- a monochrome image, roughly G from sRGB. * The grey value is * calculated in #VIPS_INTERPRETATION_scRGB space with the usual 0.2, 0.7, 0.1 * RGB ratios. * * #VIPS_INTERPRETATION_GREY16 is the same, but using 16-bits. * * * #VIPS_INTERPRETATION_CMC -- a colour space based on the CMC(1:1) * colour difference measurement. This is a highly uniform colour space, * much better than CIELAB for expressing small differences. * * The CMC colourspace is described in "Uniform Colour Space Based on the * CMC(l:c) Colour-difference Formula", M R Luo and B Rigg, Journal of the * Society of Dyers and Colourists, vol 102, 1986. Distances in this * colourspace approximate, within 10% or so, differences in the CMC(l:c) * colour difference formula. * * You can calculate metrics like CMC(2:1) by scaling the spaces before * finding differences. * */ /* Areas under curves for Dxx. 2 degree observer. */ /** * VIPS_D93_X0: * * Areas under curves for D93, 2 degree observer. */ /** * VIPS_D75_X0: * * Areas under curves for D75, 2 degree observer. */ /** * VIPS_D65_X0: * * Areas under curves for D65, 2 degree observer. */ /** * VIPS_D55_X0: * * Areas under curves for D55, 2 degree observer. */ /** * VIPS_D50_X0: * * Areas under curves for D50, 2 degree observer. */ /** * VIPS_A_X0: * * Areas under curves for illuminant A (2856K), 2 degree observer. */ /** * VIPS_B_X0: * * Areas under curves for illuminant B (4874K), 2 degree observer. */ /** * VIPS_C_X0: * * Areas under curves for illuminant C (6774K), 2 degree observer. */ /** * VIPS_E_X0: * * Areas under curves for equal energy illuminant E. */ /** * VIPS_D3250_X0: * * Areas under curves for black body at 3250K, 2 degree observer. */ G_DEFINE_ABSTRACT_TYPE( VipsColour, vips_colour, VIPS_TYPE_OPERATION ); /* Maximum number of input images -- why not? */ #define MAX_INPUT_IMAGES (64) static int vips_colour_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsColour *colour = VIPS_COLOUR( b ); VipsColourClass *class = VIPS_COLOUR_GET_CLASS( colour ); VipsRect *r = &or->valid; int i, y; VipsPel *p[MAX_INPUT_IMAGES], *q; if( vips_reorder_prepare_many( or->im, ir, r ) ) return( -1 ); VIPS_GATE_START( "vips_colour_gen: work" ); for( y = 0; y < r->height; y++ ) { for( i = 0; ir[i]; i++ ) p[i] = VIPS_REGION_ADDR( ir[i], r->left, r->top + y ); p[i] = NULL; q = VIPS_REGION_ADDR( or, r->left, r->top + y ); class->process_line( colour, q, p, r->width ); } VIPS_GATE_STOP( "vips_colour_gen: work" ); VIPS_COUNT_PIXELS( or, VIPS_OBJECT_GET_CLASS( colour )->nickname ); return( 0 ); } static int vips_colour_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsColour *colour = VIPS_COLOUR( object ); VipsImage **in; VipsImage **extra_bands; VipsImage *out; int i; #ifdef DEBUG printf( "vips_colour_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_colour_parent_class )-> build( object ) ) return( -1 ); if( colour->n > MAX_INPUT_IMAGES ) { vips_error( class->nickname, "%s", _( "too many input images" ) ); return( -1 ); } for( i = 0; i < colour->n; i++ ) if( vips_image_pio_input( colour->in[i] ) ) return( -1 ); /* colour->in[] must be NULL-terminated, we can use it as an arg to * vips_start_many(). */ g_assert( !colour->in[colour->n] ); in = colour->in; extra_bands = (VipsImage **) vips_object_local_array( object, colour->n ); /* If there are more than @input_bands bands, we detach and reattach * after processing. */ if( colour->input_bands > 0 ) { VipsImage **new_in = (VipsImage **) vips_object_local_array( object, colour->n ); for( i = 0; i < colour->n; i++ ) { if( vips_check_bands_atleast( class->nickname, in[i], colour->input_bands ) ) return( -1 ); if( in[i]->Bands > colour->input_bands ) { if( vips_extract_band( in[i], &new_in[i], 0, "n", colour->input_bands, NULL ) ) return( -1 ); } else { new_in[i] = in[i]; g_object_ref( new_in[i] ); } if( in[i]->Bands > colour->input_bands ) if( vips_extract_band( in[i], &extra_bands[i], colour->input_bands, "n", in[i]->Bands - colour->input_bands, NULL ) ) return( -1 ); } in = new_in; } out = vips_image_new(); if( vips_image_pipeline_array( out, VIPS_DEMAND_STYLE_THINSTRIP, in ) ) { g_object_unref( out ); return( -1 ); } out->Coding = colour->coding; out->Type = colour->interpretation; out->BandFmt = colour->format; out->Bands = colour->bands; if( colour->profile_filename && vips__profile_set( out, colour->profile_filename ) ) return( -1 ); if( vips_image_generate( out, vips_start_many, vips_colour_gen, vips_stop_many, in, colour ) ) { g_object_unref( out ); return( -1 ); } /* Reattach higher bands, if necessary. If we have more than one input * image, just use the first extra bands. */ for( i = 0; i < colour->n; i++ ) if( extra_bands[i] ) { VipsImage *t1, *t2; /* We can't just reattach the extra bands: they might * be float (for example) and we might be trying to * make a short image. Cast extra to match the body of * the image. */ if( vips_cast( extra_bands[i], &t1, out->BandFmt, NULL ) ) { g_object_unref( out ); return( -1 ); } if( vips_bandjoin2( out, t1, &t2, NULL ) ) { g_object_unref( t1 ); g_object_unref( out ); return( -1 ); } g_object_unref( out ); g_object_unref( t1 ); out = t2; break; } g_object_set( colour, "out", out, NULL ); return( 0 ); } static void vips_colour_class_init( VipsColourClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "colour"; vobject_class->description = _( "color operations" ); vobject_class->build = vips_colour_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsColour, out ) ); } static void vips_colour_init( VipsColour *colour ) { colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_sRGB; colour->format = VIPS_FORMAT_UCHAR; colour->bands = 3; colour->input_bands = -1; } G_DEFINE_ABSTRACT_TYPE( VipsColourTransform, vips_colour_transform, VIPS_TYPE_COLOUR ); static int vips_colour_transform_build( VipsObject *object ) { VipsColour *colour = VIPS_COLOUR( object ); VipsColourTransform *transform = VIPS_COLOUR_TRANSFORM( object ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); /* We only process float. */ if( transform->in && transform->in->BandFmt != VIPS_FORMAT_FLOAT ) { if( vips_cast_float( transform->in, &t[0], NULL ) ) return( -1 ); } else { t[0] = transform->in; g_object_ref( t[0] ); } /* We always do 3 bands -> 3 bands. */ colour->input_bands = 3; colour->n = 1; colour->in = t; if( VIPS_OBJECT_CLASS( vips_colour_transform_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_colour_transform_class_init( VipsColourTransformClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "space"; vobject_class->description = _( "color space transformations" ); vobject_class->build = vips_colour_transform_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourTransform, in ) ); } static void vips_colour_transform_init( VipsColourTransform *space ) { VipsColour *colour = (VipsColour *) space; /* What we write. interpretation should be overwritten in subclass * builds. */ colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_LAB; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 3; } G_DEFINE_ABSTRACT_TYPE( VipsColourCode, vips_colour_code, VIPS_TYPE_COLOUR ); static int vips_colour_code_build( VipsObject *object ) { VipsColour *colour = VIPS_COLOUR( object ); VipsColourCode *code = VIPS_COLOUR_CODE( object ); VipsColourCodeClass *class = VIPS_COLOUR_CODE_GET_CLASS( object ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 6 ); VipsImage *in; in = code->in; /* If this is a LABQ and the coder wants uncoded, unpack. */ if( in && in->Coding == VIPS_CODING_LABQ && code->input_coding == VIPS_CODING_NONE ) { if( vips_LabQ2Lab( in, &t[0], NULL ) ) return( -1 ); in = t[0]; } if( in && vips_check_coding( VIPS_OBJECT_CLASS( class )->nickname, in, code->input_coding ) ) return( -1 ); if( in && code->input_coding == VIPS_CODING_NONE && code->input_format != VIPS_FORMAT_NOTSET && in->BandFmt != code->input_format ) { if( vips_cast( in, &t[3], code->input_format, NULL ) ) return( -1 ); in = t[3]; } if( in && code->input_coding == VIPS_CODING_NONE && code->input_interpretation != VIPS_INTERPRETATION_ERROR && in->Type != code->input_interpretation ) { if( vips_colourspace( in, &t[4], code->input_interpretation, NULL ) ) return( -1 ); in = t[4]; } colour->n = 1; colour->in = VIPS_ARRAY( object, 2, VipsImage * ); colour->in[0] = in; colour->in[1] = NULL; if( VIPS_OBJECT_CLASS( vips_colour_code_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_colour_code_class_init( VipsColourCodeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "code"; vobject_class->description = _( "change color coding" ); vobject_class->build = vips_colour_code_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourCode, in ) ); } static void vips_colour_code_init( VipsColourCode *code ) { code->input_coding = VIPS_CODING_NONE; code->input_interpretation = VIPS_INTERPRETATION_ERROR; code->input_format = VIPS_FORMAT_NOTSET; } G_DEFINE_ABSTRACT_TYPE( VipsColourDifference, vips_colour_difference, VIPS_TYPE_COLOUR ); static int vips_colour_difference_build( VipsObject *object ) { VipsColour *colour = VIPS_COLOUR( object ); VipsColourDifference *difference = VIPS_COLOUR_DIFFERENCE( object ); VipsImage **t; VipsImage *left; VipsImage *right; t = (VipsImage **) vips_object_local_array( object, 12 ); left = difference->left; right = difference->right; if( left ) { if( vips_image_decode( left, &t[0] ) ) return( -1 ); left = t[0]; } if( right ) { if( vips_image_decode( right, &t[1] ) ) return( -1 ); right = t[1]; } /* Detach and reattach any extra bands. */ colour->input_bands = 3; if( left && left->Type != difference->interpretation ) { if( vips_colourspace( left, &t[6], difference->interpretation, NULL ) ) return( -1 ); left = t[6]; } if( right && right->Type != difference->interpretation ) { if( vips_colourspace( right, &t[7], difference->interpretation, NULL ) ) return( -1 ); right = t[7]; } /* We only process float. */ if( left && left->BandFmt != VIPS_FORMAT_FLOAT ) { if( vips_cast_float( left, &t[8], NULL ) ) return( -1 ); left = t[8]; } if( right && right->BandFmt != VIPS_FORMAT_FLOAT ) { if( vips_cast_float( right, &t[9], NULL ) ) return( -1 ); right = t[9]; } if( vips__sizealike( left, right, &t[10], &t[11] ) ) return( -1 ); left = t[10]; right = t[11]; colour->n = 2; colour->in = VIPS_ARRAY( object, 3, VipsImage * ); colour->in[0] = left; colour->in[1] = right; colour->in[2] = NULL; if( VIPS_OBJECT_CLASS( vips_colour_difference_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_colour_difference_class_init( VipsColourDifferenceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "difference"; vobject_class->description = _( "calculate color difference" ); vobject_class->build = vips_colour_difference_build; VIPS_ARG_IMAGE( class, "left", 1, _( "Left" ), _( "Left-hand input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourDifference, left ) ); VIPS_ARG_IMAGE( class, "right", 2, _( "Right" ), _( "Right-hand input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourDifference, right ) ); } static void vips_colour_difference_init( VipsColourDifference *difference ) { VipsColour *colour = VIPS_COLOUR( difference ); colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_B_W; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 1; } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_colour_operation_init( void ) { extern GType vips_colourspace_get_type( void ); extern GType vips_Lab2XYZ_get_type( void ); extern GType vips_XYZ2Lab_get_type( void ); extern GType vips_Lab2LCh_get_type( void ); extern GType vips_LCh2Lab_get_type( void ); extern GType vips_LCh2CMC_get_type( void ); extern GType vips_CMC2LCh_get_type( void ); extern GType vips_Yxy2XYZ_get_type( void ); extern GType vips_XYZ2Yxy_get_type( void ); extern GType vips_LabQ2Lab_get_type( void ); extern GType vips_Lab2LabQ_get_type( void ); extern GType vips_LabQ2LabS_get_type( void ); extern GType vips_LabS2LabQ_get_type( void ); extern GType vips_LabS2Lab_get_type( void ); extern GType vips_Lab2LabS_get_type( void ); extern GType vips_rad2float_get_type( void ); extern GType vips_float2rad_get_type( void ); extern GType vips_LabQ2sRGB_get_type( void ); extern GType vips_XYZ2sRGB_get_type( void ); extern GType vips_sRGB2scRGB_get_type( void ); extern GType vips_sRGB2HSV_get_type( void ); extern GType vips_HSV2sRGB_get_type( void ); extern GType vips_scRGB2XYZ_get_type( void ); extern GType vips_scRGB2BW_get_type( void ); extern GType vips_XYZ2scRGB_get_type( void ); extern GType vips_scRGB2sRGB_get_type( void ); extern GType vips_CMYK2XYZ_get_type( void ); extern GType vips_XYZ2CMYK_get_type( void ); extern GType vips_profile_load_get_type( void ); #ifdef HAVE_LCMS2 extern GType vips_icc_import_get_type( void ); extern GType vips_icc_export_get_type( void ); extern GType vips_icc_transform_get_type( void ); #endif extern GType vips_dE76_get_type( void ); extern GType vips_dE00_get_type( void ); extern GType vips_dECMC_get_type( void ); vips_colourspace_get_type(); vips_Lab2XYZ_get_type(); vips_XYZ2Lab_get_type(); vips_Lab2LCh_get_type(); vips_LCh2Lab_get_type(); vips_LCh2CMC_get_type(); vips_CMC2LCh_get_type(); vips_XYZ2Yxy_get_type(); vips_Yxy2XYZ_get_type(); vips_LabQ2Lab_get_type(); vips_Lab2LabQ_get_type(); vips_LabQ2LabS_get_type(); vips_LabS2LabQ_get_type(); vips_LabS2Lab_get_type(); vips_Lab2LabS_get_type(); vips_rad2float_get_type(); vips_float2rad_get_type(); vips_LabQ2sRGB_get_type(); vips_sRGB2scRGB_get_type(); vips_scRGB2XYZ_get_type(); vips_scRGB2BW_get_type(); vips_sRGB2HSV_get_type(); vips_HSV2sRGB_get_type(); vips_XYZ2scRGB_get_type(); vips_scRGB2sRGB_get_type(); vips_CMYK2XYZ_get_type(); vips_XYZ2CMYK_get_type(); vips_profile_load_get_type(); #ifdef HAVE_LCMS2 vips_icc_import_get_type(); vips_icc_export_get_type(); vips_icc_transform_get_type(); #endif vips_dE76_get_type(); vips_dE00_get_type(); vips_dECMC_get_type(); } libvips-8.9.1/libvips/colour/colourspace.c000066400000000000000000000563711361153320700206540ustar00rootroot00000000000000/* convert between colourspaces * * 6/11/12 * - add RGB16 as a destination * 12/1/14 * - add B_W as a source / dest * - add GREY16 as a source / dest * - add RGB16 as a source * 19/1/14 * - auto-decode RAD images * 3/2/14 * - add "source_space", overrides source space guess * 8/5/14 * - oops, don't treat RGB16 as sRGB * 9/9/14 * - mono <-> rgb converters were not handling extra bands, thanks James * 4/2/15 * - much faster RGB16->sRGB path * 17/4/15 * - better conversion to greyscale, see * https://github.com/lovell/sharp/issues/193 * 27/12/18 * - add CMYK conversions */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcolour.h" static int vips_scRGB2RGB16( VipsImage *in, VipsImage **out, ... ) { return( vips_scRGB2sRGB( in, out, "depth", 16, NULL ) ); } static int vips_scRGB2BW16( VipsImage *in, VipsImage **out, ... ) { return( vips_scRGB2BW( in, out, "depth", 16, NULL ) ); } /* Do these two with a simple cast ... since we're just cast shifting, we can * short-circuit the extra band processing. */ static int vips_RGB162sRGB( VipsImage *in, VipsImage **out, ... ) { if( vips_cast( in, out, VIPS_FORMAT_UCHAR, "shift", TRUE, NULL ) ) return( -1 ); (*out)->Type = VIPS_INTERPRETATION_sRGB; return( 0 ); } static int vips_sRGB2RGB16( VipsImage *in, VipsImage **out, ... ) { if( vips_cast( in, out, VIPS_FORMAT_USHORT, "shift", TRUE, NULL ) ) return( -1 ); (*out)->Type = VIPS_INTERPRETATION_RGB16; return( 0 ); } /* Process the first @n bands with @fn, detach and reattach remaining bands. * * Also used by CMYK2XYZ and XYZ2CMYK. */ int vips__colourspace_process_n( const char *domain, VipsImage *in, VipsImage **out, int n, VipsColourTransformFn fn ) { if( in->Bands > n ) { VipsImage *scope = vips_image_new(); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( scope ), 4 ); if( vips_extract_band( in, &t[0], 0, "n", n, NULL ) || vips_extract_band( in, &t[1], n, "n", in->Bands - n, NULL ) || fn( t[0], &t[2], NULL ) || vips_cast( t[1], &t[3], t[2]->BandFmt, NULL ) || vips_bandjoin2( t[2], t[3], out, NULL ) ) { g_object_unref( scope ); return( -1 ); } g_object_unref( scope ); } else if( in->Bands == n ) { if( fn( in, out, NULL ) ) return( -1 ); } else { vips_error( domain, "%s", _( "too few bands for operation" ) ); return( -1 ); } return( 0 ); } static int vips_BW2sRGB_op( VipsImage *in, VipsImage **out, ... ) { VipsImage *t[3]; t[0] = in; t[1] = in; t[2] = in; if( vips_bandjoin( t, out, 3, NULL ) ) return( -1 ); return( 0 ); } static int vips_BW2sRGB( VipsImage *in, VipsImage **out, ... ) { if( vips__colourspace_process_n( "BW2sRGB", in, out, 1, vips_BW2sRGB_op ) ) return( -1 ); (*out)->Type = VIPS_INTERPRETATION_sRGB; return( 0 ); } static int vips_GREY162RGB16( VipsImage *in, VipsImage **out, ... ) { if( vips__colourspace_process_n( "GREY162RGB16", in, out, 1, vips_BW2sRGB_op ) ) return( -1 ); (*out)->Type = VIPS_INTERPRETATION_RGB16; return( 0 ); } /* Maximum number of steps we allow in a route. 10 steps should be enough * for anyone. */ #define MAX_STEPS (10) /* A route between two colour spaces. */ typedef struct _VipsColourRoute { VipsInterpretation from; VipsInterpretation to; VipsColourTransformFn route[MAX_STEPS + 1]; } VipsColourRoute; /* Some defines to save typing. These are the colour spaces we support * conversions between. */ #define XYZ VIPS_INTERPRETATION_XYZ #define LAB VIPS_INTERPRETATION_LAB #define LABQ VIPS_INTERPRETATION_LABQ #define LCH VIPS_INTERPRETATION_LCH #define CMC VIPS_INTERPRETATION_CMC #define LABS VIPS_INTERPRETATION_LABS #define CMYK VIPS_INTERPRETATION_CMYK #define scRGB VIPS_INTERPRETATION_scRGB #define sRGB VIPS_INTERPRETATION_sRGB #define HSV VIPS_INTERPRETATION_HSV #define RGB16 VIPS_INTERPRETATION_RGB16 #define GREY16 VIPS_INTERPRETATION_GREY16 #define YXY VIPS_INTERPRETATION_YXY #define BW VIPS_INTERPRETATION_B_W /* All the routes we know about. */ static VipsColourRoute vips_colour_routes[] = { { XYZ, LAB, { vips_XYZ2Lab, NULL } }, { XYZ, LABQ, { vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { XYZ, LCH, { vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { XYZ, CMC, { vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { XYZ, LABS, { vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { XYZ, CMYK, { vips_XYZ2CMYK, NULL } }, { XYZ, scRGB, { vips_XYZ2scRGB, NULL } }, { XYZ, sRGB, { vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { XYZ, HSV, { vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { XYZ, BW, { vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { XYZ, RGB16, { vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { XYZ, GREY16, { vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { XYZ, YXY, { vips_XYZ2Yxy, NULL } }, { LAB, XYZ, { vips_Lab2XYZ, NULL } }, { LAB, LABQ, { vips_Lab2LabQ, NULL } }, { LAB, LCH, { vips_Lab2LCh, NULL } }, { LAB, CMC, { vips_Lab2LCh, vips_LCh2CMC, NULL } }, { LAB, LABS, { vips_Lab2LabS, NULL } }, { LAB, CMYK, { vips_Lab2XYZ, vips_XYZ2CMYK, NULL } }, { LAB, scRGB, { vips_Lab2XYZ, vips_XYZ2scRGB, NULL } }, { LAB, sRGB, { vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { LAB, HSV, { vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { LAB, BW, { vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { LAB, RGB16, { vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { LAB, GREY16, { vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { LAB, YXY, { vips_Lab2XYZ, vips_XYZ2Yxy, NULL } }, { LABQ, XYZ, { vips_LabQ2Lab, vips_Lab2XYZ, NULL } }, { LABQ, LAB, { vips_LabQ2Lab, NULL } }, { LABQ, LCH, { vips_LabQ2Lab, vips_Lab2LCh, NULL } }, { LABQ, CMC, { vips_LabQ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { LABQ, LABS, { vips_LabQ2LabS, NULL } }, { LABQ, CMYK, { vips_LabQ2Lab, vips_Lab2XYZ, vips_XYZ2CMYK, NULL } }, { LABQ, scRGB, { vips_LabQ2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, NULL } }, { LABQ, sRGB, { vips_LabQ2sRGB, NULL } }, { LABQ, HSV, { vips_LabQ2sRGB, vips_sRGB2HSV, NULL } }, { LABQ, BW, { vips_LabQ2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { LABQ, RGB16, { vips_LabQ2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { LABQ, GREY16, { vips_LabQ2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { LABQ, YXY, { vips_LabQ2Lab, vips_Lab2XYZ, vips_XYZ2Yxy, NULL } }, { LCH, XYZ, { vips_LCh2Lab, vips_Lab2XYZ, NULL } }, { LCH, LAB, { vips_LCh2Lab, NULL } }, { LCH, LABQ, { vips_LCh2Lab, vips_Lab2LabQ, NULL } }, { LCH, CMC, { vips_LCh2CMC, NULL } }, { LCH, LABS, { vips_LCh2Lab, vips_Lab2LabS, NULL } }, { LCH, CMYK, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2CMYK, NULL } }, { LCH, scRGB, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, NULL } }, { LCH, sRGB, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { LCH, HSV, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { LCH, BW, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { LCH, RGB16, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { LCH, GREY16, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { LCH, YXY, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2Yxy, NULL } }, { CMC, XYZ, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, NULL } }, { CMC, LAB, { vips_CMC2LCh, vips_LCh2Lab, NULL } }, { CMC, LABQ, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2LabQ, NULL } }, { CMC, LCH, { vips_CMC2LCh, NULL } }, { CMC, LABS, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2LabS, NULL } }, { CMC, CMYK, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2CMYK, NULL } }, { CMC, scRGB, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, NULL } }, { CMC, sRGB, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { CMC, HSV, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { CMC, BW, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { CMC, RGB16, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { CMC, GREY16, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { CMC, YXY, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2Yxy, NULL } }, { LABS, XYZ, { vips_LabS2Lab, vips_Lab2XYZ, NULL } }, { LABS, LAB, { vips_LabS2Lab, NULL } }, { LABS, LABQ, { vips_LabS2LabQ, NULL } }, { LABS, LCH, { vips_LabS2Lab, vips_Lab2LCh, NULL } }, { LABS, CMC, { vips_LabS2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { LABS, CMYK, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2CMYK, NULL } }, { LABS, scRGB, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, NULL } }, { LABS, sRGB, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { LABS, HSV, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { LABS, BW, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { LABS, RGB16, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { LABS, GREY16, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { LABS, YXY, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2Yxy, NULL } }, { scRGB, XYZ, { vips_scRGB2XYZ, NULL } }, { scRGB, LAB, { vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { scRGB, LABQ, { vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { scRGB, LCH, { vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { scRGB, CMC, { vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { scRGB, CMYK, { vips_scRGB2XYZ, vips_XYZ2CMYK, NULL } }, { scRGB, sRGB, { vips_scRGB2sRGB, NULL } }, { scRGB, HSV, { vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { scRGB, BW, { vips_scRGB2BW, NULL } }, { scRGB, LABS, { vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { scRGB, RGB16, { vips_scRGB2RGB16, NULL } }, { scRGB, GREY16, { vips_scRGB2BW16, NULL } }, { scRGB, YXY, { vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { CMYK, XYZ, { vips_CMYK2XYZ, NULL } }, { CMYK, LAB, { vips_CMYK2XYZ, vips_XYZ2Lab, NULL } }, { CMYK, LABQ, { vips_CMYK2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { CMYK, LCH, { vips_CMYK2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { CMYK, CMC, { vips_CMYK2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { CMYK, scRGB, { vips_CMYK2XYZ, vips_XYZ2scRGB, NULL } }, { CMYK, sRGB, { vips_CMYK2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { CMYK, HSV, { vips_CMYK2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { CMYK, BW, { vips_CMYK2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { CMYK, LABS, { vips_CMYK2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { CMYK, RGB16, { vips_CMYK2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { CMYK, GREY16, { vips_CMYK2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { CMYK, YXY, { vips_CMYK2XYZ, vips_XYZ2Yxy, NULL } }, { sRGB, XYZ, { vips_sRGB2scRGB, vips_scRGB2XYZ, NULL } }, { sRGB, LAB, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { sRGB, LABQ, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { sRGB, LCH, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { sRGB, CMC, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { sRGB, CMYK, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2CMYK, NULL } }, { sRGB, scRGB, { vips_sRGB2scRGB, NULL } }, { sRGB, HSV, { vips_sRGB2HSV, NULL } }, { sRGB, BW, { vips_sRGB2scRGB, vips_scRGB2BW, NULL } }, { sRGB, LABS, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { sRGB, RGB16, { vips_sRGB2RGB16, NULL } }, { sRGB, GREY16, { vips_sRGB2scRGB, vips_scRGB2BW16, NULL } }, { sRGB, YXY, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { HSV, XYZ, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, NULL } }, { HSV, LAB, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { HSV, LABQ, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { HSV, LCH, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { HSV, CMC, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { HSV, CMYK, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2CMYK, NULL } }, { HSV, scRGB, { vips_HSV2sRGB, vips_sRGB2scRGB, NULL } }, { HSV, sRGB, { vips_HSV2sRGB, NULL } }, { HSV, BW, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2BW, NULL } }, { HSV, LABS, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { HSV, RGB16, { vips_HSV2sRGB, vips_sRGB2RGB16, NULL } }, { HSV, GREY16, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2BW16, NULL } }, { HSV, YXY, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { RGB16, XYZ, { vips_sRGB2scRGB, vips_scRGB2XYZ, NULL } }, { RGB16, LAB, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { RGB16, LABQ, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { RGB16, LCH, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { RGB16, CMC, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { RGB16, CMYK, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2CMYK, NULL } }, { RGB16, scRGB, { vips_sRGB2scRGB, NULL } }, { RGB16, sRGB, { vips_RGB162sRGB, NULL } }, { RGB16, HSV, { vips_RGB162sRGB, vips_sRGB2HSV, NULL } }, { RGB16, BW, { vips_sRGB2scRGB, vips_scRGB2BW, NULL } }, { RGB16, LABS, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { RGB16, GREY16, { vips_sRGB2scRGB, vips_scRGB2BW16, NULL } }, { RGB16, YXY, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { GREY16, XYZ, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, NULL } }, { GREY16, LAB, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { GREY16, LABQ, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { GREY16, LCH, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { GREY16, CMC, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { GREY16, CMYK, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2CMYK, NULL } }, { GREY16, scRGB, { vips_GREY162RGB16, vips_sRGB2scRGB, NULL } }, { GREY16, sRGB, { vips_GREY162RGB16, vips_RGB162sRGB, NULL } }, { GREY16, HSV, { vips_GREY162RGB16, vips_RGB162sRGB, vips_sRGB2HSV, NULL } }, { GREY16, BW, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2BW, NULL } }, { GREY16, LABS, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { GREY16, RGB16, { vips_GREY162RGB16, NULL } }, { GREY16, YXY, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { BW, XYZ, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, NULL } }, { BW, LAB, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { BW, LABQ, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { BW, LCH, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { BW, CMC, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { BW, CMYK, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2CMYK, NULL } }, { BW, scRGB, { vips_BW2sRGB, vips_sRGB2scRGB, NULL } }, { BW, sRGB, { vips_BW2sRGB, NULL } }, { BW, HSV, { vips_BW2sRGB, vips_sRGB2HSV, NULL } }, { BW, LABS, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { BW, RGB16, { vips_BW2sRGB, vips_sRGB2RGB16, NULL } }, { BW, GREY16, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2BW16, NULL } }, { BW, YXY, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { YXY, XYZ, { vips_Yxy2XYZ, NULL } }, { YXY, LAB, { vips_Yxy2XYZ, vips_XYZ2Lab, NULL } }, { YXY, LABQ, { vips_Yxy2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { YXY, LCH, { vips_Yxy2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { YXY, CMC, { vips_Yxy2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { YXY, LABS, { vips_Yxy2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { YXY, CMYK, { vips_Yxy2XYZ, vips_XYZ2CMYK, NULL } }, { YXY, scRGB, { vips_Yxy2XYZ, vips_XYZ2scRGB, NULL } }, { YXY, sRGB, { vips_Yxy2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { YXY, HSV, { vips_Yxy2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { YXY, BW, { vips_Yxy2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { YXY, RGB16, { vips_Yxy2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { YXY, GREY16, { vips_Yxy2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } } }; /* Is an image in a supported colourspace. */ /** * vips_colourspace_issupported: * @image: input image * * Test if @image is in a colourspace that vips_colourspace() can process. * * Returns: %TRUE if @image is in a supported colourspace. */ gboolean vips_colourspace_issupported( const VipsImage *image ) { VipsInterpretation interpretation; int i; /* Treat RGB as sRGB. If you want some other treatment, * you'll need to use the icc funcs. */ interpretation = vips_image_guess_interpretation( image ); if( interpretation == VIPS_INTERPRETATION_RGB ) interpretation = VIPS_INTERPRETATION_sRGB; for( i = 0; i < VIPS_NUMBER( vips_colour_routes ); i++ ) if( vips_colour_routes[i].from == interpretation ) return( TRUE ); return( FALSE ); } typedef struct _VipsColourspace { VipsOperation parent_instance; VipsImage *in; VipsImage *out; VipsInterpretation space; VipsInterpretation source_space; } VipsColourspace; typedef VipsOperationClass VipsColourspaceClass; G_DEFINE_TYPE( VipsColourspace, vips_colourspace, VIPS_TYPE_OPERATION ); static int vips_colourspace_build( VipsObject *object ) { VipsColourspace *colourspace = (VipsColourspace *) object; int i, j; VipsImage *x; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); VipsImage **pipe = (VipsImage **) vips_object_local_array( object, MAX_STEPS ); VipsInterpretation interpretation; /* Verify that all input args have been set. */ if( VIPS_OBJECT_CLASS( vips_colourspace_parent_class )-> build( object ) ) return( -1 ); x = colourspace->in; /* Unpack radiance-coded images. We can't use interpretation for this, * since rad images can be scRGB or XYZ. */ if( x->Coding == VIPS_CODING_RAD ) { if( vips_rad2float( x, &t[0], NULL ) ) return( -1 ); x = t[0]; } if( vips_object_argument_isset( object, "source_space" ) ) interpretation = colourspace->source_space; else interpretation = vips_image_guess_interpretation( x ); /* Treat RGB as sRGB. If you want some other treatment, * you'll need to use the icc funcs. */ if( interpretation == VIPS_INTERPRETATION_RGB ) interpretation = VIPS_INTERPRETATION_sRGB; /* No conversion necessary. */ if( interpretation == colourspace->space ) { g_object_set( colourspace, "out", vips_image_new(), NULL ); return( vips_image_write( colourspace->in, colourspace->out ) ); } for( i = 0; i < VIPS_NUMBER( vips_colour_routes ); i++ ) if( vips_colour_routes[i].from == interpretation && vips_colour_routes[i].to == colourspace->space ) break; if( i == VIPS_NUMBER( vips_colour_routes ) ) { vips_error( "vips_colourspace", _( "no known route from '%s' to '%s'" ), vips_enum_nick( VIPS_TYPE_INTERPRETATION, interpretation ), vips_enum_nick( VIPS_TYPE_INTERPRETATION, colourspace->space ) ); return( -1 ); } for( j = 0; vips_colour_routes[i].route[j]; j++ ) { if( vips_colour_routes[i].route[j]( x, &pipe[j], NULL ) ) return( -1 ); x = pipe[j]; } g_object_set( colourspace, "out", vips_image_new(), NULL ); if( vips_image_write( x, colourspace->out ) ) return( -1 ); return( 0 ); } static void vips_colourspace_class_init( VipsColourspaceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "colourspace"; vobject_class->description = _( "convert to a new colorspace" ); vobject_class->build = vips_colourspace_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourspace, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsColourspace, out ) ); VIPS_ARG_ENUM( class, "space", 6, _( "Space" ), _( "Destination color space" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourspace, space ), VIPS_TYPE_INTERPRETATION, VIPS_INTERPRETATION_sRGB ); VIPS_ARG_ENUM( class, "source_space", 6, _( "Source space" ), _( "Source color space" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsColourspace, source_space ), VIPS_TYPE_INTERPRETATION, VIPS_INTERPRETATION_sRGB ); } static void vips_colourspace_init( VipsColourspace *colourspace ) { colourspace->source_space = VIPS_INTERPRETATION_sRGB; } /** * vips_colourspace: (method) * @in: input image * @out: (out): output image * @space: convert to this colour space * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @source_space: input colour space * * This operation looks at the interpretation field of @in (or uses * @source_space, if set) and runs * a set of colourspace conversion functions to move it to @space. * * For example, given an image tagged as #VIPS_INTERPRETATION_YXY, running * vips_colourspace() with @space set to #VIPS_INTERPRETATION_LAB will * convert with vips_Yxy2XYZ() and vips_XYZ2Lab(). * * See also: vips_colourspace_issupported(), * vips_image_guess_interpretation(). * * Returns: 0 on success, -1 on error. */ int vips_colourspace( VipsImage *in, VipsImage **out, VipsInterpretation space, ... ) { va_list ap; int result; va_start( ap, space ); result = vips_call_split( "colourspace", ap, in, out, space ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/dE00.c000066400000000000000000000143661361153320700170230ustar00rootroot00000000000000/* dE00.c * * Modified: * 31/10/12 * - from dE76.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef struct _VipsdE00 { VipsColourDifference parent_instance; } VipsdE00; typedef VipsColourDifferenceClass VipsdE00Class; G_DEFINE_TYPE( VipsdE00, vips_dE00, VIPS_TYPE_COLOUR_DIFFERENCE ); /** * vips_col_dE00: * @L1: Input coordinate 1 * @a1: Input coordinate 1 * @b1: Input coordinate 1 * @L2: Input coordinate 2 * @a2: Input coordinate 2 * @b2: Input coordinate 2 * * CIEDE2000, from: * * Luo, Cui, Rigg, "The Development of the CIE 2000 Colour-Difference * Formula: CIEDE2000", COLOR research and application, pp 340 * * Returns: CIE dE2000 colour difference. */ float vips_col_dE00( float L1, float a1, float b1, float L2, float a2, float b2 ) { /* Code if you want XYZ params and the colour temp used in the reference float vips_col_dE00( float X1, float Y1, float Z1, float X2, float Y2, float Z2 ) { const double X0 = 94.811; const double Y0 = 100.0; const double Z0 = 107.304; #define f(I) ((I) > 0.008856 ? \ cbrt( (I), 1.0 / 3.0 ) : 7.7871 * (I) + (16.0 / 116.0)) double nX1 = f( X1 / X0 ); double nY1 = f( Y1 / Y0 ); double nZ1 = f( Z1 / Z0 ); double L1 = 116 * nY1 - 16; double a1 = 500 * (nX1 - nY1); double b1 = 200 * (nY1 - nZ1); double nX2 = f( X2 / X0 ); double nY2 = f( Y2 / Y0 ); double nZ2 = f( Z2 / Z0 ); double L2 = 116 * nY2 - 16; double a2 = 500 * (nX2 - nY2); double b2 = 200 * (nY2 - nZ2); */ /* Chroma and mean chroma (C bar) */ double C1 = sqrt( a1 * a1 + b1 * b1 ); double C2 = sqrt( a2 * a2 + b2 * b2 ); double Cb = (C1 + C2) / 2; /* G */ double Cb7 = Cb * Cb * Cb * Cb * Cb * Cb * Cb; double G = 0.5 * (1 - sqrt( Cb7 / (Cb7 + pow( 25, 7 )) )); /* L', a', b', C', h' */ double L1d = L1; double a1d = (1 + G) * a1; double b1d = b1; double C1d = sqrt( a1d * a1d + b1d * b1d ); double h1d = vips_col_ab2h( a1d, b1d ); double L2d = L2; double a2d = (1 + G) * a2; double b2d = b2; double C2d = sqrt( a2d * a2d + b2d * b2d ); double h2d = vips_col_ab2h( a2d, b2d ); /* L' bar, C' bar, h' bar */ double Ldb = (L1d + L2d) / 2; double Cdb = (C1d + C2d) / 2; double hdb = VIPS_FABS( h1d - h2d ) < 180 ? (h1d + h2d) / 2 : VIPS_FABS( h1d + h2d - 360 ) / 2; /* dtheta, RC */ double hdbd = (hdb - 275) / 25; double dtheta = 30 * exp( -(hdbd * hdbd) ); double Cdb7 = Cdb * Cdb * Cdb * Cdb * Cdb * Cdb * Cdb; double RC = 2 * sqrt( Cdb7 / (Cdb7 + pow( 25, 7 )) ); /* RT, T. */ double RT = -sin( VIPS_RAD( 2 * dtheta ) ) * RC; double T = 1 - 0.17 * cos( VIPS_RAD( hdb - 30 ) ) + 0.24 * cos( VIPS_RAD( 2 * hdb ) ) + 0.32 * cos( VIPS_RAD( 3 * hdb + 6 ) ) - 0.20 * cos( VIPS_RAD( 4 * hdb - 63 ) ); /* SL, SC, SH */ double Ldb50 = Ldb - 50; double SL = 1 + (0.015 * Ldb50 * Ldb50) / sqrt( 20 + Ldb50 * Ldb50); double SC = 1 + 0.045 * Cdb; double SH = 1 + 0.015 * Cdb * T; /* hue difference ... careful! */ double dhd = VIPS_FABS( h1d - h2d ) < 180 ? h1d - h2d : 360 - (h1d - h2d); /* dLd, dCd dHd */ double dLd = L1d - L2d; double dCd = C1d - C2d; double dHd = 2 * sqrt( C1d * C2d ) * sin( VIPS_RAD( dhd / 2 ) ); /* Parametric factors for viewing parameters. */ const double kL = 1.0; const double kC = 1.0; const double kH = 1.0; /* Normalised terms. */ double nL = dLd / (kL * SL); double nC = dCd / (kC * SC); double nH = dHd / (kH * SH); /* dE00!! */ double dE00 = sqrt( nL * nL + nC * nC + nH * nH + RT * nC * nH ); /* printf( "X1 = %g, Y1 = %g, Z1 = %g\n", X1, Y1, Z1 ); printf( "X2 = %g, Y2 = %g, Z2 = %g\n", X2, Y2, Z2 ); printf( "L1 = %g, a1 = %g, b1 = %g\n", L1, a1, b1 ); printf( "L2 = %g, a2 = %g, b2 = %g\n", L2, a2, b2 ); printf( "L1d = %g, a1d = %g, b1d = %g, C1d = %g, h1d = %g\n", L1d, a1d, b1d, C1d, h1d ); printf( "L2d = %g, a2d = %g, b2d = %g, C2d = %g, h2d = %g\n", L2d, a2d, b2d, C2d, h2d ); printf( "G = %g, T = %g, SL = %g, SC = %g, SH = %g, RT = %g\n", G, T, SL, SC, SH, RT ); printf( "dE00 = %g\n", dE00 ); */ return( dE00 ); } /* Find the difference between two buffers of LAB data. */ void vips_dE00_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float *p1 = (float *) in[0]; float *p2 = (float *) in[1]; float *q = (float *) out; int x; for( x = 0; x < width; x++ ) { q[x] = vips_col_dE00( p1[0], p1[1], p1[2], p2[0], p2[1], p2[2] ); p1 += 3; p2 += 3; } } static void vips_dE00_class_init( VipsdE00Class *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "dE00"; object_class->description = _( "calculate dE00" ); colour_class->process_line = vips_dE00_line; } static void vips_dE00_init( VipsdE00 *dE00 ) { VipsColourDifference *difference = VIPS_COLOUR_DIFFERENCE( dE00 ); difference->interpretation = VIPS_INTERPRETATION_LAB; } /** * vips_dE00: * @left: first input image * @right: second input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Calculate dE 00. * * Returns: 0 on success, -1 on error */ int vips_dE00( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "dE00", ap, left, right, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/dE76.c000066400000000000000000000063511361153320700170330ustar00rootroot00000000000000/* dE76.c * * Modified: * 16/11/94 JC * - partialed! * 31/10/09 * - use im__colour_binary() * - gtkdoc comment * 25/10/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef struct _VipsdE76 { VipsColourDifference parent_instance; } VipsdE76; typedef VipsColourDifferenceClass VipsdE76Class; G_DEFINE_TYPE( VipsdE76, vips_dE76, VIPS_TYPE_COLOUR_DIFFERENCE ); /** * vips_pythagoras: * @L1: Input coordinate 1 * @a1: Input coordinate 1 * @b1: Input coordinate 1 * @L2: Input coordinate 2 * @a2: Input coordinate 2 * @b2: Input coordinate 2 * * Pythagorean distance between two points in colour space. Lab/XYZ/CMC etc. */ float vips_pythagoras( float L1, float a1, float b1, float L2, float a2, float b2 ) { float dL = L1 - L2; float da = a1 - a2; float db = b1 - b2; return( sqrt( dL * dL + da * da + db * db ) ); } /* Find the difference between two buffers of LAB data. */ void vips__pythagoras_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p1 = (float *) in[0]; float * restrict p2 = (float *) in[1]; float * restrict q = (float *) out; int x; for( x = 0; x < width; x++ ) { float dL = p1[0] - p2[0]; float da = p1[1] - p2[1]; float db = p1[2] - p2[2]; q[x] = sqrt( dL * dL + da * da + db * db ); p1 += 3; p2 += 3; } } static void vips_dE76_class_init( VipsdE76Class *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "dE76"; object_class->description = _( "calculate dE76" ); colour_class->process_line = vips__pythagoras_line; } static void vips_dE76_init( VipsdE76 *dE76 ) { VipsColourDifference *difference = VIPS_COLOUR_DIFFERENCE( dE76 ); difference->interpretation = VIPS_INTERPRETATION_LAB; } /** * vips_dE76: * @left: first input image * @right: second input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Calculate dE 76. * * Returns: 0 on success, -1 on error */ int vips_dE76( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "dE76", ap, left, right, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/dECMC.c000066400000000000000000000050651361153320700172020ustar00rootroot00000000000000/* dECMC.c * * Modified: * 31/10/12 * - from dE76.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pcolour.h" typedef struct _VipsdECMC { VipsColourDifference parent_instance; } VipsdECMC; typedef VipsColourDifferenceClass VipsdECMCClass; G_DEFINE_TYPE( VipsdECMC, vips_dECMC, VIPS_TYPE_COLOUR_DIFFERENCE ); static void vips_dECMC_class_init( VipsdECMCClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "dECMC"; object_class->description = _( "calculate dECMC" ); colour_class->process_line = vips__pythagoras_line; } static void vips_dECMC_init( VipsdECMC *dECMC ) { VipsColourDifference *difference = VIPS_COLOUR_DIFFERENCE( dECMC ); difference->interpretation = VIPS_INTERPRETATION_CMC; } /** * vips_dECMC: * @left: first input image * @right: second input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Calculate dE CMC. The input images are transformed to CMC colour space and * the euclidean distance between corresponding pixels calculated. * * To calculate a colour difference with values for (l:c) other than (1:1), * transform the two source images to CMC yourself, scale the channels * appropriately, and call this function. * * See also: vips_colourspace() * * Returns: 0 on success, -1 on error */ int vips_dECMC( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "dECMC", ap, left, right, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/float2rad.c000066400000000000000000000164651361153320700202130ustar00rootroot00000000000000/* Convert float to Radiance 32bit packed format * * 23/3/09 * - from im_rad2float and Radiance sources * 2/11/09 * - gtkdoc * 20/9/12 * - redo as a class * 13/12/12 * - tag as scRGB rather than XYZ */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Sections of this file from Greg Ward and Radiance with kind permission. The Radience copyright notice appears below. */ /* ==================================================================== * The Radiance Software License, Version 1.0 * * Copyright (c) 1990 - 2009 The Regents of the University of California, * through Lawrence Berkeley National Laboratory. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes Radiance software * (http://radsite.lbl.gov/) * developed by the Lawrence Berkeley National Laboratory * (http://www.lbl.gov/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Radiance," "Lawrence Berkeley National Laboratory" * and "The Regents of the University of California" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact radiance@radsite.lbl.gov. * * 5. Products derived from this software may not be called "Radiance", * nor may "Radiance" appear in their name, without prior written * permission of Lawrence Berkeley National Laboratory. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of Lawrence Berkeley National Laboratory. For more * information on Lawrence Berkeley National Laboratory, please see * . */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* Begin copy-paste from Radiance sources. */ #define RED 0 #define GRN 1 #define BLU 2 #define CIEX 0 /* or, if input is XYZ... */ #define CIEY 1 #define CIEZ 2 #define EXP 3 /* exponent same for either format */ #define COLXS 128 /* excess used for exponent */ #define WHT 3 /* used for RGBPRIMS type */ #undef BYTE #define BYTE unsigned char /* 8-bit unsigned integer */ typedef BYTE COLR[4]; /* red, green, blue (or X,Y,Z), exponent */ typedef float COLORV; typedef COLORV COLOR[3]; /* red, green, blue (or X,Y,Z) */ #define copycolor(c1,c2) ((c1)[0]=(c2)[0],(c1)[1]=(c2)[1],(c1)[2]=(c2)[2]) static void setcolr( COLR clr, double r, double g, double b ) /* assign a short color value */ { double d; int e; d = r > g ? r : g; if (b > d) d = b; if (d <= 1e-32) { clr[RED] = clr[GRN] = clr[BLU] = 0; clr[EXP] = 0; return; } d = frexp(d, &e) * 255.9999 / d; if (r > 0.0) clr[RED] = r * d; else clr[RED] = 0; if (g > 0.0) clr[GRN] = g * d; else clr[GRN] = 0; if (b > 0.0) clr[BLU] = b * d; else clr[BLU] = 0; clr[EXP] = e + COLXS; } /* End copy-paste from Radiance sources. */ typedef VipsColourCode VipsFloat2rad; typedef VipsColourCodeClass VipsFloat2radClass; G_DEFINE_TYPE( VipsFloat2rad, vips_float2rad, VIPS_TYPE_COLOUR_CODE ); static void vips_float2rad_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { COLOR *inp = (COLOR *) in[0]; COLR *outbuf = (COLR *) out; while( width-- > 0 ) { setcolr( outbuf[0], inp[0][RED], inp[0][GRN], inp[0][BLU] ); inp++; outbuf++; } } static void vips_float2rad_class_init( VipsFloat2radClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "float2rad"; object_class->description = _( "transform float RGB to Radiance coding" ); colour_class->process_line = vips_float2rad_line; } static void vips_float2rad_init( VipsFloat2rad *float2rad ) { VipsColour *colour = VIPS_COLOUR( float2rad ); VipsColourCode *code = VIPS_COLOUR_CODE( float2rad ); colour->coding = VIPS_CODING_RAD; colour->interpretation = VIPS_INTERPRETATION_scRGB; colour->format = VIPS_FORMAT_UCHAR; colour->input_bands = 3; colour->bands = 4; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_FLOAT; } /** * vips_float2rad: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert a three-band float image to Radiance 32-bit packed format. * * See also: vips_rad2float(), #VIPS_CODING_RAD, vips_LabQ2Lab(). * * Returns: 0 on success, -1 on error. */ int vips_float2rad( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "float2rad", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/icc_transform.c000066400000000000000000001057571361153320700211710ustar00rootroot00000000000000/* Transform images with little cms * * 26/4/02 JC * 26/8/05 * - attach profiles and intents to output images * - added im_icc_import_embedded() to import with an embedded profile * 12/5/06 * - lock around cmsDoTransform * 23/1/07 * - set RGB16 on 16-bit RGB export * 6/4/09 * - catch lcms error messages * 2/11/09 * - gtkdoc * - small cleanups * - call attach_profile() before im_wrapone() so the profile will get * written if we are wrinting to a file * 2/8/10 * - add lcms2 * 12/7/11 * - import and export cast @in to an appropriate format for you * 25/9/12 * - redo as a class * 14/5/13 * - import and export would segv on very wide images * 12/11/13 * - support XYZ as an alternative PCS * 10/9/14 * - support GRAY as an input and output space * 29/9/14 * - check input profiles for compatibility with the input image, thanks * James * 26/6/15 * - better profile sanity checking for icc import * 2/8/17 * - remove lcms1 support, it was untested * 10/10/17 * - more input profile sanity tests * 8/3/18 * - attach fallback profile on import if we used it * 28/12/18 * - remove warning messages from vips_icc_is_compatible_profile() since * they can be triggered under normal circumstances * 17/4/19 kleisauke * - better rejection of broken embedded profiles */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_LCMS2 #include #include #include /* Has to be before VIPS to avoid nameclashes. */ #include #include #include "pcolour.h" /* Call lcms with up to this many pixels at once. */ #define PIXEL_BUFFER_SIZE (10000) /** * VipsIntent: * @VIPS_INTENT_PERCEPTUAL: perceptual rendering intent * @VIPS_INTENT_RELATIVE: relative colorimetric rendering intent * @VIPS_INTENT_SATURATION: saturation rendering intent * @VIPS_INTENT_ABSOLUTE: absolute colorimetric rendering intent * * The rendering intent. #VIPS_INTENT_ABSOLUTE is best for * scientific work, #VIPS_INTENT_RELATIVE is usually best for * accurate communication with other imaging libraries. */ /** * VipsPCS: * @VIPS_PCS_LAB: use CIELAB D65 as the Profile Connection Space * @VIPS_PCS_XYZ: use XYZ as the Profile Connection Space * * Pick a Profile Connection Space for vips_icc_import() and * vips_icc_export(). LAB is usually best, XYZ can be more convenient in some * cases. */ /** * vips_icc_present: * * VIPS can optionally be built without the ICC library. Use this function to * test for its availability. * * Returns: non-zero if the ICC library is present. */ int vips_icc_present( void ) { return( 1 ); } #define VIPS_TYPE_ICC (vips_icc_get_type()) #define VIPS_ICC( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_ICC, VipsIcc )) #define VIPS_ICC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_ICC, VipsIccClass)) #define VIPS_IS_ICC( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_ICC )) #define VIPS_IS_ICC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_ICC )) #define VIPS_ICC_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_ICC, VipsIccClass )) typedef struct _VipsIcc { VipsColourCode parent_instance; VipsIntent intent; VipsPCS pcs; int depth; VipsBlob *in_blob; cmsHPROFILE in_profile; VipsBlob *out_blob; cmsHPROFILE out_profile; cmsUInt32Number in_icc_format; cmsUInt32Number out_icc_format; cmsHTRANSFORM trans; } VipsIcc; typedef VipsColourCodeClass VipsIccClass; G_DEFINE_ABSTRACT_TYPE( VipsIcc, vips_icc, VIPS_TYPE_COLOUR_CODE ); /* Error from lcms. */ static void icc_error( cmsContext context, cmsUInt32Number code, const char *text ) { vips_error( "VipsIcc", "%s", text ); } static void vips_icc_dispose( GObject *gobject ) { VipsIcc *icc = (VipsIcc *) gobject; VIPS_FREEF( cmsDeleteTransform, icc->trans ); VIPS_FREEF( cmsCloseProfile, icc->in_profile ); VIPS_FREEF( cmsCloseProfile, icc->out_profile ); if( icc->in_blob ) { vips_area_unref( (VipsArea *) icc->in_blob ); icc->in_blob = NULL; } if( icc->out_blob ) { vips_area_unref( (VipsArea *) icc->out_blob ); icc->out_blob = NULL; } G_OBJECT_CLASS( vips_icc_parent_class )->dispose( gobject ); } /* Is a profile just a pcs stub. */ static gboolean is_pcs( cmsHPROFILE profile ) { return( cmsGetColorSpace( profile ) == cmsSigLabData || cmsGetColorSpace( profile ) == cmsSigXYZData ); } static int vips_icc_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsColour *colour = (VipsColour *) object; VipsColourCode *code = (VipsColourCode *) object; VipsIcc *icc = (VipsIcc *) object; if( icc->depth != 8 && icc->depth != 16 ) { vips_error( class->nickname, "%s", _( "depth must be 8 or 16" ) ); return( -1 ); } if( icc->in_profile && code->in ) { switch( cmsGetColorSpace( icc->in_profile ) ) { case cmsSigRgbData: colour->input_bands = 3; code->input_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR; icc->in_icc_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? TYPE_RGB_16 : TYPE_RGB_8; break; case cmsSigGrayData: colour->input_bands = 1; code->input_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR; icc->in_icc_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? TYPE_GRAY_16 : TYPE_GRAY_8; break; case cmsSigCmykData: colour->input_bands = 4; code->input_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR; icc->in_icc_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? TYPE_CMYK_16 : TYPE_CMYK_8; break; case cmsSigLabData: colour->input_bands = 3; code->input_format = VIPS_FORMAT_FLOAT; code->input_interpretation = VIPS_INTERPRETATION_LAB; icc->in_icc_format = TYPE_Lab_16; break; case cmsSigXYZData: colour->input_bands = 3; code->input_format = VIPS_FORMAT_FLOAT; icc->in_icc_format = TYPE_XYZ_16; break; default: vips_error( class->nickname, _( "unimplemented input color space 0x%x" ), cmsGetColorSpace( icc->in_profile ) ); return( -1 ); } } if( icc->out_profile ) switch( cmsGetColorSpace( icc->out_profile ) ) { case cmsSigRgbData: colour->interpretation = icc->depth == 8 ? VIPS_INTERPRETATION_sRGB : VIPS_INTERPRETATION_RGB16; colour->format = icc->depth == 8 ? VIPS_FORMAT_UCHAR : VIPS_FORMAT_USHORT; colour->bands = 3; icc->out_icc_format = icc->depth == 16 ? TYPE_RGB_16 : TYPE_RGB_8; break; case cmsSigGrayData: colour->interpretation = icc->depth == 8 ? VIPS_INTERPRETATION_B_W : VIPS_INTERPRETATION_GREY16; colour->format = icc->depth == 8 ? VIPS_FORMAT_UCHAR : VIPS_FORMAT_USHORT; colour->bands = 1; icc->out_icc_format = icc->depth == 16 ? TYPE_GRAY_16 : TYPE_GRAY_8; break; case cmsSigCmykData: colour->interpretation = VIPS_INTERPRETATION_CMYK; colour->format = icc->depth == 8 ? VIPS_FORMAT_UCHAR : VIPS_FORMAT_USHORT; colour->bands = 4; icc->out_icc_format = icc->depth == 16 ? TYPE_CMYK_16 : TYPE_CMYK_8; break; case cmsSigLabData: colour->interpretation = VIPS_INTERPRETATION_LAB; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 3; icc->out_icc_format = TYPE_Lab_16; break; case cmsSigXYZData: colour->interpretation = VIPS_INTERPRETATION_XYZ; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 3; icc->out_icc_format = TYPE_XYZ_16; break; default: vips_error( class->nickname, _( "unimplemented output color space 0x%x" ), cmsGetColorSpace( icc->out_profile ) ); return( -1 ); } /* At least one must be a device profile. */ if( icc->in_profile && icc->out_profile && is_pcs( icc->in_profile ) && is_pcs( icc->out_profile ) ) { vips_error( class->nickname, "%s", _( "no device profile" ) ); return( -1 ); } /* Use cmsFLAGS_NOCACHE to disable the 1-pixel cache and make * calling cmsDoTransform() from multiple threads safe. */ if( !(icc->trans = cmsCreateTransform( icc->in_profile, icc->in_icc_format, icc->out_profile, icc->out_icc_format, icc->intent, cmsFLAGS_NOCACHE )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_icc_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_icc_class_init( VipsIccClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->dispose = vips_icc_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "icc"; object_class->description = _( "transform using ICC profiles" ); object_class->build = vips_icc_build; VIPS_ARG_ENUM( class, "intent", 6, _( "Intent" ), _( "Rendering intent" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIcc, intent ), VIPS_TYPE_INTENT, VIPS_INTENT_RELATIVE ); VIPS_ARG_ENUM( class, "pcs", 6, _( "PCS" ), _( "Set Profile Connection Space" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIcc, pcs ), VIPS_TYPE_PCS, VIPS_PCS_LAB ); cmsSetLogErrorHandler( icc_error ); } static void vips_icc_init( VipsIcc *icc ) { icc->intent = VIPS_INTENT_RELATIVE; icc->pcs = VIPS_PCS_LAB; icc->depth = 8; } typedef struct _VipsIccImport { VipsIcc parent_instance; gboolean embedded; char *input_profile_filename; } VipsIccImport; typedef VipsIccClass VipsIccImportClass; G_DEFINE_TYPE( VipsIccImport, vips_icc_import, VIPS_TYPE_ICC ); static void vips_check_intent( const char *domain, cmsHPROFILE profile, VipsIntent intent, int direction ) { if( profile && !cmsIsIntentSupported( profile, intent, direction ) ) g_warning( _( "%s: intent %d (%s) not supported by " "%s profile; falling back to default intent" ), domain, intent, vips_enum_nick( VIPS_TYPE_INTENT, intent ), direction == LCMS_USED_AS_INPUT ? _( "input" ) : _( "output" ) ); } static int vips_icc_profile_needs_bands( cmsHPROFILE profile ) { int needs_bands; switch( cmsGetColorSpace( profile ) ) { case cmsSigGrayData: needs_bands = 1; break; case cmsSigRgbData: case cmsSigLabData: case cmsSigXYZData: needs_bands = 3; break; case cmsSigCmykData: needs_bands = 4; break; default: needs_bands = -1; break; } return( needs_bands ); } /* How many bands we expect to see from an image after preprocessing by our * parent classes. This is a bit fragile :-( * * FIXME ... split the _build() for colour into separate preprocess / process * / postprocess phases so we can load profiles after preprocess but before * actual processing takes place. */ static int vips_image_expected_bands( VipsImage *image ) { int expected_bands; switch( image->Type ) { case VIPS_INTERPRETATION_B_W: case VIPS_INTERPRETATION_GREY16: expected_bands = 1; break; case VIPS_INTERPRETATION_XYZ: case VIPS_INTERPRETATION_LAB: case VIPS_INTERPRETATION_LABQ: case VIPS_INTERPRETATION_RGB: case VIPS_INTERPRETATION_CMC: case VIPS_INTERPRETATION_LCH: case VIPS_INTERPRETATION_LABS: case VIPS_INTERPRETATION_sRGB: case VIPS_INTERPRETATION_YXY: case VIPS_INTERPRETATION_RGB16: case VIPS_INTERPRETATION_scRGB: case VIPS_INTERPRETATION_HSV: expected_bands = 3; break; case VIPS_INTERPRETATION_CMYK: expected_bands = 4; break; case VIPS_INTERPRETATION_MULTIBAND: case VIPS_INTERPRETATION_HISTOGRAM: case VIPS_INTERPRETATION_MATRIX: case VIPS_INTERPRETATION_FOURIER: default: expected_bands = image->Bands; break; } expected_bands = VIPS_MIN( expected_bands, image->Bands ); return( expected_bands ); } /* What cmsColorSpaceSignature do we expect this image to be (roughly) after * preprocessing. Again, fragile :( see the FIXME above. */ static cmsColorSpaceSignature vips_image_expected_sig( VipsImage *image ) { cmsColorSpaceSignature expected_sig; switch( image->Type ) { case VIPS_INTERPRETATION_B_W: case VIPS_INTERPRETATION_GREY16: expected_sig = cmsSigGrayData; break; case VIPS_INTERPRETATION_LAB: case VIPS_INTERPRETATION_LABQ: case VIPS_INTERPRETATION_LABS: expected_sig = cmsSigLabData; break; case VIPS_INTERPRETATION_sRGB: case VIPS_INTERPRETATION_RGB: case VIPS_INTERPRETATION_RGB16: case VIPS_INTERPRETATION_scRGB: expected_sig = cmsSigRgbData; break; case VIPS_INTERPRETATION_XYZ: expected_sig = cmsSigXYZData; break; case VIPS_INTERPRETATION_CMYK: expected_sig = cmsSigCmykData; break; case VIPS_INTERPRETATION_HSV: expected_sig = cmsSigHsvData; break; case VIPS_INTERPRETATION_YXY: expected_sig = cmsSigYxyData; break; case VIPS_INTERPRETATION_MULTIBAND: /* A generic many-band image. Try to guess from the number of * image bands instead. */ switch( image->Bands ) { case 1: case 2: expected_sig = cmsSigGrayData; break; case 3: expected_sig = cmsSigRgbData; break; case 4: case 5: expected_sig = cmsSigCmykData; break; default: expected_sig = -1; break; } break; case VIPS_INTERPRETATION_LCH: case VIPS_INTERPRETATION_CMC: case VIPS_INTERPRETATION_HISTOGRAM: case VIPS_INTERPRETATION_MATRIX: case VIPS_INTERPRETATION_FOURIER: default: expected_sig = -1; break; } return( expected_sig ); } /* Get from an image. */ static VipsBlob * vips_icc_get_profile_image( VipsImage *image ) { const void *data; size_t size; if( !vips_image_get_typeof( image, VIPS_META_ICC_NAME ) ) return( NULL ); if( vips_image_get_blob( image, VIPS_META_ICC_NAME, &data, &size ) ) return( NULL ); return( vips_blob_new( NULL, data, size ) ); } /* Load a profile from a blob and check compatibility. */ static cmsHPROFILE vips_icc_load_profile_blob( VipsBlob *blob, VipsImage *image ) { const void *data; size_t size; cmsHPROFILE profile; data = vips_blob_get( blob, &size ); if( !(profile = cmsOpenProfileFromMem( data, size )) ) { g_warning( "%s", _( "corrupt profile" ) ); return( NULL ); } if( image && vips_image_expected_bands( image ) != vips_icc_profile_needs_bands( profile ) ) { VIPS_FREEF( cmsCloseProfile, profile ); g_warning( "%s", _( "profile incompatible with image" ) ); return( NULL ); } if( image && vips_image_expected_sig( image ) != cmsGetColorSpace( profile ) ) { VIPS_FREEF( cmsCloseProfile, profile ); g_warning( "%s", _( "profile colourspace differs from image" ) ); return( NULL ); } return( profile ); } /* Verify that a blob is not corrupt and is compatible with this image. * * unref the blob if it's useless. */ static cmsHPROFILE vips_icc_verify_blob( VipsBlob **blob, VipsImage *image ) { if( *blob ) { cmsHPROFILE profile; if( !(profile = vips_icc_load_profile_blob( *blob, image )) ) { vips_area_unref( (VipsArea *) *blob ); *blob = NULL; } return( profile ); } return( NULL ); } static int vips_icc_import_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsColour *colour = (VipsColour *) object; VipsColourCode *code = (VipsColourCode *) object; VipsIcc *icc = (VipsIcc *) object; VipsIccImport *import = (VipsIccImport *) object; gboolean used_fallback; /* We read the input profile like this: * * embedded filename action * 0 0 image * 1 0 image * 0 1 file * 1 1 image, then fall back to file */ used_fallback = FALSE; if( code->in && (import->embedded || !import->input_profile_filename) ) { icc->in_blob = vips_icc_get_profile_image( code->in ); icc->in_profile = vips_icc_verify_blob( &icc->in_blob, code->in ); } if( code->in && !icc->in_blob && import->input_profile_filename ) { if( vips_profile_load( import->input_profile_filename, &icc->in_blob, NULL ) ) return( -1 ); icc->in_profile = vips_icc_verify_blob( &icc->in_blob, code->in ); used_fallback = TRUE; } if( !icc->in_profile ) { vips_error( class->nickname, "%s", _( "no input profile" ) ); return( -1 ); } vips_check_intent( class->nickname, icc->in_profile, icc->intent, LCMS_USED_AS_INPUT ); if( icc->pcs == VIPS_PCS_LAB ) { cmsCIExyY white; cmsWhitePointFromTemp( &white, 6500 ); icc->out_profile = cmsCreateLab4Profile( &white ); } else icc->out_profile = cmsCreateXYZProfile(); if( VIPS_OBJECT_CLASS( vips_icc_import_parent_class )->build( object ) ) return( -1 ); /* If we used the fallback profile, we need to attach it to the PCS * image, since the PCS image needs a route back to device space. * * In the same way, we don't remove the embedded input profile on * import. */ if( used_fallback && icc->in_blob ) { const void *data; size_t size; data = vips_blob_get( icc->in_blob, &size ); vips_image_set_blob( colour->out, VIPS_META_ICC_NAME, NULL, data, size ); } return( 0 ); } static void decode_lab( guint16 *fixed, float *lab, int n ) { int i; for( i = 0; i < n; i++ ) { lab[0] = (double) fixed[0] / 652.800; lab[1] = ((double) fixed[1] / 256.0) - 128.0; lab[2] = ((double) fixed[2] / 256.0) - 128.0; lab += 3; fixed += 3; } } #define X_FAC (VIPS_D50_X0 * 32768 / (VIPS_D65_X0 * 100)) #define Y_FAC (VIPS_D50_Y0 * 32768 / (VIPS_D65_Y0 * 100)) #define Z_FAC (VIPS_D50_Z0 * 32768 / (VIPS_D65_Z0 * 100)) static void decode_xyz( guint16 *fixed, float *xyz, int n ) { int i; for( i = 0; i < n; i++ ) { xyz[0] = (double) fixed[0] / X_FAC; xyz[1] = (double) fixed[1] / Y_FAC; xyz[2] = (double) fixed[2] / Z_FAC; xyz += 3; fixed += 3; } } /* Process a buffer of data. */ static void vips_icc_import_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { VipsIcc *icc = (VipsIcc *) colour; VipsPel *p; float *q; int i; /* Buffer of encoded 16-bit pixels we transform. */ guint16 encoded[3 * PIXEL_BUFFER_SIZE]; p = (VipsPel *) in[0]; q = (float *) out; for( i = 0; i < width; i += PIXEL_BUFFER_SIZE ) { const int chunk = VIPS_MIN( width - i, PIXEL_BUFFER_SIZE ); cmsDoTransform( icc->trans, p, encoded, chunk ); if( icc->pcs == VIPS_PCS_LAB ) decode_lab( encoded, q, chunk ); else decode_xyz( encoded, q, chunk ); p += PIXEL_BUFFER_SIZE * VIPS_IMAGE_SIZEOF_PEL( colour->in[0] ); q += PIXEL_BUFFER_SIZE * 3; } } static void vips_icc_import_class_init( VipsIccImportClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "icc_import"; object_class->description = _( "import from device with ICC profile" ); object_class->build = vips_icc_import_build; colour_class->process_line = vips_icc_import_line; VIPS_ARG_BOOL( class, "embedded", 110, _( "Embedded" ), _( "Use embedded input profile, if available" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIccImport, embedded ), FALSE ); VIPS_ARG_STRING( class, "input_profile", 120, _( "Input profile" ), _( "Filename to load input profile from" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIccImport, input_profile_filename ), NULL ); } static void vips_icc_import_init( VipsIccImport *import ) { } typedef struct _VipsIccExport { VipsIcc parent_instance; char *output_profile_filename; } VipsIccExport; typedef VipsIccClass VipsIccExportClass; G_DEFINE_TYPE( VipsIccExport, vips_icc_export, VIPS_TYPE_ICC ); static int vips_icc_export_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsColour *colour = (VipsColour *) object; VipsColourCode *code = (VipsColourCode *) object; VipsIcc *icc = (VipsIcc *) object; VipsIccExport *export = (VipsIccExport *) object; /* If icc->pcs hasn't been set and this image is tagged as XYZ, swap * to XYZ pcs. This will save a XYZ->LAB conversion when we chain up. */ if( !vips_object_argument_isset( object, "pcs" ) && code->in && code->in->Type == VIPS_INTERPRETATION_XYZ ) icc->pcs = VIPS_PCS_XYZ; if( icc->pcs == VIPS_PCS_LAB ) { cmsCIExyY white; cmsWhitePointFromTemp( &white, 6500 ); icc->in_profile = cmsCreateLab4Profile( &white ); } else icc->in_profile = cmsCreateXYZProfile(); if( code->in && !export->output_profile_filename ) icc->out_blob = vips_icc_get_profile_image( code->in ); if( !icc->out_blob && export->output_profile_filename ) { if( vips_profile_load( export->output_profile_filename, &icc->out_blob, NULL ) ) return( -1 ); colour->profile_filename = export->output_profile_filename; } if( icc->out_blob && !(icc->out_profile = vips_icc_load_profile_blob( icc->out_blob, NULL )) ) { vips_error( class->nickname, "%s", _( "no output profile" ) ); return( -1 ); } if( icc->out_profile ) vips_check_intent( class->nickname, icc->out_profile, icc->intent, LCMS_USED_AS_OUTPUT ); if( VIPS_OBJECT_CLASS( vips_icc_export_parent_class )->build( object ) ) return( -1 ); return( 0 ); } /* Pack a buffer of floats into lcms's fixed-point formats. Cut from * lcms-1.0.8. */ static void encode_lab( float *lab, guint16 *fixed, int n ) { int i; for( i = 0; i < n; i++ ) { float L = lab[0]; float a = lab[1]; float b = lab[2]; if( L < 0 ) L = 0; if( L > 100. ) L = 100.; if( a < -128. ) a = -128; if( a > 127.9961 ) a = 127.9961; if( b < -128. ) b = -128; if( b > 127.9961 ) b = 127.9961; fixed[0] = L * 652.800 + 0.5; fixed[1] = (a + 128.0) * 256.0 + 0.5; fixed[2] = (b + 128.0) * 256.0 + 0.5; lab += 3; fixed += 3; } } #define MAX_ENCODEABLE_XYZ (100 * (1.0 + 32767.0 / 32768.0)) // 1.15 fixed point for XYZ static void encode_xyz( float *xyz, guint16 *fixed, int n ) { int i; for( i = 0; i < n; i++ ) { float X = xyz[0]; float Y = xyz[1]; float Z = xyz[2]; if( X < 0 ) X = 0; if( X > MAX_ENCODEABLE_XYZ ) X = MAX_ENCODEABLE_XYZ; if( Y < 0 ) Y = 0; if( Y > MAX_ENCODEABLE_XYZ ) Y = MAX_ENCODEABLE_XYZ; if( Z < 0 ) Z = 0; if( Z > MAX_ENCODEABLE_XYZ ) Z = MAX_ENCODEABLE_XYZ; fixed[0] = X * X_FAC + 0.5; fixed[1] = Y * Y_FAC + 0.5; fixed[2] = Z * Z_FAC + 0.5; xyz += 3; fixed += 3; } } /* Process a buffer of data. */ static void vips_icc_export_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { VipsIcc *icc = (VipsIcc *) colour; float *p; VipsPel *q; int x; /* Buffer of encoded 16-bit pixels we transform. */ guint16 encoded[3 * PIXEL_BUFFER_SIZE]; p = (float *) in[0]; q = (VipsPel *) out; for( x = 0; x < width; x += PIXEL_BUFFER_SIZE ) { const int chunk = VIPS_MIN( width - x, PIXEL_BUFFER_SIZE ); if( icc->pcs == VIPS_PCS_LAB ) encode_lab( p, encoded, chunk ); else encode_xyz( p, encoded, chunk ); cmsDoTransform( icc->trans, encoded, q, chunk ); p += PIXEL_BUFFER_SIZE * 3; q += PIXEL_BUFFER_SIZE * VIPS_IMAGE_SIZEOF_PEL( colour->out ); } } static void vips_icc_export_class_init( VipsIccExportClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "icc_export"; object_class->description = _( "output to device with ICC profile" ); object_class->build = vips_icc_export_build; colour_class->process_line = vips_icc_export_line; VIPS_ARG_STRING( class, "output_profile", 110, _( "Output profile" ), _( "Filename to load output profile from" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIccExport, output_profile_filename ), NULL ); VIPS_ARG_INT( class, "depth", 130, _( "Depth" ), _( "Output device space depth in bits" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIcc, depth ), 8, 16, 8 ); } static void vips_icc_export_init( VipsIccExport *export ) { } typedef struct _VipsIccTransform { VipsIcc parent_instance; gboolean embedded; char *input_profile_filename; char *output_profile_filename; } VipsIccTransform; typedef VipsIccClass VipsIccTransformClass; G_DEFINE_TYPE( VipsIccTransform, vips_icc_transform, VIPS_TYPE_ICC ); static int vips_icc_transform_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsColour *colour = (VipsColour *) object; VipsColourCode *code = (VipsColourCode *) object; VipsIcc *icc = (VipsIcc *) object; VipsIccTransform *transform = (VipsIccTransform *) object; /* We read the input profile like this: * * embedded filename action * 0 0 image * 1 0 image * 0 1 file * 1 1 image, then fall back to file * * see also import_build. */ if( code->in && (transform->embedded || !transform->input_profile_filename) ) { icc->in_blob = vips_icc_get_profile_image( code->in ); icc->in_profile = vips_icc_verify_blob( &icc->in_blob, code->in ); } if( code->in && !icc->in_blob && transform->input_profile_filename ) { if( vips_profile_load( transform->input_profile_filename, &icc->in_blob, NULL ) ) return( -1 ); icc->in_profile = vips_icc_verify_blob( &icc->in_blob, code->in ); } if( !icc->in_profile ) { vips_error( class->nickname, "%s", _( "no input profile" ) ); return( -1 ); } if( !icc->in_profile ) { vips_error( class->nickname, "%s", _( "no input profile" ) ); return( -1 ); } if( transform->output_profile_filename ) { if( vips_profile_load( transform->output_profile_filename, &icc->out_blob, NULL ) ) return( -1 ); colour->profile_filename = transform->output_profile_filename; } if( icc->out_blob ) icc->out_profile = vips_icc_load_profile_blob( icc->out_blob, NULL ); if( !icc->out_profile ) { vips_error( class->nickname, "%s", _( "no output profile" ) ); return( -1 ); } vips_check_intent( class->nickname, icc->in_profile, icc->intent, LCMS_USED_AS_INPUT ); vips_check_intent( class->nickname, icc->out_profile, icc->intent, LCMS_USED_AS_OUTPUT ); if( VIPS_OBJECT_CLASS( vips_icc_transform_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } /* Process a buffer of data. */ static void vips_icc_transform_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { VipsIcc *icc = (VipsIcc *) colour; cmsDoTransform( icc->trans, in[0], out, width ); } static void vips_icc_transform_class_init( VipsIccImportClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "icc_transform"; object_class->description = _( "transform between devices with ICC profiles" ); object_class->build = vips_icc_transform_build; colour_class->process_line = vips_icc_transform_line; VIPS_ARG_STRING( class, "output_profile", 110, _( "Output profile" ), _( "Filename to load output profile from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsIccTransform, output_profile_filename ), NULL ); VIPS_ARG_BOOL( class, "embedded", 120, _( "Embedded" ), _( "Use embedded input profile, if available" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIccTransform, embedded ), FALSE ); VIPS_ARG_STRING( class, "input_profile", 130, _( "Input profile" ), _( "Filename to load input profile from" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIccTransform, input_profile_filename ), NULL ); VIPS_ARG_INT( class, "depth", 140, _( "Depth" ), _( "Output device space depth in bits" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIcc, depth ), 8, 16, 8 ); } static void vips_icc_transform_init( VipsIccTransform *transform ) { } /** * vips_icc_ac2rc: (method) * @in: input image * @out: (out): output image * @profile_filename: use this profile * * Transform an image from absolute to relative colorimetry using the * MediaWhitePoint stored in the ICC profile. * * See also: vips_icc_transform(), vips_icc_import(). * * Returns: 0 on success, -1 on error. */ int vips_icc_ac2rc( VipsImage *in, VipsImage **out, const char *profile_filename ) { VipsImage *t; cmsHPROFILE profile; cmsCIEXYZ *media; double X, Y, Z; double *add; double *mul; int i; if( !(profile = cmsOpenProfileFromFile( profile_filename, "r" )) ) return( -1 ); if( !(media = cmsReadTag( profile, cmsSigMediaWhitePointTag )) ) { vips_error( "vips_icc_ac2rc", "%s", _( "unable to get media white point" ) ); return( -1 ); } X = media->X; Y = media->Y; Z = media->Z; cmsCloseProfile( profile ); /* We need XYZ so we can adjust the white balance. */ if( vips_colourspace( in, &t, VIPS_INTERPRETATION_XYZ, NULL ) ) return( -1 ); in = t; if( !(add = VIPS_ARRAY( in, in->Bands, double )) || !(mul = VIPS_ARRAY( in, in->Bands, double )) ) return( -1 ); /* There might be extra bands off to the right somewhere. */ for( i = 0; i < in->Bands; i++ ) add[i] = 0.0; mul[0] = VIPS_D50_X0 / (X * 100.0); mul[1] = VIPS_D50_Y0 / (Y * 100.0); mul[2] = VIPS_D50_Z0 / (Z * 100.0); for( i = 3; i < in->Bands; i++ ) mul[i] = 1.0; if( vips_linear( in, &t, add, mul, in->Bands, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = t; *out = in; return( 0 ); } /* TRUE if a profile is sane and is compatible with an image. */ gboolean vips_icc_is_compatible_profile( VipsImage *image, const void *data, size_t data_length ) { cmsHPROFILE profile; if( !(profile = cmsOpenProfileFromMem( data, data_length )) ) /* Corrupt profile. */ return( FALSE ); if( vips_image_expected_bands( image ) != vips_icc_profile_needs_bands( profile ) ) { VIPS_FREEF( cmsCloseProfile, profile ); return( FALSE ); } if( vips_image_expected_sig( image ) != cmsGetColorSpace( profile ) ) { VIPS_FREEF( cmsCloseProfile, profile ); return( FALSE ); } VIPS_FREEF( cmsCloseProfile, profile ); return( TRUE ); } #else /*!HAVE_LCMS2*/ #include int vips_icc_present( void ) { return( 0 ); } int vips_icc_ac2rc( VipsImage *in, VipsImage **out, const char *profile_filename ) { vips_error( "VipsIcc", "%s", _( "libvips configured without lcms support" ) ); return( -1 ); } gboolean vips_icc_is_compatible_profile( VipsImage *image, const void *data, size_t data_length ) { return( TRUE ); } #endif /*HAVE_LCMS*/ /** * vips_icc_import: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @input_profile: get the input profile from here * * @intent: transform with this intent * * @embedded: use profile embedded in input image * * @pcs: use XYZ or LAB PCS * * Import an image from device space to D65 LAB with an ICC profile. If @pcs is * set to #VIPS_PCS_XYZ, use CIE XYZ PCS instead. * * If @embedded is set, the input profile is taken from the input image * metadata. If there is no embedded profile, * @input_profile_filename is used as a fall-back. * You can test for the * presence of an embedded profile with * vips_image_get_typeof() with #VIPS_META_ICC_NAME as an argument. This will * return %GType 0 if there is no profile. * * If @embedded is not set, the input profile is taken from * @input_profile. If @input_profile is not supplied, the * metadata profile, if any, is used as a fall-back. * * Returns: 0 on success, -1 on error. */ int vips_icc_import( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "icc_import", ap, in, out ); va_end( ap ); return( result ); } /** * vips_icc_export: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @intent: transform with this intent * * @depth: depth of output image in bits * * @output_profile: get the output profile from here * * @pcs: use XYZ or LAB PCS * * Export an image from D65 LAB to device space with an ICC profile. * If @pcs is * set to #VIPS_PCS_XYZ, use CIE XYZ PCS instead. * If @output_profile is not set, use the embedded profile, if any. * If @output_profile is set, export with that and attach it to the output * image. * * Returns: 0 on success, -1 on error. */ int vips_icc_export( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "icc_export", ap, in, out ); va_end( ap ); return( result ); } /** * vips_icc_transform: (method) * @in: input image * @out: (out): output image * @output_profile: get the output profile from here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @input_profile: get the input profile from here * * @intent: transform with this intent * * @depth: depth of output image in bits * * @embedded: use profile embedded in input image * * Transform an image with a pair of ICC profiles. The input image is moved to * profile-connection space with the input profile and then to the output * space with the output profile. * * If @embedded is set, the input profile is taken from the input image * metadata, if present. If there is no embedded profile, * @input_profile is used as a fall-back. * You can test for the * presence of an embedded profile with * vips_image_get_typeof() with #VIPS_META_ICC_NAME as an argument. This will * return %GType 0 if there is no profile. * * If @embedded is not set, the input profile is taken from * @input_profile. If @input_profile is not supplied, the * metadata profile, if any, is used as a fall-back. * * The output image has the output profile attached to the #VIPS_META_ICC_NAME * field. * * Use vips_icc_import() and vips_icc_export() to do either the first or * second half of this operation in isolation. * * Returns: 0 on success, -1 on error. */ int vips_icc_transform( VipsImage *in, VipsImage **out, const char *output_profile, ... ) { va_list ap; int result; va_start( ap, output_profile ); result = vips_call_split( "icc_transform", ap, in, out, output_profile ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/pcolour.h000066400000000000000000000145441361153320700200210ustar00rootroot00000000000000/* base class for all colour operations */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PCOLOUR_H #define VIPS_PCOLOUR_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_COLOUR (vips_colour_get_type()) #define VIPS_COLOUR( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_COLOUR, VipsColour )) #define VIPS_COLOUR_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_COLOUR, VipsColourClass)) #define VIPS_IS_COLOUR( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_COLOUR )) #define VIPS_IS_COLOUR_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_COLOUR )) #define VIPS_COLOUR_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_COLOUR, VipsColourClass )) struct _VipsColour; typedef void (*VipsColourProcessFn)( struct _VipsColour *colour, VipsPel *out, VipsPel **in, int width ); typedef struct _VipsColour { VipsOperation parent_instance; /* Null-terminated array of input arguments, set these from a * subclass. */ VipsImage **in; int n; /* If this is >0, only process this many bands from the input. Extra * bands are removed and reattached after processing. */ int input_bands; VipsImage *out; /* Set fields on ->out from these. */ VipsCoding coding; VipsInterpretation interpretation; VipsBandFormat format; int bands; /* Attach this profile, if set. */ char *profile_filename; } VipsColour; typedef struct _VipsColourClass { VipsOperationClass parent_class; /* The buffer processor. */ VipsColourProcessFn process_line; } VipsColourClass; GType vips_colour_get_type( void ); /* A float in, float out colourspace transformation. */ #define VIPS_TYPE_COLOUR_TRANSFORM (vips_colour_transform_get_type()) #define VIPS_COLOUR_TRANSFORM( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_COLOUR_TRANSFORM, VipsColourTransform )) #define VIPS_COLOUR_TRANSFORM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_COLOUR_TRANSFORM, VipsColourTransformClass)) #define VIPS_IS_COLOUR_TRANSFORM( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_COLOUR_TRANSFORM )) #define VIPS_IS_COLOUR_TRANSFORM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_COLOUR_TRANSFORM )) #define VIPS_COLOUR_TRANSFORM_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_COLOUR_TRANSFORM, VipsColourTransformClass )) typedef struct _VipsColourTransform { VipsColour parent_instance; VipsImage *in; } VipsColourTransform; typedef struct _VipsColourTransformClass { VipsColourClass parent_class; } VipsColourTransformClass; GType vips_colour_transform_get_type( void ); /* Change colour encoding ... either in or out is not three-band float. */ #define VIPS_TYPE_COLOUR_CODE (vips_colour_code_get_type()) #define VIPS_COLOUR_CODE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_COLOUR_CODE, VipsColourCode )) #define VIPS_COLOUR_CODE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_COLOUR_CODE, VipsColourCodeClass)) #define VIPS_IS_COLOUR_CODE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_COLOUR_CODE )) #define VIPS_IS_COLOUR_CODE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_COLOUR_CODE )) #define VIPS_COLOUR_CODE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_COLOUR_CODE, VipsColourCodeClass )) typedef struct _VipsColourCode { VipsColour parent_instance; VipsImage *in; /* Test in against these. */ VipsCoding input_coding; VipsBandFormat input_format; VipsInterpretation input_interpretation; } VipsColourCode; typedef struct _VipsColourCodeClass { VipsColourClass parent_class; } VipsColourCodeClass; GType vips_colour_code_get_type( void ); /* Difference between two colour images. */ #define VIPS_TYPE_COLOUR_DIFFERENCE (vips_colour_difference_get_type()) #define VIPS_COLOUR_DIFFERENCE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_COLOUR_DIFFERENCE, VipsColourDifference )) #define VIPS_COLOUR_DIFFERENCE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_COLOUR_DIFFERENCE, VipsColourDifferenceClass)) #define VIPS_IS_COLOUR_DIFFERENCE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_COLOUR_DIFFERENCE )) #define VIPS_IS_COLOUR_DIFFERENCE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_COLOUR_DIFFERENCE )) #define VIPS_COLOUR_DIFFERENCE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_COLOUR_DIFFERENCE, VipsColourDifferenceClass )) typedef struct _VipsColourDifference { VipsColour parent_instance; VipsImage *left; VipsImage *right; /* Both get converted to this space. */ VipsInterpretation interpretation; } VipsColourDifference; typedef struct _VipsColourDifferenceClass { VipsColourClass parent_class; } VipsColourDifferenceClass; GType vips_colour_difference_get_type( void ); void vips__pythagoras_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ); /* Colour tables for Y<->v conversion. Call vips_col_make_tables_RGB_8() and * vips_col_make_tables_RGB_16() before use to initialize. */ extern int vips_Y2v_8[256 + 1]; extern float vips_v2Y_8[256]; extern int vips_Y2v_16[65536 + 1]; extern float vips_v2Y_16[65536]; void vips_col_make_tables_RGB_8( void ); void vips_col_make_tables_RGB_16( void ); /* A colour-transforming function. */ typedef int (*VipsColourTransformFn)( VipsImage *in, VipsImage **out, ... ); int vips__colourspace_process_n( const char *domain, VipsImage *in, VipsImage **out, int n, VipsColourTransformFn fn ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PCOLOUR_H*/ libvips-8.9.1/libvips/colour/profile_load.c000066400000000000000000000116711361153320700207660ustar00rootroot00000000000000/* Load profiles as blobs. * * 10/1/19 * - from CMYK2XYZ.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "profiles.h" #include "pcolour.h" typedef struct _VipsProfileLoad { VipsOperation parent_instance; const char *name; VipsBlob *profile; } VipsProfileLoad; typedef VipsOperationClass VipsProfileLoadClass; G_DEFINE_TYPE( VipsProfileLoad, vips_profile_load, VIPS_TYPE_OPERATION ); static const void * vips_profile_fallback_get( const char *name, size_t *length ) { int i; VipsProfileFallback *fallback; for( i = 0; (fallback = vips__profile_fallback_table[i]); i++ ) if( g_ascii_strcasecmp( fallback->name, name ) == 0 ) { if( length ) *length = fallback->length; return( fallback->data ); } return( NULL ); } static int vips_profile_load_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsProfileLoad *load = (VipsProfileLoad *) object; size_t length; const void *data; VipsBlob *profile; if( VIPS_OBJECT_CLASS( vips_profile_load_parent_class )-> build( object ) ) return( -1 ); if( g_ascii_strcasecmp( load->name, "none" ) == 0 ) { profile = NULL; } else if( (data = vips_profile_fallback_get( load->name, &length )) ) { profile = vips_blob_new( NULL, data, length ); } else if( (data = vips__file_read_name( load->name, vips__icc_dir(), &length )) ) { profile = vips_blob_new( (VipsCallbackFn) g_free, data, length ); } else { vips_error( class->nickname, _( "unable to load profile \"%s\"" ), load->name ); return( -1 ); } g_object_set( object, "profile", profile, NULL ); if( profile ) { vips_area_unref( (VipsArea *) profile ); profile = NULL; } return( 0 ); } static void vips_profile_load_class_init( VipsProfileLoadClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "profile_load"; object_class->description = _( "load named ICC profile" ); object_class->build = vips_profile_load_build; VIPS_ARG_STRING( class, "name", 1, _( "Name" ), _( "Profile name" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsProfileLoad, name ), NULL ); VIPS_ARG_BOXED( class, "profile", 2, _( "Profile" ), _( "Loaded profile" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsProfileLoad, profile ), VIPS_TYPE_BLOB ); } static void vips_profile_load_init( VipsProfileLoad *load ) { } /** * vips_profile_load: * @name: name of profile to load * @profile: (out): loaded profile * @...: %NULL-terminated list of optional named arguments * * Load a named profile. * * Profiles are loaded from four sources: * * - The special name `"none"` means no profile. @profile will be %NULL in this * case. * * - @name can be the name of one of the ICC profiles embedded in libvips. * These names can be at least `"cmyk"` and `"srgb"`. * * - @name can be the full path to a file. * * - @name can be the name of an ICC profile in the system profile directory * for your platform. * * Returns: 0 on success, -1 on error */ int vips_profile_load( const char *name, VipsBlob **profile, ... ) { va_list ap; int result; va_start( ap, profile ); result = vips_call_split( "profile_load", ap, name, profile ); va_end( ap ); return( result ); } /* Set (or remove) a named profile on an image. */ int vips__profile_set( VipsImage *image, const char *name ) { VipsBlob *profile; if( vips_profile_load( name, &profile, NULL ) ) return( -1 ); if( profile ) { GValue value = { 0 }; g_value_init( &value, VIPS_TYPE_BLOB ); g_value_set_boxed( &value, profile ); vips_image_set( image, VIPS_META_ICC_NAME, &value ); g_value_unset( &value ); } else vips_image_remove( image, VIPS_META_ICC_NAME ); if( profile ) { vips_area_unref( (VipsArea *) profile ); profile = NULL; } return( 0 ); } libvips-8.9.1/libvips/colour/profiles.c000066400000000000000000263646471361153320700202000ustar00rootroot00000000000000/* this file generated automatically, do not edit */ #include "profiles.h" static VipsProfileFallback vips__profile_fallback_cmyk = { "cmyk", 961644, { 0x00, 0x0E, 0xAC, 0x6C, 0x61, 0x72, 0x67, 0x6C, 0x02, 0x20, 0x00, 0x00, 0x70, 0x72, 0x74, 0x72, 0x43, 0x4D, 0x59, 0x4B, 0x4C, 0x61, 0x62, 0x20, 0x07, 0xDE, 0x00, 0x08, 0x00, 0x19, 0x00, 0x0C, 0x00, 0x28, 0x00, 0x35, 0x61, 0x63, 0x73, 0x70, 0x4D, 0x53, 0x46, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xF6, 0xD6, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x2D, 0x61, 0x72, 0x67, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x00, 0x69, 0x63, 0x70, 0x72, 0x74, 0x00, 0x00, 0x01, 0xA4, 0x00, 0x00, 0x00, 0x67, 0x77, 0x74, 0x70, 0x74, 0x00, 0x00, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x14, 0x62, 0x6B, 0x70, 0x74, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x14, 0x63, 0x6C, 0x72, 0x74, 0x00, 0x00, 0x02, 0x34, 0x00, 0x00, 0x00, 0xA4, 0x41, 0x32, 0x42, 0x31, 0x00, 0x00, 0x02, 0xD8, 0x00, 0x00, 0xD1, 0xFA, 0x41, 0x32, 0x42, 0x30, 0x00, 0x00, 0x02, 0xD8, 0x00, 0x00, 0xD1, 0xFA, 0x41, 0x32, 0x42, 0x32, 0x00, 0x00, 0x02, 0xD8, 0x00, 0x00, 0xD1, 0xFA, 0x42, 0x32, 0x41, 0x31, 0x00, 0x00, 0xD4, 0xD4, 0x00, 0x00, 0xD1, 0xBC, 0x42, 0x32, 0x41, 0x30, 0x00, 0x01, 0xA6, 0x90, 0x00, 0x00, 0xD1, 0xBC, 0x42, 0x32, 0x41, 0x32, 0x00, 0x02, 0x78, 0x4C, 0x00, 0x00, 0xD1, 0xBC, 0x67, 0x61, 0x6D, 0x74, 0x00, 0x03, 0x4A, 0x08, 0x00, 0x00, 0x2E, 0x96, 0x74, 0x61, 0x72, 0x67, 0x00, 0x03, 0x78, 0xA0, 0x00, 0x0B, 0x33, 0xCB, 0x44, 0x65, 0x76, 0x44, 0x00, 0x03, 0x78, 0xA0, 0x00, 0x0B, 0x33, 0xCB, 0x43, 0x49, 0x45, 0x44, 0x00, 0x03, 0x78, 0xA0, 0x00, 0x0B, 0x33, 0xCB, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x43, 0x68, 0x65, 0x6D, 0x69, 0x63, 0x61, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x6F, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x47, 0x72, 0x61, 0x65, 0x6D, 0x65, 0x20, 0x57, 0x2E, 0x20, 0x47, 0x69, 0x6C, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x64, 0x6F, 0x6D, 0x61, 0x69, 0x6E, 0x2E, 0x20, 0x4E, 0x6F, 0x20, 0x57, 0x61, 0x72, 0x72, 0x61, 0x6E, 0x74, 0x79, 0x2C, 0x20, 0x55, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, 0x79, 0x6F, 0x75, 0x72, 0x20, 0x6F, 0x77, 0x6E, 0x20, 0x72, 0x69, 0x73, 0x6B, 0x2E, 0x00, 0x00, 0x58, 0x59, 0x5A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xCA, 0x00, 0x00, 0xE9, 0x8A, 0x00, 0x00, 0xC3, 0x51, 0x58, 0x59, 0x5A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x24, 0x00, 0x00, 0x04, 0x3A, 0x00, 0x00, 0x03, 0xA0, 0x63, 0x6C, 0x72, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x43, 0x79, 0x61, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x78, 0x5B, 0x37, 0x4B, 0x07, 0x4D, 0x61, 0x67, 0x65, 0x6E, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x23, 0xCD, 0x92, 0x7C, 0xF7, 0x59, 0x65, 0x6C, 0x6C, 0x6F, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x0F, 0x7C, 0x26, 0xE5, 0x1F, 0x42, 0x6C, 0x61, 0x63, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x6F, 0x83, 0xFB, 0x7B, 0xC1, 0x6D, 0x66, 0x74, 0x32, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0xB4, 0x01, 0x0D, 0x01, 0x67, 0x01, 0xC1, 0x02, 0x1B, 0x02, 0x74, 0x02, 0xCE, 0x03, 0x28, 0x03, 0x81, 0x03, 0xDB, 0x04, 0x35, 0x04, 0x8E, 0x04, 0xE8, 0x05, 0x42, 0x05, 0x9B, 0x05, 0xF5, 0x06, 0x4E, 0x06, 0xA8, 0x07, 0x02, 0x07, 0x5B, 0x07, 0xB5, 0x08, 0x0E, 0x08, 0x68, 0x08, 0xC1, 0x09, 0x1B, 0x09, 0x74, 0x09, 0xCD, 0x0A, 0x27, 0x0A, 0x80, 0x0A, 0xDA, 0x0B, 0x33, 0x0B, 0x8C, 0x0B, 0xE6, 0x0C, 0x3F, 0x0C, 0x98, 0x0C, 0xF2, 0x0D, 0x4B, 0x0D, 0xA4, 0x0D, 0xFE, 0x0E, 0x57, 0x0E, 0xB0, 0x0F, 0x09, 0x0F, 0x63, 0x0F, 0xBC, 0x10, 0x15, 0x10, 0x6E, 0x10, 0xC7, 0x11, 0x20, 0x11, 0x7A, 0x11, 0xD3, 0x12, 0x2C, 0x12, 0x85, 0x12, 0xDE, 0x13, 0x37, 0x13, 0x90, 0x13, 0xE9, 0x14, 0x42, 0x14, 0x9B, 0x14, 0xF4, 0x15, 0x4D, 0x15, 0xA6, 0x15, 0xFF, 0x16, 0x58, 0x16, 0xB1, 0x17, 0x0A, 0x17, 0x63, 0x17, 0xBC, 0x18, 0x15, 0x18, 0x6D, 0x18, 0xC6, 0x19, 0x1F, 0x19, 0x78, 0x19, 0xD1, 0x1A, 0x2A, 0x1A, 0x83, 0x1A, 0xDB, 0x1B, 0x34, 0x1B, 0x8D, 0x1B, 0xE6, 0x1C, 0x3F, 0x1C, 0x97, 0x1C, 0xF0, 0x1D, 0x49, 0x1D, 0xA1, 0x1D, 0xFA, 0x1E, 0x53, 0x1E, 0xAC, 0x1F, 0x04, 0x1F, 0x5D, 0x1F, 0xB6, 0x20, 0x0B, 0x20, 0x4C, 0x20, 0x8E, 0x20, 0xD0, 0x21, 0x12, 0x21, 0x54, 0x21, 0x95, 0x21, 0xD7, 0x22, 0x19, 0x22, 0x5B, 0x22, 0x9C, 0x22, 0xDE, 0x23, 0x20, 0x23, 0x62, 0x23, 0xA3, 0x23, 0xE5, 0x24, 0x27, 0x24, 0x68, 0x24, 0xAA, 0x24, 0xEC, 0x25, 0x2D, 0x25, 0x6F, 0x25, 0xB1, 0x25, 0xF2, 0x26, 0x34, 0x26, 0x76, 0x26, 0xB7, 0x26, 0xF9, 0x27, 0x3A, 0x27, 0x7C, 0x27, 0xBE, 0x27, 0xFF, 0x28, 0x41, 0x28, 0x82, 0x28, 0xC4, 0x29, 0x05, 0x29, 0x47, 0x29, 0x88, 0x29, 0xCA, 0x2A, 0x0B, 0x2A, 0x4D, 0x2A, 0x8E, 0x2A, 0xCF, 0x2B, 0x11, 0x2B, 0x52, 0x2B, 0x93, 0x2B, 0xD5, 0x2C, 0x16, 0x2C, 0x57, 0x2C, 0x99, 0x2C, 0xDA, 0x2D, 0x1B, 0x2D, 0x5D, 0x2D, 0x9E, 0x2D, 0xDF, 0x2E, 0x20, 0x2E, 0x61, 0x2E, 0xA2, 0x2E, 0xE4, 0x2F, 0x25, 0x2F, 0x66, 0x2F, 0xA7, 0x2F, 0xE8, 0x30, 0x29, 0x30, 0x6A, 0x30, 0xAB, 0x30, 0xEC, 0x31, 0x2D, 0x31, 0x6E, 0x31, 0xAF, 0x31, 0xF0, 0x32, 0x31, 0x32, 0x72, 0x32, 0xB3, 0x32, 0xF4, 0x33, 0x34, 0x33, 0x75, 0x33, 0xB6, 0x33, 0xF7, 0x34, 0x38, 0x34, 0x78, 0x34, 0xB9, 0x34, 0xFA, 0x35, 0x3A, 0x35, 0x7B, 0x35, 0xBC, 0x35, 0xFC, 0x36, 0x3D, 0x36, 0x7D, 0x36, 0xBE, 0x36, 0xFF, 0x37, 0x3F, 0x37, 0x80, 0x37, 0xC0, 0x38, 0x00, 0x38, 0x41, 0x38, 0x81, 0x38, 0xC2, 0x39, 0x02, 0x39, 0x42, 0x39, 0x83, 0x39, 0xC3, 0x3A, 0x03, 0x3A, 0x44, 0x3A, 0x84, 0x3A, 0xC4, 0x3B, 0x04, 0x3B, 0x45, 0x3B, 0x85, 0x3B, 0xC5, 0x3C, 0x05, 0x3C, 0x45, 0x3C, 0x85, 0x3C, 0xC5, 0x3D, 0x05, 0x3D, 0x45, 0x3D, 0x85, 0x3D, 0xC5, 0x3E, 0x05, 0x3E, 0x45, 0x3E, 0x85, 0x3E, 0xC5, 0x3F, 0x05, 0x3F, 0x44, 0x3F, 0x84, 0x3F, 0xC4, 0x40, 0x03, 0x40, 0x3D, 0x40, 0x77, 0x40, 0xB1, 0x40, 0xEB, 0x41, 0x25, 0x41, 0x5F, 0x41, 0x98, 0x41, 0xD2, 0x42, 0x0C, 0x42, 0x46, 0x42, 0x7F, 0x42, 0xB9, 0x42, 0xF3, 0x43, 0x2C, 0x43, 0x66, 0x43, 0x9F, 0x43, 0xD9, 0x44, 0x12, 0x44, 0x4C, 0x44, 0x85, 0x44, 0xBF, 0x44, 0xF8, 0x45, 0x32, 0x45, 0x6B, 0x45, 0xA4, 0x45, 0xDE, 0x46, 0x17, 0x46, 0x50, 0x46, 0x89, 0x46, 0xC3, 0x46, 0xFC, 0x47, 0x35, 0x47, 0x6E, 0x47, 0xA7, 0x47, 0xE0, 0x48, 0x19, 0x48, 0x52, 0x48, 0x8B, 0x48, 0xC4, 0x48, 0xFD, 0x49, 0x36, 0x49, 0x6F, 0x49, 0xA8, 0x49, 0xE1, 0x4A, 0x1A, 0x4A, 0x52, 0x4A, 0x8B, 0x4A, 0xC4, 0x4A, 0xFC, 0x4B, 0x35, 0x4B, 0x6E, 0x4B, 0xA6, 0x4B, 0xDF, 0x4C, 0x18, 0x4C, 0x50, 0x4C, 0x89, 0x4C, 0xC1, 0x4C, 0xF9, 0x4D, 0x32, 0x4D, 0x6A, 0x4D, 0xA3, 0x4D, 0xDB, 0x4E, 0x13, 0x4E, 0x4C, 0x4E, 0x84, 0x4E, 0xBC, 0x4E, 0xF4, 0x4F, 0x2D, 0x4F, 0x65, 0x4F, 0x9D, 0x4F, 0xD5, 0x50, 0x0D, 0x50, 0x45, 0x50, 0x7D, 0x50, 0xB5, 0x50, 0xED, 0x51, 0x25, 0x51, 0x5D, 0x51, 0x95, 0x51, 0xCD, 0x52, 0x05, 0x52, 0x3D, 0x52, 0x75, 0x52, 0xAC, 0x52, 0xE4, 0x53, 0x1C, 0x53, 0x54, 0x53, 0x8B, 0x53, 0xC3, 0x53, 0xFB, 0x54, 0x32, 0x54, 0x6A, 0x54, 0xA1, 0x54, 0xD9, 0x55, 0x11, 0x55, 0x48, 0x55, 0x80, 0x55, 0xB7, 0x55, 0xEE, 0x56, 0x26, 0x56, 0x5D, 0x56, 0x95, 0x56, 0xCC, 0x57, 0x03, 0x57, 0x3A, 0x57, 0x72, 0x57, 0xA9, 0x57, 0xE0, 0x58, 0x17, 0x58, 0x4E, 0x58, 0x86, 0x58, 0xBD, 0x58, 0xF4, 0x59, 0x2B, 0x59, 0x62, 0x59, 0x99, 0x59, 0xD0, 0x5A, 0x07, 0x5A, 0x3E, 0x5A, 0x75, 0x5A, 0xAC, 0x5A, 0xE3, 0x5B, 0x1A, 0x5B, 0x51, 0x5B, 0x88, 0x5B, 0xBF, 0x5B, 0xF6, 0x5C, 0x2D, 0x5C, 0x64, 0x5C, 0x9B, 0x5C, 0xD2, 0x5D, 0x09, 0x5D, 0x40, 0x5D, 0x77, 0x5D, 0xAE, 0x5D, 0xE5, 0x5E, 0x1C, 0x5E, 0x53, 0x5E, 0x8A, 0x5E, 0xC1, 0x5E, 0xF8, 0x5F, 0x2E, 0x5F, 0x65, 0x5F, 0x9C, 0x5F, 0xD3, 0x60, 0x0B, 0x60, 0x48, 0x60, 0x84, 0x60, 0xC1, 0x60, 0xFD, 0x61, 0x39, 0x61, 0x76, 0x61, 0xB2, 0x61, 0xEE, 0x62, 0x2B, 0x62, 0x67, 0x62, 0xA4, 0x62, 0xE0, 0x63, 0x1C, 0x63, 0x59, 0x63, 0x95, 0x63, 0xD1, 0x64, 0x0E, 0x64, 0x4A, 0x64, 0x86, 0x64, 0xC3, 0x64, 0xFF, 0x65, 0x3B, 0x65, 0x78, 0x65, 0xB4, 0x65, 0xF0, 0x66, 0x2C, 0x66, 0x69, 0x66, 0xA5, 0x66, 0xE1, 0x67, 0x1D, 0x67, 0x5A, 0x67, 0x96, 0x67, 0xD2, 0x68, 0x0E, 0x68, 0x4A, 0x68, 0x86, 0x68, 0xC3, 0x68, 0xFF, 0x69, 0x3B, 0x69, 0x77, 0x69, 0xB3, 0x69, 0xEF, 0x6A, 0x2B, 0x6A, 0x67, 0x6A, 0xA4, 0x6A, 0xE0, 0x6B, 0x1C, 0x6B, 0x58, 0x6B, 0x94, 0x6B, 0xD0, 0x6C, 0x0C, 0x6C, 0x48, 0x6C, 0x85, 0x6C, 0xC1, 0x6C, 0xFD, 0x6D, 0x39, 0x6D, 0x75, 0x6D, 0xB1, 0x6D, 0xED, 0x6E, 0x29, 0x6E, 0x66, 0x6E, 0xA2, 0x6E, 0xDE, 0x6F, 0x1A, 0x6F, 0x56, 0x6F, 0x92, 0x6F, 0xCE, 0x70, 0x0B, 0x70, 0x47, 0x70, 0x83, 0x70, 0xBF, 0x70, 0xFB, 0x71, 0x37, 0x71, 0x74, 0x71, 0xB0, 0x71, 0xEC, 0x72, 0x28, 0x72, 0x64, 0x72, 0xA0, 0x72, 0xDC, 0x73, 0x19, 0x73, 0x55, 0x73, 0x91, 0x73, 0xCD, 0x74, 0x09, 0x74, 0x45, 0x74, 0x81, 0x74, 0xBE, 0x74, 0xFA, 0x75, 0x36, 0x75, 0x72, 0x75, 0xAE, 0x75, 0xEA, 0x76, 0x26, 0x76, 0x63, 0x76, 0x9F, 0x76, 0xDB, 0x77, 0x17, 0x77, 0x53, 0x77, 0x8F, 0x77, 0xCB, 0x78, 0x07, 0x78, 0x44, 0x78, 0x80, 0x78, 0xBC, 0x78, 0xF8, 0x79, 0x34, 0x79, 0x70, 0x79, 0xAC, 0x79, 0xE8, 0x7A, 0x24, 0x7A, 0x60, 0x7A, 0x9D, 0x7A, 0xD9, 0x7B, 0x15, 0x7B, 0x51, 0x7B, 0x8D, 0x7B, 0xC9, 0x7C, 0x05, 0x7C, 0x41, 0x7C, 0x7D, 0x7C, 0xB9, 0x7C, 0xF5, 0x7D, 0x32, 0x7D, 0x6E, 0x7D, 0xAA, 0x7D, 0xE6, 0x7E, 0x22, 0x7E, 0x5E, 0x7E, 0x9A, 0x7E, 0xD6, 0x7F, 0x12, 0x7F, 0x4E, 0x7F, 0x8A, 0x7F, 0xC6, 0x80, 0x02, 0x80, 0x3F, 0x80, 0x7C, 0x80, 0xB9, 0x80, 0xF6, 0x81, 0x33, 0x81, 0x70, 0x81, 0xAD, 0x81, 0xEA, 0x82, 0x27, 0x82, 0x64, 0x82, 0xA1, 0x82, 0xDE, 0x83, 0x1B, 0x83, 0x58, 0x83, 0x95, 0x83, 0xD3, 0x84, 0x10, 0x84, 0x4D, 0x84, 0x8A, 0x84, 0xC7, 0x85, 0x04, 0x85, 0x42, 0x85, 0x7F, 0x85, 0xBC, 0x85, 0xF9, 0x86, 0x37, 0x86, 0x74, 0x86, 0xB1, 0x86, 0xEF, 0x87, 0x2C, 0x87, 0x6A, 0x87, 0xA7, 0x87, 0xE5, 0x88, 0x22, 0x88, 0x60, 0x88, 0x9D, 0x88, 0xDB, 0x89, 0x18, 0x89, 0x56, 0x89, 0x94, 0x89, 0xD1, 0x8A, 0x0F, 0x8A, 0x4D, 0x8A, 0x8A, 0x8A, 0xC8, 0x8B, 0x06, 0x8B, 0x44, 0x8B, 0x81, 0x8B, 0xBF, 0x8B, 0xFD, 0x8C, 0x3B, 0x8C, 0x79, 0x8C, 0xB7, 0x8C, 0xF5, 0x8D, 0x33, 0x8D, 0x71, 0x8D, 0xAF, 0x8D, 0xED, 0x8E, 0x2B, 0x8E, 0x69, 0x8E, 0xA7, 0x8E, 0xE5, 0x8F, 0x23, 0x8F, 0x61, 0x8F, 0xA0, 0x8F, 0xDE, 0x90, 0x1C, 0x90, 0x5A, 0x90, 0x99, 0x90, 0xD7, 0x91, 0x15, 0x91, 0x54, 0x91, 0x92, 0x91, 0xD0, 0x92, 0x0F, 0x92, 0x4D, 0x92, 0x8C, 0x92, 0xCA, 0x93, 0x09, 0x93, 0x47, 0x93, 0x86, 0x93, 0xC4, 0x94, 0x03, 0x94, 0x42, 0x94, 0x80, 0x94, 0xBF, 0x94, 0xFE, 0x95, 0x3C, 0x95, 0x7B, 0x95, 0xBA, 0x95, 0xF9, 0x96, 0x38, 0x96, 0x76, 0x96, 0xB5, 0x96, 0xF4, 0x97, 0x33, 0x97, 0x72, 0x97, 0xB1, 0x97, 0xF0, 0x98, 0x2F, 0x98, 0x6E, 0x98, 0xAE, 0x98, 0xED, 0x99, 0x2C, 0x99, 0x6B, 0x99, 0xAA, 0x99, 0xEA, 0x9A, 0x29, 0x9A, 0x68, 0x9A, 0xA8, 0x9A, 0xE7, 0x9B, 0x26, 0x9B, 0x66, 0x9B, 0xA5, 0x9B, 0xE5, 0x9C, 0x24, 0x9C, 0x64, 0x9C, 0xA3, 0x9C, 0xE3, 0x9D, 0x22, 0x9D, 0x62, 0x9D, 0xA2, 0x9D, 0xE1, 0x9E, 0x21, 0x9E, 0x61, 0x9E, 0xA1, 0x9E, 0xE0, 0x9F, 0x20, 0x9F, 0x60, 0x9F, 0xA0, 0x9F, 0xE0, 0xA0, 0x1D, 0xA0, 0x58, 0xA0, 0x93, 0xA0, 0xCE, 0xA1, 0x09, 0xA1, 0x44, 0xA1, 0x7F, 0xA1, 0xBA, 0xA1, 0xF5, 0xA2, 0x30, 0xA2, 0x6B, 0xA2, 0xA7, 0xA2, 0xE2, 0xA3, 0x1D, 0xA3, 0x58, 0xA3, 0x93, 0xA3, 0xCF, 0xA4, 0x0A, 0xA4, 0x45, 0xA4, 0x81, 0xA4, 0xBC, 0xA4, 0xF7, 0xA5, 0x33, 0xA5, 0x6E, 0xA5, 0xA9, 0xA5, 0xE5, 0xA6, 0x20, 0xA6, 0x5C, 0xA6, 0x97, 0xA6, 0xD3, 0xA7, 0x0E, 0xA7, 0x4A, 0xA7, 0x85, 0xA7, 0xC1, 0xA7, 0xFC, 0xA8, 0x38, 0xA8, 0x73, 0xA8, 0xAF, 0xA8, 0xEB, 0xA9, 0x26, 0xA9, 0x62, 0xA9, 0x9E, 0xA9, 0xD9, 0xAA, 0x15, 0xAA, 0x51, 0xAA, 0x8D, 0xAA, 0xC9, 0xAB, 0x04, 0xAB, 0x40, 0xAB, 0x7C, 0xAB, 0xB8, 0xAB, 0xF4, 0xAC, 0x30, 0xAC, 0x6C, 0xAC, 0xA8, 0xAC, 0xE3, 0xAD, 0x1F, 0xAD, 0x5B, 0xAD, 0x97, 0xAD, 0xD3, 0xAE, 0x0F, 0xAE, 0x4B, 0xAE, 0x87, 0xAE, 0xC3, 0xAE, 0xFF, 0xAF, 0x3B, 0xAF, 0x77, 0xAF, 0xB2, 0xAF, 0xEE, 0xB0, 0x2A, 0xB0, 0x66, 0xB0, 0xA2, 0xB0, 0xDE, 0xB1, 0x1A, 0xB1, 0x56, 0xB1, 0x92, 0xB1, 0xCE, 0xB2, 0x09, 0xB2, 0x45, 0xB2, 0x81, 0xB2, 0xBD, 0xB2, 0xF9, 0xB3, 0x35, 0xB3, 0x71, 0xB3, 0xAD, 0xB3, 0xE9, 0xB4, 0x25, 0xB4, 0x60, 0xB4, 0x9C, 0xB4, 0xD8, 0xB5, 0x14, 0xB5, 0x50, 0xB5, 0x8C, 0xB5, 0xC8, 0xB6, 0x03, 0xB6, 0x3F, 0xB6, 0x7B, 0xB6, 0xB7, 0xB6, 0xF3, 0xB7, 0x2F, 0xB7, 0x6A, 0xB7, 0xA6, 0xB7, 0xE2, 0xB8, 0x1E, 0xB8, 0x5A, 0xB8, 0x95, 0xB8, 0xD1, 0xB9, 0x0D, 0xB9, 0x49, 0xB9, 0x84, 0xB9, 0xC0, 0xB9, 0xFC, 0xBA, 0x38, 0xBA, 0x73, 0xBA, 0xAF, 0xBA, 0xEB, 0xBB, 0x26, 0xBB, 0x62, 0xBB, 0x9E, 0xBB, 0xDA, 0xBC, 0x15, 0xBC, 0x51, 0xBC, 0x8C, 0xBC, 0xC8, 0xBD, 0x04, 0xBD, 0x3F, 0xBD, 0x7B, 0xBD, 0xB7, 0xBD, 0xF2, 0xBE, 0x2E, 0xBE, 0x69, 0xBE, 0xA5, 0xBE, 0xE0, 0xBF, 0x1C, 0xBF, 0x58, 0xBF, 0x93, 0xBF, 0xCF, 0xC0, 0x0A, 0xC0, 0x42, 0xC0, 0x7A, 0xC0, 0xB3, 0xC0, 0xEB, 0xC1, 0x23, 0xC1, 0x5C, 0xC1, 0x94, 0xC1, 0xCC, 0xC2, 0x05, 0xC2, 0x3D, 0xC2, 0x75, 0xC2, 0xAE, 0xC2, 0xE6, 0xC3, 0x1E, 0xC3, 0x56, 0xC3, 0x8F, 0xC3, 0xC7, 0xC3, 0xFF, 0xC4, 0x37, 0xC4, 0x6F, 0xC4, 0xA8, 0xC4, 0xE0, 0xC5, 0x18, 0xC5, 0x50, 0xC5, 0x88, 0xC5, 0xC0, 0xC5, 0xF9, 0xC6, 0x31, 0xC6, 0x69, 0xC6, 0xA1, 0xC6, 0xD9, 0xC7, 0x11, 0xC7, 0x49, 0xC7, 0x81, 0xC7, 0xB9, 0xC7, 0xF2, 0xC8, 0x2A, 0xC8, 0x62, 0xC8, 0x9A, 0xC8, 0xD2, 0xC9, 0x0A, 0xC9, 0x42, 0xC9, 0x7A, 0xC9, 0xB2, 0xC9, 0xEA, 0xCA, 0x22, 0xCA, 0x5A, 0xCA, 0x92, 0xCA, 0xCA, 0xCB, 0x02, 0xCB, 0x3A, 0xCB, 0x72, 0xCB, 0xAA, 0xCB, 0xE2, 0xCC, 0x1A, 0xCC, 0x52, 0xCC, 0x8A, 0xCC, 0xC2, 0xCC, 0xFA, 0xCD, 0x32, 0xCD, 0x6A, 0xCD, 0xA3, 0xCD, 0xDB, 0xCE, 0x13, 0xCE, 0x4B, 0xCE, 0x83, 0xCE, 0xBB, 0xCE, 0xF3, 0xCF, 0x2B, 0xCF, 0x63, 0xCF, 0x9B, 0xCF, 0xD3, 0xD0, 0x0B, 0xD0, 0x43, 0xD0, 0x7C, 0xD0, 0xB4, 0xD0, 0xEC, 0xD1, 0x24, 0xD1, 0x5C, 0xD1, 0x94, 0xD1, 0xCC, 0xD2, 0x04, 0xD2, 0x3C, 0xD2, 0x75, 0xD2, 0xAD, 0xD2, 0xE5, 0xD3, 0x1D, 0xD3, 0x55, 0xD3, 0x8D, 0xD3, 0xC5, 0xD3, 0xFE, 0xD4, 0x36, 0xD4, 0x6E, 0xD4, 0xA6, 0xD4, 0xDE, 0xD5, 0x16, 0xD5, 0x4E, 0xD5, 0x86, 0xD5, 0xBF, 0xD5, 0xF7, 0xD6, 0x2F, 0xD6, 0x67, 0xD6, 0x9F, 0xD6, 0xD7, 0xD7, 0x0F, 0xD7, 0x48, 0xD7, 0x80, 0xD7, 0xB8, 0xD7, 0xF0, 0xD8, 0x28, 0xD8, 0x60, 0xD8, 0x98, 0xD8, 0xD0, 0xD9, 0x09, 0xD9, 0x41, 0xD9, 0x79, 0xD9, 0xB1, 0xD9, 0xE9, 0xDA, 0x21, 0xDA, 0x59, 0xDA, 0x92, 0xDA, 0xCA, 0xDB, 0x02, 0xDB, 0x3A, 0xDB, 0x72, 0xDB, 0xAA, 0xDB, 0xE2, 0xDC, 0x1B, 0xDC, 0x53, 0xDC, 0x8B, 0xDC, 0xC3, 0xDC, 0xFB, 0xDD, 0x33, 0xDD, 0x6B, 0xDD, 0xA4, 0xDD, 0xDC, 0xDE, 0x14, 0xDE, 0x4C, 0xDE, 0x84, 0xDE, 0xBC, 0xDE, 0xF4, 0xDF, 0x2C, 0xDF, 0x64, 0xDF, 0x9D, 0xDF, 0xD5, 0xE0, 0x12, 0xE0, 0x5E, 0xE0, 0xAA, 0xE0, 0xF6, 0xE1, 0x42, 0xE1, 0x8E, 0xE1, 0xDB, 0xE2, 0x27, 0xE2, 0x73, 0xE2, 0xBF, 0xE3, 0x0B, 0xE3, 0x57, 0xE3, 0xA3, 0xE3, 0xEF, 0xE4, 0x3B, 0xE4, 0x87, 0xE4, 0xD3, 0xE5, 0x1F, 0xE5, 0x6B, 0xE5, 0xB7, 0xE6, 0x03, 0xE6, 0x4F, 0xE6, 0x9B, 0xE6, 0xE7, 0xE7, 0x33, 0xE7, 0x7F, 0xE7, 0xCB, 0xE8, 0x17, 0xE8, 0x63, 0xE8, 0xAF, 0xE8, 0xFB, 0xE9, 0x47, 0xE9, 0x93, 0xE9, 0xDE, 0xEA, 0x2A, 0xEA, 0x76, 0xEA, 0xC2, 0xEB, 0x0E, 0xEB, 0x5A, 0xEB, 0xA5, 0xEB, 0xF1, 0xEC, 0x3D, 0xEC, 0x89, 0xEC, 0xD5, 0xED, 0x20, 0xED, 0x6C, 0xED, 0xB8, 0xEE, 0x04, 0xEE, 0x4F, 0xEE, 0x9B, 0xEE, 0xE7, 0xEF, 0x33, 0xEF, 0x7E, 0xEF, 0xCA, 0xF0, 0x16, 0xF0, 0x61, 0xF0, 0xAD, 0xF0, 0xF9, 0xF1, 0x44, 0xF1, 0x90, 0xF1, 0xDC, 0xF2, 0x27, 0xF2, 0x73, 0xF2, 0xBE, 0xF3, 0x0A, 0xF3, 0x56, 0xF3, 0xA1, 0xF3, 0xED, 0xF4, 0x38, 0xF4, 0x84, 0xF4, 0xCF, 0xF5, 0x1B, 0xF5, 0x67, 0xF5, 0xB2, 0xF5, 0xFE, 0xF6, 0x49, 0xF6, 0x94, 0xF6, 0xE0, 0xF7, 0x2B, 0xF7, 0x77, 0xF7, 0xC2, 0xF8, 0x0E, 0xF8, 0x59, 0xF8, 0xA5, 0xF8, 0xF0, 0xF9, 0x3B, 0xF9, 0x87, 0xF9, 0xD2, 0xFA, 0x1E, 0xFA, 0x69, 0xFA, 0xB4, 0xFB, 0x00, 0xFB, 0x4B, 0xFB, 0x96, 0xFB, 0xE2, 0xFC, 0x2D, 0xFC, 0x78, 0xFC, 0xC3, 0xFD, 0x0F, 0xFD, 0x5A, 0xFD, 0xA5, 0xFD, 0xF1, 0xFE, 0x3C, 0xFE, 0x87, 0xFE, 0xD2, 0xFF, 0x1D, 0xFF, 0x69, 0xFF, 0xB4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x9D, 0x00, 0xEC, 0x01, 0x3B, 0x01, 0x89, 0x01, 0xD8, 0x02, 0x26, 0x02, 0x75, 0x02, 0xC4, 0x03, 0x12, 0x03, 0x61, 0x03, 0xAF, 0x03, 0xFE, 0x04, 0x4C, 0x04, 0x9B, 0x04, 0xE9, 0x05, 0x38, 0x05, 0x86, 0x05, 0xD5, 0x06, 0x23, 0x06, 0x72, 0x06, 0xC0, 0x07, 0x0E, 0x07, 0x5D, 0x07, 0xAB, 0x07, 0xFA, 0x08, 0x48, 0x08, 0x96, 0x08, 0xE5, 0x09, 0x33, 0x09, 0x81, 0x09, 0xD0, 0x0A, 0x1E, 0x0A, 0x6C, 0x0A, 0xBB, 0x0B, 0x09, 0x0B, 0x57, 0x0B, 0xA5, 0x0B, 0xF4, 0x0C, 0x42, 0x0C, 0x90, 0x0C, 0xDE, 0x0D, 0x2C, 0x0D, 0x7A, 0x0D, 0xC9, 0x0E, 0x17, 0x0E, 0x65, 0x0E, 0xB3, 0x0F, 0x01, 0x0F, 0x4F, 0x0F, 0x9D, 0x0F, 0xEB, 0x10, 0x3A, 0x10, 0x88, 0x10, 0xD6, 0x11, 0x24, 0x11, 0x72, 0x11, 0xC0, 0x12, 0x0E, 0x12, 0x5C, 0x12, 0xAA, 0x12, 0xF8, 0x13, 0x46, 0x13, 0x94, 0x13, 0xE2, 0x14, 0x2F, 0x14, 0x7D, 0x14, 0xCB, 0x15, 0x19, 0x15, 0x67, 0x15, 0xB5, 0x16, 0x03, 0x16, 0x51, 0x16, 0x9E, 0x16, 0xEC, 0x17, 0x3A, 0x17, 0x88, 0x17, 0xD6, 0x18, 0x24, 0x18, 0x71, 0x18, 0xBF, 0x19, 0x0D, 0x19, 0x5B, 0x19, 0xA8, 0x19, 0xF6, 0x1A, 0x44, 0x1A, 0x92, 0x1A, 0xDF, 0x1B, 0x2D, 0x1B, 0x7B, 0x1B, 0xC8, 0x1C, 0x16, 0x1C, 0x64, 0x1C, 0xB1, 0x1C, 0xFF, 0x1D, 0x4C, 0x1D, 0x9A, 0x1D, 0xE8, 0x1E, 0x35, 0x1E, 0x83, 0x1E, 0xD0, 0x1F, 0x1E, 0x1F, 0x6B, 0x1F, 0xB9, 0x20, 0x05, 0x20, 0x48, 0x20, 0x8A, 0x20, 0xCD, 0x21, 0x0F, 0x21, 0x52, 0x21, 0x94, 0x21, 0xD7, 0x22, 0x19, 0x22, 0x5B, 0x22, 0x9E, 0x22, 0xE0, 0x23, 0x23, 0x23, 0x65, 0x23, 0xA7, 0x23, 0xEA, 0x24, 0x2C, 0x24, 0x6E, 0x24, 0xB1, 0x24, 0xF3, 0x25, 0x35, 0x25, 0x78, 0x25, 0xBA, 0x25, 0xFC, 0x26, 0x3F, 0x26, 0x81, 0x26, 0xC3, 0x27, 0x05, 0x27, 0x47, 0x27, 0x8A, 0x27, 0xCC, 0x28, 0x0E, 0x28, 0x50, 0x28, 0x92, 0x28, 0xD4, 0x29, 0x16, 0x29, 0x58, 0x29, 0x9A, 0x29, 0xDC, 0x2A, 0x1E, 0x2A, 0x60, 0x2A, 0xA2, 0x2A, 0xE4, 0x2B, 0x26, 0x2B, 0x68, 0x2B, 0xAA, 0x2B, 0xEC, 0x2C, 0x2E, 0x2C, 0x6F, 0x2C, 0xB1, 0x2C, 0xF3, 0x2D, 0x35, 0x2D, 0x77, 0x2D, 0xB8, 0x2D, 0xFA, 0x2E, 0x3C, 0x2E, 0x7E, 0x2E, 0xBF, 0x2F, 0x01, 0x2F, 0x43, 0x2F, 0x84, 0x2F, 0xC6, 0x30, 0x08, 0x30, 0x49, 0x30, 0x8B, 0x30, 0xCD, 0x31, 0x0E, 0x31, 0x50, 0x31, 0x91, 0x31, 0xD3, 0x32, 0x14, 0x32, 0x56, 0x32, 0x98, 0x32, 0xD9, 0x33, 0x1A, 0x33, 0x5C, 0x33, 0x9D, 0x33, 0xDF, 0x34, 0x20, 0x34, 0x62, 0x34, 0xA3, 0x34, 0xE5, 0x35, 0x26, 0x35, 0x67, 0x35, 0xA9, 0x35, 0xEA, 0x36, 0x2B, 0x36, 0x6D, 0x36, 0xAE, 0x36, 0xEF, 0x37, 0x31, 0x37, 0x72, 0x37, 0xB3, 0x37, 0xF4, 0x38, 0x36, 0x38, 0x77, 0x38, 0xB8, 0x38, 0xF9, 0x39, 0x3A, 0x39, 0x7C, 0x39, 0xBD, 0x39, 0xFE, 0x3A, 0x3F, 0x3A, 0x80, 0x3A, 0xC1, 0x3B, 0x02, 0x3B, 0x43, 0x3B, 0x84, 0x3B, 0xC5, 0x3C, 0x06, 0x3C, 0x47, 0x3C, 0x88, 0x3C, 0xC9, 0x3D, 0x0A, 0x3D, 0x4B, 0x3D, 0x8C, 0x3D, 0xCD, 0x3E, 0x0E, 0x3E, 0x4F, 0x3E, 0x90, 0x3E, 0xD0, 0x3F, 0x11, 0x3F, 0x52, 0x3F, 0x93, 0x3F, 0xD4, 0x40, 0x15, 0x40, 0x57, 0x40, 0x9A, 0x40, 0xDC, 0x41, 0x1E, 0x41, 0x61, 0x41, 0xA3, 0x41, 0xE5, 0x42, 0x27, 0x42, 0x6A, 0x42, 0xAC, 0x42, 0xEE, 0x43, 0x30, 0x43, 0x72, 0x43, 0xB5, 0x43, 0xF7, 0x44, 0x39, 0x44, 0x7B, 0x44, 0xBD, 0x44, 0xFF, 0x45, 0x41, 0x45, 0x83, 0x45, 0xC5, 0x46, 0x08, 0x46, 0x4A, 0x46, 0x8C, 0x46, 0xCE, 0x47, 0x10, 0x47, 0x52, 0x47, 0x93, 0x47, 0xD5, 0x48, 0x17, 0x48, 0x59, 0x48, 0x9B, 0x48, 0xDD, 0x49, 0x1F, 0x49, 0x61, 0x49, 0xA3, 0x49, 0xE5, 0x4A, 0x26, 0x4A, 0x68, 0x4A, 0xAA, 0x4A, 0xEC, 0x4B, 0x2E, 0x4B, 0x6F, 0x4B, 0xB1, 0x4B, 0xF3, 0x4C, 0x34, 0x4C, 0x76, 0x4C, 0xB8, 0x4C, 0xFA, 0x4D, 0x3B, 0x4D, 0x7D, 0x4D, 0xBE, 0x4E, 0x00, 0x4E, 0x42, 0x4E, 0x83, 0x4E, 0xC5, 0x4F, 0x06, 0x4F, 0x48, 0x4F, 0x89, 0x4F, 0xCB, 0x50, 0x0D, 0x50, 0x4E, 0x50, 0x90, 0x50, 0xD1, 0x51, 0x12, 0x51, 0x54, 0x51, 0x95, 0x51, 0xD7, 0x52, 0x18, 0x52, 0x5A, 0x52, 0x9B, 0x52, 0xDC, 0x53, 0x1E, 0x53, 0x5F, 0x53, 0xA0, 0x53, 0xE2, 0x54, 0x23, 0x54, 0x64, 0x54, 0xA6, 0x54, 0xE7, 0x55, 0x28, 0x55, 0x69, 0x55, 0xAA, 0x55, 0xEC, 0x56, 0x2D, 0x56, 0x6E, 0x56, 0xAF, 0x56, 0xF0, 0x57, 0x31, 0x57, 0x72, 0x57, 0xB3, 0x57, 0xF4, 0x58, 0x35, 0x58, 0x76, 0x58, 0xB7, 0x58, 0xF8, 0x59, 0x39, 0x59, 0x7A, 0x59, 0xBB, 0x59, 0xFC, 0x5A, 0x3D, 0x5A, 0x7E, 0x5A, 0xBF, 0x5B, 0x00, 0x5B, 0x40, 0x5B, 0x81, 0x5B, 0xC2, 0x5C, 0x03, 0x5C, 0x44, 0x5C, 0x84, 0x5C, 0xC5, 0x5D, 0x06, 0x5D, 0x47, 0x5D, 0x87, 0x5D, 0xC8, 0x5E, 0x09, 0x5E, 0x49, 0x5E, 0x8A, 0x5E, 0xCB, 0x5F, 0x0B, 0x5F, 0x4C, 0x5F, 0x8C, 0x5F, 0xCD, 0x60, 0x0F, 0x60, 0x53, 0x60, 0x97, 0x60, 0xDB, 0x61, 0x1F, 0x61, 0x63, 0x61, 0xA7, 0x61, 0xEC, 0x62, 0x30, 0x62, 0x74, 0x62, 0xB9, 0x62, 0xFD, 0x63, 0x41, 0x63, 0x86, 0x63, 0xCA, 0x64, 0x0F, 0x64, 0x53, 0x64, 0x98, 0x64, 0xDC, 0x65, 0x21, 0x65, 0x65, 0x65, 0xAA, 0x65, 0xEF, 0x66, 0x33, 0x66, 0x78, 0x66, 0xBD, 0x67, 0x02, 0x67, 0x46, 0x67, 0x8B, 0x67, 0xD0, 0x68, 0x15, 0x68, 0x5A, 0x68, 0x9F, 0x68, 0xE4, 0x69, 0x29, 0x69, 0x6E, 0x69, 0xB3, 0x69, 0xF8, 0x6A, 0x3D, 0x6A, 0x82, 0x6A, 0xC8, 0x6B, 0x0D, 0x6B, 0x52, 0x6B, 0x97, 0x6B, 0xDC, 0x6C, 0x22, 0x6C, 0x67, 0x6C, 0xAC, 0x6C, 0xF2, 0x6D, 0x37, 0x6D, 0x7C, 0x6D, 0xC2, 0x6E, 0x07, 0x6E, 0x4D, 0x6E, 0x92, 0x6E, 0xD8, 0x6F, 0x1D, 0x6F, 0x63, 0x6F, 0xA8, 0x6F, 0xEE, 0x70, 0x33, 0x70, 0x79, 0x70, 0xBF, 0x71, 0x04, 0x71, 0x4A, 0x71, 0x90, 0x71, 0xD5, 0x72, 0x1B, 0x72, 0x61, 0x72, 0xA7, 0x72, 0xED, 0x73, 0x32, 0x73, 0x78, 0x73, 0xBE, 0x74, 0x04, 0x74, 0x4A, 0x74, 0x90, 0x74, 0xD6, 0x75, 0x1C, 0x75, 0x62, 0x75, 0xA8, 0x75, 0xEE, 0x76, 0x34, 0x76, 0x7A, 0x76, 0xC0, 0x77, 0x07, 0x77, 0x4D, 0x77, 0x93, 0x77, 0xD9, 0x78, 0x1F, 0x78, 0x66, 0x78, 0xAC, 0x78, 0xF2, 0x79, 0x39, 0x79, 0x7F, 0x79, 0xC5, 0x7A, 0x0C, 0x7A, 0x52, 0x7A, 0x98, 0x7A, 0xDF, 0x7B, 0x25, 0x7B, 0x6C, 0x7B, 0xB2, 0x7B, 0xF9, 0x7C, 0x40, 0x7C, 0x86, 0x7C, 0xCD, 0x7D, 0x13, 0x7D, 0x5A, 0x7D, 0xA1, 0x7D, 0xE8, 0x7E, 0x2E, 0x7E, 0x75, 0x7E, 0xBC, 0x7F, 0x03, 0x7F, 0x4A, 0x7F, 0x91, 0x7F, 0xD7, 0x80, 0x1B, 0x80, 0x5C, 0x80, 0x9C, 0x80, 0xDC, 0x81, 0x1D, 0x81, 0x5D, 0x81, 0x9D, 0x81, 0xDE, 0x82, 0x1E, 0x82, 0x5F, 0x82, 0x9F, 0x82, 0xE0, 0x83, 0x20, 0x83, 0x61, 0x83, 0xA1, 0x83, 0xE2, 0x84, 0x23, 0x84, 0x63, 0x84, 0xA4, 0x84, 0xE5, 0x85, 0x25, 0x85, 0x66, 0x85, 0xA7, 0x85, 0xE8, 0x86, 0x29, 0x86, 0x6A, 0x86, 0xAA, 0x86, 0xEB, 0x87, 0x2C, 0x87, 0x6D, 0x87, 0xAE, 0x87, 0xEF, 0x88, 0x31, 0x88, 0x72, 0x88, 0xB3, 0x88, 0xF4, 0x89, 0x35, 0x89, 0x76, 0x89, 0xB8, 0x89, 0xF9, 0x8A, 0x3A, 0x8A, 0x7B, 0x8A, 0xBD, 0x8A, 0xFE, 0x8B, 0x3F, 0x8B, 0x81, 0x8B, 0xC2, 0x8C, 0x04, 0x8C, 0x45, 0x8C, 0x87, 0x8C, 0xC8, 0x8D, 0x0A, 0x8D, 0x4B, 0x8D, 0x8D, 0x8D, 0xCF, 0x8E, 0x10, 0x8E, 0x52, 0x8E, 0x94, 0x8E, 0xD6, 0x8F, 0x17, 0x8F, 0x59, 0x8F, 0x9B, 0x8F, 0xDD, 0x90, 0x1F, 0x90, 0x61, 0x90, 0xA3, 0x90, 0xE5, 0x91, 0x27, 0x91, 0x6A, 0x91, 0xAC, 0x91, 0xEE, 0x92, 0x30, 0x92, 0x72, 0x92, 0xB5, 0x92, 0xF7, 0x93, 0x3A, 0x93, 0x7C, 0x93, 0xBE, 0x94, 0x01, 0x94, 0x44, 0x94, 0x86, 0x94, 0xC9, 0x95, 0x0B, 0x95, 0x4E, 0x95, 0x91, 0x95, 0xD4, 0x96, 0x16, 0x96, 0x59, 0x96, 0x9C, 0x96, 0xDF, 0x97, 0x22, 0x97, 0x65, 0x97, 0xA8, 0x97, 0xEB, 0x98, 0x2E, 0x98, 0x71, 0x98, 0xB4, 0x98, 0xF8, 0x99, 0x3B, 0x99, 0x7E, 0x99, 0xC2, 0x9A, 0x05, 0x9A, 0x48, 0x9A, 0x8C, 0x9A, 0xCF, 0x9B, 0x13, 0x9B, 0x56, 0x9B, 0x9A, 0x9B, 0xDD, 0x9C, 0x21, 0x9C, 0x65, 0x9C, 0xA9, 0x9C, 0xEC, 0x9D, 0x30, 0x9D, 0x74, 0x9D, 0xB8, 0x9D, 0xFC, 0x9E, 0x40, 0x9E, 0x84, 0x9E, 0xC8, 0x9F, 0x0C, 0x9F, 0x50, 0x9F, 0x94, 0x9F, 0xD8, 0xA0, 0x17, 0xA0, 0x50, 0xA0, 0x89, 0xA0, 0xC1, 0xA0, 0xFA, 0xA1, 0x33, 0xA1, 0x6C, 0xA1, 0xA5, 0xA1, 0xDE, 0xA2, 0x16, 0xA2, 0x4F, 0xA2, 0x88, 0xA2, 0xC1, 0xA2, 0xFA, 0xA3, 0x33, 0xA3, 0x6C, 0xA3, 0xA5, 0xA3, 0xDF, 0xA4, 0x18, 0xA4, 0x51, 0xA4, 0x8A, 0xA4, 0xC3, 0xA4, 0xFC, 0xA5, 0x36, 0xA5, 0x6F, 0xA5, 0xA8, 0xA5, 0xE1, 0xA6, 0x1B, 0xA6, 0x54, 0xA6, 0x8D, 0xA6, 0xC7, 0xA7, 0x00, 0xA7, 0x39, 0xA7, 0x73, 0xA7, 0xAC, 0xA7, 0xE6, 0xA8, 0x1F, 0xA8, 0x59, 0xA8, 0x92, 0xA8, 0xCC, 0xA9, 0x05, 0xA9, 0x3F, 0xA9, 0x79, 0xA9, 0xB2, 0xA9, 0xEC, 0xAA, 0x25, 0xAA, 0x5F, 0xAA, 0x99, 0xAA, 0xD3, 0xAB, 0x0C, 0xAB, 0x46, 0xAB, 0x80, 0xAB, 0xBA, 0xAB, 0xF3, 0xAC, 0x2D, 0xAC, 0x67, 0xAC, 0xA1, 0xAC, 0xDB, 0xAD, 0x15, 0xAD, 0x4E, 0xAD, 0x88, 0xAD, 0xC2, 0xAD, 0xFC, 0xAE, 0x36, 0xAE, 0x70, 0xAE, 0xAA, 0xAE, 0xE4, 0xAF, 0x1E, 0xAF, 0x58, 0xAF, 0x92, 0xAF, 0xCC, 0xB0, 0x06, 0xB0, 0x40, 0xB0, 0x7A, 0xB0, 0xB4, 0xB0, 0xEE, 0xB1, 0x28, 0xB1, 0x62, 0xB1, 0x9C, 0xB1, 0xD7, 0xB2, 0x11, 0xB2, 0x4B, 0xB2, 0x85, 0xB2, 0xBF, 0xB2, 0xF9, 0xB3, 0x34, 0xB3, 0x6E, 0xB3, 0xA8, 0xB3, 0xE2, 0xB4, 0x1D, 0xB4, 0x57, 0xB4, 0x91, 0xB4, 0xCC, 0xB5, 0x06, 0xB5, 0x40, 0xB5, 0x7B, 0xB5, 0xB5, 0xB5, 0xEF, 0xB6, 0x29, 0xB6, 0x64, 0xB6, 0x9E, 0xB6, 0xD8, 0xB7, 0x12, 0xB7, 0x4C, 0xB7, 0x87, 0xB7, 0xC1, 0xB7, 0xFB, 0xB8, 0x35, 0xB8, 0x6F, 0xB8, 0xA9, 0xB8, 0xE3, 0xB9, 0x1D, 0xB9, 0x57, 0xB9, 0x91, 0xB9, 0xCB, 0xBA, 0x05, 0xBA, 0x3F, 0xBA, 0x79, 0xBA, 0xB3, 0xBA, 0xEC, 0xBB, 0x26, 0xBB, 0x60, 0xBB, 0x9A, 0xBB, 0xD4, 0xBC, 0x0E, 0xBC, 0x47, 0xBC, 0x81, 0xBC, 0xBB, 0xBC, 0xF4, 0xBD, 0x2E, 0xBD, 0x68, 0xBD, 0xA2, 0xBD, 0xDB, 0xBE, 0x15, 0xBE, 0x4E, 0xBE, 0x88, 0xBE, 0xC2, 0xBE, 0xFB, 0xBF, 0x35, 0xBF, 0x6E, 0xBF, 0xA8, 0xBF, 0xE1, 0xC0, 0x17, 0xC0, 0x4A, 0xC0, 0x7C, 0xC0, 0xAF, 0xC0, 0xE1, 0xC1, 0x14, 0xC1, 0x46, 0xC1, 0x78, 0xC1, 0xAB, 0xC1, 0xDD, 0xC2, 0x10, 0xC2, 0x42, 0xC2, 0x74, 0xC2, 0xA7, 0xC2, 0xD9, 0xC3, 0x0B, 0xC3, 0x3E, 0xC3, 0x70, 0xC3, 0xA2, 0xC3, 0xD4, 0xC4, 0x07, 0xC4, 0x39, 0xC4, 0x6B, 0xC4, 0x9D, 0xC4, 0xCF, 0xC5, 0x02, 0xC5, 0x34, 0xC5, 0x66, 0xC5, 0x98, 0xC5, 0xCA, 0xC5, 0xFC, 0xC6, 0x2E, 0xC6, 0x60, 0xC6, 0x92, 0xC6, 0xC5, 0xC6, 0xF7, 0xC7, 0x29, 0xC7, 0x5B, 0xC7, 0x8D, 0xC7, 0xBF, 0xC7, 0xF1, 0xC8, 0x23, 0xC8, 0x55, 0xC8, 0x86, 0xC8, 0xB8, 0xC8, 0xEA, 0xC9, 0x1C, 0xC9, 0x4E, 0xC9, 0x80, 0xC9, 0xB2, 0xC9, 0xE4, 0xCA, 0x16, 0xCA, 0x47, 0xCA, 0x79, 0xCA, 0xAB, 0xCA, 0xDD, 0xCB, 0x0F, 0xCB, 0x40, 0xCB, 0x72, 0xCB, 0xA4, 0xCB, 0xD6, 0xCC, 0x07, 0xCC, 0x39, 0xCC, 0x6B, 0xCC, 0x9C, 0xCC, 0xCE, 0xCD, 0x00, 0xCD, 0x31, 0xCD, 0x63, 0xCD, 0x94, 0xCD, 0xC6, 0xCD, 0xF7, 0xCE, 0x29, 0xCE, 0x5B, 0xCE, 0x8C, 0xCE, 0xBE, 0xCE, 0xEF, 0xCF, 0x21, 0xCF, 0x52, 0xCF, 0x83, 0xCF, 0xB5, 0xCF, 0xE6, 0xD0, 0x18, 0xD0, 0x49, 0xD0, 0x7B, 0xD0, 0xAC, 0xD0, 0xDD, 0xD1, 0x0F, 0xD1, 0x40, 0xD1, 0x71, 0xD1, 0xA3, 0xD1, 0xD4, 0xD2, 0x05, 0xD2, 0x36, 0xD2, 0x68, 0xD2, 0x99, 0xD2, 0xCA, 0xD2, 0xFB, 0xD3, 0x2D, 0xD3, 0x5E, 0xD3, 0x8F, 0xD3, 0xC0, 0xD3, 0xF1, 0xD4, 0x22, 0xD4, 0x54, 0xD4, 0x85, 0xD4, 0xB6, 0xD4, 0xE7, 0xD5, 0x18, 0xD5, 0x49, 0xD5, 0x7A, 0xD5, 0xAB, 0xD5, 0xDC, 0xD6, 0x0D, 0xD6, 0x3E, 0xD6, 0x6F, 0xD6, 0xA0, 0xD6, 0xD1, 0xD7, 0x02, 0xD7, 0x33, 0xD7, 0x64, 0xD7, 0x95, 0xD7, 0xC6, 0xD7, 0xF7, 0xD8, 0x28, 0xD8, 0x59, 0xD8, 0x8A, 0xD8, 0xBB, 0xD8, 0xEC, 0xD9, 0x1D, 0xD9, 0x4D, 0xD9, 0x7E, 0xD9, 0xAF, 0xD9, 0xE0, 0xDA, 0x11, 0xDA, 0x42, 0xDA, 0x72, 0xDA, 0xA3, 0xDA, 0xD4, 0xDB, 0x05, 0xDB, 0x36, 0xDB, 0x66, 0xDB, 0x97, 0xDB, 0xC8, 0xDB, 0xF8, 0xDC, 0x29, 0xDC, 0x5A, 0xDC, 0x8B, 0xDC, 0xBB, 0xDC, 0xEC, 0xDD, 0x1C, 0xDD, 0x4D, 0xDD, 0x7E, 0xDD, 0xAE, 0xDD, 0xDF, 0xDE, 0x0F, 0xDE, 0x40, 0xDE, 0x70, 0xDE, 0xA1, 0xDE, 0xD1, 0xDF, 0x02, 0xDF, 0x32, 0xDF, 0x63, 0xDF, 0x93, 0xDF, 0xC4, 0xDF, 0xF4, 0xE0, 0x36, 0xE0, 0x7C, 0xE0, 0xC3, 0xE1, 0x09, 0xE1, 0x4F, 0xE1, 0x96, 0xE1, 0xDC, 0xE2, 0x23, 0xE2, 0x69, 0xE2, 0xAF, 0xE2, 0xF5, 0xE3, 0x3C, 0xE3, 0x82, 0xE3, 0xC8, 0xE4, 0x0E, 0xE4, 0x55, 0xE4, 0x9B, 0xE4, 0xE1, 0xE5, 0x27, 0xE5, 0x6D, 0xE5, 0xB3, 0xE5, 0xF9, 0xE6, 0x3F, 0xE6, 0x85, 0xE6, 0xCB, 0xE7, 0x11, 0xE7, 0x57, 0xE7, 0x9D, 0xE7, 0xE2, 0xE8, 0x28, 0xE8, 0x6E, 0xE8, 0xB4, 0xE8, 0xFA, 0xE9, 0x3F, 0xE9, 0x85, 0xE9, 0xCB, 0xEA, 0x10, 0xEA, 0x56, 0xEA, 0x9B, 0xEA, 0xE1, 0xEB, 0x27, 0xEB, 0x6C, 0xEB, 0xB1, 0xEB, 0xF7, 0xEC, 0x3C, 0xEC, 0x82, 0xEC, 0xC7, 0xED, 0x0C, 0xED, 0x52, 0xED, 0x97, 0xED, 0xDC, 0xEE, 0x21, 0xEE, 0x66, 0xEE, 0xAC, 0xEE, 0xF1, 0xEF, 0x36, 0xEF, 0x7B, 0xEF, 0xC0, 0xF0, 0x05, 0xF0, 0x4A, 0xF0, 0x8F, 0xF0, 0xD4, 0xF1, 0x19, 0xF1, 0x5D, 0xF1, 0xA2, 0xF1, 0xE7, 0xF2, 0x2C, 0xF2, 0x71, 0xF2, 0xB5, 0xF2, 0xFA, 0xF3, 0x3F, 0xF3, 0x83, 0xF3, 0xC8, 0xF4, 0x0D, 0xF4, 0x51, 0xF4, 0x96, 0xF4, 0xDA, 0xF5, 0x1F, 0xF5, 0x63, 0xF5, 0xA8, 0xF5, 0xEC, 0xF6, 0x30, 0xF6, 0x75, 0xF6, 0xB9, 0xF6, 0xFD, 0xF7, 0x42, 0xF7, 0x86, 0xF7, 0xCA, 0xF8, 0x0E, 0xF8, 0x52, 0xF8, 0x96, 0xF8, 0xDB, 0xF9, 0x1F, 0xF9, 0x63, 0xF9, 0xA7, 0xF9, 0xEB, 0xFA, 0x2F, 0xFA, 0x73, 0xFA, 0xB7, 0xFA, 0xFA, 0xFB, 0x3E, 0xFB, 0x82, 0xFB, 0xC6, 0xFC, 0x0A, 0xFC, 0x4D, 0xFC, 0x91, 0xFC, 0xD5, 0xFD, 0x18, 0xFD, 0x5C, 0xFD, 0xA0, 0xFD, 0xE3, 0xFE, 0x27, 0xFE, 0x6A, 0xFE, 0xAE, 0xFE, 0xF1, 0xFF, 0x35, 0xFF, 0x78, 0xFF, 0xBC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x44, 0x00, 0x87, 0x00, 0xCB, 0x01, 0x0E, 0x01, 0x52, 0x01, 0x95, 0x01, 0xD9, 0x02, 0x1C, 0x02, 0x60, 0x02, 0xA3, 0x02, 0xE7, 0x03, 0x2A, 0x03, 0x6E, 0x03, 0xB1, 0x03, 0xF4, 0x04, 0x38, 0x04, 0x7B, 0x04, 0xBF, 0x05, 0x02, 0x05, 0x46, 0x05, 0x89, 0x05, 0xCC, 0x06, 0x10, 0x06, 0x53, 0x06, 0x96, 0x06, 0xDA, 0x07, 0x1D, 0x07, 0x60, 0x07, 0xA4, 0x07, 0xE7, 0x08, 0x2A, 0x08, 0x6E, 0x08, 0xB1, 0x08, 0xF4, 0x09, 0x38, 0x09, 0x7B, 0x09, 0xBE, 0x0A, 0x01, 0x0A, 0x45, 0x0A, 0x88, 0x0A, 0xCB, 0x0B, 0x0E, 0x0B, 0x51, 0x0B, 0x95, 0x0B, 0xD8, 0x0C, 0x1B, 0x0C, 0x5E, 0x0C, 0xA1, 0x0C, 0xE5, 0x0D, 0x28, 0x0D, 0x6B, 0x0D, 0xAE, 0x0D, 0xF1, 0x0E, 0x34, 0x0E, 0x77, 0x0E, 0xBA, 0x0E, 0xFE, 0x0F, 0x41, 0x0F, 0x84, 0x0F, 0xC7, 0x10, 0x0A, 0x10, 0x4D, 0x10, 0x90, 0x10, 0xD3, 0x11, 0x16, 0x11, 0x59, 0x11, 0x9C, 0x11, 0xDF, 0x12, 0x22, 0x12, 0x65, 0x12, 0xA8, 0x12, 0xEB, 0x13, 0x2E, 0x13, 0x71, 0x13, 0xB4, 0x13, 0xF7, 0x14, 0x3A, 0x14, 0x7D, 0x14, 0xC0, 0x15, 0x03, 0x15, 0x46, 0x15, 0x89, 0x15, 0xCC, 0x16, 0x0F, 0x16, 0x51, 0x16, 0x94, 0x16, 0xD7, 0x17, 0x1A, 0x17, 0x5D, 0x17, 0xA0, 0x17, 0xE3, 0x18, 0x26, 0x18, 0x69, 0x18, 0xAB, 0x18, 0xEE, 0x19, 0x31, 0x19, 0x74, 0x19, 0xB7, 0x19, 0xFA, 0x1A, 0x3C, 0x1A, 0x7F, 0x1A, 0xC2, 0x1B, 0x05, 0x1B, 0x48, 0x1B, 0x8A, 0x1B, 0xCD, 0x1C, 0x10, 0x1C, 0x53, 0x1C, 0x95, 0x1C, 0xD8, 0x1D, 0x1B, 0x1D, 0x5E, 0x1D, 0xA0, 0x1D, 0xE3, 0x1E, 0x26, 0x1E, 0x68, 0x1E, 0xAB, 0x1E, 0xEE, 0x1F, 0x31, 0x1F, 0x73, 0x1F, 0xB6, 0x1F, 0xF9, 0x20, 0x35, 0x20, 0x70, 0x20, 0xAB, 0x20, 0xE6, 0x21, 0x22, 0x21, 0x5D, 0x21, 0x98, 0x21, 0xD3, 0x22, 0x0F, 0x22, 0x4A, 0x22, 0x85, 0x22, 0xC0, 0x22, 0xFB, 0x23, 0x37, 0x23, 0x72, 0x23, 0xAD, 0x23, 0xE8, 0x24, 0x23, 0x24, 0x5E, 0x24, 0x99, 0x24, 0xD5, 0x25, 0x10, 0x25, 0x4B, 0x25, 0x86, 0x25, 0xC1, 0x25, 0xFC, 0x26, 0x37, 0x26, 0x72, 0x26, 0xAD, 0x26, 0xE8, 0x27, 0x23, 0x27, 0x5E, 0x27, 0x99, 0x27, 0xD4, 0x28, 0x0F, 0x28, 0x4A, 0x28, 0x85, 0x28, 0xC0, 0x28, 0xFB, 0x29, 0x36, 0x29, 0x71, 0x29, 0xAC, 0x29, 0xE7, 0x2A, 0x22, 0x2A, 0x5D, 0x2A, 0x98, 0x2A, 0xD3, 0x2B, 0x0E, 0x2B, 0x48, 0x2B, 0x83, 0x2B, 0xBE, 0x2B, 0xF9, 0x2C, 0x34, 0x2C, 0x6F, 0x2C, 0xAA, 0x2C, 0xE4, 0x2D, 0x1F, 0x2D, 0x5A, 0x2D, 0x95, 0x2D, 0xD0, 0x2E, 0x0B, 0x2E, 0x45, 0x2E, 0x80, 0x2E, 0xBB, 0x2E, 0xF6, 0x2F, 0x31, 0x2F, 0x6C, 0x2F, 0xA6, 0x2F, 0xE1, 0x30, 0x1C, 0x30, 0x57, 0x30, 0x92, 0x30, 0xCD, 0x31, 0x08, 0x31, 0x42, 0x31, 0x7D, 0x31, 0xB8, 0x31, 0xF3, 0x32, 0x2E, 0x32, 0x69, 0x32, 0xA4, 0x32, 0xDF, 0x33, 0x19, 0x33, 0x54, 0x33, 0x8F, 0x33, 0xCA, 0x34, 0x05, 0x34, 0x40, 0x34, 0x7B, 0x34, 0xB6, 0x34, 0xF1, 0x35, 0x2B, 0x35, 0x66, 0x35, 0xA1, 0x35, 0xDC, 0x36, 0x17, 0x36, 0x52, 0x36, 0x8D, 0x36, 0xC7, 0x37, 0x02, 0x37, 0x3D, 0x37, 0x78, 0x37, 0xB3, 0x37, 0xEE, 0x38, 0x28, 0x38, 0x63, 0x38, 0x9E, 0x38, 0xD9, 0x39, 0x14, 0x39, 0x4E, 0x39, 0x89, 0x39, 0xC4, 0x39, 0xFF, 0x3A, 0x3A, 0x3A, 0x74, 0x3A, 0xAF, 0x3A, 0xEA, 0x3B, 0x25, 0x3B, 0x5F, 0x3B, 0x9A, 0x3B, 0xD5, 0x3C, 0x0F, 0x3C, 0x4A, 0x3C, 0x85, 0x3C, 0xBF, 0x3C, 0xFA, 0x3D, 0x35, 0x3D, 0x6F, 0x3D, 0xAA, 0x3D, 0xE5, 0x3E, 0x1F, 0x3E, 0x5A, 0x3E, 0x94, 0x3E, 0xCF, 0x3F, 0x0A, 0x3F, 0x44, 0x3F, 0x7F, 0x3F, 0xB9, 0x3F, 0xF4, 0x40, 0x30, 0x40, 0x6D, 0x40, 0xAA, 0x40, 0xE6, 0x41, 0x23, 0x41, 0x60, 0x41, 0x9D, 0x41, 0xD9, 0x42, 0x16, 0x42, 0x53, 0x42, 0x8F, 0x42, 0xCC, 0x43, 0x08, 0x43, 0x45, 0x43, 0x82, 0x43, 0xBE, 0x43, 0xFB, 0x44, 0x37, 0x44, 0x74, 0x44, 0xB0, 0x44, 0xED, 0x45, 0x29, 0x45, 0x66, 0x45, 0xA2, 0x45, 0xDE, 0x46, 0x1B, 0x46, 0x57, 0x46, 0x94, 0x46, 0xD0, 0x47, 0x0C, 0x47, 0x49, 0x47, 0x85, 0x47, 0xC1, 0x47, 0xFD, 0x48, 0x3A, 0x48, 0x76, 0x48, 0xB2, 0x48, 0xEE, 0x49, 0x2A, 0x49, 0x67, 0x49, 0xA3, 0x49, 0xDF, 0x4A, 0x1B, 0x4A, 0x57, 0x4A, 0x93, 0x4A, 0xCF, 0x4B, 0x0B, 0x4B, 0x47, 0x4B, 0x83, 0x4B, 0xBF, 0x4B, 0xFB, 0x4C, 0x37, 0x4C, 0x73, 0x4C, 0xAF, 0x4C, 0xEB, 0x4D, 0x27, 0x4D, 0x63, 0x4D, 0x9F, 0x4D, 0xDA, 0x4E, 0x16, 0x4E, 0x52, 0x4E, 0x8E, 0x4E, 0xCA, 0x4F, 0x05, 0x4F, 0x41, 0x4F, 0x7D, 0x4F, 0xB9, 0x4F, 0xF4, 0x50, 0x30, 0x50, 0x6C, 0x50, 0xA7, 0x50, 0xE3, 0x51, 0x1F, 0x51, 0x5A, 0x51, 0x96, 0x51, 0xD1, 0x52, 0x0D, 0x52, 0x48, 0x52, 0x84, 0x52, 0xBF, 0x52, 0xFB, 0x53, 0x36, 0x53, 0x72, 0x53, 0xAD, 0x53, 0xE9, 0x54, 0x24, 0x54, 0x60, 0x54, 0x9B, 0x54, 0xD6, 0x55, 0x12, 0x55, 0x4D, 0x55, 0x88, 0x55, 0xC4, 0x55, 0xFF, 0x56, 0x3A, 0x56, 0x75, 0x56, 0xB1, 0x56, 0xEC, 0x57, 0x28, 0x57, 0x63, 0x57, 0x9E, 0x57, 0xDA, 0x58, 0x15, 0x58, 0x51, 0x58, 0x8C, 0x58, 0xC8, 0x59, 0x03, 0x59, 0x3F, 0x59, 0x7A, 0x59, 0xB6, 0x59, 0xF2, 0x5A, 0x2D, 0x5A, 0x69, 0x5A, 0xA5, 0x5A, 0xE0, 0x5B, 0x1C, 0x5B, 0x58, 0x5B, 0x94, 0x5B, 0xCF, 0x5C, 0x0B, 0x5C, 0x47, 0x5C, 0x83, 0x5C, 0xBF, 0x5C, 0xFA, 0x5D, 0x36, 0x5D, 0x72, 0x5D, 0xAE, 0x5D, 0xEA, 0x5E, 0x26, 0x5E, 0x62, 0x5E, 0x9E, 0x5E, 0xDA, 0x5F, 0x16, 0x5F, 0x52, 0x5F, 0x8E, 0x5F, 0xCA, 0x60, 0x07, 0x60, 0x46, 0x60, 0x85, 0x60, 0xC4, 0x61, 0x03, 0x61, 0x42, 0x61, 0x81, 0x61, 0xC0, 0x61, 0xFF, 0x62, 0x3F, 0x62, 0x7E, 0x62, 0xBD, 0x62, 0xFC, 0x63, 0x3B, 0x63, 0x7B, 0x63, 0xBA, 0x63, 0xF9, 0x64, 0x39, 0x64, 0x78, 0x64, 0xB7, 0x64, 0xF7, 0x65, 0x36, 0x65, 0x75, 0x65, 0xB5, 0x65, 0xF4, 0x66, 0x34, 0x66, 0x73, 0x66, 0xB3, 0x66, 0xF2, 0x67, 0x32, 0x67, 0x71, 0x67, 0xB1, 0x67, 0xF0, 0x68, 0x30, 0x68, 0x70, 0x68, 0xAF, 0x68, 0xEF, 0x69, 0x2F, 0x69, 0x6F, 0x69, 0xAE, 0x69, 0xEE, 0x6A, 0x2E, 0x6A, 0x6E, 0x6A, 0xAE, 0x6A, 0xEE, 0x6B, 0x2E, 0x6B, 0x6E, 0x6B, 0xAE, 0x6B, 0xEE, 0x6C, 0x2E, 0x6C, 0x6E, 0x6C, 0xAE, 0x6C, 0xEF, 0x6D, 0x2F, 0x6D, 0x6F, 0x6D, 0xAF, 0x6D, 0xF0, 0x6E, 0x30, 0x6E, 0x71, 0x6E, 0xB1, 0x6E, 0xF1, 0x6F, 0x32, 0x6F, 0x72, 0x6F, 0xB3, 0x6F, 0xF4, 0x70, 0x34, 0x70, 0x75, 0x70, 0xB6, 0x70, 0xF6, 0x71, 0x37, 0x71, 0x78, 0x71, 0xB9, 0x71, 0xF9, 0x72, 0x3A, 0x72, 0x7B, 0x72, 0xBC, 0x72, 0xFD, 0x73, 0x3E, 0x73, 0x7F, 0x73, 0xC0, 0x74, 0x01, 0x74, 0x42, 0x74, 0x84, 0x74, 0xC5, 0x75, 0x06, 0x75, 0x47, 0x75, 0x88, 0x75, 0xCA, 0x76, 0x0B, 0x76, 0x4C, 0x76, 0x8E, 0x76, 0xCF, 0x77, 0x10, 0x77, 0x52, 0x77, 0x93, 0x77, 0xD5, 0x78, 0x16, 0x78, 0x58, 0x78, 0x99, 0x78, 0xDB, 0x79, 0x1D, 0x79, 0x5E, 0x79, 0xA0, 0x79, 0xE2, 0x7A, 0x23, 0x7A, 0x65, 0x7A, 0xA7, 0x7A, 0xE9, 0x7B, 0x2A, 0x7B, 0x6C, 0x7B, 0xAE, 0x7B, 0xF0, 0x7C, 0x32, 0x7C, 0x74, 0x7C, 0xB6, 0x7C, 0xF8, 0x7D, 0x3A, 0x7D, 0x7C, 0x7D, 0xBE, 0x7E, 0x00, 0x7E, 0x42, 0x7E, 0x84, 0x7E, 0xC6, 0x7F, 0x09, 0x7F, 0x4B, 0x7F, 0x8D, 0x7F, 0xCF, 0x80, 0x10, 0x80, 0x4E, 0x80, 0x8D, 0x80, 0xCB, 0x81, 0x09, 0x81, 0x47, 0x81, 0x85, 0x81, 0xC3, 0x82, 0x01, 0x82, 0x40, 0x82, 0x7E, 0x82, 0xBC, 0x82, 0xFB, 0x83, 0x39, 0x83, 0x78, 0x83, 0xB6, 0x83, 0xF5, 0x84, 0x33, 0x84, 0x72, 0x84, 0xB0, 0x84, 0xEF, 0x85, 0x2E, 0x85, 0x6C, 0x85, 0xAB, 0x85, 0xEA, 0x86, 0x29, 0x86, 0x68, 0x86, 0xA7, 0x86, 0xE6, 0x87, 0x25, 0x87, 0x64, 0x87, 0xA3, 0x87, 0xE2, 0x88, 0x21, 0x88, 0x60, 0x88, 0xA0, 0x88, 0xDF, 0x89, 0x1E, 0x89, 0x5D, 0x89, 0x9D, 0x89, 0xDC, 0x8A, 0x1C, 0x8A, 0x5B, 0x8A, 0x9B, 0x8A, 0xDA, 0x8B, 0x1A, 0x8B, 0x5A, 0x8B, 0x99, 0x8B, 0xD9, 0x8C, 0x19, 0x8C, 0x59, 0x8C, 0x99, 0x8C, 0xD9, 0x8D, 0x19, 0x8D, 0x59, 0x8D, 0x99, 0x8D, 0xD9, 0x8E, 0x19, 0x8E, 0x59, 0x8E, 0x99, 0x8E, 0xDA, 0x8F, 0x1A, 0x8F, 0x5A, 0x8F, 0x9B, 0x8F, 0xDB, 0x90, 0x1C, 0x90, 0x5C, 0x90, 0x9D, 0x90, 0xDE, 0x91, 0x1E, 0x91, 0x5F, 0x91, 0xA0, 0x91, 0xE1, 0x92, 0x22, 0x92, 0x63, 0x92, 0xA4, 0x92, 0xE5, 0x93, 0x26, 0x93, 0x67, 0x93, 0xA8, 0x93, 0xE9, 0x94, 0x2B, 0x94, 0x6C, 0x94, 0xAD, 0x94, 0xEF, 0x95, 0x30, 0x95, 0x72, 0x95, 0xB3, 0x95, 0xF5, 0x96, 0x37, 0x96, 0x79, 0x96, 0xBA, 0x96, 0xFC, 0x97, 0x3E, 0x97, 0x80, 0x97, 0xC2, 0x98, 0x04, 0x98, 0x46, 0x98, 0x88, 0x98, 0xCA, 0x99, 0x0D, 0x99, 0x4F, 0x99, 0x91, 0x99, 0xD4, 0x9A, 0x16, 0x9A, 0x58, 0x9A, 0x9B, 0x9A, 0xDD, 0x9B, 0x20, 0x9B, 0x63, 0x9B, 0xA5, 0x9B, 0xE8, 0x9C, 0x2B, 0x9C, 0x6D, 0x9C, 0xB0, 0x9C, 0xF3, 0x9D, 0x36, 0x9D, 0x79, 0x9D, 0xBC, 0x9D, 0xFF, 0x9E, 0x42, 0x9E, 0x85, 0x9E, 0xC8, 0x9F, 0x0B, 0x9F, 0x4E, 0x9F, 0x91, 0x9F, 0xD5, 0xA0, 0x16, 0xA0, 0x54, 0xA0, 0x92, 0xA0, 0xD1, 0xA1, 0x0F, 0xA1, 0x4D, 0xA1, 0x8C, 0xA1, 0xCA, 0xA2, 0x08, 0xA2, 0x47, 0xA2, 0x85, 0xA2, 0xC4, 0xA3, 0x02, 0xA3, 0x41, 0xA3, 0x7F, 0xA3, 0xBE, 0xA3, 0xFC, 0xA4, 0x3B, 0xA4, 0x7A, 0xA4, 0xB9, 0xA4, 0xF7, 0xA5, 0x36, 0xA5, 0x75, 0xA5, 0xB4, 0xA5, 0xF3, 0xA6, 0x31, 0xA6, 0x70, 0xA6, 0xAF, 0xA6, 0xEE, 0xA7, 0x2D, 0xA7, 0x6C, 0xA7, 0xAC, 0xA7, 0xEB, 0xA8, 0x2A, 0xA8, 0x69, 0xA8, 0xA8, 0xA8, 0xE8, 0xA9, 0x27, 0xA9, 0x66, 0xA9, 0xA5, 0xA9, 0xE5, 0xAA, 0x24, 0xAA, 0x63, 0xAA, 0xA3, 0xAA, 0xE2, 0xAB, 0x21, 0xAB, 0x60, 0xAB, 0xA0, 0xAB, 0xDF, 0xAC, 0x1E, 0xAC, 0x5D, 0xAC, 0x9C, 0xAC, 0xDB, 0xAD, 0x1A, 0xAD, 0x59, 0xAD, 0x98, 0xAD, 0xD7, 0xAE, 0x15, 0xAE, 0x54, 0xAE, 0x93, 0xAE, 0xD2, 0xAF, 0x10, 0xAF, 0x4F, 0xAF, 0x8E, 0xAF, 0xCC, 0xB0, 0x0B, 0xB0, 0x4A, 0xB0, 0x88, 0xB0, 0xC7, 0xB1, 0x05, 0xB1, 0x44, 0xB1, 0x82, 0xB1, 0xC0, 0xB1, 0xFF, 0xB2, 0x3D, 0xB2, 0x7B, 0xB2, 0xBA, 0xB2, 0xF8, 0xB3, 0x36, 0xB3, 0x74, 0xB3, 0xB3, 0xB3, 0xF1, 0xB4, 0x2F, 0xB4, 0x6D, 0xB4, 0xAB, 0xB4, 0xE9, 0xB5, 0x27, 0xB5, 0x65, 0xB5, 0xA3, 0xB5, 0xE0, 0xB6, 0x1E, 0xB6, 0x5C, 0xB6, 0x9A, 0xB6, 0xD8, 0xB7, 0x15, 0xB7, 0x53, 0xB7, 0x91, 0xB7, 0xCE, 0xB8, 0x0C, 0xB8, 0x49, 0xB8, 0x87, 0xB8, 0xC4, 0xB9, 0x02, 0xB9, 0x3F, 0xB9, 0x7D, 0xB9, 0xBA, 0xB9, 0xF7, 0xBA, 0x35, 0xBA, 0x72, 0xBA, 0xAF, 0xBA, 0xEC, 0xBB, 0x29, 0xBB, 0x67, 0xBB, 0xA4, 0xBB, 0xE1, 0xBC, 0x1E, 0xBC, 0x5B, 0xBC, 0x98, 0xBC, 0xD5, 0xBD, 0x12, 0xBD, 0x4F, 0xBD, 0x8C, 0xBD, 0xC8, 0xBE, 0x05, 0xBE, 0x42, 0xBE, 0x7F, 0xBE, 0xBB, 0xBE, 0xF8, 0xBF, 0x35, 0xBF, 0x71, 0xBF, 0xAE, 0xBF, 0xEA, 0xC0, 0x2B, 0xC0, 0x6F, 0xC0, 0xB2, 0xC0, 0xF6, 0xC1, 0x39, 0xC1, 0x7D, 0xC1, 0xC0, 0xC2, 0x03, 0xC2, 0x47, 0xC2, 0x8A, 0xC2, 0xCD, 0xC3, 0x10, 0xC3, 0x53, 0xC3, 0x96, 0xC3, 0xD9, 0xC4, 0x1C, 0xC4, 0x5F, 0xC4, 0xA2, 0xC4, 0xE5, 0xC5, 0x28, 0xC5, 0x6B, 0xC5, 0xAE, 0xC5, 0xF0, 0xC6, 0x33, 0xC6, 0x76, 0xC6, 0xB8, 0xC6, 0xFB, 0xC7, 0x3E, 0xC7, 0x80, 0xC7, 0xC3, 0xC8, 0x05, 0xC8, 0x48, 0xC8, 0x8A, 0xC8, 0xCD, 0xC9, 0x0F, 0xC9, 0x51, 0xC9, 0x93, 0xC9, 0xD6, 0xCA, 0x18, 0xCA, 0x5A, 0xCA, 0x9C, 0xCA, 0xDF, 0xCB, 0x21, 0xCB, 0x63, 0xCB, 0xA5, 0xCB, 0xE7, 0xCC, 0x29, 0xCC, 0x6B, 0xCC, 0xAD, 0xCC, 0xEF, 0xCD, 0x31, 0xCD, 0x73, 0xCD, 0xB5, 0xCD, 0xF7, 0xCE, 0x39, 0xCE, 0x7B, 0xCE, 0xBD, 0xCE, 0xFE, 0xCF, 0x40, 0xCF, 0x82, 0xCF, 0xC4, 0xD0, 0x06, 0xD0, 0x47, 0xD0, 0x89, 0xD0, 0xCB, 0xD1, 0x0C, 0xD1, 0x4E, 0xD1, 0x8F, 0xD1, 0xD1, 0xD2, 0x13, 0xD2, 0x54, 0xD2, 0x96, 0xD2, 0xD7, 0xD3, 0x19, 0xD3, 0x5A, 0xD3, 0x9B, 0xD3, 0xDD, 0xD4, 0x1E, 0xD4, 0x60, 0xD4, 0xA1, 0xD4, 0xE3, 0xD5, 0x24, 0xD5, 0x65, 0xD5, 0xA7, 0xD5, 0xE8, 0xD6, 0x29, 0xD6, 0x6A, 0xD6, 0xAC, 0xD6, 0xED, 0xD7, 0x2E, 0xD7, 0x6F, 0xD7, 0xB1, 0xD7, 0xF2, 0xD8, 0x33, 0xD8, 0x74, 0xD8, 0xB5, 0xD8, 0xF7, 0xD9, 0x38, 0xD9, 0x79, 0xD9, 0xBA, 0xD9, 0xFB, 0xDA, 0x3C, 0xDA, 0x7D, 0xDA, 0xBE, 0xDA, 0xFF, 0xDB, 0x40, 0xDB, 0x81, 0xDB, 0xC2, 0xDC, 0x03, 0xDC, 0x44, 0xDC, 0x85, 0xDC, 0xC6, 0xDD, 0x07, 0xDD, 0x47, 0xDD, 0x88, 0xDD, 0xC9, 0xDE, 0x0A, 0xDE, 0x4B, 0xDE, 0x8B, 0xDE, 0xCC, 0xDF, 0x0D, 0xDF, 0x4E, 0xDF, 0x8E, 0xDF, 0xCF, 0xE0, 0x11, 0xE0, 0x5A, 0xE0, 0xA2, 0xE0, 0xEB, 0xE1, 0x33, 0xE1, 0x7C, 0xE1, 0xC4, 0xE2, 0x0C, 0xE2, 0x54, 0xE2, 0x9D, 0xE2, 0xE5, 0xE3, 0x2D, 0xE3, 0x75, 0xE3, 0xBD, 0xE4, 0x06, 0xE4, 0x4E, 0xE4, 0x96, 0xE4, 0xDE, 0xE5, 0x26, 0xE5, 0x6E, 0xE5, 0xB6, 0xE5, 0xFE, 0xE6, 0x46, 0xE6, 0x8E, 0xE6, 0xD5, 0xE7, 0x1D, 0xE7, 0x65, 0xE7, 0xAD, 0xE7, 0xF5, 0xE8, 0x3C, 0xE8, 0x84, 0xE8, 0xCC, 0xE9, 0x13, 0xE9, 0x5B, 0xE9, 0xA3, 0xE9, 0xEA, 0xEA, 0x32, 0xEA, 0x7A, 0xEA, 0xC1, 0xEB, 0x09, 0xEB, 0x50, 0xEB, 0x98, 0xEB, 0xDF, 0xEC, 0x26, 0xEC, 0x6E, 0xEC, 0xB5, 0xEC, 0xFC, 0xED, 0x44, 0xED, 0x8B, 0xED, 0xD2, 0xEE, 0x1A, 0xEE, 0x61, 0xEE, 0xA8, 0xEE, 0xEF, 0xEF, 0x36, 0xEF, 0x7E, 0xEF, 0xC5, 0xF0, 0x0C, 0xF0, 0x53, 0xF0, 0x9A, 0xF0, 0xE1, 0xF1, 0x28, 0xF1, 0x6F, 0xF1, 0xB6, 0xF1, 0xFD, 0xF2, 0x44, 0xF2, 0x8B, 0xF2, 0xD1, 0xF3, 0x18, 0xF3, 0x5F, 0xF3, 0xA6, 0xF3, 0xED, 0xF4, 0x33, 0xF4, 0x7A, 0xF4, 0xC1, 0xF5, 0x07, 0xF5, 0x4E, 0xF5, 0x95, 0xF5, 0xDB, 0xF6, 0x22, 0xF6, 0x68, 0xF6, 0xAF, 0xF6, 0xF6, 0xF7, 0x3C, 0xF7, 0x82, 0xF7, 0xC9, 0xF8, 0x0F, 0xF8, 0x56, 0xF8, 0x9C, 0xF8, 0xE2, 0xF9, 0x29, 0xF9, 0x6F, 0xF9, 0xB5, 0xF9, 0xFC, 0xFA, 0x42, 0xFA, 0x88, 0xFA, 0xCE, 0xFB, 0x14, 0xFB, 0x5A, 0xFB, 0xA0, 0xFB, 0xE7, 0xFC, 0x2D, 0xFC, 0x73, 0xFC, 0xB9, 0xFC, 0xFF, 0xFD, 0x45, 0xFD, 0x8B, 0xFD, 0xD0, 0xFE, 0x16, 0xFE, 0x5C, 0xFE, 0xA2, 0xFE, 0xE8, 0xFF, 0x2E, 0xFF, 0x74, 0xFF, 0xB9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x47, 0x00, 0x8D, 0x00, 0xD4, 0x01, 0x1A, 0x01, 0x61, 0x01, 0xA7, 0x01, 0xEE, 0x02, 0x34, 0x02, 0x7A, 0x02, 0xC1, 0x03, 0x07, 0x03, 0x4E, 0x03, 0x94, 0x03, 0xDA, 0x04, 0x21, 0x04, 0x67, 0x04, 0xAD, 0x04, 0xF3, 0x05, 0x3A, 0x05, 0x80, 0x05, 0xC6, 0x06, 0x0C, 0x06, 0x52, 0x06, 0x99, 0x06, 0xDF, 0x07, 0x25, 0x07, 0x6B, 0x07, 0xB1, 0x07, 0xF7, 0x08, 0x3D, 0x08, 0x83, 0x08, 0xC9, 0x09, 0x0F, 0x09, 0x55, 0x09, 0x9B, 0x09, 0xE1, 0x0A, 0x27, 0x0A, 0x6D, 0x0A, 0xB3, 0x0A, 0xF9, 0x0B, 0x3F, 0x0B, 0x85, 0x0B, 0xCB, 0x0C, 0x10, 0x0C, 0x56, 0x0C, 0x9C, 0x0C, 0xE2, 0x0D, 0x28, 0x0D, 0x6D, 0x0D, 0xB3, 0x0D, 0xF9, 0x0E, 0x3E, 0x0E, 0x84, 0x0E, 0xCA, 0x0F, 0x0F, 0x0F, 0x55, 0x0F, 0x9B, 0x0F, 0xE0, 0x10, 0x26, 0x10, 0x6B, 0x10, 0xB1, 0x10, 0xF7, 0x11, 0x3C, 0x11, 0x82, 0x11, 0xC7, 0x12, 0x0C, 0x12, 0x52, 0x12, 0x97, 0x12, 0xDD, 0x13, 0x22, 0x13, 0x68, 0x13, 0xAD, 0x13, 0xF2, 0x14, 0x38, 0x14, 0x7D, 0x14, 0xC2, 0x15, 0x08, 0x15, 0x4D, 0x15, 0x92, 0x15, 0xD7, 0x16, 0x1D, 0x16, 0x62, 0x16, 0xA7, 0x16, 0xEC, 0x17, 0x31, 0x17, 0x77, 0x17, 0xBC, 0x18, 0x01, 0x18, 0x46, 0x18, 0x8B, 0x18, 0xD0, 0x19, 0x15, 0x19, 0x5A, 0x19, 0x9F, 0x19, 0xE4, 0x1A, 0x29, 0x1A, 0x6E, 0x1A, 0xB3, 0x1A, 0xF8, 0x1B, 0x3D, 0x1B, 0x82, 0x1B, 0xC7, 0x1C, 0x0C, 0x1C, 0x51, 0x1C, 0x96, 0x1C, 0xDB, 0x1D, 0x20, 0x1D, 0x65, 0x1D, 0xAA, 0x1D, 0xEE, 0x1E, 0x33, 0x1E, 0x78, 0x1E, 0xBD, 0x1F, 0x02, 0x1F, 0x46, 0x1F, 0x8B, 0x1F, 0xD0, 0x20, 0x11, 0x20, 0x48, 0x20, 0x80, 0x20, 0xB7, 0x20, 0xEF, 0x21, 0x26, 0x21, 0x5E, 0x21, 0x95, 0x21, 0xCD, 0x22, 0x05, 0x22, 0x3C, 0x22, 0x74, 0x22, 0xAB, 0x22, 0xE2, 0x23, 0x1A, 0x23, 0x51, 0x23, 0x89, 0x23, 0xC0, 0x23, 0xF8, 0x24, 0x2F, 0x24, 0x66, 0x24, 0x9E, 0x24, 0xD5, 0x25, 0x0D, 0x25, 0x44, 0x25, 0x7B, 0x25, 0xB3, 0x25, 0xEA, 0x26, 0x21, 0x26, 0x58, 0x26, 0x90, 0x26, 0xC7, 0x26, 0xFE, 0x27, 0x35, 0x27, 0x6D, 0x27, 0xA4, 0x27, 0xDB, 0x28, 0x12, 0x28, 0x49, 0x28, 0x81, 0x28, 0xB8, 0x28, 0xEF, 0x29, 0x26, 0x29, 0x5D, 0x29, 0x94, 0x29, 0xCB, 0x2A, 0x03, 0x2A, 0x3A, 0x2A, 0x71, 0x2A, 0xA8, 0x2A, 0xDF, 0x2B, 0x16, 0x2B, 0x4D, 0x2B, 0x84, 0x2B, 0xBB, 0x2B, 0xF2, 0x2C, 0x29, 0x2C, 0x60, 0x2C, 0x97, 0x2C, 0xCE, 0x2D, 0x05, 0x2D, 0x3C, 0x2D, 0x73, 0x2D, 0xAA, 0x2D, 0xE1, 0x2E, 0x18, 0x2E, 0x4F, 0x2E, 0x86, 0x2E, 0xBC, 0x2E, 0xF3, 0x2F, 0x2A, 0x2F, 0x61, 0x2F, 0x98, 0x2F, 0xCF, 0x30, 0x05, 0x30, 0x3C, 0x30, 0x73, 0x30, 0xAA, 0x30, 0xE1, 0x31, 0x17, 0x31, 0x4E, 0x31, 0x85, 0x31, 0xBC, 0x31, 0xF2, 0x32, 0x29, 0x32, 0x60, 0x32, 0x96, 0x32, 0xCD, 0x33, 0x04, 0x33, 0x3A, 0x33, 0x71, 0x33, 0xA7, 0x33, 0xDE, 0x34, 0x15, 0x34, 0x4B, 0x34, 0x82, 0x34, 0xB8, 0x34, 0xEF, 0x35, 0x25, 0x35, 0x5C, 0x35, 0x93, 0x35, 0xC9, 0x36, 0x00, 0x36, 0x37, 0x36, 0x6D, 0x36, 0xA4, 0x36, 0xDB, 0x37, 0x12, 0x37, 0x48, 0x37, 0x7F, 0x37, 0xB6, 0x37, 0xED, 0x38, 0x24, 0x38, 0x5B, 0x38, 0x92, 0x38, 0xC8, 0x38, 0xFF, 0x39, 0x36, 0x39, 0x6D, 0x39, 0xA4, 0x39, 0xDB, 0x3A, 0x12, 0x3A, 0x49, 0x3A, 0x81, 0x3A, 0xB8, 0x3A, 0xEF, 0x3B, 0x26, 0x3B, 0x5D, 0x3B, 0x94, 0x3B, 0xCB, 0x3C, 0x03, 0x3C, 0x3A, 0x3C, 0x71, 0x3C, 0xA8, 0x3C, 0xE0, 0x3D, 0x17, 0x3D, 0x4E, 0x3D, 0x85, 0x3D, 0xBD, 0x3D, 0xF4, 0x3E, 0x2C, 0x3E, 0x63, 0x3E, 0x9A, 0x3E, 0xD2, 0x3F, 0x09, 0x3F, 0x41, 0x3F, 0x78, 0x3F, 0xB0, 0x3F, 0xE7, 0x40, 0x1F, 0x40, 0x56, 0x40, 0x8E, 0x40, 0xC5, 0x40, 0xFC, 0x41, 0x34, 0x41, 0x6B, 0x41, 0xA2, 0x41, 0xDA, 0x42, 0x11, 0x42, 0x49, 0x42, 0x80, 0x42, 0xB7, 0x42, 0xEF, 0x43, 0x26, 0x43, 0x5D, 0x43, 0x94, 0x43, 0xCC, 0x44, 0x03, 0x44, 0x3A, 0x44, 0x71, 0x44, 0xA9, 0x44, 0xE0, 0x45, 0x17, 0x45, 0x4E, 0x45, 0x85, 0x45, 0xBD, 0x45, 0xF4, 0x46, 0x2B, 0x46, 0x62, 0x46, 0x99, 0x46, 0xD0, 0x47, 0x08, 0x47, 0x3F, 0x47, 0x76, 0x47, 0xAD, 0x47, 0xE4, 0x48, 0x1B, 0x48, 0x52, 0x48, 0x89, 0x48, 0xC0, 0x48, 0xF7, 0x49, 0x2E, 0x49, 0x65, 0x49, 0x9C, 0x49, 0xD3, 0x4A, 0x0A, 0x4A, 0x41, 0x4A, 0x78, 0x4A, 0xAF, 0x4A, 0xE6, 0x4B, 0x1D, 0x4B, 0x54, 0x4B, 0x8B, 0x4B, 0xC2, 0x4B, 0xF8, 0x4C, 0x2F, 0x4C, 0x66, 0x4C, 0x9D, 0x4C, 0xD4, 0x4D, 0x0A, 0x4D, 0x41, 0x4D, 0x78, 0x4D, 0xAF, 0x4D, 0xE5, 0x4E, 0x1C, 0x4E, 0x53, 0x4E, 0x8A, 0x4E, 0xC0, 0x4E, 0xF7, 0x4F, 0x2E, 0x4F, 0x64, 0x4F, 0x9B, 0x4F, 0xD1, 0x50, 0x08, 0x50, 0x3F, 0x50, 0x75, 0x50, 0xAC, 0x50, 0xE2, 0x51, 0x19, 0x51, 0x4F, 0x51, 0x86, 0x51, 0xBC, 0x51, 0xF3, 0x52, 0x29, 0x52, 0x60, 0x52, 0x96, 0x52, 0xCC, 0x53, 0x03, 0x53, 0x39, 0x53, 0x70, 0x53, 0xA6, 0x53, 0xDC, 0x54, 0x13, 0x54, 0x49, 0x54, 0x7F, 0x54, 0xB6, 0x54, 0xED, 0x55, 0x23, 0x55, 0x5A, 0x55, 0x91, 0x55, 0xC7, 0x55, 0xFE, 0x56, 0x35, 0x56, 0x6C, 0x56, 0xA3, 0x56, 0xDA, 0x57, 0x11, 0x57, 0x48, 0x57, 0x7F, 0x57, 0xB7, 0x57, 0xEE, 0x58, 0x25, 0x58, 0x5D, 0x58, 0x94, 0x58, 0xCC, 0x59, 0x03, 0x59, 0x3B, 0x59, 0x72, 0x59, 0xAA, 0x59, 0xE2, 0x5A, 0x1A, 0x5A, 0x52, 0x5A, 0x8A, 0x5A, 0xC1, 0x5A, 0xFA, 0x5B, 0x32, 0x5B, 0x6A, 0x5B, 0xA2, 0x5B, 0xDA, 0x5C, 0x12, 0x5C, 0x4B, 0x5C, 0x83, 0x5C, 0xBB, 0x5C, 0xF4, 0x5D, 0x2C, 0x5D, 0x65, 0x5D, 0x9E, 0x5D, 0xD6, 0x5E, 0x0F, 0x5E, 0x48, 0x5E, 0x81, 0x5E, 0xBA, 0x5E, 0xF2, 0x5F, 0x2B, 0x5F, 0x64, 0x5F, 0x9E, 0x5F, 0xD7, 0x60, 0x0E, 0x60, 0x43, 0x60, 0x77, 0x60, 0xAB, 0x60, 0xDF, 0x61, 0x14, 0x61, 0x48, 0x61, 0x7D, 0x61, 0xB1, 0x61, 0xE6, 0x62, 0x1B, 0x62, 0x4F, 0x62, 0x84, 0x62, 0xB9, 0x62, 0xED, 0x63, 0x22, 0x63, 0x57, 0x63, 0x8C, 0x63, 0xC1, 0x63, 0xF6, 0x64, 0x2B, 0x64, 0x60, 0x64, 0x94, 0x64, 0xC9, 0x64, 0xFE, 0x65, 0x33, 0x65, 0x68, 0x65, 0x9D, 0x65, 0xD2, 0x66, 0x08, 0x66, 0x3D, 0x66, 0x72, 0x66, 0xA7, 0x66, 0xDC, 0x67, 0x11, 0x67, 0x46, 0x67, 0x7B, 0x67, 0xB1, 0x67, 0xE6, 0x68, 0x1B, 0x68, 0x50, 0x68, 0x86, 0x68, 0xBB, 0x68, 0xF0, 0x69, 0x25, 0x69, 0x5B, 0x69, 0x90, 0x69, 0xC6, 0x69, 0xFB, 0x6A, 0x30, 0x6A, 0x66, 0x6A, 0x9B, 0x6A, 0xD1, 0x6B, 0x06, 0x6B, 0x3C, 0x6B, 0x71, 0x6B, 0xA7, 0x6B, 0xDD, 0x6C, 0x12, 0x6C, 0x48, 0x6C, 0x7D, 0x6C, 0xB3, 0x6C, 0xE9, 0x6D, 0x1F, 0x6D, 0x54, 0x6D, 0x8A, 0x6D, 0xC0, 0x6D, 0xF6, 0x6E, 0x2B, 0x6E, 0x61, 0x6E, 0x97, 0x6E, 0xCD, 0x6F, 0x03, 0x6F, 0x39, 0x6F, 0x6F, 0x6F, 0xA5, 0x6F, 0xDB, 0x70, 0x11, 0x70, 0x47, 0x70, 0x7D, 0x70, 0xB3, 0x70, 0xE9, 0x71, 0x1F, 0x71, 0x55, 0x71, 0x8B, 0x71, 0xC1, 0x71, 0xF8, 0x72, 0x2E, 0x72, 0x64, 0x72, 0x9A, 0x72, 0xD1, 0x73, 0x07, 0x73, 0x3D, 0x73, 0x74, 0x73, 0xAA, 0x73, 0xE0, 0x74, 0x17, 0x74, 0x4D, 0x74, 0x83, 0x74, 0xBA, 0x74, 0xF0, 0x75, 0x27, 0x75, 0x5D, 0x75, 0x94, 0x75, 0xCA, 0x76, 0x01, 0x76, 0x38, 0x76, 0x6E, 0x76, 0xA5, 0x76, 0xDC, 0x77, 0x12, 0x77, 0x49, 0x77, 0x7F, 0x77, 0xB6, 0x77, 0xED, 0x78, 0x23, 0x78, 0x5A, 0x78, 0x90, 0x78, 0xC7, 0x78, 0xFE, 0x79, 0x34, 0x79, 0x6B, 0x79, 0xA2, 0x79, 0xD9, 0x7A, 0x0F, 0x7A, 0x46, 0x7A, 0x7D, 0x7A, 0xB4, 0x7A, 0xEB, 0x7B, 0x22, 0x7B, 0x59, 0x7B, 0x8F, 0x7B, 0xC6, 0x7B, 0xFD, 0x7C, 0x34, 0x7C, 0x6C, 0x7C, 0xA3, 0x7C, 0xDA, 0x7D, 0x11, 0x7D, 0x48, 0x7D, 0x7F, 0x7D, 0xB6, 0x7D, 0xED, 0x7E, 0x25, 0x7E, 0x5C, 0x7E, 0x93, 0x7E, 0xCB, 0x7F, 0x02, 0x7F, 0x39, 0x7F, 0x71, 0x7F, 0xA8, 0x7F, 0xE0, 0x80, 0x12, 0x80, 0x3E, 0x80, 0x6A, 0x80, 0x96, 0x80, 0xC2, 0x80, 0xEE, 0x81, 0x1A, 0x81, 0x46, 0x81, 0x72, 0x81, 0x9E, 0x81, 0xCA, 0x81, 0xF6, 0x82, 0x22, 0x82, 0x4E, 0x82, 0x7A, 0x82, 0xA6, 0x82, 0xD2, 0x82, 0xFF, 0x83, 0x2B, 0x83, 0x57, 0x83, 0x83, 0x83, 0xB0, 0x83, 0xDC, 0x84, 0x08, 0x84, 0x35, 0x84, 0x61, 0x84, 0x8D, 0x84, 0xBA, 0x84, 0xE6, 0x85, 0x13, 0x85, 0x3F, 0x85, 0x6C, 0x85, 0x98, 0x85, 0xC5, 0x85, 0xF1, 0x86, 0x1E, 0x86, 0x4A, 0x86, 0x77, 0x86, 0xA4, 0x86, 0xD0, 0x86, 0xFD, 0x87, 0x2A, 0x87, 0x56, 0x87, 0x83, 0x87, 0xB0, 0x87, 0xDD, 0x88, 0x09, 0x88, 0x36, 0x88, 0x63, 0x88, 0x90, 0x88, 0xBD, 0x88, 0xE9, 0x89, 0x16, 0x89, 0x43, 0x89, 0x70, 0x89, 0x9D, 0x89, 0xCA, 0x89, 0xF7, 0x8A, 0x24, 0x8A, 0x51, 0x8A, 0x7E, 0x8A, 0xAB, 0x8A, 0xD8, 0x8B, 0x05, 0x8B, 0x33, 0x8B, 0x60, 0x8B, 0x8D, 0x8B, 0xBB, 0x8B, 0xE8, 0x8C, 0x15, 0x8C, 0x43, 0x8C, 0x70, 0x8C, 0x9E, 0x8C, 0xCC, 0x8C, 0xF9, 0x8D, 0x27, 0x8D, 0x55, 0x8D, 0x83, 0x8D, 0xB1, 0x8D, 0xDF, 0x8E, 0x0D, 0x8E, 0x3B, 0x8E, 0x69, 0x8E, 0x97, 0x8E, 0xC5, 0x8E, 0xF3, 0x8F, 0x22, 0x8F, 0x50, 0x8F, 0x7E, 0x8F, 0xAD, 0x8F, 0xDB, 0x90, 0x0A, 0x90, 0x38, 0x90, 0x67, 0x90, 0x96, 0x90, 0xC5, 0x90, 0xF3, 0x91, 0x22, 0x91, 0x51, 0x91, 0x80, 0x91, 0xAF, 0x91, 0xDE, 0x92, 0x0D, 0x92, 0x3C, 0x92, 0x6B, 0x92, 0x9A, 0x92, 0xCA, 0x92, 0xF9, 0x93, 0x28, 0x93, 0x58, 0x93, 0x87, 0x93, 0xB7, 0x93, 0xE6, 0x94, 0x16, 0x94, 0x46, 0x94, 0x75, 0x94, 0xA5, 0x94, 0xD5, 0x95, 0x05, 0x95, 0x35, 0x95, 0x65, 0x95, 0x94, 0x95, 0xC4, 0x95, 0xF4, 0x96, 0x24, 0x96, 0x54, 0x96, 0x84, 0x96, 0xB4, 0x96, 0xE4, 0x97, 0x13, 0x97, 0x43, 0x97, 0x73, 0x97, 0xA3, 0x97, 0xD3, 0x98, 0x02, 0x98, 0x32, 0x98, 0x62, 0x98, 0x92, 0x98, 0xC2, 0x98, 0xF1, 0x99, 0x21, 0x99, 0x51, 0x99, 0x81, 0x99, 0xB0, 0x99, 0xE0, 0x9A, 0x10, 0x9A, 0x3F, 0x9A, 0x6F, 0x9A, 0x9F, 0x9A, 0xCE, 0x9A, 0xFE, 0x9B, 0x2E, 0x9B, 0x5D, 0x9B, 0x8D, 0x9B, 0xBD, 0x9B, 0xEC, 0x9C, 0x1C, 0x9C, 0x4C, 0x9C, 0x7B, 0x9C, 0xAB, 0x9C, 0xDA, 0x9D, 0x0A, 0x9D, 0x3A, 0x9D, 0x69, 0x9D, 0x99, 0x9D, 0xC8, 0x9D, 0xF8, 0x9E, 0x27, 0x9E, 0x57, 0x9E, 0x86, 0x9E, 0xB6, 0x9E, 0xE5, 0x9F, 0x15, 0x9F, 0x44, 0x9F, 0x74, 0x9F, 0xA3, 0x9F, 0xD3, 0xA0, 0x03, 0xA0, 0x37, 0xA0, 0x6C, 0xA0, 0xA0, 0xA0, 0xD5, 0xA1, 0x09, 0xA1, 0x3E, 0xA1, 0x72, 0xA1, 0xA7, 0xA1, 0xDB, 0xA2, 0x10, 0xA2, 0x44, 0xA2, 0x79, 0xA2, 0xAD, 0xA2, 0xE2, 0xA3, 0x16, 0xA3, 0x4B, 0xA3, 0x7F, 0xA3, 0xB4, 0xA3, 0xE8, 0xA4, 0x1C, 0xA4, 0x51, 0xA4, 0x85, 0xA4, 0xB9, 0xA4, 0xEE, 0xA5, 0x22, 0xA5, 0x56, 0xA5, 0x8A, 0xA5, 0xBE, 0xA5, 0xF2, 0xA6, 0x26, 0xA6, 0x5A, 0xA6, 0x8E, 0xA6, 0xC2, 0xA6, 0xF6, 0xA7, 0x2A, 0xA7, 0x5E, 0xA7, 0x92, 0xA7, 0xC5, 0xA7, 0xF9, 0xA8, 0x2D, 0xA8, 0x60, 0xA8, 0x94, 0xA8, 0xC8, 0xA8, 0xFB, 0xA9, 0x2F, 0xA9, 0x62, 0xA9, 0x96, 0xA9, 0xC9, 0xA9, 0xFC, 0xAA, 0x30, 0xAA, 0x63, 0xAA, 0x96, 0xAA, 0xCA, 0xAA, 0xFD, 0xAB, 0x30, 0xAB, 0x63, 0xAB, 0x96, 0xAB, 0xCA, 0xAB, 0xFD, 0xAC, 0x30, 0xAC, 0x63, 0xAC, 0x96, 0xAC, 0xC9, 0xAC, 0xFB, 0xAD, 0x2E, 0xAD, 0x61, 0xAD, 0x94, 0xAD, 0xC7, 0xAD, 0xF9, 0xAE, 0x2C, 0xAE, 0x5E, 0xAE, 0x91, 0xAE, 0xC3, 0xAE, 0xF6, 0xAF, 0x28, 0xAF, 0x5A, 0xAF, 0x8C, 0xAF, 0xBE, 0xAF, 0xF0, 0xB0, 0x22, 0xB0, 0x54, 0xB0, 0x86, 0xB0, 0xB8, 0xB0, 0xEA, 0xB1, 0x1B, 0xB1, 0x4D, 0xB1, 0x7E, 0xB1, 0xB0, 0xB1, 0xE1, 0xB2, 0x13, 0xB2, 0x44, 0xB2, 0x75, 0xB2, 0xA6, 0xB2, 0xD8, 0xB3, 0x09, 0xB3, 0x3A, 0xB3, 0x6B, 0xB3, 0x9B, 0xB3, 0xCC, 0xB3, 0xFD, 0xB4, 0x2E, 0xB4, 0x5E, 0xB4, 0x8F, 0xB4, 0xC0, 0xB4, 0xF0, 0xB5, 0x20, 0xB5, 0x51, 0xB5, 0x81, 0xB5, 0xB1, 0xB5, 0xE1, 0xB6, 0x12, 0xB6, 0x42, 0xB6, 0x72, 0xB6, 0xA2, 0xB6, 0xD1, 0xB7, 0x01, 0xB7, 0x31, 0xB7, 0x61, 0xB7, 0x90, 0xB7, 0xC0, 0xB7, 0xEF, 0xB8, 0x1F, 0xB8, 0x4E, 0xB8, 0x7E, 0xB8, 0xAD, 0xB8, 0xDC, 0xB9, 0x0B, 0xB9, 0x3A, 0xB9, 0x69, 0xB9, 0x98, 0xB9, 0xC7, 0xB9, 0xF6, 0xBA, 0x25, 0xBA, 0x54, 0xBA, 0x82, 0xBA, 0xB1, 0xBA, 0xDF, 0xBB, 0x0E, 0xBB, 0x3C, 0xBB, 0x6B, 0xBB, 0x99, 0xBB, 0xC7, 0xBB, 0xF5, 0xBC, 0x24, 0xBC, 0x52, 0xBC, 0x80, 0xBC, 0xAE, 0xBC, 0xDB, 0xBD, 0x09, 0xBD, 0x37, 0xBD, 0x65, 0xBD, 0x92, 0xBD, 0xC0, 0xBD, 0xEE, 0xBE, 0x1B, 0xBE, 0x48, 0xBE, 0x76, 0xBE, 0xA3, 0xBE, 0xD0, 0xBE, 0xFD, 0xBF, 0x2A, 0xBF, 0x57, 0xBF, 0x84, 0xBF, 0xB1, 0xBF, 0xDE, 0xC0, 0x21, 0xC0, 0xA1, 0xC1, 0x22, 0xC1, 0xA2, 0xC2, 0x22, 0xC2, 0xA2, 0xC3, 0x22, 0xC3, 0xA1, 0xC4, 0x20, 0xC4, 0xA0, 0xC5, 0x1F, 0xC5, 0x9D, 0xC6, 0x1C, 0xC6, 0x9B, 0xC7, 0x19, 0xC7, 0x97, 0xC8, 0x15, 0xC8, 0x93, 0xC9, 0x10, 0xC9, 0x8E, 0xCA, 0x0B, 0xCA, 0x88, 0xCB, 0x05, 0xCB, 0x82, 0xCB, 0xFE, 0xCC, 0x7B, 0xCC, 0xF7, 0xCD, 0x73, 0xCD, 0xEF, 0xCE, 0x6A, 0xCE, 0xE6, 0xCF, 0x61, 0xCF, 0xDD, 0xD0, 0x58, 0xD0, 0xD2, 0xD1, 0x4D, 0xD1, 0xC8, 0xD2, 0x42, 0xD2, 0xBC, 0xD3, 0x36, 0xD3, 0xB0, 0xD4, 0x2A, 0xD4, 0xA3, 0xD5, 0x1D, 0xD5, 0x96, 0xD6, 0x0F, 0xD6, 0x88, 0xD7, 0x01, 0xD7, 0x79, 0xD7, 0xF1, 0xD8, 0x6A, 0xD8, 0xE2, 0xD9, 0x5A, 0xD9, 0xD1, 0xDA, 0x49, 0xDA, 0xC0, 0xDB, 0x37, 0xDB, 0xAE, 0xDC, 0x25, 0xDC, 0x9C, 0xDD, 0x13, 0xDD, 0x89, 0xDD, 0xFF, 0xDE, 0x75, 0xDE, 0xEB, 0xDF, 0x61, 0xDF, 0xD7, 0xE0, 0x76, 0xE1, 0x2B, 0xE1, 0xDF, 0xE2, 0x94, 0xE3, 0x48, 0xE3, 0xFC, 0xE4, 0xAF, 0xE5, 0x63, 0xE6, 0x16, 0xE6, 0xC9, 0xE7, 0x7B, 0xE8, 0x2E, 0xE8, 0xE0, 0xE9, 0x92, 0xEA, 0x44, 0xEA, 0xF5, 0xEB, 0xA6, 0xEC, 0x57, 0xED, 0x08, 0xED, 0xB9, 0xEE, 0x69, 0xEF, 0x19, 0xEF, 0xC9, 0xF0, 0x78, 0xF1, 0x28, 0xF1, 0xD7, 0xF2, 0x86, 0xF3, 0x34, 0xF3, 0xE3, 0xF4, 0x91, 0xF5, 0x3F, 0xF5, 0xED, 0xF6, 0x9A, 0xF7, 0x47, 0xF7, 0xF4, 0xF8, 0xA1, 0xF9, 0x4E, 0xF9, 0xFA, 0xFA, 0xA6, 0xFB, 0x52, 0xFB, 0xFE, 0xFC, 0xA9, 0xFD, 0x54, 0xFD, 0xFF, 0xFE, 0xAA, 0xFF, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x80, 0x00, 0xDD, 0x21, 0x80, 0x25, 0x80, 0x89, 0xC0, 0xBC, 0x80, 0x7D, 0x80, 0x06, 0xA7, 0xA0, 0x80, 0x4B, 0x7F, 0xC4, 0x89, 0xE1, 0x80, 0x8B, 0x7F, 0xB7, 0x62, 0x5F, 0x81, 0x55, 0x7F, 0x52, 0x43, 0x72, 0x81, 0xC1, 0x7D, 0xFE, 0x2F, 0x3E, 0x83, 0x18, 0x7C, 0x86, 0x27, 0x80, 0x83, 0xE8, 0x7B, 0xB4, 0xFF, 0x1B, 0x7D, 0xD1, 0x8E, 0xFA, 0xDF, 0x1E, 0x7E, 0x7D, 0x8C, 0x14, 0xC2, 0x59, 0x7F, 0x56, 0x88, 0x6D, 0xA9, 0x35, 0x7F, 0xB7, 0x86, 0x6A, 0x8C, 0xB3, 0x7F, 0xBE, 0x84, 0x16, 0x67, 0x0F, 0x80, 0x9C, 0x82, 0xAD, 0x42, 0xF8, 0x81, 0x8A, 0x80, 0x06, 0x2E, 0x69, 0x82, 0x68, 0x7E, 0x22, 0x25, 0xBE, 0x82, 0xD4, 0x7D, 0x49, 0xFB, 0x7F, 0x7C, 0x68, 0x9E, 0xA8, 0xDD, 0x10, 0x7D, 0x11, 0x97, 0xE7, 0xC0, 0xEE, 0x7D, 0xEF, 0x91, 0x91, 0xA7, 0xCD, 0x7E, 0xCD, 0x8D, 0xC0, 0x8B, 0xD1, 0x7F, 0x2F, 0x89, 0xF8, 0x67, 0xF8, 0x80, 0x02, 0x86, 0x8D, 0x43, 0x12, 0x81, 0x15, 0x82, 0x46, 0x2D, 0xFC, 0x81, 0xC4, 0x7F, 0xB0, 0x25, 0x02, 0x82, 0x0E, 0x7E, 0x94, 0xF7, 0xA4, 0x7C, 0x36, 0xAC, 0xCD, 0xDD, 0x4A, 0x7C, 0x97, 0xA3, 0xB3, 0xC0, 0x99, 0x7C, 0xE0, 0x9A, 0xAE, 0xA7, 0x7F, 0x7D, 0xCE, 0x95, 0x45, 0x8B, 0xCF, 0x7E, 0x93, 0x90, 0x17, 0x67, 0xCC, 0x7F, 0x5A, 0x8A, 0x4D, 0x43, 0x41, 0x80, 0xA0, 0x84, 0x78, 0x2E, 0x32, 0x81, 0x51, 0x80, 0xF8, 0x25, 0x31, 0x81, 0x9A, 0x7F, 0x75, 0xF8, 0xAD, 0x7B, 0x40, 0xB8, 0x99, 0xDD, 0x62, 0x7B, 0xCF, 0xAD, 0x92, 0xC0, 0x0A, 0x7C, 0x0D, 0xA3, 0x36, 0xA7, 0x5B, 0x7C, 0xC1, 0x9C, 0x01, 0x89, 0x30, 0x7D, 0xE8, 0x95, 0x83, 0x67, 0xFD, 0x7E, 0xC8, 0x8E, 0x74, 0x44, 0x14, 0x80, 0x45, 0x86, 0xAB, 0x2E, 0xCA, 0x81, 0x07, 0x82, 0x00, 0x25, 0x9E, 0x81, 0x59, 0x7F, 0xFD, 0xF4, 0x9D, 0x7B, 0x5E, 0xC3, 0x33, 0xD8, 0x78, 0x7B, 0xDF, 0xB7, 0x54, 0xBE, 0x48, 0x7B, 0xF1, 0xAC, 0xFE, 0xA6, 0x7C, 0x7C, 0x2B, 0xA4, 0x28, 0x88, 0xE1, 0x7D, 0x56, 0x9C, 0x3C, 0x69, 0x9E, 0x7E, 0x38, 0x93, 0x6C, 0x45, 0xF5, 0x7F, 0xCF, 0x89, 0x06, 0x2F, 0x6A, 0x80, 0xD6, 0x82, 0xE4, 0x25, 0xDE, 0x81, 0x44, 0x80, 0x48, 0xF3, 0x66, 0x7B, 0xE3, 0xCF, 0x3A, 0xD8, 0x1A, 0x7B, 0x9F, 0xC3, 0xCD, 0xBB, 0xE2, 0x7B, 0xC5, 0xB7, 0xC3, 0xA1, 0xE1, 0x7C, 0x26, 0xAD, 0xAF, 0x88, 0x06, 0x7C, 0xE1, 0xA4, 0x18, 0x67, 0x32, 0x7D, 0xF1, 0x98, 0xC9, 0x44, 0x0C, 0x7F, 0xB6, 0x8B, 0x69, 0x2F, 0x20, 0x80, 0xE4, 0x83, 0xB0, 0x26, 0x2C, 0x81, 0x67, 0x80, 0x68, 0xF0, 0xCA, 0x7C, 0x31, 0xD9, 0x6C, 0xD7, 0x5B, 0x7B, 0xB6, 0xCD, 0xE5, 0xBB, 0x95, 0x7B, 0x7F, 0xC0, 0xEA, 0xA1, 0xCD, 0x7B, 0xDE, 0xB5, 0x8C, 0x86, 0xC0, 0x7C, 0x82, 0xAA, 0x44, 0x66, 0x9A, 0x7D, 0xBB, 0x9D, 0x74, 0x43, 0x28, 0x7F, 0xC8, 0x8D, 0xB0, 0x2F, 0x06, 0x81, 0x3B, 0x84, 0x4F, 0x26, 0x7B, 0x81, 0xDF, 0x80, 0x4F, 0xF1, 0xD9, 0x7C, 0x32, 0xE4, 0x33, 0xD6, 0x70, 0x7B, 0x83, 0xD6, 0x77, 0xBC, 0x8E, 0x7A, 0xDA, 0xC8, 0x7A, 0xA2, 0x88, 0x7B, 0xBA, 0xBC, 0x94, 0x86, 0x93, 0x7C, 0x38, 0xB0, 0x20, 0x63, 0xDC, 0x7D, 0xA6, 0xA1, 0x18, 0x43, 0xEB, 0x7F, 0xCF, 0x8F, 0xF2, 0x2F, 0xA9, 0x81, 0xC4, 0x84, 0xC0, 0x27, 0x0A, 0x82, 0x99, 0x7F, 0xFA, 0xED, 0x7E, 0x8A, 0xDC, 0x7D, 0x9F, 0xD3, 0x00, 0x88, 0xC2, 0x7E, 0x66, 0xB9, 0xCE, 0x86, 0x9E, 0x7E, 0x50, 0xA3, 0xE2, 0x85, 0x14, 0x7E, 0x18, 0x84, 0xCA, 0x84, 0x25, 0x7E, 0xAF, 0x64, 0x03, 0x83, 0x96, 0x7E, 0xD6, 0x41, 0xE7, 0x83, 0x5F, 0x7D, 0xE1, 0x2E, 0x0C, 0x83, 0xAB, 0x7C, 0xCD, 0x25, 0xAD, 0x83, 0xD9, 0x7C, 0x4B, 0xE7, 0x4A, 0x89, 0xAD, 0x8B, 0xCA, 0xD1, 0x50, 0x87, 0x36, 0x88, 0xC3, 0xB9, 0x86, 0x85, 0x41, 0x86, 0x12, 0xA1, 0x1D, 0x84, 0x4A, 0x84, 0xC4, 0x85, 0x67, 0x83, 0x7A, 0x83, 0x5D, 0x65, 0x0E, 0x83, 0x20, 0x81, 0xDF, 0x41, 0xB8, 0x83, 0x11, 0x7F, 0x8A, 0x2D, 0x78, 0x83, 0x3B, 0x7D, 0xE6, 0x24, 0xE2, 0x83, 0x53, 0x7D, 0x2C, 0xE6, 0xE9, 0x88, 0x34, 0x98, 0xCB, 0xD1, 0xB3, 0x85, 0x90, 0x93, 0x42, 0xB8, 0xC1, 0x84, 0x10, 0x8E, 0x73, 0x9F, 0xB1, 0x83, 0x98, 0x8B, 0xF4, 0x84, 0xDE, 0x82, 0xDE, 0x88, 0xFB, 0x65, 0xB9, 0x82, 0x88, 0x85, 0xA2, 0x42, 0x53, 0x82, 0xA2, 0x81, 0x9A, 0x2D, 0x3A, 0x82, 0xCB, 0x7F, 0x18, 0x24, 0x55, 0x82, 0xDC, 0x7E, 0x06, 0xE7, 0x1B, 0x86, 0xC2, 0xA4, 0x80, 0xCD, 0x6C, 0x85, 0x53, 0x9E, 0x29, 0xB7, 0x92, 0x83, 0x46, 0x97, 0x77, 0x9E, 0xF7, 0x82, 0xC3, 0x93, 0x1B, 0x83, 0x66, 0x82, 0x35, 0x8E, 0xC7, 0x63, 0x85, 0x81, 0xE4, 0x89, 0x6D, 0x41, 0xB5, 0x82, 0x4F, 0x83, 0xB8, 0x2D, 0x29, 0x82, 0x7C, 0x80, 0x31, 0x24, 0x5B, 0x82, 0x8D, 0x7E, 0xAC, 0xE3, 0x2C, 0x86, 0xA8, 0xB0, 0x4C, 0xCD, 0x6E, 0x84, 0x69, 0xA7, 0xF3, 0xB5, 0xDF, 0x82, 0xBE, 0xA0, 0x61, 0x9D, 0x65, 0x82, 0x19, 0x9A, 0x22, 0x82, 0x7F, 0x81, 0x9D, 0x93, 0xDC, 0x64, 0x05, 0x81, 0x80, 0x8D, 0x92, 0x41, 0x9C, 0x82, 0x27, 0x85, 0xE9, 0x2D, 0x4B, 0x82, 0x4F, 0x81, 0x22, 0x24, 0x8C, 0x82, 0x63, 0x7F, 0x14, 0xE2, 0x1D, 0x86, 0x5C, 0xBB, 0x8E, 0xCE, 0x39, 0x83, 0xDC, 0xB2, 0x56, 0xB4, 0xD8, 0x82, 0x5D, 0xA9, 0x55, 0x9C, 0xA7, 0x81, 0x89, 0xA1, 0x8E, 0x81, 0xB9, 0x81, 0x11, 0x9A, 0x08, 0x61, 0x9C, 0x81, 0x15, 0x91, 0xBE, 0x41, 0xD3, 0x81, 0xB8, 0x87, 0xF8, 0x2D, 0x79, 0x82, 0x2B, 0x81, 0xEA, 0x24, 0xC1, 0x82, 0x5B, 0x7F, 0x51, 0xE3, 0x39, 0x86, 0x3F, 0xC6, 0xFF, 0xCC, 0xC4, 0x83, 0xCA, 0xBD, 0x52, 0xB3, 0x57, 0x82, 0x37, 0xB3, 0x84, 0x9B, 0xE3, 0x81, 0x2F, 0xAA, 0x4E, 0x82, 0x36, 0x80, 0x77, 0xA1, 0x54, 0x5E, 0xE2, 0x80, 0xC4, 0x96, 0x9B, 0x40, 0x0F, 0x81, 0x95, 0x8A, 0x1D, 0x2D, 0x33, 0x82, 0x30, 0x82, 0xA6, 0x25, 0x0F, 0x82, 0x74, 0x7F, 0x76, 0xE0, 0x33, 0x86, 0x12, 0xD0, 0xC9, 0xCA, 0xE5, 0x83, 0xE8, 0xC7, 0x29, 0xB2, 0x80, 0x81, 0xF0, 0xBC, 0x25, 0x9A, 0xF1, 0x80, 0xD5, 0xB1, 0xE4, 0x80, 0xD7, 0x80, 0x46, 0xA7, 0x5F, 0x61, 0x2D, 0x80, 0x8F, 0x9B, 0x59, 0x3F, 0xD2, 0x81, 0x92, 0x8C, 0x4A, 0x2D, 0x49, 0x82, 0x5C, 0x83, 0x5A, 0x25, 0x72, 0x82, 0xB6, 0x7F, 0x8A, 0xDE, 0xA5, 0x87, 0x92, 0xDA, 0x92, 0xC9, 0xA5, 0x84, 0x50, 0xD0, 0x1B, 0xB1, 0xB6, 0x81, 0x9E, 0xC3, 0x92, 0x9A, 0xED, 0x80, 0x61, 0xB8, 0x7E, 0x7E, 0xD2, 0x80, 0x19, 0xAC, 0xBC, 0x5F, 0xD7, 0x80, 0x6F, 0x9F, 0x18, 0x40, 0x19, 0x81, 0x90, 0x8E, 0x4D, 0x2D, 0xD8, 0x82, 0x96, 0x84, 0x03, 0x26, 0x12, 0x83, 0x0C, 0x7F, 0x98, 0xD9, 0x37, 0x95, 0xC3, 0x7C, 0xEE, 0xC5, 0x4A, 0x91, 0xC2, 0x7D, 0x75, 0xAE, 0x6B, 0x8D, 0xAF, 0x7D, 0x6C, 0x97, 0xCA, 0x8B, 0x1B, 0x7D, 0xFB, 0x7C, 0xED, 0x88, 0x9F, 0x7D, 0xEB, 0x60, 0xF9, 0x86, 0xB5, 0x7D, 0xEF, 0x40, 0x65, 0x85, 0x42, 0x7D, 0x68, 0x2C, 0xF2, 0x84, 0x88, 0x7C, 0xC2, 0x24, 0xA0, 0x84, 0x3A, 0x7C, 0x74, 0xD4, 0xC2, 0x94, 0xED, 0x88, 0x25, 0xC4, 0x11, 0x90, 0x61, 0x85, 0xBD, 0xAE, 0xDC, 0x8C, 0x59, 0x83, 0xE8, 0x97, 0x6A, 0x89, 0xED, 0x83, 0x1D, 0x7D, 0x8A, 0x87, 0xD8, 0x82, 0x1F, 0x5E, 0xB7, 0x86, 0x53, 0x80, 0xD5, 0x3F, 0x5B, 0x84, 0xF8, 0x7E, 0xD9, 0x2C, 0x58, 0x84, 0x4A, 0x7D, 0x7D, 0x24, 0x2D, 0x84, 0x03, 0x7C, 0xE4, 0xD4, 0xA1, 0x93, 0x87, 0x93, 0x4A, 0xC3, 0xE3, 0x8F, 0x2C, 0x8F, 0x1D, 0xAE, 0x1D, 0x8B, 0x6B, 0x8B, 0xB2, 0x97, 0x20, 0x89, 0x11, 0x89, 0x94, 0x7E, 0x5C, 0x87, 0x08, 0x87, 0x2A, 0x60, 0x74, 0x85, 0xB6, 0x84, 0x76, 0x3F, 0xC0, 0x84, 0x9E, 0x80, 0xAC, 0x2B, 0xEE, 0x84, 0x09, 0x7E, 0x5D, 0x23, 0x9E, 0x83, 0xC8, 0x7D, 0x62, 0xD3, 0xBE, 0x92, 0xD3, 0x9E, 0x07, 0xC1, 0x49, 0x8E, 0x91, 0x99, 0x86, 0xAC, 0x52, 0x8A, 0xAC, 0x94, 0x46, 0x94, 0xB8, 0x88, 0x63, 0x90, 0x9E, 0x7B, 0x0E, 0x86, 0x8E, 0x8C, 0xD7, 0x5F, 0x4B, 0x85, 0x39, 0x88, 0x4B, 0x3F, 0x07, 0x84, 0x54, 0x82, 0xAB, 0x2B, 0xA0, 0x83, 0xD6, 0x7F, 0x45, 0x23, 0x5F, 0x83, 0x9F, 0x7D, 0xD0, 0xD0, 0x5B, 0x92, 0x2C, 0xA9, 0x4D, 0xBF, 0x3F, 0x8D, 0xF5, 0xA3, 0x10, 0xAA, 0xB4, 0x8A, 0x1D, 0x9C, 0xA2, 0x93, 0x49, 0x87, 0xF0, 0x97, 0x3F, 0x7A, 0x27, 0x86, 0x31, 0x91, 0xBE, 0x5E, 0xE1, 0x84, 0xF2, 0x8C, 0x53, 0x3F, 0x9A, 0x84, 0x0F, 0x84, 0xFB, 0x2B, 0x9E, 0x83, 0xB8, 0x80, 0x1E, 0x23, 0x44, 0x83, 0x92, 0x7E, 0x0F, 0xCF, 0xF7, 0x91, 0xA5, 0xB3, 0xAC, 0xBF, 0x76, 0x8D, 0x80, 0xAC, 0x6B, 0xA9, 0xBC, 0x89, 0xA7, 0xA5, 0x14, 0x92, 0xBE, 0x87, 0x79, 0x9E, 0x78, 0x7A, 0x7E, 0x85, 0x9A, 0x97, 0xF1, 0x5D, 0x4E, 0x84, 0x8A, 0x90, 0x63, 0x3D, 0xD8, 0x83, 0xE7, 0x86, 0xBA, 0x2B, 0x44, 0x83, 0xB2, 0x80, 0xC1, 0x23, 0x68, 0x83, 0x9E, 0x7E, 0x33, 0xD0, 0x6A, 0x91, 0x4C, 0xBF, 0x02, 0xBF, 0xB6, 0x8D, 0x07, 0xB7, 0x40, 0xA8, 0x63, 0x89, 0xA0, 0xAE, 0xED, 0x92, 0x98, 0x87, 0x3E, 0xA7, 0x11, 0x7B, 0x02, 0x85, 0x0F, 0x9F, 0x4B, 0x5C, 0x30, 0x84, 0x2D, 0x95, 0x09, 0x3C, 0x5A, 0x83, 0xCD, 0x88, 0xA5, 0x2B, 0x06, 0x83, 0xBA, 0x81, 0x68, 0x23, 0xBB, 0x83, 0xB6, 0x7E, 0x51, 0xCE, 0xC7, 0x90, 0xB1, 0xC8, 0x77, 0xBE, 0xB3, 0x8C, 0xE8, 0xC0, 0xAB, 0xA8, 0x2D, 0x89, 0x55, 0xB7, 0x1E, 0x91, 0xE2, 0x86, 0xCA, 0xAE, 0x13, 0x79, 0x00, 0x84, 0xF6, 0xA4, 0x74, 0x5B, 0xF7, 0x84, 0x03, 0x99, 0x0E, 0x3C, 0xA1, 0x83, 0xB6, 0x8A, 0xB1, 0x2B, 0x86, 0x83, 0xBC, 0x82, 0x30, 0x24, 0x55, 0x83, 0xC3, 0x7E, 0x8F, 0xCC, 0xD0, 0x92, 0x1A, 0xD1, 0x80, 0xBC, 0xBE, 0x8D, 0x40, 0xC8, 0xFF, 0xA7, 0xED, 0x89, 0x16, 0xBE, 0x3F, 0x93, 0x80, 0x86, 0x17, 0xB4, 0x29, 0x78, 0xB7, 0x84, 0x9F, 0xA9, 0x64, 0x5A, 0x21, 0x83, 0xB5, 0x9C, 0x4F, 0x3D, 0x8B, 0x83, 0x8F, 0x8C, 0xB2, 0x2C, 0x8D, 0x83, 0xBF, 0x83, 0x07, 0x25, 0x3F, 0x83, 0xD1, 0x7E, 0xE2, 0xC8, 0xA6, 0xA0, 0x46, 0x7C, 0x3D, 0xB7, 0x68, 0x9A, 0x69, 0x7D, 0x16, 0xA3, 0x46, 0x94, 0xB5, 0x7D, 0x11, 0x8D, 0x0D, 0x91, 0x02, 0x7D, 0x06, 0x75, 0x17, 0x8D, 0x79, 0x7D, 0x2B, 0x5C, 0x6A, 0x8A, 0x5F, 0x7D, 0x0E, 0x3E, 0x87, 0x87, 0x68, 0x7C, 0xA5, 0x2C, 0x27, 0x85, 0xBA, 0x7C, 0x3B, 0x24, 0x66, 0x85, 0x09, 0x7C, 0x09, 0xC5, 0xE8, 0x9E, 0xD0, 0x86, 0x96, 0xB6, 0xF4, 0x99, 0x3A, 0x84, 0x07, 0xA2, 0xA3, 0x93, 0xD8, 0x82, 0x95, 0x8D, 0x0F, 0x90, 0x20, 0x81, 0x83, 0x75, 0x87, 0x8C, 0xD2, 0x80, 0xE8, 0x59, 0x78, 0x89, 0xFB, 0x7F, 0xDE, 0x3C, 0x47, 0x87, 0x22, 0x7E, 0x04, 0x2B, 0x11, 0x85, 0x8C, 0x7C, 0xDC, 0x23, 0xB4, 0x84, 0xE1, 0x7C, 0x5E, 0xC5, 0xEE, 0x9C, 0xBF, 0x90, 0xEC, 0xB6, 0xC0, 0x97, 0xE5, 0x8C, 0xAC, 0xA1, 0xA9, 0x93, 0x05, 0x8A, 0x36, 0x8D, 0x2E, 0x8F, 0x35, 0x87, 0xA3, 0x76, 0x34, 0x8C, 0x08, 0x85, 0x89, 0x58, 0xFE, 0x89, 0x71, 0x83, 0x43, 0x3A, 0xC6, 0x86, 0xEB, 0x7F, 0x88, 0x2A, 0x14, 0x85, 0x5F, 0x7D, 0x94, 0x22, 0xF0, 0x84, 0xB7, 0x7C, 0xBE, 0xC3, 0x74, 0x9C, 0xC3, 0x9A, 0xB4, 0xB4, 0xF1, 0x97, 0x2C, 0x96, 0x0A, 0xA1, 0x11, 0x91, 0xFD, 0x91, 0xCB, 0x8B, 0xDE, 0x8E, 0x5E, 0x8E, 0x61, 0x73, 0x21, 0x8B, 0x7A, 0x8A, 0xCA, 0x57, 0x4E, 0x88, 0xDD, 0x86, 0x7A, 0x3A, 0x17, 0x86, 0xA0, 0x81, 0x4B, 0x29, 0x91, 0x85, 0x3B, 0x7E, 0x58, 0x22, 0x70, 0x84, 0xA2, 0x7D, 0x0D, 0xC2, 0xD9, 0x9C, 0x86, 0xA4, 0x80, 0xB3, 0xA2, 0x96, 0xBA, 0x9E, 0xDE, 0x9F, 0xEE, 0x91, 0x81, 0x99, 0x42, 0x8B, 0xCA, 0x8D, 0xC9, 0x94, 0xE2, 0x71, 0xD8, 0x8A, 0xE8, 0x90, 0x11, 0x57, 0x42, 0x88, 0x9B, 0x8A, 0x6C, 0x3A, 0x52, 0x86, 0x61, 0x83, 0x67, 0x29, 0x66, 0x85, 0x2E, 0x7F, 0x0D, 0x22, 0x2F, 0x84, 0xAD, 0x7D, 0x2C, 0xC2, 0xB9, 0x9B, 0x86, 0xAD, 0x78, 0xB2, 0x77, 0x96, 0x46, 0xA8, 0x0B, 0x9E, 0x1C, 0x91, 0x06, 0xA1, 0x70, 0x89, 0xF7, 0x8D, 0x73, 0x9B, 0x8C, 0x72, 0x01, 0x8A, 0x8A, 0x95, 0x73, 0x56, 0x64, 0x88, 0x49, 0x8E, 0x64, 0x39, 0x35, 0x86, 0x43, 0x85, 0x32, 0x29, 0x1C, 0x85, 0x41, 0x7F, 0x94, 0x22, 0x46, 0x84, 0xDB, 0x7D, 0x23, 0xC1, 0x27, 0x9B, 0x16, 0xB8, 0x29, 0xB1, 0xF7, 0x95, 0x85, 0xB2, 0x01, 0x9C, 0x5A, 0x90, 0xD1, 0xAA, 0xD3, 0x88, 0x68, 0x8D, 0x66, 0xA3, 0xBF, 0x71, 0x95, 0x8A, 0x64, 0x9B, 0xC9, 0x56, 0x46, 0x88, 0x14, 0x92, 0xC6, 0x38, 0xC3, 0x86, 0x2A, 0x87, 0x1C, 0x29, 0x2F, 0x85, 0x53, 0x80, 0x24, 0x22, 0xB0, 0x85, 0x0E, 0x7D, 0x1C, 0xC1, 0x2E, 0x9A, 0xA1, 0xC2, 0x25, 0xB2, 0x7E, 0x95, 0x83, 0xBA, 0xF7, 0x9C, 0xCB, 0x90, 0xB9, 0xB2, 0x57, 0x87, 0x27, 0x8D, 0x35, 0xAA, 0x22, 0x70, 0x3A, 0x8A, 0x3C, 0xA1, 0x39, 0x56, 0x84, 0x87, 0xF7, 0x96, 0xA4, 0x39, 0xDB, 0x86, 0x0D, 0x89, 0x05, 0x2A, 0x05, 0x85, 0x37, 0x80, 0xF0, 0x23, 0x5A, 0x84, 0xE2, 0x7D, 0x7C, 0xC1, 0xDD, 0x9A, 0x80, 0xCB, 0x90, 0xB1, 0x84, 0x95, 0x5F, 0xC2, 0xDA, 0x9B, 0xE5, 0x90, 0xA8, 0xB9, 0x2E, 0x87, 0xC1, 0x8C, 0xA4, 0xB0, 0x18, 0x6F, 0x9F, 0x89, 0xAF, 0xA6, 0x12, 0x55, 0x76, 0x87, 0x8C, 0x99, 0x94, 0x3B, 0xCB, 0x85, 0xE6, 0x8A, 0xD6, 0x2B, 0xAA, 0x85, 0x28, 0x81, 0xD0, 0x24, 0x78, 0x84, 0xC6, 0x7D, 0xF1, 0xBC, 0x4F, 0xA9, 0x43, 0x7B, 0x74, 0xAC, 0x8F, 0xA2, 0x64, 0x7C, 0x38, 0x98, 0xBA, 0x9B, 0x35, 0x7C, 0xBB, 0x84, 0x11, 0x96, 0x7C, 0x7C, 0x7B, 0x6D, 0xFE, 0x92, 0x25, 0x7C, 0x51, 0x56, 0x75, 0x8D, 0xFF, 0x7C, 0x21, 0x3A, 0xA1, 0x89, 0x74, 0x7B, 0xC9, 0x2B, 0x44, 0x87, 0x13, 0x7B, 0x6C, 0x24, 0xAE, 0x86, 0x0E, 0x7B, 0x48, 0xB9, 0x3B, 0xA7, 0xBA, 0x84, 0xC8, 0xAB, 0x15, 0xA1, 0x1D, 0x82, 0xE7, 0x98, 0x08, 0x9A, 0xC6, 0x81, 0x49, 0x83, 0xEB, 0x95, 0xE7, 0x80, 0x6A, 0x6D, 0xCC, 0x91, 0xBE, 0x80, 0x00, 0x55, 0x1F, 0x8D, 0xBC, 0x7E, 0xF9, 0x39, 0x62, 0x89, 0x56, 0x7D, 0x3B, 0x29, 0xD8, 0x86, 0xDA, 0x7C, 0x2D, 0x23, 0x45, 0x85, 0xCC, 0x7B, 0xBC, 0xB8, 0xDE, 0xA5, 0x97, 0x8E, 0x55, 0xAA, 0x5A, 0x9F, 0x7E, 0x8B, 0x49, 0x96, 0x8F, 0x99, 0xF8, 0x88, 0x86, 0x83, 0xAD, 0x95, 0x20, 0x85, 0xF5, 0x6D, 0x4B, 0x91, 0x59, 0x84, 0x86, 0x53, 0x60, 0x8D, 0x5B, 0x82, 0x5E, 0x38, 0x29, 0x89, 0x1A, 0x7E, 0xE2, 0x28, 0xAC, 0x86, 0xA0, 0x7C, 0xF5, 0x22, 0x17, 0x85, 0x92, 0x7C, 0x26, 0xB7, 0xE4, 0xA5, 0x08, 0x97, 0x8A, 0xA9, 0x48, 0x9E, 0xE3, 0x93, 0x69, 0x96, 0xBD, 0x98, 0xE5, 0x8F, 0x89, 0x83, 0x73, 0x94, 0x53, 0x8B, 0xFE, 0x6B, 0xB5, 0x90, 0xBB, 0x88, 0xDD, 0x52, 0x53, 0x8C, 0xFB, 0x85, 0x7F, 0x37, 0x9C, 0x88, 0xDB, 0x80, 0x9F, 0x28, 0x0B, 0x86, 0x7C, 0x7D, 0xAE, 0x21, 0x66, 0x85, 0x79, 0x7C, 0x6B, 0xB7, 0x6A, 0xA4, 0xF0, 0xA0, 0x1E, 0xA8, 0x4A, 0x9E, 0xB3, 0x9B, 0x13, 0x95, 0x8F, 0x98, 0x72, 0x96, 0x2B, 0x82, 0x20, 0x93, 0xB5, 0x92, 0x11, 0x6A, 0x56, 0x8F, 0xF6, 0x8D, 0xEA, 0x51, 0x8D, 0x8C, 0x88, 0x88, 0xED, 0x37, 0x24, 0x88, 0xB0, 0x82, 0x5E, 0x27, 0xB8, 0x86, 0x79, 0x7E, 0x41, 0x21, 0x26, 0x85, 0x8A, 0x7C, 0x7A, 0xB8, 0x80, 0xA4, 0x53, 0xA8, 0xE6, 0xA8, 0xB1, 0x9E, 0x2F, 0xA3, 0x61, 0x93, 0xCD, 0x98, 0x0D, 0x9D, 0x61, 0x80, 0xD5, 0x93, 0x67, 0x98, 0x6C, 0x6A, 0x20, 0x8F, 0x76, 0x93, 0x27, 0x50, 0xDF, 0x8C, 0x13, 0x8C, 0x9B, 0x36, 0x6D, 0x88, 0x88, 0x84, 0x02, 0x27, 0x95, 0x86, 0x94, 0x7E, 0xAC, 0x21, 0x51, 0x85, 0xCC, 0x7C, 0x56, 0xB5, 0x54, 0xA4, 0xA1, 0xB3, 0x2C, 0xA7, 0x7F, 0x9D, 0xAB, 0xAD, 0xC7, 0x92, 0xF1, 0x97, 0x9D, 0xA6, 0x8C, 0x7F, 0xB6, 0x93, 0x58, 0x9F, 0xC4, 0x69, 0xA5, 0x8F, 0x67, 0x99, 0x33, 0x51, 0x91, 0x8B, 0xFD, 0x90, 0xD9, 0x36, 0x8C, 0x88, 0x70, 0x85, 0xD1, 0x27, 0xEA, 0x86, 0xB0, 0x7F, 0x21, 0x21, 0xE2, 0x86, 0x1B, 0x7C, 0x2A, 0xB4, 0x5F, 0xA4, 0x1D, 0xBC, 0xAD, 0xA6, 0x01, 0x9D, 0xEB, 0xB6, 0x35, 0x92, 0x6E, 0x97, 0xCB, 0xAE, 0x17, 0x7E, 0x49, 0x93, 0x46, 0xA6, 0x4E, 0x68, 0x8E, 0x8F, 0x7A, 0x9E, 0x4A, 0x51, 0x6A, 0x8C, 0x00, 0x94, 0x68, 0x37, 0x67, 0x88, 0x56, 0x87, 0x68, 0x28, 0xAE, 0x86, 0x8A, 0x7F, 0xD1, 0x22, 0x77, 0x85, 0xD1, 0x7C, 0x95, 0xB5, 0xB0, 0xA4, 0x27, 0xC5, 0xBC, 0xA4, 0xC4, 0x9D, 0xE3, 0xBD, 0xCF, 0x91, 0x9F, 0x97, 0xA7, 0xB4, 0xFF, 0x7E, 0x55, 0x92, 0xFE, 0xAC, 0x28, 0x67, 0x64, 0x8F, 0x31, 0xA2, 0xB6, 0x4F, 0xFD, 0x8B, 0xA6, 0x96, 0xA9, 0x38, 0x8E, 0x88, 0x0C, 0x88, 0x98, 0x29, 0xC5, 0x86, 0x63, 0x80, 0x7D, 0x23, 0x61, 0x85, 0xAB, 0x7D, 0x08, 0xAE, 0xE8, 0xB2, 0x27, 0x7B, 0x53, 0xA0, 0xE0, 0xAA, 0x9D, 0x7B, 0x3D, 0x8C, 0xDC, 0xA2, 0x8D, 0x7B, 0xEB, 0x7A, 0x78, 0x9C, 0xC1, 0x7B, 0x62, 0x66, 0xC3, 0x97, 0x87, 0x7B, 0x21, 0x4F, 0xE8, 0x92, 0x56, 0x7B, 0x1F, 0x36, 0x9C, 0x8C, 0x33, 0x7A, 0xDF, 0x2A, 0x84, 0x88, 0xC1, 0x7A, 0x6D, 0x24, 0xA5, 0x87, 0x2E, 0x7A, 0x6B, 0xAD, 0x5B, 0xB1, 0x3C, 0x82, 0xBA, 0x9F, 0xB8, 0xA9, 0xAE, 0x81, 0x1A, 0x8C, 0x33, 0xA2, 0x57, 0x80, 0x4F, 0x79, 0xC5, 0x9C, 0x59, 0x7F, 0x67, 0x66, 0x44, 0x97, 0x0A, 0x7E, 0x8F, 0x4F, 0xC8, 0x92, 0x01, 0x7D, 0xBC, 0x36, 0x3D, 0x8B, 0xEE, 0x7C, 0x62, 0x28, 0x5E, 0x88, 0x53, 0x7B, 0x73, 0x22, 0x80, 0x86, 0xC7, 0x7B, 0x0E, 0xAC, 0xB1, 0xB0, 0x5C, 0x8B, 0xE7, 0x9E, 0x3E, 0xA8, 0x63, 0x88, 0xF3, 0x8B, 0x0B, 0xA1, 0x83, 0x86, 0x40, 0x7A, 0x20, 0x9B, 0xD8, 0x84, 0x01, 0x66, 0xD0, 0x96, 0xA1, 0x82, 0x5D, 0x4E, 0xFC, 0x91, 0x77, 0x80, 0xC3, 0x35, 0xA1, 0x8B, 0x85, 0x7E, 0x12, 0x27, 0x1D, 0x87, 0xF9, 0x7C, 0x52, 0x20, 0xF8, 0x86, 0x76, 0x7B, 0x8F, 0xAC, 0x0F, 0xAF, 0x74, 0x94, 0xC8, 0x9C, 0xE2, 0xA8, 0x06, 0x90, 0xC1, 0x8A, 0xEE, 0xA0, 0xDD, 0x8C, 0xBB, 0x7A, 0x19, 0x9B, 0x48, 0x89, 0x7C, 0x66, 0x3C, 0x96, 0x12, 0x86, 0xA4, 0x4E, 0xC1, 0x91, 0x20, 0x84, 0x09, 0x35, 0x53, 0x8B, 0x43, 0x7F, 0xD5, 0x26, 0x7D, 0x87, 0xC7, 0x7D, 0x07, 0x20, 0x30, 0x86, 0x4C, 0x7B, 0xD1, 0xAA, 0x6B, 0xAE, 0xDA, 0x9C, 0xC4, 0x9A, 0xBD, 0xA7, 0xC7, 0x98, 0x3F, 0x89, 0xF8, 0xA0, 0x47, 0x93, 0xCD, 0x78, 0x46, 0x9A, 0xB3, 0x8F, 0xB1, 0x64, 0x47, 0x95, 0x74, 0x8B, 0x79, 0x4D, 0xB5, 0x90, 0xCA, 0x87, 0x67, 0x35, 0x10, 0x8B, 0x2C, 0x81, 0x83, 0x26, 0x3B, 0x87, 0xBD, 0x7D, 0x8D, 0x1F, 0xF9, 0x86, 0x4C, 0x7B, 0xDB, 0xAA, 0x52, 0xAD, 0xD1, 0xA5, 0x2A, 0x9A, 0xF6, 0xA7, 0x03, 0xA0, 0x08, 0x88, 0xE6, 0x9F, 0xBB, 0x9A, 0x80, 0x77, 0x0D, 0x9A, 0x4C, 0x95, 0x71, 0x62, 0xEA, 0x95, 0x2F, 0x90, 0x8C, 0x4B, 0xBA, 0x90, 0x47, 0x8A, 0xB7, 0x34, 0x29, 0x8A, 0xE6, 0x82, 0xDB, 0x26, 0x31, 0x87, 0xC3, 0x7D, 0xE8, 0x20, 0x38, 0x86, 0x70, 0x7B, 0xC4, 0xA8, 0x0A, 0xAE, 0x52, 0xAE, 0xB7, 0x9A, 0xA0, 0xA6, 0xF6, 0xA9, 0x5B, 0x88, 0x3E, 0x9F, 0x73, 0xA2, 0xD3, 0x76, 0x2D, 0x99, 0xF5, 0x9C, 0x61, 0x62, 0x69, 0x95, 0x00, 0x96, 0x60, 0x4C, 0xD3, 0x90, 0x3F, 0x8E, 0xB1, 0x34, 0x84, 0x8A, 0xDA, 0x84, 0x72, 0x26, 0xA6, 0x87, 0xD7, 0x7E, 0x50, 0x20, 0xCA, 0x86, 0x97, 0x7B, 0xAE, 0xA6, 0x93, 0xAD, 0xF2, 0xB7, 0x15, 0x99, 0x68, 0xA6, 0xFC, 0xB1, 0x4E, 0x87, 0x96, 0x9F, 0x80, 0xA9, 0xDD, 0x74, 0xC8, 0x99, 0xE5, 0xA2, 0x88, 0x61, 0x2E, 0x95, 0x17, 0x9A, 0xE5, 0x4C, 0x71, 0x90, 0x3D, 0x91, 0xA2, 0x35, 0x11, 0x8A, 0xDA, 0x85, 0xBC, 0x27, 0x5D, 0x87, 0xDA, 0x7E, 0xD1, 0x21, 0x8A, 0x86, 0x97, 0x7B, 0xE0, 0xA7, 0x13, 0xAE, 0x97, 0xBF, 0x4C, 0x99, 0xC0, 0xA6, 0x9D, 0xB8, 0x9C, 0x87, 0xD4, 0x9F, 0x2F, 0xB0, 0x08, 0x73, 0xE4, 0x99, 0xBA, 0xA7, 0xC3, 0x61, 0x2B, 0x95, 0x18, 0x9E, 0xA6, 0x4A, 0x90, 0x8F, 0xB9, 0x93, 0x11, 0x35, 0x89, 0x8A, 0xBC, 0x86, 0x80, 0x27, 0xF9, 0x87, 0xE8, 0x7F, 0x4B, 0x22, 0x50, 0x86, 0xA2, 0x7C, 0x32, 0x9E, 0x52, 0xBC, 0xF9, 0x7C, 0x8C, 0x91, 0x7C, 0xB4, 0xC9, 0x7B, 0x54, 0x7E, 0x21, 0xAC, 0x42, 0x7A, 0xA7, 0x70, 0x0C, 0xA4, 0xEE, 0x79, 0xA0, 0x5F, 0x6B, 0x9E, 0x44, 0x79, 0x9E, 0x49, 0xCB, 0x97, 0xCE, 0x7A, 0x26, 0x32, 0x6E, 0x8F, 0x9D, 0x7A, 0x1E, 0x27, 0x7C, 0x8A, 0x6A, 0x79, 0xDF, 0x22, 0xC1, 0x88, 0x2B, 0x79, 0xCF, 0x9D, 0xC3, 0xBB, 0xCA, 0x82, 0x32, 0x90, 0xD5, 0xB4, 0x15, 0x80, 0x0C, 0x7E, 0xAA, 0xAB, 0xB4, 0x7F, 0x02, 0x6F, 0x03, 0xA4, 0x92, 0x7D, 0xC3, 0x5E, 0x00, 0x9D, 0xE7, 0x7C, 0xD5, 0x49, 0x74, 0x97, 0x45, 0x7C, 0x75, 0x32, 0x94, 0x8F, 0x0C, 0x7B, 0x88, 0x26, 0x22, 0x89, 0xF3, 0x7A, 0xBD, 0x20, 0xE6, 0x87, 0xC9, 0x7A, 0x64, 0x9C, 0xBF, 0xBB, 0x3C, 0x89, 0xAE, 0x8F, 0xDB, 0xB2, 0xE9, 0x86, 0xD5, 0x7D, 0x72, 0xAA, 0xF0, 0x84, 0x63, 0x6E, 0x01, 0xA4, 0x43, 0x82, 0x66, 0x5C, 0x71, 0x9D, 0x62, 0x80, 0xBA, 0x47, 0x87, 0x96, 0x1D, 0x7F, 0x25, 0x32, 0x28, 0x8E, 0x40, 0x7D, 0x0E, 0x25, 0x12, 0x89, 0x7E, 0x7B, 0x8D, 0x1F, 0x72, 0x87, 0x74, 0x7A, 0xE2, 0x9C, 0x02, 0xBB, 0x00, 0x91, 0x8E, 0x8F, 0xBB, 0xB2, 0xB5, 0x8D, 0xA5, 0x7C, 0xAC, 0xAA, 0x72, 0x8A, 0x88, 0x6C, 0xD9, 0xA3, 0xB6, 0x88, 0x02, 0x5B, 0x8C, 0x9C, 0xC9, 0x85, 0x2E, 0x48, 0x37, 0x95, 0xA4, 0x82, 0x56, 0x31, 0xFD, 0x8D, 0xCF, 0x7E, 0xA9, 0x24, 0x79, 0x89, 0x31, 0x7C, 0x35, 0x1E, 0xAD, 0x87, 0x39, 0x7B, 0x22, 0x9B, 0x67, 0xBA, 0x31, 0x99, 0x43, 0x8D, 0xCC, 0xB1, 0xEE, 0x95, 0x0F, 0x7C, 0x4D, 0xA9, 0xC9, 0x91, 0x06, 0x6B, 0x89, 0xA3, 0x2E, 0x8D, 0x6C, 0x5A, 0x98, 0x9C, 0x11, 0x89, 0x94, 0x47, 0xE7, 0x95, 0x33, 0x85, 0x3B, 0x31, 0xE8, 0x8D, 0x99, 0x80, 0x29, 0x24, 0x53, 0x89, 0x0B, 0x7C, 0xB1, 0x1E, 0x88, 0x87, 0x1C, 0x7B, 0x30, 0x9B, 0x96, 0xB8, 0xEB, 0xA0, 0xEF, 0x8C, 0xA2, 0xB0, 0xD8, 0x9C, 0x3D, 0x7B, 0x2F, 0xA9, 0x31, 0x97, 0x6F, 0x6A, 0xB6, 0xA2, 0xB3, 0x92, 0xBE, 0x5A, 0x09, 0x9B, 0xFD, 0x8D, 0xCA, 0x46, 0x47, 0x94, 0xEA, 0x88, 0x3C, 0x31, 0x71, 0x8D, 0x5F, 0x81, 0x6C, 0x24, 0x7E, 0x88, 0xF8, 0x7D, 0x0D, 0x1E, 0xE6, 0x87, 0x18, 0x7B, 0x28, 0x99, 0x9E, 0xB9, 0xC8, 0xAA, 0x5A, 0x8B, 0xA8, 0xB1, 0x53, 0xA4, 0x8A, 0x7A, 0x85, 0xA8, 0xEA, 0x9E, 0xBA, 0x6A, 0x23, 0xA2, 0x32, 0x99, 0x29, 0x5A, 0x42, 0x9B, 0xAD, 0x92, 0xEE, 0x47, 0x6A, 0x95, 0x05, 0x8C, 0x01, 0x32, 0x2F, 0x8D, 0x76, 0x82, 0xE0, 0x25, 0x2E, 0x89, 0x09, 0x7D, 0x70, 0x1F, 0xA4, 0x87, 0x2B, 0x7B, 0x1F, 0x98, 0xFF, 0xB8, 0xD7, 0xB1, 0xF5, 0x8B, 0xCD, 0xB1, 0x10, 0xAC, 0x21, 0x7A, 0xA8, 0xA8, 0x54, 0xA5, 0x45, 0x69, 0x98, 0xA1, 0xBC, 0x9E, 0x7B, 0x58, 0xE0, 0x9B, 0x7E, 0x97, 0x1C, 0x47, 0x08, 0x94, 0xEC, 0x8E, 0x8A, 0x32, 0xBF, 0x8D, 0xAD, 0x84, 0x0F, 0x26, 0x13, 0x89, 0x40, 0x7D, 0xE0, 0x20, 0xAB, 0x87, 0x5D, 0x7B, 0x3D, 0x98, 0x8E, 0xB9, 0x84, 0xB9, 0x33, 0x8B, 0xAB, 0xB0, 0xEC, 0xB2, 0xCE, 0x79, 0xA8, 0xA8, 0x63, 0xAA, 0x59, 0x68, 0xB7, 0xA1, 0x9E, 0xA2, 0xF6, 0x57, 0x0A, 0x9B, 0xD6, 0x9A, 0x61, 0x44, 0x51, 0x94, 0x78, 0x8F, 0x89, 0x33, 0x17, 0x8E, 0x19, 0x85, 0x09, 0x26, 0xF3, 0x89, 0x94, 0x7E, 0x57, 0x21, 0xBB, 0x87, 0x9D, 0x7B, 0x77, 0x8F, 0x83, 0xC7, 0x49, 0x7D, 0x6A, 0x82, 0x73, 0xBF, 0x5A, 0x7B, 0xBC, 0x70, 0xA9, 0xB7, 0x2C, 0x7A, 0x64, 0x62, 0x29, 0xAE, 0x8B, 0x79, 0x3D, 0x54, 0x7C, 0xA5, 0xFA, 0x78, 0xD9, 0x43, 0x49, 0x9D, 0x71, 0x79, 0x34, 0x2F, 0x43, 0x92, 0x97, 0x79, 0x5E, 0x24, 0x75, 0x8B, 0xFA, 0x79, 0x48, 0x1F, 0xF0, 0x89, 0x2B, 0x79, 0x37, 0x8F, 0x13, 0xC6, 0xBE, 0x82, 0x86, 0x82, 0xC1, 0xBE, 0xAA, 0x7F, 0xE1, 0x72, 0x4D, 0xB5, 0xE6, 0x7D, 0xB5, 0x63, 0x9C, 0xAD, 0x93, 0x7C, 0x5B, 0x54, 0xAC, 0xA5, 0x8F, 0x7B, 0x56, 0x43, 0x06, 0x9C, 0xF1, 0x7B, 0x3D, 0x2E, 0x91, 0x92, 0x2E, 0x7A, 0x92, 0x23, 0x2E, 0x8B, 0xAF, 0x79, 0xEE, 0x1E, 0x63, 0x88, 0xEC, 0x79, 0xA3, 0x8E, 0x1F, 0xC6, 0x9A, 0x89, 0x00, 0x83, 0x3A, 0xBD, 0xDA, 0x85, 0x70, 0x71, 0xAE, 0xB5, 0x21, 0x82, 0xAA, 0x62, 0xEF, 0xAC, 0xF9, 0x80, 0xDB, 0x53, 0x37, 0xA4, 0xF9, 0x7F, 0x48, 0x42, 0x18, 0x9C, 0x03, 0x7D, 0xD8, 0x2D, 0xDB, 0x91, 0x80, 0x7B, 0xE8, 0x22, 0x11, 0x8B, 0x4F, 0x7A, 0x98, 0x1D, 0x0C, 0x88, 0xAB, 0x7A, 0x04, 0x8E, 0x68, 0xC5, 0x7B, 0x8F, 0x9C, 0x82, 0x4F, 0xBD, 0x34, 0x8B, 0xCD, 0x70, 0xF0, 0xB4, 0x30, 0x88, 0xA4, 0x61, 0x96, 0xAC, 0x49, 0x86, 0x29, 0x51, 0xF6, 0xA4, 0x55, 0x83, 0x78, 0x41, 0xB3, 0x9B, 0x36, 0x80, 0xB0, 0x2D, 0x99, 0x90, 0xF6, 0x7D, 0x4A, 0x21, 0x8E, 0x8A, 0xF7, 0x7B, 0x27, 0x1C, 0x66, 0x88, 0x68, 0x7A, 0x39, 0x8D, 0x99, 0xC4, 0xED, 0x96, 0xC2, 0x81, 0x34, 0xBC, 0xB6, 0x92, 0x6A, 0x70, 0x62, 0xB3, 0x8B, 0x8E, 0x5A, 0x60, 0xCD, 0xAB, 0x8D, 0x8A, 0x97, 0x51, 0x9E, 0xA3, 0x66, 0x87, 0x47, 0x41, 0xB0, 0x9A, 0x8F, 0x83, 0x5F, 0x2D, 0xC3, 0x90, 0x89, 0x7E, 0x93, 0x21, 0xA6, 0x8A, 0xAA, 0x7B, 0x94, 0x1C, 0x73, 0x88, 0x29, 0x7A, 0x48, 0x8D, 0xA3, 0xC4, 0x1B, 0x9D, 0xE4, 0x80, 0x58, 0xBC, 0x04, 0x98, 0xF2, 0x6F, 0xBF, 0xB3, 0x1C, 0x93, 0xF3, 0x60, 0x1A, 0xAB, 0x23, 0x8F, 0x5D, 0x50, 0xE8, 0xA3, 0x34, 0x8B, 0x0D, 0x41, 0x7C, 0x9A, 0x4E, 0x86, 0x24, 0x2E, 0x24, 0x90, 0x23, 0x7F, 0xCD, 0x22, 0x35, 0x8A, 0x68, 0x7B, 0xEF, 0x1D, 0x10, 0x87, 0xFC, 0x7A, 0x46, 0x8D, 0x93, 0xC3, 0xB0, 0xA5, 0xFE, 0x7F, 0xF6, 0xBB, 0xE6, 0x9F, 0xFE, 0x6F, 0x08, 0xB2, 0xD9, 0x9A, 0x52, 0x5F, 0x39, 0xAA, 0xED, 0x95, 0x2E, 0x51, 0x9F, 0xA2, 0xCD, 0x8F, 0xC6, 0x41, 0xEC, 0x9A, 0x0F, 0x89, 0x4F, 0x2E, 0xC4, 0x8F, 0xFF, 0x81, 0x1D, 0x23, 0x33, 0x8A, 0x60, 0x7C, 0x57, 0x1E, 0x3E, 0x88, 0x01, 0x7A, 0x50, 0x8D, 0x0B, 0xC2, 0xB7, 0xAD, 0x49, 0x7F, 0x7C, 0xBB, 0x7F, 0xA7, 0x04, 0x6E, 0x2E, 0xB2, 0xAB, 0xA0, 0x4A, 0x5E, 0x01, 0xAB, 0x04, 0x99, 0xF5, 0x50, 0xC7, 0xA2, 0x7A, 0x93, 0x68, 0x41, 0x4F, 0x99, 0xE0, 0x8B, 0x8B, 0x2F, 0x3F, 0x90, 0x5E, 0x82, 0x3E, 0x24, 0x6E, 0x8A, 0xBA, 0x7C, 0xD7, 0x1F, 0xCB, 0x88, 0x51, 0x7A, 0x8C, 0x8C, 0x5C, 0xC3, 0x38, 0xB4, 0x22, 0x7E, 0x37, 0xBB, 0x51, 0xAD, 0xB4, 0x6C, 0xFC, 0xB2, 0x85, 0xA5, 0xAF, 0x60, 0xBE, 0xAA, 0x54, 0x9E, 0xA5, 0x4F, 0x8C, 0xA2, 0x89, 0x96, 0x5C, 0x3E, 0x91, 0x99, 0xB5, 0x8C, 0x71, 0x2F, 0xA5, 0x91, 0x6B, 0x83, 0x3B, 0x25, 0xC4, 0x8B, 0x5A, 0x7D, 0x6C, 0x21, 0x77, 0x88, 0xBD, 0x7A, 0xE9, 0x87, 0x86, 0xCF, 0x42, 0x7C, 0xEE, 0x79, 0xC2, 0xC6, 0xF9, 0x7A, 0xFB, 0x69, 0x4C, 0xBE, 0x0F, 0x79, 0x7F, 0x5C, 0x7D, 0xB5, 0x82, 0x78, 0x3A, 0x4C, 0x52, 0xAB, 0xCB, 0x78, 0x72, 0x3C, 0x16, 0xA1, 0xC1, 0x78, 0x85, 0x2C, 0xC7, 0x94, 0xE2, 0x78, 0x9F, 0x22, 0x96, 0x8D, 0x1F, 0x78, 0xA4, 0x1D, 0xC9, 0x8A, 0x33, 0x78, 0x71, 0x86, 0xC8, 0xCD, 0xFB, 0x81, 0xA4, 0x78, 0xE5, 0xC6, 0x16, 0x7F, 0x5F, 0x68, 0xCC, 0xBD, 0x5D, 0x7D, 0x36, 0x5C, 0x81, 0xB4, 0x33, 0x7B, 0x6C, 0x4D, 0x79, 0xAB, 0x16, 0x7A, 0xA2, 0x3C, 0xC5, 0xA1, 0x89, 0x7A, 0x4A, 0x2A, 0xAA, 0x94, 0xE1, 0x79, 0x9D, 0x20, 0x49, 0x8D, 0x4A, 0x79, 0x16, 0x1B, 0xD8, 0x8A, 0x14, 0x78, 0xD5, 0x85, 0x8E, 0xCD, 0x40, 0x87, 0xD1, 0x78, 0x36, 0xC5, 0x3F, 0x84, 0xC6, 0x68, 0xD8, 0xBC, 0x7C, 0x82, 0x09, 0x5C, 0x48, 0xB3, 0x5D, 0x7F, 0xB4, 0x4C, 0xDC, 0xAA, 0x6A, 0x7E, 0x0C, 0x3C, 0x4E, 0xA0, 0xFC, 0x7C, 0xB5, 0x29, 0x61, 0x94, 0xB8, 0x7A, 0xD4, 0x1E, 0xC0, 0x8D, 0x34, 0x79, 0xA1, 0x1A, 0x46, 0x89, 0xF7, 0x79, 0x1C, 0x85, 0x57, 0xCC, 0xF2, 0x8F, 0x0D, 0x78, 0xFD, 0xC4, 0x7D, 0x8A, 0xCD, 0x6A, 0xDA, 0xBB, 0x25, 0x87, 0x23, 0x5C, 0x3C, 0xB2, 0x91, 0x84, 0x44, 0x4B, 0xE4, 0xA9, 0xC4, 0x81, 0xD2, 0x3B, 0xF3, 0x9F, 0xFE, 0x7F, 0x49, 0x29, 0x4F, 0x94, 0x82, 0x7C, 0x25, 0x1E, 0x5E, 0x8C, 0xFB, 0x7A, 0x1F, 0x19, 0xB6, 0x89, 0xB7, 0x79, 0x3F, 0x83, 0x42, 0xCC, 0x96, 0x95, 0x27, 0x76, 0xC9, 0xC4, 0x19, 0x91, 0x2E, 0x68, 0xE5, 0xBA, 0x78, 0x8C, 0xCD, 0x5B, 0x6C, 0xB1, 0xF6, 0x88, 0xF1, 0x4C, 0x6D, 0xA9, 0x82, 0x85, 0x2B, 0x3D, 0x26, 0x9E, 0xA3, 0x81, 0x6C, 0x2A, 0x4F, 0x94, 0x15, 0x7D, 0x5D, 0x1E, 0xE6, 0x8C, 0x93, 0x7A, 0x81, 0x1A, 0x07, 0x89, 0x59, 0x79, 0x46, 0x83, 0xF6, 0xCB, 0x7E, 0x9C, 0x41, 0x75, 0x92, 0xC3, 0xA4, 0x97, 0x3D, 0x67, 0x3A, 0xB9, 0xF5, 0x92, 0x1C, 0x5A, 0x66, 0xB1, 0x69, 0x8D, 0x9D, 0x4C, 0x5D, 0xA9, 0x20, 0x88, 0xED, 0x3D, 0x2E, 0x9E, 0xAA, 0x84, 0x29, 0x2B, 0x85, 0x92, 0xBA, 0x7E, 0x52, 0x20, 0x03, 0x8B, 0xEB, 0x7A, 0xC8, 0x1B, 0x0A, 0x89, 0x04, 0x79, 0x45, 0x84, 0x11, 0xC9, 0xDB, 0xA3, 0x76, 0x76, 0x92, 0xC2, 0x51, 0x9E, 0x2B, 0x67, 0xD4, 0xB9, 0x32, 0x98, 0x23, 0x5A, 0x42, 0xB0, 0xD6, 0x92, 0xAA, 0x4B, 0xC7, 0xA8, 0x0E, 0x8D, 0x2F, 0x3C, 0x98, 0x9E, 0x11, 0x87, 0x21, 0x2C, 0x10, 0x92, 0x2C, 0x7F, 0x7B, 0x21, 0x60, 0x8B, 0xAB, 0x7B, 0x31, 0x1C, 0xC1, 0x88, 0xEE, 0x79, 0x64, 0x83, 0x32, 0xC9, 0xA9, 0xAA, 0x20, 0x76, 0x9A, 0xC2, 0x61, 0xA4, 0x54, 0x67, 0x83, 0xB9, 0x87, 0x9D, 0x7E, 0x59, 0xDF, 0xB0, 0xFB, 0x97, 0x03, 0x4B, 0xF8, 0xA7, 0xD5, 0x90, 0x73, 0x3C, 0xBF, 0x9D, 0xEE, 0x89, 0x1B, 0x2C, 0x3C, 0x92, 0x8F, 0x80, 0x91, 0x22, 0xE9, 0x8C, 0x11, 0x7B, 0xDB, 0x1E, 0xF2, 0x89, 0x4F, 0x79, 0xDF, 0x83, 0x83, 0xC9, 0xD4, 0xB1, 0x45, 0x76, 0xD5, 0xC2, 0x18, 0xAA, 0xAF, 0x66, 0xDD, 0xB9, 0xD2, 0xA2, 0x8D, 0x59, 0x8C, 0xB1, 0x53, 0x9A, 0xFE, 0x4C, 0xC0, 0xA7, 0xD2, 0x93, 0x61, 0x3C, 0x6C, 0x9D, 0x04, 0x8A, 0x68, 0x2C, 0xCF, 0x93, 0x22, 0x81, 0x8B, 0x24, 0xF4, 0x8C, 0xBE, 0x7C, 0xC6, 0x21, 0x76, 0x89, 0xF1, 0x7A, 0xA4, 0xEE, 0x4B, 0x7B, 0x15, 0x78, 0x79, 0xD5, 0xCE, 0x7C, 0xB8, 0x7A, 0x88, 0xBC, 0x7A, 0x7D, 0xE9, 0x7A, 0xC3, 0xA3, 0xD9, 0x7E, 0x4C, 0x7C, 0x2E, 0x89, 0x03, 0x7E, 0xF7, 0x7D, 0x4C, 0x67, 0x4A, 0x7F, 0xC8, 0x7E, 0x0B, 0x42, 0x87, 0x81, 0x04, 0x7D, 0x21, 0x2E, 0x17, 0x82, 0x2D, 0x7C, 0x3F, 0x25, 0x94, 0x82, 0xBC, 0x7B, 0xD4, 0xED, 0xC2, 0x78, 0xD8, 0x86, 0x85, 0xD5, 0x10, 0x7A, 0x87, 0x85, 0xA2, 0xBC, 0xFB, 0x7C, 0x32, 0x83, 0x66, 0xA4, 0x69, 0x7D, 0x10, 0x82, 0xC2, 0x88, 0xC2, 0x7D, 0xFC, 0x81, 0xC0, 0x67, 0x28, 0x7F, 0x2D, 0x80, 0xCB, 0x41, 0xE6, 0x80, 0xA7, 0x7E, 0xE4, 0x2D, 0x7E, 0x81, 0xAB, 0x7D, 0x84, 0x24, 0xEF, 0x82, 0x1F, 0x7C, 0xE8, 0xE9, 0xB9, 0x77, 0x1F, 0x96, 0x5E, 0xD1, 0x28, 0x78, 0xF0, 0x90, 0xEA, 0xBA, 0xBD, 0x7A, 0x89, 0x8C, 0x9A, 0xA2, 0xE3, 0x7B, 0xFB, 0x8A, 0x2E, 0x86, 0xCD, 0x7D, 0x46, 0x87, 0x8D, 0x66, 0x07, 0x7E, 0x99, 0x84, 0xA3, 0x41, 0x8A, 0x80, 0x30, 0x81, 0x0A, 0x2D, 0x40, 0x81, 0x27, 0x7E, 0xDE, 0x24, 0xAE, 0x81, 0x91, 0x7D, 0xF0, 0xE9, 0x88, 0x75, 0x8E, 0xA3, 0x52, 0xD2, 0x3A, 0x77, 0x9D, 0x9C, 0x3C, 0xB9, 0x4C, 0x79, 0x65, 0x95, 0xC7, 0xA0, 0xE4, 0x7B, 0x2F, 0x91, 0x88, 0x85, 0xC8, 0x7C, 0x9B, 0x8D, 0x8C, 0x65, 0x99, 0x7D, 0xF4, 0x88, 0xDE, 0x42, 0x38, 0x7F, 0xB7, 0x83, 0x5E, 0x2D, 0xAD, 0x80, 0xC1, 0x80, 0x1B, 0x24, 0xE8, 0x81, 0x31, 0x7E, 0xB5, 0xE6, 0xE9, 0x75, 0x7E, 0xAF, 0x11, 0xD0, 0x77, 0x77, 0x02, 0xA6, 0xC5, 0xB7, 0x16, 0x78, 0x98, 0x9E, 0xE9, 0x9E, 0xD8, 0x7A, 0x65, 0x98, 0xA0, 0x84, 0x3B, 0x7B, 0xE2, 0x93, 0x39, 0x66, 0x6C, 0x7D, 0x55, 0x8D, 0x35, 0x43, 0xFA, 0x7F, 0x51, 0x85, 0xB7, 0x2E, 0x68, 0x80, 0x7E, 0x81, 0x26, 0x25, 0x3A, 0x80, 0xFD, 0x7F, 0x34, 0xE3, 0xE2, 0x75, 0x36, 0xBA, 0x1F, 0xCD, 0x93, 0x76, 0xDF, 0xB1, 0x0E, 0xB6, 0x11, 0x78, 0x72, 0xA8, 0x39, 0x9E, 0x59, 0x79, 0xCE, 0xA0, 0xAA, 0x84, 0x3F, 0x7B, 0x30, 0x99, 0xB7, 0x66, 0x5A, 0x7C, 0xD2, 0x91, 0xCD, 0x43, 0x90, 0x7F, 0x06, 0x87, 0xE0, 0x2E, 0x8E, 0x80, 0x5B, 0x82, 0x02, 0x25, 0x8E, 0x80, 0xEE, 0x7F, 0x82, 0xE2, 0x21, 0x74, 0xAF, 0xC6, 0x3E, 0xCC, 0xDC, 0x76, 0x76, 0xBC, 0xDE, 0xB5, 0xAB, 0x77, 0xC7, 0xB3, 0x20, 0x9D, 0x7E, 0x79, 0x56, 0xAA, 0x33, 0x84, 0x38, 0x7A, 0x96, 0xA1, 0x48, 0x65, 0x10, 0x7C, 0x6F, 0x96, 0xF4, 0x42, 0x22, 0x7E, 0xE3, 0x8A, 0x35, 0x2E, 0x3F, 0x80, 0x66, 0x82, 0xD4, 0x25, 0xCC, 0x81, 0x0D, 0x7F, 0xB2, 0xE1, 0x3D, 0x75, 0x2A, 0xD0, 0x86, 0xCC, 0xB1, 0x76, 0x80, 0xC7, 0x34, 0xB4, 0x7C, 0x77, 0xA2, 0xBB, 0xEA, 0x9C, 0x23, 0x78, 0xE8, 0xB1, 0xAE, 0x81, 0xCC, 0x7A, 0x55, 0xA7, 0x48, 0x63, 0x8B, 0x7C, 0x33, 0x9B, 0x58, 0x41, 0x1E, 0x7E, 0xE7, 0x8C, 0x5C, 0x2E, 0x11, 0x80, 0xA3, 0x83, 0x8D, 0x26, 0x0B, 0x81, 0x63, 0x7F, 0xCC, 0xE1, 0x5D, 0x75, 0x05, 0xDA, 0x3D, 0xCB, 0xB5, 0x76, 0x76, 0xCF, 0x7A, 0xB3, 0x3E, 0x77, 0x81, 0xC3, 0x30, 0x9B, 0x42, 0x78, 0xB8, 0xB8, 0x30, 0x80, 0xEE, 0x7A, 0x4B, 0xAC, 0xD9, 0x61, 0xDA, 0x7C, 0x1A, 0x9E, 0xFA, 0x3F, 0xFA, 0x7F, 0x09, 0x8E, 0x31, 0x2E, 0x0F, 0x80, 0xF9, 0x84, 0x2C, 0x26, 0x72, 0x81, 0xD4, 0x7F, 0xDD, 0xDD, 0x2A, 0x85, 0x43, 0x78, 0x7A, 0xCC, 0xFA, 0x84, 0x35, 0x78, 0xFE, 0xB3, 0xFD, 0x83, 0xB1, 0x7A, 0xB0, 0x9C, 0x47, 0x82, 0xFA, 0x7B, 0xB0, 0x82, 0x27, 0x82, 0x56, 0x7C, 0x87, 0x63, 0xC3, 0x82, 0x18, 0x7D, 0x80, 0x40, 0xDB, 0x82, 0x70, 0x7D, 0x04, 0x2D, 0x17, 0x82, 0xF1, 0x7C, 0x3A, 0x24, 0xCE, 0x83, 0x2E, 0x7B, 0xDE, 0xD9, 0xBF, 0x83, 0xA0, 0x83, 0xD7, 0xCA, 0xCA, 0x82, 0x66, 0x82, 0xB1, 0xB3, 0xB5, 0x81, 0xEA, 0x82, 0x4F, 0x9B, 0xD6, 0x81, 0xAD, 0x81, 0xC7, 0x82, 0xF8, 0x81, 0x78, 0x80, 0xEC, 0x63, 0xEB, 0x81, 0xA7, 0x80, 0x29, 0x40, 0x56, 0x82, 0x25, 0x7E, 0x82, 0x2C, 0xA2, 0x82, 0x90, 0x7D, 0x3E, 0x24, 0x59, 0x82, 0xC1, 0x7C, 0xAD, 0xDA, 0x59, 0x81, 0x8F, 0x91, 0x56, 0xC7, 0xC7, 0x81, 0x21, 0x8D, 0xC4, 0xB0, 0xC7, 0x80, 0xB9, 0x8A, 0xB5, 0x9A, 0x55, 0x80, 0xB7, 0x88, 0xC5, 0x81, 0x05, 0x80, 0xEA, 0x86, 0xB3, 0x63, 0x06, 0x81, 0x27, 0x83, 0xF3, 0x40, 0x1B, 0x81, 0xBF, 0x80, 0x7A, 0x2C, 0x65, 0x82, 0x2C, 0x7E, 0x60, 0x24, 0x13, 0x82, 0x5B, 0x7D, 0x78, 0xDA, 0x63, 0x80, 0x39, 0x9D, 0x85, 0xC6, 0xD4, 0x7F, 0xE1, 0x98, 0x8A, 0xB0, 0xAC, 0x7F, 0x8B, 0x93, 0x2F, 0x99, 0x04, 0x7F, 0xF1, 0x8F, 0xC8, 0x7F, 0x65, 0x80, 0x34, 0x8C, 0xA0, 0x61, 0xED, 0x80, 0x90, 0x88, 0x14, 0x3F, 0xFE, 0x81, 0x5E, 0x82, 0xA5, 0x2C, 0x73, 0x81, 0xDF, 0x7F, 0x71, 0x24, 0x25, 0x82, 0x16, 0x7E, 0x12, 0xD7, 0x93, 0x7F, 0xA1, 0xA8, 0x8E, 0xC5, 0x68, 0x7F, 0x29, 0xA2, 0x7C, 0xAF, 0xBC, 0x7E, 0xF0, 0x9B, 0xEF, 0x97, 0x8F, 0x7F, 0x4F, 0x96, 0xE2, 0x7E, 0xB8, 0x7F, 0x6D, 0x91, 0xCD, 0x61, 0xB3, 0x80, 0x04, 0x8C, 0x1D, 0x40, 0x36, 0x81, 0x12, 0x84, 0xC8, 0x2C, 0xAA, 0x81, 0xB0, 0x80, 0x5A, 0x24, 0x55, 0x81, 0xF3, 0x7E, 0x75, 0xD4, 0xBA, 0x7F, 0x63, 0xB3, 0x99, 0xC3, 0xD0, 0x7E, 0xDA, 0xAC, 0xC0, 0xAE, 0x81, 0x7E, 0xA3, 0xA5, 0x6B, 0x97, 0xD6, 0x7E, 0x89, 0x9E, 0x7E, 0x7D, 0xF4, 0x7E, 0xD0, 0x97, 0xB7, 0x60, 0xB9, 0x7F, 0x91, 0x90, 0x50, 0x3F, 0xE2, 0x80, 0xD0, 0x86, 0xD3, 0x2C, 0xB7, 0x81, 0x96, 0x81, 0x21, 0x24, 0x8A, 0x81, 0xEB, 0x7E, 0xB2, 0xD3, 0xCA, 0x7F, 0x3D, 0xBF, 0xD1, 0xC2, 0x55, 0x7E, 0xA6, 0xB8, 0x04, 0xAC, 0x9E, 0x7E, 0x4D, 0xAF, 0x32, 0x97, 0x30, 0x7E, 0x08, 0xA7, 0x07, 0x7C, 0x9F, 0x7E, 0x5E, 0x9E, 0xAE, 0x5F, 0x05, 0x7F, 0x36, 0x95, 0x25, 0x3E, 0xE5, 0x80, 0xA8, 0x89, 0x0A, 0x2C, 0x8E, 0x81, 0x97, 0x81, 0xE8, 0x24, 0xC3, 0x81, 0xFF, 0x7E, 0xDF, 0xD3, 0x77, 0x7E, 0xF1, 0xC9, 0x80, 0xC1, 0x96, 0x7E, 0x57, 0xC1, 0x66, 0xAB, 0x88, 0x7D, 0xE5, 0xB7, 0x97, 0x94, 0xEB, 0x7D, 0xCC, 0xAE, 0x65, 0x7B, 0x2B, 0x7E, 0x18, 0xA4, 0xB9, 0x5E, 0x66, 0x7E, 0xF7, 0x99, 0x7F, 0x3E, 0x68, 0x80, 0x99, 0x8B, 0x25, 0x2C, 0x91, 0x81, 0xB2, 0x82, 0xA8, 0x25, 0x0B, 0x82, 0x2D, 0x7F, 0x0A, 0xD3, 0x70, 0x7F, 0x1C, 0xD2, 0xC6, 0xC0, 0xC0, 0x7E, 0x24, 0xC9, 0xCA, 0xAA, 0x8F, 0x7D, 0x94, 0xBF, 0x21, 0x94, 0xB8, 0x7D, 0x61, 0xB5, 0x31, 0x7A, 0x81, 0x7D, 0xD6, 0xAA, 0x0C, 0x5D, 0x7C, 0x7E, 0xCF, 0x9D, 0x1B, 0x3E, 0x1E, 0x80, 0x96, 0x8D, 0x07, 0x2C, 0xC5, 0x81, 0xD7, 0x83, 0x5C, 0x25, 0x72, 0x82, 0x66, 0x7F, 0x37, 0xCC, 0xFA, 0x8F, 0xAA, 0x77, 0xF3, 0xBE, 0x2A, 0x8C, 0xBA, 0x79, 0x6E, 0xA9, 0x11, 0x8A, 0x1C, 0x7A, 0x9A, 0x93, 0x14, 0x88, 0x58, 0x7B, 0x35, 0x7A, 0x1F, 0x86, 0x94, 0x7B, 0xE0, 0x5E, 0xA5, 0x85, 0x25, 0x7C, 0xB4, 0x3E, 0x8F, 0x84, 0x3F, 0x7C, 0x90, 0x2C, 0x05, 0x83, 0xEE, 0x7C, 0x07, 0x24, 0x2F, 0x83, 0xCE, 0x7B, 0xC6, 0xCB, 0xB8, 0x8E, 0x27, 0x81, 0x5C, 0xBD, 0x20, 0x8B, 0x77, 0x81, 0x3A, 0xA8, 0xDA, 0x88, 0xCB, 0x80, 0xE0, 0x92, 0x75, 0x87, 0x21, 0x80, 0x7E, 0x7A, 0x24, 0x85, 0xCD, 0x80, 0x24, 0x5E, 0x6C, 0x84, 0xC7, 0x7F, 0x70, 0x3E, 0x0A, 0x83, 0xFE, 0x7D, 0xF6, 0x2B, 0x97, 0x83, 0xA9, 0x7C, 0xD8, 0x23, 0xC8, 0x83, 0x88, 0x7C, 0x59, 0xC9, 0xD2, 0x8C, 0x90, 0x8C, 0xCC, 0xBC, 0x57, 0x8A, 0x0C, 0x8B, 0x0C, 0xA7, 0x16, 0x87, 0xD4, 0x88, 0xA6, 0x91, 0x79, 0x86, 0x46, 0x87, 0x03, 0x79, 0xD8, 0x85, 0x39, 0x85, 0x67, 0x5E, 0x26, 0x84, 0x4B, 0x83, 0x07, 0x3D, 0xBA, 0x83, 0xA8, 0x7F, 0xC5, 0x2B, 0x3E, 0x83, 0x61, 0x7D, 0xC7, 0x23, 0x6D, 0x83, 0x45, 0x7C, 0xEC, 0xC8, 0x3D, 0x8B, 0xDA, 0x98, 0x5B, 0xBA, 0x80, 0x88, 0xF7, 0x94, 0xE1, 0xA5, 0x97, 0x86, 0xF6, 0x90, 0x94, 0x90, 0x1A, 0x85, 0x94, 0x8D, 0xA6, 0x78, 0x09, 0x84, 0x80, 0x8A, 0xEA, 0x5C, 0xD8, 0x83, 0xC0, 0x87, 0x02, 0x3D, 0x3B, 0x83, 0x59, 0x81, 0xC5, 0x2B, 0x09, 0x83, 0x2D, 0x7E, 0xAB, 0x23, 0x4F, 0x83, 0x1B, 0x7D, 0x59, 0xC7, 0xBF, 0x8A, 0xEC, 0xA2, 0xBB, 0xB8, 0xD9, 0x88, 0x4C, 0x9E, 0x63, 0xA4, 0xCB, 0x86, 0x40, 0x99, 0x04, 0x8E, 0xE6, 0x84, 0xEF, 0x94, 0x75, 0x77, 0x80, 0x83, 0xC5, 0x90, 0x16, 0x5C, 0x17, 0x83, 0x4E, 0x8A, 0xEB, 0x3C, 0xE8, 0x83, 0x1C, 0x83, 0xC2, 0x2A, 0xF0, 0x83, 0x10, 0x7F, 0x71, 0x23, 0x52, 0x83, 0x0C, 0x7D, 0x9A, 0xC5, 0xC9, 0x8A, 0x77, 0xAC, 0xEC, 0xB7, 0xC8, 0x87, 0xD4, 0xA7, 0xD0, 0xA3, 0x9B, 0x85, 0xC9, 0xA1, 0xB1, 0x8E, 0x6F, 0x84, 0x49, 0x9B, 0xAB, 0x76, 0x6D, 0x83, 0x4A, 0x95, 0xA0, 0x5B, 0x1D, 0x82, 0xEC, 0x8E, 0xC8, 0x3C, 0x44, 0x82, 0xED, 0x85, 0xA1, 0x2A, 0xCB, 0x83, 0x03, 0x80, 0x1D, 0x23, 0x67, 0x83, 0x0E, 0x7D, 0xC1, 0xC6, 0x70, 0x89, 0xE9, 0xB9, 0x5E, 0xB6, 0xCF, 0x87, 0x7C, 0xB2, 0x66, 0xA1, 0xD9, 0x85, 0x9D, 0xAA, 0x86, 0x8D, 0x41, 0x84, 0x08, 0xA3, 0x8D, 0x74, 0xFC, 0x82, 0xFB, 0x9C, 0x26, 0x59, 0xE8, 0x82, 0x99, 0x93, 0x45, 0x3B, 0x8F, 0x82, 0xC4, 0x87, 0xAD, 0x2A, 0xB1, 0x82, 0xFD, 0x80, 0xD2, 0x23, 0x96, 0x83, 0x18, 0x7D, 0xE6, 0xC4, 0xEC, 0x89, 0x5B, 0xC2, 0x41, 0xB5, 0xE8, 0x87, 0x35, 0xBB, 0x53, 0xA1, 0x2B, 0x85, 0x4D, 0xB2, 0x9B, 0x8B, 0xE1, 0x83, 0xB5, 0xAA, 0x9E, 0x73, 0xD4, 0x82, 0xAE, 0xA1, 0xCD, 0x59, 0x2B, 0x82, 0x5B, 0x97, 0x45, 0x3B, 0x74, 0x82, 0xA5, 0x89, 0xAC, 0x2A, 0xE8, 0x82, 0xF8, 0x81, 0x94, 0x23, 0xEF, 0x83, 0x1F, 0x7E, 0x1F, 0xC4, 0x48, 0x89, 0x35, 0xCA, 0x5F, 0xB6, 0x06, 0x86, 0xD4, 0xC3, 0x7C, 0xA0, 0xAD, 0x84, 0xF2, 0xBA, 0x54, 0x8C, 0x9D, 0x83, 0x1C, 0xB1, 0x71, 0x73, 0x3E, 0x82, 0x49, 0xA6, 0xBA, 0x57, 0x87, 0x82, 0x28, 0x9A, 0x6E, 0x3B, 0x8E, 0x82, 0x89, 0x8B, 0x81, 0x2B, 0x5B, 0x82, 0xF4, 0x82, 0x56, 0x24, 0x70, 0x83, 0x26, 0x7E, 0x64, 0xBF, 0x48, 0x99, 0x1E, 0x78, 0x49, 0xB2, 0x0A, 0x94, 0xE8, 0x78, 0xD6, 0x9F, 0x0F, 0x90, 0xDB, 0x7A, 0x18, 0x8A, 0x0C, 0x8D, 0xEF, 0x7A, 0x9E, 0x72, 0xD6, 0x8B, 0x35, 0x7B, 0x56, 0x5A, 0x16, 0x88, 0x96, 0x7B, 0xCF, 0x3C, 0x35, 0x86, 0x4E, 0x7B, 0xD7, 0x2B, 0x0E, 0x85, 0x1D, 0x7B, 0x95, 0x23, 0xCF, 0x84, 0x9D, 0x7B, 0x72, 0xBF, 0x31, 0x97, 0x62, 0x7F, 0xBE, 0xB0, 0xB0, 0x93, 0xE0, 0x7F, 0xB7, 0x9C, 0xEE, 0x8F, 0xDA, 0x7F, 0xC3, 0x88, 0xA0, 0x8D, 0x06, 0x7F, 0x50, 0x72, 0x25, 0x8A, 0x9C, 0x7F, 0x1E, 0x58, 0xD5, 0x88, 0x51, 0x7E, 0x92, 0x3B, 0x4A, 0x86, 0x13, 0x7D, 0x43, 0x2A, 0x6B, 0x84, 0xE2, 0x7C, 0x51, 0x23, 0x45, 0x84, 0x63, 0x7B, 0xE6, 0xBD, 0x30, 0x96, 0x20, 0x89, 0xD9, 0xAF, 0x55, 0x92, 0x5A, 0x88, 0xF8, 0x9C, 0x33, 0x8E, 0xB5, 0x87, 0x19, 0x87, 0xB5, 0x8C, 0x2A, 0x85, 0x62, 0x71, 0x75, 0x89, 0xEA, 0x83, 0xD9, 0x58, 0x1D, 0x87, 0xD7, 0x81, 0xF1, 0x3A, 0xAC, 0x85, 0xC9, 0x7E, 0xF6, 0x29, 0xE1, 0x84, 0xA8, 0x7D, 0x22, 0x22, 0xC2, 0x84, 0x2E, 0x7C, 0x59, 0xBB, 0xD4, 0x95, 0x87, 0x94, 0x4A, 0xAD, 0xA4, 0x91, 0x8F, 0x92, 0x06, 0x9A, 0x43, 0x8E, 0x17, 0x8E, 0xC4, 0x86, 0xA9, 0x8B, 0x61, 0x8B, 0xB8, 0x6F, 0xE2, 0x89, 0x30, 0x89, 0x0C, 0x56, 0xF2, 0x87, 0x4A, 0x85, 0xAA, 0x3A, 0x58, 0x85, 0x82, 0x80, 0xCD, 0x29, 0x98, 0x84, 0x82, 0x7D, 0xE5, 0x22, 0x79, 0x84, 0x15, 0x7C, 0xA7, 0xBA, 0xBC, 0x94, 0xEF, 0x9E, 0x56, 0xAC, 0xB4, 0x90, 0xDE, 0x9A, 0x8F, 0x99, 0xB0, 0x8D, 0x62, 0x96, 0x01, 0x85, 0xD1, 0x8A, 0xC1, 0x92, 0x02, 0x6F, 0x1B, 0x88, 0x8F, 0x8E, 0x3E, 0x56, 0x3D, 0x86, 0xED, 0x89, 0x5D, 0x39, 0xC7, 0x85, 0x54, 0x82, 0x9B, 0x29, 0x5C, 0x84, 0x74, 0x7E, 0x89, 0x22, 0x62, 0x84, 0x16, 0x7C, 0xCB, 0xB9, 0x8D, 0x94, 0x3F, 0xA7, 0xB3, 0xAB, 0xCC, 0x90, 0x62, 0xA2, 0x8F, 0x98, 0x39, 0x8C, 0xD7, 0x9D, 0xC9, 0x84, 0x68, 0x8A, 0x4F, 0x98, 0xC3, 0x6E, 0x20, 0x88, 0x31, 0x93, 0x75, 0x55, 0x54, 0x86, 0xA1, 0x8D, 0x14, 0x38, 0xFF, 0x85, 0x30, 0x84, 0x5A, 0x29, 0x1B, 0x84, 0x72, 0x7F, 0x18, 0x22, 0x65, 0x84, 0x24, 0x7C, 0xD8, 0xB8, 0x77, 0x93, 0xC4, 0xB2, 0xF0, 0xAA, 0x81, 0x8F, 0xF8, 0xAC, 0xDF, 0x96, 0x9B, 0x8C, 0xA3, 0xA6, 0x77, 0x83, 0x30, 0x8A, 0x0C, 0xA0, 0x4B, 0x6D, 0x2C, 0x87, 0xF7, 0x99, 0x6F, 0x54, 0xB7, 0x86, 0x5E, 0x91, 0x3D, 0x38, 0x8D, 0x85, 0x07, 0x86, 0x43, 0x29, 0x08, 0x84, 0x6A, 0x7F, 0xB7, 0x22, 0x85, 0x84, 0x2D, 0x7C, 0xEA, 0xB7, 0xEB, 0x93, 0x51, 0xBC, 0x55, 0xA9, 0xD6, 0x8F, 0xDC, 0xB5, 0xC7, 0x96, 0x5B, 0x8C, 0x6E, 0xAE, 0x1A, 0x82, 0x63, 0x89, 0xBA, 0xA6, 0xE1, 0x6C, 0x35, 0x87, 0xAF, 0x9E, 0xB4, 0x54, 0x17, 0x86, 0x26, 0x94, 0xE4, 0x38, 0xAE, 0x84, 0xE1, 0x88, 0x0F, 0x29, 0x57, 0x84, 0x51, 0x80, 0x69, 0x22, 0xDF, 0x84, 0x19, 0x7D, 0x26, 0xB8, 0x61, 0x92, 0xAD, 0xC4, 0xC8, 0xA9, 0x16, 0x8F, 0x9E, 0xBD, 0x87, 0x95, 0x39, 0x8C, 0x54, 0xB5, 0x3A, 0x81, 0x91, 0x89, 0x7B, 0xAC, 0xCB, 0x6A, 0xD6, 0x87, 0x5F, 0xA2, 0xFF, 0x52, 0x75, 0x85, 0xED, 0x97, 0xB0, 0x38, 0xF8, 0x84, 0xBC, 0x89, 0xA5, 0x29, 0xEB, 0x84, 0x38, 0x81, 0x1D, 0x23, 0x70, 0x84, 0x02, 0x7D, 0x73, 0xB2, 0x39, 0xA1, 0x9B, 0x77, 0xF4, 0xA6, 0x0A, 0x9C, 0x75, 0x78, 0x1B, 0x94, 0x29, 0x97, 0x25, 0x79, 0x84, 0x80, 0xBD, 0x93, 0x50, 0x7A, 0x12, 0x6B, 0x83, 0x8F, 0xB2, 0x7A, 0xB1, 0x54, 0x5B, 0x8C, 0x03, 0x7A, 0xF2, 0x39, 0x64, 0x88, 0x69, 0x7B, 0x21, 0x2A, 0x0C, 0x86, 0x5B, 0x7B, 0x08, 0x23, 0x8A, 0x85, 0x7A, 0x7A, 0xFA, 0xB2, 0x30, 0x9F, 0xF2, 0x7F, 0x03, 0xA4, 0x56, 0x9B, 0x61, 0x7E, 0xC2, 0x91, 0xF1, 0x96, 0xAA, 0x7E, 0x98, 0x7F, 0x41, 0x92, 0xE8, 0x7E, 0x6C, 0x6A, 0x8E, 0x8F, 0x82, 0x7E, 0x3E, 0x53, 0x61, 0x8B, 0xEA, 0x7D, 0xAF, 0x38, 0x86, 0x88, 0x33, 0x7C, 0x8A, 0x29, 0x34, 0x86, 0x1B, 0x7B, 0xC1, 0x22, 0xB5, 0x85, 0x37, 0x7B, 0x68, 0xB0, 0x95, 0x9E, 0xBF, 0x88, 0x0E, 0xA3, 0x16, 0x9A, 0x13, 0x86, 0xDC, 0x91, 0x2B, 0x95, 0xA5, 0x85, 0x4C, 0x7E, 0x6D, 0x92, 0x11, 0x83, 0xF3, 0x69, 0xA6, 0x8E, 0xD2, 0x82, 0x96, 0x52, 0xC6, 0x8B, 0x85, 0x80, 0xE8, 0x38, 0x2A, 0x87, 0xED, 0x7E, 0x32, 0x28, 0x96, 0x85, 0xDE, 0x7C, 0x87, 0x21, 0xF8, 0x84, 0xFE, 0x7B, 0xD0, 0xAF, 0x80, 0x9E, 0x2F, 0x91, 0x69, 0xA2, 0x69, 0x99, 0x76, 0x8F, 0x03, 0x90, 0x60, 0x94, 0xBA, 0x8C, 0x66, 0x7D, 0xD5, 0x91, 0x33, 0x89, 0xBF, 0x68, 0xF7, 0x8E, 0x19, 0x87, 0x40, 0x53, 0x45, 0x8A, 0xFD, 0x84, 0x5B, 0x38, 0x9C, 0x87, 0x9D, 0x7F, 0xFA, 0x28, 0x53, 0x85, 0xB8, 0x7D, 0x3A, 0x21, 0x87, 0x84, 0xE6, 0x7C, 0x0F, 0xAD, 0x9E, 0x9D, 0xB4, 0x9A, 0xB6, 0xA1, 0x7A, 0x98, 0xB1, 0x97, 0x34, 0x8F, 0x11, 0x94, 0x26, 0x93, 0x3E, 0x7C, 0xDA, 0x90, 0x9C, 0x8F, 0x98, 0x68, 0x05, 0x8D, 0x79, 0x8C, 0x22, 0x51, 0xA3, 0x8A, 0xA7, 0x87, 0xC2, 0x37, 0x6A, 0x87, 0x7C, 0x81, 0x95, 0x27, 0xFB, 0x85, 0xAF, 0x7D, 0xC5, 0x21, 0x71, 0x84, 0xE9, 0x7C, 0x23, 0xAD, 0x77, 0x9D, 0x08, 0xA3, 0x98, 0xA0, 0x96, 0x98, 0x30, 0x9E, 0xDA, 0x8D, 0xED, 0x93, 0xA8, 0x9A, 0x53, 0x7B, 0x34, 0x90, 0x40, 0x96, 0x01, 0x66, 0xD3, 0x8D, 0x21, 0x91, 0x41, 0x50, 0x5E, 0x8A, 0x5E, 0x8B, 0x5F, 0x36, 0x6E, 0x87, 0x59, 0x83, 0x31, 0x27, 0xB3, 0x85, 0xAE, 0x7E, 0x3D, 0x21, 0x76, 0x84, 0xFB, 0x7C, 0x1E, 0xAC, 0x74, 0x9C, 0x7B, 0xAE, 0x3C, 0x9F, 0x79, 0x97, 0xF4, 0xA8, 0x9E, 0x8C, 0x65, 0x93, 0x58, 0xA2, 0xD9, 0x79, 0xFE, 0x8F, 0xE5, 0x9D, 0x3B, 0x66, 0x2A, 0x8C, 0xE2, 0x96, 0xF5, 0x50, 0x5A, 0x8A, 0x13, 0x8F, 0x5A, 0x36, 0x46, 0x87, 0x29, 0x84, 0xFA, 0x27, 0xAF, 0x85, 0xA6, 0x7E, 0xC4, 0x21, 0x93, 0x85, 0x07, 0x7C, 0x1D, 0xAB, 0x4E, 0x9C, 0x65, 0xB6, 0xDE, 0x9E, 0xAD, 0x97, 0xD0, 0xB1, 0x30, 0x8C, 0x63, 0x93, 0x09, 0xAA, 0x48, 0x79, 0x7D, 0x8F, 0x92, 0xA3, 0x76, 0x65, 0x3C, 0x8C, 0xAC, 0x9B, 0xCE, 0x4F, 0x90, 0x89, 0xEE, 0x92, 0x9A, 0x36, 0x48, 0x87, 0x0C, 0x86, 0x7F, 0x27, 0xF4, 0x85, 0x8C, 0x7F, 0x58, 0x21, 0xE9, 0x84, 0xED, 0x7C, 0x4D, 0xAA, 0xDC, 0x9B, 0xE4, 0xBE, 0xD9, 0x9B, 0x6F, 0x97, 0xD3, 0xB8, 0x43, 0x8A, 0xC0, 0x93, 0x36, 0xB0, 0xF3, 0x78, 0xDA, 0x8F, 0x76, 0xA8, 0xE9, 0x64, 0x23, 0x8C, 0x6E, 0x9F, 0xC7, 0x4E, 0x45, 0x89, 0xBA, 0x95, 0x1E, 0x36, 0x54, 0x86, 0xEA, 0x87, 0xBC, 0x28, 0x62, 0x85, 0x71, 0x7F, 0xE4, 0x22, 0x6C, 0x84, 0xD3, 0x7C, 0x8E, 0xA5, 0x55, 0xAA, 0x72, 0x78, 0x10, 0x99, 0xB7, 0xA5, 0x1B, 0x77, 0x70, 0x88, 0xB6, 0x9E, 0x78, 0x78, 0xFB, 0x76, 0x2D, 0x99, 0xC2, 0x79, 0x37, 0x63, 0x20, 0x95, 0x0A, 0x79, 0xB5, 0x4B, 0xAC, 0x8F, 0xE5, 0x7A, 0x28, 0x35, 0x80, 0x8A, 0xE2, 0x7A, 0x6D, 0x28, 0x91, 0x87, 0xC3, 0x7A, 0x69, 0x22, 0xF1, 0x86, 0x64, 0x7A, 0x69, 0xA4, 0x0D, 0xA9, 0x62, 0x7E, 0x84, 0x98, 0x99, 0xA3, 0xD8, 0x7D, 0x99, 0x87, 0xDE, 0x9E, 0x41, 0x7D, 0x62, 0x75, 0x5A, 0x99, 0x5B, 0x7D, 0x5F, 0x62, 0x57, 0x94, 0xB9, 0x7D, 0x18, 0x4D, 0x28, 0x90, 0x02, 0x7C, 0xA6, 0x35, 0x57, 0x8A, 0xA3, 0x7B, 0xBF, 0x27, 0xA1, 0x87, 0x73, 0x7B, 0x20, 0x21, 0xCD, 0x86, 0x15, 0x7A, 0xDB, 0xA3, 0xC1, 0xA8, 0x7F, 0x86, 0xA7, 0x97, 0xD0, 0xA2, 0xB7, 0x84, 0xAC, 0x87, 0xF8, 0x9D, 0x62, 0x82, 0xF3, 0x75, 0x82, 0x98, 0xB3, 0x82, 0x1B, 0x61, 0x62, 0x94, 0x31, 0x81, 0x1A, 0x4C, 0xAE, 0x8F, 0xA2, 0x7F, 0xA7, 0x35, 0x75, 0x8A, 0x5C, 0x7D, 0x45, 0x27, 0x00, 0x87, 0x2A, 0x7B, 0xDD, 0x20, 0xE0, 0x85, 0xD0, 0x7B, 0x40, 0xA3, 0x45, 0xA7, 0xE6, 0x8E, 0xAB, 0x95, 0x93, 0xA2, 0x47, 0x8C, 0x22, 0x85, 0x95, 0x9C, 0x8B, 0x89, 0xB2, 0x74, 0xCC, 0x97, 0xF9, 0x87, 0x8F, 0x61, 0xA0, 0x93, 0xA5, 0x85, 0x47, 0x4D, 0x46, 0x8F, 0x42, 0x82, 0xB7, 0x35, 0x37, 0x8A, 0x0B, 0x7E, 0xEA, 0x26, 0x97, 0x86, 0xF9, 0x7C, 0x83, 0x20, 0x64, 0x85, 0xAB, 0x7B, 0x79, 0xA1, 0x0E, 0xA7, 0x65, 0x96, 0xC4, 0x93, 0x87, 0xA1, 0xB8, 0x93, 0x86, 0x83, 0x79, 0x9C, 0x13, 0x90, 0x82, 0x73, 0x24, 0x97, 0x8A, 0x8D, 0x43, 0x60, 0xBA, 0x93, 0x1E, 0x89, 0xBE, 0x4C, 0x3E, 0x8E, 0xDA, 0x85, 0xE3, 0x34, 0x51, 0x89, 0xD1, 0x80, 0x75, 0x26, 0x42, 0x86, 0xE3, 0x7D, 0x04, 0x20, 0x45, 0x85, 0xA3, 0x7B, 0x88, 0xA2, 0x1B, 0xA6, 0x69, 0x9F, 0x25, 0x93, 0xA2, 0xA1, 0x10, 0x9B, 0x76, 0x81, 0xDD, 0x9B, 0x7B, 0x97, 0x74, 0x71, 0x3B, 0x97, 0x0D, 0x93, 0x35, 0x5F, 0xAE, 0x92, 0xBA, 0x8E, 0xA8, 0x4B, 0x73, 0x8E, 0x76, 0x89, 0x50, 0x33, 0xBA, 0x89, 0x9B, 0x81, 0xF3, 0x26, 0x19, 0x86, 0xD7, 0x7D, 0x6E, 0x20, 0x51, 0x85, 0xAB, 0x7B, 0x7E, 0x9F, 0xE6, 0xA5, 0xE2, 0xA9, 0x33, 0x93, 0xE7, 0xA0, 0xFD, 0xA4, 0xDB, 0x81, 0x75, 0x9B, 0x0E, 0x9F, 0x86, 0x70, 0x10, 0x96, 0x95, 0x9A, 0x0C, 0x5F, 0x5A, 0x92, 0x59, 0x94, 0x3C, 0x4C, 0x2E, 0x8E, 0x13, 0x8D, 0x37, 0x33, 0xFB, 0x89, 0x67, 0x83, 0x98, 0x26, 0x3F, 0x86, 0xCE, 0x7D, 0xE0, 0x20, 0x80, 0x85, 0xB4, 0x7B, 0x72, 0x9D, 0x4F, 0xA6, 0x17, 0xB0, 0xF4, 0x93, 0x40, 0xA0, 0x89, 0xAC, 0xD5, 0x82, 0xAC, 0x9A, 0x9B, 0xA6, 0xBE, 0x70, 0x14, 0x96, 0x3B, 0x9F, 0xFC, 0x5D, 0xEA, 0x92, 0x36, 0x98, 0x9F, 0x4A, 0xC7, 0x8E, 0x0E, 0x90, 0x04, 0x33, 0xD0, 0x89, 0x63, 0x84, 0xDC, 0x26, 0x8C, 0x86, 0xC8, 0x7E, 0x51, 0x20, 0xF0, 0x85, 0xAF, 0x7B, 0x8A, 0x9D, 0xA3, 0xA5, 0x9C, 0xB8, 0xD6, 0x91, 0xA6, 0xA0, 0x45, 0xB3, 0xD9, 0x81, 0x27, 0x9A, 0xB1, 0xAC, 0xAA, 0x70, 0x1E, 0x96, 0x09, 0xA4, 0xEE, 0x5D, 0x34, 0x92, 0x0A, 0x9C, 0x4C, 0x49, 0x27, 0x8D, 0xEA, 0x92, 0x1D, 0x33, 0x89, 0x89, 0x5F, 0x85, 0xCF, 0x26, 0xDE, 0x86, 0xC7, 0x7E, 0xB7, 0x21, 0x79, 0x85, 0xAC, 0x7B, 0xB4, 0x97, 0x23, 0xB5, 0x34, 0x77, 0x4E, 0x8A, 0x99, 0xAF, 0x41, 0x77, 0x31, 0x7A, 0x2B, 0xA8, 0x1F, 0x77, 0xD7, 0x6A, 0x8E, 0xA1, 0xE7, 0x77, 0xCD, 0x5A, 0x03, 0x9B, 0xED, 0x78, 0x8C, 0x45, 0x19, 0x95, 0x76, 0x79, 0x60, 0x31, 0x03, 0x8D, 0xE7, 0x79, 0xA8, 0x26, 0x0A, 0x89, 0x47, 0x79, 0xCA, 0x21, 0x52, 0x87, 0x4B, 0x79, 0xDA, 0x95, 0xB5, 0xB4, 0xB7, 0x7D, 0xC9, 0x8A, 0x01, 0xAE, 0x64, 0x7C, 0xDC, 0x7A, 0x91, 0xA7, 0x66, 0x7C, 0x40, 0x6A, 0xBA, 0xA1, 0x22, 0x7B, 0xD6, 0x5A, 0x31, 0x9B, 0x30, 0x7B, 0xA1, 0x46, 0xE8, 0x95, 0x09, 0x7B, 0x72, 0x31, 0x7A, 0x8D, 0x77, 0x7A, 0xDE, 0x25, 0x54, 0x88, 0xF0, 0x7A, 0x6F, 0x20, 0x2E, 0x87, 0x01, 0x7A, 0x3E, 0x94, 0xDD, 0xB3, 0xB8, 0x85, 0x09, 0x88, 0xDD, 0xAD, 0x08, 0x83, 0x2F, 0x79, 0x61, 0xA6, 0x4E, 0x81, 0x46, 0x6A, 0x87, 0xA0, 0x71, 0x80, 0x4F, 0x59, 0x20, 0x9A, 0xB8, 0x7F, 0x67, 0x46, 0xC4, 0x94, 0x87, 0x7E, 0x1D, 0x31, 0x9B, 0x8D, 0x08, 0x7C, 0x40, 0x24, 0xB8, 0x88, 0x9A, 0x7B, 0x19, 0x1F, 0x3E, 0x86, 0xB9, 0x7A, 0x98, 0x93, 0xEF, 0xB3, 0x0B, 0x8C, 0x24, 0x86, 0x40, 0xAC, 0x94, 0x89, 0xE7, 0x77, 0xD2, 0xA5, 0xA0, 0x87, 0x61, 0x6A, 0x16, 0x9F, 0xDE, 0x85, 0x66, 0x58, 0xB9, 0x9A, 0x27, 0x83, 0x68, 0x46, 0x71, 0x94, 0x04, 0x80, 0xFF, 0x31, 0x1B, 0x8C, 0xA4, 0x7D, 0xB8, 0x24, 0x3F, 0x88, 0x58, 0x7B, 0xAD, 0x1E, 0xC2, 0x86, 0x87, 0x7A, 0xCA, 0x91, 0xFF, 0xB2, 0x6C, 0x93, 0x8B, 0x85, 0xC8, 0xAB, 0xED, 0x90, 0x95, 0x76, 0xD0, 0xA5, 0x4E, 0x8D, 0x8B, 0x68, 0x19, 0x9F, 0x90, 0x8A, 0xC7, 0x58, 0x00, 0x99, 0x8B, 0x87, 0x70, 0x45, 0xD6, 0x93, 0x7F, 0x83, 0xD3, 0x30, 0x89, 0x8C, 0x55, 0x7F, 0x1E, 0x24, 0x01, 0x88, 0x2D, 0x7C, 0x24, 0x1E, 0xA8, 0x86, 0x6A, 0x7A, 0xD9, 0x92, 0xD4, 0xB1, 0x51, 0x9B, 0x0B, 0x86, 0x34, 0xAB, 0x3D, 0x97, 0xE9, 0x76, 0x11, 0xA4, 0xC1, 0x94, 0x13, 0x66, 0xC8, 0x9F, 0x01, 0x90, 0x28, 0x57, 0x41, 0x99, 0x1B, 0x8B, 0xB7, 0x45, 0x47, 0x93, 0x1E, 0x86, 0xD8, 0x30, 0x4F, 0x8C, 0x19, 0x80, 0x78, 0x24, 0x0C, 0x88, 0x12, 0x7C, 0x85, 0x1E, 0xD1, 0x86, 0x5D, 0x7A, 0xD2, 0x91, 0x3B, 0xB1, 0x26, 0xA3, 0xD1, 0x85, 0x6B, 0xAA, 0xD5, 0xA0, 0x85, 0x75, 0x3D, 0xA4, 0x2F, 0x9B, 0x74, 0x65, 0x77, 0x9E, 0x8A, 0x96, 0x67, 0x56, 0xB0, 0x98, 0xC1, 0x90, 0xC0, 0x45, 0xB2, 0x92, 0xD6, 0x8A, 0x5A, 0x30, 0xB5, 0x8B, 0xF7, 0x81, 0xEF, 0x24, 0x71, 0x88, 0x0A, 0x7C, 0xE9, 0x1F, 0x3D, 0x86, 0x60, 0x7A, 0xC5, 0x8F, 0x70, 0xB1, 0x25, 0xAB, 0xB9, 0x84, 0xB1, 0xAA, 0xBD, 0xA7, 0xC5, 0x75, 0x40, 0xA3, 0x7E, 0xA2, 0x13, 0x65, 0x57, 0x9D, 0xF9, 0x9B, 0xD6, 0x55, 0xB4, 0x98, 0x88, 0x94, 0xF8, 0x44, 0xF7, 0x92, 0xBA, 0x8D, 0x0B, 0x30, 0xDA, 0x8C, 0x02, 0x83, 0x1A, 0x24, 0xFC, 0x88, 0x1C, 0x7D, 0x49, 0x1F, 0xEE, 0x86, 0x74, 0x7A, 0xD0, 0x8F, 0x89, 0xB0, 0xEC, 0xB3, 0x64, 0x82, 0xEA, 0xAA, 0xF3, 0xAE, 0x2C, 0x74, 0x72, 0xA3, 0xAB, 0xA7, 0x82, 0x65, 0x38, 0x9D, 0xC5, 0xA0, 0x70, 0x54, 0x8C, 0x98, 0x80, 0x98, 0x65, 0x43, 0x32, 0x92, 0xA2, 0x8E, 0xE2, 0x30, 0xAC, 0x8C, 0x26, 0x83, 0xFC, 0x25, 0x84, 0x88, 0x3E, 0x7D, 0xA1, 0x20, 0xB7, 0x86, 0x90, 0x7A, 0xEB, 0x86, 0xF6, 0xC0, 0x58, 0x77, 0xB3, 0x7A, 0xCC, 0xB9, 0xD8, 0x77, 0xB9, 0x6C, 0xEB, 0xB2, 0x1F, 0x77, 0x89, 0x5F, 0xBC, 0xAA, 0xBC, 0x76, 0xE3, 0x50, 0x9B, 0xA3, 0xC0, 0x77, 0x4D, 0x3F, 0xE0, 0x9B, 0x90, 0x78, 0x27, 0x2D, 0x59, 0x91, 0x01, 0x78, 0xC1, 0x23, 0x05, 0x8A, 0xE3, 0x79, 0x15, 0x1E, 0xAA, 0x88, 0x4C, 0x79, 0x38, 0x87, 0x0A, 0xBF, 0x8F, 0x7D, 0x40, 0x7B, 0x2C, 0xB9, 0x51, 0x7C, 0x2F, 0x6C, 0xE2, 0xB1, 0x67, 0x7A, 0xFF, 0x5F, 0x7A, 0xA9, 0xF2, 0x7A, 0x4D, 0x50, 0xD4, 0xA2, 0xAC, 0x7A, 0x0E, 0x40, 0x5C, 0x9A, 0xB4, 0x7A, 0x13, 0x2D, 0x1B, 0x90, 0x98, 0x79, 0xD7, 0x22, 0x38, 0x8A, 0xA2, 0x79, 0x9A, 0x1D, 0x9F, 0x88, 0x18, 0x79, 0x7E, 0x85, 0xC1, 0xBE, 0xCE, 0x83, 0xC8, 0x7A, 0x49, 0xB8, 0x67, 0x81, 0xD4, 0x6B, 0x88, 0xB0, 0x6B, 0x7F, 0xD8, 0x5E, 0x80, 0xA9, 0x24, 0x7E, 0xA8, 0x4F, 0xD6, 0xA2, 0x03, 0x7D, 0xAB, 0x3F, 0xDA, 0x9A, 0x07, 0x7C, 0x98, 0x2C, 0xAE, 0x90, 0x1E, 0x7B, 0x1A, 0x21, 0x7A, 0x8A, 0x54, 0x7A, 0x28, 0x1C, 0xB6, 0x87, 0xDE, 0x79, 0xBE, 0x84, 0xEB, 0xBD, 0xCA, 0x8A, 0x86, 0x79, 0x5B, 0xB7, 0x4C, 0x87, 0xEF, 0x6A, 0xEE, 0xAF, 0x8A, 0x85, 0x66, 0x5D, 0xAC, 0xA8, 0x79, 0x83, 0x7B, 0x4E, 0xFF, 0xA1, 0x5C, 0x81, 0x80, 0x3F, 0x37, 0x99, 0x61, 0x7F, 0x41, 0x2C, 0x40, 0x8F, 0xAC, 0x7C, 0x63, 0x21, 0x0A, 0x8A, 0x09, 0x7A, 0xA4, 0x1C, 0x41, 0x87, 0xA4, 0x79, 0xE3, 0x83, 0x99, 0xBD, 0x9F, 0x91, 0x2B, 0x78, 0xD6, 0xB6, 0xAD, 0x8E, 0x20, 0x6A, 0xF7, 0xAE, 0xFA, 0x8B, 0x03, 0x5D, 0x17, 0xA8, 0x03, 0x88, 0x50, 0x4E, 0xB6, 0xA0, 0xA4, 0x85, 0x2C, 0x3E, 0xD4, 0x98, 0xC8, 0x81, 0xC2, 0x2C, 0x0D, 0x8F, 0x4A, 0x7D, 0x95, 0x21, 0x00, 0x89, 0xC7, 0x7B, 0x07, 0x1C, 0x48, 0x87, 0x6F, 0x79, 0xED, 0x83, 0xDC, 0xBC, 0xBB, 0x98, 0x10, 0x78, 0xBE, 0xB6, 0x66, 0x94, 0x70, 0x6A, 0x95, 0xAE, 0xD5, 0x90, 0x74, 0x5C, 0x9E, 0xA7, 0x76, 0x8D, 0x06, 0x4E, 0x71, 0xA0, 0x20, 0x88, 0xF5, 0x3E, 0x95, 0x98, 0x63, 0x84, 0x64, 0x2C, 0x2F, 0x8E, 0xF7, 0x7E, 0xC4, 0x21, 0x59, 0x89, 0x90, 0x7B, 0x5E, 0x1C, 0xB6, 0x87, 0x47, 0x79, 0xE9, 0x83, 0xD1, 0xBC, 0x28, 0xA0, 0x13, 0x78, 0x35, 0xB5, 0xA0, 0x9B, 0xFA, 0x69, 0x77, 0xAD, 0xFE, 0x96, 0xFB, 0x5B, 0x1E, 0xA7, 0x1A, 0x92, 0x7F, 0x4E, 0x35, 0x9F, 0xBB, 0x8D, 0x5D, 0x3F, 0x23, 0x98, 0x01, 0x87, 0x7C, 0x2C, 0xCC, 0x8E, 0xC1, 0x80, 0x14, 0x22, 0x1B, 0x89, 0x78, 0x7B, 0xBE, 0x1D, 0x8F, 0x87, 0x3D, 0x79, 0xE6, 0x83, 0x51, 0xBB, 0xB2, 0xA7, 0x8D, 0x77, 0xC5, 0xB5, 0x18, 0xA2, 0xDD, 0x68, 0xD5, 0xAD, 0x74, 0x9C, 0xF3, 0x5A, 0xD7, 0xA6, 0xB0, 0x97, 0x46, 0x4D, 0xAC, 0x9F, 0x76, 0x91, 0x20, 0x3E, 0xF5, 0x97, 0xCE, 0x89, 0xF7, 0x2D, 0x4F, 0x8E, 0xD0, 0x81, 0x32, 0x23, 0x12, 0x89, 0x97, 0x7C, 0x24, 0x1E, 0xB8, 0x87, 0x5F, 0x7A, 0x00, 0x82, 0xCD, 0xBB, 0xDE, 0xAE, 0x45, 0x77, 0xF0, 0xB4, 0xF4, 0xA9, 0x0E, 0x68, 0x88, 0xAD, 0x59, 0xA2, 0x4B, 0x5B, 0x09, 0xA6, 0x64, 0x9B, 0x9C, 0x4C, 0xCE, 0x9F, 0x6A, 0x94, 0x48, 0x3D, 0xC4, 0x97, 0xC1, 0x8B, 0xC1, 0x2D, 0x8B, 0x8F, 0x16, 0x82, 0x18, 0x24, 0x0C, 0x89, 0xD6, 0x7C, 0x8B, 0x1F, 0xFB, 0x87, 0x95, 0x7A, 0x2E, 0x7C, 0xDB, 0xC8, 0xD2, 0x78, 0x25, 0x73, 0xFD, 0xC2, 0x7E, 0x76, 0x76, 0x63, 0xDA, 0xBA, 0x4B, 0x76, 0x17, 0x57, 0x92, 0xB2, 0x64, 0x75, 0xB3, 0x49, 0xEE, 0xA9, 0xB9, 0x76, 0x16, 0x3A, 0xE1, 0x9F, 0xE6, 0x76, 0xDB, 0x2A, 0x12, 0x93, 0x95, 0x77, 0xD1, 0x20, 0x47, 0x8C, 0x5E, 0x78, 0x55, 0x1C, 0x12, 0x89, 0x56, 0x78, 0x86, 0x7B, 0xC4, 0xC8, 0x05, 0x7C, 0xC8, 0x71, 0x33, 0xC1, 0x9D, 0x7B, 0x73, 0x63, 0x78, 0xB9, 0x87, 0x7A, 0x21, 0x56, 0xF1, 0xB1, 0x7B, 0x79, 0x19, 0x49, 0x57, 0xA9, 0x05, 0x78, 0xBC, 0x3A, 0x5A, 0x9F, 0x94, 0x78, 0xCA, 0x28, 0xEE, 0x93, 0x75, 0x78, 0xCD, 0x1F, 0x08, 0x8C, 0x49, 0x78, 0xBD, 0x1A, 0xD7, 0x89, 0x3D, 0x78, 0xB4, 0x7A, 0x16, 0xC6, 0x79, 0x82, 0x6F, 0x6F, 0x92, 0xC0, 0x11, 0x80, 0xCA, 0x63, 0x10, 0xB8, 0x2A, 0x7F, 0x21, 0x56, 0x9B, 0xB0, 0x6C, 0x7D, 0x34, 0x48, 0x9E, 0xA8, 0x36, 0x7C, 0x0B, 0x39, 0x8C, 0x9F, 0x04, 0x7B, 0x32, 0x28, 0x01, 0x93, 0x30, 0x79, 0xF9, 0x1E, 0x02, 0x8C, 0x1F, 0x79, 0x30, 0x19, 0xC8, 0x89, 0x19, 0x78, 0xDA, 0x7B, 0xEB, 0xC5, 0xF1, 0x88, 0x9D, 0x6F, 0xD4, 0xBF, 0x0F, 0x86, 0x64, 0x62, 0xE8, 0xB7, 0x26, 0x83, 0xDE, 0x56, 0x1E, 0xAF, 0x6B, 0x81, 0x75, 0x47, 0xEB, 0xA7, 0x63, 0x7F, 0x97, 0x39, 0x09, 0x9E, 0x40, 0x7D, 0xB4, 0x27, 0xB3, 0x92, 0xCC, 0x7B, 0x28, 0x1D, 0xA0, 0x8B, 0xDC, 0x79, 0x97, 0x19, 0x57, 0x88, 0xE1, 0x78, 0xEB, 0x7B, 0xC0, 0xC5, 0xD2, 0x8E, 0xBE, 0x6E, 0xE1, 0xBE, 0xA3, 0x8C, 0x30, 0x62, 0x11, 0xB6, 0x7A, 0x89, 0x28, 0x55, 0x8E, 0xAE, 0xD0, 0x86, 0x10, 0x47, 0xCA, 0xA6, 0xD7, 0x83, 0x29, 0x39, 0x30, 0x9D, 0x89, 0x80, 0x05, 0x27, 0xF6, 0x92, 0x51, 0x7C, 0x38, 0x1D, 0xDD, 0x8B, 0x83, 0x79, 0xE7, 0x19, 0x8F, 0x88, 0x98, 0x78, 0xE9, 0x79, 0xA9, 0xC4, 0xEC, 0x95, 0xA0, 0x6E, 0x8A, 0xBE, 0x2F, 0x92, 0x42, 0x61, 0x70, 0xB6, 0x0C, 0x8E, 0x88, 0x55, 0x72, 0xAE, 0x76, 0x8B, 0x13, 0x48, 0x03, 0xA6, 0x75, 0x87, 0x0B, 0x39, 0x4A, 0x9D, 0x1E, 0x82, 0x81, 0x28, 0x7D, 0x91, 0xBC, 0x7D, 0x3B, 0x1E, 0x95, 0x8B, 0x1F, 0x7A, 0x2D, 0x1A, 0x59, 0x88, 0x50, 0x78, 0xE1, 0x79, 0xEA, 0xC3, 0x32, 0x9C, 0xFD, 0x6E, 0xCC, 0xBC, 0xD3, 0x99, 0x03, 0x61, 0xCE, 0xB5, 0x3B, 0x94, 0x3A, 0x55, 0xB4, 0xAD, 0xE5, 0x8F, 0xE9, 0x48, 0x44, 0xA5, 0xD8, 0x8A, 0xE9, 0x39, 0x83, 0x9C, 0xA5, 0x85, 0x2E, 0x29, 0x30, 0x91, 0x59, 0x7E, 0x60, 0x1F, 0xBE, 0x8A, 0xE7, 0x7A, 0x8C, 0x1B, 0xB9, 0x88, 0x2E, 0x78, 0xEF, 0x78, 0xF9, 0xC3, 0x57, 0xA3, 0xED, 0x6E, 0x40, 0xBC, 0xD4, 0x9F, 0x51, 0x61, 0x86, 0xB5, 0x11, 0x99, 0x8A, 0x55, 0x2E, 0xAD, 0x81, 0x93, 0xE3, 0x48, 0x45, 0xA5, 0x51, 0x8D, 0xED, 0x3A, 0x02, 0x9C, 0x44, 0x87, 0x48, 0x29, 0xFF, 0x91, 0x53, 0x7F, 0x6C, 0x21, 0x27, 0x8B, 0x02, 0x7B, 0x09, 0x1D, 0x6F, 0x88, 0x54, 0x79, 0x31, 0x77, 0x4A, 0xC4, 0x9A, 0xAA, 0x6C, 0x6D, 0xE0, 0xBD, 0x36, 0xA5, 0x54, 0x61, 0x12, 0xB4, 0xC0, 0x9E, 0xD0, 0x54, 0xA6, 0xAD, 0x3C, 0x97, 0xD3, 0x48, 0x4A, 0xA4, 0xE9, 0x90, 0xBC, 0x3A, 0x42, 0x9B, 0xCE, 0x88, 0xF5, 0x2A, 0xD7, 0x91, 0x6D, 0x80, 0x51, 0x22, 0xAD, 0x8B, 0x45, 0x7B, 0x95, 0x1F, 0x41, 0x88, 0xA1, 0x79, 0x95, 0xDE, 0x8F, 0x75, 0xC5, 0x6E, 0xE8, 0xC9, 0x88, 0x78, 0x26, 0x72, 0xFB, 0xB3, 0xAD, 0x79, 0xE2, 0x75, 0x51, 0x9B, 0x3C, 0x7B, 0x16, 0x77, 0xF5, 0x83, 0x08, 0x7C, 0x80, 0x79, 0xDE, 0x65, 0xBD, 0x7D, 0xE7, 0x7B, 0x4A, 0x41, 0x43, 0x7F, 0xDA, 0x7B, 0xB3, 0x2C, 0xF4, 0x81, 0x15, 0x7B, 0x9F, 0x24, 0x67, 0x81, 0x9C, 0x7B, 0x91, 0xDA, 0x57, 0x73, 0x39, 0x7D, 0x4A, 0xC7, 0x6F, 0x75, 0xBF, 0x7E, 0x06, 0xB2, 0x5C, 0x78, 0x30, 0x7D, 0xFC, 0x9B, 0x5C, 0x79, 0xE2, 0x7E, 0x65, 0x81, 0x60, 0x7B, 0xA1, 0x7E, 0x88, 0x63, 0x3C, 0x7D, 0x66, 0x7E, 0x42, 0x40, 0x1A, 0x7F, 0x74, 0x7D, 0x54, 0x2C, 0x89, 0x80, 0xBA, 0x7C, 0xA1, 0x24, 0x4F, 0x81, 0x48, 0x7C, 0x51, 0xD7, 0x6A, 0x71, 0x1B, 0x8B, 0x89, 0xC4, 0xEC, 0x73, 0xBB, 0x89, 0x0B, 0xB0, 0x0F, 0x76, 0x6E, 0x87, 0x27, 0x99, 0xA7, 0x78, 0x9E, 0x85, 0xEE, 0x7F, 0x1E, 0x7A, 0xC1, 0x84, 0x2E, 0x60, 0x4D, 0x7C, 0xD1, 0x82, 0x0D, 0x3F, 0x28, 0x7E, 0xFE, 0x7F, 0x59, 0x2C, 0x5A, 0x80, 0x58, 0x7D, 0xC8, 0x24, 0x5B, 0x80, 0xEE, 0x7D, 0x1D, 0xD5, 0xEC, 0x6F, 0x89, 0x98, 0xE2, 0xC4, 0x98, 0x72, 0x66, 0x94, 0x05, 0xAE, 0x5E, 0x75, 0x71, 0x90, 0x46, 0x98, 0x0B, 0x77, 0xDB, 0x8D, 0x1D, 0x7D, 0x8F, 0x79, 0xF3, 0x89, 0xFA, 0x5F, 0x40, 0x7C, 0x0E, 0x86, 0x5A, 0x3F, 0xC9, 0x7E, 0x87, 0x81, 0xB6, 0x2C, 0xC7, 0x80, 0x05, 0x7E, 0xF2, 0x24, 0x8F, 0x80, 0xAA, 0x7D, 0xC5, 0xD6, 0x6E, 0x6E, 0x3D, 0xA3, 0xDD, 0xC3, 0x3B, 0x71, 0x65, 0x9E, 0x68, 0xAD, 0xEE, 0x74, 0x52, 0x99, 0x3A, 0x96, 0x08, 0x76, 0xFE, 0x94, 0x05, 0x7B, 0xA2, 0x79, 0x36, 0x8F, 0xBB, 0x60, 0xBD, 0x7B, 0x60, 0x8A, 0xCA, 0x42, 0x9C, 0x7E, 0x22, 0x84, 0x2F, 0x2D, 0x97, 0x7F, 0xCF, 0x7F, 0xFC, 0x24, 0xBA, 0x80, 0x85, 0x7E, 0x36, 0xD4, 0xA9, 0x6D, 0x6E, 0xAE, 0xA0, 0xC1, 0x89, 0x70, 0xCE, 0xA8, 0xDE, 0xAC, 0x5F, 0x73, 0xC7, 0xA1, 0xEA, 0x95, 0x51, 0x76, 0x3B, 0x9B, 0xBD, 0x7C, 0x04, 0x78, 0x6C, 0x96, 0x09, 0x60, 0x16, 0x7A, 0xED, 0x8F, 0x28, 0x41, 0x0E, 0x7D, 0xEA, 0x86, 0x39, 0x2D, 0x81, 0x7F, 0xB7, 0x80, 0xD3, 0x25, 0x11, 0x80, 0x7D, 0x7E, 0x85, 0xD0, 0x2A, 0x6D, 0x0D, 0xBA, 0x7B, 0xC0, 0x4B, 0x70, 0x3C, 0xB3, 0xFF, 0xAC, 0x97, 0x72, 0xBF, 0xAC, 0x5B, 0x94, 0xE6, 0x75, 0x8E, 0xA4, 0xFF, 0x7C, 0x78, 0x77, 0xAB, 0x9D, 0x64, 0x5F, 0x05, 0x7A, 0x80, 0x94, 0x31, 0x3F, 0xA0, 0x7D, 0xC2, 0x88, 0x84, 0x2D, 0x32, 0x7F, 0xBC, 0x81, 0xAB, 0x25, 0x4F, 0x80, 0x97, 0x7E, 0xC2, 0xCF, 0xB5, 0x6D, 0x3E, 0xC5, 0x26, 0xBF, 0xA7, 0x70, 0x07, 0xBD, 0xED, 0xAA, 0xC2, 0x72, 0xA4, 0xB4, 0xE6, 0x93, 0xA1, 0x75, 0x00, 0xAC, 0x4A, 0x7A, 0x88, 0x77, 0x5C, 0xA3, 0x37, 0x5E, 0x7B, 0x7A, 0x18, 0x98, 0x6D, 0x3E, 0xBB, 0x7D, 0xA9, 0x8A, 0x9F, 0x2D, 0x0B, 0x7F, 0xDD, 0x82, 0x7F, 0x25, 0x96, 0x80, 0xD1, 0x7F, 0x09, 0xCF, 0x4C, 0x6D, 0x0F, 0xCE, 0x8C, 0xBE, 0x17, 0x70, 0x09, 0xC6, 0x65, 0xA8, 0xC7, 0x72, 0x8D, 0xBC, 0x3D, 0x91, 0x50, 0x74, 0x8F, 0xB2, 0x07, 0x78, 0xDB, 0x77, 0x36, 0xA8, 0x30, 0x5C, 0xC0, 0x79, 0xED, 0x9B, 0x79, 0x3D, 0xF3, 0x7D, 0xA3, 0x8C, 0x5E, 0x2D, 0x1B, 0x80, 0x12, 0x83, 0x51, 0x26, 0x04, 0x81, 0x18, 0x7F, 0x62, 0xCE, 0xF7, 0x7F, 0x17, 0x70, 0x46, 0xBF, 0x4D, 0x7F, 0x21, 0x73, 0x2E, 0xAB, 0x18, 0x7F, 0x69, 0x75, 0xE0, 0x94, 0x26, 0x7F, 0xC8, 0x77, 0xC6, 0x7D, 0x87, 0x7F, 0xD9, 0x79, 0x6E, 0x5F, 0xC2, 0x80, 0x33, 0x7B, 0x30, 0x3E, 0xB7, 0x81, 0x3F, 0x7B, 0x8D, 0x2C, 0x13, 0x82, 0x0C, 0x7B, 0x52, 0x24, 0x31, 0x82, 0x67, 0x7B, 0x30, 0xCA, 0x3B, 0x7C, 0xF1, 0x7C, 0x4D, 0xBE, 0x94, 0x7D, 0x1A, 0x7C, 0x2A, 0xAA, 0x75, 0x7D, 0xB6, 0x7D, 0x49, 0x94, 0x40, 0x7E, 0x42, 0x7D, 0xBC, 0x7C, 0x63, 0x7E, 0xE0, 0x7D, 0xE6, 0x5F, 0xE2, 0x7F, 0xB6, 0x7D, 0xE6, 0x3E, 0x62, 0x80, 0xE9, 0x7D, 0x18, 0x2B, 0xBD, 0x81, 0xB3, 0x7C, 0x56, 0x23, 0xE6, 0x82, 0x0C, 0x7B, 0xFD, 0xCA, 0x73, 0x7A, 0xFD, 0x88, 0x84, 0xBC, 0x13, 0x7B, 0x9A, 0x86, 0xED, 0xA8, 0x52, 0x7C, 0x60, 0x85, 0xEA, 0x92, 0xA0, 0x7D, 0x14, 0x84, 0xEB, 0x7A, 0x34, 0x7E, 0x10, 0x83, 0x82, 0x5E, 0x61, 0x7F, 0x2A, 0x81, 0x90, 0x3D, 0xCE, 0x80, 0x84, 0x7F, 0x05, 0x2B, 0x81, 0x81, 0x59, 0x7D, 0x70, 0x23, 0xC7, 0x81, 0xB6, 0x7C, 0xC1, 0xCA, 0xF4, 0x79, 0x3C, 0x94, 0x17, 0xBB, 0x72, 0x7A, 0x02, 0x91, 0x59, 0xA7, 0x63, 0x7B, 0x29, 0x8E, 0x38, 0x91, 0x10, 0x7C, 0x4F, 0x8B, 0xB7, 0x78, 0xF3, 0x7D, 0x6A, 0x89, 0x05, 0x5D, 0x53, 0x7E, 0x91, 0x85, 0xA9, 0x3D, 0xA9, 0x80, 0x1E, 0x81, 0x27, 0x2B, 0x8F, 0x81, 0x14, 0x7E, 0x76, 0x23, 0xDF, 0x81, 0x7E, 0x7D, 0x4F, 0xC9, 0x58, 0x78, 0x10, 0x9F, 0x1B, 0xB9, 0xCB, 0x79, 0x08, 0x9A, 0xBC, 0xA6, 0x59, 0x7A, 0x26, 0x96, 0x19, 0x8F, 0x46, 0x7B, 0x8B, 0x92, 0x6A, 0x77, 0x99, 0x7C, 0xAC, 0x8E, 0x7D, 0x5D, 0x17, 0x7D, 0xFD, 0x89, 0xBC, 0x3E, 0x04, 0x7F, 0xCC, 0x83, 0x3F, 0x2B, 0xC7, 0x80, 0xE9, 0x7F, 0x55, 0x24, 0x05, 0x81, 0x64, 0x7D, 0xA9, 0xC6, 0xE2, 0x77, 0x81, 0xAA, 0x0F, 0xB7, 0xFD, 0x78, 0x68, 0xA4, 0xFF, 0xA4, 0x7D, 0x79, 0x7E, 0x9F, 0x09, 0x8E, 0xEB, 0x7A, 0xB9, 0x99, 0xE9, 0x76, 0xC6, 0x7B, 0xF9, 0x94, 0x64, 0x5C, 0x64, 0x7D, 0x83, 0x8D, 0xEE, 0x3D, 0xA5, 0x7F, 0x94, 0x85, 0x47, 0x2B, 0xCE, 0x80, 0xD5, 0x80, 0x1A, 0x24, 0x35, 0x81, 0x5E, 0x7D, 0xE5, 0xC5, 0x73, 0x76, 0xF7, 0xB6, 0x17, 0xB6, 0x6F, 0x77, 0xEC, 0xB0, 0x11, 0xA2, 0x3D, 0x78, 0xFC, 0xA8, 0xB3, 0x8E, 0x06, 0x7A, 0x1F, 0xA2, 0x52, 0x75, 0x85, 0x7B, 0x6D, 0x9B, 0x32, 0x5B, 0x10, 0x7D, 0x16, 0x92, 0xBA, 0x3C, 0xFE, 0x7F, 0x65, 0x87, 0x84, 0x2B, 0xBA, 0x80, 0xD0, 0x80, 0xE8, 0x24, 0x65, 0x81, 0x6B, 0x7E, 0x19, 0xC5, 0x0C, 0x76, 0xB6, 0xC0, 0x10, 0xB5, 0xAF, 0x77, 0x87, 0xB9, 0x3E, 0xA1, 0xDD, 0x78, 0x9D, 0xB1, 0x37, 0x8C, 0x7E, 0x79, 0xC2, 0xA9, 0x89, 0x74, 0x4F, 0x7B, 0x0E, 0xA1, 0x0E, 0x5A, 0x2D, 0x7C, 0xC0, 0x96, 0xE8, 0x3C, 0x7B, 0x7F, 0x43, 0x89, 0x9B, 0x2B, 0xB1, 0x80, 0xD7, 0x81, 0xB4, 0x24, 0x98, 0x81, 0x86, 0x7E, 0x55, 0xC3, 0x31, 0x76, 0xE6, 0xC8, 0x66, 0xB4, 0xBF, 0x77, 0x86, 0xC1, 0x52, 0xA1, 0xA1, 0x78, 0x57, 0xB8, 0xE8, 0x8B, 0xF9, 0x79, 0x64, 0xB0, 0x2B, 0x73, 0xC9, 0x7A, 0xC7, 0xA6, 0x2E, 0x59, 0xA2, 0x7C, 0x84, 0x9A, 0x6F, 0x3C, 0x24, 0x7F, 0x2B, 0x8B, 0x7B, 0x2B, 0xBE, 0x80, 0xE6, 0x82, 0x77, 0x24, 0xD6, 0x81, 0xA6, 0x7E, 0x99, 0xC0, 0x49, 0x88, 0xF5, 0x70, 0xFF, 0xB2, 0x4A, 0x87, 0x57, 0x73, 0xB5, 0xA0, 0xF6, 0x85, 0xB2, 0x75, 0x4D, 0x8C, 0x8E, 0x84, 0xBC, 0x77, 0x1C, 0x75, 0x90, 0x83, 0xE8, 0x79, 0x13, 0x59, 0x67, 0x83, 0x23, 0x7A, 0xFE, 0x3B, 0xBF, 0x82, 0xFE, 0x7B, 0x49, 0x2A, 0xF5, 0x83, 0x2E, 0x7A, 0xF8, 0x23, 0xD2, 0x83, 0x48, 0x7A, 0xCF, 0xBE, 0xBE, 0x86, 0xE5, 0x79, 0xE3, 0xB2, 0x0D, 0x85, 0xD5, 0x7B, 0xA5, 0x9F, 0xB4, 0x84, 0x3B, 0x7C, 0xBC, 0x8B, 0x47, 0x83, 0x5B, 0x7C, 0xC4, 0x75, 0x49, 0x82, 0xE8, 0x7D, 0x25, 0x5B, 0x23, 0x82, 0xA8, 0x7D, 0x6B, 0x3C, 0x2F, 0x82, 0xB0, 0x7C, 0xBD, 0x2A, 0xBF, 0x82, 0xD6, 0x7B, 0xFA, 0x23, 0x65, 0x82, 0xE9, 0x7B, 0x9F, 0xBC, 0x3E, 0x84, 0xF8, 0x85, 0x10, 0xB1, 0x08, 0x83, 0xEF, 0x84, 0xF7, 0x9E, 0x9D, 0x83, 0x06, 0x84, 0xB6, 0x8A, 0x16, 0x82, 0x67, 0x83, 0xA8, 0x74, 0x14, 0x82, 0x2A, 0x82, 0x55, 0x5A, 0x30, 0x82, 0x22, 0x80, 0xDB, 0x3B, 0xD5, 0x82, 0x57, 0x7E, 0x90, 0x2A, 0x81, 0x82, 0x86, 0x7D, 0x01, 0x23, 0x2D, 0x82, 0x9B, 0x7C, 0x52, 0xBE, 0x1A, 0x83, 0x23, 0x8F, 0xDC, 0xAF, 0xDE, 0x82, 0x51, 0x8E, 0x47, 0x9D, 0x07, 0x82, 0x05, 0x8B, 0xDE, 0x89, 0x1C, 0x81, 0xB6, 0x89, 0xD4, 0x72, 0xCC, 0x81, 0x8B, 0x87, 0xB5, 0x58, 0xC8, 0x81, 0x9C, 0x84, 0xCD, 0x3B, 0x2F, 0x82, 0x06, 0x80, 0x80, 0x2A, 0x56, 0x82, 0x51, 0x7D, 0xE1, 0x23, 0x32, 0x82, 0x72, 0x7C, 0xC2, 0xBB, 0xD3, 0x82, 0x8C, 0x9A, 0x23, 0xAD, 0x35, 0x81, 0xDA, 0x97, 0x98, 0x9B, 0xDA, 0x81, 0x19, 0x93, 0xB6, 0x86, 0x8D, 0x80, 0xEF, 0x90, 0x28, 0x71, 0x5C, 0x80, 0xDA, 0x8D, 0x05, 0x58, 0x2E, 0x81, 0x1F, 0x88, 0xAC, 0x3A, 0xB8, 0x81, 0xC7, 0x82, 0x59, 0x2A, 0x3F, 0x82, 0x34, 0x7E, 0x99, 0x23, 0x47, 0x82, 0x63, 0x7D, 0x00, 0xB8, 0x6B, 0x82, 0x41, 0xA4, 0x51, 0xAC, 0x71, 0x81, 0x2A, 0xA0, 0xD6, 0x9A, 0x3B, 0x80, 0x95, 0x9C, 0x0F, 0x86, 0x14, 0x80, 0x41, 0x97, 0x5E, 0x6F, 0xD7, 0x80, 0x46, 0x92, 0x75, 0x57, 0x32, 0x80, 0xB4, 0x8C, 0x7F, 0x3A, 0x76, 0x81, 0x94, 0x84, 0x38, 0x2A, 0x38, 0x82, 0x21, 0x7F, 0x45, 0x23, 0x58, 0x82, 0x5E, 0x7D, 0x29, 0xB8, 0x42, 0x81, 0xAA, 0xB0, 0x92, 0xAB, 0x1A, 0x80, 0xB8, 0xAB, 0x22, 0x98, 0x75, 0x80, 0x35, 0xA4, 0xBA, 0x85, 0x38, 0x7F, 0xD6, 0x9F, 0x31, 0x6E, 0x46, 0x7F, 0xE5, 0x98, 0xDE, 0x55, 0xDD, 0x80, 0x57, 0x90, 0xF8, 0x3A, 0x1D, 0x81, 0x61, 0x86, 0x50, 0x2A, 0x2D, 0x82, 0x10, 0x80, 0x02, 0x23, 0x69, 0x82, 0x5C, 0x7D, 0x52, 0xB8, 0x92, 0x81, 0x00, 0xBA, 0x1E, 0xAA, 0x6E, 0x80, 0x44, 0xB4, 0x29, 0x98, 0x12, 0x7F, 0xBD, 0xAD, 0x0F, 0x84, 0x39, 0x7F, 0x67, 0xA6, 0x36, 0x6D, 0x9E, 0x7F, 0x79, 0x9E, 0x6D, 0x55, 0x52, 0x80, 0x02, 0x94, 0xE7, 0x39, 0xDA, 0x81, 0x32, 0x88, 0x4E, 0x2A, 0x25, 0x82, 0x00, 0x80, 0xBE, 0x23, 0x7A, 0x82, 0x5A, 0x7D, 0x83, 0xB6, 0x35, 0x81, 0x5A, 0xC1, 0xC0, 0xAA, 0x67, 0x7F, 0xDF, 0xBC, 0x0E, 0x97, 0x53, 0x7F, 0x8E, 0xB4, 0xBB, 0x83, 0xEE, 0x7F, 0x2A, 0xAC, 0xF5, 0x6D, 0x27, 0x7F, 0x45, 0xA3, 0x69, 0x54, 0xEB, 0x7F, 0xC3, 0x98, 0x6A, 0x39, 0xE2, 0x81, 0x0C, 0x8A, 0x40, 0x2A, 0x35, 0x81, 0xF2, 0x81, 0x78, 0x23, 0x91, 0x82, 0x58, 0x7D, 0xB7, 0xB3, 0xD3, 0x91, 0xCA, 0x71, 0xA7, 0xA8, 0x7C, 0x8E, 0xD0, 0x72, 0xCE, 0x97, 0xD8, 0x8C, 0x2D, 0x74, 0x6C, 0x85, 0x42, 0x89, 0xF4, 0x76, 0x70, 0x6F, 0x5B, 0x88, 0x59, 0x78, 0xBB, 0x55, 0x5B, 0x86, 0x78, 0x7A, 0x6D, 0x39, 0x85, 0x84, 0xF6, 0x7A, 0xCB, 0x29, 0xCD, 0x84, 0x52, 0x7A, 0xB0, 0x23, 0x23, 0x84, 0x0F, 0x7A, 0xA0, 0xB4, 0x33, 0x8F, 0x7A, 0x78, 0xD2, 0xA7, 0x0E, 0x8D, 0x9E, 0x7A, 0x28, 0x94, 0xBF, 0x8B, 0x1D, 0x7B, 0x4A, 0x81, 0xDD, 0x88, 0xF0, 0x7B, 0xB5, 0x6D, 0x8A, 0x87, 0x74, 0x7C, 0x62, 0x55, 0xCB, 0x86, 0x07, 0x7C, 0xBC, 0x39, 0x9A, 0x84, 0xAD, 0x7C, 0x32, 0x29, 0x90, 0x84, 0x03, 0x7B, 0x93, 0x22, 0xC7, 0x83, 0xBE, 0x7B, 0x49, 0xB0, 0xEA, 0x8E, 0x0C, 0x82, 0xD1, 0xA4, 0x95, 0x8B, 0xB4, 0x83, 0x2F, 0x93, 0xB4, 0x89, 0xA5, 0x82, 0xDC, 0x80, 0x8D, 0x88, 0x1A, 0x82, 0x14, 0x6C, 0x66, 0x86, 0xC4, 0x81, 0x21, 0x55, 0x0B, 0x85, 0x8A, 0x80, 0x00, 0x39, 0x6B, 0x84, 0x5B, 0x7D, 0xEF, 0x29, 0x5E, 0x83, 0xBD, 0x7C, 0x7C, 0x22, 0x8E, 0x83, 0x7C, 0x7B, 0xD9, 0xAF, 0xA8, 0x8D, 0x2F, 0x8D, 0x2B, 0xA2, 0x46, 0x8A, 0xCE, 0x8B, 0xD9, 0x92, 0x1E, 0x88, 0xAD, 0x8A, 0x22, 0x80, 0x03, 0x87, 0x35, 0x88, 0x24, 0x6B, 0x8E, 0x86, 0x14, 0x86, 0x42, 0x54, 0x11, 0x85, 0x05, 0x83, 0xC7, 0x39, 0x29, 0x84, 0x15, 0x7F, 0xBF, 0x29, 0x4D, 0x83, 0x96, 0x7D, 0x3D, 0x22, 0x8B, 0x83, 0x60, 0x7C, 0x2B, 0xAE, 0x2E, 0x8C, 0x2F, 0x96, 0x9C, 0xA1, 0x6A, 0x8A, 0x3A, 0x94, 0x60, 0x91, 0x4D, 0x88, 0x06, 0x91, 0x3A, 0x7E, 0xB3, 0x86, 0x99, 0x8E, 0x4C, 0x6A, 0x43, 0x85, 0x64, 0x8B, 0x75, 0x53, 0x07, 0x84, 0x92, 0x87, 0x70, 0x38, 0x93, 0x83, 0xEB, 0x81, 0x6B, 0x29, 0x39, 0x83, 0x89, 0x7D, 0xD4, 0x22, 0xA1, 0x83, 0x5A, 0x7C, 0x50, 0xAC, 0x4A, 0x8B, 0x8C, 0x9F, 0x71, 0xA0, 0xA1, 0x89, 0x7B, 0x9C, 0xAE, 0x8F, 0xB1, 0x87, 0x84, 0x99, 0x01, 0x7D, 0x26, 0x86, 0x25, 0x94, 0xDC, 0x68, 0x81, 0x85, 0x0A, 0x90, 0x81, 0x51, 0xD4, 0x84, 0x47, 0x8B, 0x01, 0x37, 0xF5, 0x83, 0xBE, 0x83, 0x1D, 0x29, 0x00, 0x83, 0x75, 0x7E, 0x67, 0x22, 0x97, 0x83, 0x53, 0x7C, 0x68, 0xAA, 0xFD, 0x8B, 0x57, 0xAA, 0x4C, 0x9F, 0x59, 0x89, 0x14, 0xA6, 0x53, 0x8F, 0x04, 0x86, 0xEF, 0xA1, 0x5E, 0x7C, 0xD1, 0x85, 0x8D, 0x9C, 0x32, 0x67, 0x4C, 0x84, 0xA6, 0x96, 0x4C, 0x50, 0xEE, 0x83, 0xF7, 0x8E, 0xF7, 0x37, 0x74, 0x83, 0x83, 0x85, 0x03, 0x28, 0xB6, 0x83, 0x54, 0x7F, 0x0F, 0x22, 0x6F, 0x83, 0x40, 0x7C, 0x85, 0xAB, 0x0D, 0x8A, 0xE5, 0xB3, 0xF6, 0x9E, 0xEA, 0x88, 0xDB, 0xAF, 0x43, 0x8E, 0x6E, 0x86, 0x9C, 0xA9, 0x0D, 0x7C, 0x51, 0x85, 0x02, 0xA2, 0xC7, 0x66, 0xFF, 0x84, 0x2E, 0x9B, 0x9B, 0x50, 0x8F, 0x83, 0x9E, 0x92, 0x9B, 0x37, 0x25, 0x83, 0x4E, 0x86, 0xC2, 0x28, 0x8C, 0x83, 0x36, 0x7F, 0xAE, 0x22, 0x59, 0x83, 0x2E, 0x7C, 0xA8, 0xAA, 0x39, 0x8A, 0x6C, 0xBC, 0x46, 0x9E, 0xCA, 0x88, 0x6E, 0xB6, 0xDE, 0x8C, 0x8A, 0x86, 0xA1, 0xB0, 0x09, 0x7A, 0xA1, 0x85, 0x06, 0xA8, 0xB1, 0x65, 0xDD, 0x84, 0x0A, 0x9F, 0xC2, 0x4F, 0xDD, 0x83, 0x5E, 0x95, 0x92, 0x37, 0x0F, 0x83, 0x22, 0x88, 0x58, 0x28, 0x88, 0x83, 0x1C, 0x80, 0x45, 0x22, 0x58, 0x83, 0x1D, 0x7C, 0xD0, 0xA6, 0xA2, 0x99, 0x83, 0x71, 0xBB, 0x9C, 0x83, 0x95, 0xF1, 0x72, 0xBE, 0x8B, 0x87, 0x92, 0x8F, 0x74, 0xCA, 0x7B, 0x34, 0x8F, 0x4E, 0x76, 0x86, 0x67, 0x6B, 0x8C, 0x84, 0x78, 0x66, 0x51, 0x72, 0x89, 0xB8, 0x79, 0x7E, 0x37, 0xF4, 0x87, 0x07, 0x7A, 0x40, 0x28, 0xB8, 0x85, 0x6A, 0x7A, 0x70, 0x22, 0x4A, 0x84, 0xB9, 0x7A, 0x7F, 0xA6, 0x66, 0x97, 0xE2, 0x78, 0xE7, 0x9A, 0xA5, 0x94, 0xD1, 0x79, 0x69, 0x89, 0x6E, 0x91, 0xA7, 0x7A, 0x1E, 0x78, 0xB5, 0x8E, 0xBC, 0x7B, 0x2C, 0x65, 0xCD, 0x8C, 0x1F, 0x7B, 0xC1, 0x50, 0x6A, 0x89, 0x72, 0x7B, 0xF0, 0x37, 0x09, 0x86, 0xB3, 0x7B, 0x92, 0x28, 0x4B, 0x85, 0x21, 0x7B, 0x28, 0x22, 0x07, 0x84, 0x76, 0x7A, 0xF6, 0xA4, 0xC5, 0x96, 0xB8, 0x81, 0x7C, 0x99, 0x98, 0x93, 0x4E, 0x81, 0x7E, 0x88, 0xA5, 0x90, 0x6A, 0x80, 0xEF, 0x77, 0xAD, 0x8D, 0xE3, 0x80, 0xF0, 0x64, 0xE3, 0x8B, 0x81, 0x80, 0x1A, 0x4F, 0xFC, 0x89, 0x0F, 0x7F, 0x10, 0x36, 0xEE, 0x86, 0x63, 0x7D, 0x2E, 0x28, 0x1D, 0x84, 0xE1, 0x7B, 0xED, 0x21, 0xCE, 0x84, 0x3E, 0x7B, 0x62, 0xA2, 0x6A, 0x95, 0xFD, 0x8A, 0x73, 0x97, 0xC7, 0x92, 0x86, 0x89, 0x6A, 0x87, 0xFE, 0x8F, 0x3A, 0x87, 0xFA, 0x76, 0xF0, 0x8C, 0xE3, 0x86, 0x9E, 0x64, 0x4B, 0x8A, 0xCC, 0x84, 0xDC, 0x50, 0x5F, 0x88, 0x8E, 0x82, 0x88, 0x37, 0x83, 0x86, 0x1E, 0x7E, 0xE2, 0x28, 0x35, 0x84, 0xBE, 0x7C, 0x96, 0x21, 0xBF, 0x84, 0x25, 0x7B, 0x9E, 0xA1, 0x28, 0x95, 0x10, 0x93, 0x3D, 0x96, 0x88, 0x91, 0xF6, 0x91, 0x1B, 0x86, 0xD6, 0x8E, 0xCB, 0x8E, 0xB5, 0x76, 0x94, 0x8C, 0x43, 0x8C, 0x13, 0x63, 0x96, 0x8A, 0x28, 0x89, 0x87, 0x4E, 0xD0, 0x88, 0x35, 0x85, 0xE7, 0x36, 0xAF, 0x86, 0x02, 0x80, 0x68, 0x28, 0x30, 0x84, 0xB9, 0x7D, 0x16, 0x21, 0xDB, 0x84, 0x21, 0x7B, 0xB4, 0xA0, 0x34, 0x94, 0x50, 0x9B, 0xEC, 0x95, 0x72, 0x91, 0x43, 0x99, 0x2A, 0x85, 0x2C, 0x8E, 0x85, 0x95, 0xED, 0x74, 0xC9, 0x8C, 0x15, 0x92, 0x74, 0x62, 0x0A, 0x89, 0xFA, 0x8E, 0x8B, 0x4D, 0x6D, 0x87, 0xFB, 0x89, 0x75, 0x35, 0xB9, 0x85, 0xD1, 0x81, 0xFF, 0x27, 0xCF, 0x84, 0x9F, 0x7D, 0x98, 0x21, 0xBF, 0x84, 0x15, 0x7B, 0xBE, 0x9F, 0x05, 0x93, 0xEC, 0xA6, 0x38, 0x94, 0xDB, 0x90, 0xB1, 0xA2, 0x26, 0x84, 0x24, 0x8D, 0x8B, 0x9E, 0x3D, 0x73, 0xD4, 0x8B, 0x6B, 0x99, 0xC5, 0x61, 0x1E, 0x89, 0x8C, 0x94, 0x0A, 0x4D, 0x0B, 0x87, 0x93, 0x8D, 0x2A, 0x35, 0x24, 0x85, 0x86, 0x83, 0xC0, 0x27, 0x4E, 0x84, 0x71, 0x7E, 0x2B, 0x21, 0x6E, 0x83, 0xFC, 0x7B, 0xCD, 0x9E, 0x8B, 0x93, 0xB8, 0xAE, 0xD0, 0x94, 0xBB, 0x90, 0x6D, 0xAA, 0x9E, 0x84, 0xB6, 0x8D, 0x10, 0xA5, 0x82, 0x73, 0xBD, 0x8A, 0xBA, 0x9F, 0xC2, 0x60, 0x9F, 0x88, 0xFE, 0x98, 0xD9, 0x4C, 0x69, 0x87, 0x3F, 0x90, 0x56, 0x34, 0xA7, 0x85, 0x5D, 0x85, 0x39, 0x27, 0x0C, 0x84, 0x56, 0x7E, 0xA9, 0x21, 0x4A, 0x83, 0xE7, 0x7B, 0xDE, 0x9E, 0xC3, 0x92, 0xB2, 0xB6, 0xC3, 0x92, 0xA7, 0x8F, 0xF5, 0xB2, 0x0B, 0x82, 0xEB, 0x8D, 0x30, 0xAC, 0x19, 0x72, 0x2E, 0x8A, 0xBD, 0xA5, 0x08, 0x5F, 0xA2, 0x88, 0xB7, 0x9C, 0x98, 0x4B, 0x5D, 0x87, 0x09, 0x92, 0xD7, 0x34, 0x3C, 0x85, 0x45, 0x86, 0x6F, 0x26, 0xF0, 0x84, 0x42, 0x7F, 0x18, 0x21, 0x4A, 0x83, 0xD4, 0x7B, 0xF6, 0x9B, 0x0A, 0xA1, 0xFA, 0x71, 0xDC, 0x8F, 0x8B, 0x9E, 0x04, 0x73, 0x00, 0x80, 0x32, 0x99, 0xA7, 0x74, 0xD9, 0x70, 0x39, 0x95, 0x93, 0x76, 0x58, 0x5E, 0x4C, 0x91, 0xB0, 0x77, 0xAF, 0x4A, 0x7B, 0x8D, 0xA4, 0x78, 0xC6, 0x35, 0x66, 0x89, 0x68, 0x79, 0xB6, 0x27, 0x2C, 0x86, 0x9C, 0x7A, 0x16, 0x21, 0x35, 0x85, 0x69, 0x7A, 0x3F, 0x99, 0x19, 0xA0, 0xC6, 0x77, 0xB6, 0x8E, 0x18, 0x9D, 0x04, 0x78, 0xE3, 0x7F, 0x42, 0x98, 0xEE, 0x79, 0x75, 0x6E, 0xF7, 0x95, 0x1B, 0x7A, 0x5D, 0x5D, 0x7F, 0x91, 0x5D, 0x7A, 0xD8, 0x4A, 0x4C, 0x8D, 0x6C, 0x7B, 0x03, 0x33, 0xF6, 0x88, 0xFC, 0x7A, 0xD8, 0x26, 0xA5, 0x86, 0x54, 0x7A, 0xA7, 0x20, 0xF5, 0x85, 0x31, 0x7A, 0x91, 0x99, 0x24, 0x9F, 0xDA, 0x7F, 0x65, 0x8E, 0xB4, 0x9B, 0xBA, 0x7F, 0x74, 0x7F, 0x23, 0x97, 0xD4, 0x7F, 0x35, 0x6E, 0x11, 0x94, 0x5B, 0x7F, 0x78, 0x5C, 0x5F, 0x90, 0xEA, 0x7E, 0xDE, 0x49, 0xC7, 0x8D, 0x1F, 0x7D, 0xE8, 0x33, 0xCF, 0x88, 0xAF, 0x7C, 0x45, 0x26, 0x72, 0x86, 0x16, 0x7B, 0x49, 0x20, 0xB7, 0x84, 0xFB, 0x7A, 0xDE, 0x97, 0xB0, 0x9F, 0x2B, 0x87, 0xED, 0x8D, 0x85, 0x9A, 0xDD, 0x86, 0x98, 0x7E, 0xA6, 0x96, 0xA7, 0x85, 0x8F, 0x6D, 0xDF, 0x93, 0x6E, 0x84, 0xD4, 0x5C, 0xB9, 0x90, 0x3C, 0x82, 0xD6, 0x4A, 0x07, 0x8C, 0xC3, 0x80, 0xDC, 0x33, 0xEB, 0x88, 0x72, 0x7D, 0xC3, 0x26, 0x68, 0x85, 0xED, 0x7B, 0xDD, 0x20, 0x9F, 0x84, 0xDB, 0x7B, 0x0D, 0x95, 0x8D, 0x9E, 0x7E, 0x90, 0x1F, 0x8B, 0x3F, 0x9A, 0x3D, 0x8D, 0xDE, 0x7C, 0xE2, 0x96, 0x60, 0x8C, 0x09, 0x6D, 0x84, 0x92, 0xFD, 0x89, 0xB1, 0x5C, 0x4B, 0x8F, 0xB0, 0x86, 0xF9, 0x49, 0x0B, 0x8C, 0x5F, 0x83, 0xEA, 0x33, 0x4C, 0x88, 0x3C, 0x7F, 0x36, 0x26, 0x3C, 0x85, 0xD3, 0x7C, 0x57, 0x20, 0x9E, 0x84, 0xCB, 0x7B, 0x1D, 0x95, 0xF1, 0x9D, 0xA3, 0x98, 0x42, 0x8A, 0xD6, 0x99, 0xA2, 0x95, 0xBB, 0x79, 0xF9, 0x95, 0xD4, 0x93, 0x1B, 0x6A, 0xFA, 0x92, 0xB1, 0x8F, 0xA1, 0x5A, 0xF5, 0x8F, 0x66, 0x8B, 0xDB, 0x48, 0x71, 0x8B, 0xFC, 0x87, 0x49, 0x32, 0xB3, 0x87, 0xF9, 0x80, 0xBB, 0x25, 0xF1, 0x85, 0xB4, 0x7C, 0xC9, 0x20, 0x7B, 0x84, 0xBD, 0x7B, 0x1B, 0x93, 0xFF, 0x9D, 0x39, 0xA2, 0x03, 0x89, 0xBF, 0x99, 0x39, 0x9E, 0xCC, 0x78, 0x92, 0x95, 0x2A, 0x9B, 0x04, 0x69, 0x55, 0x92, 0x14, 0x96, 0x9A, 0x5A, 0x27, 0x8E, 0xF5, 0x91, 0x3A, 0x48, 0xC6, 0x8B, 0x79, 0x8A, 0xF0, 0x32, 0x89, 0x87, 0xA7, 0x82, 0x5A, 0x25, 0xA8, 0x85, 0x8F, 0x7D, 0x3F, 0x20, 0x3C, 0x84, 0xAB, 0x7B, 0x15, 0x92, 0x09, 0x9D, 0x3E, 0xA9, 0xC8, 0x89, 0xDD, 0x98, 0xE1, 0xA6, 0x80, 0x79, 0xF2, 0x94, 0xC0, 0xA2, 0x26, 0x69, 0xC3, 0x91, 0x84, 0x9C, 0x88, 0x59, 0x66, 0x8E, 0x83, 0x95, 0xB0, 0x47, 0xB0, 0x8B, 0x4C, 0x8D, 0xC8, 0x31, 0xF3, 0x87, 0x94, 0x83, 0x97, 0x25, 0x79, 0x85, 0x7C, 0x7D, 0x9E, 0x20, 0x35, 0x84, 0x9A, 0x7B, 0x15, 0x90, 0x73, 0x9C, 0x69, 0xB1, 0x2E, 0x87, 0x9C, 0x98, 0x52, 0xAD, 0x8B, 0x7A, 0x2F, 0x94, 0x82, 0xA8, 0x30, 0x6A, 0xA8, 0x91, 0x43, 0xA1, 0x47, 0x58, 0xE8, 0x8E, 0x32, 0x99, 0x6D, 0x46, 0x26, 0x8B, 0x3B, 0x90, 0x07, 0x31, 0x32, 0x87, 0x9E, 0x84, 0x8C, 0x25, 0x5C, 0x85, 0x76, 0x7D, 0xEB, 0x20, 0x56, 0x84, 0x8B, 0x7B, 0x1C, 0x8B, 0x6A, 0xAD, 0x33, 0x71, 0xF2, 0x80, 0x13, 0xA8, 0x62, 0x72, 0x84, 0x73, 0x3A, 0xA2, 0xB7, 0x74, 0x39, 0x64, 0xF5, 0x9D, 0x7B, 0x75, 0x50, 0x54, 0xCA, 0x98, 0x83, 0x76, 0x77, 0x42, 0xB0, 0x92, 0xC4, 0x77, 0xC7, 0x2F, 0xFA, 0x8B, 0xF8, 0x78, 0xE4, 0x24, 0x98, 0x87, 0xEC, 0x79, 0x8A, 0x1F, 0xB0, 0x86, 0x31, 0x79, 0xD2, 0x8A, 0x72, 0xAC, 0x5F, 0x77, 0x1C, 0x80, 0x61, 0xA7, 0x76, 0x78, 0x1E, 0x73, 0x48, 0xA1, 0xDE, 0x78, 0x6F, 0x64, 0xEB, 0x9C, 0xB8, 0x78, 0xF4, 0x55, 0x36, 0x97, 0xBF, 0x79, 0x82, 0x43, 0xDD, 0x92, 0x51, 0x79, 0xD5, 0x2F, 0xF3, 0x8B, 0x9A, 0x79, 0xF4, 0x24, 0x4A, 0x87, 0xAC, 0x7A, 0x03, 0x1F, 0x4F, 0x86, 0x00, 0x7A, 0x09, 0x89, 0xBC, 0xAB, 0x6B, 0x7D, 0xD7, 0x80, 0x24, 0xA6, 0x18, 0x7D, 0xD9, 0x72, 0xE8, 0xA0, 0x98, 0x7D, 0x6F, 0x64, 0xAE, 0x9B, 0xE4, 0x7D, 0x66, 0x54, 0x3B, 0x97, 0x5D, 0x7D, 0x3D, 0x43, 0xBB, 0x91, 0xFF, 0x7C, 0x7A, 0x2F, 0xF1, 0x8B, 0x48, 0x7B, 0x3E, 0x24, 0x14, 0x87, 0x6D, 0x7A, 0x8A, 0x1F, 0x01, 0x85, 0xCC, 0x7A, 0x3E, 0x88, 0x39, 0xAA, 0x15, 0x85, 0xA0, 0x7E, 0x10, 0xA5, 0x2E, 0x84, 0xA0, 0x72, 0x33, 0x9F, 0xB6, 0x83, 0x5D, 0x64, 0xC5, 0x9B, 0x2B, 0x82, 0x1E, 0x54, 0x1F, 0x96, 0xB5, 0x80, 0xE1, 0x43, 0x09, 0x91, 0x8E, 0x7F, 0x29, 0x2F, 0x90, 0x8A, 0xFF, 0x7C, 0x94, 0x23, 0xE1, 0x87, 0x3A, 0x7B, 0x09, 0x1E, 0xDE, 0x85, 0xA3, 0x7A, 0x60, 0x87, 0x3E, 0xA9, 0x1F, 0x8D, 0x41, 0x7D, 0x34, 0xA4, 0x52, 0x8B, 0x32, 0x70, 0x36, 0x9F, 0x5E, 0x89, 0x36, 0x63, 0x07, 0x9A, 0xC5, 0x87, 0x1C, 0x53, 0xE8, 0x95, 0xFB, 0x84, 0x85, 0x42, 0x45, 0x91, 0x0E, 0x81, 0xCC, 0x2E, 0xFD, 0x8A, 0xB8, 0x7D, 0xE0, 0x23, 0xAA, 0x87, 0x11, 0x7B, 0x76, 0x1E, 0xD0, 0x85, 0x86, 0x7A, 0x6D, 0x87, 0x9D, 0xA8, 0x40, 0x94, 0x73, 0x7D, 0x4D, 0xA3, 0xBE, 0x92, 0x42, 0x6E, 0xD0, 0x9E, 0xDC, 0x8F, 0x79, 0x61, 0xD2, 0x9A, 0x54, 0x8C, 0x3F, 0x53, 0x3E, 0x95, 0x7F, 0x88, 0x9A, 0x41, 0xA8, 0x90, 0xAF, 0x84, 0xB5, 0x2E, 0xAB, 0x8A, 0x72, 0x7F, 0x39, 0x23, 0x87, 0x86, 0xEB, 0x7B, 0xD9, 0x1E, 0xC5, 0x85, 0x70, 0x7A, 0x66, 0x85, 0xAE, 0xA8, 0x0D, 0x9D, 0x26, 0x7B, 0x58, 0xA3, 0x47, 0x9A, 0xFB, 0x6D, 0x70, 0x9E, 0x59, 0x96, 0xB0, 0x60, 0x61, 0x99, 0xDE, 0x92, 0x7A, 0x52, 0x6F, 0x95, 0x1E, 0x8D, 0xC5, 0x42, 0x80, 0x90, 0x1B, 0x88, 0x25, 0x2E, 0xD6, 0x8A, 0x27, 0x80, 0xAB, 0x23, 0x8C, 0x86, 0xCA, 0x7C, 0x38, 0x1E, 0xC6, 0x85, 0x5F, 0x7A, 0x53, 0x84, 0x17, 0xA8, 0x0D, 0xA4, 0xCD, 0x7B, 0x1E, 0xA3, 0x30, 0xA1, 0xCC, 0x6D, 0x60, 0x9D, 0xF2, 0x9D, 0x32, 0x5F, 0x7F, 0x99, 0x59, 0x98, 0x07, 0x51, 0x71, 0x94, 0xCE, 0x92, 0x0C, 0x41, 0xD2, 0x8F, 0xE7, 0x8A, 0xDF, 0x2E, 0xB7, 0x8A, 0x0E, 0x81, 0xCC, 0x23, 0xB1, 0x86, 0xBB, 0x7C, 0x84, 0x1F, 0x05, 0x85, 0x54, 0x7A, 0x46, 0x82, 0xA7, 0xA7, 0xB5, 0xAB, 0xB4, 0x79, 0x0D, 0xA3, 0x2F, 0xA7, 0xEC, 0x6D, 0x64, 0x9D, 0x9C, 0xA2, 0xEC, 0x5F, 0xEF, 0x99, 0x07, 0x9C, 0xB1, 0x50, 0x21, 0x94, 0xE1, 0x95, 0xA2, 0x3F, 0x9D, 0x8F, 0xF0, 0x8C, 0xBC, 0x2E, 0x52, 0x8A, 0x18, 0x82, 0xA2, 0x23, 0xE3, 0x86, 0xB9, 0x7C, 0xC1, 0x1F, 0x6A, 0x85, 0x4C, 0x7A, 0x42, 0x7A, 0x5F, 0xB8, 0xCB, 0x71, 0x2A, 0x6F, 0xD5, 0xB3, 0x9F, 0x72, 0x11, 0x66, 0x40, 0xAC, 0x79, 0x73, 0xA1, 0x5B, 0xB0, 0xA5, 0xEF, 0x73, 0x84, 0x4C, 0x97, 0xA0, 0x2A, 0x74, 0x9B, 0x3C, 0xBC, 0x98, 0xA6, 0x76, 0x4E, 0x2B, 0x38, 0x8F, 0x04, 0x77, 0xDD, 0x21, 0x56, 0x89, 0x83, 0x78, 0xCB, 0x1D, 0x27, 0x87, 0x2F, 0x79, 0x32, 0x7A, 0x3C, 0xB7, 0xCB, 0x76, 0x99, 0x71, 0x78, 0xB2, 0xF1, 0x76, 0xD6, 0x65, 0xDB, 0xAC, 0x19, 0x76, 0xE0, 0x59, 0xFA, 0xA5, 0x8A, 0x77, 0x30, 0x4C, 0x3B, 0x9F, 0x20, 0x77, 0xC1, 0x3D, 0x20, 0x97, 0xE1, 0x78, 0x4E, 0x2B, 0x48, 0x8E, 0xA8, 0x78, 0xDA, 0x21, 0x11, 0x89, 0x4D, 0x79, 0x2D, 0x1C, 0xBD, 0x87, 0x08, 0x79, 0x50, 0x78, 0xEC, 0xB6, 0xAD, 0x7D, 0x1A, 0x70, 0xA8, 0xB1, 0xED, 0x7C, 0x7E, 0x64, 0x81, 0xAB, 0x27, 0x7B, 0xAF, 0x58, 0xA3, 0xA4, 0xD0, 0x7B, 0x71, 0x4B, 0x03, 0x9E, 0x90, 0x7B, 0x50, 0x3C, 0xAE, 0x97, 0x58, 0x7A, 0xD4, 0x2B, 0x1A, 0x8E, 0x47, 0x7A, 0x0C, 0x20, 0xC2, 0x89, 0x10, 0x79, 0x9A, 0x1C, 0x5C, 0x86, 0xDB, 0x79, 0x6B, 0x78, 0xDD, 0xB5, 0x16, 0x83, 0xFB, 0x6F, 0x83, 0xB0, 0x40, 0x82, 0x9E, 0x63, 0x7A, 0xAA, 0x25, 0x81, 0x3B, 0x57, 0x7F, 0xA4, 0x24, 0x80, 0x07, 0x4A, 0x52, 0x9D, 0xDF, 0x7E, 0xE1, 0x3B, 0xE2, 0x96, 0xC3, 0x7D, 0x54, 0x2A, 0x97, 0x8D, 0xEA, 0x7B, 0x3D, 0x20, 0x77, 0x88, 0xD5, 0x7A, 0x02, 0x1C, 0x27, 0x86, 0xAF, 0x79, 0x7B, 0x77, 0xFB, 0xB4, 0xA9, 0x8A, 0x4F, 0x6E, 0x72, 0xAF, 0x70, 0x88, 0x89, 0x63, 0x55, 0xA9, 0x41, 0x86, 0xBA, 0x57, 0x7B, 0xA3, 0x75, 0x84, 0xDD, 0x4A, 0x60, 0x9D, 0x0B, 0x82, 0x4E, 0x3A, 0xCB, 0x96, 0x45, 0x7F, 0x8B, 0x2A, 0x06, 0x8D, 0x9E, 0x7C, 0x55, 0x20, 0x50, 0x88, 0xA0, 0x7A, 0x5A, 0x1C, 0x2B, 0x86, 0x84, 0x79, 0x7F, 0x78, 0x87, 0xB3, 0xEC, 0x91, 0x12, 0x6F, 0x45, 0xAE, 0xC6, 0x8F, 0x1F, 0x63, 0x3C, 0xA8, 0x8C, 0x8C, 0x6C, 0x57, 0x99, 0xA2, 0xA9, 0x89, 0x69, 0x4A, 0x5B, 0x9C, 0x62, 0x85, 0xD6, 0x39, 0x9E, 0x95, 0xFD, 0x81, 0xDB, 0x29, 0xCB, 0x8D, 0x5E, 0x7D, 0x72, 0x20, 0x6B, 0x88, 0x70, 0x7A, 0xAB, 0x1C, 0x62, 0x86, 0x5C, 0x79, 0x77, 0x77, 0x16, 0xB4, 0x25, 0x99, 0x06, 0x6D, 0xD1, 0xAE, 0xDA, 0x96, 0x74, 0x62, 0x05, 0xA8, 0x24, 0x92, 0x85, 0x56, 0x89, 0xA2, 0x35, 0x8E, 0xA8, 0x4A, 0x21, 0x9B, 0xEB, 0x8A, 0x40, 0x3B, 0x62, 0x95, 0x52, 0x85, 0x26, 0x2A, 0x6D, 0x8D, 0x10, 0x7E, 0xC1, 0x20, 0xD9, 0x88, 0x47, 0x7A, 0xFE, 0x1C, 0xCC, 0x86, 0x40, 0x79, 0x63, 0x76, 0xCE, 0xB3, 0x60, 0xA0, 0x59, 0x6D, 0x62, 0xAE, 0x2A, 0x9C, 0xEE, 0x60, 0xFB, 0xA7, 0xE8, 0x98, 0x10, 0x55, 0x99, 0xA1, 0xD6, 0x93, 0x5A, 0x49, 0x8B, 0x9B, 0xB2, 0x8E, 0x0F, 0x3B, 0xA9, 0x95, 0x06, 0x87, 0xBB, 0x2A, 0xFC, 0x8C, 0xDE, 0x7F, 0xD3, 0x21, 0x7F, 0x88, 0x2E, 0x7B, 0x47, 0x1D, 0x7C, 0x86, 0x32, 0x79, 0x5A, 0x76, 0x16, 0xB3, 0x8F, 0xA6, 0xAE, 0x6D, 0x26, 0xAD, 0xAA, 0xA2, 0x94, 0x5F, 0xD9, 0xA7, 0xCF, 0x9C, 0xDC, 0x54, 0x31, 0xA1, 0xE9, 0x97, 0x46, 0x48, 0x3D, 0x9C, 0x10, 0x91, 0x58, 0x3A, 0x88, 0x95, 0x11, 0x89, 0xAD, 0x2B, 0x3B, 0x8C, 0xBE, 0x80, 0xA1, 0x22, 0x2E, 0x88, 0x1E, 0x7B, 0x84, 0x1E, 0x4D, 0x86, 0x2C, 0x79, 0x5B, 0x70, 0xB0, 0xC1, 0x14, 0x72, 0x0E, 0x68, 0xFA, 0xBC, 0x69, 0x71, 0xE5, 0x5C, 0x0F, 0xB5, 0x0D, 0x72, 0x06, 0x51, 0xA9, 0xAE, 0x16, 0x72, 0x2B, 0x45, 0xF8, 0xA6, 0x6A, 0x73, 0x53, 0x38, 0x2E, 0x9C, 0xD1, 0x74, 0xDA, 0x27, 0x33, 0x91, 0xC9, 0x76, 0xC5, 0x1E, 0x0A, 0x8B, 0x29, 0x77, 0xFC, 0x1A, 0x3F, 0x88, 0x4C, 0x78, 0x84, 0x70, 0x2A, 0xC0, 0xAF, 0x76, 0x75, 0x68, 0x6D, 0xBB, 0x88, 0x76, 0x33, 0x5C, 0x3A, 0xB4, 0x8A, 0x75, 0xCF, 0x50, 0xBA, 0xAD, 0x8D, 0x75, 0xAF, 0x44, 0x8C, 0xA5, 0xDE, 0x76, 0x16, 0x37, 0x23, 0x9C, 0xDB, 0x76, 0xCE, 0x26, 0xD5, 0x91, 0x97, 0x77, 0xBA, 0x1D, 0xAA, 0x8A, 0xF9, 0x78, 0x4A, 0x19, 0xD0, 0x88, 0x28, 0x78, 0x88, 0x6E, 0xBA, 0xBE, 0xF4, 0x7B, 0xCA, 0x66, 0xE8, 0xB9, 0xC5, 0x7B, 0x10, 0x5C, 0x12, 0xB3, 0x1A, 0x7A, 0x83, 0x50, 0xD9, 0xAC, 0x6D, 0x79, 0x98, 0x43, 0xDA, 0xA4, 0xFD, 0x79, 0x59, 0x36, 0x38, 0x9C, 0x45, 0x79, 0x36, 0x26, 0x4F, 0x91, 0x38, 0x78, 0xD8, 0x1D, 0x2E, 0x8A, 0xC3, 0x78, 0xA0, 0x19, 0x51, 0x88, 0x04, 0x78, 0x89, 0x70, 0x42, 0xBD, 0xBF, 0x81, 0xCC, 0x67, 0x29, 0xB8, 0x50, 0x80, 0x74, 0x5B, 0x89, 0xB2, 0x14, 0x7F, 0x3A, 0x4F, 0xFC, 0xAB, 0x61, 0x7D, 0xDA, 0x43, 0x45, 0xA3, 0xFF, 0x7C, 0xCD, 0x35, 0xAE, 0x9B, 0x62, 0x7B, 0xA7, 0x25, 0xD1, 0x90, 0xC2, 0x79, 0xF2, 0x1C, 0xD0, 0x8A, 0x84, 0x78, 0xF1, 0x19, 0x01, 0x87, 0xDB, 0x78, 0x82, 0x71, 0xA7, 0xBD, 0x14, 0x87, 0xF2, 0x67, 0xF2, 0xB7, 0x5D, 0x86, 0x16, 0x5B, 0xD2, 0xB1, 0x0E, 0x83, 0xF0, 0x4F, 0x10, 0xAA, 0x9B, 0x82, 0x3F, 0x42, 0x71, 0xA3, 0x5E, 0x80, 0x5C, 0x35, 0x2F, 0x9A, 0xDD, 0x7D, 0xEF, 0x25, 0x80, 0x90, 0x66, 0x7A, 0xF0, 0x1C, 0xCB, 0x8A, 0x43, 0x79, 0x33, 0x19, 0x22, 0x87, 0xA6, 0x78, 0x76, 0x6F, 0x87, 0xBC, 0x5F, 0x8E, 0xCF, 0x67, 0xAC, 0xB6, 0xC9, 0x8C, 0x81, 0x59, 0xEB, 0xAF, 0xFD, 0x89, 0xB6, 0x4E, 0x8C, 0xA9, 0xDB, 0x86, 0xFA, 0x42, 0x3B, 0xA2, 0xD3, 0x83, 0xF5, 0x34, 0x9C, 0x9A, 0x93, 0x80, 0x4E, 0x25, 0x8D, 0x90, 0x27, 0x7B, 0xEC, 0x1D, 0x31, 0x8A, 0x06, 0x79, 0x73, 0x19, 0xAC, 0x87, 0x69, 0x78, 0x68, 0x6D, 0x4A, 0xBB, 0x96, 0x95, 0xFB, 0x65, 0x53, 0xB6, 0x36, 0x93, 0x21, 0x5A, 0x5E, 0xAF, 0x4B, 0x8F, 0x76, 0x4F, 0xBA, 0xA9, 0x20, 0x8B, 0xB1, 0x43, 0x86, 0xA2, 0x24, 0x87, 0x92, 0x35, 0x17, 0x9A, 0x2A, 0x82, 0xD9, 0x26, 0x38, 0x8F, 0xE1, 0x7D, 0x05, 0x1E, 0x0E, 0x89, 0xCB, 0x79, 0xC1, 0x1A, 0xA0, 0x87, 0x35, 0x78, 0x61, 0x6C, 0x10, 0xBB, 0xCA, 0x9C, 0x6F, 0x63, 0xE7, 0xB6, 0x49, 0x99, 0x13, 0x5A, 0x26, 0xAF, 0x6B, 0x94, 0x84, 0x4F, 0xC8, 0xA8, 0xC0, 0x8F, 0xC8, 0x44, 0x2C, 0xA1, 0xA1, 0x8A, 0x98, 0x36, 0x51, 0x99, 0xB9, 0x84, 0xDB, 0x27, 0x54, 0x8F, 0x95, 0x7D, 0xFC, 0x1F, 0x35, 0x89, 0xA1, 0x7A, 0x13, 0x1B, 0xCF, 0x87, 0x1A, 0x78, 0x6C, 0x6A, 0x4A, 0xBD, 0x2C, 0xA2, 0x8C, 0x63, 0x69, 0xB6, 0x49, 0x9E, 0xBB, 0x58, 0xA1, 0xAF, 0x4F, 0x99, 0x40, 0x4E, 0x6D, 0xA8, 0x6B, 0x93, 0x9C, 0x43, 0x88, 0xA1, 0x0A, 0x8D, 0x77, 0x36, 0xA9, 0x99, 0x4A, 0x86, 0x7B, 0x28, 0x5D, 0x8F, 0x4E, 0x7E, 0xC4, 0x20, 0x62, 0x89, 0x83, 0x7A, 0x5E, 0x1D, 0x08, 0x87, 0x0E, 0x78, 0x82, 0xCB, 0xBC, 0x71, 0x69, 0x67, 0x93, 0xBD, 0x23, 0x73, 0xA0, 0x6B, 0x17, 0xA9, 0x44, 0x75, 0xB7, 0x6F, 0x46, 0x91, 0xE0, 0x77, 0x8C, 0x73, 0x74, 0x79, 0xFF, 0x79, 0x92, 0x75, 0xD7, 0x5E, 0xDE, 0x7B, 0xBE, 0x78, 0x13, 0x3E, 0xEF, 0x7E, 0x63, 0x79, 0xCF, 0x2C, 0x4F, 0x7F, 0xFC, 0x7A, 0x8D, 0x24, 0x62, 0x80, 0xAC, 0x7A, 0xD9, 0xCA, 0x13, 0x6D, 0xF0, 0x73, 0xCA, 0xBA, 0x0B, 0x70, 0xFA, 0x75, 0xD4, 0xA5, 0xC2, 0x73, 0xCA, 0x78, 0x06, 0x90, 0xA4, 0x76, 0x57, 0x79, 0x83, 0x78, 0x97, 0x78, 0xB7, 0x7A, 0x90, 0x5C, 0xB2, 0x7B, 0x24, 0x7B, 0x42, 0x3D, 0x9B, 0x7D, 0xF8, 0x7B, 0x76, 0x2B, 0xBF, 0x7F, 0xB8, 0x7B, 0x7E, 0x24, 0x2A, 0x80, 0x79, 0x7B, 0x80, 0xC9, 0x6A, 0x6A, 0xB9, 0x81, 0x6D, 0xB8, 0x43, 0x6E, 0x6F, 0x80, 0xEA, 0xA4, 0x5E, 0x71, 0xCE, 0x80, 0xCA, 0x8F, 0xBA, 0x74, 0xBB, 0x80, 0x46, 0x76, 0x69, 0x77, 0xA4, 0x80, 0x0C, 0x59, 0xA3, 0x7A, 0x7E, 0x7E, 0xF9, 0x3C, 0xDA, 0x7D, 0x78, 0x7D, 0x4B, 0x2B, 0x69, 0x7F, 0x6B, 0x7C, 0x89, 0x24, 0x00, 0x80, 0x42, 0x7C, 0x35, 0xC6, 0x29, 0x69, 0x4F, 0x8E, 0x73, 0xB7, 0x11, 0x6D, 0x03, 0x8C, 0x35, 0xA2, 0xFA, 0x70, 0x60, 0x89, 0x67, 0x8E, 0x5E, 0x73, 0x93, 0x87, 0x7D, 0x74, 0xB4, 0x76, 0x86, 0x85, 0x67, 0x59, 0xA5, 0x79, 0x9D, 0x82, 0xD0, 0x3C, 0x8D, 0x7D, 0x10, 0x7F, 0x72, 0x2B, 0x59, 0x7F, 0x30, 0x7D, 0x96, 0x23, 0xF9, 0x80, 0x19, 0x7C, 0xC7, 0xC3, 0xF6, 0x67, 0xD7, 0x99, 0x7F, 0xB6, 0x24, 0x6B, 0x64, 0x96, 0x23, 0xA0, 0xE7, 0x6F, 0x73, 0x92, 0x1E, 0x8C, 0xE0, 0x72, 0x95, 0x8E, 0x98, 0x73, 0x70, 0x75, 0xA8, 0x8B, 0x23, 0x5A, 0x14, 0x78, 0xF3, 0x87, 0x00, 0x3D, 0x33, 0x7C, 0xC9, 0x81, 0xC2, 0x2B, 0x9F, 0x7F, 0x0C, 0x7E, 0x89, 0x24, 0x0D, 0x80, 0x04, 0x7D, 0x26, 0xC2, 0x3B, 0x67, 0x1B, 0xA4, 0x15, 0xB4, 0x07, 0x6A, 0xAF, 0x9F, 0xCB, 0xA0, 0x8C, 0x6E, 0x58, 0x9A, 0x9D, 0x8B, 0xCD, 0x71, 0x9E, 0x96, 0x0C, 0x72, 0xA6, 0x74, 0xF1, 0x91, 0x8F, 0x57, 0x67, 0x78, 0x7F, 0x8B, 0x64, 0x3D, 0x7E, 0x7C, 0x8A, 0x83, 0xF5, 0x2B, 0xE1, 0x7E, 0xFA, 0x7F, 0x60, 0x24, 0x3E, 0x80, 0x05, 0x7D, 0x67, 0xC2, 0xF4, 0x65, 0x95, 0xAF, 0xBF, 0xB3, 0x5F, 0x69, 0xE8, 0xAA, 0xBD, 0x9F, 0x4C, 0x6D, 0x91, 0xA4, 0x84, 0x89, 0x65, 0x70, 0xFF, 0x9F, 0x04, 0x72, 0x0C, 0x74, 0x36, 0x98, 0xD7, 0x56, 0xDD, 0x77, 0xF5, 0x90, 0xA3, 0x3D, 0x2C, 0x7C, 0x4C, 0x86, 0x64, 0x2B, 0xE7, 0x7E, 0xF7, 0x80, 0x41, 0x24, 0x7E, 0x80, 0x1D, 0x7D, 0xA4, 0xC1, 0x3F, 0x65, 0x7A, 0xBA, 0x49, 0xB2, 0x53, 0x69, 0x28, 0xB4, 0x6E, 0x9E, 0xB6, 0x6C, 0xF0, 0xAD, 0x31, 0x89, 0x55, 0x70, 0x48, 0xA6, 0x43, 0x72, 0x05, 0x73, 0xA0, 0x9E, 0x99, 0x58, 0x33, 0x77, 0x5C, 0x95, 0x08, 0x3C, 0x08, 0x7C, 0x12, 0x88, 0x83, 0x2B, 0xE0, 0x7F, 0x05, 0x81, 0x1C, 0x25, 0x02, 0x80, 0x49, 0x7D, 0xF5, 0xC0, 0x00, 0x65, 0x05, 0xC3, 0xA0, 0xB2, 0x71, 0x68, 0x48, 0xBD, 0x86, 0x9F, 0x61, 0x6C, 0x50, 0xB5, 0x4A, 0x88, 0x7C, 0x6F, 0xC5, 0xAC, 0x98, 0x71, 0xD6, 0x73, 0x44, 0xA3, 0xA7, 0x57, 0x20, 0x77, 0x0F, 0x98, 0x7A, 0x3B, 0xB3, 0x7B, 0xBC, 0x8A, 0x6C, 0x2C, 0x70, 0x7F, 0x1F, 0x81, 0xF1, 0x25, 0xD2, 0x80, 0x86, 0x7E, 0x52, 0xC2, 0x62, 0x79, 0x15, 0x67, 0x12, 0xB4, 0x0F, 0x79, 0xD4, 0x6B, 0x55, 0xA0, 0xAA, 0x7A, 0xC9, 0x6F, 0xE7, 0x8B, 0x39, 0x7B, 0xB2, 0x73, 0x56, 0x75, 0x95, 0x7C, 0xA5, 0x75, 0xD0, 0x59, 0xF4, 0x7D, 0xD6, 0x78, 0x4F, 0x3C, 0xE1, 0x7F, 0xBD, 0x79, 0xB2, 0x2B, 0x88, 0x81, 0x10, 0x7A, 0x1D, 0x24, 0x18, 0x81, 0xA4, 0x7A, 0x46, 0xC0, 0x4C, 0x76, 0x3D, 0x73, 0x6A, 0xB1, 0x76, 0x77, 0xC1, 0x75, 0x0A, 0x9F, 0xAA, 0x79, 0x0C, 0x77, 0x3A, 0x8B, 0xF2, 0x7A, 0x2C, 0x78, 0xCA, 0x74, 0xE5, 0x7B, 0x97, 0x7A, 0x16, 0x5A, 0x17, 0x7D, 0x46, 0x7B, 0x15, 0x3C, 0x14, 0x7F, 0x64, 0x7B, 0x5F, 0x2A, 0xF2, 0x80, 0xB9, 0x7B, 0x3E, 0x23, 0xAF, 0x81, 0x4D, 0x7B, 0x2A, 0xBD, 0xCF, 0x74, 0x03, 0x80, 0x08, 0xAF, 0x62, 0x75, 0xDF, 0x7F, 0x64, 0x9E, 0x29, 0x77, 0x50, 0x7F, 0xD6, 0x89, 0xEE, 0x78, 0xD2, 0x7F, 0xE6, 0x72, 0xB0, 0x7A, 0x84, 0x7F, 0x9B, 0x58, 0x14, 0x7C, 0xA8, 0x7E, 0x9A, 0x3B, 0x40, 0x7E, 0xFD, 0x7D, 0x47, 0x2A, 0x91, 0x80, 0x69, 0x7C, 0x5C, 0x23, 0x77, 0x81, 0x06, 0x7B, 0xF4, 0xBB, 0x78, 0x72, 0x50, 0x8A, 0xF7, 0xAE, 0x8F, 0x74, 0x14, 0x89, 0x4C, 0x9C, 0x4F, 0x75, 0xEB, 0x88, 0x24, 0x87, 0x51, 0x77, 0xDD, 0x86, 0xC3, 0x70, 0x99, 0x79, 0xD2, 0x84, 0xCC, 0x57, 0x15, 0x7C, 0x01, 0x82, 0x75, 0x3A, 0xE9, 0x7E, 0x9C, 0x7F, 0x45, 0x2A, 0x75, 0x80, 0x30, 0x7D, 0x51, 0x23, 0x6D, 0x80, 0xDE, 0x7C, 0x7A, 0xB9, 0x12, 0x70, 0x70, 0x96, 0x01, 0xAC, 0xD7, 0x72, 0x79, 0x92, 0x87, 0x99, 0xF5, 0x74, 0xC5, 0x8F, 0xAC, 0x85, 0xBC, 0x76, 0xF1, 0x8D, 0x46, 0x6F, 0xAF, 0x79, 0x05, 0x8A, 0x3A, 0x57, 0x1A, 0x7B, 0x62, 0x86, 0x70, 0x3A, 0xEC, 0x7E, 0x4F, 0x81, 0x44, 0x2A, 0x7A, 0x80, 0x0F, 0x7E, 0x20, 0x23, 0x77, 0x80, 0xCF, 0x7C, 0xC8, 0xB7, 0x31, 0x6F, 0xD8, 0xA0, 0x6C, 0xAA, 0x32, 0x71, 0xA0, 0x9C, 0x4C, 0x97, 0xEF, 0x73, 0xC2, 0x98, 0x01, 0x84, 0xA2, 0x76, 0x11, 0x94, 0x73, 0x6E, 0xEB, 0x78, 0x3F, 0x90, 0x40, 0x56, 0x2A, 0x7A, 0xD7, 0x8A, 0xB4, 0x3A, 0xAE, 0x7E, 0x13, 0x83, 0x4C, 0x2A, 0x80, 0x7F, 0xFD, 0x7E, 0xDE, 0x23, 0x94, 0x80, 0xCF, 0x7C, 0xF9, 0xB6, 0xCA, 0x6E, 0xDA, 0xAC, 0x0B, 0xA9, 0x41, 0x71, 0x1A, 0xA7, 0xA6, 0x96, 0xFD, 0x73, 0x2C, 0xA2, 0x1F, 0x83, 0xBD, 0x75, 0x61, 0x9C, 0xC2, 0x6D, 0xFD, 0x77, 0xA0, 0x97, 0x19, 0x55, 0x4D, 0x7A, 0x51, 0x8F, 0x93, 0x3A, 0x5C, 0x7D, 0xD8, 0x85, 0x93, 0x2A, 0x87, 0x7F, 0xF3, 0x7F, 0xAC, 0x23, 0xC2, 0x80, 0xD9, 0x7D, 0x2A, 0xB6, 0xEA, 0x6E, 0x76, 0xB6, 0x3D, 0xA8, 0xF2, 0x70, 0x58, 0xB0, 0xC5, 0x96, 0xAC, 0x72, 0xA3, 0xAA, 0x3D, 0x82, 0xDB, 0x74, 0xDA, 0xA3, 0xDF, 0x6C, 0xFC, 0x77, 0x27, 0x9C, 0xB0, 0x55, 0x04, 0x79, 0xE2, 0x93, 0xAD, 0x39, 0xFF, 0x7D, 0x9E, 0x87, 0xA5, 0x2A, 0x94, 0x7F, 0xEC, 0x80, 0x77, 0x24, 0x09, 0x80, 0xE9, 0x7D, 0x67, 0xB4, 0xE6, 0x6E, 0x74, 0xBF, 0x0D, 0xA8, 0xEB, 0x6F, 0xE3, 0xB9, 0x84, 0x97, 0x2A, 0x71, 0xC9, 0xB1, 0xDA, 0x81, 0x9B, 0x74, 0x56, 0xA9, 0xFC, 0x6C, 0x71, 0x76, 0xC2, 0xA1, 0xA0, 0x54, 0x99, 0x79, 0x87, 0x97, 0x37, 0x39, 0xDD, 0x7D, 0x67, 0x89, 0x87, 0x2A, 0xCF, 0x7F, 0xE8, 0x81, 0x38, 0x24, 0x6D, 0x80, 0xFD, 0x7D, 0xAA, 0xB5, 0x09, 0x81, 0xC9, 0x68, 0x1D, 0xA8, 0x51, 0x81, 0x48, 0x6C, 0x22, 0x96, 0x4E, 0x80, 0xE0, 0x70, 0x20, 0x82, 0xDA, 0x80, 0x83, 0x72, 0xCF, 0x6D, 0x05, 0x80, 0x72, 0x75, 0x8F, 0x54, 0x0C, 0x80, 0x93, 0x78, 0x59, 0x3A, 0x10, 0x81, 0x6E, 0x79, 0x8D, 0x2A, 0x63, 0x82, 0x5A, 0x79, 0x98, 0x23, 0x99, 0x82, 0xBB, 0x79, 0xA5, 0xB2, 0xB1, 0x7F, 0x9B, 0x72, 0x61, 0xA5, 0xDE, 0x7F, 0x88, 0x74, 0xC2, 0x94, 0xAF, 0x7F, 0x7E, 0x77, 0x01, 0x82, 0xB9, 0x7F, 0x6A, 0x78, 0x70, 0x6E, 0xED, 0x7F, 0x67, 0x79, 0x84, 0x56, 0x20, 0x80, 0x04, 0x7A, 0xD3, 0x3A, 0x3B, 0x81, 0x19, 0x7B, 0x3A, 0x29, 0xE9, 0x81, 0xDF, 0x7A, 0xF5, 0x23, 0x09, 0x82, 0x36, 0x7A, 0xD2, 0xAC, 0x99, 0x7D, 0xF0, 0x7E, 0x2C, 0xA4, 0xD8, 0x7D, 0xB7, 0x7E, 0x69, 0x93, 0xE7, 0x7D, 0xCA, 0x7E, 0xE7, 0x80, 0xC6, 0x7E, 0x14, 0x7F, 0x2D, 0x6D, 0xFA, 0x7E, 0x64, 0x7E, 0x6F, 0x54, 0x0D, 0x7F, 0x70, 0x7E, 0x24, 0x39, 0xBF, 0x80, 0xBE, 0x7D, 0x1B, 0x29, 0xA6, 0x81, 0x8B, 0x7C, 0x18, 0x22, 0xD7, 0x81, 0xE3, 0x7B, 0xA6, 0xAD, 0xAA, 0x7C, 0x1C, 0x87, 0xDA, 0xA1, 0xC7, 0x7C, 0x61, 0x87, 0x14, 0x91, 0xED, 0x7C, 0x6E, 0x86, 0x55, 0x7F, 0xC9, 0x7D, 0x04, 0x85, 0x53, 0x6B, 0xBB, 0x7D, 0xCD, 0x83, 0xAD, 0x52, 0x6B, 0x7E, 0xE6, 0x81, 0xD2, 0x38, 0xED, 0x80, 0x6A, 0x7E, 0xDF, 0x29, 0x82, 0x81, 0x5A, 0x7C, 0xF0, 0x22, 0xE4, 0x81, 0xC1, 0x7C, 0x19, 0xAD, 0xF7, 0x7A, 0xBC, 0x91, 0x4A, 0xA1, 0x22, 0x7B, 0x23, 0x8F, 0x78, 0x90, 0x73, 0x7B, 0x6D, 0x8D, 0x72, 0x7E, 0x44, 0x7C, 0x33, 0x8B, 0x78, 0x6A, 0xD1, 0x7D, 0x17, 0x88, 0xE5, 0x53, 0x0E, 0x7E, 0x5A, 0x85, 0x90, 0x38, 0x9B, 0x80, 0x27, 0x80, 0xA3, 0x29, 0x67, 0x81, 0x40, 0x7D, 0x9D, 0x22, 0xEE, 0x81, 0xB7, 0x7C, 0x52, 0xAB, 0xD9, 0x79, 0xAC, 0x9B, 0xDE, 0xA0, 0x71, 0x7A, 0x1C, 0x98, 0xA0, 0x8E, 0xE5, 0x7A, 0x8F, 0x95, 0x5C, 0x7C, 0x70, 0x7B, 0x60, 0x92, 0x1C, 0x68, 0xAB, 0x7C, 0x57, 0x8E, 0x4E, 0x51, 0xA5, 0x7D, 0xE0, 0x89, 0x5E, 0x38, 0x2E, 0x7F, 0xF0, 0x82, 0x79, 0x29, 0x4F, 0x81, 0x2D, 0x7E, 0x43, 0x22, 0xF6, 0x81, 0xB3, 0x7C, 0x76, 0xAB, 0x82, 0x78, 0x6D, 0xA7, 0xB3, 0x9E, 0xA1, 0x79, 0x98, 0xA3, 0xA1, 0x8D, 0x96, 0x7A, 0x32, 0x9E, 0x6E, 0x7C, 0x3F, 0x7A, 0xD7, 0x9A, 0x04, 0x67, 0x5F, 0x7B, 0xE7, 0x94, 0xF7, 0x50, 0x58, 0x7D, 0x6A, 0x8D, 0xE8, 0x38, 0x0D, 0x7F, 0xB9, 0x84, 0x96, 0x29, 0x52, 0x81, 0x17, 0x7E, 0xFD, 0x22, 0xF8, 0x81, 0xAC, 0x7C, 0x98, 0xAB, 0xAE, 0x77, 0xFA, 0xB1, 0x39, 0x9E, 0x3C, 0x78, 0xAB, 0xAC, 0x68, 0x8D, 0x1D, 0x79, 0x87, 0xA6, 0x9C, 0x7B, 0x0F, 0x7A, 0x49, 0xA0, 0xFB, 0x66, 0xD3, 0x7B, 0x67, 0x9A, 0x64, 0x50, 0x6A, 0x7C, 0xFA, 0x91, 0xD3, 0x37, 0xC4, 0x7F, 0x75, 0x86, 0x87, 0x29, 0x31, 0x80, 0xFC, 0x7F, 0xAD, 0x22, 0xF4, 0x81, 0xA4, 0x7C, 0xBE, 0xA8, 0x56, 0x78, 0x87, 0xB9, 0x7C, 0x9C, 0x24, 0x78, 0x71, 0xB4, 0x48, 0x8B, 0x94, 0x79, 0x1F, 0xAD, 0xB6, 0x79, 0x86, 0x79, 0xF7, 0xA6, 0xE7, 0x66, 0x4A, 0x7B, 0x28, 0x9F, 0x26, 0x50, 0x7A, 0x7C, 0x7F, 0x95, 0x57, 0x38, 0x28, 0x7F, 0x3A, 0x88, 0x8A, 0x29, 0x4A, 0x80, 0xE4, 0x80, 0x5F, 0x22, 0xF6, 0x81, 0x9C, 0x7C, 0xE4, 0xA7, 0xBD, 0x8A, 0x6F, 0x69, 0xF2, 0x9D, 0x1E, 0x88, 0xD5, 0x6C, 0x92, 0x8D, 0x10, 0x87, 0x57, 0x6F, 0xE4, 0x7B, 0xAB, 0x85, 0xD3, 0x72, 0x51, 0x67, 0xE3, 0x84, 0xDB, 0x74, 0xEE, 0x50, 0xF5, 0x83, 0xC8, 0x77, 0xB2, 0x37, 0x4A, 0x83, 0x50, 0x79, 0x49, 0x28, 0xB1, 0x83, 0x61, 0x79, 0x96, 0x22, 0x75, 0x83, 0x68, 0x79, 0xB5, 0xA5, 0x12, 0x88, 0x4B, 0x72, 0x0D, 0x9A, 0x0A, 0x87, 0x21, 0x74, 0x74, 0x8A, 0x6D, 0x85, 0xF0, 0x76, 0x18, 0x79, 0xDA, 0x84, 0xBE, 0x77, 0xB4, 0x67, 0x00, 0x83, 0xD0, 0x79, 0x03, 0x50, 0xB8, 0x83, 0x3A, 0x7A, 0x45, 0x37, 0x38, 0x83, 0x00, 0x7A, 0xC6, 0x28, 0x79, 0x82, 0xFD, 0x7A, 0xAF, 0x22, 0x36, 0x82, 0xFF, 0x7A, 0x9E, 0xA2, 0x46, 0x86, 0x43, 0x7B, 0xB5, 0x98, 0xCE, 0x85, 0x51, 0x7D, 0x2E, 0x89, 0x16, 0x84, 0x7D, 0x7D, 0x82, 0x77, 0xE8, 0x83, 0x9A, 0x7D, 0xDB, 0x66, 0x21, 0x82, 0xF2, 0x7D, 0x9D, 0x4F, 0x33, 0x82, 0xB4, 0x7D, 0x80, 0x36, 0xDF, 0x82, 0xAE, 0x7C, 0x83, 0x28, 0x67, 0x82, 0xB4, 0x7B, 0xAC, 0x22, 0x35, 0x82, 0xB8, 0x7B, 0x4A, 0xA1, 0x41, 0x85, 0x2B, 0x85, 0x91, 0x97, 0x5A, 0x84, 0x2A, 0x85, 0x5C, 0x87, 0x97, 0x83, 0x24, 0x85, 0x24, 0x77, 0x11, 0x82, 0x8B, 0x83, 0xBC, 0x65, 0x9B, 0x82, 0x4E, 0x82, 0x5F, 0x4E, 0x36, 0x82, 0x36, 0x81, 0x0A, 0x36, 0x9B, 0x82, 0x69, 0x7E, 0x3D, 0x28, 0x7B, 0x82, 0x8E, 0x7C, 0x6B, 0x22, 0x63, 0x82, 0x9D, 0x7B, 0xA3, 0xA2, 0x0F, 0x83, 0xF0, 0x8E, 0x1D, 0x96, 0x59, 0x83, 0x38, 0x8D, 0x26, 0x86, 0x42, 0x82, 0x3A, 0x8B, 0x94, 0x76, 0x1D, 0x81, 0xD8, 0x89, 0xBA, 0x63, 0x7E, 0x81, 0xAB, 0x87, 0x80, 0x4D, 0xBD, 0x81, 0xA9, 0x84, 0x99, 0x36, 0x7B, 0x82, 0x34, 0x7F, 0xDC, 0x28, 0x96, 0x82, 0x80, 0x7C, 0xFD, 0x22, 0x86, 0x82, 0x99, 0x7B, 0xC8, 0xA0, 0x15, 0x82, 0xCF, 0x97, 0x4E, 0x94, 0x79, 0x81, 0xFF, 0x95, 0x8D, 0x85, 0x6E, 0x81, 0x42, 0x92, 0xF5, 0x74, 0xAA, 0x81, 0x23, 0x8F, 0xF8, 0x61, 0x2D, 0x81, 0x14, 0x8C, 0x68, 0x4C, 0x54, 0x81, 0x48, 0x87, 0xF8, 0x36, 0x11, 0x81, 0xFB, 0x81, 0x85, 0x28, 0x67, 0x82, 0x66, 0x7D, 0x8E, 0x22, 0x6F, 0x82, 0x8D, 0x7B, 0xDF, 0x9F, 0x41, 0x82, 0x0D, 0xA2, 0x8B, 0x94, 0x42, 0x81, 0x48, 0x9F, 0xFE, 0x84, 0xFF, 0x80, 0xAC, 0x9B, 0xC6, 0x73, 0xC3, 0x80, 0x8E, 0x97, 0x6A, 0x5F, 0xEC, 0x80, 0x89, 0x92, 0x63, 0x4B, 0x2E, 0x80, 0xE2, 0x8B, 0xD4, 0x35, 0xAE, 0x81, 0xB9, 0x83, 0x68, 0x28, 0x0D, 0x82, 0x3D, 0x7E, 0x32, 0x22, 0x1F, 0x82, 0x75, 0x7B, 0xF5, 0x9E, 0xA4, 0x81, 0x9F, 0xAB, 0xEB, 0x92, 0xAB, 0x81, 0x11, 0xA8, 0x26, 0x82, 0xDF, 0x80, 0x71, 0xA3, 0x34, 0x72, 0xA0, 0x7F, 0xD0, 0x9D, 0xFF, 0x60, 0x9B, 0x7F, 0xF3, 0x97, 0xF8, 0x4B, 0xD1, 0x80, 0x6F, 0x8F, 0xA9, 0x35, 0x4F, 0x81, 0x74, 0x85, 0x19, 0x27, 0xA9, 0x82, 0x18, 0x7E, 0xBE, 0x21, 0xCB, 0x82, 0x5F, 0x7C, 0x05, 0x9C, 0x8E, 0x81, 0x2A, 0xB3, 0xDE, 0x90, 0xFA, 0x80, 0xAF, 0xAF, 0x6D, 0x82, 0x99, 0x80, 0x1E, 0xAA, 0x26, 0x73, 0x8A, 0x7F, 0x85, 0xA3, 0xFE, 0x60, 0x64, 0x7F, 0xE5, 0x9B, 0xFD, 0x4C, 0x1E, 0x7F, 0xF7, 0x92, 0x94, 0x36, 0x1D, 0x81, 0x31, 0x86, 0xBF, 0x27, 0xA9, 0x81, 0xF9, 0x7F, 0x48, 0x21, 0x83, 0x82, 0x4D, 0x7C, 0x16, 0x9A, 0xB3, 0x92, 0x3B, 0x6B, 0x16, 0x92, 0x90, 0x8F, 0xC5, 0x6C, 0x97, 0x83, 0x3C, 0x8D, 0x79, 0x6F, 0x7B, 0x72, 0x47, 0x8B, 0x30, 0x72, 0x33, 0x60, 0x17, 0x89, 0x2F, 0x74, 0xAC, 0x4C, 0x9D, 0x87, 0x0B, 0x77, 0x27, 0x35, 0x2A, 0x85, 0x46, 0x78, 0xE8, 0x27, 0x27, 0x84, 0x4A, 0x79, 0xA2, 0x21, 0x2E, 0x83, 0xDD, 0x79, 0xEE, 0x98, 0x5E, 0x90, 0x0E, 0x72, 0xA2, 0x8E, 0xFE, 0x8E, 0x4C, 0x73, 0xBC, 0x80, 0xD9, 0x8C, 0x47, 0x75, 0x27, 0x71, 0x26, 0x8A, 0x06, 0x77, 0x14, 0x5F, 0x7E, 0x88, 0x41, 0x78, 0x79, 0x4B, 0xA4, 0x86, 0x8B, 0x79, 0x9F, 0x34, 0x87, 0x84, 0xED, 0x7A, 0x41, 0x27, 0x02, 0x84, 0x02, 0x7A, 0x68, 0x21, 0x3F, 0x83, 0x9E, 0x7A, 0x75, 0x98, 0x9E, 0x8E, 0x54, 0x7A, 0xD1, 0x8D, 0xF2, 0x8C, 0xD1, 0x7B, 0xB5, 0x7E, 0xD8, 0x8B, 0x20, 0x7C, 0x1D, 0x6F, 0x69, 0x89, 0x11, 0x7C, 0xB4, 0x5F, 0x0B, 0x87, 0x89, 0x7C, 0xC6, 0x4A, 0xCC, 0x86, 0x20, 0x7C, 0xBE, 0x34, 0x4B, 0x84, 0xA0, 0x7B, 0xD4, 0x27, 0x13, 0x83, 0xC5, 0x7B, 0x31, 0x21, 0x6D, 0x83, 0x69, 0x7A, 0xE9, 0x96, 0xD0, 0x8D, 0x56, 0x83, 0x21, 0x8C, 0x66, 0x8B, 0x92, 0x83, 0x88, 0x7D, 0x43, 0x89, 0x8D, 0x83, 0x23, 0x6E, 0x6B, 0x88, 0x1B, 0x82, 0x58, 0x5E, 0x34, 0x86, 0xE9, 0x81, 0x58, 0x4A, 0x07, 0x85, 0xBC, 0x80, 0x0B, 0x34, 0x88, 0x84, 0x6D, 0x7D, 0x66, 0x27, 0x64, 0x83, 0xA7, 0x7B, 0xD3, 0x21, 0xB4, 0x83, 0x52, 0x7B, 0x29, 0x95, 0x0E, 0x8C, 0x3F, 0x8B, 0x81, 0x8B, 0x2F, 0x8A, 0xD1, 0x8A, 0xBE, 0x7B, 0x72, 0x88, 0xCE, 0x89, 0x3C, 0x6E, 0x1D, 0x87, 0x56, 0x87, 0xB4, 0x5C, 0xFF, 0x86, 0x54, 0x85, 0xE8, 0x49, 0x9C, 0x85, 0x43, 0x83, 0x47, 0x34, 0xA5, 0x84, 0x45, 0x7E, 0xE5, 0x27, 0xB8, 0x83, 0xA3, 0x7C, 0x4F, 0x21, 0xE7, 0x83, 0x4D, 0x7B, 0x3F, 0x93, 0x65, 0x8B, 0x7E, 0x94, 0x6F, 0x88, 0xCE, 0x89, 0xE2, 0x92, 0x6A, 0x7B, 0x77, 0x88, 0x20, 0x90, 0x1C, 0x6D, 0xC6, 0x86, 0xEF, 0x8D, 0xC4, 0x5C, 0x2A, 0x85, 0xE5, 0x8A, 0x9C, 0x48, 0xF1, 0x84, 0xD1, 0x86, 0xA1, 0x34, 0x14, 0x83, 0xFA, 0x80, 0x7E, 0x27, 0x5C, 0x83, 0x7E, 0x7C, 0xD1, 0x21, 0xB2, 0x83, 0x3C, 0x7B, 0x49, 0x91, 0xB9, 0x8B, 0x21, 0x9E, 0x8B, 0x87, 0xA8, 0x89, 0x08, 0x9B, 0xC0, 0x7B, 0x19, 0x87, 0x3F, 0x98, 0xBC, 0x6C, 0x6B, 0x86, 0x61, 0x94, 0xDC, 0x5B, 0x19, 0x85, 0x54, 0x90, 0x33, 0x48, 0x6E, 0x84, 0x61, 0x8A, 0x47, 0x33, 0x34, 0x83, 0xA3, 0x82, 0x30, 0x26, 0x8F, 0x83, 0x44, 0x7D, 0x5D, 0x21, 0x20, 0x83, 0x1B, 0x7B, 0x4F, 0x91, 0xC2, 0x8A, 0x84, 0xA6, 0xFB, 0x88, 0x32, 0x88, 0xB4, 0xA3, 0xC8, 0x79, 0xF1, 0x86, 0xFB, 0x9F, 0xBA, 0x6A, 0x6D, 0x85, 0x9A, 0x9A, 0xD7, 0x5A, 0xA7, 0x84, 0xB4, 0x95, 0x4D, 0x48, 0x3E, 0x84, 0x03, 0x8D, 0x8B, 0x32, 0x9C, 0x83, 0x70, 0x83, 0x97, 0x26, 0x00, 0x83, 0x22, 0x7D, 0xC7, 0x20, 0xA2, 0x83, 0x01, 0x7B, 0x4E, 0x93, 0x6F, 0x89, 0x55, 0xAF, 0x19, 0x87, 0x97, 0x88, 0x13, 0xAB, 0x28, 0x79, 0x41, 0x86, 0xCF, 0xA6, 0x50, 0x6A, 0x81, 0x85, 0x45, 0xA0, 0x7C, 0x59, 0x75, 0x84, 0x7F, 0x99, 0x28, 0x47, 0x6D, 0x83, 0xB4, 0x8F, 0xA4, 0x32, 0xAB, 0x83, 0x4C, 0x84, 0xB0, 0x25, 0xBF, 0x83, 0x0C, 0x7E, 0x21, 0x20, 0x45, 0x82, 0xEE, 0x7B, 0x4F, 0x8F, 0x5A, 0x9A, 0x10, 0x6A, 0xB1, 0x84, 0x7E, 0x97, 0x5D, 0x6D, 0x56, 0x77, 0x36, 0x94, 0x48, 0x6F, 0x9F, 0x68, 0xA3, 0x91, 0x1A, 0x72, 0x18, 0x58, 0x52, 0x8E, 0x23, 0x74, 0x5C, 0x45, 0xEB, 0x8B, 0x0D, 0x76, 0xA7, 0x32, 0x7B, 0x87, 0xA9, 0x78, 0x52, 0x25, 0x76, 0x85, 0x59, 0x79, 0x73, 0x1F, 0xDC, 0x84, 0x60, 0x79, 0xEB, 0x8B, 0xC7, 0x98, 0x75, 0x71, 0x32, 0x82, 0xBB, 0x96, 0x23, 0x72, 0xEB, 0x77, 0x89, 0x93, 0x07, 0x74, 0x01, 0x68, 0x7E, 0x90, 0x1E, 0x76, 0x1A, 0x58, 0x3F, 0x8D, 0x75, 0x77, 0xA1, 0x46, 0x7C, 0x8A, 0x80, 0x78, 0xC0, 0x31, 0x9E, 0x87, 0x1A, 0x79, 0x9B, 0x25, 0x4E, 0x85, 0x16, 0x7A, 0x07, 0x20, 0x0C, 0x84, 0x3A, 0x7A, 0x33, 0x8B, 0x41, 0x97, 0x3B, 0x78, 0xE6, 0x82, 0x16, 0x94, 0xE9, 0x7A, 0x15, 0x75, 0x3E, 0x92, 0x17, 0x7A, 0x88, 0x66, 0x57, 0x8F, 0x5C, 0x7B, 0x5C, 0x57, 0xB0, 0x8C, 0xE0, 0x7B, 0x92, 0x46, 0x32, 0x8A, 0x1B, 0x7B, 0x86, 0x31, 0x88, 0x86, 0xC8, 0x7A, 0xFD, 0x25, 0x73, 0x84, 0xE0, 0x7A, 0xA1, 0x20, 0x4C, 0x84, 0x11, 0x7A, 0x79, 0x8A, 0x57, 0x96, 0x4D, 0x80, 0xDB, 0x81, 0xF8, 0x93, 0xC3, 0x81, 0x43, 0x73, 0x85, 0x90, 0xCC, 0x81, 0x08, 0x65, 0x92, 0x8E, 0x81, 0x80, 0xB5, 0x56, 0x8C, 0x8C, 0x3F, 0x7F, 0xBE, 0x45, 0x3B, 0x89, 0xC8, 0x7E, 0x71, 0x32, 0x1E, 0x86, 0xA7, 0x7C, 0x4B, 0x25, 0xD1, 0x84, 0xC1, 0x7B, 0x25, 0x20, 0x90, 0x83, 0xF6, 0x7A, 0xA5, 0x88, 0x71, 0x95, 0x4F, 0x89, 0x40, 0x7F, 0xF5, 0x92, 0xFC, 0x88, 0x5E, 0x72, 0x5C, 0x90, 0x1B, 0x86, 0xE4, 0x65, 0x71, 0x8D, 0xD0, 0x85, 0x92, 0x55, 0xAD, 0x8B, 0xA9, 0x83, 0xFF, 0x44, 0x75, 0x89, 0x5E, 0x81, 0x83, 0x32, 0x07, 0x86, 0x74, 0x7D, 0xB1, 0x25, 0xE5, 0x84, 0xA8, 0x7B, 0x98, 0x20, 0xAA, 0x83, 0xE6, 0x7A, 0xB2, 0x87, 0x15, 0x94, 0xBD, 0x91, 0x36, 0x7E, 0xC8, 0x92, 0x19, 0x8F, 0x42, 0x71, 0xB2, 0x8F, 0x66, 0x8D, 0x5F, 0x64, 0x96, 0x8D, 0x71, 0x8B, 0x36, 0x55, 0x05, 0x8B, 0x34, 0x88, 0x9F, 0x44, 0x0B, 0x88, 0xCB, 0x84, 0xDE, 0x31, 0x12, 0x86, 0x14, 0x7F, 0x49, 0x25, 0x77, 0x84, 0x80, 0x7C, 0x0B, 0x20, 0x70, 0x83, 0xD3, 0x7A, 0xAD, 0x84, 0x58, 0x94, 0x17, 0x99, 0xE2, 0x7D, 0x24, 0x91, 0x5C, 0x97, 0xF6, 0x70, 0xB8, 0x8E, 0xC7, 0x95, 0x48, 0x63, 0xA5, 0x8C, 0xC9, 0x91, 0xEC, 0x54, 0xAE, 0x8A, 0xA8, 0x8D, 0xC1, 0x44, 0x04, 0x88, 0x46, 0x88, 0x43, 0x30, 0x4A, 0x85, 0xBA, 0x80, 0xCD, 0x24, 0xC8, 0x84, 0x50, 0x7C, 0x75, 0x1F, 0xE2, 0x83, 0xB8, 0x7A, 0x9E, 0x84, 0x89, 0x93, 0xDF, 0xA1, 0xDC, 0x7D, 0xC1, 0x90, 0xFA, 0x9F, 0x4B, 0x70, 0xBE, 0x8E, 0x69, 0x9B, 0xEF, 0x62, 0xF7, 0x8C, 0x32, 0x97, 0x8D, 0x54, 0x20, 0x8A, 0x2F, 0x92, 0x12, 0x43, 0x61, 0x88, 0x12, 0x8A, 0xF8, 0x2F, 0x7B, 0x85, 0x9E, 0x81, 0xF4, 0x24, 0x35, 0x84, 0x36, 0x7C, 0xC0, 0x1F, 0x70, 0x83, 0x9F, 0x7A, 0x8B, 0x85, 0x9F, 0x93, 0x60, 0xAA, 0x1B, 0x7C, 0xEE, 0x90, 0x52, 0xA6, 0x9B, 0x72, 0x23, 0x8D, 0xCF, 0xA2, 0x1E, 0x63, 0xFE, 0x8B, 0xCB, 0x9C, 0x6A, 0x53, 0xBB, 0x89, 0xEB, 0x95, 0xD3, 0x42, 0x1F, 0x88, 0x15, 0x8C, 0xF4, 0x2E, 0x47, 0x85, 0xC2, 0x82, 0xCC, 0x23, 0xB8, 0x84, 0x30, 0x7C, 0xF8, 0x1F, 0x2D, 0x83, 0x88, 0x7A, 0x7B, 0x7F, 0x78, 0xA4, 0xAC, 0x6A, 0xDA, 0x75, 0x4A, 0xA1, 0x44, 0x6C, 0xE4, 0x69, 0xDB, 0x9C, 0xED, 0x6F, 0x73, 0x5E, 0xE7, 0x98, 0x93, 0x71, 0x86, 0x50, 0xC9, 0x94, 0x6B, 0x73, 0x56, 0x3F, 0xC5, 0x8F, 0xB9, 0x75, 0x9F, 0x2E, 0x24, 0x89, 0xFE, 0x77, 0xB5, 0x23, 0x0E, 0x86, 0x85, 0x79, 0x0E, 0x1E, 0x43, 0x85, 0x0C, 0x79, 0xA2, 0x7D, 0x8E, 0xA3, 0x74, 0x70, 0x89, 0x74, 0xF3, 0x9F, 0xEF, 0x72, 0x25, 0x6A, 0x9E, 0x9B, 0xB7, 0x73, 0x6D, 0x5E, 0xAB, 0x97, 0xC0, 0x74, 0xED, 0x50, 0x6B, 0x93, 0xBF, 0x76, 0x5C, 0x40, 0x80, 0x8F, 0x32, 0x77, 0x82, 0x2D, 0xEC, 0x89, 0x93, 0x78, 0xBF, 0x23, 0x11, 0x86, 0x50, 0x79, 0x79, 0x1E, 0x6E, 0x84, 0xEF, 0x79, 0xC6, 0x7B, 0xF0, 0xA2, 0x90, 0x77, 0x3C, 0x74, 0x29, 0x9E, 0xF0, 0x78, 0x78, 0x6A, 0x30, 0x9A, 0x85, 0x78, 0xF5, 0x5D, 0xD0, 0x96, 0xE2, 0x79, 0x7A, 0x4F, 0xA0, 0x93, 0x38, 0x7A, 0x09, 0x40, 0x7A, 0x8E, 0xAD, 0x7A, 0x27, 0x2E, 0x00, 0x89, 0x3B, 0x7A, 0x05, 0x23, 0x3C, 0x86, 0x1E, 0x79, 0xF1, 0x1E, 0xA6, 0x84, 0xCE, 0x79, 0xE8, 0x79, 0xEA, 0xA1, 0x8B, 0x7E, 0x9D, 0x73, 0xB8, 0x9E, 0x10, 0x7E, 0xC9, 0x68, 0x27, 0x99, 0xFE, 0x7E, 0xA0, 0x5C, 0x29, 0x96, 0x41, 0x7E, 0x73, 0x4E, 0x40, 0x92, 0x84, 0x7D, 0xE2, 0x3E, 0xEB, 0x8E, 0x44, 0x7C, 0xDC, 0x2D, 0xFB, 0x89, 0x02, 0x7B, 0x44, 0x23, 0x6A, 0x85, 0xF7, 0x7A, 0x60, 0x1E, 0xDD, 0x84, 0xAF, 0x79, 0xFF, 0x79, 0xEB, 0xA0, 0x3D, 0x85, 0xE6, 0x71, 0x90, 0x9D, 0x01, 0x85, 0x3B, 0x66, 0x62, 0x99, 0x30, 0x84, 0x63, 0x5B, 0x97, 0x95, 0x90, 0x83, 0x53, 0x4D, 0xA7, 0x91, 0xD7, 0x81, 0xBE, 0x3D, 0xCA, 0x8D, 0xE7, 0x7F, 0x92, 0x2D, 0x91, 0x88, 0xC8, 0x7C, 0x85, 0x23, 0x53, 0x85, 0xD3, 0x7A, 0xC4, 0x1E, 0xE7, 0x84, 0x94, 0x7A, 0x04, 0x79, 0x8F, 0x9F, 0x31, 0x8C, 0xFC, 0x71, 0xAC, 0x9C, 0x13, 0x8B, 0xE4, 0x65, 0x7F, 0x98, 0x6C, 0x8A, 0x50, 0x5A, 0xB7, 0x95, 0x33, 0x88, 0x40, 0x4D, 0x08, 0x91, 0x8D, 0x85, 0xD2, 0x3D, 0x7A, 0x8D, 0x8E, 0x82, 0x72, 0x2C, 0xF8, 0x88, 0x7B, 0x7D, 0xD7, 0x22, 0xFF, 0x85, 0xA9, 0x7B, 0x1F, 0x1E, 0xB4, 0x84, 0x7B, 0x79, 0xF7, 0x76, 0xA1, 0x9E, 0x47, 0x95, 0x47, 0x6F, 0x5B, 0x9B, 0x51, 0x93, 0xF4, 0x63, 0xC1, 0x98, 0x0C, 0x91, 0x3C, 0x5A, 0x44, 0x94, 0x98, 0x8E, 0x2B, 0x4D, 0x92, 0x90, 0xEB, 0x8A, 0x7C, 0x3E, 0x78, 0x8C, 0xE0, 0x85, 0x99, 0x2C, 0xA9, 0x88, 0x24, 0x7F, 0x2D, 0x22, 0x97, 0x85, 0x7D, 0x7B, 0x6F, 0x1E, 0x55, 0x84, 0x60, 0x79, 0xD9, 0x76, 0xA7, 0x9E, 0xB3, 0x9D, 0x1A, 0x70, 0x1A, 0x9B, 0x21, 0x9A, 0xAD, 0x64, 0xBB, 0x97, 0x8A, 0x97, 0x4C, 0x59, 0x90, 0x93, 0xEE, 0x93, 0x53, 0x4C, 0xAF, 0x90, 0x77, 0x8E, 0x72, 0x3D, 0xBB, 0x8C, 0xA5, 0x88, 0x1A, 0x2C, 0x54, 0x88, 0x04, 0x80, 0x33, 0x22, 0x5B, 0x85, 0x61, 0x7B, 0xA7, 0x1E, 0x20, 0x84, 0x44, 0x79, 0xB9, 0x76, 0x22, 0x9E, 0x15, 0xA4, 0x22, 0x70, 0x60, 0x9A, 0x35, 0xA1, 0x0E, 0x65, 0x05, 0x96, 0xE6, 0x9C, 0xE3, 0x59, 0x38, 0x93, 0xCB, 0x97, 0xEF, 0x4B, 0x9B, 0x90, 0xAA, 0x92, 0x1D, 0x3B, 0x7D, 0x8C, 0xF0, 0x89, 0xE3, 0x2C, 0x3F, 0x88, 0x29, 0x81, 0x00, 0x22, 0x50, 0x85, 0x55, 0x7B, 0xD0, 0x1E, 0x12, 0x84, 0x27, 0x79, 0x9D, 0x6F, 0xD6, 0xB0, 0xEC, 0x6A, 0xAD, 0x66, 0xFC, 0xAC, 0x98, 0x6B, 0xE2, 0x5D, 0x1F, 0xA6, 0xCB, 0x6E, 0x1B, 0x53, 0xFB, 0xA1, 0x64, 0x6F, 0xC0, 0x47, 0x9A, 0x9B, 0xF1, 0x71, 0x93, 0x39, 0xA0, 0x95, 0x29, 0x73, 0xF6, 0x29, 0x34, 0x8C, 0xDF, 0x76, 0xB9, 0x1F, 0xD7, 0x88, 0x08, 0x78, 0x62, 0x1B, 0xDF, 0x85, 0xF9, 0x79, 0x19, 0x6E, 0x27, 0xAF, 0x7F, 0x6F, 0x84, 0x66, 0xF9, 0xAB, 0x6C, 0x70, 0x79, 0x5D, 0x17, 0xA6, 0x27, 0x71, 0xF4, 0x53, 0x04, 0xA0, 0xD5, 0x73, 0x54, 0x47, 0x2C, 0x9B, 0x21, 0x74, 0xA2, 0x39, 0xA2, 0x94, 0x9E, 0x75, 0xE7, 0x29, 0x59, 0x8C, 0x87, 0x77, 0xA0, 0x20, 0x06, 0x87, 0xDC, 0x78, 0xAD, 0x1C, 0x10, 0x85, 0xE2, 0x79, 0x1E, 0x6B, 0xDF, 0xAE, 0x55, 0x75, 0x9F, 0x65, 0xD1, 0xAA, 0x49, 0x76, 0x4D, 0x5B, 0x2D, 0xA5, 0x99, 0x76, 0xC2, 0x51, 0x7D, 0xA0, 0x44, 0x77, 0x74, 0x46, 0x33, 0x9A, 0x77, 0x78, 0x1E, 0x39, 0xA4, 0x93, 0xEC, 0x78, 0x79, 0x29, 0x6E, 0x8C, 0x22, 0x78, 0xCF, 0x20, 0x24, 0x87, 0xAC, 0x79, 0x07, 0x1C, 0x38, 0x85, 0xC9, 0x79, 0x1F, 0x6C, 0x2A, 0xAD, 0x1E, 0x7C, 0x90, 0x64, 0xD1, 0xA9, 0x69, 0x7C, 0x7D, 0x5A, 0x3B, 0xA4, 0xB1, 0x7C, 0x51, 0x50, 0x2D, 0x9F, 0x64, 0x7B, 0xFC, 0x45, 0x86, 0x99, 0x98, 0x7B, 0xA8, 0x38, 0xDC, 0x93, 0x41, 0x7A, 0xFC, 0x29, 0x0A, 0x8B, 0xCB, 0x79, 0xFA, 0x20, 0x14, 0x87, 0x80, 0x79, 0x5F, 0x1C, 0x4E, 0x85, 0xAE, 0x79, 0x1E, 0x6C, 0x8F, 0xAB, 0xF9, 0x82, 0xE2, 0x63, 0x0B, 0xA8, 0xA1, 0x82, 0x60, 0x5A, 0x02, 0xA3, 0x59, 0x81, 0xC2, 0x50, 0x94, 0x9E, 0x45, 0x80, 0xA9, 0x45, 0x32, 0x98, 0xD3, 0x7F, 0x23, 0x37, 0x72, 0x92, 0xE2, 0x7D, 0x41, 0x28, 0x6F, 0x8B, 0x8B, 0x7B, 0x0D, 0x1F, 0xEE, 0x87, 0x53, 0x79, 0xB0, 0x1C, 0x54, 0x85, 0x8A, 0x79, 0x1A, 0x6C, 0xB4, 0xAA, 0xFB, 0x89, 0x42, 0x64, 0x6C, 0xA7, 0x3E, 0x88, 0xA4, 0x5A, 0x57, 0xA2, 0x45, 0x87, 0x5E, 0x50, 0x56, 0x9D, 0xA4, 0x85, 0x3B, 0x44, 0xB3, 0x98, 0x5F, 0x82, 0xB9, 0x36, 0x27, 0x92, 0xB6, 0x7F, 0x95, 0x28, 0x0A, 0x8B, 0x51, 0x7C, 0x1E, 0x1F, 0xD2, 0x87, 0x23, 0x79, 0xF8, 0x1C, 0x4E, 0x85, 0x60, 0x79, 0x0A, 0x6A, 0x6F, 0xAA, 0xA4, 0x91, 0x20, 0x62, 0xC8, 0xA7, 0x5F, 0x8F, 0xBF, 0x59, 0x08, 0xA2, 0x23, 0x8D, 0x27, 0x4F, 0xCE, 0x9D, 0x32, 0x8A, 0x48, 0x44, 0xF4, 0x97, 0xC6, 0x86, 0xDC, 0x37, 0x98, 0x92, 0x11, 0x82, 0xA8, 0x28, 0x4E, 0x8B, 0x00, 0x7D, 0x52, 0x1F, 0xD9, 0x86, 0xED, 0x7A, 0x39, 0x1C, 0x4B, 0x85, 0x34, 0x78, 0xE8, 0x69, 0x8E, 0xAA, 0x66, 0x98, 0x6A, 0x62, 0x22, 0xA6, 0xFB, 0x96, 0x1D, 0x57, 0x90, 0xA2, 0x46, 0x92, 0x3C, 0x4F, 0x09, 0x9C, 0xA8, 0x8E, 0xAF, 0x44, 0x7A, 0x97, 0x66, 0x8A, 0x5B, 0x37, 0x98, 0x91, 0xB2, 0x84, 0xE8, 0x28, 0xB9, 0x8A, 0xBB, 0x7E, 0x40, 0x20, 0x27, 0x86, 0xBB, 0x7A, 0x68, 0x1C, 0x83, 0x85, 0x09, 0x78, 0xC7, 0x69, 0xC3, 0xA9, 0xA8, 0x9E, 0x9F, 0x62, 0x86, 0xA5, 0x8C, 0x9B, 0x9F, 0x56, 0xFA, 0xA1, 0xA8, 0x96, 0x7B, 0x4D, 0xCF, 0x9C, 0x76, 0x92, 0x29, 0x42, 0xF5, 0x97, 0xE7, 0x8D, 0x33, 0x35, 0xD8, 0x91, 0x76, 0x86, 0x10, 0x29, 0x63, 0x8A, 0x7D, 0x7E, 0xE1, 0x20, 0xB0, 0x86, 0x8C, 0x7A, 0x8B, 0x1C, 0xDF, 0x84, 0xE2, 0x78, 0xAE, 0x64, 0xA3, 0xB9, 0x7D, 0x6A, 0x9D, 0x5D, 0xC5, 0xB5, 0x50, 0x6B, 0x95, 0x54, 0x80, 0xAF, 0x6B, 0x6D, 0x29, 0x4B, 0x07, 0xA9, 0x5F, 0x6E, 0x0B, 0x3F, 0x65, 0xA2, 0xBA, 0x70, 0x73, 0x34, 0x4D, 0x99, 0x51, 0x72, 0x93, 0x24, 0x5B, 0x8F, 0xEB, 0x75, 0x84, 0x1C, 0x60, 0x89, 0xBB, 0x77, 0x94, 0x19, 0x15, 0x87, 0x0A, 0x78, 0x7B, 0x64, 0xEA, 0xB8, 0xCE, 0x6F, 0x1B, 0x5D, 0x80, 0xB4, 0x4D, 0x6F, 0x9B, 0x53, 0x5A, 0xAE, 0xF4, 0x70, 0x8A, 0x49, 0x89, 0xA9, 0x05, 0x71, 0x97, 0x3F, 0x02, 0xA2, 0x0A, 0x72, 0xE8, 0x33, 0x6D, 0x99, 0xAD, 0x74, 0x6C, 0x24, 0xCE, 0x8F, 0x7F, 0x76, 0x7C, 0x1C, 0xBD, 0x89, 0x81, 0x77, 0xCD, 0x19, 0x5F, 0x86, 0xF3, 0x78, 0x60, 0x65, 0x78, 0xB7, 0x49, 0x74, 0x87, 0x5D, 0xDB, 0xB3, 0x04, 0x74, 0x74, 0x52, 0x93, 0xAE, 0x3C, 0x74, 0xD9, 0x49, 0x5E, 0xA8, 0x21, 0x75, 0x85, 0x3F, 0x0D, 0xA1, 0x05, 0x76, 0x07, 0x33, 0x26, 0x98, 0xE1, 0x76, 0xB3, 0x24, 0x9A, 0x8F, 0x09, 0x77, 0x89, 0x1C, 0xBD, 0x89, 0x52, 0x78, 0x08, 0x19, 0x7C, 0x86, 0xE5, 0x78, 0x3F, 0x63, 0x1B, 0xB5, 0xFF, 0x7A, 0xBF, 0x5D, 0x0E, 0xB1, 0xD4, 0x7A, 0x0B, 0x52, 0xDC, 0xAC, 0xCC, 0x7A, 0x3D, 0x49, 0x78, 0xA6, 0xE1, 0x79, 0xCE, 0x3F, 0x8D, 0x9F, 0xBA, 0x79, 0x55, 0x33, 0x5A, 0x97, 0x4B, 0x79, 0x04, 0x23, 0xDF, 0x8E, 0x95, 0x78, 0x9A, 0x1C, 0x60, 0x89, 0x2C, 0x78, 0x44, 0x19, 0x5B, 0x86, 0xD6, 0x78, 0x21, 0x63, 0x1B, 0xB4, 0xF5, 0x80, 0xDB, 0x5B, 0xC9, 0xB1, 0x06, 0x7F, 0x9E, 0x52, 0xEA, 0xAB, 0x7B, 0x7E, 0xB3, 0x48, 0x71, 0xA5, 0xE5, 0x7D, 0xF7, 0x3E, 0x0E, 0x9F, 0x26, 0x7C, 0xE8, 0x32, 0x97, 0x96, 0xBC, 0x7B, 0x5B, 0x23, 0x6F, 0x8E, 0x49, 0x79, 0xAA, 0x1C, 0x4D, 0x88, 0xF5, 0x78, 0x8B, 0x19, 0x6A, 0x86, 0xAA, 0x78, 0x12, 0x63, 0x78, 0xB3, 0x9A, 0x87, 0xEE, 0x5C, 0x22, 0xAF, 0x9B, 0x85, 0xDF, 0x52, 0x97, 0xAA, 0x34, 0x83, 0x93, 0x48, 0x06, 0xA4, 0xE9, 0x82, 0x34, 0x3D, 0x36, 0x9E, 0x8E, 0x80, 0x60, 0x31, 0x26, 0x97, 0x10, 0x7D, 0xC6, 0x23, 0x9A, 0x8E, 0x09, 0x7A, 0x97, 0x1C, 0x8B, 0x88, 0xB1, 0x78, 0xC7, 0x19, 0xA2, 0x86, 0x68, 0x78, 0x04, 0x61, 0x47, 0xB2, 0xDA, 0x8E, 0xE8, 0x5A, 0xD7, 0xAF, 0x57, 0x8C, 0xC0, 0x52, 0x38, 0xA9, 0x97, 0x89, 0xF0, 0x48, 0xF2, 0xA3, 0xF9, 0x87, 0x16, 0x3E, 0xAA, 0x9D, 0x97, 0x83, 0xED, 0x31, 0x0C, 0x96, 0xCD, 0x80, 0x47, 0x24, 0x0B, 0x8D, 0xC9, 0x7B, 0x9D, 0x1D, 0x0A, 0x88, 0x67, 0x79, 0x03, 0x1A, 0x1C, 0x86, 0x1C, 0x77, 0xEB, 0x5F, 0xDC, 0xB2, 0xFE, 0x94, 0x8A, 0x59, 0x6D, 0xAF, 0x42, 0x92, 0x66, 0x51, 0x64, 0xA9, 0xA7, 0x8E, 0xF7, 0x48, 0xF3, 0xA3, 0x96, 0x8B, 0x30, 0x3E, 0xF4, 0x9D, 0x4F, 0x86, 0xC4, 0x32, 0x00, 0x96, 0x71, 0x82, 0x13, 0x24, 0xF5, 0x8D, 0x69, 0x7C, 0x82, 0x1D, 0xCD, 0x88, 0x18, 0x79, 0x38, 0x1A, 0xCA, 0x85, 0xD5, 0x77, 0xD3, 0x5F, 0xC1, 0xB3, 0x58, 0x9A, 0x55, 0x59, 0x62, 0xAE, 0x3F, 0x97, 0x87, 0x4F, 0x51, 0xA9, 0x8B, 0x92, 0xDE, 0x46, 0xC7, 0xA3, 0x8D, 0x8E, 0xA5, 0x3C, 0x73, 0x9D, 0x6D, 0x89, 0x13, 0x31, 0x62, 0x95, 0xF2, 0x83, 0x07, 0x25, 0xE9, 0x8C, 0xF1, 0x7D, 0x34, 0x1E, 0xAE, 0x87, 0xC8, 0x79, 0x65, 0x1B, 0x8F, 0x85, 0x96, 0x77, 0xC1, 0xC0, 0x30, 0x6C, 0xAB, 0x5F, 0x3C, 0xB1, 0x5B, 0x6F, 0x23, 0x64, 0x77, 0x9E, 0x1D, 0x71, 0x95, 0x69, 0x88, 0x88, 0x8D, 0x73, 0xE9, 0x6E, 0x16, 0x72, 0x74, 0x76, 0x46, 0x71, 0x82, 0x58, 0xD0, 0x79, 0x40, 0x75, 0x15, 0x3C, 0x4B, 0x7C, 0xD7, 0x77, 0xD5, 0x2B, 0xBD, 0x7F, 0x0C, 0x79, 0x48, 0x24, 0xA1, 0x7F, 0xFD, 0x79, 0xEB, 0xBB, 0xFF, 0x68, 0xA8, 0x6C, 0x11, 0xAE, 0xF6, 0x6C, 0x26, 0x6F, 0x2B, 0x9C, 0xAA, 0x6F, 0x62, 0x71, 0x6A, 0x86, 0xD2, 0x72, 0x81, 0x74, 0x1C, 0x70, 0x91, 0x75, 0x3F, 0x76, 0x19, 0x56, 0x9D, 0x78, 0x87, 0x78, 0x51, 0x3A, 0xCB, 0x7C, 0x6C, 0x79, 0xB0, 0x2A, 0xDB, 0x7E, 0xD0, 0x7A, 0x5C, 0x24, 0x10, 0x7F, 0xD8, 0x7A, 0xA6, 0xBA, 0x01, 0x65, 0x21, 0x79, 0xDD, 0xAD, 0x71, 0x69, 0x46, 0x7A, 0x71, 0x99, 0xCA, 0x6D, 0x81, 0x7A, 0xFF, 0x85, 0x2D, 0x70, 0xEA, 0x7B, 0x3F, 0x6E, 0x42, 0x74, 0x2F, 0x7B, 0xC3, 0x53, 0x98, 0x77, 0xDE, 0x7C, 0x1B, 0x39, 0xC0, 0x7B, 0xF8, 0x7B, 0xA9, 0x2A, 0x3B, 0x7E, 0x93, 0x7B, 0x72, 0x23, 0x8F, 0x7F, 0xB5, 0x7B, 0x5B, 0xB8, 0x4B, 0x63, 0x18, 0x85, 0x83, 0xA9, 0xD4, 0x67, 0x1B, 0x84, 0xBC, 0x97, 0x45, 0x6B, 0x81, 0x83, 0x8C, 0x83, 0xE3, 0x6F, 0x1D, 0x82, 0x83, 0x6D, 0x7A, 0x72, 0xF4, 0x81, 0x42, 0x54, 0x6E, 0x77, 0x15, 0x7F, 0xA1, 0x39, 0x78, 0x7B, 0x9F, 0x7D, 0x9C, 0x29, 0xD8, 0x7E, 0x6A, 0x7C, 0x60, 0x23, 0x2B, 0x7F, 0xA0, 0x7B, 0xD8, 0xB6, 0xA4, 0x61, 0x7C, 0x90, 0x33, 0xA9, 0x25, 0x65, 0x6E, 0x8E, 0x16, 0x96, 0x23, 0x6A, 0x29, 0x8B, 0x93, 0x83, 0x58, 0x6D, 0xCB, 0x89, 0x24, 0x6C, 0x07, 0x71, 0xE4, 0x86, 0xC9, 0x52, 0xA2, 0x76, 0x79, 0x83, 0x6C, 0x39, 0x45, 0x7B, 0x5A, 0x7F, 0x98, 0x29, 0xB5, 0x7E, 0x52, 0x7D, 0x26, 0x22, 0xFF, 0x7F, 0x9A, 0x7C, 0x19, 0xB5, 0x58, 0x60, 0x96, 0x9B, 0x0F, 0xA8, 0xF4, 0x64, 0x3B, 0x98, 0x0D, 0x97, 0x0A, 0x68, 0x87, 0x94, 0x2D, 0x83, 0x26, 0x6C, 0xA3, 0x90, 0x48, 0x6B, 0x5B, 0x71, 0x03, 0x8D, 0x29, 0x51, 0x24, 0x75, 0xA1, 0x87, 0xFB, 0x39, 0x62, 0x7B, 0x09, 0x81, 0xB7, 0x29, 0xBF, 0x7E, 0x44, 0x7D, 0xE5, 0x23, 0x02, 0x7F, 0xA7, 0x7C, 0x46, 0xB4, 0x70, 0x5F, 0x23, 0xA6, 0xC0, 0xA5, 0x8E, 0x63, 0x89, 0xA3, 0x16, 0x94, 0x40, 0x67, 0xB2, 0x9D, 0xEA, 0x81, 0x3C, 0x6B, 0xCB, 0x99, 0x4D, 0x6B, 0x98, 0x70, 0x04, 0x94, 0x58, 0x52, 0x1E, 0x74, 0xBF, 0x8D, 0x3C, 0x39, 0x5A, 0x7A, 0xB6, 0x84, 0x25, 0x29, 0xD9, 0x7E, 0x42, 0x7E, 0xC7, 0x23, 0x40, 0x7F, 0xC5, 0x7C, 0x82, 0xB2, 0xDE, 0x5E, 0x89, 0xB0, 0xFF, 0xA4, 0x4E, 0x62, 0x86, 0xAC, 0x16, 0x91, 0xEE, 0x66, 0xD8, 0xA6, 0x69, 0x7F, 0xD6, 0x6B, 0x08, 0xA0, 0xAE, 0x6A, 0x81, 0x6F, 0x5B, 0x9A, 0x1C, 0x52, 0x63, 0x74, 0x42, 0x91, 0x6E, 0x38, 0xBA, 0x7A, 0x71, 0x86, 0x2D, 0x2A, 0x1A, 0x7E, 0x47, 0x7F, 0x94, 0x23, 0xE0, 0x7F, 0xED, 0x7C, 0xC7, 0xB2, 0x86, 0x5E, 0x6D, 0xBB, 0x17, 0xA4, 0x04, 0x61, 0xCF, 0xB5, 0x43, 0x92, 0x29, 0x66, 0xA6, 0xAE, 0x1C, 0x80, 0x58, 0x6A, 0xB2, 0xA7, 0x6C, 0x69, 0x6A, 0x6F, 0x19, 0x9F, 0x3D, 0x50, 0x0C, 0x74, 0x3E, 0x94, 0x5D, 0x38, 0xA9, 0x7A, 0x1E, 0x87, 0xA7, 0x2A, 0xF0, 0x7E, 0x53, 0x80, 0x39, 0x24, 0xD3, 0x80, 0x1F, 0x7D, 0x09, 0xB8, 0x4B, 0x73, 0xD5, 0x5F, 0xE5, 0xA9, 0x79, 0x74, 0xE4, 0x64, 0xEE, 0x96, 0x57, 0x76, 0x32, 0x6A, 0x65, 0x81, 0xFB, 0x77, 0xB2, 0x6E, 0x9B, 0x6D, 0x71, 0x79, 0x50, 0x72, 0x42, 0x55, 0x70, 0x7B, 0x5E, 0x75, 0x39, 0x3B, 0xCA, 0x7E, 0x1D, 0x77, 0xC7, 0x2B, 0x08, 0x80, 0x0C, 0x79, 0x06, 0x23, 0xDA, 0x80, 0xDE, 0x79, 0x94, 0xB3, 0x4A, 0x70, 0x98, 0x6C, 0xA2, 0xA5, 0xF0, 0x72, 0x7F, 0x6F, 0x1D, 0x94, 0xF1, 0x74, 0x70, 0x71, 0xB8, 0x81, 0x89, 0x76, 0x54, 0x74, 0x17, 0x6C, 0x23, 0x78, 0x3C, 0x76, 0x46, 0x53, 0xF1, 0x7A, 0xAE, 0x78, 0x30, 0x39, 0x6F, 0x7D, 0xCC, 0x79, 0x99, 0x29, 0xF7, 0x7F, 0xC7, 0x7A, 0x31, 0x23, 0x5A, 0x80, 0xA2, 0x7A, 0x6E, 0xB1, 0x9E, 0x6D, 0x5F, 0x78, 0x78, 0xA4, 0x6C, 0x6F, 0xF5, 0x78, 0xFC, 0x92, 0xD4, 0x72, 0x92, 0x7A, 0x49, 0x80, 0x10, 0x74, 0xE3, 0x7B, 0x19, 0x6A, 0xAF, 0x77, 0x06, 0x7B, 0x65, 0x51, 0x85, 0x7A, 0x02, 0x7B, 0xAB, 0x38, 0x6F, 0x7D, 0x5E, 0x7B, 0x8B, 0x29, 0x6B, 0x7F, 0x85, 0x7B, 0x4E, 0x22, 0xF4, 0x80, 0x74, 0x7B, 0x31, 0xAE, 0x7F, 0x6B, 0xB5, 0x83, 0x4C, 0xA2, 0x62, 0x6D, 0x94, 0x82, 0x9D, 0x90, 0xA6, 0x70, 0x97, 0x82, 0x53, 0x7D, 0xE9, 0x73, 0x5A, 0x81, 0xBB, 0x69, 0x1F, 0x76, 0x05, 0x80, 0xBC, 0x51, 0x8C, 0x79, 0x3C, 0x7F, 0x55, 0x38, 0x95, 0x7D, 0x06, 0x7D, 0x6B, 0x29, 0x3F, 0x7F, 0x5D, 0x7C, 0x33, 0x22, 0xAF, 0x80, 0x5F, 0x7B, 0xAC, 0xAD, 0xB1, 0x69, 0x69, 0x8C, 0xC9, 0x9F, 0xA9, 0x6C, 0x2F, 0x8B, 0xC0, 0x8E, 0x17, 0x6F, 0x5D, 0x8A, 0x2B, 0x7C, 0xAB, 0x72, 0x22, 0x88, 0x3C, 0x68, 0xB3, 0x74, 0xFF, 0x86, 0x0C, 0x51, 0x71, 0x78, 0x81, 0x83, 0x28, 0x38, 0x33, 0x7C, 0xC0, 0x7F, 0x4A, 0x29, 0x06, 0x7F, 0x47, 0x7C, 0xEE, 0x22, 0x8A, 0x80, 0x5D, 0x7B, 0xEB, 0xAC, 0x9A, 0x68, 0x62, 0x97, 0x31, 0x9E, 0x7E, 0x6B, 0x14, 0x95, 0x6D, 0x8D, 0xDD, 0x6E, 0x2B, 0x92, 0x79, 0x7C, 0x22, 0x71, 0x11, 0x8F, 0x5F, 0x68, 0x2A, 0x74, 0x07, 0x8C, 0x2F, 0x50, 0x8D, 0x77, 0xCD, 0x87, 0x79, 0x37, 0x6F, 0x7C, 0x7E, 0x81, 0x43, 0x28, 0xC7, 0x7F, 0x3A, 0x7D, 0x9C, 0x22, 0x84, 0x80, 0x65, 0x7C, 0x0F, 0xA9, 0x05, 0x67, 0x54, 0xA3, 0x4B, 0x9D, 0x2A, 0x6A, 0x19, 0xA0, 0x21, 0x8D, 0xD5, 0x6D, 0x09, 0x9C, 0x03, 0x7B, 0xBF, 0x70, 0x03, 0x97, 0x7D, 0x67, 0x41, 0x73, 0x39, 0x93, 0x11, 0x50, 0x2E, 0x77, 0x25, 0x8C, 0x5F, 0x37, 0x12, 0x7C, 0x36, 0x83, 0x7D, 0x28, 0xBD, 0x7F, 0x2F, 0x7E, 0x5F, 0x22, 0xA6, 0x80, 0x73, 0x7C, 0x35, 0xA8, 0x81, 0x66, 0x5D, 0xAD, 0x3A, 0x9B, 0xE6, 0x69, 0x4C, 0xA9, 0x14, 0x8B, 0xCA, 0x6C, 0x75, 0xA3, 0xFE, 0x7A, 0x25, 0x6F, 0x7A, 0x9E, 0xA4, 0x66, 0x16, 0x72, 0xC3, 0x98, 0x6D, 0x4F, 0xC7, 0x76, 0xBA, 0x90, 0x41, 0x36, 0xF2, 0x7B, 0xF3, 0x85, 0x73, 0x29, 0x01, 0x7F, 0x22, 0x7F, 0x19, 0x23, 0x1D, 0x80, 0x80, 0x7C, 0x67, 0xA7, 0xB2, 0x65, 0xB0, 0xB6, 0x33, 0x9B, 0x0C, 0x68, 0xA5, 0xB1, 0x6B, 0x8B, 0x3A, 0x6C, 0x17, 0xAB, 0xC2, 0x79, 0xAA, 0x6F, 0x20, 0xA5, 0x25, 0x65, 0xDF, 0x72, 0x51, 0x9D, 0x60, 0x4E, 0xED, 0x76, 0x6F, 0x93, 0x86, 0x36, 0xF4, 0x7B, 0xB5, 0x87, 0x18, 0x29, 0x8C, 0x7F, 0x17, 0x7F, 0xBF, 0x23, 0xDE, 0x80, 0x8E, 0x7C, 0x9C, 0xAA, 0x3D, 0x7B, 0xEC, 0x61, 0xCD, 0x9E, 0x17, 0x7B, 0xF6, 0x65, 0xD8, 0x8D, 0x02, 0x7B, 0xE3, 0x6B, 0x6D, 0x7A, 0x6D, 0x7C, 0x50, 0x6E, 0xF2, 0x66, 0x89, 0x7C, 0xFD, 0x72, 0x54, 0x50, 0x98, 0x7E, 0x0C, 0x75, 0x2E, 0x39, 0x77, 0x7F, 0xB4, 0x77, 0xC9, 0x29, 0x83, 0x81, 0x2C, 0x78, 0xDC, 0x22, 0xC5, 0x81, 0xCE, 0x79, 0x4E, 0xA7, 0x2D, 0x79, 0x44, 0x6C, 0xCD, 0x9B, 0x8D, 0x79, 0xE1, 0x6E, 0xAA, 0x8C, 0x43, 0x7A, 0x6A, 0x71, 0x32, 0x7A, 0xCD, 0x7B, 0x29, 0x73, 0xC5, 0x66, 0x4E, 0x7B, 0xF3, 0x76, 0x27, 0x4F, 0xE6, 0x7D, 0x69, 0x78, 0x16, 0x37, 0x54, 0x7F, 0x78, 0x79, 0x79, 0x28, 0xB4, 0x80, 0xE1, 0x7A, 0x03, 0x22, 0x73, 0x81, 0x7F, 0x7A, 0x39, 0xA4, 0x69, 0x76, 0xE2, 0x77, 0x3F, 0x99, 0xDC, 0x77, 0xC7, 0x77, 0xCF, 0x88, 0xDD, 0x78, 0x9E, 0x79, 0x42, 0x78, 0xB4, 0x79, 0xCB, 0x7A, 0x41, 0x65, 0x36, 0x7A, 0xE8, 0x7A, 0xFF, 0x4D, 0xD2, 0x7C, 0xD3, 0x7B, 0x78, 0x36, 0xAB, 0x7F, 0x18, 0x7B, 0x54, 0x28, 0x68, 0x80, 0x9E, 0x7B, 0x18, 0x22, 0x42, 0x81, 0x49, 0x7A, 0xFB, 0xA2, 0x3F, 0x75, 0x03, 0x81, 0x3B, 0x97, 0x7B, 0x75, 0xC5, 0x81, 0x01, 0x86, 0xD2, 0x76, 0xDD, 0x80, 0xF1, 0x76, 0xB9, 0x78, 0x74, 0x80, 0x78, 0x64, 0x15, 0x79, 0xF4, 0x7F, 0xED, 0x4D, 0xF1, 0x7C, 0x0A, 0x7E, 0xDC, 0x37, 0x7B, 0x7E, 0xBC, 0x7D, 0x15, 0x28, 0x7C, 0x80, 0x77, 0x7B, 0xEF, 0x22, 0x26, 0x81, 0x35, 0x7B, 0x6F, 0xA1, 0x63, 0x73, 0x1B, 0x89, 0xE0, 0x94, 0xDC, 0x74, 0x54, 0x89, 0x7C, 0x84, 0xBF, 0x75, 0xD9, 0x88, 0x49, 0x75, 0x35, 0x77, 0x66, 0x86, 0xA1, 0x63, 0xCF, 0x78, 0xFA, 0x84, 0xEB, 0x4E, 0x25, 0x7B, 0x5B, 0x82, 0x72, 0x36, 0xEC, 0x7E, 0x79, 0x7E, 0xD4, 0x28, 0x44, 0x80, 0x63, 0x7C, 0x9B, 0x22, 0x14, 0x81, 0x34, 0x7B, 0xA6, 0x9F, 0x28, 0x71, 0xB3, 0x93, 0xAE, 0x94, 0x87, 0x72, 0xF3, 0x92, 0x15, 0x84, 0xD3, 0x74, 0xD2, 0x90, 0x3F, 0x74, 0x40, 0x76, 0x80, 0x8D, 0xA7, 0x63, 0x21, 0x78, 0x18, 0x8A, 0x66, 0x4D, 0x26, 0x7A, 0xCA, 0x86, 0x3E, 0x35, 0x9B, 0x7E, 0x43, 0x80, 0xA4, 0x27, 0xDF, 0x80, 0x54, 0x7D, 0x38, 0x22, 0x03, 0x81, 0x36, 0x7B, 0xC0, 0x9D, 0x7E, 0x70, 0x83, 0x9F, 0x3C, 0x94, 0xB4, 0x72, 0x01, 0x9C, 0x73, 0x85, 0x26, 0x73, 0xAD, 0x99, 0x0B, 0x74, 0x7F, 0x75, 0x53, 0x95, 0x38, 0x61, 0x98, 0x77, 0x77, 0x90, 0xCE, 0x4C, 0xDD, 0x7A, 0x3E, 0x8A, 0xDC, 0x35, 0x27, 0x7E, 0x00, 0x82, 0xAC, 0x27, 0xAF, 0x80, 0x3F, 0x7D, 0xDD, 0x21, 0xF8, 0x81, 0x34, 0x7B, 0xD2, 0x9D, 0x87, 0x6F, 0x6A, 0xA8, 0xA6, 0x92, 0xC4, 0x71, 0x3C, 0xA5, 0x4C, 0x83, 0x32, 0x73, 0x1E, 0xA0, 0xD5, 0x72, 0x9F, 0x74, 0xDC, 0x9B, 0xFB, 0x60, 0x55, 0x76, 0xFF, 0x96, 0x29, 0x4C, 0x43, 0x79, 0xCB, 0x8E, 0x9A, 0x35, 0x15, 0x7D, 0xBB, 0x84, 0x7B, 0x27, 0xCE, 0x80, 0x23, 0x7E, 0x7B, 0x22, 0x2D, 0x81, 0x2B, 0x7B, 0xED, 0x9B, 0xD1, 0x6E, 0xED, 0xB1, 0x26, 0x91, 0x08, 0x70, 0x6C, 0xAD, 0x68, 0x82, 0x35, 0x72, 0xA8, 0xA8, 0x44, 0x71, 0x9B, 0x74, 0x8D, 0xA2, 0x03, 0x5F, 0xF7, 0x76, 0x89, 0x9A, 0xEB, 0x4B, 0xA5, 0x79, 0x66, 0x91, 0xB9, 0x35, 0x66, 0x7D, 0x7E, 0x86, 0x18, 0x28, 0x38, 0x80, 0x08, 0x7F, 0x10, 0x22, 0x9E, 0x81, 0x20, 0x7C, 0x0E, 0x9D, 0x3D, 0x84, 0x0C, 0x63, 0x44, 0x93, 0x1E, 0x83, 0x2F, 0x67, 0x25, 0x83, 0x5F, 0x82, 0x25, 0x6B, 0xA0, 0x73, 0x0D, 0x81, 0x76, 0x6E, 0xF5, 0x60, 0x07, 0x81, 0x49, 0x71, 0xE9, 0x4C, 0x30, 0x81, 0x1F, 0x74, 0xDD, 0x35, 0x27, 0x81, 0x9A, 0x77, 0x9F, 0x27, 0x51, 0x82, 0x38, 0x78, 0xDC, 0x21, 0x67, 0x82, 0x81, 0x79, 0x5C, 0x99, 0x33, 0x81, 0xD6, 0x6C, 0xEF, 0x8F, 0x82, 0x81, 0x3F, 0x6E, 0xB5, 0x82, 0x53, 0x80, 0x8F, 0x70, 0xE9, 0x72, 0xBF, 0x80, 0x66, 0x73, 0x93, 0x5F, 0xB3, 0x80, 0x2B, 0x75, 0xAD, 0x4B, 0x52, 0x80, 0x75, 0x77, 0x95, 0x34, 0x69, 0x81, 0x51, 0x79, 0x29, 0x27, 0x13, 0x81, 0xF7, 0x79, 0xD6, 0x21, 0x64, 0x82, 0x40, 0x7A, 0x1A, 0x98, 0x4E, 0x7F, 0x6F, 0x75, 0x5C, 0x8E, 0x7A, 0x7F, 0x34, 0x76, 0xA4, 0x7F, 0xA3, 0x7F, 0x0A, 0x78, 0x2D, 0x70, 0x85, 0x7F, 0x32, 0x79, 0x89, 0x5E, 0xF9, 0x7F, 0x1E, 0x7A, 0x25, 0x4A, 0x21, 0x7F, 0xD5, 0x7A, 0xBF, 0x34, 0x03, 0x80, 0xFE, 0x7A, 0xE1, 0x27, 0x11, 0x81, 0xBE, 0x7A, 0xCA, 0x21, 0x85, 0x82, 0x11, 0x7A, 0xBC, 0x94, 0x79, 0x7D, 0x92, 0x7E, 0xD5, 0x8D, 0x3E, 0x7D, 0x77, 0x7F, 0x32, 0x7F, 0x0F, 0x7D, 0xB8, 0x7F, 0x5E, 0x6F, 0x53, 0x7E, 0x2E, 0x7F, 0x4B, 0x5D, 0xDF, 0x7E, 0x62, 0x7E, 0xE1, 0x49, 0x73, 0x7F, 0x43, 0x7E, 0x1C, 0x34, 0x28, 0x80, 0xB2, 0x7C, 0x94, 0x27, 0x40, 0x81, 0x9A, 0x7B, 0x8E, 0x21, 0xB0, 0x81, 0xFE, 0x7B, 0x1C, 0x96, 0x17, 0x7C, 0x90, 0x87, 0xAF, 0x8B, 0x09, 0x7C, 0x52, 0x87, 0x42, 0x7C, 0x3D, 0x7C, 0x9C, 0x86, 0x0B, 0x6D, 0x1D, 0x7D, 0x21, 0x85, 0x11, 0x5B, 0xDC, 0x7D, 0xC3, 0x83, 0xCB, 0x49, 0x86, 0x7E, 0xC0, 0x81, 0x85, 0x34, 0x3A, 0x80, 0x71, 0x7E, 0x38, 0x27, 0x47, 0x81, 0x85, 0x7C, 0x28, 0x21, 0xB3, 0x81, 0xFB, 0x7B, 0x45, 0x92, 0x68, 0x7A, 0xC3, 0x90, 0xA7, 0x88, 0xD5, 0x7A, 0xE3, 0x8F, 0x3F, 0x7A, 0xF8, 0x7B, 0x6A, 0x8D, 0x44, 0x6C, 0x79, 0x7C, 0x13, 0x8B, 0x84, 0x5C, 0x00, 0x7C, 0xF5, 0x88, 0xA8, 0x49, 0x3A, 0x7E, 0x3C, 0x84, 0xF7, 0x33, 0xF2, 0x80, 0x2D, 0x7F, 0xE4, 0x27, 0x0A, 0x81, 0x6F, 0x7C, 0xB2, 0x21, 0x82, 0x81, 0xF7, 0x7B, 0x54, 0x92, 0xCB, 0x79, 0x73, 0x9B, 0x08, 0x89, 0x66, 0x79, 0xEB, 0x98, 0xFC, 0x7A, 0x60, 0x7A, 0x94, 0x96, 0x34, 0x6B, 0x02, 0x7B, 0x4B, 0x92, 0xE1, 0x5A, 0xA7, 0x7C, 0x35, 0x8E, 0x6A, 0x48, 0xD6, 0x7D, 0xA9, 0x89, 0x04, 0x33, 0x65, 0x7F, 0xE7, 0x81, 0xAE, 0x26, 0xA4, 0x81, 0x50, 0x7D, 0x3B, 0x21, 0x34, 0x81, 0xEA, 0x7B, 0x55, 0x91, 0x9C, 0x79, 0x06, 0xA4, 0x1A, 0x87, 0xAB, 0x79, 0x6E, 0xA1, 0x56, 0x79, 0x38, 0x7A, 0x14, 0x9D, 0x6E, 0x69, 0xFF, 0x7A, 0xBB, 0x98, 0xFA, 0x5A, 0x0E, 0x7B, 0xBC, 0x93, 0xA2, 0x48, 0x50, 0x7D, 0x3E, 0x8C, 0x96, 0x33, 0x0F, 0x7F, 0xA7, 0x83, 0x42, 0x26, 0x6E, 0x81, 0x2F, 0x7D, 0xB5, 0x21, 0x0B, 0x81, 0xD7, 0x7B, 0x57, 0x8F, 0x8F, 0x78, 0x99, 0xAC, 0x01, 0x85, 0xC4, 0x78, 0xBE, 0xA8, 0xFF, 0x79, 0x97, 0x79, 0x6A, 0xA4, 0x6F, 0x6A, 0x22, 0x7A, 0x39, 0x9E, 0xC1, 0x59, 0xF2, 0x7B, 0x56, 0x98, 0x33, 0x48, 0x49, 0x7C, 0xDC, 0x8F, 0x6C, 0x34, 0x36, 0x7F, 0x65, 0x84, 0xC3, 0x26, 0xAE, 0x81, 0x0D, 0x7E, 0x2D, 0x20, 0xFD, 0x81, 0xC4, 0x7B, 0x5E, 0x8F, 0xD4, 0x8B, 0x58, 0x64, 0x37, 0x87, 0xF5, 0x89, 0xB2, 0x67, 0xC9, 0x79, 0xE6, 0x88, 0x16, 0x6B, 0xBD, 0x6A, 0x56, 0x86, 0x9D, 0x6E, 0xFB, 0x59, 0xAA, 0x85, 0x8D, 0x71, 0x91, 0x47, 0xEF, 0x84, 0x45, 0x74, 0x7F, 0x32, 0x37, 0x83, 0x76, 0x77, 0x5A, 0x25, 0x75, 0x83, 0x23, 0x78, 0xDD, 0x20, 0x07, 0x83, 0x02, 0x79, 0x7E, 0x8C, 0x84, 0x89, 0x54, 0x6B, 0xDD, 0x84, 0x4C, 0x87, 0xFC, 0x6D, 0xCE, 0x78, 0x8F, 0x86, 0x74, 0x70, 0x63, 0x6A, 0x5C, 0x85, 0x79, 0x72, 0xEE, 0x59, 0x5E, 0x84, 0x88, 0x75, 0x0C, 0x46, 0xC5, 0x83, 0xAE, 0x76, 0xFE, 0x31, 0xB1, 0x83, 0x28, 0x78, 0xC2, 0x25, 0x80, 0x82, 0xEF, 0x79, 0xA3, 0x20, 0x51, 0x82, 0xD7, 0x7A, 0x00, 0x8D, 0x7F, 0x87, 0x57, 0x73, 0xF6, 0x82, 0xE9, 0x86, 0x3F, 0x74, 0xFE, 0x75, 0xE5, 0x85, 0x2C, 0x76, 0xA2, 0x68, 0x83, 0x84, 0x72, 0x78, 0x34, 0x58, 0xD6, 0x83, 0x97, 0x79, 0x28, 0x45, 0x83, 0x83, 0x28, 0x79, 0xF7, 0x31, 0x6E, 0x82, 0xDD, 0x7A, 0x55, 0x25, 0xB8, 0x82, 0xBE, 0x7A, 0x6E, 0x20, 0xB5, 0x82, 0xB2, 0x7A, 0x76, 0x8A, 0xAF, 0x85, 0x8E, 0x7C, 0x55, 0x82, 0x25, 0x84, 0xAC, 0x7D, 0x2B, 0x75, 0xA0, 0x84, 0x04, 0x7D, 0x7E, 0x67, 0x63, 0x83, 0xBF, 0x7E, 0x2B, 0x57, 0x99, 0x82, 0xFC, 0x7D, 0xBB, 0x44, 0x8F, 0x82, 0xBC, 0x7D, 0x35, 0x31, 0xB9, 0x82, 0xA0, 0x7B, 0xE8, 0x26, 0x1B, 0x82, 0x9F, 0x7B, 0x17, 0x21, 0x0F, 0x82, 0x9F, 0x7A, 0xBE, 0x88, 0xA8, 0x84, 0xB2, 0x84, 0xB9, 0x7F, 0x97, 0x83, 0xB3, 0x84, 0xC2, 0x73, 0x56, 0x82, 0xFB, 0x83, 0x9E, 0x65, 0xE0, 0x82, 0x97, 0x83, 0x6A, 0x56, 0x3B, 0x82, 0x64, 0x82, 0x3C, 0x45, 0x78, 0x82, 0x3D, 0x80, 0x65, 0x32, 0x3F, 0x82, 0x61, 0x7D, 0x72, 0x26, 0x50, 0x82, 0x88, 0x7B, 0xA0, 0x21, 0x22, 0x82, 0x99, 0x7A, 0xD9, 0x86, 0xFA, 0x83, 0x87, 0x8D, 0x80, 0x7E, 0x1D, 0x82, 0xAF, 0x8C, 0x7D, 0x71, 0xC5, 0x81, 0xF0, 0x8A, 0xDA, 0x65, 0xF6, 0x81, 0x7B, 0x89, 0x52, 0x56, 0x4A, 0x81, 0x9D, 0x86, 0xB9, 0x45, 0xD6, 0x81, 0xA5, 0x83, 0xB6, 0x32, 0x44, 0x82, 0x0E, 0x7F, 0x09, 0x26, 0x13, 0x82, 0x6C, 0x7C, 0x19, 0x20, 0xDB, 0x82, 0x92, 0x7A, 0xD9, 0x86, 0xB3, 0x82, 0xB3, 0x97, 0x5B, 0x7D, 0xD4, 0x81, 0xBE, 0x95, 0xDD, 0x71, 0x02, 0x81, 0x41, 0x93, 0x4D, 0x64, 0x7B, 0x80, 0xFA, 0x90, 0x07, 0x55, 0x8F, 0x80, 0xE5, 0x8C, 0x36, 0x45, 0x2B, 0x81, 0x15, 0x87, 0x56, 0x31, 0x56, 0x81, 0xC4, 0x80, 0x95, 0x25, 0x64, 0x82, 0x49, 0x7C, 0x84, 0x20, 0x52, 0x82, 0x82, 0x7A, 0xCA, 0x84, 0xD6, 0x82, 0x0E, 0x9F, 0xF2, 0x7C, 0x6A, 0x81, 0x58, 0x9D, 0x66, 0x70, 0x38, 0x80, 0xF8, 0x99, 0xED, 0x62, 0x23, 0x80, 0x9C, 0x95, 0xB7, 0x54, 0x85, 0x80, 0x84, 0x91, 0x2F, 0x44, 0x40, 0x80, 0xBF, 0x8A, 0x8B, 0x30, 0x5F, 0x81, 0x95, 0x81, 0xE1, 0x24, 0xC9, 0x82, 0x2C, 0x7C, 0xD9, 0x1F, 0xDD, 0x82, 0x6D, 0x7A, 0xB7, 0x84, 0x57, 0x81, 0x67, 0xA8, 0x00, 0x7B, 0x4C, 0x80, 0xC3, 0xA4, 0xBD, 0x71, 0x13, 0x80, 0x39, 0xA0, 0x57, 0x63, 0x6E, 0x80, 0x1F, 0x9B, 0x5C, 0x53, 0xA8, 0x80, 0x59, 0x95, 0x6D, 0x43, 0xCD, 0x80, 0x7A, 0x8D, 0x24, 0x30, 0x8C, 0x81, 0x69, 0x83, 0x1C, 0x24, 0x8E, 0x82, 0x11, 0x7D, 0x2C, 0x1F, 0x80, 0x82, 0x5A, 0x7A, 0xA8, 0x81, 0x69, 0x93, 0x5F, 0x64, 0xAB, 0x79, 0x83, 0x91, 0x29, 0x68, 0x2E, 0x6E, 0xFA, 0x8E, 0xC8, 0x6B, 0xE3, 0x61, 0x8E, 0x8C, 0x76, 0x6E, 0x78, 0x53, 0x1E, 0x8A, 0x62, 0x71, 0x24, 0x43, 0x1D, 0x87, 0xF5, 0x74, 0x1D, 0x2F, 0x85, 0x85, 0x9A, 0x76, 0xFB, 0x23, 0xB4, 0x84, 0x21, 0x78, 0xBE, 0x1E, 0xA9, 0x83, 0x81, 0x79, 0x7F, 0x80, 0xA5, 0x91, 0xA7, 0x6B, 0x10, 0x79, 0xE0, 0x8F, 0xB3, 0x6D, 0x25, 0x6E, 0xD5, 0x8D, 0x71, 0x6F, 0x8B, 0x61, 0xFD, 0x8B, 0x97, 0x72, 0x02, 0x52, 0xF5, 0x89, 0x9F, 0x74, 0x2C, 0x42, 0x55, 0x87, 0x7E, 0x76, 0x3A, 0x2E, 0xFB, 0x85, 0x36, 0x78, 0x3F, 0x23, 0xD8, 0x83, 0xF0, 0x79, 0x59, 0x1F, 0x1D, 0x83, 0x66, 0x79, 0xD0, 0x80, 0x54, 0x8F, 0xF7, 0x72, 0x7D, 0x78, 0x07, 0x8E, 0x36, 0x74, 0x27, 0x6B, 0xAB, 0x8C, 0x58, 0x75, 0x44, 0x60, 0x3A, 0x8A, 0x8A, 0x76, 0xC1, 0x52, 0xB1, 0x88, 0xD4, 0x78, 0x01, 0x41, 0x93, 0x86, 0xFC, 0x78, 0xF2, 0x2E, 0xF3, 0x84, 0xE8, 0x79, 0xA6, 0x24, 0x36, 0x83, 0xC3, 0x79, 0xFB, 0x1F, 0xA3, 0x83, 0x49, 0x7A, 0x1D, 0x80, 0x3B, 0x8E, 0x83, 0x7A, 0x50, 0x77, 0x31, 0x8C, 0xE1, 0x7B, 0xAC, 0x6A, 0x3C, 0x8B, 0x3E, 0x7B, 0xD7, 0x5E, 0xB8, 0x89, 0xB5, 0x7C, 0x61, 0x51, 0x17, 0x88, 0x39, 0x7C, 0x62, 0x41, 0x0E, 0x86, 0x96, 0x7B, 0xF0, 0x2F, 0xBF, 0x84, 0xB6, 0x7B, 0x04, 0x24, 0xC4, 0x83, 0xA4, 0x7A, 0x86, 0x20, 0x0D, 0x83, 0x33, 0x7A, 0x4E, 0x7C, 0xBF, 0x8D, 0x86, 0x82, 0x87, 0x75, 0x7F, 0x8B, 0xFE, 0x82, 0xB1, 0x6A, 0xA8, 0x8A, 0x48, 0x81, 0xD7, 0x5D, 0xEE, 0x88, 0xC9, 0x81, 0xA1, 0x4F, 0x91, 0x87, 0x8D, 0x80, 0x8C, 0x40, 0xFF, 0x86, 0x22, 0x7E, 0xF6, 0x30, 0x29, 0x84, 0x7B, 0x7C, 0x6C, 0x24, 0xFA, 0x83, 0x8A, 0x7A, 0xFA, 0x20, 0x29, 0x83, 0x27, 0x7A, 0x5A, 0x7B, 0x1D, 0x8C, 0xA5, 0x8A, 0x53, 0x73, 0xC1, 0x8B, 0x1E, 0x89, 0x8D, 0x69, 0x5D, 0x89, 0x5E, 0x88, 0x69, 0x5D, 0x47, 0x87, 0xC3, 0x86, 0xFA, 0x4F, 0x27, 0x86, 0xC3, 0x84, 0xB2, 0x40, 0xB0, 0x85, 0x8D, 0x82, 0x17, 0x2F, 0x60, 0x84, 0x2B, 0x7D, 0xE2, 0x24, 0x90, 0x83, 0x6C, 0x7B, 0x5D, 0x1F, 0xE4, 0x83, 0x1D, 0x7A, 0x4C, 0x79, 0xDD, 0x8B, 0xD7, 0x93, 0x31, 0x72, 0x1B, 0x8A, 0x2F, 0x92, 0x1F, 0x66, 0xF5, 0x88, 0xA9, 0x90, 0x17, 0x5C, 0xCF, 0x87, 0x36, 0x8D, 0x69, 0x4F, 0xD4, 0x85, 0xFE, 0x8A, 0x02, 0x3F, 0xFB, 0x84, 0xF6, 0x85, 0x41, 0x2E, 0x27, 0x83, 0xDF, 0x7F, 0x31, 0x23, 0xB7, 0x83, 0x4C, 0x7B, 0xAB, 0x1F, 0x40, 0x83, 0x0F, 0x7A, 0x2C, 0x78, 0xBD, 0x8B, 0x67, 0x9B, 0x01, 0x70, 0xD0, 0x89, 0xC3, 0x98, 0xDE, 0x66, 0xB7, 0x88, 0x43, 0x96, 0x0A, 0x5B, 0xE2, 0x86, 0xCF, 0x92, 0xB9, 0x4E, 0xEC, 0x85, 0xAC, 0x8E, 0x57, 0x3E, 0xBA, 0x84, 0xAE, 0x87, 0xE5, 0x2C, 0xE7, 0x83, 0xBA, 0x80, 0x3D, 0x22, 0xE7, 0x83, 0x34, 0x7B, 0xE2, 0x1E, 0xA4, 0x82, 0xFD, 0x7A, 0x07, 0x78, 0x66, 0x8A, 0xAF, 0xA2, 0xFC, 0x6E, 0xF1, 0x88, 0xEC, 0x9F, 0x8A, 0x65, 0xA2, 0x87, 0xC8, 0x9B, 0x4F, 0x5B, 0x9A, 0x86, 0xA5, 0x97, 0x24, 0x4C, 0xE1, 0x85, 0x7C, 0x91, 0xCF, 0x3D, 0xAA, 0x84, 0xB0, 0x8A, 0x6C, 0x2B, 0xC5, 0x83, 0xC3, 0x81, 0x44, 0x22, 0x44, 0x83, 0x26, 0x7C, 0x15, 0x1E, 0x2D, 0x82, 0xE7, 0x79, 0xE4, 0x73, 0x00, 0x9D, 0x33, 0x65, 0xA0, 0x6C, 0x09, 0x9A, 0xE1, 0x67, 0x7C, 0x62, 0x5F, 0x97, 0x34, 0x6A, 0xE3, 0x58, 0x1F, 0x93, 0xE6, 0x6D, 0x77, 0x4C, 0x39, 0x90, 0x8D, 0x70, 0x23, 0x3D, 0xA8, 0x8C, 0x8A, 0x73, 0x3C, 0x2C, 0x18, 0x87, 0xF0, 0x76, 0x82, 0x21, 0x9E, 0x85, 0x3E, 0x78, 0x76, 0x1D, 0x25, 0x84, 0x19, 0x79, 0x4E, 0x72, 0x9C, 0x9B, 0xFB, 0x6A, 0x88, 0x6B, 0x51, 0x99, 0x75, 0x6C, 0x8E, 0x62, 0x3D, 0x96, 0x31, 0x6E, 0xBF, 0x58, 0x03, 0x93, 0x26, 0x70, 0xA9, 0x4B, 0x74, 0x8F, 0xC6, 0x72, 0xEC, 0x3D, 0x23, 0x8B, 0xFC, 0x75, 0x2B, 0x2B, 0xDB, 0x87, 0x93, 0x77, 0x8E, 0x21, 0xE3, 0x85, 0x15, 0x78, 0xE7, 0x1D, 0xA9, 0x84, 0x07, 0x79, 0x7A, 0x71, 0x30, 0x9A, 0xC7, 0x70, 0xCC, 0x69, 0x87, 0x98, 0x23, 0x72, 0xC9, 0x61, 0xA2, 0x94, 0xEC, 0x73, 0xFD, 0x57, 0x4F, 0x92, 0x1A, 0x75, 0x19, 0x4B, 0x27, 0x8F, 0x12, 0x76, 0x8C, 0x3C, 0xDB, 0x8B, 0x5F, 0x77, 0xB9, 0x2B, 0xF6, 0x87, 0x3B, 0x78, 0xCE, 0x22, 0x50, 0x84, 0xEB, 0x79, 0x64, 0x1E, 0x39, 0x83, 0xF1, 0x79, 0xA3, 0x70, 0x35, 0x99, 0x6F, 0x77, 0xFA, 0x68, 0xF5, 0x97, 0x01, 0x79, 0x13, 0x5F, 0x95, 0x94, 0x1C, 0x79, 0xC2, 0x55, 0x7E, 0x91, 0x3A, 0x7A, 0x59, 0x49, 0x61, 0x8E, 0x57, 0x7A, 0xAE, 0x3B, 0xDD, 0x8A, 0xE7, 0x7A, 0x84, 0x2C, 0x4A, 0x86, 0xFA, 0x7A, 0x14, 0x22, 0xC3, 0x84, 0xC7, 0x79, 0xD6, 0x1E, 0xA9, 0x83, 0xDB, 0x79, 0xBA, 0x6E, 0xAF, 0x98, 0x22, 0x7F, 0x6B, 0x67, 0xC8, 0x96, 0x2A, 0x7F, 0x99, 0x5E, 0x5F, 0x93, 0x57, 0x7F, 0x4E, 0x56, 0x27, 0x90, 0x12, 0x7E, 0xE0, 0x48, 0xE1, 0x8D, 0x77, 0x7E, 0x83, 0x3B, 0x09, 0x8A, 0x79, 0x7D, 0x44, 0x2C, 0x33, 0x86, 0xC0, 0x7B, 0x53, 0x22, 0xD7, 0x84, 0xA8, 0x7A, 0x34, 0x1E, 0xC9, 0x83, 0xC7, 0x79, 0xBA, 0x6D, 0x23, 0x97, 0x40, 0x86, 0x67, 0x67, 0x0D, 0x95, 0x36, 0x86, 0x13, 0x5D, 0x69, 0x92, 0x7E, 0x85, 0x36, 0x54, 0x09, 0x8F, 0xA1, 0x84, 0x20, 0x48, 0xAA, 0x8C, 0xF2, 0x82, 0x8C, 0x3B, 0x0A, 0x8A, 0x0E, 0x80, 0x12, 0x2B, 0x96, 0x86, 0x7F, 0x7C, 0x8D, 0x22, 0x6F, 0x84, 0x88, 0x7A, 0x80, 0x1E, 0x83, 0x83, 0xB5, 0x79, 0xA2, 0x6A, 0x3A, 0x96, 0x42, 0x8E, 0x35, 0x63, 0xFB, 0x94, 0x0D, 0x8D, 0x4B, 0x5B, 0xBB, 0x91, 0xA1, 0x8C, 0x11, 0x53, 0xC2, 0x8F, 0x05, 0x8A, 0x18, 0x49, 0x20, 0x8C, 0x4C, 0x87, 0x15, 0x3A, 0xBB, 0x89, 0x81, 0x82, 0xE1, 0x2A, 0xAF, 0x86, 0x39, 0x7D, 0xB0, 0x21, 0xB5, 0x84, 0x66, 0x7A, 0xB7, 0x1D, 0xE8, 0x83, 0xA3, 0x79, 0x75, 0x6A, 0xED, 0x96, 0x0E, 0x95, 0xC1, 0x64, 0x07, 0x93, 0xCF, 0x93, 0xE2, 0x5B, 0xE9, 0x91, 0x28, 0x91, 0x91, 0x53, 0x46, 0x8E, 0x54, 0x8E, 0xB2, 0x47, 0xB1, 0x8B, 0xDA, 0x8A, 0xAE, 0x39, 0x58, 0x89, 0x3D, 0x85, 0x23, 0x29, 0xE3, 0x86, 0x15, 0x7E, 0x95, 0x21, 0x1D, 0x84, 0x4C, 0x7A, 0xDA, 0x1D, 0x5F, 0x83, 0x8C, 0x79, 0x44, 0x6B, 0x73, 0x94, 0xB2, 0x9C, 0xDE, 0x63, 0x22, 0x93, 0x23, 0x9A, 0x2E, 0x5A, 0x59, 0x90, 0xD5, 0x96, 0x63, 0x51, 0x39, 0x8E, 0x52, 0x92, 0xCA, 0x47, 0x0E, 0x8B, 0xDD, 0x8D, 0xE1, 0x37, 0x5F, 0x89, 0x7A, 0x87, 0x1C, 0x29, 0xBD, 0x86, 0x1D, 0x7F, 0x5F, 0x20, 0xCB, 0x84, 0x3A, 0x7A, 0xF5, 0x1C, 0xF8, 0x83, 0x71, 0x79, 0x17, 0x65, 0x24, 0xA9, 0x01, 0x65, 0x4F, 0x5E, 0x0B, 0xA5, 0xC3, 0x66, 0x6E, 0x55, 0x01, 0xA1, 0x19, 0x69, 0x00, 0x4C, 0xB0, 0x9D, 0x0D, 0x6B, 0xE2, 0x42, 0x0F, 0x98, 0x15, 0x6E, 0x86, 0x35, 0xB6, 0x92, 0x02, 0x71, 0xC1, 0x27, 0x6D, 0x8A, 0xCF, 0x75, 0x99, 0x1E, 0xCE, 0x86, 0xA8, 0x77, 0xEA, 0x1B, 0x1A, 0x84, 0xE5, 0x78, 0xE8, 0x64, 0xB8, 0xA7, 0xDE, 0x69, 0x05, 0x5D, 0x59, 0xA4, 0xCA, 0x6A, 0xE0, 0x54, 0xAF, 0xA0, 0xC5, 0x6D, 0x2F, 0x4B, 0xBA, 0x9C, 0x6B, 0x6F, 0x4D, 0x41, 0xE4, 0x97, 0x27, 0x71, 0x59, 0x36, 0x4C, 0x91, 0x5A, 0x73, 0xAB, 0x27, 0xB5, 0x8A, 0x75, 0x76, 0x87, 0x1F, 0x4F, 0x86, 0x88, 0x78, 0x36, 0x1B, 0xC2, 0x84, 0xDF, 0x78, 0xED, 0x63, 0x37, 0xA6, 0xD8, 0x6E, 0x6B, 0x5B, 0xEC, 0xA3, 0xB8, 0x70, 0x49, 0x54, 0x2A, 0x9F, 0xAE, 0x71, 0xA3, 0x4B, 0x22, 0x9B, 0x4E, 0x73, 0x3F, 0x41, 0x7C, 0x96, 0x5E, 0x74, 0xAF, 0x36, 0x65, 0x90, 0x9A, 0x76, 0x17, 0x27, 0xD6, 0x8A, 0x13, 0x77, 0xA5, 0x1F, 0xCA, 0x86, 0x65, 0x78, 0x8B, 0x1C, 0x71, 0x84, 0xD7, 0x78, 0xEE, 0x61, 0x1D, 0xA5, 0xD2, 0x75, 0x76, 0x5A, 0x48, 0xA2, 0xFD, 0x76, 0x3B, 0x53, 0x49, 0x9E, 0x7B, 0x76, 0xA9, 0x4A, 0x7D, 0x9A, 0x20, 0x77, 0xA4, 0x40, 0xDE, 0x95, 0x54, 0x78, 0x51, 0x35, 0xCC, 0x8F, 0xDF, 0x78, 0xAA, 0x27, 0xA9, 0x89, 0xBA, 0x78, 0xCE, 0x20, 0x05, 0x86, 0x40, 0x78, 0xE0, 0x1C, 0xE0, 0x84, 0xC7, 0x78, 0xE9, 0x61, 0xF5, 0xA4, 0x75, 0x7C, 0x04, 0x59, 0xB2, 0xA1, 0x71, 0x7C, 0x6E, 0x50, 0xFB, 0x9D, 0xC4, 0x7C, 0x3E, 0x49, 0xE9, 0x99, 0x3C, 0x7C, 0x0A, 0x40, 0x78, 0x94, 0x83, 0x7B, 0xCF, 0x35, 0x13, 0x8F, 0x58, 0x7B, 0x1E, 0x27, 0x71, 0x89, 0x6B, 0x79, 0xEE, 0x1F, 0xFD, 0x86, 0x13, 0x79, 0x30, 0x1C, 0xE2, 0x84, 0xAA, 0x78, 0xE0, 0x61, 0x5C, 0xA3, 0x58, 0x82, 0xBF, 0x59, 0xE3, 0xA0, 0x37, 0x82, 0x70, 0x50, 0xD4, 0x9C, 0xDA, 0x81, 0xA0, 0x48, 0x5C, 0x98, 0xE9, 0x80, 0xAF, 0x3F, 0x7B, 0x94, 0x2A, 0x7F, 0x79, 0x34, 0x80, 0x8E, 0xFF, 0x7D, 0x93, 0x27, 0x2C, 0x89, 0x24, 0x7A, 0xFC, 0x1F, 0xBD, 0x85, 0xE2, 0x79, 0x71, 0x1C, 0x9E, 0x84, 0x83, 0x78, 0xC8, 0x5E, 0xE6, 0xA2, 0x7B, 0x8A, 0x1C, 0x58, 0xC1, 0x9F, 0x62, 0x89, 0x6B, 0x51, 0x90, 0x9B, 0x8B, 0x87, 0x96, 0x48, 0x20, 0x98, 0x2B, 0x85, 0xE1, 0x3E, 0xD4, 0x93, 0xA6, 0x83, 0x71, 0x34, 0x23, 0x8E, 0x9E, 0x80, 0x2D, 0x26, 0xCF, 0x88, 0xE6, 0x7C, 0x03, 0x1F, 0x61, 0x85, 0xB1, 0x79, 0x9E, 0x1C, 0x41, 0x84, 0x57, 0x78, 0x9A, 0x5E, 0x05, 0xA1, 0xB3, 0x91, 0x1F, 0x58, 0x7C, 0x9F, 0x38, 0x8F, 0xB6, 0x50, 0x6D, 0x9B, 0x50, 0x8C, 0xD2, 0x48, 0xAA, 0x97, 0x0D, 0x8A, 0x28, 0x3E, 0xD4, 0x92, 0xF5, 0x86, 0xA5, 0x33, 0x6A, 0x8E, 0x55, 0x82, 0x27, 0x26, 0xC7, 0x88, 0xB8, 0x7C, 0xC9, 0x1F, 0x42, 0x85, 0x85, 0x79, 0xB5, 0x1C, 0x0C, 0x84, 0x2B, 0x78, 0x67, 0x5E, 0xD9, 0xA0, 0x38, 0x97, 0x07, 0x58, 0x85, 0x9E, 0x1A, 0x95, 0x42, 0x50, 0xAB, 0x9A, 0x74, 0x91, 0xB1, 0x48, 0x3C, 0x96, 0xA1, 0x8D, 0xC5, 0x3E, 0x8F, 0x93, 0x50, 0x89, 0x62, 0x31, 0xDB, 0x8E, 0x13, 0x83, 0x4A, 0x28, 0x24, 0x88, 0x87, 0x7D, 0x52, 0x1F, 0x93, 0x85, 0x5B, 0x79, 0xC2, 0x1B, 0xF0, 0x84, 0x01, 0x78, 0x3A, 0x5A, 0x09, 0xB2, 0xA8, 0x64, 0x31, 0x53, 0xA1, 0xAE, 0xEA, 0x65, 0x95, 0x4B, 0xE8, 0xA9, 0xFA, 0x68, 0x1D, 0x43, 0x80, 0xA5, 0x00, 0x6A, 0x82, 0x3A, 0x32, 0x9E, 0xF8, 0x6C, 0xEF, 0x30, 0x11, 0x97, 0x56, 0x6F, 0xCD, 0x22, 0x91, 0x8E, 0x13, 0x74, 0x59, 0x1B, 0xA4, 0x88, 0x3D, 0x77, 0x38, 0x18, 0xB1, 0x85, 0xC5, 0x78, 0x71, 0x5A, 0x40, 0xB1, 0x87, 0x68, 0x7B, 0x53, 0x5A, 0xAD, 0xE6, 0x69, 0xE0, 0x4A, 0xFD, 0xA9, 0x76, 0x6B, 0x9A, 0x42, 0x75, 0xA4, 0x43, 0x6D, 0x86, 0x39, 0x9D, 0x9E, 0x0B, 0x6F, 0x94, 0x2F, 0xB8, 0x96, 0xA3, 0x72, 0x05, 0x23, 0x4A, 0x8D, 0x73, 0x75, 0x5B, 0x1C, 0x88, 0x88, 0x16, 0x77, 0x69, 0x19, 0xB7, 0x85, 0xCF, 0x78, 0x4A, 0x5B, 0x5E, 0xAF, 0xC7, 0x6D, 0xCB, 0x53, 0xC9, 0xAC, 0x65, 0x6E, 0xE0, 0x4A, 0xE3, 0xA8, 0x74, 0x6F, 0xD4, 0x42, 0x41, 0xA3, 0x29, 0x71, 0x34, 0x39, 0xD4, 0x9D, 0x04, 0x72, 0x94, 0x2F, 0x8C, 0x95, 0xB1, 0x74, 0x51, 0x22, 0xFB, 0x8D, 0x04, 0x76, 0x53, 0x1D, 0x0E, 0x88, 0x02, 0x77, 0x8F, 0x1A, 0xCD, 0x85, 0xE0, 0x78, 0x1B, 0x59, 0x48, 0xAE, 0xCE, 0x73, 0x21, 0x52, 0x83, 0xAB, 0x6D, 0x73, 0xCA, 0x4A, 0x39, 0xA6, 0xD2, 0x74, 0xC0, 0x42, 0x9F, 0xA1, 0xDA, 0x75, 0x4F, 0x3A, 0xC6, 0x9B, 0xAA, 0x75, 0xD6, 0x2F, 0xA3, 0x94, 0x63, 0x76, 0xB1, 0x21, 0xC4, 0x8C, 0xAF, 0x77, 0x3C, 0x1C, 0xBA, 0x87, 0xFB, 0x77, 0xA6, 0x1B, 0x66, 0x85, 0xE6, 0x77, 0xF1, 0x58, 0x43, 0xAD, 0xEA, 0x78, 0xEC, 0x50, 0xEC, 0xA9, 0xEB, 0x79, 0x27, 0x48, 0xBA, 0xA5, 0x90, 0x79, 0xA8, 0x41, 0x96, 0xA0, 0xF2, 0x79, 0x8B, 0x3A, 0x54, 0x9B, 0x10, 0x79, 0x36, 0x30, 0x04, 0x93, 0x9C, 0x78, 0xFF, 0x22, 0x56, 0x8C, 0x28, 0x78, 0x7C, 0x1C, 0xF3, 0x87, 0xA7, 0x78, 0x10, 0x1B, 0x00, 0x85, 0xB7, 0x77, 0xE9, 0x58, 0x17, 0xAB, 0xF3, 0x80, 0x20, 0x50, 0x6E, 0xA8, 0x67, 0x7F, 0x2C, 0x48, 0x3F, 0xA4, 0xC6, 0x7E, 0x84, 0x40, 0xF1, 0xA0, 0x10, 0x7D, 0xE5, 0x39, 0x74, 0x9A, 0x59, 0x7C, 0xBF, 0x2F, 0x5E, 0x93, 0x6E, 0x7B, 0x48, 0x22, 0xFD, 0x8B, 0xB6, 0x79, 0x76, 0x1D, 0x02, 0x87, 0x4D, 0x78, 0x5A, 0x1A, 0x99, 0x85, 0x6D, 0x77, 0xE1, 0x57, 0x63, 0xAA, 0x61, 0x87, 0xB3, 0x51, 0x45, 0xA7, 0xFF, 0x86, 0xB1, 0x49, 0x89, 0xA3, 0xB2, 0x84, 0xA2, 0x41, 0x2D, 0x9E, 0xCF, 0x82, 0xAF, 0x38, 0x1E, 0x99, 0x2F, 0x80, 0x7A, 0x2E, 0x06, 0x93, 0x37, 0x7D, 0x9F, 0x23, 0x0E, 0x8B, 0x80, 0x7A, 0x60, 0x1D, 0x13, 0x86, 0xFF, 0x78, 0x88, 0x1A, 0x91, 0x85, 0x16, 0x77, 0xC0, 0x56, 0x71, 0xAA, 0x1A, 0x8D, 0xB4, 0x50, 0x56, 0xA7, 0xBA, 0x8C, 0x29, 0x48, 0xE1, 0xA3, 0x38, 0x89, 0x60, 0x40, 0xEA, 0x9E, 0x33, 0x86, 0x7B, 0x37, 0x73, 0x99, 0x2A, 0x83, 0x25, 0x2D, 0x84, 0x93, 0x36, 0x7F, 0x72, 0x23, 0x49, 0x8B, 0x4A, 0x7B, 0x28, 0x1D, 0x55, 0x86, 0xB6, 0x78, 0xA1, 0x1A, 0xCB, 0x84, 0xC5, 0x77, 0x8F, 0x57, 0x60, 0xA9, 0x93, 0x92, 0xEA, 0x50, 0x28, 0xA6, 0xC4, 0x90, 0x73, 0x48, 0x11, 0xA2, 0xB4, 0x8D, 0x31, 0x40, 0x75, 0x9D, 0xC6, 0x8A, 0x27, 0x36, 0x53, 0x99, 0xFF, 0x85, 0xB8, 0x2D, 0x33, 0x93, 0x45, 0x80, 0xD7, 0x23, 0xD0, 0x8A, 0xFF, 0x7B, 0xC9, 0x1D, 0xBA, 0x86, 0x6D, 0x78, 0xB0, 0x1B, 0x16, 0x84, 0x7F, 0x77, 0x5F, 0xB3, 0xBE, 0x68, 0x41, 0x5A, 0x73, 0xA6, 0xDD, 0x6A, 0x92, 0x5E, 0xB4, 0x93, 0xB4, 0x6D, 0x67, 0x64, 0x78, 0x80, 0x68, 0x70, 0x39, 0x69, 0x9D, 0x6A, 0x2A, 0x73, 0x3D, 0x6E, 0x4C, 0x52, 0x56, 0x76, 0xBE, 0x72, 0x7A, 0x38, 0xF2, 0x7B, 0x48, 0x76, 0x03, 0x2A, 0x81, 0x7E, 0x38, 0x78, 0x29, 0x24, 0x40, 0x7F, 0x78, 0x79, 0x23, 0xB1, 0xA1, 0x63, 0xFF, 0x65, 0x55, 0xA4, 0x43, 0x67, 0x53, 0x69, 0x0A, 0x92, 0x25, 0x6B, 0x20, 0x6C, 0xC2, 0x7E, 0xC7, 0x6E, 0x85, 0x6F, 0x87, 0x68, 0x56, 0x71, 0xD2, 0x72, 0x79, 0x50, 0xDA, 0x75, 0xEE, 0x75, 0x81, 0x37, 0xFD, 0x7A, 0xE7, 0x78, 0x00, 0x29, 0xA6, 0x7E, 0x06, 0x79, 0x56, 0x23, 0x85, 0x7F, 0x5F, 0x79, 0xE8, 0xAF, 0x03, 0x5F, 0xD6, 0x72, 0x40, 0xA1, 0x80, 0x63, 0xF0, 0x73, 0xF9, 0x8F, 0xBC, 0x68, 0xBA, 0x76, 0x2A, 0x7B, 0x47, 0x6C, 0x88, 0x76, 0x6F, 0x66, 0x79, 0x70, 0x64, 0x77, 0x78, 0x4F, 0x2B, 0x74, 0xF5, 0x79, 0x08, 0x37, 0x85, 0x7A, 0x5E, 0x7A, 0x0C, 0x29, 0x0C, 0x7D, 0xD4, 0x7A, 0x74, 0x22, 0xD6, 0x7F, 0x50, 0x7A, 0x9B, 0xAC, 0xCB, 0x5D, 0x2D, 0x7D, 0xBC, 0x9F, 0xCF, 0x61, 0x39, 0x7D, 0x93, 0x8D, 0x7F, 0x66, 0x78, 0x7E, 0x2C, 0x79, 0xC5, 0x6A, 0x99, 0x7D, 0xE7, 0x66, 0xC1, 0x6F, 0x1A, 0x7D, 0x33, 0x50, 0x68, 0x74, 0x19, 0x7C, 0x9A, 0x37, 0x5E, 0x7A, 0x0E, 0x7B, 0xF3, 0x28, 0x8E, 0x7D, 0xBA, 0x7B, 0x4F, 0x22, 0x3C, 0x7F, 0x4F, 0x7B, 0x05, 0xAA, 0xC9, 0x5B, 0x10, 0x89, 0x02, 0x9D, 0x71, 0x5F, 0x1D, 0x87, 0x8F, 0x8B, 0x08, 0x64, 0x38, 0x85, 0x9A, 0x7A, 0x33, 0x69, 0x00, 0x84, 0x50, 0x66, 0x7C, 0x6D, 0xC8, 0x83, 0x07, 0x4E, 0xA7, 0x73, 0x60, 0x80, 0x6B, 0x37, 0x5A, 0x79, 0xCB, 0x7D, 0xD8, 0x28, 0x1A, 0x7D, 0xA9, 0x7B, 0xE5, 0x21, 0xC4, 0x7F, 0x59, 0x7B, 0x28, 0xA9, 0x6F, 0x59, 0xC0, 0x93, 0xCE, 0x9C, 0x5B, 0x5E, 0x25, 0x91, 0x88, 0x8B, 0x19, 0x62, 0xEF, 0x8E, 0x97, 0x79, 0x8B, 0x67, 0xB4, 0x8B, 0xE2, 0x64, 0xAA, 0x6C, 0xB3, 0x88, 0xF8, 0x4C, 0x56, 0x72, 0x80, 0x84, 0xBE, 0x35, 0xBE, 0x79, 0x72, 0x7F, 0xA7, 0x27, 0x91, 0x7D, 0xA1, 0x7C, 0x7C, 0x21, 0xA3, 0x7F, 0x71, 0x7B, 0x45, 0xA6, 0x88, 0x57, 0xFD, 0x9F, 0x42, 0x99, 0x4A, 0x5C, 0x3B, 0x9B, 0xC4, 0x89, 0x30, 0x61, 0x89, 0x97, 0xE4, 0x77, 0xF5, 0x66, 0x5D, 0x94, 0x67, 0x64, 0x0A, 0x6B, 0x81, 0x8F, 0xE6, 0x4C, 0x71, 0x71, 0x9A, 0x89, 0xCB, 0x34, 0xFA, 0x79, 0x2C, 0x81, 0xF7, 0x27, 0x8C, 0x7D, 0xAC, 0x7D, 0x6D, 0x21, 0xD4, 0x7F, 0x99, 0x7B, 0x83, 0xA5, 0x7A, 0x56, 0xB0, 0xA8, 0xC6, 0x97, 0x7A, 0x5B, 0x1F, 0xA4, 0x9D, 0x86, 0x38, 0x60, 0x6A, 0xA0, 0x46, 0x76, 0x5E, 0x65, 0x7A, 0x9B, 0x8F, 0x63, 0x2F, 0x6A, 0xCA, 0x95, 0xD5, 0x4C, 0xD2, 0x71, 0x0D, 0x8D, 0xE8, 0x35, 0x4E, 0x78, 0xDF, 0x84, 0x04, 0x27, 0xDD, 0x7D, 0xB1, 0x7E, 0x2E, 0x22, 0x2C, 0x7F, 0xC4, 0x7B, 0xB3, 0xA4, 0x6E, 0x56, 0x89, 0xB2, 0x85, 0x96, 0xBC, 0x5A, 0x96, 0xAD, 0x62, 0x85, 0xF7, 0x60, 0x03, 0xA7, 0xAE, 0x75, 0xD6, 0x65, 0x1E, 0xA1, 0xD5, 0x62, 0x47, 0x6A, 0x8C, 0x9A, 0x88, 0x4B, 0x07, 0x71, 0x1F, 0x90, 0x8F, 0x36, 0xF5, 0x78, 0x5F, 0x85, 0xD5, 0x28, 0x67, 0x7D, 0xAF, 0x7E, 0xB8, 0x22, 0x81, 0x7F, 0xF3, 0x7B, 0xC7, 0xAA, 0xE8, 0x6E, 0xCF, 0x5C, 0x1F, 0x9E, 0x10, 0x6F, 0xF7, 0x61, 0x36, 0x8B, 0x7B, 0x71, 0xAB, 0x65, 0xAB, 0x79, 0x51, 0x73, 0x91, 0x6A, 0x29, 0x65, 0xDD, 0x76, 0x06, 0x6E, 0xA8, 0x4E, 0x86, 0x78, 0xF8, 0x72, 0x84, 0x37, 0x68, 0x7C, 0xBF, 0x76, 0x1C, 0x29, 0x6E, 0x7F, 0x30, 0x78, 0x1B, 0x23, 0x3C, 0x80, 0x39, 0x79, 0x09, 0xA7, 0x19, 0x6B, 0x75, 0x66, 0x26, 0x9B, 0x56, 0x6D, 0x49, 0x69, 0xAB, 0x8A, 0xED, 0x6F, 0xB8, 0x6D, 0x31, 0x78, 0xBA, 0x72, 0x08, 0x6F, 0xF2, 0x64, 0x8C, 0x74, 0xB5, 0x72, 0xB2, 0x4E, 0xAA, 0x78, 0x07, 0x75, 0x5E, 0x36, 0x85, 0x7C, 0x49, 0x77, 0xEF, 0x28, 0x91, 0x7E, 0xF6, 0x79, 0x40, 0x22, 0x9A, 0x80, 0x1D, 0x79, 0xCE, 0xA6, 0x6D, 0x67, 0x2F, 0x70, 0xF6, 0x9A, 0xF2, 0x6A, 0x58, 0x72, 0xDC, 0x88, 0xF6, 0x6D, 0x85, 0x75, 0x5B, 0x76, 0xAA, 0x70, 0x60, 0x76, 0x78, 0x63, 0x36, 0x73, 0x5E, 0x77, 0x91, 0x4E, 0x3E, 0x77, 0x03, 0x78, 0xD1, 0x36, 0x62, 0x7B, 0xB5, 0x79, 0xE7, 0x28, 0x21, 0x7E, 0xC1, 0x7A, 0x53, 0x22, 0x15, 0x80, 0x0C, 0x7A, 0x7E, 0xA1, 0x70, 0x64, 0xA8, 0x7C, 0x09, 0x97, 0x33, 0x67, 0xCF, 0x7C, 0xA0, 0x87, 0x7E, 0x6B, 0x58, 0x7C, 0xF1, 0x75, 0x50, 0x6E, 0x9E, 0x7D, 0x00, 0x62, 0x63, 0x72, 0x0C, 0x7C, 0xD2, 0x4D, 0x9E, 0x76, 0x32, 0x7C, 0x71, 0x36, 0x26, 0x7B, 0x73, 0x7B, 0xBA, 0x27, 0xD7, 0x7E, 0xAA, 0x7B, 0x2D, 0x21, 0xBA, 0x80, 0x0B, 0x7A, 0xED, 0xA1, 0xCE, 0x62, 0x75, 0x85, 0xD8, 0x95, 0x1D, 0x65, 0xAF, 0x85, 0xC3, 0x85, 0x36, 0x69, 0x94, 0x84, 0x93, 0x74, 0x86, 0x6D, 0x25, 0x83, 0x79, 0x61, 0xC4, 0x70, 0xE3, 0x82, 0x18, 0x4C, 0x7F, 0x75, 0x6F, 0x80, 0x2F, 0x35, 0x63, 0x7B, 0x33, 0x7D, 0x86, 0x27, 0x6B, 0x7E, 0xA0, 0x7B, 0xD7, 0x21, 0x73, 0x80, 0x17, 0x7B, 0x20, 0xA1, 0x37, 0x60, 0xD4, 0x8F, 0xC5, 0x94, 0x43, 0x64, 0x42, 0x8E, 0xC3, 0x84, 0xE3, 0x68, 0x2C, 0x8C, 0x8B, 0x74, 0x06, 0x6B, 0xDE, 0x8A, 0x80, 0x60, 0xE3, 0x6F, 0xE0, 0x87, 0xD5, 0x4B, 0x5D, 0x74, 0xBA, 0x84, 0x3B, 0x34, 0x40, 0x7A, 0xF1, 0x7F, 0x5E, 0x26, 0xEF, 0x7E, 0x9A, 0x7C, 0x75, 0x21, 0x46, 0x80, 0x2A, 0x7B, 0x3A, 0x9C, 0x48, 0x5F, 0x4C, 0x9B, 0xA2, 0x92, 0x57, 0x62, 0xB0, 0x98, 0xDF, 0x84, 0x88, 0x66, 0x66, 0x95, 0xFB, 0x73, 0x3C, 0x6A, 0x9F, 0x92, 0xA6, 0x60, 0x0A, 0x6E, 0xE9, 0x8E, 0x6E, 0x4A, 0xE0, 0x74, 0x07, 0x88, 0xD6, 0x33, 0xA6, 0x7A, 0xAA, 0x81, 0x75, 0x26, 0xC0, 0x7E, 0x95, 0x7D, 0x2A, 0x21, 0x4E, 0x80, 0x41, 0x7B, 0x58, 0x9B, 0xB7, 0x5E, 0x54, 0xA5, 0x66, 0x90, 0x8E, 0x61, 0xB9, 0xA1, 0xE1, 0x81, 0xA4, 0x65, 0xBE, 0x9D, 0xEA, 0x71, 0xA0, 0x69, 0xD1, 0x99, 0xA5, 0x5F, 0x59, 0x6E, 0x34, 0x94, 0x5E, 0x4A, 0x53, 0x73, 0x8B, 0x8C, 0xC9, 0x33, 0xA0, 0x7A, 0x65, 0x83, 0x4F, 0x27, 0x12, 0x7E, 0x8B, 0x7D, 0xCF, 0x21, 0xCA, 0x80, 0x53, 0x7B, 0x79, 0x9A, 0x4B, 0x5D, 0xC1, 0xAE, 0xA4, 0x8E, 0xDB, 0x61, 0x26, 0xAA, 0x35, 0x80, 0xB9, 0x65, 0x30, 0xA5, 0x6B, 0x71, 0x40, 0x69, 0x5A, 0xA0, 0x30, 0x5E, 0x92, 0x6D, 0xE4, 0x99, 0x51, 0x49, 0x48, 0x73, 0x52, 0x8F, 0xF7, 0x33, 0xF4, 0x7A, 0x20, 0x84, 0xDE, 0x27, 0xC8, 0x7E, 0x7D, 0x7E, 0x5D, 0x22, 0xD0, 0x80, 0x62, 0x7B, 0x9D, 0x9D, 0xCA, 0x76, 0xAF, 0x5D, 0x77, 0x91, 0x25, 0x76, 0xE4, 0x61, 0xAC, 0x82, 0x88, 0x77, 0x80, 0x66, 0xB7, 0x73, 0x06, 0x78, 0x34, 0x6A, 0xD5, 0x60, 0x41, 0x79, 0x95, 0x6E, 0xE1, 0x4A, 0x1F, 0x7B, 0x9E, 0x72, 0x9D, 0x34, 0xB2, 0x7E, 0x58, 0x76, 0x55, 0x27, 0x8B, 0x80, 0x37, 0x78, 0x35, 0x21, 0xD1, 0x81, 0x07, 0x79, 0x04, 0x9B, 0x68, 0x73, 0x89, 0x65, 0xD4, 0x90, 0x90, 0x74, 0x5A, 0x69, 0x5D, 0x82, 0x52, 0x75, 0x73, 0x6D, 0x23, 0x72, 0x20, 0x76, 0xC9, 0x6F, 0xCA, 0x5F, 0x60, 0x78, 0x6C, 0x72, 0xA1, 0x4B, 0x2A, 0x7A, 0xBC, 0x75, 0x40, 0x34, 0x51, 0x7D, 0xF6, 0x77, 0xD5, 0x27, 0x1E, 0x80, 0x08, 0x79, 0x29, 0x21, 0x7F, 0x80, 0xED, 0x79, 0xB6, 0x99, 0xE0, 0x70, 0x1D, 0x6F, 0x93, 0x8F, 0xC9, 0x71, 0xC8, 0x71, 0xDF, 0x7F, 0xD5, 0x73, 0x72, 0x74, 0x69, 0x70, 0x5D, 0x75, 0x4F, 0x75, 0xC8, 0x5E, 0x8C, 0x77, 0x34, 0x77, 0x61, 0x4B, 0x58, 0x79, 0xE0, 0x78, 0x86, 0x34, 0x67, 0x7D, 0x7A, 0x79, 0xA2, 0x26, 0xF6, 0x7F, 0xD8, 0x7A, 0x26, 0x21, 0x45, 0x80, 0xDB, 0x7A, 0x5C, 0x96, 0x3A, 0x6D, 0xA6, 0x7A, 0x31, 0x8C, 0x78, 0x6F, 0x91, 0x7B, 0x85, 0x7E, 0x32, 0x71, 0xC2, 0x7B, 0xA0, 0x6E, 0x73, 0x73, 0xE0, 0x7C, 0x29, 0x5D, 0x91, 0x75, 0xF2, 0x7C, 0x7D, 0x4A, 0x05, 0x79, 0x0D, 0x7C, 0x05, 0x34, 0xA4, 0x7D, 0x2E, 0x7B, 0x65, 0x26, 0xF2, 0x7F, 0xC1, 0x7A, 0xFA, 0x21, 0x26, 0x80, 0xDA, 0x7A, 0xC9, 0x95, 0x26, 0x6B, 0xB7, 0x83, 0xC1, 0x8B, 0x67, 0x6D, 0x3C, 0x83, 0xDE, 0x7C, 0x64, 0x70, 0x18, 0x82, 0xF3, 0x6D, 0x37, 0x72, 0x73, 0x82, 0x46, 0x5C, 0x55, 0x74, 0xF8, 0x81, 0x21, 0x48, 0xC4, 0x78, 0x66, 0x7F, 0x8B, 0x33, 0xB8, 0x7C, 0xF3, 0x7D, 0x23, 0x26, 0x9C, 0x7F, 0xB7, 0x7B, 0xA5, 0x21, 0x04, 0x80, 0xE5, 0x7A, 0xFF, 0x93, 0x1C, 0x69, 0x8F, 0x8C, 0xD4, 0x8B, 0x2D, 0x6B, 0xA6, 0x8C, 0x02, 0x7B, 0xD0, 0x6E, 0x94, 0x8A, 0xB9, 0x6C, 0xD0, 0x71, 0x2C, 0x89, 0x0D, 0x5C, 0x25, 0x73, 0xF6, 0x86, 0x7D, 0x48, 0x6E, 0x77, 0xBE, 0x83, 0x53, 0x32, 0x96, 0x7C, 0xBB, 0x7E, 0xE7, 0x26, 0x21, 0x7F, 0xAF, 0x7C, 0x39, 0x20, 0xD2, 0x80, 0xF1, 0x7B, 0x12, 0x90, 0x73, 0x68, 0x4B, 0x97, 0xE6, 0x88, 0x8C, 0x6A, 0x87, 0x95, 0xE1, 0x7A, 0x6F, 0x6D, 0x74, 0x93, 0x94, 0x6C, 0x29, 0x70, 0x00, 0x90, 0xF9, 0x5B, 0x55, 0x73, 0x16, 0x8C, 0xA9, 0x48, 0x34, 0x77, 0x18, 0x87, 0x89, 0x32, 0x18, 0x7C, 0x72, 0x80, 0xC7, 0x25, 0xDE, 0x7F, 0x9F, 0x7C, 0xCA, 0x20, 0xBA, 0x80, 0xFA, 0x7B, 0x19, 0x90, 0xAB, 0x67, 0x3A, 0xA1, 0x18, 0x87, 0x58, 0x69, 0x8D, 0x9E, 0x9D, 0x79, 0x83, 0x6C, 0x5F, 0x9B, 0x0C, 0x6A, 0x5E, 0x6F, 0x2D, 0x97, 0x06, 0x59, 0xA2, 0x72, 0x80, 0x91, 0xE9, 0x46, 0xCB, 0x76, 0xA4, 0x8B, 0x24, 0x31, 0xD8, 0x7C, 0x2B, 0x82, 0x69, 0x26, 0x1C, 0x7F, 0x87, 0x7D, 0x51, 0x21, 0x27, 0x80, 0xF8, 0x7B, 0x27, 0x8F, 0xF6, 0x66, 0x17, 0xA9, 0xF1, 0x86, 0x69, 0x68, 0x69, 0xA6, 0xAC, 0x79, 0xFF, 0x6B, 0x57, 0xA2, 0x51, 0x69, 0xD0, 0x6E, 0x76, 0x9C, 0xE3, 0x58, 0x5B, 0x72, 0x20, 0x96, 0xA2, 0x45, 0x55, 0x76, 0x70, 0x8E, 0x24, 0x32, 0x0E, 0x7B, 0xEA, 0x83, 0xCB, 0x26, 0xCF, 0x7F, 0x6A, 0x7D, 0xCF, 0x22, 0x25, 0x80, 0xF2, 0x7B, 0x44, 0x92, 0x54, 0x7E, 0x0A, 0x5D, 0x89, 0x87, 0x5C, 0x7D, 0x9F, 0x62, 0x5B, 0x79, 0x0E, 0x7D, 0x52, 0x66, 0x9B, 0x6B, 0xBB, 0x7D, 0x4A, 0x6A, 0xE3, 0x5A, 0x3C, 0x7D, 0xB1, 0x6E, 0xE3, 0x47, 0x26, 0x7E, 0x7B, 0x72, 0x5B, 0x31, 0xEE, 0x80, 0x14, 0x76, 0x18, 0x25, 0x87, 0x81, 0x3D, 0x78, 0x2E, 0x20, 0x3F, 0x81, 0xBF, 0x79, 0x0D, 0x90, 0x19, 0x7B, 0x65, 0x66, 0x06, 0x85, 0x79, 0x7B, 0x74, 0x69, 0x6F, 0x78, 0x57, 0x7B, 0x9D, 0x6C, 0xD1, 0x6A, 0x7E, 0x7C, 0x1F, 0x6F, 0x8D, 0x59, 0x65, 0x7C, 0x9A, 0x72, 0x48, 0x46, 0xBD, 0x7D, 0xC4, 0x74, 0xE6, 0x31, 0x99, 0x7F, 0xC7, 0x77, 0x96, 0x25, 0x7C, 0x81, 0x18, 0x79, 0x08, 0x20, 0x57, 0x81, 0xA9, 0x79, 0xA3, 0x8D, 0x7C, 0x78, 0xBC, 0x6F, 0x3F, 0x84, 0xCA, 0x79, 0x1E, 0x71, 0x16, 0x76, 0x43, 0x79, 0xEC, 0x73, 0x69, 0x68, 0xD7, 0x7A, 0xAB, 0x75, 0x3C, 0x58, 0xA6, 0x7B, 0x7C, 0x76, 0xB9, 0x46, 0x02, 0x7D, 0x02, 0x77, 0xE5, 0x31, 0x78, 0x7F, 0x6C, 0x79, 0x42, 0x25, 0x92, 0x80, 0xF1, 0x79, 0xEE, 0x20, 0x81, 0x81, 0x99, 0x7A, 0x34, 0x8A, 0xEC, 0x76, 0x2F, 0x78, 0x45, 0x83, 0x25, 0x76, 0xEB, 0x79, 0x2D, 0x76, 0x0B, 0x78, 0x3F, 0x79, 0xFD, 0x68, 0x0E, 0x79, 0x7F, 0x7A, 0xFA, 0x57, 0xCF, 0x7A, 0x84, 0x7B, 0xA5, 0x44, 0xE7, 0x7C, 0x51, 0x7B, 0x3A, 0x31, 0x85, 0x7F, 0x1D, 0x7A, 0xF6, 0x25, 0xB9, 0x80, 0xD8, 0x7A, 0xB4, 0x20, 0xA4, 0x81, 0x95, 0x7A, 0x95, 0x88, 0xCE, 0x74, 0x87, 0x81, 0x11, 0x81, 0xF9, 0x75, 0x12, 0x81, 0x4D, 0x74, 0x45, 0x76, 0xC0, 0x80, 0xEB, 0x65, 0x92, 0x78, 0x29, 0x80, 0x85, 0x55, 0xE8, 0x79, 0xB2, 0x7F, 0xF9, 0x45, 0x0A, 0x7B, 0xCE, 0x7E, 0xA7, 0x31, 0x77, 0x7E, 0xDF, 0x7C, 0xA2, 0x25, 0xA6, 0x80, 0xC8, 0x7B, 0x53, 0x20, 0x92, 0x81, 0x9B, 0x7A, 0xC1, 0x86, 0x38, 0x72, 0x4D, 0x89, 0xE6, 0x7F, 0xB8, 0x73, 0x81, 0x89, 0x94, 0x72, 0xB1, 0x75, 0x6B, 0x88, 0x6E, 0x64, 0x28, 0x76, 0xBF, 0x86, 0xAF, 0x56, 0xAC, 0x78, 0xA8, 0x84, 0xDC, 0x45, 0xC8, 0x7B, 0x30, 0x82, 0x3D, 0x31, 0x48, 0x7E, 0x9E, 0x7E, 0x4A, 0x25, 0x5C, 0x80, 0xBC, 0x7B, 0xD5, 0x20, 0x50, 0x81, 0xA3, 0x7A, 0xC8, 0x86, 0xAE, 0x71, 0x1A, 0x94, 0x6B, 0x7E, 0xAA, 0x72, 0x8A, 0x93, 0x3D, 0x71, 0x58, 0x74, 0x5F, 0x91, 0x11, 0x63, 0x7F, 0x75, 0xE6, 0x8E, 0x37, 0x55, 0xB3, 0x77, 0xD0, 0x8A, 0x9C, 0x45, 0x29, 0x7A, 0x87, 0x86, 0x14, 0x30, 0xB1, 0x7E, 0x56, 0x7F, 0xF2, 0x24, 0xFD, 0x80, 0xA8, 0x7C, 0x49, 0x20, 0x10, 0x81, 0xA6, 0x7A, 0xBB, 0x85, 0x77, 0x70, 0xB5, 0x9C, 0xB0, 0x7D, 0x43, 0x72, 0x05, 0x9B, 0x90, 0x70, 0x67, 0x73, 0x61, 0x98, 0x00, 0x62, 0x18, 0x75, 0x28, 0x94, 0x02, 0x53, 0x97, 0x77, 0x53, 0x8F, 0x71, 0x43, 0x41, 0x7A, 0x17, 0x89, 0x4B, 0x30, 0x1B, 0x7E, 0x0D, 0x81, 0x5A, 0x24, 0xEC, 0x80, 0x8A, 0x7C, 0xB0, 0x20, 0x28, 0x81, 0x9D, 0x7A, 0xB3, 0x83, 0x32, 0x6F, 0xE1, 0xA4, 0xEE, 0x7C, 0xF6, 0x70, 0xD9, 0xA2, 0xF1, 0x70, 0x6F, 0x72, 0x99, 0x9E, 0x9D, 0x60, 0x59, 0x74, 0x78, 0x99, 0x38, 0x51, 0xB3, 0x76, 0xA8, 0x93, 0x98, 0x41, 0xA3, 0x79, 0xC5, 0x8B, 0xAD, 0x30, 0x94, 0x7D, 0xB9, 0x82, 0x94, 0x25, 0x53, 0x80, 0x65, 0x7D, 0x15, 0x20, 0x74, 0x81, 0x90, 0x7A, 0xB6, 0x86, 0x41, 0x85, 0x24, 0x5D, 0xF7, 0x7D, 0x6F, 0x83, 0xBD, 0x62, 0xC7, 0x70, 0x37, 0x82, 0xD8, 0x67, 0x39, 0x63, 0x0B, 0x82, 0x60, 0x6A, 0x94, 0x53, 0x9F, 0x81, 0xF2, 0x6E, 0x5F, 0x43, 0x75, 0x81, 0x7A, 0x71, 0xFE, 0x2F, 0x79, 0x81, 0xCA, 0x75, 0xC8, 0x23, 0xD0, 0x82, 0x28, 0x78, 0x18, 0x1E, 0xE3, 0x82, 0x50, 0x79, 0x12, 0x83, 0xE3, 0x82, 0xEE, 0x65, 0xA5, 0x7A, 0x7C, 0x82, 0x1C, 0x68, 0xB3, 0x6F, 0x3D, 0x81, 0x70, 0x6B, 0xFB, 0x63, 0x40, 0x81, 0x38, 0x6E, 0xC0, 0x53, 0x65, 0x80, 0xE2, 0x71, 0xB1, 0x42, 0x2D, 0x80, 0xEB, 0x74, 0x68, 0x2E, 0xF6, 0x81, 0x8F, 0x77, 0x43, 0x23, 0xF7, 0x82, 0x09, 0x78, 0xDF, 0x1F, 0x4C, 0x82, 0x3E, 0x79, 0x8C, 0x81, 0xB0, 0x80, 0xB5, 0x6E, 0xA1, 0x78, 0xB2, 0x80, 0x01, 0x6F, 0xC9, 0x6D, 0xB6, 0x7F, 0xE0, 0x72, 0x27, 0x61, 0xDF, 0x7F, 0xFB, 0x74, 0x27, 0x52, 0xBD, 0x7F, 0xEA, 0x75, 0xC7, 0x40, 0xDC, 0x80, 0x42, 0x77, 0x33, 0x2E, 0xCB, 0x81, 0x40, 0x78, 0xD8, 0x24, 0x43, 0x81, 0xE6, 0x79, 0xAE, 0x1F, 0xC0, 0x82, 0x2E, 0x7A, 0x05, 0x80, 0xAD, 0x7E, 0x54, 0x76, 0x41, 0x78, 0xA2, 0x7E, 0x26, 0x77, 0x27, 0x6D, 0x3B, 0x7E, 0x7A, 0x78, 0xCD, 0x60, 0xA7, 0x7E, 0xFD, 0x79, 0xB9, 0x51, 0xC7, 0x7F, 0x37, 0x7A, 0x3C, 0x40, 0x84, 0x7F, 0xAF, 0x7A, 0x60, 0x2F, 0x4D, 0x80, 0xF3, 0x7A, 0x76, 0x24, 0xAA, 0x81, 0xCA, 0x7A, 0x61, 0x20, 0x10, 0x82, 0x27, 0x7A, 0x54, 0x7B, 0xE0, 0x7D, 0x30, 0x7E, 0x89, 0x76, 0x4F, 0x7C, 0xAD, 0x7E, 0xBB, 0x6B, 0x3B, 0x7D, 0x21, 0x7E, 0xF4, 0x5E, 0x94, 0x7D, 0xAD, 0x7F, 0x01, 0x50, 0x7B, 0x7E, 0x6F, 0x7E, 0x75, 0x41, 0xB2, 0x7F, 0x36, 0x7D, 0xA0, 0x30, 0x01, 0x80, 0xB1, 0x7C, 0x09, 0x24, 0xD7, 0x81, 0xB6, 0x7A, 0xEE, 0x20, 0x0D, 0x82, 0x28, 0x7A, 0x72, 0x7C, 0x57, 0x7B, 0x8F, 0x87, 0x58, 0x74, 0x21, 0x7B, 0x5B, 0x86, 0xD3, 0x69, 0x45, 0x7B, 0xEA, 0x85, 0xC3, 0x5D, 0x5B, 0x7C, 0x3E, 0x84, 0xB0, 0x50, 0x79, 0x7D, 0x7B, 0x82, 0xDD, 0x42, 0x61, 0x7E, 0xA3, 0x80, 0xE8, 0x2F, 0xFD, 0x80, 0x6F, 0x7D, 0x8E, 0x24, 0x96, 0x81, 0xA8, 0x7B, 0x5B, 0x1F, 0xC3, 0x82, 0x2E, 0x7A, 0x6A, 0x7C, 0x64, 0x7A, 0x35, 0x91, 0x4F, 0x73, 0x8D, 0x7A, 0x6C, 0x8F, 0xCA, 0x68, 0x3F, 0x7A, 0xDD, 0x8D, 0xC3, 0x5B, 0xAD, 0x7B, 0xA0, 0x8B, 0x76, 0x4F, 0xA7, 0x7C, 0x93, 0x88, 0x8F, 0x41, 0xA8, 0x7D, 0xFB, 0x84, 0x82, 0x2F, 0x0B, 0x80, 0x2E, 0x7E, 0xFC, 0x23, 0xF9, 0x81, 0x98, 0x7B, 0xAF, 0x1F, 0x51, 0x82, 0x32, 0x7A, 0x4A, 0x79, 0x20, 0x79, 0x98, 0x99, 0x3C, 0x72, 0xFB, 0x79, 0xE5, 0x97, 0x24, 0x68, 0x7E, 0x7A, 0x2A, 0x94, 0x7C, 0x5B, 0xE9, 0x7B, 0x1D, 0x91, 0x4A, 0x4E, 0x98, 0x7C, 0x4D, 0x8D, 0x6D, 0x3F, 0xD8, 0x7D, 0x92, 0x87, 0x87, 0x2D, 0xDB, 0x7F, 0xF3, 0x80, 0x2F, 0x23, 0x73, 0x81, 0x7F, 0x7B, 0xF6, 0x1F, 0x07, 0x82, 0x2B, 0x7A, 0x2C, 0x77, 0xAD, 0x78, 0xD5, 0xA1, 0x0C, 0x71, 0xF0, 0x78, 0xF5, 0x9E, 0xBF, 0x67, 0x7F, 0x79, 0x92, 0x9A, 0xA6, 0x5A, 0xE5, 0x7A, 0x84, 0x95, 0xF8, 0x4D, 0x4F, 0x7B, 0xB1, 0x90, 0xE9, 0x3E, 0x41, 0x7D, 0x22, 0x89, 0xD1, 0x2D, 0x75, 0x7F, 0xAC, 0x81, 0x51, 0x23, 0x41, 0x81, 0x61, 0x7C, 0x41, 0x1E, 0xDD, 0x82, 0x1F, 0x7A, 0x16, 0x78, 0x2C, 0x8D, 0x77, 0x5E, 0x1E, 0x70, 0xAD, 0x8B, 0x1D, 0x62, 0xA1, 0x66, 0xA2, 0x89, 0x86, 0x67, 0x50, 0x5A, 0x7B, 0x88, 0x39, 0x6A, 0x77, 0x4C, 0x65, 0x86, 0xBF, 0x6D, 0x81, 0x3F, 0x22, 0x85, 0x26, 0x71, 0x80, 0x2C, 0xEE, 0x83, 0xCE, 0x75, 0x86, 0x22, 0x2D, 0x83, 0x1E, 0x77, 0xFB, 0x1D, 0xA1, 0x82, 0xD4, 0x79, 0x07, 0x76, 0xC9, 0x8B, 0x43, 0x65, 0x3D, 0x6F, 0xC3, 0x89, 0xD5, 0x67, 0xAE, 0x65, 0x5E, 0x88, 0x49, 0x6B, 0x2D, 0x5A, 0xBB, 0x87, 0x34, 0x6E, 0x37, 0x4C, 0xE6, 0x85, 0xD8, 0x70, 0xD9, 0x3D, 0xA2, 0x84, 0x97, 0x73, 0xB4, 0x2C, 0x5E, 0x83, 0x87, 0x76, 0xDC, 0x22, 0x71, 0x82, 0xFE, 0x78, 0xA5, 0x1E, 0x38, 0x82, 0xC5, 0x79, 0x67, 0x75, 0x77, 0x89, 0x2F, 0x6D, 0x0A, 0x6D, 0xE1, 0x88, 0x00, 0x6E, 0xD4, 0x64, 0xA4, 0x86, 0xD2, 0x70, 0xE1, 0x5A, 0x5B, 0x85, 0xDF, 0x72, 0xA6, 0x4D, 0x06, 0x84, 0xF9, 0x74, 0x9E, 0x3C, 0x00, 0x83, 0xF6, 0x76, 0x5B, 0x2C, 0x54, 0x83, 0x36, 0x78, 0x53, 0x22, 0xE9, 0x82, 0xDA, 0x79, 0x58, 0x1E, 0xD9, 0x82, 0xB5, 0x79, 0xC4, 0x74, 0x22, 0x87, 0x33, 0x74, 0x70, 0x6C, 0xE4, 0x86, 0x6B, 0x75, 0xE2, 0x63, 0x20, 0x85, 0x8D, 0x77, 0x7C, 0x58, 0xD4, 0x84, 0xDF, 0x78, 0x3B, 0x4C, 0x87, 0x84, 0x56, 0x79, 0x04, 0x3C, 0xB9, 0x83, 0x74, 0x79, 0x75, 0x2D, 0x90, 0x82, 0xE5, 0x79, 0xD6, 0x23, 0x8E, 0x82, 0xBA, 0x79, 0xF3, 0x1F, 0x43, 0x82, 0xA9, 0x79, 0xFE, 0x6F, 0xD9, 0x85, 0xD8, 0x7C, 0x02, 0x6B, 0x4E, 0x85, 0x3E, 0x7C, 0x96, 0x61, 0xBF, 0x84, 0x6C, 0x7D, 0x47, 0x56, 0xA5, 0x83, 0xCE, 0x7D, 0x76, 0x49, 0xE6, 0x83, 0x87, 0x7C, 0xE7, 0x3D, 0xD9, 0x82, 0xF6, 0x7C, 0x72, 0x2E, 0xB4, 0x82, 0x9F, 0x7B, 0x47, 0x23, 0xE2, 0x82, 0xA3, 0x7A, 0x6B, 0x1F, 0x58, 0x82, 0xA6, 0x7A, 0x0D, 0x70, 0x90, 0x84, 0x81, 0x83, 0xCC, 0x6A, 0x90, 0x83, 0xFD, 0x83, 0xFC, 0x5F, 0xA0, 0x83, 0x24, 0x83, 0x52, 0x54, 0xF3, 0x82, 0x79, 0x82, 0x68, 0x49, 0x6F, 0x82, 0xB3, 0x80, 0xC9, 0x3D, 0x8D, 0x82, 0x94, 0x7F, 0x57, 0x2D, 0x8B, 0x82, 0x7B, 0x7C, 0x8A, 0x23, 0x72, 0x82, 0x98, 0x7A, 0xBD, 0x1F, 0x1C, 0x82, 0xA8, 0x79, 0xF7, 0x70, 0x1B, 0x83, 0x63, 0x8C, 0xC7, 0x68, 0x6D, 0x82, 0xC2, 0x8C, 0x04, 0x5E, 0x06, 0x82, 0x3B, 0x8A, 0x7F, 0x54, 0x28, 0x81, 0xCC, 0x88, 0xB0, 0x49, 0xED, 0x81, 0xA4, 0x86, 0x60, 0x3C, 0xA9, 0x81, 0xE4, 0x82, 0x82, 0x2C, 0x29, 0x82, 0x44, 0x7D, 0xB8, 0x22, 0x8B, 0x82, 0x8F, 0x7A, 0xF1, 0x1E, 0x76, 0x82, 0xB1, 0x79, 0xC4, 0x6E, 0xC4, 0x82, 0xC1, 0x94, 0xF0, 0x66, 0xEA, 0x82, 0x3B, 0x92, 0xC2, 0x5E, 0x4C, 0x81, 0xD2, 0x90, 0x98, 0x54, 0xD1, 0x81, 0x6E, 0x8E, 0x13, 0x49, 0x59, 0x81, 0x38, 0x8A, 0x93, 0x3B, 0x11, 0x81, 0x6A, 0x85, 0x27, 0x2A, 0xBA, 0x82, 0x10, 0x7E, 0xBB, 0x21, 0xA7, 0x82, 0x81, 0x7B, 0x1A, 0x1D, 0xD3, 0x82, 0xB0, 0x79, 0x8F, 0x6C, 0xEB, 0x81, 0xD4, 0x9C, 0x07, 0x66, 0x53, 0x81, 0x20, 0x99, 0x98, 0x5D, 0x1C, 0x81, 0x61, 0x96, 0x6A, 0x54, 0x56, 0x81, 0x04, 0x92, 0x5B, 0x48, 0x32, 0x80, 0xDB, 0x8D, 0xC5, 0x39, 0xBB, 0x81, 0x19, 0x87, 0x7C, 0x29, 0x9C, 0x81, 0xDD, 0x7F, 0xCC, 0x21, 0x08, 0x82, 0x68, 0x7B, 0x4F, 0x1D, 0x67, 0x82, 0xA4, 0x79, 0x67, 0x69, 0x96, 0x97, 0x30, 0x5E, 0xF2, 0x63, 0xAF, 0x94, 0xEF, 0x62, 0x44, 0x5B, 0x7E, 0x92, 0x50, 0x66, 0x22, 0x50, 0xAA, 0x8F, 0xC8, 0x69, 0xAC, 0x45, 0x18, 0x8C, 0xD2, 0x6C, 0xF8, 0x3A, 0x0D, 0x89, 0xA9, 0x71, 0x03, 0x2A, 0x19, 0x86, 0x28, 0x75, 0x48, 0x20, 0x65, 0x84, 0x32, 0x77, 0xCC, 0x1C, 0x4C, 0x83, 0x60, 0x78, 0xE3, 0x68, 0xFC, 0x95, 0x56, 0x64, 0xC1, 0x62, 0xD8, 0x93, 0x70, 0x66, 0xDF, 0x59, 0x05, 0x90, 0xF5, 0x69, 0xD8, 0x4E, 0xFB, 0x8E, 0xA4, 0x6C, 0x89, 0x45, 0x3A, 0x8B, 0xDF, 0x6F, 0xA3, 0x38, 0xF9, 0x88, 0xFA, 0x72, 0xD4, 0x29, 0xA9, 0x85, 0xD1, 0x76, 0x54, 0x20, 0xC8, 0x84, 0x11, 0x78, 0x4F, 0x1D, 0x03, 0x83, 0x55, 0x79, 0x26, 0x68, 0x60, 0x93, 0xD4, 0x6B, 0x92, 0x61, 0xE8, 0x91, 0xDF, 0x6D, 0x48, 0x58, 0x78, 0x8F, 0xA1, 0x6F, 0x28, 0x4E, 0xFF, 0x8D, 0x65, 0x70, 0xFD, 0x45, 0x76, 0x8B, 0x15, 0x73, 0x30, 0x38, 0x63, 0x88, 0x5B, 0x75, 0x4F, 0x29, 0xC3, 0x85, 0x78, 0x77, 0x9E, 0x21, 0x58, 0x83, 0xEC, 0x78, 0xDF, 0x1D, 0xC1, 0x83, 0x46, 0x79, 0x65, 0x67, 0x48, 0x91, 0xDE, 0x72, 0x05, 0x60, 0x31, 0x90, 0x46, 0x73, 0x73, 0x57, 0x64, 0x8E, 0x5D, 0x75, 0x27, 0x4E, 0x72, 0x8C, 0x60, 0x76, 0x43, 0x44, 0x1D, 0x8A, 0x7D, 0x77, 0x86, 0x37, 0xF2, 0x87, 0xD7, 0x78, 0x2A, 0x2A, 0x5B, 0x85, 0x27, 0x78, 0xF6, 0x21, 0xF2, 0x83, 0xC7, 0x79, 0x5F, 0x1E, 0x4B, 0x83, 0x36, 0x79, 0x89, 0x64, 0xDD, 0x90, 0x6F, 0x79, 0x44, 0x5F, 0x14, 0x8E, 0xFF, 0x79, 0xCC, 0x56, 0xC7, 0x8D, 0x3E, 0x7A, 0x2A, 0x4E, 0x29, 0x8B, 0x3D, 0x7A, 0xBD, 0x43, 0x66, 0x89, 0x7B, 0x7B, 0x23, 0x37, 0xA6, 0x87, 0x49, 0x7A, 0xD2, 0x2A, 0xA1, 0x84, 0xE7, 0x7A, 0x36, 0x22, 0x32, 0x83, 0xAC, 0x79, 0xBF, 0x1E, 0x87, 0x83, 0x2B, 0x79, 0x8A, 0x64, 0x92, 0x8F, 0x6C, 0x80, 0xA2, 0x5E, 0x5E, 0x8E, 0x3F, 0x80, 0x6F, 0x55, 0x68, 0x8C, 0x42, 0x7F, 0xC9, 0x4C, 0x4E, 0x8A, 0x63, 0x7F, 0x88, 0x43, 0x85, 0x88, 0xC1, 0x7F, 0x0B, 0x38, 0x17, 0x86, 0xFD, 0x7D, 0xA5, 0x2A, 0x21, 0x84, 0xB7, 0x7B, 0x59, 0x21, 0xD4, 0x83, 0x9A, 0x79, 0xFD, 0x1E, 0x45, 0x83, 0x27, 0x79, 0x6A, 0x61, 0x7F, 0x8E, 0x1B, 0x88, 0x52, 0x5C, 0x33, 0x8C, 0xEA, 0x87, 0x9A, 0x54, 0x37, 0x8B, 0x67, 0x86, 0xD7, 0x4B, 0x97, 0x89, 0x82, 0x85, 0x4C, 0x42, 0x60, 0x87, 0xF7, 0x83, 0x47, 0x37, 0x1D, 0x86, 0x5D, 0x80, 0x4D, 0x28, 0xFD, 0x84, 0x86, 0x7C, 0x5C, 0x20, 0xE9, 0x83, 0x92, 0x7A, 0x1B, 0x1D, 0x82, 0x83, 0x2C, 0x79, 0x28, 0x61, 0x25, 0x8D, 0x4F, 0x8F, 0x55, 0x5A, 0x91, 0x8C, 0x44, 0x8D, 0xD0, 0x53, 0x8D, 0x8A, 0xD2, 0x8C, 0x37, 0x4B, 0xA7, 0x88, 0xD8, 0x8A, 0x00, 0x41, 0xDB, 0x87, 0x50, 0x86, 0xD6, 0x35, 0xD6, 0x85, 0xEC, 0x82, 0x7E, 0x27, 0xB6, 0x84, 0x67, 0x7D, 0x2C, 0x1F, 0xEA, 0x83, 0x8D, 0x7A, 0x27, 0x1C, 0xB6, 0x83, 0x2D, 0x78, 0xE4, 0x61, 0x80, 0x8C, 0x21, 0x96, 0x3C, 0x5B, 0x69, 0x8B, 0xD2, 0x94, 0x8A, 0x52, 0x91, 0x8A, 0x7D, 0x91, 0xA2, 0x4B, 0x16, 0x88, 0xA9, 0x8E, 0x26, 0x42, 0x01, 0x87, 0x33, 0x89, 0xDD, 0x35, 0xB9, 0x85, 0xEC, 0x84, 0x7D, 0x26, 0xF3, 0x84, 0x4C, 0x7E, 0x02, 0x1F, 0x64, 0x83, 0x72, 0x7A, 0x48, 0x1C, 0x41, 0x83, 0x18, 0x78, 0xB4, 0x5A, 0xD3, 0xA2, 0x37, 0x5F, 0x3D, 0x54, 0xCD, 0x9F, 0xDA, 0x61, 0x50, 0x4F, 0xBD, 0x9C, 0x5E, 0x64, 0x3C, 0x45, 0xDC, 0x98, 0xCA, 0x68, 0x7C, 0x3B, 0x63, 0x94, 0x3E, 0x6B, 0xDC, 0x31, 0xE1, 0x8E, 0xEB, 0x6F, 0xB7, 0x25, 0xDA, 0x88, 0xDF, 0x74, 0x86, 0x1E, 0x0A, 0x85, 0x7B, 0x77, 0x67, 0x1A, 0xA4, 0x84, 0x0D, 0x78, 0xA3, 0x5B, 0x23, 0xA0, 0xD3, 0x63, 0x44, 0x54, 0xDA, 0x9E, 0x8F, 0x65, 0xA1, 0x4D, 0x3B, 0x9B, 0x35, 0x68, 0x4E, 0x44, 0xB0, 0x97, 0x80, 0x6B, 0x0A, 0x3C, 0x77, 0x93, 0x20, 0x6E, 0x21, 0x32, 0xA6, 0x8E, 0x45, 0x71, 0x7D, 0x26, 0x07, 0x88, 0x98, 0x75, 0x77, 0x1E, 0xB8, 0x85, 0x66, 0x77, 0xC4, 0x1B, 0xA0, 0x84, 0x0D, 0x78, 0xBD, 0x5A, 0x49, 0x9F, 0x8E, 0x68, 0x93, 0x53, 0xCE, 0x9D, 0xD5, 0x6A, 0xEB, 0x4C, 0x9B, 0x9A, 0x03, 0x6C, 0xE9, 0x44, 0x62, 0x96, 0x3D, 0x6F, 0x0A, 0x3C, 0xCD, 0x92, 0x50, 0x71, 0x4A, 0x32, 0xC4, 0x8D, 0x8F, 0x73, 0xCC, 0x26, 0x31, 0x88, 0x3D, 0x76, 0x97, 0x1F, 0x7E, 0x85, 0x49, 0x78, 0x29, 0x1C, 0xBE, 0x84, 0x0A, 0x78, 0xD4, 0x58, 0x6F, 0x9E, 0x00, 0x6F, 0xE1, 0x52, 0x81, 0x9C, 0x24, 0x71, 0x33, 0x4C, 0x4A, 0x98, 0x9D, 0x71, 0xE9, 0x43, 0x90, 0x95, 0x4B, 0x73, 0x5C, 0x3B, 0xAE, 0x91, 0x49, 0x75, 0x06, 0x32, 0x44, 0x8C, 0xC1, 0x76, 0x69, 0x26, 0x51, 0x87, 0xD7, 0x77, 0xC7, 0x20, 0x13, 0x85, 0x22, 0x78, 0x89, 0x1D, 0x92, 0x83, 0xFE, 0x78, 0xDD, 0x56, 0xEC, 0x9C, 0xD6, 0x75, 0xE0, 0x51, 0x37, 0x9A, 0x4F, 0x76, 0x8F, 0x49, 0xFB, 0x97, 0x91, 0x76, 0xBB, 0x42, 0xBB, 0x94, 0x6F, 0x77, 0x5C, 0x3B, 0x1F, 0x90, 0x59, 0x78, 0x6A, 0x31, 0xFD, 0x8C, 0x04, 0x78, 0xEA, 0x26, 0x80, 0x87, 0x70, 0x78, 0xEF, 0x20, 0x36, 0x84, 0xF2, 0x78, 0xDE, 0x1D, 0x9A, 0x83, 0xE6, 0x78, 0xD6, 0x56, 0xA2, 0x9B, 0xCF, 0x7C, 0x9F, 0x51, 0x5D, 0x99, 0x27, 0x7C, 0x93, 0x48, 0xFC, 0x96, 0x98, 0x7B, 0xF1, 0x40, 0x97, 0x93, 0xCE, 0x7B, 0xB9, 0x39, 0x96, 0x8F, 0xCC, 0x7B, 0xED, 0x31, 0x90, 0x8B, 0x83, 0x7B, 0x54, 0x26, 0x6E, 0x87, 0x20, 0x79, 0xF8, 0x1F, 0xF6, 0x84, 0xC6, 0x79, 0x19, 0x1D, 0x3A, 0x83, 0xC9, 0x78, 0xB9, 0x56, 0x84, 0x9A, 0x22, 0x83, 0xC9, 0x51, 0x59, 0x97, 0xDE, 0x83, 0x3E, 0x4B, 0x36, 0x94, 0xE4, 0x82, 0x76, 0x42, 0x15, 0x92, 0x14, 0x81, 0x55, 0x38, 0x6C, 0x8F, 0x1E, 0x7F, 0xCC, 0x30, 0x84, 0x8B, 0x33, 0x7D, 0xB3, 0x25, 0xC3, 0x86, 0xF5, 0x7A, 0xDF, 0x1F, 0x5A, 0x84, 0xA6, 0x79, 0x34, 0x1C, 0xA1, 0x83, 0xAE, 0x78, 0x7E, 0x53, 0xB8, 0x99, 0x25, 0x8A, 0x2C, 0x4F, 0xBE, 0x97, 0x38, 0x89, 0x38, 0x4A, 0x4B, 0x94, 0x71, 0x87, 0xB5, 0x42, 0x9D, 0x91, 0x53, 0x85, 0xB7, 0x39, 0x05, 0x8E, 0x60, 0x82, 0xF8, 0x2F, 0x91, 0x8B, 0x05, 0x7F, 0x9D, 0x24, 0xF5, 0x86, 0xE9, 0x7B, 0x8A, 0x1E, 0xBD, 0x84, 0x94, 0x79, 0x35, 0x1C, 0x18, 0x83, 0x97, 0x78, 0x39, 0x51, 0xCB, 0x98, 0x5E, 0x8F, 0x72, 0x4F, 0xFD, 0x96, 0xDB, 0x8F, 0x48, 0x49, 0x93, 0x94, 0x04, 0x8C, 0xA3, 0x42, 0x45, 0x91, 0x30, 0x89, 0x75, 0x37, 0xF7, 0x8E, 0x7A, 0x85, 0x9F, 0x2D, 0xA4, 0x8B, 0x33, 0x81, 0x15, 0x24, 0x52, 0x86, 0xF0, 0x7C, 0x11, 0x1E, 0x66, 0x84, 0x7E, 0x79, 0x36, 0x1B, 0xC4, 0x83, 0x79, 0x78, 0x00, 0x50, 0x1D, 0xAC, 0x6E, 0x5E, 0x4F, 0x4B, 0x1B, 0xA9, 0x58, 0x60, 0xE8, 0x44, 0x8E, 0xA4, 0xE2, 0x63, 0x19, 0x3E, 0x19, 0xA0, 0x2A, 0x66, 0x5A, 0x34, 0x9D, 0x9A, 0xB6, 0x6A, 0x23, 0x2C, 0xA6, 0x93, 0xEB, 0x6E, 0x4E, 0x22, 0x56, 0x8B, 0x77, 0x73, 0x8F, 0x1B, 0x92, 0x86, 0xC4, 0x76, 0xE7, 0x18, 0xA4, 0x84, 0xC4, 0x78, 0x56, 0x4F, 0x7E, 0xAA, 0xCA, 0x62, 0x70, 0x4A, 0x02, 0xA7, 0xD3, 0x64, 0x95, 0x43, 0x8B, 0xA3, 0xC3, 0x66, 0xD5, 0x3C, 0x5F, 0x9F, 0x0F, 0x69, 0x73, 0x34, 0xB1, 0x99, 0xCD, 0x6C, 0x70, 0x2C, 0x44, 0x93, 0x76, 0x6F, 0xF6, 0x22, 0x23, 0x8B, 0x6B, 0x74, 0x73, 0x1C, 0x97, 0x86, 0xCB, 0x77, 0x1F, 0x1A, 0x44, 0x84, 0xD6, 0x78, 0x43, 0x4F, 0x36, 0xA8, 0xC9, 0x67, 0x64, 0x49, 0x92, 0xA5, 0xF8, 0x69, 0x78, 0x44, 0x22, 0xA1, 0xEE, 0x6B, 0x0A, 0x3C, 0x29, 0x9D, 0x94, 0x6D, 0x1A, 0x35, 0x01, 0x98, 0xD1, 0x6F, 0x54, 0x2B, 0xCF, 0x92, 0xA5, 0x72, 0x27, 0x21, 0xAC, 0x8B, 0x23, 0x75, 0x61, 0x1D, 0xC5, 0x86, 0xC9, 0x77, 0x51, 0x1C, 0x95, 0x84, 0xEE, 0x78, 0x2C, 0x4F, 0xA0, 0xA7, 0x7C, 0x6C, 0xAC, 0x49, 0x64, 0xA4, 0xDF, 0x6E, 0x0A, 0x43, 0x84, 0xA0, 0x84, 0x6F, 0xA1, 0x3C, 0x27, 0x9C, 0xBC, 0x71, 0x05, 0x34, 0xD2, 0x97, 0x92, 0x72, 0xC3, 0x2B, 0x4F, 0x91, 0x71, 0x74, 0xBA, 0x20, 0xE0, 0x8A, 0xAF, 0x76, 0x4C, 0x1E, 0x67, 0x86, 0xB7, 0x77, 0x74, 0x1F, 0x42, 0x84, 0xF5, 0x78, 0x1D, 0x4F, 0x3E, 0xA6, 0x76, 0x72, 0x3C, 0x48, 0x83, 0xA3, 0x4D, 0x73, 0x41, 0x41, 0x3E, 0x9F, 0x69, 0x74, 0x96, 0x3A, 0xF8, 0x9B, 0xF4, 0x75, 0x21, 0x34, 0xF9, 0x96, 0x91, 0x75, 0xF9, 0x2C, 0xFF, 0x8F, 0xED, 0x77, 0x22, 0x22, 0x5F, 0x89, 0xDF, 0x77, 0x97, 0x1E, 0x76, 0x86, 0x52, 0x77, 0xE3, 0x1D, 0x4A, 0x84, 0xC8, 0x78, 0x0D, 0x4D, 0xBC, 0xA4, 0xC7, 0x78, 0xEF, 0x47, 0xC6, 0xA1, 0xD7, 0x79, 0x2E, 0x40, 0x52, 0x9E, 0x87, 0x79, 0x65, 0x3A, 0x3B, 0x9B, 0x0C, 0x79, 0x63, 0x33, 0xDC, 0x95, 0xDF, 0x79, 0x34, 0x2C, 0xF0, 0x8F, 0x2E, 0x79, 0x44, 0x23, 0x2D, 0x89, 0x55, 0x78, 0xA2, 0x1E, 0x38, 0x85, 0xF5, 0x78, 0x32, 0x1C, 0x2F, 0x84, 0x82, 0x78, 0x01, 0x4E, 0x33, 0xA2, 0x07, 0x80, 0x28, 0x48, 0xE4, 0xA0, 0x17, 0x80, 0x59, 0x41, 0xB2, 0x9D, 0x27, 0x7F, 0x6A, 0x3A, 0x16, 0x99, 0x75, 0x7E, 0x1C, 0x31, 0xDF, 0x94, 0xCF, 0x7C, 0x9D, 0x2A, 0xBB, 0x8F, 0x84, 0x7B, 0x2B, 0x22, 0xCD, 0x89, 0x40, 0x79, 0x6D, 0x1D, 0xF3, 0x85, 0xB2, 0x78, 0x55, 0x1B, 0xD8, 0x84, 0x32, 0x77, 0xDC, 0x4D, 0x1B, 0xA1, 0xBF, 0x86, 0xE8, 0x47, 0x7B, 0x9F, 0xF9, 0x86, 0x0B, 0x41, 0x3D, 0x9C, 0x69, 0x84, 0x37, 0x39, 0xC8, 0x98, 0x71, 0x81, 0xF8, 0x31, 0x3D, 0x94, 0xA1, 0x7F, 0x80, 0x29, 0x4F, 0x8F, 0xE9, 0x7C, 0xDE, 0x22, 0x3E, 0x89, 0x4D, 0x79, 0xFF, 0x1D, 0xB7, 0x85, 0x8A, 0x78, 0x52, 0x1B, 0xBA, 0x83, 0xF5, 0x77, 0x9C, 0x4D, 0xAD, 0xA1, 0x3A, 0x8C, 0xC5, 0x45, 0xA5, 0x9F, 0x7A, 0x89, 0xD6, 0x40, 0x5A, 0x9C, 0x39, 0x87, 0x46, 0x39, 0xF4, 0x97, 0xAF, 0x85, 0x1D, 0x31, 0x9D, 0x94, 0xE0, 0x82, 0x1E, 0x29, 0xF8, 0x8F, 0xEF, 0x7E, 0x63, 0x22, 0x16, 0x89, 0x45, 0x7A, 0x70, 0x1D, 0x84, 0x85, 0x6B, 0x78, 0x41, 0x1B, 0x8F, 0x83, 0xC9, 0x77, 0x55, 0xA5, 0x9A, 0x63, 0x53, 0x53, 0xF2, 0x99, 0x13, 0x65, 0xBC, 0x59, 0x0E, 0x87, 0xAC, 0x68, 0xA9, 0x5F, 0x48, 0x74, 0xC9, 0x6B, 0xA8, 0x64, 0xE6, 0x61, 0x87, 0x6F, 0x47, 0x6A, 0x55, 0x4C, 0x91, 0x73, 0xB0, 0x6F, 0x51, 0x35, 0x3B, 0x79, 0xA9, 0x74, 0x62, 0x28, 0x54, 0x7D, 0x6E, 0x77, 0x48, 0x22, 0xDC, 0x7F, 0x0A, 0x78, 0x84, 0xA6, 0x39, 0x5E, 0x86, 0x5E, 0x60, 0x97, 0xE6, 0x61, 0xA9, 0x62, 0x59, 0x85, 0xAC, 0x65, 0xDA, 0x67, 0x44, 0x75, 0xD8, 0x69, 0xB1, 0x6A, 0xBD, 0x60, 0xB4, 0x6D, 0xC7, 0x6E, 0xB5, 0x4B, 0xC9, 0x73, 0x21, 0x72, 0x59, 0x35, 0x0E, 0x79, 0x5B, 0x76, 0x3F, 0x27, 0xED, 0x7D, 0x47, 0x78, 0x51, 0x22, 0x55, 0x7E, 0xFA, 0x79, 0x2F, 0xA1, 0x5F, 0x59, 0x9A, 0x6A, 0xA0, 0x94, 0xD5, 0x5D, 0x89, 0x6C, 0x9A, 0x84, 0x24, 0x62, 0xA1, 0x6F, 0xEB, 0x73, 0x3D, 0x67, 0x49, 0x71, 0xA9, 0x5F, 0x6F, 0x6C, 0x2D, 0x73, 0x66, 0x4B, 0x32, 0x71, 0xF6, 0x75, 0xD0, 0x35, 0x20, 0x78, 0xC5, 0x78, 0x43, 0x27, 0x93, 0x7D, 0x1E, 0x79, 0x5F, 0x21, 0xC9, 0x7E, 0xFC, 0x79, 0xCF, 0x9F, 0x17, 0x56, 0xE4, 0x76, 0xBA, 0x93, 0x43, 0x5A, 0xCC, 0x76, 0x8D, 0x82, 0xBC, 0x60, 0x38, 0x78, 0x15, 0x70, 0x9B, 0x65, 0x47, 0x78, 0xE6, 0x5E, 0x87, 0x6A, 0x91, 0x78, 0xD8, 0x4A, 0xE0, 0x70, 0x9C, 0x79, 0x9F, 0x34, 0xDA, 0x78, 0x5D, 0x7A, 0x35, 0x27, 0x26, 0x7D, 0x11, 0x7A, 0x38, 0x21, 0x41, 0x7F, 0x15, 0x7A, 0x32, 0x9D, 0x38, 0x53, 0xB3, 0x81, 0x4E, 0x91, 0xAD, 0x58, 0x33, 0x80, 0x47, 0x80, 0x44, 0x5D, 0xD9, 0x7F, 0xE3, 0x6F, 0xB0, 0x63, 0x41, 0x7F, 0x33, 0x5E, 0x0F, 0x69, 0x09, 0x7E, 0xB0, 0x4A, 0x4A, 0x6F, 0x8A, 0x7D, 0x81, 0x34, 0xC7, 0x77, 0xFD, 0x7C, 0x0E, 0x26, 0xAD, 0x7D, 0x10, 0x7A, 0xDB, 0x20, 0xBA, 0x7F, 0x3C, 0x7A, 0x5B, 0x9B, 0x55, 0x50, 0xE0, 0x8B, 0x79, 0x8F, 0x13, 0x56, 0x88, 0x89, 0xA3, 0x7E, 0x92, 0x5C, 0x5F, 0x87, 0xD6, 0x6E, 0x5C, 0x61, 0x96, 0x86, 0x47, 0x5C, 0x82, 0x67, 0xB7, 0x84, 0x80, 0x47, 0xB1, 0x6E, 0xC5, 0x81, 0x6B, 0x32, 0xEF, 0x77, 0x9F, 0x7D, 0xB8, 0x25, 0xF2, 0x7D, 0x16, 0x7B, 0x6F, 0x20, 0x69, 0x7F, 0x69, 0x7A, 0x78, 0x9A, 0x43, 0x4E, 0x5D, 0x96, 0x81, 0x8C, 0x96, 0x54, 0x22, 0x93, 0xF0, 0x7D, 0x76, 0x5A, 0xC6, 0x91, 0x4A, 0x6D, 0x40, 0x60, 0x2C, 0x8E, 0xEF, 0x5B, 0x5B, 0x66, 0x71, 0x8B, 0x5A, 0x46, 0x88, 0x6E, 0x26, 0x86, 0x59, 0x31, 0x9A, 0x77, 0x8C, 0x7F, 0xF0, 0x25, 0x6E, 0x7D, 0x2F, 0x7C, 0x34, 0x20, 0x39, 0x7F, 0x98, 0x7A, 0x9E, 0x99, 0x5A, 0x4C, 0xF0, 0xA0, 0x7E, 0x8B, 0x88, 0x52, 0x83, 0x9D, 0x1F, 0x7B, 0xDF, 0x59, 0x0E, 0x99, 0xBE, 0x6C, 0x92, 0x5E, 0xF5, 0x96, 0x18, 0x5A, 0xFB, 0x65, 0xA6, 0x91, 0x07, 0x47, 0x1C, 0x6D, 0x79, 0x8A, 0x48, 0x31, 0xB9, 0x77, 0x43, 0x81, 0xE2, 0x25, 0x4E, 0x7D, 0x35, 0x7C, 0xDC, 0x20, 0x0B, 0x7F, 0xC1, 0x7A, 0xB8, 0x95, 0x94, 0x4C, 0xB1, 0xA9, 0x70, 0x89, 0x56, 0x51, 0x95, 0xA5, 0x41, 0x7A, 0xCC, 0x57, 0xDC, 0xA0, 0xBC, 0x6A, 0xFD, 0x5D, 0xEF, 0x9B, 0x7F, 0x59, 0xB2, 0x65, 0x28, 0x95, 0x33, 0x44, 0x8E, 0x6D, 0x40, 0x8C, 0x88, 0x32, 0xBA, 0x76, 0xAF, 0x83, 0x88, 0x25, 0x23, 0x7D, 0x31, 0x7D, 0x45, 0x1F, 0xBA, 0x7F, 0xEC, 0x7A, 0xB5, 0x9D, 0xD8, 0x69, 0x68, 0x55, 0x70, 0x91, 0x63, 0x6A, 0xC6, 0x5A, 0xBC, 0x80, 0x98, 0x6C, 0x93, 0x60, 0x4D, 0x70, 0x25, 0x6E, 0xE9, 0x65, 0x71, 0x5D, 0xF5, 0x72, 0x10, 0x6A, 0x8E, 0x47, 0xA4, 0x76, 0x0F, 0x6F, 0x95, 0x33, 0x05, 0x7B, 0x3A, 0x74, 0x91, 0x27, 0x03, 0x7E, 0x60, 0x77, 0x53, 0x21, 0xD7, 0x7F, 0xB9, 0x78, 0x80, 0x9B, 0xDA, 0x65, 0x5C, 0x5E, 0xFF, 0x8F, 0xF6, 0x67, 0x5D, 0x63, 0x47, 0x7F, 0xF6, 0x6A, 0x4D, 0x67, 0xC4, 0x6F, 0xBC, 0x6D, 0x3F, 0x6B, 0x4D, 0x5D, 0x6E, 0x70, 0xC5, 0x6E, 0xD5, 0x49, 0x97, 0x75, 0x28, 0x72, 0x60, 0x33, 0x5A, 0x7A, 0xCB, 0x76, 0x38, 0x26, 0xB8, 0x7E, 0x3A, 0x78, 0x48, 0x21, 0x5D, 0x7F, 0xB3, 0x79, 0x24, 0x98, 0xB0, 0x60, 0xE0, 0x6A, 0x48, 0x8E, 0xAE, 0x63, 0xB9, 0x6C, 0x60, 0x7E, 0x9A, 0x67, 0x8C, 0x6F, 0x57, 0x6D, 0x6E, 0x6B, 0x12, 0x71, 0x78, 0x5C, 0x22, 0x6F, 0x2E, 0x73, 0x99, 0x49, 0xDD, 0x74, 0x0D, 0x75, 0xC4, 0x33, 0x85, 0x7A, 0x47, 0x78, 0x1A, 0x26, 0x7B, 0x7E, 0x16, 0x79, 0x46, 0x20, 0xF2, 0x7F, 0xB9, 0x79, 0xC0, 0x95, 0x2F, 0x5D, 0x7D, 0x75, 0x0F, 0x8B, 0x8F, 0x60, 0xD3, 0x76, 0x51, 0x7D, 0x14, 0x65, 0x0C, 0x77, 0x15, 0x6C, 0x3F, 0x69, 0x0E, 0x77, 0xF8, 0x5B, 0x14, 0x6D, 0x89, 0x78, 0xC3, 0x48, 0xCD, 0x72, 0xE4, 0x79, 0x7D, 0x33, 0x18, 0x79, 0xE1, 0x79, 0xFC, 0x26, 0x28, 0x7E, 0x0A, 0x7A, 0x1D, 0x20, 0xA0, 0x7F, 0xD1, 0x7A, 0x27, 0x93, 0x12, 0x5A, 0xA3, 0x7F, 0x18, 0x89, 0x3C, 0x5E, 0x47, 0x7F, 0x48, 0x7A, 0xA9, 0x62, 0xE8, 0x7F, 0x18, 0x6B, 0x87, 0x67, 0x5F, 0x7E, 0x6C, 0x5A, 0x65, 0x6C, 0x2B, 0x7D, 0xFF, 0x47, 0x6E, 0x71, 0xE3, 0x7D, 0x4C, 0x32, 0x4C, 0x79, 0x91, 0x7B, 0xC7, 0x25, 0xB2, 0x7E, 0x0C, 0x7A, 0xC7, 0x20, 0x4E, 0x7F, 0xF4, 0x7A, 0x58, 0x92, 0x3A, 0x58, 0x5C, 0x89, 0x03, 0x87, 0xFA, 0x5C, 0x4B, 0x87, 0xF3, 0x79, 0x7C, 0x61, 0x06, 0x86, 0xB2, 0x6A, 0xD7, 0x65, 0xC3, 0x84, 0xE3, 0x59, 0x9C, 0x6B, 0x18, 0x83, 0x5F, 0x46, 0x64, 0x71, 0x4A, 0x81, 0x10, 0x31, 0x43, 0x79, 0x52, 0x7D, 0x88, 0x25, 0x25, 0x7E, 0x13, 0x7B, 0x5D, 0x1F, 0xFF, 0x80, 0x19, 0x7A, 0x71, 0x91, 0x1D, 0x55, 0xD2, 0x93, 0x74, 0x86, 0x3E, 0x5A, 0x87, 0x91, 0x93, 0x78, 0x57, 0x5F, 0x5F, 0x8F, 0xCE, 0x69, 0x76, 0x64, 0x6C, 0x8D, 0x3A, 0x58, 0x8D, 0x6A, 0x0A, 0x89, 0xDB, 0x45, 0x8D, 0x70, 0xA2, 0x85, 0x65, 0x30, 0x77, 0x79, 0x1A, 0x7F, 0x7B, 0x24, 0xC0, 0x7E, 0x1C, 0x7B, 0xFE, 0x1F, 0xCF, 0x80, 0x3E, 0x7A, 0x83, 0x8F, 0xBE, 0x54, 0x8F, 0x9D, 0x7F, 0x84, 0xAC, 0x59, 0x18, 0x9A, 0xA1, 0x76, 0xEE, 0x5E, 0x11, 0x97, 0x81, 0x68, 0x64, 0x63, 0x4A, 0x94, 0x1C, 0x57, 0xE5, 0x69, 0x24, 0x8F, 0xA8, 0x44, 0xBA, 0x70, 0x13, 0x89, 0x2F, 0x30, 0x32, 0x78, 0xDA, 0x81, 0x32, 0x24, 0xC4, 0x7E, 0x19, 0x7C, 0x8D, 0x1F, 0xF0, 0x80, 0x57, 0x7A, 0x94, 0x8D, 0xCE, 0x54, 0x0C, 0xA7, 0x18, 0x83, 0x78, 0x57, 0xB1, 0xA2, 0xDB, 0x75, 0x8D, 0x5C, 0xD9, 0x9E, 0x56, 0x67, 0x16, 0x62, 0x55, 0x99, 0xE1, 0x57, 0x05, 0x68, 0x84, 0x94, 0x45, 0x43, 0xEA, 0x6F, 0xB5, 0x8C, 0x39, 0x30, 0x70, 0x78, 0x91, 0x82, 0xAB, 0x25, 0x16, 0x7E, 0x0D, 0x7D, 0x06, 0x20, 0x52, 0x80, 0x69, 0x7A, 0xA1, 0x92, 0x94, 0x70, 0x6F, 0x56, 0xBE, 0x85, 0xC4, 0x70, 0xD0, 0x5B, 0xCD, 0x78, 0x7A, 0x72, 0x13, 0x61, 0x7D, 0x6B, 0x7B, 0x73, 0x8B, 0x66, 0x07, 0x59, 0x8B, 0x75, 0xCA, 0x6A, 0xE7, 0x44, 0x8D, 0x78, 0xE8, 0x6F, 0xBA, 0x30, 0xB6, 0x7C, 0xF1, 0x74, 0xAB, 0x25, 0x5B, 0x7F, 0x6B, 0x77, 0x5E, 0x20, 0x7D, 0x80, 0x7C, 0x78, 0x81, 0x90, 0xBA, 0x6C, 0xDB, 0x5F, 0x2F, 0x84, 0xBD, 0x6D, 0xFC, 0x63, 0xD0, 0x77, 0x7F, 0x6F, 0xE1, 0x67, 0xFF, 0x69, 0x3C, 0x71, 0xF5, 0x6B, 0x2D, 0x58, 0xBB, 0x74, 0x86, 0x6E, 0xBA, 0x46, 0x7B, 0x77, 0xE4, 0x72, 0x48, 0x31, 0x3D, 0x7C, 0x80, 0x76, 0x24, 0x25, 0x47, 0x7F, 0x4C, 0x78, 0x3A, 0x20, 0x3B, 0x80, 0x7F, 0x79, 0x19, 0x8D, 0x0A, 0x68, 0xEC, 0x69, 0x66, 0x84, 0x4C, 0x6A, 0xD4, 0x6C, 0x82, 0x76, 0xDA, 0x6D, 0x7C, 0x6E, 0xC2, 0x67, 0x62, 0x70, 0x0F, 0x71, 0x12, 0x57, 0x95, 0x72, 0xFB, 0x73, 0x57, 0x47, 0x55, 0x76, 0xDF, 0x75, 0x6F, 0x31, 0x80, 0x7C, 0x0A, 0x77, 0xE0, 0x25, 0x35, 0x7F, 0x30, 0x79, 0x28, 0x20, 0x0A, 0x80, 0x89, 0x79, 0xAF, 0x8A, 0x4F, 0x65, 0x90, 0x73, 0x2C, 0x81, 0x8F, 0x67, 0xD7, 0x75, 0x4A, 0x75, 0x6B, 0x6A, 0xF5, 0x76, 0x1E, 0x66, 0x8A, 0x6E, 0x10, 0x77, 0x3A, 0x56, 0x35, 0x71, 0x4F, 0x78, 0x59, 0x45, 0x6F, 0x75, 0xC7, 0x79, 0x0F, 0x31, 0x0C, 0x7B, 0xAD, 0x79, 0xAF, 0x25, 0x0D, 0x7F, 0x25, 0x79, 0xFA, 0x1F, 0xF2, 0x80, 0x9F, 0x7A, 0x17, 0x87, 0xE8, 0x63, 0x3B, 0x7C, 0xFF, 0x80, 0x13, 0x65, 0x6C, 0x7D, 0x49, 0x73, 0xB2, 0x68, 0xCF, 0x7D, 0x4A, 0x65, 0xB7, 0x6C, 0x6B, 0x7D, 0x51, 0x55, 0xD3, 0x70, 0x3B, 0x7D, 0x1E, 0x43, 0xD6, 0x75, 0x0A, 0x7C, 0xA1, 0x30, 0x24, 0x7B, 0x6C, 0x7B, 0x6D, 0x24, 0xB2, 0x7F, 0x26, 0x7A, 0xA2, 0x1F, 0xCA, 0x80, 0xBB, 0x7A, 0x4A, 0x86, 0xE0, 0x61, 0x0C, 0x86, 0x50, 0x7F, 0x25, 0x63, 0x94, 0x85, 0x91, 0x71, 0x48, 0x67, 0x22, 0x84, 0xD0, 0x64, 0x99, 0x6A, 0xF8, 0x83, 0xBF, 0x55, 0x47, 0x6F, 0x45, 0x82, 0x54, 0x43, 0x4A, 0x74, 0x76, 0x80, 0x44, 0x2F, 0x72, 0x7B, 0x36, 0x7D, 0x1F, 0x24, 0x48, 0x7F, 0x2B, 0x7B, 0x2F, 0x1F, 0x89, 0x80, 0xD9, 0x7A, 0x5A, 0x85, 0xD5, 0x5E, 0xB9, 0x90, 0x45, 0x7C, 0xAC, 0x61, 0xDA, 0x8F, 0x1A, 0x6F, 0x85, 0x65, 0x9D, 0x8D, 0x8D, 0x63, 0x3D, 0x69, 0xAC, 0x8B, 0x62, 0x54, 0x32, 0x6E, 0x4E, 0x88, 0x51, 0x42, 0xAD, 0x73, 0xCA, 0x84, 0x2E, 0x2E, 0xE3, 0x7A, 0xF3, 0x7E, 0xD7, 0x23, 0xF8, 0x7F, 0x29, 0x7B, 0xB1, 0x1F, 0x5F, 0x80, 0xF3, 0x7A, 0x59, 0x84, 0x60, 0x5D, 0x49, 0x99, 0xA4, 0x7B, 0xFE, 0x60, 0x8B, 0x97, 0xA8, 0x70, 0x10, 0x64, 0x52, 0x94, 0x94, 0x62, 0x58, 0x68, 0x90, 0x91, 0x51, 0x52, 0xB3, 0x6D, 0x71, 0x8D, 0x55, 0x40, 0x22, 0x73, 0x3E, 0x87, 0x6D, 0x2E, 0x35, 0x7A, 0xAB, 0x80, 0x4E, 0x24, 0x0B, 0x7F, 0x1B, 0x7C, 0x25, 0x1F, 0xA5, 0x81, 0x01, 0x7A, 0x5C, 0x84, 0x8F, 0x5B, 0xFC, 0xA2, 0xDF, 0x7C, 0x3E, 0x5E, 0xF6, 0x9F, 0x84, 0x6E, 0xBF, 0x63, 0x06, 0x9B, 0x62, 0x60, 0x46, 0x67, 0x7B, 0x96, 0xD3, 0x52, 0x27, 0x6C, 0x89, 0x92, 0x00, 0x40, 0x6D, 0x72, 0xC3, 0x8A, 0x95, 0x2F, 0x1C, 0x7A, 0x51, 0x81, 0xBE, 0x24, 0xA3, 0x7F, 0x03, 0x7C, 0x96, 0x20, 0x2C, 0x81, 0x08, 0x7A, 0x64, 0x87, 0x4C, 0x77, 0x4E, 0x57, 0xF0, 0x7B, 0x2B, 0x77, 0x59, 0x5D, 0x49, 0x6E, 0x43, 0x77, 0xAF, 0x62, 0x14, 0x62, 0xC5, 0x78, 0x6C, 0x66, 0x58, 0x53, 0xC2, 0x79, 0xE8, 0x6B, 0x2B, 0x42, 0x24, 0x7B, 0xDB, 0x6F, 0xAB, 0x2E, 0x9E, 0x7E, 0xAF, 0x74, 0x89, 0x23, 0xAB, 0x80, 0x72, 0x77, 0x4F, 0x1F, 0x0A, 0x81, 0x33, 0x78, 0x7D, 0x85, 0x02, 0x74, 0x42, 0x5F, 0x9A, 0x78, 0xA6, 0x74, 0xAC, 0x63, 0xA1, 0x6D, 0xE2, 0x75, 0xDA, 0x67, 0xBC, 0x61, 0xF7, 0x77, 0x09, 0x6A, 0xE7, 0x52, 0xFB, 0x78, 0xA4, 0x6E, 0x78, 0x42, 0x24, 0x7A, 0xF4, 0x72, 0x11, 0x2E, 0xBC, 0x7E, 0x51, 0x75, 0xF5, 0x23, 0xC2, 0x80, 0x5B, 0x78, 0x21, 0x1F, 0x20, 0x81, 0x3A, 0x79, 0x0B, 0x80, 0x94, 0x71, 0x18, 0x68, 0x85, 0x78, 0xA2, 0x72, 0x10, 0x6B, 0xA3, 0x6D, 0x19, 0x73, 0xCD, 0x6E, 0x20, 0x60, 0x3F, 0x75, 0x4D, 0x70, 0xA9, 0x51, 0xD0, 0x77, 0x48, 0x72, 0xAC, 0x42, 0x1B, 0x7A, 0x08, 0x74, 0xE9, 0x2E, 0xD4, 0x7D, 0xEC, 0x77, 0x97, 0x23, 0xE0, 0x80, 0x44, 0x79, 0x04, 0x1F, 0x40, 0x81, 0x44, 0x79, 0x9B, 0x7F, 0x0F, 0x6E, 0x00, 0x71, 0x91, 0x77, 0xD1, 0x6F, 0x7E, 0x73, 0x12, 0x6C, 0xE0, 0x71, 0x6F, 0x74, 0xB6, 0x5F, 0xEA, 0x73, 0x81, 0x76, 0x41, 0x51, 0x16, 0x75, 0xF9, 0x77, 0x5E, 0x41, 0x16, 0x79, 0x2C, 0x78, 0x44, 0x2E, 0xAD, 0x7D, 0x99, 0x79, 0x4F, 0x23, 0xEF, 0x80, 0x37, 0x79, 0xCC, 0x1F, 0x5A, 0x81, 0x54, 0x79, 0xFE, 0x7C, 0x4B, 0x6B, 0xC2, 0x7A, 0x65, 0x75, 0xEE, 0x6D, 0x62, 0x7A, 0xB0, 0x6B, 0x7A, 0x6F, 0x9C, 0x7B, 0x5C, 0x5E, 0xC9, 0x71, 0xFB, 0x7B, 0xC9, 0x50, 0x5E, 0x74, 0xDF, 0x7B, 0xEC, 0x40, 0x87, 0x78, 0x89, 0x7B, 0xB1, 0x2E, 0x5C, 0x7D, 0x5D, 0x7A, 0xF7, 0x23, 0xCD, 0x80, 0x34, 0x7A, 0x69, 0x1F, 0x4A, 0x81, 0x69, 0x7A, 0x29, 0x7A, 0xE4, 0x69, 0x88, 0x82, 0xF2, 0x73, 0xA5, 0x6B, 0xA5, 0x82, 0xD3, 0x69, 0x1F, 0x6E, 0x2F, 0x82, 0x77, 0x5D, 0x42, 0x70, 0xAA, 0x82, 0x14, 0x4F, 0xA1, 0x73, 0xE0, 0x80, 0xFA, 0x40, 0x51, 0x77, 0xEE, 0x7F, 0x34, 0x2E, 0x02, 0x7D, 0x28, 0x7C, 0x8A, 0x23, 0x85, 0x80, 0x36, 0x7A, 0xE2, 0x1F, 0x11, 0x81, 0x82, 0x7A, 0x2C, 0x7B, 0x5A, 0x67, 0x72, 0x8D, 0x27, 0x72, 0xFC, 0x69, 0xCD, 0x8C, 0xB4, 0x67, 0x62, 0x6C, 0x72, 0x8B, 0x35, 0x5B, 0x53, 0x6F, 0x59, 0x89, 0x2C, 0x4E, 0x83, 0x72, 0xF8, 0x86, 0x9C, 0x3F, 0x78, 0x77, 0x44, 0x82, 0xDC, 0x2D, 0x5B, 0x7C, 0xE5, 0x7E, 0x13, 0x23, 0x2C, 0x80, 0x31, 0x7B, 0x48, 0x1E, 0xDE, 0x81, 0x98, 0x7A, 0x17, 0x78, 0xC7, 0x66, 0x79, 0x95, 0xA2, 0x72, 0xC8, 0x68, 0xE5, 0x94, 0xBF, 0x67, 0x26, 0x6B, 0x59, 0x91, 0xF1, 0x59, 0xD8, 0x6E, 0x7F, 0x8E, 0x75, 0x4C, 0xC3, 0x72, 0x2A, 0x8A, 0xEA, 0x3C, 0xBA, 0x76, 0xA9, 0x85, 0xB2, 0x2C, 0xB4, 0x7C, 0x8A, 0x7F, 0x62, 0x23, 0x24, 0x80, 0x1C, 0x7B, 0xA3, 0x1E, 0xF8, 0x81, 0xA3, 0x7A, 0x06, 0x77, 0x64, 0x65, 0x4A, 0x9D, 0xA6, 0x72, 0x17, 0x67, 0xD2, 0x9B, 0xA7, 0x65, 0x98, 0x6A, 0x84, 0x98, 0x2D, 0x58, 0x51, 0x6D, 0x76, 0x93, 0x7F, 0x4B, 0x10, 0x70, 0xE2, 0x8E, 0xCC, 0x3D, 0x2F, 0x75, 0xDE, 0x88, 0x65, 0x2F, 0x05, 0x7B, 0xD6, 0x80, 0xDC, 0x23, 0xC4, 0x7F, 0xF3, 0x7C, 0x06, 0x1F, 0x17, 0x81, 0xAD, 0x79, 0xF9, 0x7C, 0x5D, 0x7E, 0x33, 0x58, 0x23, 0x72, 0x5F, 0x7D, 0x95, 0x5D, 0x9D, 0x66, 0x9B, 0x7D, 0x33, 0x62, 0x54, 0x5A, 0xA7, 0x7D, 0x78, 0x66, 0x5D, 0x4D, 0x1C, 0x7E, 0x1E, 0x6B, 0x01, 0x3E, 0x48, 0x7E, 0xDD, 0x6F, 0x61, 0x2C, 0x65, 0x80, 0x5F, 0x74, 0x3F, 0x22, 0x28, 0x81, 0x5B, 0x77, 0x32, 0x1D, 0xD4, 0x81, 0xC8, 0x78, 0x75, 0x79, 0x8A, 0x7B, 0xD1, 0x5F, 0x86, 0x6F, 0xF6, 0x7B, 0x31, 0x63, 0x03, 0x66, 0x52, 0x7B, 0xA9, 0x66, 0xCF, 0x5A, 0xD6, 0x7C, 0x0E, 0x6A, 0x81, 0x4C, 0xE4, 0x7C, 0xD9, 0x6E, 0x24, 0x3D, 0x6D, 0x7E, 0x18, 0x71, 0xB8, 0x2C, 0x39, 0x80, 0x12, 0x75, 0xB2, 0x22, 0x5F, 0x81, 0x47, 0x78, 0x00, 0x1E, 0x31, 0x81, 0xCB, 0x78, 0xFA, 0x75, 0xCD, 0x79, 0x26, 0x67, 0xC6, 0x6E, 0x5E, 0x79, 0x0D, 0x6A, 0x0D, 0x65, 0x6D, 0x79, 0xCF, 0x6C, 0xFE, 0x59, 0x8C, 0x7A, 0x63, 0x6F, 0xD6, 0x4B, 0xF8, 0x7B, 0x9F, 0x72, 0x0F, 0x3C, 0xD5, 0x7D, 0x4E, 0x74, 0x66, 0x2C, 0x40, 0x7F, 0xBA, 0x77, 0x49, 0x22, 0xAB, 0x81, 0x30, 0x78, 0xD9, 0x1E, 0x96, 0x81, 0xCF, 0x79, 0x80, 0x74, 0x6B, 0x75, 0xFA, 0x70, 0x02, 0x6D, 0x88, 0x76, 0xCB, 0x71, 0xAE, 0x63, 0xA1, 0x77, 0xC4, 0x73, 0xFA, 0x58, 0xFF, 0x79, 0x02, 0x75, 0x11, 0x4B, 0x76, 0x7A, 0xA3, 0x76, 0x40, 0x3C, 0xB7, 0x7C, 0x98, 0x77, 0x80, 0x2C, 0x9D, 0x7F, 0x6B, 0x78, 0xE9, 0x22, 0xFC, 0x81, 0x1E, 0x79, 0x95, 0x1E, 0xDA, 0x81, 0xD8, 0x79, 0xD9, 0x72, 0x05, 0x74, 0x40, 0x78, 0x39, 0x6B, 0xF5, 0x74, 0xF6, 0x79, 0x0D, 0x62, 0x4A, 0x76, 0x16, 0x79, 0xE9, 0x57, 0x90, 0x77, 0x90, 0x7A, 0x41, 0x4A, 0x66, 0x79, 0x89, 0x7A, 0x92, 0x3D, 0x04, 0x7B, 0xFA, 0x7A, 0xB9, 0x2C, 0xEE, 0x7F, 0x2E, 0x7A, 0x73, 0x23, 0x17, 0x81, 0x18, 0x7A, 0x21, 0x1E, 0xDF, 0x81, 0xE8, 0x79, 0xFA, 0x70, 0xF2, 0x72, 0x35, 0x80, 0xA4, 0x69, 0xDC, 0x73, 0x64, 0x80, 0xDA, 0x60, 0x47, 0x74, 0x91, 0x80, 0x45, 0x55, 0x65, 0x76, 0x36, 0x80, 0x19, 0x49, 0x57, 0x78, 0x88, 0x7F, 0x31, 0x3D, 0x11, 0x7B, 0x62, 0x7D, 0xF7, 0x2C, 0xB1, 0x7E, 0xFB, 0x7B, 0xDF, 0x22, 0xDA, 0x81, 0x19, 0x7A, 0x84, 0x1E, 0xA8, 0x81, 0xFF, 0x79, 0xEE, 0x71, 0x2B, 0x70, 0x63, 0x8A, 0x97, 0x67, 0xCD, 0x71, 0xE7, 0x89, 0x54, 0x5E, 0x9D, 0x73, 0x3C, 0x87, 0xE7, 0x53, 0x85, 0x75, 0x2E, 0x86, 0x9C, 0x48, 0xD8, 0x77, 0xA4, 0x84, 0x8A, 0x3C, 0xC6, 0x7A, 0xAC, 0x81, 0x79, 0x2B, 0xF3, 0x7E, 0xBC, 0x7D, 0x41, 0x22, 0x58, 0x81, 0x18, 0x7A, 0xCE, 0x1E, 0x4B, 0x82, 0x18, 0x79, 0xC4, 0x6F, 0x20, 0x6F, 0x1A, 0x92, 0x02, 0x69, 0x37, 0x70, 0xA5, 0x90, 0x87, 0x5F, 0x31, 0x72, 0x53, 0x8E, 0xB4, 0x53, 0x9B, 0x74, 0x7E, 0x8C, 0x0A, 0x47, 0xD3, 0x76, 0xFD, 0x88, 0xB9, 0x3A, 0xBE, 0x7A, 0x23, 0x84, 0x34, 0x2B, 0x20, 0x7E, 0x6F, 0x7E, 0x70, 0x21, 0xFE, 0x81, 0x08, 0x7B, 0x0E, 0x1E, 0x15, 0x82, 0x25, 0x79, 0x9D, 0x6C, 0xB4, 0x6E, 0x89, 0x99, 0x4B, 0x67, 0xD2, 0x6F, 0xCA, 0x97, 0x78, 0x5D, 0x83, 0x71, 0x9A, 0x94, 0x4A, 0x52, 0x9A, 0x73, 0x8A, 0x90, 0x70, 0x46, 0x62, 0x75, 0xE3, 0x8B, 0xD9, 0x39, 0x59, 0x79, 0x91, 0x86, 0x4B, 0x2B, 0x19, 0x7E, 0x0B, 0x7F, 0x8D, 0x21, 0xF3, 0x80, 0xED, 0x7B, 0x53, 0x1D, 0xFA, 0x82, 0x2B, 0x79, 0x81, 0x6D, 0xA3, 0x86, 0x87, 0x58, 0xFC, 0x66, 0x90, 0x84, 0xBB, 0x5D, 0x69, 0x5D, 0xAA, 0x83, 0xFD, 0x62, 0x20, 0x53, 0x18, 0x83, 0x6D, 0x66, 0x42, 0x46, 0xA0, 0x82, 0xD3, 0x6A, 0x24, 0x39, 0x3B, 0x82, 0x61, 0x6E, 0xBC, 0x29, 0xE6, 0x82, 0x40, 0x73, 0xD9, 0x20, 0xA8, 0x82, 0x48, 0x77, 0x11, 0x1C, 0xB6, 0x82, 0x4C, 0x78, 0x6C, 0x6C, 0x8D, 0x84, 0x10, 0x5F, 0x5B, 0x65, 0x71, 0x82, 0xBD, 0x62, 0x3D, 0x5C, 0xFE, 0x82, 0x77, 0x65, 0xED, 0x52, 0x54, 0x82, 0x05, 0x69, 0xC7, 0x46, 0x66, 0x81, 0xBE, 0x6D, 0x6E, 0x38, 0x8B, 0x81, 0xAC, 0x71, 0x18, 0x29, 0xAF, 0x81, 0xFB, 0x75, 0x5B, 0x20, 0xFF, 0x82, 0x31, 0x77, 0xD5, 0x1D, 0x49, 0x82, 0x48, 0x78, 0xE2, 0x69, 0xE6, 0x81, 0x83, 0x67, 0x01, 0x63, 0x37, 0x81, 0x07, 0x69, 0x05, 0x5B, 0xE6, 0x80, 0xCD, 0x6B, 0xCB, 0x52, 0x74, 0x80, 0x98, 0x6E, 0x4D, 0x46, 0x23, 0x80, 0xB7, 0x70, 0xFE, 0x37, 0x85, 0x80, 0xF6, 0x73, 0xAF, 0x29, 0xCA, 0x81, 0xA6, 0x76, 0xE4, 0x21, 0x7C, 0x82, 0x15, 0x78, 0x9F, 0x1D, 0xE5, 0x82, 0x44, 0x79, 0x58, 0x68, 0x0F, 0x7E, 0x75, 0x6E, 0x41, 0x61, 0x7E, 0x7E, 0xF0, 0x6F, 0xBE, 0x59, 0x93, 0x7E, 0xF9, 0x72, 0x73, 0x51, 0x8A, 0x7F, 0x40, 0x73, 0x70, 0x45, 0x6F, 0x7F, 0xCE, 0x75, 0x01, 0x38, 0x38, 0x80, 0x5B, 0x76, 0xA4, 0x2A, 0xA0, 0x81, 0x54, 0x78, 0x6A, 0x22, 0x09, 0x81, 0xFC, 0x79, 0x49, 0x1E, 0x55, 0x82, 0x44, 0x79, 0xA4, 0x67, 0x78, 0x7C, 0xE1, 0x75, 0x26, 0x61, 0xF9, 0x7D, 0x3D, 0x76, 0x7D, 0x58, 0xB5, 0x7D, 0x84, 0x78, 0x13, 0x4F, 0xB4, 0x7D, 0xF5, 0x78, 0x76, 0x43, 0xFE, 0x7E, 0xD0, 0x79, 0x0D, 0x38, 0xE5, 0x7F, 0xC7, 0x79, 0x99, 0x2B, 0x4C, 0x81, 0x14, 0x79, 0xD0, 0x22, 0x51, 0x81, 0xF0, 0x79, 0xC2, 0x1E, 0x7A, 0x82, 0x4E, 0x79, 0xB8, 0x62, 0x08, 0x7B, 0x7C, 0x7C, 0xBA, 0x60, 0xED, 0x7B, 0xB3, 0x7D, 0xC7, 0x57, 0xB1, 0x7C, 0x39, 0x7D, 0xDC, 0x4D, 0x7C, 0x7C, 0xEF, 0x7D, 0xC3, 0x43, 0x0C, 0x7D, 0xF5, 0x7D, 0x34, 0x38, 0xC3, 0x7F, 0x40, 0x7C, 0x81, 0x2A, 0xBF, 0x80, 0xEA, 0x7B, 0x0B, 0x22, 0x08, 0x81, 0xF1, 0x7A, 0x0D, 0x1E, 0x4A, 0x82, 0x63, 0x79, 0x9F, 0x63, 0x35, 0x7A, 0x01, 0x86, 0x05, 0x5D, 0x4F, 0x7A, 0x7B, 0x85, 0x82, 0x55, 0x88, 0x7B, 0x01, 0x84, 0xA0, 0x4B, 0xE1, 0x7B, 0xCF, 0x83, 0xAF, 0x43, 0x01, 0x7C, 0xFF, 0x82, 0x1E, 0x38, 0xA9, 0x7E, 0x89, 0x7F, 0xB0, 0x29, 0xCC, 0x80, 0xB9, 0x7C, 0x3A, 0x21, 0x45, 0x81, 0xFB, 0x7A, 0x37, 0x1D, 0xB1, 0x82, 0x83, 0x79, 0x5E, 0x63, 0xB2, 0x78, 0xCA, 0x8D, 0xBD, 0x5C, 0x1C, 0x79, 0x5A, 0x8C, 0x45, 0x54, 0xFC, 0x7A, 0x2B, 0x8A, 0xCF, 0x4C, 0x8E, 0x7B, 0x16, 0x88, 0xEF, 0x42, 0x6C, 0x7C, 0x4F, 0x86, 0x18, 0x37, 0x0C, 0x7E, 0x09, 0x82, 0x3D, 0x28, 0x99, 0x80, 0x84, 0x7D, 0x3B, 0x20, 0x76, 0x81, 0xFC, 0x7A, 0x54, 0x1D, 0x1B, 0x82, 0x98, 0x79, 0x1F, 0x62, 0xAB, 0x77, 0x9F, 0x94, 0xEC, 0x5D, 0x9D, 0x78, 0x1B, 0x93, 0x0D, 0x54, 0xBA, 0x78, 0xE7, 0x90, 0x52, 0x4C, 0xE6, 0x7A, 0x05, 0x8D, 0x3B, 0x41, 0xAE, 0x7B, 0x82, 0x89, 0x7C, 0x35, 0x13, 0x7D, 0xA3, 0x84, 0x50, 0x27, 0x61, 0x80, 0x33, 0x7E, 0x3A, 0x20, 0x0B, 0x81, 0xE0, 0x7A, 0x8A, 0x1C, 0xDE, 0x82, 0x97, 0x78, 0xF8, 0x5F, 0x6B, 0x90, 0x62, 0x59, 0x48, 0x59, 0x39, 0x8E, 0x3D, 0x5D, 0x2F, 0x53, 0x56, 0x8C, 0xC5, 0x60, 0xA8, 0x4B, 0x8B, 0x8A, 0xE5, 0x64, 0xFA, 0x3F, 0x29, 0x88, 0x91, 0x69, 0x64, 0x34, 0x4A, 0x86, 0xA0, 0x6E, 0x3A, 0x27, 0x24, 0x84, 0x7E, 0x73, 0xB1, 0x1F, 0x08, 0x83, 0x4D, 0x76, 0xF6, 0x1B, 0x8E, 0x82, 0xCC, 0x78, 0x5B, 0x5E, 0x20, 0x8E, 0x3E, 0x5F, 0x18, 0x59, 0x05, 0x8C, 0x94, 0x61, 0x8A, 0x51, 0x20, 0x8B, 0x2E, 0x64, 0xBF, 0x48, 0x93, 0x89, 0xAF, 0x68, 0x35, 0x3F, 0x54, 0x87, 0xB9, 0x6C, 0x44, 0x34, 0x22, 0x85, 0xF7, 0x70, 0x4F, 0x27, 0x22, 0x84, 0x2E, 0x74, 0xF1, 0x1F, 0x8E, 0x83, 0x2F, 0x77, 0x9B, 0x1C, 0x55, 0x82, 0xC3, 0x78, 0xBD, 0x5D, 0x1B, 0x8C, 0x35, 0x65, 0xFD, 0x57, 0x83, 0x8A, 0xEF, 0x67, 0x96, 0x50, 0x0B, 0x89, 0x9E, 0x6A, 0x14, 0x47, 0xEC, 0x88, 0x3F, 0x6C, 0x95, 0x3F, 0x85, 0x86, 0xCB, 0x6F, 0x96, 0x33, 0xFB, 0x85, 0x51, 0x72, 0xBE, 0x27, 0x6B, 0x83, 0xD6, 0x76, 0x52, 0x20, 0x3A, 0x83, 0x0B, 0x78, 0x49, 0x1D, 0x2B, 0x82, 0xB7, 0x79, 0x1C, 0x5C, 0xD8, 0x89, 0xB6, 0x6C, 0x33, 0x56, 0x24, 0x88, 0xDF, 0x6D, 0x98, 0x4E, 0x69, 0x87, 0xE0, 0x6F, 0xC0, 0x46, 0xDA, 0x86, 0xE0, 0x71, 0x78, 0x3E, 0x38, 0x85, 0xE1, 0x73, 0x75, 0x33, 0xE1, 0x84, 0xB2, 0x75, 0x75, 0x28, 0x02, 0x83, 0x7E, 0x77, 0xB2, 0x20, 0xE5, 0x82, 0xEA, 0x78, 0xDD, 0x1D, 0xD6, 0x82, 0xAD, 0x79, 0x58, 0x5A, 0x95, 0x87, 0xF9, 0x72, 0x9B, 0x56, 0x67, 0x86, 0xDD, 0x73, 0xA9, 0x4E, 0x16, 0x86, 0x47, 0x75, 0x0A, 0x45, 0xEF, 0x85, 0xAD, 0x76, 0x37, 0x3D, 0x01, 0x85, 0x04, 0x77, 0x36, 0x33, 0x9D, 0x84, 0x1B, 0x78, 0x1F, 0x28, 0x55, 0x83, 0x35, 0x78, 0xF1, 0x21, 0x40, 0x82, 0xD3, 0x79, 0x44, 0x1E, 0x2E, 0x82, 0xAC, 0x79, 0x63, 0x54, 0xBB, 0x87, 0x27, 0x79, 0x6A, 0x55, 0x04, 0x86, 0x06, 0x7A, 0x4B, 0x4D, 0xC5, 0x85, 0x4A, 0x7A, 0x90, 0x44, 0xB4, 0x84, 0xF3, 0x7A, 0xFC, 0x3B, 0xD1, 0x84, 0x5A, 0x7A, 0xFD, 0x33, 0x49, 0x83, 0x99, 0x7A, 0xCA, 0x28, 0x09, 0x82, 0xFF, 0x7A, 0x0C, 0x21, 0x0D, 0x82, 0xCB, 0x79, 0x7F, 0x1E, 0x08, 0x82, 0xB9, 0x79, 0x40, 0x54, 0xB9, 0x85, 0x74, 0x81, 0x6C, 0x53, 0x19, 0x84, 0x82, 0x81, 0x73, 0x4C, 0x56, 0x84, 0x0A, 0x81, 0x3C, 0x43, 0x4A, 0x83, 0xCE, 0x80, 0x4C, 0x3B, 0x1F, 0x83, 0x64, 0x7F, 0x1D, 0x32, 0xC4, 0x82, 0xF3, 0x7D, 0x86, 0x27, 0x09, 0x82, 0xDC, 0x7B, 0x07, 0x20, 0x1A, 0x82, 0xDE, 0x79, 0x8A, 0x1D, 0x42, 0x82, 0xDA, 0x78, 0xEE, 0x56, 0xD5, 0x84, 0x2D, 0x88, 0x70, 0x4F, 0xCF, 0x83, 0x99, 0x87, 0x5A, 0x49, 0x4B, 0x83, 0x31, 0x86, 0x65, 0x43, 0x1F, 0x82, 0xAB, 0x84, 0xDB, 0x3B, 0x24, 0x82, 0x78, 0x82, 0xA2, 0x32, 0x11, 0x82, 0x76, 0x7F, 0xC6, 0x25, 0x87, 0x82, 0xD6, 0x7B, 0xBE, 0x1E, 0x8B, 0x83, 0x0F, 0x79, 0x67, 0x1C, 0x4E, 0x82, 0xFB, 0x78, 0x95, 0x55, 0xEB, 0x83, 0x76, 0x8E, 0x7E, 0x51, 0x5C, 0x83, 0x47, 0x8D, 0xD3, 0x49, 0xC4, 0x82, 0x72, 0x8B, 0x96, 0x43, 0xCB, 0x82, 0x1E, 0x88, 0xF0, 0x3A, 0x22, 0x82, 0x1D, 0x85, 0xBF, 0x31, 0x71, 0x82, 0x33, 0x81, 0x91, 0x25, 0x22, 0x82, 0x84, 0x7C, 0xA5, 0x1E, 0xBC, 0x82, 0xCE, 0x79, 0xB1, 0x1C, 0x1D, 0x82, 0xEB, 0x78, 0x72, 0x50, 0xDE, 0x9B, 0xBB, 0x58, 0x62, 0x4C, 0x11, 0x99, 0x11, 0x5C, 0x2E, 0x47, 0x1C, 0x96, 0xC3, 0x5F, 0x9A, 0x3F, 0xF9, 0x93, 0xCF, 0x63, 0xA6, 0x36, 0xD5, 0x8F, 0x8B, 0x68, 0x83, 0x2E, 0x45, 0x8B, 0xB0, 0x6D, 0x59, 0x23, 0xC2, 0x87, 0x11, 0x73, 0x4B, 0x1D, 0x1C, 0x84, 0x76, 0x76, 0xC5, 0x1A, 0x3A, 0x83, 0x5C, 0x78, 0x41, 0x50, 0xE5, 0x99, 0xCA, 0x5D, 0x94, 0x4B, 0x9B, 0x97, 0xFF, 0x60, 0x39, 0x45, 0x7B, 0x95, 0x67, 0x63, 0x39, 0x3F, 0x08, 0x92, 0x77, 0x66, 0x9D, 0x37, 0x60, 0x8E, 0xDA, 0x6A, 0xC3, 0x2E, 0x96, 0x8B, 0x26, 0x6F, 0x23, 0x23, 0xF5, 0x86, 0xD3, 0x74, 0x4C, 0x1D, 0xEC, 0x84, 0x5E, 0x77, 0x41, 0x1B, 0x60, 0x83, 0x54, 0x78, 0x82, 0x4F, 0xF5, 0x97, 0xD2, 0x63, 0x42, 0x4B, 0x06, 0x96, 0x4E, 0x65, 0x7E, 0x45, 0x15, 0x93, 0x74, 0x67, 0xC2, 0x3E, 0x41, 0x90, 0xD5, 0x6A, 0x98, 0x37, 0x98, 0x8D, 0xD7, 0x6D, 0xD2, 0x2E, 0x9E, 0x8A, 0x71, 0x71, 0x62, 0x24, 0x45, 0x86, 0x78, 0x75, 0x7C, 0x1E, 0xE6, 0x84, 0x3A, 0x77, 0xC9, 0x1C, 0xB1, 0x83, 0x48, 0x78, 0xC1, 0x4E, 0xFA, 0x95, 0xDC, 0x69, 0xB2, 0x49, 0x51, 0x94, 0x4F, 0x6B, 0x6D, 0x43, 0x63, 0x92, 0x21, 0x6C, 0xB9, 0x3C, 0xAD, 0x8F, 0x9A, 0x6E, 0xC2, 0x36, 0x55, 0x8C, 0xC1, 0x71, 0x58, 0x2E, 0x2D, 0x89, 0x90, 0x73, 0xEC, 0x24, 0xB8, 0x86, 0x00, 0x76, 0xBB, 0x1F, 0xC5, 0x84, 0x0A, 0x78, 0x43, 0x1D, 0xBF, 0x83, 0x37, 0x78, 0xE7, 0x4C, 0xA5, 0x94, 0x66, 0x6F, 0x88, 0x48, 0x0F, 0x92, 0x83, 0x70, 0x58, 0x42, 0x3B, 0x90, 0xA3, 0x71, 0x46, 0x3B, 0x9D, 0x8E, 0x9A, 0x72, 0xD2, 0x35, 0x24, 0x8B, 0xD9, 0x74, 0xB4, 0x2D, 0xF5, 0x88, 0xB5, 0x76, 0x65, 0x25, 0x3A, 0x85, 0x86, 0x77, 0xE7, 0x20, 0x39, 0x83, 0xD8, 0x78, 0xA1, 0x1E, 0x1B, 0x83, 0x25, 0x78, 0xEC, 0x4B, 0xAF, 0x93, 0x98, 0x76, 0x68, 0x47, 0xD3, 0x91, 0xBF, 0x76, 0xA7, 0x41, 0x77, 0x8F, 0xAF, 0x76, 0x8E, 0x3A, 0x21, 0x8D, 0xE1, 0x77, 0x30, 0x33, 0x88, 0x8B, 0x27, 0x78, 0x10, 0x2D, 0xA1, 0x88, 0x11, 0x78, 0xC5, 0x25, 0x65, 0x85, 0x2B, 0x78, 0xEF, 0x20, 0x32, 0x83, 0xB4, 0x78, 0xDB, 0x1D, 0xF4, 0x83, 0x18, 0x78, 0xCE, 0x4C, 0x05, 0x91, 0xF7, 0x7D, 0x94, 0x47, 0x77, 0x90, 0x4F, 0x7D, 0x3F, 0x41, 0xDB, 0x8E, 0x8A, 0x7C, 0xB7, 0x3A, 0x7D, 0x8C, 0x9C, 0x7C, 0x63, 0x33, 0x19, 0x8A, 0x39, 0x7B, 0xEE, 0x2C, 0xD2, 0x87, 0x9E, 0x7B, 0x24, 0x24, 0xB9, 0x85, 0x06, 0x79, 0xCA, 0x1F, 0x9B, 0x83, 0xAA, 0x78, 0xE9, 0x1D, 0x68, 0x83, 0x19, 0x78, 0x89, 0x49, 0x56, 0x90, 0x4E, 0x83, 0x19, 0x44, 0xE9, 0x8F, 0x1F, 0x82, 0x63, 0x40, 0x4E, 0x8D, 0xB6, 0x81, 0xB2, 0x3A, 0x93, 0x8B, 0x93, 0x80, 0xAD, 0x33, 0x58, 0x89, 0x70, 0x7F, 0x15, 0x2C, 0x4F, 0x87, 0x58, 0x7D, 0x09, 0x23, 0xBD, 0x85, 0x08, 0x7A, 0x65, 0x1E, 0xC5, 0x83, 0xB6, 0x78, 0xDB, 0x1C, 0xC1, 0x83, 0x21, 0x78, 0x39, 0x47, 0xEA, 0x8E, 0xF4, 0x88, 0x76, 0x44, 0x54, 0x8E, 0xC3, 0x87, 0xA4, 0x3F, 0x4D, 0x8D, 0xF3, 0x85, 0xCE, 0x39, 0x7E, 0x8B, 0xD0, 0x83, 0xEE, 0x32, 0x61, 0x89, 0x36, 0x81, 0x6B, 0x2C, 0x9B, 0x87, 0x1B, 0x7E, 0x65, 0x23, 0x44, 0x84, 0xFE, 0x7A, 0xF1, 0x1E, 0x5D, 0x83, 0xAF, 0x78, 0xDF, 0x1C, 0x59, 0x83, 0x1D, 0x77, 0xFC, 0x47, 0xA1, 0xA5, 0xD9, 0x57, 0xFD, 0x43, 0xF0, 0xA3, 0x07, 0x5A, 0xE0, 0x3C, 0xE5, 0x9F, 0x26, 0x5E, 0x6B, 0x35, 0xEF, 0x9A, 0x7A, 0x62, 0x00, 0x2D, 0xF2, 0x96, 0x48, 0x66, 0xE0, 0x28, 0xDB, 0x90, 0x74, 0x6C, 0x5C, 0x21, 0x5A, 0x89, 0x4E, 0x72, 0xCC, 0x1B, 0x62, 0x85, 0x8A, 0x76, 0x87, 0x18, 0xCC, 0x83, 0xF1, 0x78, 0x1F, 0x45, 0xB1, 0xA3, 0xFE, 0x5C, 0x74, 0x41, 0x5D, 0xA1, 0xC7, 0x5E, 0xC5, 0x3B, 0xF5, 0x9E, 0x2F, 0x61, 0xAC, 0x36, 0x63, 0x99, 0xD1, 0x65, 0x16, 0x2F, 0xA9, 0x95, 0x3A, 0x69, 0x2B, 0x28, 0x79, 0x90, 0x17, 0x6D, 0xD5, 0x20, 0x9A, 0x89, 0x70, 0x73, 0x8B, 0x1C, 0x5C, 0x85, 0x94, 0x76, 0xD7, 0x1A, 0x98, 0x83, 0xF1, 0x78, 0x3D, 0x44, 0x56, 0xA1, 0x33, 0x61, 0x9F, 0x40, 0x94, 0x9F, 0xC7, 0x63, 0x97, 0x3C, 0x32, 0x9C, 0x4F, 0x65, 0xAD, 0x37, 0xA9, 0x97, 0xF5, 0x68, 0x93, 0x30, 0xDF, 0x93, 0xBF, 0x6C, 0x05, 0x27, 0xE0, 0x8F, 0x32, 0x6F, 0xF1, 0x20, 0x60, 0x89, 0x26, 0x74, 0x8A, 0x1D, 0xC2, 0x85, 0x7F, 0x77, 0x34, 0x1C, 0xE4, 0x83, 0xEF, 0x78, 0x57, 0x44, 0x73, 0x9F, 0xAF, 0x67, 0x1C, 0x40, 0x54, 0x9D, 0xA4, 0x68, 0x7B, 0x3B, 0x6E, 0x9A, 0x78, 0x6A, 0x4D, 0x36, 0x8B, 0x96, 0xD1, 0x6C, 0x84, 0x31, 0x7C, 0x92, 0x75, 0x6F, 0x3F, 0x27, 0x34, 0x8D, 0xD2, 0x72, 0x7B, 0x20, 0xD2, 0x88, 0x75, 0x75, 0xB3, 0x1F, 0x1A, 0x85, 0x40, 0x77, 0x95, 0x1E, 0xE7, 0x83, 0xDE, 0x78, 0x69, 0x44, 0x3E, 0x9E, 0x4D, 0x6C, 0xAA, 0x3F, 0xC5, 0x9C, 0x0F, 0x6D, 0x9B, 0x39, 0xD5, 0x99, 0x27, 0x6F, 0x2C, 0x34, 0x8C, 0x95, 0xED, 0x70, 0x92, 0x30, 0x78, 0x91, 0x8C, 0x72, 0x7D, 0x29, 0xC8, 0x8C, 0x4E, 0x74, 0xF8, 0x22, 0x9B, 0x87, 0x9A, 0x76, 0xEC, 0x1F, 0xA0, 0x84, 0xE1, 0x77, 0xF7, 0x1E, 0x8E, 0x83, 0xB6, 0x78, 0x69, 0x43, 0xD1, 0x9C, 0xA6, 0x72, 0xB4, 0x3F, 0x66, 0x9A, 0x89, 0x73, 0x1F, 0x38, 0xE1, 0x97, 0x36, 0x73, 0xD5, 0x33, 0x19, 0x94, 0xF1, 0x74, 0x9E, 0x2E, 0x4A, 0x90, 0xB7, 0x75, 0xA1, 0x2A, 0x8C, 0x8B, 0x59, 0x77, 0x28, 0x23, 0xF1, 0x86, 0xFE, 0x77, 0xFA, 0x1F, 0xC8, 0x84, 0x8F, 0x78, 0x40, 0x1E, 0x04, 0x83, 0x84, 0x78, 0x5A, 0x44, 0x40, 0x99, 0xC4, 0x78, 0xD2, 0x3F, 0x6C, 0x98, 0xF2, 0x7A, 0x36, 0x39, 0x8B, 0x96, 0x9A, 0x79, 0xD5, 0x33, 0x11, 0x93, 0xCA, 0x79, 0x47, 0x2C, 0x96, 0x8F, 0xDB, 0x78, 0xE7, 0x28, 0x42, 0x8B, 0x90, 0x78, 0xE6, 0x23, 0x4C, 0x86, 0xEE, 0x78, 0xAC, 0x1F, 0x80, 0x84, 0x64, 0x78, 0x58, 0x1D, 0xC9, 0x83, 0x53, 0x78, 0x30, 0x42, 0x6F, 0x98, 0xF3, 0x7F, 0x17, 0x3D, 0xDC, 0x97, 0xD6, 0x7F, 0x23, 0x3A, 0x34, 0x95, 0x53, 0x7E, 0xE7, 0x33, 0x85, 0x92, 0x81, 0x7D, 0x7B, 0x2C, 0x5D, 0x8F, 0x66, 0x7B, 0xD8, 0x26, 0x9D, 0x8B, 0xCE, 0x7A, 0x61, 0x22, 0x01, 0x87, 0x21, 0x79, 0x0E, 0x1E, 0xF0, 0x84, 0x65, 0x78, 0x42, 0x1D, 0x8D, 0x83, 0x3D, 0x77, 0xE9, 0x41, 0xE0, 0x98, 0xD1, 0x85, 0x70, 0x3B, 0x35, 0x97, 0xA3, 0x82, 0xBB, 0x37, 0x30, 0x95, 0x3E, 0x81, 0x67, 0x33, 0x3C, 0x91, 0x9C, 0x80, 0x7F, 0x2E, 0x13, 0x8E, 0x97, 0x7E, 0x44, 0x28, 0x53, 0x8B, 0x83, 0x7B, 0xAE, 0x21, 0x80, 0x87, 0x49, 0x79, 0x5D, 0x1E, 0x5C, 0x84, 0x78, 0x78, 0x1E, 0x1D, 0x19, 0x83, 0x3E, 0x77, 0x98, 0x9A, 0xA9, 0x5E, 0x79, 0x4D, 0xEF, 0x8D, 0x76, 0x60, 0xA2, 0x53, 0xD0, 0x7E, 0x9B, 0x63, 0xB8, 0x5A, 0x96, 0x6D, 0xE3, 0x67, 0x02, 0x60, 0x90, 0x5C, 0x58, 0x6B, 0x1D, 0x66, 0x46, 0x48, 0x92, 0x70, 0x9C, 0x6C, 0x3B, 0x32, 0x4F, 0x78, 0x3B, 0x72, 0xAF, 0x25, 0xE6, 0x7C, 0xCA, 0x76, 0x4B, 0x20, 0xAC, 0x7E, 0xBA, 0x77, 0xD1, 0x9A, 0x2D, 0x59, 0x2A, 0x58, 0x48, 0x8A, 0x7E, 0x5B, 0xED, 0x5C, 0x90, 0x7C, 0x1A, 0x60, 0x30, 0x61, 0xE8, 0x6D, 0xCF, 0x64, 0xB4, 0x66, 0x22, 0x5A, 0x93, 0x69, 0x79, 0x6A, 0xEA, 0x47, 0xAE, 0x6F, 0xBF, 0x6F, 0x5B, 0x32, 0x34, 0x77, 0xB4, 0x74, 0x59, 0x25, 0xD0, 0x7C, 0x8B, 0x77, 0x26, 0x20, 0x8C, 0x7E, 0x9F, 0x78, 0x54, 0x95, 0xCB, 0x53, 0xC9, 0x64, 0x63, 0x88, 0x81, 0x57, 0x6C, 0x67, 0x1E, 0x79, 0xB8, 0x5C, 0x7E, 0x6A, 0x74, 0x6A, 0xB2, 0x61, 0xCD, 0x6C, 0xE5, 0x58, 0x9B, 0x67, 0x94, 0x6F, 0xC6, 0x46, 0x53, 0x6E, 0x8F, 0x72, 0xEA, 0x31, 0xD5, 0x77, 0x21, 0x76, 0x4E, 0x25, 0x9E, 0x7C, 0x5F, 0x78, 0x18, 0x20, 0x61, 0x7E, 0xA1, 0x78, 0xD6, 0x92, 0x03, 0x4F, 0x7F, 0x6F, 0xF2, 0x85, 0xF1, 0x53, 0xEF, 0x70, 0x64, 0x77, 0x29, 0x59, 0xB3, 0x72, 0xC7, 0x67, 0x22, 0x5F, 0x47, 0x73, 0xE1, 0x56, 0xC4, 0x65, 0xA9, 0x74, 0xDE, 0x45, 0x18, 0x6D, 0x30, 0x76, 0xB7, 0x31, 0x68, 0x76, 0xA6, 0x78, 0x52, 0x25, 0x53, 0x7C, 0x61, 0x78, 0xF5, 0x20, 0x1B, 0x7E, 0xD6, 0x79, 0x33, 0x90, 0xEA, 0x4B, 0x43, 0x79, 0x42, 0x85, 0x97, 0x50, 0x88, 0x79, 0x0C, 0x75, 0x9E, 0x56, 0xF1, 0x7A, 0x68, 0x66, 0x05, 0x5C, 0xF9, 0x7A, 0x2F, 0x55, 0xDC, 0x63, 0xE9, 0x7A, 0x4F, 0x44, 0xAE, 0x6B, 0xE8, 0x7A, 0x9A, 0x30, 0xFC, 0x76, 0x42, 0x7A, 0x37, 0x24, 0xE5, 0x7C, 0x84, 0x79, 0xAF, 0x1F, 0xAE, 0x7F, 0x2E, 0x79, 0x6D, 0x90, 0xF3, 0x47, 0xCD, 0x83, 0x52, 0x84, 0xDA, 0x4D, 0x72, 0x82, 0xA9, 0x74, 0xB1, 0x54, 0x52, 0x82, 0x07, 0x64, 0xE5, 0x5A, 0xD0, 0x80, 0xEC, 0x54, 0xFF, 0x62, 0x41, 0x80, 0x2E, 0x43, 0xD8, 0x6A, 0xE2, 0x7E, 0xA1, 0x30, 0x00, 0x76, 0x07, 0x7C, 0x08, 0x24, 0x30, 0x7C, 0xB0, 0x7A, 0x56, 0x1F, 0x21, 0x7F, 0x85, 0x79, 0x99, 0x8C, 0xDC, 0x45, 0x6B, 0x8F, 0xD5, 0x80, 0x2B, 0x4B, 0x23, 0x8E, 0x4B, 0x73, 0x1B, 0x52, 0x14, 0x8B, 0xAA, 0x64, 0xAE, 0x59, 0x01, 0x89, 0x52, 0x54, 0x74, 0x60, 0xC5, 0x86, 0xC9, 0x43, 0x12, 0x6A, 0x19, 0x83, 0x2D, 0x2E, 0xE8, 0x75, 0xE1, 0x7E, 0x0D, 0x23, 0x4D, 0x7C, 0xCE, 0x7B, 0x04, 0x1E, 0x5F, 0x7F, 0xC1, 0x79, 0xB9, 0x8B, 0xB4, 0x43, 0x71, 0x99, 0xCC, 0x7E, 0xD2, 0x49, 0x0C, 0x97, 0x18, 0x71, 0x5D, 0x50, 0x29, 0x93, 0xD8, 0x64, 0x1E, 0x57, 0x76, 0x90, 0x93, 0x54, 0x0F, 0x5F, 0xCB, 0x8C, 0x29, 0x42, 0x8A, 0x69, 0x6C, 0x86, 0xC8, 0x2E, 0x5D, 0x75, 0x8E, 0x7F, 0xCF, 0x22, 0x95, 0x7C, 0xC4, 0x7B, 0x9B, 0x1D, 0x91, 0x7F, 0xD8, 0x79, 0xCE, 0x89, 0x89, 0x42, 0x86, 0xA2, 0x41, 0x7D, 0xB4, 0x47, 0x52, 0x9E, 0x8A, 0x72, 0x0E, 0x4E, 0x56, 0x9A, 0xBA, 0x63, 0xB0, 0x55, 0xE4, 0x96, 0x6E, 0x52, 0xCB, 0x5E, 0xB4, 0x90, 0x80, 0x40, 0x09, 0x68, 0xD3, 0x89, 0x0E, 0x2D, 0xF7, 0x75, 0x1A, 0x81, 0x38, 0x22, 0x01, 0x7C, 0xA2, 0x7C, 0x18, 0x1C, 0xCD, 0x7F, 0xDE, 0x79, 0xDD, 0x93, 0x12, 0x63, 0xF0, 0x4F, 0x5A, 0x86, 0xF5, 0x65, 0x57, 0x54, 0xFF, 0x78, 0x72, 0x67, 0x97, 0x5B, 0x67, 0x68, 0xFA, 0x6A, 0x3B, 0x61, 0x1F, 0x58, 0x49, 0x6D, 0xCF, 0x66, 0x7A, 0x43, 0xEF, 0x72, 0xBF, 0x6C, 0x97, 0x2F, 0xFB, 0x79, 0xB0, 0x72, 0xD4, 0x24, 0xBD, 0x7D, 0xB1, 0x76, 0x42, 0x1F, 0xF9, 0x7F, 0x63, 0x77, 0xB4, 0x90, 0xE2, 0x5F, 0x44, 0x58, 0x72, 0x84, 0x39, 0x61, 0x48, 0x5D, 0x63, 0x75, 0xCA, 0x64, 0x87, 0x62, 0x5B, 0x67, 0x63, 0x68, 0x48, 0x66, 0x94, 0x56, 0xEC, 0x6C, 0x9A, 0x6A, 0xE0, 0x44, 0xEC, 0x72, 0x01, 0x6F, 0x5A, 0x30, 0x64, 0x79, 0x31, 0x74, 0x59, 0x24, 0xB0, 0x7D, 0x84, 0x77, 0x1F, 0x1F, 0xBD, 0x7F, 0x5D, 0x78, 0x49, 0x8C, 0xB5, 0x5A, 0x1A, 0x64, 0x26, 0x81, 0xEC, 0x5D, 0x12, 0x66, 0xC6, 0x74, 0x1E, 0x61, 0x4C, 0x69, 0xD9, 0x65, 0x63, 0x65, 0xCA, 0x6C, 0xBE, 0x55, 0x7C, 0x6A, 0xC2, 0x6F, 0xA7, 0x44, 0x93, 0x70, 0xCB, 0x72, 0xB3, 0x30, 0x48, 0x78, 0xAB, 0x76, 0x2E, 0x24, 0x89, 0x7D, 0x66, 0x78, 0x12, 0x1F, 0x8C, 0x7F, 0x6C, 0x78, 0xDB, 0x89, 0x0F, 0x55, 0xBC, 0x6E, 0xBF, 0x7F, 0x38, 0x59, 0x9F, 0x70, 0x5A, 0x71, 0xE0, 0x5E, 0x7D, 0x71, 0xD9, 0x63, 0x90, 0x63, 0x5B, 0x73, 0x3F, 0x54, 0x38, 0x68, 0xCB, 0x74, 0xAF, 0x43, 0x87, 0x6F, 0x7D, 0x76, 0x60, 0x2F, 0xCD, 0x78, 0x38, 0x78, 0x19, 0x24, 0x47, 0x7D, 0x68, 0x78, 0xEC, 0x1F, 0x5E, 0x7F, 0x9D, 0x79, 0x41, 0x85, 0x69, 0x51, 0xCD, 0x78, 0x18, 0x7D, 0x34, 0x56, 0x6A, 0x78, 0xD9, 0x70, 0x63, 0x5B, 0xD6, 0x79, 0x83, 0x62, 0x85, 0x61, 0x2F, 0x79, 0xA0, 0x53, 0x30, 0x67, 0x36, 0x79, 0xDF, 0x42, 0x8C, 0x6E, 0x6A, 0x7A, 0x24, 0x2F, 0x3D, 0x77, 0xE5, 0x79, 0xEC, 0x23, 0xEC, 0x7D, 0x80, 0x79, 0x9E, 0x1F, 0x17, 0x7F, 0xE2, 0x79, 0x79, 0x84, 0xC9, 0x4E, 0xF2, 0x82, 0x32, 0x7B, 0x99, 0x53, 0x98, 0x81, 0xA7, 0x6F, 0x26, 0x59, 0x27, 0x81, 0x1D, 0x61, 0x78, 0x5F, 0x1B, 0x80, 0x1C, 0x52, 0x58, 0x65, 0xD8, 0x7F, 0x40, 0x41, 0xD3, 0x6D, 0xA6, 0x7D, 0xF7, 0x2E, 0x8D, 0x77, 0xB0, 0x7B, 0xB1, 0x23, 0x6A, 0x7D, 0xA1, 0x7A, 0x38, 0x1E, 0xAD, 0x80, 0x28, 0x79, 0x95, 0x85, 0x22, 0x4B, 0x71, 0x8D, 0x05, 0x7A, 0x2D, 0x51, 0x3C, 0x8B, 0xA5, 0x6D, 0x42, 0x56, 0xC1, 0x8A, 0x2E, 0x60, 0x48, 0x5D, 0x59, 0x87, 0xE0, 0x51, 0x96, 0x64, 0x88, 0x85, 0x63, 0x41, 0x1F, 0x6C, 0xE6, 0x82, 0x2B, 0x2D, 0xC5, 0x77, 0x82, 0x7D, 0x91, 0x22, 0xC5, 0x7D, 0xBD, 0x7A, 0xCE, 0x1E, 0x1D, 0x80, 0x63, 0x79, 0xA1, 0x83, 0xB1, 0x4A, 0x3D, 0x96, 0xD2, 0x78, 0xB8, 0x4F, 0x8A, 0x94, 0x6E, 0x6C, 0x18, 0x55, 0x6B, 0x91, 0xA1, 0x5F, 0x66, 0x5B, 0xE3, 0x8E, 0x94, 0x50, 0xF2, 0x63, 0x64, 0x8A, 0xC8, 0x40, 0x71, 0x6C, 0x3A, 0x85, 0xBB, 0x2D, 0x3D, 0x77, 0x49, 0x7F, 0x2B, 0x22, 0x41, 0x7D, 0xC3, 0x7B, 0x4D, 0x1D, 0x99, 0x80, 0x84, 0x79, 0xA8, 0x81, 0x70, 0x49, 0x37, 0x9F, 0xA6, 0x77, 0x05, 0x4D, 0xBC, 0x9C, 0x1A, 0x69, 0x65, 0x53, 0x89, 0x97, 0xDE, 0x5D, 0xB2, 0x5A, 0x68, 0x94, 0x05, 0x50, 0x3A, 0x62, 0x66, 0x8F, 0x3C, 0x3F, 0xCC, 0x6B, 0xC2, 0x88, 0x8A, 0x2C, 0xFE, 0x77, 0x0D, 0x80, 0x80, 0x21, 0xE7, 0x7D, 0xBA, 0x7B, 0xB9, 0x1D, 0x29, 0x80, 0x94, 0x79, 0xAE, 0x87, 0xB7, 0x6A, 0x46, 0x51, 0x74, 0x7C, 0xB7, 0x6B, 0x04, 0x56, 0x8D, 0x6F, 0xB7, 0x6C, 0x82, 0x5C, 0x1A, 0x63, 0x18, 0x6E, 0xAE, 0x61, 0x4A, 0x53, 0x35, 0x71, 0xC1, 0x66, 0xEF, 0x40, 0xB6, 0x75, 0xD8, 0x6C, 0xBF, 0x2D, 0xBE, 0x7B, 0x6E, 0x72, 0xDF, 0x23, 0x66, 0x7E, 0xBC, 0x76, 0x32, 0x1F, 0x0D, 0x80, 0x25, 0x77, 0x95, 0x85, 0x1C, 0x66, 0x15, 0x59, 0x9D, 0x7A, 0x40, 0x67, 0x69, 0x5E, 0x03, 0x6E, 0x01, 0x69, 0xED, 0x62, 0x76, 0x60, 0xE1, 0x6C, 0xD3, 0x66, 0x83, 0x51, 0xFE, 0x70, 0x59, 0x6A, 0xBD, 0x41, 0x68, 0x74, 0xD9, 0x6F, 0x40, 0x2E, 0x26, 0x7A, 0xFA, 0x74, 0x50, 0x23, 0x5B, 0x7E, 0xA1, 0x77, 0x15, 0x1E, 0xD0, 0x80, 0x30, 0x78, 0x3D, 0x81, 0x8D, 0x61, 0x58, 0x64, 0x1C, 0x78, 0x8D, 0x63, 0x7C, 0x66, 0x5C, 0x6D, 0x36, 0x67, 0x09, 0x68, 0xFB, 0x5F, 0x18, 0x6A, 0x8A, 0x6C, 0x39, 0x50, 0xAD, 0x6E, 0x70, 0x6F, 0x23, 0x41, 0x4E, 0x73, 0x93, 0x72, 0x4F, 0x2E, 0x30, 0x7A, 0x80, 0x76, 0x07, 0x23, 0x45, 0x7E, 0x8F, 0x78, 0x09, 0x1E, 0xA9, 0x80, 0x48, 0x78, 0xDF, 0x7F, 0x66, 0x5D, 0x8B, 0x6D, 0x52, 0x76, 0xBE, 0x60, 0x53, 0x6F, 0x38, 0x6A, 0xB2, 0x64, 0x20, 0x70, 0xBC, 0x5D, 0xC9, 0x68, 0x12, 0x72, 0x54, 0x50, 0x15, 0x6C, 0x5E, 0x73, 0xD9, 0x40, 0x77, 0x72, 0x63, 0x75, 0xCE, 0x2D, 0xD4, 0x7A, 0x19, 0x77, 0xD5, 0x23, 0x22, 0x7E, 0x8F, 0x78, 0xDE, 0x1E, 0x98, 0x80, 0x74, 0x79, 0x4B, 0x7B, 0xA8, 0x59, 0xE8, 0x76, 0x6A, 0x74, 0x39, 0x5D, 0x40, 0x77, 0x24, 0x69, 0x7D, 0x61, 0x72, 0x77, 0xE7, 0x5D, 0x25, 0x65, 0xF5, 0x78, 0x56, 0x4F, 0x29, 0x6B, 0x2B, 0x78, 0xE1, 0x3F, 0x8F, 0x71, 0x8E, 0x79, 0x69, 0x2D, 0x6A, 0x79, 0xCF, 0x79, 0x8E, 0x22, 0xEE, 0x7E, 0x9E, 0x79, 0x85, 0x1E, 0x78, 0x80, 0xA8, 0x79, 0x7E, 0x7A, 0x62, 0x57, 0x5A, 0x80, 0x16, 0x72, 0x5C, 0x5A, 0xC3, 0x7F, 0x9C, 0x67, 0x3A, 0x5F, 0x19, 0x7F, 0x56, 0x5B, 0x54, 0x64, 0x09, 0x7E, 0x7C, 0x4E, 0x0C, 0x6A, 0x00, 0x7D, 0xF8, 0x3E, 0xE6, 0x70, 0xE0, 0x7D, 0x0C, 0x2C, 0xFA, 0x79, 0x9A, 0x7B, 0x39, 0x22, 0x9C, 0x7E, 0xB5, 0x7A, 0x0C, 0x1E, 0x34, 0x80, 0xE0, 0x79, 0x8C, 0x7B, 0x0D, 0x53, 0xDF, 0x89, 0xEE, 0x71, 0xDB, 0x58, 0x46, 0x89, 0x20, 0x66, 0x14, 0x5D, 0x0B, 0x87, 0xDC, 0x5A, 0x16, 0x62, 0x92, 0x85, 0xE3, 0x4C, 0xFB, 0x68, 0xD3, 0x83, 0xC9, 0x3D, 0xFB, 0x70, 0x22, 0x80, 0xF4, 0x2C, 0x4B, 0x79, 0x69, 0x7C, 0xEF, 0x22, 0x25, 0x7E, 0xCF, 0x7A, 0x89, 0x1D, 0xD7, 0x81, 0x19, 0x79, 0x83, 0x79, 0x6A, 0x52, 0x48, 0x93, 0x53, 0x70, 0x92, 0x56, 0x94, 0x91, 0x81, 0x65, 0x8C, 0x5B, 0x8F, 0x8E, 0xEE, 0x59, 0xD9, 0x61, 0x29, 0x8C, 0x1D, 0x4C, 0x6C, 0x67, 0xB5, 0x88, 0xD7, 0x3D, 0x14, 0x6F, 0x8D, 0x84, 0x3E, 0x2B, 0xC1, 0x79, 0x41, 0x7E, 0x60, 0x21, 0xCA, 0x7E, 0xDE, 0x7A, 0xEF, 0x1D, 0x8A, 0x81, 0x3F, 0x79, 0x78, 0x77, 0x8A, 0x50, 0xE2, 0x9B, 0xF5, 0x6E, 0x73, 0x54, 0xED, 0x98, 0xD4, 0x61, 0xE0, 0x59, 0xFF, 0x95, 0x0E, 0x58, 0x68, 0x5F, 0xD3, 0x91, 0x3E, 0x4C, 0xDA, 0x66, 0xA4, 0x8D, 0x1F, 0x3D, 0x80, 0x6F, 0x52, 0x86, 0xC9, 0x2B, 0xD0, 0x79, 0x20, 0x7F, 0x96, 0x21, 0xA1, 0x7E, 0xE3, 0x7B, 0x49, 0x1D, 0x4A, 0x81, 0x58, 0x79, 0x71, 0x7A, 0x4E, 0x70, 0xEE, 0x53, 0xEF, 0x71, 0xCF, 0x71, 0x50, 0x58, 0x20, 0x66, 0xAC, 0x72, 0x31, 0x5C, 0xFC, 0x5B, 0x36, 0x73, 0xA0, 0x61, 0xB5, 0x4D, 0x7F, 0x75, 0xF1, 0x67, 0x19, 0x3D, 0x5E, 0x79, 0x0F, 0x6C, 0xA9, 0x2B, 0xC5, 0x7D, 0x3D, 0x72, 0xC2, 0x22, 0x0E, 0x7F, 0xC7, 0x76, 0x1B, 0x1D, 0xF7, 0x80, 0xDF, 0x77, 0x82, 0x78, 0x77, 0x6D, 0x50, 0x5A, 0x9B, 0x6F, 0xEE, 0x6E, 0x10, 0x5D, 0xF2, 0x65, 0xC5, 0x6F, 0xE2, 0x62, 0x57, 0x5A, 0x56, 0x71, 0xC0, 0x66, 0x2E, 0x4C, 0x83, 0x74, 0x69, 0x6A, 0x68, 0x3D, 0x28, 0x78, 0x08, 0x6F, 0x06, 0x2B, 0xBB, 0x7C, 0xDD, 0x74, 0x2F, 0x21, 0xFE, 0x7F, 0xB7, 0x77, 0x04, 0x1D, 0xE3, 0x80, 0xED, 0x78, 0x34, 0x75, 0xA1, 0x69, 0x61, 0x63, 0x32, 0x6D, 0xEE, 0x6A, 0xB1, 0x65, 0x88, 0x64, 0x69, 0x6D, 0x34, 0x68, 0xAA, 0x58, 0x1A, 0x6F, 0xA7, 0x6B, 0x90, 0x4A, 0xBA, 0x72, 0x9C, 0x6E, 0x61, 0x3C, 0xB2, 0x76, 0xCD, 0x71, 0xCD, 0x2B, 0xB7, 0x7C, 0x72, 0x75, 0xD5, 0x22, 0x00, 0x7F, 0xAA, 0x77, 0xF9, 0x1D, 0xE4, 0x81, 0x06, 0x78, 0xDD, 0x73, 0xC7, 0x65, 0x97, 0x6B, 0xF4, 0x6C, 0xB2, 0x67, 0x97, 0x6D, 0xC2, 0x62, 0x07, 0x6A, 0x30, 0x6F, 0x8C, 0x56, 0x6E, 0x6D, 0x36, 0x71, 0x29, 0x4A, 0x1F, 0x70, 0xF7, 0x72, 0xED, 0x3C, 0x48, 0x75, 0xD2, 0x75, 0x1A, 0x2B, 0xB2, 0x7C, 0x14, 0x77, 0x87, 0x22, 0x0F, 0x7F, 0xA7, 0x78, 0xC7, 0x1D, 0xF6, 0x81, 0x29, 0x79, 0x4B, 0x70, 0xD8, 0x62, 0x1F, 0x74, 0x1E, 0x6A, 0x67, 0x64, 0xA8, 0x75, 0x0D, 0x61, 0x0B, 0x67, 0xBB, 0x76, 0x32, 0x57, 0x0B, 0x6B, 0x24, 0x76, 0x8A, 0x4A, 0x20, 0x6F, 0xA3, 0x77, 0x81, 0x3B, 0xE4, 0x75, 0x14, 0x78, 0x81, 0x2B, 0xA7, 0x7B, 0xCF, 0x79, 0x1F, 0x22, 0x0D, 0x7F, 0xB0, 0x79, 0x5E, 0x1D, 0xF4, 0x81, 0x54, 0x79, 0x78, 0x70, 0xFA, 0x5F, 0xC7, 0x7D, 0x0D, 0x69, 0x27, 0x62, 0x98, 0x7C, 0xF8, 0x5E, 0xBD, 0x65, 0xDD, 0x7C, 0xC7, 0x54, 0xE5, 0x69, 0x9D, 0x7C, 0x5C, 0x48, 0x89, 0x6E, 0x8D, 0x7C, 0x6C, 0x3B, 0x47, 0x74, 0x5C, 0x7B, 0xEB, 0x2B, 0x5C, 0x7B, 0x97, 0x7A, 0xA4, 0x21, 0xDD, 0x7F, 0xC1, 0x79, 0xD1, 0x1D, 0xCE, 0x81, 0x84, 0x79, 0x77, 0x70, 0x53, 0x5C, 0xC9, 0x86, 0xF3, 0x67, 0x7C, 0x5F, 0xFB, 0x86, 0x73, 0x5D, 0xF0, 0x63, 0xA3, 0x85, 0x2F, 0x53, 0x6F, 0x68, 0x3C, 0x83, 0xBF, 0x47, 0x10, 0x6D, 0x83, 0x82, 0x06, 0x39, 0xEA, 0x73, 0x99, 0x7F, 0x8D, 0x2A, 0x91, 0x7B, 0x64, 0x7C, 0x31, 0x21, 0x74, 0x7F, 0xD8, 0x7A, 0x33, 0x1D, 0x8D, 0x81, 0xB9, 0x79, 0x5A, 0x6D, 0x62, 0x5A, 0xB0, 0x8F, 0x86, 0x66, 0xA2, 0x5D, 0xFD, 0x8E, 0x44, 0x5D, 0x37, 0x62, 0x08, 0x8C, 0x40, 0x52, 0xD0, 0x66, 0xF2, 0x89, 0x91, 0x46, 0xAE, 0x6C, 0x73, 0x86, 0x86, 0x39, 0x22, 0x73, 0x0B, 0x82, 0x8E, 0x2A, 0x19, 0x7B, 0x37, 0x7D, 0x83, 0x21, 0x23, 0x7F, 0xE6, 0x7A, 0x83, 0x1D, 0x48, 0x81, 0xE1, 0x79, 0x3C, 0x6A, 0x3E, 0x59, 0x37, 0x97, 0x3E, 0x64, 0x29, 0x5C, 0x98, 0x94, 0xC2, 0x5A, 0x4D, 0x60, 0xC3, 0x91, 0xEE, 0x51, 0xCB, 0x65, 0x9B, 0x8E, 0x52, 0x46, 0xF2, 0x6B, 0x05, 0x8A, 0x12, 0x39, 0x3A, 0x72, 0x8A, 0x84, 0xCC, 0x2A, 0x5A, 0x7A, 0xFF, 0x7E, 0xA0, 0x21, 0x08, 0x7F, 0xE8, 0x7A, 0xCB, 0x1D, 0x02, 0x81, 0xFE, 0x79, 0x24, 0x6F, 0xB7, 0x77, 0x83, 0x54, 0x4F, 0x68, 0xB0, 0x77, 0x77, 0x58, 0x64, 0x5E, 0x81, 0x77, 0xDC, 0x5D, 0x6A, 0x53, 0x9D, 0x78, 0xA8, 0x62, 0x25, 0x47, 0x40, 0x7A, 0x28, 0x67, 0x24, 0x39, 0x68, 0x7C, 0x36, 0x6C, 0x74, 0x29, 0xCA, 0x7E, 0xF7, 0x72, 0x8B, 0x20, 0xBB, 0x80, 0xB1, 0x76, 0x06, 0x1C, 0xE2, 0x81, 0x6F, 0x77, 0x81, 0x6E, 0x19, 0x74, 0xA4, 0x5A, 0x4B, 0x67, 0x91, 0x74, 0x76, 0x5D, 0x37, 0x5E, 0x70, 0x75, 0xC4, 0x61, 0x79, 0x53, 0x79, 0x76, 0xD0, 0x65, 0xFF, 0x46, 0xCB, 0x78, 0xB5, 0x6A, 0x3C, 0x38, 0xD5, 0x7B, 0x48, 0x6E, 0xBD, 0x29, 0x72, 0x7E, 0xA5, 0x73, 0xFA, 0x20, 0xBE, 0x80, 0xA1, 0x76, 0xEF, 0x1D, 0x0E, 0x81, 0x79, 0x78, 0x2E, 0x69, 0xDA, 0x71, 0x71, 0x61, 0xF9, 0x63, 0xAD, 0x71, 0xA8, 0x64, 0x23, 0x5D, 0x3C, 0x73, 0x5B, 0x67, 0x76, 0x52, 0x52, 0x74, 0xEA, 0x6A, 0xD3, 0x45, 0x79, 0x77, 0x2E, 0x6D, 0xFB, 0x38, 0x51, 0x7A, 0x44, 0x71, 0x72, 0x29, 0x68, 0x7E, 0x46, 0x75, 0x97, 0x20, 0xE6, 0x80, 0x91, 0x77, 0xE1, 0x1D, 0x4A, 0x81, 0x8A, 0x78, 0xD6, 0x69, 0x35, 0x6D, 0x60, 0x6A, 0x41, 0x63, 0x5A, 0x6E, 0xE7, 0x6C, 0x21, 0x5A, 0xCD, 0x70, 0xAB, 0x6E, 0x5A, 0x50, 0x4E, 0x72, 0xD3, 0x6F, 0xFD, 0x44, 0x17, 0x75, 0xAD, 0x71, 0xF7, 0x38, 0x2E, 0x79, 0x5B, 0x74, 0x78, 0x29, 0xAB, 0x7D, 0xF0, 0x77, 0x33, 0x21, 0x25, 0x80, 0x8B, 0x78, 0xA6, 0x1D, 0x83, 0x81, 0xA4, 0x79, 0x40, 0x68, 0xEE, 0x6A, 0x3D, 0x71, 0xAE, 0x62, 0x01, 0x6C, 0x4F, 0x73, 0x68, 0x58, 0xC1, 0x6E, 0x5F, 0x74, 0x9C, 0x4F, 0x84, 0x70, 0xF8, 0x75, 0x44, 0x43, 0xC3, 0x74, 0x58, 0x76, 0x48, 0x38, 0x13, 0x78, 0x97, 0x77, 0x98, 0x29, 0xCF, 0x7D, 0xB0, 0x78, 0xAC, 0x21, 0x45, 0x80, 0x91, 0x79, 0x30, 0x1D, 0x9E, 0x81, 0xC8, 0x79, 0x66, 0x67, 0x9C, 0x67, 0xB4, 0x7A, 0x3A, 0x60, 0x17, 0x6A, 0x21, 0x7A, 0xFA, 0x57, 0x40, 0x6C, 0xA6, 0x7A, 0xE0, 0x4E, 0x60, 0x6F, 0x9A, 0x7B, 0x0F, 0x43, 0x24, 0x73, 0x45, 0x7A, 0xF2, 0x37, 0x8C, 0x77, 0xDE, 0x7A, 0xC0, 0x29, 0x83, 0x7D, 0x7A, 0x7A, 0x0A, 0x21, 0x22, 0x80, 0xA1, 0x79, 0x8F, 0x1D, 0x8B, 0x81, 0xF4, 0x79, 0x5A, 0x65, 0x9F, 0x65, 0x68, 0x84, 0x3A, 0x5D, 0x55, 0x67, 0xA1, 0x83, 0x17, 0x55, 0xD3, 0x6A, 0x73, 0x82, 0x41, 0x4C, 0xBA, 0x6E, 0x13, 0x81, 0x7E, 0x42, 0x17, 0x72, 0x3B, 0x80, 0x17, 0x36, 0x31, 0x77, 0x13, 0x7E, 0x20, 0x28, 0xC5, 0x7D, 0x40, 0x7B, 0x70, 0x20, 0xBB, 0x80, 0xB3, 0x79, 0xD9, 0x1D, 0x49, 0x82, 0x26, 0x79, 0x2C, 0x63, 0x9C, 0x63, 0x2B, 0x8B, 0xE3, 0x5D, 0x4E, 0x65, 0xDB, 0x8A, 0x96, 0x55, 0x30, 0x69, 0x23, 0x89, 0x06, 0x4B, 0xE0, 0x6C, 0xFF, 0x86, 0xEA, 0x41, 0x35, 0x71, 0x4C, 0x84, 0x41, 0x35, 0x97, 0x76, 0x80, 0x80, 0xE8, 0x28, 0x53, 0x7D, 0x08, 0x7C, 0x9E, 0x20, 0x5C, 0x80, 0xBC, 0x7A, 0x11, 0x1C, 0xF0, 0x82, 0x4C, 0x78, 0xFB, 0x61, 0xD6, 0x61, 0xD2, 0x92, 0xE7, 0x5C, 0xA8, 0x64, 0xB3, 0x91, 0x0E, 0x53, 0x03, 0x68, 0x7A, 0x8E, 0x29, 0x49, 0x67, 0x6C, 0x06, 0x8B, 0x02, 0x3F, 0xA9, 0x6F, 0xFB, 0x87, 0x6C, 0x34, 0x79, 0x75, 0xC7, 0x82, 0xE6, 0x28, 0x4C, 0x7C, 0xCA, 0x7D, 0x93, 0x20, 0x27, 0x80, 0xBD, 0x7A, 0x43, 0x1C, 0x99, 0x82, 0x67, 0x78, 0xD5, 0x62, 0x6A, 0x7F, 0x4B, 0x54, 0x34, 0x5E, 0x01, 0x7E, 0x94, 0x57, 0xE6, 0x55, 0x76, 0x7E, 0x6C, 0x5D, 0x17, 0x4C, 0x1B, 0x7E, 0x81, 0x62, 0x12, 0x41, 0x20, 0x7E, 0xFB, 0x66, 0xBE, 0x34, 0xCA, 0x7F, 0xC3, 0x6C, 0x10, 0x27, 0x16, 0x80, 0xDF, 0x72, 0x4A, 0x1F, 0x27, 0x81, 0x97, 0x75, 0xF8, 0x1B, 0xC7, 0x81, 0xE6, 0x77, 0x8B, 0x62, 0x89, 0x7C, 0xDD, 0x59, 0xC9, 0x5C, 0xEF, 0x7C, 0x49, 0x5C, 0x98, 0x55, 0x00, 0x7C, 0xA6, 0x60, 0xD7, 0x4B, 0x22, 0x7C, 0xD1, 0x65, 0x8C, 0x40, 0x70, 0x7D, 0xB3, 0x69, 0xBB, 0x34, 0x60, 0x7E, 0xEA, 0x6E, 0x41, 0x27, 0x09, 0x80, 0x89, 0x73, 0xB4, 0x1F, 0x74, 0x81, 0x7E, 0x76, 0xD8, 0x1C, 0x3D, 0x81, 0xE6, 0x78, 0x2E, 0x5F, 0x52, 0x79, 0xC4, 0x61, 0x0F, 0x59, 0x39, 0x79, 0xE5, 0x63, 0x53, 0x53, 0x5B, 0x7A, 0x94, 0x66, 0x8F, 0x4A, 0x7E, 0x7B, 0x1C, 0x69, 0xD9, 0x3F, 0x9B, 0x7C, 0x37, 0x6D, 0x18, 0x34, 0x14, 0x7E, 0x01, 0x70, 0xD4, 0x27, 0x38, 0x80, 0x2C, 0x75, 0x45, 0x1F, 0xE0, 0x81, 0x65, 0x77, 0xC0, 0x1C, 0xC1, 0x81, 0xE9, 0x78, 0xCB, 0x5E, 0xA1, 0x76, 0x24, 0x68, 0x86, 0x58, 0x92, 0x77, 0x5C, 0x6A, 0x2B, 0x51, 0x9E, 0x78, 0x56, 0x6C, 0xB7, 0x49, 0x31, 0x79, 0x6F, 0x6E, 0xA3, 0x3E, 0xAD, 0x7A, 0xF7, 0x70, 0xE4, 0x34, 0x0F, 0x7D, 0x33, 0x73, 0xAC, 0x27, 0x9D, 0x7F, 0xDA, 0x76, 0xCB, 0x20, 0x51, 0x81, 0x57, 0x78, 0x7A, 0x1D, 0x34, 0x81, 0xF8, 0x79, 0x2E, 0x5E, 0xA4, 0x73, 0x79, 0x6F, 0x73, 0x58, 0x47, 0x74, 0xF7, 0x70, 0xF4, 0x4F, 0xFD, 0x76, 0x55, 0x72, 0x6E, 0x47, 0xC7, 0x77, 0xE1, 0x73, 0x9B, 0x3D, 0xD6, 0x79, 0xDF, 0x74, 0xF3, 0x33, 0xE1, 0x7C, 0x81, 0x76, 0x92, 0x27, 0xC4, 0x7F, 0x9D, 0x78, 0x25, 0x20, 0x8D, 0x81, 0x58, 0x78, 0xF6, 0x1D, 0x77, 0x82, 0x12, 0x79, 0x4D, 0x5A, 0xC8, 0x70, 0xDD, 0x77, 0x51, 0x56, 0x60, 0x72, 0x84, 0x77, 0xEF, 0x4E, 0x64, 0x74, 0xA1, 0x78, 0x33, 0x46, 0x67, 0x76, 0x8D, 0x78, 0xE8, 0x3C, 0xF3, 0x78, 0xCE, 0x79, 0x27, 0x33, 0x4F, 0x7B, 0xD1, 0x79, 0x73, 0x27, 0x73, 0x7F, 0x6A, 0x79, 0x5E, 0x20, 0x74, 0x81, 0x64, 0x79, 0x43, 0x1D, 0x77, 0x82, 0x39, 0x79, 0x37, 0x59, 0x3E, 0x6F, 0x14, 0x80, 0x40, 0x53, 0x88, 0x70, 0x5C, 0x7F, 0x3F, 0x4C, 0x8D, 0x72, 0x81, 0x7F, 0x06, 0x43, 0x59, 0x74, 0xB9, 0x7E, 0x9F, 0x3C, 0x1E, 0x77, 0xBA, 0x7D, 0xCF, 0x32, 0xBA, 0x7B, 0x1C, 0x7C, 0x90, 0x26, 0xD7, 0x7F, 0x2E, 0x7A, 0x9A, 0x20, 0x09, 0x81, 0x74, 0x79, 0x75, 0x1D, 0x27, 0x82, 0x69, 0x78, 0xF9, 0x58, 0xEC, 0x6C, 0xFF, 0x87, 0xA5, 0x53, 0x00, 0x6F, 0x22, 0x86, 0x7A, 0x4B, 0xF9, 0x71, 0x6D, 0x85, 0x48, 0x44, 0x27, 0x73, 0xF2, 0x83, 0xCC, 0x3B, 0x75, 0x76, 0xDE, 0x81, 0xBC, 0x32, 0x23, 0x7A, 0x74, 0x7F, 0x18, 0x26, 0x7B, 0x7E, 0xF1, 0x7B, 0x9E, 0x1F, 0x9D, 0x81, 0x7D, 0x79, 0x95, 0x1C, 0xB6, 0x82, 0x8F, 0x78, 0xB9, 0x57, 0xFE, 0x6B, 0x94, 0x8E, 0x85, 0x52, 0xD6, 0x6D, 0xA9, 0x8C, 0x8B, 0x4A, 0x7A, 0x70, 0x37, 0x8A, 0x05, 0x43, 0xEA, 0x73, 0x0A, 0x88, 0x11, 0x3A, 0xE1, 0x75, 0xD3, 0x85, 0x2C, 0x32, 0x18, 0x79, 0xDA, 0x81, 0x0A, 0x26, 0xD2, 0x7E, 0xBD, 0x7C, 0x6F, 0x1F, 0x72, 0x81, 0x7A, 0x79, 0xB5, 0x1C, 0x57, 0x82, 0xA4, 0x78, 0x89, 0x56, 0x36, 0x89, 0x7E, 0x53, 0xD6, 0x51, 0x64, 0x87, 0xC0, 0x57, 0x85, 0x4B, 0x09, 0x86, 0xB4, 0x5B, 0xA8, 0x44, 0xD1, 0x85, 0xEE, 0x60, 0xC1, 0x3A, 0x8E, 0x84, 0xE0, 0x65, 0xF9, 0x2F, 0x89, 0x83, 0xF0, 0x6B, 0x8A, 0x23, 0xE6, 0x83, 0x01, 0x72, 0x16, 0x1D, 0x6D, 0x82, 0x83, 0x75, 0xF7, 0x1A, 0xB0, 0x82, 0x4E, 0x77, 0x9F, 0x54, 0xCF, 0x87, 0x08, 0x59, 0x1E, 0x50, 0x10, 0x86, 0x1F, 0x5C, 0x25, 0x49, 0xB6, 0x85, 0x5C, 0x60, 0x09, 0x42, 0xA0, 0x84, 0x8B, 0x64, 0x36, 0x39, 0xD0, 0x83, 0xC0, 0x68, 0xB0, 0x2F, 0xBB, 0x83, 0x2C, 0x6D, 0x8C, 0x24, 0x6A, 0x82, 0xA6, 0x73, 0x61, 0x1E, 0x1D, 0x82, 0x5E, 0x76, 0xC1, 0x1B, 0x76, 0x82, 0x40, 0x78, 0x30, 0x52, 0xC5, 0x84, 0x44, 0x5F, 0xA9, 0x4D, 0xDF, 0x83, 0xBE, 0x62, 0x01, 0x48, 0x52, 0x83, 0x76, 0x65, 0x28, 0x41, 0x25, 0x82, 0xD6, 0x68, 0x57, 0x38, 0xD6, 0x82, 0x4B, 0x6B, 0xC1, 0x2F, 0xB3, 0x82, 0x59, 0x6F, 0xED, 0x24, 0xF2, 0x82, 0x45, 0x74, 0xD4, 0x1E, 0xE4, 0x82, 0x38, 0x77, 0x94, 0x1C, 0x57, 0x82, 0x33, 0x78, 0xBC, 0x52, 0x98, 0x81, 0xA9, 0x66, 0x4B, 0x4C, 0xF5, 0x81, 0x49, 0x67, 0xFE, 0x46, 0x84, 0x81, 0x42, 0x6A, 0x7D, 0x3F, 0x96, 0x81, 0x37, 0x6C, 0xD4, 0x37, 0xBE, 0x81, 0x28, 0x6F, 0x63, 0x2F, 0x6B, 0x81, 0x96, 0x72, 0x96, 0x25, 0x65, 0x81, 0xEB, 0x76, 0x3F, 0x1F, 0x96, 0x82, 0x1B, 0x78, 0x3F, 0x1D, 0x1E, 0x82, 0x30, 0x79, 0x16, 0x52, 0x9B, 0x7F, 0x56, 0x6C, 0xE7, 0x4C, 0x3B, 0x7E, 0xD4, 0x6D, 0xBC, 0x45, 0x60, 0x7F, 0x43, 0x6F, 0x8B, 0x3E, 0x92, 0x7F, 0xD9, 0x71, 0x72, 0x36, 0x97, 0x80, 0x51, 0x73, 0x32, 0x2E, 0xBE, 0x80, 0xDE, 0x75, 0x3F, 0x25, 0x88, 0x81, 0x9C, 0x77, 0x7E, 0x1F, 0xFF, 0x82, 0x0C, 0x78, 0xB0, 0x1D, 0x9F, 0x82, 0x3C, 0x79, 0x30, 0x4F, 0x11, 0x7D, 0x20, 0x73, 0xF1, 0x4B, 0x69, 0x7C, 0xE6, 0x74, 0x58, 0x43, 0x87, 0x7D, 0xE1, 0x74, 0xF2, 0x3D, 0x43, 0x7E, 0xB4, 0x76, 0x30, 0x35, 0x0B, 0x7F, 0x5B, 0x77, 0x02, 0x2D, 0xFD, 0x80, 0x1F, 0x77, 0xE6, 0x25, 0x4D, 0x81, 0x59, 0x78, 0x99, 0x20, 0x07, 0x82, 0x0C, 0x78, 0xF1, 0x1D, 0xC3, 0x82, 0x58, 0x79, 0x15, 0x4D, 0xAF, 0x7A, 0xDB, 0x7B, 0x91, 0x4A, 0xA7, 0x7B, 0x34, 0x7B, 0x82, 0x43, 0x4D, 0x7C, 0x59, 0x7B, 0x62, 0x3B, 0x9D, 0x7D, 0x42, 0x7B, 0x4B, 0x34, 0x6C, 0x7E, 0x1C, 0x7B, 0x12, 0x2D, 0xA7, 0x7F, 0x60, 0x7A, 0xAE, 0x24, 0xDD, 0x81, 0x1F, 0x79, 0xAB, 0x1F, 0xAA, 0x82, 0x1B, 0x79, 0x0E, 0x1D, 0x78, 0x82, 0x84, 0x78, 0xCE, 0x4C, 0xCD, 0x79, 0x1C, 0x82, 0x24, 0x48, 0x0C, 0x7A, 0x3A, 0x81, 0xA9, 0x41, 0xA9, 0x7B, 0x43, 0x80, 0xE2, 0x3B, 0x82, 0x7C, 0x2B, 0x7F, 0xF1, 0x34, 0x92, 0x7D, 0x4B, 0x7E, 0x8A, 0x2D, 0xBB, 0x7E, 0xD0, 0x7C, 0xE2, 0x24, 0x95, 0x80, 0xF1, 0x7A, 0x82, 0x1F, 0x36, 0x82, 0x2B, 0x79, 0x17, 0x1D, 0x01, 0x82, 0xAB, 0x78, 0x81, 0x4B, 0xB9, 0x78, 0x51, 0x88, 0x84, 0x46, 0xB6, 0x78, 0xF5, 0x87, 0x31, 0x41, 0x98, 0x79, 0x65, 0x85, 0xB7, 0x3B, 0x45, 0x7B, 0x37, 0x83, 0xE0, 0x33, 0x7B, 0x7C, 0xCD, 0x81, 0x67, 0x2D, 0xB5, 0x7E, 0x3C, 0x7E, 0x59, 0x24, 0xD4, 0x80, 0xB7, 0x7B, 0x39, 0x1F, 0x2F, 0x82, 0x23, 0x79, 0x31, 0x1C, 0xC5, 0x82, 0xBC, 0x78, 0x4F, 0x47, 0x72, 0x96, 0x09, 0x52, 0x25, 0x43, 0x74, 0x93, 0x9B, 0x56, 0x38, 0x3D, 0xF7, 0x91, 0x32, 0x5A, 0x9F, 0x39, 0x0C, 0x8E, 0xF3, 0x5F, 0x51, 0x31, 0xEF, 0x8B, 0xC0, 0x64, 0xE7, 0x29, 0xA1, 0x88, 0xCA, 0x6A, 0xD6, 0x20, 0xC8, 0x85, 0x72, 0x71, 0xDB, 0x1B, 0xCE, 0x83, 0x8F, 0x75, 0xF4, 0x19, 0xB2, 0x82, 0xC3, 0x77, 0xB3, 0x47, 0x8E, 0x92, 0xF4, 0x57, 0xE4, 0x43, 0x14, 0x91, 0x92, 0x5A, 0xC7, 0x3D, 0xE5, 0x8F, 0xBA, 0x5E, 0x3D, 0x38, 0xC1, 0x8D, 0x7A, 0x62, 0x67, 0x31, 0xF3, 0x8A, 0xD1, 0x67, 0x45, 0x2A, 0x04, 0x88, 0x33, 0x6C, 0x91, 0x21, 0x5C, 0x85, 0x21, 0x72, 0xF1, 0x1C, 0xC3, 0x83, 0x60, 0x76, 0x9F, 0x1A, 0xD9, 0x82, 0xA2, 0x78, 0x2F, 0x46, 0x2D, 0x90, 0x72, 0x5D, 0xDB, 0x42, 0x27, 0x8F, 0x32, 0x60, 0x07, 0x3D, 0x34, 0x8D, 0xC1, 0x62, 0xA5, 0x37, 0xC5, 0x8B, 0xC9, 0x66, 0x3D, 0x31, 0x17, 0x89, 0xB4, 0x6A, 0x34, 0x29, 0xB1, 0x87, 0x80, 0x6E, 0xB3, 0x21, 0xF1, 0x84, 0xB9, 0x74, 0x35, 0x1D, 0xE4, 0x83, 0x27, 0x77, 0x56, 0x1C, 0x37, 0x82, 0x7E, 0x78, 0xA7, 0x44, 0x6A, 0x8E, 0x66, 0x63, 0x62, 0x3F, 0xAE, 0x8C, 0xDF, 0x65, 0x70, 0x3A, 0xF1, 0x8B, 0xC1, 0x68, 0x0A, 0x36, 0x25, 0x8A, 0x27, 0x6A, 0x93, 0x2F, 0xA7, 0x88, 0x7F, 0x6D, 0x87, 0x29, 0x10, 0x86, 0x90, 0x71, 0x22, 0x22, 0x98, 0x84, 0x36, 0x75, 0x84, 0x1E, 0xFD, 0x82, 0xED, 0x77, 0xF1, 0x1D, 0x77, 0x82, 0x63, 0x78, 0xF5, 0x44, 0xE5, 0x8C, 0x37, 0x69, 0x67, 0x3E, 0x1C, 0x8A, 0x69, 0x6A, 0x46, 0x39, 0xCF, 0x89, 0xB1, 0x6C, 0x8B, 0x34, 0xDE, 0x88, 0xBD, 0x6E, 0xA4, 0x2E, 0x3B, 0x87, 0x61, 0x70, 0xC8, 0x28, 0xBD, 0x85, 0x79, 0x73, 0x8F, 0x23, 0x55, 0x83, 0xAC, 0x76, 0xB8, 0x1F, 0xCF, 0x82, 0xBC, 0x78, 0x5F, 0x1E, 0x46, 0x82, 0x58, 0x79, 0x0E, 0x43, 0x31, 0x8A, 0xB8, 0x70, 0x25, 0x3D, 0x8F, 0x89, 0xAA, 0x70, 0x71, 0x39, 0x17, 0x88, 0x67, 0x71, 0x84, 0x34, 0x0B, 0x87, 0x7D, 0x72, 0xE3, 0x2D, 0x8C, 0x86, 0x57, 0x74, 0x3A, 0x29, 0x36, 0x84, 0x9F, 0x76, 0x0A, 0x23, 0xDD, 0x83, 0x3E, 0x77, 0xCA, 0x20, 0x39, 0x82, 0x9E, 0x78, 0xA0, 0x1E, 0xA0, 0x82, 0x5E, 0x78, 0xF8, 0x41, 0x7A, 0x87, 0xFB, 0x76, 0xD3, 0x3E, 0x16, 0x88, 0x0D, 0x77, 0x39, 0x38, 0xF7, 0x87, 0x77, 0x77, 0x10, 0x33, 0x8D, 0x86, 0x6A, 0x77, 0x7C, 0x2D, 0xB0, 0x85, 0x17, 0x78, 0x11, 0x28, 0xF5, 0x83, 0xE7, 0x78, 0x7E, 0x23, 0x9A, 0x83, 0x03, 0x78, 0xB1, 0x20, 0x21, 0x82, 0x9F, 0x78, 0xB7, 0x1E, 0x9D, 0x82, 0x77, 0x78, 0xB8, 0x3F, 0xC6, 0x85, 0xE2, 0x7C, 0x5A, 0x3C, 0x4C, 0x86, 0x79, 0x7C, 0x70, 0x37, 0x41, 0x86, 0x87, 0x7B, 0xDC, 0x32, 0xE3, 0x85, 0x4E, 0x7B, 0x9F, 0x2D, 0x77, 0x84, 0x55, 0x7B, 0x32, 0x28, 0x8C, 0x83, 0x93, 0x7A, 0x68, 0x23, 0x2F, 0x82, 0xFE, 0x79, 0x5D, 0x1F, 0xD5, 0x82, 0xB6, 0x78, 0xB5, 0x1E, 0x64, 0x82, 0x97, 0x78, 0x6D, 0x40, 0xB3, 0x84, 0xCC, 0x82, 0x14, 0x3B, 0x48, 0x84, 0xB1, 0x80, 0xEF, 0x38, 0xE8, 0x84, 0xAC, 0x80, 0x52, 0x31, 0x4D, 0x84, 0x8A, 0x7E, 0x92, 0x2C, 0x21, 0x84, 0x0A, 0x7D, 0xAD, 0x28, 0xED, 0x83, 0x6C, 0x7B, 0xED, 0x23, 0x76, 0x83, 0x01, 0x79, 0xFE, 0x1F, 0xBF, 0x82, 0xCA, 0x78, 0xBA, 0x1E, 0x2C, 0x82, 0xB2, 0x78, 0x2D, 0x3E, 0x2F, 0x9F, 0xF3, 0x51, 0x76, 0x3B, 0x1E, 0x9C, 0xAA, 0x54, 0x5F, 0x34, 0xFF, 0x99, 0x2A, 0x59, 0x5E, 0x2E, 0xE3, 0x95, 0xC8, 0x5D, 0xEF, 0x28, 0x53, 0x92, 0x17, 0x63, 0x5A, 0x22, 0xBF, 0x8D, 0x74, 0x69, 0xCE, 0x1E, 0x36, 0x87, 0xCC, 0x71, 0x7F, 0x1A, 0xA1, 0x84, 0x9C, 0x75, 0xE4, 0x18, 0xFD, 0x83, 0x43, 0x77, 0xC1, 0x3D, 0x1F, 0x9D, 0xA1, 0x56, 0xAE, 0x39, 0xB3, 0x9B, 0x48, 0x58, 0xFF, 0x34, 0x87, 0x98, 0x6F, 0x5C, 0x7D, 0x2F, 0xC0, 0x94, 0xE7, 0x60, 0xBB, 0x2A, 0x5A, 0x90, 0xD2, 0x65, 0xBD, 0x23, 0xF1, 0x8C, 0xD4, 0x6B, 0x76, 0x1E, 0x48, 0x87, 0x92, 0x72, 0x6E, 0x1B, 0x99, 0x84, 0x68, 0x76, 0x73, 0x1A, 0x81, 0x83, 0x0E, 0x78, 0x28, 0x3C, 0x0E, 0x9A, 0xEA, 0x5C, 0x81, 0x39, 0x59, 0x98, 0xBE, 0x5E, 0x06, 0x34, 0x5D, 0x96, 0x75, 0x60, 0x52, 0x30, 0x73, 0x93, 0x0B, 0x64, 0x0F, 0x2A, 0xD7, 0x8F, 0x1F, 0x68, 0x7E, 0x23, 0x24, 0x8B, 0xE7, 0x6D, 0x76, 0x1E, 0x7E, 0x87, 0x20, 0x73, 0x8D, 0x1C, 0xFA, 0x84, 0x1F, 0x77, 0x10, 0x1C, 0x6D, 0x82, 0xD4, 0x78, 0x8D, 0x39, 0x99, 0x98, 0x7B, 0x61, 0x42, 0x36, 0x97, 0x96, 0x6B, 0x62, 0xD6, 0x33, 0x64, 0x94, 0x2D, 0x64, 0xEF, 0x2F, 0x6B, 0x91, 0x3F, 0x68, 0x07, 0x28, 0xFD, 0x8E, 0x1A, 0x6B, 0xB6, 0x21, 0x98, 0x8A, 0xAC, 0x6F, 0xE3, 0x1F, 0x87, 0x86, 0x5D, 0x74, 0xCF, 0x1E, 0x9D, 0x83, 0xBE, 0x77, 0xA1, 0x1E, 0x36, 0x82, 0x9F, 0x78, 0xD2, 0x39, 0xEC, 0x95, 0xFA, 0x66, 0x6D, 0x36, 0xAE, 0x93, 0xE9, 0x68, 0x01, 0x32, 0x77, 0x92, 0x93, 0x6A, 0x35, 0x2D, 0x98, 0x8F, 0xDF, 0x6C, 0x39, 0x28, 0xD1, 0x8C, 0xD4, 0x6E, 0xF7, 0x24, 0xFE, 0x89, 0x55, 0x72, 0x56, 0x22, 0x0D, 0x85, 0x7B, 0x76, 0x17, 0x20, 0x14, 0x83, 0x5C, 0x78, 0x15, 0x1F, 0x39, 0x82, 0x77, 0x78, 0xEA, 0x39, 0xD1, 0x94, 0x19, 0x6C, 0x1D, 0x36, 0x23, 0x92, 0xE5, 0x6D, 0x06, 0x31, 0x3E, 0x90, 0xB0, 0x6E, 0x96, 0x2C, 0x86, 0x8E, 0xA6, 0x70, 0x43, 0x28, 0xA9, 0x8B, 0x89, 0x72, 0x39, 0x28, 0x53, 0x88, 0x01, 0x74, 0xDA, 0x25, 0x16, 0x84, 0xAA, 0x77, 0x5B, 0x21, 0x3A, 0x83, 0x11, 0x78, 0x67, 0x1F, 0xB3, 0x82, 0x61, 0x78, 0xDC, 0x39, 0x99, 0x91, 0xC4, 0x72, 0x2F, 0x35, 0xD6, 0x90, 0xD4, 0x73, 0x8C, 0x31, 0x66, 0x8F, 0x27, 0x74, 0x15, 0x2C, 0xB3, 0x8D, 0x76, 0x74, 0xC8, 0x27, 0xDC, 0x8A, 0x6E, 0x75, 0x7E, 0x26, 0x12, 0x87, 0x81, 0x76, 0xA5, 0x24, 0x37, 0x84, 0x85, 0x77, 0xFC, 0x21, 0x5F, 0x83, 0x03, 0x78, 0x7B, 0x20, 0x21, 0x82, 0x5F, 0x78, 0xAF, 0x38, 0xED, 0x8F, 0xEB, 0x78, 0x39, 0x35, 0xB6, 0x8E, 0xBA, 0x78, 0xCF, 0x32, 0x87, 0x8D, 0x69, 0x79, 0x3F, 0x2D, 0x33, 0x8C, 0x1F, 0x78, 0xDC, 0x26, 0xB6, 0x89, 0xFF, 0x78, 0x30, 0x21, 0xC9, 0x87, 0xA2, 0x77, 0xC9, 0x22, 0x0B, 0x84, 0xD7, 0x78, 0x40, 0x20, 0xEC, 0x83, 0x2F, 0x78, 0x63, 0x20, 0x48, 0x82, 0x7A, 0x78, 0x6D, 0x39, 0x33, 0x8E, 0xDE, 0x7E, 0x47, 0x34, 0xBA, 0x8E, 0x0C, 0x7D, 0x04, 0x31, 0x53, 0x8D, 0x00, 0x7C, 0xB8, 0x2D, 0xF9, 0x8A, 0xFF, 0x7C, 0x1E, 0x29, 0x75, 0x89, 0x15, 0x7A, 0xD2, 0x24, 0xBA, 0x87, 0x98, 0x79, 0x6D, 0x21, 0xE8, 0x85, 0x2B, 0x78, 0xAE, 0x20, 0x8D, 0x83, 0x6C, 0x78, 0x49, 0x20, 0x01, 0x82, 0xA5, 0x78, 0x1E, 0x93, 0x93, 0x5A, 0x92, 0x49, 0x26, 0x85, 0xE7, 0x5C, 0x16, 0x51, 0x16, 0x77, 0x1D, 0x5F, 0x57, 0x56, 0xE3, 0x67, 0x36, 0x62, 0x99, 0x5C, 0xF8, 0x57, 0xAC, 0x67, 0x72, 0x62, 0xEA, 0x45, 0x9E, 0x6E, 0x13, 0x69, 0x8D, 0x30, 0x2C, 0x77, 0x17, 0x70, 0xDD, 0x23, 0x94, 0x7C, 0x5E, 0x75, 0x28, 0x1E, 0x40, 0x7E, 0x8A, 0x77, 0x01, 0x92, 0x2F, 0x54, 0x5E, 0x53, 0x1F, 0x83, 0x49, 0x57, 0x59, 0x59, 0x19, 0x74, 0x68, 0x5B, 0x82, 0x5E, 0x10, 0x67, 0x16, 0x60, 0x13, 0x62, 0x54, 0x56, 0xBE, 0x65, 0xAA, 0x67, 0x4C, 0x44, 0x64, 0x6C, 0xD5, 0x6C, 0x96, 0x30, 0x03, 0x75, 0xF4, 0x72, 0x53, 0x23, 0xBB, 0x7B, 0xCC, 0x75, 0xDF, 0x1E, 0x88, 0x7E, 0x4D, 0x77, 0x63, 0x8B, 0x7E, 0x4E, 0x48, 0x60, 0x16, 0x80, 0xEA, 0x52, 0x55, 0x63, 0x55, 0x74, 0x0C, 0x57, 0x5B, 0x65, 0xC2, 0x64, 0x40, 0x5C, 0xBD, 0x68, 0x66, 0x53, 0xDD, 0x63, 0x3D, 0x6C, 0xD6, 0x42, 0x32, 0x6B, 0x8E, 0x70, 0x62, 0x2E, 0x9F, 0x75, 0x3F, 0x74, 0x4F, 0x23, 0x89, 0x7B, 0x85, 0x76, 0xB9, 0x1E, 0xCB, 0x7E, 0x3D, 0x77, 0xC2, 0x88, 0xAF, 0x48, 0xA8, 0x6B, 0x2C, 0x7F, 0xF6, 0x4D, 0xAD, 0x6B, 0xF5, 0x6F, 0x05, 0x53, 0xC1, 0x6E, 0x54, 0x60, 0xB0, 0x59, 0xEA, 0x6F, 0x67, 0x51, 0xF8, 0x61, 0x4C, 0x71, 0xE8, 0x40, 0x6B, 0x6A, 0x73, 0x74, 0x45, 0x2E, 0x37, 0x74, 0xEA, 0x76, 0x80, 0x23, 0x6D, 0x7B, 0x9F, 0x77, 0x96, 0x1E, 0xCB, 0x7E, 0x86, 0x78, 0x0A, 0x89, 0xF7, 0x43, 0xD9, 0x75, 0x12, 0x7D, 0xB1, 0x49, 0x67, 0x74, 0x77, 0x6E, 0x0B, 0x50, 0x7A, 0x76, 0x5F, 0x62, 0x31, 0x57, 0x8D, 0x76, 0xD4, 0x50, 0x99, 0x5F, 0x6B, 0x77, 0x1D, 0x3E, 0xE5, 0x68, 0x69, 0x77, 0xF0, 0x2E, 0x82, 0x74, 0x75, 0x78, 0x9D, 0x23, 0x54, 0x7C, 0x14, 0x78, 0x69, 0x1E, 0x7B, 0x7F, 0x20, 0x78, 0x47, 0x87, 0x12, 0x40, 0x67, 0x7E, 0xAE, 0x79, 0xFC, 0x46, 0x15, 0x7E, 0x0C, 0x6B, 0xC7, 0x4D, 0x7E, 0x7D, 0xFF, 0x5F, 0x02, 0x54, 0xFE, 0x7D, 0x58, 0x50, 0x23, 0x5D, 0x1B, 0x7C, 0x9C, 0x3F, 0x1A, 0x67, 0x40, 0x7B, 0xD3, 0x2D, 0x8D, 0x74, 0x82, 0x7A, 0x6F, 0x22, 0x96, 0x7C, 0x7B, 0x79, 0x37, 0x1D, 0xD6, 0x7F, 0xC0, 0x78, 0xA4, 0x82, 0x5A, 0x3D, 0x12, 0x8A, 0xB1, 0x78, 0x2C, 0x43, 0x0E, 0x89, 0x69, 0x6C, 0x90, 0x4A, 0x76, 0x87, 0x57, 0x5E, 0x1C, 0x52, 0x0F, 0x85, 0x3C, 0x50, 0xAE, 0x5B, 0x33, 0x83, 0x4D, 0x3F, 0x7E, 0x66, 0xB6, 0x80, 0x22, 0x2C, 0x45, 0x74, 0x68, 0x7C, 0x3B, 0x21, 0x3A, 0x7C, 0x88, 0x79, 0xDD, 0x1C, 0x87, 0x7F, 0xFF, 0x78, 0xD8, 0x80, 0xA7, 0x3A, 0x3A, 0x94, 0x0B, 0x76, 0x25, 0x40, 0x6D, 0x91, 0xC9, 0x6A, 0xD1, 0x48, 0x2C, 0x8E, 0xC5, 0x5D, 0xDA, 0x50, 0x3A, 0x8B, 0xB3, 0x50, 0x4F, 0x59, 0xE0, 0x88, 0x66, 0x3F, 0x9D, 0x65, 0x8E, 0x83, 0xE7, 0x2B, 0xA3, 0x73, 0xD7, 0x7D, 0xF9, 0x1F, 0xE7, 0x7C, 0x55, 0x7A, 0x6F, 0x1A, 0xEB, 0x7F, 0xF8, 0x78, 0xEC, 0x80, 0x20, 0x38, 0x8C, 0x9C, 0xFC, 0x74, 0xC7, 0x3E, 0x15, 0x99, 0x5C, 0x67, 0x99, 0x45, 0xF9, 0x95, 0x9E, 0x5B, 0x67, 0x4D, 0xE1, 0x92, 0x13, 0x4E, 0x11, 0x57, 0xE6, 0x8D, 0x80, 0x3E, 0xB5, 0x64, 0xA7, 0x87, 0x40, 0x2B, 0xD9, 0x72, 0xF1, 0x7F, 0xB1, 0x1E, 0xAD, 0x7B, 0xEE, 0x7A, 0xFA, 0x19, 0x3C, 0x7F, 0xD1, 0x78, 0xF9, 0x8B, 0xE9, 0x5F, 0x49, 0x4A, 0x6F, 0x7E, 0x22, 0x60, 0x78, 0x50, 0xB9, 0x6E, 0xF4, 0x62, 0xDD, 0x57, 0x93, 0x60, 0xD8, 0x65, 0xD3, 0x5D, 0xDA, 0x52, 0x6A, 0x6A, 0xA6, 0x63, 0xBB, 0x40, 0xD0, 0x70, 0xE5, 0x6A, 0x8D, 0x2D, 0xE2, 0x78, 0x6A, 0x71, 0x14, 0x22, 0xCE, 0x7D, 0x1E, 0x74, 0xFE, 0x1E, 0x20, 0x7F, 0x25, 0x76, 0xAA, 0x87, 0x84, 0x59, 0xDB, 0x54, 0x7F, 0x7B, 0x77, 0x5C, 0x0E, 0x58, 0xF2, 0x6D, 0x8A, 0x5F, 0x58, 0x5D, 0xDF, 0x60, 0x27, 0x63, 0x90, 0x62, 0x86, 0x51, 0x57, 0x68, 0xBC, 0x67, 0x6B, 0x40, 0xF7, 0x6F, 0x26, 0x6C, 0x9E, 0x2E, 0x70, 0x77, 0x8C, 0x72, 0x5C, 0x22, 0xDC, 0x7C, 0xD2, 0x75, 0xD6, 0x1E, 0x06, 0x7F, 0x13, 0x77, 0x4E, 0x82, 0xFE, 0x53, 0xDB, 0x5F, 0xEE, 0x79, 0x2E, 0x57, 0x48, 0x62, 0x66, 0x6C, 0x81, 0x5B, 0xB3, 0x65, 0x43, 0x5E, 0xD4, 0x60, 0xC2, 0x68, 0x6C, 0x4F, 0xC4, 0x66, 0x7E, 0x6C, 0x17, 0x3F, 0xB4, 0x6D, 0x9F, 0x6F, 0xDA, 0x2D, 0x45, 0x76, 0xFB, 0x74, 0x40, 0x22, 0x98, 0x7C, 0xAE, 0x76, 0xCD, 0x1E, 0x10, 0x7F, 0x20, 0x77, 0xE1, 0x7F, 0xF3, 0x4E, 0x76, 0x6A, 0x30, 0x77, 0x44, 0x53, 0x33, 0x6B, 0x0D, 0x6A, 0xCD, 0x58, 0x84, 0x6C, 0xF6, 0x5D, 0x45, 0x5D, 0xF6, 0x6E, 0xEC, 0x4E, 0x5E, 0x64, 0x45, 0x71, 0x0F, 0x3E, 0x71, 0x6C, 0x44, 0x73, 0x7D, 0x2C, 0xA7, 0x76, 0x92, 0x76, 0x3C, 0x22, 0x6E, 0x7C, 0xC2, 0x77, 0xAE, 0x1E, 0x13, 0x7F, 0x67, 0x78, 0x47, 0x7E, 0x84, 0x4A, 0x51, 0x73, 0xE9, 0x75, 0x59, 0x4F, 0x71, 0x73, 0x49, 0x69, 0xD4, 0x55, 0x5A, 0x74, 0x6F, 0x5C, 0x57, 0x5B, 0x66, 0x75, 0x7B, 0x4D, 0x0E, 0x62, 0x7A, 0x76, 0x3E, 0x3D, 0x97, 0x6B, 0x15, 0x77, 0x37, 0x2C, 0x80, 0x76, 0x45, 0x78, 0x1E, 0x22, 0x4B, 0x7C, 0xFD, 0x78, 0x6B, 0x1D, 0xE8, 0x7F, 0xD7, 0x78, 0x86, 0x7C, 0xB4, 0x46, 0xD6, 0x7C, 0xF6, 0x73, 0xB4, 0x4B, 0xF0, 0x7C, 0x77, 0x68, 0x10, 0x52, 0x2D, 0x7C, 0x51, 0x5A, 0x39, 0x58, 0xE2, 0x7B, 0xF6, 0x4C, 0x2C, 0x60, 0xC4, 0x7B, 0x94, 0x3D, 0x5B, 0x6A, 0x51, 0x7B, 0x32, 0x2C, 0x24, 0x76, 0x29, 0x79, 0xEF, 0x21, 0xD6, 0x7D, 0x42, 0x79, 0x10, 0x1D, 0x69, 0x80, 0x48, 0x78, 0xAE, 0x7B, 0x47, 0x43, 0x45, 0x87, 0xAA, 0x72, 0x74, 0x48, 0xA3, 0x86, 0xD5, 0x65, 0xC0, 0x4F, 0x67, 0x85, 0x19, 0x59, 0x32, 0x56, 0x93, 0x83, 0x3A, 0x4C, 0x2C, 0x5F, 0x01, 0x81, 0x8E, 0x3D, 0x5C, 0x69, 0x84, 0x7F, 0x70, 0x2B, 0x6B, 0x76, 0x0B, 0x7B, 0xC8, 0x20, 0xE4, 0x7D, 0x73, 0x79, 0xA4, 0x1C, 0x67, 0x80, 0x9C, 0x78, 0xBC, 0x79, 0x13, 0x40, 0xA9, 0x91, 0x24, 0x6F, 0x1E, 0x46, 0x73, 0x8F, 0x3F, 0x63, 0xA7, 0x4D, 0x43, 0x8C, 0x9E, 0x58, 0x1F, 0x54, 0x86, 0x89, 0xEB, 0x4B, 0xA6, 0x5D, 0x6E, 0x86, 0xE6, 0x3D, 0x13, 0x68, 0x71, 0x82, 0xC5, 0x2A, 0xBB, 0x75, 0xCD, 0x7D, 0x4F, 0x1F, 0xCE, 0x7D, 0x7F, 0x7A, 0x1B, 0x1B, 0x22, 0x80, 0xC3, 0x78, 0xBF, 0x77, 0x1C, 0x3E, 0x70, 0x99, 0x68, 0x6E, 0x57, 0x43, 0x94, 0x96, 0xBD, 0x60, 0xCC, 0x4A, 0x2B, 0x92, 0xF3, 0x55, 0x66, 0x52, 0x43, 0x8F, 0x7D, 0x4A, 0x27, 0x5C, 0x0E, 0x8B, 0x65, 0x3C, 0x7B, 0x67, 0xE2, 0x85, 0x7B, 0x2A, 0x3A, 0x75, 0x8D, 0x7E, 0x91, 0x1E, 0xC7, 0x7D, 0x71, 0x7A, 0x7F, 0x19, 0xDB, 0x80, 0xCD, 0x78, 0xC1, 0x7F, 0x52, 0x65, 0x05, 0x4D, 0x65, 0x74, 0x87, 0x65, 0xF4, 0x52, 0x2B, 0x67, 0x0E, 0x68, 0x0B, 0x58, 0x3E, 0x5A, 0x55, 0x6A, 0xA6, 0x5E, 0x12, 0x4D, 0xB4, 0x6E, 0x67, 0x63, 0xCB, 0x3C, 0xAD, 0x73, 0x83, 0x6A, 0x5B, 0x2B, 0x3E, 0x7A, 0x0F, 0x71, 0x1E, 0x21, 0xD7, 0x7E, 0x28, 0x74, 0xCA, 0x1D, 0xF5, 0x7F, 0xF7, 0x76, 0x44, 0x7C, 0x66, 0x60, 0xB0, 0x55, 0xEA, 0x72, 0x62, 0x62, 0x37, 0x59, 0x52, 0x66, 0x19, 0x64, 0x86, 0x5D, 0xD7, 0x59, 0xBB, 0x68, 0x21, 0x62, 0x78, 0x4B, 0xD0, 0x6C, 0x88, 0x67, 0x54, 0x3C, 0x85, 0x72, 0x14, 0x6C, 0x8E, 0x2B, 0x5E, 0x79, 0x84, 0x72, 0x7F, 0x21, 0x99, 0x7E, 0x04, 0x75, 0xD2, 0x1D, 0x7B, 0x7F, 0xF1, 0x77, 0x36, 0x79, 0x6E, 0x5A, 0xE4, 0x60, 0x10, 0x70, 0x60, 0x5D, 0x87, 0x62, 0x0A, 0x65, 0x33, 0x61, 0x27, 0x64, 0xBD, 0x59, 0x33, 0x65, 0xB5, 0x68, 0x28, 0x4A, 0x86, 0x6A, 0x6B, 0x6B, 0xB2, 0x3B, 0xB8, 0x70, 0xA3, 0x6F, 0x94, 0x2A, 0xF5, 0x79, 0x05, 0x74, 0x3C, 0x21, 0x5C, 0x7D, 0xF4, 0x76, 0xDF, 0x1D, 0x4A, 0x80, 0x0D, 0x77, 0xFC, 0x75, 0xE9, 0x55, 0xCA, 0x69, 0x07, 0x6E, 0x9D, 0x59, 0xE3, 0x6A, 0xBA, 0x63, 0x0A, 0x5E, 0x50, 0x6C, 0x25, 0x57, 0x30, 0x62, 0xD3, 0x6E, 0x32, 0x49, 0xD9, 0x67, 0xDA, 0x70, 0x19, 0x3B, 0x0D, 0x6F, 0x38, 0x72, 0xDD, 0x2A, 0xCF, 0x78, 0x91, 0x75, 0xFE, 0x21, 0x58, 0x7D, 0xFF, 0x77, 0xBA, 0x1D, 0x4E, 0x80, 0x4D, 0x78, 0x75, 0x74, 0x18, 0x52, 0x11, 0x72, 0x66, 0x6C, 0xAB, 0x56, 0x57, 0x72, 0x39, 0x61, 0xFA, 0x5B, 0x3D, 0x73, 0x1B, 0x55, 0x5A, 0x60, 0x38, 0x74, 0x54, 0x48, 0x1E, 0x66, 0x77, 0x75, 0x39, 0x3A, 0x9F, 0x6E, 0x4D, 0x76, 0x66, 0x2B, 0x25, 0x78, 0x3D, 0x77, 0xA6, 0x21, 0x71, 0x7E, 0x1B, 0x78, 0x5F, 0x1D, 0x42, 0x80, 0x9C, 0x78, 0xAC, 0x72, 0xA7, 0x4E, 0xAD, 0x7A, 0xC3, 0x6B, 0x69, 0x52, 0xE9, 0x7A, 0x7D, 0x61, 0x46, 0x57, 0xB8, 0x7A, 0x6E, 0x53, 0x36, 0x5D, 0x8E, 0x7A, 0x52, 0x47, 0x45, 0x64, 0xDF, 0x7A, 0x25, 0x3A, 0xC2, 0x6D, 0x7B, 0x7A, 0x16, 0x2B, 0x2F, 0x78, 0x07, 0x79, 0x57, 0x21, 0x3F, 0x7E, 0x48, 0x78, 0xE5, 0x1C, 0xF6, 0x80, 0xF3, 0x78, 0xB6, 0x72, 0x4C, 0x4B, 0x01, 0x84, 0xBA, 0x69, 0xE2, 0x4F, 0x4B, 0x84, 0x6B, 0x5E, 0x79, 0x55, 0x47, 0x82, 0xB8, 0x53, 0xAF, 0x5B, 0xC9, 0x80, 0xF4, 0x47, 0xC3, 0x62, 0xF4, 0x7F, 0xB9, 0x3A, 0x46, 0x6C, 0x8C, 0x7E, 0x2A, 0x2A, 0x4D, 0x77, 0xF5, 0x7B, 0x2A, 0x20, 0x82, 0x7E, 0x88, 0x79, 0x63, 0x1C, 0x4A, 0x81, 0x51, 0x78, 0xA4, 0x71, 0x54, 0x48, 0x59, 0x8E, 0x00, 0x67, 0xBC, 0x4D, 0x58, 0x8C, 0x94, 0x5D, 0x91, 0x53, 0x80, 0x8A, 0x50, 0x53, 0x13, 0x59, 0xC7, 0x87, 0xE6, 0x46, 0xFA, 0x61, 0xA3, 0x85, 0x67, 0x39, 0xE5, 0x6B, 0xFB, 0x81, 0x6C, 0x29, 0xB7, 0x78, 0x08, 0x7C, 0x97, 0x1F, 0x9F, 0x7E, 0xC0, 0x79, 0xC1, 0x1B, 0x4D, 0x81, 0x95, 0x78, 0x8D, 0x70, 0x55, 0x45, 0x95, 0x96, 0x16, 0x66, 0xAC, 0x4A, 0x6B, 0x93, 0xB2, 0x5B, 0x06, 0x50, 0x8F, 0x90, 0x8B, 0x4F, 0x77, 0x57, 0xA6, 0x8D, 0x03, 0x45, 0x8E, 0x60, 0xBA, 0x89, 0x69, 0x39, 0x74, 0x6C, 0x40, 0x83, 0x3F, 0x28, 0xD5, 0x78, 0x33, 0x7D, 0x7F, 0x1E, 0xA6, 0x7E, 0xEA, 0x7A, 0x02, 0x1A, 0x48, 0x81, 0xC2, 0x78, 0x80, 0x70, 0xDF, 0x6A, 0xFA, 0x50, 0xA2, 0x6B, 0x4F, 0x6B, 0xC3, 0x54, 0x1D, 0x60, 0x2D, 0x6D, 0xA6, 0x58, 0xE8, 0x52, 0xF2, 0x6F, 0x80, 0x5D, 0xEC, 0x48, 0x7E, 0x72, 0x0F, 0x63, 0x43, 0x37, 0xF7, 0x76, 0x4B, 0x69, 0xD3, 0x29, 0x59, 0x7B, 0xCC, 0x70, 0xFA, 0x20, 0xE7, 0x7F, 0x3B, 0x74, 0xAB, 0x1D, 0x54, 0x80, 0xBF, 0x76, 0x21, 0x70, 0xF4, 0x67, 0x5D, 0x56, 0xC5, 0x69, 0x07, 0x68, 0xAB, 0x59, 0xAB, 0x5F, 0x0A, 0x6A, 0xB5, 0x5D, 0xDA, 0x53, 0x97, 0x6D, 0x2C, 0x62, 0x28, 0x46, 0x0F, 0x70, 0xA8, 0x66, 0xFC, 0x37, 0xA7, 0x75, 0x66, 0x6C, 0x57, 0x28, 0xBB, 0x7B, 0x85, 0x72, 0x73, 0x20, 0x5C, 0x7F, 0x29, 0x75, 0xCA, 0x1C, 0xD0, 0x80, 0xB7, 0x77, 0x2F, 0x70, 0x37, 0x62, 0xAC, 0x5F, 0x20, 0x66, 0x73, 0x64, 0xA1, 0x61, 0x0C, 0x5D, 0x1D, 0x67, 0x87, 0x64, 0x2C, 0x52, 0xB3, 0x6A, 0xC3, 0x67, 0x76, 0x44, 0x84, 0x6E, 0xD3, 0x6B, 0x39, 0x36, 0xDB, 0x74, 0x6F, 0x6F, 0x82, 0x28, 0x59, 0x7B, 0x31, 0x74, 0x36, 0x20, 0x1C, 0x7F, 0x20, 0x76, 0xE4, 0x1C, 0x9A, 0x80, 0xCF, 0x78, 0x0A, 0x6B, 0x89, 0x5E, 0x3A, 0x66, 0xFF, 0x64, 0x16, 0x60, 0xCB, 0x69, 0x1C, 0x59, 0x9B, 0x64, 0x36, 0x6B, 0x23, 0x4F, 0x94, 0x68, 0x08, 0x6D, 0x4D, 0x43, 0x6C, 0x6C, 0xBE, 0x6F, 0x82, 0x36, 0x7B, 0x73, 0x00, 0x72, 0x6E, 0x28, 0xC6, 0x7A, 0xAF, 0x75, 0xC7, 0x20, 0x4F, 0x7F, 0x22, 0x77, 0xB8, 0x1C, 0xA8, 0x81, 0x06, 0x78, 0x8C, 0x6A, 0x0B, 0x5A, 0x55, 0x6E, 0xFD, 0x63, 0xC1, 0x5D, 0x36, 0x70, 0x8F, 0x58, 0xC5, 0x61, 0x51, 0x71, 0xC2, 0x4D, 0xF8, 0x65, 0xA5, 0x72, 0xE0, 0x42, 0x26, 0x6B, 0x3E, 0x74, 0x22, 0x36, 0x4F, 0x72, 0x05, 0x75, 0x9D, 0x2A, 0x1C, 0x7A, 0x44, 0x77, 0x32, 0x20, 0xB7, 0x7F, 0x30, 0x78, 0x47, 0x1C, 0xB2, 0x81, 0x48, 0x78, 0xBE, 0x69, 0xB9, 0x56, 0x9E, 0x78, 0x23, 0x61, 0xF0, 0x5A, 0x17, 0x78, 0x6E, 0x56, 0xAC, 0x5E, 0x55, 0x78, 0x9E, 0x4C, 0xEA, 0x63, 0x47, 0x78, 0x75, 0x42, 0x4A, 0x69, 0x75, 0x78, 0x86, 0x37, 0x90, 0x70, 0xCE, 0x78, 0xB5, 0x2A, 0x6D, 0x79, 0xFC, 0x78, 0xAA, 0x20, 0xAF, 0x7F, 0x54, 0x78, 0xB7, 0x1C, 0x96, 0x81, 0x95, 0x78, 0xBC, 0x67, 0x31, 0x53, 0x87, 0x81, 0xED, 0x5F, 0x13, 0x56, 0xCD, 0x81, 0x6E, 0x56, 0x67, 0x5B, 0x86, 0x80, 0x56, 0x4D, 0xC3, 0x61, 0x2D, 0x7E, 0xEF, 0x42, 0x50, 0x67, 0x8F, 0x7D, 0xC0, 0x35, 0x9E, 0x6F, 0xD2, 0x7C, 0x75, 0x28, 0x8D, 0x79, 0xF3, 0x7A, 0x67, 0x1F, 0xFA, 0x7F, 0x92, 0x79, 0x20, 0x1C, 0x3C, 0x81, 0xEE, 0x78, 0x95, 0x66, 0xFB, 0x50, 0xF7, 0x8A, 0xAD, 0x5F, 0x08, 0x54, 0x4B, 0x89, 0xB7, 0x56, 0xE9, 0x59, 0x89, 0x87, 0xAC, 0x4D, 0x5B, 0x5F, 0x80, 0x85, 0x1C, 0x40, 0xB2, 0x66, 0xC5, 0x82, 0xD0, 0x35, 0xB8, 0x6F, 0xC5, 0x7F, 0xEC, 0x28, 0x63, 0x7A, 0x28, 0x7B, 0xE4, 0x1F, 0x3E, 0x7F, 0xD0, 0x79, 0x6A, 0x1B, 0x65, 0x82, 0x34, 0x78, 0x64, 0x66, 0x4D, 0x4D, 0x9F, 0x92, 0x43, 0x5C, 0x6E, 0x51, 0xE0, 0x90, 0x03, 0x54, 0x18, 0x57, 0x71, 0x8D, 0x71, 0x49, 0xB4, 0x5D, 0xC1, 0x89, 0xE9, 0x3F, 0xA8, 0x65, 0xE1, 0x86, 0x68, 0x35, 0x83, 0x6F, 0xEE, 0x81, 0xBC, 0x27, 0x32, 0x7A, 0x48, 0x7C, 0xA9, 0x1E, 0x3E, 0x7F, 0xFE, 0x79, 0x91, 0x1A, 0x79, 0x82, 0x69, 0x78, 0x40, 0x67, 0x67, 0x71, 0x89, 0x51, 0x1B, 0x61, 0xB0, 0x71, 0xC0, 0x54, 0xB4, 0x56, 0xAF, 0x73, 0x07, 0x59, 0xE2, 0x4C, 0x80, 0x74, 0x04, 0x5E, 0x58, 0x41, 0xED, 0x76, 0x02, 0x63, 0x77, 0x33, 0xD4, 0x79, 0xA5, 0x69, 0xE3, 0x28, 0xDD, 0x7D, 0x68, 0x70, 0xC3, 0x1F, 0xE6, 0x80, 0x27, 0x74, 0xA1, 0x1C, 0x1D, 0x81, 0x47, 0x76, 0x4A, 0x66, 0x88, 0x6E, 0x8E, 0x56, 0xA0, 0x60, 0x32, 0x6F, 0x09, 0x59, 0x8B, 0x56, 0xDB, 0x70, 0x5A, 0x5D, 0xC4, 0x4C, 0x61, 0x72, 0x2F, 0x62, 0x04, 0x40, 0x35, 0x74, 0xED, 0x66, 0xAF, 0x33, 0x37, 0x78, 0xBF, 0x6C, 0x00, 0x26, 0xC1, 0x7D, 0x57, 0x72, 0x3E, 0x1F, 0x42, 0x80, 0x18, 0x75, 0xC0, 0x1C, 0x09, 0x81, 0x41, 0x77, 0x3E, 0x65, 0x09, 0x6A, 0x52, 0x5E, 0x16, 0x5D, 0x66, 0x6B, 0x83, 0x60, 0x2F, 0x54, 0xE8, 0x6D, 0x6B, 0x63, 0x92, 0x4B, 0x48, 0x6F, 0xE4, 0x66, 0xD4, 0x3F, 0x0E, 0x73, 0x38, 0x6A, 0x81, 0x32, 0x87, 0x77, 0xB5, 0x6E, 0xC7, 0x26, 0x3A, 0x7C, 0xFE, 0x73, 0xEF, 0x1F, 0x19, 0x80, 0x07, 0x76, 0xDB, 0x1C, 0x0D, 0x81, 0x50, 0x78, 0x18, 0x62, 0x0E, 0x66, 0x0D, 0x65, 0xBD, 0x5B, 0xFB, 0x67, 0xED, 0x68, 0x22, 0x53, 0xD9, 0x6A, 0x82, 0x6A, 0x29, 0x49, 0x2E, 0x6D, 0x84, 0x6C, 0x52, 0x3E, 0x0F, 0x71, 0x66, 0x6E, 0x8A, 0x33, 0x30, 0x76, 0x73, 0x71, 0xB2, 0x26, 0xBF, 0x7C, 0x92, 0x75, 0x7F, 0x1F, 0x5F, 0x80, 0x06, 0x77, 0xAD, 0x1C, 0x37, 0x81, 0x7B, 0x78, 0x99, 0x60, 0xED, 0x62, 0x14, 0x6C, 0xA3, 0x5A, 0x8B, 0x64, 0x09, 0x6F, 0x0B, 0x51, 0xFA, 0x67, 0xB7, 0x70, 0x53, 0x47, 0xD0, 0x6B, 0x6B, 0x71, 0x78, 0x3D, 0xCB, 0x6F, 0xDF, 0x72, 0xC3, 0x33, 0x82, 0x75, 0x79, 0x74, 0xAD, 0x27, 0x57, 0x7C, 0x41, 0x76, 0xDB, 0x1F, 0xB1, 0x80, 0x16, 0x78, 0x33, 0x1C, 0x66, 0x81, 0xB3, 0x78, 0xC7, 0x60, 0x1F, 0x5E, 0x90, 0x75, 0x52, 0x58, 0xB8, 0x61, 0x31, 0x76, 0x48, 0x4F, 0xFF, 0x65, 0x3D, 0x76, 0x78, 0x47, 0x82, 0x69, 0x4C, 0x76, 0xC4, 0x3E, 0x3F, 0x6E, 0x30, 0x77, 0x20, 0x33, 0x07, 0x74, 0x7B, 0x77, 0x9A, 0x27, 0x21, 0x7C, 0x09, 0x78, 0x2A, 0x1F, 0xB2, 0x80, 0x36, 0x78, 0x91, 0x1C, 0x7D, 0x81, 0xF7, 0x78, 0xBF, 0x5D, 0xF9, 0x5B, 0xFD, 0x7E, 0xF7, 0x58, 0x2D, 0x5E, 0x5B, 0x7E, 0x2C, 0x4F, 0xB6, 0x62, 0x3F, 0x7D, 0x90, 0x47, 0x80, 0x66, 0xEF, 0x7C, 0xDE, 0x3D, 0x4C, 0x6C, 0x7F, 0x7B, 0xFC, 0x30, 0x3D, 0x73, 0x8E, 0x7A, 0xEC, 0x25, 0xF1, 0x7B, 0xDE, 0x79, 0xA7, 0x1F, 0x48, 0x80, 0x60, 0x78, 0xE2, 0x1C, 0x58, 0x82, 0x43, 0x78, 0x8F, 0x5B, 0xFB, 0x59, 0x33, 0x86, 0xBC, 0x56, 0x77, 0x5B, 0x9D, 0x85, 0xD3, 0x4E, 0xD6, 0x60, 0x39, 0x84, 0x5C, 0x46, 0x89, 0x65, 0x89, 0x82, 0x5E, 0x3B, 0x87, 0x6B, 0xB2, 0x80, 0x5A, 0x30, 0xF7, 0x73, 0x1D, 0x7D, 0xFF, 0x25, 0xA5, 0x7B, 0xC5, 0x7A, 0xE6, 0x1E, 0xAC, 0x80, 0x84, 0x79, 0x14, 0x1B, 0xAE, 0x82, 0x81, 0x78, 0x50, 0x59, 0xFB, 0x55, 0xCF, 0x8D, 0x76, 0x55, 0x5F, 0x59, 0xAA, 0x8C, 0x7A, 0x4D, 0x24, 0x5E, 0xAF, 0x89, 0xFD, 0x43, 0x3B, 0x64, 0x40, 0x86, 0xC6, 0x3A, 0x81, 0x6A, 0xC3, 0x83, 0xD2, 0x32, 0x5A, 0x72, 0xC2, 0x80, 0x38, 0x25, 0x32, 0x7B, 0xA9, 0x7B, 0xB4, 0x1D, 0xC9, 0x80, 0x9A, 0x79, 0x29, 0x1A, 0xC2, 0x82, 0xB1, 0x78, 0x18, 0x5C, 0xA3, 0x79, 0xD5, 0x50, 0x30, 0x57, 0x52, 0x79, 0x65, 0x54, 0x22, 0x4D, 0xF3, 0x79, 0x6E, 0x59, 0x7C, 0x46, 0x03, 0x79, 0xA7, 0x5E, 0x3B, 0x3B, 0x93, 0x7B, 0x27, 0x63, 0x54, 0x31, 0x9A, 0x7D, 0x65, 0x69, 0xF0, 0x25, 0x0F, 0x7F, 0x9F, 0x70, 0x8F, 0x1D, 0xE6, 0x81, 0x14, 0x74, 0xAA, 0x1A, 0xDD, 0x81, 0xA5, 0x76, 0x7D, 0x5A, 0xA2, 0x76, 0xAF, 0x56, 0x3A, 0x55, 0x8F, 0x76, 0xC4, 0x59, 0x09, 0x4D, 0x42, 0x77, 0x3A, 0x5D, 0x56, 0x44, 0x9C, 0x78, 0x34, 0x61, 0xA6, 0x3A, 0xE1, 0x79, 0xF0, 0x66, 0x36, 0x30, 0x24, 0x7C, 0x5A, 0x6B, 0x8D, 0x24, 0x7C, 0x7F, 0x3D, 0x71, 0xFE, 0x1D, 0xF6, 0x80, 0xEA, 0x75, 0xBF, 0x1B, 0x33, 0x81, 0x9A, 0x77, 0x5C, 0x58, 0x6A, 0x72, 0xA7, 0x5D, 0x1D, 0x54, 0x6E, 0x73, 0xF9, 0x5F, 0x2B, 0x4C, 0x13, 0x74, 0xC9, 0x62, 0xA6, 0x43, 0x6D, 0x76, 0x21, 0x66, 0x05, 0x3A, 0x20, 0x78, 0x2D, 0x69, 0x9C, 0x2F, 0xC0, 0x7B, 0x3E, 0x6E, 0x04, 0x24, 0x7C, 0x7E, 0xCE, 0x73, 0x9F, 0x1E, 0x3B, 0x80, 0xC8, 0x76, 0xD2, 0x1B, 0x98, 0x81, 0x9D, 0x78, 0x2C, 0x57, 0x91, 0x6E, 0xCE, 0x64, 0x05, 0x52, 0xD0, 0x70, 0x7E, 0x65, 0x9A, 0x4C, 0x93, 0x72, 0x59, 0x68, 0x24, 0x42, 0x83, 0x74, 0x28, 0x6A, 0xC4, 0x39, 0x37, 0x76, 0xAA, 0x6D, 0x59, 0x2F, 0xF9, 0x7A, 0x4E, 0x70, 0xF0, 0x24, 0xD9, 0x7E, 0x78, 0x75, 0x2D, 0x1E, 0xA0, 0x80, 0xC1, 0x77, 0x9F, 0x1C, 0x02, 0x81, 0xB6, 0x78, 0xA9, 0x56, 0x50, 0x6B, 0x7C, 0x6A, 0x7D, 0x4F, 0xED, 0x6D, 0x0E, 0x6C, 0x5F, 0x49, 0x31, 0x6F, 0xA4, 0x6E, 0x17, 0x41, 0x06, 0x72, 0x4D, 0x6F, 0xD4, 0x39, 0x3F, 0x75, 0x69, 0x71, 0x67, 0x30, 0x45, 0x79, 0x9F, 0x73, 0xF8, 0x24, 0xED, 0x7E, 0x4B, 0x76, 0x7C, 0x1E, 0xE3, 0x80, 0xD1, 0x78, 0x1E, 0x1C, 0x5F, 0x81, 0xE1, 0x78, 0xD3, 0x54, 0xFC, 0x68, 0x20, 0x72, 0x35, 0x4E, 0x96, 0x6A, 0x1C, 0x73, 0x5A, 0x47, 0x3F, 0x6D, 0x65, 0x74, 0x05, 0x40, 0x87, 0x70, 0x73, 0x74, 0xE8, 0x39, 0x82, 0x73, 0xC0, 0x75, 0xA5, 0x2E, 0xDB, 0x78, 0xC5, 0x76, 0x8A, 0x24, 0x6A, 0x7E, 0x2A, 0x77, 0x9B, 0x1E, 0xF4, 0x80, 0xEC, 0x78, 0x6E, 0x1C, 0xA9, 0x82, 0x16, 0x78, 0xC9, 0x54, 0x27, 0x65, 0xA5, 0x7B, 0x46, 0x4E, 0xF6, 0x67, 0x90, 0x7A, 0xFB, 0x46, 0x6C, 0x6A, 0x80, 0x7A, 0xB9, 0x3E, 0xDA, 0x6D, 0xCB, 0x7A, 0x78, 0x38, 0x95, 0x72, 0x3B, 0x7A, 0x30, 0x2C, 0xCB, 0x78, 0x61, 0x79, 0xA9, 0x23, 0xC1, 0x7D, 0xD5, 0x78, 0xF5, 0x1E, 0xDA, 0x80, 0xFC, 0x78, 0xAF, 0x1C, 0xC0, 0x82, 0x53, 0x78, 0x94, 0x51, 0x97, 0x62, 0xEC, 0x82, 0x9A, 0x4D, 0x82, 0x65, 0x75, 0x81, 0xDD, 0x45, 0xF3, 0x68, 0xFA, 0x80, 0xD5, 0x3E, 0x18, 0x6C, 0xE0, 0x7F, 0x69, 0x35, 0x52, 0x71, 0x6E, 0x7E, 0x22, 0x2D, 0x2A, 0x77, 0x27, 0x7C, 0x4A, 0x24, 0x0F, 0x7D, 0x79, 0x7A, 0x04, 0x1E, 0xAD, 0x81, 0x08, 0x78, 0xD0, 0x1C, 0x62, 0x82, 0x89, 0x78, 0x51, 0x4F, 0x1C, 0x60, 0x06, 0x89, 0x3B, 0x4C, 0xC8, 0x63, 0xBF, 0x88, 0x6E, 0x46, 0xDD, 0x68, 0x54, 0x86, 0x72, 0x3E, 0x23, 0x6C, 0x4A, 0x83, 0xC4, 0x35, 0x3E, 0x70, 0x74, 0x81, 0x71, 0x30, 0x75, 0x76, 0x71, 0x7E, 0x65, 0x25, 0x9E, 0x7D, 0x4E, 0x7A, 0xC1, 0x1E, 0x70, 0x81, 0x12, 0x78, 0xDA, 0x1B, 0xA8, 0x82, 0xB1, 0x78, 0x10, 0x4D, 0xA8, 0x84, 0x17, 0x4F, 0xD0, 0x4B, 0x20, 0x82, 0xDC, 0x53, 0x1E, 0x44, 0xCC, 0x81, 0xAC, 0x57, 0xEF, 0x3E, 0x94, 0x81, 0xA3, 0x5D, 0x37, 0x35, 0xB7, 0x81, 0xA6, 0x62, 0xA3, 0x2A, 0x27, 0x81, 0xCB, 0x69, 0x31, 0x20, 0x41, 0x81, 0xC0, 0x70, 0x5C, 0x1B, 0xB4, 0x81, 0xD6, 0x74, 0xD9, 0x19, 0xC8, 0x81, 0xE2, 0x76, 0xC6, 0x4D, 0x59, 0x80, 0xCC, 0x55, 0x45, 0x49, 0x23, 0x80, 0x45, 0x58, 0x04, 0x42, 0xED, 0x7F, 0xE1, 0x5C, 0x2A, 0x3C, 0x7C, 0x7F, 0xDF, 0x60, 0x94, 0x35, 0x20, 0x80, 0x46, 0x65, 0x5B, 0x2B, 0xA3, 0x80, 0xB2, 0x6A, 0xE4, 0x21, 0xA4, 0x81, 0x42, 0x71, 0xC5, 0x1C, 0x95, 0x81, 0xA1, 0x75, 0xD3, 0x1A, 0x80, 0x81, 0xCA, 0x77, 0x8E, 0x4B, 0xA8, 0x7D, 0x61, 0x5B, 0x64, 0x48, 0x2D, 0x7D, 0x31, 0x5D, 0xFE, 0x41, 0xEB, 0x7D, 0x86, 0x61, 0x53, 0x3A, 0xC5, 0x7D, 0xF1, 0x64, 0xD6, 0x34, 0x22, 0x7E, 0xB9, 0x68, 0x7F, 0x2B, 0xDA, 0x7F, 0xBA, 0x6D, 0x35, 0x22, 0x79, 0x80, 0xCE, 0x73, 0x4B, 0x1D, 0x75, 0x81, 0x71, 0x76, 0xD0, 0x1B, 0x60, 0x81, 0xB7, 0x78, 0x4E, 0x4A, 0x9B, 0x7A, 0x43, 0x61, 0x6C, 0x47, 0x78, 0x7A, 0xAC, 0x63, 0x0E, 0x42, 0x43, 0x7B, 0x9A, 0x65, 0xDA, 0x3A, 0x74, 0x7C, 0x37, 0x68, 0xF8, 0x32, 0x05, 0x7D, 0x2A, 0x6C, 0x17, 0x2B, 0x55, 0x7E, 0xF4, 0x70, 0x16, 0x22, 0xE5, 0x80, 0x79, 0x74, 0xCB, 0x1E, 0x2F, 0x81, 0x58, 0x77, 0x95, 0x1C, 0x38, 0x81, 0xB8, 0x78, 0xC5, 0x49, 0x59, 0x77, 0x48, 0x68, 0x41, 0x45, 0x68, 0x78, 0x24, 0x69, 0x1C, 0x3F, 0x56, 0x79, 0x53, 0x6B, 0x14, 0x39, 0xDF, 0x7A, 0x66, 0x6D, 0x96, 0x31, 0xC7, 0x7C, 0x02, 0x6F, 0xDA, 0x2B, 0x5C, 0x7E, 0x40, 0x72, 0xE9, 0x22, 0xF7, 0x80, 0x38, 0x76, 0x10, 0x1E, 0xA8, 0x81, 0x56, 0x78, 0x11, 0x1C, 0xE4, 0x81, 0xD1, 0x78, 0xF0, 0x4A, 0x85, 0x74, 0x26, 0x6F, 0x34, 0x44, 0x3E, 0x75, 0x06, 0x6F, 0xE8, 0x3D, 0x6C, 0x77, 0x43, 0x70, 0xB6, 0x37, 0xD9, 0x79, 0x0A, 0x72, 0x35, 0x30, 0xBF, 0x7A, 0x69, 0x73, 0xB1, 0x29, 0xCA, 0x7D, 0x00, 0x75, 0x4C, 0x22, 0xA4, 0x7F, 0xEF, 0x77, 0x1E, 0x1E, 0xF5, 0x81, 0x60, 0x78, 0x5C, 0x1D, 0x70, 0x81, 0xFA, 0x78, 0xE6, 0x49, 0xC9, 0x71, 0x35, 0x76, 0xB5, 0x44, 0xF5, 0x72, 0xBF, 0x77, 0x19, 0x3C, 0xB9, 0x74, 0xE5, 0x77, 0x6B, 0x35, 0xF8, 0x76, 0xCD, 0x77, 0x68, 0x2F, 0x60, 0x78, 0xF2, 0x77, 0xBE, 0x28, 0xAB, 0x7C, 0x3B, 0x78, 0x09, 0x22, 0x86, 0x7F, 0x8A, 0x78, 0x49, 0x1F, 0x36, 0x81, 0x63, 0x78, 0x90, 0x1D, 0xD1, 0x82, 0x2C, 0x78, 0xB2, 0x46, 0xA5, 0x6F, 0x17, 0x7D, 0xA6, 0x43, 0xBD, 0x71, 0x3A, 0x7D, 0x3C, 0x3C, 0x18, 0x73, 0x7E, 0x7C, 0x91, 0x35, 0xEB, 0x75, 0xCA, 0x7B, 0xC8, 0x2E, 0xF0, 0x78, 0x63, 0x7B, 0x22, 0x29, 0x41, 0x7B, 0x7B, 0x7A, 0x47, 0x23, 0x3D, 0x7F, 0x37, 0x79, 0x3A, 0x1F, 0x86, 0x81, 0x69, 0x78, 0xAC, 0x1D, 0xE6, 0x82, 0x5A, 0x78, 0x71, 0x45, 0x52, 0x6D, 0xA1, 0x84, 0x37, 0x40, 0xCC, 0x6F, 0x73, 0x82, 0xE3, 0x3B, 0xAC, 0x72, 0x68, 0x81, 0x32, 0x36, 0x73, 0x75, 0x86, 0x7F, 0x90, 0x2F, 0xE3, 0x77, 0xE6, 0x7E, 0x3E, 0x2A, 0xC2, 0x7A, 0xF3, 0x7C, 0x1D, 0x24, 0x98, 0x7F, 0x0B, 0x79, 0xF5, 0x1F, 0xDE, 0x81, 0x77, 0x78, 0xB8, 0x1D, 0xC5, 0x82, 0x81, 0x78, 0x31, 0x41, 0x89, 0x8F, 0x1D, 0x4F, 0x67, 0x3C, 0xAB, 0x8E, 0xFD, 0x52, 0x79, 0x36, 0x7F, 0x8D, 0x08, 0x56, 0xE1, 0x32, 0x60, 0x8A, 0xEE, 0x5C, 0x2E, 0x2C, 0x78, 0x88, 0x7D, 0x61, 0xE9, 0x23, 0xDB, 0x86, 0x55, 0x68, 0xD0, 0x1D, 0x5F, 0x84, 0x09, 0x70, 0x63, 0x1A, 0x54, 0x82, 0xC5, 0x75, 0x08, 0x19, 0x15, 0x82, 0x3C, 0x77, 0x0A, 0x3F, 0x83, 0x8C, 0xD1, 0x53, 0x6F, 0x3A, 0xD3, 0x8C, 0x51, 0x56, 0x33, 0x36, 0xEF, 0x8A, 0xC9, 0x5A, 0x14, 0x32, 0xC2, 0x89, 0x17, 0x5E, 0xBC, 0x2C, 0xF8, 0x87, 0x81, 0x64, 0x07, 0x25, 0x75, 0x85, 0xAC, 0x6A, 0x17, 0x1E, 0x95, 0x83, 0x94, 0x71, 0x89, 0x1B, 0x6C, 0x82, 0x71, 0x75, 0xEC, 0x1A, 0x28, 0x81, 0xF7, 0x77, 0xCB, 0x3D, 0xAB, 0x8A, 0xCA, 0x58, 0xC8, 0x39, 0x60, 0x8A, 0x4A, 0x5B, 0x4E, 0x37, 0x41, 0x88, 0xE4, 0x5E, 0xB7, 0x31, 0xED, 0x87, 0x8E, 0x62, 0xBF, 0x2B, 0x6A, 0x86, 0x9F, 0x66, 0xE1, 0x25, 0x0E, 0x85, 0x1A, 0x6C, 0x00, 0x1F, 0x87, 0x83, 0x1A, 0x72, 0xDD, 0x1C, 0xB3, 0x82, 0x1B, 0x76, 0xD6, 0x1B, 0x88, 0x81, 0xB3, 0x78, 0x85, 0x3C, 0x31, 0x88, 0x83, 0x5E, 0x11, 0x39, 0xFB, 0x86, 0xFD, 0x60, 0x3F, 0x36, 0x10, 0x86, 0x53, 0x63, 0xE8, 0x30, 0x88, 0x85, 0xD2, 0x66, 0xFF, 0x29, 0x41, 0x85, 0x18, 0x6A, 0x1A, 0x24, 0x70, 0x84, 0x23, 0x6E, 0x77, 0x20, 0x5A, 0x82, 0x96, 0x74, 0x3E, 0x1D, 0xFC, 0x81, 0xD7, 0x77, 0x94, 0x1C, 0xF8, 0x81, 0x8B, 0x78, 0xFD, 0x3C, 0x28, 0x85, 0x3A, 0x64, 0x2A, 0x37, 0xDC, 0x84, 0xF8, 0x65, 0x6F, 0x32, 0x04, 0x84, 0x3B, 0x68, 0x3F, 0x2E, 0xAF, 0x83, 0xA1, 0x6A, 0xAB, 0x28, 0xE8, 0x83, 0x6F, 0x6D, 0x53, 0x24, 0xF1, 0x82, 0xD2, 0x71, 0x07, 0x21, 0x30, 0x82, 0x06, 0x75, 0x7E, 0x1F, 0x17, 0x81, 0xAC, 0x78, 0x13, 0x1E, 0x32, 0x81, 0x88, 0x79, 0x2C, 0x3C, 0x3E, 0x82, 0xEB, 0x6B, 0x05, 0x37, 0x9D, 0x82, 0x70, 0x6C, 0x40, 0x33, 0x68, 0x81, 0xFB, 0x6D, 0x79, 0x2F, 0x4F, 0x81, 0x94, 0x6F, 0x0D, 0x29, 0x14, 0x81, 0x89, 0x70, 0xE8, 0x25, 0x07, 0x81, 0x68, 0x73, 0x72, 0x21, 0xC4, 0x81, 0x7E, 0x76, 0x90, 0x1F, 0xF3, 0x81, 0x96, 0x78, 0x5F, 0x1F, 0x2D, 0x81, 0xA1, 0x79, 0x24, 0x3B, 0x87, 0x7F, 0xCF, 0x71, 0xAA, 0x37, 0xE3, 0x7F, 0x5E, 0x73, 0x16, 0x33, 0xA3, 0x7F, 0x66, 0x73, 0xD9, 0x2E, 0x8F, 0x7F, 0xF5, 0x73, 0xEF, 0x28, 0x8D, 0x80, 0x24, 0x74, 0xA2, 0x24, 0xC6, 0x80, 0x69, 0x75, 0xE1, 0x22, 0x11, 0x81, 0x1F, 0x77, 0x8B, 0x20, 0x96, 0x81, 0x9A, 0x78, 0x88, 0x1F, 0xF2, 0x81, 0xCF, 0x78, 0xF3, 0x37, 0xAD, 0x7E, 0xEE, 0x77, 0x83, 0x36, 0x09, 0x7E, 0xAC, 0x78, 0x44, 0x32, 0x44, 0x7E, 0x9A, 0x78, 0x3D, 0x2D, 0x61, 0x7F, 0x20, 0x77, 0xBB, 0x27, 0xD4, 0x7F, 0xF2, 0x77, 0xA7, 0x24, 0xAB, 0x80, 0x3E, 0x77, 0xE1, 0x22, 0xAE, 0x81, 0x10, 0x78, 0x61, 0x21, 0x24, 0x81, 0xB7, 0x78, 0x9D, 0x20, 0x6C, 0x82, 0x01, 0x78, 0xB5, 0x38, 0x36, 0x7D, 0x81, 0x7C, 0xE2, 0x35, 0x38, 0x7B, 0xF0, 0x7C, 0xBB, 0x31, 0x6A, 0x7C, 0x12, 0x7B, 0xEF, 0x2D, 0x0D, 0x7D, 0x8E, 0x7A, 0xFA, 0x29, 0xAB, 0x7F, 0xDC, 0x7A, 0x7F, 0x24, 0xEC, 0x80, 0xC4, 0x79, 0x85, 0x24, 0x2D, 0x81, 0x38, 0x79, 0x3C, 0x21, 0xD1, 0x81, 0xDE, 0x78, 0xB4, 0x20, 0xB2, 0x82, 0x2F, 0x78, 0x76, 0x35, 0xE3, 0x9A, 0x33, 0x4D, 0x42, 0x32, 0x7E, 0x97, 0xB6, 0x50, 0xAF, 0x2E, 0x46, 0x95, 0x0A, 0x55, 0x97, 0x2B, 0x9A, 0x91, 0xE4, 0x5A, 0xB4, 0x27, 0xF9, 0x8E, 0x2B, 0x60, 0xB9, 0x21, 0x4C, 0x89, 0xD8, 0x68, 0xE0, 0x1B, 0xC6, 0x86, 0x71, 0x6F, 0xF5, 0x19, 0xED, 0x83, 0xE3, 0x75, 0x06, 0x19, 0x07, 0x82, 0xBF, 0x77, 0x3B, 0x35, 0x10, 0x97, 0x7B, 0x51, 0x32, 0x31, 0x9C, 0x95, 0x7D, 0x53, 0xD2, 0x2D, 0x46, 0x93, 0x57, 0x57, 0xFD, 0x29, 0x69, 0x90, 0xC4, 0x5C, 0xED, 0x24, 0xDC, 0x8D, 0xA3, 0x62, 0xA3, 0x1F, 0xBE, 0x8A, 0x0F, 0x69, 0x56, 0x1B, 0xEA, 0x85, 0xDB, 0x71, 0x3A, 0x1A, 0xA3, 0x83, 0x4E, 0x75, 0xF8, 0x1A, 0x2A, 0x82, 0x35, 0x78, 0x00, 0x34, 0x3A, 0x94, 0xCF, 0x56, 0x39, 0x30, 0xDC, 0x92, 0xB8, 0x58, 0x25, 0x2C, 0xB8, 0x90, 0xFA, 0x5B, 0xF1, 0x28, 0x81, 0x8E, 0xEF, 0x60, 0x5E, 0x22, 0x8B, 0x8C, 0xAB, 0x65, 0x23, 0x1E, 0x10, 0x89, 0xA8, 0x6A, 0xCE, 0x1C, 0x64, 0x85, 0x46, 0x72, 0x74, 0x1B, 0xFE, 0x82, 0xBF, 0x76, 0xE1, 0x1B, 0xDD, 0x81, 0xAE, 0x78, 0xC1, 0x30, 0xAD, 0x93, 0x5C, 0x5B, 0x2A, 0x2E, 0xB9, 0x90, 0xDE, 0x5D, 0xA3, 0x2C, 0x51, 0x8E, 0x77, 0x61, 0x33, 0x28, 0xD4, 0x8C, 0x35, 0x64, 0xD6, 0x21, 0xA6, 0x8A, 0xBA, 0x68, 0x58, 0x1D, 0xCA, 0x88, 0x61, 0x6D, 0x06, 0x1D, 0xC3, 0x84, 0x85, 0x73, 0xB7, 0x1D, 0xE1, 0x82, 0x46, 0x77, 0x9B, 0x1D, 0xE3, 0x81, 0x54, 0x79, 0x3F, 0x30, 0x0E, 0x90, 0x8D, 0x60, 0x30, 0x2E, 0x81, 0x8E, 0xD6, 0x63, 0x19, 0x2B, 0xE6, 0x8C, 0x87, 0x66, 0x1F, 0x27, 0x26, 0x8A, 0x72, 0x68, 0xAB, 0x21, 0x4F, 0x88, 0x90, 0x6B, 0x9C, 0x1F, 0x94, 0x86, 0xA0, 0x6F, 0x80, 0x20, 0x02, 0x83, 0xA4, 0x74, 0xF6, 0x1F, 0xEA, 0x81, 0xE9, 0x78, 0x1E, 0x1F, 0xCE, 0x81, 0x2E, 0x79, 0x73, 0x2F, 0x13, 0x8E, 0x01, 0x65, 0xE5, 0x2D, 0xC1, 0x8C, 0x96, 0x68, 0x42, 0x2B, 0x5F, 0x8B, 0xA3, 0x6A, 0x45, 0x27, 0x0D, 0x89, 0x73, 0x6C, 0x8A, 0x22, 0x1C, 0x87, 0x0C, 0x6E, 0xE0, 0x21, 0x9E, 0x85, 0x1B, 0x71, 0xE9, 0x22, 0x26, 0x82, 0xDA, 0x76, 0x14, 0x21, 0xA2, 0x81, 0xAF, 0x78, 0x70, 0x21, 0x5D, 0x81, 0x32, 0x79, 0x6F, 0x2E, 0x29, 0x8B, 0x30, 0x6C, 0xD7, 0x2D, 0xB9, 0x88, 0xC0, 0x6E, 0x9C, 0x2B, 0x44, 0x88, 0x56, 0x6F, 0xE0, 0x28, 0x17, 0x87, 0x6A, 0x71, 0x8C, 0x22, 0xED, 0x85, 0xF9, 0x72, 0x45, 0x21, 0x2F, 0x84, 0x39, 0x73, 0xF6, 0x22, 0x6F, 0x82, 0x83, 0x76, 0xE2, 0x22, 0x9D, 0x81, 0xB4, 0x78, 0x8F, 0x22, 0x9F, 0x81, 0x5F, 0x79, 0x44, 0x2E, 0x70, 0x88, 0x45, 0x73, 0x0D, 0x2C, 0xBE, 0x87, 0x63, 0x73, 0xA3, 0x2A, 0xC9, 0x86, 0x99, 0x74, 0x63, 0x27, 0xFD, 0x85, 0xDA, 0x74, 0xE4, 0x23, 0x11, 0x85, 0x18, 0x74, 0xFE, 0x1F, 0x7E, 0x84, 0x10, 0x75, 0x96, 0x22, 0x26, 0x82, 0xBD, 0x77, 0x85, 0x23, 0x11, 0x81, 0xFA, 0x78, 0x96, 0x23, 0x56, 0x81, 0xA8, 0x79, 0x06, 0x2E, 0x5D, 0x86, 0xEA, 0x77, 0x23, 0x2D, 0xA6, 0x85, 0xBC, 0x78, 0x23, 0x2B, 0x77, 0x85, 0x1E, 0x78, 0x94, 0x2A, 0xD8, 0x83, 0xCB, 0x78, 0x65, 0x27, 0x35, 0x84, 0x0B, 0x77, 0xD4, 0x22, 0xA4, 0x84, 0x4D, 0x77, 0x8B, 0x23, 0x91, 0x83, 0x2F, 0x78, 0x5C, 0x23, 0x94, 0x82, 0x56, 0x78, 0xA5, 0x23, 0x95, 0x81, 0xF7, 0x78, 0xC2, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x74, 0x00, 0xAE, 0x00, 0xE8, 0x01, 0x22, 0x01, 0x5C, 0x01, 0x96, 0x01, 0xD0, 0x02, 0x0B, 0x02, 0x45, 0x02, 0x7F, 0x02, 0xB9, 0x02, 0xF4, 0x03, 0x2E, 0x03, 0x68, 0x03, 0xA3, 0x03, 0xDD, 0x04, 0x18, 0x04, 0x52, 0x04, 0x8D, 0x04, 0xC8, 0x05, 0x02, 0x05, 0x3D, 0x05, 0x78, 0x05, 0xB2, 0x05, 0xED, 0x06, 0x28, 0x06, 0x63, 0x06, 0x9E, 0x06, 0xD9, 0x07, 0x14, 0x07, 0x4F, 0x07, 0x8A, 0x07, 0xC5, 0x08, 0x00, 0x08, 0x3B, 0x08, 0x76, 0x08, 0xB1, 0x08, 0xED, 0x09, 0x28, 0x09, 0x63, 0x09, 0x9F, 0x09, 0xDA, 0x0A, 0x15, 0x0A, 0x51, 0x0A, 0x8C, 0x0A, 0xC8, 0x0B, 0x03, 0x0B, 0x3F, 0x0B, 0x7B, 0x0B, 0xB6, 0x0B, 0xF2, 0x0C, 0x2E, 0x0C, 0x6A, 0x0C, 0xA5, 0x0C, 0xE1, 0x0D, 0x1D, 0x0D, 0x59, 0x0D, 0x95, 0x0D, 0xD1, 0x0E, 0x0D, 0x0E, 0x49, 0x0E, 0x85, 0x0E, 0xC1, 0x0E, 0xFE, 0x0F, 0x3A, 0x0F, 0x76, 0x0F, 0xB2, 0x0F, 0xEF, 0x10, 0x2B, 0x10, 0x67, 0x10, 0xA4, 0x10, 0xE0, 0x11, 0x1D, 0x11, 0x59, 0x11, 0x96, 0x11, 0xD2, 0x12, 0x0F, 0x12, 0x4C, 0x12, 0x88, 0x12, 0xC5, 0x13, 0x02, 0x13, 0x3F, 0x13, 0x7C, 0x13, 0xB9, 0x13, 0xF6, 0x14, 0x32, 0x14, 0x6F, 0x14, 0xAC, 0x14, 0xEA, 0x15, 0x27, 0x15, 0x64, 0x15, 0xA1, 0x15, 0xDE, 0x16, 0x1B, 0x16, 0x59, 0x16, 0x96, 0x16, 0xD3, 0x17, 0x11, 0x17, 0x4E, 0x17, 0x8C, 0x17, 0xC9, 0x18, 0x07, 0x18, 0x44, 0x18, 0x82, 0x18, 0xBF, 0x18, 0xFD, 0x19, 0x3B, 0x19, 0x78, 0x19, 0xB6, 0x19, 0xF4, 0x1A, 0x32, 0x1A, 0x70, 0x1A, 0xAE, 0x1A, 0xEC, 0x1B, 0x2A, 0x1B, 0x68, 0x1B, 0xA6, 0x1B, 0xE4, 0x1C, 0x22, 0x1C, 0x60, 0x1C, 0x9E, 0x1C, 0xDD, 0x1D, 0x1B, 0x1D, 0x59, 0x1D, 0x98, 0x1D, 0xD6, 0x1E, 0x14, 0x1E, 0x53, 0x1E, 0x91, 0x1E, 0xD0, 0x1F, 0x0F, 0x1F, 0x4D, 0x1F, 0x8C, 0x1F, 0xCB, 0x20, 0x0A, 0x20, 0x48, 0x20, 0x87, 0x20, 0xC6, 0x21, 0x05, 0x21, 0x44, 0x21, 0x83, 0x21, 0xC2, 0x22, 0x01, 0x22, 0x40, 0x22, 0x80, 0x22, 0xBF, 0x22, 0xFE, 0x23, 0x3D, 0x23, 0x7D, 0x23, 0xBC, 0x23, 0xFC, 0x24, 0x3B, 0x24, 0x7B, 0x24, 0xBA, 0x24, 0xFA, 0x25, 0x3A, 0x25, 0x79, 0x25, 0xB9, 0x25, 0xF9, 0x26, 0x39, 0x26, 0x79, 0x26, 0xB9, 0x26, 0xF9, 0x27, 0x39, 0x27, 0x79, 0x27, 0xB9, 0x27, 0xF9, 0x28, 0x3A, 0x28, 0x7A, 0x28, 0xBA, 0x28, 0xFB, 0x29, 0x3B, 0x29, 0x7C, 0x29, 0xBC, 0x29, 0xFD, 0x2A, 0x3D, 0x2A, 0x7E, 0x2A, 0xBF, 0x2B, 0x00, 0x2B, 0x41, 0x2B, 0x81, 0x2B, 0xC2, 0x2C, 0x03, 0x2C, 0x44, 0x2C, 0x85, 0x2C, 0xC6, 0x2D, 0x08, 0x2D, 0x49, 0x2D, 0x8A, 0x2D, 0xCB, 0x2E, 0x0C, 0x2E, 0x4E, 0x2E, 0x8F, 0x2E, 0xD1, 0x2F, 0x12, 0x2F, 0x53, 0x2F, 0x95, 0x2F, 0xD7, 0x30, 0x18, 0x30, 0x5A, 0x30, 0x9C, 0x30, 0xDD, 0x31, 0x1F, 0x31, 0x61, 0x31, 0xA3, 0x31, 0xE5, 0x32, 0x27, 0x32, 0x68, 0x32, 0xAA, 0x32, 0xED, 0x33, 0x2F, 0x33, 0x71, 0x33, 0xB3, 0x33, 0xF5, 0x34, 0x38, 0x34, 0x7A, 0x34, 0xBC, 0x34, 0xFF, 0x35, 0x42, 0x35, 0x84, 0x35, 0xC7, 0x36, 0x0A, 0x36, 0x4C, 0x36, 0x8F, 0x36, 0xD2, 0x37, 0x15, 0x37, 0x58, 0x37, 0x9B, 0x37, 0xDF, 0x38, 0x22, 0x38, 0x65, 0x38, 0xA8, 0x38, 0xEC, 0x39, 0x2F, 0x39, 0x73, 0x39, 0xB6, 0x39, 0xFA, 0x3A, 0x3E, 0x3A, 0x81, 0x3A, 0xC5, 0x3B, 0x09, 0x3B, 0x4D, 0x3B, 0x91, 0x3B, 0xD5, 0x3C, 0x19, 0x3C, 0x5D, 0x3C, 0xA1, 0x3C, 0xE6, 0x3D, 0x2A, 0x3D, 0x6E, 0x3D, 0xB3, 0x3D, 0xF7, 0x3E, 0x3C, 0x3E, 0x80, 0x3E, 0xC5, 0x3F, 0x0A, 0x3F, 0x4F, 0x3F, 0x93, 0x3F, 0xD8, 0x40, 0x1D, 0x40, 0x62, 0x40, 0xA7, 0x40, 0xEB, 0x41, 0x30, 0x41, 0x74, 0x41, 0xB9, 0x41, 0xFD, 0x42, 0x42, 0x42, 0x86, 0x42, 0xCB, 0x43, 0x0F, 0x43, 0x53, 0x43, 0x97, 0x43, 0xDB, 0x44, 0x1F, 0x44, 0x63, 0x44, 0xA7, 0x44, 0xEB, 0x45, 0x2F, 0x45, 0x73, 0x45, 0xB7, 0x45, 0xFB, 0x46, 0x3E, 0x46, 0x82, 0x46, 0xC6, 0x47, 0x09, 0x47, 0x4D, 0x47, 0x90, 0x47, 0xD3, 0x48, 0x17, 0x48, 0x5A, 0x48, 0x9D, 0x48, 0xE1, 0x49, 0x24, 0x49, 0x67, 0x49, 0xAA, 0x49, 0xED, 0x4A, 0x30, 0x4A, 0x73, 0x4A, 0xB5, 0x4A, 0xF8, 0x4B, 0x3B, 0x4B, 0x7E, 0x4B, 0xC0, 0x4C, 0x03, 0x4C, 0x45, 0x4C, 0x88, 0x4C, 0xCA, 0x4D, 0x0D, 0x4D, 0x4F, 0x4D, 0x91, 0x4D, 0xD3, 0x4E, 0x16, 0x4E, 0x58, 0x4E, 0x9A, 0x4E, 0xDC, 0x4F, 0x1E, 0x4F, 0x60, 0x4F, 0xA2, 0x4F, 0xE3, 0x50, 0x25, 0x50, 0x67, 0x50, 0xA8, 0x50, 0xEA, 0x51, 0x2C, 0x51, 0x6D, 0x51, 0xAF, 0x51, 0xF0, 0x52, 0x31, 0x52, 0x73, 0x52, 0xB4, 0x52, 0xF5, 0x53, 0x36, 0x53, 0x77, 0x53, 0xB8, 0x53, 0xF9, 0x54, 0x3A, 0x54, 0x7B, 0x54, 0xBC, 0x54, 0xFD, 0x55, 0x3E, 0x55, 0x7E, 0x55, 0xBF, 0x56, 0x00, 0x56, 0x40, 0x56, 0x81, 0x56, 0xC2, 0x57, 0x02, 0x57, 0x43, 0x57, 0x83, 0x57, 0xC3, 0x58, 0x04, 0x58, 0x44, 0x58, 0x85, 0x58, 0xC5, 0x59, 0x05, 0x59, 0x46, 0x59, 0x86, 0x59, 0xC6, 0x5A, 0x06, 0x5A, 0x46, 0x5A, 0x86, 0x5A, 0xC7, 0x5B, 0x07, 0x5B, 0x47, 0x5B, 0x87, 0x5B, 0xC7, 0x5C, 0x07, 0x5C, 0x47, 0x5C, 0x87, 0x5C, 0xC6, 0x5D, 0x06, 0x5D, 0x46, 0x5D, 0x86, 0x5D, 0xC6, 0x5E, 0x06, 0x5E, 0x45, 0x5E, 0x85, 0x5E, 0xC5, 0x5F, 0x04, 0x5F, 0x44, 0x5F, 0x83, 0x5F, 0xC3, 0x60, 0x03, 0x60, 0x42, 0x60, 0x82, 0x60, 0xC1, 0x61, 0x00, 0x61, 0x40, 0x61, 0x7F, 0x61, 0xBF, 0x61, 0xFE, 0x62, 0x3D, 0x62, 0x7C, 0x62, 0xBC, 0x62, 0xFB, 0x63, 0x3A, 0x63, 0x79, 0x63, 0xB8, 0x63, 0xF7, 0x64, 0x37, 0x64, 0x76, 0x64, 0xB5, 0x64, 0xF4, 0x65, 0x33, 0x65, 0x71, 0x65, 0xB0, 0x65, 0xEF, 0x66, 0x2E, 0x66, 0x6D, 0x66, 0xAC, 0x66, 0xEA, 0x67, 0x29, 0x67, 0x68, 0x67, 0xA6, 0x67, 0xE5, 0x68, 0x23, 0x68, 0x62, 0x68, 0xA0, 0x68, 0xDF, 0x69, 0x1D, 0x69, 0x5B, 0x69, 0x99, 0x69, 0xD8, 0x6A, 0x16, 0x6A, 0x54, 0x6A, 0x92, 0x6A, 0xD0, 0x6B, 0x0E, 0x6B, 0x4C, 0x6B, 0x8A, 0x6B, 0xC7, 0x6C, 0x05, 0x6C, 0x43, 0x6C, 0x81, 0x6C, 0xBE, 0x6C, 0xFC, 0x6D, 0x39, 0x6D, 0x77, 0x6D, 0xB4, 0x6D, 0xF2, 0x6E, 0x2F, 0x6E, 0x6D, 0x6E, 0xAA, 0x6E, 0xE7, 0x6F, 0x24, 0x6F, 0x62, 0x6F, 0x9F, 0x6F, 0xDC, 0x70, 0x19, 0x70, 0x56, 0x70, 0x93, 0x70, 0xD0, 0x71, 0x0D, 0x71, 0x4A, 0x71, 0x87, 0x71, 0xC4, 0x72, 0x00, 0x72, 0x3D, 0x72, 0x7A, 0x72, 0xB6, 0x72, 0xF3, 0x73, 0x2F, 0x73, 0x6C, 0x73, 0xA8, 0x73, 0xE5, 0x74, 0x21, 0x74, 0x5E, 0x74, 0x9A, 0x74, 0xD6, 0x75, 0x12, 0x75, 0x4F, 0x75, 0x8B, 0x75, 0xC7, 0x76, 0x03, 0x76, 0x3F, 0x76, 0x7B, 0x76, 0xB7, 0x76, 0xF3, 0x77, 0x2F, 0x77, 0x6A, 0x77, 0xA6, 0x77, 0xE2, 0x78, 0x1E, 0x78, 0x59, 0x78, 0x95, 0x78, 0xD0, 0x79, 0x0C, 0x79, 0x47, 0x79, 0x83, 0x79, 0xBE, 0x79, 0xFA, 0x7A, 0x35, 0x7A, 0x70, 0x7A, 0xAB, 0x7A, 0xE7, 0x7B, 0x22, 0x7B, 0x5D, 0x7B, 0x98, 0x7B, 0xD3, 0x7C, 0x0E, 0x7C, 0x49, 0x7C, 0x84, 0x7C, 0xBF, 0x7C, 0xFA, 0x7D, 0x35, 0x7D, 0x6F, 0x7D, 0xAA, 0x7D, 0xE5, 0x7E, 0x1F, 0x7E, 0x5A, 0x7E, 0x95, 0x7E, 0xCF, 0x7F, 0x0A, 0x7F, 0x44, 0x7F, 0x7E, 0x7F, 0xB9, 0x7F, 0xF3, 0x80, 0x2E, 0x80, 0x68, 0x80, 0xA3, 0x80, 0xDD, 0x81, 0x18, 0x81, 0x52, 0x81, 0x8D, 0x81, 0xC8, 0x82, 0x02, 0x82, 0x3D, 0x82, 0x78, 0x82, 0xB3, 0x82, 0xEE, 0x83, 0x29, 0x83, 0x64, 0x83, 0x9F, 0x83, 0xDA, 0x84, 0x15, 0x84, 0x50, 0x84, 0x8B, 0x84, 0xC6, 0x85, 0x01, 0x85, 0x3D, 0x85, 0x78, 0x85, 0xB3, 0x85, 0xEF, 0x86, 0x2A, 0x86, 0x66, 0x86, 0xA1, 0x86, 0xDD, 0x87, 0x18, 0x87, 0x54, 0x87, 0x90, 0x87, 0xCB, 0x88, 0x07, 0x88, 0x43, 0x88, 0x7F, 0x88, 0xBA, 0x88, 0xF6, 0x89, 0x32, 0x89, 0x6E, 0x89, 0xAA, 0x89, 0xE6, 0x8A, 0x22, 0x8A, 0x5F, 0x8A, 0x9B, 0x8A, 0xD7, 0x8B, 0x13, 0x8B, 0x50, 0x8B, 0x8C, 0x8B, 0xC8, 0x8C, 0x05, 0x8C, 0x41, 0x8C, 0x7E, 0x8C, 0xBA, 0x8C, 0xF7, 0x8D, 0x33, 0x8D, 0x70, 0x8D, 0xAD, 0x8D, 0xE9, 0x8E, 0x26, 0x8E, 0x63, 0x8E, 0xA0, 0x8E, 0xDD, 0x8F, 0x1A, 0x8F, 0x57, 0x8F, 0x94, 0x8F, 0xD1, 0x90, 0x0E, 0x90, 0x4B, 0x90, 0x88, 0x90, 0xC6, 0x91, 0x03, 0x91, 0x40, 0x91, 0x7E, 0x91, 0xBB, 0x91, 0xF8, 0x92, 0x36, 0x92, 0x73, 0x92, 0xB1, 0x92, 0xEF, 0x93, 0x2C, 0x93, 0x6A, 0x93, 0xA8, 0x93, 0xE6, 0x94, 0x23, 0x94, 0x61, 0x94, 0x9F, 0x94, 0xDD, 0x95, 0x1B, 0x95, 0x59, 0x95, 0x97, 0x95, 0xD5, 0x96, 0x13, 0x96, 0x51, 0x96, 0x90, 0x96, 0xCE, 0x97, 0x0C, 0x97, 0x4B, 0x97, 0x89, 0x97, 0xC7, 0x98, 0x06, 0x98, 0x44, 0x98, 0x83, 0x98, 0xC1, 0x99, 0x00, 0x99, 0x3F, 0x99, 0x7D, 0x99, 0xBC, 0x99, 0xFB, 0x9A, 0x3A, 0x9A, 0x79, 0x9A, 0xB8, 0x9A, 0xF7, 0x9B, 0x36, 0x9B, 0x75, 0x9B, 0xB4, 0x9B, 0xF4, 0x9C, 0x33, 0x9C, 0x72, 0x9C, 0xB2, 0x9C, 0xF1, 0x9D, 0x31, 0x9D, 0x71, 0x9D, 0xB0, 0x9D, 0xF0, 0x9E, 0x30, 0x9E, 0x70, 0x9E, 0xB0, 0x9E, 0xEF, 0x9F, 0x30, 0x9F, 0x70, 0x9F, 0xB0, 0x9F, 0xF0, 0xA0, 0x30, 0xA0, 0x71, 0xA0, 0xB1, 0xA0, 0xF1, 0xA1, 0x32, 0xA1, 0x73, 0xA1, 0xB3, 0xA1, 0xF4, 0xA2, 0x35, 0xA2, 0x75, 0xA2, 0xB6, 0xA2, 0xF7, 0xA3, 0x38, 0xA3, 0x79, 0xA3, 0xBA, 0xA3, 0xFC, 0xA4, 0x3D, 0xA4, 0x7E, 0xA4, 0xC0, 0xA5, 0x01, 0xA5, 0x42, 0xA5, 0x84, 0xA5, 0xC6, 0xA6, 0x07, 0xA6, 0x49, 0xA6, 0x8B, 0xA6, 0xCD, 0xA7, 0x0F, 0xA7, 0x51, 0xA7, 0x93, 0xA7, 0xD5, 0xA8, 0x17, 0xA8, 0x59, 0xA8, 0x9B, 0xA8, 0xDE, 0xA9, 0x20, 0xA9, 0x63, 0xA9, 0xA5, 0xA9, 0xE8, 0xAA, 0x2A, 0xAA, 0x6D, 0xAA, 0xB0, 0xAA, 0xF2, 0xAB, 0x35, 0xAB, 0x78, 0xAB, 0xBB, 0xAB, 0xFE, 0xAC, 0x41, 0xAC, 0x85, 0xAC, 0xC8, 0xAD, 0x0B, 0xAD, 0x4E, 0xAD, 0x92, 0xAD, 0xD5, 0xAE, 0x19, 0xAE, 0x5C, 0xAE, 0xA0, 0xAE, 0xE4, 0xAF, 0x28, 0xAF, 0x6B, 0xAF, 0xAF, 0xAF, 0xF3, 0xB0, 0x37, 0xB0, 0x7B, 0xB0, 0xC0, 0xB1, 0x04, 0xB1, 0x48, 0xB1, 0x8C, 0xB1, 0xD1, 0xB2, 0x15, 0xB2, 0x5A, 0xB2, 0x9E, 0xB2, 0xE3, 0xB3, 0x28, 0xB3, 0x6D, 0xB3, 0xB1, 0xB3, 0xF6, 0xB4, 0x3B, 0xB4, 0x80, 0xB4, 0xC5, 0xB5, 0x0B, 0xB5, 0x50, 0xB5, 0x95, 0xB5, 0xDB, 0xB6, 0x20, 0xB6, 0x65, 0xB6, 0xAB, 0xB6, 0xF1, 0xB7, 0x36, 0xB7, 0x7C, 0xB7, 0xC2, 0xB8, 0x08, 0xB8, 0x4E, 0xB8, 0x94, 0xB8, 0xDA, 0xB9, 0x20, 0xB9, 0x67, 0xB9, 0xAD, 0xB9, 0xF4, 0xBA, 0x3A, 0xBA, 0x81, 0xBA, 0xC7, 0xBB, 0x0E, 0xBB, 0x55, 0xBB, 0x9C, 0xBB, 0xE3, 0xBC, 0x2A, 0xBC, 0x71, 0xBC, 0xB8, 0xBC, 0xFF, 0xBD, 0x47, 0xBD, 0x8E, 0xBD, 0xD5, 0xBE, 0x1D, 0xBE, 0x65, 0xBE, 0xAC, 0xBE, 0xF4, 0xBF, 0x3C, 0xBF, 0x84, 0xBF, 0xCC, 0xC0, 0x13, 0xC0, 0x5B, 0xC0, 0xA3, 0xC0, 0xEA, 0xC1, 0x32, 0xC1, 0x79, 0xC1, 0xC1, 0xC2, 0x08, 0xC2, 0x4F, 0xC2, 0x97, 0xC2, 0xDE, 0xC3, 0x25, 0xC3, 0x6C, 0xC3, 0xB4, 0xC3, 0xFB, 0xC4, 0x42, 0xC4, 0x89, 0xC4, 0xD0, 0xC5, 0x17, 0xC5, 0x5E, 0xC5, 0xA5, 0xC5, 0xEC, 0xC6, 0x32, 0xC6, 0x79, 0xC6, 0xC0, 0xC7, 0x06, 0xC7, 0x4D, 0xC7, 0x94, 0xC7, 0xDA, 0xC8, 0x21, 0xC8, 0x67, 0xC8, 0xAE, 0xC8, 0xF4, 0xC9, 0x3B, 0xC9, 0x81, 0xC9, 0xC7, 0xCA, 0x0E, 0xCA, 0x54, 0xCA, 0x9A, 0xCA, 0xE0, 0xCB, 0x27, 0xCB, 0x6D, 0xCB, 0xB3, 0xCB, 0xF9, 0xCC, 0x3F, 0xCC, 0x85, 0xCC, 0xCB, 0xCD, 0x10, 0xCD, 0x56, 0xCD, 0x9C, 0xCD, 0xE1, 0xCE, 0x27, 0xCE, 0x6D, 0xCE, 0xB2, 0xCE, 0xF7, 0xCF, 0x3D, 0xCF, 0x82, 0xCF, 0xC7, 0xD0, 0x0C, 0xD0, 0x52, 0xD0, 0x97, 0xD0, 0xDC, 0xD1, 0x21, 0xD1, 0x65, 0xD1, 0xAA, 0xD1, 0xEF, 0xD2, 0x34, 0xD2, 0x78, 0xD2, 0xBD, 0xD3, 0x01, 0xD3, 0x46, 0xD3, 0x8A, 0xD3, 0xCF, 0xD4, 0x13, 0xD4, 0x57, 0xD4, 0x9B, 0xD4, 0xE0, 0xD5, 0x24, 0xD5, 0x68, 0xD5, 0xAC, 0xD5, 0xEF, 0xD6, 0x33, 0xD6, 0x77, 0xD6, 0xBB, 0xD6, 0xFE, 0xD7, 0x42, 0xD7, 0x85, 0xD7, 0xC9, 0xD8, 0x0C, 0xD8, 0x4F, 0xD8, 0x92, 0xD8, 0xD5, 0xD9, 0x18, 0xD9, 0x5B, 0xD9, 0x9E, 0xD9, 0xE1, 0xDA, 0x24, 0xDA, 0x67, 0xDA, 0xA9, 0xDA, 0xEC, 0xDB, 0x2F, 0xDB, 0x71, 0xDB, 0xB3, 0xDB, 0xF6, 0xDC, 0x38, 0xDC, 0x7A, 0xDC, 0xBC, 0xDC, 0xFE, 0xDD, 0x40, 0xDD, 0x82, 0xDD, 0xC4, 0xDE, 0x06, 0xDE, 0x47, 0xDE, 0x89, 0xDE, 0xCB, 0xDF, 0x0C, 0xDF, 0x4E, 0xDF, 0x8F, 0xDF, 0xD0, 0xE0, 0x11, 0xE0, 0x52, 0xE0, 0x94, 0xE0, 0xD5, 0xE1, 0x15, 0xE1, 0x56, 0xE1, 0x97, 0xE1, 0xD8, 0xE2, 0x19, 0xE2, 0x59, 0xE2, 0x9A, 0xE2, 0xDA, 0xE3, 0x1B, 0xE3, 0x5B, 0xE3, 0x9B, 0xE3, 0xDB, 0xE4, 0x1B, 0xE4, 0x5B, 0xE4, 0x9B, 0xE4, 0xDB, 0xE5, 0x1B, 0xE5, 0x5B, 0xE5, 0x9B, 0xE5, 0xDA, 0xE6, 0x1A, 0xE6, 0x59, 0xE6, 0x99, 0xE6, 0xD8, 0xE7, 0x17, 0xE7, 0x57, 0xE7, 0x96, 0xE7, 0xD5, 0xE8, 0x14, 0xE8, 0x53, 0xE8, 0x92, 0xE8, 0xD1, 0xE9, 0x0F, 0xE9, 0x4E, 0xE9, 0x8D, 0xE9, 0xCB, 0xEA, 0x0A, 0xEA, 0x48, 0xEA, 0x87, 0xEA, 0xC5, 0xEB, 0x03, 0xEB, 0x41, 0xEB, 0x7F, 0xEB, 0xBD, 0xEB, 0xFB, 0xEC, 0x39, 0xEC, 0x77, 0xEC, 0xB5, 0xEC, 0xF3, 0xED, 0x30, 0xED, 0x6E, 0xED, 0xAB, 0xED, 0xE9, 0xEE, 0x26, 0xEE, 0x63, 0xEE, 0xA1, 0xEE, 0xDE, 0xEF, 0x1B, 0xEF, 0x58, 0xEF, 0x95, 0xEF, 0xD2, 0xF0, 0x0F, 0xF0, 0x4C, 0xF0, 0x88, 0xF0, 0xC5, 0xF1, 0x02, 0xF1, 0x3E, 0xF1, 0x7B, 0xF1, 0xB7, 0xF1, 0xF4, 0xF2, 0x30, 0xF2, 0x6C, 0xF2, 0xA8, 0xF2, 0xE4, 0xF3, 0x21, 0xF3, 0x5D, 0xF3, 0x98, 0xF3, 0xD4, 0xF4, 0x10, 0xF4, 0x4C, 0xF4, 0x88, 0xF4, 0xC3, 0xF4, 0xFF, 0xF5, 0x3A, 0xF5, 0x76, 0xF5, 0xB1, 0xF5, 0xEC, 0xF6, 0x28, 0xF6, 0x63, 0xF6, 0x9E, 0xF6, 0xD9, 0xF7, 0x14, 0xF7, 0x4F, 0xF7, 0x8A, 0xF7, 0xC5, 0xF7, 0xFF, 0xF8, 0x3A, 0xF8, 0x75, 0xF8, 0xAF, 0xF8, 0xEA, 0xF9, 0x24, 0xF9, 0x5F, 0xF9, 0x99, 0xF9, 0xD4, 0xFA, 0x0E, 0xFA, 0x48, 0xFA, 0x82, 0xFA, 0xBC, 0xFA, 0xF6, 0xFB, 0x30, 0xFB, 0x6A, 0xFB, 0xA4, 0xFB, 0xDD, 0xFC, 0x17, 0xFC, 0x51, 0xFC, 0x8A, 0xFC, 0xC4, 0xFC, 0xFD, 0xFD, 0x37, 0xFD, 0x70, 0xFD, 0xA9, 0xFD, 0xE3, 0xFE, 0x1C, 0xFE, 0x55, 0xFE, 0x8E, 0xFE, 0xC7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x84, 0x00, 0xC6, 0x01, 0x08, 0x01, 0x49, 0x01, 0x8B, 0x01, 0xCD, 0x02, 0x0F, 0x02, 0x51, 0x02, 0x93, 0x02, 0xD5, 0x03, 0x16, 0x03, 0x58, 0x03, 0x9A, 0x03, 0xDC, 0x04, 0x1E, 0x04, 0x60, 0x04, 0xA1, 0x04, 0xE3, 0x05, 0x25, 0x05, 0x67, 0x05, 0xA9, 0x05, 0xEB, 0x06, 0x2C, 0x06, 0x6E, 0x06, 0xB0, 0x06, 0xF2, 0x07, 0x34, 0x07, 0x76, 0x07, 0xB7, 0x07, 0xF9, 0x08, 0x3B, 0x08, 0x7D, 0x08, 0xBF, 0x09, 0x00, 0x09, 0x42, 0x09, 0x84, 0x09, 0xC6, 0x0A, 0x08, 0x0A, 0x49, 0x0A, 0x8B, 0x0A, 0xCD, 0x0B, 0x0F, 0x0B, 0x51, 0x0B, 0x92, 0x0B, 0xD4, 0x0C, 0x16, 0x0C, 0x58, 0x0C, 0x99, 0x0C, 0xDB, 0x0D, 0x1D, 0x0D, 0x5F, 0x0D, 0xA0, 0x0D, 0xE2, 0x0E, 0x24, 0x0E, 0x66, 0x0E, 0xA7, 0x0E, 0xE9, 0x0F, 0x2B, 0x0F, 0x6D, 0x0F, 0xAE, 0x0F, 0xF0, 0x10, 0x32, 0x10, 0x74, 0x10, 0xB5, 0x10, 0xF7, 0x11, 0x39, 0x11, 0x7A, 0x11, 0xBC, 0x11, 0xFE, 0x12, 0x40, 0x12, 0x81, 0x12, 0xC3, 0x13, 0x05, 0x13, 0x46, 0x13, 0x88, 0x13, 0xCA, 0x14, 0x0B, 0x14, 0x4D, 0x14, 0x8F, 0x14, 0xD0, 0x15, 0x12, 0x15, 0x54, 0x15, 0x95, 0x15, 0xD7, 0x16, 0x18, 0x16, 0x5A, 0x16, 0x9C, 0x16, 0xDD, 0x17, 0x1F, 0x17, 0x60, 0x17, 0xA2, 0x17, 0xE3, 0x18, 0x25, 0x18, 0x67, 0x18, 0xA8, 0x18, 0xEA, 0x19, 0x2B, 0x19, 0x6D, 0x19, 0xAE, 0x19, 0xF0, 0x1A, 0x31, 0x1A, 0x73, 0x1A, 0xB4, 0x1A, 0xF6, 0x1B, 0x37, 0x1B, 0x79, 0x1B, 0xBA, 0x1B, 0xFC, 0x1C, 0x3D, 0x1C, 0x7F, 0x1C, 0xC0, 0x1D, 0x02, 0x1D, 0x43, 0x1D, 0x85, 0x1D, 0xC6, 0x1E, 0x08, 0x1E, 0x49, 0x1E, 0x8B, 0x1E, 0xCC, 0x1F, 0x0D, 0x1F, 0x4F, 0x1F, 0x90, 0x1F, 0xD2, 0x20, 0x13, 0x20, 0x54, 0x20, 0x96, 0x20, 0xD7, 0x21, 0x19, 0x21, 0x5A, 0x21, 0x9B, 0x21, 0xDD, 0x22, 0x1E, 0x22, 0x5F, 0x22, 0xA1, 0x22, 0xE2, 0x23, 0x23, 0x23, 0x64, 0x23, 0xA6, 0x23, 0xE7, 0x24, 0x28, 0x24, 0x69, 0x24, 0xAB, 0x24, 0xEC, 0x25, 0x2D, 0x25, 0x6E, 0x25, 0xAF, 0x25, 0xF1, 0x26, 0x32, 0x26, 0x73, 0x26, 0xB4, 0x26, 0xF6, 0x27, 0x37, 0x27, 0x78, 0x27, 0xBA, 0x27, 0xFB, 0x28, 0x3C, 0x28, 0x7D, 0x28, 0xBF, 0x29, 0x00, 0x29, 0x41, 0x29, 0x83, 0x29, 0xC4, 0x2A, 0x06, 0x2A, 0x47, 0x2A, 0x88, 0x2A, 0xCA, 0x2B, 0x0B, 0x2B, 0x4C, 0x2B, 0x8E, 0x2B, 0xCF, 0x2C, 0x11, 0x2C, 0x52, 0x2C, 0x93, 0x2C, 0xD5, 0x2D, 0x16, 0x2D, 0x58, 0x2D, 0x99, 0x2D, 0xDA, 0x2E, 0x1C, 0x2E, 0x5D, 0x2E, 0x9F, 0x2E, 0xE0, 0x2F, 0x21, 0x2F, 0x63, 0x2F, 0xA4, 0x2F, 0xE5, 0x30, 0x27, 0x30, 0x68, 0x30, 0xA9, 0x30, 0xEA, 0x31, 0x2C, 0x31, 0x6D, 0x31, 0xAE, 0x31, 0xF0, 0x32, 0x31, 0x32, 0x72, 0x32, 0xB3, 0x32, 0xF4, 0x33, 0x36, 0x33, 0x77, 0x33, 0xB8, 0x33, 0xF9, 0x34, 0x3A, 0x34, 0x7B, 0x34, 0xBC, 0x34, 0xFD, 0x35, 0x3E, 0x35, 0x7E, 0x35, 0xBF, 0x36, 0x00, 0x36, 0x41, 0x36, 0x81, 0x36, 0xC2, 0x37, 0x02, 0x37, 0x43, 0x37, 0x83, 0x37, 0xC4, 0x38, 0x04, 0x38, 0x44, 0x38, 0x84, 0x38, 0xC5, 0x39, 0x05, 0x39, 0x45, 0x39, 0x85, 0x39, 0xC5, 0x3A, 0x05, 0x3A, 0x45, 0x3A, 0x85, 0x3A, 0xC5, 0x3B, 0x05, 0x3B, 0x44, 0x3B, 0x84, 0x3B, 0xC4, 0x3C, 0x04, 0x3C, 0x43, 0x3C, 0x83, 0x3C, 0xC3, 0x3D, 0x02, 0x3D, 0x42, 0x3D, 0x81, 0x3D, 0xC1, 0x3E, 0x00, 0x3E, 0x3F, 0x3E, 0x7F, 0x3E, 0xBE, 0x3E, 0xFD, 0x3F, 0x3C, 0x3F, 0x7C, 0x3F, 0xBB, 0x3F, 0xFA, 0x40, 0x39, 0x40, 0x78, 0x40, 0xB7, 0x40, 0xF6, 0x41, 0x35, 0x41, 0x74, 0x41, 0xB3, 0x41, 0xF2, 0x42, 0x31, 0x42, 0x70, 0x42, 0xAF, 0x42, 0xEE, 0x43, 0x2D, 0x43, 0x6C, 0x43, 0xAB, 0x43, 0xEA, 0x44, 0x29, 0x44, 0x68, 0x44, 0xA7, 0x44, 0xE6, 0x45, 0x26, 0x45, 0x65, 0x45, 0xA4, 0x45, 0xE3, 0x46, 0x22, 0x46, 0x61, 0x46, 0xA0, 0x46, 0xDF, 0x47, 0x1E, 0x47, 0x5D, 0x47, 0x9C, 0x47, 0xDB, 0x48, 0x1A, 0x48, 0x59, 0x48, 0x98, 0x48, 0xD7, 0x49, 0x17, 0x49, 0x56, 0x49, 0x95, 0x49, 0xD4, 0x4A, 0x13, 0x4A, 0x52, 0x4A, 0x91, 0x4A, 0xD0, 0x4B, 0x0F, 0x4B, 0x4E, 0x4B, 0x8D, 0x4B, 0xCC, 0x4C, 0x0B, 0x4C, 0x4A, 0x4C, 0x89, 0x4C, 0xC8, 0x4D, 0x06, 0x4D, 0x45, 0x4D, 0x84, 0x4D, 0xC3, 0x4E, 0x02, 0x4E, 0x41, 0x4E, 0x80, 0x4E, 0xBE, 0x4E, 0xFD, 0x4F, 0x3C, 0x4F, 0x7B, 0x4F, 0xBA, 0x4F, 0xF9, 0x50, 0x37, 0x50, 0x76, 0x50, 0xB5, 0x50, 0xF4, 0x51, 0x33, 0x51, 0x71, 0x51, 0xB0, 0x51, 0xEF, 0x52, 0x2E, 0x52, 0x6C, 0x52, 0xAB, 0x52, 0xEA, 0x53, 0x29, 0x53, 0x67, 0x53, 0xA6, 0x53, 0xE5, 0x54, 0x24, 0x54, 0x62, 0x54, 0xA1, 0x54, 0xE0, 0x55, 0x1E, 0x55, 0x5D, 0x55, 0x9C, 0x55, 0xDA, 0x56, 0x19, 0x56, 0x58, 0x56, 0x96, 0x56, 0xD5, 0x57, 0x14, 0x57, 0x52, 0x57, 0x91, 0x57, 0xD0, 0x58, 0x0E, 0x58, 0x4D, 0x58, 0x8B, 0x58, 0xCA, 0x59, 0x09, 0x59, 0x47, 0x59, 0x86, 0x59, 0xC4, 0x5A, 0x03, 0x5A, 0x41, 0x5A, 0x80, 0x5A, 0xBF, 0x5A, 0xFD, 0x5B, 0x3C, 0x5B, 0x7A, 0x5B, 0xB9, 0x5B, 0xF7, 0x5C, 0x36, 0x5C, 0x74, 0x5C, 0xB3, 0x5C, 0xF1, 0x5D, 0x30, 0x5D, 0x6E, 0x5D, 0xAD, 0x5D, 0xEB, 0x5E, 0x2A, 0x5E, 0x68, 0x5E, 0xA7, 0x5E, 0xE5, 0x5F, 0x24, 0x5F, 0x62, 0x5F, 0xA0, 0x5F, 0xDF, 0x60, 0x1D, 0x60, 0x5C, 0x60, 0x9A, 0x60, 0xD8, 0x61, 0x17, 0x61, 0x55, 0x61, 0x93, 0x61, 0xD2, 0x62, 0x10, 0x62, 0x4E, 0x62, 0x8D, 0x62, 0xCB, 0x63, 0x09, 0x63, 0x48, 0x63, 0x86, 0x63, 0xC4, 0x64, 0x02, 0x64, 0x40, 0x64, 0x7F, 0x64, 0xBD, 0x64, 0xFB, 0x65, 0x39, 0x65, 0x77, 0x65, 0xB5, 0x65, 0xF4, 0x66, 0x32, 0x66, 0x70, 0x66, 0xAE, 0x66, 0xEC, 0x67, 0x2A, 0x67, 0x68, 0x67, 0xA6, 0x67, 0xE5, 0x68, 0x23, 0x68, 0x61, 0x68, 0x9F, 0x68, 0xDD, 0x69, 0x1C, 0x69, 0x5A, 0x69, 0x98, 0x69, 0xD6, 0x6A, 0x15, 0x6A, 0x53, 0x6A, 0x91, 0x6A, 0xCF, 0x6B, 0x0E, 0x6B, 0x4C, 0x6B, 0x8A, 0x6B, 0xC9, 0x6C, 0x07, 0x6C, 0x46, 0x6C, 0x84, 0x6C, 0xC2, 0x6D, 0x01, 0x6D, 0x3F, 0x6D, 0x7D, 0x6D, 0xBC, 0x6D, 0xFA, 0x6E, 0x39, 0x6E, 0x77, 0x6E, 0xB6, 0x6E, 0xF4, 0x6F, 0x33, 0x6F, 0x71, 0x6F, 0xB0, 0x6F, 0xEE, 0x70, 0x2D, 0x70, 0x6C, 0x70, 0xAA, 0x70, 0xE9, 0x71, 0x28, 0x71, 0x67, 0x71, 0xA5, 0x71, 0xE4, 0x72, 0x23, 0x72, 0x62, 0x72, 0xA1, 0x72, 0xE0, 0x73, 0x1F, 0x73, 0x5D, 0x73, 0x9C, 0x73, 0xDC, 0x74, 0x1B, 0x74, 0x5A, 0x74, 0x99, 0x74, 0xD8, 0x75, 0x17, 0x75, 0x56, 0x75, 0x96, 0x75, 0xD5, 0x76, 0x14, 0x76, 0x54, 0x76, 0x93, 0x76, 0xD3, 0x77, 0x12, 0x77, 0x52, 0x77, 0x91, 0x77, 0xD1, 0x78, 0x11, 0x78, 0x51, 0x78, 0x90, 0x78, 0xD0, 0x79, 0x10, 0x79, 0x50, 0x79, 0x90, 0x79, 0xD0, 0x7A, 0x10, 0x7A, 0x50, 0x7A, 0x90, 0x7A, 0xD1, 0x7B, 0x11, 0x7B, 0x51, 0x7B, 0x92, 0x7B, 0xD2, 0x7C, 0x12, 0x7C, 0x53, 0x7C, 0x93, 0x7C, 0xD4, 0x7D, 0x15, 0x7D, 0x55, 0x7D, 0x96, 0x7D, 0xD7, 0x7E, 0x18, 0x7E, 0x59, 0x7E, 0x9A, 0x7E, 0xDB, 0x7F, 0x1C, 0x7F, 0x5D, 0x7F, 0x9E, 0x7F, 0xDF, 0x80, 0x20, 0x80, 0x61, 0x80, 0xA2, 0x80, 0xE4, 0x81, 0x25, 0x81, 0x66, 0x81, 0xA7, 0x81, 0xE9, 0x82, 0x2A, 0x82, 0x6B, 0x82, 0xAD, 0x82, 0xEE, 0x83, 0x2F, 0x83, 0x71, 0x83, 0xB2, 0x83, 0xF3, 0x84, 0x35, 0x84, 0x76, 0x84, 0xB8, 0x84, 0xF9, 0x85, 0x3B, 0x85, 0x7C, 0x85, 0xBE, 0x85, 0xFF, 0x86, 0x41, 0x86, 0x83, 0x86, 0xC4, 0x87, 0x06, 0x87, 0x47, 0x87, 0x89, 0x87, 0xCB, 0x88, 0x0C, 0x88, 0x4E, 0x88, 0x90, 0x88, 0xD2, 0x89, 0x13, 0x89, 0x55, 0x89, 0x97, 0x89, 0xD9, 0x8A, 0x1B, 0x8A, 0x5C, 0x8A, 0x9E, 0x8A, 0xE0, 0x8B, 0x22, 0x8B, 0x64, 0x8B, 0xA6, 0x8B, 0xE8, 0x8C, 0x29, 0x8C, 0x6B, 0x8C, 0xAD, 0x8C, 0xEF, 0x8D, 0x31, 0x8D, 0x73, 0x8D, 0xB5, 0x8D, 0xF7, 0x8E, 0x38, 0x8E, 0x7A, 0x8E, 0xBC, 0x8E, 0xFE, 0x8F, 0x40, 0x8F, 0x82, 0x8F, 0xC4, 0x90, 0x06, 0x90, 0x47, 0x90, 0x89, 0x90, 0xCB, 0x91, 0x0D, 0x91, 0x4F, 0x91, 0x91, 0x91, 0xD2, 0x92, 0x14, 0x92, 0x56, 0x92, 0x98, 0x92, 0xD9, 0x93, 0x1B, 0x93, 0x5D, 0x93, 0x9E, 0x93, 0xE0, 0x94, 0x22, 0x94, 0x63, 0x94, 0xA5, 0x94, 0xE6, 0x95, 0x28, 0x95, 0x69, 0x95, 0xAB, 0x95, 0xEC, 0x96, 0x2D, 0x96, 0x6F, 0x96, 0xB0, 0x96, 0xF1, 0x97, 0x33, 0x97, 0x74, 0x97, 0xB5, 0x97, 0xF6, 0x98, 0x37, 0x98, 0x79, 0x98, 0xBA, 0x98, 0xFB, 0x99, 0x3C, 0x99, 0x7D, 0x99, 0xBE, 0x99, 0xFF, 0x9A, 0x40, 0x9A, 0x81, 0x9A, 0xC1, 0x9B, 0x02, 0x9B, 0x43, 0x9B, 0x83, 0x9B, 0xC4, 0x9C, 0x04, 0x9C, 0x45, 0x9C, 0x85, 0x9C, 0xC5, 0x9D, 0x05, 0x9D, 0x45, 0x9D, 0x85, 0x9D, 0xC5, 0x9E, 0x05, 0x9E, 0x45, 0x9E, 0x85, 0x9E, 0xC5, 0x9F, 0x05, 0x9F, 0x44, 0x9F, 0x84, 0x9F, 0xC3, 0xA0, 0x03, 0xA0, 0x42, 0xA0, 0x82, 0xA0, 0xC1, 0xA1, 0x00, 0xA1, 0x3F, 0xA1, 0x7F, 0xA1, 0xBE, 0xA1, 0xFD, 0xA2, 0x3C, 0xA2, 0x7B, 0xA2, 0xB9, 0xA2, 0xF8, 0xA3, 0x37, 0xA3, 0x76, 0xA3, 0xB4, 0xA3, 0xF3, 0xA4, 0x31, 0xA4, 0x70, 0xA4, 0xAE, 0xA4, 0xED, 0xA5, 0x2B, 0xA5, 0x69, 0xA5, 0xA8, 0xA5, 0xE6, 0xA6, 0x24, 0xA6, 0x62, 0xA6, 0xA0, 0xA6, 0xDE, 0xA7, 0x1C, 0xA7, 0x5A, 0xA7, 0x98, 0xA7, 0xD6, 0xA8, 0x13, 0xA8, 0x51, 0xA8, 0x8F, 0xA8, 0xCC, 0xA9, 0x0A, 0xA9, 0x47, 0xA9, 0x85, 0xA9, 0xC2, 0xA9, 0xFF, 0xAA, 0x3C, 0xAA, 0x7A, 0xAA, 0xB7, 0xAA, 0xF4, 0xAB, 0x31, 0xAB, 0x6E, 0xAB, 0xAB, 0xAB, 0xE8, 0xAC, 0x25, 0xAC, 0x62, 0xAC, 0x9F, 0xAC, 0xDC, 0xAD, 0x19, 0xAD, 0x56, 0xAD, 0x93, 0xAD, 0xD0, 0xAE, 0x0D, 0xAE, 0x4A, 0xAE, 0x86, 0xAE, 0xC3, 0xAF, 0x00, 0xAF, 0x3D, 0xAF, 0x7A, 0xAF, 0xB6, 0xAF, 0xF3, 0xB0, 0x30, 0xB0, 0x6D, 0xB0, 0xA9, 0xB0, 0xE6, 0xB1, 0x23, 0xB1, 0x5F, 0xB1, 0x9C, 0xB1, 0xD8, 0xB2, 0x15, 0xB2, 0x52, 0xB2, 0x8E, 0xB2, 0xCB, 0xB3, 0x07, 0xB3, 0x44, 0xB3, 0x80, 0xB3, 0xBC, 0xB3, 0xF9, 0xB4, 0x35, 0xB4, 0x72, 0xB4, 0xAE, 0xB4, 0xEA, 0xB5, 0x27, 0xB5, 0x63, 0xB5, 0x9F, 0xB5, 0xDB, 0xB6, 0x18, 0xB6, 0x54, 0xB6, 0x90, 0xB6, 0xCC, 0xB7, 0x09, 0xB7, 0x45, 0xB7, 0x81, 0xB7, 0xBD, 0xB7, 0xF9, 0xB8, 0x36, 0xB8, 0x72, 0xB8, 0xAE, 0xB8, 0xEA, 0xB9, 0x26, 0xB9, 0x62, 0xB9, 0x9F, 0xB9, 0xDB, 0xBA, 0x17, 0xBA, 0x53, 0xBA, 0x8F, 0xBA, 0xCB, 0xBB, 0x08, 0xBB, 0x44, 0xBB, 0x80, 0xBB, 0xBC, 0xBB, 0xF8, 0xBC, 0x34, 0xBC, 0x70, 0xBC, 0xAC, 0xBC, 0xE9, 0xBD, 0x25, 0xBD, 0x61, 0xBD, 0x9D, 0xBD, 0xD9, 0xBE, 0x15, 0xBE, 0x51, 0xBE, 0x8D, 0xBE, 0xC9, 0xBF, 0x05, 0xBF, 0x41, 0xBF, 0x7D, 0xBF, 0xB9, 0xBF, 0xF5, 0xC0, 0x31, 0xC0, 0x6D, 0xC0, 0xA9, 0xC0, 0xE5, 0xC1, 0x22, 0xC1, 0x5E, 0xC1, 0x9A, 0xC1, 0xD6, 0xC2, 0x12, 0xC2, 0x4F, 0xC2, 0x8B, 0xC2, 0xC7, 0xC3, 0x04, 0xC3, 0x40, 0xC3, 0x7D, 0xC3, 0xB9, 0xC3, 0xF6, 0xC4, 0x32, 0xC4, 0x6F, 0xC4, 0xAB, 0xC4, 0xE8, 0xC5, 0x25, 0xC5, 0x61, 0xC5, 0x9E, 0xC5, 0xDB, 0xC6, 0x18, 0xC6, 0x55, 0xC6, 0x92, 0xC6, 0xCE, 0xC7, 0x0B, 0xC7, 0x48, 0xC7, 0x85, 0xC7, 0xC2, 0xC7, 0xFF, 0xC8, 0x3D, 0xC8, 0x7A, 0xC8, 0xB7, 0xC8, 0xF4, 0xC9, 0x31, 0xC9, 0x6E, 0xC9, 0xAC, 0xC9, 0xE9, 0xCA, 0x26, 0xCA, 0x63, 0xCA, 0xA1, 0xCA, 0xDE, 0xCB, 0x1C, 0xCB, 0x59, 0xCB, 0x96, 0xCB, 0xD4, 0xCC, 0x11, 0xCC, 0x4F, 0xCC, 0x8D, 0xCC, 0xCA, 0xCD, 0x08, 0xCD, 0x45, 0xCD, 0x83, 0xCD, 0xC1, 0xCD, 0xFF, 0xCE, 0x3D, 0xCE, 0x7B, 0xCE, 0xB9, 0xCE, 0xF7, 0xCF, 0x35, 0xCF, 0x73, 0xCF, 0xB1, 0xCF, 0xF0, 0xD0, 0x2E, 0xD0, 0x6C, 0xD0, 0xAB, 0xD0, 0xE9, 0xD1, 0x28, 0xD1, 0x67, 0xD1, 0xA5, 0xD1, 0xE4, 0xD2, 0x23, 0xD2, 0x62, 0xD2, 0xA0, 0xD2, 0xDF, 0xD3, 0x1E, 0xD3, 0x5D, 0xD3, 0x9D, 0xD3, 0xDC, 0xD4, 0x1B, 0xD4, 0x5A, 0xD4, 0x9A, 0xD4, 0xD9, 0xD5, 0x19, 0xD5, 0x58, 0xD5, 0x98, 0xD5, 0xD8, 0xD6, 0x17, 0xD6, 0x57, 0xD6, 0x97, 0xD6, 0xD7, 0xD7, 0x17, 0xD7, 0x57, 0xD7, 0x97, 0xD7, 0xD7, 0xD8, 0x17, 0xD8, 0x57, 0xD8, 0x97, 0xD8, 0xD8, 0xD9, 0x18, 0xD9, 0x58, 0xD9, 0x99, 0xD9, 0xD9, 0xDA, 0x1A, 0xDA, 0x5A, 0xDA, 0x9B, 0xDA, 0xDC, 0xDB, 0x1C, 0xDB, 0x5D, 0xDB, 0x9E, 0xDB, 0xDF, 0xDC, 0x20, 0xDC, 0x61, 0xDC, 0xA1, 0xDC, 0xE2, 0xDD, 0x23, 0xDD, 0x64, 0xDD, 0xA5, 0xDD, 0xE7, 0xDE, 0x28, 0xDE, 0x69, 0xDE, 0xAA, 0xDE, 0xEB, 0xDF, 0x2C, 0xDF, 0x6E, 0xDF, 0xAF, 0xDF, 0xF0, 0xE0, 0x32, 0xE0, 0x73, 0xE0, 0xB4, 0xE0, 0xF6, 0xE1, 0x37, 0xE1, 0x79, 0xE1, 0xBA, 0xE1, 0xFC, 0xE2, 0x3E, 0xE2, 0x7F, 0xE2, 0xC1, 0xE3, 0x03, 0xE3, 0x44, 0xE3, 0x86, 0xE3, 0xC8, 0xE4, 0x0A, 0xE4, 0x4C, 0xE4, 0x8E, 0xE4, 0xD0, 0xE5, 0x12, 0xE5, 0x54, 0xE5, 0x96, 0xE5, 0xD8, 0xE6, 0x1A, 0xE6, 0x5C, 0xE6, 0x9E, 0xE6, 0xE1, 0xE7, 0x23, 0xE7, 0x66, 0xE7, 0xA8, 0xE7, 0xEA, 0xE8, 0x2D, 0xE8, 0x70, 0xE8, 0xB2, 0xE8, 0xF5, 0xE9, 0x38, 0xE9, 0x7A, 0xE9, 0xBD, 0xEA, 0x00, 0xEA, 0x43, 0xEA, 0x86, 0xEA, 0xC9, 0xEB, 0x0C, 0xEB, 0x4F, 0xEB, 0x92, 0xEB, 0xD5, 0xEC, 0x18, 0xEC, 0x5B, 0xEC, 0x9F, 0xEC, 0xE2, 0xED, 0x25, 0xED, 0x69, 0xED, 0xAC, 0xED, 0xF0, 0xEE, 0x33, 0xEE, 0x77, 0xEE, 0xBA, 0xEE, 0xFE, 0xEF, 0x42, 0xEF, 0x85, 0xEF, 0xC9, 0xF0, 0x0D, 0xF0, 0x51, 0xF0, 0x95, 0xF0, 0xD9, 0xF1, 0x1D, 0xF1, 0x61, 0xF1, 0xA5, 0xF1, 0xE9, 0xF2, 0x2D, 0xF2, 0x71, 0xF2, 0xB5, 0xF2, 0xFA, 0xF3, 0x3E, 0xF3, 0x83, 0xF3, 0xC7, 0xF4, 0x0B, 0xF4, 0x50, 0xF4, 0x95, 0xF4, 0xD9, 0xF5, 0x1E, 0xF5, 0x63, 0xF5, 0xA7, 0xF5, 0xEC, 0xF6, 0x31, 0xF6, 0x76, 0xF6, 0xBB, 0xF7, 0x00, 0xF7, 0x45, 0xF7, 0x8A, 0xF7, 0xCF, 0xF8, 0x14, 0xF8, 0x5A, 0xF8, 0x9F, 0xF8, 0xE4, 0xF9, 0x2A, 0xF9, 0x6F, 0xF9, 0xB4, 0xF9, 0xFA, 0xFA, 0x3F, 0xFA, 0x85, 0xFA, 0xCB, 0xFB, 0x10, 0xFB, 0x56, 0xFB, 0x9C, 0xFB, 0xE2, 0xFC, 0x28, 0xFC, 0x6E, 0xFC, 0xB4, 0xFC, 0xFA, 0xFD, 0x40, 0xFD, 0x86, 0xFD, 0xCC, 0xFE, 0x12, 0xFE, 0x58, 0xFE, 0x9F, 0xFE, 0xE5, 0xFF, 0x2C, 0xFF, 0x72, 0xFF, 0xB8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x44, 0x00, 0x87, 0x00, 0xCB, 0x01, 0x0F, 0x01, 0x52, 0x01, 0x96, 0x01, 0xDA, 0x02, 0x1D, 0x02, 0x61, 0x02, 0xA5, 0x02, 0xE8, 0x03, 0x2C, 0x03, 0x6F, 0x03, 0xB3, 0x03, 0xF7, 0x04, 0x3A, 0x04, 0x7E, 0x04, 0xC1, 0x05, 0x05, 0x05, 0x48, 0x05, 0x8C, 0x05, 0xCF, 0x06, 0x13, 0x06, 0x56, 0x06, 0x9A, 0x06, 0xDD, 0x07, 0x21, 0x07, 0x64, 0x07, 0xA7, 0x07, 0xEB, 0x08, 0x2E, 0x08, 0x72, 0x08, 0xB5, 0x08, 0xF8, 0x09, 0x3C, 0x09, 0x7F, 0x09, 0xC2, 0x0A, 0x06, 0x0A, 0x49, 0x0A, 0x8C, 0x0A, 0xD0, 0x0B, 0x13, 0x0B, 0x56, 0x0B, 0x99, 0x0B, 0xDD, 0x0C, 0x20, 0x0C, 0x63, 0x0C, 0xA6, 0x0C, 0xE9, 0x0D, 0x2D, 0x0D, 0x70, 0x0D, 0xB3, 0x0D, 0xF6, 0x0E, 0x39, 0x0E, 0x7C, 0x0E, 0xC0, 0x0F, 0x03, 0x0F, 0x46, 0x0F, 0x89, 0x0F, 0xCC, 0x10, 0x0F, 0x10, 0x52, 0x10, 0x95, 0x10, 0xD8, 0x11, 0x1B, 0x11, 0x5E, 0x11, 0xA1, 0x11, 0xE4, 0x12, 0x27, 0x12, 0x6A, 0x12, 0xAD, 0x12, 0xF0, 0x13, 0x33, 0x13, 0x76, 0x13, 0xB9, 0x13, 0xFB, 0x14, 0x3E, 0x14, 0x81, 0x14, 0xC4, 0x15, 0x07, 0x15, 0x4A, 0x15, 0x8D, 0x15, 0xCF, 0x16, 0x12, 0x16, 0x55, 0x16, 0x98, 0x16, 0xDA, 0x17, 0x1D, 0x17, 0x60, 0x17, 0xA2, 0x17, 0xE5, 0x18, 0x28, 0x18, 0x6A, 0x18, 0xAD, 0x18, 0xEF, 0x19, 0x32, 0x19, 0x75, 0x19, 0xB7, 0x19, 0xFA, 0x1A, 0x3C, 0x1A, 0x7F, 0x1A, 0xC1, 0x1B, 0x04, 0x1B, 0x46, 0x1B, 0x88, 0x1B, 0xCB, 0x1C, 0x0D, 0x1C, 0x50, 0x1C, 0x92, 0x1C, 0xD4, 0x1D, 0x17, 0x1D, 0x59, 0x1D, 0x9B, 0x1D, 0xDD, 0x1E, 0x20, 0x1E, 0x62, 0x1E, 0xA4, 0x1E, 0xE6, 0x1F, 0x28, 0x1F, 0x6B, 0x1F, 0xAD, 0x1F, 0xEF, 0x20, 0x31, 0x20, 0x73, 0x20, 0xB5, 0x20, 0xF7, 0x21, 0x39, 0x21, 0x7B, 0x21, 0xBD, 0x21, 0xFF, 0x22, 0x41, 0x22, 0x83, 0x22, 0xC5, 0x23, 0x07, 0x23, 0x49, 0x23, 0x8B, 0x23, 0xCD, 0x24, 0x0F, 0x24, 0x51, 0x24, 0x93, 0x24, 0xD5, 0x25, 0x17, 0x25, 0x59, 0x25, 0x9B, 0x25, 0xDD, 0x26, 0x1F, 0x26, 0x61, 0x26, 0xA3, 0x26, 0xE5, 0x27, 0x27, 0x27, 0x69, 0x27, 0xAA, 0x27, 0xEC, 0x28, 0x2E, 0x28, 0x70, 0x28, 0xB2, 0x28, 0xF4, 0x29, 0x36, 0x29, 0x78, 0x29, 0xBA, 0x29, 0xFC, 0x2A, 0x3E, 0x2A, 0x7F, 0x2A, 0xC1, 0x2B, 0x03, 0x2B, 0x45, 0x2B, 0x87, 0x2B, 0xC9, 0x2C, 0x0A, 0x2C, 0x4C, 0x2C, 0x8E, 0x2C, 0xD0, 0x2D, 0x11, 0x2D, 0x53, 0x2D, 0x95, 0x2D, 0xD6, 0x2E, 0x18, 0x2E, 0x59, 0x2E, 0x9B, 0x2E, 0xDD, 0x2F, 0x1E, 0x2F, 0x60, 0x2F, 0xA1, 0x2F, 0xE2, 0x30, 0x24, 0x30, 0x65, 0x30, 0xA7, 0x30, 0xE8, 0x31, 0x29, 0x31, 0x6A, 0x31, 0xAC, 0x31, 0xED, 0x32, 0x2E, 0x32, 0x6F, 0x32, 0xB0, 0x32, 0xF1, 0x33, 0x32, 0x33, 0x73, 0x33, 0xB4, 0x33, 0xF5, 0x34, 0x36, 0x34, 0x77, 0x34, 0xB8, 0x34, 0xF9, 0x35, 0x3A, 0x35, 0x7B, 0x35, 0xBC, 0x35, 0xFD, 0x36, 0x3D, 0x36, 0x7E, 0x36, 0xBF, 0x37, 0x00, 0x37, 0x40, 0x37, 0x81, 0x37, 0xC2, 0x38, 0x02, 0x38, 0x43, 0x38, 0x83, 0x38, 0xC4, 0x39, 0x05, 0x39, 0x45, 0x39, 0x86, 0x39, 0xC6, 0x3A, 0x07, 0x3A, 0x47, 0x3A, 0x88, 0x3A, 0xC8, 0x3B, 0x09, 0x3B, 0x49, 0x3B, 0x8A, 0x3B, 0xCA, 0x3C, 0x0A, 0x3C, 0x4B, 0x3C, 0x8B, 0x3C, 0xCC, 0x3D, 0x0C, 0x3D, 0x4C, 0x3D, 0x8D, 0x3D, 0xCD, 0x3E, 0x0D, 0x3E, 0x4D, 0x3E, 0x8E, 0x3E, 0xCE, 0x3F, 0x0E, 0x3F, 0x4E, 0x3F, 0x8F, 0x3F, 0xCF, 0x40, 0x0F, 0x40, 0x4F, 0x40, 0x8F, 0x40, 0xCF, 0x41, 0x0F, 0x41, 0x4F, 0x41, 0x8F, 0x41, 0xCF, 0x42, 0x0F, 0x42, 0x4F, 0x42, 0x8F, 0x42, 0xCF, 0x43, 0x0F, 0x43, 0x4E, 0x43, 0x8E, 0x43, 0xCE, 0x44, 0x0D, 0x44, 0x4D, 0x44, 0x8C, 0x44, 0xCC, 0x45, 0x0B, 0x45, 0x4B, 0x45, 0x8A, 0x45, 0xCA, 0x46, 0x09, 0x46, 0x48, 0x46, 0x87, 0x46, 0xC7, 0x47, 0x06, 0x47, 0x45, 0x47, 0x84, 0x47, 0xC3, 0x48, 0x02, 0x48, 0x41, 0x48, 0x80, 0x48, 0xBF, 0x48, 0xFE, 0x49, 0x3D, 0x49, 0x7C, 0x49, 0xBB, 0x49, 0xF9, 0x4A, 0x38, 0x4A, 0x77, 0x4A, 0xB5, 0x4A, 0xF4, 0x4B, 0x32, 0x4B, 0x71, 0x4B, 0xAF, 0x4B, 0xEE, 0x4C, 0x2C, 0x4C, 0x6A, 0x4C, 0xA9, 0x4C, 0xE7, 0x4D, 0x25, 0x4D, 0x63, 0x4D, 0xA1, 0x4D, 0xDF, 0x4E, 0x1D, 0x4E, 0x5B, 0x4E, 0x99, 0x4E, 0xD7, 0x4F, 0x15, 0x4F, 0x53, 0x4F, 0x90, 0x4F, 0xCE, 0x50, 0x0C, 0x50, 0x49, 0x50, 0x87, 0x50, 0xC5, 0x51, 0x02, 0x51, 0x40, 0x51, 0x7D, 0x51, 0xBA, 0x51, 0xF8, 0x52, 0x35, 0x52, 0x72, 0x52, 0xAF, 0x52, 0xED, 0x53, 0x2A, 0x53, 0x67, 0x53, 0xA4, 0x53, 0xE1, 0x54, 0x1E, 0x54, 0x5B, 0x54, 0x97, 0x54, 0xD4, 0x55, 0x11, 0x55, 0x4E, 0x55, 0x8A, 0x55, 0xC7, 0x56, 0x04, 0x56, 0x41, 0x56, 0x7D, 0x56, 0xBA, 0x56, 0xF7, 0x57, 0x34, 0x57, 0x70, 0x57, 0xAD, 0x57, 0xEA, 0x58, 0x27, 0x58, 0x63, 0x58, 0xA0, 0x58, 0xDD, 0x59, 0x1A, 0x59, 0x57, 0x59, 0x94, 0x59, 0xD0, 0x5A, 0x0D, 0x5A, 0x4A, 0x5A, 0x87, 0x5A, 0xC4, 0x5B, 0x01, 0x5B, 0x3E, 0x5B, 0x7B, 0x5B, 0xB7, 0x5B, 0xF4, 0x5C, 0x31, 0x5C, 0x6E, 0x5C, 0xAB, 0x5C, 0xE8, 0x5D, 0x25, 0x5D, 0x62, 0x5D, 0x9F, 0x5D, 0xDC, 0x5E, 0x19, 0x5E, 0x56, 0x5E, 0x94, 0x5E, 0xD1, 0x5F, 0x0E, 0x5F, 0x4B, 0x5F, 0x88, 0x5F, 0xC5, 0x60, 0x02, 0x60, 0x3F, 0x60, 0x7D, 0x60, 0xBA, 0x60, 0xF7, 0x61, 0x34, 0x61, 0x71, 0x61, 0xAF, 0x61, 0xEC, 0x62, 0x29, 0x62, 0x67, 0x62, 0xA4, 0x62, 0xE2, 0x63, 0x1F, 0x63, 0x5D, 0x63, 0x9A, 0x63, 0xD8, 0x64, 0x15, 0x64, 0x53, 0x64, 0x90, 0x64, 0xCE, 0x65, 0x0B, 0x65, 0x49, 0x65, 0x87, 0x65, 0xC4, 0x66, 0x02, 0x66, 0x40, 0x66, 0x7D, 0x66, 0xBB, 0x66, 0xF9, 0x67, 0x37, 0x67, 0x75, 0x67, 0xB2, 0x67, 0xF0, 0x68, 0x2E, 0x68, 0x6C, 0x68, 0xAA, 0x68, 0xE8, 0x69, 0x26, 0x69, 0x63, 0x69, 0xA1, 0x69, 0xDF, 0x6A, 0x1D, 0x6A, 0x5B, 0x6A, 0x99, 0x6A, 0xD7, 0x6B, 0x15, 0x6B, 0x53, 0x6B, 0x91, 0x6B, 0xCF, 0x6C, 0x0D, 0x6C, 0x4C, 0x6C, 0x8A, 0x6C, 0xC8, 0x6D, 0x06, 0x6D, 0x44, 0x6D, 0x82, 0x6D, 0xC0, 0x6D, 0xFE, 0x6E, 0x3C, 0x6E, 0x7B, 0x6E, 0xB9, 0x6E, 0xF7, 0x6F, 0x35, 0x6F, 0x73, 0x6F, 0xB1, 0x6F, 0xF0, 0x70, 0x2E, 0x70, 0x6C, 0x70, 0xAA, 0x70, 0xE9, 0x71, 0x27, 0x71, 0x65, 0x71, 0xA4, 0x71, 0xE2, 0x72, 0x20, 0x72, 0x5E, 0x72, 0x9D, 0x72, 0xDB, 0x73, 0x1A, 0x73, 0x58, 0x73, 0x96, 0x73, 0xD5, 0x74, 0x13, 0x74, 0x52, 0x74, 0x90, 0x74, 0xCE, 0x75, 0x0D, 0x75, 0x4B, 0x75, 0x8A, 0x75, 0xC9, 0x76, 0x07, 0x76, 0x46, 0x76, 0x84, 0x76, 0xC3, 0x77, 0x02, 0x77, 0x40, 0x77, 0x7F, 0x77, 0xBE, 0x77, 0xFC, 0x78, 0x3B, 0x78, 0x7A, 0x78, 0xB9, 0x78, 0xF7, 0x79, 0x36, 0x79, 0x75, 0x79, 0xB4, 0x79, 0xF3, 0x7A, 0x32, 0x7A, 0x71, 0x7A, 0xB0, 0x7A, 0xEF, 0x7B, 0x2E, 0x7B, 0x6D, 0x7B, 0xAC, 0x7B, 0xEB, 0x7C, 0x2A, 0x7C, 0x69, 0x7C, 0xA8, 0x7C, 0xE8, 0x7D, 0x27, 0x7D, 0x66, 0x7D, 0xA5, 0x7D, 0xE5, 0x7E, 0x24, 0x7E, 0x63, 0x7E, 0xA3, 0x7E, 0xE2, 0x7F, 0x21, 0x7F, 0x61, 0x7F, 0xA0, 0x7F, 0xE0, 0x80, 0x1F, 0x80, 0x5F, 0x80, 0x9E, 0x80, 0xDE, 0x81, 0x1E, 0x81, 0x5D, 0x81, 0x9D, 0x81, 0xDC, 0x82, 0x1C, 0x82, 0x5C, 0x82, 0x9C, 0x82, 0xDB, 0x83, 0x1B, 0x83, 0x5B, 0x83, 0x9A, 0x83, 0xDA, 0x84, 0x1A, 0x84, 0x5A, 0x84, 0x9A, 0x84, 0xDA, 0x85, 0x19, 0x85, 0x59, 0x85, 0x99, 0x85, 0xD9, 0x86, 0x19, 0x86, 0x59, 0x86, 0x99, 0x86, 0xD9, 0x87, 0x19, 0x87, 0x59, 0x87, 0x99, 0x87, 0xD9, 0x88, 0x19, 0x88, 0x59, 0x88, 0x9A, 0x88, 0xDA, 0x89, 0x1A, 0x89, 0x5A, 0x89, 0x9A, 0x89, 0xDA, 0x8A, 0x1B, 0x8A, 0x5B, 0x8A, 0x9B, 0x8A, 0xDB, 0x8B, 0x1B, 0x8B, 0x5C, 0x8B, 0x9C, 0x8B, 0xDC, 0x8C, 0x1D, 0x8C, 0x5D, 0x8C, 0x9D, 0x8C, 0xDD, 0x8D, 0x1E, 0x8D, 0x5E, 0x8D, 0x9E, 0x8D, 0xDF, 0x8E, 0x1F, 0x8E, 0x5F, 0x8E, 0xA0, 0x8E, 0xE0, 0x8F, 0x21, 0x8F, 0x61, 0x8F, 0xA1, 0x8F, 0xE2, 0x90, 0x22, 0x90, 0x62, 0x90, 0xA3, 0x90, 0xE3, 0x91, 0x24, 0x91, 0x64, 0x91, 0xA4, 0x91, 0xE5, 0x92, 0x25, 0x92, 0x65, 0x92, 0xA6, 0x92, 0xE6, 0x93, 0x26, 0x93, 0x67, 0x93, 0xA7, 0x93, 0xE7, 0x94, 0x28, 0x94, 0x68, 0x94, 0xA8, 0x94, 0xE9, 0x95, 0x29, 0x95, 0x69, 0x95, 0xA9, 0x95, 0xEA, 0x96, 0x2A, 0x96, 0x6A, 0x96, 0xAA, 0x96, 0xEA, 0x97, 0x2B, 0x97, 0x6B, 0x97, 0xAB, 0x97, 0xEB, 0x98, 0x2B, 0x98, 0x6B, 0x98, 0xAB, 0x98, 0xEB, 0x99, 0x2B, 0x99, 0x6B, 0x99, 0xAB, 0x99, 0xEB, 0x9A, 0x2B, 0x9A, 0x6B, 0x9A, 0xAB, 0x9A, 0xEB, 0x9B, 0x2B, 0x9B, 0x6B, 0x9B, 0xAB, 0x9B, 0xEB, 0x9C, 0x2B, 0x9C, 0x6B, 0x9C, 0xAB, 0x9C, 0xEB, 0x9D, 0x2B, 0x9D, 0x6B, 0x9D, 0xAA, 0x9D, 0xEA, 0x9E, 0x2A, 0x9E, 0x6A, 0x9E, 0xAA, 0x9E, 0xEA, 0x9F, 0x2A, 0x9F, 0x6A, 0x9F, 0xA9, 0x9F, 0xE9, 0xA0, 0x29, 0xA0, 0x69, 0xA0, 0xA9, 0xA0, 0xE9, 0xA1, 0x29, 0xA1, 0x68, 0xA1, 0xA8, 0xA1, 0xE8, 0xA2, 0x28, 0xA2, 0x68, 0xA2, 0xA8, 0xA2, 0xE8, 0xA3, 0x28, 0xA3, 0x68, 0xA3, 0xA8, 0xA3, 0xE8, 0xA4, 0x28, 0xA4, 0x68, 0xA4, 0xA8, 0xA4, 0xE8, 0xA5, 0x28, 0xA5, 0x68, 0xA5, 0xA8, 0xA5, 0xE8, 0xA6, 0x28, 0xA6, 0x69, 0xA6, 0xA9, 0xA6, 0xE9, 0xA7, 0x29, 0xA7, 0x69, 0xA7, 0xAA, 0xA7, 0xEA, 0xA8, 0x2A, 0xA8, 0x6A, 0xA8, 0xAB, 0xA8, 0xEB, 0xA9, 0x2B, 0xA9, 0x6B, 0xA9, 0xAC, 0xA9, 0xEC, 0xAA, 0x2C, 0xAA, 0x6D, 0xAA, 0xAD, 0xAA, 0xEE, 0xAB, 0x2E, 0xAB, 0x6E, 0xAB, 0xAF, 0xAB, 0xEF, 0xAC, 0x30, 0xAC, 0x70, 0xAC, 0xB1, 0xAC, 0xF1, 0xAD, 0x32, 0xAD, 0x73, 0xAD, 0xB3, 0xAD, 0xF4, 0xAE, 0x35, 0xAE, 0x75, 0xAE, 0xB6, 0xAE, 0xF7, 0xAF, 0x37, 0xAF, 0x78, 0xAF, 0xB9, 0xAF, 0xFA, 0xB0, 0x3B, 0xB0, 0x7B, 0xB0, 0xBC, 0xB0, 0xFD, 0xB1, 0x3E, 0xB1, 0x7F, 0xB1, 0xC0, 0xB2, 0x01, 0xB2, 0x42, 0xB2, 0x83, 0xB2, 0xC4, 0xB3, 0x05, 0xB3, 0x46, 0xB3, 0x87, 0xB3, 0xC8, 0xB4, 0x09, 0xB4, 0x4A, 0xB4, 0x8B, 0xB4, 0xCC, 0xB5, 0x0D, 0xB5, 0x4F, 0xB5, 0x90, 0xB5, 0xD1, 0xB6, 0x12, 0xB6, 0x53, 0xB6, 0x94, 0xB6, 0xD6, 0xB7, 0x17, 0xB7, 0x58, 0xB7, 0x9A, 0xB7, 0xDB, 0xB8, 0x1C, 0xB8, 0x5E, 0xB8, 0x9F, 0xB8, 0xE0, 0xB9, 0x22, 0xB9, 0x63, 0xB9, 0xA5, 0xB9, 0xE6, 0xBA, 0x28, 0xBA, 0x69, 0xBA, 0xAB, 0xBA, 0xEC, 0xBB, 0x2E, 0xBB, 0x6F, 0xBB, 0xB1, 0xBB, 0xF2, 0xBC, 0x34, 0xBC, 0x76, 0xBC, 0xB7, 0xBC, 0xF9, 0xBD, 0x3B, 0xBD, 0x7C, 0xBD, 0xBE, 0xBE, 0x00, 0xBE, 0x42, 0xBE, 0x83, 0xBE, 0xC5, 0xBF, 0x07, 0xBF, 0x49, 0xBF, 0x8B, 0xBF, 0xCD, 0xC0, 0x0F, 0xC0, 0x50, 0xC0, 0x92, 0xC0, 0xD4, 0xC1, 0x16, 0xC1, 0x58, 0xC1, 0x9A, 0xC1, 0xDC, 0xC2, 0x1E, 0xC2, 0x5F, 0xC2, 0xA1, 0xC2, 0xE3, 0xC3, 0x25, 0xC3, 0x67, 0xC3, 0xA9, 0xC3, 0xEA, 0xC4, 0x2C, 0xC4, 0x6E, 0xC4, 0xB0, 0xC4, 0xF2, 0xC5, 0x33, 0xC5, 0x75, 0xC5, 0xB7, 0xC5, 0xF9, 0xC6, 0x3B, 0xC6, 0x7C, 0xC6, 0xBE, 0xC7, 0x00, 0xC7, 0x42, 0xC7, 0x83, 0xC7, 0xC5, 0xC8, 0x07, 0xC8, 0x49, 0xC8, 0x8A, 0xC8, 0xCC, 0xC9, 0x0E, 0xC9, 0x4F, 0xC9, 0x91, 0xC9, 0xD3, 0xCA, 0x15, 0xCA, 0x56, 0xCA, 0x98, 0xCA, 0xDA, 0xCB, 0x1B, 0xCB, 0x5D, 0xCB, 0x9F, 0xCB, 0xE0, 0xCC, 0x22, 0xCC, 0x64, 0xCC, 0xA5, 0xCC, 0xE7, 0xCD, 0x28, 0xCD, 0x6A, 0xCD, 0xAC, 0xCD, 0xED, 0xCE, 0x2F, 0xCE, 0x70, 0xCE, 0xB2, 0xCE, 0xF3, 0xCF, 0x35, 0xCF, 0x77, 0xCF, 0xB8, 0xCF, 0xFA, 0xD0, 0x3B, 0xD0, 0x7C, 0xD0, 0xBE, 0xD0, 0xFF, 0xD1, 0x41, 0xD1, 0x82, 0xD1, 0xC4, 0xD2, 0x05, 0xD2, 0x46, 0xD2, 0x88, 0xD2, 0xC9, 0xD3, 0x0B, 0xD3, 0x4C, 0xD3, 0x8D, 0xD3, 0xCF, 0xD4, 0x10, 0xD4, 0x51, 0xD4, 0x93, 0xD4, 0xD4, 0xD5, 0x15, 0xD5, 0x56, 0xD5, 0x98, 0xD5, 0xD9, 0xD6, 0x1A, 0xD6, 0x5B, 0xD6, 0x9C, 0xD6, 0xDD, 0xD7, 0x1F, 0xD7, 0x60, 0xD7, 0xA1, 0xD7, 0xE2, 0xD8, 0x23, 0xD8, 0x64, 0xD8, 0xA4, 0xD8, 0xE5, 0xD9, 0x26, 0xD9, 0x67, 0xD9, 0xA8, 0xD9, 0xE8, 0xDA, 0x29, 0xDA, 0x6A, 0xDA, 0xAA, 0xDA, 0xEB, 0xDB, 0x2C, 0xDB, 0x6C, 0xDB, 0xAD, 0xDB, 0xED, 0xDC, 0x2E, 0xDC, 0x6E, 0xDC, 0xAE, 0xDC, 0xEF, 0xDD, 0x2F, 0xDD, 0x6F, 0xDD, 0xAF, 0xDD, 0xEF, 0xDE, 0x2F, 0xDE, 0x6F, 0xDE, 0xAF, 0xDE, 0xEF, 0xDF, 0x2F, 0xDF, 0x6F, 0xDF, 0xAF, 0xDF, 0xEF, 0xE0, 0x2F, 0xE0, 0x6E, 0xE0, 0xAE, 0xE0, 0xEE, 0xE1, 0x2D, 0xE1, 0x6D, 0xE1, 0xAD, 0xE1, 0xEC, 0xE2, 0x2C, 0xE2, 0x6B, 0xE2, 0xAB, 0xE2, 0xEA, 0xE3, 0x2A, 0xE3, 0x69, 0xE3, 0xA8, 0xE3, 0xE8, 0xE4, 0x27, 0xE4, 0x66, 0xE4, 0xA6, 0xE4, 0xE5, 0xE5, 0x24, 0xE5, 0x63, 0xE5, 0xA3, 0xE5, 0xE2, 0xE6, 0x21, 0xE6, 0x60, 0xE6, 0x9F, 0xE6, 0xDE, 0xE7, 0x1D, 0xE7, 0x5C, 0xE7, 0x9B, 0xE7, 0xDA, 0xE8, 0x19, 0xE8, 0x58, 0xE8, 0x97, 0xE8, 0xD6, 0xE9, 0x15, 0xE9, 0x54, 0xE9, 0x93, 0xE9, 0xD2, 0xEA, 0x10, 0xEA, 0x4F, 0xEA, 0x8E, 0xEA, 0xCD, 0xEB, 0x0B, 0xEB, 0x4A, 0xEB, 0x89, 0xEB, 0xC7, 0xEC, 0x06, 0xEC, 0x44, 0xEC, 0x83, 0xEC, 0xC2, 0xED, 0x00, 0xED, 0x3E, 0xED, 0x7D, 0xED, 0xBB, 0xED, 0xFA, 0xEE, 0x38, 0xEE, 0x76, 0xEE, 0xB5, 0xEE, 0xF3, 0xEF, 0x31, 0xEF, 0x70, 0xEF, 0xAE, 0xEF, 0xEC, 0xF0, 0x2A, 0xF0, 0x68, 0xF0, 0xA6, 0xF0, 0xE5, 0xF1, 0x23, 0xF1, 0x61, 0xF1, 0x9F, 0xF1, 0xDD, 0xF2, 0x1B, 0xF2, 0x59, 0xF2, 0x97, 0xF2, 0xD5, 0xF3, 0x12, 0xF3, 0x50, 0xF3, 0x8E, 0xF3, 0xCC, 0xF4, 0x0A, 0xF4, 0x48, 0xF4, 0x85, 0xF4, 0xC3, 0xF5, 0x01, 0xF5, 0x3F, 0xF5, 0x7C, 0xF5, 0xBA, 0xF5, 0xF7, 0xF6, 0x35, 0xF6, 0x73, 0xF6, 0xB0, 0xF6, 0xEE, 0xF7, 0x2B, 0xF7, 0x69, 0xF7, 0xA6, 0xF7, 0xE4, 0xF8, 0x21, 0xF8, 0x5E, 0xF8, 0x9C, 0xF8, 0xD9, 0xF9, 0x17, 0xF9, 0x54, 0xF9, 0x91, 0xF9, 0xCE, 0xFA, 0x0C, 0xFA, 0x49, 0xFA, 0x86, 0xFA, 0xC3, 0xFB, 0x00, 0xFB, 0x3D, 0xFB, 0x7A, 0xFB, 0xB8, 0xFB, 0xF5, 0xFC, 0x32, 0xFC, 0x6F, 0xFC, 0xAC, 0xFC, 0xE9, 0xFD, 0x26, 0xFD, 0x62, 0xFD, 0x9F, 0xFD, 0xDC, 0xFE, 0x19, 0xFE, 0x56, 0xFE, 0x93, 0xFE, 0xCF, 0xFF, 0x0C, 0xFF, 0x49, 0xFF, 0x86, 0xFF, 0xC2, 0xFF, 0xFF, 0x00, 0x00, 0x6D, 0x66, 0x74, 0x32, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x81, 0x00, 0xC1, 0x01, 0x01, 0x01, 0x42, 0x01, 0x82, 0x01, 0xC2, 0x02, 0x02, 0x02, 0x43, 0x02, 0x83, 0x02, 0xC3, 0x03, 0x04, 0x03, 0x44, 0x03, 0x84, 0x03, 0xC5, 0x04, 0x05, 0x04, 0x45, 0x04, 0x86, 0x04, 0xC6, 0x05, 0x06, 0x05, 0x47, 0x05, 0x87, 0x05, 0xC7, 0x06, 0x07, 0x06, 0x48, 0x06, 0x88, 0x06, 0xC8, 0x07, 0x09, 0x07, 0x49, 0x07, 0x89, 0x07, 0xCA, 0x08, 0x0A, 0x08, 0x4A, 0x08, 0x8B, 0x08, 0xCB, 0x09, 0x0B, 0x09, 0x4C, 0x09, 0x8C, 0x09, 0xCC, 0x0A, 0x0C, 0x0A, 0x4D, 0x0A, 0x8D, 0x0A, 0xCD, 0x0B, 0x0E, 0x0B, 0x4E, 0x0B, 0x8E, 0x0B, 0xCF, 0x0C, 0x0F, 0x0C, 0x4F, 0x0C, 0x90, 0x0C, 0xD0, 0x0D, 0x10, 0x0D, 0x51, 0x0D, 0x91, 0x0D, 0xD1, 0x0E, 0x11, 0x0E, 0x52, 0x0E, 0x92, 0x0E, 0xD2, 0x0F, 0x13, 0x0F, 0x53, 0x0F, 0x93, 0x0F, 0xD4, 0x10, 0x14, 0x10, 0x54, 0x10, 0x95, 0x10, 0xD5, 0x11, 0x15, 0x11, 0x56, 0x11, 0x96, 0x11, 0xD6, 0x12, 0x16, 0x12, 0x57, 0x12, 0x97, 0x12, 0xD7, 0x13, 0x18, 0x13, 0x58, 0x13, 0x98, 0x13, 0xD9, 0x14, 0x19, 0x14, 0x59, 0x14, 0x9A, 0x14, 0xDA, 0x15, 0x1A, 0x15, 0x5B, 0x15, 0x9B, 0x15, 0xDB, 0x16, 0x1B, 0x16, 0x5C, 0x16, 0x9C, 0x16, 0xDC, 0x17, 0x1D, 0x17, 0x5D, 0x17, 0x9D, 0x17, 0xDE, 0x18, 0x1E, 0x18, 0x5E, 0x18, 0x9F, 0x18, 0xDF, 0x19, 0x1F, 0x19, 0x5F, 0x19, 0xA0, 0x19, 0xE0, 0x1A, 0x20, 0x1A, 0x61, 0x1A, 0xA1, 0x1A, 0xE1, 0x1B, 0x22, 0x1B, 0x62, 0x1B, 0xA2, 0x1B, 0xE3, 0x1C, 0x23, 0x1C, 0x63, 0x1C, 0xA4, 0x1C, 0xE4, 0x1D, 0x24, 0x1D, 0x64, 0x1D, 0xA5, 0x1D, 0xE5, 0x1E, 0x25, 0x1E, 0x66, 0x1E, 0xA6, 0x1E, 0xE6, 0x1F, 0x27, 0x1F, 0x67, 0x1F, 0xA7, 0x1F, 0xE8, 0x20, 0x28, 0x20, 0x68, 0x20, 0xA9, 0x20, 0xE9, 0x21, 0x29, 0x21, 0x69, 0x21, 0xAA, 0x21, 0xEA, 0x22, 0x2A, 0x22, 0x6B, 0x22, 0xAB, 0x22, 0xEB, 0x23, 0x2C, 0x23, 0x6C, 0x23, 0xAC, 0x23, 0xED, 0x24, 0x2D, 0x24, 0x6D, 0x24, 0xAE, 0x24, 0xEE, 0x25, 0x2E, 0x25, 0x6E, 0x25, 0xAF, 0x25, 0xEF, 0x26, 0x2F, 0x26, 0x70, 0x26, 0xB0, 0x26, 0xF0, 0x27, 0x31, 0x27, 0x71, 0x27, 0xB1, 0x27, 0xF2, 0x28, 0x32, 0x28, 0x72, 0x28, 0xB3, 0x28, 0xF3, 0x29, 0x33, 0x29, 0x73, 0x29, 0xB4, 0x29, 0xF4, 0x2A, 0x34, 0x2A, 0x75, 0x2A, 0xB5, 0x2A, 0xF5, 0x2B, 0x36, 0x2B, 0x76, 0x2B, 0xB6, 0x2B, 0xF7, 0x2C, 0x37, 0x2C, 0x77, 0x2C, 0xB8, 0x2C, 0xF8, 0x2D, 0x38, 0x2D, 0x78, 0x2D, 0xB9, 0x2D, 0xF9, 0x2E, 0x39, 0x2E, 0x7A, 0x2E, 0xBA, 0x2E, 0xFA, 0x2F, 0x3B, 0x2F, 0x7B, 0x2F, 0xBB, 0x2F, 0xFC, 0x30, 0x3C, 0x30, 0x7C, 0x30, 0xBC, 0x30, 0xFD, 0x31, 0x3D, 0x31, 0x7D, 0x31, 0xBE, 0x31, 0xFE, 0x32, 0x3E, 0x32, 0x7F, 0x32, 0xBF, 0x32, 0xFF, 0x33, 0x40, 0x33, 0x80, 0x33, 0xC0, 0x34, 0x01, 0x34, 0x41, 0x34, 0x81, 0x34, 0xC1, 0x35, 0x02, 0x35, 0x42, 0x35, 0x82, 0x35, 0xC3, 0x36, 0x03, 0x36, 0x43, 0x36, 0x84, 0x36, 0xC4, 0x37, 0x04, 0x37, 0x45, 0x37, 0x85, 0x37, 0xC5, 0x38, 0x06, 0x38, 0x46, 0x38, 0x86, 0x38, 0xC6, 0x39, 0x07, 0x39, 0x47, 0x39, 0x87, 0x39, 0xC8, 0x3A, 0x08, 0x3A, 0x48, 0x3A, 0x89, 0x3A, 0xC9, 0x3B, 0x09, 0x3B, 0x4A, 0x3B, 0x8A, 0x3B, 0xCA, 0x3C, 0x0B, 0x3C, 0x4B, 0x3C, 0x8B, 0x3C, 0xCB, 0x3D, 0x0C, 0x3D, 0x4C, 0x3D, 0x8C, 0x3D, 0xCD, 0x3E, 0x0D, 0x3E, 0x4D, 0x3E, 0x8E, 0x3E, 0xCE, 0x3F, 0x0E, 0x3F, 0x4F, 0x3F, 0x8F, 0x3F, 0xCF, 0x40, 0x10, 0x40, 0x50, 0x40, 0x90, 0x40, 0xD0, 0x41, 0x11, 0x41, 0x51, 0x41, 0x91, 0x41, 0xD2, 0x42, 0x12, 0x42, 0x52, 0x42, 0x93, 0x42, 0xD3, 0x43, 0x13, 0x43, 0x54, 0x43, 0x94, 0x43, 0xD4, 0x44, 0x15, 0x44, 0x55, 0x44, 0x95, 0x44, 0xD5, 0x45, 0x16, 0x45, 0x56, 0x45, 0x96, 0x45, 0xD7, 0x46, 0x17, 0x46, 0x57, 0x46, 0x98, 0x46, 0xD8, 0x47, 0x18, 0x47, 0x59, 0x47, 0x99, 0x47, 0xD9, 0x48, 0x19, 0x48, 0x5A, 0x48, 0x9A, 0x48, 0xDA, 0x49, 0x1B, 0x49, 0x5B, 0x49, 0x9B, 0x49, 0xDC, 0x4A, 0x1C, 0x4A, 0x5C, 0x4A, 0x9D, 0x4A, 0xDD, 0x4B, 0x1D, 0x4B, 0x5E, 0x4B, 0x9E, 0x4B, 0xDE, 0x4C, 0x1E, 0x4C, 0x5F, 0x4C, 0x9F, 0x4C, 0xDF, 0x4D, 0x20, 0x4D, 0x60, 0x4D, 0xA0, 0x4D, 0xE1, 0x4E, 0x21, 0x4E, 0x61, 0x4E, 0xA2, 0x4E, 0xE2, 0x4F, 0x22, 0x4F, 0x63, 0x4F, 0xA3, 0x4F, 0xE3, 0x50, 0x23, 0x50, 0x64, 0x50, 0xA4, 0x50, 0xE4, 0x51, 0x25, 0x51, 0x65, 0x51, 0xA5, 0x51, 0xE6, 0x52, 0x26, 0x52, 0x66, 0x52, 0xA7, 0x52, 0xE7, 0x53, 0x27, 0x53, 0x68, 0x53, 0xA8, 0x53, 0xE8, 0x54, 0x28, 0x54, 0x69, 0x54, 0xA9, 0x54, 0xE9, 0x55, 0x2A, 0x55, 0x6A, 0x55, 0xAA, 0x55, 0xEB, 0x56, 0x2B, 0x56, 0x6B, 0x56, 0xAC, 0x56, 0xEC, 0x57, 0x2C, 0x57, 0x6D, 0x57, 0xAD, 0x57, 0xED, 0x58, 0x2D, 0x58, 0x6E, 0x58, 0xAE, 0x58, 0xEE, 0x59, 0x2F, 0x59, 0x6F, 0x59, 0xAF, 0x59, 0xF0, 0x5A, 0x30, 0x5A, 0x70, 0x5A, 0xB1, 0x5A, 0xF1, 0x5B, 0x31, 0x5B, 0x72, 0x5B, 0xB2, 0x5B, 0xF2, 0x5C, 0x32, 0x5C, 0x73, 0x5C, 0xB3, 0x5C, 0xF3, 0x5D, 0x34, 0x5D, 0x74, 0x5D, 0xB4, 0x5D, 0xF5, 0x5E, 0x35, 0x5E, 0x75, 0x5E, 0xB6, 0x5E, 0xF6, 0x5F, 0x36, 0x5F, 0x76, 0x5F, 0xB7, 0x5F, 0xF7, 0x60, 0x37, 0x60, 0x78, 0x60, 0xB8, 0x60, 0xF8, 0x61, 0x39, 0x61, 0x79, 0x61, 0xB9, 0x61, 0xFA, 0x62, 0x3A, 0x62, 0x7A, 0x62, 0xBB, 0x62, 0xFB, 0x63, 0x3B, 0x63, 0x7B, 0x63, 0xBC, 0x63, 0xFC, 0x64, 0x3C, 0x64, 0x7D, 0x64, 0xBD, 0x64, 0xFD, 0x65, 0x3E, 0x65, 0x7E, 0x65, 0xBE, 0x65, 0xFF, 0x66, 0x3F, 0x66, 0x7F, 0x66, 0xC0, 0x67, 0x00, 0x67, 0x40, 0x67, 0x80, 0x67, 0xC1, 0x68, 0x01, 0x68, 0x41, 0x68, 0x82, 0x68, 0xC2, 0x69, 0x02, 0x69, 0x43, 0x69, 0x83, 0x69, 0xC3, 0x6A, 0x04, 0x6A, 0x44, 0x6A, 0x84, 0x6A, 0xC5, 0x6B, 0x05, 0x6B, 0x45, 0x6B, 0x85, 0x6B, 0xC6, 0x6C, 0x06, 0x6C, 0x46, 0x6C, 0x87, 0x6C, 0xC7, 0x6D, 0x07, 0x6D, 0x48, 0x6D, 0x88, 0x6D, 0xC8, 0x6E, 0x09, 0x6E, 0x49, 0x6E, 0x89, 0x6E, 0xCA, 0x6F, 0x0A, 0x6F, 0x4A, 0x6F, 0x8A, 0x6F, 0xCB, 0x70, 0x0B, 0x70, 0x4B, 0x70, 0x8C, 0x70, 0xCC, 0x71, 0x0C, 0x71, 0x4D, 0x71, 0x8D, 0x71, 0xCD, 0x72, 0x0E, 0x72, 0x4E, 0x72, 0x8E, 0x72, 0xCF, 0x73, 0x0F, 0x73, 0x4F, 0x73, 0x8F, 0x73, 0xD0, 0x74, 0x10, 0x74, 0x50, 0x74, 0x91, 0x74, 0xD1, 0x75, 0x11, 0x75, 0x52, 0x75, 0x92, 0x75, 0xD2, 0x76, 0x13, 0x76, 0x53, 0x76, 0x93, 0x76, 0xD3, 0x77, 0x14, 0x77, 0x54, 0x77, 0x94, 0x77, 0xD5, 0x78, 0x15, 0x78, 0x55, 0x78, 0x96, 0x78, 0xD6, 0x79, 0x16, 0x79, 0x57, 0x79, 0x97, 0x79, 0xD7, 0x7A, 0x18, 0x7A, 0x58, 0x7A, 0x98, 0x7A, 0xD8, 0x7B, 0x19, 0x7B, 0x59, 0x7B, 0x99, 0x7B, 0xDA, 0x7C, 0x1A, 0x7C, 0x5A, 0x7C, 0x9B, 0x7C, 0xDB, 0x7D, 0x1B, 0x7D, 0x5C, 0x7D, 0x9C, 0x7D, 0xDC, 0x7E, 0x1D, 0x7E, 0x5D, 0x7E, 0x9D, 0x7E, 0xDD, 0x7F, 0x1E, 0x7F, 0x5E, 0x7F, 0x9E, 0x7F, 0xDF, 0x80, 0x1F, 0x80, 0x5F, 0x80, 0xA0, 0x80, 0xE0, 0x81, 0x20, 0x81, 0x61, 0x81, 0xA1, 0x81, 0xE1, 0x82, 0x22, 0x82, 0x62, 0x82, 0xA2, 0x82, 0xE2, 0x83, 0x23, 0x83, 0x63, 0x83, 0xA3, 0x83, 0xE4, 0x84, 0x24, 0x84, 0x64, 0x84, 0xA5, 0x84, 0xE5, 0x85, 0x25, 0x85, 0x66, 0x85, 0xA6, 0x85, 0xE6, 0x86, 0x27, 0x86, 0x67, 0x86, 0xA7, 0x86, 0xE7, 0x87, 0x28, 0x87, 0x68, 0x87, 0xA8, 0x87, 0xE9, 0x88, 0x29, 0x88, 0x69, 0x88, 0xAA, 0x88, 0xEA, 0x89, 0x2A, 0x89, 0x6B, 0x89, 0xAB, 0x89, 0xEB, 0x8A, 0x2C, 0x8A, 0x6C, 0x8A, 0xAC, 0x8A, 0xEC, 0x8B, 0x2D, 0x8B, 0x6D, 0x8B, 0xAD, 0x8B, 0xEE, 0x8C, 0x2E, 0x8C, 0x6E, 0x8C, 0xAF, 0x8C, 0xEF, 0x8D, 0x2F, 0x8D, 0x70, 0x8D, 0xB0, 0x8D, 0xF0, 0x8E, 0x30, 0x8E, 0x71, 0x8E, 0xB1, 0x8E, 0xF1, 0x8F, 0x32, 0x8F, 0x72, 0x8F, 0xB2, 0x8F, 0xF3, 0x90, 0x33, 0x90, 0x73, 0x90, 0xB4, 0x90, 0xF4, 0x91, 0x34, 0x91, 0x75, 0x91, 0xB5, 0x91, 0xF5, 0x92, 0x35, 0x92, 0x76, 0x92, 0xB6, 0x92, 0xF6, 0x93, 0x37, 0x93, 0x77, 0x93, 0xB7, 0x93, 0xF8, 0x94, 0x38, 0x94, 0x78, 0x94, 0xB9, 0x94, 0xF9, 0x95, 0x39, 0x95, 0x7A, 0x95, 0xBA, 0x95, 0xFA, 0x96, 0x3A, 0x96, 0x7B, 0x96, 0xBB, 0x96, 0xFB, 0x97, 0x3C, 0x97, 0x7C, 0x97, 0xBC, 0x97, 0xFD, 0x98, 0x3D, 0x98, 0x7D, 0x98, 0xBE, 0x98, 0xFE, 0x99, 0x3E, 0x99, 0x7F, 0x99, 0xBF, 0x99, 0xFF, 0x9A, 0x3F, 0x9A, 0x80, 0x9A, 0xC0, 0x9B, 0x00, 0x9B, 0x41, 0x9B, 0x81, 0x9B, 0xC1, 0x9C, 0x02, 0x9C, 0x42, 0x9C, 0x82, 0x9C, 0xC3, 0x9D, 0x03, 0x9D, 0x43, 0x9D, 0x84, 0x9D, 0xC4, 0x9E, 0x04, 0x9E, 0x44, 0x9E, 0x85, 0x9E, 0xC5, 0x9F, 0x05, 0x9F, 0x46, 0x9F, 0x86, 0x9F, 0xC6, 0xA0, 0x07, 0xA0, 0x47, 0xA0, 0x87, 0xA0, 0xC8, 0xA1, 0x08, 0xA1, 0x48, 0xA1, 0x89, 0xA1, 0xC9, 0xA2, 0x09, 0xA2, 0x49, 0xA2, 0x8A, 0xA2, 0xCA, 0xA3, 0x0A, 0xA3, 0x4B, 0xA3, 0x8B, 0xA3, 0xCB, 0xA4, 0x0C, 0xA4, 0x4C, 0xA4, 0x8C, 0xA4, 0xCD, 0xA5, 0x0D, 0xA5, 0x4D, 0xA5, 0x8D, 0xA5, 0xCE, 0xA6, 0x0E, 0xA6, 0x4E, 0xA6, 0x8F, 0xA6, 0xCF, 0xA7, 0x0F, 0xA7, 0x50, 0xA7, 0x90, 0xA7, 0xD0, 0xA8, 0x11, 0xA8, 0x51, 0xA8, 0x91, 0xA8, 0xD2, 0xA9, 0x12, 0xA9, 0x52, 0xA9, 0x92, 0xA9, 0xD3, 0xAA, 0x13, 0xAA, 0x53, 0xAA, 0x94, 0xAA, 0xD4, 0xAB, 0x14, 0xAB, 0x55, 0xAB, 0x95, 0xAB, 0xD5, 0xAC, 0x16, 0xAC, 0x56, 0xAC, 0x96, 0xAC, 0xD7, 0xAD, 0x17, 0xAD, 0x57, 0xAD, 0x97, 0xAD, 0xD8, 0xAE, 0x18, 0xAE, 0x58, 0xAE, 0x99, 0xAE, 0xD9, 0xAF, 0x19, 0xAF, 0x5A, 0xAF, 0x9A, 0xAF, 0xDA, 0xB0, 0x1B, 0xB0, 0x5B, 0xB0, 0x9B, 0xB0, 0xDC, 0xB1, 0x1C, 0xB1, 0x5C, 0xB1, 0x9C, 0xB1, 0xDD, 0xB2, 0x1D, 0xB2, 0x5D, 0xB2, 0x9E, 0xB2, 0xDE, 0xB3, 0x1E, 0xB3, 0x5F, 0xB3, 0x9F, 0xB3, 0xDF, 0xB4, 0x20, 0xB4, 0x60, 0xB4, 0xA0, 0xB4, 0xE1, 0xB5, 0x21, 0xB5, 0x61, 0xB5, 0xA1, 0xB5, 0xE2, 0xB6, 0x22, 0xB6, 0x62, 0xB6, 0xA3, 0xB6, 0xE3, 0xB7, 0x23, 0xB7, 0x64, 0xB7, 0xA4, 0xB7, 0xE4, 0xB8, 0x25, 0xB8, 0x65, 0xB8, 0xA5, 0xB8, 0xE6, 0xB9, 0x26, 0xB9, 0x66, 0xB9, 0xA6, 0xB9, 0xE7, 0xBA, 0x27, 0xBA, 0x67, 0xBA, 0xA8, 0xBA, 0xE8, 0xBB, 0x28, 0xBB, 0x69, 0xBB, 0xA9, 0xBB, 0xE9, 0xBC, 0x2A, 0xBC, 0x6A, 0xBC, 0xAA, 0xBC, 0xEA, 0xBD, 0x2B, 0xBD, 0x6B, 0xBD, 0xAB, 0xBD, 0xEC, 0xBE, 0x2C, 0xBE, 0x6C, 0xBE, 0xAD, 0xBE, 0xED, 0xBF, 0x2D, 0xBF, 0x6E, 0xBF, 0xAE, 0xBF, 0xEE, 0xC0, 0x2F, 0xC0, 0x6F, 0xC0, 0xAF, 0xC0, 0xEF, 0xC1, 0x30, 0xC1, 0x70, 0xC1, 0xB0, 0xC1, 0xF1, 0xC2, 0x31, 0xC2, 0x71, 0xC2, 0xB2, 0xC2, 0xF2, 0xC3, 0x32, 0xC3, 0x73, 0xC3, 0xB3, 0xC3, 0xF3, 0xC4, 0x34, 0xC4, 0x74, 0xC4, 0xB4, 0xC4, 0xF4, 0xC5, 0x35, 0xC5, 0x75, 0xC5, 0xB5, 0xC5, 0xF6, 0xC6, 0x36, 0xC6, 0x76, 0xC6, 0xB7, 0xC6, 0xF7, 0xC7, 0x37, 0xC7, 0x78, 0xC7, 0xB8, 0xC7, 0xF8, 0xC8, 0x39, 0xC8, 0x79, 0xC8, 0xB9, 0xC8, 0xF9, 0xC9, 0x3A, 0xC9, 0x7A, 0xC9, 0xBA, 0xC9, 0xFB, 0xCA, 0x3B, 0xCA, 0x7B, 0xCA, 0xBC, 0xCA, 0xFC, 0xCB, 0x3C, 0xCB, 0x7D, 0xCB, 0xBD, 0xCB, 0xFD, 0xCC, 0x3E, 0xCC, 0x7E, 0xCC, 0xBE, 0xCC, 0xFE, 0xCD, 0x3F, 0xCD, 0x7F, 0xCD, 0xBF, 0xCE, 0x00, 0xCE, 0x40, 0xCE, 0x80, 0xCE, 0xC1, 0xCF, 0x01, 0xCF, 0x41, 0xCF, 0x82, 0xCF, 0xC2, 0xD0, 0x02, 0xD0, 0x43, 0xD0, 0x83, 0xD0, 0xC3, 0xD1, 0x03, 0xD1, 0x44, 0xD1, 0x84, 0xD1, 0xC4, 0xD2, 0x05, 0xD2, 0x45, 0xD2, 0x85, 0xD2, 0xC6, 0xD3, 0x06, 0xD3, 0x46, 0xD3, 0x87, 0xD3, 0xC7, 0xD4, 0x07, 0xD4, 0x47, 0xD4, 0x88, 0xD4, 0xC8, 0xD5, 0x08, 0xD5, 0x49, 0xD5, 0x89, 0xD5, 0xC9, 0xD6, 0x0A, 0xD6, 0x4A, 0xD6, 0x8A, 0xD6, 0xCB, 0xD7, 0x0B, 0xD7, 0x4B, 0xD7, 0x8C, 0xD7, 0xCC, 0xD8, 0x0C, 0xD8, 0x4C, 0xD8, 0x8D, 0xD8, 0xCD, 0xD9, 0x0D, 0xD9, 0x4E, 0xD9, 0x8E, 0xD9, 0xCE, 0xDA, 0x0F, 0xDA, 0x4F, 0xDA, 0x8F, 0xDA, 0xD0, 0xDB, 0x10, 0xDB, 0x50, 0xDB, 0x91, 0xDB, 0xD1, 0xDC, 0x11, 0xDC, 0x51, 0xDC, 0x92, 0xDC, 0xD2, 0xDD, 0x12, 0xDD, 0x53, 0xDD, 0x93, 0xDD, 0xD3, 0xDE, 0x14, 0xDE, 0x54, 0xDE, 0x94, 0xDE, 0xD5, 0xDF, 0x15, 0xDF, 0x55, 0xDF, 0x96, 0xDF, 0xD6, 0xE0, 0x16, 0xE0, 0x56, 0xE0, 0x97, 0xE0, 0xD7, 0xE1, 0x17, 0xE1, 0x58, 0xE1, 0x98, 0xE1, 0xD8, 0xE2, 0x19, 0xE2, 0x59, 0xE2, 0x99, 0xE2, 0xDA, 0xE3, 0x1A, 0xE3, 0x5A, 0xE3, 0x9B, 0xE3, 0xDB, 0xE4, 0x1B, 0xE4, 0x5B, 0xE4, 0x9C, 0xE4, 0xDC, 0xE5, 0x1C, 0xE5, 0x5D, 0xE5, 0x9D, 0xE5, 0xDD, 0xE6, 0x1E, 0xE6, 0x5E, 0xE6, 0x9E, 0xE6, 0xDF, 0xE7, 0x1F, 0xE7, 0x5F, 0xE7, 0xA0, 0xE7, 0xE0, 0xE8, 0x20, 0xE8, 0x60, 0xE8, 0xA1, 0xE8, 0xE1, 0xE9, 0x21, 0xE9, 0x62, 0xE9, 0xA2, 0xE9, 0xE2, 0xEA, 0x23, 0xEA, 0x63, 0xEA, 0xA3, 0xEA, 0xE4, 0xEB, 0x24, 0xEB, 0x64, 0xEB, 0xA4, 0xEB, 0xE5, 0xEC, 0x25, 0xEC, 0x65, 0xEC, 0xA6, 0xEC, 0xE6, 0xED, 0x26, 0xED, 0x67, 0xED, 0xA7, 0xED, 0xE7, 0xEE, 0x28, 0xEE, 0x68, 0xEE, 0xA8, 0xEE, 0xE9, 0xEF, 0x29, 0xEF, 0x69, 0xEF, 0xA9, 0xEF, 0xEA, 0xF0, 0x2A, 0xF0, 0x6A, 0xF0, 0xAB, 0xF0, 0xEB, 0xF1, 0x2B, 0xF1, 0x6C, 0xF1, 0xAC, 0xF1, 0xEC, 0xF2, 0x2D, 0xF2, 0x6D, 0xF2, 0xAD, 0xF2, 0xEE, 0xF3, 0x2E, 0xF3, 0x6E, 0xF3, 0xAE, 0xF3, 0xEF, 0xF4, 0x2F, 0xF4, 0x6F, 0xF4, 0xB0, 0xF4, 0xF0, 0xF5, 0x30, 0xF5, 0x71, 0xF5, 0xB1, 0xF5, 0xF1, 0xF6, 0x32, 0xF6, 0x72, 0xF6, 0xB2, 0xF6, 0xF3, 0xF7, 0x33, 0xF7, 0x73, 0xF7, 0xB3, 0xF7, 0xF4, 0xF8, 0x34, 0xF8, 0x74, 0xF8, 0xB5, 0xF8, 0xF5, 0xF9, 0x35, 0xF9, 0x76, 0xF9, 0xB6, 0xF9, 0xF6, 0xFA, 0x37, 0xFA, 0x77, 0xFA, 0xB7, 0xFA, 0xF8, 0xFB, 0x38, 0xFB, 0x78, 0xFB, 0xB8, 0xFB, 0xF9, 0xFC, 0x39, 0xFC, 0x79, 0xFC, 0xBA, 0xFC, 0xFA, 0xFD, 0x3A, 0xFD, 0x7B, 0xFD, 0xBB, 0xFD, 0xFB, 0xFE, 0x3C, 0xFE, 0x7C, 0xFE, 0xBC, 0xFE, 0xFD, 0xFF, 0x3D, 0xFF, 0x7D, 0xFF, 0xBD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0xBF, 0x02, 0x00, 0x02, 0x40, 0x02, 0x80, 0x02, 0xC0, 0x03, 0x00, 0x03, 0x40, 0x03, 0x80, 0x03, 0xC0, 0x04, 0x00, 0x04, 0x40, 0x04, 0x80, 0x04, 0xC0, 0x05, 0x00, 0x05, 0x40, 0x05, 0x80, 0x05, 0xC0, 0x06, 0x01, 0x06, 0x41, 0x06, 0x81, 0x06, 0xC1, 0x07, 0x01, 0x07, 0x41, 0x07, 0x81, 0x07, 0xC1, 0x08, 0x01, 0x08, 0x41, 0x08, 0x81, 0x08, 0xC1, 0x09, 0x01, 0x09, 0x41, 0x09, 0x81, 0x09, 0xC1, 0x0A, 0x02, 0x0A, 0x42, 0x0A, 0x82, 0x0A, 0xC2, 0x0B, 0x02, 0x0B, 0x42, 0x0B, 0x82, 0x0B, 0xC2, 0x0C, 0x02, 0x0C, 0x42, 0x0C, 0x82, 0x0C, 0xC2, 0x0D, 0x02, 0x0D, 0x42, 0x0D, 0x82, 0x0D, 0xC2, 0x0E, 0x03, 0x0E, 0x43, 0x0E, 0x83, 0x0E, 0xC3, 0x0F, 0x03, 0x0F, 0x43, 0x0F, 0x83, 0x0F, 0xC3, 0x10, 0x03, 0x10, 0x43, 0x10, 0x83, 0x10, 0xC3, 0x11, 0x03, 0x11, 0x43, 0x11, 0x83, 0x11, 0xC3, 0x12, 0x04, 0x12, 0x44, 0x12, 0x84, 0x12, 0xC4, 0x13, 0x04, 0x13, 0x44, 0x13, 0x84, 0x13, 0xC4, 0x14, 0x04, 0x14, 0x44, 0x14, 0x84, 0x14, 0xC4, 0x15, 0x04, 0x15, 0x44, 0x15, 0x84, 0x15, 0xC4, 0x16, 0x05, 0x16, 0x45, 0x16, 0x85, 0x16, 0xC5, 0x17, 0x05, 0x17, 0x45, 0x17, 0x85, 0x17, 0xC5, 0x18, 0x05, 0x18, 0x45, 0x18, 0x85, 0x18, 0xC5, 0x19, 0x05, 0x19, 0x45, 0x19, 0x85, 0x19, 0xC5, 0x1A, 0x06, 0x1A, 0x46, 0x1A, 0x86, 0x1A, 0xC6, 0x1B, 0x06, 0x1B, 0x46, 0x1B, 0x86, 0x1B, 0xC6, 0x1C, 0x06, 0x1C, 0x46, 0x1C, 0x86, 0x1C, 0xC6, 0x1D, 0x06, 0x1D, 0x46, 0x1D, 0x86, 0x1D, 0xC6, 0x1E, 0x07, 0x1E, 0x47, 0x1E, 0x87, 0x1E, 0xC7, 0x1F, 0x07, 0x1F, 0x47, 0x1F, 0x87, 0x1F, 0xC7, 0x20, 0x07, 0x20, 0x47, 0x20, 0x87, 0x20, 0xC7, 0x21, 0x07, 0x21, 0x47, 0x21, 0x87, 0x21, 0xC7, 0x22, 0x08, 0x22, 0x48, 0x22, 0x88, 0x22, 0xC8, 0x23, 0x08, 0x23, 0x48, 0x23, 0x88, 0x23, 0xC8, 0x24, 0x08, 0x24, 0x48, 0x24, 0x88, 0x24, 0xC8, 0x25, 0x08, 0x25, 0x48, 0x25, 0x88, 0x25, 0xC8, 0x26, 0x09, 0x26, 0x49, 0x26, 0x89, 0x26, 0xC9, 0x27, 0x09, 0x27, 0x49, 0x27, 0x89, 0x27, 0xC9, 0x28, 0x09, 0x28, 0x49, 0x28, 0x89, 0x28, 0xC9, 0x29, 0x09, 0x29, 0x49, 0x29, 0x89, 0x29, 0xC9, 0x2A, 0x0A, 0x2A, 0x4A, 0x2A, 0x8A, 0x2A, 0xCA, 0x2B, 0x0A, 0x2B, 0x4A, 0x2B, 0x8A, 0x2B, 0xCA, 0x2C, 0x0A, 0x2C, 0x4A, 0x2C, 0x8A, 0x2C, 0xCA, 0x2D, 0x0A, 0x2D, 0x4A, 0x2D, 0x8A, 0x2D, 0xCA, 0x2E, 0x0B, 0x2E, 0x4B, 0x2E, 0x8B, 0x2E, 0xCB, 0x2F, 0x0B, 0x2F, 0x4B, 0x2F, 0x8B, 0x2F, 0xCB, 0x30, 0x0B, 0x30, 0x4B, 0x30, 0x8B, 0x30, 0xCB, 0x31, 0x0B, 0x31, 0x4B, 0x31, 0x8B, 0x31, 0xCB, 0x32, 0x0C, 0x32, 0x4C, 0x32, 0x8C, 0x32, 0xCC, 0x33, 0x0C, 0x33, 0x4C, 0x33, 0x8C, 0x33, 0xCC, 0x34, 0x0C, 0x34, 0x4C, 0x34, 0x8C, 0x34, 0xCC, 0x35, 0x0C, 0x35, 0x4C, 0x35, 0x8C, 0x35, 0xCC, 0x36, 0x0D, 0x36, 0x4D, 0x36, 0x8D, 0x36, 0xCD, 0x37, 0x0D, 0x37, 0x4D, 0x37, 0x8D, 0x37, 0xCD, 0x38, 0x0D, 0x38, 0x4D, 0x38, 0x8D, 0x38, 0xCD, 0x39, 0x0D, 0x39, 0x4D, 0x39, 0x8D, 0x39, 0xCD, 0x3A, 0x0E, 0x3A, 0x4E, 0x3A, 0x8E, 0x3A, 0xCE, 0x3B, 0x0E, 0x3B, 0x4E, 0x3B, 0x8E, 0x3B, 0xCE, 0x3C, 0x0E, 0x3C, 0x4E, 0x3C, 0x8E, 0x3C, 0xCE, 0x3D, 0x0E, 0x3D, 0x4E, 0x3D, 0x8E, 0x3D, 0xCE, 0x3E, 0x0F, 0x3E, 0x4F, 0x3E, 0x8F, 0x3E, 0xCF, 0x3F, 0x0F, 0x3F, 0x4F, 0x3F, 0x8F, 0x3F, 0xCF, 0x40, 0x0F, 0x40, 0x4F, 0x40, 0x8F, 0x40, 0xCF, 0x41, 0x0F, 0x41, 0x4F, 0x41, 0x8F, 0x41, 0xCF, 0x42, 0x10, 0x42, 0x50, 0x42, 0x90, 0x42, 0xD0, 0x43, 0x10, 0x43, 0x50, 0x43, 0x90, 0x43, 0xD0, 0x44, 0x10, 0x44, 0x50, 0x44, 0x90, 0x44, 0xD0, 0x45, 0x10, 0x45, 0x50, 0x45, 0x90, 0x45, 0xD0, 0x46, 0x11, 0x46, 0x51, 0x46, 0x91, 0x46, 0xD1, 0x47, 0x11, 0x47, 0x51, 0x47, 0x91, 0x47, 0xD1, 0x48, 0x11, 0x48, 0x51, 0x48, 0x91, 0x48, 0xD1, 0x49, 0x11, 0x49, 0x51, 0x49, 0x91, 0x49, 0xD1, 0x4A, 0x12, 0x4A, 0x52, 0x4A, 0x92, 0x4A, 0xD2, 0x4B, 0x12, 0x4B, 0x52, 0x4B, 0x92, 0x4B, 0xD2, 0x4C, 0x12, 0x4C, 0x52, 0x4C, 0x92, 0x4C, 0xD2, 0x4D, 0x12, 0x4D, 0x52, 0x4D, 0x92, 0x4D, 0xD2, 0x4E, 0x13, 0x4E, 0x53, 0x4E, 0x93, 0x4E, 0xD3, 0x4F, 0x13, 0x4F, 0x53, 0x4F, 0x93, 0x4F, 0xD3, 0x50, 0x13, 0x50, 0x53, 0x50, 0x93, 0x50, 0xD3, 0x51, 0x13, 0x51, 0x53, 0x51, 0x93, 0x51, 0xD3, 0x52, 0x14, 0x52, 0x54, 0x52, 0x94, 0x52, 0xD4, 0x53, 0x14, 0x53, 0x54, 0x53, 0x94, 0x53, 0xD4, 0x54, 0x14, 0x54, 0x54, 0x54, 0x94, 0x54, 0xD4, 0x55, 0x14, 0x55, 0x54, 0x55, 0x94, 0x55, 0xD4, 0x56, 0x15, 0x56, 0x55, 0x56, 0x95, 0x56, 0xD5, 0x57, 0x15, 0x57, 0x55, 0x57, 0x95, 0x57, 0xD5, 0x58, 0x15, 0x58, 0x55, 0x58, 0x95, 0x58, 0xD5, 0x59, 0x15, 0x59, 0x55, 0x59, 0x95, 0x59, 0xD5, 0x5A, 0x16, 0x5A, 0x56, 0x5A, 0x96, 0x5A, 0xD6, 0x5B, 0x16, 0x5B, 0x56, 0x5B, 0x96, 0x5B, 0xD6, 0x5C, 0x16, 0x5C, 0x56, 0x5C, 0x96, 0x5C, 0xD6, 0x5D, 0x16, 0x5D, 0x56, 0x5D, 0x96, 0x5D, 0xD6, 0x5E, 0x17, 0x5E, 0x57, 0x5E, 0x97, 0x5E, 0xD7, 0x5F, 0x17, 0x5F, 0x57, 0x5F, 0x97, 0x5F, 0xD7, 0x60, 0x17, 0x60, 0x57, 0x60, 0x97, 0x60, 0xD7, 0x61, 0x17, 0x61, 0x57, 0x61, 0x97, 0x61, 0xD7, 0x62, 0x18, 0x62, 0x58, 0x62, 0x98, 0x62, 0xD8, 0x63, 0x18, 0x63, 0x58, 0x63, 0x98, 0x63, 0xD8, 0x64, 0x18, 0x64, 0x58, 0x64, 0x98, 0x64, 0xD8, 0x65, 0x18, 0x65, 0x58, 0x65, 0x98, 0x65, 0xD8, 0x66, 0x19, 0x66, 0x59, 0x66, 0x99, 0x66, 0xD9, 0x67, 0x19, 0x67, 0x59, 0x67, 0x99, 0x67, 0xD9, 0x68, 0x19, 0x68, 0x59, 0x68, 0x99, 0x68, 0xD9, 0x69, 0x19, 0x69, 0x59, 0x69, 0x99, 0x69, 0xD9, 0x6A, 0x1A, 0x6A, 0x5A, 0x6A, 0x9A, 0x6A, 0xDA, 0x6B, 0x1A, 0x6B, 0x5A, 0x6B, 0x9A, 0x6B, 0xDA, 0x6C, 0x1A, 0x6C, 0x5A, 0x6C, 0x9A, 0x6C, 0xDA, 0x6D, 0x1A, 0x6D, 0x5A, 0x6D, 0x9A, 0x6D, 0xDA, 0x6E, 0x1B, 0x6E, 0x5B, 0x6E, 0x9B, 0x6E, 0xDB, 0x6F, 0x1B, 0x6F, 0x5B, 0x6F, 0x9B, 0x6F, 0xDB, 0x70, 0x1B, 0x70, 0x5B, 0x70, 0x9B, 0x70, 0xDB, 0x71, 0x1B, 0x71, 0x5B, 0x71, 0x9B, 0x71, 0xDB, 0x72, 0x1C, 0x72, 0x5C, 0x72, 0x9C, 0x72, 0xDC, 0x73, 0x1C, 0x73, 0x5C, 0x73, 0x9C, 0x73, 0xDC, 0x74, 0x1C, 0x74, 0x5C, 0x74, 0x9C, 0x74, 0xDC, 0x75, 0x1C, 0x75, 0x5C, 0x75, 0x9C, 0x75, 0xDC, 0x76, 0x1D, 0x76, 0x5D, 0x76, 0x9D, 0x76, 0xDD, 0x77, 0x1D, 0x77, 0x5D, 0x77, 0x9D, 0x77, 0xDD, 0x78, 0x1D, 0x78, 0x5D, 0x78, 0x9D, 0x78, 0xDD, 0x79, 0x1D, 0x79, 0x5D, 0x79, 0x9D, 0x79, 0xDD, 0x7A, 0x1E, 0x7A, 0x5E, 0x7A, 0x9E, 0x7A, 0xDE, 0x7B, 0x1E, 0x7B, 0x5E, 0x7B, 0x9E, 0x7B, 0xDE, 0x7C, 0x1E, 0x7C, 0x5E, 0x7C, 0x9E, 0x7C, 0xDE, 0x7D, 0x1E, 0x7D, 0x5E, 0x7D, 0x9E, 0x7D, 0xDE, 0x7E, 0x1F, 0x7E, 0x5F, 0x7E, 0x9F, 0x7E, 0xDF, 0x7F, 0x1F, 0x7F, 0x5F, 0x7F, 0x9F, 0x7F, 0xDF, 0x80, 0x1F, 0x80, 0x5F, 0x80, 0x9F, 0x80, 0xDF, 0x81, 0x1F, 0x81, 0x5F, 0x81, 0x9F, 0x81, 0xDF, 0x82, 0x20, 0x82, 0x60, 0x82, 0xA0, 0x82, 0xE0, 0x83, 0x20, 0x83, 0x60, 0x83, 0xA0, 0x83, 0xE0, 0x84, 0x20, 0x84, 0x60, 0x84, 0xA0, 0x84, 0xE0, 0x85, 0x20, 0x85, 0x60, 0x85, 0xA0, 0x85, 0xE0, 0x86, 0x21, 0x86, 0x61, 0x86, 0xA1, 0x86, 0xE1, 0x87, 0x21, 0x87, 0x61, 0x87, 0xA1, 0x87, 0xE1, 0x88, 0x21, 0x88, 0x61, 0x88, 0xA1, 0x88, 0xE1, 0x89, 0x21, 0x89, 0x61, 0x89, 0xA1, 0x89, 0xE1, 0x8A, 0x22, 0x8A, 0x62, 0x8A, 0xA2, 0x8A, 0xE2, 0x8B, 0x22, 0x8B, 0x62, 0x8B, 0xA2, 0x8B, 0xE2, 0x8C, 0x22, 0x8C, 0x62, 0x8C, 0xA2, 0x8C, 0xE2, 0x8D, 0x22, 0x8D, 0x62, 0x8D, 0xA2, 0x8D, 0xE2, 0x8E, 0x23, 0x8E, 0x63, 0x8E, 0xA3, 0x8E, 0xE3, 0x8F, 0x23, 0x8F, 0x63, 0x8F, 0xA3, 0x8F, 0xE3, 0x90, 0x23, 0x90, 0x63, 0x90, 0xA3, 0x90, 0xE3, 0x91, 0x23, 0x91, 0x63, 0x91, 0xA3, 0x91, 0xE3, 0x92, 0x24, 0x92, 0x64, 0x92, 0xA4, 0x92, 0xE4, 0x93, 0x24, 0x93, 0x64, 0x93, 0xA4, 0x93, 0xE4, 0x94, 0x24, 0x94, 0x64, 0x94, 0xA4, 0x94, 0xE4, 0x95, 0x24, 0x95, 0x64, 0x95, 0xA4, 0x95, 0xE4, 0x96, 0x25, 0x96, 0x65, 0x96, 0xA5, 0x96, 0xE5, 0x97, 0x25, 0x97, 0x65, 0x97, 0xA5, 0x97, 0xE5, 0x98, 0x25, 0x98, 0x65, 0x98, 0xA5, 0x98, 0xE5, 0x99, 0x25, 0x99, 0x65, 0x99, 0xA5, 0x99, 0xE5, 0x9A, 0x26, 0x9A, 0x66, 0x9A, 0xA6, 0x9A, 0xE6, 0x9B, 0x26, 0x9B, 0x66, 0x9B, 0xA6, 0x9B, 0xE6, 0x9C, 0x26, 0x9C, 0x66, 0x9C, 0xA6, 0x9C, 0xE6, 0x9D, 0x26, 0x9D, 0x66, 0x9D, 0xA6, 0x9D, 0xE6, 0x9E, 0x27, 0x9E, 0x67, 0x9E, 0xA7, 0x9E, 0xE7, 0x9F, 0x27, 0x9F, 0x67, 0x9F, 0xA7, 0x9F, 0xE7, 0xA0, 0x27, 0xA0, 0x67, 0xA0, 0xA7, 0xA0, 0xE7, 0xA1, 0x27, 0xA1, 0x67, 0xA1, 0xA7, 0xA1, 0xE7, 0xA2, 0x28, 0xA2, 0x68, 0xA2, 0xA8, 0xA2, 0xE8, 0xA3, 0x28, 0xA3, 0x68, 0xA3, 0xA8, 0xA3, 0xE8, 0xA4, 0x28, 0xA4, 0x68, 0xA4, 0xA8, 0xA4, 0xE8, 0xA5, 0x28, 0xA5, 0x68, 0xA5, 0xA8, 0xA5, 0xE8, 0xA6, 0x29, 0xA6, 0x69, 0xA6, 0xA9, 0xA6, 0xE9, 0xA7, 0x29, 0xA7, 0x69, 0xA7, 0xA9, 0xA7, 0xE9, 0xA8, 0x29, 0xA8, 0x69, 0xA8, 0xA9, 0xA8, 0xE9, 0xA9, 0x29, 0xA9, 0x69, 0xA9, 0xA9, 0xA9, 0xE9, 0xAA, 0x2A, 0xAA, 0x6A, 0xAA, 0xAA, 0xAA, 0xEA, 0xAB, 0x2A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0xEA, 0xAC, 0x2A, 0xAC, 0x6A, 0xAC, 0xAA, 0xAC, 0xEA, 0xAD, 0x2A, 0xAD, 0x6A, 0xAD, 0xAA, 0xAD, 0xEA, 0xAE, 0x2B, 0xAE, 0x6B, 0xAE, 0xAB, 0xAE, 0xEB, 0xAF, 0x2B, 0xAF, 0x6B, 0xAF, 0xAB, 0xAF, 0xEB, 0xB0, 0x2B, 0xB0, 0x6B, 0xB0, 0xAB, 0xB0, 0xEB, 0xB1, 0x2B, 0xB1, 0x6B, 0xB1, 0xAB, 0xB1, 0xEB, 0xB2, 0x2C, 0xB2, 0x6C, 0xB2, 0xAC, 0xB2, 0xEC, 0xB3, 0x2C, 0xB3, 0x6C, 0xB3, 0xAC, 0xB3, 0xEC, 0xB4, 0x2C, 0xB4, 0x6C, 0xB4, 0xAC, 0xB4, 0xEC, 0xB5, 0x2C, 0xB5, 0x6C, 0xB5, 0xAC, 0xB5, 0xEC, 0xB6, 0x2D, 0xB6, 0x6D, 0xB6, 0xAD, 0xB6, 0xED, 0xB7, 0x2D, 0xB7, 0x6D, 0xB7, 0xAD, 0xB7, 0xED, 0xB8, 0x2D, 0xB8, 0x6D, 0xB8, 0xAD, 0xB8, 0xED, 0xB9, 0x2D, 0xB9, 0x6D, 0xB9, 0xAD, 0xB9, 0xED, 0xBA, 0x2E, 0xBA, 0x6E, 0xBA, 0xAE, 0xBA, 0xEE, 0xBB, 0x2E, 0xBB, 0x6E, 0xBB, 0xAE, 0xBB, 0xEE, 0xBC, 0x2E, 0xBC, 0x6E, 0xBC, 0xAE, 0xBC, 0xEE, 0xBD, 0x2E, 0xBD, 0x6E, 0xBD, 0xAE, 0xBD, 0xEE, 0xBE, 0x2F, 0xBE, 0x6F, 0xBE, 0xAF, 0xBE, 0xEF, 0xBF, 0x2F, 0xBF, 0x6F, 0xBF, 0xAF, 0xBF, 0xEF, 0xC0, 0x2F, 0xC0, 0x6F, 0xC0, 0xAF, 0xC0, 0xEF, 0xC1, 0x2F, 0xC1, 0x6F, 0xC1, 0xAF, 0xC1, 0xEF, 0xC2, 0x30, 0xC2, 0x70, 0xC2, 0xB0, 0xC2, 0xF0, 0xC3, 0x30, 0xC3, 0x70, 0xC3, 0xB0, 0xC3, 0xF0, 0xC4, 0x30, 0xC4, 0x70, 0xC4, 0xB0, 0xC4, 0xF0, 0xC5, 0x30, 0xC5, 0x70, 0xC5, 0xB0, 0xC5, 0xF0, 0xC6, 0x31, 0xC6, 0x71, 0xC6, 0xB1, 0xC6, 0xF1, 0xC7, 0x31, 0xC7, 0x71, 0xC7, 0xB1, 0xC7, 0xF1, 0xC8, 0x31, 0xC8, 0x71, 0xC8, 0xB1, 0xC8, 0xF1, 0xC9, 0x31, 0xC9, 0x71, 0xC9, 0xB1, 0xC9, 0xF1, 0xCA, 0x32, 0xCA, 0x72, 0xCA, 0xB2, 0xCA, 0xF2, 0xCB, 0x32, 0xCB, 0x72, 0xCB, 0xB2, 0xCB, 0xF2, 0xCC, 0x32, 0xCC, 0x72, 0xCC, 0xB2, 0xCC, 0xF2, 0xCD, 0x32, 0xCD, 0x72, 0xCD, 0xB2, 0xCD, 0xF2, 0xCE, 0x33, 0xCE, 0x73, 0xCE, 0xB3, 0xCE, 0xF3, 0xCF, 0x33, 0xCF, 0x73, 0xCF, 0xB3, 0xCF, 0xF3, 0xD0, 0x33, 0xD0, 0x73, 0xD0, 0xB3, 0xD0, 0xF3, 0xD1, 0x33, 0xD1, 0x73, 0xD1, 0xB3, 0xD1, 0xF3, 0xD2, 0x34, 0xD2, 0x74, 0xD2, 0xB4, 0xD2, 0xF4, 0xD3, 0x34, 0xD3, 0x74, 0xD3, 0xB4, 0xD3, 0xF4, 0xD4, 0x34, 0xD4, 0x74, 0xD4, 0xB4, 0xD4, 0xF4, 0xD5, 0x34, 0xD5, 0x74, 0xD5, 0xB4, 0xD5, 0xF4, 0xD6, 0x35, 0xD6, 0x75, 0xD6, 0xB5, 0xD6, 0xF5, 0xD7, 0x35, 0xD7, 0x75, 0xD7, 0xB5, 0xD7, 0xF5, 0xD8, 0x35, 0xD8, 0x75, 0xD8, 0xB5, 0xD8, 0xF5, 0xD9, 0x35, 0xD9, 0x75, 0xD9, 0xB5, 0xD9, 0xF5, 0xDA, 0x36, 0xDA, 0x76, 0xDA, 0xB6, 0xDA, 0xF6, 0xDB, 0x36, 0xDB, 0x76, 0xDB, 0xB6, 0xDB, 0xF6, 0xDC, 0x36, 0xDC, 0x76, 0xDC, 0xB6, 0xDC, 0xF6, 0xDD, 0x36, 0xDD, 0x76, 0xDD, 0xB6, 0xDD, 0xF6, 0xDE, 0x37, 0xDE, 0x77, 0xDE, 0xB7, 0xDE, 0xF7, 0xDF, 0x37, 0xDF, 0x77, 0xDF, 0xB7, 0xDF, 0xF7, 0xE0, 0x37, 0xE0, 0x77, 0xE0, 0xB7, 0xE0, 0xF7, 0xE1, 0x37, 0xE1, 0x77, 0xE1, 0xB7, 0xE1, 0xF7, 0xE2, 0x38, 0xE2, 0x78, 0xE2, 0xB8, 0xE2, 0xF8, 0xE3, 0x38, 0xE3, 0x78, 0xE3, 0xB8, 0xE3, 0xF8, 0xE4, 0x38, 0xE4, 0x78, 0xE4, 0xB8, 0xE4, 0xF8, 0xE5, 0x38, 0xE5, 0x78, 0xE5, 0xB8, 0xE5, 0xF8, 0xE6, 0x39, 0xE6, 0x79, 0xE6, 0xB9, 0xE6, 0xF9, 0xE7, 0x39, 0xE7, 0x79, 0xE7, 0xB9, 0xE7, 0xF9, 0xE8, 0x39, 0xE8, 0x79, 0xE8, 0xB9, 0xE8, 0xF9, 0xE9, 0x39, 0xE9, 0x79, 0xE9, 0xB9, 0xE9, 0xF9, 0xEA, 0x3A, 0xEA, 0x7A, 0xEA, 0xBA, 0xEA, 0xFA, 0xEB, 0x3A, 0xEB, 0x7A, 0xEB, 0xBA, 0xEB, 0xFA, 0xEC, 0x3A, 0xEC, 0x7A, 0xEC, 0xBA, 0xEC, 0xFA, 0xED, 0x3A, 0xED, 0x7A, 0xED, 0xBA, 0xED, 0xFA, 0xEE, 0x3B, 0xEE, 0x7B, 0xEE, 0xBB, 0xEE, 0xFB, 0xEF, 0x3B, 0xEF, 0x7B, 0xEF, 0xBB, 0xEF, 0xFB, 0xF0, 0x3B, 0xF0, 0x7B, 0xF0, 0xBB, 0xF0, 0xFB, 0xF1, 0x3B, 0xF1, 0x7B, 0xF1, 0xBB, 0xF1, 0xFB, 0xF2, 0x3C, 0xF2, 0x7C, 0xF2, 0xBC, 0xF2, 0xFC, 0xF3, 0x3C, 0xF3, 0x7C, 0xF3, 0xBC, 0xF3, 0xFC, 0xF4, 0x3C, 0xF4, 0x7C, 0xF4, 0xBC, 0xF4, 0xFC, 0xF5, 0x3C, 0xF5, 0x7C, 0xF5, 0xBC, 0xF5, 0xFC, 0xF6, 0x3D, 0xF6, 0x7D, 0xF6, 0xBD, 0xF6, 0xFD, 0xF7, 0x3D, 0xF7, 0x7D, 0xF7, 0xBD, 0xF7, 0xFD, 0xF8, 0x3D, 0xF8, 0x7D, 0xF8, 0xBD, 0xF8, 0xFD, 0xF9, 0x3D, 0xF9, 0x7D, 0xF9, 0xBD, 0xF9, 0xFD, 0xFA, 0x3E, 0xFA, 0x7E, 0xFA, 0xBE, 0xFA, 0xFE, 0xFB, 0x3E, 0xFB, 0x7E, 0xFB, 0xBE, 0xFB, 0xFE, 0xFC, 0x3E, 0xFC, 0x7E, 0xFC, 0xBE, 0xFC, 0xFE, 0xFD, 0x3E, 0xFD, 0x7E, 0xFD, 0xBE, 0xFD, 0xFE, 0xFE, 0x3F, 0xFE, 0x7F, 0xFE, 0xBF, 0xFE, 0xFF, 0xFF, 0x3F, 0xFF, 0x7F, 0xFF, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0xBF, 0x02, 0x00, 0x02, 0x40, 0x02, 0x80, 0x02, 0xC0, 0x03, 0x00, 0x03, 0x40, 0x03, 0x80, 0x03, 0xC0, 0x04, 0x00, 0x04, 0x40, 0x04, 0x80, 0x04, 0xC0, 0x05, 0x00, 0x05, 0x40, 0x05, 0x80, 0x05, 0xC0, 0x06, 0x01, 0x06, 0x41, 0x06, 0x81, 0x06, 0xC1, 0x07, 0x01, 0x07, 0x41, 0x07, 0x81, 0x07, 0xC1, 0x08, 0x01, 0x08, 0x41, 0x08, 0x81, 0x08, 0xC1, 0x09, 0x01, 0x09, 0x41, 0x09, 0x81, 0x09, 0xC1, 0x0A, 0x02, 0x0A, 0x42, 0x0A, 0x82, 0x0A, 0xC2, 0x0B, 0x02, 0x0B, 0x42, 0x0B, 0x82, 0x0B, 0xC2, 0x0C, 0x02, 0x0C, 0x42, 0x0C, 0x82, 0x0C, 0xC2, 0x0D, 0x02, 0x0D, 0x42, 0x0D, 0x82, 0x0D, 0xC2, 0x0E, 0x03, 0x0E, 0x43, 0x0E, 0x83, 0x0E, 0xC3, 0x0F, 0x03, 0x0F, 0x43, 0x0F, 0x83, 0x0F, 0xC3, 0x10, 0x03, 0x10, 0x43, 0x10, 0x83, 0x10, 0xC3, 0x11, 0x03, 0x11, 0x43, 0x11, 0x83, 0x11, 0xC3, 0x12, 0x04, 0x12, 0x44, 0x12, 0x84, 0x12, 0xC4, 0x13, 0x04, 0x13, 0x44, 0x13, 0x84, 0x13, 0xC4, 0x14, 0x04, 0x14, 0x44, 0x14, 0x84, 0x14, 0xC4, 0x15, 0x04, 0x15, 0x44, 0x15, 0x84, 0x15, 0xC4, 0x16, 0x05, 0x16, 0x45, 0x16, 0x85, 0x16, 0xC5, 0x17, 0x05, 0x17, 0x45, 0x17, 0x85, 0x17, 0xC5, 0x18, 0x05, 0x18, 0x45, 0x18, 0x85, 0x18, 0xC5, 0x19, 0x05, 0x19, 0x45, 0x19, 0x85, 0x19, 0xC5, 0x1A, 0x06, 0x1A, 0x46, 0x1A, 0x86, 0x1A, 0xC6, 0x1B, 0x06, 0x1B, 0x46, 0x1B, 0x86, 0x1B, 0xC6, 0x1C, 0x06, 0x1C, 0x46, 0x1C, 0x86, 0x1C, 0xC6, 0x1D, 0x06, 0x1D, 0x46, 0x1D, 0x86, 0x1D, 0xC6, 0x1E, 0x07, 0x1E, 0x47, 0x1E, 0x87, 0x1E, 0xC7, 0x1F, 0x07, 0x1F, 0x47, 0x1F, 0x87, 0x1F, 0xC7, 0x20, 0x07, 0x20, 0x47, 0x20, 0x87, 0x20, 0xC7, 0x21, 0x07, 0x21, 0x47, 0x21, 0x87, 0x21, 0xC7, 0x22, 0x08, 0x22, 0x48, 0x22, 0x88, 0x22, 0xC8, 0x23, 0x08, 0x23, 0x48, 0x23, 0x88, 0x23, 0xC8, 0x24, 0x08, 0x24, 0x48, 0x24, 0x88, 0x24, 0xC8, 0x25, 0x08, 0x25, 0x48, 0x25, 0x88, 0x25, 0xC8, 0x26, 0x09, 0x26, 0x49, 0x26, 0x89, 0x26, 0xC9, 0x27, 0x09, 0x27, 0x49, 0x27, 0x89, 0x27, 0xC9, 0x28, 0x09, 0x28, 0x49, 0x28, 0x89, 0x28, 0xC9, 0x29, 0x09, 0x29, 0x49, 0x29, 0x89, 0x29, 0xC9, 0x2A, 0x0A, 0x2A, 0x4A, 0x2A, 0x8A, 0x2A, 0xCA, 0x2B, 0x0A, 0x2B, 0x4A, 0x2B, 0x8A, 0x2B, 0xCA, 0x2C, 0x0A, 0x2C, 0x4A, 0x2C, 0x8A, 0x2C, 0xCA, 0x2D, 0x0A, 0x2D, 0x4A, 0x2D, 0x8A, 0x2D, 0xCA, 0x2E, 0x0B, 0x2E, 0x4B, 0x2E, 0x8B, 0x2E, 0xCB, 0x2F, 0x0B, 0x2F, 0x4B, 0x2F, 0x8B, 0x2F, 0xCB, 0x30, 0x0B, 0x30, 0x4B, 0x30, 0x8B, 0x30, 0xCB, 0x31, 0x0B, 0x31, 0x4B, 0x31, 0x8B, 0x31, 0xCB, 0x32, 0x0C, 0x32, 0x4C, 0x32, 0x8C, 0x32, 0xCC, 0x33, 0x0C, 0x33, 0x4C, 0x33, 0x8C, 0x33, 0xCC, 0x34, 0x0C, 0x34, 0x4C, 0x34, 0x8C, 0x34, 0xCC, 0x35, 0x0C, 0x35, 0x4C, 0x35, 0x8C, 0x35, 0xCC, 0x36, 0x0D, 0x36, 0x4D, 0x36, 0x8D, 0x36, 0xCD, 0x37, 0x0D, 0x37, 0x4D, 0x37, 0x8D, 0x37, 0xCD, 0x38, 0x0D, 0x38, 0x4D, 0x38, 0x8D, 0x38, 0xCD, 0x39, 0x0D, 0x39, 0x4D, 0x39, 0x8D, 0x39, 0xCD, 0x3A, 0x0E, 0x3A, 0x4E, 0x3A, 0x8E, 0x3A, 0xCE, 0x3B, 0x0E, 0x3B, 0x4E, 0x3B, 0x8E, 0x3B, 0xCE, 0x3C, 0x0E, 0x3C, 0x4E, 0x3C, 0x8E, 0x3C, 0xCE, 0x3D, 0x0E, 0x3D, 0x4E, 0x3D, 0x8E, 0x3D, 0xCE, 0x3E, 0x0F, 0x3E, 0x4F, 0x3E, 0x8F, 0x3E, 0xCF, 0x3F, 0x0F, 0x3F, 0x4F, 0x3F, 0x8F, 0x3F, 0xCF, 0x40, 0x0F, 0x40, 0x4F, 0x40, 0x8F, 0x40, 0xCF, 0x41, 0x0F, 0x41, 0x4F, 0x41, 0x8F, 0x41, 0xCF, 0x42, 0x10, 0x42, 0x50, 0x42, 0x90, 0x42, 0xD0, 0x43, 0x10, 0x43, 0x50, 0x43, 0x90, 0x43, 0xD0, 0x44, 0x10, 0x44, 0x50, 0x44, 0x90, 0x44, 0xD0, 0x45, 0x10, 0x45, 0x50, 0x45, 0x90, 0x45, 0xD0, 0x46, 0x11, 0x46, 0x51, 0x46, 0x91, 0x46, 0xD1, 0x47, 0x11, 0x47, 0x51, 0x47, 0x91, 0x47, 0xD1, 0x48, 0x11, 0x48, 0x51, 0x48, 0x91, 0x48, 0xD1, 0x49, 0x11, 0x49, 0x51, 0x49, 0x91, 0x49, 0xD1, 0x4A, 0x12, 0x4A, 0x52, 0x4A, 0x92, 0x4A, 0xD2, 0x4B, 0x12, 0x4B, 0x52, 0x4B, 0x92, 0x4B, 0xD2, 0x4C, 0x12, 0x4C, 0x52, 0x4C, 0x92, 0x4C, 0xD2, 0x4D, 0x12, 0x4D, 0x52, 0x4D, 0x92, 0x4D, 0xD2, 0x4E, 0x13, 0x4E, 0x53, 0x4E, 0x93, 0x4E, 0xD3, 0x4F, 0x13, 0x4F, 0x53, 0x4F, 0x93, 0x4F, 0xD3, 0x50, 0x13, 0x50, 0x53, 0x50, 0x93, 0x50, 0xD3, 0x51, 0x13, 0x51, 0x53, 0x51, 0x93, 0x51, 0xD3, 0x52, 0x14, 0x52, 0x54, 0x52, 0x94, 0x52, 0xD4, 0x53, 0x14, 0x53, 0x54, 0x53, 0x94, 0x53, 0xD4, 0x54, 0x14, 0x54, 0x54, 0x54, 0x94, 0x54, 0xD4, 0x55, 0x14, 0x55, 0x54, 0x55, 0x94, 0x55, 0xD4, 0x56, 0x15, 0x56, 0x55, 0x56, 0x95, 0x56, 0xD5, 0x57, 0x15, 0x57, 0x55, 0x57, 0x95, 0x57, 0xD5, 0x58, 0x15, 0x58, 0x55, 0x58, 0x95, 0x58, 0xD5, 0x59, 0x15, 0x59, 0x55, 0x59, 0x95, 0x59, 0xD5, 0x5A, 0x16, 0x5A, 0x56, 0x5A, 0x96, 0x5A, 0xD6, 0x5B, 0x16, 0x5B, 0x56, 0x5B, 0x96, 0x5B, 0xD6, 0x5C, 0x16, 0x5C, 0x56, 0x5C, 0x96, 0x5C, 0xD6, 0x5D, 0x16, 0x5D, 0x56, 0x5D, 0x96, 0x5D, 0xD6, 0x5E, 0x17, 0x5E, 0x57, 0x5E, 0x97, 0x5E, 0xD7, 0x5F, 0x17, 0x5F, 0x57, 0x5F, 0x97, 0x5F, 0xD7, 0x60, 0x17, 0x60, 0x57, 0x60, 0x97, 0x60, 0xD7, 0x61, 0x17, 0x61, 0x57, 0x61, 0x97, 0x61, 0xD7, 0x62, 0x18, 0x62, 0x58, 0x62, 0x98, 0x62, 0xD8, 0x63, 0x18, 0x63, 0x58, 0x63, 0x98, 0x63, 0xD8, 0x64, 0x18, 0x64, 0x58, 0x64, 0x98, 0x64, 0xD8, 0x65, 0x18, 0x65, 0x58, 0x65, 0x98, 0x65, 0xD8, 0x66, 0x19, 0x66, 0x59, 0x66, 0x99, 0x66, 0xD9, 0x67, 0x19, 0x67, 0x59, 0x67, 0x99, 0x67, 0xD9, 0x68, 0x19, 0x68, 0x59, 0x68, 0x99, 0x68, 0xD9, 0x69, 0x19, 0x69, 0x59, 0x69, 0x99, 0x69, 0xD9, 0x6A, 0x1A, 0x6A, 0x5A, 0x6A, 0x9A, 0x6A, 0xDA, 0x6B, 0x1A, 0x6B, 0x5A, 0x6B, 0x9A, 0x6B, 0xDA, 0x6C, 0x1A, 0x6C, 0x5A, 0x6C, 0x9A, 0x6C, 0xDA, 0x6D, 0x1A, 0x6D, 0x5A, 0x6D, 0x9A, 0x6D, 0xDA, 0x6E, 0x1B, 0x6E, 0x5B, 0x6E, 0x9B, 0x6E, 0xDB, 0x6F, 0x1B, 0x6F, 0x5B, 0x6F, 0x9B, 0x6F, 0xDB, 0x70, 0x1B, 0x70, 0x5B, 0x70, 0x9B, 0x70, 0xDB, 0x71, 0x1B, 0x71, 0x5B, 0x71, 0x9B, 0x71, 0xDB, 0x72, 0x1C, 0x72, 0x5C, 0x72, 0x9C, 0x72, 0xDC, 0x73, 0x1C, 0x73, 0x5C, 0x73, 0x9C, 0x73, 0xDC, 0x74, 0x1C, 0x74, 0x5C, 0x74, 0x9C, 0x74, 0xDC, 0x75, 0x1C, 0x75, 0x5C, 0x75, 0x9C, 0x75, 0xDC, 0x76, 0x1D, 0x76, 0x5D, 0x76, 0x9D, 0x76, 0xDD, 0x77, 0x1D, 0x77, 0x5D, 0x77, 0x9D, 0x77, 0xDD, 0x78, 0x1D, 0x78, 0x5D, 0x78, 0x9D, 0x78, 0xDD, 0x79, 0x1D, 0x79, 0x5D, 0x79, 0x9D, 0x79, 0xDD, 0x7A, 0x1E, 0x7A, 0x5E, 0x7A, 0x9E, 0x7A, 0xDE, 0x7B, 0x1E, 0x7B, 0x5E, 0x7B, 0x9E, 0x7B, 0xDE, 0x7C, 0x1E, 0x7C, 0x5E, 0x7C, 0x9E, 0x7C, 0xDE, 0x7D, 0x1E, 0x7D, 0x5E, 0x7D, 0x9E, 0x7D, 0xDE, 0x7E, 0x1F, 0x7E, 0x5F, 0x7E, 0x9F, 0x7E, 0xDF, 0x7F, 0x1F, 0x7F, 0x5F, 0x7F, 0x9F, 0x7F, 0xDF, 0x80, 0x1F, 0x80, 0x5F, 0x80, 0x9F, 0x80, 0xDF, 0x81, 0x1F, 0x81, 0x5F, 0x81, 0x9F, 0x81, 0xDF, 0x82, 0x20, 0x82, 0x60, 0x82, 0xA0, 0x82, 0xE0, 0x83, 0x20, 0x83, 0x60, 0x83, 0xA0, 0x83, 0xE0, 0x84, 0x20, 0x84, 0x60, 0x84, 0xA0, 0x84, 0xE0, 0x85, 0x20, 0x85, 0x60, 0x85, 0xA0, 0x85, 0xE0, 0x86, 0x21, 0x86, 0x61, 0x86, 0xA1, 0x86, 0xE1, 0x87, 0x21, 0x87, 0x61, 0x87, 0xA1, 0x87, 0xE1, 0x88, 0x21, 0x88, 0x61, 0x88, 0xA1, 0x88, 0xE1, 0x89, 0x21, 0x89, 0x61, 0x89, 0xA1, 0x89, 0xE1, 0x8A, 0x22, 0x8A, 0x62, 0x8A, 0xA2, 0x8A, 0xE2, 0x8B, 0x22, 0x8B, 0x62, 0x8B, 0xA2, 0x8B, 0xE2, 0x8C, 0x22, 0x8C, 0x62, 0x8C, 0xA2, 0x8C, 0xE2, 0x8D, 0x22, 0x8D, 0x62, 0x8D, 0xA2, 0x8D, 0xE2, 0x8E, 0x23, 0x8E, 0x63, 0x8E, 0xA3, 0x8E, 0xE3, 0x8F, 0x23, 0x8F, 0x63, 0x8F, 0xA3, 0x8F, 0xE3, 0x90, 0x23, 0x90, 0x63, 0x90, 0xA3, 0x90, 0xE3, 0x91, 0x23, 0x91, 0x63, 0x91, 0xA3, 0x91, 0xE3, 0x92, 0x24, 0x92, 0x64, 0x92, 0xA4, 0x92, 0xE4, 0x93, 0x24, 0x93, 0x64, 0x93, 0xA4, 0x93, 0xE4, 0x94, 0x24, 0x94, 0x64, 0x94, 0xA4, 0x94, 0xE4, 0x95, 0x24, 0x95, 0x64, 0x95, 0xA4, 0x95, 0xE4, 0x96, 0x25, 0x96, 0x65, 0x96, 0xA5, 0x96, 0xE5, 0x97, 0x25, 0x97, 0x65, 0x97, 0xA5, 0x97, 0xE5, 0x98, 0x25, 0x98, 0x65, 0x98, 0xA5, 0x98, 0xE5, 0x99, 0x25, 0x99, 0x65, 0x99, 0xA5, 0x99, 0xE5, 0x9A, 0x26, 0x9A, 0x66, 0x9A, 0xA6, 0x9A, 0xE6, 0x9B, 0x26, 0x9B, 0x66, 0x9B, 0xA6, 0x9B, 0xE6, 0x9C, 0x26, 0x9C, 0x66, 0x9C, 0xA6, 0x9C, 0xE6, 0x9D, 0x26, 0x9D, 0x66, 0x9D, 0xA6, 0x9D, 0xE6, 0x9E, 0x27, 0x9E, 0x67, 0x9E, 0xA7, 0x9E, 0xE7, 0x9F, 0x27, 0x9F, 0x67, 0x9F, 0xA7, 0x9F, 0xE7, 0xA0, 0x27, 0xA0, 0x67, 0xA0, 0xA7, 0xA0, 0xE7, 0xA1, 0x27, 0xA1, 0x67, 0xA1, 0xA7, 0xA1, 0xE7, 0xA2, 0x28, 0xA2, 0x68, 0xA2, 0xA8, 0xA2, 0xE8, 0xA3, 0x28, 0xA3, 0x68, 0xA3, 0xA8, 0xA3, 0xE8, 0xA4, 0x28, 0xA4, 0x68, 0xA4, 0xA8, 0xA4, 0xE8, 0xA5, 0x28, 0xA5, 0x68, 0xA5, 0xA8, 0xA5, 0xE8, 0xA6, 0x29, 0xA6, 0x69, 0xA6, 0xA9, 0xA6, 0xE9, 0xA7, 0x29, 0xA7, 0x69, 0xA7, 0xA9, 0xA7, 0xE9, 0xA8, 0x29, 0xA8, 0x69, 0xA8, 0xA9, 0xA8, 0xE9, 0xA9, 0x29, 0xA9, 0x69, 0xA9, 0xA9, 0xA9, 0xE9, 0xAA, 0x2A, 0xAA, 0x6A, 0xAA, 0xAA, 0xAA, 0xEA, 0xAB, 0x2A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0xEA, 0xAC, 0x2A, 0xAC, 0x6A, 0xAC, 0xAA, 0xAC, 0xEA, 0xAD, 0x2A, 0xAD, 0x6A, 0xAD, 0xAA, 0xAD, 0xEA, 0xAE, 0x2B, 0xAE, 0x6B, 0xAE, 0xAB, 0xAE, 0xEB, 0xAF, 0x2B, 0xAF, 0x6B, 0xAF, 0xAB, 0xAF, 0xEB, 0xB0, 0x2B, 0xB0, 0x6B, 0xB0, 0xAB, 0xB0, 0xEB, 0xB1, 0x2B, 0xB1, 0x6B, 0xB1, 0xAB, 0xB1, 0xEB, 0xB2, 0x2C, 0xB2, 0x6C, 0xB2, 0xAC, 0xB2, 0xEC, 0xB3, 0x2C, 0xB3, 0x6C, 0xB3, 0xAC, 0xB3, 0xEC, 0xB4, 0x2C, 0xB4, 0x6C, 0xB4, 0xAC, 0xB4, 0xEC, 0xB5, 0x2C, 0xB5, 0x6C, 0xB5, 0xAC, 0xB5, 0xEC, 0xB6, 0x2D, 0xB6, 0x6D, 0xB6, 0xAD, 0xB6, 0xED, 0xB7, 0x2D, 0xB7, 0x6D, 0xB7, 0xAD, 0xB7, 0xED, 0xB8, 0x2D, 0xB8, 0x6D, 0xB8, 0xAD, 0xB8, 0xED, 0xB9, 0x2D, 0xB9, 0x6D, 0xB9, 0xAD, 0xB9, 0xED, 0xBA, 0x2E, 0xBA, 0x6E, 0xBA, 0xAE, 0xBA, 0xEE, 0xBB, 0x2E, 0xBB, 0x6E, 0xBB, 0xAE, 0xBB, 0xEE, 0xBC, 0x2E, 0xBC, 0x6E, 0xBC, 0xAE, 0xBC, 0xEE, 0xBD, 0x2E, 0xBD, 0x6E, 0xBD, 0xAE, 0xBD, 0xEE, 0xBE, 0x2F, 0xBE, 0x6F, 0xBE, 0xAF, 0xBE, 0xEF, 0xBF, 0x2F, 0xBF, 0x6F, 0xBF, 0xAF, 0xBF, 0xEF, 0xC0, 0x2F, 0xC0, 0x6F, 0xC0, 0xAF, 0xC0, 0xEF, 0xC1, 0x2F, 0xC1, 0x6F, 0xC1, 0xAF, 0xC1, 0xEF, 0xC2, 0x30, 0xC2, 0x70, 0xC2, 0xB0, 0xC2, 0xF0, 0xC3, 0x30, 0xC3, 0x70, 0xC3, 0xB0, 0xC3, 0xF0, 0xC4, 0x30, 0xC4, 0x70, 0xC4, 0xB0, 0xC4, 0xF0, 0xC5, 0x30, 0xC5, 0x70, 0xC5, 0xB0, 0xC5, 0xF0, 0xC6, 0x31, 0xC6, 0x71, 0xC6, 0xB1, 0xC6, 0xF1, 0xC7, 0x31, 0xC7, 0x71, 0xC7, 0xB1, 0xC7, 0xF1, 0xC8, 0x31, 0xC8, 0x71, 0xC8, 0xB1, 0xC8, 0xF1, 0xC9, 0x31, 0xC9, 0x71, 0xC9, 0xB1, 0xC9, 0xF1, 0xCA, 0x32, 0xCA, 0x72, 0xCA, 0xB2, 0xCA, 0xF2, 0xCB, 0x32, 0xCB, 0x72, 0xCB, 0xB2, 0xCB, 0xF2, 0xCC, 0x32, 0xCC, 0x72, 0xCC, 0xB2, 0xCC, 0xF2, 0xCD, 0x32, 0xCD, 0x72, 0xCD, 0xB2, 0xCD, 0xF2, 0xCE, 0x33, 0xCE, 0x73, 0xCE, 0xB3, 0xCE, 0xF3, 0xCF, 0x33, 0xCF, 0x73, 0xCF, 0xB3, 0xCF, 0xF3, 0xD0, 0x33, 0xD0, 0x73, 0xD0, 0xB3, 0xD0, 0xF3, 0xD1, 0x33, 0xD1, 0x73, 0xD1, 0xB3, 0xD1, 0xF3, 0xD2, 0x34, 0xD2, 0x74, 0xD2, 0xB4, 0xD2, 0xF4, 0xD3, 0x34, 0xD3, 0x74, 0xD3, 0xB4, 0xD3, 0xF4, 0xD4, 0x34, 0xD4, 0x74, 0xD4, 0xB4, 0xD4, 0xF4, 0xD5, 0x34, 0xD5, 0x74, 0xD5, 0xB4, 0xD5, 0xF4, 0xD6, 0x35, 0xD6, 0x75, 0xD6, 0xB5, 0xD6, 0xF5, 0xD7, 0x35, 0xD7, 0x75, 0xD7, 0xB5, 0xD7, 0xF5, 0xD8, 0x35, 0xD8, 0x75, 0xD8, 0xB5, 0xD8, 0xF5, 0xD9, 0x35, 0xD9, 0x75, 0xD9, 0xB5, 0xD9, 0xF5, 0xDA, 0x36, 0xDA, 0x76, 0xDA, 0xB6, 0xDA, 0xF6, 0xDB, 0x36, 0xDB, 0x76, 0xDB, 0xB6, 0xDB, 0xF6, 0xDC, 0x36, 0xDC, 0x76, 0xDC, 0xB6, 0xDC, 0xF6, 0xDD, 0x36, 0xDD, 0x76, 0xDD, 0xB6, 0xDD, 0xF6, 0xDE, 0x37, 0xDE, 0x77, 0xDE, 0xB7, 0xDE, 0xF7, 0xDF, 0x37, 0xDF, 0x77, 0xDF, 0xB7, 0xDF, 0xF7, 0xE0, 0x37, 0xE0, 0x77, 0xE0, 0xB7, 0xE0, 0xF7, 0xE1, 0x37, 0xE1, 0x77, 0xE1, 0xB7, 0xE1, 0xF7, 0xE2, 0x38, 0xE2, 0x78, 0xE2, 0xB8, 0xE2, 0xF8, 0xE3, 0x38, 0xE3, 0x78, 0xE3, 0xB8, 0xE3, 0xF8, 0xE4, 0x38, 0xE4, 0x78, 0xE4, 0xB8, 0xE4, 0xF8, 0xE5, 0x38, 0xE5, 0x78, 0xE5, 0xB8, 0xE5, 0xF8, 0xE6, 0x39, 0xE6, 0x79, 0xE6, 0xB9, 0xE6, 0xF9, 0xE7, 0x39, 0xE7, 0x79, 0xE7, 0xB9, 0xE7, 0xF9, 0xE8, 0x39, 0xE8, 0x79, 0xE8, 0xB9, 0xE8, 0xF9, 0xE9, 0x39, 0xE9, 0x79, 0xE9, 0xB9, 0xE9, 0xF9, 0xEA, 0x3A, 0xEA, 0x7A, 0xEA, 0xBA, 0xEA, 0xFA, 0xEB, 0x3A, 0xEB, 0x7A, 0xEB, 0xBA, 0xEB, 0xFA, 0xEC, 0x3A, 0xEC, 0x7A, 0xEC, 0xBA, 0xEC, 0xFA, 0xED, 0x3A, 0xED, 0x7A, 0xED, 0xBA, 0xED, 0xFA, 0xEE, 0x3B, 0xEE, 0x7B, 0xEE, 0xBB, 0xEE, 0xFB, 0xEF, 0x3B, 0xEF, 0x7B, 0xEF, 0xBB, 0xEF, 0xFB, 0xF0, 0x3B, 0xF0, 0x7B, 0xF0, 0xBB, 0xF0, 0xFB, 0xF1, 0x3B, 0xF1, 0x7B, 0xF1, 0xBB, 0xF1, 0xFB, 0xF2, 0x3C, 0xF2, 0x7C, 0xF2, 0xBC, 0xF2, 0xFC, 0xF3, 0x3C, 0xF3, 0x7C, 0xF3, 0xBC, 0xF3, 0xFC, 0xF4, 0x3C, 0xF4, 0x7C, 0xF4, 0xBC, 0xF4, 0xFC, 0xF5, 0x3C, 0xF5, 0x7C, 0xF5, 0xBC, 0xF5, 0xFC, 0xF6, 0x3D, 0xF6, 0x7D, 0xF6, 0xBD, 0xF6, 0xFD, 0xF7, 0x3D, 0xF7, 0x7D, 0xF7, 0xBD, 0xF7, 0xFD, 0xF8, 0x3D, 0xF8, 0x7D, 0xF8, 0xBD, 0xF8, 0xFD, 0xF9, 0x3D, 0xF9, 0x7D, 0xF9, 0xBD, 0xF9, 0xFD, 0xFA, 0x3E, 0xFA, 0x7E, 0xFA, 0xBE, 0xFA, 0xFE, 0xFB, 0x3E, 0xFB, 0x7E, 0xFB, 0xBE, 0xFB, 0xFE, 0xFC, 0x3E, 0xFC, 0x7E, 0xFC, 0xBE, 0xFC, 0xFE, 0xFD, 0x3E, 0xFD, 0x7E, 0xFD, 0xBE, 0xFD, 0xFE, 0xFE, 0x3F, 0xFE, 0x7F, 0xFE, 0xBF, 0xFE, 0xFF, 0xFF, 0x3F, 0xFF, 0x7F, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x32, 0x03, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x4F, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x64, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x4C, 0x49, 0xFF, 0xFF, 0x00, 0x00, 0x92, 0x9A, 0x2D, 0xEA, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x20, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBD, 0x31, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0x30, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x47, 0x34, 0xEB, 0xC5, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0x3B, 0xCF, 0x2A, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0xBF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0xBB, 0x1B, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0xFF, 0xFF, 0x66, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x34, 0xBA, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x53, 0x45, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x69, 0xBB, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x60, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x59, 0x15, 0xFF, 0xFF, 0x00, 0x00, 0x8A, 0xDE, 0x3C, 0x0E, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x23, 0xD5, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0x69, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x56, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0x97, 0xD7, 0x1B, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0xBF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x16, 0xBC, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x66, 0x18, 0xA3, 0x64, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x83, 0xFF, 0xFF, 0x6E, 0x6E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0x67, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x58, 0x00, 0x00, 0x46, 0x58, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x60, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0x73, 0x74, 0xC4, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x86, 0x5E, 0x46, 0x5F, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x32, 0x56, 0xFF, 0xFF, 0x00, 0x00, 0xB0, 0xE4, 0x20, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x5C, 0x78, 0xDF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0xE4, 0xBF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0xA8, 0xBD, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0x53, 0xA1, 0xAB, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0x99, 0x9F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0xE7, 0xFF, 0xFF, 0x76, 0xCA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0xC4, 0x00, 0x00, 0x4A, 0xC4, 0xFF, 0xFF, 0x31, 0x2B, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x59, 0x52, 0x69, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x4B, 0x62, 0x4B, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x40, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB1, 0xFF, 0x20, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x5B, 0x2B, 0xF6, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0xA3, 0xC4, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0x0B, 0xBE, 0xD7, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0xC4, 0x9F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xB8, 0x91, 0x5C, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x83, 0x42, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x85, 0x65, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x18, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x2A, 0xCD, 0xFF, 0xFF, 0x59, 0x44, 0x00, 0x00, 0x59, 0x44, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x83, 0xD4, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x7E, 0xB3, 0xFF, 0xFF, 0x00, 0x00, 0x6C, 0x99, 0x6C, 0x99, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x53, 0x11, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0x3F, 0x39, 0x11, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x6E, 0xCC, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x81, 0xB8, 0x11, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x9F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x81, 0x96, 0x5C, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x73, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x29, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x5D, 0xFF, 0xFF, 0x8D, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0x60, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x90, 0x00, 0x00, 0x0C, 0x24, 0xFF, 0xFF, 0x5F, 0x73, 0x00, 0x00, 0x5F, 0x73, 0xFF, 0xFF, 0x5F, 0xA9, 0x08, 0xF7, 0x68, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0xBB, 0x91, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x43, 0x82, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x6E, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0xAF, 0xA5, 0x4F, 0xA5, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x5A, 0xDC, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x3C, 0xBB, 0xA4, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0xF3, 0x9F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0xCB, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0xC9, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x13, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0x9E, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x6D, 0xFF, 0xFF, 0x95, 0xDE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0xEF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x54, 0x48, 0xFF, 0xFF, 0x70, 0x27, 0x00, 0x00, 0x70, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x9A, 0x06, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x89, 0x30, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0x87, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x9D, 0xBC, 0xC9, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0xEF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0x76, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0x39, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x5E, 0x5E, 0xA4, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0xA8, 0x54, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0xD0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xFB, 0xFF, 0xFF, 0x9E, 0x51, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0x9C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAF, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x62, 0x00, 0x00, 0x3B, 0x4B, 0xFF, 0xFF, 0x95, 0x32, 0x00, 0x00, 0x68, 0xA6, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x89, 0x15, 0xFF, 0xFF, 0x4B, 0x17, 0x20, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0xA2, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0xC5, 0x8D, 0x97, 0xAD, 0xBF, 0x0C, 0x26, 0x4B, 0xFF, 0xFF, 0x9F, 0xFF, 0x80, 0x00, 0x04, 0xAC, 0xFF, 0xFF, 0xA4, 0xAC, 0x78, 0xD7, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x60, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x05, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0x7F, 0x01, 0xAA, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0xA9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0x78, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x79, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x28, 0x27, 0xFF, 0xFF, 0xBF, 0xFF, 0x08, 0x5D, 0x48, 0x5D, 0xFF, 0xFF, 0xB1, 0x44, 0x00, 0x00, 0x84, 0x1F, 0xFF, 0xFF, 0xBE, 0x0C, 0x00, 0x00, 0x9E, 0x0C, 0xFF, 0xFF, 0xBD, 0xDD, 0x00, 0x00, 0xC6, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0x22, 0x3A, 0x00, 0x00, 0xFF, 0xFF, 0xC2, 0x3A, 0x1A, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0x1B, 0x12, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0x6D, 0x0C, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0xAC, 0x74, 0x07, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x8F, 0x03, 0x6C, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0x6B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xA3, 0xC5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0x95, 0x00, 0x00, 0x0B, 0x95, 0xFF, 0xFF, 0xDA, 0x0E, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0xF1, 0x96, 0x11, 0x97, 0x58, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x8F, 0xB5, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBA, 0x41, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0xB4, 0xB7, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0xBA, 0x50, 0x10, 0xF3, 0x20, 0x00, 0xFF, 0xFF, 0xB0, 0xF2, 0x0A, 0x87, 0x20, 0x00, 0xFF, 0xFF, 0xAA, 0x86, 0x04, 0xD0, 0x20, 0x00, 0xFF, 0xFF, 0xA4, 0xCF, 0x00, 0x0A, 0x20, 0x00, 0xFF, 0xFF, 0xA0, 0x09, 0x00, 0x00, 0x0D, 0x7A, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBB, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x5B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDE, 0x26, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0x29, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x16, 0xA3, 0x56, 0xA3, 0xBF, 0xFF, 0xFF, 0xFF, 0x08, 0xBB, 0x88, 0xBA, 0x03, 0xC2, 0xFF, 0xFF, 0x03, 0xC2, 0xA3, 0xC1, 0x19, 0xD4, 0xFF, 0xFF, 0x48, 0x52, 0x59, 0xD3, 0x37, 0x92, 0xCC, 0x6C, 0xFF, 0xFF, 0x9F, 0xFF, 0x0A, 0x7A, 0x7D, 0x73, 0xFF, 0xFF, 0xAA, 0x7A, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0xAB, 0xB9, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0xAA, 0xB8, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0xA5, 0x7B, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0xA0, 0xFD, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x0E, 0xF4, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xB1, 0x41, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD3, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x1D, 0xD7, 0x13, 0xFF, 0xFF, 0x00, 0x00, 0x64, 0x26, 0x84, 0x33, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x76, 0xA9, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0x38, 0x89, 0x00, 0x00, 0xFD, 0xEE, 0xFF, 0xFF, 0x97, 0x50, 0x00, 0x00, 0xAE, 0x0F, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x53, 0x9D, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x2D, 0x5A, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x9E, 0x71, 0xFF, 0xFF, 0xBA, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCA, 0x28, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE8, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x38, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x39, 0xB2, 0x64, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0x54, 0x62, 0x3C, 0xFF, 0xFF, 0x1B, 0xB8, 0x5B, 0xB8, 0x03, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0x43, 0x6F, 0x0E, 0x59, 0xFF, 0xFF, 0x40, 0x00, 0x06, 0x5F, 0x0F, 0x2B, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x2B, 0x00, 0x00, 0xDF, 0x49, 0xFF, 0xFF, 0x8F, 0x30, 0x10, 0x7F, 0xBF, 0x88, 0xFF, 0xFF, 0x90, 0x7F, 0x00, 0x00, 0x80, 0x00, 0xFF, 0xFF, 0x98, 0x67, 0x00, 0x00, 0x80, 0x00, 0xFF, 0xFF, 0x94, 0x45, 0x00, 0x00, 0x40, 0x87, 0xFF, 0xFF, 0x9D, 0xF5, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0x9A, 0x94, 0x00, 0x00, 0x25, 0xD3, 0xFF, 0xFF, 0x9C, 0x62, 0xFF, 0xFF, 0xC0, 0xD2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDB, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xE9, 0xFF, 0xFF, 0x08, 0x71, 0x08, 0x71, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x57, 0xAB, 0x35, 0xC7, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x28, 0x8D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x41, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC8, 0x14, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0x74, 0x0C, 0x00, 0x00, 0xD6, 0xA3, 0xFF, 0xFF, 0x82, 0xD3, 0x05, 0x28, 0xBF, 0xFF, 0xFF, 0xFF, 0x85, 0x28, 0x00, 0x00, 0x99, 0x9B, 0xFF, 0xFF, 0x8A, 0x88, 0x00, 0x00, 0x80, 0x00, 0xFF, 0xFF, 0x8B, 0x5D, 0x00, 0x00, 0x80, 0x00, 0xFF, 0xFF, 0x88, 0x52, 0x00, 0x00, 0x77, 0xFB, 0xFF, 0xFF, 0x87, 0x05, 0xFF, 0xFF, 0xD2, 0x28, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF9, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xDD, 0xB2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0x77, 0x6C, 0x48, 0xFF, 0xFF, 0x05, 0x65, 0x25, 0x65, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x37, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x58, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x71, 0xA2, 0x00, 0x00, 0xDD, 0x68, 0xFF, 0xFF, 0x7A, 0x6A, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xFF, 0x7C, 0xE9, 0x00, 0x00, 0xB3, 0xB6, 0xFF, 0xFF, 0x7F, 0x6A, 0x00, 0x00, 0x95, 0x8D, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x85, 0xAA, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xEE, 0x51, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x86, 0xE4, 0xFF, 0xFF, 0x00, 0x00, 0x1B, 0x35, 0x4F, 0xA4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x37, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0x96, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xFF, 0x6C, 0x95, 0x00, 0x00, 0xCB, 0x94, 0xFF, 0xFF, 0x6F, 0x5D, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xFF, 0x70, 0x3F, 0x00, 0x00, 0xB5, 0x33, 0xFF, 0xFF, 0x71, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x6B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x65, 0x5B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x22, 0x70, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0xFA, 0x00, 0x00, 0x35, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x45, 0x73, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0x1D, 0x00, 0x00, 0xEB, 0x32, 0xFF, 0xFF, 0x5C, 0x4F, 0x00, 0x00, 0xD8, 0x8B, 0xFF, 0xFF, 0x61, 0xBB, 0x00, 0x00, 0xC9, 0x1C, 0xFF, 0xFF, 0x62, 0x6A, 0xFF, 0xFF, 0x56, 0x63, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x3D, 0x00, 0x00, 0x3F, 0xC4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x05, 0x23, 0x65, 0x23, 0xFF, 0xFF, 0x00, 0x00, 0x5E, 0xF6, 0x51, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x37, 0x9A, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x20, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBC, 0xE6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0xF9, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0xAE, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0xC3, 0xEB, 0xA9, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x36, 0xCF, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x38, 0xBF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0xB9, 0xFA, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0xFF, 0xFF, 0x5A, 0x06, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0xC5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x09, 0x00, 0x00, 0x3D, 0x11, 0xFF, 0xFF, 0x22, 0x66, 0x00, 0x00, 0x57, 0x94, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x53, 0x9B, 0x61, 0x71, 0xFF, 0xFF, 0x00, 0x00, 0x6F, 0xC6, 0x3D, 0x04, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x39, 0x21, 0x0B, 0xFF, 0xFF, 0x00, 0x00, 0xBD, 0x45, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x25, 0xB9, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x05, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0xA0, 0xD5, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xFA, 0xBE, 0x19, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0x46, 0xBE, 0xB5, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0x9D, 0xA3, 0x44, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0x14, 0xFF, 0xFF, 0x64, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x26, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x80, 0x00, 0x00, 0x45, 0x87, 0xFF, 0xFF, 0x1B, 0x3C, 0x00, 0x00, 0x5E, 0xA0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x76, 0x6A, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0x88, 0x67, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0x54, 0x60, 0x3B, 0xFF, 0xFF, 0x00, 0x00, 0xA6, 0x62, 0x2F, 0x15, 0xFF, 0xFF, 0x00, 0x00, 0xA6, 0x14, 0x1C, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0xB5, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x5C, 0x18, 0xDE, 0xD5, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0xC5, 0xBC, 0xB9, 0x00, 0x00, 0xFF, 0xFF, 0x6B, 0xBC, 0xC0, 0x77, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0xE1, 0x9E, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0x7C, 0x9F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0x76, 0xFF, 0xFF, 0x6C, 0x49, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x78, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0xEE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x50, 0xCA, 0x00, 0x00, 0x4E, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0x46, 0xFA, 0x71, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x28, 0x5F, 0x77, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x30, 0x39, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0x41, 0x3D, 0x50, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0xAF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x5B, 0xFC, 0xFA, 0x27, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x87, 0xC0, 0xB0, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0xFE, 0xC3, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0xC7, 0x9D, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0x7A, 0x8C, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x43, 0x81, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x73, 0xBD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x4D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x41, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x48, 0xC3, 0x00, 0x00, 0x5C, 0xDF, 0xFF, 0xFF, 0x5C, 0x25, 0x00, 0x00, 0x5B, 0x24, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x8A, 0xFF, 0xFF, 0x00, 0x00, 0x65, 0xE3, 0x6D, 0xB5, 0xFF, 0xFF, 0x00, 0x00, 0xA8, 0x95, 0x6D, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0xC8, 0x67, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0xDF, 0xC7, 0xEB, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x1C, 0xB7, 0x61, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x80, 0xA3, 0x9A, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0xD9, 0x98, 0x41, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x92, 0x7D, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x26, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x85, 0x04, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0xA9, 0x00, 0x00, 0x37, 0x52, 0xFF, 0xFF, 0x63, 0x8D, 0x00, 0x00, 0x5F, 0x50, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x95, 0xC6, 0xFF, 0xFF, 0x00, 0x00, 0x44, 0x22, 0x8F, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xE1, 0x8D, 0x38, 0xFF, 0xFF, 0x00, 0x00, 0xAD, 0xCD, 0x90, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0x9B, 0xDC, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x8A, 0xBB, 0xF5, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0x89, 0xA0, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0xC8, 0x7A, 0xD4, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0xF9, 0x7E, 0xD4, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0x52, 0x84, 0x56, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x64, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x57, 0xFF, 0xFF, 0x8C, 0x47, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0xC8, 0x00, 0x00, 0x24, 0xE2, 0xFF, 0xFF, 0x76, 0x95, 0x00, 0x00, 0x64, 0xA5, 0xFF, 0xFF, 0x6A, 0x20, 0x00, 0x00, 0x82, 0xFC, 0xFF, 0xFF, 0x09, 0x57, 0x30, 0x60, 0xA2, 0x73, 0xFF, 0xFF, 0x00, 0x00, 0x86, 0xBC, 0xA0, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0xD2, 0xAC, 0xAB, 0xAA, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0x73, 0xC1, 0x5E, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0xEF, 0x76, 0xC6, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xB5, 0x82, 0x51, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0x83, 0x88, 0xB9, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x30, 0x62, 0x64, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x82, 0x62, 0xB9, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x30, 0xFF, 0xFF, 0x93, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x09, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB7, 0x2B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x29, 0x00, 0x00, 0x4B, 0x19, 0xFF, 0xFF, 0x8B, 0x6C, 0x00, 0x00, 0x80, 0x8F, 0xFF, 0xFF, 0x6A, 0x62, 0x00, 0x00, 0x9F, 0xAB, 0xFF, 0xFF, 0x00, 0x00, 0x2C, 0x6F, 0xC3, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xC2, 0xE5, 0xC4, 0x81, 0x02, 0xF2, 0xFF, 0xFF, 0x9C, 0xD8, 0x8B, 0x69, 0x05, 0xCE, 0xFF, 0xFF, 0xA0, 0xC4, 0x8F, 0xAD, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0xEC, 0x73, 0xAC, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x94, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0xAE, 0xFF, 0xFF, 0x9B, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC1, 0xE4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC2, 0xED, 0x00, 0x00, 0x3D, 0x34, 0xFF, 0xFF, 0xA7, 0x33, 0x00, 0x00, 0x87, 0x3A, 0xFF, 0xFF, 0xC5, 0xAC, 0x00, 0x00, 0x97, 0xA7, 0xFF, 0xFF, 0xB6, 0xC1, 0x00, 0x00, 0xCD, 0x92, 0x20, 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0x10, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0xBE, 0xD2, 0x11, 0x33, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0x57, 0x11, 0xAE, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0xAD, 0x0B, 0xB2, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xB1, 0x06, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0xC9, 0x02, 0xB3, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0xB2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xD9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x8A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0x8C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD0, 0x3E, 0x00, 0x00, 0x35, 0xC3, 0xFF, 0xFF, 0xDA, 0x2F, 0x00, 0x00, 0x74, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0x24, 0xDD, 0x8C, 0xE4, 0xA1, 0x24, 0xFF, 0xFF, 0x00, 0x00, 0xC2, 0xAE, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0xDC, 0x8A, 0x00, 0x00, 0x2D, 0x78, 0xFF, 0xFF, 0xBF, 0xC2, 0x00, 0x00, 0x1C, 0x57, 0xFF, 0xFF, 0xBB, 0x1C, 0x13, 0x60, 0x24, 0x00, 0xFF, 0xFF, 0xAF, 0xE6, 0x0B, 0x1F, 0x26, 0x00, 0xFF, 0xFF, 0xA9, 0x58, 0x03, 0x99, 0x28, 0x00, 0xFF, 0xFF, 0xA2, 0xFE, 0x00, 0x00, 0x26, 0xD4, 0xFF, 0xFF, 0x9E, 0xE1, 0x00, 0x00, 0x09, 0xA6, 0xFF, 0xFF, 0x9F, 0xDF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xA0, 0xC3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0x9D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBE, 0x9D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD2, 0x82, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xED, 0x90, 0x00, 0x00, 0x1C, 0x52, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0xB8, 0x55, 0x8A, 0xCB, 0x4E, 0xFF, 0xFF, 0x00, 0x00, 0x8A, 0x82, 0x29, 0xDD, 0xFF, 0xFF, 0x00, 0x00, 0xBC, 0x23, 0x40, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xA4, 0x75, 0x00, 0x00, 0xE5, 0x3B, 0xFF, 0xFF, 0x9F, 0x64, 0x07, 0xCE, 0x7E, 0x57, 0xFF, 0xFF, 0xA7, 0xA5, 0x00, 0x00, 0x32, 0xC7, 0xFF, 0xFF, 0xAC, 0x72, 0x00, 0x00, 0x3E, 0x8E, 0xFF, 0xFF, 0xA3, 0x64, 0x00, 0x00, 0x38, 0xB9, 0xFF, 0xFF, 0x9F, 0x06, 0x00, 0x00, 0x1C, 0xB4, 0xFF, 0xFF, 0x9F, 0xC7, 0x00, 0x00, 0x21, 0x3A, 0xFF, 0xFF, 0xA0, 0x28, 0x00, 0x00, 0x12, 0x11, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xAA, 0x71, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBE, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEF, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0x9E, 0xD9, 0x6C, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0x3C, 0x8B, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x85, 0xC2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9C, 0x29, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x5D, 0x98, 0x68, 0x19, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0x79, 0xE0, 0x00, 0x00, 0xCF, 0x73, 0xFF, 0xFF, 0x96, 0x80, 0x00, 0x00, 0xA0, 0x2C, 0xFF, 0xFF, 0x9B, 0x2E, 0x00, 0x00, 0x80, 0xC9, 0xFF, 0xFF, 0x9A, 0x3D, 0x00, 0x00, 0x3F, 0x4B, 0xFF, 0xFF, 0xA3, 0xC6, 0x00, 0x00, 0x3B, 0xDD, 0xFF, 0xFF, 0x9F, 0xB7, 0x00, 0x00, 0x1D, 0x15, 0xFF, 0xFF, 0xA1, 0xA2, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x9C, 0xD1, 0xFF, 0xFF, 0xB6, 0xC9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC5, 0xB9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEA, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0x08, 0xC0, 0xB2, 0x4B, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0x77, 0x74, 0xDA, 0xFF, 0xFF, 0x22, 0x13, 0x58, 0xF5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x76, 0x0B, 0x3B, 0xFF, 0xFF, 0x2C, 0xD4, 0x55, 0x93, 0x43, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x8B, 0x19, 0x65, 0xFF, 0xFF, 0xFF, 0xFF, 0x7A, 0xA6, 0x00, 0x00, 0xD6, 0xB2, 0xFF, 0xFF, 0x83, 0xCD, 0x06, 0x79, 0xC3, 0xCC, 0xFF, 0xFF, 0x84, 0xC7, 0x00, 0x00, 0x96, 0x12, 0xFF, 0xFF, 0x8A, 0xB8, 0x00, 0x00, 0x80, 0x7D, 0xFF, 0xFF, 0x8A, 0x4F, 0x00, 0x00, 0x86, 0x29, 0xFF, 0xFF, 0x85, 0xFA, 0x00, 0x00, 0x75, 0x7D, 0xFF, 0xFF, 0x86, 0xB1, 0xFF, 0xFF, 0xC1, 0x29, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE2, 0x3B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x4F, 0xFF, 0xFF, 0x10, 0x69, 0x0A, 0x06, 0x88, 0xD4, 0xFF, 0xFF, 0x00, 0x00, 0x38, 0x05, 0x33, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x36, 0x53, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0xDD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x55, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x74, 0xE7, 0x00, 0x00, 0xE2, 0x1D, 0xFF, 0xFF, 0x7A, 0x72, 0x00, 0x00, 0xBF, 0x38, 0xFF, 0xFF, 0x7B, 0x79, 0x00, 0x00, 0xB8, 0x4B, 0xFF, 0xFF, 0x7D, 0xF6, 0x00, 0x00, 0x92, 0x77, 0xFF, 0xFF, 0x82, 0x18, 0x00, 0x00, 0x86, 0xE4, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xD6, 0x34, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xE7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x5D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA5, 0x54, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x67, 0x85, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0xD8, 0x1E, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x71, 0x00, 0x00, 0x34, 0x2E, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0x57, 0x00, 0x00, 0xDC, 0x97, 0xFF, 0xFF, 0x69, 0x32, 0x00, 0x00, 0xD2, 0x88, 0xFF, 0xFF, 0x6B, 0x31, 0x00, 0x00, 0xBE, 0xC5, 0xFF, 0xFF, 0x6D, 0x32, 0x00, 0x00, 0xB9, 0x60, 0xFF, 0xFF, 0x6D, 0xAA, 0xFF, 0xFF, 0xF9, 0x4D, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x81, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xF9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x81, 0xDE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x86, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xE1, 0x00, 0x00, 0x2C, 0x2B, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x4B, 0x6C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0xD4, 0x00, 0x00, 0xF6, 0xE7, 0xFF, 0xFF, 0x5A, 0x66, 0x18, 0x17, 0xE0, 0x38, 0xFF, 0xFF, 0x4E, 0xFD, 0x00, 0x00, 0xD0, 0x28, 0xFF, 0xFF, 0x60, 0x00, 0xFF, 0xEF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x93, 0x39, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x55, 0x65, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0xBD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF6, 0x3D, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0x8D, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0xB6, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x45, 0x6F, 0x00, 0x00, 0xEB, 0x67, 0xFF, 0xFF, 0x48, 0x01, 0xFF, 0xFF, 0x4B, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x57, 0x54, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x28, 0x08, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x46, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0xBF, 0x5B, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x44, 0xEF, 0xFF, 0xFF, 0x00, 0x00, 0x9A, 0xBE, 0x32, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0xB3, 0xDE, 0x20, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0x52, 0x1E, 0x52, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x48, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x87, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0xF2, 0xA9, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0xE9, 0xD0, 0xE8, 0x00, 0x00, 0xFF, 0xFF, 0x59, 0xEF, 0xBF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x5C, 0xE7, 0xBA, 0x27, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x61, 0xFF, 0xFF, 0x4E, 0x37, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5B, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x23, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x2D, 0x00, 0x00, 0x3D, 0xAF, 0xFF, 0xFF, 0x08, 0x14, 0x00, 0x00, 0x61, 0xF5, 0xFF, 0xFF, 0x00, 0x00, 0x46, 0x22, 0x5D, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0x5E, 0xB3, 0x60, 0x81, 0xFF, 0xFF, 0x00, 0x00, 0x99, 0xFE, 0x45, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0xAD, 0x4E, 0xAF, 0xFF, 0xFF, 0x03, 0xD5, 0xFF, 0xFF, 0x34, 0x11, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x1B, 0x87, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x50, 0xD7, 0xD5, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0xAB, 0xBF, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x24, 0xBF, 0x63, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xF5, 0xB0, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0xA1, 0xFF, 0xFF, 0x51, 0x6D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0xA7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0x19, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x43, 0x66, 0x00, 0x00, 0x41, 0x12, 0xFF, 0xFF, 0x23, 0xEA, 0x00, 0x00, 0x5F, 0x6B, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x16, 0x72, 0x9C, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x51, 0x60, 0x8A, 0xFF, 0xFF, 0x00, 0x00, 0xA1, 0x10, 0x58, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0xB0, 0xAB, 0x62, 0x07, 0xFF, 0xFF, 0x1D, 0x95, 0xFF, 0xFF, 0x41, 0x71, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0xD5, 0xE7, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0xF9, 0xBA, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0x3A, 0xC1, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x47, 0x9F, 0xBA, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0xD1, 0x9F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x6F, 0x72, 0xFF, 0xFF, 0x54, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7B, 0xB0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0x70, 0x00, 0x00, 0x4F, 0x30, 0xFF, 0xFF, 0x22, 0x58, 0x00, 0x00, 0x60, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x84, 0x47, 0xFF, 0xFF, 0x00, 0x00, 0x4D, 0x44, 0x79, 0xC3, 0xFF, 0xFF, 0x00, 0x00, 0x6F, 0xDA, 0x7A, 0xD2, 0xFF, 0xFF, 0x00, 0x00, 0xB6, 0xB9, 0x71, 0x4C, 0xFF, 0xFF, 0x02, 0x97, 0xFF, 0xFF, 0x64, 0x85, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x50, 0xC1, 0xFA, 0xFA, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0x21, 0xC1, 0xE5, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0x60, 0xC3, 0x7D, 0x00, 0x00, 0xFF, 0xFF, 0x6F, 0x4C, 0x9E, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x7B, 0xA3, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x76, 0x51, 0x82, 0xEF, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xF4, 0xFF, 0xFF, 0x57, 0xFA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x11, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0x0F, 0x00, 0x00, 0x4F, 0x5B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xED, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0xAC, 0x84, 0x90, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x7A, 0x87, 0x48, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0xF1, 0x87, 0xEA, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x9A, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0xB9, 0xCA, 0xC3, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x90, 0xC2, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x67, 0x9F, 0x81, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x5D, 0x93, 0x52, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xB6, 0x82, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x68, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x6C, 0x72, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0x1D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x53, 0x69, 0x00, 0x00, 0x5F, 0xED, 0xFF, 0xFF, 0x20, 0x5D, 0x00, 0x00, 0x8A, 0x58, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xB5, 0x9A, 0xBE, 0xFF, 0xFF, 0x00, 0x00, 0x79, 0x2F, 0x98, 0x19, 0xFF, 0xFF, 0x00, 0x00, 0xC1, 0x26, 0x9D, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x18, 0xE2, 0xA1, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xB8, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x19, 0x9D, 0xBB, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0x46, 0x77, 0x77, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0x00, 0x7C, 0xE9, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0x39, 0x81, 0xB8, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0xA3, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x06, 0xFF, 0xFF, 0x73, 0x27, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0xE8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0x33, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xE4, 0x00, 0x00, 0x51, 0xB9, 0xFF, 0xFF, 0x83, 0x2B, 0x00, 0x00, 0x6F, 0x82, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xEF, 0xFF, 0xFF, 0x00, 0x00, 0x5D, 0xE0, 0xA7, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0xE2, 0xF8, 0xAE, 0x9C, 0xE8, 0xD4, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0x9D, 0xC3, 0x13, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0xAF, 0x77, 0xD7, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x20, 0x7D, 0x0D, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0x42, 0x82, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0x37, 0x8C, 0xB9, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x3D, 0x5D, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0x26, 0x50, 0xEE, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0xE6, 0xFF, 0xFF, 0x87, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x61, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0xCD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x8C, 0x00, 0x00, 0x3D, 0xC0, 0xFF, 0xFF, 0x85, 0x26, 0x00, 0x00, 0x76, 0xDD, 0xFF, 0xFF, 0x5E, 0xCB, 0x00, 0x00, 0x9E, 0x12, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0xB0, 0xC0, 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x9F, 0xCB, 0x3F, 0x1B, 0x8C, 0xFF, 0xFF, 0xB2, 0xF2, 0x82, 0xCF, 0x00, 0x6A, 0xFF, 0xFF, 0x9C, 0xB7, 0x7C, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0x90, 0x6B, 0xAF, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x5D, 0x6C, 0xA9, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x29, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0x6C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0x34, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x20, 0xFF, 0xFF, 0x8F, 0x49, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA4, 0x79, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0xC5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x7B, 0x00, 0x00, 0x2E, 0xD6, 0xFF, 0xFF, 0xB1, 0x8D, 0x00, 0x00, 0x69, 0x86, 0xFF, 0xFF, 0xB3, 0x1E, 0x00, 0x00, 0x91, 0x0A, 0xFF, 0xFF, 0xBB, 0x8D, 0x00, 0x00, 0xBE, 0x84, 0x20, 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0x2A, 0xF1, 0x00, 0x00, 0xFF, 0xFF, 0xDD, 0x27, 0x0B, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0x65, 0x05, 0x27, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0x7F, 0x05, 0xA3, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA3, 0x06, 0x23, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0x22, 0x01, 0x91, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x20, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0xEC, 0xFF, 0xFF, 0x99, 0xED, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0x04, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0x94, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0x53, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCF, 0x5A, 0x07, 0xB4, 0x09, 0xC4, 0xFF, 0xFF, 0xDD, 0xE4, 0x00, 0x00, 0x44, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0x2B, 0x9E, 0x72, 0x35, 0xC8, 0x2F, 0xFF, 0xFF, 0x17, 0x02, 0xAD, 0x7C, 0x45, 0x1D, 0xFD, 0x4D, 0xFF, 0xFF, 0xBF, 0xFF, 0x20, 0x1A, 0xBE, 0x1E, 0xFF, 0xFF, 0xBB, 0x78, 0x00, 0x00, 0x39, 0x0F, 0xFF, 0xFF, 0xB3, 0xA7, 0x00, 0x00, 0x16, 0xAD, 0xFF, 0xFF, 0xB1, 0x53, 0x00, 0x00, 0x1C, 0xAD, 0xFF, 0xFF, 0xA9, 0xE4, 0x03, 0xB9, 0x21, 0xC9, 0xFF, 0xFF, 0xA3, 0x31, 0x00, 0x00, 0x24, 0xF4, 0xFF, 0xFF, 0x9F, 0x8F, 0x00, 0x00, 0x10, 0xEA, 0xFF, 0xFF, 0xA0, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAC, 0x5C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD0, 0x28, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF2, 0x31, 0x00, 0x00, 0x01, 0x6D, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0x9C, 0xBF, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0x76, 0x9A, 0x73, 0x88, 0xFF, 0xFF, 0x23, 0x28, 0x9C, 0xB5, 0x3E, 0x6F, 0xFF, 0xFF, 0x9E, 0x6E, 0x9F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0xF4, 0x1B, 0x25, 0xC6, 0x7B, 0xFF, 0xFF, 0x92, 0x84, 0x00, 0x00, 0x7E, 0xD3, 0xFF, 0xFF, 0xA0, 0x53, 0x00, 0x00, 0x54, 0x03, 0xFF, 0xFF, 0xA2, 0x93, 0x00, 0x00, 0x3A, 0x18, 0xFF, 0xFF, 0xA2, 0x5D, 0x00, 0x00, 0x23, 0x43, 0xFF, 0xFF, 0xA2, 0xD3, 0x00, 0x00, 0x16, 0x37, 0xFF, 0xFF, 0xA1, 0xC1, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x9B, 0xDD, 0xFF, 0xFF, 0xA7, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBC, 0xE7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCE, 0x2D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0x30, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x67, 0x8F, 0x12, 0xFF, 0xFF, 0x00, 0x00, 0x6A, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x94, 0x67, 0x00, 0x00, 0xFF, 0xFF, 0x66, 0x0B, 0x8A, 0xAB, 0x00, 0x00, 0xFF, 0xFF, 0xE6, 0x4B, 0x80, 0x61, 0x00, 0x00, 0xF9, 0x70, 0xFF, 0xFF, 0x82, 0x31, 0x00, 0x00, 0xCE, 0x1E, 0xFF, 0xFF, 0x82, 0xD0, 0x06, 0xC1, 0xC1, 0x8B, 0xFF, 0xFF, 0x83, 0xE2, 0x00, 0x00, 0x93, 0x3D, 0xFF, 0xFF, 0x89, 0x92, 0x00, 0x00, 0x83, 0x11, 0xFF, 0xFF, 0x88, 0x9F, 0x00, 0x00, 0x88, 0xB1, 0xFF, 0xFF, 0x84, 0x25, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x8B, 0x03, 0xFF, 0xFF, 0xB6, 0xB4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC9, 0xD3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEF, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xB0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0xE7, 0x81, 0x83, 0xFF, 0xFF, 0x23, 0xFE, 0x32, 0xBB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x74, 0x5A, 0x11, 0x55, 0xFF, 0xFF, 0x47, 0x8B, 0x4D, 0xE9, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x62, 0x43, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x58, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x71, 0xCE, 0x00, 0x00, 0xE2, 0x18, 0xFF, 0xFF, 0x77, 0x0D, 0x00, 0x00, 0xC0, 0x91, 0xFF, 0xFF, 0x79, 0x09, 0x00, 0x00, 0xB9, 0xF1, 0xFF, 0xFF, 0x7B, 0xBA, 0x00, 0x00, 0xAA, 0x22, 0xFF, 0xFF, 0x7B, 0xF3, 0x00, 0x00, 0x86, 0xA1, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xC5, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xED, 0x68, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBA, 0xDE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x82, 0x6B, 0xFF, 0xFF, 0x00, 0x00, 0x19, 0xB5, 0x26, 0xE9, 0xFF, 0xFF, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0x5B, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0x94, 0x17, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0x8F, 0x00, 0x00, 0x2A, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x4D, 0x63, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x5C, 0x8F, 0x00, 0x00, 0xEC, 0xF0, 0xFF, 0xFF, 0x60, 0x6C, 0x00, 0x00, 0xD6, 0x0D, 0xFF, 0xFF, 0x67, 0xC5, 0x00, 0x00, 0xC0, 0x64, 0xFF, 0xFF, 0x68, 0x98, 0x00, 0x00, 0xBC, 0x8E, 0xFF, 0xFF, 0x69, 0x45, 0xFF, 0xFF, 0xE6, 0x06, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x37, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x98, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0xD5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x27, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0x98, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7C, 0x3D, 0x00, 0x00, 0x22, 0x52, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x50, 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x47, 0xA3, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0x83, 0x10, 0x47, 0xDD, 0xCE, 0xFF, 0xFF, 0x49, 0x85, 0x10, 0x69, 0xDD, 0x4D, 0xFF, 0xFF, 0x50, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE3, 0x75, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xC2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x1D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x27, 0x04, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x76, 0x96, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x1E, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x2E, 0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x43, 0xAF, 0x00, 0x00, 0xF3, 0xC3, 0xFF, 0xFF, 0x41, 0x25, 0xEB, 0xE2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x75, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x95, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x19, 0xCA, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0xD3, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x71, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x47, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0x58, 0x00, 0x00, 0x1C, 0x59, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x39, 0x34, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x57, 0x12, 0xFF, 0xFF, 0x00, 0x00, 0x37, 0xD7, 0x57, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x51, 0x6D, 0xFF, 0xFF, 0x00, 0x00, 0x8C, 0x66, 0x46, 0x0D, 0xFF, 0xFF, 0x00, 0x00, 0xB0, 0xA6, 0x49, 0xA2, 0xFF, 0xFF, 0x14, 0x07, 0xFF, 0xFF, 0x34, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0xBC, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0x8A, 0xF8, 0xB1, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x1A, 0xDA, 0x27, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0x14, 0xC5, 0xEF, 0x00, 0x00, 0xFF, 0xFF, 0x50, 0x31, 0xBF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x8F, 0xFF, 0xFF, 0x3C, 0x9B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0x31, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x29, 0x8C, 0x00, 0x00, 0x37, 0xDF, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x46, 0xAA, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0x30, 0x5D, 0x99, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0xD8, 0x61, 0x35, 0xFF, 0xFF, 0x00, 0x00, 0x99, 0x7C, 0x4E, 0x8B, 0xFF, 0xFF, 0x00, 0x00, 0xAB, 0xBD, 0x5D, 0xFA, 0xFF, 0xFF, 0x25, 0x5F, 0xFF, 0xFF, 0x41, 0x04, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x28, 0xBE, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x58, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0x01, 0xE0, 0xF4, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x46, 0xC8, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0x57, 0xF1, 0xBF, 0xE4, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0xC6, 0xB6, 0xA7, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x6D, 0xFF, 0xFF, 0x41, 0x1D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0x87, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0x55, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0x8D, 0x00, 0x00, 0x2F, 0x21, 0xFF, 0xFF, 0x22, 0xD6, 0x00, 0x00, 0x50, 0x55, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x75, 0x84, 0xFF, 0xFF, 0x00, 0x00, 0x59, 0x95, 0x5F, 0xCC, 0xFF, 0xFF, 0x00, 0x00, 0x64, 0x1E, 0x70, 0x72, 0xFF, 0xFF, 0x00, 0x00, 0xB1, 0x54, 0x65, 0xB4, 0xFF, 0xFF, 0x27, 0x42, 0xFF, 0xFF, 0x4A, 0xA3, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x72, 0xEE, 0x97, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x44, 0xCD, 0x32, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0xFE, 0xBE, 0xA4, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x9E, 0xB7, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0xD6, 0xAC, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0xFF, 0xFF, 0x43, 0xEC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x69, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0x7D, 0x00, 0x00, 0x5A, 0x56, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x70, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0x80, 0x74, 0xCC, 0xFF, 0xFF, 0x00, 0x00, 0x6E, 0xFB, 0x76, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0xB3, 0xC9, 0x77, 0x56, 0xFF, 0xFF, 0x29, 0xD8, 0xFF, 0xFF, 0x5D, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x50, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0x00, 0xD4, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0x02, 0xBD, 0xEF, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0x2E, 0xBC, 0x34, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0x00, 0x9C, 0xAB, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x28, 0x9F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0x9F, 0xFF, 0xFF, 0x46, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0x79, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xD4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x53, 0x2E, 0x00, 0x00, 0x46, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x81, 0x54, 0xFF, 0xFF, 0x00, 0x00, 0x38, 0x00, 0x80, 0xF9, 0xFF, 0xFF, 0x00, 0x00, 0x6F, 0x13, 0x83, 0x0A, 0xFF, 0xFF, 0x00, 0x00, 0xAB, 0xFC, 0x86, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x1B, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0x51, 0xE9, 0x88, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0x8F, 0xBC, 0x0C, 0x00, 0x00, 0xFF, 0xFF, 0x6B, 0x39, 0xBE, 0xCE, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0xC4, 0x9D, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0x7B, 0xA3, 0xE5, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0xF3, 0x81, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0x79, 0xE8, 0xFF, 0xFF, 0x49, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0xC5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0xBD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0xB2, 0x00, 0x00, 0x57, 0x77, 0xFF, 0xFF, 0x1D, 0x92, 0x00, 0x00, 0x77, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0xCB, 0x8F, 0xDC, 0xFF, 0xFF, 0x00, 0x00, 0x6F, 0x44, 0x8D, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0xB6, 0x46, 0x93, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0x65, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0xFF, 0xBF, 0x32, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0x88, 0xAF, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0x59, 0x9F, 0x17, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xF7, 0x86, 0xE5, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x04, 0x7B, 0x74, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0xD2, 0x7D, 0xD9, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xD9, 0xFF, 0xFF, 0x4C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x61, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0x09, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x18, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x08, 0x00, 0x00, 0x3B, 0x18, 0xFF, 0xFF, 0x6D, 0x98, 0x00, 0x00, 0x5C, 0x26, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xDA, 0xFF, 0xFF, 0x00, 0x00, 0x55, 0x55, 0x9E, 0x46, 0xFF, 0xFF, 0x00, 0x00, 0xC7, 0x95, 0xA2, 0x82, 0xEF, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0xDF, 0xBC, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x04, 0xB6, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x80, 0xA3, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x0F, 0x7A, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0xD2, 0x80, 0x39, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0xB3, 0x85, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x4C, 0x79, 0x59, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x51, 0x53, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0xE1, 0x00, 0x00, 0x2A, 0x73, 0xFF, 0xFF, 0x7F, 0x65, 0x00, 0x00, 0x60, 0x84, 0xFF, 0xFF, 0x5D, 0x2E, 0x00, 0x00, 0x90, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x2C, 0xEF, 0xB7, 0x50, 0xFF, 0xFF, 0x00, 0x00, 0xF5, 0x01, 0xB7, 0x76, 0xC3, 0x69, 0x0F, 0x88, 0xFF, 0xFF, 0xAB, 0xCA, 0x88, 0xF2, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x2B, 0x80, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x95, 0x92, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0x46, 0x6D, 0xD6, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0x94, 0x5F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x84, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x59, 0xFF, 0xFF, 0x71, 0x53, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x21, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA9, 0x4F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x92, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0x87, 0x01, 0x4E, 0x3D, 0xE8, 0xFF, 0xFF, 0xB8, 0x5E, 0x00, 0x00, 0x7F, 0xC5, 0xDC, 0x9B, 0xA2, 0xC7, 0x00, 0x00, 0xAE, 0xF7, 0x36, 0xB9, 0x00, 0x00, 0x5F, 0x80, 0xD8, 0x9B, 0x26, 0xFB, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0x7B, 0x09, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xBB, 0x37, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAF, 0xAB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA8, 0xB0, 0x02, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0xF9, 0xFF, 0xFF, 0x90, 0x71, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA8, 0xB2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBC, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDB, 0xB9, 0x00, 0x00, 0x2E, 0xDD, 0xF2, 0x25, 0xF4, 0x4B, 0x00, 0x00, 0x6B, 0x16, 0xA8, 0x71, 0xE7, 0x88, 0x00, 0x00, 0xA0, 0x82, 0x00, 0x00, 0xD4, 0x97, 0x89, 0x88, 0xBF, 0xC1, 0x59, 0x5C, 0xD0, 0xC4, 0xFF, 0xFF, 0xA3, 0xFE, 0x05, 0xDB, 0x8B, 0x5F, 0xFF, 0xFF, 0xA4, 0x97, 0x00, 0x00, 0x3A, 0x06, 0xFF, 0xFF, 0xA4, 0x56, 0x00, 0x00, 0x34, 0x4B, 0xFF, 0xFF, 0xA0, 0xA7, 0x00, 0x00, 0x19, 0x20, 0xFF, 0xFF, 0xA1, 0x13, 0x00, 0x00, 0x22, 0x4D, 0xFF, 0xFF, 0xA0, 0xFB, 0x00, 0x00, 0x0B, 0x8F, 0xFF, 0xFF, 0xA1, 0x69, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0x9E, 0xF9, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0x99, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBB, 0xED, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCD, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEE, 0x82, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x98, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x6E, 0xBE, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x59, 0x2D, 0x7A, 0xA8, 0xFF, 0xFF, 0x0D, 0xB0, 0x8F, 0x7F, 0x29, 0xA3, 0xFF, 0xFF, 0x8B, 0x8A, 0x9F, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xFF, 0x00, 0x00, 0xDB, 0xD5, 0xFF, 0xFF, 0x8B, 0x1E, 0x0C, 0xE6, 0xC1, 0xE7, 0xFF, 0xFF, 0x87, 0x40, 0x00, 0x00, 0x7C, 0xC3, 0xFF, 0xFF, 0x90, 0x53, 0x00, 0x00, 0x8A, 0x38, 0xFF, 0xFF, 0x89, 0x91, 0x00, 0x00, 0x64, 0x14, 0xFF, 0xFF, 0x8E, 0xFD, 0x00, 0x00, 0x69, 0xB9, 0xFF, 0xFF, 0x8A, 0x04, 0x00, 0x00, 0x3D, 0xDA, 0xFF, 0xFF, 0x91, 0xD8, 0xFF, 0xFF, 0xA4, 0x49, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0xCD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0x77, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xD5, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x25, 0xFF, 0xFF, 0x06, 0x72, 0x00, 0x00, 0x98, 0x35, 0xFF, 0xFF, 0x04, 0x78, 0x43, 0xB3, 0x28, 0xD4, 0xFF, 0xFF, 0x00, 0x00, 0x85, 0xF6, 0x03, 0xFA, 0xFF, 0xFF, 0x68, 0x01, 0x81, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x07, 0x7E, 0x3C, 0x0D, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0x65, 0x7F, 0x00, 0x00, 0xDF, 0xCB, 0xFF, 0xFF, 0x75, 0xBE, 0x00, 0x00, 0xC5, 0xDE, 0xFF, 0xFF, 0x79, 0x30, 0x00, 0x00, 0xC0, 0x98, 0xFF, 0xFF, 0x79, 0xBF, 0x00, 0x00, 0xAB, 0x3C, 0xFF, 0xFF, 0x7C, 0x45, 0x00, 0x00, 0x81, 0xF5, 0xFF, 0xFF, 0x82, 0x36, 0x00, 0x00, 0x80, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xB6, 0x5C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0x28, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF2, 0x3E, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD8, 0xFF, 0xFF, 0x0B, 0xBE, 0x25, 0xDE, 0x16, 0xC9, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0x9B, 0x0F, 0x4F, 0xFF, 0xFF, 0x47, 0x4C, 0x4D, 0x36, 0x01, 0xA0, 0xFF, 0xFF, 0x99, 0xF2, 0x45, 0xE2, 0x40, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x53, 0x98, 0x00, 0x00, 0xFE, 0xC1, 0xFF, 0xFF, 0x5F, 0x03, 0x1F, 0x66, 0xE0, 0xF1, 0xFF, 0xFF, 0x53, 0x6D, 0x00, 0x00, 0xCA, 0xAD, 0xFF, 0xFF, 0x65, 0xAD, 0x00, 0x00, 0xC1, 0xBA, 0xFF, 0xFF, 0x66, 0xA6, 0x00, 0x00, 0xB4, 0xE5, 0xFF, 0xFF, 0x68, 0x19, 0xFF, 0xFF, 0xCA, 0x12, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0x61, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xFA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x19, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x90, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0xA6, 0x27, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x9E, 0x04, 0xBA, 0x18, 0xCA, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x92, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xE1, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x4A, 0xBB, 0x00, 0x00, 0xF2, 0x58, 0xFF, 0xFF, 0x4F, 0x11, 0x0E, 0x95, 0xE0, 0x09, 0xFF, 0xFF, 0x49, 0x6B, 0x00, 0x00, 0xD0, 0xC0, 0xFF, 0xFF, 0x59, 0x09, 0xFF, 0xFF, 0xEB, 0x9F, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x95, 0xFA, 0x58, 0x00, 0x00, 0x00, 0x00, 0xDC, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x06, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x84, 0x95, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x58, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x28, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x12, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0xDF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x3C, 0x00, 0x00, 0xF0, 0xCF, 0xFF, 0xFF, 0x40, 0x00, 0xF2, 0x76, 0xF3, 0x84, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x90, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x3D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x21, 0xAD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x11, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x12, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x61, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0x6A, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x27, 0xE2, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x27, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x7A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x34, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x68, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0x52, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0x53, 0x00, 0x00, 0x11, 0x05, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x25, 0xD8, 0xFF, 0xFF, 0x1E, 0x9B, 0x00, 0x00, 0x3E, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0x3E, 0x4B, 0x3E, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0xE1, 0x46, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0xB6, 0x41, 0x1A, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0xC6, 0x46, 0x1E, 0xFF, 0xFF, 0x14, 0xD7, 0xFF, 0xFF, 0x34, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xB1, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0xF9, 0xFC, 0xBC, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0x49, 0xE9, 0x5F, 0x00, 0x00, 0xFF, 0xFF, 0x29, 0x60, 0xDC, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0xFE, 0xC5, 0xD6, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0x51, 0xFF, 0xFF, 0x26, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x26, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x3A, 0x00, 0x00, 0x06, 0xD9, 0xFF, 0xFF, 0x1D, 0xD3, 0x00, 0x00, 0x29, 0x63, 0xFF, 0xFF, 0x27, 0xC5, 0x00, 0x00, 0x3D, 0xA6, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0x93, 0x49, 0xDA, 0xFF, 0xFF, 0x00, 0x00, 0x5B, 0xF3, 0x50, 0x5E, 0xFF, 0xFF, 0x00, 0x00, 0x8D, 0x42, 0x45, 0xF4, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0xE5, 0x55, 0xAC, 0xFF, 0xFF, 0x26, 0x6E, 0xFF, 0xFF, 0x3A, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0x38, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x99, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x51, 0xED, 0x51, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0x02, 0xE1, 0xCE, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0x9C, 0xC8, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0xDE, 0xBF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x43, 0xB7, 0xFF, 0xFF, 0x28, 0xC7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x48, 0xDE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0xB3, 0x00, 0x00, 0x26, 0x6F, 0xFF, 0xFF, 0x26, 0xE7, 0x00, 0x00, 0x42, 0x30, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x63, 0xA7, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0x23, 0x62, 0x20, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x32, 0x64, 0x2E, 0xFF, 0xFF, 0x00, 0x00, 0xB1, 0x30, 0x5C, 0x24, 0xFF, 0xFF, 0x2B, 0x42, 0xFF, 0xFF, 0x3E, 0x0C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x47, 0x52, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x6B, 0xFB, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0x80, 0xE8, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0x80, 0xCC, 0xED, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x19, 0xBE, 0x77, 0x00, 0x00, 0xFF, 0xFF, 0x49, 0xD4, 0xB9, 0xAD, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x9B, 0xFF, 0xFF, 0x2B, 0x8E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x30, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x48, 0xE7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0xFE, 0x00, 0x00, 0x20, 0x82, 0xFF, 0xFF, 0x20, 0xE7, 0x00, 0x00, 0x49, 0x29, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x65, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0x1C, 0x5F, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0xD5, 0x6B, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0xB1, 0x22, 0x65, 0x6D, 0xFF, 0xFF, 0x07, 0x58, 0xFF, 0xFF, 0x61, 0xCC, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xF0, 0xF3, 0x1B, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0xC1, 0xD2, 0x92, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x32, 0xBD, 0x42, 0x00, 0x00, 0xFF, 0xFF, 0x50, 0x3F, 0xBB, 0xDE, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x48, 0xB0, 0x82, 0x00, 0x00, 0xFF, 0xFF, 0x53, 0xE8, 0xFF, 0xFF, 0x2E, 0x84, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x1A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0x75, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0xC7, 0x00, 0x00, 0x4F, 0x9D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xAC, 0xFF, 0xFF, 0x00, 0x00, 0x45, 0xC9, 0x68, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x6A, 0x44, 0x6F, 0x6B, 0xFF, 0xFF, 0x00, 0x00, 0xB2, 0x09, 0x73, 0x96, 0xFF, 0xFF, 0x2A, 0xE6, 0xFF, 0xFF, 0x5B, 0x90, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0x66, 0xD9, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x00, 0xBE, 0xD9, 0x00, 0x00, 0xFF, 0xFF, 0x57, 0x32, 0xBC, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0x3B, 0xB0, 0xA5, 0x00, 0x00, 0xFF, 0xFF, 0x5B, 0x33, 0xA4, 0x88, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0x7A, 0xFF, 0xFF, 0x32, 0x68, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x43, 0x38, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0xB7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0x93, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0x39, 0x00, 0x00, 0x47, 0x89, 0xFF, 0xFF, 0x22, 0x86, 0x00, 0x00, 0x5F, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0x28, 0x7E, 0x8E, 0xFF, 0xFF, 0x00, 0x00, 0x66, 0x63, 0x7C, 0x5D, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0xDD, 0x82, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0xE7, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x2A, 0xD8, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0x5B, 0x32, 0xBE, 0xCC, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0xD2, 0xBC, 0x83, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0x26, 0xB0, 0x21, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xAA, 0xA1, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x74, 0x9F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0x24, 0xFF, 0xFF, 0x37, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x47, 0x5C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0xDE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0xCD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0xDE, 0x00, 0x00, 0x59, 0xF3, 0xFF, 0xFF, 0x5A, 0xD7, 0x00, 0x00, 0x52, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0xE6, 0x8D, 0xD4, 0xFF, 0xFF, 0x00, 0x00, 0xBA, 0xB3, 0x94, 0xE4, 0xE8, 0xC1, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0x3E, 0xCD, 0x86, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0xEF, 0xC3, 0x88, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xD1, 0xA2, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x76, 0x0C, 0xA5, 0x66, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0x0E, 0x7A, 0xF5, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x16, 0x7D, 0x92, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x4F, 0x78, 0x2E, 0x00, 0x00, 0xFF, 0xFF, 0x78, 0x2E, 0xFF, 0xFF, 0x3D, 0xF7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0xD6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x06, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0xC9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x49, 0xB5, 0xFF, 0xFF, 0x6D, 0xF9, 0x00, 0x00, 0x7B, 0x1E, 0xF8, 0x1D, 0x00, 0x00, 0x24, 0x2D, 0xAC, 0x24, 0xD0, 0xF8, 0x00, 0x00, 0xA9, 0x80, 0xA8, 0x00, 0xBF, 0xB6, 0x30, 0x8A, 0xFF, 0xFF, 0x9D, 0x4C, 0x86, 0xBA, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x00, 0x7F, 0x6B, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0xEC, 0x91, 0x14, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x13, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x93, 0x79, 0x29, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x87, 0x17, 0x00, 0x00, 0xFF, 0xFF, 0x7B, 0x32, 0x4E, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0xFB, 0xFF, 0xFF, 0x46, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0x97, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0xC3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xA6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAF, 0x98, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0x19, 0x00, 0x00, 0x2C, 0x5A, 0xFF, 0xFF, 0xBC, 0x4D, 0x00, 0x00, 0x65, 0x48, 0xB9, 0xF9, 0x8B, 0xCF, 0x00, 0x00, 0x9E, 0x3E, 0x28, 0xA6, 0x00, 0xE7, 0x32, 0x05, 0xC3, 0x3B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x3F, 0x07, 0x27, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0xC7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0xA6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x38, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0xFA, 0xFF, 0xFF, 0x4E, 0xB5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0x99, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0x13, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE4, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xF9, 0xD9, 0xA9, 0x00, 0x00, 0x53, 0xB7, 0x97, 0x7C, 0xD2, 0x51, 0x00, 0x00, 0x8D, 0xB8, 0x00, 0x00, 0xB0, 0xCD, 0x4B, 0x67, 0xB2, 0x40, 0x4E, 0x8A, 0xC4, 0xF9, 0xFF, 0xFF, 0x9B, 0x91, 0x00, 0x00, 0x8F, 0x3C, 0xFF, 0xFF, 0xA1, 0x0B, 0x00, 0x00, 0x32, 0xB7, 0xFF, 0xFF, 0xA3, 0xD1, 0x00, 0x00, 0x12, 0xC3, 0xFF, 0xFF, 0xA5, 0x33, 0x00, 0x00, 0x14, 0x8E, 0xFF, 0xFF, 0xA0, 0xD1, 0x00, 0x00, 0x1B, 0xEB, 0xFF, 0xFF, 0x9B, 0xA1, 0x00, 0x00, 0x1F, 0xB4, 0xFF, 0xFF, 0x97, 0xA0, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x93, 0xB2, 0xFF, 0xFF, 0x9A, 0x38, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0x99, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCA, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x80, 0xE1, 0xE7, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xB0, 0xF8, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xD3, 0xFD, 0xDF, 0x00, 0x00, 0x3B, 0x39, 0x72, 0x41, 0xF8, 0x88, 0x00, 0x00, 0x81, 0x6A, 0x00, 0x00, 0xF6, 0x14, 0x5E, 0xE4, 0x9D, 0xDC, 0x00, 0x00, 0xFC, 0xF0, 0xFF, 0xFF, 0x96, 0xA4, 0x00, 0x00, 0xD7, 0xEC, 0xFF, 0xFF, 0x88, 0xFD, 0x00, 0x00, 0xBB, 0xDD, 0xFF, 0xFF, 0x7F, 0x6E, 0x00, 0x00, 0x92, 0xDA, 0xFF, 0xFF, 0x81, 0x0F, 0x00, 0x00, 0x7F, 0x59, 0xFF, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x86, 0xFB, 0xFF, 0xFF, 0x7F, 0x57, 0x00, 0x00, 0x7B, 0x1E, 0xFF, 0xFF, 0x7E, 0xD2, 0x00, 0x00, 0x67, 0xF4, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0x44, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x36, 0xDC, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xF2, 0xFB, 0x22, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x98, 0x6B, 0xFF, 0xFF, 0x00, 0x00, 0x27, 0x21, 0x66, 0xFD, 0xFF, 0xFF, 0x26, 0xDE, 0x57, 0x17, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0x9C, 0x7D, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xF6, 0x75, 0xCC, 0x0D, 0xA6, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x26, 0x00, 0x00, 0xED, 0x93, 0xFF, 0xFF, 0x5D, 0xD8, 0x00, 0x00, 0xD3, 0x28, 0xFF, 0xFF, 0x65, 0xA7, 0x00, 0x00, 0xBF, 0xAC, 0xFF, 0xFF, 0x67, 0x05, 0x00, 0x00, 0xBB, 0xDC, 0xFF, 0xFF, 0x67, 0x5C, 0x00, 0x00, 0xB0, 0x02, 0xFF, 0xFF, 0x68, 0x0C, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0x6A, 0xC9, 0xFF, 0xFF, 0xB2, 0xA3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0x39, 0x00, 0x00, 0x00, 0x00, 0xE5, 0x4D, 0xD9, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xEC, 0xF9, 0xB1, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xB2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xAD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x74, 0x75, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0x76, 0x1C, 0x56, 0xFF, 0xFF, 0x00, 0x00, 0x54, 0xA0, 0x0A, 0x55, 0xFF, 0xFF, 0x42, 0x01, 0x4A, 0x35, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x87, 0x44, 0x0A, 0x42, 0x2F, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x30, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x48, 0x8A, 0x00, 0x00, 0xE6, 0xEE, 0xFF, 0xFF, 0x49, 0xB5, 0x0E, 0xBF, 0xE1, 0xB6, 0xFF, 0xFF, 0x48, 0xD2, 0x00, 0x00, 0xCA, 0x50, 0xFF, 0xFF, 0x58, 0xF3, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xFF, 0x57, 0x59, 0xFF, 0xFF, 0xC9, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x52, 0xD7, 0x67, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x2D, 0xF5, 0x22, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xBB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x73, 0x58, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x55, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0xD5, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0x0E, 0x27, 0x86, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0xA2, 0x0C, 0x17, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0x6A, 0x0A, 0xFE, 0x16, 0x5A, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x34, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0xAE, 0x00, 0x00, 0xF0, 0xF3, 0xFF, 0xFF, 0x41, 0x3C, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xFF, 0x3F, 0x8B, 0xE4, 0x76, 0xD7, 0xCB, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x26, 0xEF, 0x53, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xC3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA5, 0x87, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x75, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x22, 0xC9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0xA2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xF7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0x3E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0xC4, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x29, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x27, 0xB3, 0xDF, 0xFF, 0xE9, 0xDD, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x1E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xA4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x51, 0xA2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x13, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0x67, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xDB, 0xBE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x61, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x87, 0xB7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x59, 0x1E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0x54, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0x98, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0D, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0x82, 0x00, 0x00, 0x0A, 0x82, 0xFF, 0xFF, 0x19, 0x9E, 0x00, 0x00, 0x19, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xDA, 0x36, 0x1A, 0xFF, 0xFF, 0x00, 0x00, 0x25, 0x8A, 0x36, 0x55, 0xFF, 0xFF, 0x00, 0x00, 0x54, 0x70, 0x34, 0x70, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0x0E, 0x31, 0x6C, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0xD1, 0x31, 0x6B, 0xFF, 0xFF, 0x09, 0x3C, 0xF8, 0x12, 0x29, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFC, 0x8A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE1, 0xAE, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0xE6, 0xDC, 0x6B, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0x36, 0xFF, 0xFF, 0x08, 0xE4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0x77, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xA3, 0x00, 0x00, 0x0B, 0xA0, 0xFF, 0xFF, 0x1E, 0x1A, 0x00, 0x00, 0x1B, 0xB0, 0xFF, 0xFF, 0x13, 0xBB, 0x00, 0x00, 0x33, 0xA3, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x29, 0x3D, 0x1D, 0xFF, 0xFF, 0x00, 0x00, 0x5A, 0xCF, 0x33, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x95, 0x38, 0xF6, 0xFF, 0xFF, 0x00, 0x00, 0xA6, 0xB5, 0x3B, 0xEE, 0xFF, 0xFF, 0x17, 0x3C, 0xFF, 0xFF, 0x2D, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE6, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x12, 0x1C, 0xE0, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0x46, 0xD3, 0x4F, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFF, 0x0D, 0x48, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0x2A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x83, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x9E, 0x00, 0x00, 0x1E, 0xAA, 0xFF, 0xFF, 0x16, 0xB5, 0x00, 0x00, 0x34, 0x7B, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x1A, 0x3F, 0x2D, 0xFF, 0xFF, 0x00, 0x00, 0x57, 0x32, 0x3B, 0x62, 0xFF, 0xFF, 0x00, 0x00, 0x76, 0xAC, 0x3F, 0x45, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x7C, 0x44, 0xF9, 0xFF, 0xFF, 0x20, 0xD1, 0xFF, 0xFF, 0x31, 0xEF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0xFA, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x15, 0x44, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFC, 0xB0, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0xD7, 0xDE, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x41, 0xD8, 0xB2, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0xE3, 0xC3, 0xE8, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0x0B, 0xFF, 0xFF, 0x12, 0xCA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0xD3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xCA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x45, 0x00, 0x00, 0x22, 0x01, 0xFF, 0xFF, 0x25, 0xAD, 0x00, 0x00, 0x30, 0xE1, 0xFF, 0xFF, 0x0C, 0x24, 0x23, 0x41, 0x3D, 0x05, 0xFF, 0xFF, 0x00, 0x00, 0x46, 0x91, 0x4F, 0xE1, 0xFF, 0xFF, 0x08, 0x47, 0x74, 0xB4, 0x42, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0xAA, 0xA3, 0x4E, 0xE7, 0xFF, 0xFF, 0x2C, 0xD6, 0xFF, 0xFF, 0x37, 0xAD, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0xA4, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x59, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0x34, 0xDE, 0x33, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x92, 0xDB, 0xC6, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0x50, 0xC2, 0x96, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0xDD, 0xBF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0xD2, 0xFF, 0xFF, 0x1A, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x6D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0xA7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0xB0, 0x00, 0x00, 0x24, 0xBF, 0xFF, 0xFF, 0x1F, 0x38, 0x00, 0x00, 0x36, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xD1, 0xFF, 0xFF, 0x00, 0x00, 0x37, 0xFB, 0x5C, 0x94, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0xFC, 0x5E, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0xA4, 0x5C, 0x64, 0xFF, 0xFF, 0x2D, 0xC2, 0xFF, 0xFF, 0x44, 0x9C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0x04, 0xFB, 0xD1, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0xAA, 0xE6, 0xED, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0x2A, 0xDB, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0x2C, 0xBF, 0x41, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0xDA, 0xBC, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0x23, 0xB2, 0xE6, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x8A, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x7D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x57, 0xF6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x6E, 0x00, 0x00, 0x3A, 0x9F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x63, 0xA3, 0xFF, 0xFF, 0x00, 0x00, 0x36, 0xBD, 0x63, 0x26, 0xFF, 0xFF, 0x00, 0x00, 0x66, 0x82, 0x68, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0xAF, 0x83, 0x6E, 0x1E, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0x37, 0xF1, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0xA5, 0xDC, 0xD3, 0x00, 0x00, 0xFF, 0xFF, 0x53, 0x21, 0xC7, 0xFB, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0x57, 0xC1, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x20, 0xB4, 0xAE, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0xD8, 0xAA, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0x6F, 0xA0, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0x50, 0x3D, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xA4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0xAB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0xA7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0xFA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x49, 0x35, 0x00, 0x00, 0x45, 0x68, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x82, 0x2D, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0x3D, 0x7F, 0x09, 0xF9, 0x6F, 0x00, 0x00, 0xAD, 0xE0, 0x83, 0xF5, 0xE3, 0x66, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0xEC, 0xC2, 0x6A, 0x00, 0x00, 0xFF, 0xFF, 0x79, 0xA7, 0xC2, 0xAC, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x81, 0xB0, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0x5C, 0x32, 0xA3, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x0F, 0xA5, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0xE4, 0x9F, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x8C, 0x91, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x44, 0xFF, 0xFF, 0x26, 0xD5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0x60, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x2F, 0x00, 0x00, 0x2D, 0x19, 0xFF, 0xFF, 0x65, 0x9B, 0x00, 0x00, 0x68, 0xAF, 0xCE, 0xF5, 0x00, 0x00, 0x19, 0x15, 0x9B, 0x0D, 0xB5, 0xDD, 0x00, 0x00, 0x89, 0x9C, 0x9A, 0x43, 0xA5, 0xFA, 0x00, 0x00, 0xF1, 0x46, 0x9B, 0x0F, 0x80, 0x96, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0x89, 0x82, 0x26, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x3A, 0x86, 0x57, 0x00, 0x00, 0xFF, 0xFF, 0x7B, 0x78, 0x8A, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0x19, 0x82, 0xC5, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0x59, 0x79, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0xA4, 0x47, 0xE8, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0xD0, 0xFF, 0xFF, 0x30, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x47, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x78, 0x29, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x16, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xAA, 0xEB, 0x00, 0x00, 0x4E, 0x96, 0xA4, 0xA9, 0x7A, 0xE8, 0x00, 0x00, 0x8C, 0xCE, 0x2A, 0x89, 0x0C, 0x78, 0x2B, 0x45, 0xB5, 0x7C, 0x08, 0x7B, 0x12, 0x47, 0xC1, 0xC3, 0xB4, 0x8A, 0x00, 0x00, 0x12, 0x4E, 0xFF, 0xFF, 0xAE, 0x5B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0xCB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xC6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x81, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x2B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x86, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xD9, 0xFF, 0xFF, 0x3D, 0x05, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x37, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x66, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBB, 0x9C, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x91, 0xCC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xFD, 0xCA, 0xE2, 0x00, 0x00, 0x39, 0xEA, 0x86, 0x86, 0xBE, 0x82, 0x00, 0x00, 0x7A, 0xCF, 0x00, 0x00, 0x90, 0xED, 0x2C, 0xB0, 0xA5, 0xBD, 0x00, 0x00, 0x9E, 0x94, 0xC2, 0x54, 0x9E, 0x20, 0x00, 0x00, 0x87, 0xBD, 0xFF, 0xFF, 0x96, 0xE3, 0x00, 0x00, 0x62, 0xC7, 0xFF, 0xFF, 0x92, 0x3F, 0x00, 0x00, 0x34, 0x0B, 0xFF, 0xFF, 0x93, 0x50, 0x00, 0x00, 0x11, 0x97, 0xFF, 0xFF, 0x97, 0x1E, 0x00, 0x00, 0x16, 0xAB, 0xFF, 0xFF, 0x93, 0x35, 0x00, 0x00, 0x18, 0x39, 0xFF, 0xFF, 0x90, 0x56, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x8B, 0x78, 0xFF, 0xFF, 0x4A, 0xF7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0x63, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x51, 0xBF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x90, 0xD0, 0x53, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x30, 0xDB, 0xB5, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xFA, 0xE6, 0xB2, 0x00, 0x00, 0x1C, 0x82, 0x6B, 0xD4, 0xE0, 0xF2, 0x00, 0x00, 0x69, 0x37, 0x00, 0x00, 0xD5, 0xBD, 0x49, 0xA1, 0x8D, 0x55, 0x00, 0x00, 0xDA, 0xB5, 0xCE, 0x39, 0x87, 0xCE, 0x00, 0x00, 0xC8, 0xDB, 0xFF, 0xFF, 0x7E, 0xF2, 0x00, 0x00, 0xC0, 0x9E, 0xFF, 0xFF, 0x72, 0xF2, 0x00, 0x00, 0xA7, 0x8E, 0xFF, 0xFF, 0x6D, 0xF1, 0x00, 0x00, 0x7C, 0xBF, 0xFF, 0xFF, 0x79, 0xBF, 0x00, 0x00, 0x7D, 0x87, 0xFF, 0xFF, 0x77, 0x22, 0x00, 0x00, 0x7B, 0x9E, 0xFF, 0xFF, 0x75, 0xC4, 0x00, 0x00, 0x6E, 0x4D, 0xFF, 0xFF, 0x75, 0xF1, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x7F, 0xC0, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x05, 0xD4, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xD3, 0xE3, 0x62, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x2F, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x6D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x2F, 0xFF, 0xFF, 0x11, 0x7C, 0x4B, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x30, 0x73, 0xD3, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0xEB, 0x6C, 0xDE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x67, 0x87, 0x00, 0x00, 0xEA, 0x23, 0xFF, 0xFF, 0x54, 0x9D, 0x0F, 0xD4, 0xDB, 0xDA, 0xFF, 0xFF, 0x47, 0xB8, 0x00, 0x00, 0xC1, 0x68, 0xFF, 0xFF, 0x56, 0xFA, 0x00, 0x00, 0xC1, 0x6C, 0xFF, 0xFF, 0x58, 0x38, 0x00, 0x00, 0xB2, 0x8E, 0xFF, 0xFF, 0x5D, 0x48, 0x00, 0x00, 0xA6, 0x73, 0xFF, 0xFF, 0x5D, 0xAE, 0xFF, 0xFF, 0xAB, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x40, 0xC0, 0x85, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x21, 0xD6, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xBE, 0xE7, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xAC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x70, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x23, 0xB8, 0xFF, 0xFF, 0x00, 0x00, 0x46, 0xB9, 0x01, 0x3A, 0xFF, 0xFF, 0x35, 0xBE, 0x46, 0x4C, 0x18, 0xD2, 0xFF, 0xFF, 0x9F, 0xD5, 0x32, 0xBB, 0x40, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xE7, 0x4B, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0x98, 0x00, 0x00, 0xED, 0x1B, 0xFF, 0xFF, 0x3D, 0x26, 0x00, 0x00, 0xDE, 0xF7, 0xFF, 0xFF, 0x3C, 0xF7, 0x00, 0x00, 0xD7, 0x3C, 0xFF, 0xFF, 0x3F, 0xD5, 0x00, 0x00, 0xCC, 0x28, 0xFF, 0xFF, 0x40, 0x00, 0xEA, 0xEF, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x69, 0xD6, 0xB9, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x0D, 0xEA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x22, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8D, 0xA4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x66, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x55, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x39, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0x3F, 0x21, 0xED, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x3B, 0x0C, 0xC4, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0xFF, 0x0B, 0x72, 0x0D, 0xD5, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0D, 0x6D, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x23, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x22, 0x51, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x2B, 0xA0, 0x00, 0x00, 0xE8, 0x9B, 0xFF, 0xFF, 0x2C, 0x87, 0xDF, 0xFF, 0xD4, 0x92, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x35, 0xED, 0xA8, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x3B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x91, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x66, 0x90, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x44, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xA4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x18, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0x19, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0E, 0x2F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xDF, 0xFF, 0xED, 0xC3, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xC4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x98, 0xB9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x98, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x45, 0x58, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x2D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x19, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xCC, 0xA1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x73, 0xC4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x48, 0xB3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x32, 0x00, 0x00, 0x0B, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0x30, 0x16, 0x30, 0xFF, 0xFF, 0x03, 0x7A, 0x40, 0x00, 0x03, 0x7A, 0xFF, 0xFF, 0x08, 0xF3, 0x5F, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0x98, 0x1C, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0xAB, 0xCD, 0x19, 0x5E, 0xFF, 0xFF, 0x00, 0x00, 0xE9, 0xC4, 0x0C, 0xE7, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xDC, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF2, 0x5A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE5, 0xB6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0xA8, 0x00, 0x00, 0x0C, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x17, 0x9B, 0x16, 0xE6, 0xFF, 0xFF, 0x00, 0x00, 0x26, 0x4C, 0x24, 0xB2, 0xFF, 0xFF, 0x1C, 0xED, 0x62, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0xAD, 0x21, 0x67, 0xFF, 0xFF, 0x00, 0x00, 0xA8, 0x99, 0x23, 0x33, 0xFF, 0xFF, 0x00, 0x00, 0xED, 0x41, 0x17, 0xF6, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0x2D, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF9, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xEA, 0xD6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0x01, 0x00, 0x00, 0x0F, 0x70, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x67, 0x20, 0x2C, 0xFF, 0xFF, 0x00, 0x00, 0x25, 0x8E, 0x23, 0x45, 0xFF, 0xFF, 0x00, 0x00, 0x4E, 0x4A, 0x2B, 0x85, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xCC, 0x27, 0xAD, 0xFF, 0xFF, 0x00, 0x00, 0xA9, 0x8D, 0x21, 0xD7, 0xFF, 0xFF, 0x03, 0xE3, 0xEE, 0x75, 0x22, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0xD8, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0x32, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xED, 0xB5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE0, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0xA9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xA3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xA2, 0x00, 0x00, 0x12, 0x5B, 0xFF, 0xFF, 0x01, 0xFE, 0x00, 0x00, 0x27, 0xDD, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xE2, 0x2C, 0x75, 0xFF, 0xFF, 0x00, 0x00, 0x4E, 0x8B, 0x2D, 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0x30, 0x31, 0x66, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x82, 0x33, 0x25, 0xFF, 0xFF, 0x11, 0x6F, 0xF2, 0x90, 0x29, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xAE, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xEE, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE0, 0xDE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x04, 0xCB, 0x45, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x13, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xC9, 0x00, 0x00, 0x17, 0xF0, 0xFF, 0xFF, 0x25, 0x4A, 0x00, 0x00, 0x1C, 0xE3, 0xFF, 0xFF, 0x00, 0x00, 0x15, 0x51, 0x39, 0x5B, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x47, 0x44, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0x6C, 0x54, 0x40, 0x41, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x7F, 0x42, 0xFD, 0xFF, 0xFF, 0x1E, 0xBE, 0xFC, 0x1E, 0x33, 0x74, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0xC6, 0xEF, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0x28, 0x3D, 0xEB, 0x4A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDD, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0x33, 0xCD, 0xD3, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xEE, 0xC2, 0x92, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x1C, 0xBD, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0x7A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x51, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0xC3, 0x00, 0x00, 0x05, 0xE3, 0xFF, 0xFF, 0x1C, 0xD6, 0x00, 0x00, 0x27, 0xED, 0xFF, 0xFF, 0x14, 0x29, 0x00, 0x00, 0x40, 0xE2, 0xFF, 0xFF, 0x00, 0x00, 0x30, 0x9D, 0x50, 0xC6, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x86, 0x53, 0xB4, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0x35, 0x56, 0x04, 0xFF, 0x2C, 0x00, 0x00, 0xF4, 0x42, 0x5B, 0xAE, 0xE3, 0x45, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0x6D, 0xD2, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0xEC, 0xCE, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0x52, 0xC0, 0xAA, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0xCD, 0xBC, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xDC, 0xA9, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0x1C, 0xA2, 0xC3, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0x58, 0xFF, 0xFF, 0x07, 0x74, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0x6C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x90, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0xD9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x28, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x3A, 0x00, 0x00, 0x3E, 0xFA, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x9A, 0x6C, 0x3B, 0xF5, 0xB9, 0x00, 0x00, 0x56, 0xFD, 0x69, 0xC3, 0xDA, 0x31, 0x00, 0x00, 0x9A, 0x9F, 0x6D, 0x07, 0xD2, 0xD6, 0x00, 0x00, 0xDD, 0x1D, 0x70, 0x97, 0xC0, 0x2B, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0x76, 0xB3, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0x69, 0xA8, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0xC9, 0x9E, 0x4A, 0x00, 0x00, 0xFF, 0xFF, 0x48, 0x22, 0xA3, 0xB2, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0xFD, 0xA8, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0x59, 0x99, 0xAE, 0x00, 0x00, 0xFF, 0xFF, 0x48, 0xE8, 0xFF, 0xFF, 0x1B, 0x67, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x74, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0x4E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6B, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0x97, 0x00, 0x00, 0x00, 0x00, 0xE9, 0x15, 0x56, 0x4A, 0x00, 0x00, 0x59, 0xDB, 0xB4, 0x9A, 0x00, 0x00, 0x15, 0xB7, 0x89, 0x96, 0xA3, 0x13, 0x00, 0x00, 0x76, 0xFF, 0x89, 0x24, 0x93, 0x8E, 0x00, 0x00, 0xBE, 0xA9, 0x8A, 0xEF, 0x82, 0x96, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x11, 0x81, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xBE, 0x74, 0xC1, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0x6E, 0x6E, 0x88, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0x90, 0x71, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0x5E, 0x74, 0xDB, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x69, 0x64, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x97, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0x9D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4C, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0x23, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0xD3, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xFE, 0xA3, 0x76, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x2A, 0x9A, 0xF0, 0x00, 0x00, 0x38, 0x56, 0x92, 0x8C, 0x68, 0xF2, 0x00, 0x00, 0x7B, 0x43, 0x2B, 0xD7, 0x15, 0x3D, 0x22, 0xA8, 0xA6, 0x72, 0x12, 0xA7, 0x1C, 0xE0, 0x9A, 0x97, 0xA4, 0xD5, 0x00, 0x00, 0x13, 0x88, 0xFF, 0xFF, 0xA5, 0x22, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0xB9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x39, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x38, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x17, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x75, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0xA9, 0xFF, 0xFF, 0x2B, 0xBB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x47, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0xCD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x56, 0x9F, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xDD, 0xB4, 0xA6, 0xE9, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xF7, 0xB5, 0x15, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x67, 0xBD, 0x3A, 0x00, 0x00, 0x1B, 0xB1, 0x79, 0x7A, 0xAC, 0xAC, 0x00, 0x00, 0x63, 0xFF, 0x00, 0x00, 0x7D, 0x85, 0x1E, 0x24, 0x95, 0xB2, 0x00, 0x00, 0x8D, 0xD5, 0x9D, 0x6D, 0x8A, 0x4D, 0x00, 0x00, 0x8D, 0x7E, 0xFF, 0xFF, 0x87, 0x31, 0x00, 0x00, 0x7C, 0xE4, 0xFF, 0xFF, 0x7E, 0x2B, 0x00, 0x00, 0x4D, 0x51, 0xFF, 0xFF, 0x80, 0x4E, 0x00, 0x00, 0x28, 0x10, 0xFF, 0xFF, 0x85, 0xB0, 0x00, 0x00, 0x14, 0x11, 0xFF, 0xFF, 0x88, 0x1C, 0x00, 0x00, 0x15, 0x81, 0xFF, 0xFF, 0x85, 0xF5, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x81, 0x0A, 0xFF, 0xFF, 0x3C, 0x2A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA4, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x8A, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xE2, 0xAC, 0x92, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x41, 0xB5, 0x5D, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x9A, 0xC9, 0xB9, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x83, 0xD8, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x64, 0x53, 0xD1, 0x22, 0x00, 0x00, 0x4E, 0xC4, 0x00, 0x00, 0xC1, 0x65, 0x39, 0x4C, 0x7C, 0x02, 0x00, 0x00, 0xC3, 0xE3, 0xA3, 0x45, 0x72, 0xE8, 0x00, 0x00, 0xC2, 0x9B, 0xFF, 0xFF, 0x6E, 0x0B, 0x00, 0x00, 0xB7, 0xBC, 0xFF, 0xFF, 0x64, 0x81, 0x00, 0x00, 0xA1, 0x66, 0xFF, 0xFF, 0x5D, 0x2C, 0x00, 0x00, 0x96, 0xC0, 0xFF, 0xFF, 0x5F, 0x1E, 0x00, 0x00, 0x8E, 0x53, 0xFF, 0xFF, 0x5E, 0x69, 0x00, 0x00, 0x7D, 0x6B, 0xFF, 0xFF, 0x65, 0x46, 0x00, 0x00, 0x74, 0x7C, 0xFF, 0xFF, 0x65, 0xB4, 0xFF, 0xFF, 0x99, 0xD4, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xA1, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x6E, 0xB0, 0x62, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xC4, 0xB4, 0xAB, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x2D, 0xCD, 0x05, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x84, 0xE3, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x86, 0x95, 0xF3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x04, 0xF2, 0x3E, 0x00, 0x00, 0x35, 0x4B, 0x00, 0x00, 0xF1, 0x18, 0x3F, 0xD8, 0x63, 0x37, 0x00, 0x00, 0xF4, 0x56, 0xA6, 0x4E, 0x5B, 0xB5, 0x00, 0x00, 0xF1, 0xC7, 0xFF, 0xFF, 0x58, 0xDB, 0x09, 0xA2, 0xDF, 0xDA, 0xFF, 0xFF, 0x44, 0x97, 0x00, 0x00, 0xCF, 0x77, 0xFF, 0xFF, 0x3C, 0x98, 0x00, 0x00, 0xC5, 0xC8, 0xFF, 0xFF, 0x3E, 0x6B, 0x00, 0x00, 0xBD, 0xF0, 0xFF, 0xFF, 0x43, 0xDC, 0x00, 0x00, 0xB6, 0x60, 0xFF, 0xFF, 0x47, 0x38, 0x00, 0x00, 0xA8, 0xED, 0xFF, 0xFF, 0x4C, 0x46, 0xF7, 0x76, 0x9D, 0x5D, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x4D, 0xB2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xA9, 0xB3, 0x54, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xF6, 0xCE, 0x4E, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xAA, 0xF3, 0xB1, 0x00, 0x00, 0x00, 0x00, 0x83, 0x1C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x63, 0xBC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x48, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x1D, 0xD1, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x07, 0x42, 0x4D, 0x11, 0xFD, 0xFF, 0xFF, 0x99, 0xF1, 0x2E, 0x97, 0x40, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x34, 0xD3, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x24, 0x80, 0x00, 0x00, 0xEA, 0x4C, 0xFF, 0xFF, 0x26, 0x83, 0x00, 0x00, 0xDE, 0x72, 0xFF, 0xFF, 0x2A, 0xD3, 0x00, 0x00, 0xD6, 0xB7, 0xFF, 0xFF, 0x2E, 0x0D, 0x00, 0x00, 0xCD, 0x15, 0xFF, 0xFF, 0x31, 0x1C, 0xD0, 0xE0, 0xB0, 0x56, 0x00, 0x00, 0x00, 0x00, 0xBE, 0xBD, 0xB1, 0x68, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xBD, 0xCE, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x70, 0xFE, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xC9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xBD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x21, 0x67, 0xFF, 0xFF, 0x48, 0xA4, 0x00, 0x00, 0x05, 0xCE, 0xFF, 0xFF, 0x84, 0xF2, 0x02, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x73, 0x04, 0x79, 0x08, 0x72, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xDE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xD4, 0x00, 0x00, 0xF0, 0xC3, 0xFF, 0xFF, 0x19, 0x76, 0xC2, 0x55, 0xB2, 0xD9, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x00, 0xCE, 0x1D, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xF4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xCE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x05, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x33, 0x31, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x76, 0xAB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0xB5, 0xCE, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xAA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x85, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x7E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xC5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x04, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0x90, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x90, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xBF, 0xFF, 0xF8, 0x33, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x90, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0xAF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x30, 0x28, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1E, 0xE4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3A, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x59, 0x9F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAB, 0x91, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDE, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF4, 0x05, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE8, 0x6A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1D, 0x13, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3A, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0xD7, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0x72, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDC, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF6, 0x4C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE9, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDC, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x12, 0x94, 0x04, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x3A, 0x53, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x56, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0x93, 0x0C, 0x52, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0xE9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDA, 0x4B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF5, 0x14, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE7, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDA, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD3, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0x6B, 0x0A, 0xE7, 0xFF, 0xFF, 0x00, 0x00, 0x22, 0x55, 0x17, 0xDB, 0xFF, 0xFF, 0x0E, 0x2D, 0x54, 0x4F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x77, 0x96, 0x1B, 0x97, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x72, 0x19, 0x7B, 0xFF, 0xFF, 0x00, 0x00, 0xDB, 0xBD, 0x10, 0xC2, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF4, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE1, 0x87, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xC2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0xA4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC9, 0xD3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x62, 0x00, 0x00, 0x02, 0x2F, 0xFF, 0xFF, 0x0E, 0x29, 0x00, 0x00, 0x0E, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0x1E, 0x7A, 0x1E, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0x7A, 0x26, 0x0B, 0xFF, 0xFF, 0x00, 0x00, 0x76, 0x97, 0x29, 0xF5, 0xFF, 0xFF, 0x00, 0x00, 0xA8, 0xF6, 0x27, 0x15, 0xFF, 0xFF, 0x00, 0x00, 0xDE, 0xE0, 0x28, 0x21, 0xF9, 0x6F, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0x32, 0xE4, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xC1, 0xE0, 0x8D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD1, 0x69, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCA, 0xA7, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0x66, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0xB5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0x8B, 0x00, 0x00, 0x14, 0xB9, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x69, 0x32, 0x33, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0x5F, 0x39, 0xD9, 0xFF, 0xFF, 0x00, 0x00, 0x68, 0x55, 0x3A, 0xA6, 0xF7, 0x45, 0x00, 0x00, 0xA3, 0x94, 0x3C, 0xAC, 0xE7, 0xCB, 0x00, 0x00, 0xD5, 0x56, 0x40, 0x5C, 0xD8, 0xE7, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0xCE, 0xC7, 0x7D, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0xF5, 0xC2, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0x91, 0xC2, 0xCF, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0xFC, 0xBE, 0xD1, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xE7, 0xAC, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x13, 0xA8, 0x73, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xDA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x28, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x53, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x41, 0x00, 0x00, 0x2C, 0xCC, 0xFE, 0x05, 0x00, 0x00, 0x17, 0x3E, 0x53, 0x9D, 0xDB, 0x9A, 0x00, 0x00, 0x4E, 0x88, 0x53, 0x14, 0xC9, 0x14, 0x00, 0x00, 0x8B, 0x29, 0x58, 0x7F, 0xBF, 0xC6, 0x00, 0x00, 0xC0, 0x41, 0x5A, 0x40, 0xB6, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5B, 0xDF, 0xA8, 0x96, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0x78, 0x9E, 0x36, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0xDB, 0xA0, 0x64, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0xA8, 0x9F, 0x96, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0xB2, 0x9A, 0xAC, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0xC4, 0x95, 0x5B, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x8A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x25, 0xD6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0x31, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0xB0, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x3D, 0x6E, 0x6E, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x37, 0x47, 0x47, 0x00, 0x00, 0x47, 0x4C, 0xA4, 0x45, 0x00, 0x00, 0x17, 0xBF, 0x78, 0x16, 0x92, 0x58, 0x00, 0x00, 0x64, 0x4E, 0x77, 0x49, 0x82, 0x17, 0x00, 0x00, 0xAA, 0x8C, 0x79, 0x7A, 0x79, 0x61, 0x00, 0x00, 0xFA, 0xA5, 0x7B, 0x09, 0x75, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0x9D, 0x68, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x78, 0x5E, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0x75, 0x5F, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x2C, 0x5B, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xFF, 0x51, 0x9D, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xDC, 0xFF, 0xFF, 0x14, 0x65, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0xCE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0x05, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x57, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x76, 0x73, 0xCE, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x4D, 0x8A, 0x19, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x58, 0x8B, 0x51, 0x00, 0x00, 0x23, 0x5F, 0x80, 0xC6, 0x5A, 0xF6, 0x00, 0x00, 0x69, 0xB3, 0x22, 0x2E, 0x10, 0x12, 0x18, 0x9D, 0x99, 0x6C, 0x08, 0x86, 0x14, 0x2D, 0x7F, 0x77, 0x97, 0xAA, 0x00, 0x00, 0x15, 0x38, 0xDA, 0xA2, 0x97, 0x56, 0x00, 0x00, 0x0B, 0x0E, 0xFF, 0xFF, 0x92, 0x8E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0x51, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x6A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7C, 0xE5, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0x34, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0xB5, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x6F, 0x7F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xE7, 0x8B, 0x5D, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xAA, 0x9E, 0x71, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x8E, 0xAE, 0x88, 0x00, 0x00, 0x04, 0x8A, 0x6D, 0x55, 0x9B, 0xF2, 0x00, 0x00, 0x51, 0x26, 0x00, 0x00, 0x6E, 0x95, 0x15, 0x6D, 0x85, 0xC4, 0x00, 0x00, 0x7D, 0x7A, 0x85, 0x4D, 0x79, 0x55, 0x00, 0x00, 0x7D, 0x42, 0xDC, 0x03, 0x77, 0x23, 0x00, 0x00, 0x74, 0x5D, 0xFF, 0xFF, 0x72, 0xB5, 0x00, 0x00, 0x67, 0xDC, 0xFF, 0xFF, 0x6C, 0x56, 0x00, 0x00, 0x15, 0x7B, 0xFF, 0xFF, 0x7E, 0x3E, 0x00, 0x00, 0x13, 0xDF, 0xFF, 0xFF, 0x7D, 0x97, 0x00, 0x00, 0x15, 0x99, 0xFF, 0xFF, 0x7B, 0xF8, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x76, 0x68, 0xFF, 0xFF, 0x2A, 0x17, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0x24, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xE6, 0x83, 0x9B, 0x00, 0x00, 0x00, 0x00, 0xBD, 0xD2, 0x8C, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x0B, 0xA2, 0xD2, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x9A, 0xB1, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x25, 0xC3, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x23, 0xC0, 0x3C, 0x00, 0x00, 0x34, 0x7E, 0x00, 0x00, 0xB0, 0xA1, 0x2A, 0xEB, 0x69, 0x9A, 0x00, 0x00, 0xB3, 0x7E, 0x8B, 0x00, 0x60, 0x81, 0x00, 0x00, 0xB5, 0x5F, 0xDD, 0xF0, 0x5C, 0x37, 0x00, 0x00, 0xAD, 0x59, 0xFF, 0xFF, 0x57, 0xA4, 0x00, 0x00, 0x9C, 0x06, 0xFF, 0xFF, 0x51, 0xF7, 0x00, 0x00, 0x8C, 0xBA, 0xFF, 0xFF, 0x4C, 0xC9, 0x00, 0x00, 0x85, 0x26, 0xFF, 0xFF, 0x4E, 0x98, 0x00, 0x00, 0x83, 0xA7, 0xFF, 0xFF, 0x4E, 0xB5, 0x00, 0x00, 0x7B, 0x0E, 0xFF, 0xFF, 0x51, 0x77, 0xFF, 0xFF, 0x3C, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x6B, 0x8A, 0x9C, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x77, 0x8F, 0x39, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x66, 0xA4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x64, 0xB3, 0x96, 0x00, 0x00, 0x00, 0x00, 0x87, 0x13, 0xCE, 0x29, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x12, 0xD9, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x53, 0x23, 0xDB, 0x58, 0x00, 0x00, 0x17, 0xFD, 0x00, 0x00, 0xD6, 0x57, 0x31, 0x11, 0x4D, 0xA0, 0x00, 0x00, 0xD8, 0x0A, 0x8B, 0x19, 0x44, 0xA4, 0x00, 0x00, 0xD7, 0xF1, 0xDC, 0x70, 0x41, 0x6E, 0x00, 0x00, 0xD2, 0x2E, 0xFF, 0xFF, 0x3B, 0x3B, 0x00, 0x00, 0xC8, 0x08, 0xFF, 0xFF, 0x32, 0x72, 0x00, 0x00, 0xBE, 0x86, 0xFF, 0xFF, 0x2D, 0x8F, 0x00, 0x00, 0xB9, 0x53, 0xFF, 0xFF, 0x30, 0xA8, 0x00, 0x00, 0xB0, 0x82, 0xFF, 0xFF, 0x35, 0x76, 0x00, 0x00, 0xA7, 0xEF, 0xFF, 0xFF, 0x38, 0x42, 0xC3, 0xAC, 0x83, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x7D, 0x8F, 0xED, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x07, 0xA4, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x55, 0xB2, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x88, 0x8D, 0xD5, 0x05, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE1, 0xEC, 0x96, 0x00, 0x00, 0x00, 0x00, 0x54, 0xDC, 0xF8, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x34, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0x7D, 0x36, 0xFA, 0x09, 0xF5, 0xFF, 0xFF, 0x87, 0x86, 0x28, 0xD9, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0x53, 0x2B, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0xC6, 0x00, 0x00, 0xF1, 0x66, 0xFF, 0xFF, 0x19, 0xAC, 0x00, 0x00, 0xDD, 0xEB, 0xFF, 0xFF, 0x11, 0xE3, 0x00, 0x00, 0xD5, 0xAB, 0xFF, 0xFF, 0x17, 0xF1, 0x00, 0x00, 0xCF, 0x70, 0xFF, 0xFF, 0x1C, 0x27, 0x00, 0x00, 0xC9, 0x23, 0xFF, 0xFF, 0x1E, 0xEE, 0xBF, 0xFF, 0x8F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x3A, 0xA4, 0x83, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x7D, 0xAE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xF2, 0xD9, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x93, 0xF7, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x50, 0x56, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x31, 0xD6, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0x11, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0x35, 0x0B, 0xDD, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEE, 0x38, 0xFF, 0xFF, 0x00, 0x00, 0xAA, 0x7F, 0xA2, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x17, 0xA9, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x99, 0x80, 0xEF, 0x13, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x54, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x25, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x93, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0xAA, 0x66, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x96, 0xCE, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xD8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xB2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7C, 0x8C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0x8C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0xCB, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x77, 0x49, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x79, 0xD6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0x15, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x19, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x30, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x53, 0xAA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDA, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFA, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xEE, 0xD5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE4, 0xB6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0x82, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x51, 0xAE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0x56, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0x49, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF9, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xEC, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD4, 0x2E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0E, 0xD2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2C, 0x8A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4E, 0xE6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0xBC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD6, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF7, 0x3E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE6, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD5, 0xBE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCF, 0xE1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC9, 0xB8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x19, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0xC4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4B, 0x0C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x75, 0x88, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA6, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD4, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF3, 0xD8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDD, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCF, 0x0D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC9, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC3, 0x49, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBD, 0x35, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0xC6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0x49, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x71, 0x43, 0x06, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0xA6, 0xB4, 0x06, 0x70, 0xFC, 0x22, 0x00, 0x00, 0xD0, 0x26, 0x03, 0x54, 0xF2, 0x29, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0x36, 0xDD, 0xA5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCE, 0xC2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBD, 0xB2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBA, 0xAF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB7, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB4, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x25, 0x00, 0x00, 0x01, 0xA2, 0xFF, 0xFF, 0x00, 0x00, 0x12, 0xA1, 0x13, 0x8A, 0xFF, 0xFF, 0x11, 0x32, 0x41, 0x95, 0x07, 0x9A, 0xF6, 0xB4, 0x00, 0x00, 0x68, 0x96, 0x22, 0xB7, 0xE1, 0x9D, 0x00, 0x00, 0x9A, 0x09, 0x27, 0x23, 0xD5, 0xC7, 0x00, 0x00, 0xC0, 0x7F, 0x25, 0xEF, 0xCF, 0x13, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0x88, 0xC0, 0x95, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x37, 0xC0, 0x56, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x8D, 0xB4, 0xFB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB1, 0xC4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0xEA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAA, 0x87, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0xA2, 0x00, 0x00, 0x18, 0x80, 0xDE, 0x4D, 0x00, 0x00, 0x1A, 0xF0, 0x38, 0xB1, 0xCA, 0xD7, 0x00, 0x00, 0x47, 0x27, 0x3D, 0x3B, 0xBA, 0xDC, 0x00, 0x00, 0x7C, 0xD5, 0x41, 0x9B, 0xB2, 0x03, 0x00, 0x00, 0xB2, 0x23, 0x44, 0xCA, 0xA7, 0xF2, 0x00, 0x00, 0xEA, 0xBA, 0x44, 0x57, 0xA1, 0x86, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0x50, 0x9D, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0x71, 0x98, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x90, 0x95, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0xCC, 0x90, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0xD0, 0x8B, 0xF1, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x59, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0x09, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x20, 0x50, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x56, 0x37, 0x53, 0x00, 0x00, 0x36, 0x4F, 0x94, 0xF3, 0x00, 0x00, 0x16, 0xFD, 0x65, 0xA1, 0x83, 0x4C, 0x00, 0x00, 0x58, 0x60, 0x63, 0x84, 0x75, 0x52, 0x00, 0x00, 0x9A, 0x57, 0x67, 0x99, 0x6D, 0x26, 0x00, 0x00, 0xD2, 0xF1, 0x67, 0x1F, 0x67, 0x6A, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0xBD, 0x5C, 0x42, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0x1A, 0x56, 0x96, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0xE8, 0x52, 0x29, 0x00, 0x00, 0xFF, 0xFF, 0x52, 0x7E, 0x4E, 0xEA, 0x00, 0x00, 0xFF, 0xFF, 0x53, 0x9B, 0x4F, 0xE4, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0xE4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x83, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x53, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x7F, 0x4C, 0xB5, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x65, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x59, 0x7A, 0x6E, 0x00, 0x00, 0x0F, 0x17, 0x73, 0xAC, 0x4E, 0x87, 0x00, 0x00, 0x57, 0x50, 0x0B, 0xD9, 0x00, 0x79, 0x07, 0xE8, 0x8E, 0x10, 0x00, 0x00, 0x08, 0x21, 0x66, 0xD4, 0x8C, 0x44, 0x00, 0x00, 0x15, 0xED, 0xB7, 0x32, 0x87, 0x89, 0x00, 0x00, 0x17, 0xDE, 0xFF, 0xFF, 0x82, 0xDE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0xD2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0xB2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0x82, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x6B, 0xFF, 0xFF, 0x11, 0x4E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x29, 0xDF, 0x00, 0x00, 0x00, 0x00, 0xBE, 0xE6, 0x5D, 0x41, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xF3, 0x7D, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x60, 0x87, 0x85, 0x00, 0x00, 0x00, 0x00, 0x91, 0x70, 0x99, 0x97, 0x00, 0x00, 0x00, 0x00, 0x60, 0xA1, 0x8A, 0x5B, 0x00, 0x00, 0x40, 0x30, 0x00, 0x00, 0x60, 0x8D, 0x11, 0xCE, 0x73, 0x28, 0x00, 0x00, 0x70, 0x49, 0x73, 0xC5, 0x68, 0x01, 0x00, 0x00, 0x70, 0x63, 0xBA, 0x42, 0x64, 0xA3, 0x00, 0x00, 0x70, 0xC9, 0xFF, 0xFF, 0x62, 0x5C, 0x00, 0x00, 0x62, 0x7E, 0xFF, 0xFF, 0x5C, 0xDC, 0x22, 0xD5, 0x41, 0xF9, 0xFF, 0xFF, 0x53, 0x7D, 0x00, 0x00, 0x17, 0x60, 0xFF, 0xFF, 0x6C, 0xA4, 0x00, 0x00, 0x18, 0xF3, 0xFF, 0xFF, 0x6B, 0xB2, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x67, 0x60, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xC6, 0x3A, 0x6D, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xD4, 0x71, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xCF, 0x7F, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xB6, 0x8E, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x52, 0x9A, 0x41, 0x00, 0x00, 0x00, 0x00, 0x73, 0xB8, 0xAC, 0x85, 0x00, 0x00, 0x00, 0x00, 0x56, 0xB7, 0xB2, 0x63, 0x00, 0x00, 0x1E, 0x74, 0x00, 0x00, 0xA0, 0xB1, 0x1E, 0xF6, 0x55, 0xC3, 0x00, 0x00, 0xA6, 0x06, 0x78, 0x4B, 0x4C, 0xBE, 0x00, 0x00, 0xA7, 0x05, 0xBC, 0x4D, 0x48, 0x8C, 0x00, 0x00, 0xA6, 0x4A, 0xFF, 0xFF, 0x46, 0xF8, 0x00, 0x00, 0x93, 0x66, 0xFF, 0xFF, 0x41, 0x48, 0x00, 0x00, 0x7E, 0xAD, 0xFF, 0xFF, 0x3C, 0x31, 0x00, 0x00, 0x7B, 0xF3, 0xFF, 0xFF, 0x40, 0xD0, 0x00, 0x00, 0x79, 0x2C, 0xFF, 0xFF, 0x3F, 0x66, 0x00, 0x00, 0x73, 0x74, 0xFF, 0xFF, 0x40, 0x00, 0xDF, 0xFF, 0x3B, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x4F, 0x78, 0xDF, 0x00, 0x00, 0x00, 0x00, 0xB2, 0xDF, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xAD, 0x92, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xF4, 0x9A, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x28, 0xB3, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x28, 0xC9, 0x54, 0x00, 0x00, 0x00, 0x00, 0x51, 0xEF, 0xCF, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x8E, 0x25, 0x35, 0x3A, 0x8D, 0x00, 0x00, 0xC8, 0x69, 0x77, 0xA5, 0x32, 0x3B, 0x00, 0x00, 0xC7, 0xD6, 0xBB, 0x1D, 0x2D, 0xF3, 0x00, 0x00, 0xC7, 0xE0, 0xFF, 0xFF, 0x2D, 0x0A, 0x00, 0x00, 0xBE, 0x24, 0xFF, 0xFF, 0x24, 0x79, 0x00, 0x00, 0xB1, 0x6C, 0xFF, 0xFF, 0x1E, 0x93, 0x00, 0x00, 0xAD, 0x9A, 0xFF, 0xFF, 0x20, 0x07, 0x00, 0x00, 0xAA, 0x2D, 0xFF, 0xFF, 0x21, 0xCD, 0x00, 0x00, 0xA0, 0x77, 0xFF, 0xFF, 0x26, 0xAE, 0xBF, 0xFF, 0x77, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x35, 0x7F, 0x2D, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xB5, 0x95, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x92, 0x36, 0xA3, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x64, 0xF7, 0xB6, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x59, 0x3C, 0xD5, 0x19, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x3D, 0xDA, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0E, 0xE6, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x5F, 0x1D, 0x4A, 0x23, 0x21, 0x00, 0x00, 0xEA, 0x07, 0x72, 0xAB, 0x19, 0xDC, 0x00, 0x00, 0xEC, 0x8E, 0xBA, 0x16, 0x15, 0xBA, 0x00, 0x00, 0xEB, 0xCC, 0xFF, 0xFF, 0x13, 0x8D, 0x00, 0x00, 0xDB, 0x92, 0xFF, 0xFF, 0x05, 0x25, 0x00, 0x00, 0xCF, 0x4C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xBF, 0xFF, 0xFF, 0x02, 0x8E, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xFF, 0x09, 0x1E, 0xAF, 0x57, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x0E, 0x95, 0x45, 0x00, 0x00, 0x00, 0x00, 0x97, 0x63, 0xA5, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x67, 0x7D, 0xC8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x54, 0x19, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE0, 0xF0, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x25, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0x5A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x32, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF6, 0x45, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x92, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x34, 0xA5, 0x97, 0x00, 0x00, 0x00, 0x00, 0x64, 0xD5, 0xCF, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x56, 0xB2, 0xEB, 0x74, 0x00, 0x00, 0x00, 0x00, 0x34, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x11, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6F, 0x8A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0x4F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x9E, 0xA2, 0xA4, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x82, 0xCC, 0x70, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xE1, 0xF2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x47, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x06, 0x92, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7B, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8B, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x77, 0x30, 0xAA, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x6B, 0xF1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x31, 0x8E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x06, 0x57, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xDA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x09, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x26, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4D, 0x2A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9E, 0x73, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD5, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF9, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xEC, 0xD3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xAC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD1, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0E, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x22, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4A, 0x5A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x5C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xEB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD4, 0x53, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF9, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xEB, 0x67, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD1, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCD, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC6, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x05, 0xAC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0xD7, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD2, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF7, 0xDF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE5, 0xEB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCF, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC6, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB7, 0xBD, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB5, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x43, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0xAE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0x20, 0x00, 0x00, 0xFB, 0xFD, 0x00, 0x00, 0xCD, 0x6D, 0x00, 0x00, 0xFA, 0xD1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDA, 0xDE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCD, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB9, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB1, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAF, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x22, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x1B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0xDB, 0x00, 0x00, 0xEF, 0x65, 0x00, 0x00, 0x9E, 0x77, 0x00, 0x00, 0xDF, 0x29, 0x00, 0x00, 0xBA, 0xD1, 0x00, 0x00, 0xD9, 0xBB, 0x00, 0x00, 0xF3, 0xD7, 0x00, 0x00, 0xCC, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBA, 0xC8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAF, 0xD4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0x87, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x18, 0x4D, 0x00, 0x00, 0xF6, 0x40, 0x00, 0x00, 0x39, 0xDA, 0x00, 0x00, 0xE1, 0xF9, 0x00, 0x00, 0x60, 0x8E, 0x00, 0x00, 0xD3, 0x7E, 0x00, 0x00, 0x8C, 0x9E, 0x06, 0x88, 0xC8, 0xB2, 0x00, 0x00, 0xB3, 0xA8, 0x09, 0x2E, 0xC1, 0xBA, 0x00, 0x00, 0xE6, 0x2B, 0x0D, 0x63, 0xBB, 0xCB, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x21, 0xB1, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x05, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9E, 0x49, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9D, 0x23, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9A, 0xDB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xEF, 0x0C, 0x79, 0x00, 0x00, 0x05, 0xC5, 0xCC, 0x24, 0x00, 0x00, 0x1D, 0x4F, 0x22, 0x91, 0xBA, 0xCF, 0x00, 0x00, 0x44, 0xEF, 0x28, 0xD3, 0xAD, 0xCC, 0x00, 0x00, 0x72, 0x6D, 0x2D, 0xDF, 0xA5, 0xC3, 0x00, 0x00, 0xA2, 0xDD, 0x2F, 0x6C, 0x9A, 0xCC, 0x00, 0x00, 0xD0, 0x9A, 0x2E, 0x6E, 0x96, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xF4, 0x8F, 0xD8, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0xCC, 0x8A, 0xB7, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0x79, 0x97, 0xCB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0xEE, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0x07, 0x81, 0x0C, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x8A, 0x21, 0x73, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xED, 0x39, 0x44, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x29, 0x2E, 0x09, 0x00, 0x00, 0x24, 0x6A, 0x86, 0x99, 0x00, 0x00, 0x18, 0x1C, 0x51, 0x4F, 0x76, 0xBF, 0x00, 0x00, 0x4E, 0xC8, 0x4F, 0xCE, 0x6A, 0x07, 0x00, 0x00, 0x87, 0x8A, 0x52, 0xEA, 0x61, 0x96, 0x00, 0x00, 0xBA, 0xE8, 0x52, 0xA1, 0x5C, 0x53, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x1E, 0x53, 0x2E, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0xFA, 0x4E, 0x69, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0xD6, 0x49, 0xE5, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x50, 0x45, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0x8C, 0x45, 0x8B, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0xED, 0xF5, 0x1E, 0x93, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x67, 0x3F, 0x18, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xF1, 0x57, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x62, 0x69, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x66, 0x23, 0x41, 0xDF, 0x00, 0x00, 0x45, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF3, 0x00, 0x00, 0x04, 0x95, 0x52, 0xED, 0x7B, 0xA9, 0x00, 0x00, 0x14, 0xB1, 0xA3, 0xE0, 0x74, 0x56, 0x00, 0x00, 0x19, 0x0A, 0xE8, 0x48, 0x6F, 0xB2, 0x00, 0x00, 0x02, 0x19, 0xFF, 0xFF, 0x71, 0x77, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0xE7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xE7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0x57, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xA9, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xA8, 0x49, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x2E, 0x63, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xCB, 0x71, 0x72, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x6D, 0x7D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x58, 0x49, 0x7C, 0xC5, 0x00, 0x00, 0x2C, 0x6A, 0x00, 0x00, 0x55, 0xAA, 0x0F, 0x33, 0x60, 0x81, 0x00, 0x00, 0x62, 0x47, 0x62, 0xE7, 0x55, 0x7F, 0x00, 0x00, 0x63, 0x88, 0xA7, 0xB5, 0x50, 0x72, 0x00, 0x00, 0x63, 0xFF, 0xEB, 0x77, 0x4E, 0x7F, 0x00, 0x00, 0x5A, 0xDF, 0xFF, 0xFF, 0x4B, 0xD1, 0x0F, 0x0F, 0x42, 0x9A, 0xFF, 0xFF, 0x47, 0xF8, 0x00, 0x00, 0x19, 0xF0, 0xFF, 0xFF, 0x57, 0xD3, 0x00, 0x00, 0x1B, 0x85, 0xFF, 0xFF, 0x57, 0xA5, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x55, 0x13, 0xFF, 0xFF, 0x0C, 0x32, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x71, 0x19, 0x75, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFD, 0x4E, 0x59, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x84, 0x66, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x37, 0x70, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x79, 0x56, 0x82, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x60, 0xE1, 0x9A, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x53, 0x70, 0xA7, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x7C, 0x17, 0xC9, 0x42, 0x84, 0x00, 0x00, 0x97, 0x18, 0x67, 0x68, 0x39, 0x10, 0x00, 0x00, 0x98, 0x26, 0xAB, 0x7A, 0x35, 0xB0, 0x00, 0x00, 0x97, 0x68, 0xEB, 0xAD, 0x33, 0xF5, 0x00, 0x00, 0x8B, 0x6F, 0xFF, 0xFF, 0x31, 0x7F, 0x00, 0x00, 0x82, 0x75, 0xFF, 0xFF, 0x2A, 0xA8, 0x00, 0x00, 0x7C, 0x77, 0xFF, 0xFF, 0x29, 0x69, 0x00, 0x00, 0x7A, 0x00, 0xFF, 0xFF, 0x2B, 0xC1, 0x00, 0x00, 0x66, 0x88, 0xFF, 0xFF, 0x33, 0xFE, 0xE6, 0xEC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x2A, 0x50, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1D, 0x6B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x1A, 0x71, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x78, 0xC3, 0x86, 0x07, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xAD, 0xA5, 0x76, 0x00, 0x00, 0x00, 0x00, 0x48, 0x80, 0xB4, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x39, 0x39, 0xBD, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x62, 0x1D, 0x98, 0x29, 0x0B, 0x00, 0x00, 0xB8, 0xE3, 0x67, 0xCC, 0x20, 0xC0, 0x00, 0x00, 0xB9, 0x74, 0xA7, 0xEF, 0x19, 0xAE, 0x00, 0x00, 0xB8, 0x03, 0xE7, 0x24, 0x18, 0x7D, 0x00, 0x00, 0xB2, 0x64, 0xFF, 0xFF, 0x15, 0x32, 0x00, 0x00, 0xA7, 0x7C, 0xFF, 0xFF, 0x0C, 0xA6, 0x00, 0x00, 0xA1, 0xCF, 0xFF, 0xFF, 0x09, 0x79, 0x00, 0x00, 0xA0, 0x9E, 0xFF, 0xFF, 0x0D, 0x82, 0x00, 0x00, 0x9A, 0x7A, 0xFF, 0xFF, 0x12, 0xC9, 0xB1, 0x79, 0x61, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x6E, 0x6D, 0x63, 0x00, 0x00, 0x00, 0x00, 0x89, 0x8F, 0x71, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFD, 0x87, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0xAB, 0x51, 0x00, 0x00, 0x00, 0x00, 0x37, 0x46, 0xC6, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x29, 0xCC, 0xCC, 0x55, 0x00, 0x00, 0x00, 0x00, 0x17, 0x61, 0xD1, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x15, 0x10, 0xFF, 0x07, 0x04, 0x00, 0x00, 0xD3, 0x24, 0x5F, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xE4, 0xA4, 0x96, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x72, 0xE7, 0x21, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x65, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x37, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x9D, 0x91, 0x6E, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xC1, 0x71, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xD5, 0x88, 0x68, 0x00, 0x00, 0x00, 0x00, 0x61, 0x8F, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x2C, 0xD0, 0x89, 0x00, 0x00, 0x00, 0x00, 0x22, 0x95, 0xD6, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xF1, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0x50, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0xA7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x70, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE5, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x5D, 0xFF, 0xFF, 0x00, 0x00, 0x8E, 0x11, 0x72, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFA, 0x87, 0x84, 0x00, 0x00, 0x00, 0x00, 0x61, 0xEA, 0xB0, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x30, 0x1E, 0xD2, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x21, 0x19, 0xF0, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0xB6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x35, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0xED, 0x88, 0x64, 0x00, 0x00, 0x00, 0x00, 0x60, 0x95, 0xAF, 0x69, 0x00, 0x00, 0x00, 0x00, 0x32, 0xE9, 0xD4, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x17, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7B, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8B, 0x3E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0xAC, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x37, 0xE4, 0xD7, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x17, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0D, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x46, 0x25, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0x49, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x95, 0x8B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF8, 0x32, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE9, 0x0D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCD, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x2B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB4, 0x9A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0xFB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1E, 0xD7, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0x9A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0xED, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x95, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCF, 0xA6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFA, 0xA5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCE, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB1, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAF, 0x26, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x21, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x33, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x66, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x95, 0xC9, 0x00, 0x00, 0xEC, 0xA7, 0x00, 0x00, 0xAE, 0x3C, 0x00, 0x00, 0xFE, 0x24, 0x00, 0x00, 0xFE, 0xB3, 0x00, 0x00, 0xD8, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCD, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB3, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA9, 0xA7, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0xEE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x1D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x23, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x31, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0x16, 0x00, 0x00, 0xE9, 0xB7, 0x00, 0x00, 0x9C, 0xAD, 0x00, 0x00, 0xE0, 0x81, 0x00, 0x00, 0xAF, 0x3E, 0x00, 0x00, 0xD2, 0x8E, 0x00, 0x00, 0xE9, 0xE1, 0x00, 0x00, 0xCC, 0x23, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB4, 0xBE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAA, 0xEF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x96, 0xAF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x95, 0x32, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1B, 0x7A, 0x00, 0x00, 0xE9, 0xA6, 0x00, 0x00, 0x30, 0xF5, 0x00, 0x00, 0xD3, 0x85, 0x00, 0x00, 0x52, 0xCC, 0x00, 0x00, 0xD6, 0xC7, 0x00, 0x00, 0x8F, 0x67, 0x00, 0x00, 0xC7, 0x97, 0x00, 0x00, 0xB0, 0x22, 0x00, 0x00, 0xC3, 0x87, 0x00, 0x00, 0xE2, 0x26, 0x00, 0x00, 0xB5, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAA, 0x8E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9B, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8F, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8E, 0x2B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8C, 0x1B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x74, 0x00, 0x00, 0x09, 0x6F, 0x00, 0x00, 0xD5, 0x50, 0x00, 0x00, 0x2B, 0x2A, 0x00, 0x00, 0xC6, 0x63, 0x00, 0x00, 0x4E, 0x10, 0x00, 0x00, 0xBC, 0x18, 0x00, 0x00, 0x77, 0x8D, 0x00, 0x00, 0xB7, 0x6F, 0x00, 0x00, 0xA6, 0xE7, 0x00, 0x00, 0xB2, 0x6E, 0x00, 0x00, 0xD2, 0xD3, 0x00, 0x00, 0xAC, 0x21, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9D, 0xAA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x91, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0xEE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0x47, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x82, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x02, 0x00, 0x00, 0x21, 0x37, 0x06, 0x9A, 0xAE, 0x3B, 0x00, 0x00, 0x40, 0x14, 0x0F, 0x1E, 0xA1, 0xBE, 0x00, 0x00, 0x69, 0x2D, 0x16, 0x4E, 0x98, 0xE0, 0x00, 0x00, 0x94, 0xAE, 0x18, 0xCC, 0x8F, 0xB3, 0x00, 0x00, 0xBD, 0xC0, 0x19, 0x1F, 0x8A, 0x1D, 0x00, 0x00, 0xF5, 0xC1, 0x1A, 0xBF, 0x84, 0x85, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0x9B, 0x8B, 0x4F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xC5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x79, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x0E, 0x1C, 0x89, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFD, 0x24, 0xB2, 0x00, 0x00, 0x11, 0xA3, 0x79, 0x89, 0x00, 0x00, 0x18, 0x82, 0x3D, 0x8B, 0x6A, 0xF2, 0x00, 0x00, 0x44, 0xBF, 0x3C, 0x69, 0x60, 0x49, 0x00, 0x00, 0x77, 0x2C, 0x3E, 0x1E, 0x58, 0x7D, 0x00, 0x00, 0xAB, 0xBE, 0x41, 0x02, 0x53, 0x95, 0x00, 0x00, 0xDF, 0xBF, 0x42, 0xBB, 0x4C, 0x6D, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x64, 0x45, 0xD9, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x66, 0x55, 0x82, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0xBB, 0x53, 0x81, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0xAB, 0x40, 0xE9, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x3F, 0x01, 0xDA, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xF6, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, 0x95, 0xCB, 0x3A, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x87, 0x5D, 0x53, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x60, 0x39, 0xAC, 0x00, 0x00, 0x34, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0xFC, 0x00, 0x00, 0x02, 0x71, 0x47, 0x6D, 0x69, 0xB6, 0x00, 0x00, 0x12, 0x3B, 0x91, 0x86, 0x61, 0xF0, 0x00, 0x00, 0x17, 0x0B, 0xC7, 0xC2, 0x5C, 0x93, 0x00, 0x00, 0x19, 0xAE, 0xFF, 0xFF, 0x5A, 0xBC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0x8A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x52, 0x22, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x52, 0x26, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x8E, 0x13, 0x35, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x1D, 0x32, 0x08, 0x00, 0x00, 0x00, 0x00, 0x88, 0x8E, 0x4F, 0x12, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x06, 0x57, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x69, 0x59, 0x65, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x52, 0x99, 0x6F, 0xE0, 0x00, 0x00, 0x13, 0x42, 0x00, 0x00, 0x4C, 0x65, 0x0C, 0xA8, 0x4D, 0xB8, 0x00, 0x00, 0x57, 0xFB, 0x58, 0x87, 0x42, 0xE0, 0x00, 0x00, 0x59, 0x0E, 0x95, 0xC0, 0x3D, 0x1A, 0x00, 0x00, 0x59, 0x2F, 0xCA, 0x9A, 0x3A, 0x8A, 0x00, 0x00, 0x57, 0x71, 0xFF, 0xFF, 0x39, 0xB8, 0x00, 0x00, 0x45, 0xD7, 0xFF, 0xFF, 0x39, 0x42, 0x00, 0x00, 0x1E, 0xB8, 0xFF, 0xFF, 0x41, 0x90, 0x00, 0x00, 0x1E, 0x5C, 0xFF, 0xFF, 0x41, 0x85, 0x00, 0x00, 0x20, 0x83, 0xFF, 0xFF, 0x40, 0x00, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 0xD2, 0x1B, 0x4A, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xC0, 0x35, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x52, 0x4D, 0x33, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x38, 0x59, 0x80, 0x00, 0x00, 0x00, 0x00, 0x66, 0x13, 0x65, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x50, 0xAF, 0x7B, 0x65, 0x00, 0x00, 0x00, 0x00, 0x41, 0x7A, 0x92, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x4A, 0x12, 0x4A, 0x32, 0x92, 0x00, 0x00, 0x88, 0x5E, 0x58, 0x69, 0x27, 0x37, 0x00, 0x00, 0x88, 0xCA, 0x9A, 0xCA, 0x24, 0xF5, 0x00, 0x00, 0x88, 0x4B, 0xCD, 0x7F, 0x22, 0x81, 0x00, 0x00, 0x84, 0x93, 0xFF, 0xFF, 0x1F, 0xCD, 0x00, 0x00, 0x7B, 0x88, 0xFF, 0xFF, 0x1B, 0x4B, 0x00, 0x00, 0x6D, 0xD7, 0xFF, 0xFF, 0x18, 0x99, 0x00, 0x00, 0x6B, 0x66, 0xFF, 0xFF, 0x1A, 0xEF, 0x00, 0x00, 0x58, 0x76, 0xFF, 0xFF, 0x23, 0xB4, 0xC9, 0x3A, 0x1F, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x96, 0x33, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x86, 0x80, 0x50, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD9, 0x5A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0xD7, 0x66, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xAE, 0x90, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x32, 0xA4, 0xA2, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xE7, 0xAA, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xD7, 0x17, 0x8E, 0x13, 0xB2, 0x00, 0x00, 0xAA, 0x1E, 0x57, 0xC0, 0x0A, 0xDB, 0x00, 0x00, 0xAA, 0xEC, 0x95, 0x65, 0x03, 0xDA, 0x00, 0x00, 0xA7, 0xC5, 0xC9, 0x94, 0x00, 0x2F, 0x00, 0x00, 0xA6, 0x64, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x91, 0x75, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x90, 0x14, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x8E, 0x7B, 0x4E, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x84, 0xFA, 0x50, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x78, 0xB5, 0x5B, 0x14, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x66, 0x43, 0x00, 0x00, 0x00, 0x00, 0x50, 0x49, 0x99, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x6A, 0xB5, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x11, 0x68, 0xB4, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x4F, 0x55, 0x73, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x5E, 0x94, 0x25, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xAE, 0xC7, 0x44, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x70, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x74, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xA6, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0x85, 0x90, 0x51, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x2A, 0x5A, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x67, 0x81, 0x65, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x51, 0x4F, 0xA1, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x11, 0x3E, 0xB7, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x06, 0x5F, 0xC5, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x78, 0x58, 0x57, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xBE, 0xA0, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xD0, 0xFD, 0x97, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x72, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x90, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x4E, 0x5B, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x27, 0x63, 0x05, 0x00, 0x00, 0x00, 0x00, 0x54, 0x3C, 0xA5, 0x78, 0x00, 0x00, 0x00, 0x00, 0x13, 0x2F, 0xB4, 0x68, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3F, 0xCA, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0xE9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0xD1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x6A, 0x6E, 0x6A, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x77, 0xA5, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2F, 0xB1, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x57, 0x86, 0xA2, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x23, 0xE1, 0xCB, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x69, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0x53, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8C, 0x2F, 0x00, 0x00, 0xF4, 0x91, 0x00, 0x00, 0xAE, 0xF1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF9, 0x6F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD6, 0xC3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB7, 0xB7, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAD, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x99, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x96, 0xC5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x22, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x28, 0xE5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x87, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x89, 0x56, 0x00, 0x00, 0xE1, 0x62, 0x00, 0x00, 0x9F, 0x8D, 0x00, 0x00, 0xFC, 0xCE, 0x00, 0x00, 0xFB, 0xE9, 0x00, 0x00, 0xD5, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCB, 0xA6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x97, 0xAE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x91, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8F, 0x13, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x24, 0x91, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x27, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x86, 0xE4, 0x00, 0x00, 0xE3, 0x19, 0x00, 0x00, 0x9A, 0x0D, 0x00, 0x00, 0xDF, 0x7F, 0x00, 0x00, 0xA2, 0x64, 0x00, 0x00, 0xCA, 0xFB, 0x00, 0x00, 0xE0, 0x3A, 0x00, 0x00, 0xCB, 0xD5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAF, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x90, 0xBA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8B, 0x4E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x86, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1D, 0xD7, 0x00, 0x00, 0xD8, 0x13, 0x00, 0x00, 0x28, 0x36, 0x00, 0x00, 0xC9, 0x0A, 0x00, 0x00, 0x48, 0x35, 0x00, 0x00, 0xD7, 0xE1, 0x00, 0x00, 0x90, 0xD3, 0x00, 0x00, 0xCC, 0xA2, 0x00, 0x00, 0x9C, 0xAC, 0x00, 0x00, 0xC0, 0x99, 0x00, 0x00, 0xE1, 0x6A, 0x00, 0x00, 0xAF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0xF7, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x91, 0x77, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x87, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x74, 0x74, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x75, 0x44, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xAE, 0x00, 0x00, 0x0C, 0xB1, 0x00, 0x00, 0xCB, 0xD4, 0x00, 0x00, 0x22, 0xA7, 0x00, 0x00, 0xB6, 0xCF, 0x00, 0x00, 0x3F, 0x8B, 0x00, 0x00, 0xAF, 0x5F, 0x00, 0x00, 0x6A, 0x92, 0x00, 0x00, 0xAE, 0x83, 0x00, 0x00, 0x91, 0xFB, 0x00, 0x00, 0xB2, 0xD1, 0x00, 0x00, 0xD8, 0xB1, 0x00, 0x00, 0xA6, 0x23, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x92, 0x5B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x88, 0x35, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x75, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x6E, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x6D, 0xD3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x16, 0x00, 0x00, 0x20, 0x57, 0x00, 0x00, 0xAC, 0x22, 0x00, 0x00, 0x3F, 0x8C, 0x00, 0x00, 0xA3, 0xD2, 0x00, 0x00, 0x63, 0xBE, 0x00, 0x00, 0x9C, 0xE1, 0x00, 0x00, 0x8C, 0x26, 0x00, 0x00, 0x93, 0x59, 0x00, 0x00, 0xBD, 0xB3, 0x00, 0x00, 0x91, 0x23, 0x00, 0x00, 0xF1, 0xA0, 0x00, 0x00, 0x88, 0x2A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x79, 0x26, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x6D, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x66, 0xD4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x65, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0xF4, 0x00, 0x00, 0x13, 0xF7, 0x00, 0x00, 0x9E, 0x71, 0x00, 0x00, 0x39, 0x5E, 0x00, 0x00, 0x96, 0x75, 0x00, 0x00, 0x60, 0x6F, 0x00, 0x00, 0x8C, 0xF6, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x86, 0xDE, 0x00, 0x00, 0xB1, 0x82, 0x00, 0x00, 0x81, 0x6E, 0x00, 0x00, 0xDC, 0xC2, 0x00, 0x00, 0x81, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0xE1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x65, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0x44, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0xEB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x86, 0x18, 0xFD, 0x00, 0x00, 0x04, 0xED, 0x6E, 0xA1, 0x00, 0x00, 0x14, 0xE0, 0x29, 0xEB, 0x5F, 0xEF, 0x00, 0x00, 0x3D, 0xEE, 0x2A, 0x8F, 0x57, 0xE5, 0x00, 0x00, 0x69, 0xA6, 0x2D, 0x74, 0x51, 0x14, 0x00, 0x00, 0x99, 0xCD, 0x2F, 0xAA, 0x4B, 0x99, 0x00, 0x00, 0xC7, 0x1E, 0x30, 0xE6, 0x49, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xA6, 0x41, 0x5F, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0x20, 0x40, 0x86, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x57, 0x3F, 0xA4, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0x68, 0x40, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xE4, 0x21, 0x81, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7D, 0x2B, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x72, 0x8C, 0x3C, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x51, 0xC4, 0x32, 0xD2, 0x00, 0x00, 0x22, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x29, 0x00, 0x00, 0x05, 0x72, 0x3D, 0xA1, 0x55, 0x34, 0x00, 0x00, 0x10, 0xC2, 0x7F, 0x67, 0x4E, 0x93, 0x00, 0x00, 0x13, 0x04, 0xB4, 0x58, 0x4A, 0x1A, 0x00, 0x00, 0x16, 0x96, 0xF0, 0x66, 0x46, 0x5E, 0x00, 0x00, 0x0B, 0x6B, 0xFF, 0xFF, 0x45, 0xCA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x3E, 0x0D, 0xB0, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xB0, 0x0F, 0xEF, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0x9C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x13, 0x25, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x66, 0x99, 0x44, 0x45, 0x00, 0x00, 0x00, 0x00, 0x59, 0x9E, 0x4F, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x9D, 0x62, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1F, 0x09, 0x31, 0x3D, 0x25, 0x00, 0x00, 0x4E, 0x45, 0x4F, 0x91, 0x32, 0x11, 0x00, 0x00, 0x4E, 0x89, 0x83, 0x7B, 0x2C, 0x29, 0x00, 0x00, 0x4F, 0xDE, 0xB7, 0xB5, 0x2A, 0x18, 0x00, 0x00, 0x50, 0xDA, 0xF5, 0x42, 0x28, 0xEE, 0x00, 0x00, 0x42, 0xB2, 0xFF, 0xFF, 0x28, 0xCA, 0x00, 0x00, 0x25, 0xDD, 0xFF, 0xFF, 0x31, 0x7A, 0x00, 0x00, 0x1C, 0xC3, 0xFF, 0xFF, 0x30, 0xE3, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x2E, 0xCB, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x62, 0x26, 0x43, 0x00, 0x00, 0x00, 0x00, 0x82, 0xDC, 0x35, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x65, 0x34, 0x46, 0x67, 0x00, 0x00, 0x00, 0x00, 0x57, 0xF7, 0x54, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x64, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x79, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xF0, 0x0D, 0x85, 0x20, 0xDF, 0x00, 0x00, 0x79, 0xF2, 0x4B, 0xAD, 0x13, 0xA2, 0x00, 0x00, 0x78, 0x7C, 0x85, 0xED, 0x10, 0x3D, 0x00, 0x00, 0x79, 0x8C, 0xB9, 0x87, 0x0C, 0xE4, 0x00, 0x00, 0x79, 0x05, 0xF2, 0x21, 0x09, 0xA2, 0x00, 0x00, 0x73, 0x55, 0xFF, 0xFF, 0x09, 0x10, 0x00, 0x00, 0x68, 0xD0, 0xFF, 0xFF, 0x04, 0xBD, 0x00, 0x00, 0x57, 0xF7, 0xFF, 0xFF, 0x08, 0x94, 0x00, 0x00, 0x54, 0x16, 0xFF, 0xFF, 0x0C, 0xAE, 0xB0, 0xC8, 0x08, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x79, 0xC4, 0x29, 0x26, 0x00, 0x00, 0x00, 0x00, 0x77, 0x93, 0x42, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x63, 0x35, 0x48, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x59, 0x46, 0x55, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1B, 0x6C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x11, 0x6E, 0x8C, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x03, 0x6C, 0x95, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xDD, 0x12, 0x15, 0x00, 0x00, 0x00, 0x00, 0x99, 0xAA, 0x49, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x96, 0xC0, 0x80, 0x99, 0x00, 0x00, 0x00, 0x00, 0x94, 0xFA, 0xB3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x94, 0xBD, 0xFE, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x7A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x81, 0x7C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0x37, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x76, 0x41, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x29, 0x91, 0x00, 0x00, 0x00, 0x00, 0x76, 0x93, 0x42, 0x08, 0x00, 0x00, 0x00, 0x00, 0x63, 0x60, 0x49, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x0F, 0x56, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x30, 0x31, 0x84, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xE7, 0x4D, 0x4C, 0x00, 0x00, 0x00, 0x00, 0xB1, 0x6C, 0x6E, 0xF9, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xA3, 0xB3, 0x95, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x14, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x49, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x96, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x91, 0x0D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x76, 0x98, 0x42, 0x29, 0x00, 0x00, 0x00, 0x00, 0x64, 0xBF, 0x4A, 0x14, 0x00, 0x00, 0x00, 0x00, 0x60, 0x84, 0x56, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x96, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xC2, 0x4C, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xD1, 0x8D, 0xF6, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x9C, 0xBB, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xAC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xF5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x62, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xE7, 0xFF, 0xFF, 0x00, 0x00, 0x67, 0xFB, 0x4A, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x63, 0x7C, 0x57, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x01, 0x56, 0xA4, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0x94, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x7D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x41, 0xFF, 0xFF, 0x00, 0x00, 0x5E, 0xF4, 0x5C, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x76, 0x42, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0xA4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x87, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0xA9, 0xA6, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1B, 0xA9, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x23, 0xD3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0x2A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x82, 0x5F, 0x00, 0x00, 0xDF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x00, 0x00, 0xF3, 0x59, 0x00, 0x00, 0xF3, 0x59, 0x00, 0x00, 0xD4, 0xAD, 0x00, 0x00, 0xFD, 0x5A, 0x00, 0x00, 0xB2, 0x3B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x97, 0xE5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8D, 0x6D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0xA1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x70, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x24, 0xCA, 0x00, 0x00, 0xFF, 0xB7, 0x00, 0x00, 0x1B, 0x11, 0x00, 0x00, 0xC5, 0xAD, 0x00, 0x00, 0x3C, 0x51, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x2B, 0x00, 0x00, 0xE0, 0x8A, 0x00, 0x00, 0x9A, 0x34, 0x00, 0x00, 0xC5, 0x7E, 0x00, 0x00, 0xE4, 0x25, 0x00, 0x00, 0xB0, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAA, 0xBE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x90, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x74, 0xC2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x69, 0x88, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x69, 0xC5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1E, 0x46, 0x00, 0x00, 0xCB, 0x6D, 0x00, 0x00, 0x1E, 0x76, 0x00, 0x00, 0xB6, 0x13, 0x00, 0x00, 0x3E, 0xB5, 0x00, 0x00, 0xA7, 0x0D, 0x00, 0x00, 0x54, 0x49, 0x00, 0x00, 0xB0, 0x74, 0x00, 0x00, 0x8E, 0xA2, 0x00, 0x00, 0xC5, 0x83, 0x00, 0x00, 0xE3, 0x16, 0x00, 0x00, 0xAB, 0x57, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x90, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x88, 0x5E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x6E, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x63, 0xD5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x9A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xE2, 0x00, 0x00, 0x0D, 0xCB, 0x00, 0x00, 0xC0, 0xF2, 0x00, 0x00, 0x1E, 0x5F, 0x00, 0x00, 0xAF, 0x11, 0x00, 0x00, 0x3E, 0xE5, 0x00, 0x00, 0xA0, 0x53, 0x00, 0x00, 0x55, 0xF0, 0x00, 0x00, 0xA6, 0xDF, 0x00, 0x00, 0x85, 0xFE, 0x00, 0x00, 0xB5, 0xAB, 0x00, 0x00, 0xDD, 0xD8, 0x00, 0x00, 0x92, 0xAF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x88, 0x3A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x71, 0x96, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x67, 0xC9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x57, 0xF4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0xC9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xC8, 0x00, 0x00, 0x1A, 0xB5, 0x00, 0x00, 0xA2, 0x66, 0x00, 0x00, 0x38, 0x1E, 0x00, 0x00, 0x96, 0x28, 0x00, 0x00, 0x53, 0x4D, 0x00, 0x00, 0x91, 0x18, 0x00, 0x00, 0x75, 0xA9, 0x00, 0x00, 0x88, 0x0A, 0x00, 0x00, 0xBB, 0xF0, 0x00, 0x00, 0x86, 0x56, 0x00, 0x00, 0xF7, 0x14, 0x00, 0x00, 0x74, 0xDB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x6A, 0x8B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0xEE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x52, 0x4C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x52, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x61, 0x00, 0x00, 0x0C, 0xF5, 0x00, 0x00, 0x91, 0x5D, 0x00, 0x00, 0x30, 0xC9, 0x00, 0x00, 0x87, 0xAB, 0x00, 0x00, 0x4B, 0x63, 0x00, 0x00, 0x7C, 0x8B, 0x00, 0x00, 0x70, 0xF5, 0x00, 0x00, 0x79, 0x4B, 0x00, 0x00, 0xAF, 0xB7, 0x00, 0x00, 0x71, 0x0F, 0x00, 0x00, 0xD5, 0xBF, 0x00, 0x00, 0x6D, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x61, 0xF5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x56, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4C, 0x13, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4C, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x8D, 0x00, 0x00, 0x04, 0x0F, 0x00, 0x00, 0x7B, 0xD1, 0x00, 0x00, 0x26, 0x12, 0x00, 0x00, 0x76, 0x56, 0x00, 0x00, 0x47, 0xA1, 0x00, 0x00, 0x71, 0xBE, 0x00, 0x00, 0x6F, 0xB6, 0x00, 0x00, 0x6B, 0x05, 0x00, 0x00, 0x9C, 0x77, 0x00, 0x00, 0x69, 0x49, 0x00, 0x00, 0xC8, 0x92, 0x00, 0x00, 0x65, 0x2E, 0x00, 0x00, 0xFE, 0x2F, 0x00, 0x00, 0x5A, 0x4F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x50, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x44, 0xF1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x45, 0x6D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x4B, 0x04, 0x19, 0x00, 0x00, 0x00, 0x00, 0x65, 0x1B, 0x00, 0x00, 0x15, 0x76, 0x11, 0x48, 0x58, 0xF6, 0x00, 0x00, 0x39, 0x15, 0x18, 0x1F, 0x50, 0x6F, 0x00, 0x00, 0x5D, 0xD6, 0x1C, 0x3B, 0x48, 0xDE, 0x00, 0x00, 0x8A, 0x1D, 0x1F, 0x2E, 0x44, 0x96, 0x00, 0x00, 0xB4, 0xB9, 0x1E, 0xDC, 0x42, 0xC6, 0x00, 0x00, 0xE4, 0x80, 0x1D, 0xE2, 0x43, 0x91, 0x00, 0x00, 0xFF, 0xFF, 0x15, 0x4A, 0x44, 0x25, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0x10, 0x44, 0xE1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xF1, 0x08, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x78, 0x88, 0x23, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x8F, 0x28, 0x77, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x9A, 0x2E, 0x28, 0x00, 0x00, 0x0B, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xF5, 0x00, 0x00, 0x04, 0xFE, 0x38, 0x79, 0x43, 0x53, 0x00, 0x00, 0x0E, 0xA3, 0x6F, 0xB9, 0x3E, 0x0C, 0x00, 0x00, 0x12, 0xA7, 0xA3, 0xF9, 0x38, 0xDF, 0x00, 0x00, 0x14, 0x02, 0xD3, 0x79, 0x36, 0x3F, 0x00, 0x00, 0x11, 0x08, 0xFF, 0xFF, 0x36, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x2A, 0x02, 0xE7, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0x46, 0x08, 0x2C, 0x00, 0x00, 0xFF, 0xFF, 0x28, 0x2C, 0xD0, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xF0, 0x1B, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x75, 0x72, 0x1E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x56, 0x32, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x3E, 0x3C, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x39, 0x27, 0x4B, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xD4, 0x06, 0xE8, 0x2D, 0xD3, 0x00, 0x00, 0x44, 0x94, 0x46, 0x61, 0x22, 0xC1, 0x00, 0x00, 0x43, 0xAE, 0x75, 0xA1, 0x1C, 0x30, 0x00, 0x00, 0x45, 0x95, 0xA8, 0xAF, 0x19, 0x25, 0x00, 0x00, 0x46, 0xD1, 0xD9, 0x0D, 0x17, 0xF0, 0x00, 0x00, 0x40, 0xB9, 0xFF, 0xFF, 0x15, 0x2E, 0x00, 0x00, 0x2C, 0xA1, 0xFF, 0xFF, 0x1D, 0xC5, 0x00, 0x00, 0x1C, 0x8B, 0xFF, 0xFF, 0x20, 0xAC, 0x00, 0x00, 0x1E, 0x37, 0xFF, 0xFF, 0x1E, 0x37, 0xAD, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDC, 0x23, 0x78, 0x00, 0x00, 0x00, 0x00, 0x72, 0x2A, 0x22, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x59, 0xE6, 0x3B, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x48, 0x52, 0x3F, 0x29, 0x00, 0x00, 0x00, 0x00, 0x32, 0x4E, 0x53, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x15, 0x19, 0x65, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xA5, 0x0C, 0x6E, 0x0A, 0xA9, 0x00, 0x00, 0x6D, 0x5F, 0x40, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x69, 0x15, 0x74, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x68, 0x87, 0xA8, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x66, 0x4E, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x67, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x56, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x43, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x42, 0x86, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x18, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x21, 0x22, 0x00, 0x00, 0x00, 0x00, 0x61, 0x53, 0x31, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x62, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x5E, 0x42, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x92, 0x59, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x82, 0x34, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x73, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x83, 0x20, 0xA1, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x78, 0xF9, 0xD1, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x79, 0xB5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6D, 0xDC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x57, 0x95, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x58, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xCE, 0x34, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0x40, 0xED, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xBD, 0x43, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x21, 0x3A, 0x25, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x94, 0x5A, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x93, 0xE1, 0xA8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x2A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x90, 0xB5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x87, 0xE1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x77, 0x63, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x76, 0x4E, 0xFF, 0xFF, 0x00, 0x00, 0x63, 0x29, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0xBC, 0x40, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x51, 0x92, 0x44, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x3A, 0x36, 0xD4, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xA3, 0x6C, 0xF9, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x55, 0xBE, 0xE5, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x8E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x90, 0x0A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x93, 0xE2, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xBC, 0x46, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x6A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0xB1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x37, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xE7, 0xFF, 0xFF, 0x00, 0x00, 0x4F, 0x3A, 0x4D, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x52, 0x63, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x63, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x9B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xD1, 0x83, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xC2, 0x98, 0x00, 0x00, 0x38, 0xD5, 0x00, 0x00, 0xAC, 0xB4, 0x00, 0x00, 0x50, 0xF0, 0x00, 0x00, 0xDC, 0xB4, 0x00, 0x00, 0x9F, 0xFF, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x00, 0xD9, 0x99, 0x00, 0x00, 0xAD, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8E, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0x12, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x68, 0x73, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x59, 0xCC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x54, 0x39, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1E, 0x7A, 0x00, 0x00, 0xC1, 0x58, 0x00, 0x00, 0x1F, 0x06, 0x00, 0x00, 0xAA, 0x84, 0x00, 0x00, 0x37, 0xB3, 0x00, 0x00, 0x99, 0x0E, 0x00, 0x00, 0x45, 0x38, 0x00, 0x00, 0xA0, 0x94, 0x00, 0x00, 0x69, 0x7D, 0x00, 0x00, 0xC9, 0x67, 0x00, 0x00, 0xE5, 0x41, 0x00, 0x00, 0x8E, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x6B, 0x4A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0x72, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x53, 0x6A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4E, 0xAB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x39, 0x00, 0x00, 0x05, 0x8B, 0x00, 0x00, 0xBC, 0xF0, 0x00, 0x00, 0x1C, 0xB6, 0x00, 0x00, 0xA4, 0x29, 0x00, 0x00, 0x35, 0xD8, 0x00, 0x00, 0x97, 0xBB, 0x00, 0x00, 0x49, 0x66, 0x00, 0x00, 0x93, 0xEC, 0x00, 0x00, 0x68, 0xD7, 0x00, 0x00, 0x88, 0x9C, 0x00, 0x00, 0xC3, 0x1F, 0x00, 0x00, 0x8A, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x6D, 0xB3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x64, 0x34, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x57, 0x05, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4D, 0xD5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0xAB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xBF, 0x00, 0x00, 0x13, 0x74, 0x00, 0x00, 0x96, 0x45, 0x00, 0x00, 0x2F, 0xDB, 0x00, 0x00, 0x8A, 0x1D, 0x00, 0x00, 0x43, 0xB0, 0x00, 0x00, 0x73, 0x3A, 0x00, 0x00, 0x50, 0x66, 0x00, 0x00, 0x72, 0x71, 0x00, 0x00, 0xCF, 0x0C, 0x00, 0x00, 0x6F, 0x66, 0x00, 0x00, 0xED, 0xDB, 0x00, 0x00, 0x66, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x59, 0xDD, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x51, 0x5B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0xC7, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x42, 0x44, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x26, 0x00, 0x00, 0x09, 0x87, 0x00, 0x00, 0x86, 0xFD, 0x00, 0x00, 0x27, 0xF9, 0x00, 0x00, 0x72, 0x76, 0x00, 0x00, 0x40, 0x24, 0x00, 0x00, 0x6E, 0x7D, 0x00, 0x00, 0x4C, 0xC6, 0x00, 0x00, 0x69, 0xF9, 0x00, 0x00, 0xC5, 0x57, 0x00, 0x00, 0x63, 0x5D, 0x00, 0x00, 0xCD, 0x11, 0x00, 0x00, 0x5C, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x53, 0xA1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4A, 0xD7, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3D, 0xE8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3A, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0xAF, 0x00, 0x00, 0x21, 0x48, 0x00, 0x00, 0x6A, 0x0D, 0x00, 0x00, 0x3F, 0x34, 0x00, 0x00, 0x64, 0x29, 0x00, 0x00, 0x50, 0x8D, 0x00, 0x00, 0x56, 0x1C, 0x00, 0x00, 0x8A, 0x42, 0x00, 0x00, 0x5A, 0x3D, 0x00, 0x00, 0xC0, 0xCF, 0x00, 0x00, 0x56, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4C, 0xD1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x43, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x39, 0x11, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x35, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xF8, 0x00, 0x00, 0x1A, 0xB4, 0x00, 0x00, 0x5E, 0x45, 0x00, 0x00, 0x3A, 0xC6, 0x00, 0x00, 0x58, 0xCF, 0x00, 0x00, 0x53, 0x2F, 0x00, 0x00, 0x50, 0xF4, 0x00, 0x00, 0x86, 0x17, 0x00, 0x00, 0x50, 0x3A, 0x00, 0x00, 0xB1, 0x0D, 0x00, 0x00, 0x4B, 0x17, 0x00, 0x00, 0xE4, 0x83, 0x00, 0x00, 0x45, 0xC7, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x33, 0xE1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x30, 0x27, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x1F, 0x00, 0x00, 0x12, 0xE1, 0x00, 0x00, 0x52, 0xE9, 0x00, 0x00, 0x34, 0x29, 0x01, 0x66, 0x4B, 0x4F, 0x00, 0x00, 0x53, 0x62, 0x04, 0x33, 0x43, 0x84, 0x00, 0x00, 0x7B, 0x24, 0x0A, 0x2A, 0x3F, 0x7B, 0x00, 0x00, 0xA5, 0xD9, 0x0A, 0x46, 0x3C, 0x9C, 0x00, 0x00, 0xCC, 0x91, 0x06, 0xF2, 0x3D, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0x54, 0x3C, 0xB0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x31, 0x2E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0xB6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCE, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x92, 0x0C, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x52, 0xFC, 0x16, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0xB9, 0x24, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x97, 0x00, 0x00, 0x06, 0xE8, 0x30, 0x64, 0x33, 0xDC, 0x00, 0x00, 0x0C, 0x28, 0x5F, 0x76, 0x2E, 0xBC, 0x00, 0x00, 0x10, 0x10, 0x95, 0xF7, 0x2A, 0xE4, 0x00, 0x00, 0x0F, 0xF4, 0xBF, 0x46, 0x27, 0x15, 0x00, 0x00, 0x0E, 0xE3, 0xF5, 0x12, 0x25, 0x5D, 0x00, 0x00, 0x00, 0x21, 0xFF, 0xFF, 0x27, 0xFB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0x3B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0x5E, 0x97, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x54, 0x1C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x2A, 0x20, 0x65, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x16, 0x2B, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x28, 0xA6, 0x38, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x5D, 0x06, 0x83, 0x1C, 0xED, 0x00, 0x00, 0x3C, 0x7D, 0x3C, 0x42, 0x0F, 0x69, 0x00, 0x00, 0x3D, 0xBE, 0x6A, 0x38, 0x09, 0x76, 0x00, 0x00, 0x3D, 0xEC, 0x96, 0x6A, 0x03, 0x10, 0x00, 0x00, 0x3F, 0x91, 0xC3, 0xE6, 0x02, 0x50, 0x00, 0x00, 0x3E, 0x1E, 0xF8, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3A, 0xFF, 0xFF, 0x02, 0x03, 0x00, 0x00, 0x1F, 0xA6, 0xFF, 0xFF, 0x0A, 0x53, 0x00, 0x00, 0x17, 0x17, 0xFF, 0xFF, 0x0E, 0x6B, 0x84, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x93, 0x0D, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x74, 0x1D, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x7B, 0x2A, 0x9B, 0x00, 0x00, 0x00, 0x00, 0x38, 0xAC, 0x31, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x17, 0xE2, 0x44, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x0C, 0x02, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x52, 0x65, 0x35, 0x75, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xA8, 0x67, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x60, 0x96, 0x66, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xA4, 0xBF, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x0B, 0xF8, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x30, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x31, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x24, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x02, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x79, 0xD0, 0x24, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xA8, 0x1E, 0x74, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x82, 0x2D, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x13, 0x34, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9D, 0x23, 0x9B, 0x00, 0x00, 0x00, 0x00, 0x59, 0x35, 0x52, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x68, 0xC5, 0x94, 0x60, 0x00, 0x00, 0x00, 0x00, 0x53, 0xFC, 0xBE, 0x14, 0x00, 0x00, 0x00, 0x00, 0x69, 0x93, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x53, 0xBE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x38, 0x95, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x38, 0x28, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0xDC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xD8, 0x23, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x50, 0x25, 0x31, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x39, 0xD2, 0x38, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x32, 0x00, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x92, 0x03, 0x58, 0x66, 0x00, 0x00, 0x00, 0x00, 0x82, 0xC0, 0xA7, 0x95, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xA6, 0xA8, 0x64, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x71, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x57, 0xA6, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x53, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x52, 0x46, 0x33, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x48, 0x3A, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x2B, 0x0D, 0xC2, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x41, 0x54, 0x22, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x20, 0x91, 0xD1, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xD8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x83, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x77, 0x3E, 0xFF, 0xFF, 0x00, 0x00, 0x53, 0xD9, 0x35, 0x31, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x5C, 0x3A, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xD1, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFB, 0x5A, 0x67, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x1A, 0xC1, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x5A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xED, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x12, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0xF9, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0xEC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x91, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x5A, 0x00, 0x00, 0x17, 0xC6, 0x00, 0x00, 0xBD, 0x4F, 0x00, 0x00, 0x1D, 0x50, 0x00, 0x00, 0xA4, 0x54, 0x00, 0x00, 0x2F, 0x18, 0x00, 0x00, 0x96, 0x6A, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x91, 0xD1, 0x00, 0x00, 0x5A, 0xFD, 0x00, 0x00, 0xAE, 0x9C, 0x00, 0x00, 0xAE, 0x9C, 0x00, 0x00, 0x73, 0x16, 0x00, 0x00, 0xFF, 0xAF, 0x00, 0x00, 0x67, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x5A, 0x17, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x51, 0x11, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0xFA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x39, 0x89, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x18, 0x00, 0x00, 0x07, 0xC2, 0x00, 0x00, 0xB8, 0x47, 0x00, 0x00, 0x15, 0x54, 0x00, 0x00, 0x97, 0x64, 0x00, 0x00, 0x2B, 0xF1, 0x00, 0x00, 0x8E, 0xB6, 0x00, 0x00, 0x40, 0x6A, 0x00, 0x00, 0x69, 0x22, 0x00, 0x00, 0x48, 0x8B, 0x00, 0x00, 0x69, 0xB4, 0x00, 0x00, 0xD6, 0x7F, 0x00, 0x00, 0x68, 0x47, 0x00, 0x00, 0xFD, 0x3C, 0x00, 0x00, 0x5C, 0x5F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x54, 0x17, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4C, 0x2C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x23, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xCD, 0x00, 0x00, 0x09, 0x78, 0x00, 0x00, 0x73, 0x66, 0x00, 0x00, 0x20, 0x8D, 0x00, 0x00, 0x6E, 0x45, 0x00, 0x00, 0x3B, 0x84, 0x00, 0x00, 0x64, 0xF7, 0x00, 0x00, 0x45, 0x8B, 0x00, 0x00, 0x66, 0xDA, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x00, 0x60, 0xE8, 0x00, 0x00, 0xCD, 0x40, 0x00, 0x00, 0x56, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4E, 0x2B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x45, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x36, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x30, 0x1D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x66, 0x00, 0x00, 0x24, 0x1D, 0x00, 0x00, 0x67, 0x8E, 0x00, 0x00, 0x39, 0xF0, 0x00, 0x00, 0x61, 0xBB, 0x00, 0x00, 0x3B, 0xCA, 0x00, 0x00, 0x4D, 0x47, 0x00, 0x00, 0x80, 0x4A, 0x00, 0x00, 0x56, 0x4A, 0x00, 0x00, 0xAB, 0x8D, 0x00, 0x00, 0x51, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x39, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xC3, 0x00, 0x00, 0x1E, 0x33, 0x00, 0x00, 0x5B, 0xA3, 0x00, 0x00, 0x35, 0x55, 0x00, 0x00, 0x5C, 0x3F, 0x00, 0x00, 0x38, 0x9D, 0x00, 0x00, 0x49, 0x8A, 0x00, 0x00, 0x7B, 0x4F, 0x00, 0x00, 0x4D, 0x9C, 0x00, 0x00, 0xA8, 0xFB, 0x00, 0x00, 0x4A, 0x11, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3A, 0xD9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0x3B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x0D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x25, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x2D, 0x00, 0x00, 0x14, 0x1F, 0x00, 0x00, 0x51, 0xE3, 0x00, 0x00, 0x30, 0x09, 0x00, 0x00, 0x50, 0x91, 0x00, 0x00, 0x39, 0x1D, 0x00, 0x00, 0x44, 0x84, 0x00, 0x00, 0x7E, 0x44, 0x00, 0x00, 0x43, 0x69, 0x00, 0x00, 0xA4, 0x04, 0x00, 0x00, 0x3A, 0x27, 0x00, 0x00, 0xE7, 0x86, 0x00, 0x00, 0x35, 0xEB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2E, 0xD1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x27, 0x3E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x37, 0x00, 0x00, 0x0C, 0x83, 0x00, 0x00, 0x47, 0x6C, 0x00, 0x00, 0x28, 0x95, 0x00, 0x00, 0x3D, 0x7C, 0x00, 0x00, 0x45, 0x93, 0x00, 0x00, 0x3B, 0xA8, 0x00, 0x00, 0x7D, 0xB9, 0x00, 0x00, 0x38, 0x97, 0x00, 0x00, 0x9E, 0x81, 0x00, 0x00, 0x30, 0x43, 0x00, 0x00, 0xC9, 0xBD, 0x00, 0x00, 0x31, 0x36, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x29, 0x36, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x21, 0x88, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1B, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB0, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xE8, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x3D, 0xB8, 0x00, 0x00, 0x23, 0x4A, 0x00, 0x00, 0x38, 0xA2, 0x00, 0x00, 0x43, 0x93, 0x00, 0x00, 0x38, 0x39, 0x00, 0x00, 0x6B, 0x06, 0x00, 0x00, 0x34, 0x9F, 0x00, 0x00, 0x94, 0x14, 0x00, 0x00, 0x2C, 0xAC, 0x00, 0x00, 0xB7, 0xDE, 0x00, 0x00, 0x2A, 0xD6, 0x00, 0x00, 0xE9, 0x39, 0x00, 0x00, 0x25, 0xB2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1D, 0x6C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0xE3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8D, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xA0, 0x02, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x31, 0xA5, 0x13, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFB, 0x00, 0x00, 0x04, 0x41, 0x29, 0x30, 0x24, 0x02, 0x00, 0x00, 0x0A, 0x3D, 0x54, 0xC7, 0x1D, 0x6A, 0x00, 0x00, 0x10, 0x3A, 0x83, 0xD0, 0x19, 0x96, 0x00, 0x00, 0x11, 0xDD, 0xB0, 0xA5, 0x15, 0x70, 0x00, 0x00, 0x0F, 0xDB, 0xDB, 0x2B, 0x12, 0xD6, 0x00, 0x00, 0x09, 0x2C, 0xFF, 0xFF, 0x14, 0x70, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0x98, 0x0D, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xCD, 0x0C, 0x67, 0x00, 0x00, 0x00, 0x00, 0x41, 0xC7, 0x0D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x8F, 0x1E, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x94, 0x2B, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x46, 0x07, 0x7E, 0x06, 0x56, 0x00, 0x00, 0x32, 0x66, 0x31, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x32, 0x07, 0x5B, 0x94, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x6A, 0x81, 0x31, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xAB, 0xAF, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x29, 0x53, 0xD4, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x24, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x9F, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x91, 0x17, 0x44, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x77, 0x0E, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3A, 0x15, 0x62, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x23, 0x22, 0x45, 0x00, 0x00, 0x00, 0x00, 0x03, 0x8B, 0x3A, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x05, 0x28, 0x57, 0x00, 0x00, 0x00, 0x00, 0x37, 0x68, 0x57, 0x24, 0x00, 0x00, 0x00, 0x00, 0x31, 0xB6, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x32, 0xAC, 0xAE, 0x68, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xA6, 0xC8, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x84, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x22, 0x31, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x18, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x04, 0x18, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x51, 0xD4, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x8E, 0x1F, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x7A, 0x26, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAA, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, 0x43, 0xA9, 0x54, 0x75, 0x00, 0x00, 0x00, 0x00, 0x48, 0x5C, 0x63, 0x84, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x4F, 0xB1, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x35, 0xA3, 0xB9, 0x78, 0x00, 0x00, 0x00, 0x00, 0x34, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x25, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3E, 0xFF, 0xFF, 0x00, 0x00, 0x56, 0xF7, 0x16, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x55, 0x0D, 0x11, 0x05, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x7C, 0x1F, 0x95, 0x00, 0x00, 0x00, 0x00, 0x08, 0x2C, 0x3C, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x7F, 0x41, 0x19, 0x00, 0x00, 0x00, 0x00, 0x50, 0xA4, 0x6F, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x50, 0xB4, 0x99, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x60, 0xC5, 0x41, 0x00, 0x00, 0x00, 0x00, 0x54, 0x75, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x32, 0xE9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x0B, 0xFF, 0xFF, 0x00, 0x00, 0x55, 0xD6, 0x15, 0xD6, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB1, 0x22, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x21, 0xAC, 0xED, 0x00, 0x00, 0x00, 0x00, 0x81, 0x99, 0x95, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x87, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x74, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5A, 0xFF, 0xFF, 0x00, 0x00, 0x44, 0xCB, 0x26, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x57, 0x50, 0x52, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x93, 0x5C, 0x09, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xE8, 0xB4, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x62, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x85, 0x6A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x79, 0x4F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x50, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0x98, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xED, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6D, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x90, 0x00, 0x00, 0x06, 0x91, 0x00, 0x00, 0x85, 0xF7, 0x00, 0x00, 0x16, 0x32, 0x00, 0x00, 0x6B, 0x95, 0x00, 0x00, 0x33, 0x5C, 0x00, 0x00, 0x62, 0x55, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x54, 0xB7, 0x00, 0x00, 0xB4, 0xB7, 0x00, 0x00, 0x5A, 0x3A, 0x00, 0x00, 0xEE, 0x49, 0x00, 0x00, 0x50, 0x45, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x46, 0xED, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x37, 0x2A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x28, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x13, 0x00, 0x00, 0x23, 0xD6, 0x00, 0x00, 0x62, 0xD0, 0x00, 0x00, 0x32, 0x1E, 0x00, 0x00, 0x60, 0x5E, 0x00, 0x00, 0x41, 0x18, 0x00, 0x00, 0x4D, 0xE7, 0x00, 0x00, 0xAD, 0xE6, 0x00, 0x00, 0x52, 0xE0, 0x00, 0x00, 0xA0, 0x75, 0x00, 0x00, 0x4B, 0x77, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x37, 0xF3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x31, 0xD2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0xFA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x23, 0x4F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x89, 0x00, 0x00, 0x17, 0xE5, 0x00, 0x00, 0x57, 0xFD, 0x00, 0x00, 0x2D, 0x24, 0x00, 0x00, 0x5B, 0xB9, 0x00, 0x00, 0x35, 0x2C, 0x00, 0x00, 0x41, 0xF1, 0x00, 0x00, 0x82, 0xE8, 0x00, 0x00, 0x4A, 0xA1, 0x00, 0x00, 0x9D, 0xFF, 0x00, 0x00, 0x3A, 0x7D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x33, 0x59, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2C, 0xF2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x25, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xC7, 0x00, 0x00, 0x11, 0x53, 0x00, 0x00, 0x4F, 0x62, 0x00, 0x00, 0x29, 0x71, 0x00, 0x00, 0x54, 0xB1, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x00, 0x3B, 0xAB, 0x00, 0x00, 0x7C, 0xE0, 0x00, 0x00, 0x3B, 0xCF, 0x00, 0x00, 0x9A, 0xFE, 0x00, 0x00, 0x35, 0xAE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2E, 0x30, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x27, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1A, 0xB8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x9B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x60, 0x00, 0x00, 0x08, 0xEB, 0x00, 0x00, 0x42, 0x4C, 0x00, 0x00, 0x1A, 0xBA, 0x00, 0x00, 0x48, 0xA3, 0x00, 0x00, 0x27, 0x56, 0x00, 0x00, 0x35, 0xBF, 0x00, 0x00, 0x74, 0x1A, 0x00, 0x00, 0x34, 0x9C, 0x00, 0x00, 0x9B, 0x78, 0x00, 0x00, 0x2A, 0xF9, 0x00, 0x00, 0xD0, 0x7E, 0x00, 0x00, 0x28, 0xDF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x21, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x2A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x13, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x07, 0x00, 0x00, 0x18, 0xAF, 0x00, 0x00, 0x34, 0xB6, 0x00, 0x00, 0x24, 0xAD, 0x00, 0x00, 0x2E, 0x79, 0x00, 0x00, 0x6C, 0x80, 0x00, 0x00, 0x2B, 0x88, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0x22, 0xBC, 0x00, 0x00, 0xC2, 0xA2, 0x00, 0x00, 0x23, 0x95, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1B, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x91, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF5, 0x00, 0x00, 0x17, 0x7C, 0x00, 0x00, 0x29, 0xB1, 0x00, 0x00, 0x30, 0x6C, 0x00, 0x00, 0x25, 0xCC, 0x00, 0x00, 0x65, 0x0F, 0x00, 0x00, 0x1B, 0xA2, 0x00, 0x00, 0x8A, 0xDD, 0x00, 0x00, 0x17, 0x62, 0x00, 0x00, 0xB8, 0x3B, 0x00, 0x00, 0x19, 0x07, 0x00, 0x00, 0xF0, 0xFD, 0x00, 0x00, 0x14, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0xBA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x05, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x82, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x13, 0x00, 0x00, 0x14, 0x8F, 0x00, 0x00, 0x20, 0x81, 0x00, 0x00, 0x31, 0x29, 0x00, 0x00, 0x1C, 0xF1, 0x00, 0x00, 0x5A, 0x47, 0x00, 0x00, 0x17, 0xD0, 0x00, 0x00, 0x81, 0x3F, 0x00, 0x00, 0x10, 0x28, 0x00, 0x00, 0xA8, 0xD4, 0x00, 0x00, 0x0D, 0xE9, 0x00, 0x00, 0xCF, 0xA1, 0x00, 0x00, 0x0C, 0xF2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xD1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x7A, 0x00, 0x00, 0x07, 0xF2, 0x28, 0x29, 0x11, 0xA8, 0x00, 0x00, 0x0C, 0xB5, 0x4C, 0x71, 0x08, 0x4D, 0x00, 0x00, 0x0E, 0x16, 0x71, 0xC0, 0x01, 0x70, 0x00, 0x00, 0x0D, 0x9F, 0x9C, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x06, 0xC4, 0x79, 0x00, 0x00, 0x00, 0x00, 0x06, 0x15, 0xF7, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xED, 0x0F, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x18, 0xD4, 0x48, 0x85, 0x00, 0x00, 0x00, 0x00, 0x15, 0x8D, 0x67, 0x78, 0x00, 0x00, 0x00, 0x00, 0x12, 0xE1, 0x91, 0x68, 0x00, 0x00, 0x00, 0x00, 0x13, 0xE7, 0xC0, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x98, 0xF2, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x13, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x04, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xB4, 0x06, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x60, 0x21, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x34, 0x0D, 0x22, 0x00, 0x00, 0x00, 0x00, 0x22, 0x8D, 0x47, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x25, 0x61, 0x94, 0x00, 0x00, 0x00, 0x00, 0x17, 0x94, 0x8E, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x99, 0xC2, 0x11, 0x00, 0x00, 0x00, 0x00, 0x17, 0x05, 0xF3, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x11, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x06, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x50, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x53, 0x07, 0x69, 0x00, 0x00, 0x00, 0x00, 0x46, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xA9, 0x14, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0D, 0x23, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x9E, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xF1, 0x42, 0x71, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xFA, 0x5D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x25, 0x9C, 0x90, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x27, 0xAC, 0xC4, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x20, 0xA7, 0xC4, 0x55, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x10, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x49, 0x21, 0x09, 0x21, 0x00, 0x00, 0x00, 0x00, 0x49, 0x7A, 0x01, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x31, 0x75, 0x1A, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x58, 0x48, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x33, 0x55, 0x60, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xE6, 0x92, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x3F, 0xC1, 0x76, 0x00, 0x00, 0x00, 0x00, 0x26, 0xFC, 0xBC, 0x97, 0x00, 0x00, 0x00, 0x00, 0x26, 0x7A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xEA, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0x40, 0x08, 0x84, 0x00, 0x00, 0x00, 0x00, 0x32, 0x74, 0x1F, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xD6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x6E, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x68, 0x5D, 0x75, 0x00, 0x00, 0x00, 0x00, 0x32, 0x67, 0xBE, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x57, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x28, 0xAA, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0x28, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x1B, 0x5B, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x62, 0x9B, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x70, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x77, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x71, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x68, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x39, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x26, 0x5F, 0x70, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0xB0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xD4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x89, 0x39, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x11, 0x00, 0x00, 0x0E, 0x11, 0x00, 0x00, 0x4F, 0x55, 0x00, 0x00, 0x16, 0xFB, 0x00, 0x00, 0x53, 0x37, 0x00, 0x00, 0x33, 0x38, 0x00, 0x00, 0x3C, 0x48, 0x00, 0x00, 0x7C, 0x48, 0x00, 0x00, 0x43, 0x53, 0x00, 0x00, 0xA3, 0x52, 0x00, 0x00, 0x33, 0xC1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2C, 0x3D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x25, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x19, 0x42, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xDB, 0x00, 0x00, 0x08, 0xDB, 0x00, 0x00, 0x48, 0x1E, 0x00, 0x00, 0x14, 0x94, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, 0x2C, 0x1B, 0x00, 0x00, 0x36, 0x26, 0x00, 0x00, 0x76, 0x26, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x9F, 0xFF, 0x00, 0x00, 0x2E, 0x5A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x26, 0xDB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1A, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x13, 0x05, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x26, 0x00, 0x00, 0x03, 0x27, 0x00, 0x00, 0x40, 0x3C, 0x00, 0x00, 0x11, 0xF1, 0x00, 0x00, 0x39, 0x12, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x6F, 0x00, 0x00, 0x6F, 0x6F, 0x00, 0x00, 0x2E, 0x30, 0x00, 0x00, 0x9C, 0x6E, 0x00, 0x00, 0x27, 0xB8, 0x00, 0x00, 0xFA, 0x53, 0x00, 0x00, 0x21, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1A, 0x6C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x13, 0x7A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x37, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x31, 0xA4, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x28, 0x17, 0x00, 0x00, 0x68, 0x17, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x93, 0xDD, 0x00, 0x00, 0x1A, 0x8E, 0x00, 0x00, 0xCE, 0x10, 0x00, 0x00, 0x1A, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x13, 0x64, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x05, 0x52, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x91, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x4E, 0x00, 0x00, 0x0C, 0xCD, 0x00, 0x00, 0x29, 0x87, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1F, 0x50, 0x00, 0x00, 0x5F, 0x50, 0x00, 0x00, 0x12, 0x8B, 0x00, 0x00, 0x8C, 0xB0, 0x00, 0x00, 0x11, 0x88, 0x00, 0x00, 0xBC, 0xAD, 0x00, 0x00, 0x12, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xCE, 0x00, 0x00, 0x0B, 0xA3, 0x00, 0x00, 0x1B, 0x92, 0x00, 0x00, 0x26, 0x7F, 0x00, 0x00, 0x16, 0x7A, 0x00, 0x00, 0x56, 0x79, 0x00, 0x00, 0x0B, 0xBF, 0x00, 0x00, 0x83, 0xF0, 0x00, 0x00, 0x08, 0xA9, 0x00, 0x00, 0xB1, 0xB9, 0x00, 0x00, 0x08, 0xC8, 0x00, 0x00, 0xF3, 0xA2, 0x00, 0x00, 0x04, 0x55, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF0, 0x00, 0x00, 0x08, 0x5E, 0x00, 0x00, 0x11, 0xAB, 0x00, 0x00, 0x26, 0x82, 0x00, 0x00, 0x0C, 0x84, 0x00, 0x00, 0x4D, 0x36, 0x00, 0x00, 0x04, 0xBD, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xA3, 0x00, 0x00, 0x04, 0x9E, 0x00, 0x00, 0x05, 0xAC, 0x00, 0x00, 0x28, 0x46, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x45, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x51, 0x04, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA9, 0x1E, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x03, 0x4E, 0x37, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA5, 0x02, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE6, 0x1C, 0x98, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAF, 0x34, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x6B, 0x53, 0x64, 0x00, 0x00, 0x00, 0x00, 0x04, 0xD9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3C, 0x94, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x1E, 0x1C, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x1A, 0x32, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x12, 0x1C, 0x52, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xAE, 0x7F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x1E, 0x8B, 0x98, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xC0, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x09, 0xC9, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA4, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x2F, 0x09, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD0, 0x58, 0x81, 0x00, 0x00, 0x00, 0x00, 0x16, 0x11, 0x65, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x10, 0xD0, 0x90, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x16, 0x2E, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x13, 0x5F, 0xFF, 0x86, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB1, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x02, 0x5A, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x26, 0x23, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xA7, 0xBC, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x20, 0xA2, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x14, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x16, 0x4D, 0x47, 0x00, 0x00, 0x00, 0x00, 0x31, 0xAA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x9A, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x1A, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x23, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x25, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x11, 0x9E, 0x11, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xD2, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x86, 0x2E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x71, 0x4D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x31, 0x0E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x6D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x5B, 0x00, 0x89, 0x00, 0xB7, 0x00, 0xE5, 0x01, 0x12, 0x01, 0x40, 0x01, 0x6E, 0x01, 0x9B, 0x01, 0xC9, 0x01, 0xF7, 0x02, 0x25, 0x02, 0x52, 0x02, 0x80, 0x02, 0xAE, 0x02, 0xDC, 0x03, 0x09, 0x03, 0x37, 0x03, 0x65, 0x03, 0x93, 0x03, 0xC1, 0x03, 0xEE, 0x04, 0x1C, 0x04, 0x4A, 0x04, 0x78, 0x04, 0xA6, 0x04, 0xD4, 0x05, 0x01, 0x05, 0x2F, 0x05, 0x5D, 0x05, 0x8B, 0x05, 0xB9, 0x05, 0xE7, 0x06, 0x14, 0x06, 0x42, 0x06, 0x70, 0x06, 0x9E, 0x06, 0xCC, 0x06, 0xFA, 0x07, 0x28, 0x07, 0x56, 0x07, 0x83, 0x07, 0xB1, 0x07, 0xDF, 0x08, 0x0D, 0x08, 0x3B, 0x08, 0x69, 0x08, 0x97, 0x08, 0xC5, 0x08, 0xF3, 0x09, 0x21, 0x09, 0x4F, 0x09, 0x7D, 0x09, 0xAB, 0x09, 0xD9, 0x0A, 0x07, 0x0A, 0x35, 0x0A, 0x63, 0x0A, 0x91, 0x0A, 0xBF, 0x0A, 0xED, 0x0B, 0x1B, 0x0B, 0x49, 0x0B, 0x77, 0x0B, 0xA5, 0x0B, 0xD3, 0x0C, 0x01, 0x0C, 0x2F, 0x0C, 0x5D, 0x0C, 0x8B, 0x0C, 0xB9, 0x0C, 0xE7, 0x0D, 0x15, 0x0D, 0x43, 0x0D, 0x71, 0x0D, 0x9F, 0x0D, 0xCD, 0x0D, 0xFB, 0x0E, 0x29, 0x0E, 0x58, 0x0E, 0x86, 0x0E, 0xB4, 0x0E, 0xE2, 0x0F, 0x10, 0x0F, 0x3E, 0x0F, 0x6C, 0x0F, 0x9A, 0x0F, 0xC8, 0x0F, 0xF7, 0x10, 0x25, 0x10, 0x53, 0x10, 0x81, 0x10, 0xAF, 0x10, 0xDD, 0x11, 0x0C, 0x11, 0x3A, 0x11, 0x68, 0x11, 0x96, 0x11, 0xC4, 0x11, 0xF2, 0x12, 0x21, 0x12, 0x4F, 0x12, 0x7D, 0x12, 0xAB, 0x12, 0xD9, 0x13, 0x08, 0x13, 0x36, 0x13, 0x64, 0x13, 0x92, 0x13, 0xC0, 0x13, 0xEF, 0x14, 0x1D, 0x14, 0x4B, 0x14, 0x79, 0x14, 0xA8, 0x14, 0xD6, 0x15, 0x04, 0x15, 0x32, 0x15, 0x61, 0x15, 0x8F, 0x15, 0xBD, 0x15, 0xEB, 0x16, 0x1A, 0x16, 0x48, 0x16, 0x76, 0x16, 0xA5, 0x16, 0xD3, 0x17, 0x04, 0x17, 0x41, 0x17, 0x80, 0x17, 0xBE, 0x17, 0xFD, 0x18, 0x3B, 0x18, 0x79, 0x18, 0xB8, 0x18, 0xF6, 0x19, 0x34, 0x19, 0x73, 0x19, 0xB1, 0x19, 0xF0, 0x1A, 0x2E, 0x1A, 0x6D, 0x1A, 0xAB, 0x1A, 0xEA, 0x1B, 0x28, 0x1B, 0x67, 0x1B, 0xA5, 0x1B, 0xE4, 0x1C, 0x22, 0x1C, 0x61, 0x1C, 0x9F, 0x1C, 0xDE, 0x1D, 0x1C, 0x1D, 0x5B, 0x1D, 0x99, 0x1D, 0xD8, 0x1E, 0x16, 0x1E, 0x55, 0x1E, 0x93, 0x1E, 0xD2, 0x1F, 0x11, 0x1F, 0x4F, 0x1F, 0x8E, 0x1F, 0xCD, 0x20, 0x0B, 0x20, 0x4A, 0x20, 0x89, 0x20, 0xC7, 0x21, 0x06, 0x21, 0x45, 0x21, 0x84, 0x21, 0xC2, 0x22, 0x01, 0x22, 0x40, 0x22, 0x7F, 0x22, 0xBE, 0x22, 0xFC, 0x23, 0x3B, 0x23, 0x7A, 0x23, 0xB9, 0x23, 0xF8, 0x24, 0x37, 0x24, 0x76, 0x24, 0xB5, 0x24, 0xF4, 0x25, 0x33, 0x25, 0x72, 0x25, 0xB1, 0x25, 0xF0, 0x26, 0x2F, 0x26, 0x6E, 0x26, 0xAD, 0x26, 0xEC, 0x27, 0x2B, 0x27, 0x6A, 0x27, 0xA9, 0x27, 0xE8, 0x28, 0x28, 0x28, 0x67, 0x28, 0xA6, 0x28, 0xE5, 0x29, 0x24, 0x29, 0x64, 0x29, 0xA3, 0x29, 0xE2, 0x2A, 0x22, 0x2A, 0x61, 0x2A, 0xA0, 0x2A, 0xE0, 0x2B, 0x1F, 0x2B, 0x5E, 0x2B, 0x9E, 0x2B, 0xDD, 0x2C, 0x1D, 0x2C, 0x5C, 0x2C, 0x9C, 0x2C, 0xDB, 0x2D, 0x1B, 0x2D, 0x5B, 0x2D, 0x9A, 0x2D, 0xDA, 0x2E, 0x19, 0x2E, 0x59, 0x2E, 0x99, 0x2E, 0xD8, 0x2F, 0x18, 0x2F, 0x58, 0x2F, 0x98, 0x2F, 0xD7, 0x30, 0x17, 0x30, 0x57, 0x30, 0x97, 0x30, 0xD7, 0x31, 0x16, 0x31, 0x56, 0x31, 0x96, 0x31, 0xD6, 0x32, 0x16, 0x32, 0x56, 0x32, 0x96, 0x32, 0xD6, 0x33, 0x16, 0x33, 0x56, 0x33, 0x96, 0x33, 0xD7, 0x34, 0x17, 0x34, 0x57, 0x34, 0x97, 0x34, 0xD7, 0x35, 0x18, 0x35, 0x58, 0x35, 0x98, 0x35, 0xD8, 0x36, 0x19, 0x36, 0x59, 0x36, 0x9B, 0x36, 0xE2, 0x37, 0x29, 0x37, 0x70, 0x37, 0xB7, 0x37, 0xFE, 0x38, 0x45, 0x38, 0x8C, 0x38, 0xD3, 0x39, 0x1A, 0x39, 0x61, 0x39, 0xA8, 0x39, 0xEF, 0x3A, 0x37, 0x3A, 0x7E, 0x3A, 0xC5, 0x3B, 0x0D, 0x3B, 0x54, 0x3B, 0x9B, 0x3B, 0xE3, 0x3C, 0x2A, 0x3C, 0x72, 0x3C, 0xBA, 0x3D, 0x01, 0x3D, 0x49, 0x3D, 0x90, 0x3D, 0xD8, 0x3E, 0x20, 0x3E, 0x68, 0x3E, 0xAF, 0x3E, 0xF7, 0x3F, 0x3F, 0x3F, 0x87, 0x3F, 0xCF, 0x40, 0x17, 0x40, 0x5F, 0x40, 0xA7, 0x40, 0xEF, 0x41, 0x38, 0x41, 0x80, 0x41, 0xC8, 0x42, 0x10, 0x42, 0x59, 0x42, 0xA1, 0x42, 0xE9, 0x43, 0x32, 0x43, 0x7A, 0x43, 0xC3, 0x44, 0x0B, 0x44, 0x54, 0x44, 0x9D, 0x44, 0xE5, 0x45, 0x2E, 0x45, 0x77, 0x45, 0xBF, 0x46, 0x08, 0x46, 0x51, 0x46, 0x9A, 0x46, 0xE3, 0x47, 0x2C, 0x47, 0x75, 0x47, 0xBE, 0x48, 0x07, 0x48, 0x50, 0x48, 0x99, 0x48, 0xE3, 0x49, 0x2C, 0x49, 0x75, 0x49, 0xBE, 0x4A, 0x08, 0x4A, 0x51, 0x4A, 0x9B, 0x4A, 0xE4, 0x4B, 0x2D, 0x4B, 0x77, 0x4B, 0xC1, 0x4C, 0x0A, 0x4C, 0x54, 0x4C, 0x9D, 0x4C, 0xE7, 0x4D, 0x31, 0x4D, 0x7B, 0x4D, 0xC5, 0x4E, 0x0E, 0x4E, 0x58, 0x4E, 0xA2, 0x4E, 0xEC, 0x4F, 0x36, 0x4F, 0x80, 0x4F, 0xCA, 0x50, 0x15, 0x50, 0x5F, 0x50, 0xA9, 0x50, 0xF3, 0x51, 0x3E, 0x51, 0x88, 0x51, 0xD2, 0x52, 0x1D, 0x52, 0x67, 0x52, 0xB2, 0x52, 0xFC, 0x53, 0x47, 0x53, 0x91, 0x53, 0xDC, 0x54, 0x26, 0x54, 0x71, 0x54, 0xBC, 0x55, 0x06, 0x55, 0x51, 0x55, 0x9C, 0x55, 0xE6, 0x56, 0x31, 0x56, 0x7B, 0x56, 0xC6, 0x57, 0x11, 0x57, 0x5B, 0x57, 0xA6, 0x57, 0xF1, 0x58, 0x3B, 0x58, 0x86, 0x58, 0xD1, 0x59, 0x1B, 0x59, 0x66, 0x59, 0xB1, 0x59, 0xFB, 0x5A, 0x46, 0x5A, 0x91, 0x5A, 0xDB, 0x5B, 0x24, 0x5B, 0x67, 0x5B, 0xAB, 0x5B, 0xEF, 0x5C, 0x33, 0x5C, 0x77, 0x5C, 0xBB, 0x5C, 0xFF, 0x5D, 0x43, 0x5D, 0x87, 0x5D, 0xCB, 0x5E, 0x0F, 0x5E, 0x53, 0x5E, 0x97, 0x5E, 0xDB, 0x5F, 0x1F, 0x5F, 0x63, 0x5F, 0xA7, 0x5F, 0xEB, 0x60, 0x2F, 0x60, 0x73, 0x60, 0xB7, 0x60, 0xFB, 0x61, 0x3F, 0x61, 0x84, 0x61, 0xC8, 0x62, 0x0C, 0x62, 0x50, 0x62, 0x94, 0x62, 0xD8, 0x63, 0x1C, 0x63, 0x61, 0x63, 0xA5, 0x63, 0xE9, 0x64, 0x2D, 0x64, 0x71, 0x64, 0xB6, 0x64, 0xFA, 0x65, 0x3E, 0x65, 0x82, 0x65, 0xC7, 0x66, 0x0B, 0x66, 0x4F, 0x66, 0x93, 0x66, 0xD8, 0x67, 0x1C, 0x67, 0x60, 0x67, 0xA5, 0x67, 0xE9, 0x68, 0x2D, 0x68, 0x71, 0x68, 0xB6, 0x68, 0xFA, 0x69, 0x3E, 0x69, 0x82, 0x69, 0xC7, 0x6A, 0x0B, 0x6A, 0x4F, 0x6A, 0x93, 0x6A, 0xD8, 0x6B, 0x1C, 0x6B, 0x60, 0x6B, 0xA4, 0x6B, 0xE8, 0x6C, 0x2D, 0x6C, 0x71, 0x6C, 0xB5, 0x6C, 0xF9, 0x6D, 0x3E, 0x6D, 0x82, 0x6D, 0xC6, 0x6E, 0x0A, 0x6E, 0x4F, 0x6E, 0x93, 0x6E, 0xD7, 0x6F, 0x1B, 0x6F, 0x5F, 0x6F, 0xA4, 0x6F, 0xE8, 0x70, 0x2C, 0x70, 0x70, 0x70, 0xB5, 0x70, 0xF9, 0x71, 0x3D, 0x71, 0x81, 0x71, 0xC5, 0x72, 0x0A, 0x72, 0x4E, 0x72, 0x92, 0x72, 0xD6, 0x73, 0x1B, 0x73, 0x5F, 0x73, 0xA3, 0x73, 0xE7, 0x74, 0x2C, 0x74, 0x70, 0x74, 0xB4, 0x74, 0xF9, 0x75, 0x3D, 0x75, 0x81, 0x75, 0xC5, 0x76, 0x0A, 0x76, 0x4E, 0x76, 0x92, 0x76, 0xD7, 0x77, 0x1B, 0x77, 0x5F, 0x77, 0xA3, 0x77, 0xE8, 0x78, 0x2C, 0x78, 0x70, 0x78, 0xB5, 0x78, 0xF9, 0x79, 0x3D, 0x79, 0x81, 0x79, 0xC6, 0x7A, 0x0A, 0x7A, 0x4E, 0x7A, 0x93, 0x7A, 0xD7, 0x7B, 0x1B, 0x7B, 0x60, 0x7B, 0xA4, 0x7B, 0xE8, 0x7C, 0x2D, 0x7C, 0x71, 0x7C, 0xB5, 0x7C, 0xFA, 0x7D, 0x3D, 0x7D, 0x81, 0x7D, 0xC4, 0x7E, 0x07, 0x7E, 0x4B, 0x7E, 0x8E, 0x7E, 0xD1, 0x7F, 0x14, 0x7F, 0x58, 0x7F, 0x9B, 0x7F, 0xDE, 0x80, 0x22, 0x80, 0x65, 0x80, 0xA8, 0x80, 0xEB, 0x81, 0x2E, 0x81, 0x72, 0x81, 0xB5, 0x81, 0xF8, 0x82, 0x3B, 0x82, 0x7E, 0x82, 0xC1, 0x83, 0x04, 0x83, 0x47, 0x83, 0x8A, 0x83, 0xCD, 0x84, 0x0F, 0x84, 0x52, 0x84, 0x95, 0x84, 0xD8, 0x85, 0x1B, 0x85, 0x5E, 0x85, 0xA0, 0x85, 0xE3, 0x86, 0x26, 0x86, 0x68, 0x86, 0xAB, 0x86, 0xEE, 0x87, 0x30, 0x87, 0x73, 0x87, 0xB5, 0x87, 0xF8, 0x88, 0x3A, 0x88, 0x7D, 0x88, 0xBF, 0x89, 0x02, 0x89, 0x44, 0x89, 0x86, 0x89, 0xC9, 0x8A, 0x0B, 0x8A, 0x4D, 0x8A, 0x8F, 0x8A, 0xD2, 0x8B, 0x14, 0x8B, 0x56, 0x8B, 0x98, 0x8B, 0xDA, 0x8C, 0x1C, 0x8C, 0x5F, 0x8C, 0xA1, 0x8C, 0xE3, 0x8D, 0x25, 0x8D, 0x67, 0x8D, 0xA9, 0x8D, 0xEB, 0x8E, 0x2D, 0x8E, 0x6E, 0x8E, 0xB0, 0x8E, 0xF2, 0x8F, 0x34, 0x8F, 0x76, 0x8F, 0xB8, 0x8F, 0xF9, 0x90, 0x3B, 0x90, 0x7D, 0x90, 0xBE, 0x91, 0x00, 0x91, 0x42, 0x91, 0x83, 0x91, 0xC5, 0x92, 0x06, 0x92, 0x48, 0x92, 0x89, 0x92, 0xCB, 0x93, 0x0C, 0x93, 0x4D, 0x93, 0x8F, 0x93, 0xD0, 0x94, 0x11, 0x94, 0x53, 0x94, 0x94, 0x94, 0xD5, 0x95, 0x16, 0x95, 0x58, 0x95, 0x99, 0x95, 0xDA, 0x96, 0x1B, 0x96, 0x5C, 0x96, 0x9D, 0x96, 0xDE, 0x97, 0x1F, 0x97, 0x60, 0x97, 0xA1, 0x97, 0xE2, 0x98, 0x22, 0x98, 0x63, 0x98, 0xA4, 0x98, 0xE5, 0x99, 0x26, 0x99, 0x66, 0x99, 0xA7, 0x99, 0xE8, 0x9A, 0x28, 0x9A, 0x69, 0x9A, 0xA9, 0x9A, 0xEA, 0x9B, 0x2A, 0x9B, 0x6B, 0x9B, 0xAB, 0x9B, 0xEC, 0x9C, 0x2C, 0x9C, 0x6D, 0x9C, 0xAD, 0x9C, 0xED, 0x9D, 0x2E, 0x9D, 0x6E, 0x9D, 0xAE, 0x9D, 0xEF, 0x9E, 0x32, 0x9E, 0x78, 0x9E, 0xBD, 0x9F, 0x03, 0x9F, 0x49, 0x9F, 0x8E, 0x9F, 0xD3, 0xA0, 0x19, 0xA0, 0x5E, 0xA0, 0xA4, 0xA0, 0xE9, 0xA1, 0x2E, 0xA1, 0x74, 0xA1, 0xB9, 0xA1, 0xFE, 0xA2, 0x44, 0xA2, 0x89, 0xA2, 0xCE, 0xA3, 0x13, 0xA3, 0x58, 0xA3, 0x9E, 0xA3, 0xE3, 0xA4, 0x28, 0xA4, 0x6D, 0xA4, 0xB2, 0xA4, 0xF7, 0xA5, 0x3C, 0xA5, 0x81, 0xA5, 0xC6, 0xA6, 0x0B, 0xA6, 0x50, 0xA6, 0x95, 0xA6, 0xDA, 0xA7, 0x1E, 0xA7, 0x63, 0xA7, 0xA8, 0xA7, 0xED, 0xA8, 0x32, 0xA8, 0x76, 0xA8, 0xBB, 0xA9, 0x00, 0xA9, 0x44, 0xA9, 0x89, 0xA9, 0xCE, 0xAA, 0x12, 0xAA, 0x57, 0xAA, 0x9B, 0xAA, 0xE0, 0xAB, 0x24, 0xAB, 0x69, 0xAB, 0xAD, 0xAB, 0xF2, 0xAC, 0x36, 0xAC, 0x7B, 0xAC, 0xBF, 0xAD, 0x04, 0xAD, 0x48, 0xAD, 0x8D, 0xAD, 0xD1, 0xAE, 0x16, 0xAE, 0x5A, 0xAE, 0x9F, 0xAE, 0xE3, 0xAF, 0x28, 0xAF, 0x6C, 0xAF, 0xB1, 0xAF, 0xF5, 0xB0, 0x3A, 0xB0, 0x7E, 0xB0, 0xC3, 0xB1, 0x07, 0xB1, 0x4C, 0xB1, 0x90, 0xB1, 0xD5, 0xB2, 0x19, 0xB2, 0x5E, 0xB2, 0xA2, 0xB2, 0xE7, 0xB3, 0x2C, 0xB3, 0x70, 0xB3, 0xB5, 0xB3, 0xF9, 0xB4, 0x3E, 0xB4, 0x82, 0xB4, 0xC7, 0xB5, 0x0B, 0xB5, 0x50, 0xB5, 0x94, 0xB5, 0xD9, 0xB6, 0x1E, 0xB6, 0x62, 0xB6, 0xA7, 0xB6, 0xEB, 0xB7, 0x30, 0xB7, 0x75, 0xB7, 0xB9, 0xB7, 0xFE, 0xB8, 0x42, 0xB8, 0x87, 0xB8, 0xCC, 0xB9, 0x10, 0xB9, 0x55, 0xB9, 0x9A, 0xB9, 0xDF, 0xBA, 0x23, 0xBA, 0x68, 0xBA, 0xAD, 0xBA, 0xF1, 0xBB, 0x36, 0xBB, 0x7B, 0xBB, 0xC0, 0xBC, 0x05, 0xBC, 0x49, 0xBC, 0x8E, 0xBC, 0xD3, 0xBD, 0x18, 0xBD, 0x5D, 0xBD, 0xA1, 0xBD, 0xE6, 0xBE, 0x2B, 0xBE, 0x70, 0xBE, 0xB5, 0xBE, 0xFA, 0xBF, 0x3F, 0xBF, 0x84, 0xBF, 0xC9, 0xC0, 0x0D, 0xC0, 0x53, 0xC0, 0x9A, 0xC0, 0xE3, 0xC1, 0x2C, 0xC1, 0x75, 0xC1, 0xBE, 0xC2, 0x06, 0xC2, 0x4F, 0xC2, 0x98, 0xC2, 0xE1, 0xC3, 0x2A, 0xC3, 0x73, 0xC3, 0xBC, 0xC4, 0x05, 0xC4, 0x4E, 0xC4, 0x97, 0xC4, 0xE0, 0xC5, 0x29, 0xC5, 0x72, 0xC5, 0xBB, 0xC6, 0x04, 0xC6, 0x4D, 0xC6, 0x96, 0xC6, 0xDF, 0xC7, 0x28, 0xC7, 0x71, 0xC7, 0xBA, 0xC8, 0x03, 0xC8, 0x4D, 0xC8, 0x96, 0xC8, 0xDF, 0xC9, 0x28, 0xC9, 0x71, 0xC9, 0xBA, 0xCA, 0x04, 0xCA, 0x4D, 0xCA, 0x96, 0xCA, 0xDF, 0xCB, 0x28, 0xCB, 0x72, 0xCB, 0xBB, 0xCC, 0x04, 0xCC, 0x4D, 0xCC, 0x97, 0xCC, 0xE0, 0xCD, 0x29, 0xCD, 0x72, 0xCD, 0xBC, 0xCE, 0x05, 0xCE, 0x4E, 0xCE, 0x97, 0xCE, 0xE1, 0xCF, 0x2A, 0xCF, 0x73, 0xCF, 0xBC, 0xD0, 0x06, 0xD0, 0x4F, 0xD0, 0x98, 0xD0, 0xE1, 0xD1, 0x2A, 0xD1, 0x74, 0xD1, 0xBD, 0xD2, 0x06, 0xD2, 0x4F, 0xD2, 0x98, 0xD2, 0xE1, 0xD3, 0x2B, 0xD3, 0x74, 0xD3, 0xBD, 0xD4, 0x06, 0xD4, 0x4F, 0xD4, 0x98, 0xD4, 0xE1, 0xD5, 0x2B, 0xD5, 0x74, 0xD5, 0xBD, 0xD6, 0x06, 0xD6, 0x4F, 0xD6, 0x98, 0xD6, 0xE1, 0xD7, 0x2A, 0xD7, 0x73, 0xD7, 0xBC, 0xD8, 0x06, 0xD8, 0x4F, 0xD8, 0x98, 0xD8, 0xE1, 0xD9, 0x2A, 0xD9, 0x73, 0xD9, 0xBC, 0xDA, 0x05, 0xDA, 0x4E, 0xDA, 0x98, 0xDA, 0xE1, 0xDB, 0x2A, 0xDB, 0x73, 0xDB, 0xBC, 0xDC, 0x05, 0xDC, 0x4E, 0xDC, 0x97, 0xDC, 0xE0, 0xDD, 0x2A, 0xDD, 0x73, 0xDD, 0xBC, 0xDE, 0x05, 0xDE, 0x4E, 0xDE, 0x97, 0xDE, 0xE0, 0xDF, 0x29, 0xDF, 0x72, 0xDF, 0xBB, 0xE0, 0x05, 0xE0, 0x4E, 0xE0, 0x97, 0xE0, 0xE0, 0xE1, 0x29, 0xE1, 0x72, 0xE1, 0xBB, 0xE2, 0x04, 0xE2, 0x4D, 0xE2, 0x96, 0xE2, 0xE0, 0xE3, 0x29, 0xE3, 0x72, 0xE3, 0xBB, 0xE4, 0x04, 0xE4, 0x4D, 0xE4, 0x96, 0xE4, 0xDC, 0xE5, 0x18, 0xE5, 0x4E, 0xE5, 0x84, 0xE5, 0xBA, 0xE5, 0xEF, 0xE6, 0x25, 0xE6, 0x5B, 0xE6, 0x91, 0xE6, 0xC7, 0xE6, 0xFD, 0xE7, 0x33, 0xE7, 0x69, 0xE7, 0x9F, 0xE7, 0xD5, 0xE8, 0x0B, 0xE8, 0x41, 0xE8, 0x77, 0xE8, 0xAD, 0xE8, 0xE3, 0xE9, 0x18, 0xE9, 0x4E, 0xE9, 0x84, 0xE9, 0xBA, 0xE9, 0xF0, 0xEA, 0x26, 0xEA, 0x5C, 0xEA, 0x93, 0xEA, 0xC9, 0xEA, 0xFF, 0xEB, 0x35, 0xEB, 0x6B, 0xEB, 0xA1, 0xEB, 0xD7, 0xEC, 0x0D, 0xEC, 0x43, 0xEC, 0x79, 0xEC, 0xAF, 0xEC, 0xE5, 0xED, 0x1B, 0xED, 0x51, 0xED, 0x87, 0xED, 0xBE, 0xED, 0xF4, 0xEE, 0x2A, 0xEE, 0x60, 0xEE, 0x96, 0xEE, 0xCC, 0xEF, 0x02, 0xEF, 0x38, 0xEF, 0x6F, 0xEF, 0xA5, 0xEF, 0xDB, 0xF0, 0x11, 0xF0, 0x47, 0xF0, 0x7D, 0xF0, 0xB3, 0xF0, 0xEA, 0xF1, 0x20, 0xF1, 0x56, 0xF1, 0x8C, 0xF1, 0xC2, 0xF1, 0xF9, 0xF2, 0x2F, 0xF2, 0x65, 0xF2, 0x9B, 0xF2, 0xD2, 0xF3, 0x08, 0xF3, 0x3E, 0xF3, 0x74, 0xF3, 0xAB, 0xF3, 0xE1, 0xF4, 0x17, 0xF4, 0x4D, 0xF4, 0x84, 0xF4, 0xBA, 0xF4, 0xF0, 0xF5, 0x26, 0xF5, 0x5D, 0xF5, 0x93, 0xF5, 0xC9, 0xF6, 0x00, 0xF6, 0x36, 0xF6, 0x6C, 0xF6, 0xA3, 0xF6, 0xD9, 0xF7, 0x0F, 0xF7, 0x46, 0xF7, 0x7C, 0xF7, 0xB2, 0xF7, 0xE9, 0xF8, 0x1F, 0xF8, 0x56, 0xF8, 0x8C, 0xF8, 0xC2, 0xF8, 0xF9, 0xF9, 0x2F, 0xF9, 0x66, 0xF9, 0x9C, 0xF9, 0xD2, 0xFA, 0x09, 0xFA, 0x3F, 0xFA, 0x76, 0xFA, 0xAC, 0xFA, 0xE3, 0xFB, 0x19, 0xFB, 0x4F, 0xFB, 0x86, 0xFB, 0xBC, 0xFB, 0xF3, 0xFC, 0x29, 0xFC, 0x60, 0xFC, 0x96, 0xFC, 0xCD, 0xFD, 0x03, 0xFD, 0x3A, 0xFD, 0x70, 0xFD, 0xA7, 0xFD, 0xDD, 0xFE, 0x14, 0xFE, 0x4A, 0xFE, 0x81, 0xFE, 0xB8, 0xFE, 0xEE, 0xFF, 0x25, 0xFF, 0x5B, 0xFF, 0x92, 0xFF, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x34, 0x00, 0x68, 0x00, 0x9D, 0x00, 0xD1, 0x01, 0x05, 0x01, 0x39, 0x01, 0x6D, 0x01, 0xA2, 0x01, 0xD6, 0x02, 0x0A, 0x02, 0x3E, 0x02, 0x72, 0x02, 0xA7, 0x02, 0xDB, 0x03, 0x0F, 0x03, 0x43, 0x03, 0x78, 0x03, 0xAC, 0x03, 0xE0, 0x04, 0x15, 0x04, 0x49, 0x04, 0x7D, 0x04, 0xB1, 0x04, 0xE6, 0x05, 0x1A, 0x05, 0x4E, 0x05, 0x83, 0x05, 0xB7, 0x05, 0xEB, 0x06, 0x20, 0x06, 0x54, 0x06, 0x88, 0x06, 0xBD, 0x06, 0xF1, 0x07, 0x26, 0x07, 0x5A, 0x07, 0x8E, 0x07, 0xC3, 0x07, 0xF7, 0x08, 0x2C, 0x08, 0x60, 0x08, 0x94, 0x08, 0xC9, 0x08, 0xFD, 0x09, 0x32, 0x09, 0x66, 0x09, 0x9B, 0x09, 0xCF, 0x0A, 0x04, 0x0A, 0x38, 0x0A, 0x6C, 0x0A, 0xA1, 0x0A, 0xD5, 0x0B, 0x0A, 0x0B, 0x3E, 0x0B, 0x73, 0x0B, 0xA7, 0x0B, 0xDC, 0x0C, 0x11, 0x0C, 0x45, 0x0C, 0x7A, 0x0C, 0xAE, 0x0C, 0xE3, 0x0D, 0x17, 0x0D, 0x4C, 0x0D, 0x80, 0x0D, 0xB5, 0x0D, 0xEA, 0x0E, 0x1E, 0x0E, 0x53, 0x0E, 0x87, 0x0E, 0xBC, 0x0E, 0xF1, 0x0F, 0x25, 0x0F, 0x5A, 0x0F, 0x8F, 0x0F, 0xC3, 0x0F, 0xF8, 0x10, 0x2C, 0x10, 0x61, 0x10, 0x96, 0x10, 0xCA, 0x10, 0xFF, 0x11, 0x34, 0x11, 0x69, 0x11, 0x9D, 0x11, 0xD2, 0x12, 0x07, 0x12, 0x3B, 0x12, 0x70, 0x12, 0xA5, 0x12, 0xD9, 0x13, 0x0E, 0x13, 0x43, 0x13, 0x78, 0x13, 0xAC, 0x13, 0xE1, 0x14, 0x16, 0x14, 0x4B, 0x14, 0x80, 0x14, 0xB4, 0x14, 0xE9, 0x15, 0x1E, 0x15, 0x53, 0x15, 0x87, 0x15, 0xBC, 0x15, 0xF1, 0x16, 0x26, 0x16, 0x5B, 0x16, 0x90, 0x16, 0xC4, 0x16, 0xF9, 0x17, 0x2E, 0x17, 0x63, 0x17, 0x98, 0x17, 0xCD, 0x18, 0x02, 0x18, 0x37, 0x18, 0x6B, 0x18, 0xA0, 0x18, 0xD5, 0x19, 0x0A, 0x19, 0x3F, 0x19, 0x74, 0x19, 0xA9, 0x19, 0xDE, 0x1A, 0x13, 0x1A, 0x49, 0x1A, 0x87, 0x1A, 0xC4, 0x1B, 0x02, 0x1B, 0x40, 0x1B, 0x7E, 0x1B, 0xBB, 0x1B, 0xF9, 0x1C, 0x37, 0x1C, 0x75, 0x1C, 0xB2, 0x1C, 0xF0, 0x1D, 0x2E, 0x1D, 0x6C, 0x1D, 0xAA, 0x1D, 0xE8, 0x1E, 0x25, 0x1E, 0x63, 0x1E, 0xA1, 0x1E, 0xDF, 0x1F, 0x1D, 0x1F, 0x5B, 0x1F, 0x99, 0x1F, 0xD7, 0x20, 0x15, 0x20, 0x52, 0x20, 0x90, 0x20, 0xCE, 0x21, 0x0C, 0x21, 0x4A, 0x21, 0x88, 0x21, 0xC6, 0x22, 0x05, 0x22, 0x43, 0x22, 0x81, 0x22, 0xBF, 0x22, 0xFD, 0x23, 0x3B, 0x23, 0x79, 0x23, 0xB7, 0x23, 0xF6, 0x24, 0x34, 0x24, 0x72, 0x24, 0xB0, 0x24, 0xEE, 0x25, 0x2D, 0x25, 0x6B, 0x25, 0xA9, 0x25, 0xE8, 0x26, 0x26, 0x26, 0x64, 0x26, 0xA3, 0x26, 0xE1, 0x27, 0x1F, 0x27, 0x5E, 0x27, 0x9C, 0x27, 0xDB, 0x28, 0x19, 0x28, 0x57, 0x28, 0x96, 0x28, 0xD4, 0x29, 0x13, 0x29, 0x51, 0x29, 0x90, 0x29, 0xCE, 0x2A, 0x0D, 0x2A, 0x4B, 0x2A, 0x8A, 0x2A, 0xC8, 0x2B, 0x07, 0x2B, 0x46, 0x2B, 0x84, 0x2B, 0xC3, 0x2C, 0x01, 0x2C, 0x40, 0x2C, 0x7F, 0x2C, 0xBD, 0x2C, 0xFC, 0x2D, 0x3B, 0x2D, 0x79, 0x2D, 0xB8, 0x2D, 0xF7, 0x2E, 0x36, 0x2E, 0x74, 0x2E, 0xB3, 0x2E, 0xF2, 0x2F, 0x31, 0x2F, 0x6F, 0x2F, 0xAE, 0x2F, 0xED, 0x30, 0x2C, 0x30, 0x6B, 0x30, 0xAA, 0x30, 0xE8, 0x31, 0x27, 0x31, 0x66, 0x31, 0xA5, 0x31, 0xE4, 0x32, 0x23, 0x32, 0x62, 0x32, 0xA1, 0x32, 0xE0, 0x33, 0x1F, 0x33, 0x5E, 0x33, 0x9D, 0x33, 0xDC, 0x34, 0x1B, 0x34, 0x5A, 0x34, 0x99, 0x34, 0xD8, 0x35, 0x17, 0x35, 0x56, 0x35, 0x95, 0x35, 0xD5, 0x36, 0x14, 0x36, 0x53, 0x36, 0x92, 0x36, 0xD1, 0x37, 0x11, 0x37, 0x50, 0x37, 0x8F, 0x37, 0xCE, 0x38, 0x0E, 0x38, 0x4D, 0x38, 0x8C, 0x38, 0xCB, 0x39, 0x0B, 0x39, 0x4A, 0x39, 0x89, 0x39, 0xC7, 0x3A, 0x05, 0x3A, 0x43, 0x3A, 0x81, 0x3A, 0xBF, 0x3A, 0xFC, 0x3B, 0x3A, 0x3B, 0x78, 0x3B, 0xB6, 0x3B, 0xF4, 0x3C, 0x32, 0x3C, 0x70, 0x3C, 0xAE, 0x3C, 0xEC, 0x3D, 0x2A, 0x3D, 0x68, 0x3D, 0xA6, 0x3D, 0xE4, 0x3E, 0x22, 0x3E, 0x61, 0x3E, 0x9F, 0x3E, 0xDD, 0x3F, 0x1B, 0x3F, 0x59, 0x3F, 0x97, 0x3F, 0xD5, 0x40, 0x14, 0x40, 0x52, 0x40, 0x90, 0x40, 0xCE, 0x41, 0x0C, 0x41, 0x4B, 0x41, 0x89, 0x41, 0xC7, 0x42, 0x05, 0x42, 0x44, 0x42, 0x82, 0x42, 0xC0, 0x42, 0xFF, 0x43, 0x3D, 0x43, 0x7B, 0x43, 0xBA, 0x43, 0xF8, 0x44, 0x36, 0x44, 0x75, 0x44, 0xB3, 0x44, 0xF2, 0x45, 0x30, 0x45, 0x6F, 0x45, 0xAD, 0x45, 0xEC, 0x46, 0x2A, 0x46, 0x69, 0x46, 0xA7, 0x46, 0xE6, 0x47, 0x24, 0x47, 0x63, 0x47, 0xA1, 0x47, 0xE0, 0x48, 0x1F, 0x48, 0x5D, 0x48, 0x9C, 0x48, 0xDA, 0x49, 0x19, 0x49, 0x58, 0x49, 0x96, 0x49, 0xD5, 0x4A, 0x14, 0x4A, 0x52, 0x4A, 0x91, 0x4A, 0xD0, 0x4B, 0x0F, 0x4B, 0x4D, 0x4B, 0x8C, 0x4B, 0xCB, 0x4C, 0x0A, 0x4C, 0x48, 0x4C, 0x87, 0x4C, 0xC6, 0x4D, 0x05, 0x4D, 0x44, 0x4D, 0x83, 0x4D, 0xC2, 0x4E, 0x01, 0x4E, 0x3F, 0x4E, 0x7E, 0x4E, 0xBD, 0x4E, 0xFC, 0x4F, 0x3B, 0x4F, 0x7A, 0x4F, 0xB9, 0x4F, 0xF8, 0x50, 0x38, 0x50, 0x77, 0x50, 0xB6, 0x50, 0xF5, 0x51, 0x34, 0x51, 0x73, 0x51, 0xB2, 0x51, 0xF1, 0x52, 0x31, 0x52, 0x70, 0x52, 0xAF, 0x52, 0xEE, 0x53, 0x2D, 0x53, 0x6D, 0x53, 0xAC, 0x53, 0xEB, 0x54, 0x2A, 0x54, 0x6A, 0x54, 0xA9, 0x54, 0xE8, 0x55, 0x28, 0x55, 0x67, 0x55, 0xA7, 0x55, 0xE6, 0x56, 0x25, 0x56, 0x65, 0x56, 0xA4, 0x56, 0xE4, 0x57, 0x23, 0x57, 0x63, 0x57, 0xA2, 0x57, 0xE2, 0x58, 0x21, 0x58, 0x61, 0x58, 0xA0, 0x58, 0xDE, 0x59, 0x1B, 0x59, 0x57, 0x59, 0x93, 0x59, 0xCF, 0x5A, 0x0C, 0x5A, 0x48, 0x5A, 0x84, 0x5A, 0xC0, 0x5A, 0xFC, 0x5B, 0x38, 0x5B, 0x74, 0x5B, 0xB0, 0x5B, 0xEC, 0x5C, 0x28, 0x5C, 0x64, 0x5C, 0xA0, 0x5C, 0xDC, 0x5D, 0x18, 0x5D, 0x54, 0x5D, 0x90, 0x5D, 0xCC, 0x5E, 0x07, 0x5E, 0x43, 0x5E, 0x7F, 0x5E, 0xBB, 0x5E, 0xF6, 0x5F, 0x32, 0x5F, 0x6E, 0x5F, 0xA9, 0x5F, 0xE5, 0x60, 0x20, 0x60, 0x5C, 0x60, 0x98, 0x60, 0xD3, 0x61, 0x0F, 0x61, 0x4A, 0x61, 0x85, 0x61, 0xC1, 0x61, 0xFC, 0x62, 0x38, 0x62, 0x73, 0x62, 0xAE, 0x62, 0xEA, 0x63, 0x25, 0x63, 0x60, 0x63, 0x9C, 0x63, 0xD7, 0x64, 0x12, 0x64, 0x4D, 0x64, 0x88, 0x64, 0xC4, 0x64, 0xFF, 0x65, 0x3A, 0x65, 0x75, 0x65, 0xB0, 0x65, 0xEB, 0x66, 0x26, 0x66, 0x62, 0x66, 0x9D, 0x66, 0xD8, 0x67, 0x13, 0x67, 0x4E, 0x67, 0x89, 0x67, 0xC4, 0x67, 0xFF, 0x68, 0x39, 0x68, 0x74, 0x68, 0xAF, 0x68, 0xEA, 0x69, 0x25, 0x69, 0x60, 0x69, 0x9B, 0x69, 0xD6, 0x6A, 0x10, 0x6A, 0x4B, 0x6A, 0x86, 0x6A, 0xC1, 0x6A, 0xFB, 0x6B, 0x36, 0x6B, 0x71, 0x6B, 0xAC, 0x6B, 0xE6, 0x6C, 0x21, 0x6C, 0x5C, 0x6C, 0x96, 0x6C, 0xD1, 0x6D, 0x0B, 0x6D, 0x46, 0x6D, 0x80, 0x6D, 0xBB, 0x6D, 0xF5, 0x6E, 0x30, 0x6E, 0x6A, 0x6E, 0xA5, 0x6E, 0xDF, 0x6F, 0x1A, 0x6F, 0x54, 0x6F, 0x8E, 0x6F, 0xC9, 0x70, 0x03, 0x70, 0x3E, 0x70, 0x78, 0x70, 0xB2, 0x70, 0xED, 0x71, 0x27, 0x71, 0x61, 0x71, 0x9B, 0x71, 0xD6, 0x72, 0x10, 0x72, 0x4A, 0x72, 0x84, 0x72, 0xBE, 0x72, 0xF8, 0x73, 0x33, 0x73, 0x6D, 0x73, 0xA7, 0x73, 0xE1, 0x74, 0x1B, 0x74, 0x55, 0x74, 0x8F, 0x74, 0xC9, 0x75, 0x03, 0x75, 0x3D, 0x75, 0x77, 0x75, 0xB1, 0x75, 0xEA, 0x76, 0x25, 0x76, 0x61, 0x76, 0xA1, 0x76, 0xE1, 0x77, 0x21, 0x77, 0x61, 0x77, 0xA0, 0x77, 0xE0, 0x78, 0x20, 0x78, 0x5F, 0x78, 0x9F, 0x78, 0xDF, 0x79, 0x1E, 0x79, 0x5E, 0x79, 0x9E, 0x79, 0xDD, 0x7A, 0x1D, 0x7A, 0x5C, 0x7A, 0x9C, 0x7A, 0xDB, 0x7B, 0x1A, 0x7B, 0x5A, 0x7B, 0x99, 0x7B, 0xD8, 0x7C, 0x18, 0x7C, 0x57, 0x7C, 0x96, 0x7C, 0xD5, 0x7D, 0x15, 0x7D, 0x54, 0x7D, 0x93, 0x7D, 0xD2, 0x7E, 0x11, 0x7E, 0x50, 0x7E, 0x8F, 0x7E, 0xCE, 0x7F, 0x0D, 0x7F, 0x4C, 0x7F, 0x8B, 0x7F, 0xCA, 0x80, 0x09, 0x80, 0x48, 0x80, 0x87, 0x80, 0xC6, 0x81, 0x04, 0x81, 0x43, 0x81, 0x82, 0x81, 0xC1, 0x81, 0xFF, 0x82, 0x3E, 0x82, 0x7D, 0x82, 0xBB, 0x82, 0xFA, 0x83, 0x39, 0x83, 0x77, 0x83, 0xB6, 0x83, 0xF4, 0x84, 0x33, 0x84, 0x71, 0x84, 0xAF, 0x84, 0xEE, 0x85, 0x2C, 0x85, 0x6A, 0x85, 0xA9, 0x85, 0xE7, 0x86, 0x25, 0x86, 0x63, 0x86, 0xA2, 0x86, 0xE0, 0x87, 0x1E, 0x87, 0x5C, 0x87, 0x9A, 0x87, 0xD8, 0x88, 0x16, 0x88, 0x54, 0x88, 0x92, 0x88, 0xCF, 0x89, 0x0D, 0x89, 0x4B, 0x89, 0x89, 0x89, 0xC6, 0x8A, 0x04, 0x8A, 0x42, 0x8A, 0x7F, 0x8A, 0xBD, 0x8A, 0xFB, 0x8B, 0x38, 0x8B, 0x76, 0x8B, 0xB3, 0x8B, 0xF0, 0x8C, 0x2E, 0x8C, 0x6B, 0x8C, 0xA9, 0x8C, 0xE6, 0x8D, 0x23, 0x8D, 0x60, 0x8D, 0x9D, 0x8D, 0xDB, 0x8E, 0x18, 0x8E, 0x55, 0x8E, 0x92, 0x8E, 0xCF, 0x8F, 0x0C, 0x8F, 0x49, 0x8F, 0x86, 0x8F, 0xC3, 0x90, 0x00, 0x90, 0x3C, 0x90, 0x79, 0x90, 0xB6, 0x90, 0xF3, 0x91, 0x30, 0x91, 0x6C, 0x91, 0xA9, 0x91, 0xE5, 0x92, 0x22, 0x92, 0x5F, 0x92, 0x9B, 0x92, 0xD8, 0x93, 0x14, 0x93, 0x51, 0x93, 0x8D, 0x93, 0xC9, 0x94, 0x06, 0x94, 0x42, 0x94, 0x7E, 0x94, 0xBB, 0x94, 0xF7, 0x95, 0x34, 0x95, 0x77, 0x95, 0xBF, 0x96, 0x08, 0x96, 0x50, 0x96, 0x98, 0x96, 0xE0, 0x97, 0x29, 0x97, 0x71, 0x97, 0xB9, 0x98, 0x01, 0x98, 0x49, 0x98, 0x91, 0x98, 0xD9, 0x99, 0x21, 0x99, 0x69, 0x99, 0xB1, 0x99, 0xF9, 0x9A, 0x40, 0x9A, 0x88, 0x9A, 0xD0, 0x9B, 0x18, 0x9B, 0x5F, 0x9B, 0xA7, 0x9B, 0xEF, 0x9C, 0x36, 0x9C, 0x7E, 0x9C, 0xC6, 0x9D, 0x0D, 0x9D, 0x55, 0x9D, 0x9C, 0x9D, 0xE3, 0x9E, 0x2B, 0x9E, 0x72, 0x9E, 0xBA, 0x9F, 0x01, 0x9F, 0x48, 0x9F, 0x90, 0x9F, 0xD7, 0xA0, 0x1E, 0xA0, 0x65, 0xA0, 0xAC, 0xA0, 0xF4, 0xA1, 0x3B, 0xA1, 0x82, 0xA1, 0xC9, 0xA2, 0x10, 0xA2, 0x57, 0xA2, 0x9E, 0xA2, 0xE5, 0xA3, 0x2C, 0xA3, 0x73, 0xA3, 0xBA, 0xA4, 0x01, 0xA4, 0x48, 0xA4, 0x8F, 0xA4, 0xD5, 0xA5, 0x1C, 0xA5, 0x63, 0xA5, 0xAA, 0xA5, 0xF1, 0xA6, 0x38, 0xA6, 0x7E, 0xA6, 0xC5, 0xA7, 0x0C, 0xA7, 0x53, 0xA7, 0x99, 0xA7, 0xE0, 0xA8, 0x27, 0xA8, 0x6D, 0xA8, 0xB4, 0xA8, 0xFA, 0xA9, 0x41, 0xA9, 0x88, 0xA9, 0xCE, 0xAA, 0x15, 0xAA, 0x5B, 0xAA, 0xA2, 0xAA, 0xE8, 0xAB, 0x2F, 0xAB, 0x75, 0xAB, 0xBB, 0xAC, 0x02, 0xAC, 0x48, 0xAC, 0x8E, 0xAC, 0xD5, 0xAD, 0x1B, 0xAD, 0x62, 0xAD, 0xA8, 0xAD, 0xEE, 0xAE, 0x35, 0xAE, 0x7B, 0xAE, 0xC2, 0xAF, 0x09, 0xAF, 0x4F, 0xAF, 0x96, 0xAF, 0xDC, 0xB0, 0x23, 0xB0, 0x6A, 0xB0, 0xB0, 0xB0, 0xF7, 0xB1, 0x3E, 0xB1, 0x85, 0xB1, 0xCB, 0xB2, 0x12, 0xB2, 0x59, 0xB2, 0xA0, 0xB2, 0xE7, 0xB3, 0x2E, 0xB3, 0x75, 0xB3, 0xBC, 0xB4, 0x03, 0xB4, 0x4A, 0xB4, 0x91, 0xB4, 0xD8, 0xB5, 0x1F, 0xB5, 0x66, 0xB5, 0xAD, 0xB5, 0xF4, 0xB6, 0x3B, 0xB6, 0x83, 0xB6, 0xCA, 0xB7, 0x11, 0xB7, 0x58, 0xB7, 0xA0, 0xB7, 0xE7, 0xB8, 0x2E, 0xB8, 0x76, 0xB8, 0xBE, 0xB9, 0x0C, 0xB9, 0x5D, 0xB9, 0xAF, 0xBA, 0x00, 0xBA, 0x51, 0xBA, 0xA3, 0xBA, 0xF4, 0xBB, 0x46, 0xBB, 0x97, 0xBB, 0xE9, 0xBC, 0x3A, 0xBC, 0x8C, 0xBC, 0xDD, 0xBD, 0x2F, 0xBD, 0x81, 0xBD, 0xD2, 0xBE, 0x24, 0xBE, 0x76, 0xBE, 0xC7, 0xBF, 0x19, 0xBF, 0x6B, 0xBF, 0xBD, 0xC0, 0x0F, 0xC0, 0x61, 0xC0, 0xB3, 0xC1, 0x04, 0xC1, 0x56, 0xC1, 0xA8, 0xC1, 0xFA, 0xC2, 0x4D, 0xC2, 0x9F, 0xC2, 0xF1, 0xC3, 0x43, 0xC3, 0x95, 0xC3, 0xE7, 0xC4, 0x39, 0xC4, 0x8C, 0xC4, 0xDE, 0xC5, 0x30, 0xC5, 0x83, 0xC5, 0xD5, 0xC6, 0x27, 0xC6, 0x7A, 0xC6, 0xCC, 0xC7, 0x1F, 0xC7, 0x71, 0xC7, 0xC4, 0xC8, 0x16, 0xC8, 0x69, 0xC8, 0xBB, 0xC9, 0x0E, 0xC9, 0x61, 0xC9, 0xB3, 0xCA, 0x06, 0xCA, 0x59, 0xCA, 0xAC, 0xCA, 0xFE, 0xCB, 0x51, 0xCB, 0xA4, 0xCB, 0xF7, 0xCC, 0x4A, 0xCC, 0x9D, 0xCC, 0xF0, 0xCD, 0x43, 0xCD, 0x96, 0xCD, 0xE9, 0xCE, 0x3C, 0xCE, 0x90, 0xCE, 0xE3, 0xCF, 0x36, 0xCF, 0x89, 0xCF, 0xDD, 0xD0, 0x30, 0xD0, 0x83, 0xD0, 0xD6, 0xD1, 0x2A, 0xD1, 0x7D, 0xD1, 0xD1, 0xD2, 0x24, 0xD2, 0x78, 0xD2, 0xCB, 0xD3, 0x1F, 0xD3, 0x72, 0xD3, 0xC6, 0xD4, 0x19, 0xD4, 0x6D, 0xD4, 0xC1, 0xD5, 0x14, 0xD5, 0x68, 0xD5, 0xBC, 0xD6, 0x0F, 0xD6, 0x63, 0xD6, 0xB7, 0xD7, 0x0B, 0xD7, 0x5F, 0xD7, 0xB3, 0xD8, 0x06, 0xD8, 0x5A, 0xD8, 0xAE, 0xD9, 0x02, 0xD9, 0x56, 0xD9, 0xAA, 0xD9, 0xFE, 0xDA, 0x52, 0xDA, 0xA6, 0xDA, 0xFA, 0xDB, 0x4E, 0xDB, 0xA3, 0xDB, 0xF7, 0xDC, 0x4B, 0xDC, 0x9F, 0xDC, 0xF3, 0xDD, 0x48, 0xDD, 0x9C, 0xDD, 0xF0, 0xDE, 0x45, 0xDE, 0x99, 0xDE, 0xED, 0xDF, 0x42, 0xDF, 0x96, 0xDF, 0xEB, 0xE0, 0x3F, 0xE0, 0x94, 0xE0, 0xE9, 0xE1, 0x3D, 0xE1, 0x92, 0xE1, 0xE7, 0xE2, 0x3B, 0xE2, 0x79, 0xE2, 0xB3, 0xE2, 0xEE, 0xE3, 0x28, 0xE3, 0x62, 0xE3, 0x9C, 0xE3, 0xD7, 0xE4, 0x11, 0xE4, 0x4B, 0xE4, 0x86, 0xE4, 0xC0, 0xE4, 0xFB, 0xE5, 0x35, 0xE5, 0x6F, 0xE5, 0xAA, 0xE5, 0xE4, 0xE6, 0x1F, 0xE6, 0x59, 0xE6, 0x94, 0xE6, 0xCE, 0xE7, 0x09, 0xE7, 0x43, 0xE7, 0x7E, 0xE7, 0xB9, 0xE7, 0xF3, 0xE8, 0x2E, 0xE8, 0x69, 0xE8, 0xA3, 0xE8, 0xDE, 0xE9, 0x19, 0xE9, 0x53, 0xE9, 0x8E, 0xE9, 0xC9, 0xEA, 0x04, 0xEA, 0x3F, 0xEA, 0x79, 0xEA, 0xB4, 0xEA, 0xEF, 0xEB, 0x2A, 0xEB, 0x65, 0xEB, 0xA0, 0xEB, 0xDB, 0xEC, 0x16, 0xEC, 0x51, 0xEC, 0x8C, 0xEC, 0xC7, 0xED, 0x02, 0xED, 0x3D, 0xED, 0x78, 0xED, 0xB4, 0xED, 0xEF, 0xEE, 0x2A, 0xEE, 0x65, 0xEE, 0xA0, 0xEE, 0xDC, 0xEF, 0x17, 0xEF, 0x52, 0xEF, 0x8E, 0xEF, 0xC9, 0xF0, 0x04, 0xF0, 0x40, 0xF0, 0x7B, 0xF0, 0xB7, 0xF0, 0xF2, 0xF1, 0x2E, 0xF1, 0x69, 0xF1, 0xA5, 0xF1, 0xE0, 0xF2, 0x1C, 0xF2, 0x57, 0xF2, 0x93, 0xF2, 0xCF, 0xF3, 0x0A, 0xF3, 0x46, 0xF3, 0x82, 0xF3, 0xBE, 0xF3, 0xF9, 0xF4, 0x35, 0xF4, 0x71, 0xF4, 0xAD, 0xF4, 0xE9, 0xF5, 0x24, 0xF5, 0x60, 0xF5, 0x9C, 0xF5, 0xD8, 0xF6, 0x14, 0xF6, 0x50, 0xF6, 0x8C, 0xF6, 0xC8, 0xF7, 0x04, 0xF7, 0x40, 0xF7, 0x7C, 0xF7, 0xB9, 0xF7, 0xF5, 0xF8, 0x31, 0xF8, 0x6D, 0xF8, 0xA9, 0xF8, 0xE5, 0xF9, 0x22, 0xF9, 0x5E, 0xF9, 0x9A, 0xF9, 0xD7, 0xFA, 0x13, 0xFA, 0x4F, 0xFA, 0x8C, 0xFA, 0xC8, 0xFB, 0x05, 0xFB, 0x41, 0xFB, 0x7E, 0xFB, 0xBA, 0xFB, 0xF7, 0xFC, 0x33, 0xFC, 0x70, 0xFC, 0xAC, 0xFC, 0xE9, 0xFD, 0x26, 0xFD, 0x62, 0xFD, 0x9F, 0xFD, 0xDC, 0xFE, 0x18, 0xFE, 0x55, 0xFE, 0x92, 0xFE, 0xCF, 0xFF, 0x0B, 0xFF, 0x48, 0xFF, 0x85, 0xFF, 0xC2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x7A, 0x00, 0xB6, 0x00, 0xF3, 0x01, 0x30, 0x01, 0x6D, 0x01, 0xA9, 0x01, 0xE6, 0x02, 0x23, 0x02, 0x60, 0x02, 0x9D, 0x02, 0xD9, 0x03, 0x16, 0x03, 0x53, 0x03, 0x90, 0x03, 0xCD, 0x04, 0x0A, 0x04, 0x47, 0x04, 0x83, 0x04, 0xC0, 0x04, 0xFD, 0x05, 0x3A, 0x05, 0x77, 0x05, 0xB4, 0x05, 0xF1, 0x06, 0x2E, 0x06, 0x6B, 0x06, 0xA8, 0x06, 0xE5, 0x07, 0x22, 0x07, 0x5E, 0x07, 0x9B, 0x07, 0xD8, 0x08, 0x15, 0x08, 0x52, 0x08, 0x8F, 0x08, 0xCC, 0x09, 0x09, 0x09, 0x46, 0x09, 0x83, 0x09, 0xC0, 0x09, 0xFE, 0x0A, 0x3B, 0x0A, 0x78, 0x0A, 0xB5, 0x0A, 0xF2, 0x0B, 0x2F, 0x0B, 0x6C, 0x0B, 0xA9, 0x0B, 0xE6, 0x0C, 0x23, 0x0C, 0x60, 0x0C, 0x9D, 0x0C, 0xDB, 0x0D, 0x18, 0x0D, 0x55, 0x0D, 0x92, 0x0D, 0xCF, 0x0E, 0x0C, 0x0E, 0x49, 0x0E, 0x87, 0x0E, 0xC4, 0x0F, 0x01, 0x0F, 0x3E, 0x0F, 0x7B, 0x0F, 0xB9, 0x0F, 0xF6, 0x10, 0x33, 0x10, 0x70, 0x10, 0xAD, 0x10, 0xEB, 0x11, 0x28, 0x11, 0x65, 0x11, 0xA2, 0x11, 0xE0, 0x12, 0x1D, 0x12, 0x5A, 0x12, 0x97, 0x12, 0xD5, 0x13, 0x12, 0x13, 0x4F, 0x13, 0x8D, 0x13, 0xCA, 0x14, 0x07, 0x14, 0x44, 0x14, 0x82, 0x14, 0xBF, 0x14, 0xFC, 0x15, 0x3A, 0x15, 0x77, 0x15, 0xB4, 0x15, 0xF2, 0x16, 0x2F, 0x16, 0x6C, 0x16, 0xAA, 0x16, 0xE7, 0x17, 0x25, 0x17, 0x62, 0x17, 0x9F, 0x17, 0xDD, 0x18, 0x1A, 0x18, 0x58, 0x18, 0x95, 0x18, 0xD2, 0x19, 0x10, 0x19, 0x4D, 0x19, 0x8B, 0x19, 0xC8, 0x1A, 0x06, 0x1A, 0x43, 0x1A, 0x80, 0x1A, 0xBE, 0x1A, 0xFB, 0x1B, 0x39, 0x1B, 0x76, 0x1B, 0xB4, 0x1B, 0xF1, 0x1C, 0x2F, 0x1C, 0x6C, 0x1C, 0xAA, 0x1C, 0xE7, 0x1D, 0x25, 0x1D, 0x62, 0x1D, 0xA0, 0x1D, 0xDE, 0x1E, 0x1B, 0x1E, 0x59, 0x1E, 0x98, 0x1E, 0xDC, 0x1F, 0x22, 0x1F, 0x67, 0x1F, 0xAC, 0x1F, 0xF2, 0x20, 0x37, 0x20, 0x7C, 0x20, 0xC1, 0x21, 0x07, 0x21, 0x4C, 0x21, 0x91, 0x21, 0xD7, 0x22, 0x1C, 0x22, 0x61, 0x22, 0xA7, 0x22, 0xEC, 0x23, 0x32, 0x23, 0x77, 0x23, 0xBC, 0x24, 0x02, 0x24, 0x47, 0x24, 0x8D, 0x24, 0xD2, 0x25, 0x18, 0x25, 0x5D, 0x25, 0xA3, 0x25, 0xE8, 0x26, 0x2E, 0x26, 0x73, 0x26, 0xB9, 0x26, 0xFE, 0x27, 0x44, 0x27, 0x89, 0x27, 0xCF, 0x28, 0x14, 0x28, 0x5A, 0x28, 0xA0, 0x28, 0xE5, 0x29, 0x2B, 0x29, 0x71, 0x29, 0xB6, 0x29, 0xFC, 0x2A, 0x42, 0x2A, 0x87, 0x2A, 0xCD, 0x2B, 0x13, 0x2B, 0x58, 0x2B, 0x9E, 0x2B, 0xE4, 0x2C, 0x2A, 0x2C, 0x6F, 0x2C, 0xB5, 0x2C, 0xFB, 0x2D, 0x41, 0x2D, 0x86, 0x2D, 0xCC, 0x2E, 0x12, 0x2E, 0x58, 0x2E, 0x9D, 0x2E, 0xE3, 0x2F, 0x29, 0x2F, 0x6F, 0x2F, 0xB4, 0x2F, 0xFA, 0x30, 0x40, 0x30, 0x86, 0x30, 0xCB, 0x31, 0x11, 0x31, 0x57, 0x31, 0x9C, 0x31, 0xE2, 0x32, 0x28, 0x32, 0x6E, 0x32, 0xB3, 0x32, 0xF9, 0x33, 0x3F, 0x33, 0x84, 0x33, 0xCA, 0x34, 0x10, 0x34, 0x55, 0x34, 0x9B, 0x34, 0xE1, 0x35, 0x26, 0x35, 0x6C, 0x35, 0xB2, 0x35, 0xF8, 0x36, 0x3D, 0x36, 0x83, 0x36, 0xC9, 0x37, 0x0E, 0x37, 0x54, 0x37, 0x9A, 0x37, 0xE0, 0x38, 0x25, 0x38, 0x6B, 0x38, 0xB1, 0x38, 0xF7, 0x39, 0x3D, 0x39, 0x82, 0x39, 0xC8, 0x3A, 0x0E, 0x3A, 0x54, 0x3A, 0x9A, 0x3A, 0xDF, 0x3B, 0x25, 0x3B, 0x6B, 0x3B, 0xB1, 0x3B, 0xF7, 0x3C, 0x3D, 0x3C, 0x83, 0x3C, 0xC8, 0x3D, 0x0E, 0x3D, 0x54, 0x3D, 0x9A, 0x3D, 0xE0, 0x3E, 0x26, 0x3E, 0x6C, 0x3E, 0xB2, 0x3E, 0xF8, 0x3F, 0x3E, 0x3F, 0x84, 0x3F, 0xCA, 0x40, 0x10, 0x40, 0x56, 0x40, 0x9C, 0x40, 0xE2, 0x41, 0x29, 0x41, 0x6E, 0x41, 0xB2, 0x41, 0xF5, 0x42, 0x39, 0x42, 0x7C, 0x42, 0xC0, 0x43, 0x03, 0x43, 0x47, 0x43, 0x8B, 0x43, 0xCE, 0x44, 0x12, 0x44, 0x56, 0x44, 0x99, 0x44, 0xDD, 0x45, 0x21, 0x45, 0x65, 0x45, 0xA8, 0x45, 0xEC, 0x46, 0x30, 0x46, 0x74, 0x46, 0xB8, 0x46, 0xFC, 0x47, 0x40, 0x47, 0x84, 0x47, 0xC8, 0x48, 0x0C, 0x48, 0x50, 0x48, 0x94, 0x48, 0xD8, 0x49, 0x1C, 0x49, 0x60, 0x49, 0xA4, 0x49, 0xE8, 0x4A, 0x2C, 0x4A, 0x70, 0x4A, 0xB4, 0x4A, 0xF8, 0x4B, 0x3D, 0x4B, 0x81, 0x4B, 0xC5, 0x4C, 0x09, 0x4C, 0x4E, 0x4C, 0x92, 0x4C, 0xD6, 0x4D, 0x1B, 0x4D, 0x5F, 0x4D, 0xA3, 0x4D, 0xE8, 0x4E, 0x2C, 0x4E, 0x71, 0x4E, 0xB5, 0x4E, 0xFA, 0x4F, 0x3E, 0x4F, 0x83, 0x4F, 0xC7, 0x50, 0x0C, 0x50, 0x50, 0x50, 0x95, 0x50, 0xDA, 0x51, 0x1E, 0x51, 0x63, 0x51, 0xA8, 0x51, 0xEC, 0x52, 0x31, 0x52, 0x76, 0x52, 0xBB, 0x52, 0xFF, 0x53, 0x44, 0x53, 0x89, 0x53, 0xCE, 0x54, 0x13, 0x54, 0x58, 0x54, 0x9D, 0x54, 0xE2, 0x55, 0x27, 0x55, 0x6C, 0x55, 0xB1, 0x55, 0xF6, 0x56, 0x3B, 0x56, 0x80, 0x56, 0xC5, 0x57, 0x0A, 0x57, 0x4F, 0x57, 0x94, 0x57, 0xD9, 0x58, 0x1E, 0x58, 0x64, 0x58, 0xA9, 0x58, 0xEE, 0x59, 0x33, 0x59, 0x78, 0x59, 0xBE, 0x5A, 0x03, 0x5A, 0x48, 0x5A, 0x8D, 0x5A, 0xD2, 0x5B, 0x17, 0x5B, 0x5C, 0x5B, 0xA1, 0x5B, 0xE6, 0x5C, 0x2B, 0x5C, 0x70, 0x5C, 0xB4, 0x5C, 0xF9, 0x5D, 0x3E, 0x5D, 0x83, 0x5D, 0xC8, 0x5E, 0x0C, 0x5E, 0x51, 0x5E, 0x96, 0x5E, 0xDB, 0x5F, 0x1F, 0x5F, 0x64, 0x5F, 0xA8, 0x5F, 0xED, 0x60, 0x32, 0x60, 0x76, 0x60, 0xBB, 0x60, 0xFF, 0x61, 0x44, 0x61, 0x88, 0x61, 0xCC, 0x62, 0x11, 0x62, 0x55, 0x62, 0x9A, 0x62, 0xDE, 0x63, 0x22, 0x63, 0x66, 0x63, 0xAA, 0x63, 0xEB, 0x64, 0x2C, 0x64, 0x6D, 0x64, 0xAE, 0x64, 0xEF, 0x65, 0x30, 0x65, 0x71, 0x65, 0xB2, 0x65, 0xF3, 0x66, 0x34, 0x66, 0x75, 0x66, 0xB6, 0x66, 0xF7, 0x67, 0x38, 0x67, 0x78, 0x67, 0xB9, 0x67, 0xFA, 0x68, 0x3B, 0x68, 0x7C, 0x68, 0xBC, 0x68, 0xFD, 0x69, 0x3E, 0x69, 0x7F, 0x69, 0xBF, 0x6A, 0x00, 0x6A, 0x41, 0x6A, 0x81, 0x6A, 0xC2, 0x6B, 0x03, 0x6B, 0x43, 0x6B, 0x84, 0x6B, 0xC4, 0x6C, 0x05, 0x6C, 0x45, 0x6C, 0x85, 0x6C, 0xC6, 0x6D, 0x06, 0x6D, 0x46, 0x6D, 0x87, 0x6D, 0xC7, 0x6E, 0x07, 0x6E, 0x47, 0x6E, 0x88, 0x6E, 0xC8, 0x6F, 0x08, 0x6F, 0x48, 0x6F, 0x88, 0x6F, 0xC8, 0x70, 0x08, 0x70, 0x48, 0x70, 0x88, 0x70, 0xC8, 0x71, 0x08, 0x71, 0x47, 0x71, 0x87, 0x71, 0xC7, 0x72, 0x07, 0x72, 0x46, 0x72, 0x86, 0x72, 0xC6, 0x73, 0x05, 0x73, 0x45, 0x73, 0x85, 0x73, 0xC4, 0x74, 0x04, 0x74, 0x43, 0x74, 0x82, 0x74, 0xC2, 0x75, 0x01, 0x75, 0x41, 0x75, 0x80, 0x75, 0xBF, 0x75, 0xFE, 0x76, 0x3E, 0x76, 0x7D, 0x76, 0xBC, 0x76, 0xFB, 0x77, 0x3A, 0x77, 0x79, 0x77, 0xB8, 0x77, 0xF7, 0x78, 0x36, 0x78, 0x75, 0x78, 0xB4, 0x78, 0xF3, 0x79, 0x32, 0x79, 0x71, 0x79, 0xB0, 0x79, 0xEF, 0x7A, 0x2D, 0x7A, 0x6C, 0x7A, 0xAB, 0x7A, 0xEA, 0x7B, 0x28, 0x7B, 0x67, 0x7B, 0xA6, 0x7B, 0xE4, 0x7C, 0x23, 0x7C, 0x61, 0x7C, 0xA0, 0x7C, 0xDE, 0x7D, 0x1D, 0x7D, 0x5B, 0x7D, 0x9A, 0x7D, 0xD8, 0x7E, 0x17, 0x7E, 0x55, 0x7E, 0x93, 0x7E, 0xD2, 0x7F, 0x10, 0x7F, 0x4E, 0x7F, 0x8C, 0x7F, 0xCB, 0x80, 0x09, 0x80, 0x47, 0x80, 0x85, 0x80, 0xC4, 0x81, 0x02, 0x81, 0x40, 0x81, 0x7E, 0x81, 0xBC, 0x81, 0xFA, 0x82, 0x38, 0x82, 0x76, 0x82, 0xB4, 0x82, 0xF2, 0x83, 0x30, 0x83, 0x70, 0x83, 0xB2, 0x83, 0xF4, 0x84, 0x36, 0x84, 0x78, 0x84, 0xBA, 0x84, 0xFC, 0x85, 0x3E, 0x85, 0x80, 0x85, 0xC2, 0x86, 0x04, 0x86, 0x46, 0x86, 0x88, 0x86, 0xC9, 0x87, 0x0B, 0x87, 0x4D, 0x87, 0x8E, 0x87, 0xD0, 0x88, 0x11, 0x88, 0x53, 0x88, 0x94, 0x88, 0xD6, 0x89, 0x17, 0x89, 0x59, 0x89, 0x9A, 0x89, 0xDB, 0x8A, 0x1C, 0x8A, 0x5D, 0x8A, 0x9F, 0x8A, 0xE0, 0x8B, 0x21, 0x8B, 0x62, 0x8B, 0xA3, 0x8B, 0xE4, 0x8C, 0x25, 0x8C, 0x65, 0x8C, 0xA6, 0x8C, 0xE7, 0x8D, 0x28, 0x8D, 0x68, 0x8D, 0xA9, 0x8D, 0xEA, 0x8E, 0x2A, 0x8E, 0x6B, 0x8E, 0xAB, 0x8E, 0xEC, 0x8F, 0x2C, 0x8F, 0x6C, 0x8F, 0xAD, 0x8F, 0xED, 0x90, 0x2D, 0x90, 0x6D, 0x90, 0xAE, 0x90, 0xEE, 0x91, 0x2E, 0x91, 0x6E, 0x91, 0xAE, 0x91, 0xEE, 0x92, 0x2E, 0x92, 0x6D, 0x92, 0xAD, 0x92, 0xED, 0x93, 0x2D, 0x93, 0x6C, 0x93, 0xAC, 0x93, 0xEB, 0x94, 0x2B, 0x94, 0x6A, 0x94, 0xAA, 0x94, 0xE9, 0x95, 0x29, 0x95, 0x68, 0x95, 0xA7, 0x95, 0xE6, 0x96, 0x25, 0x96, 0x64, 0x96, 0xA4, 0x96, 0xE2, 0x97, 0x21, 0x97, 0x60, 0x97, 0x9F, 0x97, 0xDE, 0x98, 0x1D, 0x98, 0x5B, 0x98, 0x9A, 0x98, 0xD9, 0x99, 0x17, 0x99, 0x56, 0x99, 0x94, 0x99, 0xD3, 0x9A, 0x11, 0x9A, 0x50, 0x9A, 0x8E, 0x9A, 0xCC, 0x9B, 0x0A, 0x9B, 0x49, 0x9B, 0x87, 0x9B, 0xC5, 0x9C, 0x03, 0x9C, 0x41, 0x9C, 0x7F, 0x9C, 0xBD, 0x9C, 0xFB, 0x9D, 0x38, 0x9D, 0x76, 0x9D, 0xB4, 0x9D, 0xF2, 0x9E, 0x2F, 0x9E, 0x6D, 0x9E, 0xAB, 0x9E, 0xE8, 0x9F, 0x26, 0x9F, 0x63, 0x9F, 0xA1, 0x9F, 0xDE, 0xA0, 0x1C, 0xA0, 0x59, 0xA0, 0x96, 0xA0, 0xD4, 0xA1, 0x11, 0xA1, 0x4E, 0xA1, 0x8B, 0xA1, 0xC9, 0xA2, 0x06, 0xA2, 0x43, 0xA2, 0x80, 0xA2, 0xBD, 0xA2, 0xFA, 0xA3, 0x3A, 0xA3, 0x7C, 0xA3, 0xBE, 0xA4, 0x00, 0xA4, 0x42, 0xA4, 0x84, 0xA4, 0xC6, 0xA5, 0x07, 0xA5, 0x49, 0xA5, 0x8B, 0xA5, 0xCD, 0xA6, 0x0E, 0xA6, 0x50, 0xA6, 0x91, 0xA6, 0xD3, 0xA7, 0x15, 0xA7, 0x56, 0xA7, 0x98, 0xA7, 0xD9, 0xA8, 0x1A, 0xA8, 0x5C, 0xA8, 0x9D, 0xA8, 0xDE, 0xA9, 0x20, 0xA9, 0x61, 0xA9, 0xA2, 0xA9, 0xE3, 0xAA, 0x24, 0xAA, 0x66, 0xAA, 0xA7, 0xAA, 0xE8, 0xAB, 0x29, 0xAB, 0x6A, 0xAB, 0xAB, 0xAB, 0xEC, 0xAC, 0x2C, 0xAC, 0x6D, 0xAC, 0xAE, 0xAC, 0xEF, 0xAD, 0x30, 0xAD, 0x70, 0xAD, 0xB1, 0xAD, 0xF2, 0xAE, 0x33, 0xAE, 0x74, 0xAE, 0xB5, 0xAE, 0xF6, 0xAF, 0x37, 0xAF, 0x78, 0xAF, 0xB9, 0xAF, 0xFA, 0xB0, 0x3B, 0xB0, 0x7D, 0xB0, 0xBE, 0xB0, 0xFF, 0xB1, 0x40, 0xB1, 0x82, 0xB1, 0xC3, 0xB2, 0x04, 0xB2, 0x46, 0xB2, 0x87, 0xB2, 0xC9, 0xB3, 0x0A, 0xB3, 0x4C, 0xB3, 0x8D, 0xB3, 0xCF, 0xB4, 0x10, 0xB4, 0x52, 0xB4, 0x94, 0xB4, 0xD6, 0xB5, 0x17, 0xB5, 0x59, 0xB5, 0x9B, 0xB5, 0xDD, 0xB6, 0x1F, 0xB6, 0x61, 0xB6, 0xA3, 0xB6, 0xE5, 0xB7, 0x27, 0xB7, 0x69, 0xB7, 0xAB, 0xB7, 0xED, 0xB8, 0x2F, 0xB8, 0x71, 0xB8, 0xB4, 0xB8, 0xF6, 0xB9, 0x38, 0xB9, 0x7A, 0xB9, 0xBD, 0xB9, 0xFF, 0xBA, 0x42, 0xBA, 0x84, 0xBA, 0xC7, 0xBB, 0x09, 0xBB, 0x4C, 0xBB, 0x8F, 0xBB, 0xD1, 0xBC, 0x14, 0xBC, 0x57, 0xBC, 0x99, 0xBC, 0xDC, 0xBD, 0x1F, 0xBD, 0x62, 0xBD, 0xA5, 0xBD, 0xE8, 0xBE, 0x2B, 0xBE, 0x6E, 0xBE, 0xB1, 0xBE, 0xF4, 0xBF, 0x37, 0xBF, 0x7A, 0xBF, 0xBD, 0xC0, 0x00, 0xC0, 0x44, 0xC0, 0x87, 0xC0, 0xCA, 0xC1, 0x0E, 0xC1, 0x51, 0xC1, 0x95, 0xC1, 0xD8, 0xC2, 0x1C, 0xC2, 0x5F, 0xC2, 0xA3, 0xC2, 0xE6, 0xC3, 0x2A, 0xC3, 0x6E, 0xC3, 0xB2, 0xC3, 0xF5, 0xC4, 0x34, 0xC4, 0x71, 0xC4, 0xAE, 0xC4, 0xEA, 0xC5, 0x27, 0xC5, 0x64, 0xC5, 0xA1, 0xC5, 0xDE, 0xC6, 0x1B, 0xC6, 0x58, 0xC6, 0x95, 0xC6, 0xD2, 0xC7, 0x0F, 0xC7, 0x4D, 0xC7, 0x8A, 0xC7, 0xC7, 0xC8, 0x04, 0xC8, 0x42, 0xC8, 0x7F, 0xC8, 0xBC, 0xC8, 0xFA, 0xC9, 0x37, 0xC9, 0x74, 0xC9, 0xB2, 0xC9, 0xEF, 0xCA, 0x2D, 0xCA, 0x6B, 0xCA, 0xA8, 0xCA, 0xE6, 0xCB, 0x23, 0xCB, 0x61, 0xCB, 0x9F, 0xCB, 0xDD, 0xCC, 0x1A, 0xCC, 0x58, 0xCC, 0x96, 0xCC, 0xD4, 0xCD, 0x12, 0xCD, 0x50, 0xCD, 0x8E, 0xCD, 0xCC, 0xCE, 0x0A, 0xCE, 0x48, 0xCE, 0x86, 0xCE, 0xC4, 0xCF, 0x02, 0xCF, 0x40, 0xCF, 0x7E, 0xCF, 0xBC, 0xCF, 0xFA, 0xD0, 0x38, 0xD0, 0x76, 0xD0, 0xB5, 0xD0, 0xF3, 0xD1, 0x31, 0xD1, 0x6F, 0xD1, 0xAE, 0xD1, 0xEC, 0xD2, 0x2A, 0xD2, 0x69, 0xD2, 0xA7, 0xD2, 0xE5, 0xD3, 0x24, 0xD3, 0x62, 0xD3, 0xA1, 0xD3, 0xDF, 0xD4, 0x1E, 0xD4, 0x5C, 0xD4, 0x9B, 0xD4, 0xD9, 0xD5, 0x18, 0xD5, 0x56, 0xD5, 0x95, 0xD5, 0xD4, 0xD6, 0x12, 0xD6, 0x51, 0xD6, 0x90, 0xD6, 0xCE, 0xD7, 0x0D, 0xD7, 0x4C, 0xD7, 0x8A, 0xD7, 0xC9, 0xD8, 0x08, 0xD8, 0x47, 0xD8, 0x86, 0xD8, 0xC4, 0xD9, 0x03, 0xD9, 0x42, 0xD9, 0x81, 0xD9, 0xC0, 0xD9, 0xFF, 0xDA, 0x3D, 0xDA, 0x7C, 0xDA, 0xBB, 0xDA, 0xFA, 0xDB, 0x39, 0xDB, 0x78, 0xDB, 0xB7, 0xDB, 0xF6, 0xDC, 0x35, 0xDC, 0x74, 0xDC, 0xB3, 0xDC, 0xF2, 0xDD, 0x31, 0xDD, 0x70, 0xDD, 0xAF, 0xDD, 0xEF, 0xDE, 0x2E, 0xDE, 0x6D, 0xDE, 0xAC, 0xDE, 0xEB, 0xDF, 0x2A, 0xDF, 0x69, 0xDF, 0xA9, 0xDF, 0xE8, 0xE0, 0x27, 0xE0, 0x66, 0xE0, 0xA6, 0xE0, 0xE5, 0xE1, 0x24, 0xE1, 0x64, 0xE1, 0xA3, 0xE1, 0xE3, 0xE2, 0x22, 0xE2, 0x61, 0xE2, 0xA1, 0xE2, 0xE0, 0xE3, 0x1F, 0xE3, 0x59, 0xE3, 0x92, 0xE3, 0xCB, 0xE4, 0x03, 0xE4, 0x3C, 0xE4, 0x75, 0xE4, 0xAD, 0xE4, 0xE6, 0xE5, 0x1F, 0xE5, 0x58, 0xE5, 0x91, 0xE5, 0xC9, 0xE6, 0x02, 0xE6, 0x3B, 0xE6, 0x74, 0xE6, 0xAD, 0xE6, 0xE6, 0xE7, 0x1F, 0xE7, 0x58, 0xE7, 0x91, 0xE7, 0xCA, 0xE8, 0x03, 0xE8, 0x3C, 0xE8, 0x75, 0xE8, 0xAE, 0xE8, 0xE7, 0xE9, 0x20, 0xE9, 0x59, 0xE9, 0x92, 0xE9, 0xCB, 0xEA, 0x04, 0xEA, 0x3E, 0xEA, 0x77, 0xEA, 0xB0, 0xEA, 0xE9, 0xEB, 0x23, 0xEB, 0x5C, 0xEB, 0x95, 0xEB, 0xCE, 0xEC, 0x08, 0xEC, 0x41, 0xEC, 0x7A, 0xEC, 0xB4, 0xEC, 0xED, 0xED, 0x27, 0xED, 0x60, 0xED, 0x99, 0xED, 0xD3, 0xEE, 0x0C, 0xEE, 0x46, 0xEE, 0x7F, 0xEE, 0xB9, 0xEE, 0xF2, 0xEF, 0x2C, 0xEF, 0x65, 0xEF, 0x9F, 0xEF, 0xD9, 0xF0, 0x12, 0xF0, 0x4C, 0xF0, 0x86, 0xF0, 0xBF, 0xF0, 0xF9, 0xF1, 0x33, 0xF1, 0x6C, 0xF1, 0xA6, 0xF1, 0xE0, 0xF2, 0x1A, 0xF2, 0x53, 0xF2, 0x8D, 0xF2, 0xC7, 0xF3, 0x01, 0xF3, 0x3B, 0xF3, 0x75, 0xF3, 0xAE, 0xF3, 0xE8, 0xF4, 0x22, 0xF4, 0x5C, 0xF4, 0x96, 0xF4, 0xD0, 0xF5, 0x0A, 0xF5, 0x44, 0xF5, 0x7E, 0xF5, 0xB8, 0xF5, 0xF2, 0xF6, 0x2C, 0xF6, 0x67, 0xF6, 0xA1, 0xF6, 0xDB, 0xF7, 0x15, 0xF7, 0x4F, 0xF7, 0x89, 0xF7, 0xC4, 0xF7, 0xFE, 0xF8, 0x38, 0xF8, 0x72, 0xF8, 0xAD, 0xF8, 0xE7, 0xF9, 0x21, 0xF9, 0x5C, 0xF9, 0x96, 0xF9, 0xD0, 0xFA, 0x0B, 0xFA, 0x45, 0xFA, 0x7F, 0xFA, 0xBA, 0xFA, 0xF4, 0xFB, 0x2F, 0xFB, 0x69, 0xFB, 0xA4, 0xFB, 0xDE, 0xFC, 0x19, 0xFC, 0x54, 0xFC, 0x8E, 0xFC, 0xC9, 0xFD, 0x03, 0xFD, 0x3E, 0xFD, 0x79, 0xFD, 0xB3, 0xFD, 0xEE, 0xFE, 0x29, 0xFE, 0x63, 0xFE, 0x9E, 0xFE, 0xD9, 0xFF, 0x14, 0xFF, 0x4E, 0xFF, 0x89, 0xFF, 0xC4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x74, 0x00, 0xAF, 0x00, 0xE9, 0x01, 0x23, 0x01, 0x5D, 0x01, 0x97, 0x01, 0xD2, 0x02, 0x0C, 0x02, 0x46, 0x02, 0x81, 0x02, 0xBB, 0x02, 0xF5, 0x03, 0x2F, 0x03, 0x6A, 0x03, 0xA4, 0x03, 0xDF, 0x04, 0x19, 0x04, 0x53, 0x04, 0x8E, 0x04, 0xC8, 0x05, 0x03, 0x05, 0x3D, 0x05, 0x78, 0x05, 0xB2, 0x05, 0xEC, 0x06, 0x27, 0x06, 0x61, 0x06, 0x9C, 0x06, 0xD7, 0x07, 0x11, 0x07, 0x4C, 0x07, 0x86, 0x07, 0xC1, 0x07, 0xFB, 0x08, 0x36, 0x08, 0x71, 0x08, 0xAB, 0x08, 0xE6, 0x09, 0x21, 0x09, 0x5B, 0x09, 0x96, 0x09, 0xD1, 0x0A, 0x0B, 0x0A, 0x46, 0x0A, 0x81, 0x0A, 0xBC, 0x0A, 0xF6, 0x0B, 0x31, 0x0B, 0x6C, 0x0B, 0xA7, 0x0B, 0xE2, 0x0C, 0x1C, 0x0C, 0x57, 0x0C, 0x92, 0x0C, 0xCD, 0x0D, 0x08, 0x0D, 0x43, 0x0D, 0x7E, 0x0D, 0xB9, 0x0D, 0xF4, 0x0E, 0x2E, 0x0E, 0x69, 0x0E, 0xA4, 0x0E, 0xDF, 0x0F, 0x1A, 0x0F, 0x55, 0x0F, 0x90, 0x0F, 0xCB, 0x10, 0x07, 0x10, 0x42, 0x10, 0x7D, 0x10, 0xB8, 0x10, 0xF3, 0x11, 0x2E, 0x11, 0x69, 0x11, 0xA4, 0x11, 0xDF, 0x12, 0x1B, 0x12, 0x56, 0x12, 0x91, 0x12, 0xCC, 0x13, 0x07, 0x13, 0x43, 0x13, 0x7E, 0x13, 0xB9, 0x13, 0xF4, 0x14, 0x30, 0x14, 0x6B, 0x14, 0xA6, 0x14, 0xE1, 0x15, 0x1D, 0x15, 0x58, 0x15, 0x93, 0x15, 0xCF, 0x16, 0x0A, 0x16, 0x45, 0x16, 0x81, 0x16, 0xBC, 0x16, 0xF8, 0x17, 0x33, 0x17, 0x6E, 0x17, 0xAA, 0x17, 0xE5, 0x18, 0x21, 0x18, 0x5C, 0x18, 0x98, 0x18, 0xD3, 0x19, 0x0F, 0x19, 0x4A, 0x19, 0x86, 0x19, 0xC1, 0x19, 0xFD, 0x1A, 0x38, 0x1A, 0x74, 0x1A, 0xB0, 0x1A, 0xEB, 0x1B, 0x27, 0x1B, 0x62, 0x1B, 0x9E, 0x1B, 0xDA, 0x1C, 0x15, 0x1C, 0x51, 0x1C, 0x8D, 0x1C, 0xC8, 0x1D, 0x04, 0x1D, 0x40, 0x1D, 0x7F, 0x1D, 0xC7, 0x1E, 0x11, 0x1E, 0x5B, 0x1E, 0xA5, 0x1E, 0xEF, 0x1F, 0x38, 0x1F, 0x82, 0x1F, 0xCC, 0x20, 0x16, 0x20, 0x60, 0x20, 0xAA, 0x20, 0xF4, 0x21, 0x3E, 0x21, 0x88, 0x21, 0xD2, 0x22, 0x1C, 0x22, 0x66, 0x22, 0xB0, 0x22, 0xFB, 0x23, 0x45, 0x23, 0x8F, 0x23, 0xD9, 0x24, 0x23, 0x24, 0x6D, 0x24, 0xB8, 0x25, 0x02, 0x25, 0x4C, 0x25, 0x96, 0x25, 0xE1, 0x26, 0x2B, 0x26, 0x75, 0x26, 0xC0, 0x27, 0x0A, 0x27, 0x55, 0x27, 0x9F, 0x27, 0xE9, 0x28, 0x34, 0x28, 0x7E, 0x28, 0xC9, 0x29, 0x13, 0x29, 0x5E, 0x29, 0xA8, 0x29, 0xF3, 0x2A, 0x3D, 0x2A, 0x88, 0x2A, 0xD2, 0x2B, 0x1D, 0x2B, 0x68, 0x2B, 0xB2, 0x2B, 0xFD, 0x2C, 0x47, 0x2C, 0x92, 0x2C, 0xDD, 0x2D, 0x27, 0x2D, 0x72, 0x2D, 0xBD, 0x2E, 0x08, 0x2E, 0x52, 0x2E, 0x9D, 0x2E, 0xE8, 0x2F, 0x33, 0x2F, 0x7E, 0x2F, 0xC8, 0x30, 0x13, 0x30, 0x5E, 0x30, 0xA9, 0x30, 0xF4, 0x31, 0x3F, 0x31, 0x8A, 0x31, 0xD5, 0x32, 0x20, 0x32, 0x6B, 0x32, 0xB6, 0x33, 0x01, 0x33, 0x4C, 0x33, 0x97, 0x33, 0xE2, 0x34, 0x2D, 0x34, 0x79, 0x34, 0xC4, 0x35, 0x0F, 0x35, 0x5A, 0x35, 0xA5, 0x35, 0xF1, 0x36, 0x3C, 0x36, 0x87, 0x36, 0xD2, 0x37, 0x1D, 0x37, 0x68, 0x37, 0xB3, 0x37, 0xFE, 0x38, 0x49, 0x38, 0x94, 0x38, 0xDF, 0x39, 0x2A, 0x39, 0x75, 0x39, 0xBF, 0x3A, 0x0A, 0x3A, 0x55, 0x3A, 0x9F, 0x3A, 0xEA, 0x3B, 0x35, 0x3B, 0x7F, 0x3B, 0xCA, 0x3C, 0x14, 0x3C, 0x5F, 0x3C, 0xA9, 0x3C, 0xF4, 0x3D, 0x3E, 0x3D, 0x89, 0x3D, 0xD3, 0x3E, 0x1D, 0x3E, 0x68, 0x3E, 0xB2, 0x3E, 0xFC, 0x3F, 0x47, 0x3F, 0x91, 0x3F, 0xDB, 0x40, 0x25, 0x40, 0x6F, 0x40, 0xB9, 0x41, 0x03, 0x41, 0x4D, 0x41, 0x97, 0x41, 0xE1, 0x42, 0x2B, 0x42, 0x75, 0x42, 0xBF, 0x43, 0x09, 0x43, 0x53, 0x43, 0x9D, 0x43, 0xE7, 0x44, 0x32, 0x44, 0x7C, 0x44, 0xC6, 0x45, 0x10, 0x45, 0x5A, 0x45, 0xA4, 0x45, 0xEE, 0x46, 0x39, 0x46, 0x83, 0x46, 0xCD, 0x47, 0x17, 0x47, 0x62, 0x47, 0xAC, 0x47, 0xF6, 0x48, 0x40, 0x48, 0x8B, 0x48, 0xD5, 0x49, 0x1F, 0x49, 0x6A, 0x49, 0xB4, 0x49, 0xFF, 0x4A, 0x49, 0x4A, 0x93, 0x4A, 0xDE, 0x4B, 0x28, 0x4B, 0x73, 0x4B, 0xBD, 0x4C, 0x08, 0x4C, 0x52, 0x4C, 0x9D, 0x4C, 0xE7, 0x4D, 0x32, 0x4D, 0x7D, 0x4D, 0xC7, 0x4E, 0x12, 0x4E, 0x5D, 0x4E, 0xA7, 0x4E, 0xF2, 0x4F, 0x3D, 0x4F, 0x87, 0x4F, 0xD2, 0x50, 0x1D, 0x50, 0x68, 0x50, 0xB3, 0x50, 0xFD, 0x51, 0x48, 0x51, 0x93, 0x51, 0xDE, 0x52, 0x29, 0x52, 0x74, 0x52, 0xBF, 0x53, 0x0A, 0x53, 0x55, 0x53, 0xA0, 0x53, 0xEB, 0x54, 0x36, 0x54, 0x81, 0x54, 0xCC, 0x55, 0x18, 0x55, 0x63, 0x55, 0xAE, 0x55, 0xF9, 0x56, 0x44, 0x56, 0x90, 0x56, 0xDB, 0x57, 0x26, 0x57, 0x72, 0x57, 0xBD, 0x58, 0x08, 0x58, 0x54, 0x58, 0x9F, 0x58, 0xEB, 0x59, 0x36, 0x59, 0x82, 0x59, 0xCD, 0x5A, 0x19, 0x5A, 0x64, 0x5A, 0xAF, 0x5A, 0xFB, 0x5B, 0x46, 0x5B, 0x91, 0x5B, 0xDC, 0x5C, 0x27, 0x5C, 0x72, 0x5C, 0xBC, 0x5D, 0x07, 0x5D, 0x52, 0x5D, 0x9C, 0x5D, 0xE6, 0x5E, 0x31, 0x5E, 0x7B, 0x5E, 0xC5, 0x5F, 0x0F, 0x5F, 0x59, 0x5F, 0xA3, 0x5F, 0xED, 0x60, 0x37, 0x60, 0x81, 0x60, 0xCA, 0x61, 0x14, 0x61, 0x5D, 0x61, 0xA7, 0x61, 0xF0, 0x62, 0x39, 0x62, 0x82, 0x62, 0xCB, 0x63, 0x14, 0x63, 0x5D, 0x63, 0xA6, 0x63, 0xEF, 0x64, 0x38, 0x64, 0x80, 0x64, 0xC9, 0x65, 0x11, 0x65, 0x5A, 0x65, 0xA2, 0x65, 0xEA, 0x66, 0x33, 0x66, 0x7B, 0x66, 0xC3, 0x67, 0x0B, 0x67, 0x53, 0x67, 0x9B, 0x67, 0xE5, 0x68, 0x33, 0x68, 0x82, 0x68, 0xD0, 0x69, 0x1F, 0x69, 0x6D, 0x69, 0xBB, 0x6A, 0x09, 0x6A, 0x57, 0x6A, 0xA5, 0x6A, 0xF3, 0x6B, 0x41, 0x6B, 0x8E, 0x6B, 0xDC, 0x6C, 0x2A, 0x6C, 0x77, 0x6C, 0xC5, 0x6D, 0x13, 0x6D, 0x60, 0x6D, 0xAE, 0x6D, 0xFB, 0x6E, 0x48, 0x6E, 0x96, 0x6E, 0xE3, 0x6F, 0x31, 0x6F, 0x7E, 0x6F, 0xCB, 0x70, 0x18, 0x70, 0x66, 0x70, 0xB3, 0x71, 0x00, 0x71, 0x4D, 0x71, 0x9A, 0x71, 0xE7, 0x72, 0x34, 0x72, 0x81, 0x72, 0xCE, 0x73, 0x1B, 0x73, 0x68, 0x73, 0xB5, 0x74, 0x02, 0x74, 0x4F, 0x74, 0x9B, 0x74, 0xE8, 0x75, 0x35, 0x75, 0x82, 0x75, 0xCE, 0x76, 0x1B, 0x76, 0x67, 0x76, 0xB4, 0x77, 0x00, 0x77, 0x4D, 0x77, 0x99, 0x77, 0xE5, 0x78, 0x32, 0x78, 0x7E, 0x78, 0xCA, 0x79, 0x16, 0x79, 0x63, 0x79, 0xAF, 0x79, 0xFB, 0x7A, 0x47, 0x7A, 0x93, 0x7A, 0xDF, 0x7B, 0x2B, 0x7B, 0x77, 0x7B, 0xC3, 0x7C, 0x0F, 0x7C, 0x5B, 0x7C, 0xA7, 0x7C, 0xF2, 0x7D, 0x3E, 0x7D, 0x8A, 0x7D, 0xD6, 0x7E, 0x21, 0x7E, 0x6D, 0x7E, 0xB8, 0x7F, 0x04, 0x7F, 0x50, 0x7F, 0x9B, 0x7F, 0xE6, 0x80, 0x32, 0x80, 0x7D, 0x80, 0xC9, 0x81, 0x14, 0x81, 0x5F, 0x81, 0xAA, 0x81, 0xF6, 0x82, 0x41, 0x82, 0x8C, 0x82, 0xD7, 0x83, 0x22, 0x83, 0x6D, 0x83, 0xB9, 0x84, 0x04, 0x84, 0x4F, 0x84, 0x9A, 0x84, 0xE5, 0x85, 0x30, 0x85, 0x7B, 0x85, 0xC6, 0x86, 0x11, 0x86, 0x5C, 0x86, 0xA7, 0x86, 0xF2, 0x87, 0x3D, 0x87, 0x88, 0x87, 0xD3, 0x88, 0x1E, 0x88, 0x68, 0x88, 0xB3, 0x88, 0xFE, 0x89, 0x48, 0x89, 0x93, 0x89, 0xDD, 0x8A, 0x28, 0x8A, 0x72, 0x8A, 0xBD, 0x8B, 0x07, 0x8B, 0x51, 0x8B, 0x9C, 0x8B, 0xE6, 0x8C, 0x30, 0x8C, 0x7A, 0x8C, 0xC5, 0x8D, 0x0F, 0x8D, 0x59, 0x8D, 0xA3, 0x8D, 0xF7, 0x8E, 0x54, 0x8E, 0xB2, 0x8F, 0x0F, 0x8F, 0x6C, 0x8F, 0xC9, 0x90, 0x27, 0x90, 0x84, 0x90, 0xE1, 0x91, 0x3E, 0x91, 0x9B, 0x91, 0xF8, 0x92, 0x55, 0x92, 0xB1, 0x93, 0x0E, 0x93, 0x6B, 0x93, 0xC7, 0x94, 0x24, 0x94, 0x80, 0x94, 0xDD, 0x95, 0x39, 0x95, 0x95, 0x95, 0xF2, 0x96, 0x4E, 0x96, 0xAA, 0x97, 0x06, 0x97, 0x62, 0x97, 0xBE, 0x98, 0x19, 0x98, 0x75, 0x98, 0xD1, 0x99, 0x2D, 0x99, 0x88, 0x99, 0xE4, 0x9A, 0x40, 0x9A, 0x9B, 0x9A, 0xF6, 0x9B, 0x52, 0x9B, 0xAD, 0x9C, 0x08, 0x9C, 0x64, 0x9C, 0xBF, 0x9D, 0x1A, 0x9D, 0x75, 0x9D, 0xD0, 0x9E, 0x2A, 0x9E, 0x85, 0x9E, 0xDF, 0x9F, 0x3A, 0x9F, 0x94, 0x9F, 0xEE, 0xA0, 0x48, 0xA0, 0xA1, 0xA0, 0xFB, 0xA1, 0x54, 0xA1, 0xAE, 0xA2, 0x07, 0xA2, 0x60, 0xA2, 0xB9, 0xA3, 0x12, 0xA3, 0x6A, 0xA3, 0xC3, 0xA4, 0x1B, 0xA4, 0x74, 0xA4, 0xCC, 0xA5, 0x24, 0xA5, 0x7C, 0xA5, 0xD3, 0xA6, 0x2B, 0xA6, 0x83, 0xA6, 0xDA, 0xA7, 0x31, 0xA7, 0x89, 0xA7, 0xE0, 0xA8, 0x36, 0xA8, 0x8D, 0xA8, 0xE4, 0xA9, 0x3A, 0xA9, 0x91, 0xA9, 0xE7, 0xAA, 0x3D, 0xAA, 0x93, 0xAA, 0xE9, 0xAB, 0x3F, 0xAB, 0x95, 0xAB, 0xEB, 0xAC, 0x40, 0xAC, 0x96, 0xAC, 0xEC, 0xAD, 0x41, 0xAD, 0x97, 0xAD, 0xED, 0xAE, 0x43, 0xAE, 0x98, 0xAE, 0xEE, 0xAF, 0x44, 0xAF, 0x9A, 0xAF, 0xF0, 0xB0, 0x46, 0xB0, 0x9C, 0xB0, 0xF2, 0xB1, 0x48, 0xB1, 0x9E, 0xB1, 0xF4, 0xB2, 0x4A, 0xB2, 0xA0, 0xB2, 0xF6, 0xB3, 0x4C, 0xB3, 0xA2, 0xB3, 0xF8, 0xB4, 0x4E, 0xB4, 0xA4, 0xB4, 0xFB, 0xB5, 0x51, 0xB5, 0xA7, 0xB5, 0xFD, 0xB6, 0x53, 0xB6, 0xAA, 0xB7, 0x00, 0xB7, 0x56, 0xB7, 0xAD, 0xB8, 0x03, 0xB8, 0x59, 0xB8, 0xB0, 0xB9, 0x06, 0xB9, 0x5D, 0xB9, 0xB3, 0xBA, 0x09, 0xBA, 0x5B, 0xBA, 0xA9, 0xBA, 0xF7, 0xBB, 0x45, 0xBB, 0x93, 0xBB, 0xE1, 0xBC, 0x2F, 0xBC, 0x7E, 0xBC, 0xCC, 0xBD, 0x1A, 0xBD, 0x68, 0xBD, 0xB6, 0xBE, 0x05, 0xBE, 0x53, 0xBE, 0xA1, 0xBE, 0xEF, 0xBF, 0x3E, 0xBF, 0x8C, 0xBF, 0xDB, 0xC0, 0x29, 0xC0, 0x78, 0xC0, 0xC6, 0xC1, 0x15, 0xC1, 0x64, 0xC1, 0xB3, 0xC2, 0x02, 0xC2, 0x51, 0xC2, 0xA0, 0xC2, 0xEF, 0xC3, 0x3E, 0xC3, 0x8D, 0xC3, 0xDD, 0xC4, 0x2C, 0xC4, 0x7B, 0xC4, 0xCB, 0xC5, 0x1B, 0xC5, 0x6A, 0xC5, 0xBA, 0xC6, 0x0A, 0xC6, 0x5A, 0xC6, 0xA9, 0xC6, 0xF9, 0xC7, 0x49, 0xC7, 0x9A, 0xC7, 0xEA, 0xC8, 0x3A, 0xC8, 0x8A, 0xC8, 0xDB, 0xC9, 0x2B, 0xC9, 0x7B, 0xC9, 0xCC, 0xCA, 0x1C, 0xCA, 0x6D, 0xCA, 0xBE, 0xCB, 0x0F, 0xCB, 0x60, 0xCB, 0xB1, 0xCC, 0x02, 0xCC, 0x53, 0xCC, 0xA5, 0xCC, 0xF7, 0xCD, 0x48, 0xCD, 0x9A, 0xCD, 0xEC, 0xCE, 0x3E, 0xCE, 0x91, 0xCE, 0xE3, 0xCF, 0x36, 0xCF, 0x88, 0xCF, 0xDB, 0xD0, 0x2E, 0xD0, 0x81, 0xD0, 0xD4, 0xD1, 0x27, 0xD1, 0x7B, 0xD1, 0xCE, 0xD2, 0x22, 0xD2, 0x76, 0xD2, 0xCA, 0xD3, 0x1E, 0xD3, 0x72, 0xD3, 0xC7, 0xD4, 0x1B, 0xD4, 0x70, 0xD4, 0xC4, 0xD5, 0x19, 0xD5, 0x6E, 0xD5, 0xC4, 0xD6, 0x19, 0xD6, 0x6F, 0xD6, 0xC4, 0xD7, 0x1A, 0xD7, 0x70, 0xD7, 0xC6, 0xD8, 0x1C, 0xD8, 0x72, 0xD8, 0xC9, 0xD9, 0x20, 0xD9, 0x76, 0xD9, 0xCD, 0xDA, 0x24, 0xDA, 0x7C, 0xDA, 0xD3, 0xDB, 0x2B, 0xDB, 0x82, 0xDB, 0xDA, 0xDC, 0x32, 0xDC, 0x8A, 0xDC, 0xE3, 0xDD, 0x3B, 0xDD, 0x94, 0xDD, 0xED, 0xDE, 0x46, 0xDE, 0x9F, 0xDE, 0xF8, 0xDF, 0x52, 0xDF, 0xAB, 0xE0, 0x05, 0xE0, 0x5F, 0xE0, 0xB9, 0xE1, 0x13, 0xE1, 0x6E, 0xE1, 0xC8, 0xE2, 0x23, 0xE2, 0x7E, 0xE2, 0xD9, 0xE3, 0x35, 0xE3, 0x88, 0xE3, 0xBF, 0xE3, 0xDF, 0xE3, 0xFF, 0xE4, 0x1F, 0xE4, 0x3F, 0xE4, 0x5F, 0xE4, 0x7F, 0xE4, 0x9F, 0xE4, 0xBF, 0xE4, 0xDF, 0xE4, 0xFF, 0xE5, 0x1F, 0xE5, 0x40, 0xE5, 0x60, 0xE5, 0x80, 0xE5, 0xA0, 0xE5, 0xC0, 0xE5, 0xE1, 0xE6, 0x01, 0xE6, 0x21, 0xE6, 0x42, 0xE6, 0x62, 0xE6, 0x82, 0xE6, 0xA3, 0xE6, 0xC3, 0xE6, 0xE4, 0xE7, 0x04, 0xE7, 0x25, 0xE7, 0x45, 0xE7, 0x66, 0xE7, 0x86, 0xE7, 0xA7, 0xE7, 0xC8, 0xE7, 0xE8, 0xE8, 0x09, 0xE8, 0x29, 0xE8, 0x4A, 0xE8, 0x6B, 0xE8, 0x8C, 0xE8, 0xAC, 0xE8, 0xCD, 0xE8, 0xEE, 0xE9, 0x0F, 0xE9, 0x30, 0xE9, 0x51, 0xE9, 0x71, 0xE9, 0x92, 0xE9, 0xB3, 0xE9, 0xD4, 0xE9, 0xF5, 0xEA, 0x16, 0xEA, 0x37, 0xEA, 0x58, 0xEA, 0x7A, 0xEA, 0x9B, 0xEA, 0xBC, 0xEA, 0xDD, 0xEA, 0xFE, 0xEB, 0x1F, 0xEB, 0x41, 0xEB, 0x62, 0xEB, 0x83, 0xEB, 0xA4, 0xEB, 0xC6, 0xEB, 0xE7, 0xEC, 0x09, 0xEC, 0x2A, 0xEC, 0x4B, 0xEC, 0x6D, 0xEC, 0x8E, 0xEC, 0xB0, 0xEC, 0xD1, 0xEC, 0xF3, 0xED, 0x14, 0xED, 0x36, 0xED, 0x58, 0xED, 0x79, 0xED, 0x9B, 0xED, 0xBD, 0xED, 0xDE, 0xEE, 0x00, 0xEE, 0x22, 0xEE, 0x44, 0xEE, 0x65, 0xEE, 0x87, 0xEE, 0xA9, 0xEE, 0xCB, 0xEE, 0xED, 0xEF, 0x0F, 0xEF, 0x31, 0xEF, 0x53, 0xEF, 0x75, 0xEF, 0x97, 0xEF, 0xB9, 0xEF, 0xDB, 0xEF, 0xFD, 0xF0, 0x1F, 0xF0, 0x41, 0xF0, 0x64, 0xF0, 0x86, 0xF0, 0xA8, 0xF0, 0xCA, 0xF0, 0xED, 0xF1, 0x0F, 0xF1, 0x31, 0xF1, 0x54, 0xF1, 0x76, 0xF1, 0x98, 0xF1, 0xBB, 0xF1, 0xDD, 0xF2, 0x00, 0xF2, 0x22, 0xF2, 0x45, 0xF2, 0x67, 0xF2, 0x8A, 0xF2, 0xAC, 0xF2, 0xCF, 0xF2, 0xF2, 0xF3, 0x14, 0xF3, 0x37, 0xF3, 0x5A, 0xF3, 0x7D, 0xF3, 0x9F, 0xF3, 0xC2, 0xF3, 0xE5, 0xF4, 0x08, 0xF4, 0x2B, 0xF4, 0x49, 0xF4, 0x63, 0xF4, 0x7D, 0xF4, 0x93, 0xF4, 0xAA, 0xF4, 0xC1, 0xF4, 0xD7, 0xF4, 0xEE, 0xF5, 0x05, 0xF5, 0x1C, 0xF5, 0x32, 0xF5, 0x49, 0xF5, 0x60, 0xF5, 0x77, 0xF5, 0x8E, 0xF5, 0xA4, 0xF5, 0xBB, 0xF5, 0xD2, 0xF5, 0xE9, 0xF6, 0x00, 0xF6, 0x17, 0xF6, 0x2E, 0xF6, 0x44, 0xF6, 0x5B, 0xF6, 0x72, 0xF6, 0x89, 0xF6, 0xA0, 0xF6, 0xB7, 0xF6, 0xCE, 0xF6, 0xE5, 0xF6, 0xFC, 0xF7, 0x13, 0xF7, 0x2A, 0xF7, 0x41, 0xF7, 0x58, 0xF7, 0x6F, 0xF7, 0x86, 0xF7, 0x9D, 0xF7, 0xB4, 0xF7, 0xCB, 0xF7, 0xE2, 0xF7, 0xF9, 0xF8, 0x11, 0xF8, 0x28, 0xF8, 0x3F, 0xF8, 0x56, 0xF8, 0x6D, 0xF8, 0x84, 0xF8, 0x9B, 0xF8, 0xB3, 0xF8, 0xCA, 0xF8, 0xE1, 0xF8, 0xF8, 0xF9, 0x10, 0xF9, 0x27, 0xF9, 0x3E, 0xF9, 0x55, 0xF9, 0x6D, 0xF9, 0x84, 0xF9, 0x9B, 0xF9, 0xB3, 0xF9, 0xCA, 0xF9, 0xE1, 0xF9, 0xF9, 0xFA, 0x10, 0xFA, 0x27, 0xFA, 0x3F, 0xFA, 0x56, 0xFA, 0x6D, 0xFA, 0x85, 0xFA, 0x9C, 0xFA, 0xB4, 0xFA, 0xCB, 0xFA, 0xE3, 0xFA, 0xFA, 0xFB, 0x12, 0xFB, 0x29, 0xFB, 0x41, 0xFB, 0x58, 0xFB, 0x70, 0xFB, 0x87, 0xFB, 0x9F, 0xFB, 0xB6, 0xFB, 0xCE, 0xFB, 0xE6, 0xFB, 0xFD, 0xFC, 0x15, 0xFC, 0x2C, 0xFC, 0x44, 0xFC, 0x5C, 0xFC, 0x73, 0xFC, 0x8B, 0xFC, 0xA3, 0xFC, 0xBA, 0xFC, 0xD2, 0xFC, 0xEA, 0xFD, 0x01, 0xFD, 0x19, 0xFD, 0x31, 0xFD, 0x49, 0xFD, 0x61, 0xFD, 0x78, 0xFD, 0x90, 0xFD, 0xA8, 0xFD, 0xC0, 0xFD, 0xD8, 0xFD, 0xEF, 0xFE, 0x07, 0xFE, 0x1F, 0xFE, 0x37, 0xFE, 0x4F, 0xFE, 0x67, 0xFE, 0x7F, 0xFE, 0x97, 0xFE, 0xAF, 0xFE, 0xC7, 0xFE, 0xDF, 0xFE, 0xF7, 0xFF, 0x0E, 0xFF, 0x26, 0xFF, 0x3E, 0xFF, 0x57, 0xFF, 0x6F, 0xFF, 0x87, 0xFF, 0x9F, 0xFF, 0xB7, 0xFF, 0xCF, 0xFF, 0xE7, 0xFF, 0xFF, 0x6D, 0x66, 0x74, 0x32, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x81, 0x00, 0xC1, 0x01, 0x01, 0x01, 0x42, 0x01, 0x82, 0x01, 0xC2, 0x02, 0x02, 0x02, 0x43, 0x02, 0x83, 0x02, 0xC3, 0x03, 0x04, 0x03, 0x44, 0x03, 0x84, 0x03, 0xC5, 0x04, 0x05, 0x04, 0x45, 0x04, 0x86, 0x04, 0xC6, 0x05, 0x06, 0x05, 0x47, 0x05, 0x87, 0x05, 0xC7, 0x06, 0x07, 0x06, 0x48, 0x06, 0x88, 0x06, 0xC8, 0x07, 0x09, 0x07, 0x49, 0x07, 0x89, 0x07, 0xCA, 0x08, 0x0A, 0x08, 0x4A, 0x08, 0x8B, 0x08, 0xCB, 0x09, 0x0B, 0x09, 0x4C, 0x09, 0x8C, 0x09, 0xCC, 0x0A, 0x0C, 0x0A, 0x4D, 0x0A, 0x8D, 0x0A, 0xCD, 0x0B, 0x0E, 0x0B, 0x4E, 0x0B, 0x8E, 0x0B, 0xCF, 0x0C, 0x0F, 0x0C, 0x4F, 0x0C, 0x90, 0x0C, 0xD0, 0x0D, 0x10, 0x0D, 0x51, 0x0D, 0x91, 0x0D, 0xD1, 0x0E, 0x11, 0x0E, 0x52, 0x0E, 0x92, 0x0E, 0xD2, 0x0F, 0x13, 0x0F, 0x53, 0x0F, 0x93, 0x0F, 0xD4, 0x10, 0x14, 0x10, 0x54, 0x10, 0x95, 0x10, 0xD5, 0x11, 0x15, 0x11, 0x56, 0x11, 0x96, 0x11, 0xD6, 0x12, 0x16, 0x12, 0x57, 0x12, 0x97, 0x12, 0xD7, 0x13, 0x18, 0x13, 0x58, 0x13, 0x98, 0x13, 0xD9, 0x14, 0x19, 0x14, 0x59, 0x14, 0x9A, 0x14, 0xDA, 0x15, 0x1A, 0x15, 0x5B, 0x15, 0x9B, 0x15, 0xDB, 0x16, 0x1B, 0x16, 0x5C, 0x16, 0x9C, 0x16, 0xDC, 0x17, 0x1D, 0x17, 0x5D, 0x17, 0x9D, 0x17, 0xDE, 0x18, 0x1E, 0x18, 0x5E, 0x18, 0x9F, 0x18, 0xDF, 0x19, 0x1F, 0x19, 0x5F, 0x19, 0xA0, 0x19, 0xE0, 0x1A, 0x20, 0x1A, 0x61, 0x1A, 0xA1, 0x1A, 0xE1, 0x1B, 0x22, 0x1B, 0x62, 0x1B, 0xA2, 0x1B, 0xE3, 0x1C, 0x23, 0x1C, 0x63, 0x1C, 0xA4, 0x1C, 0xE4, 0x1D, 0x24, 0x1D, 0x64, 0x1D, 0xA5, 0x1D, 0xE5, 0x1E, 0x25, 0x1E, 0x66, 0x1E, 0xA6, 0x1E, 0xE6, 0x1F, 0x27, 0x1F, 0x67, 0x1F, 0xA7, 0x1F, 0xE8, 0x20, 0x28, 0x20, 0x68, 0x20, 0xA9, 0x20, 0xE9, 0x21, 0x29, 0x21, 0x69, 0x21, 0xAA, 0x21, 0xEA, 0x22, 0x2A, 0x22, 0x6B, 0x22, 0xAB, 0x22, 0xEB, 0x23, 0x2C, 0x23, 0x6C, 0x23, 0xAC, 0x23, 0xED, 0x24, 0x2D, 0x24, 0x6D, 0x24, 0xAE, 0x24, 0xEE, 0x25, 0x2E, 0x25, 0x6E, 0x25, 0xAF, 0x25, 0xEF, 0x26, 0x2F, 0x26, 0x70, 0x26, 0xB0, 0x26, 0xF0, 0x27, 0x31, 0x27, 0x71, 0x27, 0xB1, 0x27, 0xF2, 0x28, 0x32, 0x28, 0x72, 0x28, 0xB3, 0x28, 0xF3, 0x29, 0x33, 0x29, 0x73, 0x29, 0xB4, 0x29, 0xF4, 0x2A, 0x34, 0x2A, 0x75, 0x2A, 0xB5, 0x2A, 0xF5, 0x2B, 0x36, 0x2B, 0x76, 0x2B, 0xB6, 0x2B, 0xF7, 0x2C, 0x37, 0x2C, 0x77, 0x2C, 0xB8, 0x2C, 0xF8, 0x2D, 0x38, 0x2D, 0x78, 0x2D, 0xB9, 0x2D, 0xF9, 0x2E, 0x39, 0x2E, 0x7A, 0x2E, 0xBA, 0x2E, 0xFA, 0x2F, 0x3B, 0x2F, 0x7B, 0x2F, 0xBB, 0x2F, 0xFC, 0x30, 0x3C, 0x30, 0x7C, 0x30, 0xBC, 0x30, 0xFD, 0x31, 0x3D, 0x31, 0x7D, 0x31, 0xBE, 0x31, 0xFE, 0x32, 0x3E, 0x32, 0x7F, 0x32, 0xBF, 0x32, 0xFF, 0x33, 0x40, 0x33, 0x80, 0x33, 0xC0, 0x34, 0x01, 0x34, 0x41, 0x34, 0x81, 0x34, 0xC1, 0x35, 0x02, 0x35, 0x42, 0x35, 0x82, 0x35, 0xC3, 0x36, 0x03, 0x36, 0x43, 0x36, 0x84, 0x36, 0xC4, 0x37, 0x04, 0x37, 0x45, 0x37, 0x85, 0x37, 0xC5, 0x38, 0x06, 0x38, 0x46, 0x38, 0x86, 0x38, 0xC6, 0x39, 0x07, 0x39, 0x47, 0x39, 0x87, 0x39, 0xC8, 0x3A, 0x08, 0x3A, 0x48, 0x3A, 0x89, 0x3A, 0xC9, 0x3B, 0x09, 0x3B, 0x4A, 0x3B, 0x8A, 0x3B, 0xCA, 0x3C, 0x0B, 0x3C, 0x4B, 0x3C, 0x8B, 0x3C, 0xCB, 0x3D, 0x0C, 0x3D, 0x4C, 0x3D, 0x8C, 0x3D, 0xCD, 0x3E, 0x0D, 0x3E, 0x4D, 0x3E, 0x8E, 0x3E, 0xCE, 0x3F, 0x0E, 0x3F, 0x4F, 0x3F, 0x8F, 0x3F, 0xCF, 0x40, 0x10, 0x40, 0x50, 0x40, 0x90, 0x40, 0xD0, 0x41, 0x11, 0x41, 0x51, 0x41, 0x91, 0x41, 0xD2, 0x42, 0x12, 0x42, 0x52, 0x42, 0x93, 0x42, 0xD3, 0x43, 0x13, 0x43, 0x54, 0x43, 0x94, 0x43, 0xD4, 0x44, 0x15, 0x44, 0x55, 0x44, 0x95, 0x44, 0xD5, 0x45, 0x16, 0x45, 0x56, 0x45, 0x96, 0x45, 0xD7, 0x46, 0x17, 0x46, 0x57, 0x46, 0x98, 0x46, 0xD8, 0x47, 0x18, 0x47, 0x59, 0x47, 0x99, 0x47, 0xD9, 0x48, 0x19, 0x48, 0x5A, 0x48, 0x9A, 0x48, 0xDA, 0x49, 0x1B, 0x49, 0x5B, 0x49, 0x9B, 0x49, 0xDC, 0x4A, 0x1C, 0x4A, 0x5C, 0x4A, 0x9D, 0x4A, 0xDD, 0x4B, 0x1D, 0x4B, 0x5E, 0x4B, 0x9E, 0x4B, 0xDE, 0x4C, 0x1E, 0x4C, 0x5F, 0x4C, 0x9F, 0x4C, 0xDF, 0x4D, 0x20, 0x4D, 0x60, 0x4D, 0xA0, 0x4D, 0xE1, 0x4E, 0x21, 0x4E, 0x61, 0x4E, 0xA2, 0x4E, 0xE2, 0x4F, 0x22, 0x4F, 0x63, 0x4F, 0xA3, 0x4F, 0xE3, 0x50, 0x23, 0x50, 0x64, 0x50, 0xA4, 0x50, 0xE4, 0x51, 0x25, 0x51, 0x65, 0x51, 0xA5, 0x51, 0xE6, 0x52, 0x26, 0x52, 0x66, 0x52, 0xA7, 0x52, 0xE7, 0x53, 0x27, 0x53, 0x68, 0x53, 0xA8, 0x53, 0xE8, 0x54, 0x28, 0x54, 0x69, 0x54, 0xA9, 0x54, 0xE9, 0x55, 0x2A, 0x55, 0x6A, 0x55, 0xAA, 0x55, 0xEB, 0x56, 0x2B, 0x56, 0x6B, 0x56, 0xAC, 0x56, 0xEC, 0x57, 0x2C, 0x57, 0x6D, 0x57, 0xAD, 0x57, 0xED, 0x58, 0x2D, 0x58, 0x6E, 0x58, 0xAE, 0x58, 0xEE, 0x59, 0x2F, 0x59, 0x6F, 0x59, 0xAF, 0x59, 0xF0, 0x5A, 0x30, 0x5A, 0x70, 0x5A, 0xB1, 0x5A, 0xF1, 0x5B, 0x31, 0x5B, 0x72, 0x5B, 0xB2, 0x5B, 0xF2, 0x5C, 0x32, 0x5C, 0x73, 0x5C, 0xB3, 0x5C, 0xF3, 0x5D, 0x34, 0x5D, 0x74, 0x5D, 0xB4, 0x5D, 0xF5, 0x5E, 0x35, 0x5E, 0x75, 0x5E, 0xB6, 0x5E, 0xF6, 0x5F, 0x36, 0x5F, 0x76, 0x5F, 0xB7, 0x5F, 0xF7, 0x60, 0x37, 0x60, 0x78, 0x60, 0xB8, 0x60, 0xF8, 0x61, 0x39, 0x61, 0x79, 0x61, 0xB9, 0x61, 0xFA, 0x62, 0x3A, 0x62, 0x7A, 0x62, 0xBB, 0x62, 0xFB, 0x63, 0x3B, 0x63, 0x7B, 0x63, 0xBC, 0x63, 0xFC, 0x64, 0x3C, 0x64, 0x7D, 0x64, 0xBD, 0x64, 0xFD, 0x65, 0x3E, 0x65, 0x7E, 0x65, 0xBE, 0x65, 0xFF, 0x66, 0x3F, 0x66, 0x7F, 0x66, 0xC0, 0x67, 0x00, 0x67, 0x40, 0x67, 0x80, 0x67, 0xC1, 0x68, 0x01, 0x68, 0x41, 0x68, 0x82, 0x68, 0xC2, 0x69, 0x02, 0x69, 0x43, 0x69, 0x83, 0x69, 0xC3, 0x6A, 0x04, 0x6A, 0x44, 0x6A, 0x84, 0x6A, 0xC5, 0x6B, 0x05, 0x6B, 0x45, 0x6B, 0x85, 0x6B, 0xC6, 0x6C, 0x06, 0x6C, 0x46, 0x6C, 0x87, 0x6C, 0xC7, 0x6D, 0x07, 0x6D, 0x48, 0x6D, 0x88, 0x6D, 0xC8, 0x6E, 0x09, 0x6E, 0x49, 0x6E, 0x89, 0x6E, 0xCA, 0x6F, 0x0A, 0x6F, 0x4A, 0x6F, 0x8A, 0x6F, 0xCB, 0x70, 0x0B, 0x70, 0x4B, 0x70, 0x8C, 0x70, 0xCC, 0x71, 0x0C, 0x71, 0x4D, 0x71, 0x8D, 0x71, 0xCD, 0x72, 0x0E, 0x72, 0x4E, 0x72, 0x8E, 0x72, 0xCF, 0x73, 0x0F, 0x73, 0x4F, 0x73, 0x8F, 0x73, 0xD0, 0x74, 0x10, 0x74, 0x50, 0x74, 0x91, 0x74, 0xD1, 0x75, 0x11, 0x75, 0x52, 0x75, 0x92, 0x75, 0xD2, 0x76, 0x13, 0x76, 0x53, 0x76, 0x93, 0x76, 0xD3, 0x77, 0x14, 0x77, 0x54, 0x77, 0x94, 0x77, 0xD5, 0x78, 0x15, 0x78, 0x55, 0x78, 0x96, 0x78, 0xD6, 0x79, 0x16, 0x79, 0x57, 0x79, 0x97, 0x79, 0xD7, 0x7A, 0x18, 0x7A, 0x58, 0x7A, 0x98, 0x7A, 0xD8, 0x7B, 0x19, 0x7B, 0x59, 0x7B, 0x99, 0x7B, 0xDA, 0x7C, 0x1A, 0x7C, 0x5A, 0x7C, 0x9B, 0x7C, 0xDB, 0x7D, 0x1B, 0x7D, 0x5C, 0x7D, 0x9C, 0x7D, 0xDC, 0x7E, 0x1D, 0x7E, 0x5D, 0x7E, 0x9D, 0x7E, 0xDD, 0x7F, 0x1E, 0x7F, 0x5E, 0x7F, 0x9E, 0x7F, 0xDF, 0x80, 0x1F, 0x80, 0x5F, 0x80, 0xA0, 0x80, 0xE0, 0x81, 0x20, 0x81, 0x61, 0x81, 0xA1, 0x81, 0xE1, 0x82, 0x22, 0x82, 0x62, 0x82, 0xA2, 0x82, 0xE2, 0x83, 0x23, 0x83, 0x63, 0x83, 0xA3, 0x83, 0xE4, 0x84, 0x24, 0x84, 0x64, 0x84, 0xA5, 0x84, 0xE5, 0x85, 0x25, 0x85, 0x66, 0x85, 0xA6, 0x85, 0xE6, 0x86, 0x27, 0x86, 0x67, 0x86, 0xA7, 0x86, 0xE7, 0x87, 0x28, 0x87, 0x68, 0x87, 0xA8, 0x87, 0xE9, 0x88, 0x29, 0x88, 0x69, 0x88, 0xAA, 0x88, 0xEA, 0x89, 0x2A, 0x89, 0x6B, 0x89, 0xAB, 0x89, 0xEB, 0x8A, 0x2C, 0x8A, 0x6C, 0x8A, 0xAC, 0x8A, 0xEC, 0x8B, 0x2D, 0x8B, 0x6D, 0x8B, 0xAD, 0x8B, 0xEE, 0x8C, 0x2E, 0x8C, 0x6E, 0x8C, 0xAF, 0x8C, 0xEF, 0x8D, 0x2F, 0x8D, 0x70, 0x8D, 0xB0, 0x8D, 0xF0, 0x8E, 0x30, 0x8E, 0x71, 0x8E, 0xB1, 0x8E, 0xF1, 0x8F, 0x32, 0x8F, 0x72, 0x8F, 0xB2, 0x8F, 0xF3, 0x90, 0x33, 0x90, 0x73, 0x90, 0xB4, 0x90, 0xF4, 0x91, 0x34, 0x91, 0x75, 0x91, 0xB5, 0x91, 0xF5, 0x92, 0x35, 0x92, 0x76, 0x92, 0xB6, 0x92, 0xF6, 0x93, 0x37, 0x93, 0x77, 0x93, 0xB7, 0x93, 0xF8, 0x94, 0x38, 0x94, 0x78, 0x94, 0xB9, 0x94, 0xF9, 0x95, 0x39, 0x95, 0x7A, 0x95, 0xBA, 0x95, 0xFA, 0x96, 0x3A, 0x96, 0x7B, 0x96, 0xBB, 0x96, 0xFB, 0x97, 0x3C, 0x97, 0x7C, 0x97, 0xBC, 0x97, 0xFD, 0x98, 0x3D, 0x98, 0x7D, 0x98, 0xBE, 0x98, 0xFE, 0x99, 0x3E, 0x99, 0x7F, 0x99, 0xBF, 0x99, 0xFF, 0x9A, 0x3F, 0x9A, 0x80, 0x9A, 0xC0, 0x9B, 0x00, 0x9B, 0x41, 0x9B, 0x81, 0x9B, 0xC1, 0x9C, 0x02, 0x9C, 0x42, 0x9C, 0x82, 0x9C, 0xC3, 0x9D, 0x03, 0x9D, 0x43, 0x9D, 0x84, 0x9D, 0xC4, 0x9E, 0x04, 0x9E, 0x44, 0x9E, 0x85, 0x9E, 0xC5, 0x9F, 0x05, 0x9F, 0x46, 0x9F, 0x86, 0x9F, 0xC6, 0xA0, 0x07, 0xA0, 0x47, 0xA0, 0x87, 0xA0, 0xC8, 0xA1, 0x08, 0xA1, 0x48, 0xA1, 0x89, 0xA1, 0xC9, 0xA2, 0x09, 0xA2, 0x49, 0xA2, 0x8A, 0xA2, 0xCA, 0xA3, 0x0A, 0xA3, 0x4B, 0xA3, 0x8B, 0xA3, 0xCB, 0xA4, 0x0C, 0xA4, 0x4C, 0xA4, 0x8C, 0xA4, 0xCD, 0xA5, 0x0D, 0xA5, 0x4D, 0xA5, 0x8D, 0xA5, 0xCE, 0xA6, 0x0E, 0xA6, 0x4E, 0xA6, 0x8F, 0xA6, 0xCF, 0xA7, 0x0F, 0xA7, 0x50, 0xA7, 0x90, 0xA7, 0xD0, 0xA8, 0x11, 0xA8, 0x51, 0xA8, 0x91, 0xA8, 0xD2, 0xA9, 0x12, 0xA9, 0x52, 0xA9, 0x92, 0xA9, 0xD3, 0xAA, 0x13, 0xAA, 0x53, 0xAA, 0x94, 0xAA, 0xD4, 0xAB, 0x14, 0xAB, 0x55, 0xAB, 0x95, 0xAB, 0xD5, 0xAC, 0x16, 0xAC, 0x56, 0xAC, 0x96, 0xAC, 0xD7, 0xAD, 0x17, 0xAD, 0x57, 0xAD, 0x97, 0xAD, 0xD8, 0xAE, 0x18, 0xAE, 0x58, 0xAE, 0x99, 0xAE, 0xD9, 0xAF, 0x19, 0xAF, 0x5A, 0xAF, 0x9A, 0xAF, 0xDA, 0xB0, 0x1B, 0xB0, 0x5B, 0xB0, 0x9B, 0xB0, 0xDC, 0xB1, 0x1C, 0xB1, 0x5C, 0xB1, 0x9C, 0xB1, 0xDD, 0xB2, 0x1D, 0xB2, 0x5D, 0xB2, 0x9E, 0xB2, 0xDE, 0xB3, 0x1E, 0xB3, 0x5F, 0xB3, 0x9F, 0xB3, 0xDF, 0xB4, 0x20, 0xB4, 0x60, 0xB4, 0xA0, 0xB4, 0xE1, 0xB5, 0x21, 0xB5, 0x61, 0xB5, 0xA1, 0xB5, 0xE2, 0xB6, 0x22, 0xB6, 0x62, 0xB6, 0xA3, 0xB6, 0xE3, 0xB7, 0x23, 0xB7, 0x64, 0xB7, 0xA4, 0xB7, 0xE4, 0xB8, 0x25, 0xB8, 0x65, 0xB8, 0xA5, 0xB8, 0xE6, 0xB9, 0x26, 0xB9, 0x66, 0xB9, 0xA6, 0xB9, 0xE7, 0xBA, 0x27, 0xBA, 0x67, 0xBA, 0xA8, 0xBA, 0xE8, 0xBB, 0x28, 0xBB, 0x69, 0xBB, 0xA9, 0xBB, 0xE9, 0xBC, 0x2A, 0xBC, 0x6A, 0xBC, 0xAA, 0xBC, 0xEA, 0xBD, 0x2B, 0xBD, 0x6B, 0xBD, 0xAB, 0xBD, 0xEC, 0xBE, 0x2C, 0xBE, 0x6C, 0xBE, 0xAD, 0xBE, 0xED, 0xBF, 0x2D, 0xBF, 0x6E, 0xBF, 0xAE, 0xBF, 0xEE, 0xC0, 0x2F, 0xC0, 0x6F, 0xC0, 0xAF, 0xC0, 0xEF, 0xC1, 0x30, 0xC1, 0x70, 0xC1, 0xB0, 0xC1, 0xF1, 0xC2, 0x31, 0xC2, 0x71, 0xC2, 0xB2, 0xC2, 0xF2, 0xC3, 0x32, 0xC3, 0x73, 0xC3, 0xB3, 0xC3, 0xF3, 0xC4, 0x34, 0xC4, 0x74, 0xC4, 0xB4, 0xC4, 0xF4, 0xC5, 0x35, 0xC5, 0x75, 0xC5, 0xB5, 0xC5, 0xF6, 0xC6, 0x36, 0xC6, 0x76, 0xC6, 0xB7, 0xC6, 0xF7, 0xC7, 0x37, 0xC7, 0x78, 0xC7, 0xB8, 0xC7, 0xF8, 0xC8, 0x39, 0xC8, 0x79, 0xC8, 0xB9, 0xC8, 0xF9, 0xC9, 0x3A, 0xC9, 0x7A, 0xC9, 0xBA, 0xC9, 0xFB, 0xCA, 0x3B, 0xCA, 0x7B, 0xCA, 0xBC, 0xCA, 0xFC, 0xCB, 0x3C, 0xCB, 0x7D, 0xCB, 0xBD, 0xCB, 0xFD, 0xCC, 0x3E, 0xCC, 0x7E, 0xCC, 0xBE, 0xCC, 0xFE, 0xCD, 0x3F, 0xCD, 0x7F, 0xCD, 0xBF, 0xCE, 0x00, 0xCE, 0x40, 0xCE, 0x80, 0xCE, 0xC1, 0xCF, 0x01, 0xCF, 0x41, 0xCF, 0x82, 0xCF, 0xC2, 0xD0, 0x02, 0xD0, 0x43, 0xD0, 0x83, 0xD0, 0xC3, 0xD1, 0x03, 0xD1, 0x44, 0xD1, 0x84, 0xD1, 0xC4, 0xD2, 0x05, 0xD2, 0x45, 0xD2, 0x85, 0xD2, 0xC6, 0xD3, 0x06, 0xD3, 0x46, 0xD3, 0x87, 0xD3, 0xC7, 0xD4, 0x07, 0xD4, 0x47, 0xD4, 0x88, 0xD4, 0xC8, 0xD5, 0x08, 0xD5, 0x49, 0xD5, 0x89, 0xD5, 0xC9, 0xD6, 0x0A, 0xD6, 0x4A, 0xD6, 0x8A, 0xD6, 0xCB, 0xD7, 0x0B, 0xD7, 0x4B, 0xD7, 0x8C, 0xD7, 0xCC, 0xD8, 0x0C, 0xD8, 0x4C, 0xD8, 0x8D, 0xD8, 0xCD, 0xD9, 0x0D, 0xD9, 0x4E, 0xD9, 0x8E, 0xD9, 0xCE, 0xDA, 0x0F, 0xDA, 0x4F, 0xDA, 0x8F, 0xDA, 0xD0, 0xDB, 0x10, 0xDB, 0x50, 0xDB, 0x91, 0xDB, 0xD1, 0xDC, 0x11, 0xDC, 0x51, 0xDC, 0x92, 0xDC, 0xD2, 0xDD, 0x12, 0xDD, 0x53, 0xDD, 0x93, 0xDD, 0xD3, 0xDE, 0x14, 0xDE, 0x54, 0xDE, 0x94, 0xDE, 0xD5, 0xDF, 0x15, 0xDF, 0x55, 0xDF, 0x96, 0xDF, 0xD6, 0xE0, 0x16, 0xE0, 0x56, 0xE0, 0x97, 0xE0, 0xD7, 0xE1, 0x17, 0xE1, 0x58, 0xE1, 0x98, 0xE1, 0xD8, 0xE2, 0x19, 0xE2, 0x59, 0xE2, 0x99, 0xE2, 0xDA, 0xE3, 0x1A, 0xE3, 0x5A, 0xE3, 0x9B, 0xE3, 0xDB, 0xE4, 0x1B, 0xE4, 0x5B, 0xE4, 0x9C, 0xE4, 0xDC, 0xE5, 0x1C, 0xE5, 0x5D, 0xE5, 0x9D, 0xE5, 0xDD, 0xE6, 0x1E, 0xE6, 0x5E, 0xE6, 0x9E, 0xE6, 0xDF, 0xE7, 0x1F, 0xE7, 0x5F, 0xE7, 0xA0, 0xE7, 0xE0, 0xE8, 0x20, 0xE8, 0x60, 0xE8, 0xA1, 0xE8, 0xE1, 0xE9, 0x21, 0xE9, 0x62, 0xE9, 0xA2, 0xE9, 0xE2, 0xEA, 0x23, 0xEA, 0x63, 0xEA, 0xA3, 0xEA, 0xE4, 0xEB, 0x24, 0xEB, 0x64, 0xEB, 0xA4, 0xEB, 0xE5, 0xEC, 0x25, 0xEC, 0x65, 0xEC, 0xA6, 0xEC, 0xE6, 0xED, 0x26, 0xED, 0x67, 0xED, 0xA7, 0xED, 0xE7, 0xEE, 0x28, 0xEE, 0x68, 0xEE, 0xA8, 0xEE, 0xE9, 0xEF, 0x29, 0xEF, 0x69, 0xEF, 0xA9, 0xEF, 0xEA, 0xF0, 0x2A, 0xF0, 0x6A, 0xF0, 0xAB, 0xF0, 0xEB, 0xF1, 0x2B, 0xF1, 0x6C, 0xF1, 0xAC, 0xF1, 0xEC, 0xF2, 0x2D, 0xF2, 0x6D, 0xF2, 0xAD, 0xF2, 0xEE, 0xF3, 0x2E, 0xF3, 0x6E, 0xF3, 0xAE, 0xF3, 0xEF, 0xF4, 0x2F, 0xF4, 0x6F, 0xF4, 0xB0, 0xF4, 0xF0, 0xF5, 0x30, 0xF5, 0x71, 0xF5, 0xB1, 0xF5, 0xF1, 0xF6, 0x32, 0xF6, 0x72, 0xF6, 0xB2, 0xF6, 0xF3, 0xF7, 0x33, 0xF7, 0x73, 0xF7, 0xB3, 0xF7, 0xF4, 0xF8, 0x34, 0xF8, 0x74, 0xF8, 0xB5, 0xF8, 0xF5, 0xF9, 0x35, 0xF9, 0x76, 0xF9, 0xB6, 0xF9, 0xF6, 0xFA, 0x37, 0xFA, 0x77, 0xFA, 0xB7, 0xFA, 0xF8, 0xFB, 0x38, 0xFB, 0x78, 0xFB, 0xB8, 0xFB, 0xF9, 0xFC, 0x39, 0xFC, 0x79, 0xFC, 0xBA, 0xFC, 0xFA, 0xFD, 0x3A, 0xFD, 0x7B, 0xFD, 0xBB, 0xFD, 0xFB, 0xFE, 0x3C, 0xFE, 0x7C, 0xFE, 0xBC, 0xFE, 0xFD, 0xFF, 0x3D, 0xFF, 0x7D, 0xFF, 0xBD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0xBF, 0x02, 0x00, 0x02, 0x40, 0x02, 0x80, 0x02, 0xC0, 0x03, 0x00, 0x03, 0x40, 0x03, 0x80, 0x03, 0xC0, 0x04, 0x00, 0x04, 0x40, 0x04, 0x80, 0x04, 0xC0, 0x05, 0x00, 0x05, 0x40, 0x05, 0x80, 0x05, 0xC0, 0x06, 0x01, 0x06, 0x41, 0x06, 0x81, 0x06, 0xC1, 0x07, 0x01, 0x07, 0x41, 0x07, 0x81, 0x07, 0xC1, 0x08, 0x01, 0x08, 0x41, 0x08, 0x81, 0x08, 0xC1, 0x09, 0x01, 0x09, 0x41, 0x09, 0x81, 0x09, 0xC1, 0x0A, 0x02, 0x0A, 0x42, 0x0A, 0x82, 0x0A, 0xC2, 0x0B, 0x02, 0x0B, 0x42, 0x0B, 0x82, 0x0B, 0xC2, 0x0C, 0x02, 0x0C, 0x42, 0x0C, 0x82, 0x0C, 0xC2, 0x0D, 0x02, 0x0D, 0x42, 0x0D, 0x82, 0x0D, 0xC2, 0x0E, 0x03, 0x0E, 0x43, 0x0E, 0x83, 0x0E, 0xC3, 0x0F, 0x03, 0x0F, 0x43, 0x0F, 0x83, 0x0F, 0xC3, 0x10, 0x03, 0x10, 0x43, 0x10, 0x83, 0x10, 0xC3, 0x11, 0x03, 0x11, 0x43, 0x11, 0x83, 0x11, 0xC3, 0x12, 0x04, 0x12, 0x44, 0x12, 0x84, 0x12, 0xC4, 0x13, 0x04, 0x13, 0x44, 0x13, 0x84, 0x13, 0xC4, 0x14, 0x04, 0x14, 0x44, 0x14, 0x84, 0x14, 0xC4, 0x15, 0x04, 0x15, 0x44, 0x15, 0x84, 0x15, 0xC4, 0x16, 0x05, 0x16, 0x45, 0x16, 0x85, 0x16, 0xC5, 0x17, 0x05, 0x17, 0x45, 0x17, 0x85, 0x17, 0xC5, 0x18, 0x05, 0x18, 0x45, 0x18, 0x85, 0x18, 0xC5, 0x19, 0x05, 0x19, 0x45, 0x19, 0x85, 0x19, 0xC5, 0x1A, 0x06, 0x1A, 0x46, 0x1A, 0x86, 0x1A, 0xC6, 0x1B, 0x06, 0x1B, 0x46, 0x1B, 0x86, 0x1B, 0xC6, 0x1C, 0x06, 0x1C, 0x46, 0x1C, 0x86, 0x1C, 0xC6, 0x1D, 0x06, 0x1D, 0x46, 0x1D, 0x86, 0x1D, 0xC6, 0x1E, 0x07, 0x1E, 0x47, 0x1E, 0x87, 0x1E, 0xC7, 0x1F, 0x07, 0x1F, 0x47, 0x1F, 0x87, 0x1F, 0xC7, 0x20, 0x07, 0x20, 0x47, 0x20, 0x87, 0x20, 0xC7, 0x21, 0x07, 0x21, 0x47, 0x21, 0x87, 0x21, 0xC7, 0x22, 0x08, 0x22, 0x48, 0x22, 0x88, 0x22, 0xC8, 0x23, 0x08, 0x23, 0x48, 0x23, 0x88, 0x23, 0xC8, 0x24, 0x08, 0x24, 0x48, 0x24, 0x88, 0x24, 0xC8, 0x25, 0x08, 0x25, 0x48, 0x25, 0x88, 0x25, 0xC8, 0x26, 0x09, 0x26, 0x49, 0x26, 0x89, 0x26, 0xC9, 0x27, 0x09, 0x27, 0x49, 0x27, 0x89, 0x27, 0xC9, 0x28, 0x09, 0x28, 0x49, 0x28, 0x89, 0x28, 0xC9, 0x29, 0x09, 0x29, 0x49, 0x29, 0x89, 0x29, 0xC9, 0x2A, 0x0A, 0x2A, 0x4A, 0x2A, 0x8A, 0x2A, 0xCA, 0x2B, 0x0A, 0x2B, 0x4A, 0x2B, 0x8A, 0x2B, 0xCA, 0x2C, 0x0A, 0x2C, 0x4A, 0x2C, 0x8A, 0x2C, 0xCA, 0x2D, 0x0A, 0x2D, 0x4A, 0x2D, 0x8A, 0x2D, 0xCA, 0x2E, 0x0B, 0x2E, 0x4B, 0x2E, 0x8B, 0x2E, 0xCB, 0x2F, 0x0B, 0x2F, 0x4B, 0x2F, 0x8B, 0x2F, 0xCB, 0x30, 0x0B, 0x30, 0x4B, 0x30, 0x8B, 0x30, 0xCB, 0x31, 0x0B, 0x31, 0x4B, 0x31, 0x8B, 0x31, 0xCB, 0x32, 0x0C, 0x32, 0x4C, 0x32, 0x8C, 0x32, 0xCC, 0x33, 0x0C, 0x33, 0x4C, 0x33, 0x8C, 0x33, 0xCC, 0x34, 0x0C, 0x34, 0x4C, 0x34, 0x8C, 0x34, 0xCC, 0x35, 0x0C, 0x35, 0x4C, 0x35, 0x8C, 0x35, 0xCC, 0x36, 0x0D, 0x36, 0x4D, 0x36, 0x8D, 0x36, 0xCD, 0x37, 0x0D, 0x37, 0x4D, 0x37, 0x8D, 0x37, 0xCD, 0x38, 0x0D, 0x38, 0x4D, 0x38, 0x8D, 0x38, 0xCD, 0x39, 0x0D, 0x39, 0x4D, 0x39, 0x8D, 0x39, 0xCD, 0x3A, 0x0E, 0x3A, 0x4E, 0x3A, 0x8E, 0x3A, 0xCE, 0x3B, 0x0E, 0x3B, 0x4E, 0x3B, 0x8E, 0x3B, 0xCE, 0x3C, 0x0E, 0x3C, 0x4E, 0x3C, 0x8E, 0x3C, 0xCE, 0x3D, 0x0E, 0x3D, 0x4E, 0x3D, 0x8E, 0x3D, 0xCE, 0x3E, 0x0F, 0x3E, 0x4F, 0x3E, 0x8F, 0x3E, 0xCF, 0x3F, 0x0F, 0x3F, 0x4F, 0x3F, 0x8F, 0x3F, 0xCF, 0x40, 0x0F, 0x40, 0x4F, 0x40, 0x8F, 0x40, 0xCF, 0x41, 0x0F, 0x41, 0x4F, 0x41, 0x8F, 0x41, 0xCF, 0x42, 0x10, 0x42, 0x50, 0x42, 0x90, 0x42, 0xD0, 0x43, 0x10, 0x43, 0x50, 0x43, 0x90, 0x43, 0xD0, 0x44, 0x10, 0x44, 0x50, 0x44, 0x90, 0x44, 0xD0, 0x45, 0x10, 0x45, 0x50, 0x45, 0x90, 0x45, 0xD0, 0x46, 0x11, 0x46, 0x51, 0x46, 0x91, 0x46, 0xD1, 0x47, 0x11, 0x47, 0x51, 0x47, 0x91, 0x47, 0xD1, 0x48, 0x11, 0x48, 0x51, 0x48, 0x91, 0x48, 0xD1, 0x49, 0x11, 0x49, 0x51, 0x49, 0x91, 0x49, 0xD1, 0x4A, 0x12, 0x4A, 0x52, 0x4A, 0x92, 0x4A, 0xD2, 0x4B, 0x12, 0x4B, 0x52, 0x4B, 0x92, 0x4B, 0xD2, 0x4C, 0x12, 0x4C, 0x52, 0x4C, 0x92, 0x4C, 0xD2, 0x4D, 0x12, 0x4D, 0x52, 0x4D, 0x92, 0x4D, 0xD2, 0x4E, 0x13, 0x4E, 0x53, 0x4E, 0x93, 0x4E, 0xD3, 0x4F, 0x13, 0x4F, 0x53, 0x4F, 0x93, 0x4F, 0xD3, 0x50, 0x13, 0x50, 0x53, 0x50, 0x93, 0x50, 0xD3, 0x51, 0x13, 0x51, 0x53, 0x51, 0x93, 0x51, 0xD3, 0x52, 0x14, 0x52, 0x54, 0x52, 0x94, 0x52, 0xD4, 0x53, 0x14, 0x53, 0x54, 0x53, 0x94, 0x53, 0xD4, 0x54, 0x14, 0x54, 0x54, 0x54, 0x94, 0x54, 0xD4, 0x55, 0x14, 0x55, 0x54, 0x55, 0x94, 0x55, 0xD4, 0x56, 0x15, 0x56, 0x55, 0x56, 0x95, 0x56, 0xD5, 0x57, 0x15, 0x57, 0x55, 0x57, 0x95, 0x57, 0xD5, 0x58, 0x15, 0x58, 0x55, 0x58, 0x95, 0x58, 0xD5, 0x59, 0x15, 0x59, 0x55, 0x59, 0x95, 0x59, 0xD5, 0x5A, 0x16, 0x5A, 0x56, 0x5A, 0x96, 0x5A, 0xD6, 0x5B, 0x16, 0x5B, 0x56, 0x5B, 0x96, 0x5B, 0xD6, 0x5C, 0x16, 0x5C, 0x56, 0x5C, 0x96, 0x5C, 0xD6, 0x5D, 0x16, 0x5D, 0x56, 0x5D, 0x96, 0x5D, 0xD6, 0x5E, 0x17, 0x5E, 0x57, 0x5E, 0x97, 0x5E, 0xD7, 0x5F, 0x17, 0x5F, 0x57, 0x5F, 0x97, 0x5F, 0xD7, 0x60, 0x17, 0x60, 0x57, 0x60, 0x97, 0x60, 0xD7, 0x61, 0x17, 0x61, 0x57, 0x61, 0x97, 0x61, 0xD7, 0x62, 0x18, 0x62, 0x58, 0x62, 0x98, 0x62, 0xD8, 0x63, 0x18, 0x63, 0x58, 0x63, 0x98, 0x63, 0xD8, 0x64, 0x18, 0x64, 0x58, 0x64, 0x98, 0x64, 0xD8, 0x65, 0x18, 0x65, 0x58, 0x65, 0x98, 0x65, 0xD8, 0x66, 0x19, 0x66, 0x59, 0x66, 0x99, 0x66, 0xD9, 0x67, 0x19, 0x67, 0x59, 0x67, 0x99, 0x67, 0xD9, 0x68, 0x19, 0x68, 0x59, 0x68, 0x99, 0x68, 0xD9, 0x69, 0x19, 0x69, 0x59, 0x69, 0x99, 0x69, 0xD9, 0x6A, 0x1A, 0x6A, 0x5A, 0x6A, 0x9A, 0x6A, 0xDA, 0x6B, 0x1A, 0x6B, 0x5A, 0x6B, 0x9A, 0x6B, 0xDA, 0x6C, 0x1A, 0x6C, 0x5A, 0x6C, 0x9A, 0x6C, 0xDA, 0x6D, 0x1A, 0x6D, 0x5A, 0x6D, 0x9A, 0x6D, 0xDA, 0x6E, 0x1B, 0x6E, 0x5B, 0x6E, 0x9B, 0x6E, 0xDB, 0x6F, 0x1B, 0x6F, 0x5B, 0x6F, 0x9B, 0x6F, 0xDB, 0x70, 0x1B, 0x70, 0x5B, 0x70, 0x9B, 0x70, 0xDB, 0x71, 0x1B, 0x71, 0x5B, 0x71, 0x9B, 0x71, 0xDB, 0x72, 0x1C, 0x72, 0x5C, 0x72, 0x9C, 0x72, 0xDC, 0x73, 0x1C, 0x73, 0x5C, 0x73, 0x9C, 0x73, 0xDC, 0x74, 0x1C, 0x74, 0x5C, 0x74, 0x9C, 0x74, 0xDC, 0x75, 0x1C, 0x75, 0x5C, 0x75, 0x9C, 0x75, 0xDC, 0x76, 0x1D, 0x76, 0x5D, 0x76, 0x9D, 0x76, 0xDD, 0x77, 0x1D, 0x77, 0x5D, 0x77, 0x9D, 0x77, 0xDD, 0x78, 0x1D, 0x78, 0x5D, 0x78, 0x9D, 0x78, 0xDD, 0x79, 0x1D, 0x79, 0x5D, 0x79, 0x9D, 0x79, 0xDD, 0x7A, 0x1E, 0x7A, 0x5E, 0x7A, 0x9E, 0x7A, 0xDE, 0x7B, 0x1E, 0x7B, 0x5E, 0x7B, 0x9E, 0x7B, 0xDE, 0x7C, 0x1E, 0x7C, 0x5E, 0x7C, 0x9E, 0x7C, 0xDE, 0x7D, 0x1E, 0x7D, 0x5E, 0x7D, 0x9E, 0x7D, 0xDE, 0x7E, 0x1F, 0x7E, 0x5F, 0x7E, 0x9F, 0x7E, 0xDF, 0x7F, 0x1F, 0x7F, 0x5F, 0x7F, 0x9F, 0x7F, 0xDF, 0x80, 0x1F, 0x80, 0x5F, 0x80, 0x9F, 0x80, 0xDF, 0x81, 0x1F, 0x81, 0x5F, 0x81, 0x9F, 0x81, 0xDF, 0x82, 0x20, 0x82, 0x60, 0x82, 0xA0, 0x82, 0xE0, 0x83, 0x20, 0x83, 0x60, 0x83, 0xA0, 0x83, 0xE0, 0x84, 0x20, 0x84, 0x60, 0x84, 0xA0, 0x84, 0xE0, 0x85, 0x20, 0x85, 0x60, 0x85, 0xA0, 0x85, 0xE0, 0x86, 0x21, 0x86, 0x61, 0x86, 0xA1, 0x86, 0xE1, 0x87, 0x21, 0x87, 0x61, 0x87, 0xA1, 0x87, 0xE1, 0x88, 0x21, 0x88, 0x61, 0x88, 0xA1, 0x88, 0xE1, 0x89, 0x21, 0x89, 0x61, 0x89, 0xA1, 0x89, 0xE1, 0x8A, 0x22, 0x8A, 0x62, 0x8A, 0xA2, 0x8A, 0xE2, 0x8B, 0x22, 0x8B, 0x62, 0x8B, 0xA2, 0x8B, 0xE2, 0x8C, 0x22, 0x8C, 0x62, 0x8C, 0xA2, 0x8C, 0xE2, 0x8D, 0x22, 0x8D, 0x62, 0x8D, 0xA2, 0x8D, 0xE2, 0x8E, 0x23, 0x8E, 0x63, 0x8E, 0xA3, 0x8E, 0xE3, 0x8F, 0x23, 0x8F, 0x63, 0x8F, 0xA3, 0x8F, 0xE3, 0x90, 0x23, 0x90, 0x63, 0x90, 0xA3, 0x90, 0xE3, 0x91, 0x23, 0x91, 0x63, 0x91, 0xA3, 0x91, 0xE3, 0x92, 0x24, 0x92, 0x64, 0x92, 0xA4, 0x92, 0xE4, 0x93, 0x24, 0x93, 0x64, 0x93, 0xA4, 0x93, 0xE4, 0x94, 0x24, 0x94, 0x64, 0x94, 0xA4, 0x94, 0xE4, 0x95, 0x24, 0x95, 0x64, 0x95, 0xA4, 0x95, 0xE4, 0x96, 0x25, 0x96, 0x65, 0x96, 0xA5, 0x96, 0xE5, 0x97, 0x25, 0x97, 0x65, 0x97, 0xA5, 0x97, 0xE5, 0x98, 0x25, 0x98, 0x65, 0x98, 0xA5, 0x98, 0xE5, 0x99, 0x25, 0x99, 0x65, 0x99, 0xA5, 0x99, 0xE5, 0x9A, 0x26, 0x9A, 0x66, 0x9A, 0xA6, 0x9A, 0xE6, 0x9B, 0x26, 0x9B, 0x66, 0x9B, 0xA6, 0x9B, 0xE6, 0x9C, 0x26, 0x9C, 0x66, 0x9C, 0xA6, 0x9C, 0xE6, 0x9D, 0x26, 0x9D, 0x66, 0x9D, 0xA6, 0x9D, 0xE6, 0x9E, 0x27, 0x9E, 0x67, 0x9E, 0xA7, 0x9E, 0xE7, 0x9F, 0x27, 0x9F, 0x67, 0x9F, 0xA7, 0x9F, 0xE7, 0xA0, 0x27, 0xA0, 0x67, 0xA0, 0xA7, 0xA0, 0xE7, 0xA1, 0x27, 0xA1, 0x67, 0xA1, 0xA7, 0xA1, 0xE7, 0xA2, 0x28, 0xA2, 0x68, 0xA2, 0xA8, 0xA2, 0xE8, 0xA3, 0x28, 0xA3, 0x68, 0xA3, 0xA8, 0xA3, 0xE8, 0xA4, 0x28, 0xA4, 0x68, 0xA4, 0xA8, 0xA4, 0xE8, 0xA5, 0x28, 0xA5, 0x68, 0xA5, 0xA8, 0xA5, 0xE8, 0xA6, 0x29, 0xA6, 0x69, 0xA6, 0xA9, 0xA6, 0xE9, 0xA7, 0x29, 0xA7, 0x69, 0xA7, 0xA9, 0xA7, 0xE9, 0xA8, 0x29, 0xA8, 0x69, 0xA8, 0xA9, 0xA8, 0xE9, 0xA9, 0x29, 0xA9, 0x69, 0xA9, 0xA9, 0xA9, 0xE9, 0xAA, 0x2A, 0xAA, 0x6A, 0xAA, 0xAA, 0xAA, 0xEA, 0xAB, 0x2A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0xEA, 0xAC, 0x2A, 0xAC, 0x6A, 0xAC, 0xAA, 0xAC, 0xEA, 0xAD, 0x2A, 0xAD, 0x6A, 0xAD, 0xAA, 0xAD, 0xEA, 0xAE, 0x2B, 0xAE, 0x6B, 0xAE, 0xAB, 0xAE, 0xEB, 0xAF, 0x2B, 0xAF, 0x6B, 0xAF, 0xAB, 0xAF, 0xEB, 0xB0, 0x2B, 0xB0, 0x6B, 0xB0, 0xAB, 0xB0, 0xEB, 0xB1, 0x2B, 0xB1, 0x6B, 0xB1, 0xAB, 0xB1, 0xEB, 0xB2, 0x2C, 0xB2, 0x6C, 0xB2, 0xAC, 0xB2, 0xEC, 0xB3, 0x2C, 0xB3, 0x6C, 0xB3, 0xAC, 0xB3, 0xEC, 0xB4, 0x2C, 0xB4, 0x6C, 0xB4, 0xAC, 0xB4, 0xEC, 0xB5, 0x2C, 0xB5, 0x6C, 0xB5, 0xAC, 0xB5, 0xEC, 0xB6, 0x2D, 0xB6, 0x6D, 0xB6, 0xAD, 0xB6, 0xED, 0xB7, 0x2D, 0xB7, 0x6D, 0xB7, 0xAD, 0xB7, 0xED, 0xB8, 0x2D, 0xB8, 0x6D, 0xB8, 0xAD, 0xB8, 0xED, 0xB9, 0x2D, 0xB9, 0x6D, 0xB9, 0xAD, 0xB9, 0xED, 0xBA, 0x2E, 0xBA, 0x6E, 0xBA, 0xAE, 0xBA, 0xEE, 0xBB, 0x2E, 0xBB, 0x6E, 0xBB, 0xAE, 0xBB, 0xEE, 0xBC, 0x2E, 0xBC, 0x6E, 0xBC, 0xAE, 0xBC, 0xEE, 0xBD, 0x2E, 0xBD, 0x6E, 0xBD, 0xAE, 0xBD, 0xEE, 0xBE, 0x2F, 0xBE, 0x6F, 0xBE, 0xAF, 0xBE, 0xEF, 0xBF, 0x2F, 0xBF, 0x6F, 0xBF, 0xAF, 0xBF, 0xEF, 0xC0, 0x2F, 0xC0, 0x6F, 0xC0, 0xAF, 0xC0, 0xEF, 0xC1, 0x2F, 0xC1, 0x6F, 0xC1, 0xAF, 0xC1, 0xEF, 0xC2, 0x30, 0xC2, 0x70, 0xC2, 0xB0, 0xC2, 0xF0, 0xC3, 0x30, 0xC3, 0x70, 0xC3, 0xB0, 0xC3, 0xF0, 0xC4, 0x30, 0xC4, 0x70, 0xC4, 0xB0, 0xC4, 0xF0, 0xC5, 0x30, 0xC5, 0x70, 0xC5, 0xB0, 0xC5, 0xF0, 0xC6, 0x31, 0xC6, 0x71, 0xC6, 0xB1, 0xC6, 0xF1, 0xC7, 0x31, 0xC7, 0x71, 0xC7, 0xB1, 0xC7, 0xF1, 0xC8, 0x31, 0xC8, 0x71, 0xC8, 0xB1, 0xC8, 0xF1, 0xC9, 0x31, 0xC9, 0x71, 0xC9, 0xB1, 0xC9, 0xF1, 0xCA, 0x32, 0xCA, 0x72, 0xCA, 0xB2, 0xCA, 0xF2, 0xCB, 0x32, 0xCB, 0x72, 0xCB, 0xB2, 0xCB, 0xF2, 0xCC, 0x32, 0xCC, 0x72, 0xCC, 0xB2, 0xCC, 0xF2, 0xCD, 0x32, 0xCD, 0x72, 0xCD, 0xB2, 0xCD, 0xF2, 0xCE, 0x33, 0xCE, 0x73, 0xCE, 0xB3, 0xCE, 0xF3, 0xCF, 0x33, 0xCF, 0x73, 0xCF, 0xB3, 0xCF, 0xF3, 0xD0, 0x33, 0xD0, 0x73, 0xD0, 0xB3, 0xD0, 0xF3, 0xD1, 0x33, 0xD1, 0x73, 0xD1, 0xB3, 0xD1, 0xF3, 0xD2, 0x34, 0xD2, 0x74, 0xD2, 0xB4, 0xD2, 0xF4, 0xD3, 0x34, 0xD3, 0x74, 0xD3, 0xB4, 0xD3, 0xF4, 0xD4, 0x34, 0xD4, 0x74, 0xD4, 0xB4, 0xD4, 0xF4, 0xD5, 0x34, 0xD5, 0x74, 0xD5, 0xB4, 0xD5, 0xF4, 0xD6, 0x35, 0xD6, 0x75, 0xD6, 0xB5, 0xD6, 0xF5, 0xD7, 0x35, 0xD7, 0x75, 0xD7, 0xB5, 0xD7, 0xF5, 0xD8, 0x35, 0xD8, 0x75, 0xD8, 0xB5, 0xD8, 0xF5, 0xD9, 0x35, 0xD9, 0x75, 0xD9, 0xB5, 0xD9, 0xF5, 0xDA, 0x36, 0xDA, 0x76, 0xDA, 0xB6, 0xDA, 0xF6, 0xDB, 0x36, 0xDB, 0x76, 0xDB, 0xB6, 0xDB, 0xF6, 0xDC, 0x36, 0xDC, 0x76, 0xDC, 0xB6, 0xDC, 0xF6, 0xDD, 0x36, 0xDD, 0x76, 0xDD, 0xB6, 0xDD, 0xF6, 0xDE, 0x37, 0xDE, 0x77, 0xDE, 0xB7, 0xDE, 0xF7, 0xDF, 0x37, 0xDF, 0x77, 0xDF, 0xB7, 0xDF, 0xF7, 0xE0, 0x37, 0xE0, 0x77, 0xE0, 0xB7, 0xE0, 0xF7, 0xE1, 0x37, 0xE1, 0x77, 0xE1, 0xB7, 0xE1, 0xF7, 0xE2, 0x38, 0xE2, 0x78, 0xE2, 0xB8, 0xE2, 0xF8, 0xE3, 0x38, 0xE3, 0x78, 0xE3, 0xB8, 0xE3, 0xF8, 0xE4, 0x38, 0xE4, 0x78, 0xE4, 0xB8, 0xE4, 0xF8, 0xE5, 0x38, 0xE5, 0x78, 0xE5, 0xB8, 0xE5, 0xF8, 0xE6, 0x39, 0xE6, 0x79, 0xE6, 0xB9, 0xE6, 0xF9, 0xE7, 0x39, 0xE7, 0x79, 0xE7, 0xB9, 0xE7, 0xF9, 0xE8, 0x39, 0xE8, 0x79, 0xE8, 0xB9, 0xE8, 0xF9, 0xE9, 0x39, 0xE9, 0x79, 0xE9, 0xB9, 0xE9, 0xF9, 0xEA, 0x3A, 0xEA, 0x7A, 0xEA, 0xBA, 0xEA, 0xFA, 0xEB, 0x3A, 0xEB, 0x7A, 0xEB, 0xBA, 0xEB, 0xFA, 0xEC, 0x3A, 0xEC, 0x7A, 0xEC, 0xBA, 0xEC, 0xFA, 0xED, 0x3A, 0xED, 0x7A, 0xED, 0xBA, 0xED, 0xFA, 0xEE, 0x3B, 0xEE, 0x7B, 0xEE, 0xBB, 0xEE, 0xFB, 0xEF, 0x3B, 0xEF, 0x7B, 0xEF, 0xBB, 0xEF, 0xFB, 0xF0, 0x3B, 0xF0, 0x7B, 0xF0, 0xBB, 0xF0, 0xFB, 0xF1, 0x3B, 0xF1, 0x7B, 0xF1, 0xBB, 0xF1, 0xFB, 0xF2, 0x3C, 0xF2, 0x7C, 0xF2, 0xBC, 0xF2, 0xFC, 0xF3, 0x3C, 0xF3, 0x7C, 0xF3, 0xBC, 0xF3, 0xFC, 0xF4, 0x3C, 0xF4, 0x7C, 0xF4, 0xBC, 0xF4, 0xFC, 0xF5, 0x3C, 0xF5, 0x7C, 0xF5, 0xBC, 0xF5, 0xFC, 0xF6, 0x3D, 0xF6, 0x7D, 0xF6, 0xBD, 0xF6, 0xFD, 0xF7, 0x3D, 0xF7, 0x7D, 0xF7, 0xBD, 0xF7, 0xFD, 0xF8, 0x3D, 0xF8, 0x7D, 0xF8, 0xBD, 0xF8, 0xFD, 0xF9, 0x3D, 0xF9, 0x7D, 0xF9, 0xBD, 0xF9, 0xFD, 0xFA, 0x3E, 0xFA, 0x7E, 0xFA, 0xBE, 0xFA, 0xFE, 0xFB, 0x3E, 0xFB, 0x7E, 0xFB, 0xBE, 0xFB, 0xFE, 0xFC, 0x3E, 0xFC, 0x7E, 0xFC, 0xBE, 0xFC, 0xFE, 0xFD, 0x3E, 0xFD, 0x7E, 0xFD, 0xBE, 0xFD, 0xFE, 0xFE, 0x3F, 0xFE, 0x7F, 0xFE, 0xBF, 0xFE, 0xFF, 0xFF, 0x3F, 0xFF, 0x7F, 0xFF, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0xBF, 0x02, 0x00, 0x02, 0x40, 0x02, 0x80, 0x02, 0xC0, 0x03, 0x00, 0x03, 0x40, 0x03, 0x80, 0x03, 0xC0, 0x04, 0x00, 0x04, 0x40, 0x04, 0x80, 0x04, 0xC0, 0x05, 0x00, 0x05, 0x40, 0x05, 0x80, 0x05, 0xC0, 0x06, 0x01, 0x06, 0x41, 0x06, 0x81, 0x06, 0xC1, 0x07, 0x01, 0x07, 0x41, 0x07, 0x81, 0x07, 0xC1, 0x08, 0x01, 0x08, 0x41, 0x08, 0x81, 0x08, 0xC1, 0x09, 0x01, 0x09, 0x41, 0x09, 0x81, 0x09, 0xC1, 0x0A, 0x02, 0x0A, 0x42, 0x0A, 0x82, 0x0A, 0xC2, 0x0B, 0x02, 0x0B, 0x42, 0x0B, 0x82, 0x0B, 0xC2, 0x0C, 0x02, 0x0C, 0x42, 0x0C, 0x82, 0x0C, 0xC2, 0x0D, 0x02, 0x0D, 0x42, 0x0D, 0x82, 0x0D, 0xC2, 0x0E, 0x03, 0x0E, 0x43, 0x0E, 0x83, 0x0E, 0xC3, 0x0F, 0x03, 0x0F, 0x43, 0x0F, 0x83, 0x0F, 0xC3, 0x10, 0x03, 0x10, 0x43, 0x10, 0x83, 0x10, 0xC3, 0x11, 0x03, 0x11, 0x43, 0x11, 0x83, 0x11, 0xC3, 0x12, 0x04, 0x12, 0x44, 0x12, 0x84, 0x12, 0xC4, 0x13, 0x04, 0x13, 0x44, 0x13, 0x84, 0x13, 0xC4, 0x14, 0x04, 0x14, 0x44, 0x14, 0x84, 0x14, 0xC4, 0x15, 0x04, 0x15, 0x44, 0x15, 0x84, 0x15, 0xC4, 0x16, 0x05, 0x16, 0x45, 0x16, 0x85, 0x16, 0xC5, 0x17, 0x05, 0x17, 0x45, 0x17, 0x85, 0x17, 0xC5, 0x18, 0x05, 0x18, 0x45, 0x18, 0x85, 0x18, 0xC5, 0x19, 0x05, 0x19, 0x45, 0x19, 0x85, 0x19, 0xC5, 0x1A, 0x06, 0x1A, 0x46, 0x1A, 0x86, 0x1A, 0xC6, 0x1B, 0x06, 0x1B, 0x46, 0x1B, 0x86, 0x1B, 0xC6, 0x1C, 0x06, 0x1C, 0x46, 0x1C, 0x86, 0x1C, 0xC6, 0x1D, 0x06, 0x1D, 0x46, 0x1D, 0x86, 0x1D, 0xC6, 0x1E, 0x07, 0x1E, 0x47, 0x1E, 0x87, 0x1E, 0xC7, 0x1F, 0x07, 0x1F, 0x47, 0x1F, 0x87, 0x1F, 0xC7, 0x20, 0x07, 0x20, 0x47, 0x20, 0x87, 0x20, 0xC7, 0x21, 0x07, 0x21, 0x47, 0x21, 0x87, 0x21, 0xC7, 0x22, 0x08, 0x22, 0x48, 0x22, 0x88, 0x22, 0xC8, 0x23, 0x08, 0x23, 0x48, 0x23, 0x88, 0x23, 0xC8, 0x24, 0x08, 0x24, 0x48, 0x24, 0x88, 0x24, 0xC8, 0x25, 0x08, 0x25, 0x48, 0x25, 0x88, 0x25, 0xC8, 0x26, 0x09, 0x26, 0x49, 0x26, 0x89, 0x26, 0xC9, 0x27, 0x09, 0x27, 0x49, 0x27, 0x89, 0x27, 0xC9, 0x28, 0x09, 0x28, 0x49, 0x28, 0x89, 0x28, 0xC9, 0x29, 0x09, 0x29, 0x49, 0x29, 0x89, 0x29, 0xC9, 0x2A, 0x0A, 0x2A, 0x4A, 0x2A, 0x8A, 0x2A, 0xCA, 0x2B, 0x0A, 0x2B, 0x4A, 0x2B, 0x8A, 0x2B, 0xCA, 0x2C, 0x0A, 0x2C, 0x4A, 0x2C, 0x8A, 0x2C, 0xCA, 0x2D, 0x0A, 0x2D, 0x4A, 0x2D, 0x8A, 0x2D, 0xCA, 0x2E, 0x0B, 0x2E, 0x4B, 0x2E, 0x8B, 0x2E, 0xCB, 0x2F, 0x0B, 0x2F, 0x4B, 0x2F, 0x8B, 0x2F, 0xCB, 0x30, 0x0B, 0x30, 0x4B, 0x30, 0x8B, 0x30, 0xCB, 0x31, 0x0B, 0x31, 0x4B, 0x31, 0x8B, 0x31, 0xCB, 0x32, 0x0C, 0x32, 0x4C, 0x32, 0x8C, 0x32, 0xCC, 0x33, 0x0C, 0x33, 0x4C, 0x33, 0x8C, 0x33, 0xCC, 0x34, 0x0C, 0x34, 0x4C, 0x34, 0x8C, 0x34, 0xCC, 0x35, 0x0C, 0x35, 0x4C, 0x35, 0x8C, 0x35, 0xCC, 0x36, 0x0D, 0x36, 0x4D, 0x36, 0x8D, 0x36, 0xCD, 0x37, 0x0D, 0x37, 0x4D, 0x37, 0x8D, 0x37, 0xCD, 0x38, 0x0D, 0x38, 0x4D, 0x38, 0x8D, 0x38, 0xCD, 0x39, 0x0D, 0x39, 0x4D, 0x39, 0x8D, 0x39, 0xCD, 0x3A, 0x0E, 0x3A, 0x4E, 0x3A, 0x8E, 0x3A, 0xCE, 0x3B, 0x0E, 0x3B, 0x4E, 0x3B, 0x8E, 0x3B, 0xCE, 0x3C, 0x0E, 0x3C, 0x4E, 0x3C, 0x8E, 0x3C, 0xCE, 0x3D, 0x0E, 0x3D, 0x4E, 0x3D, 0x8E, 0x3D, 0xCE, 0x3E, 0x0F, 0x3E, 0x4F, 0x3E, 0x8F, 0x3E, 0xCF, 0x3F, 0x0F, 0x3F, 0x4F, 0x3F, 0x8F, 0x3F, 0xCF, 0x40, 0x0F, 0x40, 0x4F, 0x40, 0x8F, 0x40, 0xCF, 0x41, 0x0F, 0x41, 0x4F, 0x41, 0x8F, 0x41, 0xCF, 0x42, 0x10, 0x42, 0x50, 0x42, 0x90, 0x42, 0xD0, 0x43, 0x10, 0x43, 0x50, 0x43, 0x90, 0x43, 0xD0, 0x44, 0x10, 0x44, 0x50, 0x44, 0x90, 0x44, 0xD0, 0x45, 0x10, 0x45, 0x50, 0x45, 0x90, 0x45, 0xD0, 0x46, 0x11, 0x46, 0x51, 0x46, 0x91, 0x46, 0xD1, 0x47, 0x11, 0x47, 0x51, 0x47, 0x91, 0x47, 0xD1, 0x48, 0x11, 0x48, 0x51, 0x48, 0x91, 0x48, 0xD1, 0x49, 0x11, 0x49, 0x51, 0x49, 0x91, 0x49, 0xD1, 0x4A, 0x12, 0x4A, 0x52, 0x4A, 0x92, 0x4A, 0xD2, 0x4B, 0x12, 0x4B, 0x52, 0x4B, 0x92, 0x4B, 0xD2, 0x4C, 0x12, 0x4C, 0x52, 0x4C, 0x92, 0x4C, 0xD2, 0x4D, 0x12, 0x4D, 0x52, 0x4D, 0x92, 0x4D, 0xD2, 0x4E, 0x13, 0x4E, 0x53, 0x4E, 0x93, 0x4E, 0xD3, 0x4F, 0x13, 0x4F, 0x53, 0x4F, 0x93, 0x4F, 0xD3, 0x50, 0x13, 0x50, 0x53, 0x50, 0x93, 0x50, 0xD3, 0x51, 0x13, 0x51, 0x53, 0x51, 0x93, 0x51, 0xD3, 0x52, 0x14, 0x52, 0x54, 0x52, 0x94, 0x52, 0xD4, 0x53, 0x14, 0x53, 0x54, 0x53, 0x94, 0x53, 0xD4, 0x54, 0x14, 0x54, 0x54, 0x54, 0x94, 0x54, 0xD4, 0x55, 0x14, 0x55, 0x54, 0x55, 0x94, 0x55, 0xD4, 0x56, 0x15, 0x56, 0x55, 0x56, 0x95, 0x56, 0xD5, 0x57, 0x15, 0x57, 0x55, 0x57, 0x95, 0x57, 0xD5, 0x58, 0x15, 0x58, 0x55, 0x58, 0x95, 0x58, 0xD5, 0x59, 0x15, 0x59, 0x55, 0x59, 0x95, 0x59, 0xD5, 0x5A, 0x16, 0x5A, 0x56, 0x5A, 0x96, 0x5A, 0xD6, 0x5B, 0x16, 0x5B, 0x56, 0x5B, 0x96, 0x5B, 0xD6, 0x5C, 0x16, 0x5C, 0x56, 0x5C, 0x96, 0x5C, 0xD6, 0x5D, 0x16, 0x5D, 0x56, 0x5D, 0x96, 0x5D, 0xD6, 0x5E, 0x17, 0x5E, 0x57, 0x5E, 0x97, 0x5E, 0xD7, 0x5F, 0x17, 0x5F, 0x57, 0x5F, 0x97, 0x5F, 0xD7, 0x60, 0x17, 0x60, 0x57, 0x60, 0x97, 0x60, 0xD7, 0x61, 0x17, 0x61, 0x57, 0x61, 0x97, 0x61, 0xD7, 0x62, 0x18, 0x62, 0x58, 0x62, 0x98, 0x62, 0xD8, 0x63, 0x18, 0x63, 0x58, 0x63, 0x98, 0x63, 0xD8, 0x64, 0x18, 0x64, 0x58, 0x64, 0x98, 0x64, 0xD8, 0x65, 0x18, 0x65, 0x58, 0x65, 0x98, 0x65, 0xD8, 0x66, 0x19, 0x66, 0x59, 0x66, 0x99, 0x66, 0xD9, 0x67, 0x19, 0x67, 0x59, 0x67, 0x99, 0x67, 0xD9, 0x68, 0x19, 0x68, 0x59, 0x68, 0x99, 0x68, 0xD9, 0x69, 0x19, 0x69, 0x59, 0x69, 0x99, 0x69, 0xD9, 0x6A, 0x1A, 0x6A, 0x5A, 0x6A, 0x9A, 0x6A, 0xDA, 0x6B, 0x1A, 0x6B, 0x5A, 0x6B, 0x9A, 0x6B, 0xDA, 0x6C, 0x1A, 0x6C, 0x5A, 0x6C, 0x9A, 0x6C, 0xDA, 0x6D, 0x1A, 0x6D, 0x5A, 0x6D, 0x9A, 0x6D, 0xDA, 0x6E, 0x1B, 0x6E, 0x5B, 0x6E, 0x9B, 0x6E, 0xDB, 0x6F, 0x1B, 0x6F, 0x5B, 0x6F, 0x9B, 0x6F, 0xDB, 0x70, 0x1B, 0x70, 0x5B, 0x70, 0x9B, 0x70, 0xDB, 0x71, 0x1B, 0x71, 0x5B, 0x71, 0x9B, 0x71, 0xDB, 0x72, 0x1C, 0x72, 0x5C, 0x72, 0x9C, 0x72, 0xDC, 0x73, 0x1C, 0x73, 0x5C, 0x73, 0x9C, 0x73, 0xDC, 0x74, 0x1C, 0x74, 0x5C, 0x74, 0x9C, 0x74, 0xDC, 0x75, 0x1C, 0x75, 0x5C, 0x75, 0x9C, 0x75, 0xDC, 0x76, 0x1D, 0x76, 0x5D, 0x76, 0x9D, 0x76, 0xDD, 0x77, 0x1D, 0x77, 0x5D, 0x77, 0x9D, 0x77, 0xDD, 0x78, 0x1D, 0x78, 0x5D, 0x78, 0x9D, 0x78, 0xDD, 0x79, 0x1D, 0x79, 0x5D, 0x79, 0x9D, 0x79, 0xDD, 0x7A, 0x1E, 0x7A, 0x5E, 0x7A, 0x9E, 0x7A, 0xDE, 0x7B, 0x1E, 0x7B, 0x5E, 0x7B, 0x9E, 0x7B, 0xDE, 0x7C, 0x1E, 0x7C, 0x5E, 0x7C, 0x9E, 0x7C, 0xDE, 0x7D, 0x1E, 0x7D, 0x5E, 0x7D, 0x9E, 0x7D, 0xDE, 0x7E, 0x1F, 0x7E, 0x5F, 0x7E, 0x9F, 0x7E, 0xDF, 0x7F, 0x1F, 0x7F, 0x5F, 0x7F, 0x9F, 0x7F, 0xDF, 0x80, 0x1F, 0x80, 0x5F, 0x80, 0x9F, 0x80, 0xDF, 0x81, 0x1F, 0x81, 0x5F, 0x81, 0x9F, 0x81, 0xDF, 0x82, 0x20, 0x82, 0x60, 0x82, 0xA0, 0x82, 0xE0, 0x83, 0x20, 0x83, 0x60, 0x83, 0xA0, 0x83, 0xE0, 0x84, 0x20, 0x84, 0x60, 0x84, 0xA0, 0x84, 0xE0, 0x85, 0x20, 0x85, 0x60, 0x85, 0xA0, 0x85, 0xE0, 0x86, 0x21, 0x86, 0x61, 0x86, 0xA1, 0x86, 0xE1, 0x87, 0x21, 0x87, 0x61, 0x87, 0xA1, 0x87, 0xE1, 0x88, 0x21, 0x88, 0x61, 0x88, 0xA1, 0x88, 0xE1, 0x89, 0x21, 0x89, 0x61, 0x89, 0xA1, 0x89, 0xE1, 0x8A, 0x22, 0x8A, 0x62, 0x8A, 0xA2, 0x8A, 0xE2, 0x8B, 0x22, 0x8B, 0x62, 0x8B, 0xA2, 0x8B, 0xE2, 0x8C, 0x22, 0x8C, 0x62, 0x8C, 0xA2, 0x8C, 0xE2, 0x8D, 0x22, 0x8D, 0x62, 0x8D, 0xA2, 0x8D, 0xE2, 0x8E, 0x23, 0x8E, 0x63, 0x8E, 0xA3, 0x8E, 0xE3, 0x8F, 0x23, 0x8F, 0x63, 0x8F, 0xA3, 0x8F, 0xE3, 0x90, 0x23, 0x90, 0x63, 0x90, 0xA3, 0x90, 0xE3, 0x91, 0x23, 0x91, 0x63, 0x91, 0xA3, 0x91, 0xE3, 0x92, 0x24, 0x92, 0x64, 0x92, 0xA4, 0x92, 0xE4, 0x93, 0x24, 0x93, 0x64, 0x93, 0xA4, 0x93, 0xE4, 0x94, 0x24, 0x94, 0x64, 0x94, 0xA4, 0x94, 0xE4, 0x95, 0x24, 0x95, 0x64, 0x95, 0xA4, 0x95, 0xE4, 0x96, 0x25, 0x96, 0x65, 0x96, 0xA5, 0x96, 0xE5, 0x97, 0x25, 0x97, 0x65, 0x97, 0xA5, 0x97, 0xE5, 0x98, 0x25, 0x98, 0x65, 0x98, 0xA5, 0x98, 0xE5, 0x99, 0x25, 0x99, 0x65, 0x99, 0xA5, 0x99, 0xE5, 0x9A, 0x26, 0x9A, 0x66, 0x9A, 0xA6, 0x9A, 0xE6, 0x9B, 0x26, 0x9B, 0x66, 0x9B, 0xA6, 0x9B, 0xE6, 0x9C, 0x26, 0x9C, 0x66, 0x9C, 0xA6, 0x9C, 0xE6, 0x9D, 0x26, 0x9D, 0x66, 0x9D, 0xA6, 0x9D, 0xE6, 0x9E, 0x27, 0x9E, 0x67, 0x9E, 0xA7, 0x9E, 0xE7, 0x9F, 0x27, 0x9F, 0x67, 0x9F, 0xA7, 0x9F, 0xE7, 0xA0, 0x27, 0xA0, 0x67, 0xA0, 0xA7, 0xA0, 0xE7, 0xA1, 0x27, 0xA1, 0x67, 0xA1, 0xA7, 0xA1, 0xE7, 0xA2, 0x28, 0xA2, 0x68, 0xA2, 0xA8, 0xA2, 0xE8, 0xA3, 0x28, 0xA3, 0x68, 0xA3, 0xA8, 0xA3, 0xE8, 0xA4, 0x28, 0xA4, 0x68, 0xA4, 0xA8, 0xA4, 0xE8, 0xA5, 0x28, 0xA5, 0x68, 0xA5, 0xA8, 0xA5, 0xE8, 0xA6, 0x29, 0xA6, 0x69, 0xA6, 0xA9, 0xA6, 0xE9, 0xA7, 0x29, 0xA7, 0x69, 0xA7, 0xA9, 0xA7, 0xE9, 0xA8, 0x29, 0xA8, 0x69, 0xA8, 0xA9, 0xA8, 0xE9, 0xA9, 0x29, 0xA9, 0x69, 0xA9, 0xA9, 0xA9, 0xE9, 0xAA, 0x2A, 0xAA, 0x6A, 0xAA, 0xAA, 0xAA, 0xEA, 0xAB, 0x2A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0xEA, 0xAC, 0x2A, 0xAC, 0x6A, 0xAC, 0xAA, 0xAC, 0xEA, 0xAD, 0x2A, 0xAD, 0x6A, 0xAD, 0xAA, 0xAD, 0xEA, 0xAE, 0x2B, 0xAE, 0x6B, 0xAE, 0xAB, 0xAE, 0xEB, 0xAF, 0x2B, 0xAF, 0x6B, 0xAF, 0xAB, 0xAF, 0xEB, 0xB0, 0x2B, 0xB0, 0x6B, 0xB0, 0xAB, 0xB0, 0xEB, 0xB1, 0x2B, 0xB1, 0x6B, 0xB1, 0xAB, 0xB1, 0xEB, 0xB2, 0x2C, 0xB2, 0x6C, 0xB2, 0xAC, 0xB2, 0xEC, 0xB3, 0x2C, 0xB3, 0x6C, 0xB3, 0xAC, 0xB3, 0xEC, 0xB4, 0x2C, 0xB4, 0x6C, 0xB4, 0xAC, 0xB4, 0xEC, 0xB5, 0x2C, 0xB5, 0x6C, 0xB5, 0xAC, 0xB5, 0xEC, 0xB6, 0x2D, 0xB6, 0x6D, 0xB6, 0xAD, 0xB6, 0xED, 0xB7, 0x2D, 0xB7, 0x6D, 0xB7, 0xAD, 0xB7, 0xED, 0xB8, 0x2D, 0xB8, 0x6D, 0xB8, 0xAD, 0xB8, 0xED, 0xB9, 0x2D, 0xB9, 0x6D, 0xB9, 0xAD, 0xB9, 0xED, 0xBA, 0x2E, 0xBA, 0x6E, 0xBA, 0xAE, 0xBA, 0xEE, 0xBB, 0x2E, 0xBB, 0x6E, 0xBB, 0xAE, 0xBB, 0xEE, 0xBC, 0x2E, 0xBC, 0x6E, 0xBC, 0xAE, 0xBC, 0xEE, 0xBD, 0x2E, 0xBD, 0x6E, 0xBD, 0xAE, 0xBD, 0xEE, 0xBE, 0x2F, 0xBE, 0x6F, 0xBE, 0xAF, 0xBE, 0xEF, 0xBF, 0x2F, 0xBF, 0x6F, 0xBF, 0xAF, 0xBF, 0xEF, 0xC0, 0x2F, 0xC0, 0x6F, 0xC0, 0xAF, 0xC0, 0xEF, 0xC1, 0x2F, 0xC1, 0x6F, 0xC1, 0xAF, 0xC1, 0xEF, 0xC2, 0x30, 0xC2, 0x70, 0xC2, 0xB0, 0xC2, 0xF0, 0xC3, 0x30, 0xC3, 0x70, 0xC3, 0xB0, 0xC3, 0xF0, 0xC4, 0x30, 0xC4, 0x70, 0xC4, 0xB0, 0xC4, 0xF0, 0xC5, 0x30, 0xC5, 0x70, 0xC5, 0xB0, 0xC5, 0xF0, 0xC6, 0x31, 0xC6, 0x71, 0xC6, 0xB1, 0xC6, 0xF1, 0xC7, 0x31, 0xC7, 0x71, 0xC7, 0xB1, 0xC7, 0xF1, 0xC8, 0x31, 0xC8, 0x71, 0xC8, 0xB1, 0xC8, 0xF1, 0xC9, 0x31, 0xC9, 0x71, 0xC9, 0xB1, 0xC9, 0xF1, 0xCA, 0x32, 0xCA, 0x72, 0xCA, 0xB2, 0xCA, 0xF2, 0xCB, 0x32, 0xCB, 0x72, 0xCB, 0xB2, 0xCB, 0xF2, 0xCC, 0x32, 0xCC, 0x72, 0xCC, 0xB2, 0xCC, 0xF2, 0xCD, 0x32, 0xCD, 0x72, 0xCD, 0xB2, 0xCD, 0xF2, 0xCE, 0x33, 0xCE, 0x73, 0xCE, 0xB3, 0xCE, 0xF3, 0xCF, 0x33, 0xCF, 0x73, 0xCF, 0xB3, 0xCF, 0xF3, 0xD0, 0x33, 0xD0, 0x73, 0xD0, 0xB3, 0xD0, 0xF3, 0xD1, 0x33, 0xD1, 0x73, 0xD1, 0xB3, 0xD1, 0xF3, 0xD2, 0x34, 0xD2, 0x74, 0xD2, 0xB4, 0xD2, 0xF4, 0xD3, 0x34, 0xD3, 0x74, 0xD3, 0xB4, 0xD3, 0xF4, 0xD4, 0x34, 0xD4, 0x74, 0xD4, 0xB4, 0xD4, 0xF4, 0xD5, 0x34, 0xD5, 0x74, 0xD5, 0xB4, 0xD5, 0xF4, 0xD6, 0x35, 0xD6, 0x75, 0xD6, 0xB5, 0xD6, 0xF5, 0xD7, 0x35, 0xD7, 0x75, 0xD7, 0xB5, 0xD7, 0xF5, 0xD8, 0x35, 0xD8, 0x75, 0xD8, 0xB5, 0xD8, 0xF5, 0xD9, 0x35, 0xD9, 0x75, 0xD9, 0xB5, 0xD9, 0xF5, 0xDA, 0x36, 0xDA, 0x76, 0xDA, 0xB6, 0xDA, 0xF6, 0xDB, 0x36, 0xDB, 0x76, 0xDB, 0xB6, 0xDB, 0xF6, 0xDC, 0x36, 0xDC, 0x76, 0xDC, 0xB6, 0xDC, 0xF6, 0xDD, 0x36, 0xDD, 0x76, 0xDD, 0xB6, 0xDD, 0xF6, 0xDE, 0x37, 0xDE, 0x77, 0xDE, 0xB7, 0xDE, 0xF7, 0xDF, 0x37, 0xDF, 0x77, 0xDF, 0xB7, 0xDF, 0xF7, 0xE0, 0x37, 0xE0, 0x77, 0xE0, 0xB7, 0xE0, 0xF7, 0xE1, 0x37, 0xE1, 0x77, 0xE1, 0xB7, 0xE1, 0xF7, 0xE2, 0x38, 0xE2, 0x78, 0xE2, 0xB8, 0xE2, 0xF8, 0xE3, 0x38, 0xE3, 0x78, 0xE3, 0xB8, 0xE3, 0xF8, 0xE4, 0x38, 0xE4, 0x78, 0xE4, 0xB8, 0xE4, 0xF8, 0xE5, 0x38, 0xE5, 0x78, 0xE5, 0xB8, 0xE5, 0xF8, 0xE6, 0x39, 0xE6, 0x79, 0xE6, 0xB9, 0xE6, 0xF9, 0xE7, 0x39, 0xE7, 0x79, 0xE7, 0xB9, 0xE7, 0xF9, 0xE8, 0x39, 0xE8, 0x79, 0xE8, 0xB9, 0xE8, 0xF9, 0xE9, 0x39, 0xE9, 0x79, 0xE9, 0xB9, 0xE9, 0xF9, 0xEA, 0x3A, 0xEA, 0x7A, 0xEA, 0xBA, 0xEA, 0xFA, 0xEB, 0x3A, 0xEB, 0x7A, 0xEB, 0xBA, 0xEB, 0xFA, 0xEC, 0x3A, 0xEC, 0x7A, 0xEC, 0xBA, 0xEC, 0xFA, 0xED, 0x3A, 0xED, 0x7A, 0xED, 0xBA, 0xED, 0xFA, 0xEE, 0x3B, 0xEE, 0x7B, 0xEE, 0xBB, 0xEE, 0xFB, 0xEF, 0x3B, 0xEF, 0x7B, 0xEF, 0xBB, 0xEF, 0xFB, 0xF0, 0x3B, 0xF0, 0x7B, 0xF0, 0xBB, 0xF0, 0xFB, 0xF1, 0x3B, 0xF1, 0x7B, 0xF1, 0xBB, 0xF1, 0xFB, 0xF2, 0x3C, 0xF2, 0x7C, 0xF2, 0xBC, 0xF2, 0xFC, 0xF3, 0x3C, 0xF3, 0x7C, 0xF3, 0xBC, 0xF3, 0xFC, 0xF4, 0x3C, 0xF4, 0x7C, 0xF4, 0xBC, 0xF4, 0xFC, 0xF5, 0x3C, 0xF5, 0x7C, 0xF5, 0xBC, 0xF5, 0xFC, 0xF6, 0x3D, 0xF6, 0x7D, 0xF6, 0xBD, 0xF6, 0xFD, 0xF7, 0x3D, 0xF7, 0x7D, 0xF7, 0xBD, 0xF7, 0xFD, 0xF8, 0x3D, 0xF8, 0x7D, 0xF8, 0xBD, 0xF8, 0xFD, 0xF9, 0x3D, 0xF9, 0x7D, 0xF9, 0xBD, 0xF9, 0xFD, 0xFA, 0x3E, 0xFA, 0x7E, 0xFA, 0xBE, 0xFA, 0xFE, 0xFB, 0x3E, 0xFB, 0x7E, 0xFB, 0xBE, 0xFB, 0xFE, 0xFC, 0x3E, 0xFC, 0x7E, 0xFC, 0xBE, 0xFC, 0xFE, 0xFD, 0x3E, 0xFD, 0x7E, 0xFD, 0xBE, 0xFD, 0xFE, 0xFE, 0x3F, 0xFE, 0x7F, 0xFE, 0xBF, 0xFE, 0xFF, 0xFF, 0x3F, 0xFF, 0x7F, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x51, 0x9F, 0x00, 0x00, 0x45, 0x7C, 0xFF, 0xFF, 0x32, 0x23, 0x00, 0x00, 0x5B, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x74, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x39, 0xF1, 0x68, 0x64, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0xA4, 0x5D, 0x8C, 0xFF, 0xFF, 0x00, 0x00, 0x6A, 0x33, 0x59, 0x71, 0xFF, 0xFF, 0x00, 0x00, 0x91, 0x93, 0x51, 0x93, 0xFF, 0xFF, 0x00, 0x00, 0x9C, 0xDC, 0x51, 0xD1, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x57, 0x4F, 0xBD, 0xFF, 0xFF, 0x00, 0x00, 0xB3, 0xE7, 0x4A, 0xC1, 0xFF, 0xFF, 0x14, 0x1E, 0xF4, 0x1D, 0x3E, 0x30, 0xFC, 0x39, 0x00, 0x00, 0xFF, 0xFF, 0x48, 0xA2, 0xDB, 0xDE, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0xBE, 0xC5, 0xF1, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0xEE, 0xB6, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0x7C, 0x2A, 0xA8, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0xA4, 0x9C, 0xAA, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0xFC, 0xFF, 0xFF, 0x6A, 0x13, 0x00, 0x00, 0x38, 0xEE, 0xFF, 0xFF, 0x4A, 0x46, 0x00, 0x00, 0x54, 0xA2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0x40, 0x73, 0x15, 0xFF, 0xFF, 0x00, 0x00, 0x54, 0x53, 0x63, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x64, 0x07, 0x5A, 0x8C, 0xFF, 0xFF, 0x00, 0x00, 0x8F, 0x43, 0x53, 0x6E, 0xFF, 0xFF, 0x00, 0x00, 0x9B, 0xCD, 0x53, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x9B, 0x51, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0x2B, 0x4C, 0x46, 0xFF, 0xFF, 0x1A, 0x9C, 0xFA, 0xF2, 0x3A, 0x9C, 0xED, 0x17, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x23, 0xCF, 0x41, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0xFD, 0xBA, 0x83, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0xA1, 0xAB, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0xF3, 0x9D, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x8A, 0x91, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0xEB, 0xFF, 0xFF, 0x78, 0xD2, 0x00, 0x00, 0x31, 0x77, 0xFF, 0xFF, 0x54, 0x67, 0x00, 0x00, 0x54, 0x67, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x71, 0xC9, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0xF1, 0x7E, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0x44, 0xCA, 0x72, 0x37, 0xFF, 0xFF, 0x00, 0x00, 0x61, 0xDB, 0x61, 0xDB, 0xFF, 0xFF, 0x10, 0x42, 0x8A, 0xEB, 0x50, 0x42, 0xFF, 0xFF, 0x00, 0x00, 0x9A, 0x56, 0x56, 0x5E, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0xE0, 0x53, 0xB6, 0xFF, 0xFF, 0x00, 0x00, 0xCD, 0x10, 0x50, 0x85, 0xFF, 0xFF, 0x1B, 0xAC, 0xFF, 0xFF, 0x40, 0x00, 0xDC, 0x3D, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0x4C, 0xC0, 0x5F, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xE0, 0xAD, 0xAF, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0x7F, 0x9D, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0x95, 0x8F, 0x32, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x6F, 0x82, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0x69, 0xFF, 0xFF, 0x81, 0x38, 0x00, 0x00, 0x2F, 0x3D, 0xFF, 0xFF, 0x59, 0xFE, 0x00, 0x00, 0x56, 0xA3, 0xFF, 0xFF, 0x4C, 0x5B, 0x04, 0x79, 0x64, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x05, 0xD0, 0x85, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x39, 0x78, 0x7E, 0x44, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x6D, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x74, 0x5D, 0x60, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0xD5, 0x58, 0xD6, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0x2C, 0x56, 0x26, 0xFF, 0xFF, 0x00, 0x00, 0xDD, 0x7D, 0x52, 0x1A, 0xF5, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0x3A, 0xCB, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x21, 0xB1, 0xBE, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x94, 0x9D, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x41, 0x8C, 0x5F, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0x0B, 0x7F, 0xF4, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0xA0, 0x75, 0xED, 0x00, 0x00, 0xFF, 0xFF, 0x9A, 0xCF, 0xFF, 0xFF, 0x8C, 0xC4, 0x00, 0x00, 0x2B, 0x2C, 0xFF, 0xFF, 0x77, 0x04, 0x00, 0x00, 0x49, 0xA4, 0xFF, 0xFF, 0x60, 0x00, 0x01, 0x48, 0x61, 0x48, 0xFF, 0xFF, 0x1A, 0xB3, 0x00, 0x00, 0x84, 0x8A, 0xFF, 0xFF, 0x20, 0x00, 0x32, 0x6F, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x53, 0x09, 0x7F, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0x6F, 0x83, 0x6E, 0x34, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0xF0, 0x59, 0xDE, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0x85, 0x58, 0xFE, 0xFF, 0xFF, 0x20, 0x00, 0xF7, 0x65, 0x41, 0x16, 0xDB, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x68, 0xB6, 0x6C, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x18, 0x9D, 0xF4, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0xBE, 0x88, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0x38, 0x7B, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0x3C, 0x6F, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xE5, 0x67, 0x6F, 0x00, 0x73, 0xFF, 0xFF, 0xA0, 0x73, 0xFF, 0xFF, 0x95, 0x33, 0x00, 0x00, 0x28, 0x94, 0xFF, 0xFF, 0x88, 0x1F, 0x00, 0x00, 0x40, 0x23, 0xFF, 0xFF, 0x6E, 0xCD, 0x00, 0x00, 0x60, 0x97, 0xFF, 0xFF, 0x5D, 0xBB, 0x11, 0x16, 0x71, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0x09, 0x43, 0x96, 0xA4, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x8E, 0xA0, 0xFF, 0xFF, 0x00, 0x00, 0x6C, 0xEB, 0x80, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x92, 0x3A, 0x68, 0x60, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0xEE, 0x5C, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x79, 0xBF, 0xBE, 0xD5, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x7E, 0x9C, 0x1B, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xA5, 0x87, 0x98, 0x06, 0x5B, 0xFF, 0xFF, 0xA1, 0xBB, 0x77, 0x06, 0x03, 0xE0, 0xFF, 0xFF, 0xA3, 0xDF, 0x6C, 0x24, 0x04, 0xDE, 0xFF, 0xFF, 0xA4, 0xDE, 0x60, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0xD5, 0x60, 0x00, 0x0F, 0x40, 0xFF, 0xFF, 0xA2, 0xA5, 0xFF, 0xFF, 0x9D, 0xBB, 0x00, 0x00, 0x26, 0x15, 0xFF, 0xFF, 0x94, 0x08, 0x00, 0x00, 0x3E, 0x25, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x5F, 0x37, 0xFF, 0xFF, 0x73, 0x5D, 0x00, 0x00, 0x74, 0x4C, 0xFF, 0xFF, 0x33, 0x30, 0x00, 0x00, 0x93, 0x30, 0xFF, 0xFF, 0x00, 0x28, 0x24, 0x8E, 0x9F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0x70, 0x95, 0x9A, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x84, 0x4C, 0xFF, 0xFF, 0x00, 0x00, 0xA6, 0x5B, 0x60, 0x00, 0xD7, 0xD5, 0x00, 0x00, 0xFF, 0xFF, 0x9A, 0x52, 0xAA, 0x73, 0x2C, 0x54, 0xFF, 0xFF, 0xA0, 0x55, 0x7F, 0xFE, 0x09, 0xFF, 0xFF, 0xFF, 0xA9, 0xFE, 0x71, 0x94, 0x0B, 0x03, 0xFF, 0xFF, 0xAB, 0x03, 0x60, 0x00, 0x01, 0xE5, 0xFF, 0xFF, 0xAB, 0xEC, 0x60, 0x00, 0x14, 0x9C, 0xFF, 0xFF, 0xA7, 0x98, 0x5F, 0x30, 0x20, 0x00, 0xFF, 0xFF, 0xA4, 0x3A, 0x60, 0x00, 0x2A, 0x94, 0xFF, 0xFF, 0xA0, 0x3E, 0xFF, 0xFF, 0xA3, 0x28, 0x00, 0x00, 0x26, 0x49, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x3A, 0x9F, 0xFF, 0xFF, 0x9C, 0x34, 0x00, 0x00, 0x52, 0xDF, 0xFF, 0xFF, 0x89, 0xC8, 0x00, 0x00, 0x71, 0x5F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x85, 0xA4, 0xFF, 0xFF, 0x4A, 0x4B, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0xEA, 0xAE, 0x95, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0x32, 0xA3, 0x56, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0x64, 0x94, 0xE9, 0x9F, 0xFF, 0x15, 0x8F, 0xFF, 0xFF, 0xB2, 0xEF, 0x6A, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB7, 0xBF, 0x60, 0x00, 0x0A, 0xB7, 0xFF, 0xFF, 0xB3, 0xC5, 0x4B, 0x05, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0xC5, 0x41, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0xA0, 0x3C, 0x25, 0x00, 0x00, 0xFF, 0xFF, 0xAF, 0xFF, 0x36, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0xF2, 0x31, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0xAD, 0xED, 0xFF, 0xFF, 0xAA, 0xD1, 0x00, 0x00, 0x23, 0x86, 0xFF, 0xFF, 0xA9, 0x79, 0x00, 0x00, 0x39, 0x20, 0xFF, 0xFF, 0xA5, 0xBD, 0x00, 0x00, 0x52, 0x8B, 0xFF, 0xFF, 0xA2, 0x21, 0x00, 0x00, 0x6C, 0x73, 0xFF, 0xFF, 0xA0, 0xF3, 0x00, 0x00, 0x80, 0xF3, 0xFF, 0xFF, 0xA3, 0x42, 0x10, 0x52, 0x90, 0x51, 0xFF, 0xFF, 0x91, 0xD8, 0x00, 0x00, 0xAA, 0x5F, 0xFF, 0xFF, 0x93, 0x53, 0x1D, 0x20, 0xBD, 0x1F, 0x3B, 0xB5, 0x00, 0x00, 0xCE, 0x2E, 0xFA, 0xA7, 0x3C, 0x42, 0x00, 0x00, 0xFF, 0xFF, 0xCA, 0x44, 0x30, 0xB6, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0x5A, 0x2A, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0xBB, 0x6B, 0x23, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x6F, 0x1E, 0x27, 0x00, 0x00, 0xFF, 0xFF, 0xB6, 0x07, 0x1A, 0x12, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0xF8, 0x15, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0x35, 0x12, 0x5A, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0xA2, 0xFF, 0xFF, 0xB1, 0x8F, 0x00, 0x00, 0x21, 0x31, 0xFF, 0xFF, 0xB3, 0xD2, 0x00, 0x00, 0x37, 0xD8, 0xFF, 0xFF, 0xBA, 0x70, 0x05, 0x62, 0x45, 0x61, 0xFF, 0xFF, 0xBA, 0xB1, 0x00, 0x00, 0x64, 0xD3, 0xFF, 0xFF, 0xC5, 0xE2, 0x00, 0x00, 0x76, 0x62, 0xFF, 0xFF, 0xDD, 0xAE, 0x00, 0x00, 0x80, 0xC4, 0xF9, 0xC7, 0xFF, 0xFF, 0x24, 0x89, 0x90, 0xCB, 0x8A, 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0xB3, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0xCF, 0xB6, 0xFA, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0xC3, 0x42, 0x02, 0xFA, 0x1E, 0xB0, 0xFF, 0xFF, 0xBF, 0xF0, 0x00, 0x34, 0x0B, 0xBE, 0xFF, 0xFF, 0xBE, 0x95, 0x00, 0x00, 0x06, 0xA8, 0xFF, 0xFF, 0xBB, 0xBA, 0x00, 0x00, 0x04, 0x5B, 0xFF, 0xFF, 0xB9, 0x1E, 0x00, 0x00, 0x03, 0x25, 0xFF, 0xFF, 0xB6, 0xD1, 0x00, 0x00, 0x03, 0x1F, 0xFF, 0xFF, 0xB4, 0xBB, 0x00, 0x00, 0x03, 0x8D, 0xFF, 0xFF, 0xB2, 0xD1, 0xFF, 0xFF, 0xB8, 0xA3, 0x00, 0x00, 0x1D, 0xE4, 0xFF, 0xFF, 0xBE, 0x15, 0x00, 0x00, 0x33, 0x21, 0xFF, 0xFF, 0xC5, 0x34, 0x00, 0x00, 0x44, 0x0B, 0xFF, 0xFF, 0xCF, 0x7E, 0x00, 0x00, 0x57, 0x8D, 0xFF, 0xFF, 0xE1, 0x4A, 0x01, 0x4B, 0x64, 0x8C, 0xF8, 0x1D, 0xFF, 0xFF, 0x18, 0x1E, 0x73, 0xB3, 0xBA, 0xCB, 0xFF, 0xFF, 0x17, 0x2A, 0x97, 0x29, 0x4C, 0x24, 0xFF, 0xFF, 0x1E, 0xC2, 0x9E, 0xC2, 0x1B, 0x98, 0xFF, 0xFF, 0x4C, 0x6C, 0x5B, 0x98, 0x0F, 0x8B, 0x96, 0xC5, 0xFF, 0xFF, 0xAF, 0x8A, 0x00, 0x00, 0x4F, 0xCE, 0xFF, 0xFF, 0xB8, 0x7B, 0x07, 0xFE, 0x40, 0x00, 0xFF, 0xFF, 0xB6, 0x1D, 0x00, 0x00, 0x2C, 0x34, 0xFF, 0xFF, 0xB6, 0x94, 0x00, 0x00, 0x22, 0x28, 0xFF, 0xFF, 0xB5, 0x35, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0xB3, 0x3C, 0x03, 0x7D, 0x20, 0x00, 0xFF, 0xFF, 0xB0, 0xFC, 0x07, 0x7A, 0x1F, 0xFA, 0xFF, 0xFF, 0xAE, 0xB1, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x16, 0x0E, 0xFF, 0xFF, 0xC4, 0xFA, 0x00, 0x00, 0x30, 0xC2, 0xFF, 0xFF, 0xCF, 0x89, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0xDF, 0xFF, 0x00, 0x00, 0x48, 0xB1, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xCF, 0x50, 0xCE, 0xD0, 0x84, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0x9E, 0x7C, 0xE3, 0xFF, 0xFF, 0x00, 0x00, 0x95, 0x53, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0xD6, 0x11, 0x8C, 0xFF, 0xFF, 0x42, 0x38, 0x51, 0x8C, 0x00, 0x00, 0xC9, 0x39, 0xFF, 0xFF, 0x9B, 0xC3, 0x0A, 0x98, 0x82, 0xF4, 0xFF, 0xFF, 0xAA, 0x98, 0x0D, 0xEA, 0x60, 0xA2, 0xFF, 0xFF, 0xAD, 0xE9, 0x0D, 0xFA, 0x53, 0x8C, 0xFF, 0xFF, 0xAD, 0xFA, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0xAF, 0x0E, 0x0C, 0x6A, 0x3F, 0x91, 0xFF, 0xFF, 0xAC, 0x69, 0x0B, 0xCD, 0x3A, 0x01, 0xFF, 0xFF, 0xAB, 0xCD, 0x0B, 0x46, 0x35, 0x75, 0xFF, 0xFF, 0xAB, 0x45, 0xFF, 0xFF, 0xC6, 0xE1, 0x06, 0xE2, 0x0B, 0x44, 0xFF, 0xFF, 0xCF, 0x2B, 0x00, 0x00, 0x2C, 0xDA, 0xFF, 0xFF, 0xDD, 0xE2, 0x00, 0x00, 0x35, 0x2D, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x3A, 0xE4, 0xDF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x5A, 0x24, 0xA9, 0xE3, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xA4, 0x53, 0x46, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0xBC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x63, 0xF7, 0x0D, 0xBC, 0xFF, 0xFF, 0x3D, 0x71, 0x4D, 0xBC, 0x00, 0x00, 0xFA, 0xA8, 0xE5, 0xAB, 0x7F, 0x71, 0x00, 0x00, 0xAE, 0xED, 0xFF, 0xFF, 0x99, 0xB7, 0x02, 0x5D, 0x86, 0x9C, 0xFF, 0xFF, 0xA2, 0x5C, 0x05, 0x9E, 0x70, 0x36, 0xFF, 0xFF, 0xA5, 0x9D, 0x06, 0xB6, 0x5F, 0x28, 0xFF, 0xFF, 0xA6, 0xB5, 0x06, 0xDD, 0x55, 0x73, 0xFF, 0xFF, 0xA6, 0xDC, 0x06, 0xC3, 0x4D, 0xE9, 0xFF, 0xFF, 0xA6, 0xC2, 0x00, 0x00, 0x42, 0xAF, 0xFF, 0xFF, 0xA7, 0x66, 0xFF, 0xFF, 0xCF, 0x5A, 0x00, 0xE5, 0x0F, 0x5B, 0xFF, 0xFF, 0xDC, 0x11, 0x00, 0x00, 0x23, 0x4B, 0xFF, 0xFF, 0xF7, 0xDA, 0x00, 0x00, 0x25, 0x2A, 0xED, 0xA1, 0xFF, 0xFF, 0x00, 0x00, 0x37, 0x2B, 0xC1, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x5D, 0x8F, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x76, 0xEE, 0x20, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x68, 0xEA, 0x11, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x51, 0xFF, 0x0A, 0x10, 0xFF, 0xFF, 0x3A, 0x89, 0x4A, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0xAA, 0x3F, 0x7E, 0x00, 0x00, 0xD6, 0x5E, 0xF8, 0x83, 0x82, 0xBA, 0x1A, 0xA4, 0xB3, 0x89, 0xFF, 0xFF, 0x8B, 0xD2, 0x00, 0x00, 0x90, 0x34, 0xFF, 0xFF, 0x98, 0x93, 0x00, 0x00, 0x7B, 0xFE, 0xFF, 0xFF, 0x9C, 0xEE, 0x00, 0x00, 0x6D, 0x9E, 0xFF, 0xFF, 0x9E, 0xC5, 0x00, 0x00, 0x62, 0xD4, 0xFF, 0xFF, 0x9F, 0xEB, 0x00, 0x00, 0x5B, 0x50, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xDB, 0xDF, 0x00, 0x00, 0x0D, 0xD9, 0xFF, 0xFF, 0xF2, 0xF7, 0x00, 0x00, 0x14, 0xBC, 0xF5, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0xB8, 0xD4, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0xEC, 0xA1, 0x2F, 0xFF, 0xFF, 0x00, 0x00, 0x65, 0x84, 0x61, 0xF0, 0xFF, 0xFF, 0x18, 0xE7, 0x58, 0xE7, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0x53, 0x0C, 0x70, 0xFF, 0xFF, 0x22, 0x77, 0x4C, 0x70, 0x06, 0x40, 0xFF, 0xFF, 0x37, 0x65, 0x46, 0x40, 0x14, 0x23, 0xFF, 0xFF, 0x8A, 0x2E, 0x34, 0x23, 0x00, 0x00, 0xFB, 0xBE, 0xE3, 0x96, 0x60, 0x3B, 0x00, 0x00, 0xCF, 0x92, 0xFB, 0x51, 0x79, 0xBD, 0x05, 0x9A, 0xB3, 0x17, 0xFF, 0xFF, 0x85, 0x99, 0x00, 0x00, 0x9C, 0x33, 0xFF, 0xFF, 0x8D, 0x9A, 0x00, 0x00, 0x8B, 0x2E, 0xFF, 0xFF, 0x91, 0xC8, 0x00, 0x00, 0x7E, 0x4D, 0xFF, 0xFF, 0x94, 0x79, 0x00, 0x00, 0x74, 0x23, 0xFF, 0xFF, 0x96, 0xDB, 0xFF, 0xFF, 0xED, 0xC0, 0x00, 0x00, 0x0B, 0x4A, 0xFD, 0x2C, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0xFD, 0xDF, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0x23, 0xFD, 0xBB, 0xA0, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0xB0, 0x7F, 0x0E, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0xA1, 0x24, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x56, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x55, 0xB3, 0x07, 0x4F, 0xFF, 0xFF, 0x24, 0x38, 0x47, 0x4E, 0x02, 0x91, 0xFF, 0xFF, 0x34, 0x38, 0x42, 0x91, 0x20, 0x00, 0xFF, 0xFF, 0x6C, 0xFF, 0x25, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0xA2, 0x35, 0x86, 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0xC6, 0x5A, 0x9D, 0x00, 0x00, 0xD2, 0xCC, 0xFC, 0xB4, 0x6D, 0x54, 0x00, 0x00, 0xBA, 0x64, 0xFF, 0xFF, 0x78, 0x99, 0x01, 0x0E, 0xA8, 0x55, 0xFF, 0xFF, 0x81, 0x0E, 0x00, 0x00, 0x99, 0x17, 0xFF, 0xFF, 0x86, 0x68, 0x00, 0x00, 0x8D, 0x93, 0xFF, 0xFF, 0x89, 0x96, 0xFF, 0xFF, 0xFD, 0xAB, 0x00, 0x00, 0x03, 0x84, 0xEE, 0xAC, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x92, 0xCC, 0x59, 0xFF, 0xFF, 0x00, 0x00, 0x29, 0x4A, 0x9E, 0x19, 0xFF, 0xFF, 0x04, 0x1F, 0x44, 0x1F, 0x59, 0xF6, 0xFF, 0xFF, 0x07, 0x87, 0x47, 0x87, 0x13, 0x82, 0xFF, 0xFF, 0x00, 0x00, 0x53, 0x82, 0x08, 0xB8, 0xFF, 0xFF, 0x18, 0x07, 0x48, 0xB8, 0x02, 0xCB, 0xFF, 0xFF, 0x23, 0x03, 0x42, 0xCB, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0x3B, 0x40, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x38, 0x4F, 0x0D, 0xE5, 0xFF, 0xFF, 0x9A, 0x1D, 0x2D, 0xE5, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0x3B, 0x2F, 0xC9, 0x00, 0x00, 0xF0, 0xB3, 0xF4, 0x83, 0x4E, 0xFC, 0x00, 0x00, 0xD8, 0x56, 0xFD, 0xBF, 0x5F, 0xAD, 0x00, 0x00, 0xC5, 0x15, 0xFF, 0xF6, 0x68, 0xC0, 0x00, 0x00, 0xB4, 0xFA, 0xFF, 0xFF, 0x71, 0x6D, 0x00, 0x00, 0xA7, 0x60, 0xFF, 0xFF, 0x78, 0xB2, 0xFF, 0xFF, 0x74, 0xDA, 0x00, 0x00, 0x23, 0xD1, 0xFF, 0xFF, 0x4A, 0x36, 0x00, 0x00, 0x4A, 0x36, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x63, 0x44, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0xED, 0x70, 0x70, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0xD8, 0x61, 0x2F, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x56, 0x05, 0xFF, 0xFF, 0x0D, 0x01, 0x88, 0x68, 0x4D, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9A, 0x33, 0x51, 0xAB, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x43, 0x4F, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0xB3, 0xC9, 0x4A, 0x43, 0xFF, 0xFF, 0x13, 0xF4, 0xF3, 0xF3, 0x3D, 0xA5, 0xFC, 0x55, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x19, 0xDB, 0xDD, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0x0B, 0xC5, 0xD1, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0x69, 0xB6, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0xD4, 0xA8, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x8F, 0x9C, 0xB5, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0x02, 0xFF, 0xFF, 0x7F, 0x71, 0x00, 0x00, 0x1C, 0x96, 0xFF, 0xFF, 0x4D, 0xE5, 0x00, 0x00, 0x4E, 0x27, 0xFF, 0xFF, 0x36, 0x1B, 0x00, 0x00, 0x5F, 0x93, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x43, 0x64, 0x6B, 0x35, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x44, 0x5B, 0xBE, 0xFF, 0xFF, 0x15, 0x0D, 0x88, 0x47, 0x4A, 0xAA, 0xFF, 0xFF, 0x00, 0x00, 0x99, 0x39, 0x54, 0x8A, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x20, 0x50, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0xB7, 0xD7, 0x4C, 0x37, 0xFF, 0xFF, 0x23, 0xCF, 0xFE, 0xB3, 0x32, 0xE0, 0xED, 0x21, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x59, 0xCE, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0xDB, 0xBA, 0x6F, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xBF, 0xAB, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x2A, 0x9C, 0xAD, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0xBF, 0x91, 0xC8, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x06, 0xFF, 0xFF, 0x86, 0x40, 0x00, 0x00, 0x1A, 0x08, 0xFF, 0xFF, 0x6C, 0xC3, 0x00, 0x00, 0x3E, 0x1C, 0xFF, 0xFF, 0x50, 0xA7, 0x00, 0x00, 0x58, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x83, 0x58, 0xFF, 0xFF, 0x00, 0x00, 0x31, 0xA6, 0x77, 0xE2, 0xFF, 0xFF, 0x00, 0x00, 0x61, 0x18, 0x64, 0x55, 0xFF, 0xFF, 0x00, 0x00, 0x6A, 0xE8, 0x5E, 0x39, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0x69, 0x56, 0x55, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0xEF, 0x52, 0xC3, 0xFF, 0xFF, 0x00, 0x00, 0xC9, 0x74, 0x53, 0xB1, 0xFF, 0xFF, 0x1C, 0x1B, 0xFF, 0xFF, 0x37, 0x58, 0xDA, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0xD5, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x2D, 0xAD, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0xD7, 0x9D, 0x7B, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0xC8, 0x8F, 0x23, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0xED, 0x82, 0x33, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0xA4, 0xFF, 0xFF, 0x8D, 0x45, 0x00, 0x00, 0x17, 0x67, 0xFF, 0xFF, 0x7E, 0xEC, 0x00, 0x00, 0x34, 0x3F, 0xFF, 0xFF, 0x59, 0xF1, 0x00, 0x00, 0x59, 0x62, 0xFF, 0xFF, 0x1C, 0x8E, 0x00, 0x00, 0x7A, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0x9F, 0x85, 0x4C, 0xFF, 0xFF, 0x00, 0x00, 0x4E, 0x29, 0x77, 0x0C, 0xFF, 0xFF, 0x00, 0x00, 0x65, 0x0A, 0x63, 0x7B, 0xFF, 0xFF, 0x00, 0x00, 0x9B, 0x03, 0x53, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0x66, 0x55, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0xDF, 0x3F, 0x50, 0x65, 0xF9, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0xEC, 0xCA, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0xB4, 0xB1, 0x9A, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0xF5, 0x9D, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x9D, 0x8B, 0xC5, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x92, 0x7F, 0xDF, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0xC3, 0x75, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0x9A, 0x15, 0xFF, 0xFF, 0x94, 0xAC, 0x00, 0x00, 0x13, 0xD3, 0xFF, 0xFF, 0x86, 0x98, 0x00, 0x00, 0x33, 0x3A, 0xFF, 0xFF, 0x5E, 0xAB, 0x00, 0x00, 0x5D, 0x1A, 0xFF, 0xFF, 0x5D, 0xA7, 0x0A, 0xA9, 0x64, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x29, 0x91, 0x37, 0xFF, 0xFF, 0x00, 0x00, 0x42, 0x11, 0x82, 0xFA, 0xFF, 0xFF, 0x00, 0x00, 0x6D, 0x4C, 0x6F, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x93, 0xE3, 0x6A, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x00, 0x5B, 0x3E, 0xFF, 0xFF, 0x2F, 0xA8, 0xFF, 0xFF, 0x2B, 0x13, 0xDA, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x74, 0xB6, 0x21, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0xB0, 0x9E, 0x39, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0x2F, 0x88, 0x32, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0xB8, 0x7A, 0xDE, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xB9, 0x6D, 0xC8, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xDB, 0x66, 0xB2, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xF8, 0xFF, 0xFF, 0x9B, 0x3F, 0x00, 0x00, 0x11, 0xCB, 0xFF, 0xFF, 0x92, 0xB8, 0x00, 0x00, 0x2F, 0x3B, 0xFF, 0xFF, 0x81, 0x5B, 0x00, 0x00, 0x4C, 0x12, 0xFF, 0xFF, 0x6B, 0x1E, 0x00, 0x00, 0x67, 0x38, 0xFF, 0xFF, 0x23, 0xEB, 0x00, 0x00, 0x8C, 0x6B, 0xFF, 0xFF, 0x00, 0x00, 0x29, 0xFA, 0x93, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x7D, 0x8E, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0xFE, 0x8C, 0x18, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0x2A, 0x8D, 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x0B, 0xBC, 0xC4, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0xBB, 0x9B, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xBB, 0x87, 0xB5, 0x07, 0xD5, 0xFF, 0xFF, 0xA0, 0xB8, 0x77, 0x1F, 0x04, 0x24, 0xFF, 0xFF, 0xA3, 0x40, 0x6C, 0x82, 0x04, 0xE7, 0xFF, 0xFF, 0xA4, 0x6D, 0x5D, 0xA5, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0x3F, 0x60, 0x00, 0x0F, 0xA5, 0xFF, 0xFF, 0xA1, 0xF1, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x11, 0xC2, 0xFF, 0xFF, 0x9B, 0xCA, 0x00, 0x00, 0x2C, 0x5A, 0xFF, 0xFF, 0x93, 0x25, 0x00, 0x00, 0x43, 0x04, 0xFF, 0xFF, 0x81, 0x3B, 0x00, 0x00, 0x62, 0xC4, 0xFF, 0xFF, 0x65, 0xA9, 0x00, 0x00, 0x83, 0x13, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xCF, 0xFF, 0xFF, 0x0E, 0xD8, 0x4B, 0x3C, 0xA1, 0x3E, 0xFF, 0xFF, 0x00, 0x00, 0x82, 0xCB, 0xA2, 0x73, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0xD3, 0xAB, 0x86, 0xD7, 0xB9, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x86, 0xAC, 0xC8, 0x36, 0x3B, 0xFF, 0xFF, 0x9E, 0xDD, 0x80, 0x06, 0x0A, 0x7D, 0xFF, 0xFF, 0xA9, 0x6B, 0x73, 0x0C, 0x0C, 0xA2, 0xFF, 0xFF, 0xAA, 0x87, 0x5D, 0x59, 0x00, 0x00, 0xFF, 0xFF, 0xAC, 0x7A, 0x60, 0xBC, 0x16, 0x3D, 0xFF, 0xFF, 0xA6, 0xCE, 0x61, 0x4D, 0x24, 0x9A, 0xFF, 0xFF, 0xA2, 0xDE, 0x5F, 0x54, 0x29, 0x52, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xA5, 0x9D, 0x00, 0x00, 0x0F, 0xBF, 0xFF, 0xFF, 0xA1, 0xA8, 0x00, 0x00, 0x2B, 0xDE, 0xFF, 0xFF, 0xA1, 0xF6, 0x00, 0x00, 0x3E, 0x3B, 0xFF, 0xFF, 0x93, 0x4F, 0x00, 0x00, 0x60, 0x9C, 0xFF, 0xFF, 0x81, 0xFF, 0x00, 0x00, 0x7D, 0x30, 0xFF, 0xFF, 0x60, 0xAB, 0x00, 0x00, 0x9A, 0x35, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x00, 0xBA, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0x8B, 0xBC, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0xE1, 0xFD, 0xBF, 0xB7, 0x9F, 0x04, 0x19, 0x0A, 0xFF, 0xFF, 0xB1, 0xE9, 0x65, 0x30, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0x76, 0x63, 0x34, 0x0F, 0x79, 0xFF, 0xFF, 0xB2, 0xD9, 0x49, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0xEA, 0x3C, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0x38, 0x37, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0x07, 0x32, 0x63, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0x17, 0x30, 0xB7, 0x00, 0x00, 0xFF, 0xFF, 0xAD, 0x7D, 0xFF, 0xFF, 0xAB, 0x5E, 0x00, 0x00, 0x0D, 0xE7, 0xFF, 0xFF, 0xAB, 0x4F, 0x00, 0x00, 0x29, 0xFC, 0xFF, 0xFF, 0xA9, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0xFF, 0xFF, 0xA4, 0x44, 0x00, 0x00, 0x5C, 0x5F, 0xFF, 0xFF, 0xA0, 0x7C, 0x00, 0x00, 0x75, 0x0F, 0xFF, 0xFF, 0xA4, 0x61, 0x13, 0x76, 0x8C, 0x3B, 0xFF, 0xFF, 0x9B, 0x80, 0x00, 0x00, 0xA7, 0xD1, 0xE3, 0x55, 0x9C, 0x50, 0x00, 0x00, 0xBC, 0xC3, 0x30, 0xD3, 0x00, 0x00, 0x53, 0xE4, 0xD8, 0xC9, 0x38, 0x63, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0x8E, 0x2D, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0x46, 0x28, 0xA5, 0x00, 0x00, 0xFF, 0xFF, 0xBB, 0x34, 0x20, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x2E, 0x1B, 0x4C, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0xB1, 0x17, 0xA3, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0x92, 0x13, 0x64, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0xD2, 0x11, 0x59, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0x36, 0xFF, 0xFF, 0xB1, 0xA9, 0x00, 0x00, 0x06, 0x69, 0xFF, 0xFF, 0xB2, 0x55, 0x00, 0x00, 0x27, 0x88, 0xFF, 0xFF, 0xB4, 0xA8, 0x00, 0x00, 0x3E, 0xE3, 0xFF, 0xFF, 0xBF, 0xA2, 0x0D, 0xE8, 0x46, 0x02, 0xFF, 0xFF, 0xBC, 0xE4, 0x00, 0x00, 0x6E, 0xB7, 0xFF, 0xFF, 0xC8, 0x4F, 0x00, 0x00, 0x87, 0xF6, 0xFA, 0x8F, 0xE9, 0xEF, 0x00, 0x00, 0x8C, 0x44, 0xA7, 0xF2, 0xF2, 0x49, 0x00, 0x00, 0xAE, 0xFB, 0x00, 0x00, 0xD4, 0xB2, 0x72, 0xF7, 0xC9, 0xAA, 0x04, 0x26, 0x3A, 0x7A, 0xFF, 0xFF, 0xC0, 0xC7, 0x00, 0x00, 0x19, 0xDE, 0xFF, 0xFF, 0xC0, 0xDF, 0x00, 0x00, 0x09, 0x71, 0xFF, 0xFF, 0xBF, 0x6C, 0x00, 0x00, 0x03, 0xE5, 0xFF, 0xFF, 0xBC, 0x8C, 0x00, 0x00, 0x01, 0xE4, 0xFF, 0xFF, 0xB9, 0xB2, 0x00, 0x00, 0x00, 0x75, 0xFF, 0xFF, 0xB7, 0x62, 0x00, 0x00, 0x00, 0xB1, 0xFF, 0xFF, 0xB5, 0x39, 0x00, 0x00, 0x06, 0x0A, 0xFF, 0xFF, 0xB2, 0x1F, 0xFF, 0xFF, 0xB8, 0x66, 0x00, 0x00, 0x02, 0x01, 0xFF, 0xFF, 0xBC, 0xD8, 0x00, 0x00, 0x24, 0x65, 0xFF, 0xFF, 0xC1, 0x2D, 0x00, 0x00, 0x3A, 0x91, 0xFF, 0xFF, 0xCD, 0x7A, 0x00, 0x00, 0x46, 0x12, 0xFF, 0xFF, 0xD5, 0xD7, 0x00, 0x00, 0x63, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x77, 0x57, 0xC5, 0xB9, 0xFE, 0xE7, 0x00, 0x00, 0x8E, 0x59, 0x59, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0xC8, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0x3D, 0xB9, 0x33, 0x28, 0xE5, 0xAE, 0xF7, 0xFF, 0xFF, 0xA1, 0x74, 0x15, 0xAF, 0x68, 0xE4, 0xFF, 0xFF, 0xB2, 0xC1, 0x00, 0x00, 0x42, 0x1B, 0xFF, 0xFF, 0xB5, 0xEA, 0x0A, 0x87, 0x40, 0x30, 0xFF, 0xFF, 0xB1, 0xDF, 0x14, 0x8B, 0x3B, 0xFB, 0xFF, 0xFF, 0xAF, 0xEF, 0x00, 0x00, 0x23, 0xB5, 0xFF, 0xFF, 0xB3, 0x15, 0x00, 0x00, 0x1E, 0x5A, 0xFF, 0xFF, 0xB1, 0x6D, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0xAE, 0xC4, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0x7A, 0x0A, 0xDE, 0x0E, 0xA1, 0xFF, 0xFF, 0xD0, 0x09, 0x00, 0x00, 0x31, 0xF9, 0xFF, 0xFF, 0xDD, 0xD8, 0x00, 0x00, 0x3C, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0x12, 0x0A, 0x4A, 0x75, 0xD2, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x74, 0x79, 0x83, 0x7B, 0xFF, 0xFF, 0x00, 0x00, 0x96, 0xC4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAB, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0x60, 0x9F, 0xC0, 0x00, 0x00, 0xF8, 0x06, 0xFF, 0xFF, 0x8A, 0x6F, 0x00, 0x00, 0xA0, 0x1E, 0xFF, 0xFF, 0xA0, 0xE4, 0x05, 0x5D, 0x7A, 0x5D, 0xFF, 0xFF, 0xA6, 0xDF, 0x09, 0xB3, 0x69, 0x6B, 0xFF, 0xFF, 0xA8, 0x84, 0x09, 0x60, 0x57, 0xB1, 0xFF, 0xFF, 0xA8, 0xD5, 0x09, 0x01, 0x4F, 0x53, 0xFF, 0xFF, 0xA8, 0x9C, 0x00, 0x00, 0x40, 0x18, 0xFF, 0xFF, 0xA9, 0x93, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0xA7, 0xB8, 0xFF, 0xFF, 0xC8, 0x5C, 0x00, 0x00, 0x04, 0xED, 0xFF, 0xFF, 0xD1, 0xE5, 0x02, 0x71, 0x12, 0x24, 0xFF, 0xFF, 0xDE, 0x5C, 0x00, 0x00, 0x25, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0x35, 0xDD, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0xA4, 0xA9, 0x5E, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0xBD, 0x5F, 0x15, 0xFF, 0xFF, 0x00, 0x00, 0x82, 0x6A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0xAB, 0x16, 0x8B, 0xFF, 0xFF, 0x4E, 0x19, 0x51, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0x4F, 0x30, 0x1B, 0x00, 0x00, 0xD3, 0x6D, 0xFE, 0x93, 0x87, 0xC0, 0x00, 0x00, 0xAA, 0xB0, 0xFF, 0xFF, 0x94, 0x13, 0x00, 0x00, 0x8C, 0x85, 0xFF, 0xFF, 0x9A, 0x83, 0x00, 0x00, 0x78, 0x7D, 0xFF, 0xFF, 0x9E, 0x98, 0x00, 0x00, 0x6A, 0x9C, 0xFF, 0xFF, 0x9F, 0xBD, 0x00, 0x00, 0x60, 0x82, 0xFF, 0xFF, 0xA0, 0x95, 0x00, 0x00, 0x59, 0x9A, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xD5, 0x18, 0x00, 0x00, 0x03, 0xDA, 0xFF, 0xFF, 0xE4, 0x00, 0x00, 0x00, 0x0C, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xA0, 0xE6, 0x31, 0xFF, 0xFF, 0x00, 0x00, 0x37, 0x05, 0xBE, 0x54, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0x7B, 0x80, 0x7C, 0xFF, 0xFF, 0x00, 0x00, 0x6A, 0x55, 0x17, 0xF6, 0xFF, 0xFF, 0x00, 0x00, 0x6B, 0x43, 0x14, 0x8C, 0xFF, 0xFF, 0x24, 0x9F, 0x4C, 0x72, 0x08, 0x08, 0xFF, 0xFF, 0x3C, 0x03, 0x47, 0x52, 0x1B, 0xD5, 0xFF, 0xFF, 0x8C, 0xA9, 0x2A, 0xB9, 0x00, 0x00, 0xFF, 0xFF, 0xEB, 0x3D, 0x5E, 0x3E, 0x00, 0x00, 0xD3, 0x68, 0xFE, 0x5B, 0x79, 0x18, 0x01, 0xFA, 0xB3, 0x79, 0xFF, 0xFF, 0x85, 0x8E, 0x00, 0x00, 0x9D, 0x4D, 0xFF, 0xFF, 0x8D, 0xBE, 0x00, 0x00, 0x8D, 0xF4, 0xFF, 0xFF, 0x90, 0xE1, 0x00, 0x00, 0x7F, 0x4F, 0xFF, 0xFF, 0x93, 0x46, 0x00, 0x00, 0x77, 0x96, 0xFF, 0xFF, 0x94, 0xC4, 0xFF, 0xFF, 0xE4, 0x2F, 0x00, 0x00, 0x04, 0x30, 0xFF, 0xFF, 0xFA, 0x0A, 0x00, 0x00, 0x08, 0xDE, 0xEF, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0x6D, 0xCD, 0xB0, 0xFF, 0xFF, 0x00, 0x00, 0x3A, 0xF0, 0xA2, 0x46, 0xFF, 0xFF, 0x0D, 0x91, 0x4F, 0xDE, 0x58, 0x06, 0xFF, 0xFF, 0x0F, 0x03, 0x4C, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0x86, 0x08, 0x67, 0xFF, 0xFF, 0x22, 0x2A, 0x45, 0xBB, 0x00, 0xDC, 0xFF, 0xFF, 0x32, 0x7B, 0x41, 0x3D, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0xC9, 0x39, 0xED, 0x00, 0x00, 0xFF, 0xFF, 0xA4, 0xCC, 0x32, 0x68, 0x00, 0x00, 0xFD, 0x5D, 0xF5, 0x7A, 0x54, 0x44, 0x00, 0x00, 0xD8, 0x2C, 0xFF, 0x7D, 0x6A, 0x2E, 0x00, 0x00, 0xBE, 0x31, 0xFF, 0xFF, 0x74, 0x29, 0x00, 0x00, 0xAC, 0x61, 0xFF, 0xFF, 0x7D, 0x91, 0x00, 0x00, 0x9D, 0x5F, 0xFF, 0xFF, 0x84, 0x68, 0x00, 0x00, 0x91, 0xC3, 0xFF, 0xFF, 0x86, 0x0D, 0xFF, 0xFF, 0xF3, 0x80, 0x00, 0x00, 0x07, 0x70, 0xF9, 0x9C, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0xA4, 0xDD, 0xC5, 0xFF, 0xFF, 0x15, 0x38, 0x0B, 0x1D, 0xB5, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x3A, 0xDC, 0x83, 0x85, 0xFF, 0xFF, 0x19, 0xD0, 0x38, 0x4A, 0x1C, 0xDE, 0xFF, 0xFF, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x50, 0xFC, 0x01, 0x5A, 0xFF, 0xFF, 0x20, 0x8E, 0x41, 0xAD, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x3C, 0x3E, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0xA6, 0x3A, 0x10, 0x0D, 0xAF, 0xFF, 0xFF, 0x94, 0xBC, 0x2C, 0x89, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0x8F, 0x2C, 0xF7, 0x00, 0x00, 0xFD, 0xD3, 0xF3, 0x7D, 0x47, 0x5D, 0x00, 0x00, 0xDE, 0xCD, 0xFF, 0xA1, 0x57, 0x1E, 0x00, 0x00, 0xCC, 0x0C, 0xFF, 0xFF, 0x62, 0x6B, 0x00, 0x00, 0xBA, 0xFF, 0xFF, 0xFF, 0x6A, 0x98, 0x00, 0x00, 0xAE, 0x68, 0xFF, 0xFF, 0x71, 0x5A, 0xFD, 0xF9, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x89, 0xE3, 0x68, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x3F, 0xC7, 0x6C, 0xFF, 0xFF, 0x11, 0x95, 0x11, 0x95, 0x93, 0xB6, 0xFF, 0xFF, 0x00, 0x00, 0x38, 0xA4, 0x4B, 0x74, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x11, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x4E, 0x41, 0x03, 0xEC, 0xFF, 0xFF, 0x11, 0xA9, 0x43, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0x3E, 0x4F, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x83, 0x39, 0x5C, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x33, 0xA4, 0x1A, 0xC0, 0xFF, 0xFF, 0x77, 0x6F, 0x1A, 0xC0, 0x06, 0xD3, 0xFF, 0xFF, 0x9F, 0xFF, 0x29, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xC8, 0x07, 0x2A, 0x10, 0x00, 0x00, 0xFF, 0xB1, 0xEE, 0x6A, 0x34, 0xF4, 0x00, 0x00, 0xE6, 0xB2, 0xF9, 0x4B, 0x42, 0x74, 0x09, 0xFF, 0xD7, 0x4A, 0xFF, 0xFF, 0x49, 0xFE, 0x00, 0x00, 0xC8, 0xD3, 0xFF, 0xFF, 0x57, 0x27, 0xFF, 0xFF, 0x80, 0xE7, 0x00, 0x00, 0x04, 0x4E, 0xFF, 0xFF, 0x65, 0x68, 0x00, 0x00, 0x2F, 0xF1, 0xFF, 0xFF, 0x41, 0x94, 0x00, 0x00, 0x4D, 0x6E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x35, 0x9D, 0x64, 0x9A, 0xFF, 0xFF, 0x00, 0x00, 0x59, 0x6B, 0x56, 0xD2, 0xFF, 0xFF, 0x00, 0x00, 0x6C, 0xC1, 0x58, 0x52, 0xFF, 0xFF, 0x00, 0x00, 0x93, 0x11, 0x52, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x01, 0x51, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xB9, 0x87, 0x51, 0x33, 0xFF, 0xFF, 0x14, 0xD1, 0xF4, 0xD0, 0x3B, 0x7E, 0xFC, 0x3E, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0x1A, 0xDC, 0x79, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0x7F, 0xC6, 0xD9, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0xC4, 0xB8, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0x08, 0xA9, 0x33, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0xEC, 0x9D, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x81, 0xFF, 0xFF, 0x86, 0xE8, 0x00, 0x00, 0x01, 0x60, 0xFF, 0xFF, 0x76, 0xC2, 0x00, 0x00, 0x28, 0xAD, 0xFF, 0xFF, 0x4F, 0xD1, 0x00, 0x00, 0x4B, 0xC9, 0xFF, 0xFF, 0x23, 0x0E, 0x00, 0x00, 0x66, 0xD4, 0xFF, 0xFF, 0x00, 0x00, 0x27, 0x31, 0x70, 0x72, 0xFF, 0xFF, 0x00, 0x00, 0x53, 0x91, 0x5E, 0x78, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x64, 0x5C, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x94, 0x97, 0x51, 0x50, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x7D, 0x52, 0xFA, 0xFF, 0xFF, 0x00, 0x00, 0xB7, 0xBE, 0x56, 0x2F, 0xFF, 0xFF, 0x24, 0x3E, 0xFF, 0xFF, 0x31, 0x40, 0xED, 0x61, 0x00, 0x00, 0xFF, 0xFF, 0x5B, 0x56, 0xCF, 0xD4, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x41, 0xBC, 0x6D, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x12, 0xAB, 0x9F, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0xAD, 0x9E, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0x87, 0x93, 0x11, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x9C, 0xFF, 0xFF, 0x8C, 0x3E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x00, 0x24, 0x2F, 0xFF, 0xFF, 0x4B, 0xF2, 0x00, 0x00, 0x53, 0x87, 0xFF, 0xFF, 0x34, 0x88, 0x00, 0x00, 0x64, 0xD9, 0xFF, 0xFF, 0x00, 0x00, 0x08, 0x95, 0x7D, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x44, 0x8B, 0x6C, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x68, 0x7A, 0x69, 0xCD, 0xFF, 0xFF, 0x00, 0x00, 0x8F, 0xFA, 0x63, 0xF4, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0xB9, 0x5B, 0x47, 0xFF, 0xFF, 0x00, 0x00, 0xC1, 0x16, 0x57, 0xA2, 0xFF, 0xFF, 0x11, 0xB5, 0xFF, 0xFF, 0x35, 0xD7, 0xDB, 0x95, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x57, 0xC0, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0x7C, 0x8C, 0xAE, 0xB8, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0x36, 0x9E, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0x8B, 0x6F, 0x92, 0xB2, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x44, 0x84, 0x7B, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0x75, 0xFF, 0xFF, 0x91, 0x54, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0x8F, 0x00, 0x00, 0x23, 0xC9, 0xFF, 0xFF, 0x5F, 0x88, 0x00, 0x00, 0x4D, 0xC4, 0xFF, 0xFF, 0x52, 0x01, 0x00, 0x00, 0x5D, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x85, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x9C, 0x7D, 0x68, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0xE9, 0x7A, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0x2D, 0x7B, 0xF9, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0xEA, 0x79, 0x7D, 0xFF, 0xFF, 0x00, 0x00, 0xCA, 0x1A, 0x6B, 0x59, 0xF8, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x1E, 0xCA, 0xAA, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x8D, 0xB2, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x02, 0x9F, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x0C, 0x8E, 0xA7, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0x7C, 0x7F, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x46, 0x7A, 0x13, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0x4E, 0xFF, 0xFF, 0x96, 0x72, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x5B, 0x00, 0x00, 0x1E, 0x22, 0xFF, 0xFF, 0x81, 0xAA, 0x00, 0x00, 0x37, 0xF8, 0xFF, 0xFF, 0x61, 0x9B, 0x00, 0x00, 0x5B, 0xF6, 0xFF, 0xFF, 0x16, 0xB7, 0x00, 0x00, 0x82, 0xAD, 0xFF, 0xFF, 0x30, 0x00, 0x3C, 0x3E, 0x7D, 0x62, 0xFF, 0xFF, 0x00, 0x00, 0x56, 0xFD, 0x88, 0xC6, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0xF1, 0x8A, 0x37, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x26, 0x8D, 0xB4, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0x21, 0x89, 0x8A, 0xDA, 0xC4, 0x00, 0x00, 0xFF, 0xFF, 0x7C, 0xC6, 0xB8, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0x45, 0x9F, 0x2A, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0x97, 0x8B, 0x5B, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0xA4, 0x7E, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x02, 0x71, 0x0D, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xC0, 0x68, 0x45, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0x61, 0xFF, 0xFF, 0x9B, 0x9B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0xFB, 0x00, 0x00, 0x1A, 0x84, 0xFF, 0xFF, 0x89, 0xCD, 0x00, 0x00, 0x37, 0x13, 0xFF, 0xFF, 0x62, 0xE8, 0x00, 0x00, 0x62, 0x70, 0xFF, 0xFF, 0x68, 0xAE, 0x12, 0x48, 0x66, 0x9A, 0xFF, 0xFF, 0x00, 0x00, 0x0E, 0x8B, 0x9B, 0xFA, 0xFF, 0xFF, 0x00, 0x00, 0x42, 0x30, 0x97, 0xFA, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0x20, 0x9A, 0xE7, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0xB2, 0xA1, 0x50, 0xFF, 0xFF, 0x00, 0x00, 0xF5, 0x37, 0xA1, 0x39, 0xBD, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x22, 0x9F, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0x86, 0x87, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xC5, 0x78, 0x15, 0x00, 0xE7, 0xFF, 0xFF, 0xA1, 0x6D, 0x6C, 0xE5, 0x02, 0x46, 0xFF, 0xFF, 0xA2, 0xB4, 0x5C, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0xA4, 0xE1, 0x60, 0x00, 0x0A, 0x74, 0xFF, 0xFF, 0xA1, 0x23, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xAD, 0x00, 0x00, 0x17, 0x26, 0xFF, 0xFF, 0x97, 0x6A, 0x00, 0x00, 0x33, 0x37, 0xFF, 0xFF, 0x80, 0x63, 0x00, 0x00, 0x56, 0x42, 0xFF, 0xFF, 0x75, 0xB2, 0x00, 0x00, 0x6E, 0x41, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xE7, 0xFF, 0xFF, 0x27, 0x3D, 0x39, 0xFC, 0x9E, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x6E, 0x0D, 0xA8, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0xBC, 0x1D, 0xAF, 0x7B, 0xDC, 0xA2, 0x00, 0x00, 0xF8, 0x40, 0xAF, 0xCE, 0xA6, 0x35, 0x15, 0x6C, 0xFF, 0xFF, 0x9F, 0xE1, 0x7F, 0x11, 0x00, 0x00, 0xFF, 0xFF, 0xA8, 0xB5, 0x75, 0x22, 0x09, 0xAA, 0xFF, 0xFF, 0xA8, 0x2F, 0x5B, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x49, 0x5E, 0xFC, 0x0E, 0xC4, 0xFF, 0xFF, 0xA6, 0xEB, 0x60, 0x29, 0x1D, 0xA1, 0xFF, 0xFF, 0xA2, 0xD4, 0x5E, 0x37, 0x23, 0x86, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xA3, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0x83, 0x00, 0x00, 0x17, 0xD8, 0xFF, 0xFF, 0xA0, 0xDB, 0x00, 0x00, 0x30, 0x50, 0xFF, 0xFF, 0x9C, 0xC6, 0x00, 0x00, 0x46, 0xE1, 0xFF, 0xFF, 0x81, 0x4A, 0x00, 0x00, 0x71, 0x7A, 0xFF, 0xFF, 0x60, 0xC4, 0x00, 0x00, 0x94, 0x6A, 0xFF, 0xFF, 0x5E, 0x33, 0x26, 0x2D, 0x9D, 0x59, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x15, 0xBD, 0xB3, 0xD5, 0x3F, 0x00, 0x00, 0xB6, 0xF8, 0xBA, 0x56, 0x9C, 0xD7, 0x00, 0x00, 0xDC, 0x5E, 0xBC, 0xCA, 0x7F, 0x7C, 0x11, 0xE0, 0xFF, 0xFF, 0xB0, 0x10, 0x5E, 0xF2, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0x7D, 0x66, 0xC2, 0x20, 0x8B, 0xFF, 0xFF, 0xAB, 0x6A, 0x65, 0x83, 0x2C, 0x36, 0xFF, 0xFF, 0xA6, 0xF5, 0x3C, 0x88, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0xD7, 0x34, 0xA6, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0xB3, 0x34, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xD6, 0xFF, 0xFF, 0xA8, 0xF1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x67, 0x00, 0x00, 0x14, 0x86, 0xFF, 0xFF, 0xA9, 0xB9, 0x00, 0x00, 0x31, 0x06, 0xFF, 0xFF, 0xAD, 0xA8, 0x02, 0x03, 0x3C, 0x8C, 0xFF, 0xFF, 0xA0, 0x24, 0x00, 0x00, 0x6C, 0x90, 0xFF, 0xFF, 0xA0, 0x57, 0x07, 0xC9, 0x85, 0x07, 0xFF, 0xFF, 0xB2, 0x0D, 0x1D, 0xB2, 0x92, 0xBE, 0xD9, 0x35, 0xA0, 0xFD, 0x00, 0x00, 0xB0, 0x6C, 0x2E, 0x42, 0x00, 0x00, 0x3F, 0x72, 0xCC, 0xC8, 0x11, 0xDB, 0x02, 0xFD, 0xDB, 0x7E, 0xD1, 0xA3, 0x2D, 0x5A, 0x00, 0x00, 0xFF, 0xFF, 0xBE, 0xDA, 0x26, 0xC2, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0xD1, 0x20, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0xB7, 0x88, 0x1A, 0xB5, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, 0x16, 0x2C, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0xF9, 0x12, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0x2D, 0x10, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0xAF, 0x94, 0xFF, 0xFF, 0xAF, 0x6A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB6, 0x71, 0x00, 0x00, 0x09, 0x09, 0xFF, 0xFF, 0xB8, 0xF7, 0x00, 0x00, 0x2A, 0xE9, 0xFF, 0xFF, 0xC1, 0x64, 0x00, 0x00, 0x3D, 0x41, 0xFF, 0xFF, 0xBC, 0xE6, 0x00, 0x00, 0x69, 0x98, 0xFF, 0xFF, 0xD0, 0xD1, 0x00, 0x00, 0x72, 0x93, 0xE8, 0x96, 0xE4, 0x78, 0x00, 0x00, 0x7B, 0x34, 0xA3, 0x78, 0xE2, 0xDD, 0x00, 0x00, 0xA2, 0x4E, 0x00, 0x00, 0xC7, 0x8E, 0x60, 0xC8, 0xBE, 0x04, 0x00, 0x00, 0x82, 0x3E, 0xC7, 0xBB, 0xB8, 0xE1, 0x00, 0x00, 0x3D, 0xEB, 0xFF, 0xFF, 0xBA, 0xE2, 0x00, 0x00, 0x28, 0x4C, 0xFF, 0xFF, 0xBA, 0x2E, 0x00, 0x00, 0x1E, 0xDE, 0xFF, 0xFF, 0xB8, 0x10, 0x05, 0x90, 0x22, 0x62, 0xFF, 0xFF, 0xB4, 0x78, 0x11, 0x81, 0x23, 0x82, 0xFF, 0xFF, 0xB0, 0xE2, 0x13, 0x59, 0x23, 0xFD, 0xFF, 0xFF, 0xAE, 0x38, 0x0C, 0xAC, 0x1E, 0xDC, 0xFF, 0xFF, 0xAD, 0x22, 0xFF, 0xFF, 0xB7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x43, 0x00, 0x00, 0x03, 0x34, 0xFF, 0xFF, 0xC6, 0x4C, 0x00, 0x00, 0x27, 0x3A, 0xFF, 0xFF, 0xCE, 0x59, 0x00, 0x00, 0x3E, 0x23, 0xFF, 0xFF, 0xDB, 0xE9, 0x00, 0x00, 0x53, 0x26, 0xF2, 0x7B, 0xFC, 0x39, 0x00, 0x00, 0x57, 0x00, 0xBC, 0xC7, 0xF6, 0x8A, 0x00, 0x00, 0x79, 0xF7, 0x60, 0x80, 0xFC, 0x3B, 0x00, 0x00, 0xA2, 0x95, 0x00, 0x00, 0xFA, 0x85, 0x61, 0x0E, 0xAE, 0xC6, 0x00, 0x00, 0xE5, 0x6C, 0xDF, 0x7F, 0xA9, 0x97, 0x02, 0x82, 0x8F, 0xBA, 0xFF, 0xFF, 0xA3, 0xF5, 0x09, 0xC9, 0x72, 0x13, 0xFF, 0xFF, 0xA9, 0x6F, 0x0B, 0xD2, 0x5C, 0xC4, 0xFF, 0xFF, 0xAA, 0x0F, 0x0D, 0x56, 0x53, 0x7F, 0xFF, 0xFF, 0xA9, 0xC1, 0x00, 0x00, 0x3F, 0x4E, 0xFF, 0xFF, 0xAB, 0x40, 0x03, 0xAC, 0x41, 0x59, 0xFF, 0xFF, 0xA8, 0xE9, 0x07, 0xDC, 0x3C, 0x78, 0xFF, 0xFF, 0xA7, 0xDC, 0xFF, 0xFF, 0xC1, 0x21, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCA, 0x4C, 0x00, 0x00, 0x08, 0x8E, 0xFF, 0xFF, 0xD6, 0x9B, 0x04, 0xC0, 0x13, 0x86, 0xFF, 0xFF, 0xE3, 0x0C, 0x00, 0x00, 0x31, 0x6F, 0xF6, 0x87, 0xFF, 0xFF, 0x00, 0x00, 0x45, 0x53, 0xC8, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x61, 0x43, 0x89, 0x2E, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0xE0, 0x11, 0xBD, 0xFF, 0xFF, 0x00, 0x00, 0xA1, 0x80, 0x22, 0x06, 0xFF, 0xFF, 0x63, 0xEB, 0x8C, 0x9D, 0x2B, 0x00, 0xFF, 0xFF, 0xAF, 0x2E, 0x80, 0x85, 0x00, 0x00, 0xCC, 0xC0, 0xFF, 0xFF, 0x85, 0x82, 0x00, 0x00, 0xA5, 0x35, 0xFF, 0xFF, 0x94, 0x44, 0x00, 0x00, 0x88, 0x82, 0xFF, 0xFF, 0x9A, 0xB7, 0x00, 0x00, 0x75, 0xCA, 0xFF, 0xFF, 0x9E, 0x77, 0x00, 0x00, 0x68, 0xE4, 0xFF, 0xFF, 0x9F, 0x7A, 0x00, 0x00, 0x60, 0x92, 0xFF, 0xFF, 0x9F, 0xFB, 0x00, 0x00, 0x56, 0xF2, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xCD, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDA, 0x5A, 0x00, 0x00, 0x05, 0xE6, 0xFF, 0xFF, 0xEE, 0x1C, 0x00, 0x00, 0x10, 0x3C, 0xF9, 0xB8, 0xFF, 0xFF, 0x00, 0x00, 0x21, 0x61, 0xD3, 0xDC, 0xFF, 0xFF, 0x00, 0x00, 0x49, 0x56, 0xA0, 0x72, 0xFF, 0xFF, 0x00, 0x00, 0x69, 0x11, 0x55, 0xA2, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0x3B, 0x21, 0x39, 0xFF, 0xFF, 0x59, 0x08, 0x55, 0xA0, 0x2C, 0x23, 0xFF, 0xFF, 0x86, 0xCF, 0x31, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0xED, 0xD6, 0x59, 0x0E, 0x00, 0x00, 0xD4, 0x57, 0xFD, 0x57, 0x75, 0x2A, 0x00, 0x00, 0xB4, 0x47, 0xFF, 0xFF, 0x83, 0x14, 0x00, 0x00, 0x9F, 0x1E, 0xFF, 0xFF, 0x8B, 0x53, 0x00, 0x00, 0x90, 0x61, 0xFF, 0xFF, 0x8E, 0x7A, 0x00, 0x00, 0x80, 0x12, 0xFF, 0xFF, 0x91, 0x34, 0x00, 0x00, 0x78, 0x6C, 0xFF, 0xFF, 0x92, 0xF6, 0xFF, 0xFF, 0xDB, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEE, 0xAA, 0x00, 0x00, 0x06, 0xB6, 0xF9, 0x27, 0xFC, 0xAC, 0x00, 0x00, 0x0C, 0x08, 0xE2, 0x78, 0xFF, 0xFF, 0x22, 0xA5, 0x0F, 0x45, 0xB6, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0x4B, 0x7A, 0x97, 0xFF, 0xFF, 0x00, 0x00, 0x59, 0x10, 0x22, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0x63, 0xEC, 0x10, 0x4B, 0xFF, 0xFF, 0x24, 0x9C, 0x4A, 0x05, 0x06, 0x86, 0xFF, 0xFF, 0x45, 0x77, 0x45, 0xCA, 0x2C, 0x20, 0xFF, 0xFF, 0x7B, 0x1F, 0x28, 0x44, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0x31, 0x30, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0x52, 0x4E, 0xAB, 0x00, 0x00, 0xDC, 0x74, 0xFD, 0xA8, 0x66, 0x7D, 0x00, 0x00, 0xC4, 0x27, 0xFF, 0xFF, 0x6D, 0x87, 0x00, 0x00, 0xB2, 0x1A, 0xFF, 0xFF, 0x77, 0x78, 0x00, 0x00, 0xA3, 0x47, 0xFF, 0xFF, 0x7F, 0xA4, 0x00, 0x00, 0x95, 0x4C, 0xFF, 0xFF, 0x82, 0x71, 0xFF, 0xFF, 0xEA, 0x79, 0x00, 0x00, 0x04, 0xEC, 0xFE, 0xF2, 0xFC, 0x41, 0x00, 0x00, 0x03, 0xA4, 0xE3, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x0E, 0x70, 0xC4, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0x0A, 0x93, 0xE3, 0xFF, 0xFF, 0x00, 0x00, 0x42, 0x00, 0x50, 0x3D, 0xFF, 0xFF, 0x05, 0x0C, 0x45, 0xF0, 0x07, 0xDE, 0xFF, 0xFF, 0x00, 0x00, 0x52, 0xF7, 0x06, 0x57, 0xFF, 0xFF, 0x23, 0x73, 0x43, 0xF4, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0x10, 0x3F, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0x6B, 0x38, 0x5A, 0x0C, 0x2D, 0xFF, 0xFF, 0x91, 0x14, 0x2B, 0x3A, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xC3, 0x2C, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0xEF, 0x69, 0x3C, 0x06, 0x00, 0x00, 0xE3, 0xBF, 0xFC, 0x37, 0x4B, 0xF9, 0x00, 0x00, 0xD2, 0xF0, 0xFF, 0xFF, 0x59, 0xE4, 0x00, 0x00, 0xC2, 0x9B, 0xFF, 0xFF, 0x61, 0xB4, 0x00, 0x00, 0xB3, 0xDA, 0xFF, 0xFF, 0x69, 0xC2, 0xFE, 0xE2, 0xF7, 0xDF, 0x00, 0x00, 0x04, 0xB7, 0xED, 0xE5, 0xFF, 0x6F, 0x00, 0x00, 0x06, 0x2B, 0xD3, 0x21, 0xFF, 0xFF, 0x0C, 0xC9, 0x08, 0x2F, 0xAB, 0x89, 0xFF, 0xFF, 0x00, 0x00, 0x30, 0x7C, 0x79, 0x0A, 0xFF, 0xFF, 0x13, 0x9C, 0x2B, 0x58, 0x30, 0x4C, 0xFF, 0xFF, 0x00, 0x57, 0x41, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x49, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0xAB, 0x3D, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0x2A, 0x36, 0xB1, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0x37, 0x32, 0x77, 0x21, 0x15, 0xFF, 0xFF, 0x75, 0x2F, 0x11, 0xD2, 0x08, 0xF0, 0xFF, 0xFF, 0x9D, 0xB2, 0x27, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0xA2, 0x26, 0x20, 0x30, 0x45, 0xFF, 0xFF, 0xF3, 0x1D, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x40, 0xFC, 0x86, 0x3A, 0x5E, 0x00, 0x00, 0xDB, 0x91, 0xFD, 0xDF, 0x45, 0x39, 0x09, 0x88, 0xD0, 0x3D, 0xFF, 0xFF, 0x49, 0x88, 0xF4, 0x19, 0xFC, 0x3C, 0x00, 0x00, 0x05, 0x47, 0xDA, 0x22, 0xFF, 0xA0, 0x00, 0x00, 0x09, 0x10, 0xBD, 0x34, 0xFF, 0xFF, 0x0C, 0x45, 0x0C, 0x45, 0x89, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0xB6, 0x43, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0xA8, 0x13, 0xD6, 0xFF, 0xFF, 0x00, 0x00, 0x45, 0xD6, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0x9C, 0x40, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0x37, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0x62, 0x31, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0xC4, 0x2D, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x27, 0xA7, 0x04, 0x65, 0xFF, 0xFF, 0x80, 0x00, 0x24, 0x65, 0x04, 0x53, 0xFF, 0xFF, 0x9F, 0xFF, 0x24, 0x53, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0x68, 0x23, 0xD3, 0x29, 0xBD, 0xFF, 0xFF, 0xEB, 0x3B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1A, 0xF5, 0xEA, 0x29, 0x28, 0x00, 0x00, 0xEA, 0xFF, 0xFD, 0xDA, 0x32, 0xE5, 0xFF, 0xFF, 0x79, 0x34, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0xF6, 0x00, 0x00, 0x10, 0xF6, 0xFF, 0xFF, 0x41, 0x6C, 0x00, 0x00, 0x41, 0x6C, 0xFF, 0xFF, 0x0C, 0x25, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x28, 0xD8, 0x5E, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x4D, 0x9A, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x83, 0x59, 0xDE, 0xFF, 0xFF, 0x00, 0x00, 0x8F, 0x54, 0x4F, 0xB7, 0xFF, 0xFF, 0x00, 0x00, 0xA8, 0x39, 0x4F, 0x23, 0xFF, 0xFF, 0x00, 0x00, 0xC2, 0x07, 0x50, 0x3B, 0xFF, 0xFF, 0x14, 0xF9, 0xF4, 0xF8, 0x38, 0x7A, 0xFA, 0xF2, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0x84, 0xDE, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x2F, 0xCA, 0x97, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x7F, 0xBC, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0xBD, 0xAF, 0xB9, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0xE1, 0xA4, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x66, 0xFF, 0xFF, 0x7E, 0x34, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7B, 0x21, 0x00, 0x00, 0x0B, 0x71, 0xFF, 0xFF, 0x42, 0x95, 0x00, 0x00, 0x47, 0x9E, 0xFF, 0xFF, 0x1F, 0xD6, 0x00, 0x00, 0x5C, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x9D, 0x6A, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x44, 0xEA, 0x6B, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x61, 0x68, 0x63, 0x45, 0xFF, 0xFF, 0x22, 0x09, 0x91, 0xA4, 0x53, 0x4F, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x6F, 0x61, 0x57, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0xE7, 0x5B, 0x60, 0xFF, 0xFF, 0x23, 0x30, 0xFF, 0x1E, 0x2E, 0xBE, 0xEF, 0x6F, 0x00, 0x00, 0xFF, 0xFF, 0x49, 0xD8, 0xD3, 0x16, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0xB5, 0xBF, 0x63, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0xBF, 0xB3, 0x3E, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0x43, 0xA4, 0xEF, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x60, 0x9A, 0xB3, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x16, 0xFF, 0xFF, 0x84, 0x2A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0xCF, 0x00, 0x00, 0x06, 0x5B, 0xFF, 0xFF, 0x55, 0xC1, 0x00, 0x00, 0x40, 0xA3, 0xFF, 0xFF, 0x33, 0x47, 0x00, 0x00, 0x58, 0x8E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x76, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0xE9, 0x73, 0x4B, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0xAB, 0x6C, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x76, 0xB9, 0x74, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0x26, 0x73, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0xC9, 0xEC, 0x6C, 0x95, 0xFF, 0xFF, 0x1A, 0xB0, 0xFF, 0xFF, 0x35, 0xA5, 0xDF, 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0xA3, 0xC7, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x81, 0xB7, 0x39, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x18, 0xA7, 0x8D, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x5E, 0x9A, 0xE3, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0xEA, 0x90, 0x42, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0xF4, 0xFF, 0xFF, 0x88, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0x54, 0x00, 0x00, 0x02, 0x3A, 0xFF, 0xFF, 0x75, 0x25, 0x00, 0x00, 0x2D, 0x29, 0xFF, 0xFF, 0x51, 0xF4, 0x00, 0x00, 0x4D, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x69, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0xFD, 0x7D, 0xB2, 0xFF, 0xFF, 0x00, 0x00, 0x5E, 0x4B, 0x78, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0x73, 0x7E, 0x58, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x0F, 0x81, 0xED, 0xFF, 0xFF, 0x00, 0x00, 0xCF, 0xF4, 0x80, 0xC9, 0xFE, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x91, 0xD1, 0xD9, 0x00, 0x00, 0xFF, 0xFF, 0x6F, 0x46, 0xBC, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0x7C, 0x63, 0xAA, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x19, 0x9B, 0x29, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0xD5, 0x8F, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x46, 0x81, 0xF3, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x78, 0xFF, 0xFF, 0x8D, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x0C, 0x00, 0x00, 0x28, 0x02, 0xFF, 0xFF, 0x52, 0x9F, 0x00, 0x00, 0x52, 0xCD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3F, 0xFF, 0xFF, 0x1D, 0x91, 0x31, 0xCF, 0x7D, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x4D, 0x81, 0x84, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0x79, 0x26, 0x89, 0x54, 0xFF, 0xFF, 0x00, 0x00, 0xA6, 0x7A, 0x8D, 0x9C, 0xFF, 0xFF, 0x00, 0x00, 0xDC, 0xF0, 0x8E, 0xAA, 0xE6, 0xF7, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0xD5, 0xC1, 0x89, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x53, 0xAD, 0x4A, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0x1C, 0x9B, 0xB8, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0x5E, 0x8B, 0xAC, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x6E, 0x7F, 0x3D, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0xDC, 0x78, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0x33, 0xFF, 0xFF, 0x91, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0x0D, 0x00, 0x00, 0x29, 0x86, 0xFF, 0xFF, 0x58, 0xC7, 0x00, 0x00, 0x55, 0x33, 0xFF, 0xFF, 0x2F, 0x32, 0x00, 0x00, 0x7A, 0xAE, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x83, 0x92, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x3D, 0x87, 0x90, 0x7E, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0xFB, 0x94, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0xA8, 0x0E, 0x9A, 0xAB, 0xFF, 0xFF, 0x00, 0x00, 0xF0, 0xBA, 0x9D, 0x82, 0xD1, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0x5A, 0xB2, 0x79, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x58, 0x9C, 0x49, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x6D, 0x88, 0x88, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0x46, 0x7E, 0x19, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0xA2, 0x70, 0x7B, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x62, 0x67, 0x65, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0x2C, 0xFF, 0xFF, 0x96, 0xEE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x68, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0x69, 0x00, 0x00, 0x24, 0xDB, 0xFF, 0xFF, 0x7F, 0x46, 0x00, 0x00, 0x40, 0xC3, 0xFF, 0xFF, 0x68, 0x4B, 0x0D, 0x6E, 0x66, 0x2C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x46, 0xFF, 0xFF, 0x00, 0x00, 0x2C, 0x92, 0x9D, 0xF4, 0xFF, 0xFF, 0x00, 0x00, 0x66, 0x1D, 0x9F, 0xDD, 0xFF, 0xFF, 0x00, 0x00, 0xB6, 0x11, 0xA7, 0x37, 0xDE, 0x51, 0x00, 0x00, 0xE4, 0x80, 0xA7, 0x23, 0xB6, 0x5C, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0xCC, 0x97, 0xB1, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x68, 0x82, 0x0D, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xA7, 0x73, 0x8A, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x28, 0x68, 0x2C, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x7E, 0x5D, 0x88, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0xC8, 0x5C, 0x71, 0x07, 0x31, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0x9D, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0xD7, 0x00, 0x00, 0x1C, 0xE2, 0xFF, 0xFF, 0x91, 0xF7, 0x00, 0x00, 0x3D, 0x0A, 0xFF, 0xFF, 0x76, 0xA4, 0x00, 0x00, 0x6D, 0xC7, 0xFF, 0xFF, 0x5C, 0x9F, 0x00, 0x00, 0x8A, 0x72, 0xFF, 0xFF, 0x31, 0xBF, 0x07, 0xCC, 0xA1, 0x3E, 0xF5, 0x22, 0x00, 0x00, 0x37, 0x3C, 0xB4, 0x44, 0xC9, 0x47, 0x00, 0x00, 0xA4, 0xC5, 0xB2, 0x12, 0x9B, 0x8B, 0x00, 0x00, 0xD6, 0xAF, 0xB2, 0x37, 0x87, 0x47, 0x09, 0xBE, 0xFF, 0xFF, 0xAD, 0x2E, 0x74, 0xCE, 0x08, 0xD6, 0xFF, 0xFF, 0xAA, 0x3F, 0x61, 0x41, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xB2, 0x67, 0x75, 0x1E, 0x96, 0xFF, 0xFF, 0xA4, 0x9C, 0x67, 0x8F, 0x2D, 0x34, 0xFF, 0xFF, 0xA0, 0x48, 0x67, 0x75, 0x35, 0x17, 0xFF, 0xFF, 0x9C, 0xA5, 0x55, 0x38, 0x22, 0xF7, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xA4, 0x14, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAA, 0x2B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x92, 0x00, 0x00, 0x1A, 0x1E, 0xFF, 0xFF, 0xA4, 0x81, 0x00, 0x00, 0x3C, 0xCA, 0xFF, 0xFF, 0x9E, 0xA5, 0x00, 0x00, 0x65, 0xCF, 0xFF, 0xFF, 0x9E, 0xBD, 0x00, 0x00, 0x7A, 0x7B, 0xF4, 0xFE, 0xA5, 0xD0, 0x00, 0x00, 0x89, 0xC3, 0xC4, 0xB0, 0x9A, 0x65, 0x00, 0x00, 0xA4, 0x20, 0x2B, 0x13, 0x02, 0xCC, 0x33, 0x10, 0xC1, 0x67, 0x22, 0x01, 0x19, 0x2C, 0xC5, 0xF5, 0xC0, 0x4C, 0x22, 0x21, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x9A, 0x1C, 0xCF, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xEC, 0x17, 0x24, 0x00, 0x00, 0xFF, 0xFF, 0xB6, 0xDD, 0x13, 0x33, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0x29, 0x0E, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0x1E, 0x0A, 0xB2, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0x50, 0x0E, 0x42, 0x00, 0x00, 0xFF, 0xFF, 0xAD, 0xFC, 0xFF, 0xFF, 0xAC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0x62, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0x22, 0x00, 0x00, 0x0B, 0xBF, 0xFF, 0xFF, 0xBB, 0x09, 0x00, 0x00, 0x3D, 0xBC, 0xFF, 0xFF, 0xC0, 0x2D, 0x02, 0x4B, 0x5B, 0x9D, 0xF4, 0x59, 0xCB, 0xBF, 0x00, 0x00, 0x5E, 0x0F, 0xDE, 0xA9, 0xE0, 0x49, 0x00, 0x00, 0x64, 0x1D, 0x9E, 0x09, 0xDB, 0x9B, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0xBE, 0x9B, 0x57, 0xF1, 0xB5, 0xD5, 0x00, 0x00, 0x98, 0x08, 0xC3, 0xBC, 0xB0, 0xE2, 0x18, 0x98, 0x62, 0x68, 0xFF, 0xFF, 0xB0, 0xEA, 0x00, 0x00, 0x41, 0x17, 0xFF, 0xFF, 0xB2, 0x8D, 0x13, 0x21, 0x41, 0xAF, 0xFF, 0xFF, 0xAE, 0xA3, 0x00, 0x00, 0x2C, 0x23, 0xFF, 0xFF, 0xB1, 0xEC, 0x00, 0x00, 0x24, 0x5D, 0xFF, 0xFF, 0xB0, 0x98, 0x00, 0x00, 0x1F, 0xD2, 0xFF, 0xFF, 0xAF, 0x07, 0x00, 0x00, 0x20, 0x17, 0xFF, 0xFF, 0xAB, 0xFF, 0xFF, 0xFF, 0xB7, 0x88, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC9, 0x12, 0x0C, 0xC8, 0x02, 0xFD, 0xFF, 0xFF, 0xCF, 0x32, 0x00, 0x00, 0x34, 0xB9, 0xF5, 0x4D, 0xD8, 0xD0, 0x00, 0x00, 0x3E, 0xBE, 0xDF, 0x7F, 0xF0, 0xD1, 0x00, 0x00, 0x3F, 0xF8, 0xB6, 0xB6, 0xF2, 0x0A, 0x00, 0x00, 0x65, 0x6D, 0x65, 0x19, 0xF7, 0xCF, 0x00, 0x00, 0x92, 0xD9, 0x00, 0x00, 0xF3, 0x62, 0x59, 0x45, 0xA5, 0x7A, 0x00, 0x00, 0xE1, 0x79, 0xCD, 0x79, 0xA1, 0x73, 0x00, 0x00, 0xAC, 0x33, 0xFF, 0xFF, 0x97, 0xA0, 0x00, 0x00, 0x83, 0x70, 0xFF, 0xFF, 0x9D, 0xD4, 0x00, 0x00, 0x70, 0x3E, 0xFF, 0xFF, 0xA0, 0xAE, 0x00, 0xEF, 0x64, 0x3D, 0xFF, 0xFF, 0xA1, 0xB6, 0x00, 0xE1, 0x59, 0x0B, 0xFF, 0xFF, 0xA2, 0x09, 0x01, 0x23, 0x51, 0x55, 0xFF, 0xFF, 0xA2, 0x2B, 0x01, 0x8B, 0x4B, 0xA9, 0xFF, 0xFF, 0xA1, 0x8B, 0xFF, 0xFF, 0xC3, 0xAB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD0, 0x4C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD6, 0xE0, 0x00, 0x00, 0x13, 0x30, 0xFC, 0xCC, 0xE5, 0x67, 0x00, 0x00, 0x20, 0x67, 0xEA, 0xE3, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x3A, 0xC5, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0x4A, 0x71, 0x8D, 0x15, 0xFF, 0x53, 0x00, 0x00, 0x6F, 0x60, 0x51, 0x8C, 0xFF, 0xFF, 0x26, 0x1E, 0x82, 0x1C, 0x29, 0x05, 0xFF, 0xFF, 0x64, 0xDA, 0x84, 0x7C, 0x13, 0xFB, 0xFF, 0xFF, 0xAF, 0x00, 0x85, 0xBD, 0x00, 0x00, 0xE4, 0x1F, 0xF0, 0x16, 0x75, 0x31, 0x00, 0x00, 0xBB, 0x92, 0xFF, 0xFF, 0x7F, 0x6B, 0x28, 0xB1, 0xAD, 0x74, 0xFF, 0xFF, 0x7E, 0x45, 0x00, 0x00, 0x91, 0xC4, 0xFF, 0xFF, 0x8E, 0x5B, 0x00, 0x00, 0x81, 0x2C, 0xFF, 0xFF, 0x90, 0xE6, 0x00, 0x00, 0x79, 0x99, 0xFF, 0xFF, 0x93, 0x47, 0x00, 0x00, 0x6D, 0xFA, 0xFF, 0xFF, 0x94, 0xDA, 0xFF, 0xFF, 0xD1, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDF, 0xD4, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x5C, 0xEB, 0xDA, 0x00, 0x00, 0x08, 0xE7, 0xE8, 0xAE, 0xFB, 0x7F, 0x00, 0x00, 0x18, 0x43, 0xCD, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0xA4, 0x9F, 0xB3, 0xFF, 0xFF, 0x04, 0x0E, 0x4D, 0x70, 0x6F, 0xCD, 0xFF, 0xFF, 0x20, 0x1F, 0x58, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x8A, 0x20, 0x5A, 0xFF, 0xFF, 0x59, 0xE4, 0x58, 0x7B, 0x2B, 0xE9, 0xFF, 0xFF, 0x90, 0x17, 0x3F, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0xB6, 0x31, 0x38, 0x85, 0x00, 0x00, 0xEB, 0x0A, 0xFC, 0xB5, 0x57, 0x77, 0x00, 0x00, 0xCF, 0x42, 0xFF, 0x72, 0x66, 0x99, 0x00, 0x00, 0xB9, 0x62, 0xFF, 0xFF, 0x70, 0xC6, 0x00, 0x00, 0xA9, 0x83, 0xFF, 0xFF, 0x7A, 0x04, 0x00, 0x00, 0x9A, 0xC1, 0xFF, 0xFF, 0x80, 0xE5, 0x00, 0x00, 0x8F, 0x0D, 0xFF, 0xFF, 0x82, 0x93, 0xFF, 0xFF, 0xDF, 0x9C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEF, 0x90, 0x00, 0x00, 0x02, 0xCD, 0xE8, 0x47, 0xF2, 0xBB, 0x00, 0x00, 0x0A, 0x67, 0xD9, 0x80, 0xFF, 0xFF, 0x11, 0xFF, 0x07, 0x80, 0xB1, 0xA5, 0xFF, 0xFF, 0x00, 0x00, 0x30, 0x6A, 0x82, 0xB3, 0xFF, 0xFF, 0x17, 0x64, 0x38, 0x02, 0x42, 0xE7, 0xFF, 0xFF, 0x0C, 0x39, 0x48, 0xEC, 0x09, 0x1A, 0xFF, 0xFF, 0x1D, 0xF6, 0x46, 0x62, 0x01, 0x1D, 0xFF, 0xFF, 0x42, 0x8C, 0x40, 0xF5, 0x2B, 0x07, 0xFF, 0xFF, 0x81, 0x89, 0x22, 0x76, 0x0C, 0x85, 0xFF, 0xFF, 0x9A, 0x04, 0x2A, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xCD, 0xB0, 0x27, 0xAD, 0x00, 0x00, 0xF6, 0xC2, 0xF5, 0xB7, 0x42, 0xE8, 0x00, 0x00, 0xDC, 0x30, 0xFE, 0x70, 0x4F, 0xB5, 0x00, 0x00, 0xCC, 0x5C, 0xFF, 0xFF, 0x58, 0x95, 0x00, 0x00, 0xBD, 0x38, 0xFF, 0xFF, 0x60, 0xA7, 0x00, 0x00, 0xB0, 0x22, 0xFF, 0xFF, 0x68, 0xAE, 0xFE, 0x8A, 0xEC, 0x9F, 0x00, 0x00, 0x04, 0x2B, 0xEE, 0xE3, 0xF2, 0x20, 0x00, 0x00, 0x08, 0x34, 0xD6, 0xB7, 0xFA, 0x18, 0x00, 0x00, 0x0C, 0xAF, 0xC2, 0x4C, 0xFF, 0xFF, 0x12, 0x72, 0x09, 0x0A, 0x8C, 0x6C, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0xCD, 0x49, 0x64, 0xFF, 0xFF, 0x00, 0x00, 0x42, 0x0E, 0x05, 0xE4, 0xFF, 0xFF, 0x00, 0x00, 0x4F, 0x6F, 0x02, 0xE9, 0xFF, 0xFF, 0x22, 0xCB, 0x41, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xD0, 0x3C, 0xCF, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0xC4, 0x38, 0x0C, 0x07, 0x63, 0xFF, 0xFF, 0x7F, 0xFC, 0x29, 0x5A, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0x8F, 0x2A, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xE0, 0x29, 0x0F, 0x42, 0xE6, 0xFF, 0xFF, 0xFF, 0x73, 0x00, 0x00, 0x00, 0x00, 0xEB, 0xF8, 0xFC, 0xEF, 0x39, 0xC1, 0x00, 0x00, 0xD8, 0x2C, 0xFF, 0x3A, 0x40, 0xC0, 0x06, 0xFC, 0xCD, 0xA3, 0xFF, 0xFF, 0x46, 0xFC, 0xF4, 0xAB, 0xF2, 0x20, 0x00, 0x00, 0x09, 0x0D, 0xDC, 0x74, 0xF5, 0x4D, 0x00, 0x00, 0x09, 0x2D, 0xC5, 0x72, 0xFC, 0x27, 0x00, 0x00, 0x0F, 0x88, 0xA5, 0xE9, 0xFF, 0xFF, 0x02, 0x13, 0x17, 0x75, 0x6E, 0x00, 0xFF, 0xFF, 0x0B, 0x22, 0x27, 0x83, 0x29, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x42, 0x2C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x46, 0xB5, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0x43, 0x3A, 0x64, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x78, 0x31, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0x5D, 0x2B, 0xC2, 0x1B, 0x94, 0xFF, 0xFF, 0x64, 0x21, 0x10, 0x1A, 0x01, 0x32, 0xFF, 0xFF, 0x89, 0x03, 0x24, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0x70, 0x23, 0xBD, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0xB0, 0x22, 0x0B, 0x33, 0xB2, 0xFF, 0xFF, 0xF4, 0x55, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0xB4, 0x28, 0xBE, 0x00, 0x00, 0xEA, 0x5A, 0xFF, 0x7F, 0x2E, 0xA5, 0xE8, 0xD9, 0xF5, 0xB6, 0x00, 0x00, 0x07, 0x73, 0xCC, 0xEC, 0xF6, 0xA5, 0x00, 0x00, 0x07, 0xC9, 0xB0, 0xED, 0xFC, 0xF9, 0x00, 0x00, 0x0F, 0x3D, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x21, 0x4E, 0x41, 0xA5, 0xFF, 0xFF, 0x00, 0x00, 0x39, 0xE9, 0x12, 0xE9, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0x94, 0x3A, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x4B, 0x30, 0x4A, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0x8A, 0x29, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x95, 0x24, 0xD6, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x20, 0xD3, 0x11, 0xB3, 0xFF, 0xFF, 0x74, 0xC6, 0x11, 0xB3, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0xA9, 0x1F, 0xBB, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xCB, 0x1F, 0xCC, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0x74, 0x1E, 0x46, 0x00, 0x00, 0xFF, 0xFF, 0xD1, 0x05, 0x1C, 0xFF, 0x21, 0xE5, 0xFF, 0xFF, 0xF3, 0x67, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0x9C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x11, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x30, 0x73, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x47, 0x2A, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0x6E, 0x58, 0xED, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0x5A, 0x5A, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x56, 0x06, 0xFF, 0xFF, 0x0D, 0xA9, 0x8A, 0xE4, 0x4D, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x58, 0x54, 0x06, 0xFF, 0xFF, 0x00, 0x00, 0xC6, 0x1B, 0x50, 0x76, 0xFF, 0xFF, 0x10, 0x38, 0xF0, 0x38, 0x37, 0x24, 0xF8, 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0xFA, 0xE0, 0xE3, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x29, 0xD0, 0x72, 0x00, 0x00, 0xFF, 0xFF, 0x49, 0x36, 0xC1, 0x9A, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0x16, 0xB7, 0x36, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xD3, 0xAE, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x4A, 0xFF, 0xFF, 0x6D, 0xDF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0xDA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x43, 0xC1, 0x00, 0x00, 0x35, 0xCF, 0xFF, 0xFF, 0x21, 0xD8, 0x00, 0x00, 0x4A, 0xB0, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0x91, 0x66, 0x97, 0xFF, 0xFF, 0x00, 0x00, 0x43, 0xE5, 0x60, 0xD8, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x06, 0x5E, 0x87, 0xFF, 0xFF, 0x20, 0x6E, 0x8D, 0xDB, 0x51, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0xA6, 0x8C, 0x61, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0xC8, 0x57, 0x5F, 0x7F, 0xFF, 0xFF, 0x1F, 0x6C, 0xF7, 0x10, 0x3D, 0x44, 0xEE, 0x2C, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0xD6, 0xD7, 0xF1, 0x00, 0x00, 0xFF, 0xFF, 0x47, 0xBB, 0xC7, 0x71, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x03, 0xBA, 0xE7, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0x11, 0xB1, 0x45, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0xA1, 0xA6, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0x25, 0xFF, 0xFF, 0x72, 0x35, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0x95, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0xC9, 0x00, 0x00, 0x32, 0xD1, 0xFF, 0xFF, 0x23, 0x63, 0x00, 0x00, 0x4F, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0x27, 0x6E, 0x2C, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x19, 0x65, 0xE4, 0xFF, 0xFF, 0x00, 0x00, 0x61, 0x6A, 0x62, 0x06, 0xFF, 0xFF, 0x00, 0x00, 0x75, 0x7A, 0x6D, 0xB1, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0x08, 0x6C, 0xB5, 0xFF, 0xFF, 0x00, 0x00, 0xCC, 0x0D, 0x69, 0x38, 0xFF, 0xFF, 0x2C, 0xCE, 0xFA, 0xF2, 0x46, 0xB4, 0xE2, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x7A, 0xCF, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x11, 0xBF, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0x2A, 0xB4, 0x47, 0x00, 0x00, 0xFF, 0xFF, 0x6B, 0x46, 0xA8, 0x57, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x59, 0x9F, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0xD5, 0xFF, 0xFF, 0x76, 0xC5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0xA2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0xF2, 0x00, 0x00, 0x0B, 0x7E, 0xFF, 0xFF, 0x38, 0xF6, 0x00, 0x00, 0x4A, 0x29, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x6E, 0x76, 0x94, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x52, 0x6C, 0xCE, 0xFF, 0xFF, 0x00, 0x00, 0x5E, 0x8F, 0x6B, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x74, 0x21, 0x75, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x0A, 0x77, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0xD1, 0xE9, 0x77, 0x73, 0xFF, 0xFF, 0x00, 0x00, 0xFA, 0x0A, 0x6F, 0x50, 0xD8, 0x2C, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0xDF, 0xC4, 0xD7, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0x02, 0xB7, 0xBA, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0xA0, 0xAA, 0x87, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0xCB, 0xA0, 0x7D, 0x00, 0x00, 0xFF, 0xFF, 0x7B, 0xD6, 0x94, 0xA5, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x7B, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0x12, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x79, 0x42, 0x00, 0x00, 0x0D, 0xD4, 0xFF, 0xFF, 0x4B, 0xA0, 0x00, 0x00, 0x45, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0x02, 0x76, 0x89, 0xFF, 0xFF, 0x00, 0x00, 0x52, 0x87, 0x77, 0xAC, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0xC6, 0x7A, 0xC7, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x39, 0x80, 0x71, 0xFF, 0xFF, 0x00, 0x00, 0xD8, 0x59, 0x83, 0xC0, 0xF3, 0x9C, 0x00, 0x00, 0xF9, 0x4A, 0x7A, 0xE8, 0xCC, 0x52, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0x30, 0xBC, 0x21, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x66, 0xAC, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0x78, 0x9E, 0xA0, 0xF4, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x95, 0x94, 0xC1, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0xA9, 0x8A, 0xEB, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0x7E, 0xFF, 0xFF, 0x84, 0xC5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x91, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x04, 0x00, 0x00, 0x06, 0xEC, 0xFF, 0xFF, 0x49, 0x20, 0x00, 0x00, 0x50, 0x22, 0xFF, 0xFF, 0x20, 0x6A, 0x00, 0x00, 0x72, 0xAD, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0x43, 0x82, 0xA5, 0xFF, 0xFF, 0x00, 0x00, 0x42, 0xFD, 0x83, 0x47, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0x3B, 0x87, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x45, 0x8C, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0xE8, 0x98, 0x90, 0x5B, 0xD9, 0xFC, 0x00, 0x00, 0xF6, 0x99, 0x87, 0xC2, 0xBD, 0xB8, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0xC6, 0xAB, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x61, 0x9D, 0xAA, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x91, 0x91, 0x65, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0xA2, 0x82, 0xD9, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0xB6, 0x7B, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0x78, 0xFF, 0xFF, 0x8C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x4A, 0x00, 0x00, 0x01, 0xC9, 0xFF, 0xFF, 0x5E, 0xC1, 0x00, 0x00, 0x4E, 0x9D, 0xFF, 0xFF, 0x54, 0x7A, 0x06, 0xCF, 0x63, 0x7D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x91, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x35, 0x45, 0x91, 0x71, 0xFF, 0xFF, 0x00, 0x00, 0x65, 0x80, 0x95, 0x8F, 0xF8, 0xB9, 0x00, 0x00, 0xA4, 0xFE, 0x9C, 0x67, 0xDA, 0xC0, 0x00, 0x00, 0xDE, 0x83, 0x9B, 0xEF, 0xB8, 0x28, 0x00, 0x00, 0xF0, 0x3A, 0x98, 0xE2, 0xA2, 0xBC, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0xCC, 0x91, 0xB1, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0xAE, 0x80, 0x86, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0xC8, 0x7A, 0x92, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0x60, 0x6C, 0x81, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0x51, 0x63, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x72, 0xFF, 0xFF, 0x95, 0xD0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0xED, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x7B, 0x00, 0x00, 0x05, 0xF4, 0xFF, 0xFF, 0x86, 0x0D, 0x00, 0x00, 0x3B, 0x82, 0xFF, 0xFF, 0x6D, 0x0B, 0x00, 0x00, 0x62, 0x81, 0xFF, 0xFF, 0x66, 0x49, 0x11, 0xCE, 0x75, 0x82, 0xFF, 0xFF, 0x34, 0x48, 0x0E, 0x49, 0x98, 0x01, 0xDD, 0x25, 0x00, 0x00, 0x2E, 0xA9, 0xAA, 0xC9, 0xBC, 0x55, 0x00, 0x00, 0x93, 0xB9, 0xA8, 0x99, 0x97, 0x59, 0x00, 0x00, 0xD0, 0xDF, 0xA7, 0xF7, 0x7B, 0x02, 0x00, 0x00, 0xEE, 0x2C, 0xAE, 0x45, 0x73, 0x47, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0xFE, 0x66, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0xA4, 0xA7, 0x61, 0xCF, 0x0A, 0x08, 0xFF, 0xFF, 0xA2, 0x28, 0x60, 0x47, 0x14, 0x21, 0xFF, 0xFF, 0x9F, 0x5A, 0x59, 0x89, 0x13, 0x6E, 0xFF, 0xFF, 0x9F, 0x01, 0x4C, 0xCB, 0x0E, 0x6E, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0xF7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x1B, 0x00, 0x00, 0x0D, 0x62, 0xFF, 0xFF, 0xA0, 0x27, 0x00, 0x00, 0x36, 0x3E, 0xFF, 0xFF, 0x9F, 0x73, 0x00, 0x00, 0x50, 0x36, 0xFF, 0xFF, 0xA4, 0x49, 0x00, 0x00, 0x68, 0x8B, 0xE2, 0x11, 0xA1, 0xA6, 0x00, 0x00, 0x78, 0x07, 0xB8, 0x7E, 0x8F, 0x3B, 0x00, 0x00, 0x96, 0x57, 0x2B, 0x61, 0x07, 0x1C, 0x2C, 0x9C, 0xB9, 0xFD, 0x10, 0x4B, 0x17, 0x5D, 0xC1, 0x50, 0xB9, 0x59, 0x1C, 0x9B, 0x14, 0x88, 0xEF, 0x1F, 0xBA, 0x29, 0x10, 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0xB7, 0x00, 0x08, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x48, 0x04, 0xD6, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0xE9, 0x03, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0xEC, 0x03, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0xC6, 0x0B, 0x4B, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x4A, 0xFF, 0xFF, 0xAA, 0x87, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0x6C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB6, 0xFF, 0x00, 0x00, 0x09, 0xAF, 0xFF, 0xFF, 0xB8, 0x5F, 0x00, 0x00, 0x33, 0x5B, 0xFF, 0xFF, 0xC4, 0xA1, 0x00, 0xE3, 0x42, 0xD8, 0xE3, 0xC4, 0xC8, 0x71, 0x00, 0x00, 0x47, 0xE0, 0xD1, 0x00, 0xD6, 0xCB, 0x00, 0x00, 0x4F, 0x4D, 0x96, 0x0B, 0xCF, 0x5E, 0x00, 0x00, 0x82, 0xAE, 0x00, 0x00, 0xB0, 0x0A, 0x46, 0xCE, 0xAC, 0x5D, 0x00, 0x00, 0x97, 0x4B, 0xBC, 0xCE, 0xA6, 0x6C, 0x00, 0x00, 0x72, 0x32, 0xF5, 0x29, 0xAA, 0x3F, 0x0C, 0x21, 0x51, 0xCE, 0xFF, 0xFF, 0xA9, 0x1F, 0x00, 0x00, 0x3F, 0x86, 0xFF, 0xFF, 0xAA, 0x40, 0x08, 0x2B, 0x42, 0x34, 0xFF, 0xFF, 0xA7, 0x61, 0x07, 0xA0, 0x3C, 0x27, 0xFF, 0xFF, 0xA7, 0x3E, 0x06, 0xEC, 0x37, 0xAE, 0xFF, 0xFF, 0xA6, 0xCA, 0x05, 0x7F, 0x32, 0xD2, 0xFF, 0xFF, 0xA5, 0x7E, 0xFF, 0xFF, 0xB6, 0xD6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x02, 0x05, 0x27, 0x02, 0xD5, 0xFF, 0xFF, 0xCF, 0x70, 0x00, 0x00, 0x26, 0x10, 0xEA, 0x38, 0xD6, 0x21, 0x00, 0x00, 0x26, 0x1F, 0xD4, 0xBF, 0xE6, 0x56, 0x00, 0x00, 0x27, 0x79, 0xB1, 0x41, 0xEE, 0x42, 0x00, 0x00, 0x4D, 0x30, 0x6C, 0x92, 0xEC, 0x29, 0x00, 0x00, 0x7E, 0xA9, 0x00, 0x00, 0xEA, 0x28, 0x53, 0xF0, 0x99, 0x76, 0x00, 0x00, 0xDF, 0x0B, 0xCB, 0x99, 0x94, 0xC9, 0x00, 0x00, 0xBA, 0x34, 0xEB, 0x35, 0x91, 0x54, 0x00, 0x00, 0x8F, 0x61, 0xFF, 0xFF, 0x90, 0x97, 0x00, 0x00, 0x7E, 0xFB, 0xFF, 0xFF, 0x94, 0x70, 0x00, 0x00, 0x72, 0x3C, 0xFF, 0xFF, 0x97, 0x70, 0x00, 0x00, 0x66, 0xC4, 0xFF, 0xFF, 0x98, 0xC8, 0x00, 0x00, 0x60, 0xAB, 0xFF, 0xFF, 0x99, 0x1C, 0x00, 0x00, 0x5C, 0x01, 0xFF, 0xFF, 0x99, 0x43, 0xFF, 0x7D, 0xC4, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCF, 0x5E, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x5C, 0xD6, 0x2F, 0x00, 0x00, 0x07, 0x39, 0xEC, 0x2D, 0xDC, 0xD6, 0x00, 0x00, 0x10, 0x82, 0xDA, 0x10, 0xF2, 0x5F, 0x00, 0x00, 0x15, 0xC5, 0xBD, 0x73, 0xF9, 0x8E, 0x00, 0x00, 0x33, 0x26, 0x8A, 0xA8, 0xFB, 0x29, 0x00, 0x00, 0x59, 0x02, 0x39, 0x2E, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0xFA, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x6E, 0x88, 0xCC, 0x00, 0x00, 0xFF, 0x5F, 0xAB, 0x15, 0x83, 0x3E, 0x00, 0x00, 0xED, 0x0B, 0xE1, 0x38, 0x78, 0xC4, 0x00, 0x00, 0xC3, 0xD2, 0xFF, 0xFF, 0x68, 0x84, 0x00, 0x00, 0xB0, 0x85, 0xFF, 0xFF, 0x76, 0x24, 0x00, 0x00, 0xA0, 0xE4, 0xFF, 0xFF, 0x7E, 0x91, 0x00, 0x00, 0x91, 0xA7, 0xFF, 0xFF, 0x82, 0x67, 0x00, 0x00, 0x88, 0x0D, 0xFF, 0xFF, 0x84, 0xC0, 0x00, 0x00, 0x7F, 0x24, 0xFF, 0xFF, 0x86, 0x92, 0xFF, 0x4C, 0xD2, 0x58, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x92, 0xDF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xC2, 0xDD, 0x67, 0x00, 0x00, 0x08, 0x24, 0xD7, 0x3F, 0xEB, 0xB5, 0x00, 0x00, 0x05, 0x54, 0xC5, 0xC1, 0xFD, 0x4C, 0x00, 0x00, 0x19, 0x95, 0x9E, 0x56, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0x86, 0x7A, 0xE4, 0xFF, 0xFF, 0x2B, 0x76, 0x3B, 0xA9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0x1B, 0x18, 0x4E, 0xFF, 0xFF, 0x52, 0xDE, 0x58, 0x81, 0x28, 0x33, 0xFF, 0xFF, 0x91, 0x94, 0x41, 0xB6, 0x00, 0x00, 0xFF, 0xFF, 0xAD, 0xAD, 0x4A, 0x22, 0x00, 0x00, 0xF0, 0x89, 0xFD, 0xF3, 0x3B, 0x88, 0x00, 0x00, 0xD8, 0xBA, 0xFF, 0xFF, 0x4C, 0xF0, 0x00, 0x00, 0xC8, 0x42, 0xFF, 0xFF, 0x57, 0x69, 0x00, 0x00, 0xB9, 0x6E, 0xFF, 0xFF, 0x60, 0x5C, 0x00, 0x00, 0xAD, 0xB6, 0xFF, 0xFF, 0x69, 0x1A, 0x00, 0x00, 0xA1, 0xFA, 0xFF, 0xFF, 0x6E, 0x6C, 0xFC, 0xE9, 0xDE, 0x87, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xC8, 0xE3, 0x58, 0x00, 0x00, 0x08, 0x7D, 0xD7, 0x71, 0xE7, 0x02, 0x00, 0x00, 0x04, 0x1E, 0xC4, 0xF4, 0xF2, 0x80, 0x00, 0x00, 0x0A, 0x3D, 0xAB, 0xCD, 0xFE, 0x69, 0x00, 0x00, 0x19, 0xF5, 0x7E, 0x7E, 0xFF, 0xFF, 0x0F, 0xDB, 0x2A, 0x90, 0x42, 0xC8, 0xFF, 0xFF, 0x02, 0x80, 0x42, 0x37, 0x04, 0xBE, 0xFF, 0xFF, 0x14, 0x1E, 0x45, 0x4C, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0x7E, 0x3C, 0x41, 0x29, 0x46, 0xFF, 0xFF, 0x83, 0x58, 0x19, 0x30, 0x07, 0xB6, 0xFF, 0xFF, 0x90, 0xED, 0x29, 0x21, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0xE6, 0x21, 0x4F, 0x3E, 0x60, 0xFF, 0xFF, 0xFF, 0x97, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x2A, 0xFE, 0x64, 0x37, 0x3F, 0x00, 0x00, 0xD7, 0xC2, 0xFF, 0xFF, 0x3B, 0x55, 0x04, 0xFA, 0xCC, 0xDF, 0xFF, 0xFF, 0x42, 0x6E, 0x00, 0x00, 0xC0, 0x86, 0xFF, 0xFF, 0x4D, 0x2D, 0xF4, 0xEB, 0xE5, 0x69, 0x00, 0x00, 0x08, 0x5A, 0xDD, 0xC9, 0xE8, 0x41, 0x00, 0x00, 0x0A, 0xC5, 0xC8, 0x0F, 0xEC, 0xC9, 0x00, 0x00, 0x04, 0x9C, 0xB1, 0x85, 0xF5, 0xF3, 0x00, 0x00, 0x0E, 0x02, 0x89, 0xEB, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xD4, 0x48, 0x99, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x84, 0x0E, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0x43, 0x67, 0x00, 0x00, 0xFF, 0xFF, 0x1B, 0x2C, 0x3E, 0xE9, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0xCD, 0x35, 0x20, 0x24, 0x16, 0xFF, 0xFF, 0x70, 0x25, 0x16, 0xE0, 0x1D, 0x6E, 0xFF, 0xFF, 0x7E, 0xAD, 0x15, 0x31, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0x4F, 0x21, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0xDE, 0x23, 0xF7, 0x2F, 0xE1, 0xFF, 0xFF, 0xF1, 0xCB, 0x00, 0x00, 0x1E, 0x97, 0xFF, 0xFF, 0xFF, 0xD3, 0x07, 0x0A, 0x00, 0x00, 0xEF, 0x76, 0xFF, 0xFF, 0x2B, 0xBB, 0x00, 0x00, 0xDC, 0x9C, 0xFF, 0xFF, 0x2E, 0x9D, 0xE9, 0x83, 0xEA, 0x89, 0x00, 0x00, 0x0B, 0x97, 0xCF, 0xD6, 0xEB, 0x49, 0x00, 0x00, 0x06, 0x59, 0xB7, 0xD4, 0xEF, 0xAD, 0x00, 0x00, 0x07, 0xBD, 0x9B, 0xE7, 0xFB, 0xED, 0x00, 0x00, 0x0D, 0x17, 0x65, 0x53, 0xFF, 0xFF, 0x05, 0x69, 0x24, 0xC0, 0x1E, 0x05, 0xFF, 0xFF, 0x00, 0x00, 0x45, 0x3D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0xBC, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0xAD, 0x35, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0xC6, 0x2C, 0xE5, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x8F, 0x29, 0xCE, 0x18, 0x05, 0xFF, 0xFF, 0x6C, 0xD2, 0x13, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0x9B, 0x1D, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0xBD, 0x1D, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0xAA, 0xA6, 0x1D, 0xDB, 0x00, 0x00, 0xFF, 0xFF, 0xC9, 0xE5, 0x1F, 0x11, 0x28, 0xA4, 0xFF, 0xFF, 0xF2, 0xF0, 0x00, 0x00, 0x19, 0x57, 0xFF, 0xFF, 0xFD, 0x8E, 0x03, 0xE8, 0xDA, 0xC3, 0xEC, 0xDC, 0x00, 0x00, 0x09, 0x42, 0xBF, 0x5D, 0xEC, 0x30, 0x00, 0x00, 0x04, 0xF1, 0xA4, 0x9F, 0xF4, 0x5C, 0x00, 0x00, 0x07, 0x8F, 0x78, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0x1B, 0x26, 0x41, 0x6C, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0xF4, 0x0D, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x36, 0x14, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0xD1, 0x2C, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xB9, 0x24, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x1E, 0x3D, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x83, 0x19, 0x81, 0x0D, 0x3D, 0xFF, 0xFF, 0x70, 0xDF, 0x0D, 0x3D, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x45, 0x17, 0xB7, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0x78, 0x18, 0x79, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0x7D, 0x18, 0xAA, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x1E, 0x17, 0x65, 0x00, 0x00, 0xFF, 0xFF, 0xD1, 0x3F, 0x16, 0xC4, 0xFF, 0xFF, 0x51, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0xCB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0x55, 0x00, 0x00, 0x21, 0x99, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x3D, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0x75, 0x4B, 0x75, 0xFF, 0xFF, 0x00, 0x00, 0x49, 0x3C, 0x4B, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x48, 0x46, 0xFF, 0xFF, 0x00, 0x00, 0x87, 0x34, 0x47, 0x34, 0xFF, 0xFF, 0x00, 0x00, 0xA6, 0x00, 0x48, 0xD8, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0x84, 0x48, 0x17, 0xFF, 0xFF, 0x0E, 0x41, 0xEE, 0x40, 0x2E, 0x41, 0xFE, 0x5B, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0x30, 0xE2, 0x30, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0x70, 0xD4, 0x39, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x43, 0xC8, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0xCA, 0xBF, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x70, 0xB6, 0x69, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0x7D, 0xFF, 0xFF, 0x54, 0x82, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0x64, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x0C, 0x00, 0x00, 0x22, 0x4F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x56, 0x49, 0xFF, 0xFF, 0x00, 0x00, 0x2E, 0x90, 0x4D, 0xED, 0xFF, 0xFF, 0x00, 0x00, 0x44, 0x40, 0x51, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0x65, 0x4E, 0x2C, 0xFF, 0xFF, 0x0F, 0xCB, 0x88, 0x6B, 0x48, 0x66, 0xFF, 0xFF, 0x00, 0x00, 0xA6, 0x0C, 0x51, 0x67, 0xFF, 0xFF, 0x00, 0x00, 0xC6, 0xA9, 0x52, 0x59, 0xFF, 0xFF, 0x16, 0xE9, 0xF3, 0xDB, 0x35, 0x59, 0xFA, 0x83, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0x21, 0xDA, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x19, 0xCD, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0x24, 0xC2, 0x81, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x7F, 0xB9, 0x81, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0x5C, 0xB1, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0x53, 0x69, 0xFF, 0xFF, 0x57, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x5A, 0x00, 0x00, 0x25, 0x0C, 0xFF, 0xFF, 0x1F, 0xE6, 0x00, 0x00, 0x46, 0xB7, 0xFF, 0xFF, 0x00, 0x00, 0x26, 0x47, 0x56, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x3D, 0x3A, 0x58, 0xF4, 0xFF, 0xFF, 0x00, 0x00, 0x61, 0x36, 0x53, 0xFE, 0xFF, 0xFF, 0x18, 0x7F, 0x87, 0xF2, 0x4C, 0xC4, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0x55, 0x5A, 0x75, 0xFF, 0xFF, 0x00, 0x00, 0xC8, 0xD4, 0x5B, 0x8C, 0xFF, 0xFF, 0x20, 0x48, 0xF6, 0x74, 0x3B, 0x63, 0xF1, 0x81, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0x1E, 0xD6, 0x56, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x30, 0xC8, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x51, 0xBD, 0x86, 0x00, 0x00, 0xFF, 0xFF, 0x49, 0x71, 0xB4, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x53, 0xDE, 0xAB, 0x83, 0x00, 0x00, 0xFF, 0xFF, 0x5C, 0x63, 0xFF, 0xFF, 0x5B, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x59, 0x29, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x31, 0x00, 0x00, 0x22, 0x42, 0xFF, 0xFF, 0x1F, 0xCC, 0x00, 0x00, 0x4A, 0xA4, 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0x8C, 0x64, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x93, 0x5D, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x7F, 0x5C, 0x57, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0xF4, 0x65, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0x9E, 0x63, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xCC, 0x40, 0x64, 0xB3, 0xFF, 0xFF, 0x00, 0x00, 0xF5, 0x7E, 0x5B, 0xE3, 0xE5, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0xFD, 0xCC, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x88, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x33, 0xB6, 0x47, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x85, 0xAC, 0x89, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xF1, 0xA4, 0x0D, 0x00, 0x00, 0xFF, 0xFF, 0x66, 0xAF, 0xFF, 0xFF, 0x6A, 0x36, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x99, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0xA8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x6C, 0x00, 0x00, 0x4D, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x3B, 0x69, 0x9F, 0xFF, 0xFF, 0x00, 0x00, 0x38, 0x73, 0x64, 0x26, 0xFF, 0xFF, 0x00, 0x00, 0x59, 0x90, 0x64, 0xA1, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0xAB, 0x6E, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0x77, 0x70, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0xD5, 0xE2, 0x73, 0x6A, 0xEF, 0xA3, 0x00, 0x00, 0xF3, 0x7D, 0x6B, 0x41, 0xD6, 0xF4, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0x1C, 0xC0, 0x19, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x9B, 0xB4, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x80, 0xAC, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0x66, 0x32, 0xA1, 0x6A, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0x27, 0x9A, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0xB2, 0xFF, 0xFF, 0x73, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x76, 0x39, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0xE8, 0x00, 0x00, 0x45, 0x03, 0xFF, 0xFF, 0x20, 0xE0, 0x00, 0xED, 0x61, 0x48, 0xFF, 0xFF, 0x00, 0x00, 0x25, 0x5D, 0x71, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0x1B, 0x75, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0xCC, 0x78, 0xB4, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x94, 0x80, 0xA7, 0xFA, 0x79, 0x00, 0x00, 0xDB, 0x90, 0x82, 0x68, 0xD6, 0x7B, 0x00, 0x00, 0xF2, 0x74, 0x7B, 0x01, 0xC1, 0x05, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0x78, 0xB1, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0x69, 0xA4, 0x1B, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0xED, 0x9D, 0x05, 0x00, 0x00, 0xFF, 0xFF, 0x78, 0xB5, 0x8F, 0x4B, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x10, 0x86, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x7E, 0xFF, 0xFF, 0x82, 0x9D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0xBD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0x48, 0x00, 0x00, 0x4B, 0x8E, 0xFF, 0xFF, 0x39, 0xDE, 0x00, 0x00, 0x5F, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x85, 0xE4, 0xFF, 0xFF, 0x00, 0x00, 0x35, 0x12, 0x85, 0x75, 0xFE, 0xE3, 0x00, 0x00, 0x62, 0x85, 0x89, 0x42, 0xE7, 0x35, 0x00, 0x00, 0x98, 0x64, 0x8D, 0x58, 0xD6, 0x48, 0x00, 0x00, 0xD7, 0x22, 0x8C, 0xC3, 0xB3, 0x65, 0x00, 0x00, 0xEF, 0x1E, 0x8D, 0xD7, 0xA5, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0xCB, 0x94, 0xB2, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x42, 0x8A, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0xF8, 0x80, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0xDC, 0x78, 0xDF, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0x3E, 0x70, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0x3B, 0xFF, 0xFF, 0x8E, 0x27, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0xC7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0x4A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xB5, 0x00, 0x00, 0x34, 0x7F, 0xFF, 0xFF, 0x62, 0xCC, 0x00, 0x00, 0x57, 0x45, 0xFF, 0xFF, 0x5E, 0x6A, 0x0E, 0xDC, 0x69, 0x26, 0xED, 0x7E, 0x15, 0x9A, 0x00, 0x00, 0x94, 0x6B, 0xC9, 0x22, 0x00, 0x00, 0x27, 0x17, 0x9E, 0x6A, 0xAF, 0xA3, 0x00, 0x00, 0x81, 0x12, 0x9C, 0x95, 0x93, 0xF1, 0x00, 0x00, 0xC8, 0x34, 0x9A, 0xBA, 0x77, 0x96, 0x00, 0x00, 0xE6, 0x8F, 0xA3, 0x85, 0x6C, 0xE1, 0x00, 0x00, 0xFE, 0xC1, 0xA3, 0x06, 0x61, 0x8E, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x99, 0x5B, 0xEA, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xEE, 0x54, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xC6, 0x4F, 0x19, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x40, 0x47, 0xEF, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0xCD, 0xFE, 0x8B, 0x9B, 0x68, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x1C, 0x00, 0x00, 0x03, 0xEC, 0xFF, 0xFF, 0x9B, 0x9C, 0x00, 0x00, 0x2B, 0x53, 0xFF, 0xFF, 0x9D, 0xAE, 0x00, 0x00, 0x39, 0xFE, 0xF8, 0xA9, 0x9F, 0xE8, 0x00, 0x00, 0x53, 0xBD, 0xD4, 0x62, 0x9B, 0xDB, 0x00, 0x00, 0x61, 0xD5, 0xA7, 0x7F, 0x81, 0x77, 0x00, 0x00, 0x87, 0xD6, 0x2C, 0x2E, 0x0B, 0xD6, 0x25, 0xCC, 0xB0, 0x1D, 0x05, 0xAF, 0x19, 0x05, 0xB5, 0x2E, 0xAF, 0xA1, 0x0B, 0xC9, 0x17, 0xA6, 0xE6, 0x3E, 0xB0, 0x98, 0x0B, 0xE6, 0x07, 0x50, 0xFF, 0xFF, 0xB3, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0x9B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAC, 0xFD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x53, 0x03, 0x46, 0x00, 0xDA, 0xFF, 0xFF, 0xA7, 0xDB, 0xFE, 0x98, 0xA6, 0xE8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x7B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB6, 0x1B, 0x00, 0x00, 0x1F, 0xBA, 0xF7, 0x6E, 0xBD, 0xD3, 0x00, 0x00, 0x29, 0x8E, 0xD8, 0x65, 0xC2, 0xAA, 0x00, 0x00, 0x2A, 0x2A, 0xC0, 0x1B, 0xC8, 0x30, 0x00, 0x00, 0x3D, 0x57, 0x8C, 0x29, 0xC3, 0x3F, 0x00, 0x00, 0x6F, 0x57, 0x00, 0x00, 0x9E, 0x8F, 0x36, 0x96, 0xA1, 0x64, 0x00, 0x00, 0x98, 0x0A, 0xB6, 0xDC, 0x99, 0x4C, 0x00, 0x00, 0x74, 0x1B, 0xE6, 0x59, 0x9D, 0x8C, 0x00, 0x4F, 0x5C, 0x93, 0xFF, 0xFF, 0xA1, 0x4A, 0x00, 0x00, 0x4B, 0xDC, 0xFF, 0xFF, 0xA0, 0xBB, 0x00, 0x00, 0x46, 0x2C, 0xFF, 0xFF, 0xA0, 0x7D, 0x00, 0x00, 0x40, 0xA2, 0xFF, 0xFF, 0xA0, 0x7A, 0x00, 0x00, 0x3C, 0x42, 0xFF, 0xFF, 0xA0, 0x7D, 0x00, 0x00, 0x38, 0x89, 0xFF, 0xFF, 0x9F, 0x81, 0xFB, 0x32, 0xB2, 0x46, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x64, 0xB9, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xC0, 0xBE, 0x71, 0x00, 0x00, 0x02, 0x8E, 0xF1, 0xB3, 0xC6, 0xCB, 0x00, 0x00, 0x0F, 0x4C, 0xDA, 0x26, 0xCD, 0xFE, 0x00, 0x00, 0x0F, 0xD9, 0xC5, 0xF5, 0xD9, 0x75, 0x00, 0x00, 0x12, 0x35, 0xA8, 0x7B, 0xDF, 0x44, 0x00, 0x00, 0x31, 0x1E, 0x6E, 0x25, 0xE3, 0xA5, 0x00, 0x00, 0x65, 0x7D, 0x00, 0x00, 0xDC, 0x85, 0x4B, 0xDC, 0x8B, 0x41, 0x00, 0x00, 0xD7, 0x98, 0xBF, 0x1B, 0x85, 0xAC, 0x00, 0x00, 0xB7, 0xCB, 0xE6, 0xC4, 0x84, 0xB3, 0x00, 0x00, 0x99, 0xCF, 0xFF, 0xFF, 0x87, 0x75, 0x00, 0x00, 0x82, 0x25, 0xFF, 0xFF, 0x87, 0xAF, 0x00, 0x00, 0x7A, 0x84, 0xFF, 0xFF, 0x8A, 0x62, 0x00, 0x00, 0x74, 0x34, 0xFF, 0xFF, 0x8C, 0x5D, 0x00, 0x00, 0x6A, 0x2F, 0xFF, 0xFF, 0x8E, 0xB9, 0x00, 0x00, 0x63, 0x36, 0xFF, 0xFF, 0x8F, 0x07, 0xF8, 0x0C, 0xBE, 0xEB, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x84, 0xC8, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xEA, 0xA2, 0xCB, 0x77, 0x00, 0x00, 0x06, 0xA3, 0xD9, 0x24, 0xD2, 0x50, 0x00, 0x00, 0x01, 0x71, 0xC7, 0x6B, 0xDD, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xE3, 0xEC, 0xA6, 0x00, 0x00, 0x16, 0x2B, 0x89, 0x68, 0xF4, 0x90, 0x00, 0x00, 0x38, 0x5C, 0x49, 0x0F, 0xFB, 0xCC, 0x00, 0x00, 0x66, 0x02, 0x00, 0x00, 0xFB, 0x06, 0x43, 0xA9, 0x77, 0xFD, 0x00, 0x00, 0xF9, 0x8E, 0xA9, 0x32, 0x72, 0x2B, 0x00, 0x00, 0xE0, 0x9C, 0xDE, 0xA3, 0x6A, 0x2F, 0x00, 0x00, 0xCB, 0xB3, 0xF6, 0xA5, 0x62, 0x15, 0x00, 0x00, 0xB2, 0x74, 0xFF, 0xFF, 0x62, 0x99, 0x00, 0x00, 0xA7, 0x17, 0xFF, 0xFF, 0x6B, 0x2E, 0x00, 0x00, 0x9C, 0x1D, 0xFF, 0xFF, 0x71, 0xB1, 0x00, 0x00, 0x90, 0xBF, 0xFF, 0xFF, 0x77, 0x37, 0x00, 0x00, 0x87, 0xE7, 0xFF, 0xFF, 0x78, 0xC6, 0xF7, 0x5F, 0xCC, 0xE4, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x99, 0xD3, 0xCA, 0x00, 0x00, 0x05, 0xE1, 0xD8, 0xED, 0xD4, 0x26, 0x00, 0x00, 0x03, 0xE8, 0xC5, 0xA9, 0xDA, 0xED, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x51, 0xE8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x9B, 0xC6, 0xF9, 0x96, 0x00, 0x00, 0x15, 0x8F, 0x76, 0x34, 0xFF, 0xFF, 0x19, 0xD6, 0x2F, 0x5A, 0x10, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x67, 0xE5, 0x11, 0xA5, 0xFF, 0xFF, 0x49, 0xAD, 0x53, 0x23, 0x26, 0xD0, 0xFF, 0xFF, 0x8E, 0xE7, 0x3B, 0x9D, 0x00, 0x00, 0xFF, 0xFF, 0xBB, 0xB4, 0x47, 0xEF, 0x00, 0x00, 0xF7, 0xD5, 0xF2, 0xD7, 0x3C, 0xB5, 0x00, 0x00, 0xD6, 0xF7, 0xFF, 0xFF, 0x36, 0xBC, 0x00, 0xF5, 0xCA, 0xF2, 0xFF, 0xFF, 0x3F, 0x56, 0x00, 0x00, 0xBF, 0xC0, 0xFF, 0xFF, 0x49, 0x49, 0x00, 0x00, 0xB6, 0xC6, 0xFF, 0xFF, 0x53, 0x2A, 0x00, 0x00, 0xAC, 0x1F, 0xFF, 0xFF, 0x59, 0x7C, 0xF3, 0x3D, 0xD7, 0x25, 0x00, 0x00, 0x04, 0x14, 0xDF, 0x7E, 0xD9, 0x22, 0x00, 0x00, 0x0A, 0x0C, 0xC9, 0x3B, 0xDA, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x30, 0xE0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1E, 0xEE, 0xB3, 0x00, 0x00, 0x05, 0x19, 0x78, 0x35, 0xFF, 0xFF, 0x00, 0x46, 0x21, 0x95, 0x42, 0x67, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x24, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0x04, 0x44, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0x79, 0x32, 0xD1, 0x1E, 0x9C, 0xFF, 0xFF, 0x83, 0x74, 0x13, 0x97, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x42, 0x22, 0x53, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0xCA, 0x1B, 0xEE, 0x2C, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF6, 0x9A, 0xFF, 0xFF, 0x24, 0x83, 0x00, 0x00, 0xDD, 0x69, 0xFF, 0xFF, 0x27, 0x9A, 0x00, 0x00, 0xD3, 0x7A, 0xFF, 0xFF, 0x2F, 0x06, 0x00, 0x00, 0xC9, 0x88, 0xFF, 0xFF, 0x36, 0xBA, 0xEA, 0x80, 0xDC, 0x6F, 0x00, 0x00, 0x0B, 0xC6, 0xD1, 0x4A, 0xDC, 0x8D, 0x00, 0x00, 0x04, 0x6E, 0xB9, 0xFA, 0xDE, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x0C, 0xE7, 0x75, 0x00, 0x00, 0x01, 0x4E, 0x83, 0xFC, 0xFC, 0x80, 0x00, 0x00, 0x11, 0x38, 0x57, 0xF9, 0xFF, 0xFF, 0x07, 0xD1, 0x23, 0x71, 0x00, 0x84, 0xFF, 0xFF, 0x00, 0x00, 0x43, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x15, 0x8C, 0x36, 0x33, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0xAD, 0x2B, 0xF2, 0x1C, 0x96, 0xFF, 0xFF, 0x6C, 0x65, 0x12, 0x8F, 0x0C, 0x4C, 0xFF, 0xFF, 0x7F, 0x05, 0x17, 0x5E, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0xDC, 0x1C, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0x58, 0x1A, 0x31, 0x00, 0x00, 0xFF, 0xFF, 0xDA, 0x5B, 0x1A, 0x47, 0x24, 0x6C, 0xFF, 0xFF, 0xFB, 0x1A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x52, 0x00, 0x00, 0xEA, 0x9D, 0xFF, 0xFF, 0x1B, 0xE6, 0xDD, 0x55, 0xE0, 0xC3, 0x00, 0x00, 0x0A, 0x6E, 0xC1, 0x1B, 0xDD, 0xE7, 0x00, 0x00, 0x01, 0x70, 0xAB, 0x7B, 0xE3, 0x4C, 0x00, 0x00, 0x00, 0xBC, 0x91, 0x79, 0xF4, 0x1C, 0x00, 0x00, 0x06, 0x2F, 0x5E, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0x21, 0xDB, 0x1F, 0x63, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0x2E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x39, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0x6B, 0x2D, 0x4E, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0x24, 0x25, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0x87, 0x21, 0xA6, 0x11, 0x3F, 0xFF, 0xFF, 0x75, 0xAB, 0x0F, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x13, 0x17, 0xFA, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x8D, 0x15, 0x66, 0x00, 0x00, 0xFF, 0xFF, 0xAC, 0x5C, 0x14, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x06, 0x16, 0x7B, 0x00, 0x00, 0xFF, 0xFF, 0xD9, 0x60, 0x18, 0x58, 0x17, 0xA2, 0xFF, 0xFF, 0xF3, 0xA8, 0x00, 0x00, 0xCD, 0x7D, 0xE0, 0xC5, 0x00, 0x00, 0x05, 0x21, 0xB2, 0xCA, 0xE1, 0x40, 0x00, 0x00, 0x01, 0x67, 0x99, 0xF0, 0xED, 0x19, 0x00, 0x00, 0x02, 0x83, 0x72, 0x64, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0xBE, 0x41, 0x8E, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0x6B, 0x14, 0xAA, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0xAA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0x66, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xB1, 0x25, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x4C, 0x1D, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x17, 0x8B, 0x0C, 0x05, 0xFF, 0xFF, 0x5A, 0x1C, 0x0C, 0x05, 0x0A, 0x83, 0xFF, 0xFF, 0x71, 0xFF, 0x0A, 0x83, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0xCE, 0x10, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0x13, 0x11, 0x6F, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0xA2, 0x11, 0xAA, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0x4B, 0x11, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x75, 0x10, 0x57, 0xFF, 0xFF, 0x41, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0xE5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x22, 0x12, 0xFF, 0xFF, 0x00, 0x00, 0x12, 0x5B, 0x39, 0x84, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0xB7, 0x38, 0x47, 0xFF, 0xFF, 0x00, 0x00, 0x4D, 0x6F, 0x33, 0xB2, 0xFF, 0xFF, 0x00, 0x00, 0x61, 0xF6, 0x38, 0xB0, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0xAA, 0x38, 0xAF, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0xDB, 0x38, 0xA3, 0xFF, 0xFF, 0x00, 0x00, 0xC2, 0x39, 0x34, 0x31, 0xFF, 0xFF, 0x06, 0x66, 0xE6, 0x65, 0x27, 0x6D, 0xFF, 0xFF, 0x02, 0x48, 0xFD, 0x5B, 0x22, 0x48, 0xE2, 0x4E, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0xE1, 0xD7, 0xC2, 0x00, 0x00, 0xFF, 0xFF, 0x16, 0x24, 0xCD, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0x12, 0xEA, 0xC3, 0x9F, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0x75, 0xBC, 0xC7, 0x00, 0x00, 0xFF, 0xFF, 0x25, 0x9E, 0xFF, 0xFF, 0x44, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0x69, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0xE9, 0x00, 0x00, 0x28, 0x35, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x4A, 0x43, 0x24, 0xFF, 0xFF, 0x00, 0x00, 0x27, 0xD6, 0x3D, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x4B, 0x1D, 0x38, 0xB7, 0xFF, 0xFF, 0x00, 0x00, 0x5E, 0x0E, 0x3D, 0xB9, 0xFF, 0xFF, 0x00, 0x00, 0x81, 0x1C, 0x3E, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0x49, 0x3E, 0x7A, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0xD7, 0x3C, 0xCD, 0xFF, 0xFF, 0x0C, 0x8B, 0xEB, 0x12, 0x26, 0xB6, 0xFE, 0xCC, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0xDB, 0xDB, 0xE7, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xFC, 0xD2, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0xBC, 0xC7, 0x35, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0x02, 0xBF, 0x89, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0x9C, 0xB8, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xC1, 0xFF, 0xFF, 0x48, 0xF7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0xD0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0x66, 0x00, 0x00, 0x24, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x8B, 0xFF, 0xFF, 0x00, 0x00, 0x21, 0x90, 0x44, 0x66, 0xFF, 0xFF, 0x00, 0x00, 0x45, 0xCD, 0x43, 0x9D, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x46, 0x40, 0x6A, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0x4E, 0x41, 0x44, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x15, 0x44, 0xA6, 0xFF, 0xFF, 0x00, 0x00, 0xC5, 0x11, 0x48, 0xA3, 0xFF, 0xFF, 0x14, 0xB4, 0xF0, 0xDD, 0x2E, 0x53, 0xF4, 0x9A, 0x00, 0x00, 0xFF, 0xFF, 0x28, 0x07, 0xD4, 0x1D, 0x00, 0x00, 0xFF, 0xFF, 0x15, 0x9A, 0xC9, 0x8D, 0x00, 0x00, 0xFF, 0xFF, 0x15, 0xAA, 0xC0, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0x25, 0x8D, 0xBA, 0xAF, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x72, 0xB2, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0x50, 0xFF, 0xFF, 0x4E, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0xA6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x2B, 0x00, 0x00, 0x22, 0xD5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x52, 0x19, 0xFF, 0xFF, 0x00, 0x00, 0x24, 0x67, 0x46, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0x3A, 0xB4, 0x4D, 0xA0, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0x80, 0x49, 0x62, 0xFF, 0xFF, 0x0F, 0x1E, 0x7E, 0x9F, 0x47, 0x23, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x67, 0x50, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0xC9, 0xAB, 0x54, 0x6A, 0xFF, 0xFF, 0x00, 0x00, 0xF2, 0x05, 0x49, 0x39, 0xE6, 0x0C, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0xDA, 0xC8, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0xFF, 0xC0, 0x4C, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0x1F, 0xB8, 0xC4, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xBC, 0xB1, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0xEE, 0xAA, 0x4A, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0x6C, 0xFF, 0xFF, 0x54, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0xD0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0x0C, 0x00, 0x00, 0x21, 0x82, 0xFF, 0xFF, 0x20, 0xEC, 0x00, 0x00, 0x42, 0x04, 0xFF, 0xFF, 0x2C, 0xAF, 0x26, 0x43, 0x39, 0x66, 0xFF, 0xFF, 0x00, 0x00, 0x35, 0xFC, 0x55, 0x48, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0x2A, 0x58, 0x04, 0xFF, 0xFF, 0x00, 0x00, 0x71, 0x5C, 0x60, 0x58, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0x4F, 0x60, 0x0B, 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0xAD, 0x61, 0xF9, 0xEA, 0x81, 0x00, 0x00, 0xEE, 0xAC, 0x5A, 0x4D, 0xD5, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0x6A, 0xBD, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0x80, 0xB4, 0xCE, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0x43, 0xAD, 0x55, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0x8E, 0xA5, 0xE7, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x1B, 0x9F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x5C, 0xB4, 0xFD, 0xB6, 0x64, 0xC5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x56, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0x15, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0xB5, 0x00, 0x00, 0x3E, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0xDD, 0x62, 0x2B, 0xFF, 0xFF, 0x00, 0x00, 0x4D, 0xCA, 0x64, 0xB2, 0xFF, 0xFF, 0x00, 0x00, 0x70, 0x77, 0x6A, 0xC6, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0xE0, 0x6F, 0x8B, 0xF2, 0xF7, 0x00, 0x00, 0xD3, 0xD4, 0x70, 0x82, 0xD4, 0x0D, 0x00, 0x00, 0xF1, 0xF3, 0x6C, 0x9C, 0xBD, 0x21, 0x00, 0x00, 0xFD, 0xD1, 0x65, 0xAD, 0xAB, 0x8E, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0x61, 0xA4, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x09, 0x9E, 0x61, 0x00, 0x00, 0xFF, 0xFF, 0x66, 0x82, 0x96, 0xA5, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0x87, 0x8B, 0x5C, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0xF4, 0xFB, 0xE6, 0x71, 0xA8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0x72, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0x15, 0x00, 0x00, 0x3A, 0x59, 0xFF, 0xFF, 0x30, 0x62, 0x00, 0x00, 0x54, 0x57, 0xFF, 0xFF, 0x00, 0x00, 0x05, 0x0F, 0x75, 0xE3, 0xFF, 0xFF, 0x00, 0x00, 0x37, 0xAE, 0x77, 0x6C, 0xEA, 0x3D, 0x00, 0x00, 0x5C, 0xD7, 0x79, 0x5B, 0xD7, 0x58, 0x00, 0x00, 0x8A, 0xAB, 0x7D, 0x6A, 0xCA, 0xD7, 0x00, 0x00, 0xC8, 0x25, 0x79, 0xF6, 0xB0, 0xB1, 0x00, 0x00, 0xEC, 0x7E, 0x81, 0x3C, 0x9D, 0x95, 0x00, 0x00, 0xF6, 0xBC, 0x83, 0x45, 0x8F, 0xC2, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0x62, 0x85, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0x04, 0x80, 0x6F, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x45, 0x7A, 0x8A, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x82, 0x71, 0xCD, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x12, 0xFA, 0x52, 0x83, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xDB, 0x82, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0xD4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0xCC, 0x00, 0x00, 0x24, 0x77, 0xFF, 0xFF, 0x66, 0xDE, 0x00, 0x00, 0x41, 0x4A, 0xF8, 0xB1, 0x4C, 0xF3, 0x00, 0x00, 0x64, 0xED, 0xD3, 0xDA, 0x13, 0x38, 0x00, 0x00, 0x87, 0xDF, 0xB7, 0x7C, 0x00, 0x00, 0x23, 0xCA, 0x8F, 0x84, 0xA4, 0x33, 0x00, 0x00, 0x75, 0x3B, 0x8C, 0xBB, 0x8F, 0xEE, 0x00, 0x00, 0xBF, 0x45, 0x8B, 0x4D, 0x77, 0x36, 0x00, 0x00, 0xE8, 0xC1, 0x94, 0xE8, 0x63, 0xB3, 0x00, 0x00, 0xF8, 0x81, 0x9D, 0xB6, 0x61, 0x51, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x1F, 0x5B, 0x25, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0x0F, 0x57, 0xB2, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0x23, 0x51, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0x59, 0x47, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0xD5, 0xF7, 0xDF, 0x90, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x07, 0x92, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9A, 0x4B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE4, 0x97, 0x76, 0x00, 0x00, 0x15, 0x74, 0xF9, 0x60, 0x95, 0xF3, 0x00, 0x00, 0x28, 0xD2, 0xE7, 0x68, 0x95, 0xF7, 0x00, 0x00, 0x3B, 0x60, 0xC4, 0x11, 0x92, 0x00, 0x00, 0x00, 0x49, 0x72, 0x96, 0xD1, 0x70, 0xB7, 0x00, 0x00, 0x78, 0xC7, 0x2C, 0xD6, 0x11, 0x9B, 0x1C, 0xB9, 0xA4, 0xA1, 0x05, 0x98, 0x1C, 0xD0, 0xA0, 0xAB, 0xA3, 0x9F, 0x00, 0x00, 0x1A, 0x95, 0xD9, 0xB1, 0xA4, 0xF5, 0x05, 0x16, 0x15, 0x10, 0xF6, 0x5E, 0xA9, 0xD9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAA, 0x95, 0x00, 0x00, 0x01, 0xF2, 0xFF, 0xFF, 0xA7, 0x03, 0x00, 0x00, 0x03, 0x5E, 0xFF, 0xFF, 0xA5, 0x71, 0x00, 0x00, 0x04, 0xF1, 0xFF, 0xFF, 0xA3, 0xF9, 0x01, 0x0A, 0x0A, 0xD8, 0xFF, 0xFF, 0xA1, 0x19, 0xF6, 0x86, 0x9C, 0xF4, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xE0, 0xA1, 0xC9, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x14, 0xA6, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xEA, 0xA8, 0xB8, 0x00, 0x00, 0x0A, 0xC2, 0xDF, 0x61, 0xAF, 0xE6, 0x00, 0x00, 0x0D, 0x0A, 0xC9, 0x5C, 0xB5, 0x2E, 0x00, 0x00, 0x14, 0x0A, 0xAE, 0xEF, 0xB7, 0x94, 0x00, 0x00, 0x2F, 0xB5, 0x7F, 0x4B, 0xB2, 0xBE, 0x00, 0x00, 0x5C, 0x76, 0x00, 0x00, 0x90, 0xB4, 0x2D, 0xF5, 0x93, 0x16, 0x00, 0x00, 0x93, 0x30, 0xAB, 0x23, 0x89, 0x1E, 0x00, 0x00, 0x79, 0xE4, 0xE1, 0x64, 0x8C, 0xF9, 0x00, 0x00, 0x63, 0x52, 0xFF, 0xFF, 0x93, 0xE3, 0x00, 0x00, 0x4A, 0xF5, 0xFF, 0xFF, 0x99, 0x23, 0x00, 0x00, 0x47, 0xC5, 0xFF, 0xFF, 0x98, 0xE1, 0x00, 0x00, 0x43, 0x7C, 0xFF, 0xFF, 0x98, 0xDA, 0x00, 0x00, 0x3F, 0xBB, 0xFF, 0xFF, 0x98, 0xB8, 0x00, 0x00, 0x3F, 0x7A, 0xFF, 0xFF, 0x97, 0x52, 0xF2, 0x6E, 0xA9, 0x93, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x57, 0xAE, 0xB9, 0x00, 0x00, 0x00, 0x00, 0xE5, 0x39, 0xB2, 0x2B, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xF9, 0xB8, 0xC1, 0x00, 0x00, 0x01, 0xF6, 0xC9, 0x54, 0xC0, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x36, 0xC9, 0xB6, 0x00, 0x00, 0x02, 0xCD, 0x9A, 0x0D, 0xCE, 0xF8, 0x00, 0x00, 0x1E, 0xFE, 0x67, 0xD9, 0xD5, 0x77, 0x00, 0x00, 0x4B, 0x7B, 0x00, 0x00, 0xCD, 0xF0, 0x3F, 0x87, 0x7B, 0x04, 0x00, 0x00, 0xCB, 0xFF, 0xAF, 0x2B, 0x72, 0xEC, 0x00, 0x00, 0xB9, 0x1E, 0xE2, 0x83, 0x74, 0x42, 0x00, 0x00, 0x9C, 0x3B, 0xFE, 0x10, 0x7A, 0x86, 0x00, 0x00, 0x7F, 0xA8, 0xFF, 0xFF, 0x7B, 0x37, 0x00, 0x00, 0x7B, 0x8D, 0xFF, 0xFF, 0x7E, 0x0B, 0x00, 0x00, 0x74, 0xE6, 0xFF, 0xFF, 0x80, 0x63, 0x00, 0x00, 0x70, 0x9E, 0xFF, 0xFF, 0x81, 0x76, 0x00, 0x00, 0x6B, 0x6C, 0xFF, 0xFF, 0x82, 0xD7, 0xEF, 0x2A, 0xB7, 0x34, 0x00, 0x00, 0x00, 0x00, 0xEA, 0xC0, 0xBE, 0xF1, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x3E, 0xBF, 0xFC, 0x00, 0x00, 0x01, 0xA2, 0xC7, 0xF3, 0xC4, 0x8E, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x06, 0xCB, 0x86, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xDF, 0xDA, 0x32, 0x00, 0x00, 0x00, 0x00, 0x85, 0xF6, 0xE6, 0x49, 0x00, 0x00, 0x14, 0xC5, 0x58, 0xA2, 0xF0, 0xE5, 0x00, 0x00, 0x3C, 0x2C, 0x00, 0x00, 0xF0, 0x55, 0x3B, 0x47, 0x64, 0x34, 0x00, 0x00, 0xF0, 0x02, 0xA2, 0x0F, 0x5C, 0xFD, 0x00, 0x00, 0xDC, 0x4B, 0xDD, 0xD3, 0x58, 0xFD, 0x00, 0x00, 0xCA, 0x37, 0xF5, 0xAE, 0x57, 0x03, 0x00, 0x00, 0xAF, 0x5F, 0xFF, 0xFF, 0x52, 0x61, 0x00, 0x00, 0xA6, 0x44, 0xFF, 0xFF, 0x59, 0xCE, 0x00, 0x00, 0x9E, 0x2E, 0xFF, 0xFF, 0x5E, 0xDD, 0x00, 0x00, 0x96, 0x20, 0xFF, 0xFF, 0x64, 0x36, 0x00, 0x00, 0x8F, 0x06, 0xFF, 0xFF, 0x68, 0x2A, 0xEE, 0x1F, 0xC6, 0x02, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x64, 0xC8, 0x23, 0x00, 0x00, 0x05, 0xE9, 0xCB, 0xB9, 0xC9, 0x5D, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xF0, 0xCC, 0x6A, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x70, 0xD4, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x67, 0xE9, 0x15, 0x00, 0x00, 0x00, 0x00, 0x69, 0x97, 0xFB, 0xBC, 0x00, 0x00, 0x25, 0x23, 0x2B, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x4A, 0xE8, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0xE2, 0x4D, 0x8D, 0x1F, 0x32, 0xFF, 0xFF, 0x89, 0xC9, 0x34, 0x46, 0x00, 0x00, 0xFF, 0xFF, 0xC5, 0xD5, 0x3F, 0xB0, 0x00, 0x00, 0xF2, 0x8A, 0xF6, 0x10, 0x37, 0x9E, 0x00, 0x00, 0xD1, 0x83, 0xFF, 0xFF, 0x26, 0xDB, 0x00, 0x00, 0xC8, 0x93, 0xFF, 0xFF, 0x30, 0x14, 0x00, 0x00, 0xBF, 0x70, 0xFF, 0xFF, 0x36, 0x83, 0x00, 0x00, 0xB7, 0x4D, 0xFF, 0xFF, 0x3E, 0x16, 0x00, 0x00, 0xAF, 0xE1, 0xFF, 0xFF, 0x45, 0x83, 0xE8, 0x64, 0xCE, 0xCD, 0x00, 0x00, 0x06, 0xB5, 0xD2, 0x19, 0xCD, 0xE7, 0x00, 0x00, 0x06, 0x49, 0xBC, 0x8B, 0xD0, 0x66, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x4C, 0xD3, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x90, 0xBD, 0xDE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x72, 0x8B, 0xF5, 0xD7, 0x00, 0x00, 0x10, 0x51, 0x47, 0x58, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0xAD, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0xDA, 0x2C, 0x38, 0x17, 0xE2, 0xFF, 0xFF, 0x7B, 0xD6, 0x0D, 0x51, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0xDA, 0x17, 0x69, 0x00, 0x00, 0xFF, 0xFF, 0xB7, 0xCB, 0x11, 0x6D, 0x13, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x25, 0xFF, 0xFF, 0x14, 0x4E, 0x00, 0x00, 0xDD, 0xF8, 0xFF, 0xFF, 0x17, 0x6F, 0x00, 0x00, 0xD4, 0xD1, 0xFF, 0xFF, 0x1E, 0x21, 0x00, 0x00, 0xCC, 0xBD, 0xFF, 0xFF, 0x24, 0x97, 0xDE, 0x95, 0xD5, 0x60, 0x00, 0x00, 0x0A, 0xDA, 0xC3, 0xCD, 0xD1, 0xCE, 0x00, 0x00, 0x02, 0x1E, 0xAE, 0x47, 0xD4, 0x11, 0x00, 0x00, 0x01, 0x89, 0x97, 0xA3, 0xDB, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x17, 0xF1, 0x8F, 0x00, 0x00, 0x07, 0x87, 0x51, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0xD8, 0x05, 0xBD, 0xFF, 0xFF, 0x00, 0x00, 0x3A, 0xCF, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0x3B, 0x2C, 0x30, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x1F, 0x21, 0x60, 0x14, 0x74, 0xFF, 0xFF, 0x65, 0x17, 0x0D, 0x37, 0x04, 0xB7, 0xFF, 0xFF, 0x7E, 0xC1, 0x12, 0x19, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x83, 0x13, 0xC4, 0x00, 0x00, 0xFF, 0xFF, 0xD2, 0x8E, 0x11, 0xBD, 0x19, 0xC1, 0xFF, 0xFF, 0xEF, 0x0B, 0x00, 0x00, 0x19, 0x71, 0xFF, 0xFF, 0xFB, 0xF6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x3E, 0x00, 0x00, 0xF2, 0x80, 0xFF, 0xFF, 0x0D, 0x80, 0xD0, 0x44, 0xD6, 0x71, 0x00, 0x00, 0x08, 0x3A, 0xB5, 0x8E, 0xD4, 0x35, 0x00, 0x00, 0x03, 0xBC, 0xA0, 0x3F, 0xD9, 0x93, 0x00, 0x00, 0x00, 0x00, 0x87, 0xBF, 0xEC, 0x62, 0x00, 0x00, 0x00, 0xC6, 0x5D, 0x2D, 0xFF, 0xFF, 0x00, 0x00, 0x18, 0x18, 0x41, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0x18, 0xE3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x33, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0x12, 0xF5, 0x24, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0xFD, 0x1A, 0xD9, 0x0E, 0x3E, 0xFF, 0xFF, 0x53, 0xF0, 0x0A, 0x41, 0x0B, 0xA8, 0xFF, 0xFF, 0x74, 0x57, 0x09, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x0E, 0x0F, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0xB3, 0x0D, 0x47, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0x97, 0x0C, 0x7D, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0x57, 0x0E, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xDA, 0x01, 0x10, 0x29, 0x10, 0x4F, 0xFF, 0xFF, 0xF0, 0x1B, 0x00, 0x00, 0xC0, 0x85, 0xD7, 0x34, 0x00, 0x00, 0x03, 0xD8, 0xA8, 0x6B, 0xD8, 0xF3, 0x00, 0x00, 0x00, 0x96, 0x90, 0x55, 0xE6, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0x12, 0x0F, 0x46, 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x1D, 0x62, 0x33, 0x51, 0xFF, 0xFF, 0x05, 0x35, 0x13, 0x51, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x27, 0x5F, 0x06, 0x98, 0xFF, 0xFF, 0x17, 0x9B, 0x17, 0x9B, 0x15, 0xD4, 0xFF, 0xFF, 0x39, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x0E, 0x35, 0x07, 0x45, 0xFF, 0xFF, 0x5C, 0x1E, 0x07, 0x45, 0x06, 0x4E, 0xFF, 0xFF, 0x76, 0x8A, 0x06, 0x4E, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0x0C, 0x09, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x3C, 0x0A, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x5A, 0x0A, 0x3D, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0x1C, 0x09, 0xC9, 0x00, 0x00, 0xFF, 0xFF, 0xC5, 0xA6, 0x09, 0xF3, 0xFF, 0xFF, 0x2E, 0x4C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x9D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x43, 0x00, 0x00, 0x24, 0xAC, 0xFF, 0xFF, 0x00, 0x00, 0x1E, 0xEE, 0x27, 0x6D, 0xFF, 0xFF, 0x00, 0x00, 0x35, 0xA9, 0x28, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x4D, 0x8A, 0x2A, 0x50, 0xFF, 0xFF, 0x00, 0x00, 0x65, 0x53, 0x2D, 0x8E, 0xFF, 0xFF, 0x00, 0x00, 0x86, 0x9F, 0x2B, 0xBB, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x29, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0xBB, 0x08, 0x25, 0xD1, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0x9D, 0x1F, 0xDC, 0xFD, 0x49, 0x00, 0x00, 0xF4, 0xE2, 0x17, 0xD8, 0xE7, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0x0F, 0xD7, 0xD3, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0xC1, 0xCF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0x9A, 0xC8, 0x31, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0x9B, 0xC0, 0x3D, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0x9A, 0xFF, 0xFF, 0x32, 0xF1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x29, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0x74, 0x00, 0x00, 0x1E, 0x2B, 0xFF, 0xFF, 0x00, 0x00, 0x18, 0x91, 0x28, 0x4F, 0xFF, 0xFF, 0x00, 0x00, 0x30, 0x56, 0x28, 0xB8, 0xFF, 0xFF, 0x00, 0x00, 0x49, 0x9C, 0x28, 0x8E, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0x81, 0x2E, 0x9C, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0xEC, 0x2D, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0x17, 0x2C, 0x97, 0xFF, 0xFF, 0x00, 0x00, 0xBB, 0xCF, 0x27, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0xDD, 0xAD, 0x1E, 0xB5, 0xFA, 0x2C, 0x00, 0x00, 0xFA, 0xD9, 0x18, 0x65, 0xDF, 0xAF, 0x00, 0x00, 0xFF, 0xFF, 0x0D, 0xD1, 0xD1, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0x9A, 0xC9, 0x5B, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x33, 0xC0, 0x63, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x1A, 0xBA, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0x58, 0xFF, 0xFF, 0x38, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x49, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xA1, 0x00, 0x00, 0x20, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0x01, 0x31, 0x8B, 0xFF, 0xFF, 0x00, 0x00, 0x29, 0x4D, 0x30, 0x33, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0xED, 0x2D, 0x6D, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0xD9, 0x33, 0x70, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x03, 0x35, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0x6A, 0x34, 0x63, 0xFF, 0xFF, 0x00, 0x00, 0xC1, 0x4C, 0x33, 0x83, 0xFF, 0xFF, 0x08, 0x99, 0xE7, 0x10, 0x24, 0x41, 0xF1, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0x75, 0xD7, 0xEF, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x71, 0xC7, 0x8D, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xB7, 0xBF, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x9B, 0xBA, 0x44, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0x8A, 0xB2, 0x64, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0xC4, 0xFF, 0xFF, 0x3F, 0xA6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x1C, 0x00, 0x00, 0x24, 0x36, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF7, 0x3D, 0x12, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x13, 0x37, 0xD8, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0x21, 0x3A, 0xA0, 0xFF, 0xFF, 0x00, 0x00, 0x5A, 0x7F, 0x39, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0x1B, 0x3F, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xE0, 0x3D, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0xC6, 0x1B, 0x41, 0x6C, 0xFC, 0x81, 0x00, 0x00, 0xEB, 0xAF, 0x37, 0xE9, 0xE0, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0xCC, 0xCB, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0x12, 0xC8, 0xBC, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0xC5, 0xB4, 0x4B, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x3C, 0xB0, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x29, 0x07, 0xA9, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x01, 0xFF, 0xFF, 0x46, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0x6D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xC3, 0x00, 0x00, 0x1D, 0x8B, 0xFF, 0xFF, 0x16, 0x69, 0x00, 0x00, 0x36, 0x61, 0xFF, 0xFF, 0x01, 0xC7, 0x18, 0xF2, 0x3F, 0x6D, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0xE5, 0x45, 0xB6, 0xFF, 0xFF, 0x00, 0x00, 0x56, 0x36, 0x45, 0x3A, 0xFF, 0xFF, 0x07, 0x65, 0x76, 0x78, 0x44, 0xA5, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0x24, 0x4A, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0xCE, 0x3F, 0x4F, 0x5B, 0xE6, 0xF4, 0x00, 0x00, 0xEB, 0xFB, 0x48, 0x54, 0xD0, 0x17, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x75, 0xBD, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xAB, 0xAE, 0xA4, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xE9, 0xA8, 0x33, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0xFF, 0xA2, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x88, 0x9F, 0xA7, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x6D, 0xFE, 0xE9, 0x4F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4C, 0x7D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0xB1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0xC1, 0x00, 0x00, 0x33, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x54, 0x66, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0x5F, 0x50, 0x50, 0xFF, 0xFF, 0x00, 0x00, 0x4B, 0xD4, 0x55, 0x22, 0xFF, 0xFF, 0x00, 0x00, 0x70, 0xD9, 0x58, 0x3D, 0xF3, 0x68, 0x00, 0x00, 0x97, 0xFD, 0x5C, 0x59, 0xE4, 0x50, 0x00, 0x00, 0xC4, 0x6E, 0x5B, 0x99, 0xD1, 0x28, 0x00, 0x00, 0xEF, 0xD8, 0x5C, 0x10, 0xB7, 0x60, 0x00, 0x00, 0xF9, 0xAF, 0x55, 0x72, 0xAA, 0x4B, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0x12, 0xA0, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0x4C, 0x3D, 0x9B, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0x4E, 0x92, 0xFB, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0x8A, 0x8C, 0x6A, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0x24, 0xF5, 0x83, 0x5B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0xFD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x11, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0xF2, 0x00, 0x00, 0x27, 0xE9, 0xFF, 0xFF, 0x2C, 0x67, 0x00, 0x00, 0x44, 0x88, 0xFC, 0x8E, 0x00, 0x00, 0x07, 0x41, 0x66, 0x6C, 0xF2, 0xFA, 0x00, 0x00, 0x34, 0xE4, 0x66, 0xF2, 0xD9, 0xD9, 0x00, 0x00, 0x54, 0xF8, 0x66, 0xA3, 0xCB, 0xD5, 0x00, 0x00, 0x81, 0x02, 0x6A, 0xB9, 0xBF, 0xEF, 0x00, 0x00, 0xBB, 0x74, 0x65, 0x6F, 0xAE, 0xF9, 0x00, 0x00, 0xEF, 0xE3, 0x6B, 0x67, 0x99, 0x30, 0x00, 0x00, 0xF7, 0x0B, 0x76, 0xBB, 0x8B, 0xB6, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0xCD, 0x7F, 0xCE, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0xA1, 0x79, 0xE7, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0x77, 0x76, 0xBA, 0x00, 0x00, 0xFF, 0xFF, 0x76, 0xE1, 0x6E, 0x8A, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x09, 0xF2, 0xE1, 0x70, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x11, 0x70, 0x3E, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0E, 0x74, 0xD9, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x85, 0x75, 0x19, 0x00, 0x00, 0x09, 0x10, 0xF8, 0x80, 0x60, 0xA0, 0x00, 0x00, 0x2E, 0xB2, 0xE8, 0x43, 0x47, 0x4E, 0x00, 0x00, 0x52, 0xD1, 0xC1, 0x01, 0x0B, 0x3E, 0x00, 0x00, 0x77, 0x58, 0xA5, 0x40, 0x00, 0x00, 0x1E, 0xB0, 0x7F, 0x5D, 0x96, 0x60, 0x00, 0x00, 0x64, 0x87, 0x7C, 0x46, 0x84, 0x49, 0x00, 0x00, 0xB3, 0x35, 0x7A, 0x59, 0x70, 0x30, 0x00, 0x00, 0xE2, 0x3D, 0x83, 0xB8, 0x5F, 0x2F, 0x00, 0x00, 0xF8, 0x3C, 0x92, 0xB1, 0x59, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0x8E, 0x55, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0x41, 0x54, 0xAB, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0xB1, 0x4E, 0xE7, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x7D, 0x42, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0xB2, 0xEF, 0xDA, 0x83, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x73, 0x86, 0x24, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xB2, 0x87, 0xC6, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xB9, 0x8A, 0x09, 0x00, 0x00, 0x04, 0x2F, 0xE5, 0x74, 0x87, 0x91, 0x00, 0x00, 0x15, 0xCE, 0xD5, 0x6B, 0x88, 0xDE, 0x00, 0x00, 0x23, 0x94, 0xB3, 0x84, 0x82, 0x61, 0x00, 0x00, 0x34, 0x07, 0x84, 0x80, 0x60, 0x77, 0x00, 0x00, 0x68, 0xAD, 0x24, 0x3E, 0x0C, 0xB4, 0x13, 0x2C, 0x99, 0x97, 0x00, 0x00, 0x12, 0xD1, 0x91, 0x28, 0x98, 0x12, 0x00, 0x00, 0x1C, 0x11, 0xD7, 0x9F, 0x97, 0x26, 0x00, 0x00, 0x19, 0x60, 0xEE, 0x9D, 0x9D, 0x61, 0x00, 0x00, 0x13, 0xD6, 0xFF, 0xFF, 0x9F, 0xF6, 0x00, 0x00, 0x08, 0x3A, 0xFF, 0xFF, 0x9E, 0x9E, 0x00, 0x00, 0x09, 0xDB, 0xFF, 0xFF, 0x9D, 0x9E, 0x00, 0x00, 0x0B, 0x52, 0xFF, 0xFF, 0x9C, 0xB8, 0x00, 0x00, 0x0F, 0xCB, 0xFF, 0xFF, 0x9A, 0x71, 0xEE, 0x4D, 0x91, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x8F, 0x94, 0xB1, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xA8, 0x95, 0x44, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x39, 0x99, 0x70, 0x00, 0x00, 0x02, 0xDB, 0xCC, 0x10, 0x9D, 0x7E, 0x00, 0x00, 0x02, 0x2C, 0xB6, 0x11, 0xA2, 0x68, 0x00, 0x00, 0x06, 0xC3, 0x9B, 0xE6, 0xA5, 0xE5, 0x00, 0x00, 0x22, 0x0E, 0x71, 0x53, 0x9F, 0x85, 0x00, 0x00, 0x4D, 0x72, 0x00, 0x00, 0x7E, 0x16, 0x1F, 0x17, 0x83, 0x69, 0x00, 0x00, 0x87, 0xDB, 0x9B, 0x11, 0x77, 0x93, 0x00, 0x00, 0x7A, 0xCB, 0xD8, 0xE4, 0x79, 0x9F, 0x00, 0x00, 0x67, 0xF9, 0xFA, 0x2D, 0x82, 0x51, 0x00, 0x00, 0x59, 0x8A, 0xFF, 0xFF, 0x8B, 0x1D, 0x00, 0x00, 0x52, 0xF4, 0xFF, 0xFF, 0x8D, 0x2E, 0x00, 0x00, 0x47, 0x16, 0xFF, 0xFF, 0x8F, 0x9C, 0x00, 0x00, 0x43, 0x98, 0xFF, 0xFF, 0x8F, 0xE9, 0x00, 0x00, 0x41, 0xBF, 0xFF, 0xFF, 0x8E, 0xA1, 0xE8, 0x19, 0x9F, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xAE, 0xA3, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x4A, 0xA5, 0x86, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x54, 0xA7, 0x28, 0x00, 0x00, 0x00, 0xB3, 0xB3, 0x91, 0xAB, 0xD5, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xA4, 0xB5, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x7E, 0xBE, 0x49, 0x00, 0x00, 0x0C, 0xF9, 0x60, 0xE9, 0xC1, 0xE6, 0x00, 0x00, 0x36, 0xD0, 0x00, 0x00, 0xBC, 0x7D, 0x33, 0xAE, 0x68, 0xA4, 0x00, 0x00, 0xBD, 0x8C, 0x9A, 0x2A, 0x5E, 0xA9, 0x00, 0x00, 0xB4, 0x3B, 0xD9, 0xF1, 0x5F, 0xA9, 0x00, 0x00, 0x9C, 0xD4, 0xF9, 0x72, 0x66, 0x7A, 0x00, 0x00, 0x86, 0x28, 0xFF, 0xFF, 0x6C, 0xE8, 0x00, 0x00, 0x79, 0x9B, 0xFF, 0xFF, 0x6F, 0xA4, 0x00, 0x00, 0x75, 0xEE, 0xFF, 0xFF, 0x72, 0x76, 0x00, 0x00, 0x71, 0x43, 0xFF, 0xFF, 0x74, 0xED, 0x00, 0x00, 0x6C, 0xCE, 0xFF, 0xFF, 0x76, 0x3A, 0xE4, 0xCB, 0xAE, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x18, 0xB1, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x9D, 0xB1, 0x49, 0x00, 0x00, 0x02, 0x86, 0xB5, 0x4B, 0xB3, 0x49, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xA3, 0xB7, 0x84, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x59, 0xC3, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xB0, 0xD5, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x52, 0x16, 0xDA, 0xCA, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0xDD, 0x52, 0x2F, 0xE8, 0x4F, 0xB7, 0x00, 0x00, 0xDF, 0xEF, 0x92, 0xF6, 0x46, 0xB0, 0x00, 0x00, 0xD8, 0x12, 0xD7, 0xBD, 0x45, 0x58, 0x00, 0x00, 0xC6, 0xE3, 0xF6, 0x6A, 0x45, 0x45, 0x00, 0x00, 0xB1, 0xA4, 0xFF, 0xFF, 0x44, 0xEC, 0x00, 0x00, 0xA1, 0xA7, 0xFF, 0xFF, 0x48, 0x9C, 0x00, 0x00, 0x9A, 0xC5, 0xFF, 0xFF, 0x4E, 0x0F, 0x00, 0x00, 0x94, 0xB4, 0xFF, 0xFF, 0x52, 0xE3, 0x00, 0x00, 0x8F, 0x25, 0xFF, 0xFF, 0x56, 0xE3, 0xE2, 0xC8, 0xBC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x0F, 0xBC, 0x27, 0x00, 0x00, 0x01, 0xC7, 0xBC, 0x6F, 0xBB, 0x42, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x00, 0xBD, 0x94, 0x00, 0x00, 0x00, 0x00, 0x90, 0x29, 0xC3, 0x68, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x60, 0xD3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x18, 0xE9, 0xBE, 0x00, 0x00, 0x05, 0x31, 0x3A, 0x53, 0xF6, 0x7D, 0x00, 0x00, 0x27, 0xFB, 0x00, 0x00, 0xF8, 0x71, 0x2B, 0xE3, 0x38, 0x24, 0x00, 0x00, 0xFD, 0x5C, 0x7B, 0xB6, 0x31, 0xA9, 0x00, 0x00, 0xFF, 0xFF, 0xC8, 0xFA, 0x30, 0x42, 0x00, 0x00, 0xEC, 0x47, 0xF8, 0x8B, 0x2A, 0x60, 0x00, 0x00, 0xD3, 0x6D, 0xFF, 0xE6, 0x1F, 0xE4, 0x00, 0x00, 0xC1, 0x8F, 0xFF, 0xFF, 0x21, 0xAB, 0x00, 0x00, 0xBA, 0xD4, 0xFF, 0xFF, 0x28, 0x3B, 0x00, 0x00, 0xB4, 0x94, 0xFF, 0xFF, 0x2E, 0x29, 0x00, 0x00, 0xAE, 0x5A, 0xFF, 0xFF, 0x34, 0xA2, 0xDD, 0x00, 0xC6, 0xA3, 0x00, 0x00, 0x04, 0x03, 0xC5, 0xA2, 0xC2, 0x63, 0x00, 0x00, 0x02, 0x28, 0xAF, 0x65, 0xC3, 0x19, 0x00, 0x00, 0x00, 0x00, 0x99, 0xF9, 0xC7, 0x30, 0x00, 0x00, 0x00, 0x00, 0x81, 0x18, 0xCF, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xCE, 0xE4, 0x42, 0x00, 0x00, 0x00, 0x16, 0x4F, 0x45, 0xFF, 0xFF, 0x00, 0x00, 0x0D, 0xE9, 0x00, 0xC6, 0xFF, 0xFF, 0x00, 0x00, 0x35, 0x3E, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0x7E, 0x20, 0x4C, 0x12, 0xF5, 0xFF, 0xFF, 0x72, 0xE6, 0x09, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0x7E, 0x11, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0x02, 0x0D, 0x0B, 0x09, 0xE0, 0xFF, 0xFF, 0xFE, 0x37, 0x05, 0xB8, 0x00, 0x00, 0xE9, 0xB0, 0xFF, 0xFF, 0x05, 0xB7, 0x00, 0x00, 0xD9, 0xF0, 0xFF, 0xFF, 0x0A, 0x2A, 0x00, 0x00, 0xD1, 0x15, 0xFF, 0xFF, 0x0F, 0x8A, 0x00, 0x00, 0xCA, 0x6A, 0xFF, 0xFF, 0x15, 0x6F, 0xD1, 0x65, 0xCA, 0x21, 0x00, 0x00, 0x06, 0xA6, 0xB8, 0x32, 0xC6, 0x87, 0x00, 0x00, 0x02, 0x3C, 0xA2, 0x5D, 0xC8, 0x53, 0x00, 0x00, 0x01, 0x62, 0x8B, 0x12, 0xD1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x73, 0x7A, 0xE4, 0x7C, 0x00, 0x00, 0x01, 0x6A, 0x53, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0xB7, 0x02, 0x6A, 0xFF, 0xFF, 0x00, 0x00, 0x36, 0xC7, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0x03, 0x24, 0x25, 0x21, 0xFB, 0xFF, 0xFF, 0x46, 0x70, 0x00, 0x00, 0x0B, 0x22, 0xFF, 0xFF, 0x5A, 0xEE, 0x07, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x2C, 0x0C, 0x35, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x4A, 0x0A, 0x6C, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0xFC, 0x09, 0x2C, 0x0E, 0x0D, 0xFF, 0xFF, 0xF5, 0x8D, 0x00, 0x00, 0x06, 0x5A, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x26, 0x00, 0x00, 0xFD, 0xFE, 0xFF, 0xFF, 0x05, 0xB3, 0x00, 0x00, 0xF2, 0xCF, 0xFF, 0xFF, 0x01, 0x80, 0xC2, 0x72, 0xCB, 0x3F, 0x00, 0x00, 0x04, 0x4C, 0xAA, 0xE8, 0xCA, 0x27, 0x00, 0x00, 0x04, 0x3D, 0x94, 0xF9, 0xD1, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xBC, 0xE4, 0x55, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0x33, 0x36, 0xEF, 0xFF, 0xFF, 0x00, 0x00, 0x19, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0x84, 0x0D, 0xF3, 0xFF, 0xFF, 0x15, 0xE3, 0x0F, 0xBB, 0x16, 0xC5, 0xFF, 0xFF, 0x3B, 0xFD, 0x00, 0x00, 0x05, 0xC8, 0xFF, 0xFF, 0x4D, 0xC5, 0x04, 0x9F, 0x04, 0xEB, 0xFF, 0xFF, 0x71, 0x04, 0x03, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0xA5, 0x06, 0xAF, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0xEA, 0x06, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCA, 0x71, 0x04, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0x62, 0x06, 0x72, 0x09, 0x8F, 0xFF, 0xFF, 0xE9, 0x44, 0x00, 0x00, 0x08, 0x58, 0xFF, 0xFF, 0xEF, 0xD6, 0x00, 0x00, 0xB5, 0x0E, 0xCD, 0x83, 0x00, 0x00, 0x03, 0xD7, 0x9E, 0x59, 0xD1, 0x44, 0x00, 0x00, 0x00, 0x00, 0x86, 0xE3, 0xE1, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x69, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x09, 0xE1, 0x46, 0x5F, 0xFF, 0xFF, 0x00, 0x00, 0x10, 0x24, 0x2E, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x0E, 0x3C, 0x1A, 0xDC, 0xFF, 0xFF, 0x0A, 0x70, 0x0A, 0x70, 0x01, 0x8B, 0xFF, 0xFF, 0x10, 0xAA, 0x10, 0xAA, 0x09, 0xCD, 0xFF, 0xFF, 0x30, 0x75, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x03, 0xB9, 0x01, 0x9D, 0xFF, 0xFF, 0x5B, 0xB3, 0x01, 0x9D, 0x01, 0x15, 0xFF, 0xFF, 0x79, 0x0A, 0x01, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0xDD, 0x01, 0xD8, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0x4F, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0x25, 0x02, 0x2C, 0x00, 0x00, 0xFF, 0xFF, 0xBB, 0x76, 0x02, 0x47, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0x29, 0x02, 0xFF, 0xFF, 0xFF, 0x21, 0x5B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0x56, 0x00, 0x00, 0x11, 0x56, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x7F, 0x1E, 0x5B, 0xFF, 0xFF, 0x00, 0x00, 0x23, 0x38, 0x1F, 0xA2, 0xFF, 0xFF, 0x0D, 0x98, 0x40, 0x00, 0x10, 0x4C, 0xFF, 0xFF, 0x19, 0xBD, 0x59, 0xBD, 0x02, 0xED, 0xFF, 0xFF, 0x10, 0xE3, 0x6E, 0x4C, 0x0E, 0x4C, 0xFF, 0xFF, 0x00, 0x00, 0x85, 0xA3, 0x21, 0x85, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x20, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB7, 0x2F, 0x1D, 0x44, 0xFF, 0xFF, 0x00, 0x00, 0xD3, 0x87, 0x12, 0x83, 0xF6, 0xED, 0x00, 0x00, 0xEA, 0xA3, 0x0C, 0x2D, 0xE3, 0xF0, 0x00, 0x00, 0xFB, 0x20, 0x05, 0xA3, 0xD2, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCC, 0x36, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC5, 0xD4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBF, 0xB0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x4C, 0x00, 0x00, 0x01, 0x96, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x22, 0x97, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xCD, 0x1E, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0x90, 0x21, 0x32, 0xFF, 0xFF, 0x1B, 0xA9, 0x57, 0xFA, 0x01, 0xC5, 0xFF, 0xFF, 0x1B, 0xEC, 0x6C, 0x77, 0x04, 0x20, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0xDB, 0x23, 0x05, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0x61, 0x1F, 0x73, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x7A, 0x1E, 0x63, 0xFF, 0xFF, 0x00, 0x00, 0xD8, 0x56, 0x11, 0x85, 0xF2, 0xD5, 0x00, 0x00, 0xF0, 0x2D, 0x0C, 0x70, 0xDE, 0x27, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xDF, 0xCA, 0x47, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0x19, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x57, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0xA7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x50, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x27, 0x00, 0x00, 0x18, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0x15, 0x36, 0x1E, 0x4B, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0x03, 0x20, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0xF2, 0x26, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x5E, 0x50, 0x29, 0xE6, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x05, 0x27, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0x85, 0x23, 0x55, 0xFF, 0xFF, 0x00, 0x00, 0xBA, 0x8F, 0x21, 0x24, 0xFF, 0xFF, 0x00, 0x00, 0xDF, 0x4A, 0x16, 0xD7, 0xEB, 0xE8, 0x00, 0x00, 0xF7, 0x92, 0x0A, 0x4B, 0xD5, 0xF3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0xED, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBA, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB4, 0x44, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xB0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x16, 0xCE, 0x00, 0x00, 0x1C, 0x0A, 0xFF, 0xFF, 0x00, 0x00, 0x09, 0x49, 0x29, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x24, 0x45, 0x29, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0x3D, 0x0A, 0x2B, 0x2B, 0xFF, 0xFF, 0x00, 0x00, 0x5A, 0x09, 0x2C, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xC6, 0x2C, 0xE2, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0x43, 0x2B, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0x71, 0x2B, 0x99, 0xF3, 0x97, 0x00, 0x00, 0xE1, 0x83, 0x26, 0x5C, 0xDA, 0x20, 0x00, 0x00, 0xF9, 0xD4, 0x1D, 0xA0, 0xC8, 0x33, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0xAA, 0xB1, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB0, 0x3B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAA, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0x2C, 0xA5, 0x24, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0xAA, 0xFF, 0xFF, 0x38, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x5B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0x46, 0x00, 0x00, 0x11, 0xE5, 0xFF, 0xFF, 0x08, 0x5F, 0x00, 0x00, 0x2D, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x1D, 0x2F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x36, 0x69, 0x33, 0x54, 0xFF, 0xFF, 0x00, 0x00, 0x52, 0x84, 0x31, 0x78, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0xF6, 0x36, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x9D, 0xAF, 0x35, 0xAD, 0xF7, 0xBE, 0x00, 0x00, 0xBF, 0x4A, 0x39, 0x43, 0xE0, 0xD2, 0x00, 0x00, 0xE6, 0x67, 0x34, 0xCE, 0xCB, 0x35, 0x00, 0x00, 0xFD, 0x58, 0x2F, 0x34, 0xB8, 0x21, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0xA7, 0xA3, 0xAE, 0x00, 0x00, 0xFF, 0xFF, 0x1B, 0x69, 0x9F, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0xAB, 0x9E, 0x30, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x2B, 0x99, 0x97, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0x1C, 0xFA, 0xE6, 0x42, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0x59, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0xB9, 0x00, 0x00, 0x26, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0x05, 0xD9, 0x40, 0x18, 0xFF, 0xFF, 0x00, 0x00, 0x27, 0x63, 0x3D, 0x33, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0xFF, 0x41, 0x47, 0xF2, 0x49, 0x00, 0x00, 0x66, 0x5A, 0x40, 0xF4, 0xE2, 0xA9, 0x00, 0x00, 0x8D, 0x89, 0x45, 0xBE, 0xD9, 0x8A, 0x00, 0x00, 0xB9, 0xAA, 0x45, 0x35, 0xCC, 0x95, 0x00, 0x00, 0xED, 0x69, 0x44, 0x71, 0xB2, 0xCB, 0x00, 0x00, 0xF8, 0x0A, 0x42, 0xA0, 0xA4, 0x49, 0x00, 0x00, 0xFF, 0xFF, 0x43, 0x85, 0x94, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0xC3, 0x91, 0xCB, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x52, 0x8B, 0xEA, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0xDC, 0x86, 0x13, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0x90, 0xF5, 0x1C, 0x4D, 0x64, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x1E, 0x4E, 0x4B, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x5E, 0x51, 0x9E, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x8E, 0x4B, 0x70, 0x00, 0x00, 0x13, 0xB3, 0xF4, 0x65, 0x25, 0x4E, 0x00, 0x00, 0x37, 0x9C, 0xED, 0x68, 0x00, 0x00, 0x09, 0x9C, 0x53, 0x87, 0xDF, 0xD0, 0x00, 0x00, 0x30, 0xCC, 0x50, 0x88, 0xCC, 0xD0, 0x00, 0x00, 0x4D, 0x88, 0x52, 0x65, 0xBD, 0xBD, 0x00, 0x00, 0x77, 0xD2, 0x56, 0x67, 0xB5, 0x6C, 0x00, 0x00, 0xB1, 0xC2, 0x50, 0x6E, 0xA5, 0x34, 0x00, 0x00, 0xE1, 0xCB, 0x50, 0xE9, 0x95, 0x01, 0x00, 0x00, 0xF5, 0xE6, 0x65, 0x6A, 0x84, 0x81, 0x00, 0x00, 0xFF, 0xFF, 0x6B, 0x8E, 0x73, 0x4F, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x36, 0x6F, 0x57, 0x00, 0x00, 0xFF, 0xFF, 0x6B, 0x1D, 0x6E, 0xC5, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0xE3, 0x67, 0x74, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0x6A, 0xEA, 0xC0, 0x5C, 0x67, 0x00, 0x00, 0x00, 0x00, 0xED, 0xA4, 0x5C, 0x87, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xA5, 0x61, 0x07, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x38, 0x65, 0x71, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x0A, 0x56, 0xE5, 0x00, 0x00, 0x1D, 0x0C, 0xD8, 0x2C, 0x42, 0xBB, 0x00, 0x00, 0x39, 0x77, 0xB2, 0x7C, 0x14, 0x76, 0x00, 0x00, 0x5F, 0x21, 0x96, 0x17, 0x00, 0x00, 0x1B, 0xA4, 0x6C, 0xCF, 0x88, 0x7B, 0x00, 0x00, 0x59, 0xA0, 0x68, 0x7C, 0x79, 0x68, 0x00, 0x00, 0xA7, 0x5E, 0x67, 0x73, 0x69, 0x17, 0x00, 0x00, 0xD6, 0xE7, 0x6C, 0xF3, 0x59, 0x8E, 0x00, 0x00, 0xF3, 0xEE, 0x82, 0x85, 0x4F, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x5F, 0x4B, 0xBB, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x98, 0x46, 0xE8, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x30, 0x42, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0xB8, 0x37, 0x11, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x8C, 0xE6, 0x57, 0x72, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x31, 0x74, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xDC, 0x74, 0x9C, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xCB, 0x78, 0x94, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x22, 0x76, 0x61, 0x00, 0x00, 0x0A, 0x69, 0xBF, 0xEB, 0x75, 0x2E, 0x00, 0x00, 0x10, 0x2C, 0xA1, 0xFA, 0x6D, 0xBC, 0x00, 0x00, 0x25, 0x45, 0x74, 0x69, 0x51, 0x86, 0x00, 0x00, 0x57, 0x4F, 0x12, 0x3D, 0x00, 0x00, 0x05, 0x56, 0x8F, 0x00, 0x00, 0x00, 0x08, 0xE4, 0x79, 0x61, 0x8B, 0xEC, 0x00, 0x00, 0x1C, 0xFE, 0xC6, 0x19, 0x87, 0x41, 0x00, 0x00, 0x1F, 0x43, 0xEF, 0x89, 0x8A, 0xC0, 0x00, 0x00, 0x21, 0x86, 0xFF, 0xFF, 0x91, 0x84, 0x00, 0x00, 0x1A, 0xC7, 0xFF, 0xFF, 0x91, 0x8C, 0x00, 0x00, 0x1B, 0x90, 0xFF, 0xFF, 0x91, 0x12, 0x00, 0x00, 0x1C, 0x1C, 0xFF, 0xFF, 0x90, 0xB7, 0x00, 0x00, 0x1B, 0x4E, 0xFF, 0xFF, 0x90, 0x01, 0xE4, 0xD0, 0x85, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x11, 0x86, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x09, 0x88, 0x6C, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x92, 0x88, 0xF3, 0x00, 0x00, 0x06, 0x81, 0xB5, 0xCE, 0x88, 0x0C, 0x00, 0x00, 0x02, 0xF9, 0xA0, 0xDF, 0x8B, 0x98, 0x00, 0x00, 0x02, 0xDA, 0x89, 0xE5, 0x90, 0xF5, 0x00, 0x00, 0x16, 0xE4, 0x60, 0x49, 0x89, 0x24, 0x00, 0x00, 0x42, 0xE3, 0x00, 0x00, 0x6D, 0x72, 0x1A, 0x7C, 0x71, 0x68, 0x00, 0x00, 0x7B, 0x38, 0x8A, 0x1B, 0x65, 0xE5, 0x00, 0x00, 0x74, 0x78, 0xCA, 0x67, 0x64, 0xFC, 0x00, 0x00, 0x68, 0xF3, 0xF5, 0x23, 0x6B, 0xB9, 0x00, 0x00, 0x5D, 0x8F, 0xFF, 0xFF, 0x78, 0xDF, 0x00, 0x00, 0x50, 0x60, 0xFF, 0xFF, 0x81, 0xB2, 0x00, 0x00, 0x51, 0xBC, 0xFF, 0xFF, 0x81, 0x13, 0x00, 0x00, 0x4F, 0xD8, 0xFF, 0xFF, 0x82, 0x1E, 0x00, 0x00, 0x4B, 0xDB, 0xFF, 0xFF, 0x82, 0x07, 0xDC, 0xCF, 0x93, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xA6, 0x97, 0x82, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x56, 0x97, 0x9C, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x66, 0x92, 0xC3, 0x00, 0x00, 0x01, 0xAF, 0x9E, 0x2E, 0x95, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x89, 0x8D, 0x9D, 0x06, 0x00, 0x00, 0x00, 0x00, 0x78, 0xDC, 0xAA, 0x94, 0x00, 0x00, 0x03, 0xFA, 0x55, 0xBB, 0xAF, 0x8E, 0x00, 0x00, 0x2B, 0xC6, 0x00, 0x00, 0xA9, 0xF7, 0x27, 0x96, 0x55, 0x76, 0x00, 0x00, 0xB0, 0x71, 0x86, 0xC1, 0x4A, 0x03, 0x00, 0x00, 0xAC, 0xDF, 0xC9, 0xD9, 0x49, 0xA9, 0x00, 0x00, 0x9C, 0x38, 0xF4, 0xC3, 0x4F, 0x7F, 0x00, 0x00, 0x86, 0xF6, 0xFF, 0xFF, 0x57, 0x81, 0x00, 0x00, 0x75, 0xAD, 0xFF, 0xFF, 0x5F, 0x9D, 0x00, 0x00, 0x73, 0x4E, 0xFF, 0xFF, 0x62, 0x7B, 0x00, 0x00, 0x70, 0x16, 0xFF, 0xFF, 0x65, 0x57, 0x00, 0x00, 0x6D, 0x32, 0xFF, 0xFF, 0x67, 0x1C, 0xDA, 0x95, 0xA3, 0x95, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x5B, 0xA5, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xBA, 0xD1, 0xA1, 0xFB, 0x00, 0x00, 0x00, 0x3F, 0xA1, 0xA7, 0x9F, 0x99, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x24, 0xA2, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x78, 0x2B, 0xAD, 0x29, 0x00, 0x00, 0x00, 0x00, 0x65, 0xCE, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x48, 0xA9, 0xC9, 0xDE, 0x00, 0x00, 0x14, 0x9E, 0x00, 0x00, 0xCD, 0x0E, 0x24, 0xA2, 0x3B, 0xAE, 0x00, 0x00, 0xD3, 0x74, 0x7E, 0xC6, 0x31, 0x8D, 0x00, 0x00, 0xCE, 0xBF, 0xC7, 0x26, 0x30, 0x2D, 0x00, 0x00, 0xC0, 0xEE, 0xF5, 0x1C, 0x31, 0x5F, 0x00, 0x00, 0xAE, 0x4B, 0xFF, 0xFF, 0x34, 0xE8, 0x00, 0x00, 0x99, 0xEF, 0xFF, 0xFF, 0x37, 0xA8, 0x00, 0x00, 0x94, 0x77, 0xFF, 0xFF, 0x3D, 0x18, 0x00, 0x00, 0x8F, 0x87, 0xFF, 0xFF, 0x41, 0x2A, 0x00, 0x00, 0x8B, 0xB0, 0xFF, 0xFF, 0x45, 0x79, 0xD8, 0x2B, 0xB1, 0xB5, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x50, 0xAF, 0x2D, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xDB, 0xAA, 0xA9, 0x00, 0x00, 0x03, 0x2F, 0x96, 0x03, 0xAC, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7B, 0xB0, 0x62, 0x00, 0x00, 0x00, 0x00, 0x68, 0x94, 0xC1, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x54, 0x43, 0xD4, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x39, 0x2B, 0xE2, 0x73, 0x00, 0x00, 0x03, 0x93, 0x00, 0x00, 0xEB, 0x88, 0x1E, 0x67, 0x23, 0xD5, 0x00, 0x00, 0xF0, 0x14, 0x71, 0x57, 0x1B, 0xF5, 0x00, 0x00, 0xF2, 0xC1, 0xBF, 0xA7, 0x19, 0x78, 0x00, 0x00, 0xE4, 0x6B, 0xF4, 0xDD, 0x17, 0x43, 0x00, 0x00, 0xCC, 0xF3, 0xFD, 0x02, 0x12, 0x50, 0x00, 0x00, 0xB7, 0x9D, 0xFF, 0xFF, 0x14, 0x4C, 0x00, 0x00, 0xB3, 0x46, 0xFF, 0xFF, 0x1B, 0xAE, 0x00, 0x00, 0xAE, 0x23, 0xFF, 0xFF, 0x20, 0x8A, 0x00, 0x00, 0xA9, 0xDB, 0xFF, 0xFF, 0x25, 0x77, 0xD2, 0xB0, 0xBC, 0x6A, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xD1, 0xB4, 0x8A, 0x00, 0x00, 0x03, 0x02, 0xA0, 0xB3, 0xB2, 0xF8, 0x00, 0x00, 0x04, 0x7A, 0x8B, 0xF3, 0xB9, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x73, 0xB2, 0xC3, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x3B, 0xD5, 0xF5, 0x00, 0x00, 0x00, 0x00, 0x43, 0xC6, 0xEF, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xD6, 0xFF, 0xFF, 0x00, 0x00, 0x10, 0xB9, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x17, 0x10, 0x62, 0x09, 0x6D, 0xFF, 0xFF, 0x63, 0x95, 0x04, 0x2A, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xCE, 0x08, 0x56, 0x00, 0x00, 0xFF, 0xFF, 0xD3, 0x77, 0x06, 0xA5, 0x00, 0x00, 0xF9, 0xE8, 0xF7, 0xD4, 0x07, 0x0B, 0x00, 0x00, 0xDB, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x9F, 0xFF, 0xFF, 0x03, 0x64, 0x00, 0x00, 0xC4, 0xE9, 0xFF, 0xFF, 0x09, 0x04, 0xC6, 0x63, 0xC0, 0x21, 0x00, 0x00, 0x01, 0x53, 0xAC, 0x59, 0xBA, 0x07, 0x00, 0x00, 0x03, 0x58, 0x95, 0xD1, 0xBC, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x45, 0xC6, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x68, 0xBE, 0xD9, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x8D, 0xFC, 0x47, 0x00, 0x00, 0x01, 0x36, 0x2A, 0x4D, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x38, 0x0C, 0x9D, 0xFF, 0xFF, 0x0C, 0x7A, 0x0E, 0x2C, 0x0B, 0xDA, 0xFF, 0xFF, 0x36, 0x76, 0x00, 0x00, 0x01, 0x81, 0xFF, 0xFF, 0x54, 0x83, 0x00, 0x49, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xB2, 0x00, 0x24, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD2, 0x4C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xDA, 0xFF, 0x89, 0x00, 0xB9, 0x00, 0x00, 0xFB, 0x55, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x74, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEF, 0xAB, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0xCC, 0xC2, 0x69, 0x00, 0x00, 0x02, 0x1C, 0x9F, 0xF1, 0xC0, 0x04, 0x00, 0x00, 0x03, 0x3B, 0x89, 0x0C, 0xC8, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x73, 0x23, 0xDB, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x59, 0x95, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x4E, 0x36, 0xD6, 0xFF, 0xFF, 0x00, 0x00, 0x09, 0x60, 0x23, 0xE9, 0xFF, 0xFF, 0x08, 0x53, 0x01, 0xDD, 0x02, 0xD0, 0xFF, 0xFF, 0x0C, 0x14, 0x0C, 0x2B, 0x04, 0x10, 0xFF, 0xFF, 0x2F, 0x4B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0xA3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xC9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD7, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE2, 0xE4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEC, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC9, 0xF5, 0x72, 0x00, 0x00, 0xAB, 0x48, 0xC5, 0x03, 0x00, 0x00, 0x03, 0x0A, 0x94, 0x0B, 0xC9, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x19, 0xDB, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xFA, 0x36, 0x00, 0x00, 0x04, 0xDB, 0x46, 0x2F, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x88, 0x2A, 0xB3, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0xE1, 0x15, 0x92, 0xFF, 0xFF, 0x05, 0x62, 0x05, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0x31, 0x08, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0xCE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0xE9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0x58, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0x63, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0x1A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD4, 0xD2, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0xDD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x90, 0x00, 0x00, 0x11, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0x17, 0x27, 0x13, 0x97, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0xD6, 0x14, 0x53, 0xFF, 0xFF, 0x03, 0x5B, 0x40, 0x00, 0x0B, 0x58, 0xFF, 0xFF, 0x0F, 0x89, 0x56, 0xE1, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0x54, 0x6B, 0x36, 0x0B, 0x36, 0xFF, 0xFF, 0x00, 0x00, 0x81, 0xD4, 0x18, 0x06, 0xFF, 0xFF, 0x00, 0x00, 0x9C, 0x4F, 0x14, 0x85, 0xFF, 0xFF, 0x00, 0x00, 0xB4, 0x79, 0x0E, 0xBE, 0xFF, 0x83, 0x00, 0x00, 0xCC, 0x8B, 0x06, 0x4D, 0xED, 0x27, 0x00, 0x00, 0xDE, 0xB1, 0x02, 0xB8, 0xDC, 0x6B, 0x00, 0x00, 0xF2, 0x68, 0x00, 0x00, 0xCA, 0xB9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC1, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBC, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x33, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xE9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0x3D, 0x00, 0x00, 0x0D, 0x09, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x13, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0x23, 0x5C, 0x16, 0x10, 0xFF, 0xFF, 0x0A, 0xCE, 0x3F, 0x5F, 0x05, 0x29, 0xFF, 0xFF, 0x13, 0x4F, 0x53, 0xCB, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0xF2, 0x67, 0x33, 0x06, 0x82, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0x2C, 0x1A, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0x9D, 0x3D, 0x14, 0xDC, 0xFF, 0xFF, 0x00, 0x00, 0xB6, 0xDD, 0x0E, 0x49, 0xFE, 0xC6, 0x00, 0x00, 0xD1, 0x54, 0x05, 0xB5, 0xE9, 0x00, 0x00, 0x00, 0xE4, 0x81, 0x01, 0x8B, 0xD7, 0x06, 0x00, 0x00, 0xF9, 0xF8, 0x00, 0x00, 0xC1, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0xFB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB4, 0xBB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB0, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x16, 0xE4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x12, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x17, 0x34, 0xFF, 0xFF, 0x00, 0x00, 0x1B, 0x8B, 0x14, 0xB9, 0xFF, 0xFF, 0x0C, 0xBD, 0x38, 0xB7, 0x06, 0xC9, 0xFF, 0xFF, 0x0C, 0x99, 0x4C, 0xDA, 0x02, 0x6D, 0xFF, 0xFF, 0x12, 0x1E, 0x62, 0xCC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0xC9, 0x1A, 0x2C, 0xFF, 0xFF, 0x00, 0x00, 0x9C, 0xBE, 0x15, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0xED, 0x0F, 0x8E, 0xF5, 0x67, 0x00, 0x00, 0xD4, 0xD8, 0x08, 0xF9, 0xE2, 0xD9, 0x00, 0x00, 0xED, 0x15, 0x00, 0x00, 0xCD, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB6, 0x92, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0xEA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAA, 0x49, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0x29, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0xE9, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xEB, 0x17, 0xBC, 0xFF, 0xFF, 0x00, 0x00, 0x25, 0xEE, 0x1B, 0x4F, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0xC4, 0x16, 0xE3, 0xFF, 0xFF, 0x22, 0xF6, 0x61, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x6A, 0x1A, 0x52, 0xFF, 0xFF, 0x00, 0x00, 0x9B, 0xC4, 0x18, 0x04, 0xF9, 0x3F, 0x00, 0x00, 0xB8, 0x70, 0x17, 0xD1, 0xE6, 0x26, 0x00, 0x00, 0xD7, 0x0F, 0x12, 0xB8, 0xD3, 0xA2, 0x00, 0x00, 0xF3, 0x8C, 0x0E, 0xBD, 0xC3, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x39, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9E, 0x35, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9E, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x59, 0xFF, 0xFF, 0x29, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0xC9, 0x00, 0x00, 0x01, 0x59, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x24, 0x23, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0xAE, 0x20, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0x26, 0x21, 0x13, 0xFF, 0xFF, 0x24, 0x27, 0x5C, 0x63, 0x00, 0x00, 0xFD, 0x4A, 0x00, 0x00, 0x73, 0x2A, 0x23, 0x27, 0xEE, 0xD1, 0x00, 0x00, 0x93, 0x26, 0x23, 0x1E, 0xE2, 0xFA, 0x00, 0x00, 0xB3, 0x37, 0x20, 0xAF, 0xD7, 0x0F, 0x00, 0x00, 0xDB, 0xC7, 0x1E, 0xDE, 0xC3, 0xA5, 0x00, 0x00, 0xF8, 0xEE, 0x1D, 0x23, 0xB2, 0x81, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x17, 0x9F, 0x85, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0x5B, 0x99, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0x09, 0x92, 0xAC, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xA2, 0x90, 0x65, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x08, 0xFA, 0xA6, 0x34, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x21, 0x34, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x7A, 0x38, 0x96, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x4C, 0x20, 0xB7, 0x00, 0x00, 0x1A, 0x2C, 0xF5, 0xB5, 0x00, 0x00, 0x09, 0xB4, 0x2E, 0x1A, 0xF3, 0xF5, 0x00, 0x00, 0x27, 0x8E, 0x2A, 0xDC, 0xEE, 0x2A, 0x00, 0x00, 0x41, 0xD3, 0x2B, 0x7A, 0xDE, 0xB1, 0x00, 0x00, 0x60, 0x74, 0x29, 0x9C, 0xD4, 0xFC, 0x00, 0x00, 0x82, 0xEB, 0x2F, 0xDA, 0xCD, 0x02, 0x00, 0x00, 0xAE, 0x95, 0x2C, 0xCE, 0xC2, 0x49, 0x00, 0x00, 0xE0, 0xEA, 0x29, 0x22, 0xB0, 0x52, 0x00, 0x00, 0xFA, 0x46, 0x2E, 0xAB, 0x9E, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0x10, 0x8D, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x27, 0x84, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0x3A, 0x81, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x9D, 0x7D, 0xF4, 0x00, 0x00, 0xFF, 0xFF, 0x47, 0x63, 0xEE, 0xF9, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x9D, 0x41, 0x22, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x4E, 0x42, 0xB7, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xE9, 0x42, 0x0A, 0x00, 0x00, 0x04, 0xD6, 0xE4, 0xA7, 0x21, 0x06, 0x00, 0x00, 0x28, 0x3D, 0xDB, 0x2E, 0x00, 0x00, 0x07, 0x66, 0x3C, 0x65, 0xD0, 0x50, 0x00, 0x00, 0x28, 0x55, 0x39, 0xB0, 0xBF, 0x25, 0x00, 0x00, 0x45, 0x75, 0x3C, 0x4E, 0xAF, 0x98, 0x00, 0x00, 0x6B, 0x2A, 0x3E, 0xD5, 0xA8, 0x20, 0x00, 0x00, 0xA4, 0x00, 0x39, 0x11, 0x9B, 0x72, 0x00, 0x00, 0xD4, 0xB2, 0x35, 0x2A, 0x8F, 0x96, 0x00, 0x00, 0xF4, 0x48, 0x49, 0x68, 0x80, 0x8A, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0x4D, 0x6A, 0x21, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0x9F, 0x63, 0x8F, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0xD8, 0x5E, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0xDC, 0x59, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0x3D, 0xE3, 0x4F, 0x51, 0x32, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xE2, 0x50, 0x9D, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x6B, 0x50, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x66, 0x51, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xB1, 0x49, 0x91, 0x00, 0x00, 0x0D, 0x33, 0xC6, 0xC5, 0x3A, 0xC3, 0x00, 0x00, 0x1F, 0xA9, 0xA4, 0xAA, 0x1D, 0x16, 0x00, 0x00, 0x3D, 0x88, 0x85, 0x48, 0x00, 0x00, 0x18, 0x5E, 0x57, 0xC3, 0x79, 0xA2, 0x00, 0x00, 0x4E, 0x5B, 0x53, 0xF8, 0x6E, 0x4A, 0x00, 0x00, 0x95, 0xB2, 0x51, 0xBA, 0x61, 0x80, 0x00, 0x00, 0xC5, 0xAA, 0x54, 0xBB, 0x55, 0xCC, 0x00, 0x00, 0xEF, 0xBE, 0x67, 0x40, 0x47, 0x16, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xB1, 0x36, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x59, 0x2D, 0xB6, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x9F, 0x1F, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x80, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0xAA, 0xDD, 0xF3, 0x65, 0x34, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xE8, 0x66, 0x11, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x5A, 0x65, 0x4F, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xC1, 0x64, 0x82, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x76, 0x60, 0xA7, 0x00, 0x00, 0x03, 0xC6, 0xA9, 0x9E, 0x5D, 0x44, 0x00, 0x00, 0x02, 0xC5, 0x8E, 0x37, 0x5A, 0x20, 0x00, 0x00, 0x1A, 0xBB, 0x65, 0x1E, 0x42, 0xB3, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFD, 0x00, 0x00, 0x07, 0xE3, 0x65, 0xEB, 0x7A, 0x94, 0x00, 0x00, 0x18, 0xC3, 0xB4, 0xE4, 0x73, 0x7D, 0x00, 0x00, 0x1E, 0xB6, 0xE4, 0x7B, 0x73, 0xCC, 0x00, 0x00, 0x27, 0x52, 0xFF, 0xDF, 0x7F, 0x07, 0x00, 0x00, 0x1F, 0x8D, 0xFF, 0xFF, 0x85, 0x87, 0x00, 0x00, 0x20, 0xC0, 0xFF, 0xFF, 0x83, 0xD8, 0x00, 0x00, 0x20, 0xE7, 0xFF, 0xFF, 0x83, 0xC8, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x83, 0xB2, 0xD9, 0x90, 0x77, 0xFD, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xB0, 0x7A, 0xD0, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x30, 0x7A, 0x34, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x81, 0x76, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xA2, 0x6D, 0xC4, 0x00, 0x00, 0x02, 0x01, 0x8A, 0x87, 0x72, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x78, 0x03, 0x79, 0xF6, 0x00, 0x00, 0x0C, 0x8E, 0x55, 0x5B, 0x75, 0x0D, 0x00, 0x00, 0x35, 0x99, 0x00, 0x00, 0x5A, 0xB6, 0x14, 0xE7, 0x5F, 0x85, 0x00, 0x00, 0x6A, 0xF8, 0x76, 0x70, 0x52, 0xF5, 0x00, 0x00, 0x68, 0xC3, 0xB6, 0x90, 0x4E, 0xC4, 0x00, 0x00, 0x61, 0xD7, 0xE6, 0x48, 0x53, 0x40, 0x04, 0x8A, 0x5E, 0xA0, 0xFF, 0xFF, 0x5E, 0xB8, 0x00, 0x00, 0x57, 0x55, 0xFF, 0xFF, 0x6D, 0x9B, 0x00, 0x00, 0x56, 0x72, 0xFF, 0xFF, 0x71, 0xD7, 0x00, 0x00, 0x4F, 0xAF, 0xFF, 0xFF, 0x74, 0xEB, 0x00, 0x00, 0x4C, 0x52, 0xFF, 0xFF, 0x74, 0x69, 0xD4, 0xFB, 0x88, 0x82, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x28, 0x8C, 0x73, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x0B, 0x88, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x4D, 0x7F, 0x40, 0x00, 0x00, 0x01, 0x17, 0x89, 0x28, 0x7C, 0x95, 0x00, 0x00, 0x00, 0x00, 0x75, 0xEF, 0x82, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x68, 0x17, 0x93, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x49, 0xFA, 0x9B, 0xF6, 0x00, 0x00, 0x1E, 0x12, 0x00, 0x00, 0x95, 0x3B, 0x1B, 0xE1, 0x42, 0x81, 0x00, 0x00, 0x9F, 0x7C, 0x72, 0x46, 0x36, 0x01, 0x00, 0x00, 0x9E, 0xE7, 0xB7, 0x5A, 0x34, 0x07, 0x00, 0x00, 0x96, 0xD1, 0xE8, 0x8D, 0x37, 0xF2, 0x00, 0x00, 0x86, 0x01, 0xFF, 0x5D, 0x3F, 0x48, 0x00, 0x00, 0x76, 0xAB, 0xFF, 0xFF, 0x48, 0x53, 0x00, 0x00, 0x70, 0x74, 0xFF, 0xFF, 0x4E, 0xC6, 0x00, 0x00, 0x6B, 0x7E, 0xFF, 0xFF, 0x52, 0x9C, 0x00, 0x00, 0x69, 0xDB, 0xFF, 0xFF, 0x54, 0xA5, 0xD0, 0xCA, 0x96, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x34, 0x98, 0x24, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x31, 0x91, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x91, 0x11, 0x8A, 0x23, 0x00, 0x00, 0x00, 0x24, 0x79, 0x6C, 0x8A, 0x82, 0x00, 0x00, 0x00, 0x00, 0x67, 0x36, 0x97, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x54, 0x62, 0xAA, 0x44, 0x00, 0x00, 0x00, 0x00, 0x41, 0xE4, 0xB8, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x7F, 0x1B, 0xEB, 0x29, 0x2E, 0x00, 0x00, 0xC0, 0x8E, 0x6A, 0xFA, 0x1E, 0x2C, 0x00, 0x00, 0xBF, 0x91, 0xB0, 0xD7, 0x19, 0x06, 0x00, 0x00, 0xB8, 0xCA, 0xE6, 0x30, 0x1C, 0xD8, 0x00, 0x00, 0xA9, 0xF6, 0xFE, 0x07, 0x21, 0xD2, 0x00, 0x00, 0x97, 0x8C, 0xFF, 0xFF, 0x27, 0x3B, 0x00, 0x00, 0x8C, 0xDA, 0xFF, 0xFF, 0x2C, 0x34, 0x00, 0x00, 0x87, 0x7B, 0xFF, 0xFF, 0x2F, 0xD6, 0x00, 0x00, 0x84, 0xCD, 0xFF, 0xFF, 0x33, 0x33, 0xCC, 0x42, 0xA4, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xBA, 0xAE, 0xA2, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x02, 0x99, 0x43, 0x00, 0x00, 0x04, 0x06, 0x84, 0xB7, 0x97, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x70, 0x95, 0xA0, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x0F, 0xAF, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, 0xC1, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFB, 0xD1, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xD5, 0x16, 0x84, 0x0C, 0xD5, 0x00, 0x00, 0xDA, 0x99, 0x60, 0xF4, 0x05, 0xF8, 0x00, 0x00, 0xDC, 0x14, 0xAB, 0x90, 0x03, 0xC0, 0x00, 0x00, 0xD9, 0x05, 0xE3, 0x1B, 0x02, 0xCA, 0x00, 0x00, 0xC6, 0xB3, 0xF8, 0xAA, 0x04, 0xCD, 0x00, 0x00, 0xB4, 0xC9, 0xFF, 0xFF, 0x07, 0xE2, 0x00, 0x00, 0xA8, 0xAD, 0xFF, 0xFF, 0x0C, 0x1F, 0x00, 0x00, 0xA5, 0x0B, 0xFF, 0xFF, 0x10, 0x42, 0x00, 0x00, 0xA1, 0xBB, 0xFF, 0xFF, 0x15, 0x4F, 0xC6, 0x9B, 0xAF, 0x34, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x07, 0xA7, 0xF5, 0x00, 0x00, 0x02, 0xFA, 0x92, 0x3B, 0xA3, 0xCF, 0x00, 0x00, 0x03, 0x2A, 0x7C, 0x7E, 0xA8, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x67, 0xFE, 0xB8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x50, 0xF3, 0xCA, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x32, 0x4A, 0xDC, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x14, 0x7E, 0xEB, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x07, 0x1D, 0x72, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x8D, 0x5B, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x61, 0x9D, 0x65, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x19, 0xD1, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x27, 0xF3, 0x5E, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x84, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBD, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0xBC, 0x4E, 0xB5, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x1F, 0xAD, 0x87, 0x00, 0x00, 0x06, 0x15, 0x88, 0xB5, 0xAF, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x72, 0xB2, 0xBD, 0x27, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x83, 0xD0, 0x66, 0x00, 0x00, 0x00, 0x00, 0x44, 0x68, 0xED, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x04, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xFF, 0xFF, 0x06, 0xF7, 0x0B, 0x55, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0xC6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAA, 0x25, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDA, 0x4D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xC2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x2D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEA, 0xEB, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0x61, 0xB8, 0x27, 0x00, 0x00, 0x01, 0xA0, 0x94, 0xA4, 0xB5, 0xA9, 0x00, 0x00, 0x01, 0x2D, 0x7C, 0x80, 0xBF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x67, 0xFE, 0xD4, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x51, 0x4E, 0xFA, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x35, 0x66, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xF2, 0xFF, 0xFF, 0x01, 0x98, 0x00, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0x05, 0x06, 0x46, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xCF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x86, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6F, 0x4C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDB, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF8, 0x31, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xBC, 0xFF, 0xFF, 0x00, 0x00, 0xA1, 0x34, 0xBC, 0x39, 0x00, 0x00, 0x02, 0x9F, 0x89, 0x5D, 0xC3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x73, 0x73, 0xD6, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF3, 0xF1, 0x50, 0x00, 0x00, 0x00, 0x57, 0x40, 0x36, 0xFD, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x27, 0xE9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xE6, 0xFF, 0xFF, 0x04, 0x17, 0x04, 0x17, 0x00, 0x00, 0xFF, 0xFF, 0x12, 0xFF, 0x01, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xFD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4C, 0x30, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xC9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD1, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD9, 0xEE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE5, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0x34, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0xF6, 0x08, 0x57, 0xFF, 0xFF, 0x00, 0x00, 0x1E, 0x69, 0x09, 0x19, 0xFF, 0xFF, 0x02, 0xF1, 0x31, 0x90, 0x02, 0xF1, 0xFF, 0xFF, 0x01, 0x54, 0x41, 0x53, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xD2, 0x53, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x65, 0x9A, 0x04, 0x39, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0x2B, 0x0A, 0x48, 0xFF, 0xFF, 0x00, 0x00, 0x97, 0x68, 0x08, 0x65, 0xFD, 0x00, 0x00, 0x00, 0xAE, 0xBA, 0x04, 0x78, 0xEE, 0xE5, 0x00, 0x00, 0xC0, 0x1D, 0x00, 0x77, 0xDF, 0xE6, 0x00, 0x00, 0xD5, 0x09, 0x00, 0x00, 0xD1, 0x2D, 0x00, 0x00, 0xE8, 0x22, 0x00, 0x00, 0xC1, 0xA7, 0x00, 0x00, 0xF7, 0x53, 0x00, 0x00, 0xB5, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB1, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0x46, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x13, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x44, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0x82, 0x09, 0x06, 0xFF, 0xFF, 0x05, 0x4A, 0x2C, 0xBF, 0x03, 0x32, 0xFF, 0xFF, 0x00, 0xDC, 0x3C, 0x6C, 0x00, 0xDB, 0xFF, 0xFF, 0x01, 0xA9, 0x4E, 0xEA, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x83, 0x02, 0x5E, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x30, 0x0B, 0x22, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0x68, 0x08, 0x6D, 0xFE, 0xCF, 0x00, 0x00, 0xB1, 0x8A, 0x03, 0x96, 0xEC, 0x8E, 0x00, 0x00, 0xC4, 0x29, 0x00, 0x00, 0xDB, 0xD8, 0x00, 0x00, 0xDA, 0x83, 0x00, 0x00, 0xCB, 0xED, 0x00, 0x00, 0xEF, 0x67, 0x00, 0x00, 0xB9, 0xD9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA9, 0x8E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0xA1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x41, 0x09, 0x90, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x1C, 0x0A, 0xE7, 0xFF, 0xFF, 0x03, 0x50, 0x35, 0xF1, 0x01, 0xC4, 0xFF, 0xFF, 0x02, 0x98, 0x48, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x4D, 0x5E, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0xF1, 0x0A, 0x63, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0xE8, 0x05, 0x18, 0xF4, 0xEF, 0x00, 0x00, 0xB0, 0xD8, 0x04, 0x8F, 0xE5, 0x5D, 0x00, 0x00, 0xC8, 0x56, 0x00, 0x00, 0xD6, 0x8F, 0x00, 0x00, 0xE3, 0xAC, 0x00, 0x00, 0xC2, 0x8B, 0x00, 0x00, 0xF9, 0x11, 0x00, 0x00, 0xAF, 0xC9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA1, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9C, 0xE6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x99, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xE3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0x44, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0x3B, 0x00, 0x00, 0x04, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0x13, 0xE8, 0x09, 0xD9, 0xFF, 0xFF, 0x08, 0x1B, 0x2E, 0x84, 0x03, 0x6B, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x03, 0x64, 0xFF, 0xFF, 0x06, 0x92, 0x59, 0xB2, 0x00, 0x00, 0xFA, 0xC9, 0x00, 0x00, 0x73, 0x0B, 0x08, 0x20, 0xEB, 0xE6, 0x00, 0x00, 0x8F, 0x14, 0x06, 0x7C, 0xE0, 0x10, 0x00, 0x00, 0xAC, 0x6D, 0x07, 0x13, 0xD6, 0x36, 0x00, 0x00, 0xC8, 0x5B, 0x03, 0x77, 0xC9, 0xDE, 0x00, 0x00, 0xE9, 0x6D, 0x03, 0x59, 0xB9, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x92, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x97, 0x35, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0x77, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFA, 0x95, 0x1F, 0x8A, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x13, 0x1A, 0xC2, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xA9, 0x22, 0xB2, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x3C, 0x00, 0x00, 0x01, 0x9D, 0x16, 0x26, 0xF7, 0xFF, 0x00, 0x00, 0x1D, 0x86, 0x11, 0xFE, 0xF7, 0x3D, 0x00, 0x00, 0x34, 0x67, 0x11, 0x35, 0xF1, 0x05, 0x00, 0x00, 0x4D, 0xEE, 0x0F, 0xD6, 0xE3, 0x96, 0x00, 0x00, 0x66, 0x88, 0x08, 0x51, 0xD8, 0x0A, 0x00, 0x00, 0x83, 0x9B, 0x0B, 0x35, 0xCF, 0x06, 0x00, 0x00, 0xA3, 0xC8, 0x09, 0x18, 0xC7, 0x3D, 0x00, 0x00, 0xCB, 0x9A, 0x08, 0x43, 0xBA, 0xFC, 0x00, 0x00, 0xF0, 0xB7, 0x0C, 0xD5, 0xAD, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xA2, 0x9E, 0xB7, 0x00, 0x00, 0xFF, 0xFF, 0x0D, 0xA2, 0x8D, 0x85, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0xE4, 0x88, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x52, 0x88, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0xBF, 0xF3, 0xD3, 0x26, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x02, 0x24, 0xB2, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x1C, 0x27, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xF5, 0x1A, 0x4E, 0x00, 0x00, 0x0D, 0x37, 0xE1, 0x9B, 0x00, 0x00, 0x09, 0x62, 0x1F, 0x01, 0xDE, 0x42, 0x00, 0x00, 0x23, 0x55, 0x18, 0x09, 0xD9, 0xB1, 0x00, 0x00, 0x3B, 0x83, 0x15, 0x60, 0xCD, 0xC0, 0x00, 0x00, 0x58, 0x75, 0x12, 0x4A, 0xC3, 0x9B, 0x00, 0x00, 0x77, 0x16, 0x14, 0x9B, 0xBA, 0x95, 0x00, 0x00, 0x9C, 0xBE, 0x0F, 0x50, 0xB3, 0x2A, 0x00, 0x00, 0xC9, 0x6A, 0x0B, 0x6E, 0xA7, 0xCF, 0x00, 0x00, 0xF2, 0x76, 0x15, 0xE7, 0x97, 0xB4, 0x00, 0x00, 0xFF, 0x09, 0x27, 0x15, 0x88, 0x32, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x93, 0x7E, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0x1D, 0x78, 0xA6, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0x41, 0x74, 0xC1, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0x99, 0xE6, 0xFF, 0x37, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x4C, 0x35, 0xE7, 0x00, 0x00, 0x00, 0x00, 0xE3, 0x44, 0x35, 0x26, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x45, 0x37, 0x11, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x80, 0x1C, 0x97, 0x00, 0x00, 0x16, 0x7E, 0xC9, 0x41, 0x00, 0x00, 0x06, 0xCF, 0x27, 0xB3, 0xC1, 0x1B, 0x00, 0x00, 0x24, 0x60, 0x24, 0x03, 0xAE, 0xF8, 0x00, 0x00, 0x3E, 0xBA, 0x24, 0xF1, 0x9F, 0xED, 0x00, 0x00, 0x62, 0x0C, 0x27, 0x9F, 0x96, 0xC5, 0x00, 0x00, 0x91, 0x0B, 0x24, 0x86, 0x8F, 0x2B, 0x00, 0x00, 0xC0, 0x39, 0x1F, 0xF8, 0x86, 0xA6, 0x00, 0x00, 0xED, 0xE1, 0x29, 0xFA, 0x7A, 0x90, 0x00, 0x00, 0xFF, 0xBE, 0x4C, 0x78, 0x62, 0xA5, 0x00, 0x00, 0xFF, 0xFF, 0x59, 0x8B, 0x50, 0xCC, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x75, 0x4E, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xC4, 0x4C, 0xB2, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x36, 0xDF, 0x8C, 0x45, 0xBB, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x61, 0x44, 0xC6, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x84, 0x44, 0x10, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x4E, 0x41, 0x5C, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x06, 0x3E, 0x2C, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x36, 0x32, 0x37, 0x00, 0x00, 0x07, 0xB6, 0x99, 0x6D, 0x1C, 0xB4, 0x00, 0x00, 0x22, 0xB9, 0x75, 0xFE, 0x00, 0x00, 0x13, 0x65, 0x42, 0xAC, 0x6A, 0x85, 0x00, 0x00, 0x41, 0xFE, 0x40, 0x5A, 0x62, 0x80, 0x00, 0x00, 0x7F, 0x77, 0x3C, 0x73, 0x59, 0x2C, 0x00, 0x00, 0xB6, 0x99, 0x3F, 0xFF, 0x51, 0xF2, 0x00, 0x00, 0xE1, 0x24, 0x4A, 0x42, 0x3E, 0xFB, 0x00, 0x00, 0xFD, 0xDF, 0x66, 0xC4, 0x25, 0x34, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x28, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0xC3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0xE0, 0xD9, 0x14, 0x54, 0x60, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x37, 0x58, 0x4A, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x68, 0x56, 0x4B, 0x00, 0x00, 0x00, 0x00, 0xBD, 0xB3, 0x53, 0x07, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x0E, 0x4D, 0x28, 0x00, 0x00, 0x00, 0x00, 0x93, 0x41, 0x4A, 0x57, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x29, 0x49, 0x3B, 0x00, 0x00, 0x0E, 0xCB, 0x59, 0x6D, 0x3A, 0x34, 0x00, 0x00, 0x33, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0xA6, 0x00, 0x00, 0x03, 0xB8, 0x54, 0x1B, 0x69, 0x07, 0x00, 0x00, 0x14, 0x3E, 0xA1, 0x33, 0x5F, 0x86, 0x00, 0x00, 0x1A, 0x96, 0xD3, 0xCF, 0x5D, 0x03, 0x00, 0x00, 0x26, 0x6F, 0xFC, 0x0F, 0x66, 0x10, 0x00, 0x00, 0x24, 0x73, 0xFF, 0xFF, 0x73, 0xA1, 0x00, 0x00, 0x1D, 0x97, 0xFF, 0xFF, 0x79, 0x5E, 0x00, 0x00, 0x1D, 0x7A, 0xFF, 0xFF, 0x79, 0x17, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x76, 0xAA, 0xD0, 0xEA, 0x6A, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xB4, 0x6D, 0x67, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x6A, 0x69, 0x8C, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x65, 0x60, 0x56, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xCD, 0x5A, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x75, 0x8E, 0x5A, 0x17, 0x00, 0x00, 0x00, 0x00, 0x65, 0xA7, 0x60, 0x94, 0x00, 0x00, 0x05, 0x10, 0x4B, 0xB0, 0x61, 0xC6, 0x00, 0x00, 0x26, 0x82, 0x00, 0x00, 0x4D, 0x3A, 0x0E, 0x6A, 0x4D, 0xAD, 0x00, 0x00, 0x5B, 0x4E, 0x61, 0xC1, 0x3F, 0xA6, 0x00, 0x00, 0x5C, 0xCE, 0xA3, 0xF2, 0x39, 0xD5, 0x00, 0x00, 0x5B, 0x82, 0xD7, 0xDB, 0x3B, 0x59, 0x00, 0x00, 0x56, 0x6B, 0xFA, 0xEB, 0x45, 0x87, 0x00, 0x00, 0x53, 0xB7, 0xFF, 0xFF, 0x54, 0xF0, 0x00, 0x00, 0x54, 0x1A, 0xFF, 0xFF, 0x61, 0x28, 0x00, 0x00, 0x53, 0x73, 0xFF, 0xFF, 0x61, 0xE4, 0x00, 0x00, 0x50, 0x44, 0xFF, 0xFF, 0x60, 0x72, 0xCB, 0xED, 0x7B, 0x97, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x7F, 0x7F, 0xB7, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x3C, 0x77, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x94, 0x2E, 0x6C, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1B, 0x65, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x64, 0x31, 0x68, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x56, 0x45, 0x76, 0x70, 0x00, 0x00, 0x00, 0x00, 0x40, 0x91, 0x86, 0xBE, 0x00, 0x00, 0x0A, 0xB8, 0x00, 0x00, 0x80, 0x94, 0x12, 0x6D, 0x32, 0xA3, 0x00, 0x00, 0x8C, 0x68, 0x5B, 0xD8, 0x24, 0x26, 0x00, 0x00, 0x8E, 0x15, 0xA4, 0x96, 0x21, 0xC7, 0x00, 0x00, 0x8A, 0xBF, 0xD5, 0x9B, 0x22, 0xA7, 0x00, 0x00, 0x80, 0x33, 0xF8, 0x59, 0x27, 0x82, 0x00, 0x00, 0x76, 0x19, 0xFF, 0xFF, 0x31, 0x32, 0x00, 0x00, 0x66, 0x80, 0xFF, 0xFF, 0x3C, 0x79, 0x00, 0x00, 0x65, 0x70, 0xFF, 0xFF, 0x3D, 0xA4, 0x00, 0x00, 0x64, 0xCA, 0xFF, 0xFF, 0x3F, 0x7D, 0xC6, 0xE1, 0x8A, 0x10, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x9A, 0x8B, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x8F, 0x81, 0x53, 0x00, 0x00, 0x00, 0x00, 0x83, 0x16, 0x77, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x48, 0x73, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x58, 0x5F, 0x7A, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x42, 0xD3, 0x8F, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x1C, 0xA4, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x65, 0x16, 0x3B, 0x14, 0xB8, 0x00, 0x00, 0xAD, 0x11, 0x55, 0xC6, 0x0A, 0xAF, 0x00, 0x00, 0xAD, 0xD5, 0x98, 0x2F, 0x04, 0xF1, 0x00, 0x00, 0xAA, 0x79, 0xD0, 0x2C, 0x04, 0xE8, 0x00, 0x00, 0xA2, 0x7B, 0xF7, 0x13, 0x08, 0xE7, 0x00, 0x00, 0x95, 0xFB, 0xFF, 0xFF, 0x13, 0x5B, 0x00, 0x00, 0x80, 0x1E, 0xFF, 0xFF, 0x1B, 0xE9, 0x00, 0x00, 0x7E, 0xEA, 0xFF, 0xFF, 0x1D, 0xA7, 0x00, 0x00, 0x7E, 0xF0, 0xFF, 0xFF, 0x20, 0x16, 0xC0, 0xAB, 0x95, 0xD2, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x57, 0x94, 0x58, 0x00, 0x00, 0x00, 0x00, 0x91, 0xEA, 0x89, 0x82, 0x00, 0x00, 0x00, 0x68, 0x78, 0x03, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x63, 0x85, 0x89, 0x91, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x1F, 0x9D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x30, 0x51, 0xAE, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xF9, 0xBA, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xEF, 0x16, 0xFD, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x65, 0x57, 0x21, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x48, 0x95, 0x33, 0x00, 0x00, 0x00, 0x00, 0xC5, 0xB1, 0xC4, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x43, 0xF1, 0x93, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x95, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x05, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x99, 0x5C, 0xFF, 0xFF, 0x04, 0x8C, 0xB9, 0x91, 0xA1, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x7F, 0x9A, 0xDB, 0x00, 0x00, 0x01, 0x4A, 0x85, 0x6A, 0x94, 0x10, 0x00, 0x00, 0x00, 0x10, 0x6F, 0x86, 0x99, 0x45, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB2, 0xAA, 0x57, 0x00, 0x00, 0x00, 0x00, 0x41, 0x8D, 0xBC, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x24, 0xE5, 0xD0, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x1D, 0x21, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xE9, 0x3B, 0x5B, 0xDD, 0x00, 0x00, 0x00, 0x00, 0xEB, 0xDF, 0x96, 0x8A, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x24, 0xC6, 0x66, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x45, 0xF1, 0xFD, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x90, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xB8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0xB1, 0xDB, 0xAA, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x94, 0x32, 0xA2, 0x12, 0x00, 0x00, 0x01, 0xC3, 0x7B, 0x70, 0xA3, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x66, 0xCD, 0xB2, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x50, 0x1A, 0xC7, 0x79, 0x00, 0x00, 0x00, 0x00, 0x34, 0xF5, 0xDD, 0x34, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4E, 0xF9, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0x3B, 0x05, 0x5B, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0x2A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE7, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x5F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xED, 0x78, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x0E, 0xAE, 0x5C, 0x00, 0x00, 0x01, 0x40, 0x89, 0x53, 0xAC, 0x05, 0x00, 0x00, 0x00, 0x00, 0x72, 0x90, 0xB8, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x91, 0xCE, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x46, 0x24, 0xED, 0x47, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x0E, 0xFB, 0x87, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x2A, 0xFD, 0x21, 0x00, 0x00, 0x09, 0x67, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0x05, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x7D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x59, 0x9E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6F, 0x1D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x60, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0x88, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE9, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x97, 0x12, 0xB3, 0xFE, 0x00, 0x00, 0x00, 0xE9, 0x7E, 0x1B, 0xBB, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x69, 0x20, 0xD0, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xBC, 0xE6, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x35, 0x7E, 0xF1, 0x97, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xD9, 0xF6, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x41, 0x03, 0x60, 0x07, 0xE6, 0x00, 0x00, 0xFD, 0x3C, 0x1F, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0xD2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x53, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0x4C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE4, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEE, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF4, 0x04, 0x00, 0x00, 0xF5, 0x68, 0x00, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xF5, 0x00, 0x00, 0x0F, 0x77, 0x00, 0x00, 0xF7, 0xC5, 0x00, 0x00, 0x21, 0x32, 0x00, 0x00, 0xF6, 0x77, 0x00, 0x00, 0x2E, 0x17, 0x00, 0x00, 0xF3, 0xA8, 0x00, 0x00, 0x3C, 0x0E, 0x00, 0x00, 0xF2, 0x2E, 0x00, 0x00, 0x4C, 0xB5, 0x00, 0x00, 0xF0, 0xA6, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0xF1, 0x2D, 0x00, 0x00, 0x73, 0xFC, 0x00, 0x00, 0xEA, 0xD3, 0x00, 0x00, 0x8B, 0x50, 0x00, 0x00, 0xE3, 0xBD, 0x00, 0x00, 0xA2, 0xFB, 0x02, 0x31, 0xDB, 0x83, 0x00, 0x00, 0xB5, 0x7A, 0x00, 0x00, 0xD1, 0x37, 0x00, 0x00, 0xCA, 0x04, 0x00, 0x00, 0xC5, 0x25, 0x00, 0x00, 0xDE, 0x1D, 0x00, 0x00, 0xB7, 0x69, 0x00, 0x00, 0xEC, 0xF1, 0x00, 0x00, 0xAA, 0x11, 0x00, 0x00, 0xFE, 0x1D, 0x00, 0x00, 0xA5, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x31, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF6, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xD9, 0x00, 0x00, 0x06, 0xBD, 0x00, 0x00, 0xF7, 0x40, 0x00, 0x00, 0x19, 0xF0, 0x00, 0x00, 0xF8, 0x9A, 0x00, 0x00, 0x29, 0x8E, 0x00, 0x00, 0xF4, 0xB2, 0x00, 0x00, 0x36, 0xCF, 0x00, 0x00, 0xF3, 0x8E, 0x00, 0x00, 0x48, 0x91, 0x00, 0x00, 0xF1, 0xDE, 0x00, 0x00, 0x59, 0xFF, 0x00, 0x00, 0xF3, 0x82, 0x00, 0x00, 0x72, 0xC9, 0x00, 0x00, 0xEB, 0x74, 0x00, 0x00, 0x8C, 0x18, 0x00, 0x00, 0xE3, 0x13, 0x00, 0x00, 0xA5, 0xFC, 0x02, 0x48, 0xD9, 0xFB, 0x00, 0x00, 0xB8, 0x87, 0x00, 0x00, 0xCD, 0xD7, 0x00, 0x00, 0xD0, 0xA4, 0x00, 0x00, 0xBF, 0x6A, 0x00, 0x00, 0xE4, 0xB1, 0x00, 0x00, 0xAF, 0xF3, 0x00, 0x00, 0xF8, 0x64, 0x00, 0x00, 0xA1, 0x4B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9B, 0x69, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF7, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0x38, 0x00, 0x00, 0x0E, 0x9D, 0x00, 0x00, 0xF9, 0x4C, 0x00, 0x00, 0x22, 0xD3, 0x00, 0x00, 0xF7, 0xD2, 0x00, 0x00, 0x30, 0x8A, 0x00, 0x00, 0xF4, 0xB3, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xF4, 0xB1, 0x00, 0x00, 0x56, 0xCA, 0x00, 0x00, 0xF6, 0xF7, 0x00, 0x00, 0x71, 0xB7, 0x00, 0x00, 0xE9, 0x05, 0x00, 0x00, 0x8B, 0xD9, 0x00, 0x00, 0xDD, 0x88, 0x00, 0x00, 0xA5, 0xDD, 0x00, 0xB6, 0xD4, 0x1A, 0x00, 0x00, 0xBB, 0xFE, 0x00, 0x00, 0xC9, 0x33, 0x00, 0x00, 0xDA, 0xED, 0x00, 0x00, 0xB6, 0xF2, 0x00, 0x00, 0xEE, 0x3F, 0x00, 0x00, 0xA7, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x93, 0x33, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8E, 0x56, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8B, 0xE4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF9, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x64, 0x00, 0x00, 0x14, 0x67, 0x00, 0x00, 0xF7, 0xFD, 0x00, 0x00, 0x29, 0x32, 0x00, 0x00, 0xF0, 0x9C, 0x00, 0x00, 0x3A, 0x90, 0x00, 0x00, 0xE9, 0x0E, 0x00, 0x00, 0x4F, 0x6F, 0x00, 0x00, 0xDC, 0x46, 0x00, 0x00, 0x63, 0xDC, 0x00, 0x00, 0xD3, 0x56, 0x00, 0x00, 0x7D, 0x70, 0x00, 0x00, 0xC9, 0x8E, 0x00, 0x00, 0x98, 0x07, 0x00, 0x00, 0xC0, 0x1C, 0x00, 0x00, 0xB6, 0x1C, 0x00, 0x00, 0xBB, 0x48, 0x00, 0x00, 0xDA, 0xF6, 0x00, 0x00, 0xAD, 0x40, 0x00, 0x00, 0xF6, 0xA6, 0x00, 0x00, 0x99, 0x4C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8A, 0xD8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8F, 0xA6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8F, 0x05, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF4, 0x04, 0x09, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x0C, 0x03, 0x11, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xAC, 0x0A, 0x2B, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x85, 0x00, 0x00, 0x04, 0xE5, 0x08, 0x79, 0xE6, 0x15, 0x00, 0x00, 0x1B, 0x00, 0x06, 0xAB, 0xE0, 0x34, 0x00, 0x00, 0x30, 0x2C, 0x03, 0xC8, 0xD7, 0xAA, 0x00, 0x00, 0x44, 0x4D, 0x00, 0x00, 0xCC, 0xF8, 0x00, 0x00, 0x58, 0xE3, 0x00, 0x00, 0xBE, 0xDF, 0x00, 0x00, 0x6E, 0x3A, 0x00, 0x00, 0xB3, 0xD6, 0x00, 0x00, 0x89, 0xB9, 0x00, 0x00, 0xAE, 0xA1, 0x00, 0x00, 0xAF, 0x53, 0x00, 0x00, 0xAC, 0xDD, 0x00, 0x00, 0xDB, 0x8A, 0x00, 0x00, 0xA5, 0x16, 0x00, 0x00, 0xF9, 0xBA, 0x00, 0x92, 0x97, 0x92, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xFF, 0x84, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0x4F, 0x7F, 0x2C, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x8E, 0x7F, 0x86, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x61, 0xEB, 0x6E, 0x1D, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xDA, 0x19, 0x6D, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xCE, 0x19, 0x41, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xD3, 0x17, 0x6D, 0x00, 0x00, 0x00, 0x4B, 0xD2, 0x19, 0x00, 0x00, 0x07, 0xFE, 0x10, 0x83, 0xCF, 0x0D, 0x00, 0x00, 0x1D, 0xEA, 0x0B, 0x08, 0xC6, 0x09, 0x00, 0x00, 0x34, 0x8D, 0x05, 0xEE, 0xB7, 0xE9, 0x00, 0x00, 0x4C, 0x1A, 0x00, 0x00, 0xAA, 0xA0, 0x00, 0x00, 0x63, 0xE3, 0x00, 0x00, 0xA1, 0xB6, 0x00, 0x00, 0x82, 0x3C, 0x00, 0x00, 0x9E, 0x90, 0x00, 0x00, 0xAE, 0x4D, 0x00, 0x00, 0x99, 0x52, 0x00, 0x00, 0xDB, 0x18, 0x02, 0xBA, 0x8F, 0xFD, 0x00, 0x00, 0xF8, 0x24, 0x18, 0xD6, 0x80, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0xCC, 0x71, 0xB3, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0x8E, 0x6E, 0x4B, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x9C, 0x69, 0xFA, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0xC4, 0xDF, 0xFF, 0x2A, 0x5D, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x6A, 0x28, 0x06, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x68, 0x27, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x77, 0x25, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC5, 0xAB, 0x1A, 0x20, 0x00, 0x00, 0x04, 0x1A, 0xB8, 0x54, 0x00, 0x00, 0x03, 0x79, 0x13, 0xA9, 0xAF, 0x2A, 0x00, 0x00, 0x1D, 0x0C, 0x09, 0x6E, 0x9A, 0x5C, 0x00, 0x00, 0x37, 0x5D, 0x09, 0x19, 0x89, 0x37, 0x00, 0x00, 0x53, 0x7F, 0x0E, 0x98, 0x80, 0xBB, 0x00, 0x00, 0x7A, 0x86, 0x14, 0x0A, 0x7F, 0xA0, 0x00, 0x00, 0xAB, 0x56, 0x10, 0xC9, 0x7A, 0x85, 0x00, 0x00, 0xD9, 0xCB, 0x11, 0x9C, 0x73, 0x99, 0x00, 0x00, 0xF8, 0x45, 0x33, 0xC6, 0x5E, 0xD6, 0x00, 0x00, 0xFF, 0xFF, 0x4C, 0x2B, 0x49, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0x07, 0x46, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0x05, 0x41, 0x65, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0xBF, 0xD7, 0xFD, 0x3C, 0xC5, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xE5, 0x3C, 0x2B, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x0A, 0x38, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x12, 0x31, 0xEA, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x1E, 0x2C, 0x4D, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xE6, 0x23, 0x62, 0x00, 0x00, 0x00, 0x00, 0x83, 0xE4, 0x12, 0x3A, 0x00, 0x00, 0x10, 0xE9, 0x68, 0xE3, 0x00, 0x00, 0x10, 0x82, 0x2B, 0x49, 0x5C, 0x4E, 0x00, 0x00, 0x38, 0xA6, 0x2E, 0x0B, 0x56, 0xD7, 0x00, 0x00, 0x6A, 0xB5, 0x2E, 0xD5, 0x50, 0x5E, 0x00, 0x00, 0xA0, 0x33, 0x2F, 0x51, 0x4A, 0x39, 0x00, 0x00, 0xCE, 0xB4, 0x32, 0xC2, 0x3F, 0xBD, 0x00, 0x00, 0xF6, 0x53, 0x44, 0x3B, 0x1F, 0x74, 0x00, 0x00, 0xFF, 0xFF, 0x66, 0x26, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0xEA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0x12, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6F, 0xE1, 0xD0, 0xED, 0x48, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x64, 0x48, 0xC3, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x23, 0x48, 0x8E, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x32, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x98, 0x9F, 0x3A, 0x17, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x6F, 0x3A, 0x89, 0x00, 0x00, 0x00, 0x00, 0x68, 0x47, 0x39, 0xA5, 0x00, 0x00, 0x04, 0x4A, 0x4F, 0x1B, 0x31, 0x33, 0x00, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x2F, 0x00, 0x00, 0x07, 0x39, 0x47, 0x04, 0x53, 0x52, 0x00, 0x00, 0x11, 0xB0, 0x8D, 0xD9, 0x4B, 0xD9, 0x00, 0x00, 0x14, 0x21, 0xBD, 0x22, 0x47, 0xC0, 0x00, 0x00, 0x1D, 0xEB, 0xEE, 0x12, 0x49, 0x0D, 0x00, 0x00, 0x26, 0x20, 0xFF, 0xFF, 0x56, 0xD6, 0x02, 0x66, 0x26, 0x59, 0xFF, 0xFF, 0x62, 0x4F, 0x00, 0x00, 0x1D, 0xF5, 0xFF, 0xFF, 0x66, 0x59, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x63, 0x7A, 0xC7, 0xD1, 0x5A, 0xFB, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x1E, 0x5E, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x22, 0x58, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x99, 0x64, 0x4F, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x6D, 0x4A, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x62, 0x59, 0x46, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x53, 0xF7, 0x4B, 0x89, 0x00, 0x00, 0x00, 0x73, 0x40, 0x7A, 0x51, 0x8F, 0x00, 0x00, 0x14, 0xD7, 0x00, 0x00, 0x41, 0x6D, 0x08, 0x0E, 0x3C, 0xC2, 0x00, 0x00, 0x4F, 0x72, 0x53, 0x04, 0x2F, 0x19, 0x00, 0x00, 0x4F, 0xB0, 0x8D, 0xC5, 0x28, 0x3D, 0x00, 0x00, 0x52, 0x16, 0xC1, 0xC7, 0x28, 0x0C, 0x00, 0x00, 0x50, 0xDA, 0xF0, 0x41, 0x2C, 0x63, 0x00, 0x00, 0x4D, 0x21, 0xFF, 0xFF, 0x37, 0x83, 0x00, 0x00, 0x4D, 0xD6, 0xFF, 0xFF, 0x45, 0xAB, 0x00, 0x00, 0x4B, 0x52, 0xFF, 0xFF, 0x4B, 0x4B, 0x00, 0x00, 0x49, 0xE3, 0xFF, 0xFF, 0x49, 0xE3, 0xC1, 0xF0, 0x6D, 0x21, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x90, 0x71, 0xBD, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xB7, 0x64, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x86, 0xE9, 0x5B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x74, 0x54, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x55, 0xDF, 0x52, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x46, 0x24, 0x5C, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x36, 0x9B, 0x72, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x4E, 0x0B, 0xB5, 0x20, 0xC5, 0x00, 0x00, 0x7A, 0x62, 0x49, 0x8A, 0x11, 0x1E, 0x00, 0x00, 0x79, 0xD8, 0x88, 0xB7, 0x0D, 0xF3, 0x00, 0x00, 0x7A, 0xD2, 0xBD, 0xDE, 0x0C, 0x37, 0x00, 0x00, 0x78, 0x35, 0xEB, 0xB8, 0x0D, 0x64, 0x00, 0x00, 0x71, 0x1B, 0xFF, 0xFF, 0x17, 0xD5, 0x00, 0x00, 0x66, 0xF8, 0xFF, 0xFF, 0x23, 0x33, 0x00, 0x00, 0x5B, 0x83, 0xFF, 0xFF, 0x2C, 0x22, 0x00, 0x00, 0x5B, 0xD4, 0xFF, 0xFF, 0x2C, 0xC5, 0xBD, 0x91, 0x7D, 0x5C, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xC9, 0x7D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x94, 0xDF, 0x70, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x77, 0xEC, 0x66, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x18, 0x60, 0x62, 0x00, 0x00, 0x02, 0xA4, 0x4D, 0x91, 0x65, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x33, 0x6E, 0x77, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x15, 0xEA, 0x8A, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0xE8, 0x19, 0x9C, 0x01, 0x64, 0x00, 0x00, 0x9A, 0x4E, 0x4B, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x97, 0x54, 0x7E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x96, 0xBF, 0xB4, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x93, 0xDA, 0xE5, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0xFF, 0xFF, 0x03, 0xFB, 0x00, 0x00, 0x78, 0xB5, 0xFF, 0xFF, 0x0B, 0xA4, 0x00, 0x00, 0x77, 0x0A, 0xFF, 0xFF, 0x0E, 0xC4, 0xB6, 0x78, 0x88, 0x37, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x22, 0x86, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x86, 0xD0, 0x7B, 0x15, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xAD, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x58, 0x2A, 0x77, 0x20, 0x00, 0x00, 0x00, 0x00, 0x40, 0xBF, 0x87, 0x9B, 0x00, 0x00, 0x00, 0x00, 0x22, 0x62, 0x9C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0xB6, 0x23, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xCE, 0x52, 0xED, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x06, 0x7A, 0x99, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xA3, 0xB4, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x26, 0xD7, 0x6D, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x96, 0x63, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x8C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x41, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0x34, 0x93, 0x67, 0x00, 0x00, 0x00, 0x00, 0x97, 0x74, 0x8E, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xCE, 0x86, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x64, 0x49, 0x8A, 0x77, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x11, 0x9C, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x32, 0xD5, 0xAF, 0x38, 0x00, 0x00, 0x00, 0x00, 0x13, 0xF0, 0xBF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x90, 0x03, 0xD2, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xF1, 0x30, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x4D, 0x5B, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xBE, 0x8B, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xDC, 0xBC, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xA0, 0xEA, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x19, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x4E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xEA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x37, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0xF2, 0x9E, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x89, 0xB5, 0x96, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x70, 0xE7, 0x99, 0x89, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x12, 0xA9, 0x45, 0x00, 0x00, 0x00, 0x00, 0x42, 0xFB, 0xBC, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x29, 0x6B, 0xD1, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1B, 0xE1, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFC, 0x19, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x92, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0xEC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEE, 0x47, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x05, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xDA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x6B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xB6, 0xFF, 0xFF, 0x00, 0x00, 0x99, 0xA0, 0xA4, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x13, 0xA2, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x67, 0xB7, 0xB0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x51, 0x30, 0xC5, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x77, 0xDF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x22, 0xB0, 0xEC, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x44, 0x00, 0x52, 0x08, 0x03, 0x00, 0x00, 0xF4, 0x86, 0x21, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x71, 0x44, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xEE, 0x5D, 0x14, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x27, 0x70, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x76, 0x9F, 0x54, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0xEF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEE, 0x47, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x69, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x2D, 0xFF, 0xFF, 0x00, 0x00, 0x8C, 0xC9, 0xAC, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7C, 0xB5, 0x84, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x71, 0xCA, 0x59, 0x00, 0x00, 0x00, 0x00, 0x45, 0x10, 0xDB, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x55, 0xE3, 0x87, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xC2, 0xE7, 0x46, 0x00, 0x00, 0x04, 0x39, 0x00, 0x00, 0xEA, 0xAF, 0x10, 0x3C, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xC3, 0x27, 0x44, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xE6, 0x44, 0xC7, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xCA, 0x58, 0xCB, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x29, 0x67, 0xBC, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x1D, 0x8F, 0xE4, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1A, 0xA1, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x97, 0xC2, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x6A, 0xEB, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7B, 0xFC, 0x7B, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x9E, 0xFD, 0xE8, 0x00, 0x00, 0xE2, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x98, 0x00, 0x00, 0x0A, 0xD6, 0x00, 0x00, 0xE1, 0x96, 0x00, 0x00, 0x1A, 0xAC, 0x00, 0x00, 0xDE, 0x55, 0x00, 0x00, 0x27, 0x5E, 0x00, 0x00, 0xDB, 0x4F, 0x00, 0x00, 0x34, 0x93, 0x00, 0x00, 0xD7, 0xFC, 0x00, 0x00, 0x41, 0xF5, 0x00, 0x00, 0xD4, 0x9A, 0x00, 0x00, 0x50, 0xD1, 0x00, 0x00, 0xD2, 0xBF, 0x00, 0x00, 0x62, 0x36, 0x00, 0x00, 0xCF, 0x71, 0x00, 0x00, 0x77, 0x8F, 0x00, 0x00, 0xCC, 0x7B, 0x00, 0x00, 0x8F, 0xAF, 0x00, 0x00, 0xC6, 0xAC, 0x00, 0x00, 0xA5, 0xD8, 0x00, 0x00, 0xC0, 0x79, 0x00, 0x00, 0xBD, 0xAE, 0x00, 0x00, 0xB7, 0xF5, 0x00, 0x00, 0xD2, 0xCA, 0x00, 0x00, 0xAC, 0x98, 0x00, 0x00, 0xE2, 0x89, 0x00, 0x00, 0xA0, 0xAF, 0x00, 0x00, 0xF2, 0x8D, 0x00, 0x00, 0x97, 0x77, 0x00, 0x00, 0xFC, 0x7D, 0x00, 0x00, 0x95, 0x6A, 0x00, 0x00, 0xFE, 0x8F, 0x00, 0x00, 0xE5, 0xB1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x7E, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0xE1, 0x03, 0x00, 0x00, 0x12, 0x61, 0x00, 0x00, 0xDE, 0x93, 0x00, 0x00, 0x21, 0xA8, 0x00, 0x00, 0xDC, 0x5D, 0x00, 0x00, 0x2F, 0xBD, 0x00, 0x00, 0xD8, 0xC8, 0x00, 0x00, 0x3E, 0x23, 0x00, 0x00, 0xD5, 0x51, 0x00, 0x00, 0x4E, 0x28, 0x00, 0x00, 0xD2, 0xB0, 0x00, 0x00, 0x5E, 0x1A, 0x00, 0x00, 0xCF, 0xAB, 0x00, 0x00, 0x77, 0x8A, 0x00, 0x00, 0xCC, 0x7D, 0x00, 0x00, 0x92, 0x9E, 0x00, 0x00, 0xC5, 0x45, 0x00, 0x00, 0xAB, 0x1D, 0x00, 0x00, 0xBE, 0x53, 0x00, 0x00, 0xC5, 0x59, 0x00, 0x00, 0xB3, 0xCE, 0x00, 0x00, 0xDC, 0x4E, 0x00, 0x00, 0xA5, 0x3C, 0x00, 0x00, 0xEC, 0xD6, 0x00, 0x00, 0x97, 0xF8, 0x00, 0x00, 0xFC, 0xF7, 0x00, 0x00, 0x8E, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8B, 0xA3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE8, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x52, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0xE1, 0x8F, 0x00, 0x00, 0x1A, 0x12, 0x00, 0x00, 0xDD, 0xBC, 0x00, 0x00, 0x28, 0xDB, 0x00, 0x00, 0xDA, 0xAA, 0x00, 0x00, 0x39, 0x7E, 0x00, 0x00, 0xD7, 0x70, 0x00, 0x00, 0x4A, 0xA8, 0x00, 0x00, 0xD5, 0x39, 0x00, 0x00, 0x5D, 0x52, 0x00, 0x00, 0xD0, 0x34, 0x00, 0x00, 0x78, 0x1C, 0x00, 0x00, 0xC8, 0x36, 0x00, 0x00, 0x92, 0x35, 0x00, 0x00, 0xC0, 0xEF, 0x00, 0x00, 0xAF, 0xC5, 0x00, 0x00, 0xBA, 0xE8, 0x00, 0x00, 0xD0, 0x17, 0x00, 0x00, 0xAB, 0x82, 0x00, 0x00, 0xE4, 0x2F, 0x00, 0x00, 0x9B, 0x3E, 0x00, 0x00, 0xF7, 0x38, 0x00, 0x00, 0x8B, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x81, 0xA5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xEC, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xB2, 0x00, 0x00, 0x0B, 0x74, 0x00, 0x00, 0xE0, 0x37, 0x00, 0x00, 0x20, 0x17, 0x00, 0x00, 0xD8, 0x62, 0x00, 0x00, 0x31, 0x73, 0x00, 0x00, 0xCE, 0x0E, 0x00, 0x00, 0x42, 0x51, 0x00, 0x00, 0xC3, 0x76, 0x00, 0x00, 0x54, 0x2F, 0x00, 0x00, 0xB7, 0xB6, 0x00, 0x00, 0x68, 0x07, 0x00, 0x00, 0xAF, 0xD5, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xAC, 0x2E, 0x00, 0x00, 0xA2, 0x62, 0x00, 0x00, 0xA8, 0xCD, 0x00, 0x00, 0xC6, 0xAF, 0x00, 0x00, 0xA0, 0xC1, 0x00, 0x00, 0xE8, 0x9D, 0x00, 0x00, 0x92, 0x66, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x85, 0x87, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0x4E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xEA, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x6F, 0x00, 0x00, 0x02, 0x90, 0x00, 0x00, 0xD3, 0xA0, 0x00, 0x00, 0x16, 0x4E, 0x00, 0x00, 0xCC, 0xF6, 0x00, 0x00, 0x28, 0x64, 0x00, 0x00, 0xBE, 0x35, 0x00, 0x00, 0x37, 0xCE, 0x00, 0x00, 0xB0, 0x39, 0x00, 0x00, 0x49, 0x7F, 0x00, 0x00, 0xA1, 0xD6, 0x00, 0x00, 0x5B, 0xDB, 0x00, 0x00, 0x98, 0x47, 0x00, 0x00, 0x71, 0x9E, 0x00, 0x00, 0x94, 0x84, 0x00, 0x00, 0x94, 0xA6, 0x00, 0x00, 0x94, 0x88, 0x00, 0x00, 0xBF, 0xCC, 0x00, 0x00, 0x96, 0xEB, 0x00, 0x00, 0xE9, 0xF9, 0x00, 0x00, 0x8C, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0x0B, 0x7F, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xAC, 0x77, 0x41, 0x00, 0x00, 0xFF, 0xFF, 0x16, 0xA3, 0x75, 0x91, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0x1F, 0xE0, 0x69, 0x0C, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xDD, 0xCA, 0x06, 0x65, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xFF, 0x09, 0x96, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xC2, 0x09, 0xA4, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x0A, 0x00, 0x00, 0x05, 0x69, 0x05, 0x63, 0xBB, 0x8D, 0x00, 0x00, 0x18, 0x2B, 0x02, 0x46, 0xAF, 0x32, 0x00, 0x00, 0x2B, 0x14, 0x00, 0x00, 0x9B, 0x52, 0x00, 0x00, 0x3D, 0x61, 0x00, 0x00, 0x88, 0x37, 0x00, 0x00, 0x4D, 0xAE, 0x00, 0x00, 0x81, 0xE6, 0x00, 0x00, 0x68, 0x75, 0x00, 0x00, 0x7E, 0xBC, 0x00, 0x00, 0x91, 0x98, 0x00, 0x00, 0x84, 0x45, 0x00, 0x00, 0xBF, 0xAC, 0x00, 0x00, 0x83, 0x33, 0x00, 0x00, 0xE8, 0x72, 0x0B, 0x26, 0x78, 0x0C, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x46, 0x6D, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x9C, 0x63, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xFB, 0x5F, 0x21, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0xD6, 0xD9, 0x92, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x9E, 0x1F, 0x35, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x34, 0x1C, 0x27, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x41, 0x15, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xDC, 0x12, 0x35, 0x00, 0x00, 0x00, 0x00, 0xA5, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF9, 0x98, 0x02, 0x00, 0x00, 0x16, 0xD4, 0x00, 0x00, 0x7F, 0x2B, 0x00, 0x00, 0x2B, 0xFB, 0x00, 0x00, 0x73, 0x23, 0x00, 0x00, 0x43, 0xCC, 0x05, 0x5C, 0x6E, 0x0B, 0x00, 0x00, 0x61, 0xC2, 0x07, 0xD5, 0x6C, 0x2C, 0x00, 0x00, 0x90, 0x04, 0x06, 0xB7, 0x6A, 0xFF, 0x00, 0x00, 0xBD, 0xBF, 0x05, 0x51, 0x67, 0x24, 0x00, 0x00, 0xE7, 0xF0, 0x16, 0x4A, 0x5B, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xB1, 0x42, 0xFA, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0xD6, 0x43, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0x43, 0x69, 0x3F, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x40, 0xD2, 0xA4, 0x2D, 0xF1, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x15, 0x30, 0x11, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x9D, 0x2A, 0xF6, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x8D, 0x26, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x55, 0x1D, 0x69, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x17, 0x17, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x74, 0x8D, 0x0D, 0x16, 0x00, 0x00, 0x02, 0x37, 0x5C, 0x59, 0x00, 0x00, 0x0E, 0x77, 0x18, 0x0B, 0x50, 0xD8, 0x00, 0x00, 0x2F, 0x62, 0x1E, 0x8E, 0x4A, 0x34, 0x00, 0x00, 0x57, 0x4D, 0x21, 0xF9, 0x44, 0xDB, 0x00, 0x00, 0x87, 0xE3, 0x23, 0x2A, 0x42, 0x3F, 0x00, 0x00, 0xB5, 0xC8, 0x20, 0xD8, 0x3E, 0x41, 0x00, 0x00, 0xE2, 0x9B, 0x25, 0x91, 0x20, 0x52, 0x00, 0x00, 0xFF, 0xFF, 0x47, 0xF1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0x79, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x4F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5C, 0x26, 0xC8, 0x98, 0x3F, 0x53, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x24, 0x40, 0x57, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xB9, 0x3A, 0xEF, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x99, 0x31, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x88, 0xA4, 0x2F, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x6E, 0x2C, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x59, 0xBA, 0x2E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0x28, 0xB8, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xD8, 0x00, 0x00, 0x07, 0xE5, 0x3A, 0x5B, 0x40, 0xC7, 0x00, 0x00, 0x11, 0xF1, 0x76, 0x4B, 0x3B, 0x2D, 0x00, 0x00, 0x13, 0xFC, 0xAB, 0x6D, 0x36, 0x06, 0x00, 0x00, 0x17, 0xAC, 0xD9, 0x4A, 0x33, 0x6C, 0x00, 0x00, 0x23, 0x1E, 0xFF, 0xFF, 0x36, 0x31, 0x02, 0xFD, 0x28, 0x2E, 0xFF, 0xFF, 0x41, 0xFB, 0x00, 0x00, 0x21, 0x4F, 0xFF, 0xFF, 0x48, 0x78, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x48, 0x87, 0xBF, 0xFF, 0x4E, 0x82, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x4D, 0x52, 0x49, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x23, 0x49, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xE0, 0x42, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x70, 0xC4, 0x3C, 0x77, 0x00, 0x00, 0x00, 0x00, 0x57, 0x5A, 0x39, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x45, 0xB8, 0x38, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x36, 0x61, 0x40, 0x46, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x39, 0x39, 0x04, 0x9D, 0x2C, 0x15, 0x00, 0x00, 0x44, 0xCF, 0x45, 0x75, 0x1F, 0x94, 0x00, 0x00, 0x45, 0x04, 0x79, 0x65, 0x18, 0x20, 0x00, 0x00, 0x47, 0x8F, 0xAE, 0x2D, 0x15, 0x87, 0x00, 0x00, 0x48, 0x72, 0xDC, 0xDC, 0x16, 0x6C, 0x00, 0x00, 0x47, 0xAE, 0xFF, 0xFF, 0x1A, 0xD8, 0x00, 0x00, 0x43, 0x8C, 0xFF, 0xFF, 0x27, 0x83, 0x00, 0x00, 0x3E, 0x59, 0xFF, 0xFF, 0x32, 0xD5, 0x00, 0x00, 0x3D, 0x55, 0xFF, 0xFF, 0x32, 0x15, 0xBA, 0xC6, 0x5F, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x4E, 0x62, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x97, 0xC4, 0x57, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x95, 0x4E, 0x52, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xE5, 0x47, 0x79, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x5B, 0x42, 0x11, 0x00, 0x00, 0x00, 0x00, 0x38, 0xBC, 0x49, 0x60, 0x00, 0x00, 0x00, 0x00, 0x23, 0x84, 0x5A, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x2D, 0x0D, 0xD4, 0x0C, 0x6D, 0x00, 0x00, 0x6B, 0xDC, 0x3E, 0xAF, 0x00, 0xC5, 0x00, 0x00, 0x68, 0x2D, 0x70, 0x54, 0x00, 0x00, 0x00, 0x00, 0x69, 0xB1, 0xA7, 0x75, 0x00, 0x00, 0x00, 0x00, 0x68, 0x03, 0xD5, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x11, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xB4, 0xFF, 0xFF, 0x05, 0x9B, 0x00, 0x00, 0x51, 0x02, 0xFF, 0xFF, 0x15, 0xF6, 0x00, 0x00, 0x51, 0x1B, 0xFF, 0xFF, 0x17, 0x0B, 0xB3, 0xC0, 0x6D, 0xD5, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xEE, 0x6E, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x26, 0x62, 0x19, 0x00, 0x00, 0x00, 0x00, 0x6D, 0xD3, 0x59, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x55, 0x57, 0x53, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x42, 0x6E, 0x55, 0x27, 0x00, 0x00, 0x00, 0x71, 0x2A, 0xE8, 0x64, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF9, 0x00, 0x00, 0x06, 0x45, 0x00, 0x00, 0x7A, 0x2A, 0x1A, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x85, 0xD5, 0x44, 0x45, 0x00, 0x00, 0x00, 0x00, 0x83, 0x51, 0x71, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x84, 0x30, 0xA3, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x62, 0xC7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x1A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x74, 0x5D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x69, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0x10, 0x7A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x16, 0x79, 0x56, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x40, 0x6C, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x62, 0x69, 0x67, 0x52, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x6A, 0x6A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x34, 0xD9, 0x78, 0x52, 0x00, 0x00, 0x00, 0x00, 0x16, 0xA9, 0x89, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x15, 0x0E, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x98, 0xAF, 0x29, 0x97, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x84, 0x49, 0x80, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xEA, 0x6A, 0x74, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xCE, 0xA9, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x57, 0xC1, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xE2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xF9, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x60, 0x86, 0x75, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x52, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0xE8, 0x7A, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x59, 0x2C, 0x7B, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x41, 0x7C, 0x8C, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1D, 0xA0, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0xD9, 0x00, 0x00, 0x08, 0x84, 0x00, 0x00, 0xB5, 0x5A, 0x15, 0x6B, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x6A, 0x34, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x3B, 0x5C, 0x5C, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x11, 0x85, 0x4B, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x4A, 0xB1, 0x44, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xAB, 0xC6, 0xDD, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x81, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x4D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x98, 0x0A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x99, 0x45, 0xFF, 0xFF, 0x00, 0x00, 0x9B, 0x8F, 0x92, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x84, 0x8A, 0x56, 0x00, 0x00, 0x00, 0x00, 0x66, 0x8A, 0x8D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x45, 0x9F, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x36, 0xB1, 0xB0, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x47, 0xC3, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x78, 0x03, 0x97, 0x02, 0x37, 0x00, 0x00, 0xDF, 0x4A, 0x27, 0x4A, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x8E, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x40, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x98, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAD, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xE9, 0xD7, 0x8E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x45, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xCD, 0xFF, 0xFF, 0x00, 0x00, 0x8E, 0xFE, 0x9B, 0x47, 0x00, 0x00, 0x00, 0x00, 0x73, 0x87, 0x9A, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xF5, 0xA9, 0x34, 0x00, 0x00, 0x00, 0x00, 0x46, 0x9B, 0xBC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x30, 0x48, 0xD4, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x45, 0xDB, 0xFD, 0x00, 0x00, 0x06, 0x6D, 0x00, 0x00, 0xDD, 0x17, 0x11, 0xC5, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xB2, 0x2E, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xEA, 0xD2, 0x4B, 0x1D, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x3D, 0x5E, 0xF1, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xC0, 0x87, 0x76, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x4D, 0xA0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xE2, 0xBF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x68, 0xF1, 0x30, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x45, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x94, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x39, 0xFF, 0xFF, 0x00, 0x00, 0x81, 0x81, 0xA4, 0x14, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x83, 0xB0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x54, 0x87, 0xC3, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xA8, 0xD2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x94, 0xD6, 0xC8, 0x00, 0x00, 0x04, 0x9A, 0x00, 0x00, 0xD8, 0x7B, 0x05, 0xBD, 0x07, 0x8E, 0x00, 0x00, 0xDC, 0x32, 0x1C, 0x35, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xA7, 0x34, 0x02, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x37, 0x49, 0xF7, 0x00, 0x00, 0x00, 0x00, 0xEE, 0x45, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0x91, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x09, 0x93, 0x09, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x80, 0xA1, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xC1, 0xC2, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x06, 0xEE, 0xB2, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xDD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0xD1, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x0D, 0x00, 0x00, 0x05, 0xAE, 0x00, 0x00, 0xCB, 0xF0, 0x00, 0x00, 0x13, 0x96, 0x00, 0x00, 0xC9, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xC5, 0x4A, 0x00, 0x00, 0x2B, 0x2B, 0x00, 0x00, 0xBF, 0x72, 0x00, 0x00, 0x36, 0x96, 0x00, 0x00, 0xBA, 0xA4, 0x00, 0x00, 0x42, 0xCF, 0x00, 0x00, 0xB8, 0x08, 0x00, 0x00, 0x51, 0xB1, 0x00, 0x00, 0xB5, 0x54, 0x00, 0x00, 0x63, 0xE7, 0x00, 0x00, 0xB2, 0xF9, 0x00, 0x00, 0x7A, 0x22, 0x00, 0x00, 0xB1, 0x2B, 0x00, 0x00, 0x94, 0x62, 0x00, 0x00, 0xAF, 0x6A, 0x00, 0x00, 0xAF, 0x11, 0x00, 0x00, 0xA8, 0xE3, 0x00, 0x00, 0xC4, 0x78, 0x00, 0x00, 0x9F, 0x1F, 0x00, 0x00, 0xD8, 0x0C, 0x00, 0x00, 0x95, 0x4E, 0x00, 0x00, 0xE7, 0x9E, 0x00, 0x00, 0x8A, 0x69, 0x00, 0x00, 0xF5, 0x68, 0x00, 0x00, 0x87, 0xDC, 0x00, 0x00, 0xF7, 0xF0, 0x00, 0x00, 0xD3, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xB4, 0x00, 0x00, 0x0B, 0x6A, 0x00, 0x00, 0xCB, 0x42, 0x00, 0x00, 0x1B, 0x4A, 0x00, 0x00, 0xC7, 0x3D, 0x00, 0x00, 0x27, 0x2C, 0x00, 0x00, 0xC0, 0xD8, 0x00, 0x00, 0x32, 0xF3, 0x00, 0x00, 0xBA, 0x6A, 0x00, 0x00, 0x3F, 0xBA, 0x00, 0x00, 0xB7, 0xCC, 0x00, 0x00, 0x4F, 0xB2, 0x00, 0x00, 0xB4, 0xD8, 0x00, 0x00, 0x63, 0x43, 0x00, 0x00, 0xB2, 0x72, 0x00, 0x00, 0x7B, 0xDB, 0x00, 0x00, 0xB0, 0xD2, 0x00, 0x00, 0x9A, 0x2C, 0x00, 0x00, 0xAD, 0xB3, 0x00, 0x00, 0xB6, 0x4F, 0x00, 0x00, 0xA5, 0x3F, 0x00, 0x00, 0xCE, 0x77, 0x00, 0x00, 0x99, 0x14, 0x00, 0x00, 0xE1, 0x7E, 0x00, 0x00, 0x8D, 0x85, 0x00, 0x00, 0xF1, 0x3B, 0x00, 0x00, 0x81, 0x43, 0x00, 0x00, 0xFF, 0x6A, 0x00, 0x00, 0x7D, 0xE5, 0x00, 0x00, 0xFF, 0xFB, 0x00, 0x00, 0xD6, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x87, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0xCB, 0xA3, 0x00, 0x00, 0x11, 0xCE, 0x00, 0x00, 0xC9, 0xD3, 0x00, 0x00, 0x20, 0xB8, 0x00, 0x00, 0xC3, 0x64, 0x00, 0x00, 0x2E, 0x57, 0x00, 0x00, 0xBB, 0x91, 0x00, 0x00, 0x3D, 0x42, 0x00, 0x00, 0xB9, 0x77, 0x00, 0x00, 0x4E, 0x54, 0x00, 0x00, 0xB7, 0x40, 0x00, 0x00, 0x64, 0xFE, 0x00, 0x00, 0xB0, 0xDE, 0x00, 0x00, 0x7E, 0x47, 0x00, 0x00, 0xAE, 0x9C, 0x00, 0x00, 0x9F, 0xE9, 0x00, 0x00, 0xAA, 0x39, 0x00, 0x00, 0xBF, 0xED, 0x00, 0x00, 0x9D, 0x97, 0x00, 0x00, 0xDB, 0x86, 0x00, 0x00, 0x8F, 0xEB, 0x00, 0x00, 0xEC, 0xB8, 0x00, 0x00, 0x82, 0xD7, 0x00, 0x00, 0xFC, 0x84, 0x00, 0x00, 0x75, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x77, 0xD6, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xE4, 0x00, 0x00, 0x03, 0x3F, 0x00, 0x00, 0xCD, 0x4D, 0x00, 0x00, 0x17, 0x90, 0x00, 0x00, 0xC2, 0xBA, 0x00, 0x00, 0x27, 0x57, 0x00, 0x00, 0xB4, 0xA2, 0x00, 0x00, 0x36, 0x79, 0x00, 0x00, 0xAA, 0x15, 0x00, 0x00, 0x45, 0xC1, 0x00, 0x00, 0x9E, 0x82, 0x00, 0x00, 0x58, 0x21, 0x00, 0x00, 0x97, 0x90, 0x00, 0x00, 0x6D, 0x82, 0x00, 0x00, 0x97, 0x08, 0x00, 0x00, 0x8E, 0x44, 0x00, 0x00, 0x95, 0xBD, 0x00, 0x00, 0xB5, 0xD7, 0x00, 0x00, 0x92, 0x52, 0x00, 0x00, 0xDD, 0x11, 0x00, 0x00, 0x85, 0x5B, 0x00, 0x00, 0xF5, 0x51, 0x00, 0x00, 0x74, 0xD9, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0x4A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xDB, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x99, 0x00, 0x00, 0x0B, 0x6F, 0x00, 0x00, 0xB5, 0x0A, 0x00, 0x00, 0x1D, 0x43, 0x00, 0x00, 0xA6, 0x0E, 0x00, 0x00, 0x2B, 0xFA, 0x00, 0x00, 0x95, 0x50, 0x00, 0x00, 0x3B, 0x9F, 0x00, 0x00, 0x84, 0x14, 0x00, 0x00, 0x49, 0x37, 0x00, 0x00, 0x7D, 0xF1, 0x00, 0x00, 0x5D, 0x43, 0x00, 0x00, 0x7D, 0xF8, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x80, 0xD8, 0x00, 0x00, 0xAE, 0xAB, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0xDB, 0x2E, 0x00, 0x00, 0x7E, 0xF4, 0x00, 0x00, 0xF7, 0x88, 0x00, 0x00, 0x75, 0x93, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x62, 0x6C, 0xEB, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0xF4, 0x6A, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0x4A, 0xD7, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 0xD6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xD7, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0xA5, 0x59, 0x00, 0x00, 0x0E, 0x8B, 0x00, 0x00, 0x94, 0x66, 0x00, 0x00, 0x1F, 0xD1, 0x00, 0x00, 0x7D, 0x90, 0x00, 0x00, 0x2F, 0xA0, 0x00, 0x00, 0x70, 0x14, 0x00, 0x00, 0x3F, 0x0B, 0x00, 0x00, 0x6B, 0x51, 0x00, 0x00, 0x54, 0xF9, 0x00, 0x00, 0x68, 0x78, 0x00, 0x00, 0x77, 0x35, 0x00, 0x00, 0x69, 0x70, 0x00, 0x00, 0xA7, 0x43, 0x00, 0x00, 0x70, 0x3A, 0x00, 0x00, 0xD4, 0xB7, 0x04, 0x01, 0x6B, 0xE4, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0x63, 0x62, 0x5F, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0x62, 0x59, 0xA3, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0x82, 0x57, 0x9F, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0x38, 0xD0, 0xA7, 0x14, 0x4F, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xC6, 0x11, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xBE, 0xD7, 0x0E, 0x27, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x1B, 0x0D, 0xB6, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x0C, 0x07, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x8D, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x05, 0xAC, 0x7C, 0xC8, 0x00, 0x00, 0x0E, 0xF2, 0x00, 0x27, 0x69, 0x05, 0x00, 0x00, 0x21, 0x87, 0x00, 0x00, 0x5D, 0x54, 0x00, 0x00, 0x36, 0x9A, 0x02, 0x6D, 0x5A, 0x81, 0x00, 0x00, 0x50, 0xF9, 0x00, 0xD7, 0x59, 0x49, 0x00, 0x00, 0x76, 0x20, 0x00, 0x00, 0x58, 0xF6, 0x00, 0x00, 0xA6, 0x28, 0x00, 0x00, 0x57, 0x07, 0x00, 0x00, 0xD0, 0xFC, 0x04, 0xD3, 0x50, 0x69, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0x57, 0x40, 0x93, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xB3, 0x44, 0x5A, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0xAA, 0x40, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x3F, 0xCA, 0x5E, 0x22, 0x62, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x69, 0x20, 0x65, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xF0, 0x21, 0x26, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xE9, 0x1A, 0x83, 0x00, 0x00, 0x00, 0x00, 0x8D, 0xC8, 0x19, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xD9, 0x12, 0x69, 0x00, 0x00, 0x00, 0x00, 0x63, 0x72, 0x08, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xF6, 0x00, 0x00, 0x0B, 0x55, 0x0B, 0x5D, 0x45, 0xC6, 0x00, 0x00, 0x28, 0x3E, 0x0E, 0x14, 0x3F, 0x23, 0x00, 0x00, 0x47, 0x6C, 0x12, 0x00, 0x3B, 0x86, 0x00, 0x00, 0x71, 0x29, 0x16, 0x49, 0x3A, 0x78, 0x00, 0x00, 0x9E, 0x93, 0x12, 0x68, 0x36, 0x1D, 0x00, 0x00, 0xC9, 0x96, 0x13, 0x2F, 0x20, 0x8F, 0x00, 0x00, 0xFE, 0x0B, 0x2A, 0xB8, 0x06, 0x51, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0x46, 0x0C, 0x11, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0xAA, 0x0C, 0x7A, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x61, 0xBF, 0xFF, 0x33, 0x72, 0x00, 0x00, 0x00, 0x00, 0xBE, 0xDE, 0x35, 0x7D, 0x00, 0x00, 0x00, 0x00, 0xAB, 0xD8, 0x30, 0x28, 0x00, 0x00, 0x00, 0x00, 0x91, 0xC3, 0x2B, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x26, 0x97, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x21, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xC0, 0x21, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x4A, 0x1F, 0x83, 0x00, 0x00, 0x02, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xCA, 0x00, 0x00, 0x0A, 0x65, 0x2F, 0xCA, 0x2F, 0xFE, 0x00, 0x00, 0x0F, 0x6E, 0x61, 0x5F, 0x29, 0xF8, 0x00, 0x00, 0x14, 0x3F, 0x9B, 0x07, 0x26, 0xB0, 0x00, 0x00, 0x15, 0x44, 0xC6, 0x24, 0x22, 0x9D, 0x00, 0x00, 0x1B, 0x45, 0xF8, 0x1F, 0x1F, 0x94, 0x00, 0x00, 0x20, 0x0F, 0xFF, 0xFF, 0x25, 0xF2, 0x00, 0x00, 0x1C, 0x6C, 0xFF, 0xFF, 0x2D, 0xF3, 0x00, 0x00, 0x19, 0xDE, 0xFF, 0xFF, 0x2F, 0x94, 0xBA, 0xC5, 0x42, 0x12, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x8E, 0x45, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x28, 0x3B, 0x25, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1A, 0x38, 0x19, 0x00, 0x00, 0x00, 0x00, 0x65, 0xB4, 0x31, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x8B, 0x2E, 0x25, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x2B, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xDB, 0x34, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xD8, 0x04, 0xFD, 0x19, 0xD4, 0x00, 0x00, 0x3C, 0x79, 0x39, 0xD6, 0x0C, 0x13, 0x00, 0x00, 0x3E, 0xB7, 0x6B, 0x40, 0x06, 0xA3, 0x00, 0x00, 0x40, 0x02, 0x9B, 0xAC, 0x01, 0x12, 0x00, 0x00, 0x42, 0x15, 0xC9, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x40, 0x24, 0xF7, 0x89, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x7E, 0xFF, 0xFF, 0x08, 0x2F, 0x00, 0x00, 0x31, 0x24, 0xFF, 0xFF, 0x1A, 0x6D, 0x00, 0x00, 0x2E, 0xF7, 0xFF, 0xFF, 0x1B, 0x92, 0xB3, 0x8F, 0x50, 0xD1, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x02, 0x56, 0x76, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xE4, 0x4D, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x71, 0x43, 0x43, 0x44, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF5, 0x3C, 0x72, 0x00, 0x00, 0x00, 0x00, 0x41, 0xA7, 0x36, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xAE, 0x3A, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x11, 0xB8, 0x4A, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xCF, 0x12, 0x39, 0x00, 0x00, 0x00, 0x00, 0x57, 0x1C, 0x39, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x52, 0x68, 0x68, 0x53, 0x00, 0x00, 0x00, 0x00, 0x51, 0x2E, 0x97, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xD8, 0xC1, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x53, 0x91, 0xF5, 0x35, 0x00, 0x00, 0x00, 0x00, 0x49, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x44, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x42, 0xC9, 0xFF, 0xFF, 0x00, 0x00, 0xAA, 0x74, 0x5F, 0x83, 0x00, 0x00, 0x00, 0x00, 0x9E, 0xB4, 0x61, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xAE, 0x56, 0x70, 0x00, 0x00, 0x00, 0x00, 0x63, 0x19, 0x4E, 0x67, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x2C, 0x48, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x38, 0x88, 0x4B, 0x78, 0x00, 0x00, 0x00, 0x00, 0x20, 0xA3, 0x56, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xC1, 0x07, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x62, 0x78, 0x18, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x68, 0xB9, 0x38, 0x99, 0x00, 0x00, 0x00, 0x00, 0x68, 0x27, 0x6A, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x94, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF0, 0xB7, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x9A, 0xFA, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x64, 0x48, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x50, 0x57, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB4, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0x4B, 0x6C, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x90, 0xA9, 0x6D, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x73, 0x6A, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00, 0x59, 0x5C, 0x5B, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x44, 0x33, 0x5D, 0x89, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x96, 0x6A, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x01, 0x25, 0x75, 0x68, 0x00, 0x00, 0x0A, 0x2F, 0x00, 0x00, 0x7D, 0x9C, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x86, 0xD0, 0x24, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x2E, 0x48, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x91, 0xAE, 0x5D, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x95, 0xA4, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xD4, 0xAE, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xF9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x85, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x68, 0xDA, 0xFF, 0xFF, 0x00, 0x00, 0x9A, 0x24, 0x7A, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x75, 0x53, 0x00, 0x00, 0x00, 0x00, 0x67, 0x41, 0x6F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x50, 0xAD, 0x71, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x35, 0x5F, 0x7E, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x90, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x25, 0x0C, 0x9E, 0x00, 0x00, 0x00, 0x00, 0xA5, 0x11, 0x25, 0xAB, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x8B, 0x39, 0x95, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xDA, 0x52, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xA0, 0x70, 0x92, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xBB, 0xAA, 0x79, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x4C, 0xB7, 0xF1, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xEF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x97, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xBE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x89, 0x08, 0xFF, 0xFF, 0x00, 0x00, 0x91, 0x84, 0x87, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x75, 0xE2, 0x80, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xAC, 0x82, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x45, 0x1C, 0x92, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x65, 0xA5, 0x63, 0x00, 0x00, 0x00, 0x00, 0x07, 0xAB, 0xB2, 0x20, 0x00, 0x00, 0x09, 0xDD, 0x00, 0x00, 0xC1, 0x87, 0x13, 0xC9, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x4D, 0x30, 0x99, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x5C, 0x51, 0x2A, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x70, 0x6D, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x70, 0x97, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xD4, 0xBC, 0x23, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x63, 0xCB, 0x96, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x34, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xED, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB2, 0xD2, 0xFF, 0xFF, 0x00, 0x00, 0x85, 0x07, 0x91, 0x87, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x70, 0x91, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x52, 0xE0, 0xA1, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x09, 0xB3, 0x16, 0x00, 0x00, 0x00, 0x00, 0x22, 0xE8, 0xC9, 0x59, 0x00, 0x00, 0x05, 0x9B, 0x00, 0x00, 0xCF, 0x33, 0x06, 0xE1, 0x0D, 0xA6, 0x00, 0x00, 0xD2, 0x70, 0x25, 0x19, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x26, 0x37, 0x63, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x51, 0x52, 0x47, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xF0, 0x68, 0x49, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xB4, 0x89, 0x77, 0x00, 0x00, 0x00, 0x00, 0xED, 0xA1, 0x9E, 0xF4, 0x00, 0x00, 0x00, 0x00, 0xED, 0xB0, 0xC0, 0x83, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xE1, 0xF5, 0x58, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0x77, 0xED, 0x9E, 0x26, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5C, 0xAA, 0x26, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xF6, 0xBC, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x7D, 0xC7, 0xF3, 0x00, 0x00, 0x04, 0x53, 0x09, 0x6D, 0xC8, 0xC6, 0x00, 0x00, 0x0D, 0x5C, 0x00, 0x00, 0xCC, 0xDB, 0x16, 0xAB, 0x01, 0x74, 0x00, 0x00, 0xD0, 0xB7, 0x2D, 0xA4, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xCF, 0x3C, 0x55, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x24, 0x53, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x69, 0x64, 0x55, 0x00, 0x00, 0x00, 0x00, 0xE3, 0x88, 0x79, 0xA9, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xA8, 0x94, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xED, 0x17, 0xA2, 0x30, 0x00, 0x00, 0x00, 0x00, 0xED, 0x5D, 0xC2, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x43, 0xF1, 0x41, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xAC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x3E, 0xFF, 0xFF, 0x00, 0x00, 0xBD, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x2F, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0xB6, 0x8E, 0x00, 0x00, 0x0B, 0xAE, 0x00, 0x00, 0xB4, 0x58, 0x00, 0x00, 0x16, 0x84, 0x00, 0x00, 0xAF, 0x01, 0x00, 0x00, 0x20, 0xF2, 0x00, 0x00, 0xA8, 0x67, 0x00, 0x00, 0x2B, 0x69, 0x00, 0x00, 0xA3, 0x7E, 0x00, 0x00, 0x36, 0x4C, 0x00, 0x00, 0x9F, 0x06, 0x00, 0x00, 0x42, 0xF5, 0x00, 0x00, 0x9C, 0x2E, 0x00, 0x00, 0x54, 0x05, 0x00, 0x00, 0x99, 0xF9, 0x00, 0x00, 0x67, 0xCC, 0x00, 0x00, 0x9A, 0x59, 0x00, 0x00, 0x81, 0x13, 0x00, 0x00, 0x9B, 0xCD, 0x00, 0x00, 0x9E, 0x06, 0x00, 0x00, 0x97, 0xC6, 0x00, 0x00, 0xB5, 0xBE, 0x00, 0x00, 0x92, 0x44, 0x00, 0x00, 0xCC, 0x16, 0x00, 0x00, 0x89, 0xB3, 0x00, 0x00, 0xDC, 0xAC, 0x00, 0x00, 0x80, 0x9E, 0x00, 0x00, 0xEA, 0xBD, 0x00, 0x00, 0x7A, 0xD9, 0x00, 0x00, 0xF1, 0xD2, 0x00, 0x00, 0xC3, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xFF, 0x00, 0x00, 0x03, 0xF7, 0x00, 0x00, 0xB4, 0xC8, 0x00, 0x00, 0x12, 0x02, 0x00, 0x00, 0xB1, 0x31, 0x00, 0x00, 0x1D, 0x15, 0x00, 0x00, 0xA9, 0xB3, 0x00, 0x00, 0x27, 0xB4, 0x00, 0x00, 0xA4, 0x18, 0x00, 0x00, 0x33, 0xA1, 0x00, 0x00, 0x9E, 0xCC, 0x00, 0x00, 0x40, 0xD6, 0x00, 0x00, 0x9B, 0xA1, 0x00, 0x00, 0x53, 0xC2, 0x00, 0x00, 0x99, 0x19, 0x00, 0x00, 0x69, 0x69, 0x00, 0x00, 0x9A, 0x77, 0x00, 0x00, 0x86, 0xE0, 0x00, 0x00, 0x9B, 0x1C, 0x00, 0x00, 0xA6, 0xD9, 0x00, 0x00, 0x95, 0x4D, 0x00, 0x00, 0xBF, 0xB1, 0x00, 0x00, 0x8C, 0xB6, 0x00, 0x00, 0xD6, 0x9D, 0x00, 0x00, 0x82, 0x5A, 0x00, 0x00, 0xE6, 0xB4, 0x00, 0x00, 0x78, 0x7A, 0x00, 0x00, 0xF3, 0x87, 0x00, 0x00, 0x72, 0x87, 0x00, 0x00, 0xFB, 0x3D, 0x00, 0x00, 0xC7, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xB3, 0x00, 0x00, 0x08, 0xC4, 0x00, 0x00, 0xB3, 0x68, 0x00, 0x00, 0x16, 0x27, 0x00, 0x00, 0xAC, 0x54, 0x00, 0x00, 0x23, 0x40, 0x00, 0x00, 0xA5, 0x22, 0x00, 0x00, 0x30, 0x71, 0x00, 0x00, 0x9F, 0xCE, 0x00, 0x00, 0x3F, 0x60, 0x00, 0x00, 0x9C, 0xE2, 0x00, 0x00, 0x54, 0xA3, 0x00, 0x00, 0x98, 0x0C, 0x00, 0x00, 0x6C, 0x4D, 0x00, 0x00, 0x98, 0x5E, 0x00, 0x00, 0x8D, 0x9E, 0x00, 0x00, 0x98, 0x0D, 0x00, 0x00, 0xB1, 0xF1, 0x00, 0x00, 0x91, 0x2B, 0x00, 0x00, 0xD0, 0x54, 0x00, 0x00, 0x83, 0xF8, 0x00, 0x00, 0xE2, 0xB9, 0x00, 0x00, 0x78, 0x9B, 0x00, 0x00, 0xF1, 0xFA, 0x00, 0x00, 0x6F, 0x5E, 0x00, 0x00, 0xFE, 0xF3, 0x00, 0x00, 0x6E, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCD, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x16, 0x00, 0x00, 0x0D, 0x6B, 0x00, 0x00, 0xAC, 0xEB, 0x00, 0x00, 0x1C, 0xD2, 0x00, 0x00, 0x9E, 0x1E, 0x00, 0x00, 0x29, 0xE3, 0x00, 0x00, 0x8F, 0x26, 0x00, 0x00, 0x37, 0x2D, 0x00, 0x00, 0x82, 0xEE, 0x00, 0x00, 0x45, 0xBE, 0x00, 0x00, 0x7D, 0x8F, 0x00, 0x00, 0x5A, 0x99, 0x00, 0x00, 0x7E, 0x1F, 0x00, 0x00, 0x7B, 0x79, 0x00, 0x00, 0x82, 0x52, 0x00, 0x00, 0xA8, 0xC4, 0x00, 0x00, 0x80, 0xD9, 0x00, 0x00, 0xD0, 0xF8, 0x00, 0x00, 0x77, 0xBD, 0x00, 0x00, 0xE9, 0x88, 0x00, 0x00, 0x6D, 0xCB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x6C, 0x6D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x6B, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD1, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x84, 0x00, 0x00, 0x03, 0x88, 0x00, 0x00, 0x9B, 0x41, 0x00, 0x00, 0x11, 0x8F, 0x00, 0x00, 0x89, 0x6E, 0x00, 0x00, 0x1F, 0x19, 0x00, 0x00, 0x79, 0x6F, 0x00, 0x00, 0x2D, 0xA6, 0x00, 0x00, 0x6D, 0xCD, 0x00, 0x00, 0x3B, 0xB2, 0x00, 0x00, 0x68, 0xB6, 0x00, 0x00, 0x4D, 0x83, 0x00, 0x51, 0x69, 0x5D, 0x00, 0x00, 0x6B, 0x33, 0x00, 0x00, 0x69, 0xCF, 0x00, 0x00, 0x9B, 0x22, 0x00, 0x00, 0x6F, 0x2E, 0x00, 0x00, 0xCB, 0x4F, 0x00, 0x00, 0x6D, 0x6F, 0x00, 0x00, 0xEC, 0x23, 0x00, 0x00, 0x69, 0x52, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x64, 0xE9, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x38, 0x60, 0x91, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0xFB, 0xCD, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xB1, 0x00, 0x00, 0x09, 0xBF, 0x00, 0x00, 0x77, 0x75, 0x00, 0x00, 0x13, 0x82, 0x00, 0x00, 0x66, 0x2E, 0x00, 0x00, 0x24, 0x6A, 0x00, 0x98, 0x5A, 0x52, 0x00, 0x00, 0x32, 0xA9, 0x00, 0x96, 0x56, 0x29, 0x00, 0x00, 0x43, 0x27, 0x00, 0x00, 0x55, 0x2B, 0x00, 0x00, 0x60, 0x52, 0x00, 0x00, 0x54, 0x05, 0x00, 0x00, 0x8E, 0xD0, 0x00, 0x00, 0x5A, 0x12, 0x00, 0x00, 0xBE, 0x8C, 0x00, 0x00, 0x5D, 0xE2, 0x00, 0x00, 0xF1, 0x36, 0x05, 0x47, 0x5B, 0x59, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0x54, 0x55, 0xD2, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x1A, 0x4F, 0x6A, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0xE1, 0xC7, 0x6D, 0x08, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xA5, 0x04, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x6E, 0x06, 0x52, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x80, 0x04, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xCA, 0x04, 0x13, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFC, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x64, 0xB6, 0x00, 0x00, 0x05, 0x24, 0x00, 0x00, 0x54, 0x3B, 0x00, 0x00, 0x17, 0x60, 0x00, 0x6E, 0x49, 0x69, 0x00, 0x00, 0x28, 0x29, 0x00, 0x00, 0x45, 0x68, 0x00, 0x00, 0x3D, 0x05, 0x00, 0x00, 0x42, 0x73, 0x00, 0x00, 0x5A, 0x58, 0x00, 0x00, 0x44, 0xB0, 0x00, 0x00, 0x8C, 0x3D, 0x00, 0x00, 0x43, 0x9D, 0x00, 0x00, 0xB8, 0xAC, 0x00, 0x00, 0x44, 0xA7, 0x00, 0x00, 0xEF, 0xF2, 0x09, 0x05, 0x42, 0x46, 0x00, 0x00, 0xFF, 0xFF, 0x12, 0x5C, 0x40, 0xAF, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0xFD, 0x3B, 0x73, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x2B, 0xC1, 0x7C, 0x19, 0x47, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x50, 0x19, 0x61, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xDD, 0x16, 0x89, 0x00, 0x00, 0x00, 0x00, 0x92, 0x85, 0x17, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x80, 0x6C, 0x12, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x68, 0x41, 0x0B, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x52, 0xB6, 0x08, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0x00, 0x00, 0x03, 0x95, 0x04, 0x1A, 0x38, 0x76, 0x00, 0x00, 0x1E, 0x85, 0x02, 0x9F, 0x34, 0xCE, 0x00, 0x00, 0x3A, 0x72, 0x03, 0xD2, 0x31, 0x72, 0x00, 0x00, 0x5C, 0xAE, 0x07, 0x1A, 0x2F, 0x9B, 0x00, 0x00, 0x8B, 0x14, 0x06, 0x8B, 0x2A, 0x02, 0x00, 0x00, 0xB6, 0x14, 0x07, 0xA8, 0x1D, 0xBE, 0x00, 0x00, 0xE6, 0x72, 0x11, 0x97, 0x0E, 0x91, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0xA5, 0x11, 0x95, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0xCC, 0x13, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0x9D, 0xBA, 0xFE, 0x29, 0x7B, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xE8, 0x2C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x92, 0x26, 0x99, 0x00, 0x00, 0x00, 0x00, 0x84, 0xEC, 0x26, 0x15, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x2E, 0x20, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x56, 0x83, 0x19, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x41, 0x96, 0x14, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x90, 0x16, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x92, 0x00, 0x00, 0x09, 0x0A, 0x29, 0x4E, 0x1F, 0x3C, 0x00, 0x00, 0x11, 0x2E, 0x57, 0x77, 0x17, 0x47, 0x00, 0x00, 0x18, 0x3A, 0x8F, 0x5E, 0x14, 0xBA, 0x00, 0x00, 0x18, 0xBA, 0xBD, 0x05, 0x11, 0x25, 0x00, 0x00, 0x1A, 0x0F, 0xE9, 0x83, 0x0A, 0x35, 0x00, 0x00, 0x18, 0x4C, 0xFF, 0xFF, 0x0D, 0x1C, 0x00, 0x00, 0x14, 0x90, 0xFF, 0xFF, 0x15, 0x06, 0x00, 0x00, 0x0E, 0x94, 0xFF, 0xFF, 0x1A, 0x51, 0xB3, 0xC2, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x51, 0x3A, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x91, 0x90, 0x34, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x78, 0xDA, 0x2F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xAC, 0x28, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x45, 0xC1, 0x23, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x30, 0x9E, 0x21, 0x46, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x37, 0x25, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x57, 0x09, 0x91, 0x05, 0xF5, 0x00, 0x00, 0x31, 0x4F, 0x31, 0x97, 0x00, 0x00, 0x00, 0x00, 0x32, 0x9B, 0x60, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x71, 0x8E, 0x58, 0x00, 0x00, 0x00, 0x00, 0x31, 0xC9, 0xC0, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x96, 0xEA, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x28, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x27, 0x90, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x25, 0x0B, 0xFF, 0xFF, 0x02, 0x36, 0xAB, 0xBD, 0x44, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xE2, 0x4A, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x82, 0xD6, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x7E, 0x3A, 0x59, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xAE, 0x33, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x39, 0x9D, 0x2E, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x24, 0xD2, 0x31, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x03, 0x91, 0x3B, 0x77, 0x00, 0x00, 0x04, 0xF3, 0x00, 0x00, 0x3C, 0xD3, 0x10, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x73, 0x35, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xE0, 0x61, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x36, 0x95, 0x89, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x39, 0x7C, 0xBA, 0x29, 0x00, 0x00, 0x00, 0x00, 0x36, 0x26, 0xD3, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x31, 0x71, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x29, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0x0F, 0x54, 0x21, 0x00, 0x00, 0x00, 0x00, 0x96, 0x05, 0x58, 0x21, 0x00, 0x00, 0x00, 0x00, 0x77, 0x03, 0x4D, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x44, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x44, 0x66, 0x3E, 0x26, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x04, 0x40, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x14, 0x77, 0x4B, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x8B, 0x0A, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xA5, 0x17, 0x24, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x3C, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x45, 0x66, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x66, 0x74, 0x50, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xC6, 0xB9, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x48, 0xCC, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x55, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x36, 0x54, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x33, 0x37, 0xFF, 0xFF, 0x00, 0x00, 0x99, 0xC1, 0x61, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x87, 0x7B, 0x62, 0x49, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x1F, 0x58, 0x38, 0x00, 0x00, 0x00, 0x00, 0x51, 0xB4, 0x52, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x1A, 0x54, 0x18, 0x00, 0x00, 0x00, 0x00, 0x22, 0xBC, 0x5D, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xA4, 0x03, 0xDC, 0x04, 0x8C, 0x00, 0x00, 0x6A, 0x8C, 0x11, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x58, 0x23, 0x76, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x45, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x70, 0x3B, 0x6F, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFC, 0x9B, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x77, 0xB3, 0xA8, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x79, 0xBE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x75, 0x3D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x64, 0xD3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x90, 0xD9, 0x70, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x79, 0xBE, 0x6B, 0xB1, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x3C, 0x64, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x48, 0x43, 0x67, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x3A, 0x74, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x12, 0x4D, 0x81, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x02, 0x10, 0x95, 0x00, 0x00, 0x00, 0x00, 0x94, 0x09, 0x28, 0x64, 0x00, 0x00, 0x00, 0x00, 0x9B, 0xC5, 0x3A, 0x88, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x0B, 0x55, 0x19, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xA4, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xB2, 0x94, 0x77, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xB7, 0xB5, 0xB0, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x66, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x72, 0xF6, 0xFF, 0xFF, 0x00, 0x00, 0x87, 0xD0, 0x7D, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x2F, 0x77, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x54, 0x2A, 0x79, 0x49, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x7F, 0x87, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x24, 0x69, 0x98, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0x5C, 0x08, 0x2C, 0x0A, 0xA4, 0x00, 0x00, 0xB1, 0x5A, 0x22, 0x51, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xEE, 0x3A, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xFB, 0x58, 0xD6, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x1A, 0x71, 0x91, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x01, 0x94, 0x75, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x6C, 0xB8, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x40, 0xBF, 0x85, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x81, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x48, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x45, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x99, 0x31, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0xD7, 0x89, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x61, 0x35, 0x89, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x49, 0xA7, 0x98, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x34, 0xBE, 0xAA, 0x45, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x90, 0xB8, 0xCE, 0x00, 0x00, 0x12, 0xE7, 0x00, 0x00, 0xC4, 0x83, 0x18, 0x4D, 0x04, 0x52, 0x00, 0x00, 0xC7, 0xBD, 0x2E, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xA4, 0x45, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x56, 0x5B, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x1D, 0x6E, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xCE, 0x89, 0x73, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xB3, 0xA9, 0x43, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xEE, 0xC1, 0xA8, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x7D, 0xF9, 0x61, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xE6, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0x6F, 0x17, 0x98, 0x32, 0x00, 0x00, 0x00, 0x00, 0x57, 0x49, 0xA4, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x42, 0x31, 0xB4, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x56, 0xBD, 0x16, 0x00, 0x00, 0x0C, 0x6F, 0x00, 0x00, 0xBD, 0x6D, 0x0C, 0x9D, 0x0D, 0xE2, 0x00, 0x00, 0xC2, 0x17, 0x24, 0x44, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x6E, 0x35, 0x4B, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xE2, 0x49, 0xDD, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xB7, 0x5B, 0x6A, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x2D, 0x6A, 0xEF, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x41, 0x79, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x0C, 0x96, 0x02, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xB4, 0xB0, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xE5, 0x74, 0xC2, 0x65, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x5B, 0xF1, 0x5B, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x96, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x3E, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x00, 0x9D, 0x0E, 0x00, 0x00, 0x0C, 0x0D, 0x00, 0x00, 0x97, 0x1F, 0x00, 0x00, 0x17, 0x20, 0x00, 0x00, 0x8F, 0xD1, 0x00, 0x00, 0x1F, 0x6C, 0x00, 0x00, 0x89, 0x16, 0x00, 0x00, 0x29, 0xB8, 0x00, 0x00, 0x84, 0x5E, 0x00, 0x00, 0x34, 0xAF, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x40, 0x73, 0x02, 0xF1, 0x7D, 0xC9, 0x00, 0x00, 0x53, 0xA1, 0x03, 0xBB, 0x7F, 0xE0, 0x00, 0x00, 0x6C, 0xF8, 0x02, 0x3E, 0x83, 0x3E, 0x00, 0x00, 0x8A, 0x80, 0x00, 0x30, 0x84, 0x57, 0x00, 0x00, 0xA6, 0x9D, 0x00, 0x00, 0x82, 0x6A, 0x00, 0x00, 0xBD, 0x36, 0x00, 0x00, 0x7D, 0x6F, 0x00, 0x00, 0xD0, 0x88, 0x00, 0x00, 0x77, 0x32, 0x00, 0x00, 0xDF, 0xB0, 0x00, 0x00, 0x72, 0x39, 0x00, 0x00, 0xEE, 0x31, 0x00, 0x00, 0xB2, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x7D, 0x00, 0x00, 0x05, 0xBC, 0x00, 0x00, 0x98, 0x4A, 0x00, 0x00, 0x12, 0x1C, 0x00, 0x00, 0x91, 0x17, 0x00, 0x00, 0x1B, 0xF7, 0x00, 0x00, 0x88, 0xB8, 0x00, 0x00, 0x26, 0xFF, 0x00, 0x00, 0x83, 0x91, 0x00, 0x00, 0x32, 0xED, 0x00, 0x00, 0x7D, 0x1D, 0x00, 0x00, 0x3E, 0xDA, 0x03, 0x3B, 0x7C, 0x05, 0x00, 0x00, 0x54, 0xBC, 0x03, 0xD8, 0x7F, 0x12, 0x00, 0x00, 0x72, 0x63, 0x01, 0x95, 0x83, 0x50, 0x00, 0x00, 0x94, 0x78, 0x00, 0x00, 0x82, 0xF3, 0x00, 0x00, 0xB1, 0xE1, 0x00, 0x00, 0x7E, 0xB0, 0x00, 0x00, 0xC9, 0x2C, 0x00, 0x00, 0x77, 0xD7, 0x00, 0x00, 0xDB, 0xA2, 0x00, 0x00, 0x72, 0x3A, 0x00, 0x00, 0xEB, 0xC3, 0x00, 0x00, 0x6B, 0x71, 0x00, 0x00, 0xF8, 0x9B, 0x00, 0x00, 0xB6, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x3E, 0x00, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x9A, 0xCB, 0x00, 0x00, 0x0A, 0xDD, 0x00, 0x00, 0x93, 0xC0, 0x00, 0x00, 0x18, 0x15, 0x00, 0x00, 0x89, 0x87, 0x00, 0x00, 0x23, 0x8C, 0x00, 0x00, 0x83, 0xDE, 0x00, 0x00, 0x31, 0x3B, 0x00, 0x00, 0x7D, 0x97, 0x00, 0x00, 0x3F, 0x46, 0x03, 0xF6, 0x7B, 0xF2, 0x00, 0x00, 0x58, 0x5B, 0x04, 0x97, 0x7E, 0x1F, 0x00, 0x00, 0x79, 0x8F, 0x00, 0xD9, 0x82, 0x3C, 0x00, 0x00, 0xA1, 0xA6, 0x00, 0x00, 0x81, 0x41, 0x00, 0x00, 0xC1, 0x24, 0x00, 0x00, 0x78, 0x7A, 0x00, 0x00, 0xD7, 0xDF, 0x00, 0x00, 0x71, 0x9D, 0x00, 0x00, 0xEA, 0xDB, 0x00, 0x00, 0x6A, 0x2A, 0x00, 0x00, 0xF9, 0xAD, 0x00, 0x00, 0x64, 0xC2, 0x00, 0x00, 0xFF, 0x30, 0x00, 0x00, 0xBC, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x90, 0x00, 0x00, 0x01, 0x5B, 0x00, 0x00, 0x94, 0xC7, 0x00, 0x00, 0x13, 0x1D, 0x00, 0x00, 0x81, 0xF5, 0x00, 0x00, 0x1C, 0xF5, 0x00, 0x00, 0x76, 0xAD, 0x00, 0x00, 0x2A, 0xB6, 0x00, 0x00, 0x6B, 0xB3, 0x00, 0x00, 0x37, 0x9A, 0x03, 0xC0, 0x67, 0x41, 0x00, 0x00, 0x4B, 0x7B, 0x04, 0x02, 0x69, 0x57, 0x00, 0x00, 0x68, 0x9B, 0x00, 0x00, 0x69, 0xB0, 0x00, 0x00, 0x92, 0x40, 0x00, 0x00, 0x6D, 0xAF, 0x00, 0x00, 0xBD, 0xF2, 0x00, 0x00, 0x6A, 0xCD, 0x00, 0x00, 0xDE, 0x97, 0x00, 0x00, 0x68, 0x0F, 0x00, 0x00, 0xFC, 0xF6, 0x00, 0x00, 0x60, 0xC8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0xCC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC7, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x13, 0x00, 0x00, 0x0A, 0x17, 0x00, 0x00, 0x71, 0x35, 0x00, 0x00, 0x13, 0xDE, 0x00, 0x00, 0x63, 0xE7, 0x00, 0x00, 0x22, 0x89, 0x00, 0x00, 0x58, 0x98, 0x00, 0x00, 0x2E, 0xB9, 0x02, 0x77, 0x54, 0xC3, 0x00, 0x00, 0x3E, 0xAB, 0x01, 0x7D, 0x55, 0x73, 0x00, 0x00, 0x5A, 0xC9, 0x00, 0x00, 0x55, 0x3F, 0x00, 0x00, 0x86, 0xD8, 0x00, 0x00, 0x58, 0x38, 0x00, 0x00, 0xB7, 0x82, 0x00, 0x00, 0x5A, 0x54, 0x00, 0x00, 0xDF, 0x20, 0x00, 0x00, 0x5C, 0x5B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x57, 0x89, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x53, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC3, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x90, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x60, 0x63, 0x00, 0x00, 0x08, 0xDE, 0x00, 0x00, 0x52, 0x0C, 0x00, 0x00, 0x18, 0x68, 0x01, 0x1F, 0x47, 0x23, 0x00, 0x00, 0x24, 0xAB, 0x00, 0x34, 0x42, 0x7E, 0x00, 0x00, 0x34, 0xA2, 0x00, 0x00, 0x40, 0xD8, 0x00, 0x00, 0x4E, 0xDC, 0x00, 0x00, 0x43, 0x9B, 0x00, 0x00, 0x7C, 0xAB, 0x00, 0x00, 0x42, 0xF9, 0x00, 0x00, 0xAA, 0x22, 0x00, 0x00, 0x49, 0x15, 0x00, 0x00, 0xDB, 0x4E, 0x00, 0x00, 0x4E, 0x26, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4A, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0x5B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBD, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x2C, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x2C, 0x02, 0x58, 0x00, 0x00, 0x00, 0x00, 0x66, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x41, 0x1E, 0x00, 0x00, 0x0D, 0x8C, 0x00, 0xE0, 0x35, 0x6A, 0x00, 0x00, 0x1B, 0xE2, 0x00, 0x00, 0x32, 0xAB, 0x00, 0x00, 0x2D, 0x17, 0x00, 0x00, 0x31, 0xA3, 0x00, 0x00, 0x46, 0x65, 0x00, 0x00, 0x32, 0xBC, 0x00, 0x00, 0x77, 0x8B, 0x00, 0x00, 0x2F, 0x83, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0x33, 0x63, 0x00, 0x00, 0xD9, 0x85, 0x00, 0x00, 0x39, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x38, 0x6F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0x0D, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x3B, 0xB9, 0x9F, 0x10, 0x22, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x4A, 0x10, 0xCA, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x5B, 0x0D, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x83, 0xCD, 0x12, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x72, 0x01, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x56, 0xFE, 0x08, 0x83, 0x00, 0x00, 0x00, 0x00, 0x44, 0xC3, 0x05, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x27, 0x55, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0x26, 0xC8, 0x00, 0x00, 0x2B, 0x93, 0x00, 0x00, 0x24, 0x81, 0x00, 0x00, 0x4D, 0x69, 0x00, 0x00, 0x21, 0x7C, 0x00, 0x00, 0x83, 0x09, 0x00, 0x00, 0x19, 0xE8, 0x00, 0x00, 0xB2, 0xC9, 0x02, 0xC8, 0x16, 0x70, 0x00, 0x00, 0xDA, 0xB8, 0x04, 0x78, 0x11, 0x47, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0xF4, 0x15, 0x36, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0x61, 0x17, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0xA4, 0xB4, 0x6C, 0x20, 0xCB, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xFD, 0x23, 0x51, 0x00, 0x00, 0x00, 0x00, 0x92, 0xBF, 0x21, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x96, 0x21, 0x47, 0x00, 0x00, 0x00, 0x00, 0x60, 0x9D, 0x15, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x0D, 0x11, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x36, 0xBA, 0x0C, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x21, 0xB3, 0x09, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x13, 0x00, 0x00, 0x0B, 0xCD, 0x29, 0x17, 0x0D, 0x68, 0x00, 0x00, 0x10, 0x5B, 0x54, 0xBD, 0x04, 0xCA, 0x00, 0x00, 0x15, 0x4A, 0x88, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x18, 0xB1, 0xBC, 0x09, 0x00, 0x00, 0x00, 0x00, 0x13, 0x30, 0xE3, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x10, 0x9A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xBD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x09, 0x84, 0xFF, 0xFF, 0x06, 0xD6, 0xAD, 0x39, 0x2F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x66, 0x32, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x88, 0x17, 0x2E, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xCF, 0x27, 0x92, 0x00, 0x00, 0x00, 0x00, 0x54, 0xBE, 0x20, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xB8, 0x1A, 0x33, 0x00, 0x00, 0x00, 0x00, 0x27, 0xE9, 0x17, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x6E, 0x1B, 0xED, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x08, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x18, 0xDC, 0x2B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x2D, 0x58, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x17, 0x62, 0x81, 0x82, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x6F, 0xB8, 0x35, 0x00, 0x00, 0x00, 0x00, 0x16, 0xE9, 0xD2, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x14, 0xDA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x35, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x6A, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0xBF, 0x3B, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x99, 0x09, 0x42, 0x99, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x9C, 0x3A, 0x53, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x64, 0x32, 0x38, 0x00, 0x00, 0x00, 0x00, 0x48, 0x2D, 0x2B, 0x68, 0x00, 0x00, 0x00, 0x00, 0x31, 0xB8, 0x26, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x58, 0x28, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x6C, 0x01, 0x52, 0x00, 0x02, 0x00, 0x00, 0x2B, 0x1A, 0x10, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1B, 0x35, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6B, 0x5D, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x23, 0x89, 0x77, 0x58, 0x00, 0x00, 0x00, 0x00, 0x26, 0x69, 0xB4, 0x86, 0x00, 0x00, 0x00, 0x00, 0x24, 0x70, 0xC3, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x21, 0xB9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x18, 0x8A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x15, 0x1A, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0xFE, 0x4B, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x8D, 0xF0, 0x50, 0x45, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x0F, 0x45, 0x83, 0x00, 0x00, 0x00, 0x00, 0x54, 0x1D, 0x3D, 0x06, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xCC, 0x36, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x25, 0xF5, 0x38, 0x50, 0x00, 0x00, 0x00, 0x00, 0x08, 0xCD, 0x41, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x87, 0x09, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x4E, 0x18, 0x69, 0x00, 0x00, 0x00, 0x00, 0x39, 0x56, 0x41, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4C, 0x62, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x32, 0xEA, 0x73, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x36, 0x19, 0xAE, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x33, 0x43, 0xBB, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x33, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x21, 0x0D, 0xFF, 0xFF, 0x00, 0x00, 0x91, 0xA1, 0x59, 0x35, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xF7, 0x59, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x60, 0x91, 0x4F, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x49, 0xEB, 0x49, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x32, 0xA3, 0x4B, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xAF, 0x55, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x1E, 0x05, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC9, 0x13, 0x83, 0x00, 0x00, 0x00, 0x00, 0x58, 0x47, 0x27, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4F, 0x41, 0x50, 0x00, 0x00, 0x00, 0x00, 0x51, 0x35, 0x6A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4B, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00, 0x54, 0xAA, 0xA1, 0x31, 0x00, 0x00, 0x00, 0x00, 0x50, 0xF3, 0xD1, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x69, 0x1A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x33, 0x1D, 0xFF, 0xFF, 0x00, 0x00, 0x88, 0x7D, 0x67, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x71, 0xA4, 0x62, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x56, 0xA8, 0x5C, 0xB1, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xD3, 0x5C, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x25, 0xE7, 0x69, 0x55, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x72, 0xA7, 0x00, 0x00, 0x08, 0xDC, 0x00, 0x00, 0x7A, 0x91, 0x0F, 0x64, 0x00, 0x00, 0x00, 0x00, 0x85, 0x24, 0x22, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x9D, 0x35, 0x21, 0x00, 0x00, 0x00, 0x00, 0x94, 0xE9, 0x56, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x96, 0x82, 0x5D, 0x70, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xD4, 0xA3, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xEC, 0xAD, 0x61, 0x00, 0x00, 0x00, 0x00, 0x96, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x91, 0x70, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x85, 0xA5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xF6, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0x3F, 0x75, 0x25, 0x00, 0x00, 0x00, 0x00, 0x64, 0x02, 0x6E, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x0B, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x31, 0x1E, 0x7C, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0A, 0x8C, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x58, 0x12, 0x4B, 0x02, 0x72, 0x00, 0x00, 0xA3, 0xA3, 0x29, 0x83, 0x00, 0x00, 0x00, 0x00, 0xAB, 0xF0, 0x3D, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x72, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xF2, 0x69, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x64, 0x8C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xD5, 0xB6, 0x6A, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x6B, 0xC0, 0xD9, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x71, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8D, 0xE3, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0x91, 0x82, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x57, 0xC4, 0x81, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x8E, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x76, 0xA0, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0xE2, 0x06, 0x38, 0x16, 0xA0, 0x00, 0x00, 0xB9, 0xC7, 0x26, 0x44, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x1E, 0x39, 0xB4, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x2F, 0x4E, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x38, 0x60, 0x97, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x3B, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x17, 0x8E, 0x67, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x18, 0xAC, 0x27, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x48, 0xBF, 0x39, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x8B, 0xC6, 0x52, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x42, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x5D, 0xFF, 0xFF, 0x00, 0x00, 0x66, 0x35, 0x92, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x03, 0x9E, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x39, 0x04, 0xAD, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x73, 0xB0, 0x92, 0x00, 0x00, 0x16, 0x87, 0x00, 0x00, 0xB3, 0x7D, 0x1A, 0x8F, 0x08, 0xDA, 0x00, 0x00, 0xB6, 0x39, 0x2E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x6C, 0x3D, 0x9E, 0x00, 0x00, 0x00, 0x00, 0xBA, 0xA7, 0x51, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x0B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x07, 0x6C, 0xEB, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x6B, 0x85, 0x85, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xEF, 0x93, 0xEF, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x7E, 0xB2, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xA7, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEE, 0x8C, 0xEE, 0x8C, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1A, 0xFF, 0xFF, 0x00, 0x00, 0x9D, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x38, 0x00, 0x00, 0x06, 0xC2, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x0C, 0xB7, 0x00, 0x00, 0x78, 0xB0, 0x00, 0x00, 0x14, 0x4D, 0x00, 0x00, 0x72, 0xE7, 0x00, 0x00, 0x1E, 0xA5, 0x00, 0x00, 0x6B, 0xB6, 0x00, 0x00, 0x27, 0x90, 0x05, 0x10, 0x66, 0xD3, 0x00, 0x00, 0x32, 0xED, 0x09, 0x6A, 0x64, 0xFA, 0x00, 0x00, 0x42, 0x4D, 0x0B, 0x0A, 0x68, 0x6A, 0x00, 0x00, 0x58, 0x47, 0x06, 0xEA, 0x6C, 0x52, 0x00, 0x00, 0x74, 0x36, 0x02, 0xCF, 0x6F, 0xCB, 0x00, 0x00, 0x91, 0xB9, 0x00, 0x00, 0x70, 0xD8, 0x00, 0x00, 0xAC, 0x16, 0x00, 0x00, 0x71, 0x3B, 0x00, 0x00, 0xC1, 0xF2, 0x00, 0x00, 0x6E, 0xB5, 0x00, 0x00, 0xD5, 0x42, 0x00, 0x00, 0x6C, 0xA8, 0x00, 0x00, 0xE7, 0xCC, 0x00, 0x00, 0xA3, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xD8, 0x00, 0x00, 0x01, 0x95, 0x00, 0x00, 0x82, 0x95, 0x00, 0x00, 0x09, 0x2D, 0x00, 0x00, 0x79, 0xDE, 0x00, 0x00, 0x11, 0x0A, 0x00, 0x00, 0x73, 0x07, 0x00, 0x00, 0x1B, 0xDF, 0x00, 0x00, 0x6A, 0xF6, 0x00, 0x00, 0x25, 0xEF, 0x04, 0xE9, 0x65, 0x0A, 0x00, 0x00, 0x32, 0x49, 0x09, 0x92, 0x63, 0x4A, 0x00, 0x00, 0x43, 0xD9, 0x0B, 0x0A, 0x67, 0xE7, 0x00, 0x00, 0x5C, 0xB4, 0x05, 0xDC, 0x6B, 0xB7, 0x00, 0x00, 0x7C, 0xEC, 0x01, 0xB6, 0x6E, 0xC2, 0x00, 0x00, 0x9E, 0x11, 0x00, 0x00, 0x70, 0x04, 0x00, 0x00, 0xB9, 0x51, 0x00, 0x00, 0x6E, 0x75, 0x00, 0x00, 0xD0, 0x6C, 0x00, 0x00, 0x6B, 0xE8, 0x00, 0x00, 0xE4, 0x75, 0x00, 0x00, 0x67, 0x03, 0x00, 0x00, 0xF5, 0x0E, 0x00, 0x00, 0xA9, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x94, 0x00, 0x00, 0x05, 0x92, 0x00, 0x00, 0x7B, 0xD8, 0x00, 0x00, 0x0D, 0x07, 0x00, 0x00, 0x73, 0x3E, 0x00, 0x00, 0x18, 0x31, 0x00, 0x00, 0x6A, 0x61, 0x00, 0x00, 0x23, 0xD6, 0x04, 0x93, 0x63, 0x1D, 0x00, 0x00, 0x31, 0x9F, 0x09, 0xBA, 0x61, 0xA2, 0x00, 0x00, 0x46, 0x07, 0x0A, 0xEC, 0x65, 0x7C, 0x00, 0x00, 0x61, 0xA4, 0x04, 0x70, 0x69, 0xAE, 0x00, 0x00, 0x87, 0x2E, 0x00, 0x00, 0x6D, 0x39, 0x00, 0x00, 0xAD, 0x67, 0x00, 0x00, 0x6E, 0x10, 0x00, 0x00, 0xCB, 0x19, 0x00, 0x00, 0x6B, 0x12, 0x00, 0x00, 0xE3, 0x7E, 0x00, 0x00, 0x65, 0x09, 0x00, 0x00, 0xF5, 0x4F, 0x00, 0x00, 0x5B, 0x5B, 0x00, 0x00, 0xFB, 0xA7, 0x00, 0x00, 0xB0, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xBB, 0x00, 0x00, 0x07, 0xBE, 0x00, 0x00, 0x6D, 0x2A, 0x00, 0x00, 0x11, 0xEE, 0x00, 0x00, 0x5F, 0x7E, 0x00, 0x00, 0x1D, 0xB8, 0x03, 0x0F, 0x55, 0x4D, 0x00, 0x00, 0x2A, 0x1E, 0x07, 0x46, 0x52, 0x2E, 0x00, 0x00, 0x3B, 0xB4, 0x06, 0x5D, 0x55, 0x11, 0x00, 0x00, 0x58, 0x1C, 0x00, 0x08, 0x56, 0x20, 0x00, 0x00, 0x7E, 0x2C, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00, 0xA9, 0x24, 0x00, 0x00, 0x5C, 0x84, 0x00, 0x00, 0xCF, 0xA6, 0x00, 0x00, 0x60, 0x07, 0x00, 0x00, 0xF6, 0x8B, 0x00, 0x00, 0x56, 0x6F, 0x00, 0x00, 0xFD, 0x60, 0x00, 0x00, 0x4F, 0x8D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB9, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xDD, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x5D, 0x73, 0x00, 0x00, 0x09, 0xA4, 0x00, 0x00, 0x4F, 0xF1, 0x00, 0x00, 0x15, 0x62, 0x03, 0x6B, 0x45, 0x7A, 0x00, 0x00, 0x20, 0x05, 0x04, 0x9A, 0x42, 0xDC, 0x00, 0x00, 0x32, 0xDF, 0x01, 0x13, 0x41, 0x6D, 0x00, 0x00, 0x4D, 0x93, 0x00, 0x00, 0x43, 0x1A, 0x00, 0x00, 0x75, 0xBB, 0x00, 0x00, 0x45, 0x2B, 0x00, 0x00, 0xA4, 0xDD, 0x00, 0x00, 0x45, 0xDB, 0x00, 0x00, 0xCD, 0x26, 0x00, 0x00, 0x4D, 0x13, 0x00, 0x00, 0xFE, 0x2C, 0x00, 0x00, 0x46, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB7, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x1E, 0x00, 0x00, 0x03, 0xA0, 0x00, 0x00, 0x3F, 0xCA, 0x00, 0x00, 0x0C, 0xCC, 0x02, 0x8F, 0x35, 0x2F, 0x00, 0x00, 0x17, 0xDB, 0x02, 0x34, 0x32, 0xFA, 0x00, 0x00, 0x2B, 0xB6, 0x00, 0x00, 0x2F, 0x92, 0x00, 0x00, 0x45, 0xA1, 0x00, 0x00, 0x31, 0x49, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x30, 0x33, 0x00, 0x00, 0x9F, 0x0B, 0x00, 0x00, 0x30, 0x7E, 0x00, 0x00, 0xCB, 0x39, 0x00, 0x00, 0x36, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0xB8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x30, 0x7A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB5, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x18, 0x01, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x30, 0x31, 0x00, 0x00, 0x04, 0x28, 0x00, 0x8D, 0x25, 0xE4, 0x00, 0x00, 0x10, 0xE4, 0x00, 0x00, 0x22, 0x85, 0x00, 0x00, 0x24, 0xA0, 0x00, 0x00, 0x1E, 0xC8, 0x00, 0x00, 0x42, 0xD0, 0x00, 0x00, 0x1E, 0x7A, 0x00, 0x00, 0x71, 0xFA, 0x00, 0x00, 0x1A, 0x73, 0x00, 0x00, 0xA3, 0xA6, 0x00, 0x00, 0x1A, 0xEB, 0x00, 0x00, 0xCE, 0x65, 0x00, 0x00, 0x1E, 0x11, 0x00, 0x00, 0xFF, 0x10, 0x00, 0x00, 0x1C, 0xD4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1D, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB2, 0xAA, 0x08, 0x7D, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x95, 0x08, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x94, 0x9A, 0x09, 0x65, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x11, 0x0A, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x61, 0xC3, 0x05, 0x89, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x53, 0x07, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF3, 0x00, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x21, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x3A, 0x00, 0x00, 0x08, 0xD7, 0x00, 0x00, 0x10, 0x3A, 0x00, 0x00, 0x22, 0xAC, 0x00, 0x00, 0x0C, 0xA4, 0x00, 0x00, 0x49, 0x4F, 0x00, 0x00, 0x0B, 0x0A, 0x00, 0x00, 0x7C, 0xBC, 0x00, 0x00, 0x06, 0xBC, 0x00, 0x00, 0xAD, 0xB9, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x00, 0xD6, 0x1B, 0x00, 0x00, 0x04, 0x3C, 0x00, 0x00, 0xFA, 0xDB, 0x00, 0x00, 0x04, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x74, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAD, 0xE4, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xF3, 0x19, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x89, 0x64, 0x1D, 0x36, 0x00, 0x00, 0x00, 0x00, 0x71, 0xEA, 0x17, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x55, 0xB2, 0x13, 0x23, 0x00, 0x00, 0x00, 0x00, 0x40, 0xEC, 0x09, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x65, 0x05, 0x22, 0x00, 0x00, 0x00, 0x00, 0x15, 0x17, 0x01, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x24, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x01, 0x4B, 0x7C, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xAD, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x7D, 0x28, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x3B, 0x2B, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x80, 0x85, 0x29, 0x14, 0x00, 0x00, 0x00, 0x00, 0x66, 0x07, 0x20, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x85, 0x1A, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x36, 0x4D, 0x14, 0x37, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x81, 0x0F, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0x11, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5E, 0x0E, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0xC4, 0x29, 0x53, 0x00, 0x00, 0x00, 0x00, 0x04, 0x6B, 0x4A, 0x39, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5A, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x05, 0xE9, 0xA6, 0x84, 0x00, 0x00, 0x00, 0x00, 0x03, 0x95, 0xCA, 0x82, 0x00, 0x00, 0x00, 0x00, 0x05, 0x6C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x9B, 0x6C, 0x37, 0x05, 0x00, 0x00, 0x00, 0x00, 0x92, 0xA9, 0x3A, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x76, 0xD1, 0x34, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x63, 0x2C, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x41, 0xEC, 0x25, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xB8, 0x20, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x11, 0x9F, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x74, 0x02, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x90, 0x11, 0x88, 0x00, 0x00, 0x00, 0x00, 0x13, 0x58, 0x33, 0x58, 0x00, 0x00, 0x00, 0x00, 0x11, 0xCE, 0x51, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1E, 0x94, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x11, 0x12, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x11, 0xAF, 0xFF, 0x19, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xBD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, 0xC2, 0xFF, 0xFF, 0x00, 0x00, 0x93, 0xCF, 0x47, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x87, 0x07, 0x4A, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x68, 0x2B, 0x40, 0x56, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x53, 0x38, 0x72, 0x00, 0x00, 0x00, 0x00, 0x37, 0xA2, 0x33, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xC5, 0x33, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC4, 0x3A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x7A, 0x0B, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xD9, 0x1A, 0x07, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xA3, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xF8, 0x5F, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x71, 0x9B, 0x00, 0x00, 0x00, 0x00, 0x24, 0xD0, 0xAA, 0x20, 0x00, 0x00, 0x00, 0x00, 0x24, 0xFB, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x25, 0x99, 0xFD, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xB1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x13, 0x0B, 0xFF, 0xFF, 0x00, 0x00, 0x8C, 0xF1, 0x55, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFD, 0x55, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x25, 0x4C, 0x22, 0x00, 0x00, 0x00, 0x00, 0x45, 0x13, 0x45, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x19, 0x47, 0x51, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x4F, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6A, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xF8, 0x13, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x3F, 0x29, 0x79, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x44, 0x43, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x47, 0x22, 0x67, 0x22, 0x00, 0x00, 0x00, 0x00, 0x48, 0x71, 0x70, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x44, 0x33, 0xAE, 0x50, 0x00, 0x00, 0x00, 0x00, 0x45, 0xCD, 0xC5, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x3A, 0xFD, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x37, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x27, 0x35, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0xBD, 0x64, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x8E, 0x60, 0x37, 0x00, 0x00, 0x00, 0x00, 0x53, 0x27, 0x5A, 0x73, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x16, 0x5B, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x21, 0x90, 0x64, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x37, 0x00, 0xF6, 0x06, 0x09, 0x00, 0x00, 0x71, 0x0C, 0x12, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x72, 0xA1, 0x22, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x75, 0x4A, 0x32, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x76, 0x59, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD3, 0x78, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x81, 0x95, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x84, 0x29, 0xA4, 0x29, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x21, 0xF9, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x89, 0x6E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xB3, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0x20, 0x73, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x61, 0x23, 0x6E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x48, 0xD9, 0x6F, 0xF5, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x06, 0x7A, 0x87, 0x00, 0x00, 0x00, 0x00, 0x15, 0xB2, 0x86, 0x80, 0x00, 0x00, 0x01, 0x84, 0x00, 0x00, 0x91, 0xB0, 0x14, 0xF9, 0x00, 0x4D, 0x00, 0x00, 0x9A, 0xD8, 0x2A, 0x65, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x77, 0x43, 0x77, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x4F, 0x53, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x77, 0x69, 0x94, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xAC, 0x74, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x28, 0xAA, 0xA9, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x7A, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xDC, 0xFB, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xF9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x42, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x88, 0x23, 0xFF, 0xFF, 0x00, 0x00, 0x70, 0xE6, 0x81, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x56, 0x1E, 0x83, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xC9, 0x8E, 0x16, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x9D, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x20, 0x0B, 0xCC, 0x10, 0x5B, 0x00, 0x00, 0xB3, 0x95, 0x27, 0xC7, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x4A, 0x3A, 0xE3, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x60, 0x51, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x18, 0x5C, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x98, 0x72, 0xCF, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x2A, 0x8D, 0x2A, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x26, 0xAC, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xEB, 0xBC, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xBC, 0xCB, 0x41, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x67, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x46, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0x64, 0x7D, 0x94, 0x42, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x90, 0x9F, 0x67, 0x00, 0x00, 0x00, 0x00, 0x37, 0x8F, 0xAC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x07, 0x41, 0xAE, 0xDB, 0x00, 0x00, 0x17, 0xBC, 0x00, 0x00, 0xB1, 0xB6, 0x1C, 0x28, 0x08, 0x44, 0x00, 0x00, 0xB4, 0x05, 0x30, 0x73, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xF8, 0x42, 0x07, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x9B, 0x53, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xBA, 0xFC, 0x5B, 0xF7, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x9F, 0x6F, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xED, 0x88, 0x44, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xCE, 0x95, 0x38, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x75, 0xB5, 0x11, 0x00, 0x00, 0x00, 0x00, 0xDC, 0xE9, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xED, 0x45, 0xED, 0x45, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x46, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x86, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x5B, 0x00, 0x89, 0x00, 0xB7, 0x00, 0xE5, 0x01, 0x12, 0x01, 0x40, 0x01, 0x6E, 0x01, 0x9B, 0x01, 0xC9, 0x01, 0xF7, 0x02, 0x25, 0x02, 0x52, 0x02, 0x80, 0x02, 0xAE, 0x02, 0xDC, 0x03, 0x09, 0x03, 0x37, 0x03, 0x65, 0x03, 0x93, 0x03, 0xC1, 0x03, 0xEE, 0x04, 0x1C, 0x04, 0x4A, 0x04, 0x78, 0x04, 0xA6, 0x04, 0xD4, 0x05, 0x01, 0x05, 0x2F, 0x05, 0x5D, 0x05, 0x8B, 0x05, 0xB9, 0x05, 0xE7, 0x06, 0x14, 0x06, 0x42, 0x06, 0x70, 0x06, 0x9E, 0x06, 0xCC, 0x06, 0xFA, 0x07, 0x28, 0x07, 0x56, 0x07, 0x83, 0x07, 0xB1, 0x07, 0xDF, 0x08, 0x0D, 0x08, 0x3B, 0x08, 0x69, 0x08, 0x97, 0x08, 0xC5, 0x08, 0xF3, 0x09, 0x21, 0x09, 0x4F, 0x09, 0x7D, 0x09, 0xAB, 0x09, 0xD9, 0x0A, 0x07, 0x0A, 0x35, 0x0A, 0x63, 0x0A, 0x91, 0x0A, 0xBF, 0x0A, 0xED, 0x0B, 0x1B, 0x0B, 0x49, 0x0B, 0x77, 0x0B, 0xA5, 0x0B, 0xD3, 0x0C, 0x01, 0x0C, 0x2F, 0x0C, 0x5D, 0x0C, 0x8B, 0x0C, 0xB9, 0x0C, 0xE7, 0x0D, 0x15, 0x0D, 0x43, 0x0D, 0x71, 0x0D, 0x9F, 0x0D, 0xCD, 0x0D, 0xFB, 0x0E, 0x29, 0x0E, 0x58, 0x0E, 0x86, 0x0E, 0xB4, 0x0E, 0xE2, 0x0F, 0x10, 0x0F, 0x3E, 0x0F, 0x6C, 0x0F, 0x9A, 0x0F, 0xC8, 0x0F, 0xF7, 0x10, 0x25, 0x10, 0x53, 0x10, 0x81, 0x10, 0xAF, 0x10, 0xDD, 0x11, 0x0C, 0x11, 0x3A, 0x11, 0x68, 0x11, 0x96, 0x11, 0xC4, 0x11, 0xF2, 0x12, 0x21, 0x12, 0x4F, 0x12, 0x7D, 0x12, 0xAB, 0x12, 0xD9, 0x13, 0x08, 0x13, 0x36, 0x13, 0x64, 0x13, 0x92, 0x13, 0xC0, 0x13, 0xEF, 0x14, 0x1D, 0x14, 0x4B, 0x14, 0x79, 0x14, 0xA8, 0x14, 0xD6, 0x15, 0x04, 0x15, 0x32, 0x15, 0x61, 0x15, 0x8F, 0x15, 0xBD, 0x15, 0xEB, 0x16, 0x1A, 0x16, 0x48, 0x16, 0x76, 0x16, 0xA5, 0x16, 0xD3, 0x17, 0x04, 0x17, 0x41, 0x17, 0x80, 0x17, 0xBE, 0x17, 0xFD, 0x18, 0x3B, 0x18, 0x79, 0x18, 0xB8, 0x18, 0xF6, 0x19, 0x34, 0x19, 0x73, 0x19, 0xB1, 0x19, 0xF0, 0x1A, 0x2E, 0x1A, 0x6D, 0x1A, 0xAB, 0x1A, 0xEA, 0x1B, 0x28, 0x1B, 0x67, 0x1B, 0xA5, 0x1B, 0xE4, 0x1C, 0x22, 0x1C, 0x61, 0x1C, 0x9F, 0x1C, 0xDE, 0x1D, 0x1C, 0x1D, 0x5B, 0x1D, 0x99, 0x1D, 0xD8, 0x1E, 0x16, 0x1E, 0x55, 0x1E, 0x93, 0x1E, 0xD2, 0x1F, 0x11, 0x1F, 0x4F, 0x1F, 0x8E, 0x1F, 0xCD, 0x20, 0x0B, 0x20, 0x4A, 0x20, 0x89, 0x20, 0xC7, 0x21, 0x06, 0x21, 0x45, 0x21, 0x84, 0x21, 0xC2, 0x22, 0x01, 0x22, 0x40, 0x22, 0x7F, 0x22, 0xBE, 0x22, 0xFC, 0x23, 0x3B, 0x23, 0x7A, 0x23, 0xB9, 0x23, 0xF8, 0x24, 0x37, 0x24, 0x76, 0x24, 0xB5, 0x24, 0xF4, 0x25, 0x33, 0x25, 0x72, 0x25, 0xB1, 0x25, 0xF0, 0x26, 0x2F, 0x26, 0x6E, 0x26, 0xAD, 0x26, 0xEC, 0x27, 0x2B, 0x27, 0x6A, 0x27, 0xA9, 0x27, 0xE8, 0x28, 0x28, 0x28, 0x67, 0x28, 0xA6, 0x28, 0xE5, 0x29, 0x24, 0x29, 0x64, 0x29, 0xA3, 0x29, 0xE2, 0x2A, 0x22, 0x2A, 0x61, 0x2A, 0xA0, 0x2A, 0xE0, 0x2B, 0x1F, 0x2B, 0x5E, 0x2B, 0x9E, 0x2B, 0xDD, 0x2C, 0x1D, 0x2C, 0x5C, 0x2C, 0x9C, 0x2C, 0xDB, 0x2D, 0x1B, 0x2D, 0x5B, 0x2D, 0x9A, 0x2D, 0xDA, 0x2E, 0x19, 0x2E, 0x59, 0x2E, 0x99, 0x2E, 0xD8, 0x2F, 0x18, 0x2F, 0x58, 0x2F, 0x98, 0x2F, 0xD7, 0x30, 0x17, 0x30, 0x57, 0x30, 0x97, 0x30, 0xD7, 0x31, 0x16, 0x31, 0x56, 0x31, 0x96, 0x31, 0xD6, 0x32, 0x16, 0x32, 0x56, 0x32, 0x96, 0x32, 0xD6, 0x33, 0x16, 0x33, 0x56, 0x33, 0x96, 0x33, 0xD7, 0x34, 0x17, 0x34, 0x57, 0x34, 0x97, 0x34, 0xD7, 0x35, 0x18, 0x35, 0x58, 0x35, 0x98, 0x35, 0xD8, 0x36, 0x19, 0x36, 0x59, 0x36, 0x9B, 0x36, 0xE2, 0x37, 0x29, 0x37, 0x70, 0x37, 0xB7, 0x37, 0xFE, 0x38, 0x45, 0x38, 0x8C, 0x38, 0xD3, 0x39, 0x1A, 0x39, 0x61, 0x39, 0xA8, 0x39, 0xEF, 0x3A, 0x37, 0x3A, 0x7E, 0x3A, 0xC5, 0x3B, 0x0D, 0x3B, 0x54, 0x3B, 0x9B, 0x3B, 0xE3, 0x3C, 0x2A, 0x3C, 0x72, 0x3C, 0xBA, 0x3D, 0x01, 0x3D, 0x49, 0x3D, 0x90, 0x3D, 0xD8, 0x3E, 0x20, 0x3E, 0x68, 0x3E, 0xAF, 0x3E, 0xF7, 0x3F, 0x3F, 0x3F, 0x87, 0x3F, 0xCF, 0x40, 0x17, 0x40, 0x5F, 0x40, 0xA7, 0x40, 0xEF, 0x41, 0x38, 0x41, 0x80, 0x41, 0xC8, 0x42, 0x10, 0x42, 0x59, 0x42, 0xA1, 0x42, 0xE9, 0x43, 0x32, 0x43, 0x7A, 0x43, 0xC3, 0x44, 0x0B, 0x44, 0x54, 0x44, 0x9D, 0x44, 0xE5, 0x45, 0x2E, 0x45, 0x77, 0x45, 0xBF, 0x46, 0x08, 0x46, 0x51, 0x46, 0x9A, 0x46, 0xE3, 0x47, 0x2C, 0x47, 0x75, 0x47, 0xBE, 0x48, 0x07, 0x48, 0x50, 0x48, 0x99, 0x48, 0xE3, 0x49, 0x2C, 0x49, 0x75, 0x49, 0xBE, 0x4A, 0x08, 0x4A, 0x51, 0x4A, 0x9B, 0x4A, 0xE4, 0x4B, 0x2D, 0x4B, 0x77, 0x4B, 0xC1, 0x4C, 0x0A, 0x4C, 0x54, 0x4C, 0x9D, 0x4C, 0xE7, 0x4D, 0x31, 0x4D, 0x7B, 0x4D, 0xC5, 0x4E, 0x0E, 0x4E, 0x58, 0x4E, 0xA2, 0x4E, 0xEC, 0x4F, 0x36, 0x4F, 0x80, 0x4F, 0xCA, 0x50, 0x15, 0x50, 0x5F, 0x50, 0xA9, 0x50, 0xF3, 0x51, 0x3E, 0x51, 0x88, 0x51, 0xD2, 0x52, 0x1D, 0x52, 0x67, 0x52, 0xB2, 0x52, 0xFC, 0x53, 0x47, 0x53, 0x91, 0x53, 0xDC, 0x54, 0x26, 0x54, 0x71, 0x54, 0xBC, 0x55, 0x06, 0x55, 0x51, 0x55, 0x9C, 0x55, 0xE6, 0x56, 0x31, 0x56, 0x7B, 0x56, 0xC6, 0x57, 0x11, 0x57, 0x5B, 0x57, 0xA6, 0x57, 0xF1, 0x58, 0x3B, 0x58, 0x86, 0x58, 0xD1, 0x59, 0x1B, 0x59, 0x66, 0x59, 0xB1, 0x59, 0xFB, 0x5A, 0x46, 0x5A, 0x91, 0x5A, 0xDB, 0x5B, 0x24, 0x5B, 0x67, 0x5B, 0xAB, 0x5B, 0xEF, 0x5C, 0x33, 0x5C, 0x77, 0x5C, 0xBB, 0x5C, 0xFF, 0x5D, 0x43, 0x5D, 0x87, 0x5D, 0xCB, 0x5E, 0x0F, 0x5E, 0x53, 0x5E, 0x97, 0x5E, 0xDB, 0x5F, 0x1F, 0x5F, 0x63, 0x5F, 0xA7, 0x5F, 0xEB, 0x60, 0x2F, 0x60, 0x73, 0x60, 0xB7, 0x60, 0xFB, 0x61, 0x3F, 0x61, 0x84, 0x61, 0xC8, 0x62, 0x0C, 0x62, 0x50, 0x62, 0x94, 0x62, 0xD8, 0x63, 0x1C, 0x63, 0x61, 0x63, 0xA5, 0x63, 0xE9, 0x64, 0x2D, 0x64, 0x71, 0x64, 0xB6, 0x64, 0xFA, 0x65, 0x3E, 0x65, 0x82, 0x65, 0xC7, 0x66, 0x0B, 0x66, 0x4F, 0x66, 0x93, 0x66, 0xD8, 0x67, 0x1C, 0x67, 0x60, 0x67, 0xA5, 0x67, 0xE9, 0x68, 0x2D, 0x68, 0x71, 0x68, 0xB6, 0x68, 0xFA, 0x69, 0x3E, 0x69, 0x82, 0x69, 0xC7, 0x6A, 0x0B, 0x6A, 0x4F, 0x6A, 0x93, 0x6A, 0xD8, 0x6B, 0x1C, 0x6B, 0x60, 0x6B, 0xA4, 0x6B, 0xE8, 0x6C, 0x2D, 0x6C, 0x71, 0x6C, 0xB5, 0x6C, 0xF9, 0x6D, 0x3E, 0x6D, 0x82, 0x6D, 0xC6, 0x6E, 0x0A, 0x6E, 0x4F, 0x6E, 0x93, 0x6E, 0xD7, 0x6F, 0x1B, 0x6F, 0x5F, 0x6F, 0xA4, 0x6F, 0xE8, 0x70, 0x2C, 0x70, 0x70, 0x70, 0xB5, 0x70, 0xF9, 0x71, 0x3D, 0x71, 0x81, 0x71, 0xC5, 0x72, 0x0A, 0x72, 0x4E, 0x72, 0x92, 0x72, 0xD6, 0x73, 0x1B, 0x73, 0x5F, 0x73, 0xA3, 0x73, 0xE7, 0x74, 0x2C, 0x74, 0x70, 0x74, 0xB4, 0x74, 0xF9, 0x75, 0x3D, 0x75, 0x81, 0x75, 0xC5, 0x76, 0x0A, 0x76, 0x4E, 0x76, 0x92, 0x76, 0xD7, 0x77, 0x1B, 0x77, 0x5F, 0x77, 0xA3, 0x77, 0xE8, 0x78, 0x2C, 0x78, 0x70, 0x78, 0xB5, 0x78, 0xF9, 0x79, 0x3D, 0x79, 0x81, 0x79, 0xC6, 0x7A, 0x0A, 0x7A, 0x4E, 0x7A, 0x93, 0x7A, 0xD7, 0x7B, 0x1B, 0x7B, 0x60, 0x7B, 0xA4, 0x7B, 0xE8, 0x7C, 0x2D, 0x7C, 0x71, 0x7C, 0xB5, 0x7C, 0xFA, 0x7D, 0x3D, 0x7D, 0x81, 0x7D, 0xC4, 0x7E, 0x07, 0x7E, 0x4B, 0x7E, 0x8E, 0x7E, 0xD1, 0x7F, 0x14, 0x7F, 0x58, 0x7F, 0x9B, 0x7F, 0xDE, 0x80, 0x22, 0x80, 0x65, 0x80, 0xA8, 0x80, 0xEB, 0x81, 0x2E, 0x81, 0x72, 0x81, 0xB5, 0x81, 0xF8, 0x82, 0x3B, 0x82, 0x7E, 0x82, 0xC1, 0x83, 0x04, 0x83, 0x47, 0x83, 0x8A, 0x83, 0xCD, 0x84, 0x0F, 0x84, 0x52, 0x84, 0x95, 0x84, 0xD8, 0x85, 0x1B, 0x85, 0x5E, 0x85, 0xA0, 0x85, 0xE3, 0x86, 0x26, 0x86, 0x68, 0x86, 0xAB, 0x86, 0xEE, 0x87, 0x30, 0x87, 0x73, 0x87, 0xB5, 0x87, 0xF8, 0x88, 0x3A, 0x88, 0x7D, 0x88, 0xBF, 0x89, 0x02, 0x89, 0x44, 0x89, 0x86, 0x89, 0xC9, 0x8A, 0x0B, 0x8A, 0x4D, 0x8A, 0x8F, 0x8A, 0xD2, 0x8B, 0x14, 0x8B, 0x56, 0x8B, 0x98, 0x8B, 0xDA, 0x8C, 0x1C, 0x8C, 0x5F, 0x8C, 0xA1, 0x8C, 0xE3, 0x8D, 0x25, 0x8D, 0x67, 0x8D, 0xA9, 0x8D, 0xEB, 0x8E, 0x2D, 0x8E, 0x6E, 0x8E, 0xB0, 0x8E, 0xF2, 0x8F, 0x34, 0x8F, 0x76, 0x8F, 0xB8, 0x8F, 0xF9, 0x90, 0x3B, 0x90, 0x7D, 0x90, 0xBE, 0x91, 0x00, 0x91, 0x42, 0x91, 0x83, 0x91, 0xC5, 0x92, 0x06, 0x92, 0x48, 0x92, 0x89, 0x92, 0xCB, 0x93, 0x0C, 0x93, 0x4D, 0x93, 0x8F, 0x93, 0xD0, 0x94, 0x11, 0x94, 0x53, 0x94, 0x94, 0x94, 0xD5, 0x95, 0x16, 0x95, 0x58, 0x95, 0x99, 0x95, 0xDA, 0x96, 0x1B, 0x96, 0x5C, 0x96, 0x9D, 0x96, 0xDE, 0x97, 0x1F, 0x97, 0x60, 0x97, 0xA1, 0x97, 0xE2, 0x98, 0x22, 0x98, 0x63, 0x98, 0xA4, 0x98, 0xE5, 0x99, 0x26, 0x99, 0x66, 0x99, 0xA7, 0x99, 0xE8, 0x9A, 0x28, 0x9A, 0x69, 0x9A, 0xA9, 0x9A, 0xEA, 0x9B, 0x2A, 0x9B, 0x6B, 0x9B, 0xAB, 0x9B, 0xEC, 0x9C, 0x2C, 0x9C, 0x6D, 0x9C, 0xAD, 0x9C, 0xED, 0x9D, 0x2E, 0x9D, 0x6E, 0x9D, 0xAE, 0x9D, 0xEF, 0x9E, 0x32, 0x9E, 0x78, 0x9E, 0xBD, 0x9F, 0x03, 0x9F, 0x49, 0x9F, 0x8E, 0x9F, 0xD3, 0xA0, 0x19, 0xA0, 0x5E, 0xA0, 0xA4, 0xA0, 0xE9, 0xA1, 0x2E, 0xA1, 0x74, 0xA1, 0xB9, 0xA1, 0xFE, 0xA2, 0x44, 0xA2, 0x89, 0xA2, 0xCE, 0xA3, 0x13, 0xA3, 0x58, 0xA3, 0x9E, 0xA3, 0xE3, 0xA4, 0x28, 0xA4, 0x6D, 0xA4, 0xB2, 0xA4, 0xF7, 0xA5, 0x3C, 0xA5, 0x81, 0xA5, 0xC6, 0xA6, 0x0B, 0xA6, 0x50, 0xA6, 0x95, 0xA6, 0xDA, 0xA7, 0x1E, 0xA7, 0x63, 0xA7, 0xA8, 0xA7, 0xED, 0xA8, 0x32, 0xA8, 0x76, 0xA8, 0xBB, 0xA9, 0x00, 0xA9, 0x44, 0xA9, 0x89, 0xA9, 0xCE, 0xAA, 0x12, 0xAA, 0x57, 0xAA, 0x9B, 0xAA, 0xE0, 0xAB, 0x24, 0xAB, 0x69, 0xAB, 0xAD, 0xAB, 0xF2, 0xAC, 0x36, 0xAC, 0x7B, 0xAC, 0xBF, 0xAD, 0x04, 0xAD, 0x48, 0xAD, 0x8D, 0xAD, 0xD1, 0xAE, 0x16, 0xAE, 0x5A, 0xAE, 0x9F, 0xAE, 0xE3, 0xAF, 0x28, 0xAF, 0x6C, 0xAF, 0xB1, 0xAF, 0xF5, 0xB0, 0x3A, 0xB0, 0x7E, 0xB0, 0xC3, 0xB1, 0x07, 0xB1, 0x4C, 0xB1, 0x90, 0xB1, 0xD5, 0xB2, 0x19, 0xB2, 0x5E, 0xB2, 0xA2, 0xB2, 0xE7, 0xB3, 0x2C, 0xB3, 0x70, 0xB3, 0xB5, 0xB3, 0xF9, 0xB4, 0x3E, 0xB4, 0x82, 0xB4, 0xC7, 0xB5, 0x0B, 0xB5, 0x50, 0xB5, 0x94, 0xB5, 0xD9, 0xB6, 0x1E, 0xB6, 0x62, 0xB6, 0xA7, 0xB6, 0xEB, 0xB7, 0x30, 0xB7, 0x75, 0xB7, 0xB9, 0xB7, 0xFE, 0xB8, 0x42, 0xB8, 0x87, 0xB8, 0xCC, 0xB9, 0x10, 0xB9, 0x55, 0xB9, 0x9A, 0xB9, 0xDF, 0xBA, 0x23, 0xBA, 0x68, 0xBA, 0xAD, 0xBA, 0xF1, 0xBB, 0x36, 0xBB, 0x7B, 0xBB, 0xC0, 0xBC, 0x05, 0xBC, 0x49, 0xBC, 0x8E, 0xBC, 0xD3, 0xBD, 0x18, 0xBD, 0x5D, 0xBD, 0xA1, 0xBD, 0xE6, 0xBE, 0x2B, 0xBE, 0x70, 0xBE, 0xB5, 0xBE, 0xFA, 0xBF, 0x3F, 0xBF, 0x84, 0xBF, 0xC9, 0xC0, 0x0D, 0xC0, 0x53, 0xC0, 0x9A, 0xC0, 0xE3, 0xC1, 0x2C, 0xC1, 0x75, 0xC1, 0xBE, 0xC2, 0x06, 0xC2, 0x4F, 0xC2, 0x98, 0xC2, 0xE1, 0xC3, 0x2A, 0xC3, 0x73, 0xC3, 0xBC, 0xC4, 0x05, 0xC4, 0x4E, 0xC4, 0x97, 0xC4, 0xE0, 0xC5, 0x29, 0xC5, 0x72, 0xC5, 0xBB, 0xC6, 0x04, 0xC6, 0x4D, 0xC6, 0x96, 0xC6, 0xDF, 0xC7, 0x28, 0xC7, 0x71, 0xC7, 0xBA, 0xC8, 0x03, 0xC8, 0x4D, 0xC8, 0x96, 0xC8, 0xDF, 0xC9, 0x28, 0xC9, 0x71, 0xC9, 0xBA, 0xCA, 0x04, 0xCA, 0x4D, 0xCA, 0x96, 0xCA, 0xDF, 0xCB, 0x28, 0xCB, 0x72, 0xCB, 0xBB, 0xCC, 0x04, 0xCC, 0x4D, 0xCC, 0x97, 0xCC, 0xE0, 0xCD, 0x29, 0xCD, 0x72, 0xCD, 0xBC, 0xCE, 0x05, 0xCE, 0x4E, 0xCE, 0x97, 0xCE, 0xE1, 0xCF, 0x2A, 0xCF, 0x73, 0xCF, 0xBC, 0xD0, 0x06, 0xD0, 0x4F, 0xD0, 0x98, 0xD0, 0xE1, 0xD1, 0x2A, 0xD1, 0x74, 0xD1, 0xBD, 0xD2, 0x06, 0xD2, 0x4F, 0xD2, 0x98, 0xD2, 0xE1, 0xD3, 0x2B, 0xD3, 0x74, 0xD3, 0xBD, 0xD4, 0x06, 0xD4, 0x4F, 0xD4, 0x98, 0xD4, 0xE1, 0xD5, 0x2B, 0xD5, 0x74, 0xD5, 0xBD, 0xD6, 0x06, 0xD6, 0x4F, 0xD6, 0x98, 0xD6, 0xE1, 0xD7, 0x2A, 0xD7, 0x73, 0xD7, 0xBC, 0xD8, 0x06, 0xD8, 0x4F, 0xD8, 0x98, 0xD8, 0xE1, 0xD9, 0x2A, 0xD9, 0x73, 0xD9, 0xBC, 0xDA, 0x05, 0xDA, 0x4E, 0xDA, 0x98, 0xDA, 0xE1, 0xDB, 0x2A, 0xDB, 0x73, 0xDB, 0xBC, 0xDC, 0x05, 0xDC, 0x4E, 0xDC, 0x97, 0xDC, 0xE0, 0xDD, 0x2A, 0xDD, 0x73, 0xDD, 0xBC, 0xDE, 0x05, 0xDE, 0x4E, 0xDE, 0x97, 0xDE, 0xE0, 0xDF, 0x29, 0xDF, 0x72, 0xDF, 0xBB, 0xE0, 0x05, 0xE0, 0x4E, 0xE0, 0x97, 0xE0, 0xE0, 0xE1, 0x29, 0xE1, 0x72, 0xE1, 0xBB, 0xE2, 0x04, 0xE2, 0x4D, 0xE2, 0x96, 0xE2, 0xE0, 0xE3, 0x29, 0xE3, 0x72, 0xE3, 0xBB, 0xE4, 0x04, 0xE4, 0x4D, 0xE4, 0x96, 0xE4, 0xDC, 0xE5, 0x18, 0xE5, 0x4E, 0xE5, 0x84, 0xE5, 0xBA, 0xE5, 0xEF, 0xE6, 0x25, 0xE6, 0x5B, 0xE6, 0x91, 0xE6, 0xC7, 0xE6, 0xFD, 0xE7, 0x33, 0xE7, 0x69, 0xE7, 0x9F, 0xE7, 0xD5, 0xE8, 0x0B, 0xE8, 0x41, 0xE8, 0x77, 0xE8, 0xAD, 0xE8, 0xE3, 0xE9, 0x18, 0xE9, 0x4E, 0xE9, 0x84, 0xE9, 0xBA, 0xE9, 0xF0, 0xEA, 0x26, 0xEA, 0x5C, 0xEA, 0x93, 0xEA, 0xC9, 0xEA, 0xFF, 0xEB, 0x35, 0xEB, 0x6B, 0xEB, 0xA1, 0xEB, 0xD7, 0xEC, 0x0D, 0xEC, 0x43, 0xEC, 0x79, 0xEC, 0xAF, 0xEC, 0xE5, 0xED, 0x1B, 0xED, 0x51, 0xED, 0x87, 0xED, 0xBE, 0xED, 0xF4, 0xEE, 0x2A, 0xEE, 0x60, 0xEE, 0x96, 0xEE, 0xCC, 0xEF, 0x02, 0xEF, 0x38, 0xEF, 0x6F, 0xEF, 0xA5, 0xEF, 0xDB, 0xF0, 0x11, 0xF0, 0x47, 0xF0, 0x7D, 0xF0, 0xB3, 0xF0, 0xEA, 0xF1, 0x20, 0xF1, 0x56, 0xF1, 0x8C, 0xF1, 0xC2, 0xF1, 0xF9, 0xF2, 0x2F, 0xF2, 0x65, 0xF2, 0x9B, 0xF2, 0xD2, 0xF3, 0x08, 0xF3, 0x3E, 0xF3, 0x74, 0xF3, 0xAB, 0xF3, 0xE1, 0xF4, 0x17, 0xF4, 0x4D, 0xF4, 0x84, 0xF4, 0xBA, 0xF4, 0xF0, 0xF5, 0x26, 0xF5, 0x5D, 0xF5, 0x93, 0xF5, 0xC9, 0xF6, 0x00, 0xF6, 0x36, 0xF6, 0x6C, 0xF6, 0xA3, 0xF6, 0xD9, 0xF7, 0x0F, 0xF7, 0x46, 0xF7, 0x7C, 0xF7, 0xB2, 0xF7, 0xE9, 0xF8, 0x1F, 0xF8, 0x56, 0xF8, 0x8C, 0xF8, 0xC2, 0xF8, 0xF9, 0xF9, 0x2F, 0xF9, 0x66, 0xF9, 0x9C, 0xF9, 0xD2, 0xFA, 0x09, 0xFA, 0x3F, 0xFA, 0x76, 0xFA, 0xAC, 0xFA, 0xE3, 0xFB, 0x19, 0xFB, 0x4F, 0xFB, 0x86, 0xFB, 0xBC, 0xFB, 0xF3, 0xFC, 0x29, 0xFC, 0x60, 0xFC, 0x96, 0xFC, 0xCD, 0xFD, 0x03, 0xFD, 0x3A, 0xFD, 0x70, 0xFD, 0xA7, 0xFD, 0xDD, 0xFE, 0x14, 0xFE, 0x4A, 0xFE, 0x81, 0xFE, 0xB8, 0xFE, 0xEE, 0xFF, 0x25, 0xFF, 0x5B, 0xFF, 0x92, 0xFF, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x34, 0x00, 0x68, 0x00, 0x9D, 0x00, 0xD1, 0x01, 0x05, 0x01, 0x39, 0x01, 0x6D, 0x01, 0xA2, 0x01, 0xD6, 0x02, 0x0A, 0x02, 0x3E, 0x02, 0x72, 0x02, 0xA7, 0x02, 0xDB, 0x03, 0x0F, 0x03, 0x43, 0x03, 0x78, 0x03, 0xAC, 0x03, 0xE0, 0x04, 0x15, 0x04, 0x49, 0x04, 0x7D, 0x04, 0xB1, 0x04, 0xE6, 0x05, 0x1A, 0x05, 0x4E, 0x05, 0x83, 0x05, 0xB7, 0x05, 0xEB, 0x06, 0x20, 0x06, 0x54, 0x06, 0x88, 0x06, 0xBD, 0x06, 0xF1, 0x07, 0x26, 0x07, 0x5A, 0x07, 0x8E, 0x07, 0xC3, 0x07, 0xF7, 0x08, 0x2C, 0x08, 0x60, 0x08, 0x94, 0x08, 0xC9, 0x08, 0xFD, 0x09, 0x32, 0x09, 0x66, 0x09, 0x9B, 0x09, 0xCF, 0x0A, 0x04, 0x0A, 0x38, 0x0A, 0x6C, 0x0A, 0xA1, 0x0A, 0xD5, 0x0B, 0x0A, 0x0B, 0x3E, 0x0B, 0x73, 0x0B, 0xA7, 0x0B, 0xDC, 0x0C, 0x11, 0x0C, 0x45, 0x0C, 0x7A, 0x0C, 0xAE, 0x0C, 0xE3, 0x0D, 0x17, 0x0D, 0x4C, 0x0D, 0x80, 0x0D, 0xB5, 0x0D, 0xEA, 0x0E, 0x1E, 0x0E, 0x53, 0x0E, 0x87, 0x0E, 0xBC, 0x0E, 0xF1, 0x0F, 0x25, 0x0F, 0x5A, 0x0F, 0x8F, 0x0F, 0xC3, 0x0F, 0xF8, 0x10, 0x2C, 0x10, 0x61, 0x10, 0x96, 0x10, 0xCA, 0x10, 0xFF, 0x11, 0x34, 0x11, 0x69, 0x11, 0x9D, 0x11, 0xD2, 0x12, 0x07, 0x12, 0x3B, 0x12, 0x70, 0x12, 0xA5, 0x12, 0xD9, 0x13, 0x0E, 0x13, 0x43, 0x13, 0x78, 0x13, 0xAC, 0x13, 0xE1, 0x14, 0x16, 0x14, 0x4B, 0x14, 0x80, 0x14, 0xB4, 0x14, 0xE9, 0x15, 0x1E, 0x15, 0x53, 0x15, 0x87, 0x15, 0xBC, 0x15, 0xF1, 0x16, 0x26, 0x16, 0x5B, 0x16, 0x90, 0x16, 0xC4, 0x16, 0xF9, 0x17, 0x2E, 0x17, 0x63, 0x17, 0x98, 0x17, 0xCD, 0x18, 0x02, 0x18, 0x37, 0x18, 0x6B, 0x18, 0xA0, 0x18, 0xD5, 0x19, 0x0A, 0x19, 0x3F, 0x19, 0x74, 0x19, 0xA9, 0x19, 0xDE, 0x1A, 0x13, 0x1A, 0x49, 0x1A, 0x87, 0x1A, 0xC4, 0x1B, 0x02, 0x1B, 0x40, 0x1B, 0x7E, 0x1B, 0xBB, 0x1B, 0xF9, 0x1C, 0x37, 0x1C, 0x75, 0x1C, 0xB2, 0x1C, 0xF0, 0x1D, 0x2E, 0x1D, 0x6C, 0x1D, 0xAA, 0x1D, 0xE8, 0x1E, 0x25, 0x1E, 0x63, 0x1E, 0xA1, 0x1E, 0xDF, 0x1F, 0x1D, 0x1F, 0x5B, 0x1F, 0x99, 0x1F, 0xD7, 0x20, 0x15, 0x20, 0x52, 0x20, 0x90, 0x20, 0xCE, 0x21, 0x0C, 0x21, 0x4A, 0x21, 0x88, 0x21, 0xC6, 0x22, 0x05, 0x22, 0x43, 0x22, 0x81, 0x22, 0xBF, 0x22, 0xFD, 0x23, 0x3B, 0x23, 0x79, 0x23, 0xB7, 0x23, 0xF6, 0x24, 0x34, 0x24, 0x72, 0x24, 0xB0, 0x24, 0xEE, 0x25, 0x2D, 0x25, 0x6B, 0x25, 0xA9, 0x25, 0xE8, 0x26, 0x26, 0x26, 0x64, 0x26, 0xA3, 0x26, 0xE1, 0x27, 0x1F, 0x27, 0x5E, 0x27, 0x9C, 0x27, 0xDB, 0x28, 0x19, 0x28, 0x57, 0x28, 0x96, 0x28, 0xD4, 0x29, 0x13, 0x29, 0x51, 0x29, 0x90, 0x29, 0xCE, 0x2A, 0x0D, 0x2A, 0x4B, 0x2A, 0x8A, 0x2A, 0xC8, 0x2B, 0x07, 0x2B, 0x46, 0x2B, 0x84, 0x2B, 0xC3, 0x2C, 0x01, 0x2C, 0x40, 0x2C, 0x7F, 0x2C, 0xBD, 0x2C, 0xFC, 0x2D, 0x3B, 0x2D, 0x79, 0x2D, 0xB8, 0x2D, 0xF7, 0x2E, 0x36, 0x2E, 0x74, 0x2E, 0xB3, 0x2E, 0xF2, 0x2F, 0x31, 0x2F, 0x6F, 0x2F, 0xAE, 0x2F, 0xED, 0x30, 0x2C, 0x30, 0x6B, 0x30, 0xAA, 0x30, 0xE8, 0x31, 0x27, 0x31, 0x66, 0x31, 0xA5, 0x31, 0xE4, 0x32, 0x23, 0x32, 0x62, 0x32, 0xA1, 0x32, 0xE0, 0x33, 0x1F, 0x33, 0x5E, 0x33, 0x9D, 0x33, 0xDC, 0x34, 0x1B, 0x34, 0x5A, 0x34, 0x99, 0x34, 0xD8, 0x35, 0x17, 0x35, 0x56, 0x35, 0x95, 0x35, 0xD5, 0x36, 0x14, 0x36, 0x53, 0x36, 0x92, 0x36, 0xD1, 0x37, 0x11, 0x37, 0x50, 0x37, 0x8F, 0x37, 0xCE, 0x38, 0x0E, 0x38, 0x4D, 0x38, 0x8C, 0x38, 0xCB, 0x39, 0x0B, 0x39, 0x4A, 0x39, 0x89, 0x39, 0xC7, 0x3A, 0x05, 0x3A, 0x43, 0x3A, 0x81, 0x3A, 0xBF, 0x3A, 0xFC, 0x3B, 0x3A, 0x3B, 0x78, 0x3B, 0xB6, 0x3B, 0xF4, 0x3C, 0x32, 0x3C, 0x70, 0x3C, 0xAE, 0x3C, 0xEC, 0x3D, 0x2A, 0x3D, 0x68, 0x3D, 0xA6, 0x3D, 0xE4, 0x3E, 0x22, 0x3E, 0x61, 0x3E, 0x9F, 0x3E, 0xDD, 0x3F, 0x1B, 0x3F, 0x59, 0x3F, 0x97, 0x3F, 0xD5, 0x40, 0x14, 0x40, 0x52, 0x40, 0x90, 0x40, 0xCE, 0x41, 0x0C, 0x41, 0x4B, 0x41, 0x89, 0x41, 0xC7, 0x42, 0x05, 0x42, 0x44, 0x42, 0x82, 0x42, 0xC0, 0x42, 0xFF, 0x43, 0x3D, 0x43, 0x7B, 0x43, 0xBA, 0x43, 0xF8, 0x44, 0x36, 0x44, 0x75, 0x44, 0xB3, 0x44, 0xF2, 0x45, 0x30, 0x45, 0x6F, 0x45, 0xAD, 0x45, 0xEC, 0x46, 0x2A, 0x46, 0x69, 0x46, 0xA7, 0x46, 0xE6, 0x47, 0x24, 0x47, 0x63, 0x47, 0xA1, 0x47, 0xE0, 0x48, 0x1F, 0x48, 0x5D, 0x48, 0x9C, 0x48, 0xDA, 0x49, 0x19, 0x49, 0x58, 0x49, 0x96, 0x49, 0xD5, 0x4A, 0x14, 0x4A, 0x52, 0x4A, 0x91, 0x4A, 0xD0, 0x4B, 0x0F, 0x4B, 0x4D, 0x4B, 0x8C, 0x4B, 0xCB, 0x4C, 0x0A, 0x4C, 0x48, 0x4C, 0x87, 0x4C, 0xC6, 0x4D, 0x05, 0x4D, 0x44, 0x4D, 0x83, 0x4D, 0xC2, 0x4E, 0x01, 0x4E, 0x3F, 0x4E, 0x7E, 0x4E, 0xBD, 0x4E, 0xFC, 0x4F, 0x3B, 0x4F, 0x7A, 0x4F, 0xB9, 0x4F, 0xF8, 0x50, 0x38, 0x50, 0x77, 0x50, 0xB6, 0x50, 0xF5, 0x51, 0x34, 0x51, 0x73, 0x51, 0xB2, 0x51, 0xF1, 0x52, 0x31, 0x52, 0x70, 0x52, 0xAF, 0x52, 0xEE, 0x53, 0x2D, 0x53, 0x6D, 0x53, 0xAC, 0x53, 0xEB, 0x54, 0x2A, 0x54, 0x6A, 0x54, 0xA9, 0x54, 0xE8, 0x55, 0x28, 0x55, 0x67, 0x55, 0xA7, 0x55, 0xE6, 0x56, 0x25, 0x56, 0x65, 0x56, 0xA4, 0x56, 0xE4, 0x57, 0x23, 0x57, 0x63, 0x57, 0xA2, 0x57, 0xE2, 0x58, 0x21, 0x58, 0x61, 0x58, 0xA0, 0x58, 0xDE, 0x59, 0x1B, 0x59, 0x57, 0x59, 0x93, 0x59, 0xCF, 0x5A, 0x0C, 0x5A, 0x48, 0x5A, 0x84, 0x5A, 0xC0, 0x5A, 0xFC, 0x5B, 0x38, 0x5B, 0x74, 0x5B, 0xB0, 0x5B, 0xEC, 0x5C, 0x28, 0x5C, 0x64, 0x5C, 0xA0, 0x5C, 0xDC, 0x5D, 0x18, 0x5D, 0x54, 0x5D, 0x90, 0x5D, 0xCC, 0x5E, 0x07, 0x5E, 0x43, 0x5E, 0x7F, 0x5E, 0xBB, 0x5E, 0xF6, 0x5F, 0x32, 0x5F, 0x6E, 0x5F, 0xA9, 0x5F, 0xE5, 0x60, 0x20, 0x60, 0x5C, 0x60, 0x98, 0x60, 0xD3, 0x61, 0x0F, 0x61, 0x4A, 0x61, 0x85, 0x61, 0xC1, 0x61, 0xFC, 0x62, 0x38, 0x62, 0x73, 0x62, 0xAE, 0x62, 0xEA, 0x63, 0x25, 0x63, 0x60, 0x63, 0x9C, 0x63, 0xD7, 0x64, 0x12, 0x64, 0x4D, 0x64, 0x88, 0x64, 0xC4, 0x64, 0xFF, 0x65, 0x3A, 0x65, 0x75, 0x65, 0xB0, 0x65, 0xEB, 0x66, 0x26, 0x66, 0x62, 0x66, 0x9D, 0x66, 0xD8, 0x67, 0x13, 0x67, 0x4E, 0x67, 0x89, 0x67, 0xC4, 0x67, 0xFF, 0x68, 0x39, 0x68, 0x74, 0x68, 0xAF, 0x68, 0xEA, 0x69, 0x25, 0x69, 0x60, 0x69, 0x9B, 0x69, 0xD6, 0x6A, 0x10, 0x6A, 0x4B, 0x6A, 0x86, 0x6A, 0xC1, 0x6A, 0xFB, 0x6B, 0x36, 0x6B, 0x71, 0x6B, 0xAC, 0x6B, 0xE6, 0x6C, 0x21, 0x6C, 0x5C, 0x6C, 0x96, 0x6C, 0xD1, 0x6D, 0x0B, 0x6D, 0x46, 0x6D, 0x80, 0x6D, 0xBB, 0x6D, 0xF5, 0x6E, 0x30, 0x6E, 0x6A, 0x6E, 0xA5, 0x6E, 0xDF, 0x6F, 0x1A, 0x6F, 0x54, 0x6F, 0x8E, 0x6F, 0xC9, 0x70, 0x03, 0x70, 0x3E, 0x70, 0x78, 0x70, 0xB2, 0x70, 0xED, 0x71, 0x27, 0x71, 0x61, 0x71, 0x9B, 0x71, 0xD6, 0x72, 0x10, 0x72, 0x4A, 0x72, 0x84, 0x72, 0xBE, 0x72, 0xF8, 0x73, 0x33, 0x73, 0x6D, 0x73, 0xA7, 0x73, 0xE1, 0x74, 0x1B, 0x74, 0x55, 0x74, 0x8F, 0x74, 0xC9, 0x75, 0x03, 0x75, 0x3D, 0x75, 0x77, 0x75, 0xB1, 0x75, 0xEA, 0x76, 0x25, 0x76, 0x61, 0x76, 0xA1, 0x76, 0xE1, 0x77, 0x21, 0x77, 0x61, 0x77, 0xA0, 0x77, 0xE0, 0x78, 0x20, 0x78, 0x5F, 0x78, 0x9F, 0x78, 0xDF, 0x79, 0x1E, 0x79, 0x5E, 0x79, 0x9E, 0x79, 0xDD, 0x7A, 0x1D, 0x7A, 0x5C, 0x7A, 0x9C, 0x7A, 0xDB, 0x7B, 0x1A, 0x7B, 0x5A, 0x7B, 0x99, 0x7B, 0xD8, 0x7C, 0x18, 0x7C, 0x57, 0x7C, 0x96, 0x7C, 0xD5, 0x7D, 0x15, 0x7D, 0x54, 0x7D, 0x93, 0x7D, 0xD2, 0x7E, 0x11, 0x7E, 0x50, 0x7E, 0x8F, 0x7E, 0xCE, 0x7F, 0x0D, 0x7F, 0x4C, 0x7F, 0x8B, 0x7F, 0xCA, 0x80, 0x09, 0x80, 0x48, 0x80, 0x87, 0x80, 0xC6, 0x81, 0x04, 0x81, 0x43, 0x81, 0x82, 0x81, 0xC1, 0x81, 0xFF, 0x82, 0x3E, 0x82, 0x7D, 0x82, 0xBB, 0x82, 0xFA, 0x83, 0x39, 0x83, 0x77, 0x83, 0xB6, 0x83, 0xF4, 0x84, 0x33, 0x84, 0x71, 0x84, 0xAF, 0x84, 0xEE, 0x85, 0x2C, 0x85, 0x6A, 0x85, 0xA9, 0x85, 0xE7, 0x86, 0x25, 0x86, 0x63, 0x86, 0xA2, 0x86, 0xE0, 0x87, 0x1E, 0x87, 0x5C, 0x87, 0x9A, 0x87, 0xD8, 0x88, 0x16, 0x88, 0x54, 0x88, 0x92, 0x88, 0xCF, 0x89, 0x0D, 0x89, 0x4B, 0x89, 0x89, 0x89, 0xC6, 0x8A, 0x04, 0x8A, 0x42, 0x8A, 0x7F, 0x8A, 0xBD, 0x8A, 0xFB, 0x8B, 0x38, 0x8B, 0x76, 0x8B, 0xB3, 0x8B, 0xF0, 0x8C, 0x2E, 0x8C, 0x6B, 0x8C, 0xA9, 0x8C, 0xE6, 0x8D, 0x23, 0x8D, 0x60, 0x8D, 0x9D, 0x8D, 0xDB, 0x8E, 0x18, 0x8E, 0x55, 0x8E, 0x92, 0x8E, 0xCF, 0x8F, 0x0C, 0x8F, 0x49, 0x8F, 0x86, 0x8F, 0xC3, 0x90, 0x00, 0x90, 0x3C, 0x90, 0x79, 0x90, 0xB6, 0x90, 0xF3, 0x91, 0x30, 0x91, 0x6C, 0x91, 0xA9, 0x91, 0xE5, 0x92, 0x22, 0x92, 0x5F, 0x92, 0x9B, 0x92, 0xD8, 0x93, 0x14, 0x93, 0x51, 0x93, 0x8D, 0x93, 0xC9, 0x94, 0x06, 0x94, 0x42, 0x94, 0x7E, 0x94, 0xBB, 0x94, 0xF7, 0x95, 0x34, 0x95, 0x77, 0x95, 0xBF, 0x96, 0x08, 0x96, 0x50, 0x96, 0x98, 0x96, 0xE0, 0x97, 0x29, 0x97, 0x71, 0x97, 0xB9, 0x98, 0x01, 0x98, 0x49, 0x98, 0x91, 0x98, 0xD9, 0x99, 0x21, 0x99, 0x69, 0x99, 0xB1, 0x99, 0xF9, 0x9A, 0x40, 0x9A, 0x88, 0x9A, 0xD0, 0x9B, 0x18, 0x9B, 0x5F, 0x9B, 0xA7, 0x9B, 0xEF, 0x9C, 0x36, 0x9C, 0x7E, 0x9C, 0xC6, 0x9D, 0x0D, 0x9D, 0x55, 0x9D, 0x9C, 0x9D, 0xE3, 0x9E, 0x2B, 0x9E, 0x72, 0x9E, 0xBA, 0x9F, 0x01, 0x9F, 0x48, 0x9F, 0x90, 0x9F, 0xD7, 0xA0, 0x1E, 0xA0, 0x65, 0xA0, 0xAC, 0xA0, 0xF4, 0xA1, 0x3B, 0xA1, 0x82, 0xA1, 0xC9, 0xA2, 0x10, 0xA2, 0x57, 0xA2, 0x9E, 0xA2, 0xE5, 0xA3, 0x2C, 0xA3, 0x73, 0xA3, 0xBA, 0xA4, 0x01, 0xA4, 0x48, 0xA4, 0x8F, 0xA4, 0xD5, 0xA5, 0x1C, 0xA5, 0x63, 0xA5, 0xAA, 0xA5, 0xF1, 0xA6, 0x38, 0xA6, 0x7E, 0xA6, 0xC5, 0xA7, 0x0C, 0xA7, 0x53, 0xA7, 0x99, 0xA7, 0xE0, 0xA8, 0x27, 0xA8, 0x6D, 0xA8, 0xB4, 0xA8, 0xFA, 0xA9, 0x41, 0xA9, 0x88, 0xA9, 0xCE, 0xAA, 0x15, 0xAA, 0x5B, 0xAA, 0xA2, 0xAA, 0xE8, 0xAB, 0x2F, 0xAB, 0x75, 0xAB, 0xBB, 0xAC, 0x02, 0xAC, 0x48, 0xAC, 0x8E, 0xAC, 0xD5, 0xAD, 0x1B, 0xAD, 0x62, 0xAD, 0xA8, 0xAD, 0xEE, 0xAE, 0x35, 0xAE, 0x7B, 0xAE, 0xC2, 0xAF, 0x09, 0xAF, 0x4F, 0xAF, 0x96, 0xAF, 0xDC, 0xB0, 0x23, 0xB0, 0x6A, 0xB0, 0xB0, 0xB0, 0xF7, 0xB1, 0x3E, 0xB1, 0x85, 0xB1, 0xCB, 0xB2, 0x12, 0xB2, 0x59, 0xB2, 0xA0, 0xB2, 0xE7, 0xB3, 0x2E, 0xB3, 0x75, 0xB3, 0xBC, 0xB4, 0x03, 0xB4, 0x4A, 0xB4, 0x91, 0xB4, 0xD8, 0xB5, 0x1F, 0xB5, 0x66, 0xB5, 0xAD, 0xB5, 0xF4, 0xB6, 0x3B, 0xB6, 0x83, 0xB6, 0xCA, 0xB7, 0x11, 0xB7, 0x58, 0xB7, 0xA0, 0xB7, 0xE7, 0xB8, 0x2E, 0xB8, 0x76, 0xB8, 0xBE, 0xB9, 0x0C, 0xB9, 0x5D, 0xB9, 0xAF, 0xBA, 0x00, 0xBA, 0x51, 0xBA, 0xA3, 0xBA, 0xF4, 0xBB, 0x46, 0xBB, 0x97, 0xBB, 0xE9, 0xBC, 0x3A, 0xBC, 0x8C, 0xBC, 0xDD, 0xBD, 0x2F, 0xBD, 0x81, 0xBD, 0xD2, 0xBE, 0x24, 0xBE, 0x76, 0xBE, 0xC7, 0xBF, 0x19, 0xBF, 0x6B, 0xBF, 0xBD, 0xC0, 0x0F, 0xC0, 0x61, 0xC0, 0xB3, 0xC1, 0x04, 0xC1, 0x56, 0xC1, 0xA8, 0xC1, 0xFA, 0xC2, 0x4D, 0xC2, 0x9F, 0xC2, 0xF1, 0xC3, 0x43, 0xC3, 0x95, 0xC3, 0xE7, 0xC4, 0x39, 0xC4, 0x8C, 0xC4, 0xDE, 0xC5, 0x30, 0xC5, 0x83, 0xC5, 0xD5, 0xC6, 0x27, 0xC6, 0x7A, 0xC6, 0xCC, 0xC7, 0x1F, 0xC7, 0x71, 0xC7, 0xC4, 0xC8, 0x16, 0xC8, 0x69, 0xC8, 0xBB, 0xC9, 0x0E, 0xC9, 0x61, 0xC9, 0xB3, 0xCA, 0x06, 0xCA, 0x59, 0xCA, 0xAC, 0xCA, 0xFE, 0xCB, 0x51, 0xCB, 0xA4, 0xCB, 0xF7, 0xCC, 0x4A, 0xCC, 0x9D, 0xCC, 0xF0, 0xCD, 0x43, 0xCD, 0x96, 0xCD, 0xE9, 0xCE, 0x3C, 0xCE, 0x90, 0xCE, 0xE3, 0xCF, 0x36, 0xCF, 0x89, 0xCF, 0xDD, 0xD0, 0x30, 0xD0, 0x83, 0xD0, 0xD6, 0xD1, 0x2A, 0xD1, 0x7D, 0xD1, 0xD1, 0xD2, 0x24, 0xD2, 0x78, 0xD2, 0xCB, 0xD3, 0x1F, 0xD3, 0x72, 0xD3, 0xC6, 0xD4, 0x19, 0xD4, 0x6D, 0xD4, 0xC1, 0xD5, 0x14, 0xD5, 0x68, 0xD5, 0xBC, 0xD6, 0x0F, 0xD6, 0x63, 0xD6, 0xB7, 0xD7, 0x0B, 0xD7, 0x5F, 0xD7, 0xB3, 0xD8, 0x06, 0xD8, 0x5A, 0xD8, 0xAE, 0xD9, 0x02, 0xD9, 0x56, 0xD9, 0xAA, 0xD9, 0xFE, 0xDA, 0x52, 0xDA, 0xA6, 0xDA, 0xFA, 0xDB, 0x4E, 0xDB, 0xA3, 0xDB, 0xF7, 0xDC, 0x4B, 0xDC, 0x9F, 0xDC, 0xF3, 0xDD, 0x48, 0xDD, 0x9C, 0xDD, 0xF0, 0xDE, 0x45, 0xDE, 0x99, 0xDE, 0xED, 0xDF, 0x42, 0xDF, 0x96, 0xDF, 0xEB, 0xE0, 0x3F, 0xE0, 0x94, 0xE0, 0xE9, 0xE1, 0x3D, 0xE1, 0x92, 0xE1, 0xE7, 0xE2, 0x3B, 0xE2, 0x79, 0xE2, 0xB3, 0xE2, 0xEE, 0xE3, 0x28, 0xE3, 0x62, 0xE3, 0x9C, 0xE3, 0xD7, 0xE4, 0x11, 0xE4, 0x4B, 0xE4, 0x86, 0xE4, 0xC0, 0xE4, 0xFB, 0xE5, 0x35, 0xE5, 0x6F, 0xE5, 0xAA, 0xE5, 0xE4, 0xE6, 0x1F, 0xE6, 0x59, 0xE6, 0x94, 0xE6, 0xCE, 0xE7, 0x09, 0xE7, 0x43, 0xE7, 0x7E, 0xE7, 0xB9, 0xE7, 0xF3, 0xE8, 0x2E, 0xE8, 0x69, 0xE8, 0xA3, 0xE8, 0xDE, 0xE9, 0x19, 0xE9, 0x53, 0xE9, 0x8E, 0xE9, 0xC9, 0xEA, 0x04, 0xEA, 0x3F, 0xEA, 0x79, 0xEA, 0xB4, 0xEA, 0xEF, 0xEB, 0x2A, 0xEB, 0x65, 0xEB, 0xA0, 0xEB, 0xDB, 0xEC, 0x16, 0xEC, 0x51, 0xEC, 0x8C, 0xEC, 0xC7, 0xED, 0x02, 0xED, 0x3D, 0xED, 0x78, 0xED, 0xB4, 0xED, 0xEF, 0xEE, 0x2A, 0xEE, 0x65, 0xEE, 0xA0, 0xEE, 0xDC, 0xEF, 0x17, 0xEF, 0x52, 0xEF, 0x8E, 0xEF, 0xC9, 0xF0, 0x04, 0xF0, 0x40, 0xF0, 0x7B, 0xF0, 0xB7, 0xF0, 0xF2, 0xF1, 0x2E, 0xF1, 0x69, 0xF1, 0xA5, 0xF1, 0xE0, 0xF2, 0x1C, 0xF2, 0x57, 0xF2, 0x93, 0xF2, 0xCF, 0xF3, 0x0A, 0xF3, 0x46, 0xF3, 0x82, 0xF3, 0xBE, 0xF3, 0xF9, 0xF4, 0x35, 0xF4, 0x71, 0xF4, 0xAD, 0xF4, 0xE9, 0xF5, 0x24, 0xF5, 0x60, 0xF5, 0x9C, 0xF5, 0xD8, 0xF6, 0x14, 0xF6, 0x50, 0xF6, 0x8C, 0xF6, 0xC8, 0xF7, 0x04, 0xF7, 0x40, 0xF7, 0x7C, 0xF7, 0xB9, 0xF7, 0xF5, 0xF8, 0x31, 0xF8, 0x6D, 0xF8, 0xA9, 0xF8, 0xE5, 0xF9, 0x22, 0xF9, 0x5E, 0xF9, 0x9A, 0xF9, 0xD7, 0xFA, 0x13, 0xFA, 0x4F, 0xFA, 0x8C, 0xFA, 0xC8, 0xFB, 0x05, 0xFB, 0x41, 0xFB, 0x7E, 0xFB, 0xBA, 0xFB, 0xF7, 0xFC, 0x33, 0xFC, 0x70, 0xFC, 0xAC, 0xFC, 0xE9, 0xFD, 0x26, 0xFD, 0x62, 0xFD, 0x9F, 0xFD, 0xDC, 0xFE, 0x18, 0xFE, 0x55, 0xFE, 0x92, 0xFE, 0xCF, 0xFF, 0x0B, 0xFF, 0x48, 0xFF, 0x85, 0xFF, 0xC2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x7A, 0x00, 0xB6, 0x00, 0xF3, 0x01, 0x30, 0x01, 0x6D, 0x01, 0xA9, 0x01, 0xE6, 0x02, 0x23, 0x02, 0x60, 0x02, 0x9D, 0x02, 0xD9, 0x03, 0x16, 0x03, 0x53, 0x03, 0x90, 0x03, 0xCD, 0x04, 0x0A, 0x04, 0x47, 0x04, 0x83, 0x04, 0xC0, 0x04, 0xFD, 0x05, 0x3A, 0x05, 0x77, 0x05, 0xB4, 0x05, 0xF1, 0x06, 0x2E, 0x06, 0x6B, 0x06, 0xA8, 0x06, 0xE5, 0x07, 0x22, 0x07, 0x5E, 0x07, 0x9B, 0x07, 0xD8, 0x08, 0x15, 0x08, 0x52, 0x08, 0x8F, 0x08, 0xCC, 0x09, 0x09, 0x09, 0x46, 0x09, 0x83, 0x09, 0xC0, 0x09, 0xFE, 0x0A, 0x3B, 0x0A, 0x78, 0x0A, 0xB5, 0x0A, 0xF2, 0x0B, 0x2F, 0x0B, 0x6C, 0x0B, 0xA9, 0x0B, 0xE6, 0x0C, 0x23, 0x0C, 0x60, 0x0C, 0x9D, 0x0C, 0xDB, 0x0D, 0x18, 0x0D, 0x55, 0x0D, 0x92, 0x0D, 0xCF, 0x0E, 0x0C, 0x0E, 0x49, 0x0E, 0x87, 0x0E, 0xC4, 0x0F, 0x01, 0x0F, 0x3E, 0x0F, 0x7B, 0x0F, 0xB9, 0x0F, 0xF6, 0x10, 0x33, 0x10, 0x70, 0x10, 0xAD, 0x10, 0xEB, 0x11, 0x28, 0x11, 0x65, 0x11, 0xA2, 0x11, 0xE0, 0x12, 0x1D, 0x12, 0x5A, 0x12, 0x97, 0x12, 0xD5, 0x13, 0x12, 0x13, 0x4F, 0x13, 0x8D, 0x13, 0xCA, 0x14, 0x07, 0x14, 0x44, 0x14, 0x82, 0x14, 0xBF, 0x14, 0xFC, 0x15, 0x3A, 0x15, 0x77, 0x15, 0xB4, 0x15, 0xF2, 0x16, 0x2F, 0x16, 0x6C, 0x16, 0xAA, 0x16, 0xE7, 0x17, 0x25, 0x17, 0x62, 0x17, 0x9F, 0x17, 0xDD, 0x18, 0x1A, 0x18, 0x58, 0x18, 0x95, 0x18, 0xD2, 0x19, 0x10, 0x19, 0x4D, 0x19, 0x8B, 0x19, 0xC8, 0x1A, 0x06, 0x1A, 0x43, 0x1A, 0x80, 0x1A, 0xBE, 0x1A, 0xFB, 0x1B, 0x39, 0x1B, 0x76, 0x1B, 0xB4, 0x1B, 0xF1, 0x1C, 0x2F, 0x1C, 0x6C, 0x1C, 0xAA, 0x1C, 0xE7, 0x1D, 0x25, 0x1D, 0x62, 0x1D, 0xA0, 0x1D, 0xDE, 0x1E, 0x1B, 0x1E, 0x59, 0x1E, 0x98, 0x1E, 0xDC, 0x1F, 0x22, 0x1F, 0x67, 0x1F, 0xAC, 0x1F, 0xF2, 0x20, 0x37, 0x20, 0x7C, 0x20, 0xC1, 0x21, 0x07, 0x21, 0x4C, 0x21, 0x91, 0x21, 0xD7, 0x22, 0x1C, 0x22, 0x61, 0x22, 0xA7, 0x22, 0xEC, 0x23, 0x32, 0x23, 0x77, 0x23, 0xBC, 0x24, 0x02, 0x24, 0x47, 0x24, 0x8D, 0x24, 0xD2, 0x25, 0x18, 0x25, 0x5D, 0x25, 0xA3, 0x25, 0xE8, 0x26, 0x2E, 0x26, 0x73, 0x26, 0xB9, 0x26, 0xFE, 0x27, 0x44, 0x27, 0x89, 0x27, 0xCF, 0x28, 0x14, 0x28, 0x5A, 0x28, 0xA0, 0x28, 0xE5, 0x29, 0x2B, 0x29, 0x71, 0x29, 0xB6, 0x29, 0xFC, 0x2A, 0x42, 0x2A, 0x87, 0x2A, 0xCD, 0x2B, 0x13, 0x2B, 0x58, 0x2B, 0x9E, 0x2B, 0xE4, 0x2C, 0x2A, 0x2C, 0x6F, 0x2C, 0xB5, 0x2C, 0xFB, 0x2D, 0x41, 0x2D, 0x86, 0x2D, 0xCC, 0x2E, 0x12, 0x2E, 0x58, 0x2E, 0x9D, 0x2E, 0xE3, 0x2F, 0x29, 0x2F, 0x6F, 0x2F, 0xB4, 0x2F, 0xFA, 0x30, 0x40, 0x30, 0x86, 0x30, 0xCB, 0x31, 0x11, 0x31, 0x57, 0x31, 0x9C, 0x31, 0xE2, 0x32, 0x28, 0x32, 0x6E, 0x32, 0xB3, 0x32, 0xF9, 0x33, 0x3F, 0x33, 0x84, 0x33, 0xCA, 0x34, 0x10, 0x34, 0x55, 0x34, 0x9B, 0x34, 0xE1, 0x35, 0x26, 0x35, 0x6C, 0x35, 0xB2, 0x35, 0xF8, 0x36, 0x3D, 0x36, 0x83, 0x36, 0xC9, 0x37, 0x0E, 0x37, 0x54, 0x37, 0x9A, 0x37, 0xE0, 0x38, 0x25, 0x38, 0x6B, 0x38, 0xB1, 0x38, 0xF7, 0x39, 0x3D, 0x39, 0x82, 0x39, 0xC8, 0x3A, 0x0E, 0x3A, 0x54, 0x3A, 0x9A, 0x3A, 0xDF, 0x3B, 0x25, 0x3B, 0x6B, 0x3B, 0xB1, 0x3B, 0xF7, 0x3C, 0x3D, 0x3C, 0x83, 0x3C, 0xC8, 0x3D, 0x0E, 0x3D, 0x54, 0x3D, 0x9A, 0x3D, 0xE0, 0x3E, 0x26, 0x3E, 0x6C, 0x3E, 0xB2, 0x3E, 0xF8, 0x3F, 0x3E, 0x3F, 0x84, 0x3F, 0xCA, 0x40, 0x10, 0x40, 0x56, 0x40, 0x9C, 0x40, 0xE2, 0x41, 0x29, 0x41, 0x6E, 0x41, 0xB2, 0x41, 0xF5, 0x42, 0x39, 0x42, 0x7C, 0x42, 0xC0, 0x43, 0x03, 0x43, 0x47, 0x43, 0x8B, 0x43, 0xCE, 0x44, 0x12, 0x44, 0x56, 0x44, 0x99, 0x44, 0xDD, 0x45, 0x21, 0x45, 0x65, 0x45, 0xA8, 0x45, 0xEC, 0x46, 0x30, 0x46, 0x74, 0x46, 0xB8, 0x46, 0xFC, 0x47, 0x40, 0x47, 0x84, 0x47, 0xC8, 0x48, 0x0C, 0x48, 0x50, 0x48, 0x94, 0x48, 0xD8, 0x49, 0x1C, 0x49, 0x60, 0x49, 0xA4, 0x49, 0xE8, 0x4A, 0x2C, 0x4A, 0x70, 0x4A, 0xB4, 0x4A, 0xF8, 0x4B, 0x3D, 0x4B, 0x81, 0x4B, 0xC5, 0x4C, 0x09, 0x4C, 0x4E, 0x4C, 0x92, 0x4C, 0xD6, 0x4D, 0x1B, 0x4D, 0x5F, 0x4D, 0xA3, 0x4D, 0xE8, 0x4E, 0x2C, 0x4E, 0x71, 0x4E, 0xB5, 0x4E, 0xFA, 0x4F, 0x3E, 0x4F, 0x83, 0x4F, 0xC7, 0x50, 0x0C, 0x50, 0x50, 0x50, 0x95, 0x50, 0xDA, 0x51, 0x1E, 0x51, 0x63, 0x51, 0xA8, 0x51, 0xEC, 0x52, 0x31, 0x52, 0x76, 0x52, 0xBB, 0x52, 0xFF, 0x53, 0x44, 0x53, 0x89, 0x53, 0xCE, 0x54, 0x13, 0x54, 0x58, 0x54, 0x9D, 0x54, 0xE2, 0x55, 0x27, 0x55, 0x6C, 0x55, 0xB1, 0x55, 0xF6, 0x56, 0x3B, 0x56, 0x80, 0x56, 0xC5, 0x57, 0x0A, 0x57, 0x4F, 0x57, 0x94, 0x57, 0xD9, 0x58, 0x1E, 0x58, 0x64, 0x58, 0xA9, 0x58, 0xEE, 0x59, 0x33, 0x59, 0x78, 0x59, 0xBE, 0x5A, 0x03, 0x5A, 0x48, 0x5A, 0x8D, 0x5A, 0xD2, 0x5B, 0x17, 0x5B, 0x5C, 0x5B, 0xA1, 0x5B, 0xE6, 0x5C, 0x2B, 0x5C, 0x70, 0x5C, 0xB4, 0x5C, 0xF9, 0x5D, 0x3E, 0x5D, 0x83, 0x5D, 0xC8, 0x5E, 0x0C, 0x5E, 0x51, 0x5E, 0x96, 0x5E, 0xDB, 0x5F, 0x1F, 0x5F, 0x64, 0x5F, 0xA8, 0x5F, 0xED, 0x60, 0x32, 0x60, 0x76, 0x60, 0xBB, 0x60, 0xFF, 0x61, 0x44, 0x61, 0x88, 0x61, 0xCC, 0x62, 0x11, 0x62, 0x55, 0x62, 0x9A, 0x62, 0xDE, 0x63, 0x22, 0x63, 0x66, 0x63, 0xAA, 0x63, 0xEB, 0x64, 0x2C, 0x64, 0x6D, 0x64, 0xAE, 0x64, 0xEF, 0x65, 0x30, 0x65, 0x71, 0x65, 0xB2, 0x65, 0xF3, 0x66, 0x34, 0x66, 0x75, 0x66, 0xB6, 0x66, 0xF7, 0x67, 0x38, 0x67, 0x78, 0x67, 0xB9, 0x67, 0xFA, 0x68, 0x3B, 0x68, 0x7C, 0x68, 0xBC, 0x68, 0xFD, 0x69, 0x3E, 0x69, 0x7F, 0x69, 0xBF, 0x6A, 0x00, 0x6A, 0x41, 0x6A, 0x81, 0x6A, 0xC2, 0x6B, 0x03, 0x6B, 0x43, 0x6B, 0x84, 0x6B, 0xC4, 0x6C, 0x05, 0x6C, 0x45, 0x6C, 0x85, 0x6C, 0xC6, 0x6D, 0x06, 0x6D, 0x46, 0x6D, 0x87, 0x6D, 0xC7, 0x6E, 0x07, 0x6E, 0x47, 0x6E, 0x88, 0x6E, 0xC8, 0x6F, 0x08, 0x6F, 0x48, 0x6F, 0x88, 0x6F, 0xC8, 0x70, 0x08, 0x70, 0x48, 0x70, 0x88, 0x70, 0xC8, 0x71, 0x08, 0x71, 0x47, 0x71, 0x87, 0x71, 0xC7, 0x72, 0x07, 0x72, 0x46, 0x72, 0x86, 0x72, 0xC6, 0x73, 0x05, 0x73, 0x45, 0x73, 0x85, 0x73, 0xC4, 0x74, 0x04, 0x74, 0x43, 0x74, 0x82, 0x74, 0xC2, 0x75, 0x01, 0x75, 0x41, 0x75, 0x80, 0x75, 0xBF, 0x75, 0xFE, 0x76, 0x3E, 0x76, 0x7D, 0x76, 0xBC, 0x76, 0xFB, 0x77, 0x3A, 0x77, 0x79, 0x77, 0xB8, 0x77, 0xF7, 0x78, 0x36, 0x78, 0x75, 0x78, 0xB4, 0x78, 0xF3, 0x79, 0x32, 0x79, 0x71, 0x79, 0xB0, 0x79, 0xEF, 0x7A, 0x2D, 0x7A, 0x6C, 0x7A, 0xAB, 0x7A, 0xEA, 0x7B, 0x28, 0x7B, 0x67, 0x7B, 0xA6, 0x7B, 0xE4, 0x7C, 0x23, 0x7C, 0x61, 0x7C, 0xA0, 0x7C, 0xDE, 0x7D, 0x1D, 0x7D, 0x5B, 0x7D, 0x9A, 0x7D, 0xD8, 0x7E, 0x17, 0x7E, 0x55, 0x7E, 0x93, 0x7E, 0xD2, 0x7F, 0x10, 0x7F, 0x4E, 0x7F, 0x8C, 0x7F, 0xCB, 0x80, 0x09, 0x80, 0x47, 0x80, 0x85, 0x80, 0xC4, 0x81, 0x02, 0x81, 0x40, 0x81, 0x7E, 0x81, 0xBC, 0x81, 0xFA, 0x82, 0x38, 0x82, 0x76, 0x82, 0xB4, 0x82, 0xF2, 0x83, 0x30, 0x83, 0x70, 0x83, 0xB2, 0x83, 0xF4, 0x84, 0x36, 0x84, 0x78, 0x84, 0xBA, 0x84, 0xFC, 0x85, 0x3E, 0x85, 0x80, 0x85, 0xC2, 0x86, 0x04, 0x86, 0x46, 0x86, 0x88, 0x86, 0xC9, 0x87, 0x0B, 0x87, 0x4D, 0x87, 0x8E, 0x87, 0xD0, 0x88, 0x11, 0x88, 0x53, 0x88, 0x94, 0x88, 0xD6, 0x89, 0x17, 0x89, 0x59, 0x89, 0x9A, 0x89, 0xDB, 0x8A, 0x1C, 0x8A, 0x5D, 0x8A, 0x9F, 0x8A, 0xE0, 0x8B, 0x21, 0x8B, 0x62, 0x8B, 0xA3, 0x8B, 0xE4, 0x8C, 0x25, 0x8C, 0x65, 0x8C, 0xA6, 0x8C, 0xE7, 0x8D, 0x28, 0x8D, 0x68, 0x8D, 0xA9, 0x8D, 0xEA, 0x8E, 0x2A, 0x8E, 0x6B, 0x8E, 0xAB, 0x8E, 0xEC, 0x8F, 0x2C, 0x8F, 0x6C, 0x8F, 0xAD, 0x8F, 0xED, 0x90, 0x2D, 0x90, 0x6D, 0x90, 0xAE, 0x90, 0xEE, 0x91, 0x2E, 0x91, 0x6E, 0x91, 0xAE, 0x91, 0xEE, 0x92, 0x2E, 0x92, 0x6D, 0x92, 0xAD, 0x92, 0xED, 0x93, 0x2D, 0x93, 0x6C, 0x93, 0xAC, 0x93, 0xEB, 0x94, 0x2B, 0x94, 0x6A, 0x94, 0xAA, 0x94, 0xE9, 0x95, 0x29, 0x95, 0x68, 0x95, 0xA7, 0x95, 0xE6, 0x96, 0x25, 0x96, 0x64, 0x96, 0xA4, 0x96, 0xE2, 0x97, 0x21, 0x97, 0x60, 0x97, 0x9F, 0x97, 0xDE, 0x98, 0x1D, 0x98, 0x5B, 0x98, 0x9A, 0x98, 0xD9, 0x99, 0x17, 0x99, 0x56, 0x99, 0x94, 0x99, 0xD3, 0x9A, 0x11, 0x9A, 0x50, 0x9A, 0x8E, 0x9A, 0xCC, 0x9B, 0x0A, 0x9B, 0x49, 0x9B, 0x87, 0x9B, 0xC5, 0x9C, 0x03, 0x9C, 0x41, 0x9C, 0x7F, 0x9C, 0xBD, 0x9C, 0xFB, 0x9D, 0x38, 0x9D, 0x76, 0x9D, 0xB4, 0x9D, 0xF2, 0x9E, 0x2F, 0x9E, 0x6D, 0x9E, 0xAB, 0x9E, 0xE8, 0x9F, 0x26, 0x9F, 0x63, 0x9F, 0xA1, 0x9F, 0xDE, 0xA0, 0x1C, 0xA0, 0x59, 0xA0, 0x96, 0xA0, 0xD4, 0xA1, 0x11, 0xA1, 0x4E, 0xA1, 0x8B, 0xA1, 0xC9, 0xA2, 0x06, 0xA2, 0x43, 0xA2, 0x80, 0xA2, 0xBD, 0xA2, 0xFA, 0xA3, 0x3A, 0xA3, 0x7C, 0xA3, 0xBE, 0xA4, 0x00, 0xA4, 0x42, 0xA4, 0x84, 0xA4, 0xC6, 0xA5, 0x07, 0xA5, 0x49, 0xA5, 0x8B, 0xA5, 0xCD, 0xA6, 0x0E, 0xA6, 0x50, 0xA6, 0x91, 0xA6, 0xD3, 0xA7, 0x15, 0xA7, 0x56, 0xA7, 0x98, 0xA7, 0xD9, 0xA8, 0x1A, 0xA8, 0x5C, 0xA8, 0x9D, 0xA8, 0xDE, 0xA9, 0x20, 0xA9, 0x61, 0xA9, 0xA2, 0xA9, 0xE3, 0xAA, 0x24, 0xAA, 0x66, 0xAA, 0xA7, 0xAA, 0xE8, 0xAB, 0x29, 0xAB, 0x6A, 0xAB, 0xAB, 0xAB, 0xEC, 0xAC, 0x2C, 0xAC, 0x6D, 0xAC, 0xAE, 0xAC, 0xEF, 0xAD, 0x30, 0xAD, 0x70, 0xAD, 0xB1, 0xAD, 0xF2, 0xAE, 0x33, 0xAE, 0x74, 0xAE, 0xB5, 0xAE, 0xF6, 0xAF, 0x37, 0xAF, 0x78, 0xAF, 0xB9, 0xAF, 0xFA, 0xB0, 0x3B, 0xB0, 0x7D, 0xB0, 0xBE, 0xB0, 0xFF, 0xB1, 0x40, 0xB1, 0x82, 0xB1, 0xC3, 0xB2, 0x04, 0xB2, 0x46, 0xB2, 0x87, 0xB2, 0xC9, 0xB3, 0x0A, 0xB3, 0x4C, 0xB3, 0x8D, 0xB3, 0xCF, 0xB4, 0x10, 0xB4, 0x52, 0xB4, 0x94, 0xB4, 0xD6, 0xB5, 0x17, 0xB5, 0x59, 0xB5, 0x9B, 0xB5, 0xDD, 0xB6, 0x1F, 0xB6, 0x61, 0xB6, 0xA3, 0xB6, 0xE5, 0xB7, 0x27, 0xB7, 0x69, 0xB7, 0xAB, 0xB7, 0xED, 0xB8, 0x2F, 0xB8, 0x71, 0xB8, 0xB4, 0xB8, 0xF6, 0xB9, 0x38, 0xB9, 0x7A, 0xB9, 0xBD, 0xB9, 0xFF, 0xBA, 0x42, 0xBA, 0x84, 0xBA, 0xC7, 0xBB, 0x09, 0xBB, 0x4C, 0xBB, 0x8F, 0xBB, 0xD1, 0xBC, 0x14, 0xBC, 0x57, 0xBC, 0x99, 0xBC, 0xDC, 0xBD, 0x1F, 0xBD, 0x62, 0xBD, 0xA5, 0xBD, 0xE8, 0xBE, 0x2B, 0xBE, 0x6E, 0xBE, 0xB1, 0xBE, 0xF4, 0xBF, 0x37, 0xBF, 0x7A, 0xBF, 0xBD, 0xC0, 0x00, 0xC0, 0x44, 0xC0, 0x87, 0xC0, 0xCA, 0xC1, 0x0E, 0xC1, 0x51, 0xC1, 0x95, 0xC1, 0xD8, 0xC2, 0x1C, 0xC2, 0x5F, 0xC2, 0xA3, 0xC2, 0xE6, 0xC3, 0x2A, 0xC3, 0x6E, 0xC3, 0xB2, 0xC3, 0xF5, 0xC4, 0x34, 0xC4, 0x71, 0xC4, 0xAE, 0xC4, 0xEA, 0xC5, 0x27, 0xC5, 0x64, 0xC5, 0xA1, 0xC5, 0xDE, 0xC6, 0x1B, 0xC6, 0x58, 0xC6, 0x95, 0xC6, 0xD2, 0xC7, 0x0F, 0xC7, 0x4D, 0xC7, 0x8A, 0xC7, 0xC7, 0xC8, 0x04, 0xC8, 0x42, 0xC8, 0x7F, 0xC8, 0xBC, 0xC8, 0xFA, 0xC9, 0x37, 0xC9, 0x74, 0xC9, 0xB2, 0xC9, 0xEF, 0xCA, 0x2D, 0xCA, 0x6B, 0xCA, 0xA8, 0xCA, 0xE6, 0xCB, 0x23, 0xCB, 0x61, 0xCB, 0x9F, 0xCB, 0xDD, 0xCC, 0x1A, 0xCC, 0x58, 0xCC, 0x96, 0xCC, 0xD4, 0xCD, 0x12, 0xCD, 0x50, 0xCD, 0x8E, 0xCD, 0xCC, 0xCE, 0x0A, 0xCE, 0x48, 0xCE, 0x86, 0xCE, 0xC4, 0xCF, 0x02, 0xCF, 0x40, 0xCF, 0x7E, 0xCF, 0xBC, 0xCF, 0xFA, 0xD0, 0x38, 0xD0, 0x76, 0xD0, 0xB5, 0xD0, 0xF3, 0xD1, 0x31, 0xD1, 0x6F, 0xD1, 0xAE, 0xD1, 0xEC, 0xD2, 0x2A, 0xD2, 0x69, 0xD2, 0xA7, 0xD2, 0xE5, 0xD3, 0x24, 0xD3, 0x62, 0xD3, 0xA1, 0xD3, 0xDF, 0xD4, 0x1E, 0xD4, 0x5C, 0xD4, 0x9B, 0xD4, 0xD9, 0xD5, 0x18, 0xD5, 0x56, 0xD5, 0x95, 0xD5, 0xD4, 0xD6, 0x12, 0xD6, 0x51, 0xD6, 0x90, 0xD6, 0xCE, 0xD7, 0x0D, 0xD7, 0x4C, 0xD7, 0x8A, 0xD7, 0xC9, 0xD8, 0x08, 0xD8, 0x47, 0xD8, 0x86, 0xD8, 0xC4, 0xD9, 0x03, 0xD9, 0x42, 0xD9, 0x81, 0xD9, 0xC0, 0xD9, 0xFF, 0xDA, 0x3D, 0xDA, 0x7C, 0xDA, 0xBB, 0xDA, 0xFA, 0xDB, 0x39, 0xDB, 0x78, 0xDB, 0xB7, 0xDB, 0xF6, 0xDC, 0x35, 0xDC, 0x74, 0xDC, 0xB3, 0xDC, 0xF2, 0xDD, 0x31, 0xDD, 0x70, 0xDD, 0xAF, 0xDD, 0xEF, 0xDE, 0x2E, 0xDE, 0x6D, 0xDE, 0xAC, 0xDE, 0xEB, 0xDF, 0x2A, 0xDF, 0x69, 0xDF, 0xA9, 0xDF, 0xE8, 0xE0, 0x27, 0xE0, 0x66, 0xE0, 0xA6, 0xE0, 0xE5, 0xE1, 0x24, 0xE1, 0x64, 0xE1, 0xA3, 0xE1, 0xE3, 0xE2, 0x22, 0xE2, 0x61, 0xE2, 0xA1, 0xE2, 0xE0, 0xE3, 0x1F, 0xE3, 0x59, 0xE3, 0x92, 0xE3, 0xCB, 0xE4, 0x03, 0xE4, 0x3C, 0xE4, 0x75, 0xE4, 0xAD, 0xE4, 0xE6, 0xE5, 0x1F, 0xE5, 0x58, 0xE5, 0x91, 0xE5, 0xC9, 0xE6, 0x02, 0xE6, 0x3B, 0xE6, 0x74, 0xE6, 0xAD, 0xE6, 0xE6, 0xE7, 0x1F, 0xE7, 0x58, 0xE7, 0x91, 0xE7, 0xCA, 0xE8, 0x03, 0xE8, 0x3C, 0xE8, 0x75, 0xE8, 0xAE, 0xE8, 0xE7, 0xE9, 0x20, 0xE9, 0x59, 0xE9, 0x92, 0xE9, 0xCB, 0xEA, 0x04, 0xEA, 0x3E, 0xEA, 0x77, 0xEA, 0xB0, 0xEA, 0xE9, 0xEB, 0x23, 0xEB, 0x5C, 0xEB, 0x95, 0xEB, 0xCE, 0xEC, 0x08, 0xEC, 0x41, 0xEC, 0x7A, 0xEC, 0xB4, 0xEC, 0xED, 0xED, 0x27, 0xED, 0x60, 0xED, 0x99, 0xED, 0xD3, 0xEE, 0x0C, 0xEE, 0x46, 0xEE, 0x7F, 0xEE, 0xB9, 0xEE, 0xF2, 0xEF, 0x2C, 0xEF, 0x65, 0xEF, 0x9F, 0xEF, 0xD9, 0xF0, 0x12, 0xF0, 0x4C, 0xF0, 0x86, 0xF0, 0xBF, 0xF0, 0xF9, 0xF1, 0x33, 0xF1, 0x6C, 0xF1, 0xA6, 0xF1, 0xE0, 0xF2, 0x1A, 0xF2, 0x53, 0xF2, 0x8D, 0xF2, 0xC7, 0xF3, 0x01, 0xF3, 0x3B, 0xF3, 0x75, 0xF3, 0xAE, 0xF3, 0xE8, 0xF4, 0x22, 0xF4, 0x5C, 0xF4, 0x96, 0xF4, 0xD0, 0xF5, 0x0A, 0xF5, 0x44, 0xF5, 0x7E, 0xF5, 0xB8, 0xF5, 0xF2, 0xF6, 0x2C, 0xF6, 0x67, 0xF6, 0xA1, 0xF6, 0xDB, 0xF7, 0x15, 0xF7, 0x4F, 0xF7, 0x89, 0xF7, 0xC4, 0xF7, 0xFE, 0xF8, 0x38, 0xF8, 0x72, 0xF8, 0xAD, 0xF8, 0xE7, 0xF9, 0x21, 0xF9, 0x5C, 0xF9, 0x96, 0xF9, 0xD0, 0xFA, 0x0B, 0xFA, 0x45, 0xFA, 0x7F, 0xFA, 0xBA, 0xFA, 0xF4, 0xFB, 0x2F, 0xFB, 0x69, 0xFB, 0xA4, 0xFB, 0xDE, 0xFC, 0x19, 0xFC, 0x54, 0xFC, 0x8E, 0xFC, 0xC9, 0xFD, 0x03, 0xFD, 0x3E, 0xFD, 0x79, 0xFD, 0xB3, 0xFD, 0xEE, 0xFE, 0x29, 0xFE, 0x63, 0xFE, 0x9E, 0xFE, 0xD9, 0xFF, 0x14, 0xFF, 0x4E, 0xFF, 0x89, 0xFF, 0xC4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x74, 0x00, 0xAF, 0x00, 0xE9, 0x01, 0x23, 0x01, 0x5D, 0x01, 0x97, 0x01, 0xD2, 0x02, 0x0C, 0x02, 0x46, 0x02, 0x81, 0x02, 0xBB, 0x02, 0xF5, 0x03, 0x2F, 0x03, 0x6A, 0x03, 0xA4, 0x03, 0xDF, 0x04, 0x19, 0x04, 0x53, 0x04, 0x8E, 0x04, 0xC8, 0x05, 0x03, 0x05, 0x3D, 0x05, 0x78, 0x05, 0xB2, 0x05, 0xEC, 0x06, 0x27, 0x06, 0x61, 0x06, 0x9C, 0x06, 0xD7, 0x07, 0x11, 0x07, 0x4C, 0x07, 0x86, 0x07, 0xC1, 0x07, 0xFB, 0x08, 0x36, 0x08, 0x71, 0x08, 0xAB, 0x08, 0xE6, 0x09, 0x21, 0x09, 0x5B, 0x09, 0x96, 0x09, 0xD1, 0x0A, 0x0B, 0x0A, 0x46, 0x0A, 0x81, 0x0A, 0xBC, 0x0A, 0xF6, 0x0B, 0x31, 0x0B, 0x6C, 0x0B, 0xA7, 0x0B, 0xE2, 0x0C, 0x1C, 0x0C, 0x57, 0x0C, 0x92, 0x0C, 0xCD, 0x0D, 0x08, 0x0D, 0x43, 0x0D, 0x7E, 0x0D, 0xB9, 0x0D, 0xF4, 0x0E, 0x2E, 0x0E, 0x69, 0x0E, 0xA4, 0x0E, 0xDF, 0x0F, 0x1A, 0x0F, 0x55, 0x0F, 0x90, 0x0F, 0xCB, 0x10, 0x07, 0x10, 0x42, 0x10, 0x7D, 0x10, 0xB8, 0x10, 0xF3, 0x11, 0x2E, 0x11, 0x69, 0x11, 0xA4, 0x11, 0xDF, 0x12, 0x1B, 0x12, 0x56, 0x12, 0x91, 0x12, 0xCC, 0x13, 0x07, 0x13, 0x43, 0x13, 0x7E, 0x13, 0xB9, 0x13, 0xF4, 0x14, 0x30, 0x14, 0x6B, 0x14, 0xA6, 0x14, 0xE1, 0x15, 0x1D, 0x15, 0x58, 0x15, 0x93, 0x15, 0xCF, 0x16, 0x0A, 0x16, 0x45, 0x16, 0x81, 0x16, 0xBC, 0x16, 0xF8, 0x17, 0x33, 0x17, 0x6E, 0x17, 0xAA, 0x17, 0xE5, 0x18, 0x21, 0x18, 0x5C, 0x18, 0x98, 0x18, 0xD3, 0x19, 0x0F, 0x19, 0x4A, 0x19, 0x86, 0x19, 0xC1, 0x19, 0xFD, 0x1A, 0x38, 0x1A, 0x74, 0x1A, 0xB0, 0x1A, 0xEB, 0x1B, 0x27, 0x1B, 0x62, 0x1B, 0x9E, 0x1B, 0xDA, 0x1C, 0x15, 0x1C, 0x51, 0x1C, 0x8D, 0x1C, 0xC8, 0x1D, 0x04, 0x1D, 0x40, 0x1D, 0x7F, 0x1D, 0xC7, 0x1E, 0x11, 0x1E, 0x5B, 0x1E, 0xA5, 0x1E, 0xEF, 0x1F, 0x38, 0x1F, 0x82, 0x1F, 0xCC, 0x20, 0x16, 0x20, 0x60, 0x20, 0xAA, 0x20, 0xF4, 0x21, 0x3E, 0x21, 0x88, 0x21, 0xD2, 0x22, 0x1C, 0x22, 0x66, 0x22, 0xB0, 0x22, 0xFB, 0x23, 0x45, 0x23, 0x8F, 0x23, 0xD9, 0x24, 0x23, 0x24, 0x6D, 0x24, 0xB8, 0x25, 0x02, 0x25, 0x4C, 0x25, 0x96, 0x25, 0xE1, 0x26, 0x2B, 0x26, 0x75, 0x26, 0xC0, 0x27, 0x0A, 0x27, 0x55, 0x27, 0x9F, 0x27, 0xE9, 0x28, 0x34, 0x28, 0x7E, 0x28, 0xC9, 0x29, 0x13, 0x29, 0x5E, 0x29, 0xA8, 0x29, 0xF3, 0x2A, 0x3D, 0x2A, 0x88, 0x2A, 0xD2, 0x2B, 0x1D, 0x2B, 0x68, 0x2B, 0xB2, 0x2B, 0xFD, 0x2C, 0x47, 0x2C, 0x92, 0x2C, 0xDD, 0x2D, 0x27, 0x2D, 0x72, 0x2D, 0xBD, 0x2E, 0x08, 0x2E, 0x52, 0x2E, 0x9D, 0x2E, 0xE8, 0x2F, 0x33, 0x2F, 0x7E, 0x2F, 0xC8, 0x30, 0x13, 0x30, 0x5E, 0x30, 0xA9, 0x30, 0xF4, 0x31, 0x3F, 0x31, 0x8A, 0x31, 0xD5, 0x32, 0x20, 0x32, 0x6B, 0x32, 0xB6, 0x33, 0x01, 0x33, 0x4C, 0x33, 0x97, 0x33, 0xE2, 0x34, 0x2D, 0x34, 0x79, 0x34, 0xC4, 0x35, 0x0F, 0x35, 0x5A, 0x35, 0xA5, 0x35, 0xF1, 0x36, 0x3C, 0x36, 0x87, 0x36, 0xD2, 0x37, 0x1D, 0x37, 0x68, 0x37, 0xB3, 0x37, 0xFE, 0x38, 0x49, 0x38, 0x94, 0x38, 0xDF, 0x39, 0x2A, 0x39, 0x75, 0x39, 0xBF, 0x3A, 0x0A, 0x3A, 0x55, 0x3A, 0x9F, 0x3A, 0xEA, 0x3B, 0x35, 0x3B, 0x7F, 0x3B, 0xCA, 0x3C, 0x14, 0x3C, 0x5F, 0x3C, 0xA9, 0x3C, 0xF4, 0x3D, 0x3E, 0x3D, 0x89, 0x3D, 0xD3, 0x3E, 0x1D, 0x3E, 0x68, 0x3E, 0xB2, 0x3E, 0xFC, 0x3F, 0x47, 0x3F, 0x91, 0x3F, 0xDB, 0x40, 0x25, 0x40, 0x6F, 0x40, 0xB9, 0x41, 0x03, 0x41, 0x4D, 0x41, 0x97, 0x41, 0xE1, 0x42, 0x2B, 0x42, 0x75, 0x42, 0xBF, 0x43, 0x09, 0x43, 0x53, 0x43, 0x9D, 0x43, 0xE7, 0x44, 0x32, 0x44, 0x7C, 0x44, 0xC6, 0x45, 0x10, 0x45, 0x5A, 0x45, 0xA4, 0x45, 0xEE, 0x46, 0x39, 0x46, 0x83, 0x46, 0xCD, 0x47, 0x17, 0x47, 0x62, 0x47, 0xAC, 0x47, 0xF6, 0x48, 0x40, 0x48, 0x8B, 0x48, 0xD5, 0x49, 0x1F, 0x49, 0x6A, 0x49, 0xB4, 0x49, 0xFF, 0x4A, 0x49, 0x4A, 0x93, 0x4A, 0xDE, 0x4B, 0x28, 0x4B, 0x73, 0x4B, 0xBD, 0x4C, 0x08, 0x4C, 0x52, 0x4C, 0x9D, 0x4C, 0xE7, 0x4D, 0x32, 0x4D, 0x7D, 0x4D, 0xC7, 0x4E, 0x12, 0x4E, 0x5D, 0x4E, 0xA7, 0x4E, 0xF2, 0x4F, 0x3D, 0x4F, 0x87, 0x4F, 0xD2, 0x50, 0x1D, 0x50, 0x68, 0x50, 0xB3, 0x50, 0xFD, 0x51, 0x48, 0x51, 0x93, 0x51, 0xDE, 0x52, 0x29, 0x52, 0x74, 0x52, 0xBF, 0x53, 0x0A, 0x53, 0x55, 0x53, 0xA0, 0x53, 0xEB, 0x54, 0x36, 0x54, 0x81, 0x54, 0xCC, 0x55, 0x18, 0x55, 0x63, 0x55, 0xAE, 0x55, 0xF9, 0x56, 0x44, 0x56, 0x90, 0x56, 0xDB, 0x57, 0x26, 0x57, 0x72, 0x57, 0xBD, 0x58, 0x08, 0x58, 0x54, 0x58, 0x9F, 0x58, 0xEB, 0x59, 0x36, 0x59, 0x82, 0x59, 0xCD, 0x5A, 0x19, 0x5A, 0x64, 0x5A, 0xAF, 0x5A, 0xFB, 0x5B, 0x46, 0x5B, 0x91, 0x5B, 0xDC, 0x5C, 0x27, 0x5C, 0x72, 0x5C, 0xBC, 0x5D, 0x07, 0x5D, 0x52, 0x5D, 0x9C, 0x5D, 0xE6, 0x5E, 0x31, 0x5E, 0x7B, 0x5E, 0xC5, 0x5F, 0x0F, 0x5F, 0x59, 0x5F, 0xA3, 0x5F, 0xED, 0x60, 0x37, 0x60, 0x81, 0x60, 0xCA, 0x61, 0x14, 0x61, 0x5D, 0x61, 0xA7, 0x61, 0xF0, 0x62, 0x39, 0x62, 0x82, 0x62, 0xCB, 0x63, 0x14, 0x63, 0x5D, 0x63, 0xA6, 0x63, 0xEF, 0x64, 0x38, 0x64, 0x80, 0x64, 0xC9, 0x65, 0x11, 0x65, 0x5A, 0x65, 0xA2, 0x65, 0xEA, 0x66, 0x33, 0x66, 0x7B, 0x66, 0xC3, 0x67, 0x0B, 0x67, 0x53, 0x67, 0x9B, 0x67, 0xE5, 0x68, 0x33, 0x68, 0x82, 0x68, 0xD0, 0x69, 0x1F, 0x69, 0x6D, 0x69, 0xBB, 0x6A, 0x09, 0x6A, 0x57, 0x6A, 0xA5, 0x6A, 0xF3, 0x6B, 0x41, 0x6B, 0x8E, 0x6B, 0xDC, 0x6C, 0x2A, 0x6C, 0x77, 0x6C, 0xC5, 0x6D, 0x13, 0x6D, 0x60, 0x6D, 0xAE, 0x6D, 0xFB, 0x6E, 0x48, 0x6E, 0x96, 0x6E, 0xE3, 0x6F, 0x31, 0x6F, 0x7E, 0x6F, 0xCB, 0x70, 0x18, 0x70, 0x66, 0x70, 0xB3, 0x71, 0x00, 0x71, 0x4D, 0x71, 0x9A, 0x71, 0xE7, 0x72, 0x34, 0x72, 0x81, 0x72, 0xCE, 0x73, 0x1B, 0x73, 0x68, 0x73, 0xB5, 0x74, 0x02, 0x74, 0x4F, 0x74, 0x9B, 0x74, 0xE8, 0x75, 0x35, 0x75, 0x82, 0x75, 0xCE, 0x76, 0x1B, 0x76, 0x67, 0x76, 0xB4, 0x77, 0x00, 0x77, 0x4D, 0x77, 0x99, 0x77, 0xE5, 0x78, 0x32, 0x78, 0x7E, 0x78, 0xCA, 0x79, 0x16, 0x79, 0x63, 0x79, 0xAF, 0x79, 0xFB, 0x7A, 0x47, 0x7A, 0x93, 0x7A, 0xDF, 0x7B, 0x2B, 0x7B, 0x77, 0x7B, 0xC3, 0x7C, 0x0F, 0x7C, 0x5B, 0x7C, 0xA7, 0x7C, 0xF2, 0x7D, 0x3E, 0x7D, 0x8A, 0x7D, 0xD6, 0x7E, 0x21, 0x7E, 0x6D, 0x7E, 0xB8, 0x7F, 0x04, 0x7F, 0x50, 0x7F, 0x9B, 0x7F, 0xE6, 0x80, 0x32, 0x80, 0x7D, 0x80, 0xC9, 0x81, 0x14, 0x81, 0x5F, 0x81, 0xAA, 0x81, 0xF6, 0x82, 0x41, 0x82, 0x8C, 0x82, 0xD7, 0x83, 0x22, 0x83, 0x6D, 0x83, 0xB9, 0x84, 0x04, 0x84, 0x4F, 0x84, 0x9A, 0x84, 0xE5, 0x85, 0x30, 0x85, 0x7B, 0x85, 0xC6, 0x86, 0x11, 0x86, 0x5C, 0x86, 0xA7, 0x86, 0xF2, 0x87, 0x3D, 0x87, 0x88, 0x87, 0xD3, 0x88, 0x1E, 0x88, 0x68, 0x88, 0xB3, 0x88, 0xFE, 0x89, 0x48, 0x89, 0x93, 0x89, 0xDD, 0x8A, 0x28, 0x8A, 0x72, 0x8A, 0xBD, 0x8B, 0x07, 0x8B, 0x51, 0x8B, 0x9C, 0x8B, 0xE6, 0x8C, 0x30, 0x8C, 0x7A, 0x8C, 0xC5, 0x8D, 0x0F, 0x8D, 0x59, 0x8D, 0xA3, 0x8D, 0xF7, 0x8E, 0x54, 0x8E, 0xB2, 0x8F, 0x0F, 0x8F, 0x6C, 0x8F, 0xC9, 0x90, 0x27, 0x90, 0x84, 0x90, 0xE1, 0x91, 0x3E, 0x91, 0x9B, 0x91, 0xF8, 0x92, 0x55, 0x92, 0xB1, 0x93, 0x0E, 0x93, 0x6B, 0x93, 0xC7, 0x94, 0x24, 0x94, 0x80, 0x94, 0xDD, 0x95, 0x39, 0x95, 0x95, 0x95, 0xF2, 0x96, 0x4E, 0x96, 0xAA, 0x97, 0x06, 0x97, 0x62, 0x97, 0xBE, 0x98, 0x19, 0x98, 0x75, 0x98, 0xD1, 0x99, 0x2D, 0x99, 0x88, 0x99, 0xE4, 0x9A, 0x40, 0x9A, 0x9B, 0x9A, 0xF6, 0x9B, 0x52, 0x9B, 0xAD, 0x9C, 0x08, 0x9C, 0x64, 0x9C, 0xBF, 0x9D, 0x1A, 0x9D, 0x75, 0x9D, 0xD0, 0x9E, 0x2A, 0x9E, 0x85, 0x9E, 0xDF, 0x9F, 0x3A, 0x9F, 0x94, 0x9F, 0xEE, 0xA0, 0x48, 0xA0, 0xA1, 0xA0, 0xFB, 0xA1, 0x54, 0xA1, 0xAE, 0xA2, 0x07, 0xA2, 0x60, 0xA2, 0xB9, 0xA3, 0x12, 0xA3, 0x6A, 0xA3, 0xC3, 0xA4, 0x1B, 0xA4, 0x74, 0xA4, 0xCC, 0xA5, 0x24, 0xA5, 0x7C, 0xA5, 0xD3, 0xA6, 0x2B, 0xA6, 0x83, 0xA6, 0xDA, 0xA7, 0x31, 0xA7, 0x89, 0xA7, 0xE0, 0xA8, 0x36, 0xA8, 0x8D, 0xA8, 0xE4, 0xA9, 0x3A, 0xA9, 0x91, 0xA9, 0xE7, 0xAA, 0x3D, 0xAA, 0x93, 0xAA, 0xE9, 0xAB, 0x3F, 0xAB, 0x95, 0xAB, 0xEB, 0xAC, 0x40, 0xAC, 0x96, 0xAC, 0xEC, 0xAD, 0x41, 0xAD, 0x97, 0xAD, 0xED, 0xAE, 0x43, 0xAE, 0x98, 0xAE, 0xEE, 0xAF, 0x44, 0xAF, 0x9A, 0xAF, 0xF0, 0xB0, 0x46, 0xB0, 0x9C, 0xB0, 0xF2, 0xB1, 0x48, 0xB1, 0x9E, 0xB1, 0xF4, 0xB2, 0x4A, 0xB2, 0xA0, 0xB2, 0xF6, 0xB3, 0x4C, 0xB3, 0xA2, 0xB3, 0xF8, 0xB4, 0x4E, 0xB4, 0xA4, 0xB4, 0xFB, 0xB5, 0x51, 0xB5, 0xA7, 0xB5, 0xFD, 0xB6, 0x53, 0xB6, 0xAA, 0xB7, 0x00, 0xB7, 0x56, 0xB7, 0xAD, 0xB8, 0x03, 0xB8, 0x59, 0xB8, 0xB0, 0xB9, 0x06, 0xB9, 0x5D, 0xB9, 0xB3, 0xBA, 0x09, 0xBA, 0x5B, 0xBA, 0xA9, 0xBA, 0xF7, 0xBB, 0x45, 0xBB, 0x93, 0xBB, 0xE1, 0xBC, 0x2F, 0xBC, 0x7E, 0xBC, 0xCC, 0xBD, 0x1A, 0xBD, 0x68, 0xBD, 0xB6, 0xBE, 0x05, 0xBE, 0x53, 0xBE, 0xA1, 0xBE, 0xEF, 0xBF, 0x3E, 0xBF, 0x8C, 0xBF, 0xDB, 0xC0, 0x29, 0xC0, 0x78, 0xC0, 0xC6, 0xC1, 0x15, 0xC1, 0x64, 0xC1, 0xB3, 0xC2, 0x02, 0xC2, 0x51, 0xC2, 0xA0, 0xC2, 0xEF, 0xC3, 0x3E, 0xC3, 0x8D, 0xC3, 0xDD, 0xC4, 0x2C, 0xC4, 0x7B, 0xC4, 0xCB, 0xC5, 0x1B, 0xC5, 0x6A, 0xC5, 0xBA, 0xC6, 0x0A, 0xC6, 0x5A, 0xC6, 0xA9, 0xC6, 0xF9, 0xC7, 0x49, 0xC7, 0x9A, 0xC7, 0xEA, 0xC8, 0x3A, 0xC8, 0x8A, 0xC8, 0xDB, 0xC9, 0x2B, 0xC9, 0x7B, 0xC9, 0xCC, 0xCA, 0x1C, 0xCA, 0x6D, 0xCA, 0xBE, 0xCB, 0x0F, 0xCB, 0x60, 0xCB, 0xB1, 0xCC, 0x02, 0xCC, 0x53, 0xCC, 0xA5, 0xCC, 0xF7, 0xCD, 0x48, 0xCD, 0x9A, 0xCD, 0xEC, 0xCE, 0x3E, 0xCE, 0x91, 0xCE, 0xE3, 0xCF, 0x36, 0xCF, 0x88, 0xCF, 0xDB, 0xD0, 0x2E, 0xD0, 0x81, 0xD0, 0xD4, 0xD1, 0x27, 0xD1, 0x7B, 0xD1, 0xCE, 0xD2, 0x22, 0xD2, 0x76, 0xD2, 0xCA, 0xD3, 0x1E, 0xD3, 0x72, 0xD3, 0xC7, 0xD4, 0x1B, 0xD4, 0x70, 0xD4, 0xC4, 0xD5, 0x19, 0xD5, 0x6E, 0xD5, 0xC4, 0xD6, 0x19, 0xD6, 0x6F, 0xD6, 0xC4, 0xD7, 0x1A, 0xD7, 0x70, 0xD7, 0xC6, 0xD8, 0x1C, 0xD8, 0x72, 0xD8, 0xC9, 0xD9, 0x20, 0xD9, 0x76, 0xD9, 0xCD, 0xDA, 0x24, 0xDA, 0x7C, 0xDA, 0xD3, 0xDB, 0x2B, 0xDB, 0x82, 0xDB, 0xDA, 0xDC, 0x32, 0xDC, 0x8A, 0xDC, 0xE3, 0xDD, 0x3B, 0xDD, 0x94, 0xDD, 0xED, 0xDE, 0x46, 0xDE, 0x9F, 0xDE, 0xF8, 0xDF, 0x52, 0xDF, 0xAB, 0xE0, 0x05, 0xE0, 0x5F, 0xE0, 0xB9, 0xE1, 0x13, 0xE1, 0x6E, 0xE1, 0xC8, 0xE2, 0x23, 0xE2, 0x7E, 0xE2, 0xD9, 0xE3, 0x35, 0xE3, 0x88, 0xE3, 0xBF, 0xE3, 0xDF, 0xE3, 0xFF, 0xE4, 0x1F, 0xE4, 0x3F, 0xE4, 0x5F, 0xE4, 0x7F, 0xE4, 0x9F, 0xE4, 0xBF, 0xE4, 0xDF, 0xE4, 0xFF, 0xE5, 0x1F, 0xE5, 0x40, 0xE5, 0x60, 0xE5, 0x80, 0xE5, 0xA0, 0xE5, 0xC0, 0xE5, 0xE1, 0xE6, 0x01, 0xE6, 0x21, 0xE6, 0x42, 0xE6, 0x62, 0xE6, 0x82, 0xE6, 0xA3, 0xE6, 0xC3, 0xE6, 0xE4, 0xE7, 0x04, 0xE7, 0x25, 0xE7, 0x45, 0xE7, 0x66, 0xE7, 0x86, 0xE7, 0xA7, 0xE7, 0xC8, 0xE7, 0xE8, 0xE8, 0x09, 0xE8, 0x29, 0xE8, 0x4A, 0xE8, 0x6B, 0xE8, 0x8C, 0xE8, 0xAC, 0xE8, 0xCD, 0xE8, 0xEE, 0xE9, 0x0F, 0xE9, 0x30, 0xE9, 0x51, 0xE9, 0x71, 0xE9, 0x92, 0xE9, 0xB3, 0xE9, 0xD4, 0xE9, 0xF5, 0xEA, 0x16, 0xEA, 0x37, 0xEA, 0x58, 0xEA, 0x7A, 0xEA, 0x9B, 0xEA, 0xBC, 0xEA, 0xDD, 0xEA, 0xFE, 0xEB, 0x1F, 0xEB, 0x41, 0xEB, 0x62, 0xEB, 0x83, 0xEB, 0xA4, 0xEB, 0xC6, 0xEB, 0xE7, 0xEC, 0x09, 0xEC, 0x2A, 0xEC, 0x4B, 0xEC, 0x6D, 0xEC, 0x8E, 0xEC, 0xB0, 0xEC, 0xD1, 0xEC, 0xF3, 0xED, 0x14, 0xED, 0x36, 0xED, 0x58, 0xED, 0x79, 0xED, 0x9B, 0xED, 0xBD, 0xED, 0xDE, 0xEE, 0x00, 0xEE, 0x22, 0xEE, 0x44, 0xEE, 0x65, 0xEE, 0x87, 0xEE, 0xA9, 0xEE, 0xCB, 0xEE, 0xED, 0xEF, 0x0F, 0xEF, 0x31, 0xEF, 0x53, 0xEF, 0x75, 0xEF, 0x97, 0xEF, 0xB9, 0xEF, 0xDB, 0xEF, 0xFD, 0xF0, 0x1F, 0xF0, 0x41, 0xF0, 0x64, 0xF0, 0x86, 0xF0, 0xA8, 0xF0, 0xCA, 0xF0, 0xED, 0xF1, 0x0F, 0xF1, 0x31, 0xF1, 0x54, 0xF1, 0x76, 0xF1, 0x98, 0xF1, 0xBB, 0xF1, 0xDD, 0xF2, 0x00, 0xF2, 0x22, 0xF2, 0x45, 0xF2, 0x67, 0xF2, 0x8A, 0xF2, 0xAC, 0xF2, 0xCF, 0xF2, 0xF2, 0xF3, 0x14, 0xF3, 0x37, 0xF3, 0x5A, 0xF3, 0x7D, 0xF3, 0x9F, 0xF3, 0xC2, 0xF3, 0xE5, 0xF4, 0x08, 0xF4, 0x2B, 0xF4, 0x49, 0xF4, 0x63, 0xF4, 0x7D, 0xF4, 0x93, 0xF4, 0xAA, 0xF4, 0xC1, 0xF4, 0xD7, 0xF4, 0xEE, 0xF5, 0x05, 0xF5, 0x1C, 0xF5, 0x32, 0xF5, 0x49, 0xF5, 0x60, 0xF5, 0x77, 0xF5, 0x8E, 0xF5, 0xA4, 0xF5, 0xBB, 0xF5, 0xD2, 0xF5, 0xE9, 0xF6, 0x00, 0xF6, 0x17, 0xF6, 0x2E, 0xF6, 0x44, 0xF6, 0x5B, 0xF6, 0x72, 0xF6, 0x89, 0xF6, 0xA0, 0xF6, 0xB7, 0xF6, 0xCE, 0xF6, 0xE5, 0xF6, 0xFC, 0xF7, 0x13, 0xF7, 0x2A, 0xF7, 0x41, 0xF7, 0x58, 0xF7, 0x6F, 0xF7, 0x86, 0xF7, 0x9D, 0xF7, 0xB4, 0xF7, 0xCB, 0xF7, 0xE2, 0xF7, 0xF9, 0xF8, 0x11, 0xF8, 0x28, 0xF8, 0x3F, 0xF8, 0x56, 0xF8, 0x6D, 0xF8, 0x84, 0xF8, 0x9B, 0xF8, 0xB3, 0xF8, 0xCA, 0xF8, 0xE1, 0xF8, 0xF8, 0xF9, 0x10, 0xF9, 0x27, 0xF9, 0x3E, 0xF9, 0x55, 0xF9, 0x6D, 0xF9, 0x84, 0xF9, 0x9B, 0xF9, 0xB3, 0xF9, 0xCA, 0xF9, 0xE1, 0xF9, 0xF9, 0xFA, 0x10, 0xFA, 0x27, 0xFA, 0x3F, 0xFA, 0x56, 0xFA, 0x6D, 0xFA, 0x85, 0xFA, 0x9C, 0xFA, 0xB4, 0xFA, 0xCB, 0xFA, 0xE3, 0xFA, 0xFA, 0xFB, 0x12, 0xFB, 0x29, 0xFB, 0x41, 0xFB, 0x58, 0xFB, 0x70, 0xFB, 0x87, 0xFB, 0x9F, 0xFB, 0xB6, 0xFB, 0xCE, 0xFB, 0xE6, 0xFB, 0xFD, 0xFC, 0x15, 0xFC, 0x2C, 0xFC, 0x44, 0xFC, 0x5C, 0xFC, 0x73, 0xFC, 0x8B, 0xFC, 0xA3, 0xFC, 0xBA, 0xFC, 0xD2, 0xFC, 0xEA, 0xFD, 0x01, 0xFD, 0x19, 0xFD, 0x31, 0xFD, 0x49, 0xFD, 0x61, 0xFD, 0x78, 0xFD, 0x90, 0xFD, 0xA8, 0xFD, 0xC0, 0xFD, 0xD8, 0xFD, 0xEF, 0xFE, 0x07, 0xFE, 0x1F, 0xFE, 0x37, 0xFE, 0x4F, 0xFE, 0x67, 0xFE, 0x7F, 0xFE, 0x97, 0xFE, 0xAF, 0xFE, 0xC7, 0xFE, 0xDF, 0xFE, 0xF7, 0xFF, 0x0E, 0xFF, 0x26, 0xFF, 0x3E, 0xFF, 0x57, 0xFF, 0x6F, 0xFF, 0x87, 0xFF, 0x9F, 0xFF, 0xB7, 0xFF, 0xCF, 0xFF, 0xE7, 0xFF, 0xFF, 0x6D, 0x66, 0x74, 0x32, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x81, 0x00, 0xC1, 0x01, 0x01, 0x01, 0x42, 0x01, 0x82, 0x01, 0xC2, 0x02, 0x02, 0x02, 0x43, 0x02, 0x83, 0x02, 0xC3, 0x03, 0x04, 0x03, 0x44, 0x03, 0x84, 0x03, 0xC5, 0x04, 0x05, 0x04, 0x45, 0x04, 0x86, 0x04, 0xC6, 0x05, 0x06, 0x05, 0x47, 0x05, 0x87, 0x05, 0xC7, 0x06, 0x07, 0x06, 0x48, 0x06, 0x88, 0x06, 0xC8, 0x07, 0x09, 0x07, 0x49, 0x07, 0x89, 0x07, 0xCA, 0x08, 0x0A, 0x08, 0x4A, 0x08, 0x8B, 0x08, 0xCB, 0x09, 0x0B, 0x09, 0x4C, 0x09, 0x8C, 0x09, 0xCC, 0x0A, 0x0C, 0x0A, 0x4D, 0x0A, 0x8D, 0x0A, 0xCD, 0x0B, 0x0E, 0x0B, 0x4E, 0x0B, 0x8E, 0x0B, 0xCF, 0x0C, 0x0F, 0x0C, 0x4F, 0x0C, 0x90, 0x0C, 0xD0, 0x0D, 0x10, 0x0D, 0x51, 0x0D, 0x91, 0x0D, 0xD1, 0x0E, 0x11, 0x0E, 0x52, 0x0E, 0x92, 0x0E, 0xD2, 0x0F, 0x13, 0x0F, 0x53, 0x0F, 0x93, 0x0F, 0xD4, 0x10, 0x14, 0x10, 0x54, 0x10, 0x95, 0x10, 0xD5, 0x11, 0x15, 0x11, 0x56, 0x11, 0x96, 0x11, 0xD6, 0x12, 0x16, 0x12, 0x57, 0x12, 0x97, 0x12, 0xD7, 0x13, 0x18, 0x13, 0x58, 0x13, 0x98, 0x13, 0xD9, 0x14, 0x19, 0x14, 0x59, 0x14, 0x9A, 0x14, 0xDA, 0x15, 0x1A, 0x15, 0x5B, 0x15, 0x9B, 0x15, 0xDB, 0x16, 0x1B, 0x16, 0x5C, 0x16, 0x9C, 0x16, 0xDC, 0x17, 0x1D, 0x17, 0x5D, 0x17, 0x9D, 0x17, 0xDE, 0x18, 0x1E, 0x18, 0x5E, 0x18, 0x9F, 0x18, 0xDF, 0x19, 0x1F, 0x19, 0x5F, 0x19, 0xA0, 0x19, 0xE0, 0x1A, 0x20, 0x1A, 0x61, 0x1A, 0xA1, 0x1A, 0xE1, 0x1B, 0x22, 0x1B, 0x62, 0x1B, 0xA2, 0x1B, 0xE3, 0x1C, 0x23, 0x1C, 0x63, 0x1C, 0xA4, 0x1C, 0xE4, 0x1D, 0x24, 0x1D, 0x64, 0x1D, 0xA5, 0x1D, 0xE5, 0x1E, 0x25, 0x1E, 0x66, 0x1E, 0xA6, 0x1E, 0xE6, 0x1F, 0x27, 0x1F, 0x67, 0x1F, 0xA7, 0x1F, 0xE8, 0x20, 0x28, 0x20, 0x68, 0x20, 0xA9, 0x20, 0xE9, 0x21, 0x29, 0x21, 0x69, 0x21, 0xAA, 0x21, 0xEA, 0x22, 0x2A, 0x22, 0x6B, 0x22, 0xAB, 0x22, 0xEB, 0x23, 0x2C, 0x23, 0x6C, 0x23, 0xAC, 0x23, 0xED, 0x24, 0x2D, 0x24, 0x6D, 0x24, 0xAE, 0x24, 0xEE, 0x25, 0x2E, 0x25, 0x6E, 0x25, 0xAF, 0x25, 0xEF, 0x26, 0x2F, 0x26, 0x70, 0x26, 0xB0, 0x26, 0xF0, 0x27, 0x31, 0x27, 0x71, 0x27, 0xB1, 0x27, 0xF2, 0x28, 0x32, 0x28, 0x72, 0x28, 0xB3, 0x28, 0xF3, 0x29, 0x33, 0x29, 0x73, 0x29, 0xB4, 0x29, 0xF4, 0x2A, 0x34, 0x2A, 0x75, 0x2A, 0xB5, 0x2A, 0xF5, 0x2B, 0x36, 0x2B, 0x76, 0x2B, 0xB6, 0x2B, 0xF7, 0x2C, 0x37, 0x2C, 0x77, 0x2C, 0xB8, 0x2C, 0xF8, 0x2D, 0x38, 0x2D, 0x78, 0x2D, 0xB9, 0x2D, 0xF9, 0x2E, 0x39, 0x2E, 0x7A, 0x2E, 0xBA, 0x2E, 0xFA, 0x2F, 0x3B, 0x2F, 0x7B, 0x2F, 0xBB, 0x2F, 0xFC, 0x30, 0x3C, 0x30, 0x7C, 0x30, 0xBC, 0x30, 0xFD, 0x31, 0x3D, 0x31, 0x7D, 0x31, 0xBE, 0x31, 0xFE, 0x32, 0x3E, 0x32, 0x7F, 0x32, 0xBF, 0x32, 0xFF, 0x33, 0x40, 0x33, 0x80, 0x33, 0xC0, 0x34, 0x01, 0x34, 0x41, 0x34, 0x81, 0x34, 0xC1, 0x35, 0x02, 0x35, 0x42, 0x35, 0x82, 0x35, 0xC3, 0x36, 0x03, 0x36, 0x43, 0x36, 0x84, 0x36, 0xC4, 0x37, 0x04, 0x37, 0x45, 0x37, 0x85, 0x37, 0xC5, 0x38, 0x06, 0x38, 0x46, 0x38, 0x86, 0x38, 0xC6, 0x39, 0x07, 0x39, 0x47, 0x39, 0x87, 0x39, 0xC8, 0x3A, 0x08, 0x3A, 0x48, 0x3A, 0x89, 0x3A, 0xC9, 0x3B, 0x09, 0x3B, 0x4A, 0x3B, 0x8A, 0x3B, 0xCA, 0x3C, 0x0B, 0x3C, 0x4B, 0x3C, 0x8B, 0x3C, 0xCB, 0x3D, 0x0C, 0x3D, 0x4C, 0x3D, 0x8C, 0x3D, 0xCD, 0x3E, 0x0D, 0x3E, 0x4D, 0x3E, 0x8E, 0x3E, 0xCE, 0x3F, 0x0E, 0x3F, 0x4F, 0x3F, 0x8F, 0x3F, 0xCF, 0x40, 0x10, 0x40, 0x50, 0x40, 0x90, 0x40, 0xD0, 0x41, 0x11, 0x41, 0x51, 0x41, 0x91, 0x41, 0xD2, 0x42, 0x12, 0x42, 0x52, 0x42, 0x93, 0x42, 0xD3, 0x43, 0x13, 0x43, 0x54, 0x43, 0x94, 0x43, 0xD4, 0x44, 0x15, 0x44, 0x55, 0x44, 0x95, 0x44, 0xD5, 0x45, 0x16, 0x45, 0x56, 0x45, 0x96, 0x45, 0xD7, 0x46, 0x17, 0x46, 0x57, 0x46, 0x98, 0x46, 0xD8, 0x47, 0x18, 0x47, 0x59, 0x47, 0x99, 0x47, 0xD9, 0x48, 0x19, 0x48, 0x5A, 0x48, 0x9A, 0x48, 0xDA, 0x49, 0x1B, 0x49, 0x5B, 0x49, 0x9B, 0x49, 0xDC, 0x4A, 0x1C, 0x4A, 0x5C, 0x4A, 0x9D, 0x4A, 0xDD, 0x4B, 0x1D, 0x4B, 0x5E, 0x4B, 0x9E, 0x4B, 0xDE, 0x4C, 0x1E, 0x4C, 0x5F, 0x4C, 0x9F, 0x4C, 0xDF, 0x4D, 0x20, 0x4D, 0x60, 0x4D, 0xA0, 0x4D, 0xE1, 0x4E, 0x21, 0x4E, 0x61, 0x4E, 0xA2, 0x4E, 0xE2, 0x4F, 0x22, 0x4F, 0x63, 0x4F, 0xA3, 0x4F, 0xE3, 0x50, 0x23, 0x50, 0x64, 0x50, 0xA4, 0x50, 0xE4, 0x51, 0x25, 0x51, 0x65, 0x51, 0xA5, 0x51, 0xE6, 0x52, 0x26, 0x52, 0x66, 0x52, 0xA7, 0x52, 0xE7, 0x53, 0x27, 0x53, 0x68, 0x53, 0xA8, 0x53, 0xE8, 0x54, 0x28, 0x54, 0x69, 0x54, 0xA9, 0x54, 0xE9, 0x55, 0x2A, 0x55, 0x6A, 0x55, 0xAA, 0x55, 0xEB, 0x56, 0x2B, 0x56, 0x6B, 0x56, 0xAC, 0x56, 0xEC, 0x57, 0x2C, 0x57, 0x6D, 0x57, 0xAD, 0x57, 0xED, 0x58, 0x2D, 0x58, 0x6E, 0x58, 0xAE, 0x58, 0xEE, 0x59, 0x2F, 0x59, 0x6F, 0x59, 0xAF, 0x59, 0xF0, 0x5A, 0x30, 0x5A, 0x70, 0x5A, 0xB1, 0x5A, 0xF1, 0x5B, 0x31, 0x5B, 0x72, 0x5B, 0xB2, 0x5B, 0xF2, 0x5C, 0x32, 0x5C, 0x73, 0x5C, 0xB3, 0x5C, 0xF3, 0x5D, 0x34, 0x5D, 0x74, 0x5D, 0xB4, 0x5D, 0xF5, 0x5E, 0x35, 0x5E, 0x75, 0x5E, 0xB6, 0x5E, 0xF6, 0x5F, 0x36, 0x5F, 0x76, 0x5F, 0xB7, 0x5F, 0xF7, 0x60, 0x37, 0x60, 0x78, 0x60, 0xB8, 0x60, 0xF8, 0x61, 0x39, 0x61, 0x79, 0x61, 0xB9, 0x61, 0xFA, 0x62, 0x3A, 0x62, 0x7A, 0x62, 0xBB, 0x62, 0xFB, 0x63, 0x3B, 0x63, 0x7B, 0x63, 0xBC, 0x63, 0xFC, 0x64, 0x3C, 0x64, 0x7D, 0x64, 0xBD, 0x64, 0xFD, 0x65, 0x3E, 0x65, 0x7E, 0x65, 0xBE, 0x65, 0xFF, 0x66, 0x3F, 0x66, 0x7F, 0x66, 0xC0, 0x67, 0x00, 0x67, 0x40, 0x67, 0x80, 0x67, 0xC1, 0x68, 0x01, 0x68, 0x41, 0x68, 0x82, 0x68, 0xC2, 0x69, 0x02, 0x69, 0x43, 0x69, 0x83, 0x69, 0xC3, 0x6A, 0x04, 0x6A, 0x44, 0x6A, 0x84, 0x6A, 0xC5, 0x6B, 0x05, 0x6B, 0x45, 0x6B, 0x85, 0x6B, 0xC6, 0x6C, 0x06, 0x6C, 0x46, 0x6C, 0x87, 0x6C, 0xC7, 0x6D, 0x07, 0x6D, 0x48, 0x6D, 0x88, 0x6D, 0xC8, 0x6E, 0x09, 0x6E, 0x49, 0x6E, 0x89, 0x6E, 0xCA, 0x6F, 0x0A, 0x6F, 0x4A, 0x6F, 0x8A, 0x6F, 0xCB, 0x70, 0x0B, 0x70, 0x4B, 0x70, 0x8C, 0x70, 0xCC, 0x71, 0x0C, 0x71, 0x4D, 0x71, 0x8D, 0x71, 0xCD, 0x72, 0x0E, 0x72, 0x4E, 0x72, 0x8E, 0x72, 0xCF, 0x73, 0x0F, 0x73, 0x4F, 0x73, 0x8F, 0x73, 0xD0, 0x74, 0x10, 0x74, 0x50, 0x74, 0x91, 0x74, 0xD1, 0x75, 0x11, 0x75, 0x52, 0x75, 0x92, 0x75, 0xD2, 0x76, 0x13, 0x76, 0x53, 0x76, 0x93, 0x76, 0xD3, 0x77, 0x14, 0x77, 0x54, 0x77, 0x94, 0x77, 0xD5, 0x78, 0x15, 0x78, 0x55, 0x78, 0x96, 0x78, 0xD6, 0x79, 0x16, 0x79, 0x57, 0x79, 0x97, 0x79, 0xD7, 0x7A, 0x18, 0x7A, 0x58, 0x7A, 0x98, 0x7A, 0xD8, 0x7B, 0x19, 0x7B, 0x59, 0x7B, 0x99, 0x7B, 0xDA, 0x7C, 0x1A, 0x7C, 0x5A, 0x7C, 0x9B, 0x7C, 0xDB, 0x7D, 0x1B, 0x7D, 0x5C, 0x7D, 0x9C, 0x7D, 0xDC, 0x7E, 0x1D, 0x7E, 0x5D, 0x7E, 0x9D, 0x7E, 0xDD, 0x7F, 0x1E, 0x7F, 0x5E, 0x7F, 0x9E, 0x7F, 0xDF, 0x80, 0x1F, 0x80, 0x5F, 0x80, 0xA0, 0x80, 0xE0, 0x81, 0x20, 0x81, 0x61, 0x81, 0xA1, 0x81, 0xE1, 0x82, 0x22, 0x82, 0x62, 0x82, 0xA2, 0x82, 0xE2, 0x83, 0x23, 0x83, 0x63, 0x83, 0xA3, 0x83, 0xE4, 0x84, 0x24, 0x84, 0x64, 0x84, 0xA5, 0x84, 0xE5, 0x85, 0x25, 0x85, 0x66, 0x85, 0xA6, 0x85, 0xE6, 0x86, 0x27, 0x86, 0x67, 0x86, 0xA7, 0x86, 0xE7, 0x87, 0x28, 0x87, 0x68, 0x87, 0xA8, 0x87, 0xE9, 0x88, 0x29, 0x88, 0x69, 0x88, 0xAA, 0x88, 0xEA, 0x89, 0x2A, 0x89, 0x6B, 0x89, 0xAB, 0x89, 0xEB, 0x8A, 0x2C, 0x8A, 0x6C, 0x8A, 0xAC, 0x8A, 0xEC, 0x8B, 0x2D, 0x8B, 0x6D, 0x8B, 0xAD, 0x8B, 0xEE, 0x8C, 0x2E, 0x8C, 0x6E, 0x8C, 0xAF, 0x8C, 0xEF, 0x8D, 0x2F, 0x8D, 0x70, 0x8D, 0xB0, 0x8D, 0xF0, 0x8E, 0x30, 0x8E, 0x71, 0x8E, 0xB1, 0x8E, 0xF1, 0x8F, 0x32, 0x8F, 0x72, 0x8F, 0xB2, 0x8F, 0xF3, 0x90, 0x33, 0x90, 0x73, 0x90, 0xB4, 0x90, 0xF4, 0x91, 0x34, 0x91, 0x75, 0x91, 0xB5, 0x91, 0xF5, 0x92, 0x35, 0x92, 0x76, 0x92, 0xB6, 0x92, 0xF6, 0x93, 0x37, 0x93, 0x77, 0x93, 0xB7, 0x93, 0xF8, 0x94, 0x38, 0x94, 0x78, 0x94, 0xB9, 0x94, 0xF9, 0x95, 0x39, 0x95, 0x7A, 0x95, 0xBA, 0x95, 0xFA, 0x96, 0x3A, 0x96, 0x7B, 0x96, 0xBB, 0x96, 0xFB, 0x97, 0x3C, 0x97, 0x7C, 0x97, 0xBC, 0x97, 0xFD, 0x98, 0x3D, 0x98, 0x7D, 0x98, 0xBE, 0x98, 0xFE, 0x99, 0x3E, 0x99, 0x7F, 0x99, 0xBF, 0x99, 0xFF, 0x9A, 0x3F, 0x9A, 0x80, 0x9A, 0xC0, 0x9B, 0x00, 0x9B, 0x41, 0x9B, 0x81, 0x9B, 0xC1, 0x9C, 0x02, 0x9C, 0x42, 0x9C, 0x82, 0x9C, 0xC3, 0x9D, 0x03, 0x9D, 0x43, 0x9D, 0x84, 0x9D, 0xC4, 0x9E, 0x04, 0x9E, 0x44, 0x9E, 0x85, 0x9E, 0xC5, 0x9F, 0x05, 0x9F, 0x46, 0x9F, 0x86, 0x9F, 0xC6, 0xA0, 0x07, 0xA0, 0x47, 0xA0, 0x87, 0xA0, 0xC8, 0xA1, 0x08, 0xA1, 0x48, 0xA1, 0x89, 0xA1, 0xC9, 0xA2, 0x09, 0xA2, 0x49, 0xA2, 0x8A, 0xA2, 0xCA, 0xA3, 0x0A, 0xA3, 0x4B, 0xA3, 0x8B, 0xA3, 0xCB, 0xA4, 0x0C, 0xA4, 0x4C, 0xA4, 0x8C, 0xA4, 0xCD, 0xA5, 0x0D, 0xA5, 0x4D, 0xA5, 0x8D, 0xA5, 0xCE, 0xA6, 0x0E, 0xA6, 0x4E, 0xA6, 0x8F, 0xA6, 0xCF, 0xA7, 0x0F, 0xA7, 0x50, 0xA7, 0x90, 0xA7, 0xD0, 0xA8, 0x11, 0xA8, 0x51, 0xA8, 0x91, 0xA8, 0xD2, 0xA9, 0x12, 0xA9, 0x52, 0xA9, 0x92, 0xA9, 0xD3, 0xAA, 0x13, 0xAA, 0x53, 0xAA, 0x94, 0xAA, 0xD4, 0xAB, 0x14, 0xAB, 0x55, 0xAB, 0x95, 0xAB, 0xD5, 0xAC, 0x16, 0xAC, 0x56, 0xAC, 0x96, 0xAC, 0xD7, 0xAD, 0x17, 0xAD, 0x57, 0xAD, 0x97, 0xAD, 0xD8, 0xAE, 0x18, 0xAE, 0x58, 0xAE, 0x99, 0xAE, 0xD9, 0xAF, 0x19, 0xAF, 0x5A, 0xAF, 0x9A, 0xAF, 0xDA, 0xB0, 0x1B, 0xB0, 0x5B, 0xB0, 0x9B, 0xB0, 0xDC, 0xB1, 0x1C, 0xB1, 0x5C, 0xB1, 0x9C, 0xB1, 0xDD, 0xB2, 0x1D, 0xB2, 0x5D, 0xB2, 0x9E, 0xB2, 0xDE, 0xB3, 0x1E, 0xB3, 0x5F, 0xB3, 0x9F, 0xB3, 0xDF, 0xB4, 0x20, 0xB4, 0x60, 0xB4, 0xA0, 0xB4, 0xE1, 0xB5, 0x21, 0xB5, 0x61, 0xB5, 0xA1, 0xB5, 0xE2, 0xB6, 0x22, 0xB6, 0x62, 0xB6, 0xA3, 0xB6, 0xE3, 0xB7, 0x23, 0xB7, 0x64, 0xB7, 0xA4, 0xB7, 0xE4, 0xB8, 0x25, 0xB8, 0x65, 0xB8, 0xA5, 0xB8, 0xE6, 0xB9, 0x26, 0xB9, 0x66, 0xB9, 0xA6, 0xB9, 0xE7, 0xBA, 0x27, 0xBA, 0x67, 0xBA, 0xA8, 0xBA, 0xE8, 0xBB, 0x28, 0xBB, 0x69, 0xBB, 0xA9, 0xBB, 0xE9, 0xBC, 0x2A, 0xBC, 0x6A, 0xBC, 0xAA, 0xBC, 0xEA, 0xBD, 0x2B, 0xBD, 0x6B, 0xBD, 0xAB, 0xBD, 0xEC, 0xBE, 0x2C, 0xBE, 0x6C, 0xBE, 0xAD, 0xBE, 0xED, 0xBF, 0x2D, 0xBF, 0x6E, 0xBF, 0xAE, 0xBF, 0xEE, 0xC0, 0x2F, 0xC0, 0x6F, 0xC0, 0xAF, 0xC0, 0xEF, 0xC1, 0x30, 0xC1, 0x70, 0xC1, 0xB0, 0xC1, 0xF1, 0xC2, 0x31, 0xC2, 0x71, 0xC2, 0xB2, 0xC2, 0xF2, 0xC3, 0x32, 0xC3, 0x73, 0xC3, 0xB3, 0xC3, 0xF3, 0xC4, 0x34, 0xC4, 0x74, 0xC4, 0xB4, 0xC4, 0xF4, 0xC5, 0x35, 0xC5, 0x75, 0xC5, 0xB5, 0xC5, 0xF6, 0xC6, 0x36, 0xC6, 0x76, 0xC6, 0xB7, 0xC6, 0xF7, 0xC7, 0x37, 0xC7, 0x78, 0xC7, 0xB8, 0xC7, 0xF8, 0xC8, 0x39, 0xC8, 0x79, 0xC8, 0xB9, 0xC8, 0xF9, 0xC9, 0x3A, 0xC9, 0x7A, 0xC9, 0xBA, 0xC9, 0xFB, 0xCA, 0x3B, 0xCA, 0x7B, 0xCA, 0xBC, 0xCA, 0xFC, 0xCB, 0x3C, 0xCB, 0x7D, 0xCB, 0xBD, 0xCB, 0xFD, 0xCC, 0x3E, 0xCC, 0x7E, 0xCC, 0xBE, 0xCC, 0xFE, 0xCD, 0x3F, 0xCD, 0x7F, 0xCD, 0xBF, 0xCE, 0x00, 0xCE, 0x40, 0xCE, 0x80, 0xCE, 0xC1, 0xCF, 0x01, 0xCF, 0x41, 0xCF, 0x82, 0xCF, 0xC2, 0xD0, 0x02, 0xD0, 0x43, 0xD0, 0x83, 0xD0, 0xC3, 0xD1, 0x03, 0xD1, 0x44, 0xD1, 0x84, 0xD1, 0xC4, 0xD2, 0x05, 0xD2, 0x45, 0xD2, 0x85, 0xD2, 0xC6, 0xD3, 0x06, 0xD3, 0x46, 0xD3, 0x87, 0xD3, 0xC7, 0xD4, 0x07, 0xD4, 0x47, 0xD4, 0x88, 0xD4, 0xC8, 0xD5, 0x08, 0xD5, 0x49, 0xD5, 0x89, 0xD5, 0xC9, 0xD6, 0x0A, 0xD6, 0x4A, 0xD6, 0x8A, 0xD6, 0xCB, 0xD7, 0x0B, 0xD7, 0x4B, 0xD7, 0x8C, 0xD7, 0xCC, 0xD8, 0x0C, 0xD8, 0x4C, 0xD8, 0x8D, 0xD8, 0xCD, 0xD9, 0x0D, 0xD9, 0x4E, 0xD9, 0x8E, 0xD9, 0xCE, 0xDA, 0x0F, 0xDA, 0x4F, 0xDA, 0x8F, 0xDA, 0xD0, 0xDB, 0x10, 0xDB, 0x50, 0xDB, 0x91, 0xDB, 0xD1, 0xDC, 0x11, 0xDC, 0x51, 0xDC, 0x92, 0xDC, 0xD2, 0xDD, 0x12, 0xDD, 0x53, 0xDD, 0x93, 0xDD, 0xD3, 0xDE, 0x14, 0xDE, 0x54, 0xDE, 0x94, 0xDE, 0xD5, 0xDF, 0x15, 0xDF, 0x55, 0xDF, 0x96, 0xDF, 0xD6, 0xE0, 0x16, 0xE0, 0x56, 0xE0, 0x97, 0xE0, 0xD7, 0xE1, 0x17, 0xE1, 0x58, 0xE1, 0x98, 0xE1, 0xD8, 0xE2, 0x19, 0xE2, 0x59, 0xE2, 0x99, 0xE2, 0xDA, 0xE3, 0x1A, 0xE3, 0x5A, 0xE3, 0x9B, 0xE3, 0xDB, 0xE4, 0x1B, 0xE4, 0x5B, 0xE4, 0x9C, 0xE4, 0xDC, 0xE5, 0x1C, 0xE5, 0x5D, 0xE5, 0x9D, 0xE5, 0xDD, 0xE6, 0x1E, 0xE6, 0x5E, 0xE6, 0x9E, 0xE6, 0xDF, 0xE7, 0x1F, 0xE7, 0x5F, 0xE7, 0xA0, 0xE7, 0xE0, 0xE8, 0x20, 0xE8, 0x60, 0xE8, 0xA1, 0xE8, 0xE1, 0xE9, 0x21, 0xE9, 0x62, 0xE9, 0xA2, 0xE9, 0xE2, 0xEA, 0x23, 0xEA, 0x63, 0xEA, 0xA3, 0xEA, 0xE4, 0xEB, 0x24, 0xEB, 0x64, 0xEB, 0xA4, 0xEB, 0xE5, 0xEC, 0x25, 0xEC, 0x65, 0xEC, 0xA6, 0xEC, 0xE6, 0xED, 0x26, 0xED, 0x67, 0xED, 0xA7, 0xED, 0xE7, 0xEE, 0x28, 0xEE, 0x68, 0xEE, 0xA8, 0xEE, 0xE9, 0xEF, 0x29, 0xEF, 0x69, 0xEF, 0xA9, 0xEF, 0xEA, 0xF0, 0x2A, 0xF0, 0x6A, 0xF0, 0xAB, 0xF0, 0xEB, 0xF1, 0x2B, 0xF1, 0x6C, 0xF1, 0xAC, 0xF1, 0xEC, 0xF2, 0x2D, 0xF2, 0x6D, 0xF2, 0xAD, 0xF2, 0xEE, 0xF3, 0x2E, 0xF3, 0x6E, 0xF3, 0xAE, 0xF3, 0xEF, 0xF4, 0x2F, 0xF4, 0x6F, 0xF4, 0xB0, 0xF4, 0xF0, 0xF5, 0x30, 0xF5, 0x71, 0xF5, 0xB1, 0xF5, 0xF1, 0xF6, 0x32, 0xF6, 0x72, 0xF6, 0xB2, 0xF6, 0xF3, 0xF7, 0x33, 0xF7, 0x73, 0xF7, 0xB3, 0xF7, 0xF4, 0xF8, 0x34, 0xF8, 0x74, 0xF8, 0xB5, 0xF8, 0xF5, 0xF9, 0x35, 0xF9, 0x76, 0xF9, 0xB6, 0xF9, 0xF6, 0xFA, 0x37, 0xFA, 0x77, 0xFA, 0xB7, 0xFA, 0xF8, 0xFB, 0x38, 0xFB, 0x78, 0xFB, 0xB8, 0xFB, 0xF9, 0xFC, 0x39, 0xFC, 0x79, 0xFC, 0xBA, 0xFC, 0xFA, 0xFD, 0x3A, 0xFD, 0x7B, 0xFD, 0xBB, 0xFD, 0xFB, 0xFE, 0x3C, 0xFE, 0x7C, 0xFE, 0xBC, 0xFE, 0xFD, 0xFF, 0x3D, 0xFF, 0x7D, 0xFF, 0xBD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0xBF, 0x02, 0x00, 0x02, 0x40, 0x02, 0x80, 0x02, 0xC0, 0x03, 0x00, 0x03, 0x40, 0x03, 0x80, 0x03, 0xC0, 0x04, 0x00, 0x04, 0x40, 0x04, 0x80, 0x04, 0xC0, 0x05, 0x00, 0x05, 0x40, 0x05, 0x80, 0x05, 0xC0, 0x06, 0x01, 0x06, 0x41, 0x06, 0x81, 0x06, 0xC1, 0x07, 0x01, 0x07, 0x41, 0x07, 0x81, 0x07, 0xC1, 0x08, 0x01, 0x08, 0x41, 0x08, 0x81, 0x08, 0xC1, 0x09, 0x01, 0x09, 0x41, 0x09, 0x81, 0x09, 0xC1, 0x0A, 0x02, 0x0A, 0x42, 0x0A, 0x82, 0x0A, 0xC2, 0x0B, 0x02, 0x0B, 0x42, 0x0B, 0x82, 0x0B, 0xC2, 0x0C, 0x02, 0x0C, 0x42, 0x0C, 0x82, 0x0C, 0xC2, 0x0D, 0x02, 0x0D, 0x42, 0x0D, 0x82, 0x0D, 0xC2, 0x0E, 0x03, 0x0E, 0x43, 0x0E, 0x83, 0x0E, 0xC3, 0x0F, 0x03, 0x0F, 0x43, 0x0F, 0x83, 0x0F, 0xC3, 0x10, 0x03, 0x10, 0x43, 0x10, 0x83, 0x10, 0xC3, 0x11, 0x03, 0x11, 0x43, 0x11, 0x83, 0x11, 0xC3, 0x12, 0x04, 0x12, 0x44, 0x12, 0x84, 0x12, 0xC4, 0x13, 0x04, 0x13, 0x44, 0x13, 0x84, 0x13, 0xC4, 0x14, 0x04, 0x14, 0x44, 0x14, 0x84, 0x14, 0xC4, 0x15, 0x04, 0x15, 0x44, 0x15, 0x84, 0x15, 0xC4, 0x16, 0x05, 0x16, 0x45, 0x16, 0x85, 0x16, 0xC5, 0x17, 0x05, 0x17, 0x45, 0x17, 0x85, 0x17, 0xC5, 0x18, 0x05, 0x18, 0x45, 0x18, 0x85, 0x18, 0xC5, 0x19, 0x05, 0x19, 0x45, 0x19, 0x85, 0x19, 0xC5, 0x1A, 0x06, 0x1A, 0x46, 0x1A, 0x86, 0x1A, 0xC6, 0x1B, 0x06, 0x1B, 0x46, 0x1B, 0x86, 0x1B, 0xC6, 0x1C, 0x06, 0x1C, 0x46, 0x1C, 0x86, 0x1C, 0xC6, 0x1D, 0x06, 0x1D, 0x46, 0x1D, 0x86, 0x1D, 0xC6, 0x1E, 0x07, 0x1E, 0x47, 0x1E, 0x87, 0x1E, 0xC7, 0x1F, 0x07, 0x1F, 0x47, 0x1F, 0x87, 0x1F, 0xC7, 0x20, 0x07, 0x20, 0x47, 0x20, 0x87, 0x20, 0xC7, 0x21, 0x07, 0x21, 0x47, 0x21, 0x87, 0x21, 0xC7, 0x22, 0x08, 0x22, 0x48, 0x22, 0x88, 0x22, 0xC8, 0x23, 0x08, 0x23, 0x48, 0x23, 0x88, 0x23, 0xC8, 0x24, 0x08, 0x24, 0x48, 0x24, 0x88, 0x24, 0xC8, 0x25, 0x08, 0x25, 0x48, 0x25, 0x88, 0x25, 0xC8, 0x26, 0x09, 0x26, 0x49, 0x26, 0x89, 0x26, 0xC9, 0x27, 0x09, 0x27, 0x49, 0x27, 0x89, 0x27, 0xC9, 0x28, 0x09, 0x28, 0x49, 0x28, 0x89, 0x28, 0xC9, 0x29, 0x09, 0x29, 0x49, 0x29, 0x89, 0x29, 0xC9, 0x2A, 0x0A, 0x2A, 0x4A, 0x2A, 0x8A, 0x2A, 0xCA, 0x2B, 0x0A, 0x2B, 0x4A, 0x2B, 0x8A, 0x2B, 0xCA, 0x2C, 0x0A, 0x2C, 0x4A, 0x2C, 0x8A, 0x2C, 0xCA, 0x2D, 0x0A, 0x2D, 0x4A, 0x2D, 0x8A, 0x2D, 0xCA, 0x2E, 0x0B, 0x2E, 0x4B, 0x2E, 0x8B, 0x2E, 0xCB, 0x2F, 0x0B, 0x2F, 0x4B, 0x2F, 0x8B, 0x2F, 0xCB, 0x30, 0x0B, 0x30, 0x4B, 0x30, 0x8B, 0x30, 0xCB, 0x31, 0x0B, 0x31, 0x4B, 0x31, 0x8B, 0x31, 0xCB, 0x32, 0x0C, 0x32, 0x4C, 0x32, 0x8C, 0x32, 0xCC, 0x33, 0x0C, 0x33, 0x4C, 0x33, 0x8C, 0x33, 0xCC, 0x34, 0x0C, 0x34, 0x4C, 0x34, 0x8C, 0x34, 0xCC, 0x35, 0x0C, 0x35, 0x4C, 0x35, 0x8C, 0x35, 0xCC, 0x36, 0x0D, 0x36, 0x4D, 0x36, 0x8D, 0x36, 0xCD, 0x37, 0x0D, 0x37, 0x4D, 0x37, 0x8D, 0x37, 0xCD, 0x38, 0x0D, 0x38, 0x4D, 0x38, 0x8D, 0x38, 0xCD, 0x39, 0x0D, 0x39, 0x4D, 0x39, 0x8D, 0x39, 0xCD, 0x3A, 0x0E, 0x3A, 0x4E, 0x3A, 0x8E, 0x3A, 0xCE, 0x3B, 0x0E, 0x3B, 0x4E, 0x3B, 0x8E, 0x3B, 0xCE, 0x3C, 0x0E, 0x3C, 0x4E, 0x3C, 0x8E, 0x3C, 0xCE, 0x3D, 0x0E, 0x3D, 0x4E, 0x3D, 0x8E, 0x3D, 0xCE, 0x3E, 0x0F, 0x3E, 0x4F, 0x3E, 0x8F, 0x3E, 0xCF, 0x3F, 0x0F, 0x3F, 0x4F, 0x3F, 0x8F, 0x3F, 0xCF, 0x40, 0x0F, 0x40, 0x4F, 0x40, 0x8F, 0x40, 0xCF, 0x41, 0x0F, 0x41, 0x4F, 0x41, 0x8F, 0x41, 0xCF, 0x42, 0x10, 0x42, 0x50, 0x42, 0x90, 0x42, 0xD0, 0x43, 0x10, 0x43, 0x50, 0x43, 0x90, 0x43, 0xD0, 0x44, 0x10, 0x44, 0x50, 0x44, 0x90, 0x44, 0xD0, 0x45, 0x10, 0x45, 0x50, 0x45, 0x90, 0x45, 0xD0, 0x46, 0x11, 0x46, 0x51, 0x46, 0x91, 0x46, 0xD1, 0x47, 0x11, 0x47, 0x51, 0x47, 0x91, 0x47, 0xD1, 0x48, 0x11, 0x48, 0x51, 0x48, 0x91, 0x48, 0xD1, 0x49, 0x11, 0x49, 0x51, 0x49, 0x91, 0x49, 0xD1, 0x4A, 0x12, 0x4A, 0x52, 0x4A, 0x92, 0x4A, 0xD2, 0x4B, 0x12, 0x4B, 0x52, 0x4B, 0x92, 0x4B, 0xD2, 0x4C, 0x12, 0x4C, 0x52, 0x4C, 0x92, 0x4C, 0xD2, 0x4D, 0x12, 0x4D, 0x52, 0x4D, 0x92, 0x4D, 0xD2, 0x4E, 0x13, 0x4E, 0x53, 0x4E, 0x93, 0x4E, 0xD3, 0x4F, 0x13, 0x4F, 0x53, 0x4F, 0x93, 0x4F, 0xD3, 0x50, 0x13, 0x50, 0x53, 0x50, 0x93, 0x50, 0xD3, 0x51, 0x13, 0x51, 0x53, 0x51, 0x93, 0x51, 0xD3, 0x52, 0x14, 0x52, 0x54, 0x52, 0x94, 0x52, 0xD4, 0x53, 0x14, 0x53, 0x54, 0x53, 0x94, 0x53, 0xD4, 0x54, 0x14, 0x54, 0x54, 0x54, 0x94, 0x54, 0xD4, 0x55, 0x14, 0x55, 0x54, 0x55, 0x94, 0x55, 0xD4, 0x56, 0x15, 0x56, 0x55, 0x56, 0x95, 0x56, 0xD5, 0x57, 0x15, 0x57, 0x55, 0x57, 0x95, 0x57, 0xD5, 0x58, 0x15, 0x58, 0x55, 0x58, 0x95, 0x58, 0xD5, 0x59, 0x15, 0x59, 0x55, 0x59, 0x95, 0x59, 0xD5, 0x5A, 0x16, 0x5A, 0x56, 0x5A, 0x96, 0x5A, 0xD6, 0x5B, 0x16, 0x5B, 0x56, 0x5B, 0x96, 0x5B, 0xD6, 0x5C, 0x16, 0x5C, 0x56, 0x5C, 0x96, 0x5C, 0xD6, 0x5D, 0x16, 0x5D, 0x56, 0x5D, 0x96, 0x5D, 0xD6, 0x5E, 0x17, 0x5E, 0x57, 0x5E, 0x97, 0x5E, 0xD7, 0x5F, 0x17, 0x5F, 0x57, 0x5F, 0x97, 0x5F, 0xD7, 0x60, 0x17, 0x60, 0x57, 0x60, 0x97, 0x60, 0xD7, 0x61, 0x17, 0x61, 0x57, 0x61, 0x97, 0x61, 0xD7, 0x62, 0x18, 0x62, 0x58, 0x62, 0x98, 0x62, 0xD8, 0x63, 0x18, 0x63, 0x58, 0x63, 0x98, 0x63, 0xD8, 0x64, 0x18, 0x64, 0x58, 0x64, 0x98, 0x64, 0xD8, 0x65, 0x18, 0x65, 0x58, 0x65, 0x98, 0x65, 0xD8, 0x66, 0x19, 0x66, 0x59, 0x66, 0x99, 0x66, 0xD9, 0x67, 0x19, 0x67, 0x59, 0x67, 0x99, 0x67, 0xD9, 0x68, 0x19, 0x68, 0x59, 0x68, 0x99, 0x68, 0xD9, 0x69, 0x19, 0x69, 0x59, 0x69, 0x99, 0x69, 0xD9, 0x6A, 0x1A, 0x6A, 0x5A, 0x6A, 0x9A, 0x6A, 0xDA, 0x6B, 0x1A, 0x6B, 0x5A, 0x6B, 0x9A, 0x6B, 0xDA, 0x6C, 0x1A, 0x6C, 0x5A, 0x6C, 0x9A, 0x6C, 0xDA, 0x6D, 0x1A, 0x6D, 0x5A, 0x6D, 0x9A, 0x6D, 0xDA, 0x6E, 0x1B, 0x6E, 0x5B, 0x6E, 0x9B, 0x6E, 0xDB, 0x6F, 0x1B, 0x6F, 0x5B, 0x6F, 0x9B, 0x6F, 0xDB, 0x70, 0x1B, 0x70, 0x5B, 0x70, 0x9B, 0x70, 0xDB, 0x71, 0x1B, 0x71, 0x5B, 0x71, 0x9B, 0x71, 0xDB, 0x72, 0x1C, 0x72, 0x5C, 0x72, 0x9C, 0x72, 0xDC, 0x73, 0x1C, 0x73, 0x5C, 0x73, 0x9C, 0x73, 0xDC, 0x74, 0x1C, 0x74, 0x5C, 0x74, 0x9C, 0x74, 0xDC, 0x75, 0x1C, 0x75, 0x5C, 0x75, 0x9C, 0x75, 0xDC, 0x76, 0x1D, 0x76, 0x5D, 0x76, 0x9D, 0x76, 0xDD, 0x77, 0x1D, 0x77, 0x5D, 0x77, 0x9D, 0x77, 0xDD, 0x78, 0x1D, 0x78, 0x5D, 0x78, 0x9D, 0x78, 0xDD, 0x79, 0x1D, 0x79, 0x5D, 0x79, 0x9D, 0x79, 0xDD, 0x7A, 0x1E, 0x7A, 0x5E, 0x7A, 0x9E, 0x7A, 0xDE, 0x7B, 0x1E, 0x7B, 0x5E, 0x7B, 0x9E, 0x7B, 0xDE, 0x7C, 0x1E, 0x7C, 0x5E, 0x7C, 0x9E, 0x7C, 0xDE, 0x7D, 0x1E, 0x7D, 0x5E, 0x7D, 0x9E, 0x7D, 0xDE, 0x7E, 0x1F, 0x7E, 0x5F, 0x7E, 0x9F, 0x7E, 0xDF, 0x7F, 0x1F, 0x7F, 0x5F, 0x7F, 0x9F, 0x7F, 0xDF, 0x80, 0x1F, 0x80, 0x5F, 0x80, 0x9F, 0x80, 0xDF, 0x81, 0x1F, 0x81, 0x5F, 0x81, 0x9F, 0x81, 0xDF, 0x82, 0x20, 0x82, 0x60, 0x82, 0xA0, 0x82, 0xE0, 0x83, 0x20, 0x83, 0x60, 0x83, 0xA0, 0x83, 0xE0, 0x84, 0x20, 0x84, 0x60, 0x84, 0xA0, 0x84, 0xE0, 0x85, 0x20, 0x85, 0x60, 0x85, 0xA0, 0x85, 0xE0, 0x86, 0x21, 0x86, 0x61, 0x86, 0xA1, 0x86, 0xE1, 0x87, 0x21, 0x87, 0x61, 0x87, 0xA1, 0x87, 0xE1, 0x88, 0x21, 0x88, 0x61, 0x88, 0xA1, 0x88, 0xE1, 0x89, 0x21, 0x89, 0x61, 0x89, 0xA1, 0x89, 0xE1, 0x8A, 0x22, 0x8A, 0x62, 0x8A, 0xA2, 0x8A, 0xE2, 0x8B, 0x22, 0x8B, 0x62, 0x8B, 0xA2, 0x8B, 0xE2, 0x8C, 0x22, 0x8C, 0x62, 0x8C, 0xA2, 0x8C, 0xE2, 0x8D, 0x22, 0x8D, 0x62, 0x8D, 0xA2, 0x8D, 0xE2, 0x8E, 0x23, 0x8E, 0x63, 0x8E, 0xA3, 0x8E, 0xE3, 0x8F, 0x23, 0x8F, 0x63, 0x8F, 0xA3, 0x8F, 0xE3, 0x90, 0x23, 0x90, 0x63, 0x90, 0xA3, 0x90, 0xE3, 0x91, 0x23, 0x91, 0x63, 0x91, 0xA3, 0x91, 0xE3, 0x92, 0x24, 0x92, 0x64, 0x92, 0xA4, 0x92, 0xE4, 0x93, 0x24, 0x93, 0x64, 0x93, 0xA4, 0x93, 0xE4, 0x94, 0x24, 0x94, 0x64, 0x94, 0xA4, 0x94, 0xE4, 0x95, 0x24, 0x95, 0x64, 0x95, 0xA4, 0x95, 0xE4, 0x96, 0x25, 0x96, 0x65, 0x96, 0xA5, 0x96, 0xE5, 0x97, 0x25, 0x97, 0x65, 0x97, 0xA5, 0x97, 0xE5, 0x98, 0x25, 0x98, 0x65, 0x98, 0xA5, 0x98, 0xE5, 0x99, 0x25, 0x99, 0x65, 0x99, 0xA5, 0x99, 0xE5, 0x9A, 0x26, 0x9A, 0x66, 0x9A, 0xA6, 0x9A, 0xE6, 0x9B, 0x26, 0x9B, 0x66, 0x9B, 0xA6, 0x9B, 0xE6, 0x9C, 0x26, 0x9C, 0x66, 0x9C, 0xA6, 0x9C, 0xE6, 0x9D, 0x26, 0x9D, 0x66, 0x9D, 0xA6, 0x9D, 0xE6, 0x9E, 0x27, 0x9E, 0x67, 0x9E, 0xA7, 0x9E, 0xE7, 0x9F, 0x27, 0x9F, 0x67, 0x9F, 0xA7, 0x9F, 0xE7, 0xA0, 0x27, 0xA0, 0x67, 0xA0, 0xA7, 0xA0, 0xE7, 0xA1, 0x27, 0xA1, 0x67, 0xA1, 0xA7, 0xA1, 0xE7, 0xA2, 0x28, 0xA2, 0x68, 0xA2, 0xA8, 0xA2, 0xE8, 0xA3, 0x28, 0xA3, 0x68, 0xA3, 0xA8, 0xA3, 0xE8, 0xA4, 0x28, 0xA4, 0x68, 0xA4, 0xA8, 0xA4, 0xE8, 0xA5, 0x28, 0xA5, 0x68, 0xA5, 0xA8, 0xA5, 0xE8, 0xA6, 0x29, 0xA6, 0x69, 0xA6, 0xA9, 0xA6, 0xE9, 0xA7, 0x29, 0xA7, 0x69, 0xA7, 0xA9, 0xA7, 0xE9, 0xA8, 0x29, 0xA8, 0x69, 0xA8, 0xA9, 0xA8, 0xE9, 0xA9, 0x29, 0xA9, 0x69, 0xA9, 0xA9, 0xA9, 0xE9, 0xAA, 0x2A, 0xAA, 0x6A, 0xAA, 0xAA, 0xAA, 0xEA, 0xAB, 0x2A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0xEA, 0xAC, 0x2A, 0xAC, 0x6A, 0xAC, 0xAA, 0xAC, 0xEA, 0xAD, 0x2A, 0xAD, 0x6A, 0xAD, 0xAA, 0xAD, 0xEA, 0xAE, 0x2B, 0xAE, 0x6B, 0xAE, 0xAB, 0xAE, 0xEB, 0xAF, 0x2B, 0xAF, 0x6B, 0xAF, 0xAB, 0xAF, 0xEB, 0xB0, 0x2B, 0xB0, 0x6B, 0xB0, 0xAB, 0xB0, 0xEB, 0xB1, 0x2B, 0xB1, 0x6B, 0xB1, 0xAB, 0xB1, 0xEB, 0xB2, 0x2C, 0xB2, 0x6C, 0xB2, 0xAC, 0xB2, 0xEC, 0xB3, 0x2C, 0xB3, 0x6C, 0xB3, 0xAC, 0xB3, 0xEC, 0xB4, 0x2C, 0xB4, 0x6C, 0xB4, 0xAC, 0xB4, 0xEC, 0xB5, 0x2C, 0xB5, 0x6C, 0xB5, 0xAC, 0xB5, 0xEC, 0xB6, 0x2D, 0xB6, 0x6D, 0xB6, 0xAD, 0xB6, 0xED, 0xB7, 0x2D, 0xB7, 0x6D, 0xB7, 0xAD, 0xB7, 0xED, 0xB8, 0x2D, 0xB8, 0x6D, 0xB8, 0xAD, 0xB8, 0xED, 0xB9, 0x2D, 0xB9, 0x6D, 0xB9, 0xAD, 0xB9, 0xED, 0xBA, 0x2E, 0xBA, 0x6E, 0xBA, 0xAE, 0xBA, 0xEE, 0xBB, 0x2E, 0xBB, 0x6E, 0xBB, 0xAE, 0xBB, 0xEE, 0xBC, 0x2E, 0xBC, 0x6E, 0xBC, 0xAE, 0xBC, 0xEE, 0xBD, 0x2E, 0xBD, 0x6E, 0xBD, 0xAE, 0xBD, 0xEE, 0xBE, 0x2F, 0xBE, 0x6F, 0xBE, 0xAF, 0xBE, 0xEF, 0xBF, 0x2F, 0xBF, 0x6F, 0xBF, 0xAF, 0xBF, 0xEF, 0xC0, 0x2F, 0xC0, 0x6F, 0xC0, 0xAF, 0xC0, 0xEF, 0xC1, 0x2F, 0xC1, 0x6F, 0xC1, 0xAF, 0xC1, 0xEF, 0xC2, 0x30, 0xC2, 0x70, 0xC2, 0xB0, 0xC2, 0xF0, 0xC3, 0x30, 0xC3, 0x70, 0xC3, 0xB0, 0xC3, 0xF0, 0xC4, 0x30, 0xC4, 0x70, 0xC4, 0xB0, 0xC4, 0xF0, 0xC5, 0x30, 0xC5, 0x70, 0xC5, 0xB0, 0xC5, 0xF0, 0xC6, 0x31, 0xC6, 0x71, 0xC6, 0xB1, 0xC6, 0xF1, 0xC7, 0x31, 0xC7, 0x71, 0xC7, 0xB1, 0xC7, 0xF1, 0xC8, 0x31, 0xC8, 0x71, 0xC8, 0xB1, 0xC8, 0xF1, 0xC9, 0x31, 0xC9, 0x71, 0xC9, 0xB1, 0xC9, 0xF1, 0xCA, 0x32, 0xCA, 0x72, 0xCA, 0xB2, 0xCA, 0xF2, 0xCB, 0x32, 0xCB, 0x72, 0xCB, 0xB2, 0xCB, 0xF2, 0xCC, 0x32, 0xCC, 0x72, 0xCC, 0xB2, 0xCC, 0xF2, 0xCD, 0x32, 0xCD, 0x72, 0xCD, 0xB2, 0xCD, 0xF2, 0xCE, 0x33, 0xCE, 0x73, 0xCE, 0xB3, 0xCE, 0xF3, 0xCF, 0x33, 0xCF, 0x73, 0xCF, 0xB3, 0xCF, 0xF3, 0xD0, 0x33, 0xD0, 0x73, 0xD0, 0xB3, 0xD0, 0xF3, 0xD1, 0x33, 0xD1, 0x73, 0xD1, 0xB3, 0xD1, 0xF3, 0xD2, 0x34, 0xD2, 0x74, 0xD2, 0xB4, 0xD2, 0xF4, 0xD3, 0x34, 0xD3, 0x74, 0xD3, 0xB4, 0xD3, 0xF4, 0xD4, 0x34, 0xD4, 0x74, 0xD4, 0xB4, 0xD4, 0xF4, 0xD5, 0x34, 0xD5, 0x74, 0xD5, 0xB4, 0xD5, 0xF4, 0xD6, 0x35, 0xD6, 0x75, 0xD6, 0xB5, 0xD6, 0xF5, 0xD7, 0x35, 0xD7, 0x75, 0xD7, 0xB5, 0xD7, 0xF5, 0xD8, 0x35, 0xD8, 0x75, 0xD8, 0xB5, 0xD8, 0xF5, 0xD9, 0x35, 0xD9, 0x75, 0xD9, 0xB5, 0xD9, 0xF5, 0xDA, 0x36, 0xDA, 0x76, 0xDA, 0xB6, 0xDA, 0xF6, 0xDB, 0x36, 0xDB, 0x76, 0xDB, 0xB6, 0xDB, 0xF6, 0xDC, 0x36, 0xDC, 0x76, 0xDC, 0xB6, 0xDC, 0xF6, 0xDD, 0x36, 0xDD, 0x76, 0xDD, 0xB6, 0xDD, 0xF6, 0xDE, 0x37, 0xDE, 0x77, 0xDE, 0xB7, 0xDE, 0xF7, 0xDF, 0x37, 0xDF, 0x77, 0xDF, 0xB7, 0xDF, 0xF7, 0xE0, 0x37, 0xE0, 0x77, 0xE0, 0xB7, 0xE0, 0xF7, 0xE1, 0x37, 0xE1, 0x77, 0xE1, 0xB7, 0xE1, 0xF7, 0xE2, 0x38, 0xE2, 0x78, 0xE2, 0xB8, 0xE2, 0xF8, 0xE3, 0x38, 0xE3, 0x78, 0xE3, 0xB8, 0xE3, 0xF8, 0xE4, 0x38, 0xE4, 0x78, 0xE4, 0xB8, 0xE4, 0xF8, 0xE5, 0x38, 0xE5, 0x78, 0xE5, 0xB8, 0xE5, 0xF8, 0xE6, 0x39, 0xE6, 0x79, 0xE6, 0xB9, 0xE6, 0xF9, 0xE7, 0x39, 0xE7, 0x79, 0xE7, 0xB9, 0xE7, 0xF9, 0xE8, 0x39, 0xE8, 0x79, 0xE8, 0xB9, 0xE8, 0xF9, 0xE9, 0x39, 0xE9, 0x79, 0xE9, 0xB9, 0xE9, 0xF9, 0xEA, 0x3A, 0xEA, 0x7A, 0xEA, 0xBA, 0xEA, 0xFA, 0xEB, 0x3A, 0xEB, 0x7A, 0xEB, 0xBA, 0xEB, 0xFA, 0xEC, 0x3A, 0xEC, 0x7A, 0xEC, 0xBA, 0xEC, 0xFA, 0xED, 0x3A, 0xED, 0x7A, 0xED, 0xBA, 0xED, 0xFA, 0xEE, 0x3B, 0xEE, 0x7B, 0xEE, 0xBB, 0xEE, 0xFB, 0xEF, 0x3B, 0xEF, 0x7B, 0xEF, 0xBB, 0xEF, 0xFB, 0xF0, 0x3B, 0xF0, 0x7B, 0xF0, 0xBB, 0xF0, 0xFB, 0xF1, 0x3B, 0xF1, 0x7B, 0xF1, 0xBB, 0xF1, 0xFB, 0xF2, 0x3C, 0xF2, 0x7C, 0xF2, 0xBC, 0xF2, 0xFC, 0xF3, 0x3C, 0xF3, 0x7C, 0xF3, 0xBC, 0xF3, 0xFC, 0xF4, 0x3C, 0xF4, 0x7C, 0xF4, 0xBC, 0xF4, 0xFC, 0xF5, 0x3C, 0xF5, 0x7C, 0xF5, 0xBC, 0xF5, 0xFC, 0xF6, 0x3D, 0xF6, 0x7D, 0xF6, 0xBD, 0xF6, 0xFD, 0xF7, 0x3D, 0xF7, 0x7D, 0xF7, 0xBD, 0xF7, 0xFD, 0xF8, 0x3D, 0xF8, 0x7D, 0xF8, 0xBD, 0xF8, 0xFD, 0xF9, 0x3D, 0xF9, 0x7D, 0xF9, 0xBD, 0xF9, 0xFD, 0xFA, 0x3E, 0xFA, 0x7E, 0xFA, 0xBE, 0xFA, 0xFE, 0xFB, 0x3E, 0xFB, 0x7E, 0xFB, 0xBE, 0xFB, 0xFE, 0xFC, 0x3E, 0xFC, 0x7E, 0xFC, 0xBE, 0xFC, 0xFE, 0xFD, 0x3E, 0xFD, 0x7E, 0xFD, 0xBE, 0xFD, 0xFE, 0xFE, 0x3F, 0xFE, 0x7F, 0xFE, 0xBF, 0xFE, 0xFF, 0xFF, 0x3F, 0xFF, 0x7F, 0xFF, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0xBF, 0x02, 0x00, 0x02, 0x40, 0x02, 0x80, 0x02, 0xC0, 0x03, 0x00, 0x03, 0x40, 0x03, 0x80, 0x03, 0xC0, 0x04, 0x00, 0x04, 0x40, 0x04, 0x80, 0x04, 0xC0, 0x05, 0x00, 0x05, 0x40, 0x05, 0x80, 0x05, 0xC0, 0x06, 0x01, 0x06, 0x41, 0x06, 0x81, 0x06, 0xC1, 0x07, 0x01, 0x07, 0x41, 0x07, 0x81, 0x07, 0xC1, 0x08, 0x01, 0x08, 0x41, 0x08, 0x81, 0x08, 0xC1, 0x09, 0x01, 0x09, 0x41, 0x09, 0x81, 0x09, 0xC1, 0x0A, 0x02, 0x0A, 0x42, 0x0A, 0x82, 0x0A, 0xC2, 0x0B, 0x02, 0x0B, 0x42, 0x0B, 0x82, 0x0B, 0xC2, 0x0C, 0x02, 0x0C, 0x42, 0x0C, 0x82, 0x0C, 0xC2, 0x0D, 0x02, 0x0D, 0x42, 0x0D, 0x82, 0x0D, 0xC2, 0x0E, 0x03, 0x0E, 0x43, 0x0E, 0x83, 0x0E, 0xC3, 0x0F, 0x03, 0x0F, 0x43, 0x0F, 0x83, 0x0F, 0xC3, 0x10, 0x03, 0x10, 0x43, 0x10, 0x83, 0x10, 0xC3, 0x11, 0x03, 0x11, 0x43, 0x11, 0x83, 0x11, 0xC3, 0x12, 0x04, 0x12, 0x44, 0x12, 0x84, 0x12, 0xC4, 0x13, 0x04, 0x13, 0x44, 0x13, 0x84, 0x13, 0xC4, 0x14, 0x04, 0x14, 0x44, 0x14, 0x84, 0x14, 0xC4, 0x15, 0x04, 0x15, 0x44, 0x15, 0x84, 0x15, 0xC4, 0x16, 0x05, 0x16, 0x45, 0x16, 0x85, 0x16, 0xC5, 0x17, 0x05, 0x17, 0x45, 0x17, 0x85, 0x17, 0xC5, 0x18, 0x05, 0x18, 0x45, 0x18, 0x85, 0x18, 0xC5, 0x19, 0x05, 0x19, 0x45, 0x19, 0x85, 0x19, 0xC5, 0x1A, 0x06, 0x1A, 0x46, 0x1A, 0x86, 0x1A, 0xC6, 0x1B, 0x06, 0x1B, 0x46, 0x1B, 0x86, 0x1B, 0xC6, 0x1C, 0x06, 0x1C, 0x46, 0x1C, 0x86, 0x1C, 0xC6, 0x1D, 0x06, 0x1D, 0x46, 0x1D, 0x86, 0x1D, 0xC6, 0x1E, 0x07, 0x1E, 0x47, 0x1E, 0x87, 0x1E, 0xC7, 0x1F, 0x07, 0x1F, 0x47, 0x1F, 0x87, 0x1F, 0xC7, 0x20, 0x07, 0x20, 0x47, 0x20, 0x87, 0x20, 0xC7, 0x21, 0x07, 0x21, 0x47, 0x21, 0x87, 0x21, 0xC7, 0x22, 0x08, 0x22, 0x48, 0x22, 0x88, 0x22, 0xC8, 0x23, 0x08, 0x23, 0x48, 0x23, 0x88, 0x23, 0xC8, 0x24, 0x08, 0x24, 0x48, 0x24, 0x88, 0x24, 0xC8, 0x25, 0x08, 0x25, 0x48, 0x25, 0x88, 0x25, 0xC8, 0x26, 0x09, 0x26, 0x49, 0x26, 0x89, 0x26, 0xC9, 0x27, 0x09, 0x27, 0x49, 0x27, 0x89, 0x27, 0xC9, 0x28, 0x09, 0x28, 0x49, 0x28, 0x89, 0x28, 0xC9, 0x29, 0x09, 0x29, 0x49, 0x29, 0x89, 0x29, 0xC9, 0x2A, 0x0A, 0x2A, 0x4A, 0x2A, 0x8A, 0x2A, 0xCA, 0x2B, 0x0A, 0x2B, 0x4A, 0x2B, 0x8A, 0x2B, 0xCA, 0x2C, 0x0A, 0x2C, 0x4A, 0x2C, 0x8A, 0x2C, 0xCA, 0x2D, 0x0A, 0x2D, 0x4A, 0x2D, 0x8A, 0x2D, 0xCA, 0x2E, 0x0B, 0x2E, 0x4B, 0x2E, 0x8B, 0x2E, 0xCB, 0x2F, 0x0B, 0x2F, 0x4B, 0x2F, 0x8B, 0x2F, 0xCB, 0x30, 0x0B, 0x30, 0x4B, 0x30, 0x8B, 0x30, 0xCB, 0x31, 0x0B, 0x31, 0x4B, 0x31, 0x8B, 0x31, 0xCB, 0x32, 0x0C, 0x32, 0x4C, 0x32, 0x8C, 0x32, 0xCC, 0x33, 0x0C, 0x33, 0x4C, 0x33, 0x8C, 0x33, 0xCC, 0x34, 0x0C, 0x34, 0x4C, 0x34, 0x8C, 0x34, 0xCC, 0x35, 0x0C, 0x35, 0x4C, 0x35, 0x8C, 0x35, 0xCC, 0x36, 0x0D, 0x36, 0x4D, 0x36, 0x8D, 0x36, 0xCD, 0x37, 0x0D, 0x37, 0x4D, 0x37, 0x8D, 0x37, 0xCD, 0x38, 0x0D, 0x38, 0x4D, 0x38, 0x8D, 0x38, 0xCD, 0x39, 0x0D, 0x39, 0x4D, 0x39, 0x8D, 0x39, 0xCD, 0x3A, 0x0E, 0x3A, 0x4E, 0x3A, 0x8E, 0x3A, 0xCE, 0x3B, 0x0E, 0x3B, 0x4E, 0x3B, 0x8E, 0x3B, 0xCE, 0x3C, 0x0E, 0x3C, 0x4E, 0x3C, 0x8E, 0x3C, 0xCE, 0x3D, 0x0E, 0x3D, 0x4E, 0x3D, 0x8E, 0x3D, 0xCE, 0x3E, 0x0F, 0x3E, 0x4F, 0x3E, 0x8F, 0x3E, 0xCF, 0x3F, 0x0F, 0x3F, 0x4F, 0x3F, 0x8F, 0x3F, 0xCF, 0x40, 0x0F, 0x40, 0x4F, 0x40, 0x8F, 0x40, 0xCF, 0x41, 0x0F, 0x41, 0x4F, 0x41, 0x8F, 0x41, 0xCF, 0x42, 0x10, 0x42, 0x50, 0x42, 0x90, 0x42, 0xD0, 0x43, 0x10, 0x43, 0x50, 0x43, 0x90, 0x43, 0xD0, 0x44, 0x10, 0x44, 0x50, 0x44, 0x90, 0x44, 0xD0, 0x45, 0x10, 0x45, 0x50, 0x45, 0x90, 0x45, 0xD0, 0x46, 0x11, 0x46, 0x51, 0x46, 0x91, 0x46, 0xD1, 0x47, 0x11, 0x47, 0x51, 0x47, 0x91, 0x47, 0xD1, 0x48, 0x11, 0x48, 0x51, 0x48, 0x91, 0x48, 0xD1, 0x49, 0x11, 0x49, 0x51, 0x49, 0x91, 0x49, 0xD1, 0x4A, 0x12, 0x4A, 0x52, 0x4A, 0x92, 0x4A, 0xD2, 0x4B, 0x12, 0x4B, 0x52, 0x4B, 0x92, 0x4B, 0xD2, 0x4C, 0x12, 0x4C, 0x52, 0x4C, 0x92, 0x4C, 0xD2, 0x4D, 0x12, 0x4D, 0x52, 0x4D, 0x92, 0x4D, 0xD2, 0x4E, 0x13, 0x4E, 0x53, 0x4E, 0x93, 0x4E, 0xD3, 0x4F, 0x13, 0x4F, 0x53, 0x4F, 0x93, 0x4F, 0xD3, 0x50, 0x13, 0x50, 0x53, 0x50, 0x93, 0x50, 0xD3, 0x51, 0x13, 0x51, 0x53, 0x51, 0x93, 0x51, 0xD3, 0x52, 0x14, 0x52, 0x54, 0x52, 0x94, 0x52, 0xD4, 0x53, 0x14, 0x53, 0x54, 0x53, 0x94, 0x53, 0xD4, 0x54, 0x14, 0x54, 0x54, 0x54, 0x94, 0x54, 0xD4, 0x55, 0x14, 0x55, 0x54, 0x55, 0x94, 0x55, 0xD4, 0x56, 0x15, 0x56, 0x55, 0x56, 0x95, 0x56, 0xD5, 0x57, 0x15, 0x57, 0x55, 0x57, 0x95, 0x57, 0xD5, 0x58, 0x15, 0x58, 0x55, 0x58, 0x95, 0x58, 0xD5, 0x59, 0x15, 0x59, 0x55, 0x59, 0x95, 0x59, 0xD5, 0x5A, 0x16, 0x5A, 0x56, 0x5A, 0x96, 0x5A, 0xD6, 0x5B, 0x16, 0x5B, 0x56, 0x5B, 0x96, 0x5B, 0xD6, 0x5C, 0x16, 0x5C, 0x56, 0x5C, 0x96, 0x5C, 0xD6, 0x5D, 0x16, 0x5D, 0x56, 0x5D, 0x96, 0x5D, 0xD6, 0x5E, 0x17, 0x5E, 0x57, 0x5E, 0x97, 0x5E, 0xD7, 0x5F, 0x17, 0x5F, 0x57, 0x5F, 0x97, 0x5F, 0xD7, 0x60, 0x17, 0x60, 0x57, 0x60, 0x97, 0x60, 0xD7, 0x61, 0x17, 0x61, 0x57, 0x61, 0x97, 0x61, 0xD7, 0x62, 0x18, 0x62, 0x58, 0x62, 0x98, 0x62, 0xD8, 0x63, 0x18, 0x63, 0x58, 0x63, 0x98, 0x63, 0xD8, 0x64, 0x18, 0x64, 0x58, 0x64, 0x98, 0x64, 0xD8, 0x65, 0x18, 0x65, 0x58, 0x65, 0x98, 0x65, 0xD8, 0x66, 0x19, 0x66, 0x59, 0x66, 0x99, 0x66, 0xD9, 0x67, 0x19, 0x67, 0x59, 0x67, 0x99, 0x67, 0xD9, 0x68, 0x19, 0x68, 0x59, 0x68, 0x99, 0x68, 0xD9, 0x69, 0x19, 0x69, 0x59, 0x69, 0x99, 0x69, 0xD9, 0x6A, 0x1A, 0x6A, 0x5A, 0x6A, 0x9A, 0x6A, 0xDA, 0x6B, 0x1A, 0x6B, 0x5A, 0x6B, 0x9A, 0x6B, 0xDA, 0x6C, 0x1A, 0x6C, 0x5A, 0x6C, 0x9A, 0x6C, 0xDA, 0x6D, 0x1A, 0x6D, 0x5A, 0x6D, 0x9A, 0x6D, 0xDA, 0x6E, 0x1B, 0x6E, 0x5B, 0x6E, 0x9B, 0x6E, 0xDB, 0x6F, 0x1B, 0x6F, 0x5B, 0x6F, 0x9B, 0x6F, 0xDB, 0x70, 0x1B, 0x70, 0x5B, 0x70, 0x9B, 0x70, 0xDB, 0x71, 0x1B, 0x71, 0x5B, 0x71, 0x9B, 0x71, 0xDB, 0x72, 0x1C, 0x72, 0x5C, 0x72, 0x9C, 0x72, 0xDC, 0x73, 0x1C, 0x73, 0x5C, 0x73, 0x9C, 0x73, 0xDC, 0x74, 0x1C, 0x74, 0x5C, 0x74, 0x9C, 0x74, 0xDC, 0x75, 0x1C, 0x75, 0x5C, 0x75, 0x9C, 0x75, 0xDC, 0x76, 0x1D, 0x76, 0x5D, 0x76, 0x9D, 0x76, 0xDD, 0x77, 0x1D, 0x77, 0x5D, 0x77, 0x9D, 0x77, 0xDD, 0x78, 0x1D, 0x78, 0x5D, 0x78, 0x9D, 0x78, 0xDD, 0x79, 0x1D, 0x79, 0x5D, 0x79, 0x9D, 0x79, 0xDD, 0x7A, 0x1E, 0x7A, 0x5E, 0x7A, 0x9E, 0x7A, 0xDE, 0x7B, 0x1E, 0x7B, 0x5E, 0x7B, 0x9E, 0x7B, 0xDE, 0x7C, 0x1E, 0x7C, 0x5E, 0x7C, 0x9E, 0x7C, 0xDE, 0x7D, 0x1E, 0x7D, 0x5E, 0x7D, 0x9E, 0x7D, 0xDE, 0x7E, 0x1F, 0x7E, 0x5F, 0x7E, 0x9F, 0x7E, 0xDF, 0x7F, 0x1F, 0x7F, 0x5F, 0x7F, 0x9F, 0x7F, 0xDF, 0x80, 0x1F, 0x80, 0x5F, 0x80, 0x9F, 0x80, 0xDF, 0x81, 0x1F, 0x81, 0x5F, 0x81, 0x9F, 0x81, 0xDF, 0x82, 0x20, 0x82, 0x60, 0x82, 0xA0, 0x82, 0xE0, 0x83, 0x20, 0x83, 0x60, 0x83, 0xA0, 0x83, 0xE0, 0x84, 0x20, 0x84, 0x60, 0x84, 0xA0, 0x84, 0xE0, 0x85, 0x20, 0x85, 0x60, 0x85, 0xA0, 0x85, 0xE0, 0x86, 0x21, 0x86, 0x61, 0x86, 0xA1, 0x86, 0xE1, 0x87, 0x21, 0x87, 0x61, 0x87, 0xA1, 0x87, 0xE1, 0x88, 0x21, 0x88, 0x61, 0x88, 0xA1, 0x88, 0xE1, 0x89, 0x21, 0x89, 0x61, 0x89, 0xA1, 0x89, 0xE1, 0x8A, 0x22, 0x8A, 0x62, 0x8A, 0xA2, 0x8A, 0xE2, 0x8B, 0x22, 0x8B, 0x62, 0x8B, 0xA2, 0x8B, 0xE2, 0x8C, 0x22, 0x8C, 0x62, 0x8C, 0xA2, 0x8C, 0xE2, 0x8D, 0x22, 0x8D, 0x62, 0x8D, 0xA2, 0x8D, 0xE2, 0x8E, 0x23, 0x8E, 0x63, 0x8E, 0xA3, 0x8E, 0xE3, 0x8F, 0x23, 0x8F, 0x63, 0x8F, 0xA3, 0x8F, 0xE3, 0x90, 0x23, 0x90, 0x63, 0x90, 0xA3, 0x90, 0xE3, 0x91, 0x23, 0x91, 0x63, 0x91, 0xA3, 0x91, 0xE3, 0x92, 0x24, 0x92, 0x64, 0x92, 0xA4, 0x92, 0xE4, 0x93, 0x24, 0x93, 0x64, 0x93, 0xA4, 0x93, 0xE4, 0x94, 0x24, 0x94, 0x64, 0x94, 0xA4, 0x94, 0xE4, 0x95, 0x24, 0x95, 0x64, 0x95, 0xA4, 0x95, 0xE4, 0x96, 0x25, 0x96, 0x65, 0x96, 0xA5, 0x96, 0xE5, 0x97, 0x25, 0x97, 0x65, 0x97, 0xA5, 0x97, 0xE5, 0x98, 0x25, 0x98, 0x65, 0x98, 0xA5, 0x98, 0xE5, 0x99, 0x25, 0x99, 0x65, 0x99, 0xA5, 0x99, 0xE5, 0x9A, 0x26, 0x9A, 0x66, 0x9A, 0xA6, 0x9A, 0xE6, 0x9B, 0x26, 0x9B, 0x66, 0x9B, 0xA6, 0x9B, 0xE6, 0x9C, 0x26, 0x9C, 0x66, 0x9C, 0xA6, 0x9C, 0xE6, 0x9D, 0x26, 0x9D, 0x66, 0x9D, 0xA6, 0x9D, 0xE6, 0x9E, 0x27, 0x9E, 0x67, 0x9E, 0xA7, 0x9E, 0xE7, 0x9F, 0x27, 0x9F, 0x67, 0x9F, 0xA7, 0x9F, 0xE7, 0xA0, 0x27, 0xA0, 0x67, 0xA0, 0xA7, 0xA0, 0xE7, 0xA1, 0x27, 0xA1, 0x67, 0xA1, 0xA7, 0xA1, 0xE7, 0xA2, 0x28, 0xA2, 0x68, 0xA2, 0xA8, 0xA2, 0xE8, 0xA3, 0x28, 0xA3, 0x68, 0xA3, 0xA8, 0xA3, 0xE8, 0xA4, 0x28, 0xA4, 0x68, 0xA4, 0xA8, 0xA4, 0xE8, 0xA5, 0x28, 0xA5, 0x68, 0xA5, 0xA8, 0xA5, 0xE8, 0xA6, 0x29, 0xA6, 0x69, 0xA6, 0xA9, 0xA6, 0xE9, 0xA7, 0x29, 0xA7, 0x69, 0xA7, 0xA9, 0xA7, 0xE9, 0xA8, 0x29, 0xA8, 0x69, 0xA8, 0xA9, 0xA8, 0xE9, 0xA9, 0x29, 0xA9, 0x69, 0xA9, 0xA9, 0xA9, 0xE9, 0xAA, 0x2A, 0xAA, 0x6A, 0xAA, 0xAA, 0xAA, 0xEA, 0xAB, 0x2A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0xEA, 0xAC, 0x2A, 0xAC, 0x6A, 0xAC, 0xAA, 0xAC, 0xEA, 0xAD, 0x2A, 0xAD, 0x6A, 0xAD, 0xAA, 0xAD, 0xEA, 0xAE, 0x2B, 0xAE, 0x6B, 0xAE, 0xAB, 0xAE, 0xEB, 0xAF, 0x2B, 0xAF, 0x6B, 0xAF, 0xAB, 0xAF, 0xEB, 0xB0, 0x2B, 0xB0, 0x6B, 0xB0, 0xAB, 0xB0, 0xEB, 0xB1, 0x2B, 0xB1, 0x6B, 0xB1, 0xAB, 0xB1, 0xEB, 0xB2, 0x2C, 0xB2, 0x6C, 0xB2, 0xAC, 0xB2, 0xEC, 0xB3, 0x2C, 0xB3, 0x6C, 0xB3, 0xAC, 0xB3, 0xEC, 0xB4, 0x2C, 0xB4, 0x6C, 0xB4, 0xAC, 0xB4, 0xEC, 0xB5, 0x2C, 0xB5, 0x6C, 0xB5, 0xAC, 0xB5, 0xEC, 0xB6, 0x2D, 0xB6, 0x6D, 0xB6, 0xAD, 0xB6, 0xED, 0xB7, 0x2D, 0xB7, 0x6D, 0xB7, 0xAD, 0xB7, 0xED, 0xB8, 0x2D, 0xB8, 0x6D, 0xB8, 0xAD, 0xB8, 0xED, 0xB9, 0x2D, 0xB9, 0x6D, 0xB9, 0xAD, 0xB9, 0xED, 0xBA, 0x2E, 0xBA, 0x6E, 0xBA, 0xAE, 0xBA, 0xEE, 0xBB, 0x2E, 0xBB, 0x6E, 0xBB, 0xAE, 0xBB, 0xEE, 0xBC, 0x2E, 0xBC, 0x6E, 0xBC, 0xAE, 0xBC, 0xEE, 0xBD, 0x2E, 0xBD, 0x6E, 0xBD, 0xAE, 0xBD, 0xEE, 0xBE, 0x2F, 0xBE, 0x6F, 0xBE, 0xAF, 0xBE, 0xEF, 0xBF, 0x2F, 0xBF, 0x6F, 0xBF, 0xAF, 0xBF, 0xEF, 0xC0, 0x2F, 0xC0, 0x6F, 0xC0, 0xAF, 0xC0, 0xEF, 0xC1, 0x2F, 0xC1, 0x6F, 0xC1, 0xAF, 0xC1, 0xEF, 0xC2, 0x30, 0xC2, 0x70, 0xC2, 0xB0, 0xC2, 0xF0, 0xC3, 0x30, 0xC3, 0x70, 0xC3, 0xB0, 0xC3, 0xF0, 0xC4, 0x30, 0xC4, 0x70, 0xC4, 0xB0, 0xC4, 0xF0, 0xC5, 0x30, 0xC5, 0x70, 0xC5, 0xB0, 0xC5, 0xF0, 0xC6, 0x31, 0xC6, 0x71, 0xC6, 0xB1, 0xC6, 0xF1, 0xC7, 0x31, 0xC7, 0x71, 0xC7, 0xB1, 0xC7, 0xF1, 0xC8, 0x31, 0xC8, 0x71, 0xC8, 0xB1, 0xC8, 0xF1, 0xC9, 0x31, 0xC9, 0x71, 0xC9, 0xB1, 0xC9, 0xF1, 0xCA, 0x32, 0xCA, 0x72, 0xCA, 0xB2, 0xCA, 0xF2, 0xCB, 0x32, 0xCB, 0x72, 0xCB, 0xB2, 0xCB, 0xF2, 0xCC, 0x32, 0xCC, 0x72, 0xCC, 0xB2, 0xCC, 0xF2, 0xCD, 0x32, 0xCD, 0x72, 0xCD, 0xB2, 0xCD, 0xF2, 0xCE, 0x33, 0xCE, 0x73, 0xCE, 0xB3, 0xCE, 0xF3, 0xCF, 0x33, 0xCF, 0x73, 0xCF, 0xB3, 0xCF, 0xF3, 0xD0, 0x33, 0xD0, 0x73, 0xD0, 0xB3, 0xD0, 0xF3, 0xD1, 0x33, 0xD1, 0x73, 0xD1, 0xB3, 0xD1, 0xF3, 0xD2, 0x34, 0xD2, 0x74, 0xD2, 0xB4, 0xD2, 0xF4, 0xD3, 0x34, 0xD3, 0x74, 0xD3, 0xB4, 0xD3, 0xF4, 0xD4, 0x34, 0xD4, 0x74, 0xD4, 0xB4, 0xD4, 0xF4, 0xD5, 0x34, 0xD5, 0x74, 0xD5, 0xB4, 0xD5, 0xF4, 0xD6, 0x35, 0xD6, 0x75, 0xD6, 0xB5, 0xD6, 0xF5, 0xD7, 0x35, 0xD7, 0x75, 0xD7, 0xB5, 0xD7, 0xF5, 0xD8, 0x35, 0xD8, 0x75, 0xD8, 0xB5, 0xD8, 0xF5, 0xD9, 0x35, 0xD9, 0x75, 0xD9, 0xB5, 0xD9, 0xF5, 0xDA, 0x36, 0xDA, 0x76, 0xDA, 0xB6, 0xDA, 0xF6, 0xDB, 0x36, 0xDB, 0x76, 0xDB, 0xB6, 0xDB, 0xF6, 0xDC, 0x36, 0xDC, 0x76, 0xDC, 0xB6, 0xDC, 0xF6, 0xDD, 0x36, 0xDD, 0x76, 0xDD, 0xB6, 0xDD, 0xF6, 0xDE, 0x37, 0xDE, 0x77, 0xDE, 0xB7, 0xDE, 0xF7, 0xDF, 0x37, 0xDF, 0x77, 0xDF, 0xB7, 0xDF, 0xF7, 0xE0, 0x37, 0xE0, 0x77, 0xE0, 0xB7, 0xE0, 0xF7, 0xE1, 0x37, 0xE1, 0x77, 0xE1, 0xB7, 0xE1, 0xF7, 0xE2, 0x38, 0xE2, 0x78, 0xE2, 0xB8, 0xE2, 0xF8, 0xE3, 0x38, 0xE3, 0x78, 0xE3, 0xB8, 0xE3, 0xF8, 0xE4, 0x38, 0xE4, 0x78, 0xE4, 0xB8, 0xE4, 0xF8, 0xE5, 0x38, 0xE5, 0x78, 0xE5, 0xB8, 0xE5, 0xF8, 0xE6, 0x39, 0xE6, 0x79, 0xE6, 0xB9, 0xE6, 0xF9, 0xE7, 0x39, 0xE7, 0x79, 0xE7, 0xB9, 0xE7, 0xF9, 0xE8, 0x39, 0xE8, 0x79, 0xE8, 0xB9, 0xE8, 0xF9, 0xE9, 0x39, 0xE9, 0x79, 0xE9, 0xB9, 0xE9, 0xF9, 0xEA, 0x3A, 0xEA, 0x7A, 0xEA, 0xBA, 0xEA, 0xFA, 0xEB, 0x3A, 0xEB, 0x7A, 0xEB, 0xBA, 0xEB, 0xFA, 0xEC, 0x3A, 0xEC, 0x7A, 0xEC, 0xBA, 0xEC, 0xFA, 0xED, 0x3A, 0xED, 0x7A, 0xED, 0xBA, 0xED, 0xFA, 0xEE, 0x3B, 0xEE, 0x7B, 0xEE, 0xBB, 0xEE, 0xFB, 0xEF, 0x3B, 0xEF, 0x7B, 0xEF, 0xBB, 0xEF, 0xFB, 0xF0, 0x3B, 0xF0, 0x7B, 0xF0, 0xBB, 0xF0, 0xFB, 0xF1, 0x3B, 0xF1, 0x7B, 0xF1, 0xBB, 0xF1, 0xFB, 0xF2, 0x3C, 0xF2, 0x7C, 0xF2, 0xBC, 0xF2, 0xFC, 0xF3, 0x3C, 0xF3, 0x7C, 0xF3, 0xBC, 0xF3, 0xFC, 0xF4, 0x3C, 0xF4, 0x7C, 0xF4, 0xBC, 0xF4, 0xFC, 0xF5, 0x3C, 0xF5, 0x7C, 0xF5, 0xBC, 0xF5, 0xFC, 0xF6, 0x3D, 0xF6, 0x7D, 0xF6, 0xBD, 0xF6, 0xFD, 0xF7, 0x3D, 0xF7, 0x7D, 0xF7, 0xBD, 0xF7, 0xFD, 0xF8, 0x3D, 0xF8, 0x7D, 0xF8, 0xBD, 0xF8, 0xFD, 0xF9, 0x3D, 0xF9, 0x7D, 0xF9, 0xBD, 0xF9, 0xFD, 0xFA, 0x3E, 0xFA, 0x7E, 0xFA, 0xBE, 0xFA, 0xFE, 0xFB, 0x3E, 0xFB, 0x7E, 0xFB, 0xBE, 0xFB, 0xFE, 0xFC, 0x3E, 0xFC, 0x7E, 0xFC, 0xBE, 0xFC, 0xFE, 0xFD, 0x3E, 0xFD, 0x7E, 0xFD, 0xBE, 0xFD, 0xFE, 0xFE, 0x3F, 0xFE, 0x7F, 0xFE, 0xBF, 0xFE, 0xFF, 0xFF, 0x3F, 0xFF, 0x7F, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0x46, 0x00, 0x00, 0x3D, 0x7B, 0xFF, 0xFF, 0x72, 0x50, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x69, 0x84, 0x00, 0x00, 0x69, 0x84, 0xFF, 0xFF, 0x26, 0x9B, 0x00, 0x00, 0x86, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x90, 0x38, 0xFF, 0xFF, 0x00, 0x00, 0x12, 0xD6, 0x92, 0xD5, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x8F, 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x4A, 0x1F, 0x91, 0xD4, 0xFF, 0xFF, 0x00, 0x00, 0x6A, 0x97, 0x8F, 0xB6, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0x4C, 0x92, 0x4C, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x7D, 0x14, 0xFF, 0xFF, 0x00, 0x00, 0xC8, 0x51, 0x66, 0x10, 0xFF, 0xFF, 0x20, 0x00, 0xF4, 0xEA, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0xE1, 0x70, 0xDA, 0xE0, 0xBD, 0x00, 0x00, 0xFC, 0xCC, 0x70, 0x35, 0xCC, 0xDE, 0x00, 0x00, 0xF9, 0x9A, 0x6F, 0xE2, 0xBC, 0x03, 0x00, 0x00, 0xF8, 0x75, 0x70, 0x27, 0xFF, 0xFF, 0x9B, 0xFF, 0x00, 0x00, 0x38, 0x33, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x5A, 0xFD, 0xFF, 0xFF, 0x6C, 0x91, 0x00, 0x00, 0x6C, 0x91, 0xFF, 0xFF, 0x60, 0x00, 0x0F, 0xA5, 0x73, 0xA0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x94, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0x9F, 0x91, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x8E, 0x89, 0xFF, 0xFF, 0x00, 0x00, 0x49, 0xE2, 0x8F, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x6C, 0xD9, 0x8D, 0x2C, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0x73, 0x88, 0xF9, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x5B, 0x76, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xF4, 0x6F, 0xD2, 0xFF, 0xFF, 0x2E, 0x3E, 0xFD, 0x50, 0x60, 0x00, 0xE7, 0xD9, 0x00, 0x00, 0xFC, 0x94, 0x75, 0x51, 0xCE, 0x46, 0x00, 0x00, 0xF9, 0x2A, 0x74, 0x65, 0xBB, 0xD0, 0x00, 0x00, 0xF7, 0xFF, 0x74, 0x70, 0xAD, 0xDF, 0x00, 0x00, 0xF8, 0x11, 0x75, 0x6C, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x36, 0xE6, 0xFF, 0xFF, 0x84, 0x4F, 0x00, 0x00, 0x5A, 0xB8, 0xFF, 0xFF, 0x7A, 0x4E, 0x00, 0x00, 0x69, 0x7D, 0xFF, 0xFF, 0x62, 0xDE, 0x00, 0x00, 0x7D, 0x4F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0x9C, 0x94, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x8E, 0x58, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0x71, 0x8F, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0x6B, 0x80, 0x8B, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x86, 0xAD, 0xFF, 0xFF, 0x00, 0x00, 0xBF, 0xFF, 0x6F, 0x15, 0xFF, 0xFF, 0x00, 0x00, 0xF0, 0xD2, 0x7A, 0x09, 0xF1, 0x93, 0x00, 0x00, 0xFC, 0x14, 0x7B, 0x97, 0xD0, 0xAD, 0x00, 0x00, 0xF9, 0x35, 0x79, 0x8A, 0xBB, 0x78, 0x00, 0x00, 0xF6, 0xE3, 0x79, 0x69, 0xAA, 0x6F, 0x00, 0x00, 0xF6, 0x55, 0x7A, 0x77, 0x9D, 0x3A, 0x00, 0x00, 0xF6, 0x3A, 0x7B, 0x0A, 0xFF, 0xFF, 0xA1, 0x3E, 0x00, 0x00, 0x37, 0xED, 0xFF, 0xFF, 0x9E, 0x24, 0x00, 0x00, 0x48, 0x72, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x69, 0xE2, 0xFF, 0xFF, 0x76, 0xF0, 0x00, 0x00, 0x79, 0x27, 0xFF, 0xFF, 0x32, 0xC7, 0x00, 0x00, 0x92, 0xC7, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x5B, 0x9D, 0x5A, 0xFF, 0xFF, 0x00, 0x00, 0x39, 0x9E, 0x8F, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x45, 0xB9, 0x90, 0x4B, 0xFF, 0xFF, 0x00, 0x00, 0x6B, 0xD9, 0x8B, 0xD9, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0x09, 0x81, 0x0D, 0xFF, 0xFF, 0x00, 0x00, 0xCF, 0x63, 0x7C, 0x6A, 0xFF, 0xFF, 0x00, 0x00, 0xFB, 0x9F, 0x82, 0x7A, 0xD3, 0xD8, 0x00, 0x00, 0xF6, 0x22, 0x80, 0x16, 0xB9, 0xA5, 0x00, 0x00, 0xF4, 0x64, 0x7F, 0x95, 0xA6, 0xA0, 0x00, 0x00, 0xF3, 0x4A, 0x80, 0x56, 0x96, 0x72, 0x00, 0x00, 0xF2, 0x9C, 0x80, 0x7B, 0x88, 0xD6, 0x00, 0x00, 0xF2, 0x3A, 0x80, 0x5E, 0xFF, 0xFF, 0xA6, 0xFE, 0x00, 0x00, 0x35, 0xE2, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x49, 0x11, 0xFF, 0xFF, 0x8D, 0xA9, 0x00, 0x00, 0x66, 0x1C, 0xFF, 0xFF, 0x7C, 0x74, 0x00, 0x00, 0x7C, 0x74, 0xFF, 0xFF, 0x57, 0x5F, 0x00, 0x00, 0x90, 0x89, 0xFF, 0xFF, 0x0C, 0x79, 0x0C, 0x79, 0x9F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x4E, 0x9A, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0x58, 0x91, 0x33, 0xFF, 0xFF, 0x00, 0x00, 0x6C, 0x61, 0x8C, 0x61, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x7E, 0x74, 0xFF, 0xFF, 0x00, 0x00, 0xF1, 0x81, 0x87, 0xA6, 0xD9, 0xBB, 0x00, 0x00, 0xF7, 0x22, 0x86, 0x49, 0xB8, 0x39, 0x00, 0x00, 0xF2, 0x76, 0x85, 0xB6, 0xA1, 0xA4, 0x00, 0x00, 0xF2, 0xC3, 0x86, 0x0C, 0x8F, 0x8E, 0x00, 0x00, 0xF3, 0x2F, 0x85, 0xC9, 0x80, 0x3C, 0x00, 0x00, 0xF2, 0x4B, 0x85, 0x45, 0x74, 0xA7, 0x00, 0x00, 0xF2, 0x04, 0x84, 0xCC, 0xFF, 0xFF, 0xAC, 0xBA, 0x00, 0x00, 0x34, 0x23, 0xFF, 0xFF, 0xAA, 0xA5, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0x9D, 0x70, 0x00, 0x00, 0x60, 0x8E, 0xFF, 0xFF, 0x83, 0x1F, 0x00, 0x00, 0x7D, 0xDF, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x93, 0xA5, 0xFF, 0xFF, 0x35, 0xF7, 0x05, 0xE4, 0x9F, 0xFF, 0xFF, 0xFF, 0x13, 0xCE, 0x33, 0xCE, 0x9F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x96, 0x08, 0xFF, 0xFF, 0x00, 0x00, 0x6D, 0x05, 0x8D, 0x05, 0xFF, 0xFF, 0x00, 0x00, 0xBC, 0x58, 0x88, 0x00, 0xE9, 0x87, 0x00, 0x00, 0xFA, 0x13, 0x8F, 0x77, 0xB5, 0xFA, 0x00, 0x00, 0xF2, 0x13, 0x8D, 0x42, 0x99, 0xDC, 0x00, 0x00, 0xF3, 0x49, 0x8C, 0xF2, 0x85, 0x24, 0x00, 0x00, 0xF3, 0x09, 0x8B, 0xF3, 0x75, 0x19, 0x00, 0x00, 0xF2, 0x30, 0x8B, 0x11, 0x69, 0xAA, 0x00, 0x00, 0xF2, 0xBB, 0x8A, 0x78, 0x5D, 0xEA, 0x00, 0x00, 0xF2, 0x9D, 0x8A, 0x44, 0xFF, 0xFF, 0xB3, 0xDF, 0x00, 0x00, 0x2F, 0xB3, 0xFF, 0xFF, 0xB0, 0xC6, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0xA4, 0x3C, 0x00, 0x00, 0x5E, 0xC3, 0xFF, 0xFF, 0x99, 0xDB, 0x00, 0x00, 0x76, 0x54, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x8D, 0xC7, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0x5A, 0xB1, 0x19, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0xA4, 0x54, 0xFF, 0xFF, 0x00, 0x00, 0x6D, 0xCE, 0x8D, 0xCD, 0xFF, 0xFF, 0x00, 0x00, 0xF1, 0xD1, 0x9B, 0x68, 0xB3, 0x5B, 0x00, 0x00, 0xF2, 0x17, 0x97, 0x2F, 0x8C, 0xF2, 0x00, 0x00, 0xF3, 0xA5, 0x95, 0xBC, 0x75, 0x41, 0x00, 0x00, 0xF2, 0x14, 0x94, 0x02, 0x63, 0x4E, 0x00, 0x00, 0xF2, 0xB8, 0x93, 0x39, 0x57, 0xA9, 0x00, 0x00, 0xF2, 0x81, 0x92, 0x12, 0x4E, 0x66, 0x00, 0x00, 0xF2, 0x42, 0x90, 0xD1, 0x45, 0x65, 0x00, 0x00, 0xF2, 0x4F, 0x8F, 0x73, 0xFF, 0xFF, 0xB8, 0xD5, 0x00, 0x00, 0x2C, 0x99, 0xFF, 0xFF, 0xB7, 0x4F, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0xB9, 0x62, 0x0A, 0x18, 0x4A, 0x18, 0xFF, 0xFF, 0xA5, 0x43, 0x00, 0x00, 0x73, 0xE6, 0xFF, 0xFF, 0xA3, 0xE4, 0x00, 0x00, 0x83, 0xE4, 0xFF, 0xFF, 0x7C, 0xAC, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0xB3, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0x3D, 0x9B, 0xB9, 0xBC, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0xA7, 0xB0, 0xAD, 0x61, 0x00, 0x00, 0xF1, 0x07, 0xA6, 0x3E, 0x72, 0x80, 0x00, 0x00, 0xED, 0xB1, 0xA2, 0xE6, 0x57, 0x0C, 0x00, 0x00, 0xEA, 0x47, 0xA0, 0x7C, 0x47, 0x06, 0x00, 0x00, 0xEA, 0x85, 0x9D, 0xCC, 0x3C, 0x7E, 0x00, 0x00, 0xEB, 0x94, 0x9B, 0x35, 0x33, 0x33, 0x00, 0x00, 0xEC, 0xA9, 0x99, 0x13, 0x2B, 0x05, 0x00, 0x00, 0xED, 0x11, 0x97, 0x31, 0x24, 0x88, 0x00, 0x00, 0xED, 0x01, 0x95, 0x77, 0xFF, 0xFF, 0xBD, 0xD2, 0x00, 0x00, 0x2A, 0x37, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x3B, 0x23, 0xFF, 0xFF, 0xBF, 0xFF, 0x08, 0x4E, 0x48, 0x4E, 0xFF, 0xFF, 0xBB, 0xB2, 0x00, 0x00, 0x68, 0xBF, 0xFF, 0xFF, 0xB8, 0x23, 0x00, 0x00, 0x80, 0x9F, 0xFF, 0xFF, 0xB6, 0xEF, 0x00, 0x00, 0x96, 0xEF, 0xFF, 0xFF, 0xB7, 0x47, 0x00, 0x00, 0xAB, 0x7B, 0xFF, 0xFF, 0x99, 0xE8, 0x00, 0x00, 0xC8, 0xA1, 0x3B, 0xB5, 0x00, 0x00, 0xCE, 0x2E, 0xFA, 0xA7, 0x29, 0x71, 0x13, 0x4D, 0xF3, 0x9A, 0xB4, 0xBA, 0x21, 0xE9, 0x13, 0x4A, 0xED, 0xAD, 0xAB, 0x5D, 0x1D, 0xC0, 0x13, 0x5E, 0xE9, 0x8D, 0xA5, 0x1C, 0x1A, 0x5D, 0x13, 0xEF, 0xE6, 0xE6, 0xA0, 0x5E, 0x16, 0x08, 0x13, 0x36, 0xE7, 0x61, 0x9C, 0xE3, 0x12, 0x81, 0x12, 0x39, 0xE8, 0x9D, 0x9A, 0x0B, 0x0E, 0xE9, 0x11, 0x83, 0xE9, 0x00, 0x97, 0x89, 0x0B, 0x7D, 0x10, 0xF1, 0xE9, 0x1F, 0x95, 0x53, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x2A, 0x12, 0xFF, 0xFF, 0xC2, 0xD7, 0x00, 0x00, 0x3A, 0x2B, 0xFF, 0xFF, 0xC9, 0x59, 0x00, 0x00, 0x44, 0x58, 0xFF, 0xFF, 0xCD, 0xB9, 0x00, 0x00, 0x5A, 0x53, 0xFF, 0xFF, 0xD7, 0x69, 0x00, 0x00, 0x6E, 0x8C, 0xFF, 0xFF, 0xED, 0x72, 0x0D, 0x73, 0x80, 0x00, 0xD8, 0x92, 0xFE, 0x3A, 0x00, 0x00, 0xA1, 0x15, 0x25, 0x34, 0xFF, 0x5F, 0x00, 0x00, 0xB9, 0x7F, 0x28, 0xF9, 0xFF, 0xFF, 0xB9, 0x1C, 0x90, 0xC4, 0x00, 0x00, 0x79, 0x32, 0xF7, 0xC3, 0xA7, 0xC9, 0x00, 0x00, 0x50, 0xFC, 0xF3, 0xA5, 0xA4, 0xE2, 0x00, 0x00, 0x3F, 0xC8, 0xEC, 0x09, 0xA0, 0x5B, 0x00, 0x00, 0x35, 0xDD, 0xEA, 0x43, 0x9C, 0xC1, 0x00, 0x00, 0x30, 0x1E, 0xEB, 0x10, 0x99, 0x28, 0x00, 0x00, 0x2C, 0x00, 0xEC, 0xB3, 0x96, 0x1A, 0x00, 0x00, 0x28, 0xE1, 0xED, 0x91, 0x93, 0x7C, 0x00, 0x00, 0x26, 0x70, 0xED, 0x8D, 0x91, 0x30, 0xFF, 0xFF, 0xC3, 0xFA, 0x00, 0x00, 0x28, 0x4B, 0xFF, 0xFF, 0xC9, 0x46, 0x00, 0x00, 0x34, 0xEA, 0xFF, 0xFF, 0xD0, 0xF9, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0xDC, 0x27, 0x00, 0x00, 0x4C, 0x4E, 0xFF, 0xFF, 0xF6, 0x92, 0x14, 0x8A, 0x54, 0x8A, 0xD7, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xEA, 0x6D, 0xEB, 0xFF, 0xFF, 0x1D, 0x93, 0x9F, 0xE7, 0x1B, 0xCA, 0xFF, 0xFF, 0x60, 0x00, 0x82, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0xDD, 0x1E, 0x14, 0x00, 0x00, 0xB8, 0x25, 0xF6, 0xFC, 0x92, 0x50, 0x00, 0x00, 0x7F, 0xC7, 0xF4, 0x18, 0x98, 0xED, 0x00, 0x00, 0x66, 0x59, 0xF6, 0x91, 0x97, 0x95, 0x00, 0x00, 0x58, 0xF3, 0xF7, 0xB5, 0x95, 0x75, 0x00, 0x00, 0x4E, 0xC2, 0xF6, 0x98, 0x93, 0x5A, 0x00, 0x00, 0x46, 0x3D, 0xF3, 0xC0, 0x91, 0x2E, 0x00, 0x00, 0x3F, 0xB7, 0xF2, 0xA3, 0x8F, 0x1B, 0x00, 0x00, 0x3B, 0xB4, 0xF2, 0x23, 0x8D, 0x20, 0xFF, 0xFF, 0xC8, 0x38, 0x00, 0x00, 0x28, 0x39, 0xFF, 0xFF, 0xD0, 0x3F, 0x00, 0x00, 0x30, 0x3F, 0xFF, 0xFF, 0xDA, 0x67, 0x00, 0x00, 0x39, 0xE5, 0xFF, 0xFF, 0xF1, 0x78, 0x00, 0x6B, 0x40, 0x1D, 0xE1, 0xE3, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0x9B, 0x9F, 0xFF, 0xFF, 0xFF, 0x00, 0x4C, 0x83, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0xC7, 0x96, 0x88, 0x20, 0x00, 0xFF, 0xFF, 0x6B, 0x7E, 0x31, 0x82, 0x08, 0x45, 0xFF, 0xFF, 0x80, 0x00, 0x09, 0xB4, 0x00, 0x00, 0xDF, 0x22, 0xF4, 0x87, 0x7A, 0xDE, 0x00, 0x00, 0xA9, 0x47, 0xF8, 0x54, 0x8B, 0x26, 0x00, 0x00, 0x88, 0x06, 0xF5, 0xFB, 0x8D, 0x79, 0x00, 0x00, 0x74, 0x5B, 0xF7, 0x6B, 0x8D, 0x53, 0x00, 0x00, 0x67, 0xE3, 0xF8, 0x73, 0x8C, 0x11, 0x00, 0x00, 0x5D, 0x15, 0xF7, 0x71, 0x8A, 0xA9, 0x00, 0x00, 0x56, 0x0A, 0xF7, 0x07, 0x89, 0xA0, 0x00, 0x00, 0x50, 0x49, 0xF6, 0x99, 0x88, 0x88, 0xFF, 0xFF, 0xD0, 0x82, 0x0A, 0x28, 0x10, 0x83, 0xFF, 0xFF, 0xD9, 0x17, 0x00, 0x00, 0x29, 0xB6, 0xFF, 0xFF, 0xEC, 0xCD, 0x00, 0x00, 0x2E, 0xCF, 0xEE, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0xCF, 0xBB, 0x74, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0x1D, 0x5E, 0xFB, 0xFF, 0xFF, 0x08, 0x83, 0x80, 0x00, 0x1A, 0x01, 0xFF, 0xFF, 0x45, 0x82, 0x5A, 0x00, 0x0B, 0xF5, 0xFF, 0xFF, 0x66, 0xED, 0x0B, 0xF5, 0x07, 0xA2, 0xFF, 0xFF, 0x80, 0x00, 0x07, 0xA2, 0x00, 0x00, 0xFF, 0x22, 0xE9, 0x76, 0x52, 0x06, 0x00, 0x00, 0xCA, 0x97, 0xF7, 0x3B, 0x77, 0xB2, 0x00, 0x00, 0xA8, 0x97, 0xF5, 0xAF, 0x80, 0x97, 0x00, 0x00, 0x91, 0xFC, 0xF7, 0x89, 0x83, 0x28, 0x00, 0x00, 0x81, 0xB0, 0xF5, 0x8F, 0x82, 0xD7, 0x00, 0x00, 0x75, 0x4D, 0xF7, 0x46, 0x82, 0x8B, 0x00, 0x00, 0x6B, 0xFF, 0xF7, 0x7B, 0x82, 0x07, 0x00, 0x00, 0x64, 0x90, 0xF6, 0x87, 0x81, 0x4B, 0xFF, 0xFF, 0xD7, 0xFF, 0x00, 0x00, 0x17, 0xBA, 0xFF, 0xFF, 0xEA, 0x22, 0x00, 0x00, 0x1E, 0x84, 0xF7, 0x5F, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0x2E, 0xCE, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x8C, 0x95, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x00, 0x02, 0xD4, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x2A, 0x3B, 0x08, 0xFE, 0xFF, 0xFF, 0x6D, 0xE1, 0x08, 0xFE, 0x06, 0x1D, 0xFF, 0xFF, 0x7F, 0xB0, 0x06, 0x1D, 0x00, 0x00, 0xFF, 0xFF, 0xB7, 0xDE, 0x08, 0xE5, 0x00, 0x00, 0xEA, 0x84, 0xF7, 0xC1, 0x5E, 0x58, 0x00, 0x00, 0xC8, 0xCD, 0xF7, 0xC8, 0x6C, 0xBE, 0x00, 0x00, 0xAF, 0xFC, 0xF9, 0x34, 0x73, 0xAE, 0x00, 0x00, 0x9E, 0x0F, 0xFB, 0x48, 0x77, 0xA3, 0x00, 0x00, 0x8F, 0xBC, 0xFB, 0x17, 0x78, 0xBC, 0x00, 0x00, 0x83, 0xB9, 0xF9, 0xBB, 0x78, 0x7A, 0x00, 0x00, 0x7A, 0xD6, 0xF8, 0xFA, 0x78, 0x46, 0xFF, 0xFF, 0xE8, 0xEC, 0x00, 0x00, 0x10, 0x56, 0xFE, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0xE1, 0xDA, 0x5E, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0x91, 0xAA, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x42, 0xB7, 0x61, 0x03, 0xFF, 0xFF, 0x19, 0xD9, 0x59, 0xD9, 0x06, 0x7B, 0xFF, 0xFF, 0x29, 0x61, 0x46, 0x7B, 0x0A, 0x2C, 0xFF, 0xFF, 0x59, 0x71, 0x0A, 0x2C, 0x06, 0xA5, 0xFF, 0xFF, 0x6E, 0xE8, 0x06, 0xA5, 0x04, 0xBF, 0xFF, 0xFF, 0x7C, 0x9E, 0x04, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x54, 0x07, 0x09, 0x3E, 0x7F, 0xFF, 0xFF, 0xF6, 0x57, 0x00, 0x00, 0x00, 0x00, 0xE5, 0x0E, 0xFB, 0x93, 0x56, 0x64, 0x00, 0x00, 0xCC, 0x46, 0xF9, 0x3E, 0x60, 0xC5, 0x00, 0x00, 0xB8, 0x68, 0xF9, 0x0A, 0x65, 0xF6, 0x00, 0x00, 0xA9, 0xFD, 0xF9, 0xF4, 0x6A, 0x06, 0x00, 0x00, 0x9D, 0x30, 0xFB, 0xE8, 0x6C, 0xC6, 0x00, 0x00, 0x93, 0x7A, 0xFD, 0x9F, 0x6E, 0x95, 0xFF, 0xFF, 0xFD, 0xA3, 0x00, 0x00, 0x0A, 0xD2, 0xE3, 0x4F, 0xFF, 0xFF, 0x00, 0x00, 0x25, 0xA1, 0xBF, 0x30, 0xFF, 0xFF, 0x00, 0x00, 0x2E, 0x81, 0x7E, 0x25, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0x9F, 0x14, 0x54, 0xFF, 0xFF, 0x00, 0x00, 0x5C, 0x21, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x15, 0x13, 0x07, 0x2B, 0xFF, 0xFF, 0x5D, 0x3C, 0x07, 0x2B, 0x04, 0xC0, 0xFF, 0xFF, 0x6E, 0x5A, 0x04, 0xC0, 0x03, 0x63, 0xFF, 0xFF, 0x79, 0x66, 0x03, 0x63, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x41, 0x03, 0x2D, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xE2, 0x05, 0xA4, 0x00, 0x00, 0xFE, 0x34, 0xF4, 0xB9, 0x36, 0x20, 0x00, 0x00, 0xE4, 0xC9, 0xFB, 0x43, 0x49, 0x52, 0x00, 0x00, 0xD3, 0xD3, 0xFE, 0x7B, 0x54, 0x31, 0x00, 0x00, 0xC2, 0x14, 0xFA, 0xE9, 0x58, 0x3C, 0x00, 0x00, 0xB4, 0xE8, 0xFA, 0xE5, 0x5C, 0x74, 0x00, 0x00, 0xA9, 0x9C, 0xFA, 0x53, 0x5F, 0xA0, 0xEF, 0x2C, 0xFF, 0xFF, 0x00, 0x00, 0x12, 0xBC, 0xCC, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0x22, 0x91, 0x9C, 0x2A, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0x6B, 0x4F, 0x4D, 0xFF, 0xFF, 0x07, 0xC4, 0x47, 0xC3, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0x32, 0x46, 0x08, 0x33, 0xFF, 0xFF, 0x4F, 0x45, 0x08, 0x33, 0x04, 0xC3, 0xFF, 0xFF, 0x5E, 0x8F, 0x04, 0xC3, 0x03, 0x15, 0xFF, 0xFF, 0x6C, 0xF9, 0x03, 0x15, 0x02, 0x38, 0xFF, 0xFF, 0x75, 0xF8, 0x02, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0xDC, 0x01, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xAC, 0x52, 0x04, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0x68, 0x04, 0x1F, 0x00, 0x00, 0xFE, 0xFC, 0xF6, 0x9E, 0x2D, 0x80, 0x00, 0x00, 0xE9, 0x64, 0xFC, 0xA7, 0x3C, 0x77, 0x00, 0x00, 0xD8, 0xC0, 0xFC, 0xFA, 0x45, 0x08, 0x00, 0x00, 0xCD, 0x29, 0xFF, 0x90, 0x4B, 0xAD, 0x00, 0x00, 0xBF, 0xD7, 0xFD, 0x0E, 0x4E, 0xA7, 0xFF, 0xFF, 0x9D, 0x51, 0x00, 0x00, 0x2A, 0xA7, 0xFF, 0xFF, 0x8F, 0x0D, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0x70, 0xB7, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x6E, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xBC, 0xFF, 0xFF, 0x00, 0x00, 0x0E, 0x3A, 0x8E, 0x39, 0xFF, 0xFF, 0x00, 0x00, 0x3D, 0xB9, 0x8D, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0x45, 0x5C, 0x92, 0xB2, 0xFF, 0xFF, 0x00, 0x00, 0x6A, 0x00, 0x90, 0x66, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0x07, 0x93, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x7D, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC7, 0xD8, 0x64, 0x9E, 0xFF, 0xFF, 0x1D, 0xCA, 0xF5, 0x2D, 0x60, 0x00, 0xFF, 0xFF, 0x13, 0xC9, 0xFF, 0xCF, 0x66, 0xBA, 0xE1, 0x47, 0x00, 0x00, 0xFC, 0xFC, 0x6F, 0x1D, 0xCD, 0x38, 0x00, 0x00, 0xF9, 0xED, 0x6E, 0xA8, 0xBC, 0x25, 0x00, 0x00, 0xF8, 0x7E, 0x6F, 0x0A, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x29, 0xEB, 0xFF, 0xFF, 0x97, 0x03, 0x00, 0x00, 0x3D, 0xF3, 0xFF, 0xFF, 0x78, 0x68, 0x00, 0x00, 0x61, 0x7F, 0xFF, 0xFF, 0x71, 0xB4, 0x00, 0x00, 0x6C, 0x2E, 0xFF, 0xFF, 0x28, 0xA2, 0x00, 0x00, 0x8B, 0x20, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xDB, 0x91, 0x90, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0x36, 0x8D, 0x41, 0xFF, 0xFF, 0x00, 0x00, 0x42, 0x89, 0x91, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0x96, 0x8D, 0x39, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0x18, 0x89, 0xD3, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0xDE, 0x77, 0x4C, 0xFF, 0xFF, 0x26, 0x24, 0xF0, 0x2A, 0x5D, 0x19, 0xFF, 0xFF, 0x31, 0xEC, 0xFF, 0x08, 0x5D, 0x20, 0xE8, 0x2F, 0x00, 0x00, 0xFC, 0xC6, 0x76, 0x73, 0xCE, 0x40, 0x00, 0x00, 0xF8, 0xDD, 0x73, 0x2E, 0xBB, 0x7C, 0x00, 0x00, 0xF7, 0xFB, 0x73, 0x31, 0xAE, 0x26, 0x00, 0x00, 0xF8, 0x4B, 0x74, 0x51, 0xFF, 0xFF, 0xA1, 0x03, 0x00, 0x00, 0x2B, 0x3B, 0xFF, 0xFF, 0x9C, 0xFD, 0x00, 0x00, 0x3D, 0x55, 0xFF, 0xFF, 0x7D, 0xF8, 0x00, 0x00, 0x62, 0x9F, 0xFF, 0xFF, 0x70, 0x45, 0x00, 0x00, 0x71, 0x66, 0xFF, 0xFF, 0x26, 0x9F, 0x00, 0x00, 0x90, 0x67, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x99, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x38, 0xF5, 0x8D, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0xD7, 0x90, 0x97, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0x00, 0x8A, 0x9A, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0x16, 0x87, 0x5E, 0xFF, 0xFF, 0x00, 0x00, 0xC0, 0xD7, 0x67, 0xEA, 0xFF, 0xFF, 0x00, 0x00, 0xF4, 0x45, 0x7C, 0x05, 0xF4, 0x34, 0x00, 0x00, 0xFD, 0x3A, 0x7D, 0x84, 0xD0, 0x12, 0x00, 0x00, 0xF9, 0x69, 0x78, 0x2A, 0xBB, 0x63, 0x00, 0x00, 0xF7, 0x76, 0x78, 0x15, 0xAA, 0x70, 0x00, 0x00, 0xF7, 0x1C, 0x79, 0x5C, 0x9D, 0x5B, 0x00, 0x00, 0xF6, 0xF7, 0x79, 0xF2, 0xFF, 0xFF, 0xA5, 0xA3, 0x00, 0x00, 0x2A, 0x68, 0xFF, 0xFF, 0xA1, 0x2C, 0x00, 0x00, 0x3B, 0x4A, 0xFF, 0xFF, 0x84, 0x56, 0x00, 0x00, 0x63, 0x32, 0xFF, 0xFF, 0x7C, 0xB8, 0x00, 0x00, 0x6F, 0x49, 0xFF, 0xFF, 0x6A, 0x80, 0x00, 0x00, 0x84, 0x7A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0xAF, 0x96, 0xAE, 0xFF, 0xFF, 0x00, 0x00, 0x3D, 0x33, 0x8F, 0x64, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0x69, 0x89, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x9B, 0x01, 0x7F, 0x30, 0xFF, 0xFF, 0x00, 0x00, 0xCE, 0xA3, 0x7A, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0xAE, 0x82, 0x2F, 0xD2, 0xD8, 0x00, 0x00, 0xF6, 0x6B, 0x7E, 0xB0, 0xB9, 0x82, 0x00, 0x00, 0xF4, 0xC5, 0x7E, 0x57, 0xA6, 0xA3, 0x00, 0x00, 0xF3, 0x8C, 0x7F, 0x87, 0x96, 0x7E, 0x00, 0x00, 0xF2, 0xA6, 0x7F, 0xB6, 0x88, 0xF9, 0x00, 0x00, 0xF2, 0xB9, 0x7F, 0x6E, 0xFF, 0xFF, 0xAB, 0xB7, 0x00, 0x00, 0x26, 0x0E, 0xFF, 0xFF, 0xA4, 0x1D, 0x00, 0x00, 0x3B, 0x95, 0xFF, 0xFF, 0xA3, 0xE6, 0x00, 0x00, 0x4B, 0xDC, 0xFF, 0xFF, 0x7F, 0xD5, 0x00, 0x00, 0x71, 0xCB, 0xFF, 0xFF, 0x85, 0x32, 0x00, 0x00, 0x7D, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x6C, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0xA1, 0xA1, 0x82, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x56, 0x99, 0x50, 0xFF, 0xFF, 0x00, 0x00, 0x74, 0xF2, 0x8C, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x9E, 0x97, 0x78, 0x81, 0xFF, 0xFF, 0x00, 0x00, 0xF8, 0x9B, 0x88, 0x01, 0xD9, 0xA5, 0x00, 0x00, 0xF7, 0xBF, 0x85, 0x1C, 0xB7, 0xFE, 0x00, 0x00, 0xF1, 0xF5, 0x84, 0xA2, 0xA1, 0x93, 0x00, 0x00, 0xF2, 0x9F, 0x85, 0x4D, 0x8F, 0x59, 0x00, 0x00, 0xF3, 0x31, 0x85, 0x04, 0x80, 0x17, 0x00, 0x00, 0xF2, 0x7B, 0x84, 0x7D, 0x74, 0x9A, 0x00, 0x00, 0xF2, 0x1D, 0x84, 0x06, 0xFF, 0xFF, 0xAF, 0xC8, 0x00, 0x00, 0x24, 0x2D, 0xFF, 0xFF, 0xAA, 0xA0, 0x00, 0x00, 0x39, 0xB3, 0xFF, 0xFF, 0x9E, 0xD1, 0x00, 0x00, 0x52, 0x02, 0xFF, 0xFF, 0x94, 0xFA, 0x00, 0x00, 0x6A, 0x32, 0xFF, 0xFF, 0x84, 0x53, 0x00, 0x00, 0x80, 0x9E, 0xFF, 0xFF, 0x5B, 0x31, 0x00, 0x00, 0x97, 0xA7, 0xFF, 0xFF, 0x45, 0xB5, 0x33, 0x4A, 0x9F, 0x2A, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x7E, 0xAB, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0x85, 0x66, 0xA2, 0x25, 0xFF, 0xFF, 0x00, 0x00, 0xBA, 0x90, 0x81, 0x42, 0xED, 0x88, 0x00, 0x00, 0xFF, 0x03, 0x8F, 0x02, 0xB5, 0x22, 0x00, 0x00, 0xF0, 0xE6, 0x8C, 0x49, 0x99, 0xEE, 0x00, 0x00, 0xF2, 0xE7, 0x8C, 0x31, 0x84, 0xD8, 0x00, 0x00, 0xF3, 0x22, 0x8B, 0x23, 0x74, 0xC0, 0x00, 0x00, 0xF1, 0xA4, 0x8A, 0x29, 0x6A, 0x4C, 0x00, 0x00, 0xF2, 0xD0, 0x89, 0x87, 0x5D, 0xD3, 0x00, 0x00, 0xF2, 0x98, 0x89, 0x80, 0xFF, 0xFF, 0xB3, 0xE4, 0x00, 0x00, 0x22, 0x49, 0xFF, 0xFF, 0xB0, 0xE4, 0x00, 0x00, 0x38, 0x44, 0xFF, 0xFF, 0xB3, 0x8A, 0x02, 0x57, 0x3D, 0xAB, 0xFF, 0xFF, 0xA0, 0x0B, 0x00, 0x00, 0x68, 0x1A, 0xFF, 0xFF, 0x93, 0x8B, 0x00, 0x00, 0x7F, 0xDF, 0xFF, 0xFF, 0x59, 0x61, 0x00, 0x00, 0xA0, 0x38, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x5C, 0xBC, 0x95, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0x71, 0xBA, 0xE8, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0x2F, 0xB9, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0x56, 0x98, 0xE0, 0xB1, 0x58, 0x00, 0x00, 0xF1, 0x5D, 0x95, 0xD3, 0x8D, 0x68, 0x00, 0x00, 0xF4, 0xF7, 0x94, 0xC0, 0x75, 0x30, 0x00, 0x00, 0xF2, 0xA2, 0x92, 0xE2, 0x62, 0xBE, 0x00, 0x00, 0xF3, 0xD7, 0x92, 0x7B, 0x57, 0x9C, 0x00, 0x00, 0xF3, 0x0C, 0x91, 0x81, 0x4F, 0x27, 0x00, 0x00, 0xF2, 0x4A, 0x90, 0x23, 0x45, 0x46, 0x00, 0x00, 0xF2, 0x52, 0x8E, 0xBC, 0xFF, 0xFF, 0xBB, 0x30, 0x00, 0x00, 0x14, 0x0B, 0xFF, 0xFF, 0xB8, 0xEE, 0x00, 0x00, 0x31, 0x92, 0xFF, 0xFF, 0xBA, 0x1E, 0x00, 0x00, 0x3E, 0x69, 0xFF, 0xFF, 0xAD, 0xE6, 0x00, 0x00, 0x61, 0xB0, 0xFF, 0xFF, 0x9F, 0x15, 0x00, 0x00, 0x7E, 0xC0, 0xFF, 0xFF, 0x7A, 0xF7, 0x00, 0x00, 0x9F, 0x35, 0xFF, 0xFF, 0x65, 0xBD, 0x00, 0x00, 0xB1, 0x65, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x0C, 0xC4, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0xD4, 0xB9, 0xC4, 0x51, 0xAF, 0xE2, 0x00, 0x00, 0xF4, 0xEE, 0xA2, 0x5E, 0x72, 0x2E, 0x00, 0x00, 0xEC, 0x3C, 0xA2, 0x33, 0x57, 0x1F, 0x00, 0x00, 0xE8, 0xA4, 0xA0, 0x1C, 0x47, 0x13, 0x00, 0x00, 0xEA, 0x12, 0x9D, 0x61, 0x3C, 0x47, 0x00, 0x00, 0xEB, 0xEC, 0x9A, 0xE5, 0x32, 0x83, 0x00, 0x00, 0xED, 0x20, 0x98, 0xE5, 0x29, 0x9E, 0x00, 0x00, 0xED, 0x3B, 0x97, 0x26, 0x24, 0x40, 0x00, 0x00, 0xED, 0x67, 0x94, 0xC6, 0xFF, 0xFF, 0xBE, 0xCD, 0x00, 0x00, 0x10, 0x57, 0xFF, 0xFF, 0xBE, 0x93, 0x00, 0x00, 0x2F, 0x04, 0xFF, 0xFF, 0xC0, 0x4A, 0x00, 0x00, 0x40, 0x73, 0xFF, 0xFF, 0xC0, 0xEE, 0x13, 0x57, 0x49, 0x7C, 0xFF, 0xFF, 0xBC, 0x29, 0x00, 0x00, 0x70, 0xB8, 0xFF, 0xFF, 0xB3, 0x53, 0x00, 0x00, 0x95, 0x3E, 0xFF, 0xFF, 0xB7, 0x54, 0x00, 0x00, 0xA9, 0xEB, 0xF5, 0x4D, 0xA9, 0xFD, 0x00, 0x00, 0xBD, 0xBE, 0x34, 0x60, 0x00, 0x00, 0x54, 0x77, 0xD8, 0xA5, 0x1F, 0x6B, 0x07, 0x3A, 0xF6, 0x58, 0xB4, 0xB6, 0x1F, 0x3F, 0x0F, 0xB3, 0xEC, 0x8F, 0xAB, 0xC1, 0x1E, 0x15, 0x12, 0xBB, 0xE8, 0xEC, 0xA4, 0xCA, 0x1B, 0x59, 0x14, 0x6B, 0xE6, 0x72, 0x9F, 0xBE, 0x16, 0x4D, 0x13, 0x2A, 0xE7, 0x6A, 0x9C, 0x6C, 0x12, 0x61, 0x12, 0x0F, 0xE8, 0xCC, 0x99, 0xA3, 0x0D, 0xF0, 0x11, 0x57, 0xE8, 0x99, 0x97, 0x26, 0x0A, 0x94, 0x10, 0xC1, 0xE9, 0x4B, 0x94, 0xBD, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x12, 0x04, 0xFF, 0xFF, 0xBF, 0xC4, 0x00, 0x00, 0x2F, 0xEE, 0xFF, 0xFF, 0xC3, 0xDE, 0x00, 0x00, 0x3F, 0x93, 0xFF, 0xFF, 0xCC, 0x0A, 0x00, 0x00, 0x48, 0xC1, 0xFF, 0xFF, 0xCF, 0x14, 0x00, 0x00, 0x65, 0x94, 0xFF, 0xFF, 0xD5, 0x9A, 0x00, 0x00, 0x86, 0xE2, 0xFF, 0xFF, 0xF8, 0x68, 0x00, 0x00, 0x85, 0x05, 0x8D, 0x7B, 0xF2, 0x97, 0x00, 0x00, 0xB3, 0x7F, 0x00, 0x00, 0xF5, 0xED, 0xC3, 0x96, 0xC4, 0x80, 0x00, 0x00, 0x77, 0x44, 0xFA, 0x08, 0xA5, 0x4F, 0x00, 0x00, 0x51, 0x8D, 0xF4, 0x24, 0xA4, 0xAE, 0x00, 0x00, 0x40, 0xBD, 0xEC, 0x43, 0x9F, 0xD3, 0x00, 0x00, 0x37, 0x45, 0xEA, 0x64, 0x9C, 0x4A, 0x00, 0x00, 0x31, 0x53, 0xEB, 0x97, 0x98, 0x72, 0x00, 0x00, 0x2D, 0x36, 0xED, 0xE8, 0x95, 0x2D, 0x00, 0x00, 0x2A, 0x06, 0xEE, 0xB4, 0x92, 0x7D, 0x00, 0x00, 0x28, 0x1D, 0xEE, 0x85, 0x90, 0x2A, 0xFF, 0xFF, 0xC4, 0x0B, 0x04, 0x0B, 0x0B, 0x96, 0xFF, 0xFF, 0xC7, 0x4B, 0x00, 0x00, 0x2B, 0x0D, 0xFF, 0xFF, 0xCD, 0xC7, 0x00, 0x00, 0x36, 0x84, 0xFF, 0xFF, 0xD7, 0x24, 0x00, 0x00, 0x3F, 0x9B, 0xFF, 0xFF, 0xE6, 0xEB, 0x0A, 0xA4, 0x4F, 0xA6, 0xF7, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0x8E, 0xA6, 0xF2, 0xF6, 0xE4, 0x00, 0x00, 0x90, 0xEE, 0x00, 0x00, 0xF8, 0xA4, 0x0D, 0x3E, 0xB3, 0x49, 0x04, 0x55, 0xFF, 0xFF, 0xA2, 0x83, 0xA7, 0xDD, 0x00, 0x00, 0xC7, 0x86, 0xFB, 0x5D, 0x88, 0xF3, 0x00, 0x00, 0x8F, 0xD9, 0xF8, 0x20, 0x94, 0x7A, 0x00, 0x00, 0x73, 0x10, 0xF8, 0xAE, 0x94, 0x44, 0x00, 0x00, 0x60, 0xCD, 0xF8, 0x10, 0x92, 0x30, 0x00, 0x00, 0x57, 0x3E, 0xF8, 0xB0, 0x90, 0x67, 0x00, 0x00, 0x50, 0x02, 0xF8, 0x8F, 0x8F, 0x2B, 0x00, 0x00, 0x48, 0xE8, 0xF6, 0x71, 0x8D, 0x90, 0x00, 0x00, 0x43, 0x91, 0xF3, 0xE6, 0x8B, 0x10, 0xFF, 0xFF, 0xC9, 0xA2, 0x07, 0x29, 0x09, 0xA3, 0xFF, 0xFF, 0xCE, 0x9D, 0x00, 0x00, 0x2A, 0xE1, 0xFF, 0xFF, 0xD8, 0xB4, 0x00, 0x00, 0x2D, 0x82, 0xFF, 0xFF, 0xF1, 0xAB, 0x00, 0x00, 0x34, 0x47, 0xF3, 0x0D, 0xFF, 0xFF, 0x0F, 0x4F, 0x48, 0x06, 0xB2, 0x51, 0xF8, 0x7E, 0x00, 0x00, 0x76, 0x5C, 0x1C, 0x14, 0xFF, 0xFF, 0x00, 0x00, 0x9E, 0x86, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0x5A, 0x87, 0x54, 0x2A, 0x1F, 0xFF, 0xFF, 0x9F, 0xD7, 0x63, 0x19, 0x00, 0x00, 0xFD, 0xEC, 0xFC, 0x99, 0x60, 0x1B, 0x00, 0x00, 0xBF, 0x04, 0xF4, 0x6A, 0x7F, 0xB7, 0x00, 0x00, 0x9F, 0x2A, 0xF7, 0x73, 0x85, 0xB8, 0x00, 0x00, 0x88, 0x74, 0xF5, 0x45, 0x86, 0x24, 0x00, 0x00, 0x78, 0x79, 0xF6, 0xD1, 0x85, 0x4A, 0x00, 0x00, 0x6D, 0xB7, 0xF7, 0x7A, 0x84, 0xB4, 0x00, 0x00, 0x65, 0x4C, 0xF7, 0x2C, 0x83, 0xE4, 0x00, 0x00, 0x5E, 0x68, 0xF6, 0x03, 0x82, 0x73, 0xFF, 0xFF, 0xD1, 0x11, 0x00, 0x00, 0x11, 0x12, 0xFF, 0xFF, 0xD9, 0xEF, 0x00, 0x00, 0x1A, 0x69, 0xFF, 0xFF, 0xF4, 0x58, 0x00, 0x00, 0x1D, 0x82, 0xEF, 0x41, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0xC4, 0xBC, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0x5B, 0x86, 0x5D, 0x3E, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0xD4, 0x1F, 0x29, 0xFF, 0xFF, 0x3E, 0xF0, 0x68, 0xA0, 0x28, 0x23, 0xFF, 0xFF, 0x7A, 0x34, 0x25, 0x46, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0xF3, 0x15, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x2C, 0x00, 0x00, 0x00, 0x00, 0xE9, 0x8C, 0xFC, 0x6D, 0x64, 0xE4, 0x00, 0x00, 0xC5, 0xBA, 0xF6, 0xD1, 0x6E, 0x65, 0x00, 0x00, 0xAD, 0x67, 0xF9, 0x90, 0x74, 0xFE, 0x00, 0x00, 0x9B, 0xCE, 0xFC, 0xB5, 0x78, 0xE4, 0x00, 0x00, 0x8D, 0x60, 0xFB, 0x99, 0x79, 0x64, 0x00, 0x00, 0x81, 0x24, 0xF9, 0xA1, 0x78, 0xA8, 0x00, 0x00, 0x79, 0x39, 0xF9, 0x04, 0x77, 0xF2, 0xFF, 0xFF, 0xDD, 0xC8, 0x00, 0x00, 0x0C, 0xF0, 0xFF, 0xFF, 0xF4, 0xA9, 0x00, 0x00, 0x0D, 0x9E, 0xF1, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x24, 0x94, 0xCA, 0x2E, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x66, 0x86, 0xE3, 0xFF, 0xFF, 0x00, 0x00, 0x63, 0xE6, 0x06, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x77, 0xA7, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x8D, 0x29, 0x8A, 0x07, 0xD4, 0xFF, 0xFF, 0x70, 0x5D, 0x05, 0xD4, 0x06, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x04, 0x89, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x3D, 0x02, 0x6E, 0x38, 0x05, 0xFF, 0xFF, 0xF3, 0x85, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x4E, 0xFD, 0xF2, 0x55, 0xF0, 0x00, 0x00, 0xCE, 0x49, 0xFA, 0x6A, 0x5F, 0x84, 0x00, 0x00, 0xB9, 0xED, 0xF7, 0xE1, 0x63, 0xD8, 0x00, 0x00, 0xAB, 0x36, 0xF9, 0x22, 0x68, 0x45, 0x00, 0x00, 0x9E, 0xD9, 0xFB, 0xD7, 0x6B, 0x62, 0x00, 0x00, 0x94, 0xEB, 0xFD, 0x4D, 0x6C, 0x59, 0xFF, 0xFF, 0xF1, 0xA9, 0x00, 0x00, 0x0A, 0xB4, 0xF9, 0x15, 0xFF, 0xFF, 0x00, 0x00, 0x13, 0x4D, 0xD4, 0xBB, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0x8F, 0xA1, 0x22, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0xE2, 0x5B, 0x13, 0xFF, 0xFF, 0x12, 0x1D, 0x52, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0x2D, 0x37, 0x44, 0x09, 0xEC, 0xFF, 0xFF, 0x59, 0x39, 0x03, 0x4D, 0x04, 0x5F, 0xFF, 0xFF, 0x6C, 0xCF, 0x04, 0x5F, 0x03, 0x16, 0xFF, 0xFF, 0x78, 0x3D, 0x02, 0xBB, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x81, 0x02, 0x77, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0xE5, 0x00, 0x9A, 0x48, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xEA, 0xFD, 0x0D, 0x45, 0x63, 0x00, 0x00, 0xD6, 0xEB, 0xFE, 0x5D, 0x4F, 0x88, 0x00, 0x00, 0xC6, 0xC6, 0xFC, 0xC8, 0x54, 0xC0, 0x00, 0x00, 0xB9, 0x71, 0xFB, 0x90, 0x58, 0x8F, 0x00, 0x00, 0xAD, 0xBB, 0xFB, 0xA5, 0x5B, 0x94, 0xFB, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0xBC, 0xE1, 0x9C, 0xFF, 0xFF, 0x14, 0x97, 0x0C, 0x31, 0xB5, 0x20, 0xFF, 0xFF, 0x00, 0x00, 0x30, 0xA3, 0x80, 0x2A, 0xFF, 0xFF, 0x1A, 0x48, 0x30, 0x2E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x55, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0x59, 0x0F, 0x8E, 0x05, 0x4E, 0xFF, 0xFF, 0x5A, 0x18, 0x04, 0x7A, 0x02, 0xB7, 0xFF, 0xFF, 0x6B, 0x21, 0x02, 0xB7, 0x01, 0xD7, 0xFF, 0xFF, 0x74, 0x92, 0x01, 0xD7, 0x00, 0xDD, 0xFF, 0xFF, 0x7D, 0x3C, 0x00, 0x63, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x31, 0x04, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xCF, 0x58, 0x00, 0x6A, 0x3A, 0xBE, 0xFF, 0xFF, 0xFE, 0x91, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x4D, 0xFF, 0xFF, 0x39, 0xF3, 0x00, 0x00, 0xDC, 0x57, 0xFC, 0xD2, 0x3F, 0xBD, 0x00, 0x00, 0xD0, 0xF6, 0xFE, 0xDB, 0x44, 0xEF, 0x00, 0x00, 0xC6, 0x59, 0xFF, 0x7E, 0x49, 0x7F, 0xE2, 0xB8, 0xFF, 0xFF, 0x00, 0x00, 0x18, 0xBE, 0xC0, 0x6C, 0xFF, 0xFF, 0x00, 0x00, 0x24, 0x92, 0x8A, 0x57, 0xFF, 0xFF, 0x00, 0x00, 0x2C, 0xFF, 0x40, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3D, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0x25, 0x39, 0x1A, 0x46, 0x05, 0xF1, 0xFF, 0xFF, 0x4B, 0x54, 0x05, 0xF1, 0x02, 0xCA, 0xFF, 0xFF, 0x59, 0x98, 0x02, 0xCA, 0x01, 0x5B, 0xFF, 0xFF, 0x67, 0xE8, 0x01, 0x5B, 0x00, 0xA4, 0xFF, 0xFF, 0x70, 0xA1, 0x00, 0xA4, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x9D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0x5D, 0x00, 0x5B, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0x35, 0x01, 0xDA, 0x00, 0x00, 0xFF, 0xFF, 0xD3, 0xA3, 0x02, 0x28, 0x17, 0x25, 0xFF, 0xFF, 0xF4, 0x6D, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x24, 0xFD, 0x3A, 0x28, 0x36, 0x00, 0x00, 0xE9, 0x6E, 0xFF, 0x95, 0x31, 0x15, 0x00, 0x00, 0xDB, 0x37, 0xFF, 0x4D, 0x36, 0xB9, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x18, 0xAA, 0xFF, 0xFF, 0x97, 0xC6, 0x00, 0x00, 0x30, 0xE8, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x4F, 0xFC, 0xFF, 0xFF, 0x65, 0x62, 0x00, 0x00, 0x65, 0x62, 0xFF, 0xFF, 0x5B, 0x88, 0x0C, 0x6F, 0x6C, 0x6E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0x13, 0x29, 0x93, 0x29, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x91, 0x59, 0xFF, 0xFF, 0x00, 0x00, 0x6D, 0x64, 0x8D, 0x64, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0xE9, 0x8B, 0x84, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x7C, 0x06, 0xFF, 0xFF, 0x00, 0x00, 0xC7, 0x33, 0x61, 0xB4, 0xFF, 0xFF, 0x17, 0x03, 0xF4, 0xF0, 0x60, 0x00, 0xFF, 0xFF, 0x1D, 0xF2, 0xFF, 0xFF, 0x5E, 0x8F, 0xE5, 0x26, 0x00, 0x00, 0xFD, 0x91, 0x6D, 0x25, 0xCF, 0x9B, 0x00, 0x00, 0xFA, 0xCC, 0x6C, 0x4F, 0xBE, 0x2A, 0x00, 0x00, 0xF9, 0x0E, 0x6C, 0x7B, 0xFF, 0xFF, 0xA2, 0xF4, 0x00, 0x00, 0x17, 0x1E, 0xFF, 0xFF, 0x9F, 0x67, 0x00, 0x00, 0x2D, 0xEE, 0xFF, 0xFF, 0x7E, 0x26, 0x00, 0x00, 0x54, 0x9C, 0xFF, 0xFF, 0x6F, 0x12, 0x00, 0x00, 0x64, 0x97, 0xFF, 0xFF, 0x6E, 0x1F, 0x0F, 0x74, 0x6A, 0x59, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x93, 0xCC, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x3A, 0x93, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0xC2, 0x8D, 0xE9, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0xE4, 0x89, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0x42, 0x8B, 0x26, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x55, 0x76, 0x92, 0xFF, 0xFF, 0x24, 0xD8, 0xF1, 0xAD, 0x5D, 0xC0, 0xFF, 0xFF, 0x2A, 0x70, 0xFD, 0xCA, 0x5D, 0xBC, 0xEC, 0x5B, 0x00, 0x00, 0xFD, 0x54, 0x74, 0x8C, 0xD0, 0xD7, 0x00, 0x00, 0xF9, 0xDA, 0x70, 0xD6, 0xBC, 0xFC, 0x00, 0x00, 0xF7, 0xE8, 0x70, 0xD7, 0xB1, 0x25, 0x00, 0x00, 0xF8, 0xBD, 0x71, 0xCF, 0xFF, 0xFF, 0xA6, 0x66, 0x00, 0x00, 0x14, 0xFE, 0xFF, 0xFF, 0xA0, 0x95, 0x00, 0x00, 0x2E, 0x74, 0xFF, 0xFF, 0x9B, 0x09, 0x00, 0x00, 0x3D, 0xE5, 0xFF, 0xFF, 0x82, 0x45, 0x00, 0x00, 0x5E, 0x64, 0xFF, 0xFF, 0x6E, 0xD8, 0x00, 0x00, 0x74, 0x22, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x19, 0x88, 0x9B, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0x9F, 0x94, 0xE9, 0xFF, 0xFF, 0x00, 0x00, 0x76, 0x74, 0x8C, 0xB7, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x85, 0x88, 0x84, 0xFF, 0xFF, 0x00, 0x00, 0xC1, 0x2A, 0x65, 0x10, 0xFF, 0xFF, 0x39, 0x72, 0xF9, 0x42, 0x5A, 0xD9, 0xF9, 0x11, 0x00, 0x00, 0xFE, 0x5A, 0x7B, 0xF7, 0xD3, 0x16, 0x00, 0x00, 0xF9, 0xA9, 0x75, 0xD7, 0xBD, 0x16, 0x00, 0x00, 0xF7, 0x98, 0x75, 0x97, 0xAD, 0x74, 0x00, 0x00, 0xF7, 0xF6, 0x76, 0xE7, 0xA0, 0x45, 0x00, 0x00, 0xF8, 0x15, 0x77, 0x49, 0xFF, 0xFF, 0xA9, 0xC6, 0x00, 0x00, 0x13, 0xC9, 0xFF, 0xFF, 0xA1, 0x68, 0x00, 0x00, 0x30, 0x36, 0xFF, 0xFF, 0xA1, 0xF1, 0x00, 0x00, 0x3C, 0x94, 0xFF, 0xFF, 0x81, 0x6D, 0x00, 0x00, 0x62, 0x38, 0xFF, 0xFF, 0x7B, 0x0D, 0x00, 0x00, 0x71, 0xCF, 0xFF, 0xFF, 0x35, 0x6B, 0x00, 0x00, 0x92, 0x26, 0xFF, 0xFF, 0x07, 0xD1, 0x15, 0xFD, 0xA1, 0x1A, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0x9B, 0xA2, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xE2, 0x9C, 0x9A, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xB5, 0x95, 0xBE, 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0x4C, 0x74, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0xFD, 0x82, 0x82, 0x11, 0xD6, 0x81, 0x00, 0x00, 0xF9, 0x60, 0x7C, 0xD9, 0xBC, 0xE9, 0x00, 0x00, 0xF5, 0xDA, 0x7B, 0x52, 0xA9, 0x67, 0x00, 0x00, 0xF5, 0x35, 0x7C, 0xD7, 0x9A, 0xB2, 0x00, 0x00, 0xF4, 0xDB, 0x7D, 0x5F, 0x8D, 0x1C, 0x00, 0x00, 0xF4, 0xB4, 0x7C, 0xE8, 0xFF, 0xFF, 0xAF, 0xC4, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xA7, 0x43, 0x00, 0x00, 0x2E, 0x91, 0xFF, 0xFF, 0xA1, 0x49, 0x00, 0x00, 0x3E, 0xD0, 0xFF, 0xFF, 0x8C, 0x8D, 0x00, 0x00, 0x61, 0xDA, 0xFF, 0xFF, 0x7A, 0x8F, 0x00, 0x00, 0x77, 0x3E, 0xFF, 0xFF, 0x5C, 0x7C, 0x00, 0x00, 0x93, 0x0F, 0xFF, 0xFF, 0x33, 0x27, 0x21, 0x8B, 0xA0, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x80, 0xAC, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0x89, 0x25, 0xA4, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0x91, 0xA8, 0xA5, 0x1B, 0xFF, 0xFF, 0x00, 0x00, 0xF8, 0xB8, 0x81, 0x9C, 0xDE, 0x8D, 0x00, 0x00, 0xF9, 0x2C, 0x82, 0xF2, 0xBB, 0x7E, 0x00, 0x00, 0xF2, 0x8A, 0x82, 0x2C, 0xA5, 0x80, 0x00, 0x00, 0xF2, 0x47, 0x83, 0x1F, 0x92, 0x21, 0x00, 0x00, 0xF2, 0x44, 0x83, 0x2C, 0x83, 0xFD, 0x00, 0x00, 0xF2, 0x2F, 0x82, 0xBE, 0x78, 0x81, 0x00, 0x00, 0xF2, 0x6F, 0x81, 0xFB, 0xFF, 0xFF, 0xB2, 0xC0, 0x00, 0x00, 0x05, 0x46, 0xFF, 0xFF, 0xAE, 0x93, 0x00, 0x00, 0x29, 0xEE, 0xFF, 0xFF, 0xA7, 0x17, 0x00, 0x00, 0x3E, 0xBE, 0xFF, 0xFF, 0xA3, 0xAD, 0x00, 0x00, 0x54, 0x7F, 0xFF, 0xFF, 0x82, 0xBB, 0x00, 0x00, 0x77, 0x43, 0xFF, 0xFF, 0x5E, 0xD2, 0x00, 0x00, 0x99, 0x88, 0xFF, 0xFF, 0x53, 0x3B, 0x23, 0xF0, 0x9D, 0xE2, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0xC7, 0xB5, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x81, 0xD6, 0xB1, 0x2C, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0xBC, 0xA9, 0x04, 0xF5, 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x53, 0xB8, 0x73, 0x00, 0x00, 0xF1, 0x31, 0x89, 0x5C, 0x9E, 0x76, 0x00, 0x00, 0xF1, 0xB5, 0x89, 0xC6, 0x8A, 0xD5, 0x00, 0x00, 0xF4, 0x15, 0x89, 0x34, 0x78, 0x56, 0x00, 0x00, 0xF1, 0x70, 0x88, 0x43, 0x6C, 0xD0, 0x00, 0x00, 0xF1, 0xC9, 0x87, 0x97, 0x63, 0x0E, 0x00, 0x00, 0xF2, 0xA6, 0x87, 0x0E, 0xFF, 0xFF, 0xB5, 0xCB, 0x00, 0x00, 0x03, 0x73, 0xFF, 0xFF, 0xB2, 0x8D, 0x00, 0x00, 0x28, 0xBF, 0xFF, 0xFF, 0xAE, 0x28, 0x00, 0x00, 0x3D, 0x16, 0xFF, 0xFF, 0xA2, 0x8C, 0x00, 0x00, 0x57, 0x70, 0xFF, 0xFF, 0x98, 0x86, 0x00, 0x00, 0x72, 0x44, 0xFF, 0xFF, 0x54, 0x55, 0x00, 0x00, 0xA1, 0xAB, 0xFF, 0xFF, 0x75, 0x39, 0x10, 0x3E, 0x9E, 0xA3, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0xCB, 0xBC, 0xA1, 0xFF, 0xFF, 0x00, 0x00, 0x99, 0x6A, 0xB8, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0x80, 0xB3, 0x67, 0xB7, 0x1A, 0x00, 0x00, 0xF3, 0x0D, 0x90, 0x26, 0x95, 0xC7, 0x00, 0x00, 0xF6, 0x0C, 0x92, 0x36, 0x7A, 0x3D, 0x00, 0x00, 0xF2, 0x39, 0x90, 0x7B, 0x6A, 0xE3, 0x00, 0x00, 0xF3, 0xB7, 0x8F, 0x7A, 0x5B, 0xA6, 0x00, 0x00, 0xF3, 0x58, 0x8F, 0x44, 0x52, 0xBF, 0x00, 0x00, 0xF3, 0x20, 0x8E, 0x68, 0x4B, 0xE0, 0x00, 0x00, 0xF2, 0x48, 0x8C, 0x99, 0xFF, 0xFF, 0xB8, 0xEA, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xB6, 0x9F, 0x00, 0x00, 0x27, 0xE0, 0xFF, 0xFF, 0xB4, 0xD7, 0x00, 0x00, 0x3B, 0xB7, 0xFF, 0xFF, 0xBA, 0x45, 0x07, 0x23, 0x3F, 0x04, 0xFF, 0xFF, 0x9E, 0x54, 0x00, 0x00, 0x74, 0xE0, 0xFF, 0xFF, 0x78, 0xCB, 0x00, 0x00, 0x99, 0xF5, 0xFF, 0xFF, 0x7C, 0x73, 0x07, 0x1F, 0xA5, 0xE4, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x32, 0xC5, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0xCB, 0x41, 0xBD, 0x0D, 0xAD, 0x00, 0x00, 0x00, 0xDF, 0x38, 0xB4, 0xC2, 0x81, 0x7A, 0x00, 0x00, 0xED, 0xA0, 0x9C, 0x48, 0x63, 0x9A, 0x00, 0x00, 0xEC, 0xA7, 0x9C, 0x1E, 0x53, 0x04, 0x00, 0x00, 0xEC, 0xB9, 0x9A, 0x41, 0x45, 0xCB, 0x00, 0x00, 0xEE, 0xB3, 0x97, 0xD8, 0x3C, 0x50, 0x00, 0x00, 0xF0, 0x38, 0x95, 0xBA, 0x35, 0x02, 0x00, 0x00, 0xF1, 0x06, 0x94, 0x2D, 0x2C, 0xBA, 0x00, 0x00, 0xF0, 0x74, 0x92, 0x4E, 0xFF, 0xFF, 0xBC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x7B, 0x00, 0x00, 0x14, 0x61, 0xFF, 0xFF, 0xBF, 0x82, 0x00, 0x00, 0x32, 0xE9, 0xFF, 0xFF, 0xC1, 0x87, 0x03, 0x74, 0x3E, 0xAB, 0xFF, 0xFF, 0xB7, 0xBE, 0x00, 0x00, 0x6B, 0x69, 0xFF, 0xFF, 0xB0, 0xB8, 0x00, 0x00, 0x8A, 0xD0, 0xFF, 0xFF, 0xB9, 0x9B, 0x00, 0x00, 0x9C, 0x33, 0xE6, 0x1D, 0xB2, 0xB0, 0x00, 0x00, 0xAA, 0x96, 0x31, 0xFB, 0x00, 0x00, 0x42, 0x5E, 0xCD, 0x1F, 0x12, 0x29, 0x14, 0xFB, 0xED, 0x85, 0xC2, 0xA0, 0x1C, 0x71, 0x0C, 0x13, 0xEA, 0xC9, 0xAA, 0x16, 0x1A, 0xF6, 0x10, 0x69, 0xE7, 0xC1, 0xA4, 0x7E, 0x17, 0xC2, 0x12, 0x49, 0xE6, 0x07, 0x9F, 0x80, 0x13, 0x7A, 0x11, 0x83, 0xE6, 0xE3, 0x9C, 0x1D, 0x0F, 0x94, 0x10, 0xC5, 0xE7, 0xE4, 0x99, 0x3C, 0x0B, 0x47, 0x10, 0x4E, 0xE7, 0xC4, 0x96, 0xB1, 0x09, 0x1B, 0x10, 0x65, 0xE9, 0xDA, 0x93, 0xDF, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC1, 0xF6, 0x02, 0x66, 0x13, 0xEC, 0xFF, 0xFF, 0xC4, 0x8C, 0x00, 0x00, 0x31, 0x04, 0xFF, 0xFF, 0xCA, 0x89, 0x00, 0x00, 0x3F, 0x6B, 0xFF, 0xFF, 0xCE, 0xFB, 0x00, 0x00, 0x5C, 0x66, 0xFF, 0xFF, 0xD9, 0xF0, 0x00, 0x00, 0x62, 0x01, 0xF9, 0xB8, 0xF7, 0x3D, 0x00, 0x00, 0x69, 0xD3, 0xA6, 0x95, 0xEE, 0x22, 0x00, 0x00, 0xA1, 0x2D, 0x00, 0x00, 0xE9, 0xC1, 0x90, 0x7C, 0xBE, 0x00, 0x00, 0x00, 0xAF, 0x58, 0xEC, 0xE1, 0xAF, 0x89, 0x00, 0x00, 0x6D, 0x02, 0xF5, 0xF4, 0x9B, 0x1E, 0x00, 0x00, 0x5B, 0x95, 0xF9, 0x5B, 0x99, 0xC2, 0x00, 0x00, 0x4D, 0x51, 0xF7, 0x7E, 0x96, 0xA0, 0x00, 0x00, 0x42, 0xBA, 0xF1, 0xA0, 0x94, 0x0F, 0x00, 0x00, 0x3C, 0xAB, 0xF2, 0x74, 0x91, 0x56, 0x00, 0x00, 0x38, 0xAA, 0xF2, 0x20, 0x8E, 0xE8, 0x00, 0x00, 0x34, 0xAE, 0xF1, 0x77, 0x8C, 0xBD, 0xFF, 0xFF, 0xC3, 0xBD, 0x01, 0x7F, 0x03, 0xBD, 0xFF, 0xFF, 0xCA, 0x45, 0x0D, 0xC6, 0x05, 0xE6, 0xFF, 0xFF, 0xCF, 0xAB, 0x00, 0x00, 0x2B, 0x29, 0xFF, 0xFF, 0xD8, 0x74, 0x00, 0x00, 0x37, 0x84, 0xFF, 0xFF, 0xE9, 0xBF, 0x00, 0x00, 0x3E, 0x12, 0xF0, 0xD1, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0xFB, 0xA6, 0xC1, 0xF0, 0x67, 0x00, 0x00, 0x78, 0x96, 0x15, 0x8E, 0xF4, 0xD5, 0x00, 0x00, 0xA8, 0x81, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x91, 0xA1, 0xA1, 0x00, 0x00, 0xFC, 0x24, 0xF7, 0x4D, 0x95, 0xA2, 0x00, 0x00, 0xB1, 0x70, 0xF5, 0xED, 0x81, 0xEA, 0x00, 0x00, 0x93, 0xD4, 0xF7, 0xA7, 0x88, 0x40, 0x00, 0x00, 0x7D, 0xB3, 0xF4, 0x2A, 0x87, 0xB3, 0x00, 0x00, 0x70, 0xCE, 0xF8, 0x39, 0x86, 0xFB, 0x00, 0x00, 0x67, 0x70, 0xF8, 0x71, 0x86, 0x02, 0x00, 0x00, 0x5D, 0xB8, 0xF6, 0x65, 0x84, 0xFF, 0x00, 0x00, 0x57, 0x35, 0xF6, 0x08, 0x83, 0xBA, 0xFF, 0xFF, 0xCB, 0x60, 0x00, 0x00, 0x08, 0xD5, 0xFF, 0xFF, 0xD2, 0x9C, 0x00, 0x00, 0x14, 0x1A, 0xFF, 0xFF, 0xDF, 0x4B, 0x00, 0x00, 0x1A, 0x10, 0xFF, 0xFF, 0xF6, 0xFE, 0x00, 0x00, 0x25, 0x74, 0xE0, 0x8B, 0xFE, 0x8C, 0x00, 0x00, 0x3D, 0xB7, 0xA3, 0x51, 0xF7, 0xDE, 0x00, 0x00, 0x65, 0x7F, 0x4A, 0xAE, 0xFF, 0xFF, 0x1B, 0xEE, 0x7F, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0x99, 0x83, 0x0A, 0x2A, 0x16, 0xFF, 0xFF, 0x9D, 0x09, 0x5E, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0xF7, 0x60, 0x6F, 0x00, 0x00, 0xE4, 0x41, 0xFC, 0x9B, 0x62, 0x82, 0x00, 0x00, 0xC0, 0xCD, 0xF6, 0x0A, 0x6E, 0x1B, 0x00, 0x00, 0xAA, 0x83, 0xFA, 0x1D, 0x75, 0x0E, 0x00, 0x00, 0x99, 0xE9, 0xFD, 0x88, 0x78, 0xC4, 0x00, 0x00, 0x8A, 0xDD, 0xFB, 0x3A, 0x78, 0x92, 0x00, 0x00, 0x7F, 0x42, 0xF9, 0x12, 0x77, 0xCF, 0x00, 0x00, 0x76, 0xA3, 0xF9, 0x20, 0x77, 0x83, 0xFF, 0xFF, 0xD7, 0x41, 0x00, 0x00, 0x08, 0x98, 0xFF, 0xFF, 0xE5, 0xF2, 0x00, 0x00, 0x0A, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0D, 0xC1, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x31, 0x61, 0xB1, 0x1A, 0xFF, 0xFF, 0x00, 0x00, 0x4B, 0x6D, 0x6F, 0xF6, 0xFF, 0xFF, 0x1D, 0xAB, 0x58, 0x88, 0x19, 0x83, 0xFF, 0xFF, 0x2F, 0x6C, 0x5E, 0x80, 0x26, 0x06, 0xFF, 0xFF, 0x71, 0xAE, 0x2A, 0x07, 0x02, 0x6C, 0xFF, 0xFF, 0x86, 0xFB, 0x24, 0xD1, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x11, 0x0B, 0x1D, 0x38, 0x95, 0xFF, 0xFF, 0xF5, 0x50, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x39, 0xFC, 0x83, 0x53, 0x13, 0x00, 0x00, 0xCF, 0xAB, 0xFB, 0xE5, 0x5C, 0x5B, 0x00, 0x00, 0xBB, 0x6C, 0xF7, 0xD1, 0x60, 0xC5, 0x00, 0x00, 0xAC, 0x72, 0xF9, 0x04, 0x65, 0x66, 0x00, 0x00, 0xA0, 0x8E, 0xFB, 0xA7, 0x68, 0x96, 0x00, 0x00, 0x95, 0x82, 0xFD, 0x12, 0x6A, 0x01, 0xFF, 0xFF, 0xE8, 0x3C, 0x00, 0x00, 0x08, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0xE8, 0xE5, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0x28, 0xF9, 0xBF, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x35, 0x53, 0x7B, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0x4D, 0x13, 0x10, 0xD1, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x1C, 0x28, 0x22, 0x07, 0x63, 0xFF, 0xFF, 0x6D, 0xFD, 0x02, 0x2B, 0x05, 0x32, 0xFF, 0xFF, 0x80, 0xF2, 0x03, 0xCE, 0x00, 0x00, 0xFF, 0xFF, 0x8B, 0xC1, 0x06, 0xD8, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x92, 0x00, 0x00, 0x43, 0x07, 0xFF, 0xFF, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xED, 0xEF, 0xFD, 0x1C, 0x3F, 0xBF, 0x00, 0x00, 0xD9, 0x20, 0xFD, 0x75, 0x49, 0x52, 0x00, 0x00, 0xCB, 0x5A, 0xFE, 0xEA, 0x50, 0x2C, 0x00, 0x00, 0xBC, 0x9C, 0xFC, 0x61, 0x53, 0x8E, 0x00, 0x00, 0xB1, 0x51, 0xFC, 0xA2, 0x57, 0x8B, 0xFF, 0xFF, 0xFB, 0x91, 0x00, 0x00, 0x08, 0xD4, 0xEC, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0x2E, 0xC7, 0xE7, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x9A, 0x92, 0x5A, 0xFF, 0xFF, 0x00, 0x00, 0x38, 0x43, 0x47, 0x60, 0xFF, 0xFF, 0x01, 0xED, 0x44, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0xBA, 0x2B, 0x72, 0x08, 0xB7, 0xFF, 0xFF, 0x54, 0x9E, 0x02, 0x0C, 0x03, 0x9C, 0xFF, 0xFF, 0x6A, 0x38, 0x03, 0x9C, 0x01, 0xFF, 0xFF, 0xFF, 0x76, 0xFC, 0x01, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x48, 0x00, 0xDF, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0x3C, 0x02, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0xF0, 0x00, 0x00, 0x2A, 0xB7, 0xFF, 0xFF, 0xF8, 0x79, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x46, 0xFF, 0xC1, 0x31, 0xE0, 0x00, 0x00, 0xE2, 0x69, 0xFE, 0x65, 0x39, 0xB2, 0x00, 0x00, 0xD4, 0xEF, 0xFE, 0xAD, 0x3E, 0x0D, 0x00, 0x00, 0xCA, 0x74, 0xFF, 0xD9, 0x43, 0xA4, 0xF0, 0xAE, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0x27, 0xD6, 0x23, 0xFF, 0xFF, 0x12, 0xF3, 0x0C, 0xEE, 0xA5, 0xAE, 0xFF, 0xFF, 0x00, 0x00, 0x27, 0x53, 0x71, 0x22, 0xFF, 0xFF, 0x13, 0xC6, 0x2B, 0x34, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0xFB, 0x08, 0x80, 0xFF, 0xFF, 0x44, 0x6D, 0x04, 0x2B, 0x03, 0x8E, 0xFF, 0xFF, 0x54, 0xF9, 0x02, 0x17, 0x00, 0xEC, 0xFF, 0xFF, 0x64, 0x15, 0x00, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x47, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x78, 0xBC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8B, 0xBD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0x8B, 0x01, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0xCD, 0xCA, 0x00, 0x00, 0x07, 0xEE, 0xFF, 0xFF, 0xE7, 0x03, 0x00, 0x00, 0x1A, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x01, 0x00, 0x00, 0xF3, 0x97, 0xFF, 0xFF, 0x2C, 0xE7, 0x00, 0x00, 0xE0, 0xA0, 0xFF, 0xE7, 0x30, 0x2C, 0xDB, 0xE9, 0xFF, 0xFF, 0x0D, 0x5D, 0x0D, 0x5D, 0xB6, 0x7E, 0xFF, 0xFF, 0x0F, 0x3E, 0x0F, 0x3E, 0x7B, 0x25, 0xFF, 0xFF, 0x03, 0x67, 0x23, 0x67, 0x25, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x39, 0x30, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0xD1, 0x12, 0xDD, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x06, 0x4C, 0x00, 0xD2, 0xFF, 0xFF, 0x53, 0x76, 0x00, 0xD2, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0x74, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0xE9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xB1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xA6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0x0A, 0x00, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0xCE, 0x01, 0x00, 0x23, 0x02, 0xA9, 0xFF, 0xFF, 0xE2, 0xA8, 0x00, 0x00, 0x0E, 0xF2, 0xFF, 0xFF, 0xF5, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x90, 0xFE, 0xAD, 0x1B, 0xC6, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x04, 0xA4, 0xFF, 0xFF, 0x98, 0x7C, 0x00, 0x00, 0x22, 0x6F, 0xFF, 0xFF, 0x84, 0xBA, 0x00, 0x00, 0x3C, 0xFB, 0xFF, 0xFF, 0x5F, 0xC7, 0x00, 0x00, 0x5F, 0xC7, 0xFF, 0xFF, 0x5E, 0xA1, 0x02, 0x30, 0x62, 0x30, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x90, 0x18, 0xFF, 0xFF, 0x00, 0x00, 0x12, 0x1D, 0x92, 0x1D, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x90, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x6F, 0x1E, 0x8F, 0x1E, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0x1D, 0x88, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x7A, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0xC7, 0x84, 0x60, 0x00, 0xFF, 0xFF, 0x04, 0xF2, 0xF0, 0xCB, 0x60, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFF, 0x53, 0x5A, 0xF1, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x6E, 0xD9, 0xEB, 0x00, 0x00, 0xFD, 0xEE, 0x65, 0x92, 0xC9, 0x35, 0x00, 0x00, 0xFA, 0xEA, 0x65, 0x7C, 0xFF, 0xFF, 0xA3, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0x03, 0x00, 0x00, 0x18, 0xC4, 0xFF, 0xFF, 0x8E, 0x50, 0x00, 0x00, 0x38, 0xE3, 0xFF, 0xFF, 0x60, 0x0E, 0x00, 0x00, 0x63, 0xAB, 0xFF, 0xFF, 0x66, 0xCD, 0x00, 0x00, 0x63, 0x6E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x12, 0xFF, 0xFF, 0x00, 0x00, 0x12, 0x62, 0x97, 0xEB, 0xFF, 0xFF, 0x00, 0x00, 0x44, 0x77, 0x95, 0xDA, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0x66, 0x91, 0x06, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0xCD, 0x8D, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0xA2, 0x77, 0x15, 0xFF, 0xFF, 0x00, 0x00, 0xD1, 0xE1, 0x60, 0xA9, 0xFF, 0xFF, 0x10, 0xEC, 0xF8, 0xE4, 0x61, 0x3F, 0xFC, 0x83, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0x52, 0xDC, 0x6D, 0x00, 0x00, 0xFD, 0xE2, 0x69, 0xEB, 0xC9, 0xFF, 0x00, 0x00, 0xFA, 0x7F, 0x69, 0x22, 0xBA, 0xB7, 0x00, 0x00, 0xF9, 0x42, 0x69, 0xCF, 0xFF, 0xFF, 0xA5, 0xD2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x33, 0x00, 0x00, 0x1D, 0x3E, 0xFF, 0xFF, 0x95, 0x40, 0x00, 0x00, 0x37, 0x5F, 0xFF, 0xFF, 0x68, 0x39, 0x00, 0x00, 0x64, 0xA4, 0xFF, 0xFF, 0x6C, 0x31, 0x00, 0x00, 0x68, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x60, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x07, 0xA0, 0x19, 0xFF, 0xFF, 0x00, 0x00, 0x43, 0xD2, 0x9E, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0x7F, 0x9A, 0x42, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0x43, 0x97, 0xB7, 0xFF, 0xFF, 0x00, 0x00, 0xBB, 0xDB, 0x6C, 0x5A, 0xFF, 0xFF, 0x1B, 0x84, 0xF6, 0x5A, 0x5F, 0x9F, 0xFF, 0xFF, 0x27, 0x6A, 0xFF, 0xFF, 0x5C, 0x2E, 0xE1, 0xBF, 0x00, 0x00, 0xFD, 0x4D, 0x6F, 0x59, 0xCC, 0x20, 0x00, 0x00, 0xF9, 0xD4, 0x6D, 0x43, 0xB9, 0x99, 0x00, 0x00, 0xF8, 0x98, 0x6D, 0xFC, 0xAE, 0x35, 0x00, 0x00, 0xF8, 0x5F, 0x6F, 0x11, 0xFF, 0xFF, 0xA8, 0x13, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0x32, 0x00, 0x00, 0x1B, 0xB6, 0xFF, 0xFF, 0x9F, 0x1C, 0x00, 0x00, 0x31, 0x80, 0xFF, 0xFF, 0x7E, 0xD3, 0x00, 0x00, 0x58, 0xE6, 0xFF, 0xFF, 0x70, 0x57, 0x00, 0x00, 0x6E, 0x3D, 0xFF, 0xFF, 0x30, 0xF2, 0x00, 0x00, 0x93, 0x47, 0xFF, 0xFF, 0x0C, 0xB5, 0x06, 0x1D, 0xA0, 0x3E, 0xFF, 0xFF, 0x11, 0x08, 0x3F, 0xCA, 0x9F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x81, 0xEF, 0xA0, 0x62, 0xFF, 0xFF, 0x00, 0x00, 0x8A, 0x3C, 0xA0, 0x86, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0x12, 0x78, 0x60, 0xFF, 0xFF, 0x31, 0xFC, 0xFD, 0x1A, 0x5B, 0xAD, 0xEA, 0x41, 0x00, 0x00, 0xFD, 0x16, 0x75, 0xB2, 0xCD, 0x3E, 0x00, 0x00, 0xF8, 0xD2, 0x72, 0x41, 0xB9, 0x6A, 0x00, 0x00, 0xF8, 0x34, 0x72, 0x82, 0xAB, 0x80, 0x00, 0x00, 0xF8, 0xC9, 0x73, 0xCF, 0x9E, 0x38, 0x00, 0x00, 0xF8, 0x4C, 0x74, 0x64, 0xFF, 0xFF, 0xAA, 0x5A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x8F, 0x00, 0x00, 0x18, 0x2D, 0xFF, 0xFF, 0xA0, 0xC0, 0x00, 0x00, 0x31, 0xEF, 0xFF, 0xFF, 0x80, 0xE0, 0x00, 0x00, 0x5A, 0x6A, 0xFF, 0xFF, 0x73, 0x1E, 0x00, 0x00, 0x73, 0xFE, 0xFF, 0xFF, 0x63, 0x31, 0x00, 0x00, 0x8C, 0x12, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0xD9, 0xAB, 0x9F, 0xFF, 0xFF, 0x00, 0x00, 0x87, 0x99, 0xA6, 0x0A, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0x6A, 0xA1, 0xAD, 0xFF, 0xFF, 0x00, 0x00, 0xDC, 0x9C, 0x82, 0x5C, 0xF9, 0x3F, 0x00, 0x00, 0xFE, 0x70, 0x7D, 0x06, 0xCF, 0x25, 0x00, 0x00, 0xF9, 0x5D, 0x77, 0xCD, 0xB9, 0x34, 0x00, 0x00, 0xF7, 0xFD, 0x77, 0xD9, 0xA7, 0x3E, 0x00, 0x00, 0xF7, 0xAA, 0x79, 0x41, 0x99, 0xF7, 0x00, 0x00, 0xF8, 0x56, 0x79, 0xF6, 0x8C, 0x3D, 0x00, 0x00, 0xF6, 0x99, 0x79, 0xAB, 0xFF, 0xFF, 0xAC, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x0D, 0x00, 0x00, 0x17, 0x43, 0xFF, 0xFF, 0xA1, 0xC5, 0x00, 0x00, 0x33, 0xEF, 0xFF, 0xFF, 0xA3, 0xFF, 0x00, 0x00, 0x3E, 0xEA, 0xFF, 0xFF, 0x7E, 0x68, 0x00, 0x00, 0x73, 0xD0, 0xFF, 0xFF, 0x5E, 0x46, 0x00, 0x00, 0x90, 0xBA, 0xFF, 0xFF, 0x3B, 0xB0, 0x06, 0xC3, 0xA0, 0x8C, 0xFF, 0xFF, 0x00, 0x00, 0x38, 0xF8, 0xB1, 0xCD, 0xFF, 0xFF, 0x00, 0x00, 0x82, 0x2A, 0xAD, 0x90, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0x8E, 0xA7, 0x44, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0x69, 0x8A, 0xF6, 0xD3, 0x82, 0x00, 0x00, 0xF6, 0x3A, 0x80, 0x4A, 0xB7, 0x01, 0x00, 0x00, 0xF4, 0x4A, 0x7E, 0xC1, 0xA3, 0x2F, 0x00, 0x00, 0xF2, 0xA1, 0x7F, 0xE8, 0x91, 0x64, 0x00, 0x00, 0xF2, 0x68, 0x80, 0x0C, 0x83, 0x28, 0x00, 0x00, 0xF1, 0xC6, 0x7F, 0xB5, 0x78, 0x53, 0x00, 0x00, 0xF3, 0x38, 0x7F, 0x16, 0xFF, 0xFF, 0xAF, 0x89, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0xF5, 0x00, 0x00, 0x06, 0x64, 0xFF, 0xFF, 0xA9, 0x34, 0x00, 0x00, 0x31, 0x47, 0xFF, 0xFF, 0xA0, 0x48, 0x00, 0x00, 0x44, 0x57, 0xFF, 0xFF, 0x89, 0x4A, 0x00, 0x00, 0x73, 0xCB, 0xFF, 0xFF, 0x87, 0x2D, 0x00, 0x00, 0x84, 0xE0, 0xFF, 0xFF, 0x5F, 0xCD, 0x00, 0x00, 0x9F, 0x15, 0xFF, 0xFF, 0x00, 0x00, 0x33, 0x0A, 0xB8, 0xCC, 0xFF, 0xFF, 0x00, 0x00, 0x92, 0x0D, 0xB1, 0xD5, 0xFF, 0xFF, 0x00, 0x00, 0xEB, 0x21, 0xAE, 0x07, 0xD8, 0x7B, 0x00, 0x00, 0xF5, 0xFD, 0x8D, 0x8A, 0xB2, 0x4F, 0x00, 0x00, 0xF1, 0xA9, 0x86, 0x8C, 0x99, 0xBB, 0x00, 0x00, 0xF3, 0x09, 0x86, 0xDA, 0x87, 0xD1, 0x00, 0x00, 0xF2, 0xEE, 0x86, 0x28, 0x77, 0x13, 0x00, 0x00, 0xF1, 0x57, 0x85, 0x67, 0x6B, 0xE3, 0x00, 0x00, 0xF2, 0x45, 0x85, 0x02, 0x60, 0xC2, 0x00, 0x00, 0xF3, 0x44, 0x84, 0xDA, 0xFF, 0xFF, 0xB3, 0x49, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB7, 0x75, 0x00, 0x00, 0x03, 0x25, 0xFF, 0xFF, 0xB3, 0x7C, 0x00, 0x00, 0x2B, 0x2F, 0xFF, 0xFF, 0xB1, 0x52, 0x00, 0x00, 0x3B, 0x7A, 0xFF, 0xFF, 0xA0, 0xAC, 0x00, 0x00, 0x6D, 0x25, 0xFF, 0xFF, 0x9C, 0x07, 0x01, 0x40, 0x7F, 0x2F, 0xFF, 0xFF, 0x6E, 0x0A, 0x00, 0x00, 0xA2, 0x23, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x0B, 0xE5, 0xB2, 0x00, 0x00, 0xAD, 0x57, 0xAE, 0xE3, 0xB1, 0x6F, 0x00, 0x00, 0xEE, 0xB4, 0xAD, 0x15, 0x93, 0xAB, 0x00, 0x00, 0xF2, 0xCE, 0x9B, 0x17, 0x7B, 0x89, 0x00, 0x00, 0xF3, 0x96, 0x91, 0x98, 0x68, 0x09, 0x00, 0x00, 0xF4, 0x62, 0x91, 0x14, 0x5A, 0x5E, 0x00, 0x00, 0xF3, 0xDF, 0x90, 0x5F, 0x51, 0x30, 0x00, 0x00, 0xF3, 0x0B, 0x8E, 0xF5, 0x46, 0xD4, 0x00, 0x00, 0xF3, 0x26, 0x8D, 0x6D, 0x3C, 0xB8, 0x00, 0x00, 0xF2, 0x58, 0x8C, 0x7C, 0xFF, 0xFF, 0xB8, 0x5A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xEE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xA9, 0x00, 0x00, 0x26, 0x52, 0xFF, 0xFF, 0xBD, 0x81, 0x00, 0x00, 0x3E, 0xD5, 0xFF, 0xFF, 0xB4, 0xA8, 0x00, 0x00, 0x65, 0xC0, 0xFF, 0xFF, 0xB2, 0xCF, 0x00, 0x00, 0x7C, 0x33, 0xF6, 0x40, 0xB4, 0x01, 0x00, 0x00, 0x8B, 0x71, 0xDE, 0x09, 0xB1, 0x67, 0x00, 0x00, 0x95, 0xD5, 0x3E, 0x97, 0x12, 0x9B, 0x41, 0x68, 0xBD, 0xE8, 0x0D, 0xCF, 0x11, 0xCA, 0xEB, 0xD8, 0xBF, 0x4D, 0x0C, 0x69, 0x10, 0x4C, 0xEB, 0x87, 0xAB, 0x92, 0x13, 0x67, 0x0E, 0x28, 0xE3, 0x80, 0xA2, 0x28, 0x0F, 0x8D, 0x0E, 0x95, 0xE4, 0xDF, 0x9E, 0x04, 0x0C, 0x15, 0x0E, 0x3B, 0xE6, 0x30, 0x9A, 0xB5, 0x07, 0xEE, 0x0E, 0x25, 0xE6, 0x15, 0x97, 0xCC, 0x04, 0x14, 0x0D, 0xAC, 0xE7, 0x49, 0x95, 0x5F, 0x05, 0x50, 0x0F, 0x5D, 0xEA, 0xEC, 0x91, 0xDC, 0xFF, 0xFF, 0xBF, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC1, 0xAE, 0x01, 0xDE, 0x00, 0x3A, 0xFF, 0xFF, 0xC4, 0x88, 0x00, 0x00, 0x27, 0xE6, 0xFF, 0xFF, 0xC7, 0xA7, 0x00, 0x00, 0x3B, 0x91, 0xFF, 0xFF, 0xCF, 0xC9, 0x00, 0x00, 0x4B, 0xFC, 0xFA, 0x7D, 0xD7, 0x4C, 0x00, 0x00, 0x39, 0xC2, 0xF2, 0xF5, 0xF1, 0xC9, 0x00, 0x00, 0x2E, 0x76, 0xB6, 0x44, 0xE5, 0xE3, 0x00, 0x00, 0x84, 0x10, 0x00, 0x00, 0xDD, 0xD9, 0x72, 0x3F, 0xB9, 0x05, 0x00, 0x00, 0xB2, 0x70, 0xF9, 0x42, 0xAC, 0x6C, 0x00, 0x00, 0x80, 0xE2, 0xF1, 0x38, 0x97, 0x1C, 0x00, 0x00, 0x6A, 0x82, 0xFA, 0x87, 0x90, 0x75, 0x00, 0x00, 0x5D, 0x11, 0xFA, 0x14, 0x8E, 0x81, 0x00, 0x00, 0x54, 0x84, 0xF9, 0x7C, 0x8D, 0x60, 0x00, 0x00, 0x4D, 0xDC, 0xF8, 0x23, 0x8C, 0x1D, 0x00, 0x00, 0x46, 0xB7, 0xF5, 0x57, 0x8A, 0x5E, 0x00, 0x00, 0x40, 0x37, 0xF3, 0x12, 0x87, 0x9E, 0xFF, 0xFF, 0xC4, 0x82, 0x00, 0x00, 0x00, 0xCB, 0xFF, 0xFF, 0xC9, 0xD7, 0x00, 0x00, 0x0A, 0xDB, 0xFF, 0xFF, 0xD2, 0x0D, 0x0B, 0x13, 0x0E, 0x44, 0xFF, 0xFF, 0xD8, 0x96, 0x00, 0x00, 0x2D, 0x35, 0xFE, 0x21, 0xEB, 0xF2, 0x00, 0x00, 0x18, 0xAA, 0xE0, 0xDD, 0xFC, 0x6B, 0x00, 0x00, 0x24, 0xF4, 0xAD, 0x58, 0xF3, 0x1B, 0x00, 0x00, 0x5C, 0x46, 0x48, 0x64, 0xFB, 0xC7, 0x00, 0x00, 0x95, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0x47, 0x9F, 0x1E, 0x00, 0x00, 0xFA, 0x20, 0xF5, 0x1D, 0x95, 0x24, 0x00, 0x00, 0xC7, 0x22, 0xF4, 0x23, 0x78, 0xFE, 0x00, 0x00, 0xA7, 0x36, 0xFB, 0x4C, 0x79, 0xD1, 0x00, 0x00, 0x93, 0x3A, 0xFB, 0x18, 0x7C, 0x14, 0x00, 0x00, 0x83, 0xCB, 0xF8, 0x0E, 0x7B, 0x35, 0x00, 0x00, 0x79, 0x2C, 0xF7, 0xEF, 0x7A, 0xCD, 0x00, 0x00, 0x6F, 0x63, 0xF8, 0x49, 0x7A, 0x75, 0x00, 0x00, 0x67, 0xBE, 0xF8, 0x0B, 0x79, 0xD4, 0xFF, 0xFF, 0xCE, 0x91, 0x00, 0x00, 0x06, 0x4D, 0xFF, 0xFF, 0xD8, 0xAE, 0x00, 0x00, 0x08, 0x49, 0xFF, 0xFF, 0xE2, 0x32, 0x00, 0x00, 0x12, 0x6F, 0xF8, 0xFE, 0xF4, 0x2E, 0x00, 0x00, 0x17, 0x52, 0xD9, 0x29, 0xFE, 0x65, 0x00, 0x00, 0x29, 0x4C, 0x9F, 0x98, 0xFA, 0x67, 0x00, 0x00, 0x4A, 0x6F, 0x45, 0xAD, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0x6D, 0x1E, 0xEC, 0xFF, 0xFF, 0x4E, 0x99, 0x71, 0x2D, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x59, 0x70, 0x65, 0x00, 0x00, 0xFF, 0xFF, 0xBC, 0xB5, 0x65, 0xFA, 0x00, 0x00, 0xFA, 0x38, 0xFE, 0x16, 0x54, 0x53, 0x00, 0x00, 0xD6, 0x85, 0xFE, 0x06, 0x5A, 0xF4, 0x00, 0x00, 0xBE, 0xF6, 0xF6, 0xB7, 0x5F, 0x48, 0x00, 0x00, 0xAE, 0x4E, 0xF8, 0xE0, 0x64, 0xB7, 0x00, 0x00, 0xA1, 0x85, 0xFB, 0x6F, 0x68, 0x38, 0x00, 0x00, 0x96, 0x30, 0xFD, 0xAF, 0x6A, 0x82, 0x00, 0x00, 0x8C, 0x74, 0xFE, 0x18, 0x6B, 0x6B, 0xFF, 0xFF, 0xDB, 0x79, 0x00, 0x00, 0x08, 0xF4, 0xFF, 0xFF, 0xEC, 0xA7, 0x00, 0x00, 0x08, 0x6C, 0xFD, 0x07, 0xFD, 0x93, 0x00, 0x00, 0x0C, 0x60, 0xDF, 0xFE, 0xFF, 0xFF, 0x1B, 0xB7, 0x0C, 0x50, 0xAA, 0xCC, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0x77, 0x76, 0x83, 0xFF, 0xFF, 0x28, 0x0F, 0x39, 0xAC, 0x11, 0x8D, 0xFF, 0xFF, 0x1B, 0xED, 0x5A, 0xCC, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0x82, 0x46, 0xCB, 0x08, 0xD2, 0xFF, 0xFF, 0x85, 0x55, 0x2B, 0x39, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x19, 0x21, 0xAF, 0x00, 0x00, 0xFF, 0xFF, 0xCE, 0x23, 0x0F, 0x1D, 0x00, 0x00, 0xFD, 0x1B, 0xFE, 0x36, 0x39, 0xE9, 0x00, 0x00, 0xDE, 0xB7, 0xFA, 0xF4, 0x42, 0xEA, 0x00, 0x00, 0xD1, 0xE1, 0xFF, 0xDE, 0x4B, 0x64, 0x00, 0x00, 0xC2, 0x04, 0xFC, 0xE3, 0x4F, 0x37, 0x00, 0x00, 0xB6, 0xE9, 0xFD, 0x08, 0x54, 0x20, 0x00, 0x00, 0xAB, 0x35, 0xFC, 0xED, 0x57, 0x43, 0xFF, 0xFF, 0xEE, 0xA4, 0x00, 0x00, 0x0A, 0xA7, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x73, 0xE1, 0x5B, 0xFF, 0xFF, 0x13, 0xBC, 0x0D, 0xAA, 0xB4, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0x21, 0x7D, 0x48, 0xFF, 0xFF, 0x13, 0xD3, 0x2C, 0xCE, 0x15, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0x50, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0xCE, 0x28, 0x62, 0x05, 0x8C, 0xFF, 0xFF, 0x63, 0xE1, 0x00, 0x00, 0x02, 0xFC, 0xFF, 0xFF, 0x81, 0x3B, 0x01, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xF2, 0x04, 0xAE, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x0F, 0x03, 0x2D, 0x00, 0x00, 0xFF, 0xFF, 0xD7, 0xC1, 0x00, 0x00, 0x29, 0xBC, 0xFF, 0xFF, 0xFF, 0x1D, 0x02, 0x4F, 0x00, 0x00, 0xF1, 0x70, 0xFF, 0xFF, 0x32, 0x4D, 0x00, 0x00, 0xDC, 0x67, 0xFE, 0xA9, 0x37, 0x3A, 0x00, 0x00, 0xD1, 0x43, 0xFF, 0xC7, 0x3C, 0xF0, 0x00, 0xFD, 0xC6, 0x7E, 0xFF, 0xFF, 0x40, 0xFC, 0xFD, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x4F, 0xE3, 0xB7, 0xFF, 0xFF, 0x0D, 0xDC, 0x0B, 0xA9, 0xC2, 0x52, 0xFF, 0xFF, 0x15, 0x23, 0x0D, 0xEA, 0x84, 0xA3, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x67, 0x41, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x36, 0x30, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xE6, 0x23, 0xBF, 0x05, 0xED, 0xFF, 0xFF, 0x4E, 0x13, 0x00, 0xD4, 0x02, 0xE9, 0xFF, 0xFF, 0x66, 0xA5, 0x02, 0xE9, 0x01, 0xA8, 0xFF, 0xFF, 0x79, 0xF1, 0x01, 0x42, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0xE0, 0x01, 0xC6, 0x00, 0x00, 0xFF, 0xFF, 0x9A, 0xDC, 0x01, 0x5A, 0x00, 0x00, 0xFF, 0xFF, 0xB6, 0x37, 0x00, 0x3D, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xB6, 0x00, 0x00, 0x11, 0xEC, 0xFF, 0xFF, 0xF0, 0x7D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7E, 0x22, 0x06, 0x00, 0x00, 0xEF, 0x3E, 0xFF, 0xFF, 0x29, 0x91, 0x00, 0x00, 0xDE, 0x9B, 0xFF, 0xFF, 0x2D, 0xAE, 0xE5, 0xBC, 0xFF, 0xFF, 0x00, 0x00, 0x17, 0x59, 0xC8, 0xCB, 0xFF, 0xFF, 0x10, 0x89, 0x0C, 0x9C, 0x97, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x22, 0x22, 0x5F, 0x8B, 0xFF, 0xFF, 0x08, 0xD0, 0x23, 0xCD, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0x47, 0x0E, 0x50, 0xFF, 0xFF, 0x42, 0xDF, 0x00, 0x00, 0x01, 0xB7, 0xFF, 0xFF, 0x4F, 0x4B, 0x01, 0x3F, 0x00, 0x19, 0xFF, 0xFF, 0x5B, 0xD4, 0x00, 0x19, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0xA2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x2B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0x16, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD1, 0xBB, 0x00, 0x00, 0x01, 0x2B, 0xFF, 0xFF, 0xE4, 0x06, 0x00, 0x00, 0x11, 0xA9, 0xFF, 0xFF, 0xF8, 0xD3, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x25, 0xFF, 0xE5, 0x18, 0xB7, 0xD1, 0x3E, 0xFF, 0xFF, 0x0D, 0x04, 0x0D, 0x04, 0xA5, 0x39, 0xFF, 0xFF, 0x05, 0x39, 0x12, 0xA1, 0x6B, 0x45, 0xFF, 0xFF, 0x00, 0x3F, 0x20, 0x3E, 0x13, 0xC2, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x5A, 0x0D, 0x9D, 0x00, 0x3A, 0xFF, 0xFF, 0x40, 0x00, 0x02, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0x99, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0xD6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x82, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x78, 0xD1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x5D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCE, 0x67, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDD, 0x82, 0x00, 0x00, 0x02, 0x03, 0xFF, 0xFF, 0xEB, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0xA4, 0x00, 0x00, 0x07, 0x16, 0xFF, 0xFF, 0x81, 0xAC, 0x00, 0x00, 0x2D, 0xE0, 0xFF, 0xFF, 0x55, 0xD3, 0x00, 0x00, 0x55, 0xD3, 0xFF, 0xFF, 0x5C, 0x36, 0x00, 0xEA, 0x60, 0xE9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xD9, 0xFF, 0xFF, 0x00, 0x00, 0x10, 0xE6, 0x90, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0xB7, 0x94, 0x39, 0xFF, 0xFF, 0x00, 0x00, 0x6F, 0xE6, 0x91, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x89, 0xE6, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x7C, 0x48, 0xFF, 0xFF, 0x00, 0x00, 0xC8, 0x05, 0x60, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0xF9, 0xC7, 0x40, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFF, 0x41, 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0x7F, 0xEE, 0x26, 0x00, 0x00, 0xFF, 0xFF, 0x57, 0x91, 0xDC, 0x29, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0xFF, 0xFF, 0xFF, 0x9B, 0xC3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0xE1, 0x00, 0x00, 0x02, 0x23, 0xFF, 0xFF, 0x87, 0xD6, 0x00, 0x00, 0x2D, 0x92, 0xFF, 0xFF, 0x4E, 0x80, 0x00, 0x00, 0x5F, 0x51, 0xFF, 0xFF, 0x6C, 0x55, 0x03, 0xA0, 0x5E, 0x2A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x93, 0x20, 0xFF, 0xFF, 0x00, 0x00, 0x09, 0xEC, 0x95, 0xCC, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0x48, 0x95, 0x35, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0xE3, 0x92, 0x1D, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xF4, 0x91, 0x14, 0xFF, 0xFF, 0x00, 0x00, 0x9A, 0x31, 0x83, 0xCE, 0xFF, 0xFF, 0x00, 0x00, 0xEE, 0x65, 0x57, 0x55, 0xFF, 0xFF, 0x24, 0x89, 0xFE, 0xE4, 0x41, 0x6F, 0xFF, 0xFF, 0x26, 0xBC, 0xFF, 0xFF, 0x42, 0x56, 0xF4, 0xC2, 0x00, 0x00, 0xFF, 0xFF, 0x5C, 0x0A, 0xDE, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0x1D, 0xCE, 0xB2, 0x00, 0x00, 0xFE, 0x19, 0x5D, 0x1B, 0xFF, 0xFF, 0x9E, 0x64, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0x76, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x91, 0x4A, 0x00, 0x00, 0x27, 0xD0, 0xFF, 0xFF, 0x50, 0x65, 0x00, 0x00, 0x63, 0x9E, 0xFF, 0xFF, 0x69, 0xDE, 0x00, 0x00, 0x65, 0xA0, 0xFF, 0xFF, 0x27, 0xB5, 0x00, 0x00, 0x89, 0x20, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x9D, 0xFF, 0xFF, 0x00, 0x00, 0x43, 0x8C, 0x9B, 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0xA4, 0x98, 0x0E, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0x10, 0x97, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0xA1, 0xFD, 0x83, 0x8C, 0xFF, 0xFF, 0x29, 0x41, 0xFF, 0xFF, 0x3F, 0x4E, 0xFF, 0xFF, 0x24, 0x0F, 0xFF, 0xFF, 0x48, 0xA8, 0xFE, 0x14, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0x5E, 0xE2, 0x6D, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0x0D, 0xCF, 0x48, 0x00, 0x00, 0xFD, 0x03, 0x61, 0x3C, 0xC1, 0xBF, 0x00, 0x00, 0xFA, 0xEF, 0x60, 0x8A, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x11, 0x00, 0x00, 0x01, 0x4B, 0xFF, 0xFF, 0x96, 0x84, 0x00, 0x00, 0x25, 0x7C, 0xFF, 0xFF, 0x60, 0xE1, 0x00, 0x00, 0x60, 0x8B, 0xFF, 0xFF, 0x6B, 0xAE, 0x00, 0x00, 0x69, 0xCA, 0xFF, 0xFF, 0x27, 0xA6, 0x00, 0x00, 0x8C, 0xF4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x46, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0xC4, 0xA0, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xB3, 0x9E, 0x75, 0xFF, 0xFF, 0x00, 0x00, 0x8A, 0x20, 0x9B, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0xB0, 0x12, 0x88, 0xCD, 0xFF, 0xFF, 0x27, 0x93, 0xFF, 0xFF, 0x47, 0x9D, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0xF1, 0xE9, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0xB8, 0xD2, 0x01, 0x00, 0x00, 0xFC, 0xE4, 0x64, 0x54, 0xC1, 0xDA, 0x00, 0x00, 0xF9, 0x6E, 0x63, 0xD7, 0xB5, 0x19, 0x00, 0x00, 0xF9, 0x90, 0x65, 0x80, 0xFF, 0xFF, 0xA1, 0x55, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0xC8, 0x00, 0x00, 0x23, 0x5A, 0xFF, 0xFF, 0x7F, 0x49, 0x00, 0x00, 0x4E, 0x89, 0xFF, 0xFF, 0x6C, 0xB5, 0x00, 0x00, 0x6E, 0x88, 0xFF, 0xFF, 0x6F, 0x57, 0x19, 0x6D, 0x74, 0xEF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x07, 0xFF, 0xFF, 0x15, 0x64, 0x42, 0xA8, 0x9F, 0x87, 0xFF, 0xFF, 0x00, 0x00, 0x82, 0x4E, 0x9F, 0x46, 0xFF, 0xFF, 0x00, 0x00, 0x99, 0xF1, 0xA1, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0xC3, 0x36, 0x8E, 0xC5, 0xFF, 0xFF, 0x29, 0x97, 0xFF, 0xFF, 0x4E, 0xA8, 0xF1, 0xA1, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0xFF, 0xD5, 0x01, 0x00, 0x00, 0xFC, 0xBF, 0x67, 0xEA, 0xC2, 0x03, 0x00, 0x00, 0xF9, 0x23, 0x67, 0x7D, 0xB4, 0x66, 0x00, 0x00, 0xF8, 0xC7, 0x69, 0x6C, 0xA8, 0xA6, 0x00, 0x00, 0xF8, 0x4B, 0x6A, 0xBC, 0xFF, 0xFF, 0xA4, 0x3E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0xB8, 0x00, 0x00, 0x22, 0xC5, 0xFF, 0xFF, 0x7B, 0xE6, 0x00, 0x00, 0x56, 0x1F, 0xFF, 0xFF, 0x74, 0xDD, 0x00, 0x00, 0x6E, 0x44, 0xFF, 0xFF, 0x61, 0xC7, 0x00, 0x00, 0x85, 0xE8, 0xFF, 0xFF, 0x05, 0x33, 0x00, 0x00, 0xA3, 0x3F, 0xFF, 0xFF, 0x36, 0x00, 0x43, 0xFB, 0x9D, 0xDA, 0xFF, 0xFF, 0x00, 0x00, 0x84, 0x62, 0xA6, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0xFC, 0xA0, 0x84, 0xFF, 0xFF, 0x00, 0x00, 0xE5, 0xC4, 0x93, 0xEC, 0xF3, 0xBE, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x43, 0xD2, 0x25, 0x00, 0x00, 0xFA, 0x9E, 0x6D, 0xC0, 0xBC, 0xAF, 0x00, 0x00, 0xF8, 0x73, 0x6D, 0xE0, 0xAF, 0x1B, 0x00, 0x00, 0xF8, 0x85, 0x6F, 0x9D, 0xA0, 0xC7, 0x00, 0x00, 0xF7, 0xE7, 0x70, 0xD0, 0x94, 0xA3, 0x00, 0x00, 0xF8, 0xBA, 0x71, 0xF9, 0xFF, 0xFF, 0xA8, 0x4B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x35, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x76, 0x00, 0x00, 0x1A, 0xB0, 0xFF, 0xFF, 0xA1, 0x9F, 0x00, 0x00, 0x3D, 0x17, 0xFF, 0xFF, 0x7F, 0xC6, 0x00, 0x00, 0x6C, 0xF7, 0xFF, 0xFF, 0x84, 0x4B, 0x00, 0x00, 0x7C, 0x07, 0xFF, 0xFF, 0x4D, 0x27, 0x00, 0x00, 0x9C, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0x1C, 0xB3, 0x72, 0xFF, 0xFF, 0x00, 0x00, 0x8C, 0x49, 0xAC, 0x75, 0xFF, 0xFF, 0x00, 0x00, 0xE7, 0x35, 0xA6, 0x7E, 0xDB, 0x1B, 0x00, 0x00, 0xF2, 0xD3, 0x92, 0x79, 0xC2, 0x67, 0x00, 0x00, 0xF7, 0xFB, 0x74, 0x9F, 0xAD, 0x61, 0x00, 0x00, 0xF7, 0x2B, 0x79, 0x14, 0x9D, 0x8D, 0x00, 0x00, 0xF7, 0xDB, 0x7A, 0x0F, 0x8D, 0x74, 0x00, 0x00, 0xF6, 0xF9, 0x7A, 0x34, 0x80, 0x4F, 0x00, 0x00, 0xF5, 0x03, 0x7A, 0x18, 0x75, 0x42, 0x00, 0x00, 0xF4, 0xD3, 0x7A, 0x74, 0xFF, 0xFF, 0xAE, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0xA6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAF, 0xAF, 0x00, 0x00, 0x1D, 0x41, 0xFF, 0xFF, 0xA6, 0xDF, 0x00, 0x00, 0x3F, 0x9A, 0xFF, 0xFF, 0x9F, 0xCA, 0x00, 0x00, 0x60, 0xD9, 0xFF, 0xFF, 0x8E, 0xC6, 0x00, 0x00, 0x7B, 0xB6, 0xFF, 0xFF, 0x81, 0xE4, 0x00, 0x00, 0x92, 0x94, 0xFF, 0xFF, 0x04, 0x08, 0x00, 0x00, 0xBA, 0x27, 0xCF, 0x76, 0x00, 0x00, 0x98, 0x18, 0xA1, 0xC9, 0xA8, 0xBC, 0x00, 0x00, 0xF2, 0xCB, 0xA2, 0x65, 0x88, 0x88, 0x00, 0x00, 0xF6, 0x86, 0x9F, 0x5E, 0x85, 0x99, 0x00, 0x00, 0xF2, 0x47, 0x86, 0x3D, 0x73, 0x89, 0x00, 0x00, 0xF1, 0x0C, 0x87, 0x7A, 0x66, 0x59, 0x00, 0x00, 0xF2, 0x62, 0x87, 0x5B, 0x5B, 0x09, 0x00, 0x00, 0xF3, 0x53, 0x87, 0x47, 0x52, 0xEE, 0x00, 0x00, 0xF3, 0xC0, 0x86, 0xAA, 0x49, 0x3E, 0x00, 0x00, 0xF2, 0xDB, 0x85, 0xBE, 0xFF, 0xFF, 0xB5, 0x33, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x45, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBC, 0xF5, 0x00, 0x00, 0x13, 0x43, 0xFF, 0xFF, 0xB6, 0x40, 0x00, 0x00, 0x3F, 0xA6, 0xFF, 0xFF, 0xBC, 0xAB, 0x0B, 0x2E, 0x44, 0xA7, 0xFF, 0xFF, 0xB7, 0xAE, 0x00, 0x00, 0x67, 0x6A, 0xEF, 0x71, 0xB5, 0xE7, 0x00, 0x00, 0x6D, 0x76, 0xD0, 0xA1, 0xAC, 0x2F, 0x00, 0x00, 0x7F, 0xE6, 0x25, 0xA8, 0x00, 0x00, 0x25, 0xEA, 0xBB, 0x4C, 0x04, 0x9D, 0x12, 0x48, 0xEE, 0x5F, 0xBB, 0x17, 0x00, 0x00, 0x16, 0x10, 0xEE, 0x60, 0xAE, 0x9B, 0x08, 0xED, 0x09, 0x9E, 0xE3, 0xA9, 0x9C, 0x83, 0x03, 0xE8, 0x0A, 0x8C, 0xE4, 0xC8, 0x9A, 0x86, 0x00, 0x00, 0x0A, 0x9D, 0xE5, 0x75, 0x97, 0x85, 0x00, 0x00, 0x09, 0xDE, 0xE7, 0x3F, 0x95, 0x0F, 0x00, 0x00, 0x08, 0xFE, 0xE8, 0xDD, 0x92, 0xFC, 0x00, 0x00, 0x0E, 0x9C, 0xEC, 0xC2, 0x8E, 0x34, 0xFF, 0xFF, 0xBE, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC2, 0xE5, 0x03, 0x8E, 0x14, 0xA5, 0xFF, 0xFF, 0xC5, 0x54, 0x00, 0x00, 0x34, 0xFE, 0xFF, 0xFF, 0xCE, 0xD4, 0x00, 0x00, 0x36, 0xA0, 0xF2, 0xE2, 0xD5, 0x14, 0x00, 0x00, 0x14, 0xB7, 0xE3, 0xC6, 0xE3, 0x70, 0x00, 0x00, 0x09, 0xB0, 0xBB, 0x90, 0xE0, 0xE0, 0x00, 0x00, 0x68, 0xAE, 0x00, 0x00, 0xC2, 0xE2, 0x47, 0x83, 0xB2, 0x05, 0x00, 0x00, 0xAE, 0x1C, 0xF5, 0x94, 0xA5, 0x68, 0x00, 0x00, 0x8C, 0x6D, 0xF4, 0xE1, 0x98, 0x86, 0x00, 0x00, 0x70, 0x4F, 0xF8, 0xDA, 0x83, 0xDC, 0x00, 0x00, 0x66, 0xB1, 0xF8, 0x6B, 0x84, 0x94, 0x00, 0x00, 0x5C, 0xD1, 0xF6, 0x60, 0x83, 0x79, 0x00, 0x00, 0x56, 0x0C, 0xF5, 0xEC, 0x82, 0x9A, 0x00, 0x00, 0x50, 0x56, 0xF5, 0x5A, 0x81, 0xE1, 0x00, 0x00, 0x4A, 0x57, 0xF4, 0xC6, 0x80, 0x4F, 0xFF, 0xFF, 0xC4, 0xD0, 0x00, 0x00, 0x02, 0x1C, 0xFF, 0xFF, 0xCA, 0xA7, 0x00, 0x00, 0x06, 0x3B, 0xFF, 0xFF, 0xCE, 0xF5, 0x05, 0x47, 0x0F, 0xD5, 0xFF, 0xFF, 0xD8, 0xF2, 0x00, 0x00, 0x19, 0xA2, 0xEF, 0x55, 0xE2, 0x48, 0x00, 0x00, 0x05, 0x1C, 0xD4, 0x0F, 0xEF, 0xB6, 0x00, 0x00, 0x06, 0xAE, 0xBA, 0x58, 0xF8, 0x59, 0x00, 0x00, 0x2B, 0x87, 0x6C, 0xB8, 0xF6, 0xE3, 0x00, 0x00, 0x7A, 0x02, 0x00, 0x00, 0xFC, 0x8B, 0x51, 0xE0, 0x9C, 0x2B, 0x00, 0x00, 0xF7, 0xBF, 0xFF, 0xFF, 0x91, 0x78, 0x00, 0x00, 0xCE, 0x17, 0xF5, 0x24, 0x7F, 0xDC, 0x00, 0x00, 0xAC, 0xF6, 0xF9, 0xD1, 0x66, 0x54, 0x00, 0x00, 0x9E, 0x32, 0xFC, 0xED, 0x6C, 0xBA, 0x00, 0x00, 0x92, 0x71, 0xFF, 0xA0, 0x6F, 0x21, 0x00, 0x00, 0x86, 0x15, 0xFC, 0xA0, 0x6F, 0x06, 0x00, 0x00, 0x7C, 0x42, 0xFA, 0x9A, 0x6E, 0x9C, 0x00, 0x00, 0x74, 0xE8, 0xFA, 0x30, 0x6E, 0x6E, 0xFF, 0xFF, 0xD0, 0x6F, 0x00, 0x00, 0x07, 0xDA, 0xFF, 0xFF, 0xD7, 0xD9, 0x00, 0x00, 0x0A, 0xC4, 0xFF, 0xFF, 0xE6, 0xF3, 0x00, 0x00, 0x04, 0x1A, 0xEF, 0xF0, 0xF0, 0x64, 0x00, 0x00, 0x07, 0x11, 0xCF, 0xF0, 0xFA, 0xDE, 0x00, 0x00, 0x0E, 0x43, 0xA1, 0x0E, 0xF9, 0x53, 0x00, 0x00, 0x2A, 0x8F, 0x59, 0x04, 0xFD, 0x96, 0x00, 0x00, 0x5D, 0xAB, 0x00, 0x00, 0xFC, 0xD3, 0x17, 0xD4, 0x7C, 0xD0, 0x00, 0x00, 0xFD, 0x52, 0x77, 0xC9, 0x6D, 0x60, 0x00, 0x00, 0xFE, 0x1B, 0xB9, 0x6F, 0x64, 0xDF, 0x00, 0x00, 0xFC, 0x65, 0xF3, 0xC5, 0x5F, 0x6B, 0x00, 0x00, 0xD7, 0xDC, 0xFE, 0x93, 0x43, 0xAA, 0x00, 0x00, 0xC9, 0xA5, 0xFF, 0x61, 0x4D, 0xAB, 0x00, 0x00, 0xBA, 0x34, 0xFC, 0xEE, 0x51, 0xF4, 0x00, 0x00, 0xAE, 0xA9, 0xFC, 0xF6, 0x56, 0x8F, 0x00, 0x00, 0xA4, 0x1A, 0xFC, 0xD6, 0x59, 0x02, 0x00, 0x00, 0x9A, 0x98, 0xFC, 0xE8, 0x5A, 0xA4, 0xFF, 0xFF, 0xDE, 0x54, 0x00, 0x00, 0x09, 0xA6, 0xFF, 0xFF, 0xED, 0xFA, 0x00, 0x00, 0x05, 0x73, 0xF5, 0x87, 0xFC, 0x20, 0x00, 0x00, 0x04, 0xF0, 0xD6, 0x00, 0xFF, 0xFF, 0x0C, 0x02, 0x05, 0x53, 0xA6, 0x8A, 0xFF, 0xFF, 0x01, 0x21, 0x19, 0xF2, 0x70, 0x7F, 0xFF, 0xFF, 0x14, 0xF9, 0x2C, 0x36, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x5E, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0x43, 0x3F, 0x44, 0x03, 0x0E, 0x36, 0xFF, 0xFF, 0x81, 0x1A, 0x2C, 0x77, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0x22, 0x2A, 0x7D, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x56, 0x24, 0x79, 0x1C, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x1B, 0x00, 0x00, 0xEC, 0xA8, 0xFF, 0xFF, 0x33, 0x29, 0x00, 0x00, 0xD9, 0xC1, 0xFF, 0x6C, 0x36, 0xA2, 0x00, 0x00, 0xCE, 0x32, 0xFF, 0xFF, 0x3B, 0xE5, 0x00, 0x03, 0xC3, 0x5C, 0xFF, 0xFF, 0x3F, 0x3D, 0x00, 0x00, 0xB9, 0x67, 0xFF, 0xFF, 0x44, 0x07, 0xFF, 0xFF, 0xF2, 0x4B, 0x00, 0x00, 0x0A, 0xB4, 0xF8, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x05, 0x23, 0xD7, 0x65, 0xFF, 0xFF, 0x0B, 0x85, 0x0B, 0x04, 0xAE, 0x21, 0xFF, 0xFF, 0x0E, 0xBB, 0x0D, 0x38, 0x72, 0x05, 0xFF, 0xFF, 0x07, 0xBF, 0x25, 0x95, 0x18, 0x7D, 0xFF, 0xFF, 0x00, 0x00, 0x44, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0x58, 0x28, 0x52, 0x07, 0x6E, 0xFF, 0xFF, 0x5C, 0xA5, 0x01, 0x23, 0x00, 0x33, 0xFF, 0xFF, 0x7E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0xBA, 0x00, 0x8A, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x16, 0x00, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0xD9, 0x68, 0x00, 0x00, 0x0B, 0xA5, 0xFF, 0xFF, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x52, 0x00, 0x00, 0xEE, 0xC2, 0xFF, 0xFF, 0x26, 0x1C, 0x00, 0x00, 0xDD, 0x7C, 0xFF, 0xFF, 0x2A, 0x89, 0x00, 0x00, 0xD4, 0x76, 0xFF, 0xFF, 0x2F, 0x8B, 0xF7, 0xA1, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x95, 0xDB, 0x23, 0xFF, 0xFF, 0x0B, 0xA5, 0x0A, 0x5A, 0xB5, 0xF3, 0xFF, 0xFF, 0x0D, 0x62, 0x09, 0xCA, 0x79, 0xE3, 0xFF, 0xFF, 0x00, 0x00, 0x22, 0x3F, 0x3E, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0x29, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x5E, 0x1C, 0x1B, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x07, 0x01, 0x99, 0x00, 0xD3, 0xFF, 0xFF, 0x5A, 0xA5, 0x00, 0xD3, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x73, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x71, 0x00, 0x13, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD2, 0x2A, 0x00, 0x00, 0x01, 0x3B, 0xFF, 0xFF, 0xE3, 0x0C, 0x00, 0x00, 0x09, 0xB8, 0xFF, 0xFF, 0xF5, 0xDC, 0x00, 0x00, 0x02, 0x31, 0xFF, 0xFF, 0xFF, 0xFF, 0x11, 0xE0, 0x00, 0x00, 0xF3, 0x16, 0xFF, 0xFF, 0x1A, 0xBC, 0xDF, 0xFF, 0xFF, 0xFF, 0x0D, 0x3B, 0x0D, 0x3B, 0xBD, 0xC8, 0xFF, 0xFF, 0x0C, 0x6A, 0x09, 0xD9, 0x87, 0xF5, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x80, 0x4F, 0xE1, 0xFF, 0xFF, 0x00, 0x48, 0x20, 0x0F, 0x0D, 0xDA, 0xFF, 0xFF, 0x0F, 0x5C, 0x13, 0x21, 0x07, 0x67, 0xFF, 0xFF, 0x38, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x47, 0x3B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x59, 0x2D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x78, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0xCF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x17, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDA, 0xAA, 0x00, 0x00, 0x00, 0xCD, 0xFF, 0xFF, 0xE7, 0xD4, 0x00, 0x00, 0x02, 0x67, 0xFF, 0xFF, 0xF5, 0x18, 0x00, 0x00, 0xC4, 0xDE, 0xFF, 0xFF, 0x0C, 0x82, 0x0C, 0x82, 0x97, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xB6, 0x5E, 0xA5, 0xFF, 0xFF, 0x00, 0x00, 0x15, 0x6E, 0x24, 0x1E, 0xFF, 0xFF, 0x0C, 0xF0, 0x0C, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0xBF, 0x08, 0x6B, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x4D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x49, 0x30, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x5D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0x27, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0xD0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xEE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0xEE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC5, 0x9D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD2, 0xE3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDF, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0x8B, 0x79, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0x59, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x9C, 0x00, 0x00, 0x13, 0x26, 0xFF, 0xFF, 0x50, 0xA9, 0x00, 0x00, 0x50, 0xA9, 0xFF, 0xFF, 0x4C, 0x5D, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x84, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x05, 0x8C, 0x04, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x96, 0x97, 0x1D, 0xFF, 0xFF, 0x00, 0x00, 0x55, 0x3E, 0x9C, 0xAE, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0x58, 0x88, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x79, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0xBF, 0x94, 0x60, 0x00, 0xFF, 0xFF, 0x17, 0xCC, 0xF7, 0xCB, 0x3C, 0xE3, 0xFF, 0xFF, 0x13, 0xB1, 0xFA, 0xAE, 0x33, 0xB1, 0xFF, 0xFF, 0x13, 0x72, 0xFF, 0xFF, 0x34, 0x81, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x83, 0xF4, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0xA7, 0xFF, 0xFF, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0x8A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0x9A, 0x00, 0x00, 0x0C, 0x60, 0xFF, 0xFF, 0x4D, 0xF4, 0x00, 0x00, 0x57, 0x30, 0xFF, 0xFF, 0x5E, 0x4B, 0x00, 0x00, 0x5B, 0xD8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x88, 0xD8, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x5E, 0x8D, 0xB7, 0xFF, 0xFF, 0x00, 0x00, 0x44, 0xBF, 0x91, 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x79, 0x1B, 0x8C, 0x3B, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0x57, 0x8C, 0x8E, 0xFF, 0xFF, 0x00, 0x00, 0x9E, 0x8E, 0x7F, 0x5A, 0xFF, 0xFF, 0x00, 0x00, 0xBC, 0x81, 0x65, 0x9C, 0xFF, 0xFF, 0x14, 0x90, 0xF4, 0xBC, 0x33, 0x92, 0xFF, 0xFF, 0x18, 0x6E, 0xFF, 0x88, 0x34, 0x89, 0xFF, 0xFF, 0x02, 0xD1, 0xFF, 0xFF, 0x40, 0x49, 0xFB, 0xA2, 0x00, 0x00, 0xFF, 0xFF, 0x43, 0xC7, 0xE8, 0x7D, 0x00, 0x00, 0xFF, 0xFF, 0x48, 0xF5, 0xFF, 0xFF, 0x90, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x9B, 0x00, 0x00, 0x0D, 0x7E, 0xFF, 0xFF, 0x4F, 0xF0, 0x00, 0x00, 0x59, 0xF0, 0xFF, 0xFF, 0x60, 0xB7, 0x00, 0x00, 0x5D, 0x77, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x24, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xC3, 0x92, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0x43, 0x63, 0x92, 0x8C, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0xC1, 0x90, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0x2D, 0x91, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x9D, 0xE0, 0x82, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0xC8, 0x97, 0x65, 0xED, 0xFF, 0xFF, 0x17, 0x96, 0xF8, 0xA7, 0x36, 0xF2, 0xFF, 0xFF, 0x16, 0x46, 0xFF, 0xFF, 0x39, 0xA0, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x40, 0xED, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x16, 0xDC, 0x52, 0x00, 0x00, 0xFF, 0xFF, 0x4C, 0xE2, 0xFF, 0xFF, 0x94, 0x59, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x31, 0x00, 0x00, 0x10, 0x70, 0xFF, 0xFF, 0x4F, 0xDB, 0x00, 0x00, 0x5F, 0x04, 0xFF, 0xFF, 0x61, 0xDB, 0x00, 0x00, 0x5F, 0x47, 0xFF, 0xFF, 0x1C, 0xE2, 0x00, 0x00, 0x85, 0xD5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x96, 0xD9, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x91, 0x97, 0x52, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x1D, 0x95, 0x5D, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0x63, 0x96, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0xAB, 0xAD, 0x81, 0x0D, 0xFF, 0xFF, 0x00, 0x00, 0xEC, 0x55, 0x64, 0x8D, 0xFF, 0xFF, 0x1F, 0x3C, 0xFF, 0xFF, 0x39, 0x1C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x6A, 0xF0, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0xDD, 0xDC, 0xF1, 0x00, 0x00, 0xFF, 0xFF, 0x50, 0x65, 0xCF, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0xB7, 0xFF, 0xFF, 0x99, 0x1D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0x2A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0x37, 0x00, 0x00, 0x13, 0xBA, 0xFF, 0xFF, 0x4F, 0xCD, 0x00, 0x00, 0x65, 0x61, 0xFF, 0xFF, 0x62, 0x12, 0x00, 0x00, 0x61, 0x90, 0xFF, 0xFF, 0x1A, 0xBF, 0x00, 0x00, 0x8A, 0xAE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x86, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0xE3, 0x9F, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x48, 0x9B, 0xDD, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0x1C, 0x98, 0x77, 0xFF, 0xFF, 0x00, 0x00, 0xC0, 0xA0, 0x85, 0x14, 0xFF, 0xFF, 0x12, 0xE4, 0xF6, 0xDC, 0x5F, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x19, 0xEB, 0x61, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0xD8, 0xD9, 0x27, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x16, 0xC9, 0xE1, 0x00, 0x00, 0xFF, 0xE4, 0x56, 0xF1, 0xBC, 0x50, 0x00, 0x00, 0xFD, 0x5A, 0x58, 0x07, 0xFF, 0xFF, 0x9F, 0x11, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0xBD, 0x00, 0x00, 0x13, 0x7C, 0xFF, 0xFF, 0x81, 0x29, 0x00, 0x00, 0x4B, 0x00, 0xFF, 0xFF, 0x69, 0x74, 0x00, 0x00, 0x63, 0xE4, 0xFF, 0xFF, 0x64, 0xB8, 0x02, 0x14, 0x76, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x20, 0xFF, 0xFF, 0x0C, 0xCB, 0x38, 0x86, 0x9F, 0xB9, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0x3C, 0xA0, 0x52, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0x8E, 0x9C, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0xE8, 0xF2, 0x8A, 0xB9, 0xFD, 0x51, 0x00, 0x00, 0xFD, 0x3D, 0x6E, 0xF6, 0xDD, 0xD8, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0xCD, 0xCA, 0x61, 0x00, 0x00, 0xFD, 0x75, 0x5E, 0x0D, 0xBB, 0x89, 0x00, 0x00, 0xFA, 0xEE, 0x5E, 0xD0, 0xB0, 0x73, 0x00, 0x00, 0xF9, 0xCA, 0x61, 0x38, 0xA6, 0x2B, 0x00, 0x00, 0xF9, 0xF0, 0x62, 0xB2, 0xFF, 0xFF, 0xA3, 0x1A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x9B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x60, 0x00, 0x00, 0x1B, 0x87, 0xFF, 0xFF, 0x95, 0xC5, 0x00, 0x00, 0x3F, 0x1D, 0xFF, 0xFF, 0x80, 0x7A, 0x00, 0x00, 0x60, 0x74, 0xFF, 0xFF, 0x76, 0x8D, 0x00, 0x00, 0x74, 0xC9, 0xFF, 0xFF, 0x53, 0xC0, 0x00, 0x00, 0x91, 0xD8, 0xFF, 0xFF, 0x30, 0x26, 0x37, 0x49, 0x9F, 0x29, 0xFF, 0xFF, 0x00, 0x00, 0x85, 0x47, 0xA5, 0x85, 0xFF, 0xFF, 0x00, 0x00, 0xE2, 0xB7, 0x9A, 0x1A, 0xD3, 0x63, 0x00, 0x00, 0xF1, 0x20, 0x88, 0xF5, 0xC4, 0x8A, 0x00, 0x00, 0xF7, 0x35, 0x76, 0xA8, 0xB4, 0x57, 0x00, 0x00, 0xF8, 0xB4, 0x69, 0x67, 0xA6, 0xBA, 0x00, 0x00, 0xF7, 0x23, 0x6B, 0xAE, 0x99, 0xF1, 0x00, 0x00, 0xF8, 0x31, 0x6D, 0x17, 0x90, 0x66, 0x00, 0x00, 0xF9, 0xAB, 0x6E, 0xA3, 0x83, 0x29, 0x00, 0x00, 0xF8, 0x0C, 0x6E, 0xD1, 0xFF, 0xFF, 0xAA, 0x14, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA9, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA8, 0x97, 0x00, 0x00, 0x1D, 0xF4, 0xFF, 0xFF, 0x9E, 0x8C, 0x00, 0x00, 0x3F, 0xFA, 0xFF, 0xFF, 0xA2, 0x82, 0x00, 0x00, 0x4C, 0x2E, 0xFF, 0xFF, 0x8E, 0x59, 0x00, 0x00, 0x6D, 0xF2, 0xFF, 0xFF, 0x82, 0x45, 0x00, 0x00, 0x86, 0xCB, 0xE8, 0xBE, 0x28, 0xF6, 0x00, 0x00, 0xA7, 0xFB, 0xBE, 0x36, 0x00, 0x00, 0x87, 0x62, 0x95, 0xCD, 0xA3, 0x03, 0x00, 0x00, 0xF7, 0xBF, 0x94, 0x78, 0x80, 0xB4, 0x00, 0x00, 0xFC, 0xFD, 0x94, 0xF3, 0x7D, 0x2A, 0x00, 0x00, 0xF3, 0x3A, 0x8A, 0x28, 0x76, 0x79, 0x00, 0x00, 0xF2, 0xA6, 0x7D, 0x44, 0x6A, 0xB3, 0x00, 0x00, 0xF3, 0xB5, 0x7D, 0xC7, 0x61, 0xA4, 0x00, 0x00, 0xF4, 0xC3, 0x7D, 0xBC, 0x59, 0x4C, 0x00, 0x00, 0xF5, 0x18, 0x7D, 0xE8, 0x4F, 0x99, 0x00, 0x00, 0xF4, 0x9A, 0x7D, 0x7C, 0xFF, 0xFF, 0xB2, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0x18, 0x00, 0x00, 0x1D, 0xC2, 0xFF, 0xFF, 0xB2, 0x8E, 0x00, 0x00, 0x37, 0x54, 0xFF, 0xFF, 0xB5, 0x97, 0x00, 0x00, 0x40, 0x8A, 0xFF, 0xFF, 0xBE, 0xA0, 0x04, 0xF9, 0x46, 0x96, 0xE7, 0xD0, 0xB5, 0xC1, 0x00, 0x00, 0x47, 0x92, 0xC4, 0x9E, 0xA3, 0x78, 0x00, 0x00, 0x6B, 0xC8, 0x26, 0xE0, 0x04, 0xAB, 0x20, 0x94, 0xB1, 0x9A, 0x00, 0x00, 0x12, 0x98, 0xDC, 0x62, 0xB3, 0x38, 0x00, 0x00, 0x17, 0xB8, 0xEF, 0x7F, 0xA8, 0x58, 0x00, 0x00, 0x11, 0xE4, 0xE6, 0x22, 0x9C, 0x5E, 0x00, 0x00, 0x05, 0x2F, 0xE7, 0xC7, 0x94, 0xD0, 0x00, 0x00, 0x06, 0x96, 0xE9, 0xC5, 0x92, 0x60, 0x00, 0x00, 0x08, 0xB4, 0xEA, 0x10, 0x8F, 0x49, 0x00, 0x00, 0x0A, 0x7E, 0xEA, 0x99, 0x8C, 0x9A, 0x00, 0x00, 0x11, 0x0B, 0xED, 0xC6, 0x87, 0x75, 0xFF, 0xFF, 0xBC, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0x61, 0x00, 0x00, 0x14, 0x4C, 0xFF, 0xFF, 0xC3, 0x55, 0x00, 0x00, 0x29, 0x49, 0xFF, 0xFF, 0xCE, 0xDA, 0x00, 0x00, 0x15, 0x14, 0xE3, 0xD6, 0xCE, 0x27, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x1F, 0xD1, 0xF5, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x22, 0xD7, 0xCD, 0x00, 0x00, 0x50, 0x85, 0x00, 0x00, 0xAC, 0x08, 0x27, 0x54, 0xAA, 0x5D, 0x00, 0x00, 0xAA, 0x0D, 0xE5, 0x87, 0x9C, 0x93, 0x00, 0x00, 0x8B, 0xF1, 0xFA, 0x85, 0x8F, 0xB3, 0x00, 0x00, 0x75, 0xED, 0xF7, 0xD5, 0x82, 0xE3, 0x00, 0x00, 0x67, 0x2D, 0xF8, 0x97, 0x77, 0x59, 0x00, 0x00, 0x60, 0x5F, 0xF8, 0x9A, 0x77, 0x37, 0x00, 0x00, 0x5B, 0x8F, 0xF8, 0x4A, 0x76, 0xC9, 0x00, 0x00, 0x57, 0x90, 0xF8, 0x30, 0x76, 0x54, 0x00, 0x00, 0x51, 0x67, 0xF7, 0x6E, 0x75, 0x93, 0xFF, 0xFF, 0xC3, 0xFE, 0x00, 0x00, 0x02, 0xB2, 0xFF, 0xFF, 0xC7, 0x3F, 0x00, 0x00, 0x09, 0x05, 0xFF, 0xFF, 0xCB, 0xE9, 0x00, 0x00, 0x10, 0x5C, 0xFF, 0xFF, 0xDA, 0x8B, 0x00, 0x00, 0x02, 0xAE, 0xDF, 0x17, 0xD9, 0xC9, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xCC, 0xDC, 0x67, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x64, 0xF1, 0xF9, 0x00, 0x00, 0x03, 0x86, 0x80, 0xEC, 0xF2, 0xC1, 0x00, 0x00, 0x56, 0xD3, 0x00, 0x00, 0xF1, 0xE6, 0x3B, 0x02, 0x94, 0x15, 0x00, 0x00, 0xEF, 0x8B, 0xEC, 0x19, 0x89, 0xA4, 0x00, 0x00, 0xC7, 0xDA, 0xFB, 0x8D, 0x77, 0x3C, 0x00, 0x00, 0xB2, 0x8C, 0xF6, 0x80, 0x64, 0x8E, 0x00, 0x00, 0xA0, 0x3E, 0xFC, 0xEC, 0x5B, 0xBC, 0x00, 0x00, 0x95, 0x3D, 0xFC, 0x81, 0x5E, 0x75, 0x00, 0x00, 0x8C, 0x4E, 0xFC, 0x74, 0x60, 0x2D, 0x00, 0x00, 0x84, 0xA4, 0xFC, 0x9D, 0x61, 0x73, 0x00, 0x00, 0x7C, 0xE5, 0xFB, 0xC6, 0x61, 0x86, 0xFF, 0xFF, 0xCF, 0xE1, 0x00, 0x00, 0x08, 0xEC, 0xFF, 0xFF, 0xD7, 0x35, 0x00, 0x00, 0x09, 0x0C, 0xFD, 0xA0, 0xE2, 0xF4, 0x00, 0x00, 0x00, 0x00, 0xE5, 0x26, 0xEA, 0xCA, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xFE, 0xF1, 0x3C, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xBC, 0xF7, 0x22, 0x00, 0x00, 0x04, 0xDF, 0x6B, 0xC4, 0xFA, 0x04, 0x00, 0x00, 0x37, 0x04, 0x05, 0x63, 0xF6, 0x8A, 0x00, 0x00, 0x6F, 0x83, 0x00, 0x00, 0xFE, 0x4B, 0x5C, 0x7A, 0x6A, 0x40, 0x00, 0x00, 0xFE, 0xBB, 0xB5, 0x0B, 0x63, 0x98, 0x00, 0x00, 0xF6, 0x56, 0xF5, 0xBF, 0x59, 0xC5, 0x00, 0x00, 0xDC, 0x0B, 0xF7, 0xCF, 0x44, 0x04, 0x00, 0x00, 0xC8, 0x04, 0xFF, 0xFF, 0x3B, 0x8F, 0x00, 0x00, 0xBD, 0x32, 0xFF, 0xFF, 0x3F, 0xFC, 0x00, 0x00, 0xB3, 0xF3, 0xFF, 0xFF, 0x44, 0xC1, 0x00, 0x00, 0xAC, 0x81, 0xFF, 0xFF, 0x48, 0x9F, 0x00, 0x00, 0xA3, 0x40, 0xFF, 0xFF, 0x4A, 0xFB, 0xFF, 0xFF, 0xDE, 0xDE, 0x00, 0x00, 0x0A, 0xDC, 0xFF, 0xFF, 0xEE, 0xE5, 0x00, 0x00, 0x00, 0x00, 0xEA, 0xEF, 0xF8, 0x14, 0x00, 0x00, 0x00, 0x00, 0xC9, 0xBB, 0xFE, 0x74, 0x00, 0x00, 0x03, 0xB6, 0x9E, 0xF1, 0xFF, 0x9A, 0x00, 0x00, 0x09, 0x2F, 0x68, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x23, 0x7F, 0x20, 0x85, 0xFF, 0xFF, 0x00, 0x00, 0x44, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0xA7, 0x40, 0x85, 0x2D, 0x8E, 0xFF, 0xFF, 0x86, 0x73, 0x17, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0x94, 0x2D, 0x0C, 0x00, 0x00, 0xFF, 0xFF, 0xCF, 0x5E, 0x2A, 0x6B, 0x1E, 0x42, 0xFF, 0xFF, 0xFA, 0x0C, 0x11, 0x0E, 0x00, 0x00, 0xEE, 0xD1, 0xFF, 0xFF, 0x23, 0xD0, 0x00, 0x00, 0xDC, 0x7A, 0xFF, 0xFF, 0x27, 0xAB, 0x00, 0x00, 0xD3, 0x1D, 0xFF, 0xFF, 0x2C, 0xEA, 0x00, 0x00, 0xC9, 0x8A, 0xFF, 0xFF, 0x30, 0x77, 0x00, 0x00, 0xC0, 0x8A, 0xFF, 0xFF, 0x33, 0xA7, 0xFF, 0xFF, 0xF5, 0xE2, 0x00, 0x00, 0x0A, 0xC2, 0xF1, 0x2B, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0xC8, 0xCD, 0xFC, 0xFF, 0xFF, 0x03, 0xDB, 0x03, 0x2B, 0xA1, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x50, 0x67, 0x68, 0xFF, 0xFF, 0x00, 0x00, 0x21, 0x17, 0x1D, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x38, 0xF6, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0xF9, 0x27, 0x26, 0x09, 0xEC, 0xFF, 0xFF, 0x55, 0x50, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x79, 0x95, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0x55, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAD, 0x12, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD0, 0xDC, 0x00, 0x00, 0x01, 0x73, 0xFF, 0xFF, 0xF2, 0x31, 0x00, 0x00, 0x16, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xB6, 0xFF, 0xFF, 0x16, 0xAF, 0x00, 0x00, 0xE8, 0x13, 0xFF, 0xFF, 0x1B, 0xA7, 0x00, 0x00, 0xDC, 0x9F, 0xFF, 0xFF, 0x20, 0x6C, 0xF1, 0x4B, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0x97, 0xD2, 0x0D, 0xFF, 0xFF, 0x08, 0xD4, 0x07, 0x73, 0xA9, 0xFD, 0xFF, 0xFF, 0x07, 0xDD, 0x05, 0x07, 0x70, 0x20, 0xFF, 0xFF, 0x00, 0x00, 0x18, 0xAA, 0x3C, 0xAF, 0xFF, 0xFF, 0x00, 0x00, 0x1B, 0x49, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0x65, 0x16, 0x58, 0x00, 0x28, 0xFF, 0xFF, 0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0xEC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0x3B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD7, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE2, 0xE8, 0x00, 0x00, 0x00, 0xBE, 0xFF, 0xFF, 0xF1, 0x07, 0x00, 0x00, 0x07, 0xD4, 0xFF, 0xFF, 0xFF, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xA5, 0xFF, 0xFF, 0x0B, 0xBD, 0xD7, 0xBF, 0xFF, 0xFF, 0x0C, 0xE7, 0x0C, 0xE7, 0xB1, 0xAB, 0xFF, 0xFF, 0x07, 0xC6, 0x05, 0xEA, 0x7B, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0xB0, 0x45, 0xBC, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0x5E, 0x08, 0xFA, 0xFF, 0xFF, 0x0C, 0xFC, 0x0B, 0x5B, 0x00, 0x7A, 0xFF, 0xFF, 0x2D, 0x35, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0x87, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0x97, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0x50, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x33, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x5A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0x81, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0x81, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD9, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xCF, 0x00, 0x00, 0x00, 0xE3, 0xFF, 0xFF, 0xEF, 0x1B, 0x00, 0x00, 0xB9, 0x9A, 0xFF, 0xFF, 0x09, 0x9A, 0x09, 0x9A, 0x88, 0xEA, 0xFF, 0xFF, 0x00, 0x00, 0x0D, 0xCE, 0x52, 0x6D, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x9C, 0x16, 0xD4, 0xFF, 0xFF, 0x07, 0x86, 0x07, 0x86, 0x00, 0x00, 0xFF, 0xFF, 0x16, 0xD6, 0x03, 0x39, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0x62, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x52, 0x39, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0xA3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x15, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x5A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0xB2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xB1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDA, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0x12, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0xFD, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xFF, 0x49, 0xC2, 0x00, 0x00, 0x49, 0xC2, 0xFF, 0xFF, 0x29, 0x28, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0xA1, 0x8A, 0xA0, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0x9D, 0x9F, 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0xE2, 0x9A, 0xE2, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xFF, 0x78, 0x52, 0xFF, 0xFF, 0x00, 0x00, 0xB6, 0x63, 0x60, 0x00, 0xFF, 0xFF, 0x13, 0x6E, 0xF3, 0x6D, 0x3E, 0x8B, 0xFF, 0xFF, 0x11, 0x9B, 0xF4, 0x80, 0x31, 0x9B, 0xFF, 0xFF, 0x08, 0xD9, 0xFF, 0xFF, 0x28, 0xD9, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x12, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0xF2, 0xFF, 0xFF, 0x7E, 0x0D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x0D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xA6, 0x00, 0x00, 0x0B, 0xEB, 0xFF, 0xFF, 0x4E, 0xC4, 0x00, 0x00, 0x4B, 0x85, 0xFF, 0xFF, 0x2D, 0xEA, 0x00, 0x00, 0x60, 0x5A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x82, 0x7A, 0xFF, 0xFF, 0x00, 0x00, 0x09, 0xB0, 0x88, 0xD8, 0xFF, 0xFF, 0x00, 0x00, 0x37, 0xAE, 0xA6, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x5D, 0x7D, 0xB6, 0x8A, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x2A, 0x93, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x3D, 0x78, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0xB9, 0xDA, 0x60, 0x9A, 0xFF, 0xFF, 0x19, 0x6B, 0xFB, 0x38, 0x32, 0x64, 0xFF, 0xFF, 0x0C, 0xC5, 0xFB, 0x61, 0x2C, 0x24, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x6D, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x28, 0xE4, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0x05, 0xFF, 0xFF, 0x84, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x13, 0x00, 0x00, 0x0A, 0xE6, 0xFF, 0xFF, 0x4E, 0xB1, 0x00, 0x00, 0x4E, 0xF7, 0xFF, 0xFF, 0x35, 0x81, 0x00, 0x00, 0x61, 0x4D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x84, 0x4F, 0xFF, 0xFF, 0x00, 0x00, 0x05, 0x51, 0x88, 0x2A, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x23, 0x90, 0x69, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0x68, 0x8C, 0x74, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0x2D, 0x89, 0x74, 0xFF, 0xFF, 0x00, 0x00, 0x9D, 0x48, 0x7D, 0x74, 0xFF, 0xFF, 0x00, 0x00, 0xBB, 0xE1, 0x66, 0x53, 0xFF, 0xFF, 0x10, 0xAB, 0xF9, 0x39, 0x2C, 0xD9, 0xFF, 0xFF, 0x08, 0x12, 0xFF, 0xFF, 0x25, 0x8E, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0x4C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0x87, 0xF2, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0xF7, 0xFF, 0xFF, 0x89, 0x51, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x77, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0x01, 0x00, 0x00, 0x0C, 0x15, 0xFF, 0xFF, 0x4E, 0xA0, 0x00, 0x00, 0x53, 0xC2, 0xFF, 0xFF, 0x51, 0xAA, 0x00, 0x00, 0x5B, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x85, 0x0A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0x19, 0x8E, 0xC7, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0x9E, 0x8C, 0x8C, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0x47, 0x8F, 0x8C, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0x4F, 0x81, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0xCD, 0x92, 0x66, 0xD1, 0xFF, 0xFF, 0x09, 0xE6, 0xFF, 0xFF, 0x26, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0xAD, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0x7C, 0xEF, 0x4E, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0xA2, 0xDF, 0x83, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0x46, 0xFF, 0xFF, 0x8F, 0x27, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x14, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8B, 0xDE, 0x00, 0x00, 0x10, 0x07, 0xFF, 0xFF, 0x4C, 0x21, 0x00, 0x00, 0x5B, 0x15, 0xFF, 0xFF, 0x5C, 0xD2, 0x00, 0x00, 0x5A, 0x4D, 0xFF, 0xFF, 0x15, 0x89, 0x00, 0x00, 0x82, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x93, 0xCE, 0xFF, 0xFF, 0x00, 0x00, 0x35, 0x83, 0x95, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0x4F, 0x92, 0x25, 0xFF, 0xFF, 0x00, 0x00, 0x9A, 0x54, 0x91, 0x2C, 0xFF, 0xFF, 0x00, 0x00, 0xBA, 0xCA, 0x82, 0xAB, 0xFF, 0xFF, 0x06, 0x84, 0xF1, 0xB9, 0x63, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0x08, 0xF5, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0xD2, 0xE2, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0x18, 0xD5, 0xC5, 0x00, 0x00, 0xFF, 0xFF, 0x43, 0x97, 0xCA, 0x3A, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0x98, 0xFF, 0xFF, 0x96, 0x6E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x8C, 0x00, 0x00, 0x12, 0x62, 0xFF, 0xFF, 0x7B, 0xAB, 0x00, 0x00, 0x41, 0x84, 0xFF, 0xFF, 0x5F, 0x64, 0x00, 0x00, 0x5F, 0x52, 0xFF, 0xFF, 0x67, 0x58, 0x0A, 0x5B, 0x64, 0x2C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9B, 0xC9, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0xF4, 0x9B, 0xE1, 0xFF, 0xFF, 0x00, 0x00, 0x79, 0xC6, 0x98, 0x52, 0xFF, 0xFF, 0x00, 0x00, 0xA8, 0x8D, 0x92, 0x47, 0xFF, 0xFF, 0x00, 0x00, 0xF0, 0x9C, 0x85, 0x9A, 0xF6, 0x11, 0x00, 0x00, 0xF8, 0x13, 0x6A, 0xFA, 0xDD, 0xB5, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0xE1, 0xD0, 0xC9, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0x99, 0xC3, 0xBB, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0xDE, 0xB9, 0x58, 0x00, 0x00, 0xFF, 0xE1, 0x4E, 0x73, 0xAF, 0x9F, 0x00, 0x00, 0xFD, 0x57, 0x51, 0x0F, 0xFF, 0xFF, 0x9F, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x7B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x69, 0x00, 0x00, 0x11, 0x78, 0xFF, 0xFF, 0x8C, 0xDA, 0x00, 0x00, 0x38, 0x88, 0xFF, 0xFF, 0x65, 0xBC, 0x00, 0x00, 0x64, 0xED, 0xFF, 0xFF, 0x6A, 0x46, 0x00, 0x00, 0x6C, 0xE3, 0xFF, 0xFF, 0x50, 0x80, 0x00, 0x00, 0x88, 0xD9, 0xFF, 0xFF, 0x00, 0x00, 0x18, 0x3A, 0xA3, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x81, 0x6C, 0x9B, 0x5D, 0xE9, 0x7A, 0x00, 0x00, 0xD8, 0x14, 0x84, 0x59, 0xC9, 0x64, 0x00, 0x00, 0xF5, 0xE8, 0x7C, 0x51, 0xBC, 0xE4, 0x00, 0x00, 0xF6, 0x1B, 0x72, 0xCC, 0xB3, 0x22, 0x00, 0x00, 0xFC, 0x7C, 0x57, 0x00, 0xA8, 0x1E, 0x00, 0x00, 0xFA, 0xBA, 0x5C, 0xA8, 0x9E, 0xBB, 0x00, 0x00, 0xF9, 0xBE, 0x5E, 0xB8, 0x94, 0x56, 0x00, 0x00, 0xF9, 0xC1, 0x61, 0x16, 0x8A, 0xA1, 0x00, 0x00, 0xFA, 0x29, 0x62, 0x8D, 0xFF, 0xFF, 0xA5, 0x33, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0x43, 0x00, 0x00, 0x19, 0x28, 0xFF, 0xFF, 0xA1, 0x02, 0x00, 0x00, 0x2E, 0x38, 0xFF, 0xFF, 0x9C, 0x5E, 0x00, 0x00, 0x3F, 0x1F, 0xFF, 0xFF, 0x89, 0xE2, 0x00, 0x00, 0x63, 0xE8, 0xFF, 0xFF, 0x87, 0x8B, 0x00, 0x00, 0x73, 0x26, 0xDA, 0xE0, 0x32, 0xEC, 0x00, 0x00, 0x96, 0x6D, 0xB4, 0x4F, 0x00, 0x00, 0x7A, 0x58, 0x8C, 0x23, 0x9C, 0xE9, 0x00, 0x00, 0xE5, 0xEA, 0x87, 0x23, 0x7B, 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0xA1, 0x6E, 0x01, 0x00, 0x00, 0xF7, 0xC4, 0x87, 0xF9, 0x76, 0x71, 0x00, 0x00, 0xF7, 0x31, 0x6E, 0xFE, 0x6A, 0x60, 0x00, 0x00, 0xF8, 0x29, 0x72, 0x07, 0x61, 0xC9, 0x00, 0x00, 0xF8, 0xB1, 0x72, 0x7A, 0x5B, 0xC8, 0x00, 0x00, 0xF8, 0x6A, 0x72, 0xFF, 0x53, 0x0E, 0x00, 0x00, 0xF7, 0x2A, 0x73, 0x5A, 0xFF, 0xFF, 0xAE, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0xBB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0xE7, 0x00, 0x00, 0x19, 0x12, 0xFF, 0xFF, 0xAF, 0x60, 0x00, 0x00, 0x27, 0x22, 0xFF, 0xFF, 0xB4, 0xF9, 0x00, 0x00, 0x2C, 0x0A, 0xFF, 0xFF, 0xBB, 0xAA, 0x00, 0x00, 0x2F, 0x46, 0xDA, 0xC1, 0xAF, 0x11, 0x00, 0x00, 0x26, 0xD4, 0xB8, 0xBD, 0x97, 0x0D, 0x00, 0x00, 0x58, 0x4B, 0x27, 0x9A, 0x0B, 0xCE, 0x18, 0xF7, 0xA5, 0xD3, 0x00, 0x00, 0x0F, 0x48, 0xBA, 0x78, 0xA7, 0xCE, 0x00, 0x00, 0x1C, 0x62, 0xF1, 0x39, 0xA0, 0x8E, 0x00, 0x00, 0x1A, 0xFB, 0xF1, 0x81, 0x93, 0x7C, 0x00, 0x00, 0x09, 0xD6, 0xEA, 0xAE, 0x88, 0x9B, 0x00, 0x00, 0x0B, 0xF9, 0xEB, 0xFB, 0x87, 0xE1, 0x00, 0x00, 0x0D, 0xA4, 0xEC, 0xCB, 0x85, 0x9B, 0x00, 0x00, 0x0F, 0x27, 0xED, 0x3C, 0x83, 0x83, 0x00, 0x00, 0x14, 0xFD, 0xEF, 0xAB, 0x7E, 0x50, 0xFF, 0xFF, 0xB9, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBB, 0xDE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBE, 0x69, 0x00, 0x00, 0x08, 0x71, 0xFF, 0xFF, 0xC1, 0xB9, 0x02, 0x18, 0x09, 0x18, 0xF5, 0xEE, 0xC7, 0x71, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x1C, 0xBB, 0x99, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xE0, 0xBD, 0x97, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x2A, 0xC7, 0xCB, 0x00, 0x00, 0x38, 0xCD, 0x00, 0x00, 0x97, 0x23, 0x15, 0xD0, 0x9D, 0xB2, 0x00, 0x00, 0xA3, 0x6A, 0xCE, 0x60, 0x8E, 0x0A, 0x00, 0x00, 0x8A, 0xCD, 0xFC, 0x58, 0x86, 0x41, 0x00, 0x00, 0x75, 0xD2, 0xFB, 0x16, 0x7C, 0x57, 0x00, 0x00, 0x65, 0x82, 0xF9, 0x15, 0x67, 0xE7, 0x00, 0x00, 0x60, 0x51, 0xF8, 0xEB, 0x69, 0x87, 0x00, 0x00, 0x5C, 0x0D, 0xF8, 0xAC, 0x69, 0xBD, 0x00, 0x00, 0x58, 0x6F, 0xF8, 0x93, 0x69, 0xEC, 0x00, 0x00, 0x54, 0x44, 0xF8, 0x7C, 0x69, 0x95, 0xFF, 0xFF, 0xC1, 0xF4, 0x00, 0x00, 0x01, 0xF4, 0xFF, 0xFF, 0xC5, 0x06, 0x00, 0x00, 0x07, 0x14, 0xFF, 0xFF, 0xCB, 0x5C, 0x00, 0x00, 0x06, 0x0A, 0xF3, 0xFE, 0xD3, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x37, 0xCE, 0x70, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xBA, 0xCF, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x2D, 0xDA, 0x27, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x1E, 0xE4, 0x40, 0x00, 0x00, 0x36, 0x69, 0x00, 0x00, 0xDD, 0x17, 0x2D, 0x4A, 0x86, 0x77, 0x00, 0x00, 0xE0, 0x7A, 0xCC, 0x82, 0x7A, 0x38, 0x00, 0x00, 0xC2, 0xE1, 0xFB, 0x4B, 0x6D, 0x6A, 0x00, 0x00, 0xAF, 0x7A, 0xF8, 0x13, 0x5D, 0xED, 0x00, 0x00, 0x9C, 0x31, 0xFF, 0xFF, 0x4A, 0x7F, 0x00, 0x00, 0x94, 0x45, 0xFD, 0xE6, 0x4D, 0xEA, 0x00, 0x00, 0x8C, 0x99, 0xFC, 0xF9, 0x4F, 0x54, 0x00, 0x00, 0x85, 0xEB, 0xFC, 0xFA, 0x51, 0x09, 0x00, 0x00, 0x7F, 0x87, 0xFC, 0xC0, 0x52, 0x32, 0xFF, 0xFF, 0xCF, 0x35, 0x00, 0x00, 0x09, 0xE4, 0xFF, 0xFF, 0xD7, 0x97, 0x00, 0x00, 0x06, 0x6B, 0xF1, 0x28, 0xDA, 0x9E, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x8A, 0xDF, 0xA8, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xD5, 0xE3, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x94, 0xCC, 0xEB, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x71, 0xBB, 0xF5, 0x18, 0x00, 0x00, 0x10, 0x8F, 0x32, 0x16, 0xF5, 0x1F, 0x00, 0x00, 0x4B, 0x50, 0x00, 0x00, 0xFB, 0x20, 0x45, 0x1D, 0x62, 0xBA, 0x00, 0x00, 0xFD, 0x12, 0xAC, 0x50, 0x5C, 0x27, 0x00, 0x00, 0xEF, 0x94, 0xF0, 0x65, 0x4F, 0x0D, 0x00, 0x00, 0xD6, 0xF1, 0xF4, 0xFD, 0x3E, 0xB0, 0x00, 0x00, 0xC2, 0x61, 0xFF, 0xFF, 0x2C, 0xD3, 0x00, 0x00, 0xBA, 0xA5, 0xFF, 0xFF, 0x31, 0xF9, 0x00, 0x00, 0xB3, 0x20, 0xFF, 0xFF, 0x35, 0xB3, 0x00, 0x00, 0xAC, 0x20, 0xFF, 0xFF, 0x38, 0x79, 0x00, 0x00, 0xA5, 0x5C, 0xFF, 0xFF, 0x3B, 0x25, 0xFF, 0xFF, 0xE0, 0x66, 0x00, 0x00, 0x0C, 0x18, 0xFA, 0x08, 0xEB, 0x61, 0x00, 0x00, 0x00, 0x4A, 0xDE, 0x9B, 0xF2, 0x55, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x0A, 0xF6, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x96, 0x84, 0xFB, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x68, 0x32, 0xFD, 0x84, 0x00, 0x00, 0x0B, 0x88, 0x34, 0x17, 0xFE, 0xA9, 0x00, 0x00, 0x2E, 0x47, 0x00, 0x00, 0xFB, 0x3E, 0x20, 0xF4, 0x3B, 0xB4, 0x0A, 0xC7, 0xFF, 0xFF, 0x6C, 0x40, 0x2C, 0x11, 0x00, 0x00, 0xFE, 0xC9, 0xA0, 0x77, 0x2C, 0x96, 0x00, 0x00, 0xFF, 0xFF, 0xD1, 0x9E, 0x2A, 0xEF, 0x00, 0x00, 0xFF, 0xE4, 0xF6, 0x59, 0x25, 0xF4, 0x00, 0x00, 0xE8, 0x94, 0xFF, 0xFF, 0x16, 0x3C, 0x00, 0x00, 0xDA, 0xEC, 0xFF, 0xFF, 0x1C, 0x3C, 0x00, 0x00, 0xD3, 0x1D, 0xFF, 0xFF, 0x21, 0x3E, 0x00, 0x00, 0xCB, 0x41, 0xFF, 0xFF, 0x24, 0x77, 0x00, 0x00, 0xC3, 0x55, 0xFF, 0xFF, 0x26, 0xA4, 0xFF, 0xFF, 0xFA, 0x65, 0x00, 0x00, 0x09, 0xEE, 0xE2, 0xC0, 0xFA, 0xC3, 0x00, 0x00, 0x07, 0x6D, 0xC3, 0xE8, 0xFF, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x99, 0x2F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x63, 0xC9, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0x3F, 0x38, 0x41, 0xFF, 0xFF, 0x01, 0x45, 0x17, 0x95, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x5C, 0x25, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0xA5, 0x0B, 0xD8, 0x02, 0x8A, 0xFF, 0xFF, 0x70, 0x81, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x82, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD6, 0x5B, 0x00, 0x00, 0x01, 0xCA, 0xFF, 0xFF, 0xFE, 0x37, 0x00, 0x00, 0x0A, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xEB, 0xFF, 0xFF, 0x0B, 0x9F, 0x00, 0x00, 0xEC, 0x68, 0xFF, 0xFF, 0x0F, 0xD6, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xFF, 0x12, 0xD5, 0xE8, 0x8A, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0x25, 0xC8, 0xEA, 0xFF, 0xFF, 0x04, 0x3A, 0x02, 0x68, 0x9E, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x2F, 0x68, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x0D, 0x2D, 0x34, 0xCC, 0xFF, 0xFF, 0x00, 0x00, 0x13, 0x39, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0x8A, 0x0F, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0xD9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0x83, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x20, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE2, 0x67, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEA, 0x22, 0x00, 0x00, 0x00, 0x8B, 0xFF, 0xFF, 0xF5, 0x99, 0x00, 0x00, 0x02, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xCD, 0xF1, 0xFF, 0xFF, 0x0A, 0x55, 0x0A, 0x55, 0xA6, 0x22, 0xFF, 0xFF, 0x03, 0xB3, 0x02, 0x8D, 0x70, 0x63, 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0x87, 0x3E, 0x48, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0xB5, 0x01, 0x7A, 0xFF, 0xFF, 0x07, 0x29, 0x07, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x87, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x16, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0xED, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0xD5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x3C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x4C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0x4F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC9, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD3, 0x18, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDD, 0xF7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE6, 0x6E, 0x00, 0x00, 0x00, 0x59, 0xFF, 0xFF, 0xEF, 0x6A, 0x00, 0x00, 0xAD, 0x7B, 0xFF, 0xFF, 0x06, 0x6A, 0x06, 0x6A, 0x7B, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0xEB, 0x47, 0x0A, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x15, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x89, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0xD2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0x55, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0xD6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x36, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0xED, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAD, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0x56, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0x18, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD1, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDA, 0x71, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x69, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x36, 0x7D, 0xFF, 0xFF, 0x41, 0xEE, 0x00, 0x00, 0x41, 0xEE, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x6A, 0x8D, 0xAA, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8B, 0xEC, 0x7C, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0xAF, 0x1C, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD4, 0x64, 0x4B, 0xF9, 0xFF, 0xFF, 0x10, 0x74, 0xF0, 0x73, 0x30, 0x74, 0xFF, 0xFF, 0x09, 0xD3, 0xF8, 0xFD, 0x29, 0xD3, 0xFF, 0xFF, 0x02, 0xF8, 0xFF, 0xFF, 0x22, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0x1F, 0xFF, 0xFF, 0x6D, 0x70, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x9F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0x02, 0x00, 0x00, 0x3D, 0x3C, 0xFF, 0xFF, 0x46, 0x40, 0x00, 0x00, 0x3D, 0xDA, 0xFF, 0xFF, 0x1C, 0x98, 0x00, 0x00, 0x5E, 0xAF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x76, 0x89, 0xFF, 0xFF, 0x00, 0x00, 0x08, 0xAE, 0x89, 0xCA, 0xFF, 0xFF, 0x20, 0x00, 0x31, 0x97, 0x9F, 0xFF, 0xFF, 0xFF, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x4B, 0x72, 0x96, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x5A, 0x5B, 0x8F, 0xFF, 0xFF, 0x17, 0x35, 0xFC, 0x54, 0x37, 0x1E, 0xFF, 0xFF, 0x0B, 0x2A, 0xF7, 0x92, 0x2B, 0x2A, 0xFF, 0xFF, 0x03, 0x9D, 0xFF, 0xFF, 0x24, 0x04, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0xB2, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x4B, 0xFF, 0xFF, 0x72, 0xE7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0x78, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x78, 0xC5, 0x00, 0x00, 0x05, 0x9F, 0xFF, 0xFF, 0x45, 0x2E, 0x00, 0x00, 0x43, 0x3E, 0xFF, 0xFF, 0x18, 0x03, 0x00, 0x00, 0x63, 0xC8, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x65, 0x25, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x56, 0x86, 0x4E, 0xFF, 0xFF, 0x00, 0x00, 0x30, 0xB6, 0xA5, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x4D, 0xE5, 0xB6, 0x19, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0x29, 0x8B, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0xA1, 0x89, 0x77, 0x93, 0xFF, 0xFF, 0x00, 0x00, 0xB4, 0x72, 0x5E, 0x64, 0xFF, 0xFF, 0x14, 0xA5, 0xF1, 0xFC, 0x2D, 0xCB, 0xFF, 0xFF, 0x01, 0xBD, 0xFF, 0xFF, 0x22, 0xB2, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xAE, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0x99, 0xFF, 0xFF, 0x79, 0x92, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0x04, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x0E, 0x00, 0x00, 0x08, 0xDB, 0xFF, 0xFF, 0x46, 0x4A, 0x00, 0x00, 0x47, 0x8A, 0xFF, 0xFF, 0x27, 0x9A, 0x00, 0x00, 0x61, 0x71, 0xFF, 0xFF, 0x24, 0xAD, 0x00, 0x00, 0x6B, 0x69, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x84, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0x3A, 0xFD, 0x87, 0x56, 0xFF, 0xFF, 0x00, 0x00, 0x6F, 0xAE, 0x84, 0xA6, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0x80, 0x87, 0x82, 0xFF, 0xFF, 0x00, 0x00, 0x9F, 0xC5, 0x7B, 0x2F, 0xFF, 0xFF, 0x00, 0x00, 0xCC, 0x95, 0x62, 0x8A, 0xFF, 0xFF, 0x0A, 0xEE, 0xFE, 0x36, 0x2A, 0x46, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x15, 0xDD, 0xF6, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0x4D, 0xE7, 0x16, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0xB8, 0xFF, 0xFF, 0x84, 0x30, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7B, 0x73, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x78, 0x00, 0x00, 0x09, 0xBE, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x50, 0x2C, 0xFF, 0xFF, 0x55, 0xAC, 0x00, 0x00, 0x50, 0x3B, 0xFF, 0xFF, 0x1B, 0xC6, 0x00, 0x00, 0x73, 0xE1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x11, 0xFF, 0xFF, 0x00, 0x00, 0x37, 0xE7, 0x8B, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x71, 0x5A, 0x89, 0x41, 0xFF, 0xFF, 0x00, 0x00, 0x95, 0xAF, 0x88, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0xBD, 0xC8, 0x7A, 0x07, 0xFF, 0xFF, 0x29, 0xF7, 0xFA, 0xF1, 0x43, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0x64, 0xF1, 0xE9, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0xB5, 0xE2, 0xD6, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0xBB, 0xD8, 0xDB, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0x5D, 0xCF, 0x65, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0x62, 0xFF, 0xFF, 0x8C, 0x46, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x2D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0xDF, 0x00, 0x00, 0x0D, 0xF5, 0xFF, 0xFF, 0x7F, 0x4F, 0x00, 0x00, 0x2D, 0x75, 0xFF, 0xFF, 0x56, 0xB8, 0x00, 0x00, 0x56, 0x28, 0xFF, 0xFF, 0x64, 0x56, 0x00, 0x00, 0x5C, 0x42, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x91, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0x37, 0x90, 0x69, 0xFF, 0xFF, 0x00, 0x00, 0x6F, 0xB6, 0x8D, 0xBE, 0xFF, 0xFF, 0x00, 0x00, 0xAD, 0x49, 0x87, 0x08, 0xFF, 0xFF, 0x00, 0x00, 0xF6, 0xE3, 0x7B, 0x64, 0xEB, 0xEC, 0x00, 0x00, 0xF8, 0xC4, 0x5D, 0x4C, 0xDA, 0xD2, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0xA4, 0xCC, 0xAB, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0x99, 0xC2, 0xD7, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0x25, 0xBB, 0x66, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0x44, 0xB2, 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x55, 0xFF, 0xFF, 0x96, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x43, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0xD7, 0x00, 0x00, 0x08, 0xEA, 0xFF, 0xFF, 0x87, 0xEA, 0x00, 0x00, 0x2D, 0x62, 0xFF, 0xFF, 0x53, 0xA8, 0x00, 0x00, 0x60, 0x47, 0xFF, 0xFF, 0x5F, 0x0C, 0x00, 0x00, 0x62, 0xB4, 0xFF, 0xFF, 0x69, 0x70, 0x13, 0xF1, 0x6A, 0x60, 0xFF, 0xFF, 0x00, 0x00, 0x10, 0xE4, 0x97, 0x67, 0xFF, 0xFF, 0x00, 0x00, 0x7D, 0x0B, 0x8B, 0x2B, 0xDB, 0xE9, 0x00, 0x00, 0xD2, 0xA2, 0x6E, 0xB5, 0xB6, 0x89, 0x00, 0x00, 0xFA, 0x5F, 0x62, 0xF3, 0xB3, 0x7B, 0x00, 0x00, 0xF7, 0x1C, 0x6A, 0x4D, 0xAC, 0xB6, 0x00, 0x00, 0xFA, 0xC5, 0x57, 0x9C, 0xA4, 0x8C, 0x00, 0x00, 0xFE, 0x07, 0x4A, 0x88, 0x9C, 0x45, 0x00, 0x00, 0xFD, 0x25, 0x4E, 0x67, 0x95, 0x62, 0x00, 0x00, 0xFC, 0xD5, 0x51, 0x88, 0x8B, 0xEC, 0x00, 0x00, 0xFC, 0xA6, 0x54, 0x03, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x99, 0x00, 0x00, 0x08, 0xE2, 0xFF, 0xFF, 0x9B, 0xBD, 0x00, 0x00, 0x23, 0xCF, 0xFF, 0xFF, 0x99, 0xC1, 0x00, 0x00, 0x30, 0x93, 0xFF, 0xFF, 0x96, 0xB8, 0x00, 0x00, 0x41, 0x22, 0xFF, 0xFF, 0x8B, 0x45, 0x00, 0x00, 0x57, 0xD0, 0xD2, 0x07, 0x31, 0xD0, 0x00, 0x00, 0x83, 0x8D, 0xA5, 0xF1, 0x00, 0x00, 0x68, 0x1C, 0x81, 0xA4, 0x92, 0xF3, 0x00, 0x00, 0xD3, 0x8B, 0x77, 0xFE, 0x74, 0x9B, 0x00, 0x00, 0xFF, 0x3E, 0x7C, 0x9E, 0x60, 0x77, 0x00, 0x00, 0xFE, 0x94, 0x7F, 0x0B, 0x64, 0x77, 0x00, 0x00, 0xF9, 0xB0, 0x72, 0x15, 0x63, 0xFD, 0x00, 0x00, 0xF7, 0xF1, 0x65, 0x32, 0x5D, 0x36, 0x00, 0x00, 0xF7, 0x98, 0x66, 0xE1, 0x57, 0xBC, 0x00, 0x00, 0xF7, 0x67, 0x67, 0xBF, 0x4F, 0xD5, 0x00, 0x00, 0xF7, 0x48, 0x68, 0xB0, 0xFF, 0xFF, 0xA9, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAC, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0x30, 0x00, 0x00, 0x16, 0xDB, 0xFF, 0xFF, 0xB2, 0x07, 0x00, 0x00, 0x13, 0x03, 0xF0, 0x9A, 0xB0, 0x00, 0x00, 0x00, 0x0B, 0x61, 0xC8, 0xDC, 0x9C, 0xFC, 0x00, 0x00, 0x0E, 0x7C, 0xA8, 0x14, 0x86, 0x24, 0x00, 0x00, 0x45, 0x39, 0x1F, 0x82, 0x08, 0x76, 0x10, 0x7C, 0x9A, 0xBE, 0x00, 0x00, 0x0D, 0xA7, 0xA9, 0x44, 0x9B, 0xF3, 0x00, 0x00, 0x1D, 0xBF, 0xF3, 0x2A, 0x96, 0xC3, 0x00, 0x00, 0x1F, 0xF9, 0xF6, 0x95, 0x88, 0xF6, 0x00, 0x00, 0x1D, 0x18, 0xF0, 0x5C, 0x7E, 0x55, 0x00, 0x00, 0x15, 0x23, 0xEE, 0xE4, 0x77, 0xF0, 0x00, 0x00, 0x16, 0x0B, 0xEF, 0x70, 0x76, 0xB3, 0x00, 0x00, 0x16, 0xCA, 0xEF, 0xF7, 0x75, 0x2D, 0x00, 0x00, 0x19, 0xCE, 0xF2, 0x61, 0x71, 0xCF, 0xFF, 0xFF, 0xB6, 0x05, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x34, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0x15, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x7B, 0xB7, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x3D, 0xA8, 0x76, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x24, 0xA9, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x51, 0xB4, 0x00, 0x00, 0x00, 0x25, 0x29, 0x00, 0x00, 0x81, 0x78, 0x09, 0x67, 0x8C, 0x48, 0x00, 0x00, 0x95, 0x80, 0xB4, 0xAE, 0x7C, 0xD1, 0x00, 0x00, 0x85, 0xAF, 0xF9, 0xC3, 0x79, 0x31, 0x00, 0x00, 0x75, 0x09, 0xFE, 0xDE, 0x70, 0xD9, 0x00, 0x00, 0x66, 0x8E, 0xFA, 0x29, 0x62, 0x76, 0x00, 0x00, 0x5E, 0xA1, 0xFA, 0xDF, 0x59, 0x4B, 0x00, 0x00, 0x5C, 0x0D, 0xFA, 0x77, 0x5A, 0x5E, 0x00, 0x00, 0x59, 0x39, 0xFA, 0x4F, 0x5B, 0x3F, 0x00, 0x00, 0x55, 0x79, 0xFA, 0x70, 0x5B, 0x97, 0xFF, 0xFF, 0xC0, 0xC7, 0x00, 0x00, 0x00, 0xC7, 0xFF, 0xFF, 0xC2, 0xF3, 0x00, 0x00, 0x05, 0x5F, 0xFF, 0xFF, 0xCC, 0x12, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x2F, 0xC6, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x4D, 0xC1, 0x28, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x18, 0xC0, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x89, 0x2E, 0xC6, 0x27, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x0A, 0xD2, 0xD2, 0x00, 0x00, 0x1E, 0xCA, 0x00, 0x00, 0xCA, 0xEA, 0x23, 0x05, 0x71, 0x2A, 0x00, 0x00, 0xCD, 0x00, 0xAD, 0x93, 0x64, 0xBA, 0x00, 0x00, 0xBD, 0xF4, 0xF1, 0x82, 0x5F, 0x61, 0x00, 0x00, 0xAC, 0x6F, 0xFF, 0x46, 0x53, 0xA0, 0x00, 0x00, 0x9D, 0x4E, 0xFF, 0xFF, 0x45, 0xCD, 0x00, 0x00, 0x8E, 0xE1, 0xFF, 0xFF, 0x3C, 0x84, 0x00, 0x00, 0x89, 0x86, 0xFF, 0xFF, 0x3E, 0x9F, 0x00, 0x00, 0x84, 0x60, 0xFF, 0x26, 0x40, 0x2B, 0x00, 0x00, 0x7F, 0x09, 0xFE, 0x66, 0x41, 0xFF, 0xFF, 0xFF, 0xCF, 0x68, 0x00, 0x00, 0x0A, 0xA8, 0xFF, 0xFF, 0xD9, 0x32, 0x00, 0x00, 0x00, 0x91, 0xE4, 0x97, 0xD4, 0x05, 0x00, 0x00, 0x01, 0x05, 0xC9, 0x8A, 0xD8, 0x61, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xA3, 0xD7, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x85, 0x4B, 0xDC, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x2A, 0xE2, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x5E, 0xE9, 0xC6, 0x00, 0x00, 0x27, 0x56, 0x00, 0x00, 0xEE, 0x20, 0x39, 0x20, 0x4D, 0xF4, 0x00, 0x00, 0xEF, 0x62, 0x9B, 0x18, 0x46, 0x0F, 0x00, 0x00, 0xE3, 0xC2, 0xE1, 0x52, 0x3C, 0xA3, 0x00, 0x00, 0xD0, 0x19, 0xF6, 0xA9, 0x34, 0xFC, 0x00, 0x00, 0xC2, 0x47, 0xFF, 0xFF, 0x2B, 0x25, 0x00, 0x00, 0xB4, 0x5A, 0xFF, 0xFF, 0x25, 0x78, 0x00, 0x00, 0xAE, 0xED, 0xFF, 0xFF, 0x28, 0xC4, 0x00, 0x00, 0xA9, 0x7D, 0xFF, 0xFF, 0x2B, 0x18, 0x00, 0x00, 0xA3, 0x92, 0xFF, 0xFF, 0x2D, 0x62, 0xFF, 0xFF, 0xE3, 0x73, 0x00, 0x00, 0x0D, 0x1E, 0xF2, 0x2B, 0xE8, 0xAE, 0x00, 0x00, 0x02, 0x12, 0xD1, 0xE9, 0xEA, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xDC, 0xEC, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x88, 0x7F, 0xF2, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x62, 0xD8, 0xF6, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x40, 0x44, 0xFA, 0x5F, 0x00, 0x00, 0x0C, 0x2E, 0x00, 0x00, 0xF8, 0x0C, 0x09, 0xBF, 0x32, 0x84, 0x00, 0x00, 0xFD, 0xD4, 0x59, 0x42, 0x29, 0x25, 0x00, 0x00, 0xFB, 0x81, 0x95, 0xB9, 0x25, 0x11, 0x00, 0x00, 0xFE, 0x28, 0xCC, 0x8A, 0x22, 0xEC, 0x00, 0x00, 0xFB, 0x89, 0xF9, 0x6A, 0x1C, 0x54, 0x00, 0x00, 0xE6, 0xF6, 0xFF, 0xFF, 0x14, 0x68, 0x00, 0x00, 0xD5, 0x4D, 0xFF, 0xFF, 0x11, 0x27, 0x00, 0x00, 0xCE, 0x6E, 0xFF, 0xFF, 0x15, 0x01, 0x00, 0x00, 0xC7, 0x90, 0xFF, 0xFF, 0x17, 0x4C, 0x00, 0x00, 0xC1, 0x7F, 0xFF, 0xFF, 0x1A, 0x9D, 0xFE, 0x36, 0xFC, 0xD3, 0x00, 0x00, 0x0B, 0xE5, 0xD8, 0xBD, 0xF6, 0xD5, 0x00, 0x00, 0x07, 0x8A, 0xB7, 0x47, 0xF8, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x47, 0xFB, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0A, 0xFF, 0x48, 0x00, 0x00, 0x00, 0xFA, 0x38, 0x9C, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x77, 0x1C, 0xE6, 0x12, 0xC0, 0xFF, 0xFF, 0x3E, 0x86, 0x00, 0x00, 0x04, 0xCC, 0xFF, 0xFF, 0x62, 0x58, 0x00, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0x1B, 0x00, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDC, 0x93, 0x00, 0x00, 0x04, 0x7B, 0xFF, 0xFF, 0xFB, 0x3E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x64, 0x00, 0x00, 0xF8, 0x5F, 0xFF, 0xFF, 0x05, 0x9E, 0x00, 0x00, 0xEB, 0x75, 0xFF, 0xFF, 0x07, 0xEE, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xFF, 0x0A, 0x56, 0xE2, 0x28, 0xFF, 0xFF, 0x08, 0x4A, 0x08, 0x4A, 0xBE, 0x94, 0xFF, 0x92, 0x00, 0x00, 0x04, 0xA5, 0x92, 0x4C, 0xFE, 0x78, 0x00, 0x00, 0x00, 0x00, 0x61, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xA0, 0x33, 0x3D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xC3, 0x02, 0x4E, 0xFF, 0xFF, 0x04, 0xF0, 0x08, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0xB2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x47, 0x37, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x42, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x39, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0x34, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDE, 0xEA, 0x00, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xF5, 0xE9, 0x00, 0x00, 0x01, 0xCC, 0xFF, 0xFF, 0xFE, 0xE7, 0x00, 0x00, 0x01, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0x19, 0xFF, 0xFF, 0x07, 0x3A, 0x07, 0x3A, 0x99, 0xF5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x25, 0x65, 0xA6, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x7A, 0x35, 0x1B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xAD, 0x02, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x12, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x5B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0x30, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x79, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0xD2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAC, 0x05, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x2D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDD, 0xEF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE4, 0xEB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEC, 0xBB, 0x00, 0x00, 0x00, 0xC2, 0xFF, 0xFF, 0xF3, 0xDA, 0x00, 0x00, 0xA1, 0x37, 0xFF, 0xFF, 0x01, 0x38, 0x04, 0x7A, 0x6E, 0x3E, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x1A, 0x3A, 0x85, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x04, 0x6F, 0xFF, 0xFF, 0x00, 0xB1, 0x00, 0xB1, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x5B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0x98, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x89, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0xC3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0xBC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0x48, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xF9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCE, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD6, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDE, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x33, 0x52, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x4D, 0x7F, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x5A, 0x96, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDD, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0xC1, 0x90, 0x25, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x76, 0x71, 0x76, 0x71, 0xFF, 0xFF, 0x00, 0x00, 0xA9, 0x1B, 0x5D, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0xAE, 0x4C, 0xF3, 0xFF, 0xFF, 0x0C, 0x2F, 0xEE, 0xE5, 0x2C, 0x2F, 0xFF, 0xFF, 0x06, 0xFA, 0xF6, 0xC8, 0x26, 0xFA, 0xFF, 0xFF, 0x02, 0x11, 0xFE, 0x6A, 0x22, 0x11, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x94, 0xFF, 0xFF, 0x58, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0x61, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0xB1, 0x00, 0x00, 0x36, 0xBF, 0xFF, 0xFF, 0x38, 0xD0, 0x00, 0x00, 0x3D, 0xE3, 0xFF, 0xFF, 0x20, 0x4E, 0x00, 0x00, 0x57, 0x87, 0xFF, 0xFF, 0x28, 0x93, 0x00, 0x00, 0x5D, 0xB3, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xB3, 0x8B, 0x07, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x6B, 0x74, 0x76, 0xAF, 0xFF, 0xFF, 0x00, 0x00, 0xB3, 0x7A, 0x56, 0xC0, 0xFF, 0xFF, 0x11, 0x1B, 0xF8, 0x10, 0x37, 0xB7, 0xFF, 0xFF, 0x04, 0xF2, 0xF9, 0x69, 0x25, 0x49, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0x72, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0x17, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x3D, 0xFF, 0xFF, 0x5D, 0x87, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5B, 0xF6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x09, 0x00, 0x00, 0x37, 0x24, 0xFF, 0xFF, 0x39, 0xA7, 0x00, 0x00, 0x3C, 0x0D, 0xFF, 0xFF, 0x1C, 0x5A, 0x00, 0x00, 0x55, 0x2E, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x5A, 0x92, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x82, 0xF4, 0xFF, 0xFF, 0x00, 0x00, 0x21, 0x86, 0xB5, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0xA4, 0xC2, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0x73, 0x9D, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0x05, 0x6F, 0x22, 0xFF, 0xFF, 0x00, 0x00, 0xB1, 0x30, 0x58, 0x14, 0xFF, 0xFF, 0x11, 0x7A, 0xEF, 0x48, 0x2B, 0x44, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0x2E, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0x26, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0x74, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0xB7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x9C, 0x00, 0x00, 0x3C, 0x93, 0xFF, 0xFF, 0x1F, 0x88, 0x00, 0x00, 0x58, 0x43, 0xFF, 0xFF, 0x25, 0x44, 0x00, 0x00, 0x5E, 0xD2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x77, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0xE1, 0x82, 0xD5, 0xFF, 0xFF, 0x00, 0x00, 0x52, 0xCB, 0x7E, 0xA7, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0xA4, 0x7D, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0x9D, 0xD2, 0x72, 0x82, 0xFF, 0xFF, 0x00, 0x00, 0xD5, 0xDA, 0x56, 0x0D, 0xFF, 0xFF, 0x07, 0xE6, 0xFB, 0x63, 0x28, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF7, 0xF2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xEB, 0x53, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xAB, 0xFF, 0xFF, 0x73, 0xE3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0x87, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xCE, 0x00, 0x00, 0x48, 0x2F, 0xFF, 0xFF, 0x4D, 0xAD, 0x00, 0x00, 0x46, 0x91, 0xFF, 0xFF, 0x32, 0x94, 0x00, 0x00, 0x5D, 0xA1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x82, 0x1D, 0xFF, 0xFF, 0x00, 0x00, 0x32, 0xF0, 0x82, 0x8A, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0x7E, 0x7F, 0x89, 0xFF, 0xFF, 0x00, 0x00, 0x91, 0xC2, 0x82, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0xBD, 0x5C, 0x6F, 0xEE, 0xFF, 0xFF, 0x24, 0xEB, 0xFC, 0x13, 0x3B, 0x38, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0xA2, 0xEB, 0x95, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDE, 0xCB, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0x7C, 0xD6, 0x9D, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0xC6, 0xCD, 0xCA, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0x94, 0xFF, 0xFF, 0x82, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xB9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x55, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x8A, 0x00, 0x00, 0x12, 0xD0, 0xFF, 0xFF, 0x4A, 0x52, 0x00, 0x00, 0x4E, 0xD6, 0xFF, 0xFF, 0x51, 0xC2, 0x00, 0x00, 0x58, 0xE8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x87, 0x0B, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0xD6, 0x83, 0xB3, 0xFF, 0xFF, 0x00, 0x00, 0x64, 0x56, 0x7F, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0xAD, 0xC9, 0x7A, 0x68, 0xFF, 0xFF, 0x00, 0x00, 0xF5, 0x4A, 0x67, 0x16, 0xE1, 0xAB, 0x00, 0x00, 0xFC, 0xE2, 0x4F, 0xD2, 0xD1, 0xC2, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0xD8, 0xC3, 0xEA, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0xE4, 0xBD, 0x35, 0x00, 0x00, 0xFF, 0xFF, 0x25, 0xAD, 0xB7, 0x51, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0x22, 0xB0, 0xE5, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x7E, 0xFF, 0xFF, 0x8D, 0x6A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0x71, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8C, 0xF9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0xAE, 0x00, 0x00, 0x15, 0x9A, 0xFF, 0xFF, 0x75, 0x54, 0x00, 0x00, 0x38, 0xCB, 0xFF, 0xFF, 0x54, 0x0D, 0x00, 0x00, 0x5C, 0x6E, 0xFF, 0xFF, 0x5B, 0x9F, 0x05, 0x10, 0x61, 0x4E, 0xFF, 0xFF, 0x00, 0x00, 0x12, 0xFD, 0x88, 0xDE, 0xEC, 0xFB, 0x00, 0x00, 0x72, 0x90, 0x74, 0xA2, 0xCD, 0xD4, 0x00, 0x00, 0xC1, 0x09, 0x5B, 0xE7, 0xA9, 0x26, 0x00, 0x00, 0xF9, 0xCF, 0x44, 0x74, 0xA7, 0x45, 0x00, 0x00, 0xFB, 0xCA, 0x58, 0xA3, 0xA2, 0xDB, 0x00, 0x00, 0xF9, 0xD7, 0x51, 0x2E, 0x9B, 0xC6, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xB4, 0x94, 0x92, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0xFA, 0x8E, 0xF3, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0xB0, 0x88, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x4D, 0xFF, 0xFF, 0x9A, 0xB5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9A, 0xB7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9A, 0x89, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0xB9, 0x00, 0x00, 0x0B, 0xC4, 0xFF, 0xFF, 0x92, 0x47, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0x95, 0x31, 0x00, 0x00, 0x2D, 0x75, 0xFF, 0xFF, 0x85, 0xD6, 0x00, 0x00, 0x39, 0x0E, 0xBF, 0xF7, 0x25, 0xD8, 0x00, 0x00, 0x70, 0x94, 0x97, 0x63, 0x00, 0x00, 0x59, 0xBF, 0x71, 0x78, 0x87, 0x1C, 0x00, 0x00, 0xC0, 0x60, 0x66, 0x7F, 0x6F, 0x9F, 0x00, 0x00, 0xF9, 0x01, 0x6A, 0x73, 0x57, 0xED, 0x00, 0x00, 0xFF, 0xFF, 0x6E, 0x83, 0x54, 0x8F, 0x00, 0x00, 0xFA, 0x8D, 0x6B, 0xB7, 0x5A, 0xC4, 0x00, 0x00, 0xFB, 0xB2, 0x58, 0x73, 0x54, 0x8E, 0x00, 0x00, 0xFB, 0x19, 0x5B, 0x1B, 0x4F, 0xDE, 0x00, 0x00, 0xFA, 0x88, 0x5C, 0x2C, 0x48, 0x5F, 0x00, 0x00, 0xF9, 0xE3, 0x5D, 0xF5, 0xFF, 0xFF, 0xA5, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA5, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0xDB, 0x00, 0x00, 0x01, 0x88, 0xFF, 0xFF, 0xAA, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x3A, 0x9A, 0xCE, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x4E, 0x83, 0x7F, 0x00, 0x00, 0x03, 0x2F, 0x93, 0x53, 0x6F, 0x7F, 0x00, 0x00, 0x36, 0xAA, 0x0D, 0xC4, 0x00, 0x00, 0x03, 0x47, 0x90, 0x11, 0x00, 0x00, 0x09, 0xB8, 0x95, 0xAA, 0x8E, 0x85, 0x00, 0x00, 0x1F, 0x22, 0xE8, 0x65, 0x89, 0xAA, 0x00, 0x00, 0x20, 0x4C, 0xFA, 0xAE, 0x7D, 0xF6, 0x00, 0x00, 0x24, 0xF2, 0xF6, 0xF4, 0x6F, 0x01, 0x00, 0x00, 0x1E, 0x04, 0xF3, 0xDD, 0x66, 0x78, 0x00, 0x00, 0x1E, 0x63, 0xF3, 0xF6, 0x67, 0x36, 0x00, 0x00, 0x1E, 0xD8, 0xF4, 0x1C, 0x66, 0xA8, 0x00, 0x00, 0x1F, 0x3F, 0xF5, 0xA7, 0x64, 0x8C, 0xFF, 0xFF, 0xB3, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0xD4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB6, 0x68, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xB2, 0xB3, 0x08, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xD9, 0xA6, 0x45, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xC5, 0x96, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xD0, 0x95, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x77, 0xF3, 0x9E, 0xA2, 0x00, 0x00, 0x15, 0x65, 0x00, 0x00, 0x6D, 0x03, 0x07, 0x3C, 0x77, 0x21, 0x00, 0x00, 0x84, 0xF9, 0x9E, 0x8F, 0x69, 0x24, 0x00, 0x00, 0x7F, 0x1C, 0xED, 0xF1, 0x67, 0xC4, 0x00, 0x00, 0x72, 0x47, 0xFF, 0xFF, 0x63, 0x2C, 0x00, 0x00, 0x62, 0x22, 0xFA, 0xBA, 0x54, 0xD8, 0x00, 0x00, 0x59, 0xFC, 0xFD, 0xAC, 0x45, 0xA1, 0x00, 0x00, 0x58, 0x6C, 0xFD, 0x26, 0x48, 0x40, 0x00, 0x00, 0x56, 0x88, 0xFC, 0x98, 0x49, 0xAC, 0x00, 0x00, 0x54, 0x3B, 0xFC, 0x92, 0x4A, 0xEC, 0xFF, 0xFF, 0xC0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xA0, 0x00, 0x00, 0x01, 0x13, 0xFA, 0x73, 0xC7, 0x86, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x2D, 0xBA, 0x53, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x38, 0xB4, 0x72, 0x00, 0x00, 0x00, 0x00, 0x90, 0xB0, 0xB2, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5E, 0xB5, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x61, 0x70, 0xC0, 0xC5, 0x00, 0x00, 0x03, 0xB9, 0x00, 0x00, 0xB4, 0xF8, 0x16, 0x84, 0x58, 0x05, 0x00, 0x00, 0xB9, 0xB0, 0x91, 0x0A, 0x4C, 0x62, 0x00, 0x00, 0xB6, 0x58, 0xDF, 0x28, 0x4A, 0x6F, 0x00, 0x00, 0xA8, 0x26, 0xFF, 0xFF, 0x46, 0x94, 0x00, 0x00, 0x97, 0xC9, 0xFF, 0xFF, 0x3A, 0x1F, 0x00, 0x00, 0x85, 0x8A, 0xFF, 0xFF, 0x2A, 0xF7, 0x00, 0x00, 0x81, 0xD7, 0xFF, 0xFF, 0x2D, 0x8F, 0x00, 0x00, 0x7E, 0xA9, 0xFF, 0xFF, 0x2F, 0x9C, 0x00, 0x00, 0x7B, 0x47, 0xFF, 0xFF, 0x32, 0x28, 0xFF, 0xFF, 0xD0, 0x84, 0x00, 0x00, 0x0A, 0x4D, 0xFF, 0xFF, 0xDD, 0x5C, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x39, 0xD0, 0x49, 0x00, 0x00, 0x03, 0x5C, 0xBC, 0x81, 0xD0, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x5C, 0xD0, 0x50, 0x00, 0x00, 0x00, 0x00, 0x75, 0xAD, 0xD2, 0x95, 0x00, 0x00, 0x00, 0x00, 0x59, 0xE1, 0xD3, 0x14, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xD1, 0xDA, 0x99, 0x00, 0x00, 0x09, 0x4E, 0x00, 0x00, 0xD9, 0xEC, 0x30, 0x96, 0x35, 0xB7, 0x00, 0x00, 0xDB, 0xD6, 0x89, 0x22, 0x2E, 0xBB, 0x00, 0x00, 0xD8, 0x24, 0xD4, 0x4E, 0x29, 0xC0, 0x00, 0x00, 0xC9, 0x9E, 0xF4, 0x2F, 0x27, 0xD7, 0x00, 0x00, 0xBC, 0x0E, 0xFF, 0xFF, 0x23, 0xFD, 0x00, 0x00, 0xAB, 0x21, 0xFF, 0xFF, 0x17, 0xC6, 0x00, 0x00, 0xA7, 0x50, 0xFF, 0xFF, 0x1A, 0xF2, 0x00, 0x00, 0xA3, 0x46, 0xFF, 0xFF, 0x1D, 0x23, 0x00, 0x00, 0x9E, 0x97, 0xFF, 0xFF, 0x1F, 0xCB, 0xFF, 0xFF, 0xE7, 0x65, 0x00, 0x00, 0x0C, 0x2F, 0xEA, 0xBC, 0xE6, 0x86, 0x00, 0x00, 0x05, 0xB9, 0xC5, 0x65, 0xE1, 0xD3, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x69, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x66, 0xE6, 0x13, 0x00, 0x00, 0x00, 0x00, 0x54, 0x02, 0xE8, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x39, 0x6A, 0xEE, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x16, 0x00, 0x00, 0x25, 0x5A, 0x00, 0x00, 0xF5, 0x8A, 0x4A, 0x0C, 0x19, 0xFB, 0x00, 0x00, 0xF6, 0x4B, 0x88, 0x55, 0x15, 0x82, 0x00, 0x00, 0xFA, 0x81, 0xC3, 0xDE, 0x12, 0x09, 0x00, 0x00, 0xF5, 0xA1, 0xFA, 0x36, 0x0D, 0x47, 0x00, 0x00, 0xDD, 0x66, 0xFD, 0x21, 0x0C, 0xC2, 0x00, 0x00, 0xCD, 0x37, 0xFF, 0xFF, 0x08, 0xBF, 0x00, 0x00, 0xC7, 0x1C, 0xFF, 0xFF, 0x0A, 0xF0, 0x00, 0x00, 0xC0, 0xED, 0xFF, 0xFF, 0x0B, 0xF6, 0x00, 0x00, 0xBC, 0x8D, 0xFF, 0xFF, 0x0F, 0x48, 0xF7, 0x4A, 0xFB, 0x5B, 0x00, 0x00, 0x0D, 0xDA, 0xCE, 0xB6, 0xF1, 0x78, 0x00, 0x00, 0x05, 0x7B, 0xA9, 0xE8, 0xF0, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x4C, 0xF3, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x53, 0xAD, 0xF5, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB1, 0xFB, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x07, 0x5F, 0xFF, 0x63, 0x00, 0x00, 0x10, 0x5E, 0x00, 0x00, 0xFF, 0x72, 0x26, 0x48, 0x05, 0x37, 0x00, 0x00, 0xFF, 0xF9, 0x54, 0xB3, 0x02, 0xC4, 0x00, 0x00, 0xFF, 0x06, 0x88, 0x2F, 0x00, 0xEF, 0x00, 0x00, 0xFF, 0xFF, 0xB6, 0xB6, 0x00, 0x3B, 0x00, 0x00, 0xFF, 0x26, 0xE1, 0xBB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFC, 0x0F, 0x02, 0xB4, 0x00, 0x00, 0xFF, 0x69, 0xFF, 0xFF, 0x01, 0xCB, 0x00, 0x00, 0xF1, 0xEB, 0xFF, 0xFF, 0x02, 0xEE, 0x00, 0x00, 0xE5, 0x8C, 0xFF, 0xFF, 0x03, 0xD1, 0x00, 0x00, 0xDD, 0x49, 0xFF, 0xFF, 0x05, 0x4C, 0xDA, 0x5F, 0xFF, 0xFF, 0x05, 0x76, 0x0A, 0x29, 0xB2, 0x0C, 0xF8, 0x93, 0x00, 0x00, 0x00, 0x13, 0x83, 0xAC, 0xF9, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x55, 0x43, 0xFC, 0x58, 0x00, 0x00, 0x00, 0x00, 0x27, 0x8D, 0xFC, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1E, 0xFD, 0xAD, 0x00, 0x00, 0x01, 0x6A, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0x3C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x38, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0x64, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0x74, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0x55, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE4, 0x0D, 0x00, 0x00, 0x02, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x16, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xBA, 0xC8, 0xFF, 0xFF, 0x03, 0x71, 0x03, 0x71, 0x8C, 0xDF, 0xFE, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x85, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x28, 0xA3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0x8A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x94, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0x68, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0xCD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0xCD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAD, 0xA7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE5, 0xF8, 0x00, 0x00, 0x00, 0x54, 0xFF, 0xFF, 0xED, 0xD2, 0x00, 0x00, 0x01, 0x0A, 0xFF, 0xFF, 0xF4, 0x42, 0x00, 0x00, 0x01, 0x7E, 0xFF, 0xFF, 0xFA, 0x12, 0x00, 0x00, 0x95, 0x52, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x79, 0x61, 0x28, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x39, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0xB2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0x23, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x73, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD7, 0x06, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDE, 0x38, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0x5E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x22, 0xA7, 0xFF, 0xFF, 0x34, 0x37, 0x00, 0x00, 0x34, 0x37, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x46, 0x30, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x52, 0xA6, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x62, 0x23, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x24, 0x8A, 0x3C, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x70, 0xC6, 0x70, 0xC6, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0xFA, 0x57, 0x4D, 0xFF, 0xFF, 0x00, 0x00, 0xBC, 0x82, 0x47, 0xC3, 0xFF, 0xFF, 0x08, 0xAD, 0xEC, 0x58, 0x28, 0xAD, 0xFF, 0xFF, 0x01, 0xC5, 0xF7, 0xDA, 0x21, 0xC5, 0xFF, 0xFF, 0x00, 0x00, 0xFD, 0x46, 0x1D, 0x47, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xB4, 0xFF, 0xFF, 0x54, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x21, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0xD3, 0x00, 0x00, 0x29, 0x3A, 0xFF, 0xFF, 0x26, 0x1B, 0x00, 0x00, 0x40, 0x3A, 0xFF, 0xFF, 0x20, 0x93, 0x00, 0x00, 0x4E, 0xEC, 0xFF, 0xFF, 0x28, 0x93, 0x00, 0x00, 0x5C, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x84, 0xFE, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x64, 0x24, 0x72, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0xAF, 0x67, 0x4F, 0xFA, 0xFF, 0xFF, 0x00, 0x00, 0xD4, 0x50, 0x3B, 0xCA, 0xFF, 0xFF, 0x00, 0xAD, 0xF8, 0x27, 0x22, 0x7A, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0x84, 0xFF, 0xFF, 0x52, 0xEF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x59, 0xB7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0xBE, 0x00, 0x00, 0x29, 0xCD, 0xFF, 0xFF, 0x2D, 0x7D, 0x00, 0x00, 0x3A, 0x36, 0xFF, 0xFF, 0x1E, 0xB2, 0x00, 0x00, 0x4A, 0x97, 0xFF, 0xFF, 0x12, 0x13, 0x00, 0x00, 0x5F, 0x9B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x81, 0x04, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x28, 0xB2, 0x46, 0xFF, 0xFF, 0x00, 0x00, 0x4C, 0x44, 0x6F, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0xC0, 0x96, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x8E, 0x65, 0x1E, 0xFF, 0xFF, 0x00, 0x00, 0xAD, 0x47, 0x51, 0x5E, 0xFF, 0xFF, 0x0C, 0xEE, 0xEB, 0x85, 0x28, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFD, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x43, 0x3C, 0x00, 0x00, 0x2C, 0xA5, 0xFF, 0xFF, 0x32, 0x6C, 0x00, 0x00, 0x3F, 0xD2, 0xFF, 0xFF, 0x23, 0x29, 0x00, 0x00, 0x59, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x76, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xF3, 0x82, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0x7D, 0x7A, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0x22, 0x76, 0x24, 0xFF, 0xFF, 0x00, 0x00, 0xAD, 0x07, 0x5F, 0x50, 0xFF, 0xFF, 0x00, 0x00, 0xD5, 0x89, 0x49, 0xB6, 0xFF, 0xFF, 0x02, 0x94, 0xF9, 0xBD, 0x24, 0xDC, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF0, 0xA4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE4, 0x4E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDD, 0xB3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x66, 0xE3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0x6B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0x09, 0x00, 0x00, 0x37, 0xD6, 0xFF, 0xFF, 0x40, 0x51, 0x00, 0x00, 0x3E, 0x64, 0xFF, 0xFF, 0x1C, 0x35, 0x00, 0x00, 0x5E, 0xD5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x77, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xAA, 0x83, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x63, 0xAE, 0x70, 0x82, 0xFF, 0xFF, 0x00, 0x00, 0x9D, 0x56, 0x70, 0x94, 0xFF, 0xFF, 0x00, 0x00, 0xC1, 0xA1, 0x63, 0xD2, 0xFF, 0xFF, 0x1B, 0x07, 0xF9, 0x5A, 0x31, 0xD3, 0xFD, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0x37, 0xE3, 0x22, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD3, 0x29, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCF, 0x19, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC8, 0x35, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0x03, 0xFF, 0xFF, 0x73, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0x68, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0xCD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x03, 0x00, 0x00, 0x07, 0x3B, 0xFF, 0xFF, 0x3C, 0x25, 0x00, 0x00, 0x47, 0x4A, 0xFF, 0xFF, 0x50, 0x9D, 0x00, 0x00, 0x47, 0x65, 0xFF, 0xFF, 0x23, 0xBF, 0x00, 0x00, 0x67, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0x39, 0x7B, 0x63, 0xFF, 0xFF, 0x00, 0x00, 0x6B, 0x52, 0x69, 0x63, 0xFF, 0xFF, 0x00, 0x00, 0xB0, 0x51, 0x62, 0xD9, 0xEE, 0xFD, 0x00, 0x00, 0xE6, 0x63, 0x48, 0x36, 0xD4, 0x9B, 0x00, 0x00, 0xFF, 0x8E, 0x3B, 0x2E, 0xC7, 0xDA, 0x00, 0x00, 0xFE, 0xFB, 0x2C, 0x29, 0xBB, 0xD5, 0x00, 0x00, 0xFF, 0xFF, 0x1B, 0xFE, 0xB4, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x22, 0xAE, 0x4C, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0xB8, 0xA8, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0x16, 0xFF, 0xFF, 0x85, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0x09, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x9D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x9F, 0x00, 0x00, 0x14, 0x98, 0xFF, 0xFF, 0x45, 0x93, 0x00, 0x00, 0x51, 0xC6, 0xFF, 0xFF, 0x39, 0x13, 0x00, 0x00, 0x60, 0x10, 0xFF, 0xFF, 0x29, 0xBC, 0x2F, 0x5F, 0x5E, 0xC8, 0xD6, 0xB1, 0x00, 0x00, 0x67, 0x54, 0x58, 0x6B, 0xC1, 0xF1, 0x00, 0x00, 0xB6, 0x4A, 0x42, 0x37, 0xA3, 0x31, 0x00, 0x00, 0xF2, 0x56, 0x2D, 0xB1, 0x95, 0xC1, 0x00, 0x00, 0xFE, 0x27, 0x3A, 0x53, 0x97, 0xF3, 0x00, 0x00, 0xFA, 0x41, 0x46, 0x3D, 0x8F, 0xCC, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0x03, 0x89, 0xC4, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0x81, 0x84, 0x9D, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0x88, 0x7E, 0xB3, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xFB, 0xFF, 0xFF, 0x94, 0x83, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x38, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8B, 0x16, 0x00, 0x00, 0x0A, 0x38, 0xFF, 0xFF, 0x8E, 0xEC, 0x00, 0x00, 0x0F, 0x22, 0xEA, 0xAA, 0x6F, 0x8B, 0x00, 0x00, 0x1F, 0xA5, 0xAA, 0x65, 0x0E, 0x87, 0x00, 0x00, 0x60, 0x3A, 0x87, 0x44, 0x00, 0x00, 0x4D, 0xB6, 0x5A, 0x36, 0x7A, 0x7A, 0x00, 0x00, 0xAF, 0x5B, 0x52, 0xA1, 0x68, 0x7E, 0x00, 0x00, 0xED, 0xC6, 0x55, 0x8A, 0x55, 0x19, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0xD6, 0x44, 0xA2, 0x00, 0x00, 0xFD, 0x9D, 0x5E, 0x56, 0x49, 0x80, 0x00, 0x00, 0xFC, 0xE3, 0x54, 0xD4, 0x48, 0xBD, 0x00, 0x00, 0xFD, 0x9F, 0x4F, 0xBB, 0x44, 0xA0, 0x00, 0x00, 0xFD, 0x4E, 0x50, 0xBB, 0x3C, 0xD2, 0x00, 0x00, 0xFB, 0xEE, 0x52, 0xE9, 0xFF, 0xFF, 0xA2, 0x97, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0x1D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x86, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x64, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x2F, 0x97, 0x77, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x77, 0x83, 0x72, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x09, 0x67, 0x97, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x9B, 0x59, 0xDA, 0x00, 0x00, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x3C, 0x00, 0x00, 0x09, 0xE9, 0x80, 0x32, 0x7D, 0x39, 0x00, 0x00, 0x1A, 0xDC, 0xD6, 0x20, 0x77, 0xEB, 0x00, 0x00, 0x20, 0x71, 0xFA, 0x3F, 0x71, 0x0A, 0x00, 0x00, 0x27, 0x44, 0xFD, 0x3A, 0x5E, 0xF3, 0x00, 0x00, 0x2B, 0x02, 0xFC, 0x18, 0x55, 0x3B, 0x00, 0x00, 0x27, 0xF5, 0xFA, 0x6C, 0x52, 0xBC, 0x00, 0x00, 0x28, 0x0B, 0xFA, 0x67, 0x52, 0x9B, 0x00, 0x00, 0x25, 0x43, 0xFA, 0x74, 0x52, 0x9B, 0xFF, 0xFF, 0xB1, 0xCF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0x9E, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xD5, 0xA8, 0x6E, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x5F, 0x96, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x98, 0x5B, 0x85, 0x50, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x31, 0x80, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x64, 0x26, 0x87, 0xB6, 0x00, 0x00, 0x0D, 0x4B, 0x00, 0x00, 0x5A, 0x7A, 0x04, 0x28, 0x61, 0x1F, 0x00, 0x00, 0x73, 0x22, 0x84, 0x17, 0x54, 0x68, 0x00, 0x00, 0x73, 0xA4, 0xD3, 0x7D, 0x51, 0x6C, 0x00, 0x00, 0x6A, 0xD3, 0xFB, 0x85, 0x51, 0xE9, 0x00, 0x00, 0x5D, 0xD4, 0xFB, 0x3B, 0x44, 0x64, 0x00, 0x00, 0x58, 0x12, 0xFF, 0xFF, 0x38, 0x38, 0x00, 0x00, 0x55, 0x51, 0xFF, 0xFF, 0x35, 0xC2, 0x00, 0x00, 0x54, 0x00, 0xFF, 0xFF, 0x36, 0xC6, 0x00, 0x00, 0x52, 0x01, 0xFF, 0xFF, 0x38, 0x15, 0xFF, 0xFF, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC5, 0x27, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF9, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC5, 0xA3, 0xB0, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x40, 0xAA, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xE6, 0xA5, 0x79, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF1, 0xA7, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x53, 0xE1, 0xAA, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x31, 0x0D, 0x39, 0x3F, 0x9A, 0x00, 0x00, 0xA5, 0xF5, 0x76, 0xDC, 0x34, 0x4A, 0x00, 0x00, 0xA8, 0x3C, 0xC8, 0x25, 0x32, 0x55, 0x00, 0x00, 0x9E, 0xBC, 0xF8, 0x80, 0x33, 0xDD, 0x00, 0x00, 0x90, 0x78, 0xFE, 0x6B, 0x2D, 0x28, 0x00, 0x00, 0x81, 0x0F, 0xFF, 0xFF, 0x21, 0x6E, 0x00, 0x00, 0x79, 0xBE, 0xFF, 0xFF, 0x1D, 0x14, 0x00, 0x00, 0x77, 0x4D, 0xFF, 0xFF, 0x1F, 0x42, 0x00, 0x00, 0x74, 0xBD, 0xFF, 0xFF, 0x21, 0x5B, 0xFF, 0xFF, 0xD2, 0x62, 0x00, 0x00, 0x06, 0xFC, 0xFF, 0xFF, 0xDF, 0xDD, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xAD, 0xCB, 0x55, 0x00, 0x00, 0x03, 0xA4, 0xAF, 0x84, 0xC7, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x1A, 0xC7, 0x72, 0x00, 0x00, 0x00, 0x00, 0x65, 0x01, 0xC7, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x48, 0x9C, 0xC5, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1E, 0xC9, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x2A, 0x28, 0x02, 0x20, 0x52, 0x00, 0x00, 0xC8, 0x75, 0x75, 0x3C, 0x17, 0x18, 0x00, 0x00, 0xC6, 0x68, 0xBB, 0xFC, 0x11, 0x67, 0x00, 0x00, 0xBF, 0x46, 0xEF, 0x02, 0x11, 0x52, 0x00, 0x00, 0xB3, 0x23, 0xFD, 0x99, 0x15, 0x21, 0x00, 0x00, 0xA7, 0x07, 0xFF, 0xFF, 0x11, 0x3B, 0x00, 0x00, 0x9D, 0x9A, 0xFF, 0xFF, 0x0D, 0x0D, 0x00, 0x00, 0x9A, 0xAB, 0xFF, 0xFF, 0x0E, 0xF0, 0x00, 0x00, 0x96, 0xF8, 0xFF, 0xFF, 0x11, 0x41, 0xFF, 0xFF, 0xEA, 0xB0, 0x00, 0x00, 0x09, 0x3A, 0xE0, 0x70, 0xE1, 0xB4, 0x00, 0x00, 0x07, 0x88, 0xB8, 0x83, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x91, 0xF6, 0xD9, 0x28, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x01, 0xDA, 0x15, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2D, 0xDB, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x26, 0xBC, 0xDD, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xE7, 0x12, 0x00, 0x00, 0x0A, 0xD8, 0x00, 0x00, 0xE4, 0xA8, 0x3D, 0xC3, 0x05, 0x39, 0x00, 0x00, 0xE6, 0xE9, 0x7C, 0x9B, 0x02, 0xED, 0x00, 0x00, 0xE6, 0x8B, 0xB5, 0xAD, 0x01, 0x50, 0x00, 0x00, 0xE3, 0xD8, 0xE7, 0x29, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x58, 0xFA, 0xB1, 0x03, 0x1D, 0x00, 0x00, 0xC9, 0x47, 0xFF, 0xFF, 0x05, 0x0F, 0x00, 0x00, 0xBD, 0xAD, 0xFF, 0xFF, 0x02, 0x74, 0x00, 0x00, 0xB9, 0x7B, 0xFF, 0xFF, 0x03, 0xE1, 0x00, 0x00, 0xB5, 0x7A, 0xFF, 0xFF, 0x06, 0x13, 0xEF, 0xE0, 0xF9, 0x37, 0x00, 0x00, 0x09, 0xC7, 0xC4, 0x5E, 0xEB, 0x59, 0x00, 0x00, 0x02, 0x30, 0x9B, 0x02, 0xE6, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x9A, 0xE9, 0x63, 0x00, 0x00, 0x00, 0x00, 0x45, 0x12, 0xED, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x34, 0xEF, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA5, 0xF6, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFC, 0x1A, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x40, 0x4E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x27, 0x82, 0xC2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0xD9, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0xE1, 0x27, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xBF, 0xF9, 0xD0, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x96, 0xFF, 0xFF, 0x02, 0x79, 0x00, 0x00, 0xE6, 0xB3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x70, 0xFF, 0xFF, 0x00, 0x6C, 0x00, 0x00, 0xD8, 0x10, 0xFF, 0xFF, 0x01, 0x43, 0xD0, 0x89, 0xFC, 0xB8, 0x00, 0x00, 0x0D, 0x61, 0xA5, 0xB7, 0xF2, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x75, 0x74, 0xF2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x9E, 0xF5, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x19, 0x67, 0xF5, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0x9E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0xD5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xF5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC8, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE5, 0xC9, 0x00, 0x00, 0x02, 0x36, 0xFF, 0xFF, 0xFF, 0x37, 0x00, 0x00, 0x00, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xAF, 0xE3, 0xFD, 0x61, 0x00, 0x00, 0x01, 0x57, 0x7D, 0xBD, 0xF9, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x4B, 0xFB, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xAF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0x34, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x67, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0xD1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0x56, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xEB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCD, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE5, 0x38, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF4, 0xD4, 0x00, 0x00, 0x01, 0x89, 0xFF, 0xFF, 0xFA, 0x90, 0x00, 0x00, 0x01, 0xF3, 0xFF, 0xFF, 0xFE, 0x3F, 0x00, 0x00, 0x88, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x55, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x24, 0x28, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0xA9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0x55, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0x04, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6B, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x18, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCC, 0xFA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDD, 0xF9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xCA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE8, 0xD9, 0x00, 0x00, 0xFF, 0xFF, 0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0xBE, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x29, 0x2E, 0x00, 0x00, 0x31, 0xB1, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x3F, 0xBD, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x49, 0x3A, 0xFF, 0xFF, 0x10, 0xAF, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x67, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0x88, 0x99, 0xB2, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x67, 0xA9, 0x87, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0x6A, 0x1E, 0x6A, 0x1E, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0xE2, 0x4D, 0xB4, 0xFF, 0xFF, 0x00, 0x00, 0xC5, 0xD8, 0x3C, 0x52, 0xFF, 0xFF, 0x05, 0x91, 0xE8, 0x02, 0x25, 0x91, 0xFF, 0xFF, 0x00, 0x00, 0xF9, 0x9D, 0x19, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0xFD, 0x95, 0x15, 0x58, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x4B, 0xFF, 0xFF, 0x4E, 0x8C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0xC5, 0x00, 0x00, 0x1F, 0x5F, 0xFF, 0xFF, 0x37, 0x0E, 0x00, 0x00, 0x26, 0x38, 0xFF, 0xFF, 0x1D, 0xFD, 0x00, 0x00, 0x3C, 0xD6, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x45, 0x0B, 0xFF, 0xFF, 0x00, 0x1C, 0x00, 0x00, 0x62, 0x9D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x22, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0xE9, 0xAE, 0x84, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x74, 0x01, 0x9C, 0x9E, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0x08, 0x54, 0xE6, 0xFF, 0xFF, 0x00, 0x00, 0xA8, 0x60, 0x4A, 0xB9, 0xFF, 0xFF, 0x00, 0x00, 0xD3, 0xF7, 0x31, 0xA0, 0xFF, 0xFF, 0x00, 0x00, 0xF4, 0x6D, 0x20, 0x4C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x68, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x35, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x4C, 0xFD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x53, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0xB5, 0x00, 0x00, 0x22, 0x20, 0xFF, 0xFF, 0x24, 0x7E, 0x00, 0x00, 0x35, 0x7F, 0xFF, 0xFF, 0x1F, 0xD7, 0x00, 0x00, 0x3F, 0xDB, 0xFF, 0xFF, 0x26, 0x10, 0x00, 0x00, 0x4B, 0xFA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x76, 0xB3, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x34, 0x9C, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0x46, 0x12, 0xA4, 0x9D, 0xFF, 0xFF, 0x00, 0x00, 0x6C, 0xDC, 0x6C, 0xCD, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0x49, 0x58, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0xB3, 0x48, 0xA6, 0xFF, 0xFF, 0x07, 0x4F, 0xE8, 0x7A, 0x25, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xA1, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF3, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0x06, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x57, 0xD9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0x95, 0x00, 0x00, 0x22, 0x54, 0xFF, 0xFF, 0x1D, 0x1E, 0x00, 0x00, 0x40, 0x3B, 0xFF, 0xFF, 0x23, 0x29, 0x00, 0x00, 0x4A, 0xDD, 0xFF, 0xFF, 0x16, 0x10, 0x00, 0x00, 0x5C, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x76, 0x44, 0xFF, 0xFF, 0x00, 0x00, 0x59, 0x74, 0x64, 0x2A, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0xA5, 0x6D, 0x67, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0x14, 0x52, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0xD6, 0x05, 0x39, 0x0C, 0xFF, 0xFF, 0x00, 0x00, 0xF9, 0x60, 0x1D, 0x92, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDF, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD6, 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0xC9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5C, 0xCD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0x85, 0x00, 0x00, 0x28, 0xB6, 0xFF, 0xFF, 0x32, 0xCC, 0x00, 0x00, 0x38, 0x39, 0xFF, 0xFF, 0x1D, 0xDE, 0x00, 0x00, 0x4C, 0xFC, 0xFF, 0xFF, 0x13, 0x10, 0x00, 0x00, 0x60, 0x1E, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x85, 0x71, 0xE1, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0xB0, 0x5E, 0xE8, 0xFF, 0xFF, 0x00, 0x00, 0x9A, 0x88, 0x56, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0xC2, 0x70, 0x50, 0xBD, 0xFF, 0xFF, 0x0C, 0x54, 0xF9, 0x36, 0x28, 0xC2, 0xF0, 0x0D, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0xEA, 0xDB, 0xC1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x41, 0xC7, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0x27, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0xE4, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0xB4, 0xFF, 0xFF, 0x68, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0x30, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x67, 0x95, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0x52, 0x00, 0x00, 0x36, 0x3B, 0xFF, 0xFF, 0x38, 0xD5, 0x00, 0x00, 0x3E, 0xD1, 0xFF, 0xFF, 0x25, 0x5D, 0x00, 0x00, 0x58, 0x2E, 0xFF, 0xFF, 0x00, 0x00, 0x2F, 0x17, 0x62, 0x48, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x1F, 0x55, 0x4F, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0xE5, 0x44, 0x20, 0xE1, 0xF8, 0x00, 0x00, 0xDD, 0xD4, 0x21, 0x77, 0xC4, 0x23, 0x00, 0x00, 0xFE, 0x02, 0x15, 0xBF, 0xBC, 0xF8, 0x00, 0x00, 0xFD, 0xA9, 0x1A, 0xFD, 0xB3, 0x14, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0xB8, 0xA6, 0x2A, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0xB5, 0xA2, 0x32, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x3E, 0x9D, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x5D, 0xFF, 0xFF, 0x79, 0xA2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0x45, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0x9E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x2C, 0x00, 0x00, 0x3D, 0x40, 0xFF, 0xFF, 0x39, 0xA7, 0x00, 0x00, 0x48, 0xF4, 0xEF, 0x5D, 0x00, 0x00, 0x2A, 0x83, 0x4E, 0xE1, 0xC7, 0xDD, 0x00, 0x00, 0x64, 0x61, 0x34, 0xD9, 0xB3, 0x8F, 0x00, 0x00, 0xA7, 0x15, 0x25, 0xC2, 0x9D, 0x4E, 0x00, 0x00, 0xE2, 0x20, 0x16, 0xDB, 0x86, 0x21, 0x00, 0x00, 0xFD, 0xE5, 0x1C, 0xDB, 0x8A, 0x60, 0x00, 0x00, 0xFD, 0x85, 0x35, 0xAB, 0x82, 0x32, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0x32, 0x7A, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0xDC, 0x75, 0xEF, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0x3F, 0x6F, 0xC5, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0xD0, 0xFF, 0xFF, 0x8E, 0x99, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8B, 0xEC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0x05, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7B, 0x92, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xBB, 0x75, 0xA6, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x59, 0x4E, 0xCC, 0x00, 0x00, 0x11, 0xEC, 0x8D, 0x0A, 0x00, 0x00, 0x01, 0x62, 0x4A, 0x83, 0x76, 0xF7, 0x00, 0x00, 0x45, 0xFC, 0x3D, 0xFD, 0x6B, 0xDD, 0x00, 0x00, 0x99, 0xF4, 0x3B, 0x7F, 0x60, 0x1E, 0x00, 0x00, 0xD9, 0x84, 0x3E, 0x8B, 0x53, 0xE2, 0x00, 0x00, 0xFC, 0xB8, 0x45, 0xFA, 0x3C, 0x0C, 0x00, 0x00, 0xFF, 0x17, 0x4A, 0xF4, 0x36, 0x69, 0x00, 0x00, 0xFD, 0x8D, 0x4E, 0xE4, 0x35, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0x49, 0xFE, 0x32, 0x57, 0x00, 0x00, 0xFF, 0xE0, 0x4B, 0x2C, 0x2C, 0xDE, 0x00, 0x00, 0xFE, 0xC0, 0x4B, 0x64, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x6D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0x2B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x97, 0xD3, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x0D, 0x83, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x50, 0x6B, 0x14, 0x00, 0x00, 0x00, 0x00, 0x84, 0x03, 0x50, 0x94, 0x00, 0x00, 0x00, 0x00, 0x66, 0x82, 0x46, 0xE1, 0x00, 0x00, 0x1B, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xF0, 0x00, 0x00, 0x05, 0x04, 0x68, 0xE0, 0x6A, 0x79, 0x00, 0x00, 0x16, 0x66, 0xBB, 0xDD, 0x63, 0x67, 0x00, 0x00, 0x1E, 0x54, 0xF0, 0x45, 0x5F, 0x6C, 0x00, 0x00, 0x24, 0x45, 0xFE, 0x17, 0x4E, 0x7D, 0x01, 0xA7, 0x2D, 0x75, 0xFF, 0xFF, 0x3F, 0x3A, 0x00, 0x00, 0x2C, 0x28, 0xFF, 0xFF, 0x3D, 0x2A, 0x00, 0x00, 0x2C, 0x11, 0xFF, 0xFF, 0x3D, 0x6E, 0x00, 0x00, 0x28, 0xAA, 0xFF, 0xFF, 0x3F, 0x20, 0xFF, 0xFF, 0xAF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0xCB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0x34, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x5D, 0x9E, 0x39, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x0F, 0x89, 0xE3, 0x00, 0x00, 0x00, 0xE6, 0x87, 0x35, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x0B, 0x6D, 0x78, 0x00, 0x00, 0x00, 0x00, 0x58, 0x9D, 0x73, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xA5, 0x01, 0x34, 0x4C, 0xA1, 0x00, 0x00, 0x60, 0x6B, 0x6A, 0xD6, 0x3E, 0x6B, 0x00, 0x00, 0x63, 0x94, 0xB7, 0x18, 0x39, 0x6C, 0x00, 0x00, 0x62, 0x96, 0xEF, 0x9F, 0x3B, 0x22, 0x00, 0x00, 0x5A, 0x33, 0xFB, 0x4D, 0x35, 0x62, 0x00, 0x00, 0x52, 0x47, 0xFF, 0xFF, 0x2B, 0x73, 0x00, 0x00, 0x4E, 0xA6, 0xFF, 0xFF, 0x23, 0x8C, 0x00, 0x00, 0x4E, 0x4A, 0xFF, 0xFF, 0x24, 0xBE, 0x00, 0x00, 0x4C, 0xAF, 0xFF, 0xFF, 0x26, 0x07, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x64, 0x00, 0x00, 0x00, 0x00, 0xE5, 0xC8, 0xBE, 0x73, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xD1, 0xAA, 0x11, 0x00, 0x00, 0x01, 0x26, 0x94, 0x1F, 0xA0, 0xF8, 0x00, 0x00, 0x01, 0x1A, 0x72, 0x26, 0xA0, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x53, 0x78, 0x9A, 0x52, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x08, 0x91, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xAA, 0x06, 0x78, 0x2C, 0x9A, 0x00, 0x00, 0x93, 0x1D, 0x60, 0x56, 0x1D, 0xA8, 0x00, 0x00, 0x96, 0x56, 0xB2, 0x2F, 0x1B, 0xB2, 0x00, 0x00, 0x91, 0xC7, 0xE6, 0x23, 0x1B, 0x56, 0x00, 0x00, 0x87, 0x8C, 0xFA, 0xD2, 0x1C, 0x39, 0x00, 0x00, 0x7C, 0x65, 0xFF, 0xFF, 0x16, 0x3C, 0x00, 0x00, 0x6F, 0x70, 0xFF, 0xFF, 0x0C, 0x6E, 0x00, 0x00, 0x6F, 0x02, 0xFF, 0xFF, 0x0D, 0x90, 0x00, 0x00, 0x6C, 0x4F, 0xFF, 0xFF, 0x0F, 0x85, 0xFF, 0xFF, 0xD4, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xF4, 0xDC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x82, 0xC5, 0xF7, 0x00, 0x00, 0x02, 0x4B, 0xA0, 0xDD, 0xBC, 0x42, 0x00, 0x00, 0x00, 0x8F, 0x7A, 0x3D, 0xBD, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x55, 0xED, 0xBC, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x33, 0xE7, 0xB8, 0x45, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x74, 0xB4, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x36, 0x20, 0xD9, 0x08, 0x2B, 0x00, 0x00, 0xB5, 0x30, 0x62, 0x77, 0x03, 0x0A, 0x00, 0x00, 0xB2, 0x8E, 0xA2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xD0, 0xDD, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x5F, 0xFD, 0x0C, 0x03, 0xF3, 0x00, 0x00, 0x9F, 0xE1, 0xFF, 0xFF, 0x06, 0x69, 0x00, 0x00, 0x91, 0xA8, 0xFF, 0xFF, 0x00, 0xD0, 0x00, 0x00, 0x8F, 0xBD, 0xFF, 0xFF, 0x01, 0xC6, 0x00, 0x00, 0x8C, 0x92, 0xFF, 0xFF, 0x04, 0x03, 0xFF, 0xFF, 0xED, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x92, 0xDC, 0x9B, 0x00, 0x00, 0x05, 0x67, 0xAC, 0x99, 0xD1, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x82, 0x3F, 0xCF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x0D, 0xD1, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x33, 0x7C, 0xD2, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x11, 0x31, 0xD0, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x4C, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xEE, 0x3B, 0x69, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x89, 0x70, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xEE, 0xA2, 0x93, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x15, 0xBF, 0x05, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x25, 0xEF, 0x37, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x52, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xF9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0xE5, 0x6D, 0xF4, 0x05, 0x00, 0x00, 0x06, 0x38, 0xB9, 0x8D, 0xE3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xF0, 0xDD, 0x23, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xDC, 0xDE, 0x66, 0x00, 0x00, 0x00, 0x00, 0x35, 0x6F, 0xE3, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x12, 0x2E, 0xEB, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x79, 0x1D, 0x65, 0x00, 0x00, 0x00, 0x00, 0xEE, 0x69, 0x4D, 0x53, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x2C, 0x7B, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x30, 0xA7, 0x1A, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x67, 0xCF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFD, 0xF0, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xE4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x93, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xB7, 0xFF, 0xFF, 0x00, 0x00, 0xC8, 0x3A, 0xF9, 0x65, 0x00, 0x00, 0x04, 0xCE, 0x97, 0x53, 0xEA, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x67, 0x3F, 0xEA, 0x06, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x45, 0xED, 0x83, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA2, 0xF2, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0xC5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE4, 0x18, 0x00, 0x00, 0x01, 0x69, 0xFF, 0xFF, 0xFC, 0x5A, 0x00, 0x00, 0x00, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x03, 0xF8, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x70, 0x10, 0xF3, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x41, 0x9B, 0xF6, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x16, 0x49, 0xFE, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0x98, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0x45, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0x12, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x59, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x3C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0x4E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xB2, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, 0xF8, 0x3A, 0x00, 0x00, 0x01, 0xEA, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7A, 0xDD, 0xFC, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x49, 0x9C, 0xFE, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x73, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xC6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0x9B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0x6C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x37, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0x62, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0x47, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAF, 0x55, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE0, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE6, 0xF4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEA, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0x48, 0x34, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0x8E, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x2D, 0x9F, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x36, 0xB6, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xF4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xB0, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x7D, 0xAF, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8F, 0xC6, 0x4F, 0xC7, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x66, 0x43, 0x67, 0xFF, 0xFF, 0x00, 0x00, 0xC5, 0xE6, 0x31, 0xA1, 0xFF, 0xFF, 0x00, 0xEE, 0xE5, 0x00, 0x20, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0xFA, 0xEF, 0x12, 0x25, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0xC0, 0xFF, 0xFF, 0x46, 0xDA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0x25, 0x00, 0x00, 0x1A, 0x7D, 0xFF, 0xFF, 0x2D, 0x5E, 0x00, 0x00, 0x22, 0xB3, 0xFF, 0xFF, 0x1F, 0x40, 0x00, 0x00, 0x33, 0x0C, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x3E, 0x66, 0xFF, 0xFF, 0x26, 0x53, 0x00, 0x00, 0x44, 0x6C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x66, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x83, 0x45, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x77, 0x81, 0x27, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x13, 0x5A, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x98, 0x27, 0x4F, 0x1E, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x5E, 0x44, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0xD3, 0x68, 0x27, 0x69, 0xFF, 0xFF, 0x00, 0x00, 0xF3, 0xCC, 0x18, 0x36, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x11, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x85, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0x69, 0x00, 0x00, 0x22, 0x6A, 0xFF, 0xFF, 0x1D, 0x5B, 0x00, 0x00, 0x2F, 0x32, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x39, 0x0E, 0xFF, 0xFF, 0x25, 0x80, 0x00, 0x00, 0x40, 0x85, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x63, 0x38, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x85, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x61, 0x74, 0xE3, 0xFF, 0xFF, 0x00, 0x00, 0x5A, 0xAF, 0x60, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0xA3, 0x47, 0x86, 0xFF, 0xFF, 0x00, 0x00, 0xB6, 0xF1, 0x37, 0x0F, 0xFF, 0xFF, 0x00, 0x4B, 0xE6, 0xFB, 0x21, 0x2F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x0D, 0xC8, 0xFE, 0x89, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF1, 0x9F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE9, 0x41, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0x15, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x46, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0xE5, 0x00, 0x00, 0x11, 0x02, 0xFF, 0xFF, 0x31, 0x37, 0x00, 0x00, 0x1E, 0x52, 0xFF, 0xFF, 0x1D, 0xEF, 0x00, 0x00, 0x34, 0x1A, 0xFF, 0xFF, 0x22, 0x00, 0x00, 0x00, 0x3E, 0xAD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x63, 0x82, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x4A, 0xC6, 0x62, 0xEB, 0xFF, 0xFF, 0x0A, 0x47, 0x78, 0x48, 0x44, 0x93, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x0F, 0x3C, 0x9A, 0xFF, 0xFF, 0x00, 0x00, 0xD4, 0xEA, 0x22, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0xF7, 0x33, 0x14, 0x23, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD6, 0xED, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD2, 0x09, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xCD, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0x46, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x50, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3B, 0x8B, 0x00, 0x00, 0x1F, 0x4B, 0xFF, 0xFF, 0x2E, 0x55, 0x00, 0x00, 0x2B, 0xF2, 0xFF, 0xFF, 0x1E, 0x54, 0x00, 0x00, 0x3D, 0xCC, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x43, 0xA2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x64, 0x78, 0xFF, 0xFF, 0x00, 0x00, 0x5B, 0x8A, 0x4D, 0x3E, 0xFF, 0xFF, 0x00, 0x00, 0x93, 0x47, 0x3A, 0x7E, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0x40, 0x22, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0xF0, 0x01, 0x0E, 0x22, 0xE2, 0x33, 0x00, 0x00, 0xFE, 0xED, 0x03, 0x09, 0xD1, 0x69, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0x71, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xE5, 0xB3, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0x42, 0xFF, 0xFF, 0x59, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x57, 0x19, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0xE9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x5F, 0x00, 0x00, 0x22, 0x6C, 0xFF, 0xFF, 0x2B, 0xB5, 0x00, 0x00, 0x31, 0xE2, 0xFF, 0xFF, 0x26, 0x8F, 0x00, 0x00, 0x3E, 0x4B, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0x9A, 0x4A, 0x89, 0xFF, 0xFF, 0x00, 0x00, 0x6B, 0xC5, 0x30, 0x54, 0xEF, 0x5D, 0x00, 0x00, 0xA7, 0x2C, 0x1B, 0x99, 0xD3, 0x98, 0x00, 0x00, 0xCC, 0x90, 0x02, 0xA9, 0xBC, 0xC7, 0x00, 0x00, 0xF2, 0xF2, 0x00, 0x00, 0xB4, 0xE2, 0x00, 0x00, 0xFD, 0x29, 0x07, 0xAD, 0xA8, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0x02, 0x9B, 0x2D, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0x63, 0x92, 0xE1, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0xFA, 0x8D, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x1A, 0xFF, 0xFF, 0x70, 0xB7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6B, 0xFD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0xF7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5D, 0xFA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0xA8, 0x00, 0x00, 0x22, 0x45, 0xFF, 0xFF, 0x2A, 0xC7, 0x00, 0x00, 0x32, 0x6A, 0xD3, 0x77, 0x00, 0x00, 0x32, 0x44, 0x1D, 0xFE, 0xA7, 0xD2, 0x00, 0x00, 0x5E, 0x74, 0x06, 0x9C, 0x9F, 0xA4, 0x00, 0x00, 0x91, 0x8A, 0x04, 0x9E, 0x94, 0x4B, 0x00, 0x00, 0xC8, 0xB4, 0x00, 0x00, 0x85, 0x19, 0x00, 0x00, 0xF9, 0xBA, 0x00, 0x00, 0x7C, 0x57, 0x00, 0x00, 0xFF, 0xB9, 0x1C, 0x0D, 0x76, 0x4F, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0x22, 0x65, 0xBD, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0xA4, 0x60, 0xF7, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x34, 0x5D, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x32, 0xFF, 0xFF, 0x88, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0xC6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xE7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0x29, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x68, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xA8, 0x4E, 0xEA, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x6A, 0x32, 0x0B, 0x00, 0x00, 0x05, 0xFD, 0x74, 0xC6, 0x00, 0x00, 0x0F, 0xFF, 0x23, 0x25, 0x65, 0x12, 0x00, 0x00, 0x41, 0xAF, 0x21, 0x64, 0x5E, 0x43, 0x00, 0x00, 0x82, 0xC8, 0x25, 0xBD, 0x57, 0x65, 0x00, 0x00, 0xBF, 0x07, 0x28, 0x67, 0x50, 0x15, 0x00, 0x00, 0xF0, 0x4E, 0x2E, 0x98, 0x3C, 0x23, 0x00, 0x00, 0xFF, 0x8D, 0x32, 0xE8, 0x24, 0xD1, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0x38, 0x1B, 0xE7, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0x70, 0x1B, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0xB5, 0x1A, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0x73, 0xFF, 0xFF, 0x9D, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0x30, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xB9, 0x8A, 0xA2, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x6C, 0x74, 0x49, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xB2, 0x59, 0x93, 0x00, 0x00, 0x00, 0x00, 0x73, 0x43, 0x41, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x57, 0x9A, 0x3A, 0xD4, 0x00, 0x00, 0x08, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x00, 0x00, 0x08, 0xE7, 0x56, 0x08, 0x53, 0xBE, 0x00, 0x00, 0x14, 0x4C, 0xA6, 0x7A, 0x4B, 0x74, 0x00, 0x00, 0x1A, 0xAA, 0xD9, 0x98, 0x45, 0xA4, 0x00, 0x00, 0x21, 0x35, 0xF9, 0xE2, 0x3B, 0x30, 0x00, 0x00, 0x25, 0xE6, 0xFF, 0xFF, 0x2E, 0xFA, 0x00, 0x00, 0x27, 0xC1, 0xFF, 0xFF, 0x2C, 0x92, 0x00, 0x00, 0x24, 0xB3, 0xFF, 0xFF, 0x2F, 0x56, 0x00, 0x00, 0x23, 0xB8, 0xFF, 0xFF, 0x2F, 0xD2, 0xFF, 0xFF, 0xAD, 0xF1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB1, 0x60, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x85, 0xAA, 0x21, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xA0, 0x96, 0x9D, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x14, 0x7F, 0xC0, 0x00, 0x00, 0x02, 0x56, 0x78, 0x6A, 0x65, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xFB, 0x5D, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x47, 0xFE, 0x5E, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xCB, 0x00, 0x00, 0x3A, 0x68, 0x00, 0x00, 0x53, 0x7F, 0x58, 0x32, 0x2A, 0xF9, 0x00, 0x00, 0x56, 0xA0, 0xA1, 0x80, 0x25, 0xD2, 0x00, 0x00, 0x5A, 0x6B, 0xDB, 0xB8, 0x25, 0xA6, 0x00, 0x00, 0x55, 0xBD, 0xF7, 0xD1, 0x23, 0x8B, 0x00, 0x00, 0x4C, 0x22, 0xFF, 0xFF, 0x1B, 0x72, 0x00, 0x00, 0x43, 0x22, 0xFF, 0xFF, 0x0F, 0xCD, 0x00, 0x00, 0x40, 0x3E, 0xFF, 0xFF, 0x15, 0x96, 0x00, 0x00, 0x40, 0x08, 0xFF, 0xFF, 0x16, 0x7E, 0xFF, 0xFF, 0xBF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC8, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x24, 0xB8, 0x31, 0x00, 0x00, 0x00, 0x00, 0xB1, 0x23, 0xA3, 0x08, 0x00, 0x00, 0x03, 0x2E, 0x84, 0x7E, 0x92, 0x3A, 0x00, 0x00, 0x01, 0x64, 0x65, 0xEF, 0x95, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x44, 0x11, 0x8B, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x29, 0x08, 0x7D, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xF4, 0x02, 0xAC, 0x16, 0x89, 0x00, 0x00, 0x81, 0x42, 0x4D, 0xAF, 0x05, 0xFF, 0x00, 0x00, 0x84, 0xCA, 0x9B, 0x10, 0x05, 0xC3, 0x00, 0x00, 0x81, 0x5E, 0xD0, 0xF4, 0x04, 0x66, 0x00, 0x00, 0x7E, 0xD7, 0xF8, 0xF7, 0x08, 0x39, 0x00, 0x00, 0x76, 0x09, 0xFF, 0xFF, 0x09, 0xBC, 0x00, 0x00, 0x66, 0xBB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xCE, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x5D, 0x92, 0xFF, 0xFF, 0x02, 0x46, 0xFF, 0xFF, 0xD4, 0x98, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x0A, 0xD7, 0x94, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x34, 0xC0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x91, 0xB3, 0xB0, 0xEC, 0x00, 0x00, 0x00, 0x15, 0x6B, 0x55, 0xB3, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x46, 0xB7, 0xB2, 0x29, 0x00, 0x00, 0x00, 0x00, 0x20, 0x97, 0xAB, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x02, 0x96, 0xA5, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x46, 0x26, 0x96, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xBB, 0x58, 0x66, 0x00, 0x00, 0x00, 0x00, 0x9B, 0xCF, 0x81, 0x44, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x7A, 0xB5, 0x03, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x2C, 0xEC, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x97, 0x56, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x88, 0x38, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xF5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7A, 0xFF, 0xFF, 0x00, 0x00, 0xF5, 0xA8, 0xE6, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x53, 0xD7, 0xDE, 0x00, 0x00, 0x02, 0x34, 0xA0, 0xB5, 0xC9, 0x42, 0x00, 0x00, 0x00, 0x00, 0x72, 0x4D, 0xC6, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xCC, 0xC8, 0x69, 0x00, 0x00, 0x00, 0x00, 0x24, 0xF1, 0xC9, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x6B, 0x0B, 0xC9, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xA7, 0x3C, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xD8, 0x65, 0x83, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x7F, 0x89, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x80, 0xB0, 0x10, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x87, 0xD4, 0x38, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x68, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xA7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x1D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x84, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0xA7, 0xEC, 0xD0, 0x00, 0x00, 0x03, 0xBF, 0xAD, 0xEB, 0xDC, 0x65, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xE3, 0xD5, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x52, 0x62, 0xD6, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x29, 0x42, 0xDB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0xCB, 0xDE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xF1, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xF1, 0x27, 0x44, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x5A, 0x4D, 0x37, 0x00, 0x00, 0x00, 0x00, 0xE3, 0x73, 0x75, 0x17, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xC9, 0x9D, 0xB7, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x42, 0xBE, 0x27, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x31, 0xDB, 0x25, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x97, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x67, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0xBD, 0x9D, 0xF3, 0x66, 0x00, 0x00, 0x00, 0x00, 0x89, 0xDB, 0xE3, 0x63, 0x00, 0x00, 0x00, 0x00, 0x59, 0x1A, 0xE1, 0x37, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x59, 0xE6, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0xED, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xA2, 0x01, 0x25, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0xC2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0xE4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0xCF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB6, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF7, 0x08, 0x00, 0x00, 0x01, 0xB4, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xF6, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x1D, 0xFF, 0xFF, 0x00, 0x00, 0x97, 0x62, 0xF3, 0x66, 0x00, 0x00, 0x00, 0x00, 0x62, 0x63, 0xED, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x36, 0xBA, 0xF2, 0x68, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xBD, 0xFC, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x49, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0xA2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x76, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA4, 0x8C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDD, 0xE8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0xCF, 0x00, 0x00, 0x02, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x6D, 0xD0, 0xF9, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xE2, 0xFB, 0x32, 0x00, 0x00, 0x00, 0x00, 0x14, 0x5E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x22, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0xD3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0x59, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4C, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAC, 0x74, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC8, 0x47, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDC, 0x72, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE9, 0x56, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEC, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0x0D, 0x00, 0x00, 0x10, 0x4B, 0xFF, 0xFF, 0x20, 0x64, 0x00, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x24, 0x44, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x2C, 0x9B, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x37, 0x1F, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x40, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xDC, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xFB, 0x63, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x42, 0x7D, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x59, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x8A, 0x7D, 0x44, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x38, 0x37, 0xC7, 0xFF, 0xFF, 0x00, 0x00, 0xC8, 0x68, 0x23, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0xE3, 0xF6, 0x17, 0x0A, 0xFF, 0xFF, 0x00, 0x00, 0xF7, 0xDF, 0x0D, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x3B, 0xFF, 0xFF, 0x3D, 0x11, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0x94, 0x00, 0x00, 0x17, 0x29, 0xFF, 0xFF, 0x21, 0x95, 0x00, 0x00, 0x1F, 0xE4, 0xFF, 0xFF, 0x1F, 0xEB, 0x00, 0x00, 0x28, 0x6C, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x32, 0xFE, 0xFF, 0xFF, 0x24, 0x0F, 0x00, 0x00, 0x3E, 0x58, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xBD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x63, 0x98, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0x7A, 0x61, 0x68, 0xFF, 0xFF, 0x00, 0x00, 0x5D, 0x27, 0x5B, 0xE7, 0xFF, 0xFF, 0x00, 0x00, 0x97, 0xFF, 0x3E, 0xE1, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0x5F, 0x35, 0x29, 0xFF, 0xFF, 0x00, 0x00, 0xD4, 0xF8, 0x1E, 0xBB, 0xFF, 0xFF, 0x00, 0x00, 0xF1, 0x7F, 0x10, 0x6C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xBF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF9, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0x68, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0xF8, 0x00, 0x00, 0x08, 0x44, 0xFF, 0xFF, 0x21, 0xC5, 0x00, 0x00, 0x1E, 0x42, 0xFF, 0xFF, 0x1F, 0xA8, 0x00, 0x00, 0x23, 0x96, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x2D, 0xB1, 0xFF, 0xFF, 0x22, 0x0F, 0x00, 0x00, 0x3A, 0x87, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x64, 0x3A, 0xFF, 0xFF, 0x00, 0x00, 0x3E, 0x4E, 0x64, 0x6A, 0xFF, 0xFF, 0x00, 0x00, 0x57, 0xF1, 0x58, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0x93, 0x3B, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0xBA, 0x7A, 0x27, 0xE9, 0xFF, 0xFF, 0x00, 0x00, 0xE7, 0xC9, 0x15, 0x25, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0x6C, 0xFE, 0x35, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE5, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDF, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0x4A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0x4C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0x19, 0x00, 0x00, 0x0D, 0x82, 0xFF, 0xFF, 0x1D, 0xDE, 0x00, 0x00, 0x21, 0x81, 0xFF, 0xFF, 0x1F, 0x41, 0x00, 0x00, 0x27, 0x5D, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x33, 0xD8, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x3C, 0x95, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x62, 0x8B, 0xFF, 0xFF, 0x00, 0x00, 0x50, 0x83, 0x4A, 0x9D, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xE4, 0x35, 0xBD, 0xFF, 0xFF, 0x00, 0x00, 0xAA, 0xAA, 0x21, 0x28, 0xFF, 0xFF, 0x00, 0x00, 0xD4, 0x04, 0x0B, 0x8B, 0xFF, 0xFF, 0x00, 0x00, 0xF7, 0x77, 0x06, 0x00, 0xFA, 0x66, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0x36, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC5, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC2, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0x5B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0xDE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0xC2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0x2D, 0x00, 0x00, 0x16, 0x42, 0xFF, 0xFF, 0x27, 0xDE, 0x00, 0x00, 0x1F, 0xA3, 0xFF, 0xFF, 0x1F, 0x81, 0x00, 0x00, 0x2B, 0x4F, 0xFF, 0xFF, 0x1C, 0xF0, 0x00, 0x00, 0x35, 0xA4, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0x85, 0x3F, 0x63, 0xFF, 0xFF, 0x00, 0x00, 0x55, 0xCA, 0x2E, 0x20, 0xFF, 0xFF, 0x00, 0x00, 0x92, 0x93, 0x10, 0x58, 0xF0, 0xE3, 0x00, 0x00, 0xB6, 0xE2, 0x00, 0x00, 0xD9, 0x80, 0x00, 0x00, 0xD5, 0xFA, 0x00, 0x00, 0xD5, 0x9F, 0x00, 0x00, 0xF9, 0xB1, 0x00, 0x00, 0xC6, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xB2, 0xB7, 0xC3, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xC3, 0xA8, 0xF1, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xBB, 0xA4, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0x13, 0xFF, 0xFF, 0x51, 0x8D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0x9B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0x38, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0xE1, 0x00, 0x00, 0x14, 0xAB, 0xFF, 0xFF, 0x1F, 0x5A, 0x00, 0x00, 0x22, 0x7D, 0xFF, 0xFF, 0x1E, 0x2F, 0x00, 0x00, 0x25, 0x29, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0xBE, 0x22, 0x2B, 0xE6, 0xB8, 0x00, 0x00, 0x62, 0xF1, 0x00, 0x00, 0xC4, 0x1C, 0x00, 0x00, 0x86, 0x45, 0x00, 0x00, 0xB1, 0x4F, 0x00, 0x00, 0xAE, 0xFA, 0x00, 0x00, 0xA7, 0x2A, 0x00, 0x00, 0xDB, 0x49, 0x00, 0x00, 0xA6, 0x1E, 0x00, 0x00, 0xF5, 0xC5, 0x00, 0x00, 0x9D, 0x2B, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x3D, 0x8B, 0x69, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0x90, 0x80, 0x0E, 0x00, 0x00, 0xFF, 0xFF, 0x16, 0x42, 0x7B, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x1F, 0xFF, 0xFF, 0x68, 0x4B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0xD6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x59, 0x13, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0x0D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x80, 0x19, 0xA6, 0x00, 0x00, 0x0C, 0x0A, 0xB7, 0xFA, 0x00, 0x00, 0x30, 0x96, 0x00, 0x00, 0x89, 0x0D, 0x00, 0x00, 0x49, 0xF0, 0x00, 0x00, 0x7A, 0x2E, 0x00, 0x00, 0x71, 0x1C, 0x00, 0x00, 0x78, 0xFE, 0x00, 0x00, 0xA8, 0xDF, 0x00, 0x00, 0x73, 0x30, 0x00, 0x00, 0xD9, 0xE3, 0x00, 0x00, 0x73, 0xF4, 0x00, 0x00, 0xFD, 0x80, 0x00, 0x00, 0x65, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0x40, 0x51, 0x2A, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x55, 0x4D, 0x2D, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x6C, 0x4A, 0xC7, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0x68, 0xFF, 0xFF, 0x83, 0x30, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7C, 0x0D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xED, 0x91, 0x52, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x57, 0x3D, 0xD3, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x73, 0x22, 0x70, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF4, 0x00, 0x00, 0x13, 0x4B, 0x02, 0x98, 0x59, 0x17, 0x00, 0x00, 0x3C, 0xEC, 0x09, 0x2E, 0x54, 0x80, 0x00, 0x00, 0x6D, 0x41, 0x10, 0x61, 0x4D, 0x17, 0x00, 0x00, 0xA6, 0x7F, 0x15, 0xD6, 0x48, 0x11, 0x00, 0x00, 0xD9, 0x12, 0x17, 0x71, 0x3E, 0xBC, 0x00, 0x00, 0xFA, 0xC0, 0x1A, 0x07, 0x1F, 0x3E, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x10, 0x06, 0xBE, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0xFB, 0x0A, 0x56, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0xC2, 0xFF, 0xFF, 0x99, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x43, 0x00, 0x00, 0x00, 0x00, 0xE3, 0x4D, 0x7B, 0x94, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x7D, 0x67, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xEE, 0x4D, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x66, 0xA1, 0x36, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x22, 0x2E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x5B, 0x00, 0x00, 0x09, 0xF6, 0x47, 0x00, 0x3F, 0x27, 0x00, 0x00, 0x15, 0xAE, 0x8F, 0x3A, 0x37, 0x2F, 0x00, 0x00, 0x19, 0xC0, 0xC3, 0xEA, 0x31, 0x73, 0x00, 0x00, 0x1D, 0x27, 0xEE, 0xCA, 0x29, 0x83, 0x00, 0x00, 0x20, 0x37, 0xFF, 0xFF, 0x1C, 0x75, 0x00, 0x00, 0x20, 0xFD, 0xFF, 0xFF, 0x15, 0x36, 0x00, 0x00, 0x1E, 0x46, 0xFF, 0xFF, 0x1C, 0xB5, 0x00, 0x00, 0x1D, 0x97, 0xFF, 0xFF, 0x1C, 0xE8, 0xFF, 0xFF, 0xAB, 0x32, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAF, 0xE6, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x46, 0xA2, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x53, 0x8E, 0xD6, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xC1, 0x75, 0x3A, 0x00, 0x00, 0x00, 0xAC, 0x6C, 0xC3, 0x5A, 0x62, 0x00, 0x00, 0x01, 0x7C, 0x4C, 0xC5, 0x4F, 0x77, 0x00, 0x00, 0x00, 0x00, 0x35, 0xF6, 0x4C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x69, 0x00, 0x00, 0x27, 0xA0, 0x00, 0x00, 0x49, 0x0A, 0x4A, 0xEF, 0x17, 0x98, 0x00, 0x00, 0x4A, 0x9C, 0x87, 0xED, 0x10, 0x53, 0x00, 0x00, 0x50, 0xF1, 0xC2, 0x98, 0x0F, 0x12, 0x00, 0x00, 0x4F, 0xD0, 0xF0, 0x8A, 0x0C, 0xE7, 0x00, 0x00, 0x43, 0x50, 0xFF, 0xFF, 0x0A, 0x2E, 0x00, 0x00, 0x39, 0xC5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x35, 0xB5, 0xFF, 0xFF, 0x04, 0x3B, 0x00, 0x00, 0x34, 0x57, 0xFF, 0xFF, 0x06, 0x46, 0xFF, 0xFF, 0xBE, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC5, 0xFA, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x48, 0xB0, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xA1, 0x99, 0xCC, 0x00, 0x00, 0x02, 0xBC, 0x77, 0xE5, 0x85, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x55, 0x19, 0x82, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x32, 0x6A, 0x7F, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x13, 0xF2, 0x70, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x22, 0x05, 0x15, 0x01, 0x29, 0x00, 0x00, 0x6E, 0x0F, 0x3F, 0x64, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xC5, 0x72, 0x66, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x1C, 0xAE, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x24, 0xE6, 0x42, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x53, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x43, 0x05, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x44, 0x45, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0x0D, 0xD3, 0x04, 0x00, 0x00, 0x00, 0x00, 0xE3, 0x9A, 0xD0, 0x9E, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x44, 0xB8, 0x46, 0x00, 0x00, 0x00, 0x00, 0x82, 0xD2, 0xA6, 0x16, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xBF, 0xA6, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x35, 0xDC, 0xA8, 0x46, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xC5, 0xA1, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xBD, 0x08, 0x68, 0x00, 0x00, 0x00, 0x00, 0x94, 0x36, 0x2D, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x94, 0xDF, 0x51, 0x12, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x94, 0x73, 0x42, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x26, 0xA0, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x88, 0x2C, 0xCC, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x1B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x67, 0x5C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x66, 0x0E, 0xFF, 0xFF, 0x00, 0x00, 0xE8, 0x66, 0xDD, 0xA3, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x84, 0xD3, 0x27, 0x00, 0x00, 0x00, 0x00, 0x92, 0x4F, 0xBF, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x63, 0x43, 0xBB, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x4E, 0xBC, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x14, 0x31, 0xBF, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x34, 0x1A, 0x6C, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x8E, 0x43, 0x1A, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x3F, 0x5C, 0x94, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x04, 0x77, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xF9, 0xA7, 0x6C, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x7C, 0xC2, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x72, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xE1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xA4, 0xFF, 0xFF, 0x00, 0x00, 0xCE, 0xBC, 0xE5, 0x62, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x2D, 0xD5, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x98, 0xCD, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x45, 0x69, 0xCE, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xCF, 0xD2, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xBE, 0x17, 0x8C, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x5F, 0x35, 0xEF, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x86, 0x50, 0xEA, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xBF, 0x6F, 0xA4, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x69, 0x92, 0xF7, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x61, 0xB4, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x66, 0xCB, 0x89, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xDA, 0xFD, 0x5B, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xFA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xDA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0xB2, 0x17, 0xEC, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xE2, 0xDC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x4E, 0xDB, 0x22, 0x00, 0x00, 0x00, 0x00, 0x25, 0x37, 0xDE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEC, 0xE6, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xB4, 0x08, 0x68, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x29, 0x79, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0x67, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0x45, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA4, 0x97, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0xC9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD9, 0x23, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF2, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x21, 0x00, 0x00, 0xDB, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x8B, 0x26, 0xEF, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x56, 0x47, 0xE8, 0x48, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xBC, 0xEE, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x58, 0xF9, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0x50, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1B, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0xE3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x50, 0xD4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0xCD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x77, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x36, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA2, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD8, 0x22, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEE, 0xFF, 0x00, 0x00, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xA1, 0x61, 0xA7, 0xF5, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x35, 0xB0, 0xF9, 0x58, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0x93, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x15, 0x4A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x27, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0x9B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x92, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAA, 0x42, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xBB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD7, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEB, 0x95, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEF, 0x7A, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0x5A, 0x00, 0x00, 0x0B, 0x6E, 0xFF, 0xFF, 0x19, 0x45, 0x00, 0x00, 0x19, 0x45, 0xFF, 0xFF, 0x1C, 0x7F, 0x00, 0x00, 0x1C, 0x7F, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x21, 0x81, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x2B, 0x28, 0xFF, 0xFF, 0x19, 0x36, 0x00, 0x00, 0x39, 0x36, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x52, 0x20, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x36, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0xBD, 0x56, 0x87, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x47, 0x8A, 0xFF, 0xFF, 0x00, 0x00, 0x8F, 0x91, 0x37, 0x36, 0xFF, 0xFF, 0x00, 0x00, 0xAB, 0xC9, 0x25, 0x9C, 0xFF, 0xFF, 0x00, 0x00, 0xCA, 0x0B, 0x17, 0xC4, 0xFF, 0xFF, 0x00, 0x00, 0xE3, 0x60, 0x0C, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0xF5, 0xCC, 0x07, 0x77, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xB2, 0xFF, 0xCD, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x5E, 0x00, 0x00, 0x00, 0xD6, 0xFF, 0xFF, 0x21, 0xB1, 0x00, 0x00, 0x12, 0x80, 0xFF, 0xFF, 0x19, 0xAE, 0x00, 0x00, 0x1A, 0xDA, 0xFF, 0xFF, 0x1F, 0x73, 0x00, 0x00, 0x1E, 0x6D, 0xFF, 0xFF, 0x20, 0x61, 0x00, 0x00, 0x26, 0xAA, 0xFF, 0xFF, 0x21, 0x9E, 0x00, 0x00, 0x32, 0x93, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x54, 0x50, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x64, 0xCB, 0xFF, 0xFF, 0x00, 0x00, 0x36, 0xA5, 0x5A, 0xD5, 0xFF, 0xFF, 0x00, 0x00, 0x58, 0x80, 0x49, 0x61, 0xFF, 0xFF, 0x00, 0x00, 0x9B, 0x93, 0x33, 0x60, 0xFF, 0xFF, 0x00, 0x00, 0xB3, 0x7E, 0x1F, 0x36, 0xFF, 0xFF, 0x00, 0x00, 0xD6, 0x2D, 0x10, 0x93, 0xFF, 0xFF, 0x00, 0x00, 0xED, 0xF2, 0x0A, 0x57, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xA1, 0xF4, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xEF, 0xEE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0x4E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xBC, 0x00, 0x00, 0x06, 0xE0, 0xFF, 0xFF, 0x17, 0xCD, 0x00, 0x00, 0x18, 0xB3, 0xFF, 0xFF, 0x1B, 0xC9, 0x00, 0x00, 0x1B, 0x75, 0xFF, 0xFF, 0x20, 0xDD, 0x00, 0x00, 0x21, 0x45, 0xFF, 0xFF, 0x21, 0x4E, 0x00, 0x00, 0x2D, 0xB4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x50, 0x19, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x63, 0xC4, 0xFF, 0xFF, 0x00, 0x00, 0x37, 0x9D, 0x5D, 0x2D, 0xFF, 0xFF, 0x00, 0x00, 0x65, 0xD8, 0x43, 0x55, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0xD6, 0x2B, 0xD5, 0xFF, 0xFF, 0x00, 0x00, 0xC5, 0xDB, 0x19, 0x36, 0xFF, 0xFF, 0x00, 0x00, 0xE8, 0x29, 0x0A, 0x36, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFB, 0x06, 0x91, 0xFA, 0x16, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0x83, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD4, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0x7A, 0x00, 0x00, 0x09, 0xBD, 0xFF, 0xFF, 0x15, 0xFA, 0x00, 0x00, 0x1A, 0x0E, 0xFF, 0xFF, 0x1E, 0x1C, 0x00, 0x00, 0x1D, 0x2F, 0xFF, 0xFF, 0x21, 0x1F, 0x00, 0x00, 0x25, 0xC3, 0xFF, 0xFF, 0x19, 0x07, 0x00, 0x00, 0x35, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x95, 0x3E, 0x3D, 0xFF, 0xFF, 0x00, 0x00, 0x52, 0xDB, 0x2F, 0x7E, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0x04, 0x23, 0xCE, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0x4D, 0x12, 0x11, 0xFF, 0xFF, 0x00, 0x00, 0xD3, 0xF9, 0x00, 0x00, 0xFD, 0x61, 0x00, 0x00, 0xF3, 0x80, 0x00, 0x00, 0xEB, 0xA1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD8, 0x11, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x1B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB4, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x8D, 0xFF, 0xFF, 0x3C, 0x63, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x35, 0x74, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0xD6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0x8B, 0x00, 0x00, 0x0D, 0xFD, 0xFF, 0xFF, 0x17, 0x9D, 0x00, 0x00, 0x1C, 0x77, 0xFF, 0xFF, 0x1C, 0xBD, 0x00, 0x00, 0x1C, 0x04, 0xFF, 0xFF, 0x06, 0x37, 0x00, 0x00, 0x2B, 0x2A, 0xFF, 0xFF, 0x00, 0x00, 0x21, 0xA1, 0x28, 0x17, 0xFF, 0xFF, 0x13, 0xEB, 0x60, 0x5D, 0x00, 0x00, 0xED, 0x96, 0x00, 0x00, 0x87, 0x95, 0x00, 0x00, 0xD3, 0x60, 0x00, 0x00, 0xAA, 0xC9, 0x00, 0x00, 0xC7, 0xB4, 0x00, 0x00, 0xCC, 0x20, 0x00, 0x00, 0xC4, 0xC4, 0x00, 0x00, 0xED, 0x15, 0x00, 0x00, 0xBA, 0x57, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAD, 0xAB, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x53, 0x97, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0xCB, 0x91, 0xF7, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x34, 0xFF, 0xFF, 0x4A, 0x9F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x43, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0x57, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x14, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0x14, 0x00, 0x00, 0x0F, 0xAF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x15, 0x82, 0xF1, 0x5D, 0x00, 0x00, 0x30, 0xCA, 0x00, 0x00, 0xBC, 0x29, 0x00, 0x00, 0x4D, 0x7B, 0x00, 0x00, 0xA3, 0xA0, 0x00, 0x00, 0x6C, 0x45, 0x00, 0x00, 0x9E, 0x78, 0x00, 0x00, 0x98, 0x83, 0x00, 0x00, 0x97, 0x08, 0x00, 0x00, 0xC7, 0x50, 0x00, 0x00, 0x95, 0x25, 0x00, 0x00, 0xEB, 0x85, 0x00, 0x00, 0x8E, 0x73, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x93, 0x7A, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x8B, 0x68, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x8A, 0x64, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0xE8, 0xFF, 0xFF, 0x5A, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x51, 0x6B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x49, 0x2D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xF9, 0x22, 0xDD, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x94, 0x00, 0x00, 0x1E, 0x69, 0x00, 0x00, 0x73, 0xAA, 0x00, 0x00, 0x38, 0xC2, 0x00, 0x00, 0x69, 0xC5, 0x00, 0x00, 0x59, 0xAA, 0x00, 0x00, 0x65, 0x14, 0x00, 0x00, 0x8C, 0x7E, 0x00, 0x00, 0x66, 0x8A, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x60, 0xC8, 0x00, 0x00, 0xEC, 0x5A, 0x00, 0x00, 0x56, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x03, 0x3D, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x15, 0x30, 0x3B, 0xEB, 0x00, 0x00, 0xFF, 0xFF, 0x16, 0xC8, 0x39, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x16, 0xFF, 0xFF, 0x78, 0x94, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x75, 0xAB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6C, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x29, 0x54, 0x59, 0x00, 0x00, 0x00, 0x00, 0xDD, 0xE0, 0x46, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x9A, 0x2F, 0x85, 0x00, 0x00, 0x00, 0x00, 0x93, 0x26, 0x1E, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x51, 0xFD, 0x00, 0x00, 0x0A, 0xB3, 0x00, 0x00, 0x50, 0x49, 0x00, 0x00, 0x33, 0x85, 0x00, 0x00, 0x49, 0xD7, 0x00, 0x00, 0x57, 0x21, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0x89, 0xA0, 0x05, 0x6C, 0x3D, 0xA4, 0x00, 0x00, 0xBD, 0x4C, 0x07, 0xC5, 0x3B, 0x23, 0x00, 0x00, 0xEE, 0x50, 0x07, 0xAA, 0x25, 0xC2, 0x00, 0x00, 0xFF, 0xD1, 0x0E, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x37, 0x01, 0x5C, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0x6A, 0xFF, 0xFF, 0x94, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x96, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x73, 0x8B, 0x39, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x23, 0x71, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x08, 0x5B, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x60, 0x44, 0x93, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x8F, 0x2F, 0xAA, 0x00, 0x29, 0x00, 0x00, 0x3B, 0x00, 0x1F, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xAB, 0x00, 0x00, 0x09, 0xE8, 0x37, 0x61, 0x2C, 0xB4, 0x00, 0x00, 0x12, 0x3B, 0x77, 0x29, 0x24, 0x26, 0x00, 0x00, 0x1B, 0x1F, 0xB5, 0xBD, 0x1F, 0x80, 0x00, 0x00, 0x1C, 0x2E, 0xE2, 0xED, 0x19, 0xAB, 0x00, 0x00, 0x18, 0xB7, 0xFB, 0x2B, 0x0F, 0x49, 0x00, 0x00, 0x19, 0x4B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x16, 0xEE, 0xFF, 0xFF, 0x06, 0x05, 0x00, 0x00, 0x15, 0x5B, 0xFF, 0xFF, 0x08, 0xF7, 0xFF, 0xFF, 0xA7, 0xD1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0x07, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xD4, 0x98, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xF8, 0x85, 0xED, 0x00, 0x00, 0x00, 0x00, 0x91, 0x2C, 0x6B, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x60, 0xB1, 0x51, 0x5D, 0x00, 0x00, 0x02, 0x13, 0x3E, 0x44, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x23, 0xE5, 0x3D, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC5, 0x00, 0x00, 0x11, 0x87, 0x00, 0x00, 0x3E, 0x1F, 0x3C, 0x97, 0x05, 0xA7, 0x00, 0x00, 0x3F, 0x2F, 0x70, 0x15, 0x01, 0xFA, 0x00, 0x00, 0x44, 0x12, 0xAA, 0x33, 0x00, 0x00, 0x00, 0x00, 0x47, 0x4A, 0xE0, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x39, 0x2A, 0xF7, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x26, 0xB9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0x57, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0x2D, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xBB, 0xCE, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x3E, 0xC0, 0x67, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x5D, 0xA7, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x99, 0xE3, 0x90, 0x51, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xCA, 0x79, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x45, 0xB2, 0x6E, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x21, 0xA8, 0x6E, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x64, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x1D, 0x12, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xD0, 0x37, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x54, 0xB5, 0x63, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x56, 0x81, 0x9A, 0x63, 0x00, 0x00, 0x00, 0x00, 0x55, 0x0C, 0xC9, 0x04, 0x00, 0x00, 0x00, 0x00, 0x54, 0xF8, 0xF9, 0x79, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x33, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x81, 0xFF, 0xFF, 0x00, 0x00, 0xF1, 0xCA, 0xCC, 0x5D, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x21, 0xCA, 0x02, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xA7, 0xB0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x75, 0x81, 0x9C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFC, 0x97, 0x66, 0x00, 0x00, 0x00, 0x00, 0x26, 0xC3, 0x96, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xCF, 0x0D, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x86, 0xC1, 0x29, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x84, 0x33, 0x48, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x77, 0x5C, 0x6C, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x79, 0xB6, 0x99, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x72, 0x43, 0xBB, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x75, 0xD5, 0xFB, 0x53, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xC6, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x4F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x48, 0xD6, 0xFF, 0xFF, 0x00, 0x00, 0xDB, 0xFA, 0xD6, 0x64, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xCF, 0xCC, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x84, 0xB5, 0xB6, 0x24, 0x00, 0x00, 0x00, 0x00, 0x57, 0xF0, 0xB2, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x5C, 0xB2, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7F, 0xB3, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x8F, 0x0C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x7B, 0x2B, 0x10, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xDF, 0x46, 0x71, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xE4, 0x58, 0x59, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x64, 0x6C, 0x95, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x8A, 0x98, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x97, 0x76, 0xB5, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x98, 0x45, 0xFE, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x92, 0x86, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x99, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x72, 0x5B, 0xFF, 0xFF, 0x00, 0x00, 0xC2, 0xE6, 0xDD, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x96, 0xB2, 0xCF, 0x17, 0x00, 0x00, 0x00, 0x00, 0x62, 0x5C, 0xC7, 0x55, 0x00, 0x00, 0x00, 0x00, 0x38, 0xED, 0xC6, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x13, 0x1E, 0xC8, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x2C, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x3D, 0x17, 0x98, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x18, 0x36, 0x66, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x7B, 0x56, 0xA4, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x68, 0x6E, 0x20, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xCA, 0x8D, 0xCF, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x29, 0xAF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xD5, 0xBF, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xFB, 0xF5, 0xEE, 0x00, 0x00, 0x00, 0x00, 0xBD, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x4B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x99, 0x69, 0xFF, 0xFF, 0x00, 0x00, 0xA5, 0xF8, 0xE5, 0x41, 0x00, 0x00, 0x00, 0x00, 0x70, 0x06, 0xD8, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x43, 0x0D, 0xD5, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xE4, 0xD9, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x56, 0x19, 0x46, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xE6, 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x52, 0x19, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x64, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0x63, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD2, 0x71, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEC, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xA4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x08, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0x80, 0xEB, 0x59, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x52, 0xE2, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x25, 0x93, 0xE9, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x06, 0x86, 0xF7, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x12, 0x44, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0x39, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x48, 0x64, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0xA6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5C, 0x06, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x79, 0xEE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x91, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0xF9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD2, 0xBB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE9, 0xCD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x86, 0x00, 0x00, 0xF6, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x56, 0x5B, 0xF2, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x79, 0xF6, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x2C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x38, 0x73, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x76, 0xBC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8A, 0x4C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0xA6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA9, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD3, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE8, 0x12, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF2, 0xD7, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0x2D, 0x00, 0x00, 0x08, 0x1A, 0xFF, 0xFF, 0x12, 0x51, 0x00, 0x00, 0x12, 0x51, 0xFF, 0xFF, 0x14, 0x93, 0x00, 0x00, 0x14, 0x93, 0xFF, 0xFF, 0x18, 0x8F, 0x00, 0x00, 0x18, 0x8F, 0xFF, 0xFF, 0x1E, 0x14, 0x00, 0x00, 0x1E, 0x14, 0xFF, 0xFF, 0x0E, 0xBB, 0x00, 0x00, 0x2E, 0xBB, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xC6, 0x3A, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0xE1, 0x40, 0xE1, 0xFF, 0xFF, 0x00, 0x00, 0x4D, 0x2F, 0x38, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0x64, 0x32, 0x38, 0xAD, 0xFF, 0xFF, 0x00, 0x00, 0x93, 0x85, 0x28, 0x08, 0xFF, 0xFF, 0x00, 0x00, 0xAD, 0x6D, 0x1F, 0x39, 0xFF, 0xFF, 0x00, 0x00, 0xCA, 0x92, 0x0C, 0x25, 0xFF, 0xFF, 0x00, 0x00, 0xE1, 0xF9, 0x05, 0x55, 0xFF, 0xFF, 0x00, 0x00, 0xF4, 0x59, 0x03, 0xB3, 0xFC, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xEC, 0xF2, 0x2E, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0x60, 0xFF, 0xFF, 0x29, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0x9B, 0x00, 0x00, 0x0D, 0xA6, 0xFF, 0xFF, 0x12, 0x2B, 0x00, 0x00, 0x12, 0xFB, 0xFF, 0xFF, 0x15, 0xFA, 0x00, 0x00, 0x15, 0xFA, 0xFF, 0xFF, 0x1C, 0x02, 0x00, 0x00, 0x1A, 0xE1, 0xFF, 0xFF, 0x0D, 0xEE, 0x00, 0x00, 0x2C, 0x0D, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xA9, 0x3C, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x59, 0x3F, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0x50, 0xD0, 0x36, 0x16, 0xFF, 0xFF, 0x00, 0x00, 0x65, 0xA3, 0x39, 0x87, 0xFF, 0xFF, 0x00, 0x00, 0x9D, 0x80, 0x23, 0x32, 0xFF, 0xFF, 0x00, 0x00, 0xBA, 0x1B, 0x14, 0x04, 0xFF, 0xFF, 0x00, 0x00, 0xD5, 0xFD, 0x06, 0xC7, 0xFF, 0xFF, 0x00, 0x00, 0xED, 0x60, 0x04, 0x0C, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xA0, 0xEF, 0x5A, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0x3E, 0xE2, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0x85, 0xFF, 0xFF, 0x2A, 0x51, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x1D, 0x00, 0x00, 0x03, 0xB1, 0xFF, 0xFF, 0x0F, 0x9F, 0x00, 0x00, 0x12, 0x0B, 0xFF, 0xFF, 0x13, 0x4C, 0x00, 0x00, 0x13, 0x4C, 0xFF, 0xFF, 0x18, 0x15, 0x00, 0x00, 0x17, 0xDB, 0xFF, 0xFF, 0x1F, 0xB7, 0x00, 0x00, 0x20, 0x6C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x1B, 0xFF, 0xFF, 0x00, 0x00, 0x1D, 0x93, 0x3E, 0x21, 0xFF, 0xFF, 0x00, 0x00, 0x50, 0xBE, 0x38, 0xE9, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x93, 0x30, 0x9F, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0xEE, 0x22, 0x6F, 0xFF, 0xFF, 0x00, 0x00, 0xC6, 0x7F, 0x0B, 0x4F, 0xFF, 0xFF, 0x00, 0x00, 0xE6, 0x0C, 0x04, 0xEA, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x71, 0x03, 0x28, 0xF0, 0xC3, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0x9B, 0xD8, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0xC2, 0xC2, 0x8B, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x6D, 0xFF, 0xFF, 0x2D, 0x13, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0x28, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x19, 0x00, 0x00, 0x03, 0x71, 0xFF, 0xFF, 0x0E, 0x8E, 0x00, 0x00, 0x12, 0x97, 0xFF, 0xFF, 0x14, 0x5D, 0x00, 0x00, 0x14, 0x5D, 0xFF, 0xFF, 0x1D, 0x0D, 0x00, 0x00, 0x18, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x33, 0xA4, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0xA6, 0x2E, 0xBB, 0xFF, 0xFF, 0x00, 0x00, 0x4E, 0x43, 0x27, 0x47, 0xFF, 0xFF, 0x00, 0x00, 0x82, 0x94, 0x18, 0xC6, 0xFF, 0xFF, 0x00, 0x00, 0xB1, 0x55, 0x00, 0xAA, 0xF2, 0xC4, 0x00, 0x00, 0xCE, 0xDB, 0x00, 0x00, 0xE7, 0xBE, 0x00, 0x00, 0xE9, 0xD4, 0x00, 0x00, 0xDC, 0x44, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0xB8, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x40, 0xB0, 0x51, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xE1, 0xA2, 0x25, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x6B, 0xFF, 0xFF, 0x34, 0xA8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0x3C, 0x00, 0x00, 0x02, 0x7C, 0xFF, 0xFF, 0x0D, 0x98, 0x00, 0x00, 0x13, 0xF1, 0xFF, 0xFF, 0x11, 0xB4, 0x00, 0x00, 0x11, 0xB8, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x5A, 0x1B, 0x5B, 0xFF, 0xFF, 0x00, 0x00, 0x2B, 0xB5, 0x13, 0x06, 0xFC, 0xF8, 0x00, 0x00, 0x5A, 0x84, 0x00, 0x00, 0xD5, 0x35, 0x00, 0x00, 0x7B, 0x13, 0x00, 0x00, 0xCA, 0x9C, 0x00, 0x00, 0xA4, 0x6B, 0x00, 0x00, 0xC1, 0x1C, 0x00, 0x00, 0xC6, 0x3B, 0x00, 0x00, 0xBB, 0x2B, 0x00, 0x00, 0xE4, 0xC3, 0x00, 0x00, 0xAE, 0x46, 0x00, 0x00, 0xFE, 0x58, 0x00, 0x00, 0xA0, 0xA1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x87, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x87, 0x7A, 0xC3, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x10, 0xFF, 0xFF, 0x44, 0x3E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0x20, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0xFD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0x47, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x46, 0x00, 0x00, 0x0A, 0x42, 0x00, 0x00, 0xD6, 0xA2, 0x00, 0x00, 0x28, 0x68, 0x00, 0x00, 0xB3, 0xE5, 0x00, 0x00, 0x48, 0x5D, 0x00, 0x00, 0xA1, 0xB6, 0x00, 0x00, 0x67, 0x6A, 0x00, 0x00, 0x9B, 0x95, 0x00, 0x00, 0x90, 0x11, 0x00, 0x00, 0x92, 0xB1, 0x00, 0x00, 0xB8, 0xE6, 0x00, 0x00, 0x8A, 0x97, 0x00, 0x00, 0xE2, 0xAC, 0x00, 0x00, 0x7D, 0x52, 0x00, 0x00, 0xFE, 0xAB, 0x00, 0x00, 0x63, 0x75, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xE5, 0x55, 0x4E, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0xE0, 0x4F, 0x57, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x53, 0xFF, 0xFF, 0x54, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x49, 0xBC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2C, 0x64, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xAF, 0x14, 0x5B, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xEF, 0x00, 0x00, 0x19, 0xAF, 0x00, 0x00, 0x71, 0x4C, 0x00, 0x00, 0x32, 0x7D, 0x00, 0x00, 0x63, 0x71, 0x00, 0x00, 0x4E, 0xE0, 0x00, 0x00, 0x5A, 0xA3, 0x00, 0x00, 0x75, 0x53, 0x00, 0x00, 0x59, 0xB0, 0x00, 0x00, 0xAE, 0xC4, 0x00, 0x00, 0x52, 0x9D, 0x00, 0x00, 0xD8, 0xCF, 0x00, 0x00, 0x44, 0x50, 0x00, 0x00, 0xFB, 0x01, 0x00, 0x00, 0x2E, 0xCD, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x49, 0x2B, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0x8D, 0x28, 0xFB, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0x64, 0xFF, 0xFF, 0x71, 0x2B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6F, 0xFB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0x8A, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xDB, 0x4E, 0x1A, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xEC, 0x3D, 0x4C, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x12, 0x26, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x86, 0x76, 0x18, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x55, 0x44, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x3C, 0x25, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x00, 0x36, 0xBA, 0x00, 0x00, 0x42, 0x07, 0x00, 0x00, 0x37, 0xFD, 0x00, 0x00, 0x70, 0xDE, 0x00, 0x00, 0x2F, 0xFA, 0x00, 0x00, 0xA8, 0xF0, 0x02, 0x61, 0x29, 0xB3, 0x00, 0x00, 0xDD, 0x31, 0x07, 0xD3, 0x1E, 0x11, 0x00, 0x00, 0xF8, 0x43, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0x4F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0x42, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0D, 0x6F, 0xFF, 0xFF, 0x8E, 0x50, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x92, 0x89, 0x00, 0x00, 0x00, 0x00, 0xEA, 0xBB, 0x7C, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x57, 0x67, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x96, 0x4F, 0x85, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3E, 0x3B, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x57, 0x07, 0x28, 0x67, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x39, 0x14, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x35, 0x00, 0x00, 0x09, 0x6F, 0x32, 0x51, 0x1C, 0xE6, 0x00, 0x00, 0x12, 0xEC, 0x65, 0xF8, 0x11, 0x8A, 0x00, 0x00, 0x1B, 0x4B, 0xA5, 0x84, 0x0A, 0x8D, 0x00, 0x00, 0x1F, 0x19, 0xDC, 0xB8, 0x06, 0x00, 0x00, 0x00, 0x17, 0x33, 0xF8, 0x85, 0x00, 0x42, 0x00, 0x00, 0x08, 0x8D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x07, 0x77, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAA, 0x14, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x83, 0x92, 0x01, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xDB, 0x7A, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x83, 0x6C, 0x5E, 0x69, 0x00, 0x00, 0x00, 0x00, 0x57, 0xDC, 0x49, 0x83, 0x00, 0x00, 0x00, 0x00, 0x33, 0x1C, 0x37, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x12, 0xFB, 0x35, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x2A, 0x06, 0x84, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xC7, 0x2F, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x32, 0x20, 0x5F, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xE3, 0x92, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x31, 0x07, 0xC5, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x27, 0x63, 0xF3, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x17, 0x92, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xA6, 0xFF, 0xFF, 0x00, 0x00, 0xF6, 0x96, 0xB5, 0x37, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x6F, 0xB9, 0x34, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x9C, 0x9E, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x32, 0x84, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xAC, 0x6B, 0x99, 0x00, 0x00, 0x00, 0x00, 0x39, 0x95, 0x5E, 0x63, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x5D, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x28, 0x03, 0x49, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x58, 0x14, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x44, 0xCB, 0x37, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x63, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xAB, 0x8C, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xD5, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x8D, 0xED, 0x69, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xD4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0x53, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x87, 0xFF, 0xFF, 0x00, 0x00, 0xE3, 0xFC, 0xC4, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x7C, 0xC2, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x8D, 0xA7, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xF7, 0x91, 0x69, 0x00, 0x00, 0x00, 0x00, 0x41, 0x0F, 0x87, 0x64, 0x00, 0x00, 0x00, 0x00, 0x17, 0x58, 0x85, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x5F, 0x01, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x76, 0x33, 0x0D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x82, 0x23, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x67, 0x15, 0x43, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x58, 0x0F, 0x66, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x59, 0xBB, 0x88, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x56, 0x84, 0xB0, 0x19, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x55, 0xEC, 0x95, 0x00, 0x00, 0x00, 0x00, 0x53, 0x36, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x30, 0x47, 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0xA6, 0xCF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xD1, 0xC6, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8C, 0xAE, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x3B, 0xA9, 0x89, 0x00, 0x00, 0x00, 0x00, 0x23, 0xA6, 0xA7, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x9C, 0x10, 0x86, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x54, 0x2C, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x40, 0x3B, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xFA, 0x56, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x94, 0xF9, 0x64, 0x22, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xC9, 0xA4, 0x58, 0x00, 0x00, 0x00, 0x00, 0x88, 0xE9, 0xAD, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x89, 0xDD, 0xF8, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x85, 0x55, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x70, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x54, 0xC6, 0xFF, 0xFF, 0x00, 0x00, 0xB7, 0x89, 0xD7, 0x89, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x21, 0xCA, 0x02, 0x00, 0x00, 0x00, 0x00, 0x57, 0xE6, 0xC1, 0x85, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x57, 0xBF, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0xBE, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x36, 0x03, 0xE4, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x99, 0x28, 0xC2, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x0F, 0x3A, 0x93, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xE2, 0x58, 0xFB, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x85, 0x69, 0xEA, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x5F, 0x85, 0xF1, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x51, 0xA8, 0x13, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x78, 0xB8, 0xE9, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xC0, 0xEF, 0x15, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9B, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x83, 0x8B, 0xFF, 0xFF, 0x00, 0x00, 0x9A, 0x1D, 0xDF, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0A, 0xD4, 0x62, 0x00, 0x00, 0x00, 0x00, 0x38, 0x9B, 0xD0, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x15, 0x17, 0xD3, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x11, 0x20, 0x76, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xBB, 0x3B, 0xF4, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xC3, 0x58, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0x2D, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xC2, 0x86, 0x98, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE6, 0x9C, 0xCF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xD0, 0xAD, 0x92, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x5F, 0xC8, 0x63, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xD6, 0xE6, 0x77, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x20, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xC9, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xC7, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0x6A, 0xE7, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x41, 0xB6, 0xDD, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x52, 0xE4, 0x67, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0xF5, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x26, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0x51, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x62, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6B, 0x42, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7C, 0x8E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0x35, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA1, 0x54, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0xC2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCD, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x6E, 0xE4, 0xC6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFC, 0xF3, 0x01, 0x56, 0x00, 0x00, 0xDB, 0x6B, 0xFF, 0xFF, 0x00, 0x00, 0x4C, 0x78, 0xEF, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x26, 0x77, 0xF3, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3D, 0xFF, 0xFF, 0x01, 0x79, 0x01, 0x79, 0x00, 0x00, 0xFF, 0xFF, 0x15, 0xFA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x86, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x53, 0x76, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6A, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x4C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8D, 0x2B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9C, 0xC2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA9, 0x26, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0x97, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCF, 0x16, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xE3, 0x9E, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x62, 0xF5, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0x45, 0x00, 0x00, 0x04, 0xAF, 0xFF, 0xFF, 0x0B, 0xB6, 0x00, 0x00, 0x0B, 0xB6, 0xFF, 0xFF, 0x0D, 0x1C, 0x00, 0x00, 0x0D, 0x1C, 0xFF, 0xFF, 0x0F, 0xE8, 0x00, 0x00, 0x0F, 0xE8, 0xFF, 0xFF, 0x11, 0xDE, 0x00, 0x00, 0x15, 0x41, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x63, 0x25, 0x49, 0xFF, 0xFF, 0x00, 0x00, 0x1D, 0xAB, 0x25, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x84, 0x2B, 0x04, 0xFF, 0xFF, 0x00, 0x00, 0x4A, 0xEF, 0x2A, 0xEF, 0xFF, 0xFF, 0x00, 0x00, 0x72, 0x66, 0x25, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0x93, 0xB5, 0x20, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xAE, 0x32, 0x16, 0x87, 0xFF, 0xFF, 0x00, 0x00, 0xC8, 0x93, 0x08, 0x94, 0xFF, 0xFF, 0x00, 0x00, 0xDE, 0xBD, 0x05, 0x3F, 0xFF, 0x7A, 0x00, 0x00, 0xF3, 0x9F, 0x04, 0xE0, 0xF1, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0x18, 0xE2, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xF1, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x76, 0x00, 0x00, 0x08, 0x3C, 0xFF, 0xFF, 0x0B, 0x1E, 0x00, 0x00, 0x0B, 0xB4, 0xFF, 0xFF, 0x0D, 0xA2, 0x00, 0x00, 0x0D, 0xA2, 0xFF, 0xFF, 0x13, 0x7D, 0x00, 0x00, 0x10, 0xEE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x24, 0x13, 0xFF, 0xFF, 0x00, 0x00, 0x19, 0xE3, 0x23, 0x8E, 0xFF, 0xFF, 0x00, 0x00, 0x26, 0x59, 0x2D, 0xA9, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0xBA, 0x2F, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0x36, 0x26, 0xB0, 0xFF, 0xFF, 0x00, 0x00, 0x9C, 0x0E, 0x1D, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0xFD, 0x0D, 0x22, 0xFF, 0xFF, 0x00, 0x00, 0xD4, 0x3B, 0x05, 0x8C, 0xFF, 0xFF, 0x00, 0x00, 0xEC, 0xA0, 0x02, 0xB0, 0xF4, 0x37, 0x00, 0x00, 0xFE, 0x04, 0x0A, 0x6A, 0xE3, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0x0D, 0xD1, 0xD2, 0x17, 0x00, 0x00, 0xFF, 0xFF, 0x0D, 0x8E, 0xFF, 0xFF, 0x21, 0xF9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0xD2, 0x00, 0x00, 0x0B, 0x6D, 0xFF, 0xFF, 0x0B, 0xB4, 0x00, 0x00, 0x0B, 0xB4, 0xFF, 0xFF, 0x0F, 0x64, 0x00, 0x00, 0x0E, 0xB5, 0xFF, 0xFF, 0x0B, 0x8C, 0x00, 0x00, 0x18, 0xDE, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0xF7, 0x22, 0xE5, 0xFF, 0xFF, 0x00, 0x00, 0x21, 0xD4, 0x2D, 0x76, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0x5F, 0x31, 0x6E, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0xEF, 0x27, 0x9F, 0xFF, 0xFF, 0x00, 0x00, 0xA2, 0x33, 0x1A, 0x1B, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0x7B, 0x06, 0xEB, 0xFF, 0xFF, 0x00, 0x00, 0xE4, 0xF9, 0x06, 0x07, 0xF8, 0x71, 0x00, 0x00, 0xFC, 0x05, 0x0A, 0x87, 0xE2, 0xD7, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0xF0, 0xCF, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0x25, 0xB0, 0xC7, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x65, 0xFF, 0xFF, 0x25, 0xDF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x21, 0xB5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xED, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0x01, 0x00, 0x00, 0x0B, 0x6C, 0xFF, 0xFF, 0x0C, 0x29, 0x00, 0x00, 0x0C, 0x29, 0xFF, 0xFF, 0x14, 0x1A, 0x00, 0x00, 0x0F, 0x2A, 0xFF, 0xFF, 0x00, 0x00, 0x0E, 0x48, 0x1A, 0xEF, 0xFF, 0xFF, 0x00, 0x00, 0x25, 0x51, 0x20, 0xB9, 0xFF, 0xFF, 0x16, 0x4F, 0x59, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x82, 0x3D, 0x0D, 0xED, 0xFA, 0x8E, 0x00, 0x00, 0xAB, 0xE2, 0x00, 0x00, 0xE3, 0x31, 0x00, 0x00, 0xC4, 0x97, 0x00, 0x00, 0xD8, 0xBF, 0x00, 0x00, 0xE1, 0xE2, 0x00, 0x00, 0xCE, 0x21, 0x00, 0x00, 0xFD, 0x1C, 0x00, 0x00, 0xC4, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0xC5, 0xA3, 0xD1, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x8A, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xC6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0x20, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x70, 0x00, 0x00, 0x08, 0x87, 0xFF, 0xFF, 0x09, 0x46, 0x00, 0x00, 0x08, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0x95, 0x0A, 0x3D, 0xFF, 0xFF, 0x00, 0x54, 0x33, 0xDE, 0x00, 0x00, 0xE6, 0x44, 0x00, 0x00, 0x52, 0x6C, 0x00, 0x00, 0xCF, 0xCE, 0x00, 0x00, 0x75, 0x6C, 0x00, 0x00, 0xC1, 0xB4, 0x00, 0x00, 0x99, 0x10, 0x00, 0x00, 0xB9, 0x1A, 0x00, 0x00, 0xBB, 0x19, 0x00, 0x00, 0xAD, 0x2F, 0x00, 0x00, 0xDA, 0xF3, 0x00, 0x00, 0x9A, 0x76, 0x00, 0x00, 0xF3, 0x62, 0x00, 0x00, 0x8D, 0xD4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x71, 0x26, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x5F, 0xCB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0x30, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0xED, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x28, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0xF5, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xEF, 0x09, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xAB, 0x00, 0x00, 0x05, 0x78, 0x00, 0x00, 0xC9, 0x57, 0x00, 0x00, 0x24, 0xC9, 0x00, 0x00, 0xB4, 0x22, 0x00, 0x00, 0x45, 0x2E, 0x00, 0x00, 0x9E, 0x67, 0x00, 0x00, 0x60, 0x82, 0x00, 0x00, 0x92, 0x85, 0x00, 0x00, 0x84, 0xE8, 0x00, 0x00, 0x86, 0x23, 0x00, 0x00, 0xAE, 0x9D, 0x00, 0x00, 0x7A, 0x62, 0x00, 0x00, 0xD7, 0xFC, 0x00, 0x00, 0x64, 0x2D, 0x00, 0x00, 0xF2, 0xE8, 0x00, 0x00, 0x4E, 0x73, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0x73, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x3B, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x4E, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0x75, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0x11, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0x38, 0x00, 0x00, 0x00, 0x00, 0xE6, 0xEA, 0x20, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x89, 0x0C, 0x67, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x93, 0x00, 0x00, 0x14, 0xBD, 0x00, 0x00, 0x6F, 0xB1, 0x00, 0x00, 0x2D, 0xA6, 0x00, 0x00, 0x5C, 0xA8, 0x00, 0x00, 0x42, 0x33, 0x00, 0x00, 0x52, 0xA8, 0x00, 0x00, 0x64, 0x7C, 0x00, 0x00, 0x4B, 0xE7, 0x00, 0x00, 0xA1, 0x66, 0x00, 0x00, 0x3D, 0xC2, 0x00, 0x00, 0xC7, 0x64, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, 0xEB, 0x33, 0x00, 0x00, 0x22, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1D, 0xEE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0xA5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0x96, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0x32, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x51, 0x5C, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x9B, 0x45, 0x97, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x39, 0x32, 0x63, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xC8, 0x20, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x37, 0x13, 0x86, 0x00, 0x00, 0x00, 0x00, 0x55, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xF4, 0x00, 0x00, 0x13, 0x9F, 0x00, 0x00, 0x2A, 0x46, 0x00, 0x00, 0x2F, 0x87, 0x00, 0x00, 0x26, 0x55, 0x00, 0x00, 0x5F, 0xA4, 0x00, 0x00, 0x1D, 0x34, 0x00, 0x00, 0xA1, 0x9E, 0x00, 0x00, 0x12, 0x61, 0x00, 0x00, 0xD8, 0xC3, 0x04, 0x76, 0x0A, 0x0D, 0x00, 0x00, 0xF6, 0x51, 0x04, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x54, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x50, 0xFF, 0xFF, 0x88, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0x27, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x46, 0x71, 0xE7, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x82, 0x5C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x03, 0x44, 0x74, 0x00, 0x00, 0x00, 0x00, 0x74, 0x50, 0x33, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x92, 0x1F, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x28, 0xBA, 0x0E, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x00, 0x00, 0x0B, 0x4F, 0x2F, 0x0C, 0x0A, 0xC9, 0x00, 0x00, 0x11, 0xC6, 0x5B, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x11, 0x71, 0x94, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA6, 0xC7, 0x65, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x59, 0xF4, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFD, 0x46, 0x9E, 0x2A, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x08, 0xA1, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x8B, 0x89, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x3D, 0x6D, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x76, 0xD5, 0x55, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x70, 0x3E, 0x66, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x95, 0x2E, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x03, 0xD7, 0x2D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x20, 0x07, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x19, 0xA1, 0x2B, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xDB, 0x5B, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x16, 0x74, 0x87, 0x85, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xEE, 0xBE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x13, 0x72, 0xED, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x15, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0x2F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xFF, 0xFF, 0x00, 0x00, 0xE9, 0x6D, 0xAD, 0xC6, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xBE, 0xB2, 0x13, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xE0, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5F, 0x78, 0x79, 0x00, 0x00, 0x00, 0x00, 0x56, 0x89, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x36, 0x53, 0x61, 0x00, 0x00, 0x00, 0x00, 0x04, 0x63, 0x51, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x6D, 0x03, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x35, 0x5B, 0x14, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x9E, 0x3B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x4D, 0x61, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x26, 0xF6, 0x86, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x2A, 0xBC, 0x32, 0x00, 0x00, 0x00, 0x00, 0x25, 0xAB, 0xCE, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x20, 0x48, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x14, 0x6A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0x5D, 0xBC, 0xEF, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xDA, 0xB9, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xB4, 0x9D, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x60, 0xA1, 0x86, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x35, 0xAA, 0x7A, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xC3, 0x77, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x8B, 0x0E, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x55, 0xF6, 0x24, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x1B, 0x3F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x47, 0x17, 0x6B, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x44, 0xE0, 0x73, 0x37, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0xB6, 0x58, 0x00, 0x00, 0x00, 0x00, 0x42, 0x95, 0xC8, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x37, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0x72, 0xFF, 0xFF, 0x00, 0x00, 0xC5, 0xBA, 0xC8, 0x66, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x3B, 0xBD, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x74, 0xA9, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x43, 0x58, 0xA0, 0x97, 0x00, 0x00, 0x00, 0x00, 0x16, 0xCC, 0x9B, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xD6, 0x13, 0x90, 0x00, 0x00, 0x00, 0x00, 0x91, 0x8B, 0x2D, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x90, 0xED, 0x33, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x31, 0x54, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x78, 0xC7, 0x78, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x95, 0x9F, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x76, 0xC9, 0xA8, 0x41, 0x00, 0x00, 0x00, 0x00, 0x74, 0xC5, 0xEF, 0x82, 0x00, 0x00, 0x00, 0x00, 0x74, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x42, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0xAD, 0x60, 0xD2, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x22, 0xC4, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x6F, 0xBA, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x25, 0x72, 0xB7, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xA5, 0x0C, 0xC3, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xE9, 0x2A, 0xBC, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xD7, 0x43, 0xD9, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x44, 0x59, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x6A, 0x65, 0x89, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xD1, 0x70, 0xE2, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xEC, 0x99, 0xB9, 0x00, 0x00, 0x00, 0x00, 0xB1, 0x86, 0xB3, 0xD5, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x8D, 0xCD, 0x46, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x75, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x93, 0xA8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6F, 0xDA, 0xFF, 0xFF, 0x00, 0x00, 0x8F, 0x78, 0xDC, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x97, 0xD0, 0x83, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xCB, 0xCC, 0x54, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x58, 0xCD, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x8A, 0x07, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x22, 0x28, 0x2A, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x7F, 0x45, 0x4A, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x42, 0x57, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xF6, 0x13, 0x64, 0x9C, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xD6, 0x86, 0x54, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x70, 0x98, 0x92, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x24, 0xA8, 0x67, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xAB, 0xC1, 0x9F, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x03, 0xD4, 0xEA, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x67, 0xFA, 0x16, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x67, 0xFF, 0xFF, 0x00, 0x00, 0x69, 0x50, 0xE5, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x38, 0x5B, 0xDA, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x16, 0x61, 0xDD, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0x56, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x54, 0xB5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0xAC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x95, 0x7B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xB9, 0xA2, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB4, 0xB2, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xD4, 0xC9, 0x3A, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xF8, 0xDB, 0xB3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF8, 0x40, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xEC, 0xFF, 0xFF, 0x00, 0x00, 0x43, 0xDE, 0xEC, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0xF0, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xFF, 0xFF, 0x02, 0xC8, 0x06, 0x16, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0x84, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x36, 0x64, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x49, 0xFB, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0x97, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6F, 0x50, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0x20, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC9, 0x9E, 0x34, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x47, 0xA9, 0x89, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x6B, 0xB9, 0x14, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x41, 0xCA, 0xE5, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x06, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x51, 0xF3, 0xA5, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0xFB, 0x00, 0x00, 0x00, 0x29, 0xFF, 0xFF, 0x04, 0xFC, 0x00, 0x00, 0x04, 0xFC, 0xFF, 0xFF, 0x05, 0x79, 0x00, 0x00, 0x05, 0x79, 0xFF, 0xFF, 0x07, 0x4A, 0x00, 0x00, 0x07, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xC4, 0x0E, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0x94, 0x11, 0x94, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x18, 0x32, 0xFF, 0xFF, 0x09, 0x65, 0x3F, 0x30, 0x09, 0x65, 0xFF, 0xFF, 0x16, 0xC1, 0x58, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x1C, 0x75, 0x42, 0x15, 0x43, 0xFF, 0xFF, 0x00, 0x00, 0x92, 0x64, 0x1B, 0x56, 0xFF, 0xFF, 0x00, 0x00, 0xAC, 0x57, 0x16, 0xB1, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0x7F, 0x0D, 0xB7, 0xFF, 0xFF, 0x00, 0x00, 0xDC, 0x9B, 0x09, 0x88, 0xF7, 0x20, 0x00, 0x00, 0xF2, 0x0C, 0x09, 0xD0, 0xE5, 0x96, 0x00, 0x00, 0xFC, 0xE7, 0x0E, 0xF4, 0xD7, 0x67, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xFB, 0xFF, 0xFF, 0x12, 0x78, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0x57, 0x00, 0x00, 0x02, 0x1C, 0xFF, 0xFF, 0x04, 0x6A, 0x00, 0x00, 0x04, 0x6A, 0xFF, 0xFF, 0x05, 0x71, 0x00, 0x00, 0x05, 0x71, 0xFF, 0xFF, 0x01, 0xDE, 0x00, 0x00, 0x0B, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x0E, 0x9D, 0x0E, 0x9D, 0xFF, 0xFF, 0x00, 0x00, 0x1D, 0x7E, 0x15, 0xDC, 0xFF, 0xFF, 0x08, 0xEB, 0x3D, 0x48, 0x08, 0xEB, 0xFF, 0xFF, 0x15, 0xA0, 0x58, 0xCB, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x77, 0xFA, 0x17, 0xFA, 0xFF, 0xFF, 0x00, 0x00, 0x99, 0x6F, 0x19, 0x70, 0xFF, 0xFF, 0x00, 0x00, 0xB5, 0xFF, 0x12, 0x79, 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0xD4, 0x0D, 0x1D, 0xF8, 0xCA, 0x00, 0x00, 0xEA, 0x8D, 0x0A, 0xA9, 0xE7, 0x97, 0x00, 0x00, 0xFA, 0x5F, 0x0E, 0x87, 0xD7, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0x12, 0x6D, 0xC5, 0x5F, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0x5B, 0xFF, 0xFF, 0x18, 0x84, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0x9B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0x01, 0x00, 0x00, 0x03, 0x7E, 0xFF, 0xFF, 0x03, 0xFE, 0x00, 0x00, 0x03, 0xFE, 0xFF, 0xFF, 0x05, 0xF3, 0x00, 0x00, 0x05, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x09, 0xBD, 0x0B, 0x92, 0xFF, 0xFF, 0x00, 0x00, 0x18, 0xC6, 0x13, 0x79, 0xFF, 0xFF, 0x08, 0x72, 0x3A, 0xBC, 0x08, 0x72, 0xFF, 0xFF, 0x14, 0xAD, 0x59, 0x3D, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7B, 0x1B, 0x1B, 0x1B, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0xE0, 0x15, 0xAC, 0xFF, 0xFF, 0x00, 0x00, 0xBF, 0x69, 0x0C, 0x4F, 0xFC, 0xE1, 0x00, 0x00, 0xDF, 0xBB, 0x0B, 0xD4, 0xEA, 0x3B, 0x00, 0x00, 0xF7, 0xE1, 0x0D, 0xD2, 0xD5, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0x0D, 0xBF, 0xF4, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0xE0, 0xA3, 0x85, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x37, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0xF9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0xB4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x6D, 0x00, 0x00, 0x03, 0x6D, 0xFF, 0xFF, 0x03, 0xC3, 0x00, 0x00, 0x03, 0xC3, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x5F, 0x09, 0x14, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0x29, 0x0C, 0x7B, 0xFF, 0xFF, 0x02, 0xEC, 0x36, 0xC7, 0x02, 0xEC, 0xFF, 0xFF, 0x03, 0x1A, 0x55, 0xFF, 0x00, 0x00, 0xFB, 0xE8, 0x00, 0x00, 0x7D, 0x5D, 0x05, 0x08, 0xE5, 0x70, 0x00, 0x00, 0xA0, 0x2C, 0x03, 0x8C, 0xD6, 0x4F, 0x00, 0x00, 0xB9, 0x41, 0x00, 0x00, 0xC9, 0x08, 0x00, 0x00, 0xD7, 0x63, 0x00, 0x00, 0xBC, 0x7D, 0x00, 0x00, 0xF3, 0x32, 0x00, 0x00, 0xB3, 0xE4, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0x9F, 0x93, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0x24, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0x4A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0xF3, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xA2, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x94, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x48, 0x02, 0x1D, 0xFF, 0xFF, 0x00, 0x00, 0x17, 0xCE, 0x00, 0x00, 0xE9, 0x32, 0x00, 0x00, 0x2D, 0xAF, 0x00, 0x00, 0xD4, 0x8D, 0x00, 0x00, 0x4A, 0x22, 0x00, 0x00, 0xC3, 0x73, 0x00, 0x00, 0x68, 0x98, 0x00, 0x00, 0xB0, 0x58, 0x00, 0x00, 0x86, 0xEA, 0x00, 0x00, 0xA4, 0x0B, 0x00, 0x00, 0xA8, 0xB2, 0x00, 0x00, 0x92, 0x58, 0x00, 0x00, 0xC9, 0xFA, 0x00, 0x00, 0x83, 0x03, 0x00, 0x00, 0xEA, 0xC8, 0x00, 0x00, 0x76, 0x4A, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x5D, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x4E, 0xB5, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0xA5, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x29, 0xE9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xBA, 0x0E, 0xE5, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x19, 0x00, 0x00, 0x06, 0x2C, 0x00, 0x00, 0xB8, 0x4D, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0xA2, 0xAE, 0x00, 0x00, 0x38, 0x49, 0x00, 0x00, 0x89, 0x8F, 0x00, 0x00, 0x50, 0x69, 0x00, 0x00, 0x76, 0x38, 0x00, 0x00, 0x6E, 0x8F, 0x00, 0x00, 0x67, 0xB3, 0x00, 0x00, 0x99, 0x70, 0x00, 0x00, 0x5C, 0x53, 0x00, 0x00, 0xC3, 0x08, 0x00, 0x00, 0x4D, 0x6F, 0x00, 0x00, 0xE4, 0x9F, 0x00, 0x00, 0x3E, 0xBD, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x33, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2C, 0xD2, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x48, 0xDC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0xB9, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xD3, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xF3, 0x2A, 0x75, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xDC, 0x1C, 0x18, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xD5, 0x0A, 0x33, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xE5, 0x01, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x81, 0xEC, 0x00, 0x00, 0x0E, 0x3C, 0x00, 0x00, 0x66, 0x12, 0x00, 0x00, 0x22, 0xCA, 0x00, 0x00, 0x50, 0xC3, 0x00, 0x00, 0x38, 0x88, 0x00, 0x00, 0x3F, 0xAF, 0x00, 0x00, 0x5A, 0xDD, 0x00, 0x00, 0x35, 0xE3, 0x00, 0x00, 0x94, 0x2F, 0x00, 0x00, 0x29, 0x37, 0x00, 0x00, 0xBC, 0x17, 0x00, 0x00, 0x21, 0x57, 0x00, 0x00, 0xE1, 0x7D, 0x00, 0x00, 0x18, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x10, 0x24, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xE4, 0x4D, 0xA7, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x45, 0x3F, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xD3, 0x2C, 0x27, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x96, 0x1F, 0x21, 0x00, 0x00, 0x00, 0x00, 0x6F, 0xB6, 0x0E, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x39, 0x04, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x31, 0x43, 0x00, 0x00, 0x0E, 0x05, 0x00, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x2A, 0x81, 0x00, 0x00, 0x11, 0xDA, 0x00, 0x00, 0x59, 0x6E, 0x00, 0x00, 0x08, 0x2F, 0x00, 0x00, 0x8F, 0xC4, 0x00, 0x00, 0x00, 0xD8, 0x00, 0x00, 0xC0, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xED, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFC, 0x80, 0x7D, 0x15, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x1B, 0x7D, 0x7D, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x75, 0x68, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x3B, 0x52, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x8D, 0xD3, 0x3C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x67, 0x53, 0x2B, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x45, 0x51, 0x19, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x23, 0x24, 0x0A, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF3, 0x9A, 0x96, 0x04, 0x00, 0x00, 0x00, 0x00, 0xE5, 0xCF, 0x96, 0x93, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x81, 0x35, 0x00, 0x00, 0x00, 0x00, 0x97, 0xE0, 0x63, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x73, 0x4C, 0x73, 0x00, 0x00, 0x00, 0x00, 0x46, 0xD8, 0x36, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x23, 0x52, 0x27, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xE7, 0x13, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8F, 0x2D, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x4F, 0x23, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xB0, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDF, 0x44, 0xA7, 0xB4, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x27, 0xA9, 0x58, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x12, 0x8D, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x78, 0x6A, 0x70, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x94, 0x59, 0x58, 0x00, 0x00, 0x00, 0x00, 0x28, 0xC0, 0x4B, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5C, 0x04, 0x95, 0x00, 0x00, 0x00, 0x00, 0x25, 0x27, 0x14, 0x82, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEF, 0x38, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x56, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x30, 0xB0, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x12, 0xC2, 0xC9, 0x21, 0x00, 0x00, 0x00, 0x00, 0x13, 0x3D, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xAB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x04, 0x7B, 0xFF, 0xFF, 0x00, 0x00, 0xD1, 0xCC, 0xB8, 0x27, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x63, 0xB3, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x87, 0x8B, 0x97, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x33, 0x80, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x30, 0x58, 0x73, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x07, 0x28, 0x6C, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xA1, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x00, 0x53, 0x23, 0x0F, 0x9B, 0x00, 0x00, 0x00, 0x00, 0x46, 0x2E, 0x2B, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x69, 0x47, 0x50, 0x00, 0x00, 0x00, 0x00, 0x35, 0xA3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xD3, 0x78, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x72, 0xAD, 0x36, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x22, 0xC5, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xCC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x24, 0x73, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x16, 0xA2, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0xAB, 0xC5, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x23, 0xBB, 0x12, 0x00, 0x00, 0x00, 0x00, 0x68, 0x75, 0xA6, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x29, 0x9B, 0x47, 0x00, 0x00, 0x00, 0x00, 0x12, 0xE4, 0x94, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x7C, 0x02, 0x59, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xE8, 0x0C, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x86, 0x6E, 0x26, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3E, 0x2F, 0x72, 0x00, 0x00, 0x00, 0x00, 0x71, 0x91, 0x4F, 0x59, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x3C, 0x72, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xF4, 0x8E, 0x73, 0x00, 0x00, 0x00, 0x00, 0x64, 0x2F, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xCD, 0xCF, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x64, 0xC3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x30, 0xCA, 0xFF, 0xFF, 0x00, 0x00, 0xA7, 0x7F, 0xD0, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1F, 0xC4, 0x34, 0x00, 0x00, 0x00, 0x00, 0x49, 0xF7, 0xB8, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x21, 0x50, 0xB4, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x6E, 0x12, 0x8E, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x0D, 0x2C, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x06, 0x44, 0x23, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x82, 0x52, 0x82, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xFD, 0x65, 0xA2, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x12, 0x73, 0x4E, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xB4, 0x97, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xC2, 0xB1, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xAC, 0xC9, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xB0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x65, 0x82, 0xFF, 0xFF, 0x00, 0x00, 0x89, 0xF0, 0xDC, 0x33, 0x00, 0x00, 0x00, 0x00, 0x58, 0x06, 0xD0, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x2A, 0xCB, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x2A, 0xCC, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xBC, 0x0C, 0xDE, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x39, 0x2A, 0x79, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x51, 0x42, 0x51, 0x00, 0x00, 0x00, 0x00, 0xE9, 0x66, 0x58, 0x9B, 0x00, 0x00, 0x00, 0x00, 0xEA, 0xD7, 0x66, 0x38, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xC3, 0x83, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x44, 0x95, 0x80, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xBE, 0xAA, 0xC7, 0x00, 0x00, 0x00, 0x00, 0xDD, 0xB0, 0xBD, 0xB0, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x69, 0xCF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x98, 0xF2, 0x97, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x22, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x97, 0x2B, 0xFF, 0xFF, 0x00, 0x00, 0x64, 0xAB, 0xE4, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x36, 0xE5, 0xDC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x15, 0x5C, 0xDF, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x71, 0x05, 0x7A, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x56, 0x26, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x43, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x55, 0x25, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0x5D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0x6C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x05, 0x96, 0x4D, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xB4, 0xA3, 0x8C, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x5A, 0xB4, 0x8E, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFE, 0xC7, 0x06, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1E, 0xD8, 0xB9, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x93, 0xF1, 0x6A, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x78, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0xA7, 0xED, 0x96, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x55, 0xF1, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xFF, 0xFF, 0x04, 0x80, 0x05, 0xC9, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x60, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0xC4, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x59, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x70, 0xD7, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0x77, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x71, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x6D, 0x9E, 0x6E, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x8E, 0xA9, 0xD4, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x4B, 0xB8, 0xA7, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xAE, 0xC8, 0xB4, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x24, 0xD8, 0x51, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x75, 0xEE, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x5B, 0x00, 0x89, 0x00, 0xB7, 0x00, 0xE5, 0x01, 0x12, 0x01, 0x40, 0x01, 0x6E, 0x01, 0x9B, 0x01, 0xC9, 0x01, 0xF7, 0x02, 0x25, 0x02, 0x52, 0x02, 0x80, 0x02, 0xAE, 0x02, 0xDC, 0x03, 0x09, 0x03, 0x37, 0x03, 0x65, 0x03, 0x93, 0x03, 0xC1, 0x03, 0xEE, 0x04, 0x1C, 0x04, 0x4A, 0x04, 0x78, 0x04, 0xA6, 0x04, 0xD4, 0x05, 0x01, 0x05, 0x2F, 0x05, 0x5D, 0x05, 0x8B, 0x05, 0xB9, 0x05, 0xE7, 0x06, 0x14, 0x06, 0x42, 0x06, 0x70, 0x06, 0x9E, 0x06, 0xCC, 0x06, 0xFA, 0x07, 0x28, 0x07, 0x56, 0x07, 0x83, 0x07, 0xB1, 0x07, 0xDF, 0x08, 0x0D, 0x08, 0x3B, 0x08, 0x69, 0x08, 0x97, 0x08, 0xC5, 0x08, 0xF3, 0x09, 0x21, 0x09, 0x4F, 0x09, 0x7D, 0x09, 0xAB, 0x09, 0xD9, 0x0A, 0x07, 0x0A, 0x35, 0x0A, 0x63, 0x0A, 0x91, 0x0A, 0xBF, 0x0A, 0xED, 0x0B, 0x1B, 0x0B, 0x49, 0x0B, 0x77, 0x0B, 0xA5, 0x0B, 0xD3, 0x0C, 0x01, 0x0C, 0x2F, 0x0C, 0x5D, 0x0C, 0x8B, 0x0C, 0xB9, 0x0C, 0xE7, 0x0D, 0x15, 0x0D, 0x43, 0x0D, 0x71, 0x0D, 0x9F, 0x0D, 0xCD, 0x0D, 0xFB, 0x0E, 0x29, 0x0E, 0x58, 0x0E, 0x86, 0x0E, 0xB4, 0x0E, 0xE2, 0x0F, 0x10, 0x0F, 0x3E, 0x0F, 0x6C, 0x0F, 0x9A, 0x0F, 0xC8, 0x0F, 0xF7, 0x10, 0x25, 0x10, 0x53, 0x10, 0x81, 0x10, 0xAF, 0x10, 0xDD, 0x11, 0x0C, 0x11, 0x3A, 0x11, 0x68, 0x11, 0x96, 0x11, 0xC4, 0x11, 0xF2, 0x12, 0x21, 0x12, 0x4F, 0x12, 0x7D, 0x12, 0xAB, 0x12, 0xD9, 0x13, 0x08, 0x13, 0x36, 0x13, 0x64, 0x13, 0x92, 0x13, 0xC0, 0x13, 0xEF, 0x14, 0x1D, 0x14, 0x4B, 0x14, 0x79, 0x14, 0xA8, 0x14, 0xD6, 0x15, 0x04, 0x15, 0x32, 0x15, 0x61, 0x15, 0x8F, 0x15, 0xBD, 0x15, 0xEB, 0x16, 0x1A, 0x16, 0x48, 0x16, 0x76, 0x16, 0xA5, 0x16, 0xD3, 0x17, 0x04, 0x17, 0x41, 0x17, 0x80, 0x17, 0xBE, 0x17, 0xFD, 0x18, 0x3B, 0x18, 0x79, 0x18, 0xB8, 0x18, 0xF6, 0x19, 0x34, 0x19, 0x73, 0x19, 0xB1, 0x19, 0xF0, 0x1A, 0x2E, 0x1A, 0x6D, 0x1A, 0xAB, 0x1A, 0xEA, 0x1B, 0x28, 0x1B, 0x67, 0x1B, 0xA5, 0x1B, 0xE4, 0x1C, 0x22, 0x1C, 0x61, 0x1C, 0x9F, 0x1C, 0xDE, 0x1D, 0x1C, 0x1D, 0x5B, 0x1D, 0x99, 0x1D, 0xD8, 0x1E, 0x16, 0x1E, 0x55, 0x1E, 0x93, 0x1E, 0xD2, 0x1F, 0x11, 0x1F, 0x4F, 0x1F, 0x8E, 0x1F, 0xCD, 0x20, 0x0B, 0x20, 0x4A, 0x20, 0x89, 0x20, 0xC7, 0x21, 0x06, 0x21, 0x45, 0x21, 0x84, 0x21, 0xC2, 0x22, 0x01, 0x22, 0x40, 0x22, 0x7F, 0x22, 0xBE, 0x22, 0xFC, 0x23, 0x3B, 0x23, 0x7A, 0x23, 0xB9, 0x23, 0xF8, 0x24, 0x37, 0x24, 0x76, 0x24, 0xB5, 0x24, 0xF4, 0x25, 0x33, 0x25, 0x72, 0x25, 0xB1, 0x25, 0xF0, 0x26, 0x2F, 0x26, 0x6E, 0x26, 0xAD, 0x26, 0xEC, 0x27, 0x2B, 0x27, 0x6A, 0x27, 0xA9, 0x27, 0xE8, 0x28, 0x28, 0x28, 0x67, 0x28, 0xA6, 0x28, 0xE5, 0x29, 0x24, 0x29, 0x64, 0x29, 0xA3, 0x29, 0xE2, 0x2A, 0x22, 0x2A, 0x61, 0x2A, 0xA0, 0x2A, 0xE0, 0x2B, 0x1F, 0x2B, 0x5E, 0x2B, 0x9E, 0x2B, 0xDD, 0x2C, 0x1D, 0x2C, 0x5C, 0x2C, 0x9C, 0x2C, 0xDB, 0x2D, 0x1B, 0x2D, 0x5B, 0x2D, 0x9A, 0x2D, 0xDA, 0x2E, 0x19, 0x2E, 0x59, 0x2E, 0x99, 0x2E, 0xD8, 0x2F, 0x18, 0x2F, 0x58, 0x2F, 0x98, 0x2F, 0xD7, 0x30, 0x17, 0x30, 0x57, 0x30, 0x97, 0x30, 0xD7, 0x31, 0x16, 0x31, 0x56, 0x31, 0x96, 0x31, 0xD6, 0x32, 0x16, 0x32, 0x56, 0x32, 0x96, 0x32, 0xD6, 0x33, 0x16, 0x33, 0x56, 0x33, 0x96, 0x33, 0xD7, 0x34, 0x17, 0x34, 0x57, 0x34, 0x97, 0x34, 0xD7, 0x35, 0x18, 0x35, 0x58, 0x35, 0x98, 0x35, 0xD8, 0x36, 0x19, 0x36, 0x59, 0x36, 0x9B, 0x36, 0xE2, 0x37, 0x29, 0x37, 0x70, 0x37, 0xB7, 0x37, 0xFE, 0x38, 0x45, 0x38, 0x8C, 0x38, 0xD3, 0x39, 0x1A, 0x39, 0x61, 0x39, 0xA8, 0x39, 0xEF, 0x3A, 0x37, 0x3A, 0x7E, 0x3A, 0xC5, 0x3B, 0x0D, 0x3B, 0x54, 0x3B, 0x9B, 0x3B, 0xE3, 0x3C, 0x2A, 0x3C, 0x72, 0x3C, 0xBA, 0x3D, 0x01, 0x3D, 0x49, 0x3D, 0x90, 0x3D, 0xD8, 0x3E, 0x20, 0x3E, 0x68, 0x3E, 0xAF, 0x3E, 0xF7, 0x3F, 0x3F, 0x3F, 0x87, 0x3F, 0xCF, 0x40, 0x17, 0x40, 0x5F, 0x40, 0xA7, 0x40, 0xEF, 0x41, 0x38, 0x41, 0x80, 0x41, 0xC8, 0x42, 0x10, 0x42, 0x59, 0x42, 0xA1, 0x42, 0xE9, 0x43, 0x32, 0x43, 0x7A, 0x43, 0xC3, 0x44, 0x0B, 0x44, 0x54, 0x44, 0x9D, 0x44, 0xE5, 0x45, 0x2E, 0x45, 0x77, 0x45, 0xBF, 0x46, 0x08, 0x46, 0x51, 0x46, 0x9A, 0x46, 0xE3, 0x47, 0x2C, 0x47, 0x75, 0x47, 0xBE, 0x48, 0x07, 0x48, 0x50, 0x48, 0x99, 0x48, 0xE3, 0x49, 0x2C, 0x49, 0x75, 0x49, 0xBE, 0x4A, 0x08, 0x4A, 0x51, 0x4A, 0x9B, 0x4A, 0xE4, 0x4B, 0x2D, 0x4B, 0x77, 0x4B, 0xC1, 0x4C, 0x0A, 0x4C, 0x54, 0x4C, 0x9D, 0x4C, 0xE7, 0x4D, 0x31, 0x4D, 0x7B, 0x4D, 0xC5, 0x4E, 0x0E, 0x4E, 0x58, 0x4E, 0xA2, 0x4E, 0xEC, 0x4F, 0x36, 0x4F, 0x80, 0x4F, 0xCA, 0x50, 0x15, 0x50, 0x5F, 0x50, 0xA9, 0x50, 0xF3, 0x51, 0x3E, 0x51, 0x88, 0x51, 0xD2, 0x52, 0x1D, 0x52, 0x67, 0x52, 0xB2, 0x52, 0xFC, 0x53, 0x47, 0x53, 0x91, 0x53, 0xDC, 0x54, 0x26, 0x54, 0x71, 0x54, 0xBC, 0x55, 0x06, 0x55, 0x51, 0x55, 0x9C, 0x55, 0xE6, 0x56, 0x31, 0x56, 0x7B, 0x56, 0xC6, 0x57, 0x11, 0x57, 0x5B, 0x57, 0xA6, 0x57, 0xF1, 0x58, 0x3B, 0x58, 0x86, 0x58, 0xD1, 0x59, 0x1B, 0x59, 0x66, 0x59, 0xB1, 0x59, 0xFB, 0x5A, 0x46, 0x5A, 0x91, 0x5A, 0xDB, 0x5B, 0x24, 0x5B, 0x67, 0x5B, 0xAB, 0x5B, 0xEF, 0x5C, 0x33, 0x5C, 0x77, 0x5C, 0xBB, 0x5C, 0xFF, 0x5D, 0x43, 0x5D, 0x87, 0x5D, 0xCB, 0x5E, 0x0F, 0x5E, 0x53, 0x5E, 0x97, 0x5E, 0xDB, 0x5F, 0x1F, 0x5F, 0x63, 0x5F, 0xA7, 0x5F, 0xEB, 0x60, 0x2F, 0x60, 0x73, 0x60, 0xB7, 0x60, 0xFB, 0x61, 0x3F, 0x61, 0x84, 0x61, 0xC8, 0x62, 0x0C, 0x62, 0x50, 0x62, 0x94, 0x62, 0xD8, 0x63, 0x1C, 0x63, 0x61, 0x63, 0xA5, 0x63, 0xE9, 0x64, 0x2D, 0x64, 0x71, 0x64, 0xB6, 0x64, 0xFA, 0x65, 0x3E, 0x65, 0x82, 0x65, 0xC7, 0x66, 0x0B, 0x66, 0x4F, 0x66, 0x93, 0x66, 0xD8, 0x67, 0x1C, 0x67, 0x60, 0x67, 0xA5, 0x67, 0xE9, 0x68, 0x2D, 0x68, 0x71, 0x68, 0xB6, 0x68, 0xFA, 0x69, 0x3E, 0x69, 0x82, 0x69, 0xC7, 0x6A, 0x0B, 0x6A, 0x4F, 0x6A, 0x93, 0x6A, 0xD8, 0x6B, 0x1C, 0x6B, 0x60, 0x6B, 0xA4, 0x6B, 0xE8, 0x6C, 0x2D, 0x6C, 0x71, 0x6C, 0xB5, 0x6C, 0xF9, 0x6D, 0x3E, 0x6D, 0x82, 0x6D, 0xC6, 0x6E, 0x0A, 0x6E, 0x4F, 0x6E, 0x93, 0x6E, 0xD7, 0x6F, 0x1B, 0x6F, 0x5F, 0x6F, 0xA4, 0x6F, 0xE8, 0x70, 0x2C, 0x70, 0x70, 0x70, 0xB5, 0x70, 0xF9, 0x71, 0x3D, 0x71, 0x81, 0x71, 0xC5, 0x72, 0x0A, 0x72, 0x4E, 0x72, 0x92, 0x72, 0xD6, 0x73, 0x1B, 0x73, 0x5F, 0x73, 0xA3, 0x73, 0xE7, 0x74, 0x2C, 0x74, 0x70, 0x74, 0xB4, 0x74, 0xF9, 0x75, 0x3D, 0x75, 0x81, 0x75, 0xC5, 0x76, 0x0A, 0x76, 0x4E, 0x76, 0x92, 0x76, 0xD7, 0x77, 0x1B, 0x77, 0x5F, 0x77, 0xA3, 0x77, 0xE8, 0x78, 0x2C, 0x78, 0x70, 0x78, 0xB5, 0x78, 0xF9, 0x79, 0x3D, 0x79, 0x81, 0x79, 0xC6, 0x7A, 0x0A, 0x7A, 0x4E, 0x7A, 0x93, 0x7A, 0xD7, 0x7B, 0x1B, 0x7B, 0x60, 0x7B, 0xA4, 0x7B, 0xE8, 0x7C, 0x2D, 0x7C, 0x71, 0x7C, 0xB5, 0x7C, 0xFA, 0x7D, 0x3D, 0x7D, 0x81, 0x7D, 0xC4, 0x7E, 0x07, 0x7E, 0x4B, 0x7E, 0x8E, 0x7E, 0xD1, 0x7F, 0x14, 0x7F, 0x58, 0x7F, 0x9B, 0x7F, 0xDE, 0x80, 0x22, 0x80, 0x65, 0x80, 0xA8, 0x80, 0xEB, 0x81, 0x2E, 0x81, 0x72, 0x81, 0xB5, 0x81, 0xF8, 0x82, 0x3B, 0x82, 0x7E, 0x82, 0xC1, 0x83, 0x04, 0x83, 0x47, 0x83, 0x8A, 0x83, 0xCD, 0x84, 0x0F, 0x84, 0x52, 0x84, 0x95, 0x84, 0xD8, 0x85, 0x1B, 0x85, 0x5E, 0x85, 0xA0, 0x85, 0xE3, 0x86, 0x26, 0x86, 0x68, 0x86, 0xAB, 0x86, 0xEE, 0x87, 0x30, 0x87, 0x73, 0x87, 0xB5, 0x87, 0xF8, 0x88, 0x3A, 0x88, 0x7D, 0x88, 0xBF, 0x89, 0x02, 0x89, 0x44, 0x89, 0x86, 0x89, 0xC9, 0x8A, 0x0B, 0x8A, 0x4D, 0x8A, 0x8F, 0x8A, 0xD2, 0x8B, 0x14, 0x8B, 0x56, 0x8B, 0x98, 0x8B, 0xDA, 0x8C, 0x1C, 0x8C, 0x5F, 0x8C, 0xA1, 0x8C, 0xE3, 0x8D, 0x25, 0x8D, 0x67, 0x8D, 0xA9, 0x8D, 0xEB, 0x8E, 0x2D, 0x8E, 0x6E, 0x8E, 0xB0, 0x8E, 0xF2, 0x8F, 0x34, 0x8F, 0x76, 0x8F, 0xB8, 0x8F, 0xF9, 0x90, 0x3B, 0x90, 0x7D, 0x90, 0xBE, 0x91, 0x00, 0x91, 0x42, 0x91, 0x83, 0x91, 0xC5, 0x92, 0x06, 0x92, 0x48, 0x92, 0x89, 0x92, 0xCB, 0x93, 0x0C, 0x93, 0x4D, 0x93, 0x8F, 0x93, 0xD0, 0x94, 0x11, 0x94, 0x53, 0x94, 0x94, 0x94, 0xD5, 0x95, 0x16, 0x95, 0x58, 0x95, 0x99, 0x95, 0xDA, 0x96, 0x1B, 0x96, 0x5C, 0x96, 0x9D, 0x96, 0xDE, 0x97, 0x1F, 0x97, 0x60, 0x97, 0xA1, 0x97, 0xE2, 0x98, 0x22, 0x98, 0x63, 0x98, 0xA4, 0x98, 0xE5, 0x99, 0x26, 0x99, 0x66, 0x99, 0xA7, 0x99, 0xE8, 0x9A, 0x28, 0x9A, 0x69, 0x9A, 0xA9, 0x9A, 0xEA, 0x9B, 0x2A, 0x9B, 0x6B, 0x9B, 0xAB, 0x9B, 0xEC, 0x9C, 0x2C, 0x9C, 0x6D, 0x9C, 0xAD, 0x9C, 0xED, 0x9D, 0x2E, 0x9D, 0x6E, 0x9D, 0xAE, 0x9D, 0xEF, 0x9E, 0x32, 0x9E, 0x78, 0x9E, 0xBD, 0x9F, 0x03, 0x9F, 0x49, 0x9F, 0x8E, 0x9F, 0xD3, 0xA0, 0x19, 0xA0, 0x5E, 0xA0, 0xA4, 0xA0, 0xE9, 0xA1, 0x2E, 0xA1, 0x74, 0xA1, 0xB9, 0xA1, 0xFE, 0xA2, 0x44, 0xA2, 0x89, 0xA2, 0xCE, 0xA3, 0x13, 0xA3, 0x58, 0xA3, 0x9E, 0xA3, 0xE3, 0xA4, 0x28, 0xA4, 0x6D, 0xA4, 0xB2, 0xA4, 0xF7, 0xA5, 0x3C, 0xA5, 0x81, 0xA5, 0xC6, 0xA6, 0x0B, 0xA6, 0x50, 0xA6, 0x95, 0xA6, 0xDA, 0xA7, 0x1E, 0xA7, 0x63, 0xA7, 0xA8, 0xA7, 0xED, 0xA8, 0x32, 0xA8, 0x76, 0xA8, 0xBB, 0xA9, 0x00, 0xA9, 0x44, 0xA9, 0x89, 0xA9, 0xCE, 0xAA, 0x12, 0xAA, 0x57, 0xAA, 0x9B, 0xAA, 0xE0, 0xAB, 0x24, 0xAB, 0x69, 0xAB, 0xAD, 0xAB, 0xF2, 0xAC, 0x36, 0xAC, 0x7B, 0xAC, 0xBF, 0xAD, 0x04, 0xAD, 0x48, 0xAD, 0x8D, 0xAD, 0xD1, 0xAE, 0x16, 0xAE, 0x5A, 0xAE, 0x9F, 0xAE, 0xE3, 0xAF, 0x28, 0xAF, 0x6C, 0xAF, 0xB1, 0xAF, 0xF5, 0xB0, 0x3A, 0xB0, 0x7E, 0xB0, 0xC3, 0xB1, 0x07, 0xB1, 0x4C, 0xB1, 0x90, 0xB1, 0xD5, 0xB2, 0x19, 0xB2, 0x5E, 0xB2, 0xA2, 0xB2, 0xE7, 0xB3, 0x2C, 0xB3, 0x70, 0xB3, 0xB5, 0xB3, 0xF9, 0xB4, 0x3E, 0xB4, 0x82, 0xB4, 0xC7, 0xB5, 0x0B, 0xB5, 0x50, 0xB5, 0x94, 0xB5, 0xD9, 0xB6, 0x1E, 0xB6, 0x62, 0xB6, 0xA7, 0xB6, 0xEB, 0xB7, 0x30, 0xB7, 0x75, 0xB7, 0xB9, 0xB7, 0xFE, 0xB8, 0x42, 0xB8, 0x87, 0xB8, 0xCC, 0xB9, 0x10, 0xB9, 0x55, 0xB9, 0x9A, 0xB9, 0xDF, 0xBA, 0x23, 0xBA, 0x68, 0xBA, 0xAD, 0xBA, 0xF1, 0xBB, 0x36, 0xBB, 0x7B, 0xBB, 0xC0, 0xBC, 0x05, 0xBC, 0x49, 0xBC, 0x8E, 0xBC, 0xD3, 0xBD, 0x18, 0xBD, 0x5D, 0xBD, 0xA1, 0xBD, 0xE6, 0xBE, 0x2B, 0xBE, 0x70, 0xBE, 0xB5, 0xBE, 0xFA, 0xBF, 0x3F, 0xBF, 0x84, 0xBF, 0xC9, 0xC0, 0x0D, 0xC0, 0x53, 0xC0, 0x9A, 0xC0, 0xE3, 0xC1, 0x2C, 0xC1, 0x75, 0xC1, 0xBE, 0xC2, 0x06, 0xC2, 0x4F, 0xC2, 0x98, 0xC2, 0xE1, 0xC3, 0x2A, 0xC3, 0x73, 0xC3, 0xBC, 0xC4, 0x05, 0xC4, 0x4E, 0xC4, 0x97, 0xC4, 0xE0, 0xC5, 0x29, 0xC5, 0x72, 0xC5, 0xBB, 0xC6, 0x04, 0xC6, 0x4D, 0xC6, 0x96, 0xC6, 0xDF, 0xC7, 0x28, 0xC7, 0x71, 0xC7, 0xBA, 0xC8, 0x03, 0xC8, 0x4D, 0xC8, 0x96, 0xC8, 0xDF, 0xC9, 0x28, 0xC9, 0x71, 0xC9, 0xBA, 0xCA, 0x04, 0xCA, 0x4D, 0xCA, 0x96, 0xCA, 0xDF, 0xCB, 0x28, 0xCB, 0x72, 0xCB, 0xBB, 0xCC, 0x04, 0xCC, 0x4D, 0xCC, 0x97, 0xCC, 0xE0, 0xCD, 0x29, 0xCD, 0x72, 0xCD, 0xBC, 0xCE, 0x05, 0xCE, 0x4E, 0xCE, 0x97, 0xCE, 0xE1, 0xCF, 0x2A, 0xCF, 0x73, 0xCF, 0xBC, 0xD0, 0x06, 0xD0, 0x4F, 0xD0, 0x98, 0xD0, 0xE1, 0xD1, 0x2A, 0xD1, 0x74, 0xD1, 0xBD, 0xD2, 0x06, 0xD2, 0x4F, 0xD2, 0x98, 0xD2, 0xE1, 0xD3, 0x2B, 0xD3, 0x74, 0xD3, 0xBD, 0xD4, 0x06, 0xD4, 0x4F, 0xD4, 0x98, 0xD4, 0xE1, 0xD5, 0x2B, 0xD5, 0x74, 0xD5, 0xBD, 0xD6, 0x06, 0xD6, 0x4F, 0xD6, 0x98, 0xD6, 0xE1, 0xD7, 0x2A, 0xD7, 0x73, 0xD7, 0xBC, 0xD8, 0x06, 0xD8, 0x4F, 0xD8, 0x98, 0xD8, 0xE1, 0xD9, 0x2A, 0xD9, 0x73, 0xD9, 0xBC, 0xDA, 0x05, 0xDA, 0x4E, 0xDA, 0x98, 0xDA, 0xE1, 0xDB, 0x2A, 0xDB, 0x73, 0xDB, 0xBC, 0xDC, 0x05, 0xDC, 0x4E, 0xDC, 0x97, 0xDC, 0xE0, 0xDD, 0x2A, 0xDD, 0x73, 0xDD, 0xBC, 0xDE, 0x05, 0xDE, 0x4E, 0xDE, 0x97, 0xDE, 0xE0, 0xDF, 0x29, 0xDF, 0x72, 0xDF, 0xBB, 0xE0, 0x05, 0xE0, 0x4E, 0xE0, 0x97, 0xE0, 0xE0, 0xE1, 0x29, 0xE1, 0x72, 0xE1, 0xBB, 0xE2, 0x04, 0xE2, 0x4D, 0xE2, 0x96, 0xE2, 0xE0, 0xE3, 0x29, 0xE3, 0x72, 0xE3, 0xBB, 0xE4, 0x04, 0xE4, 0x4D, 0xE4, 0x96, 0xE4, 0xDC, 0xE5, 0x18, 0xE5, 0x4E, 0xE5, 0x84, 0xE5, 0xBA, 0xE5, 0xEF, 0xE6, 0x25, 0xE6, 0x5B, 0xE6, 0x91, 0xE6, 0xC7, 0xE6, 0xFD, 0xE7, 0x33, 0xE7, 0x69, 0xE7, 0x9F, 0xE7, 0xD5, 0xE8, 0x0B, 0xE8, 0x41, 0xE8, 0x77, 0xE8, 0xAD, 0xE8, 0xE3, 0xE9, 0x18, 0xE9, 0x4E, 0xE9, 0x84, 0xE9, 0xBA, 0xE9, 0xF0, 0xEA, 0x26, 0xEA, 0x5C, 0xEA, 0x93, 0xEA, 0xC9, 0xEA, 0xFF, 0xEB, 0x35, 0xEB, 0x6B, 0xEB, 0xA1, 0xEB, 0xD7, 0xEC, 0x0D, 0xEC, 0x43, 0xEC, 0x79, 0xEC, 0xAF, 0xEC, 0xE5, 0xED, 0x1B, 0xED, 0x51, 0xED, 0x87, 0xED, 0xBE, 0xED, 0xF4, 0xEE, 0x2A, 0xEE, 0x60, 0xEE, 0x96, 0xEE, 0xCC, 0xEF, 0x02, 0xEF, 0x38, 0xEF, 0x6F, 0xEF, 0xA5, 0xEF, 0xDB, 0xF0, 0x11, 0xF0, 0x47, 0xF0, 0x7D, 0xF0, 0xB3, 0xF0, 0xEA, 0xF1, 0x20, 0xF1, 0x56, 0xF1, 0x8C, 0xF1, 0xC2, 0xF1, 0xF9, 0xF2, 0x2F, 0xF2, 0x65, 0xF2, 0x9B, 0xF2, 0xD2, 0xF3, 0x08, 0xF3, 0x3E, 0xF3, 0x74, 0xF3, 0xAB, 0xF3, 0xE1, 0xF4, 0x17, 0xF4, 0x4D, 0xF4, 0x84, 0xF4, 0xBA, 0xF4, 0xF0, 0xF5, 0x26, 0xF5, 0x5D, 0xF5, 0x93, 0xF5, 0xC9, 0xF6, 0x00, 0xF6, 0x36, 0xF6, 0x6C, 0xF6, 0xA3, 0xF6, 0xD9, 0xF7, 0x0F, 0xF7, 0x46, 0xF7, 0x7C, 0xF7, 0xB2, 0xF7, 0xE9, 0xF8, 0x1F, 0xF8, 0x56, 0xF8, 0x8C, 0xF8, 0xC2, 0xF8, 0xF9, 0xF9, 0x2F, 0xF9, 0x66, 0xF9, 0x9C, 0xF9, 0xD2, 0xFA, 0x09, 0xFA, 0x3F, 0xFA, 0x76, 0xFA, 0xAC, 0xFA, 0xE3, 0xFB, 0x19, 0xFB, 0x4F, 0xFB, 0x86, 0xFB, 0xBC, 0xFB, 0xF3, 0xFC, 0x29, 0xFC, 0x60, 0xFC, 0x96, 0xFC, 0xCD, 0xFD, 0x03, 0xFD, 0x3A, 0xFD, 0x70, 0xFD, 0xA7, 0xFD, 0xDD, 0xFE, 0x14, 0xFE, 0x4A, 0xFE, 0x81, 0xFE, 0xB8, 0xFE, 0xEE, 0xFF, 0x25, 0xFF, 0x5B, 0xFF, 0x92, 0xFF, 0xC8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x34, 0x00, 0x68, 0x00, 0x9D, 0x00, 0xD1, 0x01, 0x05, 0x01, 0x39, 0x01, 0x6D, 0x01, 0xA2, 0x01, 0xD6, 0x02, 0x0A, 0x02, 0x3E, 0x02, 0x72, 0x02, 0xA7, 0x02, 0xDB, 0x03, 0x0F, 0x03, 0x43, 0x03, 0x78, 0x03, 0xAC, 0x03, 0xE0, 0x04, 0x15, 0x04, 0x49, 0x04, 0x7D, 0x04, 0xB1, 0x04, 0xE6, 0x05, 0x1A, 0x05, 0x4E, 0x05, 0x83, 0x05, 0xB7, 0x05, 0xEB, 0x06, 0x20, 0x06, 0x54, 0x06, 0x88, 0x06, 0xBD, 0x06, 0xF1, 0x07, 0x26, 0x07, 0x5A, 0x07, 0x8E, 0x07, 0xC3, 0x07, 0xF7, 0x08, 0x2C, 0x08, 0x60, 0x08, 0x94, 0x08, 0xC9, 0x08, 0xFD, 0x09, 0x32, 0x09, 0x66, 0x09, 0x9B, 0x09, 0xCF, 0x0A, 0x04, 0x0A, 0x38, 0x0A, 0x6C, 0x0A, 0xA1, 0x0A, 0xD5, 0x0B, 0x0A, 0x0B, 0x3E, 0x0B, 0x73, 0x0B, 0xA7, 0x0B, 0xDC, 0x0C, 0x11, 0x0C, 0x45, 0x0C, 0x7A, 0x0C, 0xAE, 0x0C, 0xE3, 0x0D, 0x17, 0x0D, 0x4C, 0x0D, 0x80, 0x0D, 0xB5, 0x0D, 0xEA, 0x0E, 0x1E, 0x0E, 0x53, 0x0E, 0x87, 0x0E, 0xBC, 0x0E, 0xF1, 0x0F, 0x25, 0x0F, 0x5A, 0x0F, 0x8F, 0x0F, 0xC3, 0x0F, 0xF8, 0x10, 0x2C, 0x10, 0x61, 0x10, 0x96, 0x10, 0xCA, 0x10, 0xFF, 0x11, 0x34, 0x11, 0x69, 0x11, 0x9D, 0x11, 0xD2, 0x12, 0x07, 0x12, 0x3B, 0x12, 0x70, 0x12, 0xA5, 0x12, 0xD9, 0x13, 0x0E, 0x13, 0x43, 0x13, 0x78, 0x13, 0xAC, 0x13, 0xE1, 0x14, 0x16, 0x14, 0x4B, 0x14, 0x80, 0x14, 0xB4, 0x14, 0xE9, 0x15, 0x1E, 0x15, 0x53, 0x15, 0x87, 0x15, 0xBC, 0x15, 0xF1, 0x16, 0x26, 0x16, 0x5B, 0x16, 0x90, 0x16, 0xC4, 0x16, 0xF9, 0x17, 0x2E, 0x17, 0x63, 0x17, 0x98, 0x17, 0xCD, 0x18, 0x02, 0x18, 0x37, 0x18, 0x6B, 0x18, 0xA0, 0x18, 0xD5, 0x19, 0x0A, 0x19, 0x3F, 0x19, 0x74, 0x19, 0xA9, 0x19, 0xDE, 0x1A, 0x13, 0x1A, 0x49, 0x1A, 0x87, 0x1A, 0xC4, 0x1B, 0x02, 0x1B, 0x40, 0x1B, 0x7E, 0x1B, 0xBB, 0x1B, 0xF9, 0x1C, 0x37, 0x1C, 0x75, 0x1C, 0xB2, 0x1C, 0xF0, 0x1D, 0x2E, 0x1D, 0x6C, 0x1D, 0xAA, 0x1D, 0xE8, 0x1E, 0x25, 0x1E, 0x63, 0x1E, 0xA1, 0x1E, 0xDF, 0x1F, 0x1D, 0x1F, 0x5B, 0x1F, 0x99, 0x1F, 0xD7, 0x20, 0x15, 0x20, 0x52, 0x20, 0x90, 0x20, 0xCE, 0x21, 0x0C, 0x21, 0x4A, 0x21, 0x88, 0x21, 0xC6, 0x22, 0x05, 0x22, 0x43, 0x22, 0x81, 0x22, 0xBF, 0x22, 0xFD, 0x23, 0x3B, 0x23, 0x79, 0x23, 0xB7, 0x23, 0xF6, 0x24, 0x34, 0x24, 0x72, 0x24, 0xB0, 0x24, 0xEE, 0x25, 0x2D, 0x25, 0x6B, 0x25, 0xA9, 0x25, 0xE8, 0x26, 0x26, 0x26, 0x64, 0x26, 0xA3, 0x26, 0xE1, 0x27, 0x1F, 0x27, 0x5E, 0x27, 0x9C, 0x27, 0xDB, 0x28, 0x19, 0x28, 0x57, 0x28, 0x96, 0x28, 0xD4, 0x29, 0x13, 0x29, 0x51, 0x29, 0x90, 0x29, 0xCE, 0x2A, 0x0D, 0x2A, 0x4B, 0x2A, 0x8A, 0x2A, 0xC8, 0x2B, 0x07, 0x2B, 0x46, 0x2B, 0x84, 0x2B, 0xC3, 0x2C, 0x01, 0x2C, 0x40, 0x2C, 0x7F, 0x2C, 0xBD, 0x2C, 0xFC, 0x2D, 0x3B, 0x2D, 0x79, 0x2D, 0xB8, 0x2D, 0xF7, 0x2E, 0x36, 0x2E, 0x74, 0x2E, 0xB3, 0x2E, 0xF2, 0x2F, 0x31, 0x2F, 0x6F, 0x2F, 0xAE, 0x2F, 0xED, 0x30, 0x2C, 0x30, 0x6B, 0x30, 0xAA, 0x30, 0xE8, 0x31, 0x27, 0x31, 0x66, 0x31, 0xA5, 0x31, 0xE4, 0x32, 0x23, 0x32, 0x62, 0x32, 0xA1, 0x32, 0xE0, 0x33, 0x1F, 0x33, 0x5E, 0x33, 0x9D, 0x33, 0xDC, 0x34, 0x1B, 0x34, 0x5A, 0x34, 0x99, 0x34, 0xD8, 0x35, 0x17, 0x35, 0x56, 0x35, 0x95, 0x35, 0xD5, 0x36, 0x14, 0x36, 0x53, 0x36, 0x92, 0x36, 0xD1, 0x37, 0x11, 0x37, 0x50, 0x37, 0x8F, 0x37, 0xCE, 0x38, 0x0E, 0x38, 0x4D, 0x38, 0x8C, 0x38, 0xCB, 0x39, 0x0B, 0x39, 0x4A, 0x39, 0x89, 0x39, 0xC7, 0x3A, 0x05, 0x3A, 0x43, 0x3A, 0x81, 0x3A, 0xBF, 0x3A, 0xFC, 0x3B, 0x3A, 0x3B, 0x78, 0x3B, 0xB6, 0x3B, 0xF4, 0x3C, 0x32, 0x3C, 0x70, 0x3C, 0xAE, 0x3C, 0xEC, 0x3D, 0x2A, 0x3D, 0x68, 0x3D, 0xA6, 0x3D, 0xE4, 0x3E, 0x22, 0x3E, 0x61, 0x3E, 0x9F, 0x3E, 0xDD, 0x3F, 0x1B, 0x3F, 0x59, 0x3F, 0x97, 0x3F, 0xD5, 0x40, 0x14, 0x40, 0x52, 0x40, 0x90, 0x40, 0xCE, 0x41, 0x0C, 0x41, 0x4B, 0x41, 0x89, 0x41, 0xC7, 0x42, 0x05, 0x42, 0x44, 0x42, 0x82, 0x42, 0xC0, 0x42, 0xFF, 0x43, 0x3D, 0x43, 0x7B, 0x43, 0xBA, 0x43, 0xF8, 0x44, 0x36, 0x44, 0x75, 0x44, 0xB3, 0x44, 0xF2, 0x45, 0x30, 0x45, 0x6F, 0x45, 0xAD, 0x45, 0xEC, 0x46, 0x2A, 0x46, 0x69, 0x46, 0xA7, 0x46, 0xE6, 0x47, 0x24, 0x47, 0x63, 0x47, 0xA1, 0x47, 0xE0, 0x48, 0x1F, 0x48, 0x5D, 0x48, 0x9C, 0x48, 0xDA, 0x49, 0x19, 0x49, 0x58, 0x49, 0x96, 0x49, 0xD5, 0x4A, 0x14, 0x4A, 0x52, 0x4A, 0x91, 0x4A, 0xD0, 0x4B, 0x0F, 0x4B, 0x4D, 0x4B, 0x8C, 0x4B, 0xCB, 0x4C, 0x0A, 0x4C, 0x48, 0x4C, 0x87, 0x4C, 0xC6, 0x4D, 0x05, 0x4D, 0x44, 0x4D, 0x83, 0x4D, 0xC2, 0x4E, 0x01, 0x4E, 0x3F, 0x4E, 0x7E, 0x4E, 0xBD, 0x4E, 0xFC, 0x4F, 0x3B, 0x4F, 0x7A, 0x4F, 0xB9, 0x4F, 0xF8, 0x50, 0x38, 0x50, 0x77, 0x50, 0xB6, 0x50, 0xF5, 0x51, 0x34, 0x51, 0x73, 0x51, 0xB2, 0x51, 0xF1, 0x52, 0x31, 0x52, 0x70, 0x52, 0xAF, 0x52, 0xEE, 0x53, 0x2D, 0x53, 0x6D, 0x53, 0xAC, 0x53, 0xEB, 0x54, 0x2A, 0x54, 0x6A, 0x54, 0xA9, 0x54, 0xE8, 0x55, 0x28, 0x55, 0x67, 0x55, 0xA7, 0x55, 0xE6, 0x56, 0x25, 0x56, 0x65, 0x56, 0xA4, 0x56, 0xE4, 0x57, 0x23, 0x57, 0x63, 0x57, 0xA2, 0x57, 0xE2, 0x58, 0x21, 0x58, 0x61, 0x58, 0xA0, 0x58, 0xDE, 0x59, 0x1B, 0x59, 0x57, 0x59, 0x93, 0x59, 0xCF, 0x5A, 0x0C, 0x5A, 0x48, 0x5A, 0x84, 0x5A, 0xC0, 0x5A, 0xFC, 0x5B, 0x38, 0x5B, 0x74, 0x5B, 0xB0, 0x5B, 0xEC, 0x5C, 0x28, 0x5C, 0x64, 0x5C, 0xA0, 0x5C, 0xDC, 0x5D, 0x18, 0x5D, 0x54, 0x5D, 0x90, 0x5D, 0xCC, 0x5E, 0x07, 0x5E, 0x43, 0x5E, 0x7F, 0x5E, 0xBB, 0x5E, 0xF6, 0x5F, 0x32, 0x5F, 0x6E, 0x5F, 0xA9, 0x5F, 0xE5, 0x60, 0x20, 0x60, 0x5C, 0x60, 0x98, 0x60, 0xD3, 0x61, 0x0F, 0x61, 0x4A, 0x61, 0x85, 0x61, 0xC1, 0x61, 0xFC, 0x62, 0x38, 0x62, 0x73, 0x62, 0xAE, 0x62, 0xEA, 0x63, 0x25, 0x63, 0x60, 0x63, 0x9C, 0x63, 0xD7, 0x64, 0x12, 0x64, 0x4D, 0x64, 0x88, 0x64, 0xC4, 0x64, 0xFF, 0x65, 0x3A, 0x65, 0x75, 0x65, 0xB0, 0x65, 0xEB, 0x66, 0x26, 0x66, 0x62, 0x66, 0x9D, 0x66, 0xD8, 0x67, 0x13, 0x67, 0x4E, 0x67, 0x89, 0x67, 0xC4, 0x67, 0xFF, 0x68, 0x39, 0x68, 0x74, 0x68, 0xAF, 0x68, 0xEA, 0x69, 0x25, 0x69, 0x60, 0x69, 0x9B, 0x69, 0xD6, 0x6A, 0x10, 0x6A, 0x4B, 0x6A, 0x86, 0x6A, 0xC1, 0x6A, 0xFB, 0x6B, 0x36, 0x6B, 0x71, 0x6B, 0xAC, 0x6B, 0xE6, 0x6C, 0x21, 0x6C, 0x5C, 0x6C, 0x96, 0x6C, 0xD1, 0x6D, 0x0B, 0x6D, 0x46, 0x6D, 0x80, 0x6D, 0xBB, 0x6D, 0xF5, 0x6E, 0x30, 0x6E, 0x6A, 0x6E, 0xA5, 0x6E, 0xDF, 0x6F, 0x1A, 0x6F, 0x54, 0x6F, 0x8E, 0x6F, 0xC9, 0x70, 0x03, 0x70, 0x3E, 0x70, 0x78, 0x70, 0xB2, 0x70, 0xED, 0x71, 0x27, 0x71, 0x61, 0x71, 0x9B, 0x71, 0xD6, 0x72, 0x10, 0x72, 0x4A, 0x72, 0x84, 0x72, 0xBE, 0x72, 0xF8, 0x73, 0x33, 0x73, 0x6D, 0x73, 0xA7, 0x73, 0xE1, 0x74, 0x1B, 0x74, 0x55, 0x74, 0x8F, 0x74, 0xC9, 0x75, 0x03, 0x75, 0x3D, 0x75, 0x77, 0x75, 0xB1, 0x75, 0xEA, 0x76, 0x25, 0x76, 0x61, 0x76, 0xA1, 0x76, 0xE1, 0x77, 0x21, 0x77, 0x61, 0x77, 0xA0, 0x77, 0xE0, 0x78, 0x20, 0x78, 0x5F, 0x78, 0x9F, 0x78, 0xDF, 0x79, 0x1E, 0x79, 0x5E, 0x79, 0x9E, 0x79, 0xDD, 0x7A, 0x1D, 0x7A, 0x5C, 0x7A, 0x9C, 0x7A, 0xDB, 0x7B, 0x1A, 0x7B, 0x5A, 0x7B, 0x99, 0x7B, 0xD8, 0x7C, 0x18, 0x7C, 0x57, 0x7C, 0x96, 0x7C, 0xD5, 0x7D, 0x15, 0x7D, 0x54, 0x7D, 0x93, 0x7D, 0xD2, 0x7E, 0x11, 0x7E, 0x50, 0x7E, 0x8F, 0x7E, 0xCE, 0x7F, 0x0D, 0x7F, 0x4C, 0x7F, 0x8B, 0x7F, 0xCA, 0x80, 0x09, 0x80, 0x48, 0x80, 0x87, 0x80, 0xC6, 0x81, 0x04, 0x81, 0x43, 0x81, 0x82, 0x81, 0xC1, 0x81, 0xFF, 0x82, 0x3E, 0x82, 0x7D, 0x82, 0xBB, 0x82, 0xFA, 0x83, 0x39, 0x83, 0x77, 0x83, 0xB6, 0x83, 0xF4, 0x84, 0x33, 0x84, 0x71, 0x84, 0xAF, 0x84, 0xEE, 0x85, 0x2C, 0x85, 0x6A, 0x85, 0xA9, 0x85, 0xE7, 0x86, 0x25, 0x86, 0x63, 0x86, 0xA2, 0x86, 0xE0, 0x87, 0x1E, 0x87, 0x5C, 0x87, 0x9A, 0x87, 0xD8, 0x88, 0x16, 0x88, 0x54, 0x88, 0x92, 0x88, 0xCF, 0x89, 0x0D, 0x89, 0x4B, 0x89, 0x89, 0x89, 0xC6, 0x8A, 0x04, 0x8A, 0x42, 0x8A, 0x7F, 0x8A, 0xBD, 0x8A, 0xFB, 0x8B, 0x38, 0x8B, 0x76, 0x8B, 0xB3, 0x8B, 0xF0, 0x8C, 0x2E, 0x8C, 0x6B, 0x8C, 0xA9, 0x8C, 0xE6, 0x8D, 0x23, 0x8D, 0x60, 0x8D, 0x9D, 0x8D, 0xDB, 0x8E, 0x18, 0x8E, 0x55, 0x8E, 0x92, 0x8E, 0xCF, 0x8F, 0x0C, 0x8F, 0x49, 0x8F, 0x86, 0x8F, 0xC3, 0x90, 0x00, 0x90, 0x3C, 0x90, 0x79, 0x90, 0xB6, 0x90, 0xF3, 0x91, 0x30, 0x91, 0x6C, 0x91, 0xA9, 0x91, 0xE5, 0x92, 0x22, 0x92, 0x5F, 0x92, 0x9B, 0x92, 0xD8, 0x93, 0x14, 0x93, 0x51, 0x93, 0x8D, 0x93, 0xC9, 0x94, 0x06, 0x94, 0x42, 0x94, 0x7E, 0x94, 0xBB, 0x94, 0xF7, 0x95, 0x34, 0x95, 0x77, 0x95, 0xBF, 0x96, 0x08, 0x96, 0x50, 0x96, 0x98, 0x96, 0xE0, 0x97, 0x29, 0x97, 0x71, 0x97, 0xB9, 0x98, 0x01, 0x98, 0x49, 0x98, 0x91, 0x98, 0xD9, 0x99, 0x21, 0x99, 0x69, 0x99, 0xB1, 0x99, 0xF9, 0x9A, 0x40, 0x9A, 0x88, 0x9A, 0xD0, 0x9B, 0x18, 0x9B, 0x5F, 0x9B, 0xA7, 0x9B, 0xEF, 0x9C, 0x36, 0x9C, 0x7E, 0x9C, 0xC6, 0x9D, 0x0D, 0x9D, 0x55, 0x9D, 0x9C, 0x9D, 0xE3, 0x9E, 0x2B, 0x9E, 0x72, 0x9E, 0xBA, 0x9F, 0x01, 0x9F, 0x48, 0x9F, 0x90, 0x9F, 0xD7, 0xA0, 0x1E, 0xA0, 0x65, 0xA0, 0xAC, 0xA0, 0xF4, 0xA1, 0x3B, 0xA1, 0x82, 0xA1, 0xC9, 0xA2, 0x10, 0xA2, 0x57, 0xA2, 0x9E, 0xA2, 0xE5, 0xA3, 0x2C, 0xA3, 0x73, 0xA3, 0xBA, 0xA4, 0x01, 0xA4, 0x48, 0xA4, 0x8F, 0xA4, 0xD5, 0xA5, 0x1C, 0xA5, 0x63, 0xA5, 0xAA, 0xA5, 0xF1, 0xA6, 0x38, 0xA6, 0x7E, 0xA6, 0xC5, 0xA7, 0x0C, 0xA7, 0x53, 0xA7, 0x99, 0xA7, 0xE0, 0xA8, 0x27, 0xA8, 0x6D, 0xA8, 0xB4, 0xA8, 0xFA, 0xA9, 0x41, 0xA9, 0x88, 0xA9, 0xCE, 0xAA, 0x15, 0xAA, 0x5B, 0xAA, 0xA2, 0xAA, 0xE8, 0xAB, 0x2F, 0xAB, 0x75, 0xAB, 0xBB, 0xAC, 0x02, 0xAC, 0x48, 0xAC, 0x8E, 0xAC, 0xD5, 0xAD, 0x1B, 0xAD, 0x62, 0xAD, 0xA8, 0xAD, 0xEE, 0xAE, 0x35, 0xAE, 0x7B, 0xAE, 0xC2, 0xAF, 0x09, 0xAF, 0x4F, 0xAF, 0x96, 0xAF, 0xDC, 0xB0, 0x23, 0xB0, 0x6A, 0xB0, 0xB0, 0xB0, 0xF7, 0xB1, 0x3E, 0xB1, 0x85, 0xB1, 0xCB, 0xB2, 0x12, 0xB2, 0x59, 0xB2, 0xA0, 0xB2, 0xE7, 0xB3, 0x2E, 0xB3, 0x75, 0xB3, 0xBC, 0xB4, 0x03, 0xB4, 0x4A, 0xB4, 0x91, 0xB4, 0xD8, 0xB5, 0x1F, 0xB5, 0x66, 0xB5, 0xAD, 0xB5, 0xF4, 0xB6, 0x3B, 0xB6, 0x83, 0xB6, 0xCA, 0xB7, 0x11, 0xB7, 0x58, 0xB7, 0xA0, 0xB7, 0xE7, 0xB8, 0x2E, 0xB8, 0x76, 0xB8, 0xBE, 0xB9, 0x0C, 0xB9, 0x5D, 0xB9, 0xAF, 0xBA, 0x00, 0xBA, 0x51, 0xBA, 0xA3, 0xBA, 0xF4, 0xBB, 0x46, 0xBB, 0x97, 0xBB, 0xE9, 0xBC, 0x3A, 0xBC, 0x8C, 0xBC, 0xDD, 0xBD, 0x2F, 0xBD, 0x81, 0xBD, 0xD2, 0xBE, 0x24, 0xBE, 0x76, 0xBE, 0xC7, 0xBF, 0x19, 0xBF, 0x6B, 0xBF, 0xBD, 0xC0, 0x0F, 0xC0, 0x61, 0xC0, 0xB3, 0xC1, 0x04, 0xC1, 0x56, 0xC1, 0xA8, 0xC1, 0xFA, 0xC2, 0x4D, 0xC2, 0x9F, 0xC2, 0xF1, 0xC3, 0x43, 0xC3, 0x95, 0xC3, 0xE7, 0xC4, 0x39, 0xC4, 0x8C, 0xC4, 0xDE, 0xC5, 0x30, 0xC5, 0x83, 0xC5, 0xD5, 0xC6, 0x27, 0xC6, 0x7A, 0xC6, 0xCC, 0xC7, 0x1F, 0xC7, 0x71, 0xC7, 0xC4, 0xC8, 0x16, 0xC8, 0x69, 0xC8, 0xBB, 0xC9, 0x0E, 0xC9, 0x61, 0xC9, 0xB3, 0xCA, 0x06, 0xCA, 0x59, 0xCA, 0xAC, 0xCA, 0xFE, 0xCB, 0x51, 0xCB, 0xA4, 0xCB, 0xF7, 0xCC, 0x4A, 0xCC, 0x9D, 0xCC, 0xF0, 0xCD, 0x43, 0xCD, 0x96, 0xCD, 0xE9, 0xCE, 0x3C, 0xCE, 0x90, 0xCE, 0xE3, 0xCF, 0x36, 0xCF, 0x89, 0xCF, 0xDD, 0xD0, 0x30, 0xD0, 0x83, 0xD0, 0xD6, 0xD1, 0x2A, 0xD1, 0x7D, 0xD1, 0xD1, 0xD2, 0x24, 0xD2, 0x78, 0xD2, 0xCB, 0xD3, 0x1F, 0xD3, 0x72, 0xD3, 0xC6, 0xD4, 0x19, 0xD4, 0x6D, 0xD4, 0xC1, 0xD5, 0x14, 0xD5, 0x68, 0xD5, 0xBC, 0xD6, 0x0F, 0xD6, 0x63, 0xD6, 0xB7, 0xD7, 0x0B, 0xD7, 0x5F, 0xD7, 0xB3, 0xD8, 0x06, 0xD8, 0x5A, 0xD8, 0xAE, 0xD9, 0x02, 0xD9, 0x56, 0xD9, 0xAA, 0xD9, 0xFE, 0xDA, 0x52, 0xDA, 0xA6, 0xDA, 0xFA, 0xDB, 0x4E, 0xDB, 0xA3, 0xDB, 0xF7, 0xDC, 0x4B, 0xDC, 0x9F, 0xDC, 0xF3, 0xDD, 0x48, 0xDD, 0x9C, 0xDD, 0xF0, 0xDE, 0x45, 0xDE, 0x99, 0xDE, 0xED, 0xDF, 0x42, 0xDF, 0x96, 0xDF, 0xEB, 0xE0, 0x3F, 0xE0, 0x94, 0xE0, 0xE9, 0xE1, 0x3D, 0xE1, 0x92, 0xE1, 0xE7, 0xE2, 0x3B, 0xE2, 0x79, 0xE2, 0xB3, 0xE2, 0xEE, 0xE3, 0x28, 0xE3, 0x62, 0xE3, 0x9C, 0xE3, 0xD7, 0xE4, 0x11, 0xE4, 0x4B, 0xE4, 0x86, 0xE4, 0xC0, 0xE4, 0xFB, 0xE5, 0x35, 0xE5, 0x6F, 0xE5, 0xAA, 0xE5, 0xE4, 0xE6, 0x1F, 0xE6, 0x59, 0xE6, 0x94, 0xE6, 0xCE, 0xE7, 0x09, 0xE7, 0x43, 0xE7, 0x7E, 0xE7, 0xB9, 0xE7, 0xF3, 0xE8, 0x2E, 0xE8, 0x69, 0xE8, 0xA3, 0xE8, 0xDE, 0xE9, 0x19, 0xE9, 0x53, 0xE9, 0x8E, 0xE9, 0xC9, 0xEA, 0x04, 0xEA, 0x3F, 0xEA, 0x79, 0xEA, 0xB4, 0xEA, 0xEF, 0xEB, 0x2A, 0xEB, 0x65, 0xEB, 0xA0, 0xEB, 0xDB, 0xEC, 0x16, 0xEC, 0x51, 0xEC, 0x8C, 0xEC, 0xC7, 0xED, 0x02, 0xED, 0x3D, 0xED, 0x78, 0xED, 0xB4, 0xED, 0xEF, 0xEE, 0x2A, 0xEE, 0x65, 0xEE, 0xA0, 0xEE, 0xDC, 0xEF, 0x17, 0xEF, 0x52, 0xEF, 0x8E, 0xEF, 0xC9, 0xF0, 0x04, 0xF0, 0x40, 0xF0, 0x7B, 0xF0, 0xB7, 0xF0, 0xF2, 0xF1, 0x2E, 0xF1, 0x69, 0xF1, 0xA5, 0xF1, 0xE0, 0xF2, 0x1C, 0xF2, 0x57, 0xF2, 0x93, 0xF2, 0xCF, 0xF3, 0x0A, 0xF3, 0x46, 0xF3, 0x82, 0xF3, 0xBE, 0xF3, 0xF9, 0xF4, 0x35, 0xF4, 0x71, 0xF4, 0xAD, 0xF4, 0xE9, 0xF5, 0x24, 0xF5, 0x60, 0xF5, 0x9C, 0xF5, 0xD8, 0xF6, 0x14, 0xF6, 0x50, 0xF6, 0x8C, 0xF6, 0xC8, 0xF7, 0x04, 0xF7, 0x40, 0xF7, 0x7C, 0xF7, 0xB9, 0xF7, 0xF5, 0xF8, 0x31, 0xF8, 0x6D, 0xF8, 0xA9, 0xF8, 0xE5, 0xF9, 0x22, 0xF9, 0x5E, 0xF9, 0x9A, 0xF9, 0xD7, 0xFA, 0x13, 0xFA, 0x4F, 0xFA, 0x8C, 0xFA, 0xC8, 0xFB, 0x05, 0xFB, 0x41, 0xFB, 0x7E, 0xFB, 0xBA, 0xFB, 0xF7, 0xFC, 0x33, 0xFC, 0x70, 0xFC, 0xAC, 0xFC, 0xE9, 0xFD, 0x26, 0xFD, 0x62, 0xFD, 0x9F, 0xFD, 0xDC, 0xFE, 0x18, 0xFE, 0x55, 0xFE, 0x92, 0xFE, 0xCF, 0xFF, 0x0B, 0xFF, 0x48, 0xFF, 0x85, 0xFF, 0xC2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x7A, 0x00, 0xB6, 0x00, 0xF3, 0x01, 0x30, 0x01, 0x6D, 0x01, 0xA9, 0x01, 0xE6, 0x02, 0x23, 0x02, 0x60, 0x02, 0x9D, 0x02, 0xD9, 0x03, 0x16, 0x03, 0x53, 0x03, 0x90, 0x03, 0xCD, 0x04, 0x0A, 0x04, 0x47, 0x04, 0x83, 0x04, 0xC0, 0x04, 0xFD, 0x05, 0x3A, 0x05, 0x77, 0x05, 0xB4, 0x05, 0xF1, 0x06, 0x2E, 0x06, 0x6B, 0x06, 0xA8, 0x06, 0xE5, 0x07, 0x22, 0x07, 0x5E, 0x07, 0x9B, 0x07, 0xD8, 0x08, 0x15, 0x08, 0x52, 0x08, 0x8F, 0x08, 0xCC, 0x09, 0x09, 0x09, 0x46, 0x09, 0x83, 0x09, 0xC0, 0x09, 0xFE, 0x0A, 0x3B, 0x0A, 0x78, 0x0A, 0xB5, 0x0A, 0xF2, 0x0B, 0x2F, 0x0B, 0x6C, 0x0B, 0xA9, 0x0B, 0xE6, 0x0C, 0x23, 0x0C, 0x60, 0x0C, 0x9D, 0x0C, 0xDB, 0x0D, 0x18, 0x0D, 0x55, 0x0D, 0x92, 0x0D, 0xCF, 0x0E, 0x0C, 0x0E, 0x49, 0x0E, 0x87, 0x0E, 0xC4, 0x0F, 0x01, 0x0F, 0x3E, 0x0F, 0x7B, 0x0F, 0xB9, 0x0F, 0xF6, 0x10, 0x33, 0x10, 0x70, 0x10, 0xAD, 0x10, 0xEB, 0x11, 0x28, 0x11, 0x65, 0x11, 0xA2, 0x11, 0xE0, 0x12, 0x1D, 0x12, 0x5A, 0x12, 0x97, 0x12, 0xD5, 0x13, 0x12, 0x13, 0x4F, 0x13, 0x8D, 0x13, 0xCA, 0x14, 0x07, 0x14, 0x44, 0x14, 0x82, 0x14, 0xBF, 0x14, 0xFC, 0x15, 0x3A, 0x15, 0x77, 0x15, 0xB4, 0x15, 0xF2, 0x16, 0x2F, 0x16, 0x6C, 0x16, 0xAA, 0x16, 0xE7, 0x17, 0x25, 0x17, 0x62, 0x17, 0x9F, 0x17, 0xDD, 0x18, 0x1A, 0x18, 0x58, 0x18, 0x95, 0x18, 0xD2, 0x19, 0x10, 0x19, 0x4D, 0x19, 0x8B, 0x19, 0xC8, 0x1A, 0x06, 0x1A, 0x43, 0x1A, 0x80, 0x1A, 0xBE, 0x1A, 0xFB, 0x1B, 0x39, 0x1B, 0x76, 0x1B, 0xB4, 0x1B, 0xF1, 0x1C, 0x2F, 0x1C, 0x6C, 0x1C, 0xAA, 0x1C, 0xE7, 0x1D, 0x25, 0x1D, 0x62, 0x1D, 0xA0, 0x1D, 0xDE, 0x1E, 0x1B, 0x1E, 0x59, 0x1E, 0x98, 0x1E, 0xDC, 0x1F, 0x22, 0x1F, 0x67, 0x1F, 0xAC, 0x1F, 0xF2, 0x20, 0x37, 0x20, 0x7C, 0x20, 0xC1, 0x21, 0x07, 0x21, 0x4C, 0x21, 0x91, 0x21, 0xD7, 0x22, 0x1C, 0x22, 0x61, 0x22, 0xA7, 0x22, 0xEC, 0x23, 0x32, 0x23, 0x77, 0x23, 0xBC, 0x24, 0x02, 0x24, 0x47, 0x24, 0x8D, 0x24, 0xD2, 0x25, 0x18, 0x25, 0x5D, 0x25, 0xA3, 0x25, 0xE8, 0x26, 0x2E, 0x26, 0x73, 0x26, 0xB9, 0x26, 0xFE, 0x27, 0x44, 0x27, 0x89, 0x27, 0xCF, 0x28, 0x14, 0x28, 0x5A, 0x28, 0xA0, 0x28, 0xE5, 0x29, 0x2B, 0x29, 0x71, 0x29, 0xB6, 0x29, 0xFC, 0x2A, 0x42, 0x2A, 0x87, 0x2A, 0xCD, 0x2B, 0x13, 0x2B, 0x58, 0x2B, 0x9E, 0x2B, 0xE4, 0x2C, 0x2A, 0x2C, 0x6F, 0x2C, 0xB5, 0x2C, 0xFB, 0x2D, 0x41, 0x2D, 0x86, 0x2D, 0xCC, 0x2E, 0x12, 0x2E, 0x58, 0x2E, 0x9D, 0x2E, 0xE3, 0x2F, 0x29, 0x2F, 0x6F, 0x2F, 0xB4, 0x2F, 0xFA, 0x30, 0x40, 0x30, 0x86, 0x30, 0xCB, 0x31, 0x11, 0x31, 0x57, 0x31, 0x9C, 0x31, 0xE2, 0x32, 0x28, 0x32, 0x6E, 0x32, 0xB3, 0x32, 0xF9, 0x33, 0x3F, 0x33, 0x84, 0x33, 0xCA, 0x34, 0x10, 0x34, 0x55, 0x34, 0x9B, 0x34, 0xE1, 0x35, 0x26, 0x35, 0x6C, 0x35, 0xB2, 0x35, 0xF8, 0x36, 0x3D, 0x36, 0x83, 0x36, 0xC9, 0x37, 0x0E, 0x37, 0x54, 0x37, 0x9A, 0x37, 0xE0, 0x38, 0x25, 0x38, 0x6B, 0x38, 0xB1, 0x38, 0xF7, 0x39, 0x3D, 0x39, 0x82, 0x39, 0xC8, 0x3A, 0x0E, 0x3A, 0x54, 0x3A, 0x9A, 0x3A, 0xDF, 0x3B, 0x25, 0x3B, 0x6B, 0x3B, 0xB1, 0x3B, 0xF7, 0x3C, 0x3D, 0x3C, 0x83, 0x3C, 0xC8, 0x3D, 0x0E, 0x3D, 0x54, 0x3D, 0x9A, 0x3D, 0xE0, 0x3E, 0x26, 0x3E, 0x6C, 0x3E, 0xB2, 0x3E, 0xF8, 0x3F, 0x3E, 0x3F, 0x84, 0x3F, 0xCA, 0x40, 0x10, 0x40, 0x56, 0x40, 0x9C, 0x40, 0xE2, 0x41, 0x29, 0x41, 0x6E, 0x41, 0xB2, 0x41, 0xF5, 0x42, 0x39, 0x42, 0x7C, 0x42, 0xC0, 0x43, 0x03, 0x43, 0x47, 0x43, 0x8B, 0x43, 0xCE, 0x44, 0x12, 0x44, 0x56, 0x44, 0x99, 0x44, 0xDD, 0x45, 0x21, 0x45, 0x65, 0x45, 0xA8, 0x45, 0xEC, 0x46, 0x30, 0x46, 0x74, 0x46, 0xB8, 0x46, 0xFC, 0x47, 0x40, 0x47, 0x84, 0x47, 0xC8, 0x48, 0x0C, 0x48, 0x50, 0x48, 0x94, 0x48, 0xD8, 0x49, 0x1C, 0x49, 0x60, 0x49, 0xA4, 0x49, 0xE8, 0x4A, 0x2C, 0x4A, 0x70, 0x4A, 0xB4, 0x4A, 0xF8, 0x4B, 0x3D, 0x4B, 0x81, 0x4B, 0xC5, 0x4C, 0x09, 0x4C, 0x4E, 0x4C, 0x92, 0x4C, 0xD6, 0x4D, 0x1B, 0x4D, 0x5F, 0x4D, 0xA3, 0x4D, 0xE8, 0x4E, 0x2C, 0x4E, 0x71, 0x4E, 0xB5, 0x4E, 0xFA, 0x4F, 0x3E, 0x4F, 0x83, 0x4F, 0xC7, 0x50, 0x0C, 0x50, 0x50, 0x50, 0x95, 0x50, 0xDA, 0x51, 0x1E, 0x51, 0x63, 0x51, 0xA8, 0x51, 0xEC, 0x52, 0x31, 0x52, 0x76, 0x52, 0xBB, 0x52, 0xFF, 0x53, 0x44, 0x53, 0x89, 0x53, 0xCE, 0x54, 0x13, 0x54, 0x58, 0x54, 0x9D, 0x54, 0xE2, 0x55, 0x27, 0x55, 0x6C, 0x55, 0xB1, 0x55, 0xF6, 0x56, 0x3B, 0x56, 0x80, 0x56, 0xC5, 0x57, 0x0A, 0x57, 0x4F, 0x57, 0x94, 0x57, 0xD9, 0x58, 0x1E, 0x58, 0x64, 0x58, 0xA9, 0x58, 0xEE, 0x59, 0x33, 0x59, 0x78, 0x59, 0xBE, 0x5A, 0x03, 0x5A, 0x48, 0x5A, 0x8D, 0x5A, 0xD2, 0x5B, 0x17, 0x5B, 0x5C, 0x5B, 0xA1, 0x5B, 0xE6, 0x5C, 0x2B, 0x5C, 0x70, 0x5C, 0xB4, 0x5C, 0xF9, 0x5D, 0x3E, 0x5D, 0x83, 0x5D, 0xC8, 0x5E, 0x0C, 0x5E, 0x51, 0x5E, 0x96, 0x5E, 0xDB, 0x5F, 0x1F, 0x5F, 0x64, 0x5F, 0xA8, 0x5F, 0xED, 0x60, 0x32, 0x60, 0x76, 0x60, 0xBB, 0x60, 0xFF, 0x61, 0x44, 0x61, 0x88, 0x61, 0xCC, 0x62, 0x11, 0x62, 0x55, 0x62, 0x9A, 0x62, 0xDE, 0x63, 0x22, 0x63, 0x66, 0x63, 0xAA, 0x63, 0xEB, 0x64, 0x2C, 0x64, 0x6D, 0x64, 0xAE, 0x64, 0xEF, 0x65, 0x30, 0x65, 0x71, 0x65, 0xB2, 0x65, 0xF3, 0x66, 0x34, 0x66, 0x75, 0x66, 0xB6, 0x66, 0xF7, 0x67, 0x38, 0x67, 0x78, 0x67, 0xB9, 0x67, 0xFA, 0x68, 0x3B, 0x68, 0x7C, 0x68, 0xBC, 0x68, 0xFD, 0x69, 0x3E, 0x69, 0x7F, 0x69, 0xBF, 0x6A, 0x00, 0x6A, 0x41, 0x6A, 0x81, 0x6A, 0xC2, 0x6B, 0x03, 0x6B, 0x43, 0x6B, 0x84, 0x6B, 0xC4, 0x6C, 0x05, 0x6C, 0x45, 0x6C, 0x85, 0x6C, 0xC6, 0x6D, 0x06, 0x6D, 0x46, 0x6D, 0x87, 0x6D, 0xC7, 0x6E, 0x07, 0x6E, 0x47, 0x6E, 0x88, 0x6E, 0xC8, 0x6F, 0x08, 0x6F, 0x48, 0x6F, 0x88, 0x6F, 0xC8, 0x70, 0x08, 0x70, 0x48, 0x70, 0x88, 0x70, 0xC8, 0x71, 0x08, 0x71, 0x47, 0x71, 0x87, 0x71, 0xC7, 0x72, 0x07, 0x72, 0x46, 0x72, 0x86, 0x72, 0xC6, 0x73, 0x05, 0x73, 0x45, 0x73, 0x85, 0x73, 0xC4, 0x74, 0x04, 0x74, 0x43, 0x74, 0x82, 0x74, 0xC2, 0x75, 0x01, 0x75, 0x41, 0x75, 0x80, 0x75, 0xBF, 0x75, 0xFE, 0x76, 0x3E, 0x76, 0x7D, 0x76, 0xBC, 0x76, 0xFB, 0x77, 0x3A, 0x77, 0x79, 0x77, 0xB8, 0x77, 0xF7, 0x78, 0x36, 0x78, 0x75, 0x78, 0xB4, 0x78, 0xF3, 0x79, 0x32, 0x79, 0x71, 0x79, 0xB0, 0x79, 0xEF, 0x7A, 0x2D, 0x7A, 0x6C, 0x7A, 0xAB, 0x7A, 0xEA, 0x7B, 0x28, 0x7B, 0x67, 0x7B, 0xA6, 0x7B, 0xE4, 0x7C, 0x23, 0x7C, 0x61, 0x7C, 0xA0, 0x7C, 0xDE, 0x7D, 0x1D, 0x7D, 0x5B, 0x7D, 0x9A, 0x7D, 0xD8, 0x7E, 0x17, 0x7E, 0x55, 0x7E, 0x93, 0x7E, 0xD2, 0x7F, 0x10, 0x7F, 0x4E, 0x7F, 0x8C, 0x7F, 0xCB, 0x80, 0x09, 0x80, 0x47, 0x80, 0x85, 0x80, 0xC4, 0x81, 0x02, 0x81, 0x40, 0x81, 0x7E, 0x81, 0xBC, 0x81, 0xFA, 0x82, 0x38, 0x82, 0x76, 0x82, 0xB4, 0x82, 0xF2, 0x83, 0x30, 0x83, 0x70, 0x83, 0xB2, 0x83, 0xF4, 0x84, 0x36, 0x84, 0x78, 0x84, 0xBA, 0x84, 0xFC, 0x85, 0x3E, 0x85, 0x80, 0x85, 0xC2, 0x86, 0x04, 0x86, 0x46, 0x86, 0x88, 0x86, 0xC9, 0x87, 0x0B, 0x87, 0x4D, 0x87, 0x8E, 0x87, 0xD0, 0x88, 0x11, 0x88, 0x53, 0x88, 0x94, 0x88, 0xD6, 0x89, 0x17, 0x89, 0x59, 0x89, 0x9A, 0x89, 0xDB, 0x8A, 0x1C, 0x8A, 0x5D, 0x8A, 0x9F, 0x8A, 0xE0, 0x8B, 0x21, 0x8B, 0x62, 0x8B, 0xA3, 0x8B, 0xE4, 0x8C, 0x25, 0x8C, 0x65, 0x8C, 0xA6, 0x8C, 0xE7, 0x8D, 0x28, 0x8D, 0x68, 0x8D, 0xA9, 0x8D, 0xEA, 0x8E, 0x2A, 0x8E, 0x6B, 0x8E, 0xAB, 0x8E, 0xEC, 0x8F, 0x2C, 0x8F, 0x6C, 0x8F, 0xAD, 0x8F, 0xED, 0x90, 0x2D, 0x90, 0x6D, 0x90, 0xAE, 0x90, 0xEE, 0x91, 0x2E, 0x91, 0x6E, 0x91, 0xAE, 0x91, 0xEE, 0x92, 0x2E, 0x92, 0x6D, 0x92, 0xAD, 0x92, 0xED, 0x93, 0x2D, 0x93, 0x6C, 0x93, 0xAC, 0x93, 0xEB, 0x94, 0x2B, 0x94, 0x6A, 0x94, 0xAA, 0x94, 0xE9, 0x95, 0x29, 0x95, 0x68, 0x95, 0xA7, 0x95, 0xE6, 0x96, 0x25, 0x96, 0x64, 0x96, 0xA4, 0x96, 0xE2, 0x97, 0x21, 0x97, 0x60, 0x97, 0x9F, 0x97, 0xDE, 0x98, 0x1D, 0x98, 0x5B, 0x98, 0x9A, 0x98, 0xD9, 0x99, 0x17, 0x99, 0x56, 0x99, 0x94, 0x99, 0xD3, 0x9A, 0x11, 0x9A, 0x50, 0x9A, 0x8E, 0x9A, 0xCC, 0x9B, 0x0A, 0x9B, 0x49, 0x9B, 0x87, 0x9B, 0xC5, 0x9C, 0x03, 0x9C, 0x41, 0x9C, 0x7F, 0x9C, 0xBD, 0x9C, 0xFB, 0x9D, 0x38, 0x9D, 0x76, 0x9D, 0xB4, 0x9D, 0xF2, 0x9E, 0x2F, 0x9E, 0x6D, 0x9E, 0xAB, 0x9E, 0xE8, 0x9F, 0x26, 0x9F, 0x63, 0x9F, 0xA1, 0x9F, 0xDE, 0xA0, 0x1C, 0xA0, 0x59, 0xA0, 0x96, 0xA0, 0xD4, 0xA1, 0x11, 0xA1, 0x4E, 0xA1, 0x8B, 0xA1, 0xC9, 0xA2, 0x06, 0xA2, 0x43, 0xA2, 0x80, 0xA2, 0xBD, 0xA2, 0xFA, 0xA3, 0x3A, 0xA3, 0x7C, 0xA3, 0xBE, 0xA4, 0x00, 0xA4, 0x42, 0xA4, 0x84, 0xA4, 0xC6, 0xA5, 0x07, 0xA5, 0x49, 0xA5, 0x8B, 0xA5, 0xCD, 0xA6, 0x0E, 0xA6, 0x50, 0xA6, 0x91, 0xA6, 0xD3, 0xA7, 0x15, 0xA7, 0x56, 0xA7, 0x98, 0xA7, 0xD9, 0xA8, 0x1A, 0xA8, 0x5C, 0xA8, 0x9D, 0xA8, 0xDE, 0xA9, 0x20, 0xA9, 0x61, 0xA9, 0xA2, 0xA9, 0xE3, 0xAA, 0x24, 0xAA, 0x66, 0xAA, 0xA7, 0xAA, 0xE8, 0xAB, 0x29, 0xAB, 0x6A, 0xAB, 0xAB, 0xAB, 0xEC, 0xAC, 0x2C, 0xAC, 0x6D, 0xAC, 0xAE, 0xAC, 0xEF, 0xAD, 0x30, 0xAD, 0x70, 0xAD, 0xB1, 0xAD, 0xF2, 0xAE, 0x33, 0xAE, 0x74, 0xAE, 0xB5, 0xAE, 0xF6, 0xAF, 0x37, 0xAF, 0x78, 0xAF, 0xB9, 0xAF, 0xFA, 0xB0, 0x3B, 0xB0, 0x7D, 0xB0, 0xBE, 0xB0, 0xFF, 0xB1, 0x40, 0xB1, 0x82, 0xB1, 0xC3, 0xB2, 0x04, 0xB2, 0x46, 0xB2, 0x87, 0xB2, 0xC9, 0xB3, 0x0A, 0xB3, 0x4C, 0xB3, 0x8D, 0xB3, 0xCF, 0xB4, 0x10, 0xB4, 0x52, 0xB4, 0x94, 0xB4, 0xD6, 0xB5, 0x17, 0xB5, 0x59, 0xB5, 0x9B, 0xB5, 0xDD, 0xB6, 0x1F, 0xB6, 0x61, 0xB6, 0xA3, 0xB6, 0xE5, 0xB7, 0x27, 0xB7, 0x69, 0xB7, 0xAB, 0xB7, 0xED, 0xB8, 0x2F, 0xB8, 0x71, 0xB8, 0xB4, 0xB8, 0xF6, 0xB9, 0x38, 0xB9, 0x7A, 0xB9, 0xBD, 0xB9, 0xFF, 0xBA, 0x42, 0xBA, 0x84, 0xBA, 0xC7, 0xBB, 0x09, 0xBB, 0x4C, 0xBB, 0x8F, 0xBB, 0xD1, 0xBC, 0x14, 0xBC, 0x57, 0xBC, 0x99, 0xBC, 0xDC, 0xBD, 0x1F, 0xBD, 0x62, 0xBD, 0xA5, 0xBD, 0xE8, 0xBE, 0x2B, 0xBE, 0x6E, 0xBE, 0xB1, 0xBE, 0xF4, 0xBF, 0x37, 0xBF, 0x7A, 0xBF, 0xBD, 0xC0, 0x00, 0xC0, 0x44, 0xC0, 0x87, 0xC0, 0xCA, 0xC1, 0x0E, 0xC1, 0x51, 0xC1, 0x95, 0xC1, 0xD8, 0xC2, 0x1C, 0xC2, 0x5F, 0xC2, 0xA3, 0xC2, 0xE6, 0xC3, 0x2A, 0xC3, 0x6E, 0xC3, 0xB2, 0xC3, 0xF5, 0xC4, 0x34, 0xC4, 0x71, 0xC4, 0xAE, 0xC4, 0xEA, 0xC5, 0x27, 0xC5, 0x64, 0xC5, 0xA1, 0xC5, 0xDE, 0xC6, 0x1B, 0xC6, 0x58, 0xC6, 0x95, 0xC6, 0xD2, 0xC7, 0x0F, 0xC7, 0x4D, 0xC7, 0x8A, 0xC7, 0xC7, 0xC8, 0x04, 0xC8, 0x42, 0xC8, 0x7F, 0xC8, 0xBC, 0xC8, 0xFA, 0xC9, 0x37, 0xC9, 0x74, 0xC9, 0xB2, 0xC9, 0xEF, 0xCA, 0x2D, 0xCA, 0x6B, 0xCA, 0xA8, 0xCA, 0xE6, 0xCB, 0x23, 0xCB, 0x61, 0xCB, 0x9F, 0xCB, 0xDD, 0xCC, 0x1A, 0xCC, 0x58, 0xCC, 0x96, 0xCC, 0xD4, 0xCD, 0x12, 0xCD, 0x50, 0xCD, 0x8E, 0xCD, 0xCC, 0xCE, 0x0A, 0xCE, 0x48, 0xCE, 0x86, 0xCE, 0xC4, 0xCF, 0x02, 0xCF, 0x40, 0xCF, 0x7E, 0xCF, 0xBC, 0xCF, 0xFA, 0xD0, 0x38, 0xD0, 0x76, 0xD0, 0xB5, 0xD0, 0xF3, 0xD1, 0x31, 0xD1, 0x6F, 0xD1, 0xAE, 0xD1, 0xEC, 0xD2, 0x2A, 0xD2, 0x69, 0xD2, 0xA7, 0xD2, 0xE5, 0xD3, 0x24, 0xD3, 0x62, 0xD3, 0xA1, 0xD3, 0xDF, 0xD4, 0x1E, 0xD4, 0x5C, 0xD4, 0x9B, 0xD4, 0xD9, 0xD5, 0x18, 0xD5, 0x56, 0xD5, 0x95, 0xD5, 0xD4, 0xD6, 0x12, 0xD6, 0x51, 0xD6, 0x90, 0xD6, 0xCE, 0xD7, 0x0D, 0xD7, 0x4C, 0xD7, 0x8A, 0xD7, 0xC9, 0xD8, 0x08, 0xD8, 0x47, 0xD8, 0x86, 0xD8, 0xC4, 0xD9, 0x03, 0xD9, 0x42, 0xD9, 0x81, 0xD9, 0xC0, 0xD9, 0xFF, 0xDA, 0x3D, 0xDA, 0x7C, 0xDA, 0xBB, 0xDA, 0xFA, 0xDB, 0x39, 0xDB, 0x78, 0xDB, 0xB7, 0xDB, 0xF6, 0xDC, 0x35, 0xDC, 0x74, 0xDC, 0xB3, 0xDC, 0xF2, 0xDD, 0x31, 0xDD, 0x70, 0xDD, 0xAF, 0xDD, 0xEF, 0xDE, 0x2E, 0xDE, 0x6D, 0xDE, 0xAC, 0xDE, 0xEB, 0xDF, 0x2A, 0xDF, 0x69, 0xDF, 0xA9, 0xDF, 0xE8, 0xE0, 0x27, 0xE0, 0x66, 0xE0, 0xA6, 0xE0, 0xE5, 0xE1, 0x24, 0xE1, 0x64, 0xE1, 0xA3, 0xE1, 0xE3, 0xE2, 0x22, 0xE2, 0x61, 0xE2, 0xA1, 0xE2, 0xE0, 0xE3, 0x1F, 0xE3, 0x59, 0xE3, 0x92, 0xE3, 0xCB, 0xE4, 0x03, 0xE4, 0x3C, 0xE4, 0x75, 0xE4, 0xAD, 0xE4, 0xE6, 0xE5, 0x1F, 0xE5, 0x58, 0xE5, 0x91, 0xE5, 0xC9, 0xE6, 0x02, 0xE6, 0x3B, 0xE6, 0x74, 0xE6, 0xAD, 0xE6, 0xE6, 0xE7, 0x1F, 0xE7, 0x58, 0xE7, 0x91, 0xE7, 0xCA, 0xE8, 0x03, 0xE8, 0x3C, 0xE8, 0x75, 0xE8, 0xAE, 0xE8, 0xE7, 0xE9, 0x20, 0xE9, 0x59, 0xE9, 0x92, 0xE9, 0xCB, 0xEA, 0x04, 0xEA, 0x3E, 0xEA, 0x77, 0xEA, 0xB0, 0xEA, 0xE9, 0xEB, 0x23, 0xEB, 0x5C, 0xEB, 0x95, 0xEB, 0xCE, 0xEC, 0x08, 0xEC, 0x41, 0xEC, 0x7A, 0xEC, 0xB4, 0xEC, 0xED, 0xED, 0x27, 0xED, 0x60, 0xED, 0x99, 0xED, 0xD3, 0xEE, 0x0C, 0xEE, 0x46, 0xEE, 0x7F, 0xEE, 0xB9, 0xEE, 0xF2, 0xEF, 0x2C, 0xEF, 0x65, 0xEF, 0x9F, 0xEF, 0xD9, 0xF0, 0x12, 0xF0, 0x4C, 0xF0, 0x86, 0xF0, 0xBF, 0xF0, 0xF9, 0xF1, 0x33, 0xF1, 0x6C, 0xF1, 0xA6, 0xF1, 0xE0, 0xF2, 0x1A, 0xF2, 0x53, 0xF2, 0x8D, 0xF2, 0xC7, 0xF3, 0x01, 0xF3, 0x3B, 0xF3, 0x75, 0xF3, 0xAE, 0xF3, 0xE8, 0xF4, 0x22, 0xF4, 0x5C, 0xF4, 0x96, 0xF4, 0xD0, 0xF5, 0x0A, 0xF5, 0x44, 0xF5, 0x7E, 0xF5, 0xB8, 0xF5, 0xF2, 0xF6, 0x2C, 0xF6, 0x67, 0xF6, 0xA1, 0xF6, 0xDB, 0xF7, 0x15, 0xF7, 0x4F, 0xF7, 0x89, 0xF7, 0xC4, 0xF7, 0xFE, 0xF8, 0x38, 0xF8, 0x72, 0xF8, 0xAD, 0xF8, 0xE7, 0xF9, 0x21, 0xF9, 0x5C, 0xF9, 0x96, 0xF9, 0xD0, 0xFA, 0x0B, 0xFA, 0x45, 0xFA, 0x7F, 0xFA, 0xBA, 0xFA, 0xF4, 0xFB, 0x2F, 0xFB, 0x69, 0xFB, 0xA4, 0xFB, 0xDE, 0xFC, 0x19, 0xFC, 0x54, 0xFC, 0x8E, 0xFC, 0xC9, 0xFD, 0x03, 0xFD, 0x3E, 0xFD, 0x79, 0xFD, 0xB3, 0xFD, 0xEE, 0xFE, 0x29, 0xFE, 0x63, 0xFE, 0x9E, 0xFE, 0xD9, 0xFF, 0x14, 0xFF, 0x4E, 0xFF, 0x89, 0xFF, 0xC4, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x74, 0x00, 0xAF, 0x00, 0xE9, 0x01, 0x23, 0x01, 0x5D, 0x01, 0x97, 0x01, 0xD2, 0x02, 0x0C, 0x02, 0x46, 0x02, 0x81, 0x02, 0xBB, 0x02, 0xF5, 0x03, 0x2F, 0x03, 0x6A, 0x03, 0xA4, 0x03, 0xDF, 0x04, 0x19, 0x04, 0x53, 0x04, 0x8E, 0x04, 0xC8, 0x05, 0x03, 0x05, 0x3D, 0x05, 0x78, 0x05, 0xB2, 0x05, 0xEC, 0x06, 0x27, 0x06, 0x61, 0x06, 0x9C, 0x06, 0xD7, 0x07, 0x11, 0x07, 0x4C, 0x07, 0x86, 0x07, 0xC1, 0x07, 0xFB, 0x08, 0x36, 0x08, 0x71, 0x08, 0xAB, 0x08, 0xE6, 0x09, 0x21, 0x09, 0x5B, 0x09, 0x96, 0x09, 0xD1, 0x0A, 0x0B, 0x0A, 0x46, 0x0A, 0x81, 0x0A, 0xBC, 0x0A, 0xF6, 0x0B, 0x31, 0x0B, 0x6C, 0x0B, 0xA7, 0x0B, 0xE2, 0x0C, 0x1C, 0x0C, 0x57, 0x0C, 0x92, 0x0C, 0xCD, 0x0D, 0x08, 0x0D, 0x43, 0x0D, 0x7E, 0x0D, 0xB9, 0x0D, 0xF4, 0x0E, 0x2E, 0x0E, 0x69, 0x0E, 0xA4, 0x0E, 0xDF, 0x0F, 0x1A, 0x0F, 0x55, 0x0F, 0x90, 0x0F, 0xCB, 0x10, 0x07, 0x10, 0x42, 0x10, 0x7D, 0x10, 0xB8, 0x10, 0xF3, 0x11, 0x2E, 0x11, 0x69, 0x11, 0xA4, 0x11, 0xDF, 0x12, 0x1B, 0x12, 0x56, 0x12, 0x91, 0x12, 0xCC, 0x13, 0x07, 0x13, 0x43, 0x13, 0x7E, 0x13, 0xB9, 0x13, 0xF4, 0x14, 0x30, 0x14, 0x6B, 0x14, 0xA6, 0x14, 0xE1, 0x15, 0x1D, 0x15, 0x58, 0x15, 0x93, 0x15, 0xCF, 0x16, 0x0A, 0x16, 0x45, 0x16, 0x81, 0x16, 0xBC, 0x16, 0xF8, 0x17, 0x33, 0x17, 0x6E, 0x17, 0xAA, 0x17, 0xE5, 0x18, 0x21, 0x18, 0x5C, 0x18, 0x98, 0x18, 0xD3, 0x19, 0x0F, 0x19, 0x4A, 0x19, 0x86, 0x19, 0xC1, 0x19, 0xFD, 0x1A, 0x38, 0x1A, 0x74, 0x1A, 0xB0, 0x1A, 0xEB, 0x1B, 0x27, 0x1B, 0x62, 0x1B, 0x9E, 0x1B, 0xDA, 0x1C, 0x15, 0x1C, 0x51, 0x1C, 0x8D, 0x1C, 0xC8, 0x1D, 0x04, 0x1D, 0x40, 0x1D, 0x7F, 0x1D, 0xC7, 0x1E, 0x11, 0x1E, 0x5B, 0x1E, 0xA5, 0x1E, 0xEF, 0x1F, 0x38, 0x1F, 0x82, 0x1F, 0xCC, 0x20, 0x16, 0x20, 0x60, 0x20, 0xAA, 0x20, 0xF4, 0x21, 0x3E, 0x21, 0x88, 0x21, 0xD2, 0x22, 0x1C, 0x22, 0x66, 0x22, 0xB0, 0x22, 0xFB, 0x23, 0x45, 0x23, 0x8F, 0x23, 0xD9, 0x24, 0x23, 0x24, 0x6D, 0x24, 0xB8, 0x25, 0x02, 0x25, 0x4C, 0x25, 0x96, 0x25, 0xE1, 0x26, 0x2B, 0x26, 0x75, 0x26, 0xC0, 0x27, 0x0A, 0x27, 0x55, 0x27, 0x9F, 0x27, 0xE9, 0x28, 0x34, 0x28, 0x7E, 0x28, 0xC9, 0x29, 0x13, 0x29, 0x5E, 0x29, 0xA8, 0x29, 0xF3, 0x2A, 0x3D, 0x2A, 0x88, 0x2A, 0xD2, 0x2B, 0x1D, 0x2B, 0x68, 0x2B, 0xB2, 0x2B, 0xFD, 0x2C, 0x47, 0x2C, 0x92, 0x2C, 0xDD, 0x2D, 0x27, 0x2D, 0x72, 0x2D, 0xBD, 0x2E, 0x08, 0x2E, 0x52, 0x2E, 0x9D, 0x2E, 0xE8, 0x2F, 0x33, 0x2F, 0x7E, 0x2F, 0xC8, 0x30, 0x13, 0x30, 0x5E, 0x30, 0xA9, 0x30, 0xF4, 0x31, 0x3F, 0x31, 0x8A, 0x31, 0xD5, 0x32, 0x20, 0x32, 0x6B, 0x32, 0xB6, 0x33, 0x01, 0x33, 0x4C, 0x33, 0x97, 0x33, 0xE2, 0x34, 0x2D, 0x34, 0x79, 0x34, 0xC4, 0x35, 0x0F, 0x35, 0x5A, 0x35, 0xA5, 0x35, 0xF1, 0x36, 0x3C, 0x36, 0x87, 0x36, 0xD2, 0x37, 0x1D, 0x37, 0x68, 0x37, 0xB3, 0x37, 0xFE, 0x38, 0x49, 0x38, 0x94, 0x38, 0xDF, 0x39, 0x2A, 0x39, 0x75, 0x39, 0xBF, 0x3A, 0x0A, 0x3A, 0x55, 0x3A, 0x9F, 0x3A, 0xEA, 0x3B, 0x35, 0x3B, 0x7F, 0x3B, 0xCA, 0x3C, 0x14, 0x3C, 0x5F, 0x3C, 0xA9, 0x3C, 0xF4, 0x3D, 0x3E, 0x3D, 0x89, 0x3D, 0xD3, 0x3E, 0x1D, 0x3E, 0x68, 0x3E, 0xB2, 0x3E, 0xFC, 0x3F, 0x47, 0x3F, 0x91, 0x3F, 0xDB, 0x40, 0x25, 0x40, 0x6F, 0x40, 0xB9, 0x41, 0x03, 0x41, 0x4D, 0x41, 0x97, 0x41, 0xE1, 0x42, 0x2B, 0x42, 0x75, 0x42, 0xBF, 0x43, 0x09, 0x43, 0x53, 0x43, 0x9D, 0x43, 0xE7, 0x44, 0x32, 0x44, 0x7C, 0x44, 0xC6, 0x45, 0x10, 0x45, 0x5A, 0x45, 0xA4, 0x45, 0xEE, 0x46, 0x39, 0x46, 0x83, 0x46, 0xCD, 0x47, 0x17, 0x47, 0x62, 0x47, 0xAC, 0x47, 0xF6, 0x48, 0x40, 0x48, 0x8B, 0x48, 0xD5, 0x49, 0x1F, 0x49, 0x6A, 0x49, 0xB4, 0x49, 0xFF, 0x4A, 0x49, 0x4A, 0x93, 0x4A, 0xDE, 0x4B, 0x28, 0x4B, 0x73, 0x4B, 0xBD, 0x4C, 0x08, 0x4C, 0x52, 0x4C, 0x9D, 0x4C, 0xE7, 0x4D, 0x32, 0x4D, 0x7D, 0x4D, 0xC7, 0x4E, 0x12, 0x4E, 0x5D, 0x4E, 0xA7, 0x4E, 0xF2, 0x4F, 0x3D, 0x4F, 0x87, 0x4F, 0xD2, 0x50, 0x1D, 0x50, 0x68, 0x50, 0xB3, 0x50, 0xFD, 0x51, 0x48, 0x51, 0x93, 0x51, 0xDE, 0x52, 0x29, 0x52, 0x74, 0x52, 0xBF, 0x53, 0x0A, 0x53, 0x55, 0x53, 0xA0, 0x53, 0xEB, 0x54, 0x36, 0x54, 0x81, 0x54, 0xCC, 0x55, 0x18, 0x55, 0x63, 0x55, 0xAE, 0x55, 0xF9, 0x56, 0x44, 0x56, 0x90, 0x56, 0xDB, 0x57, 0x26, 0x57, 0x72, 0x57, 0xBD, 0x58, 0x08, 0x58, 0x54, 0x58, 0x9F, 0x58, 0xEB, 0x59, 0x36, 0x59, 0x82, 0x59, 0xCD, 0x5A, 0x19, 0x5A, 0x64, 0x5A, 0xAF, 0x5A, 0xFB, 0x5B, 0x46, 0x5B, 0x91, 0x5B, 0xDC, 0x5C, 0x27, 0x5C, 0x72, 0x5C, 0xBC, 0x5D, 0x07, 0x5D, 0x52, 0x5D, 0x9C, 0x5D, 0xE6, 0x5E, 0x31, 0x5E, 0x7B, 0x5E, 0xC5, 0x5F, 0x0F, 0x5F, 0x59, 0x5F, 0xA3, 0x5F, 0xED, 0x60, 0x37, 0x60, 0x81, 0x60, 0xCA, 0x61, 0x14, 0x61, 0x5D, 0x61, 0xA7, 0x61, 0xF0, 0x62, 0x39, 0x62, 0x82, 0x62, 0xCB, 0x63, 0x14, 0x63, 0x5D, 0x63, 0xA6, 0x63, 0xEF, 0x64, 0x38, 0x64, 0x80, 0x64, 0xC9, 0x65, 0x11, 0x65, 0x5A, 0x65, 0xA2, 0x65, 0xEA, 0x66, 0x33, 0x66, 0x7B, 0x66, 0xC3, 0x67, 0x0B, 0x67, 0x53, 0x67, 0x9B, 0x67, 0xE5, 0x68, 0x33, 0x68, 0x82, 0x68, 0xD0, 0x69, 0x1F, 0x69, 0x6D, 0x69, 0xBB, 0x6A, 0x09, 0x6A, 0x57, 0x6A, 0xA5, 0x6A, 0xF3, 0x6B, 0x41, 0x6B, 0x8E, 0x6B, 0xDC, 0x6C, 0x2A, 0x6C, 0x77, 0x6C, 0xC5, 0x6D, 0x13, 0x6D, 0x60, 0x6D, 0xAE, 0x6D, 0xFB, 0x6E, 0x48, 0x6E, 0x96, 0x6E, 0xE3, 0x6F, 0x31, 0x6F, 0x7E, 0x6F, 0xCB, 0x70, 0x18, 0x70, 0x66, 0x70, 0xB3, 0x71, 0x00, 0x71, 0x4D, 0x71, 0x9A, 0x71, 0xE7, 0x72, 0x34, 0x72, 0x81, 0x72, 0xCE, 0x73, 0x1B, 0x73, 0x68, 0x73, 0xB5, 0x74, 0x02, 0x74, 0x4F, 0x74, 0x9B, 0x74, 0xE8, 0x75, 0x35, 0x75, 0x82, 0x75, 0xCE, 0x76, 0x1B, 0x76, 0x67, 0x76, 0xB4, 0x77, 0x00, 0x77, 0x4D, 0x77, 0x99, 0x77, 0xE5, 0x78, 0x32, 0x78, 0x7E, 0x78, 0xCA, 0x79, 0x16, 0x79, 0x63, 0x79, 0xAF, 0x79, 0xFB, 0x7A, 0x47, 0x7A, 0x93, 0x7A, 0xDF, 0x7B, 0x2B, 0x7B, 0x77, 0x7B, 0xC3, 0x7C, 0x0F, 0x7C, 0x5B, 0x7C, 0xA7, 0x7C, 0xF2, 0x7D, 0x3E, 0x7D, 0x8A, 0x7D, 0xD6, 0x7E, 0x21, 0x7E, 0x6D, 0x7E, 0xB8, 0x7F, 0x04, 0x7F, 0x50, 0x7F, 0x9B, 0x7F, 0xE6, 0x80, 0x32, 0x80, 0x7D, 0x80, 0xC9, 0x81, 0x14, 0x81, 0x5F, 0x81, 0xAA, 0x81, 0xF6, 0x82, 0x41, 0x82, 0x8C, 0x82, 0xD7, 0x83, 0x22, 0x83, 0x6D, 0x83, 0xB9, 0x84, 0x04, 0x84, 0x4F, 0x84, 0x9A, 0x84, 0xE5, 0x85, 0x30, 0x85, 0x7B, 0x85, 0xC6, 0x86, 0x11, 0x86, 0x5C, 0x86, 0xA7, 0x86, 0xF2, 0x87, 0x3D, 0x87, 0x88, 0x87, 0xD3, 0x88, 0x1E, 0x88, 0x68, 0x88, 0xB3, 0x88, 0xFE, 0x89, 0x48, 0x89, 0x93, 0x89, 0xDD, 0x8A, 0x28, 0x8A, 0x72, 0x8A, 0xBD, 0x8B, 0x07, 0x8B, 0x51, 0x8B, 0x9C, 0x8B, 0xE6, 0x8C, 0x30, 0x8C, 0x7A, 0x8C, 0xC5, 0x8D, 0x0F, 0x8D, 0x59, 0x8D, 0xA3, 0x8D, 0xF7, 0x8E, 0x54, 0x8E, 0xB2, 0x8F, 0x0F, 0x8F, 0x6C, 0x8F, 0xC9, 0x90, 0x27, 0x90, 0x84, 0x90, 0xE1, 0x91, 0x3E, 0x91, 0x9B, 0x91, 0xF8, 0x92, 0x55, 0x92, 0xB1, 0x93, 0x0E, 0x93, 0x6B, 0x93, 0xC7, 0x94, 0x24, 0x94, 0x80, 0x94, 0xDD, 0x95, 0x39, 0x95, 0x95, 0x95, 0xF2, 0x96, 0x4E, 0x96, 0xAA, 0x97, 0x06, 0x97, 0x62, 0x97, 0xBE, 0x98, 0x19, 0x98, 0x75, 0x98, 0xD1, 0x99, 0x2D, 0x99, 0x88, 0x99, 0xE4, 0x9A, 0x40, 0x9A, 0x9B, 0x9A, 0xF6, 0x9B, 0x52, 0x9B, 0xAD, 0x9C, 0x08, 0x9C, 0x64, 0x9C, 0xBF, 0x9D, 0x1A, 0x9D, 0x75, 0x9D, 0xD0, 0x9E, 0x2A, 0x9E, 0x85, 0x9E, 0xDF, 0x9F, 0x3A, 0x9F, 0x94, 0x9F, 0xEE, 0xA0, 0x48, 0xA0, 0xA1, 0xA0, 0xFB, 0xA1, 0x54, 0xA1, 0xAE, 0xA2, 0x07, 0xA2, 0x60, 0xA2, 0xB9, 0xA3, 0x12, 0xA3, 0x6A, 0xA3, 0xC3, 0xA4, 0x1B, 0xA4, 0x74, 0xA4, 0xCC, 0xA5, 0x24, 0xA5, 0x7C, 0xA5, 0xD3, 0xA6, 0x2B, 0xA6, 0x83, 0xA6, 0xDA, 0xA7, 0x31, 0xA7, 0x89, 0xA7, 0xE0, 0xA8, 0x36, 0xA8, 0x8D, 0xA8, 0xE4, 0xA9, 0x3A, 0xA9, 0x91, 0xA9, 0xE7, 0xAA, 0x3D, 0xAA, 0x93, 0xAA, 0xE9, 0xAB, 0x3F, 0xAB, 0x95, 0xAB, 0xEB, 0xAC, 0x40, 0xAC, 0x96, 0xAC, 0xEC, 0xAD, 0x41, 0xAD, 0x97, 0xAD, 0xED, 0xAE, 0x43, 0xAE, 0x98, 0xAE, 0xEE, 0xAF, 0x44, 0xAF, 0x9A, 0xAF, 0xF0, 0xB0, 0x46, 0xB0, 0x9C, 0xB0, 0xF2, 0xB1, 0x48, 0xB1, 0x9E, 0xB1, 0xF4, 0xB2, 0x4A, 0xB2, 0xA0, 0xB2, 0xF6, 0xB3, 0x4C, 0xB3, 0xA2, 0xB3, 0xF8, 0xB4, 0x4E, 0xB4, 0xA4, 0xB4, 0xFB, 0xB5, 0x51, 0xB5, 0xA7, 0xB5, 0xFD, 0xB6, 0x53, 0xB6, 0xAA, 0xB7, 0x00, 0xB7, 0x56, 0xB7, 0xAD, 0xB8, 0x03, 0xB8, 0x59, 0xB8, 0xB0, 0xB9, 0x06, 0xB9, 0x5D, 0xB9, 0xB3, 0xBA, 0x09, 0xBA, 0x5B, 0xBA, 0xA9, 0xBA, 0xF7, 0xBB, 0x45, 0xBB, 0x93, 0xBB, 0xE1, 0xBC, 0x2F, 0xBC, 0x7E, 0xBC, 0xCC, 0xBD, 0x1A, 0xBD, 0x68, 0xBD, 0xB6, 0xBE, 0x05, 0xBE, 0x53, 0xBE, 0xA1, 0xBE, 0xEF, 0xBF, 0x3E, 0xBF, 0x8C, 0xBF, 0xDB, 0xC0, 0x29, 0xC0, 0x78, 0xC0, 0xC6, 0xC1, 0x15, 0xC1, 0x64, 0xC1, 0xB3, 0xC2, 0x02, 0xC2, 0x51, 0xC2, 0xA0, 0xC2, 0xEF, 0xC3, 0x3E, 0xC3, 0x8D, 0xC3, 0xDD, 0xC4, 0x2C, 0xC4, 0x7B, 0xC4, 0xCB, 0xC5, 0x1B, 0xC5, 0x6A, 0xC5, 0xBA, 0xC6, 0x0A, 0xC6, 0x5A, 0xC6, 0xA9, 0xC6, 0xF9, 0xC7, 0x49, 0xC7, 0x9A, 0xC7, 0xEA, 0xC8, 0x3A, 0xC8, 0x8A, 0xC8, 0xDB, 0xC9, 0x2B, 0xC9, 0x7B, 0xC9, 0xCC, 0xCA, 0x1C, 0xCA, 0x6D, 0xCA, 0xBE, 0xCB, 0x0F, 0xCB, 0x60, 0xCB, 0xB1, 0xCC, 0x02, 0xCC, 0x53, 0xCC, 0xA5, 0xCC, 0xF7, 0xCD, 0x48, 0xCD, 0x9A, 0xCD, 0xEC, 0xCE, 0x3E, 0xCE, 0x91, 0xCE, 0xE3, 0xCF, 0x36, 0xCF, 0x88, 0xCF, 0xDB, 0xD0, 0x2E, 0xD0, 0x81, 0xD0, 0xD4, 0xD1, 0x27, 0xD1, 0x7B, 0xD1, 0xCE, 0xD2, 0x22, 0xD2, 0x76, 0xD2, 0xCA, 0xD3, 0x1E, 0xD3, 0x72, 0xD3, 0xC7, 0xD4, 0x1B, 0xD4, 0x70, 0xD4, 0xC4, 0xD5, 0x19, 0xD5, 0x6E, 0xD5, 0xC4, 0xD6, 0x19, 0xD6, 0x6F, 0xD6, 0xC4, 0xD7, 0x1A, 0xD7, 0x70, 0xD7, 0xC6, 0xD8, 0x1C, 0xD8, 0x72, 0xD8, 0xC9, 0xD9, 0x20, 0xD9, 0x76, 0xD9, 0xCD, 0xDA, 0x24, 0xDA, 0x7C, 0xDA, 0xD3, 0xDB, 0x2B, 0xDB, 0x82, 0xDB, 0xDA, 0xDC, 0x32, 0xDC, 0x8A, 0xDC, 0xE3, 0xDD, 0x3B, 0xDD, 0x94, 0xDD, 0xED, 0xDE, 0x46, 0xDE, 0x9F, 0xDE, 0xF8, 0xDF, 0x52, 0xDF, 0xAB, 0xE0, 0x05, 0xE0, 0x5F, 0xE0, 0xB9, 0xE1, 0x13, 0xE1, 0x6E, 0xE1, 0xC8, 0xE2, 0x23, 0xE2, 0x7E, 0xE2, 0xD9, 0xE3, 0x35, 0xE3, 0x88, 0xE3, 0xBF, 0xE3, 0xDF, 0xE3, 0xFF, 0xE4, 0x1F, 0xE4, 0x3F, 0xE4, 0x5F, 0xE4, 0x7F, 0xE4, 0x9F, 0xE4, 0xBF, 0xE4, 0xDF, 0xE4, 0xFF, 0xE5, 0x1F, 0xE5, 0x40, 0xE5, 0x60, 0xE5, 0x80, 0xE5, 0xA0, 0xE5, 0xC0, 0xE5, 0xE1, 0xE6, 0x01, 0xE6, 0x21, 0xE6, 0x42, 0xE6, 0x62, 0xE6, 0x82, 0xE6, 0xA3, 0xE6, 0xC3, 0xE6, 0xE4, 0xE7, 0x04, 0xE7, 0x25, 0xE7, 0x45, 0xE7, 0x66, 0xE7, 0x86, 0xE7, 0xA7, 0xE7, 0xC8, 0xE7, 0xE8, 0xE8, 0x09, 0xE8, 0x29, 0xE8, 0x4A, 0xE8, 0x6B, 0xE8, 0x8C, 0xE8, 0xAC, 0xE8, 0xCD, 0xE8, 0xEE, 0xE9, 0x0F, 0xE9, 0x30, 0xE9, 0x51, 0xE9, 0x71, 0xE9, 0x92, 0xE9, 0xB3, 0xE9, 0xD4, 0xE9, 0xF5, 0xEA, 0x16, 0xEA, 0x37, 0xEA, 0x58, 0xEA, 0x7A, 0xEA, 0x9B, 0xEA, 0xBC, 0xEA, 0xDD, 0xEA, 0xFE, 0xEB, 0x1F, 0xEB, 0x41, 0xEB, 0x62, 0xEB, 0x83, 0xEB, 0xA4, 0xEB, 0xC6, 0xEB, 0xE7, 0xEC, 0x09, 0xEC, 0x2A, 0xEC, 0x4B, 0xEC, 0x6D, 0xEC, 0x8E, 0xEC, 0xB0, 0xEC, 0xD1, 0xEC, 0xF3, 0xED, 0x14, 0xED, 0x36, 0xED, 0x58, 0xED, 0x79, 0xED, 0x9B, 0xED, 0xBD, 0xED, 0xDE, 0xEE, 0x00, 0xEE, 0x22, 0xEE, 0x44, 0xEE, 0x65, 0xEE, 0x87, 0xEE, 0xA9, 0xEE, 0xCB, 0xEE, 0xED, 0xEF, 0x0F, 0xEF, 0x31, 0xEF, 0x53, 0xEF, 0x75, 0xEF, 0x97, 0xEF, 0xB9, 0xEF, 0xDB, 0xEF, 0xFD, 0xF0, 0x1F, 0xF0, 0x41, 0xF0, 0x64, 0xF0, 0x86, 0xF0, 0xA8, 0xF0, 0xCA, 0xF0, 0xED, 0xF1, 0x0F, 0xF1, 0x31, 0xF1, 0x54, 0xF1, 0x76, 0xF1, 0x98, 0xF1, 0xBB, 0xF1, 0xDD, 0xF2, 0x00, 0xF2, 0x22, 0xF2, 0x45, 0xF2, 0x67, 0xF2, 0x8A, 0xF2, 0xAC, 0xF2, 0xCF, 0xF2, 0xF2, 0xF3, 0x14, 0xF3, 0x37, 0xF3, 0x5A, 0xF3, 0x7D, 0xF3, 0x9F, 0xF3, 0xC2, 0xF3, 0xE5, 0xF4, 0x08, 0xF4, 0x2B, 0xF4, 0x49, 0xF4, 0x63, 0xF4, 0x7D, 0xF4, 0x93, 0xF4, 0xAA, 0xF4, 0xC1, 0xF4, 0xD7, 0xF4, 0xEE, 0xF5, 0x05, 0xF5, 0x1C, 0xF5, 0x32, 0xF5, 0x49, 0xF5, 0x60, 0xF5, 0x77, 0xF5, 0x8E, 0xF5, 0xA4, 0xF5, 0xBB, 0xF5, 0xD2, 0xF5, 0xE9, 0xF6, 0x00, 0xF6, 0x17, 0xF6, 0x2E, 0xF6, 0x44, 0xF6, 0x5B, 0xF6, 0x72, 0xF6, 0x89, 0xF6, 0xA0, 0xF6, 0xB7, 0xF6, 0xCE, 0xF6, 0xE5, 0xF6, 0xFC, 0xF7, 0x13, 0xF7, 0x2A, 0xF7, 0x41, 0xF7, 0x58, 0xF7, 0x6F, 0xF7, 0x86, 0xF7, 0x9D, 0xF7, 0xB4, 0xF7, 0xCB, 0xF7, 0xE2, 0xF7, 0xF9, 0xF8, 0x11, 0xF8, 0x28, 0xF8, 0x3F, 0xF8, 0x56, 0xF8, 0x6D, 0xF8, 0x84, 0xF8, 0x9B, 0xF8, 0xB3, 0xF8, 0xCA, 0xF8, 0xE1, 0xF8, 0xF8, 0xF9, 0x10, 0xF9, 0x27, 0xF9, 0x3E, 0xF9, 0x55, 0xF9, 0x6D, 0xF9, 0x84, 0xF9, 0x9B, 0xF9, 0xB3, 0xF9, 0xCA, 0xF9, 0xE1, 0xF9, 0xF9, 0xFA, 0x10, 0xFA, 0x27, 0xFA, 0x3F, 0xFA, 0x56, 0xFA, 0x6D, 0xFA, 0x85, 0xFA, 0x9C, 0xFA, 0xB4, 0xFA, 0xCB, 0xFA, 0xE3, 0xFA, 0xFA, 0xFB, 0x12, 0xFB, 0x29, 0xFB, 0x41, 0xFB, 0x58, 0xFB, 0x70, 0xFB, 0x87, 0xFB, 0x9F, 0xFB, 0xB6, 0xFB, 0xCE, 0xFB, 0xE6, 0xFB, 0xFD, 0xFC, 0x15, 0xFC, 0x2C, 0xFC, 0x44, 0xFC, 0x5C, 0xFC, 0x73, 0xFC, 0x8B, 0xFC, 0xA3, 0xFC, 0xBA, 0xFC, 0xD2, 0xFC, 0xEA, 0xFD, 0x01, 0xFD, 0x19, 0xFD, 0x31, 0xFD, 0x49, 0xFD, 0x61, 0xFD, 0x78, 0xFD, 0x90, 0xFD, 0xA8, 0xFD, 0xC0, 0xFD, 0xD8, 0xFD, 0xEF, 0xFE, 0x07, 0xFE, 0x1F, 0xFE, 0x37, 0xFE, 0x4F, 0xFE, 0x67, 0xFE, 0x7F, 0xFE, 0x97, 0xFE, 0xAF, 0xFE, 0xC7, 0xFE, 0xDF, 0xFE, 0xF7, 0xFF, 0x0E, 0xFF, 0x26, 0xFF, 0x3E, 0xFF, 0x57, 0xFF, 0x6F, 0xFF, 0x87, 0xFF, 0x9F, 0xFF, 0xB7, 0xFF, 0xCF, 0xFF, 0xE7, 0xFF, 0xFF, 0x6D, 0x66, 0x74, 0x32, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x1D, 0x02, 0x39, 0x03, 0x55, 0x04, 0x70, 0x05, 0x8A, 0x06, 0xA3, 0x07, 0xBC, 0x08, 0xD4, 0x09, 0xEB, 0x0B, 0x01, 0x0C, 0x17, 0x0D, 0x2C, 0x0E, 0x40, 0x0F, 0x54, 0x10, 0x67, 0x11, 0x79, 0x12, 0x8B, 0x13, 0x9B, 0x14, 0xAC, 0x15, 0xBB, 0x16, 0xCA, 0x17, 0xD8, 0x18, 0xE5, 0x19, 0xF2, 0x1A, 0xFF, 0x1C, 0x0A, 0x1D, 0x15, 0x1E, 0x1F, 0x1F, 0x29, 0x20, 0x32, 0x21, 0x3A, 0x22, 0x41, 0x23, 0x48, 0x24, 0x4E, 0x25, 0x54, 0x26, 0x58, 0x27, 0x5C, 0x28, 0x5F, 0x29, 0x62, 0x2A, 0x63, 0x2B, 0x64, 0x2C, 0x64, 0x2D, 0x63, 0x2E, 0x62, 0x2F, 0x60, 0x30, 0x5D, 0x31, 0x5A, 0x32, 0x56, 0x33, 0x51, 0x34, 0x4C, 0x35, 0x46, 0x36, 0x40, 0x37, 0x38, 0x38, 0x30, 0x39, 0x27, 0x3A, 0x1D, 0x3B, 0x13, 0x3C, 0x07, 0x3C, 0xFB, 0x3D, 0xEE, 0x3E, 0xE0, 0x3F, 0xD1, 0x40, 0xC2, 0x41, 0xB2, 0x42, 0xA3, 0x43, 0x94, 0x44, 0x86, 0x45, 0x79, 0x46, 0x6C, 0x47, 0x60, 0x48, 0x55, 0x49, 0x4A, 0x4A, 0x40, 0x4B, 0x36, 0x4C, 0x2E, 0x4D, 0x26, 0x4E, 0x1F, 0x4F, 0x19, 0x50, 0x13, 0x51, 0x0E, 0x52, 0x0A, 0x53, 0x07, 0x54, 0x05, 0x55, 0x03, 0x56, 0x02, 0x57, 0x01, 0x58, 0x02, 0x59, 0x02, 0x5A, 0x03, 0x5B, 0x05, 0x5C, 0x06, 0x5D, 0x09, 0x5E, 0x0C, 0x5F, 0x0F, 0x60, 0x13, 0x61, 0x17, 0x62, 0x1B, 0x63, 0x20, 0x64, 0x26, 0x65, 0x2C, 0x66, 0x32, 0x67, 0x39, 0x68, 0x41, 0x69, 0x49, 0x6A, 0x52, 0x6B, 0x5C, 0x6C, 0x67, 0x6D, 0x72, 0x6E, 0x7F, 0x6F, 0x8C, 0x70, 0x9A, 0x71, 0xA8, 0x72, 0xB8, 0x73, 0xC8, 0x74, 0xD8, 0x75, 0xEA, 0x76, 0xFD, 0x78, 0x10, 0x79, 0x24, 0x7A, 0x39, 0x7B, 0x4E, 0x7C, 0x65, 0x7D, 0x7C, 0x7E, 0x94, 0x7F, 0xAD, 0x80, 0xC7, 0x81, 0xE2, 0x82, 0xFD, 0x84, 0x17, 0x85, 0x30, 0x86, 0x49, 0x87, 0x61, 0x88, 0x77, 0x89, 0x8E, 0x8A, 0xA3, 0x8B, 0xB8, 0x8C, 0xCB, 0x8D, 0xDE, 0x8E, 0xF1, 0x90, 0x02, 0x91, 0x13, 0x92, 0x23, 0x93, 0x32, 0x94, 0x40, 0x95, 0x4E, 0x96, 0x5A, 0x97, 0x66, 0x98, 0x72, 0x99, 0x7C, 0x9A, 0x86, 0x9B, 0x8F, 0x9C, 0x98, 0x9D, 0xA0, 0x9E, 0xA7, 0x9F, 0xAD, 0xA0, 0xB1, 0xA1, 0xB5, 0xA2, 0xB8, 0xA3, 0xBA, 0xA4, 0xBC, 0xA5, 0xBC, 0xA6, 0xBB, 0xA7, 0xB9, 0xA8, 0xB6, 0xA9, 0xB3, 0xAA, 0xAE, 0xAB, 0xA9, 0xAC, 0xA2, 0xAD, 0x9B, 0xAE, 0x93, 0xAF, 0x8A, 0xB0, 0x81, 0xB1, 0x76, 0xB2, 0x6B, 0xB3, 0x5E, 0xB4, 0x51, 0xB5, 0x43, 0xB6, 0x34, 0xB7, 0x25, 0xB8, 0x14, 0xB9, 0x03, 0xB9, 0xF1, 0xBA, 0xDE, 0xBB, 0xCA, 0xBC, 0xB5, 0xBD, 0x9F, 0xBE, 0x89, 0xBF, 0x71, 0xC0, 0x59, 0xC1, 0x40, 0xC2, 0x26, 0xC3, 0x0C, 0xC3, 0xF4, 0xC4, 0xDB, 0xC5, 0xC3, 0xC6, 0xAC, 0xC7, 0x95, 0xC8, 0x7E, 0xC9, 0x68, 0xCA, 0x53, 0xCB, 0x3E, 0xCC, 0x29, 0xCD, 0x15, 0xCE, 0x01, 0xCE, 0xEE, 0xCF, 0xDC, 0xD0, 0xCA, 0xD1, 0xBA, 0xD2, 0xAA, 0xD3, 0x9A, 0xD4, 0x8C, 0xD5, 0x7E, 0xD6, 0x71, 0xD7, 0x65, 0xD8, 0x5A, 0xD9, 0x50, 0xDA, 0x47, 0xDB, 0x3F, 0xDC, 0x38, 0xDD, 0x31, 0xDE, 0x2C, 0xDF, 0x28, 0xE0, 0x25, 0xE1, 0x23, 0xE2, 0x22, 0xE3, 0x22, 0xE4, 0x23, 0xE5, 0x25, 0xE6, 0x28, 0xE7, 0x2D, 0xE8, 0x33, 0xE9, 0x39, 0xEA, 0x41, 0xEB, 0x4A, 0xEC, 0x54, 0xED, 0x60, 0xEE, 0x6C, 0xEF, 0x7A, 0xF0, 0x89, 0xF1, 0x99, 0xF2, 0xAA, 0xF3, 0xBD, 0xF4, 0xD1, 0xF5, 0xE6, 0xF6, 0xFC, 0xF8, 0x13, 0xF9, 0x2C, 0xFA, 0x46, 0xFB, 0x61, 0xFC, 0x7E, 0xFD, 0x9C, 0xFE, 0xBB, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF9, 0x01, 0xF3, 0x02, 0xED, 0x03, 0xE7, 0x04, 0xE1, 0x05, 0xDB, 0x06, 0xD5, 0x07, 0xCF, 0x08, 0xCA, 0x09, 0xC4, 0x0A, 0xBE, 0x0B, 0xB8, 0x0C, 0xB3, 0x0D, 0xAD, 0x0E, 0xA7, 0x0F, 0xA2, 0x10, 0x9C, 0x11, 0x97, 0x12, 0x92, 0x13, 0x8C, 0x14, 0x87, 0x15, 0x82, 0x16, 0x7D, 0x17, 0x78, 0x18, 0x73, 0x19, 0x6F, 0x1A, 0x6A, 0x1B, 0x65, 0x1C, 0x61, 0x1D, 0x5C, 0x1E, 0x58, 0x1F, 0x53, 0x20, 0x4F, 0x21, 0x4B, 0x22, 0x47, 0x23, 0x44, 0x24, 0x40, 0x25, 0x3D, 0x26, 0x39, 0x27, 0x35, 0x28, 0x31, 0x29, 0x2D, 0x2A, 0x29, 0x2B, 0x25, 0x2C, 0x20, 0x2D, 0x1C, 0x2E, 0x18, 0x2F, 0x14, 0x30, 0x10, 0x31, 0x0C, 0x32, 0x09, 0x33, 0x06, 0x34, 0x03, 0x35, 0x02, 0x36, 0x01, 0x37, 0x01, 0x38, 0x01, 0x39, 0x02, 0x3A, 0x04, 0x3B, 0x06, 0x3C, 0x09, 0x3D, 0x0D, 0x3E, 0x11, 0x3F, 0x16, 0x40, 0x1B, 0x41, 0x21, 0x42, 0x26, 0x43, 0x2B, 0x44, 0x30, 0x45, 0x35, 0x46, 0x3A, 0x47, 0x3F, 0x48, 0x44, 0x49, 0x49, 0x4A, 0x4F, 0x4B, 0x54, 0x4C, 0x5A, 0x4D, 0x60, 0x4E, 0x66, 0x4F, 0x6C, 0x50, 0x72, 0x51, 0x78, 0x52, 0x7F, 0x53, 0x85, 0x54, 0x8C, 0x55, 0x93, 0x56, 0x99, 0x57, 0xA0, 0x58, 0xA7, 0x59, 0xAF, 0x5A, 0xB6, 0x5B, 0xBD, 0x5C, 0xC4, 0x5D, 0xCC, 0x5E, 0xD4, 0x5F, 0xDC, 0x60, 0xE4, 0x61, 0xEC, 0x62, 0xF4, 0x63, 0xFD, 0x65, 0x05, 0x66, 0x0E, 0x67, 0x17, 0x68, 0x20, 0x69, 0x29, 0x6A, 0x31, 0x6B, 0x3A, 0x6C, 0x42, 0x6D, 0x49, 0x6E, 0x51, 0x6F, 0x58, 0x70, 0x5F, 0x71, 0x66, 0x72, 0x6C, 0x73, 0x72, 0x74, 0x77, 0x75, 0x7B, 0x76, 0x7F, 0x77, 0x82, 0x78, 0x85, 0x79, 0x86, 0x7A, 0x87, 0x7B, 0x87, 0x7C, 0x87, 0x7D, 0x86, 0x7E, 0x83, 0x7F, 0x81, 0x80, 0x7D, 0x81, 0x7A, 0x82, 0x76, 0x83, 0x72, 0x84, 0x6E, 0x85, 0x69, 0x86, 0x64, 0x87, 0x5F, 0x88, 0x59, 0x89, 0x54, 0x8A, 0x4E, 0x8B, 0x48, 0x8C, 0x42, 0x8D, 0x3C, 0x8E, 0x36, 0x8F, 0x30, 0x90, 0x2A, 0x91, 0x24, 0x92, 0x1E, 0x93, 0x19, 0x94, 0x14, 0x95, 0x0F, 0x96, 0x0B, 0x97, 0x07, 0x98, 0x04, 0x99, 0x01, 0x99, 0xFF, 0x9A, 0xFD, 0x9B, 0xFD, 0x9C, 0xFE, 0x9D, 0xFF, 0x9F, 0x02, 0xA0, 0x06, 0xA1, 0x0A, 0xA2, 0x10, 0xA3, 0x16, 0xA4, 0x1D, 0xA5, 0x26, 0xA6, 0x2F, 0xA7, 0x39, 0xA8, 0x44, 0xA9, 0x4F, 0xAA, 0x5C, 0xAB, 0x6A, 0xAC, 0x78, 0xAD, 0x86, 0xAE, 0x94, 0xAF, 0xA3, 0xB0, 0xB2, 0xB1, 0xC2, 0xB2, 0xD2, 0xB3, 0xE2, 0xB4, 0xF3, 0xB6, 0x04, 0xB7, 0x15, 0xB8, 0x26, 0xB9, 0x38, 0xBA, 0x4A, 0xBB, 0x5B, 0xBC, 0x6D, 0xBD, 0x7F, 0xBE, 0x91, 0xBF, 0xA3, 0xC0, 0xB5, 0xC1, 0xC8, 0xC2, 0xD9, 0xC3, 0xEA, 0xC4, 0xFB, 0xC6, 0x0A, 0xC7, 0x1A, 0xC8, 0x28, 0xC9, 0x36, 0xCA, 0x44, 0xCB, 0x51, 0xCC, 0x5D, 0xCD, 0x69, 0xCE, 0x75, 0xCF, 0x7F, 0xD0, 0x89, 0xD1, 0x92, 0xD2, 0x9A, 0xD3, 0xA1, 0xD4, 0xA7, 0xD5, 0xAB, 0xD6, 0xAF, 0xD7, 0xB2, 0xD8, 0xB4, 0xD9, 0xB6, 0xDA, 0xB6, 0xDB, 0xB6, 0xDC, 0xB5, 0xDD, 0xB3, 0xDE, 0xB0, 0xDF, 0xAE, 0xE0, 0xAA, 0xE1, 0xA7, 0xE2, 0xA2, 0xE3, 0x9E, 0xE4, 0x98, 0xE5, 0x93, 0xE6, 0x8C, 0xE7, 0x86, 0xE8, 0x7E, 0xE9, 0x76, 0xEA, 0x6D, 0xEB, 0x64, 0xEC, 0x5A, 0xED, 0x4F, 0xEE, 0x44, 0xEF, 0x38, 0xF0, 0x2C, 0xF1, 0x1F, 0xF2, 0x12, 0xF3, 0x03, 0xF3, 0xF5, 0xF4, 0xE5, 0xF5, 0xD5, 0xF6, 0xC5, 0xF7, 0xB4, 0xF8, 0xA2, 0xF9, 0x90, 0xFA, 0x7D, 0xFB, 0x69, 0xFC, 0x55, 0xFD, 0x40, 0xFE, 0x2B, 0xFF, 0x15, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF2, 0x01, 0xE6, 0x02, 0xD9, 0x03, 0xCD, 0x04, 0xC0, 0x05, 0xB4, 0x06, 0xA8, 0x07, 0x9D, 0x08, 0x91, 0x09, 0x86, 0x0A, 0x7A, 0x0B, 0x6F, 0x0C, 0x64, 0x0D, 0x59, 0x0E, 0x4E, 0x0F, 0x44, 0x10, 0x39, 0x11, 0x2F, 0x12, 0x25, 0x13, 0x1B, 0x14, 0x12, 0x15, 0x08, 0x15, 0xFF, 0x16, 0xF6, 0x17, 0xED, 0x18, 0xE4, 0x19, 0xDC, 0x1A, 0xD4, 0x1B, 0xCC, 0x1C, 0xC5, 0x1D, 0xBD, 0x1E, 0xB6, 0x1F, 0xB0, 0x20, 0xA9, 0x21, 0xA2, 0x22, 0x9C, 0x23, 0x95, 0x24, 0x8F, 0x25, 0x89, 0x26, 0x83, 0x27, 0x7C, 0x28, 0x76, 0x29, 0x70, 0x2A, 0x6A, 0x2B, 0x65, 0x2C, 0x60, 0x2D, 0x5B, 0x2E, 0x56, 0x2F, 0x53, 0x30, 0x4F, 0x31, 0x4C, 0x32, 0x49, 0x33, 0x47, 0x34, 0x45, 0x35, 0x43, 0x36, 0x42, 0x37, 0x41, 0x38, 0x40, 0x39, 0x3F, 0x3A, 0x3F, 0x3B, 0x3F, 0x3C, 0x3F, 0x3D, 0x3F, 0x3E, 0x3F, 0x3F, 0x40, 0x40, 0x42, 0x41, 0x44, 0x42, 0x47, 0x43, 0x4A, 0x44, 0x4E, 0x45, 0x52, 0x46, 0x57, 0x47, 0x5D, 0x48, 0x63, 0x49, 0x6B, 0x4A, 0x72, 0x4B, 0x7B, 0x4C, 0x84, 0x4D, 0x8F, 0x4E, 0x99, 0x4F, 0xA5, 0x50, 0xB2, 0x51, 0xBF, 0x52, 0xCD, 0x53, 0xDC, 0x54, 0xEB, 0x55, 0xFA, 0x57, 0x09, 0x58, 0x17, 0x59, 0x26, 0x5A, 0x34, 0x5B, 0x43, 0x5C, 0x51, 0x5D, 0x5E, 0x5E, 0x6C, 0x5F, 0x79, 0x60, 0x86, 0x61, 0x92, 0x62, 0x9E, 0x63, 0xAA, 0x64, 0xB5, 0x65, 0xC0, 0x66, 0xCB, 0x67, 0xD5, 0x68, 0xDF, 0x69, 0xE9, 0x6A, 0xF2, 0x6B, 0xFB, 0x6D, 0x05, 0x6E, 0x0E, 0x6F, 0x16, 0x70, 0x1F, 0x71, 0x27, 0x72, 0x30, 0x73, 0x38, 0x74, 0x3F, 0x75, 0x47, 0x76, 0x4E, 0x77, 0x55, 0x78, 0x5B, 0x79, 0x61, 0x7A, 0x67, 0x7B, 0x6C, 0x7C, 0x71, 0x7D, 0x76, 0x7E, 0x7A, 0x7F, 0x7D, 0x80, 0x81, 0x81, 0x83, 0x82, 0x86, 0x83, 0x88, 0x84, 0x8A, 0x85, 0x8C, 0x86, 0x8E, 0x87, 0x8F, 0x88, 0x90, 0x89, 0x90, 0x8A, 0x91, 0x8B, 0x91, 0x8C, 0x91, 0x8D, 0x91, 0x8E, 0x91, 0x8F, 0x91, 0x90, 0x90, 0x91, 0x90, 0x92, 0x90, 0x93, 0x90, 0x94, 0x90, 0x95, 0x90, 0x96, 0x91, 0x97, 0x91, 0x98, 0x92, 0x99, 0x93, 0x9A, 0x94, 0x9B, 0x96, 0x9C, 0x97, 0x9D, 0x99, 0x9E, 0x9B, 0x9F, 0x9D, 0xA0, 0x9E, 0xA1, 0xA0, 0xA2, 0xA2, 0xA3, 0xA3, 0xA4, 0xA4, 0xA5, 0xA5, 0xA6, 0xA6, 0xA7, 0xA6, 0xA8, 0xA7, 0xA9, 0xA7, 0xAA, 0xA6, 0xAB, 0xA6, 0xAC, 0xA5, 0xAD, 0xA4, 0xAE, 0xA3, 0xAF, 0xA1, 0xB0, 0x9F, 0xB1, 0x9D, 0xB2, 0x9A, 0xB3, 0x97, 0xB4, 0x94, 0xB5, 0x91, 0xB6, 0x8E, 0xB7, 0x8A, 0xB8, 0x86, 0xB9, 0x81, 0xBA, 0x7D, 0xBB, 0x78, 0xBC, 0x73, 0xBD, 0x6D, 0xBE, 0x68, 0xBF, 0x62, 0xC0, 0x5B, 0xC1, 0x55, 0xC2, 0x4F, 0xC3, 0x4A, 0xC4, 0x44, 0xC5, 0x3E, 0xC6, 0x38, 0xC7, 0x33, 0xC8, 0x2D, 0xC9, 0x28, 0xCA, 0x22, 0xCB, 0x1D, 0xCC, 0x18, 0xCD, 0x13, 0xCE, 0x0E, 0xCF, 0x09, 0xD0, 0x05, 0xD1, 0x00, 0xD1, 0xFC, 0xD2, 0xF8, 0xD3, 0xF4, 0xD4, 0xF0, 0xD5, 0xED, 0xD6, 0xEA, 0xD7, 0xE8, 0xD8, 0xE6, 0xD9, 0xE5, 0xDA, 0xE4, 0xDB, 0xE3, 0xDC, 0xE4, 0xDD, 0xE5, 0xDE, 0xE7, 0xDF, 0xE9, 0xE0, 0xEC, 0xE1, 0xEF, 0xE2, 0xF3, 0xE3, 0xF7, 0xE4, 0xFC, 0xE6, 0x00, 0xE7, 0x06, 0xE8, 0x0B, 0xE9, 0x11, 0xEA, 0x17, 0xEB, 0x1E, 0xEC, 0x26, 0xED, 0x2D, 0xEE, 0x35, 0xEF, 0x3E, 0xF0, 0x47, 0xF1, 0x50, 0xF2, 0x5A, 0xF3, 0x64, 0xF4, 0x6F, 0xF5, 0x7A, 0xF6, 0x85, 0xF7, 0x91, 0xF8, 0x9D, 0xF9, 0xAA, 0xFA, 0xB7, 0xFB, 0xC5, 0xFC, 0xD3, 0xFD, 0xE1, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x03, 0xEE, 0x16, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0xCE, 0xFF, 0xDA, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0xD2, 0xD3, 0x39, 0xE5, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD3, 0xD6, 0x78, 0xC3, 0x3D, 0xFB, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x0F, 0xA7, 0x52, 0xAF, 0x94, 0xE9, 0x4E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFE, 0xB8, 0xF8, 0xA9, 0x4E, 0xBB, 0x4B, 0xF2, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xB3, 0xE5, 0xE6, 0xDC, 0x0D, 0xDA, 0x1D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xF9, 0xD4, 0xA0, 0xEE, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x56, 0xB4, 0x27, 0x9B, 0x24, 0xD7, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x79, 0xB7, 0xAC, 0x83, 0x67, 0x85, 0xEE, 0xC4, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x61, 0x8E, 0xFB, 0x82, 0xA1, 0x91, 0x29, 0xCE, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x62, 0xC3, 0x98, 0xB5, 0xF3, 0xB3, 0xE7, 0xDB, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x17, 0xF2, 0xAF, 0xFD, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xA8, 0xEF, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0xA4, 0xCC, 0x48, 0xB6, 0x34, 0xCC, 0x3A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x22, 0x93, 0xE0, 0x79, 0x2B, 0xB5, 0x20, 0xF4, 0x79, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x3C, 0x9A, 0x1C, 0x5E, 0x25, 0x5E, 0x03, 0xA5, 0x22, 0xE6, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x3B, 0x63, 0x93, 0x5C, 0x9B, 0x65, 0x16, 0xAB, 0x4C, 0xEC, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x0B, 0x9A, 0x37, 0x90, 0xB8, 0x90, 0xD1, 0xB2, 0x91, 0xFB, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xCA, 0xDD, 0x8D, 0xD0, 0x5B, 0xD2, 0x80, 0xDD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xC0, 0xDA, 0xCD, 0xCA, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x18, 0xAF, 0x69, 0x9B, 0x3B, 0xA9, 0x87, 0xF2, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0x06, 0xA3, 0xD1, 0x74, 0xE8, 0x59, 0x11, 0x92, 0xFC, 0xD8, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xA1, 0x7A, 0x09, 0x3D, 0x3F, 0x37, 0xDC, 0x88, 0x1D, 0xC8, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0xB2, 0x33, 0x4F, 0x33, 0x92, 0x41, 0x48, 0x88, 0xDD, 0xCF, 0x8B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x1A, 0x6F, 0xA1, 0x6B, 0x98, 0x6F, 0xDD, 0x8C, 0x66, 0xDA, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xA7, 0xAF, 0xB9, 0xB2, 0x4E, 0xBA, 0xC5, 0xEA, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBB, 0xBD, 0xB3, 0xA3, 0x5F, 0xF9, 0x47, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xB9, 0xBF, 0x51, 0x92, 0x6C, 0x74, 0x8E, 0x83, 0x4C, 0xD4, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDE, 0x83, 0xB4, 0x56, 0x21, 0x38, 0x4E, 0x72, 0x86, 0xBC, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xE8, 0x54, 0x62, 0x1A, 0xD8, 0x11, 0xD1, 0x6C, 0x44, 0xA9, 0x0D, 0xF1, 0x53, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x51, 0x0B, 0x2C, 0x08, 0xC7, 0x1A, 0xB5, 0x64, 0x39, 0xB1, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x51, 0x45, 0x9F, 0x43, 0x14, 0x4C, 0x1B, 0x5A, 0x9F, 0xB6, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0x9A, 0x8B, 0x6A, 0x8F, 0xBC, 0x95, 0x18, 0xC0, 0x86, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x8F, 0xDD, 0xF7, 0xDF, 0x79, 0xE5, 0xD2, 0xF0, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x37, 0xD3, 0x81, 0xFC, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x08, 0xC1, 0x3F, 0x98, 0x2D, 0x75, 0x40, 0xD6, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x9F, 0xA1, 0x89, 0x74, 0x53, 0x4D, 0xBB, 0x50, 0x1C, 0xB5, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xE8, 0x61, 0x94, 0x32, 0x34, 0x19, 0x64, 0x4D, 0x59, 0x9C, 0xAA, 0xED, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x67, 0x24, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x47, 0xDB, 0x83, 0xB7, 0xD4, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x98, 0x4D, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x38, 0x27, 0x8F, 0x2F, 0xE1, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB6, 0x86, 0x9A, 0x11, 0x83, 0x1F, 0xC9, 0x1B, 0x8A, 0x8B, 0xD5, 0xF0, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x0B, 0x5F, 0x01, 0x64, 0x0A, 0x68, 0x74, 0x8B, 0x72, 0xFA, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xB8, 0xB7, 0x9D, 0xBD, 0x4E, 0xC5, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xAB, 0xC8, 0xDC, 0xA5, 0x32, 0xCB, 0xD9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0xD2, 0x08, 0x9B, 0xD5, 0x6C, 0x32, 0x3B, 0xC0, 0xAA, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xA7, 0x75, 0xF2, 0x49, 0x1E, 0x17, 0x8A, 0x0D, 0xE4, 0x8D, 0x11, 0xE9, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFD, 0x36, 0x8E, 0x05, 0x07, 0x00, 0x00, 0x1C, 0x55, 0x76, 0xA5, 0xCC, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xE8, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x14, 0x04, 0x5B, 0xCC, 0xB3, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0xBF, 0x7A, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xEE, 0xBB, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x90, 0x1B, 0x02, 0x00, 0x00, 0x00, 0x00, 0x51, 0x20, 0xC7, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xCA, 0x53, 0x26, 0x29, 0x74, 0x2B, 0x14, 0x39, 0x7C, 0xC9, 0xD5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x1D, 0x85, 0x45, 0x89, 0x82, 0x8E, 0x4F, 0xCD, 0x8D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x67, 0xE5, 0xF1, 0xEB, 0x6C, 0xF6, 0xDA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x37, 0xDC, 0xB5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xA3, 0xC5, 0xC8, 0x99, 0x0B, 0x7B, 0xFF, 0x88, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xED, 0xA1, 0x8F, 0x64, 0xA7, 0x2E, 0xE7, 0x0C, 0x69, 0x6C, 0xB4, 0xE8, 0x76, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8D, 0x70, 0x45, 0xDB, 0x08, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x53, 0xEB, 0xC3, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0x23, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xA5, 0xA1, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x3D, 0x6B, 0xB6, 0x04, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0C, 0x87, 0xF4, 0xED, 0xB7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xC8, 0x97, 0xFA, 0x37, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x59, 0x8E, 0x1F, 0xF5, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xD8, 0x55, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x16, 0x89, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x76, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x23, 0x3E, 0xC4, 0x43, 0x50, 0x47, 0x45, 0x76, 0x92, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0x16, 0xB1, 0xC7, 0xBB, 0x00, 0xC5, 0x36, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xDA, 0xDD, 0x5D, 0xCD, 0x07, 0xCB, 0x1B, 0xC5, 0xE9, 0xDD, 0x6B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE4, 0xBC, 0x94, 0xA4, 0x2E, 0x8F, 0xA6, 0x7A, 0xB9, 0x70, 0xEF, 0x71, 0x96, 0xB4, 0x72, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0xDE, 0x43, 0x7A, 0x3C, 0x38, 0x35, 0x46, 0x18, 0xBC, 0x0B, 0x2E, 0x90, 0x32, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x82, 0x47, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xF5, 0xDD, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x3B, 0x85, 0x9F, 0x29, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x38, 0xC2, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x02, 0x5A, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xDD, 0xC6, 0x32, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xEB, 0x7D, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC4, 0xCD, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x33, 0x24, 0x1A, 0x2E, 0x18, 0x31, 0xEC, 0x31, 0x74, 0xD2, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x10, 0x77, 0xD7, 0x84, 0x8D, 0x94, 0xBE, 0x9F, 0x28, 0xD1, 0x85, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xE4, 0xE0, 0x51, 0xF2, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x92, 0xD2, 0x86, 0xC0, 0xA7, 0xB2, 0x7C, 0xAD, 0x43, 0xAF, 0xF3, 0xB8, 0x30, 0xFC, 0x8E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xB7, 0x7E, 0xBD, 0x70, 0x6E, 0x67, 0x83, 0x5F, 0xB4, 0x54, 0xDB, 0x4A, 0xB8, 0xD4, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0xD2, 0x6A, 0x48, 0x28, 0x2B, 0x28, 0x78, 0x0A, 0xF6, 0x00, 0x00, 0x1E, 0xE0, 0xAA, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x4A, 0x9A, 0xB5, 0x40, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x74, 0x72, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x04, 0x9A, 0xD2, 0x22, 0x43, 0x2A, 0xE6, 0x21, 0x38, 0x12, 0x3C, 0x8C, 0x74, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xE4, 0x62, 0xA9, 0x6C, 0x4E, 0x77, 0xC1, 0x7D, 0x27, 0x84, 0x82, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x52, 0xBB, 0x32, 0xCB, 0xD0, 0xDD, 0x47, 0xEF, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x31, 0xE0, 0x64, 0xD4, 0x93, 0xD4, 0x4C, 0xDC, 0x91, 0xE7, 0xD0, 0xF9, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xE0, 0xA8, 0x98, 0x94, 0xAE, 0x8B, 0x3C, 0x85, 0x92, 0x87, 0x77, 0x84, 0xFC, 0x9A, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x5A, 0x7D, 0xFC, 0x4C, 0xF9, 0x42, 0x7D, 0x34, 0x66, 0x0C, 0xD3, 0x00, 0x00, 0x67, 0x0A, 0xF3, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x0D, 0x57, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xC6, 0xDA, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x90, 0x87, 0x3C, 0x19, 0x15, 0x1B, 0xF4, 0x08, 0xF4, 0x00, 0x00, 0x3B, 0x15, 0xDA, 0x61, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xC1, 0x54, 0x38, 0x5B, 0xBB, 0x5B, 0xF5, 0x5B, 0x53, 0x58, 0x16, 0xE0, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x7B, 0x8D, 0xF6, 0x9B, 0x83, 0xA9, 0x18, 0xB4, 0xC3, 0xC4, 0x41, 0xE2, 0x6C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xF6, 0xE5, 0xAE, 0xF6, 0xBC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, 0xF1, 0x9D, 0xF2, 0xA2, 0xFC, 0x95, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xA4, 0xCA, 0x54, 0xB3, 0xA1, 0xA9, 0x31, 0xA5, 0x16, 0xAB, 0x74, 0xB2, 0x1A, 0xB4, 0xF8, 0xF3, 0x42, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0x9B, 0x6A, 0xE6, 0x5C, 0x81, 0x54, 0x8A, 0x3B, 0xB7, 0x2E, 0xCA, 0x23, 0x08, 0xBC, 0x8E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x33, 0x6F, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x16, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xC5, 0x9C, 0x40, 0x37, 0x29, 0x40, 0x12, 0x3F, 0x25, 0x33, 0xAD, 0x29, 0x35, 0x9A, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x9D, 0x73, 0xDA, 0x7E, 0xAF, 0x87, 0x5D, 0x90, 0xCD, 0x98, 0x79, 0xA2, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xB2, 0x33, 0xC1, 0xAC, 0xD0, 0xBA, 0xE0, 0xFB, 0xF6, 0x92, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x7A, 0xCF, 0xC7, 0xC1, 0xD8, 0xC2, 0x87, 0xCA, 0xE1, 0xD8, 0xE6, 0xDE, 0x3B, 0xF2, 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0xC6, 0x85, 0xB6, 0x77, 0xA7, 0x73, 0x57, 0x64, 0x54, 0x61, 0x8E, 0x61, 0x2D, 0x72, 0x27, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xA9, 0x87, 0xD7, 0x08, 0x8B, 0x10, 0xA4, 0x05, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x29, 0xFD, 0x56, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xB2, 0xC7, 0x54, 0x8E, 0x61, 0x70, 0x66, 0x5D, 0x6D, 0x04, 0x6D, 0xEE, 0x72, 0x86, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBB, 0x8E, 0xB4, 0x9E, 0x01, 0xAB, 0xE7, 0xBC, 0x0E, 0xCC, 0x8B, 0xDD, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xA2, 0xE0, 0x81, 0xF2, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0x4A, 0xDC, 0x44, 0xDF, 0xA6, 0xEA, 0x6F, 0xFA, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x2C, 0xA1, 0x25, 0x95, 0x7D, 0x93, 0x07, 0x8C, 0xD8, 0x8E, 0x95, 0x96, 0xD1, 0xA0, 0x2B, 0xD9, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x69, 0xA3, 0x49, 0x2E, 0x88, 0x39, 0xCC, 0x3D, 0x70, 0x3C, 0xF8, 0x37, 0x00, 0x2E, 0xB9, 0xAF, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xD8, 0x73, 0xB8, 0x83, 0x33, 0x8C, 0x5F, 0x9F, 0x19, 0xA9, 0x0D, 0xB6, 0x62, 0xC5, 0x71, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x02, 0xAE, 0x3A, 0xBD, 0xDB, 0xCD, 0xEF, 0xE3, 0x59, 0xFB, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xCC, 0xFE, 0x6A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xE1, 0xFD, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0xEE, 0xBF, 0xE1, 0xB6, 0x75, 0xB4, 0x3D, 0xB4, 0xD7, 0xB9, 0xD1, 0xC8, 0xCA, 0xD8, 0xEB, 0xEC, 0xA3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x9B, 0x57, 0x0D, 0x63, 0xAE, 0x6F, 0x31, 0x76, 0x1C, 0x84, 0x97, 0x88, 0x73, 0x8F, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x36, 0x95, 0xCB, 0xA6, 0xEE, 0xB4, 0x51, 0xC9, 0xE1, 0xDF, 0x4C, 0xF3, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x3F, 0xDF, 0x2A, 0xF0, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x05, 0xD8, 0xD9, 0xD7, 0xB7, 0xDD, 0xB3, 0xE3, 0x81, 0xF9, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xBE, 0x82, 0x80, 0x90, 0x08, 0xA0, 0xAA, 0xB1, 0x34, 0xC3, 0xD1, 0xD6, 0xAA, 0xE6, 0x0B, 0xF9, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x9A, 0xCD, 0x72, 0xDD, 0x80, 0xF3, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x05, 0x05, 0x07, 0x07, 0x09, 0x09, 0x0B, 0x0B, 0x0D, 0x0D, 0x0F, 0x0F, 0x11, 0x11, 0x13, 0x13, 0x15, 0x15, 0x17, 0x17, 0x19, 0x19, 0x1B, 0x1B, 0x1D, 0x1D, 0x1F, 0x1F, 0x21, 0x21, 0x23, 0x23, 0x25, 0x25, 0x27, 0x27, 0x29, 0x29, 0x2B, 0x2B, 0x2D, 0x2D, 0x2F, 0x2F, 0x31, 0x31, 0x33, 0x33, 0x35, 0x35, 0x37, 0x37, 0x39, 0x39, 0x3B, 0x3B, 0x3D, 0x3D, 0x3F, 0x3F, 0x41, 0x41, 0x43, 0x43, 0x45, 0x45, 0x47, 0x47, 0x49, 0x49, 0x4B, 0x4B, 0x4D, 0x4D, 0x4F, 0x4F, 0x51, 0x51, 0x53, 0x53, 0x55, 0x55, 0x57, 0x57, 0x59, 0x59, 0x5B, 0x5B, 0x5D, 0x5D, 0x5F, 0x5F, 0x61, 0x61, 0x63, 0x63, 0x65, 0x65, 0x67, 0x67, 0x69, 0x69, 0x6B, 0x6B, 0x6D, 0x6D, 0x6F, 0x6F, 0x71, 0x71, 0x73, 0x73, 0x75, 0x75, 0x77, 0x77, 0x79, 0x79, 0x7B, 0x7B, 0x7D, 0x7D, 0x7F, 0x7F, 0x81, 0x81, 0x83, 0x83, 0x85, 0x85, 0x87, 0x87, 0x89, 0x89, 0x8B, 0x8B, 0x8D, 0x8D, 0x8F, 0x8F, 0x91, 0x91, 0x93, 0x93, 0x95, 0x95, 0x97, 0x97, 0x99, 0x99, 0x9B, 0x9B, 0x9D, 0x9D, 0x9F, 0x9F, 0xA1, 0xA1, 0xA3, 0xA3, 0xA5, 0xA5, 0xA7, 0xA7, 0xA9, 0xA9, 0xAB, 0xAB, 0xAD, 0xAD, 0xAF, 0xAF, 0xB1, 0xB1, 0xB3, 0xB3, 0xB5, 0xB5, 0xB7, 0xB7, 0xB9, 0xB9, 0xBB, 0xBB, 0xBD, 0xBD, 0xBF, 0xBF, 0xC1, 0xC1, 0xC3, 0xC3, 0xC5, 0xC5, 0xC7, 0xC7, 0xC9, 0xC9, 0xCB, 0xCB, 0xCD, 0xCD, 0xCF, 0xCF, 0xD1, 0xD1, 0xD3, 0xD3, 0xD5, 0xD5, 0xD7, 0xD7, 0xD9, 0xD9, 0xDB, 0xDB, 0xDD, 0xDD, 0xDF, 0xDF, 0xE1, 0xE1, 0xE3, 0xE3, 0xE5, 0xE5, 0xE7, 0xE7, 0xE9, 0xE9, 0xEB, 0xEB, 0xED, 0xED, 0xEF, 0xEF, 0xF1, 0xF1, 0xF3, 0xF3, 0xF5, 0xF5, 0xF7, 0xF7, 0xF9, 0xF9, 0xFB, 0xFB, 0xFD, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x43, 0x54, 0x49, 0x33, 0x0D, 0x0A, 0x0D, 0x0A, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x4F, 0x52, 0x20, 0x22, 0x41, 0x72, 0x67, 0x79, 0x6C, 0x6C, 0x20, 0x43, 0x61, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x74, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x33, 0x2C, 0x20, 0x2B, 0x20, 0x67, 0x72, 0x65, 0x79, 0x20, 0x77, 0x65, 0x64, 0x67, 0x65, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x73, 0x22, 0x0D, 0x0A, 0x4F, 0x52, 0x49, 0x47, 0x49, 0x4E, 0x41, 0x54, 0x4F, 0x52, 0x20, 0x22, 0x41, 0x72, 0x67, 0x79, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x72, 0x65, 0x61, 0x64, 0x22, 0x0D, 0x0A, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x20, 0x22, 0x54, 0x68, 0x75, 0x20, 0x4A, 0x75, 0x6C, 0x20, 0x30, 0x33, 0x20, 0x31, 0x36, 0x3A, 0x31, 0x32, 0x3A, 0x34, 0x31, 0x20, 0x32, 0x30, 0x30, 0x33, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5F, 0x43, 0x4C, 0x41, 0x53, 0x53, 0x22, 0x0D, 0x0A, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5F, 0x43, 0x4C, 0x41, 0x53, 0x53, 0x20, 0x22, 0x4F, 0x55, 0x54, 0x50, 0x55, 0x54, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5F, 0x49, 0x4E, 0x53, 0x54, 0x52, 0x55, 0x4D, 0x45, 0x4E, 0x54, 0x22, 0x0D, 0x0A, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5F, 0x49, 0x4E, 0x53, 0x54, 0x52, 0x55, 0x4D, 0x45, 0x4E, 0x54, 0x20, 0x22, 0x47, 0x72, 0x65, 0x74, 0x61, 0x67, 0x4D, 0x61, 0x63, 0x62, 0x65, 0x74, 0x68, 0x20, 0x53, 0x70, 0x65, 0x63, 0x74, 0x72, 0x6F, 0x53, 0x63, 0x61, 0x6E, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x46, 0x55, 0x4C, 0x4C, 0x5F, 0x53, 0x50, 0x52, 0x45, 0x41, 0x44, 0x5F, 0x50, 0x41, 0x54, 0x43, 0x48, 0x45, 0x53, 0x22, 0x0D, 0x0A, 0x46, 0x55, 0x4C, 0x4C, 0x5F, 0x53, 0x50, 0x52, 0x45, 0x41, 0x44, 0x5F, 0x50, 0x41, 0x54, 0x43, 0x48, 0x45, 0x53, 0x20, 0x22, 0x32, 0x33, 0x34, 0x36, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x54, 0x4F, 0x54, 0x41, 0x4C, 0x5F, 0x49, 0x4E, 0x4B, 0x5F, 0x4C, 0x49, 0x4D, 0x49, 0x54, 0x22, 0x0D, 0x0A, 0x54, 0x4F, 0x54, 0x41, 0x4C, 0x5F, 0x49, 0x4E, 0x4B, 0x5F, 0x4C, 0x49, 0x4D, 0x49, 0x54, 0x20, 0x22, 0x34, 0x31, 0x30, 0x2E, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x43, 0x4F, 0x4C, 0x4F, 0x52, 0x5F, 0x52, 0x45, 0x50, 0x22, 0x0D, 0x0A, 0x43, 0x4F, 0x4C, 0x4F, 0x52, 0x5F, 0x52, 0x45, 0x50, 0x20, 0x22, 0x43, 0x4D, 0x59, 0x4B, 0x5F, 0x58, 0x59, 0x5A, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x54, 0x52, 0x41, 0x4C, 0x5F, 0x42, 0x41, 0x4E, 0x44, 0x53, 0x22, 0x0D, 0x0A, 0x53, 0x50, 0x45, 0x43, 0x54, 0x52, 0x41, 0x4C, 0x5F, 0x42, 0x41, 0x4E, 0x44, 0x53, 0x20, 0x22, 0x33, 0x36, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x54, 0x52, 0x41, 0x4C, 0x5F, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5F, 0x4E, 0x4D, 0x22, 0x0D, 0x0A, 0x53, 0x50, 0x45, 0x43, 0x54, 0x52, 0x41, 0x4C, 0x5F, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5F, 0x4E, 0x4D, 0x20, 0x22, 0x33, 0x38, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x54, 0x52, 0x41, 0x4C, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x4E, 0x4D, 0x22, 0x0D, 0x0A, 0x53, 0x50, 0x45, 0x43, 0x54, 0x52, 0x41, 0x4C, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x4E, 0x4D, 0x20, 0x22, 0x37, 0x33, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x22, 0x0D, 0x0A, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x33, 0x38, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x33, 0x39, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x30, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x31, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x32, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x33, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x34, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x35, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x36, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x37, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x38, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x39, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x30, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x31, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x32, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x33, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x34, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x35, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x36, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x37, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x38, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x39, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x30, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x31, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x32, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x33, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x34, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x35, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x36, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x37, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x38, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x39, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x37, 0x30, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x37, 0x31, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x37, 0x32, 0x30, 0x22, 0x0D, 0x0A, 0x4B, 0x45, 0x59, 0x57, 0x4F, 0x52, 0x44, 0x20, 0x22, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x37, 0x33, 0x30, 0x22, 0x0D, 0x0A, 0x4E, 0x55, 0x4D, 0x42, 0x45, 0x52, 0x5F, 0x4F, 0x46, 0x5F, 0x46, 0x49, 0x45, 0x4C, 0x44, 0x53, 0x20, 0x34, 0x34, 0x0D, 0x0A, 0x42, 0x45, 0x47, 0x49, 0x4E, 0x5F, 0x44, 0x41, 0x54, 0x41, 0x5F, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x0D, 0x0A, 0x53, 0x41, 0x4D, 0x50, 0x4C, 0x45, 0x5F, 0x49, 0x44, 0x20, 0x43, 0x4D, 0x59, 0x4B, 0x5F, 0x43, 0x20, 0x43, 0x4D, 0x59, 0x4B, 0x5F, 0x4D, 0x20, 0x43, 0x4D, 0x59, 0x4B, 0x5F, 0x59, 0x20, 0x43, 0x4D, 0x59, 0x4B, 0x5F, 0x4B, 0x20, 0x58, 0x59, 0x5A, 0x5F, 0x58, 0x20, 0x58, 0x59, 0x5A, 0x5F, 0x59, 0x20, 0x58, 0x59, 0x5A, 0x5F, 0x5A, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x33, 0x38, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x33, 0x39, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x30, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x31, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x32, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x33, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x34, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x35, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x36, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x37, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x38, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x34, 0x39, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x30, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x31, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x32, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x33, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x34, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x35, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x36, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x37, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x38, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x35, 0x39, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x30, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x31, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x32, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x33, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x34, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x35, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x36, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x37, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x38, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x36, 0x39, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x37, 0x30, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x37, 0x31, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x37, 0x32, 0x30, 0x20, 0x53, 0x50, 0x45, 0x43, 0x5F, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x45, 0x4E, 0x44, 0x5F, 0x44, 0x41, 0x54, 0x41, 0x5F, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x0D, 0x0A, 0x0D, 0x0A, 0x4E, 0x55, 0x4D, 0x42, 0x45, 0x52, 0x5F, 0x4F, 0x46, 0x5F, 0x53, 0x45, 0x54, 0x53, 0x20, 0x32, 0x33, 0x37, 0x36, 0x0D, 0x0A, 0x42, 0x45, 0x47, 0x49, 0x4E, 0x5F, 0x44, 0x41, 0x54, 0x41, 0x0D, 0x0A, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x39, 0x35, 0x20, 0x37, 0x36, 0x2E, 0x33, 0x39, 0x33, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x33, 0x38, 0x33, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x39, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x33, 0x38, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x37, 0x38, 0x2E, 0x34, 0x32, 0x31, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x32, 0x2E, 0x33, 0x34, 0x20, 0x31, 0x30, 0x32, 0x2E, 0x36, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x35, 0x35, 0x20, 0x39, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x39, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x39, 0x31, 0x2E, 0x33, 0x36, 0x37, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x37, 0x32, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x32, 0x36, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x39, 0x36, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x34, 0x38, 0x35, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x36, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x32, 0x37, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x31, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x31, 0x34, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x39, 0x37, 0x2E, 0x33, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x31, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x32, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x34, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x38, 0x31, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x34, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x39, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x38, 0x32, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x30, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x30, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x35, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x38, 0x35, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x33, 0x34, 0x20, 0x38, 0x38, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x38, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x39, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x31, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x37, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x34, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x39, 0x33, 0x20, 0x39, 0x34, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x34, 0x33, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x36, 0x33, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x39, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x36, 0x2E, 0x30, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x36, 0x39, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x38, 0x32, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x37, 0x2E, 0x34, 0x30, 0x38, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x35, 0x34, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x39, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x37, 0x39, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x37, 0x39, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x36, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x35, 0x33, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x34, 0x36, 0x39, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x37, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x37, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x31, 0x36, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x37, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x32, 0x36, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x33, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x38, 0x35, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x39, 0x38, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x37, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x37, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x31, 0x31, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x39, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x30, 0x37, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x38, 0x35, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x34, 0x36, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x33, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x31, 0x39, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x38, 0x35, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x32, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x32, 0x37, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x38, 0x35, 0x20, 0x38, 0x31, 0x2E, 0x34, 0x37, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x34, 0x37, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x34, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x36, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x32, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x38, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x35, 0x39, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x36, 0x37, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x37, 0x31, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x34, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x31, 0x36, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x39, 0x36, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x34, 0x36, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x38, 0x31, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x38, 0x32, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x32, 0x32, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x33, 0x38, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x36, 0x37, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x32, 0x20, 0x38, 0x36, 0x2E, 0x35, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x36, 0x34, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x36, 0x37, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x39, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x34, 0x38, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x33, 0x31, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x39, 0x35, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x38, 0x34, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x34, 0x34, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x36, 0x33, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x32, 0x34, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x37, 0x37, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x38, 0x34, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x33, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x39, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x39, 0x37, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x34, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x39, 0x39, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x38, 0x33, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x35, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x32, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x35, 0x34, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x30, 0x35, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x33, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x39, 0x39, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x33, 0x36, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x32, 0x38, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x37, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x34, 0x36, 0x35, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x31, 0x31, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x38, 0x32, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x33, 0x37, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x38, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x38, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x32, 0x37, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x37, 0x39, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x39, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x31, 0x37, 0x33, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x39, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x38, 0x37, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x34, 0x33, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x39, 0x37, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x31, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x30, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x36, 0x35, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x34, 0x34, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x36, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x32, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x38, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x34, 0x32, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x36, 0x39, 0x38, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x38, 0x35, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x33, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x34, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x37, 0x35, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x39, 0x33, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x35, 0x20, 0x39, 0x37, 0x2E, 0x39, 0x35, 0x38, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x31, 0x31, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x32, 0x34, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x33, 0x36, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x39, 0x38, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x32, 0x37, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x37, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x33, 0x39, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x30, 0x35, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x35, 0x37, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x37, 0x39, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x38, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x32, 0x37, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x36, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x39, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x36, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x31, 0x39, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x37, 0x31, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x35, 0x39, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x39, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x34, 0x35, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x38, 0x35, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x30, 0x32, 0x20, 0x38, 0x31, 0x2E, 0x30, 0x35, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x37, 0x38, 0x32, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x37, 0x31, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x39, 0x37, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x32, 0x20, 0x39, 0x35, 0x2E, 0x38, 0x34, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x38, 0x33, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x32, 0x32, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x38, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x37, 0x33, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x36, 0x33, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x36, 0x36, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x37, 0x37, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x39, 0x35, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x38, 0x32, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x30, 0x31, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x38, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x36, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x37, 0x20, 0x37, 0x35, 0x2E, 0x36, 0x32, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x31, 0x31, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x39, 0x39, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x35, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x38, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x36, 0x38, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x36, 0x37, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x34, 0x32, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x39, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x36, 0x35, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x32, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x33, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x33, 0x39, 0x20, 0x39, 0x38, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x35, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x37, 0x37, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x31, 0x37, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x32, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x33, 0x35, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x31, 0x37, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x31, 0x33, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x31, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x37, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x36, 0x39, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x32, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x36, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x37, 0x39, 0x20, 0x38, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x38, 0x35, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x39, 0x37, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x35, 0x20, 0x39, 0x37, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x33, 0x31, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x35, 0x39, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x36, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x37, 0x32, 0x37, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x33, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x35, 0x33, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x37, 0x20, 0x37, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x38, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x31, 0x34, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x36, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x34, 0x37, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x39, 0x34, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x39, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x38, 0x36, 0x2E, 0x38, 0x36, 0x37, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x32, 0x39, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x39, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x37, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x35, 0x35, 0x20, 0x38, 0x31, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x31, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x35, 0x32, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x38, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x33, 0x36, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x37, 0x36, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x35, 0x33, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x39, 0x31, 0x37, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x33, 0x36, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x32, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x38, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x38, 0x38, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x38, 0x34, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x39, 0x36, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x31, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x32, 0x35, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x35, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x32, 0x39, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x38, 0x33, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x32, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x36, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x34, 0x37, 0x20, 0x38, 0x33, 0x2E, 0x33, 0x34, 0x32, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x34, 0x31, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x35, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x33, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x39, 0x37, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x35, 0x39, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x31, 0x33, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x35, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x37, 0x36, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x36, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x34, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x36, 0x37, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x30, 0x36, 0x20, 0x38, 0x33, 0x2E, 0x35, 0x39, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x34, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x39, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x36, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x33, 0x33, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x39, 0x38, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x31, 0x38, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x35, 0x39, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x39, 0x36, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x34, 0x38, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x38, 0x31, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x38, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x35, 0x38, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x37, 0x36, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x33, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x31, 0x36, 0x20, 0x38, 0x36, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x32, 0x38, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x37, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x34, 0x39, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x36, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x31, 0x32, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x34, 0x39, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x39, 0x31, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x32, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x34, 0x39, 0x20, 0x38, 0x32, 0x2E, 0x37, 0x38, 0x32, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x36, 0x32, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x32, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x36, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x32, 0x35, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x39, 0x32, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x33, 0x34, 0x20, 0x38, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x32, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x38, 0x34, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x34, 0x33, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x38, 0x39, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x36, 0x38, 0x20, 0x38, 0x32, 0x2E, 0x32, 0x37, 0x33, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x33, 0x35, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x39, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x38, 0x34, 0x20, 0x37, 0x39, 0x2E, 0x33, 0x32, 0x38, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x32, 0x37, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x35, 0x34, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x34, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x33, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x36, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x32, 0x31, 0x36, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x35, 0x37, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x35, 0x39, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x35, 0x36, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x32, 0x34, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x33, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x35, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x30, 0x39, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x36, 0x37, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x34, 0x36, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x33, 0x32, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x34, 0x35, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x36, 0x38, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x32, 0x37, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x32, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x35, 0x36, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x36, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x35, 0x37, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x31, 0x37, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x38, 0x32, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x31, 0x33, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x31, 0x37, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x38, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x32, 0x33, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x37, 0x35, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x31, 0x32, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x34, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x36, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x31, 0x32, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x37, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x37, 0x34, 0x20, 0x38, 0x36, 0x2E, 0x31, 0x36, 0x33, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x34, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x33, 0x34, 0x32, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x36, 0x36, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x31, 0x39, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x32, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x38, 0x36, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x35, 0x32, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x38, 0x31, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x31, 0x35, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x36, 0x35, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x37, 0x39, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x35, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x39, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x38, 0x31, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x34, 0x35, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x31, 0x37, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x37, 0x36, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x38, 0x34, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x36, 0x31, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x31, 0x31, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x34, 0x36, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x36, 0x33, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x38, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x33, 0x37, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x39, 0x39, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x32, 0x38, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x34, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x36, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x31, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x30, 0x39, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x39, 0x36, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x39, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x32, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x32, 0x36, 0x37, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x32, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x32, 0x34, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x33, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x35, 0x32, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x31, 0x33, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x38, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x35, 0x34, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x39, 0x38, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x35, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x35, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x34, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x33, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x38, 0x38, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x34, 0x35, 0x20, 0x38, 0x32, 0x2E, 0x31, 0x35, 0x39, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x35, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x31, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x33, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x38, 0x34, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x36, 0x35, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x38, 0x32, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x32, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x30, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x34, 0x35, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x36, 0x37, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x34, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x36, 0x36, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x35, 0x33, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x39, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x35, 0x36, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x38, 0x34, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x37, 0x32, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x35, 0x38, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x34, 0x31, 0x20, 0x38, 0x39, 0x2E, 0x30, 0x33, 0x37, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x34, 0x36, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x34, 0x37, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x39, 0x34, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x39, 0x38, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x34, 0x32, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x37, 0x35, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x34, 0x36, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x34, 0x35, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x34, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x30, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x30, 0x34, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x36, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x34, 0x35, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x35, 0x36, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x39, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x31, 0x34, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x34, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x33, 0x35, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x33, 0x31, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x31, 0x33, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x39, 0x38, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x34, 0x34, 0x20, 0x37, 0x37, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x35, 0x39, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x39, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x30, 0x32, 0x20, 0x38, 0x31, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x33, 0x35, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x35, 0x32, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x31, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x31, 0x32, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x34, 0x37, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x37, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x35, 0x31, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x37, 0x34, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x39, 0x38, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x33, 0x35, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x39, 0x39, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x30, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x32, 0x38, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x39, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x34, 0x39, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x35, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x30, 0x34, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x36, 0x32, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x33, 0x39, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x35, 0x38, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x36, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x35, 0x37, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x36, 0x37, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x35, 0x32, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x39, 0x30, 0x39, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x32, 0x34, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x31, 0x38, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x36, 0x32, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x37, 0x39, 0x2E, 0x30, 0x38, 0x31, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x35, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x36, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x36, 0x31, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x35, 0x36, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x36, 0x32, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x31, 0x35, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x34, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x31, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x37, 0x39, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x32, 0x34, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x31, 0x36, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x37, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x32, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x37, 0x37, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x31, 0x35, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x33, 0x33, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x37, 0x33, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x36, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x39, 0x20, 0x38, 0x37, 0x2E, 0x31, 0x34, 0x31, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x35, 0x32, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x34, 0x34, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x39, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x39, 0x38, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x31, 0x33, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x38, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x31, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x32, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x32, 0x35, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x38, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x36, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x35, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x33, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x30, 0x33, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x31, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x36, 0x36, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x35, 0x32, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x37, 0x32, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x38, 0x31, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x31, 0x36, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x32, 0x36, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x36, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x38, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x30, 0x32, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x35, 0x34, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x36, 0x34, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x37, 0x20, 0x39, 0x36, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x34, 0x39, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x39, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x35, 0x31, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x38, 0x33, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x35, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x32, 0x33, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x38, 0x36, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x30, 0x20, 0x39, 0x36, 0x2E, 0x36, 0x34, 0x35, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x37, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x33, 0x39, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x32, 0x37, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x35, 0x32, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x35, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x35, 0x33, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x31, 0x35, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x32, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x38, 0x39, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x32, 0x32, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x32, 0x39, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x33, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x30, 0x36, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x38, 0x33, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x37, 0x33, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x34, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x37, 0x36, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x37, 0x34, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x37, 0x32, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x32, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x39, 0x34, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x36, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x37, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x36, 0x31, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x34, 0x38, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x37, 0x20, 0x38, 0x38, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x34, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x32, 0x39, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x32, 0x36, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x35, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x38, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x36, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x33, 0x31, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x35, 0x32, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x39, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x35, 0x38, 0x20, 0x38, 0x34, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x31, 0x33, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x32, 0x31, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x36, 0x32, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x31, 0x32, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x35, 0x36, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x31, 0x32, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x38, 0x32, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x34, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x32, 0x20, 0x38, 0x30, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x33, 0x35, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x37, 0x38, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x37, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x38, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x38, 0x34, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x35, 0x37, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x35, 0x35, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x31, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x36, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x32, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x32, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x36, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x39, 0x38, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x32, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x37, 0x20, 0x39, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x32, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x33, 0x37, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x31, 0x33, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x38, 0x20, 0x38, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x32, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x34, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x33, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x36, 0x34, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x37, 0x36, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x36, 0x31, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x35, 0x32, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x31, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x31, 0x32, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x34, 0x31, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x37, 0x32, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x31, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x38, 0x37, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x38, 0x32, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x31, 0x34, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x36, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x38, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x33, 0x37, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x38, 0x32, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x38, 0x37, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x33, 0x20, 0x38, 0x32, 0x2E, 0x33, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x38, 0x32, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x32, 0x35, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x38, 0x33, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x32, 0x35, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x34, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x38, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x32, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x34, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x35, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x36, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x33, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x34, 0x39, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x36, 0x32, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x38, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x38, 0x31, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x39, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x35, 0x32, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x39, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x35, 0x35, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x34, 0x32, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x39, 0x20, 0x39, 0x35, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x37, 0x32, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x31, 0x34, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x35, 0x33, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x35, 0x37, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x32, 0x36, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x38, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x37, 0x35, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x31, 0x20, 0x39, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x36, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x35, 0x35, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x31, 0x39, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x33, 0x37, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x39, 0x31, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x35, 0x35, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x33, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x38, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x33, 0x31, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x34, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x39, 0x37, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x35, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x35, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x38, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x36, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x32, 0x31, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x38, 0x33, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x37, 0x33, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x36, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x37, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x35, 0x37, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x37, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x32, 0x31, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x37, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x31, 0x39, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x34, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x39, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x39, 0x37, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x37, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x33, 0x32, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x32, 0x37, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x39, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x33, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x35, 0x35, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x38, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x32, 0x37, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x37, 0x31, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x34, 0x36, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x39, 0x38, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x34, 0x36, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x35, 0x35, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x39, 0x31, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x32, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x34, 0x34, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x36, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x30, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x38, 0x31, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x39, 0x37, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x34, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x31, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x37, 0x32, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x32, 0x35, 0x31, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x38, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x38, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x31, 0x31, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x37, 0x39, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x37, 0x36, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x39, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x37, 0x39, 0x20, 0x38, 0x35, 0x2E, 0x32, 0x30, 0x33, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x33, 0x33, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x34, 0x33, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x35, 0x37, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x31, 0x35, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x35, 0x35, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x31, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x33, 0x33, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x39, 0x38, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x33, 0x32, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x37, 0x32, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x32, 0x20, 0x39, 0x36, 0x2E, 0x32, 0x33, 0x39, 0x20, 0x38, 0x34, 0x2E, 0x38, 0x36, 0x37, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x38, 0x31, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x37, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x33, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x31, 0x32, 0x34, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x36, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x34, 0x31, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x34, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x32, 0x31, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x31, 0x36, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x33, 0x31, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x34, 0x37, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x35, 0x20, 0x38, 0x33, 0x2E, 0x33, 0x38, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x37, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x35, 0x35, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x31, 0x34, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x36, 0x20, 0x39, 0x37, 0x2E, 0x32, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x34, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x39, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x37, 0x39, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x37, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x37, 0x39, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x38, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x34, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x31, 0x31, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x38, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x31, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x36, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x31, 0x37, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x34, 0x38, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x38, 0x33, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x39, 0x38, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x37, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x39, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x38, 0x36, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x32, 0x31, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x31, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x32, 0x32, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x31, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x35, 0x32, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x34, 0x35, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x32, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x37, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x39, 0x35, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x39, 0x39, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x32, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x30, 0x31, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x38, 0x33, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x31, 0x35, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x34, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x38, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x37, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x37, 0x35, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x36, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x39, 0x36, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x33, 0x35, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x38, 0x34, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x35, 0x36, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x36, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x36, 0x36, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x36, 0x37, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x38, 0x32, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x37, 0x35, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x38, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x37, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x33, 0x32, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x35, 0x33, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x36, 0x37, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x39, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x31, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x32, 0x33, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x31, 0x32, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x32, 0x36, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x34, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x34, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x32, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x35, 0x37, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x35, 0x31, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x34, 0x31, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x35, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x35, 0x38, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x33, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x34, 0x32, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x39, 0x39, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x36, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x37, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x34, 0x33, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x31, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x37, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x37, 0x36, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x34, 0x34, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x34, 0x34, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x32, 0x37, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x34, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x39, 0x39, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x34, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x33, 0x39, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x39, 0x36, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x31, 0x37, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x34, 0x36, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x36, 0x34, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x31, 0x32, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x32, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x34, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x37, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x33, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x34, 0x38, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x35, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x33, 0x31, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x36, 0x37, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x32, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x34, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x32, 0x35, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x37, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x38, 0x33, 0x2E, 0x33, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x33, 0x38, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x35, 0x37, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x35, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x38, 0x30, 0x2E, 0x32, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x36, 0x36, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x37, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x39, 0x35, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x35, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x34, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x37, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x35, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x37, 0x33, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x33, 0x39, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x35, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x35, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x36, 0x36, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x37, 0x35, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x37, 0x33, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x35, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x38, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x36, 0x36, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x39, 0x34, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x38, 0x31, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x38, 0x32, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x35, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x35, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x34, 0x33, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x36, 0x37, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x32, 0x32, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x35, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x37, 0x31, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x32, 0x33, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x35, 0x32, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x35, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x31, 0x31, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x31, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x33, 0x33, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x35, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x32, 0x39, 0x36, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x37, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x36, 0x32, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x36, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x38, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x38, 0x33, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x32, 0x39, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x31, 0x36, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x36, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x39, 0x33, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x36, 0x31, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x36, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x33, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x37, 0x39, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x33, 0x39, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x36, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x30, 0x32, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x34, 0x34, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x39, 0x37, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x32, 0x35, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x36, 0x34, 0x20, 0x39, 0x36, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x38, 0x38, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x30, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x33, 0x33, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x36, 0x35, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x38, 0x34, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x38, 0x39, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x36, 0x36, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x34, 0x39, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x34, 0x35, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x39, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x33, 0x37, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x36, 0x37, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x30, 0x34, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x38, 0x39, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x31, 0x35, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x33, 0x36, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x36, 0x38, 0x20, 0x38, 0x35, 0x2E, 0x30, 0x38, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x35, 0x37, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x34, 0x31, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x36, 0x39, 0x20, 0x37, 0x37, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x33, 0x38, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x33, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x32, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x37, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x34, 0x32, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x39, 0x32, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x35, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x33, 0x31, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x37, 0x31, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x38, 0x37, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x34, 0x31, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x37, 0x32, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x31, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x38, 0x35, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x37, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x33, 0x38, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x39, 0x39, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x37, 0x34, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x33, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x32, 0x39, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x31, 0x36, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x34, 0x33, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x37, 0x35, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x39, 0x31, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x39, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x33, 0x36, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x38, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x37, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x33, 0x35, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x31, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x37, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x39, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x37, 0x38, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x36, 0x38, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x31, 0x38, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x34, 0x33, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x37, 0x39, 0x20, 0x38, 0x32, 0x2E, 0x33, 0x37, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x32, 0x33, 0x20, 0x38, 0x31, 0x2E, 0x37, 0x38, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x39, 0x32, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x31, 0x33, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x32, 0x39, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x36, 0x33, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x38, 0x31, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x31, 0x31, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x35, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x33, 0x31, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x35, 0x39, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x39, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x38, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x33, 0x32, 0x20, 0x37, 0x37, 0x2E, 0x36, 0x30, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x32, 0x34, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x37, 0x37, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x35, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x38, 0x33, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x39, 0x39, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x37, 0x34, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x38, 0x34, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x33, 0x35, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x30, 0x36, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x36, 0x33, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x33, 0x38, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x35, 0x39, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x38, 0x35, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x38, 0x35, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x34, 0x34, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x38, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x30, 0x34, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x35, 0x34, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x31, 0x33, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x32, 0x39, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x38, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x35, 0x37, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x33, 0x35, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x38, 0x38, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x32, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x39, 0x37, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x35, 0x31, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x39, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x37, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x38, 0x39, 0x20, 0x37, 0x38, 0x2E, 0x34, 0x31, 0x34, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x31, 0x35, 0x33, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x35, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x32, 0x33, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x39, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x30, 0x36, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x38, 0x36, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x39, 0x31, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x31, 0x36, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x34, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x39, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x30, 0x39, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x39, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x36, 0x32, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x39, 0x32, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x33, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x39, 0x33, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x37, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x34, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x39, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x37, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x39, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x34, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x35, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x39, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x39, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x35, 0x37, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x39, 0x33, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x39, 0x37, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x38, 0x34, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x32, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x36, 0x39, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x31, 0x34, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x39, 0x38, 0x20, 0x38, 0x35, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x38, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x34, 0x32, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x38, 0x35, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x39, 0x39, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x38, 0x36, 0x2E, 0x30, 0x31, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x38, 0x32, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x33, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x35, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x39, 0x34, 0x2E, 0x36, 0x32, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x33, 0x39, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x30, 0x31, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x30, 0x38, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x37, 0x36, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x39, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x33, 0x37, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x32, 0x32, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x32, 0x31, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x30, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x33, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x35, 0x35, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x31, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x30, 0x34, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x35, 0x37, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x32, 0x38, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x39, 0x33, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x35, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x32, 0x31, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x30, 0x35, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x36, 0x35, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x34, 0x38, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x35, 0x35, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x30, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x34, 0x32, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x30, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x31, 0x34, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x31, 0x36, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x35, 0x37, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x30, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x33, 0x38, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x32, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x35, 0x36, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x37, 0x34, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x30, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x36, 0x36, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x38, 0x31, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x38, 0x33, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x34, 0x32, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x36, 0x37, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x32, 0x37, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x39, 0x35, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x36, 0x32, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x39, 0x32, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x35, 0x34, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x31, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x32, 0x39, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x38, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x33, 0x31, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x31, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x31, 0x34, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x31, 0x35, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x34, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x31, 0x33, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x32, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x32, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x35, 0x38, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x39, 0x33, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x31, 0x36, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x31, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x38, 0x36, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x35, 0x33, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x38, 0x35, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x38, 0x35, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x31, 0x38, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x31, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x35, 0x32, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x31, 0x39, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x39, 0x39, 0x20, 0x39, 0x37, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x36, 0x34, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x39, 0x35, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x35, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x38, 0x37, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x32, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x39, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x39, 0x31, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x37, 0x33, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x34, 0x37, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x32, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x39, 0x36, 0x2E, 0x31, 0x35, 0x32, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x31, 0x35, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x39, 0x34, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x32, 0x33, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x38, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x37, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x32, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x38, 0x30, 0x2E, 0x33, 0x39, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x33, 0x32, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x35, 0x34, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x36, 0x34, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x32, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x39, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x31, 0x34, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x35, 0x36, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x36, 0x37, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x36, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x32, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x32, 0x38, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x32, 0x37, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x33, 0x32, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x37, 0x33, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x33, 0x32, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x37, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x32, 0x38, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x37, 0x35, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x38, 0x31, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x36, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x34, 0x31, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x32, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x31, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x32, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x39, 0x36, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x30, 0x31, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x30, 0x36, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x35, 0x32, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x36, 0x35, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x36, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x33, 0x31, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x38, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x30, 0x39, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x36, 0x38, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x38, 0x35, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x33, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x32, 0x20, 0x37, 0x35, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x37, 0x33, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x38, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x33, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x38, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x37, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x35, 0x39, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x37, 0x36, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x34, 0x36, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x34, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x37, 0x31, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x37, 0x36, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x33, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x33, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x38, 0x32, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x38, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x37, 0x32, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x39, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x32, 0x34, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x33, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x32, 0x31, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x36, 0x35, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x34, 0x35, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x32, 0x38, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x34, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x34, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x37, 0x31, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x31, 0x36, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x39, 0x38, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x34, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x39, 0x35, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x35, 0x31, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x39, 0x37, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x36, 0x36, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x32, 0x38, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x34, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x34, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x37, 0x35, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x34, 0x35, 0x20, 0x38, 0x31, 0x2E, 0x36, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x32, 0x37, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x35, 0x33, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x33, 0x33, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x34, 0x36, 0x20, 0x38, 0x39, 0x2E, 0x32, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x37, 0x38, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x38, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x33, 0x35, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x34, 0x37, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x31, 0x32, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x31, 0x31, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x34, 0x38, 0x20, 0x38, 0x34, 0x2E, 0x33, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x36, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x39, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x35, 0x32, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x34, 0x39, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x38, 0x39, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x39, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x37, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x34, 0x32, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x37, 0x32, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x35, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x35, 0x31, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x37, 0x39, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x35, 0x32, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x33, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x36, 0x33, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x34, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x35, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x32, 0x38, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x31, 0x34, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x39, 0x38, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x35, 0x34, 0x20, 0x38, 0x32, 0x2E, 0x33, 0x33, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x35, 0x34, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x33, 0x35, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x35, 0x35, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x35, 0x34, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x34, 0x31, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x35, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x35, 0x36, 0x20, 0x37, 0x35, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x38, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x39, 0x34, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x38, 0x39, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x35, 0x35, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x35, 0x37, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x35, 0x38, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x30, 0x36, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x34, 0x39, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x37, 0x32, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x37, 0x34, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x35, 0x38, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x38, 0x33, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x32, 0x33, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x35, 0x39, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x39, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x39, 0x39, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x35, 0x38, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x36, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x35, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x38, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x36, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x37, 0x34, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x38, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x36, 0x32, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x39, 0x38, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x38, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x37, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x36, 0x33, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x38, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x36, 0x31, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x36, 0x38, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x36, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x34, 0x32, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x34, 0x35, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x31, 0x37, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x36, 0x35, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x39, 0x34, 0x2E, 0x35, 0x31, 0x33, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x37, 0x31, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x36, 0x32, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x36, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x31, 0x39, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x36, 0x35, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x31, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x36, 0x37, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x37, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x31, 0x36, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x30, 0x34, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x39, 0x31, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x35, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x36, 0x38, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x35, 0x39, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x35, 0x36, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x36, 0x39, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x35, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x31, 0x33, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x39, 0x31, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x32, 0x32, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x37, 0x38, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x36, 0x39, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x36, 0x36, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x37, 0x38, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x34, 0x38, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x37, 0x35, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x37, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x33, 0x32, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x34, 0x33, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x37, 0x32, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x33, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x36, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x31, 0x37, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x32, 0x36, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x37, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x35, 0x38, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x39, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x36, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x37, 0x34, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x39, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x34, 0x34, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x33, 0x32, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x39, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x37, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x32, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x38, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x37, 0x37, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x32, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x36, 0x34, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x34, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x34, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x38, 0x37, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x34, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x37, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x33, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x39, 0x35, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x37, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x31, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x38, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x37, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x39, 0x35, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x39, 0x39, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x33, 0x34, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x38, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x37, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x31, 0x31, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x38, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x38, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x33, 0x38, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x34, 0x35, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x37, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x38, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x38, 0x33, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x35, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x37, 0x38, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x37, 0x36, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x36, 0x34, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x38, 0x35, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x37, 0x34, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x33, 0x33, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x33, 0x37, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x39, 0x39, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x34, 0x38, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x32, 0x33, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x38, 0x36, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x36, 0x35, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x31, 0x39, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x39, 0x39, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x38, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x39, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x38, 0x32, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x34, 0x37, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x32, 0x35, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x38, 0x38, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x34, 0x36, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x33, 0x35, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x34, 0x38, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x37, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x36, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x38, 0x31, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x35, 0x33, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x39, 0x31, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x37, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x32, 0x32, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x37, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x39, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x33, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x37, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x39, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x34, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x35, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x39, 0x34, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x39, 0x34, 0x2E, 0x33, 0x36, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x31, 0x32, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x38, 0x35, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x39, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x38, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x32, 0x37, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x32, 0x35, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x39, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x33, 0x34, 0x33, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x37, 0x34, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x38, 0x35, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x33, 0x31, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x35, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x39, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x39, 0x31, 0x20, 0x38, 0x39, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x39, 0x38, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x36, 0x36, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x38, 0x37, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x35, 0x35, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x33, 0x39, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x38, 0x30, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x35, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x33, 0x38, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x32, 0x39, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x34, 0x34, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x39, 0x31, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x30, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x36, 0x36, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x30, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x31, 0x37, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x37, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x32, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x38, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x31, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x33, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x38, 0x39, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x39, 0x38, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x36, 0x33, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x35, 0x37, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x30, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x37, 0x32, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x33, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x35, 0x39, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x36, 0x31, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x37, 0x35, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x34, 0x33, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x39, 0x33, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x37, 0x33, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x33, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x33, 0x32, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x37, 0x36, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x32, 0x31, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x30, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x33, 0x39, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x31, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x36, 0x33, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x33, 0x39, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x39, 0x36, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x31, 0x37, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x32, 0x31, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x37, 0x39, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x35, 0x32, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x34, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x37, 0x38, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x37, 0x36, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x33, 0x39, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x32, 0x32, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x31, 0x36, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x35, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x31, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x37, 0x35, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x31, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x37, 0x33, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x33, 0x39, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x31, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x31, 0x34, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x34, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x33, 0x37, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x31, 0x34, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x31, 0x35, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x39, 0x34, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x38, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x31, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x31, 0x36, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x37, 0x33, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x31, 0x37, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x34, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x38, 0x39, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x31, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x38, 0x37, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x35, 0x35, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x39, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x31, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x38, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x33, 0x31, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x31, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x37, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x31, 0x39, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x32, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x31, 0x39, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x32, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x31, 0x33, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x31, 0x32, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x34, 0x37, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x39, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x32, 0x33, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x30, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x38, 0x37, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x37, 0x36, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x32, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x33, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x36, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x31, 0x39, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x31, 0x31, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x32, 0x35, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x35, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x35, 0x37, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x33, 0x31, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x38, 0x39, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x34, 0x37, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x37, 0x33, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x39, 0x33, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x37, 0x32, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x32, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x35, 0x39, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x37, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x34, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x32, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x32, 0x35, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x33, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x32, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x38, 0x32, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x36, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x33, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x39, 0x34, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x31, 0x39, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x39, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x39, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x33, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x36, 0x33, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x35, 0x32, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x31, 0x33, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x32, 0x39, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x39, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x39, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x31, 0x32, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x35, 0x39, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x36, 0x32, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x33, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x33, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x37, 0x33, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x30, 0x34, 0x37, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x31, 0x35, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x33, 0x36, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x34, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x34, 0x38, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x33, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x33, 0x37, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x38, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x39, 0x37, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x34, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x33, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x34, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x36, 0x35, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x37, 0x38, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x33, 0x39, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x36, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x35, 0x31, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x35, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x32, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x33, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x37, 0x39, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x31, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x34, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x32, 0x35, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x37, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x34, 0x33, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x34, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x37, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x33, 0x38, 0x20, 0x39, 0x34, 0x2E, 0x39, 0x35, 0x33, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x34, 0x32, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x34, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x34, 0x33, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x39, 0x35, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x35, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x30, 0x34, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x36, 0x31, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x39, 0x34, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x35, 0x38, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x35, 0x32, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x35, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x30, 0x36, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x37, 0x36, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x31, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x34, 0x39, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x37, 0x35, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x39, 0x38, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x31, 0x34, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x31, 0x32, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x36, 0x32, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x38, 0x36, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x32, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x31, 0x38, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x33, 0x37, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x32, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x34, 0x36, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x37, 0x38, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x35, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x34, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x36, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x38, 0x38, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x35, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x33, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x35, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x32, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x38, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x34, 0x31, 0x20, 0x38, 0x30, 0x2E, 0x31, 0x38, 0x36, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x35, 0x39, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x37, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x36, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x39, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x39, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x35, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x33, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x35, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x33, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x30, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x36, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x38, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x36, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x34, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x36, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x39, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x35, 0x38, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x37, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x33, 0x35, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x38, 0x33, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x33, 0x32, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x36, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x38, 0x34, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x33, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x36, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x34, 0x31, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x37, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x33, 0x35, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x32, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x37, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x37, 0x31, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x38, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x37, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x34, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x38, 0x35, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x34, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x37, 0x34, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x39, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x37, 0x35, 0x20, 0x39, 0x36, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x36, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x37, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x35, 0x35, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x31, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x36, 0x34, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x33, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x37, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x36, 0x38, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x31, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x37, 0x39, 0x20, 0x38, 0x36, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x37, 0x32, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x39, 0x35, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x31, 0x38, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x32, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x38, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x35, 0x33, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x35, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x38, 0x31, 0x20, 0x38, 0x33, 0x2E, 0x38, 0x36, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x35, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x38, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x32, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x32, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x38, 0x33, 0x20, 0x38, 0x30, 0x2E, 0x33, 0x33, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x36, 0x37, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x34, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x38, 0x34, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x38, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x39, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x38, 0x35, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x38, 0x36, 0x20, 0x38, 0x36, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x35, 0x35, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x38, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x38, 0x37, 0x20, 0x37, 0x37, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x34, 0x36, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x38, 0x38, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x37, 0x34, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x30, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x38, 0x39, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x36, 0x32, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x38, 0x33, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x32, 0x35, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x39, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x33, 0x32, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x36, 0x38, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x32, 0x37, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x39, 0x32, 0x20, 0x38, 0x36, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x33, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x37, 0x33, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x37, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x39, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x35, 0x34, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x34, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x39, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x38, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x34, 0x34, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x36, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x39, 0x35, 0x20, 0x38, 0x32, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x35, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x36, 0x38, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x38, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x39, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x38, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x34, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x34, 0x35, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x35, 0x31, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x39, 0x37, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x31, 0x34, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x34, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x39, 0x38, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x34, 0x38, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x35, 0x32, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x36, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x37, 0x38, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x33, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x34, 0x39, 0x39, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x37, 0x36, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x36, 0x32, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x35, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x36, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x34, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x30, 0x31, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x31, 0x33, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x33, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x30, 0x32, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x30, 0x33, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x33, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x32, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x30, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x38, 0x39, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x34, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x32, 0x35, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x32, 0x38, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x35, 0x39, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x30, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x39, 0x32, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x32, 0x36, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x39, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x30, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x39, 0x32, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x39, 0x35, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x30, 0x37, 0x20, 0x39, 0x38, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x33, 0x33, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x33, 0x31, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x30, 0x38, 0x20, 0x39, 0x35, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x31, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x34, 0x36, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x32, 0x35, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x34, 0x36, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x30, 0x39, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x30, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x32, 0x39, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x38, 0x35, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x36, 0x33, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x31, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x39, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x38, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x31, 0x31, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x39, 0x34, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x33, 0x33, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x33, 0x35, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x39, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x31, 0x32, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x31, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x37, 0x32, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x37, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x31, 0x33, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x39, 0x39, 0x20, 0x38, 0x31, 0x2E, 0x36, 0x34, 0x39, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x36, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x39, 0x36, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x38, 0x31, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x31, 0x34, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x31, 0x35, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x34, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x34, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x31, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x31, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x31, 0x36, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x32, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x31, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x31, 0x38, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x31, 0x37, 0x20, 0x38, 0x38, 0x2E, 0x36, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x31, 0x37, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x35, 0x33, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x33, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x31, 0x38, 0x20, 0x37, 0x38, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x38, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x34, 0x36, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x37, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x37, 0x37, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x31, 0x39, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x30, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x35, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x37, 0x32, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x32, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x38, 0x37, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x36, 0x38, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x36, 0x39, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x32, 0x31, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x31, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x33, 0x33, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x32, 0x38, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x39, 0x34, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x32, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x38, 0x33, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x38, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x32, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x32, 0x33, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x37, 0x33, 0x20, 0x37, 0x37, 0x2E, 0x31, 0x30, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x37, 0x35, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x38, 0x37, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x32, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x39, 0x38, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x31, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x32, 0x35, 0x20, 0x38, 0x31, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x39, 0x31, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x34, 0x33, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x37, 0x32, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x32, 0x36, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x33, 0x34, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x31, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x35, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x32, 0x37, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x33, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x38, 0x34, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x36, 0x37, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x32, 0x38, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x33, 0x31, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x32, 0x35, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x36, 0x33, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x37, 0x35, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x39, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x37, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x33, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x31, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x36, 0x32, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x37, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x33, 0x32, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x31, 0x37, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x33, 0x37, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x38, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x33, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x33, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x38, 0x31, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x36, 0x33, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x34, 0x35, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x33, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x36, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x35, 0x37, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x37, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x33, 0x35, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x30, 0x36, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x34, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x33, 0x36, 0x20, 0x38, 0x37, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x35, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x33, 0x37, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x33, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x33, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x33, 0x38, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x35, 0x38, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x38, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x33, 0x39, 0x20, 0x38, 0x31, 0x2E, 0x39, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x39, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x34, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x37, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x33, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x34, 0x31, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x32, 0x32, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x38, 0x35, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x33, 0x35, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x38, 0x33, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x34, 0x32, 0x20, 0x38, 0x37, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x36, 0x37, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x33, 0x36, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x33, 0x33, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x34, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x30, 0x31, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x32, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x36, 0x36, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x34, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x32, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x34, 0x34, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x31, 0x33, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x34, 0x35, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x32, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x38, 0x37, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x34, 0x36, 0x20, 0x38, 0x38, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x37, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x35, 0x37, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x31, 0x36, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x36, 0x36, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x34, 0x37, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x34, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x34, 0x38, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x31, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x34, 0x39, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x35, 0x36, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x33, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x31, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x32, 0x32, 0x33, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x32, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x35, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x31, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x35, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x33, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x35, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x39, 0x34, 0x39, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x35, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x38, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x39, 0x32, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x31, 0x34, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x35, 0x34, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x35, 0x38, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x35, 0x38, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x35, 0x35, 0x20, 0x38, 0x36, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x32, 0x35, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x36, 0x35, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x33, 0x38, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x32, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x35, 0x36, 0x20, 0x37, 0x37, 0x2E, 0x37, 0x30, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x38, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x32, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x32, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x32, 0x39, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x38, 0x34, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x35, 0x37, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x31, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x31, 0x31, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x34, 0x38, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x35, 0x38, 0x20, 0x38, 0x36, 0x2E, 0x32, 0x34, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x31, 0x35, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x39, 0x36, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x31, 0x32, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x31, 0x34, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x35, 0x39, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x33, 0x39, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x31, 0x37, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x38, 0x32, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x37, 0x36, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x34, 0x38, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x36, 0x31, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x31, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x32, 0x37, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x30, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x30, 0x34, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x39, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x36, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x34, 0x39, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x32, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x38, 0x39, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x39, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x36, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x38, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x33, 0x38, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x36, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x35, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x36, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x33, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x36, 0x36, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x33, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x32, 0x37, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x38, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x36, 0x37, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x38, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x32, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x36, 0x38, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x33, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x32, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x36, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x38, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x36, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x35, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x38, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x37, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x37, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x39, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x36, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x31, 0x35, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x37, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x37, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x38, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x33, 0x33, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x38, 0x35, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x37, 0x34, 0x20, 0x39, 0x37, 0x2E, 0x36, 0x34, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x39, 0x2E, 0x38, 0x32, 0x38, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x34, 0x39, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x37, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x39, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x32, 0x39, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x34, 0x34, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x35, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x37, 0x37, 0x20, 0x39, 0x38, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x31, 0x35, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x31, 0x37, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x37, 0x38, 0x20, 0x38, 0x32, 0x2E, 0x37, 0x38, 0x39, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x32, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x38, 0x33, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x31, 0x39, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x37, 0x33, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x37, 0x39, 0x20, 0x38, 0x34, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x31, 0x31, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x31, 0x32, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x34, 0x36, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x32, 0x36, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x38, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x38, 0x30, 0x2E, 0x39, 0x39, 0x37, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x32, 0x33, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x37, 0x31, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x39, 0x33, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x38, 0x31, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x38, 0x32, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x30, 0x37, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x36, 0x32, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x38, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x38, 0x32, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x38, 0x36, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x37, 0x39, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x31, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x38, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x38, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x37, 0x34, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x31, 0x33, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x31, 0x39, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x35, 0x34, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x38, 0x34, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x36, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x32, 0x38, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x33, 0x36, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x38, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x39, 0x37, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x37, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x34, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x34, 0x35, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x38, 0x36, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x39, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x31, 0x37, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x38, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x38, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x32, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x38, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x31, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x38, 0x39, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x32, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x32, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x39, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x34, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x36, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x32, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x39, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x37, 0x32, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x39, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x39, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x32, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x39, 0x34, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x36, 0x33, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x37, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x39, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x39, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x39, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x36, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x39, 0x36, 0x20, 0x38, 0x36, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x36, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x32, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x39, 0x31, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x32, 0x35, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x39, 0x37, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x35, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x34, 0x35, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x39, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x37, 0x34, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x39, 0x38, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x37, 0x38, 0x2E, 0x38, 0x33, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x33, 0x38, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x33, 0x32, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x35, 0x39, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x38, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x33, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x38, 0x30, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x31, 0x31, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x31, 0x34, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x30, 0x31, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x31, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x37, 0x38, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x37, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x31, 0x39, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x30, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x30, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x31, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x31, 0x37, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x38, 0x36, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x35, 0x36, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x30, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x34, 0x33, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x32, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x35, 0x32, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x36, 0x37, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x30, 0x34, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x39, 0x35, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x31, 0x36, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x35, 0x37, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x31, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x30, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x33, 0x31, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x35, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x39, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x30, 0x36, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x34, 0x36, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x36, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x31, 0x38, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x38, 0x36, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x38, 0x35, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x30, 0x37, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x39, 0x39, 0x2E, 0x37, 0x37, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x36, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x39, 0x37, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x31, 0x34, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x30, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x33, 0x39, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x32, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x37, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x30, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x39, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x35, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x31, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x31, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x33, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x31, 0x32, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x35, 0x33, 0x20, 0x39, 0x30, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x32, 0x31, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x37, 0x36, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x31, 0x33, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x35, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x39, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x31, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x38, 0x37, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x38, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x31, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x38, 0x38, 0x2E, 0x33, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x31, 0x37, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x31, 0x36, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x36, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x31, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x35, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x34, 0x39, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x32, 0x37, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x31, 0x38, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x39, 0x36, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x31, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x32, 0x33, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x39, 0x33, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x31, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x32, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x38, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x32, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x38, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x32, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x34, 0x34, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x32, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x31, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x34, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x38, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x32, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x34, 0x39, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x32, 0x33, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x31, 0x33, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x32, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x39, 0x36, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x35, 0x34, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x32, 0x35, 0x20, 0x38, 0x35, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x35, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x39, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x37, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x32, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x37, 0x34, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x31, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x39, 0x36, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x32, 0x37, 0x20, 0x39, 0x37, 0x2E, 0x36, 0x32, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x32, 0x35, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x35, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x35, 0x36, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x32, 0x38, 0x20, 0x38, 0x38, 0x2E, 0x35, 0x39, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x30, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x35, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x35, 0x32, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x34, 0x36, 0x20, 0x38, 0x35, 0x2E, 0x31, 0x36, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x39, 0x34, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x33, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x33, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x39, 0x33, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x31, 0x31, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x32, 0x33, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x33, 0x31, 0x20, 0x38, 0x35, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x37, 0x36, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x31, 0x33, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x31, 0x34, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x33, 0x32, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x39, 0x32, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x38, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x33, 0x33, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x36, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x33, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x36, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x33, 0x34, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x37, 0x35, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x36, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x33, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x35, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x33, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x37, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x39, 0x39, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x38, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x33, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x32, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x37, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x33, 0x38, 0x20, 0x37, 0x38, 0x2E, 0x34, 0x36, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x30, 0x36, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x34, 0x36, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x36, 0x33, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x33, 0x33, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x33, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x30, 0x34, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x38, 0x35, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x39, 0x34, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x34, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x39, 0x39, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x39, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x34, 0x38, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x32, 0x35, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x34, 0x31, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x37, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x38, 0x36, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x39, 0x38, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x31, 0x32, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x37, 0x35, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x34, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x38, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x31, 0x32, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x33, 0x33, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x33, 0x37, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x34, 0x33, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x34, 0x32, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x35, 0x32, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x34, 0x37, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x34, 0x34, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x38, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x30, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x38, 0x35, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x38, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x32, 0x38, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x34, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x37, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x34, 0x36, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x37, 0x39, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x32, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x34, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x34, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x34, 0x38, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x39, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x36, 0x31, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x32, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x34, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x36, 0x37, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x35, 0x31, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x31, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x31, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x30, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x38, 0x35, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x31, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x34, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x35, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x38, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x35, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x31, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x37, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x35, 0x34, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x37, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x35, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x37, 0x32, 0x20, 0x38, 0x38, 0x2E, 0x38, 0x35, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x32, 0x38, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x31, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x34, 0x35, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x35, 0x36, 0x20, 0x39, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x32, 0x36, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x38, 0x32, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x37, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x35, 0x37, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x32, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x34, 0x38, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x36, 0x32, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x35, 0x38, 0x20, 0x38, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x30, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x32, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x39, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x35, 0x39, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x35, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x35, 0x38, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x36, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x39, 0x36, 0x2E, 0x32, 0x39, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x37, 0x36, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x39, 0x39, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x39, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x36, 0x31, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x32, 0x39, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x36, 0x34, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x36, 0x32, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x33, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x35, 0x33, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x32, 0x34, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x36, 0x33, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x32, 0x37, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x34, 0x31, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x32, 0x34, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x32, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x32, 0x37, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x36, 0x34, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x30, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x35, 0x31, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x32, 0x34, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x32, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x37, 0x31, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x36, 0x35, 0x20, 0x38, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x39, 0x39, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x37, 0x39, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x36, 0x36, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x32, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x38, 0x33, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x34, 0x35, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x35, 0x36, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x35, 0x35, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x36, 0x37, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x39, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x36, 0x36, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x33, 0x33, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x36, 0x38, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x31, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x35, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x37, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x36, 0x39, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x38, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x39, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x37, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x34, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x35, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x37, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x30, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x35, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x37, 0x33, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x37, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x38, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x37, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x38, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x37, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x37, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x34, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x37, 0x37, 0x20, 0x38, 0x33, 0x2E, 0x30, 0x31, 0x39, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x30, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x36, 0x36, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x37, 0x38, 0x20, 0x38, 0x31, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x38, 0x2E, 0x34, 0x39, 0x32, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x39, 0x38, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x35, 0x37, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x37, 0x39, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x33, 0x37, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x36, 0x39, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x31, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x32, 0x31, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x38, 0x36, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x35, 0x35, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x35, 0x32, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x38, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x32, 0x33, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x38, 0x31, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x39, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x38, 0x36, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x32, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x33, 0x39, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x38, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x34, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x32, 0x39, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x33, 0x32, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x38, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x32, 0x35, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x36, 0x35, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x31, 0x32, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x31, 0x34, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x38, 0x34, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x31, 0x33, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x35, 0x37, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x32, 0x35, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x38, 0x35, 0x20, 0x38, 0x37, 0x2E, 0x34, 0x32, 0x34, 0x20, 0x38, 0x31, 0x2E, 0x38, 0x32, 0x34, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x35, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x33, 0x37, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x38, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x34, 0x33, 0x32, 0x20, 0x37, 0x37, 0x2E, 0x38, 0x38, 0x31, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x35, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x36, 0x32, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x36, 0x31, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x31, 0x36, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x38, 0x37, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x34, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x31, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x39, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x38, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x39, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x38, 0x39, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x35, 0x34, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x36, 0x36, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x33, 0x36, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x39, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x34, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x36, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x39, 0x31, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x33, 0x32, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x31, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x35, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x39, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x37, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x36, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x38, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x32, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x39, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x35, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x32, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x39, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x39, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x30, 0x37, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x33, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x39, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x37, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x34, 0x34, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x39, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x38, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x35, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x33, 0x33, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x31, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x32, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x35, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x36, 0x39, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x38, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x34, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x32, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x39, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x30, 0x31, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x37, 0x2E, 0x35, 0x33, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x39, 0x34, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x37, 0x33, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x30, 0x32, 0x20, 0x37, 0x39, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x36, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x38, 0x31, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x39, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x30, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x37, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x39, 0x39, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x30, 0x34, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x37, 0x35, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x31, 0x39, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x31, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x30, 0x35, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x31, 0x34, 0x20, 0x38, 0x36, 0x2E, 0x39, 0x39, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x32, 0x37, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x31, 0x33, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x30, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x32, 0x37, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x36, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x31, 0x35, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x34, 0x32, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x30, 0x37, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x36, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x31, 0x38, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x33, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x36, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x39, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x32, 0x32, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x30, 0x38, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x38, 0x39, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x39, 0x39, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x33, 0x37, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x31, 0x35, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x30, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x38, 0x31, 0x2E, 0x30, 0x39, 0x32, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x34, 0x34, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x38, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x31, 0x31, 0x20, 0x38, 0x37, 0x2E, 0x33, 0x33, 0x37, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x37, 0x33, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x36, 0x36, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x38, 0x34, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x31, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x37, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x31, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x37, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x31, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x31, 0x35, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x37, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x37, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x31, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x35, 0x37, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x33, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x31, 0x36, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x34, 0x37, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x34, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x30, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x31, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x39, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x30, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x35, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x31, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x32, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x34, 0x37, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x31, 0x36, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x32, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x35, 0x38, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x32, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x38, 0x39, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x34, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x34, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x37, 0x38, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x32, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x31, 0x33, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x39, 0x36, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x30, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x36, 0x38, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x32, 0x33, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x34, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x31, 0x36, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x36, 0x35, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x32, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x33, 0x36, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x35, 0x36, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x34, 0x33, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x32, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x36, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x32, 0x34, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x33, 0x33, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x36, 0x31, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x32, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x38, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x32, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x35, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x32, 0x38, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x38, 0x31, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x32, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x32, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x34, 0x36, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x31, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x36, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x33, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x38, 0x34, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x38, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x34, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x39, 0x32, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x33, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x33, 0x30, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x32, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x33, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x31, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x34, 0x36, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x38, 0x35, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x33, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x37, 0x39, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x30, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x32, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x32, 0x38, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x33, 0x31, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x35, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x31, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x34, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x38, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x33, 0x38, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x34, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x34, 0x33, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x35, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x34, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x33, 0x37, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x34, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x36, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x34, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x37, 0x31, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x33, 0x36, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x34, 0x35, 0x20, 0x39, 0x38, 0x2E, 0x38, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x39, 0x35, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x38, 0x33, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x37, 0x33, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x34, 0x36, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x32, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x34, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x30, 0x38, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x31, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x34, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x34, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x39, 0x31, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x33, 0x34, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x35, 0x35, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x34, 0x39, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x34, 0x32, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x36, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x34, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x35, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x30, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x35, 0x34, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x33, 0x34, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x35, 0x31, 0x20, 0x39, 0x38, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x31, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x36, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x34, 0x39, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x32, 0x38, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x35, 0x32, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x37, 0x38, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x35, 0x33, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x35, 0x38, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x31, 0x31, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x35, 0x34, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x36, 0x37, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x32, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x36, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x35, 0x35, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x35, 0x36, 0x20, 0x38, 0x32, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x39, 0x36, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x38, 0x33, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x38, 0x39, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x35, 0x37, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x34, 0x36, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x35, 0x38, 0x20, 0x37, 0x39, 0x2E, 0x33, 0x32, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x38, 0x33, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x38, 0x39, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x38, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x35, 0x39, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x33, 0x31, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x37, 0x35, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x39, 0x38, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x36, 0x32, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x34, 0x33, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x36, 0x31, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x36, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x37, 0x37, 0x2E, 0x32, 0x33, 0x36, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x39, 0x33, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x32, 0x35, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x36, 0x32, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x35, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x35, 0x34, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x38, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x36, 0x33, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x37, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x32, 0x36, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x38, 0x31, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x36, 0x34, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x34, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x35, 0x38, 0x20, 0x38, 0x33, 0x2E, 0x32, 0x30, 0x36, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x38, 0x39, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x37, 0x37, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x36, 0x35, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x36, 0x36, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x38, 0x39, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x32, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x32, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x36, 0x37, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x36, 0x38, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x37, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x36, 0x38, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x35, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x33, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x38, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x36, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x38, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x37, 0x38, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x32, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x33, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x37, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x32, 0x36, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x32, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x33, 0x39, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x36, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x37, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x37, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x36, 0x33, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x37, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x37, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x31, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x35, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x37, 0x34, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x32, 0x32, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x37, 0x36, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x32, 0x33, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x38, 0x39, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x37, 0x35, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x34, 0x36, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x37, 0x33, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x37, 0x36, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x35, 0x34, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x37, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x33, 0x36, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x31, 0x36, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x39, 0x31, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x37, 0x37, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x38, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x34, 0x38, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x35, 0x34, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x35, 0x32, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x37, 0x38, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x33, 0x31, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x32, 0x35, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x36, 0x36, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x37, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x35, 0x33, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x37, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x33, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x39, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x38, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x32, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x38, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x31, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x30, 0x36, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x38, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x32, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x38, 0x34, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x33, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x38, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x36, 0x39, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x36, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x33, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x30, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x33, 0x39, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x38, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x36, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x38, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x35, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x33, 0x39, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x34, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x38, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x37, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x33, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x37, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x34, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x39, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x35, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x39, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x34, 0x33, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x37, 0x39, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x34, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x39, 0x33, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x36, 0x39, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x33, 0x39, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x39, 0x34, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x38, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x31, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x33, 0x39, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x39, 0x35, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x37, 0x32, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x39, 0x36, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x38, 0x33, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x34, 0x33, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x34, 0x36, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x39, 0x37, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x38, 0x30, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x37, 0x37, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x31, 0x36, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x39, 0x38, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x36, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x32, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x32, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x37, 0x39, 0x39, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x39, 0x35, 0x2E, 0x34, 0x33, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x38, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x33, 0x38, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x39, 0x32, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x31, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x38, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x30, 0x32, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x30, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x34, 0x34, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x36, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x30, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x33, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x30, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x34, 0x37, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x37, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x30, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x38, 0x33, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x36, 0x31, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x31, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x39, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x31, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x30, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x31, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x30, 0x38, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x39, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x30, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x37, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x30, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x36, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x34, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x31, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x34, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x38, 0x36, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x38, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x31, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x31, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x31, 0x39, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x39, 0x34, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x31, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x31, 0x39, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x33, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x36, 0x39, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x33, 0x36, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x34, 0x39, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x31, 0x33, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x39, 0x38, 0x2E, 0x36, 0x36, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x34, 0x32, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x36, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x31, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x31, 0x38, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x31, 0x32, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x31, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x35, 0x36, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x38, 0x31, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x31, 0x36, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x38, 0x36, 0x2E, 0x38, 0x30, 0x34, 0x20, 0x39, 0x36, 0x2E, 0x33, 0x34, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x32, 0x37, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x38, 0x35, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x31, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x39, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x36, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x36, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x34, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x31, 0x39, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x37, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x36, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x37, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x32, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x35, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x32, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x32, 0x34, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x37, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x38, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x36, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x36, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x37, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x34, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x32, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x35, 0x35, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x36, 0x33, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x35, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x30, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x37, 0x34, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x35, 0x33, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x39, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x31, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x32, 0x38, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x39, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x35, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x31, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x34, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x32, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x36, 0x33, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x38, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x32, 0x33, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x31, 0x20, 0x38, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x34, 0x37, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x33, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x36, 0x38, 0x20, 0x38, 0x38, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x35, 0x39, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x36, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x33, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x30, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x37, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x38, 0x39, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x33, 0x33, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x39, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x31, 0x38, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x36, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x36, 0x36, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x33, 0x34, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x35, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x31, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x32, 0x33, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x33, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x31, 0x20, 0x39, 0x39, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x37, 0x35, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x34, 0x33, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x33, 0x36, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x31, 0x38, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x36, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x35, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x32, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x38, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x34, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x34, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x31, 0x33, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x33, 0x39, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x36, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x38, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x37, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x35, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x39, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x33, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x34, 0x32, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x31, 0x38, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x38, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x37, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x34, 0x33, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x34, 0x34, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x33, 0x32, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x35, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x34, 0x35, 0x20, 0x38, 0x35, 0x2E, 0x36, 0x35, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x31, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x34, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x34, 0x36, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x32, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x34, 0x37, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x39, 0x35, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x31, 0x38, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x36, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x34, 0x38, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x34, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x37, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x34, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x35, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x38, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x32, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x31, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x35, 0x38, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x35, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x39, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x35, 0x31, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x38, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x31, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x35, 0x32, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x38, 0x37, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x38, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x35, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x35, 0x33, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x35, 0x34, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x33, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x35, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x35, 0x35, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x31, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x35, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x35, 0x36, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x35, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x35, 0x37, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x35, 0x38, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x34, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x33, 0x31, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x35, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x32, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x37, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x36, 0x31, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x33, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x31, 0x38, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x37, 0x37, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x36, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x37, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x38, 0x38, 0x20, 0x38, 0x37, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x37, 0x36, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x33, 0x38, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x34, 0x36, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x36, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x32, 0x33, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x33, 0x35, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x36, 0x31, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x32, 0x36, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x36, 0x34, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x34, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x33, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x34, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x36, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x37, 0x36, 0x2E, 0x33, 0x32, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x33, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x36, 0x36, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x34, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x39, 0x31, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x34, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x38, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x36, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x32, 0x36, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x39, 0x39, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x36, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x36, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x36, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x32, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x36, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x35, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x34, 0x39, 0x20, 0x38, 0x39, 0x2E, 0x36, 0x39, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x32, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x37, 0x31, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x37, 0x36, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x36, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x35, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x37, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x37, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x36, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x33, 0x31, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x37, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x38, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x37, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x37, 0x37, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x35, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x38, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x37, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x32, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x38, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x34, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x32, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x37, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x39, 0x35, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x38, 0x33, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x38, 0x38, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x37, 0x38, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x34, 0x38, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x39, 0x37, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x33, 0x38, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x37, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x32, 0x31, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x34, 0x35, 0x20, 0x38, 0x31, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x38, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x39, 0x34, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x39, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x36, 0x34, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x34, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x38, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x32, 0x38, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x38, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x34, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x30, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x33, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x38, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x39, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x31, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x32, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x38, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x38, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x37, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x36, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x30, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x31, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x36, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x31, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x35, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x37, 0x38, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x35, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x39, 0x39, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x35, 0x31, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x39, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x39, 0x31, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x33, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x33, 0x38, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x39, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x32, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x32, 0x34, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x33, 0x35, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x39, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x38, 0x36, 0x20, 0x38, 0x33, 0x2E, 0x39, 0x33, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x34, 0x34, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x39, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x33, 0x35, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x35, 0x31, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x31, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x36, 0x37, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x32, 0x36, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x39, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x31, 0x34, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x38, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x31, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x39, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x33, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x38, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x31, 0x35, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x32, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x38, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x39, 0x20, 0x38, 0x30, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x33, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x33, 0x38, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x30, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x34, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x37, 0x37, 0x2E, 0x33, 0x32, 0x33, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x38, 0x37, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x30, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x39, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x32, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x32, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x39, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x36, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x31, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x31, 0x35, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x30, 0x34, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x33, 0x35, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x39, 0x38, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x38, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x30, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x36, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x33, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x35, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x33, 0x35, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x30, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x38, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x34, 0x37, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x39, 0x37, 0x39, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x31, 0x37, 0x35, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x31, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x35, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x37, 0x31, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x34, 0x32, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x31, 0x32, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x37, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x33, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x31, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x38, 0x34, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x31, 0x34, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x36, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x31, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x31, 0x36, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x37, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x38, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x31, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x31, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x38, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x31, 0x38, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x31, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x33, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x39, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x35, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x33, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x33, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x32, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x33, 0x32, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x35, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x32, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x31, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x32, 0x33, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x34, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x32, 0x34, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x34, 0x34, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x32, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x38, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x32, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x39, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x32, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x32, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x36, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x35, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x33, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x37, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x35, 0x36, 0x37, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x39, 0x34, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x37, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x37, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x33, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x37, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x34, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x33, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x30, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x34, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x33, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x39, 0x37, 0x20, 0x37, 0x39, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x33, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x38, 0x33, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x33, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x38, 0x34, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x35, 0x37, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x34, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x31, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x34, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x33, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x37, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x33, 0x39, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x35, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x36, 0x20, 0x38, 0x31, 0x2E, 0x36, 0x35, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x32, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x38, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x38, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x37, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x35, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x34, 0x31, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x37, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x33, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x31, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x30, 0x31, 0x20, 0x37, 0x39, 0x2E, 0x32, 0x33, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x37, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x36, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x34, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x32, 0x37, 0x20, 0x38, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x39, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x39, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x31, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x34, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x31, 0x32, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x30, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x33, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x39, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x33, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x30, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x30, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x33, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x38, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x36, 0x35, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x35, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x31, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x35, 0x32, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x33, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x35, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x37, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x36, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x39, 0x20, 0x38, 0x31, 0x2E, 0x38, 0x35, 0x39, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x37, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x35, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x39, 0x39, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x35, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x32, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x35, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x35, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x35, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x38, 0x39, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x32, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x38, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x36, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x35, 0x35, 0x20, 0x39, 0x36, 0x2E, 0x34, 0x39, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x39, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x37, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x38, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x36, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x31, 0x36, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x37, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x36, 0x34, 0x20, 0x39, 0x34, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x36, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x36, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x31, 0x31, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x36, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x35, 0x38, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x39, 0x38, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x39, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x35, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x36, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x37, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x30, 0x37, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x37, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x37, 0x38, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x31, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x37, 0x32, 0x20, 0x38, 0x38, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x34, 0x34, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x38, 0x39, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x37, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x31, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x35, 0x35, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x32, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x37, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x31, 0x38, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x32, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x37, 0x35, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x34, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x37, 0x39, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x37, 0x36, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x32, 0x36, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x34, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x32, 0x39, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x31, 0x37, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x37, 0x38, 0x20, 0x39, 0x39, 0x2E, 0x30, 0x34, 0x32, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x36, 0x31, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x37, 0x39, 0x20, 0x38, 0x39, 0x2E, 0x31, 0x37, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x37, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x34, 0x36, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x39, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x36, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x38, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x37, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x31, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x32, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x38, 0x32, 0x20, 0x39, 0x35, 0x2E, 0x35, 0x32, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x37, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x38, 0x31, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x34, 0x36, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x38, 0x33, 0x20, 0x38, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x34, 0x36, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x34, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x38, 0x34, 0x20, 0x38, 0x32, 0x2E, 0x38, 0x37, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x39, 0x32, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x31, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x38, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x38, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x38, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x38, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x37, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x38, 0x37, 0x20, 0x38, 0x37, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x38, 0x38, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x32, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x31, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x38, 0x39, 0x20, 0x38, 0x37, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x31, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x39, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x38, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x36, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x39, 0x31, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x32, 0x38, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x36, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x39, 0x32, 0x20, 0x39, 0x36, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x38, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x39, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x38, 0x36, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x39, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x39, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x31, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x38, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x39, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x32, 0x39, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x33, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x39, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x32, 0x39, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x34, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x34, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x39, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x30, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x31, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x39, 0x35, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x31, 0x38, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x39, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x33, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x34, 0x31, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x39, 0x39, 0x39, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x36, 0x33, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x38, 0x32, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x34, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x30, 0x31, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x35, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x30, 0x32, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x32, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x30, 0x33, 0x20, 0x37, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x30, 0x34, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x36, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x38, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x30, 0x35, 0x20, 0x38, 0x31, 0x2E, 0x38, 0x32, 0x34, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x30, 0x36, 0x20, 0x38, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x34, 0x33, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x38, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x30, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x34, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x34, 0x33, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x30, 0x38, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x34, 0x33, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x37, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x36, 0x32, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x30, 0x39, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x31, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x34, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x31, 0x31, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x39, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x37, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x31, 0x32, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x37, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x37, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x37, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x31, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x38, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x39, 0x36, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x32, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x31, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x32, 0x32, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x31, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x31, 0x35, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x38, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x31, 0x31, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x31, 0x36, 0x20, 0x38, 0x37, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x33, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x36, 0x34, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x35, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x31, 0x37, 0x20, 0x38, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x33, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x33, 0x37, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x33, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x31, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x39, 0x38, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x37, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x31, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x35, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x35, 0x36, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x32, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x33, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x31, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x32, 0x31, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x35, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x32, 0x32, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x30, 0x36, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x32, 0x33, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x39, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x32, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x30, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x33, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x32, 0x35, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x32, 0x36, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x39, 0x33, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x32, 0x38, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x31, 0x37, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x32, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x32, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x30, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x32, 0x34, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x32, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x37, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x31, 0x31, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x32, 0x34, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x37, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x38, 0x36, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x34, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x36, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x36, 0x34, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x31, 0x34, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x36, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x33, 0x31, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x35, 0x35, 0x20, 0x38, 0x33, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x37, 0x39, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x38, 0x32, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x33, 0x32, 0x20, 0x38, 0x35, 0x2E, 0x30, 0x35, 0x33, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x36, 0x36, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x34, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x33, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x33, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x31, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x38, 0x31, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x37, 0x31, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x33, 0x34, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x33, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x36, 0x37, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x36, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x33, 0x35, 0x20, 0x38, 0x33, 0x2E, 0x39, 0x35, 0x39, 0x20, 0x38, 0x33, 0x2E, 0x38, 0x35, 0x32, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x35, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x35, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x32, 0x33, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x33, 0x39, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x33, 0x36, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x37, 0x34, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x36, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x38, 0x39, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x31, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x33, 0x37, 0x20, 0x37, 0x37, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x35, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x36, 0x35, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x33, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x33, 0x38, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x38, 0x35, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x34, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x38, 0x36, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x38, 0x38, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x33, 0x39, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x36, 0x33, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x38, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x34, 0x33, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x36, 0x32, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x37, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x34, 0x31, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x34, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x34, 0x33, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x32, 0x34, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x39, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x34, 0x34, 0x20, 0x38, 0x34, 0x2E, 0x33, 0x32, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x32, 0x39, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x33, 0x37, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x34, 0x35, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x38, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x31, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x31, 0x34, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x34, 0x36, 0x20, 0x39, 0x38, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x34, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x31, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x39, 0x37, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x34, 0x37, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x33, 0x35, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x31, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x36, 0x37, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x31, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x34, 0x38, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x37, 0x36, 0x20, 0x39, 0x30, 0x2E, 0x36, 0x34, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x37, 0x38, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x38, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x34, 0x39, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x32, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x33, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x35, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x30, 0x39, 0x35, 0x20, 0x38, 0x38, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x31, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x38, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x35, 0x33, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x37, 0x36, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x35, 0x31, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x38, 0x34, 0x2E, 0x36, 0x37, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x37, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x34, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x33, 0x33, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x35, 0x32, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x39, 0x39, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x35, 0x33, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x39, 0x36, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x35, 0x33, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x34, 0x39, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x32, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x35, 0x34, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x34, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x34, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x35, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x39, 0x31, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x35, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x35, 0x37, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x39, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x38, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x35, 0x38, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x37, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x34, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x39, 0x34, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x38, 0x31, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x35, 0x39, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x34, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x33, 0x32, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x32, 0x34, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x35, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x39, 0x38, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x36, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x31, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x36, 0x31, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x36, 0x31, 0x20, 0x38, 0x39, 0x2E, 0x32, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x39, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x37, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x36, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x36, 0x32, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x34, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x31, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x36, 0x33, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x34, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x36, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x36, 0x34, 0x20, 0x38, 0x36, 0x2E, 0x33, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x36, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x35, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x35, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x36, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x34, 0x32, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x36, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x36, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x31, 0x32, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x33, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x31, 0x34, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x39, 0x31, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x33, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x38, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x35, 0x39, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x34, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x36, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x34, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x39, 0x35, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x39, 0x37, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x39, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x36, 0x36, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x33, 0x32, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x37, 0x31, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x32, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x34, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x37, 0x32, 0x20, 0x38, 0x33, 0x2E, 0x32, 0x37, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x32, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x37, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x38, 0x37, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x33, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x37, 0x34, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x32, 0x37, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x31, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x33, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x37, 0x35, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x37, 0x36, 0x20, 0x38, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x32, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x32, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x37, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x36, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x34, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x31, 0x38, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x38, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x37, 0x39, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x32, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x31, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x38, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x39, 0x32, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x30, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x33, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x38, 0x37, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x31, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x38, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x35, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x33, 0x33, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x32, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x38, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x34, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x31, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x31, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x34, 0x36, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x38, 0x34, 0x20, 0x38, 0x36, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x31, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x37, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x35, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x38, 0x35, 0x20, 0x38, 0x37, 0x2E, 0x38, 0x38, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x35, 0x35, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x34, 0x34, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x38, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x38, 0x36, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x31, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x31, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x38, 0x37, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x38, 0x38, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x38, 0x39, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x37, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x39, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x37, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x30, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x39, 0x31, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x38, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x30, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x39, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x39, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x34, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x39, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x33, 0x33, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x39, 0x35, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x31, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x37, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x39, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x36, 0x35, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x34, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x35, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x32, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x39, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x32, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x39, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x39, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x32, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x30, 0x34, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x30, 0x39, 0x39, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x35, 0x34, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x31, 0x33, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x32, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x35, 0x34, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x33, 0x36, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x39, 0x31, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x38, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x30, 0x31, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x37, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x30, 0x32, 0x20, 0x39, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x36, 0x36, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x36, 0x35, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x30, 0x33, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x34, 0x31, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x38, 0x37, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x39, 0x37, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x30, 0x34, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x34, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x35, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x35, 0x32, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x38, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x30, 0x35, 0x20, 0x38, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x31, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x33, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x32, 0x38, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x30, 0x36, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x30, 0x33, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x35, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x30, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x33, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x39, 0x33, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x37, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x30, 0x38, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x30, 0x39, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x36, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x33, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x31, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x39, 0x31, 0x31, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x36, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x33, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x31, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x31, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x31, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x38, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x34, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x31, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x39, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x38, 0x38, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x36, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x32, 0x39, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x35, 0x36, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x31, 0x33, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x31, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x37, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x31, 0x35, 0x20, 0x39, 0x38, 0x2E, 0x31, 0x38, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x33, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x31, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x31, 0x34, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x33, 0x33, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x31, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x38, 0x39, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x35, 0x38, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x31, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x33, 0x37, 0x20, 0x39, 0x34, 0x2E, 0x34, 0x34, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x37, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x33, 0x38, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x31, 0x38, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x36, 0x34, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x31, 0x31, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x32, 0x32, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x31, 0x39, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x35, 0x34, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x36, 0x35, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x38, 0x32, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x33, 0x31, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x32, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x32, 0x36, 0x38, 0x20, 0x37, 0x37, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x32, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x33, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x38, 0x35, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x36, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x32, 0x31, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x35, 0x39, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x37, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x35, 0x33, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x31, 0x38, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x32, 0x32, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x38, 0x33, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x36, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x37, 0x34, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x32, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x32, 0x33, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x38, 0x31, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x33, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x34, 0x37, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x31, 0x37, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x32, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x31, 0x33, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x32, 0x35, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x37, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x39, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x32, 0x36, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x33, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x32, 0x37, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x31, 0x34, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x32, 0x38, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x32, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x31, 0x31, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x33, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x33, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x33, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x34, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x33, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x36, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x38, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x30, 0x35, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x33, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x33, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x34, 0x33, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x33, 0x35, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x32, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x32, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x31, 0x37, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x33, 0x36, 0x20, 0x38, 0x32, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x31, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x31, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x37, 0x38, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x33, 0x39, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x33, 0x37, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x35, 0x35, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x33, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x36, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x33, 0x38, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x34, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x34, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x33, 0x39, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x38, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x38, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x37, 0x33, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x32, 0x37, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x34, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x32, 0x35, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x34, 0x31, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x35, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x39, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x34, 0x32, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x39, 0x39, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x34, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x38, 0x36, 0x20, 0x38, 0x35, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x39, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x39, 0x32, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x34, 0x34, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x34, 0x34, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x39, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x32, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x36, 0x38, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x39, 0x37, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x34, 0x35, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x39, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x39, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x32, 0x35, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x37, 0x31, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x34, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x34, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x38, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x36, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x34, 0x38, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x35, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x34, 0x39, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x34, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x35, 0x31, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x37, 0x35, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x34, 0x33, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x35, 0x32, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x39, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x35, 0x36, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x35, 0x33, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x35, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x39, 0x32, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x31, 0x38, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x35, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x39, 0x38, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x31, 0x32, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x34, 0x35, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x35, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x39, 0x36, 0x2E, 0x33, 0x39, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x35, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x35, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x37, 0x32, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x33, 0x34, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x35, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x32, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x35, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x35, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x35, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x35, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x35, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x38, 0x39, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x37, 0x38, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x32, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x36, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x33, 0x20, 0x38, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x34, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x36, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x36, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x38, 0x32, 0x2E, 0x39, 0x33, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x31, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x39, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x36, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x38, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x36, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x37, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x36, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x36, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x36, 0x37, 0x20, 0x39, 0x38, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x30, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x33, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x31, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x38, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x39, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x36, 0x39, 0x20, 0x38, 0x33, 0x2E, 0x30, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x31, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x36, 0x32, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x39, 0x32, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x37, 0x31, 0x20, 0x38, 0x34, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x38, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x36, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x37, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x37, 0x31, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x38, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x37, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x32, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x37, 0x34, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x36, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x37, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x30, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x38, 0x39, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x32, 0x34, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x34, 0x39, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x37, 0x36, 0x20, 0x39, 0x36, 0x2E, 0x37, 0x36, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x38, 0x31, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x35, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x35, 0x34, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x37, 0x31, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x36, 0x36, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x35, 0x32, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x37, 0x38, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x36, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x37, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x31, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x31, 0x35, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x34, 0x39, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x37, 0x39, 0x20, 0x38, 0x31, 0x2E, 0x37, 0x38, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x31, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x38, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x38, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x37, 0x37, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x30, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x37, 0x36, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x32, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x38, 0x31, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x37, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x38, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x34, 0x31, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x38, 0x32, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x38, 0x33, 0x20, 0x38, 0x34, 0x2E, 0x31, 0x33, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x39, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x33, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x38, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x38, 0x34, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x35, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x37, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x38, 0x35, 0x20, 0x38, 0x38, 0x2E, 0x30, 0x35, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x33, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x38, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x38, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x39, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x38, 0x37, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x38, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x38, 0x38, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x35, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x38, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x38, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x39, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x38, 0x36, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x31, 0x34, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x38, 0x32, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x39, 0x32, 0x20, 0x38, 0x36, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x38, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x32, 0x33, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x39, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x31, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x35, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x38, 0x37, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x35, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x39, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x35, 0x37, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x36, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x36, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x33, 0x39, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x39, 0x35, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x36, 0x36, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x39, 0x36, 0x20, 0x38, 0x37, 0x2E, 0x38, 0x37, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x35, 0x31, 0x20, 0x38, 0x31, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x32, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x31, 0x39, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x31, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x39, 0x37, 0x20, 0x38, 0x35, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x35, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x38, 0x31, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x31, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x39, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x39, 0x36, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x32, 0x38, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x31, 0x39, 0x39, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x38, 0x31, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x38, 0x38, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x32, 0x33, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x37, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x39, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x37, 0x33, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x33, 0x31, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x36, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x30, 0x31, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x37, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x38, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x30, 0x32, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x32, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x30, 0x33, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x39, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x30, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x39, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x39, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x30, 0x35, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x30, 0x36, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x39, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x35, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x30, 0x37, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x35, 0x33, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x35, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x30, 0x38, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x34, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x30, 0x39, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x34, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x34, 0x36, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x36, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x31, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x36, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x32, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x31, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x31, 0x33, 0x20, 0x39, 0x34, 0x2E, 0x39, 0x37, 0x36, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x36, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x34, 0x38, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x34, 0x35, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x31, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x33, 0x31, 0x33, 0x20, 0x38, 0x35, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x33, 0x39, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x35, 0x38, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x31, 0x35, 0x20, 0x39, 0x31, 0x2E, 0x33, 0x33, 0x37, 0x20, 0x38, 0x36, 0x2E, 0x34, 0x32, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x32, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x32, 0x32, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x31, 0x36, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x38, 0x33, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x37, 0x33, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x31, 0x37, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x30, 0x38, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x37, 0x35, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x37, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x39, 0x37, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x32, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x31, 0x38, 0x20, 0x38, 0x34, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x39, 0x39, 0x20, 0x38, 0x31, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x31, 0x35, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x31, 0x35, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x31, 0x39, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x39, 0x38, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x31, 0x33, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x39, 0x32, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x34, 0x39, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x32, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x36, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x33, 0x37, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x32, 0x36, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x32, 0x31, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x37, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x30, 0x38, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x31, 0x37, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x39, 0x31, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x32, 0x32, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x30, 0x34, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x39, 0x37, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x32, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x33, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x34, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x32, 0x33, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x36, 0x37, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x32, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x34, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x32, 0x35, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x32, 0x36, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x34, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x32, 0x37, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x38, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x32, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x36, 0x38, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x38, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x32, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x33, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x32, 0x39, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x33, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x37, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x33, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x31, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x33, 0x33, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x31, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x33, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x39, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x34, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x36, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x35, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x39, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x33, 0x35, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x35, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x36, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x31, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x33, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x31, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x37, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x37, 0x32, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x33, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x37, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x36, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x34, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x31, 0x37, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x33, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x38, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x38, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x33, 0x39, 0x20, 0x38, 0x36, 0x2E, 0x31, 0x34, 0x38, 0x20, 0x39, 0x30, 0x2E, 0x36, 0x30, 0x32, 0x20, 0x39, 0x30, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x37, 0x39, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x37, 0x34, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x36, 0x32, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x34, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x36, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x32, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x37, 0x34, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x34, 0x31, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x32, 0x38, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x36, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x34, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x34, 0x32, 0x20, 0x38, 0x31, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x32, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x32, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x34, 0x37, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x38, 0x31, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x34, 0x33, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x32, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x34, 0x38, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x32, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x32, 0x36, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x34, 0x34, 0x20, 0x38, 0x35, 0x2E, 0x34, 0x39, 0x31, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x35, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x34, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x33, 0x37, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x35, 0x35, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x34, 0x36, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x36, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x34, 0x37, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x35, 0x39, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x39, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x32, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x35, 0x38, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x38, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x34, 0x38, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x32, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x34, 0x32, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x37, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x34, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x32, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x38, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x31, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x35, 0x31, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x30, 0x34, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x34, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x36, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x31, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x35, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x37, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x38, 0x38, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x38, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x35, 0x33, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x36, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x31, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x33, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x35, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x35, 0x35, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x33, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x36, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x35, 0x36, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x38, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x34, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x37, 0x32, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x35, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x39, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x31, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x35, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x34, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x35, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x35, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x37, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x30, 0x38, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x31, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x36, 0x31, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x39, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x37, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x35, 0x33, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x30, 0x39, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x36, 0x33, 0x20, 0x38, 0x32, 0x2E, 0x37, 0x32, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x30, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x39, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x31, 0x33, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x34, 0x33, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x36, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x34, 0x32, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x38, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x37, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x36, 0x35, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x32, 0x31, 0x20, 0x38, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x39, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x35, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x31, 0x37, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x33, 0x33, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x36, 0x36, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x38, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x36, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x32, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x31, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x36, 0x37, 0x20, 0x37, 0x35, 0x2E, 0x39, 0x30, 0x35, 0x20, 0x39, 0x34, 0x2E, 0x31, 0x32, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x31, 0x37, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x31, 0x35, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x36, 0x38, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x34, 0x35, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x37, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x36, 0x34, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x36, 0x39, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x32, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x33, 0x37, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x36, 0x37, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x32, 0x34, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x31, 0x36, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x38, 0x31, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x37, 0x35, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x37, 0x31, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x38, 0x38, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x30, 0x38, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x34, 0x39, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x37, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x37, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x32, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x37, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x30, 0x33, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x38, 0x33, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x37, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x31, 0x36, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x30, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x37, 0x36, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x30, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x37, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x39, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x38, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x32, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x37, 0x33, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x37, 0x39, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x33, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x38, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x31, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x36, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x38, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x39, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x39, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x36, 0x39, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x39, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x32, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x38, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x35, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x30, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x38, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x39, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x35, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x38, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x34, 0x32, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x38, 0x34, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x33, 0x32, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x31, 0x33, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x38, 0x35, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x30, 0x37, 0x20, 0x38, 0x34, 0x2E, 0x36, 0x35, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x35, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x38, 0x36, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x35, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x32, 0x32, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x36, 0x39, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x31, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x38, 0x37, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x39, 0x34, 0x2E, 0x31, 0x35, 0x39, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x35, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x32, 0x34, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x37, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x38, 0x38, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x33, 0x35, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x32, 0x37, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x38, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x39, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x30, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x33, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x39, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x39, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x30, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x34, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x34, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x39, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x36, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x37, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x39, 0x34, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x35, 0x32, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x34, 0x33, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x39, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x30, 0x35, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x39, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x35, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x39, 0x37, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x32, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x34, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x36, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x35, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x36, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x30, 0x31, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x35, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x30, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x33, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x30, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x34, 0x37, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x30, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x35, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x38, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x31, 0x37, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x30, 0x35, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x39, 0x35, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x30, 0x36, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x37, 0x31, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x32, 0x34, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x39, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x30, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x37, 0x30, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x30, 0x39, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x38, 0x31, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x38, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x38, 0x35, 0x2E, 0x30, 0x34, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x31, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x35, 0x20, 0x38, 0x33, 0x2E, 0x38, 0x33, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x36, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x30, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x36, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x32, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x31, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x31, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x34, 0x38, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x32, 0x35, 0x36, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x31, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x31, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x31, 0x39, 0x38, 0x33, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x31, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x38, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x37, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x35, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x37, 0x31, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x39, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x32, 0x31, 0x20, 0x39, 0x34, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x38, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x32, 0x32, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x32, 0x34, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x32, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x39, 0x36, 0x2E, 0x30, 0x32, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x34, 0x39, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x34, 0x34, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x32, 0x33, 0x20, 0x39, 0x34, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x39, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x33, 0x39, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x36, 0x32, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x35, 0x31, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x32, 0x34, 0x20, 0x38, 0x39, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x38, 0x37, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x31, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x35, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x34, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x32, 0x35, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x39, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x32, 0x36, 0x20, 0x38, 0x33, 0x2E, 0x33, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x32, 0x37, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x38, 0x38, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x31, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x32, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x39, 0x30, 0x2E, 0x32, 0x30, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x33, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x36, 0x35, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x37, 0x36, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x32, 0x39, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x35, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x36, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x32, 0x34, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x33, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x34, 0x36, 0x20, 0x38, 0x38, 0x2E, 0x37, 0x31, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x34, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x39, 0x31, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x34, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x33, 0x32, 0x20, 0x38, 0x37, 0x2E, 0x30, 0x36, 0x36, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x39, 0x36, 0x20, 0x38, 0x39, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x35, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x31, 0x39, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x33, 0x33, 0x20, 0x38, 0x37, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x38, 0x39, 0x20, 0x39, 0x34, 0x2E, 0x38, 0x31, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x38, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x39, 0x38, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x38, 0x36, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x33, 0x34, 0x20, 0x38, 0x32, 0x2E, 0x39, 0x38, 0x34, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x30, 0x34, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x31, 0x34, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x33, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x39, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x33, 0x36, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x32, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x32, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x33, 0x37, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x39, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x33, 0x38, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x37, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x38, 0x30, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x35, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x33, 0x39, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x31, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x36, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x39, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x31, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x34, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x36, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x38, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x34, 0x31, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x30, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x34, 0x32, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x34, 0x33, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x34, 0x34, 0x20, 0x38, 0x35, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x35, 0x38, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x38, 0x32, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x34, 0x35, 0x20, 0x38, 0x32, 0x2E, 0x33, 0x32, 0x37, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x36, 0x34, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x32, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x31, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x36, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x34, 0x36, 0x20, 0x38, 0x37, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x36, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x35, 0x39, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x34, 0x37, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x36, 0x32, 0x20, 0x38, 0x33, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x33, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x37, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x34, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x33, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x34, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x31, 0x33, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x30, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x30, 0x32, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x38, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x35, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x32, 0x34, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x37, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x31, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x37, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x35, 0x32, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x38, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x38, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x32, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x33, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x37, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x35, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x35, 0x34, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x36, 0x37, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x32, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x35, 0x35, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x39, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x31, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x35, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x35, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x39, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x37, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x35, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x34, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x35, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x38, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x35, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x31, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x33, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x33, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x37, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x36, 0x31, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x36, 0x32, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x36, 0x37, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x38, 0x36, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x38, 0x34, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x36, 0x34, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x36, 0x33, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x31, 0x35, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x36, 0x31, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x31, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x36, 0x34, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x35, 0x35, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x39, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x33, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x36, 0x35, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x37, 0x37, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x37, 0x38, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x36, 0x36, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x36, 0x35, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x34, 0x35, 0x20, 0x38, 0x31, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x32, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x32, 0x39, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x34, 0x39, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x36, 0x37, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x35, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x33, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x36, 0x38, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x37, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x39, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x36, 0x39, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x30, 0x33, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x31, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x37, 0x31, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x33, 0x39, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x38, 0x36, 0x20, 0x38, 0x34, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x37, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x37, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x37, 0x34, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x39, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x34, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x38, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x37, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x33, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x36, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x37, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x34, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x37, 0x37, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x36, 0x38, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x34, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x39, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x32, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x37, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x38, 0x38, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x35, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x36, 0x35, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x37, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x35, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x39, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x38, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x38, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x38, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x36, 0x34, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x32, 0x38, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x38, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x36, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x33, 0x39, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x38, 0x35, 0x20, 0x37, 0x36, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x38, 0x36, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x36, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x34, 0x31, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x38, 0x36, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x37, 0x33, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x30, 0x34, 0x20, 0x38, 0x32, 0x2E, 0x32, 0x35, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x39, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x38, 0x39, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x38, 0x37, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x31, 0x32, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x36, 0x34, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x38, 0x36, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x38, 0x38, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x37, 0x32, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x39, 0x38, 0x20, 0x38, 0x33, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x33, 0x34, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x38, 0x38, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x38, 0x39, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x33, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x37, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x38, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x32, 0x37, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x32, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x32, 0x33, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x39, 0x31, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x36, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x39, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x33, 0x35, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x37, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x31, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x39, 0x33, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x38, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x39, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x39, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x38, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x39, 0x35, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x32, 0x36, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x32, 0x31, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x39, 0x36, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x37, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x39, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x37, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x39, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x35, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x36, 0x39, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x33, 0x39, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x38, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x35, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x32, 0x32, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x32, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x30, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x33, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x30, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x30, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x36, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x35, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x39, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x33, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x34, 0x34, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x33, 0x35, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x30, 0x36, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x33, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x31, 0x39, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x38, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x35, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x34, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x37, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x30, 0x37, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x34, 0x33, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x32, 0x37, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x32, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x35, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x30, 0x38, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x39, 0x34, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x31, 0x34, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x30, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x36, 0x38, 0x20, 0x38, 0x38, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x36, 0x33, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x36, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x37, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x38, 0x30, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x31, 0x35, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x31, 0x31, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x32, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x39, 0x34, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x31, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x37, 0x31, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x39, 0x38, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x36, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x39, 0x38, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x31, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x39, 0x35, 0x2E, 0x35, 0x36, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x31, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x31, 0x39, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x36, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x31, 0x34, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x38, 0x34, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x37, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x38, 0x39, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x31, 0x35, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x30, 0x31, 0x20, 0x38, 0x33, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x32, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x32, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x32, 0x32, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x31, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x36, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x31, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x35, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x35, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x31, 0x38, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x36, 0x36, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x30, 0x32, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x37, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x31, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x32, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x37, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x33, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x33, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x33, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x32, 0x32, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x38, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x34, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x38, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x32, 0x33, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x35, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x32, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x34, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x30, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x35, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x32, 0x36, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x32, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x36, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x32, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x34, 0x35, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x34, 0x39, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x32, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x31, 0x35, 0x20, 0x38, 0x39, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x38, 0x34, 0x2E, 0x37, 0x39, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x34, 0x37, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x32, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x38, 0x37, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x34, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x31, 0x32, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x37, 0x37, 0x20, 0x39, 0x35, 0x2E, 0x39, 0x36, 0x35, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x32, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x37, 0x36, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x33, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x33, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x35, 0x32, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x38, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x33, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x38, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x33, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x34, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x33, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x34, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x31, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x39, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x33, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x34, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x34, 0x34, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x39, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x33, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x35, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x33, 0x38, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x38, 0x31, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x37, 0x37, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x33, 0x31, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x38, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x33, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x39, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x32, 0x36, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x34, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x35, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x31, 0x38, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x34, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x31, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x34, 0x34, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x33, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x35, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x35, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x31, 0x36, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x34, 0x35, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x34, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x37, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x32, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x34, 0x36, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x32, 0x20, 0x37, 0x37, 0x2E, 0x32, 0x35, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x34, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x32, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x35, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x34, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x31, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x32, 0x33, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x38, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x35, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x37, 0x37, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x35, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x35, 0x32, 0x20, 0x37, 0x36, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x35, 0x33, 0x20, 0x39, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x39, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x35, 0x34, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x38, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x34, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x35, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x31, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x32, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x39, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x32, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x35, 0x36, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x36, 0x35, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x39, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x37, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x35, 0x37, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x38, 0x20, 0x38, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x33, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x35, 0x38, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x35, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x35, 0x39, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x34, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x35, 0x20, 0x37, 0x37, 0x2E, 0x30, 0x32, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x36, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x36, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x32, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x35, 0x32, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x36, 0x32, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x33, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x36, 0x33, 0x20, 0x37, 0x37, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x35, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x36, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x39, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x30, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x36, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x35, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x35, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x36, 0x36, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x34, 0x35, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x34, 0x37, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x39, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x31, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x30, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x36, 0x37, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x30, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x31, 0x33, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x37, 0x38, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x36, 0x38, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x33, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x38, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x32, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x36, 0x39, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x33, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x37, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x30, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x36, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x37, 0x31, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x38, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x37, 0x32, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x39, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x37, 0x33, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x38, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x33, 0x20, 0x37, 0x39, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x34, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x37, 0x34, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x39, 0x33, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x36, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x34, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x38, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x37, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x34, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x33, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x37, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x37, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x31, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x38, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x37, 0x37, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x30, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x30, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x37, 0x38, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x36, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x34, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x37, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x37, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x39, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x37, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x35, 0x36, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x37, 0x35, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x39, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x38, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x38, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x36, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x38, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x31, 0x34, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x38, 0x36, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x38, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x39, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x31, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x32, 0x37, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x36, 0x38, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x38, 0x34, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x35, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x39, 0x36, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x33, 0x33, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x38, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x37, 0x33, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x33, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x38, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x36, 0x38, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x34, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x38, 0x37, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x32, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x31, 0x35, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x38, 0x38, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x33, 0x37, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x38, 0x34, 0x2E, 0x38, 0x35, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x38, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x31, 0x36, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x35, 0x33, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x33, 0x36, 0x20, 0x39, 0x36, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x39, 0x31, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x37, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x37, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x32, 0x37, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x39, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x39, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x39, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x39, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x37, 0x36, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x37, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x39, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x39, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x32, 0x33, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x34, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x33, 0x36, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x36, 0x38, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x39, 0x37, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x38, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x34, 0x36, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x39, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x38, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x37, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x39, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x34, 0x39, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x30, 0x34, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x35, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x32, 0x35, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x30, 0x32, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x31, 0x37, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x30, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x35, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x31, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x30, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x31, 0x38, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x30, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x30, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x30, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x38, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x30, 0x34, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x32, 0x36, 0x20, 0x37, 0x36, 0x2E, 0x37, 0x38, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x35, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x30, 0x36, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x34, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x31, 0x38, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x34, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x37, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x39, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x36, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x30, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x32, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x39, 0x38, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x30, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x34, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x30, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x37, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x37, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x37, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x38, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x31, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x34, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x30, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x31, 0x33, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x35, 0x38, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x35, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x35, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x32, 0x36, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x31, 0x34, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x36, 0x34, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x32, 0x38, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x31, 0x35, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x30, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x32, 0x33, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x31, 0x36, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x31, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x38, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x36, 0x37, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x39, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x31, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x38, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x39, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x31, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x34, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x35, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x37, 0x39, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x33, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x32, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x38, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x32, 0x32, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x36, 0x39, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x30, 0x32, 0x20, 0x38, 0x30, 0x2E, 0x33, 0x36, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x32, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x32, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x33, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x38, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x38, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x37, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x39, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x32, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x31, 0x36, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x39, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x36, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x37, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x32, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x33, 0x20, 0x38, 0x32, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x32, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x38, 0x37, 0x2E, 0x31, 0x31, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x35, 0x39, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x33, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x38, 0x38, 0x20, 0x38, 0x36, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x32, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x32, 0x37, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x38, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x36, 0x31, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x33, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x31, 0x37, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x38, 0x32, 0x20, 0x38, 0x32, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x33, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x35, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x33, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x33, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x37, 0x35, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x33, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x38, 0x33, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x31, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x33, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x33, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x38, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x35, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x37, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x35, 0x35, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x39, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x39, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x34, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x39, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x33, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x32, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x39, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x34, 0x32, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x31, 0x34, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x37, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x31, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x33, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x34, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x31, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x33, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x34, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x39, 0x39, 0x2E, 0x33, 0x33, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x32, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x35, 0x34, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x39, 0x31, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x36, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x32, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x34, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x33, 0x37, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x39, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x34, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x38, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x34, 0x37, 0x35, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x33, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x35, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x37, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x34, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x33, 0x20, 0x38, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x38, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x35, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x39, 0x34, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x36, 0x34, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x39, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x35, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x33, 0x37, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x35, 0x33, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x31, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x38, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x35, 0x34, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x35, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x35, 0x35, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x34, 0x38, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x35, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x39, 0x35, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x32, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x35, 0x37, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x35, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x35, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x32, 0x20, 0x39, 0x39, 0x2E, 0x34, 0x32, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x35, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x39, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x36, 0x31, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x31, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x35, 0x20, 0x38, 0x33, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x36, 0x32, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x36, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x34, 0x31, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x36, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x35, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x31, 0x34, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x36, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x37, 0x39, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x34, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x39, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x36, 0x36, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x32, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x36, 0x37, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x34, 0x32, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x38, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x36, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x36, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x36, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x31, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x37, 0x37, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x34, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x37, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x35, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x37, 0x31, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x31, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x35, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x32, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x30, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x37, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x37, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x33, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x38, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x37, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x35, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x35, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x37, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x37, 0x39, 0x2E, 0x33, 0x31, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x37, 0x31, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x38, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x37, 0x36, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x39, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x37, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x34, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x34, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x35, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x38, 0x38, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x34, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x32, 0x33, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x32, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x38, 0x31, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x36, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x33, 0x34, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x38, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x38, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x38, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x33, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x38, 0x33, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x39, 0x36, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x38, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x31, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x38, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x35, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x30, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x38, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x37, 0x39, 0x2E, 0x30, 0x31, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x38, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x37, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x30, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x36, 0x34, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x31, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x35, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x34, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x35, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x38, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x37, 0x39, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x34, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x35, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x39, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x33, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x33, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x39, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x33, 0x38, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x33, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x34, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x32, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x39, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x34, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x35, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x36, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x31, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x39, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x37, 0x31, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x37, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x39, 0x35, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x38, 0x31, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x35, 0x36, 0x20, 0x38, 0x36, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x31, 0x39, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x34, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x39, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x35, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x31, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x33, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x34, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x34, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x36, 0x34, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x31, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x30, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x35, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x31, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x35, 0x39, 0x39, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x39, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x33, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x35, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x30, 0x31, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x36, 0x37, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x38, 0x38, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x33, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x30, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x31, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x32, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x30, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x34, 0x33, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x35, 0x31, 0x20, 0x37, 0x39, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x38, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x33, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x30, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x37, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x31, 0x34, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x32, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x39, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x37, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x33, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x36, 0x34, 0x20, 0x38, 0x31, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x31, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x37, 0x36, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x35, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x31, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x31, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x31, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x33, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x31, 0x33, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x35, 0x32, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x31, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x31, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x31, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x33, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x30, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x36, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x31, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x38, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x33, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x36, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x37, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x31, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x31, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x31, 0x37, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x38, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x31, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x33, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x34, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x38, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x32, 0x31, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x31, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x33, 0x20, 0x39, 0x36, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x39, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x31, 0x31, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x39, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x32, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x38, 0x38, 0x2E, 0x38, 0x31, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x38, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x33, 0x35, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x33, 0x34, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x39, 0x39, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x38, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x35, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x34, 0x37, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x32, 0x37, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x38, 0x36, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x33, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x37, 0x39, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x32, 0x38, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x36, 0x31, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x37, 0x38, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x32, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x39, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x31, 0x33, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x32, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x34, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x33, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x31, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x35, 0x39, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x33, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x37, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x39, 0x36, 0x20, 0x39, 0x34, 0x2E, 0x38, 0x37, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x31, 0x35, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x33, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x32, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x33, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x32, 0x35, 0x20, 0x39, 0x34, 0x2E, 0x38, 0x37, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x39, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x37, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x31, 0x38, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x34, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x33, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x39, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x31, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x39, 0x36, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x32, 0x32, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x36, 0x39, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x38, 0x31, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x31, 0x31, 0x35, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x32, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x34, 0x31, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x39, 0x37, 0x2E, 0x38, 0x38, 0x34, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x36, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x36, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x35, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x34, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x39, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x33, 0x34, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x34, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x39, 0x33, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x34, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x30, 0x39, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x34, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x34, 0x36, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x32, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x34, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x34, 0x36, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x36, 0x37, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x34, 0x38, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x34, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x38, 0x31, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x33, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x35, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x35, 0x31, 0x20, 0x38, 0x33, 0x2E, 0x37, 0x37, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x34, 0x33, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x39, 0x34, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x31, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x35, 0x32, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x30, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x35, 0x33, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x37, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x34, 0x35, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x35, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x38, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x35, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x31, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x38, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x35, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x35, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x38, 0x38, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x35, 0x37, 0x20, 0x39, 0x35, 0x2E, 0x30, 0x34, 0x38, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x36, 0x39, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x34, 0x33, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x38, 0x39, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x35, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x35, 0x38, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x37, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x39, 0x39, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x35, 0x39, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x36, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x36, 0x32, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x34, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x36, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x36, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x36, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x36, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x39, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x36, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x37, 0x35, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x31, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x38, 0x38, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x36, 0x37, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x36, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x36, 0x34, 0x20, 0x38, 0x33, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x34, 0x31, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x35, 0x33, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x36, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x30, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x36, 0x31, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x34, 0x32, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x32, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x36, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x37, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x36, 0x37, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x34, 0x31, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x38, 0x33, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x36, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x32, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x37, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x32, 0x37, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x31, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x37, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x34, 0x39, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x39, 0x33, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x37, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x31, 0x36, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x37, 0x33, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x37, 0x34, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x38, 0x31, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x39, 0x36, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x39, 0x39, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x37, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x37, 0x35, 0x20, 0x38, 0x37, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x36, 0x34, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x31, 0x34, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x37, 0x36, 0x20, 0x38, 0x31, 0x2E, 0x35, 0x35, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x33, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x31, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x30, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x37, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x31, 0x34, 0x39, 0x32, 0x36, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x31, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x37, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x37, 0x35, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x37, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x38, 0x36, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x39, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x38, 0x31, 0x20, 0x38, 0x34, 0x2E, 0x37, 0x37, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x32, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x38, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x37, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x38, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x35, 0x36, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x35, 0x37, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x38, 0x34, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x30, 0x32, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x38, 0x35, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x35, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x38, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x38, 0x36, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x36, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x39, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x39, 0x31, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x38, 0x37, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x33, 0x32, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x33, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x36, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x38, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x32, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x33, 0x36, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x39, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x38, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x35, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x38, 0x37, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x37, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x31, 0x35, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x37, 0x35, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x32, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x39, 0x31, 0x20, 0x38, 0x34, 0x2E, 0x35, 0x31, 0x34, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x39, 0x32, 0x20, 0x38, 0x35, 0x2E, 0x32, 0x37, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x37, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x39, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x32, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x39, 0x34, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x32, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x35, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x33, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x39, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x37, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x32, 0x34, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x39, 0x36, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x35, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x35, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x39, 0x37, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x39, 0x39, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x36, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x32, 0x37, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x39, 0x38, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x39, 0x33, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x38, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x38, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x36, 0x39, 0x39, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x34, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x38, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x36, 0x36, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x30, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x31, 0x34, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x31, 0x34, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x30, 0x32, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x30, 0x32, 0x20, 0x39, 0x35, 0x2E, 0x35, 0x31, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x35, 0x38, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x35, 0x36, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x30, 0x33, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x39, 0x38, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x33, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x38, 0x31, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x33, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x31, 0x39, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x36, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x30, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x38, 0x30, 0x33, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x32, 0x37, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x33, 0x34, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x30, 0x35, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x37, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x35, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x34, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x31, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x30, 0x36, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x38, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x31, 0x36, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x35, 0x39, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x30, 0x37, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x34, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x36, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x30, 0x38, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x30, 0x39, 0x20, 0x38, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x32, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x35, 0x32, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x31, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x31, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x31, 0x31, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x34, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x31, 0x31, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x31, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x34, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x31, 0x33, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x39, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x37, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x31, 0x34, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x38, 0x34, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x38, 0x36, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x33, 0x35, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x31, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x38, 0x35, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x31, 0x36, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x36, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x38, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x31, 0x32, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x31, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x31, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x36, 0x39, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x30, 0x38, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x31, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x35, 0x37, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x35, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x32, 0x34, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x31, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x33, 0x35, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x32, 0x32, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x36, 0x33, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x34, 0x36, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x32, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x32, 0x34, 0x34, 0x20, 0x38, 0x32, 0x2E, 0x33, 0x32, 0x37, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x31, 0x31, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x39, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x32, 0x31, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x39, 0x37, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x39, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x37, 0x31, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x32, 0x34, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x33, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x32, 0x32, 0x20, 0x38, 0x32, 0x2E, 0x36, 0x36, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x31, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x31, 0x32, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x37, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x32, 0x33, 0x20, 0x39, 0x37, 0x2E, 0x34, 0x38, 0x36, 0x20, 0x38, 0x32, 0x2E, 0x39, 0x30, 0x32, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x33, 0x39, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x35, 0x34, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x37, 0x31, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x32, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x36, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x31, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x32, 0x35, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x37, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x32, 0x36, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x38, 0x38, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x38, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x32, 0x37, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x38, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x31, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x32, 0x38, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x37, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x32, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x32, 0x31, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x31, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x34, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x33, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x34, 0x35, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x37, 0x33, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x38, 0x31, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x33, 0x32, 0x20, 0x39, 0x34, 0x2E, 0x37, 0x39, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x33, 0x37, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x38, 0x36, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x33, 0x33, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x31, 0x36, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x37, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x33, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x37, 0x39, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x35, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x39, 0x37, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x33, 0x37, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x37, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x33, 0x35, 0x20, 0x38, 0x32, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x36, 0x35, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x36, 0x37, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x37, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x33, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x31, 0x37, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x35, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x33, 0x37, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x31, 0x38, 0x20, 0x39, 0x34, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x33, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x39, 0x34, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x38, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x33, 0x38, 0x20, 0x38, 0x34, 0x2E, 0x38, 0x36, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x34, 0x32, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x37, 0x39, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x36, 0x32, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x38, 0x34, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x33, 0x39, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x30, 0x34, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x37, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x36, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x34, 0x37, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x33, 0x39, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x36, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x34, 0x31, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x34, 0x32, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x30, 0x33, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x34, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x38, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x37, 0x35, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x34, 0x34, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x38, 0x36, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x34, 0x35, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x34, 0x36, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x31, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x38, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x34, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x35, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x34, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x33, 0x34, 0x20, 0x38, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x39, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x33, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x39, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x34, 0x38, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x33, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x35, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x33, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x34, 0x39, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x37, 0x34, 0x20, 0x38, 0x36, 0x2E, 0x37, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x33, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x31, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x31, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x32, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x32, 0x37, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x32, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x35, 0x31, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x39, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x35, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x35, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x37, 0x32, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x35, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x35, 0x34, 0x20, 0x38, 0x36, 0x2E, 0x34, 0x33, 0x32, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x31, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x39, 0x36, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x37, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x38, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x35, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x31, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x35, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x35, 0x39, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x35, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x31, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x38, 0x33, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x35, 0x38, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x35, 0x39, 0x20, 0x38, 0x33, 0x2E, 0x30, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x34, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x39, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x31, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x35, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x36, 0x31, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x38, 0x36, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x31, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x31, 0x35, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x33, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x36, 0x32, 0x20, 0x38, 0x37, 0x2E, 0x36, 0x37, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x38, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x36, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x36, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x36, 0x32, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x32, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x36, 0x35, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x37, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x36, 0x36, 0x20, 0x38, 0x37, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x33, 0x36, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x32, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x36, 0x37, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x33, 0x34, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x36, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x37, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x36, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x36, 0x38, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x32, 0x35, 0x38, 0x33, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x32, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x32, 0x37, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x36, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x38, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x39, 0x36, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x37, 0x31, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x33, 0x33, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x37, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x31, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x37, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x38, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x37, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x37, 0x38, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x34, 0x39, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x36, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x33, 0x37, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x37, 0x34, 0x20, 0x38, 0x37, 0x2E, 0x35, 0x37, 0x31, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x38, 0x38, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x38, 0x32, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x33, 0x32, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x35, 0x37, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x37, 0x35, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x37, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x38, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x36, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x39, 0x39, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x32, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x37, 0x37, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x30, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x32, 0x37, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x37, 0x38, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x34, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x32, 0x39, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x35, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x37, 0x39, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x39, 0x36, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x32, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x39, 0x37, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x33, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x38, 0x31, 0x20, 0x38, 0x35, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x33, 0x37, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x33, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x38, 0x32, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x38, 0x33, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x39, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x38, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x32, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x35, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x36, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x38, 0x34, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x39, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x33, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x34, 0x37, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x38, 0x35, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x38, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x31, 0x35, 0x32, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x34, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x38, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x38, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x33, 0x34, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x38, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x38, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x35, 0x32, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x38, 0x39, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x35, 0x34, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x33, 0x34, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x35, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x32, 0x32, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x39, 0x33, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x39, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x39, 0x35, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x39, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x39, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x34, 0x32, 0x39, 0x20, 0x38, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x38, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x36, 0x39, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x39, 0x32, 0x20, 0x38, 0x36, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x37, 0x39, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x33, 0x37, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x36, 0x39, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x39, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x30, 0x34, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x32, 0x36, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x38, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x33, 0x33, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x39, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x37, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x39, 0x35, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x38, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x39, 0x36, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x37, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x38, 0x36, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x36, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x39, 0x37, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x35, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x39, 0x38, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x34, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x37, 0x39, 0x39, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x32, 0x37, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x31, 0x33, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x39, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x39, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x33, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x30, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x34, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x37, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x30, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x34, 0x32, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x30, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x30, 0x33, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x34, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x34, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x30, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x38, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x33, 0x34, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x34, 0x34, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x33, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x30, 0x38, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x35, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x37, 0x33, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x30, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x34, 0x35, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x30, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x30, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x31, 0x39, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x37, 0x37, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x39, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x30, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x37, 0x36, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x36, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x30, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x36, 0x35, 0x20, 0x39, 0x34, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x31, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x35, 0x36, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x32, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x31, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x35, 0x37, 0x35, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x37, 0x31, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x36, 0x35, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x35, 0x36, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x31, 0x31, 0x20, 0x38, 0x35, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x35, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x37, 0x36, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x34, 0x31, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x31, 0x32, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x31, 0x32, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x38, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x37, 0x36, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x36, 0x33, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x31, 0x33, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x38, 0x31, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x34, 0x33, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x31, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x31, 0x34, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x31, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x32, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x31, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x33, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x38, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x31, 0x36, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x36, 0x36, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x31, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x31, 0x37, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x33, 0x33, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x39, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x31, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x31, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x34, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x36, 0x39, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x34, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x36, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x31, 0x39, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x36, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x31, 0x32, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x34, 0x36, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x32, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x30, 0x32, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x32, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x30, 0x37, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x37, 0x31, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x32, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x39, 0x37, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x38, 0x35, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x32, 0x34, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x38, 0x38, 0x2E, 0x39, 0x30, 0x35, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x31, 0x36, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x36, 0x34, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x34, 0x39, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x32, 0x35, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x34, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x31, 0x37, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x37, 0x32, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x32, 0x36, 0x20, 0x38, 0x31, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x35, 0x39, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x35, 0x36, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x32, 0x37, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x39, 0x34, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x36, 0x32, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x39, 0x32, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x32, 0x38, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x33, 0x32, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x31, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x31, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x33, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x32, 0x39, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x32, 0x32, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x31, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x32, 0x34, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x36, 0x35, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x31, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x37, 0x32, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x33, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x38, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x33, 0x32, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x36, 0x38, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x38, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x33, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x37, 0x34, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x37, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x33, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x38, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x33, 0x35, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x39, 0x33, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x36, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x33, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x35, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x31, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x38, 0x31, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x33, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x39, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x33, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x31, 0x32, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x33, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x38, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x31, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x35, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x36, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x38, 0x34, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x37, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x34, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x30, 0x37, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x37, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x37, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x34, 0x32, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x39, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x32, 0x31, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x34, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x38, 0x38, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x39, 0x33, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x38, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x34, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x38, 0x33, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x34, 0x35, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x39, 0x35, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x35, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x34, 0x36, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x34, 0x35, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x35, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x36, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x34, 0x37, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x33, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x34, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x34, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x37, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x37, 0x39, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x32, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x35, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x39, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x35, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x38, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x37, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x35, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x35, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x35, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x35, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x35, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x35, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x38, 0x33, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x39, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x35, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x35, 0x37, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x37, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x35, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x30, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x34, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x39, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x35, 0x37, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x38, 0x36, 0x2E, 0x34, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x33, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x35, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x35, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x38, 0x33, 0x2E, 0x32, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x31, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x36, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x34, 0x31, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x36, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x39, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x36, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x32, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x35, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x36, 0x34, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x39, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x36, 0x35, 0x20, 0x38, 0x38, 0x2E, 0x31, 0x36, 0x37, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x36, 0x34, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x36, 0x35, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x36, 0x36, 0x20, 0x38, 0x35, 0x2E, 0x35, 0x38, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x36, 0x37, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x39, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x34, 0x37, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x34, 0x33, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x36, 0x39, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x33, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x35, 0x33, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x34, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x38, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x35, 0x39, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x31, 0x32, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x38, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x37, 0x31, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x37, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x39, 0x37, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x31, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x37, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x37, 0x37, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x33, 0x33, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x37, 0x31, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x38, 0x33, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x37, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x35, 0x32, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x33, 0x39, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x35, 0x31, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x37, 0x35, 0x20, 0x38, 0x37, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x34, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x35, 0x34, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x34, 0x37, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x32, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x37, 0x36, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x34, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x37, 0x37, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x36, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x37, 0x38, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x37, 0x34, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x32, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x37, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x31, 0x35, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x37, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x34, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x32, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x38, 0x31, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x35, 0x33, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x39, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x30, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x38, 0x32, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x31, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x34, 0x37, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x38, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x39, 0x34, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x38, 0x34, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x38, 0x33, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x38, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x34, 0x36, 0x37, 0x20, 0x39, 0x39, 0x2E, 0x38, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x37, 0x33, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x37, 0x31, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x38, 0x35, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x31, 0x35, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x39, 0x36, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x33, 0x32, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x33, 0x31, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x32, 0x34, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x38, 0x36, 0x20, 0x38, 0x39, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x37, 0x39, 0x2E, 0x32, 0x33, 0x32, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x35, 0x35, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x36, 0x38, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x35, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x38, 0x37, 0x20, 0x38, 0x35, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x39, 0x39, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x38, 0x38, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x31, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x30, 0x39, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x35, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x38, 0x39, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x32, 0x32, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x39, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x33, 0x34, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x37, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x39, 0x31, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x38, 0x31, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x31, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x37, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x39, 0x32, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x37, 0x36, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x32, 0x35, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x36, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x39, 0x33, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x31, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x32, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x39, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x39, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x39, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x35, 0x33, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x39, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x38, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x35, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x39, 0x36, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x32, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x39, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x32, 0x38, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x31, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x39, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x38, 0x36, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x33, 0x34, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x39, 0x37, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x39, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x31, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x37, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x36, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x38, 0x39, 0x39, 0x20, 0x38, 0x37, 0x2E, 0x32, 0x39, 0x38, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x33, 0x36, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x39, 0x39, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x39, 0x37, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x36, 0x38, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x30, 0x31, 0x33, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x33, 0x34, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x32, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x30, 0x31, 0x20, 0x39, 0x38, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x38, 0x33, 0x2E, 0x38, 0x30, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x33, 0x38, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x32, 0x38, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x33, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x30, 0x32, 0x20, 0x38, 0x32, 0x2E, 0x35, 0x34, 0x34, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x31, 0x33, 0x20, 0x37, 0x37, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x38, 0x36, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x30, 0x33, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x39, 0x32, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x31, 0x31, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x33, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x30, 0x34, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x30, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x35, 0x38, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x39, 0x38, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x30, 0x36, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x39, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x36, 0x32, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x32, 0x38, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x36, 0x31, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x31, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x30, 0x37, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x37, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x32, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x30, 0x32, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x34, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x32, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x30, 0x38, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x32, 0x33, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x34, 0x38, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x39, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x30, 0x39, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x37, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x38, 0x31, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x31, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x32, 0x34, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x38, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x31, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x34, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x35, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x31, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x34, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x38, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x34, 0x31, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x31, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x33, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x35, 0x32, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x35, 0x36, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x31, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x38, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x38, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x38, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x38, 0x37, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x31, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x33, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x31, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x39, 0x39, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x31, 0x33, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x31, 0x37, 0x20, 0x39, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x39, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x33, 0x35, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x37, 0x35, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x36, 0x31, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x31, 0x38, 0x20, 0x38, 0x30, 0x2E, 0x31, 0x33, 0x35, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x38, 0x32, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x36, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x36, 0x39, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x31, 0x39, 0x20, 0x38, 0x31, 0x2E, 0x33, 0x34, 0x35, 0x20, 0x38, 0x34, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x32, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x31, 0x31, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x32, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x33, 0x37, 0x35, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x31, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x34, 0x37, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x32, 0x31, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x32, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x35, 0x36, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x34, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x33, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x32, 0x33, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x36, 0x35, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x32, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x32, 0x34, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x33, 0x35, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x37, 0x38, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x39, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x32, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x31, 0x32, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x32, 0x36, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x32, 0x39, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x34, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x32, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x33, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x32, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x37, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x33, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x39, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x38, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x32, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x36, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x34, 0x37, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x37, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x39, 0x32, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x36, 0x32, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x33, 0x31, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x37, 0x37, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x37, 0x33, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x32, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x33, 0x32, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x32, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x36, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x35, 0x32, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x33, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x32, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x34, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x33, 0x38, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x35, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x33, 0x34, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x34, 0x32, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x33, 0x34, 0x35, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x36, 0x39, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x36, 0x32, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x30, 0x34, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x37, 0x34, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x38, 0x38, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x34, 0x32, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x33, 0x36, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x30, 0x39, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x35, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x31, 0x39, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x33, 0x37, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x34, 0x38, 0x31, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x39, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x37, 0x31, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x33, 0x38, 0x20, 0x38, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x39, 0x35, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x33, 0x33, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x31, 0x35, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x33, 0x39, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x31, 0x37, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x37, 0x36, 0x20, 0x38, 0x37, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x35, 0x36, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x39, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x34, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x32, 0x32, 0x20, 0x39, 0x34, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x38, 0x33, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x37, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x39, 0x32, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x36, 0x35, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x34, 0x31, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x37, 0x34, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x35, 0x33, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x31, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x31, 0x32, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x34, 0x32, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x30, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x36, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x35, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x34, 0x33, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x39, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x34, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x33, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x34, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x33, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x37, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x34, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x35, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x37, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x33, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x34, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x36, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x39, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x32, 0x34, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x32, 0x34, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x34, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x33, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x39, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x34, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x33, 0x35, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x35, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x38, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x33, 0x38, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x30, 0x38, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x35, 0x31, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x34, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x35, 0x32, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x38, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x39, 0x36, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x35, 0x33, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x33, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x31, 0x36, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x39, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x35, 0x34, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x35, 0x35, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x38, 0x34, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x39, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x34, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x35, 0x36, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x35, 0x37, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x33, 0x39, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x32, 0x35, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x35, 0x38, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x34, 0x35, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x37, 0x34, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x37, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x39, 0x39, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x35, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x39, 0x20, 0x37, 0x37, 0x2E, 0x31, 0x37, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x37, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x30, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x31, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x36, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x34, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x30, 0x38, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x36, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x34, 0x33, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x37, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x38, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x36, 0x33, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x37, 0x39, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x35, 0x2E, 0x34, 0x37, 0x32, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x32, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x39, 0x34, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x34, 0x34, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x38, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x36, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x32, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x36, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x38, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x36, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x31, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x31, 0x35, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x36, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x39, 0x37, 0x2E, 0x36, 0x37, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x36, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x36, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x31, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x39, 0x31, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x38, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x30, 0x33, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x36, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x37, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x35, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x37, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x34, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x34, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x39, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x37, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x37, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x37, 0x36, 0x20, 0x38, 0x33, 0x2E, 0x32, 0x31, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x37, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x36, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x35, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x37, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x31, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x37, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x37, 0x20, 0x38, 0x39, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x37, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x31, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x39, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x39, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x37, 0x38, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x35, 0x36, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x33, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x32, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x31, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x37, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x35, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x34, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x33, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x35, 0x31, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x37, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x34, 0x35, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x34, 0x33, 0x20, 0x37, 0x2E, 0x37, 0x38, 0x35, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x39, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x30, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x38, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x36, 0x36, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x37, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x35, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x34, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x38, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x38, 0x36, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x38, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x39, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x30, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x38, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x30, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x39, 0x36, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x38, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x38, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x38, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x32, 0x34, 0x20, 0x38, 0x32, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x37, 0x36, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x37, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x38, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x39, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x39, 0x31, 0x20, 0x38, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x39, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x30, 0x31, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x34, 0x38, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x38, 0x35, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x33, 0x31, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x39, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x38, 0x32, 0x2E, 0x32, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x38, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x34, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x39, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x39, 0x36, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x34, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x32, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x39, 0x35, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x37, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x37, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x32, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x39, 0x36, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x39, 0x37, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x39, 0x38, 0x20, 0x39, 0x39, 0x2E, 0x34, 0x32, 0x37, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x31, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x35, 0x36, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x31, 0x34, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x31, 0x39, 0x39, 0x39, 0x20, 0x39, 0x39, 0x2E, 0x33, 0x38, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x39, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x35, 0x32, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x33, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x38, 0x39, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x33, 0x35, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x31, 0x39, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x30, 0x31, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x37, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x35, 0x34, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x30, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x30, 0x33, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x32, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x30, 0x38, 0x20, 0x37, 0x37, 0x2E, 0x38, 0x31, 0x35, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x39, 0x38, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x36, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x30, 0x34, 0x20, 0x38, 0x34, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x39, 0x31, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x36, 0x31, 0x31, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x38, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x30, 0x35, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x39, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x38, 0x35, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x38, 0x36, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x37, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x37, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x30, 0x36, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x39, 0x38, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x30, 0x37, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x32, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x35, 0x39, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x31, 0x31, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x30, 0x38, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x32, 0x33, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x39, 0x31, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x35, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x38, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x32, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x33, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x30, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x38, 0x39, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x35, 0x36, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x31, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x39, 0x35, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x33, 0x32, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x32, 0x38, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x31, 0x31, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x32, 0x32, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x38, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x38, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x31, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x36, 0x36, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x31, 0x32, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x34, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x35, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x31, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x35, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x30, 0x34, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x31, 0x34, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x32, 0x39, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x31, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x35, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x34, 0x32, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x31, 0x36, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x37, 0x33, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x34, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x31, 0x37, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x35, 0x31, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x35, 0x34, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x31, 0x38, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x32, 0x35, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x39, 0x39, 0x20, 0x38, 0x33, 0x2E, 0x37, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x32, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x31, 0x39, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x38, 0x31, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x37, 0x36, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x36, 0x36, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x30, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x37, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x32, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x31, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x32, 0x32, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x39, 0x35, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x34, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x30, 0x31, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x33, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x32, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x36, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x38, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x37, 0x36, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x39, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x32, 0x37, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x32, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x37, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x34, 0x33, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x32, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x35, 0x37, 0x20, 0x37, 0x2E, 0x34, 0x30, 0x35, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x30, 0x32, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x33, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x32, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x34, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x32, 0x36, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x32, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x31, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x33, 0x38, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x32, 0x37, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x37, 0x39, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x37, 0x37, 0x20, 0x37, 0x37, 0x2E, 0x36, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x32, 0x38, 0x36, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x39, 0x31, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x32, 0x38, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x39, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x33, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x32, 0x39, 0x20, 0x38, 0x38, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x31, 0x32, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x36, 0x35, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x34, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x33, 0x31, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x36, 0x31, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x31, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x33, 0x32, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x37, 0x34, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x36, 0x38, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x31, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x33, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x36, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x39, 0x34, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x31, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x36, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x33, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x31, 0x34, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x34, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x33, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x39, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x35, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x32, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x33, 0x36, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x34, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x34, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x32, 0x39, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x33, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x33, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x39, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x38, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x33, 0x31, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x39, 0x38, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x38, 0x32, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x33, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x38, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x38, 0x32, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x33, 0x34, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x33, 0x39, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x36, 0x32, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x34, 0x31, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x34, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x30, 0x36, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x38, 0x36, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x38, 0x36, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x34, 0x31, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x30, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x35, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x38, 0x35, 0x20, 0x37, 0x2E, 0x36, 0x34, 0x33, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x34, 0x32, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x33, 0x31, 0x20, 0x37, 0x39, 0x2E, 0x38, 0x30, 0x36, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x39, 0x33, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x38, 0x32, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x36, 0x36, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x34, 0x33, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x38, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x33, 0x33, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x35, 0x35, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x33, 0x36, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x34, 0x34, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x34, 0x31, 0x20, 0x38, 0x32, 0x2E, 0x33, 0x36, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x32, 0x39, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x39, 0x38, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x34, 0x35, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x31, 0x34, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x34, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x37, 0x35, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x34, 0x37, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x36, 0x38, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x35, 0x38, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x37, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x34, 0x38, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x35, 0x31, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x38, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x34, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x32, 0x34, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x30, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x39, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x38, 0x34, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x37, 0x39, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x35, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x31, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x38, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x35, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x37, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x31, 0x36, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x35, 0x33, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x39, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x39, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x34, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x32, 0x36, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x33, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x35, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x38, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x32, 0x32, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x39, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x34, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x39, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x31, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x39, 0x39, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x34, 0x34, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x33, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x39, 0x37, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x37, 0x39, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x38, 0x31, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x39, 0x39, 0x20, 0x37, 0x35, 0x2E, 0x36, 0x37, 0x37, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x35, 0x34, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x35, 0x37, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x35, 0x38, 0x20, 0x38, 0x32, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x37, 0x37, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x38, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x32, 0x20, 0x38, 0x2E, 0x33, 0x30, 0x33, 0x39, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x35, 0x38, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x38, 0x32, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x39, 0x39, 0x2E, 0x38, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x39, 0x38, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x38, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x35, 0x39, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x32, 0x34, 0x20, 0x38, 0x36, 0x2E, 0x34, 0x39, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x35, 0x36, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x37, 0x37, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x36, 0x34, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x33, 0x36, 0x20, 0x38, 0x38, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x33, 0x32, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x38, 0x37, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x38, 0x32, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x36, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x34, 0x37, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x37, 0x36, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x35, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x36, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x32, 0x34, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x37, 0x37, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x39, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x36, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x31, 0x34, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x32, 0x38, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x33, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x35, 0x2E, 0x36, 0x32, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x36, 0x34, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x38, 0x34, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x30, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x37, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x36, 0x35, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x35, 0x33, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x38, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x31, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x36, 0x36, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x33, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x36, 0x37, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x31, 0x38, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x34, 0x33, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x36, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x32, 0x35, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x31, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x36, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x34, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x31, 0x32, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x35, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x32, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x36, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x37, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x32, 0x34, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x37, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x37, 0x32, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x34, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x30, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x37, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x33, 0x31, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x33, 0x39, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x36, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x36, 0x34, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x37, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x30, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x35, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x37, 0x35, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x35, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x34, 0x39, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x36, 0x32, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x37, 0x37, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x37, 0x36, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x33, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x37, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x33, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x34, 0x38, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x37, 0x37, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x37, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x39, 0x37, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x37, 0x32, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x37, 0x38, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x32, 0x34, 0x20, 0x38, 0x30, 0x2E, 0x30, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x35, 0x31, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x37, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x39, 0x33, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x31, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x37, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x37, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x35, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x30, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x39, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x38, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x38, 0x33, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x33, 0x37, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x39, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x34, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x38, 0x32, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x39, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x32, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x38, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x35, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x38, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x31, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x38, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x38, 0x33, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x38, 0x35, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x33, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x32, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x32, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x38, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x33, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x31, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x35, 0x35, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x38, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x33, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x34, 0x36, 0x32, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x32, 0x38, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x38, 0x39, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x35, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x37, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x39, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x33, 0x20, 0x38, 0x33, 0x2E, 0x34, 0x36, 0x32, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x37, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x35, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x39, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x34, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x39, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x34, 0x37, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x35, 0x32, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x39, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x38, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x39, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x32, 0x36, 0x36, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x39, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x36, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x37, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x37, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x39, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x39, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x35, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x31, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x36, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x31, 0x37, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x31, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x39, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x35, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x30, 0x39, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x34, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x36, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x39, 0x39, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x38, 0x20, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x37, 0x36, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x39, 0x34, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x30, 0x34, 0x20, 0x39, 0x36, 0x2E, 0x35, 0x34, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x38, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x37, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x30, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x38, 0x37, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x32, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x30, 0x36, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x33, 0x31, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x36, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x31, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x30, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x35, 0x36, 0x36, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x37, 0x38, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x30, 0x38, 0x20, 0x38, 0x37, 0x2E, 0x32, 0x32, 0x38, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x34, 0x36, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x35, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x30, 0x39, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x34, 0x20, 0x38, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x31, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x37, 0x2E, 0x39, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x31, 0x39, 0x36, 0x32, 0x39, 0x20, 0x36, 0x2E, 0x31, 0x37, 0x38, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x39, 0x20, 0x34, 0x2E, 0x34, 0x30, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x31, 0x31, 0x20, 0x37, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x38, 0x39, 0x20, 0x38, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x33, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x31, 0x32, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x35, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x31, 0x33, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x35, 0x33, 0x39, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x31, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x33, 0x39, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x31, 0x34, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x33, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x34, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x31, 0x35, 0x20, 0x37, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x39, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x37, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x31, 0x36, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x38, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x36, 0x20, 0x38, 0x2E, 0x36, 0x36, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x31, 0x37, 0x20, 0x38, 0x30, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x33, 0x31, 0x32, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x35, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x31, 0x38, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x35, 0x35, 0x20, 0x38, 0x32, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x39, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x31, 0x39, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x37, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x36, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x32, 0x37, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x35, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x31, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x36, 0x35, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x32, 0x31, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x36, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x36, 0x32, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x31, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x39, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x33, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x32, 0x32, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x38, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x38, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x30, 0x37, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x32, 0x33, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x35, 0x33, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x33, 0x31, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x39, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x33, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x33, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x32, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x39, 0x34, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x38, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x32, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x32, 0x36, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x31, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x33, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x32, 0x37, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x38, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x37, 0x39, 0x2E, 0x38, 0x35, 0x33, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x39, 0x36, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x35, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x31, 0x33, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x32, 0x38, 0x20, 0x37, 0x38, 0x2E, 0x37, 0x33, 0x33, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x33, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x39, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x32, 0x39, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x38, 0x38, 0x2E, 0x34, 0x38, 0x33, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x31, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x32, 0x20, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x37, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x33, 0x31, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x39, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x33, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x32, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x34, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x30, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x33, 0x33, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x38, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x30, 0x31, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x35, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x33, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x36, 0x37, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x37, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x39, 0x2E, 0x34, 0x33, 0x33, 0x39, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x33, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x30, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x33, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x36, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x36, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x33, 0x36, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x33, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x31, 0x34, 0x20, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x33, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x38, 0x34, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x33, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x33, 0x33, 0x20, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x33, 0x38, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x37, 0x32, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x34, 0x34, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x32, 0x35, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x36, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x33, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x37, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x30, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x34, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x39, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x31, 0x32, 0x20, 0x38, 0x30, 0x2E, 0x31, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x33, 0x33, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x32, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x34, 0x32, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x39, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x34, 0x33, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x32, 0x38, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x34, 0x2E, 0x38, 0x34, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x34, 0x34, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x38, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x38, 0x33, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x33, 0x38, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x35, 0x39, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x34, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x36, 0x34, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x34, 0x38, 0x33, 0x20, 0x36, 0x2E, 0x30, 0x38, 0x38, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x35, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x34, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x35, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x36, 0x33, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x38, 0x31, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x37, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x34, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x39, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x31, 0x38, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x34, 0x32, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x32, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x34, 0x38, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x32, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x38, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x34, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x38, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x39, 0x39, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x37, 0x39, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x35, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x38, 0x31, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x37, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x36, 0x31, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x30, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x31, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x39, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x35, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x30, 0x33, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x39, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x35, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x39, 0x33, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x31, 0x35, 0x37, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x35, 0x34, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x35, 0x34, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x33, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x33, 0x33, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x38, 0x35, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x33, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x35, 0x33, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x35, 0x35, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x36, 0x37, 0x20, 0x37, 0x2E, 0x33, 0x30, 0x39, 0x33, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x34, 0x33, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x31, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x33, 0x34, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x35, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x38, 0x36, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x37, 0x38, 0x20, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x35, 0x37, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x39, 0x39, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x35, 0x38, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x33, 0x36, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x39, 0x39, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x31, 0x36, 0x20, 0x38, 0x2E, 0x37, 0x35, 0x38, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x36, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x35, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x37, 0x35, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x33, 0x36, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x36, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x35, 0x39, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x38, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x36, 0x31, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x37, 0x36, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x31, 0x37, 0x20, 0x38, 0x31, 0x2E, 0x38, 0x32, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x38, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x36, 0x32, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x32, 0x38, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x37, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x36, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x33, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x34, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x38, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x36, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x34, 0x38, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x32, 0x35, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x36, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x31, 0x34, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x34, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x36, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x39, 0x35, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x36, 0x34, 0x20, 0x36, 0x2E, 0x38, 0x30, 0x33, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x36, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x36, 0x36, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x32, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x30, 0x37, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x35, 0x35, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x36, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x37, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x38, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x30, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x33, 0x39, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x34, 0x37, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x31, 0x38, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x39, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x39, 0x33, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x36, 0x39, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x33, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x36, 0x36, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x39, 0x33, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x31, 0x38, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x33, 0x37, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x32, 0x37, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x37, 0x32, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x37, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x37, 0x32, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x37, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x39, 0x35, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x32, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x37, 0x32, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x31, 0x39, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x37, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x31, 0x31, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x37, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x38, 0x36, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x37, 0x34, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x34, 0x20, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x37, 0x35, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x36, 0x39, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x33, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x33, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x30, 0x31, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x37, 0x36, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x39, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x38, 0x39, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x37, 0x32, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x32, 0x34, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x37, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x36, 0x33, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x36, 0x36, 0x33, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x34, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x38, 0x2E, 0x37, 0x36, 0x34, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x37, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x37, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x39, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x35, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x31, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x39, 0x39, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x37, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x31, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x32, 0x39, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x34, 0x38, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x33, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x32, 0x32, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x38, 0x32, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x36, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x37, 0x34, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x31, 0x37, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x30, 0x39, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x33, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x31, 0x37, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x31, 0x39, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x32, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x32, 0x37, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x38, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x36, 0x31, 0x20, 0x39, 0x35, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x36, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x30, 0x35, 0x32, 0x20, 0x32, 0x2E, 0x39, 0x32, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x38, 0x35, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x38, 0x33, 0x20, 0x38, 0x31, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x38, 0x37, 0x2E, 0x30, 0x36, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x35, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x39, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x38, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x33, 0x33, 0x20, 0x38, 0x35, 0x2E, 0x32, 0x39, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x39, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x33, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x38, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x35, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x34, 0x38, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x32, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x34, 0x20, 0x39, 0x2E, 0x36, 0x37, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x38, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x34, 0x33, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x30, 0x34, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x38, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x30, 0x35, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x34, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x38, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x36, 0x36, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x39, 0x2E, 0x31, 0x30, 0x32, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x37, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x38, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x33, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x30, 0x38, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x34, 0x36, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x30, 0x34, 0x20, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x36, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x30, 0x35, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x35, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x30, 0x37, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x39, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x34, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x35, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x31, 0x33, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x35, 0x35, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x38, 0x39, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x36, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x39, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x38, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x39, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x37, 0x34, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x37, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x33, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x39, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x38, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x36, 0x36, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x31, 0x35, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x34, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x39, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x38, 0x31, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x36, 0x38, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x34, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x32, 0x20, 0x34, 0x2E, 0x38, 0x31, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x31, 0x39, 0x39, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x35, 0x35, 0x20, 0x39, 0x34, 0x2E, 0x32, 0x38, 0x39, 0x20, 0x38, 0x34, 0x2E, 0x38, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x34, 0x33, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x30, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x37, 0x39, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x36, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x32, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x38, 0x34, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x38, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x36, 0x20, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x32, 0x35, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x34, 0x31, 0x20, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x37, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x37, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x36, 0x33, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x36, 0x33, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x30, 0x33, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x38, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x36, 0x38, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x32, 0x38, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x31, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x38, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x30, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x30, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x36, 0x31, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x33, 0x31, 0x31, 0x20, 0x37, 0x2E, 0x37, 0x35, 0x34, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x38, 0x34, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x39, 0x31, 0x20, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x33, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x35, 0x2E, 0x38, 0x39, 0x31, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x30, 0x37, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x37, 0x33, 0x20, 0x39, 0x38, 0x2E, 0x33, 0x31, 0x32, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x34, 0x35, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x36, 0x38, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x38, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x32, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x30, 0x38, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x30, 0x39, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x35, 0x37, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x38, 0x31, 0x20, 0x35, 0x2E, 0x39, 0x36, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x31, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x37, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x34, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x32, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x38, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x31, 0x31, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x33, 0x36, 0x20, 0x38, 0x38, 0x2E, 0x31, 0x30, 0x35, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x34, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x35, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x31, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x32, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x30, 0x36, 0x20, 0x39, 0x36, 0x2E, 0x38, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x31, 0x33, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x39, 0x31, 0x38, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x32, 0x34, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x31, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x33, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x38, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x31, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x35, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x31, 0x36, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x34, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x34, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x31, 0x35, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x31, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x31, 0x37, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x38, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x31, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x35, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x36, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x31, 0x38, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x31, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x39, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x38, 0x33, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x39, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x31, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x38, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x31, 0x35, 0x34, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x33, 0x33, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x36, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x37, 0x34, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x33, 0x38, 0x20, 0x39, 0x2E, 0x35, 0x33, 0x35, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x38, 0x32, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x34, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x32, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x35, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x38, 0x36, 0x20, 0x38, 0x38, 0x2E, 0x36, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x32, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x33, 0x35, 0x20, 0x37, 0x2E, 0x34, 0x39, 0x34, 0x37, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x32, 0x32, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x34, 0x37, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x30, 0x39, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x35, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x32, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x35, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x38, 0x37, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x38, 0x32, 0x20, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x32, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x38, 0x35, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x36, 0x39, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x32, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x34, 0x36, 0x33, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x38, 0x33, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x35, 0x32, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x32, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x35, 0x20, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x32, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x37, 0x36, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x32, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x33, 0x34, 0x20, 0x36, 0x2E, 0x34, 0x30, 0x36, 0x36, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x32, 0x39, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x39, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x32, 0x38, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x30, 0x35, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x37, 0x37, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x31, 0x34, 0x20, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x32, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x32, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x38, 0x31, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x36, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x38, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x39, 0x39, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x35, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x34, 0x36, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x33, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x31, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x30, 0x33, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x38, 0x2E, 0x39, 0x32, 0x36, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x36, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x32, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x33, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x38, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x34, 0x37, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x37, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x32, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x33, 0x33, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x31, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x34, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x33, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x39, 0x38, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x30, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x35, 0x39, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x33, 0x35, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x35, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x36, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x34, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x37, 0x32, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x38, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x35, 0x37, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x34, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x37, 0x34, 0x20, 0x36, 0x32, 0x2E, 0x36, 0x33, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x33, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x33, 0x32, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x39, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x39, 0x32, 0x31, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x36, 0x39, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x34, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x33, 0x38, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x32, 0x32, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x37, 0x32, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x32, 0x34, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x31, 0x38, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x37, 0x37, 0x20, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x30, 0x34, 0x39, 0x20, 0x38, 0x37, 0x2E, 0x39, 0x31, 0x36, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x30, 0x35, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x32, 0x31, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x35, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x31, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x31, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x34, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x39, 0x38, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x32, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x37, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x35, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x34, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x38, 0x36, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x38, 0x34, 0x35, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x37, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x32, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x34, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x37, 0x35, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x35, 0x38, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x34, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x31, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x31, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x34, 0x34, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x35, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x33, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x30, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x34, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x34, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x38, 0x35, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x30, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x32, 0x39, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x38, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x34, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x38, 0x31, 0x2E, 0x35, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x31, 0x30, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x34, 0x36, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x32, 0x38, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x34, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x34, 0x37, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x38, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x36, 0x38, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x31, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x34, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x33, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x37, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x34, 0x38, 0x20, 0x39, 0x2E, 0x31, 0x33, 0x36, 0x35, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x36, 0x36, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x38, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x32, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x34, 0x39, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x32, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x33, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x39, 0x39, 0x20, 0x36, 0x2E, 0x34, 0x31, 0x37, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x34, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x36, 0x34, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x35, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x35, 0x36, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x33, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x37, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x35, 0x31, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x32, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x32, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x36, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x31, 0x38, 0x20, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x35, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x31, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x37, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x33, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x35, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x39, 0x33, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x31, 0x33, 0x20, 0x38, 0x2E, 0x38, 0x35, 0x32, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x31, 0x31, 0x20, 0x34, 0x2E, 0x36, 0x37, 0x36, 0x31, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x35, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x32, 0x36, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x31, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x36, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x37, 0x35, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x35, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x35, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x30, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x33, 0x2E, 0x35, 0x39, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x35, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x38, 0x38, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x35, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x34, 0x37, 0x31, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x36, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x35, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x35, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x33, 0x31, 0x20, 0x38, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x36, 0x37, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x35, 0x37, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x35, 0x38, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x34, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x39, 0x31, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x32, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x32, 0x34, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x35, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x38, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x30, 0x38, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x37, 0x31, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x39, 0x38, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x34, 0x36, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x37, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x37, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x32, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x36, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x33, 0x39, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x33, 0x36, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x36, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x30, 0x38, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x36, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x36, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x31, 0x31, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x39, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x31, 0x37, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x32, 0x35, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x33, 0x31, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x30, 0x35, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x31, 0x38, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x38, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x38, 0x31, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x37, 0x39, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x36, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x32, 0x33, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x31, 0x32, 0x20, 0x38, 0x30, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x37, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x30, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x31, 0x31, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x36, 0x35, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x36, 0x31, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x33, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x38, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x38, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x32, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x38, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x36, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x36, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x30, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x33, 0x39, 0x39, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x35, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x30, 0x37, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x38, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x36, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x34, 0x39, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x33, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x31, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x32, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x30, 0x38, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x36, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x32, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x39, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x32, 0x20, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x38, 0x32, 0x20, 0x35, 0x34, 0x2E, 0x39, 0x30, 0x34, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x35, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x32, 0x39, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x37, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x39, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x39, 0x20, 0x35, 0x2E, 0x38, 0x35, 0x32, 0x33, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x35, 0x38, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x35, 0x31, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x35, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x37, 0x37, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x37, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x34, 0x32, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x34, 0x31, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x32, 0x33, 0x20, 0x32, 0x2E, 0x39, 0x39, 0x35, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x37, 0x34, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x34, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x34, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x36, 0x35, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x32, 0x2E, 0x38, 0x35, 0x36, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x37, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x31, 0x35, 0x20, 0x38, 0x39, 0x2E, 0x30, 0x39, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x39, 0x36, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x30, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x37, 0x20, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x37, 0x36, 0x20, 0x38, 0x2E, 0x30, 0x30, 0x34, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x37, 0x37, 0x2E, 0x32, 0x33, 0x39, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x34, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x35, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x36, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x37, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x37, 0x37, 0x2E, 0x33, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x35, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x36, 0x2E, 0x33, 0x34, 0x34, 0x35, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x37, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x38, 0x31, 0x33, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x37, 0x39, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x35, 0x36, 0x20, 0x36, 0x2E, 0x33, 0x35, 0x39, 0x37, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x32, 0x2E, 0x37, 0x30, 0x39, 0x35, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x38, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x35, 0x34, 0x39, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x39, 0x34, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x38, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x35, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x34, 0x37, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x38, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x37, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x33, 0x32, 0x20, 0x36, 0x2E, 0x30, 0x35, 0x34, 0x31, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x38, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x30, 0x39, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x38, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x37, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x39, 0x34, 0x20, 0x35, 0x2E, 0x36, 0x37, 0x32, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x38, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x37, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x30, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x34, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x39, 0x33, 0x20, 0x35, 0x2E, 0x34, 0x38, 0x39, 0x32, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x38, 0x36, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x38, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x36, 0x34, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x33, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x33, 0x38, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x35, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x35, 0x32, 0x20, 0x36, 0x2E, 0x38, 0x33, 0x36, 0x33, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x38, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x39, 0x33, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x33, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x36, 0x34, 0x20, 0x34, 0x2E, 0x38, 0x33, 0x32, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x38, 0x38, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x33, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x35, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x37, 0x34, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x34, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x38, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x34, 0x33, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x34, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x32, 0x32, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x36, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x33, 0x33, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x34, 0x35, 0x20, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x39, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x32, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x32, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x36, 0x33, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x31, 0x37, 0x20, 0x35, 0x2E, 0x32, 0x39, 0x37, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x39, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x32, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x37, 0x38, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x34, 0x35, 0x20, 0x32, 0x2E, 0x38, 0x31, 0x34, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x35, 0x37, 0x33, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x36, 0x2E, 0x32, 0x37, 0x36, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x39, 0x33, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x34, 0x32, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x31, 0x31, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x32, 0x33, 0x20, 0x37, 0x2E, 0x37, 0x32, 0x38, 0x34, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x33, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x39, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x36, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x35, 0x34, 0x20, 0x37, 0x38, 0x2E, 0x34, 0x34, 0x34, 0x20, 0x34, 0x2E, 0x36, 0x30, 0x31, 0x39, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x31, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x32, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x35, 0x20, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x39, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x37, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x33, 0x32, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x36, 0x34, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x36, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x36, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x39, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x33, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x39, 0x30, 0x39, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x30, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x39, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x37, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x33, 0x39, 0x20, 0x38, 0x34, 0x2E, 0x30, 0x35, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x37, 0x34, 0x20, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x39, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x30, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x39, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x31, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x35, 0x2E, 0x30, 0x38, 0x37, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x32, 0x39, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x30, 0x35, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x35, 0x31, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x39, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x37, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x31, 0x34, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x39, 0x34, 0x20, 0x38, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x35, 0x32, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x31, 0x36, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x30, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x35, 0x34, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x32, 0x38, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x37, 0x31, 0x20, 0x34, 0x2E, 0x35, 0x39, 0x37, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x30, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x34, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x30, 0x34, 0x36, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x39, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x34, 0x39, 0x36, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x39, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x30, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x37, 0x32, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x32, 0x33, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x33, 0x39, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x38, 0x37, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x36, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x34, 0x35, 0x20, 0x31, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x30, 0x34, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x31, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x37, 0x35, 0x2E, 0x38, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x38, 0x32, 0x30, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x30, 0x31, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x34, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x30, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x33, 0x34, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x38, 0x2E, 0x31, 0x35, 0x38, 0x37, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x39, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x31, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x32, 0x36, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x30, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x39, 0x35, 0x38, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x32, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x36, 0x35, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x32, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x30, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x35, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x31, 0x35, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x31, 0x37, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x30, 0x32, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x37, 0x38, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x32, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x30, 0x38, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x38, 0x35, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x34, 0x39, 0x20, 0x39, 0x34, 0x2E, 0x39, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x39, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x39, 0x31, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x30, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x31, 0x39, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x34, 0x39, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x30, 0x38, 0x20, 0x34, 0x32, 0x2E, 0x36, 0x39, 0x36, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x34, 0x38, 0x20, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x35, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x31, 0x31, 0x35, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x37, 0x31, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x31, 0x31, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x31, 0x31, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x32, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x33, 0x32, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x31, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x30, 0x37, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x36, 0x36, 0x20, 0x39, 0x2E, 0x36, 0x31, 0x35, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x35, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x34, 0x31, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x31, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x32, 0x33, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x32, 0x32, 0x37, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x39, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x39, 0x39, 0x20, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x32, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x31, 0x34, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x38, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x31, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x33, 0x31, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x39, 0x38, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x37, 0x37, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x31, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x39, 0x37, 0x20, 0x37, 0x38, 0x2E, 0x37, 0x38, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x33, 0x31, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x35, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x36, 0x32, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x34, 0x32, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x36, 0x32, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x30, 0x36, 0x33, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x39, 0x34, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x31, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x31, 0x32, 0x20, 0x37, 0x36, 0x2E, 0x37, 0x30, 0x37, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x39, 0x36, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x37, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x36, 0x38, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x33, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x31, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x31, 0x38, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x38, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x37, 0x37, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x32, 0x39, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x32, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x37, 0x32, 0x20, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x32, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x39, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x36, 0x35, 0x37, 0x37, 0x20, 0x33, 0x33, 0x2E, 0x38, 0x37, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x37, 0x37, 0x20, 0x35, 0x2E, 0x37, 0x32, 0x36, 0x31, 0x20, 0x31, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x32, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x35, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x32, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x39, 0x31, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x37, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x37, 0x33, 0x20, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x32, 0x32, 0x20, 0x32, 0x38, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x36, 0x36, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x34, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x37, 0x37, 0x20, 0x35, 0x2E, 0x38, 0x37, 0x39, 0x31, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x32, 0x33, 0x20, 0x37, 0x2E, 0x32, 0x35, 0x38, 0x39, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x39, 0x37, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x37, 0x31, 0x36, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x38, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x37, 0x33, 0x20, 0x31, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x32, 0x34, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x36, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x31, 0x37, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x39, 0x36, 0x20, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x35, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x32, 0x35, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x39, 0x39, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x37, 0x39, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x39, 0x33, 0x33, 0x20, 0x35, 0x34, 0x2E, 0x35, 0x38, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x2E, 0x37, 0x36, 0x38, 0x31, 0x20, 0x31, 0x2E, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x32, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x34, 0x32, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x38, 0x39, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x31, 0x33, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x38, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x33, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x32, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x32, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x36, 0x32, 0x36, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x35, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x35, 0x36, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x39, 0x37, 0x20, 0x38, 0x2E, 0x35, 0x30, 0x38, 0x32, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x35, 0x32, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x32, 0x38, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x32, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x34, 0x32, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x32, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x30, 0x31, 0x20, 0x32, 0x37, 0x2E, 0x33, 0x39, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x38, 0x38, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x31, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x38, 0x34, 0x20, 0x35, 0x2E, 0x32, 0x34, 0x33, 0x38, 0x20, 0x31, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x36, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x33, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x33, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x34, 0x32, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x35, 0x38, 0x20, 0x34, 0x38, 0x2E, 0x32, 0x31, 0x37, 0x20, 0x35, 0x2E, 0x32, 0x38, 0x36, 0x39, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x33, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x33, 0x31, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x33, 0x32, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x34, 0x31, 0x20, 0x39, 0x30, 0x2E, 0x30, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x34, 0x34, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x31, 0x39, 0x20, 0x37, 0x2E, 0x38, 0x33, 0x37, 0x35, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x33, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x36, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x36, 0x30, 0x36, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x36, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x32, 0x31, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x38, 0x36, 0x38, 0x35, 0x20, 0x37, 0x38, 0x2E, 0x37, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x32, 0x33, 0x20, 0x37, 0x30, 0x2E, 0x32, 0x35, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x32, 0x34, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x33, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x35, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x30, 0x38, 0x36, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x33, 0x32, 0x20, 0x33, 0x32, 0x2E, 0x38, 0x32, 0x36, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x34, 0x34, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x34, 0x33, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x32, 0x31, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x31, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x35, 0x33, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x33, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x35, 0x30, 0x38, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x31, 0x36, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x39, 0x30, 0x33, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x37, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x32, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x30, 0x30, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x33, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x37, 0x30, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x33, 0x32, 0x32, 0x30, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x31, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x37, 0x36, 0x20, 0x34, 0x2E, 0x39, 0x36, 0x32, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x36, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x37, 0x39, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x30, 0x20, 0x39, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x32, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x33, 0x37, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x32, 0x37, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x34, 0x39, 0x2E, 0x37, 0x31, 0x34, 0x20, 0x35, 0x2E, 0x33, 0x35, 0x30, 0x37, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x31, 0x38, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x33, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x32, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x30, 0x36, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x36, 0x32, 0x20, 0x37, 0x39, 0x2E, 0x33, 0x38, 0x38, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x38, 0x31, 0x33, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x36, 0x37, 0x20, 0x39, 0x2E, 0x39, 0x32, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x38, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x33, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x38, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x33, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x38, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x35, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x39, 0x33, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x30, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x32, 0x32, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x35, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x31, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x30, 0x30, 0x20, 0x34, 0x33, 0x2E, 0x33, 0x35, 0x30, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x38, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x37, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x34, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x33, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x38, 0x33, 0x35, 0x20, 0x36, 0x32, 0x2E, 0x34, 0x36, 0x39, 0x20, 0x36, 0x2E, 0x36, 0x38, 0x36, 0x39, 0x20, 0x31, 0x2E, 0x37, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x38, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x38, 0x32, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x32, 0x37, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x36, 0x34, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x38, 0x38, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x37, 0x30, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x34, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x33, 0x36, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x34, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x39, 0x2E, 0x30, 0x31, 0x39, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x30, 0x32, 0x20, 0x35, 0x36, 0x2E, 0x36, 0x38, 0x38, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x32, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x39, 0x34, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x36, 0x30, 0x20, 0x35, 0x36, 0x2E, 0x39, 0x38, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x36, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x31, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x37, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x33, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x34, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x39, 0x2E, 0x35, 0x38, 0x32, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x39, 0x37, 0x39, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x34, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x30, 0x37, 0x20, 0x32, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x39, 0x39, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x34, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x32, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x33, 0x37, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x33, 0x34, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x38, 0x37, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x34, 0x32, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x38, 0x33, 0x20, 0x38, 0x30, 0x2E, 0x31, 0x34, 0x31, 0x20, 0x36, 0x2E, 0x39, 0x35, 0x30, 0x39, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x33, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x34, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x36, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x31, 0x33, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x39, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x30, 0x30, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x38, 0x30, 0x20, 0x32, 0x38, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x38, 0x33, 0x2E, 0x38, 0x39, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x38, 0x36, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x30, 0x39, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x36, 0x39, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x34, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x30, 0x30, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x31, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x32, 0x36, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x39, 0x37, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x34, 0x30, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x38, 0x2E, 0x30, 0x36, 0x31, 0x38, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x33, 0x33, 0x20, 0x36, 0x34, 0x2E, 0x31, 0x34, 0x32, 0x20, 0x36, 0x2E, 0x32, 0x31, 0x30, 0x33, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x30, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x31, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x30, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x30, 0x30, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x39, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x31, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x30, 0x30, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x39, 0x30, 0x20, 0x37, 0x30, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x31, 0x37, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x36, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x31, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x32, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x38, 0x37, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x32, 0x37, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x36, 0x32, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x37, 0x34, 0x30, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x35, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x34, 0x35, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x32, 0x34, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x39, 0x31, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x34, 0x35, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x35, 0x39, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x39, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x39, 0x38, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x36, 0x36, 0x30, 0x30, 0x20, 0x37, 0x2E, 0x32, 0x32, 0x30, 0x30, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x38, 0x30, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x36, 0x33, 0x2E, 0x33, 0x39, 0x30, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x37, 0x31, 0x2E, 0x36, 0x30, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x38, 0x30, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x38, 0x35, 0x2E, 0x36, 0x31, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x30, 0x38, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x30, 0x37, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x39, 0x31, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x31, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x38, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x35, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x36, 0x37, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x35, 0x31, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x37, 0x37, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x34, 0x36, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x34, 0x31, 0x36, 0x20, 0x31, 0x30, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x37, 0x31, 0x39, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x39, 0x38, 0x20, 0x35, 0x2E, 0x39, 0x34, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x32, 0x30, 0x30, 0x30, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x30, 0x30, 0x20, 0x32, 0x2E, 0x36, 0x30, 0x30, 0x30, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x33, 0x32, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x34, 0x34, 0x30, 0x30, 0x20, 0x34, 0x2E, 0x38, 0x37, 0x30, 0x30, 0x20, 0x35, 0x2E, 0x34, 0x39, 0x30, 0x30, 0x20, 0x36, 0x2E, 0x39, 0x32, 0x30, 0x30, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x35, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x34, 0x30, 0x20, 0x35, 0x31, 0x2E, 0x32, 0x35, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x36, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x33, 0x30, 0x20, 0x35, 0x34, 0x2E, 0x37, 0x32, 0x30, 0x20, 0x35, 0x35, 0x2E, 0x32, 0x30, 0x30, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x32, 0x30, 0x20, 0x36, 0x31, 0x2E, 0x35, 0x38, 0x30, 0x20, 0x36, 0x39, 0x2E, 0x37, 0x31, 0x30, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x34, 0x30, 0x20, 0x38, 0x34, 0x2E, 0x32, 0x38, 0x30, 0x20, 0x38, 0x38, 0x2E, 0x30, 0x35, 0x30, 0x20, 0x38, 0x39, 0x2E, 0x37, 0x38, 0x30, 0x20, 0x39, 0x30, 0x2E, 0x38, 0x34, 0x30, 0x20, 0x39, 0x31, 0x2E, 0x36, 0x35, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x32, 0x33, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x34, 0x37, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x36, 0x36, 0x30, 0x20, 0x39, 0x32, 0x2E, 0x38, 0x32, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x31, 0x34, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x34, 0x39, 0x30, 0x20, 0x39, 0x33, 0x2E, 0x37, 0x33, 0x30, 0x20, 0x39, 0x34, 0x2E, 0x30, 0x31, 0x30, 0x20, 0x0D, 0x0A, 0x32, 0x33, 0x34, 0x37, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x35, 0x20, 0x37, 0x33, 0x2E, 0x39, 0x20, 0x37, 0x36, 0x2E, 0x34, 0x20, 0x36, 0x33, 0x2E, 0x34, 0x20, 0x33, 0x2E, 0x34, 0x20, 0x31, 0x2E, 0x39, 0x33, 0x20, 0x32, 0x2E, 0x36, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x31, 0x20, 0x37, 0x35, 0x2E, 0x34, 0x32, 0x20, 0x38, 0x32, 0x2E, 0x31, 0x37, 0x20, 0x38, 0x32, 0x2E, 0x30, 0x32, 0x20, 0x38, 0x30, 0x2E, 0x36, 0x37, 0x20, 0x37, 0x39, 0x2E, 0x32, 0x39, 0x20, 0x37, 0x38, 0x2E, 0x30, 0x37, 0x20, 0x37, 0x37, 0x2E, 0x31, 0x33, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x35, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x33, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x39, 0x20, 0x37, 0x36, 0x2E, 0x30, 0x32, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x31, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x34, 0x20, 0x37, 0x36, 0x2E, 0x32, 0x35, 0x20, 0x37, 0x36, 0x2E, 0x36, 0x32, 0x20, 0x37, 0x36, 0x2E, 0x37, 0x33, 0x20, 0x37, 0x36, 0x2E, 0x39, 0x36, 0x20, 0x37, 0x37, 0x2E, 0x31, 0x31, 0x20, 0x37, 0x37, 0x2E, 0x32, 0x39, 0x20, 0x37, 0x37, 0x2E, 0x34, 0x38, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x36, 0x20, 0x37, 0x37, 0x2E, 0x38, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x31, 0x20, 0x37, 0x38, 0x2E, 0x33, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x34, 0x35, 0x20, 0x37, 0x38, 0x2E, 0x34, 0x39, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x37, 0x33, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x36, 0x20, 0x37, 0x39, 0x20, 0x37, 0x39, 0x2E, 0x31, 0x39, 0x0D, 0x0A, 0x32, 0x33, 0x34, 0x38, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x20, 0x33, 0x2E, 0x30, 0x34, 0x20, 0x31, 0x2E, 0x37, 0x35, 0x20, 0x32, 0x2E, 0x35, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x20, 0x34, 0x34, 0x2E, 0x30, 0x37, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x38, 0x20, 0x37, 0x32, 0x2E, 0x30, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x20, 0x37, 0x30, 0x2E, 0x36, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x36, 0x20, 0x36, 0x38, 0x2E, 0x32, 0x37, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x39, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x38, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x31, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x39, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x34, 0x20, 0x36, 0x36, 0x2E, 0x36, 0x33, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x34, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x36, 0x20, 0x36, 0x37, 0x2E, 0x30, 0x38, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x37, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x37, 0x20, 0x36, 0x37, 0x2E, 0x35, 0x31, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x36, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x36, 0x20, 0x36, 0x37, 0x2E, 0x39, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x34, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x34, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x34, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x36, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x20, 0x36, 0x38, 0x2E, 0x38, 0x38, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x35, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x38, 0x20, 0x36, 0x39, 0x2E, 0x33, 0x36, 0x20, 0x36, 0x39, 0x2E, 0x34, 0x38, 0x0D, 0x0A, 0x32, 0x33, 0x34, 0x39, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x31, 0x35, 0x20, 0x35, 0x37, 0x2E, 0x31, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x20, 0x34, 0x39, 0x2E, 0x31, 0x20, 0x32, 0x2E, 0x35, 0x32, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x20, 0x32, 0x2E, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x34, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x32, 0x20, 0x36, 0x33, 0x2E, 0x31, 0x39, 0x20, 0x36, 0x32, 0x2E, 0x39, 0x33, 0x20, 0x36, 0x31, 0x2E, 0x38, 0x31, 0x20, 0x36, 0x30, 0x2E, 0x37, 0x35, 0x20, 0x35, 0x39, 0x2E, 0x38, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x20, 0x35, 0x38, 0x2E, 0x36, 0x34, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x34, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x31, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x33, 0x20, 0x35, 0x38, 0x2E, 0x33, 0x37, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x38, 0x20, 0x35, 0x38, 0x2E, 0x34, 0x37, 0x20, 0x35, 0x38, 0x2E, 0x37, 0x36, 0x20, 0x35, 0x38, 0x2E, 0x38, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x30, 0x31, 0x20, 0x35, 0x39, 0x2E, 0x31, 0x34, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x34, 0x37, 0x20, 0x35, 0x39, 0x2E, 0x35, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x38, 0x20, 0x36, 0x30, 0x2E, 0x32, 0x32, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x36, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x36, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x38, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x31, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x31, 0x0D, 0x0A, 0x32, 0x33, 0x35, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x32, 0x30, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x20, 0x32, 0x2E, 0x34, 0x31, 0x20, 0x31, 0x2E, 0x34, 0x32, 0x20, 0x32, 0x2E, 0x31, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x35, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x33, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x32, 0x20, 0x35, 0x35, 0x2E, 0x37, 0x37, 0x20, 0x35, 0x35, 0x2E, 0x34, 0x33, 0x20, 0x35, 0x34, 0x2E, 0x34, 0x35, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x36, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x35, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x33, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x34, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x35, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x33, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x33, 0x20, 0x35, 0x31, 0x2E, 0x33, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x34, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x37, 0x37, 0x20, 0x35, 0x31, 0x2E, 0x38, 0x33, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x31, 0x20, 0x35, 0x32, 0x2E, 0x31, 0x32, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x37, 0x20, 0x35, 0x32, 0x2E, 0x33, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x34, 0x37, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x36, 0x20, 0x35, 0x32, 0x2E, 0x38, 0x37, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x38, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x37, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x35, 0x20, 0x35, 0x33, 0x2E, 0x33, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x33, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x38, 0x20, 0x35, 0x33, 0x2E, 0x36, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x33, 0x0D, 0x0A, 0x32, 0x33, 0x35, 0x31, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x32, 0x35, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x20, 0x31, 0x2E, 0x39, 0x39, 0x20, 0x31, 0x2E, 0x32, 0x38, 0x20, 0x32, 0x2E, 0x30, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x38, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x31, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x34, 0x20, 0x34, 0x38, 0x2E, 0x34, 0x20, 0x34, 0x37, 0x2E, 0x35, 0x33, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x35, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x33, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x30, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x39, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x35, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x31, 0x37, 0x20, 0x34, 0x35, 0x2E, 0x32, 0x35, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x38, 0x20, 0x34, 0x35, 0x2E, 0x36, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x34, 0x20, 0x34, 0x35, 0x2E, 0x38, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x38, 0x20, 0x34, 0x36, 0x2E, 0x32, 0x31, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x35, 0x33, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x31, 0x20, 0x34, 0x36, 0x2E, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x33, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x32, 0x0D, 0x0A, 0x32, 0x33, 0x35, 0x32, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x33, 0x30, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x20, 0x39, 0x2E, 0x36, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x36, 0x38, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x32, 0x20, 0x34, 0x32, 0x2E, 0x37, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x38, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x31, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x32, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x33, 0x36, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x37, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x35, 0x20, 0x33, 0x39, 0x2E, 0x38, 0x33, 0x20, 0x33, 0x39, 0x2E, 0x39, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x30, 0x36, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x34, 0x20, 0x34, 0x30, 0x2E, 0x32, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x39, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x36, 0x20, 0x34, 0x30, 0x2E, 0x37, 0x36, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x37, 0x20, 0x34, 0x31, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x33, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x37, 0x20, 0x34, 0x31, 0x2E, 0x33, 0x36, 0x0D, 0x0A, 0x32, 0x33, 0x35, 0x33, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x33, 0x35, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x20, 0x31, 0x2E, 0x37, 0x37, 0x20, 0x38, 0x2E, 0x38, 0x34, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x36, 0x36, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x31, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x34, 0x20, 0x33, 0x34, 0x2E, 0x35, 0x39, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x36, 0x20, 0x33, 0x34, 0x2E, 0x36, 0x37, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x34, 0x20, 0x33, 0x34, 0x2E, 0x38, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x39, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x38, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x38, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x33, 0x36, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x36, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x31, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x39, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x32, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x0D, 0x0A, 0x32, 0x33, 0x35, 0x34, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x34, 0x30, 0x20, 0x32, 0x39, 0x2E, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x39, 0x38, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x20, 0x38, 0x2E, 0x30, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x31, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x32, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x37, 0x20, 0x33, 0x30, 0x2E, 0x35, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x31, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x39, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x37, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x33, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x34, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x35, 0x38, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x31, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x30, 0x31, 0x0D, 0x0A, 0x32, 0x33, 0x35, 0x35, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x35, 0x30, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x36, 0x20, 0x30, 0x2E, 0x37, 0x35, 0x20, 0x31, 0x2E, 0x35, 0x20, 0x36, 0x2E, 0x35, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x35, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x31, 0x20, 0x32, 0x32, 0x2E, 0x36, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x37, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x39, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x30, 0x38, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x33, 0x31, 0x20, 0x32, 0x33, 0x2E, 0x34, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x35, 0x20, 0x32, 0x33, 0x2E, 0x36, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x39, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x39, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x30, 0x34, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x20, 0x32, 0x34, 0x2E, 0x31, 0x39, 0x0D, 0x0A, 0x32, 0x33, 0x35, 0x36, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x36, 0x30, 0x20, 0x31, 0x35, 0x2E, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x38, 0x20, 0x30, 0x2E, 0x38, 0x33, 0x20, 0x30, 0x2E, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x33, 0x34, 0x20, 0x35, 0x2E, 0x32, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x32, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x38, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x31, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x31, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x32, 0x20, 0x31, 0x36, 0x2E, 0x33, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x34, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x35, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x37, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x38, 0x38, 0x20, 0x31, 0x37, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x30, 0x39, 0x20, 0x31, 0x37, 0x2E, 0x31, 0x35, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x38, 0x20, 0x31, 0x37, 0x2E, 0x33, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x37, 0x0D, 0x0A, 0x32, 0x33, 0x35, 0x37, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x37, 0x30, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x20, 0x20, 0x39, 0x2E, 0x30, 0x20, 0x30, 0x2E, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x34, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x20, 0x39, 0x2E, 0x30, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x31, 0x20, 0x31, 0x30, 0x2E, 0x37, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x33, 0x20, 0x31, 0x30, 0x2E, 0x38, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x39, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x0D, 0x0A, 0x32, 0x33, 0x35, 0x38, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x37, 0x35, 0x20, 0x20, 0x38, 0x2E, 0x33, 0x20, 0x20, 0x38, 0x2E, 0x34, 0x20, 0x20, 0x37, 0x2E, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x31, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x20, 0x33, 0x2E, 0x35, 0x32, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x20, 0x39, 0x2E, 0x35, 0x31, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x20, 0x38, 0x2E, 0x37, 0x20, 0x38, 0x2E, 0x35, 0x20, 0x38, 0x2E, 0x33, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x38, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x35, 0x20, 0x38, 0x2E, 0x32, 0x37, 0x20, 0x38, 0x2E, 0x33, 0x31, 0x20, 0x38, 0x2E, 0x33, 0x32, 0x20, 0x38, 0x2E, 0x33, 0x39, 0x20, 0x38, 0x2E, 0x34, 0x20, 0x38, 0x2E, 0x34, 0x36, 0x20, 0x38, 0x2E, 0x34, 0x39, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x20, 0x38, 0x2E, 0x36, 0x34, 0x20, 0x38, 0x2E, 0x37, 0x20, 0x38, 0x2E, 0x37, 0x37, 0x20, 0x38, 0x2E, 0x38, 0x37, 0x20, 0x38, 0x2E, 0x39, 0x20, 0x38, 0x2E, 0x39, 0x35, 0x20, 0x38, 0x2E, 0x39, 0x38, 0x20, 0x39, 0x2E, 0x30, 0x35, 0x20, 0x39, 0x2E, 0x31, 0x31, 0x20, 0x39, 0x2E, 0x31, 0x36, 0x20, 0x39, 0x2E, 0x32, 0x39, 0x0D, 0x0A, 0x32, 0x33, 0x35, 0x39, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x38, 0x30, 0x20, 0x20, 0x36, 0x2E, 0x38, 0x20, 0x20, 0x36, 0x2E, 0x39, 0x20, 0x20, 0x36, 0x2E, 0x30, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x35, 0x33, 0x20, 0x31, 0x2E, 0x31, 0x31, 0x20, 0x33, 0x2E, 0x31, 0x36, 0x20, 0x36, 0x2E, 0x33, 0x38, 0x20, 0x37, 0x2E, 0x37, 0x37, 0x20, 0x37, 0x2E, 0x38, 0x39, 0x20, 0x37, 0x2E, 0x36, 0x39, 0x20, 0x37, 0x2E, 0x34, 0x31, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x20, 0x36, 0x2E, 0x37, 0x37, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x20, 0x36, 0x2E, 0x37, 0x35, 0x20, 0x36, 0x2E, 0x38, 0x20, 0x36, 0x2E, 0x38, 0x31, 0x20, 0x36, 0x2E, 0x38, 0x35, 0x20, 0x36, 0x2E, 0x38, 0x38, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x20, 0x37, 0x2E, 0x30, 0x32, 0x20, 0x37, 0x2E, 0x30, 0x36, 0x20, 0x37, 0x2E, 0x31, 0x20, 0x37, 0x2E, 0x31, 0x37, 0x20, 0x37, 0x2E, 0x32, 0x34, 0x20, 0x37, 0x2E, 0x33, 0x20, 0x37, 0x2E, 0x33, 0x35, 0x20, 0x37, 0x2E, 0x33, 0x39, 0x20, 0x37, 0x2E, 0x34, 0x34, 0x20, 0x37, 0x2E, 0x34, 0x38, 0x20, 0x37, 0x2E, 0x35, 0x34, 0x20, 0x37, 0x2E, 0x35, 0x38, 0x20, 0x37, 0x2E, 0x36, 0x36, 0x0D, 0x0A, 0x32, 0x33, 0x36, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x39, 0x30, 0x20, 0x20, 0x33, 0x2E, 0x38, 0x20, 0x20, 0x33, 0x2E, 0x38, 0x20, 0x20, 0x33, 0x2E, 0x35, 0x20, 0x30, 0x2E, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x20, 0x31, 0x2E, 0x30, 0x37, 0x20, 0x32, 0x2E, 0x33, 0x38, 0x20, 0x34, 0x2E, 0x31, 0x32, 0x20, 0x34, 0x2E, 0x37, 0x32, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x20, 0x34, 0x2E, 0x35, 0x31, 0x20, 0x34, 0x2E, 0x32, 0x37, 0x20, 0x34, 0x2E, 0x30, 0x37, 0x20, 0x33, 0x2E, 0x39, 0x31, 0x20, 0x33, 0x2E, 0x38, 0x20, 0x33, 0x2E, 0x37, 0x32, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x20, 0x33, 0x2E, 0x36, 0x38, 0x20, 0x33, 0x2E, 0x36, 0x39, 0x20, 0x33, 0x2E, 0x37, 0x20, 0x33, 0x2E, 0x37, 0x33, 0x20, 0x33, 0x2E, 0x37, 0x34, 0x20, 0x33, 0x2E, 0x37, 0x37, 0x20, 0x33, 0x2E, 0x38, 0x20, 0x33, 0x2E, 0x38, 0x33, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x20, 0x33, 0x2E, 0x38, 0x39, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x20, 0x33, 0x2E, 0x39, 0x38, 0x20, 0x34, 0x2E, 0x30, 0x32, 0x20, 0x34, 0x2E, 0x30, 0x39, 0x20, 0x34, 0x2E, 0x31, 0x35, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x20, 0x34, 0x2E, 0x32, 0x34, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x20, 0x34, 0x2E, 0x33, 0x31, 0x20, 0x34, 0x2E, 0x33, 0x37, 0x20, 0x34, 0x2E, 0x34, 0x33, 0x20, 0x34, 0x2E, 0x34, 0x39, 0x0D, 0x0A, 0x32, 0x33, 0x36, 0x31, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x20, 0x31, 0x2E, 0x38, 0x20, 0x20, 0x31, 0x2E, 0x37, 0x20, 0x20, 0x31, 0x2E, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x34, 0x20, 0x30, 0x2E, 0x33, 0x39, 0x20, 0x30, 0x2E, 0x39, 0x20, 0x31, 0x2E, 0x38, 0x35, 0x20, 0x32, 0x2E, 0x35, 0x33, 0x20, 0x32, 0x2E, 0x36, 0x34, 0x20, 0x32, 0x2E, 0x35, 0x36, 0x20, 0x32, 0x2E, 0x33, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x32, 0x20, 0x31, 0x2E, 0x35, 0x39, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x20, 0x31, 0x2E, 0x36, 0x20, 0x31, 0x2E, 0x36, 0x33, 0x20, 0x31, 0x2E, 0x36, 0x35, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x37, 0x31, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x20, 0x31, 0x2E, 0x37, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x39, 0x35, 0x20, 0x31, 0x2E, 0x39, 0x38, 0x20, 0x32, 0x2E, 0x30, 0x31, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x20, 0x32, 0x2E, 0x30, 0x37, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x20, 0x32, 0x2E, 0x31, 0x39, 0x20, 0x32, 0x2E, 0x32, 0x33, 0x0D, 0x0A, 0x32, 0x33, 0x36, 0x32, 0x20, 0x30, 0x35, 0x20, 0x30, 0x33, 0x20, 0x30, 0x33, 0x20, 0x30, 0x30, 0x20, 0x37, 0x33, 0x2E, 0x30, 0x20, 0x37, 0x35, 0x2E, 0x36, 0x20, 0x36, 0x33, 0x2E, 0x37, 0x20, 0x33, 0x2E, 0x34, 0x33, 0x20, 0x31, 0x2E, 0x39, 0x36, 0x20, 0x32, 0x2E, 0x36, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x37, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x39, 0x20, 0x37, 0x35, 0x2E, 0x35, 0x33, 0x20, 0x38, 0x32, 0x2E, 0x34, 0x36, 0x20, 0x38, 0x32, 0x2E, 0x35, 0x20, 0x38, 0x31, 0x2E, 0x30, 0x37, 0x20, 0x37, 0x39, 0x2E, 0x34, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x38, 0x20, 0x37, 0x37, 0x2E, 0x38, 0x34, 0x20, 0x37, 0x38, 0x2E, 0x35, 0x35, 0x20, 0x37, 0x39, 0x2E, 0x33, 0x39, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x38, 0x20, 0x37, 0x37, 0x2E, 0x35, 0x31, 0x20, 0x37, 0x36, 0x2E, 0x31, 0x35, 0x20, 0x37, 0x34, 0x2E, 0x38, 0x20, 0x37, 0x33, 0x2E, 0x33, 0x34, 0x20, 0x37, 0x32, 0x2E, 0x39, 0x32, 0x20, 0x37, 0x33, 0x2E, 0x35, 0x20, 0x37, 0x35, 0x2E, 0x31, 0x39, 0x20, 0x37, 0x36, 0x2E, 0x35, 0x33, 0x20, 0x37, 0x37, 0x2E, 0x34, 0x31, 0x20, 0x37, 0x37, 0x2E, 0x39, 0x35, 0x20, 0x37, 0x38, 0x2E, 0x31, 0x37, 0x20, 0x37, 0x38, 0x2E, 0x34, 0x36, 0x20, 0x37, 0x38, 0x2E, 0x39, 0x35, 0x20, 0x37, 0x39, 0x2E, 0x35, 0x32, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x37, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x38, 0x20, 0x37, 0x39, 0x2E, 0x37, 0x31, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x38, 0x20, 0x37, 0x39, 0x2E, 0x36, 0x39, 0x20, 0x38, 0x30, 0x2E, 0x33, 0x32, 0x0D, 0x0A, 0x32, 0x33, 0x36, 0x33, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x30, 0x30, 0x20, 0x31, 0x30, 0x20, 0x36, 0x35, 0x2E, 0x31, 0x20, 0x36, 0x37, 0x2E, 0x33, 0x20, 0x35, 0x35, 0x2E, 0x38, 0x20, 0x33, 0x2E, 0x30, 0x36, 0x20, 0x31, 0x2E, 0x38, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x35, 0x32, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x39, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x38, 0x20, 0x37, 0x31, 0x2E, 0x38, 0x33, 0x20, 0x37, 0x31, 0x2E, 0x35, 0x38, 0x20, 0x37, 0x30, 0x2E, 0x33, 0x37, 0x20, 0x36, 0x39, 0x2E, 0x31, 0x33, 0x20, 0x36, 0x38, 0x2E, 0x30, 0x35, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x36, 0x20, 0x36, 0x36, 0x2E, 0x37, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x39, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x36, 0x20, 0x36, 0x36, 0x2E, 0x33, 0x32, 0x20, 0x36, 0x36, 0x2E, 0x34, 0x32, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x32, 0x20, 0x36, 0x36, 0x2E, 0x35, 0x33, 0x20, 0x36, 0x36, 0x2E, 0x38, 0x35, 0x20, 0x36, 0x36, 0x2E, 0x39, 0x32, 0x20, 0x36, 0x37, 0x2E, 0x31, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x32, 0x37, 0x20, 0x36, 0x37, 0x2E, 0x34, 0x33, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x20, 0x36, 0x37, 0x2E, 0x36, 0x37, 0x20, 0x36, 0x37, 0x2E, 0x38, 0x38, 0x20, 0x36, 0x38, 0x2E, 0x31, 0x38, 0x20, 0x36, 0x38, 0x2E, 0x33, 0x39, 0x20, 0x36, 0x38, 0x2E, 0x34, 0x35, 0x20, 0x36, 0x38, 0x2E, 0x35, 0x34, 0x20, 0x36, 0x38, 0x2E, 0x36, 0x32, 0x20, 0x36, 0x38, 0x2E, 0x37, 0x38, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x33, 0x20, 0x36, 0x39, 0x2E, 0x30, 0x33, 0x20, 0x36, 0x39, 0x2E, 0x32, 0x36, 0x0D, 0x0A, 0x32, 0x33, 0x36, 0x34, 0x20, 0x31, 0x35, 0x20, 0x31, 0x30, 0x20, 0x31, 0x30, 0x20, 0x30, 0x30, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x20, 0x35, 0x35, 0x2E, 0x33, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x20, 0x32, 0x2E, 0x35, 0x37, 0x20, 0x31, 0x2E, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x33, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x20, 0x33, 0x38, 0x2E, 0x37, 0x33, 0x20, 0x35, 0x36, 0x2E, 0x37, 0x39, 0x20, 0x36, 0x31, 0x2E, 0x31, 0x38, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x36, 0x20, 0x35, 0x39, 0x2E, 0x37, 0x31, 0x20, 0x35, 0x38, 0x2E, 0x31, 0x35, 0x20, 0x35, 0x37, 0x2E, 0x30, 0x37, 0x20, 0x35, 0x37, 0x2E, 0x33, 0x32, 0x20, 0x35, 0x39, 0x2E, 0x32, 0x32, 0x20, 0x36, 0x31, 0x2E, 0x32, 0x34, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x31, 0x20, 0x35, 0x38, 0x2E, 0x30, 0x38, 0x20, 0x35, 0x35, 0x2E, 0x35, 0x33, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x32, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x36, 0x39, 0x20, 0x35, 0x30, 0x2E, 0x36, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x31, 0x20, 0x35, 0x35, 0x2E, 0x39, 0x35, 0x20, 0x35, 0x37, 0x2E, 0x36, 0x33, 0x20, 0x35, 0x38, 0x2E, 0x35, 0x37, 0x20, 0x35, 0x38, 0x2E, 0x39, 0x37, 0x20, 0x35, 0x39, 0x2E, 0x33, 0x33, 0x20, 0x35, 0x39, 0x2E, 0x39, 0x20, 0x36, 0x30, 0x2E, 0x36, 0x37, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x37, 0x20, 0x36, 0x31, 0x2E, 0x30, 0x35, 0x20, 0x36, 0x30, 0x2E, 0x38, 0x35, 0x20, 0x36, 0x30, 0x2E, 0x35, 0x35, 0x20, 0x36, 0x30, 0x2E, 0x33, 0x39, 0x20, 0x36, 0x30, 0x2E, 0x34, 0x39, 0x20, 0x36, 0x31, 0x2E, 0x33, 0x34, 0x0D, 0x0A, 0x32, 0x33, 0x36, 0x35, 0x20, 0x32, 0x30, 0x20, 0x31, 0x34, 0x20, 0x31, 0x34, 0x20, 0x30, 0x30, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x20, 0x32, 0x2E, 0x32, 0x35, 0x20, 0x31, 0x2E, 0x34, 0x35, 0x20, 0x32, 0x2E, 0x31, 0x33, 0x20, 0x31, 0x31, 0x2E, 0x32, 0x32, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x32, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x31, 0x20, 0x35, 0x32, 0x2E, 0x32, 0x33, 0x20, 0x35, 0x32, 0x2E, 0x30, 0x34, 0x20, 0x35, 0x30, 0x2E, 0x37, 0x36, 0x20, 0x34, 0x39, 0x2E, 0x32, 0x37, 0x20, 0x34, 0x38, 0x2E, 0x33, 0x31, 0x20, 0x34, 0x38, 0x2E, 0x37, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x30, 0x35, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x39, 0x31, 0x20, 0x35, 0x30, 0x2E, 0x32, 0x31, 0x20, 0x34, 0x37, 0x2E, 0x34, 0x39, 0x20, 0x34, 0x34, 0x2E, 0x38, 0x35, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x38, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x31, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x38, 0x20, 0x35, 0x30, 0x2E, 0x30, 0x39, 0x20, 0x35, 0x31, 0x2E, 0x31, 0x38, 0x20, 0x35, 0x31, 0x2E, 0x36, 0x31, 0x20, 0x35, 0x31, 0x2E, 0x39, 0x39, 0x20, 0x35, 0x32, 0x2E, 0x36, 0x20, 0x35, 0x33, 0x2E, 0x34, 0x31, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x35, 0x20, 0x35, 0x33, 0x2E, 0x38, 0x32, 0x20, 0x35, 0x33, 0x2E, 0x35, 0x36, 0x20, 0x35, 0x33, 0x2E, 0x32, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x30, 0x34, 0x20, 0x35, 0x33, 0x2E, 0x31, 0x31, 0x20, 0x35, 0x34, 0x2E, 0x30, 0x32, 0x0D, 0x0A, 0x32, 0x33, 0x36, 0x36, 0x20, 0x32, 0x35, 0x20, 0x31, 0x37, 0x20, 0x31, 0x37, 0x20, 0x30, 0x30, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x20, 0x31, 0x2E, 0x38, 0x39, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x20, 0x32, 0x2E, 0x30, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x34, 0x34, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x31, 0x20, 0x34, 0x34, 0x2E, 0x32, 0x39, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x35, 0x20, 0x34, 0x37, 0x2E, 0x31, 0x35, 0x20, 0x34, 0x35, 0x2E, 0x39, 0x38, 0x20, 0x34, 0x34, 0x2E, 0x35, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x36, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x31, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x34, 0x36, 0x20, 0x34, 0x38, 0x2E, 0x38, 0x38, 0x20, 0x34, 0x38, 0x2E, 0x31, 0x38, 0x20, 0x34, 0x35, 0x2E, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x37, 0x20, 0x33, 0x39, 0x2E, 0x35, 0x20, 0x33, 0x36, 0x2E, 0x38, 0x33, 0x20, 0x33, 0x35, 0x2E, 0x36, 0x33, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x34, 0x20, 0x33, 0x39, 0x2E, 0x34, 0x36, 0x20, 0x34, 0x32, 0x2E, 0x31, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x39, 0x37, 0x20, 0x34, 0x34, 0x2E, 0x39, 0x39, 0x20, 0x34, 0x35, 0x2E, 0x34, 0x32, 0x20, 0x34, 0x35, 0x2E, 0x37, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x33, 0x38, 0x20, 0x34, 0x37, 0x2E, 0x32, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x37, 0x20, 0x34, 0x37, 0x2E, 0x36, 0x32, 0x20, 0x34, 0x37, 0x2E, 0x33, 0x37, 0x20, 0x34, 0x36, 0x2E, 0x39, 0x35, 0x20, 0x34, 0x36, 0x2E, 0x36, 0x39, 0x20, 0x34, 0x36, 0x2E, 0x38, 0x32, 0x20, 0x34, 0x37, 0x2E, 0x38, 0x0D, 0x0A, 0x32, 0x33, 0x36, 0x37, 0x20, 0x33, 0x30, 0x20, 0x32, 0x31, 0x20, 0x32, 0x31, 0x20, 0x30, 0x30, 0x20, 0x33, 0x35, 0x2E, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x38, 0x20, 0x31, 0x2E, 0x38, 0x38, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x20, 0x31, 0x2E, 0x38, 0x34, 0x20, 0x39, 0x2E, 0x35, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x39, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x36, 0x20, 0x34, 0x31, 0x2E, 0x31, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x38, 0x38, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x36, 0x20, 0x33, 0x38, 0x2E, 0x34, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x20, 0x33, 0x38, 0x2E, 0x32, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x36, 0x37, 0x20, 0x34, 0x33, 0x2E, 0x32, 0x37, 0x20, 0x34, 0x32, 0x2E, 0x35, 0x39, 0x20, 0x33, 0x39, 0x2E, 0x37, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x37, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x32, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x30, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x39, 0x38, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x38, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x32, 0x20, 0x33, 0x39, 0x2E, 0x36, 0x35, 0x20, 0x34, 0x30, 0x2E, 0x31, 0x31, 0x20, 0x34, 0x30, 0x2E, 0x34, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x30, 0x34, 0x20, 0x34, 0x31, 0x2E, 0x39, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x33, 0x33, 0x20, 0x34, 0x32, 0x2E, 0x30, 0x35, 0x20, 0x34, 0x31, 0x2E, 0x36, 0x20, 0x34, 0x31, 0x2E, 0x32, 0x39, 0x20, 0x34, 0x31, 0x2E, 0x34, 0x20, 0x34, 0x32, 0x2E, 0x34, 0x0D, 0x0A, 0x32, 0x33, 0x36, 0x38, 0x20, 0x33, 0x35, 0x20, 0x32, 0x35, 0x20, 0x32, 0x35, 0x20, 0x30, 0x30, 0x20, 0x33, 0x30, 0x2E, 0x36, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x38, 0x20, 0x31, 0x2E, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x31, 0x20, 0x31, 0x2E, 0x37, 0x38, 0x20, 0x38, 0x2E, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x36, 0x33, 0x20, 0x33, 0x33, 0x2E, 0x39, 0x38, 0x20, 0x33, 0x36, 0x2E, 0x30, 0x35, 0x20, 0x33, 0x35, 0x2E, 0x38, 0x20, 0x33, 0x34, 0x2E, 0x37, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x36, 0x20, 0x33, 0x32, 0x2E, 0x37, 0x32, 0x20, 0x33, 0x33, 0x2E, 0x34, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x39, 0x36, 0x20, 0x33, 0x38, 0x2E, 0x36, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x39, 0x37, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x39, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x39, 0x20, 0x32, 0x36, 0x2E, 0x37, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x33, 0x20, 0x32, 0x36, 0x2E, 0x34, 0x37, 0x20, 0x32, 0x39, 0x2E, 0x34, 0x37, 0x20, 0x33, 0x32, 0x2E, 0x32, 0x33, 0x20, 0x33, 0x34, 0x2E, 0x30, 0x32, 0x20, 0x33, 0x35, 0x2E, 0x30, 0x34, 0x20, 0x33, 0x35, 0x2E, 0x34, 0x38, 0x20, 0x33, 0x35, 0x2E, 0x37, 0x39, 0x20, 0x33, 0x36, 0x2E, 0x33, 0x38, 0x20, 0x33, 0x37, 0x2E, 0x32, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x36, 0x20, 0x33, 0x37, 0x2E, 0x36, 0x39, 0x20, 0x33, 0x37, 0x2E, 0x33, 0x37, 0x20, 0x33, 0x36, 0x2E, 0x39, 0x31, 0x20, 0x33, 0x36, 0x2E, 0x35, 0x37, 0x20, 0x33, 0x36, 0x2E, 0x37, 0x32, 0x20, 0x33, 0x37, 0x2E, 0x37, 0x36, 0x0D, 0x0A, 0x32, 0x33, 0x36, 0x39, 0x20, 0x34, 0x30, 0x20, 0x33, 0x30, 0x20, 0x33, 0x30, 0x20, 0x30, 0x30, 0x20, 0x32, 0x36, 0x2E, 0x32, 0x20, 0x32, 0x37, 0x2E, 0x30, 0x20, 0x32, 0x33, 0x2E, 0x38, 0x20, 0x31, 0x2E, 0x33, 0x38, 0x20, 0x31, 0x2E, 0x30, 0x34, 0x20, 0x31, 0x2E, 0x36, 0x36, 0x20, 0x37, 0x2E, 0x38, 0x34, 0x20, 0x32, 0x31, 0x2E, 0x34, 0x39, 0x20, 0x32, 0x39, 0x2E, 0x31, 0x36, 0x20, 0x33, 0x30, 0x2E, 0x38, 0x32, 0x20, 0x33, 0x30, 0x2E, 0x34, 0x39, 0x20, 0x32, 0x39, 0x2E, 0x35, 0x33, 0x20, 0x32, 0x38, 0x2E, 0x33, 0x33, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x38, 0x20, 0x32, 0x38, 0x2E, 0x34, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x34, 0x20, 0x33, 0x33, 0x2E, 0x37, 0x37, 0x20, 0x33, 0x33, 0x2E, 0x31, 0x34, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x34, 0x20, 0x32, 0x37, 0x2E, 0x35, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x38, 0x32, 0x20, 0x32, 0x32, 0x2E, 0x32, 0x36, 0x20, 0x32, 0x31, 0x2E, 0x30, 0x37, 0x20, 0x32, 0x32, 0x2E, 0x30, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x39, 0x36, 0x20, 0x32, 0x37, 0x2E, 0x36, 0x35, 0x20, 0x32, 0x39, 0x2E, 0x33, 0x38, 0x20, 0x33, 0x30, 0x2E, 0x33, 0x35, 0x20, 0x33, 0x30, 0x2E, 0x37, 0x33, 0x20, 0x33, 0x31, 0x2E, 0x30, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x36, 0x34, 0x20, 0x33, 0x32, 0x2E, 0x35, 0x31, 0x20, 0x33, 0x33, 0x2E, 0x30, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x33, 0x20, 0x33, 0x32, 0x2E, 0x36, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x31, 0x32, 0x20, 0x33, 0x31, 0x2E, 0x37, 0x35, 0x20, 0x33, 0x31, 0x2E, 0x39, 0x31, 0x20, 0x33, 0x32, 0x2E, 0x39, 0x36, 0x0D, 0x0A, 0x32, 0x33, 0x37, 0x30, 0x20, 0x35, 0x30, 0x20, 0x34, 0x30, 0x20, 0x34, 0x30, 0x20, 0x30, 0x30, 0x20, 0x31, 0x39, 0x2E, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x30, 0x20, 0x31, 0x37, 0x2E, 0x36, 0x20, 0x31, 0x2E, 0x31, 0x39, 0x20, 0x30, 0x2E, 0x37, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x38, 0x20, 0x36, 0x2E, 0x33, 0x39, 0x20, 0x31, 0x36, 0x2E, 0x34, 0x38, 0x20, 0x32, 0x31, 0x2E, 0x38, 0x36, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x33, 0x20, 0x32, 0x32, 0x2E, 0x35, 0x20, 0x32, 0x31, 0x2E, 0x36, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x36, 0x34, 0x20, 0x32, 0x30, 0x2E, 0x31, 0x31, 0x20, 0x32, 0x30, 0x2E, 0x39, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x20, 0x32, 0x36, 0x2E, 0x31, 0x33, 0x20, 0x32, 0x35, 0x2E, 0x34, 0x39, 0x20, 0x32, 0x32, 0x2E, 0x38, 0x39, 0x20, 0x32, 0x30, 0x2E, 0x34, 0x31, 0x20, 0x31, 0x38, 0x20, 0x31, 0x35, 0x2E, 0x36, 0x39, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x32, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x20, 0x32, 0x30, 0x2E, 0x38, 0x20, 0x32, 0x32, 0x2E, 0x33, 0x33, 0x20, 0x32, 0x33, 0x2E, 0x31, 0x37, 0x20, 0x32, 0x33, 0x2E, 0x35, 0x32, 0x20, 0x32, 0x33, 0x2E, 0x37, 0x37, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x32, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x37, 0x36, 0x20, 0x32, 0x35, 0x2E, 0x36, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x33, 0x20, 0x32, 0x34, 0x2E, 0x37, 0x38, 0x20, 0x32, 0x34, 0x2E, 0x33, 0x39, 0x20, 0x32, 0x34, 0x2E, 0x35, 0x35, 0x20, 0x32, 0x35, 0x2E, 0x35, 0x38, 0x0D, 0x0A, 0x32, 0x33, 0x37, 0x31, 0x20, 0x36, 0x30, 0x20, 0x35, 0x30, 0x20, 0x35, 0x30, 0x20, 0x30, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x30, 0x20, 0x31, 0x34, 0x2E, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x37, 0x20, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x31, 0x20, 0x31, 0x2E, 0x33, 0x36, 0x20, 0x35, 0x2E, 0x32, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x34, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x30, 0x33, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x35, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x35, 0x31, 0x20, 0x31, 0x34, 0x2E, 0x36, 0x36, 0x20, 0x31, 0x34, 0x2E, 0x32, 0x33, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x36, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x39, 0x38, 0x20, 0x31, 0x36, 0x2E, 0x36, 0x32, 0x20, 0x31, 0x34, 0x2E, 0x35, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x35, 0x20, 0x39, 0x2E, 0x36, 0x34, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x39, 0x37, 0x20, 0x31, 0x35, 0x2E, 0x30, 0x36, 0x20, 0x31, 0x36, 0x2E, 0x32, 0x37, 0x20, 0x31, 0x36, 0x2E, 0x39, 0x33, 0x20, 0x31, 0x37, 0x2E, 0x32, 0x31, 0x20, 0x31, 0x37, 0x2E, 0x34, 0x34, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x33, 0x20, 0x31, 0x39, 0x2E, 0x33, 0x37, 0x20, 0x31, 0x39, 0x2E, 0x32, 0x33, 0x20, 0x31, 0x38, 0x2E, 0x38, 0x36, 0x20, 0x31, 0x38, 0x2E, 0x33, 0x32, 0x20, 0x31, 0x37, 0x2E, 0x39, 0x20, 0x31, 0x38, 0x2E, 0x30, 0x34, 0x20, 0x31, 0x39, 0x2E, 0x31, 0x34, 0x0D, 0x0A, 0x32, 0x33, 0x37, 0x32, 0x20, 0x37, 0x30, 0x20, 0x36, 0x30, 0x20, 0x36, 0x30, 0x20, 0x30, 0x30, 0x20, 0x20, 0x39, 0x2E, 0x34, 0x20, 0x20, 0x39, 0x2E, 0x37, 0x20, 0x20, 0x39, 0x2E, 0x31, 0x20, 0x30, 0x2E, 0x37, 0x34, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x20, 0x31, 0x2E, 0x32, 0x35, 0x20, 0x34, 0x2E, 0x33, 0x33, 0x20, 0x39, 0x2E, 0x33, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x38, 0x20, 0x31, 0x31, 0x2E, 0x39, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x32, 0x20, 0x31, 0x30, 0x2E, 0x39, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x35, 0x20, 0x39, 0x2E, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x32, 0x20, 0x31, 0x32, 0x2E, 0x36, 0x33, 0x20, 0x31, 0x34, 0x2E, 0x34, 0x36, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x35, 0x32, 0x20, 0x39, 0x2E, 0x38, 0x31, 0x20, 0x38, 0x2E, 0x32, 0x33, 0x20, 0x36, 0x2E, 0x37, 0x20, 0x35, 0x2E, 0x39, 0x37, 0x20, 0x36, 0x2E, 0x37, 0x31, 0x20, 0x38, 0x2E, 0x36, 0x37, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x37, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x35, 0x20, 0x31, 0x31, 0x2E, 0x38, 0x31, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x38, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x36, 0x31, 0x20, 0x31, 0x33, 0x2E, 0x34, 0x37, 0x20, 0x31, 0x33, 0x2E, 0x31, 0x33, 0x20, 0x31, 0x32, 0x2E, 0x35, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x31, 0x37, 0x20, 0x31, 0x32, 0x2E, 0x33, 0x33, 0x20, 0x31, 0x33, 0x2E, 0x33, 0x31, 0x0D, 0x0A, 0x32, 0x33, 0x37, 0x33, 0x20, 0x37, 0x35, 0x20, 0x36, 0x35, 0x20, 0x36, 0x35, 0x20, 0x30, 0x30, 0x20, 0x20, 0x37, 0x2E, 0x39, 0x20, 0x20, 0x38, 0x2E, 0x30, 0x20, 0x20, 0x37, 0x2E, 0x37, 0x20, 0x30, 0x2E, 0x36, 0x36, 0x20, 0x30, 0x2E, 0x36, 0x37, 0x20, 0x31, 0x2E, 0x33, 0x31, 0x20, 0x33, 0x2E, 0x39, 0x37, 0x20, 0x38, 0x2E, 0x31, 0x33, 0x20, 0x39, 0x2E, 0x39, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x32, 0x31, 0x20, 0x39, 0x2E, 0x37, 0x38, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x20, 0x38, 0x2E, 0x35, 0x34, 0x20, 0x38, 0x2E, 0x32, 0x32, 0x20, 0x38, 0x2E, 0x38, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x36, 0x36, 0x20, 0x31, 0x32, 0x2E, 0x32, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x36, 0x20, 0x39, 0x2E, 0x34, 0x31, 0x20, 0x37, 0x2E, 0x39, 0x32, 0x20, 0x36, 0x2E, 0x36, 0x33, 0x20, 0x35, 0x2E, 0x33, 0x31, 0x20, 0x34, 0x2E, 0x37, 0x31, 0x20, 0x35, 0x2E, 0x34, 0x32, 0x20, 0x37, 0x2E, 0x31, 0x39, 0x20, 0x38, 0x2E, 0x35, 0x36, 0x20, 0x39, 0x2E, 0x32, 0x32, 0x20, 0x39, 0x2E, 0x35, 0x37, 0x20, 0x39, 0x2E, 0x37, 0x33, 0x20, 0x39, 0x2E, 0x38, 0x35, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x32, 0x20, 0x31, 0x31, 0x2E, 0x31, 0x20, 0x31, 0x31, 0x2E, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x34, 0x36, 0x20, 0x31, 0x31, 0x2E, 0x30, 0x39, 0x20, 0x31, 0x30, 0x2E, 0x35, 0x38, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x36, 0x20, 0x31, 0x30, 0x2E, 0x33, 0x34, 0x20, 0x31, 0x31, 0x2E, 0x33, 0x31, 0x0D, 0x0A, 0x32, 0x33, 0x37, 0x34, 0x20, 0x38, 0x30, 0x20, 0x37, 0x32, 0x20, 0x37, 0x32, 0x20, 0x30, 0x30, 0x20, 0x20, 0x36, 0x2E, 0x32, 0x20, 0x20, 0x36, 0x2E, 0x32, 0x20, 0x20, 0x35, 0x2E, 0x39, 0x20, 0x30, 0x2E, 0x34, 0x33, 0x20, 0x30, 0x2E, 0x35, 0x34, 0x20, 0x31, 0x2E, 0x32, 0x20, 0x33, 0x2E, 0x34, 0x38, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x20, 0x37, 0x2E, 0x38, 0x20, 0x37, 0x2E, 0x38, 0x35, 0x20, 0x37, 0x2E, 0x34, 0x35, 0x20, 0x36, 0x2E, 0x39, 0x33, 0x20, 0x36, 0x2E, 0x33, 0x36, 0x20, 0x36, 0x2E, 0x30, 0x37, 0x20, 0x36, 0x2E, 0x36, 0x35, 0x20, 0x38, 0x2E, 0x31, 0x39, 0x20, 0x39, 0x2E, 0x34, 0x38, 0x20, 0x38, 0x2E, 0x36, 0x31, 0x20, 0x36, 0x2E, 0x39, 0x31, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x20, 0x34, 0x2E, 0x38, 0x32, 0x20, 0x33, 0x2E, 0x38, 0x36, 0x20, 0x33, 0x2E, 0x34, 0x35, 0x20, 0x34, 0x2E, 0x31, 0x33, 0x20, 0x35, 0x2E, 0x37, 0x35, 0x20, 0x36, 0x2E, 0x39, 0x36, 0x20, 0x37, 0x2E, 0x35, 0x32, 0x20, 0x37, 0x2E, 0x38, 0x32, 0x20, 0x37, 0x2E, 0x39, 0x36, 0x20, 0x38, 0x2E, 0x30, 0x37, 0x20, 0x38, 0x2E, 0x35, 0x20, 0x39, 0x2E, 0x32, 0x37, 0x20, 0x39, 0x2E, 0x37, 0x34, 0x20, 0x39, 0x2E, 0x36, 0x20, 0x39, 0x2E, 0x32, 0x36, 0x20, 0x38, 0x2E, 0x37, 0x34, 0x20, 0x38, 0x2E, 0x33, 0x38, 0x20, 0x38, 0x2E, 0x35, 0x39, 0x20, 0x39, 0x2E, 0x35, 0x0D, 0x0A, 0x32, 0x33, 0x37, 0x35, 0x20, 0x39, 0x30, 0x20, 0x38, 0x32, 0x20, 0x38, 0x32, 0x20, 0x30, 0x30, 0x20, 0x20, 0x34, 0x2E, 0x33, 0x20, 0x20, 0x34, 0x2E, 0x34, 0x20, 0x20, 0x34, 0x2E, 0x36, 0x20, 0x30, 0x2E, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x37, 0x20, 0x31, 0x2E, 0x32, 0x20, 0x33, 0x2E, 0x31, 0x35, 0x20, 0x35, 0x2E, 0x33, 0x32, 0x20, 0x36, 0x2E, 0x31, 0x20, 0x36, 0x2E, 0x30, 0x33, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x20, 0x35, 0x2E, 0x32, 0x32, 0x20, 0x34, 0x2E, 0x37, 0x37, 0x20, 0x34, 0x2E, 0x35, 0x32, 0x20, 0x35, 0x2E, 0x30, 0x32, 0x20, 0x36, 0x2E, 0x32, 0x36, 0x20, 0x37, 0x2E, 0x32, 0x31, 0x20, 0x36, 0x2E, 0x32, 0x39, 0x20, 0x34, 0x2E, 0x37, 0x38, 0x20, 0x33, 0x2E, 0x39, 0x20, 0x33, 0x2E, 0x32, 0x36, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x32, 0x39, 0x20, 0x32, 0x2E, 0x38, 0x32, 0x20, 0x33, 0x2E, 0x39, 0x33, 0x20, 0x34, 0x2E, 0x36, 0x34, 0x20, 0x34, 0x2E, 0x38, 0x38, 0x20, 0x35, 0x20, 0x35, 0x2E, 0x30, 0x36, 0x20, 0x35, 0x2E, 0x31, 0x34, 0x20, 0x35, 0x2E, 0x35, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x20, 0x36, 0x2E, 0x36, 0x39, 0x20, 0x36, 0x2E, 0x35, 0x35, 0x20, 0x36, 0x2E, 0x32, 0x32, 0x20, 0x35, 0x2E, 0x36, 0x39, 0x20, 0x35, 0x2E, 0x33, 0x36, 0x20, 0x35, 0x2E, 0x35, 0x38, 0x20, 0x36, 0x2E, 0x34, 0x33, 0x0D, 0x0A, 0x32, 0x33, 0x37, 0x36, 0x20, 0x31, 0x30, 0x30, 0x20, 0x39, 0x33, 0x20, 0x39, 0x33, 0x20, 0x30, 0x30, 0x20, 0x20, 0x32, 0x2E, 0x36, 0x20, 0x20, 0x32, 0x2E, 0x35, 0x20, 0x20, 0x33, 0x2E, 0x31, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x39, 0x20, 0x31, 0x2E, 0x31, 0x34, 0x20, 0x32, 0x2E, 0x37, 0x31, 0x20, 0x34, 0x2E, 0x30, 0x33, 0x20, 0x34, 0x2E, 0x34, 0x20, 0x34, 0x2E, 0x32, 0x39, 0x20, 0x33, 0x2E, 0x39, 0x32, 0x20, 0x33, 0x2E, 0x35, 0x37, 0x20, 0x33, 0x2E, 0x32, 0x33, 0x20, 0x33, 0x2E, 0x30, 0x35, 0x20, 0x33, 0x2E, 0x34, 0x20, 0x34, 0x2E, 0x32, 0x35, 0x20, 0x34, 0x2E, 0x37, 0x34, 0x20, 0x33, 0x2E, 0x37, 0x35, 0x20, 0x32, 0x2E, 0x34, 0x38, 0x20, 0x31, 0x2E, 0x39, 0x34, 0x20, 0x31, 0x2E, 0x37, 0x33, 0x20, 0x31, 0x2E, 0x34, 0x36, 0x20, 0x31, 0x2E, 0x34, 0x20, 0x31, 0x2E, 0x38, 0x33, 0x20, 0x32, 0x2E, 0x35, 0x38, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x20, 0x32, 0x2E, 0x39, 0x34, 0x20, 0x32, 0x2E, 0x39, 0x35, 0x20, 0x32, 0x2E, 0x39, 0x38, 0x20, 0x33, 0x2E, 0x33, 0x32, 0x20, 0x33, 0x2E, 0x39, 0x39, 0x20, 0x34, 0x2E, 0x34, 0x32, 0x20, 0x34, 0x2E, 0x32, 0x38, 0x20, 0x33, 0x2E, 0x39, 0x34, 0x20, 0x33, 0x2E, 0x34, 0x37, 0x20, 0x33, 0x2E, 0x31, 0x33, 0x20, 0x33, 0x2E, 0x33, 0x35, 0x20, 0x34, 0x2E, 0x32, 0x31, 0x0D, 0x0A, 0x45, 0x4E, 0x44, 0x5F, 0x44, 0x41, 0x54, 0x41, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x00, 0x00, } }; static VipsProfileFallback vips__profile_fallback_sRGB = { "sRGB", 6922, { 0x00, 0x00, 0x1B, 0x0A, 0x6C, 0x63, 0x6D, 0x73, 0x02, 0x30, 0x00, 0x00, 0x6D, 0x6E, 0x74, 0x72, 0x52, 0x47, 0x42, 0x20, 0x58, 0x59, 0x5A, 0x20, 0x07, 0xD4, 0x00, 0x08, 0x00, 0x0D, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x06, 0x61, 0x63, 0x73, 0x70, 0x4D, 0x53, 0x46, 0x54, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x63, 0x6D, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xD6, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x2D, 0x6C, 0x63, 0x6D, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x64, 0x6D, 0x6E, 0x64, 0x00, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x6A, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x68, 0x64, 0x6D, 0x64, 0x64, 0x00, 0x00, 0x01, 0xE8, 0x00, 0x00, 0x00, 0x68, 0x77, 0x74, 0x70, 0x74, 0x00, 0x00, 0x02, 0x50, 0x00, 0x00, 0x00, 0x14, 0x72, 0x58, 0x59, 0x5A, 0x00, 0x00, 0x02, 0x64, 0x00, 0x00, 0x00, 0x14, 0x62, 0x58, 0x59, 0x5A, 0x00, 0x00, 0x02, 0x78, 0x00, 0x00, 0x00, 0x14, 0x67, 0x58, 0x59, 0x5A, 0x00, 0x00, 0x02, 0x8C, 0x00, 0x00, 0x00, 0x14, 0x72, 0x54, 0x52, 0x43, 0x00, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x08, 0x0C, 0x67, 0x54, 0x52, 0x43, 0x00, 0x00, 0x0A, 0xAC, 0x00, 0x00, 0x08, 0x0C, 0x62, 0x54, 0x52, 0x43, 0x00, 0x00, 0x12, 0xB8, 0x00, 0x00, 0x08, 0x0C, 0x63, 0x68, 0x72, 0x6D, 0x00, 0x00, 0x1A, 0xC4, 0x00, 0x00, 0x00, 0x24, 0x63, 0x70, 0x72, 0x74, 0x00, 0x00, 0x1A, 0xE8, 0x00, 0x00, 0x00, 0x21, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6C, 0x63, 0x6D, 0x73, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x73, 0x52, 0x47, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x73, 0x52, 0x47, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x59, 0x5A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x3D, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0x98, 0x58, 0x59, 0x5A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x94, 0x00, 0x00, 0x38, 0xEE, 0x00, 0x00, 0x03, 0x90, 0x58, 0x59, 0x5A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x9D, 0x00, 0x00, 0x0F, 0x83, 0x00, 0x00, 0xB6, 0xBE, 0x58, 0x59, 0x5A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xA5, 0x00, 0x00, 0xB7, 0x90, 0x00, 0x00, 0x18, 0xDE, 0x63, 0x75, 0x72, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x23, 0x00, 0x28, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x37, 0x00, 0x3B, 0x00, 0x40, 0x00, 0x45, 0x00, 0x4A, 0x00, 0x4F, 0x00, 0x54, 0x00, 0x59, 0x00, 0x5E, 0x00, 0x63, 0x00, 0x68, 0x00, 0x6D, 0x00, 0x72, 0x00, 0x77, 0x00, 0x7C, 0x00, 0x81, 0x00, 0x86, 0x00, 0x8B, 0x00, 0x90, 0x00, 0x95, 0x00, 0x9A, 0x00, 0x9F, 0x00, 0xA4, 0x00, 0xA9, 0x00, 0xAE, 0x00, 0xB2, 0x00, 0xB7, 0x00, 0xBC, 0x00, 0xC1, 0x00, 0xC6, 0x00, 0xCB, 0x00, 0xD0, 0x00, 0xD5, 0x00, 0xDB, 0x00, 0xE0, 0x00, 0xE5, 0x00, 0xEB, 0x00, 0xF0, 0x00, 0xF6, 0x00, 0xFB, 0x01, 0x01, 0x01, 0x07, 0x01, 0x0D, 0x01, 0x13, 0x01, 0x19, 0x01, 0x1F, 0x01, 0x25, 0x01, 0x2B, 0x01, 0x32, 0x01, 0x38, 0x01, 0x3E, 0x01, 0x45, 0x01, 0x4C, 0x01, 0x52, 0x01, 0x59, 0x01, 0x60, 0x01, 0x67, 0x01, 0x6E, 0x01, 0x75, 0x01, 0x7C, 0x01, 0x83, 0x01, 0x8B, 0x01, 0x92, 0x01, 0x9A, 0x01, 0xA1, 0x01, 0xA9, 0x01, 0xB1, 0x01, 0xB9, 0x01, 0xC1, 0x01, 0xC9, 0x01, 0xD1, 0x01, 0xD9, 0x01, 0xE1, 0x01, 0xE9, 0x01, 0xF2, 0x01, 0xFA, 0x02, 0x03, 0x02, 0x0C, 0x02, 0x14, 0x02, 0x1D, 0x02, 0x26, 0x02, 0x2F, 0x02, 0x38, 0x02, 0x41, 0x02, 0x4B, 0x02, 0x54, 0x02, 0x5D, 0x02, 0x67, 0x02, 0x71, 0x02, 0x7A, 0x02, 0x84, 0x02, 0x8E, 0x02, 0x98, 0x02, 0xA2, 0x02, 0xAC, 0x02, 0xB6, 0x02, 0xC1, 0x02, 0xCB, 0x02, 0xD5, 0x02, 0xE0, 0x02, 0xEB, 0x02, 0xF5, 0x03, 0x00, 0x03, 0x0B, 0x03, 0x16, 0x03, 0x21, 0x03, 0x2D, 0x03, 0x38, 0x03, 0x43, 0x03, 0x4F, 0x03, 0x5A, 0x03, 0x66, 0x03, 0x72, 0x03, 0x7E, 0x03, 0x8A, 0x03, 0x96, 0x03, 0xA2, 0x03, 0xAE, 0x03, 0xBA, 0x03, 0xC7, 0x03, 0xD3, 0x03, 0xE0, 0x03, 0xEC, 0x03, 0xF9, 0x04, 0x06, 0x04, 0x13, 0x04, 0x20, 0x04, 0x2D, 0x04, 0x3B, 0x04, 0x48, 0x04, 0x55, 0x04, 0x63, 0x04, 0x71, 0x04, 0x7E, 0x04, 0x8C, 0x04, 0x9A, 0x04, 0xA8, 0x04, 0xB6, 0x04, 0xC4, 0x04, 0xD3, 0x04, 0xE1, 0x04, 0xF0, 0x04, 0xFE, 0x05, 0x0D, 0x05, 0x1C, 0x05, 0x2B, 0x05, 0x3A, 0x05, 0x49, 0x05, 0x58, 0x05, 0x67, 0x05, 0x77, 0x05, 0x86, 0x05, 0x96, 0x05, 0xA6, 0x05, 0xB5, 0x05, 0xC5, 0x05, 0xD5, 0x05, 0xE5, 0x05, 0xF6, 0x06, 0x06, 0x06, 0x16, 0x06, 0x27, 0x06, 0x37, 0x06, 0x48, 0x06, 0x59, 0x06, 0x6A, 0x06, 0x7B, 0x06, 0x8C, 0x06, 0x9D, 0x06, 0xAF, 0x06, 0xC0, 0x06, 0xD1, 0x06, 0xE3, 0x06, 0xF5, 0x07, 0x07, 0x07, 0x19, 0x07, 0x2B, 0x07, 0x3D, 0x07, 0x4F, 0x07, 0x61, 0x07, 0x74, 0x07, 0x86, 0x07, 0x99, 0x07, 0xAC, 0x07, 0xBF, 0x07, 0xD2, 0x07, 0xE5, 0x07, 0xF8, 0x08, 0x0B, 0x08, 0x1F, 0x08, 0x32, 0x08, 0x46, 0x08, 0x5A, 0x08, 0x6E, 0x08, 0x82, 0x08, 0x96, 0x08, 0xAA, 0x08, 0xBE, 0x08, 0xD2, 0x08, 0xE7, 0x08, 0xFB, 0x09, 0x10, 0x09, 0x25, 0x09, 0x3A, 0x09, 0x4F, 0x09, 0x64, 0x09, 0x79, 0x09, 0x8F, 0x09, 0xA4, 0x09, 0xBA, 0x09, 0xCF, 0x09, 0xE5, 0x09, 0xFB, 0x0A, 0x11, 0x0A, 0x27, 0x0A, 0x3D, 0x0A, 0x54, 0x0A, 0x6A, 0x0A, 0x81, 0x0A, 0x98, 0x0A, 0xAE, 0x0A, 0xC5, 0x0A, 0xDC, 0x0A, 0xF3, 0x0B, 0x0B, 0x0B, 0x22, 0x0B, 0x39, 0x0B, 0x51, 0x0B, 0x69, 0x0B, 0x80, 0x0B, 0x98, 0x0B, 0xB0, 0x0B, 0xC8, 0x0B, 0xE1, 0x0B, 0xF9, 0x0C, 0x12, 0x0C, 0x2A, 0x0C, 0x43, 0x0C, 0x5C, 0x0C, 0x75, 0x0C, 0x8E, 0x0C, 0xA7, 0x0C, 0xC0, 0x0C, 0xD9, 0x0C, 0xF3, 0x0D, 0x0D, 0x0D, 0x26, 0x0D, 0x40, 0x0D, 0x5A, 0x0D, 0x74, 0x0D, 0x8E, 0x0D, 0xA9, 0x0D, 0xC3, 0x0D, 0xDE, 0x0D, 0xF8, 0x0E, 0x13, 0x0E, 0x2E, 0x0E, 0x49, 0x0E, 0x64, 0x0E, 0x7F, 0x0E, 0x9B, 0x0E, 0xB6, 0x0E, 0xD2, 0x0E, 0xEE, 0x0F, 0x09, 0x0F, 0x25, 0x0F, 0x41, 0x0F, 0x5E, 0x0F, 0x7A, 0x0F, 0x96, 0x0F, 0xB3, 0x0F, 0xCF, 0x0F, 0xEC, 0x10, 0x09, 0x10, 0x26, 0x10, 0x43, 0x10, 0x61, 0x10, 0x7E, 0x10, 0x9B, 0x10, 0xB9, 0x10, 0xD7, 0x10, 0xF5, 0x11, 0x13, 0x11, 0x31, 0x11, 0x4F, 0x11, 0x6D, 0x11, 0x8C, 0x11, 0xAA, 0x11, 0xC9, 0x11, 0xE8, 0x12, 0x07, 0x12, 0x26, 0x12, 0x45, 0x12, 0x64, 0x12, 0x84, 0x12, 0xA3, 0x12, 0xC3, 0x12, 0xE3, 0x13, 0x03, 0x13, 0x23, 0x13, 0x43, 0x13, 0x63, 0x13, 0x83, 0x13, 0xA4, 0x13, 0xC5, 0x13, 0xE5, 0x14, 0x06, 0x14, 0x27, 0x14, 0x49, 0x14, 0x6A, 0x14, 0x8B, 0x14, 0xAD, 0x14, 0xCE, 0x14, 0xF0, 0x15, 0x12, 0x15, 0x34, 0x15, 0x56, 0x15, 0x78, 0x15, 0x9B, 0x15, 0xBD, 0x15, 0xE0, 0x16, 0x03, 0x16, 0x26, 0x16, 0x49, 0x16, 0x6C, 0x16, 0x8F, 0x16, 0xB2, 0x16, 0xD6, 0x16, 0xFA, 0x17, 0x1D, 0x17, 0x41, 0x17, 0x65, 0x17, 0x89, 0x17, 0xAE, 0x17, 0xD2, 0x17, 0xF7, 0x18, 0x1B, 0x18, 0x40, 0x18, 0x65, 0x18, 0x8A, 0x18, 0xAF, 0x18, 0xD5, 0x18, 0xFA, 0x19, 0x20, 0x19, 0x45, 0x19, 0x6B, 0x19, 0x91, 0x19, 0xB7, 0x19, 0xDD, 0x1A, 0x04, 0x1A, 0x2A, 0x1A, 0x51, 0x1A, 0x77, 0x1A, 0x9E, 0x1A, 0xC5, 0x1A, 0xEC, 0x1B, 0x14, 0x1B, 0x3B, 0x1B, 0x63, 0x1B, 0x8A, 0x1B, 0xB2, 0x1B, 0xDA, 0x1C, 0x02, 0x1C, 0x2A, 0x1C, 0x52, 0x1C, 0x7B, 0x1C, 0xA3, 0x1C, 0xCC, 0x1C, 0xF5, 0x1D, 0x1E, 0x1D, 0x47, 0x1D, 0x70, 0x1D, 0x99, 0x1D, 0xC3, 0x1D, 0xEC, 0x1E, 0x16, 0x1E, 0x40, 0x1E, 0x6A, 0x1E, 0x94, 0x1E, 0xBE, 0x1E, 0xE9, 0x1F, 0x13, 0x1F, 0x3E, 0x1F, 0x69, 0x1F, 0x94, 0x1F, 0xBF, 0x1F, 0xEA, 0x20, 0x15, 0x20, 0x41, 0x20, 0x6C, 0x20, 0x98, 0x20, 0xC4, 0x20, 0xF0, 0x21, 0x1C, 0x21, 0x48, 0x21, 0x75, 0x21, 0xA1, 0x21, 0xCE, 0x21, 0xFB, 0x22, 0x27, 0x22, 0x55, 0x22, 0x82, 0x22, 0xAF, 0x22, 0xDD, 0x23, 0x0A, 0x23, 0x38, 0x23, 0x66, 0x23, 0x94, 0x23, 0xC2, 0x23, 0xF0, 0x24, 0x1F, 0x24, 0x4D, 0x24, 0x7C, 0x24, 0xAB, 0x24, 0xDA, 0x25, 0x09, 0x25, 0x38, 0x25, 0x68, 0x25, 0x97, 0x25, 0xC7, 0x25, 0xF7, 0x26, 0x27, 0x26, 0x57, 0x26, 0x87, 0x26, 0xB7, 0x26, 0xE8, 0x27, 0x18, 0x27, 0x49, 0x27, 0x7A, 0x27, 0xAB, 0x27, 0xDC, 0x28, 0x0D, 0x28, 0x3F, 0x28, 0x71, 0x28, 0xA2, 0x28, 0xD4, 0x29, 0x06, 0x29, 0x38, 0x29, 0x6B, 0x29, 0x9D, 0x29, 0xD0, 0x2A, 0x02, 0x2A, 0x35, 0x2A, 0x68, 0x2A, 0x9B, 0x2A, 0xCF, 0x2B, 0x02, 0x2B, 0x36, 0x2B, 0x69, 0x2B, 0x9D, 0x2B, 0xD1, 0x2C, 0x05, 0x2C, 0x39, 0x2C, 0x6E, 0x2C, 0xA2, 0x2C, 0xD7, 0x2D, 0x0C, 0x2D, 0x41, 0x2D, 0x76, 0x2D, 0xAB, 0x2D, 0xE1, 0x2E, 0x16, 0x2E, 0x4C, 0x2E, 0x82, 0x2E, 0xB7, 0x2E, 0xEE, 0x2F, 0x24, 0x2F, 0x5A, 0x2F, 0x91, 0x2F, 0xC7, 0x2F, 0xFE, 0x30, 0x35, 0x30, 0x6C, 0x30, 0xA4, 0x30, 0xDB, 0x31, 0x12, 0x31, 0x4A, 0x31, 0x82, 0x31, 0xBA, 0x31, 0xF2, 0x32, 0x2A, 0x32, 0x63, 0x32, 0x9B, 0x32, 0xD4, 0x33, 0x0D, 0x33, 0x46, 0x33, 0x7F, 0x33, 0xB8, 0x33, 0xF1, 0x34, 0x2B, 0x34, 0x65, 0x34, 0x9E, 0x34, 0xD8, 0x35, 0x13, 0x35, 0x4D, 0x35, 0x87, 0x35, 0xC2, 0x35, 0xFD, 0x36, 0x37, 0x36, 0x72, 0x36, 0xAE, 0x36, 0xE9, 0x37, 0x24, 0x37, 0x60, 0x37, 0x9C, 0x37, 0xD7, 0x38, 0x14, 0x38, 0x50, 0x38, 0x8C, 0x38, 0xC8, 0x39, 0x05, 0x39, 0x42, 0x39, 0x7F, 0x39, 0xBC, 0x39, 0xF9, 0x3A, 0x36, 0x3A, 0x74, 0x3A, 0xB2, 0x3A, 0xEF, 0x3B, 0x2D, 0x3B, 0x6B, 0x3B, 0xAA, 0x3B, 0xE8, 0x3C, 0x27, 0x3C, 0x65, 0x3C, 0xA4, 0x3C, 0xE3, 0x3D, 0x22, 0x3D, 0x61, 0x3D, 0xA1, 0x3D, 0xE0, 0x3E, 0x20, 0x3E, 0x60, 0x3E, 0xA0, 0x3E, 0xE0, 0x3F, 0x21, 0x3F, 0x61, 0x3F, 0xA2, 0x3F, 0xE2, 0x40, 0x23, 0x40, 0x64, 0x40, 0xA6, 0x40, 0xE7, 0x41, 0x29, 0x41, 0x6A, 0x41, 0xAC, 0x41, 0xEE, 0x42, 0x30, 0x42, 0x72, 0x42, 0xB5, 0x42, 0xF7, 0x43, 0x3A, 0x43, 0x7D, 0x43, 0xC0, 0x44, 0x03, 0x44, 0x47, 0x44, 0x8A, 0x44, 0xCE, 0x45, 0x12, 0x45, 0x55, 0x45, 0x9A, 0x45, 0xDE, 0x46, 0x22, 0x46, 0x67, 0x46, 0xAB, 0x46, 0xF0, 0x47, 0x35, 0x47, 0x7B, 0x47, 0xC0, 0x48, 0x05, 0x48, 0x4B, 0x48, 0x91, 0x48, 0xD7, 0x49, 0x1D, 0x49, 0x63, 0x49, 0xA9, 0x49, 0xF0, 0x4A, 0x37, 0x4A, 0x7D, 0x4A, 0xC4, 0x4B, 0x0C, 0x4B, 0x53, 0x4B, 0x9A, 0x4B, 0xE2, 0x4C, 0x2A, 0x4C, 0x72, 0x4C, 0xBA, 0x4D, 0x02, 0x4D, 0x4A, 0x4D, 0x93, 0x4D, 0xDC, 0x4E, 0x25, 0x4E, 0x6E, 0x4E, 0xB7, 0x4F, 0x00, 0x4F, 0x49, 0x4F, 0x93, 0x4F, 0xDD, 0x50, 0x27, 0x50, 0x71, 0x50, 0xBB, 0x51, 0x06, 0x51, 0x50, 0x51, 0x9B, 0x51, 0xE6, 0x52, 0x31, 0x52, 0x7C, 0x52, 0xC7, 0x53, 0x13, 0x53, 0x5F, 0x53, 0xAA, 0x53, 0xF6, 0x54, 0x42, 0x54, 0x8F, 0x54, 0xDB, 0x55, 0x28, 0x55, 0x75, 0x55, 0xC2, 0x56, 0x0F, 0x56, 0x5C, 0x56, 0xA9, 0x56, 0xF7, 0x57, 0x44, 0x57, 0x92, 0x57, 0xE0, 0x58, 0x2F, 0x58, 0x7D, 0x58, 0xCB, 0x59, 0x1A, 0x59, 0x69, 0x59, 0xB8, 0x5A, 0x07, 0x5A, 0x56, 0x5A, 0xA6, 0x5A, 0xF5, 0x5B, 0x45, 0x5B, 0x95, 0x5B, 0xE5, 0x5C, 0x35, 0x5C, 0x86, 0x5C, 0xD6, 0x5D, 0x27, 0x5D, 0x78, 0x5D, 0xC9, 0x5E, 0x1A, 0x5E, 0x6C, 0x5E, 0xBD, 0x5F, 0x0F, 0x5F, 0x61, 0x5F, 0xB3, 0x60, 0x05, 0x60, 0x57, 0x60, 0xAA, 0x60, 0xFC, 0x61, 0x4F, 0x61, 0xA2, 0x61, 0xF5, 0x62, 0x49, 0x62, 0x9C, 0x62, 0xF0, 0x63, 0x43, 0x63, 0x97, 0x63, 0xEB, 0x64, 0x40, 0x64, 0x94, 0x64, 0xE9, 0x65, 0x3D, 0x65, 0x92, 0x65, 0xE7, 0x66, 0x3D, 0x66, 0x92, 0x66, 0xE8, 0x67, 0x3D, 0x67, 0x93, 0x67, 0xE9, 0x68, 0x3F, 0x68, 0x96, 0x68, 0xEC, 0x69, 0x43, 0x69, 0x9A, 0x69, 0xF1, 0x6A, 0x48, 0x6A, 0x9F, 0x6A, 0xF7, 0x6B, 0x4F, 0x6B, 0xA7, 0x6B, 0xFF, 0x6C, 0x57, 0x6C, 0xAF, 0x6D, 0x08, 0x6D, 0x60, 0x6D, 0xB9, 0x6E, 0x12, 0x6E, 0x6B, 0x6E, 0xC4, 0x6F, 0x1E, 0x6F, 0x78, 0x6F, 0xD1, 0x70, 0x2B, 0x70, 0x86, 0x70, 0xE0, 0x71, 0x3A, 0x71, 0x95, 0x71, 0xF0, 0x72, 0x4B, 0x72, 0xA6, 0x73, 0x01, 0x73, 0x5D, 0x73, 0xB8, 0x74, 0x14, 0x74, 0x70, 0x74, 0xCC, 0x75, 0x28, 0x75, 0x85, 0x75, 0xE1, 0x76, 0x3E, 0x76, 0x9B, 0x76, 0xF8, 0x77, 0x56, 0x77, 0xB3, 0x78, 0x11, 0x78, 0x6E, 0x78, 0xCC, 0x79, 0x2A, 0x79, 0x89, 0x79, 0xE7, 0x7A, 0x46, 0x7A, 0xA5, 0x7B, 0x04, 0x7B, 0x63, 0x7B, 0xC2, 0x7C, 0x21, 0x7C, 0x81, 0x7C, 0xE1, 0x7D, 0x41, 0x7D, 0xA1, 0x7E, 0x01, 0x7E, 0x62, 0x7E, 0xC2, 0x7F, 0x23, 0x7F, 0x84, 0x7F, 0xE5, 0x80, 0x47, 0x80, 0xA8, 0x81, 0x0A, 0x81, 0x6B, 0x81, 0xCD, 0x82, 0x30, 0x82, 0x92, 0x82, 0xF4, 0x83, 0x57, 0x83, 0xBA, 0x84, 0x1D, 0x84, 0x80, 0x84, 0xE3, 0x85, 0x47, 0x85, 0xAB, 0x86, 0x0E, 0x86, 0x72, 0x86, 0xD7, 0x87, 0x3B, 0x87, 0x9F, 0x88, 0x04, 0x88, 0x69, 0x88, 0xCE, 0x89, 0x33, 0x89, 0x99, 0x89, 0xFE, 0x8A, 0x64, 0x8A, 0xCA, 0x8B, 0x30, 0x8B, 0x96, 0x8B, 0xFC, 0x8C, 0x63, 0x8C, 0xCA, 0x8D, 0x31, 0x8D, 0x98, 0x8D, 0xFF, 0x8E, 0x66, 0x8E, 0xCE, 0x8F, 0x36, 0x8F, 0x9E, 0x90, 0x06, 0x90, 0x6E, 0x90, 0xD6, 0x91, 0x3F, 0x91, 0xA8, 0x92, 0x11, 0x92, 0x7A, 0x92, 0xE3, 0x93, 0x4D, 0x93, 0xB6, 0x94, 0x20, 0x94, 0x8A, 0x94, 0xF4, 0x95, 0x5F, 0x95, 0xC9, 0x96, 0x34, 0x96, 0x9F, 0x97, 0x0A, 0x97, 0x75, 0x97, 0xE0, 0x98, 0x4C, 0x98, 0xB8, 0x99, 0x24, 0x99, 0x90, 0x99, 0xFC, 0x9A, 0x68, 0x9A, 0xD5, 0x9B, 0x42, 0x9B, 0xAF, 0x9C, 0x1C, 0x9C, 0x89, 0x9C, 0xF7, 0x9D, 0x64, 0x9D, 0xD2, 0x9E, 0x40, 0x9E, 0xAE, 0x9F, 0x1D, 0x9F, 0x8B, 0x9F, 0xFA, 0xA0, 0x69, 0xA0, 0xD8, 0xA1, 0x47, 0xA1, 0xB6, 0xA2, 0x26, 0xA2, 0x96, 0xA3, 0x06, 0xA3, 0x76, 0xA3, 0xE6, 0xA4, 0x56, 0xA4, 0xC7, 0xA5, 0x38, 0xA5, 0xA9, 0xA6, 0x1A, 0xA6, 0x8B, 0xA6, 0xFD, 0xA7, 0x6E, 0xA7, 0xE0, 0xA8, 0x52, 0xA8, 0xC4, 0xA9, 0x37, 0xA9, 0xA9, 0xAA, 0x1C, 0xAA, 0x8F, 0xAB, 0x02, 0xAB, 0x75, 0xAB, 0xE9, 0xAC, 0x5C, 0xAC, 0xD0, 0xAD, 0x44, 0xAD, 0xB8, 0xAE, 0x2D, 0xAE, 0xA1, 0xAF, 0x16, 0xAF, 0x8B, 0xB0, 0x00, 0xB0, 0x75, 0xB0, 0xEA, 0xB1, 0x60, 0xB1, 0xD6, 0xB2, 0x4B, 0xB2, 0xC2, 0xB3, 0x38, 0xB3, 0xAE, 0xB4, 0x25, 0xB4, 0x9C, 0xB5, 0x13, 0xB5, 0x8A, 0xB6, 0x01, 0xB6, 0x79, 0xB6, 0xF0, 0xB7, 0x68, 0xB7, 0xE0, 0xB8, 0x59, 0xB8, 0xD1, 0xB9, 0x4A, 0xB9, 0xC2, 0xBA, 0x3B, 0xBA, 0xB5, 0xBB, 0x2E, 0xBB, 0xA7, 0xBC, 0x21, 0xBC, 0x9B, 0xBD, 0x15, 0xBD, 0x8F, 0xBE, 0x0A, 0xBE, 0x84, 0xBE, 0xFF, 0xBF, 0x7A, 0xBF, 0xF5, 0xC0, 0x70, 0xC0, 0xEC, 0xC1, 0x67, 0xC1, 0xE3, 0xC2, 0x5F, 0xC2, 0xDB, 0xC3, 0x58, 0xC3, 0xD4, 0xC4, 0x51, 0xC4, 0xCE, 0xC5, 0x4B, 0xC5, 0xC8, 0xC6, 0x46, 0xC6, 0xC3, 0xC7, 0x41, 0xC7, 0xBF, 0xC8, 0x3D, 0xC8, 0xBC, 0xC9, 0x3A, 0xC9, 0xB9, 0xCA, 0x38, 0xCA, 0xB7, 0xCB, 0x36, 0xCB, 0xB6, 0xCC, 0x35, 0xCC, 0xB5, 0xCD, 0x35, 0xCD, 0xB5, 0xCE, 0x36, 0xCE, 0xB6, 0xCF, 0x37, 0xCF, 0xB8, 0xD0, 0x39, 0xD0, 0xBA, 0xD1, 0x3C, 0xD1, 0xBE, 0xD2, 0x3F, 0xD2, 0xC1, 0xD3, 0x44, 0xD3, 0xC6, 0xD4, 0x49, 0xD4, 0xCB, 0xD5, 0x4E, 0xD5, 0xD1, 0xD6, 0x55, 0xD6, 0xD8, 0xD7, 0x5C, 0xD7, 0xE0, 0xD8, 0x64, 0xD8, 0xE8, 0xD9, 0x6C, 0xD9, 0xF1, 0xDA, 0x76, 0xDA, 0xFB, 0xDB, 0x80, 0xDC, 0x05, 0xDC, 0x8A, 0xDD, 0x10, 0xDD, 0x96, 0xDE, 0x1C, 0xDE, 0xA2, 0xDF, 0x29, 0xDF, 0xAF, 0xE0, 0x36, 0xE0, 0xBD, 0xE1, 0x44, 0xE1, 0xCC, 0xE2, 0x53, 0xE2, 0xDB, 0xE3, 0x63, 0xE3, 0xEB, 0xE4, 0x73, 0xE4, 0xFC, 0xE5, 0x84, 0xE6, 0x0D, 0xE6, 0x96, 0xE7, 0x1F, 0xE7, 0xA9, 0xE8, 0x32, 0xE8, 0xBC, 0xE9, 0x46, 0xE9, 0xD0, 0xEA, 0x5B, 0xEA, 0xE5, 0xEB, 0x70, 0xEB, 0xFB, 0xEC, 0x86, 0xED, 0x11, 0xED, 0x9C, 0xEE, 0x28, 0xEE, 0xB4, 0xEF, 0x40, 0xEF, 0xCC, 0xF0, 0x58, 0xF0, 0xE5, 0xF1, 0x72, 0xF1, 0xFF, 0xF2, 0x8C, 0xF3, 0x19, 0xF3, 0xA7, 0xF4, 0x34, 0xF4, 0xC2, 0xF5, 0x50, 0xF5, 0xDE, 0xF6, 0x6D, 0xF6, 0xFB, 0xF7, 0x8A, 0xF8, 0x19, 0xF8, 0xA8, 0xF9, 0x38, 0xF9, 0xC7, 0xFA, 0x57, 0xFA, 0xE7, 0xFB, 0x77, 0xFC, 0x07, 0xFC, 0x98, 0xFD, 0x29, 0xFD, 0xBA, 0xFE, 0x4B, 0xFE, 0xDC, 0xFF, 0x6D, 0xFF, 0xFF, 0x63, 0x75, 0x72, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x23, 0x00, 0x28, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x37, 0x00, 0x3B, 0x00, 0x40, 0x00, 0x45, 0x00, 0x4A, 0x00, 0x4F, 0x00, 0x54, 0x00, 0x59, 0x00, 0x5E, 0x00, 0x63, 0x00, 0x68, 0x00, 0x6D, 0x00, 0x72, 0x00, 0x77, 0x00, 0x7C, 0x00, 0x81, 0x00, 0x86, 0x00, 0x8B, 0x00, 0x90, 0x00, 0x95, 0x00, 0x9A, 0x00, 0x9F, 0x00, 0xA4, 0x00, 0xA9, 0x00, 0xAE, 0x00, 0xB2, 0x00, 0xB7, 0x00, 0xBC, 0x00, 0xC1, 0x00, 0xC6, 0x00, 0xCB, 0x00, 0xD0, 0x00, 0xD5, 0x00, 0xDB, 0x00, 0xE0, 0x00, 0xE5, 0x00, 0xEB, 0x00, 0xF0, 0x00, 0xF6, 0x00, 0xFB, 0x01, 0x01, 0x01, 0x07, 0x01, 0x0D, 0x01, 0x13, 0x01, 0x19, 0x01, 0x1F, 0x01, 0x25, 0x01, 0x2B, 0x01, 0x32, 0x01, 0x38, 0x01, 0x3E, 0x01, 0x45, 0x01, 0x4C, 0x01, 0x52, 0x01, 0x59, 0x01, 0x60, 0x01, 0x67, 0x01, 0x6E, 0x01, 0x75, 0x01, 0x7C, 0x01, 0x83, 0x01, 0x8B, 0x01, 0x92, 0x01, 0x9A, 0x01, 0xA1, 0x01, 0xA9, 0x01, 0xB1, 0x01, 0xB9, 0x01, 0xC1, 0x01, 0xC9, 0x01, 0xD1, 0x01, 0xD9, 0x01, 0xE1, 0x01, 0xE9, 0x01, 0xF2, 0x01, 0xFA, 0x02, 0x03, 0x02, 0x0C, 0x02, 0x14, 0x02, 0x1D, 0x02, 0x26, 0x02, 0x2F, 0x02, 0x38, 0x02, 0x41, 0x02, 0x4B, 0x02, 0x54, 0x02, 0x5D, 0x02, 0x67, 0x02, 0x71, 0x02, 0x7A, 0x02, 0x84, 0x02, 0x8E, 0x02, 0x98, 0x02, 0xA2, 0x02, 0xAC, 0x02, 0xB6, 0x02, 0xC1, 0x02, 0xCB, 0x02, 0xD5, 0x02, 0xE0, 0x02, 0xEB, 0x02, 0xF5, 0x03, 0x00, 0x03, 0x0B, 0x03, 0x16, 0x03, 0x21, 0x03, 0x2D, 0x03, 0x38, 0x03, 0x43, 0x03, 0x4F, 0x03, 0x5A, 0x03, 0x66, 0x03, 0x72, 0x03, 0x7E, 0x03, 0x8A, 0x03, 0x96, 0x03, 0xA2, 0x03, 0xAE, 0x03, 0xBA, 0x03, 0xC7, 0x03, 0xD3, 0x03, 0xE0, 0x03, 0xEC, 0x03, 0xF9, 0x04, 0x06, 0x04, 0x13, 0x04, 0x20, 0x04, 0x2D, 0x04, 0x3B, 0x04, 0x48, 0x04, 0x55, 0x04, 0x63, 0x04, 0x71, 0x04, 0x7E, 0x04, 0x8C, 0x04, 0x9A, 0x04, 0xA8, 0x04, 0xB6, 0x04, 0xC4, 0x04, 0xD3, 0x04, 0xE1, 0x04, 0xF0, 0x04, 0xFE, 0x05, 0x0D, 0x05, 0x1C, 0x05, 0x2B, 0x05, 0x3A, 0x05, 0x49, 0x05, 0x58, 0x05, 0x67, 0x05, 0x77, 0x05, 0x86, 0x05, 0x96, 0x05, 0xA6, 0x05, 0xB5, 0x05, 0xC5, 0x05, 0xD5, 0x05, 0xE5, 0x05, 0xF6, 0x06, 0x06, 0x06, 0x16, 0x06, 0x27, 0x06, 0x37, 0x06, 0x48, 0x06, 0x59, 0x06, 0x6A, 0x06, 0x7B, 0x06, 0x8C, 0x06, 0x9D, 0x06, 0xAF, 0x06, 0xC0, 0x06, 0xD1, 0x06, 0xE3, 0x06, 0xF5, 0x07, 0x07, 0x07, 0x19, 0x07, 0x2B, 0x07, 0x3D, 0x07, 0x4F, 0x07, 0x61, 0x07, 0x74, 0x07, 0x86, 0x07, 0x99, 0x07, 0xAC, 0x07, 0xBF, 0x07, 0xD2, 0x07, 0xE5, 0x07, 0xF8, 0x08, 0x0B, 0x08, 0x1F, 0x08, 0x32, 0x08, 0x46, 0x08, 0x5A, 0x08, 0x6E, 0x08, 0x82, 0x08, 0x96, 0x08, 0xAA, 0x08, 0xBE, 0x08, 0xD2, 0x08, 0xE7, 0x08, 0xFB, 0x09, 0x10, 0x09, 0x25, 0x09, 0x3A, 0x09, 0x4F, 0x09, 0x64, 0x09, 0x79, 0x09, 0x8F, 0x09, 0xA4, 0x09, 0xBA, 0x09, 0xCF, 0x09, 0xE5, 0x09, 0xFB, 0x0A, 0x11, 0x0A, 0x27, 0x0A, 0x3D, 0x0A, 0x54, 0x0A, 0x6A, 0x0A, 0x81, 0x0A, 0x98, 0x0A, 0xAE, 0x0A, 0xC5, 0x0A, 0xDC, 0x0A, 0xF3, 0x0B, 0x0B, 0x0B, 0x22, 0x0B, 0x39, 0x0B, 0x51, 0x0B, 0x69, 0x0B, 0x80, 0x0B, 0x98, 0x0B, 0xB0, 0x0B, 0xC8, 0x0B, 0xE1, 0x0B, 0xF9, 0x0C, 0x12, 0x0C, 0x2A, 0x0C, 0x43, 0x0C, 0x5C, 0x0C, 0x75, 0x0C, 0x8E, 0x0C, 0xA7, 0x0C, 0xC0, 0x0C, 0xD9, 0x0C, 0xF3, 0x0D, 0x0D, 0x0D, 0x26, 0x0D, 0x40, 0x0D, 0x5A, 0x0D, 0x74, 0x0D, 0x8E, 0x0D, 0xA9, 0x0D, 0xC3, 0x0D, 0xDE, 0x0D, 0xF8, 0x0E, 0x13, 0x0E, 0x2E, 0x0E, 0x49, 0x0E, 0x64, 0x0E, 0x7F, 0x0E, 0x9B, 0x0E, 0xB6, 0x0E, 0xD2, 0x0E, 0xEE, 0x0F, 0x09, 0x0F, 0x25, 0x0F, 0x41, 0x0F, 0x5E, 0x0F, 0x7A, 0x0F, 0x96, 0x0F, 0xB3, 0x0F, 0xCF, 0x0F, 0xEC, 0x10, 0x09, 0x10, 0x26, 0x10, 0x43, 0x10, 0x61, 0x10, 0x7E, 0x10, 0x9B, 0x10, 0xB9, 0x10, 0xD7, 0x10, 0xF5, 0x11, 0x13, 0x11, 0x31, 0x11, 0x4F, 0x11, 0x6D, 0x11, 0x8C, 0x11, 0xAA, 0x11, 0xC9, 0x11, 0xE8, 0x12, 0x07, 0x12, 0x26, 0x12, 0x45, 0x12, 0x64, 0x12, 0x84, 0x12, 0xA3, 0x12, 0xC3, 0x12, 0xE3, 0x13, 0x03, 0x13, 0x23, 0x13, 0x43, 0x13, 0x63, 0x13, 0x83, 0x13, 0xA4, 0x13, 0xC5, 0x13, 0xE5, 0x14, 0x06, 0x14, 0x27, 0x14, 0x49, 0x14, 0x6A, 0x14, 0x8B, 0x14, 0xAD, 0x14, 0xCE, 0x14, 0xF0, 0x15, 0x12, 0x15, 0x34, 0x15, 0x56, 0x15, 0x78, 0x15, 0x9B, 0x15, 0xBD, 0x15, 0xE0, 0x16, 0x03, 0x16, 0x26, 0x16, 0x49, 0x16, 0x6C, 0x16, 0x8F, 0x16, 0xB2, 0x16, 0xD6, 0x16, 0xFA, 0x17, 0x1D, 0x17, 0x41, 0x17, 0x65, 0x17, 0x89, 0x17, 0xAE, 0x17, 0xD2, 0x17, 0xF7, 0x18, 0x1B, 0x18, 0x40, 0x18, 0x65, 0x18, 0x8A, 0x18, 0xAF, 0x18, 0xD5, 0x18, 0xFA, 0x19, 0x20, 0x19, 0x45, 0x19, 0x6B, 0x19, 0x91, 0x19, 0xB7, 0x19, 0xDD, 0x1A, 0x04, 0x1A, 0x2A, 0x1A, 0x51, 0x1A, 0x77, 0x1A, 0x9E, 0x1A, 0xC5, 0x1A, 0xEC, 0x1B, 0x14, 0x1B, 0x3B, 0x1B, 0x63, 0x1B, 0x8A, 0x1B, 0xB2, 0x1B, 0xDA, 0x1C, 0x02, 0x1C, 0x2A, 0x1C, 0x52, 0x1C, 0x7B, 0x1C, 0xA3, 0x1C, 0xCC, 0x1C, 0xF5, 0x1D, 0x1E, 0x1D, 0x47, 0x1D, 0x70, 0x1D, 0x99, 0x1D, 0xC3, 0x1D, 0xEC, 0x1E, 0x16, 0x1E, 0x40, 0x1E, 0x6A, 0x1E, 0x94, 0x1E, 0xBE, 0x1E, 0xE9, 0x1F, 0x13, 0x1F, 0x3E, 0x1F, 0x69, 0x1F, 0x94, 0x1F, 0xBF, 0x1F, 0xEA, 0x20, 0x15, 0x20, 0x41, 0x20, 0x6C, 0x20, 0x98, 0x20, 0xC4, 0x20, 0xF0, 0x21, 0x1C, 0x21, 0x48, 0x21, 0x75, 0x21, 0xA1, 0x21, 0xCE, 0x21, 0xFB, 0x22, 0x27, 0x22, 0x55, 0x22, 0x82, 0x22, 0xAF, 0x22, 0xDD, 0x23, 0x0A, 0x23, 0x38, 0x23, 0x66, 0x23, 0x94, 0x23, 0xC2, 0x23, 0xF0, 0x24, 0x1F, 0x24, 0x4D, 0x24, 0x7C, 0x24, 0xAB, 0x24, 0xDA, 0x25, 0x09, 0x25, 0x38, 0x25, 0x68, 0x25, 0x97, 0x25, 0xC7, 0x25, 0xF7, 0x26, 0x27, 0x26, 0x57, 0x26, 0x87, 0x26, 0xB7, 0x26, 0xE8, 0x27, 0x18, 0x27, 0x49, 0x27, 0x7A, 0x27, 0xAB, 0x27, 0xDC, 0x28, 0x0D, 0x28, 0x3F, 0x28, 0x71, 0x28, 0xA2, 0x28, 0xD4, 0x29, 0x06, 0x29, 0x38, 0x29, 0x6B, 0x29, 0x9D, 0x29, 0xD0, 0x2A, 0x02, 0x2A, 0x35, 0x2A, 0x68, 0x2A, 0x9B, 0x2A, 0xCF, 0x2B, 0x02, 0x2B, 0x36, 0x2B, 0x69, 0x2B, 0x9D, 0x2B, 0xD1, 0x2C, 0x05, 0x2C, 0x39, 0x2C, 0x6E, 0x2C, 0xA2, 0x2C, 0xD7, 0x2D, 0x0C, 0x2D, 0x41, 0x2D, 0x76, 0x2D, 0xAB, 0x2D, 0xE1, 0x2E, 0x16, 0x2E, 0x4C, 0x2E, 0x82, 0x2E, 0xB7, 0x2E, 0xEE, 0x2F, 0x24, 0x2F, 0x5A, 0x2F, 0x91, 0x2F, 0xC7, 0x2F, 0xFE, 0x30, 0x35, 0x30, 0x6C, 0x30, 0xA4, 0x30, 0xDB, 0x31, 0x12, 0x31, 0x4A, 0x31, 0x82, 0x31, 0xBA, 0x31, 0xF2, 0x32, 0x2A, 0x32, 0x63, 0x32, 0x9B, 0x32, 0xD4, 0x33, 0x0D, 0x33, 0x46, 0x33, 0x7F, 0x33, 0xB8, 0x33, 0xF1, 0x34, 0x2B, 0x34, 0x65, 0x34, 0x9E, 0x34, 0xD8, 0x35, 0x13, 0x35, 0x4D, 0x35, 0x87, 0x35, 0xC2, 0x35, 0xFD, 0x36, 0x37, 0x36, 0x72, 0x36, 0xAE, 0x36, 0xE9, 0x37, 0x24, 0x37, 0x60, 0x37, 0x9C, 0x37, 0xD7, 0x38, 0x14, 0x38, 0x50, 0x38, 0x8C, 0x38, 0xC8, 0x39, 0x05, 0x39, 0x42, 0x39, 0x7F, 0x39, 0xBC, 0x39, 0xF9, 0x3A, 0x36, 0x3A, 0x74, 0x3A, 0xB2, 0x3A, 0xEF, 0x3B, 0x2D, 0x3B, 0x6B, 0x3B, 0xAA, 0x3B, 0xE8, 0x3C, 0x27, 0x3C, 0x65, 0x3C, 0xA4, 0x3C, 0xE3, 0x3D, 0x22, 0x3D, 0x61, 0x3D, 0xA1, 0x3D, 0xE0, 0x3E, 0x20, 0x3E, 0x60, 0x3E, 0xA0, 0x3E, 0xE0, 0x3F, 0x21, 0x3F, 0x61, 0x3F, 0xA2, 0x3F, 0xE2, 0x40, 0x23, 0x40, 0x64, 0x40, 0xA6, 0x40, 0xE7, 0x41, 0x29, 0x41, 0x6A, 0x41, 0xAC, 0x41, 0xEE, 0x42, 0x30, 0x42, 0x72, 0x42, 0xB5, 0x42, 0xF7, 0x43, 0x3A, 0x43, 0x7D, 0x43, 0xC0, 0x44, 0x03, 0x44, 0x47, 0x44, 0x8A, 0x44, 0xCE, 0x45, 0x12, 0x45, 0x55, 0x45, 0x9A, 0x45, 0xDE, 0x46, 0x22, 0x46, 0x67, 0x46, 0xAB, 0x46, 0xF0, 0x47, 0x35, 0x47, 0x7B, 0x47, 0xC0, 0x48, 0x05, 0x48, 0x4B, 0x48, 0x91, 0x48, 0xD7, 0x49, 0x1D, 0x49, 0x63, 0x49, 0xA9, 0x49, 0xF0, 0x4A, 0x37, 0x4A, 0x7D, 0x4A, 0xC4, 0x4B, 0x0C, 0x4B, 0x53, 0x4B, 0x9A, 0x4B, 0xE2, 0x4C, 0x2A, 0x4C, 0x72, 0x4C, 0xBA, 0x4D, 0x02, 0x4D, 0x4A, 0x4D, 0x93, 0x4D, 0xDC, 0x4E, 0x25, 0x4E, 0x6E, 0x4E, 0xB7, 0x4F, 0x00, 0x4F, 0x49, 0x4F, 0x93, 0x4F, 0xDD, 0x50, 0x27, 0x50, 0x71, 0x50, 0xBB, 0x51, 0x06, 0x51, 0x50, 0x51, 0x9B, 0x51, 0xE6, 0x52, 0x31, 0x52, 0x7C, 0x52, 0xC7, 0x53, 0x13, 0x53, 0x5F, 0x53, 0xAA, 0x53, 0xF6, 0x54, 0x42, 0x54, 0x8F, 0x54, 0xDB, 0x55, 0x28, 0x55, 0x75, 0x55, 0xC2, 0x56, 0x0F, 0x56, 0x5C, 0x56, 0xA9, 0x56, 0xF7, 0x57, 0x44, 0x57, 0x92, 0x57, 0xE0, 0x58, 0x2F, 0x58, 0x7D, 0x58, 0xCB, 0x59, 0x1A, 0x59, 0x69, 0x59, 0xB8, 0x5A, 0x07, 0x5A, 0x56, 0x5A, 0xA6, 0x5A, 0xF5, 0x5B, 0x45, 0x5B, 0x95, 0x5B, 0xE5, 0x5C, 0x35, 0x5C, 0x86, 0x5C, 0xD6, 0x5D, 0x27, 0x5D, 0x78, 0x5D, 0xC9, 0x5E, 0x1A, 0x5E, 0x6C, 0x5E, 0xBD, 0x5F, 0x0F, 0x5F, 0x61, 0x5F, 0xB3, 0x60, 0x05, 0x60, 0x57, 0x60, 0xAA, 0x60, 0xFC, 0x61, 0x4F, 0x61, 0xA2, 0x61, 0xF5, 0x62, 0x49, 0x62, 0x9C, 0x62, 0xF0, 0x63, 0x43, 0x63, 0x97, 0x63, 0xEB, 0x64, 0x40, 0x64, 0x94, 0x64, 0xE9, 0x65, 0x3D, 0x65, 0x92, 0x65, 0xE7, 0x66, 0x3D, 0x66, 0x92, 0x66, 0xE8, 0x67, 0x3D, 0x67, 0x93, 0x67, 0xE9, 0x68, 0x3F, 0x68, 0x96, 0x68, 0xEC, 0x69, 0x43, 0x69, 0x9A, 0x69, 0xF1, 0x6A, 0x48, 0x6A, 0x9F, 0x6A, 0xF7, 0x6B, 0x4F, 0x6B, 0xA7, 0x6B, 0xFF, 0x6C, 0x57, 0x6C, 0xAF, 0x6D, 0x08, 0x6D, 0x60, 0x6D, 0xB9, 0x6E, 0x12, 0x6E, 0x6B, 0x6E, 0xC4, 0x6F, 0x1E, 0x6F, 0x78, 0x6F, 0xD1, 0x70, 0x2B, 0x70, 0x86, 0x70, 0xE0, 0x71, 0x3A, 0x71, 0x95, 0x71, 0xF0, 0x72, 0x4B, 0x72, 0xA6, 0x73, 0x01, 0x73, 0x5D, 0x73, 0xB8, 0x74, 0x14, 0x74, 0x70, 0x74, 0xCC, 0x75, 0x28, 0x75, 0x85, 0x75, 0xE1, 0x76, 0x3E, 0x76, 0x9B, 0x76, 0xF8, 0x77, 0x56, 0x77, 0xB3, 0x78, 0x11, 0x78, 0x6E, 0x78, 0xCC, 0x79, 0x2A, 0x79, 0x89, 0x79, 0xE7, 0x7A, 0x46, 0x7A, 0xA5, 0x7B, 0x04, 0x7B, 0x63, 0x7B, 0xC2, 0x7C, 0x21, 0x7C, 0x81, 0x7C, 0xE1, 0x7D, 0x41, 0x7D, 0xA1, 0x7E, 0x01, 0x7E, 0x62, 0x7E, 0xC2, 0x7F, 0x23, 0x7F, 0x84, 0x7F, 0xE5, 0x80, 0x47, 0x80, 0xA8, 0x81, 0x0A, 0x81, 0x6B, 0x81, 0xCD, 0x82, 0x30, 0x82, 0x92, 0x82, 0xF4, 0x83, 0x57, 0x83, 0xBA, 0x84, 0x1D, 0x84, 0x80, 0x84, 0xE3, 0x85, 0x47, 0x85, 0xAB, 0x86, 0x0E, 0x86, 0x72, 0x86, 0xD7, 0x87, 0x3B, 0x87, 0x9F, 0x88, 0x04, 0x88, 0x69, 0x88, 0xCE, 0x89, 0x33, 0x89, 0x99, 0x89, 0xFE, 0x8A, 0x64, 0x8A, 0xCA, 0x8B, 0x30, 0x8B, 0x96, 0x8B, 0xFC, 0x8C, 0x63, 0x8C, 0xCA, 0x8D, 0x31, 0x8D, 0x98, 0x8D, 0xFF, 0x8E, 0x66, 0x8E, 0xCE, 0x8F, 0x36, 0x8F, 0x9E, 0x90, 0x06, 0x90, 0x6E, 0x90, 0xD6, 0x91, 0x3F, 0x91, 0xA8, 0x92, 0x11, 0x92, 0x7A, 0x92, 0xE3, 0x93, 0x4D, 0x93, 0xB6, 0x94, 0x20, 0x94, 0x8A, 0x94, 0xF4, 0x95, 0x5F, 0x95, 0xC9, 0x96, 0x34, 0x96, 0x9F, 0x97, 0x0A, 0x97, 0x75, 0x97, 0xE0, 0x98, 0x4C, 0x98, 0xB8, 0x99, 0x24, 0x99, 0x90, 0x99, 0xFC, 0x9A, 0x68, 0x9A, 0xD5, 0x9B, 0x42, 0x9B, 0xAF, 0x9C, 0x1C, 0x9C, 0x89, 0x9C, 0xF7, 0x9D, 0x64, 0x9D, 0xD2, 0x9E, 0x40, 0x9E, 0xAE, 0x9F, 0x1D, 0x9F, 0x8B, 0x9F, 0xFA, 0xA0, 0x69, 0xA0, 0xD8, 0xA1, 0x47, 0xA1, 0xB6, 0xA2, 0x26, 0xA2, 0x96, 0xA3, 0x06, 0xA3, 0x76, 0xA3, 0xE6, 0xA4, 0x56, 0xA4, 0xC7, 0xA5, 0x38, 0xA5, 0xA9, 0xA6, 0x1A, 0xA6, 0x8B, 0xA6, 0xFD, 0xA7, 0x6E, 0xA7, 0xE0, 0xA8, 0x52, 0xA8, 0xC4, 0xA9, 0x37, 0xA9, 0xA9, 0xAA, 0x1C, 0xAA, 0x8F, 0xAB, 0x02, 0xAB, 0x75, 0xAB, 0xE9, 0xAC, 0x5C, 0xAC, 0xD0, 0xAD, 0x44, 0xAD, 0xB8, 0xAE, 0x2D, 0xAE, 0xA1, 0xAF, 0x16, 0xAF, 0x8B, 0xB0, 0x00, 0xB0, 0x75, 0xB0, 0xEA, 0xB1, 0x60, 0xB1, 0xD6, 0xB2, 0x4B, 0xB2, 0xC2, 0xB3, 0x38, 0xB3, 0xAE, 0xB4, 0x25, 0xB4, 0x9C, 0xB5, 0x13, 0xB5, 0x8A, 0xB6, 0x01, 0xB6, 0x79, 0xB6, 0xF0, 0xB7, 0x68, 0xB7, 0xE0, 0xB8, 0x59, 0xB8, 0xD1, 0xB9, 0x4A, 0xB9, 0xC2, 0xBA, 0x3B, 0xBA, 0xB5, 0xBB, 0x2E, 0xBB, 0xA7, 0xBC, 0x21, 0xBC, 0x9B, 0xBD, 0x15, 0xBD, 0x8F, 0xBE, 0x0A, 0xBE, 0x84, 0xBE, 0xFF, 0xBF, 0x7A, 0xBF, 0xF5, 0xC0, 0x70, 0xC0, 0xEC, 0xC1, 0x67, 0xC1, 0xE3, 0xC2, 0x5F, 0xC2, 0xDB, 0xC3, 0x58, 0xC3, 0xD4, 0xC4, 0x51, 0xC4, 0xCE, 0xC5, 0x4B, 0xC5, 0xC8, 0xC6, 0x46, 0xC6, 0xC3, 0xC7, 0x41, 0xC7, 0xBF, 0xC8, 0x3D, 0xC8, 0xBC, 0xC9, 0x3A, 0xC9, 0xB9, 0xCA, 0x38, 0xCA, 0xB7, 0xCB, 0x36, 0xCB, 0xB6, 0xCC, 0x35, 0xCC, 0xB5, 0xCD, 0x35, 0xCD, 0xB5, 0xCE, 0x36, 0xCE, 0xB6, 0xCF, 0x37, 0xCF, 0xB8, 0xD0, 0x39, 0xD0, 0xBA, 0xD1, 0x3C, 0xD1, 0xBE, 0xD2, 0x3F, 0xD2, 0xC1, 0xD3, 0x44, 0xD3, 0xC6, 0xD4, 0x49, 0xD4, 0xCB, 0xD5, 0x4E, 0xD5, 0xD1, 0xD6, 0x55, 0xD6, 0xD8, 0xD7, 0x5C, 0xD7, 0xE0, 0xD8, 0x64, 0xD8, 0xE8, 0xD9, 0x6C, 0xD9, 0xF1, 0xDA, 0x76, 0xDA, 0xFB, 0xDB, 0x80, 0xDC, 0x05, 0xDC, 0x8A, 0xDD, 0x10, 0xDD, 0x96, 0xDE, 0x1C, 0xDE, 0xA2, 0xDF, 0x29, 0xDF, 0xAF, 0xE0, 0x36, 0xE0, 0xBD, 0xE1, 0x44, 0xE1, 0xCC, 0xE2, 0x53, 0xE2, 0xDB, 0xE3, 0x63, 0xE3, 0xEB, 0xE4, 0x73, 0xE4, 0xFC, 0xE5, 0x84, 0xE6, 0x0D, 0xE6, 0x96, 0xE7, 0x1F, 0xE7, 0xA9, 0xE8, 0x32, 0xE8, 0xBC, 0xE9, 0x46, 0xE9, 0xD0, 0xEA, 0x5B, 0xEA, 0xE5, 0xEB, 0x70, 0xEB, 0xFB, 0xEC, 0x86, 0xED, 0x11, 0xED, 0x9C, 0xEE, 0x28, 0xEE, 0xB4, 0xEF, 0x40, 0xEF, 0xCC, 0xF0, 0x58, 0xF0, 0xE5, 0xF1, 0x72, 0xF1, 0xFF, 0xF2, 0x8C, 0xF3, 0x19, 0xF3, 0xA7, 0xF4, 0x34, 0xF4, 0xC2, 0xF5, 0x50, 0xF5, 0xDE, 0xF6, 0x6D, 0xF6, 0xFB, 0xF7, 0x8A, 0xF8, 0x19, 0xF8, 0xA8, 0xF9, 0x38, 0xF9, 0xC7, 0xFA, 0x57, 0xFA, 0xE7, 0xFB, 0x77, 0xFC, 0x07, 0xFC, 0x98, 0xFD, 0x29, 0xFD, 0xBA, 0xFE, 0x4B, 0xFE, 0xDC, 0xFF, 0x6D, 0xFF, 0xFF, 0x63, 0x75, 0x72, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x23, 0x00, 0x28, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x37, 0x00, 0x3B, 0x00, 0x40, 0x00, 0x45, 0x00, 0x4A, 0x00, 0x4F, 0x00, 0x54, 0x00, 0x59, 0x00, 0x5E, 0x00, 0x63, 0x00, 0x68, 0x00, 0x6D, 0x00, 0x72, 0x00, 0x77, 0x00, 0x7C, 0x00, 0x81, 0x00, 0x86, 0x00, 0x8B, 0x00, 0x90, 0x00, 0x95, 0x00, 0x9A, 0x00, 0x9F, 0x00, 0xA4, 0x00, 0xA9, 0x00, 0xAE, 0x00, 0xB2, 0x00, 0xB7, 0x00, 0xBC, 0x00, 0xC1, 0x00, 0xC6, 0x00, 0xCB, 0x00, 0xD0, 0x00, 0xD5, 0x00, 0xDB, 0x00, 0xE0, 0x00, 0xE5, 0x00, 0xEB, 0x00, 0xF0, 0x00, 0xF6, 0x00, 0xFB, 0x01, 0x01, 0x01, 0x07, 0x01, 0x0D, 0x01, 0x13, 0x01, 0x19, 0x01, 0x1F, 0x01, 0x25, 0x01, 0x2B, 0x01, 0x32, 0x01, 0x38, 0x01, 0x3E, 0x01, 0x45, 0x01, 0x4C, 0x01, 0x52, 0x01, 0x59, 0x01, 0x60, 0x01, 0x67, 0x01, 0x6E, 0x01, 0x75, 0x01, 0x7C, 0x01, 0x83, 0x01, 0x8B, 0x01, 0x92, 0x01, 0x9A, 0x01, 0xA1, 0x01, 0xA9, 0x01, 0xB1, 0x01, 0xB9, 0x01, 0xC1, 0x01, 0xC9, 0x01, 0xD1, 0x01, 0xD9, 0x01, 0xE1, 0x01, 0xE9, 0x01, 0xF2, 0x01, 0xFA, 0x02, 0x03, 0x02, 0x0C, 0x02, 0x14, 0x02, 0x1D, 0x02, 0x26, 0x02, 0x2F, 0x02, 0x38, 0x02, 0x41, 0x02, 0x4B, 0x02, 0x54, 0x02, 0x5D, 0x02, 0x67, 0x02, 0x71, 0x02, 0x7A, 0x02, 0x84, 0x02, 0x8E, 0x02, 0x98, 0x02, 0xA2, 0x02, 0xAC, 0x02, 0xB6, 0x02, 0xC1, 0x02, 0xCB, 0x02, 0xD5, 0x02, 0xE0, 0x02, 0xEB, 0x02, 0xF5, 0x03, 0x00, 0x03, 0x0B, 0x03, 0x16, 0x03, 0x21, 0x03, 0x2D, 0x03, 0x38, 0x03, 0x43, 0x03, 0x4F, 0x03, 0x5A, 0x03, 0x66, 0x03, 0x72, 0x03, 0x7E, 0x03, 0x8A, 0x03, 0x96, 0x03, 0xA2, 0x03, 0xAE, 0x03, 0xBA, 0x03, 0xC7, 0x03, 0xD3, 0x03, 0xE0, 0x03, 0xEC, 0x03, 0xF9, 0x04, 0x06, 0x04, 0x13, 0x04, 0x20, 0x04, 0x2D, 0x04, 0x3B, 0x04, 0x48, 0x04, 0x55, 0x04, 0x63, 0x04, 0x71, 0x04, 0x7E, 0x04, 0x8C, 0x04, 0x9A, 0x04, 0xA8, 0x04, 0xB6, 0x04, 0xC4, 0x04, 0xD3, 0x04, 0xE1, 0x04, 0xF0, 0x04, 0xFE, 0x05, 0x0D, 0x05, 0x1C, 0x05, 0x2B, 0x05, 0x3A, 0x05, 0x49, 0x05, 0x58, 0x05, 0x67, 0x05, 0x77, 0x05, 0x86, 0x05, 0x96, 0x05, 0xA6, 0x05, 0xB5, 0x05, 0xC5, 0x05, 0xD5, 0x05, 0xE5, 0x05, 0xF6, 0x06, 0x06, 0x06, 0x16, 0x06, 0x27, 0x06, 0x37, 0x06, 0x48, 0x06, 0x59, 0x06, 0x6A, 0x06, 0x7B, 0x06, 0x8C, 0x06, 0x9D, 0x06, 0xAF, 0x06, 0xC0, 0x06, 0xD1, 0x06, 0xE3, 0x06, 0xF5, 0x07, 0x07, 0x07, 0x19, 0x07, 0x2B, 0x07, 0x3D, 0x07, 0x4F, 0x07, 0x61, 0x07, 0x74, 0x07, 0x86, 0x07, 0x99, 0x07, 0xAC, 0x07, 0xBF, 0x07, 0xD2, 0x07, 0xE5, 0x07, 0xF8, 0x08, 0x0B, 0x08, 0x1F, 0x08, 0x32, 0x08, 0x46, 0x08, 0x5A, 0x08, 0x6E, 0x08, 0x82, 0x08, 0x96, 0x08, 0xAA, 0x08, 0xBE, 0x08, 0xD2, 0x08, 0xE7, 0x08, 0xFB, 0x09, 0x10, 0x09, 0x25, 0x09, 0x3A, 0x09, 0x4F, 0x09, 0x64, 0x09, 0x79, 0x09, 0x8F, 0x09, 0xA4, 0x09, 0xBA, 0x09, 0xCF, 0x09, 0xE5, 0x09, 0xFB, 0x0A, 0x11, 0x0A, 0x27, 0x0A, 0x3D, 0x0A, 0x54, 0x0A, 0x6A, 0x0A, 0x81, 0x0A, 0x98, 0x0A, 0xAE, 0x0A, 0xC5, 0x0A, 0xDC, 0x0A, 0xF3, 0x0B, 0x0B, 0x0B, 0x22, 0x0B, 0x39, 0x0B, 0x51, 0x0B, 0x69, 0x0B, 0x80, 0x0B, 0x98, 0x0B, 0xB0, 0x0B, 0xC8, 0x0B, 0xE1, 0x0B, 0xF9, 0x0C, 0x12, 0x0C, 0x2A, 0x0C, 0x43, 0x0C, 0x5C, 0x0C, 0x75, 0x0C, 0x8E, 0x0C, 0xA7, 0x0C, 0xC0, 0x0C, 0xD9, 0x0C, 0xF3, 0x0D, 0x0D, 0x0D, 0x26, 0x0D, 0x40, 0x0D, 0x5A, 0x0D, 0x74, 0x0D, 0x8E, 0x0D, 0xA9, 0x0D, 0xC3, 0x0D, 0xDE, 0x0D, 0xF8, 0x0E, 0x13, 0x0E, 0x2E, 0x0E, 0x49, 0x0E, 0x64, 0x0E, 0x7F, 0x0E, 0x9B, 0x0E, 0xB6, 0x0E, 0xD2, 0x0E, 0xEE, 0x0F, 0x09, 0x0F, 0x25, 0x0F, 0x41, 0x0F, 0x5E, 0x0F, 0x7A, 0x0F, 0x96, 0x0F, 0xB3, 0x0F, 0xCF, 0x0F, 0xEC, 0x10, 0x09, 0x10, 0x26, 0x10, 0x43, 0x10, 0x61, 0x10, 0x7E, 0x10, 0x9B, 0x10, 0xB9, 0x10, 0xD7, 0x10, 0xF5, 0x11, 0x13, 0x11, 0x31, 0x11, 0x4F, 0x11, 0x6D, 0x11, 0x8C, 0x11, 0xAA, 0x11, 0xC9, 0x11, 0xE8, 0x12, 0x07, 0x12, 0x26, 0x12, 0x45, 0x12, 0x64, 0x12, 0x84, 0x12, 0xA3, 0x12, 0xC3, 0x12, 0xE3, 0x13, 0x03, 0x13, 0x23, 0x13, 0x43, 0x13, 0x63, 0x13, 0x83, 0x13, 0xA4, 0x13, 0xC5, 0x13, 0xE5, 0x14, 0x06, 0x14, 0x27, 0x14, 0x49, 0x14, 0x6A, 0x14, 0x8B, 0x14, 0xAD, 0x14, 0xCE, 0x14, 0xF0, 0x15, 0x12, 0x15, 0x34, 0x15, 0x56, 0x15, 0x78, 0x15, 0x9B, 0x15, 0xBD, 0x15, 0xE0, 0x16, 0x03, 0x16, 0x26, 0x16, 0x49, 0x16, 0x6C, 0x16, 0x8F, 0x16, 0xB2, 0x16, 0xD6, 0x16, 0xFA, 0x17, 0x1D, 0x17, 0x41, 0x17, 0x65, 0x17, 0x89, 0x17, 0xAE, 0x17, 0xD2, 0x17, 0xF7, 0x18, 0x1B, 0x18, 0x40, 0x18, 0x65, 0x18, 0x8A, 0x18, 0xAF, 0x18, 0xD5, 0x18, 0xFA, 0x19, 0x20, 0x19, 0x45, 0x19, 0x6B, 0x19, 0x91, 0x19, 0xB7, 0x19, 0xDD, 0x1A, 0x04, 0x1A, 0x2A, 0x1A, 0x51, 0x1A, 0x77, 0x1A, 0x9E, 0x1A, 0xC5, 0x1A, 0xEC, 0x1B, 0x14, 0x1B, 0x3B, 0x1B, 0x63, 0x1B, 0x8A, 0x1B, 0xB2, 0x1B, 0xDA, 0x1C, 0x02, 0x1C, 0x2A, 0x1C, 0x52, 0x1C, 0x7B, 0x1C, 0xA3, 0x1C, 0xCC, 0x1C, 0xF5, 0x1D, 0x1E, 0x1D, 0x47, 0x1D, 0x70, 0x1D, 0x99, 0x1D, 0xC3, 0x1D, 0xEC, 0x1E, 0x16, 0x1E, 0x40, 0x1E, 0x6A, 0x1E, 0x94, 0x1E, 0xBE, 0x1E, 0xE9, 0x1F, 0x13, 0x1F, 0x3E, 0x1F, 0x69, 0x1F, 0x94, 0x1F, 0xBF, 0x1F, 0xEA, 0x20, 0x15, 0x20, 0x41, 0x20, 0x6C, 0x20, 0x98, 0x20, 0xC4, 0x20, 0xF0, 0x21, 0x1C, 0x21, 0x48, 0x21, 0x75, 0x21, 0xA1, 0x21, 0xCE, 0x21, 0xFB, 0x22, 0x27, 0x22, 0x55, 0x22, 0x82, 0x22, 0xAF, 0x22, 0xDD, 0x23, 0x0A, 0x23, 0x38, 0x23, 0x66, 0x23, 0x94, 0x23, 0xC2, 0x23, 0xF0, 0x24, 0x1F, 0x24, 0x4D, 0x24, 0x7C, 0x24, 0xAB, 0x24, 0xDA, 0x25, 0x09, 0x25, 0x38, 0x25, 0x68, 0x25, 0x97, 0x25, 0xC7, 0x25, 0xF7, 0x26, 0x27, 0x26, 0x57, 0x26, 0x87, 0x26, 0xB7, 0x26, 0xE8, 0x27, 0x18, 0x27, 0x49, 0x27, 0x7A, 0x27, 0xAB, 0x27, 0xDC, 0x28, 0x0D, 0x28, 0x3F, 0x28, 0x71, 0x28, 0xA2, 0x28, 0xD4, 0x29, 0x06, 0x29, 0x38, 0x29, 0x6B, 0x29, 0x9D, 0x29, 0xD0, 0x2A, 0x02, 0x2A, 0x35, 0x2A, 0x68, 0x2A, 0x9B, 0x2A, 0xCF, 0x2B, 0x02, 0x2B, 0x36, 0x2B, 0x69, 0x2B, 0x9D, 0x2B, 0xD1, 0x2C, 0x05, 0x2C, 0x39, 0x2C, 0x6E, 0x2C, 0xA2, 0x2C, 0xD7, 0x2D, 0x0C, 0x2D, 0x41, 0x2D, 0x76, 0x2D, 0xAB, 0x2D, 0xE1, 0x2E, 0x16, 0x2E, 0x4C, 0x2E, 0x82, 0x2E, 0xB7, 0x2E, 0xEE, 0x2F, 0x24, 0x2F, 0x5A, 0x2F, 0x91, 0x2F, 0xC7, 0x2F, 0xFE, 0x30, 0x35, 0x30, 0x6C, 0x30, 0xA4, 0x30, 0xDB, 0x31, 0x12, 0x31, 0x4A, 0x31, 0x82, 0x31, 0xBA, 0x31, 0xF2, 0x32, 0x2A, 0x32, 0x63, 0x32, 0x9B, 0x32, 0xD4, 0x33, 0x0D, 0x33, 0x46, 0x33, 0x7F, 0x33, 0xB8, 0x33, 0xF1, 0x34, 0x2B, 0x34, 0x65, 0x34, 0x9E, 0x34, 0xD8, 0x35, 0x13, 0x35, 0x4D, 0x35, 0x87, 0x35, 0xC2, 0x35, 0xFD, 0x36, 0x37, 0x36, 0x72, 0x36, 0xAE, 0x36, 0xE9, 0x37, 0x24, 0x37, 0x60, 0x37, 0x9C, 0x37, 0xD7, 0x38, 0x14, 0x38, 0x50, 0x38, 0x8C, 0x38, 0xC8, 0x39, 0x05, 0x39, 0x42, 0x39, 0x7F, 0x39, 0xBC, 0x39, 0xF9, 0x3A, 0x36, 0x3A, 0x74, 0x3A, 0xB2, 0x3A, 0xEF, 0x3B, 0x2D, 0x3B, 0x6B, 0x3B, 0xAA, 0x3B, 0xE8, 0x3C, 0x27, 0x3C, 0x65, 0x3C, 0xA4, 0x3C, 0xE3, 0x3D, 0x22, 0x3D, 0x61, 0x3D, 0xA1, 0x3D, 0xE0, 0x3E, 0x20, 0x3E, 0x60, 0x3E, 0xA0, 0x3E, 0xE0, 0x3F, 0x21, 0x3F, 0x61, 0x3F, 0xA2, 0x3F, 0xE2, 0x40, 0x23, 0x40, 0x64, 0x40, 0xA6, 0x40, 0xE7, 0x41, 0x29, 0x41, 0x6A, 0x41, 0xAC, 0x41, 0xEE, 0x42, 0x30, 0x42, 0x72, 0x42, 0xB5, 0x42, 0xF7, 0x43, 0x3A, 0x43, 0x7D, 0x43, 0xC0, 0x44, 0x03, 0x44, 0x47, 0x44, 0x8A, 0x44, 0xCE, 0x45, 0x12, 0x45, 0x55, 0x45, 0x9A, 0x45, 0xDE, 0x46, 0x22, 0x46, 0x67, 0x46, 0xAB, 0x46, 0xF0, 0x47, 0x35, 0x47, 0x7B, 0x47, 0xC0, 0x48, 0x05, 0x48, 0x4B, 0x48, 0x91, 0x48, 0xD7, 0x49, 0x1D, 0x49, 0x63, 0x49, 0xA9, 0x49, 0xF0, 0x4A, 0x37, 0x4A, 0x7D, 0x4A, 0xC4, 0x4B, 0x0C, 0x4B, 0x53, 0x4B, 0x9A, 0x4B, 0xE2, 0x4C, 0x2A, 0x4C, 0x72, 0x4C, 0xBA, 0x4D, 0x02, 0x4D, 0x4A, 0x4D, 0x93, 0x4D, 0xDC, 0x4E, 0x25, 0x4E, 0x6E, 0x4E, 0xB7, 0x4F, 0x00, 0x4F, 0x49, 0x4F, 0x93, 0x4F, 0xDD, 0x50, 0x27, 0x50, 0x71, 0x50, 0xBB, 0x51, 0x06, 0x51, 0x50, 0x51, 0x9B, 0x51, 0xE6, 0x52, 0x31, 0x52, 0x7C, 0x52, 0xC7, 0x53, 0x13, 0x53, 0x5F, 0x53, 0xAA, 0x53, 0xF6, 0x54, 0x42, 0x54, 0x8F, 0x54, 0xDB, 0x55, 0x28, 0x55, 0x75, 0x55, 0xC2, 0x56, 0x0F, 0x56, 0x5C, 0x56, 0xA9, 0x56, 0xF7, 0x57, 0x44, 0x57, 0x92, 0x57, 0xE0, 0x58, 0x2F, 0x58, 0x7D, 0x58, 0xCB, 0x59, 0x1A, 0x59, 0x69, 0x59, 0xB8, 0x5A, 0x07, 0x5A, 0x56, 0x5A, 0xA6, 0x5A, 0xF5, 0x5B, 0x45, 0x5B, 0x95, 0x5B, 0xE5, 0x5C, 0x35, 0x5C, 0x86, 0x5C, 0xD6, 0x5D, 0x27, 0x5D, 0x78, 0x5D, 0xC9, 0x5E, 0x1A, 0x5E, 0x6C, 0x5E, 0xBD, 0x5F, 0x0F, 0x5F, 0x61, 0x5F, 0xB3, 0x60, 0x05, 0x60, 0x57, 0x60, 0xAA, 0x60, 0xFC, 0x61, 0x4F, 0x61, 0xA2, 0x61, 0xF5, 0x62, 0x49, 0x62, 0x9C, 0x62, 0xF0, 0x63, 0x43, 0x63, 0x97, 0x63, 0xEB, 0x64, 0x40, 0x64, 0x94, 0x64, 0xE9, 0x65, 0x3D, 0x65, 0x92, 0x65, 0xE7, 0x66, 0x3D, 0x66, 0x92, 0x66, 0xE8, 0x67, 0x3D, 0x67, 0x93, 0x67, 0xE9, 0x68, 0x3F, 0x68, 0x96, 0x68, 0xEC, 0x69, 0x43, 0x69, 0x9A, 0x69, 0xF1, 0x6A, 0x48, 0x6A, 0x9F, 0x6A, 0xF7, 0x6B, 0x4F, 0x6B, 0xA7, 0x6B, 0xFF, 0x6C, 0x57, 0x6C, 0xAF, 0x6D, 0x08, 0x6D, 0x60, 0x6D, 0xB9, 0x6E, 0x12, 0x6E, 0x6B, 0x6E, 0xC4, 0x6F, 0x1E, 0x6F, 0x78, 0x6F, 0xD1, 0x70, 0x2B, 0x70, 0x86, 0x70, 0xE0, 0x71, 0x3A, 0x71, 0x95, 0x71, 0xF0, 0x72, 0x4B, 0x72, 0xA6, 0x73, 0x01, 0x73, 0x5D, 0x73, 0xB8, 0x74, 0x14, 0x74, 0x70, 0x74, 0xCC, 0x75, 0x28, 0x75, 0x85, 0x75, 0xE1, 0x76, 0x3E, 0x76, 0x9B, 0x76, 0xF8, 0x77, 0x56, 0x77, 0xB3, 0x78, 0x11, 0x78, 0x6E, 0x78, 0xCC, 0x79, 0x2A, 0x79, 0x89, 0x79, 0xE7, 0x7A, 0x46, 0x7A, 0xA5, 0x7B, 0x04, 0x7B, 0x63, 0x7B, 0xC2, 0x7C, 0x21, 0x7C, 0x81, 0x7C, 0xE1, 0x7D, 0x41, 0x7D, 0xA1, 0x7E, 0x01, 0x7E, 0x62, 0x7E, 0xC2, 0x7F, 0x23, 0x7F, 0x84, 0x7F, 0xE5, 0x80, 0x47, 0x80, 0xA8, 0x81, 0x0A, 0x81, 0x6B, 0x81, 0xCD, 0x82, 0x30, 0x82, 0x92, 0x82, 0xF4, 0x83, 0x57, 0x83, 0xBA, 0x84, 0x1D, 0x84, 0x80, 0x84, 0xE3, 0x85, 0x47, 0x85, 0xAB, 0x86, 0x0E, 0x86, 0x72, 0x86, 0xD7, 0x87, 0x3B, 0x87, 0x9F, 0x88, 0x04, 0x88, 0x69, 0x88, 0xCE, 0x89, 0x33, 0x89, 0x99, 0x89, 0xFE, 0x8A, 0x64, 0x8A, 0xCA, 0x8B, 0x30, 0x8B, 0x96, 0x8B, 0xFC, 0x8C, 0x63, 0x8C, 0xCA, 0x8D, 0x31, 0x8D, 0x98, 0x8D, 0xFF, 0x8E, 0x66, 0x8E, 0xCE, 0x8F, 0x36, 0x8F, 0x9E, 0x90, 0x06, 0x90, 0x6E, 0x90, 0xD6, 0x91, 0x3F, 0x91, 0xA8, 0x92, 0x11, 0x92, 0x7A, 0x92, 0xE3, 0x93, 0x4D, 0x93, 0xB6, 0x94, 0x20, 0x94, 0x8A, 0x94, 0xF4, 0x95, 0x5F, 0x95, 0xC9, 0x96, 0x34, 0x96, 0x9F, 0x97, 0x0A, 0x97, 0x75, 0x97, 0xE0, 0x98, 0x4C, 0x98, 0xB8, 0x99, 0x24, 0x99, 0x90, 0x99, 0xFC, 0x9A, 0x68, 0x9A, 0xD5, 0x9B, 0x42, 0x9B, 0xAF, 0x9C, 0x1C, 0x9C, 0x89, 0x9C, 0xF7, 0x9D, 0x64, 0x9D, 0xD2, 0x9E, 0x40, 0x9E, 0xAE, 0x9F, 0x1D, 0x9F, 0x8B, 0x9F, 0xFA, 0xA0, 0x69, 0xA0, 0xD8, 0xA1, 0x47, 0xA1, 0xB6, 0xA2, 0x26, 0xA2, 0x96, 0xA3, 0x06, 0xA3, 0x76, 0xA3, 0xE6, 0xA4, 0x56, 0xA4, 0xC7, 0xA5, 0x38, 0xA5, 0xA9, 0xA6, 0x1A, 0xA6, 0x8B, 0xA6, 0xFD, 0xA7, 0x6E, 0xA7, 0xE0, 0xA8, 0x52, 0xA8, 0xC4, 0xA9, 0x37, 0xA9, 0xA9, 0xAA, 0x1C, 0xAA, 0x8F, 0xAB, 0x02, 0xAB, 0x75, 0xAB, 0xE9, 0xAC, 0x5C, 0xAC, 0xD0, 0xAD, 0x44, 0xAD, 0xB8, 0xAE, 0x2D, 0xAE, 0xA1, 0xAF, 0x16, 0xAF, 0x8B, 0xB0, 0x00, 0xB0, 0x75, 0xB0, 0xEA, 0xB1, 0x60, 0xB1, 0xD6, 0xB2, 0x4B, 0xB2, 0xC2, 0xB3, 0x38, 0xB3, 0xAE, 0xB4, 0x25, 0xB4, 0x9C, 0xB5, 0x13, 0xB5, 0x8A, 0xB6, 0x01, 0xB6, 0x79, 0xB6, 0xF0, 0xB7, 0x68, 0xB7, 0xE0, 0xB8, 0x59, 0xB8, 0xD1, 0xB9, 0x4A, 0xB9, 0xC2, 0xBA, 0x3B, 0xBA, 0xB5, 0xBB, 0x2E, 0xBB, 0xA7, 0xBC, 0x21, 0xBC, 0x9B, 0xBD, 0x15, 0xBD, 0x8F, 0xBE, 0x0A, 0xBE, 0x84, 0xBE, 0xFF, 0xBF, 0x7A, 0xBF, 0xF5, 0xC0, 0x70, 0xC0, 0xEC, 0xC1, 0x67, 0xC1, 0xE3, 0xC2, 0x5F, 0xC2, 0xDB, 0xC3, 0x58, 0xC3, 0xD4, 0xC4, 0x51, 0xC4, 0xCE, 0xC5, 0x4B, 0xC5, 0xC8, 0xC6, 0x46, 0xC6, 0xC3, 0xC7, 0x41, 0xC7, 0xBF, 0xC8, 0x3D, 0xC8, 0xBC, 0xC9, 0x3A, 0xC9, 0xB9, 0xCA, 0x38, 0xCA, 0xB7, 0xCB, 0x36, 0xCB, 0xB6, 0xCC, 0x35, 0xCC, 0xB5, 0xCD, 0x35, 0xCD, 0xB5, 0xCE, 0x36, 0xCE, 0xB6, 0xCF, 0x37, 0xCF, 0xB8, 0xD0, 0x39, 0xD0, 0xBA, 0xD1, 0x3C, 0xD1, 0xBE, 0xD2, 0x3F, 0xD2, 0xC1, 0xD3, 0x44, 0xD3, 0xC6, 0xD4, 0x49, 0xD4, 0xCB, 0xD5, 0x4E, 0xD5, 0xD1, 0xD6, 0x55, 0xD6, 0xD8, 0xD7, 0x5C, 0xD7, 0xE0, 0xD8, 0x64, 0xD8, 0xE8, 0xD9, 0x6C, 0xD9, 0xF1, 0xDA, 0x76, 0xDA, 0xFB, 0xDB, 0x80, 0xDC, 0x05, 0xDC, 0x8A, 0xDD, 0x10, 0xDD, 0x96, 0xDE, 0x1C, 0xDE, 0xA2, 0xDF, 0x29, 0xDF, 0xAF, 0xE0, 0x36, 0xE0, 0xBD, 0xE1, 0x44, 0xE1, 0xCC, 0xE2, 0x53, 0xE2, 0xDB, 0xE3, 0x63, 0xE3, 0xEB, 0xE4, 0x73, 0xE4, 0xFC, 0xE5, 0x84, 0xE6, 0x0D, 0xE6, 0x96, 0xE7, 0x1F, 0xE7, 0xA9, 0xE8, 0x32, 0xE8, 0xBC, 0xE9, 0x46, 0xE9, 0xD0, 0xEA, 0x5B, 0xEA, 0xE5, 0xEB, 0x70, 0xEB, 0xFB, 0xEC, 0x86, 0xED, 0x11, 0xED, 0x9C, 0xEE, 0x28, 0xEE, 0xB4, 0xEF, 0x40, 0xEF, 0xCC, 0xF0, 0x58, 0xF0, 0xE5, 0xF1, 0x72, 0xF1, 0xFF, 0xF2, 0x8C, 0xF3, 0x19, 0xF3, 0xA7, 0xF4, 0x34, 0xF4, 0xC2, 0xF5, 0x50, 0xF5, 0xDE, 0xF6, 0x6D, 0xF6, 0xFB, 0xF7, 0x8A, 0xF8, 0x19, 0xF8, 0xA8, 0xF9, 0x38, 0xF9, 0xC7, 0xFA, 0x57, 0xFA, 0xE7, 0xFB, 0x77, 0xFC, 0x07, 0xFC, 0x98, 0xFD, 0x29, 0xFD, 0xBA, 0xFE, 0x4B, 0xFE, 0xDC, 0xFF, 0x6D, 0xFF, 0xFF, 0x63, 0x68, 0x72, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xD7, 0x00, 0x00, 0x54, 0x7B, 0x00, 0x00, 0x4C, 0xCD, 0x00, 0x00, 0x99, 0x9A, 0x00, 0x00, 0x26, 0x66, 0x00, 0x00, 0x0F, 0x5C, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x6F, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x20, 0x66, 0x72, 0x65, 0x65, 0x6C, 0x79, 0x00, 0x0A, } }; VipsProfileFallback *vips__profile_fallback_table[] = { &vips__profile_fallback_cmyk, &vips__profile_fallback_sRGB, NULL }; libvips-8.9.1/libvips/colour/profiles.h000066400000000000000000000004441361153320700201530ustar00rootroot00000000000000/* The fallback profiles, coded as a set of uchar arrays, see wrap-profiles.sh */ #include typedef struct _VipsProfileFallback { const char *name; size_t length; const unsigned char data[]; } VipsProfileFallback; extern VipsProfileFallback *vips__profile_fallback_table[]; libvips-8.9.1/libvips/colour/profiles/000077500000000000000000000000001361153320700200005ustar00rootroot00000000000000libvips-8.9.1/libvips/colour/profiles/Makefile.am000066400000000000000000000000451361153320700220330ustar00rootroot00000000000000EXTRA_DIST = \ cmyk.icm \ sRGB.icm libvips-8.9.1/libvips/colour/profiles/cmyk.icm000066400000000000000000035261541361153320700214550ustar00rootroot00000000000000largl prtrCMYKLab  (5acspMSFT-argldesc8icprtgwtpt bkpt clrt4A2B1A2B0A2B2B2A1ѼB2A0ѼB2A2xLѼgamtJ.targx 3DevDx 3CIEDx 3descChemical prooftextCreated by Graeme W. Gill. Released into the public domain. No Warranty, Use at your own risk.XYZ QXYZ $:clrtCyanx[7KMagenta#͒|Yellow|&Black%o{mft2 Z gt(5BN[h  t ' 3 ? K W cn z,7BMX cmx*4?IS] L !!T!!""[""# #b##$'$h$$%-%o%%&4&v&&':'|''(A(())G))* *M**++R++,,W,,--]--. .a../%/f//0)0j001-1n11212r22343u33484x445:5{556=6}667?7788A8899B99::D::;;E;;<>E>>??D??@@=@w@@A%A_AAB BFBBBC,CfCCDDLDDDE2EkEEFFPFFFG5GnGGHHRHHHI6IoIIJJRJJJK5KnKKLLPLLLM2MjMMNNLNNNO-OeOOP PEP}PPQ%Q]QQRR=RuRRSSTSSST2TjTTUUHUUUV&V]VVWW:WrWWXXNXXXY+YbYYZZ>ZuZZ[[Q[[[\-\d\\] ]@]w]]^^S^^^_._e__` `H```a9avaab+bgbbccYccddJddde;exeef,fiffggZgghhJhhhi;iwiij+jgjjkkXkkl lHlllm9mummn)nfnnooVoop pGpppq7qtqqr(rdrrssUsst tEtttu6uruuv&vcvvwwSwwxxDxxxy4ypyyz$z`zz{{Q{{||A|}||}2}n}}~"~^~~Nƀ?|3p'dރXӄMDžB7t,j"`ۉVъMȋD;y3q+i#aސZבTВMʓ GĔB<{8v3r/n,k)h&f$d"b!a `XΡ D0kXϤ E3n \ӧJ8s&b٪Qɫ@|0l[ӮKî;w*fޱVβ E5q%`صPȶ?{/jZѹ I8s&bڼQȽ?{.iX Bz#\=u®VÏ7oĨPň1iơIǁǹ*bȚ Bzɲ"Zʒ:r˪R̊2jͣK΃λ+cϛ C|д$\є>O>>??R??@@W@@AAaAAB'BjBBC0CrCCD9D{DDEAEEFFJFFGGRGGHHYHHIIaIIJ&JhJJK.KoKKL4LvLLM;M}MNNBNNOOHOOP PNPPQQTQQRRZRRSS_SST#TdTTU(UiUUV-VnVVW1WrWWX5XvXXY9YzYYZ=Z~Z[[@[[\\D\\]]G]]^ ^I^^_ _L__``S``aacaab0btbbcAccddSdde!eeeef3fxfggFgghhZhhi)iniij=jjk kRkkl"lgllm7m|mnnMnnoocoop3pypqqJqqrrarrs2sxsttJttuubuuv4vzvwwMwwxxfxxy9yyz zRzz{%{l{{|@||}}Z}}~.~u~J׀\܁]ނ_ a#c%f)j,m1r5v:{?ŒEȍ KώR֏Yݐa'j0r:|Dɕ NԖYߗ"e.q;~šHϛVݜ!e0t@ȟ PؠP3lޢO3lߤQä6oTǧ9sY̩?y%_ӫ F-gۭN­6pX̰@z(bײK4nW̵@{)dطL5oW˺?y&`ԼG.h۾N¾5nJ|FxBt§ >pâ9kĝ4fŘ.`ƒ)[Ǎǿ#UȆȸNɀɲGyʫ@rˤ9k̜1c͔)[Όξ!RσϵI{Ь@qѣ6hҙ-^ӏ"TԅԶIzի >o֠3dו(Y؊ػM~ٯBrڣ6fۗ)Z܋ܻM~ݮ@pޡ2cߓ6| O#i<U'm?W(n?V'l< R!f6{J],q? Qc0uBRc/s> M\'j5xDR`*n8{FS`*n 8 {  E  Q  ^ ( k 4wA MY"e.q:}FQ]&i1t<HS^&h1s 5 p !"!]!!""J"""#7#r##$#$^$$%%K%%%&7&r&&'#'^''((J((()6)q))*"*]**++H+++,4,o,,--Z--. .E.../1/l//00W0011B1}112.2i2233T3344@4{445+5f5566R6677=7x778(8c8899N999:::t::;%;_;;<>Z>>? ?D???@0@m@@A#A`AABBSBBCCECCCD7DtDDE)EfEEFFWFFG GIGGGH:HvHHI*IgIIJJWJJK KGKKKL7LsLLM'McMMNNRNNOOAO}OOP0PlPPQQZQQR RHRRRS6SrSST$T`TTUUMUUUV:VuVVW(WcWWXXQXXYY?YzYYZ-ZiZZ[[X[[\ \G\\\]6]r]]^&^b^^__R__``F``aaBaaab?b~bbc;c{ccd9dxdde6eueef4fsffg2gqggh0hphhi/ioiij.jnjjk.knkkl.lnllm/mommn0nqnno2oroop4puppq7qxqqr:r{rrs>ssttBttuuGuuv vLvvwwRwwxxXxxyy^yyz#zezz{*{l{{|2|t||}:}|}~~B~~ KπNˁ GÂ@~9x3r.l)h%d!`߉]܊[ڋZٌYٍYَYڏZې\ޑ_"c&g+l0r7y>˜Fʙ OԚXݛ c+m6yBȟ NՠTѡMʢGģA;z6u1p-l*i'f$c!`߬]ۭY׮TүO̰ JDZD={6t/m'e\طSθ IĹ?}5r)g[սOȾB5q+o9}GŠSÖ_Ģ(kŮ3vƸ>ǀHȊQɓZʜ!c˥)k̭1s͵9{ν@ςGЉ NяTҖZӛ`ԡ$eէ)j֬.oױ3tص8yٺ<}ھ@ہD܅G݈ Kދ NߎZ3| T-uN&nFe<[2z P&nDa6~ S(oD_3zN"h<V)oBZ-sE\.tGa4zN!g: R%k=  U ' m ?  V ( m >U&k< R"h8}Mb1wFZ)n= Q e3xF  H !&!^!!""<"t""##Q###$/$f$$% %D%{%%&!&X&&&'5'm''((I((()&)]))**:*q**++M+++,),`,,--<-s--..O.../*/a//00<0s0011N1112)2`2233:3q3344K4445%5\556676m6677H7778$8[888969m99::I:::;&;];;<<:,>c>>? ?A?x??@@V@@@A4AkAABBIBBBC&C]CCDD:DqDDEENEEEF+FbFFGG?GvGGHHRHHHI.IeIIJ JAJxJJKKTKKKL/LfLLM MAMxMMNNSNNNO.OdOOPP?PuPPQQOQQQR)R`RRSS9SpSSTTITTTU#UZUUUV5VlVVWWHWWWX%X]XXYY;YrYYZZRZZZ[2[j[[\\K\\\],]e]]^^H^^^_+_d__``C`w``aaHa}aabbObbbc"cWcccd+d`ddde3eheeff=frffggFg{gghhPhhhi%i[iiij0jfjjkkj€Frʁ"Nz҂+W܄5a?lŅJwІ*V݈ 6cCpʉ$Q~؋3`Cp̌'Uߎ ;iŎ"P~ې 8gŐ"Qޒ rۢDyKQ"V&Z¦*^ŧ-`Ȩ/bɩ0cʪ0cʫ0cɬ.aǭ,^î(Z"TM~Duس :k̳.^ QBrѷ1aN~ܹ :iǹ%T߻|'{}ю~}YVm5jgB.ih~"%}I|h}}~͍/gCF-%~|6J||}ΕE~gZMCAx.2Q%1u{@b{ϭ | 6[|0}蕃g~ȎtDE.ʁ%Y{^3x{߷TH{||+(}V{K\0- h|,'|;$f | І:؂ uҀYxc @z ؄fЖ]Nw5~'|R v{tȜ݌zH|f<N 5SC&}} 0L{ѪkڜĚǘ?GxFdGtyMʇg5,&;}L{۪Rѥ*査w Lqb/KG4)&1} 8p{Ĩ R[>sv-abi`LӐ?4ڄr&~P ʆ{hNtș墈a.Lq=5څ']~!{Lԟ/s䙺a+J5'K"P|2R||{T~!Bzp y_kDyI˗z&2nz'|jy"+yϝûʂ2մ ~o}^|ItE|u2 {&"z zd<۲}rcnCf\qbG%2(@}%~{rtz|rl٣[Ʌ.H7V1~$y1|59{"g1C̱|Mɑk.lZG3;1荙)$S |{0؜={/1ojZ FG<1q_l$~} {(ȪZSzꞺj#2)ZBGj2/v%. }p+{ױͱ!zTEi{X~G쎊2&@} ]{=3ycYhW ֚aDQx3 &~W!{wI}jsZ{p,zdb)y=T|xCIqy4/Cy^$uyH+y7ƾrM}c|[T{VC{=..z#.ycyƚ:څpq!bS7HB}-ۑ{"Oz zh{O4p0aI)QUxA6-}J!{'fhz94jpbZ`ͫQfGA_-Ð~!{s)zHXo`#]P4 A|N$.$#"5h{zFðoٚR_9.Q͏AO.ď#3`|W>zP ·I|n.J^PǢzhAO/?^>$n|ˈQz\8"~7Ql`TO\>q/k;%ċZ}l!wz釆B|yziLy\}x:LRxr<x,ǔx"xɊ3xqx_h̽]}6\3{lMyz<šzJ*y IJy؊xՅ@x6?hؼ| \H]Lܪj~ vv޵wdz ~yV38zHe|oB"~5.?f%́ =u*І̱v4|w#x豮zUHc|3XA~\.& c]u=˵vvz>w0Bx0zKa|? 1.,&r*Cxz5xzG{'V|cÂ}@ۂp}-|:$΃.{ٿʂfOցǂxc끧)@V%~,}>$Y|YVǁ!İǀUŁꆳc'@z,e,~`$[}xc9ᘊ/e4a퀐?^,sq$%~דh)|~O~ma@6,Z$U~uԺc~ڬ~k~~}~З`P?І,!$~=U~~M20~|~^_6%>倨 ,$Á~w~ɀ~Wf}巗}̮e{+~^f~>h%,% - p~$ʪ}!}a1z}֪ ]|~ϝ>,Ł׃\%rf7w*ynzX{5z{^%|>?|,|$/{˸'\ w:ڈˀu!~z$̀$^lp> }+|#ȃ|YҌ̼W ԈyFy؅9g^&K=+>a}#mE|=ژ[ᥗx \؃=;Y+ -~#O}Yǿ좻وLcˆ@uwŐ\N<*q#R }ɊwȇԧУɡoIvmJ[IW(n;+[V$p&~dHxI x֟z zr֋5{VZ{<5N{+{#τ{r1bÈPr%XՈQ~;J}C*k|Q#Ec{0 ٯUZ3*bquXׁ:~)ᄨ}""„.|YԕJCĆao0 VJ:X)}"y|Vޚbъo>V=]9DžT)\t~"b|˹?̐b9םɄhOn 1uUT80Z)r"e$|ظwIJ𪁏ߖw0 Km,oT^=8C)j"-|QU֏ܵǖ[ncl5T&8)WQi"߄}&aȩ9T:{jև_Ru헰8)8#p}s9w ux)%yPzkzT[z9di{!* [{#zz0Va~‘~A~lj~>Sa}83|)4{"7{hܑ+L~mi҂RƋ8*~2(|!{Я/iiv`f}Ց3h@SE[8(S}:!|z4&>|ڐhy"Q7j|'}!q|#w0ڍ퓨S{4@fӍ!AP^^_6nY1'~=!v|t{څ4Qрu&B} E{i%vݛ{tq; 5_KsvP3&}n Q{~3ہup _ZYݳ ݭ/yaNFjqOY gFĔ~1|@${>z $@wҥajޅfX'hFq1}$?X{†zʑlȫ퐕vХNhXpE֓0U$-|$jzْԱQ 4=vfȟ(WAEG0Ox$ |ц]zґ;&хkՠu=/tewgVE֊Z0$q |=`zŏp%u@~eWUD 0ڌ$}ItzЏd,tre8ŠpTeC20&%>} zXwz̹wlw_vPwM?x'-Yx#yLy8 }@{,Q|/lgz_zzMPԢz@\z-y"8yy~΃zIgkk^$~O֢}?ښ|,{!zTz(yʊy[Ljf]y{N\?7aA,@|c! zAyベ+xֶ j]PN,>Ԙȁ, J}!{HoyܼxfpjՐt\vNq >cd,/~!Y{^GyѼ(x5iw[N5]?#|,̎"x{=yQwŵhխtZצFMv >Ή-OЁ2#|$_zͻޮEwhYK[ dLΟjH=ė-$ |z.|x%s~vvcںKvWduIv:v*w G^xUVx{|q3{scxz!V{yIWx:Zx(uxIx׉=xzyooc*!Vl}4H6| 9{2(0yy0ȉx{oԿdb&VkuGc9 @}'{(yWx{Ҏnᾣ0bz(UІGʦ׃)90'Q|8݋yxy애n/Bap UrvHu 9J(}};z-YPxy2n̼әaε;:UHD؊9.)0Y~`z.xxWn@ԟQaU.HEQ:DH)Sl!'{ oTy1wJĚlm6TaT&pr擡uJzw\7^{zm>}- ݂% LmΌp er=Ptxw60\yy=}^-Q&bpFM!s.iu&w}yn_€3{0>?{, {R$1g{0;||M}|*u}}I@~B}|c~}_}>b}+|V# {sz{R|`꒠}z4~^a*=΀+Y}p#ǁ|y<rzYc{)8|Ox}j]S~='+~v#߁~}OXxyYz&F{jw|}]}>̃?+ǀU$d}wxh}y~ zv{d\d}=G+΀Հ$5^}svow=xzRu{m2[}<e+Ѐ$ek~ vw>x7~y©tO{Z-|<{C+ׁ$~U1vfwRxWyd+szǦ.Y|o<$+{+w$ց~IpJWsuMwuyYg#z;{I*.z#҃HzϾy {;|G[|uI}%[#}kgt*UZ0";ՂW~*}#-|R#ܯނQGމŕXȁ;/*VQ}#2r|»ӂ#5ڗځ(q\ڍX.:ǂY*?4~#Gc}kAQq*֚;A^o׀FuW2:v8*8!E#X^})B"u58֟1nFU݀W:aP*-#i\}RnD)9g6mymUR9ځ2N*%#zZ}5Zg߼S*m'EiTØj9 @*5x#X}ӑq|rΗ،-tlBvpo[YxU[xzm9z)̈́Rz##z3zxҧz({J݈{mt|bUˆ|9|2){"ǃ{I Ѥ/܀lfā!U 9k[})^||"|{ٯ/+F΋ْ"5$kBT9))M}="`|+./j:`M:~LjCduSp8k)9}"Z|PJq{}&%h QԄG7)u~g"S|hWLYS^|х2gLLP7t(T"o@| ۯCn |Qf.P7%N(6"Y.|9lFʈnތ ze݄ O݃^7"X(E"X|Цqrt{4NvgkxfQry~7z@(jzp"Jzfx皥yinzx{,e͌{Pjr{7 {(K!{("vzŖ|N~jwd㋁O6c}.({!΄>{bjsǒj:v㆞dK̄P_7~(5|!%{(=֎ˎvCc(NЈ56h(0}!ۄ!{4PrC*,tɌtb Mmu5с'τ}!{8ې&$=sԋka M *5$'Nq~+!n{͞Дms`Li?V4]9' V~!J{ޞÒÒ 0r._K] 4ȉݘᦀy&iÑYfGL1󇔃%y|} 5{si.Rz/0jCGX2mF&;12%\v} V{j3qbrs:t9d{uPTʘvwBw/x$y1yҊr_wavxsHxod뜸xU6yCݒQy/y$JzOz k}׀$}r蠘}od}fT;]}=C|z/H{>$mzz>9~.r3]dś+TC )/|#:{ ޅz`>A}4R2p6^6cŇSBE.}#{vЅzm@s}MBnО܏yaҚT?S>A.r9#{Ņpzf &{XGmpY`aޒzRoB%.֊'#|8ƅ_zS {0m`2_YQqΒ Aҏ.#|TzFy /md_P!ᕢ?.R#ㆹ|jLzBz_q*oճrf@ys[sL*t~cy,Oz$bzmsʺ puԥsxvWyxxz\{${B=}{v+{~$*y{jjmCno^q΀ʏtFviw Yz~~<}x}K+ik|$B|5)iOsm5p`g^s}tvgYy<}r+Y0}#|gי$kd#osrspu#Zx=3|Ɂ+ ~$ }&;gjˠnXq rtWgxd=~|+~`$>}ge_i誽Lmepr t6Vw=,|Ld+~A$~}?ezISi(nl1UpHCrsX3w\<|+%I}eàqhHalPJ|oŬqsDW wz;{l,p%Ҁ~RbygykUzo9{sVu|uY}xO<y+z$zFLv=sjvwu y w:z,xt{zZ}F{<d{_*{>#M{*tbud)wP։xrzX|~;@~}G*i|\#w{xrPtLOu$Qw݆py҄W|u:~E*u0}Q#m|zpprytŏvFoy:W{bp:~OD*z~ #w|ȷ1oؠl2qLs˜vsnx?@V*z׊:~L*~#|nڬ Aqs,uamwUMzQ:\}؅*#€}*nv=pXŖr=tڣlw'Uy⓭9}*w$ }gnt o㹄*qɱځtVlqv¡Ty79}g*8$m} hQHl"Np ڀrmruT xY:ny*cZy#yrat”~wjxpngyV z:;{:)z# 6zҬ}~,}~i}~~-m~d~oT p~$9})|"ׁ{|ڡ|a|nU}Sk}̓Rk~8j~)Z|"|zJ"{#xs{mr~D|3xj}S~Z8')g@}"|Ryޠqzz\|p{`h|WNQ}^8.y)O-~C"|vxmyz2n|?zךg_{PX}j8 )R~"|w92p&"} {NoU(yAϦPjE|Yu(Gm2L% ~! E{OZj~]mVw6HohrXR#t\E v2{xR%vYys܄`yǘuq2#rwth~vX?uwF|x1y%Nz :z3A;xzu>zfW\{\W{F2{1z%sz LzyWMہÁCśeV?E;~q2|K%ф{% zqO@^r\eqЅUDu^2t}%儨{ z6~ȒBqf_dq6U4D ˄1I%w| pzX}$\pǕHcɑTDFC0J$ȄP|u⃸zߡ}Kpib2T /Ca/{$56|pz`|Rr#Ϣc˜jSB.G‚#0|-z{xjuJDliۜos^瘓qPɔksV?ŏu.$w#yC y}tptr%jsm^tPkv\@2w-쉓x#Pyyny{wD|-{D#jz`݄yy=q;fb0c[SMׁ=ʍ-|#Sz焔zy1qelPZ3@M=zr,{}"{{yvGGo[Qc x,$-"}{oU`yvp!dLYSLwr=,T3"[a{ Dyv""p`5eY8˗K;},?)"PU{'yoְjfk]nSdoGq9)s)4v׈xb߅yn'oflpy]'qSsTG,!t9u)Yw xyk߮UueѪIvM[-vQ}DwtF3wx9xy)n"x $y8yl*|dѩi|}Z;|QP-d{E{8ܓAz) y y_Nylc `ZYPEE2#7r}A(o{ SyTylBdl>ZWE^PV;D_6'( Q|҇#yN`y jo bȧ_Y#'OΝ2HDƆ7(N}Rنz9K4xifjb"WF&|2{[#oIyMxjxcx\"R4H4=6`1&}# zxhxaGڎZׯWR8H>1 ̀G$ { gyw_ܲYmBfQdH󣖋0>O2q$i|͈y8ʅw_XUYb?OQFǣ]8z*~S9$Ӏ} Ks_ytdWv2jewnmqyPrBUp{^u9;~w+ y#ڀyJplrotpqvTtl#x5~C'߀T}8"6{~p5'~'?}!4{ҝojq}w2}^oS~.K]~b~IsC~4(|'@{!{| |RB|=| m}![}ÃI~4:q~8'G|(!{EhzÐz?z{jDly|\|I:~<3-' o|!{Tysfyz`z4k{KZ|5jH}3e灮&P};!4{UyynVy8znizZ{HP}>3B&n/}! {Wxxyyjoj"z9Y{V3HI|܏l46e& ~- {^ԋXd7gykjVnYqGEt27vwZ%u#x y~Tk݄Lmxtpcj\yrY^u FŃv1(x%y QzWs?tu,vhrx4Xփy(E(y1nzU%zn zv|U%}+u}~gc~+W}D}51{&{!zsVejV;d{^|aQ9|bA{/{$ăz 3zN|ujH]ɁO@"~0){|l$z )'zZ{Ssi]^i]GÆO'Ä@/`+}$l{]zLy݋ד1r/f\χ6iOԅ?A.'1#L{@z,xgpЉØfC [ϒN셬W>,烺="4{zxfn쟊ețO[$L|=l+ŃÁD"D&|-ys3el g|b_4jXmwL9p#=s<,v!>xv%yNrjkQulb=1nX&pKtr=#u++ۇw!xyzq0pi#rasWOuK'v<ۋ_w+;x"Pyd9yp5owhy_yU~:zYIaWz;݊z,Jz"Äyyn"kgȖ*^_WNV'~Hw~; y}D,3{S"ׄz4Ƀym#@gg 6]i~6T H; +|"ozyj:B5c K[SI L:*9}!fz胣yujdϓ[(SFTGڊ9X=#)~!Lz_yDksc"#.ZYՖcQ9RGݍ7_z)_ ˄:zqye$eO^ fnUiL kBn5q'muΆwxdi]YjTm/KkoMA'qY6LZs'uvOx6„xc7nk[죸pIT*qK"Ns?A|^t6ev'֊wʆexqxauvZHv;SI{vJ} w@ޕTxQ5̏x'x @xxau|Yq|nP|>I<| @x{5X{'qkyy0Kxa\XY7pPԜځH\逯?{*y4}',$zyqx^{XbkQH +>ԓq4#-&ψ|ayAWx^X|8PmPH (>Ԓ3jU'&Lj|By +xg^٠8XBPtH<>Pb1ێJ($}R[yx:Z d1SeKhCj:2l0Vo"tY=w8xqZ@h{SZiJvkBuCm9 o/r#Jsu[wixJ[^mSɬenJtoBA)q49ԝr/tQ"vSwͅxYHs!RmsJ9tBuO:ƛu/cv!Čw<wfwXCxPy'HyAy:Ty60x"V(x|xwX Png,H?~@}9tY|/^n{H"yvMxZmwWcaQEIA-ς8/z.7}#z`xwVqPV)H8`@3{7s*%-6r#IJ{(Ux˄wW`P(ĐsH1@uƊ'6S-3E#Њ{mxw_hAZsj^mgdxhp9ij*s=nLRVvrz8{Hv*~8x)$@xy#ceUCgSi %k l~nohVqryPuu7zx)~yV#_y_r@cshv*{GlvofypdwxO+ty7z^z ) }zt"Pz]-}a9}fx~,yj}fo}3Pht|7^z{(}{O"<O{[q_d8z3iPf|mȃNs`k7Zy}(}{!Y{(oYΜ[^%bygdlLVr5yr'}||!q{EWBJ\;ĉ0awf]gd kLqq4y,'}}m!{zVƗz[8`jFv^ezc/jʕLq 5Nx߄'}~.",{nVZb`uebGjKq6x_(g}~"{Ǫn\oa6{qeyQsj)evnNxr7h|v)n0x#<9y kuf&VmIiom1xrodtrNxu^6|Iw(~y@"yΦmg/pjXr܈mu[vp`vxc6s^wN>wx6b{y(!~zS" z~pd| 3g|~kX|uPn}bcr |Mv2|q6&{s{'~{-! zbuؕeÅ6itm%yapLuo/5c{3}'k~{!s{ 7`ԏŔCdBÄh,tkފ`oK]t;4@z^&~|u!F*{:H_LWb߄ffsynxomr'at'Ru@܀Bw3.ˁ@x$Cy.z~TvAx~&w'm;~zx`~yQ7z<@z`/Mzv$za 'zT{}0~vO|~k;}!~^}P{~o~uA6}0| $ׁz (zr|W{Xt!{[iE{][|>Py}{Ba~/o}${[Â.zj|dz5Oszlh?zݍ[{vO|A}/ .~#{Q2zJy yA}"-uQ#Aa|A݂zx,w^pbfgPZ{9jwLem?"&q,u"-wyvɋCe=oÉge^Ik-Z4n7Lp=s,^v"qx8yguw/m mndpZ[rMt<v[,T6xS"yXقyt"3tplkuc w|XԄx;LVy|al}GV}vI惇|=ق|r.{G#₣zkXz pj_$RTyhIo=W-{|#rzypchmŒ^;T(̈I큤`<䂂,)D}"zvynĂf;^LҐTсnIY8;j'*~!{ӂylԜfS ]ajTV[H2ۍ9|)!h{Ogygi0^cbD[~Pf"PiEl: q*(uH e2wL`xhVdbؓpfYiNlE:o8r)vT ȄxOUy&h`kamHXxo(NepEvs08c[uO)Åxw!XxFyegHr`1FssWd]u'Nr`vCD}w7x**['x!y_K6ydݐoyD_yVǍ>z*N)=zCf{{#7Iz*z6"2y+ydl^^?oUhBLNcC 8}*!{Y!ԃyE'yjaR\3ꇚT7gKLB`G7]M(|\ 郒z,y(a%OUZDSҌ7K؊AۇP5օ~'g},ꃍz'-xa!<[iҔR}K&B35}&L~drzHAxZӢ7_=T͟aPO^dk1o%ڈt {wg x[#cDTڞeM;5hNDk K6vBU8l03}%ÆzZy4x~S%,O88JKqBS9`/${y5x9Q˘^rOۏHIBE0u7z-3$R|f~y6ăyxPn^OKX`Dc>*fZ4j#,nN"VwsvxVO~bpJdCf<_is4lp,Dvo"#ktswDxCO6gdIixD"k <)m5oT+ϒr'!#uaņwQx,O|lIdn Co<'q4җr+Oqt vLgwtBxO>vrit:u!4u,w""_wvRwJx MxGơy.@Rye:; yc3ܕy4,.yD#-Ux8x2/xN3(HYA'j:u~1ߔ|*{+"͉@ymxU؄2wMG{ A=i79Șq1=)O|">MyxRwM:Ez@Z9F91)~c"EzpkxAwUcSSeYh_HtkdaoGjULsoQ5;ytb(T}nwH" x9^^`abYegDuij`mnKs!rY5y[v?'}GxQ"U~y/_Yj]l$bos=gIq_ol-sfK2qu5 xxC'}y_!~yϟVvCZv`8xpeGx^jxJpy4x]z5'&}z8!Az28SNX3GD]ocA3^i ~JJo}4w|&}z ZxW__ivdl:Xj Epe0wy{$~{π>zTYv^hdcJWi$Dp/02xځ2$~|WzT xWu\ٞVgbUWhECo90px%~ } RizpoVp[xzra}k{sfYujDxo0|t%[kw^ }|xl_/mcwogim.5zN$ |%z\[|>^ncb`Fg{R'l@mrÊ/zQ$| ,zdLwNW{+wY]InCwbbxlfXSyk+B${o.~t#rwO 3x}tB_xtcmugaw jRxnxB$zr.~Qu#€[x! :y qhxrkmsn `?uMpQwHrBzt.}w#Dy@Dynqwo~slqot_svAQuw^Ay,xD.}yO#7yZTy|Kkzeumbzkzo{\^q{P^t{@x{.\}]z#̀4ziJiz)ziskin/w]BpOs@Qw4.}(|#6zz,{Zgr'ri͌gblr5[SoY,Nr?xwD-[|~#,1{Hށzxfyrh唿g&kYYnuLr*H~oa,e_t?"([w2ԁxuy{_o{1cfR{fZ|jL|n$=m~q,9u"_Gx1xuy&gn^y j emylYzcoK{r<}Ntf,@wI"0xytkupmvqcwsXyuKvzv@<|w,kx"yځyrt@x9kty bJvyWwzAJfyz={z,.zs#z!߁ypr5isd`GtEUev6IWx1={b},~{"ځzyq+pcgqT^s_YaQ .dHh5?TlD4"pO'".t/wUx]5eWgP jG?l?o3Qr'kvR : xI+y\؉l3V$mNioFچqx>8su3ᄲuu(~w xւyXZrVgsNGu Ev7=w63x(U5x!@yD.ycT'yjUzKMŅJzDz;фZz3Iz( z ! yy@TtlSsLV Aj7m.qqb$Exu|:wHxNiIQOkmCc!lMl?Ŝm9ՙ'o,4p0xr})ȌNt"vwxiCќr?fs86s3t.Ju*Yw(#wȄx@xZD@x?lz69y3yG,x(Bx#LxdxXɃSx0Bo=ܗ#:4S~3}{,]f{&za"!yexB=wAхp;570>g3<.~D(S{!Iy]\xx>w^yMv`S~cZmg`\XkfFHpl;2Ox;r%|vK ~wњ-Y*XH~[\|`0amdf"ZiyjGoo[24wtY%|w& ~xTSdcWlgy\~jtjalXgoFSnr1w!vN%|_x a~x֒OoSpdw)Yrg"_GsVetEm0v1hvxR%S|ax ~y3KCyBPy uVzhf\z/UczODkz0vBz7$|y.ymG̓RMrtTRdZЀTbA.Cj~0v|$0|zV!yEkՀ+K#KsRdYRTt`ņCj-.u~ #M|{_yCq~I q]P)dWvT_ˌ)Bil.]u"|{yΉBA}GRrNVcUnR^@ hӉ-u8"||yݓcOZeWTxrg[ghj;aXImfzCrl/yr$}vBcw_DXr9aH]cudb[gchHfVljDroZ0dy1tY$}w]xIZd&]ftaLiecelU|joDpr0Hxv.$}fxlxۉUn8YpZq^}qcc[s?T8htCo}v`/x8x$G}hx^yAiQx}4Vjxpc[yba/yS0g6yBnjz$/=wy#}yyyN2{So&Y'ax_RXe@Am}.w{#j}z8(y"Kqz-Qp} ,y{9"~z 4y{ S߉qXF f] ZbLhӃ=p",Kyi|"%~zׁyyjRHSpVe[Ya)Llg=o>+yA~`!~z?yxwPnsTaYXh_ӑ>Lf=oR+y !~{IJXyqzNpSqqPX fr1\[6saMug=^yl+}=r"vwxwmPZon]eobWZVqf.Ltijh=(xo+|t/!wx4uiac2mjedim4hXokJrnaY7>d)\ZM`ÑQeRFk9:r*Zz~!zy$owTOhwwXd^w]jSxb%G@z(g$9h|6lt)~r vowntZKgtv]7^puaySyveFxj<8{Hn)r~s vyx.iqqacqd#]zp4}3s'v QWxz4y.^syosXGtpOvUrnGws=yt3|v'x% XxwyMZpwQV`rwNdtx3Fgvxo@Sp\?LrCYt~<w}2{|&.z tyu'ixXlSo"zKqmHD's;uvށ2#zt&{~{}yxWkRmJzp7Cs :uӅ,2yځ &~|orzyWxV6~SQdWK [Dх`:e/k#rmuNwTχYP\%I\` Bd69Ѓh/,m$jsa^vv@x0RńD_M߃bHRve(A%hW8ւKk/Yo$Et8wW3xRfKLIgFBj}?7l7(oc/kr%ev?x?0yRVlL;~mE`Co>qr6Qs2.u?%w~ xijF9ωl4ވn.;ap(ys#Uvςx_FXyC1p%=pq9gq4 }r-Wt:)6v #݃>w 9x^xAzv> w98ww3jw|-x(x~#x !xwx?ƅ|Z/Qv;T_4*Y^.](ScZ"ti6quCw=V9HX4o\}/`*Ze#kvHrnhvsx(<\9Y^4]u`R0s d*׏h~#$mv~ swmx9{aB6kb3d-d/k?h(k!o]tw6x9fm6h2wj5-l9(ьn$UrV" {v \x9wx9єl6#m1>n,pC(r9(St%w[!:xgax9r/5֐s1f't,vt'܊nu~&v$7w!_x{ !_x8x95x2iy?-3x&x0!ɇw" x@ /xc Hzxm93~G4 }1S|-|)uz$ym!+x lxI xZI&\Qw_WVg6b\WgrbEni0,wp#|^u(@~w/T^SIWYYth[^g`bTVegLDdll0urS#{u~Mwc~NH`RUcUt W[ed@\hfSc=lB2kpb.u?tO#{v~=wˆHk,MkoSnT`YogQaLq@kjstE.7tv#m{w~x Cu}Igtwn Pzv_b1WvP_kw>hiw.tux#T|xi{ xG@g~yF~ kM~}_T}XP#]|?g@{-tzo"|{y7xZ=x,CilJvW^R\gE[gMNW捀>d@+r{z<x_IJo~"`xPnbW`e]Rjjc@pj-xjq"}t %vYT{w\Xm_X]`'cbQWhgk@o&l.pwr\"|uwNS_y.WHbfl[eC^`hlOf~l?mo-Evt@"|v wNvj0wDS3k jXl]E]nN^dEq>qlDs},vv<"n|wgxG~JQsuYOqsIiUZto\W[fu{Mbzv>=kw7,vEx"K|xkx|F|sK|whR-|QZ9X{L,`{=[jQ{2,$v)y!}ByiHx{GCErtHeOgY2V:L,_=\ip+kv { }sygxy@$oFs?cMCXTK]n=hq*u}O}z"xw>phnWC`J+UfRC}J'\e<{g{*:u~}qzۀxReMeteR+gh X>ZUj^Mngczq!~(tvD|f`Urbb7YRfd]Yh!bxKlgTt"6Oru*zDw2 0xGHxiVx#aZxnV^UxLcGxuBJiux7px*myx Txxg1S_V́nVg[VMa-~BPg}5o|u(yzgy yje4xdfMMC\nQTWqqI]?eh5o'2zH|>yyix@ggqQaqTVsYLt^XAvcw3yi(}hp'tGvJfnV`2o YVpZ]Lar/b@5tf37xl&}Wr>Bu Aw>e jR^]fk`/TmkcKHof?s8j2wn&:|sv Pxbf e[gh"Sjj)I.mlR>qfn30vsq&|u_w7{x`blZd o QgpSGkkqx=or3uyt'W|Avx3fx`^uRXa1vHOe=vxGiLv>?n0w 3t{w'!| x*6x}x][~X-^[~,Ob?}Gf|=Ll{0=sz%{yH`xXCx[Y3Vw[N`9\Fe^;kZ0s}%{zyxPYUύvU_YzM$^C;d@:jÃ2Zr€8%2{{ɀy)‚x\yP0WRyeT"MynY|Fy^;;{'cT1}ei%pt݁v}ZvV:UvY MBw:]VDx4a:yf60$|Zk$|=qu3w\Xjr]Tns_+LtbCmv!f: x-i/{>n$|~s;vx,WndRp~eLrYh$Bt(j97vmY/zNp$~xu-wxVPk|j}Oml_I1onArMo9?uiqg0Eys$~Kv|x_xTh r5NjsZG?met@pst9su.xv$j~*wxnxT'e{FNgzFljz>mzx8r;z0,xay#}xڀxSxQb삚MeuEh>li5Rqn~"-*w'|J$}yzxbxQO`;LcnFhTr>#lJ5>ptq0uvq~e%}NzpxxMOK SD́W>]75b*'i1 Ap\tȁvMYUEI#EXB\*<|`5 Fe[+j!BquwK}a[dH-}1]A}aS:}d4"~h+m5"ysKuqv`xNJzCalGxzcBC{e:t|7h2}*l+U~p"yt/Xw8xIYwHhAEhx$i?VySk9zfm1|o+\~@r"8vVxxJt&o4D>uo=lwCp7y r50zis)}uL"w`x\pxIq5vDrw*z|$ yށwxłx1AOgwx<(:d*7܄eo2;h?.j(omS$q!0u~x2y,<>k7pl@3hmy/Oo )p%hsr!ā~vx_-y$;q7^s3fs.s($t$ƀiu"w xx7~w6 ~xD2D~x=-a w'w$>w"xa!$x lx86}|58{|1j|{- }z)z$y$-8y::; ;M;;<<]<<=*=n==><>>? ?O??@@b@@A0AtAABBBBCCSCCDDcDDE/EsEEF>FFG GMGGHHZHHI$IgIIJ0JsJJK;K~KLLELLM MOMMNNXNNOO`OOP%PgPPQ,QmQQR1RsRRS6SwSST:T{TTU>U~UVV@VVWWCWWXXDXXYYFYYZZFZZ[[G[[\\G\\]]F]]^^E^^__D__``B``aa@aaab=b|bbc:cyccd7dvdde3eqeef.fmffg)ghggh#hbhhii[iijjTjjkkLkkllClllm9mwmmn/nmnno$obooppVppq qJqqrr=rzrrs/slsst!t^ttuuOuuvv?v{vvw/wjwwxxYxxy yGyyyz5zpzz{"{]{{||I|||}5}o}}~~Z~~ D~.h݁RȂ=x)dڄPƅ=x*f݇TˈC2n"_׋PȌA~3p&cݏWѐKƑ@~6s,j#aݕYՖQΗ KǘD?}:y6u3r1q0p0p0q2s5u8y=~BƦIͧQըYީ c*m5xAȭ Nծ\(k7{HѲZ(m;ŵ P۶ e6|¸Nڹ g:ǻU*qGվe<[2yO—%lôBĉ^ť2yMǔ!gȮ;ɁTʚ'm˳?̅V͜'mβ=ς RЗ!eѪ4xҽFӊWԛ$hլ3wֻBׅ Oؒ[ٞ$gک/q۳8zܼ@݂Gމ NߏRVY[[[YWSN HA9w0n&cXL>{0l!]L:v(cO:u$_H0jQ7pUBIQX`%g,n4v;} B  I  Q  X  _ $f+m2t9z@F MTZ`%g+m1s7y=CI O  T !!Z!!""_""###d##$($i$$%-%n%%&2&s&&'7'x''(<(}())A))**G**+ +L++,,R,,--X--..]../!/c//0'0h001,1m11212r22363w334:4{445>5~566A6677C7788D8899E99::E::;;D;;<>?>>>?D LT\#f-p8zC O[%i3wB Qa-q> Pc1vEZ*o?V(n@X,rDRa,o:~HV!d.r <   I  V c - p 9|FR^'j3v>JU`(j2u<F PY b(k 1 s !9!{!!"A""##I##$$Q$$%%Y%%&&a&&'''i''(.(p(()6)x))*>**++E++, ,L,,--S--..Y..//`//0$0e001)1j112.2o22323s33464w445:5{556=6~677@7788C8899E99::G::; ;I;;< >M>>??N??@@O@@AAOAABBOBBCCNCCD DMDDE EKEEF FHFFGGEGGHHAHHHI=I|IIJ8JwJJK2KqKKL,LjLLM%McMMNN[NNOOSOOP PIPPQQ@Q}QQR5RrRRS*SgSSTT[TTUUNUUVVAV}VVW4WpWWX'XcXXYYWYYZ ZJZZ[[>[{[[\1\n\\]%]b]]^^V^^__K__``?`}``a4aqaab)bgbbcc]ccddSdde eIeeff@f}ffg7guggh.hlhhi&iciijj[jjkkSkkl lLllmmDmmmnBijFȴ J̵ OѶSַX۸^"c(i.o4v;|BſIPX_¡%gé,nİ3uŷ;|ƾBǃIȊOɑVʘ]˟"d̥(jͬ/pβ5wϸ;|оAтF҈ LӍQԓV՘[֜`ס#dؤ&g٨)jڪ,lۭ.nܮ/oݯ/oޯ/o߯/n-m,k*i'f$c!`\XTO JD>}8v1p*h#aYP H?|5s+i!^T I=z2o&bV Imft2@BCDEGH I J L M  N  O  Q RSTVWXY[\]^_ a"b#c$d%f'g ( h !)!i!!"*"k""#,#l##$-$m$$%.%n%%&/&p&&'1'q''(2(r(()3)s))*4*u**+6+v++,7,w,,-8-x--.9.z../;/{//0<0|001=1}112>2223@3344A4455B5566C6677E7788F8899G99::H::; ;J;;< >M>>??O??@@P@@AAQAABBRBBCCTCCDDUDDEEVEEFFWFFGGYGGHHZHHII[IIJJ\JJKK^KKLL_LLM M`MMN!NaNNO"OcOOP#PdPPQ%QeQQR&RfRRS'ShSST(TiTTU*UjUUV+VkVVW,WmWWX-XnXXY/YoYYZ0ZpZZ[1[r[[\2\s\\]4]t]]^5^u^^_6_v__`7`x``a9ayaab:bzbbc;c{ccde~eef?ffgg@gghhAhhiiCiijjDjjkkEkkllFllmmHmmn nInno oJoop pKppq qMqqrrNrrssOssttPttuuRuuvvSvvwwTwwxxUxxyyWyyzzXzz{{Y{{||Z||}}\}}~~]~~^߀_ a"b#c$d%f'g(h)i*k,l-m.n/p0q2r3s4u5v7w8x9z:{<|=}>?ABÝCĞDşFƠGȡHɢ Iʣ Kˤ Lͥ MΦNϧPШQҩRӪSԫUլV׭WخXٯZڰ[ܱ\ݲ]޳_ߴ `!a"b#d%e&f'g(i*j+k,l-n/o0p1q²2só4tĴ5uŵ6vƷ7xǸ9yȹ:zɺ;{ʼ<}˽>~̾?Ϳ@΀AςCЃDфE҅FӇGԈIՉ J֊ K׌ L؍ NَOڏPۑQܒSݓTޔUߖVXYZ[]^_ `!b#c$d%e&g(h)i*j+l-m.n/o0q2r3s4t5v7w8x9y:{<|=}??@@@@AAA  A  B  B  B  B CCCCDDDDEEEEFFFFGG  G !!G!!""H""##H##$$H$$%%H%%& &I&&' 'I''( (I(() )I))* *J**+ +J++, ,J,,- -J--. .K../ /K//0 0K001 1K112 2L223 3L334 4L445 5L556 6M667 7M778 8M889 9M99::N::;;N;;<>O>>??O??@@O@@AAOAABBPBBCCPCCDDPDDEEPEEFFQFFGGQGGHHQHHIIQIIJJRJJKKRKKLLRLLMMRMMNNSNNOOSOOPPSPPQQSQQRRTRRSSTSSTTTTTUUTUUVVUVVWWUWWXXUXXYYUYYZZVZZ[[V[[\\V\\]]V]]^^W^^__W__``W``aaWaabbXbbccXccddXddeeXeeffYffggYgghhYhhiiYiijjZjjkkZkkllZllmmZmmnn[nnoo[oopp[ppqq[qqrr\rrss\sstt\ttuu\uuvv]vvww]wwxx]xxyy]yyzz^zz{{^{{||^||}}^}}~~_~~_߀_߁_߂ ` ` ` `!a!a!a!a"b"b"b"b#c#c#c#c$d$d$d$d%e%e%e%e&f&f&f&f'g'g'g'g(h(h(h(h)i)i)i)i*j*j*j*j+k+k+k+k,l,l,l,l-m-m-m-m.n.n.n.n/o/o/o/o0p°0pð0pİ0pŰ1qƱ1qDZ1qȱ1qɱ2rʲ2r˲2r̲2rͲ3sγ3sϳ3sг3sѳ4tҴ4tӴ4tԴ4tմ5uֵ5u׵5uص5uٵ6vڶ6v۶6vܶ6vݶ7w޷7w߷7w7w8x8x8x8x9y9y9y9y:z:z:z:z;{;{;{;{<|<|<|<|=}=}=}=}>~>~>~>~????@@@@AAA  A  B  B  B  B CCCCDDDDEEEEFFFFGG  G !!G!!""H""##H##$$H$$%%H%%& &I&&' 'I''( (I(() )I))* *J**+ +J++, ,J,,- -J--. .K../ /K//0 0K001 1K112 2L223 3L334 4L445 5L556 6M667 7M778 8M889 9M99::N::;;N;;<>O>>??O??@@O@@AAOAABBPBBCCPCCDDPDDEEPEEFFQFFGGQGGHHQHHIIQIIJJRJJKKRKKLLRLLMMRMMNNSNNOOSOOPPSPPQQSQQRRTRRSSTSSTTTTTUUTUUVVUVVWWUWWXXUXXYYUYYZZVZZ[[V[[\\V\\]]V]]^^W^^__W__``W``aaWaabbXbbccXccddXddeeXeeffYffggYgghhYhhiiYiijjZjjkkZkkllZllmmZmmnn[nnoo[oopp[ppqq[qqrr\rrss\sstt\ttuu\uuvv]vvww]wwxx]xxyy]yyzz^zz{{^{{||^||}}^}}~~_~~_߀_߁_߂ ` ` ` `!a!a!a!a"b"b"b"b#c#c#c#c$d$d$d$d%e%e%e%e&f&f&f&f'g'g'g'g(h(h(h(h)i)i)i)i*j*j*j*j+k+k+k+k,l,l,l,l-m-m-m-m.n.n.n.n/o/o/o/o0p°0pð0pİ0pŰ1qƱ1qDZ1qȱ1qɱ2rʲ2r˲2r̲2rͲ3sγ3sϳ3sг3sѳ4tҴ4tӴ4tԴ4tմ5uֵ5u׵5uص5uٵ6vڶ6v۶6vܶ6vݶ7w޷7w߷7w7w8x8x8x8x9y9y9y9y:z:z:z:z;{;{;{;{<|<|<|<|=}=}=}=}>~>~>~>~??`@2 OdJ@``LI- 1S60G4X;*```f:@4 SEi@``Y<#i'VFX`eMfdnnnwgFXFX `st``^F_2V @\xelmSusvJJ1+`YRibKbK@ [+(i u uğ}\Be*YDYD@~llS?9@nn̄~\s)]` $_s_s_hbCCnOgZܞ<ˀɀmTHp'p'@0`v9^^TQb;K2hK ō &Kx`xy=(']H]D "::nm utlk~˕ @Xd@A`@ P  z[&) V£HRY7l z}sz@ { A d&3v 8PS@-Z q(8 9d\Tb<[oCoY@_+o+I0gE@@%bqqW5@(A t ֣((]Rw(W ݲv*wlHe%e7Xqhzj|jQ5O7`Rdl˔o]p?3qk2e["p5EsV2\O؋abjVc`.=?`#e#^Q7 3DV6^8``Zl@ ="fWo<Saqo=9! E%EV_cFcDmds&7E<^vjAgXT`;b/B\dżkwjPu|rvlIxPNoFq`(_w09<A=P['gsÞrǝ}zuCTsMAH\\%[$emmg\8Jma~٘A~}H&@/7Rc_PD"8͐bz~RVdWG:$vdj W0`sҬs^vQ0bdb0 +)Kljb,oā؋iďs =43:Ŭ͒ /3W >5/t$݌$®܊-xW`$ &X(& ҂RUN)#@u;d~W2r>d8!:(qx@l\<)Z]hys,.=?K; Ź:KHwt"X{v ;,UCezֲy}O)u});Oi 83GX6S=gbUtzr8{yK}w4]Tg \~q4.V dWܗi2҈k1m2`mMJ݁:,+KlRZf8N(`9Ue= 2=EogHK WT@( F`;[`D2 RR H.@MY\'^aN7[n#:-=aF"]^`E!N4A\Pnb`$c_cQmewCfA#_krbQ`X@bAq8U `h:gGrџorTmz{on%{~ST:]#C7 -0@gjgf Kap1=%`۰-灃#2tZUGMbCXqw y {"{h!k&L?[;bu*Mc\`l gdhiEހ7`'\|="RP GRGIiMPium'vQ.,<@CA%u~< -p9qGW0]\a5|N]%_A(2XAQF WXƶZmAN_UA/!"PUuY_dprTe'BJ>@rVD2^``֬`CQi`t|}ZV{p>tnvwV)]PTbb.4cn(jFTWjyS.FT8o <_Q_ k9jĝu{pyIUs/KWwwˏoDFCet2uP}Y}{t}}Lna ;m\&UUFǕ7߼Hz@Ҁ9~LyYQSw*se`].:,Pviʈ+ (Fm_ YqS!ON=^ܛ6_؛&{ 7u|:oq .۹.%KkqԗY\ۋ_:V4K "M i nY-z )@ @|S8di=Iw!%r5xC(h`~< =euy0y<|E6\(>Cx %_OGLM6E@S_fSmʭefha]QA6'-@JXO IkY XX(n-D9@<@vJ`=!~aj''z4h-#R.+S %>+>K>\FAF4*!I_)`~0>Q&2&9:)c'=4I[P^BEU&n:=8$QQ04A޿C(5H,&o&B0cH#b b2d.0\$+B> GRku18FwIԹK+90H@ I)eH__k"emXaV\-:ҒK2BP?QHS.<KiuOjEh!jDok s*[b?8fxQW2X;[3]z2hC8Oh>9G"_(~fc|]݂s*[2`Ҽ_&!_etd$7|G\Tu5YZRX>͆ÈhѢ v frz~}zOx.x.=Ks|Im{$-$0Lky){2NFt,ZMeH>(2;?'8 NW٩S|QKg@N< 23 8_;9rAj^nY*W{~gDˠ6"k'!f&W_}u i&](egg\h j9M²tuvVT UBJ5D B/0?HIHPXWYRg-"ǻQsXUS?4' j Z*4>A<?v&SuM">u>)''}Qg>۾aY T 6%6UTp4p1l1k <)< k6w 3)=Z38;<-'8FO H*'4{ ?-W2;bv?E|D 10DAز- !-E"%0 $#A=FOGtBN,7=$Y 43 !P–3ݿ4 m2'$86\7\_^\d-DM6#*,,A<ڼA#@ $};W'n:c6c&fh<nr7(aS!BWF Jت?MoP= -F]mI5Eh-X= ofjy¬e\2``] ^`D&:WO`t/-eh CF&:W{x7wuYy|tG~0zEGx)~Nz* x+E|{GôN[+=7f9ꆆz,T b?4 P59V xJc QS0۵ki7սIUڵ9~rm|y}w"{unMub/@m`/|KQ0slg#TGhVlX8]Hs]@!Ͼp#F:5FL2@K9=&<l;Vi1mp+iv_iBɞJH"DPBYHg&tANNkVJY۴v$}tlnnmq|i^teidg 5Lw#v*8Vh{C+="r"98u+@GVݴg:yzc}$՝mM~1|~+MQN( <* ⬒A]ɹdS"Ne9L|Er›n df],_S^i}keFt|enbĴ-CZ>5K?c7VN[X Dw<>kC`G8LFv]MTNcHy/BM.@4$L&r*ַ. 1Vhp}[=.!gH syrvUZ31 v\~.'}3`0(:XY}j:XznrܿL~<:SV8x RK k "U-TOwr{۽ Фb/)zAz& v)'(!o#2"iʧMfi234_9hU:E<V@\A}2¨ s (?S'A,>SۚNS)XAZ@[ߨNx6@۠d136ĕ[7%81K=nn7GGGLExXdNwIyzya{ uHph"gx^au_`,[`_Q_e 6FWvsMXQ#_Zi".l-w8ڢV Q.j| 14?o|]qmUQ&nm}zMyU}Bw#t]rglV{~>}{ vh*<$惛ҌH %ï_#<4~*i~`_\7YWQL&NN{Qw<kw9fd)m\S#XW1M DpAn.;;2r-S05v8Bì}UKjTM4*}6 (S+(fիp'#:}ZkPV1 5 /8=oMT%fLs^N|jwIOJy0S~xX.Q}VIx.,Ny>վɸ*K u|(? I5*GIqCp"&T)6ݥT%2Ah" '#%*7V":M8G'=;|A#DʧDW=P70q ̐P#Ћ&' Y4 PV7S6OeLX`cuRWgm&ggjc\B]VOR)R~NSOOp/SLerYznsNWP y!fԌD2@srqnkN)]A}`p`[@0`s(pIshpcBdpb\b~\"AS}`lk g` :mq:RAsVctUxKLMHJFfAH~<1{@y,?fst@;Ox߀?j([(TQϖŎ%5:iw2;ֻ-- $$yl -!w&w5-.6dY<;=0_J#!r쎺ے%L¿ WEc g}ȸT 8%  jZ2EQ4dϡVt4oOjpZ1Gw{w0]k`1Wh P&M*sx׬Ѣv"JZ\S7gћ8 G}?"Ϩ8Cx m͘xX";sew)ٻ M@9`~Ȳ .+ c!I# y$O"D(ӭrm-ߥ/lК.nv/#̊y !s9D). $jQOvNOjRaR\SVS.ONiEI@PEBE@&g?Wbif#AER{tV Hoqwgbc_WI.cnqr|m}<XI|,jU3`bGbUcPrcwNZKBGWW U 2quNYfJ7pyV`KSp/|Bgh9&z5h3o1u*|w)iz+f3 *PkkqxÆ_vHj99kb) g t$}d2| y zɱyanmcqy`Q7FL)Uac$__䤖r!e7:n,q |Ոha0,Љ"dcPp]ra0!j5d`i2Զoo{?>`72` F%Ix2 ͏+4Ϧhΐ&`!3hf<$ #1}>Ҏ#]2z0ӅRgǗ"Ç&/+t oP+*cNwon!Gbwе!7;@i-N̏O||y~ѓ$y=jDX}AS߿BLm@dE9fU"S$@-?(D:O]SZ`94RoqGmi;a \Z]R"R&Nˎ52O|WiYeRoBLe MWXBY=Y/ʚ:Wq9E9BA\A @=J5RM3z8YfeP{eAzJJ2^Xi'7ʚ$K"{KmkfXv#:,3PxZdfMO2W eɔ/d2u:{N{Px[eGfCPIjhúOUs^%ƮDptQpz*ZgeQO>_ũ̅`xXWrӏː{N[Nk'cT 96%`0fDEYOzLbC 1=%NEO2N{,)O޷*PB(B(%1z0 .4b&C5*e4FgWTJCOd-yq yKx|=y y! sU hWT y)&wB~c5HYFU>lnzlIpz|x7vA)vBc`I]V01rMLlnIQ vB)dJ`Vi nLzэڜ=ѬbgJc|WV5cm}A^\vBre #*_YYԭZ;mrpX$ŭ TItŃW^ncb _>SU:qgWX3Jf8(SMu Vtj\RLRa ]0Kc|pyKqտmMaVLL̫O{&vVGqokwiIȒe./ZOP7DEmm|KevHX9Po];H.DBCJD%D@ΕQ| x#_(wJ.( H8yCSo> 8y6?69*,F,(,и~ur\V2J>!"aS1_]b>J^B/Y}o4.{s ;xѣymWXC _4_@NC;gc!:%Z*wcvNc)6a@<QDl`h g :6ȣlU `@SFv4;Qj7O:M7SRcc3` у ˜8PܴٙPhshsYT9zX7E8i}gA~s<kJ\rSjN9)5Ifhmd4WMH5FtE/Cs:Pfrq offYQ[GBD9E& 'rv@$n}LiWc]\SJ=:ao!Hj ?4d)PVBZ=VLC95v|~ wd^E:XS/PP: KE<830'˙7~ }g\R4)fKOSb3C{$ *?{ F<̑=T<1.*ΝXj~qY ]R@$I90d3 (_v.*F'%]!'#;^5~WT|N* e:+*(847]<}3: Sk6 z[tK{*81DKVjV Re5uNgM`fJN ;01:-$Ky$^tN-;4[dBf=f_#Y5RhŔ`SiS88(x _#P%1O98jqwlz={3x2Xfzd}oqWSC`'RF3:H:ku|iM+ AT" Sw>S51<\:|]44ǪZgZy;@_NU`ZOPT/j@ZsguZQG9GTd+@ji"HihG<\_TL,;#4R xsf nE;dEf`@V~N+E60_~Nnf$g9a;MGJVJQGv9"2X*U|~ e3[5U\?8I{OMJ:4;- %~|rQ-Q0 P9D~DCi:'5.'> | cyRwK7 Gl(=|E;}80Cɽ16)6!{~ZRL-D=#J8C89k4,*9%l{RLE1'A)0$ =Tj:ݰp+ ,p Q0J gA ,+63F~V2f12[+j1+)SԦ$!IDNwB:b,#"E:?>\>78(W7hW$1tG2h/Ȥ,"1\MoQ:-z&1GJQL LQK CTuH\c;OJ5x4,%#>VU ;|,<6NsQU\VWWTAPoPZJ`ATu2/ U<"uOS{Xns@v=wpwmq{!t'lOZD&SV8p{#WPR\ bjyOPmy'#iQm~j`502k3\bU@TZ:IPEF7*/(M~m#b2`^AMRuKw71*#ObY}NW-$[5,AJ:}3Y,% %| xJSOb)qT);|;5.0'M ~) KFF`BLH'V5t4x*~(!*~AL0F@;4$.yl+"¢# z~FLH?<40|)0l%eb; ~bH @8A1' 1)ZG?( ϡ H@@5%Xz() LqMqp y I7@H@8!"v$Hgxh G;?@6 `!)6*6*!&4 ""G%aPzCSiF / #/1221+Bq*]%'ī UI! !Iz1u 04t79:::5XH3U`-/?v&&zG@2t#4S8hHKN9P PPMCnpNh]u2g.W-(/( 7?FNMRmSprt tipF[|bopwq\Oh9KQGpy{M{W&_p!9MX:w\=`m~NOUS738/(FEDt\75PJE@@15 =TfHF@@3 Qe [ N7VH@@5dn  4kSdـl%S :h!O}6dKy2aHvA;y4s.m(g"a[UO J !!E!!""@"""#;#z##$7$v$$%3%r%%&/&n&&'+'j''(((g(()$)d))*"*a**++^++,,\,,--[--..Y..//X//00W0011V1122V2233V3344W4455X5566Y667)7p778E8899a99:7:~:; ;T;;<* >h>>????@@_@@A8AABBYBBC2CzCD DTDDE.EwEFFQFFG,GuGHHPHHI,IuIJJQJJK-KwKL LTLLM1M{MNNXNNO6OOPP_PPQ>QQRRgRRSGSST&TqTUUQUUV1V{VWW[WWX;XXYYfYYZFZZ[$[g[[\3\w\\]C]]^^S^^__c__`/`s``a?aab bPbbccaccd-dqdde>eef fOffgg`ggh-hqhhi>iij jOjjkk`kkl-lqllm>mmn nOnnoo_oop,ppppq=qqr rNrrss_sst,tpttu=uuv vNvvww_wwx,xpxxy=yyz zNzz{{`{{|-|q||}=}}~~K~~Xހ"e.r;~G̈́R؅^&h0s:}DɊ MҋVڌ_%g-n4v;}BŒH˓ MДSՕXږ\ޗ`"c&f(i*k,m.n2xIӠ^.tDΣX(m<Ʀ Pڧc2vDΪW$i6{HѮZ(l:~ñLղ^,p>ǵ Pٶb0uB̹Uߺ#h6{Iӽ]+p? S,uO˜*süNė)rŻMƖ(qǺMȖ(qɺMʖ(r˻M̗)rͼNΗ*sϼOИ*tѽOҘ+tӽOԘ+tսO֘*s׼Oؘ*sټNژ*sۼNܗ*sݼNޗ)r߻N)rM)rMN%[3i AwN&\5k CyQ*`8oG} V/e>tM&]6lF|V/f ?vO)`:pJ%[4h9m >rCxI}N T&Z,` 2 f  8 l > s  E z  L S%Z,a4i;pCxKS&[.c7k ?tI@~7u.l%c[  R ! !J!!""C"""#;#y##$4$r$$%-%k%%&&&d&&''^''((W(())Q))* *K**++F++,,@,,,-;-y--.6.t../1/o//0,0k001'1f112#2b2233^3344Z4455V5566S6677P7788M889 9J99::C:::;:;x;;<2">a>>??Y??@@R@@A AKAABBDBBBC=C{CCD6DuDDE0EoEEF*FiFFG$GcGGHH]HHIIXIIJJRJJKKMKKL LHLLMMDMMNN?N~NNO;OzOOP8PwPPQ4QsQQR1RpRRS-SmSST*TjTTU(UgUUV%VeVVW#WcWWX!XaXXYYWYYZ ZHZZZ[8[t[[\(\d\\]]T]]^^C^^^_2_n__` `\``aaJaaab8bsbbc%c`ccddMddde:eueef&fbffggNgggh9hthhi%i`iijjKjjjk6kqkkl!l\llm mFmmmn0njnnooToopp>pxppq'qaqqrrJrrrs3smssttUttuu=uwuuv%vavvw!wawwx x_xxyy^yyzz\zz{{Z{{||W||}}T}}~~P~~ Lʀ HƁC>}9w3q,j%c\؈Tω KƊB8v.k#`ێUϏ IÐ˲Y.uJصf;ʷX.v ]QF:ݽ/Ҿ$vǿkaVMŸCÕ9Č0Ń'zqiȻaɳYʬQˤJ̝C͖<ΐ6ω0Ѓ*}$xrmhռcַ _׳ZخV٪RڦNۣKܟHݜEޙBߖ?=;y(bK5oY C~.iS?y*eQ=x*eR@{.iW F5q$`P@|1m"^OA~3p&bU H=z0m#`S G:w.k"^R F ; x / l # `  U  I>{3p(eZOD:w/l%bXMC9v/l%bY"g 7 | !!L!!""a""#2#w#$$G$$%%]%%&.&s&&'D''((Z(()+)q))*B**++X++,*,o,,-A--..X../)/o//0@0011W112(2n223?3344U445&5l556=6677T778%8k889=99::T::;%;k;;<=<<==T==>&>l>>?>??@@V@@A)AnAAB9B|BCCGCCDDVDDE!EeEEF0FtFFG@GGH HPHHII`IIJ,JpJJK=KKL LNLLMM_MMN,NqNNO>OOP PPPPQQcQQR1RvRRSDSSTTXTTU'UlUUV;VVW WOWWXXdXXY3YxYZZHZZ[[\[[\+\p\\]>]]^ ^Q^^__d__`2`v``aDaabbUbbc"cfccd,dmdde0eqeef4fuffg8gxggh;h|hhi>iijjAjjkkCkkllEllmmFmmnnGnnooHooppHppqqGqqrrFrrssEssttCttuuAuuuv>v}vvw:wywwx6xuxxy2yqyyz-zlzz{({g{{|#|a||}}[}}~~U~~Nˀ Gā@~8v0p6x>†Fɇ MЈS։Yۊ]!b%e(h*k,l-m.n.m-l+j)h%d!`ޘ[ٙVӚP̛ IŜA8v/m&cޠYԡNɢC:|BƥIͦPӧV٨\ީ a$f)j,m0p3t7x;}@òFɳ LϴRֵYݶa'i/q8zBǻ LѼWܽb+n7zDQ_£*nò4qĮ'dšXƕMNJBȼ7tɲ-kʨ#a˟X̖P͎ HΆ@~ϼ8vе1oѮ*iҧ$bӡ\ԛVՕQ֐ L׊G؆Bف=|ڻ9x۷5tܳ1pݯ.mެ*iߩ'f$d"aYw#\Az'` F,eL3lS;u"\ D~,gO8r!\ E/iT>y)cN:t#] F/jS=x'aL6q ! [ F 1 l  W  C ~ .iUB}.iVC~0kX E3n!\J8t'bQ@[8  ` !>!!""f""#E##$#$m$%%L%%&+&u&' 'U''(4(~())^))*=**++h++,G,,-'-r-..R../3/~/00^001?112 2k233L334-4y455Z556<6677h778I889*9u9: :U::;5;;<<_<<=>==>>h>>?G??@%@o@AAMAAB+BuBC CSCCD2D|DEEZEEF9FFGGbGGH@HHIIjIIJIJJK(KsKLLRLLM2M}MNN]NNO=OOPPhPPQHQQR)RtRS SUSST6TTUUcUUVDVVW&WrWXXTXXY6YYZZdZZ[F[[\'\r\]]R]]^1^{^__Y__`7``aa]aab9bbcc]ccd8ddeeZeef3f{fg gSggh3hhiimij jWjjkAkkl*lwlmm`mmnHnno1o~oppfpqqMqqr4rrsshsttOttu5uuvvgvwwMwwx2x~xyycyyzGzz{+{w{||[||}>}}~!~m~P2}Ɂ_A׃"mO0{Ɔ\=ӈhH݊(rQ0zōYTlɐ'>Ukǔ$ݕ9Nbuљ-@RduО*ߟ:HT`jät̥$|Ӧ+ڧ16:=?@ACDFHJLNQSVY] [E/~̽hS>)xdQ >Í,{jź ZƩIǚ:Ȋ+{mʾ`˱S̥H͚>Α6ψ.Ё'{"vrpnopr v$|+ۂ2܊;ݔFޟR߫_n#~5?_@`!Bb%Ef )Jk0Qq7XzAb *Km6Xy"De1SuAd1Tv"Eg7Z}+Ic}2I`w.D[r*AXo(?Vm'>Um'?Vm)AXp,D\s1Iax7Og&>Womft2@BCDEGH I J L M  N  O  Q RSTVWXY[\]^_ a"b#c$d%f'g ( h !)!i!!"*"k""#,#l##$-$m$$%.%n%%&/&p&&'1'q''(2(r(()3)s))*4*u**+6+v++,7,w,,-8-x--.9.z../;/{//0<0|001=1}112>2223@3344A4455B5566C6677E7788F8899G99::H::; ;J;;< >M>>??O??@@P@@AAQAABBRBBCCTCCDDUDDEEVEEFFWFFGGYGGHHZHHII[IIJJ\JJKK^KKLL_LLM M`MMN!NaNNO"OcOOP#PdPPQ%QeQQR&RfRRS'ShSST(TiTTU*UjUUV+VkVVW,WmWWX-XnXXY/YoYYZ0ZpZZ[1[r[[\2\s\\]4]t]]^5^u^^_6_v__`7`x``a9ayaab:bzbbc;c{ccde~eef?ffgg@gghhAhhiiCiijjDjjkkEkkllFllmmHmmn nInno oJoop pKppq qMqqrrNrrssOssttPttuuRuuvvSvvwwTwwxxUxxyyWyyzzXzz{{Y{{||Z||}}\}}~~]~~^߀_ a"b#c$d%f'g(h)i*k,l-m.n/p0q2r3s4u5v7w8x9z:{<|=}>?ABÝCĞDşFƠGȡHɢ Iʣ Kˤ Lͥ MΦNϧPШQҩRӪSԫUլV׭WخXٯZڰ[ܱ\ݲ]޳_ߴ `!a"b#d%e&f'g(i*j+k,l-n/o0p1q²2só4tĴ5uŵ6vƷ7xǸ9yȹ:zɺ;{ʼ<}˽>~̾?Ϳ@΀AςCЃDфE҅FӇGԈIՉ J֊ K׌ L؍ NَOڏPۑQܒSݓTޔUߖVXYZ[]^_ `!b#c$d%e&g(h)i*j+l-m.n/o0q2r3s4t5v7w8x9y:{<|=}??@@@@AAA  A  B  B  B  B CCCCDDDDEEEEFFFFGG  G !!G!!""H""##H##$$H$$%%H%%& &I&&' 'I''( (I(() )I))* *J**+ +J++, ,J,,- -J--. .K../ /K//0 0K001 1K112 2L223 3L334 4L445 5L556 6M667 7M778 8M889 9M99::N::;;N;;<>O>>??O??@@O@@AAOAABBPBBCCPCCDDPDDEEPEEFFQFFGGQGGHHQHHIIQIIJJRJJKKRKKLLRLLMMRMMNNSNNOOSOOPPSPPQQSQQRRTRRSSTSSTTTTTUUTUUVVUVVWWUWWXXUXXYYUYYZZVZZ[[V[[\\V\\]]V]]^^W^^__W__``W``aaWaabbXbbccXccddXddeeXeeffYffggYgghhYhhiiYiijjZjjkkZkkllZllmmZmmnn[nnoo[oopp[ppqq[qqrr\rrss\sstt\ttuu\uuvv]vvww]wwxx]xxyy]yyzz^zz{{^{{||^||}}^}}~~_~~_߀_߁_߂ ` ` ` `!a!a!a!a"b"b"b"b#c#c#c#c$d$d$d$d%e%e%e%e&f&f&f&f'g'g'g'g(h(h(h(h)i)i)i)i*j*j*j*j+k+k+k+k,l,l,l,l-m-m-m-m.n.n.n.n/o/o/o/o0p°0pð0pİ0pŰ1qƱ1qDZ1qȱ1qɱ2rʲ2r˲2r̲2rͲ3sγ3sϳ3sг3sѳ4tҴ4tӴ4tԴ4tմ5uֵ5u׵5uص5uٵ6vڶ6v۶6vܶ6vݶ7w޷7w߷7w7w8x8x8x8x9y9y9y9y:z:z:z:z;{;{;{;{<|<|<|<|=}=}=}=}>~>~>~>~????@@@@AAA  A  B  B  B  B CCCCDDDDEEEEFFFFGG  G !!G!!""H""##H##$$H$$%%H%%& &I&&' 'I''( (I(() )I))* *J**+ +J++, ,J,,- -J--. .K../ /K//0 0K001 1K112 2L223 3L334 4L445 5L556 6M667 7M778 8M889 9M99::N::;;N;;<>O>>??O??@@O@@AAOAABBPBBCCPCCDDPDDEEPEEFFQFFGGQGGHHQHHIIQIIJJRJJKKRKKLLRLLMMRMMNNSNNOOSOOPPSPPQQSQQRRTRRSSTSSTTTTTUUTUUVVUVVWWUWWXXUXXYYUYYZZVZZ[[V[[\\V\\]]V]]^^W^^__W__``W``aaWaabbXbbccXccddXddeeXeeffYffggYgghhYhhiiYiijjZjjkkZkkllZllmmZmmnn[nnoo[oopp[ppqq[qqrr\rrss\sstt\ttuu\uuvv]vvww]wwxx]xxyy]yyzz^zz{{^{{||^||}}^}}~~_~~_߀_߁_߂ ` ` ` `!a!a!a!a"b"b"b"b#c#c#c#c$d$d$d$d%e%e%e%e&f&f&f&f'g'g'g'g(h(h(h(h)i)i)i)i*j*j*j*j+k+k+k+k,l,l,l,l-m-m-m-m.n.n.n.n/o/o/o/o0p°0pð0pİ0pŰ1qƱ1qDZ1qȱ1qɱ2rʲ2r˲2r̲2rͲ3sγ3sϳ3sг3sѳ4tҴ4tӴ4tԴ4tմ5uֵ5u׵5uص5uٵ6vڶ6v۶6vܶ6vݶ7w޷7w߷7w7w8x8x8x8x9y9y9y9y:z:z:z:z;{;{;{;{<|<|<|<|=}=}=}=}>~>~>~>~??QE|2#[t9hdX]j3YqQQWOJ>09Hdq|*j8JFTx*@sTScdZCSnSQ+LF:`#Ar~ x1wTgTg q~Dr7aaBPBVV^SP@=rL_୯2o]i8/=YVL[ydyЅ9x~D`mt]`CX,V&}Rm:!|A_ u+,wI`HaH 2oS on4YX eA/hl8{7%_7s]tL300($\pL[`Rs,TU q ``_0 :`*>(&I:4Rq_JK2ꮕx2Vdj` KA]<%6@1T#y9 R!lsBRQ_S ;.PXyX1wadUj^9iVURtS7Xq-|ם{ȏ#3Eg~4?YYbzLN)w e c{SCfUy?Penuu3:^]] d)7BmLoj[>/+t!9/2zmf?/;[Lkg8#k)`}~*?s @w$@lm]?`,Z%C;beK<>ˢsӫ׹6;݀ }ks ]Yz`=aM$_T)R+>;O`}0`5 X e0vc4yI<872c0}^ O)?D\_|uav;UP0S8c̎-XF(4 .LdY6iU'> FnODIԲrɪ&:z qlub9 f$e-:zFcwWŹYYm=3(thB @0;#Zm z  1<} Juty{TU`o]z] ik `W OS@@\q$\%*5X^x_jNQ~O0mx}j`Y d17T\{|jUkC$Lr<GR*=^>h[yyMOFw/0 mͰ:F OXL8\g"*E2{A=.92h]zTD,}j.1t)a}_h p8 :܃8JUPZ A/<>4: ,,}G]W bkjhqZh ?l8Kt@NAC >O.9\@3wo)*j4KBt JIW'Neh/AMnn5dYkVlXRRQQ3;~>Ay_lĸw3~`v(OK#f'1prS^x`d\QP}RV/$>1@a[VnAmz@>p$/KS4d}Dlhzic[GW5ەnW|6oD{uT#_MR];}h_z-{y}kY?eʪvp |FzNr["7a[0<>}bV~7&!|Ƹ~E*[~q hEa7bbphHfB0z P79"xmlF\u` t#&j37cVBunA'=9n {ܢ@Φ5lu" /[I^`)^7#0PFJqz`j^3&-Y;?V^|^}f je,6<44g1<$lWɅ 5l.B?r~ѣ-Z& `,- jq *d=Airx{4xNǎ`Ⱦ>ǻ=(L."bx#Y#8 "C4L':Y>#S&{9Wy`;al ro \ VS?N@AY72w!u/'& 0E@:^ۑE9 =I<G" 4 E E:+C?E @ 7X+b1;-@'e$eS$Sh#);)(2y4pAlAl %`(^M``YTO9O#P;8z8޿Q/ʗ`jszf~4{! qBG\ jDkahcE" SOoaW[`#0.oIacl>wC~`*[U@3GXv@sK_lvt&s2l5<`"n9z^BT:u%-)QM\i4}^Kxzs~X`oFH|cX)ՏFx (RR?1}My&TztSJ^n=x3 )XU3/2z =~s𺝂ZyXImF~p{bge,hi$F@hK nf,F,f7Q䀧#\̗h s(h,~]\q1W= vm\r1̡>"7? emebYEzyys3pp>d=Y #QU+KëL0g g-:\JqSo`Q&)dڄ|u1k(t~E[,yGm|\Cͩ2Mpo X ZYX{+?18 WwBrfbpz ߜG gـ0jd8B 9H FbB@+"v *Ͱ'B0pO\X8`"h+ 4ַ Lr l2IdBOo"A9<68 c)Z*)Bs9,:@ͣF tM -r'un "'):B,F!C:d.x1>]+d!2$p#" 3U(Z.sɰ=!NA9@:K0J,)9$@ ttF!gig@0s G**nXHZZ<`V MXTPv887$<17)rI6U6_ӮngJmmC5!JfC``^ nQaSW_l=D,+GqVaEip%r5rN2#cO! 'n,@eajbuzml i8,F?zόV/a*GkFWsYwvwu ~8J)nvsP6Ihx~;W+a,K]PY)<H"" KJl _3[ġBqGOM ^ Fά]KΦlr2)? !Q?@+B4a<'>72~'p&8!&ԿV'yABM0l)~(Sv ˙45Ta~pr 8xhv$~g $LX=g$?TLV4z+v;zNRX(3AJ";غLBWin`\inlއX}q =i~~*BB7ELB~`*d7?;UBnM-iZA H<Cg,>A5 $p%n~1O!]#/ v+ܜ. IY eSi$E=A58,9)lH(W B]0\x&Al2 >6,-$@=F =p =Exy}e?QQ6U!L=+uKuIp;'J4bWE^ji&~k"'j4w揣la[ThO@Gh+S9Sbaէw,. %̰. > PSF{n)eª**0=W)?oW6d ܙLtYO\JKF,}@z+le L^X1[G$lRU np{Ly/^!c>.9k-N6$%D!?uf\{`X}!@grdA+k4/f%].L@ Z  q (oKuWA8 "[9-8GMo3a888941fe'mH["HN$ßu%D;i(5 JC$'=K8^=>vI>z< &#@5#/H?,f$N!DfEC`F@jNADDH.S(ɍ%2rc*b+Mdpwjop l!eUa` afl\qqlrw$N:Y0bTWu7wl=\y[X}j%y~<Ewb}oEzqR:ۂz$wfAJLd8߷|#ʏ3u;EMw6caQ[%W#QbYGߐKvt`(h;`Irpx,Рٱ^^q ꨸ a \. ﷔/K\v-0#ydcRJ#GC|??zRnW9+T6ɶ͚ gwK{?{+rtB;z{7{~ tcpvkl*4>Ďˆ2IX<,U;Gd4\KX7W_RaDY.^ d6h*d#˹]jpgi%#+vJ8M24F?7у&ȓ0p6M>EdIfLrQGX-A;,8{ Qim%No!̽$ޕ` Gۣ|Qy :;,09!`te 7~Ҏ q> Dq:5?ٓb]-A3$ 1>S A tW p G }W)O4بkUlF?b3Q5Q'_9:@5E\ENvN M< Z = Ŧ .L.C$'m5(M*PeS-+)%ٝI 1=2/)t+(O0V(I(_.-,'ݭ,e߯ ь [3cX82I 1)M03G-m_3p5j4cL3$Au qǍDd?9$$6= 7>!:Z9x?=Al7,ȼ ŴKtu `.CGNR >wX@]`d|FI5zYp0=_/ ,ё(ן&`a: RqM쏔ᨕD9p~,hÛ"qSMr~iۛwzyg-QYR.GCA߮ JT(~I `6}3h*^;_rfz(lyourvqCtlv:ˮʝIKIY|R%R/OF׽EXjEEDHNR%Vȼ'ǼoB)hz``d1:S}'q+8$\{10BG*`m!(;.)Z4ƣŢc(e0ϦjBOE 5>3~ Lr ~ 7 *joe!2Ƈ<]Sbsz|jS j6$%!Fp "Z, 5J l , Z&r?L'=L}UZ36H+ ;Mqqbr DX̓מYD iy F_$.<< p p 0u@[y O%,vG)![VV [#8 @LYnLL! /DӇ - 6 'L"2!2Wlw #aszcV- p'G?W&&P'6K+ A&^P)'#U!$J K(DX.- I)!$E)S= ++Z ,|,C+oq+&\ 3 `;,$8 7[0F_-/6i3TR1xs65J9Cg45X/4!'i&0.+6BWBJY&&@'c=3HAGIfZ@EيE5̕iDq BIC=ÑFRN܆TMdNK^QKpe%N7h S0PMRewVglPn4PejksOg6oWknlgtpj\g\a8eq V ,B9w|v_!lψ{Yh|yh^gsilYO_KF0B7Wr1t.tx"va iu.,m%EtiQWO=VyaAC!NЅ_ lǒΈ ߋډ`I$Bmr|qh{8etxgdh#k]xP`QOKϓ֦Vf.mxܪU+'UvqJI8OWu_sNb{peWm2gڕ[ѡ?$x+)eH$;t~1ο&0-1_K47w=A*Ey+P-۪/M~{bh:TC9+sg#qWxkCPLF# %wҰjѴzsL^;C-'b mc*Vw Sʟd c!SYXѼ~EƞhًOG6*M 8 z, 6vTI$LUti; ȟs#YN6 `#S  +/KK n$rH }b?6F/*bb 1*E`Xc'*S[@ XVTk6 6Oy̋M'ޱkhʹvC3 = C#\ ?_)OS g3~,=ITp/4 8 Lmb{,gIC !) %O>"a{jR?p&Ӣ"95Y)*,Y$# 4&!$'\cJs*#'&#7 å#[ e'4!4z8L , .'**A+zޱ`t)/,I)"RF. 59';:"@}GcAA"NBB !(=.fը 9rԲ5*HIh_Mj!aca^udYh=OQ2PkPfQzձI 3:=H^WyN[SnJQaŪTUg@G}6uY-( e4fZeOdv`Ʃ]DŎ7Z eBEezôs}{s'R ِw԰z0z4vmrxy U[u 5Z_jvpRhöNaHS@^^WUmVrqOtLRti(s M@(|u{hlI;B|rF6Z47]?HvHSptNk~RiTʖ4$1+#$ylg6 TbDA).j,0!';,4{/33B/Cp[A'L ڙ`Ƴ  BOƛ4;*|~gP.2J~r[ae'^ةɄNr'\fDh* U.X%M-a'-|gQN5f F-QoL=149] ss֠YPW@6m'-L0` 4 Wi 1TASS e9}+ Hhexw -"SF  D J,2AtA7L5D5&E7Հ~A'$`$>$b ' $+9)zLxbYP^uN_L`6ߌEaD؄DNA\>,627m"ueBjA@Zbwf%4z( ~T`7XJhVKSM(AJWz)I;Ym:43CoTi>3_]&of$ssy^zy vj ʴmgjie`VZ:uZe`Ka&M:jM[Na?\Σ9[;YVkESTTa(SsaPD`r{\F$G- *! g2}Yo`~ i O5~A`<4SdLhw!2w.<.L]-sP1ۃz7%i1j@)6HYrtHФjdKib!8L"0B4Vq݈3?3Vkdg)2:OoFcV}pɎH@L  +y40,תDMXn:SۊvO,anmAmK   4Lc<MR$ր'q5nK9i;*]j(h'w%Hū Ty* n\7] 7Sz VzsE3^L+ITFuUAeV<<+ 81,M#b:h+I\N8. Vj.P^3/QJ9δ2?SD;tf&ttoHdH#H2@:~o:hG9JO13"Z/9GSRK!"GI & Vf&YbOfY czZ^."XdO}mJNbYFZSKs@zQAm<OrS/O(=R( PA,cM!7MEKRKKIIm!qd[jtTURF$\6r:oN zbIy؈ zҽ 7x5 dqf#3[,"[,Ž}\}pwf^`bMe3nwdNKT~>!x w Ķx7"{ltGX*w @"b \#Rzz&mcA4gtzΆdIwN2կ8Ɛ0M[׾ܼؠ N7p癉[EB-)kѩVE`Gkն}gQ0:w"DR!qD]'pvTGi-ɬ>t|^qYE*UF9<'DDX)gj{{ U'^O4AԚPҿb6qw{Ƭyw}j~6aޓ!]/>#QN(Ұ^ϫw}ESYN<(Rݼ(ڪ9~pJ9]R4x65/>8T t7 b1sBQvT/h.bƯfN!oӠN(d579I[Gq |wAui e ic+F2+R=a7Mhu~E3r &x Fm&c~/_!1ْ מ54'A5Z++s#C\n al,jQg$J[9BBChCi? E@Ҥ-0*& Uit 7\Yw P/bJ4WM!D#*B? >A% RGay`O\&Ș?S$@W:1/on,Y.D(E:[@vK;-m6J3l#61(.A!OHx HNMRI#IBpY2=U2_ NbW{NR^GyJ[B8I`#Za- mk>h-pTiuh,l_QQ mn&bmYUWSZBnU'q*dpEz*DEQq0}bǠt]kij'zpyV|@lbigRNjj`4xR)IjtΩW@v|`uRpzY,{A|?& Zkj4;\\KJDʫǁM E~VfOE,6Gx7J'JO@^W/W׎EGs=\4F0HEm.K=^vMZh0E9jTó: {2547IE`u ђ  J++r6BQTcz"+bjx NihӨ̴ jBJ=',2j?OcCr{,O?w~;Cj}l<͇Wˣ d.W=BwNT@d~G9ۆuwիѓ?Mº'W6yEX!mDR[QtxxJ)Ɵ o C+P;I7}]C}.~ubljJ'PYf}/p? kQThxw5ipCp:Էkcb_bY"W#8ЧO' |'i!]T6mZPYIv X(WPi#W@-DZ,@.?^"bi e!&[zicrnO U ]E(>?#Gl;q)I:xh6ɖ/ *QBF @ z?a3r5}0(+|&`!M!z:J3 e//na_)?&D$"E %l-/BE{(;%8e1N.%9+*4+6k@@B@$:~/1$m.PVvMqCCDV/G X g+i~6LB.TgYDܬz 1'3@SiiwM֝Zxzr=ǁ^h'T#@"0q?`T lM^ +Txo^n!O/ k)&7-E}Z~{yRwmlmkCx(Anyo-m;hMQi]k3i"o.Omo#iRd8`=`Z5) wuf.$jZR2V)C'U+`RTZ]6G[Y TUOjmĥ~nRyd$T;`nIi()Eh=BsZXD=CD BF\@;s+|GPalhA R?8v4:r1r\/*r"##){,&&n. VZA.b! )N<.WwG:^% 5L Q8Q:4x/\(ME#k0!F7%1W 1O12`.qX1,(v'% 6DJDg~:YO39.$1;w<&.@wKQ O$P<MEfNftPKƹMHpLU6T37a{bIjX8QR;T"]ggjkX#voEp;ox wyu=dLpyk^$i\, Z"Q: Xqul@HE1{׉-a5I4E ăMRǽ.ˤEV[nΉs޳C}ao2WIB1V om $Dn5KIη[j-jAy രte[[o>>  l)^4@s}Sl>>0Wj6}oЈw2߰r91 '}J&2}>;|TrcPx~,wۢr:kqkb> #1;}?F{X[~yق<A$xzqj*d0#[v*k7gAK{iWhi@mjޗh`\-ŁC q5c"X.wT>}UsZU?X8ZT \[WS(3t`cR hG#$4B~4@NC|B"INN&JG[1,l~,XfQhA 5j2-1Fe2w/3cم98o4 ;"J[ _r @VD.'U&+$Mi!| pڸxG 6a" l #Q!}!G`L 6 ! 8 ) h[TJ= 0 ֭9/f2=.n'T J=3'n +@-X bo5ҳ5j;. B}:S_d28H-+h1&X(2lR+'5(k]#wX&i$p!KPEnET=<6%8PApA :Ni9VA*8Lb2s63C3)! Y5~Y^`OII:2KUK[XXG'WOAPQ5j`TKmeT1P,iO3}gqbV\?\%iU@rzd$"5!V]pԣap[?u%dnL p1| KXKr)=|rSidնjkq@vsMWā@=,v8&D9/N8`;okg'H9RB]f5N9 s}9.~l=Q `lk~ߧS8@ xMrk'f2 jdBM hjXGlRt6opq;nBlc -y sj%e 2I cJC g\k|npQnulkug}{ s>1ja#c1 aF e|api.m9gnk~e O[[#x|m*_~UM*FR.;]UXV ~,X$$\Ϧ`Vo`OP1nz]s ObkEz B2AmMCuE+E&M,F @GxaP? 5/42+/E1Iq 03 0~96~20zten'UB01(%"$Bzqse} e} aJS-6!::" IO |<t d6qU#@ +e" $;IK|*? }(;+)f M6M7H^r)SkJ9Zx 馄ʂll7:v4Zc,A% * "#tX3XQx GJ^h+@VOS8r73 3:p5z .*@(_K$,q$Ъ $% UyU]%L"EE-GQORjOM?)yJDCG"g"Hqp D3PEO:7v'5dm`7S'Zs;[!d^l7 q r" uJ2vYRxx))!nxO| sa#nHo/zM*ewCwOS/wit(zB#pVM=Ɏ'. ['J:`Q\yƘr**&AgF2d}BLg7xA(D0sBS[şo:DΕ8uEEF.[@n%R 7eJx/]Bp(V ;i ! O }  5 c  I w  / ]  C q )X>l%S :h!O}6dKy2aHvA;y4s.m(g"a[UO J !!E!!""@"""#;#z##$7$v$$%3%r%%&/&n&&'+'j''(((g(()$)d))*"*a**++^++,,\,,--[--..Y..//X//00W0011V1122V2233V3344W4455X5566Y667)7p778E8899a99:7:~:; ;T;;<* >h>>????@@_@@A8AABBYBBC2CzCD DTDDE.EwEFFQFFG,GuGHHPHHI,IuIJJQJJK-KwKL LTLLM1M{MNNXNNO6OOPP_PPQ>QQRRgRRSGSST&TqTUUQUUV1V{VWW[WWX;XXYYfYYZFZZ[$[g[[\3\w\\]C]]^^S^^__c__`/`s``a?aab bPbbccaccd-dqdde>eef fOffgg`ggh-hqhhi>iij jOjjkk`kkl-lqllm>mmn nOnnoo_oop,ppppq=qqr rNrrss_sst,tpttu=uuv vNvvww_wwx,xpxxy=yyz zNzz{{`{{|-|q||}=}}~~K~~Xހ"e.r;~G̈́R؅^&h0s:}DɊ MҋVڌ_%g-n4v;}BŒH˓ MДSՕXږ\ޗ`"c&f(i*k,m.n2xIӠ^.tDΣX(m<Ʀ Pڧc2vDΪW$i6{HѮZ(l:~ñLղ^,p>ǵ Pٶb0uB̹Uߺ#h6{Iӽ]+p? S,uO˜*süNė)rŻMƖ(qǺMȖ(qɺMʖ(r˻M̗)rͼNΗ*sϼOИ*tѽOҘ+tӽOԘ+tսO֘*s׼Oؘ*sټNژ*sۼNܗ*sݼNޗ)r߻N)rM)rMN%[3i AwN&\5k CyQ*`8oG} V/e>tM&]6lF|V/f ?vO)`:pJ%[4h9m >rCxI}N T&Z,` 2 f  8 l > s  E z  L S%Z,a4i;pCxKS&[.c7k ?tI@~7u.l%c[  R ! !J!!""C"""#;#y##$4$r$$%-%k%%&&&d&&''^''((W(())Q))* *K**++F++,,@,,,-;-y--.6.t../1/o//0,0k001'1f112#2b2233^3344Z4455V5566S6677P7788M889 9J99::C:::;:;x;;<2">a>>??Y??@@R@@A AKAABBDBBBC=C{CCD6DuDDE0EoEEF*FiFFG$GcGGHH]HHIIXIIJJRJJKKMKKL LHLLMMDMMNN?N~NNO;OzOOP8PwPPQ4QsQQR1RpRRS-SmSST*TjTTU(UgUUV%VeVVW#WcWWX!XaXXYYWYYZ ZHZZZ[8[t[[\(\d\\]]T]]^^C^^^_2_n__` `\``aaJaaab8bsbbc%c`ccddMddde:eueef&fbffggNgggh9hthhi%i`iijjKjjjk6kqkkl!l\llm mFmmmn0njnnooToopp>pxppq'qaqqrrJrrrs3smssttUttuu=uwuuv%vavvw!wawwx x_xxyy^yyzz\zz{{Z{{||W||}}T}}~~P~~ Lʀ HƁC>}9w3q,j%c\؈Tω KƊB8v.k#`ێUϏ IÐ˲Y.uJصf;ʷX.v ]QF:ݽ/Ҿ$vǿkaVMŸCÕ9Č0Ń'zqiȻaɳYʬQˤJ̝C͖<ΐ6ω0Ѓ*}$xrmhռcַ _׳ZخV٪RڦNۣKܟHݜEޙBߖ?=;y(bK5oY C~.iS?y*eQ=x*eR@{.iW F5q$`P@|1m"^OA~3p&bU H=z0m#`S G:w.k"^R F ; x / l # `  U  I>{3p(eZOD:w/l%bXMC9v/l%bY"g 7 | !!L!!""a""#2#w#$$G$$%%]%%&.&s&&'D''((Z(()+)q))*B**++X++,*,o,,-A--..X../)/o//0@0011W112(2n223?3344U445&5l556=6677T778%8k889=99::T::;%;k;;<=<<==T==>&>l>>?>??@@V@@A)AnAAB9B|BCCGCCDDVDDE!EeEEF0FtFFG@GGH HPHHII`IIJ,JpJJK=KKL LNLLMM_MMN,NqNNO>OOP PPPPQQcQQR1RvRRSDSSTTXTTU'UlUUV;VVW WOWWXXdXXY3YxYZZHZZ[[\[[\+\p\\]>]]^ ^Q^^__d__`2`v``aDaabbUbbc"cfccd,dmdde0eqeef4fuffg8gxggh;h|hhi>iijjAjjkkCkkllEllmmFmmnnGnnooHooppHppqqGqqrrFrrssEssttCttuuAuuuv>v}vvw:wywwx6xuxxy2yqyyz-zlzz{({g{{|#|a||}}[}}~~U~~Nˀ Gā@~8v0p6x>†Fɇ MЈS։Yۊ]!b%e(h*k,l-m.n.m-l+j)h%d!`ޘ[ٙVӚP̛ IŜA8v/m&cޠYԡNɢC:|BƥIͦPӧV٨\ީ a$f)j,m0p3t7x;}@òFɳ LϴRֵYݶa'i/q8zBǻ LѼWܽb+n7zDQ_£*nò4qĮ'dšXƕMNJBȼ7tɲ-kʨ#a˟X̖P͎ HΆ@~ϼ8vе1oѮ*iҧ$bӡ\ԛVՕQ֐ L׊G؆Bف=|ڻ9x۷5tܳ1pݯ.mެ*iߩ'f$d"aYw#\Az'` F,eL3lS;u"\ D~,gO8r!\ E/iT>y)cN:t#] F/jS=x'aL6q ! [ F 1 l  W  C ~ .iUB}.iVC~0kX E3n!\J8t'bQ@[8  ` !>!!""f""#E##$#$m$%%L%%&+&u&' 'U''(4(~())^))*=**++h++,G,,-'-r-..R../3/~/00^001?112 2k233L334-4y455Z556<6677h778I889*9u9: :U::;5;;<<_<<=>==>>h>>?G??@%@o@AAMAAB+BuBC CSCCD2D|DEEZEEF9FFGGbGGH@HHIIjIIJIJJK(KsKLLRLLM2M}MNN]NNO=OOPPhPPQHQQR)RtRS SUSST6TTUUcUUVDVVW&WrWXXTXXY6YYZZdZZ[F[[\'\r\]]R]]^1^{^__Y__`7``aa]aab9bbcc]ccd8ddeeZeef3f{fg gSggh3hhiimij jWjjkAkkl*lwlmm`mmnHnno1o~oppfpqqMqqr4rrsshsttOttu5uuvvgvwwMwwx2x~xyycyyzGzz{+{w{||[||}>}}~!~m~P2}Ɂ_A׃"mO0{Ɔ\=ӈhH݊(rQ0zōYTlɐ'>Ukǔ$ݕ9Nbuљ-@RduО*ߟ:HT`jät̥$|Ӧ+ڧ16:=?@ACDFHJLNQSVY] [E/~̽hS>)xdQ >Í,{jź ZƩIǚ:Ȋ+{mʾ`˱S̥H͚>Α6ψ.Ё'{"vrpnopr v$|+ۂ2܊;ݔFޟR߫_n#~5?_@`!Bb%Ef )Jk0Qq7XzAb *Km6Xy"De1SuAd1Tv"Eg7Z}+Ic}2I`w.D[r*AXo(?Vm'>Um'?Vm)AXp,D\s1Iax7Og&>Womft2@BCDEGH I J L M  N  O  Q RSTVWXY[\]^_ a"b#c$d%f'g ( h !)!i!!"*"k""#,#l##$-$m$$%.%n%%&/&p&&'1'q''(2(r(()3)s))*4*u**+6+v++,7,w,,-8-x--.9.z../;/{//0<0|001=1}112>2223@3344A4455B5566C6677E7788F8899G99::H::; ;J;;< >M>>??O??@@P@@AAQAABBRBBCCTCCDDUDDEEVEEFFWFFGGYGGHHZHHII[IIJJ\JJKK^KKLL_LLM M`MMN!NaNNO"OcOOP#PdPPQ%QeQQR&RfRRS'ShSST(TiTTU*UjUUV+VkVVW,WmWWX-XnXXY/YoYYZ0ZpZZ[1[r[[\2\s\\]4]t]]^5^u^^_6_v__`7`x``a9ayaab:bzbbc;c{ccde~eef?ffgg@gghhAhhiiCiijjDjjkkEkkllFllmmHmmn nInno oJoop pKppq qMqqrrNrrssOssttPttuuRuuvvSvvwwTwwxxUxxyyWyyzzXzz{{Y{{||Z||}}\}}~~]~~^߀_ a"b#c$d%f'g(h)i*k,l-m.n/p0q2r3s4u5v7w8x9z:{<|=}>?ABÝCĞDşFƠGȡHɢ Iʣ Kˤ Lͥ MΦNϧPШQҩRӪSԫUլV׭WخXٯZڰ[ܱ\ݲ]޳_ߴ `!a"b#d%e&f'g(i*j+k,l-n/o0p1q²2só4tĴ5uŵ6vƷ7xǸ9yȹ:zɺ;{ʼ<}˽>~̾?Ϳ@΀AςCЃDфE҅FӇGԈIՉ J֊ K׌ L؍ NَOڏPۑQܒSݓTޔUߖVXYZ[]^_ `!b#c$d%e&g(h)i*j+l-m.n/o0q2r3s4t5v7w8x9y:{<|=}??@@@@AAA  A  B  B  B  B CCCCDDDDEEEEFFFFGG  G !!G!!""H""##H##$$H$$%%H%%& &I&&' 'I''( (I(() )I))* *J**+ +J++, ,J,,- -J--. .K../ /K//0 0K001 1K112 2L223 3L334 4L445 5L556 6M667 7M778 8M889 9M99::N::;;N;;<>O>>??O??@@O@@AAOAABBPBBCCPCCDDPDDEEPEEFFQFFGGQGGHHQHHIIQIIJJRJJKKRKKLLRLLMMRMMNNSNNOOSOOPPSPPQQSQQRRTRRSSTSSTTTTTUUTUUVVUVVWWUWWXXUXXYYUYYZZVZZ[[V[[\\V\\]]V]]^^W^^__W__``W``aaWaabbXbbccXccddXddeeXeeffYffggYgghhYhhiiYiijjZjjkkZkkllZllmmZmmnn[nnoo[oopp[ppqq[qqrr\rrss\sstt\ttuu\uuvv]vvww]wwxx]xxyy]yyzz^zz{{^{{||^||}}^}}~~_~~_߀_߁_߂ ` ` ` `!a!a!a!a"b"b"b"b#c#c#c#c$d$d$d$d%e%e%e%e&f&f&f&f'g'g'g'g(h(h(h(h)i)i)i)i*j*j*j*j+k+k+k+k,l,l,l,l-m-m-m-m.n.n.n.n/o/o/o/o0p°0pð0pİ0pŰ1qƱ1qDZ1qȱ1qɱ2rʲ2r˲2r̲2rͲ3sγ3sϳ3sг3sѳ4tҴ4tӴ4tԴ4tմ5uֵ5u׵5uص5uٵ6vڶ6v۶6vܶ6vݶ7w޷7w߷7w7w8x8x8x8x9y9y9y9y:z:z:z:z;{;{;{;{<|<|<|<|=}=}=}=}>~>~>~>~????@@@@AAA  A  B  B  B  B CCCCDDDDEEEEFFFFGG  G !!G!!""H""##H##$$H$$%%H%%& &I&&' 'I''( (I(() )I))* *J**+ +J++, ,J,,- -J--. .K../ /K//0 0K001 1K112 2L223 3L334 4L445 5L556 6M667 7M778 8M889 9M99::N::;;N;;<>O>>??O??@@O@@AAOAABBPBBCCPCCDDPDDEEPEEFFQFFGGQGGHHQHHIIQIIJJRJJKKRKKLLRLLMMRMMNNSNNOOSOOPPSPPQQSQQRRTRRSSTSSTTTTTUUTUUVVUVVWWUWWXXUXXYYUYYZZVZZ[[V[[\\V\\]]V]]^^W^^__W__``W``aaWaabbXbbccXccddXddeeXeeffYffggYgghhYhhiiYiijjZjjkkZkkllZllmmZmmnn[nnoo[oopp[ppqq[qqrr\rrss\sstt\ttuu\uuvv]vvww]wwxx]xxyy]yyzz^zz{{^{{||^||}}^}}~~_~~_߀_߁_߂ ` ` ` `!a!a!a!a"b"b"b"b#c#c#c#c$d$d$d$d%e%e%e%e&f&f&f&f'g'g'g'g(h(h(h(h)i)i)i)i*j*j*j*j+k+k+k+k,l,l,l,l-m-m-m-m.n.n.n.n/o/o/o/o0p°0pð0pİ0pŰ1qƱ1qDZ1qȱ1qɱ2rʲ2r˲2r̲2rͲ3sγ3sϳ3sг3sѳ4tҴ4tӴ4tԴ4tմ5uֵ5u׵5uص5uٵ6vڶ6v۶6vܶ6vݶ7w޷7w߷7w7w8x8x8x8x9y9y9y9y:z:z:z:z;{;{;{;{<|<|<|<|=}=}=}=}>~>~>~>~??F={rP`ii&8֒@?JjrLL}Qf `pp5oup'83Zll`s@Ilٍ,xs[vo.>P`uQF*tetpul6OZzNi}b}O@XHqkoz {Э5yxyioUzw::{ >7$Hrivy'2[Z9:EKkً c|jz"dJVr{:^5If|t|tW_ y y-NyAX3laa~t񁇦ٻ"I9vÆ /ɀ<KEt4#@p`}`53Ο@mXwBI$ u0ix]D/@<^vT`Z@Tm΍ћh[/󥕼uAcN9WNfBEeOs,O@b JCs|@=a>rW G|Gꅝ<~딛533쩙+1$w*7;#NHNh#G{ȡ;.)qM󚴺!J]^鍥]^6a9蝚  }S*:+YDX͹ZSinr sؒ:%4_(y2çP? [5C0(,쳖(푓|&p퍑0(KF4@'LNTm`%PfYXuNZF=.?;# 8(9?0?g9xk@XLvǖ k~1E "zGT&yt[kSgs]qV PIЂ ().>ϻt_^EZ f "vRʗ;w(uMFk{dK"_*.y@b{@*;m^Xl4sHwxxzzxFV^/BaY{)aF{ ,Yq ,n|T >WVdF>`h ej0lzn O%0.~%GT\!@+]<+nZcyfcA-46 CIR{T1X<\tS_,"*/kOMG 2F3OE3^l8u8Rh-dq|/VX]Ӎhu0bג{W O'J#EFR0 1>ia~z5ee; ԹQ^r.<3W褠GaTM4`Twإk:X?쏫YkrM*jla̙ W虗& K/? He՚h{ÖĀwDOQ$@C7EdJ1S뗘r-6-*}(*  K+ 6$? Os >IUdž] zsD`0W>gP+HqCɢ) Ν*ش-4G OHQ~v\aZT*c`j*stE$xyхJmzeL,^hsiXA4ļ[]>~)>h(#z4%F,mdźnegtx`yd$xy9w $.@fcw?)p]=n8NUIj_c6"hEkbMlY MԻ/"A[R"-7D Y9M_l_x=~wH Ec]OTqX[  1 0*H0.UBYNZzk!t}<c1Xj:M9W?DY~Il$W,@=%9FKTY[g[pz][5ӣ(%m$:(6n17M60Oebeb[ oln))@Ymddr鋄|3a`^&m%ϛlO*l{g-~&TodntjY :>r䉨xB&Uv$]*p][Ttpּpױ%qf.t =E^dnt"S?vt{*e9rBZZ{u׽utvEwIh06✚|Ltց`|ټ{Rg5|ך}_|C.I>azw>\|3'!;'%'ލ,~,G!D,/xoF)>TwC^S;#<ǵֱ,<Ss1\vƊ4xVpClɇcs((=WprDTUu9>;˼jg & 6z=9{jz[XDR hKH';E#?Ttx|s2A 8zHc짜S칚AEki31B^) q ɪi~Iz< GNĖ eړfČ1ʉ?k\fb=iӦ"-|Xᯉm[[MQ~B>gx$Mp@}*p9gpq]eW5`ҜK%t=QeJCN * ^`oAb nux:xBwv wA 1aKmoX/l^&q*l$ 8P9Sϫ\[l`refhj<(5S{Mb E("cm+2C? uIRZP,aSQW.-Z8CG`D +rT j8v~H<*yF1ie9> tC'# 'Sq"+4@Dm+TdnGx E,0, ] ]~>>{%g#g%90&@LSv]tjr #|"o<__^0b0@o}zDŽ`` SZene5e|P8`cfcnbDw|f}͍w`a?mRmii"Bi3>@7_h9dl1h`CҞQBzClZZ_'j\.MoY mCm5_o21~XpWn=0G >?ʟb<x`1[Au>rAj4rsϞ8LtdZ-1Zjssc1<٫ jܜ\?p}%]w͹4w٧>yAVy=y C3>~hs^F;à8*Diӂ:JJ~/dh (xS8d41GHDWJs-_3 !{O񩆌 ڇ(wWgkE`DIu%|+/R;zm%@/n # WoΛ{󖑘h bZ^ߐ_Q0 F&m<X|Z&R>e|3@q g>Ah ؿM iL뇫g(〢(ߞ ;0% I_P]:Ĉ'ǧ;K}L9.vDr?pBl8ju]T|`M#FW^@7Ă Dؖ-5!k$X\FHdnrG $"#x6Ly:|{5y,zocIzug yΑMخI2o.R)e)LgJoExmNq-Ypee8TSօZ_HNdoh80jtkkyl ` P2wv(9ZJFU+9!#69޷BKdO7T 5WC s[ !+!}H,P<(bc;]-)Op2Mg7:C<~@O R# ꄣ-gA60#NfyBZ7=ն}~">)ޛ-Y ""_#/GPBOK?[mz+ѻ+%>  99kE? >/$Z :@MXdnx]g݂.-UU\6`?9o摛|H` @ A?T&W)X#-N_QlU^* GH5}|1eWU$Ao&BV\ /]β]dvPJ'Pecie' C?}z)A?N$Ha^ma Ha<`K%|``ki'F;Ġ|u 'GcnedTnc׵eU#ZINlnoWmtdBNF6)Nig#g}filKj>"{VtnDa3?6CbēnC%msmopДqK5v=lK|M'+rIu5~Ӓygta+yztz4OzuBztA?`{'vɨˢe^G=s zfYb[[ SGRI>ۅ3EC@? .DgjqmvС/%%LH_` 㩜 Ț u ?ݒŽ4T46p hGhmᘆpOڃfk\`yV 삚PVZJWƀOʧ;GUHXY+lzQ+x$fT2lqo!o|Bnt0nno dCS*Y]|Rwm`ode_kCɥaM4QVYZT s  S!p,6^C?D6,w"*}V$y3)l62;\?=gDK #e ! 8r%}Dn0X(Rn\#3~h R&|*v/ # Z b y"?>\)^@Zwsq*; 1 ; ; j هOH  \!g8=G;Y-nxzڪg v^n$ k9MI0V]d'pŝyY&PPL]` ;U>|Xy`<3r4?8B `MW0^K[ ^D?y;~WZe3n4@IC}H ~OY`]w$ÒCczJ|-vȗe6F9E@KRLY1pO_a_G@R{]|c Ud<9KjNPepQ*7Oeaba2Q{Hw_@QaT'VVPZX$|)Kitcdv 8}[=^uNt`-as|a5 &<"k7coK\zj@ cVY D;2?DH@J ɻt /h# DX7@-s- ^*kB #z',Ɋ0w3 ++< Pgh!8'& UPyUs1?ܟ lK sp <IeX(@)Tq;W ׿ 籫{E^ [z-5ATjP3Z~ Rm 90bBR9`sZñZzrpII)(`| /`zxRc`nm>1(''~ s } NK-`Zz 7<]}{*Q=x`k82d a,$'m(+w NN5aMOQ*@#irht~-tH}tfS9,%,L-0Qw NSQ[! :?x|GO͒f &11|N6߃;F'L![\ZM5zO%T,ʂc4:MAC:Dnb{A_d_RgX [d,*yƘRG𜅚jݵEJûK޹XNsWQ={ix8edjFlP:l]zYd|Qr̳"|W\^Va)b3C(.8^?cs&2mOzX##{<nćvq1nj`)rarz[jrS*sZW`'", /F&Ը XK' Hxb9| ꮈ ˅'<~Piq qབྷ*8#Нj` XAu|Weg`Qi\ iXoiTD|i\ Ӌ7p~-'{@6i-Jwẑz8Kmjz]1JEMOTQ R25 חk(ڞ֊ߨq2KP EbP\'eO >a,1 5 8y\;%f aJޛU h2 4.G> ; l@,ɠw,ў*Y%<<!>A$wU&e ml/c?8AE\% A p[7 h%:h2/hv -49 5Nj g"  U U"pc >Hz) $7M]<LOonYj{jj{G  &8UK`r 6Vqigi@6}AA `x j```|'`dKts0t )"mpe;=c(e%VN0M|)wr^d-"yrFJG'aq$ki:Vo~{/̕b 6*FoM 0{sx DP,UP;s7qZAz)C6d &+]e0bF- O-uVV(dV\B+7ioI{d]LE̫58%f|`w dwrce2]6fWggOHh0 aܜ|$E9v| D*\~U#w pvu-aq4{o=v$Q%)x gH|y1u pf)bv^YK\ wZ^Y9O[?Uyp[_/ƥM(.'n #q*d_aoFSNE<>`&@+ fAh 2ɊaKk*?^'V 9 MbFR<4G+%Z%x(}+-bs +/=mb@D_ . 2YB)%%(̊"jThM'nǐL6 ؽGG ` H8w>bX7ܓ{>d_u V(JJLxa3=N+G7^B948|::%ez5M.,F[a0y-78zn>:o[.EXnH=֥ިZ`@3R M Zv%```vqvq]ĮL /,/&j"Xba:68= NW(]```ktvzV7i%I!r =][7 7$9< ZU.(Z!@zso"0XzH+D.&jtgs?<XC%D^w4R~~}rV c(Ssq|,9H/MF2]2_~‚'\o$;8. |֝?}UJRNQX +փdVzhJgO;5%Q+"/~jquT8T \n[aNrt [&DtEXQ.9>BHFM G$1-u9%pcYqx`fojsWnTkZXsT[O\,H_]:N/So6 G "e L}$ofxcg6f?dh٦EŖЕ+wems^*apX LbX(Jo&F:*-~/{G2(Є M\9I\й\PuҕY>ڙ N05։".$N)ɞ/'#!PF#e /eiyfT9jv%ZJ KU 6 Gf! 7 HJ[ ζx{~L S._c^r&H7T/;&iIL_v ) UCX'j<:8bdtU ULqqZ( ;XhuT B~Rya(.9'<Ul#s8V^@"4747 F0 R b#$<```ppWMGX(!FGT`!A):&@: N(\J```d$rgOP;'"z2RY;)-}:6J_(FLDosoeGQ^ (o]XZWgC<,2l?#)YvH}zs"v$_PՉI$Nݳfe@ik; 7@Q>d5^wcpVpcZ1"7")5sqhqs;<%GJPGe#g9{ckRicQbcH6ԛ;.,)/"L!zz EQ9`)/_^ֱgTXkJB71V-':SAF=846~98 8"oe`:DMZ6zz[Rh~UUZD^VITHODNP<Rd/wwr g{Y*< 2}9 w q?q 'D:^+U;'lR( gR%CtRըn_[Pz1,d& KZz(as"Ths}QljQ];DdX88UQ5T6R8'`ţ@}yaS᪙1 9?v4J<%2U3xk-(!nywMBt![bҭUǵreH5*( Ruu<hgFR#!; A :p(jD-ۡ&( =9|拵P)XGt{z7 ^Y0ocE?4;@N~''yplCЉ autG<gH4Xzȡ67aW}MK47gVsV8x?U$(T'%]X./bHbUOD !w#*2>]yuEsrq?,=@9H]*Nda4ٳ%N ۆ!ۊ`5242z 1u5?o6{uYN bJvE=k;`ل>SE< J6iN5HI2WK,,Kdm+ PkPfF^qhjyfcgTE_l$EN}-u?:,(=*,=n(? 4]95taj mxXsN4L`kj>kc9lb;"Z3M5bRG+sN#NJ$L&dȾsѪ&r&SxR>x,`VV/#V9|e<op no lOԮɂKݼBz=UL3EtY6 +0bw _ iגܛg.?Ϡ[ ѥ3|\1lL;iЉp%7R@@m8#_f5o./]yeiMS,{0gϵړз:eΗSg?:ED6ZWiZpAIE;Yt<N:zI@s-lE7XmbGUH4. - 6 @]jy@}``OfCg1 % F5%}-^"@3 >f&SDlfE@w'bZ'O^Dh'i6EzK,i"j[/2 9%@c8cf:Jb GxHD<"3# |M.JFP:;K.U+T=(Cdx[M>G:~@""3 iqx峘BY.TWZ?_"l+1&>K*Jk0T],Ә̐)-cpkha]="E*2jw2D^tKȴ|W vO-"e0`24]22}t)ehިNj2 t#%eA!d^C%We(gPN.<#2$A8DpDBs0󹊢ltIYsCA W:*]VSLzKt٘E!5;0%.',$/V#/`!ϠVxjeZ]G^E:hSX2*V%Zk۸%U#L"rC"@>@~ $1#.~:deD)}fxBMʛ^f~9v f_]FԘ ה4kUF) F&XfρDz,V8~|z/S4BrM>Ki$k §<e8h٧e| Rbֲ)Bp'DZM7suɝB'1%ۗgfcY7/Y %<cbfbc6hV.IbvƳm->2^ "6YL`pGtGrV1 K d $D , 7 @^cB}``Y}D87h# ;=*)!(l 2$>X^c>zah]'[>_5)lNdjWX;z'% l5 0 Iz.qxs0se@@Q*&UM-'lJ'h0| thRW=s"p^KY< .TmAaMHq>>*:8 V4CM{}gMf6-J".J[ G?':7/1s') 7u 6F2FSu:lZb|LOw5L>i'I JJSP˜O CP .95;4WFHw兮Uj2j/ph")n?djrfmo$Bl!SCDE ОDFҦ[5ܨF šh6-QsB&,{yg\ffݣĄ'OcC=N1v*4lC?\wl|rμb-oEijҢԾ_5׆Pֿoiafˉ[{@MN"%7ސh)yKgaE#!&VGH- XPo7P^w6 "a5XJ/E'T`sBûz*Z nEE ! +(696R _6;V`G76% ` w2^!sm a&!2TPd6ZXIa3`~6- Wp3N-u !E!N-Pc7]-eCU+6) 6ك43+z /!%5C >=R/~#MaD@#=:><?/pD3GJ9*& W ->g]Qky=En!nEdG[,Z7^TcVcU Ty;3.-]! uLLf&ÖP .)3Hw\lyrCjuSjNOHd$Wz/\[ |{+FqXYdlvEm{r[b\U8ƭȏ,~=6f{Vhn ʍ)տ`KiAp\C tVF0R_~dcq~YKR%D19HdX\yһV[~-y , 8sM ``vL/!-QQ.: @M/8d28(m9ʒ %UYb.`) + , <Y?P6e9#2` Z> *Q& LL l=>!P8{0"o O q(‹m-*(&q]] 3.NC'GUDи@Q%k4,-.*<| Z[+Z5{ʜk;+FXzD>>.:3 *GF B֢(hH]gj}RcuUNOWST:OI>,dد[qL2}cqNZuSYRDP.I+( dq+oXN=L&vUD<%86B7p/a)1C!OB oP|zWgO>;W(g/9%5 o2QeK ܸ3Bwуzl^iWI3754*//2 _.㒳1;'c 7o42_k9^c]U(IKX;D7OAc:*=8i- S|jiAdX._v3 k#.gCXfY/VZUS68n0GЦK xM;#D>T,@;Vd"ɤX,UpCT׉!W.Wz6ș(:Xƅi_Qxߎe b8ӑ v;Xb-†Э_cw sjARg)z9&OQbzkB|5TͪnVkLx^&w=yy/DSv`jzL+&bE  Ac%I%<-+J*rf%y 2ȓ޽?z T v<  }$#&Y-H/x6& ";7 jh  !  m d "!-vH_1n~'3{q %e%! l ) )*H%Q OYx= 1ėؿ!Mţ-& $." p F =T3DRlul/vbq&_>07:1( ۫xW$"E.g`#zbd-NsAs;xNzJuB48 .ʼn go-\B3Rd|Kf=d23"ii2Q\ݛE92c |7Uc2*F/&U_4av Q~TP='Fq\DttP3M(Y O/ [qe YXF*ȋ=m\vUNp>f*.-" o+[trx /Qm۾_xyV`p06SacQWDm^5[.;-Ma&**2% Hj ]ڹk`}5z w>n)aU$O?kGkDs7AXB7- rźf;nt.CX̛"[-31Txx{vɨAtt]B:`<}">No%r *CDYjep왹Fuox~[Ѓ/T X`Ԋ"(*EJBWdֆTp$ggʀgiP+8[_aQ'BVT`o{:۳@C /#6dIX`oP} ɞ4GkAQ)yyJJ 2 e?0 eXxuBCdVW ܛ gx Wjjqq ~=HXwopy  _Mm_[~ yr:rY={i O߻ ; ՜ ࣅ 7mm_ ) {6U}]p,OAc}2x$*J"H2-ԍJ"shX XvJ]N9.2) ޖ,M 08IPiv8ngp\SMo>3,HD9*u 3<f"P8?Z5/)7!W}$ZXME?H,'!o|N91C*Yn/h}}}uh;RJ<gS+EQ.#$ _)Sϖ5clsLsF6#R':!d k-0O#D'XxjpOYX(K9E4\%'8VR0!= {̸'cZ30Xs(l^S#F.+;iGP5`.x/r6."_-$s #hu<)G䔍|Y n&ox>/rqOYkl%S :h!O}6dKy2aHvA;y4s.m(g"a[UO J !!E!!""@"""#;#z##$7$v$$%3%r%%&/&n&&'+'j''(((g(()$)d))*"*a**++^++,,\,,--[--..Y..//X//00W0011V1122V2233V3344W4455X5566Y667)7p778E8899a99:7:~:; ;T;;<* >h>>????@@_@@A8AABBYBBC2CzCD DTDDE.EwEFFQFFG,GuGHHPHHI,IuIJJQJJK-KwKL LTLLM1M{MNNXNNO6OOPP_PPQ>QQRRgRRSGSST&TqTUUQUUV1V{VWW[WWX;XXYYfYYZFZZ[$[g[[\3\w\\]C]]^^S^^__c__`/`s``a?aab bPbbccaccd-dqdde>eef fOffgg`ggh-hqhhi>iij jOjjkk`kkl-lqllm>mmn nOnnoo_oop,ppppq=qqr rNrrss_sst,tpttu=uuv vNvvww_wwx,xpxxy=yyz zNzz{{`{{|-|q||}=}}~~K~~Xހ"e.r;~G̈́R؅^&h0s:}DɊ MҋVڌ_%g-n4v;}BŒH˓ MДSՕXږ\ޗ`"c&f(i*k,m.n2xIӠ^.tDΣX(m<Ʀ Pڧc2vDΪW$i6{HѮZ(l:~ñLղ^,p>ǵ Pٶb0uB̹Uߺ#h6{Iӽ]+p? S,uO˜*süNė)rŻMƖ(qǺMȖ(qɺMʖ(r˻M̗)rͼNΗ*sϼOИ*tѽOҘ+tӽOԘ+tսO֘*s׼Oؘ*sټNژ*sۼNܗ*sݼNޗ)r߻N)rM)rMN%[3i AwN&\5k CyQ*`8oG} V/e>tM&]6lF|V/f ?vO)`:pJ%[4h9m >rCxI}N T&Z,` 2 f  8 l > s  E z  L S%Z,a4i;pCxKS&[.c7k ?tI@~7u.l%c[  R ! !J!!""C"""#;#y##$4$r$$%-%k%%&&&d&&''^''((W(())Q))* *K**++F++,,@,,,-;-y--.6.t../1/o//0,0k001'1f112#2b2233^3344Z4455V5566S6677P7788M889 9J99::C:::;:;x;;<2">a>>??Y??@@R@@A AKAABBDBBBC=C{CCD6DuDDE0EoEEF*FiFFG$GcGGHH]HHIIXIIJJRJJKKMKKL LHLLMMDMMNN?N~NNO;OzOOP8PwPPQ4QsQQR1RpRRS-SmSST*TjTTU(UgUUV%VeVVW#WcWWX!XaXXYYWYYZ ZHZZZ[8[t[[\(\d\\]]T]]^^C^^^_2_n__` `\``aaJaaab8bsbbc%c`ccddMddde:eueef&fbffggNgggh9hthhi%i`iijjKjjjk6kqkkl!l\llm mFmmmn0njnnooToopp>pxppq'qaqqrrJrrrs3smssttUttuu=uwuuv%vavvw!wawwx x_xxyy^yyzz\zz{{Z{{||W||}}T}}~~P~~ Lʀ HƁC>}9w3q,j%c\؈Tω KƊB8v.k#`ێUϏ IÐ˲Y.uJصf;ʷX.v ]QF:ݽ/Ҿ$vǿkaVMŸCÕ9Č0Ń'zqiȻaɳYʬQˤJ̝C͖<ΐ6ω0Ѓ*}$xrmhռcַ _׳ZخV٪RڦNۣKܟHݜEޙBߖ?=;y(bK5oY C~.iS?y*eQ=x*eR@{.iW F5q$`P@|1m"^OA~3p&bU H=z0m#`S G:w.k"^R F ; x / l # `  U  I>{3p(eZOD:w/l%bXMC9v/l%bY"g 7 | !!L!!""a""#2#w#$$G$$%%]%%&.&s&&'D''((Z(()+)q))*B**++X++,*,o,,-A--..X../)/o//0@0011W112(2n223?3344U445&5l556=6677T778%8k889=99::T::;%;k;;<=<<==T==>&>l>>?>??@@V@@A)AnAAB9B|BCCGCCDDVDDE!EeEEF0FtFFG@GGH HPHHII`IIJ,JpJJK=KKL LNLLMM_MMN,NqNNO>OOP PPPPQQcQQR1RvRRSDSSTTXTTU'UlUUV;VVW WOWWXXdXXY3YxYZZHZZ[[\[[\+\p\\]>]]^ ^Q^^__d__`2`v``aDaabbUbbc"cfccd,dmdde0eqeef4fuffg8gxggh;h|hhi>iijjAjjkkCkkllEllmmFmmnnGnnooHooppHppqqGqqrrFrrssEssttCttuuAuuuv>v}vvw:wywwx6xuxxy2yqyyz-zlzz{({g{{|#|a||}}[}}~~U~~Nˀ Gā@~8v0p6x>†Fɇ MЈS։Yۊ]!b%e(h*k,l-m.n.m-l+j)h%d!`ޘ[ٙVӚP̛ IŜA8v/m&cޠYԡNɢC:|BƥIͦPӧV٨\ީ a$f)j,m0p3t7x;}@òFɳ LϴRֵYݶa'i/q8zBǻ LѼWܽb+n7zDQ_£*nò4qĮ'dšXƕMNJBȼ7tɲ-kʨ#a˟X̖P͎ HΆ@~ϼ8vе1oѮ*iҧ$bӡ\ԛVՕQ֐ L׊G؆Bف=|ڻ9x۷5tܳ1pݯ.mެ*iߩ'f$d"aYw#\Az'` F,eL3lS;u"\ D~,gO8r!\ E/iT>y)cN:t#] F/jS=x'aL6q ! [ F 1 l  W  C ~ .iUB}.iVC~0kX E3n!\J8t'bQ@[8  ` !>!!""f""#E##$#$m$%%L%%&+&u&' 'U''(4(~())^))*=**++h++,G,,-'-r-..R../3/~/00^001?112 2k233L334-4y455Z556<6677h778I889*9u9: :U::;5;;<<_<<=>==>>h>>?G??@%@o@AAMAAB+BuBC CSCCD2D|DEEZEEF9FFGGbGGH@HHIIjIIJIJJK(KsKLLRLLM2M}MNN]NNO=OOPPhPPQHQQR)RtRS SUSST6TTUUcUUVDVVW&WrWXXTXXY6YYZZdZZ[F[[\'\r\]]R]]^1^{^__Y__`7``aa]aab9bbcc]ccd8ddeeZeef3f{fg gSggh3hhiimij jWjjkAkkl*lwlmm`mmnHnno1o~oppfpqqMqqr4rrsshsttOttu5uuvvgvwwMwwx2x~xyycyyzGzz{+{w{||[||}>}}~!~m~P2}Ɂ_A׃"mO0{Ɔ\=ӈhH݊(rQ0zōYTlɐ'>Ukǔ$ݕ9Nbuљ-@RduО*ߟ:HT`jät̥$|Ӧ+ڧ16:=?@ACDFHJLNQSVY] [E/~̽hS>)xdQ >Í,{jź ZƩIǚ:Ȋ+{mʾ`˱S̥H͚>Α6ψ.Ё'{"vrpnopr v$|+ۂ2܊;ݔFޟR߫_n#~5?_@`!Bb%Ef )Jk0Qq7XzAb *Km6Xy"De1SuAd1Tv"Eg7Z}+Ic}2I`w.D[r*AXo(?Vm'>Um'?Vm)AXp,D\s1Iax7Og&>Womft29Up   ,@Tgy ) 2!:"A#H$N%T&X'\(_)b*c+d,d-c.b/`0]1Z2V3Q4L5F6@78809':;<<=>?@ABCDEyFlG`HUIJJ@K6L.M&NOPQR STUVWXYZ[\] ^ _`abc d&e,f2g9hAiIjRk\lgmrnopqrstuvxy$z9{N|e}|~ǁ0Iawˍގ#2@NZfr|vk^QC4%޻ʼqY@& ƬǕ~hS>)ѺҪӚԌ~qeZPG?81,(%#""#%(-39AJT`lz,Fa~ }xsojea\XS O!K"G#D$@%=&9'5(1)-*)+%, -./01 2 3456789:;< = >?@A!B&C+D0E5F:G?HDIIJOKTLZM`NfOlPrQxRSTUVWXYZ[\]^_`abcefgh i)j1k:lBmInQoXp_qfrlsrtwu{vwxyz{|}~}zvrnid_YTNHB<60*$  &/9DO\jx²ҳ&8J[m (6DQ]iuЉђҚӡԧի֯ײشٶڶ۶ܵݳް߮~vmdZOD8,}iU@+ z o d YND9/% !"#$%&'|(v)p*j+e,`-[.V/S0O1L2I3G4E5C6B7A8@9?:?;???@@BADBGCJDNERFWG]HcIkJrK{LMNOPQRSTUW XY&Z4[C\Q]^^l_y`abcdefghijkmnopq'r0s8t?uGvNwUx[yazg{l|q}v~z}}xsmhb[UOJD>83-("  &-5>GPZdoz9$x=RNNK ԠV'$תyga)bØAH4:"y+ y<^%^";c\eL 7Ѳݍ[Ҁݠgi;PtYdz =?7܈3O3AHϋoko݌fdN0A޻_GQltL0ރV!8Nr TblD SQ ,d9QECLZjy7Ӂ5?-u@۟tSMPa24dMYg$Gۃ՘M]8'/ _d htrN}ܥ2l2;uI 6UvOMT[̳z#dQ gS&)t+9|EO͍gl7ܵș {d. ilvpES#>=k ȗ7YU,v#>CPGEvǻ6]k伔.zpqr~Cz<85F .2΂GbnH;)J8ZKI2}?3$.11twׄ(хQ,҆|C0~png_TJ=jH(+(x J@6\tr("C*!8)VTapf]mmr޻̋ݏ֢JDߦo,%}؎Ѡ+ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Kmcurv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Kmcurv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmchrmT{L&f\textno copyright, use freely libvips-8.9.1/libvips/colour/rad2float.c000066400000000000000000000154551361153320700202110ustar00rootroot00000000000000/* Convert Radiance 32bit packed format to float. * * 3/3/09 * - from LabQ2Lab and Radiance sources * 2/11/09 * - gtkdoc * 20/9/12 * - redo as a class * 13/12/12 * - tag output as scRGB, since it'll be 0-1 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Sections of this file from Greg Ward and Radiance with kind permission. The Radience copyright notice appears below. */ /* ==================================================================== * The Radiance Software License, Version 1.0 * * Copyright (c) 1990 - 2009 The Regents of the University of California, * through Lawrence Berkeley National Laboratory. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes Radiance software * (http://radsite.lbl.gov/) * developed by the Lawrence Berkeley National Laboratory * (http://www.lbl.gov/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Radiance," "Lawrence Berkeley National Laboratory" * and "The Regents of the University of California" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact radiance@radsite.lbl.gov. * * 5. Products derived from this software may not be called "Radiance", * nor may "Radiance" appear in their name, without prior written * permission of Lawrence Berkeley National Laboratory. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of Lawrence Berkeley National Laboratory. For more * information on Lawrence Berkeley National Laboratory, please see * . */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* Begin copy-paste from Radiance sources. */ #define RED 0 #define GRN 1 #define BLU 2 #define CIEX 0 /* or, if input is XYZ... */ #define CIEY 1 #define CIEZ 2 #define EXP 3 /* exponent same for either format */ #define COLXS 128 /* excess used for exponent */ #define WHT 3 /* used for RGBPRIMS type */ #undef BYTE #define BYTE unsigned char /* 8-bit unsigned integer */ typedef BYTE COLR[4]; /* red, green, blue (or X,Y,Z), exponent */ typedef float COLORV; typedef COLORV COLOR[3]; /* red, green, blue (or X,Y,Z) */ #define copycolor(c1,c2) ((c1)[0]=(c2)[0],(c1)[1]=(c2)[1],(c1)[2]=(c2)[2]) static void colr_color(COLOR col, COLR clr) /* convert short to float color */ { if (clr[EXP] == 0) col[RED] = col[GRN] = col[BLU] = 0.0; else { double f = ldexp(1.0, (int)clr[EXP]-(COLXS+8)); col[RED] = (clr[RED] + 0.5)*f; col[GRN] = (clr[GRN] + 0.5)*f; col[BLU] = (clr[BLU] + 0.5)*f; } } /* End copy-paste from Radiance sources. */ typedef VipsColourCode VipsRad2float; typedef VipsColourCodeClass VipsRad2floatClass; G_DEFINE_TYPE( VipsRad2float, vips_rad2float, VIPS_TYPE_COLOUR_CODE ); static void vips_rad2float_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { COLR *inp = (COLR *) in[0]; COLOR *outbuf = (COLOR *) out; int i; for( i = 0; i < width; i++ ) colr_color( outbuf[i], inp[i] ); } static void vips_rad2float_class_init( VipsRad2floatClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "rad2float"; object_class->description = _( "unpack Radiance coding to float RGB" ); colour_class->process_line = vips_rad2float_line; } static void vips_rad2float_init( VipsRad2float *rad2float ) { VipsColour *colour = VIPS_COLOUR( rad2float ); VipsColourCode *code = VIPS_COLOUR_CODE( rad2float ); colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_scRGB; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 3; code->input_coding = VIPS_CODING_RAD; } /** * vips_rad2float: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Unpack a RAD (#VIPS_CODING_RAD) image to a three-band float image. * * See also: vips_float2rad(), vips_LabQ2LabS(). * * Returns: 0 on success, -1 on error. */ int vips_rad2float( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "rad2float", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/sRGB2HSV.c000066400000000000000000000077271361153320700175760ustar00rootroot00000000000000/* to HSV ... useful for compatibility with other packages * * 9/6/15 * - from LabS2Lab.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pcolour.h" typedef VipsColourCode VipssRGB2HSV; typedef VipsColourCodeClass VipssRGB2HSVClass; G_DEFINE_TYPE( VipssRGB2HSV, vips_sRGB2HSV, VIPS_TYPE_COLOUR_CODE ); static void vips_sRGB2HSV_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { unsigned char *p = (unsigned char *) in[0]; unsigned char *q = (unsigned char *) out; int i; for( i = 0; i < width; i++ ) { unsigned char c_max; unsigned char c_min; float secondary_diff; float wrap_around_hue; if( p[1] < p[2] ) { if( p[2] < p[0] ) { /* Center red (at top). */ c_max = p[0]; c_min = p[1]; secondary_diff = p[1] - p[2]; wrap_around_hue = 255.0; } else { /* Center blue. */ c_max = p[2]; c_min = VIPS_MIN( p[1], p[0] ); secondary_diff = p[0] - p[1]; wrap_around_hue = 170.0; } } else { if( p[1] < p[0] ) { /* Center red (at bottom) */ c_max = p[0]; c_min = p[2]; secondary_diff = p[1] - p[2]; wrap_around_hue = 0.0; } else { /* Center green */ c_max = p[1]; c_min = VIPS_MIN( p[2], p[0] ); secondary_diff = p[2] - p[0]; wrap_around_hue = 85.0; } } if( c_max == 0 ) { q[0] = 0; q[1] = 0; q[2] = 0; } else { unsigned char delta; q[2] = c_max; delta = c_max - c_min; if( delta == 0 ) q[0] = 0; else q[0] = 42.5 * (secondary_diff / (float) delta) + wrap_around_hue; q[1] = delta * 255.0 / (float) c_max; } p += 3; q += 3; } } static void vips_sRGB2HSV_class_init( VipssRGB2HSVClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "sRGB2HSV"; object_class->description = _( "transform sRGB to HSV" ); colour_class->process_line = vips_sRGB2HSV_line; } static void vips_sRGB2HSV_init( VipssRGB2HSV *sRGB2HSV ) { VipsColour *colour = VIPS_COLOUR( sRGB2HSV ); VipsColourCode *code = VIPS_COLOUR_CODE( sRGB2HSV ); colour->interpretation = VIPS_INTERPRETATION_HSV; colour->format = VIPS_FORMAT_UCHAR; colour->bands = 3; colour->input_bands = 3; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_UCHAR; code->input_interpretation = VIPS_INTERPRETATION_sRGB; } /** * vips_sRGB2HSV: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert to HSV. * * HSV is a crude polar coordinate system for RGB images. It is provided for * compatibility with other image processing systems. See vips_Lab2LCh() for a * much better colour space. * * See also: vips_HSV2sRGB(), vips_Lab2LCh(). * * Returns: 0 on success, -1 on error. */ int vips_sRGB2HSV( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "sRGB2HSV", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/sRGB2scRGB.c000066400000000000000000000163251361153320700200700ustar00rootroot00000000000000/* Turn displayable rgb files to scRGB. * * Modified: * 15/11/94 JC * - memory leak fixed * - error message added * 16/11/94 JC * - partialed * 21/9/12 * - redone as a class * - sRGB only, support for other RGBs is now via lcms * 6/11/12 * - add 16-bit sRGB import * 11/12/12 * - cut about to make sRGB2scRGB.c * 12/2/15 * - add 16-bit alpha handling * 26/2/16 * - look for RGB16 tag, not just ushort, for the 16-bit path * 24/11/17 lovell * - special path for 3 and 4 band images */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* We can't use VipsColourCode as our parent class. We want to handle * alpha ourselves so we can get 16 -> 8 bit conversion right. */ typedef struct _VipssRGB2scRGB { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipssRGB2scRGB; typedef VipsOperationClass VipssRGB2scRGBClass; G_DEFINE_TYPE( VipssRGB2scRGB, vips_sRGB2scRGB, VIPS_TYPE_OPERATION ); /* Convert a buffer of 8-bit pixels. */ static void vips_sRGB2scRGB_line_8( float * restrict q, VipsPel * restrict p, int extra_bands, int width ) { int i, j; if( extra_bands == 0 ) { for( i = 0; i < width; i++ ) { q[0] = vips_v2Y_8[p[0]]; q[1] = vips_v2Y_8[p[1]]; q[2] = vips_v2Y_8[p[2]]; p += 3; q += 3; } } else if( extra_bands == 1 ) { for( i = 0; i < width; i++ ) { q[0] = vips_v2Y_8[p[0]]; q[1] = vips_v2Y_8[p[1]]; q[2] = vips_v2Y_8[p[2]]; q[3] = p[3]; p += 4; q += 4; } } else { for( i = 0; i < width; i++ ) { q[0] = vips_v2Y_8[p[0]]; q[1] = vips_v2Y_8[p[1]]; q[2] = vips_v2Y_8[p[2]]; p += 3; q += 3; for( j = 0; j < extra_bands; j++ ) q[j] = p[j]; p += extra_bands; q += extra_bands; } } } /* Convert a buffer of 16-bit pixels. */ static void vips_sRGB2scRGB_line_16( float * restrict q, unsigned short * restrict p, int extra_bands, int width ) { int i, j; if( extra_bands == 0 ) { for( i = 0; i < width; i++ ) { q[0] = vips_v2Y_16[p[0]]; q[1] = vips_v2Y_16[p[1]]; q[2] = vips_v2Y_16[p[2]]; p += 3; q += 3; } } else if( extra_bands == 1 ) { for( i = 0; i < width; i++ ) { q[0] = vips_v2Y_16[p[0]]; q[1] = vips_v2Y_16[p[1]]; q[2] = vips_v2Y_16[p[2]]; q[3] = p[3] / 256.0; p += 4; q += 4; } } else { for( i = 0; i < width; i++ ) { q[0] = vips_v2Y_16[p[0]]; q[1] = vips_v2Y_16[p[1]]; q[2] = vips_v2Y_16[p[2]]; p += 3; q += 3; for( j = 0; j < extra_bands; j++ ) q[j] = p[j] / 256.0; p += extra_bands; q += extra_bands; } } } static int vips_sRGB2scRGB_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; VipsImage *in = ir->im; int y; if( vips_region_prepare( ir, r ) ) return( -1 ); VIPS_GATE_START( "vips_sRGB2scRGB_gen: work" ); if( in->BandFmt == VIPS_FORMAT_UCHAR ) { vips_col_make_tables_RGB_8(); for( y = 0; y < r->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); float *q = (float *) VIPS_REGION_ADDR( or, r->left, r->top + y ); vips_sRGB2scRGB_line_8( q, p, in->Bands - 3, r->width ); } } else { vips_col_make_tables_RGB_16(); for( y = 0; y < r->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); float *q = (float *) VIPS_REGION_ADDR( or, r->left, r->top + y ); vips_sRGB2scRGB_line_16( q, (unsigned short *) p, in->Bands - 3, r->width ); } } VIPS_GATE_STOP( "vips_sRGB2scRGB_gen: work" ); return( 0 ); } static int vips_sRGB2scRGB_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipssRGB2scRGB *sRGB2scRGB = (VipssRGB2scRGB *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; VipsImage *out; VipsBandFormat format; if( VIPS_OBJECT_CLASS( vips_sRGB2scRGB_parent_class )-> build( object ) ) return( -1 ); in = sRGB2scRGB->in; if( vips_check_bands_atleast( class->nickname, in, 3 ) ) return( -1 ); format = in->Type == VIPS_INTERPRETATION_RGB16 ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR; if( in->BandFmt != format ) { if( vips_cast( in, &t[0], format, NULL ) ) return( -1 ); } else { t[0] = in; g_object_ref( t[0] ); } in = t[0]; out = vips_image_new(); if( vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) { g_object_unref( out ); return( -1 ); } out->Type = VIPS_INTERPRETATION_scRGB; out->BandFmt = VIPS_FORMAT_FLOAT; if( vips_image_generate( out, vips_start_one, vips_sRGB2scRGB_gen, vips_stop_one, in, sRGB2scRGB ) ) { g_object_unref( out ); return( -1 ); } g_object_set( object, "out", out, NULL ); return( 0 ); } static void vips_sRGB2scRGB_class_init( VipssRGB2scRGBClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "sRGB2scRGB"; object_class->description = _( "convert an sRGB image to scRGB" ); object_class->build = vips_sRGB2scRGB_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipssRGB2scRGB, in ) ); VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipssRGB2scRGB, out ) ); } static void vips_sRGB2scRGB_init( VipssRGB2scRGB *sRGB2scRGB ) { } /** * vips_sRGB2scRGB: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert an sRGB image to scRGB. The input image can be 8 or 16-bit. * * If the input image is tagged as #VIPS_INTERPRETATION_RGB16, any extra * channels after RGB are divided by 256. Thus, scRGB alpha is * always 0 - 255.99. * * See also: vips_scRGB2XYZ(), vips_scRGB2sRGB(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_sRGB2scRGB( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "sRGB2scRGB", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/scRGB2BW.c000066400000000000000000000143311361153320700175760ustar00rootroot00000000000000/* Turn scRGB into greyscale. * * 17/4/15 * - from scRGB2BW.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* We can't use VipsColourCode as our parent class. We want to handle * alpha ourselves so we can get 16 -> 8 bit conversion right. */ typedef struct _VipsscRGB2BW { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int depth; } VipsscRGB2BW; typedef VipsOperationClass VipsscRGB2BWClass; G_DEFINE_TYPE( VipsscRGB2BW, vips_scRGB2BW, VIPS_TYPE_OPERATION ); /* Process a buffer of data. */ static void vips_scRGB2BW_line_8( VipsPel * restrict q, float * restrict p, int extra_bands, int width ) { int i, j; for( i = 0; i < width; i++ ) { float R = p[0]; float G = p[1]; float B = p[2]; int g; int or; vips_col_scRGB2BW_8( R, G, B, &g, &or ); p += 3; q[0] = g; q += 1; for( j = 0; j < extra_bands; j++ ) q[j] = p[j]; p += extra_bands; q += extra_bands; } } static void vips_scRGB2BW_line_16( unsigned short * restrict q, float * restrict p, int extra_bands, int width ) { int i, j; for( i = 0; i < width; i++ ) { float R = p[0]; float G = p[1]; float B = p[2]; int g; int or; vips_col_scRGB2BW_16( R, G, B, &g, &or ); p += 3; q[0] = g; q += 1; for( j = 0; j < extra_bands; j++ ) q[j] = VIPS_FCLIP( 0, p[j] * 256.0, USHRT_MAX ); p += extra_bands; q += extra_bands; } } static int vips_scRGB2BW_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsscRGB2BW *scRGB2BW = (VipsscRGB2BW *) b; VipsRect *r = &or->valid; VipsImage *in = ir->im; int y; if( vips_region_prepare( ir, r ) ) return( -1 ); VIPS_GATE_START( "vips_scRGB2BW_gen: work" ); for( y = 0; y < r->height; y++ ) { float *p = (float *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *q = (VipsPel *) VIPS_REGION_ADDR( or, r->left, r->top + y ); if( scRGB2BW->depth == 16 ) vips_scRGB2BW_line_16( (unsigned short *) q, p, in->Bands - 3, r->width ); else vips_scRGB2BW_line_8( q, p, in->Bands - 3, r->width ); } VIPS_GATE_STOP( "vips_scRGB2BW_gen: work" ); return( 0 ); } static int vips_scRGB2BW_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsscRGB2BW *scRGB2BW = (VipsscRGB2BW *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; VipsBandFormat format; VipsInterpretation interpretation; VipsImage *out; if( VIPS_OBJECT_CLASS( vips_scRGB2BW_parent_class )->build( object ) ) return( -1 ); in = scRGB2BW->in; if( vips_check_bands_atleast( class->nickname, in, 3 ) ) return( -1 ); switch( scRGB2BW->depth ) { case 16: interpretation = VIPS_INTERPRETATION_GREY16; format = VIPS_FORMAT_USHORT; break; case 8: interpretation = VIPS_INTERPRETATION_B_W; format = VIPS_FORMAT_UCHAR; break; default: vips_error( class->nickname, "%s", _( "depth must be 8 or 16" ) ); return( -1 ); } if( vips_cast_float( in, &t[0], NULL ) ) return( -1 ); in = t[0]; out = vips_image_new(); if( vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) { g_object_unref( out ); return( -1 ); } out->Type = interpretation; out->BandFmt = format; out->Bands = in->Bands - 2; if( vips_image_generate( out, vips_start_one, vips_scRGB2BW_gen, vips_stop_one, in, scRGB2BW ) ) { g_object_unref( out ); return( -1 ); } g_object_set( object, "out", out, NULL ); return( 0 ); } static void vips_scRGB2BW_class_init( VipsscRGB2BWClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "scRGB2BW"; object_class->description = _( "convert scRGB to BW" ); object_class->build = vips_scRGB2BW_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsscRGB2BW, in ) ); VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsscRGB2BW, out ) ); VIPS_ARG_INT( class, "depth", 130, _( "Depth" ), _( "Output device space depth in bits" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsscRGB2BW, depth ), 8, 16, 8 ); } static void vips_scRGB2BW_init( VipsscRGB2BW *scRGB2BW ) { scRGB2BW->depth = 8; } /** * vips_scRGB2BW: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @depth: depth of output image in bits * * Convert an scRGB image to greyscale. Set @depth to 16 to get 16-bit output. * * If @depth is 16, any extra channels after RGB are * multiplied by 256. * * See also: vips_LabS2LabQ(), vips_sRGB2scRGB(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_scRGB2BW( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "scRGB2BW", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/scRGB2XYZ.c000066400000000000000000000052011361153320700177540ustar00rootroot00000000000000/* Turn scRGB to XYZ colourspace. * * Modified: * 29/5/02 JC * - from lab2xyz * 2/11/09 * - gtkdoc * - cleanups * 20/9/12 * redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsscRGB2XYZ; typedef VipsColourTransformClass VipsscRGB2XYZClass; G_DEFINE_TYPE( VipsscRGB2XYZ, vips_scRGB2XYZ, VIPS_TYPE_COLOUR_TRANSFORM ); void vips_scRGB2XYZ_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int i; for( i = 0; i < width; i++ ) { float R = p[0]; float G = p[1]; float B = p[2]; float X, Y, Z; p += 3; vips_col_scRGB2XYZ( R, G, B, &X, &Y, &Z ); q[0] = X; q[1] = Y; q[2] = Z; q += 3; } } static void vips_scRGB2XYZ_class_init( VipsscRGB2XYZClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "scRGB2XYZ"; object_class->description = _( "transform scRGB to XYZ" ); colour_class->process_line = vips_scRGB2XYZ_line; } static void vips_scRGB2XYZ_init( VipsscRGB2XYZ *scRGB2XYZ ) { VipsColour *colour = VIPS_COLOUR( scRGB2XYZ ); colour->interpretation = VIPS_INTERPRETATION_XYZ; } /** * vips_scRGB2XYZ: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Turn XYZ to scRGB. * * Returns: 0 on success, -1 on error */ int vips_scRGB2XYZ( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "scRGB2XYZ", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/scRGB2sRGB.c000066400000000000000000000160231361153320700200630ustar00rootroot00000000000000/* Turn scRGB files into displayable rgb. * * Author: J-P. Laurent * Modified: * 15/11/94 JC * - error message added * - out->Type set to IM_TYPE_RGB * - memory leak fixed * 16/11/94 JC * - uses im_wrapone() * 15/2/95 JC * - oops! now uses PEL, not float for output pointer * 2/1/96 JC * - sometimes produced incorrect result at extrema * - reformatted * - now uses IM_RINT() and clip() * 18/9/96 JC * - some speed-ups ... 3x faster * - slightly less accurate, but who cares * - added out-of-mem check for table build * 21/9/12 * - redone as a class * - sRGB only, support for other RGBs is now via lcms * 6/11/12 * - added 16-bit option * 11/12/12 * - cut about to make scRGB2sRGB.c * 12/2/15 * - add 16-bit alpha handling */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* We can't use VipsColourCode as our parent class. We want to handle * alpha ourselves so we can get 16 -> 8 bit conversion right. */ typedef struct _VipsscRGB2sRGB { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int depth; } VipsscRGB2sRGB; typedef VipsOperationClass VipsscRGB2sRGBClass; G_DEFINE_TYPE( VipsscRGB2sRGB, vips_scRGB2sRGB, VIPS_TYPE_OPERATION ); /* Process a buffer of data. */ static void vips_scRGB2sRGB_line_8( VipsPel * restrict q, float * restrict p, int extra_bands, int width ) { int i, j; for( i = 0; i < width; i++ ) { float R = p[0]; float G = p[1]; float B = p[2]; int r, g, b; int or; vips_col_scRGB2sRGB_8( R, G, B, &r, &g, &b, &or ); p += 3; q[0] = r; q[1] = g; q[2] = b; q += 3; for( j = 0; j < extra_bands; j++ ) q[j] = p[j]; p += extra_bands; q += extra_bands; } } static void vips_scRGB2sRGB_line_16( unsigned short * restrict q, float * restrict p, int extra_bands, int width ) { int i, j; for( i = 0; i < width; i++ ) { float R = p[0]; float G = p[1]; float B = p[2]; int r, g, b; int or; vips_col_scRGB2sRGB_16( R, G, B, &r, &g, &b, &or ); p += 3; q[0] = r; q[1] = g; q[2] = b; q += 3; for( j = 0; j < extra_bands; j++ ) q[j] = VIPS_FCLIP( 0, p[j] * 256.0, USHRT_MAX ); p += extra_bands; q += extra_bands; } } static int vips_scRGB2sRGB_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsscRGB2sRGB *scRGB2sRGB = (VipsscRGB2sRGB *) b; VipsRect *r = &or->valid; VipsImage *in = ir->im; int y; if( vips_region_prepare( ir, r ) ) return( -1 ); VIPS_GATE_START( "vips_scRGB2sRGB_gen: work" ); for( y = 0; y < r->height; y++ ) { float *p = (float *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *q = (VipsPel *) VIPS_REGION_ADDR( or, r->left, r->top + y ); if( scRGB2sRGB->depth == 16 ) vips_scRGB2sRGB_line_16( (unsigned short *) q, p, in->Bands - 3, r->width ); else vips_scRGB2sRGB_line_8( q, p, in->Bands - 3, r->width ); } VIPS_GATE_STOP( "vips_scRGB2sRGB_gen: work" ); return( 0 ); } static int vips_scRGB2sRGB_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsscRGB2sRGB *scRGB2sRGB = (VipsscRGB2sRGB *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; VipsBandFormat format; VipsInterpretation interpretation; VipsImage *out; if( VIPS_OBJECT_CLASS( vips_scRGB2sRGB_parent_class )->build( object ) ) return( -1 ); in = scRGB2sRGB->in; if( vips_check_bands_atleast( class->nickname, in, 3 ) ) return( -1 ); switch( scRGB2sRGB->depth ) { case 16: interpretation = VIPS_INTERPRETATION_RGB16; format = VIPS_FORMAT_USHORT; break; case 8: interpretation = VIPS_INTERPRETATION_sRGB; format = VIPS_FORMAT_UCHAR; break; default: vips_error( class->nickname, "%s", _( "depth must be 8 or 16" ) ); return( -1 ); } if( vips_cast_float( in, &t[0], NULL ) ) return( -1 ); in = t[0]; out = vips_image_new(); if( vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) { g_object_unref( out ); return( -1 ); } out->Type = interpretation; out->BandFmt = format; if( vips_image_generate( out, vips_start_one, vips_scRGB2sRGB_gen, vips_stop_one, in, scRGB2sRGB ) ) { g_object_unref( out ); return( -1 ); } g_object_set( object, "out", out, NULL ); return( 0 ); } static void vips_scRGB2sRGB_class_init( VipsscRGB2sRGBClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "scRGB2sRGB"; object_class->description = _( "convert an scRGB image to sRGB" ); object_class->build = vips_scRGB2sRGB_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsscRGB2sRGB, in ) ); VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsscRGB2sRGB, out ) ); VIPS_ARG_INT( class, "depth", 130, _( "Depth" ), _( "Output device space depth in bits" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsscRGB2sRGB, depth ), 8, 16, 8 ); } static void vips_scRGB2sRGB_init( VipsscRGB2sRGB *scRGB2sRGB ) { scRGB2sRGB->depth = 8; } /** * vips_scRGB2sRGB: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @depth: depth of output image in bits * * Convert an scRGB image to sRGB. Set @depth to 16 to get 16-bit output. * * If @depth is 16, any extra channels after RGB are * multiplied by 256. * * See also: vips_LabS2LabQ(), vips_sRGB2scRGB(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_scRGB2sRGB( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "scRGB2sRGB", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/colour/wrap-profiles.sh000077500000000000000000000017361361153320700213150ustar00rootroot00000000000000#!/bin/bash # code up the binary files in $1 as a set of name / string pairs # in $2 # we have to use arrays for the strings, since MSVC won't allow string # literals larger than 64kb in=$1 out=$2 echo "/* this file generated automatically, do not edit */" > $out echo "" >> $out echo "#include \"profiles.h\"" >> $out echo "" >> $out profile_names= for file in $in/*; do root=${file%.icm} base=${root##*/} profile_name=vips__profile_fallback_$base profile_names="$profile_names $profile_name" echo "static VipsProfileFallback $profile_name = {" >> $out echo " \"$base\"," >> $out echo " $(stat --format=%s $file)," >> $out echo " {" >> $out hexdump -v -e '" 0x" 1/1 "%02X,"' $file | fmt >> $out echo " }" >> $out echo "};" >> $out echo >> $out done echo "VipsProfileFallback *vips__profile_fallback_table[] = {" >> $out for profile_name in $profile_names; do echo " &$profile_name," >> $out done echo " NULL" >> $out echo "};" >> $out libvips-8.9.1/libvips/conversion/000077500000000000000000000000001361153320700170375ustar00rootroot00000000000000libvips-8.9.1/libvips/conversion/Makefile.am000066400000000000000000000015261361153320700210770ustar00rootroot00000000000000noinst_LTLIBRARIES = libconversion.la libconversion_la_SOURCES = \ switch.c \ transpose3d.c \ composite.cpp \ smartcrop.c \ conversion.c \ pconversion.h \ tilecache.c \ gamma.c \ sequential.c \ flatten.c \ premultiply.c \ unpremultiply.c \ byteswap.c \ cache.c \ copy.c \ embed.c \ flip.c \ insert.c \ join.c \ arrayjoin.c \ extract.c \ replicate.c \ cast.c \ bandjoin.c \ bandrank.c \ recomb.c \ bandmean.c \ bandfold.c \ bandunfold.c \ bandbool.c \ bandary.h \ bandary.c \ rot.c \ rot45.c \ autorot.c \ ifthenelse.c \ falsecolour.c \ msb.c \ grid.c \ scale.c \ wrap.c \ subsample.c \ zoom.c # gcc annoyingly warns about clang pragmas, and does not support suppressing # the warning with a gcc pragma AM_CPPFLAGS = \ -I${top_srcdir}/libvips/include \ @VIPS_CFLAGS@ @VIPS_INCLUDES@ \ -Wno-unknown-pragmas libvips-8.9.1/libvips/conversion/arrayjoin.c000066400000000000000000000260171361153320700212070ustar00rootroot00000000000000/* join an array of images together * * 11/12/15 * - from join.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsArrayjoin { VipsConversion parent_instance; /* Params. */ VipsArrayImage *in; int across; int shim; VipsArea *background; VipsAlign halign; VipsAlign valign; int hspacing; int vspacing; int down; VipsRect *rects; } VipsArrayjoin; typedef VipsConversionClass VipsArrayjoinClass; G_DEFINE_TYPE( VipsArrayjoin, vips_arrayjoin, VIPS_TYPE_CONVERSION ); static int vips_arrayjoin_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsArrayjoin *join = (VipsArrayjoin *) b; VipsRect *r = &or->valid; int n = VIPS_AREA( join->in )->n; int i; /* Does this rect fit within one of our inputs? If it does, we * can pass just the request on. */ for( i = 0; i < n; i++ ) if( vips_rect_includesrect( &join->rects[i], r ) ) return( vips__insert_just_one( or, ir[i], join->rects[i].left, join->rects[i].top ) ); /* Output requires more than one input. Paste all touching inputs into * the output. */ for( i = 0; i < n; i++ ) if( vips__insert_paste_region( or, ir[i], &join->rects[i] ) ) return( -1 ); return( 0 ); } static int vips_arrayjoin_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsArrayjoin *join = (VipsArrayjoin *) object; VipsImage **in; int n; VipsImage **format; VipsImage **band; VipsImage **size; int hspacing; int vspacing; int output_width; int output_height; int i; if( VIPS_OBJECT_CLASS( vips_arrayjoin_parent_class )->build( object ) ) return( -1 ); in = vips_array_image_get( join->in, &n ); /* Array length zero means error. */ if( n == 0 ) return( -1 ); /* Move all input images to a common format and number of bands. */ format = (VipsImage **) vips_object_local_array( object, n ); if( vips__formatalike_vec( in, format, n ) ) return( -1 ); in = format; /* We have to include the number of bands in @background in our * calculation. */ band = (VipsImage **) vips_object_local_array( object, n ); if( vips__bandalike_vec( class->nickname, in, band, n, join->background->n ) ) return( -1 ); in = band; /* Now sizealike: search for the largest image. */ hspacing = in[0]->Xsize; vspacing = in[0]->Ysize; for( i = 1; i < n; i++ ) { if( in[i]->Xsize > hspacing ) hspacing = in[i]->Xsize; if( in[i]->Ysize > vspacing ) vspacing = in[i]->Ysize; } if( !vips_object_argument_isset( object, "hspacing" ) ) join->hspacing = hspacing; if( !vips_object_argument_isset( object, "vspacing" ) ) join->vspacing = vspacing; hspacing = join->hspacing; vspacing = join->vspacing; if( !vips_object_argument_isset( object, "across" ) ) join->across = n; /* How many images down the grid? */ join->down = VIPS_ROUND_UP( n, join->across ) / join->across; /* The output size. */ output_width = hspacing * join->across + join->shim * (join->across - 1); output_height = vspacing * join->down + join->shim * (join->down - 1); /* Make a rect for the position of each input. */ join->rects = VIPS_ARRAY( join, n, VipsRect ); for( i = 0; i < n; i++ ) { int x = i % join->across; int y = i / join->across; join->rects[i].left = x * (hspacing + join->shim); join->rects[i].top = y * (vspacing + join->shim); join->rects[i].width = hspacing; join->rects[i].height = vspacing; /* In the centre of the array, we make width / height larger * by shim. */ if( x != join->across - 1 ) join->rects[i].width += join->shim; if( y != join->down - 1 ) join->rects[i].height += join->shim; /* The right edge of the final image is stretched to the right * to fill the whole row. */ if( i == n - 1 ) join->rects[i].width = output_width - join->rects[i].left; } /* Each image must be cropped and aligned within an @hspacing by * @vspacing box. */ size = (VipsImage **) vips_object_local_array( object, n ); for( i = 0; i < n; i++ ) { int left, top; int width, height; /* Compiler warnings. */ left = 0; top = 0; switch( join->halign ) { case VIPS_ALIGN_LOW: left = 0; break; case VIPS_ALIGN_CENTRE: left = (hspacing - in[i]->Xsize) / 2; break; case VIPS_ALIGN_HIGH: left = hspacing - in[i]->Xsize; break; default: g_assert_not_reached(); break; } switch( join->valign ) { case VIPS_ALIGN_LOW: top = 0; break; case VIPS_ALIGN_CENTRE: top = (vspacing - in[i]->Ysize) / 2; break; case VIPS_ALIGN_HIGH: top = vspacing - in[i]->Ysize; break; default: g_assert_not_reached(); break; } width = join->rects[i].width; height = join->rects[i].height; if( vips_embed( in[i], &size[i], left, top, width, height, "extend", VIPS_EXTEND_BACKGROUND, "background", join->background, NULL ) ) return( -1 ); } if( vips_image_pipeline_array( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, size ) ) return( -1 ); conversion->out->Xsize = output_width; conversion->out->Ysize = output_height; if( vips_image_generate( conversion->out, vips_start_many, vips_arrayjoin_gen, vips_stop_many, size, join ) ) return( -1 ); return( 0 ); } static void vips_arrayjoin_class_init( VipsArrayjoinClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_arrayjoin_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "arrayjoin"; vobject_class->description = _( "join an array of images" ); vobject_class->build = vips_arrayjoin_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_BOXED( class, "in", -1, _( "Input" ), _( "Array of input images" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, in ), VIPS_TYPE_ARRAY_IMAGE ); VIPS_ARG_INT( class, "across", 4, _( "Across" ), _( "Number of images across grid" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, across ), 1, 1000000, 1 ); VIPS_ARG_INT( class, "shim", 5, _( "Shim" ), _( "Pixels between images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, shim ), 0, 1000000, 0 ); VIPS_ARG_BOXED( class, "background", 6, _( "Background" ), _( "Colour for new pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, background ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_ENUM( class, "halign", 7, _( "Horizontal align" ), _( "Align on the left, centre or right" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, halign ), VIPS_TYPE_ALIGN, VIPS_ALIGN_LOW ); VIPS_ARG_ENUM( class, "valign", 8, _( "Vertical align" ), _( "Align on the top, centre or bottom" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, valign ), VIPS_TYPE_ALIGN, VIPS_ALIGN_LOW ); VIPS_ARG_INT( class, "hspacing", 9, _( "Horizontal spacing" ), _( "Horizontal spacing between images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, hspacing ), 1, 1000000, 1 ); VIPS_ARG_INT( class, "vspacing", 10, _( "Vertical spacing" ), _( "Vertical spacing between images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, vspacing ), 1, 1000000, 1 ); } static void vips_arrayjoin_init( VipsArrayjoin *join ) { /* Init our instance fields. */ join->background = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), 1 ); ((double *) (join->background->data))[0] = 0.0; } static int vips_arrayjoinv( VipsImage **in, VipsImage **out, int n, va_list ap ) { VipsArrayImage *array; int result; array = vips_array_image_new( in, n ); result = vips_call_split( "arrayjoin", ap, array, out ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } /** * vips_arrayjoin: * @in: (array length=n) (transfer none): array of input images * @out: (out): output image * @n: number of input images * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @across: %gint, number of images per row * * @shim: %gint, space between images, in pixels * * @background: #VipsArrayDouble, background ink colour * * @halign: #VipsAlign, low, centre or high alignment * * @valign: #VipsAlign, low, centre or high alignment * * @hspacing: %gint, horizontal distance between images * * @vspacing: %gint, vertical distance between images * * Lay out the images in @in in a grid. The grid is @across images across and * however high is necessary to use up all of @in. Images are set down * left-to-right and top-to-bottom. @across defaults to @n. * * Each input image is placed with a box of size @hspacing by @vspacing * pixels and cropped. These default to the largest width and largest height * of the input images. * * Space between images is filled with @background. This defaults to 0 * (black). * * Images are positioned within their @hspacing by @vspacing box at low, * centre or high coordinate values, controlled by @halign and @valign. These * default to left-top. * * Boxes are joined and separated by @shim pixels. This defaults to 0. * * If the number of bands in the input images differs, all but one of the * images must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the n-band images are operated upon. * * The input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * See also: vips_join(), vips_insert(). * * Returns: 0 on success, -1 on error */ int vips_arrayjoin( VipsImage **in, VipsImage **out, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_arrayjoinv( in, out, n, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/autorot.c000066400000000000000000000140631361153320700207040ustar00rootroot00000000000000/* autorot * * 19/10/14 * - from jpegload * 12/4/16 * - test and remove orientation from every ifd * 6/10/18 * - don't remove orientation if it's one of the cases we don't handle */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include "pconversion.h" typedef struct _VipsAutorot { VipsConversion parent_instance; VipsImage *in; VipsAngle angle; } VipsAutorot; typedef VipsConversionClass VipsAutorotClass; G_DEFINE_TYPE( VipsAutorot, vips_autorot, VIPS_TYPE_CONVERSION ); /** * vips_autorot_get_angle: * @image: image to fetch orientation from * * Examine the metadata on @im and return the #VipsAngle to rotate by to turn * the image upright. * * See also: vips_autorot(). * * Returns: the #VipsAngle to rotate by to make the image upright. */ VipsAngle vips_autorot_get_angle( VipsImage *im ) { int orientation; VipsAngle angle; if( !vips_image_get_typeof( im, VIPS_META_ORIENTATION ) || vips_image_get_int( im, VIPS_META_ORIENTATION, &orientation ) ) orientation = 1; switch( orientation ) { case 6: angle = VIPS_ANGLE_D90; break; case 8: angle = VIPS_ANGLE_D270; break; case 3: angle = VIPS_ANGLE_D180; break; default: /* Other values do rotate + mirror, don't bother handling them * though, how common can mirroring be. */ angle = VIPS_ANGLE_D0; break; } return( angle ); } /* TRUE if this is one of the cases we handle. */ static gboolean vips_autorot_handled( VipsImage *im ) { int orientation; gboolean handled; if( !vips_image_get_typeof( im, VIPS_META_ORIENTATION ) || vips_image_get_int( im, VIPS_META_ORIENTATION, &orientation ) ) orientation = 1; switch( orientation ) { case 1: case 3: case 6: case 8: handled = TRUE; break; default: handled = FALSE; break; } return( handled ); } static void * vips_autorot_remove_angle_sub( VipsImage *image, const char *field, GValue *value, void *my_data ) { if( vips_isprefix( "exif-", field ) && vips_ispostfix( field, "-Orientation" ) ) { #ifdef DEBUG printf( "vips_autorot_remove_angle: %s\n", field ); #endif /*DEBUG*/ (void) vips_image_remove( image, field ); } return( NULL ); } /** * vips_autorot_remove_angle: (method) * @image: image to remove orientation from * * Remove the orientation tag on @image. Also remove any exif orientation tags. * * See also: vips_autorot_get_angle(). */ void vips_autorot_remove_angle( VipsImage *image ) { (void) vips_image_remove( image, VIPS_META_ORIENTATION ); (void) vips_image_map( image, vips_autorot_remove_angle_sub, NULL ); } static int vips_autorot_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsAutorot *autorot = (VipsAutorot *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); if( VIPS_OBJECT_CLASS( vips_autorot_parent_class )->build( object ) ) return( -1 ); g_object_set( object, "angle", vips_autorot_get_angle( autorot->in ), NULL ); if( vips_autorot_handled( autorot->in ) ) { if( vips_rot( autorot->in, &t[0], autorot->angle, NULL ) || vips_copy( t[0], &t[1], NULL ) ) return( -1 ); vips_autorot_remove_angle( t[1] ); } else { if( vips_copy( autorot->in, &t[1], NULL ) ) return( -1 ); } if( vips_image_write( t[0], conversion->out ) ) return( -1 ); return( 0 ); } static void vips_autorot_class_init( VipsAutorotClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "autorot"; vobject_class->description = _( "autorotate image by exif tag" ); vobject_class->build = vips_autorot_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsAutorot, in ) ); VIPS_ARG_ENUM( class, "angle", 6, _( "Angle" ), _( "Angle image was rotated by" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsAutorot, angle ), VIPS_TYPE_ANGLE, VIPS_ANGLE_D0 ); } static void vips_autorot_init( VipsAutorot *autorot ) { autorot->angle = VIPS_ANGLE_D0; } /** * vips_autorot: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @angle: output #VipsAngle the image was rotated by * * Look at the image metadata and rotate the image to make it upright. The * #VIPS_META_ORIENTATION tag is removed from @out to prevent accidental * double rotation. * * Read @angle to find the amount the image was rotated by. * * vips only supports the four simple rotations, it does not support the * various mirror modes. If the image is using one of these mirror modes, the * image is not rotated and the #VIPS_META_ORIENTATION tag is not removed. * * See also: vips_autorot_get_angle(), vips_autorot_remove_angle(), vips_rot(). * * Returns: 0 on success, -1 on error */ int vips_autorot( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "autorot", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/bandary.c000066400000000000000000000154231361153320700206300ustar00rootroot00000000000000/* base class for various operations on bands * * Copyright: 1991, N. Dessipris, modification of im_bandary() * * Author: N. Dessipris * Written on: 17/04/1991 * Modified on : * 16/3/94 JC * - rewritten for partials * - now in ANSI C * - now works for any number of input images, except zero * 7/10/94 JC * - new IM_NEW() * 16/4/07 * - fall back to im_copy() for 1 input image * 17/1/09 * - cleanups * - gtk-doc * - im_bandary() just calls this * - works for RAD coding too * 27/1/10 * - formatalike inputs * 17/5/11 * - sizealike inputs * 27/10/11 * - rewrite as a class * 20/11/11 * - from bandjoin * 15/12/17 * - remove max images restriction */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "bandary.h" G_DEFINE_ABSTRACT_TYPE( VipsBandary, vips_bandary, VIPS_TYPE_CONVERSION ); static int vips_bandary_stop( void *vseq, void *a, void *b ) { VipsBandarySequence *seq = (VipsBandarySequence *) vseq; if( seq->ir ) { int i; for( i = 0; seq->ir[i]; i++ ) VIPS_UNREF( seq->ir[i] ); VIPS_FREE( seq->ir ); } VIPS_FREE( seq->p ); VIPS_FREE( seq->pixels ); VIPS_FREE( seq ); return( 0 ); } static void * vips_bandary_start( VipsImage *out, void *a, void *b ) { VipsImage **in = (VipsImage **) a; VipsBandary *bandary = (VipsBandary *) b; VipsBandarySequence *seq; int i, n; if( !(seq = VIPS_NEW( NULL, VipsBandarySequence )) ) return( NULL ); seq->bandary = bandary; seq->ir = NULL; seq->p = NULL; seq->pixels = NULL; /* How many images? */ for( n = 0; in[n]; n++ ) ; /* Alocate space for region array. */ if( !(seq->ir = VIPS_ARRAY( NULL, n + 1, VipsRegion * )) ) { vips_bandary_stop( seq, NULL, NULL ); return( NULL ); } /* Create a set of regions. */ for( i = 0; i < n; i++ ) if( !(seq->ir[i] = vips_region_new( in[i] )) ) { vips_bandary_stop( seq, NULL, NULL ); return( NULL ); } seq->ir[n] = NULL; /* Input pointers. */ if( !(seq->p = VIPS_ARRAY( NULL, n + 1, VipsPel * )) ) { vips_bandary_stop( seq, NULL, NULL ); return( NULL ); } /* Pixel buffer. This is used as working space by some subclasses. */ if( !(seq->pixels = VIPS_ARRAY( NULL, n * VIPS_IMAGE_SIZEOF_PEL( bandary->ready[0] ), VipsPel )) ) { vips_bandary_stop( seq, NULL, NULL ); return( NULL ); } return( seq ); } static int vips_bandary_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsBandarySequence *seq = (VipsBandarySequence *) vseq; VipsBandary *bandary = (VipsBandary *) b; VipsBandaryClass *class = VIPS_BANDARY_GET_CLASS( bandary ); VipsRect *r = &or->valid; VipsPel *q; int y, i; if( vips_reorder_prepare_many( or->im, seq->ir, r ) ) return( -1 ); for( i = 0; i < bandary->n; i++ ) seq->p[i] = VIPS_REGION_ADDR( seq->ir[i], r->left, r->top ); seq->p[i] = NULL; q = VIPS_REGION_ADDR( or, r->left, r->top ); VIPS_GATE_START( "vips_bandary_gen: work" ); for( y = 0; y < r->height; y++ ) { class->process_line( seq, q, seq->p, r->width ); for( i = 0; i < bandary->n; i++ ) seq->p[i] += VIPS_REGION_LSKIP( seq->ir[i] ); q += VIPS_REGION_LSKIP( or ); } VIPS_GATE_STOP( "vips_bandary_gen: work" ); return( 0 ); } static int vips_bandary_build( VipsObject *object ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); VipsBandaryClass *class = VIPS_BANDARY_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBandary *bandary = VIPS_BANDARY( object ); int i; VipsImage **decode; VipsImage **format; VipsImage **size; if( VIPS_OBJECT_CLASS( vips_bandary_parent_class )->build( object ) ) return( -1 ); if( bandary->n <= 0 ) { vips_error( object_class->nickname, "%s", _( "no input images" ) ); return( -1 ); } decode = (VipsImage **) vips_object_local_array( object, bandary->n ); format = (VipsImage **) vips_object_local_array( object, bandary->n ); size = (VipsImage **) vips_object_local_array( object, bandary->n ); for( i = 0; i < bandary->n; i++ ) if( vips_image_decode( bandary->in[i], &decode[i] ) ) return( -1 ); if( vips__formatalike_vec( decode, format, bandary->n ) || vips__sizealike_vec( format, size, bandary->n ) ) return( -1 ); bandary->ready = size; if( vips_image_pipeline_array( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, bandary->ready ) ) return( -1 ); conversion->out->Bands = bandary->out_bands; if( class->format_table ) conversion->out->BandFmt = class->format_table[bandary->ready[0]->BandFmt]; if( vips_image_generate( conversion->out, vips_bandary_start, vips_bandary_gen, vips_bandary_stop, bandary->ready, bandary ) ) return( -1 ); return( 0 ); } static void vips_bandary_class_init( VipsBandaryClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandary_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandary"; vobject_class->description = _( "operations on image bands" ); vobject_class->build = vips_bandary_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; } static void vips_bandary_init( VipsBandary *bandary ) { bandary->out_bands = -1; } /* Call this before chaining up in _build() to make the operation fall back to * copy. */ int vips_bandary_copy( VipsBandary *bandary ) { VipsConversion *conversion = VIPS_CONVERSION( bandary ); /* This isn't set by arith until build(), so we have to set * again here. * * Should arith set out in _init()? */ g_object_set( bandary, "out", vips_image_new(), NULL ); return( vips_image_write( bandary->in[0], conversion->out ) ); } libvips-8.9.1/libvips/conversion/bandary.h000066400000000000000000000055271361153320700206410ustar00rootroot00000000000000/* base class for various operations on bands */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS__BANDARY_H #define VIPS__BANDARY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "pconversion.h" #define VIPS_TYPE_BANDARY (vips_bandary_get_type()) #define VIPS_BANDARY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_BANDARY, VipsBandary )) #define VIPS_BANDARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_BANDARY, VipsBandaryClass)) #define VIPS_IS_BANDARY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_BANDARY )) #define VIPS_IS_BANDARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_BANDARY )) #define VIPS_BANDARY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_BANDARY, VipsBandaryClass )) struct _VipsBandary; /* Our sequence value. */ typedef struct { struct _VipsBandary *bandary; /* Set of input regions. */ VipsRegion **ir; /* For each input, an input pointer. */ VipsPel **p; /* A memory area large enough to hold one pixel from each input image. */ VipsPel *pixels; } VipsBandarySequence; typedef void (*VipsBandaryProcessFn)( VipsBandarySequence *seq, VipsPel *out, VipsPel **in, int width ); typedef struct _VipsBandary { VipsConversion parent_instance; /* Array of input arguments, set these from a subclass. */ VipsImage **in; int n; /* The number of output bands. For example, VipsBandjoin sets the sum * of the bands in the input images. */ int out_bands; /* The input images, ready for the operation. */ VipsImage **ready; } VipsBandary; typedef struct _VipsBandaryClass { VipsConversionClass parent_class; /* The buffer processor. */ VipsBandaryProcessFn process_line; /* For each input format, what output format. Leave NULL for output * format == input format. */ const VipsBandFormat *format_table; } VipsBandaryClass; GType vips_bandary_get_type( void ); int vips_bandary_copy( VipsBandary *bandary ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS__BANDARY_H*/ libvips-8.9.1/libvips/conversion/bandbool.c000066400000000000000000000204651361153320700207720ustar00rootroot00000000000000/* bandbool.c --- bool op across image bands * * 7/12/12 * - from boolean.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "bandary.h" typedef struct _VipsBandbool { VipsBandary parent_instance; VipsImage *in; VipsOperationBoolean operation; } VipsBandbool; typedef VipsBandaryClass VipsBandboolClass; G_DEFINE_TYPE( VipsBandbool, vips_bandbool, VIPS_TYPE_BANDARY ); static int vips_bandbool_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBandary *bandary = (VipsBandary *) object; VipsBandbool *bandbool = (VipsBandbool *) object; /* << and >> don't work over bands. */ if( bandbool->operation == VIPS_OPERATION_BOOLEAN_LSHIFT || bandbool->operation == VIPS_OPERATION_BOOLEAN_RSHIFT ) { vips_error( class->nickname, _( "operator %s not supported across image bands" ), vips_enum_nick( VIPS_TYPE_OPERATION_BOOLEAN, bandbool->operation ) ); return( -1 ); } if( bandbool->in ) { if( vips_check_noncomplex( class->nickname, bandbool->in ) ) return( -1 ); bandary->n = 1; bandary->in = &bandbool->in; if( bandbool->in->Bands == 1 ) return( vips_bandary_copy( bandary ) ); } bandary->out_bands = 1; if( VIPS_OBJECT_CLASS( vips_bandbool_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } #define SWITCH( I, F, OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: I( unsigned char, OP ); break; \ case VIPS_FORMAT_CHAR: I( signed char, OP ); break; \ case VIPS_FORMAT_USHORT: I( unsigned short, OP ); break; \ case VIPS_FORMAT_SHORT: I( signed short, OP ); break; \ case VIPS_FORMAT_UINT: I( unsigned int, OP ); break; \ case VIPS_FORMAT_INT: I( signed int, OP ); break; \ case VIPS_FORMAT_FLOAT: F( float, OP ); break; \ case VIPS_FORMAT_DOUBLE: F( double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } #define LOOPB( TYPE, OP ) { \ TYPE *p = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ TYPE acc; \ \ acc = p[0]; \ for( b = 1; b < bands; b++ ) \ acc = acc OP p[b]; \ \ q[x] = acc; \ p += bands; \ } \ } #define FLOOPB( TYPE, OP ) { \ TYPE *p = (TYPE *) in[0]; \ int *q = (int *) out; \ \ for( x = 0; x < width; x++ ) { \ int acc; \ \ acc = (int) p[0]; \ for( b = 1; b < bands; b++ ) \ acc = acc OP ((int) p[b]); \ \ q[x] = acc; \ p += bands; \ } \ } static void vips_bandbool_buffer( VipsBandarySequence *seq, VipsPel *out, VipsPel **in, int width ) { VipsBandary *bandary = seq->bandary; VipsBandbool *bandbool = (VipsBandbool *) bandary; VipsImage *im = bandary->ready[0]; int bands = im->Bands; int x, b; switch( bandbool->operation ) { case VIPS_OPERATION_BOOLEAN_AND: SWITCH( LOOPB, FLOOPB, & ); break; case VIPS_OPERATION_BOOLEAN_OR: SWITCH( LOOPB, FLOOPB, | ); break; case VIPS_OPERATION_BOOLEAN_EOR: SWITCH( LOOPB, FLOOPB, ^ ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Format conversions for boolean. */ static const VipsBandFormat vips_bandbool_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, I, I, I, I, }; static void vips_bandbool_class_init( VipsBandboolClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "bandbool"; object_class->description = _( "boolean operation across image bands" ); object_class->build = vips_bandbool_build; bandary_class->process_line = vips_bandbool_buffer; bandary_class->format_table = vips_bandbool_format_table; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandbool, in ) ); VIPS_ARG_ENUM( class, "boolean", 200, _( "Operation" ), _( "boolean to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandbool, operation ), VIPS_TYPE_OPERATION_BOOLEAN, VIPS_OPERATION_BOOLEAN_AND ); } static void vips_bandbool_init( VipsBandbool *bandbool ) { bandbool->operation = VIPS_OPERATION_BOOLEAN_AND; } static int vips_bandboolv( VipsImage *in, VipsImage **out, VipsOperationBoolean operation, va_list ap ) { return( vips_call_split( "bandbool", ap, in, out, operation ) ); } /** * vips_bandbool: (method) * @in: left-hand input #VipsImage * @out: (out): output #VipsImage * @boolean: boolean operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various boolean operations across the bands of an image. For * example, a three-band uchar image operated on with * #VIPS_OPERATION_BOOLEAN_AND will produce a one-band uchar image where each * pixel is the bitwise and of the band elements of the corresponding pixel in * the input image. * * The output image is the same format as the input image for integer * types. Float types are cast to int before processing. Complex types are not * supported. * * The output image always has one band. * * This operation is useful in conjuction with vips_relational(). You can use * it to see if all image bands match exactly. * * See also: vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_bandbool( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, ... ) { va_list ap; int result; va_start( ap, boolean ); result = vips_bandboolv( in, out, boolean, ap ); va_end( ap ); return( result ); } /** * vips_bandand: (method) * @in: left-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_AND on an image. See * vips_bandbool(). * * Returns: 0 on success, -1 on error */ int vips_bandand( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_bandboolv( in, out, VIPS_OPERATION_BOOLEAN_AND, ap ); va_end( ap ); return( result ); } /** * vips_bandor: (method) * @in: left-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_OR on an image. See * vips_bandbool(). * * Returns: 0 on success, -1 on error */ int vips_bandor( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_bandboolv( in, out, VIPS_OPERATION_BOOLEAN_OR, ap ); va_end( ap ); return( result ); } /** * vips_bandeor: (method) * @in: left-hand input #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_EOR on an image. See * vips_bandbool(). * * Returns: 0 on success, -1 on error */ int vips_bandeor( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_bandboolv( in, out, VIPS_OPERATION_BOOLEAN_EOR, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/bandfold.c000066400000000000000000000121021361153320700207500ustar00rootroot00000000000000/* Fold up x into bands. * * 5/6/15 * - from copy.c * 10/6/15 * - add @factor option */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsBandfold { VipsConversion parent_instance; /* The input image. */ VipsImage *in; int factor; } VipsBandfold; typedef VipsConversionClass VipsBandfoldClass; G_DEFINE_TYPE( VipsBandfold, vips_bandfold, VIPS_TYPE_CONVERSION ); static int vips_bandfold_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsBandfold *bandfold = (VipsBandfold *) b; VipsRegion *ir = (VipsRegion *) seq; VipsImage *out = or->im; VipsRect *r = &or->valid; int psize = VIPS_IMAGE_SIZEOF_PEL( out ); VipsRect need; int y; need.left = r->left * bandfold->factor; need.top = r->top; need.width = r->width * bandfold->factor; need.height = r->height; if( vips_region_prepare( ir, &need ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, r->left * bandfold->factor, r->top + y ); VipsPel *q = VIPS_REGION_ADDR( or, r->left, r->top + y ); /* We can't use vips_region_region() since we change pixel * coordinates. */ memcpy( q, p, psize * r->width ); } return( 0 ); } static int vips_bandfold_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBandfold *bandfold = (VipsBandfold *) object; if( VIPS_OBJECT_CLASS( vips_bandfold_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( bandfold->in ) ) return( -1 ); if( bandfold->factor == 0 ) bandfold->factor = bandfold->in->Xsize; if( bandfold->in->Xsize % bandfold->factor != 0 ) { vips_error( class->nickname, "%s", _( "@factor must be a factor of image width" ) ); return( -1 ); } if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, bandfold->in, NULL ) ) return( -1 ); conversion->out->Xsize /= bandfold->factor; conversion->out->Bands *= bandfold->factor; if( vips_image_generate( conversion->out, vips_start_one, vips_bandfold_gen, vips_stop_one, bandfold->in, bandfold ) ) return( -1 ); return( 0 ); } static void vips_bandfold_class_init( VipsBandfoldClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandfold_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandfold"; vobject_class->description = _( "fold up x axis into bands" ); vobject_class->build = vips_bandfold_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandfold, in ) ); VIPS_ARG_INT( class, "factor", 11, _( "Factor" ), _( "Fold by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBandfold, factor ), 0, 10000000, 0 ); } static void vips_bandfold_init( VipsBandfold *bandfold ) { /* 0 means fold by width, see above. */ bandfold->factor = 0; } /** * vips_bandfold: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @factor: fold by this factor * * Fold up an image horizontally: width is collapsed into bands. * Use @factor to set how much to fold by: @factor 3, for example, will make * the output image three times narrower than the input, and with three times * as many bands. By default the whole of the input width is folded up. * * See also: vips_csvload(), vips_bandunfold(). * * Returns: 0 on success, -1 on error. */ int vips_bandfold( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "bandfold", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/bandjoin.c000066400000000000000000000266401361153320700207770ustar00rootroot00000000000000/* VipsBandjoin -- bandwise join of a set of images * * Copyright: 1991, N. Dessipris, modification of im_bandjoin() * * Author: N. Dessipris * Written on: 17/04/1991 * Modified on : * 16/3/94 JC * - rewritten for partials * - now in ANSI C * - now works for any number of input images, except zero * 7/10/94 JC * - new IM_NEW() * 16/4/07 * - fall back to im_copy() for 1 input image * 17/1/09 * - cleanups * - gtk-doc * - im_bandjoin() just calls this * - works for RAD coding too * 27/1/10 * - formatalike inputs * 17/5/11 * - sizealike inputs * 27/10/11 * - rewrite as a class * 7/11/15 * - added bandjoin_const */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "bandary.h" typedef struct _VipsBandjoin { VipsBandary parent_instance; /* The input images. */ VipsArrayImage *in; } VipsBandjoin; typedef VipsBandaryClass VipsBandjoinClass; G_DEFINE_TYPE( VipsBandjoin, vips_bandjoin, VIPS_TYPE_BANDARY ); static void vips_bandjoin_buffer( VipsBandarySequence *seq, VipsPel *q, VipsPel **p, int width ) { VipsBandary *bandary = seq->bandary; VipsConversion *conversion = (VipsConversion *) bandary; VipsImage **in = bandary->ready; /* Output pel size. */ const int ops = VIPS_IMAGE_SIZEOF_PEL( conversion->out ); int i; /* Loop for each input image. Scattered write is faster than * scattered read. */ for( i = 0; i < bandary->n; i++ ) { /* Input pel size. */ int ips = VIPS_IMAGE_SIZEOF_PEL( in[i] ); VipsPel * restrict p1; VipsPel * restrict q1; int x, z; q1 = q; p1 = p[i]; for( x = 0; x < width; x++ ) { for( z = 0; z < ips; z++ ) q1[z] = p1[z]; p1 += ips; q1 += ops; } q += ips; } } static int vips_bandjoin_build( VipsObject *object ) { VipsBandary *bandary = (VipsBandary *) object; VipsBandjoin *bandjoin = (VipsBandjoin *) object; if( bandjoin->in ) { bandary->in = vips_array_image_get( bandjoin->in, &bandary->n ); if( bandary->n == 1 ) return( vips_bandary_copy( bandary ) ); else { int i; bandary->out_bands = 0; for( i = 0; i < bandary->n; i++ ) if( bandary->in[i] ) bandary->out_bands += bandary->in[i]->Bands; } } if( VIPS_OBJECT_CLASS( vips_bandjoin_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_bandjoin_class_init( VipsBandjoinClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandjoin_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandjoin"; vobject_class->description = _( "bandwise join a set of images" ); vobject_class->build = vips_bandjoin_build; bandary_class->process_line = vips_bandjoin_buffer; VIPS_ARG_BOXED( class, "in", 0, _( "Input" ), _( "Array of input images" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandjoin, in ), VIPS_TYPE_ARRAY_IMAGE ); } static void vips_bandjoin_init( VipsBandjoin *bandjoin ) { /* Init our instance fields. */ } static int vips_bandjoinv( VipsImage **in, VipsImage **out, int n, va_list ap ) { VipsArrayImage *array; int result; array = vips_array_image_new( in, n ); result = vips_call_split( "bandjoin", ap, array, out ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } /** * vips_bandjoin: * @in: (array length=n) (transfer none): array of input images * @out: (out): output image * @n: number of input images * @...: %NULL-terminated list of optional named arguments * * Join a set of images together, bandwise. * * If the images * have n and m bands, then the output image will have n + m * bands, with the first n coming from the first image and the last m * from the second. * * If the images differ in size, the smaller images are enlarged to match the * larger by adding zero pixels along the bottom and right. * * The input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * See also: vips_insert(). * * Returns: 0 on success, -1 on error */ int vips_bandjoin( VipsImage **in, VipsImage **out, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_bandjoinv( in, out, n, ap ); va_end( ap ); return( result ); } /** * vips_bandjoin2: * @in1: first input image * @in2: second input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Join a pair of images together, bandwise. See vips_bandjoin(). * * Returns: 0 on success, -1 on error */ int vips_bandjoin2( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) { va_list ap; int result; VipsImage *in[2]; in[0] = in1; in[1] = in2; va_start( ap, out ); result = vips_bandjoinv( in, out, 2, ap ); va_end( ap ); return( result ); } typedef struct _VipsBandjoinConst { VipsBandary parent_instance; VipsImage *in; VipsArrayDouble *c; /* The constant expanded to in's format, ready to be appended to each * pixel. */ int n; VipsPel *c_ready; } VipsBandjoinConst; typedef VipsBandaryClass VipsBandjoinConstClass; G_DEFINE_TYPE( VipsBandjoinConst, vips_bandjoin_const, VIPS_TYPE_BANDARY ); static void vips_bandjoin_const_finalize( GObject *object ) { VipsBandjoinConst *bandjoin = (VipsBandjoinConst *) object; VIPS_FREE( bandjoin->c_ready ); G_OBJECT_CLASS( vips_bandjoin_const_parent_class )->finalize( object ); } static void vips_bandjoin_const_buffer( VipsBandarySequence *seq, VipsPel *q, VipsPel **p, int width ) { VipsBandary *bandary = seq->bandary; VipsConversion *conversion = (VipsConversion *) bandary; VipsBandjoinConst *bandjoin = (VipsBandjoinConst *) bandary; VipsImage *in = bandary->ready[0]; /* Output pel size. */ const int ops = VIPS_IMAGE_SIZEOF_PEL( conversion->out ); /* Input pel size. */ const int ips = VIPS_IMAGE_SIZEOF_PEL( in ); /* Extra bands size. */ const int ebs = ops - ips; VipsPel * restrict p1; VipsPel * restrict q1; int x, z; q1 = q; p1 = p[0]; /* Special path for 8-bit RGB -> RGBA ... it's a common case. */ if( ips == 3 && ebs == 1 ) { int c = bandjoin->c_ready[0]; for( x = 0; x < width; x++ ) { q1[0] = p1[0]; q1[1] = p1[1]; q1[2] = p1[2]; q1[3] = c; p1 += 3; q1 += 4; } } else { for( x = 0; x < width; x++ ) { for( z = 0; z < ips; z++ ) q1[z] = p1[z]; p1 += ips; q1 += ips; for( z = 0; z < ebs; z++ ) q1[z] = bandjoin->c_ready[z]; q1 += ebs; } } } static int vips_bandjoin_const_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBandary *bandary = (VipsBandary *) object; VipsBandjoinConst *bandjoin = (VipsBandjoinConst *) object; if( bandjoin->c && bandjoin->in ) { double *c; int n; c = vips_array_double_get( bandjoin->c, &n ); if( n == 0 ) return( vips_bandary_copy( bandary ) ); else bandary->out_bands = bandjoin->in->Bands + n; bandary->n = 1; bandary->in = &bandjoin->in; if( !(bandjoin->c_ready = vips__vector_to_pels( class->nickname, n, bandjoin->in->BandFmt, bandjoin->in->Coding, c, NULL, n )) ) return( -1 ); } if( VIPS_OBJECT_CLASS( vips_bandjoin_const_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_bandjoin_const_class_init( VipsBandjoinConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandjoin_const_class_init\n" ); gobject_class->finalize = vips_bandjoin_const_finalize; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandjoin_const"; vobject_class->description = _( "append a constant band to an image" ); vobject_class->build = vips_bandjoin_const_build; bandary_class->process_line = vips_bandjoin_const_buffer; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandjoinConst, in ) ); VIPS_ARG_BOXED( class, "c", 12, _( "Constants" ), _( "Array of constants to add" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandjoinConst, c ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_bandjoin_const_init( VipsBandjoinConst *bandjoin ) { /* Init our instance fields. */ } static int vips_bandjoin_constv( VipsImage *in, VipsImage **out, double *c, int n, va_list ap ) { VipsArrayDouble *array; int result; array = vips_array_double_new( c, n ); result = vips_call_split( "bandjoin_const", ap, in, out, array ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } /** * vips_bandjoin_const: (method) * @in: input image * @out: (out): output image * @c: (array length=n): array of constants to append * @n: number of constants * @...: %NULL-terminated list of optional named arguments * * Append a set of constant bands to an image. * * See also: vips_bandjoin(). * * Returns: 0 on success, -1 on error */ int vips_bandjoin_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_bandjoin_constv( in, out, c, n, ap ); va_end( ap ); return( result ); } /** * vips_bandjoin_const1: (method) * @in: input image * @out: (out): output image * @c: constant to append * @...: %NULL-terminated list of optional named arguments * * Append a single constant band to an image. * * Returns: 0 on success, -1 on error */ int vips_bandjoin_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_bandjoin_constv( in, out, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_addalpha: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Append an alpha channel. * * See also: vips_image_hasalpha(). * * Returns: 0 on success, -1 on error */ int vips_addalpha( VipsImage *in, VipsImage **out, ... ) { double max_alpha; max_alpha = 255.0; if( in->Type == VIPS_INTERPRETATION_GREY16 || in->Type == VIPS_INTERPRETATION_RGB16 ) max_alpha = 65535; if( vips_bandjoin_const1( in, out, max_alpha, NULL ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/conversion/bandmean.c000066400000000000000000000125361361153320700207570ustar00rootroot00000000000000/* average image bands * * Author: Simon Goodall * Written on: 17/7/07 * 17/7/07 JC * - hacked about a bit * 18/8/09 * - gtkdoc * - get rid of the complex case, just double the width * 19/11/11 * - redo as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "bandary.h" typedef struct _VipsBandmean { VipsBandary parent_instance; VipsImage *in; } VipsBandmean; typedef VipsBandaryClass VipsBandmeanClass; G_DEFINE_TYPE( VipsBandmean, vips_bandmean, VIPS_TYPE_BANDARY ); /* Unsigned int types. Round, keep sum in a larger variable. */ #define UILOOP( TYPE, STYPE ) { \ TYPE *p = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( i = 0; i < sz; i++ ) { \ STYPE sum; \ \ sum = 0; \ for( j = 0; j < bands; j++ ) \ sum += p[j]; \ q[i] = (sum + bands / 2) / bands; \ p += bands; \ } \ } /* Signed int types. Round, keep sum in a larger variable. */ #define SILOOP( TYPE, STYPE ) { \ TYPE *p = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( i = 0; i < sz; i++ ) { \ STYPE sum; \ \ sum = 0; \ for( j = 0; j < bands; j++ ) \ sum += p[j]; \ q[i] = sum > 0 ? \ (sum + bands / 2) / bands : \ (sum - bands / 2) / bands; \ p += bands; \ } \ } /* Float loop. No rounding, sum in same container. */ #define FLOOP( TYPE ) { \ TYPE *p = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( i = 0; i < sz; i++ ) { \ TYPE sum; \ \ sum = 0; \ for( j = 0; j < bands; j++ ) \ sum += p[j]; \ q[i] = sum / bands; \ p += bands; \ } \ } static void vips_bandmean_buffer( VipsBandarySequence *seq, VipsPel *out, VipsPel **in, int width ) { VipsBandary *bandary = seq->bandary; VipsImage *im = bandary->ready[0]; const int bands = im->Bands; const int sz = width * (vips_band_format_iscomplex( im->BandFmt ) ? 2 : 1); int i, j; switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: SILOOP( signed char, int ); break; case VIPS_FORMAT_UCHAR: UILOOP( unsigned char, unsigned int ); break; case VIPS_FORMAT_SHORT: SILOOP( signed short, int ); break; case VIPS_FORMAT_USHORT: UILOOP( unsigned short, unsigned int ); break; case VIPS_FORMAT_INT: SILOOP( signed int, int ); break; case VIPS_FORMAT_UINT: UILOOP( unsigned int, unsigned int ); break; case VIPS_FORMAT_FLOAT: FLOOP( float ); break; case VIPS_FORMAT_DOUBLE: FLOOP( double ); break; case VIPS_FORMAT_COMPLEX: FLOOP( float ); break; case VIPS_FORMAT_DPCOMPLEX: FLOOP( double ); break; default: g_assert_not_reached(); } } static int vips_bandmean_build( VipsObject *object ) { VipsBandary *bandary = (VipsBandary *) object; VipsBandmean *bandmean = (VipsBandmean *) object; bandary->n = 1; bandary->in = &bandmean->in; if( bandmean->in && bandmean->in->Bands == 1 ) return( vips_bandary_copy( bandary ) ); bandary->out_bands = 1; if( VIPS_OBJECT_CLASS( vips_bandmean_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_bandmean_class_init( VipsBandmeanClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "bandmean"; object_class->description = _( "band-wise average" ); object_class->build = vips_bandmean_build; bandary_class->process_line = vips_bandmean_buffer; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandmean, in ) ); } static void vips_bandmean_init( VipsBandmean *bandmean ) { } /** * vips_bandmean: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * This operation writes a one-band image where each pixel is the average of * the bands for that pixel in the input image. The output band format is * the same as the input band format. Integer types use round-to-nearest * averaging. * * See also: vips_add(), vips_avg(), vips_recomb() * * Returns: 0 on success, -1 on error */ int vips_bandmean( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "bandmean", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/bandrank.c000066400000000000000000000167011361153320700207700ustar00rootroot00000000000000/* Sort a set of images, pixelwise, and pick out the index at each point. * * 19/8/03 * - from im_maxvalue(), via im_gbandrank() * 10/11/10 * - gtkdoc * - cleanups * - any mix of formats and bands * 23/10/13 * - redo as a class, from bandjoin.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "bandary.h" typedef struct _VipsBandrank { VipsBandary parent_instance; /* The input images. */ VipsArrayImage *in; int index; /* Pick out this one */ } VipsBandrank; typedef VipsBandaryClass VipsBandrankClass; G_DEFINE_TYPE( VipsBandrank, vips_bandrank, VIPS_TYPE_BANDARY ); /* Special-case max and min (rather common). */ #define FIND_MAX( TYPE ) { \ for( x = 0; x < sz; x++ ) { \ TYPE top = ((TYPE *) p[0])[x]; \ \ for( i = 1; i < bandary->n; i++ ) { \ TYPE v = ((TYPE *) p[i])[x]; \ \ if( v > top ) \ top = v; \ } \ \ ((TYPE *) q)[x] = top; \ } \ } #define FIND_MIN( TYPE ) { \ for( x = 0; x < sz; x++ ) { \ TYPE bot = ((TYPE *) p[0])[x]; \ \ for( i = 1; i < bandary->n; i++ ) { \ TYPE v = ((TYPE *) p[i])[x]; \ \ if( v < bot ) \ bot = v; \ } \ \ ((TYPE *) q)[x] = bot; \ } \ } #define FIND_RANK( TYPE ) { \ TYPE *sort = (TYPE *) sort_buffer; \ \ for( x = 0; x < sz; x++ ) { \ for( i = 0; i < bandary->n; i++ ) { \ TYPE v = ((TYPE *) p[i])[x]; \ \ /* Search for element >v. */\ for( j = 0; j < i; j++ ) \ if( sort[j] > v ) \ break; \ \ /* Move remaining elements down. */ \ for( k = i; k > j; k-- ) \ sort[k] = sort[k - 1]; \ \ /* Insert this element. */ \ sort[j] = v; \ } \ \ ((TYPE *) q)[x] = sort[bandrank->index]; \ } \ } #define SWITCH( OPERATION ) \ switch( in[0]->BandFmt ) { \ case VIPS_FORMAT_UCHAR: OPERATION( unsigned char ); break; \ case VIPS_FORMAT_CHAR: OPERATION( signed char ); break; \ case VIPS_FORMAT_USHORT: OPERATION( unsigned short ); break; \ case VIPS_FORMAT_SHORT: OPERATION( signed short ); break; \ case VIPS_FORMAT_UINT: OPERATION( unsigned int ); break; \ case VIPS_FORMAT_INT: OPERATION( signed int ); break; \ case VIPS_FORMAT_FLOAT: OPERATION( float ); break; \ case VIPS_FORMAT_DOUBLE: OPERATION( double ); break; \ \ default: \ g_assert_not_reached(); \ } /* Sort input band elements in the stack. Needs to be big enough for * sizeof(band-element) * number-of-images. */ static void vips_bandrank_buffer( VipsBandarySequence *seq, VipsPel *q, VipsPel **p, int width ) { VipsBandary *bandary = seq->bandary; VipsBandrank *bandrank = (VipsBandrank *) bandary; VipsImage **in = bandary->ready; int sz = width * in[0]->Bands; VipsPel *sort_buffer = seq->pixels; int i, j, k; int x; /* Special-case max and min. */ if( bandrank->index == 0 ) SWITCH( FIND_MIN ) else if( bandrank->index == bandary->n - 1 ) SWITCH( FIND_MAX ) else SWITCH( FIND_RANK ) } static int vips_bandrank_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBandary *bandary = (VipsBandary *) object; VipsBandrank *bandrank = (VipsBandrank *) object; if( bandrank->in ) { int n; VipsImage **in = vips_array_image_get( bandrank->in, &n ); VipsImage **band = (VipsImage **) vips_object_local_array( object, n ); int i; for( i = 0; i < n; i++ ) if( vips_check_noncomplex( class->nickname, in[i] ) ) return( -1 ); if( n == 1 ) { bandary->in = in; bandary->n = 1; return( vips_bandary_copy( bandary ) ); } if( vips__bandalike_vec( class->nickname, in, band, n, 0 ) ) return( -1 ); bandary->in = band; bandary->n = n; bandary->out_bands = band[0]->Bands; if( bandrank->index == -1 ) bandrank->index = bandary->n / 2; } if( VIPS_OBJECT_CLASS( vips_bandrank_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_bandrank_class_init( VipsBandrankClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandrank_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandrank"; vobject_class->description = _( "band-wise rank of a set of images" ); vobject_class->build = vips_bandrank_build; bandary_class->process_line = vips_bandrank_buffer; VIPS_ARG_BOXED( class, "in", 0, _( "Input" ), _( "Array of input images" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandrank, in ), VIPS_TYPE_ARRAY_IMAGE ); VIPS_ARG_INT( class, "index", 0, _( "Index" ), _( "Select this band element from sorted list" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBandrank, index ), -1, 1000000, -1 ); } static void vips_bandrank_init( VipsBandrank *bandrank ) { /* -1 means median. */ bandrank->index = -1; } static int vips_bandrankv( VipsImage **in, VipsImage **out, int n, va_list ap ) { VipsArrayImage *array; int result; array = vips_array_image_new( in, n ); result = vips_call_split( "bandrank", ap, array, out ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } /** * vips_bandrank: * @in: (array length=n): array of input images * @out: (out): output image * @n: number of input images * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @index: pick this index from list of sorted values * * Sorts the images @in band-element-wise, then outputs an * image in which each band element is selected from the sorted list by the * @index parameter. For example, if @index * is zero, then each output band element will be the minimum of all the * corresponding input band elements. * * By default, @index is -1, meaning pick the median value. * * It works for any uncoded, non-complex image type. Images are cast up to the * smallest common-format. * * Any image can have either 1 band or n bands, where n is the same for all * the non-1-band images. Single band images are then effectively copied to * make n-band images. * * Smaller input images are expanded by adding black pixels. * * See also: vips_rank(). * * Returns: 0 on success, -1 on error */ int vips_bandrank( VipsImage **in, VipsImage **out, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_bandrankv( in, out, n, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/bandunfold.c000066400000000000000000000123501361153320700213200ustar00rootroot00000000000000/* Fold up x into bands. * * 5/6/15 * - from copy.c * 10/6/15 * - add @factor option */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsBandunfold { VipsConversion parent_instance; /* The input image. */ VipsImage *in; int factor; } VipsBandunfold; typedef VipsConversionClass VipsBandunfoldClass; G_DEFINE_TYPE( VipsBandunfold, vips_bandunfold, VIPS_TYPE_CONVERSION ); static int vips_bandunfold_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsBandunfold *bandunfold = (VipsBandunfold *) b; VipsRegion *ir = (VipsRegion *) seq; VipsImage *in = ir->im; VipsImage *out = or->im; VipsRect *r = &or->valid; int esize = VIPS_IMAGE_SIZEOF_ELEMENT( in ); int psize = VIPS_IMAGE_SIZEOF_PEL( out ); VipsRect need; int y; need.left = r->left / bandunfold->factor; need.top = r->top; need.width = (1 + r->width) / bandunfold->factor; need.height = r->height; if( vips_region_prepare( ir, &need ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, r->left / bandunfold->factor, r->top + y ) + (r->left % bandunfold->factor) * esize; VipsPel *q = VIPS_REGION_ADDR( or, r->left, r->top + y ); /* We can't use vips_region_region() since we change pixel * coordinates. */ memcpy( q, p, r->width * psize ); } return( 0 ); } static int vips_bandunfold_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBandunfold *bandunfold = (VipsBandunfold *) object; if( VIPS_OBJECT_CLASS( vips_bandunfold_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( bandunfold->in ) ) return( -1 ); if( bandunfold->factor == 0 ) bandunfold->factor = bandunfold->in->Bands; if( bandunfold->in->Bands % bandunfold->factor != 0 ) { vips_error( class->nickname, "%s", _( "@factor must be a factor of image bands" ) ); return( -1 ); } if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, bandunfold->in, NULL ) ) return( -1 ); conversion->out->Xsize *= bandunfold->factor; conversion->out->Bands /= bandunfold->factor; if( vips_image_generate( conversion->out, vips_start_one, vips_bandunfold_gen, vips_stop_one, bandunfold->in, bandunfold ) ) return( -1 ); return( 0 ); } static void vips_bandunfold_class_init( VipsBandunfoldClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandunfold_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandunfold"; vobject_class->description = _( "unfold image bands into x axis" ); vobject_class->build = vips_bandunfold_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandunfold, in ) ); VIPS_ARG_INT( class, "factor", 11, _( "Factor" ), _( "Unfold by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBandunfold, factor ), 0, 10000000, 0 ); } static void vips_bandunfold_init( VipsBandunfold *bandunfold ) { /* 0 means unfold by width, see above. */ bandunfold->factor = 0; } /** * vips_bandunfold: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @factor: unfold by this factor * * Unfold image bands into x axis. * Use @factor to set how much to unfold by: @factor 3, for example, will make * the output image three times wider than the input, and with one third * as many bands. By default, all bands are unfolded. * * See also: vips_csvload(), vips_bandfold(). * * Returns: 0 on success, -1 on error. */ int vips_bandunfold( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "bandunfold", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/byteswap.c000066400000000000000000000136321361153320700210460ustar00rootroot00000000000000/* Swap image byte order. * * 5/6/15 * - from copy.c * 27/1/16 * - don't swap coded images */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsByteswap { VipsConversion parent_instance; /* The input image. */ VipsImage *in; } VipsByteswap; typedef VipsConversionClass VipsByteswapClass; G_DEFINE_TYPE( VipsByteswap, vips_byteswap, VIPS_TYPE_CONVERSION ); /* Swap pairs of bytes. */ static void vips_byteswap_swap2( VipsPel *in, VipsPel *out, int width, VipsImage *im ) { guint16 *p = (guint16 *) in; guint16 *q = (guint16 *) out; int sz = (VIPS_IMAGE_SIZEOF_PEL( im ) * width) / 2; int x; for( x = 0; x < sz; x++ ) q[x] = GUINT16_SWAP_LE_BE( p[x] ); } /* Swap 4- of bytes. */ static void vips_byteswap_swap4( VipsPel *in, VipsPel *out, int width, VipsImage *im ) { guint32 *p = (guint32 *) in; guint32 *q = (guint32 *) out; int sz = (VIPS_IMAGE_SIZEOF_PEL( im ) * width) / 4; int x; for( x = 0; x < sz; x++ ) q[x] = GUINT32_SWAP_LE_BE( p[x] ); } /* Swap 8- of bytes. */ static void vips_byteswap_swap8( VipsPel *in, VipsPel *out, int width, VipsImage *im ) { guint64 *p = (guint64 *) in; guint64 *q = (guint64 *) out; int sz = (VIPS_IMAGE_SIZEOF_PEL( im ) * width) / 8; int x; for( x = 0; x < sz; x++ ) q[x] = GUINT64_SWAP_LE_BE( p[x] ); } typedef void (*SwapFn)( VipsPel *in, VipsPel *out, int width, VipsImage *im ); static SwapFn vips_byteswap_swap_fn[] = { NULL, /* VIPS_FORMAT_UCHAR = 0, */ NULL, /* VIPS_FORMAT_CHAR = 1, */ vips_byteswap_swap2, /* VIPS_FORMAT_USHORT = 2, */ vips_byteswap_swap2, /* VIPS_FORMAT_SHORT = 3, */ vips_byteswap_swap4, /* VIPS_FORMAT_UINT = 4, */ vips_byteswap_swap4, /* VIPS_FORMAT_INT = 5, */ vips_byteswap_swap4, /* VIPS_FORMAT_FLOAT = 6, */ vips_byteswap_swap4, /* VIPS_FORMAT_COMPLEX = 7, */ vips_byteswap_swap8, /* VIPS_FORMAT_DOUBLE = 8, */ vips_byteswap_swap8 /* VIPS_FORMAT_DPCOMPLEX = 9, */ }; /* Byteswap, turning bands into the x axis. */ static int vips_byteswap_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsImage *im = ir->im; VipsRect *r = &or->valid; SwapFn swap = vips_byteswap_swap_fn[im->BandFmt]; int y; g_assert( swap ); if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *q = VIPS_REGION_ADDR( or, r->left, r->top + y ); swap( p, q, r->width, im ); } return( 0 ); } static int vips_byteswap_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsByteswap *byteswap = (VipsByteswap *) object; if( VIPS_OBJECT_CLASS( vips_byteswap_parent_class )->build( object ) ) return( -1 ); /* Lots of images don't need swapping. */ if( byteswap->in->Coding != VIPS_CODING_NONE || !vips_byteswap_swap_fn[byteswap->in->BandFmt] ) return( vips_image_write( byteswap->in, conversion->out ) ); if( vips_image_pio_input( byteswap->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, byteswap->in, NULL ) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_one, vips_byteswap_gen, vips_stop_one, byteswap->in, byteswap ) ) return( -1 ); return( 0 ); } static void vips_byteswap_class_init( VipsByteswapClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_byteswap_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "byteswap"; vobject_class->description = _( "byteswap an image" ); vobject_class->build = vips_byteswap_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsByteswap, in ) ); } static void vips_byteswap_init( VipsByteswap *byteswap ) { } /** * vips_byteswap: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Swap the byte order in an image. * * See also: vips_rawload(). * * Returns: 0 on success, -1 on error. */ int vips_byteswap( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "byteswap", ap, in, out ); va_end( ap ); return( result ); } /* Convenience function: swap if @swap is %TRUE, otherwise copy. */ int vips__byteswap_bool( VipsImage *in, VipsImage **out, gboolean swap ) { if( swap ) return( vips_byteswap( in, out, NULL ) ); else return( vips_copy( in, out, NULL ) ); } libvips-8.9.1/libvips/conversion/cache.c000066400000000000000000000112141361153320700202450ustar00rootroot00000000000000/* vips_sink_screen() as an operation. * * 13/1/12 * - from tilecache.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a cache of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsCache { VipsConversion parent_instance; VipsImage *in; int tile_width; int tile_height; int max_tiles; } VipsCache; typedef VipsConversionClass VipsCacheClass; G_DEFINE_TYPE( VipsCache, vips_cache, VIPS_TYPE_CONVERSION ); static int vips_cache_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsCache *cache = (VipsCache *) object; VIPS_DEBUG_MSG( "vips_cache_build\n" ); if( VIPS_OBJECT_CLASS( vips_cache_parent_class )->build( object ) ) return( -1 ); if( vips_sink_screen( cache->in, conversion->out, NULL, cache->tile_width, cache->tile_height, cache->max_tiles, 0, NULL, NULL ) ) return( -1 ); return( 0 ); } static void vips_cache_class_init( VipsCacheClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_cache_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "cache"; vobject_class->description = _( "cache an image" ); vobject_class->build = vips_cache_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCache, in ) ); VIPS_ARG_INT( class, "tile_width", 3, _( "Tile width" ), _( "Tile width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCache, tile_width ), 1, 1000000, 128 ); VIPS_ARG_INT( class, "tile_height", 3, _( "Tile height" ), _( "Tile height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCache, tile_height ), 1, 1000000, 128 ); VIPS_ARG_INT( class, "max_tiles", 3, _( "Max tiles" ), _( "Maximum number of tiles to cache" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCache, max_tiles ), -1, 1000000, 1000 ); } static void vips_cache_init( VipsCache *cache ) { /* By default, enough pixels for two 1920 x 1080 displays. */ cache->tile_width = 128; cache->tile_height = 128; cache->max_tiles = 250; } /** * vips_cache: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @tile_width: width of tiles in cache * * @tile_height: height of tiles in cache * * @max_tiles: maximum number of tiles to cache * * This operation behaves rather like vips_copy() between images * @in and @out, except that it keeps a cache of computed pixels. * This cache is made of up to @max_tiles tiles (a value of -1 * means any number of tiles), and each tile is of size @tile_width * by @tile_height pixels. By default it will cache 250 128 x 128 pixel tiles, * enough for two 1920 x 1080 images. * * This operation is a thin wrapper over vips_sink_screen(), see the * documentation for that operation for details. * * It uses a set of background threads to calculate pixels and the various * active cache operations coordinate so as not to overwhelm your system. When * a request is made for an area of pixels, the operation will block until all * of those pixels have been calculated. Pixels are calculated with a set of * threads. * * See also: vips_tilecache(). * * Returns: 0 on success, -1 on error. */ int vips_cache( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "cache", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/cast.c000066400000000000000000000443541361153320700201470ustar00rootroot00000000000000/* cast an image to a numerical format * * Author: Nicos Dessipris * Written on: 07/03/1991 * Modified on: * 04/05/1992 JC * - works for char, uchar too * - floating point code removed from integer clip operations * - uses nint() instead of own rounding code * - calculated the number of >255 clips for float/double input * incorrectly * - rejects complex input correctly now * 27/4/93 JC * - adapted to work with partial images * - nint() removed, now just +0.5 * - im_warning code removed * 30/6/93 JC * - adapted for partial v2 * 31/8/93 JC * - now detects and prints over/underflows * 27/10/93 JC * - unsigned integer clips now faster! * - falls back to im_copy() correctly * 5/5/94 JC * - switched to rint() * 18/8/94 JC * - now uses evalend callback * 9/5/95 JC * - now does complex too * 11/7/95 JC * - now uses IM_RINT() macro * 10/3/01 JC * - slightly faster and simpler * - generalised to im_clip2fmt(), all other clippers now just call * this * 21/4/04 JC * - now does floor(), not rint() ... you'll need to round yourself * before calling this if you want round-to-nearest * 7/11/07 * - use new evalstart/evalend system * 26/8/08 * - oops, complex->complex conversion was broken * 27/1/10 * - modernised * - gtk-doc * 27/10/11 * - redone as a class * 10/4/12 * - cast to uint now removes <0 values * 11/2/15 * - add @shift option * 1/3/16 * - better behaviour for shift of non-int types (thanks apacheark) * 14/11/18 * - revise for better uint/int clipping [erdmann] * - remove old overflow/underflow detect */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsCast { VipsConversion parent_instance; VipsImage *in; VipsBandFormat format; gboolean shift; } VipsCast; typedef VipsConversionClass VipsCastClass; G_DEFINE_TYPE( VipsCast, vips_cast, VIPS_TYPE_CONVERSION ); /* Various saturated casts. We want to cast int to uchar, for example, and * clip the range. X is an int. */ #define CAST_UCHAR( X ) VIPS_CLIP( 0, (X), UCHAR_MAX ) #define CAST_CHAR( X ) VIPS_CLIP( SCHAR_MIN, (X), SCHAR_MAX ) #define CAST_USHORT( X ) VIPS_CLIP( 0, (X), USHRT_MAX ) #define CAST_SHORT( X ) VIPS_CLIP( SHRT_MIN, (X), SHRT_MAX ) /* We know the source cannot be the same as the dest, so we will only use * CAST_UINT() for an INT source, and vice versa. */ #define CAST_UINT( X ) VIPS_MAX( 0, (X) ) #define CAST_INT( X ) VIPS_MIN( (X), INT_MAX ) /* Rightshift an integer type, ie. sizeof(ITYPE) > sizeof(OTYPE). */ #define SHIFT_RIGHT( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ int n = ((int) sizeof( ITYPE ) << 3) - ((int) sizeof( OTYPE ) << 3); \ \ g_assert( sizeof( ITYPE ) > sizeof( OTYPE ) ); \ \ for( x = 0; x < sz; x++ ) \ q[x] = p[x] >> n; \ } /* Leftshift an integer type, ie. sizeof(ITYPE) < sizeof(OTYPE). We need to * copy the bottom bit up into the fresh new bits */ #define SHIFT_LEFT( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ int n = ((int) sizeof( OTYPE ) << 3) - ((int) sizeof( ITYPE ) << 3); \ \ g_assert( sizeof( ITYPE ) < sizeof( OTYPE ) ); \ \ for( x = 0; x < sz; x++ ) \ q[x] = (p[x] << n) | (((p[x] & 1) << n) - (p[x] & 1)); \ } #define SHIFT_LEFT_SIGNED( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ int n = ((int) sizeof( OTYPE ) << 3) - ((int) sizeof( ITYPE ) << 3); \ \ g_assert( sizeof( ITYPE ) < sizeof( OTYPE ) ); \ \ for( x = 0; x < sz; x++ ) \ q[x] = VIPS_LSHIFT_INT( p[x], n ) | \ (((p[x] & 1) << n) - (p[x] & 1)); \ } /* Cast int types to an int type. We need to pass in the type of the * intermediate value, either uint or int, or we'll have problems with uint * sources turning -ve. */ #define CAST_INT_INT( ITYPE, OTYPE, TEMP, CAST ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ TEMP t = (TEMP) p[x]; \ \ q[x] = CAST( t ); \ } \ } /* Int to int handling. */ #define INT_INT( ITYPE, OTYPE, TEMP, CAST ) { \ if( cast->shift && \ sizeof( ITYPE ) > sizeof( OTYPE ) ) { \ SHIFT_RIGHT( ITYPE, OTYPE ); \ } \ else if( cast->shift ) { \ SHIFT_LEFT( ITYPE, OTYPE ); \ } \ else { \ CAST_INT_INT( ITYPE, OTYPE, TEMP, CAST ); \ } \ } /* Int to int handling for signed int types. */ #define INT_INT_SIGNED( ITYPE, OTYPE, TEMP, CAST ) { \ if( cast->shift && \ sizeof( ITYPE ) > sizeof( OTYPE ) ) { \ SHIFT_RIGHT( ITYPE, OTYPE ); \ } \ else if( cast->shift ) { \ SHIFT_LEFT_SIGNED( ITYPE, OTYPE ); \ } \ else { \ CAST_INT_INT( ITYPE, OTYPE, TEMP, CAST ); \ } \ } /* Cast float types to an int type. */ #define CAST_FLOAT_INT( ITYPE, OTYPE, TEMP, CAST ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = CAST( p[x] ); \ } /* Cast complex types to an int type. Just take the real part. */ #define CAST_COMPLEX_INT( ITYPE, OTYPE, TEMP, CAST ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[x] = CAST( p[0] ); \ p += 2; \ } \ } /* Cast non-complex types to a float type. */ #define CAST_REAL_FLOAT( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = p[x]; \ } /* Cast complex types to a float type ... just take real. */ #define CAST_COMPLEX_FLOAT( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[x] = p[0]; \ p += 2; \ } \ } /* Cast any non-complex to a complex type ... set imaginary to zero. */ #define CAST_REAL_COMPLEX( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[0] = p[x]; \ q[1] = 0.0; \ q += 2; \ } \ } /* Cast any complex to a complex type. */ #define CAST_COMPLEX_COMPLEX( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[0] = p[0]; \ q[1] = p[1]; \ p += 2; \ q += 2; \ } \ } #define BAND_SWITCH_INNER( ITYPE, INT, FLOAT, COMPLEX ) { \ switch( conversion->out->BandFmt ) { \ case VIPS_FORMAT_UCHAR: \ INT( ITYPE, unsigned char, unsigned int, CAST_UCHAR ); \ break; \ \ case VIPS_FORMAT_CHAR: \ INT( ITYPE, signed char, int, CAST_CHAR ); \ break; \ \ case VIPS_FORMAT_USHORT: \ INT( ITYPE, unsigned short, unsigned int, CAST_USHORT ); \ break; \ \ case VIPS_FORMAT_SHORT: \ INT( ITYPE, signed short, int, CAST_SHORT ); \ break; \ \ case VIPS_FORMAT_UINT: \ INT( ITYPE, unsigned int, unsigned int, CAST_UINT ); \ break; \ \ case VIPS_FORMAT_INT: \ INT( ITYPE, signed int, int, CAST_INT ); \ break; \ \ case VIPS_FORMAT_FLOAT: \ FLOAT( ITYPE, float ); \ break; \ \ case VIPS_FORMAT_DOUBLE: \ FLOAT( ITYPE, double ); \ break; \ \ case VIPS_FORMAT_COMPLEX: \ COMPLEX( ITYPE, float ); \ break; \ \ case VIPS_FORMAT_DPCOMPLEX: \ COMPLEX( ITYPE, double ); \ break; \ \ default: \ g_assert_not_reached(); \ } \ } static int vips_cast_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) vseq; VipsCast *cast = (VipsCast *) b; VipsConversion *conversion = (VipsConversion *) b; VipsRect *r = &or->valid; int sz = VIPS_REGION_N_ELEMENTS( or ); int x, y; if( vips_region_prepare( ir, r ) ) return( -1 ); VIPS_GATE_START( "vips_cast_gen: work" ); for( y = 0; y < r->height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *out = VIPS_REGION_ADDR( or, r->left, r->top + y ); switch( ir->im->BandFmt ) { case VIPS_FORMAT_UCHAR: BAND_SWITCH_INNER( unsigned char, INT_INT, CAST_REAL_FLOAT, CAST_REAL_COMPLEX ); break; case VIPS_FORMAT_CHAR: BAND_SWITCH_INNER( signed char, INT_INT_SIGNED, CAST_REAL_FLOAT, CAST_REAL_COMPLEX ); break; case VIPS_FORMAT_USHORT: BAND_SWITCH_INNER( unsigned short, INT_INT, CAST_REAL_FLOAT, CAST_REAL_COMPLEX ); break; case VIPS_FORMAT_SHORT: BAND_SWITCH_INNER( signed short, INT_INT_SIGNED, CAST_REAL_FLOAT, CAST_REAL_COMPLEX ); break; case VIPS_FORMAT_UINT: BAND_SWITCH_INNER( unsigned int, INT_INT, CAST_REAL_FLOAT, CAST_REAL_COMPLEX ); break; case VIPS_FORMAT_INT: BAND_SWITCH_INNER( signed int, INT_INT_SIGNED, CAST_REAL_FLOAT, CAST_REAL_COMPLEX ); break; case VIPS_FORMAT_FLOAT: BAND_SWITCH_INNER( float, CAST_FLOAT_INT, CAST_REAL_FLOAT, CAST_REAL_COMPLEX ); break; case VIPS_FORMAT_DOUBLE: BAND_SWITCH_INNER( double, CAST_FLOAT_INT, CAST_REAL_FLOAT, CAST_REAL_COMPLEX ); break; case VIPS_FORMAT_COMPLEX: BAND_SWITCH_INNER( float, CAST_COMPLEX_INT, CAST_COMPLEX_FLOAT, CAST_COMPLEX_COMPLEX ); break; case VIPS_FORMAT_DPCOMPLEX: BAND_SWITCH_INNER( double, CAST_COMPLEX_INT, CAST_COMPLEX_FLOAT, CAST_COMPLEX_COMPLEX ); break; default: g_assert_not_reached(); } } VIPS_GATE_STOP( "vips_cast_gen: work" ); return( 0 ); } static int vips_cast_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsCast *cast = (VipsCast *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_cast_parent_class )->build( object ) ) return( -1 ); in = cast->in; /* Trivial case: fall back to copy(). */ if( in->BandFmt == cast->format ) return( vips_image_write( in, conversion->out ) ); if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* If @shift is on but we're not in an int format and we're going to * an int format, we need to cast to int first. For example, what * about a float image tagged as rgb16 being cast to uint8? We need * to cast to ushort before we do the final cast to uint8. */ if( cast->shift && !vips_band_format_isint( in->BandFmt ) && vips_band_format_isint( cast->format ) ) { if( vips_cast( in, &t[1], vips_image_guess_format( in ), NULL ) ) return( -1 ); in = t[1]; } if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); conversion->out->BandFmt = cast->format; if( vips_image_generate( conversion->out, vips_start_one, vips_cast_gen, vips_stop_one, in, cast ) ) return( -1 ); return( 0 ); } static void vips_cast_class_init( VipsCastClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_cast_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "cast"; vobject_class->description = _( "cast an image" ); vobject_class->build = vips_cast_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCast, in ) ); VIPS_ARG_ENUM( class, "format", 6, _( "Format" ), _( "Format to cast to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCast, format ), VIPS_TYPE_BAND_FORMAT, VIPS_FORMAT_UCHAR ); VIPS_ARG_BOOL( class, "shift", 7, _( "Shift" ), _( "Shift integer values up and down" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCast, shift ), FALSE ); } static void vips_cast_init( VipsCast *cast ) { } static int vips_castv( VipsImage *in, VipsImage **out, VipsBandFormat format, va_list ap ) { return( vips_call_split( "cast", ap, in, out, format ) ); } /** * vips_cast: (method) * @in: input image * @out: (out): output image * @format: format to convert to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @shift: %gboolean, integer values are shifted * * Convert @in to @format. You can convert between any pair of formats. * Floats are truncated (not rounded). Out of range values are clipped. * * Casting from complex to real returns the real part. * * If @shift is %TRUE, integer values are shifted up and down. For example, * casting from unsigned 8 bit to unsigned 16 bit would * shift every value left by 8 bits. The bottom bit is copied into the new * bits, so 255 would become 65535. * * See also: vips_scale(), vips_complexform(), vips_real(), vips_imag(), * vips_cast_uchar(), vips_msb(). * * Returns: 0 on success, -1 on error */ int vips_cast( VipsImage *in, VipsImage **out, VipsBandFormat format, ... ) { va_list ap; int result; va_start( ap, format ); result = vips_castv( in, out, format, ap ); va_end( ap ); return( result ); } /** * vips_cast_uchar: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_UCHAR. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_uchar( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_UCHAR, ap ); va_end( ap ); return( result ); } /** * vips_cast_char: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_CHAR. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_char( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_CHAR, ap ); va_end( ap ); return( result ); } /** * vips_cast_ushort: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_USHORT. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_ushort( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_USHORT, ap ); va_end( ap ); return( result ); } /** * vips_cast_short: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_SHORT. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_short( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_SHORT, ap ); va_end( ap ); return( result ); } /** * vips_cast_uint: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_UINT. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_uint( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_UINT, ap ); va_end( ap ); return( result ); } /** * vips_cast_int: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_INT. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_int( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_INT, ap ); va_end( ap ); return( result ); } /** * vips_cast_float: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_FLOAT. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_float( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_FLOAT, ap ); va_end( ap ); return( result ); } /** * vips_cast_double: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_DOUBLE. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_double( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_DOUBLE, ap ); va_end( ap ); return( result ); } /** * vips_cast_complex: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_COMPLEX. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_complex( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_COMPLEX, ap ); va_end( ap ); return( result ); } /** * vips_cast_dpcomplex: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_DPCOMPLEX. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_dpcomplex( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_DPCOMPLEX, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/composite.cpp000066400000000000000000001147611361153320700215570ustar00rootroot00000000000000/* composite an array of images with PDF operators * * 25/9/17 * - from bandjoin.c * 30/11/17 * - add composite2 class, to make a nice CLI interface * 30/1/18 * - remove number of images limit * - allow one mode ... reused for all joins * 11/8/18 [medakk] * - x/y params let you position images * 27/11/18 * - don't stop on first non-transparent image [felixbuenemann, GDmac] * 6/12/18 * - do our own subimage positioning * 8/5/19 * - revise in/out/dest-in/dest-out to make smoother alpha */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #if _MSC_VER #include #else #include #endif #include #include #include #include #include "pconversion.h" /* Maximum number of image bands. */ #define MAX_BANDS (64) /* Uncomment to disable the vector path ... handy for debugging. #undef HAVE_VECTOR_ARITH */ /* We have a vector path with gcc's vector attr. */ #ifdef HAVE_VECTOR_ARITH /* A vector of four floats. */ typedef float v4f __attribute__((vector_size(4 * sizeof(float)))); #endif /*HAVE_VECTOR_ARITH*/ typedef struct _VipsCompositeBase { VipsConversion parent_instance; /* The input images. */ VipsArrayImage *in; /* For N input images, 1 blend mode or N - 1 blend modes. */ VipsArrayInt *mode; /* Compositing space. This defaults to RGB, or B_W if we only have * G and GA inputs. */ VipsInterpretation compositing_space; /* Set if the input images have already been premultiplied. */ gboolean premultiplied; /* The x and y positions for each image in the stack. There are n - 1 * of these, since image 0 is always positioned at (0, 0). Set by * subclasses. Can be NULL. */ int *x_offset; int *y_offset; /* A rect for the position of each input image. For each output region, * we composite the set of input images which intersect that area. */ VipsRect *subimages; /* The number of non-alpha bands we are blending. */ int bands; /* The maximum value for each band, set from the image interpretation. * This is used to scale each band to 0 - 1. */ double max_band[MAX_BANDS + 1]; /* TRUE if all our modes are skippable, ie. we can avoid compositing * the whole stack for every pixel request. */ gboolean skippable; #ifdef HAVE_VECTOR_ARITH /* max_band as a vector, for the RGBA case. */ v4f max_band_vec; #endif /*HAVE_VECTOR_ARITH*/ } VipsCompositeBase; typedef VipsConversionClass VipsCompositeBaseClass; /* We need C linkage for this. */ extern "C" { G_DEFINE_ABSTRACT_TYPE( VipsCompositeBase, vips_composite_base, VIPS_TYPE_CONVERSION ); } static void vips_composite_base_dispose( GObject *gobject ) { VipsCompositeBase *composite = (VipsCompositeBase *) gobject; if( composite->in ) { vips_area_unref( (VipsArea *) composite->in ); composite->in = NULL; } if( composite->mode ) { vips_area_unref( (VipsArea *) composite->mode ); composite->mode = NULL; } VIPS_FREE( composite->subimages ); G_OBJECT_CLASS( vips_composite_base_parent_class )->dispose( gobject ); } /* Our sequence value. */ typedef struct { VipsCompositeBase *composite; /* Full set of input regions, each made on the corresponding input * image. */ VipsRegion **input_regions; /* We then vips_region_prepare_to() to one of this set of regions, * each defined on the base image. */ VipsRegion **composite_regions; /* Number of input regions which intersect this request rect. */ int n; /* For each of @n above (inputs which intersect this request), the * index of the input image we need. We can use this index to get the * position, input region and composite region. */ int *enabled; /* For each enabled image, an input pointer. */ VipsPel **p; } VipsCompositeSequence; static int vips_composite_stop( void *vseq, void *a, void *b ) { VipsCompositeSequence *seq = (VipsCompositeSequence *) vseq; if( seq->input_regions ) { for( int i = 0; seq->input_regions[i]; i++ ) VIPS_UNREF( seq->input_regions[i] ); VIPS_FREE( seq->input_regions ); } if( seq->composite_regions ) { for( int i = 0; seq->composite_regions[i]; i++ ) VIPS_UNREF( seq->composite_regions[i] ); VIPS_FREE( seq->composite_regions ); } VIPS_FREE( seq->enabled ); VIPS_FREE( seq->p ); VIPS_FREE( seq ); return( 0 ); } static void * vips_composite_start( VipsImage *out, void *a, void *b ) { VipsImage **in = (VipsImage **) a; VipsCompositeBase *composite = (VipsCompositeBase *) b; VipsCompositeSequence *seq; int i, n; if( !(seq = VIPS_NEW( NULL, VipsCompositeSequence )) ) return( NULL ); seq->composite = composite; seq->input_regions = NULL; seq->enabled = NULL; seq->p = NULL; /* How many images? */ for( n = 0; in[n]; n++ ) ; /* Allocate space for region array. */ if( !(seq->input_regions = VIPS_ARRAY( NULL, n + 1, VipsRegion * )) ) { vips_composite_stop( seq, NULL, NULL ); return( NULL ); } for( i = 0; i < n + 1; i++ ) seq->input_regions[i] = NULL; if( !(seq->composite_regions = VIPS_ARRAY( NULL, n + 1, VipsRegion * )) ) { vips_composite_stop( seq, NULL, NULL ); return( NULL ); } for( i = 0; i < n + 1; i++ ) seq->composite_regions[i] = NULL; seq->enabled = VIPS_ARRAY( NULL, n, int ); seq->p = VIPS_ARRAY( NULL, n, VipsPel * ); if( !seq->enabled || !seq->p ) { vips_composite_stop( seq, NULL, NULL ); return( NULL ); } /* Create a set of regions. */ for( i = 0; i < n; i++ ) { seq->input_regions[i] = vips_region_new( in[i] ); seq->composite_regions[i] = vips_region_new( in[0] ); if( !seq->input_regions[i] || !seq->composite_regions[i] ) { vips_composite_stop( seq, NULL, NULL ); return( NULL ); } } return( seq ); } /* For each of the supported interpretations, the maximum value of each band. */ static int vips_composite_base_max_band( VipsCompositeBase *composite, double *max_band ) { double max_alpha; int b; max_alpha = 255.0; if( composite->compositing_space == VIPS_INTERPRETATION_GREY16 || composite->compositing_space == VIPS_INTERPRETATION_RGB16 ) max_alpha = 65535.0; for( b = 0; b <= composite->bands; b++ ) max_band[b] = max_alpha; switch( composite->compositing_space ) { case VIPS_INTERPRETATION_XYZ: max_band[0] = VIPS_D65_X0; max_band[1] = VIPS_D65_Y0; max_band[2] = VIPS_D65_Z0; break; case VIPS_INTERPRETATION_LAB: max_band[0] = 100; max_band[1] = 128; max_band[2] = 128; break; case VIPS_INTERPRETATION_LCH: max_band[0] = 100; max_band[1] = 128; max_band[2] = 360; break; case VIPS_INTERPRETATION_CMC: max_band[0] = 100; max_band[1] = 128; max_band[2] = 360; break; case VIPS_INTERPRETATION_scRGB: max_band[0] = 1; max_band[1] = 1; max_band[2] = 1; break; case VIPS_INTERPRETATION_sRGB: max_band[0] = 255; max_band[1] = 255; max_band[2] = 255; break; case VIPS_INTERPRETATION_HSV: max_band[0] = 255; max_band[1] = 255; max_band[2] = 255; break; case VIPS_INTERPRETATION_RGB16: max_band[0] = 65535; max_band[1] = 65535; max_band[2] = 65535; break; case VIPS_INTERPRETATION_GREY16: max_band[0] = 65535; break; case VIPS_INTERPRETATION_YXY: max_band[0] = 100; max_band[1] = 1; max_band[2] = 1; break; case VIPS_INTERPRETATION_B_W: max_band[0] = 255; break; default: return( -1 ); } return( 0 ); } /* Find the subset of our input images which intersect this region. If we are * not in skippable mode, we must enable all layers. */ static void vips_composite_base_select( VipsCompositeSequence *seq, VipsRect *r ) { VipsCompositeBase *composite = seq->composite; int n = composite->in->area.n; seq->n = 0; for( int i = 0; i < n; i++ ) if( !composite->skippable || vips_rect_overlapsrect( r, &composite->subimages[i] ) ) { seq->enabled[seq->n] = i; seq->n += 1; } } /* Cairo naming conventions: * * aR alpha of result * aA alpha of source A (the new pixel) * aB alpha of source B (the thing we accumulate) * xR colour band of result * xA colour band of source A * xB colour band of source B */ /* A is the new pixel coming in, of any non-complex type T. * * We must scale incoming pixels to 0 - 1 by dividing by the scale[] vector. * * If premultipled is not set, we premultiply incoming pixels before blending. * * B is the double pixel we are accumulating. */ template static void vips_composite_base_blend( VipsCompositeBase *composite, VipsBlendMode mode, double * restrict B, T * restrict p ) { const int bands = composite->bands; double A[MAX_BANDS + 1]; double aA; double aB; double aR; double t1; double t2; double t3; double f[MAX_BANDS + 1]; /* Load and scale the pixel to 0 - 1. */ for( int b = 0; b <= bands; b++ ) A[b] = p[b] / composite->max_band[b]; /* Not necessary, but it stops a compiler warning. */ for( int b = bands + 1; b < MAX_BANDS + 1; b++ ) A[b] = 0.0; aA = A[bands]; aB = B[bands]; /* We may need to premultiply A. */ if( !composite->premultiplied ) for( int b = 0; b < bands; b++ ) A[b] *= aA; switch( mode ) { case VIPS_BLEND_MODE_CLEAR: aR = 0; for( int b = 0; b < bands; b++ ) B[b] = 0; break; case VIPS_BLEND_MODE_SOURCE: aR = aA; for( int b = 0; b < bands; b++ ) B[b] = A[b]; break; case VIPS_BLEND_MODE_OVER: aR = aA + aB * (1 - aA); t1 = 1 - aA; for( int b = 0; b < bands; b++ ) B[b] = A[b] + t1 * B[b]; break; case VIPS_BLEND_MODE_IN: aR = aA * aB; // if aA == 0, then aR == 0 and so B will already be 0 if( aA != 0 ) for( int b = 0; b < bands; b++ ) B[b] = A[b] * aR / aA; break; case VIPS_BLEND_MODE_OUT: aR = aA * (1 - aB); // if aA == 0, then aR == 0 and so B will already be 0 if( aA != 0 ) for( int b = 0; b < bands; b++ ) B[b] = A[b] * aR / aA; break; case VIPS_BLEND_MODE_ATOP: aR = aB; t1 = 1 - aA; for( int b = 0; b < bands; b++ ) B[b] = A[b] + t1 * B[b]; break; case VIPS_BLEND_MODE_DEST: aR = aB; // B = B break; case VIPS_BLEND_MODE_DEST_OVER: aR = aB + aA * (1 - aB); t1 = 1 - aB; for( int b = 0; b < bands; b++ ) B[b] = B[b] + t1 * A[b]; break; case VIPS_BLEND_MODE_DEST_IN: aR = aA * aB; // B = B if( aB != 0 ) for( int b = 0; b < bands; b++ ) B[b] *= aR / aB; break; case VIPS_BLEND_MODE_DEST_OUT: aR = (1 - aA) * aB; // B = B // if aB is 0, then B is already 0 if( aB != 0 ) for( int b = 0; b < bands; b++ ) B[b] *= aR / aB; break; case VIPS_BLEND_MODE_DEST_ATOP: aR = aA; t1 = 1 - aA; for( int b = 0; b < bands; b++ ) B[b] = t1 * A[b] + B[b]; break; case VIPS_BLEND_MODE_XOR: aR = aA + aB - 2 * aA * aB; t1 = 1 - aB; t2 = 1 - aA; for( int b = 0; b < bands; b++ ) B[b] = t1 * A[b] + t2 * B[b]; break; case VIPS_BLEND_MODE_ADD: aR = VIPS_MIN( 1, aA + aB ); for( int b = 0; b < bands; b++ ) B[b] = A[b] + B[b]; break; case VIPS_BLEND_MODE_SATURATE: aR = VIPS_MIN( 1, aA + aB ); t1 = VIPS_MIN( aA, 1 - aB ); for( int b = 0; b < bands; b++ ) B[b] = t1 * A[b] + B[b]; break; default: /* The PDF modes are a bit different. */ aR = aA + aB * (1 - aA); switch( mode ) { case VIPS_BLEND_MODE_MULTIPLY: for( int b = 0; b < bands; b++ ) f[b] = A[b] * B[b]; break; case VIPS_BLEND_MODE_SCREEN: for( int b = 0; b < bands; b++ ) f[b] = A[b] + B[b] - A[b] * B[b]; break; case VIPS_BLEND_MODE_OVERLAY: for( int b = 0; b < bands; b++ ) if( B[b] <= 0.5 ) f[b] = 2 * A[b] * B[b]; else f[b] = 1 - 2 * (1 - A[b]) * (1 - B[b]); break; case VIPS_BLEND_MODE_DARKEN: for( int b = 0; b < bands; b++ ) f[b] = VIPS_MIN( A[b], B[b] ); break; case VIPS_BLEND_MODE_LIGHTEN: for( int b = 0; b < bands; b++ ) f[b] = VIPS_MAX( A[b], B[b] ); break; case VIPS_BLEND_MODE_COLOUR_DODGE: for( int b = 0; b < bands; b++ ) if( A[b] < 1 ) f[b] = VIPS_MIN( 1, B[b] / (1 - A[b]) ); else f[b] = 1; break; case VIPS_BLEND_MODE_COLOUR_BURN: for( int b = 0; b < bands; b++ ) if( A[b] > 0 ) f[b] = 1 - VIPS_MIN( 1, (1 - B[b]) / A[b] ); else f[b] = 0; break; case VIPS_BLEND_MODE_HARD_LIGHT: for( int b = 0; b < bands; b++ ) if( A[b] <= 0.5 ) f[b] = 2 * A[b] * B[b]; else f[b] = 1 - 2 * (1 - A[b]) * (1 - B[b]); break; case VIPS_BLEND_MODE_SOFT_LIGHT: for( int b = 0; b < bands; b++ ) { double g; if( B[b] <= 0.25 ) g = ((16 * B[b] - 12) * B[b] + 4) * B[b]; else g = sqrt( B[b] ); if( A[b] <= 0.5 ) f[b] = B[b] - (1 - 2 * A[b]) * B[b] * (1 - B[b]); else f[b] = B[b] + (2 * A[b] - 1) * (g - B[b]); } break; case VIPS_BLEND_MODE_DIFFERENCE: for( int b = 0; b < bands; b++ ) f[b] = abs( B[b] - A[b] ); break; case VIPS_BLEND_MODE_EXCLUSION: for( int b = 0; b < bands; b++ ) f[b] = A[b] + B[b] - 2 * A[b] * B[b]; break; default: g_assert_not_reached(); for( int b = 0; b < bands; b++ ) B[b] = 0; } t1 = 1 - aB; t2 = 1 - aA; t3 = aA * aB; for( int b = 0; b < bands; b++ ) B[b] = t1 * A[b] + t2 * B[b] + t3 * f[b]; break; } B[bands] = aR; } /* We have a vector path with gcc's vector attr. */ #ifdef HAVE_VECTOR_ARITH /* Special path for RGBA with non-double output. This is overwhelmingly the * most common case, and vectorises easily. * * B is the float pixel we are accumulating, A is the new pixel coming * in from memory. */ template static void vips_composite_base_blend3( VipsCompositeBase *composite, VipsBlendMode mode, v4f &B, T * restrict p ) { v4f A; float aA; float aB; float aR; float t1; float t2; float t3; v4f f; v4f g; /* Load and scale the pixel to 0 - 1. */ A[0] = p[0]; A[1] = p[1]; A[2] = p[2]; A[3] = p[3]; A /= composite->max_band_vec; aA = A[3]; aB = B[3]; /* We may need to premultiply A. */ if( !composite->premultiplied ) A *= aA; /* See https://www.cairographics.org/operators for a nice summary of * the operators and their meaning. * * Some operators need the unpremultiplied values (eg. dest-in), so * we have to do an extra unpremultiply/premultiply. */ switch( mode ) { case VIPS_BLEND_MODE_CLEAR: aR = 0; B[0] = 0; B[1] = 0; B[2] = 0; break; case VIPS_BLEND_MODE_SOURCE: aR = aA; B = A; break; case VIPS_BLEND_MODE_OVER: aR = aA + aB * (1 - aA); t1 = 1 - aA; B = A + t1 * B; break; case VIPS_BLEND_MODE_IN: aR = aA * aB; // if aA == 0, then aR == 0 and so B will already be 0 if( aA != 0 ) B = A * aR / aA; break; case VIPS_BLEND_MODE_OUT: aR = aA * (1 - aB); // if aA == 0, then aR == 0 and so B will already be 0 if( aA != 0 ) B = A * aR / aA; break; case VIPS_BLEND_MODE_ATOP: aR = aB; t1 = 1 - aA; B = A + t1 * B; break; case VIPS_BLEND_MODE_DEST: aR = aB; // B = B break; case VIPS_BLEND_MODE_DEST_OVER: aR = aB + aA * (1 - aB); t1 = 1 - aB; B = B + t1 * A; break; case VIPS_BLEND_MODE_DEST_IN: aR = aA * aB; // if aB is 0, then B is already 0 if( aB != 0 ) B *= aR / aB; break; case VIPS_BLEND_MODE_DEST_OUT: aR = (1 - aA) * aB; // B = B // if aB is 0, then B is already 0 if( aB != 0 ) B *= aR / aB; break; case VIPS_BLEND_MODE_DEST_ATOP: aR = aA; t1 = 1 - aA; B = t1 * A + B; break; case VIPS_BLEND_MODE_XOR: aR = aA + aB - 2 * aA * aB; t1 = 1 - aB; t2 = 1 - aA; B = t1 * A + t2 * B; break; case VIPS_BLEND_MODE_ADD: aR = VIPS_MIN( 1, aA + aB ); B = A + B; break; case VIPS_BLEND_MODE_SATURATE: aR = VIPS_MIN( 1, aA + aB ); t1 = VIPS_MIN( aA, 1 - aB ); B = t1 * A + B; break; default: /* The PDF modes are a bit different. */ aR = aA + aB * (1 - aA); switch( mode ) { case VIPS_BLEND_MODE_MULTIPLY: f = A * B; break; case VIPS_BLEND_MODE_SCREEN: f = A + B - A * B; break; case VIPS_BLEND_MODE_OVERLAY: f = B <= 0.5 ? 2 * A * B : 1 - 2 * (1 - A) * (1 - B); break; case VIPS_BLEND_MODE_DARKEN: f = VIPS_MIN( A, B ); break; case VIPS_BLEND_MODE_LIGHTEN: f = VIPS_MAX( A, B ); break; case VIPS_BLEND_MODE_COLOUR_DODGE: f = A < 1 ? VIPS_MIN( 1, B / (1 - A) ) : 1; break; case VIPS_BLEND_MODE_COLOUR_BURN: f = A > 0 ? 1 - VIPS_MIN( 1, (1 - B) / A ) : 0; break; case VIPS_BLEND_MODE_HARD_LIGHT: f = A < 0.5 ? 2 * A * B : 1 - 2 * (1 - A) * (1 - B); break; case VIPS_BLEND_MODE_SOFT_LIGHT: /* You can't sqrt a vector, so we must loop. */ for( int b = 0; b < 3; b++ ) { double g; if( B[b] <= 0.25 ) g = ((16 * B[b] - 12) * B[b] + 4) * B[b]; else g = sqrt( B[b] ); if( A[b] <= 0.5 ) f[b] = B[b] - (1 - 2 * A[b]) * B[b] * (1 - B[b]); else f[b] = B[b] + (2 * A[b] - 1) * (g - B[b]); } break; case VIPS_BLEND_MODE_DIFFERENCE: g = B - A; f = g > 0 ? g : -1 * g; break; case VIPS_BLEND_MODE_EXCLUSION: f = A + B - 2 * A * B; break; default: g_assert_not_reached(); /* Stop compiler warnings. */ for( int b = 0; b < 3; b++ ) B[b] = 0; f = A; } t1 = 1 - aB; t2 = 1 - aA; t3 = aA * aB; B = t1 * A + t2 * B + t3 * f; break; } B[3] = aR; } #endif /*HAVE_VECTOR_ARITH*/ /* min_T and max_T are the numeric range for this type. 0, 0 means no limit, * for example float. */ template static void vips_combine_pixels( VipsCompositeSequence *seq, VipsPel *q ) { VipsCompositeBase *composite = seq->composite; VipsBlendMode *mode = (VipsBlendMode *) composite->mode->area.data; int n_mode = composite->mode->area.n; int n = seq->n; int bands = composite->bands; T * restrict tq = (T * restrict) q; T ** restrict tp = (T ** restrict) seq->p; double B[MAX_BANDS + 1]; double aB; /* Load and scale the base pixel to 0 - 1. */ for( int b = 0; b <= bands; b++ ) B[b] = tp[0][b] / composite->max_band[b]; aB = B[bands]; if( !composite->premultiplied ) for( int b = 0; b < bands; b++ ) B[b] *= aB; for( int i = 1; i < n; i++ ) { int j = seq->enabled[i]; VipsBlendMode m = n_mode == 1 ? mode[0] : mode[j - 1]; vips_composite_base_blend( composite, m, B, tp[i] ); } /* Unpremultiply, if necessary. */ if( !composite->premultiplied ) { double aR = B[bands]; if( aR == 0 ) for( int b = 0; b < bands; b++ ) B[b] = 0; else for( int b = 0; b < bands; b++ ) B[b] = B[b] / aR; } /* Write back as a full range pixel, clipping to range. */ for( int b = 0; b <= bands; b++ ) { double v; v = B[b] * composite->max_band[b]; if( min_T != 0 || max_T != 0 ) { v = VIPS_CLIP( min_T, v, max_T ); } tq[b] = v; } } #ifdef HAVE_VECTOR_ARITH /* Three band (four with alpha) vector case. Non-double output. min_T and * max_T are the numeric range for this type. 0, 0 means no limit, * for example float. */ template static void vips_combine_pixels3( VipsCompositeSequence *seq, VipsPel *q ) { VipsCompositeBase *composite = seq->composite; VipsBlendMode *mode = (VipsBlendMode *) composite->mode->area.data; int n_mode = composite->mode->area.n; int n = seq->n; T * restrict tq = (T * restrict) q; T ** restrict tp = (T ** restrict) seq->p; v4f B; float aB; B[0] = tp[0][0]; B[1] = tp[0][1]; B[2] = tp[0][2]; B[3] = tp[0][3]; /* Scale the base pixel to 0 - 1. */ B /= composite->max_band_vec; aB = B[3]; if( !composite->premultiplied ) { B *= aB; B[3] = aB; } for( int i = 1; i < n; i++ ) { int j = seq->enabled[i]; VipsBlendMode m = n_mode == 1 ? mode[0] : mode[j - 1]; vips_composite_base_blend3( composite, m, B, tp[i] ); } /* Unpremultiply, if necessary. */ if( !composite->premultiplied ) { float aR = B[3]; if( aR == 0 ) for( int b = 0; b < 3; b++ ) B[b] = 0; else { B /= aR; B[3] = aR; } } /* Write back as a full range pixel, clipping to range. */ B *= composite->max_band_vec; if( min_T != 0 || max_T != 0 ) { float low = min_T; float high = max_T; B = VIPS_CLIP( low, B, high ); } tq[0] = B[0]; tq[1] = B[1]; tq[2] = B[2]; tq[3] = B[3]; } #endif /*HAVE_VECTOR_ARITH*/ static int vips_composite_base_gen( VipsRegion *output_region, void *vseq, void *a, void *b, gboolean *stop ) { VipsCompositeSequence *seq = (VipsCompositeSequence *) vseq; VipsCompositeBase *composite = (VipsCompositeBase *) b; VipsRect *r = &output_region->valid; int ps = VIPS_IMAGE_SIZEOF_PEL( output_region->im ); VIPS_DEBUG_MSG( "vips_composite_base_gen: at %d x %d, size %d x %d\n", r->left, r->top, r->width, r->height ); /* Find the subset of our input images which intersect this region. */ vips_composite_base_select( seq, r ); VIPS_DEBUG_MSG( " selected %d images\n", seq->n ); /* Is there just one? We can prepare directly to output and return. */ if( seq->n == 1 ) { /* This can only be the background image, since it's the only * image which exactly fills the whole output. */ g_assert( seq->enabled[0] == 0 ); if( vips_region_prepare( seq->input_regions[0], r ) ) return( -1 ); if( vips_region_region( output_region, seq->input_regions[0], r, r->left, r->top ) ) return( -1 ); return( 0 ); } /* Prepare the appropriate parts into our set of composite * regions. */ for( int i = 0; i < seq->n; i++ ) { int j = seq->enabled[i]; VipsRect hit; VipsRect request; /* Set the composite region up to be a bit of memory at the * right position. */ if( vips_region_buffer( seq->composite_regions[j], r ) ) return( -1 ); /* Clip against this subimage position and size. */ hit = *r; vips_rect_intersectrect( &hit, &composite->subimages[j], &hit ); /* Translate request to subimage coordinates. */ request = hit; request.left -= composite->subimages[j].left; request.top -= composite->subimages[j].top; /* If the request is smaller than the target region, there * will be some gaps. We must make sure these are zero. */ if( request.width < r->width || request.height < r->height ) vips_region_black( seq->composite_regions[j] ); /* And render the right part of the input image to the * composite region. * * If we are not in skippable mode, we can be completely * outside the subimage area. */ if( !vips_rect_isempty( &request ) ) { VIPS_DEBUG_MSG( " fetching pixels for input %d\n", j ); if( vips_region_prepare_to( seq->input_regions[j], seq->composite_regions[j], &request, hit.left, hit.top ) ) return( -1 ); } } VIPS_GATE_START( "vips_composite_base_gen: work" ); for( int y = 0; y < r->height; y++ ) { VipsPel *q; for( int i = 0; i < seq->n; i++ ) { int j = seq->enabled[i]; seq->p[i] = VIPS_REGION_ADDR( seq->composite_regions[j], r->left, r->top + y ); } q = VIPS_REGION_ADDR( output_region, r->left, r->top + y ); for( int x = 0; x < r->width; x++ ) { switch( seq->input_regions[0]->im->BandFmt ) { case VIPS_FORMAT_UCHAR: #ifdef HAVE_VECTOR_ARITH if( composite->bands == 3 ) vips_combine_pixels3 ( seq, q ); else #endif vips_combine_pixels ( seq, q ); break; case VIPS_FORMAT_CHAR: vips_combine_pixels ( seq, q ); break; case VIPS_FORMAT_USHORT: #ifdef HAVE_VECTOR_ARITH if( composite->bands == 3 ) vips_combine_pixels3 ( seq, q ); else #endif vips_combine_pixels ( seq, q ); break; case VIPS_FORMAT_SHORT: vips_combine_pixels ( seq, q ); break; case VIPS_FORMAT_UINT: vips_combine_pixels ( seq, q ); break; case VIPS_FORMAT_INT: vips_combine_pixels ( seq, q ); break; case VIPS_FORMAT_FLOAT: #ifdef HAVE_VECTOR_ARITH if( composite->bands == 3 ) vips_combine_pixels3 ( seq, q ); else #endif vips_combine_pixels ( seq, q ); break; case VIPS_FORMAT_DOUBLE: vips_combine_pixels ( seq, q ); break; default: g_assert_not_reached(); return( -1 ); } for( int i = 0; i < seq->n; i++ ) seq->p[i] += ps; q += ps; } } VIPS_GATE_STOP( "vips_composite_base_gen: work" ); return( 0 ); } /* Is a mode "skippable"? * * Skippable modes are ones where a black (0, 0, 0, 0) layer placed over the * base image and composited has no effect. * * If all the modes in our stack are skippable, we can avoid compositing the * whole stack for every request. */ static gboolean vips_composite_mode_skippable( VipsBlendMode mode ) { switch( mode ) { case VIPS_BLEND_MODE_CLEAR: case VIPS_BLEND_MODE_SOURCE: case VIPS_BLEND_MODE_IN: case VIPS_BLEND_MODE_OUT: case VIPS_BLEND_MODE_DEST_IN: case VIPS_BLEND_MODE_DEST_ATOP: return( FALSE ); default: return( TRUE ); } } static int vips_composite_base_build( VipsObject *object ) { VipsObjectClass *klass = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsCompositeBase *composite = (VipsCompositeBase *) object; int n; VipsBlendMode *mode; VipsImage **in; VipsImage **decode; VipsImage **compositing; VipsImage **format; if( VIPS_OBJECT_CLASS( vips_composite_base_parent_class )-> build( object ) ) return( -1 ); n = composite->in->area.n; if( n <= 0 ) { vips_error( klass->nickname, "%s", _( "no input images" ) ); return( -1 ); } if( composite->mode->area.n != n - 1 && composite->mode->area.n != 1 ) { vips_error( klass->nickname, _( "must be 1 or %d blend modes" ), n - 1 ); return( -1 ); } mode = (VipsBlendMode *) composite->mode->area.data; composite->skippable = TRUE; for( int i = 0; i < composite->mode->area.n; i++ ) { if( mode[i] < 0 || mode[i] >= VIPS_BLEND_MODE_LAST ) { vips_error( klass->nickname, _( "blend mode index %d (%d) invalid" ), i, mode[i] ); return( -1 ); } if( !vips_composite_mode_skippable( mode[i] ) ) composite->skippable = FALSE; } in = (VipsImage **) composite->in->area.data; /* Make a set of rects for the positions of the input images. Image 0 * (the background) is always at (0, 0). */ if( !(composite->subimages = VIPS_ARRAY( NULL, n, VipsRect )) ) return( -1 ); for( int i = 0; i < n; i++ ) { composite->subimages[i].left = 0; composite->subimages[i].top = 0; composite->subimages[i].width = in[i]->Xsize; composite->subimages[i].height = in[i]->Ysize; } /* Position all images, if x/y is set. Image 0 * (the background) is always at (0, 0). */ if( composite->x_offset && composite->y_offset ) for( int i = 1; i < n; i++ ) { composite->subimages[i].left = composite->x_offset[i - 1]; composite->subimages[i].top = composite->y_offset[i - 1]; } decode = (VipsImage **) vips_object_local_array( object, n ); for( int i = 0; i < n; i++ ) if( vips_image_decode( in[i], &decode[i] ) ) return( -1 ); in = decode; /* Add a solid alpha to any images missing one. */ for( int i = n - 1; i >= 0; i-- ) if( !vips_image_hasalpha( in[i] ) ) { VipsImage *x; if( vips_addalpha( in[i], &x, (void *) NULL ) ) return( -1 ); g_object_unref( in[i] ); in[i] = x; } /* Transform to compositing space. It defaults to sRGB or B_W, usually * 8 bit, but 16 bit if any inputs are 16 bit. */ if( !vips_object_argument_isset( object, "compositing_space" ) ) { gboolean all_grey; gboolean any_16; all_grey = TRUE; for( int i = 0; i < n; i++ ) if( in[i]->Bands > 2 ) { all_grey = FALSE; break; } any_16 = FALSE; for( int i = 0; i < n; i++ ) if( in[i]->Type == VIPS_INTERPRETATION_GREY16 || in[i]->Type == VIPS_INTERPRETATION_RGB16 ) { any_16 = TRUE; break; } composite->compositing_space = any_16 ? (all_grey ? VIPS_INTERPRETATION_GREY16 : VIPS_INTERPRETATION_RGB16) : (all_grey ? VIPS_INTERPRETATION_B_W : VIPS_INTERPRETATION_sRGB); } compositing = (VipsImage **) vips_object_local_array( object, n ); for( int i = 0; i < n; i++ ) if( vips_colourspace( in[i], &compositing[i], composite->compositing_space, (void *) NULL ) ) return( -1 ); in = compositing; /* Check that they all now match in bands. This can fail for some * input combinations. */ for( int i = 1; i < n; i++ ) if( in[i]->Bands != in[0]->Bands ) { vips_error( klass->nickname, "%s", _( "images do not have same " "numbers of bands" ) ); return( -1 ); } if( in[0]->Bands > MAX_BANDS ) { vips_error( klass->nickname, "%s", _( "too many input bands" ) ); return( -1 ); } composite->bands = in[0]->Bands - 1; /* Set the max for each band now we know bands and compositing space. */ if( vips_composite_base_max_band( composite, composite->max_band ) ) { vips_error( klass->nickname, "%s", _( "unsupported compositing space" ) ); return( -1 ); } #ifdef HAVE_VECTOR_ARITH /* We need a float version for the vector path. */ if( composite->bands == 3 ) for( int b = 0; b <= 3; b++ ) composite->max_band_vec[b] = composite->max_band[b]; #endif /*HAVE_VECTOR_ARITH*/ /* Transform the input images to match in format. We may have * mixed float and double, for example. */ format = (VipsImage **) vips_object_local_array( object, n ); if( vips__formatalike_vec( in, format, n ) ) return( -1 ); in = format; /* We want locality, so that we only prepare a few subimages each * time. */ if( vips_image_pipeline_array( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, in ) ) return( -1 ); /* The output image is always the size of the base image. */ conversion->out->Xsize = in[0]->Xsize; conversion->out->Ysize = in[0]->Ysize; if( vips_image_generate( conversion->out, vips_composite_start, vips_composite_base_gen, vips_composite_stop, in, composite ) ) return( -1 ); return( 0 ); } static void vips_composite_base_class_init( VipsCompositeBaseClass *klass ) { GObjectClass *gobject_class = G_OBJECT_CLASS( klass ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( klass ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( klass ); VIPS_DEBUG_MSG( "vips_composite_base_class_init\n" ); gobject_class->dispose = vips_composite_base_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "composite_base"; vobject_class->description = _( "blend images together" ); vobject_class->build = vips_composite_base_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_ENUM( klass, "compositing_space", 10, _( "Compositing space" ), _( "Composite images in this colour space" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompositeBase, compositing_space ), VIPS_TYPE_INTERPRETATION, VIPS_INTERPRETATION_sRGB ); VIPS_ARG_BOOL( klass, "premultiplied", 11, _( "Premultiplied" ), _( "Images have premultiplied alpha" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompositeBase, premultiplied ), FALSE ); } static void vips_composite_base_init( VipsCompositeBase *composite ) { composite->compositing_space = VIPS_INTERPRETATION_sRGB; } typedef struct _VipsComposite { VipsCompositeBase parent_instance; /* For N input images, N - 1 x coordinates. */ VipsArrayInt *x; /* For N input images, N - 1 y coordinates. */ VipsArrayInt *y; } VipsComposite; typedef VipsCompositeBaseClass VipsCompositeClass; /* We need C linkage for this. */ extern "C" { G_DEFINE_TYPE( VipsComposite, vips_composite, vips_composite_base_get_type() ); } static int vips_composite_build( VipsObject *object ) { VipsObjectClass *klass = VIPS_OBJECT_GET_CLASS( object ); VipsCompositeBase *base = (VipsCompositeBase *) object; VipsComposite *composite = (VipsComposite *) object; int n; n = 0; if( vips_object_argument_isset( object, "in" ) ) n = base->in->area.n; if( vips_object_argument_isset( object, "x" ) ) { if( composite->x->area.n != n - 1 ) { vips_error( klass->nickname, _( "must be %d x coordinates" ), n - 1 ); return( -1 ); } base->x_offset = (int *) composite->x->area.data; } if( vips_object_argument_isset( object, "y" ) ) { if( composite->y->area.n != n - 1 ) { vips_error( klass->nickname, _( "must be %d y coordinates" ), n - 1 ); return( -1 ); } base->y_offset = (int *) composite->y->area.data; } if( VIPS_OBJECT_CLASS( vips_composite_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_composite_class_init( VipsCompositeClass *klass ) { GObjectClass *gobject_class = G_OBJECT_CLASS( klass ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( klass ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( klass ); VIPS_DEBUG_MSG( "vips_composite_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "composite"; vobject_class->description = _( "blend an array of images with an array of blend modes" ); vobject_class->build = vips_composite_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_BOXED( klass, "in", 0, _( "Inputs" ), _( "Array of input images" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCompositeBase, in ), VIPS_TYPE_ARRAY_IMAGE ); VIPS_ARG_BOXED( klass, "mode", 3, _( "Blend modes" ), _( "Array of VipsBlendMode to join with" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCompositeBase, mode ), VIPS_TYPE_ARRAY_INT ); VIPS_ARG_BOXED( klass, "x", 4, _( "x coordinates" ), _( "Array of x coordinates to join at" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsComposite, x ), VIPS_TYPE_ARRAY_INT ); VIPS_ARG_BOXED( klass, "y", 5, _( "y coordinates" ), _( "Array of y coordinates to join at" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsComposite, y ), VIPS_TYPE_ARRAY_INT ); } static void vips_composite_init( VipsComposite *composite ) { } static int vips_compositev( VipsImage **in, VipsImage **out, int n, int *mode, va_list ap ) { VipsArrayImage *image_array; VipsArrayInt *mode_array; int result; image_array = vips_array_image_new( in, n ); mode_array = vips_array_int_new( mode, n - 1 ); result = vips_call_split( "composite", ap, image_array, out, mode_array ); vips_area_unref( VIPS_AREA( image_array ) ); vips_area_unref( VIPS_AREA( mode_array ) ); return( result ); } /* See conversion.c for the doc comment. */ int vips_composite( VipsImage **in, VipsImage **out, int n, int *mode, ... ) { va_list ap; int result; va_start( ap, mode ); result = vips_compositev( in, out, n, mode, ap ); va_end( ap ); return( result ); } typedef struct _VipsComposite2 { VipsCompositeBase parent_instance; VipsImage *base; VipsImage *overlay; VipsBlendMode mode; int x; int y; } VipsComposite2; typedef VipsCompositeBaseClass VipsComposite2Class; /* We need C linkage for this. */ extern "C" { G_DEFINE_TYPE( VipsComposite2, vips_composite2, vips_composite_base_get_type() ); } static int vips_composite2_build( VipsObject *object ) { VipsCompositeBase *base = (VipsCompositeBase *) object; VipsComposite2 *composite2 = (VipsComposite2 *) object; if( composite2->overlay && composite2->base ) { VipsImage *in[3]; int mode[1]; in[0] = composite2->base; in[1] = composite2->overlay; in[2] = NULL; base->in = vips_array_image_new( in, 2 ); mode[0] = (int) composite2->mode; base->mode = vips_array_int_new( mode, 1 ); } base->x_offset = &composite2->x; base->y_offset = &composite2->y; if( VIPS_OBJECT_CLASS( vips_composite2_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_composite2_class_init( VipsCompositeClass *klass ) { GObjectClass *gobject_class = G_OBJECT_CLASS( klass ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( klass ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( klass ); VIPS_DEBUG_MSG( "vips_composite_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "composite2"; vobject_class->description = _( "blend a pair of images with a blend mode" ); vobject_class->build = vips_composite2_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( klass, "base", 0, _( "Base" ), _( "Base image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsComposite2, base ) ); VIPS_ARG_IMAGE( klass, "overlay", 1, _( "Overlay" ), _( "Overlay image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsComposite2, overlay ) ); VIPS_ARG_ENUM( klass, "mode", 3, _( "Blend mode" ), _( "VipsBlendMode to join with" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsComposite2, mode ), VIPS_TYPE_BLEND_MODE, VIPS_BLEND_MODE_OVER ); VIPS_ARG_INT( klass, "x", 4, _( "x" ), _( "x position of overlay" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsComposite2, x ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( klass, "y", 5, _( "y" ), _( "y position of overlay" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsComposite2, y ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); } static void vips_composite2_init( VipsComposite2 *composite2 ) { } /* See conversion.c for the doc comment. */ int vips_composite2( VipsImage *base, VipsImage *overlay, VipsImage **out, VipsBlendMode mode, ... ) { va_list ap; int result; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wvarargs" /* Triggers a clang compiler warning because mode might not be an int. * I think the warning is harmless for all platforms we care about. */ va_start( ap, mode ); g_assert( sizeof( mode ) == sizeof( int ) ); #pragma clang diagnostic pop result = vips_call_split( "composite2", ap, base, overlay, out, mode ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/conversion.c000066400000000000000000000362401361153320700213750ustar00rootroot00000000000000/* base class for all conversion operations * * properties: * - single output image */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pconversion.h" /** * SECTION: conversion * @short_description: convert images in some way: change band format, change header, insert, extract, join * @see_also: resample * @stability: Stable * @include: vips/vips.h * * These operations convert an image in some way. They can be split into a two * main groups. * * The first set of operations change an image's format in some way. You * can change the band format (for example, cast to 32-bit unsigned * int), form complex images from real images, convert images to * matrices and back, change header fields, and a few others. * * The second group move pixels about in some way. You can flip, rotate, * extract, insert and join pairs of images in various ways. * */ /** * vips_composite: (method) * @in: (array length=n) (transfer none): array of input images * @out: (out): output image * @n: number of input images * @mode: array of (@n - 1) #VipsBlendMode * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @compositing_space: #VipsInterpretation to composite in * * @premultiplied: %gboolean, images are already premultiplied * * @x: #VipsArrayInt, position of subimages * * @y: #VipsArrayInt, position of subimages * * Composite an array of images together. * * Images are placed in a stack, with @in[0] at the bottom and @in[@n - 1] at * the top. Pixels are blended together working from the bottom upwards, with * the blend mode at each step being set by the corresponding #VipsBlendMode * in @mode. * * Images are transformed to a compositing space before processing. This is * #VIPS_INTERPRETATION_sRGB, #VIPS_INTERPRETATION_B_W, * #VIPS_INTERPRETATION_RGB16, or #VIPS_INTERPRETATION_GREY16 * by default, depending on * how many bands and bits the input images have. You can select any other * space, such as #VIPS_INTERPRETATION_LAB or #VIPS_INTERPRETATION_scRGB. * * The output image is in the compositing space. It will always be * #VIPS_FORMAT_FLOAT unless one of the inputs is #VIPS_FORMAT_DOUBLE, in * which case the output will be double as well. * * Complex images are not supported. * * The output image will always have an alpha band. A solid alpha is * added to any input missing an alpha. * * The images do not need to match in size or format. They will be expanded to * the smallest common size and format in the usual way. Images are positioned * using the @x and @y parameters, if set. * * Image are normally treated as unpremultiplied, so this operation can be used * directly on PNG images. If your images have been through vips_premultiply(), * set @premultiplied. * * See also: vips_insert(). * * Returns: 0 on success, -1 on error */ /** * vips_composite2: (method) * @base: first input image * @overlay: second input image * @out: (out): output image * @mode: composite with this blend mode * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @compositing_space: #VipsInterpretation to composite in * * @premultiplied: %gboolean, images are already premultiplied * * @x: %gint, position of overlay * * @y: %gint, position of overlay * * Composite @overlay on top of @base with @mode. See vips_composite(). * * Returns: 0 on success, -1 on error */ /** * VipsBlendMode: * @VIPS_BLEND_MODE_CLEAR: where the second object is drawn, the first is removed * @VIPS_BLEND_MODE_SOURCE: the second object is drawn as if nothing were below * @VIPS_BLEND_MODE_OVER: the image shows what you would expect if you held two semi-transparent slides on top of each other * @VIPS_BLEND_MODE_IN: the first object is removed completely, the second is only drawn where the first was * @VIPS_BLEND_MODE_OUT: the second is drawn only where the first isn't * @VIPS_BLEND_MODE_ATOP: this leaves the first object mostly intact, but mixes both objects in the overlapping area * @VIPS_BLEND_MODE_DEST: leaves the first object untouched, the second is discarded completely * @VIPS_BLEND_MODE_DEST_OVER: like OVER, but swaps the arguments * @VIPS_BLEND_MODE_DEST_IN: like IN, but swaps the arguments * @VIPS_BLEND_MODE_DEST_OUT: like OUT, but swaps the arguments * @VIPS_BLEND_MODE_DEST_ATOP: like ATOP, but swaps the arguments * @VIPS_BLEND_MODE_XOR: something like a difference operator * @VIPS_BLEND_MODE_ADD: a bit like adding the two images * @VIPS_BLEND_MODE_SATURATE: a bit like the darker of the two * @VIPS_BLEND_MODE_MULTIPLY: at least as dark as the darker of the two inputs * @VIPS_BLEND_MODE_SCREEN: at least as light as the lighter of the inputs * @VIPS_BLEND_MODE_OVERLAY: multiplies or screens colors, depending on the lightness * @VIPS_BLEND_MODE_DARKEN: the darker of each component * @VIPS_BLEND_MODE_LIGHTEN: the lighter of each component * @VIPS_BLEND_MODE_COLOUR_DODGE: brighten first by a factor second * @VIPS_BLEND_MODE_COLOUR_BURN: darken first by a factor of second * @VIPS_BLEND_MODE_HARD_LIGHT: multiply or screen, depending on lightness * @VIPS_BLEND_MODE_SOFT_LIGHT: darken or lighten, depending on lightness * @VIPS_BLEND_MODE_DIFFERENCE: difference of the two * @VIPS_BLEND_MODE_EXCLUSION: somewhat like DIFFERENCE, but lower-contrast * * The various Porter-Duff and PDF blend modes. See vips_composite(), * for example. * * The Cairo docs have a nice explanation of all the blend modes: * * https://www.cairographics.org/operators * * The non-separable modes are not implemented. */ /** * VipsAlign: * @VIPS_ALIGN_LOW: align low coordinate edge * @VIPS_ALIGN_CENTRE: align centre * @VIPS_ALIGN_HIGH: align high coordinate edge * * See vips_join() and so on. * * Operations like vips_join() need to be told whether to align images on the * low or high coordinate edge, or centre. * * See also: vips_join(). */ /** * VipsAngle: * @VIPS_ANGLE_D0: no rotate * @VIPS_ANGLE_D90: 90 degrees clockwise * @VIPS_ANGLE_D180: 180 degree rotate * @VIPS_ANGLE_D270: 90 degrees anti-clockwise * * See vips_rot() and so on. * * Fixed rotate angles. * * See also: vips_rot(). */ /** * VipsInteresting: * @VIPS_INTERESTING_NONE: do nothing * @VIPS_INTERESTING_CENTRE: just take the centre * @VIPS_INTERESTING_ENTROPY: use an entropy measure * @VIPS_INTERESTING_ATTENTION: look for features likely to draw human attention * @VIPS_INTERESTING_LOW: position the crop towards the low coordinate * @VIPS_INTERESTING_HIGH: position the crop towards the high coordinate * * Pick the algorithm vips uses to decide image "interestingness". This is used * by vips_smartcrop(), for example, to decide what parts of the image to * keep. * * #VIPS_INTERESTING_NONE and #VIPS_INTERESTING_LOW mean the same -- the * crop is positioned at the top or left. #VIPS_INTERESTING_HIGH positions at * the bottom or right. * * See also: vips_smartcrop(). */ /** * VipsCompassDirection: * @VIPS_COMPASS_DIRECTION_CENTRE: centre * @VIPS_COMPASS_DIRECTION_NORTH: north * @VIPS_COMPASS_DIRECTION_EAST: east * @VIPS_COMPASS_DIRECTION_SOUTH: south * @VIPS_COMPASS_DIRECTION_WEST: west * @VIPS_COMPASS_DIRECTION_NORTH_EAST: north-east * @VIPS_COMPASS_DIRECTION_SOUTH_EAST: south-east * @VIPS_COMPASS_DIRECTION_SOUTH_WEST: south-west * @VIPS_COMPASS_DIRECTION_NORTH_WEST: north-west * * A direction on a compass. Used for vips_gravity(), for example. */ /** * VipsAngle45: * @VIPS_ANGLE45_D0: no rotate * @VIPS_ANGLE45_D45: 45 degrees clockwise * @VIPS_ANGLE45_D90: 90 degrees clockwise * @VIPS_ANGLE45_D135: 135 degrees clockwise * @VIPS_ANGLE45_D180: 180 degrees * @VIPS_ANGLE45_D225: 135 degrees anti-clockwise * @VIPS_ANGLE45_D270: 90 degrees anti-clockwise * @VIPS_ANGLE45_D315: 45 degrees anti-clockwise * * See vips_rot45() and so on. * * Fixed rotate angles. * * See also: vips_rot45(). */ /** * VipsExtend: * @VIPS_EXTEND_BLACK: extend with black (all 0) pixels * @VIPS_EXTEND_COPY: copy the image edges * @VIPS_EXTEND_REPEAT: repeat the whole image * @VIPS_EXTEND_MIRROR: mirror the whole image * @VIPS_EXTEND_WHITE: extend with white (all bits set) pixels * @VIPS_EXTEND_BACKGROUND: extend with colour from the @background property * * See vips_embed(), vips_conv(), vips_affine() and so on. * * When the edges of an image are extended, you can specify * how you want the extension done. * * #VIPS_EXTEND_BLACK --- new pixels are black, ie. all bits are zero. * * #VIPS_EXTEND_COPY --- each new pixel takes the value of the nearest edge * pixel * * #VIPS_EXTEND_REPEAT --- the image is tiled to fill the new area * * #VIPS_EXTEND_MIRROR --- the image is reflected and tiled to reduce hash * edges * * #VIPS_EXTEND_WHITE --- new pixels are white, ie. all bits are set * * #VIPS_EXTEND_BACKGROUND --- colour set from the @background property * * We have to specify the exact value of each enum member since we have to * keep these frozen for back compat with vips7. * * See also: vips_embed(). */ /** * VipsDirection: * @VIPS_DIRECTION_HORIZONTAL: left-right * @VIPS_DIRECTION_VERTICAL: top-bottom * * See vips_flip(), vips_join() and so on. * * Operations like vips_flip() need to be told whether to flip left-right or * top-bottom. * * See also: vips_flip(), vips_join(). */ G_DEFINE_ABSTRACT_TYPE( VipsConversion, vips_conversion, VIPS_TYPE_OPERATION ); static int vips_conversion_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); #ifdef DEBUG printf( "vips_conversion_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_object_set( conversion, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_conversion_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_conversion_class_init( VipsConversionClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "conversion"; vobject_class->description = _( "conversion operations" ); vobject_class->build = vips_conversion_build; VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsConversion, out ) ); } static void vips_conversion_init( VipsConversion *conversion ) { } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_conversion_operation_init( void ) { extern GType vips_copy_get_type( void ); extern GType vips_tile_cache_get_type( void ); extern GType vips_line_cache_get_type( void ); extern GType vips_sequential_get_type( void ); extern GType vips_cache_get_type( void ); extern GType vips_embed_get_type( void ); extern GType vips_gravity_get_type( void ); extern GType vips_flip_get_type( void ); extern GType vips_insert_get_type( void ); extern GType vips_join_get_type( void ); extern GType vips_arrayjoin_get_type( void ); extern GType vips_extract_area_get_type( void ); extern GType vips_crop_get_type( void ); extern GType vips_smartcrop_get_type( void ); extern GType vips_extract_band_get_type( void ); extern GType vips_replicate_get_type( void ); extern GType vips_cast_get_type( void ); extern GType vips_bandjoin_get_type( void ); extern GType vips_bandjoin_const_get_type( void ); extern GType vips_bandrank_get_type( void ); extern GType vips_black_get_type( void ); extern GType vips_rot_get_type( void ); extern GType vips_rot45_get_type( void ); extern GType vips_autorot_get_type( void ); extern GType vips_ifthenelse_get_type( void ); extern GType vips_switch_get_type( void ); extern GType vips_recomb_get_type( void ); extern GType vips_bandmean_get_type( void ); extern GType vips_bandfold_get_type( void ); extern GType vips_bandunfold_get_type( void ); extern GType vips_flatten_get_type( void ); extern GType vips_premultiply_get_type( void ); extern GType vips_unpremultiply_get_type( void ); extern GType vips_bandbool_get_type( void ); extern GType vips_gaussnoise_get_type( void ); extern GType vips_grid_get_type( void ); extern GType vips_transpose3d_get_type( void ); extern GType vips_scale_get_type( void ); extern GType vips_wrap_get_type( void ); extern GType vips_zoom_get_type( void ); extern GType vips_subsample_get_type( void ); extern GType vips_msb_get_type( void ); extern GType vips_byteswap_get_type( void ); #ifdef HAVE_PANGOFT2 extern GType vips_text_get_type( void ); #endif /*HAVE_PANGOFT2*/ extern GType vips_xyz_get_type( void ); extern GType vips_falsecolour_get_type( void ); extern GType vips_gamma_get_type( void ); extern GType vips_composite_get_type( void ); extern GType vips_composite2_get_type( void ); vips_copy_get_type(); vips_tile_cache_get_type(); vips_line_cache_get_type(); vips_sequential_get_type(); vips_cache_get_type(); vips_embed_get_type(); vips_gravity_get_type(); vips_flip_get_type(); vips_insert_get_type(); vips_join_get_type(); vips_arrayjoin_get_type(); vips_extract_area_get_type(); vips_crop_get_type(); vips_smartcrop_get_type(); vips_extract_band_get_type(); vips_replicate_get_type(); vips_cast_get_type(); vips_bandjoin_get_type(); vips_bandjoin_const_get_type(); vips_bandrank_get_type(); vips_black_get_type(); vips_rot_get_type(); vips_rot45_get_type(); vips_autorot_get_type(); vips_ifthenelse_get_type(); vips_switch_get_type(); vips_recomb_get_type(); vips_bandmean_get_type(); vips_bandfold_get_type(); vips_bandunfold_get_type(); vips_flatten_get_type(); vips_premultiply_get_type(); vips_unpremultiply_get_type(); vips_bandbool_get_type(); vips_gaussnoise_get_type(); vips_grid_get_type(); vips_transpose3d_get_type(); vips_scale_get_type(); vips_wrap_get_type(); vips_zoom_get_type(); vips_subsample_get_type(); vips_msb_get_type(); vips_byteswap_get_type(); #ifdef HAVE_PANGOFT2 vips_text_get_type(); #endif /*HAVE_PANGOFT2*/ vips_xyz_get_type(); vips_falsecolour_get_type(); vips_gamma_get_type(); vips_composite_get_type(); vips_composite2_get_type(); } libvips-8.9.1/libvips/conversion/copy.c000066400000000000000000000256471361153320700201730ustar00rootroot00000000000000/* Copy an image. * * Copyright: 1990, N. Dessipris, based on im_powtra() * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 23/4/93 J.Cupitt * - adapted to work with partial images * 30/6/93 JC * - adapted for partial v2 * - and ANSI C * 7/7/93 JC * - now does IM_CODING_LABQ too * 22/2/95 JC * - new use of im_region_region() * 25/6/02 JC * - added im_copy_set() * - hint is IM_ANY * 5/9/02 JC * - added xoff/yoff to copy_set * 14/4/04 JC * - im_copy() now zeros Xoffset/Yoffset (since origin is the same as * input) * 26/5/04 JC * - added im_copy_swap() * 1/6/05 * - added im_copy_morph() * 13/6/05 * - oop, im_copy_set() was messed up * 29/9/06 * - added im_copy_set_meta(), handy wrapper for nip2 to set meta fields * 2/11/06 * - moved im__convert_saveable() here so it's always defined (was part * of JPEG write code) * 15/2/08 * - added im__saveable_t ... so we can have CMYK JPEG write * 24/3/09 * - added IM_CODING_RAD support * 28/1/10 * - gtk-doc * - cleanups * - removed im_copy_from() and associated stuff * - added im_copy_native() * 28/11/10 * - im_copy_set() now sets xoff / yoff again hmmm * 29/9/11 * - rewrite as a class * 1/12/11 * - use glib byteswap macros * 15/5/15 * - support bands -> width conversion * 4/6/15 * - support width -> bands conversion * 5/6/15 * - move byteswap out to vips_byteswap() * - move band folding out to vips_bandfold()/vips_unfold() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsCopy { VipsConversion parent_instance; /* The input image. */ VipsImage *in; /* Fields we can optionally set on the way through. */ gboolean swap; VipsInterpretation interpretation; double xres; double yres; int xoffset; int yoffset; int bands; VipsBandFormat format; VipsCoding coding; int width; int height; } VipsCopy; typedef VipsConversionClass VipsCopyClass; G_DEFINE_TYPE( VipsCopy, vips_copy, VIPS_TYPE_CONVERSION ); static int vips_copy_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; if( vips_region_prepare( ir, r ) || vips_region_region( or, ir, r, r->left, r->top ) ) return( -1 ); return( 0 ); } /* The props we copy, if set, from the operation to the image. */ static const char *vips_copy_names[] = { "interpretation", "xres", "yres", "xoffset", "yoffset", "bands", "format", "coding", "width", "height" }; static int vips_copy_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsCopy *copy = (VipsCopy *) object; guint64 pel_size_before; guint64 pel_size_after; VipsImage copy_of_fields; int i; if( VIPS_OBJECT_CLASS( vips_copy_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( copy->in ) ) return( -1 ); if( copy->swap ) g_warning( "%s", _( "copy swap is deprecated, use byteswap instead" ) ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, copy->in, NULL ) ) return( -1 ); /* Take a copy of all the basic header fields. We use this for * sanity-checking the changes our caller has made. */ copy_of_fields = *conversion->out; /* Use props to adjust header fields. */ for( i = 0; i < VIPS_NUMBER( vips_copy_names ); i++ ) { const char *name = vips_copy_names[i]; GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); if( argument_instance->assigned ) { GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); GValue value = { 0, }; g_value_init( &value, type ); g_object_get_property( G_OBJECT( object ), name, &value ); #ifdef VIPS_DEBUG { char *str; str = g_strdup_value_contents( &value ); printf( "vips_copy_build: %s = %s\n", name, str ); g_free( str ); } #endif /* VIPS_DEBUG */ g_object_set_property( G_OBJECT( conversion->out ), name, &value ); g_value_unset( &value ); } } /* Disallow changes which alter sizeof(pel). */ pel_size_before = VIPS_IMAGE_SIZEOF_PEL( ©_of_fields ); pel_size_after = VIPS_IMAGE_SIZEOF_PEL( conversion->out ); if( pel_size_after != pel_size_before ) { vips_error( class->nickname, "%s", _( "must not change pel size" ) ); return( -1 ); } if( vips_image_generate( conversion->out, vips_start_one, vips_copy_gen, vips_stop_one, copy->in, copy ) ) return( -1 ); return( 0 ); } static void vips_copy_class_init( VipsCopyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_copy_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "copy"; vobject_class->description = _( "copy an image" ); vobject_class->build = vips_copy_build; /* We use copy to make fresh vipsimages to stop sharing, so don't * cache it. Plus copy is cheap. */ operation_class->flags = VIPS_OPERATION_SEQUENTIAL | VIPS_OPERATION_NOCACHE; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCopy, in ) ); VIPS_ARG_BOOL( class, "swap", 2, _( "Swap" ), _( "Swap bytes in image between little and big-endian" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsCopy, swap ), FALSE ); VIPS_ARG_INT( class, "width", 3, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, width ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "height", 4, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, height ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "bands", 5, _( "Bands" ), _( "Number of bands in image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, bands ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_ENUM( class, "format", 6, _( "Format" ), _( "Pixel format in image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, format ), VIPS_TYPE_BAND_FORMAT, VIPS_FORMAT_UCHAR ); VIPS_ARG_ENUM( class, "coding", 7, _( "Coding" ), _( "Pixel coding" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, coding ), VIPS_TYPE_CODING, VIPS_CODING_NONE ); VIPS_ARG_ENUM( class, "interpretation", 8, _( "Interpretation" ), _( "Pixel interpretation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, interpretation ), VIPS_TYPE_INTERPRETATION, VIPS_INTERPRETATION_MULTIBAND ); VIPS_ARG_DOUBLE( class, "xres", 9, _( "Xres" ), _( "Horizontal resolution in pixels/mm" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, xres ), -0.0, 1000000, 0 ); VIPS_ARG_DOUBLE( class, "yres", 10, _( "Yres" ), _( "Vertical resolution in pixels/mm" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, yres ), -0.0, 1000000, 0 ); VIPS_ARG_INT( class, "xoffset", 11, _( "Xoffset" ), _( "Horizontal offset of origin" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, xoffset ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "yoffset", 12, _( "Yoffset" ), _( "Vertical offset of origin" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, yoffset ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); } static void vips_copy_init( VipsCopy *copy ) { /* Init our instance fields. */ } /** * vips_copy: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @width: %gint, set image width * * @height: %gint, set image height * * @bands: %gint, set image bands * * @format: #VipsBandFormat, set image format * * @coding: #VipsCoding, set image coding * * @interpretation: #VipsInterpretation, set image interpretation * * @xres: %gdouble, set image xres * * @yres: %gdouble, set image yres * * @xoffset: %gint, set image xoffset * * @yoffset: %gint, set image yoffset * * Copy an image, optionally modifying the header. VIPS copies images by * copying pointers, so this operation is instant, even for very large images. * * You can optionally change any or all header fields during the copy. You can * make any change which does not change the size of a pel, so for example * you can turn a 4-band uchar image into a 2-band ushort image, but you * cannot change a 100 x 100 RGB image into a 300 x 100 mono image. * * See also: vips_byteswap(), vips_bandfold(), vips_bandunfold(). * * Returns: 0 on success, -1 on error. */ int vips_copy( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "copy", ap, in, out ); va_end( ap ); return( result ); } /** * vips_copy_file: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * A simple convenience function to copy an image to a file, then copy * again to output. If the image is already a file, just copy straight * through. * * The file is allocated with vips_image_new_temp_file(). * The file is automatically deleted when @out is closed. * * See also: vips_copy(), vips_image_new_temp_file(). * * Returns: 0 on success, -1 on error */ int vips_copy_file( VipsImage *in, VipsImage **out, ... ) { VipsImage *file; if( vips_image_isfile( in ) ) return( vips_copy( in, out, NULL ) ); if( !(file = vips_image_new_temp_file( "%s.v" )) ) return( -1 ); if( vips_image_write( in, file ) || vips_image_pio_input( file ) ) { g_object_unref( file ); return( -1 ); } *out = file; return( 0 ); } libvips-8.9.1/libvips/conversion/embed.c000066400000000000000000000524661361153320700202740ustar00rootroot00000000000000/* VipsEmbed * * Author: J. Cupitt * Written on: 21/2/95 * Modified on: * 6/4/04 * - added extend pixels from edge mode * - sets Xoffset / Yoffset to x / y * 15/4/04 * - added replicate and mirror modes * 4/3/05 * - added solid white mode * 4/1/07 * - degenerate to im_copy() for 0/0/w/h * 1/8/07 * - more general ... x and y can be negative * 24/3/09 * - added IM_CODING_RAD support * 5/11/09 * - gtkdoc * 27/1/10 * - use im_region_paint() * - cleanups * 15/10/11 * - rewrite as a class * 10/10/12 * - add @background * 19/9/17 * - break into embed and gravity */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsEmbedBase { VipsConversion parent_instance; /* The input image. */ VipsImage *in; VipsExtend extend; VipsArrayDouble *background; int width; int height; /* Pixel we paint calculated from background. */ VipsPel *ink; /* Geometry calculations. */ VipsRect rout; /* Whole output area */ VipsRect rsub; /* Rect occupied by image */ /* The 8 border pieces. The 4 borders strictly up/down/left/right of * the main image, and the 4 corner pieces. */ VipsRect border[8]; /* Passed to us by subclasses. */ int x; int y; } VipsEmbedBase; typedef VipsConversionClass VipsEmbedBaseClass; G_DEFINE_ABSTRACT_TYPE( VipsEmbedBase, vips_embed_base, VIPS_TYPE_CONVERSION ); /* r is the bit we are trying to paint, guaranteed to be entirely within * border area i. Set out to be the edge of the image we need to paint the * pixels in r. */ static void vips_embed_base_find_edge( VipsEmbedBase *base, VipsRect *r, int i, VipsRect *out ) { /* Expand the border by 1 pixel, intersect with the image area, and we * get the edge. Usually too much though: eg. we could make the entire * right edge. */ *out = base->border[i]; vips_rect_marginadjust( out, 1 ); vips_rect_intersectrect( out, &base->rsub, out ); /* Usually too much though: eg. we could make the entire * right edge. If we're strictly up/down/left/right of the image, we * can trim. */ if( i == 0 || i == 2 ) { VipsRect extend; /* Above or below. */ extend = *r; extend.top = 0; extend.height = base->height; vips_rect_intersectrect( out, &extend, out ); } if( i == 1 || i == 3 ) { VipsRect extend; /* Left or right. */ extend = *r; extend.left = 0; extend.width = base->width; vips_rect_intersectrect( out, &extend, out ); } } /* Copy a single pixel sideways into a line of pixels. */ static void vips_embed_base_copy_pixel( VipsEmbedBase *base, VipsPel *q, VipsPel *p, int n ) { const int bs = VIPS_IMAGE_SIZEOF_PEL( base->in ); int x, b; for( x = 0; x < n; x++ ) for( b = 0; b < bs; b++ ) *q++ = p[b]; } /* Paint r of region or. It's a border area, lying entirely within * base->border[i]. p points to the top-left source pixel to fill with. * plsk is the line stride. */ static void vips_embed_base_paint_edge( VipsEmbedBase *base, VipsRegion *or, int i, VipsRect *r, VipsPel *p, int plsk ) { const int bs = VIPS_IMAGE_SIZEOF_PEL( base->in ); VipsRect todo; VipsPel *q; int y; VIPS_GATE_START( "vips_embed_base_paint_edge: work" ); /* Pixels left to paint. */ todo = *r; /* Corner pieces ... copy the single pixel to paint the top line of * todo, then use the line copier below to paint the rest of it. */ if( i > 3 ) { q = VIPS_REGION_ADDR( or, todo.left, todo.top ); vips_embed_base_copy_pixel( base, q, p, todo.width ); p = q; todo.top += 1; todo.height -= 1; } if( i == 1 || i == 3 ) { /* Vertical line of pixels to copy. */ for( y = 0; y < todo.height; y++ ) { q = VIPS_REGION_ADDR( or, todo.left, todo.top + y ); vips_embed_base_copy_pixel( base, q, p, todo.width ); p += plsk; } } else { /* Horizontal line of pixels to copy. */ for( y = 0; y < todo.height; y++ ) { q = VIPS_REGION_ADDR( or, todo.left, todo.top + y ); memcpy( q, p, bs * todo.width ); } } VIPS_GATE_STOP( "vips_embed_base_paint_edge: work" ); } static int vips_embed_base_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsEmbedBase *base = (VipsEmbedBase *) b; VipsRect *r = &or->valid; VipsRect ovl; int i; VipsPel *p; int plsk; /* Entirely within the input image? Generate the subimage and copy * pointers. */ if( vips_rect_includesrect( &base->rsub, r ) ) { VipsRect need; need = *r; need.left -= base->x; need.top -= base->y; if( vips_region_prepare( ir, &need ) || vips_region_region( or, ir, r, need.left, need.top ) ) return( -1 ); return( 0 ); } /* Does any of the input image appear in the area we have been asked * to make? Paste it in. */ vips_rect_intersectrect( r, &base->rsub, &ovl ); if( !vips_rect_isempty( &ovl ) ) { /* Paint the bits coming from the input image. */ ovl.left -= base->x; ovl.top -= base->y; if( vips_region_prepare_to( ir, or, &ovl, ovl.left + base->x, ovl.top + base->y ) ) return( -1 ); ovl.left += base->x; ovl.top += base->y; } switch( base->extend ) { case VIPS_EXTEND_BLACK: case VIPS_EXTEND_WHITE: VIPS_GATE_START( "vips_embed_base_gen: work1" ); /* Paint the borders a solid value. */ for( i = 0; i < 8; i++ ) vips_region_paint( or, &base->border[i], base->extend == 0 ? 0 : 255 ); VIPS_GATE_STOP( "vips_embed_base_gen: work1" ); break; case VIPS_EXTEND_BACKGROUND: VIPS_GATE_START( "vips_embed_base_gen: work2" ); /* Paint the borders a solid value. */ for( i = 0; i < 8; i++ ) vips_region_paint_pel( or, &base->border[i], base->ink ); VIPS_GATE_STOP( "vips_embed_base_gen: work2" ); break; case VIPS_EXTEND_COPY: /* Extend the borders. */ for( i = 0; i < 8; i++ ) { VipsRect todo; VipsRect edge; vips_rect_intersectrect( r, &base->border[i], &todo ); if( !vips_rect_isempty( &todo ) ) { vips_embed_base_find_edge( base, &todo, i, &edge ); /* Did we paint any of the input image? If we * did, we can fetch the edge pixels from * that. */ if( !vips_rect_isempty( &ovl ) ) { p = VIPS_REGION_ADDR( or, edge.left, edge.top ); plsk = VIPS_REGION_LSKIP( or ); } else { /* No pixels painted ... fetch * directly from the input image. */ edge.left -= base->x; edge.top -= base->y; if( vips_region_prepare( ir, &edge ) ) return( -1 ); p = VIPS_REGION_ADDR( ir, edge.left, edge.top ); plsk = VIPS_REGION_LSKIP( ir ); } vips_embed_base_paint_edge( base, or, i, &todo, p, plsk ); } } break; default: g_assert_not_reached(); } return( 0 ); } static int vips_embed_base_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsEmbedBase *base = (VipsEmbedBase *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); VipsRect want; if( VIPS_OBJECT_CLASS( vips_embed_base_parent_class )->build( object ) ) return( -1 ); /* nip2 can generate this quite often ... just copy. */ if( base->x == 0 && base->y == 0 && base->width == base->in->Xsize && base->height == base->in->Ysize ) return( vips_image_write( base->in, conversion->out ) ); if( !vips_object_argument_isset( object, "extend" ) && vips_object_argument_isset( object, "background" ) ) base->extend = VIPS_EXTEND_BACKGROUND; if( base->extend == VIPS_EXTEND_BACKGROUND ) if( !(base->ink = vips__vector_to_ink( class->nickname, base->in, VIPS_AREA( base->background )->data, NULL, VIPS_AREA( base->background )->n )) ) return( -1 ); switch( base->extend ) { case VIPS_EXTEND_REPEAT: { /* Clock arithmetic: we want negative x/y to wrap around * nicely. */ const int nx = base->x < 0 ? -base->x % base->in->Xsize : base->in->Xsize - base->x % base->in->Xsize; const int ny = base->y < 0 ? -base->y % base->in->Ysize : base->in->Ysize - base->y % base->in->Ysize; if( vips_replicate( base->in, &t[0], base->width / base->in->Xsize + 2, base->height / base->in->Ysize + 2, NULL ) || vips_extract_area( t[0], &t[1], nx, ny, base->width, base->height, NULL ) || vips_image_write( t[1], conversion->out ) ) return( -1 ); } break; case VIPS_EXTEND_MIRROR: { /* As repeat, but the tiles are twice the size because of * mirroring. */ const int w2 = base->in->Xsize * 2; const int h2 = base->in->Ysize * 2; const int nx = base->x < 0 ? -base->x % w2 : w2 - base->x % w2; const int ny = base->y < 0 ? -base->y % h2 : h2 - base->y % h2; if( /* Make a 2x2 mirror tile. */ vips_flip( base->in, &t[0], VIPS_DIRECTION_HORIZONTAL, NULL ) || vips_join( base->in, t[0], &t[1], VIPS_DIRECTION_HORIZONTAL, NULL ) || vips_flip( t[1], &t[2], VIPS_DIRECTION_VERTICAL, NULL ) || vips_join( t[1], t[2], &t[3], VIPS_DIRECTION_VERTICAL, NULL ) || /* Repeat, then cut out the centre. */ vips_replicate( t[3], &t[4], base->width / t[3]->Xsize + 2, base->height / t[3]->Ysize + 2, NULL ) || vips_extract_area( t[4], &t[5], nx, ny, base->width, base->height, NULL ) || /* Overwrite the centre with the in, much faster * for centre pixels. */ vips_insert( t[5], base->in, &t[6], base->x, base->y, NULL ) || vips_image_write( t[6], conversion->out ) ) return( -1 ); } break; case VIPS_EXTEND_BLACK: case VIPS_EXTEND_WHITE: case VIPS_EXTEND_BACKGROUND: case VIPS_EXTEND_COPY: /* embed is used in many places. We don't really care about * geometry, so use ANY to avoid disturbing all pipelines. */ if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_ANY, base->in, NULL ) ) return( -1 ); conversion->out->Xsize = base->width; conversion->out->Ysize = base->height; /* Whole output area. */ base->rout.left = 0; base->rout.top = 0; base->rout.width = conversion->out->Xsize; base->rout.height = conversion->out->Ysize; /* Rect occupied by image (can be clipped to nothing). */ want.left = base->x; want.top = base->y; want.width = base->in->Xsize; want.height = base->in->Ysize; vips_rect_intersectrect( &want, &base->rout, &base->rsub ); /* FIXME ... actually, it can't. base_find_edge() will fail * if rsub is empty. Make this more general at some point * and remove this test. */ if( vips_rect_isempty( &base->rsub ) ) { vips_error( class->nickname, "%s", _( "bad dimensions" ) ); return( -1 ); } /* Edge rects of new pixels ... top, right, bottom, left. Order * important. Can be empty. */ base->border[0].left = base->rsub.left; base->border[0].top = 0; base->border[0].width = base->rsub.width; base->border[0].height = base->rsub.top; base->border[1].left = VIPS_RECT_RIGHT( &base->rsub ); base->border[1].top = base->rsub.top; base->border[1].width = conversion->out->Xsize - VIPS_RECT_RIGHT( &base->rsub ); base->border[1].height = base->rsub.height; base->border[2].left = base->rsub.left; base->border[2].top = VIPS_RECT_BOTTOM( &base->rsub ); base->border[2].width = base->rsub.width; base->border[2].height = conversion->out->Ysize - VIPS_RECT_BOTTOM( &base->rsub ); base->border[3].left = 0; base->border[3].top = base->rsub.top; base->border[3].width = base->rsub.left; base->border[3].height = base->rsub.height; /* Corner rects. Top-left, top-right, bottom-right, * bottom-left. Order important. */ base->border[4].left = 0; base->border[4].top = 0; base->border[4].width = base->rsub.left; base->border[4].height = base->rsub.top; base->border[5].left = VIPS_RECT_RIGHT( &base->rsub ); base->border[5].top = 0; base->border[5].width = conversion->out->Xsize - VIPS_RECT_RIGHT( &base->rsub ); base->border[5].height = base->rsub.top; base->border[6].left = VIPS_RECT_RIGHT( &base->rsub ); base->border[6].top = VIPS_RECT_BOTTOM( &base->rsub ); base->border[6].width = conversion->out->Xsize - VIPS_RECT_RIGHT( &base->rsub ); base->border[6].height = conversion->out->Ysize - VIPS_RECT_BOTTOM( &base->rsub ); base->border[7].left = 0; base->border[7].top = VIPS_RECT_BOTTOM( &base->rsub ); base->border[7].width = base->rsub.left; base->border[7].height = conversion->out->Ysize - VIPS_RECT_BOTTOM( &base->rsub ); if( vips_image_generate( conversion->out, vips_start_one, vips_embed_base_gen, vips_stop_one, base->in, base ) ) return( -1 ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_embed_base_class_init( VipsEmbedBaseClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_embed_base_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "embed_base"; vobject_class->description = _( "embed an image in a larger image" ); vobject_class->build = vips_embed_base_build; /* Not seq with mirror. */ VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsEmbedBase, in ) ); VIPS_ARG_INT( class, "width", 5, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsEmbedBase, width ), 1, 1000000000, 1 ); VIPS_ARG_INT( class, "height", 6, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsEmbedBase, height ), 1, 1000000000, 1 ); VIPS_ARG_ENUM( class, "extend", 7, _( "Extend" ), _( "How to generate the extra pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsEmbedBase, extend ), VIPS_TYPE_EXTEND, VIPS_EXTEND_BLACK ); VIPS_ARG_BOXED( class, "background", 12, _( "Background" ), _( "Color for background pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsEmbedBase, background ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_embed_base_init( VipsEmbedBase *base ) { base->extend = VIPS_EXTEND_BLACK; base->background = vips_array_double_newv( 1, 0.0 ); } /* Embed with specified x, y */ typedef struct _VipsEmbed { VipsEmbedBase parent_instance; int x; int y; } VipsEmbed; typedef VipsConversionClass VipsEmbedClass; G_DEFINE_TYPE( VipsEmbed, vips_embed, vips_embed_base_get_type() ); static int vips_embed_build( VipsObject *object ) { VipsEmbedBase *base = (VipsEmbedBase *) object; VipsEmbed *embed = (VipsEmbed *) object; /* Just pass the specified x, y down. */ base->x = embed->x; base->y = embed->y; if( VIPS_OBJECT_CLASS( vips_embed_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_embed_class_init( VipsEmbedClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_embed_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "embed"; vobject_class->description = _( "embed an image in a larger image" ); vobject_class->build = vips_embed_build; VIPS_ARG_INT( class, "x", 3, _( "x" ), _( "Left edge of input in output" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsEmbed, x ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "y", 4, _( "y" ), _( "Top edge of input in output" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsEmbed, y ), -1000000000, 1000000000, 0 ); } static void vips_embed_init( VipsEmbed *embed ) { } /** * vips_embed: (method) * @in: input image * @out: (out): output image * @x: place @in at this x position in @out * @y: place @in at this y position in @out * @width: @out should be this many pixels across * @height: @out should be this many pixels down * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @extend: #VipsExtend to generate the edge pixels (default: black) * * @background: #VipsArrayDouble colour for edge pixels * * The opposite of vips_extract_area(): embed @in within an image of size * @width by @height at position @x, @y. * * @extend * controls what appears in the new pels, see #VipsExtend. * * See also: vips_extract_area(), vips_insert(). * * Returns: 0 on success, -1 on error. */ int vips_embed( VipsImage *in, VipsImage **out, int x, int y, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "embed", ap, in, out, x, y, width, height ); va_end( ap ); return( result ); } /* Embed with a general direction. */ typedef struct _VipsGravity { VipsEmbedBase parent_instance; VipsCompassDirection direction; } VipsGravity; typedef VipsConversionClass VipsGravityClass; G_DEFINE_TYPE( VipsGravity, vips_gravity, vips_embed_base_get_type() ); static int vips_gravity_build( VipsObject *object ) { VipsEmbedBase *base = (VipsEmbedBase *) object; VipsGravity *gravity = (VipsGravity *) object; if( vips_object_argument_isset( object, "in" ) && vips_object_argument_isset( object, "width" ) && vips_object_argument_isset( object, "height" ) && vips_object_argument_isset( object, "direction" ) ) { switch( gravity->direction ) { case VIPS_COMPASS_DIRECTION_CENTRE: base->x = (base->width - base->in->Xsize) / 2; base->y = (base->height - base->in->Ysize) / 2; break; case VIPS_COMPASS_DIRECTION_NORTH: base->x = (base->width - base->in->Xsize) / 2; base->y = 0; break; case VIPS_COMPASS_DIRECTION_EAST: base->x = base->width - base->in->Xsize; base->y = (base->height - base->in->Ysize) / 2; break; case VIPS_COMPASS_DIRECTION_SOUTH: base->x = (base->width - base->in->Xsize) / 2; base->y = base->height - base->in->Ysize; break; case VIPS_COMPASS_DIRECTION_WEST: base->x = 0; base->y = (base->height - base->in->Ysize) / 2; break; case VIPS_COMPASS_DIRECTION_NORTH_EAST: base->x = base->width - base->in->Xsize; base->y = 0; break; case VIPS_COMPASS_DIRECTION_SOUTH_EAST: base->x = base->width - base->in->Xsize; base->y = base->height - base->in->Ysize; break; case VIPS_COMPASS_DIRECTION_SOUTH_WEST: base->x = 0; base->y = base->height - base->in->Ysize; break; case VIPS_COMPASS_DIRECTION_NORTH_WEST: base->x = 0; base->y = 0; break; default: g_assert_not_reached(); } } if( VIPS_OBJECT_CLASS( vips_gravity_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_gravity_class_init( VipsGravityClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_gravity_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "gravity"; vobject_class->description = _( "place an image within a larger " "image with a certain gravity" ); vobject_class->build = vips_gravity_build; VIPS_ARG_ENUM( class, "direction", 3, _( "Direction" ), _( "direction to place image within width/height" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGravity, direction ), VIPS_TYPE_COMPASS_DIRECTION, VIPS_COMPASS_DIRECTION_CENTRE ); } static void vips_gravity_init( VipsGravity *gravity ) { gravity->direction = VIPS_COMPASS_DIRECTION_CENTRE; } /** * vips_gravity: * @in: input image * @out: output image * @direction: place @in at this direction in @out * @width: @out should be this many pixels across * @height: @out should be this many pixels down * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @extend: #VipsExtend to generate the edge pixels (default: black) * * @background: #VipsArrayDouble colour for edge pixels * * The opposite of vips_extract_area(): place @in within an image of size * @width by @height at a certain gravity. * * @extend * controls what appears in the new pels, see #VipsExtend. * * See also: vips_extract_area(), vips_insert(). * * Returns: 0 on success, -1 on error. */ int vips_gravity( VipsImage *in, VipsImage **out, VipsCompassDirection direction, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "gravity", ap, in, out, direction, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/extract.c000066400000000000000000000264321361153320700206640ustar00rootroot00000000000000/* extract an area and/or a set of bands * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 12/02/1990 * Modified on: 4/6/92, J.Cupitt * - speed up! why wasn't this done before? Why am I stupid? * - layout, messages fixed * now extracts IM_CODING_LABQ to IM_CODING_LABQ file: K.Martinez 1/7/93 * 2/7/93 JC * - adapted for partial v2 * - ANSIfied * 7/7/93 JC * - behaviour for IM_CODING_LABQ fixed * - better messages * 7/10/94 JC * - new IM_NEW() * 22/2/95 JC * - new use of im_region_region() * 6/7/98 JC * - im_extract_area() and im_extract_band() added * 11/7/01 JC * - im_extract_band() now numbers from zero * 7/11/01 JC * - oh what pain, im_extract now numbers bands from zero as well * 6/9/02 JC * - zero xoff/yoff for extracted area * 14/4/04 JC * - nope, -ve the origin * 17/7/04 * - added im_extract_bands(), remove many bands from image * 24/3/09 * - added IM_CODING_RAD support * 29/1/10 * - cleanups * - gtkdoc * 26/10/11 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" #include "bandary.h" typedef struct _VipsExtractArea { VipsConversion parent_instance; /* The input image. */ VipsImage *in; int left; int top; int width; int height; } VipsExtractArea; typedef VipsConversionClass VipsExtractAreaClass; G_DEFINE_TYPE( VipsExtractArea, vips_extract_area, VIPS_TYPE_CONVERSION ); /* Extract an area. Can just use pointers. */ static int vips_extract_area_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsExtractArea *extract = (VipsExtractArea *) b; VipsRect iarea; /* Ask for input we need. Translate from demand in or's space to * demand in ir's space. */ iarea = or->valid; iarea.left += extract->left; iarea.top += extract->top; if( vips_region_prepare( ir, &iarea ) ) return( -1 ); /* Attach or to ir. */ if( vips_region_region( or, ir, &or->valid, iarea.left, iarea.top ) ) return( -1 ); return( 0 ); } static int vips_extract_area_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsExtractArea *extract = (VipsExtractArea *) object; if( VIPS_OBJECT_CLASS( vips_extract_area_parent_class )-> build( object ) ) return( -1 ); if( extract->left + extract->width > extract->in->Xsize || extract->top + extract->height > extract->in->Ysize || extract->left < 0 || extract->top < 0 || extract->width <= 0 || extract->height <= 0 ) { vips_error( class->nickname, "%s", _( "bad extract area" ) ); return( -1 ); } if( vips_image_pio_input( extract->in ) || vips_check_coding_known( class->nickname, extract->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, extract->in, NULL ) ) return( -1 ); conversion->out->Xsize = extract->width; conversion->out->Ysize = extract->height; conversion->out->Xoffset = -extract->left; conversion->out->Yoffset = -extract->top; if( vips_image_generate( conversion->out, vips_start_one, vips_extract_area_gen, vips_stop_one, extract->in, extract ) ) return( -1 ); return( 0 ); } static void vips_extract_area_class_init( VipsExtractAreaClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_extract_area_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "extract_area"; vobject_class->description = _( "extract an area from an image" ); vobject_class->build = vips_extract_area_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "input", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractArea, in ) ); VIPS_ARG_INT( class, "left", 3, _( "Left" ), _( "Left edge of extract area" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractArea, left ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "top", 4, _( "Top" ), _( "Top edge of extract area" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractArea, top ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "width", 5, _( "Width" ), _( "Width of extract area" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractArea, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 6, _( "Height" ), _( "Height of extract area" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractArea, height ), 1, VIPS_MAX_COORD, 1 ); } static void vips_extract_area_init( VipsExtractArea *extract ) { } /** * vips_extract_area: (method) * @in: input image * @out: (out): output image * @left: left edge of area to extract * @top: top edge of area to extract * @width: width of area to extract * @height: height of area to extract * @...: %NULL-terminated list of optional named arguments * * Extract an area from an image. The area must fit within @in. * * See also: vips_extract_bands(), vips_smartcrop(). * * Returns: 0 on success, -1 on error. */ int vips_extract_area( VipsImage *in, VipsImage **out, int left, int top, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "extract_area", ap, in, out, left, top, width, height ); va_end( ap ); return( result ); } /* A synonym for extract_area. */ GType vips_crop_get_type( void ) { static GType type = 0; if( !type ) { static const GTypeInfo info = { sizeof( VipsExtractAreaClass ), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) vips_extract_area_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof( VipsExtractArea ), 32, /* n_preallocs */ (GInstanceInitFunc) vips_extract_area_init, }; type = g_type_register_static( VIPS_TYPE_CONVERSION, "crop", &info, 0 ); } return( type ); } /** * vips_crop: (method) * @in: input image * @out: (out): output image * @left: left edge of area to extract * @top: top edge of area to extract * @width: width of area to extract * @height: height of area to extract * @...: %NULL-terminated list of optional named arguments * * A synonym for vips_extract_area(). * * See also: vips_extract_bands(), vips_smartcrop(). * * Returns: 0 on success, -1 on error. */ int vips_crop( VipsImage *in, VipsImage **out, int left, int top, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "crop", ap, in, out, left, top, width, height ); va_end( ap ); return( result ); } typedef struct _VipsExtractBand { VipsBandary parent_instance; /* The input image. */ VipsImage *in; int band; int n; } VipsExtractBand; typedef VipsBandaryClass VipsExtractBandClass; G_DEFINE_TYPE( VipsExtractBand, vips_extract_band, VIPS_TYPE_BANDARY ); static void vips_extract_band_buffer( VipsBandarySequence *seq, VipsPel *out, VipsPel **in, int width ) { VipsBandary *bandary = seq->bandary; VipsConversion *conversion = (VipsConversion *) bandary; VipsExtractBand *extract = (VipsExtractBand *) bandary; VipsImage *im = bandary->ready[0]; int es = VIPS_IMAGE_SIZEOF_ELEMENT( im ); int ips = VIPS_IMAGE_SIZEOF_PEL( im ); const int ops = VIPS_IMAGE_SIZEOF_PEL( conversion->out ); VipsPel *p, *q; int x, z; p = in[0] + extract->band * es; q = out; for( x = 0; x < width; x++ ) { for( z = 0; z < ops; z++ ) q[z] = p[z]; p += ips; q += ops; } } static int vips_extract_band_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBandary *bandary = (VipsBandary *) object; VipsExtractBand *extract = (VipsExtractBand *) object; if( extract->in ) { int bands; vips_image_decode_predict( extract->in, &bands, NULL ); bandary->n = 1; bandary->in = &extract->in; bandary->out_bands = extract->n; if( extract->band + extract->n > bands ) { vips_error( class->nickname, "%s", _( "bad extract band" ) ); return( -1 ); } if( extract->band == 0 && extract->n == bands ) return( vips_bandary_copy( bandary ) ); } if( VIPS_OBJECT_CLASS( vips_extract_band_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_extract_band_class_init( VipsExtractBandClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); VIPS_DEBUG_MSG( "vips_extract_band_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "extract_band"; vobject_class->description = _( "extract band from an image" ); vobject_class->build = vips_extract_band_build; bandary_class->process_line = vips_extract_band_buffer; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractBand, in ) ); VIPS_ARG_INT( class, "band", 3, _( "Band" ), _( "Band to extract" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractBand, band ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "n", 4, _( "n" ), _( "Number of bands to extract" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsExtractBand, n ), 1, VIPS_MAX_COORD, 1 ); } static void vips_extract_band_init( VipsExtractBand *extract ) { extract->n = 1; } /** * vips_extract_band: (method) * @in: input image * @out: (out): output image * @band: band to extract * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @n: number of bands to extract * * Extract a band or bands from an image. Extracting out of range is an error. * * See also: vips_extract_area(). * * Returns: 0 on success, -1 on error. */ int vips_extract_band( VipsImage *in, VipsImage **out, int band, ... ) { va_list ap; int result; va_start( ap, band ); result = vips_call_split( "extract_band", ap, in, out, band ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/falsecolour.c000066400000000000000000000205761361153320700215330ustar00rootroot00000000000000/* im_falsecolour * * 23/6/95 JC * - rewritten for PIO * - now walks edges of colour cube to get more saturated appearance * 21/8/05 * - uses falsecolour scale from PET scanner * 7/4/06 * - hmm, reversed scale * 29/1/10 * - cleanups * - gtkdoc * 12/7/11 * - force input to mono 8-bit for the user * 1/8/13 * - redone as a class * 23/1/14 * - oops, was not auto-getting and casting the first band */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pconversion.h" typedef struct _VipsFalsecolour { VipsConversion parent_instance; VipsImage *in; } VipsFalsecolour; typedef VipsConversionClass VipsFalsecolourClass; G_DEFINE_TYPE( VipsFalsecolour, vips_falsecolour, VIPS_TYPE_CONVERSION ); /* Falsecolour scale nicked from a PET scan. */ static unsigned char vips_falsecolour_pet[][3] = { { 12, 0, 25 }, { 17, 0, 34 }, { 20, 0, 41 }, { 22, 0, 45 }, { 23, 0, 47 }, { 27, 0, 55 }, { 12, 0, 25 }, { 5, 0, 11 }, { 5, 0, 11 }, { 5, 0, 11 }, { 1, 0, 4 }, { 1, 0, 4 }, { 6, 0, 13 }, { 15, 0, 30 }, { 19, 0, 40 }, { 23, 0, 48 }, { 28, 0, 57 }, { 36, 0, 74 }, { 42, 0, 84 }, { 46, 0, 93 }, { 51, 0, 102 }, { 59, 0, 118 }, { 65, 0, 130 }, { 69, 0, 138 }, { 72, 0, 146 }, { 81, 0, 163 }, { 47, 0, 95 }, { 12, 0, 28 }, { 64, 0, 144 }, { 61, 0, 146 }, { 55, 0, 140 }, { 52, 0, 137 }, { 47, 0, 132 }, { 43, 0, 128 }, { 38, 0, 123 }, { 30, 0, 115 }, { 26, 0, 111 }, { 23, 0, 108 }, { 17, 0, 102 }, { 9, 0, 94 }, { 6, 0, 91 }, { 2, 0, 87 }, { 0, 0, 88 }, { 0, 0, 100 }, { 0, 0, 104 }, { 0, 0, 108 }, { 0, 0, 113 }, { 0, 0, 121 }, { 0, 0, 125 }, { 0, 0, 129 }, { 0, 0, 133 }, { 0, 0, 141 }, { 0, 0, 146 }, { 0, 0, 150 }, { 0, 0, 155 }, { 0, 0, 162 }, { 0, 0, 167 }, { 0, 0, 173 }, { 0, 0, 180 }, { 0, 0, 188 }, { 0, 0, 193 }, { 0, 0, 197 }, { 0, 0, 201 }, { 0, 0, 209 }, { 0, 0, 214 }, { 0, 0, 218 }, { 0, 0, 222 }, { 0, 0, 230 }, { 0, 0, 235 }, { 0, 0, 239 }, { 0, 0, 243 }, { 0, 0, 247 }, { 0, 4, 251 }, { 0, 10, 255 }, { 0, 14, 255 }, { 0, 18, 255 }, { 0, 24, 255 }, { 0, 31, 255 }, { 0, 36, 255 }, { 0, 39, 255 }, { 0, 45, 255 }, { 0, 53, 255 }, { 0, 56, 255 }, { 0, 60, 255 }, { 0, 66, 255 }, { 0, 74, 255 }, { 0, 77, 255 }, { 0, 81, 255 }, { 0, 88, 251 }, { 0, 99, 239 }, { 0, 104, 234 }, { 0, 108, 230 }, { 0, 113, 225 }, { 0, 120, 218 }, { 0, 125, 213 }, { 0, 128, 210 }, { 0, 133, 205 }, { 0, 141, 197 }, { 0, 145, 193 }, { 0, 150, 188 }, { 0, 154, 184 }, { 0, 162, 176 }, { 0, 167, 172 }, { 0, 172, 170 }, { 0, 180, 170 }, { 0, 188, 170 }, { 0, 193, 170 }, { 0, 197, 170 }, { 0, 201, 170 }, { 0, 205, 170 }, { 0, 211, 170 }, { 0, 218, 170 }, { 0, 222, 170 }, { 0, 226, 170 }, { 0, 232, 170 }, { 0, 239, 170 }, { 0, 243, 170 }, { 0, 247, 170 }, { 0, 251, 161 }, { 0, 255, 147 }, { 0, 255, 139 }, { 0, 255, 131 }, { 0, 255, 120 }, { 0, 255, 105 }, { 0, 255, 97 }, { 0, 255, 89 }, { 0, 255, 78 }, { 0, 255, 63 }, { 0, 255, 55 }, { 0, 255, 47 }, { 0, 255, 37 }, { 0, 255, 21 }, { 0, 255, 13 }, { 0, 255, 5 }, { 2, 255, 2 }, { 13, 255, 13 }, { 18, 255, 18 }, { 23, 255, 23 }, { 27, 255, 27 }, { 35, 255, 35 }, { 40, 255, 40 }, { 43, 255, 43 }, { 48, 255, 48 }, { 55, 255, 55 }, { 60, 255, 60 }, { 64, 255, 64 }, { 69, 255, 69 }, { 72, 255, 72 }, { 79, 255, 79 }, { 90, 255, 82 }, { 106, 255, 74 }, { 113, 255, 70 }, { 126, 255, 63 }, { 140, 255, 56 }, { 147, 255, 53 }, { 155, 255, 48 }, { 168, 255, 42 }, { 181, 255, 36 }, { 189, 255, 31 }, { 197, 255, 27 }, { 209, 255, 21 }, { 224, 255, 14 }, { 231, 255, 10 }, { 239, 255, 7 }, { 247, 251, 3 }, { 255, 243, 0 }, { 255, 239, 0 }, { 255, 235, 0 }, { 255, 230, 0 }, { 255, 222, 0 }, { 255, 218, 0 }, { 255, 214, 0 }, { 255, 209, 0 }, { 255, 201, 0 }, { 255, 197, 0 }, { 255, 193, 0 }, { 255, 188, 0 }, { 255, 180, 0 }, { 255, 176, 0 }, { 255, 172, 0 }, { 255, 167, 0 }, { 255, 156, 0 }, { 255, 150, 0 }, { 255, 146, 0 }, { 255, 142, 0 }, { 255, 138, 0 }, { 255, 131, 0 }, { 255, 125, 0 }, { 255, 121, 0 }, { 255, 117, 0 }, { 255, 110, 0 }, { 255, 104, 0 }, { 255, 100, 0 }, { 255, 96, 0 }, { 255, 90, 0 }, { 255, 83, 0 }, { 255, 78, 0 }, { 255, 75, 0 }, { 255, 71, 0 }, { 255, 67, 0 }, { 255, 65, 0 }, { 255, 63, 0 }, { 255, 59, 0 }, { 255, 54, 0 }, { 255, 52, 0 }, { 255, 50, 0 }, { 255, 46, 0 }, { 255, 41, 0 }, { 255, 39, 0 }, { 255, 36, 0 }, { 255, 32, 0 }, { 255, 25, 0 }, { 255, 22, 0 }, { 255, 20, 0 }, { 255, 17, 0 }, { 255, 13, 0 }, { 255, 10, 0 }, { 255, 7, 0 }, { 255, 4, 0 }, { 255, 0, 0 }, { 252, 0, 0 }, { 251, 0, 0 }, { 249, 0, 0 }, { 248, 0, 0 }, { 244, 0, 0 }, { 242, 0, 0 }, { 240, 0, 0 }, { 237, 0, 0 }, { 234, 0, 0 }, { 231, 0, 0 }, { 229, 0, 0 }, { 228, 0, 0 }, { 225, 0, 0 }, { 222, 0, 0 }, { 221, 0, 0 }, { 219, 0, 0 }, { 216, 0, 0 }, { 213, 0, 0 }, { 212, 0, 0 }, { 210, 0, 0 }, { 207, 0, 0 }, { 204, 0, 0 }, { 201, 0, 0 }, { 199, 0, 0 }, { 196, 0, 0 }, { 193, 0, 0 }, { 192, 0, 0 }, { 190, 0, 0 }, { 188, 0, 0 }, { 184, 0, 0 }, { 183, 0, 0 }, { 181, 0, 0 }, { 179, 0, 0 }, { 175, 0, 0 }, { 174, 0, 0 }, { 174, 0, 0 } }; static int vips_falsecolour_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsFalsecolour *falsecolour = (VipsFalsecolour *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); if( VIPS_OBJECT_CLASS( vips_falsecolour_parent_class )-> build( object ) ) return( -1 ); if( !(t[0] = vips_image_new_from_memory( (void *) vips_falsecolour_pet, sizeof( vips_falsecolour_pet ), 1, VIPS_NUMBER( vips_falsecolour_pet ), 3, VIPS_FORMAT_UCHAR )) ) return( -1 ); /* Force to mono 8-bit. Don't use vips_colourspace() to go to B_W, we * want to work for images which aren't in a recognised space, like * MULTIBAND. */ if( vips_image_decode( falsecolour->in, &t[1] ) || vips_extract_band( t[1], &t[2], 0, NULL ) || vips_cast( t[2], &t[3], VIPS_FORMAT_UCHAR, NULL ) || vips_maplut( t[3], &t[4], t[0], NULL ) || vips_image_write( t[4], conversion->out ) ) return( -1 ); return( 0 ); } static void vips_falsecolour_class_init( VipsFalsecolourClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "falsecolour"; vobject_class->description = _( "false-color an image" ); vobject_class->build = vips_falsecolour_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 0, _( "in" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFalsecolour, in ) ); } static void vips_falsecolour_init( VipsFalsecolour *falsecolour ) { } /** * vips_falsecolour: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Force @in to 1 band, 8-bit, then transform to * a 3-band 8-bit image with a false colour * map. The map is supposed to make small differences in brightness more * obvious. * * See also: vips_maplut(). * * Returns: 0 on success, -1 on error */ int vips_falsecolour( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "falsecolour", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/flatten.c000066400000000000000000000244041361153320700206440ustar00rootroot00000000000000/* flatten the alpha out of an image, replacing it with a constant background * * Author: John Cupitt * Written on: 18/6/12 * * 4/1/14 * - better rounding * 9/5/15 * - add max_alpha to match vips_premultiply() etc. * 25/5/16 * - max_alpha defaults to 65535 for RGB16/GREY16 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsFlatten { VipsConversion parent_instance; VipsImage *in; /* Background colour. */ VipsArrayDouble *background; /* The [double] converted to the input image format. */ VipsPel *ink; /* Use this to scale alpha to 0 - 1. */ double max_alpha; } VipsFlatten; typedef VipsConversionClass VipsFlattenClass; G_DEFINE_TYPE( VipsFlatten, vips_flatten, VIPS_TYPE_CONVERSION ); /* Flatten with black background. */ #define VIPS_FLATTEN_BLACK( TYPE ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ TYPE alpha = p[bands - 1]; \ int b; \ \ for( b = 0; b < bands - 1; b++ ) \ q[b] = (p[b] * alpha) / max_alpha; \ \ p += bands; \ q += bands - 1; \ } \ } /* Same, but with float arithmetic. Necessary for short/int to prevent * overflow. */ #define VIPS_FLATTEN_BLACK_FLOAT( TYPE ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ TYPE alpha = p[bands - 1]; \ int b; \ \ for( b = 0; b < bands - 1; b++ ) \ q[b] = ((double) p[b] * alpha) / max_alpha; \ \ p += bands; \ q += bands - 1; \ } \ } /* Flatten with any background. */ #define VIPS_FLATTEN( TYPE ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ TYPE alpha = p[bands - 1]; \ TYPE nalpha = max_alpha - alpha; \ TYPE * restrict bg = (TYPE *) flatten->ink; \ int b; \ \ for( b = 0; b < bands - 1; b++ ) \ q[b] = (p[b] * alpha + bg[b] * nalpha) / max_alpha; \ \ p += bands; \ q += bands - 1; \ } \ } #define VIPS_FLATTEN_FLOAT( TYPE ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ TYPE alpha = p[bands - 1]; \ TYPE nalpha = max_alpha - alpha; \ TYPE * restrict bg = (TYPE *) flatten->ink; \ int b; \ \ for( b = 0; b < bands - 1; b++ ) \ q[b] = ((double) p[b] * alpha + \ (double) bg[b] * nalpha) / max_alpha; \ \ p += bands; \ q += bands - 1; \ } \ } static int vips_flatten_black_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) vseq; VipsFlatten *flatten = (VipsFlatten *) b; VipsRect *r = &or->valid; int width = r->width; int bands = ir->im->Bands; double max_alpha = flatten->max_alpha; int x, y; if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *out = VIPS_REGION_ADDR( or, r->left, r->top + y ); switch( flatten->in->BandFmt ) { case VIPS_FORMAT_UCHAR: VIPS_FLATTEN_BLACK( unsigned char ); break; case VIPS_FORMAT_CHAR: VIPS_FLATTEN_BLACK( signed char ); break; case VIPS_FORMAT_USHORT: VIPS_FLATTEN_BLACK_FLOAT( unsigned short ); break; case VIPS_FORMAT_SHORT: VIPS_FLATTEN_BLACK_FLOAT( signed short ); break; case VIPS_FORMAT_UINT: VIPS_FLATTEN_BLACK_FLOAT( unsigned int ); break; case VIPS_FORMAT_INT: VIPS_FLATTEN_BLACK_FLOAT( signed int ); break; case VIPS_FORMAT_FLOAT: VIPS_FLATTEN_BLACK_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: VIPS_FLATTEN_BLACK_FLOAT( double ); break; case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: default: g_assert_not_reached(); } } return( 0 ); } /* Any background. */ static int vips_flatten_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) vseq; VipsFlatten *flatten = (VipsFlatten *) b; VipsRect *r = &or->valid; int width = r->width; int bands = ir->im->Bands; double max_alpha = flatten->max_alpha; int x, y; if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *out = VIPS_REGION_ADDR( or, r->left, r->top + y ); switch( flatten->in->BandFmt ) { case VIPS_FORMAT_UCHAR: VIPS_FLATTEN( unsigned char ); break; case VIPS_FORMAT_CHAR: VIPS_FLATTEN( signed char ); break; case VIPS_FORMAT_USHORT: VIPS_FLATTEN_FLOAT( unsigned short ); break; case VIPS_FORMAT_SHORT: VIPS_FLATTEN_FLOAT( signed short ); break; case VIPS_FORMAT_UINT: VIPS_FLATTEN_FLOAT( unsigned int ); break; case VIPS_FORMAT_INT: VIPS_FLATTEN_FLOAT( signed int ); break; case VIPS_FORMAT_FLOAT: VIPS_FLATTEN_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: VIPS_FLATTEN_FLOAT( double ); break; case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: default: g_assert_not_reached(); } } return( 0 ); } static int vips_flatten_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsFlatten *flatten = (VipsFlatten *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); VipsImage *in; int i; gboolean black; if( VIPS_OBJECT_CLASS( vips_flatten_parent_class )->build( object ) ) return( -1 ); in = flatten->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* Trivial case: fall back to copy(). */ if( in->Bands == 1 ) return( vips_image_write( in, conversion->out ) ); if( vips_check_noncomplex( class->nickname, in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); conversion->out->Bands -= 1; /* Is max-alpha unset? Default to the correct value for this * interpretation. */ if( !vips_object_argument_isset( object, "max_alpha" ) ) if( in->Type == VIPS_INTERPRETATION_GREY16 || in->Type == VIPS_INTERPRETATION_RGB16 ) flatten->max_alpha = 65535; /* Is the background black? We have a special path for this. */ black = TRUE; for( i = 0; i < VIPS_AREA( flatten->background )->n; i++ ) if( vips_array_double_get( flatten->background, NULL )[i] != 0.0 ) { black = FALSE; break; } if( black ) { if( vips_image_generate( conversion->out, vips_start_one, vips_flatten_black_gen, vips_stop_one, in, flatten ) ) return( -1 ); } else { /* Convert the background to the image's format. */ if( !(flatten->ink = vips__vector_to_ink( class->nickname, conversion->out, VIPS_AREA( flatten->background )->data, NULL, VIPS_AREA( flatten->background )->n )) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_one, vips_flatten_gen, vips_stop_one, in, flatten ) ) return( -1 ); } return( 0 ); } static void vips_flatten_class_init( VipsFlattenClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_flatten_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "flatten"; vobject_class->description = _( "flatten alpha out of an image" ); vobject_class->build = vips_flatten_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFlatten, in ) ); VIPS_ARG_BOXED( class, "background", 2, _( "Background" ), _( "Background value" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsFlatten, background ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_DOUBLE( class, "max_alpha", 115, _( "Maximum alpha" ), _( "Maximum value of alpha channel" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsFlatten, max_alpha ), 0, 100000000, 255 ); } static void vips_flatten_init( VipsFlatten *flatten ) { flatten->background = vips_array_double_newv( 1, 0.0 ); flatten->max_alpha= 255.0; } /** * vips_flatten: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @background: #VipsArrayDouble colour for new pixels * * @max_alpha: %gdouble, maximum value for alpha * * Take the last band of @in as an alpha and use it to blend the * remaining channels with @background. * * The alpha channel is 0 - @max_alpha, * where 1 means 100% image and 0 * means 100% background. * Non-complex images only. * @background defaults to zero (black). * * @max_alpha has the default value 255, or 65535 for images tagged as * #VIPS_INTERPRETATION_RGB16 or * #VIPS_INTERPRETATION_GREY16. * * Useful for flattening PNG images to RGB. * * See also: vips_premultiply(), vips_pngload(). * * Returns: 0 on success, -1 on error */ int vips_flatten( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "flatten", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/flip.c000066400000000000000000000134711361153320700201430ustar00rootroot00000000000000/* flip left/right and up/down * * Copyright: 1990, N. Dessipris * Written on: 28/10/91 * Updated on: * 19/7/93 JC * - now allows IM_CODING_LABQ too * - yuk! needs rewriting * 21/12/94 JC * - rewritten * 14/4/04 * - sets Xoffset / Yoffset * 24/3/09 * - added IM_CODING_RAD support * 29/1/10 * - cleanups * - gtkdoc * 17/10/11 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsFlip { VipsConversion parent_instance; /* The input image. */ VipsImage *in; /* Left-right or up-down. */ VipsDirection direction; } VipsFlip; typedef VipsConversionClass VipsFlipClass; G_DEFINE_TYPE( VipsFlip, vips_flip, VIPS_TYPE_CONVERSION ); static int vips_flip_vertical_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; VipsRect in; VipsPel *p, *q; int y; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); int ls; int psk, qsk; /* Transform to input coordinates. */ in = *r; in.top = ir->im->Ysize - bo; /* Ask for input we need. */ if( vips_region_prepare( ir, &in ) ) return( -1 ); /* Loop, copying and reversing lines. */ p = VIPS_REGION_ADDR( ir, le, in.top + in.height - 1 ); q = VIPS_REGION_ADDR( or, le, to ); psk = VIPS_REGION_LSKIP( ir ); qsk = VIPS_REGION_LSKIP( or ); ls = VIPS_REGION_SIZEOF_LINE( or ); for( y = to; y < bo; y++ ) { memcpy( q, p, ls ); p -= psk; q += qsk; } return( 0 ); } static int vips_flip_horizontal_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; VipsRect in; VipsPel *p, *q; int x, y, z; int le = r->left; int ri = VIPS_RECT_RIGHT(r); int to = r->top; int bo = VIPS_RECT_BOTTOM(r); int ps = VIPS_IMAGE_SIZEOF_PEL( ir->im ); /* sizeof pel */ int hgt = ir->im->Xsize - r->width; int lastx; /* Transform to input coordinates. */ in = *r; in.left = hgt - r->left; /* Find x of final pixel in input area. */ lastx = VIPS_RECT_RIGHT( &in ) - 1; /* Ask for input we need. */ if( vips_region_prepare( ir, &in ) ) return( -1 ); /* Loop, copying and reversing lines. */ for( y = to; y < bo; y++ ) { p = VIPS_REGION_ADDR( ir, lastx, y ); q = VIPS_REGION_ADDR( or, le, y ); for( x = le; x < ri; x++ ) { /* Copy the pel. */ for( z = 0; z < ps; z++ ) q[z] = p[z]; /* Skip forwards in out, back in in. */ q += ps; p -= ps; } } return( 0 ); } static int vips_flip_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsFlip *flip = (VipsFlip *) object; VipsGenerateFn generate_fn; if( VIPS_OBJECT_CLASS( vips_flip_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( flip->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, flip->in, NULL ) ) return( -1 ); if( flip->direction == VIPS_DIRECTION_HORIZONTAL ) { generate_fn = vips_flip_horizontal_gen; conversion->out->Xoffset = flip->in->Xsize; conversion->out->Yoffset = 0; } else { generate_fn = vips_flip_vertical_gen; conversion->out->Xoffset = 0; conversion->out->Yoffset = flip->in->Ysize; } if( vips_image_generate( conversion->out, vips_start_one, generate_fn, vips_stop_one, flip->in, flip ) ) return( -1 ); return( 0 ); } static void vips_flip_class_init( VipsFlipClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_flip_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "flip"; vobject_class->description = _( "flip an image" ); vobject_class->build = vips_flip_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFlip, in ) ); VIPS_ARG_ENUM( class, "direction", 6, _( "Direction" ), _( "Direction to flip image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFlip, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); } static void vips_flip_init( VipsFlip *flip ) { } /** * vips_flip: (method) * @in: input image * @out: (out): output image * @direction: flip horizontally or vertically * @...: %NULL-terminated list of optional named arguments * * Flips an image left-right or up-down. * * See also: vips_rot(). * * Returns: 0 on success, -1 on error */ int vips_flip( VipsImage *in, VipsImage **out, VipsDirection direction, ... ) { va_list ap; int result; va_start( ap, direction ); result = vips_call_split( "flip", ap, in, out, direction ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/gamma.c000066400000000000000000000111551361153320700202700ustar00rootroot00000000000000/* Raise an image to a gamma factor * * Copyright: 1990, N. Dessipris. * * Written on: 19/07/1990 * Modified on: * 19/6/95 JC * - redone as library function * 23/3/10 * - gtkdoc * - 16 bit as well * 1/8/13 * - redone as a class * 11/11/13 * - any format * - calculate pow(1/exp) rather than pow(exp) to be consistent with * other packages */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pconversion.h" typedef struct _VipsGamma { VipsConversion parent_instance; VipsImage *in; double exponent; } VipsGamma; typedef VipsConversionClass VipsGammaClass; G_DEFINE_TYPE( VipsGamma, vips_gamma, VIPS_TYPE_CONVERSION ); /* For each input format, what we normalise the pow() about. */ static double vips_gamma_maxval[10] = { /* UC */ UCHAR_MAX, /* C */ SCHAR_MAX, /* US */ USHRT_MAX, /* S */ SHRT_MAX, /* UI */ UINT_MAX, /* I */ INT_MAX, /* F */ 1.0, /* X */ 1.0, /* D */ 1.0, /* DX */ 1.0 }; static int vips_gamma_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsGamma *gamma = (VipsGamma *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); VipsImage *in = gamma->in; double scale; if( VIPS_OBJECT_CLASS( vips_gamma_parent_class )-> build( object ) ) return( -1 ); scale = pow( vips_gamma_maxval[in->BandFmt], 1.0 / gamma->exponent ) / vips_gamma_maxval[in->BandFmt]; if( in->BandFmt == VIPS_FORMAT_UCHAR || in->BandFmt == VIPS_FORMAT_USHORT ) { if( vips_identity( &t[0], "ushort", in->BandFmt == VIPS_FORMAT_USHORT, NULL ) || vips_pow_const1( t[0], &t[1], 1.0 / gamma->exponent, NULL ) || vips_linear1( t[1], &t[2], 1.0 / scale, 0, NULL ) || vips_cast( t[2], &t[3], in->BandFmt, NULL ) || vips_maplut( in, &t[4], t[3], NULL ) || vips_image_write( t[4], conversion->out ) ) return( -1 ); } else { if( vips_pow_const1( in, &t[1], 1.0 / gamma->exponent, NULL ) || vips_linear1( t[1], &t[2], 1.0 / scale, 0, NULL ) || vips_cast( t[2], &t[3], in->BandFmt, NULL ) || vips_image_write( t[3], conversion->out ) ) return( -1 ); } return( 0 ); } static void vips_gamma_class_init( VipsGammaClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "gamma"; vobject_class->description = _( "gamma an image" ); vobject_class->build = vips_gamma_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "in" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGamma, in ) ); VIPS_ARG_DOUBLE( class, "exponent", 2, _( "exponent" ), _( "Gamma factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGamma, exponent ), 0.000001, 1000.0, 2.4 ); } static void vips_gamma_init( VipsGamma *gamma ) { gamma->exponent = 1.0 / 2.4; } /** * vips_gamma: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @exponent: gamma, default 1.0 / 2.4 * * Calculate @in ** (1 / @exponent), normalising to the maximum range of the * input type. For float types use 1.0 as the maximum. * * See also: vips_identity(), vips_pow_const1(), vips_maplut() * * Returns: 0 on success, -1 on error */ int vips_gamma( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "gamma", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/grid.c000066400000000000000000000151041361153320700201310ustar00rootroot00000000000000/* vips_grid * * 4/8/05 * 7/9/05 * - oops, clipping was wrong * 30/1/10 * - gtkdoc * - small cleanups * 30/5/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pconversion.h" typedef struct _VipsGrid { VipsConversion parent_instance; VipsImage *in; int tile_height; int across; int down; } VipsGrid; typedef VipsConversionClass VipsGridClass; G_DEFINE_TYPE( VipsGrid, vips_grid, VIPS_TYPE_CONVERSION ); static int vips_grid_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) vseq; VipsGrid *grid = (VipsGrid *) b; VipsRect *r = &or->valid; int twidth = grid->in->Xsize; int theight = grid->tile_height; int x, y; VipsRect tile; /* Find top left of tiles we need. */ int xs = (r->left / twidth) * twidth; int ys = (r->top / theight) * theight; /* The tile enclosing the top-left corner of the requested area. */ tile.left = xs; tile.top = ys; tile.width = twidth; tile.height = theight; /* If the request fits inside a single tile, we can just pointer-copy. */ if( vips_rect_includesrect( &tile, r ) ) { VipsRect irect; /* Translate request to input space. */ irect = *r; irect.left -= xs; irect.top -= ys; irect.top += grid->across * ys + theight * (xs / twidth); if( vips_region_prepare( ir, &irect ) || vips_region_region( or, ir, r, irect.left, irect.top ) ) return( -1 ); return( 0 ); } for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += theight ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += twidth ) { VipsRect paint; VipsRect input; /* Whole tile at x, y */ tile.left = x; tile.top = y; tile.width = twidth; tile.height = theight; /* Which parts touch the area of the output we are * building. */ vips_rect_intersectrect( &tile, r, &paint ); g_assert( !vips_rect_isempty( &paint ) ); /* Translate back to ir coordinates. */ input = paint; input.left -= x; input.top -= y; input.top += grid->across * y + theight * (x / twidth); /* Render into or. */ if( vips_region_prepare_to( ir, or, &input, paint.left, paint.top ) ) return( -1 ); } return( 0 ); } static int vips_grid_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsGrid *grid = (VipsGrid *) object; if( VIPS_OBJECT_CLASS( vips_grid_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_known( class->nickname, grid->in ) || vips_image_pio_input( grid->in ) ) return( -1 ); if( grid->in->Ysize % grid->tile_height != 0 || grid->in->Ysize / grid->tile_height != grid->across * grid->down ) { vips_error( class->nickname, "%s", _( "bad grid geometry" ) ); return( -1 ); } /* We can render small tiles with pointer copies. */ if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, grid->in, NULL ) ) return( -1 ); conversion->out->Xsize = grid->in->Xsize * grid->across; conversion->out->Ysize = grid->tile_height * grid->down; if( vips_image_generate( conversion->out, vips_start_one, vips_grid_gen, vips_stop_one, grid->in, grid ) ) return( -1 ); return( 0 ); } static void vips_grid_class_init( VipsGridClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "grid"; vobject_class->description = _( "grid an image" ); vobject_class->build = vips_grid_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGrid, in ) ); VIPS_ARG_INT( class, "tile_height", 3, _( "Tile height" ), _( "chop into tiles this high" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGrid, tile_height ), 1, 10000000, 128 ); VIPS_ARG_INT( class, "across", 4, _( "Across" ), _( "number of tiles across" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGrid, across ), 1, 10000000, 1 ); VIPS_ARG_INT( class, "down", 5, _( "Down" ), _( "number of tiles down" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGrid, down ), 1, 10000000, 1 ); } static void vips_grid_init( VipsGrid *grid ) { grid->tile_height = 128; grid->across = 1; grid->down = 1; } /** * vips_grid: (method) * @in: input image * @out: (out): output image * @tile_height: chop into tiles this high * @across: tiles across * @down: tiles down * @...: %NULL-terminated list of optional named arguments * * Chop a tall thin image up into a set of tiles, lay the tiles out in a grid. * * The input image should be a very tall, thin image containing a list of * smaller images. Volumetric or time-sequence images are often laid out like * this. This image is chopped into a series of tiles, each @tile_height * pixels high and the width of @in. The tiles are then rearranged into a grid * @across tiles across and @down tiles down in row-major order. * * Supplying @tile_height, @across and @down is not strictly necessary, we * only really need two of these. Requiring three is a double-check that the * image has the expected geometry. * * See also: vips_embed(), vips_insert(), vips_join(). * * Returns: 0 on success, -1 on error */ int vips_grid( VipsImage *in, VipsImage **out, int tile_height, int across, int down, ... ) { va_list ap; int result; va_start( ap, down ); result = vips_call_split( "grid", ap, in, out, tile_height, across, down ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/ifthenelse.c000066400000000000000000000333731361153320700213420ustar00rootroot00000000000000/* ifthenelse.c --- use a condition image to join two images together * * Modified: * 9/2/95 JC * - partialed and ANSIfied * 11/9/95 JC * - return( 0 ) missing! oops * 15/4/05 * - now just evals left/right if all zero/all one * 7/10/06 * - set THINSTRIP * 23/9/09 * - gtkdoc comment * 23/9/09 * - use im_check*() * - allow many-band conditional and single-band a/b * - allow a/b to differ in format and bands * 25/6/10 * - let the conditional image be any format by adding a (!=0) if * necessary * 17/5/11 * - added sizealike * 14/11/11 * - redone as a class * 19/4/12 * - fix blend * - small blend speedup */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsIfthenelse { VipsConversion parent_instance; /* Params. */ VipsImage *cond; VipsImage *in1; VipsImage *in2; gboolean blend; } VipsIfthenelse; typedef VipsConversionClass VipsIfthenelseClass; G_DEFINE_TYPE( VipsIfthenelse, vips_ifthenelse, VIPS_TYPE_CONVERSION ); #define IBLEND1( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( i = 0, x = 0; x < n; i++, x += bands ) { \ const int v = c[i]; \ \ for( z = x; z < x + bands; z++ ) \ q[z] = (v * a[z] + (255 - v) * b[z] + 128) / 255; \ } \ } #define IBLENDN( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( x = 0; x < n; x += bands ) { \ for( z = x; z < x + bands; z++ ) { \ const int v = c[z]; \ \ q[z] = (v * a[z] + (255 - v) * b[z] + 128) / 255; \ } \ } \ } #define FBLEND1( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( i = 0, x = 0; x < n; i++, x += bands ) { \ const double v = c[i] / 255.0; \ \ for( z = x; z < x + bands; z++ ) \ q[z] = v * a[z] + (1.0 - v) * b[z]; \ } \ } #define FBLENDN( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( x = 0; x < n; x += bands ) { \ for( z = x; z < x + bands; z++ ) { \ const double v = c[z] / 255.0; \ \ q[z] = v * a[z] + (1.0 - v) * b[z]; \ } \ } \ } #define CBLEND1( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( i = 0, x = 0; x < n; i++, x += bands ) { \ const double v = c[i] / 255.0; \ \ for( z = x; z < x + 2 * bands; z++ ) \ q[z] = v * a[z] + (1.0 - v) * b[z]; \ } \ } #define CBLENDN( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( x = 0; x < n; x += bands ) { \ for( z = x; z < x + bands; z++ ) { \ const double v = c[z] / 255.0; \ \ q[2 * z] = v * a[2 * z] + (1.0 - v) * b[2 * z]; \ q[2 * z + 1] = v * a[2 * z + 1] + \ (1.0 - v) * b[2 * z + 1]; \ } \ } \ } /* Blend with a 1-band conditional image. */ static void vips_blend1_buffer( VipsPel *qp, VipsPel *c, VipsPel *ap, VipsPel *bp, int width, VipsImage *im ) { int i, x, z; const int bands = im->Bands; const int n = width * bands; switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: IBLEND1( unsigned char ); break; case VIPS_FORMAT_CHAR: IBLEND1( signed char ); break; case VIPS_FORMAT_USHORT: IBLEND1( unsigned short ); break; case VIPS_FORMAT_SHORT: IBLEND1( signed short ); break; case VIPS_FORMAT_UINT: IBLEND1( unsigned int ); break; case VIPS_FORMAT_INT: IBLEND1( signed int ); break; case VIPS_FORMAT_FLOAT: FBLEND1( float ); break; case VIPS_FORMAT_DOUBLE: FBLEND1( double ); break; case VIPS_FORMAT_COMPLEX: CBLEND1( float ); break; case VIPS_FORMAT_DPCOMPLEX: CBLEND1( double ); break; default: g_assert_not_reached(); } } /* Blend with a many band conditional image. */ static void vips_blendn_buffer( VipsPel *qp, VipsPel *c, VipsPel *ap, VipsPel *bp, int width, VipsImage *im ) { int x, z; const int bands = im->Bands; const int n = width * bands; switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: IBLENDN( unsigned char ); break; case VIPS_FORMAT_CHAR: IBLENDN( signed char ); break; case VIPS_FORMAT_USHORT: IBLENDN( unsigned short ); break; case VIPS_FORMAT_SHORT: IBLENDN( signed short ); break; case VIPS_FORMAT_UINT: IBLENDN( unsigned int ); break; case VIPS_FORMAT_INT: IBLENDN( signed int ); break; case VIPS_FORMAT_FLOAT: FBLENDN( float ); break; case VIPS_FORMAT_DOUBLE: FBLENDN( double ); break; case VIPS_FORMAT_COMPLEX: CBLENDN( float ); break; case VIPS_FORMAT_DPCOMPLEX: CBLENDN( double ); break; default: g_assert_not_reached(); } } static int vips_blend_gen( VipsRegion *or, void *seq, void *client1, void *client2, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); VipsImage *c = ir[2]->im; VipsImage *a = ir[0]->im; int x, y; int all0, all255; if( vips_region_prepare( ir[2], r ) ) return( -1 ); /* Is the conditional all zero or all 255? We can avoid asking * for one of the inputs to be calculated. */ all0 = *VIPS_REGION_ADDR( ir[2], le, to ) == 0; all255 = *VIPS_REGION_ADDR( ir[2], le, to ) == 255; for( y = to; y < bo; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir[2], le, y ); int width = r->width * c->Bands; for( x = 0; x < width; x++ ) { all0 &= p[x] == 0; all255 &= p[x] == 255; } if( !all0 && !all255 ) break; } if( all255 ) { /* All 255. Point or at the then image. */ if( vips_region_prepare( ir[0], r ) || vips_region_region( or, ir[0], r, r->left, r->top ) ) return( -1 ); } else if( all0 ) { /* All zero. Point or at the else image. */ if( vips_region_prepare( ir[1], r ) || vips_region_region( or, ir[1], r, r->left, r->top ) ) return( -1 ); } else { /* Mix of set and clear ... ask for both then and else parts * and interleave. * * We can't use vips_reorder_prepare_many() since we always * want the c image first. */ if( vips_region_prepare( ir[0], r ) || vips_region_prepare( ir[1], r ) ) return( -1 ); for( y = to; y < bo; y++ ) { VipsPel *ap = VIPS_REGION_ADDR( ir[0], le, y ); VipsPel *bp = VIPS_REGION_ADDR( ir[1], le, y ); VipsPel *cp = VIPS_REGION_ADDR( ir[2], le, y ); VipsPel *q = VIPS_REGION_ADDR( or, le, y ); if( c->Bands == 1 ) vips_blend1_buffer( q, cp, ap, bp, r->width, a ); else vips_blendn_buffer( q, cp, ap, bp, r->width, a ); } } return( 0 ); } static int vips_ifthenelse_gen( VipsRegion *or, void *seq, void *client1, void *client2, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); VipsImage *c = ir[2]->im; VipsImage *a = ir[0]->im; int size, width; int i, x, y, z; int all0, alln0; if( c->Bands == 1 ) { /* Copying PEL-sized units with a one-band conditional. */ size = VIPS_IMAGE_SIZEOF_PEL( a ); width = r->width; } else { /* Copying ELEMENT sized-units with an n-band conditional. */ size = VIPS_IMAGE_SIZEOF_ELEMENT( a ); width = r->width * a->Bands; } if( vips_region_prepare( ir[2], r ) ) return( -1 ); /* Is the conditional all zero or all non-zero? We can avoid asking * for one of the inputs to be calculated. */ all0 = *VIPS_REGION_ADDR( ir[2], le, to ) == 0; alln0 = *VIPS_REGION_ADDR( ir[2], le, to ) != 0; for( y = to; y < bo; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir[2], le, y ); for( x = 0; x < width; x++ ) { all0 &= p[x] == 0; alln0 &= p[x] != 0; } if( !all0 && !alln0 ) break; } if( alln0 ) { /* All non-zero. Point or at the then image. */ if( vips_region_prepare( ir[0], r ) || vips_region_region( or, ir[0], r, r->left, r->top ) ) return( -1 ); } else if( all0 ) { /* All zero. Point or at the else image. */ if( vips_region_prepare( ir[1], r ) || vips_region_region( or, ir[1], r, r->left, r->top ) ) return( -1 ); } else { /* Mix of set and clear ... ask for both then and else parts * and interleave. */ if( vips_region_prepare( ir[0], r ) || vips_region_prepare( ir[1], r ) ) return( -1 ); for( y = to; y < bo; y++ ) { VipsPel *ap = VIPS_REGION_ADDR( ir[0], le, y ); VipsPel *bp = VIPS_REGION_ADDR( ir[1], le, y ); VipsPel *cp = VIPS_REGION_ADDR( ir[2], le, y ); VipsPel *q = VIPS_REGION_ADDR( or, le, y ); for( x = 0, i = 0; i < width; i++, x += size ) if( cp[i] ) for( z = x; z < x + size; z++ ) q[z] = ap[z]; else for( z = x; z < x + size; z++ ) q[z] = bp[z]; } } return( 0 ); } static int vips_ifthenelse_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsIfthenelse *ifthenelse = (VipsIfthenelse *) object; VipsGenerateFn generate_fn = ifthenelse->blend ? vips_blend_gen : vips_ifthenelse_gen; VipsImage **band = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage **size = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage **format = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage *all[3]; if( VIPS_OBJECT_CLASS( vips_ifthenelse_parent_class )->build( object ) ) return( -1 ); /* We have to have the condition image last since we want the output * image to inherit its properties from the then/else parts. */ all[0] = ifthenelse->in1; all[1] = ifthenelse->in2; all[2] = ifthenelse->cond; /* No need to check input images, sizealike and friends will do this * for us. */ /* Cast our input images up to a common bands and size. */ if( vips__bandalike_vec( class->nickname, all, band, 3, 0 ) || vips__sizealike_vec( band, size, 3 ) ) return( -1 ); /* Condition is cast to uchar, then/else to a common type. */ if( size[2]->BandFmt != VIPS_FORMAT_UCHAR ) { if( vips_cast( size[2], &format[2], VIPS_FORMAT_UCHAR, NULL ) ) return( -1 ); } else { format[2] = size[2]; g_object_ref( format[2] ); } if( vips__formatalike_vec( size, format, 2 ) ) return( -1 ); if( vips_image_pipeline_array( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, format ) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_many, generate_fn, vips_stop_many, format, ifthenelse ) ) return( -1 ); return( 0 ); } static void vips_ifthenelse_class_init( VipsIfthenelseClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_ifthenelse_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "ifthenelse"; vobject_class->description = _( "ifthenelse an image" ); vobject_class->build = vips_ifthenelse_build; VIPS_ARG_IMAGE( class, "cond", -2, _( "Condition" ), _( "Condition input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsIfthenelse, cond ) ); VIPS_ARG_IMAGE( class, "in1", -1, _( "Then image" ), _( "Source for TRUE pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsIfthenelse, in1 ) ); VIPS_ARG_IMAGE( class, "in2", 0, _( "Else image" ), _( "Source for FALSE pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsIfthenelse, in2 ) ); VIPS_ARG_BOOL( class, "blend", 4, _( "blend" ), _( "Blend smoothly between then and else parts" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIfthenelse, blend ), FALSE ); } static void vips_ifthenelse_init( VipsIfthenelse *ifthenelse ) { } /** * vips_ifthenelse: * @cond: condition #VipsImage * @in1: then #VipsImage * @in2: else #VipsImage * @out: (out): output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @blend: blend smoothly between @in1 and @in2 * * This operation scans the condition image @cond * and uses it to select pixels from either the then image @in1 or the else * image @in2. Non-zero means @in1, 0 means @in2. * * Any image can have either 1 band or n bands, where n is the same for all * the non-1-band images. Single band images are then effectively copied to * make n-band images. * * Images @in1 and @in2 are cast up to the smallest common format. @cond is * cast to uchar. * * If the images differ in size, the smaller images are enlarged to match the * largest by adding zero pixels along the bottom and right. * * If @blend is %TRUE, then values in @out are smoothly blended between @in1 * and @in2 using the formula: * * @out = (@cond / 255) * @in1 + (1 - @cond / 255) * @in2 * * See also: vips_equal(). * * Returns: 0 on success, -1 on error */ int vips_ifthenelse( VipsImage *cond, VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "ifthenelse", ap, cond, in1, in2, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/insert.c000066400000000000000000000360271361153320700205170ustar00rootroot00000000000000/* VipsInsert * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/08/1990 * Modified on : * 31/8/93 JC * - ANSIfied * - Nicos' reformatting undone. Grr! * 22/12/94 * - modernised * - now does IM_CODING_LABQ too * 22/6/95 JC * - partialized * 10/2/02 JC * - adapted for im_prepare_to() stuff * 14/4/04 * - sets Xoffset / Yoffset * 3/7/06 * - add sanity range checks * 24/3/09 * - added IM_CODING_RAD support * 30/1/10 * - cleanups * - formatalike/bandalike * - gtkdoc * 29/9/11 * - rewrite as a class * - add expand, bg options */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsInsert { VipsConversion parent_instance; /* Params. */ VipsImage *main; VipsImage *sub; int x; int y; gboolean expand; VipsArrayDouble *background; /* Pixel we paint calculated from background. */ VipsPel *ink; /* Inputs cast and banded up. */ VipsImage *main_processed; VipsImage *sub_processed; /* Geometry. */ VipsRect rout; /* Output space */ VipsRect rmain; /* Position of main in output */ VipsRect rsub; /* Position of sub in output */ /* TRUE if we've minimise sub. */ gboolean sub_minimised; } VipsInsert; typedef VipsConversionClass VipsInsertClass; G_DEFINE_TYPE( VipsInsert, vips_insert, VIPS_TYPE_CONVERSION ); /* Trivial case: we just need pels from one of the inputs. * * Also used by vips_arrayjoin. */ int vips__insert_just_one( VipsRegion *or, VipsRegion *ir, int x, int y ) { VipsRect need; /* Find the part of pos we need. */ need = or->valid; need.left -= x; need.top -= y; if( vips_region_prepare( ir, &need ) ) return( -1 ); /* Attach our output to it. */ if( vips_region_region( or, ir, &or->valid, need.left, need.top ) ) return( -1 ); return( 0 ); } /* Paste in parts of ir that fall within or --- ir is an input REGION for an * image positioned at pos within or. * * Also used by vips_arrayjoin. */ int vips__insert_paste_region( VipsRegion *or, VipsRegion *ir, VipsRect *pos ) { VipsRect ovl; /* Does any of the sub-image appear in the area we have been asked * to make? */ vips_rect_intersectrect( &or->valid, pos, &ovl ); if( !vips_rect_isempty( &ovl ) ) { /* Find the part of in we need. */ ovl.left -= pos->left; ovl.top -= pos->top; /* Paint this area of pixels into or. */ if( vips_region_prepare_to( ir, or, &ovl, ovl.left + pos->left, ovl.top + pos->top ) ) return( -1 ); } return( 0 ); } static int vips_insert_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsRect *r = &or->valid; VipsInsert *insert = (VipsInsert *) b; VipsRect ovl; /* The part of the subimage we will use. */ vips_rect_intersectrect( &or->valid, &insert->rsub, &ovl ); /* Three cases: we are generating entirely within the sub-image, * entirely within the main image, or a mixture. */ if( vips_rect_includesrect( &insert->rsub, &or->valid ) ) { if( vips__insert_just_one( or, ir[1], insert->rsub.left, insert->rsub.top ) ) return( -1 ); } else if( vips_rect_includesrect( &insert->rmain, &or->valid ) && vips_rect_isempty( &ovl ) ) { if( vips__insert_just_one( or, ir[0], insert->rmain.left, insert->rmain.top ) ) return( -1 ); } else { /* Output requires both (or neither) input. If it is not * entirely inside both the main and the sub, then there is * going to be some background. */ if( !(vips_rect_includesrect( &insert->rsub, &or->valid ) && vips_rect_includesrect( &insert->rmain, &or->valid )) ) vips_region_paint_pel( or, r, insert->ink ); /* Paste from main. */ if( vips__insert_paste_region( or, ir[0], &insert->rmain ) ) return( -1 ); /* Paste from sub. */ if( vips__insert_paste_region( or, ir[1], &insert->rsub ) ) return( -1 ); } return( 0 ); } /* Make a pair of vector constants into a set of formatted pixels. bands can * be 3 while n is 1, meaning expand the constant to the number of bands. * imag can be NULL, meaning all zero for the imaginary component. */ VipsPel * vips__vector_to_pels( const char *domain, int bands, VipsBandFormat format, VipsCoding coding, double *real, double *imag, int n ) { /* Run our pipeline relative to this. */ VipsImage *context = vips_image_new(); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( context ), 8 ); VipsImage *in; double *ones; VipsPel *result; int i; #ifdef VIPS_DEBUG printf( "vips__vector_to_pels: starting\n" ); #endif /*VIPS_DEBUG*/ ones = VIPS_ARRAY( context, n, double ); for( i = 0; i < n; i++ ) ones[i] = 1.0; /* Make the real and imaginary parts. */ if( vips_black( &t[0], 1, 1, "bands", bands, NULL ) || vips_linear( t[0], &t[1], ones, real, n, NULL ) ) { g_object_unref( context ); return( NULL ); } in = t[1]; if( imag ) { if( vips_black( &t[2], 1, 1, "bands", bands, NULL ) || vips_linear( t[2], &t[3], ones, imag, n, NULL ) || vips_complexform( in, t[3], &t[4], NULL ) ) { g_object_unref( context ); return( NULL ); } in = t[4]; } /* Cast to the output type and coding. */ if( vips_cast( in, &t[5], format, NULL ) || vips_image_encode( t[5], &t[6], coding ) ) { g_object_unref( context ); return( NULL ); } in = t[6]; /* Write to memory, copy to output buffer. */ if( !(t[7] = vips_image_new_memory()) || vips_image_write( in, t[7] ) ) { g_object_unref( context ); return( NULL ); } in = t[7]; if( !(result = VIPS_ARRAY( NULL, VIPS_IMAGE_SIZEOF_PEL( in ), VipsPel )) ) { g_object_unref( context ); return( NULL ); } memcpy( result, in->data, VIPS_IMAGE_SIZEOF_PEL( in ) ); #ifdef VIPS_DEBUG { int i; printf( "vips__vector_to_ink:\n" ); printf( "\t(real, imag) = " ); for( i = 0; i < n; i++ ) printf( "(%g, %g) ", real[i], imag ? imag[i] : 0 ); printf( "\n" ); printf( "\tink = " ); for( i = 0; i < VIPS_IMAGE_SIZEOF_PEL( in ); i++ ) printf( "%d ", result[i] ); printf( "\n" ); } #endif /*VIPS_DEBUG*/ g_object_unref( context ); return( result ); } static void vips__vector_to_ink_cb( VipsObject *object, char *buf ) { g_free( buf ); } /* Calculate a pixel for an image from a vec of double. Valid while im is * valid. */ VipsPel * vips__vector_to_ink( const char *domain, VipsImage *im, double *real, double *imag, int n ) { int bands; VipsBandFormat format; VipsPel *result; vips_image_decode_predict( im, &bands, &format ); if( !(result = vips__vector_to_pels( domain, bands, format, im->Coding, real, imag, n )) ) return( NULL ); g_signal_connect( im, "postclose", G_CALLBACK( vips__vector_to_ink_cb ), result ); return( result ); } /* The inverse: take ink to a vec of double. Used in the vips7 compat * wrappers. Result valid while im is valid. */ double * vips__ink_to_vector( const char *domain, VipsImage *im, VipsPel *ink, int *n ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( im ), 6 ); double *result; #ifdef VIPS_DEBUG printf( "vips__ink_to_vector: starting\n" ); #endif /*VIPS_DEBUG*/ /* Wrap a VipsImage around ink. */ t[0] = vips_image_new_from_memory( ink, VIPS_IMAGE_SIZEOF_PEL( im ), 1, 1, VIPS_IMAGE_SIZEOF_PEL( im ), VIPS_FORMAT_UCHAR ); if( vips_copy( t[0], &t[1], "bands", im->Bands, "format", im->BandFmt, "coding", im->Coding, "interpretation", im->Type, NULL ) ) return( NULL ); /* The image may be coded .. unpack to double. */ if( vips_image_decode( t[1], &t[2] ) || vips_cast( t[2], &t[3], VIPS_FORMAT_DOUBLE, NULL ) ) return( NULL ); /* To a mem buffer, then copy to out. */ if( !(t[4] = vips_image_new_memory()) || vips_image_write( t[3], t[4] ) ) return( NULL ); if( !(result = VIPS_ARRAY( im, t[4]->Bands, double )) ) return( NULL ); memcpy( result, t[4]->data, VIPS_IMAGE_SIZEOF_PEL( t[4] ) ); *n = t[4]->Bands; #ifdef VIPS_DEBUG { int i; printf( "vips__ink_to_vector:\n" ); printf( "\tink = " ); for( i = 0; i < n; i++ ) printf( "%d ", ink[i] ); printf( "\n" ); printf( "\tvec = " ); for( i = 0; i < *n; i++ ) printf( "%g ", result[i] ); printf( "\n" ); } #endif /*VIPS_DEBUG*/ return( result ); } static int vips_insert_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsInsert *insert = (VipsInsert *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 6 ); VipsImage **arry; if( VIPS_OBJECT_CLASS( vips_insert_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( insert->main ) || vips_image_pio_input( insert->sub ) || vips_check_bands_1orn( class->nickname, insert->main, insert->sub ) || vips_check_coding_known( class->nickname, insert->main ) || vips_check_coding_same( class->nickname, insert->main, insert->sub ) ) return( -1 ); /* Cast our input images up to a common format and bands. */ if( vips__formatalike( insert->main, insert->sub, &t[0], &t[1] ) || vips__bandalike( class->nickname, t[0], t[1], &t[2], &t[3] ) ) return( -1 ); insert->main_processed = t[2]; insert->sub_processed = t[3]; if( !(arry = vips_allocate_input_array( conversion->out, insert->main_processed, insert->sub_processed, NULL )) ) return( -1 ); /* Joins can get very wide (eg. consider joining a set of tiles * horizontally to make a large image), we don't want mem use to shoot * up. SMALLTILE will guarantee we keep small and local. */ if( vips_image_pipeline_array( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, arry ) ) return( -1 ); /* Calculate geometry. */ insert->rmain.left = 0; insert->rmain.top = 0; insert->rmain.width = insert->main_processed->Xsize; insert->rmain.height = insert->main_processed->Ysize; insert->rsub.left = insert->x; insert->rsub.top = insert->y; insert->rsub.width = insert->sub_processed->Xsize; insert->rsub.height = insert->sub_processed->Ysize; if( insert->expand ) { /* Expand output to bounding box of these two. */ vips_rect_unionrect( &insert->rmain, &insert->rsub, &insert->rout ); /* Translate origin to top LH corner of rout. */ insert->rmain.left -= insert->rout.left; insert->rmain.top -= insert->rout.top; insert->rsub.left -= insert->rout.left; insert->rsub.top -= insert->rout.top; insert->rout.left = 0; insert->rout.top = 0; } else insert->rout = insert->rmain; conversion->out->Xsize = insert->rout.width; conversion->out->Ysize = insert->rout.height; if( !(insert->ink = vips__vector_to_ink( class->nickname, conversion->out, (double *) VIPS_ARRAY_ADDR( insert->background, 0 ), NULL, VIPS_AREA( insert->background )->n )) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_many, vips_insert_gen, vips_stop_many, arry, insert ) ) return( -1 ); return( 0 ); } static void vips_insert_class_init( VipsInsertClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_insert_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "insert"; vobject_class->description = _( "insert image @sub into @main at @x, @y" ); vobject_class->build = vips_insert_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "main", 0, _( "Main" ), _( "Main input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsInsert, main ) ); VIPS_ARG_IMAGE( class, "sub", 1, _( "Sub-image" ), _( "Sub-image to insert into main image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsInsert, sub ) ); VIPS_ARG_INT( class, "x", 3, _( "X" ), _( "Left edge of sub in main" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsInsert, x ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "y", 4, _( "Y" ), _( "Top edge of sub in main" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsInsert, y ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_BOOL( class, "expand", 5, _( "Expand" ), _( "Expand output to hold all of both inputs" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsInsert, expand ), FALSE ); VIPS_ARG_BOXED( class, "background", 6, _( "Background" ), _( "Color for new pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsInsert, background ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_insert_init( VipsInsert *insert ) { /* Init our instance fields. */ insert->background = vips_array_double_newv( 1, 0.0 ); } /** * vips_insert: (method) * @main: big image * @sub: small image * @out: (out): output image * @x: left position of @sub * @y: top position of @sub * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @expand: expand output to hold whole of both images * * @background: colour for new pixels * * Insert @sub into @main at position @x, @y. * * Normally @out shows the whole of @main. If @expand is #TRUE then @out is * made large enough to hold all of @main and @sub. * Any areas of @out not coming from * either @main or @sub are set to @background (default 0). * * If @sub overlaps @main, * @sub will appear on top of @main. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * See also: vips_join(), vips_embed(), vips_extract_area(). * * Returns: 0 on success, -1 on error */ int vips_insert( VipsImage *main, VipsImage *sub, VipsImage **out, int x, int y, ... ) { va_list ap; int result; va_start( ap, y ); result = vips_call_split( "insert", ap, main, sub, out, x, y ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/join.c000066400000000000000000000202741361153320700201470ustar00rootroot00000000000000/* join left-right and up-down * * Copyright 1990, 1991: Kirk Martinez, N. Dessipris * Author: Kirk Martinez, N. Dessipris * Written on: 9/6/90 * Modified on: 17/04/1991 * 31/8/93 JC * - args to memcpy() were reversed * 14/11/94 JC * - tided up and ANSIfied * - now accepts IM_CODING_LABQ * - memory leaks removed * - bug in calculation of output Xsize removed (thanks Thomson!) * - bug in checking of image compatibility fixed * 23/10/95 JC * - rewritten in terms of im_insert() * 14/4/04 * - sets Xoffset / Yoffset * 1/2/10 * - gtkdoc * - cleanups * 19/10/11 * - redone as a class * 25/8/17 * - tag as sequential */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsJoin { VipsConversion parent_instance; /* Params. */ VipsImage *in1; VipsImage *in2; VipsDirection direction; gboolean expand; int shim; VipsArea *background; VipsAlign align; } VipsJoin; typedef VipsConversionClass VipsJoinClass; G_DEFINE_TYPE( VipsJoin, vips_join, VIPS_TYPE_CONVERSION ); static int vips_join_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsJoin *join = (VipsJoin *) object; int x, y; VipsImage *t; if( VIPS_OBJECT_CLASS( vips_join_parent_class )->build( object ) ) return( -1 ); /* Stop compiler warnings. */ x = 0; y = 0; switch( join->direction ) { case VIPS_DIRECTION_HORIZONTAL: x = join->in1->Xsize + join->shim; switch( join->align ) { case VIPS_ALIGN_LOW: y = 0; break; case VIPS_ALIGN_CENTRE: y = join->in1->Ysize / 2 - join->in2->Ysize / 2; break; case VIPS_ALIGN_HIGH: y = join->in1->Ysize - join->in2->Ysize; break; default: g_assert_not_reached(); } break; case VIPS_DIRECTION_VERTICAL: y = join->in1->Ysize + join->shim; switch( join->align ) { case VIPS_ALIGN_LOW: x = 0; break; case VIPS_ALIGN_CENTRE: x = join->in1->Xsize / 2 - join->in2->Xsize / 2; break; case VIPS_ALIGN_HIGH: x = join->in1->Xsize - join->in2->Xsize; break; default: g_assert_not_reached(); } break; default: g_assert_not_reached(); } if( vips_insert( join->in1, join->in2, &t, x, y, "expand", TRUE, "background", join->background, NULL ) ) return( -1 ); if( !join->expand ) { VipsImage *t2; int left, top, width, height; switch( join->direction ) { case VIPS_DIRECTION_HORIZONTAL: left = 0; top = VIPS_MAX( 0, y ) - y; width = t->Xsize; height = VIPS_MIN( join->in1->Ysize, join->in2->Ysize ); break; case VIPS_DIRECTION_VERTICAL: left = VIPS_MAX( 0, x ) - x; top = 0; width = VIPS_MIN( join->in1->Xsize, join->in2->Xsize ); height = t->Ysize; break; default: g_assert_not_reached(); /* Stop compiler warnings. */ left = 0; top = 0; width = 0; height = 0; } if( left != 0 || top != 0 || width != t->Xsize || height != t->Ysize ) { if( vips_extract_area( t, &t2, left, top, width, height, NULL ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); t = t2; } } if( vips_image_write( t, conversion->out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static void vips_join_class_init( VipsJoinClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_join_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "join"; vobject_class->description = _( "join a pair of images" ); vobject_class->build = vips_join_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in1", 0, _( "in1" ), _( "First input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsJoin, in1 ) ); VIPS_ARG_IMAGE( class, "in2", 1, _( "in2" ), _( "Second input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsJoin, in2 ) ); VIPS_ARG_ENUM( class, "direction", 3, _( "direction" ), _( "Join left-right or up-down" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsJoin, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); VIPS_ARG_BOOL( class, "expand", 4, _( "Expand" ), _( "Expand output to hold all of both inputs" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsJoin, expand ), FALSE ); VIPS_ARG_INT( class, "shim", 5, _( "Shim" ), _( "Pixels between images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsJoin, shim ), 0, 1000000, 0 ); VIPS_ARG_BOXED( class, "background", 6, _( "Background" ), _( "Colour for new pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsJoin, background ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_ENUM( class, "align", 7, _( "Align" ), _( "Align on the low, centre or high coordinate edge" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsJoin, align ), VIPS_TYPE_ALIGN, VIPS_ALIGN_LOW ); } static void vips_join_init( VipsJoin *join ) { /* Init our instance fields. */ join->background = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), 1 ); ((double *) (join->background->data))[0] = 0.0; } /** * vips_join: * @in1: first input image * @in2: second input image * @out: (out): output image * @direction: join horizontally or vertically * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @expand: %TRUE to expand the output image to hold all of the input pixels * * @shim: space between images, in pixels * * @background: background ink colour * * @align: low, centre or high alignment * * Join @in1 and @in2 together, left-right or up-down depending on the value * of @direction. * * If one is taller or wider than the * other, @out will be has high as the smaller. If @expand is %TRUE, then * the output will be expanded to contain all of the input pixels. * * Use @align to set the edge that the images align on. By default, they align * on the edge with the lower value coordinate. * * Use @background to set the colour of any pixels in @out which are not * present in either @in1 or @in2. * * Use @shim to set the spacing between the images. By default this is 0. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * If you are going to be joining many thousands of images in a regular * grid, vips_arrayjoin() is a better choice. * * See also: vips_arrayjoin(), vips_insert(). * * Returns: 0 on success, -1 on error */ int vips_join( VipsImage *in1, VipsImage *in2, VipsImage **out, VipsDirection direction, ... ) { va_list ap; int result; va_start( ap, direction ); result = vips_call_split( "join", ap, in1, in2, out, direction ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/msb.c000066400000000000000000000153141361153320700177700ustar00rootroot00000000000000/* vips_msb() * * Copyright: 2006, The Nottingham Trent University * * Author: Tom Vajzovic * * Written on: 2006-03-13 * 27/9/06 * - removed extra im_free() in im_copy() fallback * 4/10/06 * - removed warning on uchar fallback: it happens a lot with nip2 and * isn't very serious * 1/2/10 * - revised, cleanups * - gtkdoc * 30/5/13 * - rewrite as a class * - add --band option, remove im_msb_band() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H */ #include #include #include "pconversion.h" #include "bandary.h" typedef struct _VipsMsb { VipsConversion parent_instance; /* Params. */ VipsImage *in; int band; /* Initial input offset. */ int offset; /* Input step. */ int instep; /* Need to convert signed to unsgned. */ gboolean sign; } VipsMsb; typedef VipsConversionClass VipsMsbClass; G_DEFINE_TYPE( VipsMsb, vips_msb, VIPS_TYPE_CONVERSION ); static int vips_msb_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsMsb *msb = (VipsMsb *) b; VipsConversion *conversion = (VipsConversion *) msb; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); int sz = r->width * conversion->out->Bands; int x, y, i; if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = to; y < bo; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); VipsPel *q = VIPS_REGION_ADDR( or, le, y ); if( msb->in->Coding == VIPS_CODING_LABQ && msb->band == -1 ) { /* LABQ, no sub-band select. */ for( x = 0; x < r->width; x++ ) { q[0] = p[0]; q[1] = 0x80 ^ p[1]; q[2] = 0x80 ^ p[2]; q += 4; p += 3; } } else if( msb->sign ) { /* Copy, converting signed to unsigned. */ p += msb->offset; for( i = 0; i < sz; i++ ) { q[i] = 0x80 ^ *p; p += msb->instep; } } else { /* Just pick out bytes. */ p += msb->offset; for( i = 0; i < sz; i++ ) { q[i] = *p; p += msb->instep; } } } return( 0 ); } static int vips_msb_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = (VipsConversion *) object; VipsMsb *msb = (VipsMsb *) object; int vbands; if( VIPS_OBJECT_CLASS( vips_msb_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_noneorlabq( class->nickname, msb->in ) || vips_check_int( class->nickname, msb->in ) ) return( -1 ); /* Effective number of bands this image has. */ vbands = msb->in->Coding == VIPS_CODING_LABQ ? 3 : msb->in->Bands; if( msb->band > vbands - 1 ) { vips_error( class->nickname, "%s", _( "bad band" ) ); return( -1 ); } /* Step to next input element. */ msb->instep = VIPS_IMAGE_SIZEOF_ELEMENT( msb->in ); /* Offset into first band element of high order byte. */ msb->offset = vips_amiMSBfirst() ? 0 : VIPS_IMAGE_SIZEOF_ELEMENT( msb->in ) - 1; /* If we're picking out a band, they need scaling up. */ if( msb->band != -1 ) { msb->offset += VIPS_IMAGE_SIZEOF_ELEMENT( msb->in ) * msb->band; msb->instep *= msb->in->Bands; } /* May need to flip sign if we're picking out a band from labq. */ if( msb->in->Coding == VIPS_CODING_LABQ && msb->band > 0 ) msb->sign = TRUE; if( msb->in->Coding == VIPS_CODING_NONE && !vips_band_format_isuint( msb->in->BandFmt ) ) msb->sign = TRUE; if( msb->band == -1 && msb->in->BandFmt == VIPS_FORMAT_UCHAR ) return( vips_image_write( msb->in, conversion->out ) ); if( msb->band == 0 && msb->in->Bands == 1 && msb->in->BandFmt == VIPS_FORMAT_UCHAR ) return( vips_image_write( msb->in, conversion->out ) ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, msb->in, NULL ) ) return( -1 ); if( msb->band != -1 ) conversion->out->Bands = 1; else conversion->out->Bands = vbands; conversion->out->BandFmt = VIPS_FORMAT_UCHAR; conversion->out->Coding = VIPS_CODING_NONE; if( conversion->out->Bands == 1 ) conversion->out->Type = VIPS_INTERPRETATION_B_W; else conversion->out->Type = VIPS_INTERPRETATION_MULTIBAND; if( vips_image_generate( conversion->out, vips_start_one, vips_msb_gen, vips_stop_one, msb->in, msb ) ) return( -1 ); return( 0 ); } static void vips_msb_class_init( VipsMsbClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "msb"; vobject_class->description = _( "pick most-significant byte from an image" ); vobject_class->build = vips_msb_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMsb, in ) ); VIPS_ARG_INT( class, "band", 3, _( "Band" ), _( "Band to msb" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMsb, band ), 0, 100000000, 0 ); } static void vips_msb_init( VipsMsb *msb ) { msb->band = -1; } /** * vips_msb: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @band: %gint, msb just this band * * Turn any integer image to 8-bit unsigned char by discarding all but the most * significant byte. Signed values are converted to unsigned by adding 128. * * Use @band to make a one-band 8-bit image. * * This operator also works for LABQ coding. * * See also: vips_scale(), vips_cast(). * * Returns: 0 on success, -1 on error. */ int vips_msb( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "msb", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/pconversion.h000066400000000000000000000040201361153320700215510ustar00rootroot00000000000000/* base class for all conversion operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PCONVERSION_H #define VIPS_PCONVERSION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_CONVERSION (vips_conversion_get_type()) #define VIPS_CONVERSION( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_CONVERSION, VipsConversion )) #define VIPS_CONVERSION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_CONVERSION, VipsConversionClass)) #define VIPS_IS_CONVERSION( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_CONVERSION )) #define VIPS_IS_CONVERSION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_CONVERSION )) #define VIPS_CONVERSION_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_CONVERSION, VipsConversionClass )) typedef struct _VipsConversion { VipsOperation parent_instance; /* All have an output image. */ VipsImage *out; } VipsConversion; typedef struct _VipsConversionClass { VipsOperationClass parent_class; } VipsConversionClass; GType vips_conversion_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PCONVERSION_H*/ libvips-8.9.1/libvips/conversion/premultiply.c000066400000000000000000000171161361153320700215770ustar00rootroot00000000000000/* premultiply alpha * * Author: John Cupitt * Written on: 7/5/15 * * 11/4/16 Lovell * - fix RGBA path * 25/5/16 * - max_alpha defaults to 65535 for RGB16/GREY16 * 24/11/17 lovell * - match normalised alpha to output type */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsPremultiply { VipsConversion parent_instance; VipsImage *in; double max_alpha; } VipsPremultiply; typedef VipsConversionClass VipsPremultiplyClass; G_DEFINE_TYPE( VipsPremultiply, vips_premultiply, VIPS_TYPE_CONVERSION ); /* Premultiply an n-band image. */ #define PRE_MANY( IN, OUT ) { \ IN * restrict p = (IN *) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < width; x++ ) { \ IN alpha = p[bands - 1]; \ IN clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ OUT nalpha = (OUT) clip_alpha / max_alpha; \ \ for( i = 0; i < bands - 1; i++ ) \ q[i] = p[i] * nalpha; \ q[i] = alpha; \ \ p += bands; \ q += bands; \ } \ } /* Special case for RGBA, it's very common. */ #define PRE_RGBA( IN, OUT ) { \ IN * restrict p = (IN *) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < width; x++ ) { \ IN alpha = p[3]; \ IN clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ OUT nalpha = (OUT) clip_alpha / max_alpha; \ \ q[0] = p[0] * nalpha; \ q[1] = p[1] * nalpha; \ q[2] = p[2] * nalpha; \ q[3] = alpha; \ \ p += 4; \ q += 4; \ } \ } #define PRE( IN, OUT ) { \ if( bands == 4 ) { \ PRE_RGBA( IN, OUT ); \ } \ else { \ PRE_MANY( IN, OUT ); \ } \ } static int vips_premultiply_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsPremultiply *premultiply = (VipsPremultiply *) b; VipsRegion *ir = (VipsRegion *) vseq; VipsImage *im = ir->im; VipsRect *r = &or->valid; int width = r->width; int bands = im->Bands; double max_alpha = premultiply->max_alpha; int x, y, i; if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *out = VIPS_REGION_ADDR( or, r->left, r->top + y ); switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: PRE( unsigned char, float ); break; case VIPS_FORMAT_CHAR: PRE( signed char, float ); break; case VIPS_FORMAT_USHORT: PRE( unsigned short, float ); break; case VIPS_FORMAT_SHORT: PRE( signed short, float ); break; case VIPS_FORMAT_UINT: PRE( unsigned int, float ); break; case VIPS_FORMAT_INT: PRE( signed int, float ); break; case VIPS_FORMAT_FLOAT: PRE( float, float ); break; case VIPS_FORMAT_DOUBLE: PRE( double, double ); break; case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: default: g_assert_not_reached(); } } return( 0 ); } static int vips_premultiply_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsPremultiply *premultiply = (VipsPremultiply *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_premultiply_parent_class )-> build( object ) ) return( -1 ); in = premultiply->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* Trivial case: fall back to copy(). */ if( in->Bands == 1 ) return( vips_image_write( in, conversion->out ) ); if( vips_check_noncomplex( class->nickname, in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); /* Is max-alpha unset? Default to the correct value for this * interpretation. */ if( !vips_object_argument_isset( object, "max_alpha" ) ) if( in->Type == VIPS_INTERPRETATION_GREY16 || in->Type == VIPS_INTERPRETATION_RGB16 ) premultiply->max_alpha = 65535; if( in->BandFmt == VIPS_FORMAT_DOUBLE ) conversion->out->BandFmt = VIPS_FORMAT_DOUBLE; else conversion->out->BandFmt = VIPS_FORMAT_FLOAT; if( vips_image_generate( conversion->out, vips_start_one, vips_premultiply_gen, vips_stop_one, in, premultiply ) ) return( -1 ); return( 0 ); } static void vips_premultiply_class_init( VipsPremultiplyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_premultiply_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "premultiply"; vobject_class->description = _( "premultiply image alpha" ); vobject_class->build = vips_premultiply_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPremultiply, in ) ); VIPS_ARG_DOUBLE( class, "max_alpha", 115, _( "Maximum alpha" ), _( "Maximum value of alpha channel" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsPremultiply, max_alpha ), 0, 100000000, 255 ); } static void vips_premultiply_init( VipsPremultiply *premultiply ) { premultiply->max_alpha = 255.0; } /** * vips_premultiply: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @max_alpha: %gdouble, maximum value for alpha * * Premultiplies any alpha channel. * The final band is taken to be the alpha * and the bands are transformed as: * * |[ * alpha = clip( 0, in[in.bands - 1], @max_alpha ); * norm = alpha / @max_alpha; * out = [in[0] * norm, ..., in[in.bands - 1] * norm, alpha]; * ]| * * So for an N-band image, the first N - 1 bands are multiplied by the clipped * and normalised final band, the final band is clipped. * If there is only a single band, * the image is passed through unaltered. * * The result is * #VIPS_FORMAT_FLOAT unless the input format is #VIPS_FORMAT_DOUBLE, in which * case the output is double as well. * * @max_alpha has the default value 255, or 65535 for images tagged as * #VIPS_INTERPRETATION_RGB16 or * #VIPS_INTERPRETATION_GREY16. * * Non-complex images only. * * See also: vips_unpremultiply(), vips_flatten(). * * Returns: 0 on success, -1 on error */ int vips_premultiply( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "premultiply", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/recomb.c000066400000000000000000000144311361153320700204550ustar00rootroot00000000000000/* recomb.c ... pass an image though a matrix * * 21/6/95 JC * - mildly modernised * 14/3/96 JC * - better error checks, partial * 4/11/09 * - gtkdoc * 9/11/11 * - redo as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsRecomb { VipsConversion parent_instance; VipsImage *in; VipsImage *m; /* Our input matrix as a one-band double. */ VipsImage *coeff; } VipsRecomb; typedef VipsConversionClass VipsRecombClass; G_DEFINE_TYPE( VipsRecomb, vips_recomb, VIPS_TYPE_CONVERSION ); /* Inner loop. */ #define LOOP( IN, OUT ) { \ IN * restrict p = (IN *) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < or->valid.width; x++ ) { \ double * restrict m = VIPS_MATRIX( recomb->coeff, 0, 0 ); \ \ for( v = 0; v < mheight; v++ ) { \ double t; \ \ t = 0.0; \ \ for( u = 0; u < mwidth; u++ ) \ t += m[u] * p[u]; \ \ q[v] = (OUT) t; \ m += mwidth; \ } \ \ p += mwidth; \ q += mheight; \ } \ } static int vips_recomb_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRecomb *recomb = (VipsRecomb *) b; VipsImage *im = recomb->in; int mwidth = recomb->m->Xsize; int mheight = recomb->m->Ysize; int y, x, u, v; if( vips_region_prepare( ir, &or->valid ) ) return( -1 ); for( y = 0; y < or->valid.height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, or->valid.left, or->valid.top + y ); VipsPel *out = VIPS_REGION_ADDR( or, or->valid.left, or->valid.top + y ); switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, float ); break; case VIPS_FORMAT_CHAR: LOOP( signed char, float ); break; case VIPS_FORMAT_USHORT:LOOP( unsigned short, float ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, float ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, float ); break; case VIPS_FORMAT_INT: LOOP( signed int, float ); break; case VIPS_FORMAT_FLOAT: LOOP( float, float ); break; case VIPS_FORMAT_DOUBLE:LOOP( double, double ); break; default: g_assert_not_reached(); } } return( 0 ); } static int vips_recomb_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = (VipsConversion *) object; VipsRecomb *recomb = (VipsRecomb *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_recomb_parent_class )->build( object ) ) return( -1 ); in = recomb->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_check_noncomplex( class->nickname, in ) ) return( -1 ); if( vips_image_pio_input( recomb->m ) || vips_check_uncoded( class->nickname, recomb->m ) || vips_check_noncomplex( class->nickname, recomb->m ) || vips_check_mono( class->nickname, recomb->m ) ) return( -1 ); if( in->Bands != recomb->m->Xsize ) { vips_error( class->nickname, "%s", _( "bands in must equal matrix width" ) ); return( -1 ); } if( vips_check_matrix( class->nickname, recomb->m, &t[1] ) ) return( -1 ); recomb->coeff = t[1]; if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); conversion->out->Bands = recomb->m->Ysize; if( vips_band_format_isint( in->BandFmt ) ) conversion->out->BandFmt = VIPS_FORMAT_FLOAT; if( vips_image_generate( conversion->out, vips_start_one, vips_recomb_gen, vips_stop_one, in, recomb ) ) return( -1 ); return( 0 ); } static void vips_recomb_class_init( VipsRecombClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "recomb"; object_class->description = _( "linear recombination with matrix" ); object_class->build = vips_recomb_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRecomb, in ) ); VIPS_ARG_IMAGE( class, "m", 102, _( "M" ), _( "matrix of coefficients" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRecomb, m ) ); } static void vips_recomb_init( VipsRecomb *recomb ) { } /** * vips_recomb: (method) * @in: input image * @out: (out): output image * @m: recombination matrix * @...: %NULL-terminated list of optional named arguments * * This operation recombines an image's bands. Each pixel in @in is treated as * an n-element vector, where n is the number of bands in @in, and multipled by * the n x m matrix @m to produce the m-band image @out. * * @out is always float, unless @in is double, in which case @out is double * too. No complex images allowed. * * It's useful for various sorts of colour space conversions. * * See also: vips_bandmean(). * * Returns: 0 on success, -1 on error */ int vips_recomb( VipsImage *in, VipsImage **out, VipsImage *m, ... ) { va_list ap; int result; va_start( ap, m ); result = vips_call_split( "recomb", ap, in, out, m ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/replicate.c000066400000000000000000000127501361153320700211600ustar00rootroot00000000000000/* replicate an image x times horizontally and vertically * * JC, 30 sep 03 * * 15/4/04 * - some optimisations for some cases * 1/2/10 * - gtkdoc * 26/10/11 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsReplicate { VipsConversion parent_instance; /* The input image. */ VipsImage *in; int across; int down; } VipsReplicate; typedef VipsConversionClass VipsReplicateClass; G_DEFINE_TYPE( VipsReplicate, vips_replicate, VIPS_TYPE_CONVERSION ); static int vips_replicate_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsImage *in = (VipsImage *) a; VipsRect *r = &or->valid; int twidth = in->Xsize; int theight = in->Ysize; int x, y; VipsRect tile; /* Find top left of tiles we need. */ int xs = (r->left / twidth) * twidth; int ys = (r->top / theight) * theight; /* The tile enclosing the top-left corner of the requested area. */ tile.left = xs; tile.top = ys; tile.width = twidth; tile.height = theight; /* If the request fits inside a single tile, we can just pointer-copy. */ if( vips_rect_includesrect( &tile, r ) ) { VipsRect irect; /* Translate request to input space. */ irect = *r; irect.left -= xs; irect.top -= ys; if( vips_region_prepare( ir, &irect ) ) return( -1 ); if( vips_region_region( or, ir, r, irect.left, irect.top ) ) return( -1 ); return( 0 ); } for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += theight ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += twidth ) { VipsRect paint; /* Whole tile at x, y */ tile.left = x; tile.top = y; tile.width = twidth; tile.height = theight; /* Which parts touch the area of the output we are * building. */ vips_rect_intersectrect( &tile, r, &paint ); /* Translate back to ir coordinates. */ paint.left -= x; paint.top -= y; g_assert( !vips_rect_isempty( &paint ) ); /* Render into or. */ if( vips_region_prepare_to( ir, or, &paint, paint.left + x, paint.top + y ) ) return( -1 ); } return( 0 ); } static int vips_replicate_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsReplicate *replicate = (VipsReplicate *) object; if( VIPS_OBJECT_CLASS( vips_replicate_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( replicate->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, replicate->in, NULL ) ) return( -1 ); conversion->out->Xsize *= replicate->across; conversion->out->Ysize *= replicate->down; if( vips_image_generate( conversion->out, vips_start_one, vips_replicate_gen, vips_stop_one, replicate->in, replicate ) ) return( -1 ); return( 0 ); } static void vips_replicate_class_init( VipsReplicateClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_replicate_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "replicate"; vobject_class->description = _( "replicate an image" ); vobject_class->build = vips_replicate_build; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsReplicate, in ) ); VIPS_ARG_INT( class, "across", 4, _( "Across" ), _( "Repeat this many times horizontally" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsReplicate, across ), 1, 1000000, 1 ); VIPS_ARG_INT( class, "down", 5, _( "Down" ), _( "Repeat this many times vertically" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsReplicate, down ), 1, 1000000, 1 ); } static void vips_replicate_init( VipsReplicate *replicate ) { } /** * vips_replicate: (method) * @in: input image * @out: (out): output image * @across: repeat input this many times across * @down: repeat input this many times down * @...: %NULL-terminated list of optional named arguments * * Repeats an image many times. * * See also: vips_extract_area(). * * Returns: 0 on success, -1 on error */ int vips_replicate( VipsImage *in, VipsImage **out, int across, int down, ... ) { va_list ap; int result; va_start( ap, down ); result = vips_call_split( "replicate", ap, in, out, across, down ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/rot.c000066400000000000000000000235071361153320700200160ustar00rootroot00000000000000/* rotate by 0/90/180/270 degrees * * Copyright: 1991, N. Dessipris * Written on: 28/10/91 * Updated on: 2/4/92, J.Cupitt * bugs in im_la90rot fixed, now works for any type. * 19/7/93 JC * - IM_CODING_LABQ allowed now * 15/11/94 JC * - name changed * - memory leaks fixed * 8/2/95 JC * - oops! memory allocation problem fixed * 18/5/95 JC * - IM_MAXLINES increased * 13/8/96 JC * - rewritten for partials * 6/11/02 JC * - speed-up ... replace memcpy() with a loop for small pixels * 14/4/04 * - sets Xoffset / Yoffset * 24/3/09 * - added IM_CODING_RAD support * 1/2/10 * - cleanups * - gtkdoc * 4/11/11 * - rewrite as a class * 7/3/17 * - added 90/180/270 convenience functions */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsRot { VipsConversion parent_instance; /* The input image. */ VipsImage *in; /* Rotate by ... */ VipsAngle angle; } VipsRot; typedef VipsConversionClass VipsRotClass; G_DEFINE_TYPE( VipsRot, vips_rot, VIPS_TYPE_CONVERSION ); static int vips_rot90_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsImage *in = (VipsImage *) a; /* Output area. */ VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT(r); int to = r->top; int bo = VIPS_RECT_BOTTOM(r); int x, y, i; /* Pixel geometry. */ int ps, ls; /* Find the area of the input image we need. */ VipsRect need; need.left = to; need.top = in->Ysize - ri; need.width = r->height; need.height = r->width; if( vips_region_prepare( ir, &need ) ) return( -1 ); /* Find PEL size and line skip for ir. */ ps = VIPS_IMAGE_SIZEOF_PEL( in ); ls = VIPS_REGION_LSKIP( ir ); /* Rotate the bit we now have. */ for( y = to; y < bo; y++ ) { /* Start of this output line. */ VipsPel *q = VIPS_REGION_ADDR( or, le, y ); /* Corresponding position in ir. */ VipsPel *p = VIPS_REGION_ADDR( ir, need.left + y - to, need.top + need.height - 1 ); for( x = le; x < ri; x++ ) { for( i = 0; i < ps; i++ ) q[i] = p[i]; q += ps; p -= ls; } } return( 0 ); } static int vips_rot180_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsImage *in = (VipsImage *) a; /* Output area. */ VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT(r); int to = r->top; int bo = VIPS_RECT_BOTTOM(r); int x, y; /* Pixel geometry. */ int ps; /* Find the area of the input image we need. */ VipsRect need; need.left = in->Xsize - ri; need.top = in->Ysize - bo; need.width = r->width; need.height = r->height; if( vips_region_prepare( ir, &need ) ) return( -1 ); /* Find PEL size and line skip for ir. */ ps = VIPS_IMAGE_SIZEOF_PEL( in ); /* Rotate the bit we now have. */ for( y = to; y < bo; y++ ) { /* Start of this output line. */ VipsPel *q = VIPS_REGION_ADDR( or, le, y ); /* Corresponding position in ir. */ VipsPel *p = VIPS_REGION_ADDR( ir, need.left + need.width - 1, need.top + need.height - (y - to) - 1 ); /* Blap across! */ for( x = le; x < ri; x++ ) { memcpy( q, p, ps ); q += ps; p -= ps; } } return( 0 ); } static int vips_rot270_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsImage *in = (VipsImage *) a; /* Output area. */ VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT(r); int to = r->top; int bo = VIPS_RECT_BOTTOM(r); int x, y, i; /* Pixel geometry. */ int ps, ls; /* Find the area of the input image we need. */ VipsRect need; need.left = in->Xsize - bo; need.top = le; need.width = r->height; need.height = r->width; if( vips_region_prepare( ir, &need ) ) return( -1 ); /* Find PEL size and line skip for ir. */ ps = VIPS_IMAGE_SIZEOF_PEL( in ); ls = VIPS_REGION_LSKIP( ir ); /* Rotate the bit we now have. */ for( y = to; y < bo; y++ ) { /* Start of this output line. */ VipsPel *q = VIPS_REGION_ADDR( or, le, y ); /* Corresponding position in ir. */ VipsPel *p = VIPS_REGION_ADDR( ir, need.left + need.width - (y - to) - 1, need.top ); for( x = le; x < ri; x++ ) { for( i = 0; i < ps; i++ ) q[i] = p[i]; q += ps; p += ls; } } return( 0 ); } static int vips_rot_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsRot *rot = (VipsRot *) object; VipsGenerateFn generate_fn; VipsDemandStyle hint; if( VIPS_OBJECT_CLASS( vips_rot_parent_class )->build( object ) ) return( -1 ); if( rot->angle == VIPS_ANGLE_D0 ) return( vips_image_write( rot->in, conversion->out ) ); if( vips_image_pio_input( rot->in ) ) return( -1 ); hint = rot->angle == VIPS_ANGLE_D180 ? VIPS_DEMAND_STYLE_THINSTRIP : VIPS_DEMAND_STYLE_SMALLTILE; if( vips_image_pipelinev( conversion->out, hint, rot->in, NULL ) ) return( -1 ); switch( rot->angle ) { case VIPS_ANGLE_D90: generate_fn = vips_rot90_gen; conversion->out->Xsize = rot->in->Ysize; conversion->out->Ysize = rot->in->Xsize; conversion->out->Xoffset = rot->in->Ysize; conversion->out->Yoffset = 0; break; case VIPS_ANGLE_D180: generate_fn = vips_rot180_gen; conversion->out->Xoffset = rot->in->Xsize; conversion->out->Yoffset = rot->in->Ysize; break; case VIPS_ANGLE_D270: generate_fn = vips_rot270_gen; conversion->out->Xsize = rot->in->Ysize; conversion->out->Ysize = rot->in->Xsize; conversion->out->Xoffset = 0; conversion->out->Yoffset = rot->in->Xsize; break; default: g_assert_not_reached(); /* Stop compiler warnings. */ generate_fn = NULL; } if( vips_image_generate( conversion->out, vips_start_one, generate_fn, vips_stop_one, rot->in, rot ) ) return( -1 ); return( 0 ); } static void vips_rot_class_init( VipsRotClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_rot_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "rot"; vobject_class->description = _( "rotate an image" ); vobject_class->build = vips_rot_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRot, in ) ); VIPS_ARG_ENUM( class, "angle", 6, _( "Angle" ), _( "Angle to rotate image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRot, angle ), VIPS_TYPE_ANGLE, VIPS_ANGLE_D90 ); } static void vips_rot_init( VipsRot *rot ) { } static int vips_rotv( VipsImage *in, VipsImage **out, VipsAngle angle, va_list ap ) { return( vips_call_split( "rot", ap, in, out, angle ) ); } /** * vips_rot: (method) * @in: input image * @out: (out): output image * @angle: rotation angle * @...: %NULL-terminated list of optional named arguments * * Rotate @in by a multiple of 90 degrees. * * Use vips_similarity() to rotate by an arbitary angle. vips_rot45() is * useful for rotating convolution masks by 45 degrees. * * See also: vips_flip(), vips_similarity(), vips_rot45(). * * Returns: 0 on success, -1 on error */ int vips_rot( VipsImage *in, VipsImage **out, VipsAngle angle, ... ) { va_list ap; int result; va_start( ap, angle ); result = vips_rotv( in, out, angle, ap ); va_end( ap ); return( result ); } /** * vips_rot90: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Rotate @in by 90 degress clockwise. A convenience function over vips_rot(). * * See also: vips_rot(). * * Returns: 0 on success, -1 on error */ int vips_rot90( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_rotv( in, out, VIPS_ANGLE_D90, ap ); va_end( ap ); return( result ); } /** * vips_rot180: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Rotate @in by 180 degress. A convenience function over vips_rot(). * * See also: vips_rot(). * * Returns: 0 on success, -1 on error */ int vips_rot180( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_rotv( in, out, VIPS_ANGLE_D180, ap ); va_end( ap ); return( result ); } /** * vips_rot270: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Rotate @in by 270 degress clockwise. A convenience function over vips_rot(). * * See also: vips_rot(). * * Returns: 0 on success, -1 on error */ int vips_rot270( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_rotv( in, out, VIPS_ANGLE_D270, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/rot45.c000066400000000000000000000156021361153320700201640ustar00rootroot00000000000000/* 'lossless' 45 degree rotate ... odd-sized square images only * * Author: N. Dessipris (Copyright, N. Dessipris 1991) * Written on: 08/05/1991 * Modified on: 28/05/1991 * 12/10/95 JC * - small revisions, needs rewriting really * 7/8/96 JC * - absolutely foul desp code revised * - many bugs and mem leaks fixed * 1/3/99 JC * - oops, fns were not preserving scale and offset * 1/12/10 * - allow any size mask for the 90 degree rot45ates by using im_rot4590(). * 12/10/13 * - rewritten as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsRot45 { VipsConversion parent_instance; /* The input image. */ VipsImage *in; /* Rotate by ... */ VipsAngle45 angle; } VipsRot45; typedef VipsConversionClass VipsRot45Class; G_DEFINE_TYPE( VipsRot45, vips_rot45, VIPS_TYPE_CONVERSION ); #define COPY( Q, P ) { \ VipsPel *q = (Q); \ VipsPel *p = (P); \ int b;\ \ for( b = 0; b < ps; b++ )\ q[b] = p[b];\ } #define ASSIGN( Xout, Yout, Xin, Yin ) \ COPY( VIPS_IMAGE_ADDR( out, Xout, Yout ), \ VIPS_IMAGE_ADDR( in, Xin, Yin ) ) #define POINT_TO_TEMP( q, Xin, Yin ) \ COPY( q, VIPS_IMAGE_ADDR( in, Xin, Yin ) ) #define TEMP_TO_POINT( Xout, Yout, p ) \ COPY( VIPS_IMAGE_ADDR( out, Xout, Yout ), p ) /* This can work inplace, ie. in == out is allowed. */ static void vips_rot45_rot45( VipsImage *out, VipsImage *in ) { size_t ps = VIPS_IMAGE_SIZEOF_PEL( in ); VipsPel *temp = VIPS_ARRAY( in, ps, VipsPel ); int size = in->Xsize; int size_2 = size / 2; int x, y; g_assert( in->Xsize == in->Ysize ); g_assert( out->Xsize == out->Ysize ); g_assert( in->Xsize == out->Xsize ); g_assert( in->Xsize % 2 == 1 ); /* Split the square into 8 triangles. Loop over the top-left one, * reflect to index the others. * * 1 1 2 2 3 * 8 1 2 3 3 * 8 8 x 4 4 * 7 7 6 5 4 * 7 6 6 5 5 * * do the centre separately. */ for( y = 0; y < size_2; y++ ) for( x = y; x < size_2; x++ ) { /* Save 1, it goes into 2 at the end. */ POINT_TO_TEMP( temp, x, y ); /* Fill 1 from 8. */ ASSIGN( x, y, y, size_2 - (x - y) ); /* 8 from 7. */ ASSIGN( y, size_2 - (x - y), y, (size - 1) - x ); /* 7 from 6. */ ASSIGN( y, (size - 1) - x, size_2 - (x - y), (size - 1) - y ); /* 6 from 5. */ ASSIGN( size_2 - (x - y), (size - 1) - y, (size - 1) - x, (size - 1) - y ); /* 5 from 4. */ ASSIGN( (size - 1) - x, (size - 1) - y, (size - 1) - y, (x - y) + size_2 ); /* 4 from 3. */ ASSIGN( (size - 1) - y, (x - y) + size_2, (size - 1) - y, x ); /* 3 from 2. */ ASSIGN( (size - 1) - y, x, (x - y) + size_2, y ); /* 2 from saved 1. */ TEMP_TO_POINT( (x - y) + size_2, y, temp ); } /* Centre. */ ASSIGN( size_2, size_2, size_2, size_2 ); } static int vips_rot45_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsRot45 *rot45 = (VipsRot45 *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_rot45_parent_class )->build( object ) ) return( -1 ); if( vips_check_oddsquare( class->nickname, rot45->in ) ) return( -1 ); if( rot45->angle == VIPS_ANGLE45_D0 ) return( vips_image_write( rot45->in, conversion->out ) ); if( !(t[1] = vips_image_copy_memory( rot45->in )) ) return( -1 ); in = t[1]; t[0] = vips_image_new_memory(); if( vips_image_pipelinev( t[0], VIPS_DEMAND_STYLE_ANY, rot45->in, NULL ) ) return( -1 ); if( vips_image_write_prepare( t[0] ) ) return( -1 ); switch( rot45->angle ) { case VIPS_ANGLE45_D315: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D270: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D225: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D180: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D135: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D90: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D45: vips_rot45_rot45( t[0], in ); in = t[0]; break; default: g_assert_not_reached(); } if( vips_image_write( in, conversion->out ) ) return( -1 ); return( 0 ); } static void vips_rot45_class_init( VipsRot45Class *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_rot45_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "rot45"; vobject_class->description = _( "rotate an image" ); vobject_class->build = vips_rot45_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRot45, in ) ); VIPS_ARG_ENUM( class, "angle", 6, _( "Angle" ), _( "Angle to rotate image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsRot45, angle ), VIPS_TYPE_ANGLE45, VIPS_ANGLE45_D45 ); } static void vips_rot45_init( VipsRot45 *rot45 ) { rot45->angle = VIPS_ANGLE45_D45; } /** * vips_rot45: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @angle: #VipsAngle45 rotation angle * * Rotate @in by a multiple of 45 degrees. Odd-length sides and square images * only. * * This operation is useful for rotating convolution masks. Use * vips_similarity() to rotate images by arbitrary angles. * * See also: vips_rot(), vips_similarity(). * * Returns: 0 on success, -1 on error */ int vips_rot45( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "rot45", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/scale.c000066400000000000000000000117241361153320700202770ustar00rootroot00000000000000/* im_scale * * Author: John Cupitt * Written on: 22/4/93 * Modified on: * 30/6/93 JC * - adapted for partial v2 * - ANSI * 31/8/93 JC * - calculation of offset now includes scale * 8/5/06 * - set Type on output too * 16/10/06 * - what? no, don't set Type, useful to be able to scale histograms, for * example * 1/2/10 * - gtkdoc * 30/5/13 * - redo as a class * - add log scale and exponent as an option * 14/1/14 * - use linear uchar mode * 14/7/14 * - round to nearest on uchar output * 29/12/18 kleisauke * - ... and round to nearest in log mode too */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pconversion.h" typedef struct _VipsScale { VipsConversion parent_instance; VipsImage *in; gboolean log; double exp; } VipsScale; typedef VipsConversionClass VipsScaleClass; G_DEFINE_TYPE( VipsScale, vips_scale, VIPS_TYPE_CONVERSION ); static int vips_scale_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsScale *scale = (VipsScale *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); double mx; double mn; if( VIPS_OBJECT_CLASS( vips_scale_parent_class )->build( object ) ) return( -1 ); if( vips_stats( scale->in, &t[0], NULL ) ) return( -1 ); mn = *VIPS_MATRIX( t[0], 0, 0 ); mx = *VIPS_MATRIX( t[0], 1, 0 ); if( mn == mx ) { /* Range of zero: just return black. */ if( vips_black( &t[1], scale->in->Xsize, scale->in->Ysize, "bands", scale->in->Bands, NULL ) || vips_image_write( t[1], conversion->out ) ) return( -1 ); } else if( scale->log ) { double f = 255.0 / log10( 1.0 + pow( mx, scale->exp ) ); if( vips_pow_const1( scale->in, &t[2], scale->exp, NULL ) || vips_linear1( t[2], &t[3], 1.0, 1.0, NULL ) || vips_log10( t[3], &t[4], NULL ) || /* Add 0.5 to get round to nearest. */ vips_linear1( t[4], &t[5], f, 0.5, "uchar", TRUE, NULL ) || vips_image_write( t[5], conversion->out ) ) return( -1 ); } else { double f = 255.0 / (mx - mn); /* Add .5 to get round-to-nearest. */ double a = -(mn * f) + 0.5; if( vips_linear1( scale->in, &t[2], f, a, "uchar", TRUE, NULL ) || vips_image_write( t[2], conversion->out ) ) return( -1 ); } return( 0 ); } static void vips_scale_class_init( VipsScaleClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "scale"; vobject_class->description = _( "scale an image to uchar" ); vobject_class->build = vips_scale_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsScale, in ) ); VIPS_ARG_BOOL( class, "log", 3, _( "Log" ), _( "Log scale" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsScale, log ), FALSE ); VIPS_ARG_DOUBLE( class, "exp", 3, _( "Exponent" ), _( "Exponent for log scale" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsScale, exp ), 0.00001, 10000, 0.25 ); } static void vips_scale_init( VipsScale *scale ) { scale->exp = 0.25; } /** * vips_scale: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @log: log scale pixels * * @exp: exponent for log scale * * Search the image for the maximum and minimum value, then return the image * as unsigned 8-bit, scaled so that the maximum value is 255 and the * minimum is zero. * * If @log is set, transform with log10(1.0 + pow(x, @exp)) + .5, * then scale so max == 255. By default, @exp is 0.25. * * See also: vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_scale( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "scale", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/sequential.c000066400000000000000000000174701361153320700213660ustar00rootroot00000000000000/* Like copy, but ensure sequential access. * * Handy with sequential for loading files formats which are strictly * top-to-bottom, like PNG. * * 15/2/12 * - from VipsForeignLoad * 14/7/12 * - support skip forwards as well, so we can do extract/insert * 10/8/12 * - add @trace option * 21/8/12 * - remove skip forward, instead do thread stalling and have an * integrated cache * - use linecache * 4/9/12 * - stop all threads on error * - don't stall forever, just delay ahead threads * 25/2/14 * - we were allowing skipahead if the first request was for y>0, but * this broke on some busy, many-core systems, see comment below * 10/6/14 * - re-enable skipahead now we have the single-thread-first-tile idea * 6/3/17 * - deprecate @trace, @access now seq is much simpler */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a cache of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG_GREEN #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsSequential { VipsConversion parent_instance; VipsImage *in; int tile_height; VipsAccess access; gboolean trace; /* Lock access to y_pos with this. */ GMutex *lock; /* The next read from our source will fetch this scanline, ie. it's 0 * when we start. */ int y_pos; /* If one thread gets an error, we must stop all threads, otherwise we * can stall and never wake. */ int error; } VipsSequential; typedef VipsConversionClass VipsSequentialClass; G_DEFINE_TYPE( VipsSequential, vips_sequential, VIPS_TYPE_CONVERSION ); static void vips_sequential_dispose( GObject *gobject ) { VipsSequential *sequential = (VipsSequential *) gobject; VIPS_FREEF( vips_g_mutex_free, sequential->lock ); G_OBJECT_CLASS( vips_sequential_parent_class )->dispose( gobject ); } static int vips_sequential_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsSequential *sequential = (VipsSequential *) b; VipsRect *r = &or->valid; VipsRegion *ir = (VipsRegion *) seq; if( sequential->trace ) printf( "vips_sequential_generate %p: " "request for line %d, height %d\n", sequential, r->top, r->height ); VIPS_GATE_START( "vips_sequential_generate: wait" ); g_mutex_lock( sequential->lock ); VIPS_GATE_STOP( "vips_sequential_generate: wait" ); /* If we've seen an error, everything must stop. */ if( sequential->error ) { g_mutex_unlock( sequential->lock ); return( -1 ); } if( r->top > sequential->y_pos ) { /* This is a request for something some way down the image. * Probably the operation is something like extract_area and * we should skip the initial part of the image. In fact, * we read to cache, since it may be useful. */ VipsRect area; if( sequential->trace ) printf( "vips_sequential_generate %p: " "skipping to line %d ...\n", sequential, r->top ); area.left = 0; area.top = sequential->y_pos; area.width = 1; area.height = r->top - sequential->y_pos; if( vips_region_prepare( ir, &area ) ) { sequential->error = -1; g_mutex_unlock( sequential->lock ); return( -1 ); } sequential->y_pos = VIPS_RECT_BOTTOM( &area ); } /* This is a request for old or present pixels -- serve from cache. * This may trigger further, sequential reads. */ if( vips_region_prepare( ir, r ) || vips_region_region( or, ir, r, r->left, r->top ) ) { sequential->error = -1; g_mutex_unlock( sequential->lock ); return( -1 ); } sequential->y_pos = VIPS_MAX( sequential->y_pos, VIPS_RECT_BOTTOM( r ) ); g_mutex_unlock( sequential->lock ); return( 0 ); } static int vips_sequential_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsSequential *sequential = (VipsSequential *) object; VipsImage *t; VIPS_DEBUG_MSG( "vips_sequential_build\n" ); if( VIPS_OBJECT_CLASS( vips_sequential_parent_class )->build( object ) ) return( -1 ); if( vips_linecache( sequential->in, &t, "tile_height", sequential->tile_height, "access", VIPS_ACCESS_SEQUENTIAL, /* We need seq caches to persist across minimise in case * someone is trying to read an image with a series of crop * operations. */ "persistent", TRUE, NULL ) ) return( -1 ); vips_object_local( object, t ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, t, NULL ) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_one, vips_sequential_generate, vips_stop_one, t, sequential ) ) return( -1 ); return( 0 ); } static void vips_sequential_class_init( VipsSequentialClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_sequential_class_init\n" ); gobject_class->dispose = vips_sequential_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "sequential"; vobject_class->description = _( "check sequential access" ); vobject_class->build = vips_sequential_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSequential, in ) ); VIPS_ARG_INT( class, "tile_height", 3, _( "Tile height" ), _( "Tile height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSequential, tile_height ), 1, 1000000, 1 ); VIPS_ARG_ENUM( class, "access", 6, _( "Strategy" ), _( "Expected access pattern" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsSequential, access ), VIPS_TYPE_ACCESS, VIPS_ACCESS_SEQUENTIAL ); VIPS_ARG_BOOL( class, "trace", 2, _( "trace" ), _( "trace pixel requests" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsSequential, trace ), TRUE ); } static void vips_sequential_init( VipsSequential *sequential ) { sequential->lock = vips_g_mutex_new(); sequential->tile_height = 1; sequential->error = 0; sequential->trace = FALSE; } /** * vips_sequential: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @strip_height: height of cache strips * * This operation behaves rather like vips_copy() between images * @in and @out, except that it checks that pixels on @in are only requested * top-to-bottom. This operation is useful for loading file formats which are * strictly top-to-bottom, like PNG. * * @strip_height can be used to set the size of the tiles that * vips_sequential() uses. The default value is 1. * * See also: vips_cache(), vips_linecache(), vips_tilecache(). * * Returns: 0 on success, -1 on error. */ int vips_sequential( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "sequential", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/smartcrop.c000066400000000000000000000267711361153320700212320ustar00rootroot00000000000000/* crop an image down to a specified size by removing boring parts * * Adapted from sharp's smartcrop feature, with kind permission. * * 1/3/17 * - first version, from sharp * 14/3/17 * - revised attention smartcrop * 8/6/17 * - revised again * 15/9/18 lovell * - move shrink to start of processing * 22/9/18 jcupitt * - add low and high */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pconversion.h" #include "bandary.h" typedef struct _VipsSmartcrop { VipsConversion parent_instance; VipsImage *in; int width; int height; VipsInteresting interesting; } VipsSmartcrop; typedef VipsConversionClass VipsSmartcropClass; G_DEFINE_TYPE( VipsSmartcrop, vips_smartcrop, VIPS_TYPE_CONVERSION ); static int vips_smartcrop_score( VipsSmartcrop *smartcrop, VipsImage *in, int left, int top, int width, int height, double *score ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( smartcrop ), 2 ); if( vips_extract_area( in, &t[0], left, top, width, height, NULL ) || vips_hist_find( t[0], &t[1], NULL ) || vips_hist_entropy( t[1], score, NULL ) ) return( -1 ); return( 0 ); } /* Entropy-style smartcrop. Repeatedly discard low interest areas. This should * be faster for very large images. */ static int vips_smartcrop_entropy( VipsSmartcrop *smartcrop, VipsImage *in, int *left, int *top ) { int max_slice_size; int width; int height; *left = 0; *top = 0; width = in->Xsize; height = in->Ysize; /* How much do we trim by each iteration? Aim for 8 steps in the axis * that needs trimming most. */ max_slice_size = VIPS_MAX( ceil( (width - smartcrop->width) / 8.0 ), ceil( (height - smartcrop->height) / 8.0 ) ); /* Repeatedly take a slice off width and height until we * reach the target. */ while( width > smartcrop->width || height > smartcrop->height ) { const int slice_width = VIPS_MIN( width - smartcrop->width, max_slice_size ); const int slice_height = VIPS_MIN( height - smartcrop->height, max_slice_size ); if( slice_width > 0 ) { double left_score; double right_score; if( vips_smartcrop_score( smartcrop, in, *left, *top, slice_width, height, &left_score ) ) return( -1 ); if( vips_smartcrop_score( smartcrop, in, *left + width - slice_width, *top, slice_width, height, &right_score ) ) return( -1 ); width -= slice_width; if( left_score < right_score ) *left += slice_width; } if( slice_height > 0 ) { double top_score; double bottom_score; if( vips_smartcrop_score( smartcrop, in, *left, *top, width, slice_height, &top_score ) ) return( -1 ); if( vips_smartcrop_score( smartcrop, in, *left, *top + height - slice_height, width, slice_height, &bottom_score ) ) return( -1 ); height -= slice_height; if( top_score < bottom_score ) *top += slice_height; } } return( 0 ); } /* Calculate sqrt(b1^2 + b2^2 ...) */ static int pythagoras( VipsSmartcrop *smartcrop, VipsImage *in, VipsImage **out ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( smartcrop ), 2 * in->Bands + 1 ); int i; for( i = 0; i < in->Bands; i++ ) if( vips_extract_band( in, &t[i], i, NULL ) ) return( -1 ); for( i = 0; i < in->Bands; i++ ) if( vips_multiply( t[i], t[i], &t[i + in->Bands], NULL ) ) return( -1 ); if( vips_sum( &t[in->Bands], &t[2 * in->Bands], in->Bands, NULL ) || vips_pow_const1( t[2 * in->Bands], out, 0.5, NULL ) ) return( -1 ); return( 0 ); } static int vips_smartcrop_attention( VipsSmartcrop *smartcrop, VipsImage *in, int *left, int *top ) { /* From smartcrop.js. */ static double skin_vector[] = {-0.78, -0.57, -0.44}; static double ones[] = {1.0, 1.0, 1.0}; VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( smartcrop ), 24 ); double hscale; double vscale; double sigma; double max; int x_pos; int y_pos; /* The size we shrink to gives the precision with which we can place * the crop */ hscale = 32.0 / in->Xsize; vscale = 32.0 / in->Ysize; sigma = VIPS_MAX( sqrt( pow( smartcrop->width * hscale, 2 ) + pow( smartcrop->height * vscale, 2 ) ) / 10, 1.0 ); if ( vips_resize( in, &t[17], hscale, "vscale", vscale, NULL ) ) return( -1 ); /* Simple edge detect. */ if( !(t[21] = vips_image_new_matrixv( 3, 3, 0.0, -1.0, 0.0, -1.0, 4.0, -1.0, 0.0, -1.0, 0.0 )) ) return( -1 ); /* Convert to XYZ and just use the first three bands. */ if( vips_colourspace( t[17], &t[0], VIPS_INTERPRETATION_XYZ, NULL ) || vips_extract_band( t[0], &t[1], 0, "n", 3, NULL ) ) return( -1 ); /* Edge detect on Y. */ if( vips_extract_band( t[1], &t[2], 1, NULL ) || vips_conv( t[2], &t[3], t[21], "precision", VIPS_PRECISION_INTEGER, NULL ) || vips_linear1( t[3], &t[4], 5.0, 0.0, NULL ) || vips_abs( t[4], &t[14], NULL ) ) return( -1 ); /* Look for skin colours. Taken from smartcrop.js. */ if( /* Normalise to magnitude of colour in XYZ. */ pythagoras( smartcrop, t[1], &t[5] ) || vips_divide( t[1], t[5], &t[6], NULL ) || /* Distance from skin point. */ vips_linear( t[6], &t[7], ones, skin_vector, 3, NULL ) || pythagoras( smartcrop, t[7], &t[8] ) || /* Rescale to 100 - 0 score. */ vips_linear1( t[8], &t[9], -100.0, 100.0, NULL ) || /* Ignore dark areas. */ vips_more_const1( t[2], &t[10], 5.0, NULL ) || !(t[11] = vips_image_new_from_image1( t[10], 0.0 )) || vips_ifthenelse( t[10], t[9], t[11], &t[15], NULL ) ) return( -1 ); /* Look for saturated areas. */ if( vips_colourspace( t[1], &t[12], VIPS_INTERPRETATION_LAB, NULL ) || vips_extract_band( t[12], &t[13], 1, NULL ) || vips_ifthenelse( t[10], t[13], t[11], &t[16], NULL ) ) return( -1 ); /* Sum, blur and find maxpos. * * The amount of blur is related to the size of the crop * area: how large an area we want to consider for the scoring * function. */ if( vips_sum( &t[14], &t[18], 3, NULL ) || vips_gaussblur( t[18], &t[19], sigma, NULL ) || vips_max( t[19], &max, "x", &x_pos, "y", &y_pos, NULL ) ) return( -1 ); /* Centre the crop over the max. */ *left = VIPS_CLIP( 0, x_pos / hscale - smartcrop->width / 2, in->Xsize - smartcrop->width ); *top = VIPS_CLIP( 0, y_pos / vscale - smartcrop->height / 2, in->Ysize - smartcrop->height ); return( 0 ); } static int vips_smartcrop_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsSmartcrop *smartcrop = (VipsSmartcrop *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; int left; int top; if( VIPS_OBJECT_CLASS( vips_smartcrop_parent_class )-> build( object ) ) return( -1 ); if( smartcrop->width > smartcrop->in->Xsize || smartcrop->height > smartcrop->in->Ysize || smartcrop->width <= 0 || smartcrop->height <= 0 ) { vips_error( class->nickname, "%s", _( "bad extract area" ) ); return( -1 ); } in = smartcrop->in; /* If there's an alpha, we have to premultiply before searching for * content. There could be stuff in transparent areas which we don't * want to consider. */ if( vips_image_hasalpha( in ) ) { if( vips_premultiply( in, &t[0], NULL ) ) return( -1 ); in = t[0]; } switch( smartcrop->interesting ) { case VIPS_INTERESTING_NONE: case VIPS_INTERESTING_LOW: left = 0; top = 0; break; case VIPS_INTERESTING_CENTRE: left = (smartcrop->in->Xsize - smartcrop->width) / 2; top = (smartcrop->in->Ysize - smartcrop->height) / 2; break; case VIPS_INTERESTING_ENTROPY: if( vips_smartcrop_entropy( smartcrop, in, &left, &top ) ) return( -1 ); break; case VIPS_INTERESTING_ATTENTION: if( vips_smartcrop_attention( smartcrop, in, &left, &top ) ) return( -1 ); break; case VIPS_INTERESTING_HIGH: left = smartcrop->in->Xsize - smartcrop->width; top = smartcrop->in->Ysize - smartcrop->height; break; default: g_assert_not_reached(); /* Stop a compiler warning. */ left = 0; top = 0; break; } if( vips_extract_area( smartcrop->in, &t[1], left, top, smartcrop->width, smartcrop->height, NULL ) || vips_image_write( t[1], conversion->out ) ) return( -1 ); return( 0 ); } static void vips_smartcrop_class_init( VipsSmartcropClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_smartcrop_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "smartcrop"; vobject_class->description = _( "extract an area from an image" ); vobject_class->build = vips_smartcrop_build; VIPS_ARG_IMAGE( class, "input", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSmartcrop, in ) ); VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Width of extract area" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSmartcrop, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Height of extract area" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSmartcrop, height ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_ENUM( class, "interesting", 6, _( "Interesting" ), _( "How to measure interestingness" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSmartcrop, interesting ), VIPS_TYPE_INTERESTING, VIPS_INTERESTING_ATTENTION ); } static void vips_smartcrop_init( VipsSmartcrop *smartcrop ) { smartcrop->interesting = VIPS_INTERESTING_ATTENTION; } /** * vips_smartcrop: (method) * @in: input image * @out: (out): output image * @width: width of area to extract * @height: height of area to extract * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @interesting: #VipsInteresting to use to find interesting areas (default: #VIPS_INTERESTING_ATTENTION) * * Crop an image down to a specified width and height by removing boring parts. * * Use @interesting to pick the method vips uses to decide which bits of the * image should be kept. * * You can test xoffset / yoffset on @out to find the location of the crop * within the input image. * * See also: vips_extract_area(). * * Returns: 0 on success, -1 on error. */ int vips_smartcrop( VipsImage *in, VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "smartcrop", ap, in, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/subsample.c000066400000000000000000000204741361153320700212050ustar00rootroot00000000000000/* subsample * * 3/7/95 JC * - adapted from im_shrink() * 3/8/02 JC * - fall back to im_copy() for x/y factors == 1 * 21/4/08 * - don't fall back to pixel-wise shrinks for smalltile, it kills * performance, just bring VIPS_MAX_WIDTH down instead * 1/2/10 * - gtkdoc * 1/6/13 * - redo as a class * 2/11/13 * - add @point to force point sample mode * 22/1/16 * - remove SEQUENTIAL hint, it confuses vips_sequential() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pconversion.h" typedef struct _VipsSubsample { VipsConversion parent_instance; VipsImage *in; int xfac; int yfac; gboolean point; } VipsSubsample; typedef VipsConversionClass VipsSubsampleClass; G_DEFINE_TYPE( VipsSubsample, vips_subsample, VIPS_TYPE_CONVERSION ); /* Maximum width of input we ask for. */ #define VIPS_MAX_WIDTH (100) /* Subsample a VipsRegion. We fetch in VIPS_MAX_WIDTH pixel-wide strips, * left-to-right across the input. */ static int vips_subsample_line_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsSubsample *subsample = (VipsSubsample *) b; VipsImage *in = (VipsImage *) a; VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT( r ); int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); int ps = VIPS_IMAGE_SIZEOF_PEL( in ); int owidth = VIPS_MAX_WIDTH / subsample->xfac; VipsRect s; int x, y; int z, k; /* Loop down the region. */ for( y = to; y < bo; y++ ) { VipsPel *q = VIPS_REGION_ADDR( or, le, y ); VipsPel *p; /* Loop across the region, in owidth sized pieces. */ for( x = le; x < ri; x += owidth ) { /* How many pixels do we make this time? */ int ow = VIPS_MIN( owidth, ri - x ); /* Ask for this many from input ... can save a * little here! */ int iw = ow * subsample->xfac - (subsample->xfac - 1); /* Ask for input. */ s.left = x * subsample->xfac; s.top = y * subsample->yfac; s.width = iw; s.height = 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); /* Append new pels to output. */ p = VIPS_REGION_ADDR( ir, s.left, s.top ); for( z = 0; z < ow; z++ ) { for( k = 0; k < ps; k++ ) q[k] = p[k]; q += ps; p += ps * subsample->xfac; } } } return( 0 ); } /* Fetch one pixel at a time ... good for very large shrinks. */ static int vips_subsample_point_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsSubsample *subsample = (VipsSubsample *) b; VipsImage *in = (VipsImage *) a; VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT( r ); int to = r->top; int bo = VIPS_RECT_BOTTOM(r); int ps = VIPS_IMAGE_SIZEOF_PEL( in ); VipsRect s; int x, y; int k; /* Loop down the region. */ for( y = to; y < bo; y++ ) { VipsPel *q = VIPS_REGION_ADDR( or, le, y ); VipsPel *p; /* Loop across the region, in owidth sized pieces. */ for( x = le; x < ri; x++ ) { /* Ask for input. */ s.left = x * subsample->xfac; s.top = y * subsample->yfac; s.width = 1; s.height = 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); /* Append new pels to output. */ p = VIPS_REGION_ADDR( ir, s.left, s.top ); for( k = 0; k < ps; k++ ) q[k] = p[k]; q += ps; } } return( 0 ); } static int vips_subsample_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsSubsample *subsample = (VipsSubsample *) object; VipsGenerateFn subsample_fn; if( VIPS_OBJECT_CLASS( vips_subsample_parent_class )->build( object ) ) return( -1 ); g_assert( subsample->xfac > 0 ); g_assert( subsample->yfac > 0 ); if( subsample->xfac == 1 && subsample->yfac == 1 ) return( vips_image_write( subsample->in, conversion->out ) ); if( vips_image_pio_input( subsample->in ) || vips_check_coding_known( class->nickname, subsample->in ) ) return( -1 ); /* Set demand hints. We want THINSTRIP, as we will be demanding a * large area of input for each output line. */ if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, subsample->in, NULL ) ) return( -1 ); /* Prepare output. Note: we round the output width down! */ conversion->out->Xsize = subsample->in->Xsize / subsample->xfac; conversion->out->Ysize = subsample->in->Ysize / subsample->yfac; conversion->out->Xres = subsample->in->Xres / subsample->xfac; conversion->out->Yres = subsample->in->Yres / subsample->yfac; if( conversion->out->Xsize <= 0 || conversion->out->Ysize <= 0 ) { vips_error( class->nickname, "%s", _( "image has shrunk to nothing" ) ); return( -1 ); } /* Generate! If this is a very large shrink, then it's probably faster * to do it a pixel at a time. */ if( subsample->point || subsample->xfac > 10 ) subsample_fn = vips_subsample_point_gen; else subsample_fn = vips_subsample_line_gen; if( vips_image_generate( conversion->out, vips_start_one, subsample_fn, vips_stop_one, subsample->in, subsample ) ) return( -1 ); return( 0 ); } static void vips_subsample_class_init( VipsSubsampleClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "subsample"; vobject_class->description = _( "subsample an image" ); vobject_class->build = vips_subsample_build; /* We don't work well as sequential: we can easily skip the first few * scanlines, and that confuses vips_sequential(). */ VIPS_ARG_IMAGE( class, "input", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSubsample, in ) ); VIPS_ARG_INT( class, "xfac", 3, _( "Xfac" ), _( "Horizontal subsample factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSubsample, xfac ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "yfac", 4, _( "Yfac" ), _( "Vertical subsample factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSubsample, yfac ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_BOOL( class, "point", 5, _( "Point" ), _( "Point sample" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSubsample, point ), FALSE ); } static void vips_subsample_init( VipsSubsample *subsample ) { } /** * vips_subsample: (method) * @in: input image * @out: (out): output image * @xfac: horizontal shrink factor * @yfac: vertical shrink factor * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @point: turn on point sample mode * * Subsample an image by an integer fraction. This is fast, nearest-neighbour * shrink. * * For small horizontal shrinks, this operation will fetch lines of pixels * from @in and then subsample that line. For large shrinks it will fetch * single pixels. * * If @point is set, @in will always be sampled in points. This can be faster * if the previous operations in the pipeline are very slow. * * See also: vips_affine(), vips_shrink(), vips_zoom(). * * Returns: 0 on success, -1 on error. */ int vips_subsample( VipsImage *in, VipsImage **out, int xfac, int yfac, ... ) { va_list ap; int result; va_start( ap, yfac ); result = vips_call_split( "subsample", ap, in, out, xfac, yfac ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/switch.c000066400000000000000000000143551361153320700205140ustar00rootroot00000000000000/* switch between an array of images * * 28/7/19 * - from maplut.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include typedef struct _VipsSwitch { VipsOperation parent_instance; VipsArrayImage *tests; VipsImage *out; int n; } VipsSwitch; typedef VipsOperationClass VipsSwitchClass; G_DEFINE_TYPE( VipsSwitch, vips_switch, VIPS_TYPE_OPERATION ); static int vips_switch_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion **ar = (VipsRegion **) seq; VipsSwitch *swit = (VipsSwitch *) b; VipsRect *r = &or->valid; int x, y, i; VipsPel * restrict q; size_t qls; VipsPel * restrict p[256]; size_t ls[256]; if( vips_reorder_prepare_many( or->im, ar, r ) ) return( -1 ); g_assert( ar[0]->im->BandFmt == VIPS_FORMAT_UCHAR ); g_assert( ar[0]->im->Bands == 1 ); for( i = 0; i < swit->n; i++ ) { p[i] = VIPS_REGION_ADDR( ar[i], r->left, r->top ); ls[i] = VIPS_REGION_LSKIP( ar[i] ); } q = VIPS_REGION_ADDR( or, r->left, r->top ); qls = VIPS_REGION_LSKIP( or ); for( y = 0; y < r->height; y++ ) { for( x = 0; x < r->width; x++ ) { for( i = 0; i < swit->n; i++ ) if( p[i][x] ) break; q[x] = i; } q += qls; for( i = 0; i < swit->n; i++ ) p[i] += ls[i]; } return( 0 ); } static int vips_switch_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsSwitch *swit = (VipsSwitch *) object; VipsImage **tests; VipsImage **decode; VipsImage **format; VipsImage **band; VipsImage **size; int i; g_object_set( object, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_switch_parent_class )->build( object ) ) return( -1 ); /* 255 rather than 256, since we want to reserve +1 as the no * match value. */ tests = vips_area_get_data( &swit->tests->area, NULL, &swit->n, NULL, NULL ); if( swit->n > 255 || swit->n < 1 ) { vips_error( class->nickname, "%s", _( "bad number of tests" ) ); return( -1 ); } decode = (VipsImage **) vips_object_local_array( object, swit->n ); format = (VipsImage **) vips_object_local_array( object, swit->n ); band = (VipsImage **) vips_object_local_array( object, swit->n + 1 ); size = (VipsImage **) vips_object_local_array( object, swit->n + 1 ); /* Decode RAD/LABQ etc. */ for( i = 0; i < swit->n; i++ ) if( vips_image_decode( tests[i], &decode[i] ) ) return( -1 ); tests = decode; /* Must be uchar. */ for( i = 0; i < swit->n; i++ ) if( vips_cast_uchar( tests[i], &format[i], NULL ) ) return( -1 ); tests = format; /* Images must match in size and bands. */ if( vips__bandalike_vec( class->nickname, tests, band, swit->n, 1 ) || vips__sizealike_vec( band, size, swit->n ) ) return( -1 ); tests = size; if( tests[0]->Bands > 1 ) { vips_error( class->nickname, "%s", _( "test images not 1-band" ) ); return( -1 ); } if( vips_image_pipeline_array( swit->out, VIPS_DEMAND_STYLE_THINSTRIP, tests ) ) return( -1 ); if( vips_image_generate( swit->out, vips_start_many, vips_switch_gen, vips_stop_many, tests, swit ) ) return( -1 ); return( 0 ); } static void vips_switch_class_init( VipsSwitchClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "switch"; object_class->description = _( "find the index of the first non-zero pixel in tests" ); object_class->build = vips_switch_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_BOXED( class, "tests", 1, _( "Tests" ), _( "Table of images to test" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSwitch, tests ), VIPS_TYPE_ARRAY_IMAGE ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsSwitch, out ) ); } static void vips_switch_init( VipsSwitch *swit ) { } static int vips_switchv( VipsImage **tests, VipsImage **out, int n, va_list ap ) { VipsArrayImage *tests_array; int result; tests_array = vips_array_image_new( tests, n ); result = vips_call_split( "switch", ap, tests_array, out ); vips_area_unref( VIPS_AREA( tests_array ) ); return( result ); } /** * vips_switch: (method) * @tests: (array length=n): test these images * @out: (out): output index image * @n: number of input images * @...: %NULL-terminated list of optional named arguments * * The @tests images are evaluated and at each point the index of the first * non-zero value is written to @out. If all @tests are false, the value * (@n + 1) is written. * * Images in @tests must have one band. They are expanded to the * bounding box of the set of images in @tests, and that size is used for * @out. @tests can have up to 255 elements. * * Combine with vips_case() to make an efficient multi-way vips_ifthenelse(). * * See also: vips_maplut(), vips_case(), vips_ifthenelse(). * * Returns: 0 on success, -1 on error */ int vips_switch( VipsImage **tests, VipsImage **out, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_switchv( tests, out, n, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/tilecache.c000066400000000000000000000636041361153320700211350ustar00rootroot00000000000000/* Simple tile or line cache. * * This isn't the same as the sinkscreen cache: we don't sub-divide, and we * single-thread our callee. * * 23/8/06 * - take ownership of reused tiles in case the cache is being shared * 13/2/07 * - release ownership after fillng with pixels in case we read across * threads * 4/2/10 * - gtkdoc * 12/12/10 * - use im_prepare_to() and avoid making a sequence for every cache tile * 5/12/11 * - rework as a class * 23/6/12 * - listen for "minimise" signal * 23/8/12 * - split to line and tile cache * - use a hash table instead of a list * 13/9/12 * - oops, linecache was oversized * 12/11/12 * - make linecache 50% larger to give some slop room * 8/10/12 * - make it optionally threaded * 21/2/13 * - could deadlock if downstream raised an error (thanks Todd) * 25/4/13 * - cache minimisation is optional, see "persistent" flag * 26/8/14 Lovell * - free the hash table in _dispose() * 11/7/16 * - terminate on tile calc error * 7/3/17 * - remove "access" on linecache, use the base class instead */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a cache of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG_RED #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" /* A tile in cache can be in one of three states: * * DATA - the tile holds valid pixels * CALC - some thread somewhere is calculating it * PEND - some thread somewhere wants it */ typedef enum VipsTileState { VIPS_TILE_STATE_DATA, VIPS_TILE_STATE_CALC, VIPS_TILE_STATE_PEND } VipsTileState; /* A tile in our cache. */ typedef struct _VipsTile { struct _VipsBlockCache *cache; VipsTileState state; VipsRegion *region; /* Region with private mem for data */ /* We count how many threads are relying on this tile. This tile can't * be flushed if ref_count > 0. */ int ref_count; /* Tile position. Just use left/top to calculate a hash. This is the * key for the hash table. Don't use region->valid in case the region * pointer is NULL. */ VipsRect pos; } VipsTile; typedef struct _VipsBlockCache { VipsConversion parent_instance; VipsImage *in; int tile_width; int tile_height; int max_tiles; VipsAccess access; gboolean threaded; gboolean persistent; int ntiles; /* Current cache size */ GMutex *lock; /* Lock everything here */ GCond *new_tile; /* A new tile is ready */ GHashTable *tiles; /* Tiles, hashed by coordinates */ GQueue *recycle; /* Queue of unreffed tiles to reuse */ } VipsBlockCache; typedef VipsConversionClass VipsBlockCacheClass; G_DEFINE_ABSTRACT_TYPE( VipsBlockCache, vips_block_cache, VIPS_TYPE_CONVERSION ); #define VIPS_TYPE_BLOCK_CACHE (vips_block_cache_get_type()) static void vips_block_cache_drop_all( VipsBlockCache *cache ) { /* FIXME this is a disaster if active threads are working on tiles. We * should have something to block new requests, and only dispose once * all tiles are unreffed. */ g_hash_table_remove_all( cache->tiles ); } static void vips_block_cache_dispose( GObject *gobject ) { VipsBlockCache *cache = (VipsBlockCache *) gobject; vips_block_cache_drop_all( cache ); VIPS_FREEF( vips_g_mutex_free, cache->lock ); VIPS_FREEF( vips_g_cond_free, cache->new_tile ); if( cache->tiles ) g_assert( g_hash_table_size( cache->tiles ) == 0 ); VIPS_FREEF( g_hash_table_destroy, cache->tiles ); VIPS_FREEF( g_queue_free, cache->recycle ); G_OBJECT_CLASS( vips_block_cache_parent_class )->dispose( gobject ); } static int vips_tile_move( VipsTile *tile, int x, int y ) { /* We are changing x/y and therefore the hash value. We must unlink * from the old hash position and relink at the new place. */ g_hash_table_steal( tile->cache->tiles, &tile->pos ); tile->pos.left = x; tile->pos.top = y; tile->pos.width = tile->cache->tile_width; tile->pos.height = tile->cache->tile_height; g_hash_table_insert( tile->cache->tiles, &tile->pos, tile ); if( vips_region_buffer( tile->region, &tile->pos ) ) return( -1 ); /* No data yet, but someone must want it. */ tile->state = VIPS_TILE_STATE_PEND; return( 0 ); } static VipsTile * vips_tile_new( VipsBlockCache *cache, int x, int y ) { VipsTile *tile; if( !(tile = VIPS_NEW( NULL, VipsTile )) ) return( NULL ); tile->cache = cache; tile->state = VIPS_TILE_STATE_PEND; tile->ref_count = 0; tile->region = NULL; tile->pos.left = x; tile->pos.top = y; tile->pos.width = cache->tile_width; tile->pos.height = cache->tile_height; g_hash_table_insert( cache->tiles, &tile->pos, tile ); g_queue_push_tail( tile->cache->recycle, tile ); g_assert( cache->ntiles >= 0 ); cache->ntiles += 1; if( !(tile->region = vips_region_new( cache->in )) ) { g_hash_table_remove( cache->tiles, &tile->pos ); return( NULL ); } vips__region_no_ownership( tile->region ); if( vips_tile_move( tile, x, y ) ) { g_hash_table_remove( cache->tiles, &tile->pos ); return( NULL ); } return( tile ); } /* Do we have a tile in the cache? */ static VipsTile * vips_tile_search( VipsBlockCache *cache, int x, int y ) { VipsRect pos; VipsTile *tile; pos.left = x; pos.top = y; pos.width = cache->tile_width; pos.height = cache->tile_height; tile = (VipsTile *) g_hash_table_lookup( cache->tiles, &pos ); return( tile ); } static void vips_tile_find_is_topper( gpointer element, gpointer user_data ) { VipsTile *this = (VipsTile *) element; VipsTile **best = (VipsTile **) user_data; if( !*best || this->pos.top < (*best)->pos.top ) *best = this; } /* Search the recycle list for the topmost tile. */ static VipsTile * vips_tile_find_topmost( GQueue *recycle ) { VipsTile *tile; tile = NULL; g_queue_foreach( recycle, vips_tile_find_is_topper, &tile ); return( tile ); } /* Find existing tile, make a new tile, or if we have a full set of tiles, * reuse one. */ static VipsTile * vips_tile_find( VipsBlockCache *cache, int x, int y ) { VipsTile *tile; /* In cache already? */ if( (tile = vips_tile_search( cache, x, y )) ) { VIPS_DEBUG_MSG_RED( "vips_tile_find: " "tile %d x %d in cache\n", x, y ); return( tile ); } /* VipsBlockCache not full? */ if( cache->max_tiles == -1 || cache->ntiles < cache->max_tiles ) { VIPS_DEBUG_MSG_RED( "vips_tile_find: " "making new tile at %d x %d\n", x, y ); if( !(tile = vips_tile_new( cache, x, y )) ) return( NULL ); return( tile ); } /* Reuse an old one, if there are any. We just peek the tile pointer, * it is removed from the recycle list later on _ref. */ if( cache->recycle ) { if( cache->access == VIPS_ACCESS_RANDOM ) tile = g_queue_peek_head( cache->recycle ); else /* This is slower :( We have to search the recycle * queue. */ tile = vips_tile_find_topmost( cache->recycle ); } if( !tile ) { /* There are no tiles we can reuse -- we have to make another * for now. They will get culled down again next time around. */ if( !(tile = vips_tile_new( cache, x, y )) ) return( NULL ); return( tile ); } VIPS_DEBUG_MSG_RED( "vips_tile_find: reusing tile %d x %d\n", tile->pos.left, tile->pos.top ); if( vips_tile_move( tile, x, y ) ) return( NULL ); return( tile ); } static gboolean vips_tile_unlocked( gpointer key, gpointer value, gpointer user_data ) { VipsTile *tile = (VipsTile *) value; return( !tile->ref_count ); } static void vips_block_cache_minimise( VipsImage *image, VipsBlockCache *cache ) { VIPS_DEBUG_MSG( "vips_block_cache_minimise:\n" ); g_mutex_lock( cache->lock ); /* We can't drop tiles that are in use. */ g_hash_table_foreach_remove( cache->tiles, vips_tile_unlocked, NULL ); g_mutex_unlock( cache->lock ); } static int vips_block_cache_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBlockCache *cache = (VipsBlockCache *) object; VIPS_DEBUG_MSG( "vips_block_cache_build:\n" ); if( VIPS_OBJECT_CLASS( vips_block_cache_parent_class )-> build( object ) ) return( -1 ); VIPS_DEBUG_MSG( "vips_block_cache_build: max size = %g MB\n", (cache->max_tiles * cache->tile_width * cache->tile_height * VIPS_IMAGE_SIZEOF_PEL( cache->in )) / (1024 * 1024.0) ); if( !cache->persistent ) g_signal_connect( conversion->out, "minimise", G_CALLBACK( vips_block_cache_minimise ), cache ); return( 0 ); } static void vips_block_cache_class_init( VipsBlockCacheClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_block_cache_class_init\n" ); gobject_class->dispose = vips_block_cache_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "blockcache"; vobject_class->description = _( "cache an image" ); vobject_class->build = vips_block_cache_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBlockCache, in ) ); VIPS_ARG_INT( class, "tile_height", 4, _( "Tile height" ), _( "Tile height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, tile_height ), 1, 1000000, 128 ); VIPS_ARG_ENUM( class, "access", 6, _( "Access" ), _( "Expected access pattern" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, access ), VIPS_TYPE_ACCESS, VIPS_ACCESS_RANDOM ); VIPS_ARG_BOOL( class, "threaded", 7, _( "Threaded" ), _( "Allow threaded access" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, threaded ), FALSE ); VIPS_ARG_BOOL( class, "persistent", 8, _( "Persistent" ), _( "Keep cache between evaluations" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, persistent ), FALSE ); } static unsigned int vips_rect_hash( VipsRect *pos ) { guint hash; /* We could shift down by the tile size? * * X discrimination is more important than Y, since * most tiles will have a similar Y. */ hash = (guint) pos->left ^ ((guint) pos->top << 16); return( hash ); } static gboolean vips_rect_equal( VipsRect *a, VipsRect *b ) { return( a->left == b->left && a->top == b->top ); } static void vips_tile_destroy( VipsTile *tile ) { VipsBlockCache *cache = tile->cache; VIPS_DEBUG_MSG_RED( "vips_tile_destroy: tile %d, %d (%p)\n", tile->pos.left, tile->pos.top, tile ); /* 0 ref tiles should be on the recycle list. */ g_assert( tile->ref_count == 0 ); g_assert( g_queue_find( tile->cache->recycle, tile ) ); g_queue_remove( cache->recycle, tile ); cache->ntiles -= 1; g_assert( cache->ntiles >= 0 ); tile->cache = NULL; VIPS_UNREF( tile->region ); vips_free( tile ); } static void vips_block_cache_init( VipsBlockCache *cache ) { cache->tile_width = 128; cache->tile_height = 128; cache->max_tiles = 1000; cache->access = VIPS_ACCESS_RANDOM; cache->threaded = FALSE; cache->persistent = FALSE; cache->ntiles = 0; cache->lock = vips_g_mutex_new(); cache->new_tile = vips_g_cond_new(); cache->tiles = g_hash_table_new_full( (GHashFunc) vips_rect_hash, (GEqualFunc) vips_rect_equal, NULL, (GDestroyNotify) vips_tile_destroy ); cache->recycle = g_queue_new(); } typedef struct _VipsTileCache { VipsBlockCache parent_instance; } VipsTileCache; typedef VipsBlockCacheClass VipsTileCacheClass; G_DEFINE_TYPE( VipsTileCache, vips_tile_cache, VIPS_TYPE_BLOCK_CACHE ); static void vips_tile_unref( VipsTile *tile ) { g_assert( tile->ref_count > 0 ); tile->ref_count -= 1; if( tile->ref_count == 0 ) { /* Place at the end of the recycle queue. We pop from the * front when selecting an unused tile for reuse. */ g_assert( !g_queue_find( tile->cache->recycle, tile ) ); g_queue_push_tail( tile->cache->recycle, tile ); } } static void vips_tile_ref( VipsTile *tile ) { tile->ref_count += 1; g_assert( tile->ref_count > 0 ); if( tile->ref_count == 1 ) { g_assert( g_queue_find( tile->cache->recycle, tile ) ); g_queue_remove( tile->cache->recycle, tile ); } } static void vips_tile_cache_unref( GSList *work ) { GSList *p; for( p = work; p; p = p->next ) vips_tile_unref( (VipsTile *) p->data ); g_slist_free( work ); } /* Make a set of work tiles. */ static GSList * vips_tile_cache_ref( VipsBlockCache *cache, VipsRect *r ) { const int tw = cache->tile_width; const int th = cache->tile_height; /* Find top left of tiles we need. */ const int xs = (r->left / tw) * tw; const int ys = (r->top / th) * th; GSList *work; VipsTile *tile; int x, y; /* Ref all the tiles we will need. */ work = NULL; for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += th ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += tw ) { if( !(tile = vips_tile_find( cache, x, y )) ) { vips_tile_cache_unref( work ); return( NULL ); } vips_tile_ref( tile ); /* We must append, since we want to keep tile ordering * for sequential sources. */ work = g_slist_append( work, tile ); VIPS_DEBUG_MSG_RED( "vips_tile_cache_ref: " "tile %d, %d (%p)\n", x, y, tile ); } return( work ); } static void vips_tile_paste( VipsTile *tile, VipsRegion *or ) { VipsRect hit; /* The part of the tile that we need. */ vips_rect_intersectrect( &or->valid, &tile->pos, &hit ); if( !vips_rect_isempty( &hit ) ) vips_region_copy( tile->region, or, &hit, hit.left, hit.top ); } /* Also called from vips_line_cache_gen(), beware. */ static int vips_tile_cache_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *in = (VipsRegion *) seq; VipsBlockCache *cache = (VipsBlockCache *) b; VipsRect *r = &or->valid; VipsTile *tile; GSList *work; GSList *p; int result; result = 0; VIPS_GATE_START( "vips_tile_cache_gen: wait1" ); g_mutex_lock( cache->lock ); VIPS_GATE_STOP( "vips_tile_cache_gen: wait1" ); VIPS_DEBUG_MSG_RED( "vips_tile_cache_gen: " "left = %d, top = %d, width = %d, height = %d\n", r->left, r->top, r->width, r->height ); /* Ref all the tiles we will need. */ work = vips_tile_cache_ref( cache, r ); while( work ) { /* Search for data tiles: easy, we can just paste those in. */ for(;;) { for( p = work; p; p = p->next ) { tile = (VipsTile *) p->data; if( tile->state == VIPS_TILE_STATE_DATA ) break; } if( !p ) break; VIPS_DEBUG_MSG_RED( "vips_tile_cache_gen: " "pasting %p\n", tile ); vips_tile_paste( tile, or ); /* We're done with this tile. */ work = g_slist_remove( work, tile ); vips_tile_unref( tile ); } /* Calculate the first PEND tile we find on the work list. We * don't calculate all PEND tiles since after the first, more * DATA tiles might heve been made available by other threads * and we want to get them out of the way as soon as we can. */ for( p = work; p; p = p->next ) { tile = (VipsTile *) p->data; if( tile->state == VIPS_TILE_STATE_PEND ) { tile->state = VIPS_TILE_STATE_CALC; VIPS_DEBUG_MSG_RED( "vips_tile_cache_gen: " "calc of %p\n", tile ); /* In threaded mode, we let other threads run * while we calc this tile. In non-threaded * mode, we keep the lock and make 'em wait. */ if( cache->threaded ) g_mutex_unlock( cache->lock ); result = vips_region_prepare_to( in, tile->region, &tile->pos, tile->pos.left, tile->pos.top ); if( cache->threaded ) { VIPS_GATE_START( "vips_tile_cache_gen: " "wait2" ); g_mutex_lock( cache->lock ); VIPS_GATE_STOP( "vips_tile_cache_gen: " "wait2" ); } /* If there was an error calculating this * tile, black it out and terminate * calculation. We have to stop so we can * support things like --fail on jpegload. * * Don't return early, we'd deadlock. */ if( result ) { VIPS_DEBUG_MSG_RED( "vips_tile_cache_gen: " "error on tile %p\n", tile ); g_warning( _( "error in tile %d x %d" ), tile->pos.left, tile->pos.top ); vips_region_black( tile->region ); *stop = TRUE; } tile->state = VIPS_TILE_STATE_DATA; /* Let everyone know there's a new DATA tile. * They need to all check their work lists. */ g_cond_broadcast( cache->new_tile ); break; } } /* There are no PEND or DATA tiles, we must need a tile some * other thread is currently calculating. * * We must block until the CALC tiles we need are done. */ if( !p && work ) { for( p = work; p; p = p->next ) { tile = (VipsTile *) p->data; g_assert( tile->state == VIPS_TILE_STATE_CALC ); } VIPS_DEBUG_MSG_RED( "vips_tile_cache_gen: waiting\n" ); VIPS_GATE_START( "vips_tile_cache_gen: wait3" ); g_cond_wait( cache->new_tile, cache->lock ); VIPS_GATE_STOP( "vips_tile_cache_gen: wait3" ); VIPS_DEBUG_MSG( "vips_tile_cache_gen: awake!\n" ); } } g_mutex_unlock( cache->lock ); return( result ); } static int vips_tile_cache_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBlockCache *block_cache = (VipsBlockCache *) object; VipsTileCache *cache = (VipsTileCache *) object; VIPS_DEBUG_MSG( "vips_tile_cache_build\n" ); if( VIPS_OBJECT_CLASS( vips_tile_cache_parent_class )-> build( object ) ) return( -1 ); if( vips_image_pio_input( block_cache->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, block_cache->in, NULL ) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_one, vips_tile_cache_gen, vips_stop_one, block_cache->in, cache ) ) return( -1 ); return( 0 ); } static void vips_tile_cache_class_init( VipsTileCacheClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_tile_cache_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "tilecache"; vobject_class->description = _( "cache an image as a set of tiles" ); vobject_class->build = vips_tile_cache_build; VIPS_ARG_INT( class, "tile_width", 3, _( "Tile width" ), _( "Tile width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, tile_width ), 1, 1000000, 128 ); VIPS_ARG_INT( class, "max_tiles", 5, _( "Max tiles" ), _( "Maximum number of tiles to cache" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, max_tiles ), -1, 1000000, 1000 ); } static void vips_tile_cache_init( VipsTileCache *cache ) { } /** * vips_tilecache: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @tile_width: width of tiles in cache * * @tile_height: height of tiles in cache * * @max_tiles: maximum number of tiles to cache * * @access: hint expected access pattern #VipsAccess * * @threaded: allow many threads * * @persistent: don't drop cache at end of computation * * This operation behaves rather like vips_copy() between images * @in and @out, except that it keeps a cache of computed pixels. * This cache is made of up to @max_tiles tiles (a value of -1 * means any number of tiles), and each tile is of size @tile_width * by @tile_height pixels. * * Each cache tile is made with a single call to * vips_region_prepare(). * * When the cache fills, a tile is chosen for reuse. If @access is * #VIPS_ACCESS_RANDOM, then the least-recently-used tile is reused. If * @access is #VIPS_ACCESS_SEQUENTIAL * the top-most tile is reused. * * By default, @tile_width and @tile_height are 128 pixels, and the operation * will cache up to 1,000 tiles. @access defaults to #VIPS_ACCESS_RANDOM. * * Normally, only a single thread at once is allowed to calculate tiles. If * you set @threaded to %TRUE, vips_tilecache() will allow many threads to * calculate tiles at once, and share the cache between them. * * Normally the cache is dropped when computation finishes. Set @persistent to * %TRUE to keep the cache between computations. * * See also: vips_cache(), vips_linecache(). * * Returns: 0 on success, -1 on error. */ int vips_tilecache( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "tilecache", ap, in, out ); va_end( ap ); return( result ); } typedef struct _VipsLineCache { VipsBlockCache parent_instance; } VipsLineCache; typedef VipsBlockCacheClass VipsLineCacheClass; G_DEFINE_TYPE( VipsLineCache, vips_line_cache, VIPS_TYPE_BLOCK_CACHE ); static int vips_line_cache_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsBlockCache *block_cache = (VipsBlockCache *) b; VIPS_GATE_START( "vips_line_cache_gen: wait" ); g_mutex_lock( block_cache->lock ); VIPS_GATE_STOP( "vips_line_cache_gen: wait" ); /* We size up the cache to the largest request. */ if( or->valid.height > block_cache->max_tiles * block_cache->tile_height ) { block_cache->max_tiles = 1 + (or->valid.height / block_cache->tile_height); VIPS_DEBUG_MSG( "vips_line_cache_gen: bumped max_tiles to %d\n", block_cache->max_tiles ); } g_mutex_unlock( block_cache->lock ); return( vips_tile_cache_gen( or, seq, a, b, stop ) ); } static int vips_line_cache_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBlockCache *block_cache = (VipsBlockCache *) object; VipsLineCache *cache = (VipsLineCache *) object; int tile_width; int tile_height; int n_lines; VIPS_DEBUG_MSG( "vips_line_cache_build\n" ); if( !vips_object_argument_isset( object, "access" ) ) block_cache->access = VIPS_ACCESS_SEQUENTIAL; if( VIPS_OBJECT_CLASS( vips_line_cache_parent_class )-> build( object ) ) return( -1 ); /* This can go up with request size, see vips_line_cache_gen(). */ vips_get_tile_size( block_cache->in, &tile_width, &tile_height, &n_lines ); block_cache->tile_width = block_cache->in->Xsize; /* Output has two buffers n_lines height, so 2 * n_lines is the maximum * non-locality from threading. Double again for conv, rounding, etc. * * tile_height can be huge for things like tiff read, where we can * have a whole strip in a single tile ... we still need to have a * minimum of two strips, so we can handle requests that straddle a * tile boundary. */ block_cache->max_tiles = VIPS_MAX( 2, 4 * n_lines / block_cache->tile_height ); VIPS_DEBUG_MSG( "vips_line_cache_build: n_lines = %d\n", n_lines ); VIPS_DEBUG_MSG( "vips_line_cache_build: max_tiles = %d\n", block_cache->max_tiles ); VIPS_DEBUG_MSG( "vips_line_cache_build: tile_height = %d\n", block_cache->tile_height ); VIPS_DEBUG_MSG( "vips_line_cache_build: max size = %g MB\n", (block_cache->max_tiles * block_cache->tile_width * block_cache->tile_height * VIPS_IMAGE_SIZEOF_PEL( block_cache->in )) / (1024 * 1024.0) ); if( vips_image_pio_input( block_cache->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, block_cache->in, NULL ) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_one, vips_line_cache_gen, vips_stop_one, block_cache->in, cache ) ) return( -1 ); return( 0 ); } static void vips_line_cache_class_init( VipsLineCacheClass *class ) { VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_line_cache_class_init\n" ); vobject_class->nickname = "linecache"; vobject_class->description = _( "cache an image as a set of lines" ); vobject_class->build = vips_line_cache_build; } static void vips_line_cache_init( VipsLineCache *cache ) { } /** * vips_linecache: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @access: hint expected access pattern #VipsAccess * * @tile_height: height of tiles in cache * * @threaded: allow many threads * * This operation behaves rather like vips_copy() between images * @in and @out, except that it keeps a cache of computed scanlines. * * The number of lines cached is enough for a small amount of non-local * access. * * Each cache tile is made with a single call to * vips_region_prepare(). * * When the cache fills, a tile is chosen for reuse. If @access is * #VIPS_ACCESS_RANDOM, then the least-recently-used tile is reused. If * @access is #VIPS_ACCESS_SEQUENTIAL, then * the top-most tile is reused. @access defaults to #VIPS_ACCESS_RANDOM. * * @tile_height can be used to set the size of the strips that * vips_linecache() uses. The default is 1 (a single scanline). * * Normally, only a single thread at once is allowed to calculate tiles. If * you set @threaded to %TRUE, vips_linecache() will allow many threads to * calculate tiles at once and share the cache between them. * * See also: vips_cache(), vips_tilecache(). * * Returns: 0 on success, -1 on error. */ int vips_linecache( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "linecache", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/transpose3d.c000066400000000000000000000123311361153320700214500ustar00rootroot00000000000000/* vips_transpose3d * * 30/4/18 * - from grid.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pconversion.h" typedef struct _VipsTranspose3d { VipsConversion parent_instance; VipsImage *in; int page_height; } VipsTranspose3d; typedef VipsConversionClass VipsTranspose3dClass; G_DEFINE_TYPE( VipsTranspose3d, vips_transpose3d, VIPS_TYPE_CONVERSION ); static int vips_transpose3d_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) vseq; VipsImage *in = (VipsImage *) a; VipsTranspose3d *transpose3d = (VipsTranspose3d *) b; VipsRect *r = &or->valid; int output_page_height = in->Ysize / transpose3d->page_height; int y; VipsRect tile; tile = *r; tile.height = 1; for( y = 0; y < r->height; y++ ) { /* y in output. */ int yo = r->top + y; /* On output page. */ int yop = yo / output_page_height; /* Line on output page. */ int yol = yo % output_page_height; /* y of input page. */ int yip = yol * transpose3d->page_height; /* y of input line. */ int yi = yip + yop; tile.top = yi; /* Render into or. */ if( vips_region_prepare_to( ir, or, &tile, tile.left, yo ) ) return( -1 ); } return( 0 ); } static int vips_transpose3d_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsTranspose3d *transpose3d = (VipsTranspose3d *) object; VipsImage *in; if( VIPS_OBJECT_CLASS( vips_transpose3d_parent_class )-> build( object ) ) return( -1 ); in = transpose3d->in; if( vips_check_coding_known( class->nickname, in ) || vips_image_pio_input( in ) ) return( -1 ); if( !vips_object_argument_isset( object, "page_height" ) ) { if( vips_image_get_int( in, VIPS_META_PAGE_HEIGHT, &transpose3d->page_height ) ) return( -1 ); } if( transpose3d->page_height <= 0 || in->Ysize % transpose3d->page_height != 0 ) { vips_error( class->nickname, "%s", _( "bad page_height" ) ); return( -1 ); } if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); vips_image_set_int( conversion->out, VIPS_META_PAGE_HEIGHT, in->Ysize / transpose3d->page_height ); if( vips_image_generate( conversion->out, vips_start_one, vips_transpose3d_gen, vips_stop_one, in, transpose3d ) ) return( -1 ); return( 0 ); } static void vips_transpose3d_class_init( VipsTranspose3dClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "transpose3d"; vobject_class->description = _( "transpose3d an image" ); vobject_class->build = vips_transpose3d_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsTranspose3d, in ) ); VIPS_ARG_INT( class, "page_height", 3, _( "Page height" ), _( "Height of each input page" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTranspose3d, page_height ), 0, 10000000, 0 ); } static void vips_transpose3d_init( VipsTranspose3d *transpose3d ) { } /** * vips_transpose3d: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @page_height: %gint, size of each input page * * Transpose a volumetric image. * * Volumetric images are very tall, thin images, with the metadata item * #VIPS_META_PAGE_HEIGHT set to the height of each sub-image. * * This operation swaps the two major dimensions, so that page N in the * output contains the Nth scanline, in order, from each input page. * * You can override the #VIPS_META_PAGE_HEIGHT metadata item with the optional * @page_height parameter. * * #VIPS_META_PAGE_HEIGHT in the output image is the number of pages in the * input image. * * See also: vips_grid(). * * Returns: 0 on success, -1 on error */ int vips_transpose3d( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "transpose3d", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/unpremultiply.c000066400000000000000000000210261361153320700221350ustar00rootroot00000000000000/* unpremultiply alpha * * Author: John Cupitt * Written on: 7/5/15 * * 25/5/16 * - max_alpha defaults to 65535 for RGB16/GREY16 * 24/11/17 lovell * - match normalised alpha to output type */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsUnpremultiply { VipsConversion parent_instance; VipsImage *in; double max_alpha; int alpha_band; } VipsUnpremultiply; typedef VipsConversionClass VipsUnpremultiplyClass; G_DEFINE_TYPE( VipsUnpremultiply, vips_unpremultiply, VIPS_TYPE_CONVERSION ); /* Unpremultiply an N-band image. */ #define UNPRE_MANY( IN, OUT ) { \ IN * restrict p = (IN *) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < width; x++ ) { \ IN alpha = p[alpha_band]; \ IN clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ OUT nalpha = (OUT) clip_alpha / max_alpha; \ \ if( nalpha == 0 ) \ for( i = 0; i < alpha_band + 1; i++ ) \ q[i] = 0; \ else { \ for( i = 0; i < alpha_band; i++ ) \ q[i] = p[i] / nalpha; \ q[alpha_band] = clip_alpha; \ } \ \ for( i = alpha_band + 1; i < bands; i++ ) \ q[i] = p[i]; \ \ p += bands; \ q += bands; \ } \ } /* Unpremultiply an RGB (four band) image. */ #define UNPRE_RGBA( IN, OUT ) { \ IN * restrict p = (IN *) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < width; x++ ) { \ IN alpha = p[3]; \ IN clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ OUT nalpha = (OUT) clip_alpha / max_alpha; \ \ if( nalpha == 0 ) { \ q[0] = 0; \ q[1] = 0; \ q[2] = 0; \ q[3] = 0; \ } \ else { \ q[0] = p[0] / nalpha; \ q[1] = p[1] / nalpha; \ q[2] = p[2] / nalpha; \ q[3] = clip_alpha; \ } \ \ p += 4; \ q += 4; \ } \ } #define UNPRE( IN, OUT ) { \ if( bands == 4 ) { \ UNPRE_RGBA( IN, OUT ); \ } \ else { \ UNPRE_MANY( IN, OUT ); \ } \ } static int vips_unpremultiply_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsUnpremultiply *unpremultiply = (VipsUnpremultiply *) b; VipsRegion *ir = (VipsRegion *) vseq; VipsImage *im = ir->im; VipsRect *r = &or->valid; int width = r->width; int bands = im->Bands; double max_alpha = unpremultiply->max_alpha; int alpha_band = unpremultiply->alpha_band; int x, y, i; if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *out = VIPS_REGION_ADDR( or, r->left, r->top + y ); switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: UNPRE( unsigned char, float ); break; case VIPS_FORMAT_CHAR: UNPRE( signed char, float ); break; case VIPS_FORMAT_USHORT: UNPRE( unsigned short, float ); break; case VIPS_FORMAT_SHORT: UNPRE( signed short, float ); break; case VIPS_FORMAT_UINT: UNPRE( unsigned int, float ); break; case VIPS_FORMAT_INT: UNPRE( signed int, float ); break; case VIPS_FORMAT_FLOAT: UNPRE( float, float ); break; case VIPS_FORMAT_DOUBLE: UNPRE( double, double ); break; case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: default: g_assert_not_reached(); } } return( 0 ); } static int vips_unpremultiply_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsUnpremultiply *unpremultiply = (VipsUnpremultiply *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_unpremultiply_parent_class )-> build( object ) ) return( -1 ); in = unpremultiply->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* Trivial case: fall back to copy(). */ if( in->Bands == 1 ) return( vips_image_write( in, conversion->out ) ); if( vips_check_noncomplex( class->nickname, in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); /* Is max-alpha unset? Default to the correct value for this * interpretation. */ if( !vips_object_argument_isset( object, "max_alpha" ) ) if( in->Type == VIPS_INTERPRETATION_GREY16 || in->Type == VIPS_INTERPRETATION_RGB16 ) unpremultiply->max_alpha = 65535; /* Is alpha-band unset? Default to the final band for this image. */ if( !vips_object_argument_isset( object, "alpha_band" ) ) unpremultiply->alpha_band = in->Bands - 1; if( in->BandFmt == VIPS_FORMAT_DOUBLE ) conversion->out->BandFmt = VIPS_FORMAT_DOUBLE; else conversion->out->BandFmt = VIPS_FORMAT_FLOAT; if( vips_image_generate( conversion->out, vips_start_one, vips_unpremultiply_gen, vips_stop_one, in, unpremultiply ) ) return( -1 ); return( 0 ); } static void vips_unpremultiply_class_init( VipsUnpremultiplyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_unpremultiply_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "unpremultiply"; vobject_class->description = _( "unpremultiply image alpha" ); vobject_class->build = vips_unpremultiply_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsUnpremultiply, in ) ); VIPS_ARG_DOUBLE( class, "max_alpha", 115, _( "Maximum alpha" ), _( "Maximum value of alpha channel" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsUnpremultiply, max_alpha ), 0, 100000000, 255 ); VIPS_ARG_INT( class, "alpha_band", 116, _( "Alpha band" ), _( "Unpremultiply with this alpha" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsUnpremultiply, alpha_band ), 0, 100000000, 3 ); } static void vips_unpremultiply_init( VipsUnpremultiply *unpremultiply ) { unpremultiply->max_alpha = 255.0; } /** * vips_unpremultiply: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @max_alpha: %gdouble, maximum value for alpha * * @alpha_band: %gint, band containing alpha data * * Unpremultiplies any alpha channel. * Band @alpha_band (by default the final band) contains the alpha and all * other bands are transformed as: * * |[ * alpha = (int) clip( 0, in[in.bands - 1], @max_alpha ); * norm = (double) alpha / @max_alpha; * if( alpha == 0 ) * out = [0, ..., 0, alpha]; * else * out = [in[0] / norm, ..., in[in.bands - 1] / norm, alpha]; * ]| * * So for an N-band image, the first N - 1 bands are divided by the clipped * and normalised final band, the final band is clipped. * If there is only a single band, the image is passed through unaltered. * * The result is * #VIPS_FORMAT_FLOAT unless the input format is #VIPS_FORMAT_DOUBLE, in which * case the output is double as well. * * @max_alpha has the default value 255, or 65535 for images tagged as * #VIPS_INTERPRETATION_RGB16 or * #VIPS_INTERPRETATION_GREY16. * * Non-complex images only. * * See also: vips_premultiply(), vips_flatten(). * * Returns: 0 on success, -1 on error */ int vips_unpremultiply( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "unpremultiply", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/wrap.c000066400000000000000000000102501361153320700201520ustar00rootroot00000000000000/* im_wrap * * Copyright: 2008, Nottingham Trent University * Author: Tom Vajzovic * Written on: 2008-01-15 * 2/2/10 * - rewritten in terms of im_replicate()/im_extract_area() * - gtkdoc * - allows any x/y * 31/5/13 * - redone as a class * - added rotquad behaviour if x/y not set */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include "pconversion.h" typedef struct _VipsWrap { VipsConversion parent_instance; VipsImage *in; int x; int y; } VipsWrap; typedef VipsConversionClass VipsWrapClass; G_DEFINE_TYPE( VipsWrap, vips_wrap, VIPS_TYPE_CONVERSION ); static int vips_wrap_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsWrap *wrap = (VipsWrap *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); int x; int y; if( VIPS_OBJECT_CLASS( vips_wrap_parent_class )->build( object ) ) return( -1 ); if( !vips_object_argument_isset( object, "x" ) ) wrap->x = wrap->in->Xsize / 2; if( !vips_object_argument_isset( object, "y" ) ) wrap->y = wrap->in->Ysize / 2; /* Clock arithmetic: we want negative x/y to wrap around * nicely. */ x = wrap->x < 0 ? -wrap->x % wrap->in->Xsize : wrap->in->Xsize - wrap->x % wrap->in->Xsize; y = wrap->y < 0 ? -wrap->y % wrap->in->Ysize : wrap->in->Ysize - wrap->y % wrap->in->Ysize; if( vips_replicate( wrap->in, &t[0], 2, 2, NULL ) || vips_extract_area( t[0], &t[1], x, y, wrap->in->Xsize, wrap->in->Ysize, NULL ) || vips_image_write( t[1], conversion->out ) ) return( -1 ); conversion->out->Xoffset = x; conversion->out->Yoffset = y; return( 0 ); } static void vips_wrap_class_init( VipsWrapClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "wrap"; vobject_class->description = _( "wrap image origin" ); vobject_class->build = vips_wrap_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsWrap, in ) ); VIPS_ARG_INT( class, "x", 3, _( "x" ), _( "Left edge of input in output" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsWrap, x ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "y", 4, _( "y" ), _( "Top edge of input in output" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsWrap, y ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); } static void vips_wrap_init( VipsWrap *wrap ) { } /** * vips_wrap: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @x: horizontal displacement * * @y: vertical displacement * * Slice an image up and move the segments about so that the pixel that was * at 0, 0 is now at @x, @y. If @x and @y are not set, they default to the * centre of the image. * * See also: vips_embed(), vips_replicate(). * * Returns: 0 on success, -1 on error */ int vips_wrap( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "wrap", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/conversion/zoom.c000066400000000000000000000244671361153320700202040ustar00rootroot00000000000000/* im_zoom * * Author: N. Martinez 1991 * 6/6/94 JC * - rewritten to ANSI-C * - now works for any type, including IM_CODING_LABQ * 7/10/94 JC * - new IM_ARRAY() macro * 26/1/96 JC * - separate x and y zoom factors * 21/8/96 JC * - partial, yuk! this is so complicated ... * 30/8/96 JC * - sets demand_hint * 10/2/00 JC * - check for integer overflow in zoom facs ... was happening with ip's * zoom on large images * 3/8/02 JC * - fall back to im_copy() for x & y factors == 1 * 24/3/09 * - added IM_CODING_RAD support * 1/2/10 * - gtkdoc * 1/6/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* * TODO: * Test for pixel size and use memcpy() on individual pixels once they reach * sizes of the order of tens of bytes. char-wise copy is quicker than * memcpy() for smaller pixels. * * Also, I haven't tested it but int-wise copying may be faster still, as * long as alignment permits it. * * tcv. 2006-09-01 */ /* Turn on ADDR() range checks. #define DEBUG 1 */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsZoom { VipsConversion parent_instance; /* The input image. */ VipsImage *in; int xfac; /* Scale factors */ int yfac; } VipsZoom; typedef VipsConversionClass VipsZoomClass; G_DEFINE_TYPE( VipsZoom, vips_zoom, VIPS_TYPE_CONVERSION ); /* Paint the part of the region containing only whole pels. */ static void vips_zoom_paint_whole( VipsRegion *or, VipsRegion *ir, VipsZoom *zoom, const int left, const int right, const int top, const int bottom ) { const int ps = VIPS_IMAGE_SIZEOF_PEL( ir->im ); const int ls = VIPS_REGION_LSKIP( or ); const int rs = ps * (right - left); /* Transform to ir coordinates. */ const int ileft = left / zoom->xfac; const int iright = right / zoom->xfac; const int itop = top / zoom->yfac; const int ibottom = bottom / zoom->yfac; int x, y, z, i; /* We know this! */ g_assert( right > left && bottom > top && right % zoom->xfac == 0 && left % zoom->xfac == 0 && top % zoom->yfac == 0 && bottom % zoom->yfac == 0 ); /* Loop over input, as we know we are all whole. */ for( y = itop; y < ibottom; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, ileft, y ); VipsPel *q = VIPS_REGION_ADDR( or, left, y * zoom->yfac ); VipsPel *r; /* Expand the first line of pels. */ r = q; for( x = ileft; x < iright; x++ ) { /* Copy each pel xfac times. */ for( z = 0; z < zoom->xfac; z++ ) { for( i = 0; i < ps; i++ ) r[i] = p[i]; r += ps; } p += ps; } /* Copy the expanded line yfac-1 times. */ r = q + ls; for( z = 1; z < zoom->yfac; z++ ) { memcpy( r, q, rs ); r += ls; } } } /* Paint the part of the region containing only part-pels. */ static void vips_zoom_paint_part( VipsRegion *or, VipsRegion *ir, VipsZoom *zoom, const int left, const int right, const int top, const int bottom ) { const int ps = VIPS_IMAGE_SIZEOF_PEL( ir->im ); const int ls = VIPS_REGION_LSKIP( or ); const int rs = ps * (right - left); /* Start position in input. */ const int ix = left / zoom->xfac; const int iy = top / zoom->yfac; /* Pels down to yfac boundary, pels down to bottom. Do the smallest of * these for first y loop. */ const int ptbound = (iy + 1) * zoom->yfac - top; const int ptbot = bottom - top; int yt = VIPS_MIN( ptbound, ptbot ); int x, y, z, i; /* Only know this. */ g_assert( right - left >= 0 && bottom - top >= 0 ); /* Have to loop over output. */ for( y = top; y < bottom; ) { VipsPel *p = VIPS_REGION_ADDR( ir, ix, y / zoom->yfac ); VipsPel *q = VIPS_REGION_ADDR( or, left, y ); VipsPel *r; /* Output pels until we jump the input pointer. */ int xt = (ix + 1) * zoom->xfac - left; /* Loop for this output line. */ r = q; for( x = left; x < right; x++ ) { /* Copy 1 pel. */ for( i = 0; i < ps; i++ ) r[i] = p[i]; r += ps; /* Move input if on boundary. */ --xt; if( xt == 0 ) { xt = zoom->xfac; p += ps; } } /* Repeat that output line until the bottom of this pixel * boundary, or we hit bottom. */ r = q + ls; for( z = 1; z < yt; z++ ) { memcpy( r, q, rs ); r += ls; } /* Move y on by the number of lines we wrote. */ y += yt; /* Reset yt for next iteration. */ yt = zoom->yfac; } } /* Zoom a VipsRegion. */ static int vips_zoom_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsZoom *zoom = (VipsZoom *) b; /* Output area we are building. */ const VipsRect *r = &or->valid; const int ri = VIPS_RECT_RIGHT( r ); const int bo = VIPS_RECT_BOTTOM(r); VipsRect s; int left, right, top, bottom; int width, height; /* Area of input we need. We have to round out, as we may have * part-pixels all around the edges. */ left = VIPS_ROUND_DOWN( r->left, zoom->xfac ); right = VIPS_ROUND_UP( ri, zoom->xfac ); top = VIPS_ROUND_DOWN( r->top, zoom->yfac ); bottom = VIPS_ROUND_UP( bo, zoom->yfac ); width = right - left; height = bottom - top; s.left = left / zoom->xfac; s.top = top / zoom->yfac; s.width = width / zoom->xfac; s.height = height / zoom->yfac; if( vips_region_prepare( ir, &s ) ) return( -1 ); /* Find the part of the output (if any) which uses only whole pels. */ left = VIPS_ROUND_UP( r->left, zoom->xfac ); right = VIPS_ROUND_DOWN( ri, zoom->xfac ); top = VIPS_ROUND_UP( r->top, zoom->yfac ); bottom = VIPS_ROUND_DOWN( bo, zoom->yfac ); width = right - left; height = bottom - top; /* Stage 1: we just paint the whole pels in the centre of the region. * As we know they are not clipped, we can do it quickly. */ if( width > 0 && height > 0 ) vips_zoom_paint_whole( or, ir, zoom, left, right, top, bottom ); /* Just fractional pixels left. Paint in the top, left, right and * bottom parts. */ if( top - r->top > 0 ) /* Some top pixels. */ vips_zoom_paint_part( or, ir, zoom, r->left, ri, r->top, VIPS_MIN( top, bo ) ); if( left - r->left > 0 && height > 0 ) /* Left pixels. */ vips_zoom_paint_part( or, ir, zoom, r->left, VIPS_MIN( left, ri ), top, bottom ); if( ri - right > 0 && height > 0 ) /* Right pixels. */ vips_zoom_paint_part( or, ir, zoom, VIPS_MAX( right, r->left ), ri, top, bottom ); if( bo - bottom > 0 && height >= 0 ) /* Bottom pixels. */ vips_zoom_paint_part( or, ir, zoom, r->left, ri, VIPS_MAX( bottom, r->top ), bo ); return( 0 ); } static int vips_zoom_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsZoom *zoom = (VipsZoom *) object; if( VIPS_OBJECT_CLASS( vips_zoom_parent_class )->build( object ) ) return( -1 ); g_assert( zoom->xfac > 0 ); g_assert( zoom->yfac > 0 ); /* Make sure we won't get integer overflow. */ if( (double) zoom->in->Xsize * zoom->xfac > (double) INT_MAX / 2 || (double) zoom->in->Ysize * zoom->yfac > (double) INT_MAX / 2 ) { vips_error( class->nickname, "%s", _( "zoom factors too large" ) ); return( -1 ); } if( zoom->xfac == 1 && zoom->yfac == 1 ) return( vips_image_write( zoom->in, conversion->out ) ); if( vips_image_pio_input( zoom->in ) || vips_check_coding_known( class->nickname, zoom->in ) ) return( -1 ); /* Set demand hints. THINSTRIP will prevent us from using * vips_zoom_paint_whole() much ... so go for FATSTRIP. */ if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_FATSTRIP, zoom->in, NULL ) ) return( -1 ); conversion->out->Xsize = zoom->in->Xsize * zoom->xfac; conversion->out->Ysize = zoom->in->Ysize * zoom->yfac; if( vips_image_generate( conversion->out, vips_start_one, vips_zoom_gen, vips_stop_one, zoom->in, zoom ) ) return( -1 ); return( 0 ); } static void vips_zoom_class_init( VipsZoomClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "zoom"; vobject_class->description = _( "zoom an image" ); vobject_class->build = vips_zoom_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "input", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsZoom, in ) ); VIPS_ARG_INT( class, "xfac", 3, _( "Xfac" ), _( "Horizontal zoom factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsZoom, xfac ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "yfac", 4, _( "Yfac" ), _( "Vertical zoom factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsZoom, yfac ), 1, VIPS_MAX_COORD, 1 ); } static void vips_zoom_init( VipsZoom *zoom ) { } /** * vips_zoom: (method) * @in: input image * @out: (out): output image * @xfac: horizontal scale factor * @yfac: vertical scale factor * @...: %NULL-terminated list of optional named arguments * * Zoom an image by repeating pixels. This is fast nearest-neighbour * zoom. * * See also: vips_affine(), vips_subsample(). * * Returns: 0 on success, -1 on error. */ int vips_zoom( VipsImage *in, VipsImage **out, int xfac, int yfac, ... ) { va_list ap; int result; va_start( ap, yfac ); result = vips_call_split( "zoom", ap, in, out, xfac, yfac ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/000077500000000000000000000000001361153320700172315ustar00rootroot00000000000000libvips-8.9.1/libvips/convolution/Makefile.am000066400000000000000000000005651361153320700212730ustar00rootroot00000000000000noinst_LTLIBRARIES = libconvolution.la libconvolution_la_SOURCES = \ canny.c \ sobel.c \ convolution.c \ pconvolution.h \ correlation.c \ correlation.h \ conv.c \ conva.c \ convf.c \ convi.c \ convasep.c \ convsep.c \ compass.c \ fastcor.c \ spcor.c \ sharpen.c \ gaussblur.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ libvips-8.9.1/libvips/convolution/canny.c000066400000000000000000000275531361153320700205210ustar00rootroot00000000000000/* Canny edge detector */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsCanny { VipsOperation parent_instance; VipsImage *in; VipsImage *out; double sigma; VipsPrecision precision; /* Need an image vector for start_many. */ VipsImage *args[3]; } VipsCanny; typedef VipsOperationClass VipsCannyClass; G_DEFINE_TYPE( VipsCanny, vips_canny, VIPS_TYPE_OPERATION ); /* Simple 2x2 -1/+1 difference. For uchar, we try to hit the vector path and * use an offset rather than -ves. Otherwise it's float or double output. */ static int vips_canny_gradient( VipsImage *in, VipsImage **Gx, VipsImage **Gy ) { VipsImage *scope; VipsImage **t; VipsPrecision precision; scope = vips_image_new(); t = (VipsImage **) vips_object_local_array( (VipsObject *) scope, 2 ); t[0] = vips_image_new_matrixv( 2, 2, -1.0, 1.0, -1.0, 1.0 ); if( in->BandFmt == VIPS_FORMAT_UCHAR ) { precision = VIPS_PRECISION_INTEGER; vips_image_set_double( t[0], "offset", 128.0 ); } else precision = VIPS_PRECISION_FLOAT; if( vips_conv( in, Gx, t[0], "precision", precision, NULL ) || vips_rot90( t[0], &t[1], NULL ) || vips_conv( in, Gy, t[1], "precision", precision, NULL ) ) { g_object_unref( scope ); return( -1 ); } g_object_unref( scope ); return( 0 ); } /* LUT for calculating atan2() with +/- 4 bits of precision in each axis. */ static VipsPel vips_canny_polar_atan2[256]; /* For the uchar path, gx/gy are -128 to +127, and we need -8 to +7 for the * atan2 LUT. * * For G, we should calculate sqrt( gx * gx + gy * gy ), however we are only * interested in relative magnitude (max of sqrt), so we can skip the sqrt * itself. We need a result that will fit in 0 - 255, so shift down. */ #define POLAR_UCHAR { \ for( x = 0; x < r->width; x++ ) { \ for( band = 0; band < Gx->Bands; band++ ) { \ int gx = p1[band] - 128; \ int gy = p2[band] - 128; \ \ int i = ((gx >> 4) & 0xf) | (gy & 0xf0); \ \ q[0] = (gx * gx + gy * gy + 256) >> 9; \ q[1] = vips_canny_polar_atan2[i]; \ \ q += 2; \ } \ \ p1 += Gx->Bands; \ p2 += Gx->Bands; \ } \ } /* Float/double path. We keep the same ranges as the uchar path to reduce * confusion. */ #define POLAR( TYPE ) { \ TYPE *tp1 = (TYPE *) p1; \ TYPE *tp2 = (TYPE *) p2; \ TYPE *tq = (TYPE *) q; \ \ for( x = 0; x < r->width; x++ ) { \ for( band = 0; band < Gx->Bands; band++ ) { \ double gx = tp1[band]; \ double gy = tp2[band]; \ double theta = VIPS_DEG( atan2( gx, gy ) ); \ \ tq[0] = (gx * gx + gy * gy + 256.0) / 512.0; \ tq[1] = 256.0 * fmod( theta + 360.0, 360.0 ) / 360.0; \ \ tq += 2; \ } \ \ tp1 += Gx->Bands; \ tp2 += Gx->Bands; \ } \ } static int vips_canny_polar_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion **in = (VipsRegion **) vseq; VipsRect *r = &or->valid; VipsImage *Gx = in[0]->im; int x, y, band; if( vips_reorder_prepare_many( or->im, in, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *p1 = (VipsPel * restrict) VIPS_REGION_ADDR( in[0], r->left, r->top + y ); VipsPel *p2 = (VipsPel * restrict) VIPS_REGION_ADDR( in[1], r->left, r->top + y ); VipsPel *q = (VipsPel * restrict) VIPS_REGION_ADDR( or, r->left, r->top + y ); switch( Gx->BandFmt ) { case VIPS_FORMAT_UCHAR: POLAR_UCHAR; break; case VIPS_FORMAT_FLOAT: POLAR( float ); break; case VIPS_FORMAT_DOUBLE: POLAR( double ); break; default: g_assert( FALSE ); } } return( 0 ); } static void * vips_atan2_init( void *null ) { int i; for( i = 0; i < 256; i++ ) { /* Use the bottom 4 bits for x, the top 4 for y. The double * shift does sign extension, assuming 2s complement. */ int bits = sizeof( int ) * 8 - 4; int x = ((i & 0xf) << bits) >> bits; int y = ((i >> 4) & 0x0f) << bits >> bits; double theta = VIPS_DEG( atan2( x, y ) ) + 360; vips_canny_polar_atan2[i] = 256 * theta / 360; } return( NULL ); } /* Calculate G/theta from Gx/Gy. We code theta as 0-256 for 0-360 * and skip the sqrt on G. * * For a white disc on a black background, theta is 0 at the top, 64 on the * left, 128 on the right and 192 on the right edge. */ static int vips_canny_polar( VipsImage **args, VipsImage **out ) { static GOnce once = G_ONCE_INIT; g_once( &once, (GThreadFunc) vips_atan2_init, NULL ); *out = vips_image_new(); if( vips_image_pipeline_array( *out, VIPS_DEMAND_STYLE_THINSTRIP, args ) ) return( -1 ); (*out)->Bands *= 2; if( vips_image_generate( *out, vips_start_many, vips_canny_polar_generate, vips_stop_many, args, NULL ) ) return( -1 ); return( 0 ); } #define THIN( TYPE ) { \ TYPE *tp = (TYPE *) p; \ TYPE *tq = (TYPE *) q; \ \ for( x = 0; x < r->width; x++ ) { \ for( band = 0; band < out_bands; band++ ) { \ TYPE G = tp[lsk + psk]; \ TYPE theta = tp[lsk + psk + 1]; \ int low_theta = ((int) (theta / 32)) & 0x7; \ int high_theta = (low_theta + 1) & 0x7; \ TYPE residual = theta - low_theta * 32; \ TYPE lowa = tp[offset[low_theta]]; \ TYPE lowb = tp[offset[high_theta]]; \ TYPE low = (lowa * (32 - residual) + \ lowb * residual) / 32; \ TYPE higha = tp[offset[(low_theta + 4) & 0x7]]; \ TYPE highb = tp[offset[(high_theta + 4) & 0x7]]; \ TYPE high = (higha * (32 - residual) + \ highb * residual) / 32; \ \ if( G <= low || \ G < high ) \ G = 0; \ \ tq[band] = G; \ \ tp += 2; \ } \ \ tq += out_bands; \ } \ } static int vips_canny_thin_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion *in = (VipsRegion *) vseq; VipsRect *r = &or->valid; VipsImage *im = in->im; int out_bands = or->im->Bands; VipsRect rect; int x, y, band; int lsk; int psk; int offset[8]; rect = *r; rect.width += 2; rect.height += 2; if( vips_region_prepare( in, &rect ) ) return( -1 ); /* These are in typed units. */ lsk = VIPS_REGION_LSKIP( in ) / VIPS_IMAGE_SIZEOF_ELEMENT( im ); psk = VIPS_IMAGE_SIZEOF_PEL( im ) / VIPS_IMAGE_SIZEOF_ELEMENT( im ); /* For each of the 8 directions, the offset to get to that pixel from * the top-left of the 3x3. * * 1 | 0 | 7 * --+---+-- * 2 | X | 6 * --+---+-- * 3 | 4 | 5 */ offset[0] = psk; offset[1] = 0; offset[2] = lsk; offset[3] = 2 * lsk; offset[4] = 2 * lsk + psk; offset[5] = 2 * lsk + 2 * psk; offset[6] = lsk + 2 * psk; offset[7] = 2 * psk; for( y = 0; y < r->height; y++ ) { VipsPel *p = (VipsPel * restrict) VIPS_REGION_ADDR( in, r->left, r->top + y ); VipsPel *q = (VipsPel * restrict) VIPS_REGION_ADDR( or, r->left, r->top + y ); switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: THIN( unsigned char ); break; case VIPS_FORMAT_FLOAT: THIN( float ); break; case VIPS_FORMAT_DOUBLE: THIN( double ); break; default: g_assert( FALSE ); } } return( 0 ); } /* Remove non-maximal edges. At each point, compare the G to the G in either * direction and 0 it if it's not the largest. */ static int vips_canny_thin( VipsImage *in, VipsImage **out ) { *out = vips_image_new(); if( vips_image_pipelinev( *out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); (*out)->Bands /= 2; (*out)->Xsize -= 2; (*out)->Ysize -= 2; if( vips_image_generate( *out, vips_start_one, vips_canny_thin_generate, vips_stop_one, in, NULL ) ) return( -1 ); return( 0 ); } static int vips_canny_build( VipsObject *object ) { VipsCanny *canny = (VipsCanny *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 6 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_canny_parent_class )->build( object ) ) return( -1 ); in = canny->in; if( vips_gaussblur( in, &t[0], canny->sigma, "precision", canny->precision, NULL ) ) return( -1 ); in = t[0]; if( vips_canny_gradient( in, &t[1], &t[2] ) ) return( -1 ); /* Form (G, theta). */ canny->args[0] = t[1]; canny->args[1] = t[2]; canny->args[2] = NULL; if( vips_canny_polar( canny->args, &t[3] ) ) return( -1 ); in = t[3]; /* Expand by two pixels all around, then thin in the direction of the * gradient. */ if( vips_embed( in, &t[4], 1, 1, in->Xsize + 2, in->Ysize + 2, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); if( vips_canny_thin( t[4], &t[5] ) ) return( -1 ); in = t[5]; g_object_set( object, "out", vips_image_new(), NULL ); if( vips_image_write( in, canny->out ) ) return( -1 ); return( 0 ); } static void vips_canny_class_init( VipsCannyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "canny"; object_class->description = _( "Canny edge detector" ); object_class->build = vips_canny_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCanny, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsCanny, out ) ); VIPS_ARG_DOUBLE( class, "sigma", 10, _( "Sigma" ), _( "Sigma of Gaussian" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCanny, sigma ), 0.01, 1000, 1.4 ); VIPS_ARG_ENUM( class, "precision", 103, _( "Precision" ), _( "Convolve with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCanny, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_FLOAT ); } static void vips_canny_init( VipsCanny *canny ) { canny->sigma = 1.4; canny->precision = VIPS_PRECISION_FLOAT; } /** * vips_canny: (method) * @in: input image * @out: (out): output image * @sigma: how large a mask to use * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @sigma: %gdouble, sigma for gaussian blur * * @precision: #VipsPrecision, calculation accuracy * * Find edges by Canny's method: The maximum of the derivative of the gradient * in the direction of the gradient. Output is float, except for uchar input, * where output is uchar, and double input, where output is double. Non-complex * images only. * * Use @sigma to control the scale over which gradient is measured. 1.4 is * usually a good value. * * Use @precision to set the precision of edge detection. For uchar images, * setting this to #VIPS_PRECISION_INTEGER will make edge detection much * faster, but sacrifice some sensitivity. * * You will probably need to process the output further to eliminate weak * edges. * * See also: vips_sobel(). * * Returns: 0 on success, -1 on error. */ int vips_canny( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "canny", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/compass.c000066400000000000000000000144551361153320700210530ustar00rootroot00000000000000/* repeatedly convolve with a rotating mask * * 23/10/13 * - from vips_conv() * 8/5/17 * - default to float ... int will often lose precision and should not be * the default * 2/11/17 * - add MIN mode */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pconvolution.h" typedef struct { VipsConvolution parent_instance; int times; VipsAngle45 angle; VipsCombine combine; VipsPrecision precision; int layers; int cluster; } VipsCompass; typedef VipsConvolutionClass VipsCompassClass; G_DEFINE_TYPE( VipsCompass, vips_compass, VIPS_TYPE_CONVOLUTION ); static int vips_compass_build( VipsObject *object ) { VipsConvolution *convolution = (VipsConvolution *) object; VipsCompass *compass = (VipsCompass *) object; VipsImage **masks; VipsImage *mask; VipsImage **images; int i; VipsImage **abs; VipsImage **combine; VipsImage *x; g_object_set( compass, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_compass_parent_class )->build( object ) ) return( -1 ); masks = (VipsImage **) vips_object_local_array( object, compass->times ); images = (VipsImage **) vips_object_local_array( object, compass->times ); abs = (VipsImage **) vips_object_local_array( object, compass->times ); combine = (VipsImage **) vips_object_local_array( object, compass->times ); mask = convolution->M; for( i = 0; i < compass->times; i++ ) { if( vips_conv( convolution->in, &images[i], mask, "precision", compass->precision, "layers", compass->layers, "cluster", compass->cluster, NULL ) ) return( -1 ); if( vips_rot45( mask, &masks[i], "angle", compass->angle, NULL ) ) return( -1 ); mask = masks[i]; } for( i = 0; i < compass->times; i++ ) if( vips_abs( images[i], &abs[i], NULL ) ) return( -1 ); switch( compass->combine ) { case VIPS_COMBINE_MAX: if( vips_bandrank( abs, &combine[0], compass->times, "index", compass->times - 1, NULL ) ) return( -1 ); x = combine[0]; break; case VIPS_COMBINE_MIN: if( vips_bandrank( abs, &combine[0], compass->times, "index", 0, NULL ) ) return( -1 ); x = combine[0]; break; case VIPS_COMBINE_SUM: if( vips_sum( abs, &combine[0], compass->times, NULL ) ) return( -1 ); x = combine[0]; break; default: g_assert_not_reached(); /* Stop compiler warnings. */ x = NULL; } if( vips_image_write( x, convolution->out ) ) return( -1 ); return( 0 ); } static void vips_compass_class_init( VipsCompassClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "compass"; object_class->description = _( "convolve with rotating mask" ); object_class->build = vips_compass_build; VIPS_ARG_INT( class, "times", 101, _( "Times" ), _( "Rotate and convolve this many times" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, times ), 1, 1000, 2 ); VIPS_ARG_ENUM( class, "angle", 103, _( "Angle" ), _( "Rotate mask by this much between convolutions" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, angle ), VIPS_TYPE_ANGLE45, VIPS_ANGLE45_D90 ); VIPS_ARG_ENUM( class, "combine", 104, _( "Combine" ), _( "Combine convolution results like this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, combine ), VIPS_TYPE_COMBINE, VIPS_COMBINE_MAX ); VIPS_ARG_ENUM( class, "precision", 203, _( "Precision" ), _( "Convolve with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_FLOAT ); VIPS_ARG_INT( class, "layers", 204, _( "Layers" ), _( "Use this many layers in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, layers ), 1, 1000, 5 ); VIPS_ARG_INT( class, "cluster", 205, _( "Cluster" ), _( "Cluster lines closer than this in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, cluster ), 1, 100, 1 ); } static void vips_compass_init( VipsCompass *compass ) { compass->times = 2; compass->angle = VIPS_ANGLE45_D90; compass->combine = VIPS_COMBINE_MAX; compass->precision = VIPS_PRECISION_FLOAT; compass->layers = 5; compass->cluster = 1; } /** * vips_compass: (method) * @in: input image * @out: (out): output image * @mask: convolve with this mask * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @times: %gint, how many times to rotate and convolve * * @angle: #VipsAngle45, rotate mask by this much between colvolutions * * @combine: #VipsCombine, combine results like this * * @precision: #VipsPrecision, precision for blur, default float * * @layers: %gint, number of layers for approximation * * @cluster: %gint, cluster lines closer than this distance * * This convolves @in with @mask @times times, rotating @mask by @angle * each time. By default, it comvolves twice, rotating by 90 degrees, taking * the maximum result. * * See also: vips_conv(). * * Returns: 0 on success, -1 on error. */ int vips_compass( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "compass", ap, in, out, mask ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/conv.c000066400000000000000000000144751361153320700203550ustar00rootroot00000000000000/* convolution * * 12/8/13 * - from vips_hist_cum() * 8/5/17 * - default to float ... int will often lose precision and should not be * the default */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* This is a simple wrapper over the old vips7 functions. At some point we * should rewrite this as a pure vips8 class and redo the vips7 functions as * wrappers over this. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pconvolution.h" typedef struct { VipsConvolution parent_instance; VipsPrecision precision; int layers; int cluster; } VipsConv; typedef VipsConvolutionClass VipsConvClass; G_DEFINE_TYPE( VipsConv, vips_conv, VIPS_TYPE_CONVOLUTION ); static int vips_conv_build( VipsObject *object ) { VipsConvolution *convolution = (VipsConvolution *) object; VipsConv *conv = (VipsConv *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_conv_parent_class )->build( object ) ) return( -1 ); g_object_set( conv, "out", vips_image_new(), NULL ); in = convolution->in; /* printf( "vips_conv_build: convolving with:\n" ); vips_matrixprint( convolution->M, NULL ); */ /* Unpack for processing. */ if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; switch( conv->precision ) { case VIPS_PRECISION_FLOAT: if( vips_convf( in, &t[1], convolution->M, NULL ) || vips_image_write( t[1], convolution->out ) ) return( -1 ); break; case VIPS_PRECISION_INTEGER: if( vips_convi( in, &t[1], convolution->M, NULL ) || vips_image_write( t[1], convolution->out ) ) return( -1 ); break; case VIPS_PRECISION_APPROXIMATE: if( vips_conva( in, &t[1], convolution->M, "layers", conv->layers, "cluster", conv->cluster, NULL ) || vips_image_write( t[1], convolution->out ) ) return( -1 ); break; default: g_assert_not_reached(); } vips_reorder_margin_hint( convolution->out, convolution->M->Xsize * convolution->M->Ysize ); return( 0 ); } static void vips_conv_class_init( VipsConvClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "conv"; object_class->description = _( "convolution operation" ); object_class->build = vips_conv_build; VIPS_ARG_ENUM( class, "precision", 103, _( "Precision" ), _( "Convolve with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConv, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_FLOAT ); VIPS_ARG_INT( class, "layers", 104, _( "Layers" ), _( "Use this many layers in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConv, layers ), 1, 1000, 5 ); VIPS_ARG_INT( class, "cluster", 105, _( "Cluster" ), _( "Cluster lines closer than this in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConv, cluster ), 1, 100, 1 ); } static void vips_conv_init( VipsConv *conv ) { conv->precision = VIPS_PRECISION_FLOAT; conv->layers = 5; conv->cluster = 1; } /** * vips_conv: (method) * @in: input image * @out: (out): output image * @mask: convolve with this mask * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @precision: #VipsPrecision, calculation accuracy * * @layers: %gint, number of layers for approximation * * @cluster: %gint, cluster lines closer than this distance * * Convolution. * * Perform a convolution of @in with @mask. * Each output pixel is calculated as: * * |[ * sigma[i]{pixel[i] * mask[i]} / scale + offset * ]| * * where scale and offset are part of @mask. * * By default, @precision is * #VIPS_PRECISION_FLOAT. The output image * is always #VIPS_FORMAT_FLOAT unless @in is #VIPS_FORMAT_DOUBLE, in which case * @out is also #VIPS_FORMAT_DOUBLE. * * If @precision is #VIPS_PRECISION_INTEGER, then * elements of @mask are converted to * integers before convolution, using rint(), * and the output image * always has the same #VipsBandFormat as the input image. * * For #VIPS_FORMAT_UCHAR images and #VIPS_PRECISION_INTEGER @precision, * vips_conv() uses a fast vector path based on * fixed-point arithmetic. This can produce slightly different results. * Disable the vector path with `--vips-novector` or `VIPS_NOVECTOR` or * vips_vector_set_enabled(). * * If @precision is #VIPS_PRECISION_APPROXIMATE then, like * #VIPS_PRECISION_INTEGER, @mask is converted to int before convolution, and * the output image * always has the same #VipsBandFormat as the input image. * * Larger values for @layers give more accurate * results, but are slower. As @layers approaches the mask radius, the * accuracy will become close to exact convolution and the speed will drop to * match. For many large masks, such as Gaussian, @n_layers need be only 10% of * this value and accuracy will still be good. * * Smaller values of @cluster will give more accurate results, but be slower * and use more memory. 10% of the mask radius is a good rule of thumb. * * See also: vips_convsep(). * * Returns: 0 on success, -1 on error */ int vips_conv( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "conv", ap, in, out, mask ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/conva.c000066400000000000000000000756121361153320700205160ustar00rootroot00000000000000/* conva ... approximate convolution * * This operation does an approximate convolution. * * Author: John Cupitt & Nicolas Robidoux * Written on: 31/5/11 * Modified on: * 31/5/11 * - from im_aconvsep() * 10/7/16 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* See: http://incubator.quasimondo.com/processing/stackblur.pde This thing is a little like stackblur, but generalised to any 2D convolution. */ /* TODO timing: $ time vips im_conv_f img_0075.jpg x2.v g2d201.con real 5m3.359s user 9m34.700s sys 0m1.500s $ time vips im_aconv img_0075.jpg x.v g2d201.con 10 10 real 0m3.151s user 0m5.640s sys 0m0.100s $ vips im_subtract x.v x2.v diff.v $ vips im_abs diff.v abs.v $ vips im_max abs.v 2.70833 - are we handling mask offset correctly? - could we do better with an h and a v cumulativization image? we might not need the huge intermediate we have now, since any line sum an be found with simple indexing */ /* #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include "pconvolution.h" /* Maximum number of boxes we can break the mask into. Don't have this too * high, it'll make the instance huge, and gobject has a 64kb limit. */ #define MAX_LINES (1000) /* The number of edges we consider at once in clustering. Higher values are * faster, but risk pushing up average error in the result. */ #define MAX_EDGES (1000) /* A horizontal line in the mask. */ typedef struct _HLine { /* Start is the left-most pixel in the line, end is one beyond the * right-most pixel. */ int start; int end; /* The hlines have weights. weight 0 means this line is unused. */ int weight; } HLine; /* For clustering. A pair of hlines and their distance. An edge in a graph. */ typedef struct _Edge { /* The index into boxes->hline[]. */ int a; int b; /* The distance between them, see boxes_distance(). */ int d; } Edge; /* An element of a vline. */ typedef struct _VElement { /* band is the index into hline[] we add, row is the row we take * it from. */ int band; int row; /* Negative lobes are made with factor -1, we also common-up repeated * additions of the same line. */ int factor; } VElement; /* A vline. */ typedef struct _VLine { int band; int factor; int start; int end; } VLine; /* A set of boxes. */ typedef struct { VipsConvolution parent_instance; VipsImage *iM; int layers; int cluster; int divisor; int rounding; int offset; /* The horizontal lines we gather. hline[3] writes to band 3 in the * intermediate image. max_line is the length of the longest hline: * over 256 and we need to use an int intermediate for 8-bit images. */ int n_hline; HLine hline[MAX_LINES]; int max_line; /* During clustering, the top few edges we are considering. */ Edge edge[MAX_EDGES]; /* Scale and sum a set of hlines to make the final value. */ int n_velement; VElement velement[MAX_LINES]; /* And group those velements as vlines. */ int n_vline; VLine vline[MAX_LINES]; } VipsConva; typedef VipsConvolutionClass VipsConvaClass; G_DEFINE_TYPE( VipsConva, vips_conva, VIPS_TYPE_CONVOLUTION ); /* Euclid's algorithm. Use this to common up mults. */ static int gcd( int a, int b ) { if( b == 0 ) return( abs( a ) ); else return( gcd( b, a % b ) ); } static void vips_conva_hline_start( VipsConva *conva, int x ) { conva->hline[conva->n_hline].start = x; conva->hline[conva->n_hline].weight = 1; } static int vips_conva_hline_end( VipsConva *conva, int x, int y, int factor ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( conva ); conva->hline[conva->n_hline].end = x; conva->velement[conva->n_velement].row = y; conva->velement[conva->n_velement].band = conva->n_hline; conva->velement[conva->n_velement].factor = factor; if( conva->n_hline >= MAX_LINES - 1 ) { vips_error( class->nickname, "%s", _( "mask too complex" ) ); return( -1 ); } conva->n_hline += 1; if( conva->n_velement >= MAX_LINES - 1 ) { vips_error( class->nickname, "%s", _( "mask too complex" ) ); return( -1 ); } conva->n_velement += 1; return( 0 ); } #ifdef DEBUG static void vips_conva_hprint( VipsConva *conva ) { int x, y; printf( "hlines:\n" ); printf( " n b r f w\n" ); for( y = 0; y < conva->n_velement; y++ ) { int b = conva->velement[y].band; printf( "%4d %3d %3d %2d %3d ", y, b, conva->velement[y].row, conva->velement[y].factor, conva->hline[b].weight ); for( x = 0; x < 45; x++ ) { int rx = x * (conva->iM->Xsize + 1) / 45; if( rx >= conva->hline[b].start && rx < conva->hline[b].end ) printf( "#" ); else printf( " " ); } printf( " %3d .. %3d\n", conva->hline[b].start, conva->hline[b].end ); } } static void vips_conva_vprint( VipsConva *conva ) { int y; printf( "%d vlines:\n", conva->n_vline ); printf( " n b f s e\n" ); for( y = 0; y < conva->n_vline; y++ ) printf( "%4d %2d %2d == %3d .. %3d\n", y, conva->vline[y].band, conva->vline[y].factor, conva->vline[y].start, conva->vline[y].end ); printf( "divisor = %d\n", conva->divisor ); printf( "rounding = %d\n", conva->rounding ); printf( "offset = %d\n", conva->offset ); printf( "max_line = %d\n", conva->max_line ); } #endif /*DEBUG*/ /* Break the mask into a set of hlines. */ static int vips_conva_decompose_hlines( VipsConva *conva ) { VipsImage *iM = conva->iM; const int size = iM->Xsize * iM->Ysize; double *coeff = VIPS_MATRIX( iM, 0, 0 ); double max; double min; double depth; int layers_above; int layers_below; int z, n, x, y; /* Find mask range. We must always include the zero axis in the mask. */ max = 0; min = 0; for( n = 0; n < size; n++ ) { max = VIPS_MAX( max, coeff[n] ); min = VIPS_MIN( min, coeff[n] ); } VIPS_DEBUG_MSG( "vips_conva_decompose_hlines: min = %g, max = %g\n", min, max ); /* The zero axis must fall on a layer boundary. Estimate the * depth, find n-lines-above-zero, get exact depth, then calculate a * fixed n-lines which includes any negative parts. */ depth = (max - min) / conva->layers; layers_above = VIPS_CEIL( max / depth ); depth = max / layers_above; layers_below = VIPS_FLOOR( min / depth ); conva->layers = layers_above - layers_below; VIPS_DEBUG_MSG( "vips_conva_decompose_hlines: depth = %g, layers = %d\n", depth, conva->layers ); /* For each layer, generate a set of lines which are inside the * perimeter. Work down from the top. */ for( z = 0; z < conva->layers; z++ ) { /* How deep we are into the mask, as a double we can test * against. Add half the layer depth so we can easily find >50% * mask elements. */ double z_ph = max - (1 + z) * depth + depth / 2; /* Odd, but we must avoid rounding errors that make us miss 0 * in the line above. */ int z_positive = z < layers_above; for( y = 0; y < iM->Ysize; y++ ) { int inside; /* Start outside the perimeter. */ inside = 0; for( x = 0; x < iM->Xsize; x++ ) { double c = coeff[x + y * iM->Xsize]; /* The vertical line from mask[x, y] to 0 is * inside. Is our current square (x, y) part * of that line? */ if( (z_positive && c >= z_ph) || (!z_positive && c <= z_ph) ) { if( !inside ) { vips_conva_hline_start( conva, x ); inside = 1; } } else { if( inside ) { if( vips_conva_hline_end( conva, x, y, z_positive ? 1 : -1 ) ) return( -1 ); inside = 0; } } } if( inside && vips_conva_hline_end( conva, iM->Xsize, y, z_positive ? 1 : -1 ) ) return( -1 ); } } #ifdef DEBUG VIPS_DEBUG_MSG( "vips_conva_decompose_hlines: generated %d hlines\n", conva->n_hline ); vips_conva_hprint( conva ); #endif /*DEBUG*/ return( 0 ); } /* The 'distance' between a pair of hlines. */ static int vips_conva_distance( VipsConva *conva, int a, int b ) { g_assert( conva->hline[a].weight > 0 && conva->hline[b].weight > 0 ); return( abs( conva->hline[a].start - conva->hline[b].start ) + abs( conva->hline[a].end - conva->hline[b].end ) ); } /* Merge two hlines. Line b is deleted, and any refs to b in vlines updated to * point at a. */ static void vips_conva_merge( VipsConva *conva, int a, int b ) { int i; /* Scale weights. */ int fa = conva->hline[a].weight; int fb = conva->hline[b].weight; double w = (double) fb / (fa + fb); /* New endpoints. */ conva->hline[a].start += w * (conva->hline[b].start - conva->hline[a].start); conva->hline[a].end += w * (conva->hline[b].end - conva->hline[a].end); conva->hline[a].weight += conva->hline[b].weight; /* Update velement refs to b to refer to a instead. */ for( i = 0; i < conva->n_velement; i++ ) if( conva->velement[i].band == b ) conva->velement[i].band = a; /* Mark b to be deleted. */ conva->hline[b].weight = 0; } static int edge_sortfn( const void *p1, const void *p2 ) { Edge *a = (Edge *) p1; Edge *b = (Edge *) p2; return( a->d - b->d ); } /* Cluster in batches. Return non-zero if we merged some lines. * * This is not as accurate as rescanning the whole space on every merge, but * it's far faster. */ static int vips_conva_cluster2( VipsConva *conva ) { int i, j, k; int worst; int worst_i; int merged; for( i = 0; i < MAX_EDGES; i++ ) { conva->edge[i].a = -1; conva->edge[i].b = -1; conva->edge[i].d = 99999; } worst_i = 0; worst = conva->edge[worst_i].d; for( i = 0; i < conva->n_hline; i++ ) { if( conva->hline[i].weight == 0 ) continue; for( j = i + 1; j < conva->n_hline; j++ ) { int distance; if( conva->hline[j].weight == 0 ) continue; distance = vips_conva_distance( conva, i, j ); if( distance < worst ) { conva->edge[worst_i].a = i; conva->edge[worst_i].b = j; conva->edge[worst_i].d = distance; worst_i = 0; worst = conva->edge[worst_i].d; for( k = 0; k < MAX_EDGES; k++ ) if( conva->edge[k].d > worst ) { worst = conva->edge[k].d; worst_i = k; } } } } /* Sort to get closest first. */ qsort( conva->edge, MAX_EDGES, sizeof( Edge ), edge_sortfn ); /* printf( "edges:\n" ); printf( " n a b d:\n" ); for( i = 0; i < MAX_EDGES; i++ ) printf( "%2i) %3d %3d %3d\n", i, conva->edge[i].a, conva->edge[i].b, conva->edge[i].d ); */ /* Merge from the top down. */ merged = 0; for( k = 0; k < MAX_EDGES; k++ ) { Edge *edge = &conva->edge[k]; if( edge->d > conva->cluster ) break; /* Has been removed, see loop below. */ if( edge->a == -1 ) continue; vips_conva_merge( conva, edge->a, edge->b ); merged = 1; /* Nodes a and b have vanished or been moved. Remove any edges * which refer to them from the edge list, */ for( i = k; i < MAX_EDGES; i++ ) { Edge *edgei = &conva->edge[i]; if( edgei->a == edge->a || edgei->b == edge->a || edgei->a == edge->b || edgei->b == edge->b ) edgei->a = -1; } } return( merged ); } /* Renumber after clustering. We will have removed a lot of hlines ... shuffle * the rest down, adjust all the vline references. */ static void vips_conva_renumber( VipsConva *conva ) { int i, j; VIPS_DEBUG_MSG( "vips_conva_renumber: renumbering ...\n" ); /* Loop for all zero-weight hlines. */ for( i = 0; i < conva->n_hline; ) { if( conva->hline[i].weight > 0 ) { i++; continue; } /* We move hlines i + 1 down, so we need to adjust all * band[] refs to match. */ for( j = 0; j < conva->n_velement; j++ ) if( conva->velement[j].band > i ) conva->velement[j].band -= 1; memmove( conva->hline + i, conva->hline + i + 1, sizeof( HLine ) * (conva->n_hline - i - 1) ); conva->n_hline -= 1; } VIPS_DEBUG_MSG( "vips_conva_renumber: ... %d hlines remain\n", conva->n_hline ); } /* Sort by band, then factor, then row. */ static int velement_sortfn( const void *p1, const void *p2 ) { VElement *a = (VElement *) p1; VElement *b = (VElement *) p2; if( a->band != b->band ) return( a->band - b->band ); if( a->factor != b->factor ) return( a->factor - b->factor ); return( a->row - b->row ); } static void vips_conva_vline( VipsConva *conva ) { int y, z; VIPS_DEBUG_MSG( "vips_conva_vline: forming vlines ...\n" ); /* Sort to get elements which could form a vline together. */ qsort( conva->velement, conva->n_velement, sizeof( VElement ), velement_sortfn ); #ifdef DEBUG vips_conva_hprint( conva ); #endif /*DEBUG*/ /* If two lines have the same row and band, we can join them and knock * up the factor instead. */ for( y = 0; y < conva->n_velement; y++ ) { for( z = y + 1; z < conva->n_velement; z++ ) if( conva->velement[z].band != conva->velement[y].band || conva->velement[z].row != conva->velement[y].row ) break; /* We need to keep the sign of the old factor. */ if( conva->velement[y].factor > 0 ) conva->velement[y].factor = z - y; else conva->velement[y].factor = y - z; memmove( conva->velement + y + 1, conva->velement + z, sizeof( VElement ) * (conva->n_velement - z) ); conva->n_velement -= z - y - 1; } #ifdef DEBUG printf( "after commoning up, %d velement remain\n", conva->n_velement ); vips_conva_hprint( conva ); #endif /*DEBUG*/ conva->n_vline = 0; for( y = 0; y < conva->n_velement; ) { int n = conva->n_vline; /* Start of a line. */ conva->vline[n].band = conva->velement[y].band; conva->vline[n].factor = conva->velement[y].factor; conva->vline[n].start = conva->velement[y].row; /* Search for the end of this line. */ for( z = y + 1; z < conva->n_velement; z++ ) if( conva->velement[z].band != conva->vline[n].band || conva->velement[z].factor != conva->vline[n].factor || conva->velement[z].row != conva->vline[n].start + z - y ) break; /* So the line ends at the previously examined element. We * want 'end' to be one beyond that (non-inclusive). */ conva->vline[n].end = conva->velement[z - 1].row + 1; conva->n_vline += 1; y = z; } VIPS_DEBUG_MSG( "vips_conva_vline: found %d vlines\n", conva->n_vline ); } /* Break a mask into boxes. */ static int vips_conva_decompose_boxes( VipsConva *conva ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( conva ); VipsImage *iM = conva->iM; double *coeff = VIPS_MATRIX( iM, 0, 0 ); const int size = iM->Xsize * iM->Ysize; double scale = vips_image_get_scale( iM ); double offset = vips_image_get_offset( iM ); double sum; double area; int x, y, z; if( vips_conva_decompose_hlines( conva ) ) return( -1 ); /* Cluster to find groups of lines. */ VIPS_DEBUG_MSG( "vips_conva_decompose_boxes: " "clustering hlines with thresh %d ...\n", conva->cluster ); while( vips_conva_cluster2( conva ) ) ; /* Renumber to remove holes created by clustering. */ vips_conva_renumber( conva ); /* Find a set of vlines for the remaining hlines. */ vips_conva_vline( conva ); /* Find the area of the lines and the length of the longest hline. We * find the absolute area, we don't want -ves to cancel. */ area = 0; conva->max_line = 0; for( y = 0; y < conva->n_velement; y++ ) { x = conva->velement[y].band; z = conva->hline[x].end - conva->hline[x].start; area += abs( conva->velement[y].factor * z ); if( z > conva->max_line ) conva->max_line = z; } /* Strength reduction: if all lines are divisible by n, we can move * that n out into the area factor. The aim is to produce as many * factor 1 lines as we can and to reduce the chance of overflow. */ x = conva->velement[0].factor; for( y = 1; y < conva->n_velement; y++ ) x = gcd( x, conva->velement[y].factor ); for( y = 0; y < conva->n_velement; y++ ) conva->velement[y].factor /= x; area *= x; /* Find the area of the original mask. Again, don't let -ves cancel. */ sum = 0; for( z = 0; z < size; z++ ) sum += fabs( coeff[z] ); conva->divisor = VIPS_RINT( area * scale / sum ); conva->rounding = (conva->divisor + 1) / 2; conva->offset = offset; #ifdef DEBUG vips_conva_hprint( conva ); vips_conva_vprint( conva ); #endif /*DEBUG*/ /* With 512x512 tiles, each hline requires 3mb of intermediate per * thread ... 300 lines is about a gb per thread, ouch. */ if( conva->n_hline > 150 ) { vips_error( class->nickname, "%s", _( "mask too complex" ) ); return( -1 ); } return( 0 ); } /* Our sequence value. */ typedef struct { VipsConva *conva; VipsRegion *ir; /* Input region */ /* Offsets for start and stop. */ int *start; int *end; int last_stride; /* Avoid recalcing offsets, if we can */ /* The rolling sums. int for integer types, double for floating point * types. */ void *sum; } VipsConvaSeq; /* Free a sequence value. */ static int vips_conva_stop( void *vseq, void *a, void *b ) { VipsConvaSeq *seq = (VipsConvaSeq *) vseq; VIPS_UNREF( seq->ir ); return( 0 ); } /* Convolution start function. */ static void * vips_conva_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsConva *conva = (VipsConva *) b; VipsConvaSeq *seq; seq = VIPS_NEW( out, VipsConvaSeq ); seq->conva = conva; seq->ir = vips_region_new( in ); /* n_velement should be the largest possible dimension. */ g_assert( conva->n_velement >= conva->n_hline ); g_assert( conva->n_velement >= conva->n_vline ); seq->start = VIPS_ARRAY( out, conva->n_velement, int ); seq->end = VIPS_ARRAY( out, conva->n_velement, int ); if( vips_band_format_isint( out->BandFmt ) ) seq->sum = VIPS_ARRAY( out, conva->n_velement, int ); else seq->sum = VIPS_ARRAY( out, conva->n_velement, double ); seq->last_stride = -1; return( seq ); } /* The h and v loops are very similar, but also annoyingly different. Keep * them separate for easy debugging. */ #define HCONV( IN, OUT ) \ G_STMT_START { \ for( i = 0; i < bands; i++ ) { \ OUT *seq_sum = (OUT *) seq->sum; \ \ IN *p; \ OUT *q; \ \ p = i + (IN *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); \ q = i * n_hline + \ (OUT *) VIPS_REGION_ADDR( or, r->left, r->top + y ); \ \ for( z = 0; z < n_hline; z++ ) { \ seq_sum[z] = 0; \ for( x = conva->hline[z].start; \ x < conva->hline[z].end; x++ ) \ seq_sum[z] += p[x * istride]; \ q[z] = seq_sum[z]; \ } \ q += ostride; \ \ for( x = 1; x < r->width; x++ ) { \ for( z = 0; z < n_hline; z++ ) { \ seq_sum[z] += p[seq->end[z]]; \ seq_sum[z] -= p[seq->start[z]]; \ q[z] = seq_sum[z]; \ } \ p += istride; \ q += ostride; \ } \ } \ } G_STMT_END /* Do horizontal masks ... we scan the mask along scanlines. */ static int vips_conva_hgenerate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsConvaSeq *seq = (VipsConvaSeq *) vseq; VipsImage *in = (VipsImage *) a; VipsConva *conva = (VipsConva *) b; VipsRegion *ir = seq->ir; const int n_hline = conva->n_hline; VipsImage *iM = conva->iM; VipsRect *r = &or->valid; /* Double the bands (notionally) for complex. */ int bands = vips_band_format_iscomplex( in->BandFmt ) ? 2 * in->Bands : in->Bands; VipsRect s; int x, y, z, i; int istride; int ostride; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += iM->Xsize - 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); istride = VIPS_IMAGE_SIZEOF_PEL( in ) / VIPS_IMAGE_SIZEOF_ELEMENT( in ); ostride = VIPS_IMAGE_SIZEOF_PEL( or->im ) / VIPS_IMAGE_SIZEOF_ELEMENT( or->im ); /* Init offset array. */ if( seq->last_stride != istride ) { seq->last_stride = istride; for( z = 0; z < n_hline; z++ ) { seq->start[z] = conva->hline[z].start * istride; seq->end[z] = conva->hline[z].end * istride; } } for( y = 0; y < r->height; y++ ) { switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: if( conva->max_line < 256 ) HCONV( unsigned char, unsigned short ); else HCONV( unsigned char, unsigned int ); break; case VIPS_FORMAT_CHAR: if( conva->max_line < 256 ) HCONV( signed char, signed short ); else HCONV( signed char, signed int ); break; case VIPS_FORMAT_USHORT: HCONV( unsigned short, unsigned int ); break; case VIPS_FORMAT_SHORT: HCONV( signed short, signed int ); break; case VIPS_FORMAT_UINT: HCONV( unsigned int, unsigned int ); break; case VIPS_FORMAT_INT: HCONV( signed int, signed int ); break; case VIPS_FORMAT_FLOAT: HCONV( float, float ); break; case VIPS_FORMAT_DOUBLE: HCONV( double, double ); break; case VIPS_FORMAT_COMPLEX: HCONV( float, float ); break; case VIPS_FORMAT_DPCOMPLEX: HCONV( double, double ); break; default: g_assert_not_reached(); } } return( 0 ); } static int vips_conva_horizontal( VipsConva *conva, VipsImage *in, VipsImage **out ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( conva ); /* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output * would be 1x1. */ *out = vips_image_new(); if( vips_image_pipelinev( *out, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); (*out)->Xsize -= conva->iM->Xsize - 1; if( (*out)->Xsize <= 0 ) { vips_error( class->nickname, "%s", _( "image too small for mask" ) ); return( -1 ); } (*out)->Bands *= conva->n_hline; /* Short u?char lines can use u?short intermediate. */ if( vips_band_format_isuint( in->BandFmt ) ) (*out)->BandFmt = conva->max_line < 256 ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UINT; else if( vips_band_format_isint( in->BandFmt ) ) (*out)->BandFmt = conva->max_line < 256 ? VIPS_FORMAT_SHORT : VIPS_FORMAT_INT; if( vips_image_generate( *out, vips_conva_start, vips_conva_hgenerate, vips_conva_stop, in, conva ) ) return( -1 ); return( 0 ); } #define CLIP_UCHAR( V ) \ G_STMT_START { \ if( (V) < 0 ) \ (V) = 0; \ else if( (V) > UCHAR_MAX ) \ (V) = UCHAR_MAX; \ } G_STMT_END #define CLIP_CHAR( V ) \ G_STMT_START { \ if( (V) < SCHAR_MIN ) \ (V) = SCHAR_MIN; \ else if( (V) > SCHAR_MAX ) \ (V) = SCHAR_MAX; \ } G_STMT_END #define CLIP_USHORT( V ) \ G_STMT_START { \ if( (V) < 0 ) \ (V) = 0; \ else if( (V) > USHRT_MAX ) \ (V) = USHRT_MAX; \ } G_STMT_END #define CLIP_SHORT( V ) \ G_STMT_START { \ if( (V) < SHRT_MIN ) \ (V) = SHRT_MIN; \ else if( (V) > SHRT_MAX ) \ (V) = SHRT_MAX; \ } G_STMT_END #define CLIP_NONE( V ) {} #define VCONV( ACC, IN, OUT, CLIP ) \ G_STMT_START { \ for( x = 0; x < sz; x++ ) { \ ACC *seq_sum = (ACC *) seq->sum; \ \ IN *p; \ OUT *q; \ ACC sum; \ \ p = x * conva->n_hline + \ (IN *) VIPS_REGION_ADDR( ir, r->left, r->top ); \ q = x + (OUT *) VIPS_REGION_ADDR( or, r->left, r->top ); \ \ sum = 0; \ for( z = 0; z < n_vline; z++ ) { \ seq_sum[z] = 0; \ for( k = conva->vline[z].start; \ k < conva->vline[z].end; k++ ) \ seq_sum[z] += p[k * istride + \ conva->vline[z].band]; \ sum += conva->vline[z].factor * seq_sum[z]; \ } \ sum = (sum + conva->rounding) / conva->divisor + conva->offset; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ \ for( y = 1; y < r->height; y++ ) { \ sum = 0;\ for( z = 0; z < n_vline; z++ ) { \ seq_sum[z] += p[seq->end[z]]; \ seq_sum[z] -= p[seq->start[z]]; \ sum += conva->vline[z].factor * seq_sum[z]; \ } \ p += istride; \ sum = (sum + conva->rounding) / conva->divisor + \ conva->offset; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ } \ } \ } G_STMT_END /* Do vertical masks ... we scan the mask down columns of pixels. */ static int vips_conva_vgenerate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsConvaSeq *seq = (VipsConvaSeq *) vseq; VipsImage *in = (VipsImage *) a; VipsConva *conva = (VipsConva *) b; VipsConvolution *convolution = (VipsConvolution *) conva; VipsRegion *ir = seq->ir; const int n_vline = conva->n_vline; VipsImage *iM = conva->iM; VipsRect *r = &or->valid; /* Double the width (notionally) for complex. */ int sz = vips_band_format_iscomplex( in->BandFmt ) ? 2 * VIPS_REGION_N_ELEMENTS( or ) : VIPS_REGION_N_ELEMENTS( or ); VipsRect s; int x, y, z, k; int istride; int ostride; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.height += iM->Ysize - 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); istride = VIPS_REGION_LSKIP( ir ) / VIPS_IMAGE_SIZEOF_ELEMENT( in ); ostride = VIPS_REGION_LSKIP( or ) / VIPS_IMAGE_SIZEOF_ELEMENT( convolution->out ); /* Init offset array. */ if( seq->last_stride != istride ) { seq->last_stride = istride; for( z = 0; z < n_vline; z++ ) { seq->start[z] = conva->vline[z].band + conva->vline[z].start * istride; seq->end[z] = conva->vline[z].band + conva->vline[z].end * istride; } } switch( convolution->in->BandFmt ) { case VIPS_FORMAT_UCHAR: if( conva->max_line < 256 ) VCONV( unsigned int, \ unsigned short, unsigned char, CLIP_UCHAR ); else VCONV( unsigned int, \ unsigned int, unsigned char, CLIP_UCHAR ); break; case VIPS_FORMAT_CHAR: if( conva->max_line < 256 ) VCONV( signed int, \ signed short, signed char, CLIP_CHAR ); else VCONV( signed int, \ signed int, signed char, CLIP_CHAR ); break; case VIPS_FORMAT_USHORT: VCONV( unsigned int, \ unsigned int, unsigned short, CLIP_USHORT ); break; case VIPS_FORMAT_SHORT: VCONV( signed int, signed int, signed short, CLIP_SHORT ); break; case VIPS_FORMAT_UINT: VCONV( unsigned int, unsigned int, unsigned int, CLIP_NONE ); break; case VIPS_FORMAT_INT: VCONV( signed int, signed int, signed int, CLIP_NONE ); break; case VIPS_FORMAT_FLOAT: VCONV( float, float, float, CLIP_NONE ); break; case VIPS_FORMAT_DOUBLE: VCONV( double, double, double, CLIP_NONE ); break; case VIPS_FORMAT_COMPLEX: VCONV( float, float, float, CLIP_NONE ); break; case VIPS_FORMAT_DPCOMPLEX: VCONV( double, double, double, CLIP_NONE ); break; default: g_assert_not_reached(); } return( 0 ); } static int vips_conva_vertical( VipsConva *conva, VipsImage *in, VipsImage **out ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( conva ); VipsConvolution *convolution = (VipsConvolution *) conva; /* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output * would be 1x1. */ *out = vips_image_new(); if( vips_image_pipelinev( *out, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); (*out)->Ysize -= conva->iM->Ysize - 1; if( (*out)->Ysize <= 0 ) { vips_error( class->nickname, "%s", _( "image too small for mask" ) ); return( -1 ); } (*out)->Bands = convolution->in->Bands; (*out)->BandFmt = convolution->in->BandFmt; if( vips_image_generate( *out, vips_conva_start, vips_conva_vgenerate, vips_conva_stop, in, conva ) ) return( -1 ); return( 0 ); } static int vips_conva_build( VipsObject *object ) { VipsConvolution *convolution = (VipsConvolution *) object; VipsConva *conva = (VipsConva *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_conva_parent_class )->build( object ) ) return( -1 ); /* An int version of our mask. */ if( vips__image_intize( convolution->M, &t[0] ) ) return( -1 ); conva->iM = t[0]; #ifdef DEBUG printf( "vips_conva_build: iM =\n" ); vips_matrixprint( conva->iM, NULL ); #endif /*DEBUG*/ in = convolution->in; if( vips_conva_decompose_boxes( conva ) ) return( -1 ); g_object_set( conva, "out", vips_image_new(), NULL ); if( vips_embed( in, &t[1], t[0]->Xsize / 2, t[0]->Ysize / 2, in->Xsize + t[0]->Xsize - 1, in->Ysize + t[0]->Ysize - 1, "extend", VIPS_EXTEND_COPY, NULL ) || vips_conva_horizontal( conva, t[1], &t[2] ) || vips_conva_vertical( conva, t[2], &t[3] ) || vips_image_write( t[3], convolution->out ) ) return( -1 ); convolution->out->Xoffset = 0; convolution->out->Yoffset = 0; return( 0 ); } static void vips_conva_class_init( VipsConvaClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "conva"; object_class->description = _( "approximate integer convolution" ); object_class->build = vips_conva_build; VIPS_ARG_INT( class, "layers", 104, _( "Layers" ), _( "Use this many layers in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConva, layers ), 1, 1000, 5 ); VIPS_ARG_INT( class, "cluster", 105, _( "Cluster" ), _( "Cluster lines closer than this in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConva, cluster ), 1, 100, 1 ); } static void vips_conva_init( VipsConva *conva ) { conva->layers = 5; conva->cluster = 1; } /** * vips_conva: (method) * @in: input image * @out: (out): output image * @mask: convolution mask * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @layers: %gint, number of layers for approximation * * @cluster: %gint, cluster lines closer than this distance * * Perform an approximate integer convolution of @in with @mask. * This is a low-level operation, see * vips_conv() for something more convenient. * * The output image * always has the same #VipsBandFormat as the input image. * Elements of @mask are converted to * integers before convolution. * * Larger values for @layers give more accurate * results, but are slower. As @layers approaches the mask radius, the * accuracy will become close to exact convolution and the speed will drop to * match. For many large masks, such as Gaussian, @layers need be only 10% of * this value and accuracy will still be good. * * Smaller values of @cluster will give more accurate results, but be slower * and use more memory. 10% of the mask radius is a good rule of thumb. * * See also: vips_conv(). * * Returns: 0 on success, -1 on error */ int vips_conva( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "conva", ap, in, out, mask ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/convasep.c000066400000000000000000000544771361153320700212340ustar00rootroot00000000000000/* convasep ... separable approximate convolution * * This operation does an approximate, seperable convolution. * * Author: John Cupitt & Nicolas Robidoux * Written on: 31/5/11 * Modified on: * 31/5/11 * - from im_conv() * 5/7/16 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* See: http://incubator.quasimondo.com/processing/stackblur.pde This thing is a little like stackblur, but generalised to any separable mask. */ /* TODO - how about making a cumulative image and then subtracting points in that, rather than keeping a set of running totals faster? we could then use orc to write a bit of code to implement this set of lines stackoverflow has an algorithm for cumulativization using SIMD and threads, see that font rasterization with rust piece on medium by ralph levien */ /* #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include "pconvolution.h" /* Maximum number of lines we can break the mask into. */ #define MAX_LINES (1000) /* Euclid's algorithm. Use this to common up mults. */ static int gcd( int a, int b ) { if( b == 0 ) return( abs( a ) ); else return( gcd( b, a % b ) ); } typedef struct { VipsConvolution parent_instance; int layers; int divisor; int rounding; int offset; /* The "width" of the mask, ie. n for our 1xn or nx1 argument, plus * an int version of our mask. */ int width; VipsImage *iM; /* The mask broken into a set of lines. * * Start is the left-most pixel in the line, end is one beyond the * right-most pixel. */ int n_lines; int start[MAX_LINES]; int end[MAX_LINES]; int factor[MAX_LINES]; } VipsConvasep; typedef VipsConvolutionClass VipsConvasepClass; G_DEFINE_TYPE( VipsConvasep, vips_convasep, VIPS_TYPE_CONVOLUTION ); static void vips_convasep_line_start( VipsConvasep *convasep, int x, int factor ) { convasep->start[convasep->n_lines] = x; convasep->factor[convasep->n_lines] = factor; } static int vips_convasep_line_end( VipsConvasep *convasep, int x ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( convasep ); convasep->end[convasep->n_lines] = x; if( convasep->n_lines >= MAX_LINES - 1 ) { vips_error( class->nickname, "%s", _( "mask too complex" ) ); return( -1 ); } convasep->n_lines += 1; return( 0 ); } /* Break a mask into lines. */ static int vips_convasep_decompose( VipsConvasep *convasep ) { VipsImage *iM = convasep->iM; double *coeff = (double *) VIPS_IMAGE_ADDR( iM, 0, 0 ); double scale = vips_image_get_scale( iM ); double offset = vips_image_get_offset( iM ); double max; double min; double depth; double sum; double area; int layers; int layers_above; int layers_below; int z, n, x; VIPS_DEBUG_MSG( "vips_convasep_decompose: " "breaking into %d layers ...\n", convasep->layers ); /* Find mask range. We must always include the zero axis in the mask. */ max = 0; min = 0; for( x = 0; x < convasep->width; x++ ) { if( coeff[x] > max ) max = coeff[x]; if( coeff[x] < min ) min = coeff[x]; } /* The zero axis must fall on a layer boundary. Estimate the * depth, find n-lines-above-zero, get exact depth, then calculate a * fixed n-lines which includes any negative parts. */ depth = (max - min) / convasep->layers; layers_above = ceil( max / depth ); depth = max / layers_above; layers_below = floor( min / depth ); layers = layers_above - layers_below; VIPS_DEBUG_MSG( "depth = %g, layers = %d\n", depth, layers ); /* For each layer, generate a set of lines which are inside the * perimeter. Work down from the top. */ for( z = 0; z < layers; z++ ) { double y = max - (1 + z) * depth; /* y plus half depth ... ie. the layer midpoint. */ double y_ph = y + depth / 2; /* Odd, but we must avoid rounding errors that make us miss 0 * in the line above. */ int y_positive = z < layers_above; int inside; /* Start outside the perimeter. */ inside = 0; for( x = 0; x < convasep->width; x++ ) { /* The vertical line from mask[z] to 0 is inside. Is * our current square (x, y) part of that line? */ if( (y_positive && coeff[x] >= y_ph) || (!y_positive && coeff[x] <= y_ph) ) { if( !inside ) { vips_convasep_line_start( convasep, x, y_positive ? 1 : -1 ); inside = 1; } } else if( inside ) { if( vips_convasep_line_end( convasep, x ) ) return( -1 ); inside = 0; } } if( inside && vips_convasep_line_end( convasep, convasep->width ) ) return( -1 ); } /* Can we common up any lines? Search for lines with identical * start/end. */ for( z = 0; z < convasep->n_lines; z++ ) { for( n = z + 1; n < convasep->n_lines; n++ ) { if( convasep->start[z] == convasep->start[n] && convasep->end[z] == convasep->end[n] ) { convasep->factor[z] += convasep->factor[n]; /* n can be deleted. Do this in a separate * pass below. */ convasep->factor[n] = 0; } } } /* Now we can remove all factor 0 lines. */ for( z = 0; z < convasep->n_lines; z++ ) { if( convasep->factor[z] == 0 ) { for( x = z; x < convasep->n_lines; x++ ) { convasep->start[x] = convasep->start[x + 1]; convasep->end[x] = convasep->end[x + 1]; convasep->factor[x] = convasep->factor[x + 1]; } convasep->n_lines -= 1; } } /* Find the area of the lines. */ area = 0; for( z = 0; z < convasep->n_lines; z++ ) area += convasep->factor[z] * (convasep->end[z] - convasep->start[z]); /* Strength reduction: if all lines are divisible by n, we can move * that n out into the ->area factor. The aim is to produce as many * factor 1 lines as we can and to reduce the chance of overflow. */ x = convasep->factor[0]; for( z = 1; z < convasep->n_lines; z++ ) x = gcd( x, convasep->factor[z] ); for( z = 0; z < convasep->n_lines; z++ ) convasep->factor[z] /= x; area *= x; /* Find the area of the original mask. */ sum = 0; for( z = 0; z < convasep->width; z++ ) sum += coeff[z]; convasep->divisor = VIPS_RINT( sum * area / scale ); if( convasep->divisor == 0 ) convasep->divisor = 1; convasep->rounding = (convasep->divisor + 1) / 2; convasep->offset = offset; #ifdef DEBUG /* ASCII-art layer drawing. */ printf( "lines:\n" ); for( z = 0; z < convasep->n_lines; z++ ) { printf( "%3d - %2d x ", z, convasep->factor[z] ); for( x = 0; x < 55; x++ ) { int rx = x * (convasep->width + 1) / 55; if( rx >= convasep->start[z] && rx < convasep->end[z] ) printf( "#" ); else printf( " " ); } printf( " %3d .. %3d\n", convasep->start[z], convasep->end[z] ); } printf( "divisor = %d\n", convasep->divisor ); printf( "rounding = %d\n", convasep->rounding ); printf( "offset = %d\n", convasep->offset ); #endif /*DEBUG*/ return( 0 ); } /* Our sequence value. */ typedef struct { VipsConvasep *convasep; VipsRegion *ir; /* Input region */ int *start; /* Offsets for start and stop */ int *end; /* The sums for each line. int for integer types, double for floating * point types. */ int *isum; double *dsum; int last_stride; /* Avoid recalcing offsets, if we can */ } VipsConvasepSeq; /* Free a sequence value. */ static int vips_convasep_stop( void *vseq, void *a, void *b ) { VipsConvasepSeq *seq = (VipsConvasepSeq *) vseq; VIPS_UNREF( seq->ir ); VIPS_FREE( seq->start ); VIPS_FREE( seq->end ); VIPS_FREE( seq->isum ); VIPS_FREE( seq->dsum ); return( 0 ); } /* Convolution start function. */ static void * vips_convasep_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsConvasep *convasep = (VipsConvasep *) b; VipsConvasepSeq *seq; if( !(seq = VIPS_NEW( out, VipsConvasepSeq )) ) return( NULL ); /* Init! */ seq->convasep = convasep; seq->ir = vips_region_new( in ); seq->start = VIPS_ARRAY( NULL, convasep->n_lines, int ); seq->end = VIPS_ARRAY( NULL, convasep->n_lines, int ); seq->isum = NULL; seq->dsum = NULL; if( vips_band_format_isint( out->BandFmt ) ) seq->isum = VIPS_ARRAY( NULL, convasep->n_lines, int ); else seq->dsum = VIPS_ARRAY( NULL, convasep->n_lines, double ); seq->last_stride = -1; if( !seq->ir || !seq->start || !seq->end || (!seq->isum && !seq->dsum) ) { vips_convasep_stop( seq, in, convasep ); return( NULL ); } return( seq ); } #define CLIP_UCHAR( V ) \ G_STMT_START { \ if( (V) < 0 ) \ (V) = 0; \ else if( (V) > UCHAR_MAX ) \ (V) = UCHAR_MAX; \ } G_STMT_END #define CLIP_CHAR( V ) \ G_STMT_START { \ if( (V) < SCHAR_MIN ) \ (V) = SCHAR_MIN; \ else if( (V) > SCHAR_MAX ) \ (V) = SCHAR_MAX; \ } G_STMT_END #define CLIP_USHORT( V ) \ G_STMT_START { \ if( (V) < 0 ) \ (V) = 0; \ else if( (V) > USHRT_MAX ) \ (V) = USHRT_MAX; \ } G_STMT_END #define CLIP_SHORT( V ) \ G_STMT_START { \ if( (V) < SHRT_MIN ) \ (V) = SHRT_MIN; \ else if( (V) > SHRT_MAX ) \ (V) = SHRT_MAX; \ } G_STMT_END #define CLIP_NONE( V ) {} /* The h and v loops are very similar, but also annoyingly different. Keep * them separate for easy debugging. */ #define HCONV_INT( TYPE, CLIP ) { \ for( i = 0; i < bands; i++ ) { \ int *isum = seq->isum; \ \ TYPE *q; \ TYPE *p; \ int sum; \ \ p = i + (TYPE *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); \ q = i + (TYPE *) VIPS_REGION_ADDR( or, r->left, r->top + y ); \ \ sum = 0; \ for( z = 0; z < n_lines; z++ ) { \ isum[z] = 0; \ for( x = seq->start[z]; x < seq->end[z]; x += istride ) \ isum[z] += p[x]; \ sum += convasep->factor[z] * isum[z]; \ } \ \ /* Don't add offset ... we only want to do that once, do it on \ * the vertical pass. \ */ \ sum = (sum + convasep->rounding) / convasep->divisor; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ \ for( x = 1; x < r->width; x++ ) { \ sum = 0; \ for( z = 0; z < n_lines; z++ ) { \ isum[z] += p[seq->end[z]]; \ isum[z] -= p[seq->start[z]]; \ sum += convasep->factor[z] * isum[z]; \ } \ p += istride; \ sum = (sum + convasep->rounding) / convasep->divisor; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ } \ } \ } #define HCONV_FLOAT( TYPE ) { \ for( i = 0; i < bands; i++ ) { \ double *dsum = seq->dsum; \ \ TYPE *q; \ TYPE *p; \ double sum; \ \ p = i + (TYPE *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); \ q = i + (TYPE *) VIPS_REGION_ADDR( or, r->left, r->top + y ); \ \ sum = 0; \ for( z = 0; z < n_lines; z++ ) { \ dsum[z] = 0; \ for( x = seq->start[z]; x < seq->end[z]; x += istride ) \ dsum[z] += p[x]; \ sum += convasep->factor[z] * dsum[z]; \ } \ \ /* Don't add offset ... we only want to do that once, do it on \ * the vertical pass. \ */ \ sum = sum / convasep->divisor; \ *q = sum; \ q += ostride; \ \ for( x = 1; x < r->width; x++ ) { \ sum = 0; \ for( z = 0; z < n_lines; z++ ) { \ dsum[z] += p[seq->end[z]]; \ dsum[z] -= p[seq->start[z]]; \ sum += convasep->factor[z] * dsum[z]; \ } \ p += istride; \ sum = sum / convasep->divisor; \ *q = sum; \ q += ostride; \ } \ } \ } /* Do horizontal masks ... we scan the mask along scanlines. */ static int vips_convasep_generate_horizontal( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsConvasepSeq *seq = (VipsConvasepSeq *) vseq; VipsImage *in = (VipsImage *) a; VipsConvasep *convasep = (VipsConvasep *) b; VipsConvolution *convolution = (VipsConvolution *) convasep; VipsRegion *ir = seq->ir; const int n_lines = convasep->n_lines; VipsRect *r = &or->valid; /* Double the bands (notionally) for complex. */ int bands = vips_band_format_iscomplex( in->BandFmt ) ? 2 * in->Bands : in->Bands; VipsRect s; int x, y, z, i; int istride; int ostride; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += convasep->width - 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); /* Stride can be different for the vertical case, keep this here for * ease of direction change. */ istride = VIPS_IMAGE_SIZEOF_PEL( in ) / VIPS_IMAGE_SIZEOF_ELEMENT( in ); ostride = VIPS_IMAGE_SIZEOF_PEL( convolution->out ) / VIPS_IMAGE_SIZEOF_ELEMENT( convolution->out ); /* Init offset array. */ if( seq->last_stride != istride ) { seq->last_stride = istride; for( z = 0; z < n_lines; z++ ) { seq->start[z] = convasep->start[z] * istride; seq->end[z] = convasep->end[z] * istride; } } for( y = 0; y < r->height; y++ ) { switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: HCONV_INT( unsigned char, CLIP_UCHAR ); break; case VIPS_FORMAT_CHAR: HCONV_INT( signed char, CLIP_CHAR ); break; case VIPS_FORMAT_USHORT: HCONV_INT( unsigned short, CLIP_USHORT ); break; case VIPS_FORMAT_SHORT: HCONV_INT( signed short, CLIP_SHORT ); break; case VIPS_FORMAT_UINT: HCONV_INT( unsigned int, CLIP_NONE ); break; case VIPS_FORMAT_INT: HCONV_INT( signed int, CLIP_NONE ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: HCONV_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: HCONV_FLOAT( double ); break; default: g_assert_not_reached(); } } return( 0 ); } #define VCONV_INT( TYPE, CLIP ) { \ for( x = 0; x < sz; x++ ) { \ int *isum = seq->isum; \ \ TYPE *q; \ TYPE *p; \ int sum; \ \ p = x + (TYPE *) VIPS_REGION_ADDR( ir, r->left, r->top ); \ q = x + (TYPE *) VIPS_REGION_ADDR( or, r->left, r->top ); \ \ sum = 0; \ for( z = 0; z < n_lines; z++ ) { \ isum[z] = 0; \ for( y = seq->start[z]; y < seq->end[z]; y += istride ) \ isum[z] += p[y]; \ sum += convasep->factor[z] * isum[z]; \ } \ sum = (sum + convasep->rounding) / convasep->divisor + \ convasep->offset; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ \ for( y = 1; y < r->height; y++ ) { \ sum = 0; \ for( z = 0; z < n_lines; z++ ) { \ isum[z] += p[seq->end[z]]; \ isum[z] -= p[seq->start[z]]; \ sum += convasep->factor[z] * isum[z]; \ } \ p += istride; \ sum = (sum + convasep->rounding) / convasep->divisor + \ convasep->offset; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ } \ } \ } #define VCONV_FLOAT( TYPE ) { \ for( x = 0; x < sz; x++ ) { \ double *dsum = seq->dsum; \ \ TYPE *q; \ TYPE *p; \ double sum; \ \ p = x + (TYPE *) VIPS_REGION_ADDR( ir, r->left, r->top ); \ q = x + (TYPE *) VIPS_REGION_ADDR( or, r->left, r->top ); \ \ sum = 0; \ for( z = 0; z < n_lines; z++ ) { \ dsum[z] = 0; \ for( y = seq->start[z]; y < seq->end[z]; y += istride ) \ dsum[z] += p[y]; \ sum += convasep->factor[z] * dsum[z]; \ } \ sum = sum / convasep->divisor + convasep->offset; \ *q = sum; \ q += ostride; \ \ for( y = 1; y < r->height; y++ ) { \ sum = 0; \ for( z = 0; z < n_lines; z++ ) { \ dsum[z] += p[seq->end[z]]; \ dsum[z] -= p[seq->start[z]]; \ sum += convasep->factor[z] * dsum[z]; \ } \ p += istride; \ sum = sum / convasep->divisor + convasep->offset; \ *q = sum; \ q += ostride; \ } \ } \ } /* Do vertical masks ... we scan the mask down columns of pixels. Copy-paste * from above with small changes. */ static int vips_convasep_generate_vertical( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsConvasepSeq *seq = (VipsConvasepSeq *) vseq; VipsImage *in = (VipsImage *) a; VipsConvasep *convasep = (VipsConvasep *) b; VipsConvolution *convolution = (VipsConvolution *) convasep; VipsRegion *ir = seq->ir; const int n_lines = convasep->n_lines; VipsRect *r = &or->valid; /* Double the width (notionally) for complex. */ int sz = vips_band_format_iscomplex( in->BandFmt ) ? 2 * VIPS_REGION_N_ELEMENTS( or ) : VIPS_REGION_N_ELEMENTS( or ); VipsRect s; int x, y, z; int istride; int ostride; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.height += convasep->width - 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); /* Stride can be different for the vertical case, keep this here for * ease of direction change. */ istride = VIPS_REGION_LSKIP( ir ) / VIPS_IMAGE_SIZEOF_ELEMENT( in ); ostride = VIPS_REGION_LSKIP( or ) / VIPS_IMAGE_SIZEOF_ELEMENT( convolution->out ); /* Init offset array. */ if( seq->last_stride != istride ) { seq->last_stride = istride; for( z = 0; z < n_lines; z++ ) { seq->start[z] = convasep->start[z] * istride; seq->end[z] = convasep->end[z] * istride; } } switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: VCONV_INT( unsigned char, CLIP_UCHAR ); break; case VIPS_FORMAT_CHAR: VCONV_INT( signed char, CLIP_CHAR ); break; case VIPS_FORMAT_USHORT: VCONV_INT( unsigned short, CLIP_USHORT ); break; case VIPS_FORMAT_SHORT: VCONV_INT( signed short, CLIP_SHORT ); break; case VIPS_FORMAT_UINT: VCONV_INT( unsigned int, CLIP_NONE ); break; case VIPS_FORMAT_INT: VCONV_INT( signed int, CLIP_NONE ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: VCONV_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: VCONV_FLOAT( double ); break; default: g_assert_not_reached(); } return( 0 ); } static int vips_convasep_pass( VipsConvasep *convasep, VipsImage *in, VipsImage **out, VipsDirection direction ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( convasep ); VipsGenerateFn gen; *out = vips_image_new(); if( vips_image_pipelinev( *out, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); if( direction == VIPS_DIRECTION_HORIZONTAL ) { (*out)->Xsize -= convasep->width - 1; gen = vips_convasep_generate_horizontal; } else { (*out)->Ysize -= convasep->width - 1; gen = vips_convasep_generate_vertical; } if( (*out)->Xsize <= 0 || (*out)->Ysize <= 0 ) { vips_error( class->nickname, "%s", _( "image too small for mask" ) ); return( -1 ); } if( vips_image_generate( *out, vips_convasep_start, gen, vips_convasep_stop, in, convasep ) ) return( -1 ); return( 0 ); } static int vips_convasep_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConvolution *convolution = (VipsConvolution *) object; VipsConvasep *convasep = (VipsConvasep *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_convasep_parent_class )->build( object ) ) return( -1 ); if( vips_check_separable( class->nickname, convolution->M ) ) return( -1 ); /* An int version of our mask. */ if( vips__image_intize( convolution->M, &t[3] ) ) return( -1 ); convasep->iM = t[3]; convasep->width = convasep->iM->Xsize * convasep->iM->Ysize; in = convolution->in; if( vips_convasep_decompose( convasep ) ) return( -1 ); g_object_set( convasep, "out", vips_image_new(), NULL ); if( vips_embed( in, &t[0], convasep->width / 2, convasep->width / 2, in->Xsize + convasep->width - 1, in->Ysize + convasep->width - 1, "extend", VIPS_EXTEND_COPY, NULL ) || vips_convasep_pass( convasep, t[0], &t[1], VIPS_DIRECTION_HORIZONTAL ) || vips_convasep_pass( convasep, t[1], &t[2], VIPS_DIRECTION_VERTICAL ) || vips_image_write( t[2], convolution->out ) ) return( -1 ); convolution->out->Xoffset = 0; convolution->out->Yoffset = 0; vips_reorder_margin_hint( convolution->out, convolution->M->Xsize * convolution->M->Ysize ); return( 0 ); } static void vips_convasep_class_init( VipsConvasepClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "convasep"; object_class->description = _( "approximate separable integer convolution" ); object_class->build = vips_convasep_build; VIPS_ARG_INT( class, "layers", 104, _( "Layers" ), _( "Use this many layers in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConvasep, layers ), 1, 1000, 5 ); } static void vips_convasep_init( VipsConvasep *convasep ) { convasep->layers = 5; convasep->n_lines = 0; } /** * vips_convasep: (method) * @in: input image * @out: (out): output image * @mask: convolve with this mask * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @layers: %gint, number of layers for approximation * * Approximate separable integer convolution. This is a low-level operation, see * vips_convsep() for something more convenient. * * The image is convolved twice: once with @mask and then again with @mask * rotated by 90 degrees. * @mask must be 1xn or nx1 elements. * Elements of @mask are converted to * integers before convolution. * * Larger values for @layers give more accurate * results, but are slower. As @layers approaches the mask radius, the * accuracy will become close to exact convolution and the speed will drop to * match. For many large masks, such as Gaussian, @layers need be only 10% of * this value and accuracy will still be good. * * The output image * always has the same #VipsBandFormat as the input image. * * See also: vips_convsep(). * * Returns: 0 on success, -1 on error */ int vips_convasep( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "convasep", ap, in, out, mask ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/convf.c000066400000000000000000000233761361153320700205230ustar00rootroot00000000000000/* convf * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris & Kirk Martinez * Written on: 29/04/1991 * Modified on: 19/05/1991 * 8/7/93 JC * - adapted for partial v2 * - memory leaks fixed * - ANSIfied * 12/7/93 JC * - adapted im_convbi() to im_convbf() * 7/10/94 JC * - new IM_ARRAY() macro * - evalend callbacks * - more typedef * 9/3/01 JC * - redone from im_conv() * 27/7/01 JC * - rejects masks with scale == 0 * 7/4/04 * - now uses im_embed() with edge stretching on the input, not * the output * - sets Xoffset / Yoffset * 11/11/05 * - simpler inner loop avoids gcc4 bug * 12/11/09 * - only rebuild the buffer offsets if bpl changes * - tiny speedups and cleanups * - add restrict, though it doesn't seem to help gcc * - add mask-all-zero check * 13/11/09 * - rename as im_conv_f() to make it easier for vips.c to make the * overloaded version * 3/2/10 * - gtkdoc * - more cleanups * 1/10/10 * - support complex (just double the bands) * 29/10/10 * - get rid of im_convsep_f(), just call this twice, no longer worth * keeping two versions * 15/10/11 Nicolas * - handle offset correctly in seperable convolutions * 26/1/16 Lovell Fuller * - remove Duff for a 25% speedup * 23/6/16 * - redone as a class * 2/7/17 * - remove pts for a small speedup */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pconvolution.h" typedef struct { VipsConvolution parent_instance; /* We make a smaller version of the mask with the zeros squeezed out. */ int nnz; /* Number of non-zero mask elements */ double *coeff; /* Array of non-zero mask coefficients */ int *coeff_pos; /* Index of each nnz element in mask->coeff */ } VipsConvf; typedef VipsConvolutionClass VipsConvfClass; G_DEFINE_TYPE( VipsConvf, vips_convf, VIPS_TYPE_CONVOLUTION ); /* Our sequence value. */ typedef struct { VipsConvf *convf; VipsRegion *ir; /* Input region */ int *offsets; /* Offsets for each non-zero matrix element */ int last_bpl; /* Avoid recalcing offsets, if we can */ } VipsConvfSequence; /* Free a sequence value. */ static int vips_convf_stop( void *vseq, void *a, void *b ) { VipsConvfSequence *seq = (VipsConvfSequence *) vseq; VIPS_UNREF( seq->ir ); return( 0 ); } /* Convolution start function. */ static void * vips_convf_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsConvf *convf = (VipsConvf *) b; VipsConvfSequence *seq; if( !(seq = VIPS_NEW( out, VipsConvfSequence )) ) return( NULL ); seq->convf = convf; seq->ir = NULL; seq->last_bpl = -1; seq->ir = vips_region_new( in ); if( !(seq->offsets = VIPS_ARRAY( out, convf->nnz, int )) ) { vips_convf_stop( seq, in, convf ); return( NULL ); } return( (void *) seq ); } #define CONV_FLOAT( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) VIPS_REGION_ADDR( ir, le, y ); \ OTYPE * restrict q = (OTYPE *) VIPS_REGION_ADDR( or, le, y ); \ int * restrict offsets = seq->offsets; \ \ for( x = 0; x < sz; x++ ) { \ double sum; \ int i; \ \ sum = 0; \ for ( i = 0; i < nnz; i++ ) \ sum += t[i] * p[offsets[i]]; \ \ sum = (sum / scale) + offset; \ \ q[x] = sum; \ p += 1; \ } \ } /* Convolve! */ static int vips_convf_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsConvfSequence *seq = (VipsConvfSequence *) vseq; VipsConvf *convf = (VipsConvf *) b; VipsConvolution *convolution = (VipsConvolution *) convf; VipsImage *M = convolution->M; double scale = vips_image_get_scale( M ); double offset = vips_image_get_offset( M ); VipsImage *in = (VipsImage *) a; VipsRegion *ir = seq->ir; double * restrict t = convf->coeff; const int nnz = convf->nnz; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); int sz = VIPS_REGION_N_ELEMENTS( or ) * (vips_band_format_iscomplex( in->BandFmt ) ? 2 : 1); VipsRect s; int x, y, z, i; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += M->Xsize - 1; s.height += M->Ysize - 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); /* Fill offset array. Only do this if the bpl has changed since the * previous vips_region_prepare(). */ if( seq->last_bpl != VIPS_REGION_LSKIP( ir ) ) { seq->last_bpl = VIPS_REGION_LSKIP( ir ); for( i = 0; i < nnz; i++ ) { z = convf->coeff_pos[i]; x = z % M->Xsize; y = z / M->Xsize; seq->offsets[i] = (VIPS_REGION_ADDR( ir, x + le, y + to ) - VIPS_REGION_ADDR( ir, le, to )) / VIPS_IMAGE_SIZEOF_ELEMENT( ir->im ); } } VIPS_GATE_START( "vips_convf_gen: work" ); for( y = to; y < bo; y++ ) { switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: CONV_FLOAT( unsigned char, float ); break; case VIPS_FORMAT_CHAR: CONV_FLOAT( signed char, float ); break; case VIPS_FORMAT_USHORT: CONV_FLOAT( unsigned short, float ); break; case VIPS_FORMAT_SHORT: CONV_FLOAT( signed short, float ); break; case VIPS_FORMAT_UINT: CONV_FLOAT( unsigned int, float ); break; case VIPS_FORMAT_INT: CONV_FLOAT( signed int, float ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: CONV_FLOAT( float, float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: CONV_FLOAT( double, double ); break; default: g_assert_not_reached(); } } VIPS_GATE_STOP( "vips_convf_gen: work" ); VIPS_COUNT_PIXELS( or, "vips_convf_gen" ); return( 0 ); } static int vips_convf_build( VipsObject *object ) { VipsConvolution *convolution = (VipsConvolution *) object; VipsConvf *convf = (VipsConvf *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; VipsImage *M; double *coeff; int ne; int i; if( VIPS_OBJECT_CLASS( vips_convf_parent_class )->build( object ) ) return( -1 ); M = convolution->M; coeff = (double *) VIPS_IMAGE_ADDR( M, 0, 0 ); ne = M->Xsize * M->Ysize; if( !(convf->coeff = VIPS_ARRAY( object, ne, double )) || !(convf->coeff_pos = VIPS_ARRAY( object, ne, int )) ) return( -1 ); /* Find non-zero mask elements. */ for( i = 0; i < ne; i++ ) if( coeff[i] ) { convf->coeff[convf->nnz] = coeff[i]; convf->coeff_pos[convf->nnz] = i; convf->nnz += 1; } /* Was the whole mask zero? We must have at least 1 element in there: * set it to zero. */ if( convf->nnz == 0 ) { convf->coeff[0] = 0; convf->coeff_pos[0] = 0; convf->nnz = 1; } in = convolution->in; if( vips_embed( in, &t[0], M->Xsize / 2, M->Ysize / 2, in->Xsize + M->Xsize - 1, in->Ysize + M->Ysize - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[0]; g_object_set( convf, "out", vips_image_new(), NULL ); if( vips_image_pipelinev( convolution->out, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); convolution->out->Xoffset = 0; convolution->out->Yoffset = 0; /* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output * would be 1x1. */ if( vips_band_format_isint( in->BandFmt ) ) convolution->out->BandFmt = VIPS_FORMAT_FLOAT; convolution->out->Xsize -= M->Xsize - 1; convolution->out->Ysize -= M->Ysize - 1; if( vips_image_generate( convolution->out, vips_convf_start, vips_convf_gen, vips_convf_stop, in, convf ) ) return( -1 ); convolution->out->Xoffset = -M->Xsize / 2; convolution->out->Yoffset = -M->Ysize / 2; return( 0 ); } static void vips_convf_class_init( VipsConvfClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; object_class->nickname = "convf"; object_class->description = _( "float convolution operation" ); object_class->build = vips_convf_build; } static void vips_convf_init( VipsConvf *convf ) { convf->nnz = 0; convf->coeff = NULL; convf->coeff_pos = NULL; } /** * vips_convf: (method) * @in: input image * @out: (out): output image * @mask: convolve with this mask * @...: %NULL-terminated list of optional named arguments * * Convolution. This is a low-level operation, see vips_conv() for something * more convenient. * * Perform a convolution of @in with @mask. * Each output pixel is * calculated as sigma[i]{pixel[i] * mask[i]} / scale + offset, where scale * and offset are part of @mask. * * The convolution is performed with floating-point arithmetic. The output image * is always #VIPS_FORMAT_FLOAT unless @in is #VIPS_FORMAT_DOUBLE, in which case * @out is also #VIPS_FORMAT_DOUBLE. * * See also: vips_conv(). * * Returns: 0 on success, -1 on error */ int vips_convf( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "convf", ap, in, out, mask ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/convi.c000066400000000000000000000662201361153320700205210ustar00rootroot00000000000000/* convi * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris & Kirk Martinez * Written on: 29/04/1991 * Modified on: 19/05/1991 * 8/7/93 JC * - adapted for partial v2 * - memory leaks fixed * - ANSIfied * 23/7/93 JC * - inner loop unrolled with a switch - 25% speed-up! * 13/12/93 JC * - tiny rounding error removed * 7/10/94 JC * - new IM_ARRAY() macro * - various simplifications * - evalend callback added * 1/2/95 JC * - use of IM_REGION_ADDR() updated * - output size was incorrect! see comment below * - bug with large non-square matricies fixed too * - uses new im_embed() function * 13/7/98 JC * - wierd bug ... im_free_imask is no longer directly called for close * callback, caused SIGKILL on solaris 2.6 ... linker bug? * 9/3/01 JC * - reworked and simplified, about 10% faster * - slightly better range clipping * 27/7/01 JC * - reject masks with scale == 0 * 7/4/04 * - im_conv() now uses im_embed() with edge stretching on the input, not * the output * - sets Xoffset / Yoffset * 11/11/05 * - simpler inner loop avoids gcc4 bug * 7/11/07 * - new evalstart/end callbacks * 12/5/08 * - int rounding was +1 too much, argh * - only rebuild the buffer offsets if bpl changes * 5/4/09 * - tiny speedups and cleanups * - add restrict, though it doesn't seem to help gcc * 12/11/09 * - only check for non-zero elements once * - add mask-all-zero check * - cleanups * 3/2/10 * - gtkdoc * - more cleanups * 23/08/10 * - add a special case for 3x3 masks, about 20% faster * 1/10/10 * - support complex (just double the bands) * 18/10/10 * - add experimental Orc path * 29/10/10 * - use VipsVector * - get rid of im_convsep(), just call this twice, no longer worth * keeping two versions * 8/11/10 * - add array tiling * 9/5/11 * - argh typo in overflow estimation could cause errors * 15/10/11 Nicolas * - handle offset correctly in seperable convolutions * 26/1/16 Lovell Fuller * - remove Duff for a 25% speedup * 23/6/16 * - rewritten as a class * - new fixed-point vector path, up to 2x faster * 2/7/17 * - remove pts for a small speedup * 12/10/17 * - fix leak of vectors, thanks MHeimbuc * 14/10/17 * - switch to half-float for vector path */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define DEBUG_PIXELS #define DEBUG_COMPILE */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pconvolution.h" /* Larger than this and we fall back to C. */ #define MAX_PASS (20) /* A pass with a vector. */ typedef struct { int first; /* The index of the first mask coff we use */ int last; /* The index of the last mask coff we use */ int r; /* Set previous result in this var */ /* The code we generate for this section of the mask. */ VipsVector *vector; } Pass; typedef struct { VipsConvolution parent_instance; /* An int version of M. */ VipsImage *iM; int n_point; /* w * h for our matrix */ /* We make a smaller version of the mask with the zeros squeezed out. */ int nnz; /* Number of non-zero mask elements */ int *coeff; /* Array of non-zero mask coefficients */ int *coeff_pos; /* Index of each nnz element in mask->coeff */ /* And a half float version for the vector path. mant has the signed * 8-bit mantissas in [-1, +1), sexp has the exponent shift after the * mul and before the add, and exp has the final exponent shift before * write-back. */ int *mant; int sexp; int exp; /* The set of passes we need for this mask. */ int n_pass; Pass pass[MAX_PASS]; /* Code for the final clip back to 8 bits. */ int r; VipsVector *vector; } VipsConvi; typedef VipsConvolutionClass VipsConviClass; G_DEFINE_TYPE( VipsConvi, vips_convi, VIPS_TYPE_CONVOLUTION ); /* Our sequence value. */ typedef struct { VipsConvi *convi; VipsRegion *ir; /* Input region */ int *offsets; /* Offsets for each non-zero matrix element */ int last_bpl; /* Avoid recalcing offsets, if we can */ /* We need a pair of intermediate buffers to keep the results of each * vector conv pass. */ short *t1; short *t2; } VipsConviSequence; static void vips_convi_compile_free( VipsConvi *convi ) { int i; for( i = 0; i < convi->n_pass; i++ ) VIPS_FREEF( vips_vector_free, convi->pass[i].vector ); convi->n_pass = 0; VIPS_FREEF( vips_vector_free, convi->vector ); } static void vips_convi_dispose( GObject *gobject ) { VipsConvi *convi = (VipsConvi *) gobject; #ifdef DEBUG printf( "vips_convi_dispose: " ); vips_object_print_name( VIPS_OBJECT( gobject ) ); printf( "\n" ); #endif /*DEBUG*/ vips_convi_compile_free( convi ); G_OBJECT_CLASS( vips_convi_parent_class )->dispose( gobject ); } /* Free a sequence value. */ static int vips_convi_stop( void *vseq, void *a, void *b ) { VipsConviSequence *seq = (VipsConviSequence *) vseq; VIPS_UNREF( seq->ir ); VIPS_FREE( seq->offsets ); VIPS_FREE( seq->t1 ); VIPS_FREE( seq->t2 ); return( 0 ); } /* Convolution start function. */ static void * vips_convi_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsConvi *convi = (VipsConvi *) b; VipsConviSequence *seq; if( !(seq = VIPS_NEW( out, VipsConviSequence )) ) return( NULL ); seq->convi = convi; seq->ir = NULL; seq->offsets = NULL; seq->last_bpl = -1; seq->t1 = NULL; seq->t2 = NULL; seq->ir = vips_region_new( in ); /* C mode. */ if( convi->nnz ) { if( !(seq->offsets = VIPS_ARRAY( NULL, convi->nnz, int )) ) { vips_convi_stop( seq, in, convi ); return( NULL ); } } /* Vector mode. */ if( convi->n_pass ) { seq->t1 = VIPS_ARRAY( NULL, VIPS_IMAGE_N_ELEMENTS( in ), short ); seq->t2 = VIPS_ARRAY( NULL, VIPS_IMAGE_N_ELEMENTS( in ), short ); if( !seq->t1 || !seq->t2 ) { vips_convi_stop( seq, in, convi ); return( NULL ); } } return( (void *) seq ); } #define TEMP( N, S ) vips_vector_temporary( v, (char *) N, S ) #define PARAM( N, S ) vips_vector_parameter( v, (char *) N, S ) #define SCANLINE( N, P, S ) vips_vector_source_scanline( v, (char *) N, P, S ) #define CONST( N, V, S ) vips_vector_constant( v, (char *) N, V, S ) #define ASM2( OP, A, B ) vips_vector_asm2( v, (char *) OP, A, B ) #define ASM3( OP, A, B, C ) vips_vector_asm3( v, (char *) OP, A, B, C ) /* Generate code for a section of the mask. first is the index we start * at, we set last to the index of the last one we use before we run * out of intermediates / constants / parameters / sources or mask * coefficients. * * 0 for success, -1 on error. */ static int vips_convi_compile_section( VipsConvi *convi, VipsImage *in, Pass *pass ) { VipsConvolution *convolution = (VipsConvolution *) convi; VipsImage *M = convolution->M; VipsVector *v; int i; #ifdef DEBUG_COMPILE printf( "starting pass %d\n", pass->first ); #endif /*DEBUG_COMPILE*/ pass->vector = v = vips_vector_new( "convi", 2 ); /* "r" is the array of sums from the previous pass (if any). */ pass->r = vips_vector_source_name( v, "r", 2 ); /* The value we fetch from the image, the accumulated sum. */ TEMP( "value", 2 ); TEMP( "valueb", 1 ); TEMP( "sum", 2 ); /* Init the sum. If this is the first pass, it's a constant. If this * is a later pass, we have to init the sum from the result * of the previous pass. */ if( pass->first == 0 ) { char c0[256]; CONST( c0, 0, 2 ); ASM2( "loadpw", "sum", c0 ); } else ASM2( "loadw", "sum", "r" ); for( i = pass->first; i < convi->n_point; i++ ) { int x = i % M->Xsize; int y = i / M->Xsize; char source[256]; char off[256]; char rnd[256]; char sexp[256]; char coeff[256]; /* Exclude zero elements. */ if( !convi->mant[i] ) continue; /* The source. sl0 is the first scanline in the mask. */ SCANLINE( source, y, 1 ); /* Load with an offset. Only for non-first-columns though. */ if( x == 0 ) ASM2( "convubw", "value", source ); else { CONST( off, in->Bands * x, 1 ); ASM3( "loadoffb", "valueb", source, off ); ASM2( "convubw", "value", "valueb" ); } /* We need a signed multiply, so the image pixel needs to * become a signed 16-bit value. We know only the bottom 8 bits * of the image and coefficient are interesting, so we can take * the bottom half of a 16x16->32 multiply. */ CONST( coeff, convi->mant[i], 2 ); ASM3( "mullw", "value", "value", coeff ); /* Shift right before add to prevent overflow on large masks. */ CONST( sexp, convi->sexp, 2 ); CONST( rnd, 1 << (convi->sexp - 1), 2 ); ASM3( "addw", "value", "value", rnd ); ASM3( "shrsw", "value", "value", sexp ); /* We accumulate the signed 16-bit result in sum. Saturated * add. */ ASM3( "addssw", "sum", "sum", "value" ); if( vips_vector_full( v ) ) break; } pass->last = i; /* And write to our intermediate buffer. */ ASM2( "copyw", "d1", "sum" ); if( !vips_vector_compile( v ) ) return( -1 ); #ifdef DEBUG_COMPILE printf( "done coeffs %d to %d\n", pass->first, pass->last ); vips_vector_print( v ); #endif /*DEBUG_COMPILE*/ return( 0 ); } /* Generate code for the final 16->8 conversion. * * 0 for success, -1 on error. */ static int vips_convi_compile_clip( VipsConvi *convi ) { VipsConvolution *convolution = (VipsConvolution *) convi; VipsImage *M = convolution->M; int offset = VIPS_RINT( vips_image_get_offset( M ) ); VipsVector *v; char rnd[256]; char exp[256]; char c0[256]; char c255[256]; char off[256]; convi->vector = v = vips_vector_new( "convi", 1 ); /* "r" is the array of sums we clip down. */ convi->r = vips_vector_source_name( v, "r", 2 ); /* The value we fetch from the image. */ TEMP( "value", 2 ); CONST( rnd, 1 << (convi->exp - 1), 2 ); ASM3( "addw", "value", "r", rnd ); CONST( exp, convi->exp, 2 ); ASM3( "shrsw", "value", "value", exp ); CONST( off, offset, 2 ); ASM3( "addw", "value", "value", off ); /* You'd think "convsuswb" (convert signed 16-bit to unsigned * 8-bit with saturation) would be quicker, but it's a lot * slower. */ CONST( c0, 0, 2 ); ASM3( "maxsw", "value", c0, "value" ); CONST( c255, 255, 2 ); ASM3( "minsw", "value", c255, "value" ); ASM2( "convwb", "d1", "value" ); if( !vips_vector_compile( v ) ) return( -1 ); return( 0 ); } static int vips_convi_compile( VipsConvi *convi, VipsImage *in ) { int i; Pass *pass; /* Generate passes until we've used up the whole mask. */ for( i = 0;; ) { /* Allocate space for another pass. */ if( convi->n_pass == MAX_PASS ) return( -1 ); pass = &convi->pass[convi->n_pass]; convi->n_pass += 1; pass->first = i; pass->r = -1; if( vips_convi_compile_section( convi, in, pass ) ) return( -1 ); i = pass->last + 1; if( i >= convi->n_point ) break; } if( vips_convi_compile_clip( convi ) ) return( -1 ); return( 0 ); } static int vips_convi_gen_vector( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsConviSequence *seq = (VipsConviSequence *) vseq; VipsConvi *convi = (VipsConvi *) b; VipsConvolution *convolution = (VipsConvolution *) convi; VipsImage *M = convolution->M; VipsImage *in = (VipsImage *) a; VipsRegion *ir = seq->ir; VipsRect *r = &or->valid; int ne = r->width * in->Bands; VipsRect s; int i, y; VipsExecutor executor[MAX_PASS]; VipsExecutor clip; #ifdef DEBUG_PIXELS printf( "vips_convi_gen_vector: generating %d x %d at %d x %d\n", r->width, r->height, r->left, r->top ); #endif /*DEBUG_PIXELS*/ /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += M->Xsize - 1; s.height += M->Ysize - 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); for( i = 0; i < convi->n_pass; i++ ) vips_executor_set_program( &executor[i], convi->pass[i].vector, ne ); vips_executor_set_program( &clip, convi->vector, ne ); VIPS_GATE_START( "vips_convi_gen_vector: work" ); for( y = 0; y < r->height; y ++ ) { VipsPel *q = VIPS_REGION_ADDR( or, r->left, r->top + y ); #ifdef DEBUG_PIXELS { int h, v; printf( "before convolve: x = %d, y = %d\n", r->left, r->top + y ); for( v = 0; v < M->Ysize; v++ ) { for( h = 0; h < M->Xsize; h++ ) printf( "%3d ", *VIPS_REGION_ADDR( ir, r->left + h, r->top + y + v ) ); printf( "\n" ); } } #endif /*DEBUG_PIXELS*/ /* We run our n passes to generate this scanline. */ for( i = 0; i < convi->n_pass; i++ ) { Pass *pass = &convi->pass[i]; vips_executor_set_scanline( &executor[i], ir, r->left, r->top + y ); vips_executor_set_array( &executor[i], pass->r, seq->t1 ); vips_executor_set_destination( &executor[i], seq->t2 ); vips_executor_run( &executor[i] ); VIPS_SWAP( signed short *, seq->t1, seq->t2 ); } #ifdef DEBUG_PIXELS printf( "before clip: %d\n", ((signed short *) seq->t1)[0] ); #endif /*DEBUG_PIXELS*/ vips_executor_set_array( &clip, convi->r, seq->t1 ); vips_executor_set_destination( &clip, q ); vips_executor_run( &clip ); #ifdef DEBUG_PIXELS printf( "after clip: %d\n", *VIPS_REGION_ADDR( or, r->left, r->top + y ) ); #endif /*DEBUG_PIXELS*/ } VIPS_GATE_STOP( "vips_convi_gen_vector: work" ); VIPS_COUNT_PIXELS( or, "vips_convi_gen_vector" ); return( 0 ); } /* INT inner loops. */ #define CONV_INT( TYPE, CLIP ) { \ TYPE * restrict p = (TYPE *) VIPS_REGION_ADDR( ir, le, y ); \ TYPE * restrict q = (TYPE *) VIPS_REGION_ADDR( or, le, y ); \ int * restrict offsets = seq->offsets; \ \ for( x = 0; x < sz; x++ ) { \ int sum; \ int i; \ \ sum = 0; \ for ( i = 0; i < nnz; i++ ) \ sum += t[i] * p[offsets[i]]; \ \ sum = ((sum + rounding) / scale) + offset; \ \ CLIP; \ \ q[x] = sum; \ p += 1; \ } \ } /* FLOAT inner loops. */ #define CONV_FLOAT( TYPE ) { \ TYPE * restrict p = (TYPE *) VIPS_REGION_ADDR( ir, le, y ); \ TYPE * restrict q = (TYPE *) VIPS_REGION_ADDR( or, le, y ); \ int * restrict offsets = seq->offsets; \ \ for( x = 0; x < sz; x++ ) { \ double sum; \ int i; \ \ sum = 0; \ for ( i = 0; i < nnz; i++ ) \ sum += t[i] * p[offsets[i]]; \ \ sum = (sum / scale) + offset; \ \ q[x] = sum; \ p += 1; \ } \ } /* Various integer range clips. Record over/under flows. */ #define CLIP_UCHAR( V ) \ G_STMT_START { \ if( (V) < 0 ) \ (V) = 0; \ else if( (V) > UCHAR_MAX ) \ (V) = UCHAR_MAX; \ } G_STMT_END #define CLIP_CHAR( V ) \ G_STMT_START { \ if( (V) < SCHAR_MIN ) \ (V) = SCHAR_MIN; \ else if( (V) > SCHAR_MAX ) \ (V) = SCHAR_MAX; \ } G_STMT_END #define CLIP_USHORT( V ) \ G_STMT_START { \ if( (V) < 0 ) \ (V) = 0; \ else if( (V) > USHRT_MAX ) \ (V) = USHRT_MAX; \ } G_STMT_END #define CLIP_SHORT( V ) \ G_STMT_START { \ if( (V) < SHRT_MIN ) \ (V) = SHRT_MIN; \ else if( (V) > SHRT_MAX ) \ (V) = SHRT_MAX; \ } G_STMT_END #define CLIP_NONE( V ) {} /* Convolve! */ static int vips_convi_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsConviSequence *seq = (VipsConviSequence *) vseq; VipsConvi *convi = (VipsConvi *) b; VipsConvolution *convolution = (VipsConvolution *) convi; VipsImage *M = convolution->M; int scale = VIPS_RINT( vips_image_get_scale( M ) ); int rounding = scale / 2; int offset = VIPS_RINT( vips_image_get_offset( M ) ); VipsImage *in = (VipsImage *) a; VipsRegion *ir = seq->ir; int * restrict t = convi->coeff; const int nnz = convi->nnz; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); int sz = VIPS_REGION_N_ELEMENTS( or ) * (vips_band_format_iscomplex( in->BandFmt ) ? 2 : 1); VipsRect s; int x, y, z, i; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += M->Xsize - 1; s.height += M->Ysize - 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); /* Fill offset array. Only do this if the bpl has changed since the * previous vips_region_prepare(). */ if( seq->last_bpl != VIPS_REGION_LSKIP( ir ) ) { seq->last_bpl = VIPS_REGION_LSKIP( ir ); for( i = 0; i < nnz; i++ ) { z = convi->coeff_pos[i]; x = z % M->Xsize; y = z / M->Xsize; seq->offsets[i] = (VIPS_REGION_ADDR( ir, x + le, y + to ) - VIPS_REGION_ADDR( ir, le, to )) / VIPS_IMAGE_SIZEOF_ELEMENT( ir->im ); } } VIPS_GATE_START( "vips_convi_gen: work" ); for( y = to; y < bo; y++ ) { switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: CONV_INT( unsigned char, CLIP_UCHAR( sum ) ); break; case VIPS_FORMAT_CHAR: CONV_INT( signed char, CLIP_CHAR( sum ) ); break; case VIPS_FORMAT_USHORT: CONV_INT( unsigned short, CLIP_USHORT( sum ) ); break; case VIPS_FORMAT_SHORT: CONV_INT( signed short, CLIP_SHORT( sum ) ); break; case VIPS_FORMAT_UINT: CONV_INT( unsigned int, CLIP_NONE( sum ) ); break; case VIPS_FORMAT_INT: CONV_INT( signed int, CLIP_NONE( sum ) ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: CONV_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: CONV_FLOAT( double ); break; default: g_assert_not_reached(); } } VIPS_GATE_STOP( "vips_convi_gen: work" ); VIPS_COUNT_PIXELS( or, "vips_convi_gen" ); return( 0 ); } /* Make an int version of a mask. * * We rint() everything, then adjust the scale try to match the overall * effect. */ int vips__image_intize( VipsImage *in, VipsImage **out ) { VipsImage *t; int x, y; double double_result; double out_scale; double out_offset; int int_result; if( vips_check_matrix( "vips2imask", in, &t ) ) return( -1 ); if( !(*out = vips_image_new_matrix( t->Xsize, t->Ysize )) ) { g_object_unref( t ); return( -1 ); } /* We want to make an intmask which has the same input to output ratio * as the double image. * * Imagine convolving with the double image, what's the ratio of * brightness between input and output? We want the same ratio for the * int version, if we can. * * Imagine an input image where every pixel is 1, what will the output * be? */ double_result = 0; for( y = 0; y < t->Ysize; y++ ) for( x = 0; x < t->Xsize; x++ ) double_result += *VIPS_MATRIX( t, x, y ); double_result /= vips_image_get_scale( t ); for( y = 0; y < t->Ysize; y++ ) for( x = 0; x < t->Xsize; x++ ) *VIPS_MATRIX( *out, x, y ) = VIPS_RINT( *VIPS_MATRIX( t, x, y ) ); out_scale = VIPS_RINT( vips_image_get_scale( t ) ); if( out_scale == 0 ) out_scale = 1; out_offset = VIPS_RINT( vips_image_get_offset( t ) ); /* Now convolve a 1 everywhere image with the int version we've made, * what do we get? */ int_result = 0; for( y = 0; y < t->Ysize; y++ ) for( x = 0; x < t->Xsize; x++ ) int_result += *VIPS_MATRIX( *out, x, y ); int_result /= out_scale; /* And adjust the scale to get as close to a match as we can. */ out_scale = VIPS_RINT( out_scale + (int_result - double_result) ); if( out_scale == 0 ) out_scale = 1; vips_image_set_double( *out, "scale", out_scale ); vips_image_set_double( *out, "offset", out_offset ); g_object_unref( t ); return( 0 ); } /* Make an int version of a mask. Each element is 8.8 float, with the same * exponent for each element (so just 8 bits in @out). * * @out is a w x h int array. */ static int vips_convi_intize( VipsConvi *convi, VipsImage *M ) { int n_point; VipsImage *t; double scale; double *scaled; double mx; double mn; int shift; int i; n_point = M->Xsize * M->Ysize; g_assert( convi->n_point == n_point ); if( vips_check_matrix( "vips2imask", M, &t ) ) return( -1 ); /* Bake the scale into the mask to make a double version. */ scale = vips_image_get_scale( t ); if( !(scaled = VIPS_ARRAY( convi, n_point, double )) ) { g_object_unref( t ); return( -1 ); } for( i = 0; i < n_point; i++ ) scaled[i] = VIPS_MATRIX( t, 0, 0 )[i] / scale; g_object_unref( t ); #ifdef DEBUG_COMPILE { int x, y; printf( "vips_convi_intize: double version\n" ); for( y = 0; y < t->Ysize; y++ ) { printf( "\t" ); for( x = 0; x < t->Xsize; x++ ) printf( "%g ", scaled[y * t->Xsize + x] ); printf( "\n" ); } } #endif /*DEBUG_COMPILE*/ mx = scaled[0]; mn = scaled[0]; for( i = 1; i < n_point; i++ ) { if( scaled[i] > mx ) mx = scaled[i]; if( scaled[i] < mn ) mn = scaled[i]; } /* The mask max rounded up to the next power of two gives the exponent * all elements share. Values are eg. -3 for 1/8, 3 for 8. * * Add one so we round up stuff exactly on x.0. We multiply by 128 * later, so 1.0 (for example) would become 128, which is outside * signed 8 bit. */ shift = ceil( log2( mx ) + 1 ); /* We need to sum n_points, so we have to shift right before adding a * new value to make sure we have enough range. */ convi->sexp = ceil( log2( n_point ) ); if( convi->sexp > 10 ) { g_info( "vips_convi_intize: mask too large" ); return( -1 ); } /* With that already done, the final shift must be ... */ convi->exp = 7 - shift - convi->sexp; if( !(convi->mant = VIPS_ARRAY( convi, n_point, int )) ) return( -1 ); for( i = 0; i < n_point; i++ ) { /* 128 since this is signed. */ convi->mant[i] = VIPS_RINT( 128 * scaled[i] * pow(2, -shift) ); if( convi->mant[i] < -128 || convi->mant[i] > 127 ) { g_info( "vips_convi_intize: mask range too large" ); return( -1 ); } } #ifdef DEBUG_COMPILE { int x, y; printf( "vips_convi_intize:\n" ); printf( "sexp = %d\n", convi->sexp ); printf( "exp = %d\n", convi->exp ); for( y = 0; y < t->Ysize; y++ ) { printf( "\t" ); for( x = 0; x < t->Xsize; x++ ) printf( "%4d ", convi->mant[y * t->Xsize + x] ); printf( "\n" ); } } #endif /*DEBUG_COMPILE*/ /* Verify accuracy. */ { double true_sum; int int_sum; int true_value; int int_value; true_sum = 0.0; int_sum = 0; for( i = 0; i < n_point; i++ ) { int value; true_sum += 128 * scaled[i]; value = 128 * convi->mant[i]; value = (value + (1 << (convi->sexp - 1))) >> convi->sexp; int_sum += value; int_sum = VIPS_CLIP( SHRT_MIN, int_sum, SHRT_MAX ); } true_value = VIPS_CLIP( 0, true_sum, 255 ); if( convi->exp > 0 ) int_value = (int_sum + (1 << (convi->exp - 1))) >> convi->exp; else int_value = VIPS_LSHIFT_INT( int_sum, convi->exp ); int_value = VIPS_CLIP( 0, int_value, 255 ); if( VIPS_ABS( true_value - int_value ) > 2 ) { g_info( "vips_convi_intize: too inaccurate" ); return( -1 ); } } return( 0 ); } static int vips_convi_build( VipsObject *object ) { VipsConvolution *convolution = (VipsConvolution *) object; VipsConvi *convi = (VipsConvi *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; VipsImage *M; int n_point; VipsGenerateFn generate; double *coeff; int i; if( VIPS_OBJECT_CLASS( vips_convi_parent_class )->build( object ) ) return( -1 ); in = convolution->in; M = convolution->M; convi->n_point = M->Xsize * M->Ysize; if( vips_embed( in, &t[0], M->Xsize / 2, M->Ysize / 2, in->Xsize + M->Xsize - 1, in->Ysize + M->Ysize - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[0]; /* Default to the C path. */ generate = vips_convi_gen; /* For uchar input, try to make a vector path. */ if( vips_vector_isenabled() && in->BandFmt == VIPS_FORMAT_UCHAR ) { if( !vips_convi_intize( convi, M ) && !vips_convi_compile( convi, in ) ) { generate = vips_convi_gen_vector; g_info( "convi: using vector path" ); } else vips_convi_compile_free( convi ); } /* Make the data for the C path. */ if( generate == vips_convi_gen ) { g_info( "convi: using C path" ); /* Make an int version of our mask. */ if( vips__image_intize( M, &t[1] ) ) return( -1 ); convi->iM = M = t[1]; coeff = VIPS_MATRIX( M, 0, 0 ); n_point = M->Xsize * M->Ysize; if( !(convi->coeff = VIPS_ARRAY( object, n_point, int )) || !(convi->coeff_pos = VIPS_ARRAY( object, n_point, int )) ) return( -1 ); /* Squeeze out zero mask elements. */ convi->nnz = 0; for( i = 0; i < n_point; i++ ) if( coeff[i] ) { convi->coeff[convi->nnz] = coeff[i]; convi->coeff_pos[convi->nnz] = i; convi->nnz += 1; } /* Was the whole mask zero? We must have at least 1 element * in there: set it to zero. */ if( convi->nnz == 0 ) { convi->coeff[0] = 0; convi->coeff_pos[0] = 0; convi->nnz = 1; } } g_object_set( convi, "out", vips_image_new(), NULL ); if( vips_image_pipelinev( convolution->out, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); /* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output * would be 1x1. */ convolution->out->Xsize -= M->Xsize - 1; convolution->out->Ysize -= M->Ysize - 1; if( vips_image_generate( convolution->out, vips_convi_start, generate, vips_convi_stop, in, convi ) ) return( -1 ); convolution->out->Xoffset = -M->Xsize / 2; convolution->out->Yoffset = -M->Ysize / 2; return( 0 ); } static void vips_convi_class_init( VipsConviClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->dispose = vips_convi_dispose; object_class->nickname = "convi"; object_class->description = _( "int convolution operation" ); object_class->build = vips_convi_build; } static void vips_convi_init( VipsConvi *convi ) { convi->nnz = 0; convi->coeff = NULL; convi->coeff_pos = NULL; } /** * vips_convi: (method) * @in: input image * @out: (out): output image * @mask: convolve with this mask * @...: %NULL-terminated list of optional named arguments * * Integer convolution. This is a low-level operation, see vips_conv() for * something more convenient. * * @mask is converted to an integer mask with rint() of each element, rint of * scale and rint of offset. Each output pixel is then calculated as * * |[ * sigma[i]{pixel[i] * mask[i]} / scale + offset * ]| * * The output image always has the same #VipsBandFormat as the input image. * * For #VIPS_FORMAT_UCHAR images, vips_convi() uses a fast vector path based on * half-float arithmetic. This can produce slightly different results. * Disable the vector path with `--vips-novector` or `VIPS_NOVECTOR` or * vips_vector_set_enabled(). * * See also: vips_conv(). * * Returns: 0 on success, -1 on error */ int vips_convi( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "convi", ap, in, out, mask ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/convolution.c000066400000000000000000000114451361153320700217610ustar00rootroot00000000000000/* base class for all convolution operations * * properties: * - one input image * - one output image * - one input mask */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pconvolution.h" /** * SECTION: convolution * @short_description: convolve and correlate images * @stability: Stable * @include: vips/vips.h * * These operations convolve an image in some way, or are operations based on * simple convolution, or are useful with convolution. * */ /** * VipsPrecision: * @VIPS_PRECISION_INTEGER: int everywhere * @VIPS_PRECISION_FLOAT: float everywhere * @VIPS_PRECISION_APPROXIMATE: approximate integer output * * How accurate an operation should be. */ /** * VipsCombine: * @VIPS_COMBINE_MAX: take the maximum of the possible values * @VIPS_COMBINE_SUM: sum all the values * @VIPS_COMBINE_MIN: take the minimum value * * How to combine values. See vips_compass(), for example. */ G_DEFINE_ABSTRACT_TYPE( VipsConvolution, vips_convolution, VIPS_TYPE_OPERATION ); static int vips_convolution_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConvolution *convolution = VIPS_CONVOLUTION( object ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); #ifdef DEBUG printf( "vips_convolution_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_convolution_parent_class )-> build( object ) ) return( -1 ); if( vips_check_matrix( class->nickname, convolution->mask, &t[0] ) ) return( -1 ); convolution->M = t[0]; return( 0 ); } static void vips_convolution_class_init( VipsConvolutionClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "convolution"; vobject_class->description = _( "convolution operations" ); vobject_class->build = vips_convolution_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; /* Inputs set by subclassess. */ VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsConvolution, in ) ); VIPS_ARG_IMAGE( class, "out", 10, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsConvolution, out ) ); VIPS_ARG_IMAGE( class, "mask", 20, _( "Mask" ), _( "Input matrix image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsConvolution, mask ) ); } static void vips_convolution_init( VipsConvolution *convolution ) { } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_convolution_operation_init( void ) { extern int vips_conv_get_type( void ); extern int vips_conva_get_type( void ); extern int vips_convf_get_type( void ); extern int vips_convi_get_type( void ); extern int vips_convsep_get_type( void ); extern int vips_convasep_get_type( void ); extern int vips_compass_get_type( void ); extern int vips_fastcor_get_type( void ); extern int vips_spcor_get_type( void ); extern int vips_sharpen_get_type( void ); extern int vips_gaussblur_get_type( void ); extern int vips_sobel_get_type( void ); extern int vips_canny_get_type( void ); vips_conv_get_type(); vips_conva_get_type(); vips_convf_get_type(); vips_convi_get_type(); vips_compass_get_type(); vips_convsep_get_type(); vips_convasep_get_type(); vips_fastcor_get_type(); vips_spcor_get_type(); vips_sharpen_get_type(); vips_gaussblur_get_type(); vips_canny_get_type(); vips_sobel_get_type(); } libvips-8.9.1/libvips/convolution/convsep.c000066400000000000000000000120171361153320700210530ustar00rootroot00000000000000/* convolve twice, rotating the mask * * 23/10/13 * - from vips_convsep() * 8/5/17 * - default to float ... int will often lose precision and should not be * the default */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pconvolution.h" typedef struct { VipsConvolution parent_instance; VipsPrecision precision; int layers; int cluster; } VipsConvsep; typedef VipsConvolutionClass VipsConvsepClass; G_DEFINE_TYPE( VipsConvsep, vips_convsep, VIPS_TYPE_CONVOLUTION ); static int vips_convsep_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConvolution *convolution = (VipsConvolution *) object; VipsConvsep *convsep = (VipsConvsep *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; g_object_set( convsep, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_convsep_parent_class )->build( object ) ) return( -1 ); if( vips_check_separable( class->nickname, convolution->M ) ) return( -1 ); in = convolution->in; if( convsep->precision == VIPS_PRECISION_APPROXIMATE ) { if( vips_convasep( in, &t[0], convolution->M, "layers", convsep->layers, NULL ) ) return( -1 ); in = t[0]; } else { /* Take a copy, since we must set the offset. */ if( vips_rot( convolution->M, &t[0], VIPS_ANGLE_D90, NULL ) || vips_copy( t[0], &t[3], NULL ) ) return( -1 ); vips_image_set_double( t[3], "offset", 0 ); if( vips_conv( in, &t[1], convolution->M, "precision", convsep->precision, "layers", convsep->layers, "cluster", convsep->cluster, NULL ) || vips_conv( t[1], &t[2], t[3], "precision", convsep->precision, "layers", convsep->layers, "cluster", convsep->cluster, NULL ) ) return( -1 ); in = t[2]; } if( vips_image_write( in, convolution->out ) ) return( -1 ); return( 0 ); } static void vips_convsep_class_init( VipsConvsepClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "convsep"; object_class->description = _( "seperable convolution operation" ); object_class->build = vips_convsep_build; VIPS_ARG_ENUM( class, "precision", 203, _( "Precision" ), _( "Convolve with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConvsep, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_FLOAT ); VIPS_ARG_INT( class, "layers", 204, _( "Layers" ), _( "Use this many layers in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConvsep, layers ), 1, 1000, 5 ); VIPS_ARG_INT( class, "cluster", 205, _( "Cluster" ), _( "Cluster lines closer than this in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConvsep, cluster ), 1, 100, 1 ); } static void vips_convsep_init( VipsConvsep *convsep ) { convsep->precision = VIPS_PRECISION_FLOAT; convsep->layers = 5; convsep->cluster = 1; } /** * vips_convsep: (method) * @in: input image * @out: (out): output image * @mask: convolution mask * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @precision: calculation accuracy * * @layers: number of layers for approximation * * @cluster: cluster lines closer than this distance * * Perform a separable convolution of @in with @mask. * See vips_conv() for a detailed description. * * The mask must be 1xn or nx1 elements. * * The image is convolved twice: once with @mask and then again with @mask * rotated by 90 degrees. This is much faster for certain types of mask * (gaussian blur, for example) than doing a full 2D convolution. * * See also: vips_conv(), vips_gaussmat(). * * Returns: 0 on success, -1 on error */ int vips_convsep( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "convsep", ap, in, out, mask ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/correlation.c000066400000000000000000000113761361153320700217260ustar00rootroot00000000000000/* base class for correlation * * 7/11/13 * - from convolution.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pconvolution.h" #include "correlation.h" G_DEFINE_ABSTRACT_TYPE( VipsCorrelation, vips_correlation, VIPS_TYPE_OPERATION ); static int vips_correlation_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsCorrelation *correlation = (VipsCorrelation *) b; VipsCorrelationClass *cclass = VIPS_CORRELATION_GET_CLASS( correlation ); VipsRect *r = &or->valid; VipsRect irect; /* What part of ir do we need? */ irect.left = r->left; irect.top = r->top; irect.width = r->width + correlation->ref_ready->Xsize - 1; irect.height = r->height + correlation->ref_ready->Ysize - 1; if( vips_region_prepare( ir, &irect ) ) return( -1 ); cclass->correlation( correlation, ir, or ); return( 0 ); } static int vips_correlation_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCorrelationClass *cclass = VIPS_CORRELATION_CLASS( class ); VipsCorrelation *correlation = (VipsCorrelation *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 6 ); if( VIPS_OBJECT_CLASS( vips_correlation_parent_class )-> build( object ) ) return( -1 ); /* Stretch input out. */ if( vips_embed( correlation->in, &t[0], correlation->ref->Xsize / 2, correlation->ref->Ysize / 2, correlation->in->Xsize + correlation->ref->Xsize - 1, correlation->in->Ysize + correlation->ref->Ysize - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); if( vips__formatalike( t[0], correlation->ref, &t[1], &t[2] ) || vips__bandalike( class->nickname, t[1], t[2], &t[3], &t[4] ) || !(t[5] = vips_image_copy_memory( t[4] )) ) return( -1 ); correlation->in_ready = t[3]; correlation->ref_ready = t[5]; g_object_set( object, "out", vips_image_new(), NULL ); /* FATSTRIP is good for us as THINSTRIP will cause * too many recalculations on overlaps. */ if( vips_image_pipelinev( correlation->out, VIPS_DEMAND_STYLE_FATSTRIP, correlation->in_ready, correlation->ref_ready, NULL ) ) return( -1 ); correlation->out->Xsize = correlation->in->Xsize; correlation->out->Ysize = correlation->in->Ysize; correlation->out->BandFmt = cclass->format_table[correlation->in_ready->BandFmt]; if( cclass->pre_generate && cclass->pre_generate( correlation ) ) return( -1 ); if( vips_image_generate( correlation->out, vips_start_one, vips_correlation_gen, vips_stop_one, correlation->in_ready, correlation ) ) return( -1 ); vips_reorder_margin_hint( correlation->out, correlation->ref->Xsize * correlation->ref->Ysize ); return( 0 ); } static void vips_correlation_class_init( VipsCorrelationClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "correlation"; object_class->description = _( "correlation operation" ); object_class->build = vips_correlation_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCorrelation, in ) ); VIPS_ARG_IMAGE( class, "ref", 10, _( "Mask" ), _( "Input reference image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCorrelation, ref ) ); VIPS_ARG_IMAGE( class, "out", 20, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsCorrelation, out ) ); } static void vips_correlation_init( VipsCorrelation *correlation ) { } libvips-8.9.1/libvips/convolution/correlation.h000066400000000000000000000047101361153320700217250ustar00rootroot00000000000000/* base class for all correlation operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PCORRELATION_H #define VIPS_PCORRELATION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_CORRELATION (vips_correlation_get_type()) #define VIPS_CORRELATION( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_CORRELATION, VipsCorrelation )) #define VIPS_CORRELATION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_CORRELATION, VipsCorrelationClass)) #define VIPS_IS_CORRELATION( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_CORRELATION )) #define VIPS_IS_CORRELATION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_CORRELATION )) #define VIPS_CORRELATION_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_CORRELATION, VipsCorrelationClass )) typedef struct { VipsOperation parent_instance; /* Params. */ VipsImage *in; VipsImage *ref; VipsImage *out; /* The two input images, upcast to the smallest common format. ref is * a memory buffer. */ VipsImage *in_ready; VipsImage *ref_ready; } VipsCorrelation; typedef struct { VipsOperationClass parent_class; /* For each upcast input format, what output format. */ const VipsBandFormat *format_table; /* Run just before generate. The subclass can fill in some stuff. */ int (*pre_generate)( VipsCorrelation * ); void (*correlation)( VipsCorrelation *, VipsRegion *in, VipsRegion *out ); } VipsCorrelationClass; GType vips_correlation_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PCORRELATION_H*/ libvips-8.9.1/libvips/convolution/fastcor.c000066400000000000000000000146541361153320700210500ustar00rootroot00000000000000/* fastcor * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : 15/03/1991 * 20/2/95 JC * - ANSIfied * - in1 and in2 swapped, to match order for im_spcor * - memory leaks fixed * 21/2/95 JC * - partialed * - speed-ups * 7/4/04 * - now uses im_embed() with edge stretching on the output * - sets Xoffset / Yoffset * 8/3/06 JC * - use im_embed() with edge stretching on the input, not the output * - calculate sum of squares of differences, rather than abs of * difference * 3/2/10 * - gtkdoc * - cleanups * 7/11/13 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pconvolution.h" #include "correlation.h" typedef VipsCorrelationClass VipsFastcor; typedef VipsCorrelationClass VipsFastcorClass; G_DEFINE_TYPE( VipsFastcor, vips_fastcor, VIPS_TYPE_CORRELATION ); #define CORR_INT( TYPE ) { \ for( y = 0; y < r->height; y++ ) { \ unsigned int *q = (unsigned int *) \ VIPS_REGION_ADDR( out, r->left, r->top + y ); \ \ for( x = 0; x < r->width; x++ ) \ for( b = 0; b < bands; b++ ) { \ TYPE *p1 = (TYPE *) ref->data; \ TYPE *p2 = (TYPE *) VIPS_REGION_ADDR( in, \ r->left + x, r->top + y ); \ \ unsigned int sum; \ \ sum = 0; \ for( j = 0; j < ref->Ysize; j++ ) { \ for( i = b; i < sz; i += bands ) { \ int t = p1[i] - p2[i]; \ \ sum += t * t; \ } \ \ p1 += sz; \ p2 += lsk; \ } \ \ *q++ = sum; \ } \ } \ } #define CORR_FLOAT( TYPE ) { \ for( y = 0; y < r->height; y++ ) { \ TYPE *q = (TYPE *) \ VIPS_REGION_ADDR( out, r->left, r->top + y ); \ \ for( x = 0; x < r->width; x++ ) \ for( b = 0; b < bands; b++ ) { \ TYPE *p_ref = (TYPE *) ref->data; \ TYPE *p_in = (TYPE *) VIPS_REGION_ADDR( in, \ r->left + x, r->top + y ); \ \ TYPE sum; \ \ sum = 0; \ for( j = 0; j < ref->Ysize; j++ ) { \ for( i = b; i < sz; i += bands ) { \ TYPE dif = p_ref[i] - p_in[i]; \ \ sum += dif * dif; \ } \ \ p_ref += sz; \ p_in += lsk; \ } \ \ *q++ = sum; \ } \ } \ } static void vips_fastcor_correlation( VipsCorrelation *correlation, VipsRegion *in, VipsRegion *out ) { VipsRect *r = &out->valid; VipsImage *ref = correlation->ref_ready; int bands = vips_band_format_iscomplex( ref->BandFmt ) ? ref->Bands * 2 : ref->Bands; int sz = ref->Xsize * bands; int lsk = VIPS_REGION_LSKIP( in ) / VIPS_IMAGE_SIZEOF_ELEMENT( in->im ); int x, y, i, j, b; switch( vips_image_get_format( ref ) ) { case VIPS_FORMAT_CHAR: CORR_INT( signed char ); break; case VIPS_FORMAT_UCHAR: CORR_INT( unsigned char ); break; case VIPS_FORMAT_SHORT: CORR_INT( signed short ); break; case VIPS_FORMAT_USHORT: CORR_INT( unsigned short ); break; case VIPS_FORMAT_INT: CORR_INT( signed int ); break; case VIPS_FORMAT_UINT: CORR_INT( unsigned int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: CORR_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: CORR_FLOAT( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for multiplication. Sign and value preserving. Make sure * these match the case statement in multiply_buffer() above. */ static int vips_fastcor_format_table[10] = { /* UC C US S UI I F X D DX */ UI, UI, UI, UI, UI, UI,F, X, D, DX }; static void vips_fastcor_class_init( VipsFastcorClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsCorrelationClass *cclass = VIPS_CORRELATION_CLASS( class ); object_class->nickname = "fastcor"; object_class->description = _( "fast correlation" ); cclass->format_table = vips_fastcor_format_table; cclass->correlation = vips_fastcor_correlation; } static void vips_fastcor_init( VipsFastcor *fastcor ) { } /** * vips_fastcor: (method) * @in: input image * @ref: reference image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Calculate a fast correlation surface. * * @ref is placed at every position in @in and the sum of squares of * differences calculated. * * The output * image is the same size as the input. Extra input edge pixels are made by * copying the existing edges outwards. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The output type is uint if both inputs are integer, float if both are float * or complex, and double if either is double or double complex. * In other words, the output type is just large enough to hold the whole * range of possible values. * * See also: vips_spcor(). * * Returns: 0 on success, -1 on error */ int vips_fastcor( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "fastcor", ap, in, ref, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/gaussblur.c000066400000000000000000000113361361153320700214100ustar00rootroot00000000000000/* Gaussian blur. * * 15/11/13 * - from vips_sharpen() * 19/11/14 * - change parameters to be more imagemagick-like */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsGaussblur { VipsOperation parent_instance; VipsImage *in; VipsImage *out; gdouble sigma; gdouble min_ampl; VipsPrecision precision; } VipsGaussblur; typedef VipsOperationClass VipsGaussblurClass; G_DEFINE_TYPE( VipsGaussblur, vips_gaussblur, VIPS_TYPE_OPERATION ); static int vips_gaussblur_build( VipsObject *object ) { VipsGaussblur *gaussblur = (VipsGaussblur *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); if( VIPS_OBJECT_CLASS( vips_gaussblur_parent_class )->build( object ) ) return( -1 ); if( vips_gaussmat( &t[0], gaussblur->sigma, gaussblur->min_ampl, "separable", TRUE, "precision", gaussblur->precision, NULL ) ) return( -1 ); #ifdef DEBUG printf( "gaussblur: blurring with:\n" ); vips_matrixprint( t[0], NULL ); #endif /*DEBUG*/ g_info( "gaussblur mask width %d", t[0]->Xsize ); if( vips_convsep( gaussblur->in, &t[1], t[0], "precision", gaussblur->precision, NULL ) ) return( -1 ); g_object_set( object, "out", vips_image_new(), NULL ); if( vips_image_write( t[1], gaussblur->out ) ) return( -1 ); return( 0 ); } static void vips_gaussblur_class_init( VipsGaussblurClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "gaussblur"; object_class->description = _( "gaussian blur" ); object_class->build = vips_gaussblur_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussblur, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsGaussblur, out ) ); VIPS_ARG_DOUBLE( class, "sigma", 3, _( "Sigma" ), _( "Sigma of Gaussian" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussblur, sigma ), 0.01, 1000, 1.5 ); VIPS_ARG_DOUBLE( class, "min_ampl", 3, _( "Minimum amplitude" ), _( "Minimum amplitude of Gaussian" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussblur, min_ampl ), 0.001, 1.0, 0.2 ); VIPS_ARG_ENUM( class, "precision", 4, _( "Precision" ), _( "Convolve with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussblur, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_INTEGER ); } static void vips_gaussblur_init( VipsGaussblur *gaussblur ) { gaussblur->sigma = 1.5; gaussblur->min_ampl = 0.2; gaussblur->precision = VIPS_PRECISION_INTEGER; } /** * vips_gaussblur: (method) * @in: input image * @out: (out): output image * @sigma: how large a mask to use * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @precision: #VipsPrecision, precision for blur, default int * * @min_ampl: minimum amplitude, default 0.2 * * This operator runs vips_gaussmat() and vips_convsep() for you on an image. * Set @min_ampl smaller to generate a larger, more accurate mask. Set @sigma * larger to make the blur more blurry. * * See also: vips_gaussmat(), vips_convsep(). * * Returns: 0 on success, -1 on error. */ int vips_gaussblur( VipsImage *in, VipsImage **out, double sigma, ... ) { va_list ap; int result; va_start( ap, sigma ); result = vips_call_split( "gaussblur", ap, in, out, sigma ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/pconvolution.h000066400000000000000000000041721361153320700221450ustar00rootroot00000000000000/* base class for all convolution operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PCONVOLUTION_H #define VIPS_PCONVOLUTION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_CONVOLUTION (vips_convolution_get_type()) #define VIPS_CONVOLUTION( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_CONVOLUTION, VipsConvolution )) #define VIPS_CONVOLUTION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_CONVOLUTION, VipsConvolutionClass)) #define VIPS_IS_CONVOLUTION( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_CONVOLUTION )) #define VIPS_IS_CONVOLUTION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_CONVOLUTION )) #define VIPS_CONVOLUTION_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_CONVOLUTION, VipsConvolutionClass )) typedef struct _VipsConvolution VipsConvolution; struct _VipsConvolution { VipsOperation parent_instance; VipsImage *in; VipsImage *out; VipsImage *mask; /* @mask cast ready for processing. */ VipsImage *M; }; typedef struct _VipsConvolutionClass { VipsOperationClass parent_class; } VipsConvolutionClass; GType vips_convolution_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PCONVOLUTION_H*/ libvips-8.9.1/libvips/convolution/sharpen.c000066400000000000000000000271351361153320700210450ustar00rootroot00000000000000/* Cored sharpen of LABQ image. * * Returns 0 on success and -1 on error * * Copyright: 1995 A. Abbood * Author: A. Abbood * Written on: 30/01/1995 * 15/5/95 JC * - updated for latest 7.3 mods * - m3 parameter removed * - bug fixes and speed-ups * 4/7/95 JC * - x3 parameter added * - xs are now double * 6/7/95 JC * - xs are now ys * - better LUT generation * 12/3/01 JC * - uses seperable convolution for umask * - tiny clean ups * 23/7/01 JC * - fix for band extract index changed * 21/4/04 * - switched to gaussian mask and radius * 20/11/04 * - uses extract_bands() to remove and reattach ab for slight speedup * - accepts LabS as well as LabQ for slight speedup * - small code tidies * - ~15% speed up in total * 29/11/06 * - convolve first to help region sharing * 3/2/10 * - gtkdoc * - cleanups * 13/11/13 * - redo as a class * - does any type, any number of bands * 24/2/16 * - swap "radius" for "sigma", allows finer control * - allow a much greater range of parameters * - move to defaults suitable for screen output * 28/8/19 * - fix sigma 0.5 case (thanks 2h4dl) */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsSharpen { VipsOperation parent_instance; VipsImage *in; VipsImage *out; double sigma; double x1; double y2; double y3; double m1; double m2; /* The lut we build. */ int *lut; /* We used to have a radius control. */ int radius; } VipsSharpen; typedef VipsOperationClass VipsSharpenClass; G_DEFINE_TYPE( VipsSharpen, vips_sharpen, VIPS_TYPE_OPERATION ); static int vips_sharpen_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion **in = (VipsRegion **) vseq; VipsSharpen *sharpen = (VipsSharpen *) b; VipsRect *r = &or->valid; int *lut = sharpen->lut; int x, y; if( vips_reorder_prepare_many( or->im, in, r ) ) return( -1 ); VIPS_GATE_START( "vips_sharpen_generate: work" ); for( y = 0; y < r->height; y++ ) { short *p1 = (short * restrict) VIPS_REGION_ADDR( in[0], r->left, r->top + y ); short *p2 = (short * restrict) VIPS_REGION_ADDR( in[1], r->left, r->top + y ); short *q = (short * restrict) VIPS_REGION_ADDR( or, r->left, r->top + y ); for( x = 0; x < r->width; x++ ) { int v1 = p1[x]; int v2 = p2[x]; /* Our LUT is -32768 - 32767. For the v1, v2 * difference to be in this range, both must be 0 - * 32767. */ int diff = ((v1 & 0x7fff) - (v2 & 0x7fff)); int out; g_assert( diff + 32768 >= 0 ); g_assert( diff + 32768 < 65536 ); out = v1 + lut[diff + 32768]; if( out < 0 ) out = 0; if( out > 32767 ) out = 32767; q[x] = out; } } VIPS_GATE_STOP( "vips_sharpen_generate: work" ); return( 0 ); } static int vips_sharpen_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsSharpen *sharpen = (VipsSharpen *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 8 ); VipsImage **args = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; VipsInterpretation old_interpretation; int i; VIPS_GATE_START( "vips_sharpen_build: build" ); if( VIPS_OBJECT_CLASS( vips_sharpen_parent_class )->build( object ) ) return( -1 ); /* We used to have a radius control. If that's set but sigma isn't, * use it to set a reasonable value for sigma. */ if( !vips_object_argument_isset( object, "sigma" ) && vips_object_argument_isset( object, "radius" ) ) sharpen->sigma = 1 + sharpen->radius / 2; in = sharpen->in; old_interpretation = in->Type; if( vips_colourspace( in, &t[0], VIPS_INTERPRETATION_LABS, NULL ) ) return( -1 ); in = t[0]; if( vips_check_uncoded( class->nickname, in ) || vips_check_bands_atleast( class->nickname, in, 3 ) || vips_check_format( class->nickname, in, VIPS_FORMAT_SHORT ) ) return( -1 ); /* Stop at 10% of max ... a bit mean. We always sharpen a short, * so there's no point using a float mask. */ if( vips_gaussmat( &t[1], sharpen->sigma, 0.1, "separable", TRUE, "precision", VIPS_PRECISION_INTEGER, NULL ) ) return( -1 ); #ifdef DEBUG printf( "sharpen: blurring with:\n" ); vips_matrixprint( t[1], NULL ); #endif /*DEBUG*/ /* Index with the signed difference between two 0 - 32767 images. */ if( !(sharpen->lut = VIPS_ARRAY( object, 65536, int )) ) return( -1 ); for( i = 0; i < 65536; i++ ) { /* Rescale to +/- 100. */ double v = (i - 32767) / 327.67; double y; if( v < -sharpen->x1 ) /* Left of -x1. */ y = (v + sharpen->x1) * sharpen->m2 + -sharpen->x1 * sharpen->m1; else if( v < sharpen->x1 ) /* Centre section. */ y = v * sharpen->m1; else /* Right of x1. */ y = (v - sharpen->x1) * sharpen->m2 + sharpen->x1 * sharpen->m1; if( y < -sharpen->y3 ) y = -sharpen->y3; if( y > sharpen->y2 ) y = sharpen->y2; sharpen->lut[i] = VIPS_RINT( y * 327.67 ); } #ifdef DEBUG { VipsImage *mat; mat = vips_image_new_matrix( 65536, 1 ); for( i = 0; i < 65536; i++ ) *VIPS_MATRIX( mat, i, 0 ) = sharpen->lut[i]; vips_image_write_to_file( mat, "x.v", NULL ); printf( "lut written to x.v\n" ); g_object_unref( mat ); } #endif /*DEBUG*/ /* Extract L and the rest, convolve L. */ if( vips_extract_band( in, &args[0], 0, NULL ) || vips_extract_band( in, &t[3], 1, "n", in->Bands - 1, NULL ) || vips_convsep( args[0], &args[1], t[1], "precision", VIPS_PRECISION_INTEGER, NULL ) ) return( -1 ); t[5] = vips_image_new(); if( vips_image_pipeline_array( t[5], VIPS_DEMAND_STYLE_FATSTRIP, args ) ) return( -1 ); if( vips_image_generate( t[5], vips_start_many, vips_sharpen_generate, vips_stop_many, args, sharpen ) ) return( -1 ); g_object_set( object, "out", vips_image_new(), NULL ); /* Reattach the rest. */ if( vips_bandjoin2( t[5], t[3], &t[6], NULL ) || vips_colourspace( t[6], &t[7], old_interpretation, NULL ) || vips_image_write( t[7], sharpen->out ) ) return( -1 ); VIPS_GATE_STOP( "vips_sharpen_build: build" ); return( 0 ); } static void vips_sharpen_class_init( VipsSharpenClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "sharpen"; object_class->description = _( "unsharp masking for print" ); object_class->build = vips_sharpen_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSharpen, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsSharpen, out ) ); VIPS_ARG_DOUBLE( class, "sigma", 3, _( "Sigma" ), _( "Sigma of Gaussian" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, sigma ), 0.000001, 10000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "x1", 5, _( "x1" ), _( "Flat/jaggy threshold" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, x1 ), 0, 1000000, 2.0 ); VIPS_ARG_DOUBLE( class, "y2", 6, _( "y2" ), _( "Maximum brightening" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, y2 ), 0, 1000000, 10 ); VIPS_ARG_DOUBLE( class, "y3", 7, _( "y3" ), _( "Maximum darkening" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, y3 ), 0, 1000000, 20 ); VIPS_ARG_DOUBLE( class, "m1", 8, _( "m1" ), _( "Slope for flat areas" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, m1 ), 0, 1000000, 0.0 ); VIPS_ARG_DOUBLE( class, "m2", 9, _( "m2" ), _( "Slope for jaggy areas" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, m2 ), 0, 1000000, 3.0 ); /* We used to have a radius control. */ VIPS_ARG_INT( class, "radius", 3, _( "Radius" ), _( "radius of Gaussian" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsSharpen, radius ), 1, 100, 1 ); } static void vips_sharpen_init( VipsSharpen *sharpen ) { sharpen->sigma = 0.5; sharpen->x1 = 2.0; sharpen->y2 = 10.0; sharpen->y3 = 20.0; sharpen->m1 = 0.0; sharpen->m2 = 3.0; } /** * vips_sharpen: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @sigma: sigma of gaussian * * @x1: flat/jaggy threshold * * @y2: maximum amount of brightening * * @y3: maximum amount of darkening * * @m1: slope for flat areas * * @m2: slope for jaggy areas * * Selectively sharpen the L channel of a LAB image. The input image is * transformed to #VIPS_INTERPRETATION_LABS. * * The operation performs a gaussian blur and subtracts from @in to generate a * high-frequency signal. This signal is passed through a lookup table formed * from the five parameters and added back to @in. * * The lookup table is formed like this: * * |[ * . ^ * . y2 |- - - - - ----------- * . | / * . | / slope m2 * . | .../ * . -x1 | ... | * . -------------------...----------------------> * . | ... | x1 * . |... slope m1 * . / | * . / m2 | * . / | * . / | * . / | * . / | * . ______/ _ _ _ _ _ _ | -y3 * . | * ]| * * For screen output, we suggest the following settings (the defaults): * * |[ * sigma == 0.5 * x1 == 2 * y2 == 10 (don't brighten by more than 10 L*) * y3 == 20 (can darken by up to 20 L*) * m1 == 0 (no sharpening in flat areas) * m2 == 3 (some sharpening in jaggy areas) * ]| * * If you want more or less sharpening, we suggest you just change the * m2 parameter. * * The @sigma parameter changes the width of the fringe and can be * adjusted according to the output printing resolution. As an approximate * guideline, use 0.5 for 4 pixels/mm (display resolution), * 1.0 for 12 pixels/mm and 1.5 for 16 pixels/mm (300 dpi == 12 * pixels/mm). These figures refer to the image raster, not the half-tone * resolution. * * See also: vips_conv(). * * Returns: 0 on success, -1 on error. */ int vips_sharpen( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "sharpen", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/sobel.c000066400000000000000000000132341361153320700205040ustar00rootroot00000000000000/* Sobel edge detector * * 2/2/18 * - from vips_sobel() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsSobel { VipsOperation parent_instance; VipsImage *in; VipsImage *out; /* Need an image vector for start_many. */ VipsImage *args[3]; } VipsSobel; typedef VipsOperationClass VipsSobelClass; G_DEFINE_TYPE( VipsSobel, vips_sobel, VIPS_TYPE_OPERATION ); static int vips_sobel_uchar_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion **in = (VipsRegion **) vseq; VipsRect *r = &or->valid; int sz = r->width * in[0]->im->Bands; int x, y; if( vips_reorder_prepare_many( or->im, in, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *p1 = (VipsPel * restrict) VIPS_REGION_ADDR( in[0], r->left, r->top + y ); VipsPel *p2 = (VipsPel * restrict) VIPS_REGION_ADDR( in[1], r->left, r->top + y ); VipsPel *q = (VipsPel * restrict) VIPS_REGION_ADDR( or, r->left, r->top + y ); for( x = 0; x < sz; x++ ) { int v1 = 2 * (p1[x] - 128); int v2 = 2 * (p2[x] - 128); int v = VIPS_ABS( v1 ) + VIPS_ABS( v2 ); q[x] = v > 255 ? 255 : v; } } return( 0 ); } /* Fast uchar path. */ static int vips_sobel_build_uchar( VipsSobel *sobel ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( sobel ), 20 ); g_info( "vips_sobel: uchar path" ); /* Sobel is separable, but it's so small there's no speed to be gained, * and doing it one pass lets us keep more precision. * * Divide the result by 2 to prevent overflow, since our result will be * just 8 bits. */ t[1] = vips_image_new_matrixv( 3, 3, 1.0, 2.0, 1.0, 0.0, 0.0, 0.0, -1.0, -2.0, -1.0 ); vips_image_set_double( t[1], "offset", 128.0 ); vips_image_set_double( t[1], "scale", 2.0 ); if( vips_conv( sobel->in, &t[3], t[1], "precision", VIPS_PRECISION_INTEGER, NULL ) ) return( -1 ); if( vips_rot90( t[1], &t[5], NULL ) || vips_conv( sobel->in, &t[7], t[5], "precision", VIPS_PRECISION_INTEGER, NULL ) ) return( -1 ); g_object_set( sobel, "out", vips_image_new(), NULL ); sobel->args[0] = t[3]; sobel->args[1] = t[7]; sobel->args[2] = NULL; if( vips_image_pipeline_array( sobel->out, VIPS_DEMAND_STYLE_FATSTRIP, sobel->args ) ) return( -1 ); if( vips_image_generate( sobel->out, vips_start_many, vips_sobel_uchar_gen, vips_stop_many, sobel->args, NULL ) ) return( -1 ); return( 0 ); } /* Works for any format, but slower. */ static int vips_sobel_build_float( VipsSobel *sobel ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( sobel ), 20 ); g_info( "vips_sobel: float path" ); t[1] = vips_image_new_matrixv( 3, 3, 1.0, 2.0, 1.0, 0.0, 0.0, 0.0, -1.0, -2.0, -1.0 ); if( vips_rot90( t[1], &t[2], NULL ) || vips_conv( sobel->in, &t[3], t[1], NULL ) || vips_conv( sobel->in, &t[7], t[2], NULL ) ) return( -1 ); if( vips_abs( t[3], &t[9], NULL ) || vips_abs( t[7], &t[10], NULL ) || vips_add( t[9], t[10], &t[11], NULL ) || vips_cast( t[11], &t[12], sobel->in->BandFmt, NULL ) ) return( -1 ); g_object_set( sobel, "out", vips_image_new(), NULL ); if( vips_image_write( t[12], sobel->out ) ) return( -1 ); return( 0 ); } static int vips_sobel_build( VipsObject *object ) { VipsSobel *sobel = (VipsSobel *) object; if( sobel->in->BandFmt == VIPS_FORMAT_UCHAR ) { if( vips_sobel_build_uchar( sobel ) ) return( -1 ); } else { if( vips_sobel_build_float( sobel ) ) return( -1 ); } return( 0 ); } static void vips_sobel_class_init( VipsSobelClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "sobel"; object_class->description = _( "Sobel edge detector" ); object_class->build = vips_sobel_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSobel, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsSobel, out ) ); } static void vips_sobel_init( VipsSobel *sobel ) { } /** * vips_sobel: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Simple Sobel edge detector. * * See also: vips_canny(). * * Returns: 0 on success, -1 on error. */ int vips_sobel( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "sobel", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/convolution/spcor.c000066400000000000000000000221011361153320700205170ustar00rootroot00000000000000/* spcor * * Copyright: 1990, N. Dessipris; 2006, 2007 Nottingham Trent University. * * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : * 20/2/95 JC * - updated * - ANSIfied, a little * 21/2/95 JC * - rewritten * - partialed * - speed-ups * - new correlation coefficient (see above), from Niblack "An * Introduction to Digital Image Processing", Prentice/Hall, pp 138. * 4/9/97 JC * - now does short/ushort as well * 13/2/03 JC * - oops, could segv for short images * 14/4/04 JC * - sets Xoffset / Yoffset * 8/3/06 JC * - use im_embed() with edge stretching on the input, not the output * * 2006-10-24 tcv * - add im_spcor2 * * 2007-11-12 tcv * - make im_spcor a wrapper selecting either im__spcor or im__spcor2 * 2008-09-09 JC * - roll back the windowed version for now, it has some tile edge effects * 3/2/10 * - gtkdoc * - cleanups * 7/11/13 * - redone as a class * 8/4/15 * - avoid /0 for constant reference or zero image */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pconvolution.h" #include "correlation.h" typedef struct _VipsSpcor { VipsCorrelation parent_instance; /* Per-band mean of ref images. */ double *rmean; /* Per band sqrt(sumij (ref(i,j)-mean(ref))^2) */ double *c1; } VipsSpcor; typedef VipsCorrelationClass VipsSpcorClass; G_DEFINE_TYPE( VipsSpcor, vips_spcor, VIPS_TYPE_CORRELATION ); static int vips_spcor_pre_generate( VipsCorrelation *correlation ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( correlation ); VipsSpcor *spcor = (VipsSpcor *) correlation; VipsImage *ref = correlation->ref_ready; int bands = ref->Bands; VipsImage **b = (VipsImage **) vips_object_local_array( VIPS_OBJECT( spcor ), bands ); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( spcor ), 2 ); VipsImage **b2 = (VipsImage **) vips_object_local_array( VIPS_OBJECT( spcor ), bands ); int i; double *offset; double *scale; if( vips_check_noncomplex( class->nickname, ref ) ) return( -1 ); /* Per-band mean. */ if( !(spcor->rmean = VIPS_ARRAY( spcor, bands, double )) || !(spcor->c1 = VIPS_ARRAY( spcor, bands, double )) ) return( -1 ); for( i = 0; i < bands; i++ ) if( vips_extract_band( ref, &b[i], i, NULL ) || vips_avg( b[i], &spcor->rmean[i], NULL ) ) return( -1 ); /* Per band sqrt(sumij (ref(i,j)-mean(ref))^2) */ if( !(offset = VIPS_ARRAY( spcor, bands, double )) || !(scale = VIPS_ARRAY( spcor, bands, double )) ) return( -1 ); for( i = 0; i < bands; i++ ) { offset[i] = -spcor->rmean[i]; scale[i] = 1.0; } if( vips_linear( ref, &t[0], scale, offset, bands, NULL ) || vips_multiply( t[0], t[0], &t[1], NULL ) ) return( -1 ); for( i = 0; i < bands; i++ ) if( vips_extract_band( t[1], &b2[i], i, NULL ) || vips_avg( b2[i], &spcor->c1[i], NULL ) ) return( -1 ); for( i = 0; i < bands; i++ ) { spcor->c1[i] *= ref->Xsize * ref->Ysize; spcor->c1[i] = sqrt( spcor->c1[i] ); } return( 0 ); } #define LOOP( IN ) { \ IN *r1 = ((IN *) ref->data) + b; \ IN *p1 = ((IN *) p) + b; \ int in_lsk = lsk / sizeof( IN ); \ IN *r1a; \ IN *p1a; \ \ /* Mean of area of in corresponding to ref. \ */ \ p1a = p1; \ sum1 = 0.0; \ for( j = 0; j < ref->Ysize; j++ ) { \ for( i = 0; i < sz; i += bands ) \ sum1 += p1a[i]; \ p1a += in_lsk; \ } \ imean = sum1 / VIPS_IMAGE_N_PELS( ref ); \ \ /* Calculate sum-of-squares-of-differences for this window on \ * in, and also sum-of-products-of-differences from mean. \ */ \ p1a = p1; \ r1a = r1; \ sum2 = 0.0; \ sum3 = 0.0; \ for( j = 0; j < ref->Ysize; j++ ) { \ for( i = 0; i < sz; i += bands ) { \ /* Reference pel and input pel. \ */ \ IN ip = p1a[i]; \ IN rp = r1a[i]; \ \ /* Accumulate sum-of-squares-of-differences for \ * input image. \ */ \ double t = ip - imean; \ sum2 += t * t; \ \ /* Accumulate product-of-difference from mean. \ */ \ sum3 += (rp - spcor->rmean[b]) * t; \ } \ \ p1a += in_lsk; \ r1a += sz; \ } \ } static void vips_spcor_correlation( VipsCorrelation *correlation, VipsRegion *in, VipsRegion *out ) { VipsSpcor *spcor = (VipsSpcor *) correlation; VipsRect *r = &out->valid; VipsImage *ref = correlation->ref_ready; int bands = vips_band_format_iscomplex( ref->BandFmt ) ? ref->Bands * 2 : ref->Bands; int sz = ref->Xsize * bands; int lsk = VIPS_REGION_LSKIP( in ); int x, y, b, j, i; double imean; double sum1; double sum2, sum3; double c2, cc; for( y = 0; y < r->height; y++ ) { float *q = (float *) VIPS_REGION_ADDR( out, r->left, r->top + y ); for( x = 0; x < r->width; x++ ) { VipsPel *p = VIPS_REGION_ADDR( in, r->left + x, r->top + y ); for( b = 0; b < bands; b++ ) { switch( vips_image_get_format( ref ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOP( signed char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOP( signed short ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOP( float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOP( double ); break; default: g_assert_not_reached(); /* Stop compiler warnings. */ sum2 = 0; sum3 = 0; } c2 = spcor->c1[b] * sqrt( sum2 ); if( c2 == 0.0 ) /* Something like constant ref. * We regard this as uncorrelated. */ cc = 0.0; else cc = sum3 / c2; *q++ = cc; } } } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int vips_spcor_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, F, F, F }; static void vips_spcor_class_init( VipsSpcorClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsCorrelationClass *cclass = VIPS_CORRELATION_CLASS( class ); object_class->nickname = "spcor"; object_class->description = _( "spatial correlation" ); cclass->format_table = vips_spcor_format_table; cclass->pre_generate = vips_spcor_pre_generate; cclass->correlation = vips_spcor_correlation; } static void vips_spcor_init( VipsSpcor *spcor ) { } /** * vips_spcor: (method) * @in: input image * @ref: reference image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Calculate a correlation surface. * * @ref is placed at every position in @in and the correlation coefficient * calculated. The output * image is always float. * * The output * image is the same size as the input. Extra input edge pixels are made by * copying the existing edges outwards. * * The correlation coefficient is calculated as: * * |[ * sumij (ref(i,j)-mean(ref))(inkl(i,j)-mean(inkl)) * c(k,l) = ------------------------------------------------ * sqrt(sumij (ref(i,j)-mean(ref))^2) * * sqrt(sumij (inkl(i,j)-mean(inkl))^2) * ]| * * where inkl is the area of @in centred at position (k,l). * * from Niblack "An Introduction to Digital Image Processing", * Prentice/Hall, pp 138. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The output image is always float, unless either of the two inputs is * double, in which case the output is also double. * * See also: vips_fastcor(). * * Returns: 0 on success, -1 on error */ int vips_spcor( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "spcor", ap, in, ref, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/000077500000000000000000000000001361153320700161155ustar00rootroot00000000000000libvips-8.9.1/libvips/create/Makefile.am000066400000000000000000000011671361153320700201560ustar00rootroot00000000000000noinst_LTLIBRARIES = libcreate.la libcreate_la_SOURCES = \ perlin.c \ worley.c \ create.c \ pcreate.h \ gaussmat.c \ logmat.c \ buildlut.c \ invertlut.c \ tonelut.c \ identity.c \ point.c \ point.h \ mask.c \ pmask.h \ mask_ideal.c \ mask_ideal_ring.c \ mask_ideal_band.c \ mask_butterworth.c \ mask_butterworth_ring.c \ mask_butterworth_band.c \ mask_gaussian.c \ mask_gaussian_ring.c \ mask_gaussian_band.c \ mask_fractal.c \ fractsurf.c \ eye.c \ grey.c \ xyz.c \ black.c \ text.c \ gaussnoise.c \ sines.c \ zone.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ libvips-8.9.1/libvips/create/black.c000066400000000000000000000102341361153320700173350ustar00rootroot00000000000000/* black.c * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/08/1990 * Modified on : 16/04/1991 by N. Dessipris to work on a line by line basis * 15/8/94 JC * - adapted for partials * - ANSIfied * - memory leaks fixed! * 2/3/98 JC * - IM_ANY added * 18/1/09 * - gtkdoc * 31/10/11 * - redo as a class * 3/4/18 * - always write MULTIBAND, otherwise when we join up these things it'll * look like we have an alpha */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pcreate.h" typedef struct _VipsBlack { VipsCreate parent_instance; int width; int height; int bands; } VipsBlack; typedef VipsCreateClass VipsBlackClass; G_DEFINE_TYPE( VipsBlack, vips_black, VIPS_TYPE_CREATE ); static int vips_black_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { vips_region_black( or ); return( 0 ); } static int vips_black_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsBlack *black = (VipsBlack *) object; if( VIPS_OBJECT_CLASS( vips_black_parent_class )->build( object ) ) return( -1 ); vips_image_init_fields( create->out, black->width, black->height, black->bands, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_MULTIBAND, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( create->out, NULL, vips_black_gen, NULL, NULL, NULL ) ) return( -1 ); return( 0 ); } static void vips_black_class_init( VipsBlackClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_black_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "black"; vobject_class->description = _( "make a black image" ); vobject_class->build = vips_black_build; VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBlack, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBlack, height ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "bands", 6, _( "Bands" ), _( "Number of bands in image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlack, bands ), 1, VIPS_MAX_COORD, 1 ); } static void vips_black_init( VipsBlack *black ) { black->bands = 1; } /** * vips_black: * @out: (out): output image * @width: output width * @height: output height * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @bands: output bands * * Make a black unsigned char image of a specified size. * * See also: vips_xyz(), vips_text(), vips_gaussnoise(). * * Returns: 0 on success, -1 on error */ int vips_black( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "black", ap, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/buildlut.c000066400000000000000000000203711361153320700201100ustar00rootroot00000000000000/* Build a LUT from a set of x/y points. * * Written on: 26/9/06 * - from im_invertlut() * 9/10/06 * - don't output x values * 18/3/09 * - saner limit and rounding behaviour * 30/3/09 * - argh, fixed again * 22/6/09 * - more fixes for tables that don't start at zero (thanks Jack) * 23/3/10 * - gtkdoc * 2/7/13 * - convert to a class * 10/12/13 * - be more forgiving about x vales not quite integers */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcreate.h" typedef struct _VipsBuildlut { VipsCreate parent_instance; /* Input image. */ VipsImage *in; /* .. and cast to a matrix. */ VipsImage *mat; int xlow; /* Index 0 in output is this x */ int lut_size; /* Number of output elements to generate */ double **data; /* Matrix row pointers */ double *buf; /* Output buffer */ } VipsBuildlut; typedef VipsCreateClass VipsBuildlutClass; G_DEFINE_TYPE( VipsBuildlut, vips_buildlut, VIPS_TYPE_CREATE ); static void vips_buildlut_dispose( GObject *gobject ) { VipsBuildlut *lut = (VipsBuildlut *) gobject; VIPS_FREE( lut->data ); VIPS_FREE( lut->buf ); VIPS_UNREF( lut->mat ); G_OBJECT_CLASS( vips_buildlut_parent_class )->dispose( gobject ); } /* Use this to sort our input rows by the first column. */ static int vips_buildlut_compare( const void *a, const void *b ) { double **r1 = (double **) a; double **r2 = (double **) b; double diff = r1[0][0] - r2[0][0]; if( diff > 0 ) return( 1 ); else if( diff == 0 ) return( 0 ); else return( -1 ); } static int vips_buildlut_build_init( VipsBuildlut *lut ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( lut ); int y; int xlow, xhigh; /* Need xlow and xhigh to get the size of the LUT we build. */ xlow = xhigh = *VIPS_MATRIX( lut->mat, 0, 0 ); for( y = 0; y < lut->mat->Ysize; y++ ) { double v = *VIPS_MATRIX( lut->mat, 0, y ); /* Allow for being a bit off. */ if( VIPS_FABS( v - VIPS_RINT( v ) ) > 0.001 ) { vips_error( class->nickname, _( "x value row %d not an int" ), y ); return( -1 ); } v = VIPS_RINT( v ); if( v < xlow ) xlow = v; if( v > xhigh ) xhigh = v; } lut->xlow = xlow; lut->lut_size = xhigh - xlow + 1; if( lut->lut_size < 1 ) { vips_error( class->nickname, "%s", _( "x range too small" ) ); return( -1 ); } if( !(lut->data = VIPS_ARRAY( NULL, lut->mat->Ysize, double * )) ) return( -1 ); for( y = 0; y < lut->mat->Ysize; y++ ) lut->data[y] = VIPS_MATRIX( lut->mat, 0, y ); if( !(lut->buf = VIPS_ARRAY( NULL, lut->lut_size * (lut->mat->Xsize - 1), double )) ) return( -1 ); /* Sort by 1st column in input. */ qsort( lut->data, lut->mat->Ysize, sizeof( double * ), vips_buildlut_compare ); #ifdef DEBUG printf( "Input table, sorted by 1st column\n" ); for( y = 0; y < lut->mat->Ysize; y++ ) { int x; printf( "%.4d ", y ); for( x = 0; x < lut->mat->Xsize; x++ ) printf( "%.9f ", lut->data[y][x] ); printf( "\n" ); } #endif /*DEBUG*/ return( 0 ); } static int vips_buildlut_build_create( VipsBuildlut *lut ) { const int xlow = lut->xlow; const VipsImage *mat = lut->mat; const int xsize = mat->Xsize; const int ysize = mat->Ysize; const int bands = xsize - 1; const int xlast = lut->data[ysize - 1][0]; int b, i, x; /* Do each output channel separately. */ for( b = 0; b < bands; b++ ) { for( i = 0; i < ysize - 1; i++ ) { const int x1 = VIPS_RINT( lut->data[i][0] ); const int x2 = VIPS_RINT( lut->data[i + 1][0] ); const int dx = x2 - x1; const double y1 = lut->data[i][b + 1]; const double y2 = lut->data[i + 1][b + 1]; const double dy = y2 - y1; for( x = 0; x < dx; x++ ) lut->buf[b + (x + x1 - xlow) * bands] = y1 + x * dy / dx; } /* We are inclusive: pop the final value in by hand. */ lut->buf[b + (xlast - xlow) * bands] = lut->data[ysize - 1][b + 1]; } return( 0 ); } static int vips_buildlut_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsBuildlut *lut = (VipsBuildlut *) object; if( VIPS_OBJECT_CLASS( vips_buildlut_parent_class )->build( object ) ) return( -1 ); if( vips_check_matrix( class->nickname, lut->in, &lut->mat ) ) return( -1 ); if( vips_buildlut_build_init( lut ) || vips_buildlut_build_create( lut ) ) return( -1 ); vips_image_init_fields( create->out, lut->lut_size, 1, lut->mat->Xsize - 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); if( vips_image_write_line( create->out, 0, (VipsPel *) lut->buf ) ) return( -1 ); return( 0 ); } static void vips_buildlut_class_init( VipsBuildlutClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->dispose = vips_buildlut_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "buildlut"; vobject_class->description = _( "build a look-up table" ); vobject_class->build = vips_buildlut_build; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Matrix of XY coordinates" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBuildlut, in ) ); } static void vips_buildlut_init( VipsBuildlut *lut ) { } /** * vips_buildlut: (method) * @in: input matrix * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * This operation builds a lookup table from a set of points. Intermediate * values are generated by piecewise linear interpolation. The lookup table is * always of type #VIPS_FORMAT_DOUBLE, use vips_cast() to change it to the * type you need. * * For example, consider this 2 x 2 matrix of (x, y) coordinates: * * * * * 0 * 0 * * * 255 * 100 * * * * * We then generate: * * * * * Index * Value * * * * * 0 * 0 * * * 1 * 0.4 * * * ... * etc. by linear interpolation * * * 255 * 100 * * * * * This is then written as the output image, with the left column giving the * index in the image to place the value. * * The (x, y) points don't need to be sorted: we do that. You can have * several Ys, each becomes a band in the output LUT. You don't need to * start at zero, any integer will do, including negatives. * * See also: vips_identity(), vips_invertlut(), vips_cast(), vips_maplut(). * * Returns: 0 on success, -1 on error */ int vips_buildlut( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "buildlut", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/create.c000066400000000000000000000115641361153320700175330ustar00rootroot00000000000000/* base class for all create operations * * properties: * - single output image we build */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" /** * SECTION: create * @short_description: create images in various ways * @stability: Stable * @include: vips/vips.h * * These functions generate various test images. You can combine them with * the arithmetic and rotate functions to build more complicated images. * * The im_benchmark() operations are for testing the VIPS SMP system. */ G_DEFINE_ABSTRACT_TYPE( VipsCreate, vips_create, VIPS_TYPE_OPERATION ); static int vips_create_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); #ifdef DEBUG printf( "vips_create_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_object_set( create, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_create_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_create_class_init( VipsCreateClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "create"; vobject_class->description = _( "create operations" ); vobject_class->build = vips_create_build; VIPS_ARG_IMAGE( class, "out", 1, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsCreate, out ) ); } static void vips_create_init( VipsCreate *create ) { } void vips_create_operation_init( void ) { extern GType vips_black_get_type( void ); extern GType vips_gaussmat_get_type( void ); extern GType vips_logmat_get_type( void ); extern GType vips_gaussnoise_get_type( void ); #ifdef HAVE_PANGOFT2 extern GType vips_text_get_type( void ); #endif /*HAVE_PANGOFT2*/ extern GType vips_xyz_get_type( void ); extern GType vips_eye_get_type( void ); extern GType vips_grey_get_type( void ); extern GType vips_zone_get_type( void ); extern GType vips_sines_get_type( void ); extern GType vips_buildlut_get_type( void ); extern GType vips_invertlut_get_type( void ); extern GType vips_tonelut_get_type( void ); extern GType vips_identity_get_type( void ); extern GType vips_mask_butterworth_get_type( void ); extern GType vips_mask_butterworth_ring_get_type( void ); extern GType vips_mask_butterworth_band_get_type( void ); extern GType vips_mask_gaussian_get_type( void ); extern GType vips_mask_gaussian_ring_get_type( void ); extern GType vips_mask_gaussian_band_get_type( void ); extern GType vips_mask_ideal_get_type( void ); extern GType vips_mask_ideal_ring_get_type( void ); extern GType vips_mask_ideal_band_get_type( void ); extern GType vips_mask_fractal_get_type( void ); extern GType vips_fractsurf_get_type( void ); extern GType vips_worley_get_type( void ); extern GType vips_perlin_get_type( void ); vips_black_get_type(); vips_gaussmat_get_type(); vips_logmat_get_type(); vips_gaussnoise_get_type(); #ifdef HAVE_PANGOFT2 vips_text_get_type(); #endif /*HAVE_PANGOFT2*/ vips_xyz_get_type(); vips_eye_get_type(); vips_grey_get_type(); vips_zone_get_type(); vips_sines_get_type(); vips_buildlut_get_type(); vips_invertlut_get_type(); vips_tonelut_get_type(); vips_identity_get_type(); vips_mask_ideal_get_type(); vips_mask_ideal_ring_get_type(); vips_mask_ideal_band_get_type(); vips_mask_butterworth_get_type(); vips_mask_butterworth_ring_get_type(); vips_mask_butterworth_band_get_type(); vips_mask_gaussian_get_type(); vips_mask_gaussian_ring_get_type(); vips_mask_gaussian_band_get_type(); vips_mask_fractal_get_type(); vips_fractsurf_get_type(); vips_worley_get_type(); vips_perlin_get_type(); } libvips-8.9.1/libvips/create/eye.c000066400000000000000000000066571361153320700170610ustar00rootroot00000000000000/* make a test pattern to show the eye's frequency response * * Copyright: 1990, 1991, N.Dessipris. * * Author N. Dessipris * Written on 30/05/1990 * Updated on: 27/01/1991, 07/03/1991, * 22/7/93 JC * - im_outcheck() added * 30/8/95 JC * - modernized * 1/2/11 * - gtk-doc * 13/6/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" typedef struct _VipsEye { VipsPoint parent_instance; double factor; } VipsEye; typedef VipsPointClass VipsEyeClass; G_DEFINE_TYPE( VipsEye, vips_eye, VIPS_TYPE_POINT ); static float vips_eye_point( VipsPoint *point, int x, int y ) { VipsEye *eye = (VipsEye *) point; /* VIPS_MAX to prevent /0. */ int max_x = VIPS_MAX( point->width - 1, 1 ); int max_y = VIPS_MAX( point->height - 1, 1 ); double c = eye->factor * VIPS_PI / (2 * max_x); double h = max_y * max_y; return( y * y * cos( c * x * x ) / h ); } static void vips_eye_class_init( VipsEyeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsPointClass *point_class = VIPS_POINT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "eye"; vobject_class->description = _( "make an image showing the eye's spatial response" ); point_class->point = vips_eye_point; VIPS_ARG_DOUBLE( class, "factor", 6, _( "Factor" ), _( "Maximum spatial frequency" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsEye, factor ), 0.0, 1.0, 0.5 ); } static void vips_eye_init( VipsEye *eye ) { eye->factor = 0.5; } /** * vips_eye: * @out: (out): output image * @width: image size * @height: image size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @factor: maximum spatial frequency * * @uchar: output a uchar image * * Create a test pattern with increasing spatial frequence in X and * amplitude in Y. @factor should be between 0 and 1 and determines the * maximum spatial frequency. * * Set @uchar to output a uchar image. * * See also: vips_zone(). * * Returns: 0 on success, -1 on error */ int vips_eye( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "eye", ap, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/fractsurf.c000066400000000000000000000077321361153320700202710ustar00rootroot00000000000000/* fractal surface * * Author: N. Dessipris * Written on: 10/09/1991 * Modified on: * 20/9/95 JC * - modernised, a little * 7/2/10 * - cleanups * - gtkdoc * 4/1/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcreate.h" typedef struct _VipsFractsurf { VipsCreate parent_instance; int width; int height; double fractal_dimension; } VipsFractsurf; typedef VipsCreateClass VipsFractsurfClass; G_DEFINE_TYPE( VipsFractsurf, vips_fractsurf, VIPS_TYPE_CREATE ); static int vips_fractsurf_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsFractsurf *fractsurf = (VipsFractsurf *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); if( VIPS_OBJECT_CLASS( vips_fractsurf_parent_class )->build( object ) ) return( -1 ); if( vips_gaussnoise( &t[0], fractsurf->width, fractsurf->height, 0.0, 1.0, NULL ) || vips_mask_fractal( &t[1], fractsurf->width, fractsurf->height, fractsurf->fractal_dimension, NULL ) || vips_freqmult( t[0], t[1], &t[2], NULL ) || vips_image_write( t[2], create->out ) ) return( -1 ); return( 0 ); } static void vips_fractsurf_class_init( VipsFractsurfClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "fractsurf"; vobject_class->description = _( "make a fractal surface" ); vobject_class->build = vips_fractsurf_build; VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFractsurf, width ), 1, VIPS_MAX_COORD, 64 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFractsurf, height ), 1, VIPS_MAX_COORD, 64 ); VIPS_ARG_DOUBLE( class, "fractal_dimension", 8, _( "Fractal dimension" ), _( "Fractal dimension" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFractsurf, fractal_dimension ), 2.0, 3.0, 2.5 ); } static void vips_fractsurf_init( VipsFractsurf *fractsurf ) { fractsurf->width = 64; fractsurf->height = 64; fractsurf->fractal_dimension = 2.5; } /** * vips_fractsurf: * @out: (out): output image * @width: output width * @height: output height * @fractal_dimension: fractal dimension * @...: %NULL-terminated list of optional named arguments * * Generate an image of size @width by @height and fractal dimension * @fractal_dimension. The dimension should be between 2 and 3. * * See also: vips_gaussnoise(), vips_mask_fractal(). * * Returns: 0 on success, -1 on error */ int vips_fractsurf( VipsImage **out, int width, int height, double fractal_dimension, ... ) { va_list ap; int result; va_start( ap, fractal_dimension ); result = vips_call_split( "fractsurf", ap, out, width, height, fractal_dimension ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/gaussmat.c000066400000000000000000000161401361153320700201070ustar00rootroot00000000000000/* generate gaussian images * * Written on: 30/11/1989 by Nicos * Updated on: 6/12/1991 * 7/8/96 JC * - ansified, mem leaks plugged * 20/11/98 JC * - mask too large check added * 18/3/09 * - bumped max mask size *40 * - added _sep variant * 30/3/09 * - set scale in _sep variant, why not * 21/10/10 * - gtkdoc * 20/10/13 * - redone as a class * 16/12/14 * - default to int output to match vips_conv() * - use @precision, not @integer * 10/3/16 * - allow 1x1 masks * - better size calc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" typedef struct _VipsGaussmat { VipsCreate parent_instance; double sigma; double min_ampl; gboolean separable; gboolean integer; /* Deprecated */ VipsPrecision precision; } VipsGaussmat; typedef struct _VipsGaussmatClass { VipsCreateClass parent_class; } VipsGaussmatClass; G_DEFINE_TYPE( VipsGaussmat, vips_gaussmat, VIPS_TYPE_CREATE ); /* Don't allow mask radius to go over this. */ #define MASK_SANITY (5000) static int vips_gaussmat_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsGaussmat *gaussmat = (VipsGaussmat *) object; double sig2 = 2. * gaussmat->sigma * gaussmat->sigma; int max_x = VIPS_CLIP( 0, 8 * gaussmat->sigma, MASK_SANITY ); int x, y; int width, height; double sum; if( VIPS_OBJECT_CLASS( vips_gaussmat_parent_class )->build( object ) ) return( -1 ); /* The old, deprecated @integer property has been deliberately set to * FALSE and they've not used the new @precision property ... switch * to float to help them out. */ if( vips_object_argument_isset( object, "integer" ) && !vips_object_argument_isset( object, "precision" ) && !gaussmat->integer ) gaussmat->precision = VIPS_PRECISION_FLOAT; /* Find the size of the mask. Limit the mask size to 10k x 10k for * sanity. We allow x == 0, meaning a 1x1 mask. */ for( x = 0; x < max_x; x++ ) { double v = exp( - ((double)(x * x)) / sig2 ); if( v < gaussmat->min_ampl ) break; } if( x >= MASK_SANITY ) { vips_error( class->nickname, "%s", _( "mask too large" ) ); return( -1 ); } width = 2 * x - 1; height = gaussmat->separable ? 1 : width; vips_image_init_fields( create->out, width, height, 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_MULTIBAND, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_write_prepare( create->out ) ) return( -1 ); sum = 0.0; for( y = 0; y < height; y++ ) { for( x = 0; x < width; x++ ) { int xo = x - width / 2; int yo = y - height / 2; double distance = xo * xo + yo * yo; double v = exp( -distance / sig2 ); if( gaussmat->precision != VIPS_PRECISION_FLOAT ) v = VIPS_RINT( 20 * v ); *VIPS_MATRIX( create->out, x, y ) = v; sum += v; } } /* Make sure we can't make sum == 0: it'd certainly cause /0 later. */ if( sum == 0 ) sum = 1; vips_image_set_double( create->out, "scale", sum ); vips_image_set_double( create->out, "offset", 0.0 ); return( 0 ); } static void vips_gaussmat_class_init( VipsGaussmatClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "gaussmat"; vobject_class->description = _( "make a gaussian image" ); vobject_class->build = vips_gaussmat_build; VIPS_ARG_DOUBLE( class, "sigma", 2, _( "Sigma" ), _( "Sigma of Gaussian" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussmat, sigma ), 0.000001, 10000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "min_ampl", 3, _( "Minimum amplitude" ), _( "Minimum amplitude of Gaussian" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussmat, min_ampl ), 0.000001, 10000.0, 0.1 ); VIPS_ARG_BOOL( class, "separable", 4, _( "Separable" ), _( "Generate separable Gaussian" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussmat, separable ), FALSE ); VIPS_ARG_BOOL( class, "integer", 5, _( "Integer" ), _( "Generate integer Gaussian" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsGaussmat, integer ), FALSE ); VIPS_ARG_ENUM( class, "precision", 6, _( "Precision" ), _( "Generate with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussmat, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_INTEGER ); } static void vips_gaussmat_init( VipsGaussmat *gaussmat ) { gaussmat->sigma = 1; gaussmat->min_ampl = 0.1; gaussmat->precision = VIPS_PRECISION_INTEGER; } /** * vips_gaussmat: * @out: (out): output image * @sigma: standard deviation of mask * @min_ampl: minimum amplitude * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @separable: generate a separable gaussian * * @precision: #VipsPrecision for @out * * Creates a circularly symmetric Gaussian image of radius * @sigma. The size of the mask is determined by the variable @min_ampl; * if for instance the value .1 is entered this means that the produced mask * is clipped at values less than 10 percent of the maximum amplitude. * * The program uses the following equation: * * H(r) = exp( -(r * r) / (2 * @sigma * @sigma) ) * * The generated image has odd size and its maximum value is normalised to * 1.0, unless @precision is #VIPS_PRECISION_INTEGER. * * If @separable is set, only the centre horizontal is generated. This is * useful for separable convolutions. * * If @precision is #VIPS_PRECISION_INTEGER, an integer gaussian is generated. * This is useful for integer convolutions. * * "scale" is set to the sum of all the mask elements. * * See also: vips_logmat(), vips_conv(). * * Returns: 0 on success, -1 on error */ int vips_gaussmat( VipsImage **out, double sigma, double min_ampl, ... ) { va_list ap; int result; va_start( ap, min_ampl ); result = vips_call_split( "gaussmat", ap, out, sigma, min_ampl ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/gaussnoise.c000066400000000000000000000134311361153320700204430ustar00rootroot00000000000000/* im_gaussnoise * * Copyright 1990, N. Dessipris. * * File written on 2/12/1986 * Author : N. Dessipris * Updated : 6/6/1991 * 21/7/93 JC * - im_outcheck() call added * 1/2/95 JC * - declaration for drand48() added * - partialised, adapting im_gaussnoise() * 23/10/98 JC * - drand48() chaged to random() for portability * 21/10/02 JC * - tries rand() if random() is not available * - uses RAND_MAX, d'oh * 29/1/10 * - cleanups * - gtkdoc * 29/5/13 * - redo as a class * 8/11/14 * - use g_random_double() * 24/1/17 * - use g_random_double() once per image, use vips__random() for pixel * values from (x, y) position ... makes pixels reproducible on * recalculation */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcreate.h" typedef struct _VipsGaussnoise { VipsCreate parent_instance; int width; int height; double mean; double sigma; /* Per-image seed. */ guint32 seed; } VipsGaussnoise; typedef VipsCreateClass VipsGaussnoiseClass; G_DEFINE_TYPE( VipsGaussnoise, vips_gaussnoise, VIPS_TYPE_CREATE ); static int vips_gaussnoise_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsGaussnoise *gaussnoise = (VipsGaussnoise *) a; int sz = VIPS_REGION_N_ELEMENTS( or ); int y; for( y = 0; y < or->valid.height; y++ ) { float *q = (float *) VIPS_REGION_ADDR( or, or->valid.left, y + or->valid.top ); int x; for( x = 0; x < sz; x++ ) { guint32 seed; double sum; int i; seed = gaussnoise->seed; seed = vips__random_add( seed, or->valid.left + x ); seed = vips__random_add( seed, or->valid.top + y ); sum = 0.0; for( i = 0; i < 12; i++ ) { seed = vips__random( seed ); sum += (double) seed / UINT_MAX; } q[x] = (sum - 6.0) * gaussnoise->sigma + gaussnoise->mean; } } return( 0 ); } static int vips_gaussnoise_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsGaussnoise *gaussnoise = (VipsGaussnoise *) object; if( VIPS_OBJECT_CLASS( vips_gaussnoise_parent_class )->build( object ) ) return( -1 ); vips_image_init_fields( create->out, gaussnoise->width, gaussnoise->height, 1, VIPS_FORMAT_FLOAT, VIPS_CODING_NONE, VIPS_INTERPRETATION_MULTIBAND, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); /* The seed for this image. Each pixel is seeded by this plus the (x, * y) coordinate. */ gaussnoise->seed = UINT_MAX * g_random_double(); if( vips_image_generate( create->out, NULL, vips_gaussnoise_gen, NULL, gaussnoise, NULL ) ) return( -1 ); return( 0 ); } static void vips_gaussnoise_class_init( VipsGaussnoiseClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = (VipsOperationClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "gaussnoise"; vobject_class->description = _( "make a gaussnoise image" ); vobject_class->build = vips_gaussnoise_build; /* We want a new set of numbers each time. */ operation_class->flags |= VIPS_OPERATION_NOCACHE; VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussnoise, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussnoise, height ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_DOUBLE( class, "mean", 6, _( "Mean" ), _( "Mean of pixels in generated image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussnoise, mean ), -10000000, 1000000, 128 ); VIPS_ARG_DOUBLE( class, "sigma", 6, _( "Sigma" ), _( "Standard deviation of pixels in generated image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussnoise, sigma ), 0, 100000, 30 ); } static void vips_gaussnoise_init( VipsGaussnoise *gaussnoise ) { gaussnoise->mean = 128.0; gaussnoise->sigma = 30.0; } /** * vips_gaussnoise: * @out: (out): output image * @width: output width * @height: output height * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @mean: mean of generated pixels * * @sigma: standard deviation of generated pixels * * Make a one band float image of gaussian noise with the specified * distribution. The noise distribution is created by averaging 12 random * numbers with the appropriate weights. * * See also: vips_black(), vips_xyz(), vips_text(). * * Returns: 0 on success, -1 on error */ int vips_gaussnoise( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "gaussnoise", ap, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/grey.c000066400000000000000000000056361361153320700172410ustar00rootroot00000000000000/* grey ramps * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/02/1990 * Modified on: * 22/7/93 JC * - im_outcheck() added * - externs removed * 8/2/95 JC * - ANSIfied * - im_fgrey() made from im_grey() * 31/8/95 JC * - now makes [0,1], rather than [0,256) * - im_grey() now defined in terms of im_fgrey() * 2/3/98 JC * - partialed * 1/2/11 * - gtk-doc * 13/6/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" typedef VipsPoint VipsGrey; typedef VipsPointClass VipsGreyClass; G_DEFINE_TYPE( VipsGrey, vips_grey, VIPS_TYPE_POINT ); static float vips_grey_point( VipsPoint *point, int x, int y ) { return( (double) x / (point->width - 1) ); } static void vips_grey_class_init( VipsGreyClass *class ) { VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsPointClass *point_class = VIPS_POINT_CLASS( class ); vobject_class->nickname = "grey"; vobject_class->description = _( "make a grey ramp image" ); point_class->point = vips_grey_point; point_class->min = 0.0; point_class->max = 1.0; } static void vips_grey_init( VipsGrey *grey ) { } /** * vips_grey: * @out: (out): output image * @width: image size * @height: image size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @uchar: output a uchar image * * Create a one-band float image with the left-most column zero and the * right-most 1. Intermediate pixels are a linear ramp. * * Set @uchar to output a uchar image with the leftmost pixel 0 and the * rightmost 255. * * See also: vips_xyz(), vips_identity(). * * Returns: 0 on success, -1 on error */ int vips_grey( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "grey", ap, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/identity.c000066400000000000000000000115231361153320700201140ustar00rootroot00000000000000/* identity LUTs * * Copyright 1991, N. Dessipris. * * Author N. Dessipris * Written on 11/03/1991 * Updated on: * 18/6/93 JC * - im_outcheck() call added * - ANSIfied * 24/8/94 JC * - im_identity_ushort() added * 24/3/10 * - gtkdoc * 3/7/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcreate.h" typedef struct _VipsIdentity { VipsCreate parent_instance; int bands; gboolean ushort; int size; } VipsIdentity; typedef VipsCreateClass VipsIdentityClass; G_DEFINE_TYPE( VipsIdentity, vips_identity, VIPS_TYPE_CREATE ); #define IDENTITY( TYPE ) { \ TYPE *q = (TYPE *) VIPS_REGION_ADDR( or, le, 0 ); \ \ for( x = le; x < ri; x++ ) { \ for( i = 0; i < identity->bands; i++ ) \ q[i] = x; \ \ q += identity->bands; \ } \ } static int vips_identity_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsIdentity *identity = (VipsIdentity *) a; VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT( r ); int x, i; if( identity->ushort ) { IDENTITY( unsigned short ); } else { IDENTITY( unsigned char ); } return( 0 ); } static int vips_identity_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsIdentity *identity = (VipsIdentity *) object; if( VIPS_OBJECT_CLASS( vips_identity_parent_class )->build( object ) ) return( -1 ); vips_image_init_fields( create->out, identity->ushort ? identity->size : 256, 1, identity->bands, identity->ushort ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( create->out, NULL, vips_identity_gen, NULL, identity, NULL ) ) return( -1 ); return( 0 ); } static void vips_identity_class_init( VipsIdentityClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "identity"; vobject_class->description = _( "make a 1D image where pixel values are indexes" ); vobject_class->build = vips_identity_build; VIPS_ARG_INT( class, "bands", 3, _( "Bands" ), _( "Number of bands in LUT" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIdentity, bands ), 1, 100000, 1 ); VIPS_ARG_BOOL( class, "ushort", 4, _( "Ushort" ), _( "Create a 16-bit LUT" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIdentity, ushort ), FALSE ); VIPS_ARG_INT( class, "size", 5, _( "Size" ), _( "Size of 16-bit LUT" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIdentity, size ), 1, 65536, 65536 ); } static void vips_identity_init( VipsIdentity *identity ) { identity->bands = 1; identity->ushort = FALSE; identity->size = 65536; } /** * vips_identity: * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @bands: number of bands to create * * @ushort: %TRUE for an unsigned short identity * * @size: number of LUT elements for a ushort image * * Creates an identity lookup table, ie. one which will leave an image * unchanged when applied with vips_maplut(). Each entry in the table has a * value equal to its position. * * Use the arithmetic operations on these tables to make LUTs representing * arbitrary functions. * * Normally LUTs are 8-bit. Set @ushort to create a 16-bit table. * * Normally 16-bit tables have 65536 entries. You can set this smaller with * @size. * * See also: vips_xyz(), vips_maplut(). * * Returns: 0 on success, -1 on error */ int vips_identity( VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "identity", ap, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/invertlut.c000066400000000000000000000213731361153320700203230ustar00rootroot00000000000000/* invert a lut * * Written on: 5/6/01 * Modified on : * * 7/7/03 JC * - generate image rather than doublemask (arrg) * 23/3/10 * - gtkdoc * 23/5/13 * - fix 1 high input matrices * - fix file output * 4/9/13 * - convert to a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcreate.h" /* #define DEBUG */ /* Our state. */ typedef struct _VipsInvertlut { VipsCreate parent_instance; /* Input image. */ VipsImage *in; /* .. and cast to a matrix. */ VipsImage *mat; int size; /* Number of output elements to generate */ double **data; /* Rows of unpacked matrix */ double *buf; /* Output buffer */ } VipsInvertlut; typedef VipsCreateClass VipsInvertlutClass; G_DEFINE_TYPE( VipsInvertlut, vips_invertlut, VIPS_TYPE_CREATE ); static void vips_invertlut_dispose( GObject *gobject ) { VipsInvertlut *lut = (VipsInvertlut *) gobject; VIPS_FREE( lut->data ); VIPS_FREE( lut->buf ); VIPS_UNREF( lut->mat ); G_OBJECT_CLASS( vips_invertlut_parent_class )->dispose( gobject ); } /* Use this to sort our input rows by the first column. */ static int compare( const void *a, const void *b ) { double **r1 = (double **) a; double **r2 = (double **) b; double diff = r1[0][0] - r2[0][0]; if( diff > 0 ) return( 1 ); else if( diff == 0 ) return( 0 ); else return( -1 ); } static int vips_invertlut_build_init( VipsInvertlut *lut ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( lut ); int x, y; if( !lut->mat || lut->mat->Xsize < 2 || lut->mat->Ysize < 1 ) { vips_error( class->nickname, "%s", _( "bad input matrix" ) ); return( -1 ); } if( lut->size < 1 || lut->size > 65536 ) { vips_error( class->nickname, "%s", _( "bad size" ) ); return( -1 ); } if( !(lut->buf = VIPS_ARRAY( NULL, lut->size * (lut->mat->Xsize - 1), double )) ) return( -1 ); if( !(lut->data = VIPS_ARRAY( NULL, lut->mat->Ysize, double * )) ) return( -1 ); for( y = 0; y < lut->mat->Ysize; y++ ) lut->data[y] = VIPS_MATRIX( lut->mat, 0, y ); /* Sanity check for data range. */ for( y = 0; y < lut->mat->Ysize; y++ ) for( x = 0; x < lut->mat->Xsize; x++ ) if( lut->data[y][x] > 1.0 || lut->data[y][x] < 0.0 ) { vips_error( class->nickname, _( "element (%d, %d) is %g, " "outside range [0,1]" ), x, y, lut->data[y][x] ); return( -1 ); } /* Sort by 1st column in input. */ qsort( lut->data, lut->mat->Ysize, sizeof( double * ), compare ); #ifdef DEBUG printf( "Input table, sorted by 1st column\n" ); for( y = 0; y < lut->mat->Ysize; y++ ) { printf( "%.4d ", y ); for( x = 0; x < lut->mat->Xsize; x++ ) printf( "%.9f ", lut->data[y][x] ); printf( "\n" ); } #endif /*DEBUG*/ return( 0 ); } static int vips_invertlut_build_create( VipsInvertlut *lut ) { int bands = lut->mat->Xsize - 1; int height = lut->mat->Ysize; int b; /* Do each output channel separately. */ for( b = 0; b < bands; b++ ) { /* The first and last lut positions we know real values for. */ int first = lut->data[0][b + 1] * (lut->size - 1); int last = lut->data[height - 1][b + 1] * (lut->size - 1); int k; /* Extrapolate bottom and top segments to (0,0) and (1,1). */ for( k = 0; k < first; k++ ) { /* Have this inside the loop to avoid /0 errors if * first == 0. */ double fac = lut->data[0][0] / first; lut->buf[b + k * bands] = k * fac; } for( k = last; k < lut->size; k++ ) { /* Inside the loop to avoid /0 errors for last == * (size - 1). */ double fac = (1 - lut->data[height - 1][0]) / ((lut->size - 1) - last); lut->buf[b + k * bands] = lut->data[height - 1][0] + (k - last) * fac; } /* Interpolate the data sections. */ for( k = first; k < last; k++ ) { /* Where we're at in the [0,1] range. */ double ki = (double) k / (lut->size - 1); double irange, orange; int j; /* Search for the lowest real value < ki. There may * not be one: if not, just use 0. Tiny error. */ for( j = height - 1; j >= 0; j-- ) if( lut->data[j][b + 1] < ki ) break; if( j == -1 ) j = 0; /* Interpolate k as being between row data[j] and row * data[j + 1]. */ irange = lut->data[j + 1][b + 1] - lut->data[j][b + 1]; orange = lut->data[j + 1][0] - lut->data[j][0]; lut->buf[b + k * bands] = lut->data[j][0] + orange * ((ki - lut->data[j][b + 1]) / irange); } } return( 0 ); } static int vips_invertlut_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsInvertlut *lut = (VipsInvertlut *) object; if( VIPS_OBJECT_CLASS( vips_invertlut_parent_class )->build( object ) ) return( -1 ); if( vips_check_matrix( class->nickname, lut->in, &lut->mat ) ) return( -1 ); if( vips_invertlut_build_init( lut ) || vips_invertlut_build_create( lut ) ) return( -1 ); vips_image_init_fields( create->out, lut->size, 1, lut->mat->Xsize - 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); if( vips_image_write_line( create->out, 0, (VipsPel *) lut->buf ) ) return( -1 ); return( 0 ); } static void vips_invertlut_class_init( VipsInvertlutClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->dispose = vips_invertlut_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "invertlut"; vobject_class->description = _( "build an inverted look-up table" ); vobject_class->build = vips_invertlut_build; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Matrix of XY coordinates" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsInvertlut, in ) ); VIPS_ARG_INT( class, "size", 5, _( "Size" ), _( "LUT size to generate" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsInvertlut, size ), 1, 1000000, 256 ); } static void vips_invertlut_init( VipsInvertlut *lut ) { lut->size = 256; } /** * vips_invertlut: (method) * @in: input mask * @out: (out): output LUT * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @size: generate this much * * Given a mask of target values and real values, generate a LUT which * will map reals to targets. Handy for linearising images from * measurements of a colour chart. All values in [0,1]. Piecewise linear * interpolation, extrapolate head and tail to 0 and 1. * * Eg. input like this: * * * * * 4 * 3 * * * 0.1 * 0.2 * 0.3 * 0.1 * * * 0.2 * 0.4 * 0.4 * 0.2 * * * 0.7 * 0.5 * 0.6 * 0.3 * * * * * Means a patch with 10% reflectance produces an image with 20% in * channel 1, 30% in channel 2, and 10% in channel 3, and so on. * * Inputs don't need to be sorted (we do that). Generate any precision * LUT, default to 256 elements. * * It won't work too well for non-monotonic camera responses * (we should fix this). Interpolation is simple piecewise linear; we ought to * do something better really. * * See also: vips_buildlut(). * * Returns: 0 on success, -1 on error */ int vips_invertlut( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "invertlut", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/logmat.c000066400000000000000000000174011361153320700175470ustar00rootroot00000000000000/* laplacian of logmatian * * Written on: 30/11/1989 * Updated on: 6/12/1991 * 7/8/96 JC * - ansified, mem leaks plugged * 20/11/98 JC * - mask too large check added * 26/3/02 JC * - ahem, was broken since '96, thanks matt * 16/7/03 JC * - makes mask out to zero, not out to minimum, thanks again matt * 22/10/10 * - gtkdoc * 20/10/13 * - redone as a class from logmat.c * 16/12/14 * - default to int output to match vips_conv() * - use @precision, not @integer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" typedef struct _VipsLogmat { VipsCreate parent_instance; double sigma; double min_ampl; gboolean separable; gboolean integer; /* Deprecated */ VipsPrecision precision; } VipsLogmat; typedef struct _VipsLogmatClass { VipsCreateClass parent_class; } VipsLogmatClass; G_DEFINE_TYPE( VipsLogmat, vips_logmat, VIPS_TYPE_CREATE ); static int vips_logmat_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsLogmat *logmat = (VipsLogmat *) object; double sig2 = logmat->sigma * logmat->sigma; double last; int x, y; int width, height; double sum; if( VIPS_OBJECT_CLASS( vips_logmat_parent_class )->build( object ) ) return( -1 ); /* The old, deprecated @integer property has been deliberately set to * FALSE and they've not used the new @precision property ... switch * to float to help them out. */ if( vips_object_argument_isset( object, "integer" ) && !vips_object_argument_isset( object, "precision" ) && !logmat->integer ) logmat->precision = VIPS_PRECISION_FLOAT; if( vips_check_precision_intfloat( class->nickname, logmat->precision ) ) return( -1 ); /* Find the size of the mask. We want to eval the mask out to the * flat zero part, ie. beyond the minimum and to the point where it * comes back up towards zero. */ last = 0.0; for( x = 0; x < 5000; x++ ) { const double distance = x * x; double val; /* Handbook of Pattern Recognition and image processing * by Young and Fu AP 1986 pp 220-221 * temp = (1.0 / (2.0 * IM_PI * sig4)) * (2.0 - (distance / sig2)) * exp( (-1.0) * distance / (2.0 * sig2) ) .. use 0.5 to normalise */ val = 0.5 * (2.0 - (distance / sig2)) * exp( -distance / (2.0 * sig2) ); /* Stop when change in value (ie. difference from the last * point) is positive (ie. we are going up) and absolute value * is less than the min. */ if( val - last >= 0 && VIPS_FABS( val ) < logmat->min_ampl ) break; last = val; } if( x == 5000 ) { vips_error( class->nickname, "%s", _( "mask too large" ) ); return( -1 ); } width = x * 2 + 1; height = logmat->separable ? 1 : width; vips_image_init_fields( create->out, width, height, 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_MULTIBAND, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_write_prepare( create->out ) ) return( -1 ); sum = 0.0; for( y = 0; y < height; y++ ) { for( x = 0; x < width; x++ ) { int xo = x - width / 2; int yo = y - height / 2; double distance = xo * xo + yo * yo; double v = 0.5 * (2.0 - (distance / sig2)) * exp( -distance / (2.0 * sig2) ); if( logmat->precision == VIPS_PRECISION_INTEGER ) v = VIPS_RINT( 20 * v ); *VIPS_MATRIX( create->out, x, y ) = v; sum += v; } } vips_image_set_double( create->out, "scale", sum ); vips_image_set_double( create->out, "offset", 0.0 ); return( 0 ); } static void vips_logmat_class_init( VipsLogmatClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "logmat"; vobject_class->description = _( "make a laplacian of gaussian image" ); vobject_class->build = vips_logmat_build; VIPS_ARG_DOUBLE( class, "sigma", 2, _( "Radius" ), _( "Radius of Logmatian" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsLogmat, sigma ), 0.000001, 10000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "min_ampl", 3, _( "Width" ), _( "Minimum amplitude of Logmatian" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsLogmat, min_ampl ), 0.000001, 10000.0, 0.1 ); VIPS_ARG_BOOL( class, "separable", 4, _( "Separable" ), _( "Generate separable Logmatian" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsLogmat, separable ), FALSE ); VIPS_ARG_BOOL( class, "integer", 5, _( "Integer" ), _( "Generate integer Logmatian" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsLogmat, integer ), FALSE ); VIPS_ARG_ENUM( class, "precision", 6, _( "Precision" ), _( "Generate with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsLogmat, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_INTEGER ); } static void vips_logmat_init( VipsLogmat *logmat ) { logmat->sigma = 1; logmat->min_ampl = 0.1; logmat->precision = VIPS_PRECISION_INTEGER; } /** * vips_logmat: * @out: (out): output image * @sigma: standard deviation of mask * @min_ampl: minimum amplitude * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @separable: generate a separable mask * * @precision: #VipsPrecision for @out * * Creates a circularly symmetric Laplacian of Gaussian mask * of radius * @sigma. The size of the mask is determined by the variable @min_ampl; * if for instance the value .1 is entered this means that the produced mask * is clipped at values within 10 persent of zero, and where the change * between mask elements is less than 10%. * * The program uses the following equation: (from Handbook of Pattern * Recognition and image processing by Young and Fu, AP 1986 pages 220-221): * * H(r) = (1 / (2 * M_PI * s4)) * * (2 - (r2 / s2)) * * exp(-r2 / (2 * s2)) * * where s2 = @sigma * @sigma, s4 = s2 * s2, r2 = r * r. * * The generated mask has odd size and its maximum value is normalised to * 1.0, unless @precision is #VIPS_PRECISION_INTEGER. * * If @separable is set, only the centre horizontal is generated. This is * useful for separable convolutions. * * If @precision is #VIPS_PRECISION_INTEGER, an integer mask is generated. * This is useful for integer convolutions. * * "scale" is set to the sum of all the mask elements. * * See also: vips_gaussmat(), vips_conv(). * * Returns: 0 on success, -1 on error */ int vips_logmat( VipsImage **out, double sigma, double min_ampl, ... ) { va_list ap; int result; va_start( ap, min_ampl ); result = vips_call_split( "logmat", ap, out, sigma, min_ampl ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/mask.c000066400000000000000000000065371361153320700172270ustar00rootroot00000000000000/* base class for frequency filter create operations * * 02/01/14 * - from sines.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" G_DEFINE_ABSTRACT_TYPE( VipsMask, vips_mask, VIPS_TYPE_POINT ); static float vips_mask_point( VipsPoint *point, int x, int y ) { VipsMask *mask = VIPS_MASK( point ); VipsMaskClass *class = VIPS_MASK_GET_CLASS( point ); /* VIPS_MAX to prevent /0. */ int half_width = VIPS_MAX( point->width / 2, 1 ); int half_height = VIPS_MAX( point->height / 2, 1 ); double result; /* Move centre for an optical transform mask. */ if( !mask->optical ) { x = (x + half_width) % point->width; y = (y + half_height) % point->height; } x = x - half_width; y = y - half_height; if( !mask->nodc && x == 0 && y == 0 ) /* DC component is always 1. */ result = 1.0; else { double dx, dy; dx = (double) x / half_width; dy = (double) y / half_height; result = class->point( mask, dx, dy ); /* Invert filter sense for a highpass filter, or to swap * band-pass for band-reject. */ if( mask->reject ) result = 1.0 - result; } return( result ); } static void vips_mask_class_init( VipsMaskClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsPointClass *point_class = VIPS_POINT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask"; vobject_class->description = _( "base class for frequency filters" ); point_class->point = vips_mask_point; point_class->min = 0.0; point_class->max = 1.0; point_class->interpretation = VIPS_INTERPRETATION_FOURIER; VIPS_ARG_BOOL( class, "optical", 5, _( "Optical" ), _( "Rotate quadrants to optical space" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMask, optical ), FALSE ); VIPS_ARG_BOOL( class, "reject", 5, _( "Reject" ), _( "Invert the sense of the filter" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMask, reject ), FALSE ); VIPS_ARG_BOOL( class, "nodc", 5, _( "Nodc" ), _( "Remove DC component" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMask, nodc ), FALSE ); } static void vips_mask_init( VipsMask *mask ) { } libvips-8.9.1/libvips/create/mask_butterworth.c000066400000000000000000000103731361153320700216710ustar00rootroot00000000000000/* creates an butterworth filter. * * 02/01/14 * - from butterworth.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" G_DEFINE_TYPE( VipsMaskButterworth, vips_mask_butterworth, VIPS_TYPE_MASK ); static double vips_mask_butterworth_point( VipsMask *mask, double dx, double dy ) { VipsMaskButterworth *butterworth = (VipsMaskButterworth *) mask; double order = butterworth->order; double fc = butterworth->frequency_cutoff; double ac = butterworth->amplitude_cutoff; double cnst = (1.0 / ac) - 1.0; double fc2 = fc * fc; double d = dx * dx + dy * dy; if( d == 0 ) return( 0 ); else return( 1.0 / (1.0 + cnst * pow( fc2 / d, order )) ); } static void vips_mask_butterworth_class_init( VipsMaskButterworthClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_butterworth"; vobject_class->description = _( "make a butterworth filter" ); mask_class->point = vips_mask_butterworth_point; VIPS_ARG_DOUBLE( class, "order", 6, _( "Order" ), _( "Filter order" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworth, order ), 1.0, 1000000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "frequency_cutoff", 7, _( "Frequency cutoff" ), _( "Frequency cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworth, frequency_cutoff ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "amplitude_cutoff", 8, _( "Amplitude cutoff" ), _( "Amplitude cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworth, amplitude_cutoff ), 0.0, 1.0, 0.5 ); } static void vips_mask_butterworth_init( VipsMaskButterworth *butterworth ) { butterworth->order = 1.0; butterworth->frequency_cutoff = 0.5; butterworth->amplitude_cutoff = 0.5; } /** * vips_mask_butterworth: * @out: (out): output image * @width: image size * @height: image size * @order: filter order * @frequency_cutoff: frequency threshold * @amplitude_cutoff: amplitude threshold * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @nodc: don't set the DC pixel * * @reject: invert the filter sense * * @optical: coordinates in optical space * * @uchar: output a uchar image * * Make an butterworth high- or low-pass filter, that is, one with a variable, * smooth transition * positioned at @frequency_cutoff, where @frequency_cutoff is in * range 0 - 1. The shape of the curve is controlled by * @order --- higher values give a sharper transition. See Gonzalez and Wintz, * Digital Image Processing, 1987. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_butterworth( VipsImage **out, int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, ... ) { va_list ap; int result; va_start( ap, amplitude_cutoff ); result = vips_call_split( "mask_butterworth", ap, out, width, height, order, frequency_cutoff, amplitude_cutoff ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/mask_butterworth_band.c000066400000000000000000000132441361153320700226550ustar00rootroot00000000000000/* creates an butterworth_band filter. * * 02/01/14 * - from butterworth_band.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskButterworthBand { VipsMask parent_instance; double order; double frequency_cutoff_x; double frequency_cutoff_y; double radius; double amplitude_cutoff; } VipsMaskButterworthBand; typedef VipsMaskClass VipsMaskButterworthBandClass; G_DEFINE_TYPE( VipsMaskButterworthBand, vips_mask_butterworth_band, VIPS_TYPE_MASK ); static double vips_mask_butterworth_band_point( VipsMask *mask, double dx, double dy ) { VipsMaskButterworthBand *butterworth_band = (VipsMaskButterworthBand *) mask; double order = butterworth_band->order; double fcx = butterworth_band->frequency_cutoff_x; double fcy = butterworth_band->frequency_cutoff_y; double r2 = butterworth_band->radius * butterworth_band->radius; double ac = butterworth_band->amplitude_cutoff; double cnst = (1.0 / ac) - 1.0; /* Normalise the amplitude at (fcx, fcy) to 1.0. */ double cnsta = 1.0 / (1.0 + 1.0 / (1.0 + cnst * pow( 4.0 * (fcx * fcx + fcy * fcy) / r2, order ))); double d1 = (dx - fcx) * (dx - fcx) + (dy - fcy) * (dy - fcy); double d2 = (dx + fcx) * (dx + fcx) + (dy + fcy) * (dy + fcy); return( cnsta * (1.0 / (1.0 + cnst * pow( d1 / r2, order )) + 1.0 / (1.0 + cnst * pow( d2 / r2, order ))) ); } static void vips_mask_butterworth_band_class_init( VipsMaskButterworthBandClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_butterworth_band"; vobject_class->description = _( "make a butterworth_band filter" ); mask_class->point = vips_mask_butterworth_band_point; VIPS_ARG_DOUBLE( class, "order", 6, _( "Order" ), _( "Filter order" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthBand, order ), 1.0, 1000000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "frequency_cutoff_x", 7, _( "Frequency cutoff x" ), _( "Frequency cutoff x" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthBand, frequency_cutoff_x ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "frequency_cutoff_y", 8, _( "Frequency cutoff y" ), _( "Frequency cutoff y" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthBand, frequency_cutoff_y ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "radius", 9, _( "radius" ), _( "radius of circle" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthBand, radius ), 0.0, 1000000.0, 0.1 ); VIPS_ARG_DOUBLE( class, "amplitude_cutoff", 10, _( "Amplitude cutoff" ), _( "Amplitude cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthBand, amplitude_cutoff ), 0.0, 1.0, 0.5 ); } static void vips_mask_butterworth_band_init( VipsMaskButterworthBand *butterworth_band ) { butterworth_band->order = 1.0; butterworth_band->frequency_cutoff_x = 0.5; butterworth_band->frequency_cutoff_y = 0.5; butterworth_band->radius = 0.1; butterworth_band->amplitude_cutoff = 0.5; } /** * vips_mask_butterworth_band: * @out: (out): output image * @width: image size * @height: image size * @order: filter order * @frequency_cutoff_x: band position * @frequency_cutoff_y: band position * @radius: band radius * @amplitude_cutoff: amplitude threshold * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @nodc: don't set the DC pixel * * @reject: invert the filter sense * * @optical: coordinates in optical space * * @uchar: output a uchar image * * Make an butterworth band-pass or band-reject filter, that is, one with a * variable, smooth transition positioned at @frequency_cutoff_x, * @frequency_cutoff_y, of radius @radius. * The shape of the curve is controlled by * @order --- higher values give a sharper transition. See Gonzalez and Wintz, * Digital Image Processing, 1987. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_butterworth_band( VipsImage **out, int width, int height, double order, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, ... ) { va_list ap; int result; va_start( ap, amplitude_cutoff ); result = vips_call_split( "mask_butterworth_band", ap, out, width, height, order, frequency_cutoff_x, frequency_cutoff_y, radius, amplitude_cutoff ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/mask_butterworth_ring.c000066400000000000000000000104361361153320700227100ustar00rootroot00000000000000/* creates an butterworth filter. * * 02/01/14 * - from butterworth.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskButterworthRing { VipsMaskButterworth parent_instance; double ringwidth; } VipsMaskButterworthRing; typedef VipsMaskButterworthClass VipsMaskButterworthRingClass; G_DEFINE_TYPE( VipsMaskButterworthRing, vips_mask_butterworth_ring, VIPS_TYPE_MASK_BUTTERWORTH ); static double vips_mask_butterworth_ring_point( VipsMask *mask, double dx, double dy ) { VipsMaskButterworth *butterworth = (VipsMaskButterworth *) mask; VipsMaskButterworthRing *butterworth_ring = (VipsMaskButterworthRing *) mask; double order = butterworth->order; double fc = butterworth->frequency_cutoff; double ac = butterworth->amplitude_cutoff; double ringwidth = butterworth_ring->ringwidth; double df = ringwidth / 2.0; double cnst = (1.0 / ac) - 1.0; double df2 = df * df; double dist = sqrt( dx * dx + dy * dy ); return( 1.0 / (1.0 + cnst * pow( (dist - fc) * (dist - fc) / df2, order )) ); } static void vips_mask_butterworth_ring_class_init( VipsMaskButterworthRingClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_butterworth_ring"; vobject_class->description = _( "make a butterworth ring filter" ); mask_class->point = vips_mask_butterworth_ring_point; VIPS_ARG_DOUBLE( class, "ringwidth", 20, _( "Ringwidth" ), _( "Ringwidth" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthRing, ringwidth ), 0.0, 1000000.0, 0.1 ); } static void vips_mask_butterworth_ring_init( VipsMaskButterworthRing *butterworth_ring ) { butterworth_ring->ringwidth = 0.1; } /** * vips_mask_butterworth_ring: * @out: (out): output image * @width: image size * @height: image size * @order: filter order * @frequency_cutoff: frequency threshold * @amplitude_cutoff: amplitude threshold * @ringwidth: ringwidth * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @nodc: don't set the DC pixel * * @reject: invert the filter sense * * @optical: coordinates in optical space * * @uchar: output a uchar image * * Make a butterworth ring-pass or ring-reject filter, that is, one with a * variable, * smooth transition * positioned at @frequency_cutoff of width @width, where @frequency_cutoff is * in the range 0 - 1. The shape of the curve is controlled by * @order --- higher values give a sharper transition. See Gonzalez and Wintz, * Digital Image Processing, 1987. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_butterworth_ring( VipsImage **out, int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, double ringwidth, ... ) { va_list ap; int result; va_start( ap, ringwidth ); result = vips_call_split( "mask_butterworth_ring", ap, out, width, height, order, frequency_cutoff, amplitude_cutoff, ringwidth ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/mask_fractal.c000066400000000000000000000065461361153320700207230ustar00rootroot00000000000000/* creates a fractal filter. * * 02/01/14 * - from ideal.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskFractal { VipsMask parent_instance; double fractal_dimension; } VipsMaskFractal; typedef VipsMaskClass VipsMaskFractalClass; G_DEFINE_TYPE( VipsMaskFractal, vips_mask_fractal, VIPS_TYPE_MASK ); static double vips_mask_fractal_point( VipsMask *mask, double dx, double dy ) { VipsMaskFractal *fractal = (VipsMaskFractal *) mask; double fd = (fractal->fractal_dimension - 4.0) / 2.0; double d2 = dx * dx + dy * dy; return( pow( d2, fd ) ); } static void vips_mask_fractal_class_init( VipsMaskFractalClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_fractal"; vobject_class->description = _( "make fractal filter" ); mask_class->point = vips_mask_fractal_point; VIPS_ARG_DOUBLE( class, "fractal_dimension", 8, _( "Fractal dimension" ), _( "Fractal dimension" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskFractal, fractal_dimension ), 2.0, 3.0, 2.5 ); } static void vips_mask_fractal_init( VipsMaskFractal *fractal ) { fractal->fractal_dimension = 2.5; } /** * vips_mask_fractal: * @out: (out): output image * @width: image size * @height: image size * @fractal_dimension: fractal dimension * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @nodc: don't set the DC pixel * * @reject: invert the filter sense * * @optical: coordinates in optical space * * @uchar: output a uchar image * * This operation should be used to create fractal images by filtering the * power spectrum of Gaussian white noise. See vips_gaussnoise(). * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_fractal( VipsImage **out, int width, int height, double fractal_dimension, ... ) { va_list ap; int result; va_start( ap, fractal_dimension ); result = vips_call_split( "mask_fractal", ap, out, width, height, fractal_dimension ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/mask_gaussian.c000066400000000000000000000072061361153320700211130ustar00rootroot00000000000000/* creates a gaussian filter. * * 02/01/14 * - from gaussian.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" G_DEFINE_TYPE( VipsMaskGaussian, vips_mask_gaussian, VIPS_TYPE_MASK ); static double vips_mask_gaussian_point( VipsMask *mask, double dx, double dy ) { VipsMaskGaussian *gaussian = (VipsMaskGaussian *) mask; double fc = gaussian->frequency_cutoff; double ac = gaussian->amplitude_cutoff; double cnst = log( ac ); double fc2 = fc * fc; double dist2 = (dx * dx + dy * dy) / fc2; return( 1.0 - exp( cnst * dist2 ) ); } static void vips_mask_gaussian_class_init( VipsMaskGaussianClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_gaussian"; vobject_class->description = _( "make a gaussian filter" ); mask_class->point = vips_mask_gaussian_point; VIPS_ARG_DOUBLE( class, "frequency_cutoff", 7, _( "Frequency cutoff" ), _( "Frequency cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussian, frequency_cutoff ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "amplitude_cutoff", 8, _( "Amplitude cutoff" ), _( "Amplitude cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussian, amplitude_cutoff ), 0.0, 1.0, 0.5 ); } static void vips_mask_gaussian_init( VipsMaskGaussian *gaussian ) { gaussian->frequency_cutoff = 0.5; gaussian->amplitude_cutoff = 0.5; } /** * vips_mask_gaussian: * @out: (out): output image * @width: image size * @height: image size * @frequency_cutoff: frequency threshold * @amplitude_cutoff: amplitude threshold * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @nodc: don't set the DC pixel * * @reject: invert the filter sense * * @optical: coordinates in optical space * * @uchar: output a uchar image * * Make a gaussian high- or low-pass filter, that is, one with a variable, * smooth transition positioned at @frequency_cutoff. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_gaussian( VipsImage **out, int width, int height, double frequency_cutoff, double amplitude_cutoff, ... ) { va_list ap; int result; va_start( ap, amplitude_cutoff ); result = vips_call_split( "mask_gaussian", ap, out, width, height, frequency_cutoff, amplitude_cutoff ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/mask_gaussian_band.c000066400000000000000000000117621361153320700221010ustar00rootroot00000000000000/* creates a gaussian filter. * * 02/01/14 * - from gaussian.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskGaussianBand { VipsMask parent_instance; double frequency_cutoff_x; double frequency_cutoff_y; double radius; double amplitude_cutoff; } VipsMaskGaussianBand; typedef VipsMaskClass VipsMaskGaussianBandClass; G_DEFINE_TYPE( VipsMaskGaussianBand, vips_mask_gaussian_band, VIPS_TYPE_MASK ); static double vips_mask_gaussian_band_point( VipsMask *mask, double dx, double dy ) { VipsMaskGaussianBand *gaussian_band = (VipsMaskGaussianBand *) mask; double fcx = gaussian_band->frequency_cutoff_x; double fcy = gaussian_band->frequency_cutoff_y; double r2 = gaussian_band->radius * gaussian_band->radius; double ac = gaussian_band->amplitude_cutoff; double cnst = log( ac ); double d1 = (dx - fcx) * (dx - fcx) + (dy - fcy) * (dy - fcy); double d2 = (dx + fcx) * (dx + fcx) + (dy + fcy) * (dy + fcy); /* Normalise the amplitude at (fcx, fcy) to 1.0. */ double cnsta = 1.0 / (1.0 + exp( cnst * 4.0 * (fcx * fcx + fcy * fcy) / r2 )); return( cnsta * (exp( cnst * d1 / r2 ) + exp( cnst * d2 / r2 )) ); } static void vips_mask_gaussian_band_class_init( VipsMaskGaussianBandClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_gaussian_band"; vobject_class->description = _( "make a gaussian filter" ); mask_class->point = vips_mask_gaussian_band_point; VIPS_ARG_DOUBLE( class, "frequency_cutoff_x", 7, _( "Frequency cutoff x" ), _( "Frequency cutoff x" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussianBand, frequency_cutoff_x ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "frequency_cutoff_y", 8, _( "Frequency cutoff y" ), _( "Frequency cutoff y" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussianBand, frequency_cutoff_y ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "radius", 9, _( "radius" ), _( "radius of circle" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussianBand, radius ), 0.0, 1000000.0, 0.1 ); VIPS_ARG_DOUBLE( class, "amplitude_cutoff", 10, _( "Amplitude cutoff" ), _( "Amplitude cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussianBand, amplitude_cutoff ), 0.0, 1.0, 0.5 ); } static void vips_mask_gaussian_band_init( VipsMaskGaussianBand *gaussian_band ) { gaussian_band->frequency_cutoff_x = 0.5; gaussian_band->frequency_cutoff_x = 0.5; gaussian_band->radius = 0.1; gaussian_band->amplitude_cutoff = 0.5; } /** * vips_mask_gaussian_band: * @out: (out): output image * @width: image size * @height: image size * @frequency_cutoff_x: band position * @frequency_cutoff_y: band position * @radius: band radius * @amplitude_cutoff: amplitude threshold * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @nodc: don't set the DC pixel * * @reject: invert the filter sense * * @optical: coordinates in optical space * * @uchar: output a uchar image * * Make a gaussian band-pass or band-reject filter, that is, one with a * variable, smooth transition positioned at @frequency_cutoff_x, * @frequency_cutoff_y, of radius @radius. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_gaussian_band( VipsImage **out, int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, ... ) { va_list ap; int result; va_start( ap, amplitude_cutoff ); result = vips_call_split( "mask_gaussian_band", ap, out, width, height, frequency_cutoff_x, frequency_cutoff_y, radius, amplitude_cutoff ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/mask_gaussian_ring.c000066400000000000000000000075751361153320700221430ustar00rootroot00000000000000/* creates a gaussian_ring filter. * * 02/01/14 * - from gaussian_ring.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskGaussianRing { VipsMaskGaussian parent_instance; double ringwidth; } VipsMaskGaussianRing; typedef VipsMaskGaussianClass VipsMaskGaussianRingClass; G_DEFINE_TYPE( VipsMaskGaussianRing, vips_mask_gaussian_ring, VIPS_TYPE_MASK_GAUSSIAN ); static double vips_mask_gaussian_ring_point( VipsMask *mask, double dx, double dy ) { VipsMaskGaussian *gaussian = (VipsMaskGaussian *) mask; VipsMaskGaussianRing *gaussian_ring = (VipsMaskGaussianRing *) mask; double fc = gaussian->frequency_cutoff; double ac = gaussian->amplitude_cutoff; double ringwidth = gaussian_ring->ringwidth; double df = ringwidth / 2.0; double df2 = df * df; double cnst = log( ac ); double dist = sqrt( dx * dx + dy * dy ); return( exp( cnst * (dist - fc) * (dist - fc) / df2 ) ); } static void vips_mask_gaussian_ring_class_init( VipsMaskGaussianRingClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_gaussian_ring"; vobject_class->description = _( "make a gaussian ring filter" ); mask_class->point = vips_mask_gaussian_ring_point; VIPS_ARG_DOUBLE( class, "ringwidth", 20, _( "Ringwidth" ), _( "Ringwidth" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussianRing, ringwidth ), 0.0, 1000000.0, 0.5 ); } static void vips_mask_gaussian_ring_init( VipsMaskGaussianRing *gaussian_ring ) { gaussian_ring->ringwidth = 0.5; } /** * vips_mask_gaussian_ring: * @out: (out): output image * @width: image size * @height: image size * @frequency_cutoff: frequency threshold * @amplitude_cutoff: amplitude threshold * @ringwidth: ringwidth * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @nodc: don't set the DC pixel * * @reject: invert the filter sense * * @optical: coordinates in optical space * * @uchar: output a uchar image * * Make a gaussian ring-pass or ring-reject filter, that is, one with a * variable, smooth transition positioned at @frequency_cutoff of width * @ringwidth. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_gaussian_ring( VipsImage **out, int width, int height, double frequency_cutoff, double amplitude_cutoff, double ringwidth, ... ) { va_list ap; int result; va_start( ap, ringwidth ); result = vips_call_split( "mask_gaussian_ring", ap, out, width, height, frequency_cutoff, amplitude_cutoff, ringwidth ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/mask_ideal.c000066400000000000000000000102701361153320700203520ustar00rootroot00000000000000/* creates an ideal filter. * * 02/01/14 * - from ideal.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" G_DEFINE_TYPE( VipsMaskIdeal, vips_mask_ideal, VIPS_TYPE_MASK ); static double vips_mask_ideal_point( VipsMask *mask, double dx, double dy ) { VipsMaskIdeal *ideal = (VipsMaskIdeal *) mask; double fc = ideal->frequency_cutoff; double dist2 = dx * dx + dy * dy; double fc2 = fc * fc; return( dist2 <= fc2 ? 0.0 : 1.0 ); } static void vips_mask_ideal_class_init( VipsMaskIdealClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_ideal"; vobject_class->description = _( "make an ideal filter" ); mask_class->point = vips_mask_ideal_point; VIPS_ARG_DOUBLE( class, "frequency_cutoff", 6, _( "Frequency cutoff" ), _( "Frequency cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskIdeal, frequency_cutoff ), 0.0, 1000000.0, 0.5 ); } static void vips_mask_ideal_init( VipsMaskIdeal *ideal ) { ideal->frequency_cutoff = 0.5; } /** * vips_mask_ideal: * @out: (out): output image * @width: image size * @height: image size * @frequency_cutoff: threshold at which filter ends * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @nodc: don't set the DC pixel * * @reject: invert the filter sense * * @optical: coordinates in optical space * * @uchar: output a uchar image * * Make an ideal high- or low-pass filter, that is, one with a sharp cutoff * positioned at @frequency_cutoff, where @frequency_cutoff is in * the range 0 - 1. * * This operation creates a one-band float image of the specified size. * The image has * values in the range [0, 1] and is typically used for multiplying against * frequency domain images to filter them. * Masks are created with the DC component at (0, 0). The DC pixel always * has the value 1.0. * * Set @nodc to not set the DC pixel. * * Set @optical to position the DC component in the centre of the image. This * makes the mask suitable for multiplying against optical Fourier transforms. * See vips_wrap(). * * Set @reject to invert the sense of * the filter. For example, low-pass becomes low-reject. * * Set @uchar to output an 8-bit unsigned char image rather than a * float image. In this case, pixels are in the range [0 - 255]. * * See also: vips_mask_ideal(), vips_mask_ideal_ring(), * vips_mask_ideal_band(), vips_mask_butterworth(), * vips_mask_butterworth_ring(), vips_mask_butterworth_band(), * vips_mask_gaussian(), vips_mask_gaussian_ring(), * vips_mask_gaussian_band(). * * Returns: 0 on success, -1 on error */ int vips_mask_ideal( VipsImage **out, int width, int height, double frequency_cutoff, ... ) { va_list ap; int result; va_start( ap, frequency_cutoff ); result = vips_call_split( "mask_ideal", ap, out, width, height, frequency_cutoff ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/mask_ideal_band.c000066400000000000000000000104461361153320700213430ustar00rootroot00000000000000/* creates an ideal filter. * * 02/01/14 * - from ideal.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskIdealBand { VipsMask parent_instance; double frequency_cutoff_x; double frequency_cutoff_y; double radius; } VipsMaskIdealBand; typedef VipsMaskClass VipsMaskIdealBandClass; G_DEFINE_TYPE( VipsMaskIdealBand, vips_mask_ideal_band, VIPS_TYPE_MASK ); static double vips_mask_ideal_band_point( VipsMask *mask, double dx, double dy ) { VipsMaskIdealBand *ideal_band = (VipsMaskIdealBand *) mask; double fcx = ideal_band->frequency_cutoff_x; double fcy = ideal_band->frequency_cutoff_y; double r2 = ideal_band->radius * ideal_band->radius; double d1 = (dx - fcx) * (dx - fcx) + (dy - fcy) * (dy - fcy); double d2 = (dx + fcx) * (dx + fcx) + (dy + fcy) * (dy + fcy); return( (d1 < r2 || d2 < r2) ? 1.0 : 0.0 ); } static void vips_mask_ideal_band_class_init( VipsMaskIdealBandClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_ideal_band"; vobject_class->description = _( "make an ideal band filter" ); mask_class->point = vips_mask_ideal_band_point; VIPS_ARG_DOUBLE( class, "frequency_cutoff_x", 6, _( "Frequency cutoff x" ), _( "Frequency cutoff x" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskIdealBand, frequency_cutoff_x ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "frequency_cutoff_y", 7, _( "Frequency cutoff y" ), _( "Frequency cutoff y" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskIdealBand, frequency_cutoff_y ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "radius", 8, _( "radius" ), _( "radius of circle" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskIdealBand, radius ), 0.0, 1000000.0, 0.1 ); } static void vips_mask_ideal_band_init( VipsMaskIdealBand *ideal_band ) { ideal_band->frequency_cutoff_x = 0.5; ideal_band->frequency_cutoff_y = 0.5; ideal_band->radius = 0.1; } /** * vips_mask_ideal_band: * @out: (out): output image * @width: image size * @height: image size * @frequency_cutoff_x: position of band * @frequency_cutoff_y: position of band * @radius: size of band * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @nodc: don't set the DC pixel * * @reject: invert the filter sense * * @optical: coordinates in optical space * * @uchar: output a uchar image * * Make an ideal band-pass or band-reject filter, that is, one with a * sharp cutoff around the point @frequency_cutoff_x, @frequency_cutoff_y, * of size @radius. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_ideal_band( VipsImage **out, int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, ... ) { va_list ap; int result; va_start( ap, radius ); result = vips_call_split( "mask_ideal_band", ap, out, width, height, frequency_cutoff_x, frequency_cutoff_y, radius ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/mask_ideal_ring.c000066400000000000000000000073361361153320700214020ustar00rootroot00000000000000/* creates an ideal ringpass filter. * * 02/01/14 * - from ideal.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskIdealRing { VipsMaskIdeal parent_instance; double ringwidth; } VipsMaskIdealRing; typedef VipsMaskIdealClass VipsMaskIdealRingClass; G_DEFINE_TYPE( VipsMaskIdealRing, vips_mask_ideal_ring, VIPS_TYPE_MASK_IDEAL ); static double vips_mask_ideal_ring_point( VipsMask *mask, double dx, double dy ) { VipsMaskIdeal *ideal = (VipsMaskIdeal *) mask; VipsMaskIdealRing *ideal_ring = (VipsMaskIdealRing *) mask; double fc = ideal->frequency_cutoff; double ringwidth = ideal_ring->ringwidth; double df = ringwidth / 2.0; double dist2 = dx * dx + dy * dy; double fc2_1 = (fc - df) * (fc - df); double fc2_2 = (fc + df) * (fc + df); return( dist2 > fc2_1 && dist2 < fc2_2 ? 1.0 : 0.0 ); } static void vips_mask_ideal_ring_class_init( VipsMaskIdealClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_ideal_ring"; vobject_class->description = _( "make an ideal ring filter" ); mask_class->point = vips_mask_ideal_ring_point; VIPS_ARG_DOUBLE( class, "ringwidth", 20, _( "Ringwidth" ), _( "Ringwidth" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskIdealRing, ringwidth ), 0.0, 1000000.0, 0.5 ); } static void vips_mask_ideal_ring_init( VipsMaskIdealRing *ideal_ring ) { ideal_ring->ringwidth = 0.5; } /** * vips_mask_ideal_ring: * @out: (out): output image * @width: image size * @height: image size * @frequency_cutoff: threshold at which filter ends * @ringwidth: ring width * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @nodc: don't set the DC pixel * * @reject: invert the filter sense * * @optical: coordinates in optical space * * @uchar: output a uchar image * * Make an ideal ring-pass or ring-reject filter, that is, one with a sharp * ring positioned at @frequency_cutoff of width @width, where * @frequency_cutoff and @width are expressed as the range 0 - 1. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_ideal_ring( VipsImage **out, int width, int height, double frequency_cutoff, double ringwidth, ... ) { va_list ap; int result; va_start( ap, ringwidth ); result = vips_call_split( "mask_ideal_ring", ap, out, width, height, frequency_cutoff, ringwidth ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/pcreate.h000066400000000000000000000036261361153320700177200ustar00rootroot00000000000000/* base class for all create operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PCREATE_H #define VIPS_PCREATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_CREATE (vips_create_get_type()) #define VIPS_CREATE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_CREATE, VipsCreate )) #define VIPS_CREATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_CREATE, VipsCreateClass)) #define VIPS_IS_CREATE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_CREATE )) #define VIPS_IS_CREATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_CREATE )) #define VIPS_CREATE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_CREATE, VipsCreateClass )) typedef struct _VipsCreate { VipsOperation parent_instance; /* All have an output image. */ VipsImage *out; } VipsCreate; typedef struct _VipsCreateClass { VipsOperationClass parent_class; } VipsCreateClass; GType vips_create_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PCREATE_H*/ libvips-8.9.1/libvips/create/perlin.c000066400000000000000000000201041361153320700175470ustar00rootroot00000000000000/* Perlin noise generator. * * 24/7/16 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" typedef struct _VipsPerlin { VipsCreate parent_instance; int width; int height; int cell_size; gboolean uchar; int cells_across; int cells_down; /* Use this to seed this call of our rng. */ guint32 seed; } VipsPerlin; typedef struct _VipsPerlinClass { VipsCreateClass parent_class; } VipsPerlinClass; G_DEFINE_TYPE( VipsPerlin, vips_perlin, VIPS_TYPE_CREATE ); /* cos and sin from an angle in 0 - 255. */ float vips_perlin_cos[256]; float vips_perlin_sin[256]; typedef struct _Sequence { VipsPerlin *perlin; /* The position of the last cell we were in. Use this to avoid * regenerating vectors on every pixel lookup. */ int cell_x; int cell_y; /* The 2 x 2 grid of unit vectors, with cell_x/cell_y as the top left. */ float gx[4]; float gy[4]; } Sequence; /* Generate a 3 x 3 grid of cells around a point. */ static void vips_perlin_create_cells( VipsPerlin *perlin, float gx[4], float gy[4], int cell_x, int cell_y ) { int x, y; for( y = 0; y < 2; y++ ) for( x = 0; x < 2; x++ ) { int ci = x + y * 2; guint32 seed; int cx; int cy; int angle; seed = perlin->seed; cx = cell_x + x; cy = cell_y + y; /* When we calculate the seed for this cell, we wrap * around so that our output will tesselate. */ if( cy >= perlin->cells_down ) cy = 0; seed = vips__random_add( seed, cy ); if( cx >= perlin->cells_across ) cx = 0; seed = vips__random_add( seed, cx ); angle = (seed ^ (seed >> 8) ^ (seed >> 16)) & 0xff; gx[ci] = vips_perlin_cos[angle]; gy[ci] = vips_perlin_sin[angle]; } } static int vips_perlin_stop( void *vseq, void *a, void *b ) { Sequence *seq = (Sequence *) vseq; VIPS_FREE( seq ); return( 0 ); } static void * vips_perlin_start( VipsImage *out, void *a, void *b ) { VipsPerlin *perlin = (VipsPerlin *) b; Sequence *seq; if( !(seq = VIPS_NEW( NULL, Sequence )) ) return( NULL ); seq->perlin = perlin; seq->cell_x = -1; seq->cell_y = -1; return( seq ); } /* Smooth linear interpolation, 0 <= x <= 1. * * https://en.wikipedia.org/wiki/Smoothstep */ static float smootherstep( float x ) { return( x * x * x * (x * (x * 6 - 15) + 10) ); } static int vips_perlin_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsPerlin *perlin = (VipsPerlin *) a; VipsRect *r = &or->valid; Sequence *seq = (Sequence *) vseq; int x, y; for( y = 0; y < r->height; y++ ) { float *fq = (float *) VIPS_REGION_ADDR( or, r->left, r->top + y ); VipsPel *q = (VipsPel *) fq; for( x = 0; x < r->width; x++ ) { int cs = perlin->cell_size; int cell_x = (r->left + x) / cs; int cell_y = (r->top + y) / cs; float dx = (x + r->left - cell_x * cs) / (float) cs; float dy = (y + r->top - cell_y * cs) / (float) cs; float sx = smootherstep( dx ); float sy = smootherstep( dy ); float n0, n1; float ix0, ix1; float p; if( cell_x != seq->cell_x || cell_y != seq->cell_y ) { vips_perlin_create_cells( perlin, seq->gx, seq->gy, cell_x, cell_y ); seq->cell_x = cell_x; seq->cell_y = cell_y; } n0 = -dx * seq->gx[0] + -dy * seq->gy[0]; n1 = (1 - dx) * seq->gx[1] + -dy * seq->gy[1]; ix0 = n0 + sx * (n1 - n0); n0 = -dx * seq->gx[2] + (1 - dy) * seq->gy[2]; n1 = (1 - dx) * seq->gx[3] + (1 - dy) * seq->gy[3]; ix1 = n0 + sx * (n1 - n0); p = ix0 + sy * (ix1 - ix0); if( perlin->uchar ) q[x] = 128 * p + 128; else fq[x] = p; } } return( 0 ); } static int vips_perlin_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsPerlin *perlin = (VipsPerlin *) object; if( VIPS_OBJECT_CLASS( vips_perlin_parent_class )->build( object ) ) return( -1 ); /* Be careful if width is a multiple of cell_size. */ perlin->cells_across = VIPS_ROUND_UP( perlin->width, perlin->cell_size ) / perlin->cell_size; perlin->cells_down = VIPS_ROUND_UP( perlin->height, perlin->cell_size ) / perlin->cell_size; perlin->seed = g_random_double() * 0xffffffffu; vips_image_init_fields( create->out, perlin->width, perlin->height, 1, perlin->uchar ? VIPS_FORMAT_UCHAR : VIPS_FORMAT_FLOAT, VIPS_CODING_NONE, VIPS_INTERPRETATION_MULTIBAND, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( create->out, vips_perlin_start, vips_perlin_gen, vips_perlin_stop, perlin, NULL ) ) return( -1 ); return( 0 ); } static void * vips_perlin_make_tables( void *client ) { int i; for( i = 0; i < 256; i++ ) { double angle = 2 * VIPS_PI * i / 256.0; vips_perlin_cos[i] = cos( angle ); vips_perlin_sin[i] = sin( angle ); } return( NULL ); } static void vips_perlin_class_init( VipsPerlinClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); static GOnce once = G_ONCE_INIT; VIPS_ONCE( &once, vips_perlin_make_tables, NULL ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "perlin"; vobject_class->description = _( "make a perlin noise image" ); vobject_class->build = vips_perlin_build; VIPS_ARG_INT( class, "width", 2, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPerlin, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 3, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPerlin, height ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "cell_size", 3, _( "Cell size" ), _( "Size of Perlin cells" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsPerlin, cell_size ), 1, VIPS_MAX_COORD, 256 ); VIPS_ARG_BOOL( class, "uchar", 4, _( "Uchar" ), _( "Output an unsigned char image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsPerlin, uchar ), FALSE ); } static void vips_perlin_init( VipsPerlin *perlin ) { perlin->cell_size = 256; } /** * vips_perlin: * @out: (out): output image * @width: horizontal size * @height: vertical size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @cell_size: %gint, size of Perlin cells * * @uchar: output a uchar image * * Create a one-band float image of Perlin noise. See: * * https://en.wikipedia.org/wiki/Perlin_noise * * Use @cell_size to set the size of the cells from which the image is * constructed. The default is 256 x 256. * * If @width and @height are multiples of @cell_size, the image will tessellate. * * Normally, output pixels are #VIPS_FORMAT_FLOAT in the range [-1, +1]. Set * @uchar to output a uchar image with pixels in [0, 255]. * * See also: vips_worley(), vips_fractsurf(), vips_gaussnoise(). * * Returns: 0 on success, -1 on error */ int vips_perlin( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "perlin", ap, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/pmask.h000066400000000000000000000111671361153320700174070ustar00rootroot00000000000000/* base class for mask generators */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PMASK_H #define VIPS_PMASK_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* vips7compat.h defines VIPS_MASK(), an old compat macro. */ #ifdef VIPS_MASK #undef VIPS_MASK #endif /*VIPS_MASK*/ #define VIPS_TYPE_MASK (vips_mask_get_type()) #define VIPS_MASK( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_MASK, VipsMask )) #define VIPS_MASK_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_MASK, VipsMaskClass)) #define VIPS_IS_MASK( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_MASK )) #define VIPS_IS_MASK_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_MASK )) #define VIPS_MASK_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_MASK, VipsMaskClass )) typedef struct _VipsMask { VipsPoint parent_instance; gboolean optical; gboolean reject; gboolean nodc; } VipsMask; typedef struct _VipsMaskClass { VipsPointClass parent_class; double (*point)( VipsMask *, double, double ); } VipsMaskClass; GType vips_mask_get_type( void ); #define VIPS_TYPE_MASK_IDEAL (vips_mask_ideal_get_type()) #define VIPS_MASK_IDEAL( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_MASK_IDEAL, VipsMaskIdeal )) #define VIPS_MASK_IDEAL_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_MASK_IDEAL, VipsMaskIdealClass)) #define VIPS_IS_MASK_IDEAL( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_MASK_IDEAL )) #define VIPS_IS_MASK_IDEAL_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_MASK_IDEAL )) #define VIPS_MASK_IDEAL_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_MASK_IDEAL, VipsMaskIdealClass )) typedef struct _VipsMaskIdeal { VipsMask parent_instance; double frequency_cutoff; } VipsMaskIdeal; typedef VipsMaskClass VipsMaskIdealClass; GType vips_mask_ideal_get_type( void ); #define VIPS_TYPE_MASK_BUTTERWORTH (vips_mask_butterworth_get_type()) #define VIPS_MASK_BUTTERWORTH( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_MASK_BUTTERWORTH, VipsMaskButterworth )) #define VIPS_MASK_BUTTERWORTH_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_MASK_BUTTERWORTH, VipsMaskButterworthClass)) #define VIPS_IS_MASK_BUTTERWORTH( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_MASK_BUTTERWORTH )) #define VIPS_IS_MASK_BUTTERWORTH_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_MASK_BUTTERWORTH )) #define VIPS_MASK_BUTTERWORTH_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_MASK_BUTTERWORTH, VipsMaskButterworthClass )) typedef struct _VipsMaskButterworth { VipsMask parent_instance; double order; double frequency_cutoff; double amplitude_cutoff; } VipsMaskButterworth; typedef VipsMaskClass VipsMaskButterworthClass; GType vips_mask_butterworth_get_type( void ); #define VIPS_TYPE_MASK_GAUSSIAN (vips_mask_gaussian_get_type()) #define VIPS_MASK_GAUSSIAN( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_MASK_GAUSSIAN, VipsMaskGaussian )) #define VIPS_MASK_GAUSSIAN_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_MASK_GAUSSIAN, VipsMaskGaussianClass)) #define VIPS_IS_MASK_GAUSSIAN( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_MASK_GAUSSIAN )) #define VIPS_IS_MASK_GAUSSIAN_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_MASK_GAUSSIAN )) #define VIPS_MASK_GAUSSIAN_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_MASK_GAUSSIAN, VipsMaskGaussianClass )) typedef struct _VipsMaskGaussian { VipsMask parent_instance; double frequency_cutoff; double amplitude_cutoff; } VipsMaskGaussian; typedef VipsMaskClass VipsMaskGaussianClass; GType vips_mask_gaussian_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PMASK_H*/ libvips-8.9.1/libvips/create/point.c000066400000000000000000000076271361153320700174260ustar00rootroot00000000000000/* base class for point-wise creators * * 13/6/13 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" G_DEFINE_ABSTRACT_TYPE( VipsPoint, vips_point, VIPS_TYPE_CREATE ); static int vips_point_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsPoint *point = (VipsPoint *) a; VipsPointClass *class = VIPS_POINT_GET_CLASS( point ); VipsRect *r = &or->valid; int x, y; for( y = 0; y < r->height; y++ ) { int ay = r->top + y; float *q = (float *) VIPS_REGION_ADDR( or, r->left, ay ); for( x = 0; x < r->width; x++ ) q[x] = class->point( point, r->left + x, ay ); } return( 0 ); } static int vips_point_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsPoint *point = VIPS_POINT( object ); VipsPointClass *class = VIPS_POINT_GET_CLASS( point ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_point_parent_class )->build( object ) ) return( -1 ); t[0] = vips_image_new(); vips_image_init_fields( t[0], point->width, point->height, 1, VIPS_FORMAT_FLOAT, VIPS_CODING_NONE, class->interpretation, 1.0, 1.0 ); vips_image_pipelinev( t[0], VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( t[0], NULL, vips_point_gen, NULL, point, NULL ) ) return( -1 ); in = t[0]; if( point->uchar ) { float min = class->min; float max = class->max; float range = max - min; if( vips_linear1( in, &t[2], 255.0 / range, -min * 255.0 / range, "uchar", TRUE, NULL ) ) return( -1 ); in = t[2]; /* We don't want FOURIER or whatever in this case. */ in->Type = VIPS_INTERPRETATION_MULTIBAND; } if( vips_image_write( in, create->out ) ) return( -1 ); return( 0 ); } static void vips_point_class_init( VipsPointClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "point"; vobject_class->description = _( "make a point image" ); vobject_class->build = vips_point_build; class->point = NULL; class->min = -1.0; class->max = 1.0; class->interpretation = VIPS_INTERPRETATION_MULTIBAND; VIPS_ARG_INT( class, "width", 2, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPoint, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 3, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPoint, height ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_BOOL( class, "uchar", 4, _( "Uchar" ), _( "Output an unsigned char image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsPoint, uchar ), FALSE ); } static void vips_point_init( VipsPoint *point ) { } libvips-8.9.1/libvips/create/point.h000066400000000000000000000037171361153320700174270ustar00rootroot00000000000000/* base class for point generators */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_POINT_H #define VIPS_POINT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_POINT (vips_point_get_type()) #define VIPS_POINT( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_POINT, VipsPoint )) #define VIPS_POINT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_POINT, VipsPointClass)) #define VIPS_IS_POINT( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_POINT )) #define VIPS_IS_POINT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_POINT )) #define VIPS_POINT_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_POINT, VipsPointClass )) typedef struct _VipsPoint { VipsCreate parent_instance; int width; int height; gboolean uchar; } VipsPoint; typedef struct _VipsPointClass { VipsCreateClass parent_class; float (*point)( VipsPoint *, int, int ); float min; float max; VipsInterpretation interpretation; } VipsPointClass; GType vips_point_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_POINT_H*/ libvips-8.9.1/libvips/create/sines.c000066400000000000000000000106171361153320700174070ustar00rootroot00000000000000/* creates a 2d sinewave * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/02/1990 * Modified on: * 22/7/93 JC * - externs removed * - im_outcheck() added * 1/2/11 * - gtk-doc * 13/6/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" typedef struct _VipsSines { VipsPoint parent_instance; double hfreq; double vfreq; double c; double sintheta; double costheta; } VipsSines; typedef VipsPointClass VipsSinesClass; G_DEFINE_TYPE( VipsSines, vips_sines, VIPS_TYPE_POINT ); static float vips_sines_point( VipsPoint *point, int x, int y ) { VipsSines *sines = (VipsSines *) point; return( cos( sines->c * (x * sines->costheta - y * sines->sintheta) ) ); } static int vips_sines_build( VipsObject *object ) { VipsPoint *point = VIPS_POINT( object ); VipsSines *sines = (VipsSines *) object; double theta; double factor; if( VIPS_OBJECT_CLASS( vips_sines_parent_class )->build( object ) ) return( -1 ); theta = sines->hfreq == 0.0 ? VIPS_PI / 2.0 : atan( sines->vfreq / sines->hfreq ); factor = sqrt( sines->hfreq * sines->hfreq + sines->vfreq * sines->vfreq ); sines->costheta = cos( theta ); sines->sintheta = sin( theta ); sines->c = factor * VIPS_PI * 2.0 / point->width; return( 0 ); } static void vips_sines_class_init( VipsSinesClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsPointClass *point_class = VIPS_POINT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "sines"; vobject_class->description = _( "make a 2D sine wave" ); vobject_class->build = vips_sines_build; point_class->point = vips_sines_point; VIPS_ARG_DOUBLE( class, "hfreq", 6, _( "hfreq" ), _( "Horizontal spatial frequency" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSines, hfreq ), 0.0, 10000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "vfreq", 7, _( "vfreq" ), _( "Vertical spatial frequency" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSines, vfreq ), 0.0, 10000.0, 0.5 ); } static void vips_sines_init( VipsSines *sines ) { sines->hfreq = 0.5; sines->vfreq = 0.5; } /** * vips_sines: * @out: (out): output image * @width: image size * @height: image size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @hfreq: horizontal frequency * * @vreq: vertical frequency * * @uchar: output a uchar image * * Creates a float one band image of the a sine waveform in two * dimensions. * * The number of horizontal and vertical spatial frequencies are * determined by the variables @hfreq and @vfreq respectively. The * function is useful for creating displayable sine waves and * square waves in two dimensions. * * If horfreq and verfreq are integers the resultant image is periodical * and therfore the Fourier transform does not present spikes * * Pixels are normally in [-1, +1], set @uchar to output [0, 255]. * * See also: vips_grey(), vips_xyz(). * * Returns: 0 on success, -1 on error */ int vips_sines( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "sines", ap, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/text.c000066400000000000000000000364161361153320700172570ustar00rootroot00000000000000/* vips_text * * Written on: 20/5/04 * 29/7/04 * - !HAVE_PANGOFT2 was broken, thanks Kenneth * 15/11/04 * - gah, still broken, thanks Stefan * 5/4/06 * - return an error for im_text( "" ) rather than trying to make an * empty image * 2/2/10 * - gtkdoc * 3/6/13 * - rewrite as a class * 20/9/15 leiyangyou * - add @spacing * 29/5/17 * - don't set "font" if unset, it breaks caching * 16/7/17 gargsms * - implement auto fitting of text inside bounds * 12/3/18 * - better fitting of fonts with overhanging edges, thanks Adrià * 26/4/18 fangqiao * - add fontfile option * 5/12/18 * - fitting mode could set wrong dpi * - fitting mode leaked * 16/3/19 * - add `justify` * - set Xoffset/Yoffset to ink left/top * 27/6/19 * - fitting could occasionally terminate early [levmorozov] */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #ifdef HAVE_PANGOFT2 #include #include #include "pcreate.h" typedef struct _VipsText { VipsCreate parent_instance; char *text; char *font; int width; int height; int spacing; VipsAlign align; gboolean justify; int dpi; char *fontfile; FT_Bitmap bitmap; PangoContext *context; PangoLayout *layout; } VipsText; typedef VipsCreateClass VipsTextClass; G_DEFINE_TYPE( VipsText, vips_text, VIPS_TYPE_CREATE ); /* Just have one of these and reuse it. * * This does not unref cleanly on many platforms, so we will leak horribly * unless we reuse it. Sadly this means vips_text() needs to use a lock * internally to single-thread text rendering. */ static PangoFontMap *vips_text_fontmap = NULL; /* ... single-thread the body of vips_text() with this. */ static GMutex *vips_text_lock = NULL; static void vips_text_dispose( GObject *gobject ) { VipsText *text = (VipsText *) gobject; VIPS_UNREF( text->layout ); VIPS_UNREF( text->context ); VIPS_FREE( text->bitmap.buffer ); G_OBJECT_CLASS( vips_text_parent_class )->dispose( gobject ); } static PangoLayout * text_layout_new( PangoContext *context, const char *text, const char *font, int width, int spacing, VipsAlign align, gboolean justify ) { PangoLayout *layout; PangoFontDescription *font_description; PangoAlignment palign; layout = pango_layout_new( context ); pango_layout_set_markup( layout, text, -1 ); font_description = pango_font_description_from_string( font ); pango_layout_set_font_description( layout, font_description ); pango_font_description_free( font_description ); if( width > 0 ) pango_layout_set_width( layout, width * PANGO_SCALE ); if( spacing > 0 ) pango_layout_set_spacing( layout, spacing * PANGO_SCALE ); switch( align ) { case VIPS_ALIGN_LOW: palign = PANGO_ALIGN_LEFT; break; case VIPS_ALIGN_CENTRE: palign = PANGO_ALIGN_CENTER; break; case VIPS_ALIGN_HIGH: palign = PANGO_ALIGN_RIGHT; break; default: palign = PANGO_ALIGN_LEFT; break; } pango_layout_set_alignment( layout, palign ); pango_layout_set_justify( layout, justify ); return( layout ); } static int vips_text_get_extents( VipsText *text, VipsRect *extents ) { PangoRectangle ink_rect; PangoRectangle logical_rect; pango_ft2_font_map_set_resolution( PANGO_FT2_FONT_MAP( vips_text_fontmap ), text->dpi, text->dpi ); VIPS_UNREF( text->layout ); if( !(text->layout = text_layout_new( text->context, text->text, text->font, text->width, text->spacing, text->align, text->justify )) ) return( -1 ); pango_layout_get_pixel_extents( text->layout, &ink_rect, &logical_rect ); extents->left = ink_rect.x; extents->top = ink_rect.y; extents->width = ink_rect.width; extents->height = ink_rect.height; #ifdef DEBUG printf( "vips_text_get_extents: dpi = %d\n", text->dpi ); printf( " ink left = %d, top = %d, width = %d, height = %d\n", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height ); printf( " logical left = %d, top = %d, width = %d, height = %d\n", logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height ); #endif /*DEBUG*/ return( 0 ); } /* Return -ve for extents too small, +ve for extents too large. */ static int vips_text_rect_difference( VipsRect *target, VipsRect *extents ) { if( vips_rect_includesrect( target, extents ) ) return( -1 ); else return( 1 ); } /* Adjust text->dpi to try to fit to the bounding box. */ static int vips_text_autofit( VipsText *text ) { VipsRect target; VipsRect extents; int difference; int previous_difference; int previous_dpi; int lower_dpi; int upper_dpi; /* First, repeatedly double or halve dpi until we pass the correct * value. This will give us a lower and upper bound. */ target.left = 0; target.top = 0; target.width = text->width; target.height = text->height; previous_dpi = -1; previous_difference = 0; #ifdef DEBUG printf( "vips_text_autofit: " "target left = %d, top = %d, width = %d, height = %d\n", target.left, target.top, target.width, target.height ); #endif /*DEBUG*/ for(;;) { if( vips_text_get_extents( text, &extents ) ) return( -1 ); target.left = extents.left; target.top = extents.top; difference = vips_text_rect_difference( &target, &extents ); if( previous_dpi == -1 ) { previous_dpi = text->dpi; previous_difference = difference; } /* Stop if we straddle the target. */ if( difference != previous_difference ) break; previous_difference = difference; previous_dpi = text->dpi; text->dpi = difference < 0 ? text->dpi * 2 : text->dpi / 2; /* This can happen with fixed-size fonts. */ if( text->dpi < 2 || text->dpi > 10000 ) break; } if( difference < 0 ) { /* We've been coming down. */ lower_dpi = text->dpi; upper_dpi = previous_dpi; } else { lower_dpi = previous_dpi; upper_dpi = text->dpi; } #ifdef DEBUG printf( "vips_text_autofit: lower dpi = %d, upper dpi = %d\n", lower_dpi, upper_dpi ); #endif /*DEBUG*/ /* Refine lower and upper until they are almost touching. */ while( upper_dpi - lower_dpi > 1 && difference != 0 ) { text->dpi = (upper_dpi + lower_dpi) / 2; if( vips_text_get_extents( text, &extents ) ) return( -1 ); target.left = extents.left; target.top = extents.top; difference = vips_text_rect_difference( &target, &extents ); if( difference < 0 ) lower_dpi = text->dpi; else upper_dpi = text->dpi; } /* If we've hit the target exactly and quit the loop, diff will be 0 * and we can use upper. Otherwise we are straddling the target and we * must take lower. */ if( difference == 0 ) text->dpi = upper_dpi; else text->dpi = lower_dpi; g_object_set( text, "autofit_dpi", text->dpi, NULL ); #ifdef DEBUG printf( "vips_text_autofit: final dpi = %d\n", text->dpi ); #endif /*DEBUG*/ return( 0 ); } static int vips_text_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsText *text = (VipsText *) object; VipsRect extents; int y; if( VIPS_OBJECT_CLASS( vips_text_parent_class )->build( object ) ) return( -1 ); if( !pango_parse_markup( text->text, -1, 0, NULL, NULL, NULL, NULL ) ) { vips_error( class->nickname, "%s", _( "invalid markup in text" ) ); return( -1 ); } g_mutex_lock( vips_text_lock ); if( !vips_text_fontmap ) vips_text_fontmap = pango_ft2_font_map_new(); text->context = pango_font_map_create_context( PANGO_FONT_MAP( vips_text_fontmap ) ); if( text->fontfile && !FcConfigAppFontAddFile( NULL, (const FcChar8 *) text->fontfile ) ) { vips_error( class->nickname, _( "unable to load font \"%s\"" ), text->fontfile ); g_mutex_unlock( vips_text_lock ); return( -1 ); } /* If our caller set height and not dpi, we adjust dpi until * we get a fit. */ if( vips_object_argument_isset( object, "height" ) && !vips_object_argument_isset( object, "dpi" ) ) { if( vips_text_autofit( text ) ) return( -1 ); } /* Layout. Can fail for "", for example. */ if( vips_text_get_extents( text, &extents ) ) return( -1 ); if( extents.width == 0 || extents.height == 0 ) { vips_error( class->nickname, "%s", _( "no text to render" ) ); g_mutex_unlock( vips_text_lock ); return( -1 ); } text->bitmap.width = extents.width; text->bitmap.pitch = (text->bitmap.width + 3) & ~3; text->bitmap.rows = extents.height; if( !(text->bitmap.buffer = VIPS_ARRAY( NULL, text->bitmap.pitch * text->bitmap.rows, VipsPel )) ) { g_mutex_unlock( vips_text_lock ); return( -1 ); } text->bitmap.num_grays = 256; text->bitmap.pixel_mode = ft_pixel_mode_grays; memset( text->bitmap.buffer, 0x00, text->bitmap.pitch * text->bitmap.rows ); pango_ft2_render_layout( &text->bitmap, text->layout, -extents.left, -extents.top ); g_mutex_unlock( vips_text_lock ); vips_image_init_fields( create->out, text->bitmap.width, text->bitmap.rows, 1, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_MULTIBAND, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); create->out->Xoffset = extents.left; create->out->Yoffset = extents.top; for( y = 0; y < text->bitmap.rows; y++ ) if( vips_image_write_line( create->out, y, (VipsPel *) text->bitmap.buffer + y * text->bitmap.pitch ) ) return( -1 ); return( 0 ); } static void * vips_text_make_lock( void *client ) { if( !vips_text_lock ) vips_text_lock = vips_g_mutex_new(); return( NULL ); } static void vips_text_class_init( VipsTextClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); static GOnce once = G_ONCE_INIT; VIPS_ONCE( &once, vips_text_make_lock, NULL ); gobject_class->dispose = vips_text_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "text"; vobject_class->description = _( "make a text image" ); vobject_class->build = vips_text_build; VIPS_ARG_STRING( class, "text", 4, _( "Text" ), _( "Text to render" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsText, text ), NULL ); VIPS_ARG_STRING( class, "font", 5, _( "Font" ), _( "Font to render with" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, font ), NULL ); VIPS_ARG_INT( class, "width", 6, _( "Width" ), _( "Maximum image width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, width ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "height", 7, _( "Height" ), _( "Maximum image height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, height ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_ENUM( class, "align", 8, _( "Align" ), _( "Align on the low, centre or high edge" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, align ), VIPS_TYPE_ALIGN, VIPS_ALIGN_LOW ); VIPS_ARG_BOOL( class, "justify", 9, _( "Justify" ), _( "Justify lines" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, justify ), FALSE ); VIPS_ARG_INT( class, "dpi", 9, _( "DPI" ), _( "DPI to render at" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, dpi ), 1, 1000000, 72 ); VIPS_ARG_INT( class, "autofit_dpi", 10, _( "Autofit DPI" ), _( "DPI selected by autofit" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsText, dpi ), 1, 1000000, 72 ); VIPS_ARG_INT( class, "spacing", 11, _( "Spacing" ), _( "Line spacing" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, spacing ), 0, 1000000, 0 ); VIPS_ARG_STRING( class, "fontfile", 12, _( "Font file" ), _( "Load this font file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, fontfile ), NULL ); } static void vips_text_init( VipsText *text ) { text->align = VIPS_ALIGN_LOW; text->dpi = 72; text->bitmap.buffer = NULL; VIPS_SETSTR( text->font, "sans 12" ); } #endif /*HAVE_PANGOFT2*/ /** * vips_text: * @out: (out): output image * @text: utf-8 text string to render * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @font: %gchararray, font to render with * * @fontfile: %gchararray, load this font file * * @width: %gint, image should be no wider than this many pixels * * @height: %gint, image should be no higher than this many pixels * * @align: #VipsAlign, left/centre/right alignment * * @justify: %gboolean, justify lines * * @dpi: %gint, render at this resolution * * @autofit_dpi: %gint, read out auto-fitted DPI * * @spacing: %gint, space lines by this in points * * Draw the string @text to an image. @out is a one-band 8-bit * unsigned char image, with 0 for no text and 255 for text. Values between * are used for anti-aliasing. * * @text is the text to render as a UTF-8 string. It can contain Pango markup, * for example "<i>The</i>Guardian". * * @font is the font to render with, as a fontconfig name. Examples might be * "sans 12" or perhaps "bitstream charter bold 10". * * You can specify a font to load with @fontfile. You'll need to also set the * name of the font with @font. * * @width is the number of pixels to word-wrap at. Lines of text wider than * this will be broken at word boundaries. * @align can be used to set the alignment style for multi-line * text. Note that the output image can be wider than @width if there are no * word breaks, or narrower if the lines don't break exactly at @width. * * Set @justify to turn on line justification. * * @height is the maximum number of pixels high the generated text can be. This * only takes effect when @dpi is not set, and @width is set, making a box. * In this case, vips_text() will search for a @dpi and set of line breaks * which will just fit the text into @width and @height. * * You can use @autofit_dpi to read out the DPI selected by auto fit. * * @dpi sets the resolution to render at. "sans 12" at 72 dpi draws characters * approximately 12 pixels high. * * @spacing sets the line spacing, in points. It would typically be something * like font size times 1.2. * * You can read the coordinate of the top edge of the character from `Xoffset` * / `Yoffset`. This can be helpful if you need to line up the output of * several vips_text(). * * See also: vips_bandjoin(), vips_composite(). * * Returns: 0 on success, -1 on error */ int vips_text( VipsImage **out, const char *text, ... ) { va_list ap; int result; va_start( ap, text ); result = vips_call_split( "text", ap, out, text ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/tonelut.c000066400000000000000000000177501361153320700177650ustar00rootroot00000000000000/* Build a tone curve. * * Author: John Cupitt * Written on: 18/7/1995 * 17/9/96 JC * - restrictions on Ps, Pm, Ph relaxed * - restrictions on S, M, H relaxed * 25/7/01 JC * - patched for im_extract_band() change * 11/7/04 * - generalised to im_tone_build_range() ... so you can use it for any * image, not just LabS * 26/3/10 * - cleanups * - gtkdoc * 20/9/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcreate.h" typedef struct _VipsTonelut { VipsCreate parent_instance; /* Parameters for tone curve formation. */ double Lb, Lw; double Ps, Pm, Ph; double S, M, H; /* Range we process. */ int in_max; int out_max; /* Derived values. */ double Ls, Lm, Lh; } VipsTonelut; typedef VipsCreateClass VipsTonelutClass; G_DEFINE_TYPE( VipsTonelut, vips_tonelut, VIPS_TYPE_CREATE ); /* Calculate shadow curve. */ static double shad( VipsTonelut *lut, double x ) { double x1 = (x - lut->Lb) / (lut->Ls - lut->Lb); double x2 = (x - lut->Ls) / (lut->Lm - lut->Ls); double out; if( x < lut->Lb ) out = 0; else if( x < lut->Ls ) out = 3.0 * x1 * x1 - 2.0 * x1 * x1 * x1; else if( x < lut->Lm ) out = 1.0 - 3.0 * x2 * x2 + 2.0 * x2 * x2 * x2; else out = 0; return( out ); } /* Calculate mid-tone curve. */ static double mid( VipsTonelut *lut, double x ) { double x1 = (x - lut->Ls) / (lut->Lm - lut->Ls); double x2 = (x - lut->Lm) / (lut->Lh - lut->Lm); double out; if( x < lut->Ls ) out = 0; else if( x < lut->Lm ) out = 3.0 * x1 * x1 - 2.0 * x1 * x1 * x1; else if( x < lut->Lh ) out = 1.0 - 3.0 * x2 * x2 + 2.0 * x2 * x2 * x2; else out = 0; return( out ); } /* Calculate highlight curve. */ static double high( VipsTonelut *lut, double x ) { double x1 = (x - lut->Lm) / (lut->Lh - lut->Lm); double x2 = (x - lut->Lh) / (lut->Lw - lut->Lh); double out; if( x < lut->Lm ) out = 0; else if( x < lut->Lh ) out = 3.0 * x1 * x1 - 2.0 * x1 * x1 * x1; else if( x < lut->Lw ) out = 1.0 - 3.0 * x2 * x2 + 2.0 * x2 * x2 * x2; else out = 0; return( out ); } /* Generate a point on the tone curve. Everything is 0-100. */ static double tone_curve( VipsTonelut *lut, double x ) { double out; out = x + lut->S * shad( lut, x ) + lut->M * mid( lut, x ) + lut->H * high( lut, x ); return( out ); } static int vips_tonelut_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsTonelut *lut = (VipsTonelut *) object; int i; unsigned short buf[65536]; if( VIPS_OBJECT_CLASS( vips_tonelut_parent_class )->build( object ) ) return( -1 ); g_assert( lut->in_max > 0 && lut->in_max < 65536 ); g_assert( lut->out_max > 0 && lut->out_max < 65536 ); /* Note derived params. */ lut->Ls = lut->Lb + lut->Ps * (lut->Lw - lut->Lb); lut->Lm = lut->Lb + lut->Pm * (lut->Lw - lut->Lb); lut->Lh = lut->Lb + lut->Ph * (lut->Lw - lut->Lb); /* Generate curve. */ for( i = 0; i <= lut->in_max; i++ ) { int v = (lut->out_max / 100.0) * tone_curve( lut, 100.0 * i / lut->in_max ); if( v < 0 ) v = 0; else if( v > lut->out_max ) v = lut->out_max; buf[i] = v; } /* Make the output image. */ vips_image_init_fields( create->out, lut->in_max + 1, 1, 1, VIPS_FORMAT_USHORT, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); if( vips_image_write_line( create->out, 0, (VipsPel *) buf ) ) return( -1 ); return( 0 ); } static void vips_tonelut_class_init( VipsTonelutClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "tonelut"; vobject_class->description = _( "build a look-up table" ); vobject_class->build = vips_tonelut_build; VIPS_ARG_INT( class, "in_max", 4, _( "In-max" ), _( "Size of LUT to build" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, in_max ), 1, 65535, 32767 ); VIPS_ARG_INT( class, "out_max", 5, _( "Out-max" ), _( "Maximum value in output LUT" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, out_max ), 1, 65535, 32767 ); VIPS_ARG_DOUBLE( class, "Lb", 6, _( "Black point" ), _( "Lowest value in output" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, Lb ), 0, 100, 0 ); VIPS_ARG_DOUBLE( class, "Lw", 7, _( "White point" ), _( "Highest value in output" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, Lw ), 0, 100, 100 ); VIPS_ARG_DOUBLE( class, "Ps", 8, _( "Shadow point" ), _( "Position of shadow" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, Ps ), 0, 1, 0.2 ); VIPS_ARG_DOUBLE( class, "Pm", 9, _( "Mid-tone point" ), _( "Position of mid-tones" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, Pm ), 0, 1, 0.5 ); VIPS_ARG_DOUBLE( class, "Ph", 10, _( "Highlight point" ), _( "Position of highlights" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, Ph ), 0, 1, 0.8 ); VIPS_ARG_DOUBLE( class, "S", 11, _( "Shadow adjust" ), _( "Adjust shadows by this much" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, S ), -30, 30, 0 ); VIPS_ARG_DOUBLE( class, "M", 12, _( "Mid-tone adjust" ), _( "Adjust mid-tones by this much" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, M ), -30, 30, 0 ); VIPS_ARG_DOUBLE( class, "H", 13, _( "Highlight adjust" ), _( "Adjust highlights by this much" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, H ), -30, 30, 0 ); } static void vips_tonelut_init( VipsTonelut *lut ) { lut->in_max = 32767; lut->out_max = 32767; lut->Lb = 0.0; lut->Lw = 100.0; lut->Ps = 0.2; lut->Pm = 0.5; lut->Ph = 0.8; lut->S = 0.0; lut->M = 0.0; lut->H = 0.0; } /** * vips_tonelut: * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @in_max: input range * * @out_max: output range * * @Lb: black-point [0-100] * * @Lw: white-point [0-100] * * @Ps: shadow point (eg. 0.2) * * @Pm: mid-tone point (eg. 0.5) * * @Ph: highlight point (eg. 0.8) * * @S: shadow adjustment (+/- 30) * * @M: mid-tone adjustment (+/- 30) * * @H: highlight adjustment (+/- 30) * * vips_tonelut() generates a tone curve for the adjustment of image * levels. It is mostly designed for adjusting the L* part of a LAB image in * a way suitable for print work, but you can use it for other things too. * * The curve is an unsigned 16-bit image with (@in_max + 1) entries, * each in the range [0, @out_max]. * * @Lb, @Lw are expressed as 0-100, as in LAB colour space. You * specify the scaling for the input and output images with the @in_max and * @out_max parameters. * * Returns: 0 on success, -1 on error */ int vips_tonelut( VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "tonelut", ap, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/worley.c000066400000000000000000000177251361153320700176160ustar00rootroot00000000000000/* Worley noise generator. * * 19/7/16 * * 11/8/16 * - float output */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" typedef struct _VipsWorley { VipsCreate parent_instance; int width; int height; int cell_size; int cells_across; int cells_down; /* Use this to seed this call of our rng. */ guint32 seed; } VipsWorley; typedef struct _VipsWorleyClass { VipsCreateClass parent_class; } VipsWorleyClass; G_DEFINE_TYPE( VipsWorley, vips_worley, VIPS_TYPE_CREATE ); #define MAX_FEATURES (10) typedef struct _Cell { /* Cell position, in number of cells. Scale by cell_size to get * absolute image cods. */ int cell_x; int cell_y; /* A cell contains 1 to n features. */ int n_features; /* Feature coordinates, in absolute image space. */ int feature_x[MAX_FEATURES]; int feature_y[MAX_FEATURES]; } Cell; typedef struct _Sequence { VipsWorley *worley; /* The position of the last cell we were in. Use this to avoid * regenerating cells on every pixel lookup. */ int cell_x; int cell_y; /* The 3 x 3 grid of cells around the current point. */ Cell cells[9]; } Sequence; /* Generate a 3 x 3 grid of cells around a point. */ static void vips_worley_create_cells( VipsWorley *worley, Cell cells[9], int cell_x, int cell_y ) { int x, y; for( y = 0; y < 3; y++ ) for( x = 0; x < 3; x++ ) { Cell *cell = &cells[x + y * 3]; guint32 seed; int value; int j; /* Can go <0 and >width for edges. */ cell->cell_x = cell_x + x - 1; cell->cell_y = cell_y + y - 1; seed = worley->seed; /* When we calculate the seed for this cell, we wrap * around so that our output will tesselate. */ if( cell->cell_x >= worley->cells_across ) value = 0; else if( cell->cell_x < 0 ) value = worley->cells_across - 1; else value = cell->cell_x; seed = vips__random_add( seed, value ); if( cell->cell_y >= worley->cells_down ) value = 0; else if( cell->cell_y < 0 ) value = worley->cells_down - 1; else value = cell->cell_y; seed = vips__random_add( seed, value ); /* [1, MAX_FEATURES) */ cell->n_features = (seed % (MAX_FEATURES - 1)) + 1; for( j = 0; j < cell->n_features; j++ ) { seed = vips__random( seed ); cell->feature_x[j] = cell->cell_x * worley->cell_size + seed % worley->cell_size; seed = vips__random( seed ); cell->feature_y[j] = cell->cell_y * worley->cell_size + seed % worley->cell_size; } } } static int vips_worley_stop( void *vseq, void *a, void *b ) { Sequence *seq = (Sequence *) vseq; VIPS_FREE( seq ); return( 0 ); } static void * vips_worley_start( VipsImage *out, void *a, void *b ) { VipsWorley *worley = (VipsWorley *) b; Sequence *seq; if( !(seq = VIPS_NEW( NULL, Sequence )) ) return( NULL ); seq->worley = worley; seq->cell_x = -1; seq->cell_y = -1; return( seq ); } static float vips_hypot( int x, int y ) { /* Faster than hypot() for int args. */ return( sqrt( x * x + y * y ) ); } static float vips_worley_distance( VipsWorley *worley, Cell cells[9], int x, int y ) { float distance; int i, j; distance = worley->cell_size * 1.5; for( i = 0; i < 9; i++ ) { Cell *cell = &cells[i]; for( j = 0; j < cell->n_features; j++ ) { float d = vips_hypot( x - cell->feature_x[j], y - cell->feature_y[j] ); distance = VIPS_MIN( distance, d ); } } return( distance ); } static int vips_worley_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsWorley *worley = (VipsWorley *) a; VipsRect *r = &or->valid; Sequence *seq = (Sequence *) vseq; int x, y; for( y = 0; y < r->height; y++ ) { float *q = (float *) VIPS_REGION_ADDR( or, r->left, r->top + y ); for( x = 0; x < r->width; x++ ) { int cell_x = (r->left + x) / worley->cell_size; int cell_y = (r->top + y) / worley->cell_size; if( cell_x != seq->cell_x || cell_y != seq->cell_y ) { vips_worley_create_cells( worley, seq->cells, cell_x, cell_y ); seq->cell_x = cell_x; seq->cell_y = cell_y; } q[x] = vips_worley_distance( worley, seq->cells, r->left + x, r->top + y ); } } return( 0 ); } static int vips_worley_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsWorley *worley = (VipsWorley *) object; if( VIPS_OBJECT_CLASS( vips_worley_parent_class )->build( object ) ) return( -1 ); /* Be careful if width is a multiple of cell_size. */ worley->cells_across = VIPS_ROUND_UP( worley->width, worley->cell_size ) / worley->cell_size; worley->cells_down = VIPS_ROUND_UP( worley->height, worley->cell_size ) / worley->cell_size; worley->seed = g_random_double() * 0xffffffffu; vips_image_init_fields( create->out, worley->width, worley->height, 1, VIPS_FORMAT_FLOAT, VIPS_CODING_NONE, VIPS_INTERPRETATION_MULTIBAND, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( create->out, vips_worley_start, vips_worley_gen, vips_worley_stop, worley, NULL ) ) return( -1 ); return( 0 ); } static void vips_worley_class_init( VipsWorleyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "worley"; vobject_class->description = _( "make a worley noise image" ); vobject_class->build = vips_worley_build; VIPS_ARG_INT( class, "width", 2, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsWorley, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 3, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsWorley, height ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "cell_size", 3, _( "Cell size" ), _( "Size of Worley cells" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsWorley, cell_size ), 1, VIPS_MAX_COORD, 256 ); } static void vips_worley_init( VipsWorley *worley ) { worley->cell_size = 256; } /** * vips_worley: * @out: (out): output image * @width: horizontal size * @height: vertical size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @cell_size: %gint, size of Worley cells * * Create a one-band float image of Worley noise. See: * * https://en.wikipedia.org/wiki/Worley_noise * * Use @cell_size to set the size of the cells from which the image is * constructed. The default is 256 x 256. * * If @width and @height are multiples of @cell_size, the image will tessellate. * * See also: vips_perlin(), vips_fractsurf(), vips_gaussnoise(). * * Returns: 0 on success, -1 on error */ int vips_worley( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "worley", ap, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/xyz.c000066400000000000000000000143551361153320700171230ustar00rootroot00000000000000/* make an xy index image * * 21/4/04 * - from im_grey * 1/2/11 * - gtk-doc * 31/10/11 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pcreate.h" typedef struct _VipsXyz { VipsCreate parent_instance; int width; int height; int csize; int dsize; int esize; int dimensions; } VipsXyz; typedef VipsCreateClass VipsXyzClass; G_DEFINE_TYPE( VipsXyz, vips_xyz, VIPS_TYPE_CREATE ); static int vips_xyz_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsXyz *xyz = (VipsXyz *) a; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int ri = VIPS_RECT_RIGHT( r ); int bo = VIPS_RECT_BOTTOM( r ); int x, y, i; for( y = to; y < bo; y++ ) { unsigned int *q = (unsigned int *) VIPS_REGION_ADDR( or, le, y ); unsigned int dims[5]; int r; int h; h = xyz->height * xyz->csize * xyz->dsize; dims[4] = y / h; r = y % h; h /= xyz->dsize; dims[3] = r / h; r %= h; h /= xyz->csize; dims[2] = r / h; r %= h; dims[1] = r; for( x = le; x < ri; x++ ) { dims[0] = x; for( i = 0; i < xyz->dimensions; i++ ) q[i] = dims[i]; q += xyz->dimensions; } } return( 0 ); } static int vips_xyz_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsXyz *xyz = (VipsXyz *) object; double d; int ysize; if( VIPS_OBJECT_CLASS( vips_xyz_parent_class )->build( object ) ) return( -1 ); if( (vips_object_argument_isset( object, "dsize" ) && !vips_object_argument_isset( object, "csize" )) || (vips_object_argument_isset( object, "esize" ) && !vips_object_argument_isset( object, "dsize" )) ) { vips_error( class->nickname, "%s", _( "lower dimensions not set" ) ); return( -1 ); } if( vips_object_argument_isset( object, "csize" ) ) { xyz->dimensions += 1; if( vips_object_argument_isset( object, "dsize" ) ) { xyz->dimensions += 1; if( vips_object_argument_isset( object, "esize" ) ) xyz->dimensions += 1; } } d = (double) xyz->height * xyz->csize * xyz->dsize * xyz->esize; if( d > INT_MAX ) { vips_error( class->nickname, "%s", _( "image too large" ) ); return( -1 ); } ysize = d; vips_image_init_fields( create->out, xyz->width, ysize, xyz->dimensions, VIPS_FORMAT_UINT, VIPS_CODING_NONE, VIPS_INTERPRETATION_MULTIBAND, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( create->out, NULL, vips_xyz_gen, NULL, xyz, NULL ) ) return( -1 ); return( 0 ); } static void vips_xyz_class_init( VipsXyzClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_xyz_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "xyz"; vobject_class->description = _( "make an image where pixel values are coordinates" ); vobject_class->build = vips_xyz_build; VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsXyz, width ), 1, VIPS_MAX_COORD, 64 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsXyz, height ), 1, VIPS_MAX_COORD, 64 ); VIPS_ARG_INT( class, "csize", 6, _( "csize" ), _( "Size of third dimension" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsXyz, csize ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "dsize", 7, _( "dsize" ), _( "Size of fourth dimension" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsXyz, dsize ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "esize", 8, _( "esize" ), _( "Size of fifth dimension" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsXyz, esize ), 1, VIPS_MAX_COORD, 1 ); } static void vips_xyz_init( VipsXyz *xyz ) { xyz->width = 64; xyz->height = 64; xyz->dimensions = 2; xyz->csize = 1; xyz->dsize = 1; xyz->esize = 1; } /** * vips_xyz: * @out: (out): output image * @width: horizontal size * @height: vertical size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @csize: size for third dimension * * @dsize: size for fourth dimension * * @esize: size for fifth dimension * * Create a two-band uint32 image where the elements in the first band have the * value of their x coordinate and elements in the second band have their y * coordinate. * * You can make any image where the value of a pixel is a function of its (x, * y) coordinate by combining this operator with the arithmetic operators. * * Set @csize, @dsize, @esize to generate higher dimensions and add more * bands. The extra dimensions are placed down the vertical axis. Use * vips_grid() to change the layout. * * See also: vips_grey(), vips_grid(), vips_identity(). * * Returns: 0 on success, -1 on error */ int vips_xyz( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "xyz", ap, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/create/zone.c000066400000000000000000000054451361153320700172440ustar00rootroot00000000000000/* square zone plate of size * * N. Dessipris 01/02/1991 * * 22/7/93 JC * - externs removed * - im_outcheck() added * 30/8/95 JC * - modernized * - memory leaks fixed * - split into im_zone() and im_fzone() * 1/2/11 * - gtk-doc * 13/6/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" typedef VipsPoint VipsZone; typedef VipsPointClass VipsZoneClass; G_DEFINE_TYPE( VipsZone, vips_zone, VIPS_TYPE_POINT ); static float vips_zone_point( VipsPoint *point, int x, int y ) { VipsZone *zone = (VipsZone *) point; int hwidth = point->width / 2; int hheight = point->height / 2; int h2 = (x - hwidth) * (x - hwidth); int v2 = (y - hheight) * (y - hheight); double c = VIPS_PI / zone->width; return( cos( c * (v2 + h2) ) ); } static void vips_zone_class_init( VipsZoneClass *class ) { VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsPointClass *point_class = VIPS_POINT_CLASS( class ); vobject_class->nickname = "zone"; vobject_class->description = _( "make a zone plate" ); point_class->point = vips_zone_point; } static void vips_zone_init( VipsZone *zone ) { } /** * vips_zone: * @out: (out): output image * @width: image size * @height: image size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @uchar: output a uchar image * * Create a one-band image of a zone plate. * * Pixels are normally in [-1, +1], set @uchar to output [0, 255]. * * See also: vips_eye(), vips_xyz(). * * Returns: 0 on success, -1 on error */ int vips_zone( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "zone", ap, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/deprecated/000077500000000000000000000000001361153320700167525ustar00rootroot00000000000000libvips-8.9.1/libvips/deprecated/Makefile.am000066400000000000000000000031671361153320700210150ustar00rootroot00000000000000noinst_LTLIBRARIES = libdeprecated.la libdeprecated_la_SOURCES = \ video_dispatch.c \ im_video_test.c \ cimg_dispatch.c \ inplace_dispatch.c \ tone.c \ freq_dispatch.c \ im_linreg.c \ im_point_bilinear.c \ resample_dispatch.c \ im_openslide2vips.c \ im_nifti2vips.c \ im_lab_morph.c \ deprecated_dispatch.c \ mosaicing_dispatch.c \ im_maxpos_subpel.c \ im_align_bands.c \ morph_dispatch.c \ colour_dispatch.c \ convol_dispatch.c \ im_zerox.c \ arith_dispatch.c \ hist_dispatch.c \ other_dispatch.c \ im_maxpos_avg.c \ lazy.c \ im_dif_std.c \ im_simcontr.c \ im_spatres.c \ im_stretch3.c \ im_clamp.c \ cooc_funcs.c \ glds_funcs.c \ im_fav4.c \ im_benchmark.c \ im_gadd.c \ im_gaddim.c \ im_gradcor.c \ im_cmulnorm.c \ im_printlines.c \ im_convsub.c \ im_line.c \ im_measure.c \ im_resize_linear.c \ im_debugim.c \ im_gfadd.c \ im_setbox.c \ rename.c \ vips7compat.c \ dispatch_types.c \ package.c \ im_bernd.c \ im_thresh.c \ im_slice.c \ im_print.c \ im_litecor.c \ im_mask2vips.c \ im_vips2mask.c \ rotmask.c \ rw_mask.c \ im_matcat.c \ im_matinv.c \ im_matmul.c \ im_mattrn.c \ matalloc.c \ mask_dispatch.c \ fits.c \ format.c \ format_dispatch.c \ im_analyze2vips.c \ im_csv2vips.c \ im_exr2vips.c \ im_jpeg2vips.c \ im_magick2vips.c \ im_png2vips.c \ im_webp2vips.c \ im_ppm2vips.c \ im_tiff2vips.c \ im_vips2csv.c \ im_vips2jpeg.c \ im_vips2png.c \ im_vips2webp.c \ im_vips2ppm.c \ im_vips2tiff.c \ conver_dispatch.c \ im_vips2dz.c \ im_freq_mask.c \ matlab.c \ radiance.c \ raw.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ libvips-8.9.1/libvips/deprecated/arith_dispatch.c000066400000000000000000000671741361153320700221230ustar00rootroot00000000000000/* Function dispatch tables for arithmetic. * * J. Cupitt, 8/4/93. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Image in, number out. */ static im_arg_desc image_in_num_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_DOUBLE( "value" ) }; /* Args for im_recomb. */ static im_arg_desc recomb_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "matrix" ) }; /* Call im_recomb via arg vector. */ static int recomb_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_recomb( argv[0], argv[1], mo->mask ) ); } /* Description of im_recomb. */ static im_function recomb_desc = { "im_recomb", /* Name */ "linear recombination with mask", IM_FN_PIO, /* Flags */ recomb_vec, /* Dispatch function */ IM_NUMBER( recomb_args ), /* Size of arg list */ recomb_args /* Arg list */ }; /* Call im_abs via arg vector. */ static int abs_vec( im_object *argv ) { return( im_abs( argv[0], argv[1] ) ); } /* Description of im_abs. */ static im_function abs_desc = { "im_abs", /* Name */ N_( "absolute value" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ abs_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_add via arg vector. */ static int add_vec( im_object *argv ) { return( im_add( argv[0], argv[1], argv[2] ) ); } /* Description of im_add. */ static im_function add_desc = { "im_add", /* Name */ N_( "add two images" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ add_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_avg via arg vector. */ static int avg_vec( im_object *argv ) { double f; if( im_avg( argv[0], &f ) ) return( -1 ); *((double *) argv[1]) = f; return( 0 ); } /* Description of im_avg. */ static im_function avg_desc = { "im_avg", /* Name */ N_( "average value of image" ), /* Description */ IM_FN_PIO, /* Flags */ avg_vec, /* Dispatch function */ IM_NUMBER( image_in_num_out ), /* Size of arg list */ image_in_num_out /* Arg list */ }; /* Args to im_point. */ static im_arg_desc point_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_INTERPOLATE( "interpolate" ), IM_INPUT_DOUBLE( "x" ), IM_INPUT_DOUBLE( "y" ), IM_INPUT_INT( "band" ), IM_OUTPUT_DOUBLE( "out" ) }; /* Call im_point via arg vector. */ static int point_vec( im_object *argv ) { VipsInterpolate *interpolate = VIPS_INTERPOLATE( argv[1] ); double x = *((double *) argv[2]); double y = *((double *) argv[3]); int band = *((int *) argv[4]); return( im_point( argv[0], interpolate, x, y, band, argv[5] ) ); } /* Description of im_point. */ static im_function point_desc = { "im_point", "interpolate value at single point", IM_FN_PIO, point_vec, IM_NUMBER( point_args ), point_args }; /* Args to im_point_bilinear. */ static im_arg_desc point_bilinear_args[] = { IM_INPUT_IMAGE ("in"), IM_INPUT_DOUBLE("x"), IM_INPUT_DOUBLE("y"), IM_INPUT_INT("band"), IM_OUTPUT_DOUBLE("val") }; /* Call im_point_bilinear via arg vector. */ static int point_bilinear_vec( im_object *argv ) { return im_point_bilinear( argv[0], *(double*)argv[1], *(double*)argv[2], *(int*)argv[3], argv[4] ); } /* Description of im_point_bilinear. */ static im_function point_bilinear_desc = { "im_point_bilinear", "interpolate value at single point, linearly", IM_FN_PIO, point_bilinear_vec, IM_NUMBER( point_bilinear_args ), point_bilinear_args }; /* Call im_deviate via arg vector. */ static int deviate_vec( im_object *argv ) { double f; if( im_deviate( argv[0], &f ) ) return( -1 ); *((double *) argv[1]) = f; return( 0 ); } /* Description of im_deviate. */ static im_function deviate_desc = { "im_deviate", /* Name */ N_( "standard deviation of image" ), /* Description */ IM_FN_PIO, /* Flags */ deviate_vec, /* Dispatch function */ IM_NUMBER( image_in_num_out ), /* Size of arg list */ image_in_num_out /* Arg list */ }; /* Call im_exp10tra via arg vector. */ static int exp10tra_vec( im_object *argv ) { return( im_exp10tra( argv[0], argv[1] ) ); } /* Description of im_exp10tra. */ static im_function exp10tra_desc = { "im_exp10tra", /* Name */ N_( "10^pel of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ exp10tra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_exptra via arg vector. */ static int exptra_vec( im_object *argv ) { return( im_exptra( argv[0], argv[1] ) ); } /* Description of im_exptra. */ static im_function exptra_desc = { "im_exptra", /* Name */ N_( "e^pel of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ exptra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args for im_powtra(). */ static im_arg_desc powtra_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "x" ) }; /* Call im_expntra via arg vector. */ static int expntra_vec( im_object *argv ) { double a = *((double *) argv[2]); return( im_expntra( argv[0], argv[1], a ) ); } /* Description of im_expntra. */ static im_function expntra_desc = { "im_expntra", /* Name */ N_( "x^pel of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ expntra_vec, /* Dispatch function */ IM_NUMBER( powtra_args ), /* Size of arg list */ powtra_args /* Arg list */ }; /* Args for im_expntra_vec(). */ static im_arg_desc expntra_vec_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLEVEC( "v" ) }; /* Call im_expntra_vec() via arg vector. */ static int expntra_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_expntra_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_expntra_vec. */ static im_function expntra_vec_desc = { "im_expntra_vec", /* Name */ N_( "[x,y,z]^pel of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ expntra_vec_vec, /* Dispatch function */ IM_NUMBER( expntra_vec_args ), /* Size of arg list */ expntra_vec_args /* Arg list */ }; /* Call im_divide via arg vector. */ static int divide_vec( im_object *argv ) { return( im_divide( argv[0], argv[1], argv[2] ) ); } /* Description of im_divide. */ static im_function divide_desc = { "im_divide", /* Name */ N_( "divide two images" ), IM_FN_PIO, /* Flags */ divide_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_invert via arg vector. */ static int invert_vec( im_object *argv ) { return( im_invert( argv[0], argv[1] ) ); } /* Description of im_invert. */ static im_function invert_desc = { "im_invert", /* Name */ N_( "photographic negative" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ invert_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args for im_lintra(). */ static im_arg_desc lintra_args[] = { IM_INPUT_DOUBLE( "a" ), IM_INPUT_IMAGE( "in" ), IM_INPUT_DOUBLE( "b" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_lintra() via arg vector. */ static int lintra_vec( im_object *argv ) { double a = *((double *) argv[0]); double b = *((double *) argv[2]); return( im_lintra( a, argv[1], b, argv[3] ) ); } /* Description of im_lintra(). */ static im_function lintra_desc = { "im_lintra", /* Name */ N_( "calculate a*in + b = outfile" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ lintra_vec, /* Dispatch function */ IM_NUMBER( lintra_args ), /* Size of arg list */ lintra_args /* Arg list */ }; /* Args for im_lintra_vec(). */ static im_arg_desc lintra_vec_args[] = { IM_INPUT_DOUBLEVEC( "a" ), IM_INPUT_IMAGE( "in" ), IM_INPUT_DOUBLEVEC( "b" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_lintra_vec() via arg vector. */ static int lintra_vec_vec( im_object *argv ) { im_doublevec_object *dva = (im_doublevec_object *) argv[0]; im_doublevec_object *dvb = (im_doublevec_object *) argv[2]; if( dva->n != dvb->n ) { im_error( "im_lintra_vec", "%s", _( "vectors not equal length" ) ); return( -1 ); } return( im_lintra_vec( dva->n, dva->vec, argv[1], dvb->vec, argv[3] ) ); } /* Description of im_lintra_vec(). */ static im_function lintra_vec_desc = { "im_lintra_vec", /* Name */ N_( "calculate a*in + b -> out, a and b vectors" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ lintra_vec_vec, /* Dispatch function */ IM_NUMBER( lintra_vec_args ), /* Size of arg list */ lintra_vec_args /* Arg list */ }; /* Call im_log10tra via arg vector. */ static int log10tra_vec( im_object *argv ) { return( im_log10tra( argv[0], argv[1] ) ); } /* Description of im_log10tra. */ static im_function log10tra_desc = { "im_log10tra", /* Name */ N_( "log10 of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ log10tra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_logtra via arg vector. */ static int logtra_vec( im_object *argv ) { return( im_logtra( argv[0], argv[1] ) ); } /* Description of im_logtra. */ static im_function logtra_desc = { "im_logtra", /* Name */ N_( "ln of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ logtra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_tantra via arg vector. */ static int tantra_vec( im_object *argv ) { return( im_tantra( argv[0], argv[1] ) ); } /* Description of im_tantra. */ static im_function tantra_desc = { "im_tantra", /* Name */ N_( "tan of image (angles in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ tantra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_atantra via arg vector. */ static int atantra_vec( im_object *argv ) { return( im_atantra( argv[0], argv[1] ) ); } /* Description of im_atantra. */ static im_function atantra_desc = { "im_atantra", /* Name */ N_( "atan of image (result in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ atantra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_costra via arg vector. */ static int costra_vec( im_object *argv ) { return( im_costra( argv[0], argv[1] ) ); } /* Description of im_costra. */ static im_function costra_desc = { "im_costra", /* Name */ N_( "cos of image (angles in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ costra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_acostra via arg vector. */ static int acostra_vec( im_object *argv ) { return( im_acostra( argv[0], argv[1] ) ); } /* Description of im_acostra. */ static im_function acostra_desc = { "im_acostra", /* Name */ N_( "acos of image (result in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ acostra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_ceil via arg vector. */ static int ceil_vec( im_object *argv ) { return( im_ceil( argv[0], argv[1] ) ); } /* Description of im_ceil. */ static im_function ceil_desc = { "im_ceil", /* Name */ N_( "round to smallest integer value not less than" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ ceil_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_floor via arg vector. */ static int floor_vec( im_object *argv ) { return( im_floor( argv[0], argv[1] ) ); } /* Description of im_floor. */ static im_function floor_desc = { "im_floor", /* Name */ N_( "round to largest integer value not greater than" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ floor_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_rint via arg vector. */ static int rint_vec( im_object *argv ) { return( im_rint( argv[0], argv[1] ) ); } /* Description of im_rint. */ static im_function rint_desc = { "im_rint", /* Name */ N_( "round to nearest integer value" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ rint_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_sintra via arg vector. */ static int sintra_vec( im_object *argv ) { return( im_sintra( argv[0], argv[1] ) ); } /* Description of im_sintra. */ static im_function sintra_desc = { "im_sintra", /* Name */ N_( "sin of image (angles in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ sintra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_bandmean via arg vector. */ static int bandmean_vec( im_object *argv ) { return( im_bandmean( argv[0], argv[1] ) ); } /* Description of im_bandmean. */ static im_function bandmean_desc = { "im_bandmean", /* Name */ N_( "average image bands" ), IM_FN_PIO, /* Flags */ bandmean_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_sign via arg vector. */ static int sign_vec( im_object *argv ) { return( im_sign( argv[0], argv[1] ) ); } /* Description of im_sign. */ static im_function sign_desc = { "im_sign", /* Name */ N_( "unit vector in direction of value" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ sign_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_asintra via arg vector. */ static int asintra_vec( im_object *argv ) { return( im_asintra( argv[0], argv[1] ) ); } /* Description of im_asintra. */ static im_function asintra_desc = { "im_asintra", /* Name */ N_( "asin of image (result in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ asintra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_max via arg vector. */ static int max_vec( im_object *argv ) { double f; if( im_max( argv[0], &f ) ) return( -1 ); *((double *) argv[1]) = f; return( 0 ); } /* Description of im_max. */ static im_function max_desc = { "im_max", /* Name */ N_( "maximum value of image" ), /* Description */ IM_FN_PIO, /* Flags */ max_vec, /* Dispatch function */ IM_NUMBER( image_in_num_out ), /* Size of arg list */ image_in_num_out /* Arg list */ }; /* Args for maxpos (and minpos). */ static im_arg_desc maxpos_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_COMPLEX( "position" ) }; /* Call im_maxpos via arg vector. */ static int maxpos_vec( im_object *argv ) { double f; int x, y; if( im_maxpos( argv[0], &x, &y, &f ) ) return( -1 ); ((double *) argv[1])[0] = x; ((double *) argv[1])[1] = y; return( 0 ); } /* Description of im_maxpos. */ static im_function maxpos_desc = { "im_maxpos", /* Name */ N_( "position of maximum value of image" ), 0, /* Flags */ maxpos_vec, /* Dispatch function */ IM_NUMBER( maxpos_args ), /* Size of arg list */ maxpos_args /* Arg list */ }; /* Args to im_maxpos_avg. */ static im_arg_desc maxpos_avg_args[] = { IM_INPUT_IMAGE ("in"), IM_OUTPUT_DOUBLE("x"), IM_OUTPUT_DOUBLE("y"), IM_OUTPUT_DOUBLE("out") }; /* Call im_maxpos_avg via arg vector. */ static int maxpos_avg_vec( im_object *argv ) { return im_maxpos_avg( argv[0], argv[1], argv[2], argv[3] ); } /* Description of im_maxpos_avg. */ static im_function maxpos_avg_desc = { "im_maxpos_avg", N_( "position of maximum value of image, averaging in case of draw" ), IM_FN_PIO, maxpos_avg_vec, IM_NUMBER( maxpos_avg_args ), maxpos_avg_args }; /* Args to im_min/maxpos_vec. */ static im_arg_desc maxpos_vec_args[] = { IM_INPUT_IMAGE ("in"), IM_INPUT_INT ("n"), IM_OUTPUT_INTVEC("xes"), IM_OUTPUT_INTVEC("yes"), IM_OUTPUT_DOUBLEVEC("maxima") }; /* Call im_maxpos_vec via arg vector. */ static int maxpos_vec_vec( im_object *argv ) { int n = *((int *) argv[1]); im_intvec_object *xes = argv[2]; im_intvec_object *yes = argv[3]; im_doublevec_object *maxima = argv[4]; xes->vec = IM_ARRAY( NULL, n, int ); xes->n = n; yes->vec = IM_ARRAY( NULL, n, int ); yes->n = n; maxima->vec = IM_ARRAY( NULL, n, double ); maxima->n = n; if( !xes->vec || !yes->vec || !maxima->vec || im_maxpos_vec( argv[0], xes->vec, yes->vec, maxima->vec, n ) ) return -1; return 0; } /* Description of im_maxpos_vec. */ static im_function maxpos_vec_desc = { "im_maxpos_vec", N_( "position and value of n maxima of image" ), IM_FN_PIO, maxpos_vec_vec, IM_NUMBER( maxpos_vec_args ), maxpos_vec_args }; /* Call im_minpos_vec via arg vector. */ static int minpos_vec_vec( im_object *argv ) { int n = *((int *) argv[1]); im_intvec_object *xes = argv[2]; im_intvec_object *yes = argv[3]; im_doublevec_object *minima = argv[4]; xes->vec = IM_ARRAY( NULL, n, int ); xes->n = n; yes->vec = IM_ARRAY( NULL, n, int ); yes->n = n; minima->vec = IM_ARRAY( NULL, n, double ); minima->n = n; if( !xes->vec || !yes->vec || !minima->vec || im_minpos_vec( argv[0], xes->vec, yes->vec, minima->vec, n ) ) return -1; return 0; } /* Description of im_minpos_vec. */ static im_function minpos_vec_desc = { "im_minpos_vec", N_( "position and value of n minima of image" ), IM_FN_PIO, minpos_vec_vec, IM_NUMBER( maxpos_vec_args ), maxpos_vec_args }; /* Args for measure. */ static im_arg_desc measure_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_DMASK( "mask" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "w" ), IM_INPUT_INT( "h" ), IM_INPUT_INT( "h_patches" ), IM_INPUT_INT( "v_patches" ) }; /* Call im_measure via arg vector. */ static int measure_vec( im_object *argv ) { im_mask_object *mo = argv[1]; int x = *((int *) argv[2]); int y = *((int *) argv[3]); int w = *((int *) argv[4]); int h = *((int *) argv[5]); int u = *((int *) argv[6]); int v = *((int *) argv[7]); if( !(mo->mask = im_measure_area( argv[0], x, y, w, h, u, v, NULL, 0, mo->name )) ) { return( -1 ); } return( 0 ); } /* Description of im_measure. */ static im_function measure_desc = { "im_measure", /* Name */ N_( "measure averages of a grid of patches" ), IM_FN_PIO, /* Flags */ measure_vec, /* Dispatch function */ IM_NUMBER( measure_args ), /* Size of arg list */ measure_args /* Arg list */ }; /* Call im_min via arg vector. */ static int min_vec( im_object *argv ) { double f; if( im_min( argv[0], &f ) ) return( -1 ); *((double *) argv[1]) = f; return( 0 ); } /* Description of im_min. */ static im_function min_desc = { "im_min", /* Name */ N_( "minimum value of image" ), /* Description */ IM_FN_PIO, /* Flags */ min_vec, /* Dispatch function */ IM_NUMBER( image_in_num_out ), /* Size of arg list */ image_in_num_out /* Arg list */ }; /* Call im_minpos via arg vector. */ static int minpos_vec( im_object *argv ) { double f; int x, y; if( im_minpos( argv[0], &x, &y, &f ) ) return( -1 ); ((double *) argv[1])[0] = x; ((double *) argv[1])[1] = y; return( 0 ); } /* Description of im_minpos. */ static im_function minpos_desc = { "im_minpos", /* Name */ N_( "position of minimum value of image" ), 0, /* Flags */ minpos_vec, /* Dispatch function */ IM_NUMBER( maxpos_args ), /* Size of arg list */ maxpos_args /* Arg list */ }; /* Call im_remainder via arg vector. */ static int remainder_vec( im_object *argv ) { return( im_remainder( argv[0], argv[1], argv[2] ) ); } /* Description of im_remainder. */ static im_function remainder_desc = { "im_remainder", /* Name */ N_( "remainder after integer division" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ remainder_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_remainderconst via arg vector. */ static int remainderconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_remainderconst( argv[0], argv[1], c ) ); } /* Args for im_remainderconst(). */ static im_arg_desc remainderconst_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "x" ) }; /* Description of im_remainderconst. */ static im_function remainderconst_desc = { "im_remainderconst", /* Name */ N_( "remainder after integer division by a constant" ),/* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ remainderconst_vec, /* Dispatch function */ IM_NUMBER( remainderconst_args ),/* Size of arg list */ remainderconst_args /* Arg list */ }; /* Call im_remainder_vec via arg vector. */ static int remainder_vec_vec( im_object *argv ) { im_doublevec_object *dv = (im_doublevec_object *) argv[2]; return( im_remainder_vec( argv[0], argv[1], dv->n, dv->vec ) ); } /* Args for im_remainder_vec(). */ static im_arg_desc remainder_vec_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLEVEC( "x" ) }; /* Description of im_remainder_vec. */ static im_function remainder_vec_desc = { "im_remainder_vec", /* Name */ N_( "remainder after integer division by a vector of constants" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ remainder_vec_vec, /* Dispatch function */ IM_NUMBER( remainder_vec_args ),/* Size of arg list */ remainder_vec_args /* Arg list */ }; /* Call im_multiply via arg vector. */ static int multiply_vec( im_object *argv ) { return( im_multiply( argv[0], argv[1], argv[2] ) ); } /* Description of im_multiply. */ static im_function multiply_desc = { "im_multiply", /* Name */ N_( "multiply two images" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ multiply_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_powtra() via arg vector. */ static int powtra_vec( im_object *argv ) { double a = *((double *) argv[2]); return( im_powtra( argv[0], argv[1], a ) ); } /* Description of im_powtra(). */ static im_function powtra_desc = { "im_powtra", /* Name */ N_( "pel^x of image" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ powtra_vec, /* Dispatch function */ IM_NUMBER( powtra_args ), /* Size of arg list */ powtra_args /* Arg list */ }; /* Call im_powtra_vec() via arg vector. */ static int powtra_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_powtra_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_powtra_vec(). */ static im_function powtra_vec_desc = { "im_powtra_vec", /* Name */ N_( "pel^[x,y,z] of image" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ powtra_vec_vec, /* Dispatch function */ IM_NUMBER( expntra_vec_args ), /* Size of arg list */ expntra_vec_args /* Arg list */ }; /* Args for im_stats. */ static im_arg_desc stats_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_DMASK_STATS( "statistics" ) }; /* Call im_stats() via arg vector. */ static int stats_vec( im_object *argv ) { im_mask_object *mo = argv[1]; if( !(mo->mask = im_stats( argv[0] )) ) return( -1 ); return( 0 ); } /* Description of im_stats(). */ static im_function stats_desc = { "im_stats", /* Name */ N_( "many image statistics in one pass" ), IM_FN_PIO, /* Flags */ stats_vec, /* Dispatch function */ IM_NUMBER( stats_args ), /* Size of arg list */ stats_args /* Arg list */ }; /* Call im_subtract via arg vector. */ static int subtract_vec( im_object *argv ) { return( im_subtract( argv[0], argv[1], argv[2] ) ); } /* Description of im_subtract. */ static im_function subtract_desc = { "im_subtract", /* Name */ N_( "subtract two images" ), /* Description */ IM_FN_PIO, /* Flags */ subtract_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Args for im_linreg. */ static im_arg_desc linreg_args[] = { IM_INPUT_IMAGEVEC( "ins" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLEVEC( "xs" ) }; /* Call im_linreg() via arg vector. */ static int linreg_vec( im_object *argv ) { #define FUNCTION_NAME "im_linreg_vec" im_imagevec_object *ins_vec= (im_imagevec_object*) argv[0]; im_doublevec_object *xs_vec= (im_doublevec_object*) argv[2]; IMAGE *out= (IMAGE*) argv[1]; IMAGE **ins= IM_ARRAY( out, ins_vec-> n + 1, IMAGE* ); int i; if( ! ins ) return -1; for( i= 0; i < ins_vec-> n; ++i ) ins[ i ]= ins_vec-> vec[ i ]; ins[ ins_vec-> n ]= NULL; if( xs_vec-> n != ins_vec-> n ){ im_error( FUNCTION_NAME, "image vector and x vector differ in length" ); return -1; } return im_linreg( ins, out, xs_vec-> vec ); #undef FUNCTION_NAME } /* Description of im_linreg(). */ static im_function linreg_desc = { "im_linreg", /* Name */ N_( "pixelwise linear regression" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ linreg_vec, /* Dispatch function */ IM_NUMBER( linreg_args ), /* Size of arg list */ linreg_args /* Arg list */ }; /* Call im_cross_phase via arg vector. */ static int cross_phase_vec( im_object *argv ) { return( im_cross_phase( argv[0], argv[1], argv[2] ) ); } /* Description of im_cross_phase. */ static im_function cross_phase_desc = { "im_cross_phase", /* Name */ N_( "phase of cross power spectrum of two complex images" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ cross_phase_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Package up all these functions. */ static im_function *arith_list[] = { &abs_desc, &acostra_desc, &add_desc, &asintra_desc, &atantra_desc, &avg_desc, &point_desc, &point_bilinear_desc, &bandmean_desc, &ceil_desc, &costra_desc, &cross_phase_desc, &deviate_desc, ÷_desc, &exp10tra_desc, &expntra_desc, &expntra_vec_desc, &exptra_desc, &floor_desc, &invert_desc, &lintra_desc, &linreg_desc, &lintra_vec_desc, &log10tra_desc, &logtra_desc, &max_desc, &maxpos_desc, &maxpos_avg_desc, &maxpos_vec_desc, &measure_desc, &min_desc, &minpos_desc, &minpos_vec_desc, &multiply_desc, &powtra_desc, &powtra_vec_desc, &recomb_desc, &remainder_desc, &remainderconst_desc, &remainder_vec_desc, &rint_desc, &sign_desc, &sintra_desc, &stats_desc, &subtract_desc, &tantra_desc }; /* Package of functions. */ im_package im__arithmetic = { "arithmetic", IM_NUMBER( arith_list ), arith_list }; libvips-8.9.1/libvips/deprecated/cimg_dispatch.c000066400000000000000000000110041361153320700217100ustar00rootroot00000000000000/* Function dispatch tables for cimg wrappers. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include static int greyc_vec( im_object *argv ) { IMAGE *src = (IMAGE *) argv[0]; IMAGE *dst = (IMAGE *) argv[1]; int iterations = *((int *) argv[2]); double amplitude = *((double *) argv[3]); double sharpness = *((double *) argv[4]); double anisotropy = *((double *) argv[5]); double alpha = *((double *) argv[6]); double sigma = *((double *) argv[7]); double dl = *((double *) argv[8]); double da = *((double *) argv[9]); double gauss_prec = *((double *) argv[10]); int interpolation = *((int *) argv[11]); int fast_approx = *((int *) argv[12]); if( im_greyc_mask( src, dst, NULL, iterations, amplitude, sharpness, anisotropy, alpha, sigma, dl, da, gauss_prec, interpolation, fast_approx ) ) return( -1 ); return( 0 ); } static im_arg_desc greyc_arg_types[] = { IM_INPUT_IMAGE( "src" ), IM_OUTPUT_IMAGE( "dst" ), IM_INPUT_INT( "iterations" ), IM_INPUT_DOUBLE( "amplitude" ), IM_INPUT_DOUBLE( "sharpness" ), IM_INPUT_DOUBLE( "anisotropy" ), IM_INPUT_DOUBLE( "alpha" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "dl" ), IM_INPUT_DOUBLE( "da" ), IM_INPUT_DOUBLE( "gauss_prec" ), IM_INPUT_INT( "interpolation" ), IM_INPUT_INT( "fast_approx" ) }; static im_function greyc_desc = { "im_greyc", /* Name */ "noise-removing filter", /* Description */ (im_fn_flags) (IM_FN_TRANSFORM | IM_FN_PIO),/* Flags */ greyc_vec, /* Dispatch function */ IM_NUMBER( greyc_arg_types ), /* Size of arg list */ greyc_arg_types /* Arg list */ }; static int greyc_mask_vec( im_object *argv ) { IMAGE *src = (IMAGE *) argv[0]; IMAGE *dst = (IMAGE *) argv[1]; IMAGE *mask = (IMAGE *) argv[2]; int iterations = *((int *) argv[3]); double amplitude = *((double *) argv[4]); double sharpness = *((double *) argv[5]); double anisotropy = *((double *) argv[6]); double alpha = *((double *) argv[7]); double sigma = *((double *) argv[8]); double dl = *((double *) argv[9]); double da = *((double *) argv[10]); double gauss_prec = *((double *) argv[11]); int interpolation = *((int *) argv[12]); int fast_approx = *((int *) argv[13]); if( im_greyc_mask( src, dst, mask, iterations, amplitude, sharpness, anisotropy, alpha, sigma, dl, da, gauss_prec, interpolation, fast_approx ) ) return( -1 ); return( 0 ); } static im_arg_desc greyc_mask_arg_types[] = { IM_INPUT_IMAGE( "src" ), IM_OUTPUT_IMAGE( "dst" ), IM_INPUT_IMAGE( "mask" ), IM_INPUT_INT( "iterations" ), IM_INPUT_DOUBLE( "amplitude" ), IM_INPUT_DOUBLE( "sharpness" ), IM_INPUT_DOUBLE( "anisotropy" ), IM_INPUT_DOUBLE( "alpha" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "dl" ), IM_INPUT_DOUBLE( "da" ), IM_INPUT_DOUBLE( "gauss_prec" ), IM_INPUT_INT( "interpolation" ), IM_INPUT_INT( "fast_approx" ) }; static im_function greyc_mask_desc = { "im_greyc_mask", /* Name */ "noise-removing filter, with a mask", /* Description */ (im_fn_flags) (IM_FN_TRANSFORM | IM_FN_PIO),/* Flags */ greyc_mask_vec, /* Dispatch function */ IM_NUMBER( greyc_mask_arg_types ),/* Size of arg list */ greyc_mask_arg_types /* Arg list */ }; static im_function *function_list[] = { &greyc_desc, &greyc_mask_desc }; /* Package of functions. */ im_package im__cimg = { "cimg", IM_NUMBER( function_list ), function_list }; libvips-8.9.1/libvips/deprecated/colour_dispatch.c000066400000000000000000000573271361153320700223160ustar00rootroot00000000000000/* Function dispatch tables for arithmetic. * * J. Cupitt, 8/4/93. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_sRGB2XYZ via arg vector. */ static int sRGB2XYZ_vec( im_object *argv ) { return( im_sRGB2XYZ( argv[0], argv[1] ) ); } /* Description of im_sRGB2XYZ. */ static im_function sRGB2XYZ_desc = { "im_sRGB2XYZ", /* Name */ "convert sRGB to XYZ", /* Description */ IM_FN_PIO, /* Flags */ sRGB2XYZ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_XYZ2sRGB via arg vector. */ static int XYZ2sRGB_vec( im_object *argv ) { return( im_XYZ2sRGB( argv[0], argv[1] ) ); } /* Description of im_XYZ2sRGB. */ static im_function XYZ2sRGB_desc = { "im_XYZ2sRGB", /* Name */ "convert XYZ to sRGB", /* Description */ IM_FN_PIO, /* Flags */ XYZ2sRGB_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LCh2Lab via arg vector. */ static int LCh2Lab_vec( im_object *argv ) { return( im_LCh2Lab( argv[0], argv[1] ) ); } /* Description of im_LCh2Lab. */ static im_function LCh2Lab_desc = { "im_LCh2Lab", /* Name */ "convert LCh to Lab", /* Description */ IM_FN_PIO, /* Flags */ LCh2Lab_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LabQ2XYZ via arg vector. */ static int LabQ2XYZ_vec( im_object *argv ) { return( im_LabQ2XYZ( argv[0], argv[1] ) ); } /* Description of im_LabQ2XYZ. */ static im_function LabQ2XYZ_desc = { "im_LabQ2XYZ", /* Name */ "convert LabQ to XYZ", /* Description */ IM_FN_PIO, /* Flags */ LabQ2XYZ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LCh2UCS via arg vector. */ static int LCh2UCS_vec( im_object *argv ) { return( im_LCh2UCS( argv[0], argv[1] ) ); } /* Description of im_LCh2UCS. */ static im_function LCh2UCS_desc = { "im_LCh2UCS", /* Name */ "convert LCh to UCS", /* Description */ IM_FN_PIO, /* Flags */ LCh2UCS_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_Lab2LCh via arg vector. */ static int Lab2LCh_vec( im_object *argv ) { return( im_Lab2LCh( argv[0], argv[1] ) ); } /* Description of im_Lab2LCh. */ static im_function Lab2LCh_desc = { "im_Lab2LCh", /* Name */ "convert Lab to LCh", /* Description */ IM_FN_PIO, /* Flags */ Lab2LCh_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_Lab2LabQ() via arg vector. */ static int Lab2LabQ_vec( im_object *argv ) { return( im_Lab2LabQ( argv[0], argv[1] ) ); } /* Description of im_Lab2LabQ. */ static im_function Lab2LabQ_desc = { "im_Lab2LabQ", /* Name */ "convert Lab to LabQ", /* Description */ IM_FN_PIO, /* Flags */ Lab2LabQ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_Lab2XYZ() via arg vector. */ static int Lab2XYZ_vec( im_object *argv ) { return( im_Lab2XYZ( argv[0], argv[1] ) ); } /* Description of im_Lab2XYZ. */ static im_function Lab2XYZ_desc = { "im_Lab2XYZ", /* Name */ "convert D65 Lab to XYZ", /* Description */ IM_FN_PIO, /* Flags */ Lab2XYZ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; static int icc_present_vec( im_object *argv ) { int *present = ((int *) argv[0]); *present = im_icc_present(); return( 0 ); } static im_arg_desc icc_present_args[] = { IM_OUTPUT_INT( "present" ) }; /* Description of im_icc_present. */ static im_function icc_present_desc = { "im_icc_present", /* Name */ "test for presence of ICC library", /* Description */ 0, /* Flags */ icc_present_vec, /* Dispatch function */ IM_NUMBER( icc_present_args ), /* Size of arg list */ icc_present_args /* Arg list */ }; static int icc_transform_vec( im_object *argv ) { int intent = *((int *) argv[4]); return( im_icc_transform( argv[0], argv[1], argv[2], argv[3], intent ) ); } static im_arg_desc icc_transform_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "input_profile" ), IM_INPUT_STRING( "output_profile" ), IM_INPUT_INT( "intent" ) }; /* Description of im_icc_transform. */ static im_function icc_transform_desc = { "im_icc_transform", /* Name */ "convert between two device images with a pair of ICC profiles", /* Description */ IM_FN_PIO, /* Flags */ icc_transform_vec, /* Dispatch function */ IM_NUMBER( icc_transform_args ), /* Size of arg list */ icc_transform_args /* Arg list */ }; static int icc_import_embedded_vec( im_object *argv ) { int intent = *((int *) argv[2]); return( im_icc_import_embedded( argv[0], argv[1], intent ) ); } static im_arg_desc icc_import_embedded_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "intent" ) }; /* Description of im_icc_import_embedded. */ static im_function icc_import_embedded_desc = { "im_icc_import_embedded", /* Name */ "convert a device image to float LAB using the embedded profile", /* Description */ IM_FN_PIO, /* Flags */ icc_import_embedded_vec, /* Dispatch function */ IM_NUMBER( icc_import_embedded_args ), /* Size of arg list */ icc_import_embedded_args /* Arg list */ }; static int icc_import_vec( im_object *argv ) { int intent = *((int *) argv[3]); return( im_icc_import( argv[0], argv[1], argv[2], intent ) ); } static im_arg_desc icc_import_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "input_profile" ), IM_INPUT_INT( "intent" ) }; /* Description of im_icc_import. */ static im_function icc_import_desc = { "im_icc_import", /* Name */ "convert a device image to float LAB with an ICC profile", /* Description */ IM_FN_PIO, /* Flags */ icc_import_vec, /* Dispatch function */ IM_NUMBER( icc_import_args ), /* Size of arg list */ icc_import_args /* Arg list */ }; static int icc_export_depth_vec( im_object *argv ) { int intent = *((int *) argv[4]); int depth = *((int *) argv[2]); return( im_icc_export_depth( argv[0], argv[1], depth, argv[3], intent ) ); } static im_arg_desc icc_export_depth_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "depth" ), IM_INPUT_STRING( "output_profile" ), IM_INPUT_INT( "intent" ) }; /* Description of im_icc_export_depth. */ static im_function icc_export_depth_desc = { "im_icc_export_depth", /* Name */ "convert a float LAB to device space with an ICC profile", /* Description */ IM_FN_PIO, /* Flags */ icc_export_depth_vec, /* Dispatch function */ IM_NUMBER( icc_export_depth_args ), /* Size of arg list */ icc_export_depth_args /* Arg list */ }; static int icc_ac2rc_vec( im_object *argv ) { return( im_icc_ac2rc( argv[0], argv[1], argv[2] ) ); } static im_arg_desc icc_ac2rc_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "profile" ) }; /* Description of im_icc_ac2rc. */ static im_function icc_ac2rc_desc = { "im_icc_ac2rc", /* Name */ "convert LAB from AC to RC using an ICC profile", /* Description */ IM_FN_PIO, /* Flags */ icc_ac2rc_vec, /* Dispatch function */ IM_NUMBER( icc_ac2rc_args ), /* Size of arg list */ icc_ac2rc_args /* Arg list */ }; static int Lab2XYZ_temp_vec( im_object *argv ) { double X0 = *((double *) argv[2]); double Y0 = *((double *) argv[3]); double Z0 = *((double *) argv[4]); return( im_Lab2XYZ_temp( argv[0], argv[1], X0, Y0, Z0 ) ); } static im_arg_desc temp_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "X0" ), IM_INPUT_DOUBLE( "Y0" ), IM_INPUT_DOUBLE( "Z0" ) }; /* Description of im_Lab2XYZ_temp. */ static im_function Lab2XYZ_temp_desc = { "im_Lab2XYZ_temp", /* Name */ "convert Lab to XYZ, with a specified colour temperature", /* Description */ IM_FN_PIO, /* Flags */ Lab2XYZ_temp_vec, /* Dispatch function */ IM_NUMBER( temp_args ), /* Size of arg list */ temp_args /* Arg list */ }; /* Call im_Lab2UCS() via arg vector. */ static int Lab2UCS_vec( im_object *argv ) { return( im_Lab2UCS( argv[0], argv[1] ) ); } /* Description of im_Lab2UCS. */ static im_function Lab2UCS_desc = { "im_Lab2UCS", /* Name */ "convert Lab to UCS", /* Description */ IM_FN_PIO, /* Flags */ Lab2UCS_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LabQ2Lab() via arg vector. */ static int LabQ2Lab_vec( im_object *argv ) { return( im_LabQ2Lab( argv[0], argv[1] ) ); } /* Description of im_LabQ2Lab. */ static im_function LabQ2Lab_desc = { "im_LabQ2Lab", /* Name */ "convert LabQ to Lab", /* Description */ IM_FN_PIO, /* Flags */ LabQ2Lab_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_rad2float() via arg vector. */ static int rad2float_vec( im_object *argv ) { return( im_rad2float( argv[0], argv[1] ) ); } /* Description of im_rad2float. */ static im_function rad2float_desc = { "im_rad2float", /* Name */ "convert Radiance packed to float", /* Description */ IM_FN_PIO, /* Flags */ rad2float_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_float2rad() via arg vector. */ static int float2rad_vec( im_object *argv ) { return( im_float2rad( argv[0], argv[1] ) ); } /* Description of im_float2rad */ static im_function float2rad_desc = { "im_float2rad", /* Name */ "convert float to Radiance packed", /* Description */ IM_FN_PIO, /* Flags */ float2rad_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LabQ2LabS() via arg vector. */ static int LabQ2LabS_vec( im_object *argv ) { return( im_LabQ2LabS( argv[0], argv[1] ) ); } /* Description of im_LabQ2LabS. */ static im_function LabQ2LabS_desc = { "im_LabQ2LabS", /* Name */ "convert LabQ to LabS", /* Description */ IM_FN_PIO, /* Flags */ LabQ2LabS_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_Lab2LabS() via arg vector. */ static int Lab2LabS_vec( im_object *argv ) { return( im_Lab2LabS( argv[0], argv[1] ) ); } /* Description of im_Lab2LabS. */ static im_function Lab2LabS_desc = { "im_Lab2LabS", /* Name */ "convert Lab to LabS", /* Description */ IM_FN_PIO, /* Flags */ Lab2LabS_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LabS2Lab() via arg vector. */ static int LabS2Lab_vec( im_object *argv ) { return( im_LabS2Lab( argv[0], argv[1] ) ); } /* Description of im_LabS2Lab. */ static im_function LabS2Lab_desc = { "im_LabS2Lab", /* Name */ "convert LabS to Lab", /* Description */ IM_FN_PIO, /* Flags */ LabS2Lab_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LabS2LabQ() via arg vector. */ static int LabS2LabQ_vec( im_object *argv ) { return( im_LabS2LabQ( argv[0], argv[1] ) ); } /* Description of im_LabS2LabQ. */ static im_function LabS2LabQ_desc = { "im_LabS2LabQ", /* Name */ "convert LabS to LabQ", /* Description */ IM_FN_PIO, /* Flags */ LabS2LabQ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_UCS2XYZ() via arg vector. */ static int UCS2XYZ_vec( im_object *argv ) { return( im_UCS2XYZ( argv[0], argv[1] ) ); } /* Description of im_UCS2XYZ. */ static im_function UCS2XYZ_desc = { "im_UCS2XYZ", /* Name */ "convert UCS to XYZ", /* Description */ IM_FN_PIO, /* Flags */ UCS2XYZ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_UCS2LCh() via arg vector. */ static int UCS2LCh_vec( im_object *argv ) { return( im_UCS2LCh( argv[0], argv[1] ) ); } /* Description of im_UCS2LCh. */ static im_function UCS2LCh_desc = { "im_UCS2LCh", /* Name */ "convert UCS to LCh", /* Description */ IM_FN_PIO, /* Flags */ UCS2LCh_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_UCS2Lab() via arg vector. */ static int UCS2Lab_vec( im_object *argv ) { return( im_UCS2Lab( argv[0], argv[1] ) ); } /* Description of im_UCS2Lab. */ static im_function UCS2Lab_desc = { "im_UCS2Lab", /* Name */ "convert UCS to Lab", /* Description */ IM_FN_PIO, /* Flags */ UCS2Lab_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_Yxy2XYZ via arg vector. */ static int Yxy2XYZ_vec( im_object *argv ) { return( im_Yxy2XYZ( argv[0], argv[1] ) ); } /* Description of im_Yxy2XYZ. */ static im_function Yxy2XYZ_desc = { "im_Yxy2XYZ", /* Name */ "convert Yxy to XYZ", /* Description */ IM_FN_PIO, /* Flags */ Yxy2XYZ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_XYZ2Yxy via arg vector. */ static int XYZ2Yxy_vec( im_object *argv ) { return( im_XYZ2Yxy( argv[0], argv[1] ) ); } /* Description of im_XYZ2Yxy. */ static im_function XYZ2Yxy_desc = { "im_XYZ2Yxy", /* Name */ "convert XYZ to Yxy", /* Description */ IM_FN_PIO, /* Flags */ XYZ2Yxy_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_XYZ2Lab via arg vector. */ static int XYZ2Lab_vec( im_object *argv ) { return( im_XYZ2Lab( argv[0], argv[1] ) ); } /* Description of im_XYZ2Lab. */ static im_function XYZ2Lab_desc = { "im_XYZ2Lab", /* Name */ "convert D65 XYZ to Lab", /* Description */ IM_FN_PIO, /* Flags */ XYZ2Lab_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; static int XYZ2Lab_temp_vec( im_object *argv ) { double X0 = *((double *) argv[2]); double Y0 = *((double *) argv[3]); double Z0 = *((double *) argv[4]); return( im_XYZ2Lab_temp( argv[0], argv[1], X0, Y0, Z0 ) ); } /* Description of im_XYZ2Lab_temp. */ static im_function XYZ2Lab_temp_desc = { "im_XYZ2Lab_temp", /* Name */ "convert XYZ to Lab, with a specified colour temperature", /* Description */ IM_FN_PIO, /* Flags */ XYZ2Lab_temp_vec, /* Dispatch function */ IM_NUMBER( temp_args ), /* Size of arg list */ temp_args /* Arg list */ }; /* Call im_XYZ2UCS() via arg vector. */ static int XYZ2UCS_vec( im_object *argv ) { return( im_XYZ2UCS( argv[0], argv[1] ) ); } /* Description of im_XYZ2UCS. */ static im_function XYZ2UCS_desc = { "im_XYZ2UCS", /* Name */ "convert XYZ to UCS", /* Description */ IM_FN_PIO, /* Flags */ XYZ2UCS_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args to XYZ2disp and disp2XYZ. */ static im_arg_desc XYZ2disp_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DISPLAY( "disp" ) }; /* Call im_XYZ2disp() via arg vector. */ static int XYZ2disp_vec( im_object *argv ) { return( im_XYZ2disp( argv[0], argv[1], argv[2] ) ); } /* Description of im_XYZ2disp. */ static im_function XYZ2disp_desc = { "im_XYZ2disp", /* Name */ "convert XYZ to displayble", /* Description */ IM_FN_PIO, /* Flags */ XYZ2disp_vec, /* Dispatch function */ IM_NUMBER( XYZ2disp_args ), /* Size of arg list */ XYZ2disp_args /* Arg list */ }; /* Call im_Lab2disp() via arg vector. */ static int Lab2disp_vec( im_object *argv ) { return( im_Lab2disp( argv[0], argv[1], argv[2] ) ); } /* Description of im_Lab2disp. */ static im_function Lab2disp_desc = { "im_Lab2disp", /* Name */ "convert Lab to displayable", /* Description */ IM_FN_PIO, /* Flags */ Lab2disp_vec, /* Dispatch function */ IM_NUMBER( XYZ2disp_args ), /* Size of arg list */ XYZ2disp_args /* Arg list */ }; /* Call im_LabQ2disp() via arg vector. */ static int LabQ2disp_vec( im_object *argv ) { return( im_LabQ2disp( argv[0], argv[1], argv[2] ) ); } /* Description of im_LabQ2disp. */ static im_function LabQ2disp_desc = { "im_LabQ2disp", /* Name */ "convert LabQ to displayable", /* Description */ IM_FN_PIO, /* Flags */ LabQ2disp_vec, /* Dispatch function */ IM_NUMBER( XYZ2disp_args ), /* Size of arg list */ XYZ2disp_args /* Arg list */ }; /* Call im_dE00_fromLab() via arg vector. */ static int dE00_fromLab_vec( im_object *argv ) { return( im_dE00_fromLab( argv[0], argv[1], argv[2] ) ); } /* Description of im_dE00_fromLab. */ static im_function dE00_fromLab_desc = { "im_dE00_fromLab", /* Name */ "calculate delta-E CIE2000 for two Lab images", IM_FN_PIO, /* Flags */ dE00_fromLab_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_dECMC_fromLab() via arg vector. */ static int dECMC_fromLab_vec( im_object *argv ) { return( im_dECMC_fromLab( argv[0], argv[1], argv[2] ) ); } /* Description of im_dECMC_fromLab. */ static im_function dECMC_fromLab_desc = { "im_dECMC_fromLab", /* Name */ "calculate delta-E CMC(1:1) for two Lab images", IM_FN_PIO, /* Flags */ dECMC_fromLab_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_dE_fromXYZ() via arg vector. */ static int dE_fromXYZ_vec( im_object *argv ) { return( im_dE_fromXYZ( argv[0], argv[1], argv[2] ) ); } /* Description of im_dE_fromXYZ. */ static im_function dE_fromXYZ_desc = { "im_dE_fromXYZ", /* Name */ "calculate delta-E for two XYZ images", IM_FN_PIO, /* Flags */ dE_fromXYZ_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_dE_fromLab() via arg vector. */ static int dE_fromLab_vec( im_object *argv ) { return( im_dE_fromLab( argv[0], argv[1], argv[2] ) ); } /* Description of im_dE_fromLab. */ static im_function dE_fromLab_desc = { "im_dE_fromLab", /* Name */ "calculate delta-E for two Lab images", IM_FN_PIO, /* Flags */ dE_fromLab_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Two images in, one out. */ static im_arg_desc dE_fromdisp_args[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DISPLAY( "disp" ) }; /* Call im_dE_fromdisp() via arg vector. */ static int dE_fromdisp_vec( im_object *argv ) { return( im_dE_fromdisp( argv[0], argv[1], argv[2], argv[3] ) ); } /* Description of im_dE_fromdisp. */ static im_function dE_fromdisp_desc = { "im_dE_fromdisp", /* Name */ "calculate delta-E for two displayable images", IM_FN_PIO, /* Flags */ dE_fromdisp_vec, /* Dispatch function */ IM_NUMBER( dE_fromdisp_args ), /* Size of arg list */ dE_fromdisp_args /* Arg list */ }; /* Call im_dECMC_fromdisp() via arg vector. */ static int dECMC_fromdisp_vec( im_object *argv ) { return( im_dECMC_fromdisp( argv[0], argv[1], argv[2], argv[3] ) ); } /* Description of im_dECMC_fromdisp. */ static im_function dECMC_fromdisp_desc = { "im_dECMC_fromdisp", /* Name */ "calculate delta-E CMC(1:1) for two displayable images", IM_FN_PIO, /* Flags */ dECMC_fromdisp_vec, /* Dispatch function */ IM_NUMBER( dE_fromdisp_args ), /* Size of arg list */ dE_fromdisp_args /* Arg list */ }; /* Call im_disp2XYZ() via arg vector. */ static int disp2XYZ_vec( im_object *argv ) { return( im_disp2XYZ( argv[0], argv[1], argv[2] ) ); } /* Description of im_disp2XYZ. */ static im_function disp2XYZ_desc = { "im_disp2XYZ", /* Name */ "convert displayable to XYZ", /* Description */ IM_FN_PIO, /* Flags */ disp2XYZ_vec, /* Dispatch function */ IM_NUMBER( XYZ2disp_args ), /* Size of arg list */ XYZ2disp_args /* Arg list */ }; /* Call im_disp2Lab() via arg vector. */ static int disp2Lab_vec( im_object *argv ) { return( im_disp2Lab( argv[0], argv[1], argv[2] ) ); } /* Description of im_disp2Lab. */ static im_function disp2Lab_desc = { "im_disp2Lab", /* Name */ "convert displayable to Lab", /* Description */ IM_FN_PIO, /* Flags */ disp2Lab_vec, /* Dispatch function */ IM_NUMBER( XYZ2disp_args ), /* Size of arg list */ XYZ2disp_args /* Arg list */ }; static im_arg_desc morph_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "greyscale" ), IM_INPUT_DOUBLE( "L_offset" ), IM_INPUT_DOUBLE( "L_scale" ), IM_INPUT_DOUBLE( "a_scale" ), IM_INPUT_DOUBLE( "b_scale" ) }; static int morph_vec( im_object *argv ) { im_mask_object *mo = argv[2]; double L_offset = *((double *) argv[3]); double L_scale = *((double *) argv[4]); double a_scale = *((double *) argv[5]); double b_scale = *((double *) argv[6]); return( im_lab_morph( argv[0], argv[1], mo->mask, L_offset, L_scale, a_scale, b_scale ) ); } static im_function morph_desc = { "im_lab_morph", /* Name */ "morph colourspace of a LAB image", IM_FN_PIO | IM_FN_PTOP, /* Flags */ morph_vec, /* Dispatch function */ IM_NUMBER( morph_args ), /* Size of arg list */ morph_args /* Arg list */ }; /* Package up all these functions. */ static im_function *colour_list[] = { &LCh2Lab_desc, &LCh2UCS_desc, &Lab2LCh_desc, &Lab2LabQ_desc, &Lab2LabS_desc, &Lab2UCS_desc, &Lab2XYZ_desc, &Lab2XYZ_temp_desc, &Lab2disp_desc, &LabQ2LabS_desc, &LabQ2Lab_desc, &LabQ2XYZ_desc, &LabQ2disp_desc, &LabS2LabQ_desc, &LabS2Lab_desc, &UCS2LCh_desc, &UCS2Lab_desc, &UCS2XYZ_desc, &XYZ2Lab_desc, &XYZ2Lab_temp_desc, &XYZ2UCS_desc, &XYZ2Yxy_desc, &XYZ2disp_desc, &XYZ2sRGB_desc, &Yxy2XYZ_desc, &dE00_fromLab_desc, &dECMC_fromLab_desc, &dECMC_fromdisp_desc, &dE_fromLab_desc, &dE_fromXYZ_desc, &dE_fromdisp_desc, &disp2Lab_desc, &disp2XYZ_desc, &float2rad_desc, &icc_ac2rc_desc, &icc_export_depth_desc, &icc_import_desc, &icc_import_embedded_desc, &icc_present_desc, &icc_transform_desc, &morph_desc, &rad2float_desc, &sRGB2XYZ_desc }; /* Package of functions. */ im_package im__colour = { "colour", IM_NUMBER( colour_list ), colour_list }; libvips-8.9.1/libvips/deprecated/conver_dispatch.c000066400000000000000000000735421361153320700223040ustar00rootroot00000000000000/* VIPS function dispatch tables for conversion. * * J. Cupitt, 8/4/93. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include static int system_vec( im_object *argv ) { IMAGE *in = argv[0]; char *cmd = argv[1]; char **out = (char **) &argv[2]; if( im_system( in, cmd, out ) ) return( -1 ); return( 0 ); } static im_arg_desc system_args[] = { IM_INPUT_IMAGE( "im" ), IM_INPUT_STRING( "command" ), IM_OUTPUT_STRING( "output" ) }; static im_function system_desc = { "im_system", /* Name */ "run command on image", /* Description */ 0, /* Flags */ system_vec, /* Dispatch function */ IM_NUMBER( system_args ), /* Size of arg list */ system_args /* Arg list */ }; static int system_image_vec( im_object *argv ) { IMAGE *in = argv[0]; IMAGE *out = argv[1]; char *in_format = argv[2]; char *out_format = argv[3]; char *cmd = argv[4]; char **log = (char **) &argv[5]; IMAGE *out_image; if( !(out_image = im_system_image( in, in_format, out_format, cmd, log )) ) { im_error( "im_system_image", "%s", *log ); return( -1 ); } if( im_copy( out_image, out ) || im_add_close_callback( out, (im_callback_fn) im_close, out_image, NULL ) ) { im_close( out_image ); return( -1 ); } return( 0 ); } static im_arg_desc system_image_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "in_format" ), IM_INPUT_STRING( "out_format" ), IM_INPUT_STRING( "command" ), IM_OUTPUT_STRING( "log" ) }; static im_function system_image_desc = { "im_system_image", /* Name */ "run command on image, with image output",/* Description */ 0, /* Flags */ system_image_vec, /* Dispatch function */ IM_NUMBER( system_image_args ), /* Size of arg list */ system_image_args /* Arg list */ }; static int subsample_vec( im_object *argv ) { IMAGE *in = argv[0]; IMAGE *out = argv[1]; int xsh = *((int *) argv[2]); int ysh = *((int *) argv[3]); if( im_subsample( in, out, xsh, ysh ) ) return( -1 ); return( 0 ); } static im_arg_desc subsample_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xshrink" ), IM_INPUT_INT( "yshrink" ) }; static im_function subsample_desc = { "im_subsample", /* Name */ "subsample image by integer factors", /* Description */ IM_FN_PIO, /* Flags */ subsample_vec, /* Dispatch function */ IM_NUMBER( subsample_args ), /* Size of arg list */ subsample_args /* Arg list */ }; /* Args for im_gaussnoise. */ static im_arg_desc gaussnoise_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ), IM_INPUT_DOUBLE( "mean" ), IM_INPUT_DOUBLE( "sigma" ) }; /* Call im_gaussnoise via arg vector. */ static int gaussnoise_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); double mean = *((double *) argv[3]); double sigma = *((double *) argv[4]); if( im_gaussnoise( argv[0], xsize, ysize, mean, sigma ) ) return( -1 ); return( 0 ); } /* Description of im_gaussnoise. */ static im_function gaussnoise_desc = { "im_gaussnoise", /* Name */ "generate image of gaussian noise with specified statistics", IM_FN_PIO | IM_FN_NOCACHE, /* Flags */ gaussnoise_vec, /* Dispatch function */ IM_NUMBER( gaussnoise_args ), /* Size of arg list */ gaussnoise_args /* Arg list */ }; /* Args to im_extract. */ static im_arg_desc extract_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ), IM_INPUT_INT( "band" ) }; /* Call im_extract via arg vector. */ static int extract_vec( im_object *argv ) { int left = *((int *) argv[2]); int top = *((int *) argv[3]); int width = *((int *) argv[4]); int height = *((int *) argv[5]); int band = *((int *) argv[6]); return( im_extract_areabands( argv[0], argv[1], left, top, width, height, band, 1 ) ); } /* Description of im_extract. */ static im_function extract_desc = { "im_extract", /* Name */ "extract area/band", /* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ extract_vec, /* Dispatch function */ IM_NUMBER( extract_args ), /* Size of arg list */ extract_args /* Arg list */ }; /* Args to im_extract_area. */ static im_arg_desc extract_area_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Call im_extract_area via arg vector. */ static int extract_area_vec( im_object *argv ) { int x = *((int *) argv[2]); int y = *((int *) argv[3]); int w = *((int *) argv[4]); int h = *((int *) argv[5]); return( im_extract_area( argv[0], argv[1], x, y, w, h ) ); } /* Description of im_extract_area. */ static im_function extract_area_desc = { "im_extract_area", /* Name */ "extract area", /* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ extract_area_vec, /* Dispatch function */ IM_NUMBER( extract_area_args ), /* Size of arg list */ extract_area_args /* Arg list */ }; /* Args to im_extract_bands. */ static im_arg_desc extract_bands_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "band" ), IM_INPUT_INT( "nbands" ), }; /* Call im_extract_bands via arg vector. */ static int extract_bands_vec( im_object *argv ) { int chsel = *((int *) argv[2]); int nbands = *((int *) argv[3]); return( im_extract_bands( argv[0], argv[1], chsel, nbands ) ); } /* Description of im_extract_bands. */ static im_function extract_bands_desc = { "im_extract_bands", /* Name */ "extract several bands", /* Description */ IM_FN_PIO, /* Flags */ extract_bands_vec, /* Dispatch function */ IM_NUMBER( extract_bands_args ),/* Size of arg list */ extract_bands_args /* Arg list */ }; /* Args to im_extract_band. */ static im_arg_desc extract_band_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "band" ) }; /* Call im_extract_band via arg vector. */ static int extract_band_vec( im_object *argv ) { int chsel = *((int *) argv[2]); return( im_extract_band( argv[0], argv[1], chsel ) ); } /* Description of im_extract_band. */ static im_function extract_band_desc = { "im_extract_band", /* Name */ "extract band", /* Description */ IM_FN_PIO, /* Flags */ extract_band_vec, /* Dispatch function */ IM_NUMBER( extract_band_args ), /* Size of arg list */ extract_band_args /* Arg list */ }; /* Args to im_extract_areabands. */ static im_arg_desc extract_areabands_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ), IM_INPUT_INT( "band" ), IM_INPUT_INT( "nbands" ) }; /* Call im_extract_areabands via arg vector. */ static int extract_areabands_vec( im_object *argv ) { int left = *((int *) argv[2]); int top = *((int *) argv[3]); int width = *((int *) argv[4]); int height = *((int *) argv[5]); int band = *((int *) argv[6]); int nbands = *((int *) argv[7]); return( im_extract_areabands( argv[0], argv[1], left, top, width, height, band, nbands ) ); } /* Description of im_extract_areabands. */ static im_function extract_areabands_desc = { "im_extract_areabands", /* Name */ "extract area and bands", /* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ extract_areabands_vec, /* Dispatch function */ IM_NUMBER( extract_areabands_args ),/* Size of arg list */ extract_areabands_args /* Arg list */ }; /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_bandjoin via arg vector. */ static int bandjoin_vec( im_object *argv ) { return( im_bandjoin( argv[0], argv[1], argv[2] ) ); } /* Description of im_bandjoin. */ static im_function bandjoin_desc = { "im_bandjoin", /* Name */ "bandwise join of two images", /* Description */ IM_FN_PIO, /* Flags */ bandjoin_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; static im_arg_desc gbandjoin_args[] = { IM_INPUT_IMAGEVEC( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static int gbandjoin_vec( im_object *argv ) { im_imagevec_object *iv = (im_imagevec_object *) argv[0]; return( im_gbandjoin( iv->vec, argv[1], iv->n ) ); } static im_function gbandjoin_desc = { "im_gbandjoin", /* Name */ "bandwise join of many images", /* Description */ IM_FN_PIO, /* Flags */ gbandjoin_vec, /* Dispatch function */ IM_NUMBER( gbandjoin_args ), /* Size of arg list */ gbandjoin_args /* Arg list */ }; /* Args to im_text. */ static im_arg_desc text_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "text" ), IM_INPUT_STRING( "font" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "alignment" ), IM_INPUT_INT( "dpi" ) }; /* Call im_text via arg vector. */ static int text_vec( im_object *argv ) { int width = *((int *) argv[3]); int alignment = *((int *) argv[4]); int dpi = *((int *) argv[5]); return( im_text( argv[0], argv[1], argv[2], width, alignment, dpi ) ); } /* Description of im_text. */ static im_function text_desc = { "im_text", /* Name */ "generate text image", /* Description */ IM_FN_PIO, /* Flags */ text_vec, /* Dispatch function */ IM_NUMBER( text_args ), /* Size of arg list */ text_args /* Arg list */ }; /* Args to im_black. */ static im_arg_desc black_args[] = { IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "x_size" ), IM_INPUT_INT( "y_size" ), IM_INPUT_INT( "bands" ) }; /* Call im_black via arg vector. */ static int black_vec( im_object *argv ) { int xs = *((int *) argv[1]); int ys = *((int *) argv[2]); int bands = *((int *) argv[3]); return( im_black( argv[0], xs, ys, bands ) ); } /* Description of im_black. */ static im_function black_desc = { "im_black", /* Name */ "generate black image", /* Description */ IM_FN_PIO, /* Flags */ black_vec, /* Dispatch function */ IM_NUMBER( black_args ), /* Size of arg list */ black_args /* Arg list */ }; /* Args to im_clip2fmt. */ static im_arg_desc clip2fmt_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "ofmt" ) }; /* Call im_clip2fmt via arg vector. */ static int clip2fmt_vec( im_object *argv ) { int ofmt = *((int *) argv[2]); return( im_clip2fmt( argv[0], argv[1], ofmt ) ); } /* Description of im_clip2fmt. */ static im_function clip2fmt_desc = { "im_clip2fmt", /* Name */ "convert image format to ofmt", /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ clip2fmt_vec, /* Dispatch function */ IM_NUMBER( clip2fmt_args ), /* Size of arg list */ clip2fmt_args /* Arg list */ }; /* Call im_c2rect via arg vector. */ static int c2rect_vec( im_object *argv ) { return( im_c2rect( argv[0], argv[1] ) ); } /* Description of im_c2rect. */ static im_function c2rect_desc = { "im_c2rect", /* Name */ "convert phase and amplitude to real and imaginary", IM_FN_PTOP | IM_FN_PIO, /* Flags */ c2rect_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_c2amph via arg vector. */ static int c2amph_vec( im_object *argv ) { return( im_c2amph( argv[0], argv[1] ) ); } /* Description of im_c2amph. */ static im_function c2amph_desc = { "im_c2amph", /* Name */ "convert real and imaginary to phase and amplitude", IM_FN_PTOP | IM_FN_PIO, /* Flags */ c2amph_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_ri2c via arg vector. */ static int ri2c_vec( im_object *argv ) { return( im_ri2c( argv[0], argv[1], argv[2] ) ); } /* Description of im_ri2c. */ static im_function ri2c_desc = { "im_ri2c", /* Name */ "join two non-complex images to form complex", IM_FN_PTOP | IM_FN_PIO, /* Flags */ ri2c_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_c2imag via arg vector. */ static int c2imag_vec( im_object *argv ) { return( im_c2imag( argv[0], argv[1] ) ); } /* Description of im_c2imag. */ static im_function c2imag_desc = { "im_c2imag", /* Name */ "extract imaginary part of complex image", IM_FN_PTOP | IM_FN_PIO, /* Flags */ c2imag_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_c2real via arg vector. */ static int c2real_vec( im_object *argv ) { return( im_c2real( argv[0], argv[1] ) ); } /* Description of im_c2real. */ static im_function c2real_desc = { "im_c2real", /* Name */ "extract real part of complex image", IM_FN_PTOP | IM_FN_PIO, /* Flags */ c2real_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args to im_copy_set. */ static im_arg_desc copy_set_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "Type" ), IM_INPUT_DOUBLE( "Xres" ), IM_INPUT_DOUBLE( "Yres" ), IM_INPUT_INT( "Xoffset" ), IM_INPUT_INT( "Yoffset" ) }; /* Call im_copy_set via arg vector. */ static int copy_set_vec( im_object *argv ) { int Type = *((int *) argv[2]); float Xres = *((double *) argv[3]); float Yres = *((double *) argv[4]); int Xoffset = *((int *) argv[5]); int Yoffset = *((int *) argv[6]); return( im_copy_set( argv[0], argv[1], Type, Xres, Yres, Xoffset, Yoffset ) ); } /* Description of im_copy_set. */ static im_function copy_set_desc = { "im_copy_set", /* Name */ "copy image, setting informational fields", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. */ IM_FN_PIO, /* Flags */ copy_set_vec, /* Dispatch function */ IM_NUMBER( copy_set_args ), /* Size of arg list */ copy_set_args /* Arg list */ }; /* Args to im_copy_set_meta. */ static im_arg_desc copy_set_meta_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_STRING( "field" ), IM_INPUT_GVALUE( "value" ) }; /* Call im_copy_set_meta via arg vector. */ static int copy_set_meta_vec( im_object *argv ) { const char *field = argv[2]; GValue *value = argv[3]; return( im_copy_set_meta( argv[0], argv[1], field, value ) ); } /* Description of im_copy_set_meta. */ static im_function copy_set_meta_desc = { "im_copy_set_meta", /* Name */ "copy image, setting a meta field", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. */ IM_FN_PIO, /* Flags */ copy_set_meta_vec, /* Dispatch function */ IM_NUMBER( copy_set_meta_args ),/* Size of arg list */ copy_set_meta_args /* Arg list */ }; /* Args to im_copy_morph. */ static im_arg_desc copy_morph_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "Bands" ), IM_INPUT_INT( "BandFmt" ), IM_INPUT_INT( "Coding" ) }; /* Call im_copy_morph via arg vector. */ static int copy_morph_vec( im_object *argv ) { int Bands = *((int *) argv[2]); int BandFmt = *((int *) argv[3]); int Coding = *((int *) argv[4]); return( im_copy_morph( argv[0], argv[1], Bands, BandFmt, Coding ) ); } /* Description of im_copy_morph. */ static im_function copy_morph_desc = { "im_copy_morph", /* Name */ "copy image, setting pixel layout", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. */ IM_FN_PIO, /* Flags */ copy_morph_vec, /* Dispatch function */ IM_NUMBER( copy_morph_args ), /* Size of arg list */ copy_morph_args /* Arg list */ }; /* Call im_copy via arg vector. */ static int copy_vec( im_object *argv ) { return( im_copy( argv[0], argv[1] ) ); } /* Description of im_copy. */ static im_function copy_desc = { "im_copy", /* Name */ "copy image", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. * * Don't cache, since we use copy to stop sharing. */ IM_FN_PIO | IM_FN_NOCACHE, copy_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_copy_file via arg vector. */ static int copy_file_vec( im_object *argv ) { return( im_copy_file( argv[0], argv[1] ) ); } /* Description of im_copy_file. */ static im_function copy_file_desc = { "im_copy_file", /* Name */ "copy image to a file and return that", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. */ IM_FN_PIO, /* Flags */ copy_file_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_copy_swap via arg vector. */ static int copy_swap_vec( im_object *argv ) { return( im_copy_swap( argv[0], argv[1] ) ); } /* Description of im_copy_swap. */ static im_function copy_swap_desc = { "im_copy_swap", /* Name */ "copy image, swapping byte order", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. */ IM_FN_PIO, /* Flags */ copy_swap_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_fliphor via arg vector. */ static int fliphor_vec( im_object *argv ) { return( im_fliphor( argv[0], argv[1] ) ); } /* Description of im_fliphor. */ static im_function fliphor_desc = { "im_fliphor", /* Name */ "flip image left-right", IM_FN_PIO, /* Flags */ fliphor_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_flipver via arg vector. */ static int flipver_vec( im_object *argv ) { return( im_flipver( argv[0], argv[1] ) ); } /* Description of im_flipver. */ static im_function flipver_desc = { "im_flipver", /* Name */ "flip image top-bottom", IM_FN_PIO, /* Flags */ flipver_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_falsecolour via arg vector. */ static int falsecolour_vec( im_object *argv ) { return( im_falsecolour( argv[0], argv[1] ) ); } /* Description of im_falsecolour. */ static im_function falsecolour_desc = { "im_falsecolour", /* Name */ "turn luminance changes into chrominance changes", IM_FN_PTOP | IM_FN_PIO, /* Flags */ falsecolour_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args for im_insert. */ static im_arg_desc insert_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_IMAGE( "sub" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ) }; /* Call im_insert via arg vector. */ static int insert_vec( im_object *argv ) { int x = *((int *) argv[3]); int y = *((int *) argv[4]); return( im_insert( argv[0], argv[1], argv[2], x, y ) ); } /* Description of im_insert. */ static im_function insert_desc = { "im_insert", /* Name */ "insert sub-image into main image at position", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ insert_vec, /* Dispatch function */ IM_NUMBER( insert_args ), /* Size of arg list */ insert_args /* Arg list */ }; /* Args for im_insertset. */ static im_arg_desc insertset_args[] = { IM_INPUT_IMAGE( "main" ), IM_INPUT_IMAGE( "sub" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INTVEC( "x" ), IM_INPUT_INTVEC( "y" ) }; /* Call im_insertplaceset via arg vector. */ static int insertset_vec( im_object *argv ) { im_intvec_object *xv = (im_intvec_object *) argv[3]; im_intvec_object *yv = (im_intvec_object *) argv[4]; if( xv->n != yv->n ) { im_error( "im_insertset", "%s", _( "vectors not same length" ) ); return( -1 ); } if( im_insertset( argv[0], argv[1], argv[2], xv->n, xv->vec, yv->vec ) ) return( -1 ); return( 0 ); } /* Description of im_insertset. */ static im_function insertset_desc = { "im_insertset", /* Name */ "insert sub into main at every position in x, y", 0, /* Flags */ insertset_vec, /* Dispatch function */ IM_NUMBER( insertset_args ), /* Size of arg list */ insertset_args /* Arg list */ }; /* Call im_insert_noexpand via arg vector. */ static int insert_noexpand_vec( im_object *argv ) { int x = *((int *) argv[3]); int y = *((int *) argv[4]); return( im_insert_noexpand( argv[0], argv[1], argv[2], x, y ) ); } /* Description of im_insert_noexpand. */ static im_function insert_noexpand_desc = { "im_insert_noexpand", /* Name */ "insert sub-image into main image at position, no expansion", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ insert_noexpand_vec, /* Dispatch function */ IM_NUMBER( insert_args ), /* Size of arg list */ insert_args /* Arg list */ }; /* Call im_rot180 via arg vector. */ static int rot180_vec( im_object *argv ) { return( im_rot180( argv[0], argv[1] ) ); } /* Description of im_rot180. */ static im_function rot180_desc = { "im_rot180", /* Name */ "rotate image 180 degrees", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ rot180_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_rot90 via arg vector. */ static int rot90_vec( im_object *argv ) { return( im_rot90( argv[0], argv[1] ) ); } /* Description of im_rot90. */ static im_function rot90_desc = { "im_rot90", /* Name */ "rotate image 90 degrees clockwise", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ rot90_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_rot270 via arg vector. */ static int rot270_vec( im_object *argv ) { return( im_rot270( argv[0], argv[1] ) ); } /* Description of im_rot270. */ static im_function rot270_desc = { "im_rot270", /* Name */ "rotate image 270 degrees clockwise", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ rot270_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_lrjoin via arg vector. */ static int lrjoin_vec( im_object *argv ) { return( im_lrjoin( argv[0], argv[1], argv[2] ) ); } /* Description of im_lrjoin. */ static im_function lrjoin_desc = { "im_lrjoin", /* Name */ "join two images left-right", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ lrjoin_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_tbjoin via arg vector. */ static int tbjoin_vec( im_object *argv ) { return( im_tbjoin( argv[0], argv[1], argv[2] ) ); } /* Description of im_tbjoin. */ static im_function tbjoin_desc = { "im_tbjoin", /* Name */ "join two images top-bottom", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ tbjoin_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_scale via arg vector. */ static int scale_vec( im_object *argv ) { return( im_scale( argv[0], argv[1] ) ); } /* Description of im_scale. */ static im_function scale_desc = { "im_scale", /* Name */ "scale image linearly to fit range 0-255", IM_FN_PIO, /* Flags */ scale_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_scaleps via arg vector. */ static int scaleps_vec( im_object *argv ) { return( im_scaleps( argv[0], argv[1] ) ); } /* Description of im_scaleps. */ static im_function scaleps_desc = { "im_scaleps", /* Name */ "logarithmic scale of image to fit range 0-255", 0, /* Flags */ scaleps_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args to im_grid. */ static im_arg_desc grid_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "tile_height" ), IM_INPUT_INT( "across" ), IM_INPUT_INT( "down" ) }; /* Call im_grid via arg vector. */ static int grid_vec( im_object *argv ) { int tile_height = *((int *) argv[2]); int across = *((int *) argv[3]); int down = *((int *) argv[4]); return( im_grid( argv[0], argv[1], tile_height, across, down ) ); } /* Description of im_grid. */ static im_function grid_desc = { "im_grid", /* Name */ "chop a tall thin image into a grid of images", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ grid_vec, /* Dispatch function */ IM_NUMBER( grid_args ), /* Size of arg list */ grid_args /* Arg list */ }; /* Args to im_replicate. */ static im_arg_desc replicate_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "across" ), IM_INPUT_INT( "down" ) }; /* Call im_replicate via arg vector. */ static int replicate_vec( im_object *argv ) { int across = *((int *) argv[2]); int down = *((int *) argv[3]); return( im_replicate( argv[0], argv[1], across, down ) ); } /* Description of im_replicate. */ static im_function replicate_desc = { "im_replicate", /* Name */ "replicate an image horizontally and vertically", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ replicate_vec, /* Dispatch function */ IM_NUMBER( replicate_args ), /* Size of arg list */ replicate_args /* Arg list */ }; /* Args to im_zoom. */ static im_arg_desc zoom_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "xfac" ), IM_INPUT_INT( "yfac" ) }; /* Call im_zoom via arg vector. */ static int zoom_vec( im_object *argv ) { int xfac = *((int *) argv[2]); int yfac = *((int *) argv[3]); return( im_zoom( argv[0], argv[1], xfac, yfac ) ); } /* Description of im_zoom. */ static im_function zoom_desc = { "im_zoom", /* Name */ "simple zoom of an image by integer factors", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ zoom_vec, /* Dispatch function */ IM_NUMBER( zoom_args ), /* Size of arg list */ zoom_args /* Arg list */ }; /* Call im_msb via arg vector. */ static int msb_vec (im_object * argv) { return im_msb (argv[0], argv[1]); } /* Description of im_msb. */ static im_function msb_desc = { "im_msb", /* Name */ "convert to uchar by discarding bits", IM_FN_PIO | IM_FN_PTOP, /* Flags */ msb_vec, /* Dispatch function */ IM_NUMBER (one_in_one_out), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args to im_msb_band. */ static im_arg_desc msb_band_args[] = { IM_INPUT_IMAGE ("in"), IM_OUTPUT_IMAGE ("out"), IM_INPUT_INT ("band") }; /* Call im_msb_band via arg vector. */ static int msb_band_vec (im_object * argv) { IMAGE *in = (IMAGE *) argv[0]; IMAGE *out = (IMAGE *) argv[1]; int *band = (int *) argv[2]; return im_msb_band (in, out, *band); } /* Description of im_msb_band. */ static im_function msb_band_desc = { "im_msb_band", /* Name */ "convert to single band uchar by discarding bits", IM_FN_PIO | IM_FN_PTOP, /* Flags */ msb_band_vec, /* Dispatch function */ IM_NUMBER (msb_band_args), /* Size of arg list */ msb_band_args /* Arg list */ }; /* Args to im_wrap. */ static im_arg_desc wrap_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ) }; /* Call im_wrap via arg vector. */ static int wrap_vec (im_object * argv) { return im_wrap( argv[0], argv[1], *(int*)argv[2], *(int*)argv[3] ); } /* Description of im_wrap. */ static im_function wrap_desc = { "im_wrap", /* Name */ "shift image origin, wrapping at sides", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ wrap_vec, /* Dispatch function */ IM_NUMBER (wrap_args), /* Size of arg list */ wrap_args /* Arg list */ }; /* Args for im_embed. */ static im_arg_desc embed_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "type" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Call im_embed via arg vector. */ static int embed_vec( im_object *argv ) { int type = *((int *) argv[2]); int x = *((int *) argv[3]); int y = *((int *) argv[4]); int width = *((int *) argv[5]); int height = *((int *) argv[6]); return( im_embed( argv[0], argv[1], type, x, y, width, height ) ); } /* Description of im_embed. */ static im_function embed_desc = { "im_embed", /* Name */ "embed in within a set of borders", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ embed_vec, /* Dispatch function */ IM_NUMBER( embed_args ), /* Size of arg list */ embed_args /* Arg list */ }; /* Package up all these functions. */ static im_function *conv_list[] = { &gaussnoise_desc, &bandjoin_desc, &black_desc, &c2amph_desc, &c2imag_desc, &c2real_desc, &c2rect_desc, &clip2fmt_desc, ©_desc, ©_file_desc, ©_morph_desc, ©_swap_desc, ©_set_desc, ©_set_meta_desc, &extract_area_desc, &extract_areabands_desc, &extract_band_desc, &extract_bands_desc, &extract_desc, &falsecolour_desc, &fliphor_desc, &flipver_desc, &gbandjoin_desc, &grid_desc, &insert_desc, &insertset_desc, &insert_noexpand_desc, &embed_desc, &lrjoin_desc, &msb_desc, &msb_band_desc, &replicate_desc, &ri2c_desc, &rot180_desc, &rot270_desc, &rot90_desc, &scale_desc, &scaleps_desc, &subsample_desc, &system_desc, &system_image_desc, &tbjoin_desc, &text_desc, &wrap_desc, &zoom_desc }; /* Package of functions. */ im_package im__conversion = { "conversion", IM_NUMBER( conv_list ), conv_list }; libvips-8.9.1/libvips/deprecated/convol_dispatch.c000066400000000000000000000265631361153320700223110ustar00rootroot00000000000000/* VIPS function dispatch tables for convolution. * * J. Cupitt, 14/2/95. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Args to im_addgnoise. */ static im_arg_desc addgnoise_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "sigma" ) }; /* Call im_addgnoise via arg vector. */ static int addgnoise_vec( im_object *argv ) { double sigma = *((double *) argv[2]); return( im_addgnoise( argv[0], argv[1], sigma ) ); } /* Description of im_addgnoise. */ static im_function addgnoise_desc = { "im_addgnoise", /* Name */ "add gaussian noise with mean 0 and std. dev. sigma", IM_FN_PIO, /* Flags */ addgnoise_vec, /* Dispatch function */ IM_NUMBER( addgnoise_args ), /* Size of arg list */ addgnoise_args /* Arg list */ }; /* Args to im_contrast_surface. */ static im_arg_desc contrast_surface_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "half_win_size" ), IM_INPUT_INT( "spacing" ) }; /* Call im_contrast_surface via arg vector. */ static int contrast_surface_vec( im_object *argv ) { int half_win_size = *((int *) argv[2]); int spacing = *((int *) argv[3]); return( im_contrast_surface( argv[0], argv[1], half_win_size, spacing ) ); } /* Description of im_contrast_surface. */ static im_function contrast_surface_desc = { "im_contrast_surface", /* Name */ "find high-contrast points in an image", IM_FN_PIO, /* Flags */ contrast_surface_vec, /* Dispatch function */ IM_NUMBER( contrast_surface_args ),/* Size of arg list */ contrast_surface_args /* Arg list */ }; /* Args to im_sharpen. */ static im_arg_desc sharpen_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "mask_size" ), IM_INPUT_DOUBLE( "x1" ), IM_INPUT_DOUBLE( "y2" ), IM_INPUT_DOUBLE( "y3" ), IM_INPUT_DOUBLE( "m1" ), IM_INPUT_DOUBLE( "m2" ) }; /* Call im_sharpen via arg vector. */ static int sharpen_vec( im_object *argv ) { int mask_size = *((int *) argv[2]); double x1 = *((double *) argv[3]); double x2 = *((double *) argv[4]); double x3 = *((double *) argv[5]); double m1 = *((double *) argv[6]); double m2 = *((double *) argv[7]); return( im_sharpen( argv[0], argv[1], mask_size, x1, x2, x3, m1, m2 ) ); } /* Description of im_sharpen. */ static im_function sharpen_desc = { "im_sharpen", /* Name */ "sharpen high frequencies of L channel of LabQ", IM_FN_PIO, /* Flags */ sharpen_vec, /* Dispatch function */ IM_NUMBER( sharpen_args ), /* Size of arg list */ sharpen_args /* Arg list */ }; /* Args for convolver with imask. */ static im_arg_desc conv_imask[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMASK( "matrix" ) }; /* Args for convolver with dmask. */ static im_arg_desc conv_dmask[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "matrix" ) }; /* Call im_compass via arg vector. */ static int compass_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_compass( argv[0], argv[1], mo->mask ) ); } /* Description of im_compass. */ static im_function compass_desc = { "im_compass", /* Name */ "convolve with 8-way rotating integer mask", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ compass_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_conv via arg vector. */ static int conv_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_conv( argv[0], argv[1], mo->mask ) ); } /* Description of im_conv. */ static im_function conv_desc = { "im_conv", /* Name */ "convolve", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ conv_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_conv_f via arg vector. */ static int conv_f_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_conv_f( argv[0], argv[1], mo->mask ) ); } /* Description of im_conv_f. */ static im_function conv_f_desc = { "im_conv_f", /* Name */ "convolve, with DOUBLEMASK", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ conv_f_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Call im_convsep via arg vector. */ static int convsep_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convsep( argv[0], argv[1], mo->mask ) ); } /* Description of im_convsep. */ static im_function convsep_desc = { "im_convsep", /* Name */ "seperable convolution", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ convsep_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_convsep_f via arg vector. */ static int convsep_f_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convsep_f( argv[0], argv[1], mo->mask ) ); } /* Description of im_convsep_f. */ static im_function convsep_f_desc = { "im_convsep_f", /* Name */ "seperable convolution, with DOUBLEMASK", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ convsep_f_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Call im_fastcor via arg vector. */ static int fastcor_vec( im_object *argv ) { return( im_fastcor( argv[0], argv[1], argv[2] ) ); } /* Description of im_fastcor. */ static im_function fastcor_desc = { "im_fastcor", /* Name */ "fast correlate in2 within in1", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ fastcor_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_grad_x via arg vector. */ static int grad_x_vec( im_object *argv ) { return( im_grad_x( argv[0], argv[1] ) ); } /* Description of im_grad_x. */ static im_function grad_x_desc = { "im_grad_x", /* Name */ "horizontal difference image", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ grad_x_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_grad_y via arg vector. */ static int grad_y_vec( im_object *argv ) { return( im_grad_y( argv[0], argv[1] ) ); } /* Description of im_grad_y. */ static im_function grad_y_desc = { "im_grad_y", /* Name */ "vertical difference image", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ grad_y_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_gradcor via arg vector. */ static int gradcor_vec( im_object *argv ) { return( im_gradcor( argv[0], argv[1], argv[2] ) ); } /* Description of im_gradcor. */ static im_function gradcor_desc = { "im_gradcor", /* Name */ "non-normalised correlation of gradient of in2 within in1", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ gradcor_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_gradient via arg vector. */ static int gradient_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_gradient( argv[0], argv[1], mo->mask ) ); } /* Description of im_gradient. */ static im_function gradient_desc = { "im_gradient", /* Name */ "convolve with 2-way rotating mask", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ gradient_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_lindetect via arg vector. */ static int lindetect_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_lindetect( argv[0], argv[1], mo->mask ) ); } /* Description of im_lindetect. */ static im_function lindetect_desc = { "im_lindetect", /* Name */ "convolve with 4-way rotating mask", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ lindetect_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_spcor via arg vector. */ static int spcor_vec( im_object *argv ) { return( im_spcor( argv[0], argv[1], argv[2] ) ); } /* Description of im_spcor. */ static im_function spcor_desc = { "im_spcor", /* Name */ "normalised correlation of in2 within in1", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ spcor_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Args for im_aconv(). */ static im_arg_desc aconv_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "matrix" ), IM_INPUT_INT( "n_layers" ), IM_INPUT_INT( "cluster" ) }; /* Call im_aconv via arg vector. */ static int aconv_vec( im_object *argv ) { im_mask_object *mo = argv[2]; int n_layers = *((int *) argv[3]); int cluster = *((int *) argv[4]); return( im_aconv( argv[0], argv[1], mo->mask, n_layers, cluster ) ); } /* Description of im_aconv. */ static im_function aconv_desc = { "im_aconv", /* Name */ "approximate convolution", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ aconv_vec, /* Dispatch function */ IM_NUMBER( aconv_args ), /* Size of arg list */ aconv_args /* Arg list */ }; /* Args for im_aconvsep(). */ static im_arg_desc aconvsep_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "matrix" ), IM_INPUT_INT( "n_layers" ) }; /* Call im_aconvsep via arg vector. */ static int aconvsep_vec( im_object *argv ) { im_mask_object *mo = argv[2]; int n_layers = *((int *) argv[3]); return( im_aconvsep( argv[0], argv[1], mo->mask, n_layers ) ); } /* Description of im_aconvsep. */ static im_function aconvsep_desc = { "im_aconvsep", /* Name */ "approximate separable convolution", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ aconvsep_vec, /* Dispatch function */ IM_NUMBER( aconvsep_args ), /* Size of arg list */ aconvsep_args /* Arg list */ }; /* Package up all these functions. */ static im_function *convol_list[] = { &aconvsep_desc, &aconv_desc, &addgnoise_desc, &compass_desc, &contrast_surface_desc, &conv_desc, &conv_f_desc, &convsep_desc, &convsep_f_desc, &fastcor_desc, &gradcor_desc, &gradient_desc, &grad_x_desc, &grad_y_desc, &lindetect_desc, &sharpen_desc, &spcor_desc, }; /* Package of functions. */ im_package im__convolution = { "convolution", IM_NUMBER( convol_list ), convol_list }; libvips-8.9.1/libvips/deprecated/cooc_funcs.c000066400000000000000000000254051361153320700212450ustar00rootroot00000000000000/* @(#) Calculates the cooccurrence matrix of an image and some of its * @(#) features. The 256x256 cooccurrence matrix of im is held by m * @(#) There should be enough margin around the box so the (dx,dy) can * @(#) access neighbouring pixels outside the box * @(#) * @(#) Usage: * @(#) int im_cooc_matrix(im, m, xpos, ypos, xsize, ysize, dx, dy, sym_flag) * @(#) IMAGE *im, *m; * @(#) int xpos, ypos, xsize, ysize; location of the box within im * @(#) int dx, dy; displacements * @(#) int sym_flag; * @(#) * @(#) int im_cooc_asm(m, asmoment) * @(#) IMAGE *m; * @(#) double *asmoment; * @(#) * @(#) int im_cooc_contrast(m, contrast) * @(#) IMAGE *m; * @(#) double *contrast; * @(#) * @(#) int im_cooc_correlation(m, correlation) * @(#) IMAGE *m; * @(#) double *correlation; * @(#) * @(#) int im_cooc_entropy(m, entropy) * @(#) IMAGE *m; * @(#) double *entropy; * @(#) * @(#) All functions return 0 on success and -1 on error * * Copyright: N. Dessipris 1991 * Written on: 2/12/1991 * Updated on: 2/12/1991 * 22/7/93 JC * - extern decls removed * - im_incheck() calls added * 28/5/97 JC * - protos added :( */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include static int im_cooc_sym(IMAGE *im, IMAGE *m, int xpos, int ypos, int xsize, int ysize, int dx, int dy) { VipsPel *input, *cpinput; int *buf, *pnt, *cpnt; double *line, *cpline; int x, y; int offset; int bufofst; int tempA, tempB; int norm; if (im_iocheck(im, m) == -1) return( -1 ); if ((im->Bands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR)) { im_error( "im_cooc_sym", "%s", _( "Unable to accept input") ); return(-1); } if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { im_error( "im_cooc_sym", "%s", _( "wrong args") ); return(-1); } if (im_cp_desc(m, im) == -1) return( -1 ); m->Xsize = 256; m->Ysize = 256; m->BandFmt = IM_BANDFMT_DOUBLE; m->Type = IM_TYPE_B_W; if (im_setupout(m) == -1) return( -1 ); /* malloc space to keep the read values */ buf = (int *)calloc( (unsigned)m->Xsize*m->Ysize, sizeof(int) ); line = (double *)calloc( (unsigned)m->Xsize * m->Bands, sizeof(double)); if ( (buf == NULL) || (line == NULL) ) { im_error( "im_cooc_sym", "%s", _( "calloc failed") ); return(-1); } input = im->data; input += ( ypos * im->Xsize + xpos ); offset = dy * im->Xsize + dx; for ( y=0; yXsize; for ( x=0; xXsize * tempB; (*(buf + bufofst))++; bufofst = tempB + m->Xsize * tempA; (*(buf + bufofst))++; cpinput++; } } norm = xsize * ysize * 2; pnt = buf; for ( y=0; yYsize; y++ ) { cpnt = pnt; pnt += m->Xsize; cpline = line; for (x=0; xXsize; x++) *cpline++ = (double)(*cpnt++)/(double)norm; if (im_writeline( y, m, (VipsPel *) line ) == -1) { im_error( "im_cooc_sym", "%s", _( "unable to im_writeline") ); return(-1); } } free((char*)buf); free((char*)line); return(0); } static int im_cooc_ord(IMAGE *im, IMAGE *m, int xpos, int ypos, int xsize, int ysize, int dx, int dy) { VipsPel *input, *cpinput; int *buf, *pnt, *cpnt; double *line, *cpline; int x, y; int offset; int bufofst; int tempA, tempB; int norm; if (im_iocheck(im, m) == -1) return( -1 ); if ((im->Bands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR)) { im_error( "im_cooc_ord", "%s", _( "Unable to accept input") ); return(-1); } if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { im_error( "im_cooc_ord", "%s", _( "wrong args") ); return(-1); } if (im_cp_desc(m, im) == -1) return( -1 ); m->Xsize = 256; m->Ysize = 256; m->BandFmt = IM_BANDFMT_DOUBLE; if (im_setupout(m) == -1) return( -1 ); /* malloc space to keep the read values */ buf = (int *)calloc( (unsigned)m->Xsize*m->Ysize, sizeof(int) ); line = (double *)calloc( (unsigned)m->Xsize * m->Bands, sizeof(double)); if ( (buf == NULL) || (line == NULL) ) { im_error( "im_cooc_ord", "%s", _( "calloc failed") ); return(-1); } input = im->data; input += ( ypos * im->Xsize + xpos ); offset = dy * im->Xsize + dx; for ( y=0; yXsize; for ( x=0; xXsize * tempB; (*(buf + bufofst))++; cpinput++; } } norm = xsize * ysize; pnt = buf; for ( y=0; yYsize; y++ ) { cpnt = pnt; pnt += m->Xsize; cpline = line; for (x=0; xXsize; x++) *cpline++ = (double)(*cpnt++)/(double)norm; if (im_writeline( y, m, (PEL *) line ) == -1) { im_error( "im_cooc_ord", "%s", _( "unable to im_writeline") ); return(-1); } } free((char*)buf); free((char*)line); return(0); } /* Keep the coocurrence matrix as a 256x256x1 double image */ int im_cooc_matrix( IMAGE *im, IMAGE *m, int xp, int yp, int xs, int ys, int dx, int dy, int flag ) { if (flag == 0) return( im_cooc_ord(im, m, xp, yp, xs, ys, dx, dy) ); else if (flag == 1) /* symmetrical cooc */ return( im_cooc_sym(im, m, xp, yp, xs, ys, dx, dy) ); else { im_error( "im_cooc_matrix", "%s", _( "wrong flag!") ); return(-1); } } /* Calculate contrast, asmoment, entropy and correlation */ int im_cooc_asm( IMAGE *m, double *asmoment ) { double temp, tmpasm, *pnt; int i; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 256 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_cooc_asm", "%s", _( "unable to accept input") ); return(-1); } tmpasm = 0.0; pnt = (double*)m->data; for(i=0; iXsize * m->Ysize; i++) { temp = *pnt++; tmpasm += temp * temp; } *asmoment = tmpasm; return(0); } int im_cooc_contrast( IMAGE *m, double *contrast ) { double dtemp, tmpcon, *pnt, *cpnt; int x, y; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 256 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_cooc_contrast", "%s", _( "unable to accept input") ); return(-1); } tmpcon = 0.0; pnt = (double*)m->data; for(y=0; yYsize; y++) { cpnt = pnt; pnt += m->Xsize; for(x=0; xXsize; x++) { dtemp = (double)( (y-x)*(y-x) ); tmpcon += dtemp * (*cpnt); cpnt++; } } *contrast = tmpcon; return(0); } /* buffer contains the frequency distributions f[i] */ /* Note that sum(f[i]) = 1.0 and that the */ /* cooccurence matrix is symmetrical */ static void stats(double *buffer, int size, double *pmean, double *pstd) { double mean, std; register int i; double sumf; /* calculates the sum of f[i] */ double temp; /* temporary variable */ double *pbuffer; double sumf2; /* calculates the sum of f[i]^2 */ double correction; /* calulates the correction term for the variance */ double variance; /* = (sumf2 - correction)/n, n=sum(f[i]) = 1 */ mean = 0.0; std = 0.0; sumf = 0.0; sumf2 = 0.0; pbuffer = buffer; for (i=0; iXsize != 256 || m->Ysize != 256 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_cooc_correlation", "%s", _( "unable to accept input") ); return(-1); } row = (double*)calloc( (unsigned)m->Ysize, sizeof(double)); col = (double*)calloc( (unsigned)m->Xsize, sizeof(double)); if ( row == NULL || col == NULL ) { im_error( "im_cooc_correlation", "%s", _( "unable to calloc") ); return(-1); } pbuf = (double*)m->data; for(j=0; jYsize; j++) { cpbuf = pbuf; pbuf += m->Xsize; sum=0.0; for(i=0; iXsize; i++) sum += *cpbuf++; *(row+j) = sum; } pbuf = (double*)m->data; for(j=0; jYsize; j++) { cpbuf = pbuf; pbuf++; sum=0.0; for(i=0; iXsize; i++) { sum += *cpbuf; cpbuf += m->Xsize; } *(col+j) = sum; } stats(row, m->Ysize, &mrow, &stdrow); stats(col, m->Ysize ,&mcol, &stdcol); #ifdef DEBUG fprintf(stderr, "rows: mean=%f std=%f\ncols: mean=%f std=%f\n", mrow, stdrow, mcol, stdcol); #endif tmpcor = 0.0; pbuf = (double*)m->data; for(j=0; jYsize; j++) { cpbuf = pbuf; pbuf += m->Xsize; for(i=0; iXsize; i++) { dtemp = *cpbuf; tmpcor += ( ((double)i)*((double)j)*dtemp); cpbuf++; } } #ifdef DEBUG fprintf(stderr, "tmpcor=%f\n", tmpcor); #endif if ( (stdcol==0.0)||(stdrow==0) ) { im_error( "im_cooc_correlation", "%s", _( "zero std") ); return(-1); } tmpcor = (tmpcor-(mcol*mrow))/(stdcol*stdrow); *correlation = tmpcor; free((char*)row); free((char*)col); return(0); } int im_cooc_entropy( IMAGE *m, double *entropy ) { double *pbuf, *pbufstart; double *cpbuf; register int i,j; double tmpent, dtemp; double val; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 256 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_cooc_entropy", "%s", _( "unable to accept input") ); return(-1); } pbufstart = (double*)m->data; tmpent = 0.0; pbuf = pbufstart; for(j=0; jYsize; j++) { cpbuf = pbuf; pbuf += m->Xsize; for(i=0; iXsize; i++) { if(*cpbuf != 0) { dtemp = *cpbuf; tmpent += (dtemp*log10(dtemp)); } cpbuf++; } } val = tmpent*(-1); #ifdef DEBUG fprintf(stderr,"ENT=%f\nwhich is %f bits\n", val, val/log10(2.0) ); #endif *entropy = (val/log10(2.0)); return(0); } libvips-8.9.1/libvips/deprecated/deprecated_dispatch.c000066400000000000000000001522731361153320700231070ustar00rootroot00000000000000/* Function dispatch tables for deprecated operations. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static im_arg_desc quadratic_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMAGE( "coeff" ) }; static int quadratic_vec( im_object *argv ) { return( im_quadratic( argv[0], argv[1], argv[2] ) ); } static im_function quadratic_desc = { "im_quadratic", /* Name */ "transform via quadratic", IM_FN_PIO, /* Flags */ quadratic_vec, /* Dispatch function */ IM_NUMBER( quadratic_args ), /* Size of arg list */ quadratic_args /* Arg list */ }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_clip via arg vector. */ static int clip_vec( im_object *argv ) { return( im_clip( argv[0], argv[1] ) ); } /* Description of im_clip. */ static im_function clip_desc = { "im_clip", /* Name */ "convert to unsigned 8-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_c2ps via arg vector. */ static int c2ps_vec( im_object *argv ) { return( im_c2ps( argv[0], argv[1] ) ); } /* Description of im_c2ps. */ static im_function c2ps_desc = { "im_c2ps", /* Name */ "find power spectrum of complex image", IM_FN_PTOP | IM_FN_PIO, /* Flags */ c2ps_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args for im_lhisteq. */ static im_arg_desc lhisteq_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Args for im_stdif. */ static im_arg_desc stdif_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "m0" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "s0" ), IM_INPUT_INT( "xw" ), IM_INPUT_INT( "yw" ) }; /* Args to im_erode. */ static im_arg_desc erode_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMASK( "mask" ) }; /* Args to im_rank. */ static im_arg_desc rank_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ), IM_INPUT_INT( "n" ) }; /* Args for convolver with imask. */ static im_arg_desc conv_imask[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMASK( "matrix" ) }; /* Args for convolver with dmask. */ static im_arg_desc conv_dmask[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "matrix" ) }; /* Call im_cmulnorm via arg vector. */ static int cmulnorm_vec( im_object *argv ) { return( im_cmulnorm( argv[0], argv[1], argv[2] ) ); } /* Description of im_cmulnorm. */ static im_function cmulnorm_desc = { "im_cmulnorm", /* Name */ N_( "multiply two complex images, normalising output" ), IM_FN_PIO, /* Flags */ cmulnorm_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Four images in, one out. */ static im_arg_desc fav4_args[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_INPUT_IMAGE( "in3" ), IM_INPUT_IMAGE( "in4" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_fav4 via arg vector. */ static int fav4_vec( im_object *argv ) { IMAGE *buf[4]; buf[0] = argv[0]; buf[1] = argv[1]; buf[2] = argv[2]; buf[3] = argv[3]; return( im_fav4( &buf[0], argv[4] ) ); } /* Description of im_fav4. */ static im_function fav4_desc = { "im_fav4", /* Name */ N_( "average of 4 images" ), 0, /* Flags */ fav4_vec, /* Dispatch function */ IM_NUMBER( fav4_args ), /* Size of arg list */ fav4_args /* Arg list */ }; /* Args for im_gadd(). */ static im_arg_desc gadd_args[] = { IM_INPUT_DOUBLE( "a" ), IM_INPUT_IMAGE( "in1" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_IMAGE( "in2" ), IM_INPUT_DOUBLE( "c" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_gadd() via arg vector. */ static int gadd_vec( im_object *argv ) { double a = *((double *) argv[0]); double b = *((double *) argv[2]); double c = *((double *) argv[4]); return( im_gadd( a, argv[1], b, argv[3], c, argv[5] ) ); } /* Description of im_gadd(). */ static im_function gadd_desc = { "im_gadd", /* Name */ N_( "calculate a*in1 + b*in2 + c = outfile" ), 0, /* Flags */ gadd_vec, /* Dispatch function */ IM_NUMBER( gadd_args ), /* Size of arg list */ gadd_args /* Arg list */ }; /* Args for im_litecor(). */ static im_arg_desc litecor_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_IMAGE( "white" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "clip" ), IM_INPUT_DOUBLE( "factor" ) }; /* Call im_litecor() via arg vector. */ static int litecor_vec( im_object *argv ) { int clip = *((int *) argv[3]); double factor = *((double *) argv[4]); return( im_litecor( argv[0], argv[1], argv[2], clip, factor ) ); } /* Description of im_litecor(). */ static im_function litecor_desc = { "im_litecor", /* Name */ N_( "calculate max(white)*factor*(in/white), if clip == 1" ), 0, /* Flags */ litecor_vec, /* Dispatch function */ IM_NUMBER( litecor_args ), /* Size of arg list */ litecor_args /* Arg list */ }; /* affine args */ static im_arg_desc affine_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "c" ), IM_INPUT_DOUBLE( "d" ), IM_INPUT_DOUBLE( "dx" ), IM_INPUT_DOUBLE( "dy" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "w" ), IM_INPUT_INT( "h" ) }; /* Call im_affine via arg vector. */ static int affine_vec( im_object *argv ) { double a = *((double *) argv[2]); double b = *((double *) argv[3]); double c = *((double *) argv[4]); double d = *((double *) argv[5]); double dx = *((double *) argv[6]); double dy = *((double *) argv[7]); int x = *((int *) argv[8]); int y = *((int *) argv[9]); int w = *((int *) argv[10]); int h = *((int *) argv[11]); return( im_affine( argv[0], argv[1], a, b, c, d, dx, dy, x, y, w, h ) ); } /* Description of im_affine. */ static im_function affine_desc = { "im_affine", /* Name */ "affine transform", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ affine_vec, /* Dispatch function */ IM_NUMBER( affine_args ), /* Size of arg list */ affine_args /* Arg list */ }; /* similarity args */ static im_arg_desc similarity_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "dx" ), IM_INPUT_DOUBLE( "dy" ) }; /* Call im_similarity via arg vector. */ static int similarity_vec( im_object *argv ) { double a = *((double *) argv[2]); double b = *((double *) argv[3]); double dx = *((double *) argv[4]); double dy = *((double *) argv[5]); return( im_similarity( argv[0], argv[1], a, b, dx, dy ) ); } /* Description of im_similarity. */ static im_function similarity_desc = { "im_similarity", /* Name */ "similarity transformation", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ similarity_vec, /* Dispatch function */ IM_NUMBER( similarity_args ), /* Size of arg list */ similarity_args /* Arg list */ }; /* similarity_area args */ static im_arg_desc similarity_area_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "dx" ), IM_INPUT_DOUBLE( "dy" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "w" ), IM_INPUT_INT( "h" ) }; /* Call im_similarity_area via arg vector. */ static int similarity_area_vec( im_object *argv ) { double a = *((double *) argv[2]); double b = *((double *) argv[3]); double dx = *((double *) argv[4]); double dy = *((double *) argv[5]); int x = *((int *) argv[6]); int y = *((int *) argv[7]); int w = *((int *) argv[8]); int h = *((int *) argv[9]); return( im_similarity_area( argv[0], argv[1], a, b, dx, dy, x, y, w, h ) ); } /* Description of im_similarity_area. */ static im_function similarity_area_desc = { "im_similarity_area", /* Name */ "output area xywh of similarity transformation", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ similarity_area_vec, /* Dispatch function */ IM_NUMBER( similarity_area_args ), /* Size of arg list */ similarity_area_args /* Arg list */ }; static int icc_export_vec( im_object *argv ) { int intent = *((int *) argv[3]); return( im_icc_export( argv[0], argv[1], argv[2], intent ) ); } static im_arg_desc icc_export_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "output_profile" ), IM_INPUT_INT( "intent" ) }; /* Description of im_icc_export. */ static im_function icc_export_desc = { "im_icc_export", /* Name */ "convert a float LAB to an 8-bit device image with an ICC profile", /* Description */ IM_FN_PIO, /* Flags */ icc_export_vec, /* Dispatch function */ IM_NUMBER( icc_export_args ), /* Size of arg list */ icc_export_args /* Arg list */ }; /* Args for im_segment(). */ static im_arg_desc segment_args[] = { IM_INPUT_IMAGE( "test" ), IM_OUTPUT_IMAGE( "mask" ), IM_OUTPUT_INT( "segments" ) }; /* Call im_segment() via arg vector. */ static int segment_vec( im_object *argv ) { IMAGE *test = argv[0]; IMAGE *mask = argv[1]; int *serial = (int *) argv[2]; return( im_segment( test, mask, serial ) ); } /* Description of im_segment(). */ static im_function segment_desc = { "im_segment", /* Name */ "number continuous regions in an image", 0, /* Flags */ segment_vec, /* Dispatch function */ IM_NUMBER( segment_args ),/* Size of arg list */ segment_args /* Arg list */ }; static int print_vec( im_object *argv ) { const char *message = argv[0]; char **out = (char **) &argv[1]; if( im_print( message ) ) return( -1 ); *out = im_strdup( NULL, "printed" ); return( 0 ); } static im_arg_desc print_arg_types[] = { IM_INPUT_STRING( "message" ), IM_OUTPUT_STRING( "result" ) }; static im_function print_desc = { "im_print", /* Name */ "print string to stdout", /* Description */ 0, /* Flags */ print_vec, /* Dispatch function */ IM_NUMBER( print_arg_types ), /* Size of arg list */ print_arg_types /* Arg list */ }; /* Call im_clip2dcm via arg vector. */ static int clip2dcm_vec( im_object *argv ) { return( im_clip2dcm( argv[0], argv[1] ) ); } /* Description of im_clip2dcm. */ static im_function clip2dcm_desc = { "im_clip2dcm", /* Name */ "convert to double complex", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2dcm_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2cm via arg vector. */ static int clip2cm_vec( im_object *argv ) { return( im_clip2cm( argv[0], argv[1] ) ); } /* Description of im_clip2cm. */ static im_function clip2cm_desc = { "im_clip2cm", /* Name */ "convert to complex", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2cm_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2us via arg vector. */ static int clip2us_vec( im_object *argv ) { return( im_clip2us( argv[0], argv[1] ) ); } /* Description of im_clip2us. */ static im_function clip2us_desc = { "im_clip2us", /* Name */ "convert to unsigned 16-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2us_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2ui via arg vector. */ static int clip2ui_vec( im_object *argv ) { return( im_clip2ui( argv[0], argv[1] ) ); } /* Description of im_clip2ui. */ static im_function clip2ui_desc = { "im_clip2ui", /* Name */ "convert to unsigned 32-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2ui_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2s via arg vector. */ static int clip2s_vec( im_object *argv ) { return( im_clip2s( argv[0], argv[1] ) ); } /* Description of im_clip2s. */ static im_function clip2s_desc = { "im_clip2s", /* Name */ "convert to signed 16-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2s_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2i via arg vector. */ static int clip2i_vec( im_object *argv ) { return( im_clip2i( argv[0], argv[1] ) ); } /* Description of im_clip2i. */ static im_function clip2i_desc = { "im_clip2i", /* Name */ "convert to signed 32-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2i_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2d via arg vector. */ static int clip2d_vec( im_object *argv ) { return( im_clip2d( argv[0], argv[1] ) ); } /* Description of im_clip2d. */ static im_function clip2d_desc = { "im_clip2d", /* Name */ "convert to double-precision float", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2d_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2f via arg vector. */ static int clip2f_vec( im_object *argv ) { return( im_clip2f( argv[0], argv[1] ) ); } /* Description of im_clip2f. */ static im_function clip2f_desc = { "im_clip2f", /* Name */ "convert to single-precision float", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2f_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2c via arg vector. */ static int clip2c_vec( im_object *argv ) { return( im_clip2c( argv[0], argv[1] ) ); } /* Description of im_clip2c. */ static im_function clip2c_desc = { "im_clip2c", /* Name */ "convert to signed 8-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2c_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args to im_thresh. */ static im_arg_desc thresh_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_DOUBLE( "threshold" ) }; /* Call im_thresh via arg vector. */ static int thresh_vec( im_object *argv ) { double t1 = *((double *) argv[2]); return( im_thresh( argv[0], argv[1], t1 ) ); } /* Description of im_thresh. */ static im_function thresh_desc = { "im_thresh", /* Name */ "slice an image at a threshold", 0, /* Flags */ thresh_vec, /* Dispatch function */ IM_NUMBER( thresh_args ), /* Size of arg list */ thresh_args /* Arg list */ }; /* Args to im_slice. */ static im_arg_desc slice_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_DOUBLE( "thresh1" ), IM_INPUT_DOUBLE( "thresh2" ) }; /* Call im_slice via arg vector. */ static int slice_vec( im_object *argv ) { double t1 = *((double *) argv[2]); double t2 = *((double *) argv[3]); return( im_slice( argv[0], argv[1], t1, t2 ) ); } /* Description of im_slice. */ static im_function slice_desc = { "im_slice", /* Name */ "slice an image using two thresholds", 0, /* Flags */ slice_vec, /* Dispatch function */ IM_NUMBER( slice_args ), /* Size of arg list */ slice_args /* Arg list */ }; /* Args for im_convsub. */ static im_arg_desc convsub_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMASK( "matrix" ), IM_INPUT_INT( "xskip" ), IM_INPUT_INT( "yskip" ) }; /* Call im_convsub via arg vector. */ static int convsub_vec( im_object *argv ) { im_mask_object *mo = argv[2]; int xskip = *((int *) argv[3]); int yskip = *((int *) argv[4]); return( im_convsub( argv[0], argv[1], mo->mask, xskip, yskip ) ); } /* Description of im_convsub. */ static im_function convsub_desc = { "im_convsub", /* Name */ "convolve uchar to uchar, sub-sampling by xskip, yskip", IM_FN_TRANSFORM, /* Flags */ convsub_vec, /* Dispatch function */ IM_NUMBER( convsub_args ), /* Size of arg list */ convsub_args /* Arg list */ }; /* Args to im_bernd. */ static im_arg_desc bernd_args[] = { IM_INPUT_STRING( "tiffname" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Call im_bernd via arg vector. */ static int bernd_vec( im_object *argv ) { char *name = argv[0]; int left = *((int *) argv[1]); int top = *((int *) argv[2]); int width = *((int *) argv[3]); int height = *((int *) argv[4]); return( im_bernd( name, left, top, width, height ) ); } /* Description of im_bernd. */ static im_function bernd_desc = { "im_bernd", /* Name */ "extract from pyramid as jpeg", /* Description */ 0, /* Flags */ bernd_vec, /* Dispatch function */ IM_NUMBER( bernd_args ), /* Size of arg list */ bernd_args /* Arg list */ }; /* Args for im_line. */ static im_arg_desc line_args[] = { IM_RW_IMAGE( "im" ), IM_INPUT_INT( "x1" ), IM_INPUT_INT( "y1" ), IM_INPUT_INT( "x2" ), IM_INPUT_INT( "y2" ), IM_INPUT_INT( "pelval" ) }; /* Call im_line via arg vector. */ static int line_vec( im_object *argv ) { int x1 = *((int *) argv[1]); int y1 = *((int *) argv[2]); int x2 = *((int *) argv[3]); int y2 = *((int *) argv[4]); int pel = *((int *) argv[5]); return( im_line( argv[0], x1, y1, x2, y2, pel ) ); } /* Description of im_line. */ static im_function line_desc = { "im_line", /* Name */ "draw line between points (x1,y1) and (x2,y2)", 0, /* Flags */ line_vec, /* Dispatch function */ IM_NUMBER( line_args ), /* Size of arg list */ line_args /* Arg list */ }; /* Args for im_resize_linear. */ static im_arg_desc resize_linear_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "X" ), IM_INPUT_INT( "Y" ) }; /* Call im_resize_linear via arg vector. */ static int resize_linear_vec( im_object *argv ) { int X = *((int *) argv[2]); int Y = *((int *) argv[3]); return( im_resize_linear( argv[0], argv[1], X, Y ) ); } /* Description of im_resize_linear. */ static im_function resize_linear_desc = { "im_resize_linear", /* Name */ "resize to X by Y pixels with linear interpolation", 0, /* Flags */ resize_linear_vec, /* Dispatch function */ IM_NUMBER( resize_linear_args ), /* Size of arg list */ resize_linear_args /* Arg list */ }; /* Args for im_insertplaceset. */ static im_arg_desc insertplaceset_args[] = { IM_INPUT_IMAGE( "main" ), IM_INPUT_IMAGE( "sub" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INTVEC( "x" ), IM_INPUT_INTVEC( "y" ) }; /* Call im_insertplaceplaceset via arg vector. */ static int insertplaceset_vec( im_object *argv ) { im_intvec_object *xv = (im_intvec_object *) argv[3]; im_intvec_object *yv = (im_intvec_object *) argv[4]; if( xv->n != yv->n ) { im_error( "im_insertplaceset", "%s", _( "vectors not same length" ) ); return( -1 ); } if( im_insertset( argv[0], argv[1], argv[2], xv->n, xv->vec, yv->vec ) ) return( -1 ); return( 0 ); } /* Description of im_insertplaceset. */ static im_function insertplaceset_desc = { "im_insertplaceset", /* Name */ "insert sub into main at every position in x, y", 0, /* Flags */ insertplaceset_vec, /* Dispatch function */ IM_NUMBER( insertplaceset_args ), /* Size of arg list */ insertplaceset_args /* Arg list */ }; /* Call im_spcor_raw via arg vector. */ static int spcor_raw_vec( im_object *argv ) { return( im_spcor_raw( argv[0], argv[1], argv[2] ) ); } /* Description of im_spcor_raw. */ static im_function spcor_raw_desc = { "im_spcor_raw", /* Name */ "normalised correlation of in2 within in1, no black padding", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ spcor_raw_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_gradcor_raw via arg vector. */ static int gradcor_raw_vec( im_object *argv ) { return( im_gradcor_raw( argv[0], argv[1], argv[2] ) ); } /* Description of im_gradcor_raw. */ static im_function gradcor_raw_desc = { "im_gradcor_raw", /* Name */ "non-normalised correlation of gradient of in2 within in1, no padding", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ gradcor_raw_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_fastcor_raw via arg vector. */ static int fastcor_raw_vec( im_object *argv ) { return( im_fastcor_raw( argv[0], argv[1], argv[2] ) ); } /* Description of im_fastcor_raw. */ static im_function fastcor_raw_desc = { "im_fastcor_raw", /* Name */ "fast correlate in2 within in1, no border", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ fastcor_raw_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_convsepf_raw via arg vector. */ static int convsepf_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convsepf_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_convsepf_raw. */ static im_function convsepf_raw_desc = { "im_convsepf_raw", /* Name */ "seperable convolution, with DOUBLEMASK, no border", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ convsepf_raw_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Call im_convsep_raw via arg vector. */ static int convsep_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convsep_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_convsep_raw. */ static im_function convsep_raw_desc = { "im_convsep_raw", /* Name */ "seperable convolution, no border", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ convsep_raw_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_convf_raw via arg vector. */ static int convf_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convf_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_convf_raw. */ static im_function convf_raw_desc = { "im_convf_raw", /* Name */ "convolve, with DOUBLEMASK, no border", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ convf_raw_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Call im_conv_raw via arg vector. */ static int conv_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_conv_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_conv_raw. */ static im_function conv_raw_desc = { "im_conv_raw", /* Name */ "convolve, no border", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ conv_raw_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Args to im_contrast_surface_raw. */ static im_arg_desc contrast_surface_raw_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "half_win_size" ), IM_INPUT_INT( "spacing" ) }; /* Call im_contrast_surface_raw via arg vector. */ static int contrast_surface_raw_vec( im_object *argv ) { int half_win_size = *((int *) argv[2]); int spacing = *((int *) argv[3]); return( im_contrast_surface_raw( argv[0], argv[1], half_win_size, spacing ) ); } /* Description of im_contrast_surface_raw. */ static im_function contrast_surface_raw_desc = { "im_contrast_surface_raw", /* Name */ "find high-contrast points in an image", IM_FN_PIO, /* Flags */ contrast_surface_raw_vec, /* Dispatch function */ IM_NUMBER( contrast_surface_raw_args ),/* Size of arg list */ contrast_surface_raw_args /* Arg list */ }; /* Call im_stdif_raw via arg vector. */ static int stdif_raw_vec( im_object *argv ) { double a = *((double *) argv[2]); double m0 = *((double *) argv[3]); double b = *((double *) argv[4]); double s0 = *((double *) argv[5]); int xw = *((int *) argv[6]); int yw = *((int *) argv[7]); return( im_stdif_raw( argv[0], argv[1], a, m0, b, s0, xw, yw ) ); } /* Description of im_stdif. */ static im_function stdif_raw_desc = { "im_stdif_raw", /* Name */ "statistical differencing, no border", IM_FN_PIO, /* Flags */ stdif_raw_vec, /* Dispatch function */ IM_NUMBER( stdif_args ), /* Size of arg list */ stdif_args /* Arg list */ }; /* Call im_lhisteq_raw via arg vector. */ static int lhisteq_raw_vec( im_object *argv ) { int xw = *((int *) argv[2]); int yw = *((int *) argv[3]); return( im_lhisteq_raw( argv[0], argv[1], xw, yw ) ); } /* Description of im_lhisteq_raw. */ static im_function lhisteq_raw_desc = { "im_lhisteq_raw", /* Name */ "local histogram equalisation, no border", IM_FN_PIO, /* Flags */ lhisteq_raw_vec, /* Dispatch function */ IM_NUMBER( lhisteq_args ), /* Size of arg list */ lhisteq_args /* Arg list */ }; /* Call im_rank_raw via arg vector. */ static int rank_raw_vec( im_object *argv ) { int xsize = *((int *) argv[2]); int ysize = *((int *) argv[3]); int n = *((int *) argv[4]); return( im_rank_raw( argv[0], argv[1], xsize, ysize, n ) ); } /* Description of im_rank_raw. */ static im_function rank_raw_desc = { "im_rank_raw", /* Name */ "rank filter nth element of xsize/ysize window, no border", IM_FN_PIO, /* Flags */ rank_raw_vec, /* Dispatch function */ IM_NUMBER( rank_args ), /* Size of arg list */ rank_args /* Arg list */ }; /* Call im_erode_raw via arg vector. */ static int erode_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_erode_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_erode_raw. */ static im_function erode_raw_desc = { "im_erode_raw", /* Name */ "erode image with mask", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ erode_raw_vec, /* Dispatch function */ IM_NUMBER( erode_args ), /* Size of arg list */ erode_args /* Arg list */ }; /* Call im_dilate_raw via arg vector. */ static int dilate_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_dilate_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_dilate_raw. */ static im_function dilate_raw_desc = { "im_dilate_raw", /* Name */ "dilate image with mask", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ dilate_raw_vec, /* Dispatch function */ IM_NUMBER( erode_args ), /* Size of arg list */ erode_args /* Arg list */ }; /* Call im_convsepf via arg vector. */ static int convsepf_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convsepf( argv[0], argv[1], mo->mask ) ); } /* Description of im_convsepf. */ static im_function convsepf_desc = { "im_convsepf", /* Name */ "seperable convolution, with DOUBLEMASK", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ convsepf_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Call im_convf via arg vector. */ static int convf_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convf( argv[0], argv[1], mo->mask ) ); } /* Description of im_convf. */ static im_function convf_desc = { "im_convf", /* Name */ "convolve, with DOUBLEMASK", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ convf_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Args for im_circle. */ static im_arg_desc circle_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "cx" ), IM_INPUT_INT( "cy" ), IM_INPUT_INT( "radius" ), IM_INPUT_INT( "intensity" ) }; /* Call im_circle via arg vector. */ static int circle_vec( im_object *argv ) { int cx = *((int *) argv[1]); int cy = *((int *) argv[2]); int radius = *((int *) argv[3]); int intensity = *((int *) argv[4]); return( im_circle( argv[0], cx, cy, radius, intensity ) ); } /* Description of im_circle. */ static im_function circle_desc = { "im_circle", /* Name */ "plot circle on image", 0, /* Flags */ circle_vec, /* Dispatch function */ IM_NUMBER( circle_args ), /* Size of arg list */ circle_args /* Arg list */ }; /* Args for im_flood_blob_copy(). */ static im_arg_desc flood_blob_copy_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "start_x" ), IM_INPUT_INT( "start_y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_flood_blob_copy() via arg vector. */ static int flood_blob_copy_vec( im_object *argv ) { IMAGE *in = argv[0]; IMAGE *out = argv[1]; int start_x = *((int *) argv[2]); int start_y = *((int *) argv[3]); im_doublevec_object *dv = (im_doublevec_object *) argv[4]; PEL *ink; if( !(ink = im__vector_to_ink( "im_flood_blob_copy", in, dv->n, dv->vec )) ) return( -1 ); return( im_flood_blob_copy( in, out, start_x, start_y, ink ) ); } /* Description of im_flood_blob_copy(). */ static im_function flood_blob_copy_desc = { "im_flood_blob_copy", /* Name */ "flood with ink from start_x, start_y while pixel == start pixel", 0, /* Flags */ flood_blob_copy_vec, /* Dispatch function */ IM_NUMBER( flood_blob_copy_args ),/* Size of arg list */ flood_blob_copy_args /* Arg list */ }; /* Args for im_flood_copy(). */ static im_arg_desc flood_copy_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "start_x" ), IM_INPUT_INT( "start_y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_flood_copy() via arg vector. */ static int flood_copy_vec( im_object *argv ) { IMAGE *in = argv[0]; IMAGE *out = argv[1]; int start_x = *((int *) argv[2]); int start_y = *((int *) argv[3]); im_doublevec_object *dv = (im_doublevec_object *) argv[4]; PEL *ink; if( !(ink = im__vector_to_ink( "im_flood_copy", in, dv->n, dv->vec )) ) return( -1 ); return( im_flood_copy( in, out, start_x, start_y, ink ) ); } /* Description of im_flood_copy(). */ static im_function flood_copy_desc = { "im_flood_copy", /* Name */ "flood with ink from start_x, start_y while pixel == start pixel", 0, /* Flags */ flood_copy_vec, /* Dispatch function */ IM_NUMBER( flood_copy_args ),/* Size of arg list */ flood_copy_args /* Arg list */ }; /* Args for im_flood_other_copy(). */ static im_arg_desc flood_other_copy_args[] = { IM_INPUT_IMAGE( "test" ), IM_INPUT_IMAGE( "mark" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "start_x" ), IM_INPUT_INT( "start_y" ), IM_INPUT_INT( "serial" ) }; /* Call im_flood_other_copy() via arg vector. */ static int flood_other_copy_vec( im_object *argv ) { IMAGE *test = argv[0]; IMAGE *mark = argv[1]; IMAGE *out = argv[2]; int start_x = *((int *) argv[3]); int start_y = *((int *) argv[4]); int serial = *((int *) argv[5]); return( im_flood_other_copy( test, mark, out, start_x, start_y, serial ) ); } /* Description of im_flood_other_copy(). */ static im_function flood_other_copy_desc = { "im_flood_other_copy", /* Name */ "flood mark with serial from start_x, start_y while pixel == start pixel", 0, /* Flags */ flood_other_copy_vec, /* Dispatch function */ IM_NUMBER( flood_other_copy_args ),/* Size of arg list */ flood_other_copy_args /* Arg list */ }; /* Args for im_insertplace. */ static im_arg_desc insertplace_args[] = { IM_RW_IMAGE( "main" ), IM_INPUT_IMAGE( "sub" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ) }; /* Call im_insertplace via arg vector. */ static int insertplace_vec( im_object *argv ) { int x = *((int *) argv[2]); int y = *((int *) argv[3]); return( im_insertplace( argv[0], argv[1], x, y ) ); } /* Description of im_insertplace. */ static im_function insertplace_desc = { "im_insertplace", /* Name */ "draw image sub inside image main at position (x,y)", 0, /* Flags */ insertplace_vec, /* Dispatch function */ IM_NUMBER( insertplace_args ), /* Size of arg list */ insertplace_args /* Arg list */ }; /* Used to be called im_remainderconst_vec, stupidly. */ static int remainderconst_vec_vec( im_object *argv ) { im_doublevec_object *dv = (im_doublevec_object *) argv[2]; return( im_remainder_vec( argv[0], argv[1], dv->n, dv->vec ) ); } static im_arg_desc remainderconst_vec_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLEVEC( "x" ) }; static im_function remainderconst_vec_desc = { "im_remainderconst_vec", /* Name */ N_( "remainder after integer division by a vector of constants" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ remainderconst_vec_vec, /* Dispatch function */ IM_NUMBER( remainderconst_vec_args ),/* Size of arg list */ remainderconst_vec_args /* Arg list */ }; /* Args to im_mask2vips. */ static im_arg_desc mask2vips_args[] = { IM_INPUT_DMASK( "input" ), IM_OUTPUT_IMAGE( "output" ), }; /* Call im_mask2vips via arg vector. */ static int mask2vips_vec( im_object *argv ) { im_mask_object *mo = argv[0]; return( im_mask2vips( mo->mask, argv[1] ) ); } /* Description of im_mask2vips. */ static im_function mask2vips_desc = { "im_mask2vips", /* Name */ "convert DOUBLEMASK to VIPS image", 0, /* Flags */ mask2vips_vec, /* Dispatch function */ IM_NUMBER( mask2vips_args ), /* Size of arg list */ mask2vips_args /* Arg list */ }; /* Args to im_vips2mask. */ static im_arg_desc vips2mask_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_DMASK( "output" ), }; /* Call im_vips2mask via arg vector. */ static int vips2mask_vec( im_object *argv ) { im_mask_object *mo = argv[1]; if( !(mo->mask = im_vips2mask( argv[0], mo->name )) ) return( -1 ); return( 0 ); } /* Description of im_vips2mask. */ static im_function vips2mask_desc = { "im_vips2mask", /* Name */ "convert VIPS image to DOUBLEMASK", 0, /* Flags */ vips2mask_vec, /* Dispatch function */ IM_NUMBER( vips2mask_args ), /* Size of arg list */ vips2mask_args /* Arg list */ }; /* One image plus one constant in, one image out. */ static im_arg_desc int_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "c" ) }; /* One image plus one constant in, one image out. */ static im_arg_desc double_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "c" ) }; /* One image plus doublevec in, one image out. */ static im_arg_desc vec_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLEVEC( "vec" ) }; /* Call im_andimage via arg vector. */ static int andimage_vec( im_object *argv ) { return( im_andimage( argv[0], argv[1], argv[2] ) ); } /* Description of im_andimage. */ static im_function andimage_desc = { "im_andimage", /* Name */ "bitwise and of two images", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ andimage_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_andimageconst via arg vector. */ static int andimageconst_vec( im_object *argv ) { int c = *((int *) argv[2]); return( im_andimageconst( argv[0], argv[1], c ) ); } /* Description of im_andconst. */ static im_function andimageconst_desc = { "im_andimageconst", /* Name */ "bitwise and of an image with a constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ andimageconst_vec, /* Dispatch function */ IM_NUMBER( int_in_one_out ), /* Size of arg list */ int_in_one_out /* Arg list */ }; /* Call im_andimage_vec via arg vector. */ static int andimage_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_andimage_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_andimageconst. */ static im_function andimage_vec_desc = { "im_andimage_vec", /* Name */ "bitwise and of an image with a vector constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ andimage_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_orimage via arg vector. */ static int orimage_vec( im_object *argv ) { return( im_orimage( argv[0], argv[1], argv[2] ) ); } /* Description of im_orimage. */ static im_function orimage_desc = { "im_orimage", /* Name */ "bitwise or of two images", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ orimage_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_orimageconst via arg vector. */ static int orimageconst_vec( im_object *argv ) { int c = *((int *) argv[2]); return( im_orimageconst( argv[0], argv[1], c ) ); } /* Description of im_orimageconst. */ static im_function orimageconst_desc = { "im_orimageconst", /* Name */ "bitwise or of an image with a constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ orimageconst_vec, /* Dispatch function */ IM_NUMBER( int_in_one_out ), /* Size of arg list */ int_in_one_out /* Arg list */ }; /* Call im_orimage_vec via arg vector. */ static int orimage_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_orimage_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_orimage_vec. */ static im_function orimage_vec_desc = { "im_orimage_vec", /* Name */ "bitwise or of an image with a vector constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ orimage_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_eorimage via arg vector. */ static int eorimage_vec( im_object *argv ) { return( im_eorimage( argv[0], argv[1], argv[2] ) ); } /* Description of im_eorimage. */ static im_function eorimage_desc = { "im_eorimage", /* Name */ "bitwise eor of two images", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ eorimage_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_eorimageconst via arg vector. */ static int eorimageconst_vec( im_object *argv ) { int c = *((int *) argv[2]); return( im_eorimageconst( argv[0], argv[1], c ) ); } /* Description of im_eorimageconst. */ static im_function eorimageconst_desc = { "im_eorimageconst", /* Name */ "bitwise eor of an image with a constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ eorimageconst_vec, /* Dispatch function */ IM_NUMBER( int_in_one_out ), /* Size of arg list */ int_in_one_out /* Arg list */ }; /* Call im_eorimage_vec via arg vector. */ static int eorimage_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_eorimage_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_eorimage_vec. */ static im_function eorimage_vec_desc = { "im_eorimage_vec", /* Name */ "bitwise eor of an image with a vector constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ eorimage_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_shiftleft via arg vector. */ static int shiftleft_vec( im_object *argv ) { int n = *((int *) argv[2]); return( im_shiftleft( argv[0], argv[1], n ) ); } /* Description of im_shiftleft. */ static im_function shiftleft_desc = { "im_shiftleft", /* Name */ "shift image n bits to left", IM_FN_PTOP | IM_FN_PIO, /* Flags */ shiftleft_vec, /* Dispatch function */ IM_NUMBER( int_in_one_out ), /* Size of arg list */ int_in_one_out /* Arg list */ }; /* Call im_shiftleft_vec via arg vector. */ static int shiftleft_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_shiftleft_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_shiftleft_vec. */ static im_function shiftleft_vec_desc = { "im_shiftleft_vec", /* Name */ "shift image array bits to left", IM_FN_PTOP | IM_FN_PIO, /* Flags */ shiftleft_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_shiftright via arg vector. */ static int shiftright_vec( im_object *argv ) { int n = *((int *) argv[2]); return( im_shiftright( argv[0], argv[1], n ) ); } /* Description of im_shiftright. */ static im_function shiftright_desc = { "im_shiftright", /* Name */ "shift integer image n bits to right", IM_FN_PTOP | IM_FN_PIO, /* Flags */ shiftright_vec, /* Dispatch function */ IM_NUMBER( int_in_one_out ), /* Size of arg list */ int_in_one_out /* Arg list */ }; /* Call im_shiftright_vec via arg vector. */ static int shiftright_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_shiftright_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_shiftright_vec. */ static im_function shiftright_vec_desc = { "im_shiftright_vec", /* Name */ "shift image array bits to right", IM_FN_PTOP | IM_FN_PIO, /* Flags */ shiftright_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_equal via arg vector. */ static int equal_vec( im_object *argv ) { return( im_equal( argv[0], argv[1], argv[2] ) ); } /* Description of im_equal. */ static im_function equal_desc = { "im_equal", /* Name */ "two images equal in value", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ equal_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_equalconst via arg vector. */ static int equalconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_equalconst( argv[0], argv[1], c ) ); } /* Description of im_equalconst. */ static im_function equalconst_desc = { "im_equalconst", /* Name */ "image equals const", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ equalconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_equal_vec via arg vector. */ static int equal_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_equal_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_equal_vec. */ static im_function equal_vec_desc = { "im_equal_vec", /* Name */ "image equals doublevec", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ equal_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_notequal via arg vector. */ static int notequal_vec( im_object *argv ) { return( im_notequal( argv[0], argv[1], argv[2] ) ); } /* Description of im_notequal. */ static im_function notequal_desc = { "im_notequal", /* Name */ "two images not equal in value",/* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ notequal_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_notequalconst via arg vector. */ static int notequalconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_notequalconst( argv[0], argv[1], c ) ); } /* Description of im_notequalconst. */ static im_function notequalconst_desc = { "im_notequalconst", /* Name */ "image does not equal const", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ notequalconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_notequal_vec via arg vector. */ static int notequal_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_notequal_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_notequal_vec. */ static im_function notequal_vec_desc = { "im_notequal_vec", /* Name */ "image does not equal doublevec", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ notequal_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_less via arg vector. */ static int less_vec( im_object *argv ) { return( im_less( argv[0], argv[1], argv[2] ) ); } /* Description of im_less. */ static im_function less_desc = { "im_less", /* Name */ "in1 less than in2 in value", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ less_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_lessconst via arg vector. */ static int lessconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_lessconst( argv[0], argv[1], c ) ); } /* Description of im_lessconst. */ static im_function lessconst_desc = { "im_lessconst", /* Name */ "in less than const", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ lessconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_less_vec via arg vector. */ static int less_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_less_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_less_vec. */ static im_function less_vec_desc = { "im_less_vec", /* Name */ "in less than doublevec", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ less_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_more via arg vector. */ static int more_vec( im_object *argv ) { return( im_more( argv[0], argv[1], argv[2] ) ); } /* Description of im_more. */ static im_function more_desc = { "im_more", /* Name */ "in1 more than in2 in value", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ more_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_moreconst via arg vector. */ static int moreconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_moreconst( argv[0], argv[1], c ) ); } /* Description of im_moreconst. */ static im_function moreconst_desc = { "im_moreconst", /* Name */ "in more than const", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ moreconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_more_vec via arg vector. */ static int more_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_more_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_more_vec. */ static im_function more_vec_desc = { "im_more_vec", /* Name */ "in more than doublevec", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ more_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_moreeq via arg vector. */ static int moreeq_vec( im_object *argv ) { return( im_moreeq( argv[0], argv[1], argv[2] ) ); } /* Description of im_moreeq. */ static im_function moreeq_desc = { "im_moreeq", /* Name */ "in1 more than or equal to in2 in value", IM_FN_PTOP | IM_FN_PIO, /* Flags */ moreeq_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_moreeqconst via arg vector. */ static int moreeqconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_moreeqconst( argv[0], argv[1], c ) ); } /* Description of im_moreeqconst. */ static im_function moreeqconst_desc = { "im_moreeqconst", /* Name */ "in more than or equal to const", IM_FN_PTOP | IM_FN_PIO, /* Flags */ moreeqconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_moreeq_vec via arg vector. */ static int moreeq_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_moreeq_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_moreeq_vec. */ static im_function moreeq_vec_desc = { "im_moreeq_vec", /* Name */ "in more than or equal to doublevec", IM_FN_PTOP | IM_FN_PIO, /* Flags */ moreeq_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_lesseq via arg vector. */ static int lesseq_vec( im_object *argv ) { return( im_lesseq( argv[0], argv[1], argv[2] ) ); } /* Description of im_lesseq. */ static im_function lesseq_desc = { "im_lesseq", /* Name */ "in1 less than or equal to in2 in value", IM_FN_PTOP | IM_FN_PIO, /* Flags */ lesseq_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_lesseqconst via arg vector. */ static int lesseqconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_lesseqconst( argv[0], argv[1], c ) ); } /* Description of im_lesseqconst. */ static im_function lesseqconst_desc = { "im_lesseqconst", /* Name */ "in less than or equal to const", IM_FN_PTOP | IM_FN_PIO, /* Flags */ lesseqconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_lesseq_vec via arg vector. */ static int lesseq_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_lesseq_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_lesseq_vec. */ static im_function lesseq_vec_desc = { "im_lesseq_vec", /* Name */ "in less than or equal to doublevec", IM_FN_PTOP | IM_FN_PIO, /* Flags */ lesseq_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* If-then-else args. */ static im_arg_desc ifthenelse_args[] = { IM_INPUT_IMAGE( "cond" ), IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_blend via arg vector. */ static int blend_vec( im_object *argv ) { return( im_blend( argv[0], argv[1], argv[2], argv[3] ) ); } /* Description of im_blend. */ static im_function blend_desc = { "im_blend", /* Name */ "use cond image to blend between images in1 and in2", IM_FN_PTOP | IM_FN_PIO, /* Flags */ blend_vec, /* Dispatch function */ IM_NUMBER( ifthenelse_args ), /* Size of arg list */ ifthenelse_args /* Arg list */ }; /* Call im_ifthenelse via arg vector. */ static int ifthenelse_vec( im_object *argv ) { return( im_ifthenelse( argv[0], argv[1], argv[2], argv[3] ) ); } /* Description of im_ifthenelse. */ static im_function ifthenelse_desc = { "im_ifthenelse", /* Name */ "use cond image to choose pels from image in1 or in2", IM_FN_PTOP | IM_FN_PIO, /* Flags */ ifthenelse_vec, /* Dispatch function */ IM_NUMBER( ifthenelse_args ), /* Size of arg list */ ifthenelse_args /* Arg list */ }; /* Call im_argb2rgba() via arg vector. */ static int argb2rgba_vec( im_object *argv ) { return( im_argb2rgba( argv[0], argv[1] ) ); } /* Description of im_argb2rgba. */ static im_function argb2rgba_desc = { "im_argb2rgba", /* Name */ "convert pre-multipled argb to png-style rgba", /* Description */ IM_FN_PIO, /* Flags */ argb2rgba_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Package up all these functions. */ static im_function *deprecated_list[] = { &argb2rgba_desc, &flood_copy_desc, &flood_blob_copy_desc, &flood_other_copy_desc, &clip_desc, &c2ps_desc, &resize_linear_desc, &cmulnorm_desc, &fav4_desc, &gadd_desc, &icc_export_desc, &litecor_desc, &affine_desc, &clip2c_desc, &clip2cm_desc, &clip2d_desc, &clip2dcm_desc, &clip2f_desc, &clip2i_desc, &convsub_desc, &convf_desc, &convsepf_desc, &clip2s_desc, &clip2ui_desc, &insertplaceset_desc, &clip2us_desc, &print_desc, &slice_desc, &bernd_desc, &segment_desc, &line_desc, &thresh_desc, &convf_raw_desc, &conv_raw_desc, &contrast_surface_raw_desc, &convsepf_raw_desc, &convsep_raw_desc, &fastcor_raw_desc, &gradcor_raw_desc, &spcor_raw_desc, &lhisteq_raw_desc, &stdif_raw_desc, &rank_raw_desc, &dilate_raw_desc, &erode_raw_desc, &similarity_area_desc, &similarity_desc, &remainderconst_vec_desc, &mask2vips_desc, &vips2mask_desc, &insertplace_desc, &circle_desc, &andimage_desc, &andimageconst_desc, &andimage_vec_desc, &orimage_desc, &orimageconst_desc, &orimage_vec_desc, &eorimage_desc, &eorimageconst_desc, &eorimage_vec_desc, &shiftleft_vec_desc, &shiftleft_desc, &shiftright_vec_desc, &shiftright_desc, &blend_desc, &equal_desc, &equal_vec_desc, &equalconst_desc, &ifthenelse_desc, &less_desc, &less_vec_desc, &lessconst_desc, &lesseq_desc, &lesseq_vec_desc, &lesseqconst_desc, &more_desc, &more_vec_desc, &moreconst_desc, &moreeq_desc, &moreeq_vec_desc, &moreeqconst_desc, ¬equal_desc, ¬equal_vec_desc, ¬equalconst_desc, &quadratic_desc }; /* Package of functions. */ im_package im__deprecated = { "deprecated", IM_NUMBER( deprecated_list ), deprecated_list }; libvips-8.9.1/libvips/deprecated/dispatch_types.c000066400000000000000000000422011361153320700221400ustar00rootroot00000000000000/* Define built-in VIPS types. * * J. Cupitt, 8/4/93. * * Modified: * 21/5/07 * - any length vector (Tom) * 23/8/10 * - add IM_TYPE_RW flag for im__rw_image */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include /* String containing each of the characters which can be used within a * single command line argument to separate the elements of a vector. */ #define VEC_SEPS " " /* Init function for input displays. Just a stub nowadays. */ static int input_display_init( im_object *obj, char *str ) { *obj = NULL; return( 0 ); } /* Input display type. */ im_type_desc im__input_display = { IM_TYPE_DISPLAY, /* It's a display */ 0, /* No storage needed */ IM_TYPE_ARG, /* It requires a command-line arg */ input_display_init, /* Init function */ NULL /* Destroy function */ }; /* Output display type. */ im_type_desc im__output_display = { IM_TYPE_DISPLAY, /* It's a display */ sizeof( void * ), /* Memory to allocate */ IM_TYPE_OUTPUT, /* Output object */ NULL, /* Init function */ NULL /* Destroy function */ }; /* Init function for input images. */ static int input_image_init( im_object *obj, char *str ) { IMAGE **im = (IMAGE **) obj; return( !(*im = vips__deprecated_open_read( str, FALSE )) ); } /* Input image type. */ im_type_desc im__input_image = { IM_TYPE_IMAGE, /* It's an image */ 0, /* No storage needed */ IM_TYPE_ARG, /* It requires a command-line arg */ (im_init_obj_fn) input_image_init,/* Init function */ (im_dest_obj_fn) im_close /* Destroy function */ }; /* Init function for output images. */ static int output_image_init( im_object *obj, char *str ) { IMAGE **im = (IMAGE **) obj; return( !(*im = vips__deprecated_open_write( str )) ); } /* Output image type. */ im_type_desc im__output_image = { IM_TYPE_IMAGE, /* It's an image */ 0, /* No storage to be allocated */ IM_TYPE_OUTPUT | IM_TYPE_ARG, /* Flags! */ (im_init_obj_fn) output_image_init,/* Init function */ (im_dest_obj_fn) im_close /* Destroy function */ }; /* Init function for RW images. */ static int rw_image_init( im_object *obj, char *str ) { IMAGE **im = (IMAGE **) obj; return( !(*im = im_open( str, "rw" )) ); } /* RW image type. */ im_type_desc im__rw_image = { IM_TYPE_IMAGE, /* It's an image */ 0, /* No storage to be allocated */ IM_TYPE_ARG | IM_TYPE_RW, /* Read-write object, needs an arg */ (im_init_obj_fn) rw_image_init, /* Init function */ (im_dest_obj_fn) im_close /* Destroy function */ }; /* im_imagevec_object destroy function. */ static int imagevec_dest( im_object obj ) { im_imagevec_object *iv = obj; if( iv->vec ) { int i; for( i = 0; i < iv->n; i++ ) if( iv->vec[i] ) { im_close( iv->vec[i] ); iv->vec[i] = NULL; } g_free( iv->vec ); iv->vec = NULL; iv->n = 0; } return( 0 ); } /* Init function for imagevec input. */ static int input_imagevec_init( im_object *obj, char *str ) { im_imagevec_object *iv = *obj; char **strv; int nargs; int i; strv = g_strsplit( str, VEC_SEPS, -1 ); nargs = g_strv_length( strv ); if( !(iv->vec = VIPS_ARRAY( NULL, nargs, IMAGE * )) ) { g_strfreev( strv ); return( -1 ); } iv->n = nargs; /* Must NULL them out in case we fail halfway though opening them all. */ for( i = 0; i < nargs; i++ ) iv->vec[i] = NULL; for( i = 0; i < nargs; i++ ) if( !(iv->vec[i] = im_open( strv[i], "rd" )) ) { g_strfreev( strv ); return( -1 ); } g_strfreev( strv ); return( 0 ); } /* Input image vector type. */ im_type_desc im__input_imagevec = { IM_TYPE_IMAGEVEC, /* It's an array of IMAGE */ sizeof( im_imagevec_object ), /* Memory to allocate in vec build */ IM_TYPE_ARG, /* It requires a command-line arg */ input_imagevec_init, /* Init function */ imagevec_dest /* Destroy function */ }; /* Init function for masks. "str" can be NULL for output masks. */ static int mask_init( im_object *obj, char *str ) { im_mask_object *mo = *obj; /* Install string, clear mask. */ if( str && !(mo->name = im_strdup( NULL, str )) ) return( -1 ); mo->mask = NULL; return( 0 ); } /* Init function for input dmasks. As above, but read in the mask. */ static int dmask_init( im_object *obj, char *str ) { im_mask_object *mo = *obj; if( mask_init( obj, str ) ) return( -1 ); if( !(mo->mask = im_read_dmask( str )) ) return( -1 ); return( 0 ); } /* Init function for input imasks. */ static int imask_init( im_object *obj, char *str ) { im_mask_object *mo = *obj; if( mask_init( obj, str ) ) return( -1 ); if( !(mo->mask = im_read_imask( str )) ) return( -1 ); return( 0 ); } /* DOUBLEMASK destroy function. */ static int dmask_dest( im_object obj ) { im_mask_object *mo = obj; VIPS_FREE( mo->name ); VIPS_FREEF( im_free_dmask, mo->mask ); return( 0 ); } /* INTMASK destroy function. */ static int imask_dest( im_object obj ) { im_mask_object *mo = obj; VIPS_FREE( mo->name ); VIPS_FREEF( im_free_imask, mo->mask ); return( 0 ); } /* As above, but save the mask first. */ static int save_dmask_dest( im_object obj ) { im_mask_object *mo = obj; if( mo->mask && im_write_dmask( mo->mask ) ) return( -1 ); return( dmask_dest( obj ) ); } /* As above, but save the mask first. */ static int save_imask_dest( im_object obj ) { im_mask_object *mo = obj; if( mo->mask && im_write_imask( mo->mask ) ) return( -1 ); return( imask_dest( obj ) ); } /* Output dmask type. */ im_type_desc im__output_dmask = { IM_TYPE_DMASK, /* It's a mask */ sizeof( im_mask_object ), /* Storage for mask object */ IM_TYPE_OUTPUT | IM_TYPE_ARG, /* Flags */ mask_init, /* Init function */ save_dmask_dest /* Save and destroy function */ }; /* Input dmask type. */ im_type_desc im__input_dmask = { IM_TYPE_DMASK, /* It's a mask */ sizeof( im_mask_object ), /* Storage for mask object */ IM_TYPE_ARG, /* It requires a command-line arg */ dmask_init, /* Init function */ dmask_dest /* Destroy function */ }; /* Output imask type. */ im_type_desc im__output_imask = { IM_TYPE_IMASK, /* It's a mask */ sizeof( im_mask_object ), /* Storage for mask object */ IM_TYPE_OUTPUT | IM_TYPE_ARG, /* Flags */ mask_init, /* Init function */ save_imask_dest /* Save and destroy function */ }; /* Input imask type. */ im_type_desc im__input_imask = { IM_TYPE_IMASK, /* It's a mask */ sizeof( im_mask_object ), /* Storage for mask object */ IM_TYPE_ARG, /* It requires a command-line arg */ imask_init, /* Init function */ imask_dest /* Destroy function */ }; /* Output dmask to screen type. Set a `print' function to get actual output. * Used for things like "stats". */ im_type_desc im__output_dmask_screen = { IM_TYPE_DMASK, /* It's a mask */ sizeof( im_mask_object ), /* Storage for mask object */ IM_TYPE_OUTPUT, /* It's an output argument */ mask_init, /* Init function */ dmask_dest /* Destroy function */ }; /* Init function for double input. */ static int input_double_init( im_object *obj, char *str ) { double *d = (double *) *obj; *d = g_ascii_strtod( str, NULL ); return( 0 ); } /* Input double type. */ im_type_desc im__input_double = { IM_TYPE_DOUBLE, /* It's a double */ sizeof( double ), /* Memory to allocate */ IM_TYPE_ARG, /* It requires a command-line arg */ input_double_init, /* Init function */ NULL /* Destroy function */ }; /* im_doublevec_object destroy function. */ static int doublevec_dest( im_object obj ) { im_doublevec_object *dv = obj; if( dv->vec ) { g_free( dv->vec ); dv->vec = NULL; dv->n = 0; } return( 0 ); } /* Init function for doublevec input. */ static int input_doublevec_init( im_object *obj, char *str ) { im_doublevec_object *dv = *obj; char **strv; int nargs; int i; strv = g_strsplit( str, VEC_SEPS, -1 ); nargs = g_strv_length( strv ); if( !(dv->vec = VIPS_ARRAY( NULL, nargs, double )) ) { g_strfreev( strv ); return( -1 ); } dv->n = nargs; for( i = 0; i < nargs; i++ ) { dv->vec[i] = g_ascii_strtod( strv[i], NULL ); if( errno ) { vips_error_system( errno, "input_doublevec_init", _( "bad double \"%s\"" ), strv[i] ); g_strfreev( strv ); return( -1 ); } } g_strfreev( strv ); return( 0 ); } /* Input double vector type. */ im_type_desc im__input_doublevec = { IM_TYPE_DOUBLEVEC, /* It's an array of double */ sizeof( im_doublevec_object ), /* Memory to allocate in vec build */ IM_TYPE_ARG, /* It requires a command-line arg */ input_doublevec_init, /* Init function */ doublevec_dest /* Destroy function */ }; /* Print function for doublevec output. */ int im__dvprint( im_object obj ) { im_doublevec_object *dv = obj; int i; for( i = 0; i < dv->n; i++ ) printf( "%G ", dv->vec[i] ); printf( "\n" ); return( 0 ); } /* Output double vector type. */ im_type_desc im__output_doublevec = { IM_TYPE_DOUBLEVEC, /* It's an array of double */ sizeof( im_doublevec_object ), /* Memory to allocate in vec build */ IM_TYPE_OUTPUT, /* Output type */ NULL, /* Init function */ doublevec_dest /* Destroy function */ }; /* im_intvec_object destroy function. */ static int intvec_dest( im_object obj ) { im_intvec_object *iv = obj; if( iv->vec ) { g_free( iv->vec ); iv->vec = NULL; iv->n = 0; } return( 0 ); } /* Init function for intvec input. */ static int input_intvec_init( im_object *obj, char *str ) { im_intvec_object *iv = *obj; char **strv; int nargs; int i; strv = g_strsplit( str, VEC_SEPS, -1 ); nargs = g_strv_length( strv ); if( !(iv->vec = VIPS_ARRAY( NULL, nargs, int )) ) { g_strfreev( strv ); return( -1 ); } iv->n = nargs; for( i = 0; i < nargs; i++ ) { long int val= strtol( strv[i], NULL, 10 ); if( errno ) { vips_error_system( errno, "input_intvec_init", _( "bad integer \"%s\"" ), strv[i] ); g_strfreev( strv ); return( -1 ); } if( INT_MAX < val || INT_MIN > val ) { vips_error( "input_intvec_init", "%ld overflows integer type", val ); } iv->vec[i] = (int) val; } g_strfreev( strv ); return( 0 ); } /* Input int vector type. */ im_type_desc im__input_intvec = { IM_TYPE_INTVEC, /* It's an array of int */ sizeof( im_intvec_object ), /* Memory to allocate in vec build */ IM_TYPE_ARG, /* It requires a command-line arg */ input_intvec_init, /* Init function */ intvec_dest /* Destroy function */ }; /* Print function for intvec output. */ int im__ivprint( im_object obj ) { im_intvec_object *iv = obj; int i; for( i = 0; i < iv->n; i++ ) printf( "%d ", iv->vec[i] ); printf( "\n" ); return( 0 ); } /* Output int vector type. */ im_type_desc im__output_intvec = { IM_TYPE_INTVEC, /* It's an array of int */ sizeof( im_intvec_object ), /* Memory to allocate in vec build */ IM_TYPE_OUTPUT, /* Output arg */ (im_init_obj_fn)NULL, /* Init function */ (im_dest_obj_fn)intvec_dest /* Destroy function */ }; /* Init function for int input. */ static int input_int_init( im_object *obj, char *str ) { int *i = (int *) *obj; if( sscanf( str, "%d", i ) != 1 ) { vips_error( "input_int", "%s", _( "bad format" ) ); return( -1 ); } return( 0 ); } /* Input int type. */ im_type_desc im__input_int = { IM_TYPE_INT, /* It's an int */ sizeof( int ), /* Memory to allocate */ IM_TYPE_ARG, /* It requires a command-line arg */ input_int_init, /* Init function */ NULL /* Destroy function */ }; /* Init function for string input. */ static int input_string_init( im_object *obj, char *str ) { if( !(*obj = (im_object) im_strdup( NULL, str )) ) return( -1 ); return( 0 ); } /* Input string type. */ im_type_desc im__input_string = { IM_TYPE_STRING, /* It's a string */ 0, /* Memory to allocate */ IM_TYPE_ARG, /* It requires a command-line arg */ input_string_init, /* Init function */ vips_free /* Destroy function */ }; /* Output string type. */ im_type_desc im__output_string = { IM_TYPE_STRING, /* It's a string */ 0, /* Memory to allocate */ IM_TYPE_OUTPUT, /* It's an output argument */ NULL, /* Init function */ vips_free /* Destroy function */ }; /* Output double type. */ im_type_desc im__output_double = { IM_TYPE_DOUBLE, /* It's a double */ sizeof( double ), /* Memory to allocate */ IM_TYPE_OUTPUT, /* It's an output argument */ NULL, /* Init function */ NULL /* Destroy function */ }; /* Output complex type. */ im_type_desc im__output_complex = { IM_TYPE_COMPLEX, /* It's a complex */ 2 * sizeof( double ), /* Memory to allocate */ IM_TYPE_OUTPUT, /* It's an output argument */ NULL, /* Init function */ NULL /* Destroy function */ }; /* Output int type. */ im_type_desc im__output_int = { IM_TYPE_INT, /* It's an int */ sizeof( int ), /* Memory to allocate */ IM_TYPE_OUTPUT, /* It's an output argument */ NULL, /* Init function */ NULL /* Destroy function */ }; /* Print function for int output. */ int im__iprint( im_object obj ) { int *i = (int *) obj; printf( "%d\n", *i ); return( 0 ); } /* Print function for string output. */ int im__sprint( im_object obj ) { char *s = (char *) obj; printf( "%s\n", s ); return( 0 ); } /* Print function for double output. */ int im__dprint( im_object obj ) { double *d = (double *) obj; printf( "%G\n", *d ); return( 0 ); } /* Print function for complex output. */ int im__cprint( im_object obj ) { double *d = (double *) obj; printf( "%G %G\n", d[0], d[1] ); return( 0 ); } /* Statistics to stdout. */ int im__dmsprint( im_object obj ) { DOUBLEMASK *mask = ((im_mask_object *) obj)->mask; double *row; int i, j; /* Print statistics band stats eg: 2 bands:b 0,1 */ printf( "band minimum maximum sum " "sum^2 mean deviation\n" ); for( j = 0; j < mask->ysize; j++ ) { row = mask->coeff + j * mask->xsize; if( j == 0 ) printf( "all" ); else printf( "%2d ", j ); for( i = 0; i < 6; i++ ) printf( "%12g", row[i] ); printf( "\n" ); } return( 0 ); } /* GValue */ /* Init function for input gvalue. Just make a string ... will get cast to * whatever later. */ static int input_gvalue_init( im_object *obj, char *str ) { GValue *value = *obj; g_value_init( value, G_TYPE_STRING ); g_value_set_string( value, str ); return( 0 ); } static int gvalue_free( im_object obj ) { GValue *value = obj; /* If it's just zeros (built but not used) we'll get an error if we * unset(). */ if( G_IS_VALUE( value ) ) g_value_unset( value ); return( 0 ); } /* Input GValue type. */ im_type_desc im__input_gvalue = { IM_TYPE_GVALUE, sizeof( GValue ), /* Need some storage */ IM_TYPE_ARG, /* It requires a command-line arg */ (im_init_obj_fn) input_gvalue_init, /* Init function */ (im_dest_obj_fn) gvalue_free /* Destroy function */ }; int im__gprint( im_object obj ) { GValue *value = obj; char *str_value; str_value = g_strdup_value_contents( value ); printf( "%s\n", str_value ); g_free( str_value ); return( 0 ); } /* Init function for output gvalue. Just init to zero. */ static int output_gvalue_init( im_object *obj ) { GValue *value = *obj; memset( value, 0, sizeof( GValue ) ); return( 0 ); } im_type_desc im__output_gvalue = { IM_TYPE_GVALUE, sizeof( GValue ), /* Need some storage */ IM_TYPE_OUTPUT, /* No arg needed (just print) */ (im_init_obj_fn) output_gvalue_init, /* Init function */ (im_dest_obj_fn) gvalue_free /* Destroy function */ }; /* Init function for input interpolate. * * This is used as a helper function by the C++ interface, so amke it public. */ int vips__input_interpolate_init( im_object *obj, char *str ) { GType type = g_type_from_name( "VipsInterpolate" ); VipsObjectClass *class = VIPS_OBJECT_CLASS( g_type_class_ref( type ) ); VipsObject *object; g_assert( class ); if( !(object = vips_object_new_from_string( class, str )) ) return( -1 ); if( vips_object_build( object ) ) { g_object_unref( object ); return( -1 ); } *obj = object; return( 0 ); } static int input_interpolate_dest( im_object obj ) { g_object_unref( (GObject *) obj ); return( 0 ); } im_type_desc im__input_interpolate = { IM_TYPE_INTERPOLATE, 0, /* No storage required */ IM_TYPE_ARG, /* It requires a command-line arg */ vips__input_interpolate_init, /* Init function */ input_interpolate_dest /* Destroy function */ }; libvips-8.9.1/libvips/deprecated/fits.c000066400000000000000000000045511361153320700200700ustar00rootroot00000000000000/* Read FITS files with cfitsio * * 13/12/11 * - just a compat stub now */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include int im_fits2vips( const char *filename, VipsImage *out ) { VipsImage *t; if( vips_fitsload( filename, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_vips2fits( VipsImage *in, const char *filename ) { if( vips_fitssave( in, filename, NULL ) ) return( -1 ); return( 0 ); } static int isfits( const char *name ) { return( vips_foreign_is_a( "fitsload", name ) ); } static const char *fits_suffs[] = { ".fits", NULL }; /* fits format adds no new members. */ typedef VipsFormat VipsFormatFits; typedef VipsFormatClass VipsFormatFitsClass; static void vips_format_fits_class_init( VipsFormatFitsClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "fits"; object_class->description = _( "FITS" ); format_class->is_a = isfits; format_class->load = im_fits2vips; format_class->save = im_vips2fits; format_class->suffs = fits_suffs; } static void vips_format_fits_init( VipsFormatFits *object ) { } G_DEFINE_TYPE( VipsFormatFits, vips_format_fits, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/format.c000066400000000000000000000247031361153320700204140ustar00rootroot00000000000000/* VIPS function dispatch tables for image format load/save. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* To iterate over supported formats, we build a temp list of subclasses of * VipsFormat, sort by priority, iterate, and free. */ static void * format_add_class( VipsFormatClass *format, GSList **formats ) { if( !G_TYPE_IS_ABSTRACT( G_OBJECT_CLASS_TYPE( format ) ) ) /* Append so we don't reverse the list of formats. */ *formats = g_slist_append( *formats, format ); return( NULL ); } static gint format_compare( VipsFormatClass *a, VipsFormatClass *b ) { return( b->priority - a->priority ); } /** * vips_format_map: (skip) * @fn: function to apply to each #VipsFormatClass * @a: user data * @b: user data * * Apply a function to every %VipsFormatClass that VIPS knows about. Formats * are presented to the function in priority order. * * Like all VIPS map functions, if @fn returns %NULL, iteration continues. If * it returns non-%NULL, iteration terminates and that value is returned. The * map function returns %NULL if all calls return %NULL. * * See also: im_slist_map(). * * Returns: the result of iteration */ void * vips_format_map( VSListMap2Fn fn, void *a, void *b ) { GSList *formats; void *result; formats = NULL; (void) vips_class_map_all( g_type_from_name( "VipsFormat" ), (VipsClassMapFn) format_add_class, (void *) &formats ); formats = g_slist_sort( formats, (GCompareFunc) format_compare ); result = im_slist_map2( formats, fn, a, b ); g_slist_free( formats ); return( result ); } /* Abstract base class for image formats. */ G_DEFINE_ABSTRACT_TYPE( VipsFormat, vips_format, VIPS_TYPE_OBJECT ); static void vips_format_summary_class( VipsObjectClass *object_class, VipsBuf *buf ) { VipsFormatClass *class = VIPS_FORMAT_CLASS( object_class ); VIPS_OBJECT_CLASS( vips_format_parent_class )-> summary_class( object_class, buf ); vips_buf_appends( buf, ", " ); if( class->suffs ) { const char **p; vips_buf_appends( buf, "(" ); for( p = class->suffs; *p; p++ ) { vips_buf_appendf( buf, "%s", *p ); if( p[1] ) vips_buf_appends( buf, ", " ); } vips_buf_appends( buf, ") " ); } if( class->is_a ) vips_buf_appends( buf, "is_a " ); if( class->header ) vips_buf_appends( buf, "header " ); if( class->load ) vips_buf_appends( buf, "load " ); if( class->save ) vips_buf_appends( buf, "save " ); if( class->get_flags ) vips_buf_appends( buf, "get_flags " ); } static void vips_format_class_init( VipsFormatClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; object_class->nickname = "format"; object_class->description = _( "VIPS file formats" ); object_class->summary_class = vips_format_summary_class; /* Hide from UI. */ object_class->deprecated = TRUE; } static void vips_format_init( VipsFormat *object ) { } /** * vips_format_get_flags: * @format: format to test * @filename: file to test * * Get a set of flags for this file. * * Returns: flags for this format and file */ VipsFormatFlags vips_format_get_flags( VipsFormatClass *format, const char *filename ) { return( format->get_flags ? format->get_flags( filename ) : 0 ); } /* VIPS format class. */ static const char *vips_suffs[] = { ".v", ".vips", NULL }; int im_isvips( const char *filename ) { unsigned char buf[4]; if( im__get_bytes( filename, buf, 4 ) ) { if( buf[0] == 0x08 && buf[1] == 0xf2 && buf[2] == 0xa6 && buf[3] == 0xb6 ) /* SPARC-order VIPS image. */ return( 1 ); else if( buf[3] == 0x08 && buf[2] == 0xf2 && buf[1] == 0xa6 && buf[0] == 0xb6 ) /* INTEL-order VIPS image. */ return( 1 ); } return( 0 ); } static int file2vips( const char *filename, IMAGE *out ) { IMAGE *im; if( !(im = im_open_local( out, filename, "r" )) || im_copy( im, out ) ) return( -1 ); return( 0 ); } static VipsFormatFlags vips_flags( const char *filename ) { VipsFormatFlags flags; unsigned char buf[4]; flags = VIPS_FORMAT_PARTIAL; if( im__get_bytes( filename, buf, 4 ) && buf[0] == 0x08 && buf[1] == 0xf2 && buf[2] == 0xa6 && buf[3] == 0xb6 ) flags |= VIPS_FORMAT_BIGENDIAN; return( flags ); } /* Vips format adds no new members. */ typedef VipsFormat VipsFormatVips; typedef VipsFormatClass VipsFormatVipsClass; static int vips_format_vips_save( VipsImage *image, const char *filename ) { return( vips_image_write_to_file( image, filename, NULL ) ); } static void vips_format_vips_class_init( VipsFormatVipsClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "vips"; object_class->description = _( "VIPS" ); format_class->priority = 200; format_class->is_a = im_isvips; format_class->header = file2vips; format_class->load = file2vips; format_class->save = vips_format_vips_save; format_class->get_flags = vips_flags; format_class->suffs = vips_suffs; } static void vips_format_vips_init( VipsFormatVips *object ) { } G_DEFINE_TYPE( VipsFormatVips, vips_format_vips, VIPS_TYPE_FORMAT ); /* Called on startup: register the base vips formats. */ void im__format_init( void ) { extern GType vips_format_csv_get_type( void ); extern GType vips_format_ppm_get_type( void ); extern GType vips_format_analyze_get_type( void ); extern GType vips_format_rad_get_type( void ); vips_format_vips_get_type(); #ifdef HAVE_JPEG extern GType vips_format_jpeg_get_type( void ); vips_format_jpeg_get_type(); #endif /*HAVE_JPEG*/ #ifdef HAVE_PNG extern GType vips_format_png_get_type( void ); vips_format_png_get_type(); #endif /*HAVE_PNG*/ #ifdef HAVE_LIBWEBP extern GType vips_format_webp_get_type( void ); vips_format_webp_get_type(); #endif /*HAVE_LIBWEBP*/ vips_format_csv_get_type(); vips_format_ppm_get_type(); vips_format_analyze_get_type(); #ifdef HAVE_OPENEXR extern GType vips_format_exr_get_type( void ); vips_format_exr_get_type(); #endif /*HAVE_OPENEXR*/ #ifdef HAVE_MATIO extern GType vips_format_mat_get_type( void ); vips_format_mat_get_type(); #endif /*HAVE_MATIO*/ #ifdef HAVE_CFITSIO extern GType vips_format_fits_get_type( void ); vips_format_fits_get_type(); #endif /*HAVE_CFITSIO*/ vips_format_rad_get_type(); #ifdef HAVE_MAGICK extern GType vips_format_magick_get_type( void ); vips_format_magick_get_type(); #endif /*HAVE_MAGICK*/ #ifdef HAVE_TIFF extern GType vips_format_tiff_get_type( void ); vips_format_tiff_get_type(); #endif /*HAVE_TIFF*/ extern GType vips_format_openslide_get_type( void ); vips_format_openslide_get_type(); extern GType vips_format_nifti_get_type( void ); vips_format_nifti_get_type(); } /* Can this format open this file? */ static void * format_for_file_sub( VipsFormatClass *format, const char *name, const char *filename ) { if( format->is_a ) { if( format->is_a( filename ) ) return( format ); } else if( im_filename_suffix_match( filename, format->suffs ) ) return( format ); return( NULL ); } /** * vips_format_for_file: * @filename: file to find a format for * * Searches for a format you could use to load a file. * * See also: vips_format_read(), vips_format_for_name(). * * Returns: a format on success, %NULL on error */ VipsFormatClass * vips_format_for_file( const char *filename ) { char name[FILENAME_MAX]; char options[FILENAME_MAX]; VipsFormatClass *format; /* Break any options off the name ... eg. "fred.tif:jpeg,tile" * etc. */ im_filename_split( filename, name, options ); if( !im_existsf( "%s", name ) ) { im_error( "VipsFormat", _( "file \"%s\" not found" ), name ); return( NULL ); } if( !(format = (VipsFormatClass *) vips_format_map( (VSListMap2Fn) format_for_file_sub, (void *) filename, (void *) name )) ) { im_error( "VipsFormat", _( "file \"%s\" not a known format" ), name ); return( NULL ); } return( format ); } /* Can we write this filename with this format? Ignore formats without a save * method. */ static void * format_for_name_sub( VipsFormatClass *format, const char *name ) { if( format->save && im_filename_suffix_match( name, format->suffs ) ) return( format ); return( NULL ); } /** * vips_format_for_name: * @filename: name to find a format for * * Searches for a format you could use to save a file. * * See also: vips_format_write(), vips_format_for_file(). * * Returns: a format on success, %NULL on error */ VipsFormatClass * vips_format_for_name( const char *filename ) { VipsFormatClass *format; if( !(format = (VipsFormatClass *) vips_format_map( (VSListMap2Fn) format_for_name_sub, (void *) filename, NULL )) ) { im_error( "VipsFormat", _( "\"%s\" is not a supported image format." ), filename ); return( NULL ); } return( format ); } /** * vips_format_read: * @filename: file to load * @out: write the file to this image * * Searches for a format for this file, then loads the file into @out. * * See also: vips_format_write(). * * Returns: 0 on success, -1 on error */ int vips_format_read( const char *filename, IMAGE *out ) { VipsFormatClass *format; if( !(format = vips_format_for_file( filename )) || format->load( filename, out ) ) return( -1 ); return( 0 ); } /** * vips_format_write: * @in: image to write * @filename: file to write to * * Searches for a format for this name, then saves @im to it. * * See also: vips_format_read(). * * Returns: 0 on success, -1 on error */ int vips_format_write( IMAGE *in, const char *filename ) { VipsFormatClass *format; if( !(format = vips_format_for_name( filename )) || format->save( in, filename ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/deprecated/format_dispatch.c000066400000000000000000000250331361153320700222700ustar00rootroot00000000000000/* VIPS function dispatch tables for image format load/save. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include static int jpeg2vips_vec( im_object *argv ) { char *in = argv[0]; IMAGE *out = argv[1]; if( im_jpeg2vips( in, out ) ) return( -1 ); return( 0 ); } static im_arg_desc jpeg2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static im_function jpeg2vips_desc = { "im_jpeg2vips", /* Name */ "convert from jpeg", /* Description */ 0, /* Flags */ jpeg2vips_vec, /* Dispatch function */ IM_NUMBER( jpeg2vips_args ), /* Size of arg list */ jpeg2vips_args /* Arg list */ }; static int vips2dz_vec( im_object *argv ) { IMAGE *in = argv[0]; char *out = argv[1]; if( im_vips2dz( in, out ) ) return( -1 ); return( 0 ); } static im_arg_desc vips2dz_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_STRING( "out" ) }; static im_function vips2dz_desc = { "im_vips2dz", /* Name */ "save as deepzoom", /* Description */ 0, /* Flags */ vips2dz_vec, /* Dispatch function */ IM_NUMBER( vips2dz_args ), /* Size of arg list */ vips2dz_args /* Arg list */ }; static int vips2jpeg_vec( im_object *argv ) { IMAGE *in = argv[0]; char *out = argv[1]; if( im_vips2jpeg( in, out ) ) return( -1 ); return( 0 ); } static im_arg_desc vips2jpeg_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_STRING( "out" ) }; static im_function vips2jpeg_desc = { "im_vips2jpeg", /* Name */ "convert to jpeg", /* Description */ 0, /* Flags */ vips2jpeg_vec, /* Dispatch function */ IM_NUMBER( vips2jpeg_args ), /* Size of arg list */ vips2jpeg_args /* Arg list */ }; static int vips2mimejpeg_vec( im_object *argv ) { IMAGE *in = argv[0]; int qfac = *((int *) argv[1]); if( im_vips2mimejpeg( in, qfac ) ) return( -1 ); return( 0 ); } static im_arg_desc vips2mimejpeg_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_INT( "qfac" ) }; static im_function vips2mimejpeg_desc = { "im_vips2mimejpeg", /* Name */ "convert to jpeg as mime type on stdout", /* Description */ 0, /* Flags */ vips2mimejpeg_vec, /* Dispatch function */ IM_NUMBER( vips2mimejpeg_args ), /* Size of arg list */ vips2mimejpeg_args /* Arg list */ }; /* Args for vips2png. */ static im_arg_desc vips2png_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_STRING( "out" ) }; /* Call im_vips2png via arg vector. */ static int vips2png_vec( im_object *argv ) { return( im_vips2png( argv[0], argv[1] ) ); } /* Description of im_vips2png. */ static im_function vips2png_desc = { "im_vips2png", /* Name */ "convert VIPS image to PNG file", /* Description */ 0, vips2png_vec, /* Dispatch function */ IM_NUMBER( vips2png_args ), /* Size of arg list */ vips2png_args /* Arg list */ }; /* Args for png2vips. */ static im_arg_desc png2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_png2vips via arg vector. */ static int png2vips_vec( im_object *argv ) { return( im_png2vips( argv[0], argv[1] ) ); } /* Description of im_png2vips. */ static im_function png2vips_desc = { "im_png2vips", /* Name */ "convert PNG file to VIPS image", /* Description */ 0, png2vips_vec, /* Dispatch function */ IM_NUMBER( png2vips_args ), /* Size of arg list */ png2vips_args /* Arg list */ }; /* Args for exr2vips. */ static im_arg_desc exr2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_exr2vips via arg vector. */ static int exr2vips_vec( im_object *argv ) { return( im_exr2vips( argv[0], argv[1] ) ); } /* Description of im_exr2vips. */ static im_function exr2vips_desc = { "im_exr2vips", /* Name */ "convert an OpenEXR file to VIPS", /* Description */ 0, exr2vips_vec, /* Dispatch function */ IM_NUMBER( exr2vips_args ), /* Size of arg list */ exr2vips_args /* Arg list */ }; /* Args for vips2tiff. */ static im_arg_desc vips2tiff_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_STRING( "out" ) }; /* Call im_vips2tiff via arg vector. */ static int vips2tiff_vec( im_object *argv ) { return( im_vips2tiff( argv[0], argv[1] ) ); } /* Description of im_vips2tiff. */ static im_function vips2tiff_desc = { "im_vips2tiff", /* Name */ "convert VIPS image to TIFF file", /* Description */ 0, vips2tiff_vec, /* Dispatch function */ IM_NUMBER( vips2tiff_args ), /* Size of arg list */ vips2tiff_args /* Arg list */ }; /* Args for magick2vips. */ static im_arg_desc magick2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_magick2vips via arg vector. */ static int magick2vips_vec( im_object *argv ) { return( im_magick2vips( argv[0], argv[1] ) ); } /* Description of im_magick2vips. */ static im_function magick2vips_desc = { "im_magick2vips", /* Name */ "load file with libMagick", /* Description */ 0, magick2vips_vec, /* Dispatch function */ IM_NUMBER( magick2vips_args ), /* Size of arg list */ magick2vips_args /* Arg list */ }; /* Args for tiff2vips. */ static im_arg_desc tiff2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_tiff2vips via arg vector. */ static int tiff2vips_vec( im_object *argv ) { return( im_tiff2vips( argv[0], argv[1] ) ); } /* Description of im_tiff2vips. */ static im_function tiff2vips_desc = { "im_tiff2vips", /* Name */ "convert TIFF file to VIPS image", /* Description */ 0, tiff2vips_vec, /* Dispatch function */ IM_NUMBER( tiff2vips_args ), /* Size of arg list */ tiff2vips_args /* Arg list */ }; static int analyze2vips_vec( im_object *argv ) { const char *in = argv[0]; IMAGE *out = argv[1]; return( im_analyze2vips( in, out ) ); } static im_arg_desc analyze2vips_arg_types[] = { IM_INPUT_STRING( "filename" ), IM_OUTPUT_IMAGE( "im" ) }; static im_function analyze2vips_desc = { "im_analyze2vips", /* Name */ "read a file in analyze format",/* Description */ 0, /* Flags */ analyze2vips_vec, /* Dispatch function */ IM_NUMBER( analyze2vips_arg_types ),/* Size of arg list */ analyze2vips_arg_types /* Arg list */ }; static int csv2vips_vec( im_object *argv ) { const char *in = argv[0]; IMAGE *out = argv[1]; return( im_csv2vips( in, out ) ); } static im_arg_desc csv2vips_arg_types[] = { IM_INPUT_STRING( "filename" ), IM_OUTPUT_IMAGE( "im" ) }; static im_function csv2vips_desc = { "im_csv2vips", /* Name */ "read a file in csv format",/* Description */ 0, /* Flags */ csv2vips_vec, /* Dispatch function */ IM_NUMBER( csv2vips_arg_types ),/* Size of arg list */ csv2vips_arg_types /* Arg list */ }; static int vips2csv_vec( im_object *argv ) { IMAGE *in = argv[0]; const char *filename = argv[1]; return( im_vips2csv( in, filename ) ); } static im_arg_desc vips2csv_arg_types[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_STRING( "filename" ) }; static im_function vips2csv_desc = { "im_vips2csv", /* Name */ "write an image in csv format", /* Description */ 0, /* Flags */ vips2csv_vec, /* Dispatch function */ IM_NUMBER( vips2csv_arg_types ),/* Size of arg list */ vips2csv_arg_types /* Arg list */ }; static int ppm2vips_vec( im_object *argv ) { const char *in = argv[0]; IMAGE *out = argv[1]; return( im_ppm2vips( in, out ) ); } static im_arg_desc ppm2vips_arg_types[] = { IM_INPUT_STRING( "filename" ), IM_OUTPUT_IMAGE( "im" ) }; static im_function ppm2vips_desc = { "im_ppm2vips", /* Name */ "read a file in pbm/pgm/ppm format", /* Description */ 0, /* Flags */ ppm2vips_vec, /* Dispatch function */ IM_NUMBER( ppm2vips_arg_types ),/* Size of arg list */ ppm2vips_arg_types /* Arg list */ }; static int vips2ppm_vec( im_object *argv ) { IMAGE *im = argv[0]; const char *filename = argv[1]; return( im_vips2ppm( im, filename ) ); } static im_arg_desc vips2ppm_arg_types[] = { IM_INPUT_IMAGE( "im" ), IM_INPUT_STRING( "filename" ) }; static im_function vips2ppm_desc = { "im_vips2ppm", /* Name */ "write a file in pbm/pgm/ppm format", /* Description */ 0, /* Flags */ vips2ppm_vec, /* Dispatch function */ IM_NUMBER( vips2ppm_arg_types ),/* Size of arg list */ vips2ppm_arg_types /* Arg list */ }; static int fits2vips_vec( im_object *argv ) { char *in = argv[0]; IMAGE *out = argv[1]; if( im_fits2vips( in, out ) ) return( -1 ); return( 0 ); } static im_arg_desc fits2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static im_function fits2vips_desc = { "im_fits2vips", /* Name */ "convert from fits", /* Description */ 0, /* Flags */ fits2vips_vec, /* Dispatch function */ IM_NUMBER( fits2vips_args ), /* Size of arg list */ fits2vips_args /* Arg list */ }; /* Package up all these functions. */ static im_function *list[] = { &csv2vips_desc, &fits2vips_desc, &jpeg2vips_desc, &magick2vips_desc, &png2vips_desc, &exr2vips_desc, &ppm2vips_desc, &analyze2vips_desc, &tiff2vips_desc, &vips2csv_desc, &vips2dz_desc, &vips2jpeg_desc, &vips2mimejpeg_desc, &vips2png_desc, &vips2ppm_desc, &vips2tiff_desc }; /* Package of functions. */ im_package im__format = { "format", IM_NUMBER( list ), list }; libvips-8.9.1/libvips/deprecated/freq_dispatch.c000066400000000000000000000172371361153320700217440ustar00rootroot00000000000000/* Function dispatch tables for freq_filt. * * J. Cupitt, 23/2/95 * 22/4/97 JC * - oops, im_freqflt() was wrong */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Args to im_create_fmask(). */ static im_arg_desc create_fmask_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ), IM_INPUT_INT( "type" ), IM_INPUT_DOUBLE( "p1" ), IM_INPUT_DOUBLE( "p2" ), IM_INPUT_DOUBLE( "p3" ), IM_INPUT_DOUBLE( "p4" ), IM_INPUT_DOUBLE( "p5" ) }; /* Call im_create_fmask via arg vector. */ static int create_fmask_vec( im_object *argv ) { int width = *((int *) argv[1]); int height = *((int *) argv[2]); int type = *((int *) argv[3]); double p1 = *((double *) argv[4]); double p2 = *((double *) argv[5]); double p3 = *((double *) argv[6]); double p4 = *((double *) argv[7]); double p5 = *((double *) argv[8]); return( im_create_fmask( argv[0], width, height, type, p1, p2, p3, p4, p5 ) ); } /* Description of im_create_fmask. */ static im_function create_fmask_desc = { "im_create_fmask", /* Name */ "create frequency domain filter mask", 0, /* Flags */ create_fmask_vec, /* Dispatch function */ IM_NUMBER( create_fmask_args ), /* Size of arg list */ create_fmask_args /* Arg list */ }; /* Args to im_flt_image_freq(). */ static im_arg_desc flt_image_freq_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "type" ), IM_INPUT_DOUBLE( "p1" ), IM_INPUT_DOUBLE( "p2" ), IM_INPUT_DOUBLE( "p3" ), IM_INPUT_DOUBLE( "p4" ), IM_INPUT_DOUBLE( "p5" ) }; /* Call im_flt_image_freq via arg vector. */ static int flt_image_freq_vec( im_object *argv ) { int type = *((int *) argv[2]); double p1 = *((double *) argv[3]); double p2 = *((double *) argv[4]); double p3 = *((double *) argv[5]); double p4 = *((double *) argv[6]); double p5 = *((double *) argv[7]); return( im_flt_image_freq( argv[0], argv[1], type, p1, p2, p3, p4, p5 ) ); } /* Description of im_flt_image_freq. */ static im_function flt_image_freq_desc = { "im_flt_image_freq", /* Name */ "frequency domain filter image", 0, /* Flags */ flt_image_freq_vec, /* Dispatch function */ IM_NUMBER( flt_image_freq_args ), /* Size of arg list */ flt_image_freq_args /* Arg list */ }; /* Args to im_fractsurf(). */ static im_arg_desc fractsurf_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "size" ), IM_INPUT_DOUBLE( "dimension" ) }; /* Call im_fractsurf via arg vector. */ static int fractsurf_vec( im_object *argv ) { int size = *((int *) argv[1]); double dim = *((double *) argv[2]); return( im_fractsurf( argv[0], size, dim ) ); } /* Description of im_fractsurf. */ static im_function fractsurf_desc = { "im_fractsurf", /* Name */ "generate a fractal surface of given dimension", IM_FN_TRANSFORM, /* Flags */ fractsurf_vec, /* Dispatch function */ IM_NUMBER( fractsurf_args ), /* Size of arg list */ fractsurf_args /* Arg list */ }; /* Args to im_freqflt(). */ static im_arg_desc freqflt_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_IMAGE( "mask" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_freqflt via arg vector. */ static int freqflt_vec( im_object *argv ) { return( im_freqflt( argv[0], argv[1], argv[2] ) ); } /* Description of im_freqflt. */ static im_function freqflt_desc = { "im_freqflt", /* Name */ "frequency-domain filter of in with mask", IM_FN_TRANSFORM, /* Flags */ freqflt_vec, /* Dispatch function */ IM_NUMBER( freqflt_args ), /* Size of arg list */ freqflt_args /* Arg list */ }; /* Call im_disp_ps via arg vector. */ static int disp_ps_vec( im_object *argv ) { return( im_disp_ps( argv[0], argv[1] ) ); } /* Description of im_disp_ps. */ static im_function disp_ps_desc = { "im_disp_ps", /* Name */ "make displayable power spectrum", IM_FN_TRANSFORM, /* Flags */ disp_ps_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_rotquad via arg vector. */ static int rotquad_vec( im_object *argv ) { return( im_rotquad( argv[0], argv[1] ) ); } /* Description of im_rotquad. */ static im_function rotquad_desc = { "im_rotquad", /* Name */ "rotate image quadrants to move origin to centre", IM_FN_TRANSFORM, /* Flags */ rotquad_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_fwfft via arg vector. */ static int fwfft_vec( im_object *argv ) { return( im_fwfft( argv[0], argv[1] ) ); } /* Description of im_fwfft. */ static im_function fwfft_desc = { "im_fwfft", /* Name */ "forward fast-fourier transform", IM_FN_TRANSFORM, /* Flags */ fwfft_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_invfft via arg vector. */ static int invfft_vec( im_object *argv ) { return( im_invfft( argv[0], argv[1] ) ); } /* Description of im_invfft. */ static im_function invfft_desc = { "im_invfft", /* Name */ "inverse fast-fourier transform", IM_FN_TRANSFORM, /* Flags */ invfft_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_invfftr via arg vector. */ static int invfftr_vec( im_object *argv ) { return( im_invfftr( argv[0], argv[1] ) ); } /* Description of im_invfftr. */ static im_function invfftr_desc = { "im_invfftr", /* Name */ "real part of inverse fast-fourier transform", IM_FN_TRANSFORM, /* Flags */ invfftr_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_phasecor_fft via arg vector. */ static int phasecor_fft_vec( im_object *argv ) { return( im_phasecor_fft( argv[0], argv[1], argv[2] ) ); } /* Description of im_phasecor_fft. */ static im_function phasecor_fft_desc = { "im_phasecor_fft", /* Name */ "non-normalised correlation of gradient of in2 within in1", IM_FN_TRANSFORM, /* Flags */ phasecor_fft_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Package up all these functions. */ static im_function *freq_list[] = { &create_fmask_desc, &disp_ps_desc, &flt_image_freq_desc, &fractsurf_desc, &freqflt_desc, &fwfft_desc, &rotquad_desc, &invfft_desc, &phasecor_fft_desc, &invfftr_desc }; /* Package of functions. */ im_package im__freq_filt = { "freq_filt", IM_NUMBER( freq_list ), freq_list }; libvips-8.9.1/libvips/deprecated/glds_funcs.c000066400000000000000000000137001361153320700212460ustar00rootroot00000000000000/* @(#) Calculates the spatial grey level differnce * @(#) matrix of an image and some of its * @(#) features. The 256x1 difference matrix of im is held by m * @(#) There should be enough margin around the box so the (dx,dy) can * @(#) access neighbouring pixels outside the box * @(#) * @(#) Usage: * @(#) int im_glds_matrix(im, m, xpos, ypos, xsize, ysize, dx, dy) * @(#) IMAGE *im, *m; * @(#) int xpos, ypos, xsize, ysize; location of the box within im * @(#) int dx, dy; displacements * @(#) * @(#) int im_glds_asm(m, asmoment) * @(#) IMAGE *m; * @(#) double *asmoment; * @(#) * @(#) int im_glds_contrast(m, contrast) * @(#) IMAGE *m; * @(#) double *contrast; * @(#) * @(#) int im_glds_entropy(m, entropy) * @(#) IMAGE *m; * @(#) double *entropy; * @(#) * @(#) int im_glds_mean(m, mean) * @(#) IMAGE *m; * @(#) double *mean; * @(#) * @(#) All functions return 0 on success and -1 on error * * Copyright: N. Dessipris, 1991 * Written on: 2/12/1991 * Modified on: * 22/7/93 JC * - im_incheck() added */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* Keep the greylevel difference matrix as a 256x1 double image */ int im_glds_matrix( IMAGE *im, IMAGE *m, int xpos, int ypos, int xsize, int ysize, int dx, int dy ) { PEL *in, *cpin; int *b, *pb; double *l, *pl; int x, y; int ofs; int tmp; int norm; if (im_iocheck(im, m) == -1) return( -1 ); if ((im->Bands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR)) { im_error( "im_glds_matrix", "%s", _( "Wrong input") ); return(-1); } if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { im_error( "im_glds_matrix", "%s", _( "wrong args") ); return(-1); } if (im_cp_desc(m, im) == -1) return( -1 ); m->Xsize = 256; m->Ysize = 1; m->BandFmt = IM_BANDFMT_DOUBLE; m->Type = IM_TYPE_B_W; if (im_setupout(m) == -1) return( -1 ); b = (int *)calloc( (unsigned)m->Xsize, sizeof(int) ); l = (double *)calloc( (unsigned)m->Xsize, sizeof(double)); if ( (b == NULL) || (l == NULL) ) { im_error( "im_glds_matrix", "%s", _( "calloc failed") ); return(-1); } in = (PEL*)im->data; in += ( ypos * im->Xsize + xpos ); ofs = dy * im->Xsize + dx; for ( y=0; yXsize; for ( x=0; xXsize; x++) *pl++ = ((double)(*pb++))/(double)norm; if (im_writeline( 0, m, (PEL *) l ) == -1) return( -1 ); free((char*)b); free((char*)l); return(0); } /* @(#) Calculates the asmoment of the sglds matrix held by m */ int im_glds_asm( IMAGE *m, double *asmoment ) { double temp, tmpasm, *in; int i; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 1 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_glds_asm", "%s", _( "unable to accept input") ); return(-1);} tmpasm = 0.0; in = (double*)m->data; for(i=0; iXsize; i++) { temp = *in++; tmpasm += (temp*temp); } *asmoment = tmpasm; return(0); } /* @(#) Calculates the contrast of the coocurence matrix passed in buffer */ int im_glds_contrast( IMAGE *m, double *contrast ) { double tmpcon, *in; int i; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 1 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_glds_contrast", "%s", _( "wrong input") ); return(-1); } tmpcon = 0.0; in = (double*)m->data; for(i=0; iXsize; i++) { tmpcon += ( ((double)i)*((double)i)*(*in) ); in++; } *contrast = tmpcon; return(0); } /* @(#) Calculates the entropy of the glds vector passed in buffer * @(#) Function returns the entropy based on log base 2. */ int im_glds_entropy( IMAGE *m, double *entropy ) { double tmpent, dtemp, *in; int i; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 1 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_glds_entropy", "%s", _( "wrong input") ); return(-1); } tmpent = 0.0; in = (double*)m->data; for(i=0; iXsize; i++) { if(*in != 0) { dtemp = *in; tmpent += (dtemp*log10(dtemp)); } in++; } *entropy = ((-1)*tmpent/log10(2.0)); return(0); } /* @(#) Calculates the mean of the sglds matrix passed in m */ int im_glds_mean( IMAGE *m, double *mean ) { double tmpmean, *in; int i; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 1 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_glds_mean", "%s", _( "wrong input") ); return(-1); } tmpmean = 0.0; in = (double*)m->data; for(i=0; iXsize; i++) { tmpmean += ( ((double)i)*(*in) ); in++; } tmpmean = tmpmean/((double)m->Xsize); *mean = tmpmean; return(0); } libvips-8.9.1/libvips/deprecated/hist_dispatch.c000066400000000000000000000440471361153320700217550ustar00rootroot00000000000000/* VIPS function dispatch tables for histogram_lut. * * J. Cupitt, 24/5/95. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Args for im_gammacorrect. */ static im_arg_desc gammacorrect_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "exponent" ) }; /* Call im_gammacorrect via arg vector. */ static int gammacorrect_vec( im_object *argv ) { double exp = *((double *) argv[2]); return( im_gammacorrect( argv[0], argv[1], exp ) ); } /* Description of im_gammacorrect. */ static im_function gammacorrect_desc = { "im_gammacorrect", /* Name */ "gamma-correct image", /* Description */ IM_FN_PIO, /* Flags */ gammacorrect_vec, /* Dispatch function */ IM_NUMBER( gammacorrect_args ), /* Size of arg list */ gammacorrect_args /* Arg list */ }; /* Image plus number in, image out. */ static im_arg_desc heq_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "band_number" ) }; /* Call im_heq via arg vector. */ static int heq_vec( im_object *argv ) { int bn = *((int *) argv[2]); return( im_heq( argv[0], argv[1], bn ) ); } /* Description of im_heq. */ static im_function heq_desc = { "im_heq", /* Name */ "histogram-equalise image", /* Description */ IM_FN_PIO, /* Flags */ heq_vec, /* Dispatch function */ IM_NUMBER( heq_args ), /* Size of arg list */ heq_args /* Arg list */ }; static im_arg_desc histindexed_args[] = { IM_INPUT_IMAGE( "index" ), IM_INPUT_IMAGE( "value" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_histindexed via arg vector. */ static int histindexed_vec( im_object *argv ) { return( im_hist_indexed( argv[0], argv[1], argv[2] ) ); } /* Description of im_histindexed. */ static im_function histindexed_desc = { "im_hist_indexed", /* Name */ "make a histogram with an index image", /* Description */ IM_FN_PIO, /* Flags */ histindexed_vec, /* Dispatch function */ IM_NUMBER( histindexed_args ), /* Size of arg list */ histindexed_args /* Arg list */ }; /* Call im_hist via arg vector. */ static int hist_vec( im_object *argv ) { int bn = *((int *) argv[2]); return( im_hist( argv[0], argv[1], bn ) ); } /* Description of im_hist. */ static im_function hist_desc = { "im_hist", /* Name */ "find and graph histogram of image", /* Description */ IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ hist_vec, /* Dispatch function */ IM_NUMBER( heq_args ), /* Size of arg list */ heq_args /* Arg list */ }; /* Call im_histcum via arg vector. */ static int histcum_vec( im_object *argv ) { return( im_histcum( argv[0], argv[1] ) ); } /* Description of im_histcum. */ static im_function histcum_desc = { "im_histcum", /* Name */ "turn histogram to cumulative histogram",/* Description */ IM_FN_PIO, /* Flags */ histcum_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_histnorm via arg vector. */ static int histnorm_vec( im_object *argv ) { return( im_histnorm( argv[0], argv[1] ) ); } /* Description of im_histcum. */ static im_function histnorm_desc = { "im_histnorm", /* Name */ "form normalised histogram",/* Description */ IM_FN_PIO, /* Flags */ histnorm_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_histeq via arg vector. */ static int histeq_vec( im_object *argv ) { return( im_histeq( argv[0], argv[1] ) ); } /* Description of im_histeq. */ static im_function histeq_desc = { "im_histeq", /* Name */ "form histogram equalistion LUT",/* Description */ IM_FN_PIO, /* Flags */ histeq_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_histgr via arg vector. */ static int histgr_vec( im_object *argv ) { int bn = *((int *) argv[2]); return( im_histgr( argv[0], argv[1], bn ) ); } /* Description of im_histgr. */ static im_function histgr_desc = { "im_histgr", /* Name */ "find histogram of image", /* Description */ IM_FN_TRANSFORM, /* Flags */ histgr_vec, /* Dispatch function */ IM_NUMBER( heq_args ), /* Size of arg list */ heq_args /* Arg list */ }; /* Call im_histnD() via arg vector. */ static int histnD_vec( im_object *argv ) { int bins = *((int *) argv[2]); return( im_histnD( argv[0], argv[1], bins ) ); } /* Args for im_histnD(). */ static im_arg_desc histnD_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "bins" ) }; /* Description of im_histnD(). */ static im_function histnD_desc = { "im_histnD", /* Name */ "find 1D, 2D or 3D histogram of image", /* Description */ IM_FN_TRANSFORM, /* Flags */ histnD_vec, /* Dispatch function */ IM_NUMBER( histnD_args ), /* Size of arg list */ histnD_args /* Arg list */ }; /* Call im_histplot via arg vector. */ static int histplot_vec( im_object *argv ) { return( im_histplot( argv[0], argv[1] ) ); } /* Description of im_histplot. */ static im_function histplot_desc = { "im_histplot", /* Name */ "plot graph of histogram", /* Description */ IM_FN_PIO, /* Flags */ histplot_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args for im_histspec. */ static im_arg_desc histspec_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_IMAGE( "ref" ), IM_OUTPUT_IMAGE( "out" ), }; /* Call im_histspec via arg vector. */ static int histspec_vec( im_object *argv ) { return( im_histspec( argv[0], argv[1], argv[2] ) ); } /* Description of im_histspec. */ static im_function histspec_desc = { "im_histspec", /* Name */ "find histogram which will make pdf of in match ref", 0, /* Flags */ histspec_vec, /* Dispatch function */ IM_NUMBER( histspec_args ), /* Size of arg list */ histspec_args /* Arg list */ }; /* Call im_hsp via arg vector. */ static int hsp_vec( im_object *argv ) { return( im_hsp( argv[0], argv[1], argv[2] ) ); } /* Description of im_hsp. */ static im_function hsp_desc = { "im_hsp", /* Name */ "match stats of in to stats of ref", 0, /* Flags */ hsp_vec, /* Dispatch function */ IM_NUMBER( histspec_args ), /* Size of arg list */ histspec_args /* Arg list */ }; /* Args for im_identity. */ static im_arg_desc identity_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "nbands" ) }; /* Call im_identity via arg vector. */ static int identity_vec( im_object *argv ) { int nb = *((int *) argv[1]); return( im_identity( argv[0], nb ) ); } /* Description of im_identity. */ static im_function identity_desc = { "im_identity", /* Name */ "generate identity histogram", 0, /* Flags */ identity_vec, /* Dispatch function */ IM_NUMBER( identity_args ), /* Size of arg list */ identity_args /* Arg list */ }; /* Args for im_identity_ushort. */ static im_arg_desc identity_ushort_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "nbands" ), IM_INPUT_INT( "size" ) }; /* Call im_identity_ushort via arg vector. */ static int identity_ushort_vec( im_object *argv ) { int nb = *((int *) argv[1]); int sz = *((int *) argv[2]); return( im_identity_ushort( argv[0], nb, sz ) ); } /* Description of im_identity_ushort. */ static im_function identity_ushort_desc = { "im_identity_ushort", /* Name */ "generate ushort identity histogram", 0, /* Flags */ identity_ushort_vec, /* Dispatch function */ IM_NUMBER( identity_ushort_args ), /* Size of arg list */ identity_ushort_args /* Arg list */ }; /* Args for im_lhisteq. */ static im_arg_desc lhisteq_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Call im_lhisteq via arg vector. */ static int lhisteq_vec( im_object *argv ) { int xw = *((int *) argv[2]); int yw = *((int *) argv[3]); return( im_lhisteq( argv[0], argv[1], xw, yw ) ); } /* Description of im_lhisteq. */ static im_function lhisteq_desc = { "im_lhisteq", /* Name */ "local histogram equalisation", IM_FN_PIO, /* Flags */ lhisteq_vec, /* Dispatch function */ IM_NUMBER( lhisteq_args ), /* Size of arg list */ lhisteq_args /* Arg list */ }; /* Args for im_maplut. */ static im_arg_desc maplut_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMAGE( "lut" ) }; /* Call im_maplut via arg vector. */ static int maplut_vec( im_object *argv ) { return( im_maplut( argv[0], argv[1], argv[2] ) ); } /* Description of im_maplut. */ static im_function maplut_desc = { "im_maplut", /* Name */ "map image through LUT", IM_FN_PIO, /* Flags */ maplut_vec, /* Dispatch function */ IM_NUMBER( maplut_args ), /* Size of arg list */ maplut_args /* Arg list */ }; /* Call im_project() via arg vector. */ static int project_vec( im_object *argv ) { return( im_project( argv[0], argv[1], argv[2] ) ); } /* Args for im_project(). */ static im_arg_desc project_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "hout" ), IM_OUTPUT_IMAGE( "vout" ) }; /* Description of im_project(). */ static im_function project_desc = { "im_project", /* Name */ "find horizontal and vertical projections of an image", IM_FN_TRANSFORM, /* Flags */ project_vec, /* Dispatch function */ IM_NUMBER( project_args ), /* Size of arg list */ project_args /* Arg list */ }; /* Args for im_stdif. */ static im_arg_desc stdif_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "m0" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "s0" ), IM_INPUT_INT( "xw" ), IM_INPUT_INT( "yw" ) }; /* Call im_stdif via arg vector. */ static int stdif_vec( im_object *argv ) { double a = *((double *) argv[2]); double m0 = *((double *) argv[3]); double b = *((double *) argv[4]); double s0 = *((double *) argv[5]); int xw = *((int *) argv[6]); int yw = *((int *) argv[7]); return( im_stdif( argv[0], argv[1], a, m0, b, s0, xw, yw ) ); } /* Description of im_stdif. */ static im_function stdif_desc = { "im_stdif", /* Name */ "statistical differencing", IM_FN_PIO, /* Flags */ stdif_vec, /* Dispatch function */ IM_NUMBER( stdif_args ), /* Size of arg list */ stdif_args /* Arg list */ }; /* Args for im_buildlut. */ static im_arg_desc buildlut_args[] = { IM_INPUT_DMASK( "xyes" ), IM_OUTPUT_IMAGE( "lut" ) }; /* Call im_buildlut via arg vector. */ static int buildlut_vec( im_object *argv ) { im_mask_object *mi = argv[0]; return( im_buildlut( mi->mask, argv[1] ) ); } /* Description of im_buildlut. */ static im_function buildlut_desc = { "im_buildlut", /* Name */ "generate LUT table from set of x/y positions", 0, /* Flags */ buildlut_vec, /* Dispatch function */ IM_NUMBER( buildlut_args ),/* Size of arg list */ buildlut_args /* Arg list */ }; /* Args for im_invertlut. */ static im_arg_desc invertlut_args[] = { IM_INPUT_DMASK( "measures" ), IM_OUTPUT_IMAGE( "lut" ), IM_INPUT_INT( "lut_size" ) }; /* Call im_invertlut via arg vector. */ static int invertlut_vec( im_object *argv ) { im_mask_object *mi = argv[0]; int lut_size = *((int *) argv[2]); return( im_invertlut( mi->mask, argv[1], lut_size ) ); } /* Description of im_invertlut. */ static im_function invertlut_desc = { "im_invertlut", /* Name */ "generate correction table from set of measures", 0, /* Flags */ invertlut_vec, /* Dispatch function */ IM_NUMBER( invertlut_args ),/* Size of arg list */ invertlut_args /* Arg list */ }; /* Args for im_tone_build. */ static im_arg_desc tone_build_args[] = { IM_OUTPUT_IMAGE( "hist" ), IM_INPUT_DOUBLE( "Lb" ), IM_INPUT_DOUBLE( "Lw" ), IM_INPUT_DOUBLE( "Ps" ), IM_INPUT_DOUBLE( "Pm" ), IM_INPUT_DOUBLE( "Ph" ), IM_INPUT_DOUBLE( "S" ), IM_INPUT_DOUBLE( "M" ), IM_INPUT_DOUBLE( "H" ) }; /* Call im_tone_build via arg vector. */ static int tone_build_vec( im_object *argv ) { double Lb = *((double *) argv[1]); double Lw = *((double *) argv[2]); double Ps = *((double *) argv[3]); double Pm = *((double *) argv[4]); double Ph = *((double *) argv[5]); double S = *((double *) argv[6]); double M = *((double *) argv[7]); double H = *((double *) argv[8]); return( im_tone_build( argv[0], Lb, Lw, Ps, Pm, Ph, S, M, H ) ); } /* Description of im_tone_build. */ static im_function tone_build_desc = { "im_tone_build", /* Name */ "create LUT for tone adjustment of LabS images", 0, /* Flags */ tone_build_vec, /* Dispatch function */ IM_NUMBER( tone_build_args ), /* Size of arg list */ tone_build_args /* Arg list */ }; /* Args for im_tone_build_range. */ static im_arg_desc tone_build_range_args[] = { IM_OUTPUT_IMAGE( "hist" ), IM_INPUT_INT( "in_max" ), IM_INPUT_INT( "out_max" ), IM_INPUT_DOUBLE( "Lb" ), IM_INPUT_DOUBLE( "Lw" ), IM_INPUT_DOUBLE( "Ps" ), IM_INPUT_DOUBLE( "Pm" ), IM_INPUT_DOUBLE( "Ph" ), IM_INPUT_DOUBLE( "S" ), IM_INPUT_DOUBLE( "M" ), IM_INPUT_DOUBLE( "H" ) }; /* Call im_tone_build_range via arg vector. */ static int tone_build_range_vec( im_object *argv ) { int in_max = *((int *) argv[1]); int out_max = *((int *) argv[2]); double Lb = *((double *) argv[3]); double Lw = *((double *) argv[4]); double Ps = *((double *) argv[5]); double Pm = *((double *) argv[6]); double Ph = *((double *) argv[7]); double S = *((double *) argv[8]); double M = *((double *) argv[9]); double H = *((double *) argv[10]); return( im_tone_build_range( argv[0], in_max, out_max, Lb, Lw, Ps, Pm, Ph, S, M, H ) ); } /* Description of im_tone_build_range. */ static im_function tone_build_range_desc = { "im_tone_build_range", /* Name */ "create LUT for tone adjustment", 0, /* Flags */ tone_build_range_vec, /* Dispatch function */ IM_NUMBER( tone_build_range_args ),/* Size of arg list */ tone_build_range_args /* Arg list */ }; /* Args for im_tone_analyse. */ static im_arg_desc tone_analyse_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "hist" ), IM_INPUT_DOUBLE( "Ps" ), IM_INPUT_DOUBLE( "Pm" ), IM_INPUT_DOUBLE( "Ph" ), IM_INPUT_DOUBLE( "S" ), IM_INPUT_DOUBLE( "M" ), IM_INPUT_DOUBLE( "H" ) }; /* Call im_tone_analyse via arg vector. */ static int tone_analyse_vec( im_object *argv ) { double Ps = *((double *) argv[2]); double Pm = *((double *) argv[3]); double Ph = *((double *) argv[4]); double S = *((double *) argv[5]); double M = *((double *) argv[6]); double H = *((double *) argv[7]); return( im_tone_analyse( argv[0], argv[1], Ps, Pm, Ph, S, M, H ) ); } /* Description of im_tone_analyse. */ static im_function tone_analyse_desc = { "im_tone_analyse", /* Name */ "analyse in and create LUT for tone adjustment", 0, /* Flags */ tone_analyse_vec, /* Dispatch function */ IM_NUMBER( tone_analyse_args ), /* Size of arg list */ tone_analyse_args /* Arg list */ }; /* Args for im_ismonotonic. */ static im_arg_desc ismonotonic_args[] = { IM_INPUT_IMAGE( "lut" ), IM_OUTPUT_INT( "mono" ) }; /* Call im_ismonotonic via arg vector. */ static int ismonotonic_vec( im_object *argv ) { int *res = (int *) argv[1]; return( im_ismonotonic( argv[0], res ) ); } /* Description of im_ismonotonic. */ static im_function ismonotonic_desc = { "im_ismonotonic", /* Name */ "test LUT for monotonicity", 0, /* Flags */ ismonotonic_vec, /* Dispatch function */ IM_NUMBER( ismonotonic_args ), /* Size of arg list */ ismonotonic_args /* Arg list */ }; /* Args for im_tone_map */ static im_arg_desc tone_map_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMAGE( "lut" ) }; /* Call im_tone_map via arg vector. */ static int tone_map_vec( im_object *argv ) { return( im_tone_map( argv[0], argv[1], argv[2] ) ); } /* Description of im_tone_map. */ static im_function tone_map_desc = { "im_tone_map", /* Name */ "map L channel of LabS or LabQ image through LUT", IM_FN_PIO, /* Flags */ tone_map_vec, /* Dispatch function */ IM_NUMBER( tone_map_args ),/* Size of arg list */ tone_map_args /* Arg list */ }; /* Args for im_mpercent. */ static im_arg_desc mpercent_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_DOUBLE( "percent" ), IM_OUTPUT_INT( "thresh" ) }; /* Call im_mpercent via arg vector. */ static int mpercent_vec( im_object *argv ) { double percent = *((double *) argv[1]); return( im_mpercent( argv[0], percent, argv[2] ) ); } /* Description of im_mpercent. */ static im_function mpercent_desc = { "im_mpercent", /* Name */ "find threshold above which there are percent values", 0, /* Flags */ mpercent_vec, /* Dispatch function */ IM_NUMBER( mpercent_args ), /* Size of arg list */ mpercent_args /* Arg list */ }; /* Package up all these functions. */ static im_function *hist_list[] = { &gammacorrect_desc, &heq_desc, &hist_desc, &histcum_desc, &histeq_desc, &histindexed_desc, &histgr_desc, &histnD_desc, &histnorm_desc, &histplot_desc, &histspec_desc, &hsp_desc, &identity_desc, &identity_ushort_desc, &ismonotonic_desc, &lhisteq_desc, &mpercent_desc, &invertlut_desc, &buildlut_desc, &maplut_desc, &project_desc, &stdif_desc, &tone_analyse_desc, &tone_build_desc, &tone_build_range_desc, &tone_map_desc }; /* Package of functions. */ im_package im__histograms_lut = { "histograms_lut", IM_NUMBER( hist_list ), hist_list }; libvips-8.9.1/libvips/deprecated/im_align_bands.c000066400000000000000000000053151361153320700220500ustar00rootroot00000000000000/* * Brute force align the bands of an image. * * Copyright: Nottingham Trent University * Author: Tom Vajzovic * Written on: 2008-02-04 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /** * im_align_bands: * @in: image to align * @out: output image * * This operation uses im_phasecor_fft() to find an integer displacement to * align all image bands band 0. It is very slow and not very accurate. * * Use im_estpar() in preference: it's fast and accurate. * * See also: im_global_balancef(), im_remosaic(). * * Returns: 0 on success, -1 on error */ int im_align_bands( IMAGE *in, IMAGE *out ){ #define FUNCTION_NAME "im_align_bands" if( im_piocheck( in, out )) return -1; if( 1 == in-> Bands ) return im_copy( in, out ); { IMAGE **bands= IM_ARRAY( out, 2 * in-> Bands, IMAGE* ); IMAGE **wrapped_bands= bands + in-> Bands; double x= 0.0; double y= 0.0; int i; if( ! bands || im_open_local_array( out, bands, in-> Bands, FUNCTION_NAME ": bands", "p" ) || im_open_local_array( out, wrapped_bands + 1, in-> Bands - 1, FUNCTION_NAME ": wrapped_bands", "p" )) return -1; for( i= 0; i < in-> Bands; ++i ) if( im_extract_band( in, bands[i], i )) return -1; wrapped_bands[ 0 ]= bands[0]; for( i= 1; i < in-> Bands; ++i ){ IMAGE *temp= im_open( FUNCTION_NAME ": temp", "t" ); double this_x, this_y, val; if( ! temp || im_phasecor_fft( bands[i-1], bands[i], temp ) || im_maxpos_avg( temp, & this_x, & this_y, & val ) || im_close( temp )) return -1; x+= this_x; y+= this_y; if( im_wrap( bands[i], wrapped_bands[i], (int) x, (int) y )) return -1; } return im_gbandjoin( wrapped_bands, out, in-> Bands ); } #undef FUNCTION_NAME } libvips-8.9.1/libvips/deprecated/im_analyze2vips.c000066400000000000000000000045371361153320700222430ustar00rootroot00000000000000/* Read a Analyze file. Old-style header (so called 7.5 format). * * 14/12/11 * - just a compat stub now */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include static VipsFormatFlags analyze_flags( const char *filename ) { return( (VipsFormatFlags) vips_foreign_flags( "analyzeload", filename ) ); } static int isanalyze( const char *filename ) { return( vips_foreign_is_a( "analyzeload", filename ) ); } int im_analyze2vips( const char *filename, IMAGE *out ) { VipsImage *t; if( vips_analyzeload( filename, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static const char *analyze_suffs[] = { ".img", ".hdr", NULL }; typedef VipsFormat VipsFormatAnalyze; typedef VipsFormatClass VipsFormatAnalyzeClass; static void vips_format_analyze_class_init( VipsFormatAnalyzeClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "analyze"; object_class->description = _( "Analyze 6.0" ); format_class->is_a = isanalyze; format_class->load = im_analyze2vips; format_class->get_flags = analyze_flags; format_class->suffs = analyze_suffs; } static void vips_format_analyze_init( VipsFormatAnalyze *object ) { } G_DEFINE_TYPE( VipsFormatAnalyze, vips_format_analyze, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/im_benchmark.c000066400000000000000000000175101361153320700215410ustar00rootroot00000000000000/* a complicated operation for testing * * 6/10/06 * - hacked in * 27/11/06 * - added im_benchmarkn() * 1/2/11 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* VIPS SMP benchmark ------------------ This is adapted from the system used to generate images for POD: http://cima.ng-london.org.uk/~john/POD Images from a 10k by 10k studio digital camera are colour processed, resized, cropped and sharpened. The original POD script was written in nip (see below). This operation is a reimplementation in vanilla C to make it easier to run (and less fragile!). This thing was originally processing images off a remote server over a 100mbit network. No attempt was made to make it quick (there was no point): you could make it a lot faster very easily. ------ benchmark in nip2 ----------- #!/home/john/vips/bin/nip2 -s // get command-line arguments image_path = argv?1; crop_id = parse_pint argv?2; crop_left = parse_pint argv?3; crop_top = parse_pint argv?4; crop_width = parse_pint argv?5; crop_height = parse_pint argv?6; width = parse_pint argv?7; height = parse_pint argv?8; sharp = parse_pint argv?9; // scale down by this much to undo photographic's relativisation darken = Vector [1.18, 1, 1]; // fudge factor in XYZ to get a match under NGC lights on uv-durable paper white_point_adjust = Vector [1.06, 1, 1.01]; // brighten by this in XYZ to get relative colorimetry brighten = 1.5; // blacks down by this much in LAB blacks_down = Vector [-2, 0, 0]; // sharpen params for 400, 300, 200 and 150 dpi // just change the size of the area we search sharpen_params_table = [ [ 11, 2.5, 40, 20, 0.5, 1.5 ], [ 7, 2.5, 40, 20, 0.5, 1.5 ], [ 5, 2.5, 40, 20, 0.5, 1.5 ], [ 3, 2.5, 40, 20, 0.5, 1.5 ] ]; // convert D65 XYZ to D50 XYZ D652D50 = recomb D652D50_direct; stage_crop in = extract_area crop_left crop_top crop_width crop_height in, crop_id != 0 = in; // fit within a width / height stage_shrink image = image, factor > 1; // never upscale = resize factor factor Interpolate.BILINEAR image { hfactor = width / get_width image; vfactor = height / get_height image; factor = min_pair hfactor vfactor; } // unphotoize, go to xyz, convert to D50, adjust white point, back to lab stage_colour in = if in?0 > 99 then Vector [100, 0, 0] else in''' { // back to absolute in' = in / darken; xyz = colour_transform_to Image_type.XYZ in'; xyz' = D652D50 xyz * white_point_adjust * brighten; in'' = colour_transform_to Image_type.LAB xyz'; // shadows down in''' = in'' + blacks_down; } stage_sharp in = (sharpen params?0 params?1 params?2 params?3 params?4 params?5 @ colour_transform_to Image_type.LABQ) in { params = sharpen_params_table?sharp; } // This was: // // stage_srgb in // = (icc_export 8 "$VIPSHOME/share/nip2/data/sRGB.icm" 1 @ // colour_transform_to Image_type.LABQ) in; // // but that uses lcms which is single-threaded. So for this benchmark, we use // VIPS's own ->sRGB converter, which is less accurate but does thread. stage_srgb in = colour_transform_to Image_type.sRGB in; main = (get_image @ stage_srgb @ stage_sharp @ stage_colour @ stage_shrink @ stage_crop @ colour_transform_to Image_type.LAB @ Image_file) image_path; ------ benchmark in nip2 ----------- */ /* The main part of the benchmark ... transform labq to labq. Chain several of * these together to get a CPU-bound operation. */ static int benchmark( IMAGE *in, IMAGE *out ) { IMAGE *t[18]; double one[3] = { 1.0, 1.0, 1.0 }; double zero[3] = { 0.0, 0.0, 0.0 }; double darken[3] = { 1.0 / 1.18, 1.0, 1.0 }; double whitepoint[3] = { 1.06, 1.0, 1.01 }; double shadow[3] = { -2, 0, 0 }; double white[3] = { 100, 0, 0 }; DOUBLEMASK *d652d50 = im_create_dmaskv( "d652d50", 3, 3, 1.13529, -0.0604663, -0.0606321, 0.0975399, 0.935024, -0.0256156, -0.0336428, 0.0414702, 0.994135 ); im_add_close_callback( out, (im_callback_fn) im_free_dmask, d652d50, NULL ); return( /* Set of descriptors for this operation. */ im_open_local_array( out, t, 18, "im_benchmark", "p" ) || /* Unpack to float. */ im_LabQ2Lab( in, t[0] ) || /* Crop 100 pixels off all edges. */ im_extract_area( t[0], t[1], 100, 100, t[0]->Xsize - 200, t[0]->Ysize - 200 ) || /* Shrink by 10%, bilinear interp. */ im_affinei_all( t[1], t[2], vips_interpolate_bilinear_static(), 0.9, 0, 0, 0.9, 0, 0 ) || /* Find L ~= 100 areas (white surround). */ im_extract_band( t[2], t[3], 0 ) || im_moreconst( t[3], t[4], 99 ) || /* Adjust white point and shadows. */ im_lintra_vec( 3, darken, t[2], zero, t[5] ) || im_Lab2XYZ( t[5], t[6] ) || im_recomb( t[6], t[7], d652d50 ) || im_lintra_vec( 3, whitepoint, t[7], zero, t[8] ) || im_lintra( 1.5, t[8], 0.0, t[9] ) || im_XYZ2Lab( t[9], t[10] ) || im_lintra_vec( 3, one, t[10], shadow, t[11] ) || /* Make a solid white image. */ im_black( t[12], t[4]->Xsize, t[4]->Ysize, 3 ) || im_lintra_vec( 3, zero, t[12], white, t[13] ) || /* Reattach border. */ im_ifthenelse( t[4], t[13], t[11], t[14] ) || /* Sharpen. */ im_Lab2LabQ( t[14], t[15] ) || im_sharpen( t[15], out, 11, 2.5, 40, 20, 0.5, 1.5 ) ); } /** * im_benchmarkn: * @in: input image * @out: output image * @n: iterations * * This operation runs a complicated set of other operations on image @in, * producing image @out. Use @n to set the number of iterations to run: a * larger number will make the operation more CPU-bound, a smaller number will * make the operation more IO-bound. * * See http://www.vips.ecs.soton.ac.uk/index.php?title=Benchmarks for a * detailed discussion of the benchmark and some sample results. * * See also: im_benchmark2(). * * Returns: 0 on success, -1 on error */ int im_benchmarkn( IMAGE *in, IMAGE *out, int n ) { IMAGE *t[2]; if( n == 0 ) /* To sRGB. */ return( im_LabQ2disp( in, out, im_col_displays( 7 ) ) ); else return( im_open_local_array( out, t, 2, "benchmarkn", "p" ) || benchmark( in, t[0] ) || /* Expand back to the original size again ... * benchmark does a 200 pixel crop plus a 10% shrink, * so if we chain many of them together the image gets * too small. */ im_affinei_all( t[0], t[1], vips_interpolate_bilinear_static(), (double) in->Xsize / t[0]->Xsize, 0, 0, (double) in->Ysize / t[0]->Ysize, 0, 0 ) || im_benchmarkn( t[1], out, n - 1 ) ); } /** * im_benchmark2: * @in: input image * @out: average image value * * This operation runs a single im_benchmarkn() and calculates the average * pixel value. It's useful if you just want to test image input. * * See also: im_benchmarkn(). * * Returns: 0 on success, -1 on error */ int im_benchmark2( IMAGE *in, double *out ) { IMAGE *t; return( !(t = im_open_local( in, "benchmarkn", "p" )) || im_benchmarkn( in, t, 1 ) || im_avg( t, out ) ); } libvips-8.9.1/libvips/deprecated/im_bernd.c000066400000000000000000000042011361153320700206720ustar00rootroot00000000000000/* @(#) Extract a tile from a pyramid as a jpeg * @(#) * @(#) int * @(#) im_bernd( const char *tiffname, * @(#) int x, int y, int w, int h ) * @(#) * @(#) * @(#) Returns 0 on success and -1 on error * @(#) * * 7/5/99 JC * - from im_tiff2vips and im_vips2jpeg, plus some stuff from Steve * 11/7/01 JC * - page number now in filename * 12/5/09 * - fix signed/unsigned warning */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include static int extract( IMAGE *in, int x, int y, int w, int h ) { IMAGE *t1; int len; char *buf; if( !(t1 = im_open_local( in, "im_bernd:2", "p" )) || im_extract_area( in, t1, x, y, w, h ) || im_vips2bufjpeg( t1, in, 75, &buf, &len ) ) return( -1 ); if( fwrite( buf, sizeof( char ), len, stdout ) != (size_t) len ) { im_error( "im_bernd", "%s", _( "error writing output" ) ); return( -1 ); } fflush( stdout ); return( 0 ); } int im_bernd( const char *tiffname, int x, int y, int w, int h ) { IMAGE *in; if( !(in = im_open( "im_bernd:1", "p" )) ) return( -1 ); if( im_tiff2vips( tiffname, in ) || extract( in, x, y, w, h ) ) { im_close( in ); return( -1 ); } im_close( in ); return( 0 ); } libvips-8.9.1/libvips/deprecated/im_clamp.c000066400000000000000000000066371361153320700207130ustar00rootroot00000000000000/* @(#) Function to perform black level correction given black image * @(#) designed for PAD camera single field black to apply in blocks * @(#) as each is reused for higher resolution pels (eg: 6 8 for Progres) * @(#) IM_BANDFMT_UCHAR images only. Always writes UCHAR. * @(#) int im_clamp(in, w, out, hstep, vstep) * @(#) IMAGE *in, *w, *out; int hstep, vstep; * @(#) - Compute clip(image - (black)) ie subtract black no negatives * @(#) scales for low res Progres images to replicate black value * @(#) Returns 0 on success and -1 on error * fiddle at your peril - nasty code * Copyright: 1993 KM * 20/8/93 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include int im_clamp( IMAGE *in, IMAGE *out, IMAGE *black, int hstep, int vstep ) { PEL *p, *blk, *bline, *bexp; PEL *q, *outbuf; int rep; int x, y, bnd; int temp, blacky, newblacky; if( im_iocheck( in, out ) ) return( -1 ); if( in->Bbits != 8 || in->Coding != IM_CODING_NONE || in->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im_clamp", "%s", _( "bad input format" ) ); return( -1 ); } if( black->Bbits != 8 || black->Coding != IM_CODING_NONE || black->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im_clamp", "%s", _( "bad black format" ) ); return( -1 ); } /* Set up the output header. */ if( im_cp_desc( out, in ) ) return( -1 ); if( im_setupout( out ) ) return( -1 ); /* Make buffer for expanded black line */ if( !(bline = (PEL *) im_malloc( out, black->Bands * hstep * in->Xsize )) ) return( -1 ); /* Make buffer we write to. */ if( !(outbuf = (PEL *) im_malloc( out, out->Bands * out->Xsize )) ) return( -1 ); blacky = -1; p = (PEL *) in->data; for( y = 0; y < in->Ysize; y++ ) { /* calc corresponding black line - get new one if different */ newblacky = (vstep * black->Ysize - in->Ysize + y)/vstep; if( newblacky != blacky){ blacky = newblacky; /* time to expand a new black line */ blk = (PEL *) (black->data + black->Xsize * black->Bands * blacky); for(bexp = bline, x = 0; x < black->Xsize; x++){ for(rep = 0; rep < hstep; rep++) for(q=blk, bnd = 0; bnd < in->Bands; bnd++) *bexp++ = *q++; blk += black->Bands; } } /* correct a line of image */ bexp = bline; q = outbuf; for( x = 0; x < (out->Bands * out->Xsize); x++ ) { temp = ((int) *p++ - *bexp++); if( temp < 0 ) temp = 0; *q++ = (PEL)temp; } if( im_writeline( y, out, outbuf ) ) return( -1 ); } /* end of a line */ return( 0 ); } libvips-8.9.1/libvips/deprecated/im_cmulnorm.c000066400000000000000000000040231361153320700214360ustar00rootroot00000000000000/* im_cmulnorm.c * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 15/4/97 JC * - thrown away and redone in terms of im_multiply() * 9/7/02 JC * - im_sign() broken out, done in terms of that * 28/8/09 * - gtkdoc * - tiny polish */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /** * im_cmulnorm * @in1: input #IMAGE 1 * @in2: input #IMAGE 2 * @out: output #IMAGE * * im_cmulnorm() multiplies two complex images. The complex output is * normalised to 1 by dividing both the real and the imaginary part of each * pel with the norm. This is useful for phase correlation. * * This operation used to be important, but now simply calls im_multiply() * then im_sign(). * * See also: im_multiply(), im_sign(). * * Returns: 0 on success, -1 on error */ int im_cmulnorm( IMAGE *in1, IMAGE *in2, IMAGE *out ) { IMAGE *t1; if( !(t1 = im_open_local( out, "im_cmulnorm:1", "p" )) || im_multiply( in1, in2, t1 ) || im_sign( t1, out ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/deprecated/im_convsub.c000066400000000000000000000222201361153320700212600ustar00rootroot00000000000000/* @(#) Function which convolves and subsamples VASARI format picture * @(#) with a mask stored in a file argument. * @(#) * @(#) int im_convsub( in, out, mask, xskip, yskip ) * @(#) IMAGE *in, *out; * @(#) INTMASK *mask; details in vips.h * @(#) int xskip, yskip; is the subsamping factor along both directions * @(#) * @(#) Returns either 0 (sucess) or -1 (fail) * @(#) * @(#) Picture can have any number of channels (max 64). * @(#) It is assummed that the output picture is subsampled on * @(#) both directions by a factor of xskip horizontally and yskip vertically. * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 29/04/1991 * Modified on: */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* Create multiplication luts for all non zero elements of the original mask; * which is kept in buffer of length buffersize * cnt is needed for freeing luts */ static int im__create_int_luts( int *buffer, int buffersize, int **orig_luts, int **luts, int *cnt ) { int *pbuffer; int *buf1, *buf2, *pbuf1, *pbuf2; int i, j; int min, max; int mark; /* used to mark the buffer mark = max+1 */ int counter; /* counts the no of unique elms in mask; returned in cnt*/ buf1 = (int*)calloc( (unsigned)buffersize, sizeof(int) ); buf2 = (int*)calloc( (unsigned)buffersize, sizeof(int) ); if ( ( buf1 == NULL ) || ( buf2 == NULL ) ) { im_error( "im_create_int_luts", "%s", _( "calloc failed (1)") ); return( -1 ); } pbuffer = buffer; pbuf1 = buf1; /* find max and copy mask to buf1 */ max = *pbuffer; for ( i=0; i < buffersize; i++ ) { if ( *pbuffer > max ) max = *pbuffer; *pbuf1++ = *pbuffer++; } mark = max + 1; pbuf1 = buf1; pbuf2 = buf2; counter = 0; /* find a min at a time; put it into buf2 and mark all values of * buf1 equal to found min, to INT_MAX */ for ( i=0; i < buffersize; i++ ) { min = mark + 1; /* force min to be greater than mark */ pbuf1 = buf1; /* find a min */ for ( j=0; j < buffersize; j++ ) { if ( *pbuf1 < min ) min = *pbuf1; pbuf1++; } if ( min == mark ) /* all min are found */ break; *pbuf2++ = min; counter++; pbuf1 = buf1; for ( j=0; j < buffersize; j++ ) /* mark values equal to min */ { if ( *pbuf1 == min ) *pbuf1 = mark; pbuf1++; } } /* buf2 should keep now counter unique values of the mask, descending order * Malloc counter luts and initialise them */ pbuf2 = buf2; for ( i=0; ixsize * m->ysize */ int **lut_orig, **lut; int lutcnt = 0; int rounding, sum; int tempsize; /* Check input, output and vars */ if ((xskip < 1)||(yskip < 1)) { im_error( "im_convsub", "%s", _( "xskip and yskip must be >= 1") ); return(-1); } if (im_iocheck(in, out) == -1) return( -1 ); if ( (in->Coding != IM_CODING_NONE)|| (in->BandFmt != IM_BANDFMT_UCHAR) ) { im_error( "im_convsub", "%s", _( "nput should be unsigned char uncoded") ); return(-1); } /* Prepare output */ if (im_cp_desc(out, in) == -1) return( -1 ); tempsize = in->Xsize/xskip; while ( 1 ) { if ( tempsize * xskip + m->xsize < in->Xsize ) break; else tempsize--; if ( tempsize < 0 ) break; } out->Xsize = tempsize; tempsize = in->Ysize/yskip; while ( 1 ) { if ( tempsize * yskip + m->ysize < in->Ysize ) break; else tempsize--; if ( tempsize < 0 ) break; } out->Ysize = tempsize; if ( ( out->Xsize < 2 )||( out->Ysize < 2 ) ) { im_error( "im_convsub", "%s", _( "too small output sizes") ); return(-1); } if( im_setupout(out) == -1) return(-1); /* Malloc one line of output data */ os = out->Xsize * out->Bands; if ( (line=(PEL*)calloc( (unsigned)os, sizeof(char))) == NULL) { im_error( "im_convsub", "%s", _( "unable to calloc(1)") ); return(-1); } /* Malloc pointers and put them at correct location */ ms = m->xsize * m->ysize; count = 0; /* exclude the non-zero elms */ pm = m->coeff; for ( i=0; idata; pm = m->coeff; pnewm = newm; for (y=0; yysize; y++) { for (x=0; xxsize; x++) { if ( *pm != 0 ) { *pnewm++ = *pm; pnt[i] = (input +(x + y*in->Xsize) * in->Bands); i++; } pm++; } } if ( i != count ) { im_error( "im_convsub", "%s", _( "impossible state") ); return(-1); } /* Malloc pointers; not all lut_orig are used necessarily */ lut_orig = (int**)calloc((unsigned)count, sizeof(int**) ); lut = (int**)calloc((unsigned)count, sizeof(int**) ); if ( (lut == NULL) || (lut_orig == NULL) ) { im_error( "im_conv", "%s", _( "unable to calloc(1)") ); return(-1); } /* Create luts; count is needed for freeing pointers. Not all lut_orig are used * if zero elms are detected. */ if ( im__create_int_luts(newm, count, lut_orig, lut, &lutcnt ) == -1 ) { im_error( "im_convsub", "%s", _( "im_create_int_luts failed") ); return(-1); } rounding = m->scale/2; /* Output out->Ysize processed lines */ for(y=0; y < out->Ysize; y++) { cpline = line; for (i=0; iXsize * in->Bands * yskip ); } /* process out->Xsize points */ for( x = 0; x < out->Xsize; x++ ) { for (i=0; iBands; } for ( b=0; bBands; b++ ) { sum = 0; for (i=0; iscale ) + m->offset; if ( sum < (int)0 ) { n_clipped++; sum = (int)0; } else if ( sum > (int)255) { p_clipped++; sum = (int)255; } *cpline++ = (unsigned char)sum; } } /* Output the calculated line */ if ( im_writeline(y, out, (PEL*)line) == -1 ) { free((char*)line); free((char*)newm); free((char*)pnts); free((char*)cpnt1s); free((char*)cpnt2s); for ( i=0; i #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "../foreign/pforeign.h" int im_csv2vips( const char *filename, IMAGE *out ) { /* Read options. */ int start_skip = 0; char *whitespace = " "; char *separator = ";,\t"; int lines = -1; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q, *r; /* Parse mode string. */ im_filename_split( filename, name, mode ); p = &mode[0]; while( (q = im_getnextoption( &p )) ) { if( im_isprefix( "ski", q ) && (r = im_getsuboption( q )) ) start_skip = atoi( r ); else if( im_isprefix( "whi", q ) && (r = im_getsuboption( q )) ) whitespace = r; else if( im_isprefix( "sep", q ) && (r = im_getsuboption( q )) ) separator = r; else if( im_isprefix( "lin", q ) && (r = im_getsuboption( q )) ) lines = atoi( r ); } if( vips__csv_read( name, out, start_skip, lines, whitespace, separator, FALSE ) ) return( -1 ); return( 0 ); } static const char *csv_suffs[] = { ".csv", NULL }; /* csv format adds no new members. */ typedef VipsFormat VipsFormatCsv; typedef VipsFormatClass VipsFormatCsvClass; static void vips_format_csv_class_init( VipsFormatCsvClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "csv"; object_class->description = _( "CSV" ); format_class->load = im_csv2vips; format_class->save = im_vips2csv; format_class->suffs = csv_suffs; } static void vips_format_csv_init( VipsFormatCsv *object ) { } G_DEFINE_TYPE( VipsFormatCsv, vips_format_csv, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/im_debugim.c000066400000000000000000000065651361153320700212330ustar00rootroot00000000000000/* @(#) Function which prints in stdout the values of a picture * @(#) * @(#) For debuging only * @(#) is either memory mapped or in a buffer. * @(#) * @(#) void * @(#) im_debugim( in ) * @(#) IMAGE *in; * @(#) * * Copyright: 1991 N. Dessipris * * Author: N. Dessipris * Written on: 18/03/1991 * Modified on: * 15/4/93 J.Cupitt * - returns int, not void now, so error messages work * - detects im->data invalid. * 15/4/93 J.Cupitt * - uses %g format, not %f for printf() * 23/7/93 JC * - im_incheck() added */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include int im_debugim( IMAGE *in ) { /* Check our args. */ if( im_incheck( in ) ) return( -1 ); if( in->Coding != IM_CODING_NONE ) { im_error( "im_debugim", "%s", _( "input must be uncoded" ) ); return( -1 ); } /* What type? First define the loop we want to perform for all types. */ #define loopuc(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ for ( x=0; xXsize; x++ ) {\ for ( z=0; zBands; z++ ) {\ fprintf(stderr, "%4d", (TYPE)*p++ );\ } \ } \ fprintf(stderr, "\n");\ } \ } #define loop(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ for ( x=0; xXsize; x++ ) {\ for ( z=0; zBands; z++ ) {\ fprintf(stderr, "%g\t", (double)*p++ );\ } \ } \ fprintf(stderr, "\n");\ } \ } #define loopcmplx(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ for ( x=0; xXsize; x++ ) {\ for ( z=0; zBands; z++ ) {\ fprintf(stderr,"re=%g\t",(double)*p++);\ fprintf(stderr,"im=%g\t",(double)*p++);\ } \ } \ fprintf(stderr, "\n");\ } \ } /* Now generate code for all types. */ switch( in->BandFmt ) { case IM_BANDFMT_UCHAR: loopuc(unsigned char); break; case IM_BANDFMT_CHAR: loop(char); break; case IM_BANDFMT_USHORT: loop(unsigned short); break; case IM_BANDFMT_SHORT: loop(short); break; case IM_BANDFMT_UINT: loop(unsigned int); break; case IM_BANDFMT_INT: loop(int); break; case IM_BANDFMT_FLOAT: loop(float); break; case IM_BANDFMT_DOUBLE: loop(double); break; case IM_BANDFMT_COMPLEX: loopcmplx(float); break; case IM_BANDFMT_DPCOMPLEX: loopcmplx(double); break; default: im_error( "im_debugim", "%s", _( "unknown input format") ); return( -1 ); } return( 0 ); } libvips-8.9.1/libvips/deprecated/im_dif_std.c000066400000000000000000000062531361153320700212250ustar00rootroot00000000000000/* @(#) Program to calculate the stdev of the differnce image * @(#) at a given displacement vector * * Written : 25/11/1987 * Author : N. Dessipris * Updated : 2/12/1991 * 22/7/93 JC * - im_incheck() added */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include static int im__mean_std_int_buffer( int *buffer, int size, double *pmean, double *pstd ) { double mean, std; register int i; int sumf; int temp; int *pbuffer; int sumf2; double correction; /* calulates the correction term for the variance */ double variance; /* = (sumf2 - correction)/n */ if (size <= 0) { im_error( "im_mean_std_int_buffer", "%s", _( "wrong args") ); return(-1); } mean = 0.0; std = 0.0; sumf = 0; sumf2 = 0; pbuffer = buffer; for (i=0; iBands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR)) { im_error( "im_dif_std", "%s", _( "Unable to accept input") ); return(-1);} if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { im_error( "im_dif_std", "%s", _( "wrong args") ); return(-1); } bufsize = xsize * ysize; buf = (int *)calloc( (unsigned)bufsize, sizeof(int) ); if ( buf == NULL ) { im_error( "im_dif_std", "%s", _( "calloc failed") ); return(-1); } input = (PEL*)im->data; input += ( ypos * im->Xsize + xpos ); ofst = dy * im->Xsize + dx; pbuf = buf; for ( y=0; yXsize; for ( x=0; x #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include "../foreign/pforeign.h" int im_exr2vips( const char *filename, IMAGE *out ) { #ifdef HAVE_OPENEXR return( vips__openexr_read( filename, out ) ); #else vips_error( "im_exr2vips", "%s", _( "no OpenEXR support in your libvips" ) ); return( -1 ); #endif /*HAVE_OPENEXR*/ } static const char *exr_suffs[] = { ".exr", NULL }; static VipsFormatFlags exr_flags( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( (VipsFormatFlags) vips_foreign_flags( "openexrload", filename ) ); } static int isexr( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( vips_foreign_is_a( "openexrload", filename ) ); } /* exr format adds no new members. */ typedef VipsFormat VipsFormatExr; typedef VipsFormatClass VipsFormatExrClass; static void vips_format_exr_class_init( VipsFormatExrClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "exr"; object_class->description = _( "OpenEXR" ); format_class->is_a = isexr; format_class->load = im_exr2vips; format_class->get_flags = exr_flags; format_class->suffs = exr_suffs; } static void vips_format_exr_init( VipsFormatExr *object ) { } G_DEFINE_TYPE( VipsFormatExr, vips_format_exr, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/im_fav4.c000066400000000000000000000044651361153320700204540ustar00rootroot00000000000000/* @(#) Optimised 4 frame average Copyright (C) 1992, Kirk Martinez, History of Art Dept, Birkbeck College */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #define ARGS "fav4: frame average 4 frames\nARGS: im1 im2 im3 im4 outfile" #define NFRAMES 4 /** * im_fav4: * @in: array of 4 input #IMAGE s * @out: output #IMAGE * * Average four identical images. * * Deprecated. */ int im_fav4( IMAGE **in, IMAGE *out) { PEL *result, *buffer, *p1, *p2, *p3, *p4; int x,y; int linebytes, PICY; /* check IMAGEs parameters */ if(im_iocheck(in[1], out)) return(-1); /* BYTE images only! */ if( (in[0]->BandFmt != IM_BANDFMT_CHAR) && (in[0]->BandFmt != IM_BANDFMT_UCHAR)) return(-1); if ( im_cp_desc(out, in[1]) == -1) /* copy image descriptors */ return(-1); if ( im_setupout(out) == -1) return(-1); linebytes = in[0]->Xsize * in[0]->Bands; PICY = in[0]->Ysize; buffer = (PEL*)im_malloc(NULL,linebytes); memset(buffer, 0, linebytes); p1 = (PEL*)in[0]->data; p2 = (PEL*)in[1]->data; p3 = (PEL*)in[2]->data; p4 = (PEL*)in[3]->data; for (y = 0; y < PICY; y++) { result = buffer; /* average 4 pels with rounding, for whole line*/ for (x = 0; x < linebytes; x++) { *result++ = (PEL)((int)((int)*p1++ + (int)*p2++ + (int)*p3++ + (int)*p4++ +2) >> 2); } im_writeline(y,out, buffer); } im_free(buffer); return(0); } libvips-8.9.1/libvips/deprecated/im_freq_mask.c000066400000000000000000000120211361153320700215470ustar00rootroot00000000000000/* Create masks and filter with them. * * Copyright: N. Dessipris 1991, * Written on: Nov 1991 * Updated on: Dec 1991 * 20/9/95 JC * - modernised * 22/3/10 * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include /* Make a mask image. */ static int build_freq_mask( IMAGE *out, int xs, int ys, ImMaskType flag, va_list ap ) { /* May be fewer than 4 args ... but extract them all anyway. Should be * safe. */ double p0 = va_arg( ap, double ); double p1 = va_arg( ap, double ); double p2 = va_arg( ap, double ); double p3 = va_arg( ap, double ); double p4 = va_arg( ap, double ); VipsImage *t; switch( flag ) { case IM_MASK_IDEAL_HIGHPASS: if( vips_mask_ideal( &t, xs, ys, p0, NULL ) ) return( -1 ); break; case IM_MASK_IDEAL_LOWPASS: if( vips_mask_ideal( &t, xs, ys, p0, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_HIGHPASS: if( vips_mask_butterworth( &t, xs, ys, p0, p1, p2, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_LOWPASS: if( vips_mask_butterworth( &t, xs, ys, p0, p1, p2, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_HIGHPASS: if( vips_mask_gaussian( &t, xs, ys, p0, p1, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_LOWPASS: if( vips_mask_gaussian( &t, xs, ys, p0, p1, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_IDEAL_RINGPASS: if( vips_mask_ideal_ring( &t, xs, ys, p0, p1, NULL ) ) return( -1 ); break; case IM_MASK_IDEAL_RINGREJECT: if( vips_mask_ideal_ring( &t, xs, ys, p0, p1, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_RINGPASS: if( vips_mask_butterworth_ring( &t, xs, ys, p0, p1, p2, p3, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_RINGREJECT: if( vips_mask_butterworth_ring( &t, xs, ys, p0, p1, p2, p3, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_RINGPASS: if( vips_mask_gaussian_ring( &t, xs, ys, p0, p1, p2, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_RINGREJECT: if( vips_mask_gaussian_ring( &t, xs, ys, p0, p1, p2, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_FRACTAL_FLT: if( vips_mask_fractal( &t, xs, ys, p0, NULL ) ) return( -1 ); break; case IM_MASK_IDEAL_BANDPASS: if( vips_mask_ideal_band( &t, xs, ys, p0, p1, p2, NULL ) ) return( -1 ); break; case IM_MASK_IDEAL_BANDREJECT: if( vips_mask_ideal_band( &t, xs, ys, p0, p1, p2, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_BANDPASS: if( vips_mask_butterworth_band( &t, xs, ys, p0, p1, p2, p3, p4, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_BANDREJECT: if( vips_mask_butterworth_band( &t, xs, ys, p0, p1, p2, p3, p4, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_BANDPASS: if( vips_mask_gaussian_band( &t, xs, ys, p0, p1, p2, p3, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_BANDREJECT: if( vips_mask_gaussian_band( &t, xs, ys, p0, p1, p2, p3, "reject", TRUE, NULL ) ) return( -1 ); break; default: im_error( "im_freq_mask", "%s", _( "unimplemented mask type" ) ); return( -1 ); } if( im_copy( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_flt_image_freq( IMAGE *in, IMAGE *out, ImMaskType flag, ... ) { IMAGE *mask = im_open_local( out, "tempmask", "p" ); va_list ap; if( !mask ) return( -1 ); /* Generate mask. */ va_start( ap, flag ); if( build_freq_mask( mask, in->Xsize, in->Ysize, flag, ap ) ) return( -1 ); va_end( ap ); if( im_freqflt( in, mask, out ) ) return( -1 ); return( 0 ); } int im_create_fmask( IMAGE *out, int xsize, int ysize, ImMaskType flag, ... ) { va_list ap; va_start( ap, flag ); if( build_freq_mask( out, xsize, ysize, flag, ap ) ) return( -1 ); va_end( ap ); return( 0 ); } libvips-8.9.1/libvips/deprecated/im_gadd.c000066400000000000000000000061321361153320700205040ustar00rootroot00000000000000/* @(#) Generalised addition of two vasari images using the routines * @(#) im_gaddim or im_gfadd * @(#) Convention to ease the complilation time. * @(#) Function im_gadd() assumes that the both input files * @(#) are either memory mapped or in a buffer. * @(#) Images must have the same no of bands and must not be complex * @(#) No check for overflow is carried out. * @(#) * @(#) int im_gadd(a, in1, b, in2, c, out) * @(#) IMAGE *in1, *in2, *out; * @(#) double a, b, c; * @(#) * @(#) Returns 0 on success and -1 on error * @(#) * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include int im_gfadd(double a, IMAGE *in1, double b, IMAGE *in2, double c, IMAGE *out); int im_gaddim(double a, IMAGE *in1, double b, IMAGE *in2, double c, IMAGE *out); /* This function works on either mmaped files or on images in buffer */ /** * im_gadd: * * Deprecated. */ int im_gadd(double a, IMAGE *in1, double b, IMAGE *in2, double c, IMAGE *out) { int flagint = 0; int flagfloat = 0; int value = 0; switch(in1->BandFmt) { case IM_BANDFMT_UCHAR: case IM_BANDFMT_CHAR: case IM_BANDFMT_USHORT: case IM_BANDFMT_SHORT: case IM_BANDFMT_UINT: case IM_BANDFMT_INT: flagint = 1; break; case IM_BANDFMT_FLOAT: case IM_BANDFMT_DOUBLE: flagfloat = 1; break; default: im_error("im_gadd","%s", _("Unable to accept image1")); return(-1); } switch(in2->BandFmt) { case IM_BANDFMT_UCHAR: case IM_BANDFMT_CHAR: case IM_BANDFMT_USHORT: case IM_BANDFMT_SHORT: case IM_BANDFMT_UINT: case IM_BANDFMT_INT: flagint = 1; break; case IM_BANDFMT_FLOAT: case IM_BANDFMT_DOUBLE: flagfloat = 1; break; default: im_error("im_gadd","%s", _("Unable to accept image1")); return(-1); } /* Select output routines */ if (flagfloat == 1) { value = im_gfadd(a, in1, b, in2, c, out); if (value == -1) return(-1); } else if (flagint == 1) { value = im_gaddim(a, in1, b, in2, c, out); if (value == -1) return(-1); } else assert( 0 ); return(0); } libvips-8.9.1/libvips/deprecated/im_gaddim.c000066400000000000000000000161261361153320700210360ustar00rootroot00000000000000/* @(#) Generalised addition of two vasari images. * @(#)Inputs, outputs are neither float nor double * @(#) Result at each point is a*in1 + b*in2 + c * @(#) Result depends on inputs, rounding is carried out; * @(#) Function im_gaddim() assumes that the both input files * @(#) are either memory mapped or in a buffer. * @(#) Images must have the same no of bands and must not be complex * @(#) No check for overflow is done; * @(#) * @(#) int im_gaddim(a, in1, b, in2, c, out) * @(#) double a, b, c; * @(#) IMAGE *in1, *in2, *out; * @(#) * @(#) Returns 0 on success and -1 on error * @(#) * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* This function works on either mmaped files or on images in buffer */ /* uchar char ushort short uint int */ static int array[6][6] = { /* uchar */ { 2, 3, 2, 3, 4, 5 }, /* char */ { 3, 3, 3, 3, 5, 5 }, /* ushort */ { 2, 3, 2, 3, 4, 5 }, /* short */ { 3, 3, 3, 3, 5, 5 }, /* uint */ { 4, 5, 4, 5, 4, 5 }, /* int */ { 5, 5, 5, 5, 5, 5 } }; #define select_tmp2_for_out_int(OUT) \ case IM_BANDFMT_UCHAR: select_tmp1_for_out_int(unsigned char, OUT); break; \ case IM_BANDFMT_CHAR: select_tmp1_for_out_int(signed char, OUT); break; \ case IM_BANDFMT_USHORT: select_tmp1_for_out_int(unsigned short, OUT); break; \ case IM_BANDFMT_SHORT: select_tmp1_for_out_int(signed short, OUT); break; \ case IM_BANDFMT_UINT: select_tmp1_for_out_int(unsigned int, OUT); break; \ case IM_BANDFMT_INT: select_tmp1_for_out_int(signed int, OUT); break; \ \ default: \ im_error("im_gaddim","Wrong tmp2 format(1)"); \ free( line); \ return(-1); #define select_tmp1_for_out_int(IN2, OUT) \ switch(tmp1->BandFmt) { \ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break; \ case IM_BANDFMT_INT: loop(int, IN2, OUT); break; \ default: im_error("im_gaddim","Wrong tmp2 format(2)");\ free( line);\ return(-1); \ } #define select_tmp2_for_out_short(OUT) \ case IM_BANDFMT_UCHAR: select_tmp1_for_out_short(unsigned char, OUT); break; \ case IM_BANDFMT_CHAR: select_tmp1_for_out_short(signed char, OUT); break; \ case IM_BANDFMT_USHORT: select_tmp1_for_out_short(unsigned short, OUT); break; \ case IM_BANDFMT_SHORT: select_tmp1_for_out_short(signed short, OUT); break; \ default: g_assert( 0 ); #define select_tmp1_for_out_short(IN2, OUT) \ switch(tmp1->BandFmt) { \ case IM_BANDFMT_UCHAR: loop(unsigned char, IN2, OUT); break; \ case IM_BANDFMT_CHAR: loop(signed char, IN2, OUT); break; \ case IM_BANDFMT_USHORT: loop(unsigned short, IN2, OUT); break; \ case IM_BANDFMT_SHORT: loop(signed short, IN2, OUT); break; \ default: im_error("im_gaddim","Wrong image1 format(4)");\ free( line);\ return(-1); \ } /** * im_gaddim: * * Deprecated. */ int im_gaddim(double a, IMAGE *in1, double b, IMAGE *in2, double c, IMAGE *out) { static int fmt[] = { IM_BANDFMT_UCHAR, IM_BANDFMT_CHAR, IM_BANDFMT_USHORT, IM_BANDFMT_SHORT, IM_BANDFMT_UINT, IM_BANDFMT_INT }; int y, x; int first, second, result; IMAGE *tmp1, *tmp2; PEL *line; int os; /* size of a line of output image */ /* fd, data filename must have been set before the function is called * Check whether they are set properly */ if ((im_iocheck(in1, out) == -1) || (im_iocheck(in2, out) == -1)) { return(-1); } /* Checks the arguments entered in in and prepares out */ if ( (in1->Xsize != in2->Xsize) || (in1->Ysize != in2->Ysize) || (in1->Bands != in2->Bands) || (in1->Coding != in2->Coding) ) { im_error("im_gaddim"," Input images differ"); return(-1); } if (in1->Coding != IM_CODING_NONE) { im_error("im_gaddim"," images must be uncoded"); return(-1);} switch(in1->BandFmt) { case IM_BANDFMT_UCHAR: first = 0; break; case IM_BANDFMT_CHAR: first = 1; break; case IM_BANDFMT_USHORT: first = 2; break; case IM_BANDFMT_SHORT: first = 3; break; case IM_BANDFMT_UINT: first = 4; break; case IM_BANDFMT_INT: first = 5; break; default: im_error("im_gaddim"," Unable to accept image1"); return(-1); } switch(in2->BandFmt) { case IM_BANDFMT_UCHAR: second = 0; break; case IM_BANDFMT_CHAR: second = 1; break; case IM_BANDFMT_USHORT: second = 2; break; case IM_BANDFMT_SHORT: second = 3; break; case IM_BANDFMT_UINT: second = 4; break; case IM_BANDFMT_INT: second = 5; break; default: im_error("im_gaddim"," Unable to accept image2"); return(-1); } /* Define the output */ result = array[first][second]; /* Prepare the output header */ if ( im_cp_desc(out, in1) == -1) { im_error("im_gaddim"," im_cp_desc failed"); return(-1); } out->BandFmt = fmt[result]; if( im_setupout(out) == -1) { im_error("im_gaddim"," im_setupout failed"); return(-1); } /* Order in1 and in2 */ if ( first >= second ) { tmp1 = in1; tmp2 = in2; } else { tmp1 = in2; tmp2 = in1; } /* Define what we do for each band element type. */ #define loop(IN1, IN2, OUT) \ { IN1 *input1 = (IN1 *) tmp1->data; \ IN2 *input2 = (IN2 *) tmp2->data; \ \ for (y=0; y Ysize; y++) {\ OUT *cpline = (OUT*)line; \ for (x=0; xXsize * out->Bands; line = (PEL *) calloc ( (unsigned)os, sizeof(double) ); if (line == NULL) { im_error("im_gaddim"," Unable to calloc"); return(-1); } switch (out->BandFmt) { case IM_BANDFMT_INT: switch (tmp2->BandFmt) { select_tmp2_for_out_int(int); } break; case IM_BANDFMT_UINT: switch (tmp2->BandFmt) { select_tmp2_for_out_int(unsigned int); } break; case IM_BANDFMT_SHORT: switch (tmp2->BandFmt) { select_tmp2_for_out_short(short); } break; case IM_BANDFMT_USHORT: switch (tmp2->BandFmt) { select_tmp2_for_out_short(unsigned short); } break; default: im_error("im_gaddim"," Impossible output state"); free( line); return(-1); } free( line); return(0); } libvips-8.9.1/libvips/deprecated/im_gfadd.c000066400000000000000000000235551361153320700206620ustar00rootroot00000000000000/* @(#) Generalised addition of two vasari images. Result (double or float) * @(#)depends on inputs * @(#) Function im_gfadd() assumes that the both input files * @(#) are either memory mapped or in a buffer. * @(#) Images must have the same no of bands and can be of any type * @(#) No check for overflow is carried out. If in doubt use im_clip2... * @(#) Result at eachpoint is a*in1 + b*in2 + c * @(#) * @(#) int im_gfadd(a, in1, b, in2, c, out) * @(#) double a, b, c; * @(#) IMAGE *in1, *in2, *out; * @(#) * @(#) Returns 0 on success and -1 on error * @(#) * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 15/6/93 J.Cupitt * - externs removed * - casts added to please ANSI C * - includes rationalised */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* uchar char ushort short uint int float double */ static int array[8][8] = { /* uchar */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* char */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* ushort */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* short */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* uint */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* int */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* float */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* double */ { 1, 1, 1, 1, 1, 1, 1, 1 } }; #define select_outdouble(IN2, OUT)\ switch(tmp1->BandFmt) {\ case IM_BANDFMT_DOUBLE: loop(double, IN2, OUT); break;\ default: im_error("im_gfadd","Wrong tmp1 format(d)");\ free( line); return( -1 );\ } #define outfloat_2uchar(IN2, OUT)\ case IM_BANDFMT_UCHAR: loop(unsigned char, IN2, OUT); break;\ case IM_BANDFMT_CHAR: loop(signed char, IN2, OUT); break;\ case IM_BANDFMT_USHORT: loop(unsigned short, IN2, OUT); break;\ case IM_BANDFMT_SHORT: loop(signed short, IN2, OUT); break;\ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break;\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2char(IN2, OUT)\ case IM_BANDFMT_CHAR: loop(signed char, IN2, OUT); break;\ case IM_BANDFMT_USHORT: loop(unsigned short, IN2, OUT); break;\ case IM_BANDFMT_SHORT: loop(signed short, IN2, OUT); break;\ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break;\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2ushort(IN2, OUT)\ case IM_BANDFMT_USHORT: loop(unsigned short, IN2, OUT); break;\ case IM_BANDFMT_SHORT: loop(signed short, IN2, OUT); break;\ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break;\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2short(IN2, OUT)\ case IM_BANDFMT_SHORT: loop(signed short, IN2, OUT); break;\ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break;\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2uint(IN2, OUT)\ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break;\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2int(IN2, OUT)\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2float(IN2, OUT)\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; /** * im_gfadd: * * Deprecated. */ int im_gfadd(double a, IMAGE *in1, double b, IMAGE *in2, double c, IMAGE *out) { static int fmt[] = { IM_BANDFMT_FLOAT, IM_BANDFMT_DOUBLE }; int y, x; int first, second, result; IMAGE *tmp1, *tmp2; PEL *line; int os; /* size of a line of output image */ /* fd, data filename must have been set before the function is called * Check whether they are set properly */ if ((im_iocheck(in1, out) == -1) || (im_iocheck(in2, out) == -1)) { im_error("im_gfadd"," im_iocheck failed"); return( -1 ); } /* Checks the arguments entered in in and prepares out */ if ( (in1->Xsize != in2->Xsize) || (in1->Ysize != in2->Ysize) || (in1->Bands != in2->Bands) || (in1->Coding != in2->Coding) ) { im_error("im_gfadd"," Input images differ"); return( -1 );} if (in1->Coding != IM_CODING_NONE) { im_error("im_gfadd"," images are coded"); return( -1 ); } switch(in1->BandFmt) { case IM_BANDFMT_UCHAR: first = 0; break; case IM_BANDFMT_CHAR: first = 1; break; case IM_BANDFMT_USHORT: first = 2; break; case IM_BANDFMT_SHORT: first = 3; break; case IM_BANDFMT_UINT: first = 4; break; case IM_BANDFMT_INT: first = 5; break; case IM_BANDFMT_FLOAT: first = 6; break; case IM_BANDFMT_DOUBLE: first = 7; break; default: im_error("im_gfadd"," unable to accept image1"); return( -1 ); } switch(in2->BandFmt) { case IM_BANDFMT_UCHAR: second = 0; break; case IM_BANDFMT_CHAR: second = 1; break; case IM_BANDFMT_USHORT: second = 2; break; case IM_BANDFMT_SHORT: second = 3; break; case IM_BANDFMT_UINT: second = 4; break; case IM_BANDFMT_INT: second = 5; break; case IM_BANDFMT_FLOAT: second = 6; break; case IM_BANDFMT_DOUBLE: second = 7; break; default: im_error("im_gfadd"," unable to accept image2"); return( -1 ); } /* Define the output */ result = array[first][second]; /* Prepare output */ if ( im_cp_desc(out, in1) == -1) { im_error("im_gfadd"," im_cp_desc failed"); return( -1 ); } out->BandFmt = fmt[result]; if( im_setupout(out) == -1) { im_error("im_gfadd"," im_setupout failed"); return( -1 ); } /* Order in1 and in2 */ if ( first >= second ) { tmp1 = in1; tmp2 = in2; } else { tmp1 = in2; tmp2 = in1; } /* Define what we do for each band element type. */ #define loop(IN1, IN2, OUT)\ { IN1 *input1 = (IN1 *) tmp1->data;\ IN2 *input2 = (IN2 *) tmp2->data;\ \ for (y=0; y Ysize; y++) {\ OUT *cpline = (OUT*)line;\ for (x=0; xXsize * out->Bands; line = (PEL *) calloc ( (unsigned)os, sizeof(double) ); if (line == NULL) { im_error("im_gfadd"," unable to calloc"); return( -1 ); } switch (out->BandFmt) { case IM_BANDFMT_DOUBLE: switch (tmp2->BandFmt) { case IM_BANDFMT_UCHAR: select_outdouble(unsigned char, double); break; case IM_BANDFMT_CHAR: select_outdouble(signed char, double); break; case IM_BANDFMT_USHORT: select_outdouble(unsigned short, double); break; case IM_BANDFMT_SHORT: select_outdouble(signed short, double); break; case IM_BANDFMT_UINT: select_outdouble(unsigned int, double); break; case IM_BANDFMT_INT: select_outdouble(signed int, double); break; case IM_BANDFMT_FLOAT: select_outdouble(float, double); break; case IM_BANDFMT_DOUBLE: select_outdouble(double, double); break; default: im_error("im_gfadd","Wrong tmp2 format(d)"); free( line ); return( -1 ); } break; case IM_BANDFMT_FLOAT : switch (tmp2->BandFmt) { case IM_BANDFMT_UCHAR: switch (tmp1->BandFmt) { outfloat_2uchar(unsigned char, float); default: im_error("im_gfadd"," Error (a)"); free( line ); return( -1 ); } break; case IM_BANDFMT_CHAR: switch (tmp1->BandFmt) { outfloat_2char(signed char, float); default: im_error("im_gfadd"," Error (b)"); free( line); return( -1 ); } break; case IM_BANDFMT_USHORT: switch (tmp1->BandFmt) { outfloat_2ushort(unsigned short, float); default: im_error("im_gfadd"," Error (c)"); free( line); return( -1 ); } break; case IM_BANDFMT_SHORT: switch (tmp1->BandFmt) { outfloat_2short(signed short, float); default: im_error("im_gfadd"," Error (d)"); free( line); return( -1 ); } break; case IM_BANDFMT_UINT: switch (tmp1->BandFmt) { outfloat_2uint(unsigned int, float); default: im_error("im_gfadd"," Error (e)"); free( line); return( -1 ); } break; case IM_BANDFMT_INT: switch (tmp1->BandFmt) { outfloat_2int(signed int, float); default: im_error("im_gfadd"," Error (f)"); free( line ); return( -1 ); } break; case IM_BANDFMT_FLOAT: switch (tmp1->BandFmt) { outfloat_2float(float, float); default: im_error("im_gfadd"," Error (g)"); free( line ); return( -1 ); } break; default: im_error("im_gfadd"," Wrong tmp2 format(f)"); free( line ); return( -1 ); } break; default: im_error("im_gfadd"," Impossible output state"); free( line ); return( -1 ); } free( line ); return( 0 ); } libvips-8.9.1/libvips/deprecated/im_gradcor.c000066400000000000000000000576751361153320700212500ustar00rootroot00000000000000/* im_gradcor * * Copyright: 2007 Nottingham Trent University * * Author: Tom Vajzovic * Written on: 2007-06-07 * 3/2/10 * - gtkdoc * - cleanups */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /** HEADERS **/ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /** LOCAL TYPES **/ typedef struct { REGION *reg; int *region_xgrad; int *region_ygrad; size_t region_xgrad_area; size_t region_ygrad_area; } gradcor_seq_t; /** LOCAL FUNCTION DECLARATIONS **/ static void *gradcor_start( IMAGE *out, void *vptr_large, void *unrequired ); static int gradcor_stop( void *vptr_seq, void *unrequired, void *unreq2 ); static int gradcor_gen( REGION *to_make, void *vptr_seq, void *unrequired, void *vptr_grads ); #define XGRAD_GEN_DECLARATION( TYPE ) static int xgrad_gen_ ## TYPE( REGION *to_make, void *vptr_make_from, void *unrequired, void *unreq2 ) #define YGRAD_GEN_DECLARATION( TYPE ) static int ygrad_gen_ ## TYPE( REGION *to_make, void *vptr_make_from, void *unrequired, void *unreq2 ) XGRAD_GEN_DECLARATION( guint8 ); YGRAD_GEN_DECLARATION( guint8 ); XGRAD_GEN_DECLARATION( gint8 ); YGRAD_GEN_DECLARATION( gint8 ); XGRAD_GEN_DECLARATION( guint16 ); YGRAD_GEN_DECLARATION( guint16 ); XGRAD_GEN_DECLARATION( gint16 ); YGRAD_GEN_DECLARATION( gint16 ); XGRAD_GEN_DECLARATION( guint32 ); YGRAD_GEN_DECLARATION( guint32 ); XGRAD_GEN_DECLARATION( gint32 ); YGRAD_GEN_DECLARATION( gint32 ); #if 0 XGRAD_GEN_DECLARATION( float ); YGRAD_GEN_DECLARATION( float ); XGRAD_GEN_DECLARATION( double ); YGRAD_GEN_DECLARATION( double ); #endif /** EXPORTED FUNCTION DEFINITIONS **/ int im_gradcor_raw( IMAGE *large, IMAGE *small, IMAGE *out ){ #define FUNCTION_NAME "im_gradcor_raw" if( im_piocheck( large, out ) || im_pincheck( small ) ) return -1; if( im_check_uncoded( "im_gradcor", large ) || im_check_mono( "im_gradcor", large ) || im_check_uncoded( "im_gradcor", small ) || im_check_mono( "im_gradcor", small ) || im_check_format_same( "im_gradcor", large, small ) || im_check_int( "im_gradcor", large ) ) return( -1 ); if( large-> Xsize < small-> Xsize || large-> Ysize < small-> Ysize ){ im_error( FUNCTION_NAME, "second image must be smaller than first" ); return -1; } if( im_cp_desc( out, large ) ) return -1; out-> Xsize= 1 + large-> Xsize - small-> Xsize; out-> Ysize= 1 + large-> Ysize - small-> Ysize; out-> BandFmt= IM_BANDFMT_FLOAT; if( im_demand_hint( out, IM_FATSTRIP, large, NULL ) ) return -1; { IMAGE *xgrad= im_open_local( out, FUNCTION_NAME ": xgrad", "t" ); IMAGE *ygrad= im_open_local( out, FUNCTION_NAME ": ygrad", "t" ); IMAGE **grads= im_allocate_input_array( out, xgrad, ygrad, NULL ); return ! xgrad || ! ygrad || ! grads || im_grad_x( small, xgrad ) || im_grad_y( small, ygrad ) || im_generate( out, gradcor_start, gradcor_gen, gradcor_stop, (void*) large, (void*) grads ); } #undef FUNCTION_NAME } /** * im_gradcor: * @in: input image * @ref: reference image * @out: output image * * Calculate a correlation surface. * * @ref is placed at every position in @in and a correlation coefficient * calculated. One-band, integer images only. @in and @ref must have the * same #VipsBandFmt. The output * image is always %IM_BANDFMT_FLOAT. @ref must be smaller than @in. The output * image is the same size as the input. * * The method takes the gradient images of the two images then takes the * dot-product correlation of the two vector images. * The vector expression of this method is my (tcv) own creation. It is * equivalent to the complex-number method of: * * ARGYRIOU, V. et al. 2003. Estimation of sub-pixel motion using * gradient cross correlation. Electronics Letters, 39 (13). * * See also: im_spcor(). * * Returns: 0 on success, -1 on error */ int im_gradcor( IMAGE *in, IMAGE *ref, IMAGE *out ) { #define FUNCTION_NAME "im_gradcor" IMAGE *t1 = im_open_local( out, FUNCTION_NAME " intermediate", "p" ); if( !t1 || im_embed( in, t1, 1, ref->Xsize / 2, ref->Ysize / 2, in->Xsize + ref->Xsize - 1, in->Ysize + ref->Ysize - 1 ) || im_gradcor_raw( t1, ref, out ) ) return( -1 ); out->Xoffset = 0; out->Yoffset = 0; return( 0 ); #undef FUNCTION_NAME } /** * im_grad_x: * @in: input image * @out: output image * * Find horizontal differences between adjacent pixels. * * Generates an image where the value of each pixel is the difference between * it and the pixel to its right. The output has the same height as the input * and one pixel less width. One-band integer formats only. The result is * always %IM_BANDFMT_INT. * * This operation is much faster than (though equivalent to) im_conv() with the * mask [[-1, 1]]. * * See also: im_grad_y(), im_conv(). * * Returns: 0 on success, -1 on error */ int im_grad_x( IMAGE *in, IMAGE *out ){ #define FUNCTION_NAME "im_grad_x" if( im_piocheck( in, out ) ) return -1; if( im_check_uncoded( "im_grad_x", in ) || im_check_mono( "im_grad_x", in ) || im_check_int( "im_grad_x", in ) ) return( -1 ); if( im_cp_desc( out, in ) ) return -1; -- out-> Xsize; out-> BandFmt= IM_BANDFMT_INT; /* do not change without updating im_gradcor() */ if( im_demand_hint( out, IM_THINSTRIP, in, NULL ) ) return -1; #define RETURN_GENERATE( TYPE ) return im_generate( out, im_start_one, xgrad_gen_ ## TYPE, im_stop_one, (void*) in, NULL ) switch( in-> BandFmt ){ case IM_BANDFMT_UCHAR: RETURN_GENERATE( guint8 ); case IM_BANDFMT_CHAR: RETURN_GENERATE( gint8 ); case IM_BANDFMT_USHORT: RETURN_GENERATE( guint16 ); case IM_BANDFMT_SHORT: RETURN_GENERATE( gint16 ); case IM_BANDFMT_UINT: RETURN_GENERATE( guint32 ); case IM_BANDFMT_INT: RETURN_GENERATE( gint32 ); #if 0 case IM_BANDFMT_FLOAT: RETURN_GENERATE( float ); case IM_BANDFMT_DOUBLE: RETURN_GENERATE( double ); #endif #undef RETURN_GENERATE default: g_assert( 0 ); } /* Keep gcc happy. */ return 0; #undef FUNCTION_NAME } /** * im_grad_y: * @in: input image * @out: output image * * Find vertical differences between adjacent pixels. * * Generates an image where the value of each pixel is the difference between * it and the pixel below it. The output has the same width as the input * and one pixel less height. One-band integer formats only. The result is * always %IM_BANDFMT_INT. * * This operation is much faster than (though equivalent to) im_conv() with the * mask [[-1], [1]]. * * See also: im_grad_x(), im_conv(). * * Returns: 0 on success, -1 on error */ int im_grad_y( IMAGE *in, IMAGE *out ){ #define FUNCTION_NAME "im_grad_y" if( im_piocheck( in, out ) ) return -1; if( im_check_uncoded( "im_grad_y", in ) || im_check_mono( "im_grad_y", in ) || im_check_int( "im_grad_y", in ) ) return( -1 ); if( im_cp_desc( out, in ) ) return -1; -- out-> Ysize; out-> BandFmt= IM_BANDFMT_INT; /* do not change without updating im_gradcor() */ if( im_demand_hint( out, IM_FATSTRIP, in, NULL ) ) return -1; #define RETURN_GENERATE( TYPE ) return im_generate( out, im_start_one, ygrad_gen_ ## TYPE, im_stop_one, (void*) in, NULL ) switch( in-> BandFmt ){ case IM_BANDFMT_UCHAR: RETURN_GENERATE( guint8 ); case IM_BANDFMT_CHAR: RETURN_GENERATE( gint8 ); case IM_BANDFMT_USHORT: RETURN_GENERATE( guint16 ); case IM_BANDFMT_SHORT: RETURN_GENERATE( gint16 ); case IM_BANDFMT_UINT: RETURN_GENERATE( guint32 ); case IM_BANDFMT_INT: RETURN_GENERATE( gint32 ); #if 0 case IM_BANDFMT_FLOAT: RETURN_GENERATE( float ); case IM_BANDFMT_DOUBLE: RETURN_GENERATE( double ); #endif #undef RETURN_GENERATE default: g_assert( 0 ); } /* Keep gcc happy. */ return 0; #undef FUNCTION_NAME } /** LOCAL FUNCTION DEFINITIONS **/ static void *gradcor_start( IMAGE *out, void *vptr_large, void *unrequired ){ gradcor_seq_t *seq= IM_NEW( NULL, gradcor_seq_t ); if( ! seq ) return NULL; seq-> region_xgrad= (int*) NULL; seq-> region_ygrad= (int*) NULL; seq-> region_xgrad_area= 0; seq-> region_ygrad_area= 0; seq-> reg= im_region_create( (IMAGE*) vptr_large ); if( ! seq-> reg ){ im_free( (void*) seq ); return NULL; } return (void*) seq; } static int gradcor_stop( void *vptr_seq, void *unrequired, void *unreq2 ){ gradcor_seq_t *seq= (gradcor_seq_t*) vptr_seq; if( seq ){ im_free( (void*) seq-> region_xgrad ); im_free( (void*) seq-> region_ygrad ); im_region_free( seq-> reg ); seq-> region_xgrad= (int*) NULL; seq-> region_ygrad= (int*) NULL; seq-> reg= (REGION*) NULL; im_free( (void*) seq ); } return 0; } static int gradcor_gen( REGION *to_make, void *vptr_seq, void *unrequired, void *vptr_grads ){ gradcor_seq_t *seq= (gradcor_seq_t*) vptr_seq; REGION *make_from= seq-> reg; IMAGE **grads= (IMAGE**) vptr_grads; IMAGE *small_xgrad= grads[0]; IMAGE *small_ygrad= grads[1]; Rect require= { to_make-> valid. left, to_make-> valid. top, to_make-> valid. width + small_xgrad-> Xsize, to_make-> valid. height + small_ygrad-> Ysize }; size_t region_xgrad_width= require. width - 1; size_t region_ygrad_height= require. height - 1; if( im_prepare( make_from, &require ) ) return -1; #define FILL_BUFFERS( TYPE ) /* fill region_xgrad */ \ { \ TYPE *reading= (TYPE*) IM_REGION_ADDR( make_from, require. left, require. top ); \ size_t read_skip= ( IM_REGION_LSKIP( make_from ) / sizeof(TYPE) ) - region_xgrad_width; \ size_t area_need= region_xgrad_width * require. height; \ \ if( seq-> region_xgrad_area < area_need ){ \ free( seq-> region_xgrad ); \ seq-> region_xgrad= malloc( area_need * sizeof(int) ); \ if( ! seq-> region_xgrad ) \ return -1; \ seq-> region_xgrad_area= area_need; \ } \ { \ int *writing= seq-> region_xgrad; \ int *write_end= writing + area_need; \ int *write_stop; \ for( ; writing < write_end; reading+= read_skip ) \ for( write_stop= writing + region_xgrad_width; writing < write_stop; ++reading, ++writing ) \ *writing= reading[1] - reading[0]; \ } \ } \ { /* fill region_ygrad */ \ TYPE *reading= (TYPE*) IM_REGION_ADDR( make_from, require. left, require. top ); \ size_t read_line= IM_REGION_LSKIP( make_from ) / sizeof(TYPE); \ size_t read_skip= read_line - require. width; \ size_t area_need= require. width * region_ygrad_height; \ \ if( seq-> region_ygrad_area < area_need ){ \ free( seq-> region_ygrad ); \ seq-> region_ygrad= malloc( area_need * sizeof(int) ); \ if( ! seq-> region_ygrad ) \ return -1; \ seq-> region_ygrad_area= area_need; \ } \ { \ int *writing= seq-> region_ygrad; \ int *write_end= writing + area_need; \ int *write_stop; \ for( ; writing < write_end; reading+= read_skip ) \ for( write_stop= writing + require. width; writing < write_stop; ++reading, ++writing ) \ *writing= reading[ read_line ] - reading[0]; \ } \ } switch( make_from-> im-> BandFmt ){ case IM_BANDFMT_UCHAR: FILL_BUFFERS( unsigned char ) break; case IM_BANDFMT_CHAR: FILL_BUFFERS( signed char ) break; case IM_BANDFMT_USHORT: FILL_BUFFERS( unsigned short int ) break; case IM_BANDFMT_SHORT: FILL_BUFFERS( signed short int ) break; case IM_BANDFMT_UINT: FILL_BUFFERS( unsigned int ) break; case IM_BANDFMT_INT: FILL_BUFFERS( signed int ) break; default: g_assert( 0 ); } { /* write to output */ size_t write_skip= IM_REGION_LSKIP( to_make ) / sizeof( float ); float *writing= (float*) IM_REGION_ADDR_TOPLEFT( to_make ); float *write_end= writing + write_skip * to_make-> valid. height; float *write_stop; size_t write_width= to_make-> valid. width; size_t small_xgrad_width= small_xgrad-> Xsize; size_t small_ygrad_width= small_ygrad-> Xsize; int *small_xgrad_end= (int*) small_xgrad-> data + small_xgrad_width * small_xgrad-> Ysize; int *small_ygrad_end= (int*) small_ygrad-> data + small_ygrad_width * small_ygrad-> Ysize; int *region_xgrad_start= seq-> region_xgrad; int *region_ygrad_start= seq-> region_ygrad; size_t region_xgrad_start_skip= region_xgrad_width - write_width; size_t region_ygrad_start_skip= require. width - write_width; size_t region_xgrad_read_skip= region_xgrad_width - small_xgrad_width; size_t region_ygrad_read_skip= require. width - small_ygrad_width; write_skip-= write_width; for( ; writing < write_end; writing+= write_skip, region_xgrad_start+= region_xgrad_start_skip, region_ygrad_start+= region_ygrad_start_skip ) for( write_stop= writing + write_width; writing < write_stop; ++writing, ++region_xgrad_start, ++region_ygrad_start ){ gint64 sum= 0; { int *small_xgrad_read= (int*) small_xgrad-> data; int *small_xgrad_stop; int *region_xgrad_read= region_xgrad_start; for( ; small_xgrad_read < small_xgrad_end; region_xgrad_read+= region_xgrad_read_skip ) for( small_xgrad_stop= small_xgrad_read + small_xgrad_width; small_xgrad_read < small_xgrad_stop; ++small_xgrad_read, ++region_xgrad_read ) sum+= *small_xgrad_read * *region_xgrad_read; } { int *small_ygrad_read= (int*) small_ygrad-> data; int *small_ygrad_stop; int *region_ygrad_read= region_ygrad_start; for( ; small_ygrad_read < small_ygrad_end; region_ygrad_read+= region_ygrad_read_skip ) for( small_ygrad_stop= small_ygrad_read + small_ygrad_width; small_ygrad_read < small_ygrad_stop; ++small_ygrad_read, ++region_ygrad_read ) sum+= *small_ygrad_read * *region_ygrad_read; } *writing= sum; } } return 0; } #define XGRAD_GEN_DEFINITION( TYPE ) \ static int xgrad_gen_ ## TYPE( REGION *to_make, void *vptr_make_from, void *unrequired, void *unreq2 ){ \ \ REGION *make_from= (REGION*) vptr_make_from; \ Rect require= { \ to_make-> valid. left, \ to_make-> valid. top, \ to_make-> valid. width + 1, \ to_make-> valid. height \ }; \ if( im_prepare( make_from, &require ) ) \ return -1; \ \ { \ int *writing= (int*) IM_REGION_ADDR_TOPLEFT( to_make ); \ size_t write_skip= IM_REGION_LSKIP( to_make ) / sizeof(int); \ int *write_end= writing + write_skip * to_make-> valid. height; \ size_t write_width= to_make-> valid. width; \ int *write_stop; \ \ TYPE *reading= (TYPE*) IM_REGION_ADDR( make_from, require. left, require. top ); \ size_t read_skip= ( IM_REGION_LSKIP( make_from ) / sizeof(TYPE) ) - write_width; \ \ write_skip-= write_width; \ \ for( ; writing < write_end; writing+= write_skip, reading+= read_skip ) \ for( write_stop= writing + write_width; writing < write_stop; ++writing, ++reading ) \ *writing= (int)( reading[1] - reading[0] ); \ } \ return 0; \ } #define YGRAD_GEN_DEFINITION( TYPE ) \ static int ygrad_gen_ ## TYPE( REGION *to_make, void *vptr_make_from, void *unrequired, void *unreq2 ){ \ \ REGION *make_from= (REGION*) vptr_make_from; \ Rect require= { \ to_make-> valid. left, \ to_make-> valid. top, \ to_make-> valid. width, \ to_make-> valid. height + 1 \ }; \ if( im_prepare( make_from, &require ) ) \ return -1; \ \ { \ int *writing= (int*) IM_REGION_ADDR_TOPLEFT( to_make ); \ size_t write_skip= IM_REGION_LSKIP( to_make ) / sizeof(int); \ int *write_end= writing + write_skip * to_make-> valid. height; \ size_t write_width= to_make-> valid. width; \ int *write_stop; \ \ TYPE *reading= (TYPE*) IM_REGION_ADDR( make_from, require. left, require. top ); \ size_t read_line= IM_REGION_LSKIP( make_from ) / sizeof(TYPE); \ size_t read_skip= read_line - write_width; \ \ write_skip-= write_width; \ \ for( ; writing < write_end; writing+= write_skip, reading+= read_skip ) \ for( write_stop= writing + write_width; writing < write_stop; ++writing, ++reading ) \ *writing= (int)( reading[ read_line ] - reading[0] ); \ } \ return 0; \ } XGRAD_GEN_DEFINITION( guint8 ) YGRAD_GEN_DEFINITION( guint8 ) XGRAD_GEN_DEFINITION( gint8 ) YGRAD_GEN_DEFINITION( gint8 ) XGRAD_GEN_DEFINITION( guint16 ) YGRAD_GEN_DEFINITION( guint16 ) XGRAD_GEN_DEFINITION( gint16 ) YGRAD_GEN_DEFINITION( gint16 ) XGRAD_GEN_DEFINITION( guint32 ) YGRAD_GEN_DEFINITION( guint32 ) XGRAD_GEN_DEFINITION( gint32 ) YGRAD_GEN_DEFINITION( gint32 ) #if 0 XGRAD_GEN_DEFINITION( float ) YGRAD_GEN_DEFINITION( float ) XGRAD_GEN_DEFINITION( double ) YGRAD_GEN_DEFINITION( double ) #endif libvips-8.9.1/libvips/deprecated/im_jpeg2vips.c000066400000000000000000000111711361153320700215150ustar00rootroot00000000000000/* Convert 1 or 3-band 8-bit VIPS images to/from JPEG. * * 30/11/11 * - now just a stub * 10/7/12 * - use jpeg funcs directly rather than going though vips_jpegload() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "../foreign/pforeign.h" static int jpeg2vips( const char *name, IMAGE *out, gboolean header_only ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q; int shrink; int seq; gboolean fail_on_warn; /* By default, we ignore any warnings. We want to get as much of * the user's data as we can. */ fail_on_warn = FALSE; /* Parse the filename. */ im_filename_split( name, filename, mode ); p = &mode[0]; shrink = 1; seq = 0; if( (q = im_getnextoption( &p )) ) { shrink = atoi( q ); if( shrink != 1 && shrink != 2 && shrink != 4 && shrink != 8 ) { im_error( "im_jpeg2vips", _( "bad shrink factor %d" ), shrink ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "fail", q ) ) fail_on_warn = TRUE; } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "seq", q ) ) seq = 1; } /* Don't use vips_jpegload() ... we call the jpeg func directly in * order to avoid the foreign.c mechanisms for load-via-disc and stuff * like that. */ /* We need to be compatible with the pre-sequential mode * im_jpeg2vips(). This returned a "t" if given a "p" image, since it * used writeline. * * If we're writing the image to a "p", switch it to a "t". */ if( !header_only && !seq && out->dtype == VIPS_IMAGE_PARTIAL ) { if( vips__image_wio_output( out ) ) return( -1 ); } #ifdef HAVE_JPEG { VipsSource *source; if( !(source = vips_source_new_from_file( filename )) ) return( -1 ); if( vips__jpeg_read_source( source, out, header_only, shrink, fail_on_warn, FALSE ) ) { VIPS_UNREF( source ); return( -1 ); } VIPS_UNREF( source ); } #else vips_error( "im_jpeg2vips", "%s", _( "no JPEG support in your libvips" ) ); return( -1 ); #endif /*HAVE_JPEG*/ return( 0 ); } int im_jpeg2vips( const char *name, IMAGE *out ) { return( jpeg2vips( name, out, FALSE ) ); } /* By having a separate header func, we get lazy.c to open via disc/mem. */ static int im_jpeg2vips_header( const char *name, IMAGE *out ) { return( jpeg2vips( name, out, TRUE ) ); } int im_bufjpeg2vips( void *buf, size_t len, IMAGE *out, gboolean header_only ) { VipsImage *t; /* header_only is now automatic ... this call will only decompress on * pixel access. */ if( vips_jpegload_buffer( buf, len, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int isjpeg( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( vips_foreign_is_a( "jpegload", filename ) ); } static const char *jpeg_suffs[] = { ".jpg", ".jpeg", ".jpe", NULL }; /* jpeg format adds no new members. */ typedef VipsFormat VipsFormatJpeg; typedef VipsFormatClass VipsFormatJpegClass; static void vips_format_jpeg_class_init( VipsFormatJpegClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "jpeg"; object_class->description = _( "JPEG" ); format_class->is_a = isjpeg; format_class->header = im_jpeg2vips_header; format_class->load = im_jpeg2vips; format_class->save = im_vips2jpeg; format_class->suffs = jpeg_suffs; } static void vips_format_jpeg_init( VipsFormatJpeg *object ) { } G_DEFINE_TYPE( VipsFormatJpeg, vips_format_jpeg, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/im_lab_morph.c000066400000000000000000000155151361153320700215550ustar00rootroot00000000000000/* Morph a lab image. * * 8/3/01 * - added * 2/11/09 * - cleanups * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include int im__colour_unary( const char *domain, IMAGE *in, IMAGE *out, VipsType type, im_wrapone_fn buffer_fn, void *a, void *b ) { IMAGE *t[1]; if( im_check_uncoded( domain, in ) || im_check_bands( domain, in, 3 ) || im_open_local_array( out, t, 1, domain, "p" ) || im_clip2fmt( in, t[0], IM_BANDFMT_FLOAT ) ) return( -1 ); if( im_cp_desc( out, t[0] ) ) return( -1 ); out->Type = type; if( im_wrapone( t[0], out, (im_wrapone_fn) buffer_fn, a, b ) ) return( -1 ); return( 0 ); } typedef struct { IMAGE *in, *out; double L_scale, L_offset; double a_offset[101], b_offset[101]; double a_scale, b_scale; } Params; static int morph_init( Params *parm, IMAGE *in, IMAGE *out, double L_scale, double L_offset, DOUBLEMASK *mask, double a_scale, double b_scale ) { int i, j; parm->in = in; parm->out = out; parm->L_scale = L_scale; parm->L_offset = L_offset; parm->a_scale = a_scale; parm->b_scale = b_scale; if( mask->xsize != 3 || mask->ysize < 1 || mask->ysize > 100 ) { im_error( "im_lab_morph", "%s", _( "bad greyscale mask size" ) ); return( -1 ); } for( i = 0; i < mask->ysize; i++ ) { double L = mask->coeff[i*3]; double a = mask->coeff[i*3 + 1]; double b = mask->coeff[i*3 + 2]; if( L < 0 || L > 100 || a < -120 || a > 120 || b < -120 || b > 120 ) { im_error( "im_lab_morph", _( "bad greyscale mask value, row %d" ), i ); return( -1 ); } } /* Generate a/b offsets. */ for( i = 0; i <= 100; i++ ) { double L_low = 0; double a_low = 0; double b_low = 0; double L_high = 100; double a_high = 0; double b_high = 0; /* Search for greyscale L just below i. Don't assume sorted by * L*. */ for( j = 0; j < mask->ysize; j++ ) { double L = mask->coeff[j*3]; double a = mask->coeff[j*3 + 1]; double b = mask->coeff[j*3 + 2]; if( L < i && L > L_low ) { L_low = L; a_low = a; b_low = b; } } /* Search for greyscale L just above i. */ for( j = mask->ysize - 1; j >= 0; j-- ) { double L = mask->coeff[j*3]; double a = mask->coeff[j*3 + 1]; double b = mask->coeff[j*3 + 2]; if( L >= i && L < L_high ) { L_high = L; a_high = a; b_high = b; } } /* Interpolate. */ parm->a_offset[i] = a_low + (a_high - a_low) * ((i - L_low) / (L_high - L_low)); parm->b_offset[i] = b_low + (b_high - b_low) * ((i - L_low) / (L_high - L_low)); } return( 0 ); } static void morph_buffer( float *in, float *out, int width, Params *parm ) { int x; for( x = 0; x < width; x++ ) { double L = in[0]; double a = in[1]; double b = in[2]; L = IM_CLIP( 0, L, 100 ); a -= parm->a_offset[(int) L]; b -= parm->b_offset[(int) L]; L = (L + parm->L_offset) * parm->L_scale; L = IM_CLIP( 0, L, 100 ); a *= parm->a_scale; b *= parm->b_scale; out[0] = L; out[1] = a; out[2] = b; in += 3; out += 3; } } /** * im_lab_morph: * @in: input image * @out: output image * @mask: cast correction table * @L_offset: L adjustment * @L_scale: L adjustment * @a_scale: a scale * @b_scale: b scale * * Morph an image in CIELAB colour space. Useful for certain types of gamut * mapping, or correction of greyscales on some printers. * * We perform three adjustments: * * * * * cast * * Pass in @mask containing CIELAB readings for a neutral greyscale. For * example: * * * * * 3 * 4 * * * 14.23 * 4.8 * -3.95 * * * 18.74 * 2.76 * -2.62 * * * 23.46 * 1.4 * -1.95 * * * 27.53 * 1.76 * -2.01 * * * * * Interpolation from this makes cast corrector. The top and tail are * interpolated towards [0, 0, 0] and [100, 0, 0], intermediate values are * interpolated along straight lines fitted between the specified points. * Rows may be in any order (ie. they need not be sorted on L*). * * Each pixel is displaced in a/b by the amount specified for that L in the * table. * * * * * L* * * Pass in scale and offset for L. L' = (L + offset) * scale. * * * * * saturation * * scale a and b by these amounts, eg. 1.5 increases saturation. * * * * * Find the top two by generating and printing a greyscale. Find the bottom * by printing a Macbeth and looking at a/b spread * * Returns: 0 on success, -1 on error. */ int im_lab_morph( IMAGE *in, IMAGE *out, DOUBLEMASK *mask, double L_offset, double L_scale, double a_scale, double b_scale ) { Params *parm; /* Recurse for coded images. */ if( in->Coding == IM_CODING_LABQ ) { IMAGE *t[2]; if( im_open_local_array( out, t, 2, "im_lab_morph", "p" ) || im_LabQ2Lab( in, t[0] ) || im_lab_morph( t[0], t[1], mask, L_offset, L_scale, a_scale, b_scale ) || im_Lab2LabQ( t[1], out ) ) return( -1 ); return( 0 ); } if( !(parm = IM_NEW( out, Params )) || morph_init( parm, in, out, L_scale, L_offset, mask, a_scale, b_scale ) ) return( -1 ); return( im__colour_unary( "im_lab_morph", in, out, IM_TYPE_LAB, (im_wrapone_fn) morph_buffer, parm, NULL ) ); } libvips-8.9.1/libvips/deprecated/im_line.c000066400000000000000000000066041361153320700205400ustar00rootroot00000000000000/* @#) line drawer. adapted to draw for graphics system * @(#) Modified to be compatible with the vasari library * @(#) In order to use this function, the input file should have been set by * @(#) im_mmapinrw() * * Copyright: N. Dessipris * Written: 02/01/1990 * Modified : * 22/7/93 JC * - im_incheck() added * - externs removed * 16/8/94 JC * - im_incheck() changed to im_makerw() * 5/12/06 * - im_invalidate() after paint */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include int im_line(image, x1, y1, x2, y2, pelval) IMAGE *image; int x1, x2, y1, y2, pelval; { double x, y, dx, dy, m; long offset; double signx, signy; if( im_rwcheck( image ) ) return( -1 ); /* check coordinates */ if ( (x1 > image->Xsize)||(x1<0)||(y1 > image->Ysize)||(y1<0) ||(x2 > image->Xsize)||(x2<0)||(y2 > image->Ysize)||(y2<0) ) { im_error( "im_line", "%s", _( "invalid line cooordinates") ); return(-1); } if ((pelval > 255)||(pelval < 0)) { im_error( "im_line", "%s", _( "line intensity between 0 and 255") ); return(-1); } if (image->Bands != 1) { im_error( "im_line", "%s", _( "image should have one band only") ); return(-1); } dx = (double)(x2 - x1); dy = (double)(y2 - y1); if (dx < 0.0) signx = -1.0; else signx = 1.0; if (dy < 0.0) signy = -1.0; else signy = 1.0; if (dx == 0.0) { x = x1; y = y1; while (y != y2) { offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize; *(image->data + offset) = (PEL)pelval; y += signy; } /* Draw point (x2, y2) */ offset = x2 + y2 * image->Xsize; *(image->data + offset) = (PEL)pelval; return(0); } if (dy == 0.0) { y = y1; x = x1; while (x != x2) { offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize; *(image->data + offset) = (PEL)pelval; x += signx; } /* Draw point (x2, y2) */ offset = x2 + y2 * image->Xsize; *(image->data + offset) = (PEL)pelval; return(0); } if (fabs(dy) < fabs(dx)) { m = fabs(dy/dx)*signy; y = y1; x = x1; while (x != x2) { offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize; *(image->data + offset) = (PEL)pelval; x += signx; y += m; } } else { m = fabs(dx/dy)*signx; x = x1; y = y1; while (y != y2) { offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize; *(image->data + offset) = (PEL)pelval; x += m; y += signy; } } /* Draw point (x2, y2) */ offset = x2 + y2 * image->Xsize; *(image->data + offset) = (PEL)pelval; im_invalidate( image ); return(0); } libvips-8.9.1/libvips/deprecated/im_linreg.c000066400000000000000000000410351361153320700210660ustar00rootroot00000000000000/* im_linreg.c * * Copyright: 2006, The Nottingham Trent University * * Author: Tom Vajzovic * * Written on: 2006-12-26 * * 12/5/09 * - make x_anal() static, fix some signed/unsigned warnings * 3/9/09 * - gtkdoc comment */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /** HEADERS **/ #ifdef HAVE_CONFIG_H #include #endif /* HAVE_CONFIG_H */ #include #include #include #include #include /** TYPES **/ typedef struct { unsigned int n; double *xs; double *difs; double mean; double nsig2; double err_term; } x_set; #define LINREG_SEQ( TYPE ) typedef struct { \ REGION **regs; \ TYPE **ptrs; \ size_t *skips; \ } linreg_seq_ ## TYPE LINREG_SEQ( gint8 ); LINREG_SEQ( guint8 ); LINREG_SEQ( gint16 ); LINREG_SEQ( guint16 ); LINREG_SEQ( gint32 ); LINREG_SEQ( guint32 ); LINREG_SEQ( float ); LINREG_SEQ( double ); /** LOCAL FUNCTION DECLARATIONS **/ static x_set *x_anal( IMAGE *im, double *xs, unsigned int n ); #define LINREG_START_DECL( TYPE ) static void * linreg_start_ ## TYPE( IMAGE *, void *, void * ); #define LINREG_GEN_DECL( TYPE ) static int linreg_gen_ ## TYPE( REGION *, void *, void *, void * ); #define LINREG_STOP_DECL( TYPE ) static int linreg_stop_ ## TYPE( void *, void *, void * ); #define INCR_ALL_DECL( TYPE ) static void incr_all_ ## TYPE( TYPE **ptrs, unsigned int n ) #define SKIP_ALL_DECL( TYPE ) static void skip_all_ ## TYPE( TYPE **ptrs, size_t *skips, unsigned int n ) LINREG_START_DECL( gint8 ); LINREG_START_DECL( guint8 ); LINREG_START_DECL( gint16 ); LINREG_START_DECL( guint16 ); LINREG_START_DECL( gint32 ); LINREG_START_DECL( guint32 ); LINREG_START_DECL( float ); LINREG_START_DECL( double ); LINREG_GEN_DECL( gint8 ); LINREG_GEN_DECL( guint8 ); LINREG_GEN_DECL( gint16 ); LINREG_GEN_DECL( guint16 ); LINREG_GEN_DECL( gint32 ); LINREG_GEN_DECL( guint32 ); LINREG_GEN_DECL( float ); LINREG_GEN_DECL( double ); LINREG_STOP_DECL( gint8 ); LINREG_STOP_DECL( guint8 ); LINREG_STOP_DECL( gint16 ); LINREG_STOP_DECL( guint16 ); LINREG_STOP_DECL( gint32 ); LINREG_STOP_DECL( guint32 ); LINREG_STOP_DECL( float ); LINREG_STOP_DECL( double ); INCR_ALL_DECL( gint8 ); INCR_ALL_DECL( guint8 ); INCR_ALL_DECL( gint16 ); INCR_ALL_DECL( guint16 ); INCR_ALL_DECL( gint32 ); INCR_ALL_DECL( guint32 ); INCR_ALL_DECL( float ); INCR_ALL_DECL( double ); SKIP_ALL_DECL( gint8 ); SKIP_ALL_DECL( guint8 ); SKIP_ALL_DECL( gint16 ); SKIP_ALL_DECL( guint16 ); SKIP_ALL_DECL( gint32 ); SKIP_ALL_DECL( guint32 ); SKIP_ALL_DECL( float ); SKIP_ALL_DECL( double ); /** EXPORTED FUNCTION DEFINITION **/ /** * im_linreg: * @ins: NULL-terminated array of input images * @out: results of analysis * @xs: X position of each image (pixel value is Y) * * Function to find perform pixelwise linear regression on an array of * single band images. The output is a seven-band douuble image * * TODO: figure out how this works and fix up these docs! */ int im_linreg( IMAGE **ins, IMAGE *out, double *xs ){ #define FUNCTION_NAME "im_linreg" int n; x_set *x_vals; if( im_poutcheck( out ) ) return( -1 ); for( n= 0; ins[ n ]; ++n ){ /* if( ! isfinite( xs[ n ] ) ){ im_error( FUNCTION_NAME, "invalid argument" ); return( -1 ); } */ if( im_pincheck( ins[ n ] ) ) return( -1 ); if( 1 != ins[ n ]-> Bands ){ im_error( FUNCTION_NAME, "image is not single band" ); return( -1 ); } if( ins[ n ]-> Coding ){ im_error( FUNCTION_NAME, "image is not uncoded" ); return( -1 ); } if( n ){ if( ins[ n ]-> BandFmt != ins[ 0 ]-> BandFmt ){ im_error( FUNCTION_NAME, "image band formats differ" ); return( -1 ); } } else { if( vips_band_format_iscomplex( ins[ 0 ]->BandFmt ) ){ im_error( FUNCTION_NAME, "image has non-scalar band format" ); return( -1 ); } } if( n && ( ins[ n ]-> Xsize != ins[ 0 ]-> Xsize || ins[ n ]-> Ysize != ins[ 0 ]-> Ysize ) ){ im_error( FUNCTION_NAME, "image sizes differ" ); return( -1 ); } } if( n < 3 ){ im_error( FUNCTION_NAME, "not enough input images" ); return( -1 ); } if( im_cp_desc_array( out, ins ) ) return( -1 ); out-> Bands= 7; out-> BandFmt= IM_BANDFMT_DOUBLE; out-> Type= 0; if( im_demand_hint_array( out, IM_THINSTRIP, ins ) ) return( -1 ); x_vals= x_anal( out, xs, n ); if( ! x_vals ) return( -1 ); switch( ins[ 0 ]-> BandFmt ){ #define LINREG_RET( TYPE ) return im_generate( out, linreg_start_ ## TYPE, linreg_gen_ ## TYPE, linreg_stop_ ## TYPE, ins, x_vals ) case IM_BANDFMT_CHAR: LINREG_RET( gint8 ); case IM_BANDFMT_UCHAR: LINREG_RET( guint8 ); case IM_BANDFMT_SHORT: LINREG_RET( gint16 ); case IM_BANDFMT_USHORT: LINREG_RET( guint16 ); case IM_BANDFMT_INT: LINREG_RET( gint32 ); case IM_BANDFMT_UINT: LINREG_RET( guint32 ); case IM_BANDFMT_FLOAT: LINREG_RET( float ); case IM_BANDFMT_DOUBLE: LINREG_RET( double ); default: /* keep -Wall happy */ return( -1 ); } #undef FUNCTION_NAME } /** LOCAL FUNCTION DECLARATIONS **/ static x_set *x_anal( IMAGE *im, double *xs, unsigned int n ){ unsigned int i; x_set *x_vals= IM_NEW( im, x_set ); if( ! x_vals ) return( NULL ); x_vals-> xs= IM_ARRAY( im, 2 * n, double ); if( ! x_vals-> xs ) return( NULL ); x_vals-> difs= x_vals-> xs + n; x_vals-> n= n; x_vals-> mean= 0.0; for( i= 0; i < n; ++i ){ x_vals-> xs[ i ]= xs[ i ]; x_vals-> mean+= xs[ i ]; } x_vals-> mean/= n; x_vals-> nsig2= 0.0; for( i= 0; i < n; ++i ){ x_vals-> difs[ i ]= xs[ i ] - x_vals-> mean; x_vals-> nsig2+= x_vals-> difs[ i ] * x_vals-> difs[ i ]; } x_vals-> err_term= ( 1.0 / (double) n ) + ( ( x_vals-> mean * x_vals-> mean ) / x_vals-> nsig2 ); return( x_vals ); } #define LINREG_START_DEFN( TYPE ) static void *linreg_start_ ## TYPE( IMAGE *out, void *a, void *b ){ \ IMAGE **ins= (IMAGE **) a; \ x_set *x_vals= (x_set *) b; \ linreg_seq_ ## TYPE *seq= IM_NEW( out, linreg_seq_ ## TYPE ); \ \ if( ! seq ) \ return NULL; \ \ seq-> regs= im_start_many( NULL, ins, NULL ); \ seq-> ptrs= IM_ARRAY( out, x_vals-> n, TYPE* ); \ seq-> skips= IM_ARRAY( out, x_vals-> n, size_t ); \ \ if( ! seq-> ptrs || ! seq-> regs || ! seq-> skips ){ \ linreg_stop_ ## TYPE( seq, NULL, NULL ); \ return NULL; \ } \ return (void *) seq; \ } #define N ( (double) n ) #define y(a) ( (double) (* seq-> ptrs[(a)] ) ) #define x(a) ( (double) ( x_vals-> xs[(a)] ) ) #define xd(a) ( (double) ( x_vals-> difs[(a)] ) ) #define Sxd2 ( x_vals-> nsig2 ) #define mean_x ( x_vals-> mean ) #define mean_y ( out[0] ) #define dev_y ( out[1] ) #define y_x0 ( out[2] ) #define d_y_x0 ( out[3] ) #define dy_dx ( out[4] ) #define d_dy_dx ( out[5] ) #define R ( out[6] ) #define LINREG_GEN_DEFN( TYPE ) static int linreg_gen_ ## TYPE( REGION *to_make, void *vseq, void *unrequired, void *b ){ \ linreg_seq_ ## TYPE *seq= (linreg_seq_ ## TYPE *) vseq; \ x_set *x_vals= (x_set *) b; \ unsigned int n= x_vals-> n; \ double *out= (double*) IM_REGION_ADDR_TOPLEFT( to_make ); \ size_t out_skip= IM_REGION_LSKIP( to_make ) / sizeof( double ); \ double *out_end= out + out_skip * to_make-> valid. height; \ double *out_stop; \ size_t out_n= IM_REGION_N_ELEMENTS( to_make ); \ unsigned int i; \ \ out_skip-= out_n; \ \ if( im_prepare_many( seq-> regs, & to_make-> valid ) ) \ return -1; \ \ for( i= 0; i < n; ++i ){ \ seq-> ptrs[ i ]= (TYPE*) IM_REGION_ADDR( seq-> regs[ i ], to_make-> valid. left, to_make-> valid. top ); \ seq-> skips[ i ]= ( IM_REGION_LSKIP( seq-> regs[ i ] ) / sizeof( TYPE ) ) - IM_REGION_N_ELEMENTS( seq-> regs[ i ] ); \ } \ \ for( ; out < out_end; out+= out_skip, skip_all_ ## TYPE( seq-> ptrs, seq-> skips, n ) ) \ for( out_stop= out + out_n; out < out_stop; out+= 7, incr_all_ ## TYPE( seq-> ptrs, n ) ){ \ double Sy= 0.0; \ double Sxd_y= 0.0; \ double Syd2= 0.0; \ double Sxd_yd= 0.0; \ double Se2= 0.0; \ \ for( i= 0; i < n; ++i ){ \ Sy+= y(i); \ Sxd_y+= xd(i) * y(i); \ } \ mean_y= Sy / N; \ dy_dx= Sxd_y / Sxd2; \ y_x0= mean_y - dy_dx * mean_x; \ \ for( i= 0; i < n; ++i ){ \ double yd= y(i) - mean_y; \ double e= y(i) - dy_dx * x(i) - y_x0; \ Syd2+= yd * yd; \ Sxd_yd+= xd(i) * yd; \ Se2+= e * e; \ } \ dev_y= sqrt( Syd2 / N ); \ Se2/= ( N - 2.0 ); \ d_dy_dx= sqrt( Se2 / Sxd2 ); \ d_y_x0= sqrt( Se2 * x_vals-> err_term ); \ R= Sxd_yd / sqrt( Sxd2 * Syd2 ); \ } \ return 0; \ } #define LINREG_STOP_DEFN( TYPE ) static int linreg_stop_ ## TYPE( void *vseq, void *a, void *b ){ \ linreg_seq_ ## TYPE *seq = (linreg_seq_ ## TYPE *) vseq; \ if( seq-> regs ) \ im_stop_many( seq-> regs, NULL, NULL ); \ return 0; \ } #define INCR_ALL_DEFN( TYPE ) static void incr_all_ ## TYPE( TYPE **ptrs, unsigned int n ){ \ TYPE **stop= ptrs + n; \ for( ; ptrs < stop; ++ptrs ) \ ++*ptrs; \ } #define SKIP_ALL_DEFN( TYPE ) static void skip_all_ ## TYPE( TYPE **ptrs, size_t *skips, unsigned int n ){ \ TYPE **stop= ptrs + n; \ for( ; ptrs < stop; ++ptrs, ++skips ) \ *ptrs+= *skips; \ } LINREG_START_DEFN( gint8 ); LINREG_START_DEFN( guint8 ); LINREG_START_DEFN( gint16 ); LINREG_START_DEFN( guint16 ); LINREG_START_DEFN( gint32 ); LINREG_START_DEFN( guint32 ); LINREG_START_DEFN( float ); LINREG_START_DEFN( double ); LINREG_GEN_DEFN( gint8 ); LINREG_GEN_DEFN( guint8 ); LINREG_GEN_DEFN( gint16 ); LINREG_GEN_DEFN( guint16 ); LINREG_GEN_DEFN( gint32 ); LINREG_GEN_DEFN( guint32 ); LINREG_GEN_DEFN( float ); LINREG_GEN_DEFN( double ); LINREG_STOP_DEFN( gint8 ); LINREG_STOP_DEFN( guint8 ); LINREG_STOP_DEFN( gint16 ); LINREG_STOP_DEFN( guint16 ); LINREG_STOP_DEFN( gint32 ); LINREG_STOP_DEFN( guint32 ); LINREG_STOP_DEFN( float ); LINREG_STOP_DEFN( double ); INCR_ALL_DEFN( gint8 ); INCR_ALL_DEFN( guint8 ); INCR_ALL_DEFN( gint16 ); INCR_ALL_DEFN( guint16 ); INCR_ALL_DEFN( gint32 ); INCR_ALL_DEFN( guint32 ); INCR_ALL_DEFN( float ); INCR_ALL_DEFN( double ); SKIP_ALL_DEFN( gint8 ); SKIP_ALL_DEFN( guint8 ); SKIP_ALL_DEFN( gint16 ); SKIP_ALL_DEFN( guint16 ); SKIP_ALL_DEFN( gint32 ); SKIP_ALL_DEFN( guint32 ); SKIP_ALL_DEFN( float ); SKIP_ALL_DEFN( double ); libvips-8.9.1/libvips/deprecated/im_litecor.c000066400000000000000000000164111361153320700212470ustar00rootroot00000000000000/* @(#) Function to perform lighting correction. * @(#) One band IM_BANDFMT_UCHAR images only. Always writes UCHAR. * @(#) * @(#) Function im_litecor() assumes that imin * @(#) is either memory mapped or in a buffer. * @(#) * @(#) int im_litecor(in, w, out, clip, factor) * @(#) IMAGE *in, *w, *out; * @(#) int clip; * @(#) double factor; * @(#) * @(#) clip==1 * @(#) - Compute max(white)*factor*(image/white), Clip to 255. * @(#) clip==0 * @(#) - Compute factor for you. * @(#) * @(#) * @(#) * @(#) * @(#) Returns 0 on success and -1 on error * * Copyright: 1990, J. Cupitt, 1991 N. Dessipris * * Author: J. Cupitt, N. Dessipris * Written on: 02/08/1990 * Modified on : 6/11/1991, by ND to produce a UCHAR output * 1/4/93 J.Cupitt * - bugs if white is smaller than image fixed * - im_warning() now called * - clip==0 case not tested or changed! do not use! */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* If maximum output is > 255 scale output between minout and maxout, * by normalising maxout to 255. * If maximum output is < 255 do the light correction without scaling */ static int im_litecor0( IMAGE *in, IMAGE *white, IMAGE *out ) { PEL *p, *w; PEL *q, *bu; int c; int x, y; float xrat = (float) in->Xsize / white->Xsize; float yrat = (float) in->Ysize / white->Ysize; int xstep = (int) xrat; int ystep = (int) yrat; double max; int wtmp, maxw, maxout, temp; /* Check white is some simple multiple of image. */ if( xrat < 1.0 || xrat != xstep || yrat < 1.0 || yrat != ystep ) { im_error( "im_litecor", "white not simple scale of image" ); return( -1 ); } /* Find the maximum of the white. */ if( im_max( white, &max ) ) return( -1 ); maxw = (int)max; /* Set up the output header. */ if( im_cp_desc( out, in ) ) return( -1 ); if( im_setupout( out ) ) return( -1 ); /* Make buffer for outputting to. */ if( !(bu = (PEL *) im_malloc( out, out->Xsize )) ) return( -1 ); /* Find largest value we might generate if factor == 1.0 */ maxout = -1; p = (PEL *) in->data; for( y = 0; y < in->Ysize; y++ ) { /* Point w to the start of the line in the white * corresponding to the line we are about to correct. c counts * up to xstep; each time it wraps, we should move w on one. */ w = (PEL *) (white->data + white->Xsize * (int)(y/ystep)); c = 0; /* Scan along line. */ for( x = 0; x < out->Xsize; x++ ) { wtmp = (int)*w; temp = ( maxw * (int) *p++ + (wtmp>>1) ) / wtmp; if (temp > maxout ) maxout = temp; /* Move white pointer on if necessary. */ c++; if( c == xstep ) { w++; c = 0; } } } /* Do exactly the same as above by scaling the result with respect to * maxout */ p = (PEL *) in->data; if (maxout <= 255 ) /* no need for rescaling output */ { for( y = 0; y < in->Ysize; y++ ) { q = bu; w = (PEL *) (white->data + white->Xsize * (int)(y/ystep)); c = 0; /* Scan along line. */ for( x = 0; x < in->Xsize; x++ ) { wtmp = (int)*w; *q++ = (PEL) ( ( maxw * (int) *p++ + (wtmp>>1) ) / wtmp ); /* Move white pointer on if necessary. */ c++; if( c == xstep ) { w++; c = 0; } } if( im_writeline( y, out, bu ) ) { im_error("im_litecor", "im_writeline failed"); return( -1 ); } } } else /* rescale output wrt maxout */ { for( y = 0; y < in->Ysize; y++ ) { q = bu; w = (PEL *) (white->data + white->Xsize * (int)(y/ystep)); c = 0; /* Scan along line. */ for( x = 0; x < in->Xsize; x++ ) { wtmp = maxout * ((int)*w); *q++ = (PEL) ( ( maxw * (int) *p++ * 255 + (wtmp>>1)) / wtmp ); /* Move white pointer on if necessary. */ c++; if( c == xstep ) { w++; c = 0; } } if( im_writeline( y, out, bu ) ) { im_error("im_litecor", "im_writeline failed"); return( -1 ); } } } return( 0 ); } /* Clip all corrected values above 255, if any. */ static int im_litecor1( IMAGE *in, IMAGE *white, IMAGE *out, double factor ) { PEL *p, *w; PEL *q, *bu; int c; int x, y; float xrat = (float) in->Xsize / white->Xsize; float yrat = (float) in->Ysize / white->Ysize; int xstep = (int) xrat; int ystep = (int) yrat; double max; double maxw, temp; int nclipped = 0; /* Check white is some simple multiple of image. */ if( xrat < 1.0 || xrat != xstep || yrat < 1.0 || yrat != ystep ) { im_error( "im_litecor", "white not simple scale of image" ); return( -1 ); } /* Find the maximum of the white. */ if( im_max( white, &max ) ) return( -1 ); maxw = max; /* Set up the output header. */ if( im_cp_desc( out, in ) ) return( -1 ); if( im_setupout( out ) ) return( -1 ); /* Make buffer we write to. */ if( !(bu = (PEL *) im_malloc( out, out->Xsize )) ) return( -1 ); /* Loop through sorting max output */ p = (PEL *) in->data; for( y = 0; y < in->Ysize; y++ ) { q = bu; w = (PEL *) (white->data + white->Xsize * (int)(y / ystep)); c = 0; for( x = 0; x < out->Xsize; x++ ) { temp = ((factor * maxw * (int) *p++)/((int) *w)) + 0.5; if( temp > 255.0 ) { temp = 255; nclipped++; } *q++ = temp; /* Move white pointer on if necessary. */ c++; if( c == xstep ) { w++; c = 0; } } if( im_writeline( y, out, bu ) ) return( -1 ); } if( nclipped ) im_warn( "im_litecor", "%d pels over 255 clipped", nclipped ); return( 0 ); } /* Lighting correction. One band uchar images only. * Assumes the white is some simple multiple of the image in size; ie. the * white has been taken with some smaller or equal set of resolution * parameters. */ int im_litecor( IMAGE *in, IMAGE *white, IMAGE *out, int clip, double factor ) { /* Check our args. */ if( im_iocheck( in, out ) ) return( -1 ); if( in->Bands != 1 || in->Coding != IM_CODING_NONE || in->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im_litecor", "bad input format" ); return( -1 ); } if( white->Bands != 1 || white->Coding != IM_CODING_NONE || white->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im_litecor", "bad white format" ); return( -1 ); } switch( clip ) { case 1: return( im_litecor1( in, white, out, factor ) ); case 0: return( im_litecor0( in, white, out ) ); default: im_error( "im_litecor", "unknown flag %d", clip ); return( -1 ); } } libvips-8.9.1/libvips/deprecated/im_magick2vips.c000066400000000000000000000054171361153320700220310ustar00rootroot00000000000000/* Read a file using libMagick * * 17/12/11 * - just a stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Turn on debugging output. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "../foreign/pforeign.h" int im_magick2vips( const char *filename, IMAGE *out ) { #ifdef HAVE_MAGICK /* Old behaviour was always to read all frames. */ return( vips__magick_read( filename, out, NULL, 0, -1 ) ); #else vips_error( "im_magick2vips", "%s", _( "no libMagick support in your libvips" ) ); return( -1 ); #endif /*HAVE_MAGICK*/ } static int ismagick( const char *filename ) { return( vips_foreign_is_a( "magickload", filename ) ); } static const char *magick_suffs[] = { NULL }; /* magick format adds no new members. */ typedef VipsFormat VipsFormatMagick; typedef VipsFormatClass VipsFormatMagickClass; static void vips_format_magick_class_init( VipsFormatMagickClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "magick"; object_class->description = _( "libMagick-supported" ); format_class->is_a = ismagick; format_class->load = im_magick2vips; format_class->suffs = magick_suffs; /* This can be very slow :-( Use our own jpeg/tiff/png etc. loaders in * preference if we can. */ format_class->priority = -1000; } static void vips_format_magick_init( VipsFormatMagick *object ) { } G_DEFINE_TYPE( VipsFormatMagick, vips_format_magick, VIPS_TYPE_FORMAT ); int im_bufmagick2vips( void *buf, size_t len, IMAGE *out, gboolean header_only ) { VipsImage *t; /* header_only is automatic ... this call will only decompress on * pixel access. */ if( vips_magickload_buffer( buf, len, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } libvips-8.9.1/libvips/deprecated/im_mask2vips.c000066400000000000000000000046711361153320700215320ustar00rootroot00000000000000/* im_mask2vips * * Author: J.Cupitt * Written on: 6/6/94 * Modified on: * 7/10/94 JC * - new IM_ARRAY() * 1/2/10 * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /** * im_mask2vips: * @in: input mask * @out: output image * * Write a one-band, %IM_BANDFMT_DOUBLE image to @out based on mask @in. * * See also: im_vips2mask(). * * Returns: 0 on success, -1 on error */ int im_mask2vips( DOUBLEMASK *in, IMAGE *out ) { int x, y; double *buf, *p, *q; /* Check the mask. */ if( !in || !in->coeff ) { im_error( "im_mask2vips", "%s", _( "bad input mask" ) ); return( -1 ); } /* Make the output image. */ im_initdesc( out, in->xsize, in->ysize, 1, IM_BBITS_DOUBLE, IM_BANDFMT_DOUBLE, IM_CODING_NONE, IM_TYPE_B_W, 1.0, 1.0, 0, 0 ); if( im_setupout( out ) ) return( -1 ); /* Make an output buffer. */ if( !(buf = IM_ARRAY( out, in->xsize, double )) ) return( -1 ); /* Write! */ for( p = in->coeff, y = 0; y < out->Ysize; y++ ) { q = buf; for( x = 0; x < out->Xsize; x++ ) *q++ = *p++; if( im_writeline( y, out, (void *) buf ) ) return( -1 ); } vips_image_set_double( out, "scale", in->scale ); vips_image_set_double( out, "offset", in->offset ); return( 0 ); } int im_imask2vips( INTMASK *in, IMAGE *out ) { DOUBLEMASK *d; int result; if( !(d = im_imask2dmask( in, in->filename )) ) return( -1 ); result = im_mask2vips( d, out ); im_free_dmask( d ); return( result ); } libvips-8.9.1/libvips/deprecated/im_matcat.c000066400000000000000000000043401361153320700210550ustar00rootroot00000000000000/* matrix catenate * * 1994, K. Martinez * * 22/10/10 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /** * im_matcat: * @top: input matrix * @bottom: input matrix * @filename: filename for output * * Matrix catenations. Returns a new matrix which is the two source matrices * joined together top-bottom. They must be the same width. * * See also: im_mattrn(), im_matmul(), im_matinv(). * * Returns: the joined mask on success, or NULL on error. */ DOUBLEMASK * im_matcat( DOUBLEMASK *top, DOUBLEMASK *bottom, const char *filename ) { int newxsize, newysize; DOUBLEMASK *mat; double *out; /* matrices must be same width */ if( top->xsize != bottom->xsize ) { im_error( "im_matcat", "%s", _( "matrices must be same width" ) ); return( NULL ); } newxsize = top->xsize; newysize = top->ysize + bottom->ysize; /* Allocate output matrix. */ if( !(mat = im_create_dmask( filename, newxsize, newysize )) ) return( NULL ); /* copy first matrix then add second on the end */ memcpy( mat->coeff, top->coeff, top->xsize * top->ysize * sizeof( double ) ); out = mat->coeff + top->xsize * top->ysize; memcpy( out, bottom->coeff, bottom->xsize * bottom->ysize * sizeof( double ) ); return( mat ); } libvips-8.9.1/libvips/deprecated/im_matinv.c000066400000000000000000000306211361153320700211030ustar00rootroot00000000000000/* solve and invert matrices * * Author: Tom Vajzovic * Copyright: 2006, Tom Vajzovic * Written on: 2006-09-08 * * undated: * - page 43-45 of numerical recipes in C 1998 * * 2006-09-08 tcv: * - complete rewrite; algorithm unchanged * * 22/10/10 * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /** HEADERS **/ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include /** CONSTANTS **/ #define TOO_SMALL ( 2.0 * DBL_MIN ) /* DBL_MIN is smallest *normalized* double precision float */ /** MACROS **/ #define MATRIX( mask, i, j ) ( (mask)-> coeff[ (j) + (i) * (mask)-> xsize ] ) /* use DOUBLEMASK or INTMASK as matrix type */ /** LOCAL FUNCTION DECLARATIONS **/ static int mat_inv_lu( DOUBLEMASK *inv, const DOUBLEMASK *lu ); static int mat_inv_direct( DOUBLEMASK *inv, const DOUBLEMASK *mat, const char *function_name ); /** EXPORTED FUNCTION DEFINITIONS **/ /** * im_lu_decomp: * @mat: matrix to decompose * @filename: name for output matrix * * This function takes any square NxN #DOUBLEMASK. * It returns a #DOUBLEMASK which is (N+1)xN. * * It calculates the PLU decomposition, storing the upper and diagonal parts * of U, together with the lower parts of L, as an NxN matrix in the first * N rows of the new matrix. The diagonal parts of L are all set to unity * and are not stored. * * The final row of the new #DOUBLEMASK has only integer entries, which * represent the row-wise permutations made by the permuatation matrix P. * * The scale and offset members of the input #DOUBLEMASK are ignored. * * See: * * PRESS, W. et al, 1992. Numerical Recipies in C; The Art of Scientific * Computing, 2nd ed. Cambridge: Cambridge University Press, pp. 43-50. * * See also: im_mattrn(), im_matinv(). * * Returns: the decomposed matrix on success, or NULL on error. */ DOUBLEMASK * im_lu_decomp( const DOUBLEMASK *mat, const char *name ){ #define FUNCTION_NAME "im_lu_decomp" int i, j, k; double *row_scale; DOUBLEMASK *lu; if( mat-> xsize != mat-> ysize ){ im_error( FUNCTION_NAME, "non-square matrix" ); return NULL; } #define N ( mat -> xsize ) lu= im_create_dmask( name, N, N + 1 ); row_scale= IM_ARRAY( NULL, N, double ); if( ! row_scale || ! lu ){ im_free_dmask( lu ); im_free( row_scale ); return NULL; } /* copy all coefficients and then perform decomposition in-place */ memcpy( lu-> coeff, mat-> coeff, N * N * sizeof( double ) ); #define LU( i, j ) MATRIX( lu, (i), (j) ) #define perm ( lu-> coeff + N * N ) for( i= 0; i < N; ++i ){ row_scale[ i ]= 0.0; for( j= 0; j < N; ++j ){ double abs_val= fabs( LU( i, j ) ); /* find largest in each ROW */ if( abs_val > row_scale[ i ] ) row_scale[ i ]= abs_val; } if( ! row_scale[ i ] ){ im_error( FUNCTION_NAME, "singular matrix" ); im_free_dmask( lu ); im_free( row_scale ); return NULL; } /* fill array with scaling factors for each ROW */ row_scale[ i ]= 1.0 / row_scale[ i ]; } for( j= 0; j < N; ++j ){ /* loop over COLs */ double max= -1.0; int i_of_max; /* not needed, but stops a compiler warning */ i_of_max= 0; /* loop over ROWS in upper-half, except diagonal */ for( i= 0; i < j; ++i ) for( k= 0; k < i; ++k ) LU( i, j )-= LU( i, k ) * LU( k, j ); /* loop over ROWS in diagonal and lower-half */ for( i= j; i < N; ++i ){ double abs_val; for( k= 0; k < j; ++k ) LU( i, j )-= LU( i, k ) * LU( k, j ); /* find largest element in each COLUMN scaled so that */ /* largest in each ROW is 1.0 */ abs_val= row_scale[ i ] * fabs( LU( i, j ) ); if( abs_val > max ){ max= abs_val; i_of_max= i; } } if( fabs( LU( i_of_max, j ) ) < TOO_SMALL ){ /* divisor is near zero */ im_error( FUNCTION_NAME, "singular or near-singular matrix" ); im_free_dmask( lu ); im_free( row_scale ); return NULL; } if( i_of_max != j ){ /* swap ROWS */ for( k= 0; k < N; ++k ){ double temp= LU( j, k ); LU( j, k )= LU( i_of_max, k ); LU( i_of_max, k )= temp; } row_scale[ i_of_max ]= row_scale[ j ]; /* no need to copy this scale back up - we won't use it */ } /* record permutation */ perm[ j ]= i_of_max; /* divide by best (largest scaled) pivot found */ for( i= j + 1; i < N; ++i ) LU( i, j )/= LU( j, j ); } im_free( row_scale ); return lu; #undef N #undef LU #undef perm #undef FUNCTION_NAME } /** * im_lu_solve: * @lu: matrix to solve * @vec: name for output matrix * * Solve the system of linear equations Ax=b, where matrix A has already * been decomposed into LU form in DOUBLEMASK *lu. Input vector b is in * vec and is overwritten with vector x. * * See: * * PRESS, W. et al, 1992. Numerical Recipies in C; The Art of Scientific * Computing, 2nd ed. Cambridge: Cambridge University Press, pp. 43-50. * * See also: im_mattrn(), im_matinv(). * * Returns: the decomposed matrix on success, or NULL on error. */ int im_lu_solve( const DOUBLEMASK *lu, double *vec ){ #define FUNCTION_NAME "im_lu_solve" int i, j; if( lu-> xsize + 1 != lu-> ysize ){ im_error( FUNCTION_NAME, "not an LU decomposed matrix" ); return -1; } #define N ( lu -> xsize ) #define LU( i, j ) MATRIX( lu, (i), (j) ) #define perm ( lu-> coeff + N * N ) for( i= 0; i < N; ++i ){ int i_perm= perm[ i ]; if( i_perm != i ){ double temp= vec[ i ]; vec[ i ]= vec[ i_perm ]; vec[ i_perm ]= temp; } for( j= 0; j < i; ++j ) vec[ i ]-= LU( i, j ) * vec [ j ]; } for( i= N - 1; i >= 0; --i ){ for( j= i + 1; j < N; ++j ) vec[ i ]-= LU( i, j ) * vec [ j ]; vec[ i ]/= LU( i, i ); } return 0; #undef LU #undef perm #undef N #undef FUNCTION_NAME } /** * im_matinv: * @mat: matrix to invert * @filename: name for output matrix * * Allocate, and return a pointer to, a DOUBLEMASK representing the * inverse of the matrix represented in @mat. Give it the filename * member @filename. Returns NULL on error. Scale and offset are ignored. * * See also: im_mattrn(). * * Returns: the inverted matrix on success, or %NULL on error. */ DOUBLEMASK * im_matinv( const DOUBLEMASK *mat, const char *filename ){ #define FUNCTION_NAME "im_matinv" DOUBLEMASK *inv; if( mat-> xsize != mat-> ysize ){ im_error( FUNCTION_NAME, "non-square matrix" ); return NULL; } #define N ( mat -> xsize ) inv= im_create_dmask( filename, N, N ); if( ! inv ) return NULL; if( N < 4 ){ if( mat_inv_direct( inv, (const DOUBLEMASK *) mat, FUNCTION_NAME ) ){ im_free_dmask( inv ); return NULL; } return inv; } else { DOUBLEMASK *lu= im_lu_decomp( mat, "temp" ); if( ! lu || mat_inv_lu( inv, (const DOUBLEMASK*) lu ) ){ im_free_dmask( lu ); im_free_dmask( inv ); return NULL; } im_free_dmask( lu ); return inv; } #undef N #undef FUNCTION_NAME } /** * im_matinv_inplace: * @mat: matrix to invert * * Invert the matrix represented by the DOUBLEMASK @mat, and store * it in the place of @mat. Scale and offset * are ignored. * * See also: im_mattrn(). * * Returns: 0 on success, or -1 on error. */ int im_matinv_inplace( DOUBLEMASK *mat ){ #define FUNCTION_NAME "im_matinv_inplace" int to_return= 0; if( mat-> xsize != mat-> ysize ){ im_error( FUNCTION_NAME, "non-square matrix" ); return -1; } #define N ( mat -> xsize ) if( N < 4 ){ DOUBLEMASK *dup= im_dup_dmask( mat, "temp" ); if( ! dup ) return -1; to_return= mat_inv_direct( mat, (const DOUBLEMASK*) dup, FUNCTION_NAME ); im_free_dmask( dup ); return to_return; } { DOUBLEMASK *lu; lu= im_lu_decomp( mat, "temp" ); if( ! lu || mat_inv_lu( mat, (const DOUBLEMASK*) lu ) ) to_return= -1; im_free_dmask( lu ); return to_return; } #undef N #undef FUNCTION_NAME } /* Invert a square size x size matrix stored in matrix[][] * result is returned in the same matrix */ int im_invmat( double **matrix, int size ){ DOUBLEMASK *mat= im_create_dmask( "temp", size, size ); int i; int to_return= 0; for( i= 0; i < size; ++i ) memcpy( mat-> coeff + i * size, matrix[ i ], size * sizeof( double ) ); to_return= im_matinv_inplace( mat ); if( ! to_return ) for( i= 0; i < size; ++i ) memcpy( matrix[ i ], mat-> coeff + i * size, size * sizeof( double ) ); im_free_dmask( mat ); return to_return; } /** LOCAL FUNCTION DEFINITIONS **/ static int mat_inv_lu( DOUBLEMASK *inv, const DOUBLEMASK *lu ){ #define N ( lu-> xsize ) #define INV( i, j ) MATRIX( inv, (i), (j) ) int i, j; double *vec= IM_ARRAY( NULL, N, double ); if( ! vec ) return -1; for( j= 0; j < N; ++j ){ for( i= 0; i < N; ++i ) vec[ i ]= 0.0; vec[ j ]= 1.0; im_lu_solve( lu, vec ); for( i= 0; i < N; ++i ) INV( i, j )= vec[ i ]; } im_free( vec ); inv-> scale= 1.0; inv-> offset= 0.0; return 0; #undef N #undef INV } static int mat_inv_direct( DOUBLEMASK *inv, const DOUBLEMASK *mat, const char *function_name ){ #define N ( mat -> xsize ) #define MAT( i, j ) MATRIX( mat, (i), (j) ) #define INV( i, j ) MATRIX( inv, (i), (j) ) inv-> scale= 1.0; inv-> offset= 0.0; switch( N ){ case 1: { if( fabs( MAT( 0, 0 ) ) < TOO_SMALL ){ im_error( function_name, "singular or near-singular matrix" ); return -1; } INV( 0, 0 )= 1.0 / MAT( 0, 0 ); return 0; } case 2: { double det= MAT( 0, 0 ) * MAT( 1, 1 ) - MAT( 0, 1 ) * MAT( 1, 0 ); if( fabs( det ) < TOO_SMALL ){ im_error( function_name, "singular or near-singular matrix" ); return -1; } INV( 0, 0 )= MAT( 1, 1 ) / det; INV( 0, 1 )= -MAT( 0, 1 ) / det; INV( 1, 0 )= -MAT( 1, 0 ) / det; INV( 1, 1 )= MAT( 0, 0 ) / det; return 0; } case 3: { double det= MAT( 0, 0 ) * ( MAT( 1, 1 ) * MAT( 2, 2 ) - MAT( 1, 2 ) * MAT( 2, 1 ) ) - MAT( 0, 1 ) * ( MAT( 1, 0 ) * MAT( 2, 2 ) - MAT( 1, 2 ) * MAT( 2, 0 ) ) + MAT( 0, 2 ) * ( MAT( 1, 0 ) * MAT( 2, 1 ) - MAT( 1, 1 ) * MAT( 2, 0 ) ); if( fabs( det ) < TOO_SMALL ){ im_error( function_name, "singular or near-singular matrix" ); return -1; } INV( 0, 0 )= ( MAT( 1, 1 ) * MAT( 2, 2 ) - MAT( 1, 2 ) * MAT( 2, 1 ) ) / det; INV( 0, 1 )= ( MAT( 0, 2 ) * MAT( 2, 1 ) - MAT( 0, 1 ) * MAT( 2, 2 ) ) / det; INV( 0, 2 )= ( MAT( 0, 1 ) * MAT( 1, 2 ) - MAT( 0, 2 ) * MAT( 1, 1 ) ) / det; INV( 1, 0 )= ( MAT( 1, 2 ) * MAT( 2, 0 ) - MAT( 1, 0 ) * MAT( 2, 2 ) ) / det; INV( 1, 1 )= ( MAT( 0, 0 ) * MAT( 2, 2 ) - MAT( 0, 2 ) * MAT( 2, 0 ) ) / det; INV( 1, 2 )= ( MAT( 0, 2 ) * MAT( 1, 0 ) - MAT( 0, 0 ) * MAT( 1, 2 ) ) / det; INV( 2, 0 )= ( MAT( 1, 0 ) * MAT( 2, 1 ) - MAT( 1, 1 ) * MAT( 2, 0 ) ) / det; INV( 2, 1 )= ( MAT( 0, 1 ) * MAT( 2, 0 ) - MAT( 0, 0 ) * MAT( 2, 1 ) ) / det; INV( 2, 2 )= ( MAT( 0, 0 ) * MAT( 1, 1 ) - MAT( 0, 1 ) * MAT( 1, 0 ) ) / det; return 0; } default: return -1; } #undef N #undef MAT #undef INV } libvips-8.9.1/libvips/deprecated/im_matmul.c000066400000000000000000000045021361153320700211030ustar00rootroot00000000000000/* Multiply two matrices. * * Copyright: 1990, K. Martinez and J. Cupitt * * 23/10/10 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /** * im_matmul: * @in1: input matrix * @in2: input matrix * @filename: name for output matrix * * Multiplies two DOUBLEMASKs. Result matrix is made and returned. * Pass the filename to set for the output. * * The scale and offset members of @in1 and @in2 are ignored. * * See also: im_mattrn(), im_matinv(). * * Returns: the result matrix on success, or %NULL on error. */ DOUBLEMASK * im_matmul( DOUBLEMASK *in1, DOUBLEMASK *in2, const char *name ) { int xc, yc, col; double sum; DOUBLEMASK *mat; double *out, *a, *b; double *s1, *s2; /* Check matrix sizes. */ if( in1->xsize != in2->ysize ) { im_error( "im_matmul", "%s", _( "bad sizes" ) ); return( NULL ); } /* Allocate output matrix. */ if( !(mat = im_create_dmask( name, in2->xsize, in1->ysize )) ) return( NULL ); /* Multiply. */ out = mat->coeff; s1 = in1->coeff; for( yc = 0; yc < in1->ysize; yc++ ) { s2 = in2->coeff; for( col = 0; col < in2->xsize; col++ ) { /* Get ready to sweep a row. */ sum = 0.0; a = s1; b = s2; for( sum = 0.0, xc = 0; xc < in1->xsize; xc++ ) { sum += *a++ * *b; b += in2->xsize; } *out++ = sum; s2++; } s1 += in1->xsize; } return( mat ); } libvips-8.9.1/libvips/deprecated/im_mattrn.c000066400000000000000000000035271361153320700211170ustar00rootroot00000000000000/* matrix transpose * * Copyright: 1990, K. Martinez and J. Cupitt * */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /** * im_mattrn: * @in: input matrix * @filename: name for output matrix * * Transposes the input matrix. * Pass the filename to set for the output. * * See also: im_matmul(), im_matinv(). * * Returns: the result matrix on success, or %NULL on error. */ DOUBLEMASK * im_mattrn( DOUBLEMASK *in, const char *name ) { int xc, yc; DOUBLEMASK *mat; double *out, *a, *b; /* Allocate output matrix. */ if( !(mat = im_create_dmask( name, in->ysize, in->xsize )) ) return( NULL ); mat->scale = in->scale; mat->offset = in->offset; /* Transpose. */ out = mat->coeff; a = in->coeff; for( yc = 0; yc < mat->ysize; yc++ ) { b = a; for( xc = 0; xc < mat->xsize; xc++ ) { *out++ = *b; b += in->xsize; } a++; } return( mat ); } libvips-8.9.1/libvips/deprecated/im_maxpos_avg.c000066400000000000000000000152201361153320700217470ustar00rootroot00000000000000/* im_maxpos_avg.c * * Copyright: 2006, The Nottingham Trent University * Copyright: 2006, Tom Vajzovic * * Author: Tom Vajzovic * * Written on: 2006-09-25 * 15/10/07 JC * - changed spelling of occurrences * - check for !occurrences before using val * - renamed avg as sum, a bit clearer * 2/9/09 * - gtkdoc comment * 8/9/08 * - rewrite from im_maxpos() * - now handles many bands, complex, faster * 27/7/14 * - fix a race ... did not merge states if max was equal * 26/3/15 * - avoid NaN, thanks Paul */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include /* A position and maximum. */ typedef struct _Maxposavg { int xpos; int ypos; double max; /* occurences == 0 means we found no points, or we are uninitialised. */ int occurences; } Maxposavg; /* New sequence value. */ static void * maxposavg_start( IMAGE *in, void *a, void *b ) { Maxposavg *global_maxposavg = (Maxposavg *) b; Maxposavg *maxposavg; if( !(maxposavg = IM_NEW( NULL, Maxposavg )) ) return( NULL ); *maxposavg = *global_maxposavg; return( (void *) maxposavg ); } /* Merge the sequence value back into the per-call state. */ static int maxposavg_stop( void *seq, void *a, void *b ) { Maxposavg *global_maxposavg = (Maxposavg *) b; Maxposavg *maxposavg = (Maxposavg *) seq; /* Merge. */ if( maxposavg->occurences == 0 ) { } else if( maxposavg->max > global_maxposavg->max ) *global_maxposavg = *maxposavg; else if( maxposavg->max == global_maxposavg->max ) { global_maxposavg->xpos += maxposavg->xpos; global_maxposavg->ypos += maxposavg->ypos; global_maxposavg->occurences += maxposavg->occurences; } im_free( seq ); return( 0 ); } /* int loop. */ #define ILOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ m = max; \ \ for( x = 0; x < sz; x++ ) { \ TYPE v = p[x]; \ \ if( occurences == 0 || v > m ) { \ m = v; \ xpos = r->left + x / reg->im->Bands; \ ypos = r->top + y; \ occurences = 1; \ } \ else if( v == m ) { \ xpos += r->left + x / reg->im->Bands; \ ypos += r->top + y; \ occurences += 1; \ } \ } \ \ max = m; \ } /* float/double loop ... avoid NaN. */ #define FLOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ m = max; \ \ for( x = 0; x < sz; x++ ) { \ TYPE v = p[x]; \ \ if( isnan( v ) ) { \ } \ else if( occurences == 0 || v > m ) { \ m = v; \ xpos = r->left + x / reg->im->Bands; \ ypos = r->top + y; \ occurences = 1; \ } \ else if( v == m ) { \ xpos += r->left + x / reg->im->Bands; \ ypos += r->top + y; \ occurences += 1; \ } \ } \ \ max = m; \ } /* complex/dpcomplex loop ... avoid NaN. */ #define CLOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ \ for( x = 0; x < sz; x++ ) { \ double mod, re, im; \ \ re = p[0]; \ im = p[1]; \ p += 2; \ mod = re * re + im * im; \ \ if( isnan( mod ) ) { \ } \ else if( occurences == 0 || mod > max ) { \ max = mod; \ xpos = r->left + x / reg->im->Bands; \ ypos = r->top + y; \ occurences = 1; \ } \ else if( mod == max ) { \ xpos += r->left + x / reg->im->Bands; \ ypos += r->top + y; \ occurences += 1; \ } \ } \ } /* Loop over region, adding to seq. */ static int maxposavg_scan( REGION *reg, void *seq, void *a, void *b, gboolean *stop ) { const Rect *r = ®->valid; const int sz = IM_REGION_N_ELEMENTS( reg ); Maxposavg *maxposavg = (Maxposavg *) seq; int x, y; double max; int xpos, ypos, occurences; xpos = maxposavg->xpos; ypos = maxposavg->ypos; max = maxposavg->max; occurences = maxposavg->occurences; for( y = 0; y < r->height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( reg, r->left, r->top + y ); switch( reg->im->BandFmt ) { case IM_BANDFMT_UCHAR: ILOOP( unsigned char ); break; case IM_BANDFMT_CHAR: ILOOP( signed char ); break; case IM_BANDFMT_USHORT: ILOOP( unsigned short ); break; case IM_BANDFMT_SHORT: ILOOP( signed short ); break; case IM_BANDFMT_UINT: ILOOP( unsigned int ); break; case IM_BANDFMT_INT: ILOOP( signed int ); break; case IM_BANDFMT_FLOAT: FLOOP( float ); break; case IM_BANDFMT_DOUBLE: FLOOP( double ); break; case IM_BANDFMT_COMPLEX: CLOOP( float ); break; case IM_BANDFMT_DPCOMPLEX: CLOOP( double ); break; default: g_assert( 0 ); } } maxposavg->xpos = xpos; maxposavg->ypos = ypos; maxposavg->max = max; maxposavg->occurences = occurences; return( 0 ); } /** * im_maxpos_avg: * @im: image to scan * @xpos: returned X position * @ypos: returned Y position * @out: returned value * * Function to find the maximum of an image. Returns coords and value at * double precision. In the event of a draw, returns average of all * drawing coords. * * See also: im_maxpos(), im_min(), im_stats(). * * Returns: 0 on success, -1 on error */ int im_maxpos_avg( IMAGE *in, double *xpos, double *ypos, double *out ) { Maxposavg *global_maxposavg; if( im_pincheck( in ) || im_check_uncoded( "im_maxpos_avg", in ) ) return( -1 ); if( !(global_maxposavg = IM_NEW( in, Maxposavg )) ) return( -1 ); global_maxposavg->occurences = 0; if( vips_sink( in, maxposavg_start, maxposavg_scan, maxposavg_stop, in, global_maxposavg ) ) return( -1 ); if( global_maxposavg->occurences == 0 ) { *xpos = nan(""); *ypos = nan(""); *out = nan(""); } else { /* Back to modulus. */ if( vips_band_format_iscomplex( in->BandFmt ) ) global_maxposavg->max = sqrt( global_maxposavg->max ); if( xpos ) *xpos = (double) global_maxposavg->xpos / global_maxposavg->occurences; if( ypos ) *ypos = (double) global_maxposavg->ypos / global_maxposavg->occurences; if( out ) *out = global_maxposavg->max; } return( 0 ); } libvips-8.9.1/libvips/deprecated/im_maxpos_subpel.c000066400000000000000000000144121361153320700224660ustar00rootroot00000000000000/* find position of maximum, subpixel estimation * * Copyright: 2008, Nottingham Trent University * Author: Tom Vajzovic * Written on: 2008-02-07 * * 25/1/11 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H */ #include #include #include #include #define MOST_OF( A, B ) ( (A) > 0.9 * (B) ) #define LITTLE_OF( A, B ) ( (B) < 0.1 * (B) ) /** * im_maxpos_subpel: * @in: input image * @x: output position of maximum * @y: output position of maximum * * This function implements: * * "Extension of Phase Correlation to Subpixel Registration" * by H. Foroosh, from IEEE trans. Im. Proc. 11(3), 2002. * * If the best three matches in the correlation are aranged: * * 02 or 01 * 1 2 * * then we return a subpixel match using the ratio of correlations in the * vertical and horizontal dimension. * * ( xs[0], ys[0] ) is the best integer alignment * ( xs[ use_x ], ys[ use_x ] ) is equal in y and (+/-)1 off in x * ( xs[ use_y ], ys[ use_y ] ) is equal in x and (+/-)1 off in y * * Alternatively if the best four matches in the correlation are aranged in * a square: * * 01 or 03 or 02 or 03 * 32 12 31 21 * * then we return a subpixel match weighting with the sum the two on each * side over the sum of all four, but only if all four of them are very * close to the best, and the fifth is nowhere near. * * This alternative method is not described by Foroosh, but is often the * case where the match is close to n-and-a-half pixels in both dimensions. * * See also: im_maxpos(), im_min(), im_stats(). * * Returns: 0 on success, -1 on error */ int im_maxpos_subpel( IMAGE *in, double *x, double *y ){ #define FUNCTION_NAME "im_maxpos_subpel" int xs[5]; int ys[5]; double vals[5]; int xa, ya, xb, yb; double vxa, vya, vxb, vyb; if( im_maxpos_vec( in, xs, ys, vals, 5 )) return -1; #define WRAP_TEST_RETURN() \ \ /* wrap around if we have alignment -1 < d <= 0 */ \ /* (change it to: size - 1 <= d < size ) */ \ \ if( ! xa && in-> Xsize - 1 == xb ) \ xa= in-> Xsize; \ \ else if( ! xb && in-> Xsize - 1 == xa ) \ xb= in-> Xsize; \ \ if( ! ya && in-> Ysize - 1 == yb ) \ ya= in-> Ysize; \ \ else if( ! yb && in-> Ysize - 1 == ya ) \ yb= in-> Ysize; \ \ if( 1 == abs( xb - xa ) && 1 == abs( yb - ya )){ \ *x= ((double)xa) + ((double)( xb - xa )) * ( vxb / ( vxa + vxb )); \ *y= ((double)ya) + ((double)( yb - ya )) * ( vyb / ( vya + vyb )); \ return 0; \ } #define TEST3( A, B ) \ if( xs[0] == xs[A] && ys[0] == ys[B] ){ \ xa= xs[0]; \ ya= ys[0]; \ xb= xs[B]; \ yb= ys[A]; \ vxa= vals[0]; \ vya= vals[0]; \ vxb= vals[B]; \ vyb= vals[A]; \ WRAP_TEST_RETURN() \ } TEST3( 1, 2 ) TEST3( 2, 1 ) if( MOST_OF( vals[1], vals[0] ) && MOST_OF( vals[2], vals[0] ) && MOST_OF( vals[3], vals[0] ) && LITTLE_OF( vals[4], vals[0] )){ #define TEST4( A, B, C, D, E, F, G, H ) \ if( xs[A] == xs[B] && xs[C] == xs[D] && ys[E] == ys[F] && ys[G] == ys[H] ){ \ xa= xs[A]; \ xb= xs[C]; \ ya= ys[E]; \ yb= ys[G]; \ vxa= vals[A] + vals[B]; \ vxb= vals[C] + vals[D]; \ vya= vals[E] + vals[F]; \ vyb= vals[G] + vals[H]; \ WRAP_TEST_RETURN() \ } TEST4( 0, 3, 1, 2, 0, 1, 2, 3 ) TEST4( 0, 1, 2, 3, 0, 3, 1, 2 ) TEST4( 0, 3, 1, 2, 0, 2, 1, 3 ) TEST4( 0, 2, 1, 3, 0, 3, 1, 2 ) } im_warn( FUNCTION_NAME, "registration performed to nearest pixel only: correlation does not have the expected distribution for sub-pixel registration" ); *x= (double) xs[0]; *y= (double) ys[0]; return 0; } libvips-8.9.1/libvips/deprecated/im_measure.c000066400000000000000000000125121361153320700212450ustar00rootroot00000000000000/* im_measure.c * * Modified: * 19/8/94 JC * - now uses doubles for addressing * - could miss by up to h pixels previously! * - ANSIfied * - now issues warning if any deviations are greater than 20% of the * mean * 31/10/95 JC * - more careful about warning for averages <0, or averages near zero * - can get these cases with im_measure() of IM_TYPE_LAB images * 28/10/02 JC * - number bands from zero in error messages * 7/7/04 * - works on labq * 18/8/08 * - add gtkdoc comments * - remove deprecated im_extract() * 30/11/09 * - changes for im_extract() broke averaging * 9/11/11 * - moved to deprecated, the new VipsMeasure does not have the * select-patches thing, so we have to keep this around */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* Measure into array. */ static int measure_patches( IMAGE *im, double *coeff, int left, int top, int width, int height, int u, int v, int *sel, int nsel ) { IMAGE *tmp; int patch; int i, j; int m, n; double avg, dev; int x, y, w, h; /* How large are the patches we are to measure? */ double pw = (double) width / (double) u; double ph = (double) height / (double) v; /* Set up sub to be the size we need for a patch. */ w = (pw + 1) / 2; h = (ph + 1) / 2; /* Loop through sel, picking out areas to measure. */ for( j = 0, patch = 0; patch < nsel; patch++ ) { /* Sanity check. Is the patch number sensible? */ if( sel[patch] <= 0 || sel[patch] > u * v ) { im_error( "im_measure", _( "patch %d is out of range" ), sel[patch] ); return( 1 ); } /* Patch coordinates. */ m = (sel[patch] - 1) % u; n = (sel[patch] - 1) / u; /* Move sub to correct position. */ x = left + m * pw + (pw + 2) / 4; y = top + n * ph + (ph + 2) / 4; /* Loop through bands. */ for( i = 0; i < im->Bands; i++, j++ ) { /* Make temp buffer to extract to. */ if( !(tmp = im_open( "patch", "t" )) ) return( -1 ); /* Extract and measure. */ if( im_extract_areabands( im, tmp, x, y, w, h, i, 1 ) || im_avg( tmp, &avg ) || im_deviate( tmp, &dev ) ) { im_close( tmp ); return( -1 ); } im_close( tmp ); /* Is the deviation large compared with the average? * This could be a clue that our parameters have * caused us to miss the patch. Look out for averages * <0, or averages near zero (can get these if use * im_measure() on IM_TYPE_LAB images). */ if( dev * 5 > fabs( avg ) && fabs( avg ) > 3 ) im_warn( "im_measure", _( "patch %d, band %d: " "avg = %g, sdev = %g" ), patch, i, avg, dev ); /* Save results. */ coeff[j] = avg; } } return( 0 ); } static DOUBLEMASK * internal_im_measure_area( IMAGE *im, int left, int top, int width, int height, int u, int v, int *sel, int nsel, const char *name ) { DOUBLEMASK *mask; if( im_check_uncoded( "im_measure", im ) || im_check_noncomplex( "im_measure", im ) ) return( NULL ); /* Default to all patches if sel == NULL. */ if( sel == NULL ) { int i; nsel = u * v; if( !(sel = IM_ARRAY( im, nsel, int )) ) return( NULL ); for( i = 0; i < nsel; i++ ) sel[i] = i + 1; } /* What size mask do we need? */ if( !(mask = im_create_dmask( name, im->Bands, nsel )) ) return( NULL ); /* Perform measure and return. */ if( measure_patches( im, mask->coeff, left, top, width, height, u, v, sel, nsel ) ) { im_free_dmask( mask ); return( NULL ); } return( mask ); } DOUBLEMASK * im_measure_area( IMAGE *im, int left, int top, int width, int height, int u, int v, int *sel, int nsel, const char *name ) { DOUBLEMASK *mask; VipsImage *t; /* The old im_measure() worked on labq. */ if( im->Coding == IM_CODING_LABQ ) { if( !(t = im_open( "measure-temp", "p" )) ) return( NULL ); if( im_LabQ2Lab( im, t ) || !(mask = im_measure_area( t, left, top, width, height, u, v, sel, nsel, name )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( mask ); } if( sel ) return( internal_im_measure_area( im, left, top, width, height, u, v, sel, nsel, name ) ); else { if( vips_measure( im, &t, u, v, "left", left, "top", top, "width", width, "height", height, NULL ) ) return( NULL ); if( !(mask = im_vips2mask( t, name )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( mask ); } } libvips-8.9.1/libvips/deprecated/im_nifti2vips.c000066400000000000000000000053331361153320700217040ustar00rootroot00000000000000/* load nifti images * * 10/9/18 * - from im_openslide2vips */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include static int im_nifti2vips( const char *name, IMAGE *out ) { VipsImage *t; if( vips_niftiload( name, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static const char *nifti_suffs[] = { ".nii", ".nii.gz", ".hdr", ".hdr.gz", ".img", ".img.gz", ".nia", ".nia.gz", NULL }; static VipsFormatFlags nifti_flags( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( (VipsFormatFlags) vips_foreign_flags( "niftiload", filename ) ); } static int isnifti( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( vips_foreign_is_a( "niftiload", filename ) ); } /* nifti format adds no new members. */ typedef VipsFormat VipsFormatNifti; typedef VipsFormatClass VipsFormatNiftiClass; static void vips_format_nifti_class_init( VipsFormatNiftiClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "im_nifti"; object_class->description = _( "NIfTI" ); format_class->priority = 100; format_class->is_a = isnifti; format_class->load = im_nifti2vips; format_class->get_flags = nifti_flags; format_class->suffs = nifti_suffs; } static void vips_format_nifti_init( VipsFormatNifti *object ) { } G_DEFINE_TYPE( VipsFormatNifti, vips_format_nifti, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/im_openslide2vips.c000066400000000000000000000067571361153320700225700ustar00rootroot00000000000000/* read with openslide * * 17/12/11 * - just a stub * 11/4/12 * - support :level,associated in filenames * 20/9/12 * - add Leica filename suffix */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include static int im_openslide2vips( const char *name, IMAGE *out ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q; char *associated; int level; char *endptr; VipsImage *t; im_filename_split( name, filename, mode ); level = 0; associated = NULL; p = &mode[0]; if( (q = im_getnextoption( &p )) ) { level = strtoul( q, &endptr, 10 ); if( *endptr ) { vips_error( "openslide2vips", "%s", _( "level must be a number" ) ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) associated = q; if( vips_openslideload( filename, &t, "level", level, "associated", associated, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static const char *openslide_suffs[] = { ".svs", /* Aperio */ ".vms", ".vmu", ".ndpi", /* Hamamatsu */ ".scn", /* Leica */ ".mrxs", /* MIRAX */ ".svslide", /* Sakura */ ".tif", /* Trestle */ ".bif", /* Ventana */ NULL }; static VipsFormatFlags openslide_flags( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( (VipsFormatFlags) vips_foreign_flags( "openslideload", filename ) ); } static int isopenslide( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( vips_foreign_is_a( "openslideload", filename ) ); } /* openslide format adds no new members. */ typedef VipsFormat VipsFormatOpenslide; typedef VipsFormatClass VipsFormatOpenslideClass; static void vips_format_openslide_class_init( VipsFormatOpenslideClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "im_openslide"; object_class->description = _( "Openslide" ); format_class->priority = 100; format_class->is_a = isopenslide; format_class->load = im_openslide2vips; format_class->get_flags = openslide_flags; format_class->suffs = openslide_suffs; } static void vips_format_openslide_init( VipsFormatOpenslide *object ) { } G_DEFINE_TYPE( VipsFormatOpenslide, vips_format_openslide, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/im_png2vips.c000066400000000000000000000067371361153320700213700ustar00rootroot00000000000000/* Convert 1 to 4-band 8 or 16-bit VIPS images to/from PNG. * * 19/12/11 * - just a stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "../foreign/pforeign.h" static int png2vips( const char *name, IMAGE *out, gboolean header_only ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q; int seq; im_filename_split( name, filename, mode ); seq = 0; p = &mode[0]; if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "seq", q ) ) seq = 1; } /* We need to be compatible with the pre-sequential mode * im_png2vips(). This returned a "t" if given a "p" image, since it * used writeline. * * If we're writing the image to a "p", switch it to a "t". * * Don't do this for header read, since we don't want to force a * malloc if all we are doing is looking at fields. */ if( !header_only && !seq && out->dtype == VIPS_IMAGE_PARTIAL ) { if( vips__image_wio_output( out ) ) return( -1 ); } #ifdef HAVE_PNG { VipsSource *source; int result; if( !(source = vips_source_new_from_file( filename )) ) return( -1 ); if( header_only ) result = vips__png_header_source( source, out ); else result = vips__png_read_source( source, out, TRUE ); VIPS_UNREF( source ); if( result ) return( result ); } #else vips_error( "im_png2vips", "%s", _( "no PNG support in your libvips" ) ); return( -1 ); #endif /*HAVE_PNG*/ return( 0 ); } int im_png2vips( const char *name, IMAGE *out ) { return( png2vips( name, out, FALSE ) ); } /* By having a separate header func, we get lazy.c to open via disc/mem. */ static int im_png2vips_header( const char *name, IMAGE *out ) { return( png2vips( name, out, TRUE ) ); } static int ispng( const char *filename ) { return( vips_foreign_is_a( "pngload", filename ) ); } static const char *png_suffs[] = { ".png", NULL }; typedef VipsFormat VipsFormatPng; typedef VipsFormatClass VipsFormatPngClass; static void vips_format_png_class_init( VipsFormatPngClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "png"; object_class->description = _( "PNG" ); format_class->is_a = ispng; format_class->header = im_png2vips_header; format_class->load = im_png2vips; format_class->save = im_vips2png; format_class->suffs = png_suffs; } static void vips_format_png_init( VipsFormatPng *object ) { } G_DEFINE_TYPE( VipsFormatPng, vips_format_png, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/im_point_bilinear.c000066400000000000000000000055471361153320700226140ustar00rootroot00000000000000/* im_point_bilinear.c * * Copyright: 2006, The Nottingham Trent University * * Author: Tom Vajzovic * * Written on: 2006-09-26 * * 9/9/09 * - rewrite in terms of im_affinei() and im_avg() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /* HAVE_CONFIG_H */ #include #include #include #include /** * im_point: * @im: image to read from * @interpolate: interpolator to sample points with * @x: x position to interpolate * @y: y position to interpolate * @band: band to read * @out: return interpolated value * * Find the value at (@x, @y) in given band of image. * Non-integral values are calculated using the supplied @interpolate. * * See also: im_avg(), #VipsInterpolate * * Returns: 0 on success, -1 on error */ int im_point( IMAGE *im, VipsInterpolate *interpolate, double x, double y, int band, double *out ) { IMAGE *mem; IMAGE *t[2]; if( band >= im->Bands || x < 0.0 || y < 0.0 || x > im->Xsize || y > im->Ysize ) { im_error( "im_point_bilinear", "%s", _( "coords outside image" ) ); return( -1 ); } if( !(mem = im_open( "im_point", "p" )) ) return( -1 ); if( im_open_local_array( mem, t, 2, "im_point", "p" ) || im_extract_band( im, t[0], band ) || im_affinei( t[0], t[1], interpolate, 1, 0, 0, 1, floor( x ) - x, floor( y ) - y, floor( x ), floor( y ), 1, 1 ) || im_avg( t[1], out ) ) { im_close( mem ); return( -1 ); } im_close( mem ); return( 0 ); } /** * im_point_bilinear: * @im: image to read from * @x: x position to interpolate * @y: y position to interpolate * @band: band to read * @out: return interpolated value * * Find the value at (@x,@y) in given band of image. * Use bilinear interpolation if @x or @y are non-integral. * * See also: im_avg(), im_point(). * * Returns: 0 on success, -1 on error */ int im_point_bilinear( IMAGE *im, double x, double y, int band, double *out ) { return( im_point( im, vips_interpolate_bilinear_static(), x, y, band, out ) ); } libvips-8.9.1/libvips/deprecated/im_ppm2vips.c000066400000000000000000000044441361153320700213710ustar00rootroot00000000000000/* Read a ppm file. * * 20/12/11 * - just a compat stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include int im_ppm2vips( const char *filename, IMAGE *out ) { VipsImage *t; if( vips_ppmload( filename, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int isppm( const char *filename ) { return( vips_foreign_is_a( "ppmload", filename ) ); } static VipsFormatFlags ppm_flags( const char *filename ) { return( (VipsFormatFlags) vips_foreign_flags( "ppmload", filename ) ); } static const char *ppm_suffs[] = { ".ppm", ".pgm", ".pbm", ".pfm", NULL }; /* ppm format adds no new members. */ typedef VipsFormat VipsFormatPpm; typedef VipsFormatClass VipsFormatPpmClass; static void vips_format_ppm_class_init( VipsFormatPpmClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "ppm"; object_class->description = _( "PPM/PBM/PNM/PFM" ); format_class->is_a = isppm; format_class->load = im_ppm2vips; format_class->save = im_vips2ppm; format_class->get_flags = ppm_flags; format_class->suffs = ppm_suffs; } static void vips_format_ppm_init( VipsFormatPpm *object ) { } G_DEFINE_TYPE( VipsFormatPpm, vips_format_ppm, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/im_print.c000066400000000000000000000023601361153320700207400ustar00rootroot00000000000000/* im_print(): print a string to stdout */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* Print a string to stdout, with a "\n". Sometimes useful for debugging * language bindings. */ int im_print( const char *message ) { printf( "%s\n", message ); return( 0 ); } libvips-8.9.1/libvips/deprecated/im_printlines.c000066400000000000000000000073731361153320700220040ustar00rootroot00000000000000/* @(#) Function which prints in stdout the values of a picture * @(#) * @(#) For debuging only * @(#) is either memory mapped or in a buffer. * @(#) * @(#) void im_printlines( in ) * @(#) IMAGE *in; * @(#) * * Copyright: 1991 N. Dessipris * * Author: N. Dessipris * Written on: 18/03/1991 * Modified on: * 15/4/93 J.Cupitt * - returns int, not void now, so error messages work * - detects im->data invalid. * 23/7/93 JC * - im_incheck() added */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* Useful: Call a macro with the name, type pairs for all VIPS functions. */ #define im_for_all_types() \ case IM_BANDFMT_UCHAR: loopuc(unsigned char); break; \ case IM_BANDFMT_CHAR: loop(char); break; \ case IM_BANDFMT_USHORT: loop(unsigned short); break; \ case IM_BANDFMT_SHORT: loop(short); break; \ case IM_BANDFMT_UINT: loop(unsigned int); break; \ case IM_BANDFMT_INT: loop(int); break; \ case IM_BANDFMT_FLOAT: loop(float); break; \ case IM_BANDFMT_DOUBLE: loop(double); break; \ case IM_BANDFMT_COMPLEX: loopcmplx(float); break; \ case IM_BANDFMT_DPCOMPLEX: loopcmplx(double); break; int im_printlines( IMAGE *in ) { if( im_incheck( in ) ) return( -1 ); if( in->Coding != IM_CODING_NONE ) { im_error( "im_printlines", "%s", _( "input must be uncoded" ) ); return( -1 ); } if( !in->data ) { im_error( "im_debugim", "%s", _( "unsuitable image type" ) ); return( -1 ); } /* What type? First define the loop we want to perform for all types. */ #define loopuc(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ fprintf(stderr, "line:%5d\n", y); \ for ( x=0; xXsize; x++ ) {\ fprintf(stderr, "%5d", x); \ for ( z=0; zBands; z++ ) {\ fprintf(stderr, "\t%4d", (TYPE)*p++ );\ } \ fprintf(stderr, "\n"); \ } \ } \ } #define loop(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ fprintf(stderr, "line:%5d\n", y); \ for ( x=0; xXsize; x++ ) {\ fprintf(stderr, "%5d", x); \ for ( z=0; zBands; z++ ) {\ fprintf(stderr, "\t%f", (double)*p++ );\ } \ fprintf(stderr, "\n"); \ } \ } \ } #define loopcmplx(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ fprintf(stderr, "line:%5d\n", y); \ for ( x=0; xXsize; x++ ) {\ fprintf(stderr, "%5d", x); \ for ( z=0; zBands; z++ ) {\ fprintf(stderr,"\t%f",(double)*p++);\ fprintf(stderr,"\t%f",(double)*p++);\ } \ fprintf(stderr, "\n");\ } \ } \ } /* Now generate code for all types. */ switch( in->BandFmt ) { im_for_all_types(); default: { im_error( "im_printlines", "%s", _( "unknown input format" ) ); return( -1 ); } } return( 0 ); } libvips-8.9.1/libvips/deprecated/im_resize_linear.c000066400000000000000000000111041361153320700224330ustar00rootroot00000000000000/* im_lowpass() * History: * 27/10/94 JC * - IM_ARRAY modified to use local allocation * - im_iscomplex() call added * 17/2/95 JC * - modernised a little * 18/8/95 JC * - name changed to reflect function more closely * 2/6/04 * - was detecting edges incorrectly, segv for some images (thanks Javi) */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* What we do for each pel. */ #define LOOP( TYPE ) \ if( Xint >= 0 && Yint >=0 && \ Xint < in->Xsize-1 && Yint < in->Ysize-1 ) \ for( bb = 0; bb < in->Bands; bb++ ) { \ TYPE s1 = *((TYPE *) p); \ TYPE s2 = *((TYPE *) (p + ips)); \ TYPE s3 = *((TYPE *) (p + ils)); \ TYPE s4 = *((TYPE *) (p + ips + ils)); \ TYPE *t = (TYPE *) q; \ \ *t = (1-dx)*(1-dy)*s1 + dx*(1-dy)*s2 + \ dy*(1-dx)*s3 + dx*dy*s4; \ \ p += ies; \ q += oes; \ } \ else if( Xint == in->Xsize-1 && Yint >= 0 && Yint < in->Ysize - 1 ) \ for( bb = 0; bb < in->Bands; bb++ ) { \ TYPE s1 = *((TYPE *) p); \ TYPE s3 = *((TYPE *) (p + ils)); \ TYPE *t = (TYPE *) q; \ \ *t = (1-dy)*s1 + dy*s3; \ \ p += ies; \ q += oes; \ } \ else if( Yint == in->Ysize-1 && Xint >= 0 && Xint < in->Xsize - 1 ) \ for( bb = 0; bb < in->Bands; bb++ ) { \ TYPE s1 = *((TYPE *) p); \ TYPE s2 = *((TYPE *) (p + ips)); \ TYPE *t = (TYPE *) q; \ \ *t = (1-dx)*s1 + dx*s2; \ \ p += ies; \ q += oes; \ } \ else \ for( bb = 0; bb < in->Bands; bb++ ) { \ unsigned char s1 = *((unsigned char *) p); \ TYPE *t = (TYPE *) q; \ \ *t = s1; \ \ p += ies; \ q += oes; \ } int im_resize_linear( IMAGE *in, IMAGE *out, int X, int Y ) { double dx, dy, xscale, yscale; double Xnew, Ynew; /* inv. coord. of the interpolated pt */ int x, y; int Xint, Yint; int bb; PEL *input, *opline; PEL *q, *p; int ils, ips, ies; /* Input and output line, pel and */ int ols, oes; /* element sizes */ if( im_iocheck( in, out ) ) return( -1 ); if( vips_band_format_iscomplex( in->BandFmt ) ) { im_error( "im_lowpass", "%s", _( "non-complex input only" ) ); return( -1 ); } if( in->Coding != IM_CODING_NONE ) { im_error("im_lowpass: ", "%s", _( "put should be uncoded") ); return( -1 ); } if( im_cp_desc( out, in ) ) return( -1 ); out->Xsize = X; out->Ysize = Y; if( im_setupout( out ) ) return( -1 ); ils = IM_IMAGE_SIZEOF_LINE( in ); ips = IM_IMAGE_SIZEOF_PEL( in ); ies = IM_IMAGE_SIZEOF_ELEMENT( in ); ols = IM_IMAGE_SIZEOF_LINE( out ); oes = IM_IMAGE_SIZEOF_ELEMENT( out ); /* buffer lines ***************/ if( !(opline = IM_ARRAY( out, ols, PEL )) ) return( -1 ); /* Resampling *************/ input = (PEL*) in->data; xscale = ((double)in->Xsize-1)/(X-1); yscale = ((double)in->Ysize-1)/(Y-1); for (y=0; yBandFmt ) { case IM_BANDFMT_UCHAR: LOOP( unsigned char); break; case IM_BANDFMT_USHORT: LOOP( unsigned short ); break; case IM_BANDFMT_UINT: LOOP( unsigned int ); break; case IM_BANDFMT_CHAR: LOOP( signed char ); break; case IM_BANDFMT_SHORT: LOOP( signed short ); break; case IM_BANDFMT_INT: LOOP( signed int ); break; case IM_BANDFMT_FLOAT: LOOP( float ); break; case IM_BANDFMT_DOUBLE: LOOP( double ); break; default: im_error( "im_lowpass", "%s", _( "unsupported image type" ) ); return( -1 ); /*NOTREACHED*/ } } if (im_writeline(y, out, opline) ) return(-1); } return(0); } libvips-8.9.1/libvips/deprecated/im_setbox.c000066400000000000000000000031641361153320700211130ustar00rootroot00000000000000/* @(#) Copies the coordinates of a box to an IMAGE_BOX * @(#) * @(#) Right call: * @(#) void im_setbox(pbox, xst, yst, xsiz, ysiz, ch_select) * @(#) IMAGE_BOX *pbox; * @(#) int xst, yst, xsiz, ysiz, ch_select; * @(#) ch_select could be 0, 1, 2 or 3 corresponding to * @(#) a, r , g or b respectively. * @(#) * * Copyright: Nicos Dessipris * Written on: 13/02/1990 * Modified on : 04/04/1990 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include void im_setbox(IMAGE_BOX *pbox, int xst, int yst, int xsiz, int ysiz, int ch_select) { pbox->xstart = xst; pbox->ystart = yst; pbox->xsize = xsiz; pbox->ysize = ysiz; pbox->chsel = ch_select; } libvips-8.9.1/libvips/deprecated/im_simcontr.c000066400000000000000000000064561361153320700214540ustar00rootroot00000000000000/* creates a pattern showing the similtaneous constrast effect * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 19/07/1991 * Modified on: * 22/7/93 JC * - externs removed * - im_outcheck() added * 1/2/11 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /** * im_simcontr: * @out: output image * @xsize: image size * @ysize: image size * * Creates a pattern showing the similtaneous constrast effect. * * See also: im_eye(). * * Returns: 0 on success, -1 on error */ int im_simcontr( IMAGE *out, int xsize, int ysize ) { int x, y; unsigned char *line1, *line2, *cpline; /* Check input args */ if( im_outcheck( out ) ) return( -1 ); /* Set now image properly */ im_initdesc(out, xsize, ysize, 1, IM_BBITS_BYTE, IM_BANDFMT_UCHAR, IM_CODING_NONE, IM_TYPE_B_W, 1.0, 1.0, 0, 0 ); /* Set up image checking whether the output is a buffer or a file */ if (im_setupout( out ) == -1 ) return( -1 ); /* Create data */ line1 = (unsigned char *)calloc((unsigned)xsize, sizeof(char)); line2 = (unsigned char *)calloc((unsigned)xsize, sizeof(char)); if ( (line1 == NULL) || (line2 == NULL) ) { im_error( "im_simcontr", "%s", _( "calloc failed") ); return(-1); } cpline = line1; for (x=0; x #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #define BRIGHT 255 #define GREY 128 #define DARK 0 /* Useful: Call a macro with the name, type pairs for all VIPS functions. */ #define im_for_all_types(A) \ case IM_BANDFMT_UCHAR: A(unsigned char); break; \ case IM_BANDFMT_CHAR: A(signed char); break; \ case IM_BANDFMT_USHORT: A(unsigned short); break; \ case IM_BANDFMT_SHORT: A(signed short); break; \ case IM_BANDFMT_UINT: A(unsigned int); break; \ case IM_BANDFMT_INT: A(signed int); break; \ case IM_BANDFMT_FLOAT: A(float); break; /* Replacement for im_slice */ int im_slice( in, out, t1, t2 ) IMAGE *in, *out; double t1, t2; { int x, y, z; PEL *bu; /* Buffer we write to */ int s, epl; /* Size and els per line */ double thresh1, thresh2; /* Check our args. */ if( im_iocheck( in, out ) ) { im_error( "im_slice", "%s", _( "im_iocheck failed") ); return( -1 ); } if( in->Coding != IM_CODING_NONE ) { im_error( "im_slice", "%s", _( "input should be uncoded") ); return( -1 ); } /* Set up the output header. */ if( im_cp_desc( out, in ) ) { im_error( "im_slice", "%s", _( "im_cp_desc failed") ); return( -1 ); } out->BandFmt = IM_BANDFMT_UCHAR; if( im_setupout( out ) ) { im_error( "im_slice", "%s", _( "im_setupout failed") ); return( -1 ); } if ( t1 <= t2 ) { thresh1 = t1; thresh2 = t2; } else { thresh1 = t2; thresh2 = t1; } /* Make buffer for building o/p in. */ epl = in->Xsize * in->Bands; s = epl * sizeof( PEL ); if( (bu = (PEL *) im_malloc( out, (unsigned)s )) == NULL ) return( -1 ); /* Define what we do for each band element type. */ #define im_slice_loop(TYPE)\ { TYPE *a = (TYPE *) in->data;\ \ for( y = 0; y < in->Ysize; y++ ) {\ PEL *b = bu;\ \ for( x = 0; x < in->Xsize; x++ )\ for( z = 0; z < in->Bands; z++ ) {\ double f = (double) *a++;\ if ( f <= thresh1)\ *b++ = (PEL)DARK;\ else if ( f > thresh2 )\ *b++ = (PEL)BRIGHT;\ else \ *b++ = (PEL)GREY;\ }\ \ if( im_writeline( y, out, bu ) )\ return( -1 );\ }\ } /* Do the above for all image types. */ switch( in->BandFmt ) { im_for_all_types( im_slice_loop ); default: im_error( "im_slice", "%s", _( "Unknown input format") ); return( -1 ); } return( 0 ); } libvips-8.9.1/libvips/deprecated/im_spatres.c000066400000000000000000000075311361153320700212720ustar00rootroot00000000000000/* @(#) Function which changes the spatial resolution of an image according to * @(#) step * @(#) * @(#) int im_spatres(in, out, step) * @(#) IMAGE *in, *out; * @(#) int step; * @(#) Returns either 0 (sucess) or -1 (fail) * @(#) * @(#) Picture can have any number of channels (max 64). * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 08/11/1989. * Modified on: 19/01/1990. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include int im_spatres( IMAGE *in, IMAGE *out, int step ) { int x, y; /* horizontal and vertical direction */ int z; /* 0 <= z < channel */ int i, j; int rounding, step2, sum; unsigned char *values; unsigned char *input, *cpinput, *cp2input, *line, *cpline, *pnt, *cpnt; int os; /* Check args */ if ( step < 1 ) { im_error( "im_spatres", _( "Invalid step %d" ), step ); return(-1);} if ( (in->Xsize/step == 0)||(in->Ysize/step == 0) ) {im_error("im_spatres", _( "Invalid step %d" ), step);return(-1);} if (im_iocheck(in, out) == -1) return( -1 ); if((in->Coding != IM_CODING_NONE)||(in->BandFmt !=IM_BANDFMT_UCHAR)) { im_error( "im_spatres", "%s", _( "wrong input") ); return(-1); } /* Prepare output */ if (im_cp_desc(out, in) == -1) return( -1 ); out->Xsize = in->Xsize - in->Xsize%step; out->Ysize = in->Ysize - in->Ysize%step; if( im_setupout(out) == -1) return( -1 ); /* Malloc buffer for one 'line' of input data */ os = in->Xsize * in->Bands; line = (unsigned char *)calloc((unsigned)os, sizeof(char)); /* Malloc space for values */ values = (unsigned char *)calloc((unsigned)out->Bands, sizeof(char)); if ( line == NULL || values == NULL ) { im_error( "im_spatres", "%s", _( "calloc failed") ); return(-1); } step2 = step * step; rounding = step2/2; input = (unsigned char *)in->data; for ( y = 0; y < out->Ysize; y += step ) { cpinput = input; input += os * step; /* do the x loop out->Xsize / step times */ cpline = line; for (x = 0; x < out->Xsize; x += step) { cp2input = cpinput; cpinput += step * out->Bands; /* ??? */ for ( z = 0; z < out->Bands; z++ ) { pnt = cp2input + z; sum = 0; for ( j = 0; j < step; j++ ) { cpnt = pnt; pnt += os; for ( i = 0; i < step; i++ ) { sum += (int)*cpnt; cpnt += out->Bands; } } *(values + z) = (PEL)((sum + rounding)/step2); } /* for this x, write step*bands data */ for ( j = 0; j < step; j++ ) for ( z = 0; z < out->Bands; z++ ) *cpline++ = *(values + z); } /* line is now ready. Write now step lines */ for (j = 0; j < step; j++) if ( im_writeline ( y+j, out, (PEL *)line ) == -1 ) { free ( (char *)line ); free ( (char *)values ); return( -1 ); } } /* end of the for (..y..) loop */ free ( (char *)line ); free ( (char *)values ); return(0); } libvips-8.9.1/libvips/deprecated/im_stretch3.c000066400000000000000000000165531361153320700213540ustar00rootroot00000000000000/* Function to stretch an image by 3%, and displace in x and y. Cubic * interpolation with a seperable mask. Displacements are: * * 0 <= xdisp < 1.0. * 0 <= ydisp < 1.0. * * Each horizontal block of 33 pixels is stretched to 34. * * Written by Ahmed Abbood * August-1994 * * Any unsigned short image. Output image is 3 pixels smaller because of * convolution, but x is larger by 3%: * * out->Xsize = 34*(in->Xsize / 33) + in->Xsize%33 - 3; * out->Ysize = in->Ysize - 3; * * 20/10/95 JC * - was not freeing regions correctly * - tidied up * 29/3/96 JC * - completely rewritten ... now produces correct result, and is 2x * faster * 18/9/97 JC * - added to VIPS library as im_stretch3 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* Data for the cubic interpolation function. */ typedef struct { IMAGE *in; double dx, dy; int xoff, yoff; /* Mask we start with for this disp. */ int mask[34][4]; /* Fixed-point masks for each output pixel */ } StretchInfo; /* Per-thread info. */ typedef struct seq_info { StretchInfo *sin; REGION *ir; unsigned short *buf; int lsk; } SeqInfo; static int stretch_stop( void *vseq, void *a, void *b ) { SeqInfo *seq = (SeqInfo *) vseq; IM_FREEF( im_region_free, seq->ir ); return( 0 ); } static void * stretch_start( IMAGE *out, void *a, void *b ) { IMAGE *in = (IMAGE *) a; StretchInfo *sin = (StretchInfo *) b; SeqInfo *seq; if( !(seq = IM_NEW( out, SeqInfo )) ) return( NULL ); seq->sin = sin; seq->ir = im_region_create( in ); seq->lsk = IM_IMAGE_N_ELEMENTS( out ); seq->buf = IM_ARRAY( out, 4*seq->lsk, unsigned short ); if( !seq->buf || !seq->ir ) { stretch_stop( seq, NULL, NULL ); return( NULL ); } return( (void *)seq ); } /* Stretch a line of pels into a line in the buffer. */ static void make_xline( StretchInfo *sin, unsigned short *p, unsigned short *q, int w, int m ) { int bands = sin->in->Bands; int tot; int x, b; /* Offsets for subsequent pixels. */ int o1 = 1*bands; int o2 = 2*bands; int o3 = 3*bands; for( x = 0; x < w; x++ ) { int *mask = &sin->mask[m][0]; unsigned short *p1 = p; /* Loop for this pel. */ for( b = 0; b < bands; b++ ) { tot = p1[0]*mask[0] + p1[o1]*mask[1] + p1[o2]*mask[2] + p1[o3]*mask[3]; tot = IM_MAX( 0, tot ); p1++; *q++ = (tot + 16384) >> 15; } /* Move to next mask. */ m++; if( m == 34 ) /* Back to mask 0, reuse this input pel. */ m = 0; else /* Move to next input pel. */ p += bands; } } /* As above, but do the vertical resample. lsk is how much we add to move down * a line in p, boff is [0,1,2,3] for which buffer line is mask[3]. */ static void make_yline( StretchInfo *sin, int lsk, int boff, unsigned short *p, unsigned short *q, int w, int m ) { int bands = sin->in->Bands; int we = w * bands; int *mask = &sin->mask[m][0]; int tot; int x; /* Offsets for subsequent pixels. Down a line each time. */ int o0 = lsk*boff; int o1 = lsk*((boff + 1) % 4); int o2 = lsk*((boff + 2) % 4); int o3 = lsk*((boff + 3) % 4); for( x = 0; x < we; x++ ) { tot = p[o0]*mask[0] + p[o1]*mask[1] + p[o2]*mask[2] + p[o3]*mask[3]; tot = IM_MAX( 0, tot ); p++; *q++ = (tot + 16384) >> 15; } } static int stretch_gen( REGION *or, void *vseq, void *a, void *b ) { SeqInfo *seq = (SeqInfo *) vseq; StretchInfo *sin = (StretchInfo *) b; REGION *ir = seq->ir; Rect *r = &or->valid; Rect r1; int x, y; /* What mask do we start with? */ int xstart = (r->left + sin->xoff) % 34; /* What part of input do we need for this output? */ r1.left = r->left - (r->left + sin->xoff) / 34; r1.top = r->top; x = IM_RECT_RIGHT( r ); x = x - (x + sin->xoff) / 34 + 3; r1.width = x - r1.left; r1.height = r->height + 3; if( im_prepare( ir, &r1 ) ) return( -1 ); /* Fill the first three lines of the buffer. */ for( y = 0; y < 3; y++ ) { unsigned short *p = (unsigned short *) IM_REGION_ADDR( ir, r1.left, y + r1.top ); unsigned short *q = seq->buf + seq->lsk*y; make_xline( sin, p, q, r->width, xstart ); } /* Loop for subsequent lines: stretch a new line of x pels, and * interpolate a line of output from the 3 previous xes plus this new * one. */ for( y = 0; y < r->height; y++ ) { /* Next line of fresh input pels. */ unsigned short *p = (unsigned short *) IM_REGION_ADDR( ir, r1.left, y + r1.top + 3 ); /* Next line we fill in the buffer. */ int boff = (y + 3)%4; unsigned short *q = seq->buf + boff*seq->lsk; /* Line we write in output. */ unsigned short *q1 = (unsigned short *) IM_REGION_ADDR( or, r->left, y + r->top ); /* Process this new xline. */ make_xline( sin, p, q, r->width, xstart ); /* Generate new output line. */ make_yline( sin, seq->lsk, boff, seq->buf, q1, r->width, sin->yoff ); } return( 0 ); } int im_stretch3( IMAGE *in, IMAGE *out, double dx, double dy ) { StretchInfo *sin; int i; /* Check our args. */ if( in->Coding != IM_CODING_NONE || in->BandFmt != IM_BANDFMT_USHORT ) { im_error( "im_stretch3", "%s", _( "not uncoded unsigned short" ) ); return( -1 ); } if( dx < 0 || dx >= 1.0 || dy < 0 || dy >= 1.0 ) { im_error( "im_stretch3", "%s", _( "displacements out of range [0,1)" ) ); return( -1 ); } if( im_piocheck( in, out ) ) return( -1 ); /* Prepare the output image. */ if( im_cp_desc( out, in ) ) return( -1 ); out->Xsize = 34*(in->Xsize / 33) + in->Xsize%33 - 3; out->Ysize = in->Ysize - 3; if( im_demand_hint( out, IM_FATSTRIP, in, NULL ) ) return( -1 ); if( !(sin = IM_NEW( out, StretchInfo )) ) return( -1 ); /* Save parameters. */ sin->in = in; sin->dx = dx; sin->dy = dy; /* Generate masks. */ for( i = 0; i < 34; i++ ) { double d = (34.0 - i)/34.0; double y0 = 2.0*d*d - d - d*d*d; double y1 = 1.0 - 2.0*d*d + d*d*d; double y2 = d + d*d - d*d*d; double y3 = -d*d + d*d*d; sin->mask[i][0] = IM_RINT( y0 * 32768 ); sin->mask[i][1] = IM_RINT( y1 * 32768 ); sin->mask[i][2] = IM_RINT( y2 * 32768 ); sin->mask[i][3] = IM_RINT( y3 * 32768 ); } /* Which mask do we start with to apply these offsets? */ sin->xoff = (dx * 33.0) + 0.5; sin->yoff = (dy * 33.0) + 0.5; if( im_generate( out, stretch_start, stretch_gen, stretch_stop, in, sin ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/deprecated/im_thresh.c000066400000000000000000000064661361153320700211140ustar00rootroot00000000000000/* @(#) Thresholds an image. Works for any non-complex type. * @(#) Output is a binary image with 0 and 255 only * @(#) Input is either memory mapped or in a buffer. * @(#) * @(#) int im_thresh(imin, imout, threshold) * @(#) IMAGE *imin, *imout; * @(#) double threshold; * @(#) * @(#) Returns 0 on success and -1 on error * * Copyright: 1991, N. Dessipris, J Cupitt * * Author: N. Dessipris, J. Cupitt * Written on: 15/03/1991 * Modified on : */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* Useful: Call a macro with the name, type pairs for all VIPS functions. */ #define BRIGHT 255 #define DARK 0 #define im_for_all_types(A) \ case IM_BANDFMT_UCHAR: A(unsigned char); break; \ case IM_BANDFMT_CHAR: A(signed char); break; \ case IM_BANDFMT_USHORT: A(unsigned short); break; \ case IM_BANDFMT_SHORT: A(signed short); break; \ case IM_BANDFMT_UINT: A(unsigned int); break; \ case IM_BANDFMT_INT: A(signed int); break; \ case IM_BANDFMT_FLOAT: A(float); break; \ case IM_BANDFMT_DOUBLE: A(double); break; /* Replacement for im_thresh */ int im_thresh( in, out, threshold ) IMAGE *in, *out; double threshold; { int x, y; PEL *bu; /* Buffer we write to */ int s, epl; /* Size and els per line */ /* Check our args. */ if( im_iocheck( in, out ) ) return( -1 ); if( in->Coding != IM_CODING_NONE ) { im_error( "im_thresh", "%s", _( "input should be uncoded") ); return(-1); } /* Set up the output header. */ if( im_cp_desc( out, in ) ) return( -1 ); out->BandFmt = IM_BANDFMT_UCHAR; if( im_setupout( out ) ) return( -1 ); /* Make buffer for building o/p in. */ epl = in->Xsize * in->Bands; s = epl * sizeof( PEL ); if( (bu = (PEL *) im_malloc( out, (unsigned)s )) == NULL ) return( -1 ); /* Define what we do for each band element type. */ #define im_thresh_loop(TYPE)\ { TYPE *a = (TYPE *) in->data;\ \ for( y = 0; y < in->Ysize; y++ ) {\ PEL *b = bu;\ \ for( x = 0; x < epl; x++ ) {\ double f = (double) *a++;\ if ( f >= threshold)\ *b++ = (PEL)BRIGHT;\ else\ *b++ = (PEL)DARK;\ }\ \ if( im_writeline( y, out, bu ) ) \ return( -1 );\ }\ } /* Do the above for all image types. */ switch( in->BandFmt ) { im_for_all_types( im_thresh_loop ); default: im_error( "im_thresh", "%s", _( "Unknown input format") ); return( -1 ); } return( 0 ); } libvips-8.9.1/libvips/deprecated/im_tiff2vips.c000066400000000000000000000120251361153320700215170ustar00rootroot00000000000000/* vips7 compat stub for tiff loading ... see foreign/tiff2vips for the * replacement * * 6/12/11 * - just a stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "../foreign/pforeign.h" #ifdef HAVE_TIFF static gboolean im_istifftiled( const char *filename ) { VipsSource *source; gboolean result; if( !(source = vips_source_new_from_file( filename )) ) return( FALSE ); result = vips__istiff_source( source ); VIPS_UNREF( source ); return( result ); } static int im_tiff_read_header( const char *filename, VipsImage *out, int page, int n, gboolean autorotate ) { VipsSource *source; if( !(source = vips_source_new_from_file( filename )) ) return( -1 ); if( vips__tiff_read_header_source( source, out, page, n, autorotate ) ) { VIPS_UNREF( source ); return( -1 ); } VIPS_UNREF( source ); return( 0 ); } static int im_tiff_read( const char *filename, VipsImage *out, int page, int n, gboolean autorotate ) { VipsSource *source; if( !(source = vips_source_new_from_file( filename )) ) return( -1 ); if( vips__tiff_read_source( source, out, page, n, autorotate ) ) { VIPS_UNREF( source ); return( -1 ); } VIPS_UNREF( source ); return( 0 ); } #endif /*HAVE_TIFF*/ static int tiff2vips( const char *name, IMAGE *out, gboolean header_only ) { #ifdef HAVE_TIFF char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q; int page; int seq; im_filename_split( name, filename, mode ); page = 0; seq = 0; p = &mode[0]; if( (q = im_getnextoption( &p )) ) { page = atoi( q ); } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "seq", q ) ) seq = 1; } /* We need to be compatible with the pre-sequential mode * im_tiff2vips(). This returned a "t" if given a "p" image, since it * used writeline. * * If we're writing the image to a "p", switch it to a "t". And only * for non-tiled (strip) images which we write with writeline. * * Don't do this for header read, since we don't want to force a * malloc if all we are doing is looking at fields. */ if( !header_only && !seq && !im_istifftiled( filename ) && out->dtype == VIPS_IMAGE_PARTIAL ) { if( vips__image_wio_output( out ) ) return( -1 ); } if( header_only ) { if( im_tiff_read_header( filename, out, page, 1, FALSE ) ) return( -1 ); } else { if( im_tiff_read( filename, out, page, 1, FALSE ) ) return( -1 ); } #else vips_error( "im_tiff2vips", "%s", _( "no TIFF support in your libvips" ) ); return( -1 ); #endif /*HAVE_TIFF*/ return( 0 ); } int im_tiff2vips( const char *name, IMAGE *out ) { return( tiff2vips( name, out, FALSE ) ); } /* By having a separate header func, we get lazy.c to open via disc/mem. */ static int im_tiff2vips_header( const char *name, IMAGE *out ) { return( tiff2vips( name, out, TRUE ) ); } static VipsFormatFlags tiff_flags( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( (VipsFormatFlags) vips_foreign_flags( "tiffload", filename ) ); } static int istiff( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( vips_foreign_is_a( "tiffload", filename ) ); } static const char *tiff_suffs[] = { ".tif", ".tiff", NULL }; typedef VipsFormat VipsFormatTiff; typedef VipsFormatClass VipsFormatTiffClass; static void vips_format_tiff_class_init( VipsFormatTiffClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "tiff"; object_class->description = _( "TIFF" ); format_class->is_a = istiff; format_class->header = im_tiff2vips_header; format_class->load = im_tiff2vips; format_class->save = im_vips2tiff; format_class->get_flags = tiff_flags; format_class->suffs = tiff_suffs; } static void vips_format_tiff_init( VipsFormatTiff *object ) { } G_DEFINE_TYPE( VipsFormatTiff, vips_format_tiff, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/im_video_test.c000066400000000000000000000030271361153320700217520ustar00rootroot00000000000000/* test video grabber ... just generates noise and optional errors */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /** * im_video_test: * @im: write image here * @brightness: brightness setting * @error: set this to make the function return an error * * Make a test video image. Set @error to trigger an error. * * Returns: 0 on success, -1 on error */ int im_video_test( IMAGE *im, int brightness, int error ) { if( error ) { im_error( "im_video_test", "%s", _( "error requested" ) ); return( -1 ); } else return( im_gaussnoise( im, 720, 576, brightness, 20 ) ); } libvips-8.9.1/libvips/deprecated/im_vips2csv.c000066400000000000000000000027771361153320700213770ustar00rootroot00000000000000/* Write a csv file. * * 16/12/11 * - just a stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include int im_vips2csv( IMAGE *in, const char *filename ) { char *separator = "\t"; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q, *r; /* Parse mode string. */ im_filename_split( filename, name, mode ); p = &mode[0]; while( (q = im_getnextoption( &p )) ) { if( im_isprefix( "sep", q ) && (r = im_getsuboption( q )) ) separator = r; } if( vips_csvsave( in, name, "separator", separator, NULL ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/deprecated/im_vips2dz.c000066400000000000000000000057271361153320700212170ustar00rootroot00000000000000/* vips7 compat stub for vips_dzsave() * * 11/6/13 * - from im_vips2tiff() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Turn on IM_REGION_ADDR() range checks, don't delete intermediates. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include int im_vips2dz( IMAGE *in, const char *filename ) { char *p, *q; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char buf[FILENAME_MAX]; int i; VipsForeignDzLayout layout = VIPS_FOREIGN_DZ_LAYOUT_DZ; char *suffix = ".jpeg"; int overlap = 0; int tile_size = 256; VipsForeignDzDepth depth = VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL; gboolean centre = FALSE; VipsAngle angle = VIPS_ANGLE_D0; /* We can't use im_filename_split() --- it assumes that we have a * filename with an extension before the ':', and filename here is * actually a dirname. * * Just split on the first ':'. */ im_strncpy( name, filename, FILENAME_MAX ); if( (p = strchr( name, ':' )) ) { *p = '\0'; im_strncpy( mode, p + 1, FILENAME_MAX ); } else strcpy( mode, "" ); strcpy( buf, mode ); p = &buf[0]; if( (q = im_getnextoption( &p )) ) { if( (i = vips_enum_from_nick( "im_vips2dz", VIPS_TYPE_FOREIGN_DZ_LAYOUT, q )) < 0 ) return( -1 ); layout = i; } if( (q = im_getnextoption( &p )) ) suffix = g_strdup( q ); if( (q = im_getnextoption( &p )) ) overlap = atoi( q ); if( (q = im_getnextoption( &p )) ) tile_size = atoi( q ); if( (q = im_getnextoption( &p )) ) { if( (i = vips_enum_from_nick( "im_vips2dz", VIPS_TYPE_FOREIGN_DZ_DEPTH, q )) < 0 ) return( -1 ); depth = i; } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "cen", q ) ) centre = TRUE; } if( (q = im_getnextoption( &p )) ) { if( (i = vips_enum_from_nick( "im_vips2dz", VIPS_TYPE_ANGLE, q )) < 0 ) return( -1 ); angle = i; } if( vips_dzsave( in, name, "layout", layout, "suffix", suffix, "overlap", overlap, "tile_size", tile_size, "depth", depth, "centre", centre, "angle", angle, NULL ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/deprecated/im_vips2jpeg.c000066400000000000000000000047261361153320700215250ustar00rootroot00000000000000/* Convert 8-bit VIPS images to/from JPEG. * * 30/11/11 * - now just a stub calling the new system */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include int im_vips2jpeg( IMAGE *in, const char *filename ) { int qfac = 75; /* profile has to default to NULL, meaning "no param". If we default * to "none" we will not attach the profile from the metadata. */ char *profile = NULL; char *p, *q; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char buf[FILENAME_MAX]; /* Parse mode from filename. */ im_filename_split( filename, name, mode ); strcpy( buf, mode ); p = &buf[0]; if( (q = im_getnextoption( &p )) ) { if( strcmp( q, "" ) != 0 ) qfac = atoi( mode ); } if( (q = im_getnextoption( &p )) ) { if( strcmp( q, "" ) != 0 ) profile = q; } if( (q = im_getnextoption( &p )) ) { im_error( "im_vips2jpeg", _( "unknown extra options \"%s\"" ), q ); return( -1 ); } return( vips_jpegsave( in, name, "Q", qfac, "profile", profile, NULL ) ); } int im_vips2bufjpeg( IMAGE *in, IMAGE *out, int qfac, char **obuf, int *olen ) { size_t len; if( vips_jpegsave_buffer( in, (void **) obuf, &len, "Q", qfac, NULL ) ) return( -1 ); if( out ) im_add_callback( out, "close", (im_callback_fn) vips_free, obuf, NULL ); if( olen ) *olen = len; return( 0 ); } int im_vips2mimejpeg( IMAGE *in, int qfac ) { return( vips_jpegsave_mime( in, "Q", qfac, NULL ) ); } libvips-8.9.1/libvips/deprecated/im_vips2mask.c000066400000000000000000000133131361153320700215230ustar00rootroot00000000000000/* im_vips2mask * * Author: J.Cupitt * Written on: 6/6/94 * Modified on: * * 16/10/06 * - allow 1xn-band images too * 23/2/07 * - oop, broken for nx1 m-band images * - now casts to double for you * 1/2/10 * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /** * im_vips2mask: * @in: input image * @filename: name for output mask * * Make a mask from an image. All images are cast to %IM_BANDFMT_DOUBLE * before processing. There are two cases for handling bands: * * If the image has a single band, im_vips2mask() will write a mask the same * size as the image. * * If the image has more than one band, it must be one pixel high or wide. In * this case the output mask uses that axis to represent band values. * * See also: im_mask2vips(), im_measure_area(). * * Returns: a #DOUBLEMASK with @outname set as the name, or NULL on error */ DOUBLEMASK * im_vips2mask( IMAGE *in, const char *filename ) { int width, height; DOUBLEMASK *out; /* double* only: cast if necessary. */ if( in->BandFmt != IM_BANDFMT_DOUBLE ) { IMAGE *t; if( !(t = im_open( "im_vips2mask", "p" )) ) return( NULL ); if( im_clip2fmt( in, t, IM_BANDFMT_DOUBLE ) || !(out = im_vips2mask( t, filename )) ) { im_close( t ); return( NULL ); } im_close( t ); return( out ); } /* Check the image. */ if( im_incheck( in ) || im_check_uncoded( "im_vips2mask", in ) ) return( NULL ); if( in->Bands == 1 ) { width = in->Xsize; height = in->Ysize; } else if( in->Xsize == 1 ) { width = in->Bands; height = in->Ysize; } else if( in->Ysize == 1 ) { width = in->Xsize; height = in->Bands; } else { im_error( "im_vips2mask", "%s", _( "one band, nx1, or 1xn images only" ) ); return( NULL ); } if( !(out = im_create_dmask( filename, width, height )) ) return( NULL ); if( in->Bands > 1 && in->Ysize == 1 ) { double *data = (double *) in->data; int x, y; /* Need to transpose: the image is RGBRGBRGB, we need RRRGGGBBB. */ for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) out->coeff[x + y * width] = data[x * height + y]; } else memcpy( out->coeff, in->data, width * height * sizeof( double ) ); out->scale = vips_image_get_scale( in ); out->offset = vips_image_get_offset( in ); return( out ); } INTMASK * im_vips2imask( IMAGE *in, const char *filename ) { int width, height; INTMASK *out; double *data; int x, y; double double_result; int int_result; /* double* only: cast if necessary. */ if( in->BandFmt != IM_BANDFMT_DOUBLE ) { IMAGE *t; if( !(t = im_open( "im_vips2imask", "p" )) ) return( NULL ); if( im_clip2fmt( in, t, IM_BANDFMT_DOUBLE ) || !(out = im_vips2imask( t, filename )) ) { im_close( t ); return( NULL ); } im_close( t ); return( out ); } /* Check the image. */ if( im_incheck( in ) || im_check_uncoded( "im_vips2imask", in ) ) return( NULL ); if( in->Bands == 1 ) { width = in->Xsize; height = in->Ysize; } else if( in->Xsize == 1 ) { width = in->Bands; height = in->Ysize; } else if( in->Ysize == 1 ) { width = in->Xsize; height = in->Bands; } else { im_error( "im_vips2imask", "%s", _( "one band, nx1, or 1xn images only" ) ); return( NULL ); } data = (double *) in->data; if( !(out = im_create_imask( filename, width, height )) ) return( NULL ); /* We want to make an intmask which has the same input to output ratio * as the double image. * * Imagine convolving with the double image, what's the ratio of * brightness between input and output? We want the same ratio for the * int version, if we can. * * Imagine an input image where every pixel is 1, what will the output * be? */ double_result = 0; for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) double_result += data[x + width * y]; double_result /= vips_image_get_scale( in ); for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) if( in->Bands > 1 && in->Ysize == 1 ) /* Need to transpose: the image is RGBRGBRGB, * we need RRRGGGBBB. */ out->coeff[x + y * width] = VIPS_RINT( data[x * height + y] ); else out->coeff[x + y * width] = VIPS_RINT( data[x + y * width] ); out->scale = VIPS_RINT( vips_image_get_scale( in ) ); if( out->scale == 0 ) out->scale = 1; out->offset = VIPS_RINT( vips_image_get_offset( in ) ); /* Now convolve a 1 everywhere image with the int version we've made, * what do we get? */ int_result = 0; for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) int_result += out->coeff[x + width * y]; int_result /= out->scale; /* And adjust the scale to get as close to a match as we can. */ out->scale = VIPS_RINT( out->scale + (int_result - double_result) ); if( out->scale == 0 ) out->scale = 1; return( out ); } libvips-8.9.1/libvips/deprecated/im_vips2png.c000066400000000000000000000042111361153320700213510ustar00rootroot00000000000000/* Convert 1 to 4-band 8 or 16-bit VIPS images to/from PNG. * * 19/12/11 * - just a stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include int im_vips2png( IMAGE *in, const char *filename ) { int compression; int interlace; char *p, *q; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char buf[FILENAME_MAX]; /* Extract write mode from filename and parse. */ im_filename_split( filename, name, mode ); strcpy( buf, mode ); p = &buf[0]; compression = 6; interlace = 0; if( (q = im_getnextoption( &p )) ) compression = atoi( q ); if( (q = im_getnextoption( &p )) ) interlace = atoi( q ); return( vips_pngsave( in, name, "compression", compression, "interlace", interlace, NULL ) ); } int im_vips2bufpng( IMAGE *in, IMAGE *out, int compression, int interlace, char **obuf, size_t *olen ) { if( vips_pngsave_buffer( in, (void **) obuf, olen, "compression", compression, "interlace", interlace, NULL ) ) return( -1 ); if( out ) im_add_callback( out, "close", (im_callback_fn) vips_free, obuf, NULL ); return( 0 ); } libvips-8.9.1/libvips/deprecated/im_vips2ppm.c000066400000000000000000000032671361153320700213730ustar00rootroot00000000000000/* Write a ppm file. * * 20/12/11 * - just a compat stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include int im_vips2ppm( IMAGE *in, const char *filename ) { int ascii; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; /* Default to binary output ... much smaller. */ ascii = 0; /* Extract write mode from filename. */ im_filename_split( filename, name, mode ); if( strcmp( mode, "" ) != 0 ) { if( im_isprefix( "binary", mode ) ) ascii = 0; else if( im_isprefix( "ascii", mode ) ) ascii = 1; else { im_error( "im_vips2ppm", "%s", _( "bad mode string, " "should be \"binary\" or \"ascii\"" ) ); return( -1 ); } } return( vips_ppmsave( in, name, "ascii", ascii, NULL ) ); } libvips-8.9.1/libvips/deprecated/im_vips2tiff.c000066400000000000000000000140121361153320700215150ustar00rootroot00000000000000/* vips7 compat stub for im_vips2tiff.c * * 4/12/11 * - just a stub calling vips_tiffsave() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Turn on IM_REGION_ADDR() range checks, don't delete intermediates. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include int im_vips2tiff( IMAGE *in, const char *filename ) { char *p, *q, *r; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char buf[FILENAME_MAX]; VipsForeignTiffCompression compression = VIPS_FOREIGN_TIFF_COMPRESSION_NONE; int Q = 75; VipsForeignTiffPredictor predictor = VIPS_FOREIGN_TIFF_PREDICTOR_NONE; char *profile = NULL; gboolean tile = FALSE; int tile_width = 128; int tile_height = 128; gboolean pyramid = FALSE; gboolean squash = FALSE; VipsForeignTiffResunit resunit = VIPS_FOREIGN_TIFF_RESUNIT_CM; double xres = in->Xres * 10.0; double yres = in->Yres * 10.0; gboolean bigtiff = FALSE; im_filename_split( filename, name, mode ); strcpy( buf, mode ); p = &buf[0]; if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "none", q ) ) compression = VIPS_FOREIGN_TIFF_COMPRESSION_NONE; else if( im_isprefix( "packbits", q ) ) compression = VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS; else if( im_isprefix( "ccittfax4", q ) ) compression = VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4; else if( im_isprefix( "lzw", q ) ) { compression = VIPS_FOREIGN_TIFF_COMPRESSION_LZW; if( (r = im_getsuboption( q )) ) { int i; if( sscanf( r, "%d", &i ) != 1 ) { im_error( "im_vips2tiff", "%s", _( "bad predictor " "parameter" ) ); return( -1 ); } predictor = i; } } else if( im_isprefix( "deflate", q ) ) { compression = VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE; if( (r = im_getsuboption( q )) ) { int i; if( sscanf( r, "%d", &i ) != 1 ) { im_error( "im_vips2tiff", "%s", _( "bad predictor " "parameter" ) ); return( -1 ); } predictor = i; } } else if( im_isprefix( "jpeg", q ) ) { compression = VIPS_FOREIGN_TIFF_COMPRESSION_JPEG; if( (r = im_getsuboption( q )) ) if( sscanf( r, "%d", &Q ) != 1 ) { im_error( "im_vips2tiff", "%s", _( "bad JPEG quality " "parameter" ) ); return( -1 ); } } else { im_error( "im_vips2tiff", _( "unknown compression mode " "\"%s\"\nshould be one of \"none\", " "\"packbits\", \"ccittfax4\", \"lzw\", " "\"deflate\" or \"jpeg\"" ), q ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "tile", q ) ) { tile = TRUE; if( (r = im_getsuboption( q )) ) { if( sscanf( r, "%dx%d", &tile_width, &tile_height ) != 2 ) { im_error( "im_vips2tiff", "%s", _( "bad tile sizes" ) ); return( -1 ); } } } else if( im_isprefix( "strip", q ) ) tile = FALSE; else { im_error( "im_vips2tiff", _( "unknown layout mode " "\"%s\"\nshould be one of \"tile\" or " "\"strip\"" ), q ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "pyramid", q ) ) pyramid = TRUE; else if( im_isprefix( "flat", q ) ) pyramid = FALSE; else { im_error( "im_vips2tiff", _( "unknown multi-res mode " "\"%s\"\nshould be one of \"flat\" or " "\"pyramid\"" ), q ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "onebit", q ) ) squash = TRUE; else if( im_isprefix( "manybit", q ) ) squash = FALSE; else { im_error( "im_vips2tiff", _( "unknown format " "\"%s\"\nshould be one of \"onebit\" or " "\"manybit\"" ), q ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "res_cm", q ) ) resunit = VIPS_FOREIGN_TIFF_RESUNIT_CM; else if( im_isprefix( "res_inch", q ) ) resunit = VIPS_FOREIGN_TIFF_RESUNIT_INCH; else { im_error( "im_vips2tiff", _( "unknown resolution unit " "\"%s\"\nshould be one of \"res_cm\" or " "\"res_inch\"" ), q ); return( -1 ); } if( (r = im_getsuboption( q )) ) { if( sscanf( r, "%lfx%lf", &xres, &yres ) != 2 ) { if( sscanf( r, "%lf", &xres ) != 1 ) { im_error( "im_vips2tiff", "%s", _( "bad resolution values" ) ); return( -1 ); } yres = xres; } /* vips resolutions are always in pixels/mm. If the * user specifies ",res_inch:72x72" then they are * using pixels/inch instead and we must convert. */ if( resunit == VIPS_FOREIGN_TIFF_RESUNIT_INCH ) { xres /= 2.54; yres /= 2.54; } } } if( (q = im_getnextoption( &p )) && strcmp( q, "" ) != 0 ) profile = im_strdup( NULL, q ); if( (q = im_getnextoption( &p )) && strcmp( q, "8" ) == 0 ) bigtiff = TRUE; if( (q = im_getnextoption( &p )) ) { im_error( "im_vips2tiff", _( "unknown extra options \"%s\"" ), q ); return( -1 ); } if( vips_tiffsave( in, name, "compression", compression, "Q", Q, "predictor", predictor, "profile", profile, "tile", tile, "tile_width", tile_width, "tile_height", tile_height, "pyramid", pyramid, "squash", squash, "resunit", resunit, "xres", xres, "yres", yres, "bigtiff", bigtiff, NULL ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/deprecated/im_vips2webp.c000066400000000000000000000032041361153320700215230ustar00rootroot00000000000000/* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include int im_vips2webp( IMAGE *in, const char *filename ) { int compression; int lossless; char *p, *q; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char buf[FILENAME_MAX]; im_filename_split( filename, name, mode ); strcpy( buf, mode ); p = &buf[0]; compression = 6; lossless = 0; if( (q = im_getnextoption( &p )) ) compression = atoi( q ); if( (q = im_getnextoption( &p )) ) lossless = atoi( q ); return( vips_webpsave( in, name, "Q", compression, "lossless", lossless, NULL ) ); } libvips-8.9.1/libvips/deprecated/im_webp2vips.c000066400000000000000000000060501361153320700215250ustar00rootroot00000000000000/* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "../foreign/pforeign.h" static int webp2vips( const char *name, IMAGE *out, gboolean header_only ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); #ifdef HAVE_LIBWEBP { VipsSource *source; int result; if( !(source = vips_source_new_from_file( filename )) ) return( -1 ); if( header_only ) result = vips__webp_read_header_source( source, out, 0, 1, 1 ); else result = vips__webp_read_source( source, out, 0, 1, 1 ); VIPS_UNREF( source ); if( result ) return( result ); } #else vips_error( "im_webp2vips", "%s", _( "no webp support in your libvips" ) ); return( -1 ); #endif /*HAVE_LIBWEBP*/ return( 0 ); } static gboolean vips__iswebp( const char *filename ) { gboolean result; #ifdef HAVE_LIBWEBP VipsSource *source; if( !(source = vips_source_new_from_file( filename )) ) return( FALSE ); result = vips__iswebp_source( source ); VIPS_UNREF( source ); #else /*!HAVE_LIBWEBP*/ result = -1; #endif /*HAVE_LIBWEBP*/ return( result ); } int im_webp2vips( const char *name, IMAGE *out ) { return( webp2vips( name, out, FALSE ) ); } #ifdef HAVE_LIBWEBP static int im_webp2vips_header( const char *name, IMAGE *out ) { return( webp2vips( name, out, TRUE ) ); } static const char *webp_suffs[] = { ".webp", NULL }; typedef VipsFormat VipsFormatWebp; typedef VipsFormatClass VipsFormatWebpClass; static void vips_format_webp_class_init( VipsFormatWebpClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "webp"; object_class->description = _( "webp" ); format_class->is_a = vips__iswebp; format_class->header = im_webp2vips_header; format_class->load = im_webp2vips; format_class->save = im_vips2webp; format_class->suffs = webp_suffs; } static void vips_format_webp_init( VipsFormatWebp *object ) { } G_DEFINE_TYPE( VipsFormatWebp, vips_format_webp, VIPS_TYPE_FORMAT ); #endif /*HAVE_LIBWEBP*/ libvips-8.9.1/libvips/deprecated/im_zerox.c000066400000000000000000000105561361153320700207610ustar00rootroot00000000000000/* detect zero-crossings * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 12/02/1990 * Modified on : * 1/2/95 JC * - rewritten for PIO * - some bugs removed * 11/5/06 * - small clean ups * 11/11/10 * - small cleanups * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #define LOOP( TYPE ) { \ for( i = 0; i < ne; i++ ) { \ TYPE p1 = ((TYPE *)p)[i]; \ TYPE p2 = ((TYPE *)p)[i + ba]; \ \ if( flag == 1 && p1 > 0 && p2 <= 0 ) \ q[i] = 255; \ else if( flag == -1 && p1 < 0 && p2 >= 0 ) \ q[i] = 255; \ else \ q[i] = 0; \ } \ } /* Zerox generate function. */ static int zerox_gen( REGION *or, void *seq, void *a, void *b ) { REGION *ir = (REGION *) seq; IMAGE *in = (IMAGE *) a; int flag = GPOINTER_TO_INT( b ); Rect irect; Rect *r = &or->valid; /* Range of pixels we loop over. */ int le = r->left; int to = r->top; int bo = IM_RECT_BOTTOM( r ); int ba = in->Bands; int ne = ba * r->width; int i, y; /* We need to be able to see one pixel to the right. */ irect.top = r->top; irect.left = r->left; irect.width = r->width + 1; irect.height = r->height; if( im_prepare( ir, &irect ) ) return( -1 ); for( y = to; y < bo; y++ ) { VipsPel *p = IM_REGION_ADDR( ir, le, y ); VipsPel *q = IM_REGION_ADDR( or, le, y ); switch( in->BandFmt ) { case IM_BANDFMT_CHAR: LOOP( signed char ); break; case IM_BANDFMT_SHORT: LOOP( signed short ); break; case IM_BANDFMT_INT: LOOP( signed int ); break; case IM_BANDFMT_FLOAT: LOOP( float ); break; case IM_BANDFMT_DOUBLE: LOOP( double ); break; default: g_assert( 0 ); } } return( 0 ); } /** * im_zerox: * @in: input image * @out: output image * @sign: detect positive or negative zero crossings * * im_zerox() detects the positive or negative zero crossings @in, * depending on @sign. If @sign is -1, negative zero crossings are returned, * if @sign is 1, positive zero crossings are returned. * * The output image is byte with zero crossing set to 255 and all other values * set to zero. Input can have any number of channels, and be any non-complex * type. * * See also: im_conv(), im_rot90. * * Returns: 0 on success, -1 on error */ int im_zerox( IMAGE *in, IMAGE *out, int sign ) { IMAGE *t1; if( sign != -1 && sign != 1 ) { im_error( "im_zerox", "%s", _( "flag not -1 or 1" ) ); return( -1 ); } if( in->Xsize < 2 ) { im_error( "im_zerox", "%s", _( "image too narrow" ) ); return( -1 ); } if( !(t1 = im_open_local( out, "im_zerox" , "p" )) || im_piocheck( in, t1 ) || im_check_uncoded( "im_zerox", in ) || im_check_noncomplex( "im_zerox", in ) ) return( -1 ); if( vips_bandfmt_isuint( in->BandFmt ) ) /* Unsigned type, therefore there will be no zero-crossings. */ return( im_black( out, in->Xsize, in->Ysize, in->Bands ) ); /* Force output to be BYTE. Output is narrower than input by 1 pixel. */ if( im_cp_desc( t1, in ) ) return( -1 ); t1->BandFmt = IM_BANDFMT_UCHAR; t1->Xsize -= 1; /* Set hints - THINSTRIP is ok with us. */ if( im_demand_hint( t1, IM_THINSTRIP, NULL ) ) return( -1 ); /* Generate image. */ if( im_generate( t1, im_start_one, zerox_gen, im_stop_one, in, GINT_TO_POINTER( sign ) ) ) return( -1 ); /* Now embed it in a larger image. */ if( im_embed( t1, out, 0, 0, 0, in->Xsize, in->Ysize ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/deprecated/inplace_dispatch.c000066400000000000000000000335041361153320700224150ustar00rootroot00000000000000/* Function dispatch tables for inplace. * * J. Cupitt, 8/2/95 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* Calculate a pixel for an image from a vec of double. Valid while im is * valid. */ VipsPel * im__vector_to_ink( const char *domain, IMAGE *im, int n, double *vec ) { IMAGE *t[3]; double *zeros; int i; if( im_check_vector( domain, n, im ) ) return( NULL ); if( im_open_local_array( im, t, 3, domain, "t" ) || !(zeros = IM_ARRAY( im, n, double )) ) return( NULL ); for( i = 0; i < n; i++ ) zeros[i] = 0.0; if( im_black( t[0], 1, 1, im->Bands ) || im_lintra_vec( n, zeros, t[0], vec, t[1] ) || im_clip2fmt( t[1], t[2], im->BandFmt ) ) return( NULL ); return( t[2]->data ); } double * im__ink_to_vector( const char *domain, IMAGE *im, VipsPel *ink ) { double *vec; int i; if( im_check_uncoded( "im__ink_to_vector", im ) || im_check_noncomplex( "im__ink_to_vector", im ) ) return( NULL ); if( !(vec = IM_ARRAY( NULL, im->Bands, double )) ) return( NULL ); #define READ( TYPE ) \ vec[i] = ((TYPE *) ink)[i]; for( i = 0; i < im->Bands; i++ ) switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: READ( unsigned char ); break; case IM_BANDFMT_CHAR: READ( signed char ); break; case IM_BANDFMT_USHORT: READ( unsigned short ); break; case IM_BANDFMT_SHORT: READ( signed short ); break; case IM_BANDFMT_UINT: READ( unsigned int ); break; case IM_BANDFMT_INT: READ( signed int ); break; case IM_BANDFMT_FLOAT: READ( float ); break; case IM_BANDFMT_DOUBLE: READ( double ); break; default: g_assert( 0 ); } return( vec ); } /* Args for im_draw_image. */ static im_arg_desc draw_image_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_IMAGE( "sub" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ) }; /* Call im_draw_image via arg vector. */ static int draw_image_vec( im_object *argv ) { int x = *((int *) argv[2]); int y = *((int *) argv[3]); return( im_draw_image( argv[0], argv[1], x, y ) ); } /* Description of im_draw_image. */ static im_function draw_image_desc = { "im_draw_image", /* Name */ "draw image sub inside image main at position (x,y)", 0, /* Flags */ draw_image_vec, /* Dispatch function */ IM_NUMBER( draw_image_args ), /* Size of arg list */ draw_image_args /* Arg list */ }; /* Args for im_lineset. */ static im_arg_desc lineset_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMAGE( "mask" ), IM_INPUT_IMAGE( "ink" ), IM_INPUT_INTVEC( "x1" ), IM_INPUT_INTVEC( "y1" ), IM_INPUT_INTVEC( "x2" ), IM_INPUT_INTVEC( "y2" ) }; /* Call im_lineset via arg vector. */ static int lineset_vec( im_object *argv ) { im_intvec_object *x1v = (im_intvec_object *) argv[4]; im_intvec_object *y1v = (im_intvec_object *) argv[5]; im_intvec_object *x2v = (im_intvec_object *) argv[6]; im_intvec_object *y2v = (im_intvec_object *) argv[7]; if( x1v->n != y1v->n || x1v->n != x2v->n || x1v->n != y2v->n ) { im_error( "im_lineset", "%s", _( "vectors not same length" ) ); return( -1 ); } return( im_lineset( argv[0], argv[1], argv[2], argv[3], x1v->n, x1v->vec, y1v->vec, x2v->vec, y2v->vec ) ); } /* Description of im_lineset. */ static im_function lineset_desc = { "im_lineset", /* Name */ "draw line between points (x1,y1) and (x2,y2)", 0, /* Flags */ lineset_vec, /* Dispatch function */ IM_NUMBER( lineset_args ), /* Size of arg list */ lineset_args /* Arg list */ }; /* Args for im_draw_mask. */ static im_arg_desc draw_mask_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_IMAGE( "mask" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_mask via arg vector. */ static int draw_mask_vec( im_object *argv ) { IMAGE *image = argv[0]; IMAGE *mask = argv[1]; int x = *((int *) argv[2]); int y = *((int *) argv[3]); im_doublevec_object *dv = (im_doublevec_object *) argv[4]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_mask", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_mask( image, mask, x, y, ink ) ); } /* Description of im_draw_mask. */ static im_function draw_mask_desc = { "im_draw_mask", /* Name */ "draw mask sub inside image main at position (x,y)", 0, /* Flags */ draw_mask_vec, /* Dispatch function */ IM_NUMBER( draw_mask_args ), /* Size of arg list */ draw_mask_args /* Arg list */ }; /* Args for im_draw_flood_blob(). */ static im_arg_desc draw_flood_blob_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_flood_blob() via arg vector. */ static int draw_flood_blob_vec( im_object *argv ) { IMAGE *image = argv[0]; int x = *((int *) argv[1]); int y = *((int *) argv[2]); im_doublevec_object *dv = (im_doublevec_object *) argv[3]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_flood_blob", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_flood_blob( image, x, y, ink, NULL ) ); } /* Description of im_draw_flood_blob(). */ static im_function draw_flood_blob_desc = { "im_draw_flood_blob", /* Name */ "flood with ink from x, y while pixel == start", 0, /* Flags */ draw_flood_blob_vec, /* Dispatch function */ IM_NUMBER( draw_flood_blob_args ),/* Size of arg list */ draw_flood_blob_args /* Arg list */ }; /* Args for im_draw_flood(). */ static im_arg_desc draw_flood_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_flood() via arg vector. */ static int draw_flood_vec( im_object *argv ) { IMAGE *image = argv[0]; int x = *((int *) argv[1]); int y = *((int *) argv[2]); im_doublevec_object *dv = (im_doublevec_object *) argv[3]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_flood", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_flood( image, x, y, ink, NULL ) ); } /* Description of im_draw_flood(). */ static im_function draw_flood_desc = { "im_draw_flood", /* Name */ "flood with ink from x, y while pixel != ink", 0, /* Flags */ draw_flood_vec, /* Dispatch function */ IM_NUMBER( draw_flood_args ),/* Size of arg list */ draw_flood_args /* Arg list */ }; /* Args for im_draw_flood_other(). */ static im_arg_desc draw_flood_other_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_IMAGE( "test" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "serial" ) }; /* Call im_draw_flood_other() via arg vector. */ static int draw_flood_other_vec( im_object *argv ) { IMAGE *image = argv[0]; IMAGE *test = argv[1]; int x = *((int *) argv[2]); int y = *((int *) argv[3]); int serial = *((int *) argv[4]); return( im_draw_flood_other( image, test, x, y, serial, NULL ) ); } /* Description of im_draw_flood_other(). */ static im_function draw_flood_other_desc = { "im_draw_flood_other", /* Name */ "flood image with serial from x, y while pixel == start", 0, /* Flags */ draw_flood_other_vec, /* Dispatch function */ IM_NUMBER( draw_flood_other_args ),/* Size of arg list */ draw_flood_other_args /* Arg list */ }; /* Args for im_draw_point. */ static im_arg_desc draw_point_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_point via arg vector. */ static int draw_point_vec( im_object *argv ) { IMAGE *image = argv[0]; int x = *((int *) argv[1]); int y = *((int *) argv[2]); im_doublevec_object *dv = (im_doublevec_object *) argv[3]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_point", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_point( image, x, y, ink ) ); } /* Description of im_draw_point. */ static im_function draw_point_desc = { "im_draw_point", /* Name */ "draw point on image", 0, /* Flags */ draw_point_vec, /* Dispatch function */ IM_NUMBER( draw_point_args ), /* Size of arg list */ draw_point_args /* Arg list */ }; /* Args for im_read_point. */ static im_arg_desc read_point_args[] = { IM_INPUT_IMAGE( "image" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_OUTPUT_DOUBLEVEC( "ink" ) }; /* Call im_read_point via arg vector. */ static int read_point_vec( im_object *argv ) { IMAGE *image = argv[0]; int x = *((int *) argv[1]); int y = *((int *) argv[2]); im_doublevec_object *dv = (im_doublevec_object *) argv[3]; VipsPel *ink; if( !(ink = IM_ARRAY( image, IM_IMAGE_SIZEOF_PEL( image ), VipsPel )) || im_read_point( image, x, y, ink ) || !(dv->vec = im__ink_to_vector( "im_read_point", image, ink )) ) return( -1 ); dv->n = image->Bands; return( 0 ); } /* Description of im_read_point. */ static im_function read_point_desc = { "im_read_point", /* Name */ "read point from image", 0, /* Flags */ read_point_vec, /* Dispatch function */ IM_NUMBER( read_point_args ), /* Size of arg list */ read_point_args /* Arg list */ }; /* Args for im_draw_line. */ static im_arg_desc draw_line_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "x1" ), IM_INPUT_INT( "y1" ), IM_INPUT_INT( "x2" ), IM_INPUT_INT( "y2" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_line via arg vector. */ static int draw_line_vec( im_object *argv ) { IMAGE *image = argv[0]; int x1 = *((int *) argv[1]); int y1 = *((int *) argv[2]); int x2 = *((int *) argv[3]); int y2 = *((int *) argv[4]); im_doublevec_object *dv = (im_doublevec_object *) argv[5]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_line", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_line( image, x1, y1, x2, y2, ink ) ); } /* Description of im_draw_line. */ static im_function draw_line_desc = { "im_draw_line", /* Name */ "draw line on image", 0, /* Flags */ draw_line_vec, /* Dispatch function */ IM_NUMBER( draw_line_args ), /* Size of arg list */ draw_line_args /* Arg list */ }; /* Args for im_draw_smudge. */ static im_arg_desc draw_smudge_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Call im_draw_smudge via arg vector. */ static int draw_smudge_vec( im_object *argv ) { IMAGE *image = argv[0]; int left = *((int *) argv[1]); int top = *((int *) argv[2]); int width = *((int *) argv[3]); int height = *((int *) argv[4]); return( im_draw_smudge( image, left, top, width, height ) ); } /* Description of im_draw_smudge. */ static im_function draw_smudge_desc = { "im_draw_smudge", /* Name */ "smudge part of an image", 0, /* Flags */ draw_smudge_vec, /* Dispatch function */ IM_NUMBER( draw_smudge_args ), /* Size of arg list */ draw_smudge_args /* Arg list */ }; /* Args for im_draw_rect. */ static im_arg_desc draw_rect_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ), IM_INPUT_INT( "fill" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_rect via arg vector. */ static int draw_rect_vec( im_object *argv ) { IMAGE *image = argv[0]; int left = *((int *) argv[1]); int top = *((int *) argv[2]); int width = *((int *) argv[3]); int height = *((int *) argv[4]); int fill = *((int *) argv[5]); im_doublevec_object *dv = (im_doublevec_object *) argv[6]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_rect", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_rect( image, left, top, width, height, fill, ink ) ); } /* Description of im_draw_rect. */ static im_function draw_rect_desc = { "im_draw_rect", /* Name */ "draw rect on image", 0, /* Flags */ draw_rect_vec, /* Dispatch function */ IM_NUMBER( draw_rect_args ), /* Size of arg list */ draw_rect_args /* Arg list */ }; /* Args for im_draw_circle. */ static im_arg_desc draw_circle_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "cx" ), IM_INPUT_INT( "cy" ), IM_INPUT_INT( "radius" ), IM_INPUT_INT( "fill" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_circle via arg vector. */ static int draw_circle_vec( im_object *argv ) { IMAGE *image = argv[0]; int cx = *((int *) argv[1]); int cy = *((int *) argv[2]); int radius = *((int *) argv[3]); int fill = *((int *) argv[4]); im_doublevec_object *dv = (im_doublevec_object *) argv[5]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_circle", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_circle( image, cx, cy, radius, fill, ink ) ); } /* Description of im_draw_circle. */ static im_function draw_circle_desc = { "im_draw_circle", /* Name */ "draw circle on image", 0, /* Flags */ draw_circle_vec, /* Dispatch function */ IM_NUMBER( draw_circle_args ), /* Size of arg list */ draw_circle_args /* Arg list */ }; /* Package up all these functions. */ static im_function *inplace_list[] = { &draw_circle_desc, &draw_rect_desc, &draw_line_desc, &draw_point_desc, &read_point_desc, &draw_smudge_desc, &draw_flood_desc, &draw_flood_blob_desc, &draw_flood_other_desc, &draw_image_desc, &draw_mask_desc, &lineset_desc }; /* Package of functions. */ im_package im__inplace = { "inplace", IM_NUMBER( inplace_list ), inplace_list }; libvips-8.9.1/libvips/deprecated/lazy.c000066400000000000000000000173511361153320700201040ustar00rootroot00000000000000/* lazy open/save ... compat funcs for old im_open() behaviour * * 30/11/11 * - cut from old image.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include static gboolean vips_format_is_vips( VipsFormatClass *format ) { return( strcmp( VIPS_OBJECT_CLASS( format )->nickname, "vips" ) == 0 ); } /* Lazy open. */ /* What we track during a delayed open. */ typedef struct { VipsImage *image; VipsFormatClass *format;/* Read in pixels with this */ char *filename; /* Get pixels from here */ gboolean sequential; /* Sequential read requested */ VipsImage *real; /* The real decompressed image */ } Lazy; static void lazy_free_cb( VipsImage *image, Lazy *lazy ) { VIPS_DEBUG_MSG( "lazy_free: %p \"%s\"\n", lazy, lazy->filename ); g_free( lazy->filename ); VIPS_UNREF( lazy->real ); g_free( lazy ); } static Lazy * lazy_new( VipsImage *image, VipsFormatClass *format, const char *filename, gboolean sequential ) { Lazy *lazy; lazy = g_new( Lazy, 1 ); VIPS_DEBUG_MSG( "lazy_new: %p \"%s\"\n", lazy, filename ); lazy->image = image; lazy->format = format; lazy->filename = g_strdup( filename ); lazy->sequential = sequential; lazy->real = NULL; g_signal_connect( image, "close", G_CALLBACK( lazy_free_cb ), lazy ); return( lazy ); } static size_t disc_threshold( void ) { static gboolean done = FALSE; static size_t threshold; if( !done ) { const char *env; done = TRUE; /* 100mb default. */ threshold = 100 * 1024 * 1024; if( (env = g_getenv( "IM_DISC_THRESHOLD" )) ) threshold = vips__parse_size( env ); if( vips__disc_threshold ) threshold = vips__parse_size( vips__disc_threshold ); VIPS_DEBUG_MSG( "disc_threshold: %zd bytes\n", threshold ); } return( threshold ); } /* Make the real underlying image: either a direct disc file, or a temp file * somewhere. */ static VipsImage * lazy_real_image( Lazy *lazy ) { VipsImage *real; /* We open via disc if: * - 'sequential' is not set * - disc_threshold() has not been set to zero * - the format does not support lazy read * - the uncompressed image will be larger than disc_threshold() */ real = NULL; if( !lazy->sequential && disc_threshold() && !(vips_format_get_flags( lazy->format, lazy->filename ) & VIPS_FORMAT_PARTIAL) && VIPS_IMAGE_SIZEOF_IMAGE( lazy->image ) > disc_threshold() ) if( !(real = vips_image_new_temp_file( "%s.v" )) ) return( NULL ); /* Otherwise, fall back to a "p". */ if( !real && !(real = vips_image_new()) ) return( NULL ); return( real ); } /* Our start function ... do the lazy open, if necessary, and return a region * on the new image. */ static void * open_lazy_start( VipsImage *out, void *a, void *dummy ) { Lazy *lazy = (Lazy *) a; if( !lazy->real ) { if( !(lazy->real = lazy_real_image( lazy )) || lazy->format->load( lazy->filename, lazy->real ) || vips_image_pio_input( lazy->real ) ) { VIPS_UNREF( lazy->real ); return( NULL ); } } return( vips_region_new( lazy->real ) ); } /* Just copy. */ static int open_lazy_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; /* Ask for input we need. */ if( vips_region_prepare( ir, r ) ) return( -1 ); /* Attach output region to that. */ if( vips_region_region( or, ir, r, r->left, r->top ) ) return( -1 ); return( 0 ); } /* Lazy open ... init the header with the first OpenLazyFn, delay actually * decoding pixels with the second OpenLazyFn until the first generate(). */ static int vips_image_open_lazy( VipsImage *image, VipsFormatClass *format, const char *filename, gboolean sequential ) { Lazy *lazy; lazy = lazy_new( image, format, filename, sequential ); /* Is there a ->header() function? We need to do a lazy load. */ if( format->header ) { /* Read header fields to init the return image. */ if( format->header( filename, image ) ) return( -1 ); /* Then 'start' creates the real image and 'gen' paints 'image' * with pixels from the real image on demand. */ vips_image_pipelinev( image, image->dhint, NULL ); if( vips_image_generate( image, open_lazy_start, open_lazy_generate, vips_stop_one, lazy, NULL ) ) return( -1 ); } else if( format->load ) { if( format->load( filename, image ) ) return( -1 ); } else g_assert( 0 ); return( 0 ); } /* Lazy save. */ /* If we write to (eg.) TIFF, actually do the write * to a "p" and on "written" do im_vips2tiff() or whatever. Track save * parameters here. */ typedef int (*VipsSaveFn)( VipsImage *image, const char *filename ); typedef struct { VipsSaveFn save_fn; /* Save function */ char *filename; /* Save args */ } SaveBlock; /* From "written" callback: invoke a delayed save. */ static void vips_image_save_cb( VipsImage *image, int *result, SaveBlock *sb ) { if( sb->save_fn( image, sb->filename ) ) *result = -1; g_free( sb->filename ); g_free( sb ); } static void vips_attach_save( VipsImage *image, VipsSaveFn save_fn, const char *filename ) { SaveBlock *sb; sb = g_new( SaveBlock, 1 ); sb->save_fn = save_fn; sb->filename = g_strdup( filename ); g_signal_connect( image, "written", G_CALLBACK( vips_image_save_cb ), sb ); } IMAGE * vips__deprecated_open_read( const char *filename, gboolean sequential ) { VipsFormatClass *format; if( !(format = vips_format_for_file( filename )) ) return( NULL ); if( vips_format_is_vips( format ) ) { /* For vips format, we can just the main vips path. */ return( vips_image_new_mode( filename, "rd" ) ); } else { /* For non-vips formats we must go via the old VipsFormat * system to make sure we support the "filename:options" * syntax. */ IMAGE *image; image = vips_image_new(); if( vips_image_open_lazy( image, format, filename, sequential ) ) { g_object_unref( image ); return( NULL ); } /* Yuk. Can't g_object_set() filename since it's after * construct. Just zap the new filename in. */ VIPS_SETSTR( image->filename, filename ); return( image ); } } IMAGE * vips__deprecated_open_write( const char *filename ) { VipsFormatClass *format; if( !(format = vips_format_for_name( filename )) ) return( NULL ); if( vips_format_is_vips( format ) ) /* For vips format, we can just the main vips path. */ return( vips_image_new_mode( filename, "w" ) ); else { /* For non-vips formats we must go via the old VipsFormat * system to make sure we support the "filename:options" * syntax. */ IMAGE *image; if( !(image = vips_image_new()) ) return( NULL ); vips_attach_save( image, format->save, filename ); return( image ); } } libvips-8.9.1/libvips/deprecated/mask_dispatch.c000066400000000000000000000323431361153320700217350ustar00rootroot00000000000000/* VIPS function dispatch tables for matricies. * * J. Cupitt, 14/2/95. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* One matrix in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_DMASK( "in" ), IM_OUTPUT_DMASK( "out" ) }; /* Two matricies in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_DMASK( "in1" ), IM_INPUT_DMASK( "in2" ), IM_OUTPUT_DMASK( "out" ) }; /* Call im_matinv via arg vector. */ static int matinv_vec( im_object *argv ) { im_mask_object *in = argv[0]; im_mask_object *out = argv[1]; if( !(out->mask = im_matinv( in->mask, out->name )) ) return( -1 ); return( 0 ); } /* Description of im_matinv. */ static im_function matinv_desc = { "im_matinv", /* Name */ "invert matrix", 0, /* Flags */ matinv_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_mattrn via arg vector. */ static int mattrn_vec( im_object *argv ) { im_mask_object *in = argv[0]; im_mask_object *out = argv[1]; if( !(out->mask = im_mattrn( in->mask, out->name )) ) return( -1 ); return( 0 ); } /* Description of im_mattrn. */ static im_function mattrn_desc = { "im_mattrn", /* Name */ "transpose matrix", 0, /* Flags */ mattrn_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_matcat via arg vector. */ static int matcat_vec( im_object *argv ) { im_mask_object *in1 = argv[0]; im_mask_object *in2 = argv[1]; im_mask_object *out = argv[2]; if( !(out->mask = im_matcat( in1->mask, in2->mask, out->name )) ) return( -1 ); return( 0 ); } /* Description of im_matcat. */ static im_function matcat_desc = { "im_matcat", /* Name */ "append matrix in2 to the end of matrix in1", 0, /* Flags */ matcat_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_matmul via arg vector. */ static int matmul_vec( im_object *argv ) { im_mask_object *in1 = argv[0]; im_mask_object *in2 = argv[1]; im_mask_object *out = argv[2]; if( !(out->mask = im_matmul( in1->mask, in2->mask, out->name )) ) return( -1 ); return( 0 ); } /* Description of im_matmul. */ static im_function matmul_desc = { "im_matmul", /* Name */ "multiply matrix in1 by matrix in2", 0, /* Flags */ matmul_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Args for im_read_dmask() */ static im_arg_desc read_dmask_args[] = { IM_INPUT_STRING( "filename" ), IM_OUTPUT_DMASK( "mask" ) }; /* Call im_read_dmask via arg vector. */ static int read_dmask_vec( im_object *argv ) { im_mask_object *mo = argv[1]; if( !(mo->mask = im_read_dmask( argv[0] )) ) return( -1 ); return( 0 ); } /* Description of im_read_dmask(). */ static im_function read_dmask_desc = { "im_read_dmask", /* Name */ "read matrix of double from file", 0, /* Flags */ read_dmask_vec, /* Dispatch function */ IM_NUMBER( read_dmask_args ), /* Size of arg list */ read_dmask_args /* Arg list */ }; /* Args for im_gauss_dmask. */ static im_arg_desc gauss_dmask_args[] = { IM_OUTPUT_DMASK( "mask" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "min_amp" ) }; /* Call im_gauss_dmask via arg vector. */ static int gauss_dmask_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_gauss_dmask( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_gauss_dmask. */ static im_function gauss_dmask_desc = { "im_gauss_dmask", /* Name */ "generate gaussian DOUBLEMASK", 0, /* Flags */ gauss_dmask_vec, /* Dispatch function */ IM_NUMBER( gauss_dmask_args ), /* Size of arg list */ gauss_dmask_args /* Arg list */ }; /* Call im_gauss_dmask_sep via arg vector. */ static int gauss_dmask_sep_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_gauss_dmask_sep( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_gauss_dmask_sep. */ static im_function gauss_dmask_sep_desc = { "im_gauss_dmask_sep", /* Name */ "generate separable gaussian DOUBLEMASK", 0, /* Flags */ gauss_dmask_sep_vec, /* Dispatch function */ IM_NUMBER( gauss_dmask_args ), /* Size of arg list */ gauss_dmask_args /* Arg list */ }; /* Args for im_gauss_imask. */ static im_arg_desc gauss_imask_args[] = { IM_OUTPUT_IMASK( "mask" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "min_amp" ) }; /* Call im_gauss_imask via arg vector. */ static int gauss_imask_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_gauss_imask( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_gauss_imask. */ static im_function gauss_imask_desc = { "im_gauss_imask", /* Name */ "generate gaussian INTMASK", 0, /* Flags */ gauss_imask_vec, /* Dispatch function */ IM_NUMBER( gauss_imask_args ), /* Size of arg list */ gauss_imask_args /* Arg list */ }; /* Call im_gauss_imask_sep via arg vector. */ static int gauss_imask_sep_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_gauss_imask_sep( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_gauss_imask_sep. */ static im_function gauss_imask_sep_desc = { "im_gauss_imask_sep", /* Name */ "generate separable gaussian INTMASK", 0, /* Flags */ gauss_imask_sep_vec, /* Dispatch function */ IM_NUMBER( gauss_imask_args ), /* Size of arg list */ gauss_imask_args /* Arg list */ }; /* Args for im_log_imask. */ static im_arg_desc log_imask_args[] = { IM_OUTPUT_IMASK( "mask" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "min_amp" ) }; /* Call im_log_imask via arg vector. */ static int log_imask_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_log_imask( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_log_imask. */ static im_function log_imask_desc = { "im_log_imask", /* Name */ "generate laplacian of gaussian INTMASK", 0, /* Flags */ log_imask_vec, /* Dispatch function */ IM_NUMBER( log_imask_args ), /* Size of arg list */ log_imask_args /* Arg list */ }; /* Args for im_log_dmask. */ static im_arg_desc log_dmask_args[] = { IM_OUTPUT_DMASK( "maskfile" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "min_amp" ) }; /* Call im_log_dmask via arg vector. */ static int log_dmask_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_log_dmask( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_log_dmask. */ static im_function log_dmask_desc = { "im_log_dmask", /* Name */ "generate laplacian of gaussian DOUBLEMASK", 0, /* Flags */ log_dmask_vec, /* Dispatch function */ IM_NUMBER( log_dmask_args ), /* Size of arg list */ log_dmask_args /* Arg list */ }; static im_arg_desc imask_args[] = { IM_INPUT_IMASK( "in" ), IM_OUTPUT_IMASK( "out" ) }; static im_arg_desc dmask_args[] = { IM_INPUT_DMASK( "in" ), IM_OUTPUT_DMASK( "out" ) }; /* Call im_rotate_imask45 via arg vector. */ static int rotate_imask45_vec( im_object *argv ) { im_mask_object *min = argv[0]; im_mask_object *mout = argv[1]; if( !(mout->mask = im_rotate_imask45( min->mask, mout->name )) ) return( -1 ); return( 0 ); } /* Description of im_rotate_imask45. */ static im_function rotate_imask45_desc = { "im_rotate_imask45", /* Name */ "rotate INTMASK clockwise by 45 degrees", 0, /* Flags */ rotate_imask45_vec, /* Dispatch function */ IM_NUMBER( imask_args ), /* Size of arg list */ imask_args /* Arg list */ }; /* Call im_rotate_imask90 via arg vector. */ static int rotate_imask90_vec( im_object *argv ) { im_mask_object *min = argv[0]; im_mask_object *mout = argv[1]; if( !(mout->mask = im_rotate_imask90( min->mask, mout->name )) ) return( -1 ); return( 0 ); } /* Description of im_rotate_imask90. */ static im_function rotate_imask90_desc = { "im_rotate_imask90", /* Name */ "rotate INTMASK clockwise by 90 degrees", 0, /* Flags */ rotate_imask90_vec, /* Dispatch function */ IM_NUMBER( imask_args ), /* Size of arg list */ imask_args /* Arg list */ }; /* Call im_rotate_dmask45 via arg vector. */ static int rotate_dmask45_vec( im_object *argv ) { im_mask_object *min = argv[0]; im_mask_object *mout = argv[1]; if( !(mout->mask = im_rotate_dmask45( min->mask, mout->name )) ) return( -1 ); return( 0 ); } /* Description of im_rotate_dmask45. */ static im_function rotate_dmask45_desc = { "im_rotate_dmask45", /* Name */ "rotate DOUBLEMASK clockwise by 45 degrees", 0, /* Flags */ rotate_dmask45_vec, /* Dispatch function */ IM_NUMBER( dmask_args ), /* Size of arg list */ dmask_args /* Arg list */ }; /* Call im_rotate_dmask90 via arg vector. */ static int rotate_dmask90_vec( im_object *argv ) { im_mask_object *min = argv[0]; im_mask_object *mout = argv[1]; if( !(mout->mask = im_rotate_dmask90( min->mask, mout->name )) ) return( -1 ); return( 0 ); } /* Description of im_rotate_dmask90. */ static im_function rotate_dmask90_desc = { "im_rotate_dmask90", /* Name */ "rotate DOUBLEMASK clockwise by 90 degrees", 0, /* Flags */ rotate_dmask90_vec, /* Dispatch function */ IM_NUMBER( dmask_args ), /* Size of arg list */ dmask_args /* Arg list */ }; static int imask_xsize_vec( im_object *argv ) { *( (int*) argv[1] )= ( (INTMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> xsize; return 0; } static int imask_ysize_vec( im_object *argv ) { *( (int*) argv[1] )= ( (INTMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> ysize; return 0; } static int dmask_xsize_vec( im_object *argv ) { *( (int*) argv[1] )= ( (DOUBLEMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> xsize; return 0; } static int dmask_ysize_vec( im_object *argv ) { *( (int*) argv[1] )= ( (DOUBLEMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> ysize; return 0; } static im_arg_desc imask_size_args[] = { IM_INPUT_IMASK( "mask" ), IM_OUTPUT_INT( "size" ) }; static im_arg_desc dmask_size_args[] = { IM_INPUT_DMASK( "mask" ), IM_OUTPUT_INT( "size" ) }; static im_function imask_xsize_desc = { "im_imask_xsize", /* Name */ "horizontal size of an intmask", /* Description */ 0, /* Flags */ imask_xsize_vec, /* Dispatch function */ IM_NUMBER( imask_size_args ), /* Size of arg list */ imask_size_args /* Arg list */ }; static im_function imask_ysize_desc = { "im_imask_ysize", /* Name */ "vertical size of an intmask", /* Description */ 0, /* Flags */ imask_ysize_vec, /* Dispatch function */ IM_NUMBER( imask_size_args ), /* Size of arg list */ imask_size_args /* Arg list */ }; static im_function dmask_xsize_desc = { "im_dmask_xsize", /* Name */ "horizontal size of a doublemask", /* Description */ 0, /* Flags */ dmask_xsize_vec, /* Dispatch function */ IM_NUMBER( dmask_size_args ), /* Size of arg list */ dmask_size_args /* Arg list */ }; static im_function dmask_ysize_desc = { "im_dmask_ysize", /* Name */ "vertical size of a doublemask", /* Description */ 0, /* Flags */ dmask_ysize_vec, /* Dispatch function */ IM_NUMBER( dmask_size_args ), /* Size of arg list */ dmask_size_args /* Arg list */ }; /* Package up all these functions. */ static im_function *mask_list[] = { &gauss_dmask_desc, &gauss_dmask_sep_desc, &log_dmask_desc, &log_imask_desc, &gauss_imask_desc, &gauss_imask_sep_desc, &dmask_xsize_desc, &dmask_ysize_desc, &imask_xsize_desc, &imask_ysize_desc, &read_dmask_desc, &rotate_dmask45_desc, &rotate_dmask90_desc, &rotate_imask45_desc, &rotate_imask90_desc, &matcat_desc, &matinv_desc, &matmul_desc, &mattrn_desc }; /* Package of functions. */ im_package im__mask = { "mask", IM_NUMBER( mask_list ), mask_list }; libvips-8.9.1/libvips/deprecated/matalloc.c000066400000000000000000000111101361153320700207040ustar00rootroot00000000000000/* @(#) Programs for allocating and freeing matrices * @(#) pages 705- of numerical recipes in C 1998 * @(#) */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #define TINY 1.0e-200 /* @(#) Allocates and returns an pointer at the beginning of * @(#) an integer array array[nl,nh] or * @(#) float array array[nl,nh] or * @(#) double array array[nl,nh] * @(#) * @(#) Right call * @(#) int *im_ivector(nl, nh) * @(#) int nl, nh; * @(#) returns a pointer to an int array or NULL on error * @(#) * @(#) Right call * @(#) float *im_fvector(nl, nh) * @(#) int nl, nh; * @(#) returns a pointer to a float array or NULL on error * @(#) * @(#) Right call * @(#) double *im_dvector(nl, nh) * @(#) int nl, nh; * @(#) returns a pointer to a double array or NULL on error * @(#) * @(#) The following functions free the array allocated by the functions above * @(#) * @(#) void im_free_ivector(v, nl, nh) * @(#) int *v; * @(#) int nl, nh; * @(#) * @(#) void im_free_fvector(v, nl, nh) * @(#) float *v; * @(#) int nl, nh; * @(#) * @(#) void im_free_dvector(v, nl, nh) * @(#) double *v; * @(#) int nl, nh; * @(#) */ int * im_ivector(int nl, int nh) { int *v; v = (int *)im_malloc(NULL,(unsigned)(nh - nl + 1) * sizeof(int)); if (v == NULL) return(NULL); else return(v-nl); } float *im_fvector(int nl, int nh) { float *v; v = (float *)im_malloc(NULL,(unsigned)(nh - nl + 1) * sizeof(float)); if (v == NULL) return(NULL); else return(v-nl); } double *im_dvector(int nl, int nh) { double *v; v = (double *)im_malloc(NULL,(unsigned)(nh - nl + 1) * sizeof(double)); if (v == NULL) return(NULL); else return(v-nl); } void im_free_ivector(int *v, int nl, int nh) { im_free((char*) (v+nl)); } void im_free_fvector(float *v, int nl, int nh) { im_free((char*) (v+nl)); } void im_free_dvector(double *v, int nl, int nh) { im_free((char*) (v+nl)); } /* @(#) Allocates and returns an pointer at the beginning of * @(#) an int, float or double, two dimensional matrix[nrl,nrh][ncl,nch] * @(#) * @(#) Right call * @(#) int **im_imat_alloc(nrl, nrh, ncl, nch) * @(#) int nrl, nrh, ncl, nch; * @(#) returns a pointer to an int matrix or NULL on error * @(#) * @(#) float **im_fmat_alloc(nrl, nrh, ncl, nch) * @(#) int nrl, nrh, ncl, nch; * @(#) returns a pointer to an int matrix or NULL on error * @(#) * @(#) double **im_dmat_alloc(nrl, nrh, ncl, nch) * @(#) int nrl, nrh, ncl, nch; * @(#) returns a pointer to a double matrix or NULL on error * @(#) * @(#) The following routines free the matrix allocated by the functions above * @(#) void im_free_imat(m, nrl, nrh, ncl, nch) * @(#) int **m; * @(#) int nrl, nrh, ncl, nch; * @(#) * @(#) void im_free_fmat(m, nrl, nrh, ncl, nch) * @(#) float **m; * @(#) int nrl, nrh, ncl, nch; * @(#) * @(#) void im_free_dmat(m, nrl, nrh, ncl, nch) * @(#) double **m; * @(#) int nrl, nrh, ncl, nch; * @(#) */ int **im_imat_alloc(int nrl, int nrh, int ncl, int nch) { int i; int **m; m = (int**)im_malloc(NULL,(unsigned)(nrh-nrl+1) * sizeof(int *)); if (m == NULL) return(NULL); m -= nrl; for (i=nrl; i<=nrh; i++) { m[i] = (int *)im_malloc(NULL,(unsigned) (nch-ncl+1) * sizeof(int)); if (m[i] == NULL) return(NULL); m[i] -= ncl; } return (m); } void im_free_imat(int **m, int nrl, int nrh, int ncl, int nch) { int i; for (i=nrh; i>=nrl; i--) im_free((char*) (m[i]+ncl)); im_free((char*) (m+nrl)); } float **im_fmat_alloc(int nrl, int nrh, int ncl, int nch) { int i; float **m; m = (float**)im_malloc(NULL,(unsigned)(nrh-nrl+1) * sizeof(float *)); if (m == NULL) return(NULL); m -= nrl; for (i=nrl; i<=nrh; i++) { m[i] = (float *)im_malloc(NULL,(unsigned) (nch-ncl+1) * sizeof(float)); if (m[i] == NULL) return(NULL); m[i] -= ncl; } return (m); } void im_free_fmat(float **m, int nrl, int nrh, int ncl, int nch) { int i; for (i=nrh; i>=nrl; i--) im_free((char*) (m[i]+ncl)); im_free((char*) (m+nrl)); } double **im_dmat_alloc(int nrl, int nrh, int ncl, int nch) { int i; double **m; m = (double**)im_malloc(NULL,(unsigned)(nrh-nrl+1) * sizeof(double *)); if (m == NULL) return(NULL); m -= nrl; for (i=nrl; i<=nrh; i++) { m[i] = (double *)im_malloc(NULL,(unsigned) (nch-ncl+1) * sizeof(double)); if (m[i] == NULL) return(NULL); m[i] -= ncl; } return (m); } void im_free_dmat(double **m, int nrl, int nrh, int ncl, int nch) { int i; for (i=nrh; i>=nrl; i--) im_free((char*) (m[i]+ncl)); im_free((char*) (m+nrl)); } libvips-8.9.1/libvips/deprecated/matlab.c000066400000000000000000000040731361153320700203620ustar00rootroot00000000000000/* Read matlab save files with libmatio * * 20/12/11 * - just a compat stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include int im_mat2vips( const char *filename, IMAGE *out ) { VipsImage *t; if( vips_matload( filename, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int ismat( const char *filename ) { return( vips_foreign_is_a( "matload", filename ) ); } static const char *mat_suffs[] = { ".mat", NULL }; typedef VipsFormat VipsFormatMat; typedef VipsFormatClass VipsFormatMatClass; static void vips_format_mat_class_init( VipsFormatMatClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "mat"; object_class->description = _( "Matlab" ); format_class->is_a = ismat; format_class->load = im_mat2vips; format_class->save = NULL; format_class->suffs = mat_suffs; } static void vips_format_mat_init( VipsFormatMat *object ) { } G_DEFINE_TYPE( VipsFormatMat, vips_format_mat, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/morph_dispatch.c000066400000000000000000000155331361153320700221310ustar00rootroot00000000000000/* VIPS function dispatch tables for morphology. * * J. Cupitt, 19/9/95 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* Args to im_profile. */ static im_arg_desc profile_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "direction" ) }; /* Call im_profile via arg vector. */ static int profile_vec( im_object *argv ) { int dir = *((int *) argv[2]); return( im_profile( argv[0], argv[1], dir ) ); } /* Description of im_profile. */ static im_function profile_desc = { "im_profile", /* Name */ "find first horizontal/vertical edge", /* Descr. */ IM_FN_TRANSFORM, /* Flags */ profile_vec, /* Dispatch function */ IM_NUMBER( profile_args ), /* Size of arg list */ profile_args /* Arg list */ }; /* Args to im_erode. */ static im_arg_desc erode_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMASK( "mask" ) }; /* Call im_dilate via arg vector. */ static int dilate_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_dilate( argv[0], argv[1], mo->mask ) ); } /* Description of im_dilate. */ static im_function dilate_desc = { "im_dilate", /* Name */ "dilate image with mask, adding a black border", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ dilate_vec, /* Dispatch function */ IM_NUMBER( erode_args ), /* Size of arg list */ erode_args /* Arg list */ }; /* Call im_erode via arg vector. */ static int erode_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_erode( argv[0], argv[1], mo->mask ) ); } /* Description of im_erode. */ static im_function erode_desc = { "im_erode", /* Name */ "erode image with mask, adding a black border", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ erode_vec, /* Dispatch function */ IM_NUMBER( erode_args ), /* Size of arg list */ erode_args /* Arg list */ }; /* Args to im_cntlines. */ static im_arg_desc cntlines_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_DOUBLE( "nlines" ), IM_INPUT_INT( "direction" ) }; /* Call im_cntlines via arg vector. */ static int cntlines_vec( im_object *argv ) { double *out = (double *) argv[1]; int dir = *((int *) argv[2]); return( im_cntlines( argv[0], out, dir ) ); } /* Description of im_cntlines. */ static im_function cntlines_desc = { "im_cntlines", /* Name */ "count horizontal or vertical lines", 0, /* Flags */ cntlines_vec, /* Dispatch function */ IM_NUMBER( cntlines_args ), /* Size of arg list */ cntlines_args /* Arg list */ }; /* Args to im_rank. */ static im_arg_desc rank_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ), IM_INPUT_INT( "n" ) }; /* Call im_rank via arg vector. */ static int rank_vec( im_object *argv ) { int xsize = *((int *) argv[2]); int ysize = *((int *) argv[3]); int n = *((int *) argv[4]); return( im_rank( argv[0], argv[1], xsize, ysize, n ) ); } /* Description of im_rank. */ static im_function rank_desc = { "im_rank", /* Name */ "rank filter nth element of xsize/ysize window", IM_FN_PIO, /* Flags */ rank_vec, /* Dispatch function */ IM_NUMBER( rank_args ), /* Size of arg list */ rank_args /* Arg list */ }; /* Args for im_zerox. */ static im_arg_desc zerox_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "flag" ) }; /* Call im_zerox via arg vector. */ static int zerox_vec( im_object *argv ) { int flag = *((int *) argv[2]); return( im_zerox( argv[0], argv[1], flag ) ); } /* Description of im_zerox. */ static im_function zerox_desc = { "im_zerox", /* Name */ "find +ve or -ve zero crossings in image", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ zerox_vec, /* Dispatch function */ IM_NUMBER( zerox_args ), /* Size of arg list */ zerox_args /* Arg list */ }; static im_arg_desc maxvalue_args[] = { IM_INPUT_IMAGEVEC( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static int maxvalue_vec( im_object *argv ) { im_imagevec_object *iv = (im_imagevec_object *) argv[0]; return( im_maxvalue( iv->vec, argv[1], iv->n ) ); } static im_function maxvalue_desc = { "im_maxvalue", /* Name */ "point-wise maximum value", /* Description */ IM_FN_PIO, /* Flags */ maxvalue_vec, /* Dispatch function */ IM_NUMBER( maxvalue_args ), /* Size of arg list */ maxvalue_args /* Arg list */ }; static im_arg_desc rank_image_args[] = { IM_INPUT_IMAGEVEC( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "index" ) }; static int rank_image_vec( im_object *argv ) { im_imagevec_object *iv = (im_imagevec_object *) argv[0]; int index = *((int *) argv[2]); return( im_rank_image( iv->vec, argv[1], iv->n, index ) ); } static im_function rank_image_desc = { "im_rank_image", /* Name */ "point-wise pixel rank", /* Description */ IM_FN_PIO, /* Flags */ rank_image_vec, /* Dispatch function */ IM_NUMBER( rank_image_args ), /* Size of arg list */ rank_image_args /* Arg list */ }; /* Args for im_label_regions(). */ static im_arg_desc label_regions_args[] = { IM_INPUT_IMAGE( "test" ), IM_OUTPUT_IMAGE( "mask" ), IM_OUTPUT_INT( "segments" ) }; /* Call im_label_regions() via arg vector. */ static int label_regions_vec( im_object *argv ) { IMAGE *test = argv[0]; IMAGE *mask = argv[1]; int *serial = (int *) argv[2]; return( im_label_regions( test, mask, serial ) ); } /* Description of im_label_regions(). */ static im_function label_regions_desc = { "im_label_regions", /* Name */ "number continuous regions in an image", 0, /* Flags */ label_regions_vec, /* Dispatch function */ IM_NUMBER( label_regions_args ),/* Size of arg list */ label_regions_args /* Arg list */ }; /* Package up all these functions. */ static im_function *morph_list[] = { &cntlines_desc, &dilate_desc, &rank_desc, &rank_image_desc, &maxvalue_desc, &label_regions_desc, &zerox_desc, &erode_desc, &profile_desc }; /* Package of functions. */ im_package im__morphology = { "morphology", IM_NUMBER( morph_list ), morph_list }; libvips-8.9.1/libvips/deprecated/mosaicing_dispatch.c000066400000000000000000000452131361153320700227530ustar00rootroot00000000000000/* Function dispatch tables for mosaicing. * * J. Cupitt, 23/2/95 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* Merge args. */ static im_arg_desc merge_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "dx" ), IM_INPUT_INT( "dy" ), IM_INPUT_INT( "mwidth" ) }; /* Merge1 args. */ static im_arg_desc merge1_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xr1" ), IM_INPUT_INT( "yr1" ), IM_INPUT_INT( "xs1" ), IM_INPUT_INT( "ys1" ), IM_INPUT_INT( "xr2" ), IM_INPUT_INT( "yr2" ), IM_INPUT_INT( "xs2" ), IM_INPUT_INT( "ys2" ), IM_INPUT_INT( "mwidth" ) }; /* Mosaic args. */ static im_arg_desc mosaic_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "bandno" ), IM_INPUT_INT( "xr" ), IM_INPUT_INT( "yr" ), IM_INPUT_INT( "xs" ), IM_INPUT_INT( "ys" ), IM_INPUT_INT( "halfcorrelation" ), IM_INPUT_INT( "halfarea" ), IM_INPUT_INT( "balancetype" ), IM_INPUT_INT( "mwidth" ) }; /* Mosaic1 args. */ static im_arg_desc mosaic1_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "bandno" ), IM_INPUT_INT( "xr1" ), IM_INPUT_INT( "yr1" ), IM_INPUT_INT( "xs1" ), IM_INPUT_INT( "ys1" ), IM_INPUT_INT( "xr2" ), IM_INPUT_INT( "yr2" ), IM_INPUT_INT( "xs2" ), IM_INPUT_INT( "ys2" ), IM_INPUT_INT( "halfcorrelation" ), IM_INPUT_INT( "halfarea" ), IM_INPUT_INT( "balancetype" ), IM_INPUT_INT( "mwidth" ) }; /* Call im_lrmosaic via arg vector. */ static int lrmosaic_vec( im_object *argv ) { int bandno = *((int *) argv[3]); int xr = *((int *) argv[4]); int yr = *((int *) argv[5]); int xs = *((int *) argv[6]); int ys = *((int *) argv[7]); int halfcorrelation = *((int *) argv[8]); int halfarea = *((int *) argv[9]); int balancetype = *((int *) argv[10]); int mwidth = *((int *) argv[11]); return( im_lrmosaic( argv[0], argv[1], argv[2], bandno, xr, yr, xs, ys, halfcorrelation, halfarea, balancetype, mwidth ) ); } /* Call im_lrmosaic1 via arg vector. */ static int lrmosaic1_vec( im_object *argv ) { int bandno = *((int *) argv[3]); int xr1 = *((int *) argv[4]); int yr1 = *((int *) argv[5]); int xs1 = *((int *) argv[6]); int ys1 = *((int *) argv[7]); int xr2 = *((int *) argv[8]); int yr2 = *((int *) argv[9]); int xs2 = *((int *) argv[10]); int ys2 = *((int *) argv[11]); int halfcorrelation = *((int *) argv[12]); int halfarea = *((int *) argv[13]); int balancetype = *((int *) argv[14]); int mwidth = *((int *) argv[15]); return( im_lrmosaic1( argv[0], argv[1], argv[2], bandno, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, halfcorrelation, halfarea, balancetype, mwidth ) ); } /* Description of im_lrmosaic. */ static im_function lrmosaic_desc = { "im_lrmosaic", /* Name */ "left-right mosaic of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ lrmosaic_vec, /* Dispatch function */ IM_NUMBER( mosaic_args ), /* Size of arg list */ mosaic_args /* Arg list */ }; static im_arg_desc find_overlap_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_INPUT_INT( "bandno" ), IM_INPUT_INT( "xr" ), IM_INPUT_INT( "yr" ), IM_INPUT_INT( "xs" ), IM_INPUT_INT( "ys" ), IM_INPUT_INT( "halfcorrelation" ), IM_INPUT_INT( "halfarea" ), IM_OUTPUT_INT( "dx0" ), IM_OUTPUT_INT( "dy0" ), IM_OUTPUT_DOUBLE( "scale1" ), IM_OUTPUT_DOUBLE( "angle1" ), IM_OUTPUT_DOUBLE( "dx1" ), IM_OUTPUT_DOUBLE( "dy1" ) }; /* Call im__find_lroverlap via arg vector. */ static int find_lroverlap_vec( im_object *argv ) { int bandno = *((int *) argv[2]); int xr = *((int *) argv[3]); int yr = *((int *) argv[4]); int xs = *((int *) argv[5]); int ys = *((int *) argv[6]); int halfcorrelation = *((int *) argv[7]); int halfarea = *((int *) argv[8]); int *dx0 = (int *) argv[9]; int *dy0 = (int *) argv[10]; double *scale1 = (double *) argv[11]; double *angle1 = (double *) argv[12]; double *dx1 = (double *) argv[13]; double *dy1 = (double *) argv[14]; IMAGE *t; int result; if( !(t = im_open( "find_lroverlap_vec", "p" )) ) return( -1 ); result = im__find_lroverlap( argv[0], argv[1], t, bandno, xr, yr, xs, ys, halfcorrelation, halfarea, dx0, dy0, scale1, angle1, dx1, dy1 ); im_close( t ); return( result ); } /* Description of im__find_lroverlap. */ static im_function find_lroverlap_desc = { "im__find_lroverlap", /* Name */ "search for left-right overlap of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ find_lroverlap_vec, /* Dispatch function */ IM_NUMBER( find_overlap_args ), /* Size of arg list */ find_overlap_args /* Arg list */ }; /* Description of im_lrmosaic1. */ static im_function lrmosaic1_desc = { "im_lrmosaic1", /* Name */ "first-order left-right mosaic of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ lrmosaic1_vec, /* Dispatch function */ IM_NUMBER( mosaic1_args ), /* Size of arg list */ mosaic1_args /* Arg list */ }; /* Call im_tbmosaic via arg vector. */ static int tbmosaic_vec( im_object *argv ) { int bandno = *((int *) argv[3]); int x1 = *((int *) argv[4]); int y1 = *((int *) argv[5]); int x2 = *((int *) argv[6]); int y2 = *((int *) argv[7]); int halfcorrelation = *((int *) argv[8]); int halfarea = *((int *) argv[9]); int balancetype = *((int *) argv[10]); int mwidth = *((int *) argv[11]); return( im_tbmosaic( argv[0], argv[1], argv[2], bandno, x1, y1, x2, y2, halfcorrelation, halfarea, balancetype, mwidth ) ); } /* Call im_tbmosaic1 via arg vector. */ static int tbmosaic1_vec( im_object *argv ) { int bandno = *((int *) argv[3]); int xr1 = *((int *) argv[4]); int yr1 = *((int *) argv[5]); int xs1 = *((int *) argv[6]); int ys1 = *((int *) argv[7]); int xr2 = *((int *) argv[8]); int yr2 = *((int *) argv[9]); int xs2 = *((int *) argv[10]); int ys2 = *((int *) argv[11]); int halfcorrelation = *((int *) argv[12]); int halfarea = *((int *) argv[13]); int balancetype = *((int *) argv[14]); int mwidth = *((int *) argv[15]); return( im_tbmosaic1( argv[0], argv[1], argv[2], bandno, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, halfcorrelation, halfarea, balancetype, mwidth ) ); } /* Call im__find_tboverlap via arg vector. */ static int find_tboverlap_vec( im_object *argv ) { int bandno = *((int *) argv[2]); int xr = *((int *) argv[3]); int yr = *((int *) argv[4]); int xs = *((int *) argv[5]); int ys = *((int *) argv[6]); int halfcorrelation = *((int *) argv[7]); int halfarea = *((int *) argv[8]); int *dx0 = (int *) argv[9]; int *dy0 = (int *) argv[10]; double *scale1 = (double *) argv[11]; double *angle1 = (double *) argv[12]; double *dx1 = (double *) argv[13]; double *dy1 = (double *) argv[14]; IMAGE *t; int result; if( !(t = im_open( "find_tboverlap_vec", "p" )) ) return( -1 ); result = im__find_tboverlap( argv[0], argv[1], t, bandno, xr, yr, xs, ys, halfcorrelation, halfarea, dx0, dy0, scale1, angle1, dx1, dy1 ); im_close( t ); return( result ); } /* Description of im__find_tboverlap. */ static im_function find_tboverlap_desc = { "im__find_tboverlap", /* Name */ "search for top-bottom overlap of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ find_tboverlap_vec, /* Dispatch function */ IM_NUMBER( find_overlap_args ), /* Size of arg list */ find_overlap_args /* Arg list */ }; /* Description of im_tbmosaic. */ static im_function tbmosaic_desc = { "im_tbmosaic", /* Name */ "top-bottom mosaic of in1 and in2",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ tbmosaic_vec, /* Dispatch function */ IM_NUMBER( mosaic_args ), /* Size of arg list */ mosaic_args /* Arg list */ }; /* Description of im_tbmosaic1. */ static im_function tbmosaic1_desc = { "im_tbmosaic1", /* Name */ "first-order top-bottom mosaic of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ tbmosaic1_vec, /* Dispatch function */ IM_NUMBER( mosaic1_args ), /* Size of arg list */ mosaic1_args /* Arg list */ }; /* Call im_lrmerge via arg vector. */ static int lrmerge_vec( im_object *argv ) { int dx = *((int *) argv[3]); int dy = *((int *) argv[4]); int mwidth = *((int *) argv[5]); return( im_lrmerge( argv[0], argv[1], argv[2], dx, dy, mwidth ) ); } /* Call im_lrmerge1 via arg vector. */ static int lrmerge1_vec( im_object *argv ) { int xr1 = *((int *) argv[3]); int yr1 = *((int *) argv[4]); int xs1 = *((int *) argv[5]); int ys1 = *((int *) argv[6]); int xr2 = *((int *) argv[7]); int yr2 = *((int *) argv[8]); int xs2 = *((int *) argv[9]); int ys2 = *((int *) argv[10]); int mwidth = *((int *) argv[11]); return( im_lrmerge1( argv[0], argv[1], argv[2], xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, mwidth ) ); } /* Description of im_lrmerge. */ static im_function lrmerge_desc = { "im_lrmerge", /* Name */ "left-right merge of in1 and in2",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ lrmerge_vec, /* Dispatch function */ IM_NUMBER( merge_args ), /* Size of arg list */ merge_args /* Arg list */ }; /* Description of im_lrmerge1. */ static im_function lrmerge1_desc = { "im_lrmerge1", /* Name */ "first-order left-right merge of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ lrmerge1_vec, /* Dispatch function */ IM_NUMBER( merge1_args ), /* Size of arg list */ merge1_args /* Arg list */ }; /* Call im_tbmerge via arg vector. */ static int tbmerge_vec( im_object *argv ) { int dx = *((int *) argv[3]); int dy = *((int *) argv[4]); int mwidth = *((int *) argv[5]); return( im_tbmerge( argv[0], argv[1], argv[2], dx, dy, mwidth ) ); } /* Call im_tbmerge1 via arg vector. */ static int tbmerge1_vec( im_object *argv ) { int xr1 = *((int *) argv[3]); int yr1 = *((int *) argv[4]); int xs1 = *((int *) argv[5]); int ys1 = *((int *) argv[6]); int xr2 = *((int *) argv[7]); int yr2 = *((int *) argv[8]); int xs2 = *((int *) argv[9]); int ys2 = *((int *) argv[10]); int mwidth = *((int *) argv[11]); return( im_tbmerge1( argv[0], argv[1], argv[2], xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, mwidth ) ); } /* Description of im_tbmerge. */ static im_function tbmerge_desc = { "im_tbmerge", /* Name */ "top-bottom merge of in1 and in2",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ tbmerge_vec, /* Dispatch function */ IM_NUMBER( merge_args ), /* Size of arg list */ merge_args /* Arg list */ }; /* Description of im_tbmerge1. */ static im_function tbmerge1_desc = { "im_tbmerge1", /* Name */ "first-order top-bottom merge of in1 and in2",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ tbmerge1_vec, /* Dispatch function */ IM_NUMBER( merge1_args ), /* Size of arg list */ merge1_args /* Arg list */ }; /* match_linear args */ static im_arg_desc match_linear_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xref1" ), IM_INPUT_INT( "yref1" ), IM_INPUT_INT( "xsec1" ), IM_INPUT_INT( "ysec1" ), IM_INPUT_INT( "xref2" ), IM_INPUT_INT( "yref2" ), IM_INPUT_INT( "xsec2" ), IM_INPUT_INT( "ysec2" ) }; /* Call im_match_linear via arg vector. */ static int match_linear_vec( im_object *argv ) { int xref1 = *((int *) argv[3]); int yref1 = *((int *) argv[4]); int xsec1 = *((int *) argv[5]); int ysec1 = *((int *) argv[6]); int xref2 = *((int *) argv[7]); int yref2 = *((int *) argv[8]); int xsec2 = *((int *) argv[9]); int ysec2 = *((int *) argv[10]); return( im_match_linear( argv[0], argv[1], argv[2], xref1, yref1, xsec1, ysec1, xref2, yref2, xsec2, ysec2 ) ); } /* Description of im_match_linear. */ static im_function match_linear_desc = { "im_match_linear", /* Name */ "resample ref so that tie-points match", IM_FN_PIO, /* Flags */ match_linear_vec, /* Dispatch function */ IM_NUMBER( match_linear_args ), /* Size of arg list */ match_linear_args /* Arg list */ }; /* match_linear_search args */ static im_arg_desc match_linear_search_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xref1" ), IM_INPUT_INT( "yref1" ), IM_INPUT_INT( "xsec1" ), IM_INPUT_INT( "ysec1" ), IM_INPUT_INT( "xref2" ), IM_INPUT_INT( "yref2" ), IM_INPUT_INT( "xsec2" ), IM_INPUT_INT( "ysec2" ), IM_INPUT_INT( "hwindowsize" ), IM_INPUT_INT( "hsearchsize" ) }; /* Call im_match_linear_search via arg vector. */ static int match_linear_search_vec( im_object *argv ) { int xref1 = *((int *) argv[3]); int yref1 = *((int *) argv[4]); int xsec1 = *((int *) argv[5]); int ysec1 = *((int *) argv[6]); int xref2 = *((int *) argv[7]); int yref2 = *((int *) argv[8]); int xsec2 = *((int *) argv[9]); int ysec2 = *((int *) argv[10]); int hwin = *((int *) argv[11]); int hsrch = *((int *) argv[12]); return( im_match_linear_search( argv[0], argv[1], argv[2], xref1, yref1, xsec1, ysec1, xref2, yref2, xsec2, ysec2, hwin, hsrch ) ); } /* Description of im_match_linear_search. */ static im_function match_linear_search_desc = { "im_match_linear_search", /* Name */ "search sec, then resample so that tie-points match", IM_FN_PIO, /* Flags */ match_linear_search_vec, /* Dispatch function */ IM_NUMBER( match_linear_search_args ),/* Size of arg list */ match_linear_search_args /* Arg list */ }; /* correl args */ static im_arg_desc correl_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_INPUT_INT( "xref" ), IM_INPUT_INT( "yref" ), IM_INPUT_INT( "xsec" ), IM_INPUT_INT( "ysec" ), IM_INPUT_INT( "hwindowsize" ), IM_INPUT_INT( "hsearchsize" ), IM_OUTPUT_DOUBLE( "correlation" ), IM_OUTPUT_INT( "x" ), IM_OUTPUT_INT( "y" ) }; /* Call im_correl via arg vector. */ static int correl_vec( im_object *argv ) { int xref = *((int *) argv[2]); int yref = *((int *) argv[3]); int xsec = *((int *) argv[4]); int ysec = *((int *) argv[5]); int cor = *((int *) argv[6]); int area = *((int *) argv[7]); int *x = (int *) argv[8]; int *y = (int *) argv[9]; double *correlation = (double *) argv[10]; return( im_correl( argv[0], argv[1], xref, yref, xsec, ysec, cor, area, correlation, x, y ) ); } /* Description of im_correl. */ static im_function correl_desc = { "im_correl", /* Name */ "search area around sec for match for area around ref", IM_FN_PIO, /* Flags */ correl_vec, /* Dispatch function */ IM_NUMBER( correl_args ), /* Size of arg list */ correl_args /* Arg list */ }; /* global_balance args */ static im_arg_desc global_balance_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "gamma" ) }; /* Call im_global_balance via arg vector. */ static int global_balance_vec( im_object *argv ) { double gamma = *((double *) argv[2]); return( im_global_balance( argv[0], argv[1], gamma ) ); } /* Description of im_global_balance. */ static im_function global_balance_desc = { "im_global_balance", /* Name */ "automatically rebuild mosaic with balancing", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ global_balance_vec, /* Dispatch function */ IM_NUMBER( global_balance_args ), /* Size of arg list */ global_balance_args /* Arg list */ }; /* Call im_global_balancef via arg vector. */ static int global_balancef_vec( im_object *argv ) { double gamma = *((double *) argv[2]); return( im_global_balancef( argv[0], argv[1], gamma ) ); } /* Description of im_global_balancef. */ static im_function global_balancef_desc = { "im_global_balancef", /* Name */ "automatically rebuild mosaic with balancing, float output", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ global_balancef_vec, /* Dispatch function */ IM_NUMBER( global_balance_args ), /* Size of arg list */ global_balance_args /* Arg list */ }; /* remosaic args */ static im_arg_desc remosaic_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "old_str" ), IM_INPUT_STRING( "new_str" ) }; /* Call im_remosaic via arg vector. */ static int remosaic_vec( im_object *argv ) { return( im_remosaic( argv[0], argv[1], argv[2], argv[3] ) ); } /* Description of im_remosaic. */ static im_function remosaic_desc = { "im_remosaic", /* Name */ "automatically rebuild mosaic with new files", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ remosaic_vec, /* Dispatch function */ IM_NUMBER( remosaic_args ),/* Size of arg list */ remosaic_args /* Arg list */ }; static int align_bands_vec( im_object *argv ){ return im_align_bands( (IMAGE*)argv[0], (IMAGE*)argv[1] ); } static im_arg_desc align_bands_arg_types[]= { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static im_function align_bands_desc= { "im_align_bands", "align the bands of an image", 0, align_bands_vec, IM_NUMBER( align_bands_arg_types ), align_bands_arg_types }; static int maxpos_subpel_vec( im_object *argv ){ return im_maxpos_subpel( (IMAGE*)argv[0], (double*)argv[1], (double*)argv[2] ); } static im_arg_desc maxpos_subpel_arg_types[]= { IM_INPUT_IMAGE( "im" ), IM_OUTPUT_DOUBLE( "x" ), IM_OUTPUT_DOUBLE( "y" ) }; static im_function maxpos_subpel_desc= { "im_maxpos_subpel", "subpixel position of maximum of (phase correlation) image", IM_FN_PIO, maxpos_subpel_vec, IM_NUMBER( maxpos_subpel_arg_types ), maxpos_subpel_arg_types }; /* Package up all these functions. */ static im_function *mos_list[] = { &align_bands_desc, &correl_desc, &find_lroverlap_desc, &find_tboverlap_desc, &global_balance_desc, &global_balancef_desc, &lrmerge_desc, &lrmerge1_desc, &lrmosaic_desc, &lrmosaic1_desc, &match_linear_desc, &match_linear_search_desc, &maxpos_subpel_desc, &remosaic_desc, &tbmerge_desc, &tbmerge1_desc, &tbmosaic_desc, &tbmosaic1_desc }; /* Package of functions. */ im_package im__mosaicing = { "mosaicing", IM_NUMBER( mos_list ), mos_list }; libvips-8.9.1/libvips/deprecated/other_dispatch.c000066400000000000000000000177721361153320700221340ustar00rootroot00000000000000/* Function dispatch tables for other. * * J. Cupitt, 8/2/95 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* Args for im_sines. */ static im_arg_desc sines_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ), IM_INPUT_DOUBLE( "horfreq" ), IM_INPUT_DOUBLE( "verfreq" ) }; /* Call im_sines via arg vector. */ static int sines_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); double horfreq = *((double *) argv[3]); double verfreq = *((double *) argv[4]); return( im_sines( argv[0], xsize, ysize, horfreq, verfreq ) ); } /* Description of im_sines. */ static im_function sines_desc = { "im_sines", /* Name */ "generate 2D sine image", 0, /* Flags */ sines_vec, /* Dispatch function */ IM_NUMBER( sines_args ), /* Size of arg list */ sines_args /* Arg list */ }; /* Args for im_eye. */ static im_arg_desc eye_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ), IM_INPUT_DOUBLE( "factor" ) }; /* Call im_eye via arg vector. */ static int eye_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); double factor = *((double *) argv[3]); return( im_eye( argv[0], xsize, ysize, factor ) ); } /* Description of im_eye. */ static im_function eye_desc = { "im_eye", /* Name */ "generate IM_BANDFMT_UCHAR [0,255] frequency/amplitude image", 0, /* Flags */ eye_vec, /* Dispatch function */ IM_NUMBER( eye_args ), /* Size of arg list */ eye_args /* Arg list */ }; /* Call im_feye via arg vector. */ static int feye_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); double factor = *((double *) argv[3]); return( im_feye( argv[0], xsize, ysize, factor ) ); } /* Description of im_feye. */ static im_function feye_desc = { "im_feye", /* Name */ "generate IM_BANDFMT_FLOAT [-1,1] frequency/amplitude image", 0, /* Flags */ feye_vec, /* Dispatch function */ IM_NUMBER( eye_args ), /* Size of arg list */ eye_args /* Arg list */ }; /* Args for im_zone. */ static im_arg_desc zone_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "size" ) }; /* Call im_zone via arg vector. */ static int zone_vec( im_object *argv ) { int size = *((int *) argv[1]); return( im_zone( argv[0], size ) ); } /* Description of im_zone. */ static im_function zone_desc = { "im_zone", /* Name */ "generate IM_BANDFMT_UCHAR [0,255] zone plate image", /* Description */ 0, /* Flags */ zone_vec, /* Dispatch function */ IM_NUMBER( zone_args ), /* Size of arg list */ zone_args /* Arg list */ }; /* Call im_fzone via arg vector. */ static int fzone_vec( im_object *argv ) { int size = *((int *) argv[1]); return( im_fzone( argv[0], size ) ); } /* Description of im_fzone. */ static im_function fzone_desc = { "im_fzone", /* Name */ "generate IM_BANDFMT_FLOAT [-1,1] zone plate image", /* Description */ 0, /* Flags */ fzone_vec, /* Dispatch function */ IM_NUMBER( zone_args ), /* Size of arg list */ zone_args /* Arg list */ }; /* Args for im_benchmark. */ static im_arg_desc benchmark_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_benchmark via arg vector. */ static int benchmark_vec( im_object *argv ) { return( im_benchmarkn( argv[0], argv[1], 1 ) ); } /* Description of im_benchmark. */ static im_function benchmark_desc = { "im_benchmark", /* Name */ "do something complicated for testing", /* Description */ IM_FN_PIO, /* Flags */ benchmark_vec, /* Dispatch function */ IM_NUMBER( benchmark_args ), /* Size of arg list */ benchmark_args /* Arg list */ }; /* Args for im_benchmark2. */ static im_arg_desc benchmark2_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_DOUBLE( "value" ) }; /* Call im_benchmark2 via arg vector. */ static int benchmark2_vec( im_object *argv ) { double f; if( im_benchmark2( argv[0], &f ) ) return( -1 ); *((double *) argv[1]) = f; return( 0 ); } /* Description of im_benchmark2. */ static im_function benchmark2_desc = { "im_benchmark2", /* Name */ "do something complicated for testing", /* Description */ IM_FN_PIO, /* Flags */ benchmark2_vec, /* Dispatch function */ IM_NUMBER( benchmark2_args ), /* Size of arg list */ benchmark2_args /* Arg list */ }; /* Args for im_benchmarkn. */ static im_arg_desc benchmarkn_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "n" ) }; /* Call im_benchmarkn via arg vector. */ static int benchmarkn_vec( im_object *argv ) { int n = *((int *) argv[2]); return( im_benchmarkn( argv[0], argv[1], n ) ); } /* Description of im_benchmarkn. */ static im_function benchmarkn_desc = { "im_benchmarkn", /* Name */ "do something complicated for testing", /* Description */ IM_FN_PIO, /* Flags */ benchmarkn_vec, /* Dispatch function */ IM_NUMBER( benchmarkn_args ), /* Size of arg list */ benchmarkn_args /* Arg list */ }; /* Args for im_grey. */ static im_arg_desc grey_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ) }; /* Call im_grey via arg vector. */ static int grey_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); return( im_grey( argv[0], xsize, ysize ) ); } /* Description of im_grey. */ static im_function grey_desc = { "im_grey", /* Name */ "generate IM_BANDFMT_UCHAR [0,255] grey scale image", /* Description */ 0, /* Flags */ grey_vec, /* Dispatch function */ IM_NUMBER( grey_args ), /* Size of arg list */ grey_args /* Arg list */ }; /* Call im_fgrey via arg vector. */ static int fgrey_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); return( im_fgrey( argv[0], xsize, ysize ) ); } /* Description of im_fgrey. */ static im_function fgrey_desc = { "im_fgrey", /* Name */ "generate IM_BANDFMT_FLOAT [0,1] grey scale image", /* Description */ 0, /* Flags */ fgrey_vec, /* Dispatch function */ IM_NUMBER( grey_args ), /* Size of arg list */ grey_args /* Arg list */ }; /* Call im_make_xy via arg vector. */ static int make_xy_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); return( im_make_xy( argv[0], xsize, ysize ) ); } /* Description of im_make_xy. */ static im_function make_xy_desc = { "im_make_xy", /* Name */ "generate image with pixel value equal to coordinate", /* Description */ 0, /* Flags */ make_xy_vec, /* Dispatch function */ IM_NUMBER( grey_args ), /* Size of arg list */ grey_args /* Arg list */ }; /* Package up all these functions. */ static im_function *other_list[] = { &benchmark_desc, &benchmark2_desc, &benchmarkn_desc, &eye_desc, &grey_desc, &feye_desc, &fgrey_desc, &fzone_desc, &make_xy_desc, &sines_desc, &zone_desc }; /* Package of functions. */ im_package im__other = { "other", IM_NUMBER( other_list ), other_list }; libvips-8.9.1/libvips/deprecated/package.c000066400000000000000000000615641361153320700205250ustar00rootroot00000000000000/* VIPS package handling. * * J. Cupitt, 8/4/93. * * 18/2/04 JC * - now uses g_module_*() instead of dlopen() * 9/8/04 * - uses glib dir scanning stuff instead of dirent.h * 20/5/08 * - note_dependencies() does IMAGEVEC as well as IMAGE * 5/8/08 * - silent success in loading plugins if the dir isn't there */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_SYS_PARAM_H #include #endif /*HAVE_SYS_PARAM_H*/ #include #include #include #include #include #include #include /* Standard VIPS packages. */ extern im_package im__arithmetic; extern im_package im__cimg; extern im_package im__colour; extern im_package im__conversion; extern im_package im__convolution; extern im_package im__deprecated; extern im_package im__format; extern im_package im__freq_filt; extern im_package im__histograms_lut; extern im_package im__inplace; extern im_package im__mask; extern im_package im__morphology; extern im_package im__mosaicing; extern im_package im__other; extern im_package im__resample; extern im_package im__video; /* im_guess_prefix() args. */ static im_arg_desc guess_prefix_args[] = { IM_INPUT_STRING( "argv0" ), IM_INPUT_STRING( "env_name" ), IM_OUTPUT_STRING( "PREFIX" ) }; /* Call im_guess_prefix() via arg vector. */ static int guess_prefix_vec( im_object *argv ) { const char *prefix = vips_guess_prefix( argv[0], argv[1] ); if( !prefix ) { argv[2] = NULL; return( -1 ); } argv[2] = im_strdup( NULL, prefix ); return( 0 ); } /* Description of im_guess_prefix. */ static im_function guess_prefix_desc = { "im_guess_prefix", /* Name */ "guess install area", /* Description */ 0, /* Flags */ guess_prefix_vec, /* Dispatch function */ VIPS_NUMBER( guess_prefix_args ), /* Size of arg list */ guess_prefix_args /* Arg list */ }; /* im_guess_libdir() args. */ static im_arg_desc guess_libdir_args[] = { IM_INPUT_STRING( "argv0" ), IM_INPUT_STRING( "env_name" ), IM_OUTPUT_STRING( "LIBDIR" ) }; /* Call im_guess_libdir() via arg vector. */ static int guess_libdir_vec( im_object *argv ) { const char *libdir = vips_guess_libdir( argv[0], argv[1] ); if( !libdir ) { argv[2] = NULL; return( -1 ); } argv[2] = im_strdup( NULL, libdir ); return( 0 ); } /* Description of im_guess_libdir. */ static im_function guess_libdir_desc = { "im_guess_libdir", /* Name */ "guess library area", /* Description */ 0, /* Flags */ guess_libdir_vec, /* Dispatch function */ VIPS_NUMBER( guess_libdir_args ),/* Size of arg list */ guess_libdir_args /* Arg list */ }; /* im_header_int() args. */ static im_arg_desc header_int_args[] = { IM_INPUT_STRING( "field" ), IM_INPUT_IMAGE( "image" ), IM_OUTPUT_INT( "value" ) }; /* Call im_header_int() via arg vector. */ static int header_int_vec( im_object *argv ) { return( im_header_int( (IMAGE *) argv[1], (const char *) argv[0], (int *) argv[2] ) ); } /* Description of im_header_int(). */ static im_function header_int_desc = { "im_header_int", /* Name */ "extract int fields from header", /* Description */ 0, /* Flags */ header_int_vec, /* Dispatch function */ VIPS_NUMBER( header_int_args ), /* Size of arg list */ header_int_args /* Arg list */ }; /* im_header_get_typeof() args. */ static im_arg_desc header_get_typeof_args[] = { IM_INPUT_STRING( "field" ), IM_INPUT_IMAGE( "image" ), IM_OUTPUT_INT( "gtype" ) }; /* Call im_header_get_typeof() via arg vector. */ static int header_get_typeof_vec( im_object *argv ) { int *out = (int *) argv[2]; *out = im_header_get_typeof( (IMAGE *) argv[1], (const char *) argv[0] ); return( 0 ); } /* Description of im_header_get_typeof(). */ static im_function header_get_typeof_desc = { "im_header_get_typeof", /* Name */ "return field type", /* Description */ 0, /* Flags */ header_get_typeof_vec, /* Dispatch function */ VIPS_NUMBER( header_get_typeof_args ),/* Size of arg list */ header_get_typeof_args /* Arg list */ }; /* im_header_double() args. */ static im_arg_desc header_double_args[] = { IM_INPUT_STRING( "field" ), IM_INPUT_IMAGE( "image" ), IM_OUTPUT_DOUBLE( "value" ) }; /* Call im_header_double() via arg vector. */ static int header_double_vec( im_object *argv ) { return( im_header_double( (IMAGE *) argv[1], (const char *) argv[0], (double *) argv[2] ) ); } /* Description of im_header_double(). */ static im_function header_double_desc = { "im_header_double", /* Name */ "extract double fields from header", /* Description */ 0, /* Flags */ header_double_vec, /* Dispatch function */ VIPS_NUMBER( header_double_args ), /* Size of arg list */ header_double_args /* Arg list */ }; /* im_header_string() args. */ static im_arg_desc header_string_args[] = { IM_INPUT_STRING( "field" ), IM_INPUT_IMAGE( "image" ), IM_OUTPUT_STRING( "value" ) }; /* Call im_header_string() via arg vector. */ static int header_string_vec( im_object *argv ) { char **out = (char **) &argv[2]; /* Actually, we call im_header_as_string(), so we can do any field and * not just the string-valued ones. */ if( im_header_as_string( (IMAGE *) argv[1], (const char *) argv[0], out ) ) return( -1 ); return( 0 ); } /* Description of im_header_string(). */ static im_function header_string_desc = { "im_header_string", /* Name */ "extract fields from headers as strings", /* Description */ 0, /* Flags */ header_string_vec, /* Dispatch function */ VIPS_NUMBER( header_string_args ),/* Size of arg list */ header_string_args /* Arg list */ }; /* im_history_get() args. */ static im_arg_desc history_get_args[] = { IM_INPUT_IMAGE( "image" ), IM_OUTPUT_STRING( "history" ) }; /* Call im_history_get() via arg vector. */ static int history_get_vec( im_object *argv ) { char **out = (char **) &argv[1]; const char *str; if( !(str = im_history_get( (IMAGE *) argv[0] )) || !(*out = im_strdup( NULL, str )) ) return( -1 ); return( 0 ); } /* Description of im_history_get(). */ static im_function history_get_desc = { "im_history_get", /* Name */ "return the image history as a string", /* Description */ 0, /* Flags */ history_get_vec, /* Dispatch function */ VIPS_NUMBER( history_get_args ),/* Size of arg list */ history_get_args /* Arg list */ }; /* im_getext() args. */ static im_arg_desc getext_args[] = { IM_INPUT_IMAGE( "image" ), IM_OUTPUT_STRING( "history" ) }; /* Call im_getext() via arg vector. */ static int getext_vec( im_object *argv ) { void **out = (void **) &argv[1]; int size; /* void/char confusion is fine. */ if( !(*out = im__read_extension_block( (IMAGE *) argv[0], &size )) ) return( -1 ); return( 0 ); } /* Description of im_getext(). */ static im_function getext_desc = { "im_getext", /* Name */ "return the image metadata XML as a string", /* Description */ 0, /* Flags */ getext_vec, /* Dispatch function */ VIPS_NUMBER( getext_args ), /* Size of arg list */ getext_args /* Arg list */ }; /* im_printdesc() args. */ static im_arg_desc printdesc_args[] = { IM_INPUT_IMAGE( "image" ), }; /* Call im_printdesc() via arg vector. */ static int printdesc_vec( im_object *argv ) { vips_object_print_dump( VIPS_OBJECT( argv[0] ) ); return( 0 ); } /* Description of im_printdesc(). */ static im_function printdesc_desc = { "im_printdesc", /* Name */ "print an image header to stdout", /* Description */ 0, /* Flags */ printdesc_vec, /* Dispatch function */ VIPS_NUMBER( printdesc_args ), /* Size of arg list */ printdesc_args /* Arg list */ }; /* im_version_string() args. */ static im_arg_desc version_string_args[] = { IM_OUTPUT_STRING( "version" ) }; /* Call im_version_string() via arg vector. */ static int version_string_vec( im_object *argv ) { if( !(argv[0] = im_strdup( NULL, vips_version_string() )) ) return( -1 ); return( 0 ); } /* Description of im_version_string. */ static im_function version_string_desc = { "im_version_string", /* Name */ "VIPS version string", /* Description */ 0, /* Flags */ version_string_vec, /* Dispatch function */ VIPS_NUMBER( version_string_args ),/* Size of arg list */ version_string_args /* Arg list */ }; /* im_version() args. */ static im_arg_desc version_args[] = { IM_INPUT_INT( "flag" ), IM_OUTPUT_INT( "version" ) }; /* Call im_version() via arg vector. */ static int version_vec( im_object *argv ) { int flag = *((int *) argv[0]); int *out = ((int *) argv[1]); int version = vips_version( flag ); if( version < 0 ) return( -1 ); *out = version; return( 0 ); } /* Description of im_version. */ static im_function version_desc = { "im_version", /* Name */ "VIPS version number", /* Description */ 0, /* Flags */ version_vec, /* Dispatch function */ VIPS_NUMBER( version_args ), /* Size of arg list */ version_args /* Arg list */ }; /* im_concurrency_get() args. */ static im_arg_desc concurrency_get_args[] = { IM_OUTPUT_INT( "concurrency" ) }; /* Call im_concurrency_get() via arg vector. */ static int concurrency_get_vec( im_object *argv ) { int *out = ((int *) argv[0]); *out = vips_concurrency_get(); return( 0 ); } /* Description of im_concurrency_get. */ static im_function concurrency_get_desc = { "im_concurrency_get", /* Name */ "get concurrency level", /* Description */ 0, /* Flags */ concurrency_get_vec, /* Dispatch function */ VIPS_NUMBER( concurrency_get_args ), /* Size of arg list */ concurrency_get_args /* Arg list */ }; /* im_cache() args. */ static im_arg_desc cache_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "tile_width" ), IM_INPUT_INT( "tile_height" ), IM_INPUT_INT( "max_tiles" ) }; /* Call im_cache() via arg vector. */ static int cache_vec( im_object *argv ) { int tile_width = *((int *) argv[2]); int tile_height = *((int *) argv[3]); int max_tiles = *((int *) argv[4]); return( im_cache( argv[0], argv[1], tile_width, tile_height, max_tiles ) ); } /* Description of im_cache. */ static im_function cache_desc = { "im_cache", /* Name */ "cache results of an operation",/* Description */ 0, /* Flags */ cache_vec, /* Dispatch function */ VIPS_NUMBER( cache_args ), /* Size of arg list */ cache_args /* Arg list */ }; static int tile_cache_random_vec( im_object *argv ) { int tile_width = *((int *) argv[2]); int tile_height = *((int *) argv[3]); int max_tiles = *((int *) argv[4]); return( im_tile_cache_random( argv[0], argv[1], tile_width, tile_height, max_tiles ) ); } /* Description of im_cache. */ static im_function tile_cache_random_desc = { "im_tile_cache_random", /* Name */ "cache results of an operation",/* Description */ 0, /* Flags */ tile_cache_random_vec, /* Dispatch function */ VIPS_NUMBER( cache_args ), /* Size of arg list */ cache_args /* Arg list */ }; /* im_binfile() args. */ static im_arg_desc binfile_args[] = { IM_INPUT_STRING( "filename" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ), IM_INPUT_INT( "bands" ), IM_INPUT_INT( "offset" ) }; /* Call im_binfile() via arg vector. */ static int binfile_vec( im_object *argv ) { int width = *((int *) argv[2]); int height = *((int *) argv[3]); int bands = *((int *) argv[4]); int offset = *((int *) argv[5]); VipsImage *im; if( !(im = vips_image_new_from_file_raw( argv[0], width, height, bands, offset )) ) return( -1 ); vips_object_local( argv[1], im ); if( im_copy( im, argv[1] ) ) return( -1 ); return( 0 ); } /* Description of im_binfile. */ static im_function binfile_desc = { "im_binfile", /* Name */ "open a headerless binary file",/* Description */ 0, /* Flags */ binfile_vec, /* Dispatch function */ VIPS_NUMBER( binfile_args ), /* Size of arg list */ binfile_args /* Arg list */ }; /* Package up iofuncs functions. */ static im_function *iofuncs_list[] = { &binfile_desc, &cache_desc, &tile_cache_random_desc, &concurrency_get_desc, &getext_desc, &guess_prefix_desc, &guess_libdir_desc, &header_get_typeof_desc, &header_int_desc, &header_double_desc, &header_string_desc, &history_get_desc, &printdesc_desc, &version_desc, &version_string_desc }; /* Package of io functions. */ static im_package im__iofuncs = { "iofuncs", VIPS_NUMBER( iofuncs_list ), iofuncs_list }; /* List of built-in VIPS packages. */ static im_package *built_in[] = { &im__arithmetic, &im__cimg, &im__colour, &im__conversion, &im__convolution, &im__deprecated, &im__format, &im__freq_filt, &im__histograms_lut, &im__inplace, &im__iofuncs, &im__mask, &im__morphology, &im__mosaicing, &im__other, &im__resample, &im__video }; /* How we represent a loaded plugin. */ typedef struct _Plugin { GModule *module; /* As loaded by g_module_open() */ char *name; /* Name we loaded */ im_package *pack; /* Package table */ } Plugin; /* List of loaded plugins. */ static GSList *plugin_list = NULL; /* Free a plugin. */ static int plugin_free( Plugin *plug ) { char *name = plug->name ? plug->name : ""; if( plug->module ) { if( !g_module_close( plug->module ) ) { vips_error( "plugin", _( "unable to close plugin \"%s\"" ), name ); vips_error( "plugin", "%s", g_module_error() ); return( -1 ); } plug->module = NULL; } VIPS_FREE( plug->name ); plug->pack = NULL; g_free( plug ); plugin_list = g_slist_remove( plugin_list, plug ); return( 0 ); } /* Load a plugin. */ im_package * im_load_plugin( const char *name ) { Plugin *plug; #ifdef DEBUG printf( "im_load_plugin: \"%s\"\n", name ); #endif /*DEBUG*/ if( !g_module_supported() ) { vips_error( "plugin", "%s", _( "plugins not supported on this platform" ) ); return( NULL ); } /* Build a new plugin. */ plug = VIPS_NEW( NULL, Plugin ); plug->module = NULL; plug->name = g_strdup( name ); plug->pack = NULL; plugin_list = g_slist_prepend( plugin_list, plug ); /* Open library. */ if( !(plug->module = g_module_open( name, 0 )) ) { vips_error( "plugin", _( "unable to open plugin \"%s\"" ), name ); vips_error( "plugin", "%s", g_module_error() ); plugin_free( plug ); return( NULL ); } /* Find package. */ /* Bizarre double-cast stops a bogus gcc 4.1 compiler warning. */ if( !g_module_symbol( plug->module, "package_table", (gpointer *) ((void *) &plug->pack) ) ) { vips_error( "plugin", _( "unable to find symbol \"package_table\" " "in plugin \"%s\"" ), name ); vips_error( "plugin", "%s", g_module_error() ); plugin_free( plug ); return( NULL ); } /* Sanity check. */ if( !plug->pack->name || plug->pack->nfuncs < 0 || plug->pack->nfuncs > 10000 ) { vips_error( "plugin", _( "corrupted package table in plugin \"%s\"" ), name ); plugin_free( plug ); return( NULL ); } #ifdef DEBUG printf( "added package \"%s\"\n", plug->pack->name ); #endif /*DEBUG*/ return( plug->pack ); } /* Load all plugins in a directory ... look for '.plg' suffix. Error if we had * any probs. */ int im_load_plugins( const char *fmt, ... ) { va_list ap; char dir_name[VIPS_PATH_MAX]; GDir *dir; const char *name; int result; /* Silently succeed if we can't do modules. */ if( !g_module_supported() ) return( 0 ); va_start( ap, fmt ); (void) im_vsnprintf( dir_name, VIPS_PATH_MAX - 1, fmt, ap ); va_end( ap ); #ifdef DEBUG printf( "im_load_plugins: searching \"%s\"\n", dir_name ); #endif /*DEBUG*/ if( !(dir = g_dir_open( dir_name, 0, NULL )) ) /* Silent success for dir not there. */ return( 0 ); result = 0; while( (name = g_dir_read_name( dir )) ) if( im_ispostfix( name, ".plg" ) ) { char path[VIPS_PATH_MAX]; im_snprintf( path, VIPS_PATH_MAX - 1, "%s" G_DIR_SEPARATOR_S "%s", dir_name, name ); if( !im_load_plugin( path ) ) result = -1; } g_dir_close( dir ); return( result ); } /* Close all loaded plugins. */ int im_close_plugins( void ) { while( plugin_list ) if( plugin_free( (Plugin *) plugin_list->data ) ) return( -1 ); return( 0 ); } /* Apply a user-function to a plugin package. */ static void * apply_plugin( Plugin *plug, VSListMap2Fn fn, void *a ) { if( !plug->pack ) return( NULL ); else return( fn( plug->pack, a, NULL ) ); } /* Map a function over all packages. Map over plugins first, to allow * overriding of VIPS functions. */ void * im_map_packages( VSListMap2Fn fn, void *a ) { void *r = im_slist_map2( plugin_list, (VSListMap2Fn) apply_plugin, (void *) fn, a ); /* If not there, try main VIPS package list. */ if( !r ) { int i; for( i = 0; i < VIPS_NUMBER( built_in ); i++ ) if( (r = fn( built_in[i], a, NULL )) ) return( r ); } return( r ); } /* Search a package for a function. */ static im_function * search_package( im_package *pack, const char *name ) { int i; for( i = 0; i < pack->nfuncs; i++ ) if( strcmp( pack->table[i]->name, name ) == 0 ) return( pack->table[i] ); return( NULL ); } /* Search all packages for a function. */ im_function * im_find_function( const char *name ) { im_function *fn = im_map_packages( (VSListMap2Fn) search_package, (void *) name ); if( !fn ) { vips_error( "im_find_function", _( "\"%s\" not found" ), name ); return( NULL ); } return( fn ); } /* Test for package is of name. */ static im_package * package_name( im_package *pack, const char *name ) { if( strcmp( pack->name, name ) == 0 ) return( pack ); return( NULL ); } /* Find a package. */ im_package * im_find_package( const char *name ) { im_package *pack = im_map_packages( (VSListMap2Fn) package_name, (void *) name ); if( !pack ) { vips_error( "im_find_package", _( "\"%s\" not found" ), name ); return( NULL ); } return( pack ); } /* Test for package contains a function. */ static im_package * package_function( im_package *pack, const char *name ) { if( search_package( pack, name ) ) return( pack ); else return( NULL ); } /* Find a function's package by name. */ im_package * im_package_of_function( const char *name ) { im_package *pack = im_map_packages( (VSListMap2Fn) package_function, (void *) name ); if( !pack ) { vips_error( "im_package_of_function", _( "\"%s\" not found" ), name ); return( NULL ); } return( pack ); } /* Free any store we allocated for the argument list. */ int im_free_vargv( im_function *fn, im_object *vargv ) { int i; int vargc = fn->argc; /* Free all elements. */ for( i = 0; i < vargc; i++ ) if( vargv[i] ) { /* If there is local storage, free it. */ if( fn->argv[i].desc->size != 0 ) vips_free( vargv[i] ); /* NULL out pointer. */ vargv[i] = NULL; } return( 0 ); } /* Allocate any local store the args will need; NULL out all others. */ int im_allocate_vargv( im_function *fn, im_object *vargv ) { int i; int vargc = fn->argc; /* NULL out all pointers. */ for( i = 0; i < vargc; i++ ) vargv[i] = NULL; /* Allocate any space we will need. */ for( i = 0; i < vargc; i++ ) { int sz = fn->argv[i].desc->size; if( sz != 0 ) if( !(vargv[i] = vips_malloc( NULL, sz )) ) { /* Free anything we did allocate. */ (void) im_free_vargv( fn, vargv ); return( -1 ); } /* Zero memory. */ memset( vargv[i], 0, sz ); } return( 0 ); } /* Destroy the objects in the arg list. */ static int destroy_args( im_function *fn, im_object *vargv ) { int i; int vargc = fn->argc; /* Destroy all elements with destroy functions. */ for( i = 0; i < vargc; i++ ) if( vargv[i] ) /* If there's a destroy function for this type, * trigger it. */ if( fn->argv[i].desc->dest && fn->argv[i].desc->dest( vargv[i] ) ) return( -1 ); return( 0 ); } /* Init an im_object array from a set of command-line arguments. */ static int build_args( im_function *fn, im_object *vargv, int argc, char **argv ) { im_arg_desc *arg = fn->argv; int vargc = fn->argc; char *str; int i, j; /* Loop, constructing each im_arg. */ for( i = 0, j = 0; i < vargc; i++ ) { /* Find type for this arg. */ im_type_desc *type = arg[i].desc; /* Do we need to use up a command line argument? */ if( type->flags & IM_TYPE_ARG ) { if( !argv[j] ) { vips_error( "im_run_command", "%s", _( "too few arguments" ) ); return( -1 ); } str = argv[j++]; /* Init object. */ if( type->init && type->init( &vargv[i], str ) ) return( -1 ); } else { /* Init object with no arg. */ if( type->init && type->init( &vargv[i], "no arg" ) ) return( -1 ); } } /* Have we used up all the command-line args? */ if( argv[j] ) { vips_error( "im_run_command", "%s", _( "too many arguments" ) ); return( -1 ); } return( 0 ); } /* Make a region on sub, closed by callback on main. */ static int region_local_image( IMAGE *main, IMAGE *sub ) { VipsRegion *reg; if( !(reg = vips_region_new( sub )) ) return( -1 ); vips_object_local( main, reg ); return( 0 ); } /* vargv[i] is an output image on a PIO function ... make all input images * depend on it. */ static int note_dependencies( im_function *fn, im_object *vargv, int i ) { int j; for( j = 0; j < fn->argc; j++ ) { im_type_desc *type = fn->argv[j].desc; if( !(type->flags & IM_TYPE_OUTPUT) ) { if( strcmp( type->type, IM_TYPE_IMAGE ) == 0 ) { if( region_local_image( vargv[i], vargv[j] ) ) return( -1 ); } else if( strcmp( type->type, IM_TYPE_IMAGEVEC ) == 0 ) { im_imagevec_object *iv = vargv[j]; int k; for( k = 0; k < iv->n; k++ ) if( region_local_image( vargv[i], iv->vec[k] ) ) return( -1 ); } } } return( 0 ); } /* Call all defined print functions. */ static int print_args( im_function *fn, im_object *vargv ) { int i; int vargc = fn->argc; /* Print all elements. */ for( i = 0; i < vargc; i++ ) if( fn->argv[i].print && vargv[i] ) if( fn->argv[i].print( vargv[i] ) ) return( -1 ); return( 0 ); } /* Add to the hist of all output images. */ static int add_hist( im_function *fn, im_object *vargv, int argc, char **argv ) { int i; int vargc = fn->argc; /* Search for output images. */ for( i = 0; i < vargc; i++ ) if( strcmp( fn->argv[i].desc->type, IM_TYPE_IMAGE ) == 0 && (fn->argv[i].desc->flags & IM_TYPE_OUTPUT) ) if( im_updatehist( vargv[i], fn->name, argc, argv ) ) return( -1 ); return( 0 ); } /* Call a VIPS function. */ static int dispatch_function( im_function *fn, im_object *vargv, int argc, char **argv ) { /* Init memory from command line arguments. */ if( build_args( fn, vargv, argc, argv ) ) return( -1 ); /* If this is a PIO function, we need to make sure that we close * the input images after the output images, since the output image * may include delayed image conversion filters which will not run * until the output is closed. * * Do this by: * - for each output image * - for each input image * - create a region on the input, closed by a * close callback on the output image */ if( fn->flags & IM_FN_PIO ) { int i; for( i = 0; i < fn->argc; i++ ) { im_type_desc *type = fn->argv[i].desc; if( type->flags & IM_TYPE_OUTPUT && strcmp( type->type, IM_TYPE_IMAGE ) == 0 ) if( note_dependencies( fn, vargv, i ) ) return( -1 ); } } /* Call function. */ if( fn->disp( vargv ) ) return( -1 ); /* Print output. */ if( print_args( fn, vargv ) ) return( -1 ); /* Add to history of all output images. */ if( add_hist( fn, vargv, argc, argv ) ) return( -1 ); /* All ok! */ return( 0 ); } /* Run a command. */ int im_run_command( char *name, int argc, char **argv ) { static im_object object_array[IM_MAX_ARGS]; im_object *vargv = object_array; im_function *fn; /* Search packages for a matching function. */ if( !(fn = im_find_function( name )) ) return( -1 ); /* Allocate space for arguments. */ if( im_allocate_vargv( fn, vargv ) ) return( -1 ); /* Call it. */ if( dispatch_function( fn, vargv, argc, argv ) ) { destroy_args( fn, vargv ); im_free_vargv( fn, vargv ); return( -1 ); } /* Clean up and exit. */ if( destroy_args( fn, vargv ) ) return( -1 ); im_free_vargv( fn, vargv ); return( 0 ); } libvips-8.9.1/libvips/deprecated/radiance.c000066400000000000000000000042431361153320700206670ustar00rootroot00000000000000/* Read Radiance (.hdr) files * * 20/12/11 * - just a compat stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include int im_rad2vips( const char *filename, IMAGE *out ) { VipsImage *t; if( vips_radload( filename, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int israd( const char *filename ) { return( vips_foreign_is_a( "radload", filename ) ); } int im_vips2rad( IMAGE *in, const char *filename ) { return( vips_radsave( in, filename, NULL ) ); } static const char *rad_suffs[] = { ".hdr", NULL }; typedef VipsFormat VipsFormatRad; typedef VipsFormatClass VipsFormatRadClass; static void vips_format_rad_class_init( VipsFormatRadClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "rad"; object_class->description = _( "Radiance" ); format_class->is_a = israd; format_class->load = im_rad2vips; format_class->save = im_vips2rad; format_class->suffs = rad_suffs; } static void vips_format_rad_init( VipsFormatRad *object ) { } G_DEFINE_TYPE( VipsFormatRad, vips_format_rad, VIPS_TYPE_FORMAT ); libvips-8.9.1/libvips/deprecated/raw.c000066400000000000000000000030321361153320700177050ustar00rootroot00000000000000/* Read raw image. Just a wrapper over im_binfile(). * * 15/12/11 * - just a compat stub now */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include int im_raw2vips( const char *filename, IMAGE *out, int width, int height, int bpp, int offset ) { VipsImage *t; if( vips_rawload( filename, &t, width, height, bpp, "offset", offset, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_vips2raw( IMAGE *in, int fd ) { return( vips_rawsave_fd( in, fd, NULL ) ); } libvips-8.9.1/libvips/deprecated/rename.c000066400000000000000000000365071361153320700204000ustar00rootroot00000000000000/* rename.c --- wrappers for various renamed functions * * 20/9/09 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include int im_remainderconst_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( im_remainder_vec( in, out, n, c ) ); } int im_and_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( im_andimage_vec( in, out, n, c ) ); } int im_or_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( im_orimage_vec( in, out, n, c ) ); } int im_eor_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( im_eorimage_vec( in, out, n, c ) ); } int im_andconst( IMAGE *in, IMAGE *out, double c ) { return( im_andimageconst( in, out, c ) ); } int im_orconst( IMAGE *in, IMAGE *out, double c ) { return( im_orimageconst( in, out, c ) ); } int im_eorconst( IMAGE *in, IMAGE *out, double c ) { return( im_eorimageconst( in, out, c ) ); } void im_errormsg( const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); im_verror( "untranslated", fmt, ap ); va_end( ap ); } void im_verrormsg( const char *fmt, va_list ap ) { im_verror( "untranslated", fmt, ap ); } void im_errormsg_system( int err, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); im_verror_system( err, "untranslated", fmt, ap ); va_end( ap ); } void im_diagnostics( const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); im_vdiag( "untranslated", fmt, ap ); va_end( ap ); } void im_warning( const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); im_vwarn( "untranslated", fmt, ap ); va_end( ap ); } int im_affine( IMAGE *in, IMAGE *out, double a, double b, double c, double d, double dx, double dy, int ox, int oy, int ow, int oh ) { return( im_affinei( in, out, vips_interpolate_bilinear_static(), a, b, c, d, dx, dy, ox, oy, ow, oh ) ); } int im_similarity_area( IMAGE *in, IMAGE *out, double a, double b, double dx, double dy, int ox, int oy, int ow, int oh ) { return( im_affinei( in, out, vips_interpolate_bilinear_static(), a, -b, b, a, dx, dy, ox, oy, ow, oh ) ); } int im_similarity( IMAGE *in, IMAGE *out, double a, double b, double dx, double dy ) { return( im_affinei_all( in, out, vips_interpolate_bilinear_static(), a, -b, b, a, dx, dy ) ); } DOUBLEMASK * im_measure( IMAGE *im, IMAGE_BOX *box, int h, int v, int *sel, int nsel, const char *name ) { return( im_measure_area( im, box->xstart, box->ystart, box->xsize, box->ysize, h, v, sel, nsel, name ) ); } int im_extract( IMAGE *in, IMAGE *out, IMAGE_BOX *box ) { if( box->chsel == -1 ) return( im_extract_areabands( in, out, box->xstart, box->ystart, box->xsize, box->ysize, 0, in->Bands ) ); else return( im_extract_areabands( in, out, box->xstart, box->ystart, box->xsize, box->ysize, box->chsel, 1 ) ); } /* The public proto has this in the argument. */ typedef void (*notify_fn)( IMAGE *, Rect *, void * ); int im_render_fade( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, int fps, int steps, int priority, notify_fn notify, void *client ) { return( im_render_priority( in, out, mask, width, height, max, priority, notify, client ) ); } int im_render( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, notify_fn notify, void *client ) { return( im_render_priority( in, out, mask, width, height, max, 0, notify, client ) ); } int im_makerw( IMAGE *im ) { return( im_rwcheck( im ) ); } int im_icc_export( IMAGE *in, IMAGE *out, const char *output_profile_filename, int intent ) { return( im_icc_export_depth( in, out, 8, output_profile_filename, (VipsIntent) intent ) ); } int im_segment( IMAGE *test, IMAGE *mask, int *segments ) { return( im_label_regions( test, mask, segments ) ); } int im_convf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { return( im_conv_f( in, out, mask ) ); } int im_convf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { return( im_conv_f_raw( in, out, mask ) ); } int im_convsepf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { return( im_convsep_f( in, out, mask ) ); } int im_convsepf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { return( im_convsep_f_raw( in, out, mask ) ); } gboolean im_isint( IMAGE *im ) { return( vips_bandfmt_isint( im->BandFmt ) ); } gboolean im_isuint( IMAGE *im ) { return( vips_bandfmt_isuint( im->BandFmt ) ); } gboolean im_isfloat( IMAGE *im ) { return( vips_bandfmt_isfloat( im->BandFmt ) ); } gboolean im_iscomplex( IMAGE *im ) { return( vips_band_format_iscomplex( im->BandFmt ) ); } gboolean im_isscalar( IMAGE *im ) { return( !im_iscomplex( im ) ); } int im_c2ps( IMAGE *in, IMAGE *out ) { return( im_abs( in, out ) ); } int im_clip( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_UCHAR ) ); } int im_clip2c( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_CHAR ) ); } int im_clip2us( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_USHORT ) ); } int im_clip2s( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_SHORT ) ); } int im_clip2ui( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_UINT ) ); } int im_clip2i( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_INT ) ); } int im_clip2f( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_FLOAT ) ); } int im_clip2d( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_DOUBLE ) ); } int im_clip2cm( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_COMPLEX ) ); } int im_clip2dcm( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_DPCOMPLEX ) ); } int im_copy_from( IMAGE *in, IMAGE *out, im_arch_type architecture ) { switch( architecture ) { case IM_ARCH_NATIVE: return( im_copy( in, out ) ); case IM_ARCH_BYTE_SWAPPED: return( im_copy_swap( in, out ) ); case IM_ARCH_LSB_FIRST: return( im_amiMSBfirst() ? im_copy_swap( in, out ) : im_copy( in, out ) ); case IM_ARCH_MSB_FIRST: return( im_amiMSBfirst() ? im_copy( in, out ) : im_copy_swap( in, out ) ); default: im_error( "im_copy_from", _( "bad architecture: %d" ), architecture ); return( -1 ); } } /* Check whether arch corresponds to native byte order. */ gboolean im_isnative( im_arch_type arch ) { switch( arch ) { case IM_ARCH_NATIVE: return( TRUE ); case IM_ARCH_BYTE_SWAPPED: return( FALSE ); case IM_ARCH_LSB_FIRST: return( !im_amiMSBfirst() ); case IM_ARCH_MSB_FIRST: return( im_amiMSBfirst() ); default: g_assert( 0 ); } /* Keep -Wall happy. */ return( -1 ); } int im_iterate( IMAGE *im, im_start_fn start, im_generate_fn generate, im_stop_fn stop, void *b, void *c ) { return( vips_sink( im, start, (VipsGenerateFn) generate, stop, b, c ) ); } int im_render_priority( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, int priority, notify_fn notify, void *client ) { return( vips_sink_screen( in, out, mask, width, height, max, priority, notify, client ) ); } /** * im_circle: * @im: image to draw on * @cx: centre of circle * @cy: centre of circle * @radius: circle radius * @intensity: value to draw * * Draws a circle on a 1-band 8-bit image. * * This an inplace operation, so @im is changed. It does not thread and will * not work well as part of a pipeline. On 32-bit machines it will be limited * to 2GB images. * * See also: im_fastline(). * * Returns: 0 on success, or -1 on error. */ int im_circle( IMAGE *im, int cx, int cy, int radius, int intensity ) { PEL ink[1]; if( im_rwcheck( im ) || im_check_uncoded( "im_circle", im ) || im_check_mono( "im_circle", im ) || im_check_format( "im_circle", im, IM_BANDFMT_UCHAR ) ) return( -1 ); ink[0] = intensity; return( im_draw_circle( im, cx, cy, radius, FALSE, ink ) ); } /* A flood blob we can call from nip. Grr! Should be a way to wrap these * automatically. Maybe nip could do it if it sees a RW image argument? */ int im_flood_copy( IMAGE *in, IMAGE *out, int x, int y, PEL *ink ) { IMAGE *t; if( !(t = im_open_local( out, "im_flood_blob_copy", "t" )) || im_copy( in, t ) || im_flood( t, x, y, ink, NULL ) || im_copy( t, out ) ) return( -1 ); return( 0 ); } int im_flood_blob_copy( IMAGE *in, IMAGE *out, int x, int y, PEL *ink ) { IMAGE *t; if( !(t = im_open_local( out, "im_flood_blob_copy", "t" )) || im_copy( in, t ) || im_flood_blob( t, x, y, ink, NULL ) || im_copy( t, out ) ) return( -1 ); return( 0 ); } int im_flood_other_copy( IMAGE *test, IMAGE *mark, IMAGE *out, int x, int y, int serial ) { IMAGE *t; if( !(t = im_open_local( out, "im_flood_other_copy", "t" )) || im_copy( mark, t ) || im_flood_other( test, t, x, y, serial, NULL ) || im_copy( t, out ) ) return( -1 ); return( 0 ); } int im_paintrect( IMAGE *im, Rect *r, PEL *ink ) { return( im_draw_rect( im, r->left, r->top, r->width, r->height, 1, ink ) ); } int im_insertplace( IMAGE *main, IMAGE *sub, int x, int y ) { return( im_draw_image( main, sub, x, y ) ); } int im_fastline( IMAGE *im, int x1, int y1, int x2, int y2, PEL *pel ) { return( im_draw_line( im, x1, y1, x2, y2, pel ) ); } int im_fastlineuser( IMAGE *im, int x1, int y1, int x2, int y2, VipsPlotFn fn, void *client1, void *client2, void *client3 ) { return( im_draw_line_user( im, x1, y1, x2, y2, fn, client1, client2, client3 ) ); } int im_plotmask( IMAGE *im, int ix, int iy, PEL *ink, PEL *mask, Rect *r ) { IMAGE *mask_im; if( !(mask_im = im_image( mask, r->width, r->height, 1, IM_BANDFMT_UCHAR )) ) return( -1 ); if( im_draw_mask( im, mask_im, ix + r->left, iy + r->top, ink ) ) { im_close( mask_im ); return( -1 ); } im_close( mask_im ); return( 0 ); } int im_readpoint( IMAGE *im, int x, int y, PEL *pel ) { return( im_read_point( im, x, y, pel ) ); } int im_plotpoint( IMAGE *im, int x, int y, PEL *pel ) { return( im_draw_point( im, x, y, pel ) ); } /* Smear a section of an IMAGE. As above, but shift it left a bit. */ int im_smear( IMAGE *im, int ix, int iy, Rect *r ) { int x, y, a, b, c; int ba = im->Bands; int el = ba * im->Xsize; Rect area, image, clipped; double total[ 256 ]; if( im_rwcheck( im ) ) return( -1 ); /* Don't do the margins. */ area = *r; area.left += ix; area.top += iy; image.left = 0; image.top = 0; image.width = im->Xsize; image.height = im->Ysize; im_rect_marginadjust( &image, -1 ); image.left--; im_rect_intersectrect( &area, &image, &clipped ); /* Any left? */ if( im_rect_isempty( &clipped ) ) return( 0 ); /* What we do for each type. */ #define SMEAR(TYPE) \ for( y = clipped.top; y < clipped.top + clipped.height; y++ ) \ for( x = clipped.left; \ x < clipped.left + clipped.width; x++ ) { \ TYPE *to = (TYPE *) im->data + x * ba + y * el; \ TYPE *from = to - el; \ TYPE *f; \ \ for( a = 0; a < ba; a++ ) \ total[a] = 0.0; \ \ for( a = 0; a < 3; a++ ) { \ f = from; \ for( b = 0; b < 3; b++ ) \ for( c = 0; c < ba; c++ ) \ total[c] += *f++; \ from += el; \ } \ \ for( a = 0; a < ba; a++ ) \ to[a] = (40 * (double) to[a+ba] + total[a]) \ / 49.0; \ } /* Loop through the remaining pixels. */ switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: SMEAR(unsigned char); break; case IM_BANDFMT_CHAR: SMEAR(char); break; case IM_BANDFMT_USHORT: SMEAR(unsigned short); break; case IM_BANDFMT_SHORT: SMEAR(short); break; case IM_BANDFMT_UINT: SMEAR(unsigned int); break; case IM_BANDFMT_INT: SMEAR(int); break; case IM_BANDFMT_FLOAT: SMEAR(float); break; case IM_BANDFMT_DOUBLE: SMEAR(double); break; /* Do complex types too. Just treat as float and double, but with * twice the number of bands. */ case IM_BANDFMT_COMPLEX: /* Twice number of bands: double size and bands. */ ba *= 2; el *= 2; SMEAR(float); break; case IM_BANDFMT_DPCOMPLEX: /* Twice number of bands: double size and bands. */ ba *= 2; el *= 2; SMEAR(double); break; default: im_error( "im_smear", "%s", _( "unknown band format" ) ); return( -1 ); } return( 0 ); } int im_smudge( VipsImage *image, int ix, int iy, Rect *r ) { return( im_draw_smudge( image, r->left + ix, r->top + iy, r->width, r->height ) ); } int im_flood( IMAGE *im, int x, int y, PEL *ink, Rect *dout ) { return( im_draw_flood( im, x, y, ink, dout ) ); } int im_flood_blob( IMAGE *im, int x, int y, PEL *ink, Rect *dout ) { return( im_draw_flood_blob( im, x, y, ink, dout ) ); } int im_flood_other( IMAGE *test, IMAGE *mark, int x, int y, int serial, Rect *dout ) { return( im_draw_flood_other( mark, test, x, y, serial, dout ) ); } int vips_check_coding_rad( const char *domain, VipsImage *im ) { return( vips_check_coding( domain, im, VIPS_CODING_RAD ) ); } int vips_check_coding_labq( const char *domain, VipsImage *im ) { return( vips_check_coding( domain, im, VIPS_CODING_LABQ ) ); } int vips_check_bands_3ormore( const char *domain, VipsImage *im ) { return( vips_check_bands_atleast( domain, im, 3 ) ); } /* The old vips_info() stuff, now replaced by g_warning() / g_info(). */ int vips__info = 0; void vips_info_set( gboolean info ) { vips__info = info; if( info ) { const char *old; char *new; old = g_getenv( "G_MESSAGES_DEBUG" ); if( !old ) old = ""; new = g_strdup_printf( "%s VIPS", old ); g_setenv( "G_MESSAGES_DEBUG", new, TRUE ); g_free( new ); } } void vips_vinfo( const char *domain, const char *fmt, va_list ap ) { if( vips__info ) { g_mutex_lock( vips__global_lock ); (void) fprintf( stderr, _( "%s: " ), _( "info" ) ); if( domain ) (void) fprintf( stderr, _( "%s: " ), domain ); (void) vfprintf( stderr, fmt, ap ); (void) fprintf( stderr, "\n" ); g_mutex_unlock( vips__global_lock ); } } void vips_info( const char *domain, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); vips_vinfo( domain, fmt, ap ); va_end( ap ); } void vips_vwarn( const char *domain, const char *fmt, va_list ap ) { if( !g_getenv( "IM_WARNING" ) && !g_getenv( "VIPS_WARNING" ) ) { g_mutex_lock( vips__global_lock ); (void) fprintf( stderr, _( "%s: " ), _( "vips warning" ) ); if( domain ) (void) fprintf( stderr, _( "%s: " ), domain ); (void) vfprintf( stderr, fmt, ap ); (void) fprintf( stderr, "\n" ); g_mutex_unlock( vips__global_lock ); } if( vips__fatal ) vips_error_exit( "vips__fatal" ); } void vips_warn( const char *domain, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); vips_vwarn( domain, fmt, ap ); va_end( ap ); } libvips-8.9.1/libvips/deprecated/resample_dispatch.c000066400000000000000000000137661361153320700226220ustar00rootroot00000000000000/* Function dispatch tables for mosaicing. * * J. Cupitt, 23/2/95 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* Args to im_rightshift_size. */ static im_arg_desc rightshift_size_args[] = { IM_INPUT_IMAGE ("in"), IM_OUTPUT_IMAGE ("out"), IM_INPUT_INT ("xshift"), IM_INPUT_INT ("yshift"), IM_INPUT_INT ("band_fmt") }; /* Call im_rightshift_size via arg vector. */ static int rightshift_size_vec (im_object * argv) { IMAGE *in = (IMAGE *) argv[0]; IMAGE *out = (IMAGE *) argv[1]; int *xshift = (int *) argv[2]; int *yshift = (int *) argv[3]; int *band_fmt = (int *) argv[4]; return im_rightshift_size (in, out, *xshift, *yshift, *band_fmt ); } /* Description of im_rightshift_size. */ static im_function rightshift_size_desc = { "im_rightshift_size", /* Name */ "decrease size by a power-of-two factor", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ rightshift_size_vec, /* Dispatch function */ IM_NUMBER (rightshift_size_args), /* Size of arg list */ rightshift_size_args /* Arg list */ }; /* affinei args */ static im_arg_desc affinei_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INTERPOLATE( "interpolate" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "c" ), IM_INPUT_DOUBLE( "d" ), IM_INPUT_DOUBLE( "dx" ), IM_INPUT_DOUBLE( "dy" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "w" ), IM_INPUT_INT( "h" ) }; /* Call im_affinei via arg vector. */ static int affinei_vec( im_object *argv ) { VipsInterpolate *interpolate = VIPS_INTERPOLATE( argv[2] ); double a = *((double *) argv[3]); double b = *((double *) argv[4]); double c = *((double *) argv[5]); double d = *((double *) argv[6]); double dx = *((double *) argv[7]); double dy = *((double *) argv[8]); int x = *((int *) argv[9]); int y = *((int *) argv[10]); int w = *((int *) argv[11]); int h = *((int *) argv[12]); return( im_affinei( argv[0], argv[1], interpolate, a, b, c, d, dx, dy, x, y, w, h ) ); } /* Description of im_affinei. */ static im_function affinei_desc = { "im_affinei", /* Name */ "affine transform", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ affinei_vec, /* Dispatch function */ IM_NUMBER( affinei_args ), /* Size of arg list */ affinei_args /* Arg list */ }; /* affinei_all args */ static im_arg_desc affinei_all_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INTERPOLATE( "interpolate" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "c" ), IM_INPUT_DOUBLE( "d" ), IM_INPUT_DOUBLE( "dx" ), IM_INPUT_DOUBLE( "dy" ) }; /* Call im_affinei_all via arg vector. */ static int affinei_all_vec( im_object *argv ) { VipsInterpolate *interpolate = VIPS_INTERPOLATE( argv[2] ); double a = *((double *) argv[3]); double b = *((double *) argv[4]); double c = *((double *) argv[5]); double d = *((double *) argv[6]); double dx = *((double *) argv[7]); double dy = *((double *) argv[8]); return( im_affinei_all( argv[0], argv[1], interpolate, a, b, c, d, dx, dy ) ); } /* Description of im_affinei_all. */ static im_function affinei_all_desc = { "im_affinei_all", /* Name */ "affine transform of whole image", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ affinei_all_vec, /* Dispatch function */ IM_NUMBER( affinei_all_args ), /* Size of arg list */ affinei_all_args /* Arg list */ }; /* Args for im_shrink. */ static im_arg_desc shrink_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "xfac" ), IM_INPUT_DOUBLE( "yfac" ) }; /* Call im_shrink via arg vector. */ static int shrink_vec( im_object *argv ) { double xshrink = *((double *) argv[2]); double yshrink = *((double *) argv[3]); return( im_shrink( argv[0], argv[1], xshrink, yshrink ) ); } /* Description of im_shrink. */ static im_function shrink_desc = { "im_shrink", /* Name */ "shrink image by xfac, yfac times", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ shrink_vec, /* Dispatch function */ IM_NUMBER( shrink_args ), /* Size of arg list */ shrink_args /* Arg list */ }; /* Args to im_stretch3. */ static im_arg_desc stretch3_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "xdisp" ), IM_INPUT_DOUBLE( "ydisp" ) }; /* Call im_stretch3 via arg vector. */ static int stretch3_vec( im_object *argv ) { double xdisp = *((int *) argv[2]); double ydisp = *((int *) argv[3]); return( im_stretch3( argv[0], argv[1], xdisp, ydisp ) ); } /* Description of im_stretch3. */ static im_function stretch3_desc = { "im_stretch3", /* Name */ "stretch 3%, sub-pixel displace by xdisp/ydisp", IM_FN_PIO, /* Flags */ stretch3_vec, /* Dispatch function */ IM_NUMBER( stretch3_args ), /* Size of arg list */ stretch3_args /* Arg list */ }; /* Package up all these functions. */ static im_function *resample_list[] = { &rightshift_size_desc, &shrink_desc, &stretch3_desc, &affinei_desc, &affinei_all_desc }; /* Package of functions. */ im_package im__resample = { "resample", IM_NUMBER( resample_list ), resample_list }; libvips-8.9.1/libvips/deprecated/rotmask.c000066400000000000000000000066501361153320700206050ustar00rootroot00000000000000/* Functions to create offsets for rotating square masks. * * Author: N. Dessipris (Copyright, N. Dessipris 1991) * Written on: 08/05/1991 * Modified on: 28/05/1991 * 12/10/95 JC * - small revisions, needs rewriting really * 7/8/96 JC * - absolutely foul desp code revised * - many bugs and mem leaks fixed * 1/3/99 JC * - oops, fns were not preserving scale and offset * 1/12/10 * - allow any size mask for the 90 degree rotates by using im_rot90(). */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define PIM_RINT 1 */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* The type of the vips operations we support. */ typedef int (*vips_fn)( IMAGE *in, IMAGE *out ); /* Pass a mask through a vips operation, eg. im_rot90(). */ static INTMASK * vapplyimask( INTMASK *in, const char *name, vips_fn fn ) { IMAGE *x; IMAGE *t[2]; DOUBLEMASK *d[2]; INTMASK *out; if( !(x = im_open( name, "p" )) ) return( NULL ); if( !(d[0] = im_local_dmask( x, im_imask2dmask( in, name ) )) || im_open_local_array( x, t, 2, name, "p" ) || im_mask2vips( d[0], t[0] ) || fn( t[0], t[1] ) || !(d[1] = im_local_dmask( x, im_vips2mask( t[1], name ) )) || !(out = im_dmask2imask( d[1], name )) ) { im_close( x ); return( NULL ); } im_close( x ); out->scale = in->scale; out->offset = in->offset; return( out ); } static DOUBLEMASK * vapplydmask( DOUBLEMASK *in, const char *name, vips_fn fn ) { IMAGE *x; IMAGE *t[2]; DOUBLEMASK *out; if( !(x = im_open( name, "p" )) ) return( NULL ); if( im_open_local_array( x, t, 2, name, "p" ) || im_mask2vips( in, t[0] ) || fn( t[0], t[1] ) || !(out = im_vips2mask( t[1], name )) ) { im_close( x ); return( NULL ); } im_close( x ); out->scale = in->scale; out->offset = in->offset; return( out ); } INTMASK * im_rotate_imask90( INTMASK *in, const char *filename ) { return( vapplyimask( in, filename, im_rot90 ) ); } DOUBLEMASK * im_rotate_dmask90( DOUBLEMASK *in, const char *filename ) { return( vapplydmask( in, filename, im_rot90 ) ); } static int im_rot45( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_rot45( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } INTMASK * im_rotate_imask45( INTMASK *in, const char *filename ) { return( vapplyimask( in, filename, im_rot45 ) ); } DOUBLEMASK * im_rotate_dmask45( DOUBLEMASK *in, const char *filename ) { return( vapplydmask( in, filename, im_rot45 ) ); } libvips-8.9.1/libvips/deprecated/rw_mask.c000066400000000000000000000563421361153320700205730ustar00rootroot00000000000000/* read and write masks */ /* Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 29/04/1991 * Modified on: 10/8/1992, J.Cupitt * - Mask reading routines no longer fail if scale and offset are missing. * Instead, they set default values of scale=1, offset=0. * - Code tidied up, better error recovery. * - Bugs fixed in im_dup_*mask. No longer coredump. * - Bugs fixed in im_write_*mask. Now work for non-square matricies. * - im_copy_*mask_matrix, im_copy_matrix_*mask added: copy VIPS mask * structures into Numerical Recipies in C style matricies and vice * versa. Both structures should have been built before copy attempted. * See im_create_*mask, im_*mat_alloc. The matrix should be indexed by 0 * to size-1. * 9/7/93 JC * - some ANSIfication and tidies * - im_free_*mask() now return zero, so they can be used as close * callbacks. * 7/10/94 JC * - new IM_NEW(), IM_ARRAY() macros added * 27/4/95 JC * - oops! forgot to init IM_ARRAY() memory to zero * 7/8/96 JC * - im_scale_dmask() rewritten * 7/5/98 JC * - im_read_*mask() rewritten, now more robust * - im_write_*mask() rewritten * - new functions im_write_*mask_name() * 28/7/99 JC * - im_create_imaskv(), im_create_dmaskv() make masks and init from * varargs * - tabs allowed as column separators * 9/2/05 * - "," allowed as column separator ... helps CSV read * 31/5/06 * - use g_ascii_strtod() and friends * 2006-09-08 tcv * - add im_norm_dmask() * 1/9/09 * - move im_print_*mask() here * 12/11/09 * - reading a float mask with im_read_imask() produced an incorrect * error messagge * 21/10/10 * - gtk-doc * - you can use commas to separate header fields * - small cleanups * 30/11/10 * - im_scale_dmask() normalises to 20, not 100 ... we hit the fast * conv path more often * 24/1/10 * - oops, missing braces in write dmask removed spaces between items */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include /** * INTMASK: * @xsize: mask width * @ysize: mask height * @scale: mask scale factor * @offset: mask offset * @coeff: array of mask elements * @filename: the file this mask was read from, or should be written to * * An integer mask. * * @scale lets the mask represent fractional values: for * example, in integer convolution (see im_conv()) the result of the * convolution is divided by @scale and then added to @offset before being * written to the output image. * * @scale and @offset default to 1 and 0. Various functions, such as * im_conv(), will fail if @scale is zero. * * You can read and write the matrix elements in @coeff. */ /** * DOUBLEMASK: * @xsize: mask width * @ysize: mask height * @scale: mask scale factor * @offset: mask offset * @coeff: array of mask elements * @filename: the file this mask was read from, or should be written to * * A floating-point mask. * * As with #INTMASK, in convolution (see im_convf()) the result of the * convolution is divided by @scale and then added to @offset before being * written to the output image. * * @scale and @offset default to 1.0 and 0.0. Various functions, such as * im_conv(), will fail if @scale is zero. * * You can read and write the matrix elements in @coeff. */ /* Size of line buffer for reading. */ #define MAX_LINE (32768) /** * im_free_imask: * @in: mask to free * * Free mask structure and any attached arrays. Return zero, so we can use * these functions as close callbacks. * * See also: im_free_dmask(). * * Returns: zero. */ int im_free_imask( INTMASK *in ) { if( !in ) return( 0 ); IM_FREE( in->coeff ); IM_FREE( in->filename ); IM_FREE( in ); return( 0 ); } /** * im_free_dmask: * @in: mask to free * * Free mask structure and any attached arrays. Return zero, so we can use * these functions as close callbacks. * * See also: im_free_dmask(). * * Returns: zero. */ int im_free_dmask( DOUBLEMASK *in ) { if( !in ) return( 0 ); IM_FREE( in->coeff ); IM_FREE( in->filename ); IM_FREE( in ); return( 0 ); } /** * im_create_imask: * @filename: set mask filename to this * @xsize: mask width * @ysize: mask height * * Create an empty imask. You need to loop over @coeff to set the values. * * See also: im_create_imaskv(). * * Returns: The newly-allocated mask. */ INTMASK * im_create_imask( const char *filename, int xsize, int ysize ) { INTMASK *out; int size = xsize * ysize; /* Check args. */ if( xsize <= 0 || ysize <= 0 || filename == NULL ) { im_error( "im_create_imask", "%s", _( "bad arguments" ) ); return( NULL ); } /* Allocate and initialise structure. */ if( !(out = IM_NEW( NULL, INTMASK )) ) return( NULL ); out->coeff = NULL; out->filename = NULL; out->scale = 1; out->offset = 0; out->xsize = 0; out->ysize = 0; if( !(out->coeff = IM_ARRAY( NULL, size, int )) ) { im_free_imask( out ); return( NULL ); } (void) memset( (char *) out->coeff, 0, size * sizeof( int ) ); if( !(out->filename = im_strdup( NULL, filename )) ) { im_free_imask( out ); return( NULL ); } out->xsize = xsize; out->ysize = ysize; return( out ); } /** * im_create_imaskv: * @filename: set mask filename to this * @xsize: mask width * @ysize: mask height * @...: values to set for the mask * * Create an imask and initialise it from the function parameter list. * * See also: im_create_imask(). * * Returns: The newly-allocated mask. */ INTMASK * im_create_imaskv( const char *filename, int xsize, int ysize, ... ) { va_list ap; INTMASK *out; int i; if( !(out = im_create_imask( filename, xsize, ysize )) ) return( NULL ); va_start( ap, ysize ); for( i = 0; i < xsize * ysize; i++ ) out->coeff[i] = va_arg( ap, int ); va_end( ap ); return( out ); } /** * im_create_dmask: * @filename: set mask filename to this * @xsize: mask width * @ysize: mask height * * Create an empty dmask. You need to loop over @coeff to set the values. * * See also: im_create_dmaskv(), im_vips2mask(). * * Returns: The newly-allocated mask. */ DOUBLEMASK * im_create_dmask( const char *filename, int xsize, int ysize ) { DOUBLEMASK *out; int size = xsize * ysize; /* Check args. */ if( xsize <= 0 || ysize <= 0 || filename == NULL ) { im_error( "im_create_dmask", "%s", _( "bad arguments" ) ); return( NULL ); } /* Allocate and initialise structure. */ if( !(out = IM_NEW( NULL, DOUBLEMASK )) ) return( NULL ); out->coeff = NULL; out->filename = NULL; out->scale = 1.0; out->offset = 0.0; out->xsize = 0; out->ysize = 0; if( !(out->coeff = IM_ARRAY( NULL, size, double )) ) { im_free_dmask( out ); return( NULL ); } (void) memset( (char *) out->coeff, 0, size * sizeof( double ) ); if( !(out->filename = im_strdup( NULL, filename )) ) { im_free_dmask( out ); return( NULL ); } out->xsize = xsize; out->ysize = ysize; return( out ); } /** * im_create_dmaskv: * @filename: set mask filename to this * @xsize: mask width * @ysize: mask height * @...: values to set for the mask * * Create a dmask and initialise it from the function parameter list. * * See also: im_create_dmask(). * * Returns: The newly-allocated mask. */ DOUBLEMASK * im_create_dmaskv( const char *filename, int xsize, int ysize, ... ) { va_list ap; DOUBLEMASK *out; int i; if( !(out = im_create_dmask( filename, xsize, ysize )) ) return( NULL ); va_start( ap, ysize ); for( i = 0; i < xsize * ysize; i++ ) out->coeff[i] = va_arg( ap, double ); va_end( ap ); return( out ); } /* Read a line from a file! */ static int get_line( FILE *fp, char *buf ) { if( !fgets( buf, MAX_LINE, fp ) ) { im_error( "read_mask", "%s", _( "unexpected EOF" ) ); return( -1 ); } return( 0 ); } /* width, height, optional scale, optional offset. */ static int read_header( FILE *fp, int *xs, int *ys, double *scale, double *offset ) { char buf[MAX_LINE]; char *p, *q; double v[4]; int i; /* Read the first line: should contain size and optional * scale + offset. */ if( get_line( fp, buf ) ) return( -1 ); /* Read as space separated doubles. \n is in the break list because * our line will (usually) have a trailing \n which we want to count * as whitespace. */ p = buf; for( i = 0, p = buf; i < 4 && (q = im_break_token( p, " \";,\t\n" )); i++, p = q ) v[i] = g_ascii_strtod( p, NULL ); if( (i != 2 && i != 4) || ceil( v[0] ) != v[0] || ceil( v[1] ) != v[1] || v[0] <= 0 || v[1] <= 0 ) { im_error( "read_header", "%s", _( "error reading matrix header" ) ); return( -1 ); } if( i == 4 && v[2] == 0 ) { im_error( "read_header", "%s", _( "scale should be non-zero" ) ); return( -1 ); } *xs = v[0]; *ys = v[1]; if( i == 2 ) { *scale = 1.0; *offset = 0.0; } else { *scale = v[2]; *offset = v[3]; } return( 0 ); } /** * im_read_dmask: * @filename: read matrix from this file * * Reads a matrix from a file. * * Matrix files have a simple format that's supposed to be easy to create with * a text editor or a spreadsheet. * * The first line has four numbers for width, height, scale and * offset (scale and offset may be omitted, in which case they default to 1.0 * and 0.0). Scale must be non-zero. Width and height must be positive * integers. The numbers are separated by any mixture of spaces, commas, * tabs and quotation marks ("). The scale and offset fields may be * floating-point, and must use '.' * as a decimal separator. * * Subsequent lines each hold one line of matrix data, with numbers again * separated by any mixture of spaces, commas, * tabs and quotation marks ("). The numbers may be floating-point, and must * use '.' * as a decimal separator. * * Extra characters at the ends of lines or at the end of the file are * ignored. * * See also: im_read_imask(), im_gauss_dmask(). * * Returns: the loaded mask on success, or NULL on error. */ DOUBLEMASK * im_read_dmask( const char *filename ) { FILE *fp; double sc, off; int xs, ys; DOUBLEMASK *out; int x, y, i; char buf[MAX_LINE]; if( !(fp = im__file_open_read( filename, NULL, TRUE )) ) return( NULL ); if( read_header( fp, &xs, &ys, &sc, &off ) ) { fclose( fp ); return( NULL ); } if( !(out = im_create_dmask( filename, xs, ys )) ) { fclose( fp ); return( NULL ); } out->scale = sc; out->offset = off; for( i = 0, y = 0; y < ys; y++ ) { char *p; if( get_line( fp, buf ) ) { im_free_dmask( out ); fclose( fp ); return( NULL ); } for( p = buf, x = 0; p && x < xs; x++, i++, p = im_break_token( p, " \t,\";" ) ) out->coeff[i] = g_ascii_strtod( p, NULL ); } fclose( fp ); return( out ); } /** * im_read_imask: * @filename: read matrix from this file * * Reads an integer matrix from a file. * * This function works exactly as im_read_dmask(), but the loaded matrix is * checked for 'int-ness'. All coefficients must be integers, and scale and * offset must be integers. * * See also: im_read_dmask(). * * Returns: the loaded mask on success, or NULL on error. */ INTMASK * im_read_imask( const char *filename ) { DOUBLEMASK *dmask; INTMASK *imask; int i; if( !(dmask = im_read_dmask( filename )) ) return( NULL ); if( ceil( dmask->scale ) != dmask->scale || ceil( dmask->offset ) != dmask->offset ) { im_error( "im_read_imask", "%s", _( "scale and offset should be int" ) ); im_free_dmask( dmask ); return( NULL ); } for( i = 0; i < dmask->xsize * dmask->ysize; i++ ) if( ceil( dmask->coeff[i] ) != dmask->coeff[i] ) { im_error( "im_read_imask", _( "ceofficient at " "position (%d, %d) is not int" ), i % dmask->xsize, i / dmask->xsize ); im_free_dmask( dmask ); return( NULL ); } if( !(imask = im_create_imask( filename, dmask->xsize, dmask->ysize )) ) { im_free_dmask( dmask ); return( NULL ); } imask->scale = dmask->scale; imask->offset = dmask->offset; for( i = 0; i < dmask->xsize * dmask->ysize; i++ ) imask->coeff[i] = dmask->coeff[i]; im_free_dmask( dmask ); return( imask ); } /** * im_scale_dmask: * @in: mask to scale * @filename: filename for returned mask * * Scale the dmask to make an imask with a maximum value of 20. * * See also: im_norm_dmask(). * * Returns: the converted mask, or NULL on error. */ INTMASK * im_scale_dmask( DOUBLEMASK *in, const char *filename ) { const int size = in->xsize * in->ysize; INTMASK *out; double maxval, dsum; int i; int isum; if( im_check_dmask( "im_scale_dmask", in ) || !(out = im_create_imask( filename, in->xsize, in->ysize )) ) return( NULL ); /* Find mask max. */ maxval = in->coeff[0]; for( i = 0; i < size; i++ ) if( in->coeff[i] > maxval ) maxval = in->coeff[i]; /* Copy and scale, setting max to 20. */ for( i = 0; i < size; i++ ) out->coeff[i] = IM_RINT( in->coeff[i] * 20.0 / maxval ); out->offset = in->offset; /* Set the scale to match the adjustment to max. */ isum = 0; dsum = 0.0; for( i = 0; i < size; i++ ) { isum += out->coeff[i]; dsum += in->coeff[i]; } if( dsum == in->scale ) out->scale = isum; else if( dsum == 0.0 ) out->scale = 1.0; else out->scale = IM_RINT( in->scale * isum / dsum ); return( out ); } /** * im_dmask2imask: * @in: mask to convert * @filename: filename for returned mask * * Make an imask from the dmask, rounding to nearest. * * See also: im_scale_dmask(). * * Returns: the converted mask, or NULL on error. */ INTMASK * im_dmask2imask( DOUBLEMASK *in, const char *filename ) { const int size = in->xsize * in->ysize; INTMASK *out; int i; if( im_check_dmask( "im_dmask2imask", in ) || !(out = im_create_imask( filename, in->xsize, in->ysize )) ) return( NULL ); for( i = 0; i < size; i++ ) out->coeff[i] = IM_RINT( in->coeff[i] ); out->offset = IM_RINT( in->offset ); out->scale = IM_RINT( in->scale ); return( out ); } /** * im_imask2dmask: * @in: mask to convert * @filename: filename for returned mask * * Make a dmask from the imask. * * See also: im_dmask2imask(). * * Returns: the converted mask, or NULL on error. */ DOUBLEMASK * im_imask2dmask( INTMASK *in, const char *filename ) { const int size = in->xsize * in->ysize; DOUBLEMASK *out; int i; if( im_check_imask( "im_imask2dmask", in ) || !(out = im_create_dmask( filename, in->xsize, in->ysize )) ) return( NULL ); for( i = 0; i < size; i++ ) out->coeff[i] = in->coeff[i]; out->offset = in->offset; out->scale = in->scale; return( out ); } /** * im_norm_dmask: * @mask: mask to scale * * Normalise the dmask. Apply the scale and offset to each element to make * a mask with scale 1, offset zero. * * See also: im_scale_dmask(). * * Returns: 0 on success, or -1 on error. */ void im_norm_dmask( DOUBLEMASK *mask ) { const int n = mask->xsize * mask->ysize; const double scale = (mask->scale == 0) ? 0 : (1.0 / mask->scale); int i; if( im_check_dmask( "im_norm_dmask", mask ) || (1.0 == scale && 0.0 == mask->offset) ) return; for( i = 0; i < n; i++ ) mask->coeff[i] = mask->coeff[i] * scale + mask->offset; mask->scale = 1.0; mask->offset = 0.0; } /** * im_dup_imask: * @in: mask to duplicate * @filename: filename to set for the new mask * * Duplicate an imask. * * See also: im_dup_dmask(). * * Returns: the mask copy, or NULL on error. */ INTMASK * im_dup_imask( INTMASK *in, const char *filename ) { INTMASK *out; int i; if( im_check_imask( "im_dup_imask", in ) || !(out = im_create_imask( filename, in->xsize, in->ysize )) ) return( NULL ); out->offset = in->offset; out->scale = in->scale; for( i = 0; i < in->xsize * in->ysize; i++ ) out->coeff[i] = in->coeff[i]; return( out ); } /** * im_dup_dmask: * @in: mask to duplicate * @filename: filename to set for the new mask * * Duplicate a dmask. * * See also: im_dup_imask(). * * Returns: the mask copy, or NULL on error. */ DOUBLEMASK * im_dup_dmask( DOUBLEMASK *in, const char *filename ) { DOUBLEMASK *out; int i; if( im_check_dmask( "im_dup_dmask", in ) || !(out = im_create_dmask( filename, in->xsize, in->ysize )) ) return( NULL ); out->offset = in->offset; out->scale = in->scale; for( i = 0; i < in->xsize * in->ysize; i++ ) out->coeff[i] = in->coeff[i]; return( out ); } /* Write to file. */ static int write_line( FILE *fp, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); if( !vfprintf( fp, fmt, ap ) ) { im_error( "write_mask", "%s", _( "write error, disc full?" ) ); return( -1 ); } va_end( ap ); return( 0 ); } static int write_double( FILE *fp, double d ) { char buf[G_ASCII_DTOSTR_BUF_SIZE]; fprintf( fp, "%s", g_ascii_dtostr( buf, sizeof( buf ), d ) ); return( 0 ); } /** * im_write_imask_name: * @in: mask to write * @filename: filename to write to * * Write an imask to a file. See im_read_dmask() for a description of the mask * file format. * * See also: im_write_imask(). * * Returns: 0 on success, or -1 on error. */ int im_write_imask_name( INTMASK *in, const char *filename ) { FILE *fp; int x, y, i; if( im_check_imask( "im_write_imask_name", in ) || !(fp = im__file_open_write( filename, TRUE )) ) return( -1 ); if( write_line( fp, "%d %d", in->xsize, in->ysize ) ) { fclose( fp ); return( -1 ); } if( in->scale != 1 || in->offset != 0 ) write_line( fp, " %d %d", in->scale, in->offset ); write_line( fp, "\n" ); for( i = 0, y = 0; y < in->ysize; y++ ) { for( x = 0; x < in->xsize; x++, i++ ) write_line( fp, "%d ", in->coeff[i] ); if( write_line( fp, "\n" ) ) { fclose( fp ); return( -1 ); } } fclose( fp ); return( 0 ); } /** * im_write_imask: * @in: mask to write * * Write an imask to a file. * * See also: im_write_imask_name(). * * Returns: 0 on success, or -1 on error. */ int im_write_imask( INTMASK *in ) { if( !in->filename ) { im_error( "im_write_imask", "%s", _( "filename not set" ) ); return( -1 ); } return( im_write_imask_name( in, in->filename ) ); } /** * im_write_dmask_name: * @in: mask to write * @filename: filename to write to * * Write a dmask to a file. See im_read_dmask() for a description of the mask * file format. * * See also: im_write_dmask(). * * Returns: 0 on success, or -1 on error. */ int im_write_dmask_name( DOUBLEMASK *in, const char *filename ) { FILE *fp; int x, y, i; if( im_check_dmask( "im_write_dmask_name", in ) || !(fp = im__file_open_write( filename, TRUE )) ) return( -1 ); if( write_line( fp, "%d %d", in->xsize, in->ysize ) ) { fclose( fp ); return( -1 ); } if( in->scale != 1.0 || in->offset != 0.0 ) { write_line( fp, " " ); write_double( fp, in->scale ); write_line( fp, " " ); write_double( fp, in->offset ); } write_line( fp, "\n" ); for( i = 0, y = 0; y < in->ysize; y++ ) { for( x = 0; x < in->xsize; x++, i++ ) { write_double( fp, in->coeff[i] ); write_line( fp, " " ); } if( write_line( fp, "\n" ) ) { fclose( fp ); return( -1 ); } } fclose( fp ); return( 0 ); } /** * im_write_dmask: * @in: mask to write * * Write a dmask to a file. See im_read_dmask() for a description of the mask * file format. * * See also: im_write_dmask_name(). * * Returns: 0 on success, or -1 on error. */ int im_write_dmask( DOUBLEMASK *in ) { if( !in->filename ) { im_error( "im_write_dmask", "%s", _( "filename not set" ) ); return( -1 ); } return( im_write_dmask_name( in, in->filename ) ); } /* Copy an imask into a matrix. Only used internally by matrix package for * invert. */ void im_copy_imask_matrix( INTMASK *mask, int **matrix ) { int x, y; int *p = mask->coeff; for( y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++ ) matrix[x][y] = *p++; } /* Copy a matrix into an imask. */ void im_copy_matrix_imask( int **matrix, INTMASK *mask ) { int x, y; int *p = mask->coeff; for( y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++ ) *p++ = matrix[x][y]; } /* Copy a dmask into a matrix. */ void im_copy_dmask_matrix( DOUBLEMASK *mask, double **matrix ) { int x, y; double *p = mask->coeff; for( y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++ ) matrix[x][y] = *p++; } /* Copy a matrix to a dmask. */ void im_copy_matrix_dmask( double **matrix, DOUBLEMASK *mask ) { int x, y; double *p = mask->coeff; for( y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++ ) *p++ = matrix[x][y]; } /** * im_print_imask: * @in: mask to print * * Print an imask to stdout. * * See also: im_print_dmask(). */ void im_print_imask( INTMASK *in ) { int i, j, k; printf( "%s: %d %d %d %d\n", in->filename, in->xsize, in->ysize, in->scale, in->offset ); for( k = 0, j = 0; j < in->ysize; j++ ) { for( i = 0; i < in->xsize; i++, k++ ) printf( "%d\t", in->coeff[k] ); printf( "\n" ); } } /** * im_print_dmask: * @in: mask to print * * Print a dmask to stdout. * * See also: im_print_imask(). */ void im_print_dmask( DOUBLEMASK *in ) { int i, j, k; printf( "%s: %d %d %f %f\n", in->filename, in->xsize, in->ysize, in->scale, in->offset ); for( k = 0, j = 0; j < in->ysize; j++ ) { for( i = 0; i < in->xsize; i++, k++ ) printf( "%f\t", in->coeff[k] ); printf( "\n" ); } } /** * im_local_dmask: * @out: image to make the mask local to * @mask: mask to local-ize * * @out takes ownership of @mask: when @out is closed, @mask will be closed * for you. If im_local_dmask() itself fails, the mask is also freed. * * See also: im_local_imask(). * * Returns: the mask, or NULL on error. */ DOUBLEMASK * im_local_dmask( VipsImage *out, DOUBLEMASK *mask ) { if( im_check_dmask( "im_local_dmask", mask ) ) return( NULL ); if( im_add_close_callback( out, (im_callback_fn) im_free_dmask, mask, NULL ) ) { im_free_dmask( mask ); return( NULL ); } return( mask ); } /** * im_local_imask: * @out: image to make the mask local to * @mask: mask to local-ize * * @out takes ownership of @mask: when @out is closed, @mask will be closed * for you. If im_local_imask() itself fails, the mask is also freed. * * See also: im_local_dmask(). * * Returns: the mask, or NULL on error. */ INTMASK * im_local_imask( VipsImage *out, INTMASK *mask ) { if( im_check_imask( "im_local_dmask", mask ) ) return( NULL ); if( im_add_close_callback( out, (im_callback_fn) im_free_imask, mask, NULL ) ) { im_free_imask( mask ); return( NULL ); } return( mask ); } libvips-8.9.1/libvips/deprecated/tone.c000066400000000000000000000102161361153320700200630ustar00rootroot00000000000000/* Various functions relating to tone curve adjustment. * * Author: John Cupitt * Written on: 18/7/1995 * 17/9/96 JC * - restrictions on Ps, Pm, Ph relaxed * - restrictions on S, M, H relaxed * 25/7/01 JC * - patched for im_extract_band() change * 11/7/04 * - generalised to im_tone_build_range() ... so you can use it for any * image, not just LabS * 26/3/10 * - cleanups * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /** * im_tone_map: * @in: input image * @out: output image * @lut: look-up table * * Map the first channel of @in through @lut. If @in is IM_CODING_LABQ, unpack * to LABS, map L and then repack. * * @in should be a LABS or LABQ image for this to work * sensibly. * * See also: im_maplut(). * * Returns: 0 on success, -1 on error */ int im_tone_map( IMAGE *in, IMAGE *out, IMAGE *lut ) { IMAGE *t[8]; if( im_check_hist( "im_tone_map", lut ) || im_open_local_array( out, t, 8, "im_tone_map", "p" ) ) return( -1 ); /* If in is IM_CODING_LABQ, unpack. */ if( in->Coding == IM_CODING_LABQ ) { if( im_LabQ2LabS( in, t[0] ) ) return( -1 ); } else t[0] = in; /* Split into bands. */ if( im_extract_band( t[0], t[1], 0 ) ) return( -1 ); if( t[0]->Bands > 1 ) { if( im_extract_bands( t[0], t[2], 1, t[0]->Bands - 1 ) ) return( -1 ); } /* Map L. */ if( im_maplut( t[1], t[3], lut ) ) return( -1 ); /* Recombine bands. */ if( t[0]->Bands > 1 ) { if( im_bandjoin( t[3], t[2], t[4] ) ) return( -1 ); } else t[4] = t[3]; /* If input was LabQ, repack. */ if( in->Coding == IM_CODING_LABQ ) { if( im_LabS2LabQ( t[4], t[5] ) ) return( -1 ); } else t[5] = t[4]; return( im_copy( t[4], out ) ); } /** * im_tone_analyse: * @in: input image * @out: output image * @Ps: shadow point (eg. 0.2) * @Pm: mid-tone point (eg. 0.5) * @Ph: highlight point (eg. 0.8) * @S: shadow adjustment (+/- 30) * @M: mid-tone adjustment (+/- 30) * @H: highlight adjustment (+/- 30) * * As im_tone_build(), but analyse the histogram of @in and use it to * pick the 0.1% and 99.9% points for @Lb and @Lw. * * See also: im_tone_build(). * * Returns: 0 on success, -1 on error */ int im_tone_analyse( IMAGE *in, IMAGE *out, double Ps, double Pm, double Ph, double S, double M, double H ) { IMAGE *t[4]; int low, high; double Lb, Lw; if( im_open_local_array( out, t, 4, "im_tone_map", "p" ) ) return( -1 ); /* If in is IM_CODING_LABQ, unpack. */ if( in->Coding == IM_CODING_LABQ ) { if( im_LabQ2LabS( in, t[0] ) ) return( -1 ); } else t[0] = in; /* Should now be 3-band short. */ if( im_check_uncoded( "im_tone_analyse", t[0] ) || im_check_bands( "im_tone_analyse", t[0], 3 ) || im_check_format( "im_tone_analyse", t[0], IM_BANDFMT_SHORT ) ) return( -1 ); if( im_extract_band( t[0], t[1], 0 ) || im_clip2fmt( t[1], t[2], IM_BANDFMT_USHORT ) ) return( -1 ); if( im_mpercent( t[2], 0.1 / 100.0, &high ) || im_mpercent( t[2], 99.9 / 100.0, &low ) ) return( -1 ); Lb = 100 * low / 32768; Lw = 100 * high / 32768; im_diag( "im_tone_analyse", "set Lb = %g, Lw = %g", Lb, Lw ); return( im_tone_build( out, Lb, Lw, Ps, Pm, Ph, S, M, H ) ); } libvips-8.9.1/libvips/deprecated/video_dispatch.c000066400000000000000000000066461361153320700221170ustar00rootroot00000000000000/* function dispatch tables for video */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /** * SECTION: video * @short_description: various video grabbers * @see_also: image * @stability: Stable * @include: vips/vips.h * * Read an image from a video source. */ static int video_v4l1_vec( im_object *argv ) { IMAGE *out = argv[0]; char *device = (char *) argv[1]; int channel = *((int*)argv[2]); int brightness = *((int*)argv[3]); int colour = *((int*)argv[4]); int contrast = *((int*)argv[5]); int hue = *((int*)argv[6]); int ngrabs = *((int*)argv[7]); return( im_video_v4l1( out, device, channel, brightness, colour, contrast, hue, ngrabs ) ); } static im_arg_desc video_v4l1_arg_types[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "device" ), IM_INPUT_INT( "channel" ), IM_INPUT_INT( "brightness" ), IM_INPUT_INT( "colour" ), IM_INPUT_INT( "contrast" ), IM_INPUT_INT( "hue" ), IM_INPUT_INT( "ngrabs" ) }; static im_function video_v4l1_desc = { "im_video_v4l1", /* Name */ "grab a video frame with v4l1", /* Description */ IM_FN_NOCACHE, /* Flags */ video_v4l1_vec, /* Dispatch function */ IM_NUMBER( video_v4l1_arg_types ), /* Size of arg list */ video_v4l1_arg_types /* Arg list */ }; static int video_test_vec( im_object *argv ) { IMAGE *out = argv[0]; int brightness = *((int*)argv[1]); int error = *((int*)argv[2]); return( im_video_test( out, brightness, error ) ); } static im_arg_desc video_test_arg_types[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "brightness" ), IM_INPUT_INT( "error" ) }; static im_function video_test_desc = { "im_video_test", /* Name */ "test video grabber", /* Description */ IM_FN_NOCACHE, /* Flags */ video_test_vec, /* Dispatch function */ IM_NUMBER( video_test_arg_types ), /* Size of arg list */ video_test_arg_types /* Arg list */ }; static im_function *video_list[] = { &video_test_desc, &video_v4l1_desc }; im_package im__video = { "video", /* Package name */ IM_NUMBER( video_list ), /* Function list */ video_list }; libvips-8.9.1/libvips/deprecated/vips7compat.c000066400000000000000000003102451361153320700213770ustar00rootroot00000000000000/* compat stuff for vips7 * * 4/3/11 * - hacked up */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include /* Split filename into name / mode components. name and mode should both be * FILENAME_MAX chars. * * We look for the ':' splitting the name and mode by searching for the * rightmost occurrence of the regexp "\.[A-Za-z0-9]+:". The initial dot can * be missing if there's a dirsep or start of string, meaning this is a * filename without an extension. * * Examples: * * c:\silly:dir:name\fr:ed.tif:jpeg:95,,,,c:\icc\srgb.icc * -> c:\silly:dir:name\fr:ed.tif jpeg:95,,,,c:\icc\srgb.icc * I180: * -> I180 "" * c:\silly: * -> c:\silly "" * c:\silly * -> c:\silly "" * C:\fixtures\2569067123_aca715a2ee_o.jpg * -> C:\fixtures\2569067123_aca715a2ee_o.jpg "" * * vips8 handles this in a much better way :( */ void im_filename_split( const char *path, char *name, char *mode ) { char *p; size_t len; vips_strncpy( name, path, FILENAME_MAX ); strcpy( mode, "" ); if( (len = strlen( name )) == 0 ) return; /* Search backwards towards start, stopping at each ':' char. */ for( p = name + len - 1; p > name; p -= 1 ) if( *p == ':' ) { char *q; /* We are skipping back over the file extension, * isalnum() is probably sufficient. */ for( q = p - 1; isalnum( *q ) && q > name; q -= 1 ) ; if( *q == '.' ) { break; } /* All the way back to the start? We probably have a * filename with no extension, eg. "I180:" */ if( q == name ) break; /* .. or we could hit a dirsep. Allow win or nix * separators. */ if( *q == '/' || *q == '\\' ) break; } /* Ignore a ':' in column 1, it's probably a drive letter on a * Windows path. */ if( *p == ':' && p - name != 1 ) { vips_strncpy( mode, p + 1, FILENAME_MAX ); *p = '\0'; } } /** * vips_path_filename7: * @path: path to split * * Return the filename part of a vips7 path. For testing only. */ char * vips_path_filename7( const char *path ) { char name[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( path, name, mode ); return( g_strdup( name ) ); } /** * vips_path_mode7: * @path: path to split * * Return the mode part of a vips7 path. For testing only. */ char * vips_path_mode7( const char *path ) { char name[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( path, name, mode ); return( g_strdup( mode ) ); } /* Skip any leading path stuff. Horrible: if this is a filename which came * from win32 and we're a *nix machine, it'll have '\\' not '/' as the * separator :-( * * Try to fudge this ... if the file doesn't contain any of our native * separators, look for the opposite one as well. If there are none of those * either, just return the filename. */ const char * im_skip_dir( const char *path ) { char name[FILENAME_MAX]; char mode[FILENAME_MAX]; const char *p; const char *q; const char native_dir_sep = G_DIR_SEPARATOR; const char non_native_dir_sep = native_dir_sep == '/' ? '\\' : '/'; /* Remove any trailing save modifiers: we don't want '/' or '\' in the * modifier confusing us. */ im_filename_split( path, name, mode ); /* The '\0' char at the end of the string. */ p = name + strlen( name ); /* Search back for the first native dir sep, or failing that, the first * non-native dir sep. */ for( q = p; q > name && q[-1] != native_dir_sep; q-- ) ; if( q == name ) for( q = p; q > name && q[-1] != non_native_dir_sep; q-- ) ; return( path + (q - name) ); } /* Extract suffix from filename, ignoring any mode string. Suffix should be * FILENAME_MAX chars. Include the "." character, if any. */ void im_filename_suffix( const char *path, char *suffix ) { char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p; im_filename_split( path, name, mode ); if( (p = strrchr( name, '.' )) ) strcpy( suffix, p ); else strcpy( suffix, "" ); } /* Does a filename have one of a set of suffixes. Ignore case. */ int im_filename_suffix_match( const char *path, const char *suffixes[] ) { char suffix[FILENAME_MAX]; const char **p; im_filename_suffix( path, suffix ); for( p = suffixes; *p; p++ ) if( g_ascii_strcasecmp( suffix, *p ) == 0 ) return( 1 ); return( 0 ); } /* p points to the start of a buffer ... move it on through the buffer (ready * for the next call), and return the current option (or NULL for option * missing). ',' characters inside options can be escaped with a '\'. */ char * im_getnextoption( char **in ) { char *p; char *q; p = *in; q = p; if( !p || !*p ) return( NULL ); /* Find the next ',' not prefixed with a '\'. If the first character * of p is ',', there can't be a previous escape character. */ for(;;) { if( !(p = strchr( p, ',' )) ) break; if( p == q ) break; if( p[-1] != '\\' ) break; p += 1; } if( p ) { /* Another option follows this one .. set up to pick that out * next time. */ *p = '\0'; *in = p + 1; } else { /* This is the last one. */ *in = NULL; } if( strlen( q ) > 0 ) return( q ); else return( NULL ); } /* Get a suboption string, or NULL. */ char * im_getsuboption( const char *buf ) { char *p, *q, *r; if( !(p = strchr( buf, ':' )) ) /* No suboption. */ return( NULL ); /* Step over the ':'. */ p += 1; /* Need to unescape any \, pairs. Shift stuff down one if we find one. */ for( q = p; *q; q++ ) if( q[0] == '\\' && q[1] == ',' ) for( r = q; *r; r++ ) r[0] = r[1]; return( p ); } VipsImage * im_open( const char *filename, const char *mode ) { VipsImage *image; vips_check_init(); /* We have to go via the old VipsFormat system so we can support the * "filename:option" syntax. * * Use "rs" to turn on seq mode. */ if( strcmp( mode, "r" ) == 0 || strcmp( mode, "rd" ) == 0 ) { if( !(image = vips__deprecated_open_read( filename, FALSE )) ) return( NULL ); } else if( strcmp( mode, "rs" ) == 0 ) { if( !(image = vips__deprecated_open_read( filename, TRUE )) ) return( NULL ); } else if( strcmp( mode, "w" ) == 0 ) { if( !(image = vips__deprecated_open_write( filename )) ) return( NULL ); } else { if( !(image = vips_image_new_mode( filename, mode )) ) return( NULL ); } return( image ); } /* Just for compatibility. New code should use vips_object_local() directly. */ VipsImage * im_open_local( VipsImage *parent, const char *filename, const char *mode ) { VipsImage *image; if( !(image = im_open( filename, mode )) ) return( NULL ); vips_object_local( parent, image ); return( image ); } /* Just for compatibility. New code should use vips_object_local_array(). */ int im_open_local_array( VipsImage *parent, VipsImage **images, int n, const char *filename, const char *mode ) { int i; for( i = 0; i < n; i++ ) if( !(images[i] = im_open_local( parent, filename, mode )) ) return( -1 ); return( 0 ); } typedef struct { im_callback_fn fn; void *a; void *b; } Callback; static void im_add_callback_cb( VipsImage *im, Callback *callback ) { if( callback->fn( callback->a, callback->b ) ) vips_image_set_kill( im, TRUE ); } int im_add_callback( VipsImage *im, const char *name, im_callback_fn fn, void *a, void *b ) { Callback *callback; callback = VIPS_NEW( VIPS_OBJECT( im ), Callback ); callback->fn = fn; callback->a = a; callback->b = b; g_signal_connect( im, name, G_CALLBACK( im_add_callback_cb ), callback ); return( 0 ); } static void im_add_callback_cb1( VipsImage *im, void *x, Callback *callback ) { if( callback->fn( callback->a, callback->b ) ) vips_image_set_kill( im, TRUE ); } int im_add_callback1( VipsImage *im, const char *name, im_callback_fn fn, void *a, void *b ) { Callback *callback; callback = VIPS_NEW( VIPS_OBJECT( im ), Callback ); callback->fn = fn; callback->a = a; callback->b = b; g_signal_connect( im, name, G_CALLBACK( im_add_callback_cb1 ), callback ); return( 0 ); } /* Make something local to an image descriptor ... pass in a constructor * and a destructor, plus three args. */ void * im_local( IMAGE *im, im_construct_fn cons, im_callback_fn dest, void *a, void *b, void *c ) { void *obj; if( !im ) { im_error( "im_local", "%s", _( "NULL image descriptor" ) ); return( NULL ); } if( !(obj = cons( a, b, c )) ) return( NULL ); if( im_add_close_callback( im, (im_callback_fn) dest, obj, a ) ) { dest( obj, a ); return( NULL ); } return( obj ); } /* Make an array of things local to a descriptor ... eg. make 6 local temp * images. */ int im_local_array( IMAGE *im, void **out, int n, im_construct_fn cons, im_callback_fn dest, void *a, void *b, void *c ) { int i; for( i = 0; i < n; i++ ) if( !(out[i] = im_local( im, cons, dest, a, b, c )) ) return( -1 ); return( 0 ); } int im_close( VipsImage *im ) { g_object_unref( im ); return( 0 ); } /* edvips.c needs this */ VipsImage * im_init( const char *filename ) { VipsImage *image; image = vips_image_new(); IM_SETSTR( image->filename, filename ); return( image ); } /* We can't do this with a rename macro since the C++ interface needs * this entrypoint, see VImage.h. * * As a result our fancy ABI check will not work with the vips7 interface. */ int im_init_world( const char *argv0 ) { return( vips_init( argv0 ) ); } /* Prettyprint various header fields. Just for vips7 compat, use * vips_enum_value() instead. */ const char *im_Type2char( VipsInterpretation type ) { return( vips_enum_string( VIPS_TYPE_INTERPRETATION, type ) ); } const char *im_BandFmt2char( VipsBandFormat format ) { return( vips_enum_string( VIPS_TYPE_BAND_FORMAT, format ) ); } const char *im_Coding2char( VipsCoding coding ) { return( vips_enum_string( VIPS_TYPE_CODING, coding ) ); } const char *im_dtype2char( VipsImageType n ) { return( vips_enum_string( VIPS_TYPE_IMAGE_TYPE, n ) ); } const char *im_dhint2char( VipsDemandStyle style ) { return( vips_enum_string( VIPS_TYPE_DEMAND_STYLE, style ) ); } /* Old names for enums, for compat. */ static const char *im_Type[] = { "IM_TYPE_MULTIBAND", /* 0 */ "IM_TYPE_B_W", /* 1 */ "LUMINACE", /* 2 */ "XRAY", /* 3 */ "IR", /* 4 */ "YUV", /* 5 */ "RED_ONLY", /* 6 */ "GREEN_ONLY", /* 7 */ "BLUE_ONLY", /* 8 */ "POWER_SPECTRUM", /* 9 */ "IM_TYPE_HISTOGRAM", /* 10 */ "LUT", /* 11 */ "IM_TYPE_XYZ", /* 12 */ "IM_TYPE_LAB", /* 13 */ "CMC", /* 14 */ "IM_TYPE_CMYK", /* 15 */ "IM_TYPE_LABQ", /* 15 */ "IM_TYPE_RGB", /* 17 */ "IM_TYPE_UCS", /* 18 */ "IM_TYPE_LCH", /* 19 */ "IM_TYPE_LABS", /* 20 */ "", /* 21 */ "IM_TYPE_sRGB", /* 22 */ "IM_TYPE_YXY", /* 23 */ "IM_TYPE_FOURIER", /* 24 */ "IM_TYPE_RGB16", /* 25 */ "IM_TYPE_GREY16", /* 26 */ NULL }; static const char *im_BandFmt[] = { "IM_BANDFMT_UCHAR", "IM_BANDFMT_CHAR", "IM_BANDFMT_USHORT", "IM_BANDFMT_SHORT", "IM_BANDFMT_UINT", "IM_BANDFMT_INT", "IM_BANDFMT_FLOAT", "IM_BANDFMT_COMPLEX", "IM_BANDFMT_DOUBLE", "IM_BANDFMT_DPCOMPLEX", NULL }; static const char *im_Coding[] = { "IM_CODING_NONE", "COLQUANT8", "IM_CODING_LABQ", "IM_CODING_LABQ_COMPRESSED", "RGB_COMPRESSED", "LUM_COMPRESSED", "IM_CODING_RAD", NULL }; static const char *im_dtype[] = { "IM_NONE", "IM_SETBUF", "IM_SETBUF_FOREIGN", "IM_OPENIN", "IM_MMAPIN", "IM_MMAPINRW", "IM_OPENOUT", "IM_PARTIAL", NULL }; static const char *im_dhint[] = { "IM_SMALLTILE", "IM_FATSTRIP", "IM_THINSTRIP", "IM_ANY", NULL }; /* enum string to int, try the GEnum first, then use a compat *char[] for old * names. */ static int lookup_enum( GType type, const char *names[], const char *name ) { GEnumClass *class; GEnumValue *value; int i; class = g_type_class_ref( type ); if( (value = g_enum_get_value_by_nick( class, name )) ) return( value->value ); if( (value = g_enum_get_value_by_name( class, name )) ) return( value->value ); for( i = 0; names[i]; i++ ) if( g_ascii_strcasecmp( names[i], name ) == 0 ) return( i ); return( -1 ); } VipsInterpretation im_char2Type( const char *str ) { return( lookup_enum( VIPS_TYPE_INTERPRETATION, im_Type, str ) ); } VipsBandFormat im_char2BandFmt( const char *str ) { return( lookup_enum( VIPS_TYPE_BAND_FORMAT, im_BandFmt, str ) ); } VipsCoding im_char2Coding( const char *str ) { return( lookup_enum( VIPS_TYPE_CODING, im_Coding, str ) ); } VipsImageType im_char2dtype( const char *str ) { return( lookup_enum( VIPS_TYPE_IMAGE_TYPE, im_dtype, str ) ); } VipsDemandStyle im_char2dhint( const char *str ) { return( lookup_enum( VIPS_TYPE_DEMAND_STYLE, im_dhint, str ) ); } /* Totally useless now. */ const char *im_Compression2char( int n ) { return( "NONE" ); } int im_char2Compression( const char *str ) { return( -1 ); } /* Wrap one / many is being replaced by a class thing. */ typedef struct { im_wrapmany_fn fn; /* Function we call */ void *a, *b; /* User values for function */ } Bundle; /* Maximum number of input images -- why not? */ #define MAX_INPUT_IMAGES (64) /* Convert a VipsRegion. */ static int process_region( VipsRegion *or, void *seq, void *a, void *b ) { VipsRegion **ir = (VipsRegion **) seq; Bundle *bun = (Bundle *) b; PEL *p[MAX_INPUT_IMAGES], *q; int i, y; /* Prepare all input regions and make buffer pointers. */ if( vips_reorder_prepare_many( or->im, ir, &or->valid ) ) return( -1 ); for( i = 0; ir[i]; i++ ) p[i] = (PEL *) VIPS_REGION_ADDR( ir[i], or->valid.left, or->valid.top ); p[i] = NULL; q = (PEL *) VIPS_REGION_ADDR( or, or->valid.left, or->valid.top ); /* Convert linewise. */ for( y = 0; y < or->valid.height; y++ ) { PEL *p1[MAX_INPUT_IMAGES]; /* Make a copy of p[] which the buffer function can mess up if * it wants. */ for( i = 0; ir[i]; i++ ) p1[i] = p[i]; /* Bizarre double-cast stops a bogus gcc 4.1 compiler warning. */ bun->fn( (void **) ((void *)p1), q, or->valid.width, bun->a, bun->b ); /* Move pointers on. */ for( i = 0; ir[i]; i++ ) p[i] += VIPS_REGION_LSKIP( ir[i] ); q += VIPS_REGION_LSKIP( or ); } return( 0 ); } /* Make a copy of an array of input images. */ static IMAGE ** dupims( IMAGE *out, IMAGE **in ) { IMAGE **new; int i, n; for( n = 0; in[n]; n++ ) ; new = VIPS_ARRAY( VIPS_OBJECT( out ), n + 1, IMAGE * ); for( i = 0; i < n; i++ ) new[i] = in[i]; new[n] = NULL; return( new ); } int im_wrapmany( IMAGE **in, IMAGE *out, im_wrapmany_fn fn, void *a, void *b ) { Bundle *bun; int i, n; /* Count input images. */ for( n = 0; in[n]; n++ ) ; if( n >= MAX_INPUT_IMAGES - 1 ) { vips_error( "im_wrapmany", "%s", _( "too many input images" ) ); return( -1 ); } /* Save args. */ bun = VIPS_NEW( VIPS_OBJECT( out ), Bundle ); if( !(in = dupims( out, in )) ) return( -1 ); bun->fn = fn; bun->a = a; bun->b = b; /* Check descriptors --- make sure that our caller has done this * correctly. */ for( i = 0; i < n; i++ ) { if( in[i]->Xsize != out->Xsize || in[i]->Ysize != out->Ysize ) { vips_error( "im_wrapmany", "%s", _( "descriptors differ in size" ) ); return( -1 ); } /* Check io style. */ if( vips_image_pio_input( in[i] ) ) return( -1 ); } /* Don't call vips_image_pipeline_array(), we don't want to copy * fields. */ vips__demand_hint_array( out, VIPS_DEMAND_STYLE_THINSTRIP, in ); if( vips__reorder_set_input( out, in ) ) return( -1 ); /* Generate! */ if( vips_image_generate( out, vips_start_many, (VipsGenerateFn) process_region, vips_stop_many, in, bun ) ) return( -1 ); return( 0 ); } static void wrapone_gen( void **ins, void *out, int width, Bundle *bun, void *dummy ) { ((im_wrapone_fn) (bun->fn)) (ins[0], out, width, bun->a, bun->b ); } int im_wrapone( IMAGE *in, IMAGE *out, im_wrapone_fn fn, void *a, void *b ) { Bundle *bun; IMAGE *invec[2]; /* Heh, yuk. We cast back above. */ bun = VIPS_NEW( VIPS_OBJECT( out ), Bundle ); bun->fn = (im_wrapmany_fn) fn; bun->a = a; bun->b = b; invec[0] = in; invec[1] = NULL; return( im_wrapmany( invec, out, (im_wrapmany_fn) wrapone_gen, bun, NULL ) ); } static void wraptwo_gen( void **ins, void *out, int width, Bundle *bun, void *dummy ) { ((im_wraptwo_fn) (bun->fn)) (ins[0], ins[1], out, width, bun->a, bun->b ); } int im_wraptwo( IMAGE *in1, IMAGE *in2, IMAGE *out, im_wraptwo_fn fn, void *a, void *b ) { Bundle *bun; IMAGE *invec[3]; bun = VIPS_NEW( VIPS_OBJECT( out ), Bundle ); bun->fn = (im_wrapmany_fn) fn; bun->a = a; bun->b = b; invec[0] = in1; invec[1] = in2; invec[2] = NULL; return( im_wrapmany( invec, out, (im_wrapmany_fn) wraptwo_gen, bun, NULL ) ); } /* Save a bit of typing. */ #define UC IM_BANDFMT_UCHAR #define C IM_BANDFMT_CHAR #define US IM_BANDFMT_USHORT #define S IM_BANDFMT_SHORT #define UI IM_BANDFMT_UINT #define I IM_BANDFMT_INT #define F IM_BANDFMT_FLOAT #define X IM_BANDFMT_COMPLEX #define D IM_BANDFMT_DOUBLE #define DX IM_BANDFMT_DPCOMPLEX /* For two integer types, the "largest", ie. one which can represent the * full range of both. */ static int bandfmt_largest[6][6] = { /* UC C US S UI I */ /* UC */ { UC, S, US, S, UI, I }, /* C */ { S, C, I, S, I, I }, /* US */ { US, I, US, I, UI, I }, /* S */ { S, S, I, S, I, I }, /* UI */ { UI, I, UI, I, UI, I }, /* I */ { I, I, I, I, I, I } }; /* For two formats, find one which can represent the full range of both. */ static VipsBandFmt im__format_common( VipsBandFmt in1, VipsBandFmt in2 ) { if( vips_band_format_iscomplex( in1 ) || vips_band_format_iscomplex( in2 ) ) { /* What kind of complex? */ if( in1 == IM_BANDFMT_DPCOMPLEX || in2 == IM_BANDFMT_DPCOMPLEX ) /* Output will be DPCOMPLEX. */ return( IM_BANDFMT_DPCOMPLEX ); else return( IM_BANDFMT_COMPLEX ); } else if( vips_bandfmt_isfloat( in1 ) || vips_bandfmt_isfloat( in2 ) ) { /* What kind of float? */ if( in1 == IM_BANDFMT_DOUBLE || in2 == IM_BANDFMT_DOUBLE ) return( IM_BANDFMT_DOUBLE ); else return( IM_BANDFMT_FLOAT ); } else /* Must be int+int -> int. */ return( bandfmt_largest[in1][in2] ); } int im__formatalike_vec( IMAGE **in, IMAGE **out, int n ) { int i; VipsBandFmt fmt; g_assert( n >= 1 ); fmt = in[0]->BandFmt; for( i = 1; i < n; i++ ) fmt = im__format_common( fmt, in[i]->BandFmt ); for( i = 0; i < n; i++ ) if( im_clip2fmt( in[i], out[i], fmt ) ) return( -1 ); return( 0 ); } int im__formatalike( IMAGE *in1, IMAGE *in2, IMAGE *out1, IMAGE *out2 ) { IMAGE *in[2]; IMAGE *out[2]; in[0] = in1; in[1] = in2; out[0] = out1; out[1] = out2; return( im__formatalike_vec( in, out, 2 ) ); } /* Make an n-band image. Input 1 or n bands. */ int im__bandup( const char *domain, IMAGE *in, IMAGE *out, int n ) { IMAGE *bands[256]; int i; if( in->Bands == n ) return( vips_image_write( in, out ) ); if( in->Bands != 1 ) { im_error( domain, _( "not one band or %d bands" ), n ); return( -1 ); } if( n > 256 || n < 1 ) { im_error( domain, "%s", _( "bad bands" ) ); return( -1 ); } for( i = 0; i < n; i++ ) bands[i] = in; return( im_gbandjoin( bands, out, n ) ); } int im__bandalike_vec( const char *domain, IMAGE **in, IMAGE **out, int n ) { int i; int max_bands; g_assert( n >= 1 ); max_bands = in[0]->Bands; for( i = 1; i < n; i++ ) max_bands = IM_MAX( max_bands, in[i]->Bands ); for( i = 0; i < n; i++ ) if( im__bandup( domain, in[i], out[i], max_bands ) ) return( -1 ); return( 0 ); } int im__bandalike( const char *domain, IMAGE *in1, IMAGE *in2, IMAGE *out1, IMAGE *out2 ) { IMAGE *in[2]; IMAGE *out[2]; in[0] = in1; in[1] = in2; out[0] = out1; out[1] = out2; if( im__bandalike_vec( domain, in, out, 2 ) ) return( -1 ); return( 0 ); } VipsVector * im__init_program( VipsVector *vectors[IM_BANDFMT_LAST], VipsBandFmt format_table[IM_BANDFMT_LAST], VipsBandFmt fmt ) { int isize = im__sizeof_bandfmt[fmt]; int osize = im__sizeof_bandfmt[format_table[fmt]]; VipsVector *v; v = vips_vector_new( "binary arith", osize ); vips_vector_source_name( v, "s1", isize ); vips_vector_source_name( v, "s2", isize ); vips_vector_temporary( v, "t1", osize ); vips_vector_temporary( v, "t2", osize ); vectors[fmt] = v; return( v ); } void im__compile_programs( VipsVector *vectors[IM_BANDFMT_LAST] ) { int fmt; for( fmt = 0; fmt < IM_BANDFMT_LAST; fmt++ ) { if( vectors[fmt] && !vips_vector_compile( vectors[fmt] ) ) IM_FREEF( vips_vector_free, vectors[fmt] ); } #ifdef DEBUG printf( "im__compile_programs: " ); for( fmt = 0; fmt < IM_BANDFMT_LAST; fmt++ ) if( vectors[fmt] ) printf( "%s ", im_BandFmt2char( fmt ) ); printf( "\n" ); #endif /*DEBUG*/ } int im_add( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "add", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_subtract( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "subtract", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_multiply( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "multiply", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_divide( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "divide", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_avg( IMAGE *in, double *out ) { return( vips_avg( in, out, NULL ) ); } int im_deviate( IMAGE *in, double *out ) { return( vips_deviate( in, out, NULL ) ); } int im_generate( VipsImage *im, im_start_fn start, im_generate_fn generate, im_stop_fn stop, void *a, void *b ) { return( vips_image_generate( im, start, (VipsGenerateFn) generate, stop, a, b ) ); } int im_minpos( IMAGE *in, int *xpos, int *ypos, double *out ) { return( vips_min( in, out, "x", xpos, "y", ypos, NULL ) ); } int im_min( IMAGE *in, double *out ) { return( im_minpos( in, NULL, NULL, out ) ); } int im_maxpos( IMAGE *in, int *xpos, int *ypos, double *out ) { return( vips_max( in, out, "x", xpos, "y", ypos, NULL ) ); } int im_max( IMAGE *in, double *out ) { return( im_maxpos( in, NULL, NULL, out ) ); } #define MAX_IMAGES 100 int im_demand_hint (IMAGE * im, VipsDemandStyle hint, ...) { va_list ap; int i; IMAGE *ar[MAX_IMAGES]; va_start (ap, hint); for (i = 0; i < MAX_IMAGES && (ar[i] = va_arg (ap, IMAGE *)); i++) ; va_end (ap); if (i == MAX_IMAGES) { im_error ("im_demand_hint", "%s", _("too many images")); return (-1); } vips__demand_hint_array (im, hint, ar); return (0); } int im_cp_descv (IMAGE * im, ...) { va_list ap; int i; IMAGE *ar[MAX_IMAGES]; va_start (ap, im); for (i = 0; i < MAX_IMAGES && (ar[i] = va_arg (ap, IMAGE *)); i++) ; va_end (ap); if (i == MAX_IMAGES) { im_error ("im_cp_descv", "%s", _("too many images")); return (-1); } return (vips__image_copy_fields_array (im, ar)); } int im_cp_desc(IMAGE *out, IMAGE *in ) { return( im_cp_descv( out, in, NULL)); } int im_copy_set( IMAGE *in, IMAGE *out, VipsType type, float xres, float yres, int xoffset, int yoffset ) { VipsImage *x; if( vips_copy( in, &x, "interpretation", type, "xres", xres, "yres", yres, "xoffset", xoffset, "yoffset", yoffset, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_copy_morph( IMAGE *in, IMAGE *out, int bands, VipsBandFmt bandfmt, VipsCoding coding ) { VipsImage *x; if( vips_copy( in, &x, "bands", bands, "format", bandfmt, "coding", coding, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_copy( IMAGE *in, IMAGE *out ) { return( vips_image_write( in, out ) ); } int im_copy_swap( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_byteswap( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_copy_set_meta( IMAGE *in, IMAGE *out, const char *field, GValue *value ) { if( vips_image_write( in, out ) ) return( -1 ); (void) im_meta_set( out, field, value ); return( 0 ); } int im_copy_native( IMAGE *in, IMAGE *out, gboolean is_msb_first ) { if( is_msb_first != im_amiMSBfirst() ) return( im_copy_swap( in, out ) ); else return( vips_image_write( in, out ) ); } int im_embed( IMAGE *in, IMAGE *out, int type, int x, int y, int width, int height ) { VipsImage *t; if( vips_embed( in, &t, x, y, width, height, "extend", type, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_fliphor( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_flip( in, &t, VIPS_DIRECTION_HORIZONTAL, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rot90( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_rot( in, &t, VIPS_ANGLE_D90, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rot180( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_rot( in, &t, VIPS_ANGLE_D180, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rot270( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_rot( in, &t, VIPS_ANGLE_D270, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_flipver( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_flip( in, &t, VIPS_DIRECTION_VERTICAL, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_insert( IMAGE *main, IMAGE *sub, IMAGE *out, int x, int y ) { VipsImage *t; if( vips_insert( main, sub, &t, x, y, "expand", TRUE, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_insert_noexpand( IMAGE *main, IMAGE *sub, IMAGE *out, int x, int y ) { VipsImage *t; if( vips_insert( main, sub, &t, x, y, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_lrjoin( IMAGE *left, IMAGE *right, IMAGE *out ) { VipsImage *t; if( vips_join( left, right, &t, VIPS_DIRECTION_HORIZONTAL, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_tbjoin( IMAGE *left, IMAGE *right, IMAGE *out ) { VipsImage *t; if( vips_join( left, right, &t, VIPS_DIRECTION_VERTICAL, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_extract_area( IMAGE *in, IMAGE *out, int left, int top, int width, int height ) { VipsImage *t; if( vips_extract_area( in, &t, left, top, width, height, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_extract_bands( IMAGE *in, IMAGE *out, int band, int nbands ) { VipsImage *t; if( vips_extract_band( in, &t, band, "n", nbands, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_extract_band( IMAGE *in, IMAGE *out, int band ) { return( im_extract_bands( in, out, band, 1 ) ); } int im_extract_areabands( IMAGE *in, IMAGE *out, int left, int top, int width, int height, int band, int nbands ) { VipsImage *t1, *t2; if( vips_extract_area( in, &t1, left, top, width, height, NULL ) ) return( -1 ); if( vips_extract_band( t1, &t2, band, "n", nbands, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_replicate( IMAGE *in, IMAGE *out, int across, int down ) { VipsImage *t; if( vips_replicate( in, &t, across, down, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_clip2fmt( IMAGE *in, IMAGE *out, VipsBandFmt fmt ) { VipsImage *t; if( vips_cast( in, &t, fmt, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } size_t im_ref_string_get_length( const GValue *value ) { size_t length; (void) vips_value_get_ref_string( value, &length ); return( length ); } int im_bandjoin( VipsImage *in1, VipsImage *in2, VipsImage *out ) { VipsImage *t; if( vips_bandjoin2( in1, in2, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_gbandjoin( VipsImage **in, VipsImage *out, int n ) { VipsImage *t; if( vips_bandjoin( in, &t, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rank_image( VipsImage **in, VipsImage *out, int n, int index ) { VipsImage *t; if( vips_bandrank( in, &t, n, "index", index, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_maxvalue( IMAGE **in, IMAGE *out, int n ) { return( im_rank_image( in, out, n, n - 1 ) ); } int im_invert( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_invert( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_sign( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_sign( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_abs( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_abs( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_bandmean( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_bandmean( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_lintra( double a, IMAGE *in, double b, IMAGE *out ) { VipsImage *t; if( vips_linear1( in, &t, a, b, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_lintra_vec( int n, double *a, IMAGE *in, double *b, IMAGE *out ) { VipsImage *t; if( vips_linear( in, &t, a, b, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_black( IMAGE *out, int x, int y, int bands ) { VipsImage *t; if( vips_black( &t, x, y, "bands", bands, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_identity_ushort( VipsImage *lut, int bands, int sz ) { VipsImage *t; if( vips_identity( &t, "bands", bands, "ushort", TRUE, "size", sz, NULL ) ) return( -1 ); if( vips_image_write( t, lut ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_identity( VipsImage *lut, int bands ) { VipsImage *t; if( vips_identity( &t, "bands", bands, NULL ) ) return( -1 ); if( vips_image_write( t, lut ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_gaussnoise( VipsImage *out, int x, int y, double mean, double sigma ) { VipsImage *t; if( vips_gaussnoise( &t, x, y, "mean", mean, "sigma", sigma, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_grid( VipsImage *in, VipsImage *out, int tile_height, int across, int down ) { VipsImage *t; if( vips_grid( in, &t, tile_height, across, down, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_scale( VipsImage *in, VipsImage *out ) { VipsImage *t; if( vips_scale( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_msb( VipsImage *in, VipsImage *out ) { VipsImage *t; if( vips_msb( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_msb_band( VipsImage *in, VipsImage *out, int band ) { VipsImage *t; if( vips_msb( in, &t, "band", band, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_make_xy( IMAGE *out, const int xsize, const int ysize ) { VipsImage *t; if( vips_xyz( &t, xsize, ysize, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_zone( IMAGE *out, int size ) { VipsImage *t; if( vips_zone( &t, size, size, "uchar", TRUE, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_fzone( IMAGE *out, int size ) { VipsImage *t; if( vips_zone( &t, size, size, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_sines( IMAGE *out, int xsize, int ysize, double horfreq, double verfreq ) { VipsImage *t; if( vips_sines( &t, xsize, ysize, "hfreq", horfreq, "vfreq", verfreq, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_text( IMAGE *out, const char *text, const char *font, int width, int align, int dpi ) { VipsImage *t; if( vips_text( &t, text, "font", font, "width", width, "align", align, "dpi", dpi, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_system( VipsImage *im, const char *cmd, char **out ) { VipsArea *area; VipsImage **array; char *str; area = vips_area_new_array_object( 1 ); array = (VipsImage **) area->data; array[0] = im; if( vips_system( cmd, "in", area, "in_format", "%s.v", "log", &str, NULL ) ) { vips_area_unref( area ); return( -1 ); } vips_area_unref( area ); if( out ) *out = str; return( 0 ); } VipsImage * im_system_image( VipsImage *im, const char *in_format, const char *out_format, const char *cmd_format, char **log ) { VipsArrayImage *array; char *str; VipsImage *out; array = vips_array_image_newv( 1, im ); /* im will be unreffed when area is unreffed. */ g_object_ref( im ); if( vips_system( cmd_format, "in", array, "out", &out, "in_format", in_format, "out_format", out_format, "log", &str, NULL ) ) { vips_area_unref( VIPS_AREA( array ) ); return( NULL ); } vips_area_unref( VIPS_AREA( array ) ); if( log ) *log = str; else g_free( str ); return( out ); } int im_wrap( IMAGE *in, IMAGE *out, int x, int y ) { VipsImage *t; if( vips_wrap( in, &t, "x", x, "y", y, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rotquad( IMAGE *in, IMAGE *out ) { return( im_wrap( in, out, in->Xsize / 2, in->Ysize / 2 ) ); } int im_scaleps( VipsImage *in, VipsImage *out ) { VipsImage *t; if( vips_scale( in, &t, "log", TRUE, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_zoom( VipsImage *in, VipsImage *out, int xfac, int yfac ) { VipsImage *t; if( vips_zoom( in, &t, xfac, yfac, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_subsample( VipsImage *in, VipsImage *out, int xfac, int yfac ) { VipsImage *t; if( vips_subsample( in, &t, xfac, yfac, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int vips__math( VipsImage *in, VipsImage *out, VipsOperationMath math ) { VipsImage *t; if( vips_math( in, &t, math, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_sintra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_SIN ) ); } int im_costra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_COS ) ); } int im_tantra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_TAN ) ); } int im_asintra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_ASIN ) ); } int im_acostra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_ACOS ) ); } int im_atantra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_ATAN ) ); } int im_logtra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_LOG ) ); } int im_log10tra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_LOG10 ) ); } int im_exptra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_EXP ) ); } int im_exp10tra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_EXP10 ) ); } DOUBLEMASK * im_stats( VipsImage *in ) { VipsImage *t; DOUBLEMASK *msk; if( vips_stats( in, &t, NULL ) ) return( NULL ); if( !(msk = im_vips2mask( t, "im_stats" )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } DOUBLEMASK * im_gauss_dmask( const char *filename, double sigma, double min_ampl ) { VipsImage *t; DOUBLEMASK *msk; if( vips_gaussmat( &t, sigma, min_ampl, "precision", VIPS_PRECISION_FLOAT, NULL ) ) return( NULL ); if( !(msk = im_vips2mask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } DOUBLEMASK * im_gauss_dmask_sep( const char *filename, double sigma, double min_ampl ) { VipsImage *t; DOUBLEMASK *msk; if( vips_gaussmat( &t, sigma, min_ampl, "precision", VIPS_PRECISION_FLOAT, "separable", TRUE, NULL ) ) return( NULL ); if( !(msk = im_vips2mask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } INTMASK * im_gauss_imask( const char *filename, double sigma, double min_ampl ) { VipsImage *t; INTMASK *msk; if( vips_gaussmat( &t, sigma, min_ampl, NULL ) ) return( NULL ); if( !(msk = im_vips2imask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } INTMASK * im_gauss_imask_sep( const char *filename, double sigma, double min_ampl ) { VipsImage *t; INTMASK *msk; if( vips_gaussmat( &t, sigma, min_ampl, "separable", TRUE, NULL ) ) return( NULL ); if( !(msk = im_vips2imask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } INTMASK * im_log_imask( const char *filename, double sigma, double min_ampl ) { VipsImage *t; INTMASK *msk; if( vips_logmat( &t, sigma, min_ampl, NULL ) ) return( NULL ); if( !(msk = im_vips2imask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } DOUBLEMASK * im_log_dmask( const char *filename, double sigma, double min_ampl ) { VipsImage *t; DOUBLEMASK *msk; if( vips_logmat( &t, sigma, min_ampl, "precision", VIPS_PRECISION_FLOAT, NULL ) ) return( NULL ); if( !(msk = im_vips2mask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } int im_recomb( IMAGE *in, IMAGE *out, DOUBLEMASK *recomb ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_mask2vips( recomb, t1 ) ) return( -1 ); if( vips_recomb( in, &t2, t1, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_compass( VipsImage *in, VipsImage *out, INTMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_imask2vips( mask, t1 ) ) return( -1 ); if( vips_compass( in, &t2, t1, "times", 8, "angle", VIPS_ANGLE45_D45, "precision", VIPS_PRECISION_INTEGER, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_lindetect( IMAGE *in, IMAGE *out, INTMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_imask2vips( mask, t1 ) ) return( -1 ); if( vips_compass( in, &t2, t1, "times", 4, "angle", VIPS_ANGLE45_D45, "precision", VIPS_PRECISION_INTEGER, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_gradient( IMAGE *in, IMAGE *out, INTMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_imask2vips( mask, t1 ) ) return( -1 ); if( vips_compass( in, &t2, t1, "times", 2, "angle", VIPS_ANGLE45_D90, "combine", VIPS_COMBINE_SUM, "precision", VIPS_PRECISION_INTEGER, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_convsep_raw( IMAGE *in, IMAGE *out, INTMASK *mask ) { im_error( "im_convsep_raw", "no compat function" ); return( -1 ); } int im_convsep( IMAGE *in, IMAGE *out, INTMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_imask2vips( mask, t1 ) ) return( -1 ); if( vips_convsep( in, &t2, t1, "precision", VIPS_PRECISION_INTEGER, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_convsep_f_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { im_error( "im_convsep_raw", "no compat function" ); return( -1 ); } int im_convsep_f( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_mask2vips( mask, t1 ) ) return( -1 ); if( vips_convsep( in, &t2, t1, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_conv( VipsImage *in, VipsImage *out, INTMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_imask2vips( mask, t1 ) ) return( -1 ); if( vips_convi( in, &t2, t1, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_conv_raw( VipsImage *in, VipsImage *out, INTMASK *mask ) { im_error( "im_conv_raw", "no compat function" ); return( -1 ); } int im_conv_f( VipsImage *in, VipsImage *out, DOUBLEMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_mask2vips( mask, t1 ) ) return( -1 ); if( vips_convf( in, &t2, t1, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_aconvsep( VipsImage *in, VipsImage *out, DOUBLEMASK *mask, int n_layers ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_mask2vips( mask, t1 ) ) return( -1 ); if( vips_convasep( in, &t2, t1, "layers", n_layers, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_aconv( VipsImage *in, VipsImage *out, DOUBLEMASK *mask, int n_layers, int cluster ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_mask2vips( mask, t1 ) ) return( -1 ); if( vips_conva( in, &t2, t1, "layers", n_layers, "cluster", cluster, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_conv_f_raw( VipsImage *in, VipsImage *out, DOUBLEMASK *mask ) { im_error( "im_conv_f_raw", "no compat function" ); return( -1 ); } int im_addgnoise( IMAGE *in, IMAGE *out, double sigma ) { IMAGE *t; if( !(t = im_open_local( out, "im_addgnoise", "p" )) || im_gaussnoise( t, in->Xsize, in->Ysize, 0, sigma ) || im_add( in, t, out ) ) return( -1 ); return( 0 ); } int im_contrast_surface_raw( IMAGE *in, IMAGE *out, int half_win_size, int spacing ) { im_error( "im_contrast_surface_raw", "no compat function" ); return( -1 ); } /* This replaces some custom code in 7.36 and earlier. The hand-made one was * slower for spacing == 1, though faster for large values of spacing. * * Not worth maintaining a special operator for. */ int im_contrast_surface( IMAGE *in, IMAGE *out, int half_win_size, int spacing ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 10 ); int size = half_win_size * 2; int x, y; t[0] = vips_image_new_matrixv( 1, 2, -1.0, 1.0 ); t[1] = vips_image_new_matrixv( 2, 1, -1.0, 1.0 ); t[8] = vips_image_new_matrix( size, size ); for( y = 0; y < size; y++ ) for( x = 0; x < size; x++ ) *VIPS_MATRIX( t[8], x, y ) = 1.0; if( vips_conv( in, &t[2], t[0], "precision", VIPS_PRECISION_INTEGER, NULL ) || vips_conv( in, &t[3], t[1], "precision", VIPS_PRECISION_INTEGER, NULL ) || vips_abs( t[2], &t[4], NULL ) || vips_abs( t[3], &t[5], NULL ) || vips_add( t[4], t[5], &t[6], NULL ) || vips_conv( t[6], &t[7], t[8], "precision", VIPS_PRECISION_INTEGER, NULL ) || vips_subsample( t[7], &t[9], spacing, spacing, NULL ) || vips_image_write( t[9], out ) ) return( -1 ); return( 0 ); } int im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ) { im_error( "im_spcor_raw", "no compat function" ); return( -1 ); } int im_spcor( IMAGE *in, IMAGE *ref, IMAGE *out ) { VipsImage *x; if( vips_call( "spcor", in, ref, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_fastcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ) { im_error( "im_fastcor_raw", "no compat function" ); return( -1 ); } int im_fastcor( IMAGE *in, IMAGE *ref, IMAGE *out ) { VipsImage *x; if( vips_call( "fastcor", in, ref, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_sharpen( IMAGE *in, IMAGE *out, int mask_size, double x1, double y2, double y3, double m1, double m2 ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 2 ); /* im_sharpen() always recoded as labq and im_benchmark() depends * upon this behaviour. */ if( vips_call( "sharpen", in, &t[0], "sigma", mask_size / 4.0, "x1", x1, "y2", y2, "y3", y3, "m1", m1, "m2", m2, NULL ) || vips_colourspace( t[0], &t[1], VIPS_INTERPRETATION_LABQ, NULL ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } static int vips__round( VipsImage *in, VipsImage *out, VipsOperationRound round ) { VipsImage *t; if( vips_round( in, &t, round, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rint( IMAGE *in, IMAGE *out ) { return( vips__round( in, out, VIPS_OPERATION_ROUND_RINT ) ); } int im_floor( IMAGE *in, IMAGE *out ) { return( vips__round( in, out, VIPS_OPERATION_ROUND_FLOOR ) ); } int im_ceil( IMAGE *in, IMAGE *out ) { return( vips__round( in, out, VIPS_OPERATION_ROUND_CEIL ) ); } static int vips__relational( IMAGE *in1, IMAGE *in2, IMAGE *out, VipsOperationRelational relational ) { VipsImage *t; if( vips_relational( in1, in2, &t, relational, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_equal( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_EQUAL ) ); } int im_notequal( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_NOTEQ ) ); } int im_less( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_LESS ) ); } int im_lesseq( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_LESSEQ ) ); } int im_more( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_MORE ) ); } int im_moreeq( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_MOREEQ ) ); } static int vips__relational_vec( IMAGE *in, IMAGE *out, VipsOperationRelational relational, double *c, int n ) { VipsImage *t; if( vips_relational_const( in, &t, relational, c, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_equal_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_EQUAL, c, n ) ); } int im_notequal_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_NOTEQ, c, n ) ); } int im_less_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_LESS, c, n ) ); } int im_lesseq_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_LESSEQ, c, n ) ); } int im_more_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_MORE, c, n ) ); } int im_moreeq_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_MOREEQ, c, n ) ); } int im_equalconst( IMAGE *in, IMAGE *out, double c ) { return( im_equal_vec( in, out, 1, &c ) ); } int im_notequalconst( IMAGE *in, IMAGE *out, double c ) { return( im_notequal_vec( in, out, 1, &c ) ); } int im_lessconst( IMAGE *in, IMAGE *out, double c ) { return( im_less_vec( in, out, 1, &c ) ); } int im_lesseqconst( IMAGE *in, IMAGE *out, double c ) { return( im_lesseq_vec( in, out, 1, &c ) ); } int im_moreconst( IMAGE *in, IMAGE *out, double c ) { return( im_more_vec( in, out, 1, &c ) ); } int im_moreeqconst( IMAGE *in, IMAGE *out, double c ) { return( im_moreeq_vec( in, out, 1, &c ) ); } int im_remainder( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *t; if( vips_remainder( in1, in2, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_remainder_vec( IMAGE *in, IMAGE *out, int n, double *c ) { VipsImage *t; if( vips_remainder_const( in, &t, c, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_remainderconst( IMAGE *in, IMAGE *out, double c ) { return( im_remainder_vec( in, out, 1, &c ) ); } static int vips__boolean( IMAGE *in1, IMAGE *in2, IMAGE *out, VipsOperationBoolean boolean ) { VipsImage *t; if( vips_boolean( in1, in2, &t, boolean, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_andimage( VipsImage *in1, VipsImage *in2, VipsImage *out ) { return( vips__boolean( in1, in2, out, VIPS_OPERATION_BOOLEAN_AND ) ); } int im_orimage( VipsImage *in1, VipsImage *in2, VipsImage *out ) { return( vips__boolean( in1, in2, out, VIPS_OPERATION_BOOLEAN_OR ) ); } int im_eorimage( VipsImage *in1, VipsImage *in2, VipsImage *out ) { return( vips__boolean( in1, in2, out, VIPS_OPERATION_BOOLEAN_EOR ) ); } static int vips__boolean_vec( IMAGE *in, IMAGE *out, VipsOperationBoolean boolean, double *c, int n ) { VipsImage *t; if( vips_boolean_const( in, &t, boolean, c, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_andimage_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__boolean_vec( in, out, VIPS_OPERATION_BOOLEAN_AND, c, n ) ); } int im_orimage_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__boolean_vec( in, out, VIPS_OPERATION_BOOLEAN_OR, c, n ) ); } int im_eorimage_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__boolean_vec( in, out, VIPS_OPERATION_BOOLEAN_EOR, c, n ) ); } int im_shiftleft_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( vips__boolean_vec( in, out, VIPS_OPERATION_BOOLEAN_LSHIFT, c, n ) ); } int im_shiftright_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( vips__boolean_vec( in, out, VIPS_OPERATION_BOOLEAN_RSHIFT, c, n ) ); } int im_andimageconst( IMAGE *in, IMAGE *out, double c ) { return( im_andimage_vec( in, out, 1, &c ) ); } int im_orimageconst( IMAGE *in, IMAGE *out, double c ) { return( im_orimage_vec( in, out, 1, &c ) ); } int im_eorimageconst( IMAGE *in, IMAGE *out, double c ) { return( im_eorimage_vec( in, out, 1, &c ) ); } int im_shiftleft( IMAGE *in, IMAGE *out, int n ) { double c = n; return( im_shiftleft_vec( in, out, 1, &c ) ); } int im_shiftright( IMAGE *in, IMAGE *out, int n ) { double c = n; return( im_shiftright_vec( in, out, 1, &c ) ); } static int vips__math2_vec( IMAGE *in, IMAGE *out, VipsOperationMath2 math2, double *c, int n ) { VipsImage *t; if( vips_math2_const( in, &t, math2, c, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_powtra_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__math2_vec( in, out, VIPS_OPERATION_MATH2_POW, c, n ) ); } int im_powtra( IMAGE *in, IMAGE *out, double c ) { return( im_powtra_vec( in, out, 1, &c ) ); } int im_expntra_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( vips__math2_vec( in, out, VIPS_OPERATION_MATH2_WOP, c, n ) ); } int im_expntra( IMAGE *in, IMAGE *out, double c ) { return( im_expntra_vec( in, out, 1, &c ) ); } int im_ifthenelse( VipsImage *c, VipsImage *a, VipsImage *b, VipsImage *out ) { VipsImage *t; if( vips_ifthenelse( c, a, b, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_blend( VipsImage *c, VipsImage *a, VipsImage *b, VipsImage *out ) { VipsImage *t; if( vips_ifthenelse( c, a, b, &t, "blend", TRUE, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int vips__complex( VipsImage *in, VipsImage *out, VipsOperationComplex cmplx ) { VipsImage *t; if( vips_complex( in, &t, cmplx, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_c2amph( IMAGE *in, IMAGE *out ) { return( vips__complex( in, out, VIPS_OPERATION_COMPLEX_POLAR ) ); } int im_c2rect( IMAGE *in, IMAGE *out ) { return( vips__complex( in, out, VIPS_OPERATION_COMPLEX_RECT ) ); } static int vips__complexget( VipsImage *in, VipsImage *out, VipsOperationComplexget get ) { VipsImage *t; if( vips_complexget( in, &t, get, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_c2real( IMAGE *in, IMAGE *out ) { return( vips__complexget( in, out, VIPS_OPERATION_COMPLEXGET_REAL ) ); } int im_c2imag( IMAGE *in, IMAGE *out ) { return( vips__complexget( in, out, VIPS_OPERATION_COMPLEXGET_IMAG ) ); } int im_ri2c( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "complexform", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_cache( VipsImage *in, VipsImage *out, int width, int height, int max ) { return( vips_sink_screen( in, out, NULL, width, height, max, 0, NULL, NULL ) ); } int im_argb2rgba( VipsImage *in, VipsImage *out ) { /* No longer exists, just a null op. */ return( vips_image_write( in, out ) ); } int im_shrink( VipsImage *in, VipsImage *out, double xshrink, double yshrink ) { VipsImage *x; if( vips_shrink( in, &x, xshrink, yshrink, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_eye( IMAGE *out, const int xsize, const int ysize, const double factor ) { VipsImage *x; if( vips_eye( &x, xsize, ysize, "factor", factor, "uchar", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_feye( IMAGE *out, const int xsize, const int ysize, const double factor ) { VipsImage *x; if( vips_eye( &x, xsize, ysize, "factor", factor, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_grey( IMAGE *out, const int xsize, const int ysize ) { VipsImage *x; if( vips_grey( &x, xsize, ysize, "uchar", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_fgrey( IMAGE *out, const int xsize, const int ysize ) { VipsImage *x; if( vips_grey( &x, xsize, ysize, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_buildlut( DOUBLEMASK *input, VipsImage *out ) { VipsImage *mat; VipsImage *x; mat = vips_image_new(); if( im_mask2vips( input, mat ) ) return( -1 ); if( vips_buildlut( mat, &x, NULL ) ) { g_object_unref( mat ); return( -1 ); } g_object_unref( mat ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_invertlut( DOUBLEMASK *input, VipsImage *out, int size ) { VipsImage *mat; VipsImage *x; mat = vips_image_new(); if( im_mask2vips( input, mat ) ) return( -1 ); if( vips_invertlut( mat, &x, "size", size, NULL ) ) { g_object_unref( mat ); return( -1 ); } g_object_unref( mat ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_tone_build_range( IMAGE *out, int in_max, int out_max, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) { VipsImage *t; if( vips_tonelut( &t, "in_max", in_max, "out_max", out_max, "Lb", Lb, "Lw", Lw, "Ps", Ps, "Pm", Pm, "Ph", Ph, "S", S, "M", M, "H", H, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_tone_build( IMAGE *out, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) { IMAGE *t1; if( !(t1 = im_open_local( out, "im_tone_build", "p" )) || im_tone_build_range( t1, 32767, 32767, Lb, Lw, Ps, Pm, Ph, S, M, H ) || im_clip2fmt( t1, out, IM_BANDFMT_SHORT ) ) return( -1 ); return( 0 ); } int im_rightshift_size( IMAGE *in, IMAGE *out, int xshift, int yshift, int band_fmt ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 2 ); if( vips_shrink( in, &t[0], 1 << xshift, 1 << yshift, NULL ) || vips_cast( t[0], &t[1], band_fmt, NULL ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } int im_Lab2XYZ_temp( IMAGE *in, IMAGE *out, double X0, double Y0, double Z0 ) { VipsArea *temp; VipsImage *x; temp = VIPS_AREA( vips_array_double_newv( 3, X0, Y0, Z0 ) ); if( vips_Lab2XYZ( in, &x, "temp", temp, NULL ) ) { vips_area_unref( temp ); return( -1 ); } vips_area_unref( temp ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Lab2XYZ( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_Lab2XYZ( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_XYZ2Lab_temp( IMAGE *in, IMAGE *out, double X0, double Y0, double Z0 ) { double ary[3]; VipsArea *temp; VipsImage *x; ary[0] = X0; ary[1] = Y0; ary[2] = Z0; temp = VIPS_AREA( vips_array_double_new( ary, 3 ) ); if( vips_XYZ2Lab( in, &x, "temp", temp, NULL ) ) { vips_area_unref( temp ); return( -1 ); } vips_area_unref( temp ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_XYZ2Lab( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_XYZ2Lab( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Lab2LCh( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_Lab2LCh( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LCh2Lab( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LCh2Lab( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LCh2UCS( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LCh2CMC( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_UCS2LCh( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_CMC2LCh( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_XYZ2Yxy( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_XYZ2Yxy( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Yxy2XYZ( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_Yxy2XYZ( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_float2rad( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_float2rad( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_rad2float( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_rad2float( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Lab2LabQ( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_Lab2LabQ( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LabQ2Lab( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LabQ2Lab( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Lab2LabS( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_Lab2LabS( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LabS2Lab( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LabS2Lab( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LabQ2LabS( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LabQ2LabS( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LabS2LabQ( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LabS2LabQ( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Lab2disp( IMAGE *in, IMAGE *out, struct im_col_display *disp ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_Lab2disp:1", "p" ) || im_Lab2XYZ( in, t[0] ) || im_XYZ2disp( t[0], out, disp ) ) return( -1 ); return( 0 ); } int im_dECMC_fromdisp( IMAGE *im1, IMAGE *im2, IMAGE *out, struct im_col_display *d ) { IMAGE *t[4]; if( im_open_local_array( out, t, 4, "im_dECMC_fromdisp:1", "p" ) || im_disp2XYZ( im1, t[0], d ) || im_XYZ2Lab( t[0], t[1] ) || im_disp2XYZ( im2, t[2], d ) || im_XYZ2Lab( t[2], t[3] ) || im_dECMC_fromLab( t[1], t[3], out ) ) return( -1 ); return( 0 ); } int im_dE_fromdisp( IMAGE *im1, IMAGE *im2, IMAGE *out, struct im_col_display *d ) { IMAGE *t[2]; if( im_open_local_array( out, t, 2, "im_dE_fromdisp:1", "p" ) || im_disp2XYZ( im1, t[0], d ) || im_disp2XYZ( im2, t[1], d ) || im_dE_fromXYZ( t[0], t[1], out ) ) return( -1 ); return( 0 ); } int im_disp2Lab( IMAGE *in, IMAGE *out, struct im_col_display *d ) { VipsImage *t[1]; if( im_open_local_array( out, t, 1, "im_disp2Lab:1", "p" ) || im_disp2XYZ( in, t[0], d ) || im_XYZ2Lab( t[0], out ) ) return( -1 ); return( 0 ); } int im_sRGB2XYZ( IMAGE *in, IMAGE *out ) { VipsImage **t = (VipsImage **) vips_object_local_array( (VipsObject *) out, 2 ); if( vips_sRGB2scRGB( in, &t[0], NULL ) || vips_scRGB2XYZ( t[0], &t[1], NULL ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } int im_XYZ2sRGB( IMAGE *in, IMAGE *out ) { VipsImage **t = (VipsImage **) vips_object_local_array( (VipsObject *) out, 2 ); if( vips_XYZ2scRGB( in, &t[0], NULL ) || vips_scRGB2sRGB( t[0], &t[1], NULL ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } int im_LabQ2sRGB( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LabQ2sRGB( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_icc_transform( VipsImage *in, VipsImage *out, const char *input_profile_filename, const char *output_profile_filename, VipsIntent intent ) { VipsImage *x; if( vips_icc_transform( in, &x, output_profile_filename, "input_profile", input_profile_filename, "intent", intent, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_icc_import( VipsImage *in, VipsImage *out, const char *input_profile_filename, VipsIntent intent ) { VipsImage *x; if( vips_icc_import( in, &x, "input_profile", input_profile_filename, "intent", intent, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_icc_import_embedded( VipsImage *in, VipsImage *out, VipsIntent intent ) { VipsImage *x; if( vips_icc_import( in, &x, "embedded", TRUE, "intent", intent, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_icc_export_depth( VipsImage *in, VipsImage *out, int depth, const char *output_profile_filename, VipsIntent intent ) { VipsImage *x; if( vips_icc_export( in, &x, "output_profile", output_profile_filename, "depth", depth, "intent", intent, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } /** * im_LabQ2XYZ: * @in: input image * @out: output image * * Convert an image from LabQ (Coding == IM_CODING_LABQ) to XYZ. * * Returns: 0 on success, -1 on error. */ int im_LabQ2XYZ( IMAGE *in, IMAGE *out ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_LabQ2XYZ:1", "p" ) || im_LabQ2Lab( in, t[0] ) || im_Lab2XYZ( t[0], out ) ) return( -1 ); return( 0 ); } int im_Lab2UCS( IMAGE *in, IMAGE *out ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_Lab2UCS:1", "p" ) || im_Lab2LCh( in, t[0] ) || im_LCh2UCS( t[0], out ) ) return( -1 ); return( 0 ); } int im_UCS2Lab( IMAGE *in, IMAGE *out ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_UCS2Lab:1", "p" ) || im_UCS2LCh( in, t[0] ) || im_LCh2Lab( t[0], out ) ) return( -1 ); return( 0 ); } int im_UCS2XYZ( IMAGE *in, IMAGE *out ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_UCS2XYZ:1", "p" ) || im_UCS2Lab( in, t[0] ) || im_Lab2XYZ( t[0], out ) ) return( -1 ); return( 0 ); } int im_XYZ2UCS( IMAGE *in, IMAGE *out ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_XYZ2UCS:1", "p" ) || im_XYZ2Lab( in, t[0] ) || im_Lab2UCS( t[0], out ) ) return( -1 ); return( 0 ); } int im_dE_fromXYZ( IMAGE *in1, IMAGE *in2, IMAGE *out ) { IMAGE *t[2]; if( im_open_local_array( out, t, 2, "im_dE_fromXYZ:1", "p" ) || im_XYZ2Lab( in1, t[0] ) || im_XYZ2Lab( in2, t[1] ) || im_dE_fromLab( t[0], t[1], out ) ) return( -1 ); return( 0 ); } int im_dE_fromLab( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_dE76( in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_dECMC_fromLab( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_dECMC( in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_dE00_fromLab( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_dE00( in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_icc_ac2rc( VipsImage *in, VipsImage *out, const char *profile_filename ) { VipsImage *x; if( vips_icc_ac2rc( in, &x, profile_filename ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_quadratic( IMAGE *in, IMAGE *out, IMAGE *coeff ) { VipsImage *x; if( vips_quadratic( in, &x, coeff, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_maxpos_vec( VipsImage *im, int *xpos, int *ypos, double *maxima, int n ) { double max; VipsArrayDouble *out_array; VipsArrayInt *x_array; VipsArrayInt *y_array; if( vips_max( im, &max, "size", n, "out_array", &out_array, "x_array", &x_array, "y_array", &y_array, NULL ) ) return( -1 ); memcpy( xpos, VIPS_ARRAY_ADDR( x_array, 0 ), n * sizeof( int ) ); memcpy( ypos, VIPS_ARRAY_ADDR( y_array, 0 ), n * sizeof( int ) ); memcpy( maxima, VIPS_ARRAY_ADDR( out_array, 0 ), n * sizeof( double ) ); vips_area_unref( VIPS_AREA( out_array ) ); vips_area_unref( VIPS_AREA( x_array ) ); vips_area_unref( VIPS_AREA( y_array ) ); return( 0 ); } int im_minpos_vec( VipsImage *im, int *xpos, int *ypos, double *minima, int n ) { double min; VipsArrayDouble *out_array; VipsArrayInt *x_array; VipsArrayInt *y_array; if( vips_min( im, &min, "size", n, "out_array", &out_array, "x_array", &x_array, "y_array", &y_array, NULL ) ) return( -1 ); memcpy( xpos, VIPS_ARRAY_ADDR( x_array, 0 ), n * sizeof( int ) ); memcpy( ypos, VIPS_ARRAY_ADDR( y_array, 0 ), n * sizeof( int ) ); memcpy( minima, VIPS_ARRAY_ADDR( out_array, 0 ), n * sizeof( double ) ); vips_area_unref( VIPS_AREA( out_array ) ); vips_area_unref( VIPS_AREA( x_array ) ); vips_area_unref( VIPS_AREA( y_array ) ); return( 0 ); } int im_cross_phase( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "cross_phase", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_maplut( IMAGE *in, IMAGE *out, IMAGE *lut ) { VipsImage *x; if( vips_maplut( in, &x, lut, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_ismonotonic( IMAGE *lut, int *out ) { gboolean monotonic; if( vips_hist_ismonotonic( lut, &monotonic, NULL ) ) return( -1 ); *out = monotonic ? 255 : 0; return( 0 ); } int im_histcum( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_hist_cum( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_histnorm( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_hist_norm( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_histeq( IMAGE *in, IMAGE *out ) { IMAGE *t1; if( !(t1 = im_open_local( out, "im_histeq", "p" )) || im_histcum( in, t1 ) || im_histnorm( t1, out ) ) return( -1 ); return( 0 ); } int im_heq( VipsImage *in, VipsImage *out, int bandno ) { VipsImage *x; if( vips_hist_equal( in, &x, "band", bandno, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_hist( IMAGE *in, IMAGE *out, int bandno ) { IMAGE *hist; if( !(hist = im_open_local( out, "im_hist", "p" )) || im_histgr( in, hist, bandno ) || im_histplot( hist, out ) ) return( -1 ); return( 0 ); } int im_histgr( IMAGE *in, IMAGE *out, int bandno ) { VipsImage *x; if( vips_hist_find( in, &x, "band", bandno, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_stdif( IMAGE *in, IMAGE *out, double a, double m0, double b, double s0, int width, int height ) { VipsImage *x; if( vips_stdif( in, &x, width, height, "a", a, "b", b, "m0", m0, "s0", s0, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_lhisteq( VipsImage *in, VipsImage *out, int width, int height ) { VipsImage *x; if( vips_hist_local( in, &x, width, height, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_histnD( VipsImage *in, VipsImage *out, int bins ) { VipsImage *x; if( vips_hist_find_ndim( in, &x, "bins", bins, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_hist_indexed( VipsImage *index, VipsImage *value, VipsImage *out ) { VipsImage *x; if( vips_hist_find_indexed( value, index, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_project( IMAGE *in, IMAGE *hout, IMAGE *vout ) { VipsImage *x, *y; if( vips_project( in, &x, &y, NULL ) ) return( -1 ); if( vips_image_write( x, hout ) ) { g_object_unref( x ); g_object_unref( y ); return( -1 ); } g_object_unref( x ); if( vips_image_write( y, vout ) ) { g_object_unref( y ); return( -1 ); } g_object_unref( y ); return( 0 ); } int im_profile( IMAGE *in, IMAGE *out, int dir ) { VipsImage *columns, *rows; VipsImage *t1, *t2; if( vips_profile( in, &columns, &rows, NULL ) ) return( -1 ); if( dir == 0 ) { t1 = columns; g_object_unref( rows ); } else { t1 = rows; g_object_unref( columns ); } if( vips_cast( t1, &t2, VIPS_FORMAT_USHORT, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_mpercent( IMAGE *in, double percent, int *out ) { if( vips_percent( in, percent * 100.0, out, NULL ) ) return( -1 ); return( 0 ); } int im_mpercent_hist( IMAGE *in, double percent, int *out ) { /* Hard to do this in a wrapper. */ vips_error( "im_mpercent_hist", "%s", _( "no compat implemented" ) ); return( -1 ); } int im_hsp( IMAGE *in, IMAGE *ref, IMAGE *out ) { IMAGE *t[3]; if( im_open_local_array( out, t, 3, "im_hsp", "p" ) || im_histgr( in, t[0], -1 ) || im_histgr( ref, t[1], -1 ) || im_histspec( t[0], t[1], t[2] ) || im_maplut( in, out, t[2] ) ) return( -1 ); return( 0 ); } static int match( VipsImage *in, VipsImage *ref, VipsImage *out ) { VipsImage *x; if( vips_hist_match( in, ref, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_histspec( IMAGE *in, IMAGE *ref, IMAGE *out ) { IMAGE *t[5]; guint64 px; int fmt; if( im_check_uint( "im_histspec", in ) || im_check_uint( "im_histspec", ref ) ) return( -1 ); if( im_open_local_array( out, t, 5, "im_histspec", "p" ) || im_histeq( in, t[0] ) || im_histeq( ref, t[2] ) || match( t[0], t[2], t[4] ) ) return( -1 ); px = VIPS_IMAGE_N_PELS( t[4] ); if( px <= 256 ) fmt = IM_BANDFMT_UCHAR; else if( px <= 65536 ) fmt = IM_BANDFMT_USHORT; else fmt = IM_BANDFMT_UINT; if( im_clip2fmt( t[4], out, fmt ) ) return( -1 ); return( 0 ); } int im_falsecolour( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_falsecolour( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_gammacorrect( IMAGE *in, IMAGE *out, double exponent ) { VipsImage *x; if( vips_gamma( in, &x, "exponent", 1.0 / exponent, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } /* This is used by the carrierwave shrinker to cache the * output of shrink before doing the final affine. * * We use the vips8 threaded tilecache to avoid a deadlock: suppose thread1, * evaluating the top block of the output is delayed, and thread2, evaluating * the second block gets here first (this can happen on a heavily-loaded * system). * * With an unthreaded tilecache (as we had before), thread2 will get * the cache lock and start evaling the second block of the shrink. When it * reaches the png reader it will stall until the first block has been used ... * but it never will, since thread1 will block on this cache lock. * * This function is only used in this place (I think), so it's OK to * hard-wire this to be a sequential threaded cache. */ int im_tile_cache( IMAGE *in, IMAGE *out, int tile_width, int tile_height, int max_tiles ) { VipsImage *x; if( vips_tilecache( in, &x, "tile_width", tile_width, "tile_height", tile_height, "max_tiles", max_tiles, "access", VIPS_ACCESS_SEQUENTIAL, "threaded", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } /* This is the one used by nip2's menu for caching images. Random access and * persistent. */ int im_tile_cache_random( IMAGE *in, IMAGE *out, int tile_width, int tile_height, int max_tiles ) { VipsImage *x; if( vips_tilecache( in, &x, "tile_width", tile_width, "tile_height", tile_height, "max_tiles", max_tiles, "access", VIPS_ACCESS_RANDOM, "persistent", TRUE, "threaded", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } static int im__affinei( VipsImage *in, VipsImage *out, VipsInterpolate *interpolate, VipsTransformation *trn ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 2 ); VipsArea *oarea; gboolean repack; oarea = VIPS_AREA( vips_array_int_newv( 4, trn->oarea.left, trn->oarea.top, trn->oarea.width, trn->oarea.height ) ); /* vips7 affine would repack labq and im_benchmark() depends upon * this. */ repack = in->Coding == IM_CODING_LABQ; if( vips_affine( in, &t[0], trn->a, trn->b, trn->c, trn->d, "interpolate", interpolate, "oarea", oarea, "odx", trn->odx, "ody", trn->ody, NULL ) ) { vips_area_unref( oarea ); return( -1 ); } vips_area_unref( oarea ); in = t[0]; if( repack ) { if( vips_colourspace( in, &t[1], VIPS_INTERPRETATION_LABQ, NULL ) ) return( -1 ); in = t[1]; } if( vips_image_write( in, out ) ) return( -1 ); return( 0 ); } int im_affinei( VipsImage *in, VipsImage *out, VipsInterpolate *interpolate, double a, double b, double c, double d, double odx, double ody, int ox, int oy, int ow, int oh ) { VipsTransformation trn; trn.iarea.left = 0; trn.iarea.top = 0; trn.iarea.width = in->Xsize; trn.iarea.height = in->Ysize; trn.oarea.left = ox; trn.oarea.top = oy; trn.oarea.width = ow; trn.oarea.height = oh; trn.a = a; trn.b = b; trn.c = c; trn.d = d; trn.idx = 0; trn.idy = 0; trn.odx = odx; trn.ody = ody; return( im__affinei( in, out, interpolate, &trn ) ); } int im_affinei_all( VipsImage *in, VipsImage *out, VipsInterpolate *interpolate, double a, double b, double c, double d, double odx, double ody ) { VipsTransformation trn; trn.iarea.left = 0; trn.iarea.top = 0; trn.iarea.width = in->Xsize; trn.iarea.height = in->Ysize; trn.a = a; trn.b = b; trn.c = c; trn.d = d; trn.idx = 0; trn.idy = 0; trn.odx = odx; trn.ody = ody; vips__transform_set_area( &trn ); return( im__affinei( in, out, interpolate, &trn ) ); } /* Still needed by some parts of mosaic. */ int vips__affine( VipsImage *in, VipsImage *out, VipsTransformation *trn ) { return( im__affinei( in, out, vips_interpolate_bilinear_static(), trn ) ); } int im_copy_file( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_copy_file( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_video_v4l1( IMAGE *im, const char *device, int channel, int brightness, int colour, int contrast, int hue, int ngrabs ) { im_error( "im_video_v4l1", "%s", _( "compiled without im_video_v4l1 support" ) ); return( -1 ); } int im_fwfft( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_fwfft( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_invfft( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_invfft( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_invfftr( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_invfft( in, &x, "real", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_freqflt( IMAGE *in, IMAGE *mask, IMAGE *out ) { VipsImage *x; if( vips_freqmult( in, mask, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_disp_ps( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_spectrum( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_fractsurf( IMAGE *out, int size, double frd ) { VipsImage *t; if( vips_fractsurf( &t, size, size, frd, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_phasecor_fft( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_phasecor( in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_cntlines( VipsImage *im, double *nolines, int flag ) { return( vips_countlines( im, nolines, flag == 0 ? VIPS_DIRECTION_HORIZONTAL : VIPS_DIRECTION_VERTICAL, NULL ) ); } int im_label_regions( IMAGE *test, IMAGE *mask, int *segments ) { VipsImage *x; if( vips_labelregions( test, &x, "segments", segments, NULL ) ) return( -1 ); if( vips_image_write( x, mask ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_rank( IMAGE *in, IMAGE *out, int width, int height, int index ) { VipsImage *x; if( vips_rank( in, &x, width, height, index, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_rank_raw( IMAGE *in, IMAGE *out, int width, int height, int index ) { im_error( "im_rank_raw", "no compat function" ); return( -1 ); } int im_draw_circle( VipsImage *image, int x, int y, int radius, gboolean fill, VipsPel *ink ) { double *vec; int n; if( !(vec = vips__ink_to_vector( "im_draw_circle", image, ink, &n )) ) return( -1 ); return( vips_draw_circle( image, vec, n, x, y, radius, "fill", fill, NULL ) ); } int im_draw_line( VipsImage *image, int x1, int y1, int x2, int y2, VipsPel *ink ) { double *vec; int n; if( !(vec = vips__ink_to_vector( "im_draw_line", image, ink, &n )) ) return( -1 ); return( vips_draw_line( image, vec, n, x1, y1, x2, y2, NULL ) ); } typedef struct _Line { VipsPlotFn plot; void *a; void *b; void *c; } Line; static void draw_line_wrapper( VipsImage *image, int x, int y, void *client ) { Line *line = (Line *) client; line->plot( image, x, y, line->a, line->b, line->c ); } int im_draw_line_user( VipsImage *image, int x1, int y1, int x2, int y2, VipsPlotFn plot, void *a, void *b, void *c ) { Line line; line.plot = plot; line.a = a; line.b = b; line.c = c; vips__draw_line_direct( image, x1, y1, x2, y2, draw_line_wrapper, &line ); return( 0 ); } int im_draw_mask( VipsImage *image, VipsImage *mask, int x, int y, VipsPel *ink ) { /* Direct call, since this has to be very quick. */ return( vips__draw_mask_direct( image, mask, ink, x, y ) ); } int im_draw_image( VipsImage *image, VipsImage *sub, int x, int y ) { return( vips_draw_image( image, sub, x, y, NULL ) ); } int im_draw_rect( IMAGE *image, int left, int top, int width, int height, int fill, VipsPel *ink ) { double *vec; int n; if( !(vec = vips__ink_to_vector( "im_draw_rect", image, ink, &n )) ) return( -1 ); return( vips_draw_rect( image, vec, n, left, top, width, height, "fill", fill, NULL ) ); } int im_draw_point( VipsImage *image, int x, int y, VipsPel *ink ) { double *vec; int n; if( !(vec = vips__ink_to_vector( "im_draw_rect", image, ink, &n )) ) return( -1 ); return( vips_draw_point( image, vec, n, x, y, NULL ) ); } int im_draw_smudge( VipsImage *im, int left, int top, int width, int height ) { return( vips_draw_smudge( im, left, top, width, height, NULL ) ); } int im_read_point( VipsImage *image, int x, int y, VipsPel *ink ) { double *vector; int n; VipsPel *pixel_vector; if( vips_getpoint( image, &vector, &n, x, y, NULL ) ) return( -1 ); if( !(pixel_vector = vips__vector_to_ink( "im_read_point", image, vector, NULL, n )) ) { g_free( vector ); return( -1 ); } memcpy( ink, pixel_vector, VIPS_IMAGE_SIZEOF_PEL( image ) ); g_free( vector ); return( 0 ); } int im_draw_flood( IMAGE *image, int x, int y, VipsPel *ink, Rect *dout ) { double *vec; int n; int left; int top; int width; int height; if( !(vec = vips__ink_to_vector( "im_draw_flood", image, ink, &n )) ) return( -1 ); if( vips_draw_flood( image, vec, n, x, y, "left", &left, "top", &top, "width", &width, "height", &height, NULL ) ) return( -1 ); if( dout ) { dout->left = left; dout->top = top; dout->width = width; dout->height = height; } return( 0 ); } int im_draw_flood_blob( IMAGE *image, int x, int y, VipsPel *ink, Rect *dout ) { double *vec; int n; int left; int top; int width; int height; if( !(vec = vips__ink_to_vector( "im_draw_flood", image, ink, &n )) ) return( -1 ); if( vips_draw_flood( image, vec, n, x, y, "equal", TRUE, "left", &left, "top", &top, "width", &width, "height", &height, NULL ) ) return( -1 ); if( dout ) { dout->left = left; dout->top = top; dout->width = width; dout->height = height; } return( 0 ); } int im_draw_flood_other( IMAGE *image, IMAGE *test, int x, int y, int serial, Rect *dout ) { int left; int top; int width; int height; if( vips_draw_flood1( image, serial, x, y, "test", test, "equal", TRUE, "left", &left, "top", &top, "width", &width, "height", &height, NULL ) ) return( -1 ); if( dout ) { dout->left = left; dout->top = top; dout->width = width; dout->height = height; } return( 0 ); } int im_lineset( IMAGE *in, IMAGE *out, IMAGE *mask, IMAGE *ink, int n, int *x1v, int *y1v, int *x2v, int *y2v ) { Rect mask_rect; int i; if( mask->Bands != 1 || mask->BandFmt != IM_BANDFMT_UCHAR || mask->Coding != IM_CODING_NONE ) { im_error( "im_lineset", "%s", _( "mask image not 1 band 8 bit uncoded" ) ); return( -1 ); } if( ink->Bands != in->Bands || ink->BandFmt != in->BandFmt || ink->Coding != in->Coding ) { im_error( "im_lineset", "%s", _( "ink image does not match in image" ) ); return( -1 ); } if( ink->Xsize != 1 || ink->Ysize != 1 ) { im_error( "im_lineset", "%s", _( "ink image not 1x1 pixels" ) ); return( -1 ); } /* Copy the image then fastline to it ... this will render to a "t" * usually. */ if( vips_image_write( in, out ) ) return( -1 ); mask_rect.left = mask->Xsize / 2; mask_rect.top = mask->Ysize / 2; mask_rect.width = mask->Xsize; mask_rect.height = mask->Ysize; if( im_incheck( ink ) || im_incheck( mask ) ) return( -1 ); for( i = 0; i < n; i++ ) { if( im_fastlineuser( out, x1v[i], y1v[i], x2v[i], y2v[i], (VipsPlotFn) im_plotmask, ink->data, mask->data, &mask_rect ) ) return( -1 ); } return( 0 ); } int im_match_linear_search( IMAGE *ref, IMAGE *sec, IMAGE *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize ) { VipsImage *x; if( vips_match( ref, sec, &x, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, "search", TRUE, "hwindow", hwindowsize, "harea", hsearchsize, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_match_linear( IMAGE *ref, IMAGE *sec, IMAGE *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2 ) { VipsImage *x; if( vips_match( ref, sec, &x, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_global_balance( IMAGE *in, IMAGE *out, double gamma ) { VipsImage *x; if( vips_globalbalance( in, &x, "gamma", gamma, "int_output", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_histplot( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_hist_plot( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_global_balancef( IMAGE *in, IMAGE *out, double gamma ) { VipsImage *x; if( vips_globalbalance( in, &x, "gamma", gamma, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_remosaic( IMAGE *in, IMAGE *out, const char *old_str, const char *new_str ) { VipsImage *x; if( vips_remosaic( in, &x, old_str, new_str, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_lrmosaic1( IMAGE *ref, IMAGE *sec, IMAGE *out, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize, int balancetype, int mwidth ) { VipsImage *x; if( vips_mosaic1( ref, sec, &x, VIPS_DIRECTION_HORIZONTAL, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, "search", TRUE, "bandno", bandno, "hwindow", hwindowsize, "harea", hsearchsize, "mblend", mwidth, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_tbmosaic1( IMAGE *ref, IMAGE *sec, IMAGE *out, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize, int balancetype, int mwidth ) { VipsImage *x; if( vips_mosaic1( ref, sec, &x, VIPS_DIRECTION_VERTICAL, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, "search", TRUE, "bandno", bandno, "hwindow", hwindowsize, "harea", hsearchsize, "mblend", mwidth, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_lrmerge1( IMAGE *ref, IMAGE *sec, IMAGE *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) { VipsImage *x; if( vips_mosaic1( ref, sec, &x, VIPS_DIRECTION_HORIZONTAL, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, "mblend", mwidth, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_tbmerge1( IMAGE *ref, IMAGE *sec, IMAGE *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) { VipsImage *x; if( vips_mosaic1( ref, sec, &x, VIPS_DIRECTION_VERTICAL, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, "mblend", mwidth, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } /* The common part of most binary conversion * operators. We: * * - check in and out * - cast in1 and in2 up to a common format * - equalise bands * - make an input array * - return the matched images in vec[0] and vec[1] * * A left-over, remove soon. */ IMAGE ** im__insert_base( const char *domain, IMAGE *in1, IMAGE *in2, IMAGE *out ) { IMAGE *t[4]; IMAGE **vec; if( im_piocheck( in1, out ) || im_pincheck( in2 ) || im_check_bands_1orn( domain, in1, in2 ) || im_check_coding_known( domain, in1 ) || im_check_coding_same( domain, in1, in2 ) ) return( NULL ); /* Cast our input images up to a common format and bands. */ if( im_open_local_array( out, t, 4, domain, "p" ) || im__formatalike( in1, in2, t[0], t[1] ) || im__bandalike( domain, t[0], t[1], t[2], t[3] ) || !(vec = im_allocate_input_array( out, t[2], t[3], NULL )) ) return( NULL ); /* Generate the output. */ if( im_cp_descv( out, vec[0], vec[1], NULL ) || im_demand_hint_array( out, IM_SMALLTILE, vec ) ) return( NULL ); return( vec ); } /** * im_insertset: * @main: big image * @sub: small image * @out: output image * @n: number of positions * @x: left positions of @sub * @y: top positions of @sub * * Insert @sub repeatedly into @main at the positions listed in the arrays @x, * @y of length @n. @out is the same * size as @main. @sub is clipped against the edges of @main. * * This operation is fast for large @n, but will use a memory buffer the size * of @out. It's useful for things like making scatter plots. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * See also: im_insert(), im_lrjoin(). * * Returns: 0 on success, -1 on error */ int im_insertset( IMAGE *main, IMAGE *sub, IMAGE *out, int n, int *x, int *y ) { IMAGE **vec; IMAGE *t; int i; if( !(vec = im__insert_base( "im_insert", main, sub, out )) ) return( -1 ); /* Copy to a memory image, zap that, then copy to out. */ if( !(t = im_open_local( out, "im_insertset", "t" )) || im_copy( vec[0], t ) ) return( -1 ); for( i = 0; i < n; i++ ) if( im_insertplace( t, vec[1], x[i], y[i] ) ) return( -1 ); if( im_copy( t, out ) ) return( -1 ); return( 0 ); } /* We had this entry point in earlier libvipses, hilariously. */ int vips__init( const char *argv0 ) { return( vips_init( argv0 ) ); } int im_greyc_mask( IMAGE *in, IMAGE *out, IMAGE *mask, int iterations, float amplitude, float sharpness, float anisotropy, float alpha, float sigma, float dl, float da, float gauss_prec, int interpolation, int fast_approx ) { vips_error( "im_greyc_mask", "This function is no longer in the core library" ); return( -1 ); } int vips_check_imask( const char *domain, INTMASK *mask ) { if( !mask || mask->xsize > 1000 || mask->ysize > 1000 || mask->xsize <= 0 || mask->ysize <= 0 || mask->scale == 0 || !mask->coeff ) { vips_error( domain, "%s", _( "nonsense mask parameters" ) ); return( -1 ); } return( 0 ); } int vips_check_dmask( const char *domain, DOUBLEMASK *mask ) { if( !mask || mask->xsize > 1000 || mask->ysize > 1000 || mask->xsize <= 0 || mask->ysize <= 0 || mask->scale == 0 || !mask->coeff ) { vips_error( domain, "%s", _( "nonsense mask parameters" ) ); return( -1 ); } return( 0 ); } int vips_check_dmask_1d( const char *domain, DOUBLEMASK *mask ) { if( vips_check_dmask( domain, mask ) ) return( -1 ); if( mask->xsize != 1 && mask->ysize != 1 ) { vips_error( domain, "%s", _( "mask must be 1D" ) ); return( -1 ); } return( 0 ); } GOptionGroup * vips_get_option_group( void ) { static GOptionGroup *option_group = NULL; if( !option_group ) { option_group = g_option_group_new( "vips", _( "VIPS Options" ), _( "Show VIPS options" ), NULL, NULL ); vips_add_option_entries( option_group ); } return( option_group ); } libvips-8.9.1/libvips/draw/000077500000000000000000000000001361153320700156075ustar00rootroot00000000000000libvips-8.9.1/libvips/draw/Makefile.am000066400000000000000000000004431361153320700176440ustar00rootroot00000000000000noinst_LTLIBRARIES = libdraw.la libdraw_la_SOURCES = \ draw.c \ pdraw.h \ drawink.c \ drawink.h \ draw_circle.c \ draw_flood.c \ draw_mask.c \ draw_image.c \ draw_rect.c \ draw_line.c \ draw_smudge.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ libvips-8.9.1/libvips/draw/draw.c000066400000000000000000000114351361153320700167140ustar00rootroot00000000000000/* base class for drawing operations * * 27/9/10 * - from im_draw_circle() * 17/11/10 * - oops, scanline clipping was off by 1 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pdraw.h" /** * SECTION: draw * @short_description: drawing operations: flood, paste, line, circle * @stability: Stable * @include: vips/vips.h * * These operations directly modify the image. They do not thread, on 32-bit * machines they will be limited to 2GB images, and a little care needs to be * taken if you use them as part of an image pipeline. * They are mostly supposed to be useful for paintbox-style programs. * * libvips operations are all functional: they take zero or more existing input * images and generate zero or more new output images. Images are * never altered, you always create new images. This means libvips can cache * and thread very agressively. * * The downside is that creating entirely fresh images each time can be very * slow. libvips has a range of tricks to avoid these problems, but there are * still times when you really have to be able to modify an image. An example * might be drawing a curved line from a set of straight line segments: if you * need to draw 1,000 straight lines, a 1,000 operation-deep pipeline is going * to be a slow way to do it. This is where the draw operations come in. * * To use these operations, use vips_copy() to make a copy of the image you * want to modify, to ensure that no one else is using it, then call a * series of draw operations. * Once you are done drawing, return to normal use of vips operations. Any time * you want to start drawing again, you'll need to copy again. */ /** * VipsCombineMode: * @VIPS_COMBINE_MODE_SET: set pixels to the new value * @VIPS_COMBINE_MODE_ADD: add pixels * * See vips_draw_image() and so on. * * Operations like vips_draw_image() need to be told how to combine images * from two sources. * * See also: vips_join(). */ G_DEFINE_ABSTRACT_TYPE( VipsDraw, vips_draw, VIPS_TYPE_OPERATION ); static int vips_draw_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsDraw *draw = VIPS_DRAW( object ); #ifdef DEBUG printf( "vips_draw_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_draw_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_known( class->nickname, draw->image ) || vips_image_inplace( draw->image ) ) return( -1 ); draw->lsize = VIPS_IMAGE_SIZEOF_LINE( draw->image ); draw->psize = VIPS_IMAGE_SIZEOF_PEL( draw->image ); draw->noclip = FALSE; return( 0 ); } static void vips_draw_class_init( VipsDrawClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw"; vobject_class->description = _( "draw operations" ); vobject_class->build = vips_draw_build; VIPS_ARG_IMAGE( class, "image", 1, _( "Image" ), _( "Image to draw on" ), VIPS_ARGUMENT_REQUIRED_INPUT | VIPS_ARGUMENT_MODIFY, G_STRUCT_OFFSET( VipsDraw, image ) ); } static void vips_draw_init( VipsDraw *draw ) { } void vips_draw_operation_init( void ) { extern GType vips_draw_rect_get_type( void ); extern GType vips_draw_image_get_type( void ); extern GType vips_draw_mask_get_type( void ); extern GType vips_draw_line_get_type( void ); extern GType vips_draw_circle_get_type( void ); extern GType vips_draw_flood_get_type( void ); extern GType vips_draw_smudge_get_type( void ); vips_draw_rect_get_type(); vips_draw_image_get_type(); vips_draw_mask_get_type(); vips_draw_line_get_type(); vips_draw_circle_get_type(); vips_draw_flood_get_type(); vips_draw_smudge_get_type(); } libvips-8.9.1/libvips/draw/draw_circle.c000066400000000000000000000203341361153320700202330ustar00rootroot00000000000000/* draw a draw_circle on an image * * Author N. Dessipris * Written on 30/05/1990 * Updated on: * 22/7/93 JC * - im_incheck() call added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 5/12/06 * - im_invalidate() after paint * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 18/8/10 * - gtkdoc * - rewritten: clips, fills, any bands, any format * 27/9/10 * - break base out to Draw * 3/2/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "drawink.h" typedef struct _VipsDrawCircle { VipsDrawink parent_object; int cx; int cy; int radius; gboolean fill; } VipsDrawCircle; typedef struct _VipsDrawCircleClass { VipsDrawinkClass parent_class; } VipsDrawCircleClass; G_DEFINE_TYPE( VipsDrawCircle, vips_draw_circle, VIPS_TYPE_DRAWINK ); void vips__draw_circle_direct( VipsImage *image, int cx, int cy, int r, VipsDrawScanline draw_scanline, void *client ) { int x, y, d; y = r; d = 3 - 2 * r; for( x = 0; x < y; x++ ) { draw_scanline( image, cy + y, cx - x, cx + x, 0, client ); draw_scanline( image, cy - y, cx - x, cx + x, 1, client ); draw_scanline( image, cy + x, cx - y, cx + y, 2, client ); draw_scanline( image, cy - x, cx - y, cx + y, 3, client ); if( d < 0 ) d += 4 * x + 6; else { d += 4 * (x - y) + 10; y--; } } if( x == y ) { draw_scanline( image, cy + y, cx - x, cx + x, 0, client ); draw_scanline( image, cy - y, cx - x, cx + x, 1, client ); draw_scanline( image, cy + x, cx - y, cx + y, 2, client ); draw_scanline( image, cy - x, cx - y, cx + y, 3, client ); } } static inline void vips_draw_circle_draw_point( VipsImage *image, int x, int y, void *client ) { VipsPel *ink = (VipsPel *) client; VipsPel *q = VIPS_IMAGE_ADDR( image, x, y ); int psize = VIPS_IMAGE_SIZEOF_PEL( image ); int j; /* Faster than memcopy() for n < about 20. */ for( j = 0; j < psize; j++ ) q[j] = ink[j]; } /* Paint endpoints, with clip. */ static void vips_draw_circle_draw_endpoints_clip( VipsImage *image, int y, int x1, int x2, int quadrant, void *client ) { if( y >= 0 && y < image->Ysize ) { if( x1 >=0 && x1 < image->Xsize ) vips_draw_circle_draw_point( image, x1, y, client ); if( x2 >=0 && x2 < image->Xsize ) vips_draw_circle_draw_point( image, x2, y, client ); } } /* Paint endpoints, no clip. */ static void vips_draw_circle_draw_endpoints_noclip( VipsImage *image, int y, int x1, int x2, int quadrant, void *client ) { vips_draw_circle_draw_point( image, x1, y, client ); vips_draw_circle_draw_point( image, x2, y, client ); } /* Paint scanline. */ static void vips_draw_circle_draw_scanline( VipsImage *image, int y, int x1, int x2, int quadrant, void *client ) { VipsPel *ink = (VipsPel *) client; int psize = VIPS_IMAGE_SIZEOF_PEL( image ); VipsPel *q; int len; int i, j; g_assert( x1 <= x2 ); if( y < 0 || y >= image->Ysize ) return; if( x1 < 0 && x2 < 0 ) return; if( x1 >= image->Xsize && x2 >= image->Xsize ) return; x1 = VIPS_CLIP( 0, x1, image->Xsize - 1 ); x2 = VIPS_CLIP( 0, x2, image->Xsize - 1 ); q = VIPS_IMAGE_ADDR( image, x1, y ); len = x2 - x1 + 1; for( i = 0; i < len; i++ ) { for( j = 0; j < psize; j++ ) q[j] = ink[j]; q += psize; } } static int vips_draw_circle_build( VipsObject *object ) { VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); VipsDrawCircle *circle = (VipsDrawCircle *) object; VipsDrawScanline draw_scanline; if( VIPS_OBJECT_CLASS( vips_draw_circle_parent_class )-> build( object ) ) return( -1 ); if( circle->fill ) draw_scanline = vips_draw_circle_draw_scanline; else if( circle->cx - circle->radius >= 0 && circle->cx + circle->radius < draw->image->Xsize && circle->cy - circle->radius >= 0 && circle->cy + circle->radius < draw->image->Ysize ) draw_scanline = vips_draw_circle_draw_endpoints_noclip; else draw_scanline = vips_draw_circle_draw_endpoints_clip; vips__draw_circle_direct( draw->image, circle->cx, circle->cy, circle->radius, draw_scanline, drawink->pixel_ink ); return( 0 ); } static void vips_draw_circle_class_init( VipsDrawCircleClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_circle"; vobject_class->description = _( "draw a circle on an image" ); vobject_class->build = vips_draw_circle_build; VIPS_ARG_INT( class, "cx", 3, _( "cx" ), _( "Centre of draw_circle" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawCircle, cx ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "cy", 4, _( "cy" ), _( "Centre of draw_circle" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawCircle, cy ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "radius", 5, _( "Radius" ), _( "Radius in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawCircle, radius ), 0, 1000000000, 0 ); VIPS_ARG_BOOL( class, "fill", 6, _( "Fill" ), _( "Draw a solid object" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsDrawCircle, fill ), FALSE ); } static void vips_draw_circle_init( VipsDrawCircle *circle ) { circle->fill = FALSE; } static int vips_draw_circlev( VipsImage *image, double *ink, int n, int cx, int cy, int radius, va_list ap ) { VipsArea *area_ink; int result; area_ink = VIPS_AREA( vips_array_double_new( ink, n ) ); result = vips_call_split( "draw_circle", ap, image, area_ink, cx, cy, radius ); vips_area_unref( area_ink ); return( result ); } /** * vips_draw_circle: (method) * @image: image to draw on * @ink: (array length=n): value to draw * @n: length of ink array * @cx: centre of draw_circle * @cy: centre of draw_circle * @radius: draw_circle radius * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @fill: fill the draw_circle * * Draws a circle on @image. If @fill is %TRUE then the circle is filled, * otherwise a 1-pixel-wide perimeter is drawn. * * @ink is an array of double containing values to draw. * * See also: vips_draw_circle1(), vips_draw_line(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_circle( VipsImage *image, double *ink, int n, int cx, int cy, int radius, ... ) { va_list ap; int result; va_start( ap, radius ); result = vips_draw_circlev( image, ink, n, cx, cy, radius, ap ); va_end( ap ); return( result ); } /** * vips_draw_circle1: (method) * @image: image to draw on * @ink: value to draw * @cx: centre of draw_circle * @cy: centre of draw_circle * @radius: draw_circle radius * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @fill: fill the draw_circle * * As vips_draw_circle(), but just takes a single double for @ink. * * See also: vips_draw_circle(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_circle1( VipsImage *image, double ink, int cx, int cy, int radius, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, radius ); result = vips_draw_circlev( image, array_ink, 1, cx, cy, radius, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/draw/draw_flood.c000066400000000000000000000435541361153320700201060ustar00rootroot00000000000000/* draw_flood-fill * * JC 30/8/97 * - VIPSified, cleaned up, from "John Robinson's prog to fill * enclosed areas" * - something Kirk gave me, so thanks John * JC 1/10/97 * - swapped inner memcmp/cpy for a loop ... faster for small pixels * 13/7/02 JC * - im_draw_flood_blob() added * 5/12/06 * - im_invalidate() after paint * 24/3/09 * - added IM_CODING_RAD support * 28/9/09 * - ooops, tiny memleak * 17/12/09 * - use inline rather than defines, so we can add scanline fills more * easily * - gtk-doc comments * 21/12/09 * - rewrite for a scanline based fill, about 4x faster! * - allow separate test and mark images * 22/1/10 * - draw_flood_blob could loop if start point == ink * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 27/9/10 * - use Draw base class * 21/1/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "drawink.h" /* Size of a scanline buffer. We allocate a list of these to hold scanlines * we need to visit. */ #define PBUFSIZE (1000) /* A scanline we know could contain pixels connected to us. * * Dir is the direction of connection: +1 means y is increasing, ie. the line * above this one is filled. -1 if y is decreasing. */ typedef struct { int x1, x2; int y; int dir; } Scan; /* A buffer of scanlines, and how many of them have been used. If ->next is * non-NULL, the next block could contain more of them. * * We keep a pair of these, then loop over one and write to the other. */ typedef struct _Buffer { struct _Buffer *next; int n; Scan scan[PBUFSIZE]; } Buffer; /* What we track during a flood. We have this in a separate struct so that we * can support vips__draw_flood_direct() ... a fast path for * vips_labelregions() that avoids all of the GObject call overhead. This * gives a huge speedup, >x10 in many cases. */ typedef struct _Flood { /* Test pixels here. */ VipsImage *test; /* Draw pixels here, can be equal to test. */ VipsImage *image; /* Sizeof pel in test. */ int tsize; /* Pixel we compare test to for edges. */ VipsPel *edge; /* True for flood while test == edge, false for flood while test != * edge. */ gboolean equal; /* Sizeof pel in @image. */ int psize; /* Ink we write to @image. */ VipsPel *ink; /* Add to move down a line in @image. */ int lsize; /* Record bounding box of modified pixels. */ int left; int right; int top; int bottom; /* Our todo list. */ Buffer *in; Buffer *out; } Flood; /* Alloc a new buffer. */ static Buffer * buffer_build( void ) { Buffer *buf; buf = g_new( Buffer, 1 ); buf->next = NULL; buf->n = 0; return( buf ); } /* Free a chain of buffers. */ static void buffer_free( Buffer *buf ) { while( buf ) { Buffer *p; p = buf->next; g_free( buf ); buf = p; } } /* Add a scanline to a buffer, prepending a new buffer if necessary. Return * the new head buffer. */ static Buffer * buffer_add( Buffer *buf, Flood *flood, int x1, int x2, int y, int dir ) { /* Clip against image size. */ if( y < 0 || y >= flood->test->Ysize ) return( buf ); x1 = VIPS_CLIP( 0, x1, flood->test->Xsize - 1 ); x2 = VIPS_CLIP( 0, x2, flood->test->Xsize - 1 ); if( x2 - x1 < 0 ) return( buf ); buf->scan[buf->n].x1 = x1; buf->scan[buf->n].x2 = x2; buf->scan[buf->n].y = y; buf->scan[buf->n].dir = dir; buf->n += 1; if( buf->n == PBUFSIZE ) { Buffer *new; new = buffer_build(); new->next = buf; buf = new; } return( buf ); } /* Is p "connected"? ie. is equal to or not equal to flood->edge, depending on * whether we are flooding to the edge boundary or flooding edge-coloured * pixels. p is a pel in @test. */ static gboolean flood_connected( Flood *flood, VipsPel *p ) { int j; for( j = 0; j < flood->tsize; j++ ) if( p[j] != flood->edge[j] ) break; /* If flood->equal, true if point == edge. */ return( flood->equal ^ (j < flood->tsize) ); } /* Is p painted? p is a pel in @image. */ static gboolean flood_painted( Flood *flood, VipsPel *p ) { int j; for( j = 0; j < flood->psize; j++ ) if( p[j] != flood->ink[j] ) break; return( j == flood->psize ); } static void flood_pel( Flood *flood, VipsPel *q ) { int j; /* Faster than memcopy() for n < about 20. */ for( j = 0; j < flood->psize; j++ ) q[j] = flood->ink[j]; } /* Fill a scanline between points x1 and x2 inclusive. x1 < x2. */ static void flood_draw_scanline( Flood *flood, int y, int x1, int x2 ) { VipsPel *p; int i; int len; g_assert( x1 <= x2 ); if( y < 0 || y >= flood->image->Ysize ) return; if( x1 < 0 && x2 < 0 ) return; if( x1 >= flood->image->Xsize && x2 >= flood->image->Xsize ) return; x1 = VIPS_CLIP( 0, x1, flood->image->Xsize - 1 ); x2 = VIPS_CLIP( 0, x2, flood->image->Xsize - 1 ); p = VIPS_IMAGE_ADDR( flood->image, x1, y ); len = x2 - x1 + 1; for( i = 0; i < len; i++ ) { flood_pel( flood, p ); p += flood->psize; } } /* Fill left and right, return the endpoints. The start point (x, y) must be * connected and unpainted. */ static void flood_scanline( Flood *flood, int x, int y, int *x1, int *x2 ) { const int width = flood->test->Xsize; int i; g_assert( flood_connected( flood, VIPS_IMAGE_ADDR( flood->test, x, y ) ) ); g_assert( !flood_painted( flood, VIPS_IMAGE_ADDR( flood->image, x, y ) ) ); /* Search to the right for the first non-connected pixel. If the start * pixel is unpainted, we know all the intervening pixels must be * unpainted too. */ if( x < width ) { VipsPel *p = VIPS_IMAGE_ADDR( flood->test, x + 1, y ); for( i = x + 1; i < width; i++ ) { if( !flood_connected( flood, p ) ) break; p += flood->tsize; } *x2 = i - 1; } else *x2 = width; /* Search left. */ if( x > 0 ) { VipsPel *p = VIPS_IMAGE_ADDR( flood->test, x - 1, y ); for( i = x - 1; i >= 0; i-- ) { if( !flood_connected( flood, p ) ) break; p -= flood->tsize; } *x1 = i + 1; } else *x1 = 0; /* Paint the range we discovered. */ flood_draw_scanline( flood, y, *x1, *x2 ); flood->left = VIPS_MIN( flood->left, *x1 ); flood->right = VIPS_MAX( flood->right, *x2 ); flood->top = VIPS_MIN( flood->top, y ); flood->bottom = VIPS_MAX( flood->bottom, y ); } /* We know the line below or above us is filled between x1 and x2. Search our * line in this range looking for an edge pixel we can flood from. */ static void flood_around( Flood *flood, Scan *scan ) { VipsPel *p; int x; g_assert( scan->dir == 1 || scan->dir == -1 ); for( p = VIPS_IMAGE_ADDR( flood->test, scan->x1, scan->y ), x = scan->x1; x <= scan->x2; p += flood->tsize, x++ ) { if( flood_connected( flood, p ) ) { int x1a; int x2a; /* If mark and test are different images, we also need * to check for painted. Otherwise we can get stuck in * connected loops. */ if( flood->image != flood->test ) { VipsPel *mp = VIPS_IMAGE_ADDR( flood->image, x, scan->y ); if( flood_painted( flood, mp ) ) continue; } flood_scanline( flood, x, scan->y, &x1a, &x2a ); /* Our new scanline can have up to three more * scanlines connected to it: above, below left, below * right. */ if( x1a < scan->x1 - 1 ) flood->out = buffer_add( flood->out, flood, x1a, scan->x1 - 2, scan->y - scan->dir, -scan->dir ); if( x2a > scan->x2 + 1 ) flood->out = buffer_add( flood->out, flood, scan->x2 + 2, x2a, scan->y - scan->dir, -scan->dir ); flood->out = buffer_add( flood->out, flood, x1a, x2a, scan->y + scan->dir, scan->dir ); x = x2a + 1; p = VIPS_IMAGE_ADDR( flood->test, x, scan->y ); } } } static void flood_all( Flood *flood, int x, int y ) { int x1, x2; /* Test start pixel ... nothing to do? */ if( !flood_connected( flood, VIPS_IMAGE_ADDR( flood->test, x, y ) ) ) return; flood->in = buffer_build(); flood->out = buffer_build(); flood_scanline( flood, x, y, &x1, &x2 ); flood->in = buffer_add( flood->in, flood, x1, x2, y + 1, 1 ); flood->in = buffer_add( flood->in, flood, x1, x2, y - 1, -1 ); while( flood->in->n ) { Buffer *p; for( p = flood->in; p; p = p->next ) { int i; for( i = 0; i < p->n; i++ ) flood_around( flood, &p->scan[i] ); p->n = 0; } VIPS_SWAP( Buffer *, flood->in, flood->out ); } VIPS_FREEF( buffer_free, flood->in ); VIPS_FREEF( buffer_free, flood->out ); } /* Base class. */ typedef struct _VipsDrawFlood { VipsDrawink parent_object; /* Parameters. */ int x; int y; VipsImage *test; gboolean equal; int left; int top; int width; int height; } VipsDrawFlood; typedef VipsDrawinkClass VipsDrawFloodClass; G_DEFINE_TYPE( VipsDrawFlood, vips_draw_flood, VIPS_TYPE_DRAWINK ); static int vips_draw_flood_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); VipsDrawFlood *drawflood = (VipsDrawFlood *) object; Flood flood; int j; if( VIPS_OBJECT_CLASS( vips_draw_flood_parent_class )->build( object ) ) return( -1 ); /* @test defaults to @image. */ if( !vips_object_argument_isset( object, "test" ) ) /* Setting input params like this will break caching, but we * don't cache draw ops anyway. */ g_object_set( object, "test", draw->image, NULL ); if( vips_image_wio_input( drawflood->test ) || vips_check_coding_known( class->nickname, drawflood->test ) || vips_check_size_same( class->nickname, drawflood->test, draw->image ) ) return( -1 ); flood.test = drawflood->test; flood.image = draw->image; flood.tsize = VIPS_IMAGE_SIZEOF_PEL( flood.test ); flood.equal = drawflood->equal; flood.psize = VIPS_IMAGE_SIZEOF_PEL( flood.image ); flood.ink = drawink->pixel_ink; flood.lsize = VIPS_IMAGE_SIZEOF_LINE( flood.image ); flood.left = drawflood->x; flood.right = drawflood->x; flood.top = drawflood->y; flood.bottom = drawflood->y; if( flood.equal ) { /* Edge is set by colour of the start pixel in @test. */ if( !(flood.edge = VIPS_ARRAY( object, flood.tsize, VipsPel )) ) return( -1 ); memcpy( flood.edge, VIPS_IMAGE_ADDR( flood.test, drawflood->x, drawflood->y ), flood.tsize ); /* If @test and @image are the same and edge == ink, we'll * never stop :-( or rather, there's nothing to do. */ if( flood.test == flood.image ) { for( j = 0; j < flood.tsize; j++ ) if( flood.edge[j] != flood.ink[j] ) break; if( j != flood.tsize ) flood_all( &flood, drawflood->x, drawflood->y ); } else flood_all( &flood, drawflood->x, drawflood->y ); } else { /* Flood to ink colour. We need to be able to compare @test to * @ink. */ if( !(flood.edge = vips__vector_to_ink( class->nickname, flood.test, VIPS_ARRAY_ADDR( drawink->ink, 0 ), NULL, VIPS_AREA( drawink->ink )->n )) ) return( -1 ); flood_all( &flood, drawflood->x, drawflood->y ); } g_object_set( object, "left", flood.left, "top", flood.top, "width", flood.right - flood.left + 1, "height", flood.bottom - flood.top + 1, NULL ); return( 0 ); } static void vips_draw_flood_class_init( VipsDrawFloodClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_flood"; vobject_class->description = _( "flood-fill an area" ); vobject_class->build = vips_draw_flood_build; VIPS_ARG_INT( class, "x", 3, _( "x" ), _( "DrawFlood start point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawFlood, x ), 0, 1000000000, 0 ); VIPS_ARG_INT( class, "y", 4, _( "y" ), _( "DrawFlood start point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawFlood, y ), 0, 1000000000, 0 ); VIPS_ARG_IMAGE( class, "test", 5, _( "Test" ), _( "Test pixels in this image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsDrawFlood, test ) ); VIPS_ARG_BOOL( class, "equal", 6, _( "Equal" ), _( "DrawFlood while equal to edge" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsDrawFlood, equal ), FALSE ); VIPS_ARG_INT( class, "left", 7, _( "Left" ), _( "Left edge of modified area" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsDrawFlood, left ), 0, 1000000000, 0 ); VIPS_ARG_INT( class, "top", 8, _( "Top" ), _( "top edge of modified area" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsDrawFlood, top ), 0, 1000000000, 0 ); VIPS_ARG_INT( class, "width", 9, _( "Width" ), _( "width of modified area" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsDrawFlood, width ), 0, 1000000000, 0 ); VIPS_ARG_INT( class, "height", 10, _( "Height" ), _( "height of modified area" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsDrawFlood, height ), 0, 1000000000, 0 ); } static void vips_draw_flood_init( VipsDrawFlood *draw_flood ) { } /* Direct path to flood for vips_labelregions(). We need to avoid the function * dispatch system for speed. * * Equivalent to: * * vips_draw_flood1( image, serial, x, y, * "test", test, * "equal", TRUE, * NULL ) * * image must be 1-band int. */ int vips__draw_flood_direct( VipsImage *image, VipsImage *test, int serial, int x, int y ) { Flood flood; if( vips_check_format( "vips__draw_flood_direct", image, VIPS_FORMAT_INT ) || vips_check_mono( "vips__draw_flood_direct", image ) || vips_check_coding_known( "vips__draw_flood_direct", test ) || vips_check_size_same( "vips__draw_flood_direct", test, image ) || vips_image_wio_input( test ) || vips_image_inplace( image ) ) return( -1 ); flood.test = test; flood.image = image; flood.tsize = VIPS_IMAGE_SIZEOF_PEL( test ); flood.equal = TRUE; flood.psize = VIPS_IMAGE_SIZEOF_PEL( image ); flood.ink = (VipsPel *) &serial; flood.lsize = VIPS_IMAGE_SIZEOF_LINE( image ); flood.left = x; flood.right = x; flood.top = y; flood.bottom = y; if( !(flood.edge = VIPS_ARRAY( image, flood.tsize, VipsPel )) ) return( -1 ); memcpy( flood.edge, VIPS_IMAGE_ADDR( test, x, y ), flood.tsize ); flood_all( &flood, x, y ); return( 0 ); } static int vips_draw_floodv( VipsImage *image, double *ink, int n, int x, int y, va_list ap ) { VipsArea *area_ink; int result; area_ink = VIPS_AREA( vips_array_double_new( ink, n ) ); result = vips_call_split( "draw_flood", ap, image, area_ink, x, y ); vips_area_unref( area_ink ); return( result ); } /** * vips_draw_flood: (method) * @image: image to draw on * @ink: (array length=n): value to draw * @n: length of ink array * @x: centre of circle * @y: centre of circle * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @test: test this image * * @equal: fill while equal to edge * * @left: output left edge of bounding box of modified area * * @top: output top edge of bounding box of modified area * * @width: output width of bounding box of modified area * * @height: output height of bounding box of modified area * * Flood-fill @image with @ink, starting at position @x, @y. The filled area is * bounded by pixels that are equal to the ink colour, in other words, it * searches for pixels enclosed by an edge of @ink. * * If @equal is set, it instead searches for pixels which are equal to the * start point and fills them with @ink. * * Normally it will test and set pixels in @image. If @test is set, it will * test pixels in @test and set pixels in @image. This lets you search an * image (@test) for continuous areas of pixels without modifying it. * * @left, @top, @width, @height output the bounding box of the modified * pixels. * * @ink is an array of double containing values to draw. * * See also: vips_draw_flood1(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_flood( VipsImage *image, double *ink, int n, int x, int y, ... ) { va_list ap; int result; va_start( ap, y ); result = vips_draw_floodv( image, ink, n, x, y, ap ); va_end( ap ); return( result ); } /** * vips_draw_flood1: (method) * @image: image to draw on * @ink: value to draw * @x: centre of circle * @y: centre of circle * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @test: test this image * * @equal: fill while equal to edge * * @left: output left edge of bounding box of modified area * * @top: output top edge of bounding box of modified area * * @width: output width of bounding box of modified area * * @height: output height of bounding box of modified area * * As vips_draw_flood(), but just takes a single double for @ink. * * See also: vips_draw_flood(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_flood1( VipsImage *image, double ink, int x, int y, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, y ); result = vips_draw_floodv( image, array_ink, 1, x, y, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/draw/draw_image.c000066400000000000000000000176611361153320700200650ustar00rootroot00000000000000/* in-place insert * * Copyright: J. Cupitt * Written: 15/06/1992 * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 1/9/04 JC * - checks bands/types/etc match (thanks Matt) * - smarter pixel size calculations * 5/12/06 * - im_invalidate() after paint * 24/3/09 * - added IM_CODING_RAD support * 21/10/09 * - allow sub to be outside main * - gtkdoc * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 25/8/10 * - cast and bandalike sub to main * 22/9/10 * - rename to im_draw_image() * - gtk-doc * 9/2/14 * - redo as a class, based on draw_image * 28/3/14 * - add "mode" param */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pdraw.h" typedef struct _VipsDrawImage { VipsDraw parent_object; /* Parameters. */ VipsImage *sub; int x; int y; VipsCombineMode mode; } VipsDrawImage; typedef struct _VipsDrawImageClass { VipsDrawClass parent_class; } VipsDrawImageClass; G_DEFINE_TYPE( VipsDrawImage, vips_draw_image, VIPS_TYPE_DRAW ); #define LOOP( TYPE, TEMP, MIN, MAX ) { \ TYPE * restrict pt = (TYPE *) p; \ TYPE * restrict qt = (TYPE *) q; \ \ for( x = 0; x < sz; x++ ) { \ TEMP v; \ \ v = pt[x] + qt[x]; \ \ qt[x] = VIPS_CLIP( MIN, v, MAX ); \ } \ } #define LOOPF( TYPE ) { \ TYPE * restrict pt = (TYPE *) p; \ TYPE * restrict qt = (TYPE *) q; \ \ for( x = 0; x < sz; x++ ) \ qt[x] += pt[x]; \ } static void vips_draw_image_mode_add( VipsDrawImage *draw_image, VipsImage *im, VipsPel *q, VipsPel *p, int n ) { /* Complex just doubles the size. */ const int sz = n * im->Bands * (vips_band_format_iscomplex( im->BandFmt ) ? 2 : 1); int x; switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, int, 0, UCHAR_MAX ); break; case VIPS_FORMAT_CHAR: LOOP( signed char, int, SCHAR_MIN, SCHAR_MAX ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short, int, 0, USHRT_MAX ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, int, SCHAR_MIN, SCHAR_MAX ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, gint64, 0, UINT_MAX ); break; case VIPS_FORMAT_INT: LOOP( signed int, gint64, INT_MIN, INT_MAX ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOPF( float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOPF( double ); break; default: g_assert_not_reached(); } } static int vips_draw_image_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsDraw *draw = VIPS_DRAW( object ); VipsDrawImage *draw_image = (VipsDrawImage *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage *im; VipsRect image_rect; VipsRect sub_rect; VipsRect clip_rect; if( VIPS_OBJECT_CLASS( vips_draw_image_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_known( class->nickname, draw->image ) || vips_check_coding_same( class->nickname, draw->image, draw_image->sub ) || vips_check_bands_1orn_unary( class->nickname, draw_image->sub, draw->image->Bands ) ) return( -1 ); /* SET will work for any matching coding, but every other mode needs * uncoded images. */ if( draw_image->mode != VIPS_COMBINE_MODE_SET && vips_check_uncoded( class->nickname, draw->image ) ) return( -1 ); /* Cast sub to match main in bands and format. */ im = draw_image->sub; if( im->Coding == VIPS_CODING_NONE ) { if( vips__bandup( class->nickname, im, &t[0], draw->image->Bands ) || vips_cast( t[0], &t[1], draw->image->BandFmt, NULL ) ) return( -1 ); im = t[1]; } /* Make rects for main and sub and clip. */ image_rect.left = 0; image_rect.top = 0; image_rect.width = draw->image->Xsize; image_rect.height = draw->image->Ysize; sub_rect.left = draw_image->x; sub_rect.top = draw_image->y; sub_rect.width = im->Xsize; sub_rect.height = im->Ysize; vips_rect_intersectrect( &image_rect, &sub_rect, &clip_rect ); if( !vips_rect_isempty( &clip_rect ) ) { VipsPel *p, *q; int y; if( vips_image_wio_input( im ) ) return( -1 ); p = VIPS_IMAGE_ADDR( im, clip_rect.left - draw_image->x, clip_rect.top - draw_image->y ); q = VIPS_IMAGE_ADDR( draw->image, clip_rect.left, clip_rect.top ); for( y = 0; y < clip_rect.height; y++ ) { switch( draw_image->mode ) { case VIPS_COMBINE_MODE_SET: memcpy( (char *) q, (char *) p, clip_rect.width * VIPS_IMAGE_SIZEOF_PEL( im ) ); break; case VIPS_COMBINE_MODE_ADD: vips_draw_image_mode_add( draw_image, im, q, p, clip_rect.width ); break; default: g_assert_not_reached(); } p += VIPS_IMAGE_SIZEOF_LINE( im ); q += VIPS_IMAGE_SIZEOF_LINE( draw->image ); } } return( 0 ); } static void vips_draw_image_class_init( VipsDrawImageClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_image"; vobject_class->description = _( "paint an image into another image" ); vobject_class->build = vips_draw_image_build; VIPS_ARG_IMAGE( class, "sub", 5, _( "Sub-image" ), _( "Sub-image to insert into main image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawImage, sub ) ); VIPS_ARG_INT( class, "x", 6, _( "x" ), _( "Draw image here" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawImage, x ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "y", 7, _( "y" ), _( "Draw image here" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawImage, y ), -1000000000, 1000000000, 0 ); VIPS_ARG_ENUM( class, "mode", 8, _( "Mode" ), _( "Combining mode" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsDrawImage, mode ), VIPS_TYPE_COMBINE_MODE, VIPS_COMBINE_MODE_SET ); } static void vips_draw_image_init( VipsDrawImage *draw_image ) { draw_image->mode = VIPS_COMBINE_MODE_SET; } /** * vips_draw_image: (method) * @image: image to draw on * @sub: image to paint * @x: draw @sub here * @y: draw @sub here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @mode: how to combine pixels * * Draw @sub on top of @image at position @x, @y. The two images must have the * same Coding. If @sub has 1 band, the bands will be duplicated to match the * number of bands in @image. @sub will be converted to @image's format, see * vips_cast(). * * Use @mode to set how pixels are combined. If you use * #VIPS_COMBINE_MODE_ADD, both images muct be uncoded. * * See also: vips_draw_mask(), vips_insert(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_image( VipsImage *image, VipsImage *sub, int x, int y, ... ) { va_list ap; int result; va_start( ap, y ); result = vips_call_split( "draw_image", ap, image, sub, x, y ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/draw/draw_line.c000066400000000000000000000211731361153320700177230ustar00rootroot00000000000000/* draw straight draw_lines * * Copyright: J. Cupitt * Written: 15/06/1992 * Modified : 22/10/92 - clipping constraints changed * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 5/12/06 * - im_invalidate() after paint * 1/3/10 * - oops, draw_lineset needs to ask for WIO of mask and ink * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 27/9/10 * - gtk-doc * - use draw.c base class * - do pointwise clipping * - rename as im_draw_line() for consistency * - cleanups! * 6/2/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "drawink.h" typedef struct _VipsDrawLine { VipsDrawink parent_object; int x1; int y1; int x2; int y2; } VipsDrawLine; typedef struct _VipsDrawLineClass { VipsDrawinkClass parent_class; } VipsDrawLineClass; G_DEFINE_TYPE( VipsDrawLine, vips_draw_line, VIPS_TYPE_DRAWINK ); void vips__draw_line_direct( VipsImage *image, int x1, int y1, int x2, int y2, VipsDrawPoint draw_point, void *client ) { int dx, dy; int x, y, err; dx = x2 - x1; dy = y2 - y1; /* Swap endpoints to reduce number of cases. */ if( abs( dx ) >= abs( dy ) && dx < 0 ) { /* Swap to get all x greater or equal cases going to the * right. Do diagonals here .. just have up and right and down * and right now. */ VIPS_SWAP( int, x1, x2 ); VIPS_SWAP( int, y1, y2 ); } else if( abs( dx ) < abs( dy ) && dy < 0 ) { /* Swap to get all y greater cases going down the screen. */ VIPS_SWAP( int, x1, x2 ); VIPS_SWAP( int, y1, y2 ); } dx = x2 - x1; dy = y2 - y1; x = x1; y = y1; /* Special case: zero width and height is single point. */ if( dx == 0 && dy == 0 ) draw_point( image, x, y, client ); /* Special case vertical and horizontal lines for speed. */ else if( dx == 0 ) { /* Vertical line going down. */ for( ; y <= y2; y++ ) draw_point( image, x, y, client ); } else if( dy == 0 ) { /* Horizontal line to the right. */ for( ; x <= x2; x++ ) draw_point( image, x, y, client ); } /* Special case diagonal lines. */ else if( abs( dy ) == abs( dx ) && dy > 0 ) { /* Diagonal line going down and right. */ for( ; x <= x2; x++, y++ ) draw_point( image, x, y, client ); } else if( abs( dy ) == abs( dx ) && dy < 0 ) { /* Diagonal line going up and right. */ for( ; x <= x2; x++, y-- ) draw_point( image, x, y, client ); } else if( abs( dy ) < abs( dx ) && dy > 0 ) { /* Between -45 and 0 degrees. */ for( err = 0; x <= x2; x++ ) { draw_point( image, x, y, client ); err += dy; if( err >= dx ) { err -= dx; y++; } } } else if( abs( dy ) < abs( dx ) && dy < 0 ) { /* Between 0 and 45 degrees. */ for( err = 0; x <= x2; x++ ) { draw_point( image, x, y, client ); err -= dy; if( err >= dx ) { err -= dx; y--; } } } else if( abs( dy ) > abs( dx ) && dx > 0 ) { /* Between -45 and -90 degrees. */ for( err = 0; y <= y2; y++ ) { draw_point( image, x, y, client ); err += dx; if( err >= dy ) { err -= dy; x++; } } } else if( abs( dy ) > abs( dx ) && dx < 0 ) { /* Between -90 and -135 degrees. */ for( err = 0; y <= y2; y++ ) { draw_point( image, x, y, client ); err -= dx; if( err >= dy ) { err -= dy; x--; } } } else g_assert_not_reached(); } static void vips_draw_line_draw_point_noclip( VipsImage *image, int x, int y, void *client ) { VipsPel *ink = (VipsPel *) client; VipsPel *q = VIPS_IMAGE_ADDR( image, x, y ); int psize = VIPS_IMAGE_SIZEOF_PEL( image ); int j; /* Faster than memcopy() for n < about 20. */ for( j = 0; j < psize; j++ ) q[j] = ink[j]; } static void vips_draw_line_draw_point_clip( VipsImage *image, int x, int y, void *client ) { if( x >= 0 && x < image->Xsize && y >= 0 && y < image->Ysize ) vips_draw_line_draw_point_noclip( image, x, y, client ); } static int vips_draw_line_build( VipsObject *object ) { VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); VipsDrawLine *line = (VipsDrawLine *) object; VipsDrawPoint draw_point; if( VIPS_OBJECT_CLASS( vips_draw_line_parent_class )->build( object ) ) return( -1 ); if( line->x1 < draw->image->Xsize && line->x1 >= 0 && line->x2 < draw->image->Xsize && line->x2 >= 0 && line->y1 < draw->image->Ysize && line->y1 >= 0 && line->y2 < draw->image->Ysize && line->y2 >= 0 ) draw_point = vips_draw_line_draw_point_noclip; else draw_point = vips_draw_line_draw_point_clip; vips__draw_line_direct( draw->image, line->x1, line->y1, line->x2, line->y2, draw_point, drawink->pixel_ink ); return( 0 ); } static void vips_draw_line_class_init( VipsDrawLineClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_line"; vobject_class->description = _( "draw a line on an image" ); vobject_class->build = vips_draw_line_build; VIPS_ARG_INT( class, "x1", 3, _( "x1" ), _( "Start of draw_line" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawLine, x1 ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "y1", 4, _( "y1" ), _( "Start of draw_line" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawLine, y1 ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "x2", 5, _( "x2" ), _( "End of draw_line" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawLine, x2 ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "y2", 6, _( "y2" ), _( "End of draw_line" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawLine, y2 ), -1000000000, 1000000000, 0 ); } static void vips_draw_line_init( VipsDrawLine *draw_line ) { } static int vips_draw_linev( VipsImage *image, double *ink, int n, int x1, int y1, int x2, int y2, va_list ap ) { VipsArea *area_ink; int result; area_ink = VIPS_AREA( vips_array_double_new( ink, n ) ); result = vips_call_split( "draw_line", ap, image, area_ink, x1, y1, x2, y2 ); vips_area_unref( area_ink ); return( result ); } /** * vips_draw_line: (method) * @image: image to draw on * @ink: (array length=n): value to draw * @n: length of ink array * @x1: start of draw_line * @y1: start of draw_line * @x2: end of draw_line * @y2: end of draw_line * @...: %NULL-terminated list of optional named arguments * * Draws a 1-pixel-wide line on an image. * * @ink is an array of double containing values to draw. * * See also: vips_draw_line1(), vips_draw_circle(), vips_draw_mask(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_line( VipsImage *image, double *ink, int n, int x1, int y1, int x2, int y2, ... ) { va_list ap; int result; va_start( ap, y2 ); result = vips_draw_linev( image, ink, n, x1, y1, x2, y2, ap ); va_end( ap ); return( result ); } /** * vips_draw_line1: (method) * @image: image to draw on * @ink: value to draw * @x1: start of draw_line * @y1: start of draw_line * @x2: end of draw_line * @y2: end of draw_line * @...: %NULL-terminated list of optional named arguments * * As vips_draw_line(), but just take a single double for @ink. * * See also: vips_draw_line(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_line1( VipsImage *image, double ink, int x1, int y1, int x2, int y2, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, y2 ); result = vips_draw_linev( image, array_ink, 1, x1, y1, x2, y2, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/draw/draw_mask.c000066400000000000000000000233331361153320700177270ustar00rootroot00000000000000/* Draw a mask on an image. * * Copyright: J. Cupitt * Written: 15/06/1992 * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 24/10/03 JC * - now blends with 0-255 mask * 5/12/06 * - im_invalidate() after paint * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 28/9/10 * - gtk-doc * - renamed as im_draw_mask() * - use Draw base class * 7/2/14 * - redo as a class * - now it's VipsDrawMask */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "drawink.h" typedef struct _VipsDrawMask { VipsDrawink parent_object; /* Parameters. */ VipsImage *mask; int x; int y; /* Derived. */ VipsRect image_clip; VipsRect mask_clip; } VipsDrawMask; typedef struct _VipsDrawMaskClass { VipsDrawinkClass parent_class; } VipsDrawMaskClass; G_DEFINE_TYPE( VipsDrawMask, vips_draw_mask, VIPS_TYPE_DRAWINK ); /* Paint ink into an 8 or 16 bit integer image. */ #define IBLEND( TYPE, TO, INK ) { \ TYPE *tto = (TYPE *) (TO); \ TYPE *tink = (TYPE *) (INK); \ \ int x, i, j; \ \ for( j = 0, x = 0; x < width; x++ ) \ for( i = 0; i < bands; i++, j++ ) \ tto[j] = (tink[i] * m[x] + \ tto[j] * (255 - m[x])) / 255; \ } /* Do the blend with doubles. */ #define DBLEND( TYPE, TO, INK ) { \ TYPE *tto = (TYPE *) (TO); \ TYPE *tink = (TYPE *) (INK); \ \ int x, i, j; \ \ for( j = 0, x = 0; x < width; x++ ) \ for( i = 0; i < bands; i++, j++ ) \ tto[j] = ((double) tink[i] * m[x] + \ (double) tto[j] * (255 - m[x])) / 255; \ } /* Blend of complex. */ #define CBLEND( TYPE, TO, INK ) { \ TYPE *tto = (TYPE *) (TO); \ TYPE *tink = (TYPE *) (INK); \ \ int x, i, j; \ \ for( j = 0, x = 0; x < width; x++ ) \ for( i = 0; i < bands * 2; i += 2, j += 2 ) { \ tto[j] = ((double) tink[i] * m[x] + \ (double) tto[j] * (255 - m[x])) / 255;\ tto[j + 1] = ((double) tink[i + 1] * m[x] + \ (double) tto[j + 1] * (255 - m[x])) / \ 255;\ } \ } static int vips_draw_mask_draw_labq( VipsImage *image, VipsImage *mask, VipsPel *ink, VipsRect *image_clip, VipsRect *mask_clip ) { int width = image_clip->width; int height = image_clip->height; int bands = image->Bands; float *lab_buffer; int y; if( !(lab_buffer = VIPS_ARRAY( NULL, width * 3, float )) ) return( -1 ); for( y = 0; y < height; y++ ) { VipsPel *to = VIPS_IMAGE_ADDR( image, image_clip->left, y + image_clip->top ); VipsPel *m = VIPS_IMAGE_ADDR( mask, mask_clip->left, y + mask_clip->top ); vips__LabQ2Lab_vec( lab_buffer, to, width ); DBLEND( float, lab_buffer, (double *) ink ); vips__Lab2LabQ_vec( to, lab_buffer, width ); } g_free( lab_buffer ); return( 0 ); } static int vips_draw_mask_draw( VipsImage *image, VipsImage *mask, VipsPel *ink, VipsRect *image_clip, VipsRect *mask_clip ) { int width = image_clip->width; int height = image_clip->height; int bands = image->Bands; int y; for( y = 0; y < height; y++ ) { VipsPel *to = VIPS_IMAGE_ADDR( image, image_clip->left, y + image_clip->top ); VipsPel *m = VIPS_IMAGE_ADDR( mask, mask_clip->left, y + mask_clip->top ); switch( image->BandFmt ) { case VIPS_FORMAT_UCHAR: IBLEND( unsigned char, to, ink ); break; case VIPS_FORMAT_CHAR: IBLEND( signed char, to, ink ); break; case VIPS_FORMAT_USHORT: IBLEND( unsigned short, to, ink ); break; case VIPS_FORMAT_SHORT: IBLEND( signed short, to, ink ); break; case VIPS_FORMAT_UINT: DBLEND( unsigned int, to, ink ); break; case VIPS_FORMAT_INT: DBLEND( signed int, to, ink ); break; case VIPS_FORMAT_FLOAT: DBLEND( float, to, ink ); break; case VIPS_FORMAT_DOUBLE: DBLEND( double, to, ink ); break; case VIPS_FORMAT_COMPLEX: CBLEND( float, to, ink ); break; case VIPS_FORMAT_DPCOMPLEX: CBLEND( double, to, ink ); break; default: g_assert_not_reached(); } } return( 0 ); } /* Direct path for draw-mask-along-line or draw-mask-along-circle. We want to * avoid function dispatch overhead. * * The vips7 im_draw_mask() wrapper calls this as well. */ int vips__draw_mask_direct( VipsImage *image, VipsImage *mask, VipsPel *ink, int x, int y ) { VipsRect image_rect; VipsRect area_rect; VipsRect image_clip; VipsRect mask_clip; if( vips_check_coding_noneorlabq( "draw_mask_direct", image ) || vips_image_inplace( image ) || vips_image_wio_input( mask ) || vips_check_mono( "draw_mask_direct", mask ) || vips_check_uncoded( "draw_mask_direct", mask ) || vips_check_format( "draw_mask_direct", mask, VIPS_FORMAT_UCHAR ) ) return( -1 ); /* Find the area we draw on the image. */ area_rect.left = x; area_rect.top = y; area_rect.width = mask->Xsize; area_rect.height = mask->Ysize; image_rect.left = 0; image_rect.top = 0; image_rect.width = image->Xsize; image_rect.height = image->Ysize; vips_rect_intersectrect( &area_rect, &image_rect, &image_clip ); /* And the area of the mask image we use. */ mask_clip = image_clip; mask_clip.left -= x; mask_clip.top -= y; if( !vips_rect_isempty( &image_clip ) ) switch( image->Coding ) { case VIPS_CODING_LABQ: if( vips_draw_mask_draw_labq( image, mask, ink, &image_clip, &mask_clip ) ) return( -1 ); break; case VIPS_CODING_NONE: if( vips_draw_mask_draw( image, mask, ink, &image_clip, &mask_clip ) ) return( -1 ); break; default: g_assert_not_reached(); } return( 0 ); } static int vips_draw_mask_build( VipsObject *object ) { VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); VipsDrawMask *mask = (VipsDrawMask *) object; if( VIPS_OBJECT_CLASS( vips_draw_mask_parent_class )->build( object ) ) return( -1 ); if( vips__draw_mask_direct( draw->image, mask->mask, drawink->pixel_ink, mask->x, mask->y ) ) return( -1 ) ; return( 0 ); } static void vips_draw_mask_class_init( VipsDrawMaskClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_mask"; vobject_class->description = _( "draw a mask on an image" ); vobject_class->build = vips_draw_mask_build; VIPS_ARG_IMAGE( class, "mask", 5, _( "Mask" ), _( "Mask of pixels to draw" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawMask, mask ) ); VIPS_ARG_INT( class, "x", 6, _( "x" ), _( "Draw mask here" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawMask, x ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "y", 7, _( "y" ), _( "Draw mask here" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawMask, y ), -1000000000, 1000000000, 0 ); } static void vips_draw_mask_init( VipsDrawMask *draw_mask ) { } static int vips_draw_maskv( VipsImage *image, double *ink, int n, VipsImage *mask, int x, int y, va_list ap ) { VipsArea *area_ink; int result; area_ink = VIPS_AREA( vips_array_double_new( ink, n ) ); result = vips_call_split( "draw_mask", ap, image, area_ink, mask, x, y ); vips_area_unref( area_ink ); return( result ); } /** * vips_draw_mask: (method) * @image: image to draw on * @ink: (array length=n): value to draw * @n: size of ink array * @mask: mask of 0/255 values showing where to plot * @x: draw mask here * @y: draw mask here * @...: %NULL-terminated list of optional named arguments * * Draw @mask on the image. @mask is a monochrome 8-bit image with 0/255 * for transparent or @ink coloured points. Intermediate values blend the ink * with the pixel. Use with vips_text() to draw text on an image. Use in a * vips_draw_line() subclass to draw an object along a line. * * @ink is an array of double containing values to draw. * * See also: vips_text(), vips_draw_line(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_mask( VipsImage *image, double *ink, int n, VipsImage *mask, int x, int y, ... ) { va_list ap; int result; va_start( ap, y ); result = vips_draw_maskv( image, ink, n, mask, x, y, ap ); va_end( ap ); return( result ); } /** * vips_draw_mask1: (method) * @image: image to draw on * @ink: value to draw * @mask: mask of 0/255 values showing where to plot * @x: draw mask here * @y: draw mask here * @...: %NULL-terminated list of optional named arguments * * As vips_draw_mask(), but just takes a single double for @ink. * * See also: vips_draw_mask(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_mask1( VipsImage *image, double ink, VipsImage *mask, int x, int y, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, y ); result = vips_draw_maskv( image, array_ink, 1, mask, x, y, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/draw/draw_rect.c000066400000000000000000000201471361153320700177310ustar00rootroot00000000000000/* Fill Rect r of image im with pels of colour ink. * * Copyright: J. Cupitt * Written: 15/06/1992 * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 5/12/06 * - im_invalidate() after paint * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 22/9/10 * - gtk-doc * - added 'fill' * - renamed as im_draw_rect() for consistency * 27/9/10 * - memcpy() subsequent lines of the rect * 10/2/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "drawink.h" typedef struct _VipsDrawRect { VipsDrawink parent_object; /* Parameters. */ int left; int top; int width; int height; gboolean fill; } VipsDrawRect; typedef struct _VipsDrawRectClass { VipsDrawinkClass parent_class; } VipsDrawRectClass; G_DEFINE_TYPE( VipsDrawRect, vips_draw_rect, VIPS_TYPE_DRAWINK ); static int vips_draw_rect_build( VipsObject *object ) { VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); VipsArea *ink = VIPS_AREA( drawink->ink ); VipsDrawRect *draw_rect = (VipsDrawRect *) object; int left = draw_rect->left; int top = draw_rect->top; int width = draw_rect->width; int height = draw_rect->height; VipsRect image; VipsRect rect; VipsRect clip; if( VIPS_OBJECT_CLASS( vips_draw_rect_parent_class )->build( object ) ) return( -1 ); /* Also use a solid fill for very narrow unfilled rects. */ if( !draw_rect->fill && width > 2 && height > 2 ) return( vips_draw_rect( draw->image, ink->data, ink->n, left, top, width, 1, NULL ) || vips_draw_rect( draw->image, ink->data, ink->n, left + width - 1, top, 1, height, NULL ) || vips_draw_rect( draw->image, ink->data, ink->n, left, top + height - 1, width, 1, NULL ) || vips_draw_rect( draw->image, ink->data, ink->n, left, top, 1, height, NULL ) ); image.left = 0; image.top = 0; image.width = draw->image->Xsize; image.height = draw->image->Ysize; rect.left = left; rect.top = top; rect.width = width; rect.height = height; vips_rect_intersectrect( &rect, &image, &clip ); if( !vips_rect_isempty( &clip ) ) { VipsPel *to = VIPS_IMAGE_ADDR( draw->image, clip.left, clip.top ); VipsPel *q; int x, y; /* We plot the first line pointwise, then memcpy() it for the * subsequent lines. */ q = to; for( x = 0; x < clip.width; x++ ) { vips__drawink_pel( drawink, q ); q += draw->psize; } q = to + draw->lsize; for( y = 1; y < clip.height; y++ ) { memcpy( q, to, clip.width * draw->psize ); q += draw->lsize; } } return( 0 ); } static void vips_draw_rect_class_init( VipsDrawRectClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_rect"; vobject_class->description = _( "paint a rectangle on an image" ); vobject_class->build = vips_draw_rect_build; VIPS_ARG_INT( class, "left", 6, _( "Left" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawRect, left ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "top", 7, _( "top" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawRect, top ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "width", 8, _( "width" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawRect, width ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "height", 9, _( "height" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawRect, height ), -1000000000, 1000000000, 0 ); VIPS_ARG_BOOL( class, "fill", 10, _( "Fill" ), _( "Draw a solid object" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsDrawRect, fill ), FALSE ); } static void vips_draw_rect_init( VipsDrawRect *draw_rect ) { } static int vips_draw_rectv( VipsImage *image, double *ink, int n, int left, int top, int width, int height, va_list ap ) { VipsArea *area_ink; int result; area_ink = VIPS_AREA( vips_array_double_new( ink, n ) ); result = vips_call_split( "draw_rect", ap, image, area_ink, left, top, width, height ); vips_area_unref( area_ink ); return( result ); } /** * vips_draw_rect: (method) * @image: image to draw on * @ink: (array length=n): value to draw * @n: length of ink array * @left: area to paint * @top: area to paint * @width: area to paint * @height: area to paint * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @fill: fill the rect * * Paint pixels within @left, @top, @width, @height in @image with @ink. If * @fill is zero, just paint a 1-pixel-wide outline. * * See also: vips_draw_circle(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_rect( VipsImage *image, double *ink, int n, int left, int top, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_draw_rectv( image, ink, n, left, top, width, height, ap ); va_end( ap ); return( result ); } /** * vips_draw_rect1: (method) * @image: image to draw on * @ink: value to draw * @left: area to paint * @top: area to paint * @width: area to paint * @height: area to paint * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @fill: fill the rect * * As vips_draw_rect(), but just take a single double for @ink. * * See also: vips_draw_rect(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_rect1( VipsImage *image, double ink, int left, int top, int width, int height, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, height ); result = vips_draw_rectv( image, array_ink, 1, left, top, width, height, ap ); va_end( ap ); return( result ); } /** * vips_draw_point: (method) * @image: image to draw on * @ink: (array length=n): value to draw * @n: length of ink array * @x: point to paint * @y: point to paint * @...: %NULL-terminated list of optional named arguments * * As vips_draw_rect(), but draw a single pixel at @x, @y. * * See also: vips_draw_rect(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_point( VipsImage *image, double *ink, int n, int x, int y, ... ) { va_list ap; int result; va_start( ap, y ); result = vips_draw_rectv( image, ink, n, x, y, 1, 1, ap ); va_end( ap ); return( result ); } /** * vips_draw_point1: (method) * @image: image to draw on * @ink: value to draw * @x: point to draw * @y: point to draw * @...: %NULL-terminated list of optional named arguments * * As vips_draw_point(), but just take a single double for @ink. * * See also: vips_draw_point(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_point1( VipsImage *image, double ink, int x, int y, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, y ); result = vips_draw_rectv( image, array_ink, 1, x, y, 1, 1, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/draw/draw_smudge.c000066400000000000000000000142501361153320700202560ustar00rootroot00000000000000/* Smudge a piece of image. * * Copyright: J. Cupitt * Written: 15/06/1992 * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * ? JC * - im_makerw() changed to im_rwcheck() * 5/12/06 * - im_invalidate() after paint * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 30/9/10 * - gtk-doc * - deprecate im_smear() * 30/1/12 * - back to the custom smear, the conv one was too slow * 11/2/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pdraw.h" typedef struct _VipsDrawSmudge { VipsDraw parent_object; /* Parameters. */ int left; int top; int width; int height; } VipsDrawSmudge; typedef struct _VipsDrawSmudgeClass { VipsDrawClass parent_class; } VipsDrawSmudgeClass; G_DEFINE_TYPE( VipsDrawSmudge, vips_draw_smudge, VIPS_TYPE_DRAW ); static int vips_draw_smudge_build( VipsObject *object ) { VipsDraw *draw = VIPS_DRAW( object ); VipsImage *im = draw->image; VipsDrawSmudge *smudge = (VipsDrawSmudge *) object; int left = smudge->left; int top = smudge->top; int width = smudge->width; int height = smudge->height; /* Double bands for complex images. */ int bands = vips_image_get_bands( draw->image ) * (vips_band_format_iscomplex( vips_image_get_format( im ) ) ? 2 : 1); int elements = bands * vips_image_get_width( im ); VipsRect area, image, clipped; double *total; int x, y, i, j, b; if( VIPS_OBJECT_CLASS( vips_draw_smudge_parent_class )-> build( object ) ) return( -1 ); area.left = left; area.top = top; area.width = width; area.height = height; /* Don't do the margins. */ image.left = 0; image.top = 0; image.width = im->Xsize; image.height = im->Ysize; vips_rect_marginadjust( &image, -1 ); vips_rect_intersectrect( &area, &image, &clipped ); if( vips_rect_isempty( &clipped ) ) return( 0 ); if( !(total = VIPS_ARRAY( im, bands, double )) ) return( -1 ); /* What we do for each type. */ #define SMUDGE( TYPE ) \ for( y = 0; y < clipped.height; y++ ) { \ TYPE *q; \ TYPE *p; \ \ q = (TYPE *) VIPS_IMAGE_ADDR( im, \ clipped.left, clipped.top + y ); \ p = q - elements - bands; \ for( x = 0; x < clipped.width; x++ ) { \ TYPE *p1, *p2; \ \ for( b = 0; b < bands; b++ ) \ total[b] = 0.0; \ \ p1 = p; \ for( i = 0; i < 3; i++ ) { \ p2 = p1; \ for( j = 0; j < 3; j++ ) \ for( b = 0; b < bands; b++ ) \ total[b] += *p2++; \ \ p1 += elements; \ } \ \ for( b = 0; b < bands; b++ ) \ q[b] = (16 * (double) q[b] + total[b]) / 25.0; \ \ p += bands; \ q += bands; \ } \ } switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: SMUDGE( unsigned char ); break; case VIPS_FORMAT_CHAR: SMUDGE( char ); break; case VIPS_FORMAT_USHORT: SMUDGE( unsigned short ); break; case VIPS_FORMAT_SHORT: SMUDGE( short ); break; case VIPS_FORMAT_UINT: SMUDGE( unsigned int ); break; case VIPS_FORMAT_INT: SMUDGE( int ); break; case VIPS_FORMAT_FLOAT: SMUDGE( float ); break; case VIPS_FORMAT_DOUBLE: SMUDGE( double ); break; case VIPS_FORMAT_COMPLEX: SMUDGE( float ); break; case VIPS_FORMAT_DPCOMPLEX: SMUDGE( double ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_draw_smudge_class_init( VipsDrawSmudgeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_smudge"; vobject_class->description = _( "blur a rectangle on an image" ); vobject_class->build = vips_draw_smudge_build; VIPS_ARG_INT( class, "left", 6, _( "Left" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawSmudge, left ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "top", 7, _( "top" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawSmudge, top ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "width", 8, _( "width" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawSmudge, width ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "height", 9, _( "height" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawSmudge, height ), -1000000000, 1000000000, 0 ); } static void vips_draw_smudge_init( VipsDrawSmudge *draw_smudge ) { } /** * vips_draw_smudge: (method) * @image: image to draw on * @left: point to paint * @top: point to paint * @width: area to paint * @height: area to paint * @...: %NULL-terminated list of optional named arguments * * Smudge a section of @image. Each pixel in the area @left, @top, @width, * @height is replaced by the average of the surrounding 3x3 pixels. * * See also: vips_draw_line(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_smudge( VipsImage *image, int left, int top, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "draw_smudge", ap, image, left, top, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/draw/drawink.c000066400000000000000000000063661361153320700174250ustar00rootroot00000000000000/* drawink with a constant ink * * 27/9/10 * - from im_drawink_circle() * 17/11/10 * - oops, scanline clipping was off by 1 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "drawink.h" G_DEFINE_ABSTRACT_TYPE( VipsDrawink, vips_drawink, VIPS_TYPE_DRAW ); static int vips_drawink_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); #ifdef DEBUG printf( "vips_drawink_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_drawink_parent_class )->build( object ) ) return( -1 ); if( drawink->ink && !(drawink->pixel_ink = vips__vector_to_ink( class->nickname, draw->image, VIPS_ARRAY_ADDR( drawink->ink, 0 ), NULL, VIPS_AREA( drawink->ink )->n )) ) return( -1 ); return( 0 ); } static void vips_drawink_class_init( VipsDrawinkClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "drawink"; vobject_class->description = _( "draw with ink operations" ); vobject_class->build = vips_drawink_build; VIPS_ARG_BOXED( class, "ink", 2, _( "Ink" ), _( "Color for pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawink, ink ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_drawink_init( VipsDrawink *drawink ) { drawink->ink = vips_array_double_newv( 1, 0.0 ); } /* Fill a scanline between points x1 and x2 inclusive. x1 < x2. */ int vips__drawink_scanline( VipsDrawink *drawink, int y, int x1, int x2 ) { VipsDraw *draw = (VipsDraw *) drawink; VipsPel *mp; int i; int len; g_assert( x1 <= x2 ); if( y < 0 || y >= draw->image->Ysize ) return( 0 ); if( x1 < 0 && x2 < 0 ) return( 0 ); if( x1 >= draw->image->Xsize && x2 >= draw->image->Xsize ) return( 0 ); x1 = VIPS_CLIP( 0, x1, draw->image->Xsize - 1 ); x2 = VIPS_CLIP( 0, x2, draw->image->Xsize - 1 ); mp = VIPS_IMAGE_ADDR( draw->image, x1, y ); len = x2 - x1 + 1; for( i = 0; i < len; i++ ) { vips__drawink_pel( drawink, mp ); mp += draw->psize; } return( 0 ); } libvips-8.9.1/libvips/draw/drawink.h000066400000000000000000000055701361153320700174260ustar00rootroot00000000000000/* a drawink operation with an ink param */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_DRAWINK_H #define VIPS_DRAWINK_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "pdraw.h" #define VIPS_TYPE_DRAWINK (vips_drawink_get_type()) #define VIPS_DRAWINK( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_DRAWINK, VipsDrawink )) #define VIPS_DRAWINK_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_DRAWINK, VipsDrawinkClass)) #define VIPS_IS_DRAWINK( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_DRAWINK )) #define VIPS_IS_DRAWINK_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_DRAWINK )) #define VIPS_DRAWINK_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_DRAWINK, VipsDrawinkClass )) typedef struct _VipsDrawink { VipsDraw parent_instance; VipsArrayDouble *ink; /* Ink cast to pixel type. */ VipsPel *pixel_ink; } VipsDrawink; typedef struct _VipsDrawinkClass { VipsDrawClass parent_class; } VipsDrawinkClass; GType vips_drawink_get_type( void ); static inline int vips__drawink_pel( VipsDrawink *drawink, VipsPel *q ) { VipsDraw *draw = (VipsDraw *) drawink; int j; /* Faster than memcopy() for n < about 20. */ for( j = 0; j < draw->psize; j++ ) q[j] = drawink->pixel_ink[j]; return( 0 ); } /* Paint, with clip. */ static inline int vips__drawink_pel_clip( VipsDrawink *drawink, int x, int y ) { VipsDraw *draw = (VipsDraw *) drawink; if( x < 0 || x >= draw->image->Xsize ) return( 0 ); if( y < 0 || y >= draw->image->Ysize ) return( 0 ); vips__drawink_pel( drawink, VIPS_IMAGE_ADDR( draw->image, x, y ) ); return( 0 ); } /* Is p painted? */ static inline gboolean vips__drawink_painted( VipsDrawink *drawink, VipsPel *p ) { VipsDraw *draw = (VipsDraw *) drawink; int j; for( j = 0; j < draw->psize; j++ ) if( p[j] != drawink->pixel_ink[j] ) break; return( j == draw->psize ); } int vips__drawink_scanline( VipsDrawink *drawink, int y, int x1, int x2 ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_DRAWINK_H*/ libvips-8.9.1/libvips/draw/pdraw.h000066400000000000000000000037671361153320700171120ustar00rootroot00000000000000/* base class for drawing operations */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PDRAW_H #define VIPS_PDRAW_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_DRAW (vips_draw_get_type()) #define VIPS_DRAW( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_DRAW, VipsDraw )) #define VIPS_DRAW_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_DRAW, VipsDrawClass)) #define VIPS_IS_DRAW( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_DRAW )) #define VIPS_IS_DRAW_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_DRAW )) #define VIPS_DRAW_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_DRAW, VipsDrawClass )) typedef struct _VipsDraw { VipsOperation parent_instance; /* Parameters. */ VipsImage *image; /* Draw here */ /* Derived stuff. */ size_t lsize; size_t psize; /* If the object to draw is entirely within the image, we have a * faster noclip path. */ gboolean noclip; } VipsDraw; typedef struct _VipsDrawClass { VipsOperationClass parent_class; } VipsDrawClass; GType vips_draw_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PDRAW_H*/ libvips-8.9.1/libvips/dummy.c000066400000000000000000000001531361153320700161500ustar00rootroot00000000000000/* mac os x libtool hates empty link sections in convenience libraries */ const int im__dummy_value = 42; libvips-8.9.1/libvips/foreign/000077500000000000000000000000001361153320700163035ustar00rootroot00000000000000libvips-8.9.1/libvips/foreign/Makefile.am000066400000000000000000000020221361153320700203330ustar00rootroot00000000000000noinst_LTLIBRARIES = libforeign.la libforeign_la_SOURCES = \ pforeign.h \ heifload.c \ heifsave.c \ niftiload.c \ niftisave.c \ quantise.c \ exif.c \ gifload.c \ cairo.c \ pdfload.c \ pdfiumload.c \ svgload.c \ radiance.c \ radload.c \ radsave.c \ ppmload.c \ ppmsave.c \ csv.c \ csvload.c \ csvsave.c \ matrixload.c \ matrixsave.c \ dzsave.c \ rawload.c \ rawsave.c \ vipsload.c \ vipssave.c \ dbh.h \ analyzeload.c \ analyze2vips.c \ foreign.c \ matlab.c \ matload.c \ magick.h \ magick.c \ magick2vips.c \ magickload.c \ magick7load.c \ magicksave.c \ pngload.c \ pngsave.c \ vipspng.c \ openexr2vips.c \ openexrload.c \ fits.c \ fitsload.c \ fitssave.c \ tiff.h \ tiff.c \ vips2tiff.c \ tiff2vips.c \ tiffload.c \ tiffsave.c \ openslide2vips.c \ openslideload.c \ webpload.c \ webpsave.c \ webp2vips.c \ vips2webp.c \ vips2jpeg.c \ jpeg2vips.c \ jpeg.h \ jpegload.c \ jpegsave.c EXTRA_DIST = AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ libvips-8.9.1/libvips/foreign/analyze2vips.c000066400000000000000000000365321361153320700211070ustar00rootroot00000000000000/* Read a Analyze file. Old-style header (so called 7.5 format). * * 3/8/05 * - dbh.h header from Ralph Myers * 22/8/05 * - better byteswapper * 12/5/09 * - fix signed/unsigned warning * 13/1/09 * - try harder not to generate error messages in "isanalyze" * 4/2/10 * - gtkdoc * 14/12/11 * - redo as a set of fns ready for wrapping in a new-style class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_ANALYZE #include #include #include #include #include #include #include "dbh.h" #include "pforeign.h" /* The things we can have in header fields. Can't use GType, since we want a * static value we can use in a declaration. */ typedef enum { BYTE, SHORT, INT, FLOAT, STRING } Type; /* A field in the dsr header. */ typedef struct { const char *name; /* Eg. "header_key.sizeof_hdr" */ Type type; glong offset; /* Offset in struct */ int len; /* Sizeof ... useful for string types */ } Field; static Field dsr_header[] = { { "dsr-header_key.sizeof_hdr", INT, G_STRUCT_OFFSET( struct dsr, hk.sizeof_hdr ), 4 }, { "dsr-header_key.data_type", STRING, G_STRUCT_OFFSET( struct dsr, hk.data_type ), 10 }, { "dsr-header_key.db_name", STRING, G_STRUCT_OFFSET( struct dsr, hk.db_name ), 18 }, { "dsr-header_key.extents", INT, G_STRUCT_OFFSET( struct dsr, hk.extents ), 4 }, { "dsr-header_key.session_error", SHORT, G_STRUCT_OFFSET( struct dsr, hk.session_error ), 2 }, { "dsr-header_key.regular", BYTE, G_STRUCT_OFFSET( struct dsr, hk.regular ), 1 }, { "dsr-header_key.hkey_un0", BYTE, G_STRUCT_OFFSET( struct dsr, hk.hkey_un0 ), 1 }, { "dsr-image_dimension.dim[0]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[0] ), 2 }, { "dsr-image_dimension.dim[1]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[1] ), 2 }, { "dsr-image_dimension.dim[2]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[2] ), 2 }, { "dsr-image_dimension.dim[3]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[3] ), 2 }, { "dsr-image_dimension.dim[4]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[4] ), 2 }, { "dsr-image_dimension.dim[5]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[5] ), 2 }, { "dsr-image_dimension.dim[6]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[6] ), 2 }, { "dsr-image_dimension.dim[7]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[7] ), 2 }, { "dsr-image_dimension.vox_units[0]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.vox_units[0] ), 1 }, { "dsr-image_dimension.vox_units[1]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.vox_units[1] ), 1 }, { "dsr-image_dimension.vox_units[2]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.vox_units[2] ), 1 }, { "dsr-image_dimension.vox_units[3]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.vox_units[3] ), 1 }, { "dsr-image_dimension.cal_units[0]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[0] ), 1 }, { "dsr-image_dimension.cal_units[1]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[1] ), 1 }, { "dsr-image_dimension.cal_units[2]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[2] ), 1 }, { "dsr-image_dimension.cal_units[3]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[3] ), 1 }, { "dsr-image_dimension.cal_units[4]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[4] ), 1 }, { "dsr-image_dimension.cal_units[5]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[5] ), 1 }, { "dsr-image_dimension.cal_units[6]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[6] ), 1 }, { "dsr-image_dimension.cal_units[7]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[7] ), 1 }, { "dsr-image_dimension.data_type", SHORT, G_STRUCT_OFFSET( struct dsr, dime.datatype ), 2 }, { "dsr-image_dimension.bitpix", SHORT, G_STRUCT_OFFSET( struct dsr, dime.bitpix ), 2 }, { "dsr-image_dimension.dim_un0", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim_un0 ), 2 }, { "dsr-image_dimension.pixdim[0]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[0] ), 4 }, { "dsr-image_dimension.pixdim[1]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[1] ), 4 }, { "dsr-image_dimension.pixdim[2]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[2] ), 4 }, { "dsr-image_dimension.pixdim[3]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[3] ), 4 }, { "dsr-image_dimension.pixdim[4]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[4] ), 4 }, { "dsr-image_dimension.pixdim[5]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[5] ), 4 }, { "dsr-image_dimension.pixdim[6]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[6] ), 4 }, { "dsr-image_dimension.pixdim[7]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[7] ), 4 }, { "dsr-image_dimension.vox_offset", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.vox_offset ), 4 }, { "dsr-image_dimension.cal_max", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.cal_max ), 4 }, { "dsr-image_dimension.cal_min", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.cal_min ), 4 }, { "dsr-image_dimension.compressed", INT, G_STRUCT_OFFSET( struct dsr, dime.compressed ), 4 }, { "dsr-image_dimension.verified", INT, G_STRUCT_OFFSET( struct dsr, dime.verified ), 4 }, { "dsr-image_dimension.glmax", INT, G_STRUCT_OFFSET( struct dsr, dime.glmax ), 4 }, { "dsr-image_dimension.glmin", INT, G_STRUCT_OFFSET( struct dsr, dime.glmin ), 4 }, { "dsr-data_history.descrip", STRING, G_STRUCT_OFFSET( struct dsr, hist.descrip ), 80 }, { "dsr-data_history.aux_file", STRING, G_STRUCT_OFFSET( struct dsr, hist.aux_file ), 24 }, { "dsr-data_history.orient", BYTE, G_STRUCT_OFFSET( struct dsr, hist.orient ), 1 }, { "dsr-data_history.originator", STRING, G_STRUCT_OFFSET( struct dsr, hist.originator ), 10 }, { "dsr-data_history.generated", STRING, G_STRUCT_OFFSET( struct dsr, hist.generated ), 10 }, { "dsr-data_history.scannum", STRING, G_STRUCT_OFFSET( struct dsr, hist.scannum ), 10 }, { "dsr-data_history.patient_id", STRING, G_STRUCT_OFFSET( struct dsr, hist.patient_id ), 10 }, { "dsr-data_history.exp_date", STRING, G_STRUCT_OFFSET( struct dsr, hist.exp_date ), 10 }, { "dsr-data_history.exp_time", STRING, G_STRUCT_OFFSET( struct dsr, hist.exp_time ), 10 }, { "dsr-data_history.hist_un0", STRING, G_STRUCT_OFFSET( struct dsr, hist.hist_un0 ), 3 }, { "dsr-data_history.views", INT, G_STRUCT_OFFSET( struct dsr, hist.views ), 4 }, { "dsr-data_history.vols_added", INT, G_STRUCT_OFFSET( struct dsr, hist.vols_added ), 4 }, { "dsr-data_history.start_field", INT, G_STRUCT_OFFSET( struct dsr, hist.start_field ), 4 }, { "dsr-data_history.field_skip", INT, G_STRUCT_OFFSET( struct dsr, hist.field_skip ), 4 }, { "dsr-data_history.omax", INT, G_STRUCT_OFFSET( struct dsr, hist.omax ), 4 }, { "dsr-data_history.omin", INT, G_STRUCT_OFFSET( struct dsr, hist.omin ), 4 }, { "dsr-data_history.smax", INT, G_STRUCT_OFFSET( struct dsr, hist.smax ), 4 }, { "dsr-data_history.smin", INT, G_STRUCT_OFFSET( struct dsr, hist.smin ), 4 } }; /* Given a filename, generate the names for the header and the image data. * * Eg. * "fred" -> "fred.hdr", "fred.img" * "fred.img" -> "fred.hdr", "fred.img" */ static void generate_filenames( const char *path, char *header, char *image ) { const char *olds[] = { ".img", ".hdr" }; vips__change_suffix( path, header, FILENAME_MAX, ".hdr", olds, 2 ); vips__change_suffix( path, image, FILENAME_MAX, ".img", olds, 2 ); } /* str is a str which may not be NULL-terminated. Return a pointer to a static * buffer with a NULL-terminated version so we can safely printf() the string. * Also, make sure the string is plain ascii. */ static char * getstr( int mx, const char *str ) { static char buf[256]; int i; g_assert( mx < 256 ); vips_strncpy( buf, str, mx ); buf[mx]= '\0'; /* How annoying, patient_id has some funny ctrlchars in that mess up * xml encode later. */ for( i = 0; i < mx && buf[i]; i++ ) if( !isascii( buf[i] ) || buf[i] < 32 ) buf[i] = '@'; return( buf ); } #ifdef DEBUG static void print_dsr( struct dsr *d ) { int i; for( i = 0; i < VIPS_NUMBER( dsr_header ); i++ ) { printf( "%s = ", dsr_header[i].name ); switch( dsr_header[i].type ) { case BYTE: printf( "%d\n", G_STRUCT_MEMBER( char, d, dsr_header[i].offset ) ); break; case SHORT: printf( "%d\n", G_STRUCT_MEMBER( short, d, dsr_header[i].offset ) ); break; case INT: printf( "%d\n", G_STRUCT_MEMBER( int, d, dsr_header[i].offset ) ); break; case FLOAT: printf( "%g\n", G_STRUCT_MEMBER( float, d, dsr_header[i].offset ) ); break; case STRING: printf( "\"%s\"\n", getstr( dsr_header[i].len, &G_STRUCT_MEMBER( char, d, dsr_header[i].offset ) ) ); break; default: g_assert_not_reached(); } } } #endif /*DEBUG*/ static struct dsr * read_header( const char *header ) { struct dsr *d; size_t len; if( !(d = (struct dsr *) vips__file_read_name( header, NULL, &len )) ) return( NULL ); if( len != sizeof( struct dsr ) ) { vips_error( "analyze2vips", "%s", _( "header file size incorrect" ) ); vips_free( d ); return( NULL ); } /* Ouch! Should check at configure time I guess. */ g_assert( sizeof( struct dsr ) == 348 ); /* dsr headers are always SPARC byte order (MSB first). Do we need to * swap? */ if( !vips_amiMSBfirst() ) { int i; for( i = 0; i < VIPS_NUMBER( dsr_header ); i++ ) { unsigned char *p; switch( dsr_header[i].type ) { case SHORT: p = &G_STRUCT_MEMBER( unsigned char, d, dsr_header[i].offset ); vips__copy_2byte( TRUE, p, p ); break; case INT: case FLOAT: p = &G_STRUCT_MEMBER( unsigned char, d, dsr_header[i].offset ); vips__copy_4byte( TRUE, p, p ); break; case BYTE: case STRING: break; default: g_assert_not_reached(); } } } if( (int) len != d->hk.sizeof_hdr ) { vips_error( "analyze2vips", "%s", _( "header size incorrect" ) ); vips_free( d ); return( NULL ); } return( d ); } /* Try to get VIPS header properties from a dsr. */ static int get_vips_properties( struct dsr *d, int *width, int *height, int *bands, VipsBandFormat *fmt ) { int i; if( d->dime.dim[0] < 2 || d->dime.dim[0] > 7 ) { vips_error( "analyze2vips", _( "%d-dimensional images not supported" ), d->dime.dim[0] ); return( -1 ); } /* Size of base 2d images. */ *width = d->dime.dim[1]; *height = d->dime.dim[2]; for( i = 3; i <= d->dime.dim[0]; i++ ) *height *= d->dime.dim[i]; /* Check it's a datatype we can handle. */ switch( d->dime.datatype ) { case DT_UNSIGNED_CHAR: *bands = 1; *fmt = VIPS_FORMAT_UCHAR; break; case DT_SIGNED_SHORT: *bands = 1; *fmt = VIPS_FORMAT_SHORT; break; case DT_SIGNED_INT: *bands = 1; *fmt = VIPS_FORMAT_INT; break; case DT_FLOAT: *bands = 1; *fmt = VIPS_FORMAT_FLOAT; break; case DT_COMPLEX: *bands = 1; *fmt = VIPS_FORMAT_COMPLEX; break; case DT_DOUBLE: *bands = 1; *fmt = VIPS_FORMAT_DOUBLE; break; case DT_RGB: *bands = 3; *fmt = VIPS_FORMAT_UCHAR; break; default: vips_error( "analyze2vips", _( "datatype %d not supported" ), d->dime.datatype ); return( -1 ); } #ifdef DEBUG printf( "get_vips_properties: width = %d\n", *width ); printf( "get_vips_properties: height = %d\n", *height ); printf( "get_vips_properties: bands = %d\n", *bands ); printf( "get_vips_properties: fmt = %d\n", *fmt ); #endif /*DEBUG*/ return( 0 ); } static void attach_meta( VipsImage *out, struct dsr *d ) { int i; vips_image_set_blob( out, "dsr", (VipsCallbackFn) vips_free, d, d->hk.sizeof_hdr ); for( i = 0; i < VIPS_NUMBER( dsr_header ); i++ ) { switch( dsr_header[i].type ) { case BYTE: vips_image_set_int( out, dsr_header[i].name, G_STRUCT_MEMBER( char, d, dsr_header[i].offset ) ); break; case SHORT: vips_image_set_int( out, dsr_header[i].name, G_STRUCT_MEMBER( short, d, dsr_header[i].offset ) ); break; case INT: vips_image_set_int( out, dsr_header[i].name, G_STRUCT_MEMBER( int, d, dsr_header[i].offset ) ); break; case FLOAT: vips_image_set_double( out, dsr_header[i].name, G_STRUCT_MEMBER( float, d, dsr_header[i].offset ) ); break; case STRING: vips_image_set_string( out, dsr_header[i].name, getstr( dsr_header[i].len, &G_STRUCT_MEMBER( char, d, dsr_header[i].offset ) ) ); break; default: g_assert_not_reached(); } } } int vips__isanalyze( const char *filename ) { char header[FILENAME_MAX]; char image[FILENAME_MAX]; struct dsr *d; int width, height; int bands; VipsBandFormat fmt; int result; generate_filenames( filename, header, image ); if( !vips_existsf( "%s", header ) ) return( 0 ); vips_error_freeze(); d = read_header( header ); vips_error_thaw(); if( !d ) return( 0 ); #ifdef DEBUG print_dsr( d ); #endif /*DEBUG*/ vips_error_freeze(); result = get_vips_properties( d, &width, &height, &bands, &fmt ); vips_error_thaw(); vips_free( d ); return( result == 0 ); } int vips__analyze_read_header( const char *filename, VipsImage *out ) { char header[FILENAME_MAX]; char image[FILENAME_MAX]; struct dsr *d; int width, height; int bands; VipsBandFormat fmt; generate_filenames( filename, header, image ); if( !(d = read_header( header )) ) return( -1 ); #ifdef DEBUG print_dsr( d ); #endif /*DEBUG*/ if( get_vips_properties( d, &width, &height, &bands, &fmt ) ) { vips_free( d ); return( -1 ); } vips_image_init_fields( out, width, height, bands, fmt, VIPS_CODING_NONE, bands == 1 ? VIPS_INTERPRETATION_B_W : VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); attach_meta( out, d ); return( 0 ); } int vips__analyze_read( const char *filename, VipsImage *out ) { char header[FILENAME_MAX]; char image[FILENAME_MAX]; struct dsr *d; VipsImage *x = vips_image_new(); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( x ), 3 ); int width, height; int bands; VipsBandFormat fmt; generate_filenames( filename, header, image ); if( !(d = read_header( header )) ) { g_object_unref( x ); return( -1 ); } attach_meta( out, d ); #ifdef DEBUG print_dsr( d ); #endif /*DEBUG*/ if( get_vips_properties( d, &width, &height, &bands, &fmt ) || !(t[0] = vips_image_new_from_file_raw( image, width, height, bands * vips_format_sizeof( fmt ), 0 )) ) { g_object_unref( x ); return( -1 ); } if( vips_copy( t[0], &t[1], "bands", bands, "format", fmt, NULL ) || vips__byteswap_bool( t[1], &t[2], !vips_amiMSBfirst() ) || vips_image_write( t[2], out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } #endif /*HAVE_ANALYZE*/ libvips-8.9.1/libvips/foreign/analyzeload.c000066400000000000000000000105341361153320700207550ustar00rootroot00000000000000/* load analyze from a file * * 5/12/11 * - from openslideload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_ANALYZE #include "pforeign.h" typedef struct _VipsForeignLoadAnalyze { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadAnalyze; typedef VipsForeignLoadClass VipsForeignLoadAnalyzeClass; G_DEFINE_TYPE( VipsForeignLoadAnalyze, vips_foreign_load_analyze, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_analyze_get_flags_filename( const char *filename ) { return( VIPS_FOREIGN_PARTIAL ); } static VipsForeignFlags vips_foreign_load_analyze_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_PARTIAL ); } static int vips_foreign_load_analyze_header( VipsForeignLoad *load ) { VipsForeignLoadAnalyze *analyze = (VipsForeignLoadAnalyze *) load; if( vips__analyze_read_header( analyze->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, analyze->filename ); return( 0 ); } static int vips_foreign_load_analyze_load( VipsForeignLoad *load ) { VipsForeignLoadAnalyze *analyze = (VipsForeignLoadAnalyze *) load; if( vips__analyze_read( analyze->filename, load->real ) ) return( -1 ); return( 0 ); } static const char *vips_foreign_analyze_suffs[] = { ".img", ".hdr", NULL }; static void vips_foreign_load_analyze_class_init( VipsForeignLoadAnalyzeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "analyzeload"; object_class->description = _( "load an Analyze6 image" ); foreign_class->suffs = vips_foreign_analyze_suffs; /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; load_class->is_a = vips__isanalyze; load_class->get_flags_filename = vips_foreign_load_analyze_get_flags_filename; load_class->get_flags = vips_foreign_load_analyze_get_flags; load_class->header = vips_foreign_load_analyze_header; load_class->load = vips_foreign_load_analyze_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadAnalyze, filename ), NULL ); } static void vips_foreign_load_analyze_init( VipsForeignLoadAnalyze *analyze ) { } #endif /*HAVE_ANALYZE*/ /** * vips_analyzeload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Load an Analyze 6.0 file. If @filename is "fred.img", this will look for * an image header called "fred.hdr" and pixel data in "fred.img". You can * also load "fred" or "fred.hdr". * * Images are * loaded lazilly and byte-swapped, if necessary. The Analyze metadata is read * and attached. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_analyzeload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "analyzeload", ap, filename, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/cairo.c000066400000000000000000000032071361153320700175460ustar00rootroot00000000000000/* Shared code for cairo based loaders like svgload and pdfload. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include /* Convert from ARGB to RGBA and undo premultiplication. * * See also openslide's argb2rgba(). */ void vips__cairo2rgba( guint32 * restrict buf, int n ) { int i; for( i = 0; i < n; i++ ) { guint32 * restrict p = buf + i; guint32 x = *p; guint8 a = x >> 24; VipsPel * restrict out = (VipsPel *) p; if( a == 255 ) *p = GUINT32_TO_BE( (x << 8) | 255 ); else if( a == 0 ) *p = GUINT32_TO_BE( x << 8 ); else { /* Undo premultiplication. */ out[0] = 255 * ((x >> 16) & 255) / a; out[1] = 255 * ((x >> 8) & 255) / a; out[2] = 255 * (x & 255) / a; out[3] = a; } } } libvips-8.9.1/libvips/foreign/csv.c000066400000000000000000000365631361153320700172570ustar00rootroot00000000000000/* Read/write csv files. * * 19/12/05 JC * - hacked from ppm reader * 9/6/06 * - hacked from im_debugim * 11/9/06 * - now distingushes whitespace and separators, so we can have blank * fields * 20/9/06 * - oop, unquoted trailing columns could get missed * 23/10/06 * - allow separator to be specified (default "\t", ) * 17/11/06 * - oops, was broken * 17/5/07 * - added im_csv2vips_header() * 4/2/10 * - gtkdoc * 1/3/10 * - allow lines that end with EOF * 23/9/11 * - allow quoted strings, including escaped quotes * 16/12/11 * - rework as a set of fns ready for wrapping as a class * 23/2/12 * - report positions for EOF/EOL errors * 2/7/13 * - add matrix read/write * 4/6/15 * - try to support DOS files under linux ... we have to look for \r\n * linebreaks * 12/8/16 * - allow missing offset and scale in matrix header */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pforeign.h" /* Skip to the start of the next line (ie. read until we see a '\n'), return * zero if we are at EOF. * * Files can end with EOF or with \nEOF. Tricky! */ static int skip_line( FILE *fp ) { int ch; /* Are we at a delayed EOF? See below. */ if( (ch = vips__fgetc( fp )) == EOF ) return( 0 ); ungetc( ch, fp ); /* If we hit EOF and no \n, wait until the next call to report EOF. */ while( (ch = vips__fgetc( fp )) != '\n' && ch != EOF ) ; return( -1 ); } static int skip_white( FILE *fp, const char whitemap[256] ) { int ch; do { ch = vips__fgetc( fp ); } while( ch != EOF && ch != '\n' && whitemap[ch] ); ungetc( ch, fp ); return( ch ); } static int skip_to_quote( FILE *fp ) { int ch; do { ch = vips__fgetc( fp ); /* Ignore \" in strings. */ if( ch == '\\' ) ch = vips__fgetc( fp ); else if( ch == '"' ) break; } while( ch != EOF && ch != '\n' ); ungetc( ch, fp ); return( ch ); } static int skip_to_sep( FILE *fp, const char sepmap[256] ) { int ch; do { ch = vips__fgetc( fp ); } while( ch != EOF && ch != '\n' && !sepmap[ch] ); ungetc( ch, fp ); return( ch ); } /* Read a single item. Syntax is: * * element : * whitespace* item whitespace* [EOF|EOL|separator] * * item : * double | * "anything" | * empty * * the anything in quotes can contain " escaped with \ * * Return the char that caused failure on fail (EOF or \n). */ static int read_double( FILE *fp, const char whitemap[256], const char sepmap[256], int lineno, int colno, double *out, gboolean fail ) { int ch; /* The fscanf() may change this ... but all other cases need a zero. */ *out = 0; ch = skip_white( fp, whitemap ); if( ch == EOF || ch == '\n' ) return( ch ); if( ch == '"' ) { (void) vips__fgetc( fp ); (void) skip_to_quote( fp ); (void) vips__fgetc( fp ); } else if( !sepmap[ch] && fscanf( fp, "%lf", out ) != 1 ) { /* Only a warning, since (for example) exported spreadsheets * will often have text or date fields. */ g_warning( _( "error parsing number, line %d, column %d" ), lineno, colno ); if( fail ) return( EOF ); /* Step over the bad data to the next separator. */ (void) skip_to_sep( fp, sepmap ); } /* Don't need to check result, we have read a field successfully. */ ch = skip_white( fp, whitemap ); /* If it's a separator, we have to step over it. */ if( ch != EOF && sepmap[ch] ) (void) vips__fgetc( fp ); return( 0 ); } static int read_csv( FILE *fp, VipsImage *out, int skip, int lines, const char *whitespace, const char *separator, gboolean read_image, gboolean fail ) { int i; char whitemap[256]; char sepmap[256]; const char *p; fpos_t pos; int columns; int ch; double d; double *buf; int y; /* Make our char maps. */ for( i = 0; i < 256; i++ ) { whitemap[i] = 0; sepmap[i] = 0; } for( p = whitespace; *p; p++ ) whitemap[(int) *p] = 1; for( p = separator; *p; p++ ) sepmap[(int) *p] = 1; /* Skip first few lines. */ for( i = 0; i < skip; i++ ) if( !skip_line( fp ) ) { vips_error( "csv2vips", "%s", _( "end of file while skipping start" ) ); return( -1 ); } /* Parse the first line to get number of columns. Only bother checking * fgetpos() the first time we use it: assume it's working after this. */ if( fgetpos( fp, &pos ) ) { vips_error_system( errno, "csv2vips", "%s", _( "unable to seek" ) ); return( -1 ); } for( columns = 0; (ch = read_double( fp, whitemap, sepmap, skip + 1, columns + 1, &d, fail )) == 0; columns++ ) ; (void) fsetpos( fp, &pos ); if( columns == 0 ) { vips_error( "csv2vips", "%s", _( "empty line" ) ); return( -1 ); } /* If lines is -1, we have to scan the whole file to get the * number of lines out. */ if( lines == -1 ) { (void) fgetpos( fp, &pos ); for( lines = 0; skip_line( fp ); lines++ ) ; (void) fsetpos( fp, &pos ); } vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); vips_image_init_fields( out, columns, lines, 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_B_W, 1.0, 1.0 ); /* Just reading the header? We are done. */ if( !read_image ) return( 0 ); if( !(buf = VIPS_ARRAY( out, VIPS_IMAGE_N_ELEMENTS( out ), double )) ) return( -1 ); for( y = 0; y < lines; y++ ) { int x; for( x = 0; x < columns; x++ ) { int lineno = y + skip + 1; int colno = x + 1; ch = read_double( fp, whitemap, sepmap, lineno, colno, &d, fail ); if( ch == EOF ) { vips_error( "csv2vips", _( "unexpected EOF, line %d col %d" ), lineno, colno ); return( -1 ); } else if( ch == '\n' ) { vips_error( "csv2vips", _( "unexpected EOL, line %d col %d" ), lineno, colno ); return( -1 ); } else if( ch ) /* Parse error. */ return( -1 ); buf[x] = d; } if( vips_image_write_line( out, y, (VipsPel *) buf ) ) return( -1 ); /* Skip over the '\n' to the next line. */ skip_line( fp ); } return( 0 ); } int vips__csv_read( const char *filename, VipsImage *out, int skip, int lines, const char *whitespace, const char *separator, gboolean fail ) { FILE *fp; if( !(fp = vips__file_open_read( filename, NULL, TRUE )) ) return( -1 ); if( read_csv( fp, out, skip, lines, whitespace, separator, TRUE, fail ) ) { fclose( fp ); return( -1 ); } fclose( fp ); return( 0 ); } int vips__csv_read_header( const char *filename, VipsImage *out, int skip, int lines, const char *whitespace, const char *separator, gboolean fail ) { FILE *fp; if( !(fp = vips__file_open_read( filename, NULL, TRUE )) ) return( -1 ); if( read_csv( fp, out, skip, lines, whitespace, separator, FALSE, fail ) ) { fclose( fp ); return( -1 ); } fclose( fp ); return( 0 ); } const char *vips__foreign_csv_suffs[] = { ".csv", NULL }; #define PRINT_INT( TYPE ) fprintf( fp, "%d", *((TYPE*)p) ); #define PRINT_FLOAT( TYPE ) fprintf( fp, "%g", *((TYPE*)p) ); #define PRINT_COMPLEX( TYPE ) fprintf( fp, "(%g, %g)", \ ((TYPE*)p)[0], ((TYPE*)p)[1] ); static int vips2csv( VipsImage *in, FILE *fp, const char *sep ) { int w = VIPS_IMAGE_N_ELEMENTS( in ); int es = VIPS_IMAGE_SIZEOF_ELEMENT( in ); int x, y; VipsPel *p; p = in->data; for( y = 0; y < in->Ysize; y++ ) { for( x = 0; x < w; x++ ) { if( x > 0 ) fprintf( fp, "%s", sep ); switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: PRINT_INT( unsigned char ); break; case VIPS_FORMAT_CHAR: PRINT_INT( char ); break; case VIPS_FORMAT_USHORT: PRINT_INT( unsigned short ); break; case VIPS_FORMAT_SHORT: PRINT_INT( short ); break; case VIPS_FORMAT_UINT: PRINT_INT( unsigned int ); break; case VIPS_FORMAT_INT: PRINT_INT( int ); break; case VIPS_FORMAT_FLOAT: PRINT_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: PRINT_FLOAT( double ); break; case VIPS_FORMAT_COMPLEX: PRINT_COMPLEX( float ); break; case VIPS_FORMAT_DPCOMPLEX: PRINT_COMPLEX( double ); break; default: g_assert_not_reached(); } p += es; } fprintf( fp, "\n" ); } return( 0 ); } int vips__csv_write( VipsImage *in, const char *filename, const char *separator ) { FILE *fp; VipsImage *memory; if( vips_check_mono( "vips2csv", in ) || vips_check_uncoded( "vips2csv", in ) || !(memory = vips_image_copy_memory( in )) ) return( -1 ); if( !(fp = vips__file_open_write( filename, TRUE )) ) { VIPS_UNREF( memory ); return( -1 ); } if( vips2csv( memory, fp, separator ) ) { fclose( fp ); VIPS_UNREF( memory ); return( -1 ); } fclose( fp ); VIPS_UNREF( memory ); return( 0 ); } /* Read to non-whitespace, or buffer overflow. */ static int fetch_nonwhite( FILE *fp, const char whitemap[256], char *buf, int max ) { int ch; int i; for( i = 0; i < max - 1; i++ ) { ch = vips__fgetc( fp ); if( ch == EOF || ch == '\n' || whitemap[ch] ) break; buf[i] = ch; } buf[i] = '\0'; /* We mustn't skip the terminator. */ ungetc( ch, fp ); return( ch ); } /* Read a single double in ascii (not locale) encoding. * * Return the char that caused failure on fail (EOF or \n). */ static int read_ascii_double( FILE *fp, const char whitemap[256], double *out ) { int ch; char buf[256]; char *p; *out = 0.0; ch = skip_white( fp, whitemap ); if( ch == EOF || ch == '\n' ) return( ch ); fetch_nonwhite( fp, whitemap, buf, 256 ); /* The str we fetched must contain at least 1 digit. This helps stop * us trying to convert "MATLAB" (for example) to a number and * getting zero. */ for( p = buf; *p; p++ ) if( isdigit( *p ) ) break; if( !*p ) return( *buf ); *out = g_ascii_strtod( buf, NULL ); return( 0 ); } /* Read the header. Two numbers for width and height, and two optional * numbers for scale and offset. * * We can have scale and no offset, in which case we assume offset = 0. */ static int vips__matrix_header( char *whitemap, FILE *fp, int *width, int *height, double *scale, double *offset ) { double header[4]; double d; int i; int ch; for( i = 0; i < 4 && (ch = read_ascii_double( fp, whitemap, &header[i] )) == 0; i++ ) ; if( i < 4 ) header[3] = 0.0; if( i < 3 ) header[2] = 1.0; if( i < 2 ) { vips_error( "mask2vips", "%s", _( "no width / height" ) ); return( -1 ); } if( VIPS_FLOOR( header[0] ) != header[0] || VIPS_FLOOR( header[1] ) != header[1] ) { vips_error( "mask2vips", "%s", _( "width / height not int" ) ); return( -1 ); } *width = header[0]; *height = header[1]; if( *width <= 0 || *width > 100000 || *height <= 0 || *height > 100000 ) { vips_error( "mask2vips", "%s", _( "width / height out of range" ) ); return( -1 ); } if( (ch = read_ascii_double( fp, whitemap, &d )) != '\n' ) { vips_error( "mask2vips", "%s", _( "extra chars in header" ) ); return( -1 ); } if( header[2] == 0.0 ) { vips_error( "mask2vips", "%s", _( "zero scale" ) ); return( -1 ); } *scale = header[2]; *offset = header[3]; skip_line( fp ); return( 0 ); } #define WHITESPACE " \"\t\n;," /* Get the header from an matrix file. * * Also read the first line and make sure there are the right number of * entries. */ int vips__matrix_read_header( const char *filename, int *width, int *height, double *scale, double *offset ) { char whitemap[256]; int i; char *p; FILE *fp; int ch; double d; for( i = 0; i < 256; i++ ) whitemap[i] = 0; for( p = WHITESPACE; *p; p++ ) whitemap[(int) *p] = 1; if( !(fp = vips__file_open_read( filename, NULL, TRUE )) ) return( -1 ); if( vips__matrix_header( whitemap, fp, width, height, scale, offset ) ) { fclose( fp ); return( -1 ); } for( i = 0; i < *width; i++ ) { ch = read_ascii_double( fp, whitemap, &d ); if( ch ) { fclose( fp ); vips_error( "mask2vips", "%s", _( "line too short" ) ); return( -1 ); } } /* Deliberately don't check for line too long. */ fclose( fp ); return( 0 ); } int vips__matrix_ismatrix( const char *filename ) { int width; int height; double scale; double offset; int result; vips_error_freeze(); result = vips__matrix_read_header( filename, &width, &height, &scale, &offset ); vips_error_thaw(); return( result == 0 ); } static int vips__matrix_body( char *whitemap, VipsImage *out, FILE *fp ) { int x, y; for( y = 0; y < out->Ysize; y++ ) { for( x = 0; x < out->Xsize; x++ ) { int ch; double d; ch = read_ascii_double( fp, whitemap, &d ); if( ch == EOF || ch == '\n' ) { vips_error( "mask2vips", _( "line %d too short" ), y + 1 ); return( -1 ); } *VIPS_MATRIX( out, x, y ) = d; /* Deliberately don't check for line too long. */ } skip_line( fp ); } return( 0 ); } VipsImage * vips__matrix_read_file( FILE *fp ) { char whitemap[256]; int i; char *p; int width; int height; double scale; double offset; VipsImage *out; for( i = 0; i < 256; i++ ) whitemap[i] = 0; for( p = WHITESPACE; *p; p++ ) whitemap[(int) *p] = 1; if( vips__matrix_header( whitemap, fp, &width, &height, &scale, &offset ) ) return( NULL ); if( !(out = vips_image_new_matrix( width, height )) ) return( NULL ); vips_image_set_double( out, "scale", scale ); vips_image_set_double( out, "offset", offset ); if( vips__matrix_body( whitemap, out, fp ) ) { g_object_unref( out ); return( NULL ); } return( out ); } VipsImage * vips__matrix_read( const char *filename ) { FILE *fp; VipsImage *out; if( !(fp = vips__file_open_read( filename, NULL, TRUE )) ) return( NULL ); out = vips__matrix_read_file( fp ); fclose( fp ); return( out ); } int vips__matrix_write_file( VipsImage *in, FILE *fp ) { VipsImage *mask; int x, y; if( vips_check_matrix( "vips2mask", in, &mask ) ) return( -1 ); fprintf( fp, "%d %d ", mask->Xsize, mask->Ysize ); if( vips_image_get_typeof( mask, "scale" ) && vips_image_get_typeof( mask, "offset" ) ) fprintf( fp, "%g %g ", vips_image_get_scale( mask ), vips_image_get_offset( mask ) ); fprintf( fp, "\n" ); for( y = 0; y < mask->Ysize; y++ ) { for( x = 0; x < mask->Xsize; x++ ) fprintf( fp, "%g ", *VIPS_MATRIX( mask, x, y ) ); fprintf( fp, "\n" ); } g_object_unref( mask ); return( 0 ); } int vips__matrix_write( VipsImage *in, const char *filename ) { FILE *fp; int result; if( !(fp = vips__file_open_write( filename, TRUE )) ) return( -1 ); result = vips__matrix_write_file( in, fp ); fclose( fp ); return( result ); } const char *vips__foreign_matrix_suffs[] = { ".mat", NULL }; libvips-8.9.1/libvips/foreign/csvload.c000066400000000000000000000143151361153320700201060ustar00rootroot00000000000000/* load csv from a file * * 5/12/11 * - from csvload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pforeign.h" typedef struct _VipsForeignLoadCsv { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; int skip; int lines; const char *whitespace; const char *separator; } VipsForeignLoadCsv; typedef VipsForeignLoadClass VipsForeignLoadCsvClass; G_DEFINE_TYPE( VipsForeignLoadCsv, vips_foreign_load_csv, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_csv_get_flags_filename( const char *filename ) { return( 0 ); } static VipsForeignFlags vips_foreign_load_csv_get_flags( VipsForeignLoad *load ) { VipsForeignLoadCsv *csv = (VipsForeignLoadCsv *) load; return( vips_foreign_load_csv_get_flags_filename( csv->filename ) ); } static int vips_foreign_load_csv_header( VipsForeignLoad *load ) { VipsForeignLoadCsv *csv = (VipsForeignLoadCsv *) load; if( vips__csv_read_header( csv->filename, load->out, csv->skip, csv->lines, csv->whitespace, csv->separator, load->fail ) ) return( -1 ); VIPS_SETSTR( load->out->filename, csv->filename ); return( 0 ); } static int vips_foreign_load_csv_load( VipsForeignLoad *load ) { VipsForeignLoadCsv *csv = (VipsForeignLoadCsv *) load; if( vips__csv_read( csv->filename, load->real, csv->skip, csv->lines, csv->whitespace, csv->separator, load->fail ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_csv_class_init( VipsForeignLoadCsvClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "csvload"; object_class->description = _( "load csv from file" ); foreign_class->suffs = vips__foreign_csv_suffs; load_class->get_flags_filename = vips_foreign_load_csv_get_flags_filename; load_class->get_flags = vips_foreign_load_csv_get_flags; load_class->header = vips_foreign_load_csv_header; load_class->load = vips_foreign_load_csv_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadCsv, filename ), NULL ); VIPS_ARG_INT( class, "skip", 20, _( "Skip" ), _( "Skip this many lines at the start of the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadCsv, skip ), 0, 10000000, 0 ); VIPS_ARG_INT( class, "lines", 21, _( "Lines" ), _( "Read this many lines from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadCsv, lines ), -1, 10000000, 0 ); VIPS_ARG_STRING( class, "whitespace", 22, _( "Whitespace" ), _( "Set of whitespace characters" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadCsv, whitespace ), " " ); VIPS_ARG_STRING( class, "separator", 23, _( "Separator" ), _( "Set of separator characters" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadCsv, separator ), ";,\t" ); } static void vips_foreign_load_csv_init( VipsForeignLoadCsv *csv ) { csv->lines = -1; csv->whitespace = g_strdup( " " ); csv->separator = g_strdup( ";,\t" ); } /** * vips_csvload: * @filename: file to load * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @skip: skip this many lines at start of file * * @lines: read this many lines from file * * @whitespace: set of whitespace characters * * @separator: set of separator characters * * @fail: %gboolean, fail on errors * * Load a CSV (comma-separated values) file. The output image is always 1 * band (monochrome), #VIPS_FORMAT_DOUBLE. Use vips_bandfold() to turn * RGBRGBRGB mono images into colour iamges. * * Items in lines can be either floating point numbers in the C locale, or * strings enclosed in double-quotes ("), or empty. * You can use a backslash (\) within the quotes to escape special characters, * such as quote marks. * * The reader is deliberately rather fussy: it will fail if there are any * short lines, or if the file is too short. It will ignore lines that are * too long. * * @skip sets the number of lines to skip at the start of the file. * Default zero. * * @lines sets the number of lines to read from the file. Default -1, * meaning read all lines to end of file. * * @whitespace sets the skippable whitespace characters. * Default space. * Whitespace characters are always run together. * * @separator sets the characters that separate fields. * Default ;,tab. Separators are never run together. * * Setting @fail to %TRUE makes the reader fail on any errors. * * See also: vips_image_new_from_file(), vips_bandfold(). * * Returns: 0 on success, -1 on error. */ int vips_csvload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "csvload", ap, filename, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/csvsave.c000066400000000000000000000075311361153320700201270ustar00rootroot00000000000000/* save to csv * * 2/12/11 * - wrap a class around the csv writer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pforeign.h" typedef struct _VipsForeignSaveCsv { VipsForeignSave parent_object; /* Filename for save. */ char *filename; const char *separator; } VipsForeignSaveCsv; typedef VipsForeignSaveClass VipsForeignSaveCsvClass; G_DEFINE_TYPE( VipsForeignSaveCsv, vips_foreign_save_csv, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_csv_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveCsv *csv = (VipsForeignSaveCsv *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_csv_parent_class )-> build( object ) ) return( -1 ); if( vips__csv_write( save->ready, csv->filename, csv->separator ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_csv_class_init( VipsForeignSaveCsvClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "csvsave"; object_class->description = _( "save image to csv file" ); object_class->build = vips_foreign_save_csv_build; foreign_class->suffs = vips__foreign_csv_suffs; save_class->saveable = VIPS_SAVEABLE_MONO; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveCsv, filename ), NULL ); VIPS_ARG_STRING( class, "separator", 13, _( "Separator" ), _( "Separator characters" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveCsv, separator ), "\t" ); } static void vips_foreign_save_csv_init( VipsForeignSaveCsv *csv ) { csv->separator = g_strdup( "\t" ); } /** * vips_csvsave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @separator: separator string * * Writes the pixels in @in to the @filename as CSV (comma-separated values). * The image is written * one line of text per scanline. Complex numbers are written as * "(real,imaginary)" and will need extra parsing I guess. Only the first band * is written. * * @separator gives the string to use to separate numbers in the output. * The default is "\\t" (tab). * * See also: vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_csvsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "csvsave", ap, in, filename ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/dbh.h000066400000000000000000000077741361153320700172300ustar00rootroot00000000000000/* * * (c) Copyright, 1986-1991 * Biodynamics Research Unit * Mayo Foundation * * dbh.h * * * database sub-definitions */ /* * * The previous-generation header for Analyze images. Although (c) Mayo * Foundation, it has been in the public domain for many years. * * Analyze images have a 348 byte header stored in a file with a .hdr suffix, * and a corresponding .img file containing just the pixel data. * */ struct header_key /* header_key */ { /* off + size*/ int sizeof_hdr; /* 0 + 4 */ char data_type[10]; /* 4 + 10 */ char db_name[18]; /* 14 + 18 */ int extents; /* 32 + 4 */ short int session_error; /* 36 + 2 */ char regular; /* 38 + 1 */ char hkey_un0; /* 39 + 1 */ }; /* total=40 */ struct image_dimension /* image_dimension */ { /* off + size*/ short int dim[8]; /* 0 + 16 */ char vox_units[4]; /* 16 + 4 */ char cal_units[8]; /* 20 + 4 */ short int unused1; /* 24 + 2 */ short int datatype; /* 30 + 2 */ short int bitpix; /* 32 + 2 */ short int dim_un0; /* 34 + 2 */ float pixdim[8]; /* 36 + 32 */ /* pixdim[] specifies the voxel dimensions: pixdim[1] - voxel width pixdim[2] - voxel height pixdim[3] - interslice distance ..etc */ float vox_offset; /* 68 + 4 */ float funused1; /* 72 + 4 */ float funused2; /* 76 + 4 */ float funused3; /* 80 + 4 */ float cal_max; /* 84 + 4 */ float cal_min; /* 88 + 4 */ int compressed; /* 92 + 4 */ int verified; /* 96 + 4 */ int glmax, glmin; /* 100 + 8 */ }; struct data_history /* data_history */ { /* off + size*/ char descrip[80]; /* 0 + 80 */ char aux_file[24]; /* 80 + 24 */ char orient; /* 104 + 1 */ char originator[10]; /* 105 + 10 */ char generated[10]; /* 115 + 10 */ char scannum[10]; /* 125 + 10 */ char patient_id[10]; /* 135 + 10 */ char exp_date[10]; /* 145 + 10 */ char exp_time[10]; /* 155 + 10 */ char hist_un0[3]; /* 165 + 3 */ int views; /* 168 + 4 */ int vols_added; /* 172 + 4 */ int start_field; /* 176 + 4 */ int field_skip; /* 180 + 4 */ int omax,omin; /* 184 + 8 */ int smax,smin; /* 192 + 8 */ }; /* total=200 */ struct dsr /* dsr */ { /* off + size*/ struct header_key hk; /* 0 + 40 */ struct image_dimension dime; /* 40 + 108 */ struct data_history hist; /* 148 + 200 */ }; /* total=348 */ /* Acceptable values for hdr.dime.datatype */ /* * commented this one out: we don't use it, and dirent.h defines this on some * platforms. * #define DT_UNKNOWN 0 */ #define DT_BINARY 1 #define DT_UNSIGNED_CHAR 2 #define DT_SIGNED_SHORT 4 #define DT_SIGNED_INT 8 #define DT_FLOAT 16 #define DT_COMPLEX 32 #define DT_DOUBLE 64 #define DT_RGB 128 libvips-8.9.1/libvips/foreign/dzsave.c000066400000000000000000002213121361153320700177440ustar00rootroot00000000000000/* save to deep zoom format * * 21/3/12 * - from the tiff pyramid writer * 5/7/12 (thanks Alexander Koshman) * - make tiles down to 1x1 pixels * - oop make right-hand edge tiles * - improve overlap handling * 7/7/12 * - threaded write * 6/8/12 (thanks to Benjamin Gilbert for pointing out the errors) * - shrink down to a 1x1 pixel tile, even for very long and thin images * - round image size up on shrink * - write a .dzi file with the pyramid params * - default tile size and overlap now matches the openslide writer * 7/8/12 (thanks to Benjamin Gilbert again for more testing) * - reorganise the directory structure * - rename to basename and tile_size * - deprecate tile_width/_height and dirname * 1/10/12 * - did not write low pyramid layers for images with an odd number of * scan lines (thanks Martin) * 2/10/12 * - remove filename options from format string in .dzi (thanks Martin) * 3/10/12 * - add zoomify and google maps output * 10/10/12 * - add @background option * 1/11/12 * - add @depth option * 21/1/13 * - add @centre option * 26/2/13 * - fix another corner case, thanks Martin * 29/5/13 * - add --angle option * 19/6/13 * - faster --centre logic, thanks Kacey * 18/4/14 * - use libgsf for output so we can write to .zip etc. as well as the * filesystem * 8/5/14 * - set Type on strips so we can convert for save correctly, thanks * philipgiuliani * 25/6/14 * - stop on zip write >4gb, thanks bgilbert * - save metadata, see https://github.com/libvips/libvips/issues/137 * 18/8/14 * - use g_ date funcs, helps Windows * 14/2/15 * - use vips_region_shrink() * 22/2/15 * - use a better temp dir name for fs dz output * 8/8/15 * - allow zip > 4gb if we have a recent libgsf * 9/9/15 * - better overlap handling, thanks robclouth * 24/11/15 * - don't write almost blank tiles in google mode * 25/11/15 * - always strip tile metadata * 16/12/15 * - fix overlap handling again, thanks erdmann * 8/6/16 Felix Bünemann * - add @compression option * 5/9/16 * - more overlap changes to help gmaps mode * 8/9/16 Felix Bünemann * - move vips-properties out of subdir for gm and zoomify layouts * 15/10/16 * - add dzsave_buffer * 11/11/16 Felix Bünemann * - better >4gb detection for zip output on older libgsfs * 18/8/17 * - shut down the output earlier to flush zip output * 24/11/17 * - output overlap-only tiles on edges for better deepzoom spec * compliance * 6/1/18 * - add scan-properties.xml for szi output * - write all associated images * 19/12/18 * - add @skip_blanks * 21/10/19 * - add @no_strip * 9/11/19 * - add IIIF layout */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* This is difficult to test, there are so many options. It's failed in the past in these cases. These have layers with strips which exactly align with image edges, or which have orphan scanlines which need adding for the shrink. 1. $ header test.v test.v: 14016x16448 uchar, 3 bands, srgb, openin VipsImage (0x11e7060) $ time vips dzsave test.v x --overlap 0 Not all layers written. 2. $ header ~/Desktop/leicaimage.scn /home/john/Desktop/leicaimage.scn: 4225x7905 uchar, 4 bands, rgb Not all layers written. 3. $ header ~/leicatest1.scn /home/john/leicatest1.scn: 11585x8449 uchar, 4 bands, rgb Not all layers written. various combinations of odd and even tile-size and overlap need testing too. Overlap handling For deepzoom, tile-size == 254 and overlap == 1 means that edge tiles are 255 x 255 (though less at the bottom right) and non-edge tiles are 256 x 256. Tiles are positioned across the image in tile-size steps. This means (confusingly) that two adjoining tiles will have two pixels in common. This has caused bugs in the past. */ /* #define DEBUG_VERBOSE #define VIPS_DEBUG #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #ifdef HAVE_GSF #include /* Simple wrapper around libgsf. * * We need to be able to do scattered writes to structured files. So while * building a zip (for example) we need to be able to write to file/a/b.jpg, * then to file/c/d.jpg, then back to file/a/e.jpg. This is tricky with the * libgsf API which is happier doing writes in order. * * Put an API over libgsf to track refs to all directories and finish/close * them. */ /* Need to track the directory tree we are writing, with a ref for each * GsfOutput. */ typedef struct _VipsGsfDirectory { struct _VipsGsfDirectory *parent; char *name; /* List of child directories, if any. */ GSList *children; /* The GsfOutput we use for this object. */ GsfOutput *out; /* The root node holds the enclosing zip file or FS root ... finish * this on cleanup. */ GsfOutput *container; /* Track number of files in tree and total length of filenames. We use * this to estimate zip size to spot a >4gb write. */ size_t file_count; size_t filename_lengths; /* Set deflate compression level for zip container. */ gint deflate_level; } VipsGsfDirectory; /* Close all dirs, non-NULL on error. */ static void * vips_gsf_tree_close( VipsGsfDirectory *tree ) { vips_slist_map2( tree->children, (VipsSListMap2Fn) vips_gsf_tree_close, NULL, NULL ); if( tree->out ) { if( !gsf_output_is_closed( tree->out ) && !gsf_output_close( tree->out ) ) { vips_error( "vips_gsf", "%s", _( "unable to close stream" ) ); return( tree ); } VIPS_UNREF( tree->out ); } if( tree->container ) { if( !gsf_output_is_closed( tree->container ) && !gsf_output_close( tree->container ) ) { vips_error( "vips_gsf", "%s", _( "unable to close stream" ) ); return( tree ); } VIPS_UNREF( tree->container ); } VIPS_FREEF( g_slist_free, tree->children ); VIPS_FREE( tree->name ); VIPS_FREE( tree ); return( NULL ); } /* Make a new tree root. */ static VipsGsfDirectory * vips_gsf_tree_new( GsfOutput *out, gint deflate_level ) { VipsGsfDirectory *tree = g_new( VipsGsfDirectory, 1 ); tree->parent = NULL; tree->name = NULL; tree->children = NULL; tree->out = out; tree->container = NULL; tree->file_count = 0; tree->filename_lengths = 0; tree->deflate_level = deflate_level; return( tree ); } static void * vips_gsf_child_by_name_sub( VipsGsfDirectory *dir, const char *name ) { if( strcmp( dir->name, name ) == 0 ) return( dir ); return( NULL ); } /* Look up a child by name. */ static VipsGsfDirectory * vips_gsf_child_by_name( VipsGsfDirectory *dir, const char *name ) { return( vips_slist_map2( dir->children, (VipsSListMap2Fn) vips_gsf_child_by_name_sub, (char *) name, NULL ) ); } /* Make a new directory. */ static VipsGsfDirectory * vips_gsf_dir_new( VipsGsfDirectory *parent, const char *name ) { VipsGsfDirectory *dir = g_new( VipsGsfDirectory, 1 ); g_assert( !vips_gsf_child_by_name( parent, name ) ); dir->parent = parent; dir->name = g_strdup( name ); dir->children = NULL; dir->container = NULL; dir->file_count = 0; dir->filename_lengths = 0; dir->deflate_level = parent->deflate_level; if( GSF_IS_OUTFILE_ZIP( parent->out ) ) dir->out = gsf_outfile_new_child_full( (GsfOutfile *) parent->out, name, TRUE, "compression-level", GSF_ZIP_STORED, NULL ); else dir->out = gsf_outfile_new_child( (GsfOutfile *) parent->out, name, TRUE ); g_assert( dir->out ); parent->children = g_slist_prepend( parent->children, dir ); return( dir ); } /* Return a GsfOutput for writing to a path. Paths are object name first, then * path components with least-specific first, NULL-terminated. For example: * * GsfOutput *obj = vips_gsf_path( tree, "fred.jpg", "a", "b", NULL ); * * Returns an obj you can use to write to a/b/fred.jpg. * * You must write, close and unref obj. */ static GsfOutput * vips_gsf_path( VipsGsfDirectory *tree, const char *name, ... ) { va_list ap; VipsGsfDirectory *dir; VipsGsfDirectory *child; char *dir_name; GsfOutput *obj; /* vips_gsf_path() always makes a new file, though it may add to an * existing directory. Note the file, and note the length of the full * path we are creating. */ tree->file_count += 1; tree->filename_lengths += strlen( tree->out->name ) + strlen( name ) + 1; dir = tree; va_start( ap, name ); while( (dir_name = va_arg( ap, char * )) ) { if( (child = vips_gsf_child_by_name( dir, dir_name )) ) dir = child; else dir = vips_gsf_dir_new( dir, dir_name ); tree->filename_lengths += strlen( dir_name ) + 1; } va_end( ap ); if( GSF_IS_OUTFILE_ZIP( dir->out ) ) { /* Confusingly, libgsf compression-level really means * compression-method. They have a separate deflate-level * property for the deflate compression level. */ if( dir->deflate_level == 0 ) obj = gsf_outfile_new_child_full( (GsfOutfile *) dir->out, name, FALSE, "compression-level", GSF_ZIP_STORED, NULL ); else if( dir->deflate_level == -1 ) obj = gsf_outfile_new_child_full( (GsfOutfile *) dir->out, name, FALSE, "compression-level", GSF_ZIP_DEFLATED, NULL ); else obj = gsf_outfile_new_child_full( (GsfOutfile *) dir->out, name, FALSE, "compression-level", GSF_ZIP_DEFLATED, "deflate-level", dir->deflate_level, NULL ); } else obj = gsf_outfile_new_child( (GsfOutfile *) dir->out, name, FALSE ); return( obj ); } typedef struct _VipsForeignSaveDz VipsForeignSaveDz; typedef struct _Layer Layer; /* A layer in the pyramid. */ struct _Layer { VipsForeignSaveDz *dz; /* The real size of the image. image->Xsize and image->Ysize are * always even to make x2 shrink easy. The real image may be a * smaller, odd size, */ int width; int height; /* Number of tiles across and down in this layer. Zoomify needs this * to calculate the directory to put each tile in. */ int tiles_across; int tiles_down; /* The rect within width/height that contains real image, as opposed * to background. In centre mode we can have large image borders. */ VipsRect real_pixels; /* The image we build. */ VipsImage *image; /* The top of this strip of tiles. */ int y; /* The next line we write to in this strip. */ int write_y; VipsRegion *strip; /* The current strip of pixels */ VipsRegion *copy; /* Pixels we copy to the next strip */ int sub; /* Subsample factor for this layer */ int n; /* Layer number ... 0 for smallest */ Layer *below; /* Tiles go to here */ Layer *above; /* Tiles come from here */ }; struct _VipsForeignSaveDz { VipsForeignSave parent_object; char *suffix; int overlap; int tile_size; VipsForeignDzLayout layout; VipsForeignDzDepth depth; gboolean centre; gboolean properties; VipsAngle angle; VipsForeignDzContainer container; int compression; VipsRegionShrink region_shrink; int skip_blanks; gboolean no_strip; /* Tile and overlap geometry. The members above are the parameters we * accept, this next set are the derived values which are actually * used in pyramid generation. * * Tiles have a base tile_size. Imagine a square placed at the top left. * This is the size of that square. * * Tiles have a margin. The square from tile_size is expanded outward * up/down/left/right by this amount. Parts going off the image are * clipped. * * Each time we write a new tile, we step the position by tile_step * pixels. * * We need all three of tile_size, tile_margin and tile_step since * deepzoom and google maps have different meanings for overlap and we * want to be able to support both models. * * For deepzoom: * * tile_margin = overlap * tile_step = tile_size * * For google maps: * * tile_margin = 0 * tile_step = tile_size - overlap */ int tile_margin; int tile_step; Layer *layer; /* x2 shrink pyr layer */ /* Count zoomify tiles we write. */ int tile_count; /* The tree structure we are writing tiles to. Can be filesystem, a * zipfile, etc. */ VipsGsfDirectory *tree; /* The actual output object our zip (or whatever) is writing to. */ GsfOutput *out; /* The name to save as, eg. deepzoom tiles go into ${basename}_files. * No suffix, no path at the start. */ char *basename; /* The directory we write the output to, or NULL for memory output. */ char *dirname; /* For DZ save, we have to write to a temp dir. Track the name here. */ char *tempdir; /* The root directory name ... $basename with perhaps some extra * stuff, eg. $(basename)_files, etc. */ char *root_name; /* @suffix, but without any options. So @suffix == ".jpg[Q=90]" * becomes ".jpg". */ char *file_suffix; /* libgsf before 1.14.31 can't write zip files larger than 4gb. * Track bytes written here and try to guess when we'll go over. */ size_t bytes_written; /* save->background turned into a pixel that matches the image we are * saving .. used to test for blank tiles. */ VipsPel *ink; }; typedef VipsForeignSaveClass VipsForeignSaveDzClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSaveDz, vips_foreign_save_dz, VIPS_TYPE_FOREIGN_SAVE ); /* ZIP and SZI are both written as zip files. */ static gboolean iszip( VipsForeignDzContainer container ) { switch( container ) { case VIPS_FOREIGN_DZ_CONTAINER_ZIP: case VIPS_FOREIGN_DZ_CONTAINER_SZI: return( TRUE ); default: return( FALSE ); } } #define VIPS_ZIP_FIXED_LH_SIZE (30 + 29) #define VIPS_ZIP_FIXED_CD_SIZE (46 + 9) #define VIPS_ZIP_EOCD_SIZE 22 #ifndef HAVE_GSF_ZIP64 static size_t estimate_zip_size( VipsForeignSaveDz *dz ) { size_t estimated_zip_size = dz->bytes_written + dz->tree->file_count * VIPS_ZIP_FIXED_LH_SIZE + dz->tree->filename_lengths + dz->tree->file_count * VIPS_ZIP_FIXED_CD_SIZE + dz->tree->filename_lengths + VIPS_ZIP_EOCD_SIZE; #ifdef DEBUG_VERBOSE printf( "estimate_zip_size: %zd\n", estimated_zip_size ); #endif /*DEBUG_VERBOSE*/ return( estimated_zip_size ); } #endif /*HAVE_GSF_ZIP64*/ static int write_image( VipsForeignSaveDz *dz, GsfOutput *out, VipsImage *image, const char *format ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( dz ); VipsImage *t; void *buf; size_t len; /* We need to block progress signalling on individual image write, so * we need a copy of the tile in case it's shared (eg. associated * images). */ if( vips_copy( image, &t, NULL ) ) return( -1 ); /* We default to stripping all metadata. Only "no_strip" turns this * off. Very few people really want metadata on every tile. */ vips_image_set_int( t, "hide-progress", 1 ); if( vips_image_write_to_buffer( t, format, &buf, &len, "strip", !dz->no_strip, NULL ) ) { VIPS_UNREF( t ); return( -1 ); } VIPS_UNREF( t ); /* gsf doesn't like more than one write active at once. */ g_mutex_lock( vips__global_lock ); if( !gsf_output_write( out, len, buf ) ) { gsf_output_close( out ); g_mutex_unlock( vips__global_lock ); g_free( buf ); vips_error( class->nickname, "%s", gsf_output_error( out )->message ); return( -1 ); } dz->bytes_written += len; gsf_output_close( out ); #ifndef HAVE_GSF_ZIP64 if( iszip( dz->container ) ) { /* Leave 3 entry headroom for blank.png and metadata files. */ if( dz->tree->file_count + 3 >= (unsigned int) USHRT_MAX ) { g_mutex_unlock( vips__global_lock ); vips_error( class->nickname, "%s", _( "too many files in zip" ) ); return( -1 ); } /* Leave 16k headroom for blank.png and metadata files. */ if( estimate_zip_size( dz ) > (size_t) UINT_MAX - 16384) { g_mutex_unlock( vips__global_lock ); vips_error( class->nickname, "%s", _( "output file too large" ) ); return( -1 ); } } #endif /*HAVE_GSF_ZIP64*/ g_mutex_unlock( vips__global_lock ); g_free( buf ); return( 0 ); } /* Free a pyramid. */ static void layer_free( Layer *layer ) { VIPS_FREEF( g_object_unref, layer->strip ); VIPS_FREEF( g_object_unref, layer->copy ); VIPS_FREEF( g_object_unref, layer->image ); VIPS_FREEF( layer_free, layer->below ); } static void vips_foreign_save_dz_dispose( GObject *gobject ) { VipsForeignSaveDz *dz = (VipsForeignSaveDz *) gobject; VIPS_FREEF( layer_free, dz->layer ); VIPS_FREEF( vips_gsf_tree_close, dz->tree ); VIPS_FREEF( g_object_unref, dz->out ); VIPS_FREE( dz->basename ); VIPS_FREE( dz->dirname ); VIPS_FREE( dz->tempdir ); VIPS_FREE( dz->root_name ); VIPS_FREE( dz->file_suffix ); G_OBJECT_CLASS( vips_foreign_save_dz_parent_class )-> dispose( gobject ); } /* Build a pyramid. * * width/height is the size of this layer, real_* the subsection of the layer * which is real pixels (as opposed to background). */ static Layer * pyramid_build( VipsForeignSaveDz *dz, Layer *above, int width, int height, VipsRect *real_pixels ) { VipsForeignSave *save = VIPS_FOREIGN_SAVE( dz ); Layer *layer = VIPS_NEW( dz, Layer ); VipsRect strip; int limit; layer->dz = dz; layer->width = width; layer->height = height; /* We need to output all possible tiles, even if they give no new pixels. */ layer->tiles_across = VIPS_ROUND_UP( width, dz->tile_step ) / dz->tile_step; layer->tiles_down = VIPS_ROUND_UP( height, dz->tile_step ) / dz->tile_step; layer->real_pixels = *real_pixels; layer->image = NULL; layer->strip = NULL; layer->copy = NULL; if( !above ) /* Top of pyramid. */ layer->sub = 1; else layer->sub = above->sub * 2; layer->below = NULL; layer->above = above; /* We round the image size up to an even number to make x2 shrink * easy. */ layer->image = vips_image_new(); if( vips_image_pipelinev( layer->image, VIPS_DEMAND_STYLE_ANY, save->ready, NULL ) ) { layer_free( layer ); return( NULL ); } layer->image->Xsize = width + (width & 1); layer->image->Ysize = height + (height & 1); layer->strip = vips_region_new( layer->image ); layer->copy = vips_region_new( layer->image ); /* The regions will get used in the bg thread callback, so make sure * we don't own them. */ vips__region_no_ownership( layer->strip ); vips__region_no_ownership( layer->copy ); /* Build a line of tiles here. * * Expand the strip if necessary to make sure we have an even * number of lines. * * This is just the height of the first row of tiles, so only add 1* * tile_margin. */ layer->y = 0; layer->write_y = 0; strip.left = 0; strip.top = 0; strip.width = layer->image->Xsize; strip.height = dz->tile_size + dz->tile_margin; if( (strip.height & 1) == 1 ) strip.height += 1; if( vips_region_buffer( layer->strip, &strip ) ) { layer_free( layer ); return( NULL ); } switch( dz->depth ) { case VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL: limit = 1; break; case VIPS_FOREIGN_DZ_DEPTH_ONETILE: limit = dz->tile_size; break; case VIPS_FOREIGN_DZ_DEPTH_ONE: limit = VIPS_MAX( width, height ); break; default: g_assert_not_reached(); /* Stop compiler warnings. */ limit = 1; } if( width > limit || height > limit ) { /* Round up, so eg. a 5 pixel wide image becomes 3 a layer * down. * * For the rect, round left/top down, round bottom/right up, * so we get all possible pixels. */ VipsRect halfrect; halfrect.left = real_pixels->left / 2; halfrect.top = real_pixels->top / 2; halfrect.width = (VIPS_RECT_RIGHT( real_pixels ) + 1) / 2 - halfrect.left; halfrect.height = (VIPS_RECT_BOTTOM( real_pixels ) + 1) / 2 - halfrect.top; if( !(layer->below = pyramid_build( dz, layer, (width + 1) / 2, (height + 1) / 2, &halfrect )) ) { layer_free( layer ); return( NULL ); } layer->n = layer->below->n + 1; } else layer->n = 0; #ifdef DEBUG printf( "pyramid_build:\n" ); printf( "\tn = %d\n", layer->n ); printf( "\twidth = %d, height = %d\n", width, height ); printf( "\tXsize = %d, Ysize = %d\n", layer->image->Xsize, layer->image->Ysize ); printf( "\ttiles_across = %d, tiles_down = %d\n", layer->tiles_across, layer->tiles_down ); printf( "\treal_pixels.left = %d, real_pixels.top = %d\n", real_pixels->left, real_pixels->top ); printf( "\treal_pixels.width = %d, real_pixels.height = %d\n", real_pixels->width, real_pixels->height ); #endif /*DEBUG*/ return( layer ); } static int write_dzi( VipsForeignSaveDz *dz ) { GsfOutput *out; char buf[VIPS_PATH_MAX]; char *p; vips_snprintf( buf, VIPS_PATH_MAX, "%s.dzi", dz->basename ); out = vips_gsf_path( dz->tree, buf, NULL ); vips_snprintf( buf, VIPS_PATH_MAX, "%s", dz->suffix + 1 ); if( (p = (char *) vips__find_rightmost_brackets( buf )) ) *p = '\0'; gsf_output_printf( out, "\n" ); gsf_output_printf( out, "overlap ); gsf_output_printf( out, " TileSize=\"%d\"\n", dz->tile_size ); gsf_output_printf( out, " >\n" ); gsf_output_printf( out, " layer->height ); gsf_output_printf( out, " Width=\"%d\"\n", dz->layer->width ); gsf_output_printf( out, " />\n" ); gsf_output_printf( out, "\n" ); (void) gsf_output_close( out ); g_object_unref( out ); return( 0 ); } static int write_properties( VipsForeignSaveDz *dz ) { GsfOutput *out; out = vips_gsf_path( dz->tree, "ImageProperties.xml", NULL ); gsf_output_printf( out, "\n", dz->layer->width, dz->layer->height, dz->tile_count, dz->tile_size ); (void) gsf_output_close( out ); g_object_unref( out ); return( 0 ); } static int write_blank( VipsForeignSaveDz *dz ) { VipsForeignSave *save = (VipsForeignSave *) dz; VipsImage *x, *t; int n; VipsArea *ones; double *d; double *bg; int i; GsfOutput *out; /* Number of bands we will end up making. We need to set this in * vips_black() to make sure we set Type correctly, otherwise we can * try saving a B_W image as PNG, with disasterous results. */ bg = (double *) vips_area_get_data( VIPS_AREA( save->background ), NULL, &n, NULL, NULL ); if( vips_black( &x, dz->tile_size, dz->tile_size, "bands", n, NULL ) ) return( -1 ); ones = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); d = (double *) vips_area_get_data( ones, NULL, NULL, NULL, NULL ); for( i = 0; i < n; i++ ) d[i] = 1.0; if( vips_linear( x, &t, d, bg, n, NULL ) ) { vips_area_unref( ones ); g_object_unref( x ); return( -1 ); } vips_area_unref( ones ); g_object_unref( x ); x = t; out = vips_gsf_path( dz->tree, "blank.png", NULL ); if( write_image( dz, out, x, ".png" ) ) { g_object_unref( out ); g_object_unref( x ); return( -1 ); } g_object_unref( out ); g_object_unref( x ); return( 0 ); } /* Write IIIF JSON metadata. */ static int write_json( VipsForeignSaveDz *dz ) { /* Can be NULL for memory output. */ const char *name = dz->basename ? dz->basename : "untitled"; /* dz->file_suffix has a leading "." character. */ const char *suffix = dz->file_suffix[0] == '.' ? dz->file_suffix + 1 : dz->file_suffix; GsfOutput *out; int i; out = vips_gsf_path( dz->tree, "info.json", NULL ); gsf_output_printf( out, "{\n" " \"@context\": \"http://iiif.io/api/image/2/context.json\",\n" " \"@id\": \"https://example.com/iiif/%s\",\n" " \"profile\": [\n" " \"http://iiif.io/api/image/2/level0.json\",\n" " {\n" " \"formats\": [\n" " \"%s\"\n" " ],\n" " \"qualities\": [\n" " \"default\"\n" " ]\n" " }\n" " ],\n" " \"protocol\": \"http://iiif.io/api/image\",\n", name, suffix ); /* "sizes" is needed for the full/ set of untiled images, which we * don't yet support. Leave this commented out for now. gsf_output_printf( out, " \"sizes\": [\n" ); for( i = 0; i < dz->layer->n + 5; i++ ) { gsf_output_printf( out, " {\n" " \"width\": %d,\n" " \"height\": \"full\"\n" " }", 1 << (i + 4) ); if( i != dz->layer->n - 4 ) gsf_output_printf( out, "," ); gsf_output_printf( out, "\n" ); } gsf_output_printf( out, " ],\n" ); */ /* The set of pyramid layers we have written. */ gsf_output_printf( out, " \"tiles\": [\n" " {\n" " \"scalefactors\": [\n" ); for( i = 0; i < dz->layer->n; i++ ) { gsf_output_printf( out, " %d", 1 << i ); if( i != dz->layer->n - 1 ) gsf_output_printf( out, "," ); gsf_output_printf( out, "\n" ); } gsf_output_printf( out, " ],\n" " \"width\": %d\n" " }\n" " ],\n", dz->tile_size ); gsf_output_printf( out, " \"width\": %d,\n" " \"height\": %d\n", dz->layer->image->Xsize, dz->layer->image->Ysize ); gsf_output_printf( out, "}\n" ); (void) gsf_output_close( out ); g_object_unref( out ); return( 0 ); } static int write_vips_meta( VipsForeignSaveDz *dz ) { VipsForeignSave *save = (VipsForeignSave *) dz; char *dump; GsfOutput *out; if( !(dump = vips__xml_properties( save->ready )) ) return( -1 ); /* For deepzom the props must go inside the ${name}_files subdir, for * gm and zoomify it can sit in the main folder. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ ) out = vips_gsf_path( dz->tree, "vips-properties.xml", dz->root_name, NULL ); else out = vips_gsf_path( dz->tree, "vips-properties.xml", NULL ); gsf_output_write( out, strlen( dump ), (guchar *) dump ); (void) gsf_output_close( out ); g_object_unref( out ); g_free( dump ); return( 0 ); } static void build_scan_property( VipsDbuf *dbuf, VipsImage *image, const char *vips_name, const char *szi_name ) { const char *str; GValue value = { 0 }; GValue save_value = { 0 }; GType type; if( !vips_image_get_typeof( image, vips_name ) ) return; if( vips_image_get( image, vips_name, &value ) ) return; type = G_VALUE_TYPE( &value ); if( !g_value_type_transformable( type, VIPS_TYPE_SAVE_STRING ) ) { g_value_unset( &value ); return; } g_value_init( &save_value, VIPS_TYPE_SAVE_STRING ); if( !g_value_transform( &value, &save_value ) ) { g_value_unset( &value ); return; } g_value_unset( &value ); if( !(str = vips_value_get_save_string( &save_value )) ) { g_value_unset( &save_value ); return; } if( !g_utf8_validate( str, -1, NULL ) ) { g_value_unset( &save_value ); return; } vips_dbuf_writef( dbuf, " \n" ); vips_dbuf_writef( dbuf, " " ); vips_dbuf_write_amp( dbuf, szi_name ); vips_dbuf_writef( dbuf, "\n" ); vips_dbuf_writef( dbuf, " ", g_type_name( type ) ); vips_dbuf_write_amp( dbuf, str ); vips_dbuf_writef( dbuf, "\n" ); vips_dbuf_writef( dbuf, " \n" ); g_value_unset( &save_value ); } static char *scan_property_names[][2] = { { "openslide.vendor", "Vendor" }, { "openslide.objective-power", "ObjectiveMagnification" }, { "openslide.mpp-x", "MicronsPerPixelX" }, { "openslide.mpp-y", "MicronsPerPixelY" }, { "width", "ImageWidth" }, { "height", "ImageHeight" } }; /* Make the xml we write to scan-properties.xml in szi write. * Free with g_free(). */ char * build_scan_properties( VipsImage *image ) { VipsDbuf dbuf; char *date; int i; date = vips__get_iso8601(); vips_dbuf_init( &dbuf ); vips_dbuf_writef( &dbuf, "\n" ); vips_dbuf_writef( &dbuf, "\n", date ); vips_dbuf_writef( &dbuf, " \n" ); g_free( date ); for( i = 0; i < VIPS_NUMBER( scan_property_names ); i++ ) build_scan_property( &dbuf, image, scan_property_names[i][0], scan_property_names[i][1] ); vips_dbuf_writef( &dbuf, " \n" ); vips_dbuf_writef( &dbuf, "\n" ); return( (char *) vips_dbuf_steal( &dbuf, NULL ) ); } static int write_scan_properties( VipsForeignSaveDz *dz ) { VipsForeignSave *save = (VipsForeignSave *) dz; char *dump; GsfOutput *out; if( !(dump = build_scan_properties( save->ready )) ) return( -1 ); out = vips_gsf_path( dz->tree, "scan-properties.xml", NULL ); gsf_output_write( out, strlen( dump ), (guchar *) dump ); (void) gsf_output_close( out ); g_object_unref( out ); g_free( dump ); return( 0 ); } static void * write_associated_images( VipsImage *image, const char *field, GValue *value, void *a ) { VipsForeignSaveDz *dz = (VipsForeignSaveDz *) a; if( vips_isprefix( "openslide.associated.", field ) ) { VipsImage *associated; const char *p; const char *q; GsfOutput *out; char buf[VIPS_PATH_MAX]; p = field + strlen( "openslide.associated." ); /* Make sure there are no '/' in the filename. */ if( (q = strrchr( p, '/' )) ) p = q + 1; if( vips_image_get_image( image, field, &associated ) ) return( image ); vips_snprintf( buf, VIPS_PATH_MAX, "%s.jpg", p ); out = vips_gsf_path( dz->tree, buf, "associated_images", NULL ); if( write_image( dz, out, associated, ".jpg" ) ) { g_object_unref( out ); g_object_unref( associated ); return( image ); } g_object_unref( out ); g_object_unref( associated ); } return( NULL ); } static int write_associated( VipsForeignSaveDz *dz ) { VipsForeignSave *save = (VipsForeignSave *) dz; if( vips_image_map( save->ready, write_associated_images, dz ) ) return( -1 ); return( 0 ); } /* Our state during a threaded write of a strip. */ typedef struct _Strip { Layer *layer; VipsImage *image; /* Allocate the next tile on this boundary. */ int x; } Strip; static void strip_free( Strip *strip ) { g_object_unref( strip->image ); } static void strip_init( Strip *strip, Layer *layer ) { VipsForeignSaveDz *dz = layer->dz; VipsRect line, image; strip->layer = layer; strip->image = NULL; strip->x = 0; /* The image we wrap around our pixel buffer must be the full width, * including any rounding up, since we must have contiguous pixels. * We can trim the height down though. * * When we loop across the strip writing tiles we have to look out for * the smaller width. */ image.left = 0; image.top = 0; image.width = layer->image->Xsize; image.height = layer->height; line.left = 0; line.top = layer->y; line.width = image.width; line.height = dz->tile_size; vips_rect_marginadjust( &line, dz->tile_margin ); vips_rect_intersectrect( &image, &line, &line ); if( !(strip->image = vips_image_new_from_memory( VIPS_REGION_ADDR( layer->strip, 0, line.top ), VIPS_IMAGE_SIZEOF_LINE( layer->image ) * line.height, line.width, line.height, layer->image->Bands, layer->image->BandFmt )) ) { strip_free( strip ); return; } /* Type needs to be set so we know how to convert for save correctly. */ strip->image->Type = layer->image->Type; } static int strip_allocate( VipsThreadState *state, void *a, gboolean *stop ) { Strip *strip = (Strip *) a; Layer *layer = strip->layer; VipsForeignSaveDz *dz = layer->dz; VipsRect image; #ifdef DEBUG_VERBOSE printf( "strip_allocate\n" ); #endif /*DEBUG_VERBOSE*/ /* We can't test for allocated area empty, since it might just have * bits of the left-hand overlap in and no new pixels. Safest to count * tiles across. */ if( strip->x / dz->tile_step >= layer->tiles_across ) { *stop = TRUE; #ifdef DEBUG_VERBOSE printf( "strip_allocate: done\n" ); #endif /*DEBUG_VERBOSE*/ return( 0 ); } image.left = 0; image.top = 0; image.width = layer->width; image.height = layer->height; /* Position this tile. */ state->pos.left = strip->x; state->pos.top = layer->y; state->pos.width = dz->tile_size; state->pos.height = dz->tile_size; vips_rect_marginadjust( &state->pos, dz->tile_margin ); vips_rect_intersectrect( &image, &state->pos, &state->pos ); state->x = strip->x; state->y = layer->y; strip->x += dz->tile_step; return( 0 ); } /* Make an output object for a tile in the current layout. */ static GsfOutput * tile_name( Layer *layer, int x, int y ) { VipsForeignSaveDz *dz = layer->dz; GsfOutput *out; char name[VIPS_PATH_MAX]; char dirname[VIPS_PATH_MAX]; char dirname2[VIPS_PATH_MAX]; Layer *p; int n; switch( dz->layout ) { case VIPS_FOREIGN_DZ_LAYOUT_DZ: vips_snprintf( dirname, VIPS_PATH_MAX, "%d", layer->n ); vips_snprintf( name, VIPS_PATH_MAX, "%d_%d%s", x, y, dz->file_suffix ); out = vips_gsf_path( dz->tree, name, dz->root_name, dirname, NULL ); break; case VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY: /* We need to work out the tile number so we can calculate the * directory to put this tile in. * * Tiles are numbered from 0 for the most-zoomed-out tile. */ n = 0; /* Count all tiles in layers below this one. */ for( p = layer->below; p; p = p->below ) n += p->tiles_across * p->tiles_down; /* And count tiles so far in this layer. */ n += y * layer->tiles_across + x; vips_snprintf( dirname, VIPS_PATH_MAX, "TileGroup%d", n / 256 ); vips_snprintf( name, VIPS_PATH_MAX, "%d-%d-%d%s", layer->n, x, y, dz->file_suffix ); /* Used at the end in ImageProperties.xml */ dz->tile_count += 1; out = vips_gsf_path( dz->tree, name, dirname, NULL ); break; case VIPS_FOREIGN_DZ_LAYOUT_GOOGLE: vips_snprintf( dirname, VIPS_PATH_MAX, "%d", layer->n ); vips_snprintf( dirname2, VIPS_PATH_MAX, "%d", y ); vips_snprintf( name, VIPS_PATH_MAX, "%d%s", x, dz->file_suffix ); out = vips_gsf_path( dz->tree, name, dirname, dirname2, NULL ); break; case VIPS_FOREIGN_DZ_LAYOUT_IIIF: { /* Tiles are addressed in full resolution coordinates, so * scale up by layer->sub and dz->tile_size */ int left = x * dz->tile_size * layer->sub; int top = y * dz->tile_size * layer->sub; int width = VIPS_MIN( dz->tile_size * layer->sub, layer->width * layer->sub - left ); int height = VIPS_MIN( dz->tile_size * layer->sub, layer->height * layer->sub - top ); /* IIIF "size" is just real tile width, I think. * * TODO .. .is this right? shouldn't it be the smaller of * width and height? */ int size = VIPS_MIN( dz->tile_size, layer->width - x * dz->tile_size ); vips_snprintf( dirname, VIPS_PATH_MAX, "%d,%d,%d,%d", left, top, width, height ); vips_snprintf( dirname2, VIPS_PATH_MAX, "%d,", size ); vips_snprintf( name, VIPS_PATH_MAX, "default%s", dz->file_suffix ); /* "0" is rotation and is always 0. */ out = vips_gsf_path( dz->tree, name, dirname, dirname2, "0", NULL ); } break; default: g_assert_not_reached(); /* Stop compiler warnings. */ out = NULL; } #ifdef DEBUG_VERBOSE printf( "tile_name: writing to %s\n", name ); #endif /*DEBUG_VERBOSE*/ return( out ); } /* Test for tile nearly equal to background colour. In google maps mode, we * skip blank background tiles. * * Don't use exactly equality since compression artefacts or noise can upset * this. */ static gboolean tile_equal( VipsImage *image, int threshold, VipsPel * restrict ink ) { const int bytes = VIPS_IMAGE_SIZEOF_PEL( image ); VipsRect rect; VipsRegion *region; int x, y, b; region = vips_region_new( image ); /* We know @image is part of a memory buffer, so this will be quick. */ rect.left = 0; rect.top = 0; rect.width = image->Xsize; rect.height = image->Ysize; if( vips_region_prepare( region, &rect ) ) { g_object_unref( region ); return( FALSE ); } for( y = 0; y < image->Ysize; y++ ) { VipsPel * restrict p = VIPS_REGION_ADDR( region, 0, y ); for( x = 0; x < image->Xsize; x++ ) { for( b = 0; b < bytes; b++ ) if( VIPS_ABS( p[b] - ink[b] ) > threshold ) { g_object_unref( region ); return( FALSE ); } p += bytes; } } g_object_unref( region ); return( TRUE ); } static int strip_work( VipsThreadState *state, void *a ) { Strip *strip = (Strip *) a; Layer *layer = strip->layer; VipsForeignSaveDz *dz = layer->dz; VipsForeignSave *save = (VipsForeignSave *) dz; VipsImage *x; VipsImage *t; GsfOutput *out; #ifdef DEBUG_VERBOSE printf( "strip_work\n" ); #endif /*DEBUG_VERBOSE*/ /* If we are centering we may be outside the real pixels. Skip in * this case, and the viewer will display blank.png for us. */ if( dz->centre ) { VipsRect tile; tile.left = state->x; tile.top = state->y; tile.width = dz->tile_size; tile.height = dz->tile_size; if( !vips_rect_overlapsrect( &tile, &layer->real_pixels ) ) { #ifdef DEBUG_VERBOSE printf( "strip_work: skipping tile %d x %d\n", state->x / dz->tile_size, state->y / dz->tile_size ); #endif /*DEBUG_VERBOSE*/ return( 0 ); } } g_assert( vips_object_sanity( VIPS_OBJECT( strip->image ) ) ); /* Extract relative to the strip top-left corner. */ if( vips_extract_area( strip->image, &x, state->pos.left, 0, state->pos.width, state->pos.height, NULL ) ) return( -1 ); if( dz->skip_blanks >= 0 && tile_equal( x, dz->skip_blanks, dz->ink ) ) { g_object_unref( x ); #ifdef DEBUG_VERBOSE printf( "strip_work: skipping blank tile %d x %d\n", state->x / dz->tile_size, state->y / dz->tile_size ); #endif /*DEBUG_VERBOSE*/ return( 0 ); } /* Google tiles need to be padded up to tilesize. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_GOOGLE ) { if( vips_embed( x, &t, 0, 0, dz->tile_size, dz->tile_size, "background", save->background, NULL ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); x = t; } /* we need to single-thread around calls to gsf. */ g_mutex_lock( vips__global_lock ); out = tile_name( layer, state->x / dz->tile_step, state->y / dz->tile_step ); g_mutex_unlock( vips__global_lock ); if( write_image( dz, out, x, dz->suffix ) ) { g_object_unref( out ); g_object_unref( x ); return( -1 ); } g_object_unref( out ); g_object_unref( x ); #ifdef DEBUG_VERBOSE printf( "strip_work: success\n" ); #endif /*DEBUG_VERBOSE*/ return( 0 ); } /* Write a line of tiles with a threadpool. */ static int strip_save( Layer *layer ) { Strip strip; #ifdef DEBUG printf( "strip_save: n = %d, y = %d\n", layer->n, layer->y ); #endif /*DEBUG*/ strip_init( &strip, layer ); if( vips_threadpool_run( strip.image, vips_thread_state_new, strip_allocate, strip_work, NULL, &strip ) ) { strip_free( &strip ); return( -1 ); } strip_free( &strip ); #ifdef DEBUG printf( "strip_save: success\n" ); #endif /*DEBUG*/ return( 0 ); } /* A strip has filled, but the rightmost column and the bottom-most row may * not have been if we've rounded the size up. * * Fill them, if necessary, by copying the previous row/column. */ static void layer_generate_extras( Layer *layer ) { VipsRegion *strip = layer->strip; /* We only work for full-width strips. */ g_assert( strip->valid.width == layer->image->Xsize ); if( layer->width < layer->image->Xsize ) { int ps = VIPS_IMAGE_SIZEOF_PEL( strip->im ); int b, y; /* Need to add a right-most column. */ for( y = 0; y < strip->valid.height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( strip, layer->width - 1, strip->valid.top + y ); VipsPel *q = p + ps; for( b = 0; b < ps; b++ ) q[b] = p[b]; } } if( layer->height < layer->image->Ysize ) { VipsRect last; /* The last two lines of the image. */ last.left = 0; last.top = layer->image->Ysize - 2; last.width = layer->image->Xsize; last.height = 2; /* Do we have them both? Fill the last with the next-to-last. */ vips_rect_intersectrect( &last, &strip->valid, &last ); if( last.height == 2 ) { last.height = 1; vips_region_copy( strip, strip, &last, 0, last.top + 1 ); } } } static int strip_arrived( Layer *layer ); /* Shrink what pixels we can from this strip into the layer below. If the * strip below fills, recurse. */ static int strip_shrink( Layer *layer ) { Layer *below = layer->below; VipsRegion *from = layer->strip; VipsRegion *to = below->strip; VipsForeignSaveDz *dz = layer->dz; VipsRegionShrink region_shrink = dz->region_shrink; VipsRect target; VipsRect source; #ifdef DEBUG printf( "strip_shrink: %d lines in layer %d to layer %d\n", from->valid.height, layer->n, below->n ); #endif /*DEBUG*/ /* We may have an extra column of pixels on the right or * bottom that need filling: generate them. */ layer_generate_extras( layer ); /* Our pixels might cross a strip boundary in the layer below, so we * have to write repeatedly until we run out of pixels. */ for(;;) { /* The pixels the layer below needs. */ target.left = 0; target.top = below->write_y; target.width = below->image->Xsize; target.height = to->valid.height; vips_rect_intersectrect( &target, &to->valid, &target ); /* Those pixels need this area of this layer. */ source.left = target.left * 2; source.top = target.top * 2; source.width = target.width * 2; source.height = target.height * 2; /* Of which we have these available. */ vips_rect_intersectrect( &source, &from->valid, &source ); /* So these are the pixels in the layer below we can provide. */ target.left = source.left / 2; target.top = source.top / 2; target.width = source.width / 2; target.height = source.height / 2; /* None? All done. */ if( vips_rect_isempty( &target ) ) break; (void) vips_region_shrink_method( from, to, &target, region_shrink ); below->write_y += target.height; /* If we've filled the strip below, let it know. * We can either fill the region, if it's somewhere half-way * down the image, or, if it's at the bottom, get to the last * real line of pixels. */ if( below->write_y == VIPS_RECT_BOTTOM( &to->valid ) || below->write_y == below->height ) { if( strip_arrived( below ) ) return( -1 ); } } return( 0 ); } /* A new strip has arrived! The strip has enough pixels in to write a line of * tiles. * * - write a line of tiles * - shrink what we can to the layer below * - move our strip down by the tile step * - copy the overlap with the previous strip */ static int strip_arrived( Layer *layer ) { VipsForeignSaveDz *dz = layer->dz; VipsRect new_strip; VipsRect overlap; VipsRect image_area; #ifdef DEBUG printf( "strip_arrived: layer %d, strip at %d, height %d\n", layer->n, layer->y, layer->strip->valid.height ); #endif /*DEBUG*/ if( strip_save( layer ) ) return( -1 ); if( layer->below && strip_shrink( layer ) ) return( -1 ); /* Position our strip down the image. * * Expand the strip if necessary to make sure we have an even * number of lines. */ layer->y += dz->tile_step; new_strip.left = 0; new_strip.top = layer->y - dz->tile_margin; new_strip.width = layer->image->Xsize; new_strip.height = dz->tile_size + 2 * dz->tile_margin; image_area.left = 0; image_area.top = 0; image_area.width = layer->image->Xsize; image_area.height = layer->image->Ysize; vips_rect_intersectrect( &new_strip, &image_area, &new_strip ); if( (new_strip.height & 1) == 1 ) new_strip.height += 1; /* We may exactly hit the bottom of the real image (ie. before borders * have been possibly expanded by 1 pixel). In this case, we'll not * be able to do the expansion in layer_generate_extras(), since the * region won't be large enough, and we'll not get another chance * since this is the bottom. * * Add another scanline if this has happened. */ if( VIPS_RECT_BOTTOM( &new_strip ) == layer->height ) new_strip.height = layer->image->Ysize - new_strip.top; /* What pixels that we will need do we already have? Save them in * overlap. */ vips_rect_intersectrect( &new_strip, &layer->strip->valid, &overlap ); if( !vips_rect_isempty( &overlap ) ) { if( vips_region_buffer( layer->copy, &overlap ) ) return( -1 ); vips_region_copy( layer->strip, layer->copy, &overlap, overlap.left, overlap.top ); } if( !vips_rect_isempty( &new_strip ) ) { if( vips_region_buffer( layer->strip, &new_strip ) ) return( -1 ); /* And copy back again. */ if( !vips_rect_isempty( &overlap ) ) vips_region_copy( layer->copy, layer->strip, &overlap, overlap.left, overlap.top ); } return( 0 ); } /* The image has been completely written. Flush any strips which might have * overlaps in. */ static int strip_flush( Layer *layer ) { if( layer->y < layer->height ) if( strip_save( layer ) ) return( -1 ); if( layer->below ) if( strip_flush( layer->below ) ) return( -1 ); return( 0 ); } /* Another strip of image pixels from vips_sink_disc(). Write into the top * pyramid layer. */ static int pyramid_strip( VipsRegion *region, VipsRect *area, void *a ) { VipsForeignSaveDz *dz = (VipsForeignSaveDz *) a; Layer *layer = dz->layer; #ifdef DEBUG printf( "pyramid_strip: strip at %d, height %d\n", area->top, area->height ); #endif /*DEBUG*/ for(;;) { VipsRect *to = &layer->strip->valid; VipsRect target; /* The bit of strip that needs filling. */ target.left = 0; target.top = layer->write_y; target.width = layer->image->Xsize; target.height = to->height; vips_rect_intersectrect( &target, to, &target ); /* Clip against what we have available. */ vips_rect_intersectrect( &target, area, &target ); /* Have we written all the pixels we were given? We are done. */ if( vips_rect_isempty( &target ) ) break; /* And copy those pixels in. * * FIXME: If the strip fits inside the region we've just * received, we could skip the copy. Will this happen very * often? Unclear. */ vips_region_copy( region, layer->strip, &target, target.left, target.top ); layer->write_y += target.height; /* We can either fill the strip, if it's somewhere half-way * down the image, or, if it's at the bottom, get to the last * real line of pixels. */ if( layer->write_y == VIPS_RECT_BOTTOM( to ) || layer->write_y == layer->height ) { if( strip_arrived( layer ) ) return( -1 ); } } /* If we've reached the bottom of the image, we won't get called again. * * However, there may be some unwritten pixels in the pyramid still! * Suppose a layer is exactly a multiple of tile_step in height. * When we finished that last strip, we will have copied the last few * lines of overlap over into the top of the next row. Deepzoom says we * must flush these half-written strips to the output. */ if( layer->write_y == layer->height ) { #ifdef DEBUG printf( "pyramid_strip: flushing ..\n" ); #endif /*DEBUG*/ if( strip_flush( layer ) ) return( -1 ); } return( 0 ); } static int vips_foreign_save_dz_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveDz *dz = (VipsForeignSaveDz *) object; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( dz ); VipsRect real_pixels; /* Google, zoomify and iiif default to zero overlap, ".jpg". */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY || dz->layout == VIPS_FOREIGN_DZ_LAYOUT_GOOGLE || dz->layout == VIPS_FOREIGN_DZ_LAYOUT_IIIF ) { if( !vips_object_argument_isset( object, "overlap" ) ) dz->overlap = 0; if( !vips_object_argument_isset( object, "suffix" ) ) VIPS_SETSTR( dz->suffix, ".jpg" ); } /* Google and zoomify default to 256 pixel tiles. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY || dz->layout == VIPS_FOREIGN_DZ_LAYOUT_GOOGLE ) { if( !vips_object_argument_isset( object, "tile_size" ) ) dz->tile_size = 256; } /* Some iif writers default to 256, some to 512. We pick 512. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_IIIF ) { if( !vips_object_argument_isset( object, "tile_size" ) ) dz->tile_size = 512; } /* skip_blanks defaults to 5 in google mode. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_GOOGLE && !vips_object_argument_isset( object, "skip_blanks" ) ) dz->skip_blanks = 5; /* Our tile layout. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ ) { dz->tile_margin = dz->overlap; dz->tile_step = dz->tile_size; } else { dz->tile_margin = 0; dz->tile_step = dz->tile_size - dz->overlap; } if( dz->tile_step <= 0 ) { vips_error( "dzsave", "%s", _( "overlap too large" ) ); return( -1 ); } /* Default to white background. vips_foreign_save_init() defaults to * black. */ if( !vips_object_argument_isset( object, "background" ) ) { VipsArrayDouble *background; /* Using g_object_set() to set an input param in build will * change the hash and confuse caching, but we don't cache * savers, so it's fine. */ background = vips_array_double_newv( 1, 255.0 ); g_object_set( object, "background", background, NULL ); vips_area_unref( VIPS_AREA( background ) ); } /* DeepZoom stops at 1x1 pixels, others when the image fits within a * tile. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ ) { if( !vips_object_argument_isset( object, "depth" ) ) dz->depth = VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL; } else if( !vips_object_argument_isset( object, "depth" ) ) dz->depth = VIPS_FOREIGN_DZ_DEPTH_ONETILE; if( VIPS_OBJECT_CLASS( vips_foreign_save_dz_parent_class )-> build( object ) ) return( -1 ); /* Optional rotate. */ { VipsImage *z; if( vips_rot( save->ready, &z, dz->angle, NULL ) ) return( -1 ); VIPS_UNREF( save->ready ); save->ready = z; } /* We use ink to check for blank tiles. */ if( dz->skip_blanks >= 0 ) { if( !(dz->ink = vips__vector_to_ink( class->nickname, save->ready, VIPS_AREA( save->background )->data, NULL, VIPS_AREA( save->background )->n )) ) return( -1 ); } /* The real pixels we have from our input. This is about to get * expanded with background. */ real_pixels.left = 0; real_pixels.top = 0; real_pixels.width = save->ready->Xsize; real_pixels.height = save->ready->Ysize; /* For centred images, imagine shrinking so that the image fits in a * single tile, centering in that tile, then expanding back again. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_GOOGLE && dz->centre ) { VipsImage *z; Layer *layer; int n_layers; int size; if( !(layer = pyramid_build( dz, NULL, save->ready->Xsize, save->ready->Ysize, &real_pixels )) ) return( -1 ); n_layers = layer->n; /* This would cause interesting problems. */ g_assert( n_layers < 30 ); layer_free( layer ); size = dz->tile_size * (1 << n_layers); real_pixels.left = (size - save->ready->Xsize) / 2; real_pixels.top = (size - save->ready->Ysize) / 2; if( vips_embed( save->ready, &z, real_pixels.left, real_pixels.top, size, size, "background", save->background, NULL ) ) return( -1 ); VIPS_UNREF( save->ready ); save->ready = z; #ifdef DEBUG printf( "centre: centring within a %d x %d image\n", size, size ); #endif /*DEBUG*/ } #ifdef DEBUG printf( "vips_foreign_save_dz_build: tile_size == %d\n", dz->tile_size ); printf( "vips_foreign_save_dz_build: overlap == %d\n", dz->overlap ); printf( "vips_foreign_save_dz_build: tile_margin == %d\n", dz->tile_margin ); printf( "vips_foreign_save_dz_build: tile_step == %d\n", dz->tile_step ); #endif /*DEBUG*/ /* Build the skeleton of the image pyramid. */ if( !(dz->layer = pyramid_build( dz, NULL, save->ready->Xsize, save->ready->Ysize, &real_pixels )) ) return( -1 ); if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ ) dz->root_name = g_strdup_printf( "%s_files", dz->basename ); else dz->root_name = g_strdup( dz->basename ); /* Drop any options from @suffix. */ { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; vips__filename_split8( dz->suffix, filename, option_string ); dz->file_suffix = g_strdup( filename ); } /* If we will be renaming our temp dir to an existing directory or * file, stop now. See vips_rename() use below. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ && dz->container == VIPS_FOREIGN_DZ_CONTAINER_FS && dz->dirname && vips_existsf( "%s/%s_files", dz->dirname, dz->basename ) ) { vips_error( "dzsave", _( "output directory %s/%s_files exists" ), dz->dirname, dz->basename ); return( -1 ); } /* Make the thing we write the tiles into. */ switch( dz->container ) { case VIPS_FOREIGN_DZ_CONTAINER_FS: if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ ) { /* For deepzoom, we have to rearrange the output * directory after writing it, see the end of this * function. We write to a temporary directory, then * pull ${basename}_files and ${basename}.dzi out into * the current directory and remove the temp. The temp * dir must not clash with another file. */ char name[VIPS_PATH_MAX]; int fd; GsfOutput *out; GError *error = NULL; vips_snprintf( name, VIPS_PATH_MAX, "%s-XXXXXX", dz->basename ); dz->tempdir = g_build_filename( dz->dirname, name, NULL ); if( (fd = g_mkstemp( dz->tempdir )) == -1 ) { vips_error( class->nickname, _( "unable to make temporary file %s" ), dz->tempdir ); return( -1 ); } close( fd ); g_unlink( dz->tempdir ); if( !(out = (GsfOutput *) gsf_outfile_stdio_new( dz->tempdir, &error )) ) { vips_g_error( &error ); return( -1 ); } dz->tree = vips_gsf_tree_new( out, 0 ); } else { GsfOutput *out; GError *error = NULL; char name[VIPS_PATH_MAX]; vips_snprintf( name, VIPS_PATH_MAX, "%s/%s", dz->dirname, dz->basename ); if( !(out = (GsfOutput *) gsf_outfile_stdio_new( name, &error )) ) { vips_g_error( &error ); return( -1 ); } dz->tree = vips_gsf_tree_new( out, 0 ); } break; case VIPS_FOREIGN_DZ_CONTAINER_ZIP: case VIPS_FOREIGN_DZ_CONTAINER_SZI: { GsfOutput *zip; GsfOutput *out2; GError *error = NULL; char name[VIPS_PATH_MAX]; /* Output to a file or memory? */ if( dz->dirname ) { const char *suffix = dz->container == VIPS_FOREIGN_DZ_CONTAINER_SZI ? "szi" : "zip"; vips_snprintf( name, VIPS_PATH_MAX, "%s/%s.%s", dz->dirname, dz->basename, suffix ); if( !(dz->out = gsf_output_stdio_new( name, &error )) ) { vips_g_error( &error ); return( -1 ); } } else dz->out = gsf_output_memory_new(); if( !(zip = (GsfOutput *) gsf_outfile_zip_new( dz->out, &error )) ) { vips_g_error( &error ); return( -1 ); } /* Make the base directory inside the zip. All stuff goes into * this. */ out2 = gsf_outfile_new_child_full( (GsfOutfile *) zip, dz->basename, TRUE, "compression-level", GSF_ZIP_STORED, NULL ); #ifndef HAVE_GSF_DEFLATE_LEVEL if( dz->compression > 0 ) { g_warning( "%s", _( "deflate-level not supported by libgsf, " "using default compression" ) ); dz->compression = -1; } #endif /*HAVE_GSF_DEFLATE_LEVEL*/ dz->tree = vips_gsf_tree_new( out2, dz->compression ); /* Note the thing that will need closing up on exit. */ dz->tree->container = zip; } break; default: g_assert_not_reached(); } if( vips_sink_disc( save->ready, pyramid_strip, dz ) ) return( -1 ); switch( dz->layout ) { case VIPS_FOREIGN_DZ_LAYOUT_DZ: if( write_dzi( dz ) ) return( -1 ); break; case VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY: if( write_properties( dz ) ) return( -1 ); break; case VIPS_FOREIGN_DZ_LAYOUT_GOOGLE: if( write_blank( dz ) ) return( -1 ); break; case VIPS_FOREIGN_DZ_LAYOUT_IIIF: if( write_json( dz ) ) return( -1 ); break; default: g_assert_not_reached(); } if( dz->properties && write_vips_meta( dz ) ) return( -1 ); if( dz->container == VIPS_FOREIGN_DZ_CONTAINER_SZI && write_scan_properties( dz ) ) return( -1 ); if( dz->container == VIPS_FOREIGN_DZ_CONTAINER_SZI && write_associated( dz ) ) return( -1 ); /* This is so ugly. In earlier versions of dzsave, we wrote x.dzi and * x_files. Now we write x/x.dzi and x/x_files to make it possible to * create zip files. * * For compatibility, rearrange the directory tree. * * FIXME have a flag to stop this stupidity */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ && dz->container == VIPS_FOREIGN_DZ_CONTAINER_FS ) { char old_name[VIPS_PATH_MAX]; char new_name[VIPS_PATH_MAX]; vips_snprintf( old_name, VIPS_PATH_MAX, "%s/%s.dzi", dz->tempdir, dz->basename ); vips_snprintf( new_name, VIPS_PATH_MAX, "%s/%s.dzi", dz->dirname, dz->basename ); if( vips_rename( old_name, new_name ) ) return( -1 ); vips_snprintf( old_name, VIPS_PATH_MAX, "%s/%s_files", dz->tempdir, dz->basename ); vips_snprintf( new_name, VIPS_PATH_MAX, "%s/%s_files", dz->dirname, dz->basename ); if( vips_rename( old_name, new_name ) ) return( -1 ); if( vips_rmdirf( "%s", dz->tempdir ) ) return( -1 ); } /* Shut down the output to flush everything. */ if( vips_gsf_tree_close( dz->tree ) ) return( -1 ); dz->tree = NULL; /* If we are writing a zip to the filesystem, we must unref out to * force it to disc. */ if( iszip( dz->container ) && dz->dirname != NULL ) VIPS_FREEF( g_object_unref, dz->out ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int bandfmt_dz[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, F, D, D }; static const char *dz_suffs[] = { ".dz", NULL }; static void vips_foreign_save_dz_class_init( VipsForeignSaveDzClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->dispose = vips_foreign_save_dz_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "dzsave_base"; object_class->description = _( "save image to deep zoom format" ); object_class->build = vips_foreign_save_dz_build; foreign_class->suffs = dz_suffs; save_class->saveable = VIPS_SAVEABLE_ANY; save_class->format_table = bandfmt_dz; save_class->coding[VIPS_CODING_LABQ] = TRUE; VIPS_ARG_STRING( class, "basename", 2, _( "Base name" ), _( "Base name to save to" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, basename ), NULL ); VIPS_ARG_ENUM( class, "layout", 8, _( "Layout" ), _( "Directory layout" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, layout ), VIPS_TYPE_FOREIGN_DZ_LAYOUT, VIPS_FOREIGN_DZ_LAYOUT_DZ ); VIPS_ARG_STRING( class, "suffix", 9, _( "suffix" ), _( "Filename suffix for tiles" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, suffix ), ".jpeg" ); VIPS_ARG_INT( class, "overlap", 10, _( "Overlap" ), _( "Tile overlap in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, overlap ), 0, 8192, 1 ); VIPS_ARG_INT( class, "tile_size", 11, _( "Tile size" ), _( "Tile size in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, tile_size ), 1, 8192, 254 ); VIPS_ARG_ENUM( class, "depth", 13, _( "Depth" ), _( "Pyramid depth" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, depth ), VIPS_TYPE_FOREIGN_DZ_DEPTH, VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL ); VIPS_ARG_BOOL( class, "centre", 13, _( "Center" ), _( "Center image in tile" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, centre ), FALSE ); VIPS_ARG_ENUM( class, "angle", 14, _( "Angle" ), _( "Rotate image during save" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, angle ), VIPS_TYPE_ANGLE, VIPS_ANGLE_D0 ); VIPS_ARG_ENUM( class, "container", 15, _( "Container" ), _( "Pyramid container type" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, container ), VIPS_TYPE_FOREIGN_DZ_CONTAINER, VIPS_FOREIGN_DZ_CONTAINER_FS ); VIPS_ARG_BOOL( class, "properties", 16, _( "Properties" ), _( "Write a properties file to the output directory" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, properties ), FALSE ); VIPS_ARG_INT( class, "compression", 17, _( "Compression" ), _( "ZIP deflate compression level" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, compression ), -1, 9, 0 ); VIPS_ARG_ENUM( class, "region_shrink", 18, _( "Region shrink" ), _( "Method to shrink regions" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, region_shrink ), VIPS_TYPE_REGION_SHRINK, VIPS_REGION_SHRINK_MEAN ); VIPS_ARG_INT( class, "skip_blanks", 19, _( "Skip blanks" ), _( "Skip tiles which are nearly equal to the background" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, skip_blanks ), -1, 65535, -1 ); VIPS_ARG_BOOL( class, "no_strip", 20, _( "No strip" ), _( "Don't strip tile metadata" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, no_strip ), FALSE ); /* How annoying. We stupidly had these in earlier versions. */ VIPS_ARG_STRING( class, "dirname", 1, _( "Directory name" ), _( "Directory name to save to" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignSaveDz, dirname ), NULL ); VIPS_ARG_INT( class, "tile_width", 12, _( "Tile width" ), _( "Tile width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignSaveDz, tile_size ), 1, 8192, 254 ); VIPS_ARG_INT( class, "tile_height", 12, _( "Tile height" ), _( "Tile height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignSaveDz, tile_size ), 1, 8192, 254 ); } static void vips_foreign_save_dz_init( VipsForeignSaveDz *dz ) { VIPS_SETSTR( dz->suffix, ".jpeg" ); dz->layout = VIPS_FOREIGN_DZ_LAYOUT_DZ; dz->overlap = 1; dz->tile_size = 254; dz->tile_count = 0; dz->depth = VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL; dz->angle = VIPS_ANGLE_D0; dz->container = VIPS_FOREIGN_DZ_CONTAINER_FS; dz->compression = 0; dz->region_shrink = VIPS_REGION_SHRINK_MEAN; dz->skip_blanks = -1; } typedef struct _VipsForeignSaveDzFile { VipsForeignSaveDz parent_object; /* Filename for save. */ char *filename; } VipsForeignSaveDzFile; typedef VipsForeignSaveDzClass VipsForeignSaveDzFileClass; G_DEFINE_TYPE( VipsForeignSaveDzFile, vips_foreign_save_dz_file, vips_foreign_save_dz_get_type() ); static int vips_foreign_save_dz_file_build( VipsObject *object ) { VipsForeignSaveDz *dz = (VipsForeignSaveDz *) object; VipsForeignSaveDzFile *file = (VipsForeignSaveDzFile *) object; char *p; /* Use @filename to set the default values for dirname and basename. */ if( !vips_object_argument_isset( object, "basename" ) ) dz->basename = g_path_get_basename( file->filename ); if( !vips_object_argument_isset( object, "dirname" ) ) dz->dirname = g_path_get_dirname( file->filename ); /* Remove any [options] from basename. */ if( (p = (char *) vips__find_rightmost_brackets( dz->basename )) ) *p = '\0'; /* If we're writing thing.zip or thing.szi, default to zip * container. */ if( (p = strrchr( dz->basename, '.' )) ) { if( !vips_object_argument_isset( object, "container" ) ) { if( strcasecmp( p + 1, "zip" ) == 0 ) dz->container = VIPS_FOREIGN_DZ_CONTAINER_ZIP; if( strcasecmp( p + 1, "szi" ) == 0 ) dz->container = VIPS_FOREIGN_DZ_CONTAINER_SZI; } /* Remove any legal suffix. We don't remove all suffixes * since we might be writing to a dirname with a dot in. */ if( g_ascii_strcasecmp( p + 1, "zip" ) == 0 || g_ascii_strcasecmp( p + 1, "szi" ) == 0 || g_ascii_strcasecmp( p + 1, "dz" ) == 0 ) *p = '\0'; } if( VIPS_OBJECT_CLASS( vips_foreign_save_dz_file_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_dz_file_class_init( VipsForeignSaveDzFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "dzsave"; object_class->description = _( "save image to deepzoom file" ); object_class->build = vips_foreign_save_dz_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDzFile, filename ), NULL ); } static void vips_foreign_save_dz_file_init( VipsForeignSaveDzFile *file ) { } typedef struct _VipsForeignSaveDzBuffer { VipsForeignSaveDz parent_object; VipsArea *buf; } VipsForeignSaveDzBuffer; typedef VipsForeignSaveDzClass VipsForeignSaveDzBufferClass; G_DEFINE_TYPE( VipsForeignSaveDzBuffer, vips_foreign_save_dz_buffer, vips_foreign_save_dz_get_type() ); static int vips_foreign_save_dz_buffer_build( VipsObject *object ) { VipsForeignSaveDz *dz = (VipsForeignSaveDz *) object; void *obuf; size_t olen; VipsBlob *blob; if( !vips_object_argument_isset( object, "basename" ) ) dz->basename = g_strdup( "untitled" ); /* Leave dirname NULL to indicate memory output. */ if( VIPS_OBJECT_CLASS( vips_foreign_save_dz_buffer_parent_class )-> build( object ) ) return( -1 ); g_assert( GSF_IS_OUTPUT_MEMORY( dz->out ) ); /* Oh dear, we can't steal gsf's memory, and blob can't unref something * or trigger a notify. We have to copy it. * * Don't use tracked, we want something that can be freed with g_free. * * FIXME ... blob (or area?) needs to support notify or unref. */ olen = gsf_output_size( GSF_OUTPUT( dz->out ) ); if( !(obuf = g_try_malloc( olen )) ) { vips_error( "vips_tracked", _( "out of memory --- size == %dMB" ), (int) (olen / (1024.0 * 1024.0)) ); return( -1 ); } memcpy( obuf, gsf_output_memory_get_bytes( GSF_OUTPUT_MEMORY( dz->out ) ), olen ); blob = vips_blob_new( (VipsCallbackFn) g_free, obuf, olen ); g_object_set( object, "buffer", blob, NULL ); vips_area_unref( VIPS_AREA( blob ) ); return( 0 ); } static void vips_foreign_save_dz_buffer_class_init( VipsForeignSaveDzBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "dzsave_buffer"; object_class->description = _( "save image to dz buffer" ); object_class->build = vips_foreign_save_dz_buffer_build; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to save to" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignSaveDzBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_save_dz_buffer_init( VipsForeignSaveDzBuffer *buffer ) { VipsForeignSaveDz *dz = (VipsForeignSaveDz *) buffer; /* zip default for memory output. */ dz->container = VIPS_FOREIGN_DZ_CONTAINER_ZIP; } #endif /*HAVE_GSF*/ /** * vips_dzsave: (method) * @in: image to save * @name: name to save to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @basename: %gchar, base part of name * * @layout: #VipsForeignDzLayout directory layout convention * * @suffix: suffix for tile tiles * * @overlap: %gint set tile overlap * * @tile_size: %gint set tile size * * @background: #VipsArrayDouble background colour * * @depth: #VipsForeignDzDepth how deep to make the pyramid * * @centre: %gboolean centre the tiles * * @angle: #VipsAngle rotate the image by this much * * @container: #VipsForeignDzContainer set container type * * @properties: %gboolean write a properties file * * @compression: %gint zip deflate compression level * * @region_shrink: #VipsRegionShrink how to shrink each 2x2 region * * @skip_blanks: %gint skip tiles which are nearly equal to the background * * @no_strip: %gboolean don't strip tiles * * Save an image as a set of tiles at various resolutions. By default dzsave * uses DeepZoom layout -- use @layout to pick other conventions. * * vips_dzsave() creates a directory called @name to hold the tiles. If @name * ends `.zip`, vips_dzsave() will create a zip file called @name to hold the * tiles. You can use @container to force zip file output. * * Use @basename to set the name of the directory tree we are creating. The * default value is set from @name. * * You can set @suffix to something like `".jpg[Q=85]"` to control the tile * write options. * * In Google layout mode, edge tiles are expanded to @tile_size by @tile_size * pixels. Normally they are filled with white, but you can set another colour * with @background. Images are usually placed at the top-left of the tile, * but you can have them centred by turning on @centre. * * You can set the size and overlap of tiles with @tile_size and @overlap. * They default to the correct settings for the selected @layout. The deepzoom * defaults produce 256x256 jpeg files for centre tiles, the most efficient * size. * * Use @depth to control how low the pyramid goes. This defaults to the * correct setting for the @layout you select. * * You can rotate the image during write with the @angle argument. However, * this will only work for images which support random access, like openslide, * and not for things like JPEG. You'll need to rotate those images * yourself with vips_rot(). Note that the `autorotate` option to the loader * may do what you need. * * If @properties is %TRUE, vips_dzsave() will write a file called * `vips-properties.xml` to the output directory. This file lists all of the * metadata attached to @in in an obvious manner. It can be useful for viewing * programs which wish to use fields from source files loaded via * vips_openslideload(). * * By default, all tiles are stripped, since very few people want a copy of * the metadata on every tile. Set @no_strip if you really want to keep * metadata. * * If @container is set to `zip`, you can set a compression level from -1 * (use zlib default), 0 (store, compression disabled) to 9 (max compression). * If no value is given, the default is to store files without compression. * * You can use @region_shrink to control the method for shrinking each 2x2 * region. This defaults to using the average of the 4 input pixels but you can * also use the median in cases where you want to preserve the range of values. * * If you set @skip_blanks to a value greater than or equal to zero, tiles * which are all within that many pixel values to the background are skipped. * This can save a lot of space for some image types. This option defaults to * 5 in Google layout mode, -1 otherwise. * * See also: vips_tiffsave(). * * Returns: 0 on success, -1 on error. */ int vips_dzsave( VipsImage *in, const char *name, ... ) { va_list ap; int result; va_start( ap, name ); result = vips_call_split( "dzsave", ap, in, name ); va_end( ap ); return( result ); } /** * vips_dzsave_buffer: (method) * @in: image to save * @buf: (array length=len) (element-type guint8): return output buffer here * @len: (type gsize): return output length here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @basename: %gchar, base part of name * * @layout: #VipsForeignDzLayout directory layout convention * * @suffix: suffix for tile tiles * * @overlap: %gint set tile overlap * * @tile_size: %gint set tile size * * @background: #VipsArrayDouble background colour * * @depth: #VipsForeignDzDepth how deep to make the pyramid * * @centre: %gboolean centre the tiles * * @angle: #VipsAngle rotate the image by this much * * @container: #VipsForeignDzContainer set container type * * @properties: %gboolean write a properties file * * @compression: %gint zip deflate compression level * * @region_shrink: #VipsRegionShrink how to shrink each 2x2 region. * * @skip_blanks: %gint skip tiles which are nearly equal to the background * * @no_strip: %gboolean don't strip tiles * * As vips_dzsave(), but save to a memory buffer. * * Output is always in a zip container. Use @basename to set the name of the * directory that the zip will create when unzipped. * * The address of the buffer is returned in @buf, the length of the buffer in * @len. You are responsible for freeing the buffer with g_free() when you * are done with it. * * See also: vips_dzsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_dzsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) { va_list ap; VipsArea *area; int result; area = NULL; va_start( ap, len ); result = vips_call_split( "dzsave_buffer", ap, in, &area ); va_end( ap ); if( !result && area ) { if( buf ) { *buf = area->data; area->free_fn = NULL; } if( len ) *len = area->length; vips_area_unref( area ); } return( result ); } libvips-8.9.1/libvips/foreign/exif.c000066400000000000000000001045751361153320700174160ustar00rootroot00000000000000/* parse EXIF metadata block out into a set of fields, and reassemble EXIF * block from original block, plus modified fields * * 7/11/16 * - from jpeg2vips * 14/10/17 * - only read orientation from ifd0 * 1/2/18 * - remove exif thumbnail if "jpeg-thumbnail-data" has been removed * 3/7/18 * - add support for writing string-valued fields * 9/7/18 [@Nan619] * - get tag name from tag plus ifd */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #ifdef HAVE_EXIF #ifdef UNTAGGED_EXIF #include #include #include #include #else /*!UNTAGGED_EXIF*/ #include #include #include #include #endif /*UNTAGGED_EXIF*/ #include "pforeign.h" #ifdef DEBUG_VERBOSE /* Print exif for debugging ... hacked from exif-0.6.9/actions.c */ static void show_tags( ExifData *data ) { int i; unsigned int tag; const char *name; printf( "show EXIF tags:\n" ); for( i = 0; i < EXIF_IFD_COUNT; i++ ) printf( "%-7.7s", exif_ifd_get_name( i ) ); printf( "\n" ); for( tag = 0; tag < 0xffff; tag++ ) { name = exif_tag_get_title( tag ); if( !name ) continue; printf( " 0x%04x %-29.29s", tag, name ); for( i = 0; i < EXIF_IFD_COUNT; i++ ) if( exif_content_get_entry( data->ifd[i], tag ) ) printf( " * " ); else printf( " - " ); printf( "\n" ); } } static void show_entry( ExifEntry *entry, void *client ) { char exif_text[256]; printf( "%s", exif_tag_get_title( entry->tag ) ); printf( "|" ); printf( "%s", exif_entry_get_value( entry, exif_text, 256 ) ); printf( "|" ); printf( "%s", exif_format_get_name( entry->format ) ); printf( "|" ); printf( "%d bytes", entry->size ); printf( "\n" ); } static void show_ifd( ExifContent *content, void *client ) { int *ifd = (int *) client; printf( "- ifd %d\n", *ifd ); exif_content_foreach_entry( content, show_entry, client ); *ifd += 1; } static void show_values( ExifData *data ) { ExifByteOrder order; int ifd; order = exif_data_get_byte_order( data ); printf( "EXIF tags in '%s' byte order\n", exif_byte_order_get_name( order ) ); printf( "Title|Value|Format|Size\n" ); ifd = 0; exif_data_foreach_content( data, show_ifd, &ifd ); if( data->size ) printf( "contains thumbnail of %d bytes\n", data->size ); } #endif /*DEBUG_VERBOSE*/ /* Like exif_data_new_from_data(), but don't default missing fields. * * If we do exif_data_new_from_data(), then missing fields are set to * their default value and we won't know about it. */ static ExifData * vips_exif_load_data_without_fix( const void *data, int length ) { ExifData *ed; if( !(ed = exif_data_new()) ) { vips_error( "exif", "%s", _( "unable to init exif" ) ); return( NULL ); } exif_data_unset_option( ed, EXIF_DATA_OPTION_FOLLOW_SPECIFICATION ); exif_data_load_data( ed, data, length ); return( ed ); } static int vips_exif_get_int( ExifData *ed, ExifEntry *entry, unsigned long component, int *out ) { ExifByteOrder bo = exif_data_get_byte_order( ed ); size_t sizeof_component = entry->size / entry->components; size_t offset = component * sizeof_component; if( entry->format == EXIF_FORMAT_SHORT ) *out = exif_get_short( entry->data + offset, bo ); else if( entry->format == EXIF_FORMAT_SSHORT ) *out = exif_get_sshort( entry->data + offset, bo ); else if( entry->format == EXIF_FORMAT_LONG ) /* This won't work for huge values, but who cares. */ *out = (int) exif_get_long( entry->data + offset, bo ); else if( entry->format == EXIF_FORMAT_SLONG ) *out = exif_get_slong( entry->data + offset, bo ); else return( -1 ); return( 0 ); } static int vips_exif_get_rational( ExifData *ed, ExifEntry *entry, unsigned long component, ExifRational *out ) { if( entry->format == EXIF_FORMAT_RATIONAL ) { ExifByteOrder bo = exif_data_get_byte_order( ed ); size_t sizeof_component = entry->size / entry->components; size_t offset = component * sizeof_component; *out = exif_get_rational( entry->data + offset, bo ); } else return( -1 ); return( 0 ); } static int vips_exif_get_srational( ExifData *ed, ExifEntry *entry, unsigned long component, ExifSRational *out ) { if( entry->format == EXIF_FORMAT_SRATIONAL ) { ExifByteOrder bo = exif_data_get_byte_order( ed ); size_t sizeof_component = entry->size / entry->components; size_t offset = component * sizeof_component; *out = exif_get_srational( entry->data + offset, bo ); } else return( -1 ); return( 0 ); } static int vips_exif_get_double( ExifData *ed, ExifEntry *entry, unsigned long component, double *out ) { ExifRational rv; ExifSRational srv; double value; if( !vips_exif_get_rational( ed, entry, component, &rv ) ) { if( rv.denominator == 0 ) value = 0; else value = (double) rv.numerator / rv.denominator; } else if( !vips_exif_get_srational( ed, entry, component, &srv ) ) { if( srv.denominator == 0 ) value = 0; else value = (double) srv.numerator / srv.denominator; } else return( -1 ); *out = value; return( 0 ); } /* Save an exif value to a string in a way that we can restore. We only bother * for the simple formats (that a client might try to change) though. * * Keep in sync with vips_exif_from_s() below. */ static void vips_exif_to_s( ExifData *ed, ExifEntry *entry, VipsBuf *buf ) { unsigned long i; int iv; ExifRational rv; ExifSRational srv; char txt[256]; if( entry->format == EXIF_FORMAT_ASCII ) { /* libexif does not null-terminate strings. Copy out and add * the \0 ourselves. */ int len = VIPS_MIN( 254, entry->size ); memcpy( txt, entry->data, len ); txt[len] = '\0'; vips_buf_appendf( buf, "%s ", txt ); } else if( entry->components < 10 && !vips_exif_get_int( ed, entry, 0, &iv ) ) { for( i = 0; i < entry->components; i++ ) { vips_exif_get_int( ed, entry, i, &iv ); vips_buf_appendf( buf, "%d ", iv ); } } else if( entry->components < 10 && !vips_exif_get_rational( ed, entry, 0, &rv ) ) { for( i = 0; i < entry->components; i++ ) { vips_exif_get_rational( ed, entry, i, &rv ); vips_buf_appendf( buf, "%u/%u ", rv.numerator, rv.denominator ); } } else if( entry->components < 10 && !vips_exif_get_srational( ed, entry, 0, &srv ) ) { for( i = 0; i < entry->components; i++ ) { vips_exif_get_srational( ed, entry, i, &srv ); vips_buf_appendf( buf, "%d/%d ", srv.numerator, srv.denominator ); } } else vips_buf_appendf( buf, "%s ", exif_entry_get_value( entry, txt, 256 ) ); vips_buf_appendf( buf, "(%s, %s, %lu components, %d bytes)", exif_entry_get_value( entry, txt, 256 ), exif_format_get_name( entry->format ), entry->components, entry->size ); } typedef struct _VipsExifParams { VipsImage *image; ExifData *ed; } VipsExifParams; /* tags do not uniquely set tag names: the same tag can have different * names in different ifds. * * As long as this entry has been linked to an ifd, get the tag name. */ static const char * vips_exif_entry_get_name( ExifEntry *entry ) { if( !entry->parent ) return( NULL ); return( exif_tag_get_name_in_ifd( entry->tag, exif_entry_get_ifd( entry ) ) ); } static void vips_exif_attach_entry( ExifEntry *entry, VipsExifParams *params ) { const char *tag_name; char vips_name_txt[256]; VipsBuf vips_name = VIPS_BUF_STATIC( vips_name_txt ); char value_txt[256]; VipsBuf value = VIPS_BUF_STATIC( value_txt ); if( !(tag_name = vips_exif_entry_get_name( entry )) ) return; vips_buf_appendf( &vips_name, "exif-ifd%d-%s", exif_entry_get_ifd( entry ), tag_name ); vips_exif_to_s( params->ed, entry, &value ); /* Can't do anything sensible with the error return. */ (void) vips_image_set_string( params->image, vips_buf_all( &vips_name ), vips_buf_all( &value ) ); } static void vips_exif_get_content( ExifContent *content, VipsExifParams *params ) { exif_content_foreach_entry( content, (ExifContentForeachEntryFunc) vips_exif_attach_entry, params ); } static int vips_exif_entry_get_double( ExifData *ed, int ifd, ExifTag tag, double *out ) { ExifEntry *entry; if( !(entry = exif_content_get_entry( ed->ifd[ifd], tag )) || entry->components != 1 ) return( -1 ); return( vips_exif_get_double( ed, entry, 0, out ) ); } static int vips_exif_entry_get_int( ExifData *ed, int ifd, ExifTag tag, int *out ) { ExifEntry *entry; if( !(entry = exif_content_get_entry( ed->ifd[ifd], tag )) || entry->components != 1 ) return( -1 ); return( vips_exif_get_int( ed, entry, 0, out ) ); } /* Set the image resolution from the EXIF tags. */ static int vips_image_resolution_from_exif( VipsImage *image, ExifData *ed ) { double xres, yres; int unit; /* The main image xres/yres are in ifd0. ifd1 has xres/yres of the * image thumbnail, if any. * * Don't warn about missing res fields, it's very common, especially for * things like webp. */ if( vips_exif_entry_get_double( ed, 0, EXIF_TAG_X_RESOLUTION, &xres ) || vips_exif_entry_get_double( ed, 0, EXIF_TAG_Y_RESOLUTION, &yres ) || vips_exif_entry_get_int( ed, 0, EXIF_TAG_RESOLUTION_UNIT, &unit ) ) return( -1 ); #ifdef DEBUG printf( "vips_image_resolution_from_exif: seen exif tags " "xres = %g, yres = %g, unit = %d\n", xres, yres, unit ); #endif /*DEBUG*/ switch( unit ) { case 1: /* No unit ... just pass the fields straight to vips. */ vips_image_set_string( image, VIPS_META_RESOLUTION_UNIT, "none" ); break; case 2: /* In inches. */ xres /= 25.4; yres /= 25.4; vips_image_set_string( image, VIPS_META_RESOLUTION_UNIT, "in" ); break; case 3: /* In cm. */ xres /= 10.0; yres /= 10.0; vips_image_set_string( image, VIPS_META_RESOLUTION_UNIT, "cm" ); break; default: g_warning( "%s", _( "unknown EXIF resolution unit" ) ); return( -1 ); } #ifdef DEBUG printf( "vips_image_resolution_from_exif: " "seen exif resolution %g, %g p/mm\n", xres, yres ); #endif /*DEBUG*/ image->Xres = xres; image->Yres = yres; return( 0 ); } /* Need to fwd ref this. */ static int vips_exif_resolution_from_image( ExifData *ed, VipsImage *image ); /* Scan the exif block on the image, if any, and make a set of vips metadata * tags for what we find. */ int vips__exif_parse( VipsImage *image ) { const void *data; size_t size; ExifData *ed; VipsExifParams params; const char *str; if( !vips_image_get_typeof( image, VIPS_META_EXIF_NAME ) ) return( 0 ); if( vips_image_get_blob( image, VIPS_META_EXIF_NAME, &data, &size ) ) return( -1 ); if( !(ed = vips_exif_load_data_without_fix( data, size )) ) return( -1 ); #ifdef DEBUG_VERBOSE show_tags( ed ); show_values( ed ); #endif /*DEBUG_VERBOSE*/ /* Look for resolution fields and use them to set the VIPS xres/yres * fields. * * If the fields are missing, set them from the image, which will have * previously had them set from something like JFIF. */ if( vips_image_resolution_from_exif( image, ed ) && vips_exif_resolution_from_image( ed, image ) ) { exif_data_free( ed ); return( -1 ); } /* Make sure all required fields are there before we attach the vips * metadata. */ exif_data_fix( ed ); /* Attach informational fields for what we find. */ params.image = image; params.ed = ed; exif_data_foreach_content( ed, (ExifDataForeachContentFunc) vips_exif_get_content, ¶ms ); vips_image_set_blob_copy( image, "jpeg-thumbnail-data", ed->data, ed->size ); exif_data_free( ed ); /* Orientation handling. ifd0 has the Orientation tag for the main * image. */ if( vips_image_get_typeof( image, "exif-ifd0-Orientation" ) != 0 && !vips_image_get_string( image, "exif-ifd0-Orientation", &str ) ) { int orientation; orientation = atoi( str ); if( orientation < 1 || orientation > 8 ) orientation = 1; vips_image_set_int( image, VIPS_META_ORIENTATION, orientation ); } return( 0 ); } static void vips_exif_set_int( ExifData *ed, ExifEntry *entry, unsigned long component, void *data ) { int value = *((int *) data); ExifByteOrder bo; size_t sizeof_component; size_t offset = component; if( entry->components <= component ) { VIPS_DEBUG_MSG( "vips_exif_set_int: too few components\n" ); return; } /* Wait until after the component check to make sure we cant get /0. */ bo = exif_data_get_byte_order( ed ); sizeof_component = entry->size / entry->components; offset = component * sizeof_component; VIPS_DEBUG_MSG( "vips_exif_set_int: %s = %d\n", vips_exif_entry_get_name( entry ), value ); if( entry->format == EXIF_FORMAT_SHORT ) exif_set_short( entry->data + offset, bo, value ); else if( entry->format == EXIF_FORMAT_SSHORT ) exif_set_sshort( entry->data + offset, bo, value ); else if( entry->format == EXIF_FORMAT_LONG ) exif_set_long( entry->data + offset, bo, value ); else if( entry->format == EXIF_FORMAT_SLONG ) exif_set_slong( entry->data + offset, bo, value ); } static void vips_exif_double_to_rational( double value, ExifRational *rv ) { /* We will usually set factors of 10, so use 1000 as the denominator * and it'll probably be OK. */ rv->numerator = value * 1000; rv->denominator = 1000; } static void vips_exif_double_to_srational( double value, ExifSRational *srv ) { /* We will usually set factors of 10, so use 1000 as the denominator * and it'll probably be OK. */ srv->numerator = value * 1000; srv->denominator = 1000; } /* Parse a char * into an ExifRational. We allow floats as well. */ static void vips_exif_parse_rational( const char *str, ExifRational *rv ) { if( sscanf( str, " %u / %u ", &rv->numerator, &rv->denominator ) == 2 ) return; vips_exif_double_to_rational( g_ascii_strtod( str, NULL ), rv ); } /* Parse a char * into an ExifSRational. We allow floats as well. */ static void vips_exif_parse_srational( const char *str, ExifSRational *srv ) { if( sscanf( str, " %d / %d ", &srv->numerator, &srv->denominator ) == 2 ) return; vips_exif_double_to_srational( g_ascii_strtod( str, NULL ), srv ); } /* Does both signed and unsigned rationals from a char *. */ static void vips_exif_set_rational( ExifData *ed, ExifEntry *entry, unsigned long component, void *data ) { char *value = (char *) data; ExifByteOrder bo; size_t sizeof_component; size_t offset; if( entry->components <= component ) { VIPS_DEBUG_MSG( "vips_exif_set_rational: " "too few components\n" ); return; } /* Wait until after the component check to make sure we cant get /0. */ bo = exif_data_get_byte_order( ed ); sizeof_component = entry->size / entry->components; offset = component * sizeof_component; VIPS_DEBUG_MSG( "vips_exif_set_rational: %s = \"%s\"\n", vips_exif_entry_get_name( entry ), value ); if( entry->format == EXIF_FORMAT_RATIONAL ) { ExifRational rv; vips_exif_parse_rational( value, &rv ); VIPS_DEBUG_MSG( "vips_exif_set_rational: %u / %u\n", rv.numerator, rv.denominator ); exif_set_rational( entry->data + offset, bo, rv ); } else if( entry->format == EXIF_FORMAT_SRATIONAL ) { ExifSRational srv; vips_exif_parse_srational( value, &srv ); VIPS_DEBUG_MSG( "vips_exif_set_rational: %d / %d\n", srv.numerator, srv.denominator ); exif_set_srational( entry->data + offset, bo, srv ); } } /* Does both signed and unsigned rationals from a double*. * * Don't change the exit entry if the value currently there is a good * approximation of the double we are trying to set. */ static void vips_exif_set_double( ExifData *ed, ExifEntry *entry, unsigned long component, void *data ) { double value = *((double *) data); ExifByteOrder bo; size_t sizeof_component; size_t offset; double old_value; if( entry->components <= component ) { VIPS_DEBUG_MSG( "vips_exif_set_double: " "too few components\n" ); return; } /* Wait until after the component check to make sure we cant get /0. */ bo = exif_data_get_byte_order( ed ); sizeof_component = entry->size / entry->components; offset = component * sizeof_component; VIPS_DEBUG_MSG( "vips_exif_set_double: %s = %g\n", vips_exif_entry_get_name( entry ), value ); if( entry->format == EXIF_FORMAT_RATIONAL ) { ExifRational rv; rv = exif_get_rational( entry->data + offset, bo ); if( rv.denominator == 0 ) old_value = 0; else old_value = (double) rv.numerator / rv.denominator; if( VIPS_FABS( old_value - value ) > 0.0001 ) { vips_exif_double_to_rational( value, &rv ); VIPS_DEBUG_MSG( "vips_exif_set_double: %u / %u\n", rv.numerator, rv.denominator ); exif_set_rational( entry->data + offset, bo, rv ); } } else if( entry->format == EXIF_FORMAT_SRATIONAL ) { ExifSRational srv; srv = exif_get_srational( entry->data + offset, bo ); if( srv.denominator == 0 ) old_value = 0; else old_value = (double) srv.numerator / srv.denominator; if( VIPS_FABS( old_value - value ) > 0.0001 ) { vips_exif_double_to_srational( value, &srv ); VIPS_DEBUG_MSG( "vips_exif_set_double: %d / %d\n", srv.numerator, srv.denominator ); exif_set_srational( entry->data + offset, bo, srv ); } } } typedef void (*write_fn)( ExifData *ed, ExifEntry *entry, unsigned long component, void *data ); /* String-valued tags need special treatment, sadly. * * Strings are written in three ways: * * 1. As ASCII, but with an 8-byte preamble giving the encoding (it's always * ASCII though) and the format undefined. * 2. As plain ASCII, with the format giving the encoding. * 3. As UTF16 in the MS tags. */ static gboolean tag_is_encoding( ExifTag tag ) { return( tag == EXIF_TAG_USER_COMMENT ); } static gboolean tag_is_ascii( ExifTag tag ) { return( tag == EXIF_TAG_MAKE || tag == EXIF_TAG_MODEL || tag == EXIF_TAG_IMAGE_DESCRIPTION || tag == EXIF_TAG_ARTIST || tag == EXIF_TAG_SOFTWARE || tag == EXIF_TAG_COPYRIGHT || tag == EXIF_TAG_DATE_TIME || tag == EXIF_TAG_DATE_TIME_ORIGINAL || tag == EXIF_TAG_DATE_TIME_DIGITIZED || tag == EXIF_TAG_SUB_SEC_TIME || tag == EXIF_TAG_SUB_SEC_TIME_ORIGINAL || tag == EXIF_TAG_SUB_SEC_TIME_DIGITIZED ); } static gboolean tag_is_utf16( ExifTag tag ) { return( tag == EXIF_TAG_XP_TITLE || tag == EXIF_TAG_XP_COMMENT || tag == EXIF_TAG_XP_AUTHOR || tag == EXIF_TAG_XP_KEYWORDS || tag == EXIF_TAG_XP_SUBJECT ); } /* Set a libexif-formatted string entry. */ static void vips_exif_alloc_string( ExifEntry *entry, unsigned long components ) { ExifMem *mem; g_assert( !entry->data ); /* The string in the entry must be allocated with the same allocator * that was used to allocate the entry itself. We can't do this * because the allocator is private :( so we must assume the entry was * created with the default one. */ mem = exif_mem_new_default(); /* EXIF_FORMAT_UNDEFINED is correct for EXIF_TAG_USER_COMMENT, our * caller should change this if it wishes. */ entry->data = exif_mem_alloc( mem, components ); entry->size = components; entry->components = components; entry->format = EXIF_FORMAT_UNDEFINED; VIPS_FREEF( exif_mem_unref, mem ); } /* The final " (xx, yy, zz, kk)" part of the string (if present) was * added by us in _to_s(), we must remove it before setting the string * back again. * * It may not be there if the user has changed the string. */ static char * drop_tail( const char *data ) { char *str; char *p; str = g_strdup( data ); p = str + strlen( str ); if( p > str && *g_utf8_prev_char( p ) == ')' && (p = g_utf8_strrchr( str, -1, (gunichar) '(')) && p > str && *(p = g_utf8_prev_char( p )) == ' ' ) *p = '\0'; return( str ); } /* special header required for EXIF_TAG_USER_COMMENT. */ #define ASCII_COMMENT "ASCII\0\0\0" /* Write a libvips NULL-terminated utf-8 string into a entry tagged with a * encoding. UserComment is like this, for example. */ static void vips_exif_set_string_encoding( ExifData *ed, ExifEntry *entry, unsigned long component, const char *data ) { char *str; int len; str = drop_tail( data ); /* libexif can only really save ASCII to things like UserComment. */ #ifdef HAVE_G_STR_TO_ASCII { char *ascii; ascii = g_str_to_ascii( str, NULL ); g_free( str ); str = ascii; } #endif /*HAVE_G_STR_TO_ASCII*/ /* libexif comment strings are not NULL-terminated, and have an * encoding tag (always ASCII) in the first 8 bytes. */ len = strlen( str ); vips_exif_alloc_string( entry, sizeof( ASCII_COMMENT ) - 1 + len ); memcpy( entry->data, ASCII_COMMENT, sizeof( ASCII_COMMENT ) - 1 ); memcpy( entry->data + sizeof( ASCII_COMMENT ) - 1, str, len ); g_free( str ); } /* Write a libvips NULL-terminated utf-8 string into an ASCII entry. Tags like * ImageDescription work like this. */ static void vips_exif_set_string_ascii( ExifData *ed, ExifEntry *entry, unsigned long component, const char *data ) { char *str; int len; str = drop_tail( data ); /* libexif can only really save ASCII to things like UserComment. */ #ifdef HAVE_G_STR_TO_ASCII { char *ascii; ascii = g_str_to_ascii( str, NULL ); g_free( str ); str = ascii; } #endif /*HAVE_G_STR_TO_ASCII*/ /* ASCII strings are NULL-terminated. */ len = strlen( str ); vips_exif_alloc_string( entry, len + 1 ); memcpy( entry->data, str, len + 1 ); entry->format = EXIF_FORMAT_ASCII; g_free( str ); } /* Write a libvips NULL-terminated utf-8 string into a utf16 entry. */ static void vips_exif_set_string_utf16( ExifData *ed, ExifEntry *entry, unsigned long component, const char *data ) { char *str; gunichar2 *utf16; glong len; str = drop_tail( data ); utf16 = g_utf8_to_utf16( str, -1, NULL, &len, NULL ); /* libexif utf16 strings are NULL-terminated. */ vips_exif_alloc_string( entry, (len + 1) * 2 ); memcpy( entry->data, utf16, (len + 1) * 2 ); entry->format = EXIF_FORMAT_BYTE; g_free( utf16 ); g_free( str ); } /* Write a tag. Update what's there, or make a new one. */ static void vips_exif_set_tag( ExifData *ed, int ifd, ExifTag tag, write_fn fn, void *data ) { ExifEntry *entry; if( (entry = exif_content_get_entry( ed->ifd[ifd], tag )) ) { fn( ed, entry, 0, data ); } else { entry = exif_entry_new(); /* tag must be set before calling exif_content_add_entry. */ entry->tag = tag; exif_content_add_entry( ed->ifd[ifd], entry ); exif_entry_unref( entry ); /* libexif makes us have a special path for string-valued * fields :( */ if( tag_is_encoding( tag ) ) vips_exif_set_string_encoding( ed, entry, 0, data ); else if( tag_is_ascii( tag ) ) vips_exif_set_string_ascii( ed, entry, 0, data ); else if( tag_is_utf16( tag ) ) vips_exif_set_string_utf16( ed, entry, 0, data ); else { exif_entry_initialize( entry, tag ); fn( ed, entry, 0, data ); } } } /* Set the EXIF resolution from the vips xres/yres tags. */ static int vips_exif_resolution_from_image( ExifData *ed, VipsImage *image ) { double xres, yres; const char *p; int unit; VIPS_DEBUG_MSG( "vips_exif_resolution_from_image: vips res of %g, %g\n", image->Xres, image->Yres ); /* Default to inches, more progs support it. */ unit = 2; if( vips_image_get_typeof( image, VIPS_META_RESOLUTION_UNIT ) && !vips_image_get_string( image, VIPS_META_RESOLUTION_UNIT, &p ) ) { if( vips_isprefix( "cm", p ) ) unit = 3; else if( vips_isprefix( "none", p ) ) unit = 1; } switch( unit ) { case 1: xres = image->Xres; yres = image->Yres; break; case 2: xres = image->Xres * 25.4; yres = image->Yres * 25.4; break; case 3: xres = image->Xres * 10.0; yres = image->Yres * 10.0; break; default: g_warning( "%s", _( "unknown EXIF resolution unit" ) ); return( 0 ); } /* Main image xres/yres/unit are in ifd0. ifd1 has the thumbnail * xres/yres/unit. */ vips_exif_set_tag( ed, 0, EXIF_TAG_X_RESOLUTION, vips_exif_set_double, (void *) &xres ); vips_exif_set_tag( ed, 0, EXIF_TAG_Y_RESOLUTION, vips_exif_set_double, (void *) &yres ); vips_exif_set_tag( ed, 0, EXIF_TAG_RESOLUTION_UNIT, vips_exif_set_int, (void *) &unit ); return( 0 ); } /* Exif also tracks image dimensions. */ static int vips_exif_set_dimensions( ExifData *ed, VipsImage *im ) { VIPS_DEBUG_MSG( "vips_exif_set_dimensions: vips size of %d, %d\n", im->Xsize, im->Ysize ); vips_exif_set_tag( ed, 2, EXIF_TAG_PIXEL_X_DIMENSION, vips_exif_set_int, (void *) &im->Xsize ); vips_exif_set_tag( ed, 2, EXIF_TAG_PIXEL_Y_DIMENSION, vips_exif_set_int, (void *) &im->Ysize ); return( 0 ); } /* And orientation. */ static int vips_exif_set_orientation( ExifData *ed, VipsImage *im ) { int orientation; /* We set the tag, even if it's been deleted, since it's a required * field. */ if( !vips_image_get_typeof( im, VIPS_META_ORIENTATION ) || vips_image_get_int( im, VIPS_META_ORIENTATION, &orientation ) ) orientation = 1; VIPS_DEBUG_MSG( "set_exif_orientation: %d\n", orientation ); vips_exif_set_tag( ed, 0, EXIF_TAG_ORIENTATION, vips_exif_set_int, (void *) &orientation ); return( 0 ); } /* And thumbnail. */ static int vips_exif_set_thumbnail( ExifData *ed, VipsImage *im ) { /* Delete any old thumbnail data. We should use the exif free func, * but the memory allocator is not exposed by libexif! Hopefully they * are just using free(). * * exif.c makes this assumption too when it tries to update a * thumbnail. */ if( ed->data ) { free( ed->data ); ed->data = NULL; } ed->size = 0; /* Update EXIF thumbnail from metadata, if any. */ if( vips_image_get_typeof( im, "jpeg-thumbnail-data" ) ) { const void *data; size_t size; if( vips_image_get_blob( im, "jpeg-thumbnail-data", &data, &size ) ) return( -1 ); /* Again, we should use the exif allocator attached to this * entry, but it is not exposed! */ if( size > 0 && data ) { ed->data = malloc( size ); memcpy( ed->data, data, size ); ed->size = size; } } return( 0 ); } /* Skip any spaces. */ static const char * skip_space( const char *p ) { while( p && *p == ' ' ) p += 1; return( p ); } /* Skip to the end of this non-space sequence. */ static const char * skip_nonspace( const char *p ) { while( p && *p && *p != ' ' ) p += 1; return( p ); } /* See also vips_exif_to_s() ... keep in sync. Only the numeric types are * handled here, since they can be updated. For string types, we have to * destroy and recreate, see above. */ static void vips_exif_from_s( ExifData *ed, ExifEntry *entry, const char *value ) { unsigned long i; const char *p; int v; if( entry->format == EXIF_FORMAT_SHORT || entry->format == EXIF_FORMAT_SSHORT || entry->format == EXIF_FORMAT_LONG || entry->format == EXIF_FORMAT_SLONG ) { if( entry->components >= 10 ) return; p = value; for( i = 0; i < entry->components; i++ ) { if( !(p = skip_space( p )) ) break; v = atof( p ); vips_exif_set_int( ed, entry, i, &v ); p = skip_nonspace( p ); } } else if( entry->format == EXIF_FORMAT_RATIONAL || entry->format == EXIF_FORMAT_SRATIONAL ) { if( entry->components >= 10 ) return; p = value; for( i = 0; i < entry->components; i++ ) { if( !(p = skip_space( p )) ) break; vips_exif_set_rational( ed, entry, i, (void *) p ); p = skip_nonspace( p ); } } } static void vips_exif_set_entry( ExifData *ed, ExifEntry *entry, unsigned long component, void *data ) { const char *string = (const char *) data; vips_exif_from_s( ed, entry, string ); } static void * vips_exif_image_field( VipsImage *image, const char *field, GValue *value, void *data ) { ExifData *ed = (ExifData *) data; const char *string; int ifd; const char *p; ExifTag tag; if( !vips_isprefix( "exif-ifd", field ) ) return( NULL ); /* value must be a string. */ if( vips_image_get_string( image, field, &string ) ) { g_warning( _( "bad exif meta \"%s\"" ), field ); return( NULL ); } p = field + strlen( "exif-ifd" ); ifd = atoi( p ); for( ; isdigit( *p ); p++ ) ; if( *p != '-' ) { g_warning( _( "bad exif meta \"%s\"" ), field ); return( NULL ); } if( !(tag = exif_tag_from_name( p + 1 )) ) { g_warning( _( "bad exif meta \"%s\"" ), field ); return( NULL ); } vips_exif_set_tag( ed, ifd, tag, vips_exif_set_entry, (void *) string ); return( NULL ); } typedef struct _VipsExifRemove { VipsImage *image; ExifData *ed; ExifContent *content; GSList *to_remove; } VipsExifRemove; static void vips_exif_exif_entry( ExifEntry *entry, VipsExifRemove *ve ) { const char *tag_name; char vips_name_txt[256]; VipsBuf vips_name = VIPS_BUF_STATIC( vips_name_txt ); if( !(tag_name = vips_exif_entry_get_name( entry )) ) return; vips_buf_appendf( &vips_name, "exif-ifd%d-%s", exif_entry_get_ifd( entry ), tag_name ); /* Does this field exist on the image? If not, schedule it for * removal. */ if( !vips_image_get_typeof( ve->image, vips_buf_all( &vips_name ) ) ) ve->to_remove = g_slist_prepend( ve->to_remove, entry ); /* Orientation is really set from the vips * VIPS_META_ORIENTATION tag. If that's been deleted, we must delete * any matching EXIF tags too. */ if( strcmp( tag_name, "Orientation" ) == 0 && vips_image_get_typeof( ve->image, VIPS_META_ORIENTATION ) ) ve->to_remove = g_slist_prepend( ve->to_remove, entry ); /* If this is a string tag, we must also remove it ready for * recreation, see the comment below. */ if( tag_is_encoding( entry->tag ) || tag_is_ascii( entry->tag ) || tag_is_utf16( entry->tag ) ) ve->to_remove = g_slist_prepend( ve->to_remove, entry ); } static void * vips_exif_exif_remove( ExifEntry *entry, VipsExifRemove *ve ) { #ifdef DEBUG { const char *tag_name; char vips_name_txt[256]; VipsBuf vips_name = VIPS_BUF_STATIC( vips_name_txt ); tag_name = vips_exif_entry_get_name( entry ); vips_buf_appendf( &vips_name, "exif-ifd%d-%s", exif_entry_get_ifd( entry ), tag_name ); printf( "vips_exif_exif_remove: %s\n", vips_buf_all( &vips_name ) ); } #endif /*DEBUG*/ exif_content_remove_entry( ve->content, entry ); return( NULL ); } static void vips_exif_exif_content( ExifContent *content, VipsExifRemove *ve ) { ve->content = content; ve->to_remove = NULL; exif_content_foreach_entry( content, (ExifContentForeachEntryFunc) vips_exif_exif_entry, ve ); vips_slist_map2( ve->to_remove, (VipsSListMap2Fn) vips_exif_exif_remove, ve, NULL ); VIPS_FREEF( g_slist_free, ve->to_remove ); } static void vips_exif_update( ExifData *ed, VipsImage *image ) { VipsExifRemove ve; VIPS_DEBUG_MSG( "vips_exif_update: \n" ); /* If this exif came from the image (rather than being an exif block we * have made afresh), then any fields which are in the block but not on * the image must have been deliberately removed. Remove them from the * block as well. * * If there are any string-valued fields (eg. comment etc.) which * exist as libvips metadata tags, we must also remove those from the * exif block. * * libexif does not allow you to change string lengths, you must make * new tags, so we have to remove ready to re-add. */ if( vips_image_get_typeof( image, VIPS_META_EXIF_NAME ) ) { ve.image = image; ve.ed = ed; exif_data_foreach_content( ed, (ExifDataForeachContentFunc) vips_exif_exif_content, &ve ); } /* Walk the image and add any exif- that's set in image metadata. */ vips_image_map( image, vips_exif_image_field, ed ); } /* Examine the metadata tags on the image and update the EXIF block. */ int vips__exif_update( VipsImage *image ) { unsigned char *data; size_t length; unsigned int idl; ExifData *ed; /* Either parse from the embedded EXIF, or if there's none, make * some fresh EXIF we can write the resolution to. */ if( vips_image_get_typeof( image, VIPS_META_EXIF_NAME ) ) { if( vips_image_get_blob( image, VIPS_META_EXIF_NAME, (void *) &data, &length ) ) return( -1 ); if( !(ed = exif_data_new_from_data( data, length )) ) return( -1 ); } else { ed = exif_data_new(); exif_data_set_option( ed, EXIF_DATA_OPTION_FOLLOW_SPECIFICATION ); exif_data_set_data_type( ed, EXIF_DATA_TYPE_COMPRESSED ); exif_data_set_byte_order( ed, EXIF_BYTE_ORDER_INTEL ); /* Create the mandatory EXIF fields with default data. */ exif_data_fix( ed ); } /* Update EXIF tags from the image metadata. */ vips_exif_update( ed, image ); /* Update EXIF resolution from the vips image header. */ if( vips_exif_resolution_from_image( ed, image ) ) { exif_data_free( ed ); return( -1 ); } /* Update EXIF image dimensions from the vips image header. */ if( vips_exif_set_dimensions( ed, image ) ) { exif_data_free( ed ); return( -1 ); } /* Update EXIF orientation from the vips image header. */ if( vips_exif_set_orientation( ed, image ) ) { exif_data_free( ed ); return( -1 ); } /* Update the thumbnail. */ if( vips_exif_set_thumbnail( ed, image ) ) { exif_data_free( ed ); return( -1 ); } /* Reserialise and write. exif_data_save_data() returns an int for some * reason. */ exif_data_save_data( ed, &data, &idl ); if( !idl ) { vips_error( "exif", "%s", _( "error saving EXIF" ) ); exif_data_free( ed ); return( -1 ); } length = idl; #ifdef DEBUG printf( "vips__exif_update: generated %zd bytes of EXIF\n", length ); #endif /*DEBUG*/ vips_image_set_blob( image, VIPS_META_EXIF_NAME, (VipsCallbackFn) vips_free, data, length ); exif_data_free( ed ); return( 0 ); } #else /*!HAVE_EXIF*/ int vips__exif_parse( VipsImage *image ) { return( 0 ); } int vips__exif_update( VipsImage *image ) { return( 0 ); } #endif /*!HAVE_EXIF*/ libvips-8.9.1/libvips/foreign/fits.c000066400000000000000000000431371361153320700174240ustar00rootroot00000000000000/* Read FITS files with cfitsio * * 26/10/10 * - from matlab.c * 27/10/10 * - oops, forgot to init status in close * 30/11/10 * - set RGB16/GREY16 if appropriate * - allow up to 10 dimensions as long as they are empty * 27/1/11 * - lazy read * 31/1/11 * - read in planes and combine with im_bandjoin() * - read whole tiles with fits_read_subset() when we can * 17/3/11 * - renames, updates etc. ready for adding fits write * - fits write! * 21/3/11 * - read/write metadata as whole records to avoid changing things * - cast input to a supported format * - bandsplit for write * 13/12/11 * - redo as a set of fns ready for wrapping in a new-style class * 23/6/13 * - fix ushort save with values >32k, thanks weaverwb * 4/1/17 * - load to equivalent data type, not raw image data type ... improves * support for BSCALE / BZERO settings * 17/1/17 * - invalidate operation on read error * 26/1/17 aferrero2707 * - use fits_open_diskfile(), not fits_open_file() ... we don't want the * extended filename syntax * 15/4/17 * - skip HDUs with zero dimensions, thanks benepo */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_CFITSIO #include #include #include #include #include #include #include #include "pforeign.h" /* TODO - ask Doug for a test colour image found WFPC2u5780205r_c0fx.fits on the fits samples page, but it's tiny - test performance - vips__fits_read() makes rather ugly bandjoins, fix */ /* vips only supports 3 dimensions, but we allow up to MAX_DIMENSIONS as long * as the higher dimensions are all empty. If you change this value, change * fits2vips_get_header() as well. */ #define MAX_DIMENSIONS (10) /* What we track during a cfitsio-file read or write. */ typedef struct { char *filename; VipsImage *image; fitsfile *fptr; int datatype; int naxis; long long int naxes[MAX_DIMENSIONS]; GMutex *lock; /* Lock fits_*() calls with this */ /* Set this to -1 to read all bands, or a +ve int to read a specific * band. */ int band_select; /* We split bands up for write into this buffer. */ VipsPel *buffer; } VipsFits; const char *vips__fits_suffs[] = { ".fits", ".fit", ".fts", NULL }; static void vips_fits_error( int status ) { char buf[80]; fits_get_errstatus( status, buf ); vips_error( "fits", "%s", buf ); } /* Shut down. Can be called many times. */ static void vips_fits_close( VipsFits *fits ) { VIPS_FREE( fits->filename ); VIPS_FREEF( vips_g_mutex_free, fits->lock ); if( fits->fptr ) { int status; status = 0; if( fits_close_file( fits->fptr, &status ) ) vips_fits_error( status ); fits->fptr = NULL; } VIPS_FREE( fits->buffer ); } static void vips_fits_close_cb( VipsImage *image, VipsFits *fits ) { vips_fits_close( fits ); } static VipsFits * vips_fits_new_read( const char *filename, VipsImage *out, int band_select ) { VipsFits *fits; int status; if( !(fits = VIPS_NEW( out, VipsFits )) ) return( NULL ); fits->filename = vips_strdup( NULL, filename ); fits->image = out; fits->fptr = NULL; fits->lock = NULL; fits->band_select = band_select; fits->buffer = NULL; g_signal_connect( out, "close", G_CALLBACK( vips_fits_close_cb ), fits ); status = 0; if( fits_open_diskfile( &fits->fptr, filename, READONLY, &status ) ) { vips_error( "fits", _( "unable to open \"%s\"" ), filename ); vips_fits_error( status ); return( NULL ); } fits->lock = vips_g_mutex_new(); return( fits ); } /* fits image types -> VIPS band formats. VIPS doesn't have 64-bit int, so no * entry for LONGLONG_IMG (64). */ static int fits2vips_formats[][3] = { { BYTE_IMG, VIPS_FORMAT_UCHAR, TBYTE }, { SHORT_IMG, VIPS_FORMAT_SHORT, TSHORT }, { USHORT_IMG, VIPS_FORMAT_USHORT, TUSHORT }, { LONG_IMG, VIPS_FORMAT_INT, TINT }, { ULONG_IMG, VIPS_FORMAT_UINT, TUINT }, { FLOAT_IMG, VIPS_FORMAT_FLOAT, TFLOAT }, { DOUBLE_IMG, VIPS_FORMAT_DOUBLE, TDOUBLE } }; static int vips_fits_get_header( VipsFits *fits, VipsImage *out ) { int status; int bitpix; int width, height, bands, format, type; int keysexist; int i; status = 0; /* Some FITS images have the first HDU for extra metadata ... skip * forward until we find a header unit we can load as an image. */ for(;;) { if( fits_get_img_paramll( fits->fptr, 10, &bitpix, &fits->naxis, fits->naxes, &status ) ) { vips_fits_error( status ); return( -1 ); } if( fits->naxis > 0 ) break; if( fits_movrel_hdu( fits->fptr, 1, NULL, &status ) ) { vips_fits_error( status ); vips_error( "fits", "%s", _( "no HDU found with naxes > 0" ) ); return( -1 ); } } /* cfitsio does automatic conversion from the format stored in * the file to the equivalent type after scale/offset. We need * to allocate a vips image of the equivalent type, not the original * type. */ if( fits_get_img_equivtype( fits->fptr, &bitpix, &status ) ) { vips_fits_error( status ); return( -1 ); } #ifdef VIPS_DEBUG VIPS_DEBUG_MSG( "naxis = %d\n", fits->naxis ); for( i = 0; i < fits->naxis; i++ ) VIPS_DEBUG_MSG( "%d) %lld\n", i, fits->naxes[i] ); VIPS_DEBUG_MSG( "fits2vips: bitpix = %d\n", bitpix ); #endif /*VIPS_DEBUG*/ height = 1; bands = 1; switch( fits->naxis ) { /* If you add more dimensions here, adjust data read below. See also * the definition of MAX_DIMENSIONS above. */ case 10: case 9: case 8: case 7: case 6: case 5: case 4: for( i = fits->naxis; i > 3; i-- ) if( fits->naxes[i - 1] != 1 ) { vips_error( "fits", "%s", _( "dimensions above 3 " "must be size 1" ) ); return( -1 ); } case 3: bands = fits->naxes[2]; case 2: height = fits->naxes[1]; case 1: width = fits->naxes[0]; break; default: vips_error( "fits", _( "bad number of axis %d" ), fits->naxis ); return( -1 ); } /* Are we in one-band mode? */ if( fits->band_select != -1 ) bands = 1; /* Get image format. This is the equivalent format, or the format * stored in the file. */ for( i = 0; i < VIPS_NUMBER( fits2vips_formats ); i++ ) if( fits2vips_formats[i][0] == bitpix ) break; if( i == VIPS_NUMBER( fits2vips_formats ) ) { vips_error( "fits", _( "unsupported bitpix %d\n" ), bitpix ); return( -1 ); } format = fits2vips_formats[i][1]; fits->datatype = fits2vips_formats[i][2]; if( bands == 1 ) { if( format == VIPS_FORMAT_USHORT ) type = VIPS_INTERPRETATION_GREY16; else type = VIPS_INTERPRETATION_B_W; } else if( bands == 3 ) { if( format == VIPS_FORMAT_USHORT ) type = VIPS_INTERPRETATION_RGB16; else type = VIPS_INTERPRETATION_sRGB; } else type = VIPS_INTERPRETATION_MULTIBAND; vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); vips_image_init_fields( out, width, height, bands, format, VIPS_CODING_NONE, type, 1.0, 1.0 ); /* Read all keys into meta. */ if( fits_get_hdrspace( fits->fptr, &keysexist, NULL, &status ) ) { vips_fits_error( status ); return( -1 ); } for( i = 0; i < keysexist; i++ ) { char record[81]; char vipsname[100]; if( fits_read_record( fits->fptr, i + 1, record, &status ) ) { vips_fits_error( status ); return( -1 ); } VIPS_DEBUG_MSG( "fits2vips: setting meta on vips image:\n" ); VIPS_DEBUG_MSG( " record == \"%s\"\n", record ); /* FITS lets keys repeat. For example, HISTORY appears many * times, each time with a fresh line of history attached. We * have to include the key index in the vips name we assign. */ vips_snprintf( vipsname, 100, "fits-%d", i ); vips_image_set_string( out, vipsname, record ); } return( 0 ); } int vips__fits_read_header( const char *filename, VipsImage *out ) { VipsFits *fits; VIPS_DEBUG_MSG( "fits2vips_header: reading \"%s\"\n", filename ); if( !(fits = vips_fits_new_read( filename, out, -1 )) || vips_fits_get_header( fits, out ) ) return( -1 ); return( 0 ); } static int vips_fits_read_subset( VipsFits *fits, long *fpixel, long *lpixel, long *inc, VipsPel *q ) { int status; /* We must zero this or fits_read_subset() fails. */ status = 0; /* Break on ffgsv() for this call. */ if( fits_read_subset( fits->fptr, fits->datatype, fpixel, lpixel, inc, NULL, q, NULL, &status ) ) { vips_fits_error( status ); vips_foreign_load_invalidate( fits->image ); return( -1 ); } return( 0 ); } static int fits2vips_generate( VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ) { VipsFits *fits = (VipsFits *) a; VipsRect *r = &out->valid; VipsPel *q; int z; long fpixel[MAX_DIMENSIONS]; long lpixel[MAX_DIMENSIONS]; long inc[MAX_DIMENSIONS]; VIPS_DEBUG_MSG( "fits2vips_generate: " "generating left = %d, top = %d, width = %d, height = %d\n", r->left, r->top, r->width, r->height ); /* Special case: the region we are writing to is exactly the width we * need, ie. we can read a rectangular area into it. */ if( VIPS_REGION_LSKIP( out ) == VIPS_REGION_SIZEOF_LINE( out ) ) { VIPS_DEBUG_MSG( "fits2vips_generate: block read\n" ); for( z = 0; z < MAX_DIMENSIONS; z++ ) fpixel[z] = 1; fpixel[0] = r->left + 1; fpixel[1] = r->top + 1; fpixel[2] = fits->band_select + 1; for( z = 0; z < MAX_DIMENSIONS; z++ ) lpixel[z] = 1; lpixel[0] = VIPS_RECT_RIGHT( r ); lpixel[1] = VIPS_RECT_BOTTOM( r ); lpixel[2] = fits->band_select + 1; for( z = 0; z < MAX_DIMENSIONS; z++ ) inc[z] = 1; q = VIPS_REGION_ADDR( out, r->left, r->top ); g_mutex_lock( fits->lock ); if( vips_fits_read_subset( fits, fpixel, lpixel, inc, q ) ) { g_mutex_unlock( fits->lock ); return( -1 ); } g_mutex_unlock( fits->lock ); } else { int y; for( y = r->top; y < VIPS_RECT_BOTTOM( r ); y ++ ) { for( z = 0; z < MAX_DIMENSIONS; z++ ) fpixel[z] = 1; fpixel[0] = r->left + 1; fpixel[1] = y + 1; fpixel[2] = fits->band_select + 1; for( z = 0; z < MAX_DIMENSIONS; z++ ) lpixel[z] = 1; lpixel[0] = VIPS_RECT_RIGHT( r ); lpixel[1] = y + 1; lpixel[2] = fits->band_select + 1; for( z = 0; z < MAX_DIMENSIONS; z++ ) inc[z] = 1; q = VIPS_REGION_ADDR( out, r->left, y ); g_mutex_lock( fits->lock ); if( vips_fits_read_subset( fits, fpixel, lpixel, inc, q ) ) { g_mutex_unlock( fits->lock ); return( -1 ); } g_mutex_unlock( fits->lock ); } } return( 0 ); } static int fits2vips( const char *filename, VipsImage *out, int band_select ) { VipsFits *fits; /* The -1 mode is just for reading the header. */ g_assert( band_select >= 0 ); if( !(fits = vips_fits_new_read( filename, out, band_select )) ) return( -1 ); if( vips_fits_get_header( fits, out ) || vips_image_generate( out, NULL, fits2vips_generate, NULL, fits, NULL ) ) { vips_fits_close( fits ); return( -1 ); } /* Don't vips_fits_close(), we need it to stick around for the * generate. */ return( 0 ); } int vips__fits_read( const char *filename, VipsImage *out ) { VipsImage *t; int n_bands; VIPS_DEBUG_MSG( "fits2vips: reading \"%s\"\n", filename ); /* fits is naturally a band-separated format. For single-band images * we can just read out. For many bands we read each band out * separately then join them. */ t = vips_image_new(); if( vips__fits_read_header( filename, t ) ) { g_object_unref( t ); return( -1 ); } n_bands = t->Bands; g_object_unref( t ); if( n_bands == 1 ) { if( fits2vips( filename, out, 0 ) ) return( -1 ); } else { VipsImage **x; int i; t = vips_image_new(); x = (VipsImage **) vips_object_local_array( VIPS_OBJECT( t ), n_bands + 1 ); for( i = 0; i < n_bands; i++ ) { x[i] = vips_image_new(); if( fits2vips( filename, x[i], i ) ) { g_object_unref( t ); return( -1 ); } } if( vips_bandjoin( x, &x[n_bands], n_bands, NULL ) || vips_image_write( x[n_bands], out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); } return( 0 ); } int vips__fits_isfits( const char *filename ) { fitsfile *fptr; int status; VIPS_DEBUG_MSG( "isfits: testing \"%s\"\n", filename ); status = 0; if( fits_open_diskfile( &fptr, filename, READONLY, &status ) ) { VIPS_DEBUG_MSG( "isfits: error reading \"%s\"\n", filename ); #ifdef VIPS_DEBUG vips_fits_error( status ); VIPS_DEBUG_MSG( "isfits: %s\n", vips_error_buffer() ); #endif /*VIPS_DEBUG*/ return( 0 ); } fits_close_file( fptr, &status ); return( 1 ); } static VipsFits * vips_fits_new_write( VipsImage *in, const char *filename ) { VipsFits *fits; int status; status = 0; if( !(fits = VIPS_NEW( in, VipsFits )) ) return( NULL ); fits->filename = vips_strdup( VIPS_OBJECT( in ), filename ); fits->image = in; fits->fptr = NULL; fits->lock = NULL; fits->band_select = -1; fits->buffer = NULL; g_signal_connect( in, "close", G_CALLBACK( vips_fits_close_cb ), fits ); if( !(fits->filename = vips_strdup( NULL, filename )) ) return( NULL ); /* We need to be able to hold one scanline of one band. */ if( !(fits->buffer = VIPS_ARRAY( NULL, VIPS_IMAGE_SIZEOF_ELEMENT( in ) * in->Xsize, VipsPel )) ) return( NULL ); /* fits_create_file() will fail if there's a file of thet name, unless * we put a "!" in front ofthe filename. This breaks conventions with * the rest of vips, so just unlink explicitly. */ g_unlink( filename ); if( fits_create_file( &fits->fptr, filename, &status ) ) { vips_error( "fits", _( "unable to write to \"%s\"" ), filename ); vips_fits_error( status ); return( NULL ); } fits->lock = vips_g_mutex_new(); return( fits ); } static void * vips_fits_write_meta( VipsImage *image, const char *field, GValue *value, void *a ) { VipsFits *fits = (VipsFits *) a; int status; const char *value_str; status = 0; /* We want fields which start "fits-". */ if( !vips_isprefix( "fits-", field ) ) return( NULL ); /* The value should be a refstring, since we wrote it in fits2vips * above ^^. */ value_str = vips_value_get_ref_string( value, NULL ); VIPS_DEBUG_MSG( "vips_fits_write_meta: setting meta on fits image:\n" ); VIPS_DEBUG_MSG( " value == \"%s\"\n", value_str ); if( fits_write_record( fits->fptr, value_str, &status ) ) { vips_fits_error( status ); return( a ); } return( NULL ); } static int vips_fits_set_header( VipsFits *fits, VipsImage *in ) { int status; int bitpix; int i; status = 0; fits->naxis = 3; fits->naxes[0] = in->Xsize; fits->naxes[1] = in->Ysize; fits->naxes[2] = in->Bands; for( i = 0; i < VIPS_NUMBER( fits2vips_formats ); i++ ) if( fits2vips_formats[i][1] == in->BandFmt ) break; if( i == VIPS_NUMBER( fits2vips_formats ) ) { vips_error( "fits", _( "unsupported BandFmt %d\n" ), in->BandFmt ); return( -1 ); } bitpix = fits2vips_formats[i][0]; fits->datatype = fits2vips_formats[i][2]; #ifdef VIPS_DEBUG VIPS_DEBUG_MSG( "naxis = %d\n", fits->naxis ); for( i = 0; i < fits->naxis; i++ ) VIPS_DEBUG_MSG( "%d) %lld\n", i, fits->naxes[i] ); VIPS_DEBUG_MSG( "bitpix = %d\n", bitpix ); #endif /*VIPS_DEBUG*/ if( fits_create_imgll( fits->fptr, bitpix, fits->naxis, fits->naxes, &status ) ) { vips_fits_error( status ); return( -1 ); } if( vips_image_map( in, (VipsImageMapFn) vips_fits_write_meta, fits ) ) return( -1 ); return( 0 ); } static int vips_fits_write( VipsRegion *region, VipsRect *area, void *a ) { VipsFits *fits = (VipsFits *) a; VipsImage *image = fits->image; int es = VIPS_IMAGE_SIZEOF_ELEMENT( image ); int ps = VIPS_IMAGE_SIZEOF_PEL( image ); int status; int y, b, x, k; status = 0; VIPS_DEBUG_MSG( "vips_fits_write: " "writing left = %d, top = %d, width = %d, height = %d\n", area->left, area->top, area->width, area->height ); /* We need to write a band at a time. We can't bandsplit in vips, * since vips_sink_disc() can't loop over many images at once, sadly. */ for( y = 0; y < area->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( region, area->left, area->top + y ); for( b = 0; b < image->Bands; b++ ) { VipsPel *p1, *q; long fpixel[3]; p1 = p + b * es; q = fits->buffer; for( x = 0; x < area->width; x++ ) { for( k = 0; k < es; k++ ) q[k] = p1[k]; q += es; p1 += ps; } fpixel[0] = area->left + 1; fpixel[1] = area->top + y + 1; fpixel[2] = b + 1; /* No need to lock, write functions are single-threaded. */ if( fits_write_pix( fits->fptr, fits->datatype, fpixel, area->width, fits->buffer, &status ) ) { vips_fits_error( status ); return( -1 ); } } } return( 0 ); } int vips__fits_write( VipsImage *in, const char *filename ) { VipsFits *fits; VIPS_DEBUG_MSG( "vips2fits: writing \"%s\"\n", filename ); if( !(fits = vips_fits_new_write( in, filename )) ) return( -1 ); if( vips_fits_set_header( fits, fits->image ) || vips_sink_disc( fits->image, vips_fits_write, fits ) ) { vips_fits_close( fits ); return( -1 ); } vips_fits_close( fits ); return( 0 ); } #endif /*HAVE_CFITSIO*/ libvips-8.9.1/libvips/foreign/fitsload.c000066400000000000000000000077551361153320700202720ustar00rootroot00000000000000/* load fits from a file * * 5/12/11 * - from openslideload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_CFITSIO #include "pforeign.h" typedef struct _VipsForeignLoadFits { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadFits; typedef VipsForeignLoadClass VipsForeignLoadFitsClass; G_DEFINE_TYPE( VipsForeignLoadFits, vips_foreign_load_fits, VIPS_TYPE_FOREIGN_LOAD ); static int vips_foreign_load_fits_header( VipsForeignLoad *load ) { VipsForeignLoadFits *fits = (VipsForeignLoadFits *) load; if( vips__fits_read_header( fits->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, fits->filename ); return( 0 ); } static int vips_foreign_load_fits_load( VipsForeignLoad *load ) { VipsForeignLoadFits *fits = (VipsForeignLoadFits *) load; VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( fits ), 2 ); t[0] = vips_image_new(); if( vips__fits_read( fits->filename, t[0] ) || vips_flip( t[0], &t[1], VIPS_DIRECTION_VERTICAL, NULL ) || vips_image_write( t[1], load->real ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_fits_class_init( VipsForeignLoadFitsClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "fitsload"; object_class->description = _( "load a FITS image" ); /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; foreign_class->suffs = vips__fits_suffs; load_class->is_a = vips__fits_isfits; load_class->header = vips_foreign_load_fits_header; load_class->load = vips_foreign_load_fits_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadFits, filename ), NULL ); } static void vips_foreign_load_fits_init( VipsForeignLoadFits *fits ) { } #endif /*HAVE_CFITSIO*/ /** * vips_fitsload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Read a FITS image file into a VIPS image. * * This operation can read images with up to three dimensions. Any higher * dimensions must be empty. * * It can read 8, 16 and 32-bit integer images, signed and unsigned, float and * double. * * FITS metadata is attached with the "fits-" prefix. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_fitsload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "fitsload", ap, filename, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/fitssave.c000066400000000000000000000105001361153320700202670ustar00rootroot00000000000000/* save to fits * * 2/12/11 * - wrap a class around the fits writer * 2/7/14 * - cache the image before write so we are sequential */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #ifdef HAVE_CFITSIO #include "pforeign.h" typedef struct _VipsForeignSaveFits { VipsForeignSave parent_object; /* Filename for save. */ char *filename; } VipsForeignSaveFits; typedef VipsForeignSaveClass VipsForeignSaveFitsClass; G_DEFINE_TYPE( VipsForeignSaveFits, vips_foreign_save_fits, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_fits_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveFits *fits = (VipsForeignSaveFits *) object; VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( fits ), 2 ); if( VIPS_OBJECT_CLASS( vips_foreign_save_fits_parent_class )-> build( object ) ) return( -1 ); /* FITS is written bottom-to-top, so we must flip. * * But all vips readers must work top-to-bottom (or vips_copy()'s seq * hint won't work) so we must cache the input image. * * We cache to RAM, but perhaps we should use something like * vips_get_disc_threshold() and copy to a tempfile. */ t[0] = vips_image_new_memory(); if( vips_image_write( save->ready, t[0] ) || vips_flip( t[0], &t[1], VIPS_DIRECTION_VERTICAL, NULL ) || vips__fits_write( t[1], fits->filename ) ) return( -1 ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int bandfmt_fits[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, UI, UI, F, X, D, DX }; static void vips_foreign_save_fits_class_init( VipsForeignSaveFitsClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "fitssave"; object_class->description = _( "save image to fits file" ); object_class->build = vips_foreign_save_fits_build; foreign_class->suffs = vips__fits_suffs; save_class->saveable = VIPS_SAVEABLE_ANY; save_class->format_table = bandfmt_fits; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveFits, filename ), NULL ); } static void vips_foreign_save_fits_init( VipsForeignSaveFits *fits ) { } #endif /*HAVE_CFITSIO*/ /** * vips_fitssave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Write a VIPS image to a file in FITS format. * * See also: vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_fitssave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "fitssave", ap, in, filename ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/foreign.c000066400000000000000000001674631361153320700201210ustar00rootroot00000000000000/* foreign file formats base class * * 7/2/12 * - add support for sequential reads * 18/6/12 * - flatten alpha with vips_flatten() * 28/5/13 * - auto rshift down to 8 bits during save * 19/1/14 * - pack and unpack rad to scrgb * 18/8/14 * - fix conversion to 16-bit RGB, thanks John * 18/6/15 * - forward progress signals from load * 23/5/16 * - remove max-alpha stuff, this is now automatic * 12/6/17 * - transform cmyk->rgb if there's an embedded profile * 16/6/17 * - add page_height * 1/1/18 * - META_SEQ support moved here * 5/3/18 * - block _start if one start fails, see #893 * 1/4/18 * - drop incompatible ICC profiles before save */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pforeign.h" /** * SECTION: foreign * @short_description: load and save images in a variety of formats * @stability: Stable * @see_also: image * @include: vips/vips.h * @title: VipsForeign * * This set of operations load and save images in a variety of formats. * * The operations share a base class that offers a simple way to search for a * subclass of #VipsForeign which can load a certain file (see * vips_foreign_find_load()) or buffer (see vips_foreign_find_load_buffer()), * or which could be used to save an image to a * certain file type (see vips_foreign_find_save() and * vips_foreign_find_save_buffer()). You can then run these * operations using vips_call() and friends to perform the load or save. * * vips_image_write_to_file() and vips_image_new_from_file() and friends use * these functions to automate file load and save. * * You can also invoke the operations directly, for example: * * |[ * vips_tiffsave (my_image, "frank.anything", * "compression", VIPS_FOREIGN_TIFF_COMPRESSION_JPEG, * NULL); * ]| * * To add support for a new file format to vips, simply define a new subclass * of #VipsForeignLoad or #VipsForeignSave. * * If you define a new operation which is a subclass of #VipsForeign, support * for it automatically appears in all VIPS user-interfaces. It will also be * transparently supported by vips_image_new_from_file() and friends. * * VIPS comes with VipsForeign for TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, * Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF and VIPS. It also includes * import filters which can load with libMagick and with OpenSlide. * * ## Writing a new loader * * Add a new loader to VIPS by subclassing #VipsForeignLoad. Subclasses need to * implement at least @header(). * * @header() must set at least the header fields of @out. @load(), if defined, * must load the pixels to @real. * * The suffix list is used to select a format to save a file in, and to pick a * loader if you don't define is_a(). * * You should also define @nickname and @description in #VipsObject. * * As a complete example, here's code for a PNG loader, minus the actual * calls to libpng. * * |[ * typedef struct _VipsForeignLoadPng { * VipsForeignLoad parent_object; * * char *filename; * } VipsForeignLoadPng; * * typedef VipsForeignLoadClass VipsForeignLoadPngClass; * * G_DEFINE_TYPE( VipsForeignLoadPng, vips_foreign_load_png, * VIPS_TYPE_FOREIGN_LOAD ); * * static VipsForeignFlags * vips_foreign_load_png_get_flags_filename( const char *filename ) * { * VipsForeignFlags flags; * * flags = 0; * if( vips__png_isinterlaced( filename ) ) * flags = VIPS_FOREIGN_PARTIAL; * else * flags = VIPS_FOREIGN_SEQUENTIAL; * * return( flags ); * } * * static VipsForeignFlags * vips_foreign_load_png_get_flags( VipsForeignLoad *load ) * { * VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; * * return( vips_foreign_load_png_get_flags_filename( png->filename ) ); * } * * static int * vips_foreign_load_png_header( VipsForeignLoad *load ) * { * VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; * * if( vips__png_header( png->filename, load->out ) ) * return( -1 ); * * return( 0 ); * } * * static int * vips_foreign_load_png_load( VipsForeignLoad *load ) * { * VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; * * if( vips__png_read( png->filename, load->real ) ) * return( -1 ); * * return( 0 ); * } * * static void * vips_foreign_load_png_class_init( VipsForeignLoadPngClass *class ) * { * GObjectClass *gobject_class = G_OBJECT_CLASS( class ); * VipsObjectClass *object_class = (VipsObjectClass *) class; * VipsForeignClass *foreign_class = (VipsForeignClass *) class; * VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; * * gobject_class->set_property = vips_object_set_property; * gobject_class->get_property = vips_object_get_property; * * object_class->nickname = "pngload"; * object_class->description = _( "load png from file" ); * * foreign_class->suffs = vips__png_suffs; * * load_class->is_a = vips__png_ispng; * load_class->get_flags_filename = * vips_foreign_load_png_get_flags_filename; * load_class->get_flags = vips_foreign_load_png_get_flags; * load_class->header = vips_foreign_load_png_header; * load_class->load = vips_foreign_load_png_load; * * VIPS_ARG_STRING( class, "filename", 1, * _( "Filename" ), * _( "Filename to load from" ), * VIPS_ARGUMENT_REQUIRED_INPUT, * G_STRUCT_OFFSET( VipsForeignLoadPng, filename ), * NULL ); * } * * static void * vips_foreign_load_png_init( VipsForeignLoadPng *png ) * { * } * ]| * * ## Writing a new saver * * Call your saver in the class' @build() method after chaining up. The * prepared image should be ready for you to save in @ready. * * As a complete example, here's the code for the CSV saver, minus the calls * to the actual save routines. * * |[ * typedef struct _VipsForeignSaveCsv { * VipsForeignSave parent_object; * * char *filename; * const char *separator; * } VipsForeignSaveCsv; * * typedef VipsForeignSaveClass VipsForeignSaveCsvClass; * * G_DEFINE_TYPE( VipsForeignSaveCsv, vips_foreign_save_csv, * VIPS_TYPE_FOREIGN_SAVE ); * * static int * vips_foreign_save_csv_build( VipsObject *object ) * { * VipsForeignSave *save = (VipsForeignSave *) object; * VipsForeignSaveCsv *csv = (VipsForeignSaveCsv *) object; * * if( VIPS_OBJECT_CLASS( vips_foreign_save_csv_parent_class )-> * build( object ) ) * return( -1 ); * * if( vips__csv_write( save->ready, csv->filename, csv->separator ) ) * return( -1 ); * * return( 0 ); * } * * static void * vips_foreign_save_csv_class_init( VipsForeignSaveCsvClass *class ) * { * GObjectClass *gobject_class = G_OBJECT_CLASS( class ); * VipsObjectClass *object_class = (VipsObjectClass *) class; * VipsForeignClass *foreign_class = (VipsForeignClass *) class; * VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; * * gobject_class->set_property = vips_object_set_property; * gobject_class->get_property = vips_object_get_property; * * object_class->nickname = "csvsave"; * object_class->description = _( "save image to csv file" ); * object_class->build = vips_foreign_save_csv_build; * * foreign_class->suffs = vips__foreign_csv_suffs; * * save_class->saveable = VIPS_SAVEABLE_MONO; * // no need to define ->format_table, we don't want the input * // cast for us * * VIPS_ARG_STRING( class, "filename", 1, * _( "Filename" ), * _( "Filename to save to" ), * VIPS_ARGUMENT_REQUIRED_INPUT, * G_STRUCT_OFFSET( VipsForeignSaveCsv, filename ), * NULL ); * * VIPS_ARG_STRING( class, "separator", 13, * _( "Separator" ), * _( "Separator characters" ), * VIPS_ARGUMENT_OPTIONAL_INPUT, * G_STRUCT_OFFSET( VipsForeignSaveCsv, separator ), * "\t" ); * } * * static void * vips_foreign_save_csv_init( VipsForeignSaveCsv *csv ) * { * csv->separator = g_strdup( "\t" ); * } * ]| */ /* Use this to link images to the load operation that made them. */ static GQuark vips__foreign_load_operation = 0; /** * VipsForeignFlags: * @VIPS_FOREIGN_NONE: no flags set * @VIPS_FOREIGN_PARTIAL: the image may be read lazilly * @VIPS_FOREIGN_BIGENDIAN: image pixels are most-significant byte first * @VIPS_FOREIGN_SEQUENTIAL: top-to-bottom lazy reading * * Some hints about the image loader. * * #VIPS_FOREIGN_PARTIAL means that the image can be read directly from the * file without needing to be unpacked to a temporary image first. * * #VIPS_FOREIGN_SEQUENTIAL means that the loader supports lazy reading, but * only top-to-bottom (sequential) access. Formats like PNG can read sets of * scanlines, for example, but only in order. * * If neither PARTIAL or SEQUENTIAL is set, the loader only supports whole * image read. Setting both PARTIAL and SEQUENTIAL is an error. * * #VIPS_FOREIGN_BIGENDIAN means that image pixels are most-significant byte * first. Depending on the native byte order of the host machine, you may * need to swap bytes. See vips_copy(). */ G_DEFINE_ABSTRACT_TYPE( VipsForeign, vips_foreign, VIPS_TYPE_OPERATION ); static void vips_foreign_summary_class( VipsObjectClass *object_class, VipsBuf *buf ) { VipsForeignClass *class = VIPS_FOREIGN_CLASS( object_class ); VIPS_OBJECT_CLASS( vips_foreign_parent_class )-> summary_class( object_class, buf ); if( class->suffs ) { const char **p; vips_buf_appends( buf, " (" ); for( p = class->suffs; *p; p++ ) { vips_buf_appendf( buf, "%s", *p ); if( p[1] ) vips_buf_appends( buf, ", " ); } vips_buf_appends( buf, ")" ); } vips_buf_appendf( buf, ", priority=%d", class->priority ); } static void vips_foreign_class_init( VipsForeignClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "foreign"; object_class->description = _( "load and save image files" ); object_class->summary_class = vips_foreign_summary_class; } static void vips_foreign_init( VipsForeign *object ) { } /* To iterate over supported files we build a temp list of subclasses of * VipsForeign, sort by priority, iterate, and free. */ static void * file_add_class( VipsForeignClass *class, GSList **files ) { /* Append so we don't reverse the list of files. Sort will not reorder * items of equal priority. */ *files = g_slist_append( *files, class ); return( NULL ); } static gint file_compare( VipsForeignClass *a, VipsForeignClass *b ) { return( b->priority - a->priority ); } /** * vips_foreign_map: * @base: base class to search below (eg. "VipsForeignLoad") * @fn: (scope call): function to apply to each #VipsForeignClass * @a: user data * @b: user data * * Apply a function to every #VipsForeignClass that VIPS knows about. Foreigns * are presented to the function in priority order. * * Like all VIPS map functions, if @fn returns %NULL, iteration continues. If * it returns non-%NULL, iteration terminates and that value is returned. The * map function returns %NULL if all calls return %NULL. * * See also: vips_slist_map(). * * Returns: (transfer none): the result of iteration */ void * vips_foreign_map( const char *base, VipsSListMap2Fn fn, void *a, void *b ) { GSList *files; void *result; files = NULL; (void) vips_class_map_all( g_type_from_name( base ), (VipsClassMapFn) file_add_class, (void *) &files ); files = g_slist_sort( files, (GCompareFunc) file_compare ); result = vips_slist_map2( files, fn, a, b ); g_slist_free( files ); return( result ); } /* Abstract base class for image load. */ G_DEFINE_ABSTRACT_TYPE( VipsForeignLoad, vips_foreign_load, VIPS_TYPE_FOREIGN ); static void vips_foreign_load_dispose( GObject *gobject ) { VipsForeignLoad *load = VIPS_FOREIGN_LOAD( gobject ); VIPS_UNREF( load->real ); G_OBJECT_CLASS( vips_foreign_load_parent_class )->dispose( gobject ); } static void vips_foreign_load_summary_class( VipsObjectClass *object_class, VipsBuf *buf ) { VipsForeignLoadClass *class = VIPS_FOREIGN_LOAD_CLASS( object_class ); VIPS_OBJECT_CLASS( vips_foreign_load_parent_class )-> summary_class( object_class, buf ); if( !G_TYPE_IS_ABSTRACT( G_TYPE_FROM_CLASS( class ) ) ) { if( class->is_a ) vips_buf_appends( buf, ", is_a" ); if( class->is_a_buffer ) vips_buf_appends( buf, ", is_a_buffer" ); if( class->is_a_source ) vips_buf_appends( buf, ", is_a_source" ); if( class->get_flags ) vips_buf_appends( buf, ", get_flags" ); if( class->get_flags_filename ) vips_buf_appends( buf, ", get_flags_filename" ); if( class->header ) vips_buf_appends( buf, ", header" ); if( class->load ) vips_buf_appends( buf, ", load" ); /* You can omit ->load(), you must not omit ->header(). */ g_assert( class->header ); } } /* Can this VipsForeign open this file? */ static void * vips_foreign_find_load_sub( VipsForeignLoadClass *load_class, const char *filename ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( load_class ); VipsForeignClass *class = VIPS_FOREIGN_CLASS( load_class ); #ifdef DEBUG printf( "vips_foreign_find_load_sub: %s\n", VIPS_OBJECT_CLASS( class )->nickname ); #endif /*DEBUG*/ if( load_class->is_a && !vips_ispostfix( object_class->nickname, "_buffer" ) && !vips_ispostfix( object_class->nickname, "_source" ) ) { if( load_class->is_a( filename ) ) return( load_class ); #ifdef DEBUG printf( "vips_foreign_find_load_sub: is_a failed\n" ); #endif /*DEBUG*/ } else if( class->suffs && vips_filename_suffix_match( filename, class->suffs ) ) return( load_class ); else { #ifdef DEBUG printf( "vips_foreign_find_load_sub: suffix match failed\n" ); #endif /*DEBUG*/ } return( NULL ); } /** * vips_foreign_find_load: * @filename: file to find a loader for * * Searches for an operation you could use to load @filename. Any trailing * options on @filename are stripped and ignored. * * See also: vips_foreign_find_load_buffer(), vips_image_new_from_file(). * * Returns: the name of an operation on success, %NULL on error */ const char * vips_foreign_find_load( const char *name ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; VipsForeignLoadClass *load_class; vips__filename_split8( name, filename, option_string ); /* Very common, so make a better error message for this case. */ if( !vips_existsf( "%s", filename ) ) { vips_error( "VipsForeignLoad", _( "file \"%s\" not found" ), name ); return( NULL ); } if( !(load_class = (VipsForeignLoadClass *) vips_foreign_map( "VipsForeignLoad", (VipsSListMap2Fn) vips_foreign_find_load_sub, (void *) filename, NULL )) ) { vips_error( "VipsForeignLoad", _( "\"%s\" is not a known file format" ), name ); return( NULL ); } #ifdef DEBUG printf( "vips_foreign_find_load: selected %s\n", VIPS_OBJECT_CLASS( load_class )->nickname ); #endif /*DEBUG*/ return( G_OBJECT_CLASS_NAME( load_class ) ); } /* Kept for compat with earlier version of the vip8 API. Use * vips_image_new_from_file() now. */ int vips_foreign_load( const char *name, VipsImage **out, ... ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; va_list ap; int result; vips__filename_split8( name, filename, option_string ); if( !(operation_name = vips_foreign_find_load( filename )) ) return( -1 ); va_start( ap, out ); result = vips_call_split_option_string( operation_name, option_string, ap, filename, out ); va_end( ap ); return( result ); } /* Can this VipsForeign open this buffer? */ static void * vips_foreign_find_load_buffer_sub( VipsForeignLoadClass *load_class, const void **buf, size_t *len ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( load_class ); if( load_class->is_a_buffer && vips_ispostfix( object_class->nickname, "_buffer" ) && load_class->is_a_buffer( *buf, *len ) ) return( load_class ); return( NULL ); } /** * vips_foreign_find_load_buffer: * @data: (array length=size) (element-type guint8) (transfer none): start of * memory buffer * @size: (type gsize): number of bytes in @data * * Searches for an operation you could use to load a memory buffer. To see the * range of buffer loaders supported by your vips, try something like: * * vips -l | grep load_buffer * * See also: vips_image_new_from_buffer(). * * Returns: (transfer none): the name of an operation on success, %NULL on * error. */ const char * vips_foreign_find_load_buffer( const void *data, size_t size ) { VipsForeignLoadClass *load_class; if( !(load_class = (VipsForeignLoadClass *) vips_foreign_map( "VipsForeignLoad", (VipsSListMap2Fn) vips_foreign_find_load_buffer_sub, &data, &size )) ) { vips_error( "VipsForeignLoad", "%s", _( "buffer is not in a known format" ) ); return( NULL ); } return( G_OBJECT_CLASS_NAME( load_class ) ); } /* Can this VipsForeign open this source? */ static void * vips_foreign_find_load_source_sub( void *item, void *a, void *b ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( item ); VipsForeignLoadClass *load_class = VIPS_FOREIGN_LOAD_CLASS( item ); VipsSource *source = VIPS_SOURCE( a ); if( load_class->is_a_source && vips_ispostfix( object_class->nickname, "_source" ) ) { /* We may have done a read() rather than a sniff() in one of * the is_a testers. Always rewind. */ (void) vips_source_rewind( source ); if( load_class->is_a_source( source ) ) return( load_class ); } return( NULL ); } /** * vips_foreign_find_load_source: * @source: source to load from * * Searches for an operation you could use to load a source. To see the * range of source loaders supported by your vips, try something like: * * vips -l | grep load_source * * See also: vips_image_new_from_source(). * * Returns: (transfer none): the name of an operation on success, %NULL on * error. */ const char * vips_foreign_find_load_source( VipsSource *source ) { VipsForeignLoadClass *load_class; if( !(load_class = (VipsForeignLoadClass *) vips_foreign_map( "VipsForeignLoad", vips_foreign_find_load_source_sub, source, NULL )) ) { vips_error( "VipsForeignLoad", "%s", _( "source is not in a known format" ) ); return( NULL ); } return( G_OBJECT_CLASS_NAME( load_class ) ); } /** * vips_foreign_is_a: * @loader: name of loader to use for test * @filename: file to test * * Return %TRUE if @filename can be loaded by @loader. @loader is something * like "tiffload" or "VipsForeignLoadTiff". * * Returns: %TRUE if @filename can be loaded by @loader. */ gboolean vips_foreign_is_a( const char *loader, const char *filename ) { const VipsObjectClass *class; VipsForeignLoadClass *load_class; if( !(class = vips_class_find( "VipsForeignLoad", loader )) ) return( FALSE ); load_class = VIPS_FOREIGN_LOAD_CLASS( class ); if( load_class->is_a && load_class->is_a( filename ) ) return( TRUE ); return( FALSE ); } /** * vips_foreign_is_a_buffer: * @loader: name of loader to use for test * @data: (array length=size) (element-type guint8): pointer to the buffer to test * @size: (type gsize): size of the buffer to test * * Return %TRUE if @data can be loaded by @loader. @loader is something * like "tiffload_buffer" or "VipsForeignLoadTiffBuffer". * * Returns: %TRUE if @data can be loaded by @loader. */ gboolean vips_foreign_is_a_buffer( const char *loader, const void *data, size_t size ) { const VipsObjectClass *class; VipsForeignLoadClass *load_class; if( !(class = vips_class_find( "VipsForeignLoad", loader )) ) return( FALSE ); load_class = VIPS_FOREIGN_LOAD_CLASS( class ); if( load_class->is_a_buffer && load_class->is_a_buffer( data, size ) ) return( TRUE ); return( FALSE ); } /** * vips_foreign_is_a_source: * @loader: name of loader to use for test * @source: source to test * * Return %TRUE if @source can be loaded by @loader. @loader is something * like "tiffload_source" or "VipsForeignLoadTiffSource". * * Returns: %TRUE if @data can be loaded by @source. */ gboolean vips_foreign_is_a_source( const char *loader, VipsSource *source ) { const VipsObjectClass *class; VipsForeignLoadClass *load_class; if( !(class = vips_class_find( "VipsForeignLoad", loader )) ) return( FALSE ); load_class = VIPS_FOREIGN_LOAD_CLASS( class ); if( load_class->is_a_source && load_class->is_a_source( source ) ) return( TRUE ); return( FALSE ); } /** * vips_foreign_flags: * @loader: name of loader to use for test * @filename: file to test * * Return the flags for @filename using @loader. * @loader is something like "tiffload" or "VipsForeignLoadTiff". * * Returns: the flags for @filename. */ VipsForeignFlags vips_foreign_flags( const char *loader, const char *filename ) { const VipsObjectClass *class; if( (class = vips_class_find( "VipsForeignLoad", loader )) ) { VipsForeignLoadClass *load_class = VIPS_FOREIGN_LOAD_CLASS( class ); if( load_class->get_flags_filename ) return( load_class->get_flags_filename( filename ) ); } return( 0 ); } static VipsObject * vips_foreign_load_new_from_string( const char *string ) { const char *file_op; GType type; VipsForeignLoad *load; if( !(file_op = vips_foreign_find_load( string )) ) return( NULL ); type = g_type_from_name( file_op ); g_assert( type ); load = VIPS_FOREIGN_LOAD( g_object_new( type, NULL ) ); g_object_set( load, "filename", string, NULL ); return( VIPS_OBJECT( load ) ); } static VipsImage * vips_foreign_load_temp( VipsForeignLoad *load ) { const guint64 disc_threshold = vips_get_disc_threshold(); const guint64 image_size = VIPS_IMAGE_SIZEOF_IMAGE( load->out ); /* ->memory used to be called ->disc and default TRUE. If it's been * forced FALSE, set memory TRUE. */ if( !load->disc ) load->memory = TRUE; if( load->memory ) { #ifdef DEBUG printf( "vips_foreign_load_temp: forced memory temp\n" ); #endif /*DEBUG*/ return( vips_image_new_memory() ); } /* If this is a partial operation, we can open directly. */ if( load->flags & VIPS_FOREIGN_PARTIAL ) { #ifdef DEBUG printf( "vips_foreign_load_temp: partial temp\n" ); #endif /*DEBUG*/ return( vips_image_new() ); } /* If it can do sequential access and it's been requested, we can open * directly. */ if( (load->flags & VIPS_FOREIGN_SEQUENTIAL) && load->access != VIPS_ACCESS_RANDOM ) { #ifdef DEBUG printf( "vips_foreign_load_temp: partial sequential temp\n" ); #endif /*DEBUG*/ return( vips_image_new() ); } /* We open via disc if the uncompressed image will be larger than * vips_get_disc_threshold() */ if( image_size > disc_threshold ) { #ifdef DEBUG printf( "vips_foreign_load_temp: disc temp\n" ); #endif /*DEBUG*/ return( vips_image_new_temp_file( "%s.v" ) ); } #ifdef DEBUG printf( "vips_foreign_load_temp: fallback memory temp\n" ); #endif /*DEBUG*/ /* Otherwise, fall back to a memory buffer. */ return( vips_image_new_memory() ); } /* Check two images for compatibility: their geometries need to match. */ static gboolean vips_foreign_load_iscompat( VipsImage *a, VipsImage *b ) { if( a->Xsize != b->Xsize || a->Ysize != b->Ysize || a->Bands != b->Bands || a->Coding != b->Coding || a->BandFmt != b->BandFmt ) { vips_error( "VipsForeignLoad", "%s", _( "images do not match" ) ); return( FALSE ); } return( TRUE ); } /* Our start function ... do the lazy open, if necessary, and return a region * on the new image. */ static void * vips_foreign_load_start( VipsImage *out, void *a, void *b ) { VipsForeignLoad *load = VIPS_FOREIGN_LOAD( b ); VipsForeignLoadClass *class = VIPS_FOREIGN_LOAD_GET_CLASS( load ); /* If this start has failed before in another thread, we can fail now. */ if( load->error ) return( NULL ); if( !load->real ) { if( !(load->real = vips_foreign_load_temp( load )) ) return( NULL ); #ifdef DEBUG printf( "vips_foreign_load_start: triggering ->load()\n" ); #endif /*DEBUG*/ /* Read the image in. This may involve a long computation and * will finish with load->real holding the decompressed image. * * We want our caller to be able to see this computation on * @out, so eval signals on ->real need to appear on ->out. */ load->real->progress_signal = load->out; /* Note the load object on the image. Loaders can use * this to signal invalidate if they hit a load error. See * vips_foreign_load_invalidate() below. */ g_object_set_qdata( G_OBJECT( load->real ), vips__foreign_load_operation, load ); /* Load the image and check the result. * * ->header() read the header into @out, load will read the * image into @real. They must match exactly in size, bands, * format and coding for the copy to work. * * Some versions of ImageMagick give different results between * Ping and Load for some formats, for example. * * If the load fails, we need to stop */ if( class->load( load ) || vips_image_pio_input( load->real ) || !vips_foreign_load_iscompat( load->real, out ) ) { vips_operation_invalidate( VIPS_OPERATION( load ) ); load->error = TRUE; return( NULL ); } /* We have to tell vips that out depends on real. We've set * the demand hint below, but not given an input there. */ vips_image_pipelinev( load->out, load->out->dhint, load->real, NULL ); } return( vips_region_new( load->real ) ); } /* Just pointer-copy. */ static int vips_foreign_load_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; /* Ask for input we need. */ if( vips_region_prepare( ir, r ) ) return( -1 ); /* Attach output region to that. */ if( vips_region_region( or, ir, r, r->left, r->top ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsForeignLoad *load = VIPS_FOREIGN_LOAD( object ); VipsForeignLoadClass *fclass = VIPS_FOREIGN_LOAD_GET_CLASS( object ); VipsForeignFlags flags; gboolean sequential; #ifdef DEBUG printf( "vips_foreign_load_build:\n" ); #endif /*DEBUG*/ flags = 0; if( fclass->get_flags ) flags |= fclass->get_flags( load ); if( (flags & VIPS_FOREIGN_PARTIAL) && (flags & VIPS_FOREIGN_SEQUENTIAL) ) { g_warning( "%s", _( "VIPS_FOREIGN_PARTIAL and VIPS_FOREIGN_SEQUENTIAL " "both set -- using SEQUENTIAL" ) ); flags ^= VIPS_FOREIGN_PARTIAL; } g_object_set( load, "flags", flags, NULL ); /* Seq access has been requested and the loader supports seq. */ sequential = (load->flags & VIPS_FOREIGN_SEQUENTIAL) && load->access != VIPS_ACCESS_RANDOM; /* We must block caching of seq loads. */ if( sequential ) load->nocache = TRUE; if( VIPS_OBJECT_CLASS( vips_foreign_load_parent_class )-> build( object ) ) return( -1 ); if( load->sequential ) g_warning( "%s", _( "ignoring deprecated \"sequential\" mode -- " "please use \"access\" instead" ) ); g_object_set( object, "out", vips_image_new(), NULL ); vips_image_set_string( load->out, VIPS_META_LOADER, class->nickname ); #ifdef DEBUG printf( "vips_foreign_load_build: triggering ->header()\n" ); #endif /*DEBUG*/ /* Read the header into @out. */ if( fclass->header && fclass->header( load ) ) return( -1 ); /* If there's no ->load() method then the header read has done * everything. Otherwise, it's just set fields and we must also * load pixels. * * Delay the load until the first pixel is requested by doing the work * in the start function of the copy. */ if( fclass->load ) { #ifdef DEBUG printf( "vips_foreign_load_build: delaying read ...\n" ); #endif /*DEBUG*/ /* ->header() should set the dhint. It'll default to the safe * SMALLTILE if header() did not set it. */ vips_image_pipelinev( load->out, load->out->dhint, NULL ); /* Then 'start' creates the real image and 'gen' fetches * pixels for @out from @real on demand. */ if( vips_image_generate( load->out, vips_foreign_load_start, vips_foreign_load_generate, vips_stop_one, NULL, load ) ) return( -1 ); } /* Tell downstream if we are reading sequentially. */ if( sequential ) vips_image_set_area( load->out, VIPS_META_SEQUENTIAL, NULL, NULL ); return( 0 ); } static VipsOperationFlags vips_foreign_load_operation_get_flags( VipsOperation *operation ) { VipsForeignLoad *load = VIPS_FOREIGN_LOAD( operation ); VipsOperationFlags flags; flags = VIPS_OPERATION_CLASS( vips_foreign_load_parent_class )-> get_flags( operation ); if( load->nocache ) flags |= VIPS_OPERATION_NOCACHE; return( flags ); } static void vips_foreign_load_class_init( VipsForeignLoadClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = (VipsOperationClass *) class; gobject_class->dispose = vips_foreign_load_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->build = vips_foreign_load_build; object_class->summary_class = vips_foreign_load_summary_class; object_class->new_from_string = vips_foreign_load_new_from_string; object_class->nickname = "fileload"; object_class->description = _( "file loaders" ); operation_class->get_flags = vips_foreign_load_operation_get_flags; VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignLoad, out ) ); VIPS_ARG_FLAGS( class, "flags", 106, _( "Flags" ), _( "Flags for this file" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsForeignLoad, flags ), VIPS_TYPE_FOREIGN_FLAGS, VIPS_FOREIGN_NONE ); VIPS_ARG_BOOL( class, "memory", 107, _( "Memory" ), _( "Force open via memory" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoad, memory ), FALSE ); VIPS_ARG_ENUM( class, "access", 108, _( "Access" ), _( "Required access pattern for this file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoad, access ), VIPS_TYPE_ACCESS, VIPS_ACCESS_RANDOM ); VIPS_ARG_BOOL( class, "sequential", 109, _( "Sequential" ), _( "Sequential read only" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignLoad, sequential ), FALSE ); VIPS_ARG_BOOL( class, "fail", 110, _( "Fail" ), _( "Fail on first error" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoad, fail ), FALSE ); VIPS_ARG_BOOL( class, "disc", 111, _( "Disc" ), _( "Open to disc" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignLoad, disc ), TRUE ); } static void vips_foreign_load_init( VipsForeignLoad *load ) { load->disc = TRUE; load->access = VIPS_ACCESS_RANDOM; } /* * Loaders can call this */ /** * vips_foreign_load_invalidate: (method) * @image: image to invalidate * * Loaders can call this on the image they are making if they see a read error * from the load library. It signals "invalidate" on the load operation and * will cause it to be dropped from cache. * * If we know a file will cause a read error, we don't want to cache the * failing operation, we want to make sure the image will really be opened * again if our caller tries again. For example, a broken file might be * replaced by a working one. */ void vips_foreign_load_invalidate( VipsImage *image ) { VipsOperation *operation; #ifdef DEBUG printf( "vips_foreign_load_invalidate: %p\n", image ); #endif /*DEBUG*/ if( (operation = g_object_get_qdata( G_OBJECT( image ), vips__foreign_load_operation )) ) { vips_operation_invalidate( operation ); } } /* Abstract base class for image savers. */ G_DEFINE_ABSTRACT_TYPE( VipsForeignSave, vips_foreign_save, VIPS_TYPE_FOREIGN ); static void vips_foreign_save_dispose( GObject *gobject ) { VipsForeignSave *save = VIPS_FOREIGN_SAVE( gobject ); VIPS_UNREF( save->ready ); G_OBJECT_CLASS( vips_foreign_save_parent_class )->dispose( gobject ); } static void vips_foreign_save_summary_class( VipsObjectClass *object_class, VipsBuf *buf ) { VipsForeignSaveClass *class = VIPS_FOREIGN_SAVE_CLASS( object_class ); VIPS_OBJECT_CLASS( vips_foreign_save_parent_class )-> summary_class( object_class, buf ); vips_buf_appendf( buf, ", %s", vips_enum_nick( VIPS_TYPE_SAVEABLE, class->saveable ) ); } static VipsObject * vips_foreign_save_new_from_string( const char *string ) { const char *file_op; GType type; VipsForeignSave *save; if( !(file_op = vips_foreign_find_save( string )) ) return( NULL ); type = g_type_from_name( file_op ); g_assert( type ); save = VIPS_FOREIGN_SAVE( g_object_new( type, NULL ) ); g_object_set( save, "filename", string, NULL ); return( VIPS_OBJECT( save ) ); } /* Convert an image for saving. */ int vips__foreign_convert_saveable( VipsImage *in, VipsImage **ready, VipsSaveable saveable, VipsBandFormat *format, VipsCoding *coding, VipsArrayDouble *background ) { /* in holds a reference to the output of our chain as we build it. */ g_object_ref( in ); /* For coded images, can this class save the coding we are in now? * Nothing to do. */ if( in->Coding != VIPS_CODING_NONE && coding[in->Coding] ) { *ready = in; return( 0 ); } /* For uncoded images, if this saver supports ANY bands and this * format we have nothing to do. */ if( in->Coding == VIPS_CODING_NONE && saveable == VIPS_SAVEABLE_ANY && format[in->BandFmt] == in->BandFmt ) { *ready = in; return( 0 ); } /* Otherwise ... we need to decode and then (possibly) recode at the * end. */ /* If this is an VIPS_CODING_LABQ, we can go straight to RGB. */ if( in->Coding == VIPS_CODING_LABQ ) { VipsImage *out; if( vips_LabQ2sRGB( in, &out, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* If this is an VIPS_CODING_RAD, we unpack to float. This could be * scRGB or XYZ. */ if( in->Coding == VIPS_CODING_RAD ) { VipsImage *out; if( vips_rad2float( in, &out, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* If the saver supports RAD, we need to go to scRGB or XYZ. */ if( coding[VIPS_CODING_RAD] ) { if( in->Type != VIPS_INTERPRETATION_scRGB && in->Type != VIPS_INTERPRETATION_XYZ ) { VipsImage *out; if( vips_colourspace( in, &out, VIPS_INTERPRETATION_scRGB, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } } /* If this image is CMYK and the saver is RGB-only, use lcms to try to * import to XYZ. This will only work if the image has an embedded * profile. */ if( in->Type == VIPS_INTERPRETATION_CMYK && in->Bands >= 4 && (saveable == VIPS_SAVEABLE_RGB || saveable == VIPS_SAVEABLE_RGBA || saveable == VIPS_SAVEABLE_RGBA_ONLY) ) { VipsImage *out; if( vips_icc_import( in, &out, "pcs", VIPS_PCS_XYZ, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* If this is something other than CMYK or RAD, eg. maybe a LAB image, * we need to transform to RGB. */ if( !coding[VIPS_CODING_RAD] && in->Bands >= 3 && in->Type != VIPS_INTERPRETATION_CMYK && vips_colourspace_issupported( in ) && (saveable == VIPS_SAVEABLE_RGB || saveable == VIPS_SAVEABLE_RGBA || saveable == VIPS_SAVEABLE_RGBA_ONLY || saveable == VIPS_SAVEABLE_RGB_CMYK) ) { VipsImage *out; VipsInterpretation interpretation; /* Do we make RGB or RGB16? We don't want to squash a 16-bit * RGB down to 8 bits if the saver supports 16. */ if( vips_band_format_is8bit( format[in->BandFmt] ) ) interpretation = VIPS_INTERPRETATION_sRGB; else interpretation = VIPS_INTERPRETATION_RGB16; if( vips_colourspace( in, &out, interpretation, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* VIPS_SAVEABLE_RGBA_ONLY does not support 1 or 2 bands ... convert * to sRGB. */ if( !coding[VIPS_CODING_RAD] && in->Bands < 3 && vips_colourspace_issupported( in ) && saveable == VIPS_SAVEABLE_RGBA_ONLY ) { VipsImage *out; VipsInterpretation interpretation; /* Do we make RGB or RGB16? We don't want to squash a 16-bit * RGB down to 8 bits if the saver supports 16. */ if( vips_band_format_is8bit( format[in->BandFmt] ) ) interpretation = VIPS_INTERPRETATION_sRGB; else interpretation = VIPS_INTERPRETATION_RGB16; if( vips_colourspace( in, &out, interpretation, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* Get the bands right. We must do this after all colourspace * transforms, since they can change the number of bands. */ if( in->Coding == VIPS_CODING_NONE ) { /* Do we need to flatten out an alpha channel? There needs to * be an alpha there now, and this writer needs to not support * alpha. */ if( (in->Bands == 2 || (in->Bands == 4 && in->Type != VIPS_INTERPRETATION_CMYK)) && (saveable == VIPS_SAVEABLE_MONO || saveable == VIPS_SAVEABLE_RGB || saveable == VIPS_SAVEABLE_RGB_CMYK) ) { VipsImage *out; if( vips_flatten( in, &out, "background", background, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* Other alpha removal strategies ... just drop the extra * bands. */ else if( in->Bands > 3 && (saveable == VIPS_SAVEABLE_RGB || (saveable == VIPS_SAVEABLE_RGB_CMYK && in->Type != VIPS_INTERPRETATION_CMYK)) ) { VipsImage *out; /* Don't let 4 bands though unless the image really is * a CMYK. * * Consider a RGBA png being saved as JPG. We can * write CMYK jpg, but we mustn't do that for RGBA * images. */ if( vips_extract_band( in, &out, 0, "n", 3, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } else if( in->Bands > 4 && ((saveable == VIPS_SAVEABLE_RGB_CMYK && in->Type == VIPS_INTERPRETATION_CMYK) || saveable == VIPS_SAVEABLE_RGBA || saveable == VIPS_SAVEABLE_RGBA_ONLY) ) { VipsImage *out; if( vips_extract_band( in, &out, 0, "n", 4, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } else if( in->Bands > 1 && saveable == VIPS_SAVEABLE_MONO ) { VipsImage *out; if( vips_extract_band( in, &out, 0, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* Else we have VIPS_SAVEABLE_ANY and we don't chop bands down. */ } /* Handle the ushort interpretations. * * RGB16 and GREY16 use 0-65535 for black-white. If we have an image * tagged like this, and it has more than 8 bits (we leave crazy uchar * images tagged as RGB16 alone), we'll need to get it ready for the * saver. */ if( (in->Type == VIPS_INTERPRETATION_RGB16 || in->Type == VIPS_INTERPRETATION_GREY16) && !vips_band_format_is8bit( in->BandFmt ) ) { /* If the saver supports ushort, cast to ushort. It may be * float at the moment, for example. * * If the saver does not support ushort, automatically shift * it down. This is the behaviour we want for saving an RGB16 * image as JPG, for example. */ if( format[VIPS_FORMAT_USHORT] == VIPS_FORMAT_USHORT ) { VipsImage *out; if( vips_cast( in, &out, VIPS_FORMAT_USHORT, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } else { VipsImage *out; if( vips_rshift_const1( in, &out, 8, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; /* That could have produced an int image ... make sure * we are now uchar. */ if( vips_cast( in, &out, VIPS_FORMAT_UCHAR, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } } /* Cast to the output format. */ { VipsImage *out; if( vips_cast( in, &out, format[in->BandFmt], NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* Does this class want a coded image? Search the coding table for the * first one. */ if( coding[VIPS_CODING_NONE] ) { /* Already NONE, nothing to do. */ } else if( coding[VIPS_CODING_LABQ] ) { VipsImage *out; if( vips_Lab2LabQ( in, &out, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } else if( coding[VIPS_CODING_RAD] ) { VipsImage *out; if( vips_float2rad( in, &out, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* Some format libraries, like libpng, will throw a hard error if the * profile is inappropriate for this image type. With profiles inherited * from a source image, this can happen all the time, so we * want to silently drop the profile in this case. */ if( vips_image_get_typeof( in, VIPS_META_ICC_NAME ) ) { const void *data; size_t length; if( !vips_image_get_blob( in, VIPS_META_ICC_NAME, &data, &length ) && !vips_icc_is_compatible_profile( in, data, length ) ) { VipsImage *out; if( vips_copy( in, &out, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; vips_image_remove( in, VIPS_META_ICC_NAME ); } } *ready = in; return( 0 ); } static int vips_foreign_save_build( VipsObject *object ) { VipsForeignSave *save = VIPS_FOREIGN_SAVE( object ); if( save->in ) { VipsForeignSaveClass *class = VIPS_FOREIGN_SAVE_GET_CLASS( save ); VipsImage *ready; if( vips__foreign_convert_saveable( save->in, &ready, class->saveable, class->format_table, class->coding, save->background ) ) return( -1 ); if( save->page_height ) vips_image_set_int( ready, VIPS_META_PAGE_HEIGHT, save->page_height ); VIPS_UNREF( save->ready ); save->ready = ready; } if( VIPS_OBJECT_CLASS( vips_foreign_save_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int vips_foreign_save_format_table[10] = { // UC C US S UI I F X D DX UC, C, US, S, UI, I, F, X, D, DX }; static void vips_foreign_save_class_init( VipsForeignSaveClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = (VipsOperationClass *) class; int i; gobject_class->dispose = vips_foreign_save_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->build = vips_foreign_save_build; object_class->summary_class = vips_foreign_save_summary_class; object_class->new_from_string = vips_foreign_save_new_from_string; object_class->nickname = "filesave"; object_class->description = _( "file savers" ); /* All savers are sequential by definition. Things like tiled tiff * write and interlaced png write, which are not, add extra caches * on their input. */ operation_class->flags |= VIPS_OPERATION_SEQUENTIAL; /* Must not cache savers. */ operation_class->flags |= VIPS_OPERATION_NOCACHE; /* Default to no coding allowed. */ for( i = 0; i < VIPS_CODING_LAST; i++ ) class->coding[i] = FALSE; class->coding[VIPS_CODING_NONE] = TRUE; /* Default to no cast on save. */ class->format_table = vips_foreign_save_format_table; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Image to save" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSave, in ) ); VIPS_ARG_BOOL( class, "strip", 100, _( "Strip" ), _( "Strip all metadata from image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSave, strip ), FALSE ); VIPS_ARG_BOXED( class, "background", 101, _( "Background" ), _( "Background value" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSave, background ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_INT( class, "page_height", 102, _( "Page height" ), _( "Set page height for multipage save" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSave, page_height ), 0, VIPS_MAX_COORD, 0 ); } static void vips_foreign_save_init( VipsForeignSave *save ) { save->background = vips_array_double_newv( 1, 0.0 ); } /* Can we write this filename with this class? */ static void * vips_foreign_find_save_sub( VipsForeignSaveClass *save_class, const char *filename ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( save_class ); VipsForeignClass *class = VIPS_FOREIGN_CLASS( save_class ); /* The suffs might be defined on an abstract base class, make sure we * don't pick that. * * Suffs can be defined on buffer and target writers too. Make sure * it's not one of those. */ if( !G_TYPE_IS_ABSTRACT( G_TYPE_FROM_CLASS( class ) ) && !vips_ispostfix( object_class->nickname, "_buffer" ) && !vips_ispostfix( object_class->nickname, "_target" ) && class->suffs && vips_filename_suffix_match( filename, class->suffs ) ) return( save_class ); return( NULL ); } /** * vips_foreign_find_save: * @filename: name to find a saver for * * Searches for an operation you could use to write to @filename. * Any trailing options on @filename are stripped and ignored. * * See also: vips_foreign_find_save_buffer(), vips_image_write_to_file(). * * Returns: the name of an operation on success, %NULL on error */ const char * vips_foreign_find_save( const char *name ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; VipsForeignSaveClass *save_class; vips__filename_split8( name, filename, option_string ); if( !(save_class = (VipsForeignSaveClass *) vips_foreign_map( "VipsForeignSave", (VipsSListMap2Fn) vips_foreign_find_save_sub, (void *) filename, NULL )) ) { vips_error( "VipsForeignSave", _( "\"%s\" is not a known file format" ), name ); return( NULL ); } return( G_OBJECT_CLASS_NAME( save_class ) ); } static void * vips_foreign_get_suffixes_count_cb( VipsForeignSaveClass *save_class, void *a, void *b ) { VipsForeignClass *foreign_class = VIPS_FOREIGN_CLASS( save_class ); int *n_fields = (int *) a; int i; if( foreign_class->suffs ) for( i = 0; foreign_class->suffs[i]; i++ ) *n_fields += 1; return( NULL ); } static void * vips_foreign_get_suffixes_add_cb( VipsForeignSaveClass *save_class, void *a, void *b ) { VipsForeignClass *foreign_class = VIPS_FOREIGN_CLASS( save_class ); gchar ***p = (gchar ***) a; int i; if( foreign_class->suffs ) for( i = 0; foreign_class->suffs[i]; i++ ) { **p = g_strdup( foreign_class->suffs[i] ); *p += 1; } return( NULL ); } /** * vips_foreign_get_suffixes: (method) * * Get a %NULL-terminated array listing all the supported suffixes. * * This is not the same as all the supported file types, since libvips * detects image format for load by testing the first few bytes. * * Use vips_foreign_find_load() to detect type for a specific file. * * Free the return result with g_strfreev(). * * Returns: (transfer full): all supported file extensions, as a * %NULL-terminated array. */ gchar ** vips_foreign_get_suffixes( void ) { int n_suffs; gchar **suffs; gchar **p; n_suffs = 0; (void) vips_foreign_map( "VipsForeignSave", (VipsSListMap2Fn) vips_foreign_get_suffixes_count_cb, &n_suffs, NULL ); suffs = g_new0( gchar *, n_suffs + 1 ); p = suffs; (void) vips_foreign_map( "VipsForeignSave", (VipsSListMap2Fn) vips_foreign_get_suffixes_add_cb, &p, NULL ); return( suffs ); } /* Kept for early vips8 API compat. */ int vips_foreign_save( VipsImage *in, const char *name, ... ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; va_list ap; int result; vips__filename_split8( name, filename, option_string ); if( !(operation_name = vips_foreign_find_save( filename )) ) return( -1 ); va_start( ap, name ); result = vips_call_split_option_string( operation_name, option_string, ap, in, filename ); va_end( ap ); return( result ); } /* Can this class write this filetype to a target? */ static void * vips_foreign_find_save_target_sub( VipsForeignSaveClass *save_class, const char *suffix ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( save_class ); VipsForeignClass *class = VIPS_FOREIGN_CLASS( save_class ); if( class->suffs && vips_ispostfix( object_class->nickname, "_target" ) && vips_filename_suffix_match( suffix, class->suffs ) ) return( save_class ); return( NULL ); } /** * vips_foreign_find_save_target: * @suffix: format to find a saver for * * Searches for an operation you could use to write to a target in @suffix * format. * * See also: vips_image_write_to_buffer(). * * Returns: the name of an operation on success, %NULL on error */ const char * vips_foreign_find_save_target( const char *name ) { char suffix[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; VipsForeignSaveClass *save_class; vips__filename_split8( name, suffix, option_string ); if( !(save_class = (VipsForeignSaveClass *) vips_foreign_map( "VipsForeignSave", (VipsSListMap2Fn) vips_foreign_find_save_target_sub, (void *) suffix, NULL )) ) { vips_error( "VipsForeignSave", _( "\"%s\" is not a known target format" ), name ); return( NULL ); } return( G_OBJECT_CLASS_NAME( save_class ) ); } /* Can we write this buffer with this file type? */ static void * vips_foreign_find_save_buffer_sub( VipsForeignSaveClass *save_class, const char *suffix ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( save_class ); VipsForeignClass *class = VIPS_FOREIGN_CLASS( save_class ); if( class->suffs && vips_ispostfix( object_class->nickname, "_buffer" ) && vips_filename_suffix_match( suffix, class->suffs ) ) return( save_class ); return( NULL ); } /** * vips_foreign_find_save_buffer: * @suffix: name to find a saver for * * Searches for an operation you could use to write to a buffer in @suffix * format. * * See also: vips_image_write_to_buffer(). * * Returns: the name of an operation on success, %NULL on error */ const char * vips_foreign_find_save_buffer( const char *name ) { char suffix[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; VipsForeignSaveClass *save_class; vips__filename_split8( name, suffix, option_string ); if( !(save_class = (VipsForeignSaveClass *) vips_foreign_map( "VipsForeignSave", (VipsSListMap2Fn) vips_foreign_find_save_buffer_sub, (void *) suffix, NULL )) ) { vips_error( "VipsForeignSave", _( "\"%s\" is not a known buffer format" ), name ); return( NULL ); } return( G_OBJECT_CLASS_NAME( save_class ) ); } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_foreign_operation_init( void ) { extern GType vips_foreign_load_rad_file_get_type( void ); extern GType vips_foreign_load_rad_buffer_get_type( void ); extern GType vips_foreign_load_rad_source_get_type( void ); extern GType vips_foreign_save_rad_file_get_type( void ); extern GType vips_foreign_save_rad_buffer_get_type( void ); extern GType vips_foreign_save_rad_target_get_type( void ); extern GType vips_foreign_load_mat_get_type( void ); extern GType vips_foreign_load_ppm_file_get_type( void ); extern GType vips_foreign_save_ppm_file_get_type( void ); extern GType vips_foreign_load_png_file_get_type( void ); extern GType vips_foreign_load_png_buffer_get_type( void ); extern GType vips_foreign_load_png_source_get_type( void ); extern GType vips_foreign_save_png_file_get_type( void ); extern GType vips_foreign_save_png_buffer_get_type( void ); extern GType vips_foreign_save_png_target_get_type( void ); extern GType vips_foreign_load_csv_get_type( void ); extern GType vips_foreign_save_csv_get_type( void ); extern GType vips_foreign_load_matrix_get_type( void ); extern GType vips_foreign_save_matrix_get_type( void ); extern GType vips_foreign_print_matrix_get_type( void ); extern GType vips_foreign_load_fits_get_type( void ); extern GType vips_foreign_save_fits_get_type( void ); extern GType vips_foreign_load_analyze_get_type( void ); extern GType vips_foreign_load_openexr_get_type( void ); extern GType vips_foreign_load_openslide_get_type( void ); extern GType vips_foreign_load_jpeg_file_get_type( void ); extern GType vips_foreign_load_jpeg_buffer_get_type( void ); extern GType vips_foreign_load_jpeg_source_get_type( void ); extern GType vips_foreign_save_jpeg_file_get_type( void ); extern GType vips_foreign_save_jpeg_buffer_get_type( void ); extern GType vips_foreign_save_jpeg_target_get_type( void ); extern GType vips_foreign_save_jpeg_mime_get_type( void ); extern GType vips_foreign_load_tiff_file_get_type( void ); extern GType vips_foreign_load_tiff_buffer_get_type( void ); extern GType vips_foreign_load_tiff_source_get_type( void ); extern GType vips_foreign_save_tiff_file_get_type( void ); extern GType vips_foreign_save_tiff_buffer_get_type( void ); extern GType vips_foreign_load_vips_get_type( void ); extern GType vips_foreign_save_vips_get_type( void ); extern GType vips_foreign_load_raw_get_type( void ); extern GType vips_foreign_save_raw_get_type( void ); extern GType vips_foreign_save_raw_fd_get_type( void ); extern GType vips_foreign_load_magick_file_get_type( void ); extern GType vips_foreign_load_magick_buffer_get_type( void ); extern GType vips_foreign_load_magick7_file_get_type( void ); extern GType vips_foreign_load_magick7_buffer_get_type( void ); extern GType vips_foreign_save_magick_file_get_type( void ); extern GType vips_foreign_save_magick_buffer_get_type( void ); extern GType vips_foreign_save_dz_file_get_type( void ); extern GType vips_foreign_save_dz_buffer_get_type( void ); extern GType vips_foreign_load_webp_file_get_type( void ); extern GType vips_foreign_load_webp_buffer_get_type( void ); extern GType vips_foreign_load_webp_source_get_type( void ); extern GType vips_foreign_save_webp_file_get_type( void ); extern GType vips_foreign_save_webp_buffer_get_type( void ); extern GType vips_foreign_save_webp_target_get_type( void ); extern GType vips_foreign_load_pdf_get_type( void ); extern GType vips_foreign_load_pdf_file_get_type( void ); extern GType vips_foreign_load_pdf_buffer_get_type( void ); extern GType vips_foreign_load_svg_file_get_type( void ); extern GType vips_foreign_load_svg_buffer_get_type( void ); extern GType vips_foreign_load_svg_source_get_type( void ); extern GType vips_foreign_load_heif_file_get_type( void ); extern GType vips_foreign_load_heif_buffer_get_type( void ); extern GType vips_foreign_save_heif_get_type( void ); extern GType vips_foreign_save_heif_file_get_type( void ); extern GType vips_foreign_save_heif_buffer_get_type( void ); extern GType vips_foreign_load_nifti_get_type( void ); extern GType vips_foreign_save_nifti_get_type( void ); extern GType vips_foreign_load_gif_file_get_type( void ); extern GType vips_foreign_load_gif_buffer_get_type( void ); vips_foreign_load_csv_get_type(); vips_foreign_save_csv_get_type(); vips_foreign_load_matrix_get_type(); vips_foreign_save_matrix_get_type(); vips_foreign_print_matrix_get_type(); vips_foreign_load_raw_get_type(); vips_foreign_save_raw_get_type(); vips_foreign_save_raw_fd_get_type(); vips_foreign_load_vips_get_type(); vips_foreign_save_vips_get_type(); #ifdef HAVE_ANALYZE vips_foreign_load_analyze_get_type(); #endif /*HAVE_ANALYZE*/ #ifdef HAVE_PPM vips_foreign_load_ppm_file_get_type(); vips_foreign_save_ppm_file_get_type(); #endif /*HAVE_PPM*/ #ifdef HAVE_RADIANCE vips_foreign_load_rad_file_get_type(); vips_foreign_load_rad_buffer_get_type(); vips_foreign_load_rad_source_get_type(); vips_foreign_save_rad_file_get_type(); vips_foreign_save_rad_buffer_get_type(); vips_foreign_save_rad_target_get_type(); #endif /*HAVE_RADIANCE*/ #ifdef HAVE_POPPLER vips_foreign_load_pdf_get_type(); vips_foreign_load_pdf_file_get_type(); vips_foreign_load_pdf_buffer_get_type(); #endif /*HAVE_POPPLER*/ #ifdef HAVE_PDFIUM vips_foreign_load_pdf_get_type(); vips_foreign_load_pdf_file_get_type(); vips_foreign_load_pdf_buffer_get_type(); #endif /*HAVE_PDFIUM*/ #ifdef HAVE_RSVG vips_foreign_load_svg_file_get_type(); vips_foreign_load_svg_buffer_get_type(); vips_foreign_load_svg_source_get_type(); #endif /*HAVE_RSVG*/ #ifdef HAVE_GIFLIB vips_foreign_load_gif_file_get_type(); vips_foreign_load_gif_buffer_get_type(); #endif /*HAVE_GIFLIB*/ #ifdef HAVE_GSF vips_foreign_save_dz_file_get_type(); vips_foreign_save_dz_buffer_get_type(); #endif /*HAVE_GSF*/ #ifdef HAVE_PNG vips_foreign_load_png_file_get_type(); vips_foreign_load_png_buffer_get_type(); vips_foreign_load_png_source_get_type(); vips_foreign_save_png_file_get_type(); vips_foreign_save_png_buffer_get_type(); vips_foreign_save_png_target_get_type(); #endif /*HAVE_PNG*/ #ifdef HAVE_MATIO vips_foreign_load_mat_get_type(); #endif /*HAVE_MATIO*/ #ifdef HAVE_JPEG vips_foreign_load_jpeg_file_get_type(); vips_foreign_load_jpeg_buffer_get_type(); vips_foreign_load_jpeg_source_get_type(); vips_foreign_save_jpeg_file_get_type(); vips_foreign_save_jpeg_buffer_get_type(); vips_foreign_save_jpeg_target_get_type(); vips_foreign_save_jpeg_mime_get_type(); #endif /*HAVE_JPEG*/ #ifdef HAVE_LIBWEBP vips_foreign_load_webp_file_get_type(); vips_foreign_load_webp_buffer_get_type(); vips_foreign_load_webp_source_get_type(); vips_foreign_save_webp_file_get_type(); vips_foreign_save_webp_buffer_get_type(); vips_foreign_save_webp_target_get_type(); #endif /*HAVE_LIBWEBP*/ #ifdef HAVE_TIFF vips_foreign_load_tiff_file_get_type(); vips_foreign_load_tiff_buffer_get_type(); vips_foreign_load_tiff_source_get_type(); vips_foreign_save_tiff_file_get_type(); vips_foreign_save_tiff_buffer_get_type(); #endif /*HAVE_TIFF*/ #ifdef HAVE_OPENSLIDE vips_foreign_load_openslide_get_type(); #endif /*HAVE_OPENSLIDE*/ #ifdef ENABLE_MAGICKLOAD #ifdef HAVE_MAGICK6 vips_foreign_load_magick_file_get_type(); vips_foreign_load_magick_buffer_get_type(); #endif /*HAVE_MAGICK6*/ #ifdef HAVE_MAGICK7 vips_foreign_load_magick7_file_get_type(); vips_foreign_load_magick7_buffer_get_type(); #endif /*HAVE_MAGICK7*/ #endif /*ENABLE_MAGICKLOAD*/ #ifdef ENABLE_MAGICKSAVE vips_foreign_save_magick_file_get_type(); vips_foreign_save_magick_buffer_get_type(); #endif /*ENABLE_MAGICKSAVE*/ #ifdef HAVE_CFITSIO vips_foreign_load_fits_get_type(); vips_foreign_save_fits_get_type(); #endif /*HAVE_CFITSIO*/ #ifdef HAVE_OPENEXR vips_foreign_load_openexr_get_type(); #endif /*HAVE_OPENEXR*/ #ifdef HAVE_NIFTI vips_foreign_load_nifti_get_type(); vips_foreign_save_nifti_get_type(); #endif /*HAVE_NIFTI*/ #ifdef HAVE_HEIF_DECODER vips_foreign_load_heif_file_get_type(); vips_foreign_load_heif_buffer_get_type(); #endif /*HAVE_HEIF_DECODER*/ #ifdef HAVE_HEIF_ENCODER vips_foreign_save_heif_file_get_type(); vips_foreign_save_heif_buffer_get_type(); #endif /*HAVE_HEIF_ENCODER*/ vips__foreign_load_operation = g_quark_from_static_string( "vips-foreign-load-operation" ); } libvips-8.9.1/libvips/foreign/gifload.c000066400000000000000000001161761361153320700200700ustar00rootroot00000000000000/* load a GIF with giflib * * 10/2/16 * - from svgload.c * 25/4/16 * - add giflib5 support * 26/7/16 * - transparency was wrong if there was no EXTENSION_RECORD * - write 1, 2, 3, or 4 bands depending on file contents * 17/8/16 * - support unicode on win * 19/8/16 * - better transparency detection, thanks diegocsandrim * 25/11/16 * - support @n, page-height * 5/10/17 * - colormap can be missing thanks Kleis * 21/11/17 * - add "gif-delay", "gif-loop", "gif-comment" metadata * - add dispose handling * 13/8/18 * - init pages to 0 before load * 14/2/19 * - rework as a sequential loader ... simpler, much lower mem use * 6/7/19 [deftomat] * - support array of delays * 24/7/19 * - close early on minimise * - close early on error * 23/8/18 * - allow GIF read errors during header scan * - better feof() handling * 27/8/19 * - check image and frame bounds, since giflib does not * 1/9/19 * - improve early close again */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_GIFLIB #include /* giflib 5 is rather different :-( functions have error returns and there's * no LastError(). * * GIFLIB_MAJOR was introduced in 4.1.6. Use it to test for giflib 5.x. */ #ifdef GIFLIB_MAJOR # if GIFLIB_MAJOR > 4 # define HAVE_GIFLIB_5 # endif #endif /* Added in giflib5. */ #ifndef HAVE_GIFLIB_5 #define DISPOSAL_UNSPECIFIED 0 #define DISPOSE_DO_NOT 1 #define DISPOSE_BACKGROUND 2 #define DISPOSE_PREVIOUS 3 #endif #define VIPS_TYPE_FOREIGN_LOAD_GIF (vips_foreign_load_gif_get_type()) #define VIPS_FOREIGN_LOAD_GIF( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FOREIGN_LOAD_GIF, VipsForeignLoadGif )) #define VIPS_FOREIGN_LOAD_GIF_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FOREIGN_LOAD_GIF, VipsForeignLoadGifClass)) #define VIPS_IS_FOREIGN_LOAD_GIF( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN_LOAD_GIF )) #define VIPS_IS_FOREIGN_LOAD_GIF_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN_LOAD_GIF )) #define VIPS_FOREIGN_LOAD_GIF_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FOREIGN_LOAD_GIF, VipsForeignLoadGifClass )) typedef struct _VipsForeignLoadGif { VipsForeignLoad parent_object; /* Load from this page (frame number). */ int page; /* Load this many pages. */ int n; GifFileType *file; /* We decompress the whole thing to a huge RGBA memory image, and * as we render, watch for bands and transparency. At the end of * loading, we copy 1 or 3 bands, with or without transparency to * output. */ gboolean has_transparency; gboolean has_colour; /* Delays between frames (in milliseconds). */ int *delays; int delays_length; /* Number of times to loop the animation. */ int loop; /* The GIF comment, if any. */ char *comment; /* The number of pages (frame) in the image. */ int n_pages; /* A memory image the sized of one frame ... we accumulate to this as * we scan the image, and copy lines to the output on generate. */ VipsImage *frame; /* A copy of the previous frame, in case we need a DISPOSE_PREVIOUS. */ VipsImage *previous; /* The position of @frame, in pages. */ int current_page; /* Decompress lines of the gif file to here. */ GifPixelType *line; /* The current dispose method. */ int dispose; /* Set for EOF detected. */ gboolean eof; /* The current cmap unpacked to a simple LUT. Each uint32 is really an * RGBA pixel ready to be blasted into @frame. */ guint32 cmap[256]; /* As we scan the file, the index of the transparent pixel for this * frame. */ int transparency; /* Params for DGifOpen(). Set by subclasses, called by base class in * _open(). */ InputFunc read_func; } VipsForeignLoadGif; typedef struct _VipsForeignLoadGifClass { VipsForeignLoadClass parent_class; /* Open the reader (eg. the FILE we are reading from). giflib is * created in _header and freed in _dispose. */ int (*open)( VipsForeignLoadGif *gif ); /* Rewind the reader, eg. fseek() back to the start. */ void (*rewind)( VipsForeignLoadGif *gif ); /* Close the reader. */ void (*close)( VipsForeignLoadGif *gif ); } VipsForeignLoadGifClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadGif, vips_foreign_load_gif, VIPS_TYPE_FOREIGN_LOAD ); /* From gif2rgb.c ... offsets and jumps for interlaced GIF images. */ static int InterlacedOffset[] = { 0, 4, 2, 1 }, InterlacedJumps[] = { 8, 8, 4, 2 }; /* giflib4 was missing this. */ static const char * vips_foreign_load_gif_errstr( int error_code ) { #ifdef HAVE_GIFLIB_5 return( GifErrorString( error_code ) ); #else /*!HAVE_GIFLIB_5*/ switch( error_code ) { case D_GIF_ERR_OPEN_FAILED: return( _( "Failed to open given file" ) ); case D_GIF_ERR_READ_FAILED: return( _( "Failed to read from given file" ) ); case D_GIF_ERR_NOT_GIF_FILE: return( _( "Data is not a GIF file" ) ); case D_GIF_ERR_NO_SCRN_DSCR: return( _( "No screen descriptor detected" ) ); case D_GIF_ERR_NO_IMAG_DSCR: return( _( "No image descriptor detected" ) ); case D_GIF_ERR_NO_COLOR_MAP: return( _( "Neither global nor local color map" ) ); case D_GIF_ERR_WRONG_RECORD: return( _( "Wrong record type detected" ) ); case D_GIF_ERR_DATA_TOO_BIG: return( _( "Number of pixels bigger than width * height" ) ); case D_GIF_ERR_NOT_ENOUGH_MEM: return( _( "Failed to allocate required memory" ) ); case D_GIF_ERR_CLOSE_FAILED: return( _( "Failed to close given file" ) ); case D_GIF_ERR_NOT_READABLE: return( _( "Given file was not opened for read" ) ); case D_GIF_ERR_IMAGE_DEFECT: return( _( "Image is defective, decoding aborted" ) ); case D_GIF_ERR_EOF_TOO_SOON: return( _( "Image EOF detected, before image complete" ) ); default: return( _( "Unknown error" ) ); } #endif /*HAVE_GIFLIB_5*/ } static void vips_foreign_load_gif_error_vips( VipsForeignLoadGif *gif, int error ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( gif ); const char *message; if( (message = vips_foreign_load_gif_errstr( error )) ) vips_error( class->nickname, "%s", message ); } static void vips_foreign_load_gif_error( VipsForeignLoadGif *gif ) { int error; error = 0; #ifdef HAVE_GIFLIB_5 if( gif->file ) error = gif->file->Error; #else error = GifLastError(); #endif if( error ) vips_foreign_load_gif_error_vips( gif, error ); } /* Shut down giflib plus any underlying file resource. */ static int vips_foreign_load_gif_close_giflib( VipsForeignLoadGif *gif ) { VipsForeignLoadGifClass *class = VIPS_FOREIGN_LOAD_GIF_GET_CLASS( gif ); VIPS_DEBUG_MSG( "vips_foreign_load_gif_close_giflib:\n" ); #ifdef HAVE_GIFLIB_5 if( gif->file ) { int error; if( DGifCloseFile( gif->file, &error ) == GIF_ERROR ) { vips_foreign_load_gif_error_vips( gif, error ); gif->file = NULL; return( -1 ); } gif->file = NULL; } #else if( gif->file ) { if( DGifCloseFile( gif->file ) == GIF_ERROR ) { vips_foreign_load_gif_error_vips( gif, GifLastError() ); gif->file = NULL; return( -1 ); } gif->file = NULL; } #endif class->close( gif ); return( 0 ); } /* Open any underlying file resource, then giflib. */ static int vips_foreign_load_gif_open_giflib( VipsForeignLoadGif *gif ) { VipsForeignLoadGifClass *class = VIPS_FOREIGN_LOAD_GIF_GET_CLASS( gif ); VIPS_DEBUG_MSG( "vips_foreign_load_gif_open_giflib:\n" ); if( class->open( gif ) ) return( -1 ); /* Must always rewind before opening giflib again. */ class->rewind( gif ); #ifdef HAVE_GIFLIB_5 { int error; if( !(gif->file = DGifOpen( gif, gif->read_func, &error )) ) { vips_foreign_load_gif_error_vips( gif, error ); (void) vips_foreign_load_gif_close_giflib( gif ); return( -1 ); } } #else if( !(gif->file = DGifOpen( gif, gif->read_func )) ) { vips_foreign_load_gif_error_vips( gif, GifLastError() ); (void) vips_foreign_load_gif_close_giflib( gif ); return( -1 ); } #endif gif->eof = FALSE; gif->current_page = 0; return( 0 ); } static void vips_foreign_load_gif_dispose( GObject *gobject ) { VipsForeignLoadGif *gif = (VipsForeignLoadGif *) gobject; VIPS_DEBUG_MSG( "vips_foreign_load_gif_dispose:\n" ); vips_foreign_load_gif_close_giflib( gif ); VIPS_UNREF( gif->frame ); VIPS_UNREF( gif->previous ); VIPS_FREE( gif->comment ); VIPS_FREE( gif->line ); VIPS_FREE( gif->delays ); G_OBJECT_CLASS( vips_foreign_load_gif_parent_class )-> dispose( gobject ); } static VipsForeignFlags vips_foreign_load_gif_get_flags_filename( const char *filename ) { return( VIPS_FOREIGN_SEQUENTIAL ); } static VipsForeignFlags vips_foreign_load_gif_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_SEQUENTIAL ); } static gboolean vips_foreign_load_gif_is_a_buffer( const void *buf, size_t len ) { const guchar *str = (const guchar *) buf; if( len >= 4 && str[0] == 'G' && str[1] == 'I' && str[2] == 'F' && str[3] == '8' ) return( 1 ); return( 0 ); } static gboolean vips_foreign_load_gif_is_a( const char *filename ) { unsigned char buf[4]; if( vips__get_bytes( filename, buf, 4 ) == 4 && vips_foreign_load_gif_is_a_buffer( buf, 4 ) ) return( 1 ); return( 0 ); } /* Make sure delays is allocated and large enough. */ static void vips_foreign_load_gif_allocate_delays( VipsForeignLoadGif *gif ) { if( gif->n_pages >= gif->delays_length ) { int old = gif->delays_length; int i; gif->delays_length = gif->delays_length + gif->n_pages + 64; gif->delays = (int *) g_realloc( gif->delays, gif->delays_length * sizeof( int ) ); for( i = old; i < gif->delays_length; i++ ) gif->delays[i] = 40; } } static int vips_foreign_load_gif_ext_next( VipsForeignLoadGif *gif, GifByteType **extension ) { if( DGifGetExtensionNext( gif->file, extension ) == GIF_ERROR ) { vips_foreign_load_gif_error( gif ); return( -1 ); } if( *extension ) VIPS_DEBUG_MSG( "gifload: EXTENSION_NEXT\n" ); return( 0 ); } static int vips_foreign_load_gif_code_next( VipsForeignLoadGif *gif, GifByteType **extension ) { if( DGifGetCodeNext( gif->file, extension ) == GIF_ERROR ) { vips_foreign_load_gif_error( gif ); return( -1 ); } if( *extension ) VIPS_DEBUG_MSG( "gifload: CODE_NEXT\n" ); return( 0 ); } /* Quickly scan an image record. */ static int vips_foreign_load_gif_scan_image( VipsForeignLoadGif *gif ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( gif ); GifFileType *file = gif->file; ColorMapObject *map; GifByteType *extension; if( DGifGetImageDesc( gif->file ) == GIF_ERROR ) { vips_foreign_load_gif_error( gif ); return( -1 ); } /* Check that the frame looks sane. Perhaps giflib checks * this for us. */ if( file->Image.Left < 0 || file->Image.Width < 1 || file->Image.Width > 10000 || file->Image.Left + file->Image.Width > file->SWidth || file->Image.Top < 0 || file->Image.Height < 1 || file->Image.Height > 10000 || file->Image.Top + file->Image.Height > file->SHeight ) { vips_error( class->nickname, "%s", _( "bad frame size" ) ); return( -1 ); } /* Test for a non-greyscale colourmap for this frame. */ map = file->Image.ColorMap ? file->Image.ColorMap : file->SColorMap; if( !gif->has_colour && map ) { int i; for( i = 0; i < map->ColorCount; i++ ) if( map->Colors[i].Red != map->Colors[i].Green || map->Colors[i].Green != map->Colors[i].Blue ) { gif->has_colour = TRUE; break; } } /* Step over compressed image data. */ do { if( vips_foreign_load_gif_code_next( gif, &extension ) ) return( -1 ); } while( extension != NULL ); return( 0 ); } static int vips_foreign_load_gif_scan_application_ext( VipsForeignLoadGif *gif, GifByteType *extension ) { gboolean have_netscape; /* The 11-byte NETSCAPE extension. */ have_netscape = FALSE; if( extension[0] == 11 && vips_isprefix( "NETSCAPE2.0", (const char*) (extension + 1) ) ) have_netscape = TRUE; while( extension != NULL ) { if( vips_foreign_load_gif_ext_next( gif, &extension ) ) return( -1 ); if( have_netscape && extension && extension[0] == 3 && extension[1] == 1 ) { gif->loop = extension[2] | (extension[3] << 8); if( gif->loop != 0 ) gif->loop += 1; } } return( 0 ); } static int vips_foreign_load_gif_scan_comment_ext( VipsForeignLoadGif *gif, GifByteType *extension ) { VIPS_DEBUG_MSG( "gifload: type: comment\n" ); if( !gif->comment ) { /* Up to 257 with a NULL terminator. */ char comment[257]; vips_strncpy( comment, (char *) (extension + 1), 256 ); comment[extension[0]] = '\0'; gif->comment = g_strdup( comment ); } while( extension != NULL ) if( vips_foreign_load_gif_ext_next( gif, &extension ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_gif_scan_extension( VipsForeignLoadGif *gif ) { GifByteType *extension; int ext_code; if( DGifGetExtension( gif->file, &ext_code, &extension ) == GIF_ERROR ) { vips_foreign_load_gif_error( gif ); return( -1 ); } if( extension ) switch( ext_code ) { case GRAPHICS_EXT_FUNC_CODE: if( extension[0] == 4 && extension[1] & 0x1 ) { VIPS_DEBUG_MSG( "gifload: has transp.\n" ); gif->has_transparency = TRUE; } /* giflib uses centiseconds, we use ms. */ gif->delays[gif->n_pages] = (extension[2] | (extension[3] << 8)) * 10; while( extension != NULL ) if( vips_foreign_load_gif_ext_next( gif, &extension ) ) return( -1 ); break; case APPLICATION_EXT_FUNC_CODE: if( vips_foreign_load_gif_scan_application_ext( gif, extension ) ) return( -1 ); break; case COMMENT_EXT_FUNC_CODE: if( vips_foreign_load_gif_scan_comment_ext( gif, extension ) ) return( -1 ); break; default: /* Step over any NEXT blocks for unknown extensions. */ while( extension != NULL ) if( vips_foreign_load_gif_ext_next( gif, &extension ) ) return( -1 ); break; } return( 0 ); } static int vips_foreign_load_gif_set_header( VipsForeignLoadGif *gif, VipsImage *image ) { vips_image_init_fields( image, gif->file->SWidth, gif->file->SHeight * gif->n, (gif->has_colour ? 3 : 1) + (gif->has_transparency ? 1 : 0), VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, gif->has_colour ? VIPS_INTERPRETATION_sRGB : VIPS_INTERPRETATION_B_W, 1.0, 1.0 ); vips_image_pipelinev( image, VIPS_DEMAND_STYLE_FATSTRIP, NULL ); if( vips_object_argument_isset( VIPS_OBJECT( gif ), "n" ) ) vips_image_set_int( image, VIPS_META_PAGE_HEIGHT, gif->file->SHeight ); vips_image_set_int( image, VIPS_META_N_PAGES, gif->n_pages ); vips_image_set_int( image, "loop", gif->loop ); /* DEPRECATED "gif-loop" * * Not the correct behavior as loop=1 became gif-loop=0 * but we want to keep the old behavior untouched! */ vips_image_set_int( image, "gif-loop", gif->loop == 0 ? 0 : gif->loop - 1 ); if( gif->delays ) { /* The deprecated gif-delay field is in centiseconds. */ vips_image_set_int( image, "gif-delay", VIPS_RINT( gif->delays[0] / 10.0 ) ); vips_image_set_array_int( image, "delay", gif->delays, gif->n_pages ); } else vips_image_set_int( image, "gif-delay", 4 ); if( gif->comment ) vips_image_set_string( image, "gif-comment", gif->comment ); return( 0 ); } /* Attempt to quickly scan a GIF and discover what we need for our header. We * need to scan the whole file to get n_pages, transparency and colour. * * Don't flag errors during header scan. Many GIFs do not follow spec. */ static int vips_foreign_load_gif_scan( VipsForeignLoadGif *gif ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( gif ); GifRecordType record; VIPS_DEBUG_MSG( "vips_foreign_load_gif_scan:\n" ); gif->n_pages = 0; do { if( DGifGetRecordType( gif->file, &record ) == GIF_ERROR ) continue; switch( record ) { case IMAGE_DESC_RECORD_TYPE: (void) vips_foreign_load_gif_scan_image( gif ); gif->n_pages += 1; vips_foreign_load_gif_allocate_delays( gif ); break; case EXTENSION_RECORD_TYPE: /* We need to fetch the extensions to check for * cmaps and transparency. */ (void) vips_foreign_load_gif_scan_extension( gif ); break; case TERMINATE_RECORD_TYPE: gif->eof = TRUE; break; case SCREEN_DESC_RECORD_TYPE: case UNDEFINED_RECORD_TYPE: break; default: break; } } while( !gif->eof ); if( gif->n == -1 ) gif->n = gif->n_pages - gif->page; if( gif->page < 0 || gif->n <= 0 || gif->page + gif->n > gif->n_pages ) { vips_error( class->nickname, "%s", _( "bad page number" ) ); return( -1 ); } return( 0 ); } /* Scan the GIF and set the libvips header. We always close after scan, even * on an error. */ static int vips_foreign_load_gif_header( VipsForeignLoad *load ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( load ); VipsForeignLoadGif *gif = VIPS_FOREIGN_LOAD_GIF( load ); VIPS_DEBUG_MSG( "vips_foreign_load_gif_header: %p\n", gif ); if( vips_foreign_load_gif_open_giflib( gif ) ) return( -1 ); /* giflib does no checking of image dimensions, not even for 0. */ if( gif->file->SWidth <= 0 || gif->file->SWidth > VIPS_MAX_COORD || gif->file->SHeight <= 0 || gif->file->SHeight > VIPS_MAX_COORD ) { vips_error( class->nickname, "%s", _( "image size out of bounds" ) ); (void) vips_foreign_load_gif_close_giflib( gif ); return( -1 ); } /* Allocate a line buffer now that we have the GIF width. */ if( !(gif->line = VIPS_ARRAY( NULL, gif->file->SWidth, GifPixelType )) || vips_foreign_load_gif_scan( gif ) || vips_foreign_load_gif_set_header( gif, load->out ) ) { (void) vips_foreign_load_gif_close_giflib( gif ); return( -1 ); } (void) vips_foreign_load_gif_close_giflib( gif ); return( 0 ); } static void vips_foreign_load_gif_build_cmap( VipsForeignLoadGif *gif ) { ColorMapObject *map = gif->file->Image.ColorMap ? gif->file->Image.ColorMap : gif->file->SColorMap; int v; for( v = 0; v < 256; v++ ) { VipsPel *q = (VipsPel *) &gif->cmap[v]; if( map && v < map->ColorCount ) { q[0] = map->Colors[v].Red; q[1] = map->Colors[v].Green; q[2] = map->Colors[v].Blue; q[3] = 255; } else { /* If there's no map, just save the index. */ q[0] = v; q[1] = v; q[2] = v; q[3] = 255; } } } static void vips_foreign_load_gif_render_line( VipsForeignLoadGif *gif, int width, VipsPel * restrict q, VipsPel * restrict p ) { guint32 *iq; int x; iq = (guint32 *) q; for( x = 0; x < width; x++ ) { VipsPel v = p[x]; if( v == gif->transparency ) { /* In DISPOSE_DO_NOT mode, the previous frame shows * through (ie. we do nothing). In all other modes, * it's just transparent. */ if( gif->dispose != DISPOSE_DO_NOT ) iq[x] = 0; } else /* Blast in the RGBA for this value. */ iq[x] = gif->cmap[v]; } } /* Render the current gif frame into an RGBA buffer. GIFs can accumulate, * depending on the current dispose mode. */ static int vips_foreign_load_gif_render( VipsForeignLoadGif *gif ) { GifFileType *file = gif->file; if( DGifGetImageDesc( file ) == GIF_ERROR ) { vips_foreign_load_gif_error( gif ); return( -1 ); } /* Update the colour map for this frame. */ vips_foreign_load_gif_build_cmap( gif ); /* BACKGROUND means we reset the frame to 0 (transparent) before we * render the next set of pixels. */ if( gif->dispose == DISPOSE_BACKGROUND ) memset( VIPS_IMAGE_ADDR( gif->frame, 0, 0 ), 0, VIPS_IMAGE_SIZEOF_IMAGE( gif->frame ) ); /* PREVIOUS means we init the frame with the frame before last, ie. we * undo the last render. * * Anything other than PREVIOUS, we must update the previous buffer, */ if( gif->dispose == DISPOSE_PREVIOUS ) memcpy( VIPS_IMAGE_ADDR( gif->frame, 0, 0 ), VIPS_IMAGE_ADDR( gif->previous, 0, 0 ), VIPS_IMAGE_SIZEOF_IMAGE( gif->frame ) ); else memcpy( VIPS_IMAGE_ADDR( gif->previous, 0, 0 ), VIPS_IMAGE_ADDR( gif->frame, 0, 0 ), VIPS_IMAGE_SIZEOF_IMAGE( gif->frame ) ); /* giflib does not check that the Left / Top / Width / Height for this * Image is inside the canvas. * * We could clip against the canvas, but for now, just ignore out of * bounds frames. Watch for int overflow too. */ if( file->Image.Left < 0 || file->Image.Left > VIPS_MAX_COORD || file->Image.Width <= 0 || file->Image.Width > VIPS_MAX_COORD || file->Image.Left + file->Image.Width > file->SWidth || file->Image.Top < 0 || file->Image.Top > VIPS_MAX_COORD || file->Image.Height <= 0 || file->Image.Height > VIPS_MAX_COORD || file->Image.Top + file->Image.Height > file->SHeight ) { VIPS_DEBUG_MSG( "vips_foreign_load_gif_render: " "out of bounds frame of %d x %d pixels at %d x %d\n", file->Image.Width, file->Image.Height, file->Image.Left, file->Image.Top ); } else if( file->Image.Interlace ) { int i; VIPS_DEBUG_MSG( "vips_foreign_load_gif_render: " "interlaced frame of %d x %d pixels at %d x %d\n", file->Image.Width, file->Image.Height, file->Image.Left, file->Image.Top ); for( i = 0; i < 4; i++ ) { int y; for( y = InterlacedOffset[i]; y < file->Image.Height; y += InterlacedJumps[i] ) { VipsPel *q = VIPS_IMAGE_ADDR( gif->frame, file->Image.Left, file->Image.Top + y ); if( DGifGetLine( gif->file, gif->line, file->Image.Width ) == GIF_ERROR ) { vips_foreign_load_gif_error( gif ); return( -1 ); } vips_foreign_load_gif_render_line( gif, file->Image.Width, q, gif->line ); } } } else { int y; VIPS_DEBUG_MSG( "vips_foreign_load_gif_render: " "non-interlaced frame of %d x %d pixels at %d x %d\n", file->Image.Width, file->Image.Height, file->Image.Left, file->Image.Top ); for( y = 0; y < file->Image.Height; y++ ) { VipsPel *q = VIPS_IMAGE_ADDR( gif->frame, file->Image.Left, file->Image.Top + y ); if( DGifGetLine( gif->file, gif->line, file->Image.Width ) == GIF_ERROR ) { vips_foreign_load_gif_error( gif ); return( -1 ); } vips_foreign_load_gif_render_line( gif, file->Image.Width, q, gif->line ); } } return( 0 ); } static int vips_foreign_load_gif_extension( VipsForeignLoadGif *gif ) { GifByteType *extension; int ext_code; VIPS_DEBUG_MSG( "vips_foreign_load_gif_extension:\n" ); if( DGifGetExtension( gif->file, &ext_code, &extension ) == GIF_ERROR ) { vips_foreign_load_gif_error( gif ); return( -1 ); } if( extension && ext_code == GRAPHICS_EXT_FUNC_CODE && extension[0] == 4 ) { /* Bytes are flags, delay low, delay high, * transparency. Flag bit 1 means transparency * is being set. */ gif->transparency = -1; if( extension[1] & 0x1 ) gif->transparency = extension[4]; /* Set the current dispose mode. This is read during frame load * to set the meaning of background and transparent pixels. */ gif->dispose = (extension[1] >> 2) & 0x7; VIPS_DEBUG_MSG( "vips_foreign_load_gif_extension: " "dispose = %d\n", gif->dispose ); } while( extension != NULL ) if( vips_foreign_load_gif_ext_next( gif, &extension ) ) return( -1 ); return( 0 ); } /* Read the next page from the file into @frame. */ static int vips_foreign_load_gif_next_page( VipsForeignLoadGif *gif ) { GifRecordType record; gboolean have_read_frame; have_read_frame = FALSE; do { if( DGifGetRecordType( gif->file, &record ) == GIF_ERROR ) { vips_foreign_load_gif_error( gif ); return( -1 ); } switch( record ) { case IMAGE_DESC_RECORD_TYPE: VIPS_DEBUG_MSG( "vips_foreign_load_gif_next_page: " "IMAGE_DESC_RECORD_TYPE\n" ); if( vips_foreign_load_gif_render( gif ) ) return( -1 ); have_read_frame = TRUE; break; case EXTENSION_RECORD_TYPE: if( vips_foreign_load_gif_extension( gif ) ) return( -1 ); break; case TERMINATE_RECORD_TYPE: VIPS_DEBUG_MSG( "vips_foreign_load_gif_next_page: " "TERMINATE_RECORD_TYPE\n" ); gif->eof = TRUE; break; case SCREEN_DESC_RECORD_TYPE: VIPS_DEBUG_MSG( "vips_foreign_load_gif_next_page: " "SCREEN_DESC_RECORD_TYPE\n" ); break; case UNDEFINED_RECORD_TYPE: VIPS_DEBUG_MSG( "vips_foreign_load_gif_next_page: " "UNDEFINED_RECORD_TYPE\n" ); break; default: break; } } while( !have_read_frame && !gif->eof ); return( 0 ); } static int vips_foreign_load_gif_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; VipsForeignLoadGif *gif = (VipsForeignLoadGif *) a; VipsForeignLoadGifClass *class = VIPS_FOREIGN_LOAD_GIF_GET_CLASS( gif ); int y; #ifdef DEBUG_VERBOSE printf( "vips_foreign_load_gif_generate: %p " "left = %d, top = %d, width = %d, height = %d\n", gif, r->left, r->top, r->width, r->height ); #endif /*DEBUG_VERBOSE*/ /* May have been minimised. Reopen the fp if necessary. */ if( class->open( gif ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { /* The page for this output line, and the line number in page. */ int page = (r->top + y) / gif->file->SHeight + gif->page; int line = (r->top + y) % gif->file->SHeight; VipsPel *p, *q; int x; g_assert( line >= 0 && line < gif->frame->Ysize ); g_assert( page >= 0 && page < gif->n_pages ); /* current_page == 0 means we've not loaded any pages yet. So * we need to have loaded the page beyond the page we want. */ while( gif->current_page <= page ) { if( vips_foreign_load_gif_next_page( gif ) ) return( -1 ); gif->current_page += 1; } /* @frame is always RGBA, but or may be G, GA, RGB or RGBA. * We have to pick out the values we want. */ p = VIPS_IMAGE_ADDR( gif->frame, 0, line ); q = VIPS_REGION_ADDR( or, 0, r->top + y ); switch( or->im->Bands ) { case 1: for( x = 0; x < gif->frame->Xsize; x++ ) { q[0] = p[1]; q += 1; p += 4; } break; case 2: for( x = 0; x < gif->frame->Xsize; x++ ) { q[0] = p[1]; q[1] = p[3]; q += 2; p += 4; } break; case 3: for( x = 0; x < gif->frame->Xsize; x++ ) { q[0] = p[0]; q[1] = p[1]; q[2] = p[2]; q += 3; p += 4; } break; case 4: memcpy( q, p, VIPS_IMAGE_SIZEOF_LINE( gif->frame ) ); break; default: g_assert_not_reached(); break; } } return( 0 ); } static void vips_foreign_load_gif_minimise( VipsObject *object, VipsForeignLoadGif *gif ) { VipsForeignLoadGifClass *class = VIPS_FOREIGN_LOAD_GIF_GET_CLASS( gif ); class->close( gif ); } static int vips_foreign_load_gif_load( VipsForeignLoad *load ) { VipsForeignLoadGif *gif = VIPS_FOREIGN_LOAD_GIF( load ); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( load ), 4 ); VIPS_DEBUG_MSG( "vips_foreign_load_gif_load: %p\n", gif ); if( vips_foreign_load_gif_open_giflib( gif ) ) return( -1 ); /* Make the memory image we accumulate pixels in. We always accumulate * to RGBA, then trim down to whatever the output image needs on * _generate. */ gif->frame = vips_image_new_memory(); vips_image_init_fields( gif->frame, gif->file->SWidth, gif->file->SHeight, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); if( vips_image_write_prepare( gif->frame ) ) return( -1 ); /* A copy of the previous state of the frame, in case we have to * process a DISPOSE_PREVIOUS. */ gif->previous = vips_image_new_memory(); vips_image_init_fields( gif->previous, gif->file->SWidth, gif->file->SHeight, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); if( vips_image_write_prepare( gif->previous ) ) return( -1 ); /* Make the output pipeline. */ t[0] = vips_image_new(); if( vips_foreign_load_gif_set_header( gif, t[0] ) ) return( -1 ); /* Close input immediately at end of read. */ g_signal_connect( t[0], "minimise", G_CALLBACK( vips_foreign_load_gif_minimise ), gif ); /* Strips 8 pixels high to avoid too many tiny regions. */ if( vips_image_generate( t[0], NULL, vips_foreign_load_gif_generate, NULL, gif, NULL ) || vips_sequential( t[0], &t[1], "tile_height", VIPS__FATSTRIP_HEIGHT, NULL ) || vips_image_write( t[1], load->real ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_gif_open( VipsForeignLoadGif *gif ) { return( 0 ); } static void vips_foreign_load_gif_rewind( VipsForeignLoadGif *gif ) { } static void vips_foreign_load_gif_close( VipsForeignLoadGif *gif ) { } static void vips_foreign_load_gif_class_init( VipsForeignLoadGifClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_gif_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "gifload_base"; object_class->description = _( "load GIF with giflib" ); load_class->header = vips_foreign_load_gif_header; load_class->load = vips_foreign_load_gif_load; load_class->get_flags_filename = vips_foreign_load_gif_get_flags_filename; load_class->get_flags = vips_foreign_load_gif_get_flags; class->open = vips_foreign_load_gif_open; class->rewind = vips_foreign_load_gif_rewind; class->close = vips_foreign_load_gif_close; VIPS_ARG_INT( class, "page", 20, _( "Page" ), _( "Load this page from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadGif, page ), 0, 100000, 0 ); VIPS_ARG_INT( class, "n", 21, _( "n" ), _( "Load this many pages" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadGif, n ), -1, 100000, 1 ); } static void vips_foreign_load_gif_init( VipsForeignLoadGif *gif ) { gif->n = 1; gif->transparency = -1; gif->delays = NULL; gif->delays_length = 0; gif->loop = 1; gif->comment = NULL; gif->dispose = 0; vips_foreign_load_gif_allocate_delays( gif ); } typedef struct _VipsForeignLoadGifFile { VipsForeignLoadGif parent_object; /* Filename for load. */ char *filename; /* The FILE* we read from. */ FILE *fp; /* If we close and reopen, save the ftell point here. */ long seek_position; } VipsForeignLoadGifFile; typedef VipsForeignLoadGifClass VipsForeignLoadGifFileClass; G_DEFINE_TYPE( VipsForeignLoadGifFile, vips_foreign_load_gif_file, vips_foreign_load_gif_get_type() ); /* Our input function for file open. We can't use DGifOpenFileName(), since * that just calls open() and won't work with unicode on win32. We can't use * DGifOpenFileHandle() since that's an fd from open() and you can't pass those * across DLL boundaries on Windows. */ static int vips_giflib_file_read( GifFileType *gfile, GifByteType *buffer, int n ) { VipsForeignLoadGif *gif = (VipsForeignLoadGif *) gfile->UserData; VipsForeignLoadGifFile *file = (VipsForeignLoadGifFile *) gif; if( feof( file->fp ) ) gif->eof = TRUE; return( (int) fread( (void *) buffer, 1, n, file->fp ) ); } /* We have to have _open() as a vfunc since we want to be able to reopen in * _generate if we have been closed during _minimise. */ static int vips_foreign_load_gif_file_open( VipsForeignLoadGif *gif ) { VipsForeignLoad *load = (VipsForeignLoad *) gif; VipsForeignLoadGifFile *file = (VipsForeignLoadGifFile *) gif; VIPS_DEBUG_MSG( "vips_foreign_load_gif_file_open:\n" ); if( !file->fp ) { if( !(file->fp = vips__file_open_read( file->filename, NULL, FALSE )) ) return( -1 ); /* Restore the read point if we are reopening. */ if( file->seek_position != -1 ) fseek( file->fp, file->seek_position, SEEK_SET ); VIPS_SETSTR( load->out->filename, file->filename ); gif->read_func = vips_giflib_file_read; } return( VIPS_FOREIGN_LOAD_GIF_CLASS( vips_foreign_load_gif_file_parent_class )->open( gif ) ); } static void vips_foreign_load_gif_file_rewind( VipsForeignLoadGif *gif ) { VipsForeignLoadGifFile *file = (VipsForeignLoadGifFile *) gif; VIPS_DEBUG_MSG( "vips_foreign_load_gif_file_rewind:\n" ); if( file->fp ) { file->seek_position = 0; fseek( file->fp, file->seek_position, SEEK_SET ); } VIPS_FOREIGN_LOAD_GIF_CLASS( vips_foreign_load_gif_file_parent_class )->rewind( gif ); } static void vips_foreign_load_gif_file_close( VipsForeignLoadGif *gif ) { VipsForeignLoadGifFile *file = (VipsForeignLoadGifFile *) gif; VIPS_DEBUG_MSG( "vips_foreign_load_gif_file_close:\n" ); if( file->fp ) { file->seek_position = ftell( file->fp ); VIPS_FREEF( fclose, file->fp ); } VIPS_FOREIGN_LOAD_GIF_CLASS( vips_foreign_load_gif_file_parent_class )->close( gif ); } static const char *vips_foreign_gif_suffs[] = { ".gif", NULL }; static void vips_foreign_load_gif_file_class_init( VipsForeignLoadGifFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; VipsForeignLoadGifClass *gif_class = (VipsForeignLoadGifClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "gifload"; object_class->description = _( "load GIF with giflib" ); foreign_class->suffs = vips_foreign_gif_suffs; load_class->is_a = vips_foreign_load_gif_is_a; gif_class->open = vips_foreign_load_gif_file_open; gif_class->rewind = vips_foreign_load_gif_file_rewind; gif_class->close = vips_foreign_load_gif_file_close; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadGifFile, filename ), NULL ); } static void vips_foreign_load_gif_file_init( VipsForeignLoadGifFile *file ) { file->seek_position = -1; } typedef struct _VipsForeignLoadGifBuffer { VipsForeignLoadGif parent_object; /* Load from a buffer. */ VipsArea *buf; /* Current read point, bytes left in buffer. */ VipsPel *p; size_t bytes_to_go; } VipsForeignLoadGifBuffer; typedef VipsForeignLoadGifClass VipsForeignLoadGifBufferClass; G_DEFINE_TYPE( VipsForeignLoadGifBuffer, vips_foreign_load_gif_buffer, vips_foreign_load_gif_get_type() ); /* Callback from the gif loader. * * Read up to len bytes into buffer, return number of bytes read, 0 for EOF. */ static int vips_giflib_buffer_read( GifFileType *file, GifByteType *buf, int n ) { VipsForeignLoadGif *gif = (VipsForeignLoadGif *) file->UserData; VipsForeignLoadGifBuffer *buffer = (VipsForeignLoadGifBuffer *) gif; size_t will_read = VIPS_MIN( n, buffer->bytes_to_go ); memcpy( buf, buffer->p, will_read ); buffer->p += will_read; buffer->bytes_to_go -= will_read; if( will_read == 0 ) gif->eof = TRUE; return( will_read ); } static int vips_foreign_load_gif_buffer_open( VipsForeignLoadGif *gif ) { VipsForeignLoadGifBuffer *buffer = (VipsForeignLoadGifBuffer *) gif; VIPS_DEBUG_MSG( "vips_foreign_load_gif_buffer_open:\n" ); /* We can open several times -- make sure we don't move the read point * if we reopen. */ if( !buffer->p ) { buffer->p = buffer->buf->data; buffer->bytes_to_go = buffer->buf->length; gif->read_func = vips_giflib_buffer_read; } return( VIPS_FOREIGN_LOAD_GIF_CLASS( vips_foreign_load_gif_buffer_parent_class )->open( gif ) ); } static void vips_foreign_load_gif_buffer_rewind( VipsForeignLoadGif *gif ) { VipsForeignLoadGifBuffer *buffer = (VipsForeignLoadGifBuffer *) gif; VIPS_DEBUG_MSG( "vips_foreign_load_gif_buffer_rewind:\n" ); buffer->p = buffer->buf->data; buffer->bytes_to_go = buffer->buf->length; VIPS_FOREIGN_LOAD_GIF_CLASS( vips_foreign_load_gif_buffer_parent_class )->rewind( gif ); } static void vips_foreign_load_gif_buffer_class_init( VipsForeignLoadGifBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; VipsForeignLoadGifClass *gif_class = (VipsForeignLoadGifClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "gifload_buffer"; object_class->description = _( "load GIF with giflib" ); load_class->is_a_buffer = vips_foreign_load_gif_is_a_buffer; gif_class->open = vips_foreign_load_gif_buffer_open; gif_class->rewind = vips_foreign_load_gif_buffer_rewind; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadGifBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_gif_buffer_init( VipsForeignLoadGifBuffer *buffer ) { } #endif /*HAVE_GIFLIB*/ /** * vips_gifload: * @filename: file to load * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, page (frame) to read * * @n: %gint, load this many pages * * Read a GIF file into a VIPS image. * * Use @page to select a page to render, numbering from zero. * * Use @n to select the number of pages to render. The default is 1. Pages are * rendered in a vertical column, with each individual page aligned to the * left. Set to -1 to mean "until the end of the document". Use vips_grid() * to change page layout. * * The whole GIF is rendered into memory on header access. The output image * will be 1, 2, 3 or 4 bands depending on what the reader finds in the file. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_gifload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "gifload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_gifload_buffer: * @buf: (array length=len) (element-type guint8): memory area to load * @len: (type gsize): size of memory area * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, page (frame) to read * * @n: %gint, load this many pages * * Read a GIF-formatted memory block into a VIPS image. Exactly as * vips_gifload(), but read from a memory buffer. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_gifload(). * * Returns: 0 on success, -1 on error. */ int vips_gifload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "gifload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } libvips-8.9.1/libvips/foreign/heifload.c000066400000000000000000000741201361153320700202260ustar00rootroot00000000000000/* load heif images with libheif * * 19/1/19 * - from niftiload.c * 24/7/19 [zhoux2016] * - always fetch metadata from the main image (thumbs don't have it) * 24/7/19 * - close early on minimise * - close early on error * 1/9/19 [meyermarcel] * - handle alpha * 30/9/19 * - much faster handling of thumbnail=TRUE and missing thumbnail ... we * were reselecting the image for each scanline * 3/10/19 * - restart after minimise */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define VIPS_DEBUG #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_HEIF_DECODER #include #include "pforeign.h" #define VIPS_TYPE_FOREIGN_LOAD_HEIF (vips_foreign_load_heif_get_type()) #define VIPS_FOREIGN_LOAD_HEIF( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FOREIGN_LOAD_HEIF, VipsForeignLoadHeif )) #define VIPS_FOREIGN_LOAD_HEIF_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FOREIGN_LOAD_HEIF, VipsForeignLoadHeifClass)) #define VIPS_IS_FOREIGN_LOAD_HEIF( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN_LOAD_HEIF )) #define VIPS_IS_FOREIGN_LOAD_HEIF_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN_LOAD_HEIF )) #define VIPS_FOREIGN_LOAD_HEIF_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FOREIGN_LOAD_HEIF, VipsForeignLoadHeifClass )) typedef struct _VipsForeignLoadHeif { VipsForeignLoad parent_object; /* Pages to load. */ int page; int n; /* Fetch the thumbnail instead of the image. If there is no thumbnail, * just fetch the image. */ gboolean thumbnail; /* Apply any orientation tags in the header. */ gboolean autorotate; /* Context for this image. */ struct heif_context *ctx; /* Number of top-level images in this file. */ int n_top; /* TRUE for RGBA ... otherwise, RGB. */ gboolean has_alpha; /* Size of final output image. */ int width; int height; /* Size of each page. */ int page_width; int page_height; /* The page number currently in @handle. */ int page_no; /* TRUE if @handle has selected the thumbnail rather than the main * image. */ gboolean thumbnail_set; /* The page number of the primary image. */ int primary_page; /* Array of top-level image IDs. */ heif_item_id *id; /* Handle for the currently selected image. */ struct heif_image_handle *handle; /* Decoded pixel data for the current image. */ struct heif_image *img; /* Valid until img is released. */ int stride; const uint8_t *data; } VipsForeignLoadHeif; typedef struct _VipsForeignLoadHeifClass { VipsForeignLoadClass parent_class; /* Open the reader, eg. call heif_context_read_from_memory() etc. This * has to be a vfunc so generate can restart after minimise. */ int (*open)( VipsForeignLoadHeif *heif ); } VipsForeignLoadHeifClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadHeif, vips_foreign_load_heif, VIPS_TYPE_FOREIGN_LOAD ); static void vips_foreign_load_heif_close( VipsForeignLoadHeif *heif ) { VIPS_FREEF( heif_image_release, heif->img ); heif->data = NULL; VIPS_FREEF( heif_image_handle_release, heif->handle ); VIPS_FREEF( heif_context_free, heif->ctx ); } static void vips_foreign_load_heif_dispose( GObject *gobject ) { VipsForeignLoadHeif *heif = (VipsForeignLoadHeif *) gobject; vips_foreign_load_heif_close( heif ); VIPS_FREE( heif->id ); G_OBJECT_CLASS( vips_foreign_load_heif_parent_class )-> dispose( gobject ); } void vips__heif_error( struct heif_error *error ) { if( error->code ) vips_error( "heif", "%s (%d.%d)", error->message, error->code, error->subcode ); } static const char *heif_magic[] = { "ftypheic", /* A regular heif image */ "ftypheix", /* Extended range (>8 bit) image */ "ftyphevc", /* Image sequence */ "ftypheim", /* Image sequence */ "ftypheis", /* Scaleable image */ "ftyphevm", /* Multiview sequence */ "ftyphevs", /* Scaleable sequence */ "ftypmif1", /* Nokia alpha_ image */ "ftypmsf1" /* Nokia animation image */ }; /* THe API has: * * enum heif_filetype_result result = heif_check_filetype( buf, 12 ); * * but it's very conservative and seems to be missing some of the Noka hief * types. */ static int vips_foreign_load_heif_is_a( const char *buf, int len ) { if( len >= 12 ) { int i; for( i = 0; i < VIPS_NUMBER( heif_magic ); i++ ) if( strncmp( buf + 4, heif_magic[i], 8 ) == 0 ) return( 1 ); } return( 0 ); } static VipsForeignFlags vips_foreign_load_heif_get_flags( VipsForeignLoad *load ) { /* FIXME .. could support random access for grid images. */ return( VIPS_FOREIGN_SEQUENTIAL ); } /* Select a page. If thumbnail is set, select the thumbnail for that page, if * there is one. */ static int vips_foreign_load_heif_set_page( VipsForeignLoadHeif *heif, int page_no, gboolean thumbnail ) { #ifdef DEBUG printf( "vips_foreign_load_heif_set_page: %d, thumbnail = %d\n", page_no, thumbnail ); #endif /*DEBUG*/ if( !heif->handle || page_no != heif->page_no || thumbnail != heif->thumbnail_set ) { struct heif_error error; VIPS_FREEF( heif_image_handle_release, heif->handle ); VIPS_FREEF( heif_image_release, heif->img ); heif->data = NULL; heif->thumbnail_set = FALSE; error = heif_context_get_image_handle( heif->ctx, heif->id[page_no], &heif->handle ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } if( thumbnail ) { heif_item_id thumb_ids[1]; int n_thumbs; struct heif_image_handle *thumb_handle; n_thumbs = heif_image_handle_get_list_of_thumbnail_IDs( heif->handle, thumb_ids, 1 ); if( n_thumbs > 0 ) { error = heif_image_handle_get_thumbnail( heif->handle, thumb_ids[0], &thumb_handle ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } VIPS_FREEF( heif_image_handle_release, heif->handle ); heif->handle = thumb_handle; } /* If we were asked to select the thumbnail, say we * did, even if there are no thumbnails and we just * selected the main image. * * If we don't do this, next time around in _generate * we'll try to select the thumbnail again, which will * be horribly slow. */ heif->thumbnail_set = TRUE; } heif->page_no = page_no; } return( 0 ); } static int vips_foreign_load_heif_set_header( VipsForeignLoadHeif *heif, VipsImage *out ) { int bands; int i; /* Surely, 16 metadata items will be enough for anyone. */ heif_item_id id[16]; int n_metadata; struct heif_error error; /* We take the metadata from the non-thumbnail first page. HEIC * thumbnails don't have metadata. */ if( vips_foreign_load_heif_set_page( heif, heif->page, FALSE ) ) return( -1 ); heif->has_alpha = heif_image_handle_has_alpha_channel( heif->handle ); #ifdef DEBUG printf( "heif_image_handle_has_alpha_channel() = %d\n", heif->has_alpha ); #endif /*DEBUG*/ bands = heif->has_alpha ? 4 : 3; /* FIXME .. need to test XMP and IPCT. */ n_metadata = heif_image_handle_get_list_of_metadata_block_IDs( heif->handle, NULL, id, VIPS_NUMBER( id ) ); for( i = 0; i < n_metadata; i++ ) { size_t length = heif_image_handle_get_metadata_size( heif->handle, id[i] ); const char *type = heif_image_handle_get_metadata_type( heif->handle, id[i] ); unsigned char *data; char name[256]; #ifdef DEBUG printf( "metadata type = %s, length = %zd\n", type, length ); #endif /*DEBUG*/ if( !(data = VIPS_ARRAY( out, length, unsigned char )) ) return( -1 ); error = heif_image_handle_get_metadata( heif->handle, id[i], data ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } /* We need to skip the first four bytes of EXIF, they just * contain the offset. */ if( g_ascii_strcasecmp( type, "exif" ) == 0 ) { data += 4; length -= 4; } /* exif has a special name. * * XMP metadata is just attached with the "mime" type, and * usually start with "handle ); printf( "profile type = " ); switch( profile_type ) { case heif_color_profile_type_not_present: printf( "none" ); break; case heif_color_profile_type_nclx: printf( "nclx" ); break; case heif_color_profile_type_rICC: printf( "rICC" ); break; case heif_color_profile_type_prof: printf( "prof" ); break; default: printf( "unknown" ); break; } printf( "\n" ); } #endif /*DEBUG*/ /* FIXME should probably check the profile type ... lcms seems to be * able to load at least rICC and prof. */ if( heif_image_handle_get_color_profile_type( heif->handle ) ) { size_t length = heif_image_handle_get_raw_color_profile_size( heif->handle ); unsigned char *data; if( !(data = VIPS_ARRAY( out, length, unsigned char )) ) return( -1 ); error = heif_image_handle_get_raw_color_profile( heif->handle, data ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } #ifdef DEBUG printf( "profile data, length = %zd\n", length ); #endif /*DEBUG*/ vips_image_set_blob( out, VIPS_META_ICC_NAME, (VipsCallbackFn) NULL, data, length ); } #endif /*HAVE_HEIF_COLOR_PROFILE*/ /* If we are using libheif's autorotate, remove the exif one. */ #ifdef HAVE_HEIF_IMAGE_HANDLE_GET_ISPE_WIDTH if( heif->autorotate ) vips_autorot_remove_angle( out ); #endif /*HAVE_HEIF_IMAGE_HANDLE_GET_ISPE_WIDTH*/ vips_image_set_int( out, "heif-primary", heif->primary_page ); vips_image_set_int( out, "n-pages", heif->n_top ); if( vips_object_argument_isset( VIPS_OBJECT( heif ), "n" ) ) vips_image_set_int( out, VIPS_META_PAGE_HEIGHT, heif->page_height ); /* FIXME .. we always decode to RGB in generate. We should check for * all grey images, perhaps. */ vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); vips_image_init_fields( out, heif->page_width, heif->page_height * heif->n, bands, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); return( 0 ); } static int vips_foreign_load_heif_get_width( VipsForeignLoadHeif *heif, struct heif_image_handle *handle ) { int width; /* _get_ipse_width() fetches the untransformed dimension, but was only * added in 1.3.4. Without it, we just use the transformed dimension * and have to autorotate. */ width = heif_image_handle_get_width( handle ); #ifdef HAVE_HEIF_IMAGE_HANDLE_GET_ISPE_WIDTH if( !heif->autorotate ) width = heif_image_handle_get_ispe_width( handle ); #endif /*HAVE_HEIF_IMAGE_HANDLE_GET_ISPE_WIDTH*/ return( width ); } static int vips_foreign_load_heif_get_height( VipsForeignLoadHeif *heif, struct heif_image_handle *handle ) { int height; height = heif_image_handle_get_height( handle ); #ifdef HAVE_HEIF_IMAGE_HANDLE_GET_ISPE_WIDTH if( !heif->autorotate ) height = heif_image_handle_get_ispe_height( handle ); #endif /*HAVE_HEIF_IMAGE_HANDLE_GET_ISPE_WIDTH*/ return( height ); } static int vips_foreign_load_heif_header( VipsForeignLoad *load ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( load ); VipsForeignLoadHeif *heif = (VipsForeignLoadHeif *) load; VipsForeignLoadHeifClass *heif_class = VIPS_FOREIGN_LOAD_HEIF_GET_CLASS( heif ); struct heif_error error; heif_item_id primary_id; int i; if( heif_class->open( heif ) ) return( -1 ); heif->n_top = heif_context_get_number_of_top_level_images( heif->ctx ); heif->id = VIPS_ARRAY( NULL, heif->n_top, heif_item_id ); heif_context_get_list_of_top_level_image_IDs( heif->ctx, heif->id, heif->n_top ); /* Note page number of primary image. */ error = heif_context_get_primary_image_ID( heif->ctx, &primary_id ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } for( i = 0; i < heif->n_top; i++ ) if( heif->id[i] == primary_id ) heif->primary_page = i; /* If @n and @page have not been set, @page defaults to the primary * page. */ if( !vips_object_argument_isset( VIPS_OBJECT( load ), "page" ) && !vips_object_argument_isset( VIPS_OBJECT( load ), "n" ) ) heif->page = heif->primary_page; if( heif->n == -1 ) heif->n = heif->n_top - heif->page; if( heif->page < 0 || heif->n <= 0 || heif->page + heif->n > heif->n_top ) { vips_error( class->nickname, "%s", _( "bad page number" ) ); return( -1 ); } #ifdef DEBUG #ifdef HAVE_HEIF_IMAGE_HANDLE_GET_ISPE_WIDTH if( !heif->autorotate ) printf( "using _get_ispe_width() / _height()\n" ); #endif /*HAVE_HEIF_IMAGE_HANDLE_GET_ISPE_WIDTH*/ for( i = heif->page; i < heif->page + heif->n; i++ ) { heif_item_id thumb_ids[1]; int n_items; int n_thumbs; int j; if( vips_foreign_load_heif_set_page( heif, i, FALSE ) ) return( -1 ); n_thumbs = heif_image_handle_get_number_of_thumbnails( heif->handle ); n_items = heif_image_handle_get_list_of_thumbnail_IDs( heif->handle, thumb_ids, 1 ); printf( "page = %d\n", i ); printf( "n_thumbs = %d\n", n_thumbs ); printf( "n_items = %d\n", n_items ); for( j = 0; j < n_items; j++ ) { struct heif_image_handle *thumb_handle; error = heif_image_handle_get_thumbnail( heif->handle, thumb_ids[j], &thumb_handle ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } printf( " thumb %d\n", j ); printf( " width = %d\n", vips_foreign_load_heif_get_width( heif, thumb_handle ) ); printf( " height = %d\n", vips_foreign_load_heif_get_height( heif, thumb_handle ) ); } } #endif /*DEBUG*/ /* All pages must be the same size for libvips toilet roll images. */ if( vips_foreign_load_heif_set_page( heif, heif->page, heif->thumbnail ) ) return( -1 ); heif->page_width = vips_foreign_load_heif_get_width( heif, heif->handle ); heif->page_height = vips_foreign_load_heif_get_height( heif, heif->handle ); for( i = heif->page + 1; i < heif->page + heif->n; i++ ) { if( vips_foreign_load_heif_set_page( heif, i, heif->thumbnail ) ) return( -1 ); if( vips_foreign_load_heif_get_width( heif, heif->handle ) != heif->page_width || vips_foreign_load_heif_get_height( heif, heif->handle ) != heif->page_height ) { vips_error( class->nickname, "%s", _( "not all pages are the same size" ) ); return( -1 ); } } #ifdef DEBUG printf( "n_top = %d\n", heif->n_top ); for( i = 0; i < heif->n_top; i++ ) { printf( " id[%d] = %d\n", i, heif->id[i] ); if( vips_foreign_load_heif_set_page( heif, i, FALSE ) ) return( -1 ); printf( " width = %d\n", vips_foreign_load_heif_get_width( heif, heif->handle ) ); printf( " height = %d\n", vips_foreign_load_heif_get_height( heif, heif->handle ) ); printf( " has_depth = %d\n", heif_image_handle_has_depth_image( heif->handle ) ); printf( " has_alpha = %d\n", heif_image_handle_has_alpha_channel( heif->handle ) ); printf( " n_metadata = %d\n", heif_image_handle_get_number_of_metadata_blocks( heif->handle, NULL ) ); #ifdef HAVE_HEIF_COLOR_PROFILE printf( " colour profile type = 0x%xd\n", heif_image_handle_get_color_profile_type( heif->handle ) ); #endif /*HAVE_HEIF_COLOR_PROFILE*/ } #endif /*DEBUG*/ if( vips_foreign_load_heif_set_header( heif, load->out ) ) return( -1 ); vips_foreign_load_heif_close( heif ); return( 0 ); } static int vips_foreign_load_heif_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsForeignLoadHeif *heif = (VipsForeignLoadHeif *) a; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( heif ); VipsForeignLoadHeifClass *heif_class = VIPS_FOREIGN_LOAD_HEIF_GET_CLASS( heif ); VipsRect *r = &or->valid; int page = r->top / heif->page_height + heif->page; int line = r->top % heif->page_height; #ifdef DEBUG_VERBOSE printf( "vips_foreign_load_heif_generate: line %d\n", r->top ); #endif /*DEBUG_VERBOSE*/ g_assert( r->height == 1 ); if( heif_class->open( heif ) ) return( -1 ); if( vips_foreign_load_heif_set_page( heif, page, heif->thumbnail ) ) return( -1 ); if( !heif->img ) { struct heif_error error; struct heif_decoding_options *options; enum heif_chroma chroma = heif->has_alpha ? heif_chroma_interleaved_RGBA : heif_chroma_interleaved_RGB; /* Only disable transforms if we have been able to fetch the * untransformed dimensions. */ options = heif_decoding_options_alloc(); #ifdef HAVE_HEIF_IMAGE_HANDLE_GET_ISPE_WIDTH options->ignore_transformations = !heif->autorotate; #endif /*HAVE_HEIF_IMAGE_HANDLE_GET_ISPE_WIDTH*/ error = heif_decode_image( heif->handle, &heif->img, heif_colorspace_RGB, chroma, options ); heif_decoding_options_free( options ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } #ifdef DEBUG { const static enum heif_channel channel[] = { heif_channel_Y, heif_channel_Cb, heif_channel_Cr, heif_channel_R, heif_channel_G, heif_channel_B, heif_channel_Alpha, heif_channel_interleaved }; const static char *channel_name[] = { "heif_channel_Y", "heif_channel_Cb", "heif_channel_Cr", "heif_channel_R", "heif_channel_G", "heif_channel_B", "heif_channel_Alpha", "heif_channel_interleaved" }; int i; printf( "vips_foreign_load_heif_generate:\n" ); for( i = 0; i < VIPS_NUMBER( channel ); i++ ) { printf( "\t%s:\n", channel_name[i] ); printf( "\t\twidth = %d\n", heif_image_get_width( heif->img, channel[i] ) ); printf( "\t\theight = %d\n", heif_image_get_height( heif->img, channel[i] ) ); printf( "\t\tbits = %d\n", heif_image_get_bits_per_pixel( heif->img, channel[i] ) ); printf( "\t\thas_channel = %d\n", heif_image_has_channel( heif->img, channel[i] ) ); } } #endif /*DEBUG*/ } if( !heif->data ) { int image_width = heif_image_get_width( heif->img, heif_channel_interleaved ); int image_height = heif_image_get_height( heif->img, heif_channel_interleaved ); /* We can sometimes get inconsistency between the dimensions * reported on the handle, and the final image we fetch. Error * out to prevent a segv. */ if( image_width != heif->page_width || image_height != heif->page_height ) { vips_error( class->nickname, "%s", _( "bad image dimensions on decode" ) ); return( -1 ); } if( !(heif->data = heif_image_get_plane_readonly( heif->img, heif_channel_interleaved, &heif->stride )) ) { vips_error( class->nickname, "%s", _( "unable to get image data" ) ); return( -1 ); } } memcpy( VIPS_REGION_ADDR( or, 0, r->top ), heif->data + heif->stride * line, VIPS_IMAGE_SIZEOF_LINE( or->im ) ); return( 0 ); } static void vips_foreign_load_heif_minimise( VipsObject *object, VipsForeignLoadHeif *heif ) { vips_foreign_load_heif_close( heif ); } static int vips_foreign_load_heif_load( VipsForeignLoad *load ) { VipsForeignLoadHeif *heif = (VipsForeignLoadHeif *) load; VipsForeignLoadHeifClass *class = VIPS_FOREIGN_LOAD_HEIF_GET_CLASS( heif ); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( load ), 3 ); #ifdef DEBUG printf( "vips_foreign_load_heif_load: loading image\n" ); #endif /*DEBUG*/ if( class->open( heif ) ) return( -1 ); t[0] = vips_image_new(); if( vips_foreign_load_heif_set_header( heif, t[0] ) ) return( -1 ); /* CLose input immediately at end of read. */ g_signal_connect( t[0], "minimise", G_CALLBACK( vips_foreign_load_heif_minimise ), heif ); if( vips_image_generate( t[0], NULL, vips_foreign_load_heif_generate, NULL, heif, NULL ) || vips_sequential( t[0], &t[1], NULL ) || vips_image_write( t[1], load->real ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_heif_open( VipsForeignLoadHeif *heif ) { return( 0 ); } static void vips_foreign_load_heif_class_init( VipsForeignLoadHeifClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; VipsForeignLoadHeifClass *heif_class = (VipsForeignLoadHeifClass *) class; gobject_class->dispose = vips_foreign_load_heif_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "heifload_base"; object_class->description = _( "load a HEIF image" ); load_class->get_flags = vips_foreign_load_heif_get_flags; load_class->header = vips_foreign_load_heif_header; load_class->load = vips_foreign_load_heif_load; heif_class->open = vips_foreign_load_heif_open; VIPS_ARG_INT( class, "page", 2, _( "Page" ), _( "Load this page from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadHeif, page ), 0, 100000, 0 ); VIPS_ARG_INT( class, "n", 3, _( "n" ), _( "Load this many pages" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadHeif, n ), -1, 100000, 1 ); VIPS_ARG_BOOL( class, "thumbnail", 4, _( "Thumbnail" ), _( "Fetch thumbnail image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadHeif, thumbnail ), FALSE ); VIPS_ARG_BOOL( class, "autorotate", 21, _( "Autorotate" ), _( "Rotate image using exif orientation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadHeif, autorotate ), FALSE ); } static void vips_foreign_load_heif_init( VipsForeignLoadHeif *heif ) { heif->n = 1; } typedef struct _VipsForeignLoadHeifFile { VipsForeignLoadHeif parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadHeifFile; typedef VipsForeignLoadHeifClass VipsForeignLoadHeifFileClass; G_DEFINE_TYPE( VipsForeignLoadHeifFile, vips_foreign_load_heif_file, vips_foreign_load_heif_get_type() ); static int vips_foreign_load_heif_file_is_a( const char *filename ) { char buf[12]; if( vips__get_bytes( filename, (unsigned char *) buf, 12 ) != 12 ) return( 0 ); return( vips_foreign_load_heif_is_a( buf, 12 ) ); } static int vips_foreign_load_heif_file_header( VipsForeignLoad *load ) { VipsForeignLoadHeif *heif = (VipsForeignLoadHeif *) load; VipsForeignLoadHeifFile *file = (VipsForeignLoadHeifFile *) load; if( VIPS_FOREIGN_LOAD_CLASS( vips_foreign_load_heif_file_parent_class )->header( load ) ) { /* Close early if our base class fails to read. */ vips_foreign_load_heif_close( heif ); return( -1 ); } VIPS_SETSTR( load->out->filename, file->filename ); return( 0 ); } const char *vips__heif_suffs[] = { ".heic", ".heif", ".avif", NULL }; static int vips_foreign_load_heif_file_open( VipsForeignLoadHeif *heif ) { VipsForeignLoadHeifFile *file = (VipsForeignLoadHeifFile *) heif; if( !heif->ctx ) { struct heif_error error; heif->ctx = heif_context_alloc(); error = heif_context_read_from_file( heif->ctx, file->filename, NULL ); if( error.code ) { /* Make we close the fd as soon as we can on error. */ vips_foreign_load_heif_close( heif ); vips__heif_error( &error ); return( -1 ); } } return( VIPS_FOREIGN_LOAD_HEIF_CLASS( vips_foreign_load_heif_file_parent_class )->open( heif ) ); } static void vips_foreign_load_heif_file_class_init( VipsForeignLoadHeifFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; VipsForeignLoadHeifClass *heif_class = (VipsForeignLoadHeifClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "heifload"; foreign_class->suffs = vips__heif_suffs; load_class->is_a = vips_foreign_load_heif_file_is_a; load_class->header = vips_foreign_load_heif_file_header; heif_class->open = vips_foreign_load_heif_file_open; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadHeifFile, filename ), NULL ); } static void vips_foreign_load_heif_file_init( VipsForeignLoadHeifFile *file ) { } typedef struct _VipsForeignLoadHeifBuffer { VipsForeignLoadHeif parent_object; /* Load from a buffer. */ VipsArea *buf; } VipsForeignLoadHeifBuffer; typedef VipsForeignLoadHeifClass VipsForeignLoadHeifBufferClass; G_DEFINE_TYPE( VipsForeignLoadHeifBuffer, vips_foreign_load_heif_buffer, vips_foreign_load_heif_get_type() ); static gboolean vips_foreign_load_heif_buffer_is_a( const void *buf, size_t len ) { return( vips_foreign_load_heif_is_a( buf, len ) ); } static int vips_foreign_load_heif_buffer_open( VipsForeignLoadHeif *heif ) { VipsForeignLoadHeifBuffer *buffer = (VipsForeignLoadHeifBuffer *) heif; VIPS_DEBUG_MSG( "vips_foreign_load_heif_buffer_open:\n" ); if( !heif->ctx ) { struct heif_error error; heif->ctx = heif_context_alloc(); error = heif_context_read_from_memory( heif->ctx, buffer->buf->data, buffer->buf->length, NULL ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } } return( VIPS_FOREIGN_LOAD_HEIF_CLASS( vips_foreign_load_heif_buffer_parent_class )->open( heif ) ); } static void vips_foreign_load_heif_buffer_class_init( VipsForeignLoadHeifBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; VipsForeignLoadHeifClass *heif_class = (VipsForeignLoadHeifClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "heifload_buffer"; load_class->is_a_buffer = vips_foreign_load_heif_buffer_is_a; heif_class->open = vips_foreign_load_heif_buffer_open; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadHeifBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_heif_buffer_init( VipsForeignLoadHeifBuffer *buffer ) { } #endif /*HAVE_HEIF_DECODER*/ /** * vips_heifload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, page (top-level image number) to read * * @n: %gint, load this many pages * * @thumbnail: %gboolean, fetch thumbnail instead of image * * @autorotate: %gboolean, rotate image upright during load * * Read a HEIF image file into a VIPS image. * * Use @page to select a page to render, numbering from zero. If neither @n * nor @page are set, @page defaults to the primary page, otherwise to 0. * * Use @n to select the number of pages to render. The default is 1. Pages are * rendered in a vertical column. Set to -1 to mean "until the end of the * document". Use vips_grid() to reorganise pages. * * HEIF images have a primary image. The metadata item `heif-primary` gives * the page number of the primary. * * If @thumbnail is %TRUE, then fetch a stored thumbnail rather than the * image. * * Setting @autorotate to %TRUE will make the loader interpret the * orientation tag and automatically rotate the image appropriately during * load. * * If @autorotate is %FALSE, the metadata field #VIPS_META_ORIENTATION is set * to the value of the orientation tag. Applications may read and interpret * this field * as they wish later in processing. See vips_autorot(). Save * operations will use #VIPS_META_ORIENTATION, if present, to set the * orientation of output images. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_heifload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "heifload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_heifload_buffer: * @buf: (array length=len) (element-type guint8): memory area to load * @len: (type gsize): size of memory area * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, page (top-level image number) to read * * @n: %gint, load this many pages * * @thumbnail: %gboolean, fetch thumbnail instead of image * * @autorotate: %gboolean, rotate image upright during load * * Read a HEIF image file into a VIPS image. * Exactly as vips_heifload(), but read from a memory buffer. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_heifload(). * * Returns: 0 on success, -1 on error. */ int vips_heifload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "heifload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } libvips-8.9.1/libvips/foreign/heifsave.c000066400000000000000000000414601361153320700202460ustar00rootroot00000000000000/* save to heif * * 5/7/18 * - from niftisave.c * 3/7/19 [lovell] * - add "compression" option * 1/9/19 [meyermarcel] * - save alpha when necessary */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #ifdef HAVE_HEIF_ENCODER #include #include "pforeign.h" typedef struct _VipsForeignSaveHeif { VipsForeignSave parent_object; /* Coding quality factor (1-100). */ int Q; /* Lossless compression. */ gboolean lossless; /* Compression format */ VipsForeignHeifCompression compression; /* The image we save. This is a copy of save->ready since we need to * be able to update the metadata. */ VipsImage *image; int page_width; int page_height; int n_pages; struct heif_context *ctx; struct heif_encoder *encoder; /* The current page we are writing. */ struct heif_image_handle *handle; /* The current page in memory which we build as we scan down the * image. */ struct heif_image *img; /* The libheif memory area we fill with pixels from the libvips * pipe. */ uint8_t *data; int stride; } VipsForeignSaveHeif; typedef VipsForeignSaveClass VipsForeignSaveHeifClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSaveHeif, vips_foreign_save_heif, VIPS_TYPE_FOREIGN_SAVE ); static void vips_foreign_save_heif_dispose( GObject *gobject ) { VipsForeignSaveHeif *heif = (VipsForeignSaveHeif *) gobject; VIPS_UNREF( heif->image ); VIPS_FREEF( heif_image_release, heif->img ); VIPS_FREEF( heif_image_handle_release, heif->handle ); VIPS_FREEF( heif_encoder_release, heif->encoder ); VIPS_FREEF( heif_context_free, heif->ctx ); G_OBJECT_CLASS( vips_foreign_save_heif_parent_class )-> dispose( gobject ); } #ifdef HAVE_HEIF_CONTEXT_ADD_EXIF_METADATA typedef struct heif_error (*libheif_metadata_fn)( struct heif_context *, const struct heif_image_handle *, const void *, int ); struct _VipsForeignSaveHeifMetadata { const char *name; libheif_metadata_fn saver; } libheif_metadata[] = { { VIPS_META_EXIF_NAME, heif_context_add_exif_metadata }, { VIPS_META_XMP_NAME, heif_context_add_XMP_metadata } }; #endif /*HAVE_HEIF_CONTEXT_ADD_EXIF_METADATA*/ static int vips_foreign_save_heif_write_metadata( VipsForeignSaveHeif *heif ) { #ifdef HAVE_HEIF_CONTEXT_ADD_EXIF_METADATA int i; struct heif_error error; for( i = 0; i < VIPS_NUMBER( libheif_metadata ); i++ ) if( vips_image_get_typeof( heif->image, libheif_metadata[i].name ) ) { const void *data; size_t length; #ifdef DEBUG printf( "attaching %s ..\n", libheif_metadata[i].name ); #endif /*DEBUG*/ if( vips_image_get_blob( heif->image, VIPS_META_EXIF_NAME, &data, &length ) ) return( -1 ); error = libheif_metadata[i].saver( heif->ctx, heif->handle, data, length ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } } #endif /*HAVE_HEIF_CONTEXT_ADD_EXIF_METADATA*/ return( 0 ); } static int vips_foreign_save_heif_write_page( VipsForeignSaveHeif *heif, int page ) { VipsForeignSave *save = (VipsForeignSave *) heif; struct heif_error error; struct heif_encoding_options *options; #ifdef HAVE_HEIF_COLOR_PROFILE if( !save->strip && vips_image_get_typeof( heif->image, VIPS_META_ICC_NAME ) ) { const void *data; size_t length; #ifdef DEBUG printf( "attaching profile ..\n" ); #endif /*DEBUG*/ if( vips_image_get_blob( heif->image, VIPS_META_ICC_NAME, &data, &length ) ) return( -1 ); /* FIXME .. also see heif_image_set_nclx_color_profile() */ error = heif_image_set_raw_color_profile( heif->img, "rICC", data, length ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } } #endif /*HAVE_HEIF_COLOR_PROFILE*/ #ifdef HAVE_HEIF_ENCODING_OPTIONS_ALLOC options = heif_encoding_options_alloc(); if( vips_image_hasalpha( heif->image ) ) options->save_alpha_channel = 1; #else /*!HAVE_HEIF_ENCODING_OPTIONS_ALLOC*/ options = NULL; #endif /*HAVE_HEIF_ENCODING_OPTIONS_ALLOC*/ #ifdef DEBUG printf( "encoding ..\n" ); #endif /*DEBUG*/ error = heif_context_encode_image( heif->ctx, heif->img, heif->encoder, options, &heif->handle ); #ifdef HAVE_HEIF_ENCODING_OPTIONS_ALLOC heif_encoding_options_free( options ); #endif /*HAVE_HEIF_ENCODING_OPTIONS_ALLOC*/ if( error.code ) { vips__heif_error( &error ); return( -1 ); } #ifdef HAVE_HEIF_CONTEXT_SET_PRIMARY_IMAGE if( vips_image_get_typeof( heif->image, "heif-primary" ) ) { int primary; if( vips_image_get_int( heif->image, "heif-primary", &primary ) ) return( -1 ); if( page == primary ) { error = heif_context_set_primary_image( heif->ctx, heif->handle ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } } } #endif /*HAVE_HEIF_CONTEXT_SET_PRIMARY_IMAGE*/ if( !save->strip && vips_foreign_save_heif_write_metadata( heif ) ) return( -1 ); VIPS_FREEF( heif_image_handle_release, heif->handle ); return( 0 ); } static int vips_foreign_save_heif_write_block( VipsRegion *region, VipsRect *area, void *a ) { VipsForeignSaveHeif *heif = (VipsForeignSaveHeif *) a; int y; #ifdef DEBUG printf( "vips_foreign_save_heif_write_block: y = %d\n", area->top ); #endif /*DEBUG*/ /* Copy a line at a time into our output image, write each time the * image fills. */ for( y = 0; y < area->height; y++ ) { /* Y in page. */ int page = (area->top + y) / heif->page_height; int line = (area->top + y) % heif->page_height; VipsPel *p = VIPS_REGION_ADDR( region, 0, area->top + y ); VipsPel *q = heif->data + line * heif->stride; memcpy( q, p, VIPS_IMAGE_SIZEOF_LINE( region->im ) ); /* Did we just write the final line? Write as a new page * into the output. */ if( line == heif->page_height - 1 ) if( vips_foreign_save_heif_write_page( heif, page ) ) return( -1 ); } return( 0 ); } static int vips_foreign_save_heif_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveHeif *heif = (VipsForeignSaveHeif *) object; struct heif_error error; if( VIPS_OBJECT_CLASS( vips_foreign_save_heif_parent_class )-> build( object ) ) return( -1 ); /* Only rebuild exif if there's an EXIF block or we'll make a * default set of tags. EXIF is not required for heif. */ if( vips_copy( save->ready, &heif->image, NULL ) ) return( -1 ); if( vips_image_get_typeof( heif->image, VIPS_META_EXIF_NAME ) ) if( vips__exif_update( heif->image ) ) return( -1 ); error = heif_context_get_encoder_for_format( heif->ctx, (enum heif_compression_format) heif->compression, &heif->encoder ); if( error.code ) { if( error.code == heif_error_Unsupported_filetype ) vips_error( "heifsave", "%s", _( "Unsupported compression" ) ); else vips__heif_error( &error ); return( -1 ); } error = heif_encoder_set_lossy_quality( heif->encoder, heif->Q ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } error = heif_encoder_set_lossless( heif->encoder, heif->lossless ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } /* TODO .. support extra per-encoder params with * heif_encoder_list_parameters(). */ heif->page_width = heif->image->Xsize; heif->page_height = vips_image_get_page_height( heif->image ); heif->n_pages = heif->image->Ysize / heif->page_height; /* Make a heif image the size of a page. We send sink_disc() output * here and write a frame each time it fills. */ error = heif_image_create( heif->page_width, heif->page_height, heif_colorspace_RGB, vips_image_hasalpha( heif->image ) ? heif_chroma_interleaved_RGBA : heif_chroma_interleaved_RGB, &heif->img ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } error = heif_image_add_plane( heif->img, heif_channel_interleaved, heif->page_width, heif->page_height, vips_image_hasalpha( heif->image ) ? 32 : 24 ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } heif->data = heif_image_get_plane( heif->img, heif_channel_interleaved, &heif->stride ); /* Write data. */ if( vips_sink_disc( heif->image, vips_foreign_save_heif_write_block, heif ) ) return( -1 ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR static int vips_heif_bandfmt[10] = { /* UC C US S UI I F X D DX */ UC, UC, UC, UC, UC, UC, UC, UC, UC, UC }; static void vips_foreign_save_heif_class_init( VipsForeignSaveHeifClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->dispose = vips_foreign_save_heif_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "heifsave_base"; object_class->description = _( "save image in HEIF format" ); object_class->build = vips_foreign_save_heif_build; foreign_class->suffs = vips__heif_suffs; save_class->saveable = VIPS_SAVEABLE_RGBA_ONLY; save_class->format_table = vips_heif_bandfmt; VIPS_ARG_INT( class, "Q", 10, _( "Q" ), _( "Q factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveHeif, Q ), 1, 100, 50 ); VIPS_ARG_BOOL( class, "lossless", 13, _( "Lossless" ), _( "Enable lossless compression" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveHeif, lossless ), FALSE ); VIPS_ARG_ENUM( class, "compression", 14, _( "compression" ), _( "Compression format" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveHeif, compression ), VIPS_TYPE_FOREIGN_HEIF_COMPRESSION, VIPS_FOREIGN_HEIF_COMPRESSION_HEVC ); } static void vips_foreign_save_heif_init( VipsForeignSaveHeif *heif ) { heif->ctx = heif_context_alloc(); heif->Q = 50; heif->compression = VIPS_FOREIGN_HEIF_COMPRESSION_HEVC; } typedef struct _VipsForeignSaveHeifFile { VipsForeignSaveHeif parent_object; /* Filename for save. */ char *filename; } VipsForeignSaveHeifFile; typedef VipsForeignSaveHeifClass VipsForeignSaveHeifFileClass; G_DEFINE_TYPE( VipsForeignSaveHeifFile, vips_foreign_save_heif_file, vips_foreign_save_heif_get_type() ); static int vips_foreign_save_heif_file_build( VipsObject *object ) { VipsForeignSaveHeif *heif = (VipsForeignSaveHeif *) object; VipsForeignSaveHeifFile *file = (VipsForeignSaveHeifFile *) object; struct heif_error error; if( VIPS_OBJECT_CLASS( vips_foreign_save_heif_file_parent_class )-> build( object ) ) return( -1 ); /* This has to come right at the end :-( so there's no support for * incremental writes. */ error = heif_context_write_to_file( heif->ctx, file->filename ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } return( 0 ); } static void vips_foreign_save_heif_file_class_init( VipsForeignSaveHeifFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "heifsave"; object_class->build = vips_foreign_save_heif_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveHeifFile, filename ), NULL ); } static void vips_foreign_save_heif_file_init( VipsForeignSaveHeifFile *file ) { } typedef struct _VipsForeignSaveHeifBuffer { VipsForeignSaveHeif parent_object; /* Save to a buffer. */ VipsArea *buf; } VipsForeignSaveHeifBuffer; typedef VipsForeignSaveHeifClass VipsForeignSaveHeifBufferClass; G_DEFINE_TYPE( VipsForeignSaveHeifBuffer, vips_foreign_save_heif_buffer, vips_foreign_save_heif_get_type() ); struct heif_error vips_foreign_save_heif_buffer_write( struct heif_context *ctx, const void *data, size_t length, void *userdata ) { VipsForeignSaveHeif *heif = (VipsForeignSaveHeif *) userdata; VipsBlob *blob; struct heif_error error; void *data_copy; /* FIXME .. we have to memcpy()! */ data_copy = vips_malloc( NULL, length ); memcpy( data_copy, data, length ); blob = vips_blob_new( (VipsCallbackFn) vips_free, data_copy, length ); g_object_set( heif, "buffer", blob, NULL ); vips_area_unref( VIPS_AREA( blob ) ); error.code = 0; return( error ); } static int vips_foreign_save_heif_buffer_build( VipsObject *object ) { VipsForeignSaveHeif *heif = (VipsForeignSaveHeif *) object; /* FIXME ... argh, allocating on the stack! But the example code does * this too. */ struct heif_writer writer; struct heif_error error; if( VIPS_OBJECT_CLASS( vips_foreign_save_heif_buffer_parent_class )-> build( object ) ) return( -1 ); /* This has to come right at the end :-( so there's no support for * incremental writes. */ writer.writer_api_version = 1; writer.write = vips_foreign_save_heif_buffer_write; error = heif_context_write( heif->ctx, &writer, heif ); if( error.code ) { vips__heif_error( &error ); return( -1 ); } return( 0 ); } static void vips_foreign_save_heif_buffer_class_init( VipsForeignSaveHeifBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "heifsave_buffer"; object_class->build = vips_foreign_save_heif_buffer_build; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to save to" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignSaveHeifBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_save_heif_buffer_init( VipsForeignSaveHeifBuffer *buffer ) { } #endif /*HAVE_HEIF_ENCODER*/ /** * vips_heifsave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @Q: %gint, quality factor * * @lossless: %gboolean, enable lossless encoding * * @compression: #VipsForeignHeifCompression, write with this compression * * Write a VIPS image to a file in HEIF format. * * Use @Q to set the compression factor. Default 50, which seems to be roughly * what the iphone uses. Q 30 gives about the same quality as JPEG Q 75. * * Set @lossless %TRUE to switch to lossless compression. * * Use @compression to set the encoder e.g. HEVC, AVC, AV1 * * See also: vips_image_write_to_file(), vips_heifload(). * * Returns: 0 on success, -1 on error. */ int vips_heifsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "heifsave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_heifsave_buffer: (method) * @in: image to save * @buf: (array length=len) (element-type guint8): return output buffer here * @len: (type gsize): return output length here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @Q: %gint, quality factor * * @lossless: %gboolean, enable lossless encoding * * @compression: #VipsForeignHeifCompression, write with this compression * * As vips_heifsave(), but save to a memory buffer. * * The address of the buffer is returned in @obuf, the length of the buffer in * @olen. You are responsible for freeing the buffer with g_free() when you * are done with it. * * See also: vips_heifsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_heifsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) { va_list ap; VipsArea *area; int result; area = NULL; va_start( ap, len ); result = vips_call_split( "heifsave_buffer", ap, in, &area ); va_end( ap ); if( !result && area ) { if( buf ) { *buf = area->data; area->free_fn = NULL; } if( len ) *len = area->length; vips_area_unref( area ); } return( result ); } libvips-8.9.1/libvips/foreign/jpeg.h000066400000000000000000000037601361153320700174070ustar00rootroot00000000000000/* common defs for jpeg read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_JPEG_H #define VIPS_JPEG_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* jpeglib includes jconfig.h, which can define HAVE_STDLIB_H ... which we * also define. Make sure it's turned off. */ #ifdef HAVE_STDLIB_H #undef HAVE_STDLIB_H #endif /*HAVE_STDLIB_H*/ /* jpeglib defines its own boolean type as an enum which then clashes with * everyone elses. Rename it as jboolean. */ #define boolean jboolean /* Any TRUE/FALSE macros which have crept in will cause terrible confusion as * well. */ #ifdef TRUE #undef TRUE #endif /*TRUE*/ #ifdef FALSE #undef FALSE #endif /*FALSE*/ #include #include /* Define a new error handler for when we bomb out. */ typedef struct { /* Public fields. */ struct jpeg_error_mgr pub; /* Private stuff for us. */ jmp_buf jmp; /* longjmp() here to get back to VIPS */ FILE *fp; /* fclose() if non-NULL */ } ErrorManager; void vips__new_output_message( j_common_ptr cinfo ); void vips__new_error_exit( j_common_ptr cinfo ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_JPEG_H*/ libvips-8.9.1/libvips/foreign/jpeg2vips.c000066400000000000000000000572311361153320700203700ustar00rootroot00000000000000/* wrap jpeg library for read * * 28/11/03 JC * - better no-overshoot on tile loop * 12/11/04 * - better demand size choice for eval * 30/6/05 JC * - update im_error()/im_warn() * - now loads and saves exif data * 30/7/05 * - now loads ICC profiles * - now saves ICC profiles from the VIPS header * 24/8/05 * - jpeg load sets vips xres/yres from exif, if possible * - jpeg save sets exif xres/yres from vips, if possible * 29/8/05 * - cut from old vips_jpeg.c * 13/10/06 * - add #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_JPEG #include #include #include #include #include #include #include #include "pforeign.h" #include "jpeg.h" /* Stuff we track during a read. */ typedef struct _ReadJpeg { /* Shrink by this much during load. 1, 2, 4, 8. */ int shrink; /* Fail on warning. */ gboolean fail; struct jpeg_decompress_struct cinfo; ErrorManager eman; gboolean invert_pels; /* Track the y pos during a read with this. */ int y_pos; /* Use orientation tag to automatically rotate and flip image * during load. */ gboolean autorotate; /* cinfo->output_width and height can be larger than we want since * libjpeg rounds up on shrink-on-load. This is the real size we will * output, as opposed to the size we decompress to. */ int output_width; int output_height; /* The source we read from. */ VipsSource *source; } ReadJpeg; #define SOURCE_BUFFER_SIZE (4096) /* Private struct for source input. */ typedef struct { /* Public jpeg fields. */ struct jpeg_source_mgr pub; /* Private stuff during read. */ VipsSource *source; unsigned char buf[SOURCE_BUFFER_SIZE]; } Source; static void source_init_source( j_decompress_ptr cinfo ) { Source *src = (Source *) cinfo->src; /* Start off empty ... libjpeg will call fill_input_buffer to get the * first bytes. */ src->pub.next_input_byte = src->buf; src->pub.bytes_in_buffer = 0; } /* Fill the input buffer --- called whenever buffer is emptied. */ static boolean source_fill_input_buffer( j_decompress_ptr cinfo ) { static const JOCTET eoi_buffer[4] = { (JOCTET) 0xFF, (JOCTET) JPEG_EOI, 0, 0 }; Source *src = (Source *) cinfo->src; size_t read; if( (read = vips_source_read( src->source, src->buf, SOURCE_BUFFER_SIZE )) > 0 ) { src->pub.next_input_byte = src->buf; src->pub.bytes_in_buffer = read; } else { WARNMS( cinfo, JWRN_JPEG_EOF ); src->pub.next_input_byte = eoi_buffer; src->pub.bytes_in_buffer = 2; } return( TRUE ); } static void skip_input_data( j_decompress_ptr cinfo, long num_bytes ) { Source *src = (Source *) cinfo->src; if( num_bytes > 0 ) { while (num_bytes > (long) src->pub.bytes_in_buffer) { num_bytes -= (long) src->pub.bytes_in_buffer; (void) (*src->pub.fill_input_buffer) (cinfo); /* note we assume that fill_input_buffer will never * return FALSE, so suspension need not be handled. */ } src->pub.next_input_byte += (size_t) num_bytes; src->pub.bytes_in_buffer -= (size_t) num_bytes; } } static int readjpeg_open_input( ReadJpeg *jpeg ) { j_decompress_ptr cinfo = &jpeg->cinfo; if( jpeg->source && !cinfo->src ) { Source *src; if( vips_source_rewind( jpeg->source ) ) return( -1 ); cinfo->src = (struct jpeg_source_mgr *) (*cinfo->mem->alloc_small)( (j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof( Source ) ); src = (Source *) cinfo->src; src->source = jpeg->source; src->pub.init_source = source_init_source; src->pub.fill_input_buffer = source_fill_input_buffer; src->pub.resync_to_restart = jpeg_resync_to_restart; src->pub.skip_input_data = skip_input_data; src->pub.bytes_in_buffer = 0; src->pub.next_input_byte = src->buf; } return( 0 ); } /* This can be called many times. */ static int readjpeg_free( ReadJpeg *jpeg ) { if( jpeg->eman.pub.num_warnings != 0 ) { g_warning( _( "read gave %ld warnings" ), jpeg->eman.pub.num_warnings ); g_warning( "%s", vips_error_buffer() ); /* Make the message only appear once. */ jpeg->eman.pub.num_warnings = 0; } /* Don't call jpeg_finish_decompress(). It just checks the tail of the * file and who cares about that. All mem is freed in * jpeg_destroy_decompress(). */ /* I don't think this can fail. It's harmless to call many times. */ jpeg_destroy_decompress( &jpeg->cinfo ); VIPS_UNREF( jpeg->source ); return( 0 ); } static void readjpeg_close_cb( VipsObject *object, ReadJpeg *jpeg ) { (void) readjpeg_free( jpeg ); } static void readjpeg_minimise_cb( VipsImage *image, ReadJpeg *jpeg ) { vips_source_minimise( jpeg->source ); } static ReadJpeg * readjpeg_new( VipsSource *source, VipsImage *out, int shrink, gboolean fail, gboolean autorotate ) { ReadJpeg *jpeg; if( !(jpeg = VIPS_NEW( out, ReadJpeg )) ) return( NULL ); jpeg->source = source; g_object_ref( source ); jpeg->shrink = shrink; jpeg->fail = fail; jpeg->cinfo.err = jpeg_std_error( &jpeg->eman.pub ); jpeg->eman.pub.error_exit = vips__new_error_exit; jpeg->eman.pub.output_message = vips__new_output_message; jpeg->eman.fp = NULL; jpeg->y_pos = 0; jpeg->autorotate = autorotate; /* This is used by the error handlers to signal invalidate on the * output image. */ jpeg->cinfo.client_data = out; /* jpeg_create_decompress() can fail on some sanity checks. Don't * readjpeg_free() since we don't want to jpeg_destroy_decompress(). */ if( setjmp( jpeg->eman.jmp ) ) return( NULL ); jpeg_create_decompress( &jpeg->cinfo ); g_signal_connect( out, "close", G_CALLBACK( readjpeg_close_cb ), jpeg ); g_signal_connect( out, "minimise", G_CALLBACK( readjpeg_minimise_cb ), jpeg ); return( jpeg ); } static const char * find_chroma_subsample( struct jpeg_decompress_struct *cinfo ) { /* libjpeg only uses 4:4:4 and 4:2:0, confusingly. * * http://poynton.ca/PDFs/Chroma_subsampling_notation.pdf */ gboolean has_subsample = cinfo->max_h_samp_factor > 1 || cinfo->max_v_samp_factor > 1; gboolean is_cmyk = cinfo->num_components > 3; return( is_cmyk ? (has_subsample ? "4:2:0:4" : "4:4:4:4" ) : (has_subsample ? "4:2:0" : "4:4:4") ); } static int attach_blob( VipsImage *im, const char *field, void *data, size_t data_length ) { /* Only use the first one. */ if( vips_image_get_typeof( im, field ) ) { #ifdef DEBUG printf( "attach_blob: second %s block, ignoring\n", field ); #endif /*DEBUG*/ return( 0 ); } #ifdef DEBUG printf( "attach_blob: attaching %zd bytes of %s\n", data_length, field ); #endif /*DEBUG*/ vips_image_set_blob_copy( im, field, data, data_length ); return( 0 ); } /* data is the XMP string ... it'll have something like * "http://ns.adobe.com/xap/1.0/" at the front, then a null character, then * the real XMP. */ static int attach_xmp_blob( VipsImage *im, void *data, size_t data_length ) { char *p = (char *) data; int i; if( data_length < 4 || !vips_isprefix( "http", p ) ) return( 0 ); /* Search for a null char within the first few characters. 80 * should be plenty for a basic URL. * * -2 for the extra null. */ for( i = 0; i < VIPS_MIN( 80, data_length - 2 ); i++ ) if( !p[i] ) break; if( p[i] ) return( 0 ); return( attach_blob( im, VIPS_META_XMP_NAME, p + i + 1, data_length - i - 1 ) ); } /* Number of app2 sections we can capture. Each one can be 64k, so 6400k should * be enough for anyone (haha). */ #define MAX_APP2_SECTIONS (100) /* Read a cinfo to a VIPS image. Set invert_pels if the pixel reader needs to * do 255-pel. */ static int read_jpeg_header( ReadJpeg *jpeg, VipsImage *out ) { struct jpeg_decompress_struct *cinfo = &jpeg->cinfo; jpeg_saved_marker_ptr p; VipsInterpretation interpretation; double xres, yres; /* Capture app2 sections here for assembly. */ void *app2_data[MAX_APP2_SECTIONS] = { 0 }; size_t app2_data_length[MAX_APP2_SECTIONS] = { 0 }; size_t data_length; int i; /* Read JPEG header. libjpeg will set out_color_space sanely for us * for YUV YCCK etc. */ jpeg_read_header( cinfo, TRUE ); cinfo->scale_denom = jpeg->shrink; cinfo->scale_num = 1; jpeg_calc_output_dimensions( cinfo ); jpeg->invert_pels = FALSE; switch( cinfo->out_color_space ) { case JCS_GRAYSCALE: interpretation = VIPS_INTERPRETATION_B_W; break; case JCS_CMYK: interpretation = VIPS_INTERPRETATION_CMYK; /* CMYKs are almost always returned inverted, but see below. */ jpeg->invert_pels = TRUE; break; case JCS_RGB: default: interpretation = VIPS_INTERPRETATION_sRGB; break; } /* Get the jfif resolution. exif may overwrite this later. */ xres = 1.0; yres = 1.0; if( cinfo->saw_JFIF_marker && cinfo->X_density != 1U && cinfo->Y_density != 1U ) { #ifdef DEBUG printf( "read_jpeg_header: seen jfif _density %d, %d\n", cinfo->X_density, cinfo->Y_density ); #endif /*DEBUG*/ switch( cinfo->density_unit ) { case 0: /* None. Just set. */ xres = cinfo->X_density; yres = cinfo->Y_density; break; case 1: /* Pixels per inch. */ xres = cinfo->X_density / 25.4; yres = cinfo->Y_density / 25.4; break; case 2: /* Pixels per cm. */ xres = cinfo->X_density / 10.0; yres = cinfo->Y_density / 10.0; break; default: g_warning( "%s", _( "unknown JFIF resolution unit" ) ); break; } #ifdef DEBUG printf( "read_jpeg_header: seen jfif resolution %g, %g p/mm\n", xres, yres ); #endif /*DEBUG*/ } /* Set VIPS header. */ vips_image_init_fields( out, cinfo->output_width, cinfo->output_height, cinfo->output_components, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, interpretation, xres, yres ); VIPS_SETSTR( out->filename, vips_connection_filename( VIPS_CONNECTION( jpeg->source ) ) ); vips_image_pipelinev( out, VIPS_DEMAND_STYLE_FATSTRIP, NULL ); /* cinfo->output_width and cinfo->output_height round up with * shrink-on-load. For example, if the image is 1801 pixels across and * we shrink by 4, the output will be 450.25 pixels across, * cinfo->output_width with be 451, and libjpeg will write a black * column of pixels down the right. * * We must strictly round down, since we don't want fractional pixels * along the bottom and right. */ jpeg->output_width = cinfo->image_width / jpeg->shrink; jpeg->output_height = cinfo->image_height / jpeg->shrink; /* Interlaced jpegs need lots of memory to read, so our caller needs * to know. */ (void) vips_image_set_int( out, "jpeg-multiscan", jpeg_has_multiple_scans( cinfo ) ); /* 8.7 adds this for PNG as well, so we have a new format-neutral name. */ if( jpeg_has_multiple_scans( cinfo ) ) vips_image_set_int( out, "interlaced", 1 ); (void) vips_image_set_string( out, "jpeg-chroma-subsample", find_chroma_subsample( cinfo ) ); /* Look for EXIF and ICC profile. */ for( p = cinfo->marker_list; p; p = p->next ) { #ifdef DEBUG { printf( "read_jpeg_header: seen %u bytes of APP%d\n", p->data_length, p->marker - JPEG_APP0 ); for( i = 0; i < 10; i++ ) printf( "\t%d) '%c' (%d)\n", i, p->data[i], p->data[i] ); } #endif /*DEBUG*/ switch( p->marker ) { case JPEG_APP0 + 1: /* Possible EXIF or XMP data. */ if( p->data_length > 4 && vips_isprefix( "Exif", (char *) p->data ) && attach_blob( out, VIPS_META_EXIF_NAME, p->data, p->data_length ) ) return( -1 ); if( p->data_length > 4 && vips_isprefix( "http", (char *) p->data ) && attach_xmp_blob( out, p->data, p->data_length ) ) return( -1 ); break; case JPEG_APP0 + 2: /* Possible ICC profile. */ if( p->data_length > 14 && vips_isprefix( "ICC_PROFILE", (char *) p->data ) ) { /* cur_marker numbers from 1, according to * spec. */ int cur_marker = p->data[12] - 1; if( cur_marker >= 0 && cur_marker < MAX_APP2_SECTIONS ) { app2_data[cur_marker] = p->data + 14; app2_data_length[cur_marker] = p->data_length - 14; } } break; case JPEG_APP0 + 13: /* Possible IPTC data block. */ if( p->data_length > 5 && vips_isprefix( "Photo", (char *) p->data ) ) { if( attach_blob( out, VIPS_META_IPTC_NAME, p->data, p->data_length ) ) return( -1 ); /* Older versions of libvips used this misspelt * name :-( attach under this name too for * compatibility. */ if( attach_blob( out, "ipct-data", p->data, p->data_length ) ) return( -1 ); } break; case JPEG_APP0 + 14: /* Adobe block. There's a lot of confusion about * whether or not CMYK jpg images are inverted. For * the images we have, it seems they should always * invert. * * See: https://sno.phy.queensu.ca/~phil/exiftool/\ * TagNames/JPEG.html#Adobe * * data[11] == 0 - unknown * data[11] == 1 - YCbCr * data[11] == 2 - YCCK * * Leave this code here in case we come up with a * better rule. */ if( p->data_length >= 12 && vips_isprefix( "Adobe", (char *) p->data ) ) { if( p->data[11] == 0 ) { #ifdef DEBUG printf( "complete Adobe block, not YCCK image\n" ); #endif /*DEBUG*/ //jpeg->invert_pels = FALSE; } } break; default: #ifdef DEBUG printf( "read_jpeg_header: " "ignoring %u byte APP%d block\n", p->data_length, p->marker - JPEG_APP0 ); #endif /*DEBUG*/ break; } } /* Assemble ICC sections. */ data_length = 0; for( i = 0; i < MAX_APP2_SECTIONS && app2_data[i]; i++ ) data_length += app2_data_length[i]; if( data_length ) { unsigned char *data; int p; #ifdef DEBUG printf( "read_jpeg_header: assembled %zd byte ICC profile\n", data_length ); #endif /*DEBUG*/ if( !(data = vips_malloc( NULL, data_length )) ) return( -1 ); p = 0; for( i = 0; i < MAX_APP2_SECTIONS && app2_data[i]; i++ ) { memcpy( data + p, app2_data[i], app2_data_length[i] ); p += app2_data_length[i]; } vips_image_set_blob( out, VIPS_META_ICC_NAME, (VipsCallbackFn) vips_free, data, data_length ); } return( 0 ); } static int read_jpeg_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; ReadJpeg *jpeg = (ReadJpeg *) a; struct jpeg_decompress_struct *cinfo = &jpeg->cinfo; int sz = cinfo->output_width * cinfo->output_components; int y; #ifdef DEBUG_VERBOSE printf( "read_jpeg_generate: %p line %d, %d rows\n", g_thread_self(), r->top, r->height ); #endif /*DEBUG_VERBOSE*/ VIPS_GATE_START( "read_jpeg_generate: work" ); /* We're inside a tilecache where tiles are the full image width, so * this should always be true. */ g_assert( r->left == 0 ); g_assert( r->width == or->im->Xsize ); g_assert( VIPS_RECT_BOTTOM( r ) <= or->im->Ysize ); /* Tiles should always be on a 8-pixel boundary. */ g_assert( r->top % 8 == 0 ); /* Tiles should always be a strip in height, unless it's the final * strip. */ g_assert( r->height == VIPS_MIN( 8, or->im->Ysize - r->top ) ); /* And check that y_pos is correct. It should be, since we are inside * a vips_sequential(). */ if( r->top != jpeg->y_pos ) { VIPS_GATE_STOP( "read_jpeg_generate: work" ); vips_error( "VipsJpeg", _( "out of order read at line %d" ), jpeg->y_pos ); return( -1 ); } /* Here for longjmp() from vips__new_error_exit(). */ if( setjmp( jpeg->eman.jmp ) ) { VIPS_GATE_STOP( "read_jpeg_generate: work" ); #ifdef DEBUG printf( "read_jpeg_generate: longjmp() exit\n" ); #endif /*DEBUG*/ return( -1 ); } /* If --fail is set, we make read fail on any warnings. This * will stop on any errors from the previous jpeg_read_scanlines(). * libjpeg warnings are used for serious image corruption, like * truncated files. */ if( jpeg->eman.pub.num_warnings > 0 && jpeg->fail ) { VIPS_GATE_STOP( "read_jpeg_generate: work" ); /* Only fail once. */ jpeg->eman.pub.num_warnings = 0; return( -1 ); } for( y = 0; y < r->height; y++ ) { JSAMPROW row_pointer[1]; row_pointer[0] = (JSAMPLE *) VIPS_REGION_ADDR( or, 0, r->top + y ); jpeg_read_scanlines( cinfo, &row_pointer[0], 1 ); if( jpeg->invert_pels ) { int x; for( x = 0; x < sz; x++ ) row_pointer[0][x] = 255 - row_pointer[0][x]; } jpeg->y_pos += 1; } VIPS_GATE_STOP( "read_jpeg_generate: work" ); return( 0 ); } /* Auto-rotate, if rotate_image is set. */ static VipsImage * read_jpeg_rotate( VipsObject *process, VipsImage *im ) { VipsImage **t = (VipsImage **) vips_object_local_array( process, 3 ); VipsAngle angle = vips_autorot_get_angle( im ); if( angle != VIPS_ANGLE_D0 ) { /* Need to copy to memory or disc, we have to stay seq. */ const guint64 image_size = VIPS_IMAGE_SIZEOF_IMAGE( im ); const guint64 disc_threshold = vips_get_disc_threshold(); if( image_size > disc_threshold ) t[0] = vips_image_new_temp_file( "%s.v" ); else t[0] = vips_image_new_memory(); if( vips_image_write( im, t[0] ) || vips_rot( t[0], &t[1], angle, NULL ) ) return( NULL ); im = t[1]; if( vips_copy( im, &t[2], NULL ) ) return( NULL ); im = t[2]; vips_autorot_remove_angle( im ); } return( im ); } /* Read a cinfo to a VIPS image. */ static int read_jpeg_image( ReadJpeg *jpeg, VipsImage *out ) { struct jpeg_decompress_struct *cinfo = &jpeg->cinfo; VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 3 ); VipsImage *im; /* Here for longjmp() from vips__new_error_exit(). */ if( setjmp( jpeg->eman.jmp ) ) return( -1 ); t[0] = vips_image_new(); if( read_jpeg_header( jpeg, t[0] ) ) return( -1 ); jpeg_start_decompress( cinfo ); #ifdef DEBUG printf( "read_jpeg_image: starting decompress\n" ); #endif /*DEBUG*/ /* We must crop after the seq, or our generate may not be asked for * full lines of pixels and will attempt to write beyond the buffer. */ if( vips_image_generate( t[0], NULL, read_jpeg_generate, NULL, jpeg, NULL ) || vips_sequential( t[0], &t[1], "tile_height", 8, NULL ) || vips_extract_area( t[1], &t[2], 0, 0, jpeg->output_width, jpeg->output_height, NULL ) ) return( -1 ); im = t[2]; if( jpeg->autorotate ) im = read_jpeg_rotate( VIPS_OBJECT( out ), im ); if( vips_image_write( im, out ) ) return( -1 ); return( 0 ); } static int vips__jpeg_read( ReadJpeg *jpeg, VipsImage *out, gboolean header_only ) { /* Need to read in APP1 (EXIF metadata), APP2 (ICC profile), APP13 * (photoshop IPTC) and APP14 (Adobe flags). */ jpeg_save_markers( &jpeg->cinfo, JPEG_APP0 + 1, 0xffff ); jpeg_save_markers( &jpeg->cinfo, JPEG_APP0 + 2, 0xffff ); jpeg_save_markers( &jpeg->cinfo, JPEG_APP0 + 13, 0xffff ); jpeg_save_markers( &jpeg->cinfo, JPEG_APP0 + 14, 0xffff ); #ifdef DEBUG { int i; /* Handy for debugging ... spot any extra markers. */ for( i = 0; i < 16; i++ ) jpeg_save_markers( &jpeg->cinfo, JPEG_APP0 + i, 0xffff ); } #endif /*DEBUG*/ /* Convert! */ if( header_only ) { if( read_jpeg_header( jpeg, out ) ) return( -1 ); /* Patch in the correct size. */ out->Xsize = jpeg->output_width; out->Ysize = jpeg->output_height; /* Swap width and height if we're going to rotate this image. */ if( jpeg->autorotate ) { VipsAngle angle = vips_autorot_get_angle( out ); if( angle == VIPS_ANGLE_D90 || angle == VIPS_ANGLE_D270 ) VIPS_SWAP( int, out->Xsize, out->Ysize ); /* We won't be returning an orientation tag. */ vips_autorot_remove_angle( out ); } } else { if( read_jpeg_image( jpeg, out ) ) return( -1 ); } return( 0 ); } int vips__jpeg_read_source( VipsSource *source, VipsImage *out, gboolean header_only, int shrink, int fail, gboolean autorotate ) { ReadJpeg *jpeg; if( !(jpeg = readjpeg_new( source, out, shrink, fail, autorotate )) ) return( -1 ); if( setjmp( jpeg->eman.jmp ) ) return( -1 ); if( readjpeg_open_input( jpeg ) || vips__jpeg_read( jpeg, out, header_only ) ) return( -1 ); if( header_only ) vips_source_minimise( source ); else { if( vips_source_decode( source ) ) return( -1 ); } return( 0 ); } int vips__isjpeg_source( VipsSource *source ) { const unsigned char *p; if( (p = vips_source_sniff( source, 2 )) && p[0] == 0xff && p[1] == 0xd8 ) return( 1 ); return( 0 ); } #endif /*HAVE_JPEG*/ libvips-8.9.1/libvips/foreign/jpegload.c000066400000000000000000000350211361153320700202350ustar00rootroot00000000000000/* load jpeg from a file * * 24/11/11 * - wrap a class around the jpeg writer * 29/11/11 * - split to make load, load from buffer and load from file */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_JPEG #ifdef HAVE_EXIF #ifdef UNTAGGED_EXIF #include #include #include #include #else /*!UNTAGGED_EXIF*/ #include #include #include #include #endif /*UNTAGGED_EXIF*/ #endif /*HAVE_EXIF*/ typedef struct _VipsForeignLoadJpeg { VipsForeignLoad parent_object; /* Set by subclasses. */ VipsSource *source; /* Shrink by this much during load. */ int shrink; /* Autorotate using exif orientation tag. */ gboolean autorotate; } VipsForeignLoadJpeg; typedef VipsForeignLoadClass VipsForeignLoadJpegClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadJpeg, vips_foreign_load_jpeg, VIPS_TYPE_FOREIGN_LOAD ); static void vips_foreign_load_jpeg_dispose( GObject *gobject ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) gobject; VIPS_UNREF( jpeg->source ); G_OBJECT_CLASS( vips_foreign_load_jpeg_parent_class )-> dispose( gobject ); } static int vips_foreign_load_jpeg_build( VipsObject *object ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) object; if( jpeg->shrink != 1 && jpeg->shrink != 2 && jpeg->shrink != 4 && jpeg->shrink != 8 ) { vips_error( "VipsFormatLoadJpeg", _( "bad shrink factor %d" ), jpeg->shrink ); return( -1 ); } if( VIPS_OBJECT_CLASS( vips_foreign_load_jpeg_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static VipsForeignFlags vips_foreign_load_jpeg_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_SEQUENTIAL ); } static VipsForeignFlags vips_foreign_load_jpeg_get_flags_filename( const char *filename ) { return( VIPS_FOREIGN_SEQUENTIAL ); } static int vips_foreign_load_jpeg_header( VipsForeignLoad *load ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) load; if( vips__jpeg_read_source( jpeg->source, load->out, TRUE, jpeg->shrink, load->fail, jpeg->autorotate ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_jpeg_load( VipsForeignLoad *load ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) load; if( vips__jpeg_read_source( jpeg->source, load->real, FALSE, jpeg->shrink, load->fail, jpeg->autorotate ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_jpeg_class_init( VipsForeignLoadJpegClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_jpeg_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegload_base"; object_class->description = _( "load jpeg" ); object_class->build = vips_foreign_load_jpeg_build; /* We are fast at is_a(), so high priority. */ foreign_class->priority = 50; load_class->get_flags_filename = vips_foreign_load_jpeg_get_flags_filename; load_class->get_flags = vips_foreign_load_jpeg_get_flags; load_class->header = vips_foreign_load_jpeg_header; load_class->load = vips_foreign_load_jpeg_load; VIPS_ARG_INT( class, "shrink", 20, _( "Shrink" ), _( "Shrink factor on load" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadJpeg, shrink ), 1, 16, 1 ); VIPS_ARG_BOOL( class, "autorotate", 21, _( "Autorotate" ), _( "Rotate image using exif orientation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadJpeg, autorotate ), FALSE ); } static void vips_foreign_load_jpeg_init( VipsForeignLoadJpeg *jpeg ) { jpeg->shrink = 1; } typedef struct _VipsForeignLoadJpegSource { VipsForeignLoadJpeg parent_object; VipsSource *source; } VipsForeignLoadJpegSource; typedef VipsForeignLoadJpegClass VipsForeignLoadJpegSourceClass; G_DEFINE_TYPE( VipsForeignLoadJpegSource, vips_foreign_load_jpeg_source, vips_foreign_load_jpeg_get_type() ); static int vips_foreign_load_jpeg_source_build( VipsObject *object ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) object; VipsForeignLoadJpegSource *source = (VipsForeignLoadJpegSource *) object; if( source->source ) { jpeg->source = source->source; g_object_ref( jpeg->source ); } if( VIPS_OBJECT_CLASS( vips_foreign_load_jpeg_source_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_jpeg_source_is_a_source( VipsSource *source ) { return( vips__isjpeg_source( source ) ); } static void vips_foreign_load_jpeg_source_class_init( VipsForeignLoadJpegSourceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegload_source"; object_class->description = _( "load image from jpeg source" ); object_class->build = vips_foreign_load_jpeg_source_build; load_class->is_a_source = vips_foreign_load_jpeg_source_is_a_source; VIPS_ARG_OBJECT( class, "source", 1, _( "Source" ), _( "Source to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadJpegSource, source ), VIPS_TYPE_SOURCE ); } static void vips_foreign_load_jpeg_source_init( VipsForeignLoadJpegSource *source ) { } typedef struct _VipsForeignLoadJpegFile { VipsForeignLoadJpeg parent_object; char *filename; } VipsForeignLoadJpegFile; typedef VipsForeignLoadJpegClass VipsForeignLoadJpegFileClass; G_DEFINE_TYPE( VipsForeignLoadJpegFile, vips_foreign_load_jpeg_file, vips_foreign_load_jpeg_get_type() ); static int vips_foreign_load_jpeg_file_build( VipsObject *object ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) object; VipsForeignLoadJpegFile *file = (VipsForeignLoadJpegFile *) object; if( file->filename && !(jpeg->source = vips_source_new_from_file( file->filename )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_foreign_load_jpeg_file_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_jpeg_file_is_a( const char *filename ) { VipsSource *source; gboolean result; if( !(source = vips_source_new_from_file( filename )) ) return( FALSE ); result = vips_foreign_load_jpeg_source_is_a_source( source ); VIPS_UNREF( source ); return( result ); } static void vips_foreign_load_jpeg_file_class_init( VipsForeignLoadJpegFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegload"; object_class->description = _( "load jpeg from file" ); object_class->build = vips_foreign_load_jpeg_file_build; foreign_class->suffs = vips__jpeg_suffs; load_class->is_a = vips_foreign_load_jpeg_file_is_a; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadJpegFile, filename ), NULL ); } static void vips_foreign_load_jpeg_file_init( VipsForeignLoadJpegFile *file ) { } typedef struct _VipsForeignLoadJpegBuffer { VipsForeignLoadJpeg parent_object; VipsBlob *blob; } VipsForeignLoadJpegBuffer; typedef VipsForeignLoadJpegClass VipsForeignLoadJpegBufferClass; G_DEFINE_TYPE( VipsForeignLoadJpegBuffer, vips_foreign_load_jpeg_buffer, vips_foreign_load_jpeg_get_type() ); static int vips_foreign_load_jpeg_buffer_build( VipsObject *object ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) object; VipsForeignLoadJpegBuffer *buffer = (VipsForeignLoadJpegBuffer *) object; if( buffer->blob && !(jpeg->source = vips_source_new_from_memory( VIPS_AREA( buffer->blob )->data, VIPS_AREA( buffer->blob )->length )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_foreign_load_jpeg_buffer_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_jpeg_buffer_is_a_buffer( const void *buf, size_t len ) { VipsSource *source; gboolean result; if( !(source = vips_source_new_from_memory( buf, len )) ) return( FALSE ); result = vips_foreign_load_jpeg_source_is_a_source( source ); VIPS_UNREF( source ); return( result ); } static void vips_foreign_load_jpeg_buffer_class_init( VipsForeignLoadJpegBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegload_buffer"; object_class->description = _( "load jpeg from buffer" ); object_class->build = vips_foreign_load_jpeg_buffer_build; load_class->is_a_buffer = vips_foreign_load_jpeg_buffer_is_a_buffer; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadJpegBuffer, blob ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_jpeg_buffer_init( VipsForeignLoadJpegBuffer *buffer ) { } #endif /*HAVE_JPEG*/ /** * vips_jpegload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @shrink: %gint, shrink by this much on load * * @fail: %gboolean, fail on errors * * @autorotate: %gboolean, rotate image upright during load * * Read a JPEG file into a VIPS image. It can read most 8-bit JPEG images, * including CMYK and YCbCr. * * @shrink means shrink by this integer factor during load. Possible values * are 1, 2, 4 and 8. Shrinking during read is very much faster than * decompressing the whole image and then shrinking later. * * Setting @fail to %TRUE makes the JPEG reader fail on any errors. * This can be useful for detecting truncated files, for example. Normally * reading these produces a warning, but no fatal error. * * Setting @autorotate to %TRUE will make the loader interpret the * orientation tag and automatically rotate the image appropriately during * load. * * If @autorotate is %FALSE, the metadata field #VIPS_META_ORIENTATION is set * to the value of the orientation tag. Applications may read and interpret * this field * as they wish later in processing. See vips_autorot(). Save * operations will use #VIPS_META_ORIENTATION, if present, to set the * orientation of output images. * * Example: * * |[ * vips_jpegload( "fred.jpg", &out, * "shrink", 8, * "fail", TRUE, * NULL ); * ]| * * Any embedded ICC profiles are ignored: you always just get the RGB from * the file. Instead, the embedded profile will be attached to the image as * #VIPS_META_ICC_NAME. You need to use something like * vips_icc_import() to get CIE values from the file. * * EXIF metadata is attached as #VIPS_META_EXIF_NAME, IPTC as * #VIPS_META_IPTC_NAME, and XMP as #VIPS_META_XMP_NAME. * * The int metadata item "jpeg-multiscan" is set to the result of * jpeg_has_multiple_scans(). Interlaced jpeg images need a large amount of * memory to load, so this field gives callers a chance to handle these * images differently. * * The string-valued field "jpeg-chroma-subsample" gives the chroma subsample * in standard notation. 4:4:4 means no subsample, 4:2:0 means YCbCr with * Cb and Cr subsampled horizontally and vertically, 4:4:4:4 means a CMYK * image with no subsampling. * * The EXIF thumbnail, if present, is attached to the image as * "jpeg-thumbnail-data". See vips_image_get_blob(). * * See also: vips_jpegload_buffer(), vips_image_new_from_file(), vips_autorot(). * * Returns: 0 on success, -1 on error. */ int vips_jpegload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "jpegload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_jpegload_buffer: * @buf: (array length=len) (element-type guint8): memory area to load * @len: (type gsize): size of memory area * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @shrink: %gint, shrink by this much on load * * @fail: %gboolean, fail on errors * * @autorotate: %gboolean, use exif Orientation tag to rotate the image * during load * * Read a JPEG-formatted memory block into a VIPS image. Exactly as * vips_jpegload(), but read from a memory buffer. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_jpegload(). * * Returns: 0 on success, -1 on error. */ int vips_jpegload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "jpegload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } libvips-8.9.1/libvips/foreign/jpegsave.c000066400000000000000000000523261361153320700202630ustar00rootroot00000000000000/* save to jpeg * * 24/11/11 * - wrap a class around the jpeg writer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_JPEG typedef struct _VipsForeignSaveJpeg { VipsForeignSave parent_object; /* Quality factor. */ int Q; /* Profile to embed. */ char *profile; /* Compute optimal Huffman coding tables. */ gboolean optimize_coding; /* Generate an interlaced (progressive, in jpg terminology) file. */ gboolean interlace; /* Disable chroma subsampling. */ gboolean no_subsample; /* Apply trellis quantisation to each 8x8 block. */ gboolean trellis_quant; /* Apply overshooting to samples with extreme values e.g. 0 & 255 * for 8-bit. */ gboolean overshoot_deringing; /* Split the spectrum of DCT coefficients into separate scans. */ gboolean optimize_scans; /* Use predefined quantization table with given index. */ int quant_table; } VipsForeignSaveJpeg; typedef VipsForeignSaveClass VipsForeignSaveJpegClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSaveJpeg, vips_foreign_save_jpeg, VIPS_TYPE_FOREIGN_SAVE ); #define UC VIPS_FORMAT_UCHAR /* Type promotion for save ... just always go to uchar. */ static int bandfmt_jpeg[10] = { /* UC C US S UI I F X D DX */ UC, UC, UC, UC, UC, UC, UC, UC, UC, UC }; static void vips_foreign_save_jpeg_class_init( VipsForeignSaveJpegClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegsave_base"; object_class->description = _( "save jpeg" ); foreign_class->suffs = vips__jpeg_suffs; /* See also vips_foreign_save_tiff_build() when saving JPEG in TIFF. */ save_class->saveable = VIPS_SAVEABLE_RGB_CMYK; save_class->format_table = bandfmt_jpeg; VIPS_ARG_INT( class, "Q", 10, _( "Q" ), _( "Q factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, Q ), 1, 100, 75 ); VIPS_ARG_STRING( class, "profile", 11, _( "Profile" ), _( "ICC profile to embed" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, profile ), NULL ); VIPS_ARG_BOOL( class, "optimize_coding", 12, _( "Optimize_coding" ), _( "Compute optimal Huffman coding tables" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, optimize_coding ), FALSE ); VIPS_ARG_BOOL( class, "interlace", 13, _( "Interlace" ), _( "Generate an interlaced (progressive) jpeg" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, interlace ), FALSE ); VIPS_ARG_BOOL( class, "no_subsample", 14, _( "No subsample" ), _( "Disable chroma subsample" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, no_subsample ), FALSE ); VIPS_ARG_BOOL( class, "trellis_quant", 15, _( "Trellis quantisation" ), _( "Apply trellis quantisation to each 8x8 block" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, trellis_quant ), FALSE ); VIPS_ARG_BOOL( class, "overshoot_deringing", 16, _( "Overshoot de-ringing" ), _( "Apply overshooting to samples with extreme values" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, overshoot_deringing ), FALSE ); VIPS_ARG_BOOL( class, "optimize_scans", 17, _( "Optimize scans" ), _( "Split spectrum of DCT coefficients into separate scans" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, optimize_scans ), FALSE ); VIPS_ARG_INT( class, "quant_table", 18, _( "Quantization table" ), _( "Use predefined quantization table with given index" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, quant_table ), 0, 8, 0 ); } static void vips_foreign_save_jpeg_init( VipsForeignSaveJpeg *jpeg ) { jpeg->Q = 75; } typedef struct _VipsForeignSaveJpegTarget { VipsForeignSaveJpeg parent_object; VipsTarget *target; } VipsForeignSaveJpegTarget; typedef VipsForeignSaveJpegClass VipsForeignSaveJpegTargetClass; G_DEFINE_TYPE( VipsForeignSaveJpegTarget, vips_foreign_save_jpeg_target, vips_foreign_save_jpeg_get_type() ); static int vips_foreign_save_jpeg_target_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveJpeg *jpeg = (VipsForeignSaveJpeg *) object; VipsForeignSaveJpegTarget *target = (VipsForeignSaveJpegTarget *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_jpeg_target_parent_class )-> build( object ) ) return( -1 ); if( vips__jpeg_write_target( save->ready, target->target, jpeg->Q, jpeg->profile, jpeg->optimize_coding, jpeg->interlace, save->strip, jpeg->no_subsample, jpeg->trellis_quant, jpeg->overshoot_deringing, jpeg->optimize_scans, jpeg->quant_table ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_jpeg_target_class_init( VipsForeignSaveJpegTargetClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegsave_target"; object_class->description = _( "save image to jpeg target" ); object_class->build = vips_foreign_save_jpeg_target_build; VIPS_ARG_OBJECT( class, "target", 1, _( "Target" ), _( "Target to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpegTarget, target ), VIPS_TYPE_TARGET ); } static void vips_foreign_save_jpeg_target_init( VipsForeignSaveJpegTarget *target ) { } typedef struct _VipsForeignSaveJpegFile { VipsForeignSaveJpeg parent_object; /* Filename for save. */ char *filename; } VipsForeignSaveJpegFile; typedef VipsForeignSaveJpegClass VipsForeignSaveJpegFileClass; G_DEFINE_TYPE( VipsForeignSaveJpegFile, vips_foreign_save_jpeg_file, vips_foreign_save_jpeg_get_type() ); static int vips_foreign_save_jpeg_file_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveJpeg *jpeg = (VipsForeignSaveJpeg *) object; VipsForeignSaveJpegFile *file = (VipsForeignSaveJpegFile *) object; VipsTarget *target; if( VIPS_OBJECT_CLASS( vips_foreign_save_jpeg_file_parent_class )-> build( object ) ) return( -1 ); if( !(target = vips_target_new_to_file( file->filename )) ) return( -1 ); if( vips__jpeg_write_target( save->ready, target, jpeg->Q, jpeg->profile, jpeg->optimize_coding, jpeg->interlace, save->strip, jpeg->no_subsample, jpeg->trellis_quant, jpeg->overshoot_deringing, jpeg->optimize_scans, jpeg->quant_table ) ) { VIPS_UNREF( target ); return( -1 ); } VIPS_UNREF( target ); return( 0 ); } static void vips_foreign_save_jpeg_file_class_init( VipsForeignSaveJpegFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegsave"; object_class->description = _( "save image to jpeg file" ); object_class->build = vips_foreign_save_jpeg_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpegFile, filename ), NULL ); } static void vips_foreign_save_jpeg_file_init( VipsForeignSaveJpegFile *file ) { } typedef struct _VipsForeignSaveJpegBuffer { VipsForeignSaveJpeg parent_object; /* Save to a buffer. */ VipsArea *buf; } VipsForeignSaveJpegBuffer; typedef VipsForeignSaveJpegClass VipsForeignSaveJpegBufferClass; G_DEFINE_TYPE( VipsForeignSaveJpegBuffer, vips_foreign_save_jpeg_buffer, vips_foreign_save_jpeg_get_type() ); static int vips_foreign_save_jpeg_buffer_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveJpeg *jpeg = (VipsForeignSaveJpeg *) object; VipsForeignSaveJpegBuffer *file = (VipsForeignSaveJpegBuffer *) object; VipsTarget *target; VipsBlob *blob; if( VIPS_OBJECT_CLASS( vips_foreign_save_jpeg_buffer_parent_class )-> build( object ) ) return( -1 ); if( !(target = vips_target_new_to_memory()) ) return( -1 ); if( vips__jpeg_write_target( save->ready, target, jpeg->Q, jpeg->profile, jpeg->optimize_coding, jpeg->interlace, save->strip, jpeg->no_subsample, jpeg->trellis_quant, jpeg->overshoot_deringing, jpeg->optimize_scans, jpeg->quant_table ) ) { VIPS_UNREF( target ); return( -1 ); } g_object_get( target, "blob", &blob, NULL ); g_object_set( file, "buffer", blob, NULL ); vips_area_unref( VIPS_AREA( blob ) ); VIPS_UNREF( target ); return( 0 ); } static void vips_foreign_save_jpeg_buffer_class_init( VipsForeignSaveJpegBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegsave_buffer"; object_class->description = _( "save image to jpeg buffer" ); object_class->build = vips_foreign_save_jpeg_buffer_build; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to save to" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignSaveJpegBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_save_jpeg_buffer_init( VipsForeignSaveJpegBuffer *file ) { } typedef struct _VipsForeignSaveJpegMime { VipsForeignSaveJpeg parent_object; } VipsForeignSaveJpegMime; typedef VipsForeignSaveJpegClass VipsForeignSaveJpegMimeClass; G_DEFINE_TYPE( VipsForeignSaveJpegMime, vips_foreign_save_jpeg_mime, vips_foreign_save_jpeg_get_type() ); static int vips_foreign_save_jpeg_mime_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveJpeg *jpeg = (VipsForeignSaveJpeg *) object; VipsTarget *target; VipsBlob *blob; const unsigned char *obuf; size_t olen; if( VIPS_OBJECT_CLASS( vips_foreign_save_jpeg_mime_parent_class )-> build( object ) ) return( -1 ); if( !(target = vips_target_new_to_memory()) ) return( -1 ); if( vips__jpeg_write_target( save->ready, target, jpeg->Q, jpeg->profile, jpeg->optimize_coding, jpeg->interlace, save->strip, jpeg->no_subsample, jpeg->trellis_quant, jpeg->overshoot_deringing, jpeg->optimize_scans, jpeg->quant_table ) ) { VIPS_UNREF( target ); return( -1 ); } g_object_get( target, "blob", &blob, NULL ); obuf = vips_blob_get( blob, &olen ); printf( "Content-length: %zu\r\n", olen ); printf( "Content-type: image/jpeg\r\n" ); printf( "\r\n" ); (void) fwrite( obuf, sizeof( char ), olen, stdout ); fflush( stdout ); vips_area_unref( VIPS_AREA( blob ) ); VIPS_UNREF( target ); return( 0 ); } static void vips_foreign_save_jpeg_mime_class_init( VipsForeignSaveJpegMimeClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; object_class->nickname = "jpegsave_mime"; object_class->description = _( "save image to jpeg mime" ); object_class->build = vips_foreign_save_jpeg_mime_build; } static void vips_foreign_save_jpeg_mime_init( VipsForeignSaveJpegMime *mime ) { } #endif /*HAVE_JPEG*/ /** * vips_jpegsave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @Q: %gint, quality factor * * @profile: filename of ICC profile to attach * * @optimize_coding: %gboolean, compute optimal Huffman coding tables * * @interlace: %gboolean, write an interlaced (progressive) jpeg * * @strip: %gboolean, remove all metadata from image * * @no_subsample: %gboolean, disable chroma subsampling * * @trellis_quant: %gboolean, apply trellis quantisation to each 8x8 block * * @overshoot_deringing: %gboolean, overshoot samples with extreme values * * @optimize_scans: %gboolean, split DCT coefficients into separate scans * * @quant_table: %gint, quantization table index * * Write a VIPS image to a file as JPEG. * * Use @Q to set the JPEG compression factor. Default 75. * * Use @profile to give the name of a profile to be embedded in the JPEG. * This does not affect the pixels which are written, just the way * they are tagged. See vips_profile_load() for details on profile naming. * * If no profile is specified and the VIPS header * contains an ICC profile named #VIPS_META_ICC_NAME, the * profile from the VIPS header will be attached. * * If @optimize_coding is set, the Huffman tables are optimized. This is * sllightly slower and produces slightly smaller files. * * If @interlace is set, the jpeg files will be interlaced (progressive jpeg, * in jpg parlance). These files may be better for display over a slow network * conection, but need much more memory to encode and decode. * * If @strip is set, no EXIF data, IPTC data, ICC profile or XMP metadata is * written into the output file. * * If @no_subsample is set, chrominance subsampling is disabled. This will * improve quality at the cost of larger file size. Useful for high Q factors. * * If @trellis_quant is set and the version of libjpeg supports it * (e.g. mozjpeg >= 3.0), apply trellis quantisation to each 8x8 block. * Reduces file size but increases compression time. * * If @overshoot_deringing is set and the version of libjpeg supports it * (e.g. mozjpeg >= 3.0), apply overshooting to samples with extreme values * for example 0 and 255 for 8-bit. Overshooting may reduce ringing artifacts * from compression, in particular in areas where black text appears on a * white background. * * If @optimize_scans is set and the version of libjpeg supports it * (e.g. mozjpeg >= 3.0), split the spectrum of DCT coefficients into * separate scans. Reduces file size but increases compression time. * * If @quant_table is set and the version of libjpeg supports it * (e.g. mozjpeg >= 3.0) it selects the quantization table to use: * * * 0 — Tables from JPEG Annex K (vips and libjpeg default) * * 1 — Flat table * * 2 — Table tuned for MSSIM on Kodak image set * * 3 — Table from ImageMagick by N. Robidoux (current mozjpeg default) * * 4 — Table tuned for PSNR-HVS-M on Kodak image set * * 5 — Table from Relevance of Human Vision to JPEG-DCT Compression (1992) * * 6 — Table from DCTune Perceptual Optimization of Compressed Dental * X-Rays (1997) * * 7 — Table from A Visual Detection Model for DCT Coefficient * Quantization (1993) * * 8 — Table from An Improved Detection Model for DCT Coefficient * Quantization (1993) * * Quantization table 0 is the default in vips and libjpeg(-turbo), but it * tends to favor detail over color accuracy, producting colored patches and * stripes as well as heavy banding in flat areas at high compression ratios. * Quantization table 2 is a good candidate to try if the default quantization * table produces banding or color shifts and is well suited for hires images. * Quantization table 3 is the default in mozjpeg and has been tuned to produce * good results at the default quality setting; banding at high compression. * Quantization table 4 is the most accurate at the cost of compression ratio. * Tables 5-7 are based on older research papers, but generally achieve worse * compression ratios and/or quality than 2 or 4. * * For maximum compression with mozjpeg, a useful set of options is `strip, * optimize-coding, interlace, optimize-scans, trellis-quant, quant_table=3`. * * The image is automatically converted to RGB, Monochrome or CMYK before * saving. * * EXIF data is constructed from #VIPS_META_EXIF_NAME, then * modified with any other related tags on the image before being written to * the file. #VIPS_META_RESOLUTION_UNIT is used to set the EXIF resolution * unit. #VIPS_META_ORIENTATION is used to set the EXIF orientation tag. * * IPTC as #VIPS_META_IPTC_NAME and XMP as #VIPS_META_XMP_NAME * are coded and attached. * * See also: vips_jpegsave_buffer(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_jpegsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "jpegsave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_jpegsave_target: (method) * @in: image to save * @target: save image to this target * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @Q: %gint, quality factor * * @profile: filename of ICC profile to attach * * @optimize_coding: %gboolean, compute optimal Huffman coding tables * * @interlace: %gboolean, write an interlaced (progressive) jpeg * * @strip: %gboolean, remove all metadata from image * * @no_subsample: %gboolean, disable chroma subsampling * * @trellis_quant: %gboolean, apply trellis quantisation to each 8x8 block * * @overshoot_deringing: %gboolean, overshoot samples with extreme values * * @optimize_scans: %gboolean, split DCT coefficients into separate scans * * @quant_table: %gint, quantization table index * * As vips_jpegsave(), but save to a target. * * See also: vips_jpegsave(), vips_image_write_to_target(). * * Returns: 0 on success, -1 on error. */ int vips_jpegsave_target( VipsImage *in, VipsTarget *target, ... ) { va_list ap; int result; va_start( ap, target ); result = vips_call_split( "jpegsave_target", ap, in, target ); va_end( ap ); return( result ); } /** * vips_jpegsave_buffer: (method) * @in: image to save * @buf: (array length=len) (element-type guint8): return output buffer here * @len: (type gsize): return output length here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @Q: %gint, quality factor * * @profile: filename of ICC profile to attach * * @optimize_coding: %gboolean, compute optimal Huffman coding tables * * @interlace: %gboolean, write an interlaced (progressive) jpeg * * @strip: %gboolean, remove all metadata from image * * @no_subsample: %gboolean, disable chroma subsampling * * @trellis_quant: %gboolean, apply trellis quantisation to each 8x8 block * * @overshoot_deringing: %gboolean, overshoot samples with extreme values * * @optimize_scans: %gboolean, split DCT coefficients into separate scans * * @quant_table: %gint, quantization table index * * As vips_jpegsave(), but save to a memory buffer. * * The address of the buffer is returned in @obuf, the length of the buffer in * @olen. You are responsible for freeing the buffer with g_free() when you * are done with it. * * See also: vips_jpegsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_jpegsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) { va_list ap; VipsArea *area; int result; area = NULL; va_start( ap, len ); result = vips_call_split( "jpegsave_buffer", ap, in, &area ); va_end( ap ); if( !result && area ) { if( buf ) { *buf = area->data; area->free_fn = NULL; } if( len ) *len = area->length; vips_area_unref( area ); } return( result ); } /** * vips_jpegsave_mime: (method) * @in: image to save * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @Q: %gint, quality factor * * @profile: filename of ICC profile to attach * * @optimize_coding: %gboolean, compute optimal Huffman coding tables * * @interlace: %gboolean, write an interlaced (progressive) jpeg * * @strip: %gboolean, remove all metadata from image * * @no_subsample: %gboolean, disable chroma subsampling * * @trellis_quant: %gboolean, apply trellis quantisation to each 8x8 block * * @overshoot_deringing: %gboolean, overshoot samples with extreme values * * @optimize_scans: %gboolean, split DCT coefficients into separate scans * * @quant_table: %gint, quantization table index * * As vips_jpegsave(), but save as a mime jpeg on stdout. * * See also: vips_jpegsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_jpegsave_mime( VipsImage *in, ... ) { va_list ap; int result; va_start( ap, in ); result = vips_call_split( "jpegsave_mime", ap, in ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/magick.c000066400000000000000000000451651361153320700177150ustar00rootroot00000000000000/* Common functions for interfacing with ImageMagick. * * 22/12/17 dlemstra * * 24/7/18 * - add the sniffer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pforeign.h" #include "magick.h" #if defined(HAVE_MAGICK6) || defined(HAVE_MAGICK7) /* ImageMagick can't detect some formats, like ICO, by examining the contents -- * ico.c simply does not have a recogniser. * * For these formats, do the detection ourselves. * * Return an IM format specifier, or NULL to let IM do the detection. */ static const char * magick_sniff( const unsigned char *bytes, size_t length ) { if( length >= 4 && bytes[0] == 0 && bytes[1] == 0 && bytes[2] == 1 && bytes[3] == 0 ) return( "ICO" ); return( NULL ); } void magick_sniff_bytes( ImageInfo *image_info, const unsigned char *bytes, size_t length ) { const char *format; if( (format = magick_sniff( bytes, length )) ) vips_strncpy( image_info->magick, format, MaxTextExtent ); } void magick_sniff_file( ImageInfo *image_info, const char *filename ) { unsigned char bytes[256]; size_t length; if( (length = vips__get_bytes( filename, bytes, 256 )) >= 4 ) magick_sniff_bytes( image_info, bytes, 256 ); } #endif /*defined(HAVE_MAGICK6) || defined(HAVE_MAGICK7)*/ #ifdef HAVE_MAGICK7 Image * magick_acquire_image( const ImageInfo *image_info, ExceptionInfo *exception ) { return( AcquireImage( image_info, exception ) ); } void magick_acquire_next_image( const ImageInfo *image_info, Image *image, ExceptionInfo *exception ) { AcquireNextImage( image_info, image, exception ); } int magick_set_image_size( Image *image, const size_t width, const size_t height, ExceptionInfo *exception ) { return( SetImageExtent( image, width, height, exception ) ); } int magick_import_pixels( Image *image, const ssize_t x, const ssize_t y, const size_t width, const size_t height, const char *map, const StorageType type,const void *pixels, ExceptionInfo *exception ) { return( ImportImagePixels( image, x, y, width, height, map, type, pixels, exception ) ); } void * magick_images_to_blob( const ImageInfo *image_info, Image *images, size_t *length, ExceptionInfo *exception ) { return( ImagesToBlob( image_info, images, length, exception ) ); } void magick_set_property( Image *image, const char *property, const char *value, ExceptionInfo *exception ) { (void) SetImageProperty( image, property, value, exception ); } int magick_set_profile( Image *image, const char *name, const void *data, size_t length, ExceptionInfo *exception ) { StringInfo *string; MagickBooleanType result; string = BlobToStringInfo( data, length ); result = SetImageProfile( image, name, string, exception ); DestroyStringInfo( string ); return( result ); } void * magick_profile_map( Image *image, MagickMapProfileFn fn, void *a ) { char *name; ResetImageProfileIterator( image ); while( (name = GetNextImageProfile( image )) ) { const StringInfo *profile; void *data; size_t length; void *result; profile = GetImageProfile( image, name ); data = GetStringInfoDatum( profile ); length = GetStringInfoLength( profile ); if( (result = fn( image, name, data, length, a )) ) return( result ); } return( NULL ); } ExceptionInfo * magick_acquire_exception( void ) { return( AcquireExceptionInfo() ); } void magick_destroy_exception( ExceptionInfo *exception ) { VIPS_FREEF( DestroyExceptionInfo, exception ); } void magick_inherit_exception( ExceptionInfo *exception, Image *image ) { (void) exception; (void) image; } void magick_set_number_scenes( ImageInfo *image_info, int scene, int number_scenes ) { /* I can't find docs for these fields, but this seems to work. */ char page[256]; image_info->scene = scene; image_info->number_scenes = number_scenes; /* Some IMs must have the string version set as well. */ vips_snprintf( page, 256, "%d-%d", scene, scene + number_scenes ); image_info->scenes = strdup( page ); } int magick_optimize_image_layers( Image **images, ExceptionInfo *exception ) { Image *tmp; tmp = OptimizePlusImageLayers( *images, exception ); if( exception->severity != UndefinedException ) { VIPS_FREEF( DestroyImageList, tmp ); return MagickFalse; } VIPS_FREEF( DestroyImageList, *images ); *images = tmp; return MagickTrue; } int magick_optimize_image_transparency( const Image *images, ExceptionInfo *exception ) { OptimizeImageTransparency( images, exception ); return( exception->severity == UndefinedException ); } /* Does a few bytes look like a file IM can handle? */ gboolean magick_ismagick( const unsigned char *bytes, size_t length ) { char format[MagickPathExtent]; magick_genesis(); /* Try with our custom sniffers first. */ return( magick_sniff( bytes, length ) || GetImageMagick( bytes, length, format ) ); } #endif /*HAVE_MAGICK7*/ #ifdef HAVE_MAGICK6 Image * magick_acquire_image( const ImageInfo *image_info, ExceptionInfo *exception ) { (void) exception; #ifdef HAVE_ACQUIREIMAGE return( AcquireImage( image_info ) ); #else /*!HAVE_ACQUIREIMAGE*/ /* IM5-ish and GraphicsMagick use AllocateImage(). */ return( AllocateImage( image_info ) ); #endif } void magick_acquire_next_image( const ImageInfo *image_info, Image *image, ExceptionInfo *exception ) { (void) exception; #ifdef HAVE_ACQUIREIMAGE AcquireNextImage( image_info, image ); #else /*!HAVE_ACQUIREIMAGE*/ /* IM5-ish and GraphicsMagick use AllocateNextImage(). */ AllocateNextImage( image_info, image ); #endif } int magick_set_image_size( Image *image, const size_t width, const size_t height, ExceptionInfo *exception ) { (void) exception; #ifdef HAVE_SETIMAGEEXTENT return( SetImageExtent( image, width, height ) ); #else /*!HAVE_SETIMAGEEXTENT*/ image->columns = width; image->rows = height; /* imagemagick does a SyncImagePixelCache() at the end of * SetImageExtent(), but GM does not really have an equivalent. Just * always return True. */ return( MagickTrue ); #endif /*HAVE_SETIMAGEEXTENT*/ } int magick_import_pixels( Image *image, const ssize_t x, const ssize_t y, const size_t width, const size_t height, const char *map, const StorageType type, const void *pixels, ExceptionInfo *exception ) { #ifdef HAVE_IMPORTIMAGEPIXELS return( ImportImagePixels( image, x, y, width, height, map, type, pixels ) ); #else /*!HAVE_IMPORTIMAGEPIXELS*/ Image *constitute_image; g_assert( image ); g_assert( image->signature == MagickSignature ); constitute_image = ConstituteImage( width, height, map, type, pixels, &image->exception ); if( !constitute_image ) return( MagickFalse ); (void) CompositeImage( image, CopyCompositeOp, constitute_image, x, y ); DestroyImage( constitute_image ); return( image->exception.severity == UndefinedException ); #endif /*HAVE_IMPORTIMAGEPIXELS*/ } void * magick_images_to_blob( const ImageInfo *image_info, Image *images, size_t *length, ExceptionInfo *exception ) { #ifdef HAVE_IMAGESTOBLOB return( ImagesToBlob( image_info, images, length, exception ) ); #else return( ImageToBlob( image_info, images, length, exception ) ); #endif /*HAVE_IMAGESTOBLOB*/ } void magick_set_property( Image *image, const char *property, const char *value, ExceptionInfo *exception ) { (void) exception; #ifdef HAVE_SETIMAGEPROPERTY (void) SetImageProperty( image, property, value ); #else /*!HAVE_SETIMAGEPROPERTY*/ (void) SetImageAttribute( image, property, value ); #endif /*HAVE_SETIMAGEPROPERTY*/ } int magick_set_profile( Image *image, const char *name, const void *data, size_t length, ExceptionInfo *exception ) { int result; #ifdef HAVE_BLOBTOSTRINGINFO StringInfo *string; string = BlobToStringInfo( data, length ); result = SetImageProfile( image, name, string ); DestroyStringInfo( string ); #else /*!HAVE_BLOBTOSTRINGINFO*/ result = SetImageProfile( image, name, data, length ); #endif /*HAVE_BLOBTOSTRINGINFO*/ return( result ); } void * magick_profile_map( Image *image, MagickMapProfileFn fn, void *a ) { const char *name; const void *data; size_t length; void *result; #ifdef HAVE_RESETIMAGEPROFILEITERATOR ResetImageProfileIterator( image ); while( (name = GetNextImageProfile( image )) ) { const StringInfo *profile; profile = GetImageProfile( image, name ); data = GetStringInfoDatum( profile ); length = GetStringInfoLength( profile ); if( (result = fn( image, name, data, length, a )) ) return( result ); } #else /*!HAVE_RESETIMAGEPROFILEITERATOR*/ { ImageProfileIterator *iter; iter = AllocateImageProfileIterator( image ); while( NextImageProfile( iter, &name, (const unsigned char **) &data, &length ) ) { if( (result = fn( image, name, data, length, a )) ) { DeallocateImageProfileIterator( iter ); return( result ); } } DeallocateImageProfileIterator( iter ); } #endif /*HAVE_RESETIMAGEPROFILEITERATOR*/ return( NULL ); } ExceptionInfo * magick_acquire_exception( void ) { ExceptionInfo *exception; #ifdef HAVE_ACQUIREEXCEPTIONINFO /* IM6+ */ exception = AcquireExceptionInfo(); #else /*!HAVE_ACQUIREEXCEPTIONINFO*/ /* gm */ exception = g_new( ExceptionInfo, 1 ); GetExceptionInfo( exception ); #endif /*HAVE_ACQUIREEXCEPTIONINFO*/ return( exception ); } void magick_destroy_exception( ExceptionInfo *exception ) { #ifdef HAVE_ACQUIREEXCEPTIONINFO /* IM6+ will free the exception in destroy. */ VIPS_FREEF( DestroyExceptionInfo, exception ); #else /*!HAVE_ACQUIREEXCEPTIONINFO*/ /* gm and very old IM need to free the memory too. */ if( exception ) { DestroyExceptionInfo( exception ); g_free( exception ); } #endif /*HAVE_ACQUIREEXCEPTIONINFO*/ } void magick_inherit_exception( ExceptionInfo *exception, Image *image ) { #ifdef HAVE_INHERITEXCEPTION InheritException( exception, &image->exception ); #endif /*HAVE_INHERITEXCEPTION*/ } void magick_set_number_scenes( ImageInfo *image_info, int scene, int number_scenes ) { #ifdef HAVE_NUMBER_SCENES /* I can't find docs for these fields, but this seems to work. */ char page[256]; image_info->scene = scene; image_info->number_scenes = number_scenes; /* Some IMs must have the string version set as well. */ vips_snprintf( page, 256, "%d-%d", scene, scene + number_scenes ); image_info->scenes = strdup( page ); #else /*!HAVE_NUMBER_SCENES*/ /* This works with GM 1.2.31 and probably others. */ image_info->subimage = scene; image_info->subrange = number_scenes; #endif } int magick_optimize_image_layers( Image **images, ExceptionInfo *exception ) { #ifdef HAVE_OPTIMIZEPLUSIMAGELAYERS Image *tmp; tmp = OptimizePlusImageLayers(*images, exception ); if ( exception->severity != UndefinedException ) return MagickFalse; VIPS_FREEF( DestroyImageList, *images ); *images = tmp; return MagickTrue; #else /*!HAVE_OPTIMIZEPLUSIMAGELAYERS*/ g_warning( "%s", _( "layer optimization is not supported by " "your version of libMagick" ) ); return MagickTrue; #endif /*HAVE_OPTIMIZEPLUSIMAGELAYERS*/ } int magick_optimize_image_transparency( const Image *images, ExceptionInfo *exception ) { #ifdef HAVE_OPTIMIZEIMAGETRANSPARENCY OptimizeImageTransparency(images, exception); return ( exception->severity == UndefinedException ); #else /*!HAVE_OPTIMIZEIMAGETRANSPARENCY*/ g_warning( "%s", _( "transparency optimization is not supported by " "your version of libMagick" ) ); return MagickTrue; #endif /*HAVE_OPTIMIZEIMAGETRANSPARENCY*/ } /* Does a few bytes look like a file IM can handle? */ gboolean magick_ismagick( const unsigned char *bytes, size_t length ) { magick_genesis(); /* Try with our custom sniffers first. */ #ifdef HAVE_GETIMAGEMAGICK3 { char format[MaxTextExtent]; return( magick_sniff( bytes, length ) || GetImageMagick( bytes, length, format ) ); } #else /*!HAVE_GETIMAGEMAGICK3*/ /* The GM one returns a static string. */ return( magick_sniff( bytes, length ) || GetImageMagick( bytes, length ) ); #endif } #endif /*HAVE_MAGICK6*/ #if defined(HAVE_MAGICK6) || defined(HAVE_MAGICK7) void magick_set_image_option( ImageInfo *image_info, const char *name, const char *value ) { #ifdef HAVE_SETIMAGEOPTION SetImageOption( image_info, name, value ); #endif /*HAVE_SETIMAGEOPTION*/ } typedef struct _MagickColorspaceTypeNames { ColorspaceType colorspace; const char *name; } MagickColorspaceTypeNames; static MagickColorspaceTypeNames magick_colorspace_names[] = { { UndefinedColorspace, "UndefinedColorspace" }, { CMYKColorspace, "CMYKColorspace" }, { GRAYColorspace, "GRAYColorspace" }, { HSLColorspace, "HSLColorspace" }, { HWBColorspace, "HWBColorspace" }, { OHTAColorspace, "OHTAColorspace" }, { Rec601YCbCrColorspace, "Rec601YCbCrColorspace" }, { Rec709YCbCrColorspace, "Rec709YCbCrColorspace" }, { RGBColorspace, "RGBColorspace" }, { sRGBColorspace, "sRGBColorspace" }, { TransparentColorspace, "TransparentColorspace" }, { XYZColorspace, "XYZColorspace" }, { YCbCrColorspace, "YCbCrColorspace" }, { YCCColorspace, "YCCColorspace" }, { YIQColorspace, "YIQColorspace" }, { YPbPrColorspace, "YPbPrColorspace" }, { YUVColorspace, "YUVColorspace" }, /* More recent imagemagicks add these. */ #ifdef HAVE_CMYCOLORSPACE { CMYColorspace, "CMYColorspace" }, { HCLColorspace, "HCLColorspace" }, { HSBColorspace, "HSBColorspace" }, { LabColorspace, "LabColorspace" }, { LogColorspace, "LogColorspace" }, { LuvColorspace, "LuvColorspace" }, #endif /*HAVE_CMYCOLORSPACE*/ #ifdef HAVE_HCLPCOLORSPACE { HCLpColorspace, "HCLpColorspace" }, { HSIColorspace, "HSIColorspace" }, { HSVColorspace, "HSVColorspace" }, { LCHColorspace, "LCHColorspace" }, { LCHabColorspace, "LCHabColorspace" }, { LCHuvColorspace, "LCHuvColorspace" }, { LMSColorspace, "LMSColorspace" }, { scRGBColorspace, "scRGBColorspace" }, { xyYColorspace, "xyYColorspace" }, { YDbDrColorspace, "YDbDrColorspace" }, #endif /*HAVE_HCLPCOLORSPACE*/ /* im7 has this, I think * { LinearGRAYColorspace, "LinearGRAYColorspace" } * */ }; const char * magick_ColorspaceType2str( ColorspaceType colorspace ) { int i; for( i = 0; i < VIPS_NUMBER( magick_colorspace_names ); i++ ) if( magick_colorspace_names[i].colorspace == colorspace ) return( magick_colorspace_names[i].name ); return( "" ); } void magick_vips_error( const char *domain, ExceptionInfo *exception ) { if( exception ) { if( exception->reason && exception->description ) vips_error( domain, _( "libMagick error: %s %s" ), exception->reason, exception->description ); else if( exception->reason ) vips_error( domain, _( "libMagick error: %s" ), exception->reason ); else vips_error( domain, "%s", _( "libMagick error:" ) ); } } static void * magick_genesis_cb( void *client ) { ExceptionInfo *exception; #ifdef DEBUG printf( "magick_genesis_cb:\n" ); #endif /*DEBUG*/ #if defined(HAVE_MAGICKCOREGENESIS) || defined(HAVE_MAGICK7) MagickCoreGenesis( vips_get_argv0(), MagickFalse ); #else /*!HAVE_MAGICKCOREGENESIS*/ InitializeMagick( vips_get_argv0() ); #endif /*HAVE_MAGICKCOREGENESIS*/ /* This forces *magick to init all loaders. We have to do this so we * can sniff files with GetImageMagick(). * * We don't care about errors from magickinit. */ exception = magick_acquire_exception(); (void) GetMagickInfo( "*", exception ); magick_destroy_exception(exception); return( NULL ); } void magick_genesis( void ) { static GOnce once = G_ONCE_INIT; VIPS_ONCE( &once, magick_genesis_cb, NULL ); } /* Set vips metadata from a magick profile. */ static void * magick_set_vips_profile_cb( Image *image, const char *name, const void *data, size_t length, void *a ) { VipsImage *im = (VipsImage *) a; char name_text[256]; VipsBuf vips_name = VIPS_BUF_STATIC( name_text ); if( strcmp( name, "XMP" ) == 0 ) vips_buf_appendf( &vips_name, VIPS_META_XMP_NAME ); else if( strcmp( name, "IPTC" ) == 0 ) vips_buf_appendf( &vips_name, VIPS_META_IPTC_NAME ); else if( strcmp( name, "ICM" ) == 0 ) vips_buf_appendf( &vips_name, VIPS_META_ICC_NAME ); else if( strcmp( name, "EXIF" ) == 0 ) vips_buf_appendf( &vips_name, VIPS_META_EXIF_NAME ); else vips_buf_appendf( &vips_name, "magickprofile-%s", name ); vips_image_set_blob_copy( im, vips_buf_all( &vips_name ), data, length ); if( strcmp( name, "exif" ) == 0 ) (void) vips__exif_parse( im ); return( NULL ); } /* Set vips metadata from ImageMagick profiles. */ int magick_set_vips_profile( VipsImage *im, Image *image ) { if( magick_profile_map( image, magick_set_vips_profile_cb, im ) ) return( -1 ); return( 0 ); } typedef struct { Image *image; ExceptionInfo *exception; } CopyProfileInfo; static void * magick_set_magick_profile_cb( VipsImage *im, const char *name, GValue *value, CopyProfileInfo *info ) { char txt[256]; VipsBuf buf = VIPS_BUF_STATIC( txt ); const void *data; size_t length; if( strcmp( name, VIPS_META_XMP_NAME ) == 0 ) vips_buf_appendf( &buf, "XMP" ); else if( strcmp( name, VIPS_META_IPTC_NAME ) == 0 ) vips_buf_appendf( &buf, "IPTC" ); else if( strcmp( name, VIPS_META_ICC_NAME ) == 0 ) vips_buf_appendf( &buf, "ICM" ); else if( strcmp( name, VIPS_META_EXIF_NAME ) == 0 ) vips_buf_appendf( &buf, "EXIF" ); else if( vips_isprefix( "magickprofile-", name ) ) vips_buf_appendf( &buf, "%s", name + strlen( "magickprofile-" ) ); if( vips_buf_is_empty( &buf ) ) return( NULL ); if( !vips_image_get_typeof( im, name ) ) return( NULL ); if( vips_image_get_blob( im, name, &data, &length ) ) return( im ); if( !magick_set_profile( info->image, vips_buf_all( &buf ), data, length, info->exception ) ) return( im ); return( NULL ); } /* Set magick metadata from a VipsImage. */ int magick_set_magick_profile( Image *image, VipsImage *im, ExceptionInfo *exception ) { CopyProfileInfo info; info.image = image; info.exception = exception; if( vips_image_map( im, (VipsImageMapFn) magick_set_magick_profile_cb, &info ) ) return( -1 ); return( 0 ); } #endif /*defined(HAVE_MAGICK6) || defined(HAVE_MAGICK7)*/ libvips-8.9.1/libvips/foreign/magick.h000066400000000000000000000065201361153320700177120ustar00rootroot00000000000000/* Common functions for interfacing with ImageMagick. * * 22/12/17 dlemstra */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #if defined(HAVE_MAGICK6) || defined (HAVE_MAGICK7) #ifdef HAVE_MAGICK6 #include #define MaxPathExtent MaxTextExtent #endif /*HAVE_MAGICK6*/ #ifdef HAVE_MAGICK7 #include #define MaxPathExtent MagickPathExtent #endif /*HAVE_MAGICK7*/ Image *magick_acquire_image( const ImageInfo *image_info, ExceptionInfo *exception ); void magick_acquire_next_image( const ImageInfo *image_info, Image *image, ExceptionInfo *exception ); int magick_set_image_size( Image *image, const size_t width, const size_t height, ExceptionInfo *exception ); int magick_import_pixels( Image *image, const ssize_t x, const ssize_t y, const size_t width, const size_t height, const char *map, const StorageType type,const void *pixels, ExceptionInfo *exception ); void *magick_images_to_blob( const ImageInfo *image_info, Image *images, size_t *length, ExceptionInfo *exception ); void magick_set_property( Image *image, const char *property, const char *value, ExceptionInfo *exception ); typedef void *(*MagickMapProfileFn)( Image *image, const char *name, const void *data, size_t length, void *a ); void *magick_profile_map( Image *image, MagickMapProfileFn fn, void *a ); int magick_set_profile( Image *image, const char *name, const void *data, size_t length, ExceptionInfo *exception ); void magick_set_image_option( ImageInfo *image_info, const char *name, const char *value ); void magick_set_number_scenes( ImageInfo *image_info, int scene, int number_scenes ); const char *magick_ColorspaceType2str( ColorspaceType colorspace ); ExceptionInfo *magick_acquire_exception( void ); void magick_destroy_exception( ExceptionInfo *exception ); void magick_inherit_exception( ExceptionInfo *exception, Image *image ); void magick_sniff_bytes( ImageInfo *image_info, const unsigned char *bytes, size_t length ); void magick_sniff_file( ImageInfo *image_info, const char *filename ); void magick_vips_error( const char *domain, ExceptionInfo *exception ); void magick_genesis( void ); int magick_set_vips_profile( VipsImage *im, Image *image ); int magick_set_magick_profile( Image *image, VipsImage *im, ExceptionInfo *exception ); int magick_optimize_image_layers( Image **images, ExceptionInfo *exception ); int magick_optimize_image_transparency( const Image *images, ExceptionInfo *exception ); gboolean magick_ismagick( const unsigned char *bytes, size_t length ); #endif /*HAVE_MAGICK6*/ libvips-8.9.1/libvips/foreign/magick2vips.c000066400000000000000000000516431361153320700206770ustar00rootroot00000000000000/* Read a file using libMagick * * 7/1/03 JC * - from im_tiff2vips * 3/2/03 JC * - some InitializeMagick() fail with NULL arg * 2/11/04 * - im_magick2vips_header() also checks sensible width/height * 28/10/05 * - copy attributes to meta * - write many-frame images as a big column if all frames have identical * width/height/bands/depth * 31/3/06 * - test for magick attr support * 8/5/06 * - set RGB16/GREY16 if appropriate * 10/8/07 * - support 32/64 bit imagemagick too * 21/2/08 * - use MaxRGB if QuantumRange is missing (thanks Bob) * - look for MAGICKCORE_HDRI_SUPPORT (thanks Marcel) * - use image->attributes if GetNextImageAttribute() is missing * 3/3/09 * - allow funky bit depths, like 14 (thanks Mikkel) * 17/3/09 * - reset dcm:display-range to help DICOM read * 20/4/09 * - argh libMagick uses 255 == transparent ... we must invert all * alpha channels * 12/5/09 * - fix signed/unsigned warnings * 23/7/09 * - SetImageOption() is optional (to help GM) * 4/2/10 * - gtkdoc * 30/4/10 * - better number of bands detection with GetImageType() * - use new API stuff, argh * 17/12/11 * - turn into a set of read fns ready to be called from a class * 11/6/13 * - add @all_frames option, off by default * 4/12/14 Lovell * - add @density option * 16/2/15 mcuelenaere * - add blob read * 26/2/15 * - close the read down early for a header read ... this saves an * fd during file read, handy for large numbers of input images * 14/2/16 * - add @page option, 0 by default * 18/4/16 * - fix @page with graphicsmagick * 25/11/16 * - remove @all_frames, add @n * 23/2/17 * - try using GetImageChannelDepth() instead of ->depth * 25/5/18 * - don't use Ping, it's too unreliable * 24/7/18 * - sniff extra filetypes * 4/1/19 kleisauke * - we did not chain exceptions correctly, causing a memory leak * - added wrapper funcs for exception handling * 4/2/19 * - add profile (xmp, ipct, etc.) read */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Turn on debugging output. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef ENABLE_MAGICKLOAD #ifdef HAVE_MAGICK6 #include #include #include #include #include #include #include #include "pforeign.h" #include "magick.h" /* pre-float Magick used to call this MaxRGB. */ #if !defined(QuantumRange) # define QuantumRange MaxRGB #endif /* And this used to be UseHDRI. */ #if MAGICKCORE_HDRI_SUPPORT # define UseHDRI 1 #endif /* What we track during a read call. */ typedef struct _Read { char *filename; VipsImage *im; const void *buf; size_t len; int page; int n; Image *image; ImageInfo *image_info; ExceptionInfo *exception; /* Number of pages in image. */ int n_pages; /* Number of pages we will read. */ int n_frames; Image **frames; int frame_height; /* Mutex to serialise calls to libMagick during threaded read. */ GMutex *lock; } Read; /* Can be called many times. */ static void read_free( Read *read ) { #ifdef DEBUG printf( "magick2vips: read_free: %s\n", read->filename ); #endif /*DEBUG*/ VIPS_FREE( read->filename ); VIPS_FREEF( DestroyImageList, read->image ); VIPS_FREEF( DestroyImageInfo, read->image_info ); VIPS_FREE( read->frames ); VIPS_FREEF( magick_destroy_exception, read->exception ); VIPS_FREEF( vips_g_mutex_free, read->lock ); } /* Can be called many times. */ static int read_close( VipsImage *im, Read *read ) { read_free( read ); return( 0 ); } static Read * read_new( const char *filename, VipsImage *im, const void *buf, const size_t len, const char *density, int page, int n ) { Read *read; magick_genesis(); /* IM doesn't use the -1 means end-of-file convention, change it to a * very large number. */ if( n == -1 ) n = 10000000; if( !(read = VIPS_NEW( im, Read )) ) return( NULL ); read->filename = filename ? g_strdup( filename ) : NULL; read->buf = buf; read->len = len; read->page = page; read->n = n; read->im = im; read->image = NULL; read->image_info = CloneImageInfo( NULL ); read->exception = magick_acquire_exception(); read->n_pages = 0; read->n_frames = 0; read->frames = NULL; read->frame_height = 0; read->lock = vips_g_mutex_new(); g_signal_connect( im, "close", G_CALLBACK( read_close ), read ); if( !read->image_info ) return( NULL ); if( filename ) vips_strncpy( read->image_info->filename, filename, MaxTextExtent ); /* Any extra file format detection. */ if( filename ) magick_sniff_file( read->image_info, filename ); if( buf ) magick_sniff_bytes( read->image_info, buf, len ); /* Canvas resolution for rendering vector formats like SVG. */ VIPS_SETSTR( read->image_info->density, density ); /* When reading DICOM images, we want to ignore any * window_center/_width setting, since it may put pixels outside the * 0-65535 range and lose data. * * These window settings are attached as vips metadata, so our caller * can interpret them if it wants. */ magick_set_image_option( read->image_info, "dcm:display-range", "reset" ); if( read->page > 0 ) magick_set_number_scenes( read->image_info, read->page, read->n ); #ifdef DEBUG printf( "magick2vips: read_new: %s\n", read->filename ); #endif /*DEBUG*/ return( read ); } static int get_bands( Image *image ) { int bands; ImageType type = GetImageType( image, &image->exception ); switch( type ) { case BilevelType: case GrayscaleType: bands = 1; break; case GrayscaleMatteType: /* ImageMagick also has PaletteBilevelMatteType, but GraphicsMagick * does not. Skip for portability. */ bands = 2; break; case PaletteType: case TrueColorType: bands = 3; break; case PaletteMatteType: case TrueColorMatteType: case ColorSeparationType: bands = 4; break; case ColorSeparationMatteType: bands = 5; break; default: vips_error( "magick2vips", _( "unsupported image type %d" ), (int) type ); return( -1 ); } return( bands ); } static int parse_header( Read *read ) { VipsImage *im = read->im; Image *image = read->image; int depth; Image *p; int i; #ifdef DEBUG printf( "parse_header: filename = %s\n", read->filename ); printf( "GetImageChannelDepth(AllChannels) = %zd\n", GetImageChannelDepth( image, AllChannels, &image->exception ) ); printf( "GetImageDepth() = %zd\n", GetImageDepth( image, &image->exception ) ); printf( "image->depth = %zd\n", image->depth ); printf( "GetImageType() = %d\n", GetImageType( image, &image->exception ) ); printf( "IsGrayImage() = %d\n", IsGrayImage( image, &image->exception ) ); printf( "IsMonochromeImage() = %d\n", IsMonochromeImage( image, &image->exception ) ); printf( "IsOpaqueImage() = %d\n", IsOpaqueImage( image, &image->exception ) ); printf( "image->columns = %zd\n", image->columns ); printf( "image->rows = %zd\n", image->rows ); #endif /*DEBUG*/ im->Xsize = image->columns; im->Ysize = image->rows; read->frame_height = image->rows; if( (im->Bands = get_bands( image )) < 0 ) return( -1 ); /* Depth can be 'fractional'. * * You'd think we should use * GetImageDepth() but that seems unreliable. 16-bit mono DICOM images * are reported as depth 1, for example. * * Try GetImageChannelDepth(), maybe that works. */ depth = GetImageChannelDepth( image, AllChannels, &image->exception ); im->BandFmt = -1; if( depth >= 1 && depth <= 8 ) im->BandFmt = VIPS_FORMAT_UCHAR; if( depth >= 9 && depth <= 16 ) im->BandFmt = VIPS_FORMAT_USHORT; #ifdef UseHDRI if( depth == 32 ) im->BandFmt = VIPS_FORMAT_FLOAT; if( depth == 64 ) im->BandFmt = VIPS_FORMAT_DOUBLE; #else /*!UseHDRI*/ if( depth == 32 ) im->BandFmt = VIPS_FORMAT_UINT; #endif /*UseHDRI*/ if( im->BandFmt == -1 ) { vips_error( "magick2vips", _( "unsupported bit depth %d" ), (int) depth ); return( -1 ); } switch( image->colorspace ) { case GRAYColorspace: if( im->BandFmt == VIPS_FORMAT_USHORT ) im->Type = VIPS_INTERPRETATION_GREY16; else im->Type = VIPS_INTERPRETATION_B_W; break; case sRGBColorspace: case RGBColorspace: if( im->BandFmt == VIPS_FORMAT_USHORT ) im->Type = VIPS_INTERPRETATION_RGB16; else im->Type = VIPS_INTERPRETATION_sRGB; break; case CMYKColorspace: im->Type = VIPS_INTERPRETATION_CMYK; break; default: vips_error( "magick2vips", _( "unsupported colorspace %d" ), (int) image->colorspace ); return( -1 ); } switch( image->units ) { case PixelsPerInchResolution: im->Xres = image->x_resolution / 25.4; im->Yres = image->y_resolution / 25.4; break; case PixelsPerCentimeterResolution: im->Xres = image->x_resolution / 10.0; im->Yres = image->y_resolution / 10.0; break; default: im->Xres = 1.0; im->Yres = 1.0; break; } /* Other fields. */ im->Coding = VIPS_CODING_NONE; vips_image_pipelinev( im, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); /* Set vips metadata from ImageMagick profiles. */ if( magick_set_vips_profile( im, image ) ) return( -1 ); #ifdef HAVE_RESETIMAGEPROPERTYITERATOR { char *key; /* This is the most recent imagemagick API, test for this first. */ ResetImagePropertyIterator( image ); while( (key = GetNextImageProperty( image )) ) { char name_text[256]; VipsBuf name = VIPS_BUF_STATIC( name_text ); vips_buf_appendf( &name, "magick-%s", key ); vips_image_set_string( im, vips_buf_all( &name ), GetImageProperty( image, key ) ); } } #elif defined(HAVE_RESETIMAGEATTRIBUTEITERATOR) { const ImageAttribute *attr; /* magick6.1-ish and later, deprecated in 6.5ish. */ ResetImageAttributeIterator( image ); while( (attr = GetNextImageAttribute( image )) ) { char name_text[256]; VipsBuf name = VIPS_BUF_STATIC( name_text ); vips_buf_appendf( &name, "magick-%s", attr->key ); vips_image_set_string( im, vips_buf_all( &name ), attr->value ); } } #else { const ImageAttribute *attr; /* GraphicsMagick is missing the iterator: we have to loop ourselves. * ->attributes is marked as private in the header, but there's no * getter so we have to access it directly. */ for( attr = image->attributes; attr; attr = attr->next ) { char name_text[256]; VipsBuf name = VIPS_BUF_STATIC( name_text ); vips_buf_appendf( &name, "magick-%s", attr->key ); vips_image_set_string( im, vips_buf_all( &name ), attr->value ); } } #endif /* Do we have a set of equal-sized frames? Append them. FIXME ... there must be an attribute somewhere from dicom read which says this is a volumetric image */ read->n_pages = GetImageListLength( image ); read->n_frames = 0; for( p = image; p; (p = GetNextImageInList( p )) ) { int p_depth = GetImageChannelDepth( p, AllChannels, &p->exception ); if( p->columns != (unsigned int) im->Xsize || p->rows != (unsigned int) im->Ysize || get_bands( p ) != im->Bands || p_depth != depth ) { #ifdef DEBUG printf( "frame %d differs\n", read->n_frames ); printf( "%zdx%zd, %d bands\n", p->columns, p->rows, get_bands( p ) ); printf( "first frame is %dx%d, %d bands\n", im->Xsize, im->Ysize, im->Bands ); #endif /*DEBUG*/ break; } read->n_frames += 1; } if( p ) /* Nope ... just do the first image in the list. */ read->n_frames = 1; #ifdef DEBUG printf( "will read %d frames\n", read->n_frames ); #endif /*DEBUG*/ if( read->n != -1 ) read->n_frames = VIPS_MIN( read->n_frames, read->n ); /* Record frame pointers. */ if( !(read->frames = VIPS_ARRAY( NULL, read->n_frames, Image * )) ) return( -1 ); p = image; for( i = 0; i < read->n_frames; i++ ) { read->frames[i] = p; p = GetNextImageInList( p ); } if( read->n_frames > 1 ) { vips_image_set_int( im, VIPS_META_PAGE_HEIGHT, im->Ysize ); im->Ysize *= read->n_frames; } vips_image_set_int( im, VIPS_META_N_PAGES, read->n_pages ); return( 0 ); } /* Divide by this to get 0 - MAX from a Quantum. Eg. consider QuantumRange == * 65535, MAX == 255 (a Q16 ImageMagic representing an 8-bit image). Make sure * this can't be zero (if QuantumRange < MAX) .. can happen if we have a Q8 * ImageMagick trying to represent a 16-bit image. */ #define SCALE( MAX ) \ (QuantumRange < (MAX) ? \ 1 : \ ((QuantumRange + 1) / ((MAX) + 1))) #define GRAY_LOOP( TYPE, MAX ) { \ TYPE *q = (TYPE *) q8; \ \ for( x = 0; x < n; x++ ) \ q[x] = pixels[x].green / SCALE( MAX ); \ } #define GRAYA_LOOP( TYPE, MAX ) { \ TYPE *q = (TYPE *) q8; \ \ for( x = 0; x < n; x++ ) { \ q[0] = pixels[x].green / SCALE( MAX ); \ q[1] = MAX - pixels[x].opacity / SCALE( MAX ); \ \ q += 2; \ } \ } #define RGB_LOOP( TYPE, MAX ) { \ TYPE *q = (TYPE *) q8; \ \ for( x = 0; x < n; x++ ) { \ q[0] = pixels[x].red / SCALE( MAX ); \ q[1] = pixels[x].green / SCALE( MAX ); \ q[2] = pixels[x].blue / SCALE( MAX ); \ \ q += 3; \ } \ } #define RGBA_LOOP( TYPE, MAX ) { \ TYPE *q = (TYPE *) q8; \ \ for( x = 0; x < n; x++ ) { \ q[0] = pixels[x].red / SCALE( MAX ); \ q[1] = pixels[x].green / SCALE( MAX ); \ q[2] = pixels[x].blue / SCALE( MAX ); \ q[3] = MAX - pixels[x].opacity / SCALE( MAX ); \ \ q += 4; \ } \ } static void unpack_pixels( VipsImage *im, VipsPel *q8, PixelPacket *pixels, int n ) { int x; switch( im->Bands ) { case 1: /* Gray. */ switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: GRAY_LOOP( unsigned char, 255 ); break; case VIPS_FORMAT_USHORT: GRAY_LOOP( unsigned short, 65535 ); break; case VIPS_FORMAT_UINT: GRAY_LOOP( unsigned int, 4294967295UL ); break; case VIPS_FORMAT_DOUBLE: GRAY_LOOP( double, QuantumRange ); break; default: g_assert_not_reached(); } break; case 2: /* Gray plus alpha. */ switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: GRAYA_LOOP( unsigned char, 255 ); break; case VIPS_FORMAT_USHORT: GRAYA_LOOP( unsigned short, 65535 ); break; case VIPS_FORMAT_UINT: GRAYA_LOOP( unsigned int, 4294967295UL ); break; case VIPS_FORMAT_DOUBLE: GRAYA_LOOP( double, QuantumRange ); break; default: g_assert_not_reached(); } break; case 3: /* RGB. */ switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: RGB_LOOP( unsigned char, 255 ); break; case VIPS_FORMAT_USHORT: RGB_LOOP( unsigned short, 65535 ); break; case VIPS_FORMAT_UINT: RGB_LOOP( unsigned int, 4294967295UL ); break; case VIPS_FORMAT_DOUBLE: RGB_LOOP( double, QuantumRange ); break; default: g_assert_not_reached(); } break; case 4: /* RGBA or CMYK. */ switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: RGBA_LOOP( unsigned char, 255 ); break; case VIPS_FORMAT_USHORT: RGBA_LOOP( unsigned short, 65535 ); break; case VIPS_FORMAT_UINT: RGBA_LOOP( unsigned int, 4294967295UL ); break; case VIPS_FORMAT_DOUBLE: RGBA_LOOP( double, QuantumRange ); break; default: g_assert_not_reached(); } break; default: g_assert_not_reached(); } } static PixelPacket * get_pixels( Image *image, int left, int top, int width, int height ) { PixelPacket *pixels; #ifdef HAVE_GETVIRTUALPIXELS if( !(pixels = (PixelPacket *) GetVirtualPixels( image, left, top, width, height, &image->exception )) ) #else if( !(pixels = GetImagePixels( image, left, top, width, height )) ) #endif return( NULL ); /* Can't happen if red/green/blue are doubles. */ #ifndef UseHDRI /* Unpack palette. */ if( image->storage_class == PseudoClass ) { #ifdef HAVE_GETVIRTUALPIXELS IndexPacket *indexes = (IndexPacket *) GetVirtualIndexQueue( image ); #else /* Was GetIndexes(), but that's now deprecated. */ IndexPacket *indexes = AccessMutableIndexes( image ); #endif int i; for( i = 0; i < width * height; i++ ) { IndexPacket x = indexes[i]; if( x < image->colors ) { pixels[i].red = image->colormap[x].red; pixels[i].green = image->colormap[x].green; pixels[i].blue = image->colormap[x].blue; } } } #endif /*UseHDRI*/ return( pixels ); } static int magick_fill_region( VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ) { Read *read = (Read *) a; VipsRect *r = &out->valid; int y; for( y = 0; y < r->height; y++ ) { int top = r->top + y; int frame = top / read->frame_height; int line = top % read->frame_height; PixelPacket *pixels; g_mutex_lock( read->lock ); pixels = get_pixels( read->frames[frame], r->left, line, r->width, 1 ); g_mutex_unlock( read->lock ); if( !pixels ) { vips_foreign_load_invalidate( read->im ); vips_error( "magick2vips", "%s", _( "unable to read pixels" ) ); return( -1 ); } unpack_pixels( read->im, VIPS_REGION_ADDR( out, r->left, top ), pixels, r->width ); } return( 0 ); } int vips__magick_read( const char *filename, VipsImage *out, const char *density, int page, int n ) { Read *read; #ifdef DEBUG printf( "magick2vips: vips__magick_read: %s\n", filename ); #endif /*DEBUG*/ if( !(read = read_new( filename, out, NULL, n, density, page, n )) ) return( -1 ); #ifdef DEBUG printf( "magick2vips: calling ReadImage() ...\n" ); #endif /*DEBUG*/ read->image = ReadImage( read->image_info, read->exception ); if( !read->image ) { magick_vips_error( "magick2vips", read->exception ); vips_error( "magick2vips", _( "unable to read file \"%s\"" ), filename ); return( -1 ); } if( parse_header( read ) ) return( -1 ); if( vips_image_generate( out, NULL, magick_fill_region, NULL, read, NULL ) ) return( -1 ); return( 0 ); } int vips__magick_read_header( const char *filename, VipsImage *out, const char *density, int page, int n ) { Read *read; #ifdef DEBUG printf( "vips__magick_read_header: %s\n", filename ); #endif /*DEBUG*/ if( !(read = read_new( filename, out, NULL, 0, density, page, n )) ) return( -1 ); #ifdef DEBUG printf( "vips__magick_read_header: reading image ...\n" ); #endif /*DEBUG*/ /* It would be great if we could PingImage and just read the header, * but sadly many IM coders do not support ping. The critical one for * us is DICOM. TGA also has issues. */ read->image = ReadImage( read->image_info, read->exception ); if( !read->image ) { magick_vips_error( "magick2vips", read->exception ); vips_error( "magick2vips", _( "unable to read file \"%s\"" ), filename ); return( -1 ); } if( parse_header( read ) ) return( -1 ); if( out->Xsize <= 0 || out->Ysize <= 0 ) { vips_error( "magick2vips", "%s", _( "bad image size" ) ); return( -1 ); } /* Just a header read: we can free the read early and save an fd. */ read_free( read ); return( 0 ); } int vips__magick_read_buffer( const void *buf, const size_t len, VipsImage *out, const char *density, int page, int n ) { Read *read; #ifdef DEBUG printf( "magick2vips: vips__magick_read_buffer: %p %zu\n", buf, len ); #endif /*DEBUG*/ if( !(read = read_new( NULL, out, buf, len, density, page, n )) ) return( -1 ); #ifdef DEBUG printf( "magick2vips: calling BlobToImage() ...\n" ); #endif /*DEBUG*/ read->image = BlobToImage( read->image_info, buf, len, read->exception ); if( !read->image ) { magick_vips_error( "magick2vips", read->exception ); vips_error( "magick2vips", "%s", _( "unable to read buffer" ) ); return( -1 ); } if( parse_header( read ) ) return( -1 ); if( vips_image_generate( out, NULL, magick_fill_region, NULL, read, NULL ) ) return( -1 ); return( 0 ); } int vips__magick_read_buffer_header( const void *buf, const size_t len, VipsImage *out, const char *density, int page, int n ) { Read *read; #ifdef DEBUG printf( "vips__magick_read_buffer_header: %p %zu\n", buf, len ); #endif /*DEBUG*/ if( !(read = read_new( NULL, out, buf, len, density, page, n )) ) return( -1 ); #ifdef DEBUG printf( "vips__magick_read_buffer_header: pinging blob ...\n" ); #endif /*DEBUG*/ /* It would be great if we could PingBlob and just read the header, * but sadly many IM coders do not support ping well. The critical one * for us is DICOM. TGA also has issues. */ read->image = BlobToImage( read->image_info, buf, len, read->exception ); if( !read->image ) { magick_vips_error( "magick2vips", read->exception ); vips_error( "magick2vips", "%s", _( "unable to ping blob" ) ); return( -1 ); } if( parse_header( read ) ) return( -1 ); if( out->Xsize <= 0 || out->Ysize <= 0 ) { vips_error( "magick2vips", "%s", _( "bad image size" ) ); return( -1 ); } return( 0 ); } #endif /*HAVE_MAGICK6*/ #endif /*ENABLE_MAGICKLOAD*/ libvips-8.9.1/libvips/foreign/magick7load.c000066400000000000000000000551761361153320700206470ustar00rootroot00000000000000/* load with libMagick7 * * 8/7/16 * - from magickload * 25/11/16 * - add @n, deprecate @all_frames (just sets n = -1) * 24/7/18 * - sniff extra filetypes * 4/2/19 * - add profile (xmp, ipct, etc.) read */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef ENABLE_MAGICKLOAD #ifdef HAVE_MAGICK7 #include #include "magick.h" typedef struct _VipsForeignLoadMagick7 { VipsForeignLoad parent_object; /* Deprecated. Just sets n = -1. */ gboolean all_frames; char *density; /* Load at this resolution */ int page; /* Load this page (frame) */ int n; /* Load this many pages */ Image *image; ImageInfo *image_info; ExceptionInfo *exception; /* Number of pages in image. */ int n_pages; int n_frames; /* Number of frames we will read */ Image **frames; /* An Image* for each frame */ CacheView **cache_view; /* A CacheView for each frame */ int frame_height; /* Mutex to serialise calls to libMagick during threaded read. */ GMutex *lock; } VipsForeignLoadMagick7; typedef VipsForeignLoadClass VipsForeignLoadMagick7Class; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadMagick7, vips_foreign_load_magick7, VIPS_TYPE_FOREIGN_LOAD ); #ifdef DEBUG static void vips_magick7_print_traits( Image *image ) { static const int trait_bits[] = { CopyPixelTrait, UpdatePixelTrait, BlendPixelTrait }; static const char *trait_names[] = { "CopyPixelTrait", "UpdatePixelTrait", "BlendPixelTrait" }; int b; int i; printf( "vips_magick7_print_traits: channel traits:\n" ); for( b = 0; b < GetPixelChannels( image ); b++ ) { PixelChannel channel = GetPixelChannelChannel( image, b ); PixelTrait traits = GetPixelChannelTraits( image, channel ); printf( "\t%d) ", b ); for( i = 0; i < VIPS_NUMBER( trait_bits ); i++ ) if( traits & trait_bits[i] ) printf( "%s ", trait_names[i] ); if( traits == 0 ) printf( "undefined" ); printf( "\n" ); } } static void vips_magick7_print_channel_names( Image *image ) { static const int pixel_channels[] = { UndefinedPixelChannel, RedPixelChannel, CyanPixelChannel, GrayPixelChannel, LPixelChannel, LabelPixelChannel, YPixelChannel, aPixelChannel, GreenPixelChannel, MagentaPixelChannel, CbPixelChannel, bPixelChannel, BluePixelChannel, YellowPixelChannel, CrPixelChannel, BlackPixelChannel, AlphaPixelChannel, IndexPixelChannel, ReadMaskPixelChannel, WriteMaskPixelChannel, MetaPixelChannel, IntensityPixelChannel, CompositePixelChannel, SyncPixelChannel }; static const char *pixel_channel_names[] = { "UndefinedPixelChannel", "RedPixelChannel", "CyanPixelChannel", "GrayPixelChannel", "LPixelChannel", "LabelPixelChannel", "YPixelChannel", "aPixelChannel", "GreenPixelChannel", "MagentaPixelChannel", "CbPixelChannel", "bPixelChannel", "BluePixelChannel", "YellowPixelChannel", "CrPixelChannel", "BlackPixelChannel", "AlphaPixelChannel", "IndexPixelChannel", "ReadMaskPixelChannel", "WriteMaskPixelChannel", "MetaPixelChannel", "IntensityPixelChannel", "CompositePixelChannel", "SyncPixelChannel", }; int b; int i; printf( "vips_magick7_print_channel_names: channel names:\n" ); for( b = 0; b < GetPixelChannels( image ); b++ ) { PixelChannel channel = GetPixelChannelChannel( image, b ); printf( "\t%d) ", b ); for( i = 0; i < VIPS_NUMBER( pixel_channels ); i++ ) /* Don't break on found, many channel names repeat. */ if( channel == pixel_channels[i] ) printf( "%s ", pixel_channel_names[i] ); printf( "\n" ); } } static void vips_magick7_print_image_type( Image *image ) { static const int image_types[] = { UndefinedType, BilevelType, GrayscaleType, GrayscaleAlphaType, PaletteType, PaletteAlphaType, TrueColorType, TrueColorAlphaType, ColorSeparationType, ColorSeparationAlphaType, OptimizeType, PaletteBilevelAlphaType }; static const char *image_type_names[] = { "UndefinedType", "BilevelType", "GrayscaleType", "GrayscaleAlphaType", "PaletteType", "PaletteAlphaType", "TrueColorType", "TrueColorAlphaType", "ColorSeparationType", "ColorSeparationAlphaType", "OptimizeType", "PaletteBilevelAlphaType" }; int i; for( i = 0; i < VIPS_NUMBER( image_types ); i++ ) if( GetImageType( image ) == image_types[i] ) { printf( "\t%s\n", image_type_names[i] ); break; } if( i == VIPS_NUMBER( image_types ) ) printf( "\tunknown GetImageType()\n" ); } #endif /*DEBUG*/ static VipsForeignFlags vips_foreign_load_magick7_get_flags_filename( const char *filename ) { return( VIPS_FOREIGN_PARTIAL ); } static VipsForeignFlags vips_foreign_load_magick7_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_PARTIAL ); } static void vips_foreign_load_magick7_dispose( GObject *gobject ) { VipsForeignLoadMagick7 *magick7 = (VipsForeignLoadMagick7 *) gobject; int i; #ifdef DEBUG printf( "vips_foreign_load_magick7_dispose: %p\n", gobject ); #endif /*DEBUG*/ for( i = 0; i < magick7->n_frames; i++ ) { VIPS_FREEF( DestroyCacheView, magick7->cache_view[i] ); } VIPS_FREEF( DestroyImageList, magick7->image ); VIPS_FREEF( DestroyImageInfo, magick7->image_info ); VIPS_FREE( magick7->frames ); VIPS_FREE( magick7->cache_view ); VIPS_FREEF( magick_destroy_exception, magick7->exception ); VIPS_FREEF( vips_g_mutex_free, magick7->lock ); G_OBJECT_CLASS( vips_foreign_load_magick7_parent_class )-> dispose( gobject ); } static int vips_foreign_load_magick7_build( VipsObject *object ) { VipsForeignLoadMagick7 *magick7 = (VipsForeignLoadMagick7 *) object; #ifdef DEBUG printf( "vips_foreign_load_magick7_build: %p\n", object ); #endif /*DEBUG*/ magick_genesis(); magick7->image_info = CloneImageInfo( NULL ); magick7->exception = magick_acquire_exception(); magick7->lock = vips_g_mutex_new(); if( !magick7->image_info ) return( -1 ); if( magick7->all_frames ) magick7->n = -1; /* Canvas resolution for rendering vector formats like SVG. */ VIPS_SETSTR( magick7->image_info->density, magick7->density ); /* When reading DICOM images, we want to ignore any * window_center/_width setting, since it may put pixels outside the * 0-65535 range and lose data. * * These window settings are attached as vips metadata, so our caller * can interpret them if it wants. */ magick_set_image_option( magick7->image_info, "dcm:display-range", "reset" ); if( magick7->page > 0 ) magick_set_number_scenes( magick7->image_info, magick7->page, magick7->n ); if( VIPS_OBJECT_CLASS( vips_foreign_load_magick7_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_magick7_class_init( VipsForeignLoadMagick7Class *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_magick7_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magickload_base"; object_class->description = _( "load with ImageMagick7" ); object_class->build = vips_foreign_load_magick7_build; /* We need to be well to the back of the queue since vips's * dedicated loaders are usually preferable. */ foreign_class->priority = -100; load_class->get_flags_filename = vips_foreign_load_magick7_get_flags_filename; load_class->get_flags = vips_foreign_load_magick7_get_flags; VIPS_ARG_STRING( class, "density", 20, _( "Density" ), _( "Canvas resolution for rendering vector formats like SVG" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagick7, density ), NULL ); VIPS_ARG_INT( class, "page", 21, _( "Page" ), _( "Load this page from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagick7, page ), 0, 100000, 0 ); VIPS_ARG_INT( class, "n", 22, _( "n" ), _( "Load this many pages" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagick7, n ), -1, 100000, 1 ); VIPS_ARG_BOOL( class, "all_frames", 23, _( "all_frames" ), _( "Read all frames from an image" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignLoadMagick7, all_frames ), FALSE ); } static void vips_foreign_load_magick7_init( VipsForeignLoadMagick7 *magick7 ) { magick7->n = 1; } static void vips_foreign_load_magick7_error( VipsForeignLoadMagick7 *magick7 ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( magick7 ); vips_error( class->nickname, _( "Magick: %s %s" ), magick7->exception->reason, magick7->exception->description ); } static int magick7_get_bands( Image *image ) { int bands; int i; /* We skip all index channels. Lots of images can have these, it's not * just the palette ones. */ bands = 0; for( i = 0; i < GetPixelChannels( image ); i++ ) { PixelChannel channel = GetPixelChannelChannel( image, i ); if( channel != IndexPixelChannel ) bands += 1; } return( bands ); } static int vips_foreign_load_magick7_parse( VipsForeignLoadMagick7 *magick7, Image *image, VipsImage *out ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( magick7 ); const char *key; Image *p; #ifdef DEBUG printf( "image->depth = %zd\n", image->depth ); printf( "GetImageType() = %d\n", GetImageType( image ) ); vips_magick7_print_image_type( image ); printf( "GetPixelChannels() = %zd\n", GetPixelChannels( image ) ); printf( "image->columns = %zd\n", image->columns ); printf( "image->rows = %zd\n", image->rows ); #endif /*DEBUG*/ /* Ysize updated below once we have worked out how many frames to load. */ out->Xsize = image->columns; out->Ysize = image->rows; magick7->frame_height = image->rows; out->Bands = magick7_get_bands( image ); /* Depth can be 'fractional'. You'd think we should use * GetImageDepth() but that seems to compute something very complex. */ out->BandFmt = -1; if( image->depth >= 1 && image->depth <= 8 ) out->BandFmt = VIPS_FORMAT_UCHAR; if( image->depth >= 9 && image->depth <= 16 ) out->BandFmt = VIPS_FORMAT_USHORT; if( image->depth == 32 ) out->BandFmt = VIPS_FORMAT_FLOAT; if( image->depth == 64 ) out->BandFmt = VIPS_FORMAT_DOUBLE; if( out->BandFmt == -1 ) { vips_error( class->nickname, _( "unsupported bit depth %zd" ), image->depth ); return( -1 ); } switch( image->colorspace ) { case GRAYColorspace: if( out->BandFmt == VIPS_FORMAT_USHORT ) out->Type = VIPS_INTERPRETATION_GREY16; else out->Type = VIPS_INTERPRETATION_B_W; break; case sRGBColorspace: case RGBColorspace: if( out->BandFmt == VIPS_FORMAT_USHORT ) out->Type = VIPS_INTERPRETATION_RGB16; else out->Type = VIPS_INTERPRETATION_sRGB; break; case CMYKColorspace: out->Type = VIPS_INTERPRETATION_CMYK; break; default: vips_error( class->nickname, _( "unsupported colorspace %s" ), magick_ColorspaceType2str( image->colorspace ) ); return( -1 ); } switch( image->units ) { case PixelsPerInchResolution: out->Xres = image->resolution.x / 25.4; out->Yres = image->resolution.y / 25.4; vips_image_set_string( out, VIPS_META_RESOLUTION_UNIT, "in" ); break; case PixelsPerCentimeterResolution: out->Xres = image->resolution.x / 10.0; out->Yres = image->resolution.y / 10.0; vips_image_set_string( out, VIPS_META_RESOLUTION_UNIT, "cm" ); break; default: /* Things like GIF have no resolution info. */ out->Xres = 1.0; out->Yres = 1.0; break; } /* Other fields. */ out->Coding = VIPS_CODING_NONE; vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); /* Get all the string metadata. */ ResetImagePropertyIterator( image ); while( (key = GetNextImageProperty( image )) ) { char name_text[256]; VipsBuf name = VIPS_BUF_STATIC( name_text ); const char *value; value = GetImageProperty( image, key, magick7->exception ); if( !value ) { vips_foreign_load_magick7_error( magick7 ); return( -1 ); } vips_buf_appendf( &name, "magick-%s", key ); vips_image_set_string( out, vips_buf_all( &name ), value ); } /* Set vips metadata from ImageMagick profiles. */ if( magick_set_vips_profile( out, image ) ) return( -1 ); magick7->n_pages = GetImageListLength( GetFirstImageInList( image ) ); #ifdef DEBUG printf( "image has %d pages\n", magick7->n_pages ); #endif /*DEBUG*/ /* Do we have a set of equal-sized frames? Append them. FIXME ... there must be an attribute somewhere from dicom read which says this is a volumetric image */ magick7->n_frames = 0; for( p = image; p; (p = GetNextImageInList( p )) ) { if( p->columns != (unsigned int) out->Xsize || p->rows != (unsigned int) out->Ysize || magick7_get_bands( p ) != out->Bands || p->depth != image->depth ) { #ifdef DEBUG printf( "frame %d differs\n", magick7->n_frames ); printf( "%zdx%zd, %d bands\n", p->columns, p->rows, magick7_get_bands( p ) ); printf( "first frame is %dx%d, %d bands\n", out->Xsize, out->Ysize, out->Bands ); #endif /*DEBUG*/ break; } magick7->n_frames += 1; } if( p ) /* Nope ... just do the first image in the list. */ magick7->n_frames = 1; #ifdef DEBUG printf( "will read %d frames\n", magick7->n_frames ); #endif /*DEBUG*/ if( magick7->n != -1 ) magick7->n_frames = VIPS_MIN( magick7->n_frames, magick7->n ); /* So we can finally set the height. */ if( vips_object_argument_isset( VIPS_OBJECT( magick7 ), "n" ) ) { vips_image_set_int( out, VIPS_META_PAGE_HEIGHT, out->Ysize ); out->Ysize *= magick7->n_frames; } vips_image_set_int( out, VIPS_META_N_PAGES, magick7->n_pages ); return( 0 ); } /* We don't bother with GetPixelReadMask(), assume it's everywhere. Don't * bother with traits, assume that's always updated. * * We do skip index channels. Palette images add extra index channels * containing the index value from the file before colourmap lookup. */ #define UNPACK( TYPE ) { \ TYPE * restrict tq = (TYPE *) q; \ int x; \ int b; \ \ for( x = 0; x < r->width; x++ ) { \ for( b = 0; b < GetPixelChannels( image ); b++ ) { \ PixelChannel channel = \ GetPixelChannelChannel( image, b ); \ \ if( channel != IndexPixelChannel ) \ *tq++ = p[b]; \ } \ \ p += GetPixelChannels( image ); \ } \ } static int vips_foreign_load_magick7_fill_region( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsForeignLoadMagick7 *magick7 = (VipsForeignLoadMagick7 *) a; VipsRect *r = &or->valid; VipsImage *im = or->im; int y; for( y = 0; y < r->height; y++ ) { int top = r->top + y; int frame = top / magick7->frame_height; int line = top % magick7->frame_height; Image *image = magick7->frames[frame]; Quantum * restrict p; VipsPel * restrict q; g_mutex_lock( magick7->lock ); p = GetCacheViewAuthenticPixels( magick7->cache_view[frame], r->left, line, r->width, 1, magick7->exception ); g_mutex_unlock( magick7->lock ); if( !p ) /* This can happen if, for example, some frames of a * gif are shorter than others. It's not always * an error. */ continue; q = VIPS_REGION_ADDR( or, r->left, top ); switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: UNPACK( unsigned char ); break; case VIPS_FORMAT_USHORT: UNPACK( unsigned short ); break; case VIPS_FORMAT_FLOAT: UNPACK( float ); break; case VIPS_FORMAT_DOUBLE: UNPACK( double ); break; default: g_assert_not_reached(); } } return( 0 ); } static int vips_foreign_load_magick7_load( VipsForeignLoadMagick7 *magick7 ) { VipsForeignLoad *load = (VipsForeignLoad *) magick7; Image *p; int i; #ifdef DEBUG printf( "vips_foreign_load_magick7_load: %p\n", magick7 ); #endif /*DEBUG*/ if( vips_foreign_load_magick7_parse( magick7, magick7->image, load->out ) ) return( -1 ); /* Record frame pointers. */ g_assert( !magick7->frames ); if( !(magick7->frames = VIPS_ARRAY( NULL, magick7->n_frames, Image * )) ) return( -1 ); p = magick7->image; for( i = 0; i < magick7->n_frames; i++ ) { magick7->frames[i] = p; p = GetNextImageInList( p ); } /* And a cache_view for each frame. */ g_assert( !magick7->cache_view ); if( !(magick7->cache_view = VIPS_ARRAY( NULL, magick7->n_frames, CacheView * )) ) return( -1 ); for( i = 0; i < magick7->n_frames; i++ ) { magick7->cache_view[i] = AcquireAuthenticCacheView( magick7->frames[i], magick7->exception ); } #ifdef DEBUG /* Only display the traits from frame0, they should all be the same. */ vips_magick7_print_traits( magick7->frames[0] ); vips_magick7_print_channel_names( magick7->frames[0] ); #endif /*DEBUG*/ if( vips_image_generate( load->out, NULL, vips_foreign_load_magick7_fill_region, NULL, magick7, NULL ) ) return( -1 ); return( 0 ); } typedef struct _VipsForeignLoadMagick7File { VipsForeignLoadMagick7 parent_object; char *filename; } VipsForeignLoadMagick7File; typedef VipsForeignLoadMagick7Class VipsForeignLoadMagick7FileClass; G_DEFINE_TYPE( VipsForeignLoadMagick7File, vips_foreign_load_magick7_file, vips_foreign_load_magick7_get_type() ); static gboolean ismagick7( const char *filename ) { /* Fetch the first 100 bytes. Hopefully that'll be enough. */ unsigned char buf[100]; /* Files shorter than 100 bytes will leave nonsense at the end of buf, * but it shouldn't matter. */ return( vips__get_bytes( filename, buf, 100 ) && magick_ismagick( buf, 100 ) ); } static int vips_foreign_load_magick7_file_header( VipsForeignLoad *load ) { VipsForeignLoadMagick7 *magick7 = (VipsForeignLoadMagick7 *) load; VipsForeignLoadMagick7File *file = (VipsForeignLoadMagick7File *) load; #ifdef DEBUG printf( "vips_foreign_load_magick7_file_header: %p\n", load ); #endif /*DEBUG*/ vips_strncpy( magick7->image_info->filename, file->filename, MagickPathExtent ); magick_sniff_file( magick7->image_info, file->filename ); /* It would be great if we could PingImage and just read the header, * but sadly many IM coders do not support ping. The critical one for * us is DICOM. * * We have to read the whole image in _header. */ magick7->image = ReadImage( magick7->image_info, magick7->exception ); if( !magick7->image ) { vips_foreign_load_magick7_error( magick7 ); return( -1 ); } if( vips_foreign_load_magick7_load( magick7 ) ) return( -1 ); VIPS_SETSTR( load->out->filename, file->filename ); return( 0 ); } static void vips_foreign_load_magick7_file_class_init( VipsForeignLoadMagick7FileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magickload"; object_class->description = _( "load file with ImageMagick7" ); load_class->is_a = ismagick7; load_class->header = vips_foreign_load_magick7_file_header; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagick7File, filename ), NULL ); } static void vips_foreign_load_magick7_file_init( VipsForeignLoadMagick7File *magick7_file ) { } typedef struct _VipsForeignLoadMagick7Buffer { VipsForeignLoadMagick7 parent_object; VipsArea *buf; } VipsForeignLoadMagick7Buffer; typedef VipsForeignLoadMagick7Class VipsForeignLoadMagick7BufferClass; G_DEFINE_TYPE( VipsForeignLoadMagick7Buffer, vips_foreign_load_magick7_buffer, vips_foreign_load_magick7_get_type() ); static gboolean vips_foreign_load_magick7_buffer_is_a_buffer( const void *buf, size_t len ) { return( magick_ismagick( (const unsigned char *) buf, len ) ); } static int vips_foreign_load_magick7_buffer_header( VipsForeignLoad *load ) { VipsForeignLoadMagick7 *magick7 = (VipsForeignLoadMagick7 *) load; VipsForeignLoadMagick7Buffer *magick7_buffer = (VipsForeignLoadMagick7Buffer *) load; #ifdef DEBUG printf( "vips_foreign_load_magick7_buffer_header: %p\n", load ); #endif /*DEBUG*/ /* It would be great if we could PingBlob and just read the header, * but sadly many IM coders do not support ping. The critical one for * us is DICOM. * * We have to read the whole image in _header. */ magick_sniff_bytes( magick7->image_info, magick7_buffer->buf->data, magick7_buffer->buf->length ); magick7->image = BlobToImage( magick7->image_info, magick7_buffer->buf->data, magick7_buffer->buf->length, magick7->exception ); if( !magick7->image ) { vips_foreign_load_magick7_error( magick7 ); return( -1 ); } if( vips_foreign_load_magick7_load( magick7 ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_magick7_buffer_class_init( VipsForeignLoadMagick7BufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magickload_buffer"; object_class->description = _( "load buffer with ImageMagick7" ); load_class->is_a_buffer = vips_foreign_load_magick7_buffer_is_a_buffer; load_class->header = vips_foreign_load_magick7_buffer_header; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagick7Buffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_magick7_buffer_init( VipsForeignLoadMagick7Buffer *buffer ) { } #endif /*HAVE_MAGICK7*/ #endif /*ENABLE_MAGICKLOAD*/ libvips-8.9.1/libvips/foreign/magickload.c000066400000000000000000000264121361153320700205470ustar00rootroot00000000000000/* load with libMagick * * 5/12/11 * - from openslideload.c * 17/1/12 * - remove header-only loads * 11/6/13 * - add @all_frames option, off by default * 14/2/16 * - add @page option, 0 by default * 25/11/16 * - add @n, deprecate @all_frames (just sets n = -1) * 8/9/17 * - don't cache magickload */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef ENABLE_MAGICKLOAD #ifdef HAVE_MAGICK6 #include "pforeign.h" #include "magick.h" typedef struct _VipsForeignLoadMagick { VipsForeignLoad parent_object; /* Deprecated. Just sets n = -1. */ gboolean all_frames; char *density; /* Load at this resolution */ int page; /* Load this page (frame) */ int n; /* Load this many pages */ } VipsForeignLoadMagick; typedef VipsForeignLoadClass VipsForeignLoadMagickClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadMagick, vips_foreign_load_magick, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_magick_get_flags_filename( const char *filename ) { return( VIPS_FOREIGN_PARTIAL ); } static VipsForeignFlags vips_foreign_load_magick_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_PARTIAL ); } static void vips_foreign_load_magick_class_init( VipsForeignLoadMagickClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magickload_base"; object_class->description = _( "load with ImageMagick" ); /* Don't cache magickload: it can gobble up memory and disc. */ operation_class->flags = VIPS_OPERATION_NOCACHE; /* We need to be well to the back of the queue since vips's * dedicated loaders are usually preferable. */ foreign_class->priority = -100; load_class->get_flags_filename = vips_foreign_load_magick_get_flags_filename; load_class->get_flags = vips_foreign_load_magick_get_flags; VIPS_ARG_BOOL( class, "all_frames", 20, _( "all_frames" ), _( "Read all frames from an image" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignLoadMagick, all_frames ), FALSE ); VIPS_ARG_STRING( class, "density", 21, _( "Density" ), _( "Canvas resolution for rendering vector formats like SVG" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagick, density ), NULL ); VIPS_ARG_INT( class, "page", 22, _( "Page" ), _( "Load this page from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagick, page ), 0, 100000, 0 ); VIPS_ARG_INT( class, "n", 23, _( "n" ), _( "Load this many pages" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagick, n ), -1, 100000, 1 ); } static void vips_foreign_load_magick_init( VipsForeignLoadMagick *magick ) { magick->n = 1; } typedef struct _VipsForeignLoadMagickFile { VipsForeignLoadMagick parent_object; char *filename; } VipsForeignLoadMagickFile; typedef VipsForeignLoadMagickClass VipsForeignLoadMagickFileClass; G_DEFINE_TYPE( VipsForeignLoadMagickFile, vips_foreign_load_magick_file, vips_foreign_load_magick_get_type() ); static gboolean ismagick( const char *filename ) { /* Fetch the first 100 bytes. Hopefully that'll be enough. */ unsigned char buf[100]; /* Files shorter than 100 bytes will leave nonsense at the end of buf, * but it shouldn't matter. */ return( vips__get_bytes( filename, buf, 100 ) && magick_ismagick( buf, 100 ) ); } /* Unfortunately, libMagick does not support header-only reads very well. See * * http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=20017 * * Test especially with BMP, GIF, TGA. So we are forced to read the entire * image in the @header() method. */ static int vips_foreign_load_magick_file_header( VipsForeignLoad *load ) { VipsForeignLoadMagick *magick = (VipsForeignLoadMagick *) load; VipsForeignLoadMagickFile *magick_file = (VipsForeignLoadMagickFile *) load; if( magick->all_frames ) magick->n = -1; if( vips__magick_read( magick_file->filename, load->out, magick->density, magick->page, magick->n ) ) return( -1 ); VIPS_SETSTR( load->out->filename, magick_file->filename ); return( 0 ); } static void vips_foreign_load_magick_file_class_init( VipsForeignLoadMagickFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magickload"; object_class->description = _( "load file with ImageMagick" ); load_class->is_a = ismagick; load_class->header = vips_foreign_load_magick_file_header; load_class->load = NULL; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagickFile, filename ), NULL ); } static void vips_foreign_load_magick_file_init( VipsForeignLoadMagickFile *magick_file ) { } typedef struct _VipsForeignLoadMagickBuffer { VipsForeignLoadMagick parent_object; VipsArea *buf; } VipsForeignLoadMagickBuffer; typedef VipsForeignLoadMagickClass VipsForeignLoadMagickBufferClass; G_DEFINE_TYPE( VipsForeignLoadMagickBuffer, vips_foreign_load_magick_buffer, vips_foreign_load_magick_get_type() ); static gboolean vips_foreign_load_magick_buffer_is_a_buffer( const void *buf, size_t len ) { return( magick_ismagick( (const unsigned char *) buf, len ) ); } /* Unfortunately, libMagick does not support header-only reads very well. See * * http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=20017 * * Test especially with BMP, GIF, TGA. So we are forced to read the entire * image in the @header() method. */ static int vips_foreign_load_magick_buffer_header( VipsForeignLoad *load ) { VipsForeignLoadMagick *magick = (VipsForeignLoadMagick *) load; VipsForeignLoadMagickBuffer *magick_buffer = (VipsForeignLoadMagickBuffer *) load; if( magick->all_frames ) magick->n = -1; if( vips__magick_read_buffer( magick_buffer->buf->data, magick_buffer->buf->length, load->out, magick->density, magick->page, magick->n ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_magick_buffer_class_init( VipsForeignLoadMagickBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magickload_buffer"; object_class->description = _( "load buffer with ImageMagick" ); load_class->is_a_buffer = vips_foreign_load_magick_buffer_is_a_buffer; load_class->header = vips_foreign_load_magick_buffer_header; load_class->load = NULL; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagickBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_magick_buffer_init( VipsForeignLoadMagickBuffer *buffer ) { } #endif /*HAVE_MAGICK6*/ #endif /*ENABLE_MAGICKLOAD*/ /** * vips_magickload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, load from this page * * @n: %gint, load this many pages * * @density: string, canvas resolution for rendering vector formats like SVG * * Read in an image using libMagick, the ImageMagick library. This library can * read more than 80 file formats, including SVG, BMP, EPS, DICOM and many * others. * The reader can handle any ImageMagick image, including the float and double * formats. It will work with any quantum size, including HDR. Any metadata * attached to the libMagick image is copied on to the VIPS image. * * The reader should also work with most versions of GraphicsMagick. See the * "--with-magickpackage" configure option. * * The file format is usually guessed from the filename suffix, or sniffed * from the file contents. * * Normally it will only load the first image in a many-image sequence (such * as a GIF or a PDF). Use @page and @n to set the start page and number of * pages to load. Set @n to -1 to load all pages from @page onwards. * * @density is "WxH" in DPI, e.g. "600x300" or "600" (default is "72x72"). See * the [density * docs](http://www.imagemagick.org/script/command-line-options.php#density) * on the imagemagick website. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_magickload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "magickload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_magickload_buffer: * @buf: (array length=len) (element-type guint8): memory area to load * @len: size of memory area * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, load from this page * * @n: %gint, load this many pages * * @density: string, canvas resolution for rendering vector formats like SVG * * Read an image memory block using libMagick into a VIPS image. Exactly as * vips_magickload(), but read from a memory source. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_magickload(). * * Returns: 0 on success, -1 on error. */ int vips_magickload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "magickload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } libvips-8.9.1/libvips/foreign/magicksave.c000066400000000000000000000453641361153320700205750ustar00rootroot00000000000000/* save with libMagick * * 22/12/17 dlemstra * 6/2/19 DarthSim * - fix GraphicsMagick support * 17/2/19 * - support ICC, XMP, EXIF, IPTC metadata * - write with a single call to vips_sink_disc() * 29/6/19 * - support "strip" option * 6/7/19 [deftomat] * - support array of delays * 5/8/19 DarthSim * - support GIF optimization */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #ifdef ENABLE_MAGICKSAVE #include "pforeign.h" #include "magick.h" typedef struct _VipsForeignSaveMagick { VipsForeignSave parent_object; /* Parameters. */ char *filename; /* NULL during buffer output */ char *format; int quality; gboolean optimize_gif_frames; gboolean optimize_gif_transparency; ImageInfo *image_info; ExceptionInfo *exception; char *map; StorageType storage_type; Image *images; Image *current_image; int page_height; GValue delay_gvalue; int *delays; int delays_length; /* The position of current_image in the output. */ VipsRect position; } VipsForeignSaveMagick; typedef VipsForeignSaveClass VipsForeignSaveMagickClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSaveMagick, vips_foreign_save_magick, VIPS_TYPE_FOREIGN_SAVE ); static void vips_foreign_save_magick_dispose( GObject *gobject ) { VipsForeignSaveMagick *magick = (VipsForeignSaveMagick *) gobject; #ifdef DEBUG printf( "vips_foreign_save_magick_dispose: %p\n", gobject ); #endif /*DEBUG*/ VIPS_FREE( magick->map ); VIPS_FREEF( DestroyImageList, magick->images ); VIPS_FREEF( DestroyImageInfo, magick->image_info ); VIPS_FREEF( magick_destroy_exception, magick->exception ); g_value_unset( &magick->delay_gvalue ); G_OBJECT_CLASS( vips_foreign_save_magick_parent_class )-> dispose( gobject ); } /* Move current_image on to the next image we will write. */ static int vips_foreign_save_magick_next_image( VipsForeignSaveMagick *magick ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( magick ); VipsForeignSave *save = (VipsForeignSave *) magick; VipsImage *im = save->ready; Image *image; int number; const char *str; int page_index; g_assert( !magick->current_image ); if( magick->images == NULL ) { if( !(image = magick_acquire_image( magick->image_info, magick->exception )) ) return( -1 ); magick->images = image; magick->position.top = 0; magick->position.left = 0; magick->position.width = im->Xsize; magick->position.height = magick->page_height; } else { image = GetLastImageInList( magick->images ); magick_acquire_next_image( magick->image_info, image, magick->exception ); if( GetNextImageInList( image ) == NULL ) return( -1 ); image = SyncNextImageInList( image ); magick->position.top += magick->page_height; } if( !magick_set_image_size( image, im->Xsize, magick->page_height, magick->exception ) ) return( -1 ); /* Delay must be converted from milliseconds into centiseconds * as GIF image requires centiseconds. */ if( magick->delays ) { page_index = magick->position.top / magick->page_height; if( page_index < magick->delays_length ) image->delay = VIPS_RINT( magick->delays[page_index] / 10.0 ); } /* ImageMagick uses iterations like this (at least in gif save): * 0 - set 0 loops (infinite) * 1 - don't write the netscape extension block * 2 - loop once * 3 - loop twice etc. */ if( vips_image_get_typeof( im, "loop" ) && !vips_image_get_int( im, "loop", &number ) ) { image->iterations = (size_t) number; } else { /* DEPRECATED "gif-loop" * * We have the simple gif meaning, so we must add one unless * it's zero. */ if( vips_image_get_typeof( im, "gif-loop" ) && !vips_image_get_int( im, "gif-loop", &number ) ) image->iterations = (size_t) (number ? number + 1 : 0); } if( vips_image_get_typeof( im, "gif-comment" ) && !vips_image_get_string( im, "gif-comment", &str ) ) magick_set_property( image, "comment", str, magick->exception ); /* libvips keeps animations as a set of independent frames, so we want * to clear to the background between each one. */ image->dispose = BackgroundDispose; if( !save->strip && magick_set_magick_profile( image, im, magick->exception ) ) { magick_vips_error( class->nickname, magick->exception ); return( -1 ); } magick->current_image = image; return( 0 ); } /* We've written all the pixels to current_image ... finish it off ready to * move on. */ static void vips_foreign_save_magick_end_image( VipsForeignSaveMagick *magick ) { if( magick->current_image ) { magick_inherit_exception( magick->exception, magick->current_image ); magick->current_image = NULL; } } /* Another block of pixels have arrived from libvips. */ static int vips_foreign_save_magick_write_block( VipsRegion *region, VipsRect *area, void *a ) { VipsForeignSaveMagick *magick = (VipsForeignSaveMagick *) a; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( magick ); VipsRect pixels; pixels = region->valid; do { VipsRect hit; void *p; if( !magick->current_image && vips_foreign_save_magick_next_image( magick ) ) return( -1 ); vips_rect_intersectrect( &pixels, &magick->position, &hit ); p = VIPS_REGION_ADDR( region, hit.left, hit.top ); if( !magick_import_pixels( magick->current_image, hit.left, hit.top - magick->position.top, hit.width, hit.height, magick->map, magick->storage_type, p, magick->exception ) ) { magick_vips_error( class->nickname, magick->exception ); return( -1 ); } /* Have we filled the page. */ if( VIPS_RECT_BOTTOM( &hit ) == VIPS_RECT_BOTTOM( &magick->position ) ) vips_foreign_save_magick_end_image( magick ); pixels.top += hit.height; pixels.height -= hit.height; } while( pixels.height > 0 ); return( 0 ); } static int vips_foreign_save_magick_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveMagick *magick = (VipsForeignSaveMagick *) object; VipsImage *im; #ifdef DEBUG printf( "vips_foreign_save_magick_build: %p\n", object ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_foreign_save_magick_parent_class )-> build( object ) ) return( -1 ); magick_genesis(); /* The image to save. */ im = save->ready; magick->exception = magick_acquire_exception(); magick->image_info = CloneImageInfo( NULL ); switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: magick->storage_type = CharPixel; break; case VIPS_FORMAT_USHORT: magick->storage_type = ShortPixel; break; case VIPS_FORMAT_UINT: magick->storage_type = LongPixel; break; case VIPS_FORMAT_FLOAT: magick->storage_type = FloatPixel; break; case VIPS_FORMAT_DOUBLE: magick->storage_type = DoublePixel; break; default: vips_error( class->nickname, "%s", _( "unsupported image format" ) ); return( -1 ); } switch( im->Bands ) { case 1: magick->map = g_strdup( "I" ); break; case 2: magick->map = g_strdup( "IA" ); break; case 3: magick->map = g_strdup( "RGB" ); break; case 4: if( im->Type == VIPS_INTERPRETATION_CMYK ) magick->map = g_strdup( "CMYK" ); else magick->map = g_strdup( "RGBA" ); break; case 5: magick->map = g_strdup( "CMYKA" ); break; default: vips_error( class->nickname, "%s", _( "unsupported number of image bands" ) ); return( -1 ); } if( magick->format ) { vips_strncpy( magick->image_info->magick, magick->format, MaxPathExtent ); if( magick->filename ) (void) vips_snprintf( magick->image_info->filename, MaxPathExtent, "%s:%s", magick->format, magick->filename ); } else if( magick->filename ) { vips_strncpy( magick->image_info->filename, magick->filename, MaxPathExtent ); } if( magick->quality > 0 ) magick->image_info->quality = magick->quality; magick->page_height = vips_image_get_page_height( im ); /* Get as a gvalue so we can keep a ref to the delay array while we * need it. */ if( vips_image_get_typeof( im, "delay" ) ) { g_value_unset( &magick->delay_gvalue ); if( vips_image_get( im, "delay", &magick->delay_gvalue ) ) return( -1 ); magick->delays = vips_value_get_array_int( &magick->delay_gvalue, &magick->delays_length ); } if( vips_sink_disc( im, vips_foreign_save_magick_write_block, magick ) ) return( -1 ); if( magick->optimize_gif_frames ) { if( !magick_optimize_image_layers( &magick->images, magick->exception ) ) { magick_inherit_exception( magick->exception, magick->images ); magick_vips_error( class->nickname, magick->exception ); return( -1 ); } } if( magick->optimize_gif_transparency ) { if( !magick_optimize_image_transparency( magick->images, magick->exception ) ) { magick_inherit_exception( magick->exception, magick->images ); magick_vips_error( class->nickname, magick->exception ); return( -1 ); } } return( 0 ); } /* We could call into libMagick and discover what save formats it supports, but * that would mean starting up libMagick on libvips init, and that would add a * lot of time. * * Instead, just list the commonly-used formats that all libMagicks support and * that libvips does not. */ static const char *vips__save_magick_suffs[] = { ".gif", ".bmp", NULL }; /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define US VIPS_FORMAT_USHORT #define UI VIPS_FORMAT_UINT #define F VIPS_FORMAT_FLOAT #define D VIPS_FORMAT_DOUBLE static int bandfmt_magick[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, UI, UI, F, F, D, D }; static void vips_foreign_save_magick_class_init( VipsForeignSaveMagickClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->dispose = vips_foreign_save_magick_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magicksave_base"; object_class->description = _( "save with ImageMagick" ); object_class->build = vips_foreign_save_magick_build; /* We need to be well to the back of the queue since vips's * dedicated savers are usually preferable. */ foreign_class->priority = -100; foreign_class->suffs = vips__save_magick_suffs; save_class->saveable = VIPS_SAVEABLE_ANY; save_class->format_table = bandfmt_magick; VIPS_ARG_STRING( class, "format", 2, _( "Format" ), _( "Format to save in" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveMagick, format ), NULL ); VIPS_ARG_INT( class, "quality", 3, _( "Quality" ), _( "Quality to use" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveMagick, quality ), 0, 100, 0 ); VIPS_ARG_BOOL( class, "optimize_gif_frames", 4, _( "Optimize_gif_frames" ), _( "Apply GIF frames optimization" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveMagick, optimize_gif_frames ), FALSE ); VIPS_ARG_BOOL( class, "optimize_gif_transparency", 5, _( "Optimize_gif_transparency" ), _( "Apply GIF transparency optimization" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveMagick, optimize_gif_transparency ), FALSE ); } static void vips_foreign_save_magick_init( VipsForeignSaveMagick *magick ) { /* Init to an int just to have something there. It is swapped for an * int array later. */ g_value_init( &magick->delay_gvalue, G_TYPE_INT ); } typedef struct _VipsForeignSaveMagickFile { VipsForeignSaveMagick parent_object; char *filename; } VipsForeignSaveMagickFile; typedef VipsForeignSaveMagickClass VipsForeignSaveMagickFileClass; G_DEFINE_TYPE( VipsForeignSaveMagickFile, vips_foreign_save_magick_file, vips_foreign_save_magick_get_type() ); static int vips_foreign_save_magick_file_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsForeignSaveMagick *magick = (VipsForeignSaveMagick *) object; VipsForeignSaveMagickFile *file = (VipsForeignSaveMagickFile *) object; magick->filename = file->filename; if( VIPS_OBJECT_CLASS( vips_foreign_save_magick_file_parent_class )-> build( object ) ) return( -1 ); if( !WriteImages( magick->image_info, magick->images, magick->image_info->filename, magick->exception ) ) { magick_inherit_exception( magick->exception, magick->images ); magick_vips_error( class->nickname, magick->exception ); return( -1 ); } return( 0 ); } static void vips_foreign_save_magick_file_class_init( VipsForeignSaveMagickFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magicksave"; object_class->description = _( "save file with ImageMagick" ); object_class->build = vips_foreign_save_magick_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveMagickFile, filename ), NULL ); } static void vips_foreign_save_magick_file_init( VipsForeignSaveMagickFile *file ) { } typedef struct _VipsForeignSaveMagickBuffer { VipsForeignSaveMagick parent_object; /* Save to a buffer. */ VipsArea *buf; } VipsForeignSaveMagickBuffer; typedef VipsForeignSaveMagickClass VipsForeignSaveMagickBufferClass; G_DEFINE_TYPE( VipsForeignSaveMagickBuffer, vips_foreign_save_magick_buffer, vips_foreign_save_magick_get_type() ); static int vips_foreign_save_magick_buffer_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsForeignSaveMagick *magick = (VipsForeignSaveMagick *) object; VipsForeignSaveMagickBuffer *buffer = (VipsForeignSaveMagickBuffer *) object; void *obuf; size_t olen; VipsBlob *blob; if( VIPS_OBJECT_CLASS( vips_foreign_save_magick_buffer_parent_class )-> build( object ) ) return( -1 ); if( !(obuf = magick_images_to_blob( magick->image_info, magick->images, &olen, magick->exception )) ) { magick_inherit_exception( magick->exception, magick->images ); magick_vips_error( class->nickname, magick->exception ); return( -1 ); } /* obuf is a g_free() buffer, not vips_free(). */ blob = vips_blob_new( (VipsCallbackFn) g_free, obuf, olen ); g_object_set( buffer, "buffer", blob, NULL ); vips_area_unref( VIPS_AREA( blob ) ); return( 0 ); } static void vips_foreign_save_magick_buffer_class_init( VipsForeignSaveMagickBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magicksave_buffer"; object_class->description = _( "save image to magick buffer" ); object_class->build = vips_foreign_save_magick_buffer_build; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to save to" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignSaveMagickBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_save_magick_buffer_init( VipsForeignSaveMagickBuffer *buffer ) { } #endif /*ENABLE_MAGICKSAVE*/ /** * vips_magicksave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @quality: %gint, quality factor * * @format: %gchararray, format to save as * * @optimize_gif_frames: %gboolean, apply GIF frames optimization * * @optimize_gif_transparency: %gboolean, apply GIF transparency optimization * * Write an image using libMagick. * * Use @quality to set the quality factor. Default 0. * * Use @format to explicitly set the save format, for example, "BMP". Otherwise * the format is guessed from the filename suffix. * * If @optimize_gif_frames is set, GIF frames are cropped to the smallest size * while preserving the results of the GIF animation. This takes some time for * computation but saves some time on encoding and produces smaller files in * some cases. * * If @optimize_gif_transparency is set, pixels that don't change the image * through animation are made transparent. This takes some time for computation * but saves some time on encoding and produces smaller files in some cases. * * See also: vips_magicksave_buffer(), vips_magickload(). * * Returns: 0 on success, -1 on error. */ int vips_magicksave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "magicksave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_magicksave_buffer: (method) * @in: image to save * @buf: (array length=len) (element-type guint8): return output buffer here * @len: (type gsize): return output length here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @quality: %gint, quality factor * * @format: %gchararray, format to save as * * @optimize_gif_frames: %gboolean, apply GIF frames optimization * * @optimize_gif_transparency: %gboolean, apply GIF transparency optimization * * As vips_magicksave(), but save to a memory buffer. * * The address of the buffer is returned in @obuf, the length of the buffer in * @olen. You are responsible for freeing the buffer with g_free() when you * are done with it. * * See also: vips_magicksave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_magicksave_buffer( VipsImage *in, void **buf, size_t *len, ... ) { va_list ap; VipsArea *area; int result; area = NULL; va_start( ap, len ); result = vips_call_split( "magicksave_buffer", ap, in, &area ); va_end( ap ); if( !result && area ) { if( buf ) { *buf = area->data; area->free_fn = NULL; } if( len ) *len = area->length; vips_area_unref( area ); } return( result ); } libvips-8.9.1/libvips/foreign/matlab.c000066400000000000000000000155661361153320700177240ustar00rootroot00000000000000/* Read matlab save files with libmatio * * 4/8/09 * - transpose on load, assemble planes into bands (thanks Mikhail) * 20/12/11 * - reworked as some fns ready for new-style classes * 21/8/14 * - swap width/height * - set interpretation to rgb16 etc. * 16/2/16 * - more specific is_a test */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Remaining issues: + it will not do complex images + it will not handle sparse matricies + it loads the first variable in the file with between 1 and 3 dimensions, is this sensible behaviour? + load only, no save */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_MATIO #include #include #include #include #include #include #include "pforeign.h" /* What we track during a Mat-file read. */ typedef struct { char *filename; VipsImage *out; mat_t *mat; matvar_t *var; } Read; static void read_destroy( Read *read ) { VIPS_FREE( read->filename ); VIPS_FREEF( Mat_VarFree, read->var ); VIPS_FREEF( Mat_Close, read->mat ); vips_free( read ); } static Read * read_new( const char *filename, VipsImage *out ) { Read *read; if( !(read = VIPS_NEW( NULL, Read )) ) return( NULL ); read->filename = vips_strdup( NULL, filename ); read->out = out; read->mat = NULL; read->var = NULL; if( !(read->mat = Mat_Open( filename, MAT_ACC_RDONLY )) ) { vips_error( "mat2vips", _( "unable to open \"%s\"" ), filename ); read_destroy( read ); return( NULL ); } for(;;) { if( !(read->var = Mat_VarReadNextInfo( read->mat )) ) { vips_error( "mat2vips", _( "no matrix variables in \"%s\"" ), filename ); read_destroy( read ); return( NULL ); } #ifdef DEBUG printf( "mat2vips: seen:\n" ); printf( "var->name == %s\n", read->var->name ); printf( "var->class_type == %d\n", read->var->class_type ); printf( "var->rank == %d\n", read->var->rank ); #endif /*DEBUG*/ /* Vector to colour image is OK for us. */ if( read->var->rank >= 1 && read->var->rank <= 3 ) break; VIPS_FREEF( Mat_VarFree, read->var ); } return( read ); } /* Matlab classes -> VIPS band formats. */ static int mat2vips_formats[][2] = { { MAT_C_UINT8, VIPS_FORMAT_UCHAR }, { MAT_C_INT8, VIPS_FORMAT_CHAR }, { MAT_C_UINT16, VIPS_FORMAT_USHORT }, { MAT_C_INT16, VIPS_FORMAT_SHORT }, { MAT_C_UINT32, VIPS_FORMAT_UINT }, { MAT_C_INT32, VIPS_FORMAT_INT }, { MAT_C_SINGLE, VIPS_FORMAT_FLOAT }, { MAT_C_DOUBLE, VIPS_FORMAT_DOUBLE } }; /* Pick an interpretation. */ static VipsInterpretation mat2vips_pick_interpretation( int bands, VipsBandFormat format ) { if( bands == 3 && vips_band_format_is8bit( format ) ) return( VIPS_INTERPRETATION_sRGB ); if( bands == 3 && (format == VIPS_FORMAT_USHORT || format == VIPS_FORMAT_SHORT) ) return( VIPS_INTERPRETATION_RGB16 ); if( bands == 1 && (format == VIPS_FORMAT_USHORT || format == VIPS_FORMAT_SHORT) ) return( VIPS_INTERPRETATION_GREY16 ); if( bands > 1 ) return( VIPS_INTERPRETATION_MULTIBAND ); return( VIPS_INTERPRETATION_MULTIBAND ); } static int mat2vips_get_header( matvar_t *var, VipsImage *im ) { int width, height, bands; VipsBandFormat format; VipsInterpretation interpretation; int i; width = 1; bands = 1; switch( var->rank ) { case 3: bands = var->dims[2]; case 2: width = var->dims[1]; case 1: height = var->dims[0]; break; default: vips_error( "mat2vips", _( "unsupported rank %d\n" ), var->rank ); return( -1 ); } for( i = 0; i < VIPS_NUMBER( mat2vips_formats ); i++ ) if( mat2vips_formats[i][0] == var->class_type ) break; if( i == VIPS_NUMBER( mat2vips_formats ) ) { vips_error( "mat2vips", _( "unsupported class type %d\n" ), var->class_type ); return( -1 ); } format = mat2vips_formats[i][1]; interpretation = mat2vips_pick_interpretation( bands, format ); vips_image_init_fields( im, width, height, bands, format, VIPS_CODING_NONE, interpretation, 1.0, 1.0 ); return( 0 ); } int vips__mat_header( const char *filename, VipsImage *out ) { Read *read; #ifdef DEBUG printf( "mat2vips_header: reading \"%s\"\n", filename ); #endif /*DEBUG*/ if( !(read = read_new( filename, out )) ) return( -1 ); if( mat2vips_get_header( read->var, read->out ) ) { read_destroy( read ); return( -1 ); } read_destroy( read ); return( 0 ); } static int mat2vips_get_data( mat_t *mat, matvar_t *var, VipsImage *im ) { int y; VipsPel *buffer; const int es = VIPS_IMAGE_SIZEOF_ELEMENT( im ); /* Matlab images are plane-separate, so we have to assemble bands in * image-size chunks. */ const guint64 is = es * VIPS_IMAGE_N_PELS( im ); if( Mat_VarReadDataAll( mat, var ) ) { vips_error( "mat2vips", "%s", _( "Mat_VarReadDataAll failed" ) ); return( -1 ); } /* Matlab images are in columns, so we have to transpose into * scanlines with this buffer. */ if( !(buffer = VIPS_ARRAY( im, VIPS_IMAGE_SIZEOF_LINE( im ), VipsPel )) ) return( -1 ); for( y = 0; y < im->Ysize; y++ ) { const VipsPel *p = var->data + y * es; int x; VipsPel *q; q = buffer; for( x = 0; x < im->Xsize; x++ ) { int b; for( b = 0; b < im->Bands; b++ ) { const VipsPel *p2 = p + b * is; int z; for( z = 0; z < es; z++ ) q[z] = p2[z]; q += es; } p += es * im->Ysize; } if( vips_image_write_line( im, y, buffer ) ) return( -1 ); } return( 0 ); } int vips__mat_load( const char *filename, VipsImage *out ) { Read *read; #ifdef DEBUG printf( "mat2vips: reading \"%s\"\n", filename ); #endif /*DEBUG*/ if( !(read = read_new( filename, out )) ) return( -1 ); if( mat2vips_get_header( read->var, read->out ) || mat2vips_get_data( read->mat, read->var, read->out ) ) { read_destroy( read ); return( -1 ); } read_destroy( read ); return( 0 ); } int vips__mat_ismat( const char *filename ) { unsigned char buf[15]; if( vips__get_bytes( filename, buf, 10 ) == 10 && vips_isprefix( "MATLAB 5.0", (char *) buf ) ) return( 1 ); return( 0 ); } const char *vips__mat_suffs[] = { ".mat", NULL }; #endif /*HAVE_MATIO*/ libvips-8.9.1/libvips/foreign/matload.c000066400000000000000000000101511361153320700200660ustar00rootroot00000000000000/* load matlab from a file * * 5/12/11 * - from tiffload.c * 3/7/13 * - lower priority to reduce segvs from Mat_Open() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_MATIO #include "pforeign.h" typedef struct _VipsForeignLoadMat { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadMat; typedef VipsForeignLoadClass VipsForeignLoadMatClass; G_DEFINE_TYPE( VipsForeignLoadMat, vips_foreign_load_mat, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_mat_get_flags_filename( const char *filename ) { return( 0 ); } static VipsForeignFlags vips_foreign_load_mat_get_flags( VipsForeignLoad *load ) { VipsForeignLoadMat *mat = (VipsForeignLoadMat *) load; return( vips_foreign_load_mat_get_flags_filename( mat->filename ) ); } static int vips_foreign_load_mat_header( VipsForeignLoad *load ) { VipsForeignLoadMat *mat = (VipsForeignLoadMat *) load; if( vips__mat_header( mat->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, mat->filename ); return( 0 ); } static int vips_foreign_load_mat_load( VipsForeignLoad *load ) { VipsForeignLoadMat *mat = (VipsForeignLoadMat *) load; if( vips__mat_load( mat->filename, load->real ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_mat_class_init( VipsForeignLoadMatClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "matload"; object_class->description = _( "load mat from file" ); foreign_class->suffs = vips__mat_suffs; load_class->is_a = vips__mat_ismat; load_class->get_flags_filename = vips_foreign_load_mat_get_flags_filename; load_class->get_flags = vips_foreign_load_mat_get_flags; load_class->header = vips_foreign_load_mat_header; load_class->load = vips_foreign_load_mat_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMat, filename ), NULL ); } static void vips_foreign_load_mat_init( VipsForeignLoadMat *mat ) { } #endif /*HAVE_MATIO*/ /** * vips_matload: * @filename: file to load * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Read a Matlab save file into a VIPS image. * * This operation searches the save * file for the first array variable with between 1 and 3 dimensions and loads * it as an image. It will not handle complex images. It does not handle * sparse matrices. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_matload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "matload", ap, filename, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/matrixload.c000066400000000000000000000124451361153320700206210ustar00rootroot00000000000000/* load matrix from a file * * 5/12/11 * - from csvload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pforeign.h" typedef struct _VipsForeignLoadMatrix { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadMatrix; typedef VipsForeignLoadClass VipsForeignLoadMatrixClass; G_DEFINE_TYPE( VipsForeignLoadMatrix, vips_foreign_load_matrix, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_matrix_get_flags_filename( const char *filename ) { return( 0 ); } static VipsForeignFlags vips_foreign_load_matrix_get_flags( VipsForeignLoad *load ) { VipsForeignLoadMatrix *matrix = (VipsForeignLoadMatrix *) load; return( vips_foreign_load_matrix_get_flags_filename( matrix->filename ) ); } static int vips_foreign_load_matrix_header( VipsForeignLoad *load ) { VipsForeignLoadMatrix *matrix = (VipsForeignLoadMatrix *) load; int width; int height; double scale; double offset; if( vips__matrix_read_header( matrix->filename, &width, &height, &scale, &offset ) ) return( -1 ); vips_image_init_fields( load->out, width, height, 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_B_W, 1.0, 1.0 ); vips_image_set_double( load->out, "scale", scale ); vips_image_set_double( load->out, "offset", offset ); VIPS_SETSTR( load->out->filename, matrix->filename ); return( 0 ); } static int vips_foreign_load_matrix_load( VipsForeignLoad *load ) { VipsForeignLoadMatrix *matrix = (VipsForeignLoadMatrix *) load; VipsImage *out; if( !(out = vips__matrix_read( matrix->filename )) ) return( -1 ); if( vips_image_write( out, load->real ) ) { g_object_unref( out ); return( -1 ); } g_object_unref( out ); return( 0 ); } static void vips_foreign_load_matrix_class_init( VipsForeignLoadMatrixClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "matrixload"; object_class->description = _( "load matrix from file" ); foreign_class->suffs = vips__foreign_matrix_suffs; /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; load_class->is_a = vips__matrix_ismatrix; load_class->get_flags_filename = vips_foreign_load_matrix_get_flags_filename; load_class->get_flags = vips_foreign_load_matrix_get_flags; load_class->header = vips_foreign_load_matrix_header; load_class->load = vips_foreign_load_matrix_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMatrix, filename ), NULL ); } static void vips_foreign_load_matrix_init( VipsForeignLoadMatrix *matrix ) { } /** * vips_matrixload: * @filename: file to load * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Reads a matrix from a file. * * Matrix files have a simple format that's supposed to be easy to create with * a text editor or a spreadsheet. * * The first line has four numbers for width, height, scale and * offset (scale and offset may be omitted, in which case they default to 1.0 * and 0.0). Scale must be non-zero. Width and height must be positive * integers. The numbers are separated by any mixture of spaces, commas, * tabs and quotation marks ("). The scale and offset fields may be * floating-point, and must use '.' * as a decimal separator. * * Subsequent lines each hold one row of matrix data, with numbers again * separated by any mixture of spaces, commas, * tabs and quotation marks ("). The numbers may be floating-point, and must * use '.' * as a decimal separator. * * Extra characters at the ends of lines or at the end of the file are * ignored. * * See also: vips_csvload(). * * Returns: 0 on success, -1 on error. */ int vips_matrixload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "matrixload", ap, filename, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/matrixsave.c000066400000000000000000000127221361153320700206360ustar00rootroot00000000000000/* save to matrix * * 2/7/13 * - wrap a class around the matrix writer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pforeign.h" typedef struct _VipsForeignSaveMatrix { VipsForeignSave parent_object; /* Filename for save. */ char *filename; } VipsForeignSaveMatrix; typedef VipsForeignSaveClass VipsForeignSaveMatrixClass; G_DEFINE_TYPE( VipsForeignSaveMatrix, vips_foreign_save_matrix, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_matrix_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveMatrix *matrix = (VipsForeignSaveMatrix *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_matrix_parent_class )-> build( object ) ) return( -1 ); if( vips__matrix_write( save->ready, matrix->filename ) ) return( -1 ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int bandfmt_matrix[10] = { /* UC C US S UI I F X D DX */ D, D, D, D, D, D, D, D, D, D }; static void vips_foreign_save_matrix_class_init( VipsForeignSaveMatrixClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "matrixsave"; object_class->description = _( "save image to matrix file" ); object_class->build = vips_foreign_save_matrix_build; foreign_class->suffs = vips__foreign_matrix_suffs; save_class->saveable = VIPS_SAVEABLE_MONO; save_class->format_table = bandfmt_matrix; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveMatrix, filename ), NULL ); } static void vips_foreign_save_matrix_init( VipsForeignSaveMatrix *matrix ) { } /** * vips_matrixsave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Write @in to @filename in matrix format. See vips_matrixload() for a * description of the format. * * See also: vips_matrixload(). * * Returns: 0 on success, -1 on error. */ int vips_matrixsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "matrixsave", ap, in, filename ); va_end( ap ); return( result ); } typedef struct _VipsForeignPrintMatrix { VipsForeignSave parent_object; } VipsForeignPrintMatrix; typedef VipsForeignSaveClass VipsForeignPrintMatrixClass; G_DEFINE_TYPE( VipsForeignPrintMatrix, vips_foreign_print_matrix, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_print_matrix_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; if( VIPS_OBJECT_CLASS( vips_foreign_print_matrix_parent_class )-> build( object ) ) return( -1 ); if( vips__matrix_write_file( save->ready, stdout ) ) return( -1 ); return( 0 ); } static void vips_foreign_print_matrix_class_init( VipsForeignPrintMatrixClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; object_class->nickname = "matrixprint"; object_class->description = _( "print matrix" ); object_class->build = vips_foreign_print_matrix_build; foreign_class->suffs = vips__foreign_matrix_suffs; save_class->saveable = VIPS_SAVEABLE_MONO; save_class->format_table = bandfmt_matrix; } static void vips_foreign_print_matrix_init( VipsForeignPrintMatrix *matrix ) { } /** * vips_matrixprint: (method) * @in: image to print * @...: %NULL-terminated list of optional named arguments * * Print @in to %stdout in matrix format. See vips_matrixload() for a * description of the format. * * See also: vips_matrixload(). * * Returns: 0 on success, -1 on error. */ int vips_matrixprint( VipsImage *in, ... ) { va_list ap; int result; va_start( ap, in ); result = vips_call_split( "matrixprint", ap, in ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/niftiload.c000066400000000000000000000424451361153320700204310ustar00rootroot00000000000000/* load nifti from a file * * 29/6/18 * - from fitsload.c * 9/9/19 * - use double for all floating point scalar metadata, like other loaders * - remove stray use of "n" property */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define VIPS_DEBUG */ /* TODO * * - for uncompressed images, we could do direct mapping of the input * - perhaps we could stream compressed images? but only if ext is defined at * the start of the file * (yes, file format is magic number, 348-byte header, extension data, * pixel data, then all gz'd) * - we could use the much faster byteswap in glib? * - I have not been able to test the ext stuff :( * * There should be at least a x2 speedup possible. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_NIFTI #include #include "pforeign.h" typedef struct _VipsForeignLoadNifti { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; /* The NIFTI image loaded to memory. */ nifti_image *nim; /* Wrap this VipsImage around the NIFTI pointer, then redirect read * requests to that. Saves a copy. */ VipsImage *memory; } VipsForeignLoadNifti; typedef VipsForeignLoadClass VipsForeignLoadNiftiClass; G_DEFINE_TYPE( VipsForeignLoadNifti, vips_foreign_load_nifti, VIPS_TYPE_FOREIGN_LOAD ); static void vips_foreign_load_nifti_dispose( GObject *gobject ) { VipsForeignLoadNifti *nifti = (VipsForeignLoadNifti *) gobject; VIPS_UNREF( nifti->memory ); VIPS_FREEF( nifti_image_free, nifti->nim ); G_OBJECT_CLASS( vips_foreign_load_nifti_parent_class )-> dispose( gobject ); } static int vips_foreign_load_nifti_is_a( const char *filename ) { char *hfile; znzFile fp; nifti_1_header nhdr; /* Unfortunately is_nifti_file() is very slow and produces lots of * output. We have to make our own. */ if( !(hfile = nifti_findhdrname( filename )) ) return( 0 ); fp = znzopen( hfile, "rb", nifti_is_gzfile( hfile )); if( znz_isnull( fp ) ) { free( hfile ); return( 0 ); } free( hfile ); (void) znzread( &nhdr, 1, sizeof( nhdr ), fp ); znzclose( fp ); /* Test for sanity both ways around. There's a thing to test for byte * order in niftilib, but it's static :( */ if( nifti_hdr_looks_good( &nhdr ) ) return( 1 ); swap_nifti_header( &nhdr, FALSE ); if( nifti_hdr_looks_good( &nhdr ) ) return( 1 ); return( 0 ); } /* Map DT_* datatype values to VipsBandFormat. */ typedef struct _VipsForeignDT2Vips { int datatype; VipsBandFormat fmt; } VipsForeignDT2Vips ; static VipsForeignDT2Vips vips_foreign_nifti_DT2Vips[] = { { DT_UINT8, VIPS_FORMAT_UCHAR }, { DT_INT8, VIPS_FORMAT_CHAR }, { DT_UINT16, VIPS_FORMAT_USHORT }, { DT_INT16, VIPS_FORMAT_SHORT }, { DT_UINT32, VIPS_FORMAT_UINT }, { DT_INT32, VIPS_FORMAT_INT }, { DT_FLOAT32, VIPS_FORMAT_FLOAT }, { DT_FLOAT64, VIPS_FORMAT_DOUBLE }, { DT_COMPLEX64, VIPS_FORMAT_COMPLEX }, { DT_COMPLEX128, VIPS_FORMAT_DPCOMPLEX }, { DT_RGB, VIPS_FORMAT_UCHAR }, { DT_RGBA32, VIPS_FORMAT_UCHAR } }; VipsBandFormat vips__foreign_nifti_datatype2BandFmt( int datatype ) { int i; for( i = 0; i < VIPS_NUMBER( vips_foreign_nifti_DT2Vips ); i++ ) if( vips_foreign_nifti_DT2Vips[i].datatype == datatype ) return( vips_foreign_nifti_DT2Vips[i].fmt ); return( VIPS_FORMAT_NOTSET ); } int vips__foreign_nifti_BandFmt2datatype( VipsBandFormat fmt ) { int i; for( i = 0; i < VIPS_NUMBER( vips_foreign_nifti_DT2Vips ); i++ ) if( vips_foreign_nifti_DT2Vips[i].fmt == fmt ) return( vips_foreign_nifti_DT2Vips[i].datatype ); return( -1 ); } /* All the header fields we attach as metadata. */ typedef struct _VipsForeignNiftiFields { char *name; GType type; glong offset; } VipsForeignNiftiFields; static VipsForeignNiftiFields vips_foreign_nifti_fields[] = { /* The first 8 must be the dims[] fields, see * vips_foreign_save_nifti_make_nim(). */ { "ndim", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, ndim ) }, { "nx", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, nx ) }, { "ny", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, ny ) }, { "nz", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, nz ) }, { "nt", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, nt ) }, { "nu", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, nu ) }, { "nv", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, nv ) }, { "nw", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, nw ) }, { "dx", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, dx ) }, { "dy", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, dy ) }, { "dz", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, dz ) }, { "dt", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, dt ) }, { "du", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, du ) }, { "dv", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, dv ) }, { "dw", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, dw ) }, { "scl_slope", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, scl_slope ) }, { "scl_inter", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, scl_inter ) }, { "cal_min", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, cal_min ) }, { "cal_max", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, cal_max ) }, { "qform_code", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, qform_code ) }, { "sform_code", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, sform_code ) }, { "freq_dim", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, freq_dim ) }, { "phase_dim", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, phase_dim ) }, { "slice_dim", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, slice_dim ) }, { "slice_code", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, slice_code ) }, { "slice_start", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, slice_start ) }, { "slice_end", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, slice_end ) }, { "slice_duration", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, slice_duration ) }, { "quatern_b", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, quatern_b ) }, { "quatern_c", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, quatern_c ) }, { "quatern_d", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, quatern_d ) }, { "qoffset_x", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, qoffset_x ) }, { "qoffset_y", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, qoffset_y ) }, { "qoffset_z", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, qoffset_z ) }, { "qfac", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, qfac ) }, { "sto_xyz00", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[0][0] ) }, { "sto_xyz01", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[0][1] ) }, { "sto_xyz02", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[0][2] ) }, { "sto_xyz03", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[0][3] ) }, { "sto_xyz10", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[1][0] ) }, { "sto_xyz11", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[1][1] ) }, { "sto_xyz12", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[1][2] ) }, { "sto_xyz13", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[1][3] ) }, { "sto_xyz20", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[2][0] ) }, { "sto_xyz21", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[2][1] ) }, { "sto_xyz22", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[2][2] ) }, { "sto_xyz23", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[2][3] ) }, { "sto_xyz30", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[3][0] ) }, { "sto_xyz31", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[3][1] ) }, { "sto_xyz32", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[3][2] ) }, { "sto_xyz33", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, sto_xyz.m[3][3] ) }, { "toffset", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, toffset ) }, { "xyz_units", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, xyz_units ) }, { "time_units", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, time_units ) }, { "nifti_type", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, nifti_type ) }, { "intent_code", G_TYPE_INT, G_STRUCT_OFFSET( nifti_image, intent_code ) }, { "intent_p1", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, intent_p1 ) }, { "intent_p2", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, intent_p2 ) }, { "intent_p3", G_TYPE_DOUBLE, G_STRUCT_OFFSET( nifti_image, intent_p3 ) }, }; void * vips__foreign_nifti_map( VipsNiftiMapFn fn, void *a, void *b ) { int i; void *result; for( i = 0; i < VIPS_NUMBER( vips_foreign_nifti_fields ); i++ ) { GValue value = { 0 }; g_value_init( &value, vips_foreign_nifti_fields[i].type ); result = fn( vips_foreign_nifti_fields[i].name, &value, vips_foreign_nifti_fields[i].offset, a, b ); g_value_unset( &value ); if( result ) return( result ); } return( NULL ); } /* How I wish glib had something like this :( Just implement the ones we need * for vips_foreign_nifti_fields above. */ static void vips_gvalue_read( GValue *value, void *p ) { switch( G_VALUE_TYPE( value ) ) { case G_TYPE_INT: g_value_set_int( value, *((int *) p) ); break; case G_TYPE_DOUBLE: /* We set as double rather than float, as things like pyvips * expect double for metadata items. */ g_value_set_double( value, *((float *) p) ); break; default: g_warning( "vips_gvalue_read: unsupported GType %s", g_type_name( G_VALUE_TYPE( value ) ) ); } } static void * vips_foreign_load_nifti_set( const char *name, GValue *value, glong offset, void *a, void *b ) { nifti_image *nim = (nifti_image *) a; VipsImage *out = VIPS_IMAGE( b ); char vips_name[256]; vips_gvalue_read( value, (gpointer) nim + offset ); vips_snprintf( vips_name, 256, "nifti-%s", name ); vips_image_set( out, vips_name, value ); return( NULL ); } static int vips_foreign_load_nifti_set_header( VipsForeignLoadNifti *nifti, nifti_image *nim, VipsImage *out ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( nifti ); guint width; guint height; guint bands; VipsBandFormat fmt; double xres; double yres; int i; char txt[256]; if( nim->ndim < 1 || nim->ndim > 7 ) { vips_error( class->nickname, _( "%d-dimensional images not supported" ), nim->ndim ); return( 0 ); } for( i = 1; i < 8 && i < nim->ndim + 1; i++ ) { if( nim->dim[i] <= 0 ) { vips_error( class->nickname, "%s", _( "invalid dimension" ) ); return( 0 ); } /* If we have several images in a dimension, the spacing must * be non-zero or we'll get a /0 error in resolution * calculation. */ if( nim->dim[i] > 1 && nim->pixdim[i] == 0 ) { vips_error( class->nickname, "%s", _( "invalid resolution" ) ); return( 0 ); } } /* Unfold higher dimensions vertically. bands is updated below for * DT_RGB. Be careful to avoid height going over 2^31. */ bands = 1; width = (guint) nim->nx; height = (guint) nim->ny; for( i = 3; i < 8 && i < nim->ndim + 1; i++ ) if( !g_uint_checked_mul( &height, height, nim->dim[i] ) ) { vips_error( class->nickname, "%s", _( "dimension overflow" ) ); return( 0 ); } if( height > INT_MAX ) { vips_error( class->nickname, "%s", _( "dimension overflow" ) ); return( 0 ); } fmt = vips__foreign_nifti_datatype2BandFmt( nim->datatype ); if( fmt == VIPS_FORMAT_NOTSET ) { vips_error( class->nickname, _( "datatype %d not supported" ), nim->datatype ); return( -1 ); } if( nim->datatype == DT_RGB ) bands = 3; if( nim->datatype == DT_RGBA32 ) bands = 4; /* We fold y and z together, so they must have the same resolution.. */ xres = 1.0; yres = 1.0; if( nim->nz == 1 || nim->dz == nim->dy ) switch( nim->xyz_units ) { case NIFTI_UNITS_METER: xres = 1000.0 / nim->dx; yres = 1000.0 / nim->dy; break; case NIFTI_UNITS_MM: xres = 1.0 / nim->dx; yres = 1.0 / nim->dy; break; case NIFTI_UNITS_MICRON: xres = 1.0 / (1000.0 * nim->dx); yres = 1.0 / (1000.0 * nim->dy); break; default: break; } #ifdef DEBUG printf( "get_vips_properties: width = %d\n", width ); printf( "get_vips_properties: height = %d\n", height ); printf( "get_vips_properties: bands = %d\n", bands ); printf( "get_vips_properties: fmt = %d\n", fmt ); #endif /*DEBUG*/ vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); vips_image_init_fields( out, width, height, bands, fmt, VIPS_CODING_NONE, bands == 1 ? VIPS_INTERPRETATION_B_W : VIPS_INTERPRETATION_sRGB, xres, yres ); /* Set some vips metadata for every nifti header field. */ if( vips__foreign_nifti_map( vips_foreign_load_nifti_set, nim, out ) ) return( -1 ); /* One byte longer than the spec to leave space for any extra * '\0' termination. */ vips_strncpy( txt, nim->intent_name, 17 ); vips_image_set_string( out, "nifti-intent_name", txt ); vips_strncpy( txt, nim->descrip, 81 ); vips_image_set_string( out, "nifti-descrip", txt ); for( i = 0; i < nim->num_ext; i++ ) { nifti1_extension *ext = &nim->ext_list[i]; vips_snprintf( txt, 256, "nifti-ext-%d-%d", i, ext->ecode ); vips_image_set_blob_copy( out, txt, ext->edata, ext->esize ); } vips_image_set_int( out, VIPS_META_PAGE_HEIGHT, nim->ny ); return( 0 ); } static int vips_foreign_load_nifti_header( VipsForeignLoad *load ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( load ); VipsForeignLoadNifti *nifti = (VipsForeignLoadNifti *) load; /* We can't use the (much faster) nifti_read_header() since it just * reads the 348 bytes of the analyze struct and does not read any of * the extension fields. */ /* FALSE means don't read data, just the header. Use * nifti_image_load() later to pull the data in. */ if( !(nifti->nim = nifti_image_read( nifti->filename, FALSE )) ) { vips_error( class->nickname, "%s", _( "unable to read NIFTI header" ) ); return( 0 ); } if( vips_foreign_load_nifti_set_header( nifti, nifti->nim, load->out ) ) { return( -1 ); } VIPS_SETSTR( load->out->filename, nifti->filename ); return( 0 ); } static int vips_foreign_load_nifti_load( VipsForeignLoad *load ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( load ); VipsForeignLoadNifti *nifti = (VipsForeignLoadNifti *) load; #ifdef DEBUG printf( "vips_foreign_load_nifti_load: loading image\n" ); #endif /*DEBUG*/ /* We just read the entire image to memory. */ if( nifti_image_load( nifti->nim ) ) { vips_error( class->nickname, "%s", _( "unable to load NIFTI file" ) ); return( -1 ); } if( !(nifti->memory = vips_image_new_from_memory( nifti->nim->data, VIPS_IMAGE_SIZEOF_IMAGE( load->out ), load->out->Xsize, load->out->Ysize, load->out->Bands, load->out->BandFmt )) ) return( -1 ); if( vips_image_write( nifti->memory, load->real ) ) return( -1 ); return( 0 ); } const char *vips__nifti_suffs[] = { ".nii", ".nii.gz", ".hdr", ".hdr.gz", ".img", ".img.gz", ".nia", ".nia.gz", NULL }; static void vips_foreign_load_nifti_class_init( VipsForeignLoadNiftiClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_nifti_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "niftiload"; object_class->description = _( "load a NIFTI image" ); /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; foreign_class->suffs = vips__nifti_suffs; load_class->is_a = vips_foreign_load_nifti_is_a; load_class->header = vips_foreign_load_nifti_header; load_class->load = vips_foreign_load_nifti_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadNifti, filename ), NULL ); } static void vips_foreign_load_nifti_init( VipsForeignLoadNifti *nifti ) { } #endif /*HAVE_NIFTI*/ /** * vips_niftiload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Read a NIFTI image file into a VIPS image. * * NIFTI metadata is attached with the "nifti-" prefix. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_niftiload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "niftiload", ap, filename, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/niftisave.c000066400000000000000000000256271361153320700204530ustar00rootroot00000000000000/* save to nifti * * 5/7/18 * - from fitssave.c * 9/9/19 * - use double for all floating point scalar metadata, like other loaders */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #ifdef HAVE_NIFTI #include #include "pforeign.h" typedef struct _VipsForeignSaveNifti { VipsForeignSave parent_object; /* Filename for save. */ char *filename; nifti_image *nim; } VipsForeignSaveNifti; typedef VipsForeignSaveClass VipsForeignSaveNiftiClass; G_DEFINE_TYPE( VipsForeignSaveNifti, vips_foreign_save_nifti, VIPS_TYPE_FOREIGN_SAVE ); static void vips_foreign_save_nifti_dispose( GObject *gobject ) { VipsForeignSaveNifti *nifti = (VipsForeignSaveNifti *) gobject; VIPS_FREEF( nifti_image_free, nifti->nim ); G_OBJECT_CLASS( vips_foreign_save_nifti_parent_class )-> dispose( gobject ); } /* Make ->nim from the vips header fields. */ static int vips_foreign_save_nifti_header_vips( VipsForeignSaveNifti *nifti, VipsImage *image ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( nifti ); int dims[8]; int datatype; int i; /* Most nifti images have this defaulted as 1. */ for( i = 0; i < VIPS_NUMBER( dims ); i++ ) dims[i] = 1; dims[0] = 2; dims[1] = image->Xsize; dims[2] = vips_image_get_page_height( image ); /* Multipage image? */ if( dims[2] < image->Ysize ) { dims[0] = 3; dims[3] = image->Ysize / dims[2]; } datatype = vips__foreign_nifti_BandFmt2datatype( image->BandFmt ); if( datatype == -1 ) { vips_error( class->nickname, "%s", _( "unsupported libvips image type" ) ); return( -1 ); } if( image->Bands > 1 ) { if( image->BandFmt != VIPS_FORMAT_UCHAR ) { vips_error( class->nickname, "%s", _( "8-bit colour images only" ) ); return( -1 ); } if( image->Bands == 3 ) datatype = DT_RGB; else if( image->Bands == 4 ) datatype = DT_RGBA32; else { vips_error( class->nickname, "%s", _( "3 or 4 band colour images only" ) ); return( -1 ); } } if( !(nifti->nim = nifti_make_new_nim( dims, datatype, FALSE )) ) return( -1 ); nifti->nim->dx = 1.0 / image->Xres; nifti->nim->dy = 1.0 / image->Yres; nifti->nim->dz = 1.0 / image->Yres; nifti->nim->xyz_units = NIFTI_UNITS_MM; vips_snprintf( nifti->nim->descrip, sizeof( nifti->nim->descrip ), "libvips-%s", VIPS_VERSION ); /* All other fields can stay at their default value. */ return( 0 ); } typedef struct _VipsNdimInfo { VipsImage *image; nifti_image *nim; int *dims; int n; } VipsNdimInfo; static void * vips_foreign_save_nifti_set_dims( const char *name, GValue *value, glong offset, void *a, void *b ) { VipsNdimInfo *info = (VipsNdimInfo *) a; /* The first 8 members are the dims fields. */ if( info->n < 8 ) { char vips_name[256]; int i; vips_snprintf( vips_name, 256, "nifti-%s", name ); if( vips_image_get_int( info->image, vips_name, &i ) || i <= 0 || i > VIPS_MAX_COORD ) return( info ); info->dims[info->n] = i; } info->n += 1; return( NULL ); } /* How I wish glib had something like this :( Just implement the ones we need * for vips_foreign_nifti_fields above. */ static void vips_gvalue_write( GValue *value, void *p ) { switch( G_VALUE_TYPE( value ) ) { case G_TYPE_INT: *((int *) p) = g_value_get_int( value ); break; case G_TYPE_DOUBLE: *((float *) p) = g_value_get_double( value ); break; default: g_warning( "vips_gvalue_write: unsupported GType %s", g_type_name( G_VALUE_TYPE( value ) ) ); } } static void * vips_foreign_save_nifti_set_fields( const char *name, GValue *value, glong offset, void *a, void *b ) { VipsNdimInfo *info = (VipsNdimInfo *) a; /* The first 8 members are the dims fields. We set them above ^^^ -- * do the others in this pass. */ if( info->n >= 8 ) { char vips_name[256]; GValue value_copy = { 0 }; vips_snprintf( vips_name, 256, "nifti-%s", name ); if( vips_image_get( info->image, vips_name, &value_copy ) ) return( info ); vips_gvalue_write( &value_copy, (gpointer) info->nim + offset ); g_value_unset( &value_copy ); } info->n += 1; return( NULL ); } static void * vips_foreign_save_nifti_ext( VipsImage *image, const char *field, GValue *value, void *a ) { nifti_image *nim = (nifti_image *) a; int i; int ecode; char *data; size_t length; if( !vips_isprefix( "nifti-ext-", field ) ) return( NULL ); /* The name is "nifti-ext-N-XX" where N is the index (discard this) * and XX is the nifti ext ecode. */ if( sscanf( field, "nifti-ext-%d-%d", &i, &ecode ) != 2 ) { vips_error( "niftisave", "%s", _( "bad nifti-ext- field name" ) ); return( image ); } if( vips_image_get_blob( image, field, (void *) &data, &length ) ) return( image ); if( nifti_add_extension( nim, data, length, ecode ) ) { vips_error( "niftisave", "%s", _( "unable to attach nifti ext" ) ); return( image ); } return( NULL ); } /* Make ->nim from the nifti- fields. */ static int vips_foreign_save_nifti_header_nifti( VipsForeignSaveNifti *nifti, VipsImage *image ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( nifti ); VipsNdimInfo info; int dims[8]; int datatype; guint height; int i; /* Most nifti images have this defaulted as 1. */ for( i = 0; i < VIPS_NUMBER( dims ); i++ ) dims[i] = 1; info.image = image; info.dims = dims; info.n = 0; if( vips__foreign_nifti_map( vips_foreign_save_nifti_set_dims, &info, NULL ) ) return( -1 ); /* page-height overrides ny if it makes sense. This might not be * correct :( */ dims[2] = vips_image_get_page_height( image ); /* Multipage image? */ if( dims[2] < image->Ysize ) { dims[0] = 3; dims[3] = image->Ysize / dims[2]; } height = 1; for( i = 2; i < VIPS_NUMBER( dims ) && i < dims[0] + 1; i++ ) if( !g_uint_checked_mul( &height, height, dims[i] ) ) { vips_error( class->nickname, "%s", _( "dimension overflow" ) ); return( 0 ); } if( image->Xsize != dims[1] || image->Ysize != height ) { vips_error( class->nickname, "%s", _( "bad image dimensions" ) ); return( -1 ); } datatype = vips__foreign_nifti_BandFmt2datatype( image->BandFmt ); if( datatype == -1 ) { vips_error( class->nickname, "%s", _( "unsupported libvips image type" ) ); return( -1 ); } if( !(nifti->nim = nifti_make_new_nim( dims, datatype, FALSE )) ) return( -1 ); info.image = image; info.nim = nifti->nim; info.n = 0; if( vips__foreign_nifti_map( vips_foreign_save_nifti_set_fields, &info, NULL ) ) return( -1 ); /* Attach any ext blocks. */ if( vips_image_map( image, (VipsImageMapFn) vips_foreign_save_nifti_ext, nifti->nim ) ) return( -1 ); return( 0 ); } static int vips_foreign_save_nifti_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveNifti *nifti = (VipsForeignSaveNifti *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_nifti_parent_class )-> build( object ) ) return( -1 ); /* This could be an image (indirectly) from niftiload, or something * like OME_TIFF, which does not have all the "nifti-ndim" fields. * * If it doesn't look like a nifti, try to make a nifti header from * what we have. */ if( vips_image_get_typeof( save->ready, "nifti-ndim" ) ) { if( vips_foreign_save_nifti_header_nifti( nifti, save->ready ) ) return( -1 ); } else { if( vips_foreign_save_nifti_header_vips( nifti, save->ready ) ) return( -1 ); } /* set ext, plus other stuff */ if( nifti_set_filenames( nifti->nim, nifti->filename, FALSE, TRUE ) ) { vips_error( class->nickname, "%s", _( "unable to set nifti filename" ) ); return( -1 ); } if( !(nifti->nim->data = vips_image_write_to_memory( save->ready, NULL )) ) return( -1 ); /* No return code!??!?!! */ nifti_image_write( nifti->nim ); /* We must free and NULL the pointer or nifti will try to free it for * us. */ VIPS_FREE( nifti->nim->data ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int vips_nifti_bandfmt[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, X, D, DX }; static void vips_foreign_save_nifti_class_init( VipsForeignSaveNiftiClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->dispose = vips_foreign_save_nifti_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "niftisave"; object_class->description = _( "save image to nifti file" ); object_class->build = vips_foreign_save_nifti_build; foreign_class->suffs = vips__nifti_suffs; save_class->saveable = VIPS_SAVEABLE_ANY; save_class->format_table = vips_nifti_bandfmt; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveNifti, filename ), NULL ); } static void vips_foreign_save_nifti_init( VipsForeignSaveNifti *nifti ) { } #endif /*HAVE_NIFTI*/ /** * vips_niftisave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Write a VIPS image to a file in NIFTI format. * * Use the various NIFTI suffixes to pick the nifti save format. * * See also: vips_image_write_to_file(), vips_niftiload(). * * Returns: 0 on success, -1 on error. */ int vips_niftisave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "niftisave", ap, in, filename ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/openexr2vips.c000066400000000000000000000226741361153320700211260ustar00rootroot00000000000000/* Convert OpenEXR to VIPS * * 1/5/06 * - from im_png2vips.c * 17/5/06 * - oops, buffer calcs were wrong * 19/5/06 * - added tiled read, with a separate cache * - removed *255 we had before, better to do something clever with * chromaticities * 4/2/10 * - gtkdoc * 12/12/11 * - redo as a set of fns ready for wrapping in a new-style class * 17/9/16 * - tag output as scRGB * 16/8/18 * - shut down the input file as soon as we can [kleisauke] * 19/8/18 * - scale alpha up to 0 - 255 to match the rest of libvips */ /* TODO - colour management - attributes - more of OpenEXR's pixel formats - more than just RGBA channels - turn alpha to vips 0 - 255 from exr 0 - 1 the openexr C API is very limited ... it seems RGBA half pixels is all you can do openexr lets you have different formats in different channels :-( there's no API to read the "chromaticities" attribute :-( best redo with the C++ API now we support C++ operations */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_OPENEXR #include #include #include #include #include #include #include #include #include "pforeign.h" /* What we track during a OpenEXR read. */ typedef struct { char *filename; VipsImage *out; ImfTiledInputFile *tiles; ImfInputFile *lines; const ImfHeader *header; VipsRect window; int tile_width; int tile_height; } Read; gboolean vips__openexr_isexr( const char *filename ) { unsigned char buf[4]; if( vips__get_bytes( filename, buf, 4 ) == 4 ) if( buf[0] == 0x76 && buf[1] == 0x2f && buf[2] == 0x31 && buf[3] == 0x01 ) return( TRUE ); return( FALSE ); } static void get_imf_error( void ) { vips_error( "exr2vips", _( "EXR error: %s" ), ImfErrorMessage() ); } static void read_close( Read *read ) { VIPS_FREEF( ImfCloseTiledInputFile, read->tiles ); VIPS_FREEF( ImfCloseInputFile, read->lines ); } static void read_destroy( VipsImage *out, Read *read ) { VIPS_FREE( read->filename ); read_close( read ); vips_free( read ); } static Read * read_new( const char *filename, VipsImage *out ) { Read *read; int xmin, ymin; int xmax, ymax; if( !(read = VIPS_NEW( NULL, Read )) ) return( NULL ); read->filename = vips_strdup( NULL, filename ); read->out = out; read->tiles = NULL; read->lines = NULL; if( out ) g_signal_connect( out, "close", G_CALLBACK( read_destroy ), read ); /* Try to open tiled first ... if that fails, fall back to scanlines. FIXME ... seems a bit ugly, but how else can you spot a tiled EXR image? */ if( !(read->tiles = ImfOpenTiledInputFile( read->filename )) ) { if( !(read->lines = ImfOpenInputFile( read->filename )) ) { get_imf_error(); return( NULL ); } } #ifdef DEBUG if( read->tiles ) printf( "exr2vips: opening in tiled mode\n" ); else printf( "exr2vips: opening in scanline mode\n" ); #endif /*DEBUG*/ if( read->tiles ) { read->header = ImfTiledInputHeader( read->tiles ); read->tile_width = ImfTiledInputTileXSize( read->tiles ); read->tile_height = ImfTiledInputTileYSize( read->tiles ); } else read->header = ImfInputHeader( read->lines ); ImfHeaderDataWindow( read->header, &xmin, &ymin, &xmax, &ymax ); read->window.left = xmin; read->window.top = ymin; read->window.width = xmax - xmin + 1; read->window.height = ymax - ymin + 1; return( read ); } gboolean vips__openexr_istiled( const char *filename ) { Read *read; gboolean tiled; if( !(read = read_new( filename, NULL )) ) return( FALSE ); tiled = read->tiles != NULL; read_destroy( NULL, read ); return( tiled ); } /* Read a OpenEXR file (header) into a VIPS (header). */ static void read_header( Read *read, VipsImage *out ) { /* FIXME ... not really scRGB, you should get the chromaticities from the header and transform */ vips_image_init_fields( out, read->window.width, read->window.height, 4, VIPS_FORMAT_FLOAT, VIPS_CODING_NONE, VIPS_INTERPRETATION_scRGB, 1.0, 1.0 ); if( read->tiles ) vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); else vips_image_pipelinev( out, VIPS_DEMAND_STYLE_FATSTRIP, NULL ); } int vips__openexr_read_header( const char *filename, VipsImage *out ) { Read *read; if( !(read = read_new( filename, out )) ) return( -1 ); read_header( read, out ); read_close( read ); return( 0 ); } /* Allocate a tile buffer. */ static void * vips__openexr_start( VipsImage *out, void *a, void *b ) { Read *read = (Read *) a; ImfRgba *imf_buffer; if( !(imf_buffer = VIPS_ARRAY( out, read->tile_width * read->tile_height, ImfRgba )) ) return( NULL ); return( imf_buffer ); } static int vips__openexr_generate( VipsRegion *out, void *seq, void *a, void *b, gboolean *top ) { ImfRgba *imf_buffer = (ImfRgba *) seq; Read *read = (Read *) a; VipsRect *r = &out->valid; const int tw = read->tile_width; const int th = read->tile_height; /* Find top left of tiles we need. */ const int xs = (r->left / tw) * tw; const int ys = (r->top / th) * th; int x, y, z; VipsRect image; /* Area of image. */ image.left = 0; image.top = 0; image.width = read->out->Xsize; image.height = read->out->Ysize; for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += th ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += tw ) { VipsRect tile; VipsRect hit; int result; if( !ImfTiledInputSetFrameBuffer( read->tiles, imf_buffer - (read->window.left + x) - (read->window.top + y) * tw, 1, tw ) ) { vips_foreign_load_invalidate( read->out ); get_imf_error(); return( -1 ); } #ifdef DEBUG printf( "exr2vips: requesting tile %d x %d\n", x / tw, y / th ); #endif /*DEBUG*/ result = ImfTiledInputReadTile( read->tiles, x / tw, y / th, 0, 0 ); if( !result ) { get_imf_error(); return( -1 ); } /* The tile in the file, in VIPS coordinates. */ tile.left = x; tile.top = y; tile.width = tw; tile.height = th; vips_rect_intersectrect( &tile, &image, &tile ); /* The part of this tile that hits the region. */ vips_rect_intersectrect( &tile, r, &hit ); /* Convert to float and write to the region. */ for( z = 0; z < hit.height; z++ ) { ImfRgba *p = imf_buffer + (hit.left - tile.left) + (hit.top - tile.top + z) * tw; float *q = (float *) VIPS_REGION_ADDR( out, hit.left, hit.top + z ); int i; ImfHalfToFloatArray( 4 * hit.width, (ImfHalf *) p, q ); /* oexr uses 0 - 1 for alpha, but vips is * always 0 - 255, even for scrgb images. */ for( i = 0; i < hit.width; i++ ) q[4 * i + 3] *= 255; } } return( 0 ); } int vips__openexr_read( const char *filename, VipsImage *out ) { Read *read; if( !(read = read_new( filename, out )) ) return( -1 ); if( read->tiles ) { VipsImage *raw; VipsImage *t; /* Tile cache: keep enough for two complete rows of tiles. */ raw = vips_image_new(); vips_object_local( out, raw ); read_header( read, raw ); if( vips_image_generate( raw, vips__openexr_start, vips__openexr_generate, NULL, read, NULL ) ) return( -1 ); /* Copy to out, adding a cache. Enough tiles for a complete * row, plus 50%. */ if( vips_tilecache( raw, &t, "tile_width", read->tile_width, "tile_height", read->tile_height, "max_tiles", (int) (1.5 * (1 + raw->Xsize / read->tile_width)), NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); } else { const int left = read->window.left; const int top = read->window.top; const int width = read->window.width; const int height = read->window.height; ImfRgba *imf_buffer; float *vips_buffer; int y; if( !(imf_buffer = VIPS_ARRAY( out, width, ImfRgba )) || !(vips_buffer = VIPS_ARRAY( out, 4 * width, float )) ) return( -1 ); read_header( read, out ); for( y = 0; y < height; y++ ) { int i; if( !ImfInputSetFrameBuffer( read->lines, imf_buffer - left - (top + y) * width, 1, width ) ) { get_imf_error(); return( -1 ); } if( !ImfInputReadPixels( read->lines, top + y, top + y ) ) { get_imf_error(); return( -1 ); } ImfHalfToFloatArray( 4 * width, (ImfHalf *) imf_buffer, vips_buffer ); /* oexr uses 0 - 1 for alpha, but vips is always 0 - * 255, even for scrgb images. */ for( i = 0; i < width; i++ ) vips_buffer[4 * i + 3] *= 255; if( vips_image_write_line( out, y, (VipsPel *) vips_buffer ) ) return( -1 ); } read_close( read ); } return( 0 ); } #endif /*HAVE_OPENEXR*/ libvips-8.9.1/libvips/foreign/openexrload.c000066400000000000000000000110651361153320700207720ustar00rootroot00000000000000/* load openexr from a file * * 5/12/11 * - from openslideload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_OPENEXR #include "pforeign.h" typedef struct _VipsForeignLoadOpenexr { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadOpenexr; typedef VipsForeignLoadClass VipsForeignLoadOpenexrClass; G_DEFINE_TYPE( VipsForeignLoadOpenexr, vips_foreign_load_openexr, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_openexr_get_flags_filename( const char *filename ) { VipsForeignFlags flags; flags = 0; if( vips__openexr_istiled( filename ) ) flags |= VIPS_FOREIGN_PARTIAL; return( flags ); } static VipsForeignFlags vips_foreign_load_openexr_get_flags( VipsForeignLoad *load ) { VipsForeignLoadOpenexr *openexr = (VipsForeignLoadOpenexr *) load; return( vips_foreign_load_openexr_get_flags_filename( openexr->filename ) ); } static int vips_foreign_load_openexr_header( VipsForeignLoad *load ) { VipsForeignLoadOpenexr *openexr = (VipsForeignLoadOpenexr *) load; if( vips__openexr_read_header( openexr->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, openexr->filename ); return( 0 ); } static int vips_foreign_load_openexr_load( VipsForeignLoad *load ) { VipsForeignLoadOpenexr *openexr = (VipsForeignLoadOpenexr *) load; if( vips__openexr_read( openexr->filename, load->real ) ) return( -1 ); return( 0 ); } static const char *vips_foreign_openexr_suffs[] = { ".exr", NULL }; static void vips_foreign_load_openexr_class_init( VipsForeignLoadOpenexrClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "openexrload"; object_class->description = _( "load an OpenEXR image" ); foreign_class->suffs = vips_foreign_openexr_suffs; /* We are fast at is_a(), so high priority. */ foreign_class->priority = 200; load_class->is_a = vips__openexr_isexr; load_class->get_flags_filename = vips_foreign_load_openexr_get_flags_filename; load_class->get_flags = vips_foreign_load_openexr_get_flags; load_class->header = vips_foreign_load_openexr_header; load_class->load = vips_foreign_load_openexr_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadOpenexr, filename ), NULL ); } static void vips_foreign_load_openexr_init( VipsForeignLoadOpenexr *openexr ) { } #endif /*HAVE_OPENEXR*/ /** * vips_openexrload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Read a OpenEXR file into a VIPS image. * * The reader can handle scanline and tiled OpenEXR images. It can't handle * OpenEXR colour management, image attributes, many pixel formats, anything * other than RGBA. * * This reader uses the rather limited OpenEXR C API. It should really be * redone in C++. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_openexrload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "openexrload", ap, filename, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/openslide2vips.c000066400000000000000000000415751361153320700214310ustar00rootroot00000000000000/* Read a virtual microscope slide using OpenSlide. * * Benjamin Gilbert * * Copyright (c) 2011-2015 Carnegie Mellon University * * 26/11/11 * - initial version * 27/11/11 * - fix black background in transparent areas * - no need to set *stop on fill_region() error return * - add OpenSlide properties to image metadata * - consolidate setup into one function * - support reading arbitrary layers * - use VIPS_ARRAY() * - add helper to copy a line of pixels * - support reading associated images * 7/12/11 * - redirect OpenSlide error logging to vips_error() * 8/12/11 * - add more exposition to documentation * 9/12/11 * - unpack to a tile cache * 11/12/11 * - move argb->rgba into conversion * - turn into a set of read fns ready to be called from a class * 28/2/12 * - convert "layer" to "level" where externally visible * 9/4/12 * - move argb2rgba back in here, we don't have a use for coded pixels * - small cleanups * 11/4/12 * - fail if both level and associated image are specified * 20/9/12 * - update openslide_open error handling for 3.3.0 semantics * - switch from deprecated _layer_ functions * 11/10/12 * - look for tile-width and tile-height properties * - use threaded tile cache * 6/8/13 * - always output solid (not transparent) pixels * 25/1/14 * - use openslide_detect_vendor() on >= 3.4.0 * 30/7/14 * - add autocrop toggle * 9/8/14 * - do argb -> rgba for associated as well * 27/1/15 * - unpremultiplication speedups for fully opaque/transparent pixels * 18/1/17 * - reorganise to support invalidate on read error * 27/1/18 * - option to attach associated images as metadata */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_OPENSLIDE #include #include #include #include #include #include #include "pforeign.h" #include typedef struct { /* Params. */ char *filename; VipsImage *out; int32_t level; gboolean autocrop; char *associated; gboolean attach_associated; openslide_t *osr; /* Crop to image bounds if @autocrop is set. */ VipsRect bounds; /* Only valid if associated == NULL. */ double downsample; uint32_t bg; /* Try to get these from openslide properties. */ int tile_width; int tile_height; } ReadSlide; int vips__openslide_isslide( const char *filename ) { #ifdef HAVE_OPENSLIDE_3_4 const char *vendor; int ok; vendor = openslide_detect_vendor( filename ); /* Generic tiled tiff images can be opened by openslide as well. * Only offer to load this file if it's not a generic tiff since * we want vips_tiffload() to handle these. */ ok = ( vendor && strcmp( vendor, "generic-tiff" ) != 0 ); VIPS_DEBUG_MSG( "vips__openslide_isslide: %s - %d\n", filename, ok ); return( ok ); #else openslide_t *osr; int ok; ok = 0; osr = openslide_open( filename ); if( osr ) { const char *vendor; /* Generic tiled tiff images can be opened by openslide as * well. Only offer to load this file if it's not a generic * tiff since we want vips_tiffload() to handle these. */ vendor = openslide_get_property_value( osr, OPENSLIDE_PROPERTY_NAME_VENDOR ); /* vendor will be NULL if osr is in error state. */ if( vendor && strcmp( vendor, "generic-tiff" ) != 0 ) ok = 1; openslide_close( osr ); } VIPS_DEBUG_MSG( "vips__openslide_isslide: %s - %d\n", filename, ok ); return( ok ); #endif } static void readslide_destroy_cb( VipsImage *image, ReadSlide *rslide ) { VIPS_FREEF( openslide_close, rslide->osr ); VIPS_FREE( rslide->associated ); VIPS_FREE( rslide->filename ); VIPS_FREE( rslide ); } static int check_associated_image( openslide_t *osr, const char *name ) { const char * const *associated; for( associated = openslide_get_associated_image_names( osr ); *associated != NULL; associated++ ) if( strcmp( *associated, name ) == 0 ) return( 0 ); vips_error( "openslide2vips", "%s", _( "invalid associated image name" ) ); return( -1 ); } static gboolean get_bounds( openslide_t *osr, VipsRect *rect ) { static const char *openslide_names[] = { "openslide.bounds-x", "openslide.bounds-y", "openslide.bounds-width", "openslide.bounds-height" }; static int vips_offsets[] = { G_STRUCT_OFFSET( VipsRect, left ), G_STRUCT_OFFSET( VipsRect, top ), G_STRUCT_OFFSET( VipsRect, width ), G_STRUCT_OFFSET( VipsRect, height ) }; const char *value; int i; for( i = 0; i < 4; i++ ) { if( !(value = openslide_get_property_value( osr, openslide_names[i] )) ) return( FALSE ); G_STRUCT_MEMBER( int, rect, vips_offsets[i] ) = atoi( value ); } return( TRUE ); } static ReadSlide * readslide_new( const char *filename, VipsImage *out, int level, gboolean autocrop, const char *associated, gboolean attach_associated ) { ReadSlide *rslide; if( level && associated ) { vips_error( "openslide2vips", "%s", _( "specify only one of level and " "associated image" ) ); return( NULL ); } if( attach_associated && associated ) { vips_error( "openslide2vips", "%s", _( "specify only one of attach_assicated and " "associated image" ) ); return( NULL ); } rslide = VIPS_NEW( NULL, ReadSlide ); memset( rslide, 0, sizeof( *rslide ) ); g_signal_connect( out, "close", G_CALLBACK( readslide_destroy_cb ), rslide ); rslide->filename = g_strdup( filename ); rslide->out = out; rslide->level = level; rslide->autocrop = autocrop; rslide->associated = g_strdup( associated ); rslide->attach_associated = attach_associated; /* Non-crazy defaults, override in _parse() if we can. */ rslide->tile_width = 256; rslide->tile_height = 256; return( rslide ); } /* Convert from ARGB to RGBA and undo premultiplication. * * We throw away transparency. Formats like Mirax use transparent + bg * colour for areas with no useful pixels. But if we output * transparent pixels and then convert to RGB for jpeg write later, we * would have to pass the bg colour down the pipe somehow. The * structure of dzsave makes this tricky. * * We could output plain RGB instead, but that would break * compatibility with older vipses. */ static void argb2rgba( uint32_t * restrict buf, int n, uint32_t bg ) { const uint32_t pbg = GUINT32_TO_BE( (bg << 8) | 255 ); int i; for( i = 0; i < n; i++ ) { uint32_t * restrict p = buf + i; uint32_t x = *p; uint8_t a = x >> 24; VipsPel * restrict out = (VipsPel *) p; if( a == 255 ) *p = GUINT32_TO_BE( (x << 8) | 255 ); else if( a == 0 ) /* Use background color. */ *p = pbg; else { /* Undo premultiplication. */ out[0] = 255 * ((x >> 16) & 255) / a; out[1] = 255 * ((x >> 8) & 255) / a; out[2] = 255 * (x & 255) / a; out[3] = 255; } } } static int readslide_attach_associated( ReadSlide *rslide, VipsImage *image ) { const char * const *associated_name; for( associated_name = openslide_get_associated_image_names( rslide->osr ); *associated_name != NULL; associated_name++ ) { int64_t w, h; VipsImage *associated; uint32_t *p; const char *error; char buf[256]; associated = vips_image_new_memory(); openslide_get_associated_image_dimensions( rslide->osr, *associated_name, &w, &h ); vips_image_init_fields( associated, w, h, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); vips_image_pipelinev( associated, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); if( vips_image_write_prepare( associated ) ) { g_object_unref( associated ); return( -1 ); } p = (uint32_t *) VIPS_IMAGE_ADDR( associated, 0, 0 ); openslide_read_associated_image( rslide->osr, *associated_name, p ); error = openslide_get_error( rslide->osr ); if( error ) { vips_error( "openslide2vips", _( "reading associated image: %s" ), error ); g_object_unref( associated ); return( -1 ); } argb2rgba( p, w * h, rslide->bg ); vips_snprintf( buf, 256, "openslide.associated.%s", *associated_name ); vips_image_set_image( image, buf, associated ); g_object_unref( associated ); } return( 0 ); } static int readslide_parse( ReadSlide *rslide, VipsImage *image ) { int64_t w, h; const char *error; const char *background; const char * const *properties; char *associated_names; rslide->osr = openslide_open( rslide->filename ); if( rslide->osr == NULL ) { vips_error( "openslide2vips", "%s", _( "unsupported slide format" ) ); return( -1 ); } error = openslide_get_error( rslide->osr ); if( error ) { vips_error( "openslide2vips", _( "opening slide: %s" ), error ); return( -1 ); } if( rslide->level < 0 || rslide->level >= openslide_get_level_count( rslide->osr ) ) { vips_error( "openslide2vips", "%s", _( "invalid slide level" ) ); return( -1 ); } if( rslide->associated && check_associated_image( rslide->osr, rslide->associated ) ) return( -1 ); if( rslide->associated ) { openslide_get_associated_image_dimensions( rslide->osr, rslide->associated, &w, &h ); vips_image_set_string( image, "slide-associated-image", rslide->associated ); vips_image_pipelinev( image, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); } else { char buf[256]; const char *value; openslide_get_level_dimensions( rslide->osr, rslide->level, &w, &h ); rslide->downsample = openslide_get_level_downsample( rslide->osr, rslide->level ); vips_image_set_int( image, "slide-level", rslide->level ); vips_image_pipelinev( image, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); /* Try to get tile width/height. An undocumented, experimental * feature. */ vips_snprintf( buf, 256, "openslide.level[%d].tile-width", rslide->level ); if( (value = openslide_get_property_value( rslide->osr, buf )) ) rslide->tile_width = atoi( value ); vips_snprintf( buf, 256, "openslide.level[%d].tile-height", rslide->level ); if( (value = openslide_get_property_value( rslide->osr, buf )) ) rslide->tile_height = atoi( value ); if( value ) VIPS_DEBUG_MSG( "readslide_new: found tile-size\n" ); /* Some images have a bounds in the header. Crop to * that if autocrop is set. */ if( rslide->autocrop ) if( !get_bounds( rslide->osr, &rslide->bounds ) ) rslide->autocrop = FALSE; if( rslide->autocrop ) { VipsRect whole; rslide->bounds.left /= rslide->downsample; rslide->bounds.top /= rslide->downsample; rslide->bounds.width /= rslide->downsample; rslide->bounds.height /= rslide->downsample; /* Clip against image size. */ whole.left = 0; whole.top = 0; whole.width = w; whole.height = h; vips_rect_intersectrect( &rslide->bounds, &whole, &rslide->bounds ); /* If we've clipped to nothing, ignore bounds. */ if( vips_rect_isempty( &rslide->bounds ) ) rslide->autocrop = FALSE; } if( rslide->autocrop ) { w = rslide->bounds.width; h = rslide->bounds.height; } /* Attach all associated images. */ if( rslide->attach_associated && readslide_attach_associated( rslide, image ) ) return( -1 ); } rslide->bg = 0xffffff; if( (background = openslide_get_property_value( rslide->osr, OPENSLIDE_PROPERTY_NAME_BACKGROUND_COLOR )) ) rslide->bg = strtoul( background, NULL, 16 ); if( w <= 0 || h <= 0 || rslide->downsample < 0 ) { vips_error( "openslide2vips", _( "getting dimensions: %s" ), openslide_get_error( rslide->osr ) ); return( -1 ); } if( w > INT_MAX || h > INT_MAX ) { vips_error( "openslide2vips", "%s", _( "image dimensions overflow int" ) ); return( -1 ); } if( !rslide->autocrop ) { rslide->bounds.left = 0; rslide->bounds.top = 0; rslide->bounds.width = w; rslide->bounds.height = h; } vips_image_init_fields( image, w, h, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); for( properties = openslide_get_property_names( rslide->osr ); *properties != NULL; properties++ ) vips_image_set_string( image, *properties, openslide_get_property_value( rslide->osr, *properties ) ); associated_names = g_strjoinv( ", ", (char **) openslide_get_associated_image_names( rslide->osr ) ); vips_image_set_string( image, "slide-associated-images", associated_names ); VIPS_FREE( associated_names ); return( 0 ); } int vips__openslide_read_header( const char *filename, VipsImage *out, int level, gboolean autocrop, char *associated, gboolean attach_associated ) { ReadSlide *rslide; if( !(rslide = readslide_new( filename, out, level, autocrop, associated, attach_associated )) || readslide_parse( rslide, out ) ) return( -1 ); return( 0 ); } static int vips__openslide_generate( VipsRegion *out, void *_seq, void *_rslide, void *unused, gboolean *stop ) { ReadSlide *rslide = _rslide; uint32_t bg = rslide->bg; VipsRect *r = &out->valid; int n = r->width * r->height; uint32_t *buf = (uint32_t *) VIPS_REGION_ADDR( out, r->left, r->top ); const char *error; VIPS_DEBUG_MSG( "vips__openslide_generate: %dx%d @ %dx%d\n", r->width, r->height, r->left, r->top ); /* We're inside a cache, so requests should always be * tile_width by tile_height pixels and on a tile boundary. */ g_assert( (r->left % rslide->tile_width) == 0 ); g_assert( (r->top % rslide->tile_height) == 0 ); g_assert( r->width <= rslide->tile_width ); g_assert( r->height <= rslide->tile_height ); /* The memory on the region should be contiguous for our ARGB->RGBA * loop below. */ g_assert( VIPS_REGION_LSKIP( out ) == r->width * 4 ); openslide_read_region( rslide->osr, buf, (r->left + rslide->bounds.left) * rslide->downsample, (r->top + rslide->bounds.top) * rslide->downsample, rslide->level, r->width, r->height ); /* openslide errors are terminal. To support * @fail we'd have to close the openslide_t and reopen, perhaps * somehow marking this tile as unreadable. * * See * https://github.com/libvips/libvips/commit/bb0a6643f94e69294e36d2b253f9bdd60c8c40ed#commitcomment-19838911 */ error = openslide_get_error( rslide->osr ); if( error ) { vips_error( "openslide2vips", _( "reading region: %s" ), error ); return( -1 ); } /* Since we are inside a cache, we know buf must be continuous. */ argb2rgba( buf, n, bg ); return( 0 ); } int vips__openslide_read( const char *filename, VipsImage *out, int level, gboolean autocrop, gboolean attach_associated ) { ReadSlide *rslide; VipsImage *raw; VipsImage *t; VIPS_DEBUG_MSG( "vips__openslide_read: %s %d\n", filename, level ); if( !(rslide = readslide_new( filename, out, level, autocrop, NULL, attach_associated )) ) return( -1 ); raw = vips_image_new(); vips_object_local( out, raw ); if( readslide_parse( rslide, raw ) || vips_image_generate( raw, NULL, vips__openslide_generate, NULL, rslide, NULL ) ) return( -1 ); /* Copy to out, adding a cache. Enough tiles for two complete rows, * plus 50%. We need at least two rows, or we'll constantly reload * tiles if they cross a tile boundary. */ if( vips_tilecache( raw, &t, "tile_width", rslide->tile_width, "tile_height", rslide->tile_height, "max_tiles", (int) (2.5 * (1 + raw->Xsize / rslide->tile_width)), "threaded", TRUE, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int vips__openslide_read_associated( const char *filename, VipsImage *out, const char *associated ) { ReadSlide *rslide; VipsImage *raw; uint32_t *buf; const char *error; VIPS_DEBUG_MSG( "vips__openslide_read_associated: %s %s\n", filename, associated ); if( !(rslide = readslide_new( filename, out, 0, FALSE, associated, FALSE )) ) return( -1 ); /* Memory buffer. Get associated directly to this, then copy to out. */ raw = vips_image_new_memory(); vips_object_local( out, raw ); if( readslide_parse( rslide, raw ) || vips_image_write_prepare( raw ) ) return( -1 ); buf = (uint32_t *) VIPS_IMAGE_ADDR( raw, 0, 0 ); openslide_read_associated_image( rslide->osr, rslide->associated, buf ); error = openslide_get_error( rslide->osr ); if( error ) { vips_error( "openslide2vips", _( "reading associated image: %s" ), error ); return( -1 ); } argb2rgba( buf, raw->Xsize * raw->Ysize, rslide->bg ); if( vips_image_write( raw, out ) ) return( -1 ); return( 0 ); } #endif /*HAVE_OPENSLIDE*/ libvips-8.9.1/libvips/foreign/openslideload.c000066400000000000000000000174651361153320700213060ustar00rootroot00000000000000/* load openslide from a file * * 5/12/11 * - from openslideload.c * 28/2/12 * - convert "layer" to "level" where externally visible * 11/4/12 * - convert remaining uses of "layer" to "level" * 20/9/12 * - add Leica filename suffix * - drop glib log handler (unneeded with >= 3.3.0) * 27/1/18 * - option to attach associated images as metadata */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_OPENSLIDE typedef struct _VipsForeignLoadOpenslide { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; /* Load this level. */ int level; /* Crop to image bounds. */ gboolean autocrop; /* Load just this associated image. */ char *associated; /* Attach all associated images as metadata items. */ gboolean attach_associated; } VipsForeignLoadOpenslide; typedef VipsForeignLoadClass VipsForeignLoadOpenslideClass; G_DEFINE_TYPE( VipsForeignLoadOpenslide, vips_foreign_load_openslide, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_openslide_get_flags_filename( const char *filename ) { /* We can't tell from just the filename, we need to know what part of * the file the user wants. But it'll usually be partial. */ return( VIPS_FOREIGN_PARTIAL ); } static VipsForeignFlags vips_foreign_load_openslide_get_flags( VipsForeignLoad *load ) { VipsForeignLoadOpenslide *openslide = (VipsForeignLoadOpenslide *) load; VipsForeignFlags flags; flags = 0; if( !openslide->associated ) flags |= VIPS_FOREIGN_PARTIAL; return( flags ); } static int vips_foreign_load_openslide_header( VipsForeignLoad *load ) { VipsForeignLoadOpenslide *openslide = (VipsForeignLoadOpenslide *) load; if( vips__openslide_read_header( openslide->filename, load->out, openslide->level, openslide->autocrop, openslide->associated, openslide->attach_associated ) ) return( -1 ); VIPS_SETSTR( load->out->filename, openslide->filename ); return( 0 ); } static int vips_foreign_load_openslide_load( VipsForeignLoad *load ) { VipsForeignLoadOpenslide *openslide = (VipsForeignLoadOpenslide *) load; if( !openslide->associated ) { if( vips__openslide_read( openslide->filename, load->real, openslide->level, openslide->autocrop, openslide->attach_associated ) ) return( -1 ); } else { if( vips__openslide_read_associated( openslide->filename, load->real, openslide->associated ) ) return( -1 ); } return( 0 ); } static const char *vips_foreign_openslide_suffs[] = { ".svs", /* Aperio */ ".vms", ".vmu", ".ndpi", /* Hamamatsu */ ".scn", /* Leica */ ".mrxs", /* MIRAX */ ".svslide", /* Sakura */ ".tif", /* Trestle */ ".bif", /* Ventana */ NULL }; static void vips_foreign_load_openslide_class_init( VipsForeignLoadOpenslideClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "openslideload"; object_class->description = _( "load file with OpenSlide" ); /* We need to be ahead of the tiff sniffer since many OpenSlide * formats are tiff derivatives. If we see a tiff which would be * better handled by the vips tiff loader we are careful to say no. * * We need to be ahead of JPEG, since MRXS images are also * JPEGs. */ foreign_class->priority = 100; foreign_class->suffs = vips_foreign_openslide_suffs; load_class->is_a = vips__openslide_isslide; load_class->get_flags_filename = vips_foreign_load_openslide_get_flags_filename; load_class->get_flags = vips_foreign_load_openslide_get_flags; load_class->header = vips_foreign_load_openslide_header; load_class->load = vips_foreign_load_openslide_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadOpenslide, filename ), NULL ); VIPS_ARG_INT( class, "level", 20, _( "Level" ), _( "Load this level from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadOpenslide, level ), 0, 100000, 0 ); VIPS_ARG_BOOL( class, "autocrop", 21, _( "Autocrop" ), _( "Crop to image bounds" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadOpenslide, autocrop ), FALSE ); VIPS_ARG_STRING( class, "associated", 22, _( "Associated" ), _( "Load this associated image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadOpenslide, associated ), NULL ); VIPS_ARG_BOOL( class, "attach-associated", 13, _( "Attach associated" ), _( "Attach all asssociated images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadOpenslide, attach_associated ), FALSE ); } static void vips_foreign_load_openslide_init( VipsForeignLoadOpenslide *openslide ) { } #endif /*HAVE_OPENSLIDE*/ /** * vips_openslideload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @level: %gint, load this level * * @associated: %gchararray, load this associated image * * @attach_associated: %gboolean, attach all associated images as metadata * * @autocrop: %gboolean, crop to image bounds * * Read a virtual slide supported by the OpenSlide library into a VIPS image. * OpenSlide supports images in Aperio, Hamamatsu, MIRAX, Sakura, Trestle, * and Ventana formats. * * To facilitate zooming, virtual slide formats include multiple scaled-down * versions of the high-resolution image. These are typically called * "levels". By default, vips_openslideload() reads the highest-resolution * level (level 0). Set @level to the level number you want. * * In addition to the slide image itself, virtual slide formats sometimes * include additional images, such as a scan of the slide's barcode. * OpenSlide calls these "associated images". To read an associated image, * set @associated to the image's name. * A slide's associated images are listed in the * "slide-associated-images" metadata item. * * If you set @attach_associated, then all associated images are attached as * metadata items. Use vips_image_get_image() on @out to retrieve them. Images * are attached as "openslide-associated-XXXXX", where XXXXX is the name of the * associated image. * * The output of this operator is always RGBA. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_openslideload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "openslideload", ap, filename, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/pdfiumload.c000066400000000000000000000430671361153320700206050ustar00rootroot00000000000000/* load PDF with PDFium * * 5/4/18 * - from pdfload.c * 8/6/18 * - add background param * 16/8/18 * - shut down the input file as soon as we can [kleisauke] * 8/8/19 * - add locks, since pdfium is not threadsafe in any way */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* TODO * * - needs the reopen-after-minimise system that pdfload has, but we'll need * to be able to actually build and test this before we can do that * - what about filename encodings * - need to test on Windows */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_PDFIUM #include #include typedef struct _VipsForeignLoadPdf { VipsForeignLoad parent_object; /* Load this page. */ int page_no; /* Load this many pages. */ int n; /* Render at this DPI. */ double dpi; /* Calculate this from DPI. At 72 DPI, we render 1:1. */ double scale; /* Background colour. */ VipsArrayDouble *background; FPDF_DOCUMENT *doc; FPDF_PAGE *page; int current_page; /* Doc has this many pages. */ int n_pages; /* We need to read out the size of each page we will render, and lay * them out in the final image. */ VipsRect image; VipsRect *pages; /* The [double] background converted to the image format. */ VipsPel *ink; } VipsForeignLoadPdf; typedef VipsForeignLoadClass VipsForeignLoadPdfClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadPdf, vips_foreign_load_pdf, VIPS_TYPE_FOREIGN_LOAD ); static char *vips_pdfium_errors[] = { "no error", "unknown error", "file not found or could not be opened", "file not in PDF format or corrupted", "password required or incorrect password", "unsupported security scheme", "page not found or content error" }; static void vips_pdfium_error( void ) { int err = FPDF_GetLastError(); if( err >= 0 && err < VIPS_NUMBER( vips_pdfium_errors ) ) vips_error( "pdfload", "%s", _( vips_pdfium_errors[err] ) ); else vips_error( "pdfload", "%s", _( "unknown error" ) ); } static void vips_foreign_load_pdf_close( VipsForeignLoadPdf *pdf ) { g_mutex_lock( vips__global_lock ); VIPS_FREEF( FPDF_ClosePage, pdf->page ); VIPS_FREEF( FPDF_CloseDocument, pdf->doc ); g_mutex_unlock( vips__global_lock ); } static void vips_foreign_load_pdf_dispose( GObject *gobject ) { VipsForeignLoadPdf *pdf = (VipsForeignLoadPdf *) gobject; vips_foreign_load_pdf_close( pdf ); G_OBJECT_CLASS( vips_foreign_load_pdf_parent_class )-> dispose( gobject ); } static void * vips_pdfium_init_cb( void *dummy ) { FPDF_LIBRARY_CONFIG config; config.version = 2; config.m_pUserFontPaths = NULL; config.m_pIsolate = NULL; config.m_v8EmbedderSlot = 0; FPDF_InitLibraryWithConfig( &config ); return( NULL ); } static int vips_foreign_load_pdf_build( VipsObject *object ) { static GOnce once = G_ONCE_INIT; VipsForeignLoadPdf *pdf = (VipsForeignLoadPdf *) object; VIPS_ONCE( &once, vips_pdfium_init_cb, NULL ); if( !vips_object_argument_isset( object, "scale" ) ) pdf->scale = pdf->dpi / 72.0; if( VIPS_OBJECT_CLASS( vips_foreign_load_pdf_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static VipsForeignFlags vips_foreign_load_pdf_get_flags_filename( const char *filename ) { /* We can't render any part of the page on demand, but we can render * separate pages. Might as well call ourselves partial. */ return( VIPS_FOREIGN_PARTIAL ); } static VipsForeignFlags vips_foreign_load_pdf_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_PARTIAL ); } static int vips_foreign_load_pdf_get_page( VipsForeignLoadPdf *pdf, int page_no ) { if( pdf->current_page != page_no ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( pdf ); g_mutex_lock( vips__global_lock ); VIPS_FREEF( FPDF_ClosePage, pdf->page ); pdf->current_page = -1; #ifdef DEBUG printf( "vips_foreign_load_pdf_get_page: %d\n", page_no ); #endif /*DEBUG*/ if( !(pdf->page = FPDF_LoadPage( pdf->doc, page_no )) ) { g_mutex_unlock( vips__global_lock ); vips_pdfium_error(); vips_error( class->nickname, _( "unable to load page %d" ), page_no ); return( -1 ); } pdf->current_page = page_no; g_mutex_unlock( vips__global_lock ); } return( 0 ); } /* String-based metadata fields we extract. */ typedef struct _VipsForeignLoadPdfMetadata { char *tag; /* as understood by PDFium */ char *field; /* as understood by libvips */ } VipsForeignLoadPdfMetadata; static VipsForeignLoadPdfMetadata vips_foreign_load_pdf_metadata[] = { { "Title", "pdf-title" }, { "Author", "pdf-author" }, { "Subject", "pdf-subject" }, { "Keywords", "pdf-keywords" }, { "Creator", "pdf-creator" }, { "Producer", "pdf-producer" }, /* poppler has "metadata" as well, but pdfium does not support this */ }; static int n_metadata = VIPS_NUMBER( vips_foreign_load_pdf_metadata ); static int vips_foreign_load_pdf_set_image( VipsForeignLoadPdf *pdf, VipsImage *out ) { int i; double res; #ifdef DEBUG printf( "vips_foreign_load_pdf_set_image: %p\n", pdf ); #endif /*DEBUG*/ /* We render to a linecache, so fat strips work well. */ vips_image_pipelinev( out, VIPS_DEMAND_STYLE_FATSTRIP, NULL ); /* Extract and attach metadata. Set the old name too for compat. */ vips_image_set_int( out, "pdf-n_pages", pdf->n_pages ); vips_image_set_int( out, VIPS_META_N_PAGES, pdf->n_pages ); for( i = 0; i < n_metadata; i++ ) { VipsForeignLoadPdfMetadata *metadata = &vips_foreign_load_pdf_metadata[i]; char text[1024]; int len; g_mutex_lock( vips__global_lock ); len = FPDF_GetMetaText( pdf->doc, metadata->tag, text, 1024 ); g_mutex_unlock( vips__global_lock ); if( len > 0 ) { char *str; /* Silently ignore coding errors. */ if( (str = g_utf16_to_utf8( (gunichar2 *) text, len, NULL, NULL, NULL )) ) { vips_image_set_string( out, metadata->field, str ); g_free( str ); } } } /* We need pixels/mm for vips. */ res = pdf->dpi / 25.4; vips_image_init_fields( out, pdf->image.width, pdf->image.height, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, res, res ); return( 0 ); } static int vips_foreign_load_pdf_header( VipsForeignLoad *load ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( load ); VipsForeignLoadPdf *pdf = (VipsForeignLoadPdf *) load; int top; int i; #ifdef DEBUG printf( "vips_foreign_load_pdf_header: %p\n", pdf ); #endif /*DEBUG*/ g_mutex_lock( vips__global_lock ); pdf->n_pages = FPDF_GetPageCount( pdf->doc ); g_mutex_unlock( vips__global_lock ); /* @n == -1 means until the end of the doc. */ if( pdf->n == -1 ) pdf->n = pdf->n_pages - pdf->page_no; if( pdf->page_no + pdf->n > pdf->n_pages || pdf->page_no < 0 || pdf->n <= 0 ) { vips_error( class->nickname, "%s", _( "pages out of range" ) ); return( -1 ); } /* Lay out the pages in our output image. */ if( !(pdf->pages = VIPS_ARRAY( pdf, pdf->n, VipsRect )) ) return( -1 ); top = 0; pdf->image.left = 0; pdf->image.top = 0; pdf->image.width = 0; pdf->image.height = 0; for( i = 0; i < pdf->n; i++ ) { if( vips_foreign_load_pdf_get_page( pdf, pdf->page_no + i ) ) return( -1 ); pdf->pages[i].left = 0; pdf->pages[i].top = top; /* We do round to nearest, in the same way that vips_resize() * does round to nearest. Without this, things like * shrink-on-load will break. */ pdf->pages[i].width = VIPS_RINT( FPDF_GetPageWidth( pdf->page ) * pdf->scale ); pdf->pages[i].height = VIPS_RINT( FPDF_GetPageHeight( pdf->page ) * pdf->scale ); if( pdf->pages[i].width > pdf->image.width ) pdf->image.width = pdf->pages[i].width; pdf->image.height += pdf->pages[i].height; top += pdf->pages[i].height; } /* If all pages are the same height, we can tag this as a toilet roll * image. */ for( i = 1; i < pdf->n; i++ ) if( pdf->pages[i].height != pdf->pages[0].height ) break; if( vips_object_argument_isset( VIPS_OBJECT( pdf ), "n" ) ) vips_image_set_int( load->out, VIPS_META_PAGE_HEIGHT, pdf->pages[0].height ); vips_foreign_load_pdf_set_image( pdf, load->out ); /* Convert the background to the image format. */ if( !(pdf->ink = vips__vector_to_ink( class->nickname, load->out, VIPS_AREA( pdf->background )->data, NULL, VIPS_AREA( pdf->background )->n )) ) return( -1 ); return( 0 ); } static void vips_foreign_load_pdf_minimise( VipsObject *object, VipsForeignLoadPdf *pdf ) { /* In seq mode, we can shut down the input at the end of computation. */ if( VIPS_FOREIGN_LOAD( pdf )->access == VIPS_ACCESS_SEQUENTIAL ) vips_foreign_load_pdf_close( pdf ); } static int vips_foreign_load_pdf_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsForeignLoadPdf *pdf = (VipsForeignLoadPdf *) a; VipsForeignLoad *load = (VipsForeignLoad *) pdf; VipsRect *r = &or->valid; int top; int i; int y; /* printf( "vips_foreign_load_pdf_generate: " "left = %d, top = %d, width = %d, height = %d\n", r->left, r->top, r->width, r->height ); */ /* PDFium won't always paint the background. */ vips_region_paint_pel( or, r, pdf->ink ); /* Search through the pages we are drawing for the first containing * this rect. This could be quicker, perhaps a binary search, but who * cares. */ for( i = 0; i < pdf->n; i++ ) if( VIPS_RECT_BOTTOM( &pdf->pages[i] ) > r->top ) break; top = r->top; while( top < VIPS_RECT_BOTTOM( r ) ) { VipsRect rect; FPDF_BITMAP bitmap; vips_rect_intersectrect( r, &pdf->pages[i], &rect ); if( vips_foreign_load_pdf_get_page( pdf, pdf->page_no + i ) ) return( -1 ); /* 4 means RGBA. */ g_mutex_lock( vips__global_lock ); bitmap = FPDFBitmap_CreateEx( rect.width, rect.height, 4, VIPS_REGION_ADDR( or, rect.left, rect.top ), VIPS_REGION_LSKIP( or ) ); FPDF_RenderPageBitmap( bitmap, pdf->page, 0, 0, rect.width, rect.height, 0, 0 ); FPDFBitmap_Destroy( bitmap ); g_mutex_unlock( vips__global_lock ); top += rect.height; i += 1; } /* PDFium writes BRGA, we must swap. * * FIXME ... this is a bit slow. */ for( y = 0; y < r->height; y++ ) { VipsPel *p; int x; p = VIPS_REGION_ADDR( or, r->left, r->top + y ); for( x = 0; x < r->width; x++ ) { VIPS_SWAP( VipsPel, p[0], p[2] ); p += 4; } } return( 0 ); } static int vips_foreign_load_pdf_load( VipsForeignLoad *load ) { VipsForeignLoadPdf *pdf = (VipsForeignLoadPdf *) load; VipsImage **t = (VipsImage **) vips_object_local_array( (VipsObject *) load, 2 ); #ifdef DEBUG printf( "vips_foreign_load_pdf_load: %p\n", pdf ); #endif /*DEBUG*/ /* Read to this image, then cache to out, see below. */ t[0] = vips_image_new(); /* Close input immediately at end of read. */ g_signal_connect( t[0], "minimise", G_CALLBACK( vips_foreign_load_pdf_minimise ), pdf ); vips_foreign_load_pdf_set_image( pdf, t[0] ); if( vips_image_generate( t[0], NULL, vips_foreign_load_pdf_generate, NULL, pdf, NULL ) ) return( -1 ); /* PDFium does not like rendering parts of pages :-( always render * complete ones. */ if( vips_linecache( t[0], &t[1], "tile_height", pdf->pages[0].height, NULL ) ) return( -1 ); if( vips_image_write( t[1], load->real ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_pdf_class_init( VipsForeignLoadPdfClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_pdf_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pdfload_base"; object_class->description = _( "load PDF with libpoppler" ); object_class->build = vips_foreign_load_pdf_build; load_class->get_flags_filename = vips_foreign_load_pdf_get_flags_filename; load_class->get_flags = vips_foreign_load_pdf_get_flags; load_class->load = vips_foreign_load_pdf_load; VIPS_ARG_INT( class, "page", 10, _( "Page" ), _( "Load this page from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdf, page_no ), 0, 100000, 0 ); VIPS_ARG_INT( class, "n", 11, _( "n" ), _( "Load this many pages" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdf, n ), -1, 100000, 1 ); VIPS_ARG_DOUBLE( class, "dpi", 12, _( "DPI" ), _( "Render at this DPI" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdf, dpi ), 0.001, 100000.0, 72.0 ); VIPS_ARG_DOUBLE( class, "scale", 13, _( "Scale" ), _( "Scale output by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdf, scale ), 0.001, 100000.0, 1.0 ); VIPS_ARG_BOXED( class, "background", 14, _( "Background" ), _( "Background value" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdf, background ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_foreign_load_pdf_init( VipsForeignLoadPdf *pdf ) { pdf->dpi = 72.0; pdf->scale = 1.0; pdf->n = 1; pdf->current_page = -1; pdf->background = vips_array_double_newv( 1, 255.0 ); } typedef struct _VipsForeignLoadPdfFile { VipsForeignLoadPdf parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadPdfFile; typedef VipsForeignLoadPdfClass VipsForeignLoadPdfFileClass; G_DEFINE_TYPE( VipsForeignLoadPdfFile, vips_foreign_load_pdf_file, vips_foreign_load_pdf_get_type() ); static int vips_foreign_load_pdf_file_header( VipsForeignLoad *load ) { VipsForeignLoadPdf *pdf = (VipsForeignLoadPdf *) load; VipsForeignLoadPdfFile *file = (VipsForeignLoadPdfFile *) load; g_mutex_lock( vips__global_lock ); if( !(pdf->doc = FPDF_LoadDocument( file->filename, NULL )) ) { g_mutex_unlock( vips__global_lock ); vips_pdfium_error(); vips_error( "pdfload", _( "unable to load \"%s\"" ), file->filename ); return( -1 ); } g_mutex_unlock( vips__global_lock ); VIPS_SETSTR( load->out->filename, file->filename ); return( vips_foreign_load_pdf_header( load ) ); } static const char *vips_foreign_pdf_suffs[] = { ".pdf", NULL }; static void vips_foreign_load_pdf_file_class_init( VipsForeignLoadPdfFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pdfload"; foreign_class->suffs = vips_foreign_pdf_suffs; load_class->is_a = vips_foreign_load_pdf_is_a; load_class->header = vips_foreign_load_pdf_file_header; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdfFile, filename ), NULL ); } static void vips_foreign_load_pdf_file_init( VipsForeignLoadPdfFile *file ) { } typedef struct _VipsForeignLoadPdfBuffer { VipsForeignLoadPdf parent_object; /* Load from a buffer. */ VipsArea *buf; } VipsForeignLoadPdfBuffer; typedef VipsForeignLoadPdfClass VipsForeignLoadPdfBufferClass; G_DEFINE_TYPE( VipsForeignLoadPdfBuffer, vips_foreign_load_pdf_buffer, vips_foreign_load_pdf_get_type() ); static int vips_foreign_load_pdf_buffer_header( VipsForeignLoad *load ) { VipsForeignLoadPdf *pdf = (VipsForeignLoadPdf *) load; VipsForeignLoadPdfBuffer *buffer = (VipsForeignLoadPdfBuffer *) load; g_mutex_lock( vips__global_lock ); if( !(pdf->doc = FPDF_LoadMemDocument( buffer->buf->data, buffer->buf->length, NULL )) ) { g_mutex_unlock( vips__global_lock ); vips_pdfium_error(); vips_error( "pdfload", "%s", _( "unable to load from buffer" ) ); return( -1 ); } g_mutex_unlock( vips__global_lock ); return( vips_foreign_load_pdf_header( load ) ); } static void vips_foreign_load_pdf_buffer_class_init( VipsForeignLoadPdfBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pdfload_buffer"; load_class->is_a_buffer = vips_foreign_load_pdf_is_a_buffer; load_class->header = vips_foreign_load_pdf_buffer_header; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdfBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_pdf_buffer_init( VipsForeignLoadPdfBuffer *buffer ) { } #endif /*HAVE_PDFIUM*/ libvips-8.9.1/libvips/foreign/pdfload.c000066400000000000000000000544711361153320700200730ustar00rootroot00000000000000/* load PDF with libpoppler * * 7/2/16 * - from openslideload.c * 12/5/16 * - add @n ... number of pages to load * 23/11/16 * - set page-height, if we can * 28/6/17 * - use a much larger strip size, thanks bubba * 8/6/18 * - add background param * 16/8/18 [kleisauke] * - shut down the input file as soon as we can * 19/9/19 * - reopen the input if we minimised too early */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_POPPLER #include #include #define VIPS_TYPE_FOREIGN_LOAD_PDF (vips_foreign_load_pdf_get_type()) #define VIPS_FOREIGN_LOAD_PDF( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FOREIGN_LOAD_PDF, VipsForeignLoadPdf )) #define VIPS_FOREIGN_LOAD_PDF_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FOREIGN_LOAD_PDF, VipsForeignLoadPdfClass)) #define VIPS_IS_FOREIGN_LOAD_PDF( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN_LOAD_PDF )) #define VIPS_IS_FOREIGN_LOAD_PDF_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN_LOAD_PDF )) #define VIPS_FOREIGN_LOAD_PDF_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FOREIGN_LOAD_PDF, VipsForeignLoadPdfClass )) typedef struct _VipsForeignLoadPdf { VipsForeignLoad parent_object; /* Load this page. */ int page_no; /* Load this many pages. */ int n; /* Render at this DPI. */ double dpi; /* Calculate this from DPI. At 72 DPI, we render 1:1 with cairo. */ double scale; /* Background colour. */ VipsArrayDouble *background; /* Poppler is not thread-safe, so we run inside a single-threaded * cache. On the plus side, this means we only need one @page pointer, * even though we change this during _generate(). */ PopplerDocument *doc; PopplerPage *page; int current_page; /* Doc has this many pages. */ int n_pages; /* We need to read out the size of each page we will render, and lay * them out in the final image. */ VipsRect image; VipsRect *pages; /* The [double] background converted to the image format. */ VipsPel *ink; } VipsForeignLoadPdf; typedef struct _VipsForeignLoadPdfClass { VipsForeignLoadClass parent_class; int (*open)( VipsForeignLoadPdf *pdf ); void (*close)( VipsForeignLoadPdf *pdf ); } VipsForeignLoadPdfClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadPdf, vips_foreign_load_pdf, VIPS_TYPE_FOREIGN_LOAD ); static void vips_foreign_load_pdf_dispose( GObject *gobject ) { VipsForeignLoadPdf *pdf = VIPS_FOREIGN_LOAD_PDF( gobject ); VipsForeignLoadPdfClass *class = VIPS_FOREIGN_LOAD_PDF_GET_CLASS( pdf ); class->close( pdf ); G_OBJECT_CLASS( vips_foreign_load_pdf_parent_class )-> dispose( gobject ); } static int vips_foreign_load_pdf_build( VipsObject *object ) { VipsForeignLoadPdf *pdf = VIPS_FOREIGN_LOAD_PDF( object ); if( !vips_object_argument_isset( object, "scale" ) ) pdf->scale = pdf->dpi / 72.0; if( VIPS_OBJECT_CLASS( vips_foreign_load_pdf_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static VipsForeignFlags vips_foreign_load_pdf_get_flags_filename( const char *filename ) { /* We can render any part of the page on demand. */ return( VIPS_FOREIGN_PARTIAL ); } static VipsForeignFlags vips_foreign_load_pdf_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_PARTIAL ); } static int vips_foreign_load_pdf_get_page( VipsForeignLoadPdf *pdf, int page_no ) { if( pdf->current_page != page_no || !pdf->page ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( pdf ); VIPS_UNREF( pdf->page ); pdf->current_page = -1; #ifdef DEBUG printf( "vips_foreign_load_pdf_get_page: %d\n", page_no ); #endif /*DEBUG*/ if( !(pdf->page = poppler_document_get_page( pdf->doc, page_no )) ) { vips_error( class->nickname, _( "unable to load page %d" ), page_no ); return( -1 ); } pdf->current_page = page_no; } return( 0 ); } /* String-based metadata fields we extract. */ typedef struct _VipsForeignLoadPdfMetadata { char *(*pdf_fetch)( PopplerDocument *doc ); char *field; } VipsForeignLoadPdfMetadata; static VipsForeignLoadPdfMetadata vips_foreign_load_pdf_metadata[] = { { poppler_document_get_title, "pdf-title" }, { poppler_document_get_author, "pdf-author" }, { poppler_document_get_subject, "pdf-subject" }, { poppler_document_get_keywords, "pdf-keywords" }, { poppler_document_get_creator, "pdf-creator" }, { poppler_document_get_producer, "pdf-producer" }, { poppler_document_get_metadata, "pdf-metadata" }, }; static int n_metadata = VIPS_NUMBER( vips_foreign_load_pdf_metadata ); static int vips_foreign_load_pdf_set_image( VipsForeignLoadPdf *pdf, VipsImage *out ) { int i; double res; #ifdef DEBUG printf( "vips_foreign_load_pdf_set_image: %p\n", pdf ); #endif /*DEBUG*/ /* We render to a linecache, so fat strips work well. */ vips_image_pipelinev( out, VIPS_DEMAND_STYLE_FATSTRIP, NULL ); /* Extract and attach metadata. Set the old name too for compat. */ vips_image_set_int( out, "pdf-n_pages", pdf->n_pages ); vips_image_set_int( out, VIPS_META_N_PAGES, pdf->n_pages ); for( i = 0; i < n_metadata; i++ ) { VipsForeignLoadPdfMetadata *metadata = &vips_foreign_load_pdf_metadata[i]; char *str; if( (str = metadata->pdf_fetch( pdf->doc )) ) { vips_image_set_string( out, metadata->field, str ); g_free( str ); } } /* We need pixels/mm for vips. */ res = pdf->dpi / 25.4; vips_image_init_fields( out, pdf->image.width, pdf->image.height, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, res, res ); return( 0 ); } static int vips_foreign_load_pdf_header( VipsForeignLoad *load ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( load ); VipsForeignLoadPdf *pdf = VIPS_FOREIGN_LOAD_PDF( load ); VipsForeignLoadPdfClass *pdf_class = VIPS_FOREIGN_LOAD_PDF_GET_CLASS( pdf ); int top; int i; #ifdef DEBUG printf( "vips_foreign_load_pdf_header: %p\n", pdf ); #endif /*DEBUG*/ if( pdf_class->open( pdf ) ) return( -1 ); pdf->n_pages = poppler_document_get_n_pages( pdf->doc ); /* @n == -1 means until the end of the doc. */ if( pdf->n == -1 ) pdf->n = pdf->n_pages - pdf->page_no; if( pdf->page_no + pdf->n > pdf->n_pages || pdf->page_no < 0 || pdf->n <= 0 ) { vips_error( class->nickname, "%s", _( "pages out of range" ) ); return( -1 ); } /* Lay out the pages in our output image. */ if( !(pdf->pages = VIPS_ARRAY( pdf, pdf->n, VipsRect )) ) return( -1 ); top = 0; pdf->image.left = 0; pdf->image.top = 0; pdf->image.width = 0; pdf->image.height = 0; for( i = 0; i < pdf->n; i++ ) { double width; double height; if( vips_foreign_load_pdf_get_page( pdf, pdf->page_no + i ) ) return( -1 ); poppler_page_get_size( pdf->page, &width, &height ); pdf->pages[i].left = 0; pdf->pages[i].top = top; /* We do round to nearest, in the same way that vips_resize() * does round to nearest. Without this, things like * shrink-on-load will break. */ pdf->pages[i].width = VIPS_RINT( width * pdf->scale ); pdf->pages[i].height = VIPS_RINT( height * pdf->scale ); if( pdf->pages[i].width > pdf->image.width ) pdf->image.width = pdf->pages[i].width; pdf->image.height += pdf->pages[i].height; top += pdf->pages[i].height; } /* If all pages are the same height, we can tag this as a toilet roll * image. */ for( i = 1; i < pdf->n; i++ ) if( pdf->pages[i].height != pdf->pages[0].height ) break; if( vips_object_argument_isset( VIPS_OBJECT( pdf ), "n" ) ) vips_image_set_int( load->out, VIPS_META_PAGE_HEIGHT, pdf->pages[0].height ); vips_foreign_load_pdf_set_image( pdf, load->out ); /* Convert the background to the image format. * * FIXME ... we probably should convert this to pre-multiplied BGRA * to match the Cairo convention. See vips__cairo2rgba(). */ if( !(pdf->ink = vips__vector_to_ink( class->nickname, load->out, VIPS_AREA( pdf->background )->data, NULL, VIPS_AREA( pdf->background )->n )) ) return( -1 ); pdf_class->close( pdf ); return( 0 ); } static int vips_foreign_load_pdf_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsForeignLoadPdf *pdf = VIPS_FOREIGN_LOAD_PDF( a ); VipsForeignLoadPdfClass *class = VIPS_FOREIGN_LOAD_PDF_GET_CLASS( pdf ); VipsRect *r = &or->valid; int top; int i; int y; /* printf( "vips_foreign_load_pdf_generate: " "left = %d, top = %d, width = %d, height = %d\n", r->left, r->top, r->width, r->height ); */ /* We may have been minimised. Make sure the doc is open. */ if( class->open( pdf ) ) return( -1 ); /* Poppler won't always paint the background. */ vips_region_paint_pel( or, r, pdf->ink ); /* Search through the pages we are drawing for the first containing * this rect. This could be quicker, perhaps a binary search, but who * cares. */ for( i = 0; i < pdf->n; i++ ) if( VIPS_RECT_BOTTOM( &pdf->pages[i] ) > r->top ) break; top = r->top; while( top < VIPS_RECT_BOTTOM( r ) ) { VipsRect rect; cairo_surface_t *surface; cairo_t *cr; vips_rect_intersectrect( r, &pdf->pages[i], &rect ); surface = cairo_image_surface_create_for_data( VIPS_REGION_ADDR( or, rect.left, rect.top ), CAIRO_FORMAT_ARGB32, rect.width, rect.height, VIPS_REGION_LSKIP( or ) ); cr = cairo_create( surface ); cairo_surface_destroy( surface ); cairo_scale( cr, pdf->scale, pdf->scale ); cairo_translate( cr, (pdf->pages[i].left - rect.left) / pdf->scale, (pdf->pages[i].top - rect.top) / pdf->scale ); /* poppler is single-threaded, but we don't need to lock since * we're running inside a non-threaded tilecache. */ if( vips_foreign_load_pdf_get_page( pdf, pdf->page_no + i ) ) return( -1 ); poppler_page_render( pdf->page, cr ); cairo_destroy( cr ); top += rect.height; i += 1; } /* Cairo makes pre-multipled BRGA, we must byteswap and unpremultiply. */ for( y = 0; y < r->height; y++ ) vips__cairo2rgba( (guint32 *) VIPS_REGION_ADDR( or, r->left, r->top + y ), r->width ); return( 0 ); } static int vips_foreign_load_pdf_load( VipsForeignLoad *load ) { VipsForeignLoadPdf *pdf = VIPS_FOREIGN_LOAD_PDF( load ); VipsForeignLoadPdfClass *class = VIPS_FOREIGN_LOAD_PDF_GET_CLASS( pdf ); VipsImage **t = (VipsImage **) vips_object_local_array( (VipsObject *) load, 2 ); #ifdef DEBUG printf( "vips_foreign_load_pdf_load: %p\n", pdf ); #endif /*DEBUG*/ if( class->open( pdf ) ) return( -1 ); /* Read to this image, then cache to out, see below. */ t[0] = vips_image_new(); /* Don't minimise on ::minimise (end of computation): we support * threaded read, and minimise will happen outside the cache lock. */ vips_foreign_load_pdf_set_image( pdf, t[0] ); if( vips_image_generate( t[0], NULL, vips_foreign_load_pdf_generate, NULL, pdf, NULL ) ) return( -1 ); /* Don't use tilecache to keep the number of calls to * pdf_page_render() low. Don't thread the cache, we rely on * locking to keep pdf single-threaded. Use a large strip size to * (again) keep the number of calls to page_render low. */ if( vips_linecache( t[0], &t[1], "tile_height", VIPS_MIN( 5000, pdf->pages[0].height ), NULL ) ) return( -1 ); if( vips_image_write( t[1], load->real ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_pdf_open( VipsForeignLoadPdf *pdf ) { return( 0 ); } static void vips_foreign_load_pdf_close( VipsForeignLoadPdf *pdf ) { #ifdef DEBUG printf( "vips_foreign_load_pdf_file_close:\n" ); #endif /*DEBUG*/ VIPS_UNREF( pdf->page ); VIPS_UNREF( pdf->doc ); } static void vips_foreign_load_pdf_class_init( VipsForeignLoadPdfClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_pdf_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pdfload_base"; object_class->description = _( "load PDF with libpoppler" ); object_class->build = vips_foreign_load_pdf_build; load_class->get_flags_filename = vips_foreign_load_pdf_get_flags_filename; load_class->get_flags = vips_foreign_load_pdf_get_flags; load_class->header = vips_foreign_load_pdf_header; load_class->load = vips_foreign_load_pdf_load; class->open = vips_foreign_load_pdf_open; class->close = vips_foreign_load_pdf_close; VIPS_ARG_INT( class, "page", 20, _( "Page" ), _( "Load this page from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdf, page_no ), 0, 100000, 0 ); VIPS_ARG_INT( class, "n", 21, _( "n" ), _( "Load this many pages" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdf, n ), -1, 100000, 1 ); VIPS_ARG_DOUBLE( class, "dpi", 22, _( "DPI" ), _( "Render at this DPI" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdf, dpi ), 0.001, 100000.0, 72.0 ); VIPS_ARG_DOUBLE( class, "scale", 23, _( "Scale" ), _( "Scale output by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdf, scale ), 0.001, 100000.0, 1.0 ); VIPS_ARG_BOXED( class, "background", 24, _( "Background" ), _( "Background value" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdf, background ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_foreign_load_pdf_init( VipsForeignLoadPdf *pdf ) { pdf->dpi = 72.0; pdf->scale = 1.0; pdf->n = 1; pdf->current_page = -1; pdf->background = vips_array_double_newv( 1, 255.0 ); } typedef struct _VipsForeignLoadPdfFile { VipsForeignLoadPdf parent_object; /* Filename for load. */ char *filename; char *uri; } VipsForeignLoadPdfFile; typedef VipsForeignLoadPdfClass VipsForeignLoadPdfFileClass; G_DEFINE_TYPE( VipsForeignLoadPdfFile, vips_foreign_load_pdf_file, vips_foreign_load_pdf_get_type() ); static void vips_foreign_load_pdf_file_dispose( GObject *gobject ) { VipsForeignLoadPdfFile *file = (VipsForeignLoadPdfFile *) gobject; VIPS_FREE( file->uri ); G_OBJECT_CLASS( vips_foreign_load_pdf_file_parent_class )-> dispose( gobject ); } static int vips_foreign_load_pdf_file_header( VipsForeignLoad *load ) { VipsForeignLoadPdfFile *file = (VipsForeignLoadPdfFile *) load; VIPS_SETSTR( load->out->filename, file->filename ); return( VIPS_FOREIGN_LOAD_CLASS( vips_foreign_load_pdf_file_parent_class )->header( load ) ); } static const char *vips_foreign_pdf_suffs[] = { ".pdf", NULL }; static int vips_foreign_load_pdf_file_open( VipsForeignLoadPdf *pdf ) { VipsForeignLoadPdfFile *file = (VipsForeignLoadPdfFile *) pdf; GError *error = NULL; #ifdef DEBUG printf( "vips_foreign_load_pdf_file_open: %s\n", file->filename ); #endif /*DEBUG*/ if( !file->uri && file->filename ) { char *path; /* We need an absolute path for a URI. */ path = vips_realpath( file->filename ); if( !(file->uri = g_filename_to_uri( path, NULL, &error )) ) { g_free( path ); vips_g_error( &error ); return( -1 ); } g_free( path ); } if( !pdf->doc && file->uri && !(pdf->doc = poppler_document_new_from_file( file->uri, NULL, &error )) ) { vips_g_error( &error ); return( -1 ); } return( VIPS_FOREIGN_LOAD_PDF_CLASS( vips_foreign_load_pdf_file_parent_class )->open( pdf ) ); } static void vips_foreign_load_pdf_file_class_init( VipsForeignLoadPdfFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_pdf_file_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pdfload"; foreign_class->suffs = vips_foreign_pdf_suffs; load_class->is_a = vips_foreign_load_pdf_is_a; load_class->header = vips_foreign_load_pdf_file_header; class->open = vips_foreign_load_pdf_file_open; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdfFile, filename ), NULL ); } static void vips_foreign_load_pdf_file_init( VipsForeignLoadPdfFile *file ) { } typedef struct _VipsForeignLoadPdfBuffer { VipsForeignLoadPdf parent_object; /* Load from a buffer. */ VipsArea *buf; } VipsForeignLoadPdfBuffer; typedef VipsForeignLoadPdfClass VipsForeignLoadPdfBufferClass; G_DEFINE_TYPE( VipsForeignLoadPdfBuffer, vips_foreign_load_pdf_buffer, vips_foreign_load_pdf_get_type() ); static int vips_foreign_load_pdf_buffer_open( VipsForeignLoadPdf *pdf ) { VipsForeignLoadPdfBuffer *buffer = (VipsForeignLoadPdfBuffer *) pdf; GError *error = NULL; if( !pdf->doc && !(pdf->doc = poppler_document_new_from_data( buffer->buf->data, buffer->buf->length, NULL, &error )) ) { vips_g_error( &error ); return( -1 ); } return( VIPS_FOREIGN_LOAD_PDF_CLASS( vips_foreign_load_pdf_buffer_parent_class )->open( pdf ) ); } static void vips_foreign_load_pdf_buffer_class_init( VipsForeignLoadPdfBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pdfload_buffer"; load_class->is_a_buffer = vips_foreign_load_pdf_is_a_buffer; class->open = vips_foreign_load_pdf_buffer_open; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPdfBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_pdf_buffer_init( VipsForeignLoadPdfBuffer *buffer ) { } #endif /*HAVE_POPPLER*/ /* Also used by the pdfium loader. */ gboolean vips_foreign_load_pdf_is_a_buffer( const void *buf, size_t len ) { const guchar *str = (const guchar *) buf; if( len >= 4 && str[0] == '%' && str[1] == 'P' && str[2] == 'D' && str[3] == 'F' ) return( 1 ); return( 0 ); } /* Also used by the pdfium loader. */ gboolean vips_foreign_load_pdf_is_a( const char *filename ) { unsigned char buf[4]; if( vips__get_bytes( filename, buf, 4 ) == 4 && vips_foreign_load_pdf_is_a_buffer( buf, 4 ) ) return( 1 ); return( 0 ); } /** * vips_pdfload: * @filename: file to load * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, load this page, numbered from zero * * @n: %gint, load this many pages * * @dpi: %gdouble, render at this DPI * * @scale: %gdouble, scale render by this factor * * @background: #VipsArrayDouble background colour * * Render a PDF file into a VIPS image. Rendering uses the libpoppler library * and should be fast. * * The output image is always RGBA --- CMYK PDFs will be * converted. If you need CMYK bitmaps, you should use vips_magickload() * instead. * * Use @page to select a page to render, numbering from zero. * * Use @n to select the number of pages to render. The default is 1. Pages are * rendered in a vertical column, with each individual page aligned to the * left. Set to -1 to mean "until the end of the document". Use vips_grid() * to change page layout. * * Use @dpi to set the rendering resolution. The default is 72. Alternatively, * you can scale the rendering from the default 1 point == 1 pixel by * setting @scale. * * Use @background to set the background RGBA colour. The default is 255 * (solid white), use eg. 0 for a transparent background. * * The operation fills a number of header fields with metadata, for example * "pdf-author". They may be useful. * * This function only reads the image header and does not render any pixel * data. Rendering occurs when pixels are accessed. * * See also: vips_image_new_from_file(), vips_magickload(). * * Returns: 0 on success, -1 on error. */ int vips_pdfload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "pdfload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_pdfload_buffer: * @buf: (array length=len) (element-type guint8): memory area to load * @len: (type gsize): size of memory area * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, load this page, numbered from zero * * @n: %gint, load this many pages * * @dpi: %gdouble, render at this DPI * * @scale: %gdouble, scale render by this factor * * @background: #VipsArrayDouble background colour * * Read a PDF-formatted memory buffer into a VIPS image. Exactly as * vips_pdfload(), but read from memory. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_pdfload(). * * Returns: 0 on success, -1 on error. */ int vips_pdfload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "pdfload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } libvips-8.9.1/libvips/foreign/pforeign.h000066400000000000000000000202401361153320700202630ustar00rootroot00000000000000/* Private decls shared by all foreign. */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PFOREIGN_H #define VIPS_PFOREIGN_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Slow and horrid version if there's no recent glib. */ #ifndef HAVE_CHECKED_MUL #define g_uint_checked_mul( dest, a, b ) ( \ ((guint64) a * b) > UINT_MAX ? \ (*dest = UINT_MAX, FALSE) : \ (*dest = a * b, TRUE) \ ) #endif /*HAVE_CHECKED_MUL*/ void vips__tiff_init( void ); int vips__tiff_write( VipsImage *in, const char *filename, VipsForeignTiffCompression compression, int Q, VipsForeignTiffPredictor predictor, char *profile, gboolean tile, int tile_width, int tile_height, gboolean pyramid, gboolean squash, gboolean miniswhite, VipsForeignTiffResunit resunit, double xres, double yres, gboolean bigtiff, gboolean rgbjpeg, gboolean properties, gboolean strip, VipsRegionShrink region_shrink, int level, gboolean lossless ); int vips__tiff_write_buf( VipsImage *in, void **obuf, size_t *olen, VipsForeignTiffCompression compression, int Q, VipsForeignTiffPredictor predictor, char *profile, gboolean tile, int tile_width, int tile_height, gboolean pyramid, gboolean squash, gboolean miniswhite, VipsForeignTiffResunit resunit, double xres, double yres, gboolean bigtiff, gboolean rgbjpeg, gboolean properties, gboolean strip, VipsRegionShrink region_shrink, int level, gboolean lossless ); gboolean vips__istiff_source( VipsSource *source ); gboolean vips__istifftiled_source( VipsSource *source ); int vips__tiff_read_header_source( VipsSource *source, VipsImage *out, int page, int n, gboolean autorotate ); int vips__tiff_read_source( VipsSource *source, VipsImage *out, int page, int n, gboolean autorotate ); extern const char *vips__foreign_tiff_suffs[]; int vips__isanalyze( const char *filename ); int vips__analyze_read_header( const char *filename, VipsImage *out ); int vips__analyze_read( const char *filename, VipsImage *out ); extern const char *vips__foreign_csv_suffs[]; int vips__csv_read( const char *filename, VipsImage *out, int skip, int lines, const char *whitespace, const char *separator, gboolean fail ); int vips__csv_read_header( const char *filename, VipsImage *out, int skip, int lines, const char *whitespace, const char *separator, gboolean fail ); int vips__csv_write( VipsImage *in, const char *filename, const char *separator ); int vips__matrix_read_header( const char *filename, int *width, int *height, double *scale, double *offset ); int vips__matrix_ismatrix( const char *filename ); VipsImage *vips__matrix_read_file( FILE *fp ); VipsImage *vips__matrix_read( const char *filename ); int vips__matrix_write( VipsImage *in, const char *filename ); int vips__matrix_write_file( VipsImage *in, FILE *fp ); extern const char *vips__foreign_matrix_suffs[]; int vips__openexr_isexr( const char *filename ); gboolean vips__openexr_istiled( const char *filename ); int vips__openexr_read_header( const char *filename, VipsImage *out ); int vips__openexr_read( const char *filename, VipsImage *out ); extern const char *vips__fits_suffs[]; int vips__fits_isfits( const char *filename ); int vips__fits_read_header( const char *filename, VipsImage *out ); int vips__fits_read( const char *filename, VipsImage *out ); int vips__fits_write( VipsImage *in, const char *filename ); int vips__magick_read( const char *filename, VipsImage *out, const char *density, int page, int n ); int vips__magick_read_header( const char *filename, VipsImage *out, const char *density, int page, int n ); int vips__magick_read_buffer( const void *buf, const size_t len, VipsImage *out, const char *density, int page, int n ); int vips__magick_read_buffer_header( const void *buf, const size_t len, VipsImage *out, const char *density, int page, int n ); extern const char *vips__mat_suffs[]; int vips__mat_load( const char *filename, VipsImage *out ); int vips__mat_header( const char *filename, VipsImage *out ); int vips__mat_ismat( const char *filename ); extern const char *vips__ppm_suffs[]; int vips__ppm_save_target( VipsImage *in, VipsTarget *target, gboolean ascii, gboolean squash ); int vips__rad_israd( VipsSource *source ); int vips__rad_header( VipsSource *source, VipsImage *out ); int vips__rad_load( VipsSource *source, VipsImage *out ); int vips__rad_save( VipsImage *in, VipsTarget *target ); extern const char *vips__rad_suffs[]; extern const char *vips__jpeg_suffs[]; int vips__jpeg_write_target( VipsImage *in, VipsTarget *target, int Q, const char *profile, gboolean optimize_coding, gboolean progressive, gboolean strip, gboolean no_subsample, gboolean trellis_quant, gboolean overshoot_deringing, gboolean optimize_scans, int quant_table ); int vips__jpeg_read_source( VipsSource *source, VipsImage *out, gboolean header_only, int shrink, int fail, gboolean autorotate ); int vips__isjpeg_source( VipsSource *source ); int vips__png_ispng_source( VipsSource *source ); int vips__png_header_source( VipsSource *source, VipsImage *out ); int vips__png_read_source( VipsSource *source, VipsImage *out, gboolean fail ); gboolean vips__png_isinterlaced_source( VipsSource *source ); extern const char *vips__png_suffs[]; int vips__png_write_target( VipsImage *in, VipsTarget *target, int compress, int interlace, const char *profile, VipsForeignPngFilter filter, gboolean strip, gboolean palette, int colours, int Q, double dither ); /* Map WEBP metadata names to vips names. */ typedef struct _VipsWebPNames { const char *vips; const char *webp; int flags; } VipsWebPNames; extern const VipsWebPNames vips__webp_names[]; extern const int vips__n_webp_names; extern const char *vips__webp_suffs[]; int vips__iswebp_source( VipsSource *source ); int vips__webp_read_header_source( VipsSource *source, VipsImage *out, int page, int n, double scale ); int vips__webp_read_source( VipsSource *source, VipsImage *out, int page, int n, double scale ); int vips__webp_write_target( VipsImage *image, VipsTarget *target, int Q, gboolean lossless, VipsForeignWebpPreset preset, gboolean smart_subsample, gboolean near_lossless, int alpha_q, int reduction_effort, gboolean min_size, int kmin, int kmax, gboolean strip ); int vips__openslide_isslide( const char *filename ); int vips__openslide_read_header( const char *filename, VipsImage *out, int level, gboolean autocrop, char *associated, gboolean attach_associated ); int vips__openslide_read( const char *filename, VipsImage *out, int level, gboolean autocrop, gboolean attach_associated ); int vips__openslide_read_associated( const char *filename, VipsImage *out, const char *associated ); gboolean vips_foreign_load_pdf_is_a_buffer( const void *buf, size_t len ); gboolean vips_foreign_load_pdf_is_a( const char *filename ); int vips__quantise_image( VipsImage *in, VipsImage **index_out, VipsImage **palette_out, int colours, int Q, double dither ); extern const char *vips__nifti_suffs[]; VipsBandFormat vips__foreign_nifti_datatype2BandFmt( int datatype ); int vips__foreign_nifti_BandFmt2datatype( VipsBandFormat fmt ); typedef void *(*VipsNiftiMapFn)( const char *name, GValue *value, glong offset, void *a, void *b ); void *vips__foreign_nifti_map( VipsNiftiMapFn fn, void *a, void *b ); extern const char *vips__heif_suffs[]; struct heif_error; void vips__heif_error( struct heif_error *error ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PFOREIGN_H*/ libvips-8.9.1/libvips/foreign/pngload.c000066400000000000000000000270601361153320700201000ustar00rootroot00000000000000/* load png from a file * * 5/12/11 * - from tiffload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_PNG typedef struct _VipsForeignLoadPng { VipsForeignLoad parent_object; /* Set by subclasses. */ VipsSource *source; } VipsForeignLoadPng; typedef VipsForeignLoadClass VipsForeignLoadPngClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadPng, vips_foreign_load_png, VIPS_TYPE_FOREIGN_LOAD ); static void vips_foreign_load_png_dispose( GObject *gobject ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) gobject; VIPS_UNREF( png->source ); G_OBJECT_CLASS( vips_foreign_load_png_parent_class )-> dispose( gobject ); } static VipsForeignFlags vips_foreign_load_png_get_flags_source( VipsSource *source ) { VipsForeignFlags flags; flags = 0; if( vips__png_isinterlaced_source( source ) ) flags |= VIPS_FOREIGN_PARTIAL; else flags |= VIPS_FOREIGN_SEQUENTIAL; return( flags ); } static VipsForeignFlags vips_foreign_load_png_get_flags( VipsForeignLoad *load ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; return( vips_foreign_load_png_get_flags_source( png->source ) ); } static VipsForeignFlags vips_foreign_load_png_get_flags_filename( const char *filename ) { VipsSource *source; VipsForeignFlags flags; if( !(source = vips_source_new_from_file( filename )) ) return( 0 ); flags = vips_foreign_load_png_get_flags_source( source ); VIPS_UNREF( source ); return( flags ); } static int vips_foreign_load_png_header( VipsForeignLoad *load ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; if( vips__png_header_source( png->source, load->out ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_png_load( VipsForeignLoad *load ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; if( vips__png_read_source( png->source, load->real, load->fail ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_png_class_init( VipsForeignLoadPngClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_png_dispose; object_class->nickname = "pngload_base"; object_class->description = _( "load png base class" ); /* We are fast at is_a(), so high priority. */ foreign_class->priority = 200; load_class->get_flags_filename = vips_foreign_load_png_get_flags_filename; load_class->get_flags = vips_foreign_load_png_get_flags; load_class->header = vips_foreign_load_png_header; load_class->load = vips_foreign_load_png_load; } static void vips_foreign_load_png_init( VipsForeignLoadPng *png ) { } typedef struct _VipsForeignLoadPngSource { VipsForeignLoadPng parent_object; /* Load from a source. */ VipsSource *source; } VipsForeignLoadPngSource; typedef VipsForeignLoadPngClass VipsForeignLoadPngSourceClass; G_DEFINE_TYPE( VipsForeignLoadPngSource, vips_foreign_load_png_source, vips_foreign_load_png_get_type() ); static int vips_foreign_load_png_source_build( VipsObject *object ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) object; VipsForeignLoadPngSource *source = (VipsForeignLoadPngSource *) object; if( source->source ) { png->source = source->source; g_object_ref( png->source ); } if( VIPS_OBJECT_CLASS( vips_foreign_load_png_source_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_png_source_is_a_source( VipsSource *source ) { return( vips__png_ispng_source( source ) ); } static void vips_foreign_load_png_source_class_init( VipsForeignLoadPngSourceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngload_source"; object_class->description = _( "load png from source" ); object_class->build = vips_foreign_load_png_source_build; load_class->is_a_source = vips_foreign_load_png_source_is_a_source; VIPS_ARG_OBJECT( class, "source", 1, _( "Source" ), _( "Source to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPngSource, source ), VIPS_TYPE_SOURCE ); } static void vips_foreign_load_png_source_init( VipsForeignLoadPngSource *source ) { } typedef struct _VipsForeignLoadPngFile { VipsForeignLoadPng parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadPngFile; typedef VipsForeignLoadPngClass VipsForeignLoadPngFileClass; G_DEFINE_TYPE( VipsForeignLoadPngFile, vips_foreign_load_png_file, vips_foreign_load_png_get_type() ); static int vips_foreign_load_png_file_build( VipsObject *object ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) object; VipsForeignLoadPngFile *file = (VipsForeignLoadPngFile *) object; if( file->filename && !(png->source = vips_source_new_from_file( file->filename )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_foreign_load_png_file_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_png_file_is_a( const char *filename ) { VipsSource *source; gboolean result; if( !(source = vips_source_new_from_file( filename )) ) return( FALSE ); result = vips_foreign_load_png_source_is_a_source( source ); VIPS_UNREF( source ); return( result ); } static void vips_foreign_load_png_file_class_init( VipsForeignLoadPngFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngload"; object_class->description = _( "load png from file" ); object_class->build = vips_foreign_load_png_file_build; foreign_class->suffs = vips__png_suffs; load_class->is_a = vips_foreign_load_png_file_is_a; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPngFile, filename ), NULL ); } static void vips_foreign_load_png_file_init( VipsForeignLoadPngFile *file ) { } typedef struct _VipsForeignLoadPngBuffer { VipsForeignLoadPng parent_object; /* Load from a buffer. */ VipsBlob *blob; } VipsForeignLoadPngBuffer; typedef VipsForeignLoadPngClass VipsForeignLoadPngBufferClass; G_DEFINE_TYPE( VipsForeignLoadPngBuffer, vips_foreign_load_png_buffer, vips_foreign_load_png_get_type() ); static int vips_foreign_load_png_buffer_build( VipsObject *object ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) object; VipsForeignLoadPngBuffer *buffer = (VipsForeignLoadPngBuffer *) object; if( buffer->blob && !(png->source = vips_source_new_from_memory( VIPS_AREA( buffer->blob )->data, VIPS_AREA( buffer->blob )->length )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_foreign_load_png_buffer_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_png_buffer_is_a_buffer( const void *buf, size_t len ) { VipsSource *source; gboolean result; if( !(source = vips_source_new_from_memory( buf, len )) ) return( FALSE ); result = vips_foreign_load_png_source_is_a_source( source ); VIPS_UNREF( source ); return( result ); } static void vips_foreign_load_png_buffer_class_init( VipsForeignLoadPngBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngload_buffer"; object_class->description = _( "load png from buffer" ); object_class->build = vips_foreign_load_png_buffer_build; load_class->is_a_buffer = vips_foreign_load_png_buffer_is_a_buffer; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPngBuffer, blob ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_png_buffer_init( VipsForeignLoadPngBuffer *buffer ) { } #endif /*HAVE_PNG*/ /** * vips_pngload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Read a PNG file into a VIPS image. It can read all png images, including 8- * and 16-bit images, 1 and 3 channel, with and without an alpha channel. * * Any ICC profile is read and attached to the VIPS image. It also supports * XMP metadata. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_pngload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "pngload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_pngload_buffer: * @buf: (array length=len) (element-type guint8): memory area to load * @len: (type gsize): size of memory area * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Exactly as vips_pngload(), but read from a PNG-formatted memory block. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_pngload(). * * Returns: 0 on success, -1 on error. */ int vips_pngload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "pngload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } /** * vips_pngload_source: * @source: source to load from * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Exactly as vips_pngload(), but read from a source. * * See also: vips_pngload(). * * Returns: 0 on success, -1 on error. */ int vips_pngload_source( VipsSource *source, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "pngload_source", ap, source, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/pngsave.c000066400000000000000000000351041361153320700201150ustar00rootroot00000000000000/* save to png * * 2/12/11 * - wrap a class around the png writer * 16/7/12 * - compression should be 0-9, not 1-10 * 20/6/18 [felixbuenemann] * - support png8 palette write with palette, colours, Q, dither */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_PNG typedef struct _VipsForeignSavePng { VipsForeignSave parent_object; int compression; gboolean interlace; char *profile; VipsForeignPngFilter filter; gboolean palette; int colours; int Q; double dither; } VipsForeignSavePng; typedef VipsForeignSaveClass VipsForeignSavePngClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSavePng, vips_foreign_save_png, VIPS_TYPE_FOREIGN_SAVE ); /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int bandfmt_png[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, US, US, UC, UC, UC, UC }; static void vips_foreign_save_png_class_init( VipsForeignSavePngClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngsave_base"; object_class->description = _( "save png" ); foreign_class->suffs = vips__png_suffs; save_class->saveable = VIPS_SAVEABLE_RGBA; save_class->format_table = bandfmt_png; VIPS_ARG_INT( class, "compression", 6, _( "Compression" ), _( "Compression factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, compression ), 0, 9, 6 ); VIPS_ARG_BOOL( class, "interlace", 7, _( "Interlace" ), _( "Interlace image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, interlace ), FALSE ); VIPS_ARG_STRING( class, "profile", 11, _( "Profile" ), _( "ICC profile to embed" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, profile ), NULL ); VIPS_ARG_FLAGS( class, "filter", 12, _( "Filter" ), _( "libpng row filter flag(s)" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, filter ), VIPS_TYPE_FOREIGN_PNG_FILTER, VIPS_FOREIGN_PNG_FILTER_ALL ); VIPS_ARG_BOOL( class, "palette", 13, _( "Palette" ), _( "Quantise to 8bpp palette" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, palette ), FALSE ); VIPS_ARG_INT( class, "colours", 14, _( "Colours" ), _( "Max number of palette colours" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, colours ), 2, 256, 256 ); VIPS_ARG_INT( class, "Q", 15, _( "Quality" ), _( "Quantisation quality" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, Q ), 0, 100, 100 ); VIPS_ARG_DOUBLE( class, "dither", 16, _( "Dithering" ), _( "Amount of dithering" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, dither ), 0.0, 1.0, 1.0 ); } static void vips_foreign_save_png_init( VipsForeignSavePng *png ) { png->compression = 6; png->filter = VIPS_FOREIGN_PNG_FILTER_ALL; png->colours = 256; png->Q = 100; png->dither = 1.0; } typedef struct _VipsForeignSavePngTarget { VipsForeignSavePng parent_object; VipsTarget *target; } VipsForeignSavePngTarget; typedef VipsForeignSavePngClass VipsForeignSavePngTargetClass; G_DEFINE_TYPE( VipsForeignSavePngTarget, vips_foreign_save_png_target, vips_foreign_save_png_get_type() ); static int vips_foreign_save_png_target_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSavePng *png = (VipsForeignSavePng *) object; VipsForeignSavePngTarget *target = (VipsForeignSavePngTarget *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_png_target_parent_class )-> build( object ) ) return( -1 ); if( vips__png_write_target( save->ready, target->target, png->compression, png->interlace, png->profile, png->filter, save->strip, png->palette, png->colours, png->Q, png->dither ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_png_target_class_init( VipsForeignSavePngTargetClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngsave_target"; object_class->description = _( "save image to target as PNG" ); object_class->build = vips_foreign_save_png_target_build; VIPS_ARG_OBJECT( class, "target", 1, _( "Target" ), _( "Target to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSavePngTarget, target ), VIPS_TYPE_TARGET ); } static void vips_foreign_save_png_target_init( VipsForeignSavePngTarget *target ) { } typedef struct _VipsForeignSavePngFile { VipsForeignSavePng parent_object; char *filename; } VipsForeignSavePngFile; typedef VipsForeignSavePngClass VipsForeignSavePngFileClass; G_DEFINE_TYPE( VipsForeignSavePngFile, vips_foreign_save_png_file, vips_foreign_save_png_get_type() ); static int vips_foreign_save_png_file_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSavePng *png = (VipsForeignSavePng *) object; VipsForeignSavePngFile *png_file = (VipsForeignSavePngFile *) object; VipsTarget *target; if( VIPS_OBJECT_CLASS( vips_foreign_save_png_file_parent_class )-> build( object ) ) return( -1 ); if( !(target = vips_target_new_to_file( png_file->filename )) ) return( -1 ); if( vips__png_write_target( save->ready, target, png->compression, png->interlace, png->profile, png->filter, save->strip, png->palette, png->colours, png->Q, png->dither ) ) { VIPS_UNREF( target ); return( -1 ); } VIPS_UNREF( target ); return( 0 ); } static void vips_foreign_save_png_file_class_init( VipsForeignSavePngFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngsave"; object_class->description = _( "save image to png file" ); object_class->build = vips_foreign_save_png_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSavePngFile, filename ), NULL ); } static void vips_foreign_save_png_file_init( VipsForeignSavePngFile *file ) { } typedef struct _VipsForeignSavePngBuffer { VipsForeignSavePng parent_object; VipsArea *buf; } VipsForeignSavePngBuffer; typedef VipsForeignSavePngClass VipsForeignSavePngBufferClass; G_DEFINE_TYPE( VipsForeignSavePngBuffer, vips_foreign_save_png_buffer, vips_foreign_save_png_get_type() ); static int vips_foreign_save_png_buffer_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSavePng *png = (VipsForeignSavePng *) object; VipsForeignSavePngBuffer *buffer = (VipsForeignSavePngBuffer *) object; VipsTarget *target; VipsBlob *blob; if( VIPS_OBJECT_CLASS( vips_foreign_save_png_buffer_parent_class )-> build( object ) ) return( -1 ); if( !(target = vips_target_new_to_memory()) ) return( -1 ); if( vips__png_write_target( save->ready, target, png->compression, png->interlace, png->profile, png->filter, save->strip, png->palette, png->colours, png->Q, png->dither ) ) { VIPS_UNREF( target ); return( -1 ); } g_object_get( target, "blob", &blob, NULL ); g_object_set( buffer, "buffer", blob, NULL ); vips_area_unref( VIPS_AREA( blob ) ); VIPS_UNREF( target ); return( 0 ); } static void vips_foreign_save_png_buffer_class_init( VipsForeignSavePngBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngsave_buffer"; object_class->description = _( "save image to png buffer" ); object_class->build = vips_foreign_save_png_buffer_build; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to save to" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignSavePngBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_save_png_buffer_init( VipsForeignSavePngBuffer *buffer ) { } #endif /*HAVE_PNG*/ /** * vips_pngsave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @compression: %gint, compression level * * @interlace: %gboolean, interlace image * * @profile: %gchararray, ICC profile to embed * * @filter: #VipsForeignPngFilter row filter flag(s) * * @palette: %gboolean, enable quantisation to 8bpp palette * * @colours: %gint, max number of palette colours for quantisation * * @Q: %gint, quality for 8bpp quantisation (does not exceed @colours) * * @dither: %gdouble, amount of dithering for 8bpp quantization * * Write a VIPS image to a file as PNG. * * @compression means compress with this much effort (0 - 9). Default 6. * * Set @interlace to %TRUE to interlace the image with ADAM7 * interlacing. Beware * than an interlaced PNG can be up to 7 times slower to write than a * non-interlaced image. * * Use @profile to give the filename of a profile to be embedded in the PNG. * This does not affect the pixels which are written, just the way * they are tagged. See vips_profile_load() for details on profile naming. * * If @profile is specified and the VIPS header * contains an ICC profile named VIPS_META_ICC_NAME ("icc-profile-data"), the * profile from the VIPS header will be attached. * * Use @filter to specify one or more filters (instead of adaptive filtering), * see #VipsForeignPngFilter. * * The image is automatically converted to RGB, RGBA, Monochrome or Mono + * alpha before saving. Images with more than one byte per band element are * saved as 16-bit PNG, others are saved as 8-bit PNG. * * Set @palette to %TRUE to enable quantisation to an 8-bit per pixel palette * image with alpha transparency support. If @colours is given, it limits the * maximum number of palette entries. Similar to JPEG the quality can also be * be changed with the @Q parameter which further reduces the palette size and * @dither controls the amount of Floyd-Steinberg dithering. * This feature requires libvips to be compiled with libimagequant. * * XMP metadata is written to the XMP chunk. PNG comments are written to * separate text chunks. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_pngsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "pngsave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_pngsave_buffer: (method) * @in: image to save * @buf: (array length=len) (element-type guint8): return output buffer here * @len: (type gsize): return output length here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @compression: %gint, compression level * * @interlace: %gboolean, interlace image * * @profile: %gchararray, ICC profile to embed * * @filter: #VipsForeignPngFilter row filter flag(s) * * @palette: %gboolean, enable quantisation to 8bpp palette * * @colours: %gint, max number of palette colours for quantisation * * @Q: %gint, quality for 8bpp quantisation (does not exceed @colours) * * @dither: %gdouble, amount of dithering for 8bpp quantization * * As vips_pngsave(), but save to a memory buffer. * * The address of the buffer is returned in @buf, the length of the buffer in * @len. You are responsible for freeing the buffer with g_free() when you * are done with it. * * See also: vips_pngsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_pngsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) { va_list ap; VipsArea *area; int result; area = NULL; va_start( ap, len ); result = vips_call_split( "pngsave_buffer", ap, in, &area ); va_end( ap ); if( !result && area ) { if( buf ) { *buf = area->data; area->free_fn = NULL; } if( len ) *len = area->length; vips_area_unref( area ); } return( result ); } /** * vips_pngsave_target: (method) * @in: image to save * @target: save image to this target * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @compression: compression level * * @interlace: interlace image * * @profile: ICC profile to embed * * @filter: libpng row filter flag(s) * * @palette: enable quantisation to 8bpp palette * * @colours: max number of palette colours for quantisation * * @Q: quality for 8bpp quantisation (does not exceed @colours) * * @dither: amount of dithering for 8bpp quantization * * As vips_pngsave(), but save to a target. * * See also: vips_pngsave(), vips_image_write_to_target(). * * Returns: 0 on success, -1 on error. */ int vips_pngsave_target( VipsImage *in, VipsTarget *target, ... ) { va_list ap; int result; va_start( ap, target ); result = vips_call_split( "pngsave_target", ap, in, target ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/ppmload.c000066400000000000000000000417621361153320700201150ustar00rootroot00000000000000/* load ppm from a file * * Stephen Chan ... original code * * 21/11/00 JC * - hacked for VIPS * - reads ppm/pgm/pbm * - mmaps binary pgm/ppm * - reads all ascii formats (slowly!) * 22/11/00 JC * - oops, ascii read was broken * - does 16/32 bit ascii now as well * 24/5/01 * - im_ppm2vips_header() added * 28/11/03 JC * - better no-overshoot on tile loop * 22/5/04 * - does 16/32 bit binary too * - tiny fix for missing file close on read error * 19/8/05 * - use im_raw2vips() for binary read * 9/9/05 * - tiny cleanups * 3/11/07 * - use im_wbuffer() for bg writes * 1/5/10 * - add PFM (portable float map) support * 19/12/11 * - rework as a set of fns ready to be called from a class * 8/11/14 * - add 1 bit write * 29/7/19 Kyle-Kyle * - fix a loop with malformed ppm * 13/11/19 * - redone with source/target * - sequential load, plus mmap for filename sources * - faster plus lower memory use */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_PPM typedef struct _VipsForeignLoadPpm { VipsForeignLoad parent_object; /* The source we load from, and the buffered wrapper for it. */ VipsSource *source; VipsSbuf *sbuf; /* Properties of this ppm, from the header. */ int width; int height; int bands; VipsBandFormat format; VipsInterpretation interpretation; float scale; int max_value; int index; /* ppm type .. index in magic_names[] */ int bits; /* 1, 8, 16 or 32 */ gboolean ascii; /* TRUE for ascii encoding */ gboolean msb_first; /* TRUE if most sig byte is first */ gboolean have_read_header; } VipsForeignLoadPpm; typedef VipsForeignLoadClass VipsForeignLoadPpmClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadPpm, vips_foreign_load_ppm, VIPS_TYPE_FOREIGN_LOAD ); /* ppm types. */ static char *magic_names[] = { "P1", /* pbm ... 1 band 1 bit, ascii */ "P2", /* pgm ... 1 band many bit, ascii */ "P3", /* ppm ... 3 band many bit, ascii */ "P4", /* pbm ... 1 band 1 bit, binary */ "P5", /* pgm ... 1 band 8 bit, binary */ "P6", /* ppm ... 3 band 8 bit, binary */ "PF", /* pfm ... 3 band 32 bit, binary */ "Pf" /* pfm ... 1 band 32 bit, binary */ }; /* Shared with ppmsave. */ const char *vips__ppm_suffs[] = { ".ppm", ".pgm", ".pbm", ".pfm", NULL }; static gboolean vips_foreign_load_ppm_is_a_source( VipsSource *source ) { const unsigned char *data; if( (data = vips_source_sniff( source, 2 )) ) { int i; for( i = 0; i < VIPS_NUMBER( magic_names ); i++ ) if( vips_isprefix( magic_names[i], (char *) data ) ) return( TRUE ); } return( FALSE ); } static int get_int( VipsSbuf *sbuf, int *i ) { const char *txt; if( vips_sbuf_skip_whitespace( sbuf ) || !(txt = vips_sbuf_get_non_whitespace( sbuf )) ) return( -1 ); *i = atoi( txt ); return( 0 ); } static int get_float( VipsSbuf *sbuf, float *f ) { const char *txt; if( vips_sbuf_skip_whitespace( sbuf ) || !(txt = vips_sbuf_get_non_whitespace( sbuf )) ) return( -1 ); /* We don't want the locale str -> float conversion. */ *f = g_ascii_strtod( txt, NULL ); return( 0 ); } static void vips_foreign_load_ppm_dispose( GObject *gobject ) { VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) gobject; VIPS_UNREF( ppm->sbuf ); VIPS_UNREF( ppm->source ); G_OBJECT_CLASS( vips_foreign_load_ppm_parent_class )-> dispose( gobject ); } /* Scan the header into our class. */ static int vips_foreign_load_ppm_parse_header( VipsForeignLoadPpm *ppm ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( ppm ); int i; char buf[2]; /* Characteristics, indexed by ppm type. */ static int lookup_bits[] = { 1, 8, 8, 1, 8, 8, 32, 32 }; static int lookup_bands[] = { 1, 1, 3, 1, 1, 3, 3, 1 }; static int lookup_ascii[] = { 1, 1, 1, 0, 0, 0, 0, 0 }; if( vips_source_rewind( ppm->source ) ) return( -1 ); /* Read in the magic number. */ buf[0] = VIPS_SBUF_GETC( ppm->sbuf ); buf[1] = VIPS_SBUF_GETC( ppm->sbuf ); for( i = 0; i < VIPS_NUMBER( magic_names ); i++ ) if( vips_isprefix( magic_names[i], buf ) ) break; if( i == VIPS_NUMBER( magic_names ) ) { vips_error( class->nickname, "%s", _( "bad magic number" ) ); return( -1 ); } ppm->index = i; ppm->bits = lookup_bits[i]; ppm->bands = lookup_bands[i]; ppm->ascii = lookup_ascii[i]; /* Default ... can be changed below for PFM images. */ ppm->msb_first = 0; /* Read in size. */ if( get_int( ppm->sbuf, &ppm->width ) || get_int( ppm->sbuf, &ppm->height ) ) return( -1 ); /* Read in max value / scale for >1 bit images. */ if( ppm->bits > 1 ) { if( ppm->index == 6 || ppm->index == 7 ) { if( get_float( ppm->sbuf, &ppm->scale ) ) return( -1 ); /* Scale > 0 means big-endian. */ ppm->msb_first = ppm->scale > 0; } else { if( get_int( ppm->sbuf, &ppm->max_value ) ) return( -1 ); if( ppm->max_value > 255 ) ppm->bits = 16; if( ppm->max_value > 65535 ) ppm->bits = 32; } } /* For binary images, there is always exactly 1 more whitespace * character before the data starts. */ if( !ppm->ascii && !isspace( VIPS_SBUF_GETC( ppm->sbuf ) ) ) { vips_error( class->nickname, "%s", _( "no whitespace before start of binary data" ) ); return( -1 ); } /* Choose a VIPS bandfmt. */ switch( ppm->bits ) { case 1: case 8: ppm->format = VIPS_FORMAT_UCHAR; break; case 16: ppm->format = VIPS_FORMAT_USHORT; break; case 32: if( ppm->index == 6 || ppm->index == 7 ) ppm->format = VIPS_FORMAT_FLOAT; else ppm->format = VIPS_FORMAT_UINT; break; default: g_assert_not_reached(); /* Stop compiler warnings. */ ppm->format = VIPS_FORMAT_UCHAR; } if( ppm->bands == 1 ) { if( ppm->format == VIPS_FORMAT_USHORT ) ppm->interpretation = VIPS_INTERPRETATION_GREY16; else ppm->interpretation = VIPS_INTERPRETATION_B_W; } else { if( ppm->format == VIPS_FORMAT_USHORT ) ppm->interpretation = VIPS_INTERPRETATION_RGB16; else ppm->interpretation = VIPS_INTERPRETATION_sRGB; } ppm->have_read_header = TRUE; return( 0 ); } static VipsForeignFlags vips_foreign_load_ppm_get_flags( VipsForeignLoad *load ) { VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) load; VipsForeignFlags flags; flags = 0; /* If this source supports fast mmap and this PPM is >=8 bit binary, * then we can mmap the file and support partial load. Otherwise, * it's sequential. */ if( !ppm->have_read_header && vips_foreign_load_ppm_parse_header( ppm ) ) return( 0 ); if( vips_source_is_mappable( ppm->source ) && !ppm->ascii && ppm->bits >= 8 ) flags |= VIPS_FOREIGN_PARTIAL; else flags |= VIPS_FOREIGN_SEQUENTIAL; return( flags ); } static void vips_foreign_load_ppm_set_image( VipsForeignLoadPpm *ppm, VipsImage *image ) { vips_image_init_fields( image, ppm->width, ppm->height, ppm->bands, ppm->format, VIPS_CODING_NONE, ppm->interpretation, 1.0, 1.0 ); vips_image_pipelinev( image, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); if( ppm->index == 6 || ppm->index == 7 ) vips_image_set_double( image, "pfm-scale", VIPS_FABS( ppm->scale ) ); else vips_image_set_double( image, "ppm-max-value", VIPS_ABS( ppm->max_value ) ); VIPS_SETSTR( image->filename, vips_connection_filename( VIPS_CONNECTION( ppm->sbuf->source ) ) ); } static int vips_foreign_load_ppm_header( VipsForeignLoad *load ) { VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) load; if( !ppm->have_read_header && vips_foreign_load_ppm_parse_header( ppm ) ) return( 0 ); vips_foreign_load_ppm_set_image( ppm, load->out ); vips_source_minimise( ppm->source ); return( 0 ); } /* Read a ppm/pgm file using mmap(). */ static int vips_foreign_load_ppm_map( VipsForeignLoadPpm *ppm, VipsImage *image ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( ppm ), 3 ); gint64 header_offset; size_t length; const void *data; vips_sbuf_unbuffer( ppm->sbuf ); header_offset = vips_source_seek( ppm->source, 0, SEEK_CUR ); data = vips_source_map( ppm->source, &length ); if( header_offset < 0 || !data ) return( -1 ); data += header_offset; length -= header_offset; if( !(t[0] = vips_image_new_from_memory( data, length, ppm->width, ppm->height, ppm->bands, ppm->format )) ) return( -1 ); if( vips__byteswap_bool( t[0], &t[1], vips_amiMSBfirst() != ppm->msb_first ) || vips_image_write( t[1], image ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_ppm_generate_binary( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) a; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( ppm ); VipsImage *image = or->im; size_t sizeof_line = VIPS_IMAGE_SIZEOF_LINE( image ); int y; for( y = 0; y < r->height; y++ ) { VipsPel *q = VIPS_REGION_ADDR( or, 0, r->top + y ); size_t bytes_read; bytes_read = vips_source_read( ppm->source, q, sizeof_line ); if( bytes_read != sizeof_line ) { vips_error( class->nickname, "%s", _( "file truncated" ) ); return( -1 ); } } return( 0 ); } static int vips_foreign_load_ppm_generate_1bit_ascii( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) a; VipsImage *image = or->im; int x, y; for( y = 0; y < r->height; y++ ) { VipsPel *q = VIPS_REGION_ADDR( or, 0, r->top + y ); for( x = 0; x < image->Xsize; x++ ) { int val; if( get_int( ppm->sbuf, &val ) ) return( -1 ); if( val ) q[x] = 0; else q[x] = 255; } } return( 0 ); } static int vips_foreign_load_ppm_generate_1bit_binary( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) a; VipsImage *image = or->im; int x, y; int bits; bits = VIPS_SBUF_GETC( ppm->sbuf ); for( y = 0; y < r->height; y++ ) { VipsPel *q = VIPS_REGION_ADDR( or, 0, r->top + y ); for( x = 0; x < image->Xsize; x++ ) { q[x] = (bits & 128) ? 0 : 255; bits = VIPS_LSHIFT_INT( bits, 1 ); if( (x & 7) == 7 ) bits = VIPS_SBUF_GETC( ppm->sbuf ); } /* Skip any unaligned bits at end of line. */ if( (x & 7) != 0 ) bits = VIPS_SBUF_GETC( ppm->sbuf ); } return( 0 ); } static int vips_foreign_load_ppm_generate_ascii_int( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) a; VipsImage *image = or->im; int n_elements = image->Xsize * image->Bands; int i, y; for( y = 0; y < r->height; y++ ) { VipsPel *q = VIPS_REGION_ADDR( or, r->left, r->top + y ); for( i = 0; i < n_elements; i++ ) { int val; if( get_int( ppm->sbuf, &val ) ) return( -1 ); switch( image->BandFmt ) { case VIPS_FORMAT_UCHAR: q[i] = VIPS_CLIP( 0, val, 255 ); break; case VIPS_FORMAT_USHORT: ((unsigned short *) q)[i] = VIPS_CLIP( 0, val, 65535 ); break; case VIPS_FORMAT_UINT: ((unsigned int *) q)[i] = val; break; default: g_assert_not_reached(); } } } return( 0 ); } typedef int (*VipsPpmLoaderFn)( VipsForeignLoadPpm *ppm, VipsImage *image ); static int vips_foreign_load_ppm_load( VipsForeignLoad *load ) { VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) load; VipsImage **t = (VipsImage **) vips_object_local_array( (VipsObject *) load, 2 ); if( !ppm->have_read_header && vips_foreign_load_ppm_parse_header( ppm ) ) return( 0 ); /* If the source is mappable and this is a binary file, we can map it. */ if( vips_source_is_mappable( ppm->source ) && !ppm->ascii && ppm->bits >= 8 ) { if( vips_foreign_load_ppm_map( ppm, load->real ) ) return( -1 ); } else { VipsGenerateFn generate; /* What sort of read are we doing? */ if( !ppm->ascii && ppm->bits >= 8 ) { generate = vips_foreign_load_ppm_generate_binary; /* The binary loader does not use the buffered IO * object. */ vips_sbuf_unbuffer( ppm->sbuf ); } else if( !ppm->ascii && ppm->bits == 1 ) generate = vips_foreign_load_ppm_generate_1bit_binary; else if( ppm->ascii && ppm->bits == 1 ) generate = vips_foreign_load_ppm_generate_1bit_ascii; else generate = vips_foreign_load_ppm_generate_ascii_int; t[0] = vips_image_new(); vips_foreign_load_ppm_set_image( ppm, t[0] ); if( vips_image_generate( t[0], NULL, generate, NULL, ppm, NULL ) || vips_sequential( t[0], &t[1], NULL ) || vips_image_write( t[1], load->real ) ) return( -1 ); } if( vips_source_decode( ppm->source ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_ppm_class_init( VipsForeignLoadPpmClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_ppm_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "ppmload_base"; object_class->description = _( "load ppm base class" ); foreign_class->suffs = vips__ppm_suffs; /* We are fast at is_a(), so high priority. */ foreign_class->priority = 200; load_class->get_flags = vips_foreign_load_ppm_get_flags; load_class->header = vips_foreign_load_ppm_header; load_class->load = vips_foreign_load_ppm_load; } static void vips_foreign_load_ppm_init( VipsForeignLoadPpm *ppm ) { ppm->scale = 1.0; } typedef struct _VipsForeignLoadPpmFile { VipsForeignLoadPpm parent_object; char *filename; } VipsForeignLoadPpmFile; typedef VipsForeignLoadPpmClass VipsForeignLoadPpmFileClass; G_DEFINE_TYPE( VipsForeignLoadPpmFile, vips_foreign_load_ppm_file, vips_foreign_load_ppm_get_type() ); static gboolean vips_foreign_load_ppm_file_is_a( const char *filename ) { VipsSource *source; gboolean result; if( !(source = vips_source_new_from_file( filename )) ) return( FALSE ); result = vips_foreign_load_ppm_is_a_source( source ); VIPS_UNREF( source ); return( result ); } static int vips_foreign_load_ppm_file_build( VipsObject *object ) { VipsForeignLoadPpmFile *file = (VipsForeignLoadPpmFile *) object; VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) object; if( file->filename ) { if( !(ppm->source = vips_source_new_from_file( file->filename )) ) return( -1 ); ppm->sbuf = vips_sbuf_new_from_source( ppm->source ); } if( VIPS_OBJECT_CLASS( vips_foreign_load_ppm_file_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_ppm_file_class_init( VipsForeignLoadPpmClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "ppmload"; object_class->description = _( "load ppm from file" ); object_class->build = vips_foreign_load_ppm_file_build; load_class->is_a = vips_foreign_load_ppm_file_is_a; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPpmFile, filename ), NULL ); } static void vips_foreign_load_ppm_file_init( VipsForeignLoadPpmFile *file ) { } #endif /*HAVE_PPM*/ /** * vips_ppmload: * @filename: file to load * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Read a PPM/PBM/PGM/PFM file into a VIPS image. * * It can read 1, 8, 16 and 32 bit images, colour or monochrome, * stored in binary or in ASCII. One bit images become 8 bit VIPS images, * with 0 and 255 for 0 and 1. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_ppmload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "ppmload", ap, filename, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/ppmsave.c000066400000000000000000000263321361153320700201300ustar00rootroot00000000000000/* save to ppm * * 2/12/11 * - wrap a class around the ppm writer * 13/11/19 * - redone with targets */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_PPM typedef struct _VipsForeignSavePpm VipsForeignSavePpm; typedef int (*VipsSavePpmFn)( VipsForeignSavePpm *, VipsImage *, VipsPel * ); typedef struct _VipsForeignSavePpm { VipsForeignSave parent_object; VipsTarget *target; gboolean ascii; gboolean squash; VipsSavePpmFn fn; } VipsForeignSavePpm; typedef VipsForeignSaveClass VipsForeignSavePpmClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSavePpm, vips_foreign_save_ppm, VIPS_TYPE_FOREIGN_SAVE ); static void vips_foreign_save_ppm_dispose( GObject *gobject ) { VipsForeignSavePpm *ppm = (VipsForeignSavePpm *) gobject; if( ppm->target ) vips_target_finish( ppm->target ); VIPS_UNREF( ppm->target ); G_OBJECT_CLASS( vips_foreign_save_ppm_parent_class )-> dispose( gobject ); } static int vips_foreign_save_ppm_line_ascii( VipsForeignSavePpm *ppm, VipsImage *image, VipsPel *p ) { const int n_elements = image->Xsize * image->Bands; int i; for( i = 0; i < n_elements; i++ ) { switch( image->BandFmt ) { case VIPS_FORMAT_UCHAR: vips_target_writef( ppm->target, "%d ", p[i] ); break; case VIPS_FORMAT_USHORT: vips_target_writef( ppm->target, "%d ", ((unsigned short *) p)[i] ); break; case VIPS_FORMAT_UINT: vips_target_writef( ppm->target, "%d ", ((unsigned int *) p)[i] ); break; default: g_assert_not_reached(); } } if( vips_target_writes( ppm->target, "\n" ) ) return( -1 ); return( 0 ); } static int vips_foreign_save_ppm_line_ascii_squash( VipsForeignSavePpm *ppm, VipsImage *image, VipsPel *p ) { int x; for( x = 0; x < image->Xsize; x++ ) vips_target_writef( ppm->target, "%d ", p[x] ? 0 : 1 ); if( vips_target_writes( ppm->target, "\n" ) ) return( -1 ); return( 0 ); } static int vips_foreign_save_ppm_line_binary( VipsForeignSavePpm *ppm, VipsImage *image, VipsPel *p ) { if( vips_target_write( ppm->target, p, VIPS_IMAGE_SIZEOF_LINE( image ) ) ) return( -1 ); return( 0 ); } static int vips_foreign_save_ppm_line_binary_squash( VipsForeignSavePpm *ppm, VipsImage *image, VipsPel *p ) { int x; int bits; int n_bits; bits = 0; n_bits = 0; for( x = 0; x < image->Xsize; x++ ) { bits = VIPS_LSHIFT_INT( bits, 1 ); n_bits += 1; bits |= p[x] ? 0 : 1; if( n_bits == 8 ) { if( VIPS_TARGET_PUTC( ppm->target, bits ) ) return( -1 ); bits = 0; n_bits = 0; } } /* Flush any remaining bits in this line. */ if( n_bits && VIPS_TARGET_PUTC( ppm->target, bits ) ) return( -1 ); return( 0 ); } static int vips_foreign_save_ppm_block( VipsRegion *region, VipsRect *area, void *a ) { VipsForeignSavePpm *ppm = (VipsForeignSavePpm *) a; VipsImage *image = region->im; int i; for( i = 0; i < area->height; i++ ) { VipsPel *p = VIPS_REGION_ADDR( region, 0, area->top + i ); if( ppm->fn( ppm, image, p ) ) return( -1 ); } return( 0 ); } static int vips_foreign_save_ppm( VipsForeignSavePpm *ppm, VipsImage *image ) { char *magic; char *date; magic = "unset"; if( image->BandFmt == VIPS_FORMAT_FLOAT && image->Bands == 3 ) magic = "PF"; else if( image->BandFmt == VIPS_FORMAT_FLOAT && image->Bands == 1 ) magic = "Pf"; else if( image->Bands == 1 && ppm->ascii && ppm->squash ) magic = "P1"; else if( image->Bands == 1 && ppm->ascii ) magic = "P2"; else if( image->Bands == 1 && !ppm->ascii && ppm->squash ) magic = "P4"; else if( image->Bands == 1 && !ppm->ascii ) magic = "P5"; else if( image->Bands == 3 && ppm->ascii ) magic = "P3"; else if( image->Bands == 3 && !ppm->ascii ) magic = "P6"; else g_assert_not_reached(); vips_target_writef( ppm->target, "%s\n", magic ); date = vips__get_iso8601(); vips_target_writef( ppm->target, "#vips2ppm - %s\n", date ); g_free( date ); vips_target_writef( ppm->target, "%d %d\n", image->Xsize, image->Ysize ); if( !ppm->squash ) switch( image->BandFmt ) { case VIPS_FORMAT_UCHAR: vips_target_writef( ppm->target, "%d\n", UCHAR_MAX ); break; case VIPS_FORMAT_USHORT: vips_target_writef( ppm->target, "%d\n", USHRT_MAX ); break; case VIPS_FORMAT_UINT: vips_target_writef( ppm->target, "%d\n", UINT_MAX ); break; case VIPS_FORMAT_FLOAT: { double scale; char buf[G_ASCII_DTOSTR_BUF_SIZE]; if( vips_image_get_double( image, "pfm-scale", &scale ) ) scale = 1; if( !vips_amiMSBfirst() ) scale *= -1; /* Need to be locale independent. */ g_ascii_dtostr( buf, G_ASCII_DTOSTR_BUF_SIZE, scale ); vips_target_writes( ppm->target, buf ); } break; default: g_assert_not_reached(); } if( ppm->squash ) ppm->fn = ppm->ascii ? vips_foreign_save_ppm_line_ascii_squash : vips_foreign_save_ppm_line_binary_squash; else ppm->fn = ppm->ascii ? vips_foreign_save_ppm_line_ascii : vips_foreign_save_ppm_line_binary; if( vips_sink_disc( image, vips_foreign_save_ppm_block, ppm ) ) return( -1 ); return( 0 ); } static int vips_foreign_save_ppm_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSavePpm *ppm = (VipsForeignSavePpm *) object; VipsImage *image; if( VIPS_OBJECT_CLASS( vips_foreign_save_ppm_parent_class )-> build( object ) ) return( -1 ); image = save->ready; if( vips_check_uintorf( "vips2ppm", image ) || vips_check_bands_1or3( "vips2ppm", image ) || vips_check_uncoded( "vips2ppm", image ) || vips_image_pio_input( image ) ) return( -1 ); if( ppm->ascii && image->BandFmt == VIPS_FORMAT_FLOAT ) { g_warning( "%s", _( "float images must be binary -- disabling ascii" ) ); ppm->ascii = FALSE; } /* One bit images must come from a 8 bit, one band source. */ if( ppm->squash && (image->Bands != 1 || image->BandFmt != VIPS_FORMAT_UCHAR) ) { g_warning( "%s", _( "can only squash 1 band uchar images -- " "disabling squash" ) ); ppm->squash = FALSE; } if( vips_foreign_save_ppm( ppm, image ) ) return( -1 ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int bandfmt_ppm[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, UI, UI, F, F, F, F }; static void vips_foreign_save_ppm_class_init( VipsForeignSavePpmClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->dispose = vips_foreign_save_ppm_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "ppmsave_base"; object_class->description = _( "save to ppm" ); object_class->build = vips_foreign_save_ppm_build; foreign_class->suffs = vips__ppm_suffs; save_class->saveable = VIPS_SAVEABLE_RGB; save_class->format_table = bandfmt_ppm; VIPS_ARG_BOOL( class, "ascii", 10, _( "ASCII" ), _( "save as ascii" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePpm, ascii ), FALSE ); VIPS_ARG_BOOL( class, "squash", 11, _( "Squash" ), _( "save as one bit" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePpm, squash ), FALSE ); } static void vips_foreign_save_ppm_init( VipsForeignSavePpm *ppm ) { } typedef struct _VipsForeignSavePpmFile { VipsForeignSavePpm parent_object; char *filename; } VipsForeignSavePpmFile; typedef VipsForeignSavePpmClass VipsForeignSavePpmFileClass; G_DEFINE_TYPE( VipsForeignSavePpmFile, vips_foreign_save_ppm_file, vips_foreign_save_ppm_get_type() ); static int vips_foreign_save_ppm_file_build( VipsObject *object ) { VipsForeignSavePpm *ppm = (VipsForeignSavePpm *) object; VipsForeignSavePpmFile *file = (VipsForeignSavePpmFile *) object; if( file->filename && !(ppm->target = vips_target_new_to_file( file->filename )) ) return( -1 ); return( VIPS_OBJECT_CLASS( vips_foreign_save_ppm_file_parent_class )-> build( object ) ); } static void vips_foreign_save_ppm_file_class_init( VipsForeignSavePpmFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "ppmsave"; object_class->description = _( "save image to ppm file" ); object_class->build = vips_foreign_save_ppm_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSavePpmFile, filename ), NULL ); } static void vips_foreign_save_ppm_file_init( VipsForeignSavePpmFile *file ) { } #endif /*HAVE_PPM*/ /** * vips_ppmsave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @ascii: save as ASCII rather than binary * * @squash: squash 8-bit images down to one bit * * Write a VIPS image to a file as PPM. It can write 1, 8, 16 or * 32 bit unsigned integer images, float images, colour or monochrome, * stored as binary or ASCII. * Integer images of more than 8 bits can only be stored in ASCII. * * When writing float (PFM) images the scale factor is set from the * "pfm-scale" metadata. * * Set @ascii to %TRUE to write as human-readable ASCII. Normally data is * written in binary. * * Set @squash to %TRUE to squash 8-bit images down to one bit. The saver does * no dithering, that's up to you. * * See also: vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_ppmsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "ppmsave", ap, in, filename ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/quantise.c000066400000000000000000000123661361153320700203100ustar00rootroot00000000000000/* quantise an image with libimagequant * * 20/6/18 * - from vipspng.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #ifdef HAVE_IMAGEQUANT #include "pforeign.h" #include /* Track during a quantisation. */ typedef struct _Quantise { VipsImage *in; VipsImage **index_out; VipsImage **palette_out; int colours; int Q; double dither; liq_attr *attr; liq_image *input_image; liq_result *quantisation_result; VipsImage *t[5]; } Quantise; static void vips__quantise_free( Quantise *quantise ) { int i; VIPS_FREEF( liq_result_destroy, quantise->quantisation_result ); VIPS_FREEF( liq_image_destroy, quantise->input_image ); VIPS_FREEF( liq_attr_destroy, quantise->attr ); for( i = 0; i < VIPS_NUMBER( quantise->t ); i++ ) VIPS_UNREF( quantise->t[i] ); VIPS_FREE( quantise ); } static Quantise * vips__quantise_new( VipsImage *in, VipsImage **index_out, VipsImage **palette_out, int colours, int Q, double dither ) { Quantise *quantise; int i; quantise = VIPS_NEW( NULL, Quantise ); quantise->in = in; quantise->index_out = index_out; quantise->palette_out = palette_out; quantise->colours = colours; quantise->Q = Q; quantise->dither = dither; for( i = 0; i < VIPS_NUMBER( quantise->t ); i++ ) quantise->t[i] = NULL; return( quantise ); } int vips__quantise_image( VipsImage *in, VipsImage **index_out, VipsImage **palette_out, int colours, int Q, double dither ) { Quantise *quantise; VipsImage *index; VipsImage *palette; const liq_palette *lp; int i; quantise = vips__quantise_new( in, index_out, palette_out, colours, Q, dither ); /* Ensure input is sRGB. */ if( in->Type != VIPS_INTERPRETATION_sRGB ) { if( vips_colourspace( in, &quantise->t[0], VIPS_INTERPRETATION_sRGB, NULL ) ) { vips__quantise_free( quantise ); return( -1 ); } in = quantise->t[0]; } /* Add alpha channel if missing. */ if( !vips_image_hasalpha( in ) ) { if( vips_bandjoin_const1( in, &quantise->t[1], 255, NULL ) ) { vips__quantise_free( quantise ); return( -1 ); } in = quantise->t[1]; } if( !(quantise->t[2] = vips_image_copy_memory( in )) ) { vips__quantise_free( quantise ); return( -1 ); } in = quantise->t[2]; quantise->attr = liq_attr_create(); liq_set_max_colors( quantise->attr, colours ); liq_set_quality( quantise->attr, 0, Q ); quantise->input_image = liq_image_create_rgba( quantise->attr, VIPS_IMAGE_ADDR( in, 0, 0 ), in->Xsize, in->Ysize, 0 ); if( liq_image_quantize( quantise->input_image, quantise->attr, &quantise->quantisation_result ) ) { vips_error( "vips2png", "%s", _( "quantisation failed" ) ); vips__quantise_free( quantise ); return( -1 ); } liq_set_dithering_level( quantise->quantisation_result, dither ); index = quantise->t[3] = vips_image_new_memory(); vips_image_init_fields( index, in->Xsize, in->Ysize, 1, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_B_W, 1.0, 1.0 ); if( vips_image_write_prepare( index ) ) { vips__quantise_free( quantise ); return( -1 ); } if( liq_write_remapped_image( quantise->quantisation_result, quantise->input_image, VIPS_IMAGE_ADDR( index, 0, 0 ), VIPS_IMAGE_N_PELS( index ) ) ) { vips_error( "vips2png", "%s", _( "quantisation failed" ) ); vips__quantise_free( quantise ); return( -1 ); } lp = liq_get_palette( quantise->quantisation_result ); palette = quantise->t[4] = vips_image_new_memory(); vips_image_init_fields( palette, lp->count, 1, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); if( vips_image_write_prepare( palette ) ) { vips__quantise_free( quantise ); return( -1 ); } for( i = 0; i < lp->count; i++ ) { unsigned char *p = VIPS_IMAGE_ADDR( palette, i, 0 ); p[0] = lp->entries[i].r; p[1] = lp->entries[i].g; p[2] = lp->entries[i].b; p[3] = lp->entries[i].a; } *index_out = index; g_object_ref( index ); *palette_out = palette; g_object_ref( palette ); vips__quantise_free( quantise ); return( 0 ); } #else /*!HAVE_IMAGEQUANT*/ int vips__quantise_image( VipsImage *in, VipsImage **index_out, VipsImage **palette_out, int colours, int Q, double dither ) { vips_error( "vips__quantise_image", "%s", _( "libvips not built with quantisation support" ) ); return( -1 ); } #endif /*HAVE_IMAGEQUANT*/ libvips-8.9.1/libvips/foreign/radiance.c000066400000000000000000000731341361153320700202250ustar00rootroot00000000000000/* Read Radiance (.hdr) files * * 3/3/09 * - write packed data, a separate im_rad2float() operation can unpack * 23/3/09 * - add radiance write * 20/12/11 * - reworked as some fns ready for new-style classes * 13/12/12 * - tag RGB rad images as scRGB * 4/11/13 * - support sequential read * 5/11/13 * - rewritten scanline encode and decode, now much faster * 23/1/14 * - put the reader globals into a struct so we can have many active * readers * 23/5/16 * - add buffer save functions * 28/2/17 * - use dbuf for buffer output * 4/4/17 * - reduce stack use to help musl * 22/7/18 * - update code from radiance ... pasted in from rad5R1 * - expand fs[] buffer to prevent out of bounds write [HongxuChen] * 23/7/18 * - fix a buffer overflow for incorrectly coded old-style RLE * [HongxuChen] * 6/11/19 * - revise for VipsConnection */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Remaining issues: + it ignores some header fields, like VIEW and DATE + it will not rotate/flip as the FORMAT string asks */ /* Sections of this reader from Greg Ward and Radiance with kind permission. The Radience copyright notice appears below. */ /* ==================================================================== * The Radiance Software License, Version 1.0 * * Copyright (c) 1990 - 2009 The Regents of the University of California, * through Lawrence Berkeley National Laboratory. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes Radiance software * (http://radsite.lbl.gov/) * developed by the Lawrence Berkeley National Laboratory * (http://www.lbl.gov/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Radiance," "Lawrence Berkeley National Laboratory" * and "The Regents of the University of California" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact radiance@radsite.lbl.gov. * * 5. Products derived from this software may not be called "Radiance", * nor may "Radiance" appear in their name, without prior written * permission of Lawrence Berkeley National Laboratory. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of Lawrence Berkeley National Laboratory. For more * information on Lawrence Berkeley National Laboratory, please see * . */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_RADIANCE #include #include #include #include #include #include #include #include #include #include #include "pforeign.h" /* Begin copy-paste from Radiance sources. * * To update: * * 1. Download and unpack latest stable radiance * 2. ray/src/common has the files we need ... copy in this order: * colour.h * resolu.h * rtio.h * fputword.c * colour.c * resolu.c * header.c * 3. trim each one down, removing extern decls * 4. make all functions static * 5. reorder to remove forward refs * 6. remove unused funcs, mostly related to HDR write */ #define RED 0 #define GRN 1 #define BLU 2 #define CIEX 0 /* or, if input is XYZ... */ #define CIEY 1 #define CIEZ 2 #define EXP 3 /* exponent same for either format */ #define COLXS 128 /* excess used for exponent */ #define WHT 3 /* used for RGBPRIMS type */ #undef uby8 #define uby8 unsigned char /* 8-bit unsigned integer */ typedef uby8 COLR[4]; /* red, green, blue (or X,Y,Z), exponent */ typedef float COLORV; typedef COLORV COLOR[3]; /* red, green, blue (or X,Y,Z) */ typedef float RGBPRIMS[4][2]; /* (x,y) chromaticities for RGBW */ typedef float (*RGBPRIMP)[2]; /* pointer to RGBPRIMS array */ typedef float COLORMAT[3][3]; /* color coordinate conversion matrix */ #define copycolr(c1,c2) (c1[0]=c2[0],c1[1]=c2[1], \ c1[2]=c2[2],c1[3]=c2[3]) #define colval(col,pri) ((col)[pri]) #define setcolor(col,r,g,b) ((col)[RED]=(r),(col)[GRN]=(g),(col)[BLU]=(b)) #define copycolor(c1,c2) ((c1)[0]=(c2)[0],(c1)[1]=(c2)[1],(c1)[2]=(c2)[2]) #define scalecolor(col,sf) ((col)[0]*=(sf),(col)[1]*=(sf),(col)[2]*=(sf)) #define addcolor(c1,c2) ((c1)[0]+=(c2)[0],(c1)[1]+=(c2)[1],(c1)[2]+=(c2)[2]) #define multcolor(c1,c2) ((c1)[0]*=(c2)[0],(c1)[1]*=(c2)[1],(c1)[2]*=(c2)[2]) #ifdef NTSC #define CIE_x_r 0.670 /* standard NTSC primaries */ #define CIE_y_r 0.330 #define CIE_x_g 0.210 #define CIE_y_g 0.710 #define CIE_x_b 0.140 #define CIE_y_b 0.080 #define CIE_x_w (1./3.) /* use true white */ #define CIE_y_w (1./3.) #else #define CIE_x_r 0.640 /* nominal CRT primaries */ #define CIE_y_r 0.330 #define CIE_x_g 0.290 #define CIE_y_g 0.600 #define CIE_x_b 0.150 #define CIE_y_b 0.060 #define CIE_x_w (1./3.) /* use true white */ #define CIE_y_w (1./3.) #endif #define STDPRIMS {{CIE_x_r,CIE_y_r},{CIE_x_g,CIE_y_g}, \ {CIE_x_b,CIE_y_b},{CIE_x_w,CIE_y_w}} #define CIE_D ( CIE_x_r*(CIE_y_g - CIE_y_b) + \ CIE_x_g*(CIE_y_b - CIE_y_r) + \ CIE_x_b*(CIE_y_r - CIE_y_g) ) #define CIE_C_rD ( (1./CIE_y_w) * \ ( CIE_x_w*(CIE_y_g - CIE_y_b) - \ CIE_y_w*(CIE_x_g - CIE_x_b) + \ CIE_x_g*CIE_y_b - CIE_x_b*CIE_y_g ) ) #define CIE_C_gD ( (1./CIE_y_w) * \ ( CIE_x_w*(CIE_y_b - CIE_y_r) - \ CIE_y_w*(CIE_x_b - CIE_x_r) - \ CIE_x_r*CIE_y_b + CIE_x_b*CIE_y_r ) ) #define CIE_C_bD ( (1./CIE_y_w) * \ ( CIE_x_w*(CIE_y_r - CIE_y_g) - \ CIE_y_w*(CIE_x_r - CIE_x_g) + \ CIE_x_r*CIE_y_g - CIE_x_g*CIE_y_r ) ) #define CIE_rf (CIE_y_r*CIE_C_rD/CIE_D) #define CIE_gf (CIE_y_g*CIE_C_gD/CIE_D) #define CIE_bf (CIE_y_b*CIE_C_bD/CIE_D) /* As of 9-94, CIE_rf=.265074126, CIE_gf=.670114631 and CIE_bf=.064811243 */ /***** The following definitions are valid for RGB colors only... *****/ #define bright(col) (CIE_rf*(col)[RED]+CIE_gf*(col)[GRN]+CIE_bf*(col)[BLU]) #define normbright(c) ( ( (long)(CIE_rf*256.+.5)*(c)[RED] + \ (long)(CIE_gf*256.+.5)*(c)[GRN] + \ (long)(CIE_bf*256.+.5)*(c)[BLU] ) >> 8 ) /* luminous efficacies over visible spectrum */ #define MAXEFFICACY 683. /* defined maximum at 550 nm */ #define WHTEFFICACY 179. /* uniform white light */ #define D65EFFICACY 203. /* standard illuminant D65 */ #define INCEFFICACY 160. /* illuminant A (incand.) */ #define SUNEFFICACY 208. /* illuminant B (solar dir.) */ #define SKYEFFICACY D65EFFICACY /* skylight (should be 110) */ #define DAYEFFICACY D65EFFICACY /* combined sky and solar */ #define luminance(col) (WHTEFFICACY * bright(col)) /***** ...end of stuff specific to RGB colors *****/ #define intens(col) ( (col)[0] > (col)[1] \ ? (col)[0] > (col)[2] ? (col)[0] : (col)[2] \ : (col)[1] > (col)[2] ? (col)[1] : (col)[2] ) #define colrval(c,p) ( (c)[EXP] ? \ ldexp((c)[p]+.5,(int)(c)[EXP]-(COLXS+8)) : \ 0. ) #define WHTCOLOR {1.0,1.0,1.0} #define BLKCOLOR {0.0,0.0,0.0} #define WHTCOLR {128,128,128,COLXS+1} #define BLKCOLR {0,0,0,0} /* picture format identifier */ #define COLRFMT "32-bit_rle_rgbe" #define CIEFMT "32-bit_rle_xyze" #define PICFMT "32-bit_rle_???e" /* matches either */ #define LPICFMT 15 /* max format id len */ /* macros for exposures */ #define EXPOSSTR "EXPOSURE=" #define LEXPOSSTR 9 #define isexpos(hl) (!strncmp(hl,EXPOSSTR,LEXPOSSTR)) #define exposval(hl) atof((hl)+LEXPOSSTR) #define fputexpos(ex,fp) fprintf(fp,"%s%e\n",EXPOSSTR,ex) /* macros for pixel aspect ratios */ #define ASPECTSTR "PIXASPECT=" #define LASPECTSTR 10 #define isaspect(hl) (!strncmp(hl,ASPECTSTR,LASPECTSTR)) #define aspectval(hl) atof((hl)+LASPECTSTR) #define fputaspect(pa,fp) fprintf(fp,"%s%f\n",ASPECTSTR,pa) /* macros for primary specifications */ #define PRIMARYSTR "PRIMARIES=" #define LPRIMARYSTR 10 #define isprims(hl) (!strncmp(hl,PRIMARYSTR,LPRIMARYSTR)) #define primsval(p,hl) (sscanf((hl)+LPRIMARYSTR, \ "%f %f %f %f %f %f %f %f", \ &(p)[RED][CIEX],&(p)[RED][CIEY], \ &(p)[GRN][CIEX],&(p)[GRN][CIEY], \ &(p)[BLU][CIEX],&(p)[BLU][CIEY], \ &(p)[WHT][CIEX],&(p)[WHT][CIEY]) == 8) #define fputprims(p,fp) fprintf(fp, \ "%s %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f\n",\ PRIMARYSTR, \ (p)[RED][CIEX],(p)[RED][CIEY], \ (p)[GRN][CIEX],(p)[GRN][CIEY], \ (p)[BLU][CIEX],(p)[BLU][CIEY], \ (p)[WHT][CIEX],(p)[WHT][CIEY]) /* macros for color correction */ #define COLCORSTR "COLORCORR=" #define LCOLCORSTR 10 #define iscolcor(hl) (!strncmp(hl,COLCORSTR,LCOLCORSTR)) #define colcorval(cc,hl) sscanf((hl)+LCOLCORSTR,"%f %f %f", \ &(cc)[RED],&(cc)[GRN],&(cc)[BLU]) #define fputcolcor(cc,fp) fprintf(fp,"%s %f %f %f\n",COLCORSTR, \ (cc)[RED],(cc)[GRN],(cc)[BLU]) /* * Conversions to and from XYZ space generally don't apply WHTEFFICACY. * If you need Y to be luminance (cd/m^2), this must be applied when * converting from radiance (watts/sr/m^2). */ extern RGBPRIMS stdprims; /* standard primary chromaticities */ extern COLORMAT rgb2xyzmat; /* RGB to XYZ conversion matrix */ extern COLORMAT xyz2rgbmat; /* XYZ to RGB conversion matrix */ extern COLOR cblack, cwhite; /* black (0,0,0) and white (1,1,1) */ #define CGAMUT_LOWER 01 #define CGAMUT_UPPER 02 #define CGAMUT (CGAMUT_LOWER|CGAMUT_UPPER) #define rgb_cie(xyz,rgb) colortrans(xyz,rgb2xyzmat,rgb) #define cpcolormat(md,ms) memcpy((void *)md,(void *)ms,sizeof(COLORMAT)) #ifdef getc_unlocked /* avoid horrendous overhead of flockfile */ #undef getc #undef putc #define getc getc_unlocked #define putc putc_unlocked #endif #define MINELEN 8 /* minimum scanline length for encoding */ #define MAXELEN 0x7fff /* maximum scanline length for encoding */ #define MINRUN 4 /* minimum run length */ /* flags for scanline ordering */ #define XDECR 1 #define YDECR 2 #define YMAJOR 4 /* standard scanline ordering */ #define PIXSTANDARD (YMAJOR|YDECR) #define PIXSTDFMT "-Y %d +X %d\n" /* structure for image dimensions */ typedef struct { int rt; /* orientation (from flags above) */ int xr, yr; /* x and y resolution */ } RESOLU; /* macros to get scanline length and number */ #define scanlen(rs) ((rs)->rt & YMAJOR ? (rs)->xr : (rs)->yr) #define numscans(rs) ((rs)->rt & YMAJOR ? (rs)->yr : (rs)->xr) /* resolution string buffer and its size */ #define RESOLU_BUFLEN 32 /* macros for reading/writing resolution struct */ #define fputsresolu(rs,fp) fputs(resolu2str(resolu_buf,rs),fp) #define fgetsresolu(rs,fp) str2resolu(rs, \ fgets(resolu_buf,RESOLU_BUFLEN,fp)) /* reading/writing of standard ordering */ #define fprtresolu(sl,ns,fp) fprintf(fp,PIXSTDFMT,ns,sl) #define fscnresolu(sl,ns,fp) (fscanf(fp,PIXSTDFMT,ns,sl)==2) /* identify header lines */ #define isheadid(s) headidval(NULL,s) #define isformat(s) formatval(NULL,s) #define isdate(s) dateval(NULL,s) #define isgmt(s) gmtval(NULL,s) #define LATLONSTR "LATLONG=" #define LLATLONSTR 8 #define islatlon(hl) (!strncmp(hl,LATLONSTR,LLATLONSTR)) #define latlonval(ll,hl) sscanf((hl)+LLATLONSTR, "%f %f", \ &(ll)[0],&(ll)[1]) #define fputlatlon(lat,lon,fp) fprintf(fp,"%s %.6f %.6f\n",LATLONSTR,lat,lon) typedef int gethfunc(char *s, void *p); /* callback to process header lines */ #ifdef getc_unlocked /* avoid horrendous overhead of flockfile */ #undef getc #undef putc #define getc getc_unlocked #define putc putc_unlocked #endif static char resolu_buf[RESOLU_BUFLEN]; /* resolution line buffer */ static char * resolu2str(buf, rp) /* convert resolution struct to line */ char *buf; register RESOLU *rp; { if (rp->rt&YMAJOR) sprintf(buf, "%cY %d %cX %d\n", rp->rt&YDECR ? '-' : '+', rp->yr, rp->rt&XDECR ? '-' : '+', rp->xr); else sprintf(buf, "%cX %d %cY %d\n", rp->rt&XDECR ? '-' : '+', rp->xr, rp->rt&YDECR ? '-' : '+', rp->yr); return(buf); } static int str2resolu(rp, buf) /* convert resolution line to struct */ register RESOLU *rp; char *buf; { register char *xndx, *yndx; register char *cp; if (buf == NULL) return(0); xndx = yndx = NULL; for (cp = buf; *cp; cp++) if (*cp == 'X') xndx = cp; else if (*cp == 'Y') yndx = cp; if (xndx == NULL || yndx == NULL) return(0); rp->rt = 0; if (xndx > yndx) rp->rt |= YMAJOR; if (xndx[-1] == '-') rp->rt |= XDECR; if (yndx[-1] == '-') rp->rt |= YDECR; if ((rp->xr = atoi(xndx+1)) <= 0) return(0); if ((rp->yr = atoi(yndx+1)) <= 0) return(0); return(1); } #define MAXLINE 2048 #define MAXFMTLEN 2048 static const char FMTSTR[] = "FORMAT="; /* format identifier */ static int formatval( /* get format value (return true if format) */ char fmt[MAXFMTLEN], const char *s ) { const char *cp = FMTSTR; char *r = fmt; while (*cp) if (*cp++ != *s++) return(0); while (isspace(*s)) s++; if (!*s) return(0); if (r == NULL) return(1); do *r++ = *s++; while (*s && !isspace(*s) && r-fmt < MAXFMTLEN-1); *r = '\0'; return(1); } static int getheader( /* get header from file */ VipsSbuf *sbuf, gethfunc *f, void *p ) { for(;;) { const char *line; if( !(line = vips_sbuf_get_line( sbuf )) ) return( -1 ); if( strcmp( line, "" ) == 0 ) /* Blank line. We've parsed the header successfully. */ break; if( f != NULL && (*f)( (char *) line, p ) < 0 ) return( -1 ); } return( 0 ); } /* Read a single scanline, encoded in the old style. */ static int scanline_read_old( VipsSbuf *sbuf, COLR *scanline, int width ) { int rshift; rshift = 0; while( width > 0 ) { if( VIPS_SBUF_REQUIRE( sbuf, 4 ) ) return( -1 ); scanline[0][RED] = VIPS_SBUF_FETCH( sbuf ); scanline[0][GRN] = VIPS_SBUF_FETCH( sbuf ); scanline[0][BLU] = VIPS_SBUF_FETCH( sbuf ); scanline[0][EXP] = VIPS_SBUF_FETCH( sbuf ); if( scanline[0][RED] == 1 && scanline[0][GRN] == 1 && scanline[0][BLU] == 1 ) { int i; for( i = scanline[0][EXP] << rshift; i > 0 && width > 0; i-- ) { copycolr( scanline[0], scanline[-1] ); scanline += 1; width -= 1; } rshift += 8; } else { scanline += 1; width -= 1; rshift = 0; } } return( 0 ); } /* Read a single encoded scanline. */ static int scanline_read( VipsSbuf *sbuf, COLR *scanline, int width ) { int i, j; /* Detect old-style scanlines. */ if( width < MINELEN || width > MAXELEN ) return( scanline_read_old( sbuf, scanline, width ) ); if( VIPS_SBUF_REQUIRE( sbuf, 4 ) ) return( -1 ); if( VIPS_SBUF_PEEK( sbuf )[0] != 2 ) return( scanline_read_old( sbuf, scanline, width ) ); scanline[0][RED] = VIPS_SBUF_FETCH( sbuf ); scanline[0][GRN] = VIPS_SBUF_FETCH( sbuf ); scanline[0][BLU] = VIPS_SBUF_FETCH( sbuf ); scanline[0][EXP] = VIPS_SBUF_FETCH( sbuf ); if( scanline[0][GRN] != 2 || scanline[0][BLU] & 128 ) return( scanline_read_old( sbuf, scanline + 1, width - 1 ) ); if( ((scanline[0][BLU] << 8) | scanline[0][EXP]) != width ) { vips_error( "rad2vips", "%s", _( "scanline length mismatch" ) ); return( -1 ); } for( i = 0; i < 4; i++ ) for( j = 0; j < width; ) { int code, len; gboolean run; if( VIPS_SBUF_REQUIRE( sbuf, 2 ) ) return( -1 ); code = VIPS_SBUF_FETCH( sbuf ); run = code > 128; len = run ? code & 127 : code; if( j + len > width ) { vips_error( "rad2vips", "%s", _( "overrun" ) ); return( -1 ); } if( run ) { int val; val = VIPS_SBUF_FETCH( sbuf ); while( len-- ) scanline[j++][i] = val; } else { if( VIPS_SBUF_REQUIRE( sbuf, len ) ) return( -1 ); while( len-- ) scanline[j++][i] = VIPS_SBUF_FETCH( sbuf ); } } return( 0 ); } /* An encoded scanline can't be larger than this. */ #define MAX_LINE (2 * MAXELEN * sizeof( COLR )) /* write an RLE scanline. Write magic header. */ static void rle_scanline_write( COLR *scanline, int width, unsigned char *buffer, int *length ) { int i, j, beg, cnt; #define PUTC( CH ) { \ buffer[(*length)++] = (CH); \ g_assert( *length <= MAX_LINE ); \ } *length = 0; PUTC( 2 ); PUTC( 2 ); PUTC( width >> 8 ); PUTC( width & 255 ); for( i = 0; i < 4; i++ ) { for( j = 0; j < width; ) { /* Not needed, but keeps gcc used-before-set warning * quiet. */ cnt = 1; /* Set beg / cnt to the start and length of the next * run longer than MINRUN. */ for( beg = j; beg < width; beg += cnt ) { for( cnt = 1; cnt < 127 && beg + cnt < width && scanline[beg + cnt][i] == scanline[beg][i]; cnt++ ) ; if( cnt >= MINRUN ) break; } /* Code pixels leading up to the run as a set of * non-runs. */ while( j < beg ) { int len = VIPS_MIN( 128, beg - j ); COLR *p = scanline + j; int k; PUTC( len ); for( k = 0; k < len; k++ ) PUTC( p[k][i] ); j += len; } /* Code the run we found, if any */ if( cnt >= MINRUN ) { PUTC( 128 + cnt ); PUTC( scanline[j][i] ); j += cnt; } } } } /* What we track during radiance file read. */ typedef struct { VipsSbuf *sbuf; VipsImage *out; char format[256]; double expos; COLOR colcor; double aspect; RGBPRIMS prims; RESOLU rs; } Read; int vips__rad_israd( VipsSource *source ) { VipsSbuf *sbuf; const char *line; int result; /* Just test that the first line is the magic string. */ sbuf = vips_sbuf_new_from_source( source ); result = (line = vips_sbuf_get_line( sbuf )) && strcmp( line, "#?RADIANCE" ) == 0; VIPS_UNREF( sbuf ); return( result ); } static void read_destroy( VipsObject *object, Read *read ) { VIPS_UNREF( read->sbuf ); } static void read_minimise_cb( VipsObject *object, Read *read ) { if( read->sbuf ) vips_source_minimise( read->sbuf->source ); } static Read * read_new( VipsSource *source, VipsImage *out ) { Read *read; int i; if( vips_source_rewind( source ) ) return( NULL ); if( !(read = VIPS_NEW( out, Read )) ) return( NULL ); read->sbuf = vips_sbuf_new_from_source( source ); read->out = out; strcpy( read->format, COLRFMT ); read->expos = 1.0; for( i = 0; i < 3; i++ ) read->colcor[i] = 1.0; read->aspect = 1.0; read->prims[0][0] = CIE_x_r; read->prims[0][1] = CIE_y_r; read->prims[1][0] = CIE_x_g; read->prims[1][1] = CIE_y_g; read->prims[2][0] = CIE_x_b; read->prims[2][1] = CIE_y_b; read->prims[3][0] = CIE_x_w; read->prims[3][1] = CIE_y_w; g_signal_connect( out, "close", G_CALLBACK( read_destroy ), read ); g_signal_connect( out, "minimise", G_CALLBACK( read_minimise_cb ), read ); return( read ); } static int rad2vips_process_line( char *line, Read *read ) { if( isformat( line ) ) { if( formatval( line, read->format ) ) return( -1 ); } else if( isexpos( line ) ) { read->expos *= exposval( line ); } else if( iscolcor( line ) ) { COLOR cc; int i; (void) colcorval( cc, line ); for( i = 0; i < 3; i++ ) read->colcor[i] *= cc[i]; } else if( isaspect( line ) ) { read->aspect *= aspectval( line ); } else if( isprims( line ) ) { (void) primsval( read->prims, line ); } return( 0 ); } static const char *prims_name[4][2] = { { "rad-prims-rx", "rad-prims-ry" }, { "rad-prims-gx", "rad-prims-gy" }, { "rad-prims-bx", "rad-prims-by" }, { "rad-prims-wx", "rad-prims-wy" } }; static const char *colcor_name[3] = { "rad-colcor-r", "rad-colcor-g", "rad-colcor-b" }; static int rad2vips_get_header( Read *read, VipsImage *out ) { VipsInterpretation interpretation; const char *line; int width; int height; int i, j; if( getheader( read->sbuf, (gethfunc *) rad2vips_process_line, read ) || !(line = vips_sbuf_get_line( read->sbuf )) || !str2resolu( &read->rs, (char *) line ) ) { vips_error( "rad2vips", "%s", _( "error reading radiance header" ) ); return( -1 ); } if( strcmp( read->format, COLRFMT ) == 0 ) interpretation = VIPS_INTERPRETATION_scRGB; else if( strcmp( read->format, CIEFMT ) == 0 ) interpretation = VIPS_INTERPRETATION_XYZ; else interpretation = VIPS_INTERPRETATION_MULTIBAND; width = scanlen( &read->rs ); height = numscans( &read->rs ); if( width <= 0 || width > VIPS_MAX_COORD || height <= 0 || height > VIPS_MAX_COORD ) { vips_error( "rad2vips", "%s", _( "image size out of bounds" ) ); return( -1 ); } vips_image_init_fields( out, width, height, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_RAD, interpretation, 1, read->aspect ); VIPS_SETSTR( out->filename, vips_connection_filename( VIPS_CONNECTION( read->sbuf->source ) ) ); vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); vips_image_set_string( out, "rad-format", read->format ); vips_image_set_double( out, "rad-expos", read->expos ); for( i = 0; i < 3; i++ ) vips_image_set_double( out, colcor_name[i], read->colcor[i] ); vips_image_set_double( out, "rad-aspect", read->aspect ); for( i = 0; i < 4; i++ ) for( j = 0; j < 2; j++ ) vips_image_set_double( out, prims_name[i][j], read->prims[i][j] ); return( 0 ); } int vips__rad_header( VipsSource *source, VipsImage *out ) { Read *read; if( !(read = read_new( source, out )) ) return( -1 ); if( rad2vips_get_header( read, read->out ) ) return( -1 ); vips_source_minimise( source ); return( 0 ); } static int rad2vips_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; Read *read = (Read *) a; int y; #ifdef DEBUG printf( "rad2vips_generate: line %d, %d rows\n", r->top, r->height ); #endif /*DEBUG*/ VIPS_GATE_START( "rad2vips_generate: work" ); for( y = 0; y < r->height; y++ ) { COLR *buf = (COLR *) VIPS_REGION_ADDR( or, 0, r->top + y ); if( scanline_read( read->sbuf, buf, or->im->Xsize ) ) { vips_error( "rad2vips", _( "read error line %d" ), r->top + y ); VIPS_GATE_STOP( "rad2vips_generate: work" ); return( -1 ); } } VIPS_GATE_STOP( "rad2vips_generate: work" ); return( 0 ); } int vips__rad_load( VipsSource *source, VipsImage *out ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 3 ); Read *read; #ifdef DEBUG printf( "rad2vips: reading \"%s\"\n", vips_connection_nick( VIPS_CONNECTION( source ) ) ); #endif /*DEBUG*/ if( !(read = read_new( source, out )) ) return( -1 ); t[0] = vips_image_new(); if( rad2vips_get_header( read, t[0] ) ) return( -1 ); if( vips_image_generate( t[0], NULL, rad2vips_generate, NULL, read, NULL ) || vips_sequential( t[0], &t[1], "tile_height", VIPS__FATSTRIP_HEIGHT, NULL ) || vips_image_write( t[1], out ) ) return( -1 ); if( vips_source_decode( source ) ) return( -1 ); return( 0 ); } /* What we track during a radiance write. */ typedef struct { VipsImage *in; VipsTarget *target; char format[256]; double expos; COLOR colcor; double aspect; RGBPRIMS prims; RESOLU rs; unsigned char *line; } Write; static void write_destroy( Write *write ) { VIPS_FREE( write->line ); VIPS_UNREF( write->target ); vips_free( write ); } static Write * write_new( VipsImage *in, VipsTarget *target ) { Write *write; int i; if( !(write = VIPS_NEW( NULL, Write )) ) return( NULL ); write->in = in; write->target = target; g_object_ref( target ); strcpy( write->format, COLRFMT ); write->expos = 1.0; for( i = 0; i < 3; i++ ) write->colcor[i] = 1.0; write->aspect = 1.0; write->prims[0][0] = CIE_x_r; write->prims[0][1] = CIE_y_r; write->prims[1][0] = CIE_x_g; write->prims[1][1] = CIE_y_g; write->prims[2][0] = CIE_x_b; write->prims[2][1] = CIE_y_b; write->prims[3][0] = CIE_x_w; write->prims[3][1] = CIE_y_w; if( !(write->line = VIPS_ARRAY( NULL, MAX_LINE, unsigned char )) ) { write_destroy( write ); return( NULL ); } return( write ); } static void vips2rad_make_header( Write *write ) { const char *str; int i, j; double d; if( vips_image_get_typeof( write->in, "rad-expos" ) ) vips_image_get_double( write->in, "rad-expos", &write->expos ); if( vips_image_get_typeof( write->in, "rad-aspect" ) ) vips_image_get_double( write->in, "rad-aspect", &write->aspect ); if( vips_image_get_typeof( write->in, "rad-format" ) && !vips_image_get_string( write->in, "rad-format", &str ) ) vips_strncpy( write->format, str, 256 ); if( write->in->Type == VIPS_INTERPRETATION_scRGB ) strcpy( write->format, COLRFMT ); if( write->in->Type == VIPS_INTERPRETATION_XYZ ) strcpy( write->format, CIEFMT ); for( i = 0; i < 3; i++ ) if( vips_image_get_typeof( write->in, colcor_name[i] ) && !vips_image_get_double( write->in, colcor_name[i], &d ) ) write->colcor[i] = d; for( i = 0; i < 4; i++ ) for( j = 0; j < 2; j++ ) { const char *name = prims_name[i][j]; if( vips_image_get_typeof( write->in, name ) && !vips_image_get_double( write->in, name, &d ) ) write->prims[i][j] = d; } /* Make y decreasing for consistency with vips. */ write->rs.rt = YDECR | YMAJOR; write->rs.xr = write->in->Xsize; write->rs.yr = write->in->Ysize; } static int vips2rad_put_header( Write *write ) { vips2rad_make_header( write ); vips_target_writes( write->target, "#?RADIANCE\n" ); vips_target_writef( write->target, "%s%s\n", FMTSTR, write->format ); vips_target_writef( write->target, "%s%e\n", EXPOSSTR, write->expos ); vips_target_writef( write->target, "%s %f %f %f\n", COLCORSTR, write->colcor[RED], write->colcor[GRN], write->colcor[BLU] ); vips_target_writef( write->target, "SOFTWARE=vips %s\n", vips_version_string() ); vips_target_writef( write->target, "%s%f\n", ASPECTSTR, write->aspect ); vips_target_writef( write->target, "%s %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f\n", PRIMARYSTR, write->prims[RED][CIEX], write->prims[RED][CIEY], write->prims[GRN][CIEX], write->prims[GRN][CIEY], write->prims[BLU][CIEX], write->prims[BLU][CIEY], write->prims[WHT][CIEX], write->prims[WHT][CIEY] ); vips_target_writes( write->target, "\n" ); vips_target_writes( write->target, resolu2str( resolu_buf, &write->rs ) ); return( 0 ); } /* Write a single scanline to buffer. */ static int scanline_write( Write *write, COLR *scanline, int width ) { if( width < MINELEN || width > MAXELEN ) { /* Too large or small for RLE ... do a simple write. */ if( vips_target_write( write->target, scanline, sizeof( COLR ) * width ) ) return( -1 ); } else { int length; /* An RLE scanline. */ rle_scanline_write( scanline, width, write->line, &length ); if( vips_target_write( write->target, write->line, length ) ) return( -1 ); } return( 0 ); } static int vips2rad_put_data_block( VipsRegion *region, VipsRect *area, void *a ) { Write *write = (Write *) a; int i; for( i = 0; i < area->height; i++ ) { VipsPel *p = VIPS_REGION_ADDR( region, 0, area->top + i ); if( scanline_write( write, (COLR *) p, area->width ) ) return( -1 ); } return( 0 ); } static int vips2rad_put_data( Write *write ) { if( vips_sink_disc( write->in, vips2rad_put_data_block, write ) ) return( -1 ); return( 0 ); } int vips__rad_save( VipsImage *in, VipsTarget *target ) { Write *write; #ifdef DEBUG printf( "vips2rad: writing to buffer\n" ); #endif /*DEBUG*/ if( vips_image_pio_input( in ) || vips_check_coding_rad( "vips2rad", in ) ) return( -1 ); if( !(write = write_new( in, target )) ) return( -1 ); if( vips2rad_put_header( write ) || vips2rad_put_data( write ) ) { write_destroy( write ); return( -1 ); } vips_target_finish( target ); write_destroy( write ); return( 0 ); } const char *vips__rad_suffs[] = { ".hdr", NULL }; #endif /*HAVE_RADIANCE*/ libvips-8.9.1/libvips/foreign/radload.c000066400000000000000000000266471361153320700200740ustar00rootroot00000000000000/* load radlab from a file * * 5/12/11 * - from tiffload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_RADIANCE typedef struct _VipsForeignLoadRad { VipsForeignLoad parent_object; /* Set by subclasses. */ VipsSource *source; } VipsForeignLoadRad; typedef VipsForeignLoadClass VipsForeignLoadRadClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadRad, vips_foreign_load_rad, VIPS_TYPE_FOREIGN_LOAD ); static void vips_foreign_load_rad_dispose( GObject *gobject ) { VipsForeignLoadRad *rad = (VipsForeignLoadRad *) gobject; VIPS_UNREF( rad->source ); G_OBJECT_CLASS( vips_foreign_load_rad_parent_class )-> dispose( gobject ); } static VipsForeignFlags vips_foreign_load_rad_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_SEQUENTIAL ); } static VipsForeignFlags vips_foreign_load_rad_get_flags_filename( const char *filename ) { return( VIPS_FOREIGN_SEQUENTIAL ); } static int vips_foreign_load_rad_header( VipsForeignLoad *load ) { VipsForeignLoadRad *rad = (VipsForeignLoadRad *) load; if( vips__rad_header( rad->source, load->out ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_rad_load( VipsForeignLoad *load ) { VipsForeignLoadRad *rad = (VipsForeignLoadRad *) load; if( vips__rad_load( rad->source, load->real ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_rad_class_init( VipsForeignLoadRadClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_rad_dispose; object_class->nickname = "radload_base"; object_class->description = _( "load rad base class" ); /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; load_class->get_flags_filename = vips_foreign_load_rad_get_flags_filename; load_class->get_flags = vips_foreign_load_rad_get_flags; load_class->header = vips_foreign_load_rad_header; load_class->load = vips_foreign_load_rad_load; } static void vips_foreign_load_rad_init( VipsForeignLoadRad *rad ) { } typedef struct _VipsForeignLoadRadSource { VipsForeignLoadRad parent_object; /* Load from a source. */ VipsSource *source; } VipsForeignLoadRadSource; typedef VipsForeignLoadRadClass VipsForeignLoadRadSourceClass; G_DEFINE_TYPE( VipsForeignLoadRadSource, vips_foreign_load_rad_source, vips_foreign_load_rad_get_type() ); static int vips_foreign_load_rad_source_build( VipsObject *object ) { VipsForeignLoadRad *rad = (VipsForeignLoadRad *) object; VipsForeignLoadRadSource *source = (VipsForeignLoadRadSource *) object; if( source->source ) { rad->source = source->source; g_object_ref( rad->source ); } if( VIPS_OBJECT_CLASS( vips_foreign_load_rad_source_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_rad_source_is_a_source( VipsSource *source ) { return( vips__rad_israd( source ) ); } static void vips_foreign_load_rad_source_class_init( VipsForeignLoadRadSourceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "radload_source"; object_class->description = _( "load rad from source" ); object_class->build = vips_foreign_load_rad_source_build; load_class->is_a_source = vips_foreign_load_rad_source_is_a_source; VIPS_ARG_OBJECT( class, "source", 1, _( "Source" ), _( "Source to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRadSource, source ), VIPS_TYPE_SOURCE ); } static void vips_foreign_load_rad_source_init( VipsForeignLoadRadSource *source ) { } typedef struct _VipsForeignLoadRadFile { VipsForeignLoadRad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadRadFile; typedef VipsForeignLoadRadClass VipsForeignLoadRadFileClass; G_DEFINE_TYPE( VipsForeignLoadRadFile, vips_foreign_load_rad_file, vips_foreign_load_rad_get_type() ); static int vips_foreign_load_rad_file_build( VipsObject *object ) { VipsForeignLoadRad *rad = (VipsForeignLoadRad *) object; VipsForeignLoadRadFile *file = (VipsForeignLoadRadFile *) object; if( file->filename && !(rad->source = vips_source_new_from_file( file->filename )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_foreign_load_rad_file_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_rad_file_is_a( const char *filename ) { VipsSource *source; int result; if( !(source = vips_source_new_from_file( filename )) ) return( -1 ); result = vips_foreign_load_rad_source_is_a_source( source ); VIPS_UNREF( source ); return( result ); } static void vips_foreign_load_rad_file_class_init( VipsForeignLoadRadFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "radload"; object_class->description = _( "load a Radiance image from a file" ); object_class->build = vips_foreign_load_rad_file_build; foreign_class->suffs = vips__rad_suffs; load_class->is_a = vips_foreign_load_rad_file_is_a; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRadFile, filename ), NULL ); } static void vips_foreign_load_rad_file_init( VipsForeignLoadRadFile *file ) { } typedef struct _VipsForeignLoadRadBuffer { VipsForeignLoadRad parent_object; /* Load from a buffer. */ VipsBlob *blob; } VipsForeignLoadRadBuffer; typedef VipsForeignLoadRadClass VipsForeignLoadRadBufferClass; G_DEFINE_TYPE( VipsForeignLoadRadBuffer, vips_foreign_load_rad_buffer, vips_foreign_load_rad_get_type() ); static int vips_foreign_load_rad_buffer_build( VipsObject *object ) { VipsForeignLoadRad *rad = (VipsForeignLoadRad *) object; VipsForeignLoadRadBuffer *buffer = (VipsForeignLoadRadBuffer *) object; if( buffer->blob && !(rad->source = vips_source_new_from_memory( VIPS_AREA( buffer->blob )->data, VIPS_AREA( buffer->blob )->length )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_foreign_load_rad_file_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_rad_buffer_is_a_buffer( const void *buf, size_t len ) { VipsSource *source; gboolean result; if( !(source = vips_source_new_from_memory( buf, len )) ) return( FALSE ); result = vips_foreign_load_rad_source_is_a_source( source ); VIPS_UNREF( source ); return( result ); } static void vips_foreign_load_rad_buffer_class_init( VipsForeignLoadRadBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "radload_buffer"; object_class->description = _( "load rad from buffer" ); object_class->build = vips_foreign_load_rad_buffer_build; load_class->is_a_buffer = vips_foreign_load_rad_buffer_is_a_buffer; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRadBuffer, blob ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_rad_buffer_init( VipsForeignLoadRadBuffer *buffer ) { } #endif /*HAVE_RADIANCE*/ /** * vips_radload: * @filename: file to load * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Read a Radiance (HDR) file into a VIPS image. * * Radiance files are read as #VIPS_CODING_RAD. They have one byte for each of * red, green and blue, and one byte of shared exponent. Some operations (like * vips_extract_area()) can work directly with images in this format, but * mmany (all the arithmetic operations, for example) will not. Unpack * #VIPS_CODING_RAD images to 3 band float with vips_rad2float() if * you want to do arithmetic on them. * * This operation ignores some header fields, like VIEW and DATE. It will not * rotate/flip as the FORMAT string asks. * * Sections of this reader from Greg Ward and Radiance with kind permission. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_radload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "radload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_radload_buffer: * @buf: (array length=len) (element-type guint8): memory area to load * @len: (type gsize): size of memory area * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Exactly as vips_radload(), but read from a HDR-formatted memory block. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_radload(). * * Returns: 0 on success, -1 on error. */ int vips_radload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "radload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } /** * vips_radload_source: * @source: source to load from * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Exactly as vips_radload(), but read from a source. * * See also: vips_radload(). * * Returns: 0 on success, -1 on error. */ int vips_radload_source( VipsSource *source, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "radload_source", ap, source, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/radsave.c000066400000000000000000000224061361153320700201000ustar00rootroot00000000000000/* save to rad * * 2/12/11 * - wrap a class around the rad writer * 23/5/16 * - split into file and buffer save classes */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_RADIANCE typedef struct _VipsForeignSaveRad { VipsForeignSave parent_object; } VipsForeignSaveRad; typedef VipsForeignSaveClass VipsForeignSaveRadClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSaveRad, vips_foreign_save_rad, VIPS_TYPE_FOREIGN_SAVE ); /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int vips_foreign_save_rad_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, F, F, F }; static void vips_foreign_save_rad_class_init( VipsForeignSaveRadClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; object_class->nickname = "radsave_base"; object_class->description = _( "save Radiance" ); foreign_class->suffs = vips__rad_suffs; save_class->saveable = VIPS_SAVEABLE_RGB; save_class->format_table = vips_foreign_save_rad_format_table; save_class->coding[VIPS_CODING_NONE] = FALSE; save_class->coding[VIPS_CODING_RAD] = TRUE; } static void vips_foreign_save_rad_init( VipsForeignSaveRad *rad ) { } typedef struct _VipsForeignSaveRadFile { VipsForeignSaveRad parent_object; char *filename; } VipsForeignSaveRadFile; typedef VipsForeignSaveRadClass VipsForeignSaveRadFileClass; G_DEFINE_TYPE( VipsForeignSaveRadFile, vips_foreign_save_rad_file, vips_foreign_save_rad_get_type() ); static int vips_foreign_save_rad_file_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveRadFile *file = (VipsForeignSaveRadFile *) object; VipsTarget *target; if( VIPS_OBJECT_CLASS( vips_foreign_save_rad_file_parent_class )-> build( object ) ) return( -1 ); if( !(target = vips_target_new_to_file( file->filename )) ) return( -1 ); if( vips__rad_save( save->ready, target ) ) { VIPS_UNREF( target ); return( -1 ); } VIPS_UNREF( target ); return( 0 ); } static void vips_foreign_save_rad_file_class_init( VipsForeignSaveRadFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "radsave"; object_class->description = _( "save image to Radiance file" ); object_class->build = vips_foreign_save_rad_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveRadFile, filename ), NULL ); } static void vips_foreign_save_rad_file_init( VipsForeignSaveRadFile *file ) { } typedef struct _VipsForeignSaveRadTarget { VipsForeignSaveRad parent_object; VipsTarget *target; } VipsForeignSaveRadTarget; typedef VipsForeignSaveRadClass VipsForeignSaveRadTargetClass; G_DEFINE_TYPE( VipsForeignSaveRadTarget, vips_foreign_save_rad_target, vips_foreign_save_rad_get_type() ); static int vips_foreign_save_rad_target_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveRadTarget *target = (VipsForeignSaveRadTarget *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_rad_target_parent_class )-> build( object ) ) return( -1 ); if( vips__rad_save( save->ready, target->target ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_rad_target_class_init( VipsForeignSaveRadTargetClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "radsave_target"; object_class->description = _( "save image to Radiance target" ); object_class->build = vips_foreign_save_rad_target_build; VIPS_ARG_OBJECT( class, "target", 1, _( "Target" ), _( "Target to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveRadTarget, target ), VIPS_TYPE_TARGET ); } static void vips_foreign_save_rad_target_init( VipsForeignSaveRadTarget *target ) { } typedef struct _VipsForeignSaveRadBuffer { VipsForeignSaveRad parent_object; VipsArea *buf; } VipsForeignSaveRadBuffer; typedef VipsForeignSaveRadClass VipsForeignSaveRadBufferClass; G_DEFINE_TYPE( VipsForeignSaveRadBuffer, vips_foreign_save_rad_buffer, vips_foreign_save_rad_get_type() ); static int vips_foreign_save_rad_buffer_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsTarget *target; VipsBlob *blob; if( VIPS_OBJECT_CLASS( vips_foreign_save_rad_buffer_parent_class )-> build( object ) ) return( -1 ); if( !(target = vips_target_new_to_memory()) ) return( -1 ); if( vips__rad_save( save->ready, target ) ) { VIPS_UNREF( target ); return( -1 ); } g_object_get( target, "blob", &blob, NULL ); g_object_set( save, "buffer", blob, NULL ); vips_area_unref( VIPS_AREA( blob ) ); VIPS_UNREF( target ); return( 0 ); } static void vips_foreign_save_rad_buffer_class_init( VipsForeignSaveRadBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "radsave_buffer"; object_class->description = _( "save image to Radiance buffer" ); object_class->build = vips_foreign_save_rad_buffer_build; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to save to" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignSaveRadBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_save_rad_buffer_init( VipsForeignSaveRadBuffer *buffer ) { } #endif /*HAVE_RADIANCE*/ /** * vips_radsave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Write a VIPS image in Radiance (HDR) format. * * Sections of this reader from Greg Ward and Radiance with kind permission. * * See also: vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_radsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "radsave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_radsave_buffer: (method) * @in: image to save * @buf: (array length=len) (element-type guint8): return output buffer here * @len: (type gsize): return output length here * @...: %NULL-terminated list of optional named arguments * * As vips_radsave(), but save to a memory buffer. * * The address of the buffer is returned in @buf, the length of the buffer in * @len. You are responsible for freeing the buffer with g_free() when you * are done with it. * * See also: vips_radsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_radsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) { va_list ap; VipsArea *area; int result; area = NULL; va_start( ap, len ); result = vips_call_split( "radsave_buffer", ap, in, &area ); va_end( ap ); if( !result && area ) { if( buf ) { *buf = area->data; area->free_fn = NULL; } if( len ) *len = area->length; vips_area_unref( area ); } return( result ); } /** * vips_radsave_target: (method) * @in: image to save * @target: save image to this target * @...: %NULL-terminated list of optional named arguments * * As vips_radsave(), but save to a target. * * See also: vips_radsave(). * * Returns: 0 on success, -1 on error. */ int vips_radsave_target( VipsImage *in, VipsTarget *target, ... ) { va_list ap; int result; va_start( ap, target ); result = vips_call_split( "radsave_target", ap, in, target ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/rawload.c000066400000000000000000000136171361153320700201100ustar00rootroot00000000000000/* load raw data from a file * * 14/12/11 * 5/8/19 * - add @format and @interpretation */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsForeignLoadRaw { VipsForeignLoad parent_object; char *filename; int width; int height; int bands; guint64 offset; VipsBandFormat format; VipsInterpretation interpretation; } VipsForeignLoadRaw; typedef VipsForeignLoadClass VipsForeignLoadRawClass; G_DEFINE_TYPE( VipsForeignLoadRaw, vips_foreign_load_raw, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_raw_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_PARTIAL ); } static VipsForeignFlags vips_foreign_load_raw_get_flags_filename( const char *filename ) { return( VIPS_FOREIGN_PARTIAL ); } static int vips_foreign_load_raw_header( VipsForeignLoad *load ) { VipsForeignLoadRaw *raw = (VipsForeignLoadRaw *) load; VipsImage *out; VipsImage *x; if( !(out = vips_image_new_from_file_raw( raw->filename, raw->width, raw->height, vips_format_sizeof_unsafe( raw->format ) * raw->bands, raw->offset )) ) return( -1 ); if( vips_copy( out, &x, "interpretation", raw->interpretation, "format", raw->format, "bands", raw->bands, NULL ) ) { g_object_unref( out ); return( -1 ); } g_object_unref( out ); out = x; /* Remove the @out that's there now. */ g_object_get( load, "out", &x, NULL ); g_object_unref( x ); g_object_unref( x ); g_object_set( load, "out", out, NULL ); return( 0 ); } static void vips_foreign_load_raw_class_init( VipsForeignLoadRawClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "rawload"; object_class->description = _( "load raw data from a file" ); load_class->get_flags = vips_foreign_load_raw_get_flags; load_class->get_flags_filename = vips_foreign_load_raw_get_flags_filename; load_class->header = vips_foreign_load_raw_header; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, filename ), NULL ); VIPS_ARG_INT( class, "width", 20, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, width ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "height", 21, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, height ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "bands", 22, _( "Bands" ), _( "Number of bands in image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, bands ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_UINT64( class, "offset", 23, _( "Size of header" ), _( "Offset in bytes from start of file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, offset ), 0, 100000000000, 0 ); VIPS_ARG_ENUM( class, "format", 24, _( "Format" ), _( "Pixel format in image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, format ), VIPS_TYPE_BAND_FORMAT, VIPS_FORMAT_UCHAR ); VIPS_ARG_ENUM( class, "interpretation", 25, _( "Interpretation" ), _( "Pixel interpretation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, interpretation ), VIPS_TYPE_INTERPRETATION, VIPS_INTERPRETATION_MULTIBAND ); } static void vips_foreign_load_raw_init( VipsForeignLoadRaw *raw ) { raw->format = VIPS_FORMAT_UCHAR; raw->interpretation = VIPS_INTERPRETATION_MULTIBAND; } /** * vips_rawload: * @filename: file to load * @out: (out): output image * @width: width of image in pixels * @height: height of image in pixels * @bands: number of image bands * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @offset: %guint64, offset in bytes from start of file * * @format: #VipsBandFormat, set image format * * @interpretation: #VipsInterpretation, set image interpretation * * This operation mmaps the file, setting up @out so that access to that * image will read from the file. * * By default, it assumes uchar pixels. Use @format to select something else. * * The image will be tagged as #VIPS_INTERPRETATION_MULTIBAND. Use * @interpretation to select something else. * * Use vips_byteswap() to reverse the byte ordering if necessary. * * See also: vips_image_new_from_file(), vips_copy(), vips_byteswap(). * * Returns: 0 on success, -1 on error. */ int vips_rawload( const char *filename, VipsImage **out, int width, int height, int bands, ... ) { va_list ap; int result; va_start( ap, bands ); result = vips_call_split( "rawload", ap, filename, out, width, height, bands ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/rawsave.c000066400000000000000000000155611361153320700201270ustar00rootroot00000000000000/* save to raw * * Write raw image data to file. Usefull when defining new formats... * * Jesper Friis * * 10/06/08 JF * - initial code based on im_vips2ppm() * * 04/07/08 JF * - replaced FILE with plain file handlers for reducing * confusion about binary vs. non-binary file modes. * 4/2/10 * - gtkdoc * 15/12/11 * - rework as a class * - added save raw to filename */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif #include #include #include typedef struct _VipsForeignSaveRaw { VipsForeignSave parent_object; char *filename; int fd; } VipsForeignSaveRaw; typedef VipsForeignSaveClass VipsForeignSaveRawClass; G_DEFINE_TYPE( VipsForeignSaveRaw, vips_foreign_save_raw, VIPS_TYPE_FOREIGN_SAVE ); static void vips_foreign_save_raw_dispose( GObject *gobject ) { VipsForeignSaveRaw *raw = (VipsForeignSaveRaw *) gobject; VIPS_FREEF( vips_tracked_close, raw->fd ); G_OBJECT_CLASS( vips_foreign_save_raw_parent_class )-> dispose( gobject ); } static int vips_foreign_save_raw_write( VipsRegion *region, VipsRect *area, void *a ) { VipsForeignSave *save = (VipsForeignSave *) a; VipsForeignSaveRaw *raw = (VipsForeignSaveRaw *) a; int i; for( i = 0; i < area->height; i++ ) { VipsPel *p = VIPS_REGION_ADDR( region, area->left, area->top + i ); if( vips__write( raw->fd, p, VIPS_IMAGE_SIZEOF_PEL( save->in ) * area->width ) ) return( -1 ); } return( 0 ); } static int vips_foreign_save_raw_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveRaw *raw = (VipsForeignSaveRaw *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_raw_parent_class )-> build( object ) ) return( -1 ); if( (raw->fd = vips__open_image_write( raw->filename, FALSE )) < 0 || vips_image_pio_input( save->in ) || vips_sink_disc( save->in, vips_foreign_save_raw_write, raw ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_raw_class_init( VipsForeignSaveRawClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->dispose = vips_foreign_save_raw_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "rawsave"; object_class->description = _( "save image to raw file" ); object_class->build = vips_foreign_save_raw_build; save_class->saveable = VIPS_SAVEABLE_ANY; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveRaw, filename ), NULL ); } static void vips_foreign_save_raw_init( VipsForeignSaveRaw *raw ) { } /** * vips_rawsave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Writes the pixels in @in to the file @filename with no header or other * metadata. * * See also: vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_rawsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "rawsave", ap, in, filename ); va_end( ap ); return( result ); } /* And with an fd rather than a filename. */ typedef struct _VipsForeignSaveRawFd { VipsForeignSave parent_object; int fd; } VipsForeignSaveRawFd; typedef VipsForeignSaveClass VipsForeignSaveRawFdClass; G_DEFINE_TYPE( VipsForeignSaveRawFd, vips_foreign_save_raw_fd, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_raw_fd_write( VipsRegion *region, VipsRect *area, void *a ) { VipsForeignSave *save = (VipsForeignSave *) a; VipsForeignSaveRawFd *fd = (VipsForeignSaveRawFd *) a; int i; for( i = 0; i < area->height; i++ ) { VipsPel *p = VIPS_REGION_ADDR( region, area->left, area->top + i ); if( vips__write( fd->fd, p, VIPS_IMAGE_SIZEOF_PEL( save->in ) * area->width ) ) return( -1 ); } return( 0 ); } static int vips_foreign_save_raw_fd_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveRawFd *fd = (VipsForeignSaveRawFd *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_raw_fd_parent_class )-> build( object ) ) return( -1 ); if( vips_image_pio_input( save->in ) || vips_sink_disc( save->in, vips_foreign_save_raw_fd_write, fd ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_raw_fd_class_init( VipsForeignSaveRawFdClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "rawsave_fd"; object_class->description = _( "write raw image to file descriptor" ); object_class->build = vips_foreign_save_raw_fd_build; save_class->saveable = VIPS_SAVEABLE_ANY; VIPS_ARG_INT( class, "fd", 1, _( "File descriptor" ), _( "File descriptor to write to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveRawFd, fd ), 0, 10000, 0 ); } static void vips_foreign_save_raw_fd_init( VipsForeignSaveRawFd *fd ) { } /** * vips_rawsave_fd: (method) * @in: image to save * @fd: file to write to * @...: %NULL-terminated list of optional named arguments * * Writes the pixels in @in to the @fd with no header or other * metadata. Handy for implementing other savers. * * See also: vips_rawsave(). * * Returns: 0 on success, -1 on error. */ int vips_rawsave_fd( VipsImage *in, int fd, ... ) { va_list ap; int result; va_start( ap, fd ); result = vips_call_split( "rawsave_fd", ap, in, fd ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/svgload.c000066400000000000000000000671611361153320700201210ustar00rootroot00000000000000/* load SVG with librsvg * * 7/2/16 * - from svgload.c * 1/8/16 felixbuenemann * - add svgz support * 18/1/17 * - invalidate operation on read error * 8/7/17 * - fix DPI mixup, thanks Fosk * 9/9/17 * - limit max tile width to 30k pixels to prevent overflow in render * 17/9/17 lovell * - handle scaling of svg files missing width and height attributes * 22/3/18 lovell * - svgload was missing is_a * 28/6/19 * - add "unlimited" * - requires us to use the gio API to librsvg * 11/9/19 * - rework as a sequential loader to reduce overcomputation */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include /* We need GIO for GInputStream. */ #if defined(HAVE_RSVG) && defined(HAVE_GIO) #include /* A GInputStream that's actually a VipsSource under the hood. This lets us * hook librsvg up to libvips using the GInputStream interface. */ #define VIPS_TYPE_G_INPUT_STREAM (vips_g_input_stream_get_type()) #define VIPS_G_INPUT_STREAM( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_G_INPUT_STREAM, VipsGInputStream )) #define VIPS_G_INPUT_STREAM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_G_INPUT_STREAM, VipsGInputStreamClass)) #define VIPS_IS_G_INPUT_STREAM( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_G_INPUT_STREAM )) #define VIPS_IS_G_INPUT_STREAM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_G_INPUT_STREAM )) #define VIPS_G_INPUT_STREAM_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_G_INPUT_STREAM, VipsGInputStreamClass )) /* GInputStream <--> VipsSource */ typedef struct _VipsGInputStream { GInputStream parent_instance; /*< private >*/ /* The VipsSource we wrap. */ VipsSource *source; } VipsGInputStream; typedef struct _VipsGInputStreamClass { GInputStreamClass parent_class; } VipsGInputStreamClass; static void vips_g_input_stream_seekable_iface_init( GSeekableIface *iface ); G_DEFINE_TYPE_WITH_CODE( VipsGInputStream, vips_g_input_stream, G_TYPE_INPUT_STREAM, G_IMPLEMENT_INTERFACE( G_TYPE_SEEKABLE, vips_g_input_stream_seekable_iface_init ) ) enum { PROP_0, PROP_STREAM }; static void vips_g_input_stream_get_property( GObject *object, guint prop_id, GValue *value, GParamSpec *pspec ) { VipsGInputStream *gstream = VIPS_G_INPUT_STREAM( object ); switch( prop_id ) { case PROP_STREAM: g_value_set_object( value, gstream->source ); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID( object, prop_id, pspec ); } } static void vips_g_input_stream_set_property( GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec ) { VipsGInputStream *gstream = VIPS_G_INPUT_STREAM( object ); switch( prop_id ) { case PROP_STREAM: gstream->source = g_value_dup_object( value ); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID( object, prop_id, pspec ); } } static void vips_g_input_stream_finalize( GObject *object ) { VipsGInputStream *gstream = VIPS_G_INPUT_STREAM( object ); VIPS_FREEF( g_object_unref, gstream->source ); G_OBJECT_CLASS( vips_g_input_stream_parent_class )->finalize( object ); } static goffset vips_g_input_stream_tell( GSeekable *seekable ) { VipsSource *source = VIPS_G_INPUT_STREAM( seekable )->source; goffset pos; VIPS_DEBUG_MSG( "vips_g_input_stream_tell:\n" ); pos = vips_source_seek( source, 0, SEEK_CUR ); if( pos == -1 ) return( 0 ); return( pos ); } static gboolean vips_g_input_stream_can_seek( GSeekable *seekable ) { VipsSource *source = VIPS_G_INPUT_STREAM( seekable )->source; VIPS_DEBUG_MSG( "vips_g_input_stream_can_seek: %d\n", !source->is_pipe ); return( !source->is_pipe ); } static int seek_type_to_lseek( GSeekType type ) { switch( type ) { default: case G_SEEK_CUR: return( SEEK_CUR ); case G_SEEK_SET: return( SEEK_SET ); case G_SEEK_END: return( SEEK_END ); } } static gboolean vips_g_input_stream_seek( GSeekable *seekable, goffset offset, GSeekType type, GCancellable *cancellable, GError **error ) { VipsSource *source = VIPS_G_INPUT_STREAM( seekable )->source; VIPS_DEBUG_MSG( "vips_g_input_stream_seek: offset = %" G_GINT64_FORMAT ", type = %d\n", offset, type ); if( vips_source_seek( source, offset, seek_type_to_lseek( type ) ) == -1 ) { g_set_error( error, G_IO_ERROR, G_IO_ERROR_FAILED, _( "Error while seeking: %s" ), vips_error_buffer() ); return( FALSE ); } return( TRUE ); } static gboolean vips_g_input_stream_can_truncate( GSeekable *seekable ) { return( FALSE ); } static gboolean vips_g_input_stream_truncate( GSeekable *seekable, goffset offset, GCancellable *cancellable, GError **error ) { g_set_error_literal( error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, _( "Cannot truncate VipsGInputStream" ) ); return( FALSE ); } static gssize vips_g_input_stream_read( GInputStream *stream, void *buffer, gsize count, GCancellable *cancellable, GError **error ) { VipsSource *source; gssize res; source = VIPS_G_INPUT_STREAM( stream )->source; VIPS_DEBUG_MSG( "vips_g_input_stream_read: count: %zd\n", count ); if( g_cancellable_set_error_if_cancelled( cancellable, error ) ) return( -1 ); if( (res = vips_source_read( source, buffer, count )) == -1 ) g_set_error( error, G_IO_ERROR, G_IO_ERROR_FAILED, _( "Error while reading: %s" ), vips_error_buffer() ); return( res ); } static gssize vips_g_input_stream_skip( GInputStream *stream, gsize count, GCancellable *cancellable, GError **error ) { VipsSource *source; gssize position; source = VIPS_G_INPUT_STREAM( stream )->source; VIPS_DEBUG_MSG( "vips_g_input_stream_skip: count: %zd\n", count ); if( g_cancellable_set_error_if_cancelled( cancellable, error ) ) return( -1 ); position = vips_source_seek( source, count, SEEK_CUR ); if( position == -1 ) { g_set_error( error, G_IO_ERROR, G_IO_ERROR_FAILED, _( "Error while seeking: %s" ), vips_error_buffer() ); return( -1 ); } return( position ); } static gboolean vips_g_input_stream_close( GInputStream *stream, GCancellable *cancellable, GError **error ) { VipsGInputStream *gstream = VIPS_G_INPUT_STREAM( stream ); vips_source_minimise( gstream->source ); return( TRUE ); } static void vips_g_input_stream_seekable_iface_init( GSeekableIface *iface ) { iface->tell = vips_g_input_stream_tell; iface->can_seek = vips_g_input_stream_can_seek; iface->seek = vips_g_input_stream_seek; iface->can_truncate = vips_g_input_stream_can_truncate; iface->truncate_fn = vips_g_input_stream_truncate; } static void vips_g_input_stream_class_init( VipsGInputStreamClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); GInputStreamClass *istream_class = G_INPUT_STREAM_CLASS( class ); gobject_class->finalize = vips_g_input_stream_finalize; gobject_class->get_property = vips_g_input_stream_get_property; gobject_class->set_property = vips_g_input_stream_set_property; istream_class->read_fn = vips_g_input_stream_read; istream_class->skip = vips_g_input_stream_skip; istream_class->close_fn = vips_g_input_stream_close; g_object_class_install_property( gobject_class, PROP_STREAM, g_param_spec_object( "input", _( "Input" ), _( "Stream to wrap" ), VIPS_TYPE_SOURCE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS ) ); } static void vips_g_input_stream_init( VipsGInputStream *gstream ) { } /** * g_input_stream_new_from_vips: * @source: stream to wrap * * Create a new #GInputStream wrapping a #VipsSource. * * Returns: a new #GInputStream */ static GInputStream * g_input_stream_new_from_vips( VipsSource *source ) { return( g_object_new( VIPS_TYPE_G_INPUT_STREAM, "input", source, NULL ) ); } #include #include /* The #endif /* A handy #define for we-will-handle-svgz. */ #if LIBRSVG_CHECK_FEATURE(SVGZ) && defined(HAVE_ZLIB) #define HANDLE_SVGZ #endif #ifdef HANDLE_SVGZ #include #endif typedef struct _VipsForeignLoadSvg { VipsForeignLoad parent_object; /* Render at this DPI. */ double dpi; /* Calculate this from DPI. At 72 DPI, we render 1:1 with cairo. */ double scale; /* Scale using cairo when SVG has no width and height attributes. */ double cairo_scale; /* Allow SVGs of any size. */ gboolean unlimited; RsvgHandle *page; } VipsForeignLoadSvg; typedef VipsForeignLoadClass VipsForeignLoadSvgClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadSvg, vips_foreign_load_svg, VIPS_TYPE_FOREIGN_LOAD ); #ifdef HANDLE_SVGZ static void * vips_foreign_load_svg_zalloc( void *opaque, unsigned items, unsigned size ) { return( g_malloc0_n( items, size ) ); } static void vips_foreign_load_svg_zfree( void *opaque, void *ptr ) { return( g_free( ptr ) ); } #endif /*HANDLE_SVGZ*/ /* This is used by both the file and buffer subclasses. */ static gboolean vips_foreign_load_svg_is_a( const void *buf, size_t len ) { char *str; #ifdef HANDLE_SVGZ /* If the buffer looks like a zip, deflate to here and then search * that for = 18 && str[0] == '\037' && str[1] == '\213' ) { z_stream zs; size_t opos; zs.zalloc = (alloc_func) vips_foreign_load_svg_zalloc; zs.zfree = (free_func) vips_foreign_load_svg_zfree; zs.opaque = Z_NULL; zs.next_in = (unsigned char *) str; zs.avail_in = len; /* There isn't really an error return from is_a_buffer() */ if( inflateInit2( &zs, 15 | 32 ) != Z_OK ) return( FALSE ); opos = 0; do { zs.avail_out = sizeof( obuf ) - opos; zs.next_out = (unsigned char *) obuf + opos; if( inflate( &zs, Z_NO_FLUSH ) < Z_OK ) { inflateEnd( &zs ); return( FALSE ); } opos = sizeof( obuf ) - zs.avail_out; } while( opos < sizeof( obuf ) && zs.avail_in > 0 ); inflateEnd( &zs ); str = obuf; len = opos; } #endif /*HANDLE_SVGZ*/ /* SVG documents are very freeform. They normally look like: * * * page ); G_OBJECT_CLASS( vips_foreign_load_svg_parent_class )-> dispose( gobject ); } static VipsForeignFlags vips_foreign_load_svg_get_flags_filename( const char *filename ) { return( VIPS_FOREIGN_SEQUENTIAL ); } static VipsForeignFlags vips_foreign_load_svg_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_SEQUENTIAL ); } static void vips_foreign_load_svg_parse( VipsForeignLoadSvg *svg, VipsImage *out ) { RsvgDimensionData dimensions; int width; int height; double scale; double res; /* Calculate dimensions at default dpi/scale. */ rsvg_handle_set_dpi( svg->page, 72.0 ); rsvg_handle_get_dimensions( svg->page, &dimensions ); width = dimensions.width; height = dimensions.height; /* Calculate dimensions at required dpi/scale. */ scale = svg->scale * svg->dpi / 72.0; if( scale != 1.0 ) { rsvg_handle_set_dpi( svg->page, svg->dpi * svg->scale ); rsvg_handle_get_dimensions( svg->page, &dimensions ); if( width == dimensions.width && height == dimensions.height ) { /* SVG without width and height always reports the same * dimensions regardless of dpi. Apply dpi/scale using * cairo instead. */ svg->cairo_scale = scale; width = VIPS_ROUND_UINT( width * scale ); height = VIPS_ROUND_UINT( height * scale ); } else { /* SVG with width and height reports correctly scaled * dimensions. */ width = dimensions.width; height = dimensions.height; } } /* We need pixels/mm for vips. */ res = svg->dpi / 25.4; vips_image_init_fields( out, width, height, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, res, res ); /* We render to a linecache, so fat strips work well. */ vips_image_pipelinev( out, VIPS_DEMAND_STYLE_FATSTRIP, NULL ); } static int vips_foreign_load_svg_header( VipsForeignLoad *load ) { VipsForeignLoadSvg *svg = (VipsForeignLoadSvg *) load; vips_foreign_load_svg_parse( svg, load->out ); return( 0 ); } static int vips_foreign_load_svg_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsForeignLoadSvg *svg = (VipsForeignLoadSvg *) a; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( svg ); VipsRect *r = &or->valid; cairo_surface_t *surface; cairo_t *cr; int y; #ifdef DEBUG printf( "vips_foreign_load_svg_generate:\n " "left = %d, top = %d, width = %d, height = %d\n", r->left, r->top, r->width, r->height ); #endif /*DEBUG*/ /* rsvg won't always paint the background. */ vips_region_black( or ); surface = cairo_image_surface_create_for_data( VIPS_REGION_ADDR( or, r->left, r->top ), CAIRO_FORMAT_ARGB32, r->width, r->height, VIPS_REGION_LSKIP( or ) ); cr = cairo_create( surface ); cairo_surface_destroy( surface ); cairo_scale( cr, svg->cairo_scale, svg->cairo_scale ); cairo_translate( cr, -r->left / svg->cairo_scale, -r->top / svg->cairo_scale ); /* rsvg is single-threaded, but we don't need to lock since we're * running inside a non-threaded tilecache. */ if( !rsvg_handle_render_cairo( svg->page, cr ) ) { vips_operation_invalidate( VIPS_OPERATION( svg ) ); vips_error( class->nickname, "%s", _( "SVG rendering failed" ) ); return( -1 ); } cairo_destroy( cr ); /* Cairo makes pre-multipled BRGA -- we must byteswap and unpremultiply. */ for( y = 0; y < r->height; y++ ) vips__cairo2rgba( (guint32 *) VIPS_REGION_ADDR( or, r->left, r->top + y ), r->width ); return( 0 ); } static int vips_foreign_load_svg_load( VipsForeignLoad *load ) { VipsForeignLoadSvg *svg = (VipsForeignLoadSvg *) load; VipsImage **t = (VipsImage **) vips_object_local_array( (VipsObject *) load, 3 ); /* librsvg starts to fail if any axis in a single render call is over * RSVG_MAX_WIDTH pixels. vips_sequential() will use a tilecache where * each tile is a strip the width of the image and (in this case) * 2000 pixels high. To be able to render images wider than * RSVG_MAX_WIDTH pixels, we need to chop these strips up. * We use a small tilecache between the seq and our gen to do this. * * Make tiles 2000 pixels high to limit overcomputation. */ t[0] = vips_image_new(); vips_foreign_load_svg_parse( svg, t[0] ); if( vips_image_generate( t[0], NULL, vips_foreign_load_svg_generate, NULL, svg, NULL ) || vips_tilecache( t[0], &t[1], "tile_width", VIPS_MIN( t[0]->Xsize, RSVG_MAX_WIDTH ), "tile_height", 2000, "max_tiles", 1, NULL ) || vips_sequential( t[1], &t[2], "tile_height", 2000, NULL ) || vips_image_write( t[2], load->real ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_svg_class_init( VipsForeignLoadSvgClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_svg_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "svgload"; object_class->description = _( "load SVG with rsvg" ); /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -5; load_class->get_flags_filename = vips_foreign_load_svg_get_flags_filename; load_class->get_flags = vips_foreign_load_svg_get_flags; load_class->load = vips_foreign_load_svg_load; VIPS_ARG_DOUBLE( class, "dpi", 21, _( "DPI" ), _( "Render at this DPI" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadSvg, dpi ), 0.001, 100000.0, 72.0 ); VIPS_ARG_DOUBLE( class, "scale", 22, _( "Scale" ), _( "Scale output by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadSvg, scale ), 0.001, 100000.0, 1.0 ); VIPS_ARG_BOOL( class, "unlimited", 23, _( "Unlimited" ), _( "Allow SVG of any size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadSvg, unlimited ), FALSE ); } static void vips_foreign_load_svg_init( VipsForeignLoadSvg *svg ) { svg->dpi = 72.0; svg->scale = 1.0; svg->cairo_scale = 1.0; } typedef struct _VipsForeignLoadSvgSource { VipsForeignLoadSvg parent_object; /* Load from a source. */ VipsSource *source; } VipsForeignLoadSvgSource; typedef VipsForeignLoadClass VipsForeignLoadSvgSourceClass; G_DEFINE_TYPE( VipsForeignLoadSvgSource, vips_foreign_load_svg_source, vips_foreign_load_svg_get_type() ); gboolean vips_foreign_load_svg_source_is_a_source( VipsSource *source ) { unsigned char *data; size_t bytes_read; if( (bytes_read = vips_source_sniff_at_most( source, &data, SVG_HEADER_SIZE )) <= 0 ) return( FALSE ); return( vips_foreign_load_svg_is_a( data, bytes_read ) ); } static int vips_foreign_load_svg_source_header( VipsForeignLoad *load ) { VipsForeignLoadSvg *svg = (VipsForeignLoadSvg *) load; VipsForeignLoadSvgSource *source = (VipsForeignLoadSvgSource *) load; RsvgHandleFlags flags = svg->unlimited ? RSVG_HANDLE_FLAG_UNLIMITED : 0; GError *error = NULL; GInputStream *gstream; if( vips_source_rewind( source->source ) ) return( -1 ); gstream = g_input_stream_new_from_vips( source->source ); if( !(svg->page = rsvg_handle_new_from_stream_sync( gstream, NULL, flags, NULL, &error )) ) { g_object_unref( gstream ); vips_g_error( &error ); return( -1 ); } g_object_unref( gstream ); return( vips_foreign_load_svg_header( load ) ); } static int vips_foreign_load_svg_source_load( VipsForeignLoad *load ) { VipsForeignLoadSvgSource *source = (VipsForeignLoadSvgSource *) load; if( vips_source_rewind( source->source ) || vips_foreign_load_svg_load( load ) || vips_source_decode( source->source ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_svg_source_class_init( VipsForeignLoadSvgSourceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "svgload_source"; object_class->description = _( "load svg from source" ); load_class->is_a_source = vips_foreign_load_svg_source_is_a_source; load_class->header = vips_foreign_load_svg_source_header; load_class->load = vips_foreign_load_svg_source_load; VIPS_ARG_OBJECT( class, "source", 1, _( "Source" ), _( "Source to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadSvgSource, source ), VIPS_TYPE_SOURCE ); } static void vips_foreign_load_svg_source_init( VipsForeignLoadSvgSource *source ) { } typedef struct _VipsForeignLoadSvgFile { VipsForeignLoadSvg parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadSvgFile; typedef VipsForeignLoadSvgClass VipsForeignLoadSvgFileClass; G_DEFINE_TYPE( VipsForeignLoadSvgFile, vips_foreign_load_svg_file, vips_foreign_load_svg_get_type() ); static gboolean vips_foreign_load_svg_file_is_a( const char *filename ) { unsigned char buf[SVG_HEADER_SIZE]; guint64 bytes; return( (bytes = vips__get_bytes( filename, buf, SVG_HEADER_SIZE )) > 0 && vips_foreign_load_svg_is_a( buf, bytes ) ); } static int vips_foreign_load_svg_file_header( VipsForeignLoad *load ) { VipsForeignLoadSvg *svg = (VipsForeignLoadSvg *) load; VipsForeignLoadSvgFile *file = (VipsForeignLoadSvgFile *) load; RsvgHandleFlags flags = svg->unlimited ? RSVG_HANDLE_FLAG_UNLIMITED : 0; GError *error = NULL; GFile *gfile; gfile = g_file_new_for_path( file->filename ); if( !(svg->page = rsvg_handle_new_from_gfile_sync( gfile, flags, NULL, &error )) ) { g_object_unref( gfile ); vips_g_error( &error ); return( -1 ); } g_object_unref( gfile ); VIPS_SETSTR( load->out->filename, file->filename ); return( vips_foreign_load_svg_header( load ) ); } static const char *vips_foreign_svg_suffs[] = { ".svg", /* librsvg supports svgz directly, no need to check for zlib here. */ #if LIBRSVG_CHECK_FEATURE(SVGZ) ".svgz", ".svg.gz", #endif NULL }; static void vips_foreign_load_svg_file_class_init( VipsForeignLoadSvgFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "svgload"; foreign_class->suffs = vips_foreign_svg_suffs; load_class->is_a = vips_foreign_load_svg_file_is_a; load_class->header = vips_foreign_load_svg_file_header; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadSvgFile, filename ), NULL ); } static void vips_foreign_load_svg_file_init( VipsForeignLoadSvgFile *file ) { } typedef struct _VipsForeignLoadSvgBuffer { VipsForeignLoadSvg parent_object; /* Load from a buffer. */ VipsArea *buf; } VipsForeignLoadSvgBuffer; typedef VipsForeignLoadSvgClass VipsForeignLoadSvgBufferClass; G_DEFINE_TYPE( VipsForeignLoadSvgBuffer, vips_foreign_load_svg_buffer, vips_foreign_load_svg_get_type() ); static int vips_foreign_load_svg_buffer_header( VipsForeignLoad *load ) { VipsForeignLoadSvg *svg = (VipsForeignLoadSvg *) load; VipsForeignLoadSvgBuffer *buffer = (VipsForeignLoadSvgBuffer *) load; RsvgHandleFlags flags = svg->unlimited ? RSVG_HANDLE_FLAG_UNLIMITED : 0; GError *error = NULL; GInputStream *gstream; gstream = g_memory_input_stream_new_from_data( buffer->buf->data, buffer->buf->length, NULL ); if( !(svg->page = rsvg_handle_new_from_stream_sync( gstream, NULL, flags, NULL, &error )) ) { g_object_unref( gstream ); vips_g_error( &error ); return( -1 ); } g_object_unref( gstream ); return( vips_foreign_load_svg_header( load ) ); } static void vips_foreign_load_svg_buffer_class_init( VipsForeignLoadSvgBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "svgload_buffer"; load_class->is_a_buffer = vips_foreign_load_svg_is_a; load_class->header = vips_foreign_load_svg_buffer_header; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadSvgBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_svg_buffer_init( VipsForeignLoadSvgBuffer *buffer ) { } #endif /*HAVE_RSVG && HAVE_GIO*/ /** * vips_svgload: * @filename: file to load * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @dpi: %gdouble, render at this DPI * * @scale: %gdouble, scale render by this factor * * @unlimited: %gboolean, allow SVGs of any size * * Render a SVG file into a VIPS image. Rendering uses the librsvg library * and should be fast. * * Use @dpi to set the rendering resolution. The default is 72. You can also * scale the rendering by @scale. * * This function only reads the image header and does not render any pixel * data. Rendering occurs when pixels are accessed. * * SVGs larger than 10MB are normally blocked for security. Set @unlimited to * allow SVGs of any size. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_svgload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "svgload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_svgload_buffer: * @buf: (array length=len) (element-type guint8): memory area to load * @len: (type gsize): size of memory area * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @dpi: %gdouble, render at this DPI * * @scale: %gdouble, scale render by this factor * * @unlimited: %gboolean, allow SVGs of any size * * Read a SVG-formatted memory block into a VIPS image. Exactly as * vips_svgload(), but read from a memory buffer. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_svgload(). * * Returns: 0 on success, -1 on error. */ int vips_svgload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "svgload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } /** * vips_svgload_source: * @source: source to load from * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Exactly as vips_svgload(), but read from a source. * * See also: vips_svgload(). * * Returns: 0 on success, -1 on error. */ int vips_svgload_source( VipsSource *source, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "svgload_source", ap, source, out ); va_end( ap ); return( result ); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libvips-8.9.1/libvips/foreign/tiff.c����������������������������������������������������������������0000664�0000000�0000000�00000017202�13611533207�0017401�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Some shared TIFF utilities. * * 14/10/16 * - from vips2tiff.c * * 26/8/17 * - add openout_read, to help tiffsave_buffer for pyramids */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_TIFF #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include "tiff.h" /* Handle TIFF errors here. Shared with vips2tiff.c. These can be called from * more than one thread. */ static void vips__thandler_error( const char *module, const char *fmt, va_list ap ) { vips_verror( module, fmt, ap ); } /* It'd be nice to be able to support the @fail option for the tiff loader, but * there's no easy way to do this, since libtiff has a global warning handler. */ static void vips__thandler_warning( const char *module, const char *fmt, va_list ap ) { g_logv( G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, fmt, ap ); } /* Called during library init. * * libtiff error and warning handlers may be called from other threads * running in other libs. Other libs may install error handlers and capture * messages caused by us. */ void vips__tiff_init( void ) { TIFFSetErrorHandler( vips__thandler_error ); TIFFSetWarningHandler( vips__thandler_warning ); } /* Open TIFF for output. */ TIFF * vips__tiff_openout( const char *path, gboolean bigtiff ) { TIFF *tif; const char *mode = bigtiff ? "w8" : "w"; #ifdef DEBUG printf( "vips__tiff_openout( \"%s\", \"%s\" )\n", path, mode ); #endif /*DEBUG*/ /* Need the utf-16 version on Windows. */ #ifdef OS_WIN32 { GError *error = NULL; wchar_t *path16; if( !(path16 = (wchar_t *) g_utf8_to_utf16( path, -1, NULL, NULL, &error )) ) { vips_g_error( &error ); return( NULL ); } tif = TIFFOpenW( path16, mode ); g_free( path16 ); } #else /*!OS_WIN32*/ tif = TIFFOpen( path, mode ); #endif /*OS_WIN32*/ if( !tif ) { vips_error( "tiff", _( "unable to open \"%s\" for output" ), path ); return( NULL ); } return( tif ); } /* TIFF input from a vips source. */ static tsize_t openin_source_read( thandle_t st, tdata_t data, tsize_t size ) { VipsSource *source = VIPS_SOURCE( st ); return( vips_source_read( source, data, size ) ); } static tsize_t openin_source_write( thandle_t st, tdata_t buffer, tsize_t size ) { g_assert_not_reached(); return( 0 ); } static toff_t openin_source_seek( thandle_t st, toff_t position, int whence ) { VipsSource *source = VIPS_SOURCE( st ); /* toff_t is usually uint64, with -1 cast to uint64 to indicate error. */ return( (toff_t) vips_source_seek( source, position, whence ) ); } static int openin_source_close( thandle_t st ) { VipsSource *source = VIPS_SOURCE( st ); VIPS_UNREF( source ); return( 0 ); } static toff_t openin_source_length( thandle_t st ) { VipsSource *source = VIPS_SOURCE( st ); /* libtiff will use this to get file size if tags like StripByteCounts * are missing. * * toff_t is usually uint64, with -1 cast to uint64 to indicate error. */ return( (toff_t) vips_source_length( source ) ); } static int openin_source_map( thandle_t st, tdata_t *start, toff_t *len ) { g_assert_not_reached(); return( 0 ); } static void openin_source_unmap( thandle_t st, tdata_t start, toff_t len ) { g_assert_not_reached(); return; } TIFF * vips__tiff_openin_source( VipsSource *source ) { TIFF *tiff; #ifdef DEBUG printf( "vips__tiff_openin_source:\n" ); #endif /*DEBUG*/ if( vips_source_rewind( source ) ) return( NULL ); if( !(tiff = TIFFClientOpen( "source input", "rm", (thandle_t) source, openin_source_read, openin_source_write, openin_source_seek, openin_source_close, openin_source_length, openin_source_map, openin_source_unmap )) ) { vips_error( "vips__tiff_openin_source", "%s", _( "unable to open source for input" ) ); return( NULL ); } /* Unreffed on close(), see above. */ g_object_ref( source ); return( tiff ); } /* TIFF output to a memory buffer. */ typedef struct _VipsTiffOpenoutBuffer { VipsDbuf dbuf; /* On close, consolidate and write the output here. */ void **out_data; size_t *out_length; } VipsTiffOpenoutBuffer; static tsize_t openout_buffer_read( thandle_t st, tdata_t data, tsize_t size ) { VipsTiffOpenoutBuffer *buffer = (VipsTiffOpenoutBuffer *) st; #ifdef DEBUG printf( "openout_buffer_read: %zd bytes\n", size ); #endif /*DEBUG*/ return( vips_dbuf_read( &buffer->dbuf, data, size ) ); } static tsize_t openout_buffer_write( thandle_t st, tdata_t data, tsize_t size ) { VipsTiffOpenoutBuffer *buffer = (VipsTiffOpenoutBuffer *) st; #ifdef DEBUG printf( "openout_buffer_write: %zd bytes\n", size ); #endif /*DEBUG*/ vips_dbuf_write( &buffer->dbuf, data, size ); return( size ); } static int openout_buffer_close( thandle_t st ) { VipsTiffOpenoutBuffer *buffer = (VipsTiffOpenoutBuffer *) st; *(buffer->out_data) = vips_dbuf_steal( &buffer->dbuf, buffer->out_length); return( 0 ); } static toff_t openout_buffer_seek( thandle_t st, toff_t position, int whence ) { VipsTiffOpenoutBuffer *buffer = (VipsTiffOpenoutBuffer *) st; #ifdef DEBUG printf( "openout_buffer_seek: position %zd, whence %d ", position, whence ); switch( whence ) { case SEEK_SET: printf( "set" ); break; case SEEK_END: printf( "end" ); break; case SEEK_CUR: printf( "cur" ); break; default: printf( "unknown" ); break; } printf( "\n" ); #endif /*DEBUG*/ vips_dbuf_seek( &buffer->dbuf, position, whence ); return( vips_dbuf_tell( &buffer->dbuf ) ); } static toff_t openout_buffer_length( thandle_t st ) { g_assert_not_reached(); return( 0 ); } static int openout_buffer_map( thandle_t st, tdata_t *start, toff_t *len ) { g_assert_not_reached(); return( 0 ); } static void openout_buffer_unmap( thandle_t st, tdata_t start, toff_t len ) { g_assert_not_reached(); return; } /* On TIFFClose(), @data and @length are set to point to the output buffer. */ TIFF * vips__tiff_openout_buffer( VipsImage *image, gboolean bigtiff, void **out_data, size_t *out_length ) { const char *mode = bigtiff ? "w8" : "w"; VipsTiffOpenoutBuffer *buffer; TIFF *tiff; #ifdef DEBUG printf( "vips__tiff_openout_buffer:\n" ); #endif /*DEBUG*/ g_assert( out_data ); g_assert( out_length ); buffer = VIPS_NEW( image, VipsTiffOpenoutBuffer ); vips_dbuf_init( &buffer->dbuf ); buffer->out_data = out_data; buffer->out_length = out_length; if( !(tiff = TIFFClientOpen( "memory output", mode, (thandle_t) buffer, openout_buffer_read, openout_buffer_write, openout_buffer_seek, openout_buffer_close, openout_buffer_length, openout_buffer_map, openout_buffer_unmap )) ) { vips_error( "vips__tiff_openout_buffer", "%s", _( "unable to open memory buffer for output" ) ); return( NULL ); } return( tiff ); } #endif /*HAVE_TIFF*/ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libvips-8.9.1/libvips/foreign/tiff.h����������������������������������������������������������������0000664�0000000�0000000�00000002512�13611533207�0017404�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* common defs for tiff read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_TIFF_H #define VIPS_TIFF_H #include #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ TIFF *vips__tiff_openin_source( VipsSource *source ); TIFF *vips__tiff_openout( const char *path, gboolean bigtiff ); TIFF *vips__tiff_openout_buffer( VipsImage *image, gboolean bigtiff, void **out_data, size_t *out_length ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_TIFF_H*/ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libvips-8.9.1/libvips/foreign/tiff2vips.c�����������������������������������������������������������0000664�0000000�0000000�00000172055�13611533207�0020375�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* TIFF parts: Copyright (c) 1988, 1990 by Sam Leffler. * All rights reserved. * * This file is provided for unrestricted use provided that this * legend is included on all tape media and as a part of the * software program in whole or part. Users may copy, modify or * distribute this file at will. * ----------------------------- * Modifications for VIPS: Kirk Martinez 1994 * 22/11/94 JC * - more general * - memory leaks fixed * 20/3/95 JC * - TIFF error handler added * - read errors detected correctly * * Modified to handle LAB in tiff format. * It convert LAB-tiff format to VIPS_INTERPRETATION_LABQ in vips format. * Copyright July-1995 Ahmed Abbood. * * * 19/9/95 JC * - now calls TIFFClose ... stupid * 25/1/96 JC * - typo on MINISBLACK ... * 7/4/97 JC * - completely redone for TIFF 6 * - now full baseline TIFF 6 reader, and does CIELAB as well * 11/4/97 JC * - added partial read for tiled images * 23/4/97 JC * - extra subsample parameter * - im_istiffpyramid() added * 5/12/97 JC * - if loading YCbCr, convert to VIPS_CODING_LABQ * 1/5/98 JC * - now reads 16-bit greyscale and RGB * 26/10/98 JC * - now used "rb" mode on systems that need binary open * 12/11/98 JC * - no sub-sampling if sub == 1 * 26/2/99 JC * - ooops, else missing for subsample stuff above * 2/10/99 JC * - tiled 16-bit greyscale read was broken * - added mutex for TIFFReadTile() calls * 11/5/00 JC * - removed TIFFmalloc/TIFFfree usage * 23/4/01 JC * - HAVE_TIFF turns on TIFF goodness * 24/5/01 JC * - im_tiff2vips_header() added * 11/7/01 JC * - subsample now in input filename * - ... and it's a page number (from 0) instead * 21/8/02 JC * - now reads CMYK * - hmm, dpi -> ppm conversion was wrong! * 10/9/02 JC * - oops, handle TIFF errors better * 2/12/02 JC * - reads 8-bit RGBA * 12/12/02 JC * - reads 16-bit LAB * 13/2/03 JC * - pixels/cm res read was wrong * 17/11/03 Andrey Kiselev * - read 32-bit float greyscale and rgb * 5/4/04 * - better handling of edge tiles (thanks Ruven) * 16/4/04 * - cleanup * - added broken tile read mode * 18/5/04 Andrey Kiselev * - better no resolution diagnostic * 26/5/04 * - reads 16 bit RGBA * 28/7/04 * - arrg, 16bit RGB was broken, thanks haida * 26/11/04 * - add a TIFF warning handler, stops occasional libMagick exceptions * 9/3/05 * - load 32-bit float LAB * 8/4/05 * - onebit read no longer reads one byte too many on multiple of 8 wide * images * 22/6/05 * - 16 bit LAB read was broken * 9/9/05 * - read any ICCPROFILE tag * 8/5/06 * - set RGB16 and GREY16 Type * 21/5/06 * - use external im_tile_cache() operation for great code shrinkage * - less RAM usage too, esp. with >1 CPU * - should be slightly faster * - removed 'broken' read option * 18/7/07 Andrey Kiselev * - remove "b" option on TIFFOpen() * 9/4/08 * - set VIPS_META_RESOLUTION_UNIT * 17/4/08 * - allow CMYKA (thanks Doron) * 17/7/08 * - convert YCbCr to RGB on read (thanks Ole) * 15/8/08 * - reorganise for image format system * 20/12/08 * - dont read with mmap: no performance advantage with libtiff, chews up * VM wastefully * 13/1/09 * - read strip-wise, not scanline-wise ... works with more compression / * subsampling schemes (esp. subsampled YCbCr), and it's a bit quicker * 4/2/10 * - gtkdoc * 12/12/10 * - oops, we can just memcpy() now heh * - avoid unpacking via buffers if we can: either read a tile directly * into the output region, or writeline directly from the tiff buffer * 4/4/11 * - argh int/uint mixup for rows_per_strip, thanks Bubba * 21/4/11 * - palette read can do 1,2,4,8 bits per sample * - palette read can do mono images * 5/12/11 * - make into a simple function call ready to be wrapped as a new-style * VipsForeign class * 18/2/12 * - switch to sequential read * - remove the lock ... tilecache does this for us * 3/6/12 * - always offer THINSTRIP ... later stages can ask for something more * relaxed if they wish * 7/6/12 * - clip rows_per_strip down to image height to avoid overflows for huge * values (thanks Nicolas) * - better error msg for not PLANARCONFIG_CONTIG images * 16/9/13 * - support alpha for 8, 16 and 32-bit greyscale images, thanks Robert * 17/9/13 * - support separate planes for strip read * - big cleanup * - support for many more formats, eg. 32-bit int etc. * 11/4/14 * - support 16 bits per sample palette images * - palette images can have an alpha * 22/4/14 * - add read from buffer * 30/4/14 * - 1/2/4 bit palette images can have alpha * 27/10/14 Lovell * - better istiff detector spots bigtiff * 3/12/14 * - read any XMP metadata * 19/1/15 * - try to handle 8-bit colormaps * 26/2/15 * - close the read down early for a header read ... this saves an * fd during file read, handy for large numbers of input images * 29/9/15 * - load IPTC metadata * - load photoshop metadata * 21/12/15 * - load TIFFTAG_IMAGEDESCRIPTION * 11/4/16 * - non-int RGB images are tagged as scRGB ... matches photoshop * convention * 26/5/16 * - add autorotate support * 17/11/16 * - add multi-page read * 17/1/17 * - invalidate operation on read error * 27/1/17 * - if rows_per_strip is large, read with scanline API instead * 9/5/17 * - remove missing res warning * 19/5/17 * - page > 0 could break edge tiles or strips * 26/4/18 * - add n-pages metadata item * 21/7/18 * - check for non-byte-multiple bits_per_sample [HongxuChen] * 16/8/18 * - shut down the input file as soon as we can [kleisauke] * 28/3/19 omira-sch * - better buffer sizing * - ban chroma-subsampled, non-jpg compressed images * 7/6/19 * - istiff reads the first directory rather than just testing the magic * number, so it ignores more TIFF-like, but not TIFF images * 17/10/19 * - switch to source input * 18/11/19 * - support ASSOCALPHA in any alpha band */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_TIFF #include #include #include #include #include #include #include "pforeign.h" #include "tiff.h" /* What we read from the tiff dir to set our read strategy. For multipage * read, we need to read and compare lots of these, so it needs to be broken * out as a separate thing. */ typedef struct _RtiffHeader { uint32 width; uint32 height; int samples_per_pixel; int bits_per_sample; int photometric_interpretation; int inkset; int sample_format; gboolean separate; int orientation; /* If there's a premultiplied alpha, the band we need to * unpremultiply with. -1 for no unpremultiplication. */ int alpha_band; uint16 compression; /* Result of TIFFIsTiled(). */ gboolean tiled; /* Fields for tiled images, as returned by libtiff. */ uint32 tile_width; uint32 tile_height; tsize_t tile_size; tsize_t tile_row_size; /* Fields for strip images, as returned by libtiff. */ uint32 rows_per_strip; tsize_t strip_size; tsize_t scanline_size; int number_of_strips; /* If read_scanlinewise is TRUE, the strips are too large to read in a * single lump and we will use the scanline API. */ gboolean read_scanlinewise; /* Strip read geometry. Number of lines we read at once (whole strip * or 1) and size of the buffer we read to (a scanline, or a strip in * size). */ uint32 read_height; tsize_t read_size; } RtiffHeader; /* Scanline-type process function. */ struct _Rtiff; typedef void (*scanline_process_fn)( struct _Rtiff *, VipsPel *q, VipsPel *p, int n, void *client ); /* Stuff we track during a read. */ typedef struct _Rtiff { /* Parameters. */ VipsSource *source; VipsImage *out; int page; int n; gboolean autorotate; /* The TIFF we read. */ TIFF *tiff; /* Number of pages (directories) in image. */ int n_pages; /* The current page we have set. */ int current_page; /* Process for this image type. */ scanline_process_fn sfn; void *client; /* Set this is the processfn is just doing a memcpy. */ gboolean memcpy; /* Geometry as read from the TIFF header. This is read for the first * page, and equal for all other pages. */ RtiffHeader header; /* Hold a single strip or tile, possibly just an image plane. */ tdata_t plane_buf; /* Hold a plane-assembled strip or tile ... a set of samples_per_pixel * strips or tiles interleaved. */ tdata_t contig_buf; /* The Y we are reading at. Used to verify strip read is sequential. */ int y_pos; } Rtiff; /* Test for field exists. */ static int tfexists( TIFF *tif, ttag_t tag ) { uint32 a, b; if( TIFFGetField( tif, tag, &a, &b ) ) return( 1 ); else return( 0 ); } /* Get a uint32 field. */ static int tfget32( TIFF *tif, ttag_t tag, uint32 *out ) { uint32 fld; if( !TIFFGetFieldDefaulted( tif, tag, &fld ) ) { vips_error( "tiff2vips", _( "required field %d missing" ), tag ); return( 0 ); } *out = fld; return( 1 ); } /* Get a uint16 field. */ static int tfget16( TIFF *tif, ttag_t tag, int *out ) { uint16 fld; if( !TIFFGetFieldDefaulted( tif, tag, &fld ) ) { vips_error( "tiff2vips", _( "required field %d missing" ), tag ); return( 0 ); } *out = fld; return( 1 ); } static int get_resolution( TIFF *tiff, VipsImage *out ) { float x, y; int ru; if( TIFFGetFieldDefaulted( tiff, TIFFTAG_XRESOLUTION, &x ) && TIFFGetFieldDefaulted( tiff, TIFFTAG_YRESOLUTION, &y ) && tfget16( tiff, TIFFTAG_RESOLUTIONUNIT, &ru ) ) { switch( ru ) { case RESUNIT_NONE: break; case RESUNIT_INCH: /* In pixels-per-inch ... convert to mm. */ x /= 10.0 * 2.54; y /= 10.0 * 2.54; vips_image_set_string( out, VIPS_META_RESOLUTION_UNIT, "in" ); break; case RESUNIT_CENTIMETER: /* In pixels-per-centimetre ... convert to mm. */ x /= 10.0; y /= 10.0; vips_image_set_string( out, VIPS_META_RESOLUTION_UNIT, "cm" ); break; default: vips_error( "tiff2vips", "%s", _( "unknown resolution unit" ) ); return( -1 ); } } else { /* We used to warn about missing res data, but it happens so * often and is so harmless, why bother. */ x = 1.0; y = 1.0; } out->Xres = x; out->Yres = y; return( 0 ); } static int get_sample_format( TIFF *tiff ) { int sample_format; uint16 v; sample_format = SAMPLEFORMAT_INT; if( TIFFGetFieldDefaulted( tiff, TIFFTAG_SAMPLEFORMAT, &v ) ) { /* Some images have this set to void, bizarre. */ if( v == SAMPLEFORMAT_VOID ) v = SAMPLEFORMAT_UINT; sample_format = v; } return( sample_format ); } static int get_orientation( TIFF *tiff ) { int orientation; uint16 v; orientation = ORIENTATION_TOPLEFT; if( TIFFGetFieldDefaulted( tiff, TIFFTAG_ORIENTATION, &v ) ) /* Can have mad values. */ orientation = VIPS_CLIP( 1, v, 8 ); return( orientation ); } /* Can be called many times. */ static void rtiff_free( Rtiff *rtiff ) { VIPS_FREEF( TIFFClose, rtiff->tiff ); VIPS_UNREF( rtiff->source ); } static void rtiff_close_cb( VipsObject *object, Rtiff *rtiff ) { rtiff_free( rtiff ); } static void rtiff_minimise_cb( VipsImage *image, Rtiff *rtiff ) { /* We must not minimised tiled images. These can be read from many * threads, and this minimise handler is not inside the lock that our * tilecache is using to guarantee single-threaded access to our * source. */ if( !rtiff->header.tiled && rtiff->source ) vips_source_minimise( rtiff->source ); } static Rtiff * rtiff_new( VipsSource *source, VipsImage *out, int page, int n, gboolean autorotate ) { Rtiff *rtiff; if( !(rtiff = VIPS_NEW( out, Rtiff )) ) return( NULL ); g_object_ref( source ); rtiff->source = source; rtiff->out = out; rtiff->page = page; rtiff->n = n; rtiff->autorotate = autorotate; rtiff->tiff = NULL; rtiff->n_pages = 0; rtiff->current_page = -1; rtiff->sfn = NULL; rtiff->client = NULL; rtiff->memcpy = FALSE; rtiff->plane_buf = NULL; rtiff->contig_buf = NULL; rtiff->y_pos = 0; g_signal_connect( out, "close", G_CALLBACK( rtiff_close_cb ), rtiff ); g_signal_connect( out, "minimise", G_CALLBACK( rtiff_minimise_cb ), rtiff ); if( rtiff->page < 0 || rtiff->page > 1000000 ) { vips_error( "tiff2vips", _( "bad page number %d" ), rtiff->page ); return( NULL ); } /* We allow n == -1, meaning all pages. It gets swapped for a real n * value when we open the TIFF. */ if( rtiff->n != -1 && (rtiff->n < 1 || rtiff->n > 1000000) ) { vips_error( "tiff2vips", _( "bad number of pages %d" ), rtiff->n ); return( NULL ); } if( !(rtiff->tiff = vips__tiff_openin_source( source )) ) return( NULL ); return( rtiff ); } static int rtiff_strip_read( Rtiff *rtiff, int strip, tdata_t buf ) { tsize_t length; #ifdef DEBUG_VERBOSE printf( "rtiff_strip_read: reading strip %d\n", strip ); #endif /*DEBUG_VERBOSE*/ if( rtiff->header.read_scanlinewise ) length = TIFFReadScanline( rtiff->tiff, buf, strip, (tsize_t) -1 ); else length = TIFFReadEncodedStrip( rtiff->tiff, strip, buf, (tsize_t) -1 ); if( length == -1 ) { vips_foreign_load_invalidate( rtiff->out ); vips_error( "tiff2vips", "%s", _( "read error" ) ); return( -1 ); } return( 0 ); } static int rtiff_set_page( Rtiff *rtiff, int page ) { if( rtiff->current_page != page ) { #ifdef DEBUG printf( "rtiff_set_page: selecting page %d\n", page ); #endif /*DEBUG*/ if( !TIFFSetDirectory( rtiff->tiff, page ) ) { vips_error( "tiff2vips", _( "TIFF does not contain page %d" ), page ); return( -1 ); } rtiff->current_page = page; } return( 0 ); } static int rtiff_n_pages( Rtiff *rtiff ) { int n; (void) TIFFSetDirectory( rtiff->tiff, 0 ); for( n = 1; TIFFReadDirectory( rtiff->tiff ); n++ ) ; (void) TIFFSetDirectory( rtiff->tiff, rtiff->current_page ); #ifdef DEBUG printf( "rtiff_n_pages: found %d pages\n", n ); #endif /*DEBUG*/ return( n ); } static int rtiff_check_samples( Rtiff *rtiff, int samples_per_pixel ) { if( rtiff->header.samples_per_pixel != samples_per_pixel ) { vips_error( "tiff2vips", _( "not %d bands" ), samples_per_pixel ); return( -1 ); } return( 0 ); } /* Check n and n+1 so we can have an alpha. */ static int rtiff_check_min_samples( Rtiff *rtiff, int samples_per_pixel ) { if( rtiff->header.samples_per_pixel < samples_per_pixel ) { vips_error( "tiff2vips", _( "not at least %d samples per pixel" ), samples_per_pixel ); return( -1 ); } return( 0 ); } /* Only allow samples which are whole bytes in size. */ static int rtiff_non_fractional( Rtiff *rtiff ) { if( rtiff->header.bits_per_sample % 8 != 0 || rtiff->header.bits_per_sample == 0 ) { vips_error( "tiff2vips", "%s", _( "samples_per_pixel " "not a whole number of bytes" ) ); return( -1 ); } return( 0 ); } static int rtiff_check_interpretation( Rtiff *rtiff, int photometric_interpretation ) { if( rtiff->header.photometric_interpretation != photometric_interpretation ) { vips_error( "tiff2vips", _( "not photometric interpretation %d" ), photometric_interpretation ); return( -1 ); } return( 0 ); } static int rtiff_check_bits( Rtiff *rtiff, int bits_per_sample ) { if( rtiff->header.bits_per_sample != bits_per_sample ) { vips_error( "tiff2vips", _( "not %d bits per sample" ), bits_per_sample ); return( -1 ); } return( 0 ); } static int rtiff_check_bits_palette( Rtiff *rtiff ) { if( rtiff->header.bits_per_sample != 16 && rtiff->header.bits_per_sample != 8 && rtiff->header.bits_per_sample != 4 && rtiff->header.bits_per_sample != 2 && rtiff->header.bits_per_sample != 1 ) { vips_error( "tiff2vips", _( "%d bits per sample palette image not supported" ), rtiff->header.bits_per_sample ); return( -1 ); } return( 0 ); } static VipsBandFormat rtiff_guess_format( Rtiff *rtiff ) { int bits_per_sample = rtiff->header.bits_per_sample; int sample_format = rtiff->header.sample_format; switch( bits_per_sample ) { case 1: case 2: case 4: case 8: if( sample_format == SAMPLEFORMAT_INT ) return( VIPS_FORMAT_CHAR ); if( sample_format == SAMPLEFORMAT_UINT ) return( VIPS_FORMAT_UCHAR ); break; case 16: if( sample_format == SAMPLEFORMAT_INT ) return( VIPS_FORMAT_SHORT ); if( sample_format == SAMPLEFORMAT_UINT ) return( VIPS_FORMAT_USHORT ); break; case 32: if( sample_format == SAMPLEFORMAT_INT ) return( VIPS_FORMAT_INT ); if( sample_format == SAMPLEFORMAT_UINT ) return( VIPS_FORMAT_UINT ); if( sample_format == SAMPLEFORMAT_IEEEFP ) return( VIPS_FORMAT_FLOAT ); break; case 64: if( sample_format == SAMPLEFORMAT_IEEEFP ) return( VIPS_FORMAT_DOUBLE ); if( sample_format == SAMPLEFORMAT_COMPLEXIEEEFP ) return( VIPS_FORMAT_COMPLEX ); break; case 128: if( sample_format == SAMPLEFORMAT_COMPLEXIEEEFP ) return( VIPS_FORMAT_DPCOMPLEX ); break; default: break; } vips_error( "tiff2vips", "%s", _( "unsupported tiff image type\n" ) ); return( VIPS_FORMAT_NOTSET ); } /* Per-scanline process function for VIPS_CODING_LABQ. */ static void rtiff_labpack_line( Rtiff *rtiff, VipsPel *q, VipsPel *p, int n, void *dummy ) { int samples_per_pixel = rtiff->header.samples_per_pixel; int x; for( x = 0; x < n; x++ ) { q[0] = p[0]; q[1] = p[1]; q[2] = p[2]; q[3] = 0; q += 4; p += samples_per_pixel; } } /* Read an 8-bit LAB image. */ static int rtiff_parse_labpack( Rtiff *rtiff, VipsImage *out ) { if( rtiff_check_min_samples( rtiff, 3 ) || rtiff_check_bits( rtiff, 8 ) || rtiff_check_interpretation( rtiff, PHOTOMETRIC_CIELAB ) ) return( -1 ); out->Bands = 4; out->BandFmt = VIPS_FORMAT_UCHAR; out->Coding = VIPS_CODING_LABQ; out->Type = VIPS_INTERPRETATION_LAB; rtiff->sfn = rtiff_labpack_line; return( 0 ); } /* Per-scanline process function for 8-bit VIPS_CODING_LAB to 16-bit LabS with * alpha. */ static void rtiff_lab_with_alpha_line( Rtiff *rtiff, VipsPel *q, VipsPel *p, int n, void *dummy ) { int samples_per_pixel = rtiff->header.samples_per_pixel; unsigned char *p1; short *q1; int x; p1 = (unsigned char *) p; q1 = (short *) q; for( x = 0; x < n; x++ ) { int i; q1[0] = ((unsigned int) p1[0]) * 32767 / 255; q1[1] = ((short) p1[1]) << 8; q1[2] = ((short) p1[2]) << 8; for( i = 3; i < samples_per_pixel; i++ ) q1[i] = (p1[i] << 8) + p1[i]; q1 += samples_per_pixel; p1 += samples_per_pixel; } } /* Read an 8-bit LAB image with alpha bands into 16-bit LabS. */ static int rtiff_parse_lab_with_alpha( Rtiff *rtiff, VipsImage *out ) { if( rtiff_check_min_samples( rtiff, 4 ) || rtiff_check_bits( rtiff, 8 ) || rtiff_check_interpretation( rtiff, PHOTOMETRIC_CIELAB ) ) return( -1 ); out->Bands = rtiff->header.samples_per_pixel; out->BandFmt = VIPS_FORMAT_SHORT; out->Coding = VIPS_CODING_NONE; out->Type = VIPS_INTERPRETATION_LABS; rtiff->sfn = rtiff_lab_with_alpha_line; return( 0 ); } /* Per-scanline process function for LABS. */ static void rtiff_labs_line( Rtiff *rtiff, VipsPel *q, VipsPel *p, int n, void *dummy ) { int samples_per_pixel = rtiff->header.samples_per_pixel; unsigned short *p1; short *q1; int x; int i; p1 = (unsigned short *) p; q1 = (short *) q; for( x = 0; x < n; x++ ) { /* We use signed int16 for L. */ q1[0] = p1[0] >> 1; for( i = 1; i < samples_per_pixel; i++ ) q1[i] = p1[i]; q1 += samples_per_pixel; p1 += samples_per_pixel; } } /* Read a 16-bit LAB image. */ static int rtiff_parse_labs( Rtiff *rtiff, VipsImage *out ) { if( rtiff_check_min_samples( rtiff, 3 ) || rtiff_check_bits( rtiff, 16 ) || rtiff_check_interpretation( rtiff, PHOTOMETRIC_CIELAB ) ) return( -1 ); out->Bands = rtiff->header.samples_per_pixel; out->BandFmt = VIPS_FORMAT_SHORT; out->Coding = VIPS_CODING_NONE; out->Type = VIPS_INTERPRETATION_LABS; rtiff->sfn = rtiff_labs_line; return( 0 ); } /* Per-scanline process function for 1 bit images. */ static void rtiff_onebit_line( Rtiff *rtiff, VipsPel *q, VipsPel *p, int n, void *flg ) { int photometric_interpretation = rtiff->header.photometric_interpretation; int x, i, z; VipsPel bits; int black = photometric_interpretation == PHOTOMETRIC_MINISBLACK ? 0 : 255; int white = black ^ 0xff; /* (sigh) how many times have I written this? */ x = 0; for( i = 0; i < (n >> 3); i++ ) { bits = (VipsPel) p[i]; for( z = 0; z < 8; z++ ) { q[x] = (bits & 128) ? white : black; bits <<= 1; x += 1; } } /* Do last byte in line. */ if( n & 7 ) { bits = p[i]; for( z = 0; z < (n & 7); z++ ) { q[x + z] = (bits & 128) ? white : black; bits <<= 1; } } } /* Read a 1-bit TIFF image. */ static int rtiff_parse_onebit( Rtiff *rtiff, VipsImage *out ) { if( rtiff_check_samples( rtiff, 1 ) || rtiff_check_bits( rtiff, 1 ) ) return( -1 ); out->Bands = 1; out->BandFmt = VIPS_FORMAT_UCHAR; out->Coding = VIPS_CODING_NONE; out->Type = VIPS_INTERPRETATION_B_W; rtiff->sfn = rtiff_onebit_line; return( 0 ); } /* Swap the sense of the first channel, if necessary. */ #define GREY_LOOP( TYPE, MAX ) { \ TYPE *p1; \ TYPE *q1; \ \ p1 = (TYPE *) p; \ q1 = (TYPE *) q; \ for( x = 0; x < n; x++ ) { \ if( invert ) \ q1[0] = MAX - p1[0]; \ else \ q1[0] = p1[0]; \ \ for( i = 1; i < samples_per_pixel; i++ ) \ q1[i] = p1[i]; \ \ q1 += samples_per_pixel; \ p1 += samples_per_pixel; \ } \ } /* Per-scanline process function for greyscale images. */ static void rtiff_greyscale_line( Rtiff *rtiff, VipsPel *q, VipsPel *p, int n, void *client ) { int samples_per_pixel = rtiff->header.samples_per_pixel; int photometric_interpretation = rtiff->header.photometric_interpretation; VipsBandFormat format = rtiff_guess_format( rtiff ); /* Swapping black and white doesn't make sense for the signed formats. */ gboolean invert = photometric_interpretation == PHOTOMETRIC_MINISWHITE && vips_band_format_isuint( format ); int x, i; switch( format ) { case VIPS_FORMAT_CHAR: GREY_LOOP( guchar, 0 ); break; case VIPS_FORMAT_UCHAR: GREY_LOOP( guchar, UCHAR_MAX ); break; case VIPS_FORMAT_SHORT: GREY_LOOP( gshort, 0 ); break; case VIPS_FORMAT_USHORT: GREY_LOOP( gushort, USHRT_MAX ); break; case VIPS_FORMAT_INT: GREY_LOOP( gint, 0 ); break; case VIPS_FORMAT_UINT: GREY_LOOP( guint, UINT_MAX ); break; case VIPS_FORMAT_FLOAT: GREY_LOOP( float, 1.0 ); break; case VIPS_FORMAT_DOUBLE: GREY_LOOP( double, 1.0 ); break; default: g_assert_not_reached(); } } /* Read a grey-scale TIFF image. We have to invert the first band if * PHOTOMETRIC_MINISBLACK is set. */ static int rtiff_parse_greyscale( Rtiff *rtiff, VipsImage *out ) { if( rtiff_check_min_samples( rtiff, 1 ) || rtiff_non_fractional( rtiff ) ) return( -1 ); out->Bands = rtiff->header.samples_per_pixel; out->BandFmt = rtiff_guess_format( rtiff ); if( out->BandFmt == VIPS_FORMAT_NOTSET ) return( -1 ); out->Coding = VIPS_CODING_NONE; if( rtiff->header.bits_per_sample == 16 ) out->Type = VIPS_INTERPRETATION_GREY16; else out->Type = VIPS_INTERPRETATION_B_W; /* rtiff_greyscale_line() doesn't do complex. */ if( vips_check_noncomplex( "tiff2vips", out ) ) return( -1 ); rtiff->sfn = rtiff_greyscale_line; return( 0 ); } typedef struct { /* LUTs mapping image indexes to RGB. */ VipsPel *red8; VipsPel *green8; VipsPel *blue8; guint16 *red16; guint16 *green16; guint16 *blue16; /* All maps equal, so we write mono. */ gboolean mono; } PaletteRead; /* 1/2/4 bit samples with an 8-bit palette. */ static void rtiff_palette_line_bit( Rtiff *rtiff, VipsPel *q, VipsPel *p, int n, void *client ) { PaletteRead *read = (PaletteRead *) client; int samples_per_pixel = rtiff->header.samples_per_pixel; int bits_per_sample = rtiff->header.bits_per_sample; int bit; VipsPel data; int x; bit = 0; data = 0; for( x = 0; x < n * samples_per_pixel; x++ ) { int i; if( bit <= 0 ) { data = *p++; bit = 8; } i = data >> (8 - bits_per_sample); data <<= bits_per_sample; bit -= bits_per_sample; /* The first band goes through the LUT, subsequent bands are * left-justified and copied. */ if( x % samples_per_pixel == 0 ) { if( read->mono ) *q++ = read->red8[i]; else { q[0] = read->red8[i]; q[1] = read->green8[i]; q[2] = read->blue8[i]; q += 3; } } else *q++ = VIPS_LSHIFT_INT( i, 8 - bits_per_sample ); } } /* 8-bit samples with an 8-bit palette. */ static void rtiff_palette_line8( Rtiff *rtiff, VipsPel *q, VipsPel *p, int n, void *client ) { PaletteRead *read = (PaletteRead *) client; int samples_per_pixel = rtiff->header.samples_per_pixel; int x; int s; for( x = 0; x < n; x++ ) { int i = p[0]; if( read->mono ) q[0] = read->red8[i]; else { q[0] = read->red8[i]; q[1] = read->green8[i]; q[2] = read->blue8[i]; q += 2; } for( s = 1; s < samples_per_pixel; s++ ) q[s] = p[s]; q += samples_per_pixel; p += samples_per_pixel; } } /* 16-bit samples with 16-bit data in the palette. */ static void rtiff_palette_line16( Rtiff *rtiff, VipsPel *q, VipsPel *p, int n, void *client ) { PaletteRead *read = (PaletteRead *) client; int samples_per_pixel = rtiff->header.samples_per_pixel; guint16 *p16, *q16; int x; int s; q16 = (guint16 *) q; p16 = (guint16 *) p; for( x = 0; x < n; x++ ) { int i = p16[0]; if( read->mono ) q16[0] = read->red16[i]; else { q16[0] = read->red16[i]; q16[1] = read->green16[i]; q16[2] = read->blue16[i]; q16 += 2; } for( s = 1; s < samples_per_pixel; s++ ) q16[s] = p16[s]; q16 += samples_per_pixel; p16 += samples_per_pixel; } } /* Read a palette-ised TIFF image. */ static int rtiff_parse_palette( Rtiff *rtiff, VipsImage *out ) { int samples_per_pixel = rtiff->header.samples_per_pixel; int bits_per_sample = rtiff->header.bits_per_sample; int len; PaletteRead *read; int i; if( rtiff_check_bits_palette( rtiff ) || rtiff_check_min_samples( rtiff, 1 ) ) return( -1 ); len = 1 << bits_per_sample; if( !(read = VIPS_NEW( out, PaletteRead )) || !(read->red8 = VIPS_ARRAY( out, len, VipsPel )) || !(read->green8 = VIPS_ARRAY( out, len, VipsPel )) || !(read->blue8 = VIPS_ARRAY( out, len, VipsPel )) ) return( -1 ); /* Get maps, convert to 8-bit data. */ if( !TIFFGetField( rtiff->tiff, TIFFTAG_COLORMAP, &read->red16, &read->green16, &read->blue16 ) ) { vips_error( "tiff2vips", "%s", _( "bad colormap" ) ); return( -1 ); } /* Old-style colourmaps were 8-bit. If all the top bytes are zero, * assume we have one of these. * * See: https://github.com/libvips/libvips/issues/220 */ for( i = 0; i < len; i++ ) if( (read->red16[i] >> 8) | (read->green16[i] >> 8) | (read->blue16[i] >> 8) ) break; if( i < len ) for( i = 0; i < len; i++ ) { read->red8[i] = read->red16[i] >> 8; read->green8[i] = read->green16[i] >> 8; read->blue8[i] = read->blue16[i] >> 8; } else { g_warning( "%s", _( "assuming 8-bit palette" ) ); for( i = 0; i < len; i++ ) { read->red8[i] = read->red16[i] & 0xff; read->green8[i] = read->green16[i] & 0xff; read->blue8[i] = read->blue16[i] & 0xff; } } /* Are all the maps equal? We have a mono image. */ read->mono = TRUE; for( i = 0; i < len; i++ ) if( read->red16[i] != read->green16[i] || read->green16[i] != read->blue16[i] ) { read->mono = FALSE; break; } /* There's a TIFF extension, INDEXED, that is the preferred way to * encode mono palette images, but few applications support it. So we * just search the colormap. */ if( bits_per_sample <= 8 ) out->BandFmt = VIPS_FORMAT_UCHAR; else out->BandFmt = VIPS_FORMAT_USHORT; out->Coding = VIPS_CODING_NONE; if( read->mono ) { out->Bands = samples_per_pixel; if( bits_per_sample <= 8 ) out->Type = VIPS_INTERPRETATION_B_W; else out->Type = VIPS_INTERPRETATION_GREY16; } else { out->Bands = samples_per_pixel + 2; if( bits_per_sample <= 8 ) out->Type = VIPS_INTERPRETATION_sRGB; else out->Type = VIPS_INTERPRETATION_RGB16; } rtiff->client = read; if( bits_per_sample < 8 ) rtiff->sfn = rtiff_palette_line_bit; else if( bits_per_sample == 8 ) rtiff->sfn = rtiff_palette_line8; else if( bits_per_sample == 16 ) rtiff->sfn = rtiff_palette_line16; else g_assert_not_reached(); return( 0 ); } /* Per-scanline process function when we just need to copy. */ static void rtiff_memcpy_line( Rtiff *rtiff, VipsPel *q, VipsPel *p, int n, void *client ) { VipsImage *im = (VipsImage *) client; size_t len = n * VIPS_IMAGE_SIZEOF_PEL( im ); memcpy( q, p, len ); } /* Read a regular multiband image where we can just copy pixels from the tiff * buffer. */ static int rtiff_parse_copy( Rtiff *rtiff, VipsImage *out ) { int samples_per_pixel = rtiff->header.samples_per_pixel; int photometric_interpretation = rtiff->header.photometric_interpretation; int inkset = rtiff->header.inkset; if( rtiff_non_fractional( rtiff ) ) return( -1 ); out->Bands = samples_per_pixel; out->BandFmt = rtiff_guess_format( rtiff ); if( out->BandFmt == VIPS_FORMAT_NOTSET ) return( -1 ); out->Coding = VIPS_CODING_NONE; if( samples_per_pixel >= 3 && (photometric_interpretation == PHOTOMETRIC_RGB || photometric_interpretation == PHOTOMETRIC_YCBCR) ) { if( out->BandFmt == VIPS_FORMAT_USHORT ) out->Type = VIPS_INTERPRETATION_RGB16; else if( !vips_band_format_isint( out->BandFmt ) ) /* Most float images use 0 - 1 for black - white. * Photoshop uses 0 - 1 and no gamma. */ out->Type = VIPS_INTERPRETATION_scRGB; else out->Type = VIPS_INTERPRETATION_sRGB; } else if( samples_per_pixel >= 3 && photometric_interpretation == PHOTOMETRIC_CIELAB ) out->Type = VIPS_INTERPRETATION_LAB; else if( photometric_interpretation == PHOTOMETRIC_SEPARATED && samples_per_pixel >= 4 && inkset == INKSET_CMYK ) out->Type = VIPS_INTERPRETATION_CMYK; else out->Type = VIPS_INTERPRETATION_MULTIBAND; rtiff->sfn = rtiff_memcpy_line; rtiff->client = out; /* We expand YCBCR images to RGB using JPEGCOLORMODE_RGB, and this * means we need a slightly larger read buffer for the edge pixels. In * turn, this means we can't just memcpy to libvips regions. */ rtiff->memcpy = photometric_interpretation != PHOTOMETRIC_YCBCR; return( 0 ); } typedef int (*reader_fn)( Rtiff *rtiff, VipsImage *out ); /* We have a range of output paths. Look at the tiff header and try to * route the input image to the best output path. */ static reader_fn rtiff_pick_reader( Rtiff *rtiff ) { int bits_per_sample = rtiff->header.bits_per_sample; int photometric_interpretation = rtiff->header.photometric_interpretation; int samples_per_pixel = rtiff->header.samples_per_pixel; if( photometric_interpretation == PHOTOMETRIC_CIELAB ) { if( bits_per_sample == 8 ) { if( samples_per_pixel > 3 ) return( rtiff_parse_lab_with_alpha ); else return( rtiff_parse_labpack ); } if( bits_per_sample == 16 ) return( rtiff_parse_labs ); } if( photometric_interpretation == PHOTOMETRIC_MINISWHITE || photometric_interpretation == PHOTOMETRIC_MINISBLACK ) { if( bits_per_sample == 1 ) return( rtiff_parse_onebit ); else return( rtiff_parse_greyscale ); } if( photometric_interpretation == PHOTOMETRIC_PALETTE ) return( rtiff_parse_palette ); return( rtiff_parse_copy ); } /* Set the header on @out from our rtiff. rtiff_header_read() has already been * called. */ static int rtiff_set_header( Rtiff *rtiff, VipsImage *out ) { uint32 data_length; void *data; /* Request YCbCr expansion. libtiff complains if you do this for * non-jpg images. */ if( rtiff->header.compression == COMPRESSION_JPEG ) TIFFSetField( rtiff->tiff, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB ); out->Xsize = rtiff->header.width; out->Ysize = rtiff->header.height * rtiff->n; VIPS_SETSTR( out->filename, vips_connection_filename( VIPS_CONNECTION( rtiff->source ) ) ); if( rtiff->n > 1 ) vips_image_set_int( out, VIPS_META_PAGE_HEIGHT, rtiff->header.height ); vips_image_set_int( out, VIPS_META_N_PAGES, rtiff->n_pages ); /* Even though we could end up serving tiled data, always hint * THINSTRIP, since we're quite happy doing that too, and it could need * a lot less memory. */ vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); #ifdef DEBUG printf( "rtiff_set_header: header.samples_per_pixel = %d\n", rtiff->header.samples_per_pixel ); printf( "rtiff_set_header: header.bits_per_sample = %d\n", rtiff->header.bits_per_sample ); printf( "rtiff_set_header: header.sample_format = %d\n", rtiff->header.sample_format ); printf( "rtiff_set_header: header.orientation = %d\n", rtiff->header.orientation ); #endif /*DEBUG*/ /* We have a range of output paths. Look at the tiff header and try to * route the input image to the best output path. */ if( rtiff_pick_reader( rtiff )( rtiff, out ) ) return( -1 ); /* Read any ICC profile. */ if( TIFFGetField( rtiff->tiff, TIFFTAG_ICCPROFILE, &data_length, &data ) ) { vips_image_set_blob_copy( out, VIPS_META_ICC_NAME, data, data_length ); } /* Read any XMP metadata. */ if( TIFFGetField( rtiff->tiff, TIFFTAG_XMLPACKET, &data_length, &data ) ) { vips_image_set_blob_copy( out, VIPS_META_XMP_NAME, data, data_length ); } /* Read any IPTC metadata. */ if( TIFFGetField( rtiff->tiff, TIFFTAG_RICHTIFFIPTC, &data_length, &data ) ) { vips_image_set_blob_copy( out, VIPS_META_IPTC_NAME, data, data_length ); /* Older versions of libvips used this misspelt name :-( attach * under this name too for compatibility. */ vips_image_set_blob_copy( out, "ipct-data", data, data_length ); } /* Read any photoshop metadata. */ if( TIFFGetField( rtiff->tiff, TIFFTAG_PHOTOSHOP, &data_length, &data ) ) { vips_image_set_blob_copy( out, VIPS_META_PHOTOSHOP_NAME, data, data_length ); } /* IMAGEDESCRIPTION often has useful metadata. */ if( TIFFGetField( rtiff->tiff, TIFFTAG_IMAGEDESCRIPTION, &data ) ) { /* libtiff makes sure that data is null-terminated and contains * no embedded null characters. */ vips_image_set_string( out, VIPS_META_IMAGEDESCRIPTION, (char *) data ); } if( get_resolution( rtiff->tiff, out ) ) return( -1 ); /* Set the "orientation" tag. This is picked up later by autorot, if * requested. */ vips_image_set_int( out, VIPS_META_ORIENTATION, rtiff->header.orientation ); return( 0 ); } /* Allocate a tile buffer. Have one of these for each thread so we can unpack * to vips in parallel. */ static void * rtiff_seq_start( VipsImage *out, void *a, void *b ) { Rtiff *rtiff = (Rtiff *) a; tdata_t *buf; if( !(buf = vips_malloc( NULL, rtiff->header.tile_size )) ) return( NULL ); return( (void *) buf ); } static int rtiff_read_tile( Rtiff *rtiff, tdata_t *buf, int x, int y ) { if( TIFFReadTile( rtiff->tiff, buf, x, y, 0, 0 ) < 0 ) { vips_foreign_load_invalidate( rtiff->out ); return( -1 ); } return( 0 ); } /* Paint a tile from the file. This is a * special-case for when a region is exactly a tiff tile, and pixels need no * conversion. In this case, libtiff can read tiles directly to our output * region. */ static int rtiff_fill_region_aligned( VipsRegion *out, void *seq, void *a, void *b ) { Rtiff *rtiff = (Rtiff *) a; VipsRect *r = &out->valid; g_assert( (r->left % rtiff->header.tile_width) == 0 ); g_assert( (r->top % rtiff->header.tile_height) == 0 ); g_assert( r->width == rtiff->header.tile_width ); g_assert( r->height == rtiff->header.tile_height ); g_assert( VIPS_REGION_LSKIP( out ) == VIPS_REGION_SIZEOF_LINE( out ) ); #ifdef DEBUG_VERBOSE printf( "rtiff_fill_region_aligned: left = %d, top = %d\n", r->left, r->top ); #endif /*DEBUG_VERBOSE*/ VIPS_GATE_START( "rtiff_fill_region_aligned: work" ); /* Read that tile directly into the vips tile. */ if( rtiff_read_tile( rtiff, (tdata_t *) VIPS_REGION_ADDR( out, r->left, r->top ), r->left, r->top ) ) { VIPS_GATE_STOP( "rtiff_fill_region_aligned: work" ); return( -1 ); } VIPS_GATE_STOP( "rtiff_fill_region_aligned: work" ); return( 0 ); } /* Loop over the output region, painting in tiles from the file. */ static int rtiff_fill_region( VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ) { tdata_t *buf = (tdata_t *) seq; Rtiff *rtiff = (Rtiff *) a; int tile_width = rtiff->header.tile_width; int tile_height = rtiff->header.tile_height; int tile_row_size = rtiff->header.tile_row_size; VipsRect *r = &out->valid; int x, y, z; /* Special case: we are filling a single tile exactly sized to match * the tiff tile and we have no repacking to do for this format. */ if( rtiff->memcpy && r->left % tile_width == 0 && r->top % tile_height == 0 && r->width == tile_width && r->height == tile_height && VIPS_REGION_LSKIP( out ) == VIPS_REGION_SIZEOF_LINE( out ) ) return( rtiff_fill_region_aligned( out, seq, a, b ) ); VIPS_GATE_START( "rtiff_fill_region: work" ); y = 0; while( y < r->height ) { VipsRect tile, page, hit; /* Not necessary, but it stops static analyzers complaining * about a used-before-set. */ tile.height = 0; x = 0; while( x < r->width ) { /* page_no is within this toilet roll image, not tiff * file page number ... add the number of the start * page to get that. */ int page_no = (r->top + y) / rtiff->header.height; int page_y = (r->top + y) % rtiff->header.height; /* Coordinate of the tile on this page that xy falls in. */ int xs = ((r->left + x) / tile_width) * tile_width; int ys = (page_y / tile_height) * tile_height; if( rtiff_set_page( rtiff, rtiff->page + page_no ) || rtiff_read_tile( rtiff, buf, xs, ys ) ) { VIPS_GATE_STOP( "rtiff_fill_region: work" ); return( -1 ); } /* Position of tile on the page. */ tile.left = xs; tile.top = ys; tile.width = tile_width; tile.height = tile_height; /* It'll be clipped by this page. */ page.left = 0; page.top = 0; page.width = rtiff->header.width; page.height = rtiff->header.height; vips_rect_intersectrect( &tile, &page, &tile ); /* To image coordinates. */ tile.top += page_no * rtiff->header.height; /* And clip again by this region. */ vips_rect_intersectrect( &tile, r, &hit ); /* We are inside a tilecache, so requests will always * be aligned left-right to tile boundaries. * * this is not true vertically for toilet-roll images. */ g_assert( hit.left == tile.left ); /* Unpack to VIPS format. * Just unpack the section of the tile we need. */ for( z = 0; z < hit.height; z++ ) { VipsPel *p = (VipsPel *) buf + (hit.top - tile.top + z) * tile_row_size; VipsPel *q = VIPS_REGION_ADDR( out, hit.left, hit.top + z ); rtiff->sfn( rtiff, q, p, hit.width, rtiff->client ); } x += tile.width; } y += tile.height; } VIPS_GATE_STOP( "rtiff_fill_region: work" ); return( 0 ); } static int rtiff_seq_stop( void *seq, void *a, void *b ) { vips_free( seq ); return( 0 ); } /* Auto-rotate handling. */ static int rtiff_autorotate( Rtiff *rtiff, VipsImage *in, VipsImage **out ) { VipsAngle angle = vips_autorot_get_angle( in ); if( rtiff->autorotate && angle != VIPS_ANGLE_D0 ) { /* Need to copy to memory or disc, we have to stay seq. */ const guint64 image_size = VIPS_IMAGE_SIZEOF_IMAGE( in ); const guint64 disc_threshold = vips_get_disc_threshold(); VipsImage *im; VipsImage *x; if( image_size > disc_threshold ) im = vips_image_new_temp_file( "%s.v" ); else im = vips_image_new_memory(); if( vips_image_write( in, im ) ) { g_object_unref( im ); return( -1 ); } if( vips_rot( im, &x, angle, NULL ) ) { g_object_unref( im ); return( -1 ); } g_object_unref( im ); im = x; if( vips_copy( im, out, NULL ) ) { g_object_unref( im ); return( -1 ); } g_object_unref( im ); /* We must remove the tag to prevent accidental * double rotations. */ vips_autorot_remove_angle( *out ); } else { *out = in; g_object_ref( in ); } return( 0 ); } /* Unpremultiply associative alpha, if any. */ static int rtiff_unpremultiply( Rtiff *rtiff, VipsImage *in, VipsImage **out ) { if( rtiff->header.alpha_band != -1 ) { VipsImage *x; if( vips_unpremultiply( in, &x, "alpha_band", rtiff->header.alpha_band, NULL ) || vips_cast( x, out, in->BandFmt, NULL ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); } else { *out = in; g_object_ref( in ); } return( 0 ); } /* Tile-type TIFF reader core - pass in a per-tile transform. Generate into * the im and do it all partially. */ static int rtiff_read_tilewise( Rtiff *rtiff, VipsImage *out ) { int tile_width = rtiff->header.tile_width; int tile_height = rtiff->header.tile_height; VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 4 ); #ifdef DEBUG printf( "tiff2vips: rtiff_read_tilewise\n" ); #endif /*DEBUG*/ /* I don't have a sample images for tiled + separate, ban it for now. */ if( rtiff->header.separate ) { vips_error( "tiff2vips", "%s", _( "tiled separate planes not supported" ) ); return( -1 ); } /* Read to this image, then cache to out, see below. */ t[0] = vips_image_new(); if( rtiff_set_header( rtiff, t[0] ) ) return( -1 ); /* Double check: in memcpy mode, the vips tilesize should exactly * match the tifftile size. */ if( rtiff->memcpy ) { size_t vips_tile_size = VIPS_IMAGE_SIZEOF_PEL( t[0] ) * tile_width * tile_height; if( rtiff->header.tile_size != vips_tile_size ) { vips_error( "tiff2vips", "%s", _( "unsupported tiff image type" ) ); return( -1 ); } } /* Even though this is a tiled reader, we hint thinstrip since with * the cache we are quite happy serving that if anything downstream * would like it. */ vips_image_pipelinev( t[0], VIPS_DEMAND_STYLE_THINSTRIP, NULL ); if( vips_image_generate( t[0], rtiff_seq_start, rtiff_fill_region, rtiff_seq_stop, rtiff, NULL ) ) return( -1 ); /* Copy to out, adding a cache. Enough tiles for two complete rows. */ if( vips_tilecache( t[0], &t[1], "tile_width", tile_width, "tile_height", tile_height, "max_tiles", 2 * (1 + t[0]->Xsize / tile_width), NULL ) || rtiff_autorotate( rtiff, t[1], &t[2] ) || rtiff_unpremultiply( rtiff, t[2], &t[3] ) || vips_image_write( t[3], out ) ) return( -1 ); return( 0 ); } /* Read a strip. If the image is in separate planes, read each plane and * interleave to the output. * * strip is the number of this strip in this page. */ static int rtiff_strip_read_interleaved( Rtiff *rtiff, tstrip_t strip, tdata_t buf ) { int samples_per_pixel = rtiff->header.samples_per_pixel; int read_height = rtiff->header.read_height; int bits_per_sample = rtiff->header.bits_per_sample; int strip_y = strip * read_height; if( rtiff->header.separate ) { int page_width = rtiff->header.width; int page_height = rtiff->header.height; int strips_per_plane = 1 + (page_height - 1) / read_height; int strip_height = VIPS_MIN( read_height, page_height - strip_y ); int pels_per_strip = page_width * strip_height; int bytes_per_sample = bits_per_sample >> 3; int i, j, k; for( i = 0; i < samples_per_pixel; i++ ) { VipsPel *p; VipsPel *q; if( rtiff_strip_read( rtiff, strips_per_plane * i + strip, rtiff->plane_buf ) ) return( -1 ); p = (VipsPel *) rtiff->plane_buf; q = i * bytes_per_sample + (VipsPel *) buf; for( j = 0; j < pels_per_strip; j++ ) { for( k = 0; k < bytes_per_sample; k++ ) q[k] = p[k]; p += bytes_per_sample; q += bytes_per_sample * samples_per_pixel; } } } else { if( rtiff_strip_read( rtiff, strip, buf ) ) return( -1 ); } return( 0 ); } static int rtiff_stripwise_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsImage *out = or->im; Rtiff *rtiff = (Rtiff *) a; int read_height = rtiff->header.read_height; int page_height = rtiff->header.height; tsize_t scanline_size = rtiff->header.scanline_size; VipsRect *r = &or->valid; int y; #ifdef DEBUG_VERBOSE printf( "rtiff_stripwise_generate: top = %d, height = %d\n", r->top, r->height ); printf( "rtiff_stripwise_generate: y_top = %d\n", rtiff->y_pos ); #endif /*DEBUG_VERBOSE*/ /* We're inside a tilecache where tiles are the full image width, so * this should always be true. */ g_assert( r->left == 0 ); g_assert( r->width == or->im->Xsize ); g_assert( VIPS_RECT_BOTTOM( r ) <= or->im->Ysize ); /* If we're reading more than one page, tiles won't fall on strip * boundaries. */ /* Tiles should always be a strip in height, unless it's the final * strip in the image. */ g_assert( r->height == VIPS_MIN( read_height, or->im->Ysize - r->top ) ); /* And check that y_pos is correct. It should be, since we are inside * a vips_sequential(). */ if( r->top != rtiff->y_pos ) { vips_error( "tiff2vips", _( "out of order read -- at line %d, " "but line %d requested" ), rtiff->y_pos, r->top ); return( -1 ); } VIPS_GATE_START( "rtiff_stripwise_generate: work" ); y = 0; while( y < r->height ) { /* page_no is within this toilet roll image, not tiff * file page number ... add the number of the start * page to get that. */ int page_no = (r->top + y) / page_height; int y_page = (r->top + y) % page_height; /* Strip number. */ tstrip_t strip_no = y_page / read_height; VipsRect image, page, strip, hit; /* Our four (including the output region) rects, all in * output image coordinates. */ image.left = 0; image.top = 0; image.width = out->Xsize; image.height = out->Ysize; page.left = 0; page.top = page_height * ((r->top + y) / page_height); page.width = out->Xsize; page.height = page_height; strip.left = 0; strip.top = page.top + strip_no * read_height; strip.width = out->Xsize; strip.height = read_height; /* Clip strip against page and image ... the final strip will * be smaller. */ vips_rect_intersectrect( &strip, &image, &strip ); vips_rect_intersectrect( &strip, &page, &strip ); /* Now the bit that overlaps with the region we are filling. */ vips_rect_intersectrect( &strip, r, &hit ); g_assert( hit.height > 0 ); if( rtiff_set_page( rtiff, rtiff->page + page_no ) ) { VIPS_GATE_STOP( "rtiff_stripwise_generate: work" ); return( -1 ); } /* Read directly into the image if we can. Otherwise, we must * read to a temp buffer then unpack into the image. * * We need to read via a buffer if we need to reformat pixels, * or if this strip is not aligned on a tile boundary. */ if( rtiff->memcpy && hit.top == strip.top && hit.height == strip.height ) { if( rtiff_strip_read_interleaved( rtiff, strip_no, VIPS_REGION_ADDR( or, 0, r->top + y ) ) ) { VIPS_GATE_STOP( "rtiff_stripwise_generate: work" ); return( -1 ); } } else { VipsPel *p; VipsPel *q; int z; /* Read and interleave the entire strip. */ if( rtiff_strip_read_interleaved( rtiff, strip_no, rtiff->contig_buf ) ) { VIPS_GATE_STOP( "rtiff_stripwise_generate: work" ); return( -1 ); } /* Do any repacking to generate pixels in vips layout. */ p = (VipsPel *) rtiff->contig_buf + (hit.top - strip.top) * scanline_size; q = VIPS_REGION_ADDR( or, 0, r->top + y ); for( z = 0; z < hit.height; z++ ) { rtiff->sfn( rtiff, q, p, or->im->Xsize, rtiff->client ); p += scanline_size; q += VIPS_REGION_LSKIP( or ); } } y += hit.height; rtiff->y_pos += hit.height; } VIPS_GATE_STOP( "rtiff_stripwise_generate: work" ); return( 0 ); } /* Stripwise reading. * * We could potentially read strips in any order, but this would give * catastrophic performance for operations like 90 degress rotate on a * large image. Only offer sequential read. */ static int rtiff_read_stripwise( Rtiff *rtiff, VipsImage *out ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 4 ); #ifdef DEBUG printf( "tiff2vips: rtiff_read_stripwise\n" ); #endif /*DEBUG*/ t[0] = vips_image_new(); if( rtiff_set_header( rtiff, t[0] ) ) return( -1 ); vips_image_pipelinev( t[0], VIPS_DEMAND_STYLE_THINSTRIP, NULL ); #ifdef DEBUG printf( "rtiff_read_stripwise: header.rows_per_strip = %u\n", rtiff->header.rows_per_strip ); printf( "rtiff_read_stripwise: header.strip_size = %zd\n", rtiff->header.strip_size ); printf( "rtiff_read_stripwise: header.number_of_strips = %d\n", rtiff->header.number_of_strips ); printf( "rtiff_read_stripwise: header.read_height = %u\n", rtiff->header.read_height ); printf( "rtiff_read_stripwise: header.read_size = %zd\n", rtiff->header.read_size ); #endif /*DEBUG*/ /* Double check: in memcpy mode, the vips linesize should exactly * match the tiff line size. */ if( rtiff->memcpy ) { size_t vips_line_size; /* Lines are smaller in plane-separated mode. */ if( rtiff->header.separate ) vips_line_size = VIPS_IMAGE_SIZEOF_ELEMENT( t[0] ) * t[0]->Xsize; else vips_line_size = VIPS_IMAGE_SIZEOF_LINE( t[0] ); if( vips_line_size != rtiff->header.scanline_size ) { vips_error( "tiff2vips", "%s", _( "unsupported tiff image type" ) ); return( -1 ); } } /* If we have separate image planes, we must read to a plane buffer, * then interleave to the output. * * We don't need a separate buffer per thread since the _generate() * function runs inside the cache lock. */ if( rtiff->header.separate ) { if( !(rtiff->plane_buf = vips_malloc( VIPS_OBJECT( out ), rtiff->header.read_size )) ) return( -1 ); } /* If we need to manipulate pixels, we must read to an interleaved * plane buffer before repacking to the output. * * If we are doing a multi-page read, we need a strip buffer, since * strips may not be aligned on tile boundaries. * * We don't need a separate buffer per thread since the _generate() * function runs inside the cache lock. */ if( !rtiff->memcpy || rtiff->n > 1 ) { tsize_t size; size = rtiff->header.read_size; if( rtiff->header.separate ) size *= rtiff->header.samples_per_pixel; if( !(rtiff->contig_buf = vips_malloc( VIPS_OBJECT( out ), size )) ) return( -1 ); } /* rows_per_strip can be very large if this is a separate plane image, * beware. */ if( vips_image_generate( t[0], NULL, rtiff_stripwise_generate, NULL, rtiff, NULL ) || vips_sequential( t[0], &t[1], "tile_height", rtiff->header.read_height, NULL ) || rtiff_autorotate( rtiff, t[1], &t[2] ) || rtiff_unpremultiply( rtiff, t[2], &t[3] ) || vips_image_write( t[3], out ) ) return( -1 ); return( 0 ); } /* Load from a tiff dir into one of our tiff header structs. */ static int rtiff_header_read( Rtiff *rtiff, RtiffHeader *header ) { uint16 extra_samples_count; uint16 *extra_samples_types; if( !tfget32( rtiff->tiff, TIFFTAG_IMAGEWIDTH, &header->width ) || !tfget32( rtiff->tiff, TIFFTAG_IMAGELENGTH, &header->height ) || !tfget16( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, &header->samples_per_pixel ) || !tfget16( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, &header->bits_per_sample ) || !tfget16( rtiff->tiff, TIFFTAG_PHOTOMETRIC, &header->photometric_interpretation ) || !tfget16( rtiff->tiff, TIFFTAG_INKSET, &header->inkset ) ) return( -1 ); TIFFGetFieldDefaulted( rtiff->tiff, TIFFTAG_COMPRESSION, &header->compression ); if( header->compression == COMPRESSION_JPEG ) /* We want to always expand subsampled YCBCR images to full * RGB. */ TIFFSetField( rtiff->tiff, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB ); else if( header->photometric_interpretation == PHOTOMETRIC_YCBCR ) { /* We rely on the jpg decompressor to upsample chroma * subsampled images. If there is chroma subsampling but * no jpg compression, we have to give up. * * tiffcp fails for images like this too. */ uint16 hsub, vsub; TIFFGetFieldDefaulted( rtiff->tiff, TIFFTAG_YCBCRSUBSAMPLING, &hsub, &vsub ); if( hsub != 1 || vsub != 1 ) { vips_error( "tiff2vips", "%s", _( "subsampled images not supported" ) ); return( -1 ); } } /* Arbitrary sanity-checking limits. */ if( header->width <= 0 || header->width > VIPS_MAX_COORD || header->height <= 0 || header->height > VIPS_MAX_COORD ) { vips_error( "tiff2vips", "%s", _( "width/height out of range" ) ); return( -1 ); } if( header->samples_per_pixel <= 0 || header->samples_per_pixel > 10000 || header->bits_per_sample <= 0 || header->bits_per_sample > 32 ) { vips_error( "tiff2vips", "%s", _( "samples out of range" ) ); return( -1 ); } header->sample_format = get_sample_format( rtiff->tiff ); header->orientation = get_orientation( rtiff->tiff ); header->separate = FALSE; if( tfexists( rtiff->tiff, TIFFTAG_PLANARCONFIG ) ) { int v; if( !tfget16( rtiff->tiff, TIFFTAG_PLANARCONFIG, &v ) ) return( -1 ); if( v == PLANARCONFIG_SEPARATE ) header->separate = TRUE; } /* Tiles and strip images have slightly different fields. */ header->tiled = TIFFIsTiled( rtiff->tiff ); if( header->tiled ) { if( !tfget32( rtiff->tiff, TIFFTAG_TILEWIDTH, &header->tile_width ) || !tfget32( rtiff->tiff, TIFFTAG_TILELENGTH, &header->tile_height ) ) return( -1 ); /* Arbitrary sanity-checking limits. */ if( header->tile_width <= 0 || header->tile_width > 10000 || header->tile_height <= 0 || header->tile_height > 10000 ) { vips_error( "tiff2vips", "%s", _( "tile size out of range" ) ); return( -1 ); } header->tile_size = TIFFTileSize( rtiff->tiff ); header->tile_row_size = TIFFTileRowSize( rtiff->tiff ); /* Fuzzed TIFFs can give crazy values for tile_size. Sanity * check at 100mb per tile. */ if( header->tile_size <= 0 || header->tile_size > 100 * 1000 * 1000 || header->tile_row_size <= 0 || header->tile_row_size > 100 * 1000 * 1000 ) { vips_error( "tiff2vips", "%s", _( "tile size out of range" ) ); return( -1 ); } /* Stop some compiler warnings. */ header->rows_per_strip = 0; header->strip_size = 0; header->number_of_strips = 0; header->read_height = 0; header->read_size = 0; } else { if( !tfget32( rtiff->tiff, TIFFTAG_ROWSPERSTRIP, &header->rows_per_strip ) ) return( -1 ); header->strip_size = TIFFStripSize( rtiff->tiff ); header->scanline_size = TIFFScanlineSize( rtiff->tiff ); header->number_of_strips = TIFFNumberOfStrips( rtiff->tiff ); /* libtiff has two strip-wise readers. TIFFReadEncodedStrip() * decompresses an entire strip to memory. It's fast, but it * will need a lot of ram if the strip is large. * TIFFReadScanline() reads a single scanline. It's slower, but * will save a lot of memory if strips are large. * * If this image has a strip size of over 128 lines, fall back * to TIFFReadScanline(), otherwise use TIFFReadEncodedStrip(). * * Don't do this in plane-separate mode. TIFFReadScanline() is * too fiddly to use in this case. * * Don't try scanline reading for YCbCr images. * TIFFScanlineSize() will not work in this case due to * chroma subsampling. */ if( header->rows_per_strip > 128 && !header->separate && header->photometric_interpretation != PHOTOMETRIC_YCBCR ) { header->read_scanlinewise = TRUE; header->read_height = 1; header->read_size = rtiff->header.scanline_size; } else { header->read_scanlinewise = FALSE; /* rows_per_strip can be 2 ** 32 - 1, meaning the * whole image. Clip this down to height to avoid * confusing vips. * * And it musn't be zero. */ header->read_height = VIPS_CLIP( 1, header->rows_per_strip, header->height ); header->read_size = header->strip_size; } /* Stop some compiler warnings. */ header->tile_width = 0; header->tile_height = 0; header->tile_size = 0; header->tile_row_size = 0; } TIFFGetFieldDefaulted( rtiff->tiff, TIFFTAG_EXTRASAMPLES, &extra_samples_count, &extra_samples_types ); header->alpha_band = -1; if( extra_samples_count > 0 ) { /* There must be exactly one band which is * EXTRASAMPLE_ASSOCALPHA. Note which one it is so we can * unpremultiply with the right channel. */ int i; for( i = 0; i < extra_samples_count; i++ ) if( extra_samples_types[i] == EXTRASAMPLE_ASSOCALPHA ) { if( header->alpha_band != -1 ) g_warning( "%s", _( "more than one " "alpha -- ignoring" ) ); header->alpha_band = header->samples_per_pixel - extra_samples_count + i; } } return( 0 ); } static int rtiff_header_equal( RtiffHeader *h1, RtiffHeader *h2 ) { if( h1->width != h2->width || h1->height != h2->height || h1->samples_per_pixel != h2->samples_per_pixel || h1->bits_per_sample != h2->bits_per_sample || h1->photometric_interpretation != h2->photometric_interpretation || h1->sample_format != h2->sample_format || h1->separate != h2->separate || h1->tiled != h2->tiled || h1->orientation != h2->orientation ) return( 0 ); if( h1->tiled ) { if( h1->tile_width != h2->tile_width || h1->tile_height != h2->tile_height ) return( 0 ); } else { if( h1->read_height != h2->read_height || h1->read_size != h2->read_size || h1->number_of_strips != h2->number_of_strips ) return( 0 ); } return( 1 ); } static int rtiff_header_read_all( Rtiff *rtiff ) { #ifdef DEBUG printf( "tiff2vips: reading header for page %d ...\n", rtiff->page ); #endif /*DEBUG*/ if( rtiff_set_page( rtiff, rtiff->page ) || rtiff_header_read( rtiff, &rtiff->header ) ) return( -1 ); /* -1 means "to the end". */ rtiff->n_pages = rtiff_n_pages( rtiff ); if( rtiff->n == -1 ) rtiff->n = rtiff->n_pages - rtiff->page; /* If we're to read many pages, verify that they are all identical. */ if( rtiff->n > 1 ) { int i; for( i = 1; i < rtiff->n; i++ ) { RtiffHeader header; #ifdef DEBUG printf( "tiff2vips: verifying header for page %d ...\n", rtiff->page + i ); #endif /*DEBUG*/ if( rtiff_set_page( rtiff, rtiff->page + i ) || rtiff_header_read( rtiff, &header ) ) return( -1 ); if( !rtiff_header_equal( &rtiff->header, &header ) ) { vips_error( "tiff2vips", _( "page %d differs from page %d" ), rtiff->page + i, rtiff->page ); return( -1 ); } } } return( 0 ); } /* On a header-only read, we can just swap width/height if orientation is 6 or * 8. */ static void vips__tiff_read_header_orientation( Rtiff *rtiff, VipsImage *out ) { int orientation; if( rtiff->autorotate && vips_image_get_typeof( out, VIPS_META_ORIENTATION ) && !vips_image_get_int( out, VIPS_META_ORIENTATION, &orientation ) ) { if( orientation == 3 || orientation == 6 ) VIPS_SWAP( int, out->Xsize, out->Ysize ); /* We must remove VIPS_META_ORIENTATION to prevent accidental * double rotations. */ vips_image_remove( out, VIPS_META_ORIENTATION ); } } typedef gboolean (*TiffPropertyFn)( TIFF *tif ); static gboolean vips__testtiff_source( VipsSource *source, TiffPropertyFn fn ) { TIFF *tif; gboolean property; vips__tiff_init(); if( !(tif = vips__tiff_openin_source( source )) ) { vips_error_clear(); return( FALSE ); } property = fn ? fn( tif ) : TRUE; TIFFClose( tif ); return( property ); } gboolean vips__istiff_source( VipsSource *source ) { return( vips__testtiff_source( source, NULL ) ); } gboolean vips__istifftiled_source( VipsSource *source ) { return( vips__testtiff_source( source, TIFFIsTiled ) ); } int vips__tiff_read_header_source( VipsSource *source, VipsImage *out, int page, int n, gboolean autorotate ) { Rtiff *rtiff; vips__tiff_init(); if( !(rtiff = rtiff_new( source, out, page, n, autorotate )) || rtiff_header_read_all( rtiff ) ) return( -1 ); if( rtiff_set_header( rtiff, out ) ) return( -1 ); vips__tiff_read_header_orientation( rtiff, out ); /* We never call vips_source_decode() since we need to be able to * seek() the whole way through the file. Just minimise instead, */ vips_source_minimise( source ); return( 0 ); } int vips__tiff_read_source( VipsSource *source, VipsImage *out, int page, int n, gboolean autorotate ) { Rtiff *rtiff; #ifdef DEBUG printf( "tiff2vips: libtiff version is \"%s\"\n", TIFFGetVersion() ); printf( "tiff2vips: libtiff starting for buffer %p\n", buf ); #endif /*DEBUG*/ vips__tiff_init(); if( !(rtiff = rtiff_new( source, out, page, n, autorotate )) || rtiff_header_read_all( rtiff ) ) return( -1 ); if( rtiff->header.tiled ) { if( rtiff_read_tilewise( rtiff, out ) ) return( -1 ); } else { if( rtiff_read_stripwise( rtiff, out ) ) return( -1 ); } /* We never call vips_source_decode() since we need to be able to * seek() the whole way through the file. Just minimise instead, */ vips_source_minimise( source ); return( 0 ); } #endif /*HAVE_TIFF*/ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libvips-8.9.1/libvips/foreign/tiffload.c������������������������������������������������������������0000664�0000000�0000000�00000035306�13611533207�0020246�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* load tiff from a file * * 5/12/11 * - from tiffload.c * 27/1/17 * - add get_flags for buffer loader */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_TIFF typedef struct _VipsForeignLoadTiff { VipsForeignLoad parent_object; /* Set by subclasses. */ VipsSource *source; /* Load this page. */ int page; /* Load this many pages. */ int n; /* Autorotate using orientation tag. */ gboolean autorotate; } VipsForeignLoadTiff; typedef VipsForeignLoadClass VipsForeignLoadTiffClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadTiff, vips_foreign_load_tiff, VIPS_TYPE_FOREIGN_LOAD ); static void vips_foreign_load_tiff_dispose( GObject *gobject ) { VipsForeignLoadTiff *tiff = (VipsForeignLoadTiff *) gobject; VIPS_UNREF( tiff->source ); G_OBJECT_CLASS( vips_foreign_load_tiff_parent_class )-> dispose( gobject ); } static VipsForeignFlags vips_foreign_load_tiff_get_flags_source( VipsSource *source ) { VipsForeignFlags flags; flags = 0; if( vips__istifftiled_source( source ) ) flags |= VIPS_FOREIGN_PARTIAL; else flags |= VIPS_FOREIGN_SEQUENTIAL; return( flags ); } static VipsForeignFlags vips_foreign_load_tiff_get_flags_filename( const char *filename ) { VipsSource *source; VipsForeignFlags flags; if( !(source = vips_source_new_from_file( filename )) ) return( 0 ); flags = vips_foreign_load_tiff_get_flags_source( source ); VIPS_UNREF( source ); return( flags ); } static VipsForeignFlags vips_foreign_load_tiff_get_flags( VipsForeignLoad *load ) { VipsForeignLoadTiff *tiff = (VipsForeignLoadTiff *) load; return( vips_foreign_load_tiff_get_flags_source( tiff->source ) ); } static int vips_foreign_load_tiff_header( VipsForeignLoad *load ) { VipsForeignLoadTiff *tiff = (VipsForeignLoadTiff *) load; if( vips__tiff_read_header_source( tiff->source, load->out, tiff->page, tiff->n, tiff->autorotate ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_tiff_load( VipsForeignLoad *load ) { VipsForeignLoadTiff *tiff = (VipsForeignLoadTiff *) load; if( vips__tiff_read_source( tiff->source, load->real, tiff->page, tiff->n, tiff->autorotate ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_tiff_class_init( VipsForeignLoadTiffClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; /* Other libraries may be using libtiff, we want to capture tiff * warning and error as soon as we can. * * This class init will be triggered during startup. */ vips__tiff_init(); gobject_class->dispose = vips_foreign_load_tiff_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "tiffload_base"; object_class->description = _( "load tiff" ); /* We are fast, but must test after openslideload. */ foreign_class->priority = 50; load_class->get_flags_filename = vips_foreign_load_tiff_get_flags_filename; load_class->get_flags = vips_foreign_load_tiff_get_flags; load_class->header = vips_foreign_load_tiff_header; load_class->load = vips_foreign_load_tiff_load; VIPS_ARG_INT( class, "page", 20, _( "Page" ), _( "Load this page from the image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadTiff, page ), 0, 100000, 0 ); VIPS_ARG_INT( class, "n", 21, _( "n" ), _( "Load this many pages" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadTiff, n ), -1, 100000, 1 ); VIPS_ARG_BOOL( class, "autorotate", 22, _( "Autorotate" ), _( "Rotate image using orientation tag" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadTiff, autorotate ), FALSE ); } static void vips_foreign_load_tiff_init( VipsForeignLoadTiff *tiff ) { tiff->page = 0; tiff->n = 1; } typedef struct _VipsForeignLoadTiffSource { VipsForeignLoadTiff parent_object; /* Load from a source. */ VipsSource *source; } VipsForeignLoadTiffSource; typedef VipsForeignLoadTiffClass VipsForeignLoadTiffSourceClass; G_DEFINE_TYPE( VipsForeignLoadTiffSource, vips_foreign_load_tiff_source, vips_foreign_load_tiff_get_type() ); static int vips_foreign_load_tiff_source_build( VipsObject *object ) { VipsForeignLoadTiff *tiff = (VipsForeignLoadTiff *) object; VipsForeignLoadTiffSource *source = (VipsForeignLoadTiffSource *) object; if( source->source ) { tiff->source = source->source; g_object_ref( tiff->source ); } if( VIPS_OBJECT_CLASS( vips_foreign_load_tiff_source_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_tiff_source_is_a_source( VipsSource *source ) { return( vips__istiff_source( source ) ); } static void vips_foreign_load_tiff_source_class_init( VipsForeignLoadTiffSourceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "tiffload_source"; object_class->description = _( "load tiff from source" ); object_class->build = vips_foreign_load_tiff_source_build; load_class->is_a_source = vips_foreign_load_tiff_source_is_a_source; VIPS_ARG_OBJECT( class, "source", 1, _( "Source" ), _( "Source to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadTiffSource, source ), VIPS_TYPE_SOURCE ); } static void vips_foreign_load_tiff_source_init( VipsForeignLoadTiffSource *source ) { } typedef struct _VipsForeignLoadTiffFile { VipsForeignLoadTiff parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadTiffFile; typedef VipsForeignLoadTiffClass VipsForeignLoadTiffFileClass; G_DEFINE_TYPE( VipsForeignLoadTiffFile, vips_foreign_load_tiff_file, vips_foreign_load_tiff_get_type() ); static int vips_foreign_load_tiff_file_build( VipsObject *object ) { VipsForeignLoadTiff *tiff = (VipsForeignLoadTiff *) object; VipsForeignLoadTiffFile *file = (VipsForeignLoadTiffFile *) object; if( file->filename && !(tiff->source = vips_source_new_from_file( file->filename )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_foreign_load_tiff_file_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_tiff_file_is_a( const char *filename ) { VipsSource *source; gboolean result; if( !(source = vips_source_new_from_file( filename )) ) return( FALSE ); result = vips_foreign_load_tiff_source_is_a_source( source ); VIPS_UNREF( source ); return( result ); } const char *vips__foreign_tiff_suffs[] = { ".tif", ".tiff", NULL }; static void vips_foreign_load_tiff_file_class_init( VipsForeignLoadTiffFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "tiffload"; object_class->description = _( "load tiff from file" ); object_class->build = vips_foreign_load_tiff_file_build; foreign_class->suffs = vips__foreign_tiff_suffs; load_class->is_a = vips_foreign_load_tiff_file_is_a; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadTiffFile, filename ), NULL ); } static void vips_foreign_load_tiff_file_init( VipsForeignLoadTiffFile *file ) { } typedef struct _VipsForeignLoadTiffBuffer { VipsForeignLoadTiff parent_object; /* Load from a buffer. */ VipsBlob *blob; } VipsForeignLoadTiffBuffer; typedef VipsForeignLoadTiffClass VipsForeignLoadTiffBufferClass; G_DEFINE_TYPE( VipsForeignLoadTiffBuffer, vips_foreign_load_tiff_buffer, vips_foreign_load_tiff_get_type() ); static int vips_foreign_load_tiff_buffer_build( VipsObject *object ) { VipsForeignLoadTiff *tiff = (VipsForeignLoadTiff *) object; VipsForeignLoadTiffBuffer *buffer = (VipsForeignLoadTiffBuffer *) object; if( buffer->blob && !(tiff->source = vips_source_new_from_memory( VIPS_AREA( buffer->blob )->data, VIPS_AREA( buffer->blob )->length )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_foreign_load_tiff_file_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_tiff_buffer_is_a_buffer( const void *buf, size_t len ) { VipsSource *source; gboolean result; if( !(source = vips_source_new_from_memory( buf, len )) ) return( FALSE ); result = vips_foreign_load_tiff_source_is_a_source( source ); VIPS_UNREF( source ); return( result ); } static void vips_foreign_load_tiff_buffer_class_init( VipsForeignLoadTiffBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "tiffload_buffer"; object_class->description = _( "load tiff from buffer" ); object_class->build = vips_foreign_load_tiff_buffer_build; load_class->is_a_buffer = vips_foreign_load_tiff_buffer_is_a_buffer; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadTiffBuffer, blob ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_tiff_buffer_init( VipsForeignLoadTiffBuffer *buffer ) { } #endif /*HAVE_TIFF*/ /** * vips_tiffload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, load this page * * @n: %gint, load this many pages * * @autorotate: %gboolean, use orientation tag to rotate the image * during load * * Read a TIFF file into a VIPS image. It is a full baseline TIFF 6 reader, * with extensions for tiled images, multipage images, LAB colour space, * pyramidal images and JPEG compression. including CMYK and YCbCr. * * @page means load this page from the file. By default the first page (page * 0) is read. * * @n means load this many pages. By default a single page is read. All the * pages must have the same dimensions, and they are loaded as a tall, thin * "toilet roll" image. The #VIPS_META_PAGE_HEIGHT metadata * tag gives the height in pixels of each page. Use -1 to load all pages. * * Setting @autorotate to %TRUE will make the loader interpret the * orientation tag and automatically rotate the image appropriately during * load. * * If @autorotate is %FALSE, the metadata field #VIPS_META_ORIENTATION is set * to the value of the orientation tag. Applications may read and interpret * this field * as they wish later in processing. See vips_autorot(). Save * operations will use #VIPS_META_ORIENTATION, if present, to set the * orientation of output images. * * Any ICC profile is read and attached to the VIPS image as * #VIPS_META_ICC_NAME. Any XMP metadata is read and attached to the image * as #VIPS_META_XMP_NAME. Any IPTC is attached as #VIPS_META_IPTC_NAME. The * image description is * attached as #VIPS_META_IMAGEDESCRIPTION. Data in the photoshop tag is * attached as #VIPS_META_PHOTOSHOP_NAME. * * See also: vips_image_new_from_file(), vips_autorot(). * * Returns: 0 on success, -1 on error. */ int vips_tiffload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "tiffload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_tiffload_buffer: * @buf: (array length=len) (element-type guint8): memory area to load * @len: (type gsize): size of memory area * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, load this page * * @n: %gint, load this many pages * * @autorotate: %gboolean, use orientation tag to rotate the image * during load * * Read a TIFF-formatted memory block into a VIPS image. Exactly as * vips_tiffload(), but read from a memory source. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_tiffload(). * * Returns: 0 on success, -1 on error. */ int vips_tiffload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "tiffload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } /** * vips_tiffload_source: * @source: source to load * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, load this page * * @n: %gint, load this many pages * * @autorotate: %gboolean, use orientation tag to rotate the image * during load * * Exactly as vips_tiffload(), but read from a source. * * See also: vips_tiffload(). * * Returns: 0 on success, -1 on error. */ int vips_tiffload_source( VipsSource *source, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "tiffload_source", ap, source, out ); va_end( ap ); return( result ); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libvips-8.9.1/libvips/foreign/tiffsave.c������������������������������������������������������������0000664�0000000�0000000�00000047344�13611533207�0020272�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* save to tiff * * 2/12/11 * - wrap a class around the tiff writer * 17/3/12 * - argh xres/yres macro was wrong * 26/1/14 * - add rgbjpeg flag * 21/12/15 * - add properties flag * 31/5/16 * - convert for jpg if jpg compression is on * 19/10/17 * - predictor defaults to horizontal, reducing file size, usually * 13/6/18 * - add region_shrink * 8/7/19 * - add webp and zstd support * - add @level and @lossless * 4/9/18 [f--f] * - xres/yres params were in pixels/cm */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pforeign.h" #ifdef HAVE_TIFF #include "tiff.h" typedef struct _VipsForeignSaveTiff { VipsForeignSave parent_object; /* Many options argh. */ VipsForeignTiffCompression compression; int Q; VipsForeignTiffPredictor predictor; char *profile; gboolean tile; int tile_width; int tile_height; gboolean pyramid; gboolean squash; gboolean miniswhite; VipsForeignTiffResunit resunit; double xres; double yres; gboolean bigtiff; gboolean rgbjpeg; gboolean properties; VipsRegionShrink region_shrink; int level; gboolean lossless; } VipsForeignSaveTiff; typedef VipsForeignSaveClass VipsForeignSaveTiffClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSaveTiff, vips_foreign_save_tiff, VIPS_TYPE_FOREIGN_SAVE ); #define UC VIPS_FORMAT_UCHAR /* Type promotion for save ... just always go to uchar. */ static int bandfmt_jpeg[10] = { /* UC C US S UI I F X D DX */ UC, UC, UC, UC, UC, UC, UC, UC, UC, UC }; static int vips_foreign_save_tiff_build( VipsObject *object ) { VipsForeignSaveClass *class = VIPS_FOREIGN_SAVE_GET_CLASS( object ); VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveTiff *tiff = (VipsForeignSaveTiff *) object; const char *p; /* If we are saving jpeg-in-tiff, we need a different convert_saveable * path. The regular tiff one will let through things like float and * 16-bit and alpha for example, which will make the jpeg saver choke. */ if( save->in && tiff->compression == VIPS_FOREIGN_TIFF_COMPRESSION_JPEG ) { VipsImage *x; /* See also vips_foreign_save_jpeg_class_init(). */ if( vips__foreign_convert_saveable( save->in, &x, VIPS_SAVEABLE_RGB_CMYK, bandfmt_jpeg, class->coding, save->background ) ) return( -1 ); g_object_set( object, "in", x, NULL ); g_object_unref( x ); } if( VIPS_OBJECT_CLASS( vips_foreign_save_tiff_parent_class )-> build( object ) ) return( -1 ); /* Default xres/yres to the values from the image. This is always * pixels/mm. */ if( !vips_object_argument_isset( object, "xres" ) ) tiff->xres = save->ready->Xres; if( !vips_object_argument_isset( object, "yres" ) ) tiff->yres = save->ready->Yres; /* We default to pixels/cm. */ tiff->xres *= 10.0; tiff->yres *= 10.0; /* resunit param overrides resunit metadata. */ if( !vips_object_argument_isset( object, "resunit" ) && vips_image_get_typeof( save->ready, VIPS_META_RESOLUTION_UNIT ) && !vips_image_get_string( save->ready, VIPS_META_RESOLUTION_UNIT, &p ) && vips_isprefix( "in", p ) ) tiff->resunit = VIPS_FOREIGN_TIFF_RESUNIT_INCH; if( tiff->resunit == VIPS_FOREIGN_TIFF_RESUNIT_INCH ) { tiff->xres *= 2.54; tiff->yres *= 2.54; } return( 0 ); } static void vips_foreign_save_tiff_class_init( VipsForeignSaveTiffClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "tiffsave_base"; object_class->description = _( "save image to tiff file" ); object_class->build = vips_foreign_save_tiff_build; foreign_class->suffs = vips__foreign_tiff_suffs; save_class->saveable = VIPS_SAVEABLE_ANY; save_class->coding[VIPS_CODING_LABQ] = TRUE; VIPS_ARG_ENUM( class, "compression", 6, _( "Compression" ), _( "Compression for this file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, compression ), VIPS_TYPE_FOREIGN_TIFF_COMPRESSION, VIPS_FOREIGN_TIFF_COMPRESSION_NONE ); VIPS_ARG_INT( class, "Q", 7, _( "Q" ), _( "Q factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, Q ), 1, 100, 75 ); VIPS_ARG_ENUM( class, "predictor", 8, _( "predictor" ), _( "Compression prediction" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, predictor ), VIPS_TYPE_FOREIGN_TIFF_PREDICTOR, VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL ); VIPS_ARG_STRING( class, "profile", 9, _( "profile" ), _( "ICC profile to embed" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, profile ), NULL ); VIPS_ARG_BOOL( class, "tile", 10, _( "Tile" ), _( "Write a tiled tiff" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, tile ), FALSE ); VIPS_ARG_INT( class, "tile_width", 11, _( "Tile width" ), _( "Tile width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, tile_width ), 1, 32768, 128 ); VIPS_ARG_INT( class, "tile_height", 12, _( "Tile height" ), _( "Tile height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, tile_height ), 1, 32768, 128 ); VIPS_ARG_BOOL( class, "pyramid", 13, _( "Pyramid" ), _( "Write a pyramidal tiff" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, pyramid ), FALSE ); VIPS_ARG_BOOL( class, "squash", 14, _( "Squash" ), _( "Squash images down to 1 bit" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, squash ), FALSE ); VIPS_ARG_BOOL( class, "miniswhite", 14, _( "Miniswhite" ), _( "Use 0 for white in 1-bit images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, miniswhite ), FALSE ); VIPS_ARG_ENUM( class, "resunit", 15, _( "Resolution unit" ), _( "Resolution unit" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, resunit ), VIPS_TYPE_FOREIGN_TIFF_RESUNIT, VIPS_FOREIGN_TIFF_RESUNIT_CM ); VIPS_ARG_DOUBLE( class, "xres", 16, _( "Xres" ), _( "Horizontal resolution in pixels/mm" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, xres ), 0.001, 1000000, 1 ); VIPS_ARG_DOUBLE( class, "yres", 17, _( "Yres" ), _( "Vertical resolution in pixels/mm" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, yres ), 0.001, 1000000, 1 ); VIPS_ARG_BOOL( class, "bigtiff", 18, _( "Bigtiff" ), _( "Write a bigtiff image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, bigtiff ), FALSE ); VIPS_ARG_BOOL( class, "rgbjpeg", 20, _( "RGB JPEG" ), _( "Output RGB JPEG rather than YCbCr" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignSaveTiff, rgbjpeg ), FALSE ); VIPS_ARG_BOOL( class, "properties", 21, _( "Properties" ), _( "Write a properties document to IMAGEDESCRIPTION" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, properties ), FALSE ); VIPS_ARG_ENUM( class, "region_shrink", 22, _( "Region shrink" ), _( "Method to shrink regions" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, region_shrink ), VIPS_TYPE_REGION_SHRINK, VIPS_REGION_SHRINK_MEAN ); VIPS_ARG_INT( class, "level", 23, _( "Level" ), _( "ZSTD compression level" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, level ), 1, 22, 10 ); VIPS_ARG_BOOL( class, "lossless", 24, _( "lossless" ), _( "Enable WEBP lossless mode" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, lossless ), FALSE ); } static void vips_foreign_save_tiff_init( VipsForeignSaveTiff *tiff ) { tiff->compression = VIPS_FOREIGN_TIFF_COMPRESSION_NONE; tiff->Q = 75; tiff->predictor = VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL; tiff->tile_width = 128; tiff->tile_height = 128; tiff->resunit = VIPS_FOREIGN_TIFF_RESUNIT_CM; tiff->xres = 1.0; tiff->yres = 1.0; tiff->region_shrink = VIPS_REGION_SHRINK_MEAN; tiff->level = 10; tiff->lossless = FALSE; } typedef struct _VipsForeignSaveTiffFile { VipsForeignSaveTiff parent_object; char *filename; } VipsForeignSaveTiffFile; typedef VipsForeignSaveTiffClass VipsForeignSaveTiffFileClass; G_DEFINE_TYPE( VipsForeignSaveTiffFile, vips_foreign_save_tiff_file, vips_foreign_save_tiff_get_type() ); static int vips_foreign_save_tiff_file_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveTiff *tiff = (VipsForeignSaveTiff *) object; VipsForeignSaveTiffFile *file = (VipsForeignSaveTiffFile *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_tiff_file_parent_class )-> build( object ) ) return( -1 ); if( vips__tiff_write( save->ready, file->filename, tiff->compression, tiff->Q, tiff->predictor, tiff->profile, tiff->tile, tiff->tile_width, tiff->tile_height, tiff->pyramid, tiff->squash, tiff->miniswhite, tiff->resunit, tiff->xres, tiff->yres, tiff->bigtiff, tiff->rgbjpeg, tiff->properties, save->strip, tiff->region_shrink, tiff->level, tiff->lossless ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_tiff_file_class_init( VipsForeignSaveTiffFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "tiffsave"; object_class->description = _( "save image to tiff file" ); object_class->build = vips_foreign_save_tiff_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiffFile, filename ), NULL ); } static void vips_foreign_save_tiff_file_init( VipsForeignSaveTiffFile *file ) { } typedef struct _VipsForeignSaveTiffBuffer { VipsForeignSaveTiff parent_object; VipsArea *buf; } VipsForeignSaveTiffBuffer; typedef VipsForeignSaveTiffClass VipsForeignSaveTiffBufferClass; G_DEFINE_TYPE( VipsForeignSaveTiffBuffer, vips_foreign_save_tiff_buffer, vips_foreign_save_tiff_get_type() ); static int vips_foreign_save_tiff_buffer_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveTiff *tiff = (VipsForeignSaveTiff *) object; void *obuf; size_t olen; VipsBlob *blob; if( VIPS_OBJECT_CLASS( vips_foreign_save_tiff_buffer_parent_class )-> build( object ) ) return( -1 ); if( vips__tiff_write_buf( save->ready, &obuf, &olen, tiff->compression, tiff->Q, tiff->predictor, tiff->profile, tiff->tile, tiff->tile_width, tiff->tile_height, tiff->pyramid, tiff->squash, tiff->miniswhite, tiff->resunit, tiff->xres, tiff->yres, tiff->bigtiff, tiff->rgbjpeg, tiff->properties, save->strip, tiff->region_shrink, tiff->level, tiff->lossless ) ) return( -1 ); /* vips__tiff_write_buf() makes a buffer that needs g_free(), not * vips_free(). */ blob = vips_blob_new( (VipsCallbackFn) g_free, obuf, olen ); g_object_set( object, "buffer", blob, NULL ); vips_area_unref( VIPS_AREA( blob ) ); return( 0 ); } static void vips_foreign_save_tiff_buffer_class_init( VipsForeignSaveTiffBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "tiffsave_buffer"; object_class->description = _( "save image to tiff buffer" ); object_class->build = vips_foreign_save_tiff_buffer_build; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to save to" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignSaveTiffBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_save_tiff_buffer_init( VipsForeignSaveTiffBuffer *buffer ) { } #endif /*HAVE_TIFF*/ /** * vips_tiffsave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @compression: use this #VipsForeignTiffCompression * * @Q: %gint quality factor * * @predictor: use this #VipsForeignTiffPredictor * * @profile: %gchararray, filename of ICC profile to attach * * @tile: %gboolean, set %TRUE to write a tiled tiff * * @tile_width: %gint for tile size * * @tile_height: %gint for tile size * * @pyramid: %gboolean, write an image pyramid * * @squash: %gboolean, squash 8-bit images down to 1 bit * * @miniswhite: %gboolean, write 1-bit images as MINISWHITE * * @resunit: #VipsForeignTiffResunit for resolution unit * * @xres: %gdouble horizontal resolution in pixels/mm * * @yres: %gdouble vertical resolution in pixels/mm * * @bigtiff: %gboolean, write a BigTiff file * * @properties: %gboolean, set %TRUE to write an IMAGEDESCRIPTION tag * * @region_shrink: #VipsRegionShrink How to shrink each 2x2 region. * * @level: %gint, Zstd compression level * * @lossless: %gboolean, WebP losssless mode * * Write a VIPS image to a file as TIFF. * * If @in has the #VIPS_META_PAGE_HEIGHT metadata item, this is assumed to be a * "toilet roll" image. It will be * written as series of pages, each #VIPS_META_PAGE_HEIGHT pixels high. * * Use @compression to set the tiff compression. Currently jpeg, packbits, * fax4, lzw, none, deflate, webp and zstd are supported. The default is no * compression. * JPEG compression is a good lossy compressor for photographs, packbits is * good for 1-bit images, and deflate is the best lossless compression TIFF * can do. * * Use @Q to set the JPEG compression factor. Default 75. * * User @level to set the ZSTD compression level. Use @lossless to * set WEBP lossless mode on. Use @Q to set the WEBP compression level. * * Use @predictor to set the predictor for lzw and deflate compression. It * defaults to #VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL, meaning horizontal * differencing. Please refer to the libtiff * specifications for further discussion of various predictors. * * Use @profile to give the filename of a profile to be embedded in the TIFF. * This does not affect the pixels which are written, just the way * they are tagged. See vips_profile_load() for details on profile naming. * * If no profile is specified and the VIPS header * contains an ICC profile named #VIPS_META_ICC_NAME, the * profile from the VIPS header will be attached. * * Set @tile to TRUE to write a tiled tiff. By default tiff are written in * strips. Use @tile_width and @tile_height to set the tile size. The defaiult * is 128 by 128. * * Set @pyramid to write the image as a set of images, one per page, of * decreasing size. Use @region_shrink to set how images will be shrunk: by * default each 2x2 block is just averaged, but you can set MODE or MEDIAN as * well. * * Set @squash to make 8-bit uchar images write as 1-bit TIFFs. Values >128 * are written as white, values <=128 as black. Normally vips will write * MINISBLACK TIFFs where black is a 0 bit, but if you set @miniswhite, it * will use 0 for a white bit. Many pre-press applications only work with * images which use this sense. @miniswhite only affects one-bit images, it * does nothing for greyscale images. * * Set @squash to squash 3-band float CIELAB images down to 8-bit CIELAB. * * Use @resunit to override the default resolution unit. * The default * resolution unit is taken from the header field * #VIPS_META_RESOLUTION_UNIT. If this field is not set, then * VIPS defaults to cm. * * Use @xres and @yres to override the default horizontal and vertical * resolutions. By default these values are taken from the VIPS image header. * libvips resolution is always in pixels per millimetre. * * Set @bigtiff to attempt to write a bigtiff. * Bigtiff is a variant of the TIFF * format that allows more than 4GB in a file. * * Set @properties to write all vips metadata to the IMAGEDESCRIPTION tag as * xml. If @properties is not set, the value of #VIPS_META_IMAGEDESCRIPTION is * used instead. * * The value of #VIPS_META_XMP_NAME is written to * the XMP tag. #VIPS_META_ORIENTATION (if set) is used to set the value of * the orientation * tag. #VIPS_META_IPTC (if set) is used to set the value of the IPTC tag. * #VIPS_META_PHOTOSHOP_NAME (if set) is used to set the value of the PHOTOSHOP * tag. * * See also: vips_tiffload(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_tiffsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "tiffsave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_tiffsave_buffer: (method) * @in: image to save * @buf: (array length=len) (element-type guint8): return output buffer here * @len: (type gsize): return output length here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @compression: use this #VipsForeignTiffCompression * * @Q: %gint quality factor * * @predictor: use this #VipsForeignTiffPredictor * * @profile: %gchararray, filename of ICC profile to attach * * @tile: %gboolean, set %TRUE to write a tiled tiff * * @tile_width: %gint for tile size * * @tile_height: %gint for tile size * * @pyramid: %gboolean, write an image pyramid * * @squash: %gboolean, squash 8-bit images down to 1 bit * * @miniswhite: %gboolean, write 1-bit images as MINISWHITE * * @resunit: #VipsForeignTiffResunit for resolution unit * * @xres: %gdouble horizontal resolution in pixels/mm * * @yres: %gdouble vertical resolution in pixels/mm * * @bigtiff: %gboolean, write a BigTiff file * * @properties: %gboolean, set %TRUE to write an IMAGEDESCRIPTION tag * * @region_shrink: #VipsRegionShrink How to shrink each 2x2 region. * * @level: %gint, Zstd compression level * * @lossless: %gboolean, WebP losssless mode * * As vips_tiffsave(), but save to a memory buffer. * * The address of the buffer is returned in @buf, the length of the buffer in * @len. You are responsible for freeing the buffer with g_free() when you * are done with it. * * See also: vips_tiffsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_tiffsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) { va_list ap; VipsArea *area; int result; area = NULL; va_start( ap, len ); result = vips_call_split( "tiffsave_buffer", ap, in, &area ); va_end( ap ); if( !result && area ) { if( buf ) { *buf = area->data; area->free_fn = NULL; } if( len ) *len = area->length; vips_area_unref( area ); } return( result ); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libvips-8.9.1/libvips/foreign/vips2jpeg.c�����������������������������������������������������������0000664�0000000�0000000�00000050152�13611533207�0020363�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wrap jpeg libray for write * * 28/11/03 JC * - better no-overshoot on tile loop * 12/11/04 * - better demand size choice for eval * 30/6/05 JC * - update im_error()/im_warn() * - now loads and saves exif data * 30/7/05 * - now loads ICC profiles * - now saves ICC profiles from the VIPS header * 24/8/05 * - jpeg load sets vips xres/yres from exif, if possible * - jpeg save sets exif xres/yres from vips, if possible * 29/8/05 * - cut from old vips_jpeg.c * 20/4/06 * - auto convert to sRGB/mono for save * 13/10/06 * - add = 90 * 7/11/16 * - move exif handling out to exif.c * 27/2/17 * - use dbuf for memory output * 19/12/17 Lovell * - fix a leak with an error during buffer output * 19/4/19 * - fix another leak with error during buffer output * 19/7/19 * - ignore large XMP * 14/10/19 * - revise for target IO */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_JPEG #include #include #include #include #include #include #include #include #include "pforeign.h" #include "jpeg.h" /* New output message method - send to VIPS. */ void vips__new_output_message( j_common_ptr cinfo ) { char buffer[JMSG_LENGTH_MAX]; (*cinfo->err->format_message)( cinfo, buffer ); vips_error( "VipsJpeg", _( "%s" ), buffer ); #ifdef DEBUG printf( "vips__new_output_message: \"%s\"\n", buffer ); #endif /*DEBUG*/ /* This is run for things like file truncated. Signal invalidate to * force this op out of cache. */ if( cinfo->client_data ) vips_foreign_load_invalidate( VIPS_IMAGE( cinfo->client_data ) ); } /* New error_exit handler. */ void vips__new_error_exit( j_common_ptr cinfo ) { ErrorManager *eman = (ErrorManager *) cinfo->err; #ifdef DEBUG printf( "vips__new_error_exit:\n" ); #endif /*DEBUG*/ /* Close the fp if necessary. */ if( eman->fp ) { (void) fclose( eman->fp ); eman->fp = NULL; } /* Send the error message to VIPS. This method is overridden above. */ (*cinfo->err->output_message)( cinfo ); /* Jump back. */ longjmp( eman->jmp, 1 ); } /* What we track during a JPEG write. */ typedef struct { VipsImage *in; struct jpeg_compress_struct cinfo; ErrorManager eman; JSAMPROW *row_pointer; VipsImage *inverted; } Write; static void write_destroy( Write *write ) { jpeg_destroy_compress( &write->cinfo ); VIPS_FREE( write->row_pointer ); VIPS_UNREF( write->inverted ); VIPS_UNREF( write->in ); g_free( write ); } static Write * write_new( VipsImage *in ) { Write *write; if( !(write = g_new0( Write, 1 )) ) return( NULL ); write->in = NULL; write->row_pointer = NULL; write->cinfo.err = jpeg_std_error( &write->eman.pub ); write->cinfo.dest = NULL; write->eman.pub.error_exit = vips__new_error_exit; write->eman.pub.output_message = vips__new_output_message; write->eman.fp = NULL; write->inverted = NULL; if( vips_copy( in, &write->in, NULL ) || vips__exif_update( write->in ) ) { write_destroy( write ); return( NULL ); } return( write ); } static int write_blob( Write *write, const char *field, int app ) { unsigned char *data; size_t data_length; if( vips_image_get_typeof( write->in, field ) ) { if( vips_image_get_blob( write->in, field, (void *) &data, &data_length ) ) return( -1 ); /* Single jpeg markers can only hold 64kb, large objects must * be split into multiple markers. * * Unfortunately, how this splitting is done depends on the * data type. For example, ICC and XMP have completely * different ways of doing this. * * For now, just ignore oversize objects and warn. */ if( data_length > 65530 ) g_warning( _( "field \"%s\" is too large " "for a single JPEG marker, ignoring" ), field ); else { #ifdef DEBUG printf( "write_blob: attaching %zd bytes of %s\n", data_length, field ); #endif /*DEBUG*/ jpeg_write_marker( &write->cinfo, app, data, data_length ); } } return( 0 ); } #define XML_URL "http://ns.adobe.com/xap/1.0/" static int write_xmp( Write *write ) { unsigned char *data; size_t data_length; char *p; if( !vips_image_get_typeof( write->in, VIPS_META_XMP_NAME ) ) return( 0 ); if( vips_image_get_blob( write->in, VIPS_META_XMP_NAME, (void *) &data, &data_length ) ) return( -1 ); /* To write >64kb XMP it you need to parse the whole XMP object, * pull out the most important fields, code just them into the main * XMP block, then write any remaining XMP objects into a set of * extended XMP markers. * * http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/ \ * XMPSpecificationPart3.pdf * * jpeg_write_marker() with some libjpeg versions will throw a fatal * error with large chunks. */ if( data_length > 60000 ) { g_warning( "%s", _( "VipsJpeg: large XMP not saved" ) ); return( 0 ); } /* We need to add the magic XML URL to the start, then a null * character, then the data. */ p = g_malloc( data_length + strlen( XML_URL ) + 1 ); strcpy( p, XML_URL ); memcpy( p + strlen( XML_URL ) + 1, data, data_length ); jpeg_write_marker( &write->cinfo, JPEG_APP0 + 1, (unsigned char *) p, data_length + strlen( XML_URL ) + 1 ); g_free( p ); return( 0 ); } static int write_exif( Write *write ) { if( write_blob( write, VIPS_META_EXIF_NAME, JPEG_APP0 + 1 ) ) return( -1 ); return( 0 ); } /* ICC writer from lcms, slight tweaks. */ #define ICC_MARKER (JPEG_APP0 + 2) /* JPEG marker code for ICC */ #define ICC_OVERHEAD_LEN 14 /* size of non-profile data in APP2 */ #define MAX_BYTES_IN_MARKER 65533 /* maximum data len of a JPEG marker */ #define MAX_DATA_BYTES_IN_MARKER (MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN) /* * This routine writes the given ICC profile data into a JPEG file. * It *must* be called AFTER calling jpeg_start_compress() and BEFORE * the first call to jpeg_write_scanlines(). * (This ordering ensures that the APP2 marker(s) will appear after the * SOI and JFIF or Adobe markers, but before all else.) */ static void write_profile_data (j_compress_ptr cinfo, const JOCTET *icc_data_ptr, unsigned int icc_data_len) { unsigned int num_markers; /* total number of markers we'll write */ int cur_marker = 1; /* per spec, counting starts at 1 */ unsigned int length; /* number of bytes to write in this marker */ /* rounding up will fail for length == 0 */ g_assert( icc_data_len > 0 ); /* Calculate the number of markers we'll need, rounding up of course */ num_markers = (icc_data_len + MAX_DATA_BYTES_IN_MARKER - 1) / MAX_DATA_BYTES_IN_MARKER; while (icc_data_len > 0) { /* length of profile to put in this marker */ length = icc_data_len; if (length > MAX_DATA_BYTES_IN_MARKER) length = MAX_DATA_BYTES_IN_MARKER; icc_data_len -= length; /* Write the JPEG marker header (APP2 code and marker length) */ jpeg_write_m_header(cinfo, ICC_MARKER, (unsigned int) (length + ICC_OVERHEAD_LEN)); /* Write the marker identifying string "ICC_PROFILE" (null-terminated). * We code it in this less-than-transparent way so that the code works * even if the local character set is not ASCII. */ jpeg_write_m_byte(cinfo, 0x49); jpeg_write_m_byte(cinfo, 0x43); jpeg_write_m_byte(cinfo, 0x43); jpeg_write_m_byte(cinfo, 0x5F); jpeg_write_m_byte(cinfo, 0x50); jpeg_write_m_byte(cinfo, 0x52); jpeg_write_m_byte(cinfo, 0x4F); jpeg_write_m_byte(cinfo, 0x46); jpeg_write_m_byte(cinfo, 0x49); jpeg_write_m_byte(cinfo, 0x4C); jpeg_write_m_byte(cinfo, 0x45); jpeg_write_m_byte(cinfo, 0x0); /* Add the sequencing info */ jpeg_write_m_byte(cinfo, cur_marker); jpeg_write_m_byte(cinfo, (int) num_markers); /* Add the profile data */ while (length--) { jpeg_write_m_byte(cinfo, *icc_data_ptr); icc_data_ptr++; } cur_marker++; } } /* Write an ICC Profile from a file into the JPEG stream. */ static int write_profile_file( Write *write, const char *profile ) { VipsBlob *blob; if( vips_profile_load( profile, &blob, NULL ) ) return( -1 ); if( blob ) { size_t length; const void *data = vips_blob_get( blob, &length ); write_profile_data( &write->cinfo, (JOCTET *) data, length ); #ifdef DEBUG printf( "write_profile_file: " "attached profile \"%s\"\n", profile ); #endif /*DEBUG*/ vips_area_unref( (VipsArea *) blob ); } return( 0 ); } static int write_profile_meta( Write *write ) { const void *data; size_t length; if( vips_image_get_blob( write->in, VIPS_META_ICC_NAME, &data, &length ) ) return( -1 ); write_profile_data( &write->cinfo, data, length ); #ifdef DEBUG printf( "write_profile_meta: attached %zd byte profile from header\n", length ); #endif /*DEBUG*/ return( 0 ); } static int write_jpeg_block( VipsRegion *region, VipsRect *area, void *a ) { Write *write = (Write *) a; int i; for( i = 0; i < area->height; i++ ) write->row_pointer[i] = (JSAMPROW) VIPS_REGION_ADDR( region, 0, area->top + i ); /* Catch any longjmp()s from jpeg_write_scanlines() here. */ if( setjmp( write->eman.jmp ) ) return( -1 ); jpeg_write_scanlines( &write->cinfo, write->row_pointer, area->height ); return( 0 ); } /* Write a VIPS image to a JPEG compress struct. */ static int write_vips( Write *write, int qfac, const char *profile, gboolean optimize_coding, gboolean progressive, gboolean strip, gboolean no_subsample, gboolean trellis_quant, gboolean overshoot_deringing, gboolean optimize_scans, int quant_table ) { VipsImage *in; J_COLOR_SPACE space; /* The image we'll be writing ... can change, see CMYK. */ in = write->in; /* Should have been converted for save. */ g_assert( in->BandFmt == VIPS_FORMAT_UCHAR ); g_assert( in->Coding == VIPS_CODING_NONE ); g_assert( in->Bands == 1 || in->Bands == 3 || in->Bands == 4 ); /* Check input image. */ if( vips_image_pio_input( in ) ) return( -1 ); /* Set compression parameters. */ write->cinfo.image_width = in->Xsize; write->cinfo.image_height = in->Ysize; write->cinfo.input_components = in->Bands; if( in->Bands == 4 && in->Type == VIPS_INTERPRETATION_CMYK ) { space = JCS_CMYK; /* IJG always sets an Adobe marker, so we should invert CMYK. */ if( vips_invert( in, &write->inverted, NULL ) ) return( -1 ); in = write->inverted; } else if( in->Bands == 3 ) space = JCS_RGB; else if( in->Bands == 1 ) space = JCS_GRAYSCALE; else /* Use luminance compression for all channels. */ space = JCS_UNKNOWN; write->cinfo.in_color_space = space; /* Build VIPS output stuff now we know the image we'll be writing. */ if( !(write->row_pointer = VIPS_ARRAY( NULL, in->Ysize, JSAMPROW )) ) return( -1 ); #ifdef HAVE_JPEG_EXT_PARAMS /* Reset compression profile to libjpeg defaults */ if( jpeg_c_int_param_supported( &write->cinfo, JINT_COMPRESS_PROFILE ) ) jpeg_c_set_int_param( &write->cinfo, JINT_COMPRESS_PROFILE, JCP_FASTEST ); #endif /* Reset to default. */ jpeg_set_defaults( &write->cinfo ); /* Compute optimal Huffman coding tables. */ write->cinfo.optimize_coding = optimize_coding; #ifdef HAVE_JPEG_EXT_PARAMS /* Apply trellis quantisation to each 8x8 block. Implies * "optimize_coding". */ if( trellis_quant ) { if( jpeg_c_bool_param_supported( &write->cinfo, JBOOLEAN_TRELLIS_QUANT ) ) { jpeg_c_set_bool_param( &write->cinfo, JBOOLEAN_TRELLIS_QUANT, TRUE ); write->cinfo.optimize_coding = TRUE; } else g_warning( "%s", _( "trellis_quant unsupported" ) ); } /* Apply overshooting to samples with extreme values e.g. 0 & 255 * for 8-bit. */ if( overshoot_deringing ) { if( jpeg_c_bool_param_supported( &write->cinfo, JBOOLEAN_OVERSHOOT_DERINGING ) ) jpeg_c_set_bool_param( &write->cinfo, JBOOLEAN_OVERSHOOT_DERINGING, TRUE ); else g_warning( "%s", _( "overshoot_deringing unsupported" ) ); } /* Split the spectrum of DCT coefficients into separate scans. * Requires progressive output. Must be set before * jpeg_simple_progression. */ if( optimize_scans ) { if( progressive ) { if( jpeg_c_bool_param_supported( &write->cinfo, JBOOLEAN_OPTIMIZE_SCANS ) ) jpeg_c_set_bool_param( &write->cinfo, JBOOLEAN_OPTIMIZE_SCANS, TRUE ); else g_warning( "%s", _( "ignoring optimize_scans" ) ); } else g_warning( "%s", _( "ignoring optimize_scans for baseline" ) ); } /* Use predefined quantization table. */ if( quant_table > 0 ) { if( jpeg_c_int_param_supported( &write->cinfo, JINT_BASE_QUANT_TBL_IDX ) ) jpeg_c_set_int_param( &write->cinfo, JINT_BASE_QUANT_TBL_IDX, quant_table ); else g_warning( "%s", _( "setting quant_table unsupported" ) ); } #else /* Using jpeglib.h without extension parameters, warn of ignored * options. */ if( trellis_quant ) g_warning( "%s", _( "ignoring trellis_quant" ) ); if( overshoot_deringing ) g_warning( "%s", _( "ignoring overshoot_deringing" ) ); if( optimize_scans ) g_warning( "%s", _( "ignoring optimize_scans" ) ); if( quant_table > 0 ) g_warning( "%s", _( "ignoring quant_table" ) ); #endif /* Set compression quality. Must be called after setting params above. */ jpeg_set_quality( &write->cinfo, qfac, TRUE ); /* Enable progressive write. */ if( progressive ) jpeg_simple_progression( &write->cinfo ); /* Turn off chroma subsampling. Follow IM and do it automatically for * high Q. */ if( no_subsample || qfac >= 90 ) { int i; for( i = 0; i < in->Bands; i++ ) { write->cinfo.comp_info[i].h_samp_factor = 1; write->cinfo.comp_info[i].v_samp_factor = 1; } } /* Don't write the APP0 JFIF headers if we are stripping. */ if( strip ) write->cinfo.write_JFIF_header = FALSE; /* Build compress tables. */ jpeg_start_compress( &write->cinfo, TRUE ); /* Write any APP markers we need. */ if( !strip ) { if( write_exif( write ) || write_xmp( write ) || write_blob( write, VIPS_META_IPTC_NAME, JPEG_APP0 + 13 ) ) return( -1 ); /* A profile supplied as an argument overrides an embedded * profile. */ if( profile && write_profile_file( write, profile ) ) return( -1 ); if( !profile && vips_image_get_typeof( in, VIPS_META_ICC_NAME ) && write_profile_meta( write ) ) return( -1 ); } /* Write data. Note that the write function grabs the longjmp()! */ if( vips_sink_disc( in, write_jpeg_block, write ) ) return( -1 ); /* We have to reinstate the setjmp() before we jpeg_finish_compress(). */ if( setjmp( write->eman.jmp ) ) return( -1 ); /* This should only be called on a successful write. */ jpeg_finish_compress( &write->cinfo ); return( 0 ); } #define TARGET_BUFFER_SIZE (4096) typedef struct { /* Public jpeg fields. */ struct jpeg_destination_mgr pub; /* Private stuff during write. */ /* Build the output area here. */ VipsTarget *target; /* Our output buffer. */ unsigned char buf[TARGET_BUFFER_SIZE]; } Dest; /* Buffer full method. This is only called when the output area is exactly * full. */ static jboolean empty_output_buffer( j_compress_ptr cinfo ) { Dest *dest = (Dest *) cinfo->dest; if( vips_target_write( dest->target, dest->buf, TARGET_BUFFER_SIZE ) ) ERREXIT( cinfo, JERR_FILE_WRITE ); dest->pub.next_output_byte = dest->buf; dest->pub.free_in_buffer = TARGET_BUFFER_SIZE; return( TRUE ); } /* Init dest method. */ static void init_destination( j_compress_ptr cinfo ) { Dest *dest = (Dest *) cinfo->dest; dest->pub.next_output_byte = dest->buf; dest->pub.free_in_buffer = TARGET_BUFFER_SIZE; } /* Flush any remaining bytes to the output. */ static void term_destination( j_compress_ptr cinfo ) { Dest *dest = (Dest *) cinfo->dest; if( vips_target_write( dest->target, dest->buf, TARGET_BUFFER_SIZE - dest->pub.free_in_buffer ) ) ERREXIT( cinfo, JERR_FILE_WRITE ); vips_target_finish( dest->target ); } /* Set dest to one of our objects. */ static void target_dest( j_compress_ptr cinfo, VipsTarget *target ) { Dest *dest; if( !cinfo->dest ) { /* first time for this JPEG object? */ cinfo->dest = (struct jpeg_destination_mgr *) (*cinfo->mem->alloc_small) ( (j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof( Dest ) ); } dest = (Dest *) cinfo->dest; dest->pub.init_destination = init_destination; dest->pub.empty_output_buffer = empty_output_buffer; dest->pub.term_destination = term_destination; dest->target = target; } int vips__jpeg_write_target( VipsImage *in, VipsTarget *target, int Q, const char *profile, gboolean optimize_coding, gboolean progressive, gboolean strip, gboolean no_subsample, gboolean trellis_quant, gboolean overshoot_deringing, gboolean optimize_scans, int quant_table ) { Write *write; if( !(write = write_new( in )) ) return( -1 ); /* Make jpeg compression object. */ if( setjmp( write->eman.jmp ) ) { /* Here for longjmp() during write_vips(). */ write_destroy( write ); return( -1 ); } jpeg_create_compress( &write->cinfo ); /* Attach output. */ target_dest( &write->cinfo, target ); /* Convert! Write errors come back here as an error return. */ if( write_vips( write, Q, profile, optimize_coding, progressive, strip, no_subsample, trellis_quant, overshoot_deringing, optimize_scans, quant_table ) ) { write_destroy( write ); return( -1 ); } write_destroy( write ); return( 0 ); } const char *vips__jpeg_suffs[] = { ".jpg", ".jpeg", ".jpe", NULL }; #endif /*HAVE_JPEG*/ libvips-8.9.1/libvips/foreign/vips2tiff.c000066400000000000000000001401231361153320700203640ustar00rootroot00000000000000/* TIFF PARTS: * Copyright (c) 1988, 1990 by Sam Leffler. * All rights reserved. * * This file is provided for unrestricted use provided that this * legend is included on all tape media and as a part of the * software program in whole or part. Users may copy, modify or * distribute this file at will. * * MODIFICATION FOR VIPS Copyright 1991, K.Martinez * * software may be distributed FREE, with these copyright notices * no responsibility/warantee is implied or given * * * Modified and added im_LabQ2LabC() function. It can write IM_TYPE_LABQ image * in vips format to LAB in tiff format. * Copyright 1994 Ahmed Abbood. * * 19/9/95 JC * - calls TIFFClose() more reliably * - tidied up * 12/4/97 JC * - thrown away and rewritten for TIFF 6 lib * 22/4/97 JC * - writes a pyramid! * - to separate TIFF files tho' * 23/4/97 JC * - does 2nd gather pass to put pyramid into a single TIFF file * - ... and shrinks IM_CODING_LABQ too * 26/10/98 JC * - binary open for stupid systems * 7/6/99 JC * - 16bit TIFF write too * 9/7/99 JC * - ZIP tiff added * 11/5/00 JC * - removed TIFFmalloc/TIFFfree * 5/8/00 JC * - mode string now part of filename * 23/4/01 JC * - HAVE_TIFF turns on TIFFness * 19/3/02 ruven * - pyramid stops at tile size, not 64x64 * 29/4/02 JC * - write any number of bands (but still with photometric RGB, so not * very useful) * 10/9/02 JC * - oops, handle TIFF errors better * - now writes CMYK correctly * 13/2/03 JC * - tries not to write mad resolutions * 7/5/03 JC * - only write CMYK if Type == CMYK * - writes EXTRASAMPLES ALPHA for bands == 2 or 4 (if we're writing RGB) * 17/11/03 JC * - write float too * 28/11/03 JC * - read via a "p" so we work from mmap window images * - uses threadgroups for speedup * 9/3/04 JC * - 1 bit write mode added * 5/4/04 * - better handling of edge tiles (thanks Ruven) * 18/5/04 Andrey Kiselev * - added res_inch/res_cm option * 20/5/04 JC * - allow single res number too * 19/7/04 * - write several scanlines at once, good speed up for some cases * 22/9/04 * - got rid of wrapper image so nip gets progress feedback * - fixed tiny read-beyond-buffer issue for edge tiles * 7/10/04 * - added ICC profile embedding * 13/12/04 * - can now pyramid any non-complex type (thanks Ruven) * 27/1/05 * - added ccittfax4 as a compression option * 9/3/05 * - set PHOTOMETRIC_CIELAB for vips TYPE_LAB images ... so we can write * float LAB as well as float RGB * - also LABS images * 22/6/05 * - 16 bit LAB write was broken * 9/9/05 * - write any icc profile from meta * 3/3/06 * - raise tile buffer limit (thanks Ruven) * 11/11/06 * - set ORIENTATION_TOPLEFT (thanks Josef) * 18/7/07 Andrey Kiselev * - remove "b" option on TIFFOpen() * - support TIFFTAG_PREDICTOR types for lzw and deflate compression * 3/11/07 * - use im_wbuffer() for background writes * 15/2/08 * - set TIFFTAG_JPEGQUALITY explicitly when we copy TIFF files, since * libtiff doesn't keep this in the header (thanks Joe) * 20/2/08 * - use tiff error handler from im_tiff2vips.c * 27/2/08 * - don't try to copy icc profiles when building pyramids (thanks Joe) * 9/4/08 * - use IM_META_RESOLUTION_UNIT to set default resunit * 17/4/08 * - allow CMYKA (thanks Doron) * 5/9/08 * - trigger eval callbacks during tile write * 4/2/10 * - gtkdoc * 26/2/10 * - option to turn on bigtiff output * 16/4/10 * - use vips_sink_*() instead of threadgroup and friends * 22/6/10 * - make no-owner regions for the tile cache, since we share these * between threads * 12/7/11 * - use im__temp_name() for intermediates rather than polluting the * output directory * 5/9/11 * - enable YCbCr compression for jpeg write * 23/11/11 * - set reduced-resolution subfile type on pyramid layers * 2/12/11 * - make into a simple function call ready to be wrapped as a new-style * VipsForeign class * 21/3/12 * - bump max layer buffer up * 2/6/12 * - copy jpeg pyramid in gather in RGB mode ... tiff4 doesn't do ycbcr * mode * 7/8/12 * - be more cautious enabling YCbCr mode * 24/9/13 * - support many more vips formats, eg. complex, 32-bit int, any number * of bands, etc., see the tiff loader * 26/1/14 * - add RGB as well as YCbCr write * 20/11/14 * - cache input in tile write mode to keep us sequential * 3/12/14 * - embed XMP in output * 10/12/14 * - zero out edge tile buffers before jpeg wtiff, thanks iwbh15 * 19/1/15 * - disable chroma subsample if Q >= 90 * 13/2/15 * - append later layers, don't copy the base image * - use the nice dzsave pyramid code, much faster and simpler * - we now allow strip pyramids * 27/3/15 * - squash >128 rather than >0, nicer results for shrink * - add miniswhite option * 29/9/15 * - try to write IPTC metadata * - try to write photoshop metadata * 11/11/15 * - better alpha handling, thanks sadaqatullahn * 21/12/15 * - write TIFFTAG_IMAGEDESCRIPTION * 2/6/16 * - support strip option * 4/7/16 * - tag alpha as UNASSALPHA since it's not pre-multiplied, thanks Peter * 17/8/16 * - use wchar_t TIFFOpen on Windows * 14/10/16 * - add buffer output * 29/1/17 * - enable bigtiff automatically for large, uncompressed writes, thanks * AndreasSchmid1 * 26/8/17 * - support pyramid creation to buffer, thanks bubba * 24/10/17 * - no error on page-height not a factor of image height, just don't * write multipage * 13/6/18 * - add region_shrink * 2/7/18 * - copy EXTRASAMPLES to pyramid layers * 21/12/18 * - stop pyr layers if width or height drop to 1 * 8/7/19 * - add webp and zstd support * - add @level and @lossless * 18/12/19 * - "squash" now squashes 3-band float LAB down to LABQ */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_TIFF #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include "pforeign.h" #include "tiff.h" /* Max number of alpha channels we allow. */ #define MAX_ALPHA (64) typedef struct _Layer Layer; typedef struct _Wtiff Wtiff; /* A layer in the pyramid. */ struct _Layer { Wtiff *wtiff; /* Main wtiff struct */ /* The filename for this layer, for file output. */ char *lname; /* The memory area for this layer, for memory output. */ void *buf; size_t len; int width, height; /* Layer size */ int sub; /* Subsample factor for this layer */ TIFF *tif; /* TIFF file we write this layer to */ /* The image we build. We only keep a few scanlines of this around in * @strip. */ VipsImage *image; /* The y position of strip in image. */ int y; /* The next line we write to in strip. */ int write_y; VipsRegion *strip; /* The current strip of pixels */ VipsRegion *copy; /* Pixels we copy to the next strip */ Layer *below; /* The smaller layer below us */ Layer *above; /* The larger layer above */ }; /* A TIFF image in the process of being written. */ struct _Wtiff { VipsImage *input; /* Original input image */ /* Image transformed ready for write. */ VipsImage *ready; /* File to write to, or NULL. */ char *filename; /* Name we write to */ /* Memory area to output, or NULL. */ void **obuf; size_t *olen; Layer *layer; /* Top of pyramid */ VipsPel *tbuf; /* TIFF output buffer */ int tls; /* Tile line size */ int compression; /* Compression type */ int Q; /* JPEG q-factor, webp level */ int predictor; /* Predictor value */ int tile; /* Tile or not */ int tilew, tileh; /* Tile size */ int pyramid; /* Wtiff pyramid */ int squash; /* Write as small format */ int miniswhite; /* Wtiff as 0 == white */ int resunit; /* Resolution unit (inches or cm) */ double xres; /* Resolution in X */ double yres; /* Resolution in Y */ char *icc_profile; /* Profile to embed */ int bigtiff; /* True for bigtiff write */ int rgbjpeg; /* True for RGB not YCbCr */ int properties; /* Set to save XML props */ int strip; /* Don't write metadata */ VipsRegionShrink region_shrink; /* How to shrink regions */ int level; /* zstd compression level */ gboolean lossless; /* webp lossless mode */ /* True if we've detected a toilet-roll image, plus the page height, * which has been checked to be a factor of im->Ysize. */ gboolean toilet_roll; int page_height; /* The height of the TIFF we write. Equal to page_height in toilet * roll mode. */ int image_height; }; /* Write an ICC Profile from a file into the JPEG stream. */ static int embed_profile_file( TIFF *tif, const char *profile ) { VipsBlob *blob; if( vips_profile_load( profile, &blob, NULL ) ) return( -1 ); if( blob ) { size_t length; const void *data = vips_blob_get( blob, &length ); TIFFSetField( tif, TIFFTAG_ICCPROFILE, length, data ); #ifdef DEBUG printf( "vips2tiff: attached profile \"%s\"\n", profile ); #endif /*DEBUG*/ vips_area_unref( (VipsArea *) blob ); } return( 0 ); } /* Embed an ICC profile from VipsImage metadata. */ static int embed_profile_meta( TIFF *tif, VipsImage *im ) { const void *data; size_t length; if( vips_image_get_blob( im, VIPS_META_ICC_NAME, &data, &length ) ) return( -1 ); TIFFSetField( tif, TIFFTAG_ICCPROFILE, length, data ); #ifdef DEBUG printf( "vips2tiff: attached profile from meta\n" ); #endif /*DEBUG*/ return( 0 ); } static Layer * wtiff_layer_new( Wtiff *wtiff, Layer *above, int width, int height ) { Layer *layer; layer = VIPS_NEW( wtiff->ready, Layer ); layer->wtiff = wtiff; layer->width = width; layer->height = height; if( !above ) /* Top of pyramid. */ layer->sub = 1; else layer->sub = above->sub * 2; layer->lname = NULL; layer->buf = NULL; layer->len = 0; layer->tif = NULL; layer->image = NULL; layer->write_y = 0; layer->y = 0; layer->strip = NULL; layer->copy = NULL; layer->below = NULL; layer->above = above; /* printf( "wtiff_layer_new: sub = %d, width = %d, height = %d\n", layer->sub, width, height ); */ if( wtiff->pyramid ) /* We make another layer if the image is too large to fit in a * single tile, and if neither axis is greater than 1. * * Very tall or wide images might end up with a smallest layer * larger than one tile. */ if( (layer->width > wtiff->tilew || layer->height > wtiff->tileh) && layer->width > 1 && layer->height > 1 ) layer->below = wtiff_layer_new( wtiff, layer, width / 2, height / 2 ); /* The name for the top layer is the output filename. * * We need lname to be freed automatically: it has to stay * alive until after wtiff_gather(). */ if( wtiff->filename ) { if( !above ) layer->lname = vips_strdup( VIPS_OBJECT( wtiff->ready ), wtiff->filename ); else { char *lname; lname = vips__temp_name( "%s.tif" ); layer->lname = vips_strdup( VIPS_OBJECT( wtiff->ready ), lname ); g_free( lname ); } } return( layer ); } static int wtiff_embed_profile( Wtiff *wtiff, TIFF *tif ) { if( wtiff->icc_profile && embed_profile_file( tif, wtiff->icc_profile ) ) return( -1 ); if( !wtiff->icc_profile && vips_image_get_typeof( wtiff->ready, VIPS_META_ICC_NAME ) && embed_profile_meta( tif, wtiff->ready ) ) return( -1 ); return( 0 ); } static int wtiff_embed_xmp( Wtiff *wtiff, TIFF *tif ) { const void *data; size_t size; if( !vips_image_get_typeof( wtiff->ready, VIPS_META_XMP_NAME ) ) return( 0 ); if( vips_image_get_blob( wtiff->ready, VIPS_META_XMP_NAME, &data, &size ) ) return( -1 ); TIFFSetField( tif, TIFFTAG_XMLPACKET, size, data ); #ifdef DEBUG printf( "vips2tiff: attached XMP from meta\n" ); #endif /*DEBUG*/ return( 0 ); } static int wtiff_embed_iptc( Wtiff *wtiff, TIFF *tif ) { const void *data; size_t size; if( !vips_image_get_typeof( wtiff->ready, VIPS_META_IPTC_NAME ) ) return( 0 ); if( vips_image_get_blob( wtiff->ready, VIPS_META_IPTC_NAME, &data, &size ) ) return( -1 ); /* For no very good reason, libtiff stores IPTC as an array of * long, not byte. */ if( size & 3 ) { g_warning( "%s", _( "rounding up IPTC data length" ) ); size /= 4; size += 1; } else size /= 4; TIFFSetField( tif, TIFFTAG_RICHTIFFIPTC, size, data ); #ifdef DEBUG printf( "vips2tiff: attached IPTC from meta\n" ); #endif /*DEBUG*/ return( 0 ); } static int wtiff_embed_photoshop( Wtiff *wtiff, TIFF *tif ) { const void *data; size_t size; if( !vips_image_get_typeof( wtiff->ready, VIPS_META_PHOTOSHOP_NAME ) ) return( 0 ); if( vips_image_get_blob( wtiff->ready, VIPS_META_PHOTOSHOP_NAME, &data, &size ) ) return( -1 ); TIFFSetField( tif, TIFFTAG_PHOTOSHOP, size, data ); #ifdef DEBUG printf( "vips2tiff: attached photoshop data from meta\n" ); #endif /*DEBUG*/ return( 0 ); } /* Set IMAGEDESCRIPTION, if it's there. If @properties is TRUE, set from * vips' metadata. */ static int wtiff_embed_imagedescription( Wtiff *wtiff, TIFF *tif ) { if( wtiff->properties ) { char *doc; if( !(doc = vips__xml_properties( wtiff->ready )) ) return( -1 ); TIFFSetField( tif, TIFFTAG_IMAGEDESCRIPTION, doc ); g_free( doc ); } else { const char *imagedescription; if( !vips_image_get_typeof( wtiff->ready, VIPS_META_IMAGEDESCRIPTION ) ) return( 0 ); if( vips_image_get_string( wtiff->ready, VIPS_META_IMAGEDESCRIPTION, &imagedescription ) ) return( -1 ); TIFFSetField( tif, TIFFTAG_IMAGEDESCRIPTION, imagedescription ); } #ifdef DEBUG printf( "vips2tiff: attached imagedescription from meta\n" ); #endif /*DEBUG*/ return( 0 ); } /* Write a TIFF header for this layer. */ static int wtiff_write_header( Wtiff *wtiff, Layer *layer ) { TIFF *tif = layer->tif; int format; int orientation; /* Output base header fields. */ TIFFSetField( tif, TIFFTAG_IMAGEWIDTH, layer->width ); TIFFSetField( tif, TIFFTAG_IMAGELENGTH, layer->height ); TIFFSetField( tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG ); TIFFSetField( tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT ); TIFFSetField( tif, TIFFTAG_COMPRESSION, wtiff->compression ); if( wtiff->compression == COMPRESSION_JPEG ) TIFFSetField( tif, TIFFTAG_JPEGQUALITY, wtiff->Q ); #ifdef HAVE_TIFF_COMPRESSION_WEBP if( wtiff->compression == COMPRESSION_WEBP ) { TIFFSetField( tif, TIFFTAG_WEBP_LEVEL, wtiff->Q ); TIFFSetField( tif, TIFFTAG_WEBP_LOSSLESS, wtiff->lossless ); } if( wtiff->compression == COMPRESSION_ZSTD ) TIFFSetField( tif, TIFFTAG_ZSTD_LEVEL, wtiff->level ); #endif /*HAVE_TIFF_COMPRESSION_WEBP*/ if( (wtiff->compression == VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE || wtiff->compression == VIPS_FOREIGN_TIFF_COMPRESSION_LZW) && wtiff->predictor != VIPS_FOREIGN_TIFF_PREDICTOR_NONE ) TIFFSetField( tif, TIFFTAG_PREDICTOR, wtiff->predictor ); /* Don't write mad resolutions (eg. zero), it confuses some programs. */ TIFFSetField( tif, TIFFTAG_RESOLUTIONUNIT, wtiff->resunit ); TIFFSetField( tif, TIFFTAG_XRESOLUTION, VIPS_FCLIP( 0.01, wtiff->xres, 1000000 ) ); TIFFSetField( tif, TIFFTAG_YRESOLUTION, VIPS_FCLIP( 0.01, wtiff->yres, 1000000 ) ); if( !wtiff->strip ) if( wtiff_embed_profile( wtiff, tif ) || wtiff_embed_xmp( wtiff, tif ) || wtiff_embed_iptc( wtiff, tif ) || wtiff_embed_photoshop( wtiff, tif ) || wtiff_embed_imagedescription( wtiff, tif ) ) return( -1 ); if( vips_image_get_typeof( wtiff->ready, VIPS_META_ORIENTATION ) && !vips_image_get_int( wtiff->ready, VIPS_META_ORIENTATION, &orientation ) ) TIFFSetField( tif, TIFFTAG_ORIENTATION, orientation ); /* And colour fields. */ if( wtiff->ready->Coding == VIPS_CODING_LABQ ) { TIFFSetField( tif, TIFFTAG_SAMPLESPERPIXEL, 3 ); TIFFSetField( tif, TIFFTAG_BITSPERSAMPLE, 8 ); TIFFSetField( tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_CIELAB ); } else if( wtiff->squash ) { TIFFSetField( tif, TIFFTAG_SAMPLESPERPIXEL, 1 ); TIFFSetField( tif, TIFFTAG_BITSPERSAMPLE, 1 ); TIFFSetField( tif, TIFFTAG_PHOTOMETRIC, wtiff->miniswhite ? PHOTOMETRIC_MINISWHITE : PHOTOMETRIC_MINISBLACK ); } else { int photometric; /* Number of bands that have colour in .. other bands are saved * as alpha. */ int colour_bands; int alpha_bands; TIFFSetField( tif, TIFFTAG_SAMPLESPERPIXEL, wtiff->ready->Bands ); TIFFSetField( tif, TIFFTAG_BITSPERSAMPLE, vips_format_sizeof( wtiff->ready->BandFmt ) << 3 ); if( wtiff->ready->Type == VIPS_INTERPRETATION_B_W || wtiff->ready->Type == VIPS_INTERPRETATION_GREY16 || wtiff->ready->Bands < 3 ) { /* Mono or mono + alpha. */ photometric = wtiff->miniswhite ? PHOTOMETRIC_MINISWHITE : PHOTOMETRIC_MINISBLACK; colour_bands = 1; } else if( wtiff->ready->Type == VIPS_INTERPRETATION_LAB || wtiff->ready->Type == VIPS_INTERPRETATION_LABS ) { photometric = PHOTOMETRIC_CIELAB; colour_bands = 3; } else if( wtiff->ready->Type == VIPS_INTERPRETATION_CMYK && wtiff->ready->Bands >= 4 ) { photometric = PHOTOMETRIC_SEPARATED; TIFFSetField( tif, TIFFTAG_INKSET, INKSET_CMYK ); colour_bands = 4; } else if( wtiff->compression == COMPRESSION_JPEG && wtiff->ready->Bands == 3 && wtiff->ready->BandFmt == VIPS_FORMAT_UCHAR && (!wtiff->rgbjpeg && wtiff->Q < 90) ) { /* This signals to libjpeg that it can do * YCbCr chrominance subsampling from RGB, not * that we will supply the image as YCbCr. */ photometric = PHOTOMETRIC_YCBCR; TIFFSetField( tif, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB ); colour_bands = 3; } else { /* Some kind of generic multi-band image with three or * more bands ... save the first three bands as RGB, * the rest as alpha. */ photometric = PHOTOMETRIC_RGB; colour_bands = 3; } alpha_bands = VIPS_CLIP( 0, wtiff->ready->Bands - colour_bands, MAX_ALPHA ); if( alpha_bands > 0 ) { uint16 v[MAX_ALPHA]; int i; /* EXTRASAMPLE_UNASSALPHA means generic extra * alpha-like channels. ASSOCALPHA means pre-multipled * alpha only. */ for( i = 0; i < alpha_bands; i++ ) v[i] = EXTRASAMPLE_UNASSALPHA; TIFFSetField( tif, TIFFTAG_EXTRASAMPLES, alpha_bands, v ); } TIFFSetField( tif, TIFFTAG_PHOTOMETRIC, photometric ); } /* Layout. */ if( wtiff->tile ) { TIFFSetField( tif, TIFFTAG_TILEWIDTH, wtiff->tilew ); TIFFSetField( tif, TIFFTAG_TILELENGTH, wtiff->tileh ); } else TIFFSetField( tif, TIFFTAG_ROWSPERSTRIP, wtiff->tileh ); if( layer->above ) /* Pyramid layer. */ TIFFSetField( tif, TIFFTAG_SUBFILETYPE, FILETYPE_REDUCEDIMAGE ); /* Sample format. */ format = SAMPLEFORMAT_UINT; if( vips_band_format_isuint( wtiff->ready->BandFmt ) ) format = SAMPLEFORMAT_UINT; else if( vips_band_format_isint( wtiff->ready->BandFmt ) ) format = SAMPLEFORMAT_INT; else if( vips_band_format_isfloat( wtiff->ready->BandFmt ) ) format = SAMPLEFORMAT_IEEEFP; else if( vips_band_format_iscomplex( wtiff->ready->BandFmt ) ) format = SAMPLEFORMAT_COMPLEXIEEEFP; TIFFSetField( tif, TIFFTAG_SAMPLEFORMAT, format ); return( 0 ); } static int wtiff_layer_rewind( Wtiff *wtiff, Layer *layer ) { VipsRect strip_size; /* Build a line of tiles here. * * Expand the strip if necessary to make sure we have an even * number of lines. */ strip_size.left = 0; strip_size.top = 0; strip_size.width = layer->image->Xsize; strip_size.height = wtiff->tileh; if( (strip_size.height & 1) == 1 ) strip_size.height += 1; if( vips_region_buffer( layer->strip, &strip_size ) ) return( -1 ); layer->y = 0; layer->write_y = 0; return( 0 ); } static int wtiff_allocate_layers( Wtiff *wtiff ) { Layer *layer; for( layer = wtiff->layer; layer; layer = layer->below ) { layer->image = vips_image_new(); if( vips_image_pipelinev( layer->image, VIPS_DEMAND_STYLE_ANY, wtiff->ready, NULL ) ) return( -1 ); layer->image->Xsize = layer->width; layer->image->Ysize = layer->height; layer->strip = vips_region_new( layer->image ); layer->copy = vips_region_new( layer->image ); /* The regions will get used in the bg thread callback, so * make sure we don't own them. */ vips__region_no_ownership( layer->strip ); vips__region_no_ownership( layer->copy ); if( wtiff_layer_rewind( wtiff, layer ) ) return( -1 ); if( layer->lname ) layer->tif = vips__tiff_openout( layer->lname, wtiff->bigtiff ); else { layer->tif = vips__tiff_openout_buffer( wtiff->ready, wtiff->bigtiff, &layer->buf, &layer->len ); } if( !layer->tif ) return( -1 ); if( wtiff_write_header( wtiff, layer ) ) return( -1 ); } return( 0 ); } /* Delete any temp files we wrote. */ static void wtiff_delete_temps( Wtiff *wtiff ) { Layer *layer; /* Don't delete the top layer: that's the output file. */ if( wtiff->layer && wtiff->layer->below ) for( layer = wtiff->layer->below; layer; layer = layer->below ) if( layer->lname ) { #ifndef DEBUG unlink( layer->lname ); VIPS_FREE( layer->buf ); #else printf( "wtiff_delete_temps: leaving %s\n", layer->lname ); #endif /*DEBUG*/ layer->lname = NULL; } } /* Free a single pyramid layer. */ static void layer_free( Layer *layer ) { VIPS_UNREF( layer->strip ); VIPS_UNREF( layer->copy ); VIPS_UNREF( layer->image ); VIPS_FREE( layer->buf ); VIPS_FREEF( TIFFClose, layer->tif ); } /* Free an entire pyramid. */ static void layer_free_all( Layer *layer ) { if( layer->below ) layer_free_all( layer->below ); layer_free( layer ); } static void wtiff_free( Wtiff *wtiff ) { wtiff_delete_temps( wtiff ); VIPS_UNREF( wtiff->ready ); VIPS_FREEF( vips_free, wtiff->tbuf ); VIPS_FREEF( layer_free_all, wtiff->layer ); VIPS_FREEF( vips_free, wtiff->icc_profile ); VIPS_FREE( wtiff->filename ); VIPS_FREE( wtiff ); } static int get_compression( VipsForeignTiffCompression compression ) { switch( compression ) { case VIPS_FOREIGN_TIFF_COMPRESSION_NONE: return( COMPRESSION_NONE ); case VIPS_FOREIGN_TIFF_COMPRESSION_JPEG: return( COMPRESSION_JPEG ); case VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE: return( COMPRESSION_ADOBE_DEFLATE ); case VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS: return( COMPRESSION_PACKBITS ); case VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4: return( COMPRESSION_CCITTFAX4 ); case VIPS_FOREIGN_TIFF_COMPRESSION_LZW: return( COMPRESSION_LZW ); #ifdef HAVE_TIFF_COMPRESSION_WEBP case VIPS_FOREIGN_TIFF_COMPRESSION_WEBP: return( COMPRESSION_WEBP ); case VIPS_FOREIGN_TIFF_COMPRESSION_ZSTD: return( COMPRESSION_ZSTD ); #endif /*HAVE_TIFF_COMPRESSION_WEBP*/ default: return( COMPRESSION_NONE ); } } static int get_resunit( VipsForeignTiffResunit resunit ) { switch( resunit ) { case VIPS_FOREIGN_TIFF_RESUNIT_CM: return( RESUNIT_CENTIMETER ); case VIPS_FOREIGN_TIFF_RESUNIT_INCH: return( RESUNIT_INCH ); default: g_assert_not_reached(); } /* Keep -Wall happy. */ return( -1 ); } /* Get the image ready to be written. */ static int ready_to_write( Wtiff *wtiff ) { if( vips_check_coding_known( "vips2tiff", wtiff->input ) ) return( -1 ); /* "squash" float LAB down to LABQ. */ if( wtiff->squash && wtiff->input->Bands == 3 && wtiff->input->BandFmt == VIPS_FORMAT_FLOAT && wtiff->input->Type == VIPS_INTERPRETATION_LAB ) { if( vips_Lab2LabQ( wtiff->input, &wtiff->ready, NULL ) ) return( -1 ); wtiff->squash = 0; } else { wtiff->ready = wtiff->input; g_object_ref( wtiff->ready ); } return( 0 ); } static Wtiff * wtiff_new( VipsImage *input, const char *filename, VipsForeignTiffCompression compression, int Q, VipsForeignTiffPredictor predictor, char *profile, gboolean tile, int tile_width, int tile_height, gboolean pyramid, gboolean squash, gboolean miniswhite, VipsForeignTiffResunit resunit, double xres, double yres, gboolean bigtiff, gboolean rgbjpeg, gboolean properties, gboolean strip, VipsRegionShrink region_shrink, int level, gboolean lossless ) { Wtiff *wtiff; if( !(wtiff = VIPS_NEW( NULL, Wtiff )) ) return( NULL ); wtiff->input = input; wtiff->ready = NULL; wtiff->filename = filename ? vips_strdup( NULL, filename ) : NULL; wtiff->layer = NULL; wtiff->tbuf = NULL; wtiff->compression = get_compression( compression ); wtiff->Q = Q; wtiff->predictor = predictor; wtiff->tile = tile; wtiff->tilew = tile_width; wtiff->tileh = tile_height; wtiff->pyramid = pyramid; wtiff->squash = squash; wtiff->miniswhite = miniswhite; wtiff->resunit = get_resunit( resunit ); wtiff->xres = xres; wtiff->yres = yres; wtiff->icc_profile = vips_strdup( NULL, profile ); wtiff->bigtiff = bigtiff; wtiff->rgbjpeg = rgbjpeg; wtiff->properties = properties; wtiff->strip = strip; wtiff->region_shrink = region_shrink; wtiff->level = level; wtiff->lossless = lossless; wtiff->toilet_roll = FALSE; wtiff->page_height = vips_image_get_page_height( input ); wtiff->image_height = input->Ysize; /* Any pre-processing on the image. */ if( ready_to_write( wtiff ) ) { wtiff_free( wtiff ); return( NULL ); } /* Multipage image? */ if( wtiff->page_height < wtiff->ready->Ysize ) { #ifdef DEBUG printf( "wtiff_new: detected toilet roll image, " "page-height=%d\n", wtiff->page_height ); printf( "wtiff_new: pages=%d\n", wtiff->ready->Ysize / wtiff->page_height ); #endif/*DEBUG*/ wtiff->toilet_roll = TRUE; wtiff->image_height = wtiff->page_height; /* We can't pyramid toilet roll images. */ if( wtiff->pyramid ) { g_warning( "%s", _( "can't pyramid multi page images --- " "disabling pyramid" ) ); wtiff->pyramid = FALSE; } } /* In strip mode we use tileh to set rowsperstrip, and that does not * have the multiple-of-16 restriction. */ if( tile ) { if( (wtiff->tilew & 0xf) != 0 || (wtiff->tileh & 0xf) != 0 ) { wtiff_free( wtiff ); vips_error( "vips2tiff", "%s", _( "tile size not a multiple of 16" ) ); return( NULL ); } } /* We can only pyramid LABQ and non-complex images. */ if( wtiff->pyramid ) { if( wtiff->ready->Coding == VIPS_CODING_NONE && vips_band_format_iscomplex( wtiff->ready->BandFmt ) ) { wtiff_free( wtiff ); vips_error( "vips2tiff", "%s", _( "can only pyramid LABQ and " "non-complex images" ) ); return( NULL ); } } /* Can only squash 8 bit mono. 3-band float should have been squashed * above. */ if( wtiff->squash && !(wtiff->ready->Coding == VIPS_CODING_NONE && wtiff->ready->BandFmt == VIPS_FORMAT_UCHAR && wtiff->ready->Bands == 1) ) { g_warning( "%s", _( "can only squash 1-band uchar and " "3-band float lab -- disabling squash" ) ); wtiff->squash = 0; } if( wtiff->squash && wtiff->compression == COMPRESSION_JPEG ) { g_warning( "%s", _( "can't have 1-bit JPEG -- disabling JPEG" ) ); wtiff->compression = COMPRESSION_NONE; } /* We can only MINISWHITE non-complex images of 1 or 2 bands. */ if( wtiff->miniswhite && (wtiff->ready->Coding != VIPS_CODING_NONE || vips_band_format_iscomplex( wtiff->ready->BandFmt ) || wtiff->ready->Bands > 2) ) { g_warning( "%s", _( "can only save non-complex greyscale images " "as miniswhite -- disabling miniswhite" ) ); wtiff->miniswhite = FALSE; } /* lossless is for webp only. */ #ifdef HAVE_TIFF_COMPRESSION_WEBP if( wtiff->lossless ) { if( wtiff->compression == COMPRESSION_NONE ) wtiff->compression = COMPRESSION_WEBP; if( wtiff->compression != COMPRESSION_WEBP ) { g_warning( "%s", _( "lossless is for WEBP compression only" ) ); wtiff->lossless = FALSE; } } #endif /*HAVE_TIFF_COMPRESSION_WEBP*/ /* Sizeof a line of bytes in the TIFF tile. */ if( wtiff->ready->Coding == VIPS_CODING_LABQ ) wtiff->tls = wtiff->tilew * 3; else if( wtiff->squash ) wtiff->tls = VIPS_ROUND_UP( wtiff->tilew, 8 ) / 8; else wtiff->tls = VIPS_IMAGE_SIZEOF_PEL( wtiff->ready ) * wtiff->tilew; /* If compression is off and we're writing a >4gb image, automatically * enable bigtiff. * * This won't always work. If the image data is just under 4gb but * there's a lot of metadata, we could be pushed over the 4gb limit. */ if( wtiff->compression == COMPRESSION_NONE && VIPS_IMAGE_SIZEOF_IMAGE( wtiff->ready ) > UINT_MAX && !wtiff->bigtiff ) { g_warning( "%s", _( "image over 4gb, enabling bigtiff" ) ); wtiff->bigtiff = TRUE; } /* Build the pyramid framework. */ wtiff->layer = wtiff_layer_new( wtiff, NULL, wtiff->ready->Xsize, wtiff->image_height ); /* Fill all the layers. */ if( wtiff_allocate_layers( wtiff ) ) { wtiff_free( wtiff ); return( NULL ); } if( tile ) wtiff->tbuf = vips_malloc( NULL, TIFFTileSize( wtiff->layer->tif ) ); else wtiff->tbuf = vips_malloc( NULL, TIFFScanlineSize( wtiff->layer->tif ) ); if( !wtiff->tbuf ) { wtiff_free( wtiff ); return( NULL ); } return( wtiff ); } /* Convert VIPS LabQ to TIFF LAB. Just take the first three bands. */ static void LabQ2LabC( VipsPel *q, VipsPel *p, int n ) { int x; for( x = 0; x < n; x++ ) { /* Get most significant 8 bits of lab. */ q[0] = p[0]; q[1] = p[1]; q[2] = p[2]; p += 4; q += 3; } } /* Pack 8 bit VIPS to 1 bit TIFF. */ static void eightbit2onebit( Wtiff *wtiff, VipsPel *q, VipsPel *p, int n ) { int x; VipsPel bits; /* Invert in miniswhite mode. */ int white = wtiff->miniswhite ? 0 : 1; int black = white ^ 1; bits = 0; for( x = 0; x < n; x++ ) { bits <<= 1; if( p[x] > 128 ) bits |= white; else bits |= black; if( (x & 0x7) == 0x7 ) { *q++ = bits; bits = 0; } } /* Any left-over bits? Need to be left-aligned. */ if( (x & 0x7) != 0 ) *q++ = bits << (8 - (x & 0x7)); } /* Swap the sense of the first channel, if necessary. */ #define GREY_LOOP( TYPE, MAX ) { \ TYPE *p1; \ TYPE *q1; \ \ p1 = (TYPE *) p; \ q1 = (TYPE *) q; \ for( x = 0; x < n; x++ ) { \ if( invert ) \ q1[0] = MAX - p1[0]; \ else \ q1[0] = p1[0]; \ \ for( i = 1; i < im->Bands; i++ ) \ q1[i] = p1[i]; \ \ q1 += im->Bands; \ p1 += im->Bands; \ } \ } /* If we're writing a 1 or 2 band image as a greyscale and MINISWHITE, we need * to swap the sense of the first band. See tiff2vips.c, greyscale_line() for * the opposite conversion. */ static void invert_band0( Wtiff *wtiff, VipsPel *q, VipsPel *p, int n ) { VipsImage *im = wtiff->ready; gboolean invert = wtiff->miniswhite; int x, i; switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_CHAR: GREY_LOOP( guchar, UCHAR_MAX ); break; case VIPS_FORMAT_SHORT: GREY_LOOP( gshort, SHRT_MAX ); break; case VIPS_FORMAT_USHORT: GREY_LOOP( gushort, USHRT_MAX ); break; case VIPS_FORMAT_INT: GREY_LOOP( gint, INT_MAX ); break; case VIPS_FORMAT_UINT: GREY_LOOP( guint, UINT_MAX ); break; case VIPS_FORMAT_FLOAT: GREY_LOOP( float, 1.0 ); break; case VIPS_FORMAT_DOUBLE: GREY_LOOP( double, 1.0 ); break; default: g_assert_not_reached(); } } /* Convert VIPS LABS to TIFF 16 bit LAB. */ static void LabS2Lab16( VipsPel *q, VipsPel *p, int n, int samples_per_pixel ) { short *p1 = (short *) p; unsigned short *q1 = (unsigned short *) q; int x; for( x = 0; x < n; x++ ) { int i; /* LABS L can be negative. */ q1[0] = VIPS_LSHIFT_INT( VIPS_MAX( 0, p1[0] ), 1 ); for( i = 1; i < samples_per_pixel; i++ ) q1[i] = p1[i]; q1 += samples_per_pixel; p1 += samples_per_pixel; } } /* Pack the pixels in @area from @in into a TIFF tile buffer. */ static void wtiff_pack2tiff( Wtiff *wtiff, Layer *layer, VipsRegion *in, VipsRect *area, VipsPel *q ) { int y; /* JPEG compression can read outside the pixel area for edge tiles. It * always compresses 8x8 blocks, so if the image width or height is * not a multiple of 8, it can look beyond the pixels we will write. * * Black out the tile first to make sure these edge pixels are always * zero. */ if( wtiff->compression == COMPRESSION_JPEG && (area->width < wtiff->tilew || area->height < wtiff->tileh) ) memset( q, 0, TIFFTileSize( layer->tif ) ); for( y = area->top; y < VIPS_RECT_BOTTOM( area ); y++ ) { VipsPel *p = (VipsPel *) VIPS_REGION_ADDR( in, area->left, y ); if( wtiff->ready->Coding == VIPS_CODING_LABQ ) LabQ2LabC( q, p, area->width ); else if( wtiff->squash ) eightbit2onebit( wtiff, q, p, area->width ); else if( (in->im->Bands == 1 || in->im->Bands == 2) && wtiff->miniswhite ) invert_band0( wtiff, q, p, area->width ); else if( wtiff->ready->BandFmt == VIPS_FORMAT_SHORT && wtiff->ready->Type == VIPS_INTERPRETATION_LABS ) LabS2Lab16( q, p, area->width, in->im->Bands ); else memcpy( q, p, area->width * VIPS_IMAGE_SIZEOF_PEL( wtiff->ready ) ); q += wtiff->tls; } } /* Write a set of tiles across the strip. */ static int wtiff_layer_write_tile( Wtiff *wtiff, Layer *layer, VipsRegion *strip ) { VipsImage *im = layer->image; VipsRect *area = &strip->valid; VipsRect image; int x; image.left = 0; image.top = 0; image.width = im->Xsize; image.height = im->Ysize; for( x = 0; x < im->Xsize; x += wtiff->tilew ) { VipsRect tile; tile.left = x; tile.top = area->top; tile.width = wtiff->tilew; tile.height = wtiff->tileh; vips_rect_intersectrect( &tile, &image, &tile ); /* Have to repack pixels. */ wtiff_pack2tiff( wtiff, layer, strip, &tile, wtiff->tbuf ); #ifdef DEBUG_VERBOSE printf( "Writing %dx%d tile at position %dx%d to image %s\n", tile.width, tile.height, tile.left, tile.top, TIFFFileName( layer->tif ) ); #endif /*DEBUG_VERBOSE*/ if( TIFFWriteTile( layer->tif, wtiff->tbuf, tile.left, tile.top, 0, 0 ) < 0 ) { vips_error( "vips2tiff", "%s", _( "TIFF write tile failed" ) ); return( -1 ); } } return( 0 ); } /* Write tileh scanlines, less for the last strip. */ static int wtiff_layer_write_strip( Wtiff *wtiff, Layer *layer, VipsRegion *strip ) { VipsImage *im = layer->image; VipsRect *area = &strip->valid; int height = VIPS_MIN( wtiff->tileh, area->height ); int y; #ifdef DEBUG_VERBOSE printf( "Writing %d pixel strip at height %d to image %s\n", height, area->top, TIFFFileName( layer->tif ) ); #endif /*DEBUG_VERBOSE*/ for( y = 0; y < height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( strip, 0, area->top + y ); /* Any repacking necessary. */ if( im->Coding == VIPS_CODING_LABQ ) { LabQ2LabC( wtiff->tbuf, p, im->Xsize ); p = wtiff->tbuf; } else if( im->BandFmt == VIPS_FORMAT_SHORT && im->Type == VIPS_INTERPRETATION_LABS ) { LabS2Lab16( wtiff->tbuf, p, im->Xsize, im->Bands ); p = wtiff->tbuf; } else if( wtiff->squash ) { eightbit2onebit( wtiff, wtiff->tbuf, p, im->Xsize ); p = wtiff->tbuf; } else if( (im->Bands == 1 || im->Bands == 2) && wtiff->miniswhite ) { invert_band0( wtiff, wtiff->tbuf, p, im->Xsize ); p = wtiff->tbuf; } if( TIFFWriteScanline( layer->tif, p, area->top + y, 0 ) < 0 ) return( -1 ); } return( 0 ); } static int layer_strip_arrived( Layer *layer ); /* Shrink what pixels we can from this strip into the layer below. If the * strip below fills, recurse. */ static int layer_strip_shrink( Layer *layer ) { Layer *below = layer->below; VipsRegion *from = layer->strip; VipsRegion *to = below->strip; VipsRect target; VipsRect source; /* Our pixels might cross a strip boundary in the layer below, so we * have to write repeatedly until we run out of pixels. */ for(;;) { /* The pixels the layer below needs. */ target.left = 0; target.top = below->write_y; target.width = below->image->Xsize; target.height = to->valid.height; vips_rect_intersectrect( &target, &to->valid, &target ); /* Those pixels need this area of this layer. */ source.left = target.left * 2; source.top = target.top * 2; source.width = target.width * 2; source.height = target.height * 2; /* Of which we have these available. */ vips_rect_intersectrect( &source, &from->valid, &source ); /* So these are the pixels in the layer below we can provide. */ target.left = source.left / 2; target.top = source.top / 2; target.width = source.width / 2; target.height = source.height / 2; /* None? All done. */ if( vips_rect_isempty( &target ) ) break; (void) vips_region_shrink( from, to, &target ); below->write_y += target.height; /* If we've filled the strip below, let it know. * We can either fill the region, if it's somewhere half-way * down the image, or, if it's at the bottom, get to the last * real line of pixels. */ if( below->write_y == VIPS_RECT_BOTTOM( &to->valid ) || below->write_y == below->height ) { if( layer_strip_arrived( below ) ) return( -1 ); } } return( 0 ); } /* A new strip has arrived! The strip has at least enough pixels in to * write a line of tiles or a set of scanlines. * * - write a line of tiles / set of scanlines * - shrink what we can to the layer below * - move our strip down by the tile height * - copy the overlap with the previous strip */ static int layer_strip_arrived( Layer *layer ) { Wtiff *wtiff = layer->wtiff; int result; VipsRect new_strip; VipsRect overlap; VipsRect image_area; if( wtiff->tile ) result = wtiff_layer_write_tile( wtiff, layer, layer->strip ); else result = wtiff_layer_write_strip( wtiff, layer, layer->strip ); if( result ) return( -1 ); if( layer->below && layer_strip_shrink( layer ) ) return( -1 ); /* Position our strip down the image. * * Expand the strip if necessary to make sure we have an even * number of lines. */ layer->y += wtiff->tileh; new_strip.left = 0; new_strip.top = layer->y; new_strip.width = layer->image->Xsize; new_strip.height = wtiff->tileh; image_area.left = 0; image_area.top = 0; image_area.width = layer->image->Xsize; image_area.height = layer->image->Ysize; vips_rect_intersectrect( &new_strip, &image_area, &new_strip ); if( (new_strip.height & 1) == 1 ) new_strip.height += 1; /* What pixels that we will need do we already have? Save them in * overlap. */ vips_rect_intersectrect( &new_strip, &layer->strip->valid, &overlap ); if( !vips_rect_isempty( &overlap ) ) { if( vips_region_buffer( layer->copy, &overlap ) ) return( -1 ); vips_region_copy( layer->strip, layer->copy, &overlap, overlap.left, overlap.top ); } if( !vips_rect_isempty( &new_strip ) ) { if( vips_region_buffer( layer->strip, &new_strip ) ) return( -1 ); /* And copy back again. */ if( !vips_rect_isempty( &overlap ) ) vips_region_copy( layer->copy, layer->strip, &overlap, overlap.left, overlap.top ); } return( 0 ); } /* Another strip of image pixels from vips_sink_disc(). Write into the top * pyramid layer. */ static int write_strip( VipsRegion *region, VipsRect *area, void *a ) { Wtiff *wtiff = (Wtiff *) a; Layer *layer = wtiff->layer; #ifdef DEBUG printf( "write_strip: strip at %d, height %d\n", area->top, area->height ); #endif/*DEBUG*/ for(;;) { VipsRect *to = &layer->strip->valid; VipsRect target; /* The bit of strip that needs filling. */ target.left = 0; target.top = layer->write_y; target.width = layer->image->Xsize; target.height = to->height; vips_rect_intersectrect( &target, to, &target ); /* Clip against what we have available. */ vips_rect_intersectrect( &target, area, &target ); /* Are we empty? All done. */ if( vips_rect_isempty( &target ) ) break; /* And copy those pixels in. * * FIXME: If the strip fits inside the region we've just * received, we could skip the copy. Will this happen very * often? Unclear. */ vips_region_copy( region, layer->strip, &target, target.left, target.top ); layer->write_y += target.height; /* We can either fill the strip, if it's somewhere half-way * down the image, or, if it's at the bottom, get to the last * real line of pixels. */ if( layer->write_y == VIPS_RECT_BOTTOM( to ) || layer->write_y == layer->height ) { if( layer_strip_arrived( layer ) ) return( -1 ); } } return( 0 ); } /* Copy fields. */ #define CopyField( tag, v ) \ if( TIFFGetField( in, tag, &v ) ) TIFFSetField( out, tag, v ) /* Copy a TIFF file ... we know we wrote it, so just copy the tags we know * we might have set. */ static int wtiff_copy_tiff( Wtiff *wtiff, TIFF *out, TIFF *in ) { uint32 i32; uint16 i16; float f; tdata_t buf; ttile_t tile; ttile_t n; uint16 *a; /* All the fields we might have set. */ CopyField( TIFFTAG_IMAGEWIDTH, i32 ); CopyField( TIFFTAG_IMAGELENGTH, i32 ); CopyField( TIFFTAG_PLANARCONFIG, i16 ); CopyField( TIFFTAG_ORIENTATION, i16 ); CopyField( TIFFTAG_XRESOLUTION, f ); CopyField( TIFFTAG_YRESOLUTION, f ); CopyField( TIFFTAG_RESOLUTIONUNIT, i16 ); CopyField( TIFFTAG_COMPRESSION, i16 ); CopyField( TIFFTAG_SAMPLESPERPIXEL, i16 ); CopyField( TIFFTAG_BITSPERSAMPLE, i16 ); CopyField( TIFFTAG_PHOTOMETRIC, i16 ); CopyField( TIFFTAG_ORIENTATION, i16 ); CopyField( TIFFTAG_TILEWIDTH, i32 ); CopyField( TIFFTAG_TILELENGTH, i32 ); CopyField( TIFFTAG_ROWSPERSTRIP, i32 ); CopyField( TIFFTAG_SUBFILETYPE, i32 ); if( TIFFGetField( in, TIFFTAG_EXTRASAMPLES, &i16, &a ) ) TIFFSetField( out, TIFFTAG_EXTRASAMPLES, i16, a ); /* TIFFTAG_JPEGQUALITY is a pesudo-tag, so we can't copy it. * Set explicitly from Wtiff. */ if( wtiff->compression == COMPRESSION_JPEG ) { TIFFSetField( out, TIFFTAG_JPEGQUALITY, wtiff->Q ); /* Only for three-band, 8-bit images. */ if( wtiff->ready->Bands == 3 && wtiff->ready->BandFmt == VIPS_FORMAT_UCHAR ) { /* Enable rgb->ycbcr conversion in the jpeg write. */ if( !wtiff->rgbjpeg && wtiff->Q < 90 ) TIFFSetField( out, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB ); /* And we want ycbcr expanded to rgb on read. Otherwise * TIFFTileSize() will give us the size of a chrominance * subsampled tile. */ TIFFSetField( in, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB ); } } #ifdef HAVE_TIFF_COMPRESSION_WEBP /* More pseudotags we can't copy. */ if( wtiff->compression == COMPRESSION_WEBP ) { TIFFSetField( out, TIFFTAG_WEBP_LEVEL, wtiff->Q ); TIFFSetField( out, TIFFTAG_WEBP_LOSSLESS, wtiff->lossless ); } if( wtiff->compression == COMPRESSION_ZSTD ) TIFFSetField( out, TIFFTAG_ZSTD_LEVEL, wtiff->level ); #endif /*HAVE_TIFF_COMPRESSION_WEBP*/ /* We can't copy profiles or xmp :( Set again from Wtiff. */ if( !wtiff->strip ) if( wtiff_embed_profile( wtiff, out ) || wtiff_embed_xmp( wtiff, out ) || wtiff_embed_iptc( wtiff, out ) || wtiff_embed_photoshop( wtiff, out ) || wtiff_embed_imagedescription( wtiff, out ) ) return( -1 ); buf = vips_malloc( NULL, TIFFTileSize( in ) ); n = TIFFNumberOfTiles( in ); for( tile = 0; tile < n; tile++ ) { tsize_t len; /* It'd be good to use TIFFReadRawTile()/TIFFWtiffRawTile() * here to save compression/decompression, but sadly it seems * not to work :-( investigate at some point. */ len = TIFFReadEncodedTile( in, tile, buf, -1 ); if( len < 0 || TIFFWriteEncodedTile( out, tile, buf, len ) < 0 ) { vips_free( buf ); return( -1 ); } } vips_free( buf ); return( 0 ); } /* Append all of the lower layers we wrote to the output. */ static int wtiff_gather( Wtiff *wtiff ) { Layer *layer; if( wtiff->layer && wtiff->layer->below ) for( layer = wtiff->layer->below; layer; layer = layer->below ) { VipsSource *source; TIFF *in; #ifdef DEBUG printf( "Appending layer %s ...\n", layer->lname ); #endif /*DEBUG*/ if( layer->lname ) { if( !(source = vips_source_new_from_file( layer->lname )) ) return( -1 ); } else { if( !(source = vips_source_new_from_memory( layer->buf, layer->len )) ) return( -1 ); } if( !(in = vips__tiff_openin_source( source )) ) { VIPS_UNREF( source ); return( -1 ); } VIPS_UNREF( source ); if( wtiff_copy_tiff( wtiff, wtiff->layer->tif, in ) ) { TIFFClose( in ); return( -1 ); } TIFFClose( in ); if( !TIFFWriteDirectory( wtiff->layer->tif ) ) return( -1 ); } return( 0 ); } /* Three types of write: single image, multipage and pyramid. */ static int wtiff_write_image( Wtiff *wtiff ) { if( wtiff->toilet_roll ) { int y; #ifdef DEBUG printf( "wtiff_write_image: toilet-roll mode\n" ); #endif /*DEBUG*/ y = 0; for(;;) { VipsImage *page; if( vips_crop( wtiff->ready, &page, 0, y, wtiff->ready->Xsize, wtiff->page_height, NULL ) ) return( -1 ); if( vips_sink_disc( page, write_strip, wtiff ) ) { g_object_unref( page ); return( -1 ); } g_object_unref( page ); y += wtiff->page_height; if( y >= wtiff->ready->Ysize ) break; if( !TIFFWriteDirectory( wtiff->layer->tif ) || wtiff_layer_rewind( wtiff, wtiff->layer ) || wtiff_write_header( wtiff, wtiff->layer ) ) return( -1 ); } } else if( wtiff->pyramid ) { #ifdef DEBUG printf( "wtiff_write_image: pyramid mode\n" ); #endif /*DEBUG*/ if( vips_sink_disc( wtiff->ready, write_strip, wtiff ) ) return( -1 ); if( !TIFFWriteDirectory( wtiff->layer->tif ) ) return( -1 ); if( wtiff->pyramid ) { /* Free lower pyramid resources ... this will * TIFFClose() (but not delete) the smaller layers * ready for us to read from them again. */ if( wtiff->layer->below ) layer_free_all( wtiff->layer->below ); /* Append smaller layers to the main file. */ if( wtiff_gather( wtiff ) ) return( -1 ); } } else { #ifdef DEBUG printf( "wtiff_write_image: single-image mode\n" ); #endif /*DEBUG*/ if( vips_sink_disc( wtiff->ready, write_strip, wtiff ) ) return( -1 ); } return( 0 ); } int vips__tiff_write( VipsImage *input, const char *filename, VipsForeignTiffCompression compression, int Q, VipsForeignTiffPredictor predictor, char *profile, gboolean tile, int tile_width, int tile_height, gboolean pyramid, gboolean squash, gboolean miniswhite, VipsForeignTiffResunit resunit, double xres, double yres, gboolean bigtiff, gboolean rgbjpeg, gboolean properties, gboolean strip, VipsRegionShrink region_shrink, int level, gboolean lossless ) { Wtiff *wtiff; #ifdef DEBUG printf( "tiff2vips: libtiff version is \"%s\"\n", TIFFGetVersion() ); #endif /*DEBUG*/ vips__tiff_init(); if( !(wtiff = wtiff_new( input, filename, compression, Q, predictor, profile, tile, tile_width, tile_height, pyramid, squash, miniswhite, resunit, xres, yres, bigtiff, rgbjpeg, properties, strip, region_shrink, level, lossless )) ) return( -1 ); if( wtiff_write_image( wtiff ) ) { wtiff_free( wtiff ); return( -1 ); } wtiff_free( wtiff ); return( 0 ); } int vips__tiff_write_buf( VipsImage *input, void **obuf, size_t *olen, VipsForeignTiffCompression compression, int Q, VipsForeignTiffPredictor predictor, char *profile, gboolean tile, int tile_width, int tile_height, gboolean pyramid, gboolean squash, gboolean miniswhite, VipsForeignTiffResunit resunit, double xres, double yres, gboolean bigtiff, gboolean rgbjpeg, gboolean properties, gboolean strip, VipsRegionShrink region_shrink, int level, gboolean lossless ) { Wtiff *wtiff; vips__tiff_init(); if( !(wtiff = wtiff_new( input, NULL, compression, Q, predictor, profile, tile, tile_width, tile_height, pyramid, squash, miniswhite, resunit, xres, yres, bigtiff, rgbjpeg, properties, strip, region_shrink, level, lossless )) ) return( -1 ); wtiff->obuf = obuf; wtiff->olen = olen; if( wtiff_write_image( wtiff ) ) { wtiff_free( wtiff ); return( -1 ); } /* Now close the top layer, and we'll get a pointer we can return * to our caller. */ VIPS_FREEF( TIFFClose, wtiff->layer->tif ); *obuf = wtiff->layer->buf; *olen = wtiff->layer->len; /* Now our caller owns it, we must not free it. */ wtiff->layer->buf = NULL; wtiff_free( wtiff ); return( 0 ); } #endif /*HAVE_TIFF*/ libvips-8.9.1/libvips/foreign/vips2webp.c000066400000000000000000000313341361153320700203740ustar00rootroot00000000000000/* wrap libwebp libray for write * * 6/8/13 * - from vips2jpeg.c * 31/5/16 * - buffer write ignored lossless, thanks aaron42net * 2/5/16 Felix Bünemann * - used advanced encoding API, expose controls * 8/11/16 * - add metadata write * 29/10/18 * - target libwebp 0.5+ and remove some ifdefs * - add animated webp write * - use libwebpmux instead of our own thing, phew * 6/7/19 [deftomat] * - support array of delays * 8/7/19 * - set loop even if we strip * 14/10/19 * - revise for target IO */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_LIBWEBP #include #include #include #include #include "pforeign.h" #include #include #include typedef int (*webp_import)( WebPPicture *picture, const uint8_t *rgb, int stride ); typedef struct { VipsImage *image; int Q; gboolean lossless; VipsForeignWebpPreset preset; gboolean smart_subsample; gboolean near_lossless; int alpha_q; int reduction_effort; gboolean min_size; int kmin; int kmax; gboolean strip; WebPConfig config; /* Output is written here. We can only support memory write, since we * handle metadata. */ WebPMemoryWriter memory_writer; /* Write animated webp here. */ WebPAnimEncoder *enc; /* Add metadata with this. */ WebPMux *mux; } VipsWebPWrite; static WebPPreset get_preset( VipsForeignWebpPreset preset ) { switch( preset ) { case VIPS_FOREIGN_WEBP_PRESET_DEFAULT: return( WEBP_PRESET_DEFAULT ); case VIPS_FOREIGN_WEBP_PRESET_PICTURE: return( WEBP_PRESET_PICTURE ); case VIPS_FOREIGN_WEBP_PRESET_PHOTO: return( WEBP_PRESET_PHOTO ); case VIPS_FOREIGN_WEBP_PRESET_DRAWING: return( WEBP_PRESET_DRAWING ); case VIPS_FOREIGN_WEBP_PRESET_ICON: return( WEBP_PRESET_ICON ); case VIPS_FOREIGN_WEBP_PRESET_TEXT: return( WEBP_PRESET_TEXT ); default: g_assert_not_reached(); } /* Keep -Wall happy. */ return( -1 ); } static void vips_webp_write_unset( VipsWebPWrite *write ) { WebPMemoryWriterClear( &write->memory_writer ); VIPS_FREEF( WebPAnimEncoderDelete, write->enc ); VIPS_FREEF( WebPMuxDelete, write->mux ); VIPS_UNREF( write->image ); } static int vips_webp_write_init( VipsWebPWrite *write, VipsImage *image, int Q, gboolean lossless, VipsForeignWebpPreset preset, gboolean smart_subsample, gboolean near_lossless, int alpha_q, int reduction_effort, gboolean min_size, int kmin, int kmax, gboolean strip ) { write->image = NULL; write->Q = Q; write->lossless = lossless; write->preset = preset; write->smart_subsample = smart_subsample; write->near_lossless = near_lossless; write->alpha_q = alpha_q; write->reduction_effort = reduction_effort; write->min_size = min_size; write->kmin = kmin; write->kmax = kmax; write->strip = strip; WebPMemoryWriterInit( &write->memory_writer ); write->enc = NULL; write->mux = NULL; /* Rebuild exif on image. We must do this on a copy. */ if( vips_copy( image, &write->image, NULL ) || vips__exif_update( write->image ) ) { vips_webp_write_unset( write ); return( -1 ); } if( !WebPConfigInit( &write->config ) ) { vips_webp_write_unset( write ); vips_error( "vips2webp", "%s", _( "config version error" ) ); return( -1 ); } /* These presets are only for lossy compression. There seems to be * separate API for lossless or near-lossless, see * WebPConfigLosslessPreset(). */ if( !(lossless || near_lossless) && !WebPConfigPreset( &write->config, get_preset( preset ), Q ) ) { vips_webp_write_unset( write ); vips_error( "vips2webp", "%s", _( "config version error" ) ); return( -1 ); } write->config.lossless = lossless || near_lossless; write->config.alpha_quality = alpha_q; write->config.method = reduction_effort; if( lossless ) write->config.quality = Q; if( near_lossless ) write->config.near_lossless = Q; if( smart_subsample ) write->config.use_sharp_yuv = 1; if( !WebPValidateConfig( &write->config ) ) { vips_webp_write_unset( write ); vips_error( "vips2webp", "%s", _( "invalid configuration" ) ); return( -1 ); } return( 0 ); } static gboolean vips_webp_pic_init( VipsWebPWrite *write, WebPPicture *pic ) { if( !WebPPictureInit( pic ) ) { vips_error( "vips2webp", "%s", _( "picture version error" ) ); return( FALSE ); } pic->writer = WebPMemoryWrite; pic->custom_ptr = (void *) &write->memory_writer; /* Smart subsampling needs use_argb because it is applied during * RGB to YUV conversion. */ pic->use_argb = write->lossless || write->near_lossless || write->smart_subsample; return( TRUE ); } /* Write a VipsImage into an unintialised pic. */ static int write_webp_image( VipsWebPWrite *write, VipsImage *image, WebPPicture *pic ) { VipsImage *memory; webp_import import; if( !vips_webp_pic_init( write, pic ) ) return( -1 ); if( !(memory = vips_image_copy_memory( image )) ) { WebPPictureFree( pic ); return( -1 ); } pic->width = memory->Xsize; pic->height = memory->Ysize; if( memory->Bands == 4 ) import = WebPPictureImportRGBA; else import = WebPPictureImportRGB; if( !import( pic, VIPS_IMAGE_ADDR( memory, 0, 0 ), VIPS_IMAGE_SIZEOF_LINE( memory ) ) ) { VIPS_UNREF( memory ); WebPPictureFree( pic ); vips_error( "vips2webp", "%s", _( "picture memory error" ) ); return( -1 ); } VIPS_UNREF( memory ); return( 0 ); } /* Write a single image into write->memory_writer. */ static int write_webp_single( VipsWebPWrite *write, VipsImage *image ) { WebPPicture pic; if( write_webp_image( write, image, &pic ) ) { WebPPictureFree( &pic ); return( -1 ); } if( !WebPEncode( &write->config, &pic ) ) { WebPPictureFree( &pic ); vips_error( "vips2webp", "%s", _( "unable to encode" ) ); return( -1 ); } WebPPictureFree( &pic ); return( 0 ); } /* Write a set of animated frames into write->memory_writer. */ static int write_webp_anim( VipsWebPWrite *write, VipsImage *image, int page_height ) { WebPAnimEncoderOptions anim_config; WebPData webp_data; int gif_delay; int *delay; int delay_length; int top; int timestamp_ms; if( !WebPAnimEncoderOptionsInit( &anim_config ) ) { vips_error( "vips2webp", "%s", _( "config version error" ) ); return( -1 ); } anim_config.minimize_size = write->min_size; anim_config.kmin = write->kmin; anim_config.kmax = write->kmax; write->enc = WebPAnimEncoderNew( image->Xsize, page_height, &anim_config ); if( !write->enc ) { vips_error( "vips2webp", "%s", _( "unable to init animation" ) ); return( -1 ); } /* There might just be the old gif-delay field. This is centiseconds. */ gif_delay = 4; if( vips_image_get_typeof( image, "gif-delay" ) && vips_image_get_int( image, "gif-delay", &gif_delay ) ) return( -1 ); /* New images have an array of ints instead. */ delay = NULL; if( vips_image_get_typeof( image, "delay" ) && vips_image_get_array_int( image, "delay", &delay, &delay_length ) ) return( -1 ); timestamp_ms = 0; for( top = 0; top < image->Ysize; top += page_height ) { VipsImage *x; WebPPicture pic; int page_index; if( vips_crop( image, &x, 0, top, image->Xsize, page_height, NULL ) ) return( -1 ); if( write_webp_image( write, x, &pic ) ) { VIPS_UNREF( x ); return( -1 ); } VIPS_UNREF( x ); if( !WebPAnimEncoderAdd( write->enc, &pic, timestamp_ms, &write->config ) ) { WebPPictureFree( &pic ); vips_error( "vips2webp", "%s", _( "anim add error" ) ); return( -1 ); } WebPPictureFree( &pic ); page_index = top / page_height; if( delay && page_index < delay_length ) timestamp_ms += delay[page_index]; else timestamp_ms += gif_delay * 10; } /* Closes encoder and adds last frame delay. */ if( !WebPAnimEncoderAdd( write->enc, NULL, timestamp_ms, NULL ) ) { vips_error( "vips2webp", "%s", _( "anim close error" ) ); return( -1 ); } if( !WebPAnimEncoderAssemble( write->enc, &webp_data ) ) { vips_error( "vips2webp", "%s", _( "anim build error" ) ); return( -1 ); } /* Terrible. This will only work if the output buffer is currently * empty. */ if( write->memory_writer.mem != NULL ) { vips_error( "vips2webp", "%s", _( "internal error" ) ); return( -1 ); } write->memory_writer.mem = (uint8_t *) webp_data.bytes; write->memory_writer.size = webp_data.size; return( 0 ); } static int write_webp( VipsWebPWrite *write ) { int page_height = vips_image_get_page_height( write->image ); if( page_height < write->image->Ysize ) return( write_webp_anim( write, write->image, page_height ) ); else return( write_webp_single( write, write->image ) ); } static void vips_webp_set_count( VipsWebPWrite *write, int loop_count ) { uint32_t features; if( WebPMuxGetFeatures( write->mux, &features ) == WEBP_MUX_OK && (features & ANIMATION_FLAG) ) { WebPMuxAnimParams params; if( WebPMuxGetAnimationParams( write->mux, ¶ms ) == WEBP_MUX_OK ) { params.loop_count = loop_count; WebPMuxSetAnimationParams( write->mux, ¶ms ); } } } static int vips_webp_set_chunk( VipsWebPWrite *write, const char *webp_name, const void *data, size_t length ) { WebPData chunk; chunk.bytes = data; chunk.size = length; if( WebPMuxSetChunk( write->mux, webp_name, &chunk, 1 ) != WEBP_MUX_OK ) { vips_error( "vips2webp", "%s", _( "chunk add error" ) ); return( -1 ); } return( 0 ); } static int vips_webp_add_chunks( VipsWebPWrite *write ) { int i; for( i = 0; i < vips__n_webp_names; i++ ) { const char *vips_name = vips__webp_names[i].vips; const char *webp_name = vips__webp_names[i].webp; if( vips_image_get_typeof( write->image, vips_name ) ) { const void *data; size_t length; if( vips_image_get_blob( write->image, vips_name, &data, &length ) || vips_webp_set_chunk( write, webp_name, data, length ) ) return( -1 ); } } return( 0 ); } static int vips_webp_add_metadata( VipsWebPWrite *write ) { WebPData data; data.bytes = write->memory_writer.mem; data.size = write->memory_writer.size; /* Parse what we have. */ if( !(write->mux = WebPMuxCreate( &data, 1 )) ) { vips_error( "vips2webp", "%s", _( "mux error" ) ); return( -1 ); } if( vips_image_get_typeof( write->image, "loop" ) ) { int loop; if( vips_image_get_int( write->image, "loop", &loop ) ) return( -1 ); vips_webp_set_count( write, loop ); } /* DEPRECATED "gif-loop" */ else if ( vips_image_get_typeof( write->image, "gif-loop" ) ) { int gif_loop; if( vips_image_get_int( write->image, "gif-loop", &gif_loop ) ) return( -1 ); vips_webp_set_count( write, gif_loop == 0 ? 0 : gif_loop + 1 ); } /* Add extra metadata. */ if( !write->strip && vips_webp_add_chunks( write ) ) return( -1 ); if( WebPMuxAssemble( write->mux, &data ) != WEBP_MUX_OK ) { vips_error( "vips2webp", "%s", _( "mux error" ) ); return( -1 ); } /* Free old stuff, reinit with new stuff. */ WebPMemoryWriterClear( &write->memory_writer ); write->memory_writer.mem = (uint8_t *) data.bytes; write->memory_writer.size = data.size; return( 0 ); } int vips__webp_write_target( VipsImage *image, VipsTarget *target, int Q, gboolean lossless, VipsForeignWebpPreset preset, gboolean smart_subsample, gboolean near_lossless, int alpha_q, int reduction_effort, gboolean min_size, int kmin, int kmax, gboolean strip ) { VipsWebPWrite write; if( vips_webp_write_init( &write, image, Q, lossless, preset, smart_subsample, near_lossless, alpha_q, reduction_effort, min_size, kmin, kmax, strip ) ) return( -1 ); if( write_webp( &write ) ) { vips_webp_write_unset( &write ); return( -1 ); } if( vips_webp_add_metadata( &write ) ) { vips_webp_write_unset( &write ); return( -1 ); } if( vips_target_write( target, write.memory_writer.mem, write.memory_writer.size ) ) { vips_webp_write_unset( &write ); return( -1 ); } vips_target_finish( target ); vips_webp_write_unset( &write ); return( 0 ); } #endif /*HAVE_LIBWEBP*/ libvips-8.9.1/libvips/foreign/vipsload.c000066400000000000000000000100351361153320700202670ustar00rootroot00000000000000/* load vips from a file * * 24/11/11 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsForeignLoadVips { VipsForeignLoad parent_object; char *filename; } VipsForeignLoadVips; typedef VipsForeignLoadClass VipsForeignLoadVipsClass; G_DEFINE_TYPE( VipsForeignLoadVips, vips_foreign_load_vips, VIPS_TYPE_FOREIGN_LOAD ); static gboolean vips_foreign_load_vips_is_a( const char *filename ) { return( vips__file_magic( filename ) ); } static VipsForeignFlags vips_foreign_load_vips_get_flags_filename( const char *filename ) { VipsForeignFlags flags; flags = VIPS_FOREIGN_PARTIAL; if( vips__file_magic( filename ) == VIPS_MAGIC_SPARC ) flags |= VIPS_FOREIGN_BIGENDIAN; return( flags ); } static VipsForeignFlags vips_foreign_load_vips_get_flags( VipsForeignLoad *load ) { VipsForeignLoadVips *vips = (VipsForeignLoadVips *) load; return( vips_foreign_load_vips_get_flags_filename( vips->filename ) ); } static int vips_foreign_load_vips_header( VipsForeignLoad *load ) { VipsForeignLoadVips *vips = (VipsForeignLoadVips *) load; VipsImage *out; VipsImage *out2; if( !(out2 = vips_image_new_mode( vips->filename, "r" )) ) return( -1 ); /* Remove the @out that's there now. */ g_object_get( load, "out", &out, NULL ); g_object_unref( out ); g_object_unref( out ); g_object_set( load, "out", out2, NULL ); return( 0 ); } const char *vips__suffs[] = { ".v", ".vips", NULL }; static void vips_foreign_load_vips_class_init( VipsForeignLoadVipsClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "vipsload"; object_class->description = _( "load vips from file" ); foreign_class->suffs = vips__suffs; /* We are fast at is_a(), so high priority. */ foreign_class->priority = 200; load_class->is_a = vips_foreign_load_vips_is_a; load_class->get_flags = vips_foreign_load_vips_get_flags; load_class->get_flags_filename = vips_foreign_load_vips_get_flags_filename; load_class->header = vips_foreign_load_vips_header; load_class->load = NULL; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadVips, filename ), NULL ); } static void vips_foreign_load_vips_init( VipsForeignLoadVips *vips ) { } /** * vips_vipsload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Read in a vips image. * * See also: vips_vipssave(). * * Returns: 0 on success, -1 on error. */ int vips_vipsload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "vipsload", ap, filename, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/vipspng.c000066400000000000000000000677511361153320700201550ustar00rootroot00000000000000/* Load/save png image with libpng * * 28/11/03 JC * - better no-overshoot on tile loop * 22/2/05 * - read non-interlaced PNG with a line buffer (thanks Michel Brabants) * 11/1/06 * - read RGBA palette-ized images more robustly (thanks Tom) * 20/4/06 * - auto convert to sRGB/mono (with optional alpha) for save * 1/5/06 * - from vips_png.c * 8/5/06 * - set RGB16/GREY16 if appropriate * 2/11/07 * - use im_wbuffer() API for BG writes * 28/2/09 * - small cleanups * 4/2/10 * - gtkdoc * - fixed 16-bit save * 12/5/10 * - lololo but broke 8-bit save, fixed again * 20/7/10 Tim Elliott * - added im_vips2bufpng() * 8/1/11 * - get set png resolution (thanks Zhiyu Wu) * 17/3/11 * - update for libpng-1.5 API changes * - better handling of palette and 1-bit images * - ... but we are now png 1.2.9 and later only :-( argh * 28/3/11 * - argh gamma was wrong when viewed in firefox * 19/12/11 * - rework as a set of fns ready for wrapping as a class * 7/2/12 * - mild refactoring * - add support for sequential reads * 23/2/12 * - add a longjmp() to our error handler to stop the default one running * 13/3/12 * - add ICC profile read/write * 15/3/12 * - better alpha handling * - sanity check pixel geometry before allowing read * 17/6/12 * - more alpha fixes ... some images have no transparency chunk but * still set color_type to alpha * 16/7/13 * - more robust error handling from libpng * 9/8/14 * - don't check profiles, helps with libpng >=1.6.11 * 27/10/14 Lovell * - add @filter option * 26/2/15 * - close the read down early for a header read ... this saves an * fd during file read, handy for large numbers of input images * 31/7/16 * - support --strip option * 17/1/17 * - invalidate operation on read error * 27/2/17 * - use dbuf for buffer output * 30/3/17 * - better behaviour for truncated png files, thanks Yury * 26/4/17 * - better @fail handling with truncated PNGs * 9/4/18 * - set interlaced=1 for interlaced images * 20/6/18 [felixbuenemann] * - support png8 palette write with palette, colours, Q, dither * 25/8/18 * - support xmp read/write * 20/4/19 * - allow huge xmp metadata * 7/10/19 * - restart after minimise * 14/10/19 * - revise for connection IO */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_PNG #include #include #include #include #include #include #include "pforeign.h" #include #if PNG_LIBPNG_VER < 10003 #error "PNG library too old." #endif static void user_error_function( png_structp png_ptr, png_const_charp error_msg ) { #ifdef DEBUG printf( "user_error_function: %s\n", error_msg ); #endif /*DEBUG*/ g_warning( "%s", error_msg ); /* This function must not return or the default error handler will be * invoked. */ longjmp( png_jmpbuf( png_ptr ), -1 ); } static void user_warning_function( png_structp png_ptr, png_const_charp warning_msg ) { #ifdef DEBUG printf( "user_warning_function: %s\n", warning_msg ); #endif /*DEBUG*/ g_warning( "%s", warning_msg ); } #define INPUT_BUFFER_SIZE (4096) /* What we track during a PNG read. */ typedef struct { char *name; VipsImage *out; gboolean fail; int y_pos; png_structp pPng; png_infop pInfo; png_bytep *row_pointer; VipsSource *source; /* read() to this buffer, copy to png as required. libpng does many * very small reads and we want to avoid a syscall for each one. */ unsigned char input_buffer[INPUT_BUFFER_SIZE]; unsigned char *next_byte; gint64 bytes_in_buffer; } Read; /* Can be called many times. */ static void read_destroy( Read *read ) { /* We never call png_read_end(), perhaps we should. It can fail on * truncated files, so we'd need a setjmp(). */ if( read->pPng ) png_destroy_read_struct( &read->pPng, &read->pInfo, NULL ); VIPS_UNREF( read->source ); VIPS_FREE( read->row_pointer ); } static void read_close_cb( VipsImage *out, Read *read ) { read_destroy( read ); } static void read_minimise_cb( VipsImage *image, Read *read ) { if( read->source ) vips_source_minimise( read->source ); } static void vips_png_read_source( png_structp pPng, png_bytep data, png_size_t length ) { Read *read = png_get_io_ptr( pPng ); #ifdef DEBUG printf( "vips_png_read_source: read %zd bytes\n", length ); #endif /*DEBUG*/ /* libpng makes many small reads, which hurts performance if you do a * syscall for each one. Read via our own buffer. */ while( length > 0 ) { gint64 bytes_available; if( read->bytes_in_buffer <= 0 ) { gint64 bytes_read; bytes_read = vips_source_read( read->source, read->input_buffer, INPUT_BUFFER_SIZE ); if( bytes_read <= 0 ) png_error( pPng, "not enough data" ); read->next_byte = read->input_buffer; read->bytes_in_buffer = bytes_read; } bytes_available = VIPS_MIN( read->bytes_in_buffer, length ); memcpy( data, read->next_byte, bytes_available ); data += bytes_available; length -= bytes_available; read->next_byte += bytes_available; read->bytes_in_buffer -= bytes_available; } } static Read * read_new( VipsSource *source, VipsImage *out, gboolean fail ) { Read *read; if( !(read = VIPS_NEW( out, Read )) ) return( NULL ); read->name = NULL; read->fail = fail; read->out = out; read->y_pos = 0; read->pPng = NULL; read->pInfo = NULL; read->row_pointer = NULL; read->source = source; g_object_ref( source ); g_signal_connect( out, "close", G_CALLBACK( read_close_cb ), read ); g_signal_connect( out, "minimise", G_CALLBACK( read_minimise_cb ), read ); if( !(read->pPng = png_create_read_struct( PNG_LIBPNG_VER_STRING, NULL, user_error_function, user_warning_function )) ) return( NULL ); #ifdef PNG_SKIP_sRGB_CHECK_PROFILE /* Prevent libpng (>=1.6.11) verifying sRGB profiles. */ png_set_option( read->pPng, PNG_SKIP_sRGB_CHECK_PROFILE, PNG_OPTION_ON ); #endif /*PNG_SKIP_sRGB_CHECK_PROFILE*/ #ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION /* Disable CRC checking in fuzzing mode. */ png_set_crc_action( read->pPng, PNG_CRC_QUIET_USE, PNG_CRC_QUIET_USE ); #endif /*FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION*/ if( vips_source_rewind( source ) ) return( NULL ); png_set_read_fn( read->pPng, read, vips_png_read_source ); /* Catch PNG errors from png_read_info() etc. */ if( setjmp( png_jmpbuf( read->pPng ) ) ) return( NULL ); if( !(read->pInfo = png_create_info_struct( read->pPng )) ) return( NULL ); /* By default, libpng refuses to open files with a metadata chunk * larger than 8mb. We've seen real files with 20mb, so set 50mb. */ #ifdef HAVE_PNG_SET_CHUNK_MALLOC_MAX png_set_chunk_malloc_max( read->pPng, 50 * 1024 * 1024 ); #endif /*HAVE_PNG_SET_CHUNK_MALLOC_MAX*/ png_read_info( read->pPng, read->pInfo ); return( read ); } /* Set the png text data as metadata on the vips image. These are always * null-terminated strings. */ static int vips__set_text( VipsImage *out, int i, const char *key, const char *text ) { char name[256]; if( strcmp( key, "XML:com.adobe.xmp" ) == 0 ) { /* Save as an XMP tag. This must be a BLOB, for compatibility * for things like the XMP blob that the tiff loader adds. * * Note that this will remove the null-termination from the * string. We must carefully reattach this. */ vips_image_set_blob_copy( out, VIPS_META_XMP_NAME, text, strlen( text ) ); } else { /* Save as a string comment. Some PNGs have EXIF data as * text segments, but the correct way to support this is with * png_get_eXIf_1(). */ vips_snprintf( name, 256, "png-comment-%d-%s", i, key ); vips_image_set_string( out, name, text ); } return( 0 ); } /* Read a png header. */ static int png2vips_header( Read *read, VipsImage *out ) { png_uint_32 width, height; int bit_depth, color_type; int interlace_type; png_uint_32 res_x, res_y; int unit_type; png_charp name; int compression_type; png_textp text_ptr; int num_text; /* Well thank you, libpng. */ #if PNG_LIBPNG_VER < 10400 png_charp profile; #else png_bytep profile; #endif png_uint_32 proflen; int bands; VipsInterpretation interpretation; double Xres, Yres; if( setjmp( png_jmpbuf( read->pPng ) ) ) return( -1 ); png_get_IHDR( read->pPng, read->pInfo, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL ); /* png_get_channels() gives us 1 band for palette images ... so look * at colour_type for output bands. * * Ignore alpha, we detect that separately below. */ switch( color_type ) { case PNG_COLOR_TYPE_PALETTE: bands = 3; break; case PNG_COLOR_TYPE_GRAY_ALPHA: case PNG_COLOR_TYPE_GRAY: bands = 1; break; case PNG_COLOR_TYPE_RGB: case PNG_COLOR_TYPE_RGB_ALPHA: bands = 3; break; default: vips_error( "png2vips", "%s", _( "unsupported color type" ) ); return( -1 ); } if( bit_depth > 8 ) { if( bands < 3 ) interpretation = VIPS_INTERPRETATION_GREY16; else interpretation = VIPS_INTERPRETATION_RGB16; } else { if( bands < 3 ) interpretation = VIPS_INTERPRETATION_B_W; else interpretation = VIPS_INTERPRETATION_sRGB; } /* Expand palette images. */ if( color_type == PNG_COLOR_TYPE_PALETTE ) png_set_palette_to_rgb( read->pPng ); /* Expand transparency. */ if( png_get_valid( read->pPng, read->pInfo, PNG_INFO_tRNS ) ) { png_set_tRNS_to_alpha( read->pPng ); bands += 1; } else if( color_type == PNG_COLOR_TYPE_GRAY_ALPHA || color_type == PNG_COLOR_TYPE_RGB_ALPHA ) { /* Some images have no transparency chunk, but still set * color_type to alpha. */ bands += 1; } /* Expand <8 bit images to full bytes. */ if( color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8 ) png_set_expand_gray_1_2_4_to_8( read->pPng ); /* If we're an INTEL byte order machine and this is 16bits, we need * to swap bytes. */ if( bit_depth > 8 && !vips_amiMSBfirst() ) png_set_swap( read->pPng ); /* Get resolution. Default to 72 pixels per inch, the usual png value. */ unit_type = PNG_RESOLUTION_METER; res_x = (72 / 2.54 * 100); res_y = (72 / 2.54 * 100); png_get_pHYs( read->pPng, read->pInfo, &res_x, &res_y, &unit_type ); switch( unit_type ) { case PNG_RESOLUTION_METER: Xres = res_x / 1000.0; Yres = res_y / 1000.0; break; default: Xres = res_x; Yres = res_y; break; } /* Set VIPS header. */ vips_image_init_fields( out, width, height, bands, bit_depth > 8 ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, interpretation, Xres, Yres ); VIPS_SETSTR( out->filename, vips_connection_filename( VIPS_CONNECTION( read->source ) ) ); /* Uninterlaced images will be read in seq mode. Interlaced images are * read via a huge memory buffer. */ if( interlace_type == PNG_INTERLACE_NONE ) /* Sequential mode needs thinstrip to work with things like * vips_shrink(). */ vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); else vips_image_pipelinev( out, VIPS_DEMAND_STYLE_ANY, NULL ); /* Fetch the ICC profile. @name is useless, something like "icc" or * "ICC Profile" etc. Ignore it. * * @profile was png_charpp in libpngs < 1.5, png_bytepp is the * modern one. Ignore the warning, if any. */ if( png_get_iCCP( read->pPng, read->pInfo, &name, &compression_type, &profile, &proflen ) ) { #ifdef DEBUG printf( "png2vips_header: attaching %d bytes of ICC profile\n", proflen ); printf( "png2vips_header: name = \"%s\"\n", name ); #endif /*DEBUG*/ vips_image_set_blob_copy( out, VIPS_META_ICC_NAME, profile, proflen ); } /* Some libpng warn you to call png_set_interlace_handling(); here, but * that can actually break interlace on older libpngs. * * Only set this for libpng 1.6+. */ #if PNG_LIBPNG_VER > 10600 (void) png_set_interlace_handling( read->pPng ); #endif /* Sanity-check line size. */ png_read_update_info( read->pPng, read->pInfo ); if( png_get_rowbytes( read->pPng, read->pInfo ) != VIPS_IMAGE_SIZEOF_LINE( out ) ) { vips_error( "vipspng", "%s", _( "unable to read PNG header" ) ); return( -1 ); } /* Let our caller know. These are very expensive to decode. */ if( interlace_type != PNG_INTERLACE_NONE ) vips_image_set_int( out, "interlaced", 1 ); if( png_get_text( read->pPng, read->pInfo, &text_ptr, &num_text ) > 0 ) { int i; for( i = 0; i < num_text; i++ ) /* .text is always a null-terminated C string. */ if( vips__set_text( out, i, text_ptr[i].key, text_ptr[i].text ) ) return( -1 ); } /* Attach original palette bit depth, if any, as metadata. */ if( color_type == PNG_COLOR_TYPE_PALETTE ) vips_image_set_int( out, "palette-bit-depth", bit_depth ); return( 0 ); } /* Out is a huge "t" buffer we decompress to. */ static int png2vips_interlace( Read *read, VipsImage *out ) { int y; #ifdef DEBUG printf( "png2vips_interlace: reading whole image\n" ); #endif /*DEBUG*/ if( vips_image_write_prepare( out ) ) return( -1 ); if( setjmp( png_jmpbuf( read->pPng ) ) ) return( -1 ); if( !(read->row_pointer = VIPS_ARRAY( NULL, out->Ysize, png_bytep )) ) return( -1 ); for( y = 0; y < out->Ysize; y++ ) read->row_pointer[y] = VIPS_IMAGE_ADDR( out, 0, y ); png_read_image( read->pPng, read->row_pointer ); read_destroy( read ); return( 0 ); } static int png2vips_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; Read *read = (Read *) a; int y; #ifdef DEBUG printf( "png2vips_generate: line %d, %d rows\n", r->top, r->height ); printf( "png2vips_generate: y_top = %d\n", read->y_pos ); #endif /*DEBUG*/ /* We're inside a tilecache where tiles are the full image width, so * this should always be true. */ g_assert( r->left == 0 ); g_assert( r->width == or->im->Xsize ); g_assert( VIPS_RECT_BOTTOM( r ) <= or->im->Ysize ); /* Tiles should always be a strip in height, unless it's the final * strip. */ g_assert( r->height == VIPS_MIN( VIPS__FATSTRIP_HEIGHT, or->im->Ysize - r->top ) ); /* And check that y_pos is correct. It should be, since we are inside * a vips_sequential(). */ if( r->top != read->y_pos ) { vips_error( "vipspng", _( "out of order read at line %d" ), read->y_pos ); return( -1 ); } for( y = 0; y < r->height; y++ ) { png_bytep q = (png_bytep) VIPS_REGION_ADDR( or, 0, r->top + y ); /* We need to catch errors from read_row(). */ if( !setjmp( png_jmpbuf( read->pPng ) ) ) png_read_row( read->pPng, q, NULL ); else { /* We've failed to read some pixels. Knock this * operation out of cache. */ vips_foreign_load_invalidate( read->out ); #ifdef DEBUG printf( "png2vips_generate: png_read_row() failed, " "line %d\n", r->top + y ); printf( "png2vips_generate: file %s\n", read->name ); printf( "png2vips_generate: thread %p\n", g_thread_self() ); #endif /*DEBUG*/ /* And bail if fail is on. We have to add an error * message, since the handler we install just does * g_warning(). */ if( read->fail ) { vips_error( "vipspng", "%s", _( "libpng read error" ) ); return( -1 ); } } read->y_pos += 1; } return( 0 ); } static int png2vips_image( Read *read, VipsImage *out ) { int interlace_type = png_get_interlace_type( read->pPng, read->pInfo ); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 3 ); if( interlace_type != PNG_INTERLACE_NONE ) { /* Arg awful interlaced image. We have to load to a huge mem * buffer, then copy to out. */ t[0] = vips_image_new_memory(); if( png2vips_header( read, t[0] ) || png2vips_interlace( read, t[0] ) || vips_image_write( t[0], out ) ) return( -1 ); } else { t[0] = vips_image_new(); if( png2vips_header( read, t[0] ) || vips_image_generate( t[0], NULL, png2vips_generate, NULL, read, NULL ) || vips_sequential( t[0], &t[1], "tile_height", VIPS__FATSTRIP_HEIGHT, NULL ) || vips_image_write( t[1], out ) ) return( -1 ); } return( 0 ); } gboolean vips__png_ispng_source( VipsSource *source ) { const unsigned char *p; if( (p = vips_source_sniff( source, 8 )) && !png_sig_cmp( (png_bytep) p, 0, 8 ) ) return( TRUE ); return( FALSE ); } int vips__png_header_source( VipsSource *source, VipsImage *out ) { Read *read; if( !(read = read_new( source, out, TRUE )) || png2vips_header( read, out ) ) return( -1 ); vips_source_minimise( source ); return( 0 ); } int vips__png_read_source( VipsSource *source, VipsImage *out, gboolean fail ) { Read *read; if( !(read = read_new( source, out, fail )) || png2vips_image( read, out ) || vips_source_decode( source ) ) return( -1 ); return( 0 ); } /* Interlaced PNGs need to be entirely decompressed into memory then can be * served partially from there. Non-interlaced PNGs may be read sequentially. */ gboolean vips__png_isinterlaced_source( VipsSource *source ) { VipsImage *image; Read *read; int interlace_type; image = vips_image_new(); if( !(read = read_new( source, image, TRUE )) ) { g_object_unref( image ); return( -1 ); } interlace_type = png_get_interlace_type( read->pPng, read->pInfo ); g_object_unref( image ); return( interlace_type != PNG_INTERLACE_NONE ); } const char *vips__png_suffs[] = { ".png", NULL }; /* What we track during a PNG write. */ typedef struct { VipsImage *in; VipsImage *memory; VipsTarget *target; png_structp pPng; png_infop pInfo; png_bytep *row_pointer; } Write; static void write_finish( Write *write ) { VIPS_UNREF( write->memory ); if( write->target ) vips_target_finish( write->target ); VIPS_UNREF( write->target ); if( write->pPng ) png_destroy_write_struct( &write->pPng, &write->pInfo ); VIPS_FREE( write->row_pointer ); VIPS_FREE( write ); } static void user_write_data( png_structp pPng, png_bytep data, png_size_t length ) { Write *write = (Write *) png_get_io_ptr( pPng ); if( vips_target_write( write->target, data, length ) ) png_error( pPng, "not enough data" ); } static Write * write_new( VipsImage *in, VipsTarget *target ) { Write *write; if( !(write = VIPS_NEW( NULL, Write )) ) return( NULL ); memset( write, 0, sizeof( Write ) ); write->in = in; write->memory = NULL; write->target = target; g_object_ref( target ); if( !(write->row_pointer = VIPS_ARRAY( NULL, in->Ysize, png_bytep )) ) return( NULL ); if( !(write->pPng = png_create_write_struct( PNG_LIBPNG_VER_STRING, NULL, user_error_function, user_warning_function )) ) { write_finish( write ); return( NULL ); } #ifdef PNG_SKIP_sRGB_CHECK_PROFILE /* Prevent libpng (>=1.6.11) verifying sRGB profiles. */ png_set_option( write->pPng, PNG_SKIP_sRGB_CHECK_PROFILE, PNG_OPTION_ON ); #endif /*PNG_SKIP_sRGB_CHECK_PROFILE*/ png_set_write_fn( write->pPng, write, user_write_data, NULL ); /* Catch PNG errors from png_create_info_struct(). */ if( setjmp( png_jmpbuf( write->pPng ) ) ) { write_finish( write ); return( NULL ); } if( !(write->pInfo = png_create_info_struct( write->pPng )) ) { write_finish( write ); return( NULL ); } return( write ); } static int write_png_block( VipsRegion *region, VipsRect *area, void *a ) { Write *write = (Write *) a; int i; /* The area to write is always a set of complete scanlines. */ g_assert( area->left == 0 ); g_assert( area->width == region->im->Xsize ); g_assert( area->top + area->height <= region->im->Ysize ); /* Catch PNG errors. */ if( setjmp( png_jmpbuf( write->pPng ) ) ) return( -1 ); for( i = 0; i < area->height; i++ ) write->row_pointer[i] = (png_bytep) VIPS_REGION_ADDR( region, 0, area->top + i ); png_write_rows( write->pPng, write->row_pointer, area->height ); return( 0 ); } static void vips__png_set_text( png_structp pPng, png_infop pInfo, const char *key, const char *value ) { png_text text; text.compression = 0; text.key = (char *) key; text.text = (char *) value; text.text_length = strlen( value ); /* Before 1.4, these fields were only there if explicitly enabled. */ #if PNG_LIBPNG_VER > 10400 text.itxt_length = 0; text.lang = NULL; #endif png_set_text( pPng, pInfo, &text, 1 ); } static void * write_png_comment( VipsImage *image, const char *field, GValue *value, void *data ) { Write *write = (Write *) data; if( vips_isprefix( "png-comment-", field ) ) { const char *str; int i; char key[256]; if( vips_image_get_string( write->in, field, &str ) ) return( image ); if( strlen( field ) > 256 || sscanf( field, "png-comment-%d-%80s", &i, key ) != 2 ) { vips_error( "vips2png", "%s", _( "bad png comment key" ) ); return( image ); } vips__png_set_text( write->pPng, write->pInfo, key, str ); } return( NULL ); } /* Write a VIPS image to PNG. */ static int write_vips( Write *write, int compress, int interlace, const char *profile, VipsForeignPngFilter filter, gboolean strip, gboolean palette, int colours, int Q, double dither ) { VipsImage *in = write->in; int bit_depth; int color_type; int interlace_type; int i, nb_passes; g_assert( in->BandFmt == VIPS_FORMAT_UCHAR || in->BandFmt == VIPS_FORMAT_USHORT ); g_assert( in->Coding == VIPS_CODING_NONE ); g_assert( in->Bands > 0 && in->Bands < 5 ); /* Catch PNG errors. */ if( setjmp( png_jmpbuf( write->pPng ) ) ) return( -1 ); /* Check input image. If we are writing interlaced, we need to make 7 * passes over the image. We advertise ourselves as seq, so to ensure * we only suck once from upstream, switch to WIO. */ if( interlace ) { if( !(write->memory = vips_image_copy_memory( in )) ) return( -1 ); in = write->memory; } else { if( vips_image_pio_input( in ) ) return( -1 ); } if( compress < 0 || compress > 9 ) { vips_error( "vips2png", "%s", _( "compress should be in [0,9]" ) ); return( -1 ); } /* Set compression parameters. */ png_set_compression_level( write->pPng, compress ); /* Set row filter. */ png_set_filter( write->pPng, 0, filter ); bit_depth = in->BandFmt == VIPS_FORMAT_UCHAR ? 8 : 16; switch( in->Bands ) { case 1: color_type = PNG_COLOR_TYPE_GRAY; break; case 2: color_type = PNG_COLOR_TYPE_GRAY_ALPHA; break; case 3: color_type = PNG_COLOR_TYPE_RGB; break; case 4: color_type = PNG_COLOR_TYPE_RGB_ALPHA; break; default: vips_error( "vips2png", _( "can't save %d band image as png" ), in->Bands ); return( -1 ); } #ifdef HAVE_IMAGEQUANT /* Enable image quantisation to paletted 8bpp PNG if colours is set. */ if( palette ) { g_assert( colours >= 2 && colours <= 256 ); bit_depth = 8; color_type = PNG_COLOR_TYPE_PALETTE; } #else if( palette ) g_warning( "%s", _( "ignoring palette (no quantisation support)" ) ); #endif /*HAVE_IMAGEQUANT*/ interlace_type = interlace ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE; png_set_IHDR( write->pPng, write->pInfo, in->Xsize, in->Ysize, bit_depth, color_type, interlace_type, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT ); /* Set resolution. libpng uses pixels per meter. */ png_set_pHYs( write->pPng, write->pInfo, VIPS_RINT( in->Xres * 1000 ), VIPS_RINT( in->Yres * 1000 ), PNG_RESOLUTION_METER ); /* Metadata */ if( !strip ) { if( profile ) { VipsBlob *blob; if( vips_profile_load( profile, &blob, NULL ) ) return( -1 ); if( blob ) { size_t length; const void *data = vips_blob_get( blob, &length ); #ifdef DEBUG printf( "write_vips: attaching %zd bytes " "of ICC profile\n", length ); #endif /*DEBUG*/ png_set_iCCP( write->pPng, write->pInfo, "icc", PNG_COMPRESSION_TYPE_BASE, (void *) data, length ); vips_area_unref( (VipsArea *) blob ); } } else if( vips_image_get_typeof( in, VIPS_META_ICC_NAME ) ) { const void *data; size_t length; if( vips_image_get_blob( in, VIPS_META_ICC_NAME, &data, &length ) ) return( -1 ); #ifdef DEBUG printf( "write_vips: attaching %zd bytes " "of ICC profile\n", length ); #endif /*DEBUG*/ png_set_iCCP( write->pPng, write->pInfo, "icc", PNG_COMPRESSION_TYPE_BASE, (void *) data, length ); } if( vips_image_get_typeof( in, VIPS_META_XMP_NAME ) ) { const void *data; size_t length; char *str; /* XMP is attached as a BLOB with no null-termination. * We must re-add this. */ if( vips_image_get_blob( in, VIPS_META_XMP_NAME, &data, &length ) ) return( -1 ); str = g_malloc( length + 1 ); vips_strncpy( str, data, length + 1 ); vips__png_set_text( write->pPng, write->pInfo, "XML:com.adobe.xmp", str ); g_free( str ); } if( vips_image_map( in, write_png_comment, write ) ) return( -1 ); } #ifdef HAVE_IMAGEQUANT if( palette ) { VipsImage *im_index; VipsImage *im_palette; int palette_count; png_color *png_palette; png_byte *png_trans; int trans_count; if( vips__quantise_image( in, &im_index, &im_palette, colours, Q, dither ) ) return( -1 ); palette_count = im_palette->Xsize; g_assert( palette_count <= PNG_MAX_PALETTE_LENGTH ); png_palette = (png_color *) png_malloc( write->pPng, palette_count * sizeof( png_color ) ); png_trans = (png_byte *) png_malloc( write->pPng, palette_count * sizeof( png_byte ) ); trans_count = 0; for( i = 0; i < palette_count; i++ ) { VipsPel *p = (VipsPel *) VIPS_IMAGE_ADDR( im_palette, i, 0 ); png_color *col = &png_palette[i]; col->red = p[0]; col->green = p[1]; col->blue = p[2]; png_trans[i] = p[3]; if( p[3] != 255 ) trans_count = i + 1; #ifdef DEBUG printf( "write_vips: palette[%d] %d %d %d %d\n", i + 1, p[0], p[1], p[2], p[3] ); #endif /*DEBUG*/ } #ifdef DEBUG printf( "write_vips: attaching %d color palette\n", palette_count ); #endif /*DEBUG*/ png_set_PLTE( write->pPng, write->pInfo, png_palette, palette_count ); if( trans_count ) { #ifdef DEBUG printf( "write_vips: attaching %d alpha values\n", trans_count ); #endif /*DEBUG*/ png_set_tRNS( write->pPng, write->pInfo, png_trans, trans_count, NULL ); } png_free( write->pPng, (void *) png_palette ); png_free( write->pPng, (void *) png_trans ); VIPS_UNREF( im_palette ); VIPS_UNREF( write->memory ); write->memory = im_index; in = write->memory; } #endif /*HAVE_IMAGEQUANT*/ png_write_info( write->pPng, write->pInfo ); /* If we're an intel byte order CPU and this is a 16bit image, we need * to swap bytes. */ if( bit_depth > 8 && !vips_amiMSBfirst() ) png_set_swap( write->pPng ); if( interlace ) nb_passes = png_set_interlace_handling( write->pPng ); else nb_passes = 1; /* Write data. */ for( i = 0; i < nb_passes; i++ ) if( vips_sink_disc( in, write_png_block, write ) ) return( -1 ); /* The setjmp() was held by our background writer: reset it. */ if( setjmp( png_jmpbuf( write->pPng ) ) ) return( -1 ); png_write_end( write->pPng, write->pInfo ); return( 0 ); } int vips__png_write_target( VipsImage *in, VipsTarget *target, int compression, int interlace, const char *profile, VipsForeignPngFilter filter, gboolean strip, gboolean palette, int colours, int Q, double dither ) { Write *write; if( !(write = write_new( in, target )) ) return( -1 ); if( write_vips( write, compression, interlace, profile, filter, strip, palette, colours, Q, dither ) ) { write_finish( write ); vips_error( "vips2png", "%s", _( "unable to write to target" ) ); return( -1 ); } write_finish( write ); return( 0 ); } #endif /*HAVE_PNG*/ libvips-8.9.1/libvips/foreign/vipssave.c000066400000000000000000000066471361153320700203240ustar00rootroot00000000000000/* save to vips * * 24/11/11 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include typedef struct _VipsForeignSaveVips { VipsForeignSave parent_object; char *filename; } VipsForeignSaveVips; typedef VipsForeignSaveClass VipsForeignSaveVipsClass; G_DEFINE_TYPE( VipsForeignSaveVips, vips_foreign_save_vips, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_vips_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveVips *vips = (VipsForeignSaveVips *) object; VipsImage *x; if( VIPS_OBJECT_CLASS( vips_foreign_save_vips_parent_class )-> build( object ) ) return( -1 ); if( !(x = vips_image_new_mode( vips->filename, "w" )) ) return( -1 ); if( vips_image_write( save->ready, x ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } /* From vipsload.c. */ extern const char *vips__suffs[]; static void vips_foreign_save_vips_class_init( VipsForeignSaveVipsClass *class ) { int i; GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "vipssave"; object_class->description = _( "save image to vips file" ); object_class->build = vips_foreign_save_vips_build; foreign_class->suffs = vips__suffs; save_class->saveable = VIPS_SAVEABLE_ANY; for( i = 0; i < VIPS_CODING_LAST; i++ ) save_class->coding[i] = TRUE; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveVips, filename ), NULL ); } static void vips_foreign_save_vips_init( VipsForeignSaveVips *vips ) { } /** * vips_vipssave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Write @in to @filename in VIPS format. * * See also: vips_vipsload(). * * Returns: 0 on success, -1 on error. */ int vips_vipssave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "vipssave", ap, in, filename ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/webp2vips.c000066400000000000000000000452701361153320700204000ustar00rootroot00000000000000/* read with libwebp * * 6/8/13 * - from png2vips.c * 24/2/14 * - oops, buffer path was broken, thanks Lovell * 28/2/16 * - add @shrink * 7/11/16 * - support XMP/ICC/EXIF metadata * 18/10/17 * - sniff file type from magic number * 2/11/18 * - rework for demux API * - add animated read * 19/4/19 * - could memleak on some read errors * 24/4/19 * - fix bg handling in animations * 30/4/19 * - deprecate shrink, use scale instead, and make it a double ... this * lets us do faster and more accurate thumbnailing * 27/6/19 * - disable alpha output if all frame fill the canvas and are solid * 6/7/19 [deftomat] * - support array of delays * 14/10/19 * - revise for source IO */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_LIBWEBP #include #include #include #include #include #include #include "pforeign.h" /* What we track during a read. */ typedef struct { VipsSource *source; /* The data we load, as a webp object. */ WebPData data; /* Load this page (frame number). */ int page; /* Load this many pages. */ int n; /* Scale-on-load factor. Use this to set scaled_width. */ double scale; /* Size of each frame in input image coordinates. */ int canvas_width; int canvas_height; /* Size of each frame, in scaled output image coordinates, */ int frame_width; int frame_height; /* Size of final output image. */ int width; int height; /* TRUE if we will save the final image as RGBA. */ int alpha; /* Number of frames in file. */ int frame_count; /* Delays between frames (in miliseconds). */ int *delays; /* Parse with this. */ WebPDemuxer *demux; /* Decoder config. */ WebPDecoderConfig config; /* The current accumulated frame as a VipsImage. These are the pixels * we send to the output. It's a frame_width * frame_height memory * image. */ VipsImage *frame; /* The frame number currently in @frame. Numbered from 1, so 0 means * before the first frame. */ int frame_no; /* Iterate through the frames with this. iter.frame_num is the number * of the currently loaded frame. */ WebPIterator iter; /* How to junk the current frame when we move on. */ WebPMuxAnimDispose dispose_method; VipsRect dispose_rect; } Read; const char * vips__error_webp( VP8StatusCode code ) { switch( code ) { case VP8_STATUS_OK: return( "VP8_STATUS_OK" ); case VP8_STATUS_OUT_OF_MEMORY: return( "VP8_STATUS_OUT_OF_MEMORY" ); case VP8_STATUS_INVALID_PARAM: return( "VP8_STATUS_INVALID_PARAM" ); case VP8_STATUS_BITSTREAM_ERROR: return( "VP8_STATUS_BITSTREAM_ERROR" ); case VP8_STATUS_UNSUPPORTED_FEATURE: return( "VP8_STATUS_UNSUPPORTED_FEATURE" ); case VP8_STATUS_SUSPENDED: return( "VP8_STATUS_SUSPENDED" ); case VP8_STATUS_USER_ABORT: return( "VP8_STATUS_USER_ABORT" ); case VP8_STATUS_NOT_ENOUGH_DATA: return( "VP8_STATUS_NOT_ENOUGH_DATA" ); default: return( "" ); } } static void vips_image_paint_area( VipsImage *image, const VipsRect *r, const VipsPel *ink ) { VipsRect valid = { 0, 0, image->Xsize, image->Ysize }; VipsRect ovl; vips_rect_intersectrect( r, &valid, &ovl ); if( !vips_rect_isempty( &ovl ) ) { int ps = VIPS_IMAGE_SIZEOF_PEL( image ); int ls = VIPS_IMAGE_SIZEOF_LINE( image ); int ws = ovl.width * ps; VipsPel *to, *q; int x, y, z; /* We plot the first line pointwise, then memcpy() it for the * subsequent lines. We need to work for RGB and RGBA, so we * can't just write uint32s. */ to = VIPS_IMAGE_ADDR( image, ovl.left, ovl.top ); q = to; for( x = 0; x < ovl.width; x++ ) { /* Faster than memcpy() for about ps < 20. */ for( z = 0; z < ps; z++ ) q[z] = ink[z]; q += ps; } q = to + ls; for( y = 1; y < ovl.height; y++ ) { memcpy( q, to, ws ); q += ls; } } } /* Blend two guint8. */ #define BLEND( X, aX, Y, aY, scale ) \ ((X * aX + Y * aY) * scale >> 24) /* Extract R, G, B, A, assuming little-endian. */ #define getR( V ) (V & 0xff) #define getG( V ) ((V >> 8) & 0xff) #define getB( V ) ((V >> 16) & 0xff) #define getA( V ) ((V >> 24) & 0xff) /* Rebuild RGBA, assuming little-endian. */ #define setRGBA( R, G, B, A ) \ (R | (G << 8) | (B << 16) | ((guint32) A << 24)) /* OVER blend of two unpremultiplied RGBA guint32 * * We assume little-endian (x86), add a byteswap before this if necessary. */ static guint32 blend_pixel( guint32 A, guint32 B ) { guint8 aA = getA( A ); if( aA == 0 ) return( B ); guint8 aB = getA( B ); guint8 fac = (aB * (256 - aA)) >> 8; guint8 aR = aA + fac; int scale = (1 << 24) / aR; guint8 rR = BLEND( getR( A ), aA, getR( B ), fac, scale ); guint8 gR = BLEND( getG( A ), aA, getG( B ), fac, scale ); guint8 bR = BLEND( getB( A ), aA, getB( B ), fac, scale ); return( setRGBA( rR, gR, bR, aR ) ); } /* Blend sub into frame at left, top. */ static void vips_image_paint_image( VipsImage *frame, VipsImage *sub, int left, int top, gboolean blend ) { VipsRect frame_rect = { 0, 0, frame->Xsize, frame->Ysize }; VipsRect sub_rect = { left, top, sub->Xsize, sub->Ysize }; int ps = VIPS_IMAGE_SIZEOF_PEL( frame ); VipsRect ovl; g_assert( VIPS_IMAGE_SIZEOF_PEL( sub ) == ps ); vips_rect_intersectrect( &frame_rect, &sub_rect, &ovl ); if( !vips_rect_isempty( &ovl ) ) { VipsPel *p, *q; int x, y; p = VIPS_IMAGE_ADDR( sub, ovl.left - left, ovl.top - top ); q = VIPS_IMAGE_ADDR( frame, ovl.left, ovl.top ); for( y = 0; y < ovl.height; y++ ) { if( blend ) { guint32 *A = (guint32 *) p; guint32 *B = (guint32 *) q; for( x = 0; x < ovl.width; x++ ) B[x] = blend_pixel( A[x], B[x] ); } else memcpy( (char *) q, (char *) p, ovl.width * ps ); p += VIPS_IMAGE_SIZEOF_LINE( sub ); q += VIPS_IMAGE_SIZEOF_LINE( frame ); } } } int vips__iswebp_source( VipsSource *source ) { const unsigned char *p; /* WebP is "RIFF xxxx WEBP" at the start, so we need 12 bytes. */ if( (p = vips_source_sniff( source, 12 )) && vips_isprefix( "RIFF", (char *) p ) && vips_isprefix( "WEBP", (char *) p + 8 ) ) return( 1 ); return( 0 ); } static int read_free( Read *read ) { WebPDemuxReleaseIterator( &read->iter ); VIPS_UNREF( read->frame ); VIPS_FREEF( WebPDemuxDelete, read->demux ); WebPFreeDecBuffer( &read->config.output ); VIPS_UNREF( read->source ); VIPS_FREE( read->delays ); VIPS_FREE( read ); return( 0 ); } static Read * read_new( VipsSource *source, int page, int n, double scale ) { Read *read; if( !(read = VIPS_NEW( NULL, Read )) ) return( NULL ); read->source = source; g_object_ref( source ); read->page = page; read->n = n; read->scale = scale; read->delays = NULL; read->demux = NULL; read->frame = NULL; read->dispose_method = WEBP_MUX_DISPOSE_NONE; read->frame_no = 0; WebPInitDecoderConfig( &read->config ); read->config.options.use_threads = 1; read->config.output.is_external_memory = 1; if( !(read->data.bytes = vips_source_map( source, &read->data.size )) ) { read_free( read ); return( NULL ); } return( read ); } /* Map vips metadata names to webp names. */ const VipsWebPNames vips__webp_names[] = { { VIPS_META_ICC_NAME, "ICCP", ICCP_FLAG }, { VIPS_META_EXIF_NAME, "EXIF", EXIF_FLAG }, { VIPS_META_XMP_NAME, "XMP ", XMP_FLAG } }; const int vips__n_webp_names = VIPS_NUMBER( vips__webp_names ); static int read_header( Read *read, VipsImage *out ) { int flags; int i; if( !(read->demux = WebPDemux( &read->data )) ) { vips_error( "webp", "%s", _( "unable to parse image" ) ); return( -1 ); } read->canvas_width = WebPDemuxGetI( read->demux, WEBP_FF_CANVAS_WIDTH ); read->canvas_height = WebPDemuxGetI( read->demux, WEBP_FF_CANVAS_HEIGHT ); /* We round-to-nearest cf. pdfload etc. */ read->frame_width = VIPS_RINT( read->canvas_width * read->scale ); read->frame_height = VIPS_RINT( read->canvas_height * read->scale ); #ifdef DEBUG printf( "webp2vips: canvas_width = %d\n", read->canvas_width ); printf( "webp2vips: canvas_height = %d\n", read->canvas_height ); printf( "webp2vips: frame_width = %d\n", read->frame_width ); printf( "webp2vips: frame_height = %d\n", read->frame_height ); #endif /*DEBUG*/ flags = WebPDemuxGetI( read->demux, WEBP_FF_FORMAT_FLAGS ); read->alpha = flags & ALPHA_FLAG; /* We do everything as RGBA and then, if we can, drop the alpha on * save. */ read->config.output.colorspace = MODE_RGBA; if( flags & ANIMATION_FLAG ) { int loop_count; WebPIterator iter; loop_count = WebPDemuxGetI( read->demux, WEBP_FF_LOOP_COUNT ); read->frame_count = WebPDemuxGetI( read->demux, WEBP_FF_FRAME_COUNT ); #ifdef DEBUG printf( "webp2vips: animation\n" ); printf( "webp2vips: loop_count = %d\n", loop_count ); printf( "webp2vips: frame_count = %d\n", read->frame_count ); #endif /*DEBUG*/ vips_image_set_int( out, "loop", loop_count ); /* DEPRECATED "gif-loop" * * Not the correct behavior as loop=1 became gif-loop=0 * but we want to keep the old behavior untouched! */ vips_image_set_int( out, "gif-loop", loop_count == 0 ? 0 : loop_count - 1 ); vips_image_set_int( out, VIPS_META_PAGE_HEIGHT, read->frame_height ); if( WebPDemuxGetFrame( read->demux, 1, &iter ) ) { int i; read->delays = (int *) g_malloc0( read->frame_count * sizeof( int ) ); for( i = 0; i < read->frame_count; i++ ) read->delays[i] = 40; do { g_assert( iter.frame_num >= 1 && iter.frame_num <= read->frame_count ); read->delays[iter.frame_num - 1] = iter.duration; /* We need the alpha in an animation if: * - any frame has transparent pixels * - any frame doesn't fill the whole canvas. */ if( iter.has_alpha || iter.width != read->canvas_width || iter.height != read->canvas_height ) read->alpha = TRUE; } while( WebPDemuxNextFrame( &iter ) ); vips_image_set_array_int( out, "delay", read->delays, read->frame_count ); /* webp uses ms for delays, gif uses centiseconds. */ vips_image_set_int( out, "gif-delay", VIPS_RINT( read->delays[0] / 10.0 ) ); } WebPDemuxReleaseIterator( &iter ); if( read->n == -1 ) read->n = read->frame_count - read->page; if( read->page < 0 || read->n <= 0 || read->page + read->n > read->frame_count ) { vips_error( "webp", "%s", _( "bad page number" ) ); return( -1 ); } /* Note that n-pages is the number of pages in the original, * not the number of pages in the image we are writing. */ vips_image_set_int( out, VIPS_META_N_PAGES, read->frame_count ); read->width = read->frame_width; read->height = read->n * read->frame_height; } else { read->width = read->frame_width; read->height = read->frame_height; read->frame_count = 1; } if( read->width <= 0 || read->height <= 0 || read->width > 0x3FFF || read->height > 0x3FFF ) { vips_error( "webp", "%s", _( "bad image dimensions" ) ); return( -1 ); } for( i = 0; i < vips__n_webp_names; i++ ) { const char *vips = vips__webp_names[i].vips; const char *webp = vips__webp_names[i].webp; if( flags & vips__webp_names[i].flags ) { WebPChunkIterator iter; WebPDemuxGetChunk( read->demux, webp, 1, &iter ); vips_image_set_blob_copy( out, vips, iter.chunk.bytes, iter.chunk.size ); WebPDemuxReleaseChunkIterator( &iter ); } } /* The canvas is always RGBA, we drop alpha to RGB on output if we * can. */ read->frame = vips_image_new_memory(); vips_image_init_fields( read->frame, read->frame_width, read->frame_height, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); vips_image_pipelinev( read->frame, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); if( vips_image_write_prepare( read->frame ) ) return( -1 ); vips_image_init_fields( out, read->width, read->height, read->alpha ? 4 : 3, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); VIPS_SETSTR( out->filename, vips_connection_filename( VIPS_CONNECTION( read->source ) ) ); if( !WebPDemuxGetFrame( read->demux, 1, &read->iter ) ) { vips_error( "webp", "%s", _( "unable to loop through frames" ) ); return( -1 ); } return( 0 ); } /* Read a single frame -- a width * height block of pixels. This will get * blended into the accumulator at some offset. */ static VipsImage * read_frame( Read *read, int width, int height, const guint8 *data, size_t length ) { VipsImage *frame; #ifdef DEBUG printf( "read_frame:\n" ); #endif /*DEBUG*/ frame = vips_image_new_memory(); vips_image_init_fields( frame, width, height, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); vips_image_pipelinev( frame, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); if( vips_image_write_prepare( frame ) ) { g_object_unref( frame ); return( NULL ); } read->config.output.u.RGBA.rgba = VIPS_IMAGE_ADDR( frame, 0, 0 ); read->config.output.u.RGBA.stride = VIPS_IMAGE_SIZEOF_LINE( frame ); read->config.output.u.RGBA.size = VIPS_IMAGE_SIZEOF_IMAGE( frame ); if( read->scale != 1.0 ) { read->config.options.use_scaling = 1; read->config.options.scaled_width = width; read->config.options.scaled_height = height; } if( WebPDecode( data, length, &read->config ) != VP8_STATUS_OK ) { g_object_unref( frame ); vips_error( "webp2vips", "%s", _( "unable to read pixels" ) ); return( NULL ); } return( frame ); } static int read_next_frame( Read *read ) { VipsImage *frame; VipsRect area; #ifdef DEBUG printf( "read_next_frame:\n" ); #endif /*DEBUG*/ /* Area of this frame, in output image coordinates. We must rint(), * since we need the same rules as the overall image scale, or we'll * sometimes have missing pixels on edges. */ area.left = VIPS_RINT( read->iter.x_offset * read->scale ); area.top = VIPS_RINT( read->iter.y_offset * read->scale ); area.width = VIPS_RINT( read->iter.width * read->scale ); area.height = VIPS_RINT( read->iter.height * read->scale ); /* Dispose from the previous frame. */ if( read->dispose_method == WEBP_MUX_DISPOSE_BACKGROUND ) { /* We must clear the pixels occupied by the previous webp * frame (not the whole of the read frame) to 0 (transparent). * * We do not clear to WEBP_FF_BACKGROUND_COLOR. That's only * used to composite down to RGB. Perhaps we * should attach background as metadata. */ guint32 zero = 0; vips_image_paint_area( read->frame, &read->dispose_rect, (VipsPel *) &zero ); } /* Note this frame's dispose for next time. */ read->dispose_method = read->iter.dispose_method; read->dispose_rect = area; #ifdef DEBUG printf( "webp2vips: frame_num = %d\n", read->iter.frame_num ); printf( " left = %d\n", area.left ); printf( " top = %d\n", area.top ); printf( " width = %d\n", area.width ); printf( " height = %d\n", area.height ); printf( " duration = %d\n", read->iter.duration ); printf( " dispose = " ); if( read->iter.dispose_method == WEBP_MUX_DISPOSE_BACKGROUND ) printf( "clear to background\n" ); else printf( "none\n" ); printf( " has_alpha = %d\n", read->iter.has_alpha ); printf( " blend_method = " ); if( read->iter.blend_method == WEBP_MUX_BLEND ) printf( "blend with previous\n" ); else printf( "don't blend\n" ); #endif /*DEBUG*/ if( !(frame = read_frame( read, area.width, area.height, read->iter.fragment.bytes, read->iter.fragment.size )) ) return( -1 ); /* Now blend or copy the new pixels into our accumulator. */ vips_image_paint_image( read->frame, frame, area.left, area.top, read->iter.blend_method == WEBP_MUX_BLEND ); g_object_unref( frame ); /* If there's another frame, move on. */ if( read->iter.frame_num < read->frame_count ) { if( !WebPDemuxNextFrame( &read->iter ) ) { vips_error( "webp2vips", "%s", _( "not enough frames" ) ); return( -1 ); } } return( 0 ); } static int read_webp_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; Read *read = (Read *) a; /* iter.frame_num numbers from 1. */ int frame = 1 + r->top / read->frame_height + read->page; int line = r->top % read->frame_height; #ifdef DEBUG_VERBOSE printf( "read_webp_generate: line %d\n", r->top ); #endif /*DEBUG_VERBOSE*/ g_assert( r->height == 1 ); while( read->frame_no < frame ) { if( read_next_frame( read ) ) return( -1 ); read->frame_no += 1; } if( or->im->Bands == 4 ) memcpy( VIPS_REGION_ADDR( or, 0, r->top ), VIPS_IMAGE_ADDR( read->frame, 0, line ), VIPS_IMAGE_SIZEOF_LINE( read->frame ) ); else { int x; VipsPel *p; VipsPel *q; /* We know that alpha is solid, so we can just drop the 4th * band. */ p = VIPS_IMAGE_ADDR( read->frame, 0, line ); q = VIPS_REGION_ADDR( or, 0, r->top ); for( x = 0; x < r->width; x++ ) { q[0] = p[0]; q[1] = p[1]; q[2] = p[2]; q += 3; p += 4; } } return( 0 ); } static int read_image( Read *read, VipsImage *out ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 3 ); t[0] = vips_image_new(); if( read_header( read, t[0] ) ) return( -1 ); if( vips_image_generate( t[0], NULL, read_webp_generate, NULL, read, NULL ) || vips_sequential( t[0], &t[1], NULL ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } int vips__webp_read_header_source( VipsSource *source, VipsImage *out, int page, int n, double scale ) { Read *read; if( !(read = read_new( source, page, n, scale )) ) return( -1 ); if( read_header( read, out ) ) { read_free( read ); return( -1 ); } read_free( read ); return( 0 ); } int vips__webp_read_source( VipsSource *source, VipsImage *out, int page, int n, double scale ) { Read *read; if( !(read = read_new( source, page, n, scale )) ) return( -1 ); if( read_image( read, out ) ) { read_free( read ); return( -1 ); } read_free( read ); return( 0 ); } #endif /*HAVE_LIBWEBP*/ libvips-8.9.1/libvips/foreign/webpload.c000066400000000000000000000331021361153320700202430ustar00rootroot00000000000000/* load webp images * * 6/8/13 * - from pngload.c * 28/2/16 * - add @shrink * 1/11/18 * - add @page, @n * 30/4/19 * - deprecate @shrink, use @scale instead */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pforeign.h" #ifdef HAVE_LIBWEBP typedef struct _VipsForeignLoadWebp { VipsForeignLoad parent_object; /* Set by subclasses. */ VipsSource *source; /* Load this page (frame number). */ int page; /* Load this many pages. */ int n; /* Scale by this much during load. */ double scale; /* Old and deprecated scaling path. */ int shrink; } VipsForeignLoadWebp; typedef VipsForeignLoadClass VipsForeignLoadWebpClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadWebp, vips_foreign_load_webp, VIPS_TYPE_FOREIGN_LOAD ); static void vips_foreign_load_webp_dispose( GObject *gobject ) { VipsForeignLoadWebp *webp = (VipsForeignLoadWebp *) gobject; VIPS_UNREF( webp->source ); G_OBJECT_CLASS( vips_foreign_load_webp_parent_class )-> dispose( gobject ); } static int vips_foreign_load_webp_build( VipsObject *object ) { VipsForeignLoadWebp *webp = (VipsForeignLoadWebp *) object; /* BC for the old API. */ if( !vips_object_argument_isset( VIPS_OBJECT( webp ), "scale" ) && vips_object_argument_isset( VIPS_OBJECT( webp ), "shrink" ) && webp->shrink != 0 ) webp->scale = 1.0 / webp->shrink; if( VIPS_OBJECT_CLASS( vips_foreign_load_webp_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static VipsForeignFlags vips_foreign_load_webp_get_flags( VipsForeignLoad *load ) { return( 0 ); } static VipsForeignFlags vips_foreign_load_webp_get_flags_filename( const char *filename ) { return( 0 ); } static int vips_foreign_load_webp_header( VipsForeignLoad *load ) { VipsForeignLoadWebp *webp = (VipsForeignLoadWebp *) load; if( vips__webp_read_header_source( webp->source, load->out, webp->page, webp->n, webp->scale ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_webp_load( VipsForeignLoad *load ) { VipsForeignLoadWebp *webp = (VipsForeignLoadWebp *) load; if( vips__webp_read_source( webp->source, load->real, webp->page, webp->n, webp->scale ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_webp_class_init( VipsForeignLoadWebpClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->dispose = vips_foreign_load_webp_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpload_base"; object_class->description = _( "load webp" ); object_class->build = vips_foreign_load_webp_build; /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; load_class->get_flags_filename = vips_foreign_load_webp_get_flags_filename; load_class->get_flags = vips_foreign_load_webp_get_flags; load_class->header = vips_foreign_load_webp_header; load_class->load = vips_foreign_load_webp_load; VIPS_ARG_INT( class, "page", 20, _( "Page" ), _( "Load this page from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadWebp, page ), 0, 100000, 0 ); VIPS_ARG_INT( class, "n", 21, _( "n" ), _( "Load this many pages" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadWebp, n ), -1, 100000, 1 ); VIPS_ARG_DOUBLE( class, "scale", 22, _( "Scale" ), _( "Scale factor on load" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadWebp, scale ), 0.0, 1024.0, 1.0 ); /* Old and deprecated scaling API. A float param lets do * shrink-on-load for thumbnail faster and more accurately. */ VIPS_ARG_INT( class, "shrink", 23, _( "Shrink" ), _( "Shrink factor on load" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignLoadWebp, shrink ), 1, 1024, 1 ); } static void vips_foreign_load_webp_init( VipsForeignLoadWebp *webp ) { webp->n = 1; webp->shrink = 1; webp->scale = 1.0; } typedef struct _VipsForeignLoadWebpSource { VipsForeignLoadWebp parent_object; VipsSource *source; } VipsForeignLoadWebpSource; typedef VipsForeignLoadWebpClass VipsForeignLoadWebpSourceClass; G_DEFINE_TYPE( VipsForeignLoadWebpSource, vips_foreign_load_webp_source, vips_foreign_load_webp_get_type() ); static int vips_foreign_load_webp_source_build( VipsObject *object ) { VipsForeignLoadWebp *webp = (VipsForeignLoadWebp *) object; VipsForeignLoadWebpSource *source = (VipsForeignLoadWebpSource *) object; if( source->source ) { webp->source = source->source; g_object_ref( webp->source ); } if( VIPS_OBJECT_CLASS( vips_foreign_load_webp_source_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_webp_source_class_init( VipsForeignLoadWebpSourceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpload_source"; object_class->description = _( "load webp from source" ); object_class->build = vips_foreign_load_webp_source_build; load_class->is_a_source = vips__iswebp_source; VIPS_ARG_OBJECT( class, "source", 1, _( "Source" ), _( "Source to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadWebpSource, source ), VIPS_TYPE_SOURCE ); } static void vips_foreign_load_webp_source_init( VipsForeignLoadWebpSource *buffer ) { } typedef struct _VipsForeignLoadWebpFile { VipsForeignLoadWebp parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadWebpFile; typedef VipsForeignLoadWebpClass VipsForeignLoadWebpFileClass; G_DEFINE_TYPE( VipsForeignLoadWebpFile, vips_foreign_load_webp_file, vips_foreign_load_webp_get_type() ); static int vips_foreign_load_webp_file_build( VipsObject *object ) { VipsForeignLoadWebp *webp = (VipsForeignLoadWebp *) object; VipsForeignLoadWebpFile *file = (VipsForeignLoadWebpFile *) object; if( file->filename && !(webp->source = vips_source_new_from_file( file->filename )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_foreign_load_webp_file_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_webp_file_is_a( const char *filename ) { VipsSource *source; gboolean result; if( !(source = vips_source_new_from_file( filename )) ) return( FALSE ); result = vips__iswebp_source( source ); VIPS_UNREF( source ); return( result ); } const char *vips__webp_suffs[] = { ".webp", NULL }; static void vips_foreign_load_webp_file_class_init( VipsForeignLoadWebpFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpload"; object_class->description = _( "load webp from file" ); object_class->build = vips_foreign_load_webp_file_build; foreign_class->suffs = vips__webp_suffs; load_class->is_a = vips_foreign_load_webp_file_is_a; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadWebpFile, filename ), NULL ); } static void vips_foreign_load_webp_file_init( VipsForeignLoadWebpFile *file ) { } typedef struct _VipsForeignLoadWebpBuffer { VipsForeignLoadWebp parent_object; /* Load from a buffer. */ VipsBlob *blob; } VipsForeignLoadWebpBuffer; typedef VipsForeignLoadWebpClass VipsForeignLoadWebpBufferClass; G_DEFINE_TYPE( VipsForeignLoadWebpBuffer, vips_foreign_load_webp_buffer, vips_foreign_load_webp_get_type() ); static int vips_foreign_load_webp_buffer_build( VipsObject *object ) { VipsForeignLoadWebp *webp = (VipsForeignLoadWebp *) object; VipsForeignLoadWebpBuffer *buffer = (VipsForeignLoadWebpBuffer *) object; if( buffer->blob && !(webp->source = vips_source_new_from_memory( VIPS_AREA( buffer->blob )->data, VIPS_AREA( buffer->blob )->length )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_foreign_load_webp_buffer_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_webp_buffer_is_a_buffer( const void *buf, size_t len ) { VipsSource *source; gboolean result; if( !(source = vips_source_new_from_memory( buf, len )) ) return( FALSE ); result = vips__iswebp_source( source ); VIPS_UNREF( source ); return( result ); } static void vips_foreign_load_webp_buffer_class_init( VipsForeignLoadWebpBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpload_buffer"; object_class->description = _( "load webp from buffer" ); object_class->build = vips_foreign_load_webp_buffer_build; load_class->is_a_buffer = vips_foreign_load_webp_buffer_is_a_buffer; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadWebpBuffer, blob ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_webp_buffer_init( VipsForeignLoadWebpBuffer *buffer ) { } #endif /*HAVE_LIBWEBP*/ /** * vips_webpload: * @filename: file to load * @out: (out): decompressed image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, page (frame) to read * * @n: %gint, load this many pages * * @scale: %gdouble, scale by this much on load * * Read a WebP file into a VIPS image. * * Use @page to select a page to render, numbering from zero. * * Use @n to select the number of pages to render. The default is 1. Pages are * rendered in a vertical column, with each individual page aligned to the * left. Set to -1 to mean "until the end of the document". Use vips_grid() * to change page layout. * * Use @scale to specify a scale-on-load factor. For example, 2.0 to double * the size on load. * * The loader supports ICC, EXIF and XMP metadata. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_webpload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "webpload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_webpload_buffer: * @buf: (array length=len) (element-type guint8): memory area to load * @len: (type gsize): size of memory area * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, page (frame) to read * * @n: %gint, load this many pages * * @scale: %gdouble, scale by this much on load * * Read a WebP-formatted memory block into a VIPS image. Exactly as * vips_webpload(), but read from a memory buffer. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_webpload() * * Returns: 0 on success, -1 on error. */ int vips_webpload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "webpload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } /** * vips_webpload_source: * @source: source to load from * @out: (out): image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @page: %gint, page (frame) to read * * @n: %gint, load this many pages * * @scale: %gdouble, scale by this much on load * * Exactly as vips_webpload(), but read from a source. * * See also: vips_webpload() * * Returns: 0 on success, -1 on error. */ int vips_webpload_source( VipsSource *source, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "webpload_source", ap, source, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/foreign/webpsave.c000066400000000000000000000460361361153320700202740ustar00rootroot00000000000000/* save to webp * * 24/11/11 * - wrap a class around the webp writer * 29/10/18 * - add animated webp support * 15/1/19 lovell * - add @reduction_effort */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pforeign.h" #ifdef HAVE_LIBWEBP typedef struct _VipsForeignSaveWebp { VipsForeignSave parent_object; /* Quality factor. */ int Q; /* Turn on lossless encode. */ gboolean lossless; /* Lossy compression preset. */ VipsForeignWebpPreset preset; /* Enable smart chroma subsampling. */ gboolean smart_subsample; /* Use preprocessing in lossless mode. */ gboolean near_lossless; /* Alpha quality. */ int alpha_q; /* Level of CPU effort to reduce file size. */ int reduction_effort; /* Animated webp options. */ /* Attempt to minimise size */ gboolean min_size; /* Min between key frames. */ int kmin; /* Max between keyframes. */ int kmax; } VipsForeignSaveWebp; typedef VipsForeignSaveClass VipsForeignSaveWebpClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSaveWebp, vips_foreign_save_webp, VIPS_TYPE_FOREIGN_SAVE ); #define UC VIPS_FORMAT_UCHAR /* Type promotion for save ... just always go to uchar. */ static int bandfmt_webp[10] = { /* UC C US S UI I F X D DX */ UC, UC, UC, UC, UC, UC, UC, UC, UC, UC }; static void vips_foreign_save_webp_class_init( VipsForeignSaveWebpClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpsave_base"; object_class->description = _( "save webp" ); foreign_class->suffs = vips__webp_suffs; save_class->saveable = VIPS_SAVEABLE_RGBA_ONLY; save_class->format_table = bandfmt_webp; VIPS_ARG_INT( class, "Q", 10, _( "Q" ), _( "Q factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, Q ), 0, 100, 75 ); VIPS_ARG_BOOL( class, "lossless", 11, _( "lossless" ), _( "enable lossless compression" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, lossless ), FALSE ); VIPS_ARG_ENUM( class, "preset", 12, _( "preset" ), _( "Preset for lossy compression" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, preset ), VIPS_TYPE_FOREIGN_WEBP_PRESET, VIPS_FOREIGN_WEBP_PRESET_DEFAULT ); VIPS_ARG_BOOL( class, "smart_subsample", 13, _( "Smart subsampling" ), _( "Enable high quality chroma subsampling" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, smart_subsample ), FALSE ); VIPS_ARG_BOOL( class, "near_lossless", 14, _( "Near lossless" ), _( "Enable preprocessing in lossless mode (uses Q)" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, near_lossless ), FALSE ); VIPS_ARG_INT( class, "alpha_q", 15, _( "Alpha quality" ), _( "Change alpha plane fidelity for lossy compression" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, alpha_q ), 0, 100, 100 ); VIPS_ARG_BOOL( class, "min_size", 16, _( "Minimise size" ), _( "Optimise for minium size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, min_size ), FALSE ); VIPS_ARG_INT( class, "kmin", 17, _( "Minimum keyframe spacing" ), _( "Minimum number of frames between key frames" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, kmin ), 0, INT_MAX, INT_MAX - 1 ); VIPS_ARG_INT( class, "kmax", 18, _( "Maximum keyframe spacing" ), _( "Maximum number of frames between key frames" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, kmax ), 0, INT_MAX, INT_MAX ); VIPS_ARG_INT( class, "reduction_effort", 19, _( "Reduction effort" ), _( "Level of CPU effort to reduce file size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, reduction_effort ), 0, 6, 4 ); } static void vips_foreign_save_webp_init( VipsForeignSaveWebp *webp ) { webp->Q = 75; webp->alpha_q = 100; webp->reduction_effort = 4; /* ie. keyframes disabled by default. */ webp->kmin = INT_MAX - 1; webp->kmax = INT_MAX; } typedef struct _VipsForeignSaveWebpTarget { VipsForeignSaveWebp parent_object; VipsTarget *target; } VipsForeignSaveWebpTarget; typedef VipsForeignSaveWebpClass VipsForeignSaveWebpTargetClass; G_DEFINE_TYPE( VipsForeignSaveWebpTarget, vips_foreign_save_webp_target, vips_foreign_save_webp_get_type() ); static int vips_foreign_save_webp_target_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveWebp *webp = (VipsForeignSaveWebp *) object; VipsForeignSaveWebpTarget *target = (VipsForeignSaveWebpTarget *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_webp_target_parent_class )-> build( object ) ) return( -1 ); if( vips__webp_write_target( save->ready, target->target, webp->Q, webp->lossless, webp->preset, webp->smart_subsample, webp->near_lossless, webp->alpha_q, webp->reduction_effort, webp->min_size, webp->kmin, webp->kmax, save->strip ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_webp_target_class_init( VipsForeignSaveWebpTargetClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpsave_target"; object_class->description = _( "save image to webp target" ); object_class->build = vips_foreign_save_webp_target_build; VIPS_ARG_OBJECT( class, "target", 1, _( "Target" ), _( "Target to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebpTarget, target ), VIPS_TYPE_TARGET ); } static void vips_foreign_save_webp_target_init( VipsForeignSaveWebpTarget *target ) { } typedef struct _VipsForeignSaveWebpFile { VipsForeignSaveWebp parent_object; /* Filename for save. */ char *filename; } VipsForeignSaveWebpFile; typedef VipsForeignSaveWebpClass VipsForeignSaveWebpFileClass; G_DEFINE_TYPE( VipsForeignSaveWebpFile, vips_foreign_save_webp_file, vips_foreign_save_webp_get_type() ); static int vips_foreign_save_webp_file_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveWebp *webp = (VipsForeignSaveWebp *) object; VipsForeignSaveWebpFile *file = (VipsForeignSaveWebpFile *) object; VipsTarget *target; if( VIPS_OBJECT_CLASS( vips_foreign_save_webp_file_parent_class )-> build( object ) ) return( -1 ); if( !(target = vips_target_new_to_file( file->filename )) ) return( -1 ); if( vips__webp_write_target( save->ready, target, webp->Q, webp->lossless, webp->preset, webp->smart_subsample, webp->near_lossless, webp->alpha_q, webp->reduction_effort, webp->min_size, webp->kmin, webp->kmax, save->strip ) ) { VIPS_UNREF( target ); return( -1 ); } VIPS_UNREF( target ); return( 0 ); } static void vips_foreign_save_webp_file_class_init( VipsForeignSaveWebpFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpsave"; object_class->description = _( "save image to webp file" ); object_class->build = vips_foreign_save_webp_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebpFile, filename ), NULL ); } static void vips_foreign_save_webp_file_init( VipsForeignSaveWebpFile *file ) { } typedef struct _VipsForeignSaveWebpBuffer { VipsForeignSaveWebp parent_object; /* Save to a buffer. */ VipsArea *buf; } VipsForeignSaveWebpBuffer; typedef VipsForeignSaveWebpClass VipsForeignSaveWebpBufferClass; G_DEFINE_TYPE( VipsForeignSaveWebpBuffer, vips_foreign_save_webp_buffer, vips_foreign_save_webp_get_type() ); static int vips_foreign_save_webp_buffer_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveWebp *webp = (VipsForeignSaveWebp *) object; VipsForeignSaveWebpBuffer *buffer = (VipsForeignSaveWebpBuffer *) object; VipsTarget *target; VipsBlob *blob; if( VIPS_OBJECT_CLASS( vips_foreign_save_webp_buffer_parent_class )-> build( object ) ) return( -1 ); if( !(target = vips_target_new_to_memory()) ) return( -1 ); if( vips__webp_write_target( save->ready, target, webp->Q, webp->lossless, webp->preset, webp->smart_subsample, webp->near_lossless, webp->alpha_q, webp->reduction_effort, webp->min_size, webp->kmin, webp->kmax, save->strip ) ) { VIPS_UNREF( target ); return( -1 ); } g_object_get( target, "blob", &blob, NULL ); g_object_set( buffer, "buffer", blob, NULL ); vips_area_unref( VIPS_AREA( blob ) ); VIPS_UNREF( target ); return( 0 ); } static void vips_foreign_save_webp_buffer_class_init( VipsForeignSaveWebpBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpsave_buffer"; object_class->description = _( "save image to webp buffer" ); object_class->build = vips_foreign_save_webp_buffer_build; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to save to" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignSaveWebpBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_save_webp_buffer_init( VipsForeignSaveWebpBuffer *file ) { } typedef struct _VipsForeignSaveWebpMime { VipsForeignSaveWebp parent_object; } VipsForeignSaveWebpMime; typedef VipsForeignSaveWebpClass VipsForeignSaveWebpMimeClass; G_DEFINE_TYPE( VipsForeignSaveWebpMime, vips_foreign_save_webp_mime, vips_foreign_save_webp_get_type() ); static int vips_foreign_save_webp_mime_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveWebp *webp = (VipsForeignSaveWebp *) object; VipsTarget *target; VipsBlob *blob; void *data; size_t len; if( VIPS_OBJECT_CLASS( vips_foreign_save_webp_mime_parent_class )-> build( object ) ) return( -1 ); if( !(target = vips_target_new_to_memory()) ) return( -1 ); if( vips__webp_write_target( save->ready, target, webp->Q, webp->lossless, webp->preset, webp->smart_subsample, webp->near_lossless, webp->alpha_q, webp->reduction_effort, webp->min_size, webp->kmin, webp->kmax, save->strip ) ) { VIPS_UNREF( target ); return( -1 ); } g_object_get( target, "blob", &blob, NULL ); data = VIPS_AREA( blob )->data; len = VIPS_AREA( blob )->length; vips_area_unref( VIPS_AREA( blob ) ); printf( "Content-length: %zu\r\n", len ); printf( "Content-type: image/webp\r\n" ); printf( "\r\n" ); (void) fwrite( data, sizeof( char ), len, stdout ); fflush( stdout ); VIPS_UNREF( target ); return( 0 ); } static void vips_foreign_save_webp_mime_class_init( VipsForeignSaveWebpMimeClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; object_class->nickname = "webpsave_mime"; object_class->description = _( "save image to webp mime" ); object_class->build = vips_foreign_save_webp_mime_build; } static void vips_foreign_save_webp_mime_init( VipsForeignSaveWebpMime *mime ) { } #endif /*HAVE_LIBWEBP*/ /** * vips_webpsave: (method) * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @Q: %gint, quality factor * * @lossless: %gboolean, enables lossless compression * * @preset: #VipsForeignWebpPreset, choose lossy compression preset * * @smart_subsample: %gboolean, enables high quality chroma subsampling * * @near_lossless: %gboolean, preprocess in lossless mode (controlled by Q) * * @alpha_q: %gint, set alpha quality in lossless mode * * @reduction_effort: %gint, level of CPU effort to reduce file size * * @min_size: %gboolean, minimise size * * @kmin: %gint, minimum number of frames between keyframes * * @kmax: %gint, maximum number of frames between keyframes * * @strip: %gboolean, remove all metadata from image * * Write an image to a file in WebP format. * * By default, images are saved in lossy format, with * @Q giving the WebP quality factor. It has the range 0 - 100, with the * default 75. * * Use @preset to hint the image type to the lossy compressor. The default is * #VIPS_FOREIGN_WEBP_PRESET_DEFAULT. * * Set @smart_subsample to enable high quality chroma subsampling. * * Use @alpha_q to set the quality for the alpha channel in lossy mode. It has * the range 1 - 100, with the default 100. * * Use @reduction_effort to control how much CPU time to spend attempting to * reduce file size. A higher value means more effort and therefore CPU time * should be spent. It has the range 0-6 and a default value of 4. * * Set @lossless to use lossless compression, or combine @near_lossless * with @Q 80, 60, 40 or 20 to apply increasing amounts of preprocessing * which improves the near-lossless compression ratio by up to 50%. * * For animated webp output, @min_size will try to optimize for minimum size. * * For animated webp output, @kmax sets the maximum number of frames between * keyframes. Setting 0 means only keyframes. @kmin sets the minimum number of * frames between frames. Setting 0 means no keyframes. By default, keyframes * are disabled. * * Use the metadata items `loop` and `delay` to set the number of * loops for the animation and the frame delays. * * The writer will attach ICC, EXIF and XMP metadata, unless @strip is set to * %TRUE. * * See also: vips_webpload(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_webpsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "webpsave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_webpsave_buffer: (method) * @in: image to save * @buf: (out) (array length=len) (element-type guint8): return output buffer here * @len: return output length here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @Q: %gint, quality factor * * @lossless: %gboolean, enables lossless compression * * @preset: #VipsForeignWebpPreset, choose lossy compression preset * * @smart_subsample: %gboolean, enables high quality chroma subsampling * * @near_lossless: %gboolean, preprocess in lossless mode (controlled by Q) * * @alpha_q: %gint, set alpha quality in lossless mode * * @reduction_effort: %gint, level of CPU effort to reduce file size * * @min_size: %gboolean, minimise size * * @kmin: %gint, minimum number of frames between keyframes * * @kmax: %gint, maximum number of frames between keyframes * * @strip: %gboolean, remove all metadata from image * * As vips_webpsave(), but save to a memory buffer. * * The address of the buffer is returned in @buf, the length of the buffer in * @len. You are responsible for freeing the buffer with g_free() when you * are done with it. * * See also: vips_webpsave(). * * Returns: 0 on success, -1 on error. */ int vips_webpsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) { va_list ap; VipsArea *area; int result; area = NULL; va_start( ap, len ); result = vips_call_split( "webpsave_buffer", ap, in, &area ); va_end( ap ); if( !result && area ) { if( buf ) { *buf = area->data; area->free_fn = NULL; } if( len ) *len = area->length; vips_area_unref( area ); } return( result ); } /** * vips_webpsave_mime: (method) * @in: image to save * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @Q: %gint, quality factor * * @lossless: %gboolean, enables lossless compression * * @preset: #VipsForeignWebpPreset, choose lossy compression preset * * @smart_subsample: %gboolean, enables high quality chroma subsampling * * @near_lossless: %gboolean, preprocess in lossless mode (controlled by Q) * * @alpha_q: %gint, set alpha quality in lossless mode * * @reduction_effort: %gint, level of CPU effort to reduce file size * * @min_size: %gboolean, minimise size * * @kmin: %gint, minimum number of frames between keyframes * * @kmax: %gint, maximum number of frames between keyframes * * @strip: %gboolean, remove all metadata from image * * As vips_webpsave(), but save as a mime webp on stdout. * * See also: vips_webpsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_webpsave_mime( VipsImage *in, ... ) { va_list ap; int result; va_start( ap, in ); result = vips_call_split( "webpsave_mime", ap, in ); va_end( ap ); return( result ); } /** * vips_webpsave_target: (method) * @in: image to save * @target: save image to this target * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @Q: %gint, quality factor * * @lossless: %gboolean, enables lossless compression * * @preset: #VipsForeignWebpPreset, choose lossy compression preset * * @smart_subsample: %gboolean, enables high quality chroma subsampling * * @near_lossless: %gboolean, preprocess in lossless mode (controlled by Q) * * @alpha_q: %gint, set alpha quality in lossless mode * * @reduction_effort: %gint, level of CPU effort to reduce file size * * @min_size: %gboolean, minimise size * * @kmin: %gint, minimum number of frames between keyframes * * @kmax: %gint, maximum number of frames between keyframes * * @strip: %gboolean, remove all metadata from image * * As vips_webpsave(), but save to a target. * * See also: vips_webpsave(). * * Returns: 0 on success, -1 on error. */ int vips_webpsave_target( VipsImage *in, VipsTarget *target, ... ) { va_list ap; int result; va_start( ap, target ); result = vips_call_split( "webpsave_target", ap, in, target ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/freqfilt/000077500000000000000000000000001361153320700164665ustar00rootroot00000000000000libvips-8.9.1/libvips/freqfilt/Makefile.am000066400000000000000000000003531361153320700205230ustar00rootroot00000000000000noinst_LTLIBRARIES = libfreqfilt.la libfreqfilt_la_SOURCES = \ freqfilt.c \ pfreqfilt.h \ fwfft.c \ invfft.c \ freqmult.c \ spectrum.c \ phasecor.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ libvips-8.9.1/libvips/freqfilt/freqfilt.c000066400000000000000000000110541361153320700204470ustar00rootroot00000000000000/* base class for all Fourier stuff * * properties: * - single output image */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pfreqfilt.h" /** * SECTION: freqfilt * @short_description: fourier transforms and frequency-domin filters * @stability: Stable * @see_also: image * @include: vips/vips.h * * To and from Fourier space, filter in Fourier space, convert Fourier-space * images to a displayable form. */ G_DEFINE_ABSTRACT_TYPE( VipsFreqfilt, vips_freqfilt, VIPS_TYPE_OPERATION ); static int vips_freqfilt_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); #ifdef DEBUG printf( "vips_freqfilt_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_object_set( freqfilt, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_freqfilt_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_freqfilt_class_init( VipsFreqfiltClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "freqfilt"; vobject_class->description = _( "frequency-domain filter operations" ); vobject_class->build = vips_freqfilt_build; VIPS_ARG_IMAGE( class, "in", -1, _( "in" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFreqfilt, in ) ); VIPS_ARG_IMAGE( class, "out", 1, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsFreqfilt, out ) ); } static void vips_freqfilt_init( VipsFreqfilt *freqfilt ) { } /* Transform an n-band image with a 1-band processing function. * * Memory strategy: we need memory buffers for the input and the output of * fftw. In some modes fftw generates only half the output and we construct * the rest. * * input pipeline -> * bandsplit -> * full memory image, freed when im_*fft*() exits -> * fftw -> * half memory image, freed when im_*fft*() exits -> * full memory image, freed when @out is freed -> * partial bandjoin -> * output pipeline * * im__fftproc() needs to just call im__fftproc_fn directly for 1 band images, * so we can't cache the output in this fn. */ int vips__fftproc( VipsObject *context, VipsImage *in, VipsImage **out, VipsFftProcessFn fn ) { VipsImage **bands = (VipsImage **) vips_object_local_array( context, in->Bands ); VipsImage **fft = (VipsImage **) vips_object_local_array( context, in->Bands ); int b; if( in->Bands == 1 ) return( fn( context, in, out ) ); for( b = 0; b < in->Bands; b++ ) if( vips_extract_band( in, &bands[b], b, NULL ) || fn( context, bands[b], &fft[b] ) ) return( -1 ); if( vips_bandjoin( fft, out, in->Bands, NULL ) ) return( -1 ); return( 0 ); } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_freqfilt_operation_init( void ) { #ifdef HAVE_FFTW extern GType vips_fwfft_get_type( void ); extern GType vips_invfft_get_type( void ); #endif /*HAVE_FFTW*/ extern GType vips_freqmult_get_type( void ); extern GType vips_spectrum_get_type( void ); extern GType vips_phasecor_get_type( void ); #ifdef HAVE_FFTW vips_fwfft_get_type(); vips_invfft_get_type(); #endif /*HAVE_FFTW*/ vips_freqmult_get_type(); vips_spectrum_get_type(); vips_phasecor_get_type(); } libvips-8.9.1/libvips/freqfilt/freqmult.c000066400000000000000000000104041361153320700204700ustar00rootroot00000000000000/* frequency-domain filter an image * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : 08/03/1991 * 16/6/93 J.Cupitt * - im_multiply() called, rather than im_cmultim() * 27/10/93 JC * - im_clip2*() called, rather than im_any2*() * 20/9/95 JC * - rewritten * 10/9/98 JC * - frees memory more quickly * 4/3/03 JC * - use im_invfftr() to get real back for speedup * 3/1/14 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pfreqfilt.h" typedef struct _VipsFreqmult { VipsFreqfilt parent_instance; VipsImage *mask; } VipsFreqmult; typedef VipsFreqfiltClass VipsFreqmultClass; G_DEFINE_TYPE( VipsFreqmult, vips_freqmult, VIPS_TYPE_FREQFILT ); static int vips_freqmult_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); VipsFreqmult *freqmult = (VipsFreqmult *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_freqmult_parent_class )-> build( object ) ) return( -1 ); in = freqfilt->in; if( vips_band_format_iscomplex( in->BandFmt ) ) { if( vips_multiply( in, freqmult->mask, &t[0], NULL ) || vips_invfft( t[0], &t[1], "real", TRUE, NULL ) ) return( -1 ); in = t[1]; } else { /* Optimisation: output of vips_invfft() is double, we * will usually cast to char, so rather than keeping a * large double buffer and partial to char from that, * cast to a memory buffer and copy to out from that. * * FIXME does this actually work now we're a class? test * perhaps we need a temporary object */ t[4] = vips_image_new_memory(); if( vips_fwfft( in, &t[0], NULL ) || vips_multiply( t[0], freqmult->mask, &t[1], NULL ) || vips_invfft( t[1], &t[2], "real", TRUE, NULL ) || vips_cast( t[2], &t[3], in->BandFmt, NULL ) || vips_image_write( t[3], t[4] ) ) return( -1 ); in = t[4]; } if( vips_image_write( in, freqfilt->out ) ) return( -1 ); return( 0 ); } static void vips_freqmult_class_init( VipsFreqmultClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "freqmult"; vobject_class->description = _( "frequency-domain filtering" ); vobject_class->build = vips_freqmult_build; VIPS_ARG_IMAGE( class, "mask", 0, _( "mask" ), _( "Input mask image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFreqmult, mask ) ); } static void vips_freqmult_init( VipsFreqmult *freqmult ) { } /** * vips_freqmult: (method) * @in: input image * @mask: mask image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Multiply @in by @mask in Fourier space. * * @in is transformed to Fourier space, multipled with @mask, then * transformed back to real space. If @in is already a complex image, just * multiply then inverse transform. * * See also: vips_invfft(), vips_mask_ideal(). * * Returns: 0 on success, -1 on error. */ int vips_freqmult( VipsImage *in, VipsImage *mask, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "freqmult", ap, in, mask, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/freqfilt/fwfft.c000066400000000000000000000216061361153320700177530ustar00rootroot00000000000000/* forward FFT * * Author: Nicos Dessipris * Written on: 12/04/1990 * Modified on : 09/05/1990 to cope with float input * Modified on : 08/03/1991 history removed * Modified on : 03/04/1991 to cope with any input * * 28/6/95 JC * - rewritten to use im_clip2f() rather than own code * - memory leaks fixed * 10/9/98 JC * - frees memory more quickly * 2/4/02 JC * - fftw code added * 13/7/02 JC * - output Type set to IM_TYPE_FOURIER to help nip * 27/2/03 JC * - exploits real_to_complex() path in libfftw for real input (thanks * Matt) for a 2x speed-up * 17/11/03 JC * - fix a segv for wider than high images in the real_to_complex() path * (thanks Andrey) * - fixes to real_to_complex() path to give the correct result for * non-square images, including odd widths and heights * 3/11/04 * - added fftw3 support * 7/2/10 * - cleanups * - gtkdoc * 25/3/10 * - have a "t" image linked to out to keep the image alive for longer * 27/1/12 * - better setting of interpretation * - remove own fft fallback code * - remove fftw2 path * - reduce memuse * 3/1/14 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pfreqfilt.h" #ifdef HAVE_FFTW #include typedef struct _VipsFwfft { VipsFreqfilt parent_instance; } VipsFwfft; typedef VipsFreqfiltClass VipsFwfftClass; G_DEFINE_TYPE( VipsFwfft, vips_fwfft, VIPS_TYPE_FREQFILT ); /* Real to complex forward transform. */ static int rfwfft1( VipsObject *object, VipsImage *in, VipsImage **out ) { VipsFwfft *fwfft = (VipsFwfft *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( fwfft ); const guint64 size = VIPS_IMAGE_N_PELS( in ); const int half_width = in->Xsize / 2 + 1; double *half_complex; double *planner_scratch; fftw_plan plan; double *buf, *q, *p; int x, y; if( vips_check_mono( class->nickname, in ) || vips_check_uncoded( class->nickname, in ) ) return( -1 ); /* Convert input to a real double membuffer. */ t[1] = vips_image_new_memory(); if( vips_cast_double( in, &t[0], NULL ) || vips_image_write( t[0], t[1] ) ) return( -1 ); /* Make the plan for the transform. Yes, they really do use nx for * height and ny for width. Use a separate scratch buffer for the * planner, we can't overwrite real->data */ if( !(planner_scratch = VIPS_ARRAY( fwfft, VIPS_IMAGE_N_PELS( in ), double )) ) return( -1 ); if( !(half_complex = VIPS_ARRAY( fwfft, in->Ysize * half_width * 2, double )) ) return( -1 ); if( !(plan = fftw_plan_dft_r2c_2d( in->Ysize, in->Xsize, planner_scratch, (fftw_complex *) half_complex, 0 )) ) { vips_error( class->nickname, "%s", _( "unable to create transform plan" ) ); return( -1 ); } fftw_execute_dft_r2c( plan, (double *) t[1]->data, (fftw_complex *) half_complex ); fftw_destroy_plan( plan ); /* Write to out as another memory buffer. */ *out = vips_image_new_memory(); if( vips_image_pipelinev( *out, VIPS_DEMAND_STYLE_ANY, in, NULL ) ) return( -1 ); (*out)->BandFmt = VIPS_FORMAT_DPCOMPLEX; (*out)->Type = VIPS_INTERPRETATION_FOURIER; if( !(buf = VIPS_ARRAY( fwfft, VIPS_IMAGE_N_PELS( *out ), double )) ) return( -1 ); /* Copy and normalise. The right half is the up/down and * left/right flip of the left, but conjugated. Do the first * row separately, then mirror around the centre row. */ p = half_complex; q = buf; for( x = 0; x < half_width; x++ ) { q[0] = p[0] / size; q[1] = p[1] / size; p += 2; q += 2; } p = half_complex + ((in->Xsize + 1) / 2 - 1) * 2; for( x = half_width; x < (*out)->Xsize; x++ ) { q[0] = p[0] / size; q[1] = -1.0 * p[1] / size; p -= 2; q += 2; } if( vips_image_write_line( *out, 0, (VipsPel *) buf ) ) return( -1 ); for( y = 1; y < (*out)->Ysize; y++ ) { p = half_complex + y * half_width * 2; q = buf; for( x = 0; x < half_width; x++ ) { q[0] = p[0] / size; q[1] = p[1] / size; p += 2; q += 2; } /* Good grief. */ p = half_complex + 2 * (((*out)->Ysize - y + 1) * half_width - 2 + (in->Xsize & 1)); for( x = half_width; x < (*out)->Xsize; x++ ) { q[0] = p[0] / size; q[1] = -1.0 * p[1] / size; p -= 2; q += 2; } if( vips_image_write_line( *out, y, (VipsPel *) buf ) ) return( -1 ); } return( 0 ); } /* Complex to complex forward transform. */ static int cfwfft1( VipsObject *object, VipsImage *in, VipsImage **out ) { VipsFwfft *fwfft = (VipsFwfft *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( fwfft ); fftw_plan plan; double *planner_scratch; double *buf, *q, *p; int x, y; if( vips_check_mono( class->nickname, in ) || vips_check_uncoded( class->nickname, in ) ) return( -1 ); /* Convert input to a complex double membuffer. */ t[1] = vips_image_new_memory(); if( vips_cast_dpcomplex( in, &t[0], NULL ) || vips_image_write( t[0], t[1] ) ) return( -1 ); /* We have to have a separate buffer for the planner to work on. */ if( !(planner_scratch = VIPS_ARRAY( fwfft, VIPS_IMAGE_N_PELS( in ) * 2, double )) ) return( -1 ); /* Make the plan for the transform. */ if( !(plan = fftw_plan_dft_2d( in->Ysize, in->Xsize, (fftw_complex *) planner_scratch, (fftw_complex *) planner_scratch, FFTW_FORWARD, 0 )) ) { vips_error( class->nickname, "%s", _( "unable to create transform plan" ) ); return( -1 ); } fftw_execute_dft( plan, (fftw_complex *) t[1]->data, (fftw_complex *) t[1]->data ); fftw_destroy_plan( plan ); /* Write to out as another memory buffer. */ *out = vips_image_new_memory(); if( vips_image_pipelinev( *out, VIPS_DEMAND_STYLE_ANY, in, NULL ) ) return( -1 ); (*out)->BandFmt = VIPS_FORMAT_DPCOMPLEX; (*out)->Type = VIPS_INTERPRETATION_FOURIER; if( !(buf = VIPS_ARRAY( fwfft, VIPS_IMAGE_N_PELS( *out ), double )) ) return( -1 ); /* Copy to out, normalise. */ p = (double *) t[1]->data; for( y = 0; y < (*out)->Ysize; y++ ) { guint64 size = VIPS_IMAGE_N_PELS( *out ); q = buf; for( x = 0; x < (*out)->Xsize; x++ ) { q[0] = p[0] / size; q[1] = p[1] / size; p += 2; q += 2; } if( vips_image_write_line( *out, y, (VipsPel *) buf ) ) return( -1 ); } return( 0 ); } static int vips_fwfft_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); VipsFwfft *fwfft = (VipsFwfft *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_fwfft_parent_class )-> build( object ) ) return( -1 ); in = freqfilt->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_band_format_iscomplex( in->BandFmt ) ) { if( vips__fftproc( VIPS_OBJECT( fwfft ), in, &t[1], cfwfft1 ) ) return( -1 ); } else { if( vips__fftproc( VIPS_OBJECT( fwfft ), in, &t[1], rfwfft1 ) ) return( -1 ); } if( vips_image_write( t[1], freqfilt->out ) ) return( -1 ); return( 0 ); } static void vips_fwfft_class_init( VipsFwfftClass *class ) { VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); vobject_class->nickname = "fwfft"; vobject_class->description = _( "forward FFT" ); vobject_class->build = vips_fwfft_build; } static void vips_fwfft_init( VipsFwfft *fwfft ) { } #endif /*HAVE_FFTW*/ /** * vips_fwfft: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Transform an image to Fourier space. * * VIPS uses the fftw Fourier Transform library. If this library was not * available when VIPS was configured, these functions will fail. * * See also: vips_invfft(). * * Returns: 0 on success, -1 on error. */ int vips_fwfft( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "fwfft", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/freqfilt/invfft.c000066400000000000000000000162171361153320700201350ustar00rootroot00000000000000/* Inverse FFT * * Author: Nicos Dessipris * Written on: 12/04/1990 * Modified on : * 28/6/95 JC * - rewritten, based on new im_invfft() code * 10/9/98 JC * - frees memory more quickly * 2/4/02 JC * - fftw code added * 13/7/02 JC * - Type reset * 27/2/03 JC * - tiny speed-up ... save 1 copy on write * 22/1/04 JC * - oops, fix for segv on wider than high fftw transforms * 3/11/04 * - added fftw3 support * 7/2/10 * - gtkdoc * 27/1/12 * - better setting of interpretation * - remove own fft fallback code * - remove fftw2 path * - reduce memuse * 3/1/14 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pfreqfilt.h" #ifdef HAVE_FFTW #include typedef struct _VipsInvfft { VipsFreqfilt parent_instance; gboolean real; } VipsInvfft; typedef VipsFreqfiltClass VipsInvfftClass; G_DEFINE_TYPE( VipsInvfft, vips_invfft, VIPS_TYPE_FREQFILT ); /* Complex to complex inverse transform. */ static int cinvfft1( VipsObject *object, VipsImage *in, VipsImage **out ) { VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsInvfft *invfft = (VipsInvfft *) object; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( invfft ); fftw_plan plan; double *planner_scratch; if( vips_check_mono( class->nickname, in ) || vips_check_uncoded( class->nickname, in ) ) return( -1 ); /* Convert input to a complex double membuffer. */ *out = vips_image_new_memory(); if( vips_cast_dpcomplex( in, &t[0], NULL ) || vips_image_write( t[0], *out ) ) return( -1 ); /* Make the plan for the transform. Yes, they really do use nx for * height and ny for width. */ if( !(planner_scratch = VIPS_ARRAY( invfft, VIPS_IMAGE_N_PELS( in ) * 2, double )) ) return( -1 ); if( !(plan = fftw_plan_dft_2d( in->Ysize, in->Xsize, (fftw_complex *) planner_scratch, (fftw_complex *) planner_scratch, FFTW_BACKWARD, 0 )) ) { vips_error( class->nickname, "%s", _( "unable to create transform plan" ) ); return( -1 ); } fftw_execute_dft( plan, (fftw_complex *) (*out)->data, (fftw_complex *) (*out)->data ); fftw_destroy_plan( plan ); (*out)->Type = VIPS_INTERPRETATION_B_W; return( 0 ); } /* Complex to real inverse transform. */ static int rinvfft1( VipsObject *object, VipsImage *in, VipsImage **out ) { VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsInvfft *invfft = (VipsInvfft *) object; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( invfft ); const int half_width = in->Xsize / 2 + 1; double *half_complex; double *planner_scratch; fftw_plan plan; int x, y; double *q, *p; /* Convert input to a complex double membuffer. */ t[1] = vips_image_new_memory(); if( vips_cast_dpcomplex( in, &t[0], NULL ) || vips_image_write( t[0], t[1] ) ) return( -1 ); /* Build half-complex image. */ if( !(half_complex = VIPS_ARRAY( invfft, t[1]->Ysize * half_width * 2, double )) ) return( -1 ); q = half_complex; for( y = 0; y < t[1]->Ysize; y++ ) { p = ((double *) t[1]->data) + (guint64) y * t[1]->Xsize * 2; for( x = 0; x < half_width; x++ ) { q[0] = p[0]; q[1] = p[1]; p += 2; q += 2; } } /* Make mem buffer real image for output. */ *out = vips_image_new_memory(); if( vips_image_pipelinev( *out, VIPS_DEMAND_STYLE_ANY, t[1], NULL ) ) return( -1 ); (*out)->BandFmt = VIPS_FORMAT_DOUBLE; (*out)->Type = VIPS_INTERPRETATION_B_W; if( vips_image_write_prepare( *out ) ) return( -1 ); /* Make the plan for the transform. Yes, they really do use nx for * height and ny for width. */ if( !(planner_scratch = VIPS_ARRAY( invfft, t[1]->Ysize * half_width * 2, double )) ) return( -1 ); if( !(plan = fftw_plan_dft_c2r_2d( t[1]->Ysize, t[1]->Xsize, (fftw_complex *) planner_scratch, (double *) (*out)->data, 0 )) ) { vips_error( class->nickname, "%s", _( "unable to create transform plan" ) ); return( -1 ); } fftw_execute_dft_c2r( plan, (fftw_complex *) half_complex, (double *) (*out)->data ); fftw_destroy_plan( plan ); return( 0 ); } static int vips_invfft_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); VipsInvfft *invfft = (VipsInvfft *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_invfft_parent_class )-> build( object ) ) return( -1 ); in = freqfilt->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( invfft->real ) { if( vips__fftproc( VIPS_OBJECT( invfft ), in, &t[1], rinvfft1 ) ) return( -1 ); } else { if( vips__fftproc( VIPS_OBJECT( invfft ), in, &t[1], cinvfft1 ) ) return( -1 ); } if( vips_image_write( t[1], freqfilt->out ) ) return( -1 ); return( 0 ); } static void vips_invfft_class_init( VipsInvfftClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "invfft"; vobject_class->description = _( "inverse FFT" ); vobject_class->build = vips_invfft_build; VIPS_ARG_BOOL( class, "real", 4, _( "Real" ), _( "Output only the real part of the transform" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsInvfft, real ), FALSE ); } static void vips_invfft_init( VipsInvfft *invfft ) { } #endif /*HAVE_FFTW*/ /** * vips_invfft: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @real: only output the real part * * Transform an image from Fourier space to real space. The result is complex. * If you are OK with a real result, set @real, it's quicker. * * VIPS uses the fftw Fourier Transform library. If this library was not * available when VIPS was configured, these functions will fail. * * See also: vips_fwfft(). * * Returns: 0 on success, -1 on error. */ int vips_invfft( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "invfft", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/freqfilt/pfreqfilt.h000066400000000000000000000041741361153320700206410ustar00rootroot00000000000000/* base class for all freqfilt operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PFREQFILT_H #define VIPS_PFREQFILT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_FREQFILT (vips_freqfilt_get_type()) #define VIPS_FREQFILT( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FREQFILT, VipsFreqfilt )) #define VIPS_FREQFILT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FREQFILT, VipsFreqfiltClass)) #define VIPS_IS_FREQFILT( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FREQFILT )) #define VIPS_IS_FREQFILT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FREQFILT )) #define VIPS_FREQFILT_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FREQFILT, VipsFreqfiltClass )) typedef struct _VipsFreqfilt { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipsFreqfilt; typedef struct _VipsFreqfiltClass { VipsOperationClass parent_class; } VipsFreqfiltClass; GType vips_freqfilt_get_type( void ); typedef int (*VipsFftProcessFn)( VipsObject *, VipsImage *, VipsImage ** ); int vips__fftproc( VipsObject *context, VipsImage *in, VipsImage **out, VipsFftProcessFn fn ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PFREQFILT_H*/ libvips-8.9.1/libvips/freqfilt/phasecor.c000066400000000000000000000067731361153320700204530ustar00rootroot00000000000000/* Like spcor, but calculates phase correlation in the Fourier domain. * * Copyright: 2008, Nottingham Trent University * * Author: Tom Vajzovic * Written on: 2008-01-16 * 7/2/10 * - cleanups * - gtkdoc * 3/1/14 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pfreqfilt.h" typedef struct _VipsPhasecor { VipsFreqfilt parent_instance; VipsImage *in2; } VipsPhasecor; typedef VipsFreqfiltClass VipsPhasecorClass; G_DEFINE_TYPE( VipsPhasecor, vips_phasecor, VIPS_TYPE_FREQFILT ); static int vips_phasecor_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); VipsPhasecor *phasecor = (VipsPhasecor *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); VipsImage *in1, *in2; if( VIPS_OBJECT_CLASS( vips_phasecor_parent_class )-> build( object ) ) return( -1 ); in1 = freqfilt->in; in2 = phasecor->in2; if( in1->BandFmt != VIPS_FORMAT_COMPLEX ) { if( vips_fwfft( in1, &t[0], NULL ) ) return( -1 ); in1 = t[0]; } if( in2->BandFmt != VIPS_FORMAT_COMPLEX ) { if( vips_fwfft( in2, &t[1], NULL ) ) return( -1 ); in2 = t[1]; } if( vips_cross_phase( in1, in2, &t[2], NULL ) || vips_invfft( t[2], &t[3], "real", TRUE, NULL ) || vips_image_write( t[3], freqfilt->out ) ) return( -1 ); return( 0 ); } static void vips_phasecor_class_init( VipsPhasecorClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "phasecor"; vobject_class->description = _( "calculate phase correlation" ); vobject_class->build = vips_phasecor_build; VIPS_ARG_IMAGE( class, "in2", 0, _( "in2" ), _( "Second input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPhasecor, in2 ) ); } static void vips_phasecor_init( VipsPhasecor *phasecor ) { } /** * vips_phasecor: * @in1: first input image * @in2: second input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Convert the two input images to Fourier space, calculate phase-correlation, * back to real space. * * See also: vips_fwfft(), vips_cross_phase(), * * Returns: 0 on success, -1 on error. */ int vips_phasecor( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "phasecor", ap, in1, in2, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/freqfilt/spectrum.c000066400000000000000000000062501361153320700204770ustar00rootroot00000000000000/* make a displayable power spectrum for an image * * Author: Nicos Dessipris * Written on: 27/03/1991 * Modified on : * 16/6/93 J.Cupitt * - im_ioflag() changed to im_iocheck() * 23/2/95 JC * - rewritten for partials * 10/9/98 JC * - frees memory more quickly * 2/4/02 JC * - any number of bands * 7/2/10 * - gtkdoc * - cleanups * 3/1/14 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pfreqfilt.h" typedef VipsFreqfilt VipsSpectrum; typedef VipsFreqfiltClass VipsSpectrumClass; G_DEFINE_TYPE( VipsSpectrum, vips_spectrum, VIPS_TYPE_FREQFILT ); static int vips_spectrum_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_spectrum_parent_class )-> build( object ) ) return( -1 ); in = freqfilt->in; if( in->BandFmt != VIPS_FORMAT_COMPLEX ) { if( vips_fwfft( in, &t[0], NULL ) ) return( -1 ); in = t[0]; } if( vips_abs( in, &t[1], NULL ) || vips_scale( t[1], &t[2], "log", TRUE, NULL ) || vips_wrap( t[2], &t[3], NULL ) ) return( -1 ); if( vips_image_write( t[3], freqfilt->out ) ) return( -1 ); return( 0 ); } static void vips_spectrum_class_init( VipsSpectrumClass *class ) { VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); vobject_class->nickname = "spectrum"; vobject_class->description = _( "make displayable power spectrum" ); vobject_class->build = vips_spectrum_build; } static void vips_spectrum_init( VipsSpectrum *spectrum ) { } /** * vips_spectrum: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Make a displayable (ie. 8-bit unsigned int) power spectrum. * * If @in is non-complex, it is transformed to Fourier space. Then the * absolute value is passed through vips_scale() in log mode, and vips_wrap(). * * See also: vips_fwfft(), vips_scale(), vips_wrap(). * * Returns: 0 on success, -1 on error. */ int vips_spectrum( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "spectrum", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/000077500000000000000000000000001361153320700166475ustar00rootroot00000000000000libvips-8.9.1/libvips/histogram/Makefile.am000066400000000000000000000006001361153320700206770ustar00rootroot00000000000000noinst_LTLIBRARIES = libhistogram.la libhistogram_la_SOURCES = \ histogram.c \ phistogram.h \ maplut.c \ case.c \ hist_unary.c \ hist_unary.h \ hist_cum.c \ hist_norm.c \ hist_equal.c \ hist_plot.c \ hist_match.c \ hist_local.c \ percent.c \ hist_ismonotonic.c \ hist_entropy.c \ stdif.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ libvips-8.9.1/libvips/histogram/case.c000066400000000000000000000171361361153320700177360ustar00rootroot00000000000000/* use pixel values to pick cases from an array of images * * 28/7/19 * - from maplut.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include typedef struct _VipsCase { VipsOperation parent_instance; VipsImage *index; VipsArrayImage *cases; VipsImage *out; int n; } VipsCase; typedef VipsOperationClass VipsCaseClass; G_DEFINE_TYPE( VipsCase, vips_case, VIPS_TYPE_OPERATION ); static int vips_case_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion **ar = (VipsRegion **) seq; VipsCase *cas = (VipsCase *) b; VipsRect *r = &or->valid; VipsRegion *index = ar[cas->n]; int x, y, i; VipsPel * restrict ip; VipsPel * restrict q; size_t ils; size_t qls; int hist[256]; VipsPel * restrict p[256]; size_t ls[256]; size_t ps; if( vips_region_prepare( index, r ) ) return( -1 ); g_assert( index->im->BandFmt == VIPS_FORMAT_UCHAR ); g_assert( index->im->Bands == 1 ); /* Histogram of index region, so we know which of our inputs we will * need to prepare. */ memset( hist, 0, cas->n * sizeof( int ) ); ip = VIPS_REGION_ADDR( index, r->left, r->top ); ils = VIPS_REGION_LSKIP( index ); for( y = 0; y < r->height; y++ ) { for( x = 0; x < r->width; x++ ) { int v = VIPS_MIN( ip[x], cas->n - 1 ); hist[v] += 1; } ip += ils; } for( i = 0; i < cas->n; i++ ) if( hist[i] ) { if( vips_region_prepare( ar[i], r ) ) return( -1 ); p[i] = VIPS_REGION_ADDR( ar[i], r->left, r->top ); ls[i] = VIPS_REGION_LSKIP( ar[i] ); } ip = VIPS_REGION_ADDR( index, r->left, r->top ); q = VIPS_REGION_ADDR( or, r->left, r->top ); qls = VIPS_REGION_LSKIP( or ); ps = VIPS_IMAGE_SIZEOF_PEL( or->im ); for( y = 0; y < r->height; y++ ) { int k; k = 0; for( x = 0; x < r->width; x++ ) { int v = VIPS_MIN( ip[x], cas->n - 1 ); VipsPel * restrict pv = p[v]; int j; for( j = 0; j < ps; j++ ) { q[k] = pv[k]; k += 1; } } ip += ils; q += qls; for( i = 0; i < cas->n; i++ ) if( hist[i] ) p[i] += ls[i]; } return( 0 ); } static int vips_case_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCase *cas = (VipsCase *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *index; VipsImage **cases; VipsImage **decode; VipsImage **format; VipsImage **band; VipsImage **size; int i; g_object_set( object, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_case_parent_class )->build( object ) ) return( -1 ); index = cas->index; cases = vips_area_get_data( &cas->cases->area, NULL, &cas->n, NULL, NULL ); if( cas->n > 256 || cas->n < 1 ) { vips_error( class->nickname, "%s", _( "bad number of cases" ) ); return( -1 ); } if( index->Bands > 1 ) { vips_error( class->nickname, "%s", _( "index image not 1-band" ) ); return( -1 ); } /* Cast @index to u8 to make the index image. */ if( vips_cast( index, &t[0], VIPS_FORMAT_UCHAR, NULL ) ) return( -1 ); index = t[0]; decode = (VipsImage **) vips_object_local_array( object, cas->n ); format = (VipsImage **) vips_object_local_array( object, cas->n ); band = (VipsImage **) vips_object_local_array( object, cas->n + 1 ); size = (VipsImage **) vips_object_local_array( object, cas->n + 1 ); /* Decode RAD/LABQ etc. */ for( i = 0; i < cas->n; i++ ) if( vips_image_decode( cases[i], &decode[i] ) ) return( -1 ); cases = decode; /* case images must match in format, size and bands. * * We want everything sized up to the size of the index image, so add * that to the end of the set of images for sizealike. */ band[cas->n] = index; g_object_ref( index ); if( vips__formatalike_vec( cases, format, cas->n ) || vips__bandalike_vec( class->nickname, format, band, cas->n, 1 ) || vips__sizealike_vec( band, size, cas->n + 1 ) ) return( -1 ); cases = size; if( vips_image_pipeline_array( cas->out, VIPS_DEMAND_STYLE_THINSTRIP, cases ) ) return( -1 ); cas->out->BandFmt = cases[0]->BandFmt; cas->out->Bands = cases[0]->Bands; cas->out->Type = cases[0]->Type; if( vips_image_generate( cas->out, vips_start_many, vips_case_gen, vips_stop_many, cases, cas ) ) return( -1 ); return( 0 ); } static void vips_case_class_init( VipsCaseClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "case"; object_class->description = _( "use pixel values to pick cases from an array of images" ); object_class->build = vips_case_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "index", 1, _( "index" ), _( "Index image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCase, index ) ); VIPS_ARG_BOXED( class, "cases", 2, _( "cases" ), _( "Array of case images" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCase, cases ), VIPS_TYPE_ARRAY_IMAGE ); VIPS_ARG_IMAGE( class, "out", 3, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsCase, out ) ); } static void vips_case_init( VipsCase *cas ) { } static int vips_casev( VipsImage *index, VipsImage **cases, VipsImage **out, int n, va_list ap ) { VipsArrayImage *array; int result; array = vips_array_image_new( cases, n ); result = vips_call_split( "case", ap, index, array, out ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } /** * vips_case: (method) * @index: index image * @cases: (array length=n): array of case images * @out: (out): output image * @n: number of case images * @...: %NULL-terminated list of optional named arguments * * Use values in @index to select pixels from @cases. * * @index must have one band. @cases can have up to 256 elements. Values in * @index greater than or equal to @n use the final image in @cases. The * images in @cases must have either one band or the same number of bands. * The output image is the same size as @index. Images in @cases are * expanded to the smallest common format and number of bands. * * Combine this with vips_switch() to make something like a case statement or * a multi-way vips_ifthenelse(). * * See also: vips_maplut(), vips_switch(), vips_ifthenelse(). * * Returns: 0 on success, -1 on error */ int vips_case( VipsImage *index, VipsImage **cases, VipsImage **out, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_casev( index, cases, out, n, ap ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/hist_cum.c000066400000000000000000000110111361153320700206200ustar00rootroot00000000000000/* histogram cumulativisation * * Author: N. Dessipris * Written on: 02/08/1990 * 24/5/95 JC * - tidied up and ANSIfied * 20/7/95 JC * - smartened up again * - now works for hists >256 elements * 3/3/01 JC * - broken into cum and norm ... helps im_histspec() * - better behaviour for >8 bit hists * 31/10/05 JC * - was broken for vertical histograms, gah * - neater im_histnorm() * 23/7/07 * - eek, off by 1 for more than 1 band hists * 12/5/08 * - histcum works for signed hists now as well * 24/3/10 * - gtkdoc * - small cleanups * 12/8/13 * - redone im_histcum() as a class, vips_hist_cum() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "phistogram.h" #include "hist_unary.h" typedef VipsHistUnary VipsHistCum; typedef VipsHistUnaryClass VipsHistCumClass; G_DEFINE_TYPE( VipsHistCum, vips_hist_cum, VIPS_TYPE_HIST_UNARY ); #define ACCUMULATE( ITYPE, OTYPE ) { \ for( b = 0; b < nb; b++ ) { \ ITYPE *p = (ITYPE *) in[0]; \ OTYPE *q = (OTYPE *) out; \ OTYPE total; \ \ total = 0; \ for( x = b; x < mx; x += nb ) { \ total += p[x]; \ q[x] = total; \ } \ } \ } static void vips_hist_cum_process( VipsHistogram *histogram, VipsPel *out, VipsPel **in, int width ) { const int bands = vips_image_get_bands( histogram->ready[0] ); const int nb = vips_band_format_iscomplex( histogram->ready[0]->BandFmt ) ? bands * 2 : bands; int mx = width * nb; int x, b; switch( vips_image_get_format( histogram->ready[0] ) ) { case VIPS_FORMAT_CHAR: ACCUMULATE( signed char, signed int ); break; case VIPS_FORMAT_UCHAR: ACCUMULATE( unsigned char, unsigned int ); break; case VIPS_FORMAT_SHORT: ACCUMULATE( signed short, signed int ); break; case VIPS_FORMAT_USHORT: ACCUMULATE( unsigned short, unsigned int ); break; case VIPS_FORMAT_INT: ACCUMULATE( signed int, signed int ); break; case VIPS_FORMAT_UINT: ACCUMULATE( unsigned int, unsigned int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: ACCUMULATE( float, float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: ACCUMULATE( double, double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_hist_cum_format_table[10] = { /* UC C US S UI I F X D DX */ UI, I, UI, I, UI, I, F, F, D, D }; static void vips_hist_cum_class_init( VipsHistCumClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsHistogramClass *hclass = VIPS_HISTOGRAM_CLASS( class ); object_class->nickname = "hist_cum"; object_class->description = _( "form cumulative histogram" ); hclass->format_table = vips_hist_cum_format_table; hclass->process = vips_hist_cum_process; } static void vips_hist_cum_init( VipsHistCum *hist_cum ) { } /** * vips_hist_cum: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Form cumulative histogram. * * See also: vips_hist_norm(). * * Returns: 0 on success, -1 on error */ int vips_hist_cum( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_cum", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/hist_entropy.c000066400000000000000000000075271361153320700215550ustar00rootroot00000000000000/* estimate entropy * * Author: John Cupitt * 11/8/15 * - from hist_ismonotonic.c * 6/3/16 * - vips_log() call was mangled, thanks Lovell */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include typedef struct _VipsHistEntropy { VipsOperation parent_instance; VipsImage *in; double out; } VipsHistEntropy; typedef VipsOperationClass VipsHistEntropyClass; G_DEFINE_TYPE( VipsHistEntropy, vips_hist_entropy, VIPS_TYPE_OPERATION ); static int vips_hist_entropy_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsHistEntropy *entropy = (VipsHistEntropy *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); double avg; double sum; if( VIPS_OBJECT_CLASS( vips_hist_entropy_parent_class )-> build( object ) ) return( -1 ); if( vips_check_hist( class->nickname, entropy->in ) ) return( -1 ); /* Compute: * norm_hist = hist / sum( hist ) * entropy = -sum( norm_hist * log2( norm_hist ) ) */ if( vips_avg( entropy->in, &avg, NULL ) ) return( -1 ); sum = avg * VIPS_IMAGE_N_PELS( entropy->in ) * entropy->in->Bands; if( vips_linear1( entropy->in, &t[0], 1.0 / sum, 0, NULL ) || vips_log( t[0], &t[1], NULL ) || vips_linear1( t[1], &t[2], 1.0 / log( 2.0 ), 0, NULL ) || vips_multiply( t[0], t[2], &t[3], NULL ) || vips_avg( t[3], &avg, NULL ) ) return( -1 ); g_object_set( entropy, "out", -avg * VIPS_IMAGE_N_PELS( entropy->in ) * entropy->in->Bands, NULL ); return( 0 ); } static void vips_hist_entropy_class_init( VipsHistEntropyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_entropy"; object_class->description = _( "estimate image entropy" ); object_class->build = vips_hist_entropy_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input histogram image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistEntropy, in ) ); VIPS_ARG_DOUBLE( class, "out", 2, _( "Output" ), _( "Output value" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistEntropy, out ), -INFINITY, INFINITY, 0.0 ); } static void vips_hist_entropy_init( VipsHistEntropy *entropy ) { } /** * vips_hist_entropy: (method) * @in: input histogram * @out: (out): image entropy * @...: %NULL-terminated list of optional named arguments * * Estimate image entropy from a histogram. Entropy is calculated as: * * |[ * -sum( p * log2( p ) ) * ]| * * where p is histogram-value / sum-of-histogram-values. * * Returns: 0 on success, -1 on error */ int vips_hist_entropy( VipsImage *in, double *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_entropy", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/hist_equal.c000066400000000000000000000101241361153320700211470ustar00rootroot00000000000000/* Histogram-equalise an image. * * Copyright: 1991, N. Dessipris. * * Author: Nicos Dessipris * Written on: 27/03/1991 * Modified on : * 16/6/93 J.Cupitt * - im_ioflag() changed to im_iocheck() * 24/5/95 JC * - ANSIfied and tidied up * 3/3/01 JC * - more cleanup * 23/3/10 * - gtkdoc * 12/8/13 * - redone as a class * 19/6/17 * - make output format always == input format, thanks Simon */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include typedef struct _VipsHistEqual { VipsOperation parent_instance; VipsImage *in; VipsImage *out; /* -1 for all bands, or the band we scan. */ int which; } VipsHistEqual; typedef VipsOperationClass VipsHistEqualClass; G_DEFINE_TYPE( VipsHistEqual, vips_hist_equal, VIPS_TYPE_OPERATION ); static int vips_hist_equal_build( VipsObject *object ) { VipsHistEqual *equal = (VipsHistEqual *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); g_object_set( equal, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_hist_equal_parent_class )->build( object ) ) return( -1 ); /* norm can return a uchar output for a ushort input if the range is * small, so make sure we cast back to the input type again. */ if( vips_hist_find( equal->in, &t[0], "band", equal->which, NULL ) || vips_hist_cum( t[0], &t[1], NULL ) || vips_hist_norm( t[1], &t[2], NULL ) || vips_cast( t[2], &t[3], equal->in->BandFmt, NULL ) || vips_maplut( equal->in, &t[4], t[3], NULL ) || vips_image_write( t[4], equal->out ) ) return( -1 ); return( 0 ); } static void vips_hist_equal_class_init( VipsHistEqualClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_equal"; object_class->description = _( "histogram equalisation" ); object_class->build = vips_hist_equal_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistEqual, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistEqual, out ) ); VIPS_ARG_INT( class, "band", 110, _( "Band" ), _( "Equalise with this band" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHistEqual, which ), -1, 100000, -1 ); } static void vips_hist_equal_init( VipsHistEqual *equal ) { equal->which = -1; } /** * vips_hist_equal: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @band: band to equalise * * Histogram-equalise @in. Equalise using band @bandno, or if @bandno is -1, * equalise bands independently. The output format is always the same as the * input format. * * See also: * * Returns: 0 on success, -1 on error */ int vips_hist_equal( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_equal", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/hist_ismonotonic.c000066400000000000000000000100151361153320700224000ustar00rootroot00000000000000/* test for monotonicity * * Author: John Cupitt * Written on: 18/7/1995 * 17/9/96 JC * - restrictions on Ps, Pm, Ph relaxed * - restrictions on S, M, H relaxed * 25/7/01 JC * - patched for im_extract_band() change * 11/7/04 * - generalised to im_tone_build_range() ... so you can use it for any * image, not just LabS * 26/3/10 * - cleanups * - gtkdoc * 20/9/13 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include typedef struct _VipsHistIsmonotonic { VipsOperation parent_instance; VipsImage *in; gboolean monotonic; } VipsHistIsmonotonic; typedef VipsOperationClass VipsHistIsmonotonicClass; G_DEFINE_TYPE( VipsHistIsmonotonic, vips_hist_ismonotonic, VIPS_TYPE_OPERATION ); static int vips_hist_ismonotonic_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsHistIsmonotonic *ismonotonic = (VipsHistIsmonotonic *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); double m; if( VIPS_OBJECT_CLASS( vips_hist_ismonotonic_parent_class )-> build( object ) ) return( -1 ); if( vips_check_hist( class->nickname, ismonotonic->in ) ) return( -1 ); if( ismonotonic->in->Xsize == 1 ) t[0] = vips_image_new_matrixv( 1, 2, -1.0, 1.0 ); else t[0] = vips_image_new_matrixv( 2, 1, -1.0, 1.0 ); vips_image_set_double( t[0], "offset", 128 ); /* We want >=128 everywhere, ie. no -ve transitions. */ if( vips_conv( ismonotonic->in, &t[1], t[0], "precision", VIPS_PRECISION_INTEGER, NULL ) || vips_moreeq_const1( t[1], &t[2], 128, NULL ) || vips_min( t[2], &m, NULL ) ) return( -1 ); g_object_set( ismonotonic, "monotonic", (int) m == 255, NULL ); return( 0 ); } static void vips_hist_ismonotonic_class_init( VipsHistIsmonotonicClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_ismonotonic"; object_class->description = _( "test for monotonicity" ); object_class->build = vips_hist_ismonotonic_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input histogram image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistIsmonotonic, in ) ); VIPS_ARG_BOOL( class, "monotonic", 2, _( "Monotonic" ), _( "true if in is monotonic" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistIsmonotonic, monotonic ), FALSE ); } static void vips_hist_ismonotonic_init( VipsHistIsmonotonic *ismonotonic ) { } /** * vips_hist_ismonotonic: (method) * @in: lookup-table to test * @out: (out): set non-zero if @in is monotonic * @...: %NULL-terminated list of optional named arguments * * Test @in for monotonicity. @out is set non-zero if @in is monotonic. * * Returns: 0 on success, -1 on error */ int vips_hist_ismonotonic( VipsImage *in, gboolean *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_ismonotonic", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/hist_local.c000066400000000000000000000244001361153320700211340ustar00rootroot00000000000000/* local histogram equalisation * * Copyright: 1991, N. Dessipris * * Author: N. Dessipris * Written on: 24/10/1991 * Modified on : * 25/1/96 JC * - rewritten, adapting im_spcor() * - correct result, 2x faster, partial, simpler, better arg checking * 8/7/04 * - expand input rather than output with new im_embed() mode * - _raw() output is one pixel larger * - sets Xoffset/Yoffset * 23/6/08 * - check for window too small as well * 25/3/10 * - gtkdoc * - small cleanups * 5/9/13 * - redo as a class * 9/9/13 * - any number of bands * 20/1/17 * - add contrast limit * - sum to <= target, not < target, since cumulative hists include the * current value * - scale result by 255, not 256, to avoid overflow * - off by 1 fix for odd window widths */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include typedef struct _VipsHistLocal { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int width; int height; int max_slope; } VipsHistLocal; typedef VipsOperationClass VipsHistLocalClass; G_DEFINE_TYPE( VipsHistLocal, vips_hist_local, VIPS_TYPE_OPERATION ); /* Our sequence value: the region this sequence is using, and local stats. */ typedef struct { VipsRegion *ir; /* Input region */ /* A 256-element hist for every band. */ unsigned int **hist; } VipsHistLocalSequence; static int vips_hist_local_stop( void *vseq, void *a, void *b ) { VipsHistLocalSequence *seq = (VipsHistLocalSequence *) vseq; VipsImage *in = (VipsImage *) a; VIPS_UNREF( seq->ir ); if( seq->hist && in ) { int i; for( i = 0; i < in->Bands; i++ ) VIPS_FREE( seq->hist[i] ); VIPS_FREE( seq->hist ); } VIPS_FREE( seq ); return( 0 ); } static void * vips_hist_local_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsHistLocalSequence *seq; int i; if( !(seq = VIPS_NEW( NULL, VipsHistLocalSequence )) ) return( NULL ); seq->ir = NULL; seq->hist = NULL; if( !(seq->ir = vips_region_new( in )) || !(seq->hist = VIPS_ARRAY( NULL, in->Bands, unsigned int * )) ) { vips_hist_local_stop( seq, NULL, NULL ); return( NULL ); } for( i = 0; i < in->Bands; i++ ) if( !(seq->hist[i] = VIPS_ARRAY( NULL, 256, unsigned int )) ) { vips_hist_local_stop( seq, NULL, NULL ); return( NULL ); } return( seq ); } static int vips_hist_local_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsHistLocalSequence *seq = (VipsHistLocalSequence *) vseq; VipsImage *in = (VipsImage *) a; const VipsHistLocal *local = (VipsHistLocal *) b; VipsRect *r = &or->valid; const int bands = in->Bands; const int max_slope = local->max_slope; VipsRect irect; int y; int lsk; int centre; /* Offset to move to centre of window */ /* What part of ir do we need? */ irect.left = r->left; irect.top = r->top; irect.width = r->width + local->width; irect.height = r->height + local->height; if( vips_region_prepare( seq->ir, &irect ) ) return( -1 ); lsk = VIPS_REGION_LSKIP( seq->ir ); centre = lsk * (local->height / 2) + bands * (local->width / 2); for( y = 0; y < r->height; y++ ) { /* Get input and output pointers for this line. */ VipsPel * restrict p = VIPS_REGION_ADDR( seq->ir, r->left, r->top + y ); VipsPel * restrict q = VIPS_REGION_ADDR( or, r->left, r->top + y ); VipsPel * restrict p1; int x, i, j, b; /* Find histogram for the start of this line. */ for( b = 0; b < bands; b++ ) memset( seq->hist[b], 0, 256 * sizeof( unsigned int ) ); p1 = p; for( j = 0; j < local->height; j++ ) { for( i = 0, x = 0; x < local->width; x++ ) for( b = 0; b < bands; b++, i++ ) seq->hist[b][p1[i]] += 1; p1 += lsk; } /* Loop for output pels. */ for( x = 0; x < r->width; x++ ) { for( b = 0; b < bands; b++ ) { /* Sum histogram up to current pel. */ unsigned int * restrict hist = seq->hist[b]; const int target = p[centre + b]; int sum; sum = 0; /* For CLAHE we need to limit the height of the * hist to limit the amount we boost the * contrast by. */ if( max_slope > 0 ) { int sum_over; sum_over = 0; /* Must be <= target, since a cum hist * always includes the current element. */ for( i = 0; i <= target; i++ ) { if( hist[i] > max_slope ) { sum_over += hist[i] - max_slope; sum += max_slope; } else sum += hist[i]; } for( ; i < 256; i++ ) { if( hist[i] > max_slope ) sum_over += hist[i] - max_slope; } /* The extra clipped off bit from the * top of the hist is spread over all * bins equally, then summed to target. */ sum += (target + 1) * sum_over / 256; } else { sum = 0; for( i = 0; i <= target; i++ ) sum += hist[i]; } /* This can't overflow, even in * contrast-limited mode. * * Scale by 255, not 256, or we'll get * overflow. */ q[b] = 255 * sum / (local->width * local->height); /* Adapt histogram --- remove the pels from * the left hand column, add in pels for a * new right-hand column. */ p1 = p + b; for( j = 0; j < local->height; j++ ) { hist[p1[0]] -= 1; hist[p1[bands * local->width]] += 1; p1 += lsk; } } p += bands; q += bands; } } return( 0 ); } static int vips_hist_local_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsHistLocal *local = (VipsHistLocal *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_hist_local_parent_class )->build( object ) ) return( -1 ); in = local->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_check_format( class->nickname, in, VIPS_FORMAT_UCHAR ) ) return( -1 ); if( local->width > in->Xsize || local->height > in->Ysize ) { vips_error( class->nickname, "%s", _( "window too large" ) ); return( -1 ); } /* Expand the input. */ if( vips_embed( in, &t[1], local->width / 2, local->height / 2, in->Xsize + local->width - 1, in->Ysize + local->height - 1, "extend", VIPS_EXTEND_MIRROR, NULL ) ) return( -1 ); in = t[1]; g_object_set( object, "out", vips_image_new(), NULL ); /* Set demand hints. FATSTRIP is good for us, as THINSTRIP will cause * too many recalculations on overlaps. */ if( vips_image_pipelinev( local->out, VIPS_DEMAND_STYLE_FATSTRIP, in, NULL ) ) return( -1 ); local->out->Xsize -= local->width - 1; local->out->Ysize -= local->height - 1; if( vips_image_generate( local->out, vips_hist_local_start, vips_hist_local_generate, vips_hist_local_stop, in, local ) ) return( -1 ); local->out->Xoffset = 0; local->out->Yoffset = 0; vips_reorder_margin_hint( local->out, local->width * local->height ); return( 0 ); } static void vips_hist_local_class_init( VipsHistLocalClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_local"; object_class->description = _( "local histogram equalisation" ); object_class->build = vips_hist_local_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistLocal, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistLocal, out ) ); VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Window width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistLocal, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Window height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistLocal, height ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "max_slope", 6, _( "Max slope" ), _( "Maximum slope (CLAHE)" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHistLocal, max_slope ), 0, 100, 0 ); } static void vips_hist_local_init( VipsHistLocal *local ) { } /** * vips_hist_local: (method) * @in: input image * @out: (out): output image * @width: width of region * @height: height of region * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @max_slope: maximum brightening * * Performs local histogram equalisation on @in using a * window of size @width by @height centered on the input pixel. * * The output image is the same size as the input image. The edge pixels are * created by mirroring the input image outwards. * * If @max_slope is greater than 0, it sets the maximum value for the slope of * the cumulative histogram, that is, the maximum brightening that is * performed. A value of 3 is often used. Local histogram equalization with * contrast limiting is usually called CLAHE. * * See also: vips_hist_equal(). * * Returns: 0 on success, -1 on error */ int vips_hist_local( VipsImage *in, VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "hist_local", ap, in, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/hist_match.c000066400000000000000000000115051361153320700211400ustar00rootroot00000000000000/* Match two normalised, cumulative histograms. * * Copyright: 1991, N. Dessipris. * * Author: Nicos Dessipris * Written on: 19/07/1990 * Modified on: 26/03/1991 * * 1/3/01 JC * - bleurg! rewritten, now does 16 bits as well, bugs removed, faster, * smaller * 24/3/10 * - gtkdoc * - small cleanups * 12/8/13 * - redone im_histspec() as a class, vips_hist_match() * 19/12/13 * - oop, upcast input */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "phistogram.h" /* #define DEBUG */ typedef struct _VipsHistMatch { VipsHistogram parent_instance; VipsImage *in; VipsImage *ref; } VipsHistMatch; typedef VipsHistogramClass VipsHistMatchClass; G_DEFINE_TYPE( VipsHistMatch, vips_hist_match, VIPS_TYPE_HISTOGRAM ); static void vips_hist_match_process( VipsHistogram *histogram, VipsPel *out, VipsPel **in, int width ) { VipsHistMatch *match = (VipsHistMatch *) histogram; const int bands = match->in->Bands; const int max = width * bands; unsigned int *inbuf = (unsigned int *) in[0]; unsigned int *refbuf = (unsigned int *) in[1]; unsigned int *outbuf = (unsigned int *) out; int i, j; for( j = 0; j < bands; j++ ) { /* Track up refbuf[] with this. */ int ri = j; int limit = max - bands; for( i = j; i < max; i += bands ) { unsigned int inv = inbuf[i]; for( ; ri < limit; ri += bands ) if( inv <= refbuf[ri] ) break; if( ri < limit ) { /* Simple rounding. */ double mid = refbuf[ri] + refbuf[ri + bands] / 2.0; if( inv < mid ) outbuf[i] = ri / bands; else outbuf[i] = ri / bands + 1; } else outbuf[i] = refbuf[ri]; } } } static int vips_hist_match_build( VipsObject *object ) { VipsHistogram *histogram = VIPS_HISTOGRAM( object ); VipsHistMatch *match = (VipsHistMatch *) object; histogram->n = 2; histogram->in = (VipsImage **) vips_object_local_array( object, 2 ); histogram->in[0] = match->in; histogram->in[1] = match->ref; if( histogram->in[0] ) g_object_ref( histogram->in[0] ); if( histogram->in[1] ) g_object_ref( histogram->in[1] ); if( VIPS_OBJECT_CLASS( vips_hist_match_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_hist_match_class_init( VipsHistMatchClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsHistogramClass *hclass = VIPS_HISTOGRAM_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "hist_match"; vobject_class->description = _( "match two histograms" ); vobject_class->build = vips_hist_match_build; hclass->input_format = VIPS_FORMAT_UINT; hclass->process = vips_hist_match_process; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input histogram" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistMatch, in ) ); VIPS_ARG_IMAGE( class, "ref", 2, _( "Reference" ), _( "Reference histogram" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistMatch, ref ) ); } static void vips_hist_match_init( VipsHistMatch *match ) { } /** * vips_hist_match: (method) * @in: input histogram * @ref: reference histogram * @out: (out): output histogram * @...: %NULL-terminated list of optional named arguments * * Adjust @in to match @ref. If @in and @ref are normalised * cumulative histograms, @out will be a LUT that adjusts the PDF of the image * from which @in was made to match the PDF of @ref's image. * * See also: vips_maplut(), vips_hist_find(), vips_hist_norm(), * vips_hist_cum(). * * Returns: 0 on success, -1 on error */ int vips_hist_match( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_match", ap, in, ref, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/hist_norm.c000066400000000000000000000104731361153320700210220ustar00rootroot00000000000000/* histogram normalisation * * Author: N. Dessipris * Written on: 02/08/1990 * 24/5/95 JC * - tidied up and ANSIfied * 20/7/95 JC * - smartened up again * - now works for hists >256 elements * 3/3/01 JC * - broken into norm and norm ... helps im_histspec() * - better behaviour for >8 bit hists * 31/10/05 JC * - was broken for vertical histograms, gah * - neater im_histnorm() * 23/7/07 * - eek, off by 1 for more than 1 band hists * 12/5/08 * - histnorm works for signed hists now as well * 24/3/10 * - gtkdoc * - small cleanups * 12/8/13 * - redone im_histnorm() as a class, vips_hist_norm() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include typedef struct _VipsHistNorm { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipsHistNorm; typedef VipsOperationClass VipsHistNormClass; G_DEFINE_TYPE( VipsHistNorm, vips_hist_norm, VIPS_TYPE_OPERATION ); static int vips_hist_norm_build( VipsObject *object ) { VipsHistNorm *norm = (VipsHistNorm *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); guint64 px; int bands; double *a, *b; int y; VipsBandFormat fmt; g_object_set( object, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_hist_norm_parent_class )->build( object ) ) return( -1 ); /* Need max for each channel. */ if( vips_stats( norm->in, &t[0], NULL ) ) return( -1 ); /* Scale each channel by px / channel max */ px = VIPS_IMAGE_N_PELS( norm->in ); bands = norm->in->Bands; if( !(a = VIPS_ARRAY( object, bands, double )) || !(b = VIPS_ARRAY( object, bands, double )) ) return( -1 ); for( y = 0; y < bands; y++ ) { a[y] = px / *VIPS_MATRIX( t[0], 1, y + 1 ); b[y] = 0; } if( vips_linear( norm->in, &t[1], a, b, bands, NULL ) ) return( -1 ); /* Make output format as small as we can. */ if( px <= 256 ) fmt = VIPS_FORMAT_UCHAR; else if( px <= 65536 ) fmt = VIPS_FORMAT_USHORT; else fmt = VIPS_FORMAT_UINT; if( vips_cast( t[1], &t[2], fmt, NULL ) || vips_image_write( t[2], norm->out ) ) return( -1 ); return( 0 ); } static void vips_hist_norm_class_init( VipsHistNormClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_norm"; object_class->description = _( "normalise histogram" ); object_class->build = vips_hist_norm_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistNorm, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistNorm, out ) ); } static void vips_hist_norm_init( VipsHistNorm *hist_norm ) { } /** * vips_hist_norm: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Normalise histogram ... normalise range to make it square (ie. max == * number of elements). Normalise each band separately. * * See also: vips_hist_cum(). * * Returns: 0 on success, -1 on error */ int vips_hist_norm( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_norm", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/hist_plot.c000066400000000000000000000202241361153320700210200ustar00rootroot00000000000000/* draw a histogram * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris. * Written on: 09/07/1990 * Modified on : 12/03/1991 * 20/6/95 JC * - rules rationalised * - im_lineprof removed * - rewritten * 13/8/99 JC * - rewritten again for partial, rules redone * 19/9/99 JC * - oooops, broken for >1 band * 26/9/99 JC * - oooops, graph float was wrong * 17/11/99 JC * - oops, failed for all 0's histogram * 14/12/05 * - redone plot function in C, also use incheck() to cache calcs * - much, much faster! * 12/5/09 * - fix signed/unsigned warning * 24/3/10 * - gtkdoc * - small cleanups * - oop, would fail for signed int histograms * 19/8/13 * - wrap as a class, left a rewrite for now */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "phistogram.h" typedef struct _VipsHistPlot { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipsHistPlot; typedef VipsOperationClass VipsHistPlotClass; G_DEFINE_TYPE( VipsHistPlot, vips_hist_plot, VIPS_TYPE_OPERATION ); #define VERT( TYPE ) { \ TYPE *p1 = (TYPE *) p; \ \ for( x = le; x < ri; x++ ) { \ for( z = 0; z < nb; z++ ) \ q[z] = p1[z] < ((TYPE) x) ? 0 : 255; \ \ q += nb; \ } \ } /* Generate function. */ static int vips_hist_plot_vert_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsImage *in = (VipsImage *) a; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int ri = VIPS_RECT_RIGHT( r ); int bo = VIPS_RECT_BOTTOM( r ); int nb = in->Bands; int x, y, z; for( y = to; y < bo; y++ ) { VipsPel *q = VIPS_REGION_ADDR( or, le, y ); VipsPel *p = VIPS_IMAGE_ADDR( in, 0, y ); switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: VERT( unsigned char ); break; case VIPS_FORMAT_CHAR: VERT( signed char ); break; case VIPS_FORMAT_USHORT: VERT( unsigned short ); break; case VIPS_FORMAT_SHORT: VERT( signed short ); break; case VIPS_FORMAT_UINT: VERT( unsigned int ); break; case VIPS_FORMAT_INT: VERT( signed int ); break; case VIPS_FORMAT_FLOAT: VERT( float ); break; case VIPS_FORMAT_DOUBLE: VERT( double ); break; default: g_assert_not_reached(); } } return( 0 ); } #define HORZ( TYPE ) { \ TYPE *p1 = (TYPE *) p; \ \ for( y = to; y < bo; y++ ) { \ for( z = 0; z < nb; z++ ) \ q[z] = p1[z] < ((TYPE) (ht - y)) ? 0 : 255; \ \ q += lsk; \ } \ } /* Generate function. */ static int vips_hist_plot_horz_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsImage *in = (VipsImage *) a; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int ri = VIPS_RECT_RIGHT( r ); int bo = VIPS_RECT_BOTTOM( r ); int nb = in->Bands; int lsk = VIPS_REGION_LSKIP( or ); int ht = or->im->Ysize; int x, y, z; for( x = le; x < ri; x++ ) { VipsPel *q = VIPS_REGION_ADDR( or, x, to ); VipsPel *p = VIPS_IMAGE_ADDR( in, x, 0 ); switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: HORZ( unsigned char ); break; case VIPS_FORMAT_CHAR: HORZ( signed char ); break; case VIPS_FORMAT_USHORT: HORZ( unsigned short ); break; case VIPS_FORMAT_SHORT: HORZ( signed short ); break; case VIPS_FORMAT_UINT: HORZ( unsigned int ); break; case VIPS_FORMAT_INT: HORZ( signed int ); break; case VIPS_FORMAT_FLOAT: HORZ( float ); break; case VIPS_FORMAT_DOUBLE: HORZ( double ); break; default: g_assert_not_reached(); } } return( 0 ); } static int vips_hist_plot_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsHistPlot *plot = (VipsHistPlot *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; double min, max; int width, height, tsize; VipsGenerateFn generate_fn; g_object_set( plot, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_hist_plot_parent_class )->build( object ) ) return( -1 ); in = plot->in; if( vips_check_uncoded( class->nickname, in ) || vips_check_noncomplex( class->nickname, in ) || vips_check_hist( class->nickname, in ) ) return( -1 ); if( !vips_band_format_isuint( in->BandFmt ) && vips_band_format_isint( in->BandFmt ) ) { /* A signed int type. Move min up to 0. */ double min; if( vips_min( in, &min, NULL ) || vips_linear1( in, &t[0], 1.0, -min, NULL ) ) return( -1 ); in = t[0]; } else if( vips_band_format_isfloat( in->BandFmt ) ) { /* Float image: scale min--max to 0--any. Output square * graph. */ int any = in->Xsize * in->Ysize; if( vips_stats( in, &t[0], NULL ) ) return( -1 ); min = *VIPS_MATRIX( t[0], 0, 0 ); max = *VIPS_MATRIX( t[0], 1, 0 ); if( vips_linear1( in, &t[1], any / (max - min), -min * any / (max - min), NULL ) ) return( -1 ); in = t[1]; } if( vips_image_wio_input( in ) ) return( -1 ); /* Find range we will plot. */ if( vips_max( in, &max, NULL ) ) return( -1 ); g_assert( max >= 0 ); if( in->BandFmt == VIPS_FORMAT_UCHAR ) tsize = 256; else tsize = VIPS_CEIL( max ); /* Make sure we don't make a zero height image. */ if( tsize == 0 ) tsize = 1; if( in->Xsize == 1 ) { /* Vertical graph. */ width = tsize; height = in->Ysize; generate_fn = vips_hist_plot_vert_gen; } else { /* Horizontal graph. */ width = in->Xsize; height = tsize; generate_fn = vips_hist_plot_horz_gen; } /* Set image. */ vips_image_init_fields( plot->out, width, height, in->Bands, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); vips_image_pipelinev( plot->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( plot->out, NULL, generate_fn, NULL, in, NULL ) ) return( -1 ); return( 0 ); } static void vips_hist_plot_class_init( VipsHistPlotClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_plot"; object_class->description = _( "plot histogram" ); object_class->build = vips_hist_plot_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistPlot, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistPlot, out ) ); } static void vips_hist_plot_init( VipsHistPlot *hist_plot ) { } /** * vips_hist_plot: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Plot a 1 by any or any by 1 image file as a max by any or * any by max image using these rules: * * unsigned char max is always 256 * * other unsigned integer types output 0 - maxium * value of @in. * * signed int types min moved to 0, max moved to max + min. * * float types min moved to 0, max moved to any * (square output) * * Returns: 0 on success, -1 on error */ int vips_hist_plot( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_plot", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/hist_unary.c000066400000000000000000000046631361153320700212110ustar00rootroot00000000000000/* a hist operation implemented as a unary processor * * properties: * - single hist to single hist */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "phistogram.h" #include "hist_unary.h" G_DEFINE_ABSTRACT_TYPE( VipsHistUnary, vips_hist_unary, VIPS_TYPE_HISTOGRAM ); static int vips_hist_unary_build( VipsObject *object ) { VipsHistogram *histogram = VIPS_HISTOGRAM( object ); VipsHistUnary *unary = VIPS_HIST_UNARY( object ); histogram->n = 1; histogram->in = (VipsImage **) vips_object_local_array( object, 1 ); histogram->in[0] = unary->in; if( histogram->in[0] ) g_object_ref( histogram->in[0] ); if( VIPS_OBJECT_CLASS( vips_hist_unary_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_hist_unary_class_init( VipsHistUnaryClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "hist_unary"; vobject_class->description = _( "hist_unary operations" ); vobject_class->build = vips_hist_unary_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistUnary, in ) ); } static void vips_hist_unary_init( VipsHistUnary *hist_unary ) { } libvips-8.9.1/libvips/histogram/hist_unary.h000066400000000000000000000037451361153320700212160ustar00rootroot00000000000000/* base class for all hist_unary operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PHIST_UNARY_H #define VIPS_PHIST_UNARY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_HIST_UNARY (vips_hist_unary_get_type()) #define VIPS_HIST_UNARY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_HIST_UNARY, VipsHistUnary )) #define VIPS_HIST_UNARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_HIST_UNARY, VipsHistUnaryClass)) #define VIPS_IS_HIST_UNARY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_HIST_UNARY )) #define VIPS_IS_HIST_UNARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_HIST_UNARY )) #define VIPS_HIST_UNARY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_HIST_UNARY, VipsHistUnaryClass )) typedef struct _VipsHistUnary { VipsHistogram parent_instance; VipsImage *in; } VipsHistUnary; typedef struct _VipsHistUnaryClass { VipsHistogramClass parent_class; } VipsHistUnaryClass; GType vips_hist_unary_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PHIST_UNARY_H*/ libvips-8.9.1/libvips/histogram/histogram.c000066400000000000000000000175011361153320700210140ustar00rootroot00000000000000/* base class for all histogram operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "phistogram.h" /** * SECTION: histogram * @short_description: find, manipulate and apply histograms and lookup tables * @stability: Stable * @see_also: image * arithmetic * create * @include: vips/vips.h * * Histograms and look-up tables are 1xn or nx1 images, where n is less than * 256 or less than 65536, corresponding to 8- and 16-bit unsigned int images. * They are tagged with a #VipsInterpretation of * #VIPS_INTERPRETATION_HISTOGRAM and usually displayed by user-interfaces * such as nip2 as plots rather than images. * * These functions can be broadly grouped as things to find or build * histograms (vips_hist_find(), vips_hist_find_indexed(), * vips_hist_find_ndim(), vips_buildlut(), vips_identity()), * operations that * manipulate histograms in some way (vips_hist_cum(), vips_hist_norm()), * operations to apply histograms (vips_maplut()), and a variety of utility * operations. * * A final group of operations build tone curves. These are useful in * pre-press work for adjusting the appearance of images. They are designed * for CIELAB images, but might be useful elsewhere. */ G_DEFINE_ABSTRACT_TYPE( VipsHistogram, vips_histogram, VIPS_TYPE_OPERATION ); /* sizealike by expanding in just one dimension and copying the final element. */ static int vips__hist_sizealike_vec( VipsImage **in, VipsImage **out, int n ) { int i; int max_size; g_assert( n >= 1 ); max_size = VIPS_MAX( in[0]->Xsize, in[0]->Ysize ); for( i = 1; i < n; i++ ) max_size = VIPS_MAX( max_size, VIPS_MAX( in[0]->Xsize, in[0]->Ysize ) ); for( i = 0; i < n; i++ ) if( in[i]->Ysize == 1 ) { if( vips_embed( in[i], &out[i], 0, 0, max_size, 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); } else { if( vips_embed( in[i], &out[i], 0, 0, 1, max_size, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); } return( 0 ); } static int vips_histogram_build( VipsObject *object ) { VipsHistogram *histogram = VIPS_HISTOGRAM( object ); VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsHistogramClass *hclass = VIPS_HISTOGRAM_GET_CLASS( histogram ); VipsImage **decode; VipsImage **format; VipsImage **band; VipsImage **size; VipsImage **memory; VipsPel *outbuf; VipsPel **inbuf; int i; #ifdef DEBUG printf( "vips_histogram_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_histogram_parent_class )->build( object ) ) return( -1 ); g_assert( histogram->n > 0 ); /* Must be NULL-terminated. */ g_assert( !histogram->in[histogram->n] ); decode = (VipsImage **) vips_object_local_array( object, histogram->n ); format = (VipsImage **) vips_object_local_array( object, histogram->n ); band = (VipsImage **) vips_object_local_array( object, histogram->n ); size = (VipsImage **) vips_object_local_array( object, histogram->n ); memory = (VipsImage **) vips_object_local_array( object, histogram->n ); g_object_set( histogram, "out", vips_image_new(), NULL ); for( i = 0; i < histogram->n; i++ ) if( vips_image_decode( histogram->in[i], &decode[i] ) || vips_check_hist( class->nickname, decode[i] ) ) return( -1 ); /* Cast our input images up to a common format, bands and size. If * input_format is set, cast to a fixed input type. */ if( hclass->input_format != VIPS_FORMAT_NOTSET ) { for( i = 0; i < histogram->n; i++ ) if( vips_cast( decode[i], &format[i], hclass->input_format, NULL ) ) return( -1 ); } else { if( vips__formatalike_vec( decode, format, histogram->n ) ) return( -1 ); } if( vips__bandalike_vec( class->nickname, format, band, histogram->n, 1 ) || vips__hist_sizealike_vec( band, size, histogram->n ) ) return( -1 ); if( vips_image_pipeline_array( histogram->out, VIPS_DEMAND_STYLE_THINSTRIP, size ) ) return( -1 ); /* Need a copy of the inputs in memory. */ if( !(inbuf = VIPS_ARRAY( object, histogram->n + 1, VipsPel * )) ) return( -1 ); for( i = 0; i < histogram->n; i++ ) { if( !(memory[i] = vips_image_copy_memory( size[i] )) ) return( -1 ); inbuf[i] = VIPS_IMAGE_ADDR( memory[i], 0, 0 ); } inbuf[i] = NULL; /* Keep a copy of the memory images here for subclasses. */ histogram->ready = memory; histogram->out->Xsize = VIPS_IMAGE_N_PELS( histogram->ready[0] ); histogram->out->Ysize = 1; if( hclass->format_table ) histogram->out->BandFmt = hclass->format_table[histogram->ready[0]->BandFmt]; histogram->out->Type = VIPS_INTERPRETATION_HISTOGRAM; if( !(outbuf = vips_malloc( object, VIPS_IMAGE_SIZEOF_LINE( histogram->out ))) ) return( -1 ); hclass->process( histogram, outbuf, inbuf, histogram->ready[0]->Xsize ); if( vips_image_write_line( histogram->out, 0, outbuf ) ) return( -1 ); return( 0 ); } static void vips_histogram_class_init( VipsHistogramClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "histogram"; vobject_class->description = _( "histogram operations" ); vobject_class->build = vips_histogram_build; class->input_format = VIPS_FORMAT_NOTSET; /* Inputs set by subclassess. */ VIPS_ARG_IMAGE( class, "out", 10, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistogram, out ) ); } static void vips_histogram_init( VipsHistogram *histogram ) { /* Sanity check this above. */ histogram->n = -1; } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_histogram_operation_init( void ) { extern GType vips_maplut_get_type( void ); extern GType vips_case_get_type( void ); extern GType vips_percent_get_type( void ); extern GType vips_hist_cum_get_type( void ); extern GType vips_hist_norm_get_type( void ); extern GType vips_hist_equal_get_type( void ); extern GType vips_hist_plot_get_type( void ); extern GType vips_hist_match_get_type( void ); extern GType vips_hist_local_get_type( void ); extern GType vips_hist_ismonotonic_get_type( void ); extern GType vips_hist_entropy_get_type( void ); extern GType vips_stdif_get_type( void ); vips_maplut_get_type(); vips_case_get_type(); vips_percent_get_type(); vips_stdif_get_type(); vips_hist_cum_get_type(); vips_hist_norm_get_type(); vips_hist_equal_get_type(); vips_hist_plot_get_type(); vips_hist_match_get_type(); vips_hist_local_get_type(); vips_hist_ismonotonic_get_type(); vips_hist_entropy_get_type(); } libvips-8.9.1/libvips/histogram/maplut.c000066400000000000000000000451641361153320700203270ustar00rootroot00000000000000/* map though a LUT * * Modified: * 18/6/93 JC * - oops! im_incheck() added for LUT image * - some ANSIfication * 15/7/93 JC * - adapted for partial v2 * - ANSIfied * - now does complex LUTs too * 10/3/94 JC * - more helpful error messages, slight reformatting * 24/8/94 JC * - now allows non-uchar image input * 7/10/94 JC * - uses im_malloc(), IM_NEW() etc. * 13/3/95 JC * - now takes a private copy of LUT, so user can im_close() LUT image * after im_maplut() without fear of coredumps * 23/6/95 JC * - lut may now have many bands if image has just one band * 3/3/01 JC * - small speed ups * 30/6/04 * - heh, 1 band image + 3 band lut + >8bit output has been broken for 9 * years :-) * 7/11/07 * - new eval start/end system * 25/3/10 * - gtkdoc * - small cleanups * 5/7/13 * - convert to a class * 2/10/13 * - add --band arg, replacing im_tone_map() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsMaplut { VipsOperation parent_instance; VipsImage *in; VipsImage *out; VipsImage *lut; int band; int fmt; /* LUT image BandFmt */ int nb; /* Number of bands in lut */ int es; /* VIPS_IMAGE_SIZEOF_ELEMENT() for lut image */ int sz; /* Number of elements in minor dimension */ int clp; /* Value we clip against */ VipsPel **table; /* Lut converted to 2d array */ int overflow; /* Number of overflows for non-uchar lut */ } VipsMaplut; typedef VipsOperationClass VipsMaplutClass; G_DEFINE_TYPE( VipsMaplut, vips_maplut, VIPS_TYPE_OPERATION ); static void vips_maplut_preeval( VipsImage *image, VipsProgress *progress, VipsMaplut *maplut ) { maplut->overflow = 0; } static void vips_maplut_posteval( VipsImage *image, VipsProgress *progress, VipsMaplut *maplut ) { if( maplut->overflow ) g_warning( _( "%d overflows detected" ), maplut->overflow ); } /* Our sequence value: the region this sequence is using, and local stats. */ typedef struct { VipsRegion *ir; /* Input region */ int overflow; /* Number of overflows */ } VipsMaplutSequence; /* Our start function. */ static void * vips_maplut_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsMaplutSequence *seq; if( !(seq = VIPS_NEW( out, VipsMaplutSequence )) ) return( NULL ); /* Init! */ seq->ir = NULL; seq->overflow = 0; if( !(seq->ir = vips_region_new( in )) ) return( NULL ); return( seq ); } /* Map through n non-complex luts. */ #define loop( OUT ) { \ int b = maplut->nb; \ \ for( y = to; y < bo; y++ ) { \ for( z = 0; z < b; z++ ) { \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ OUT *tlut = (OUT *) maplut->table[z]; \ \ for( x = z; x < ne; x += b ) \ q[x] = tlut[p[x]]; \ } \ } \ } /* Map through n complex luts. */ #define loopc( OUT ) { \ int b = in->Bands; \ \ for( y = to; y < bo; y++ ) { \ for( z = 0; z < b; z++ ) { \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ) + z; \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ) + z * 2; \ OUT *tlut = (OUT *) maplut->table[z]; \ \ for( x = 0; x < ne; x += b ) { \ int n = p[x] * 2; \ \ q[0] = tlut[n]; \ q[1] = tlut[n + 1]; \ q += b * 2; \ } \ } \ } \ } #define loopg( IN, OUT ) { \ int b = maplut->nb; \ \ for( y = to; y < bo; y++ ) { \ for( z = 0; z < b; z++ ) { \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ); \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ OUT *tlut = (OUT *) maplut->table[z]; \ \ for( x = z; x < ne; x += b ) { \ int index = p[x]; \ \ if( index > maplut->clp ) { \ index = maplut->clp; \ seq->overflow++; \ } \ \ q[x] = tlut[index]; \ } \ } \ } \ } #define loopcg( IN, OUT ) { \ int b = in->Bands; \ \ for( y = to; y < bo; y++ ) { \ for( z = 0; z < b; z++ ) { \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ) + z; \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ) + z * 2; \ OUT *tlut = (OUT *) maplut->table[z]; \ \ for( x = 0; x < ne; x += b ) { \ int index = p[x]; \ \ if( index > maplut->clp ) { \ index = maplut->clp; \ seq->overflow++; \ } \ \ q[0] = tlut[index * 2]; \ q[1] = tlut[index * 2 + 1]; \ \ q += b * 2; \ } \ } \ } \ } /* Map image through one non-complex lut. */ #define loop1( OUT ) { \ OUT *tlut = (OUT *) maplut->table[0]; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); \ \ for( x = 0; x < ne; x++ ) \ q[x] = tlut[p[x]]; \ } \ } /* Map image through one complex lut. */ #define loop1c( OUT ) { \ OUT *tlut = (OUT *) maplut->table[0]; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); \ \ for( x = 0; x < ne; x++ ) { \ int n = p[x] * 2; \ \ q[0] = tlut[n]; \ q[1] = tlut[n + 1]; \ q += 2; \ } \ } \ } /* As above, but the input image may be any unsigned integer type. We have to * index the lut carefully, and record the number of overflows we detect. */ #define loop1g( IN, OUT ) { \ OUT *tlut = (OUT *) maplut->table[0]; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ); \ \ for( x = 0; x < ne; x++ ) { \ int index = p[x]; \ \ if( index > maplut->clp ) { \ index = maplut->clp; \ seq->overflow++; \ } \ \ q[x] = tlut[index]; \ } \ } \ } #define loop1cg( IN, OUT ) { \ OUT *tlut = (OUT *) maplut->table[0]; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ); \ \ for( x = 0; x < ne; x++ ) { \ int index = p[x]; \ \ if( index > maplut->clp ) { \ index = maplut->clp; \ seq->overflow++; \ } \ \ q[0] = tlut[index * 2]; \ q[1] = tlut[index * 2 + 1]; \ q += 2; \ } \ } \ } /* Map 1-band image through a many-band non-complex lut. */ #define loop1m( OUT ) { \ OUT **tlut = (OUT **) maplut->table; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); \ \ for( i = 0, x = 0; x < np; x++ ) { \ int n = p[x]; \ \ for( z = 0; z < maplut->nb; z++, i++ ) \ q[i] = tlut[z][n]; \ } \ } \ } /* Map 1-band image through many-band complex lut. */ #define loop1cm( OUT ) { \ OUT **tlut = (OUT **) maplut->table; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); \ \ for( x = 0; x < np; x++ ) { \ int n = p[x] * 2; \ \ for( z = 0; z < maplut->nb; z++ ) { \ q[0] = tlut[z][n]; \ q[1] = tlut[z][n+1]; \ q += 2; \ } \ } \ } \ } /* Map 1-band uint or ushort image through a many-band non-complex LUT. */ #define loop1gm( IN, OUT ) { \ OUT **tlut = (OUT **) maplut->table; \ \ for( y = to; y < bo; y++ ) { \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ); \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ \ for( i = 0, x = 0; x < np; x++ ) { \ int n = p[x]; \ \ if( n > maplut->clp ) { \ n = maplut->clp; \ seq->overflow++; \ } \ \ for( z = 0; z < maplut->nb; z++, i++ ) \ q[i] = tlut[z][n]; \ } \ } \ } /* Map 1-band uint or ushort image through a many-band complex LUT. */ #define loop1cgm( IN, OUT ) { \ OUT **tlut = (OUT **) maplut->table; \ \ for( y = to; y < bo; y++ ) { \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ); \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ \ for( x = 0; x < np; x++ ) { \ int n = p[x]; \ \ if( n > maplut->clp ) { \ n = maplut->clp; \ seq->overflow++; \ } \ \ for( z = 0; z < maplut->nb; z++ ) { \ q[0] = tlut[z][n * 2]; \ q[1] = tlut[z][n * 2 + 1]; \ q += 2; \ } \ } \ } \ } /* Switch for input types. Has to be uint type! */ #define inner_switch( UCHAR, GEN, OUT ) \ switch( ir->im->BandFmt ) { \ case VIPS_FORMAT_UCHAR: UCHAR( OUT ); break; \ case VIPS_FORMAT_USHORT: GEN( unsigned short, OUT ); break; \ case VIPS_FORMAT_UINT: GEN( unsigned int, OUT ); break; \ default: \ g_assert_not_reached(); \ } /* Switch for LUT types. One function for non-complex images, a * variant for complex ones. Another pair as well, in case the input is not * uchar. */ #define outer_switch( UCHAR_F, UCHAR_FC, GEN_F, GEN_FC ) \ switch( maplut->fmt ) { \ case VIPS_FORMAT_UCHAR: \ inner_switch( UCHAR_F, GEN_F, unsigned char ); break; \ case VIPS_FORMAT_CHAR:\ inner_switch( UCHAR_F, GEN_F, char ); break; \ case VIPS_FORMAT_USHORT: \ inner_switch( UCHAR_F, GEN_F, unsigned short ); break; \ case VIPS_FORMAT_SHORT: \ inner_switch( UCHAR_F, GEN_F, short ); break; \ case VIPS_FORMAT_UINT: \ inner_switch( UCHAR_F, GEN_F, unsigned int ); break; \ case VIPS_FORMAT_INT: \ inner_switch( UCHAR_F, GEN_F, int ); break; \ case VIPS_FORMAT_FLOAT: \ inner_switch( UCHAR_F, GEN_F, float ); break; \ case VIPS_FORMAT_DOUBLE: \ inner_switch( UCHAR_F, GEN_F, double ); break; \ case VIPS_FORMAT_COMPLEX: \ inner_switch( UCHAR_FC, GEN_FC, float ); break; \ case VIPS_FORMAT_DPCOMPLEX: \ inner_switch( UCHAR_FC, GEN_FC, double ); break; \ default: \ g_assert_not_reached(); \ } /* Do a map. */ static int vips_maplut_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsMaplutSequence *seq = (VipsMaplutSequence *) vseq; VipsImage *in = (VipsImage *) a; VipsMaplut *maplut = (VipsMaplut *) b; VipsRegion *ir = seq->ir; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); int np = r->width; /* Pels across region */ int ne = VIPS_REGION_N_ELEMENTS( or ); /* Number of elements */ int x, y, z, i; if( vips_region_prepare( ir, r ) ) return( -1 ); if( maplut->nb == 1 ) /* One band lut. */ outer_switch( loop1, loop1c, loop1g, loop1cg ) else /* Many band lut. */ if( in->Bands == 1 ) /* ... but 1 band input. */ outer_switch( loop1m, loop1cm, loop1gm, loop1cgm ) else outer_switch( loop, loopc, loopg, loopcg ) return( 0 ); } /* Destroy a sequence value. */ static int vips_maplut_stop( void *vseq, void *a, void *b ) { VipsMaplutSequence *seq = (VipsMaplutSequence *) vseq; VipsMaplut *maplut = (VipsMaplut *) b; /* Add to global stats. */ maplut->overflow += seq->overflow; VIPS_UNREF( seq->ir ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define US VIPS_FORMAT_USHORT #define UI VIPS_FORMAT_UINT /* Type mapping: go to uchar / ushort / uint to make an index. */ static int bandfmt_maplut[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, UI, UI, UI, UI, UI, UI }; /* Repack lut into a set of band arrays. If we're just passing one band of the * image through the lut, put the identity function in the other bands. */ #define PACK_TABLE( TYPE ) { \ TYPE *data = (TYPE *) lut->data; \ int x, b; \ \ for( x = 0; x < maplut->sz; x++ ) \ for( b = 0; b < maplut->nb; b++ ) { \ TYPE *q = (TYPE *) maplut->table[b]; \ \ if( maplut->band >= 0 && \ lut->Bands == 1 ) { \ if( b == maplut->band ) \ q[x] = data[x]; \ else \ q[x] = x; \ } \ else \ q[x] = data[x * lut->Bands + b]; \ } \ } #define PACK_TABLEC( TYPE ) { \ TYPE *data = (TYPE *) lut->data; \ int x, b; \ \ for( x = 0; x < maplut->sz; x++ ) \ for( b = 0; b < maplut->nb; b++ ) { \ TYPE *q = (TYPE *) maplut->table[b]; \ \ if( maplut->band >= 0 && \ lut->Bands == 1 ) { \ if( b == maplut->band ) { \ q[2 * x] = data[2 * x]; \ q[2 * x + 1] = data[2 * x + 1]; \ } \ else { \ q[2 * x] = x; \ q[2 * x + 1] = 0; \ } \ } \ else { \ q[2 * x] = data[2 * (x * lut->Bands + b)]; \ q[2 * x + 1] = \ data[2 * (x * lut->Bands + b) + 1]; \ } \ } \ } static int vips_maplut_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsMaplut *maplut = (VipsMaplut *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; VipsImage *lut; int i; g_object_set( object, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_maplut_parent_class )->build( object ) ) return( -1 ); in = maplut->in; lut = maplut->lut; if( vips_check_hist( class->nickname, lut ) || vips_check_uncoded( class->nickname, lut ) ) return( -1 ); /* Cast @in to u8/u16/u32 to make the index image. */ if( vips_cast( in, &t[0], bandfmt_maplut[in->BandFmt], NULL ) ) return( -1 ); in = t[0]; if( vips_check_uncoded( class->nickname, in ) || vips_check_bands_1orn( class->nickname, in, lut ) || vips_image_pio_input( in ) ) return( -1 ); if( vips_image_pipelinev( maplut->out, VIPS_DEMAND_STYLE_THINSTRIP, in, lut, NULL ) ) return( -1 ); maplut->out->BandFmt = lut->BandFmt; /* Output has same number of bands as LUT, unless LUT has 1 band, in * which case output has same number of bands as input. */ if( lut->Bands != 1 ) maplut->out->Bands = lut->Bands; /* The Type comes from the image with many bands. A B_W index image, * for example, needs to become an RGB image when it goes through a * three-band LUT. */ if( lut->Bands != 1 ) maplut->out->Type = lut->Type; g_signal_connect( in, "preeval", G_CALLBACK( vips_maplut_preeval ), maplut ); g_signal_connect( in, "posteval", G_CALLBACK( vips_maplut_posteval ), maplut ); /* Make luts. We unpack the LUT image into a 2D C array to speed * processing. */ if( !(t[1] = vips_image_copy_memory( lut )) ) return( -1 ); lut = t[1]; maplut->fmt = lut->BandFmt; maplut->es = VIPS_IMAGE_SIZEOF_ELEMENT( lut ); maplut->sz = lut->Xsize * lut->Ysize; maplut->clp = maplut->sz - 1; /* If @bands is >= 0, we need to expand the lut to the number of bands * in the input image. */ if( maplut->band >= 0 && lut->Bands == 1 ) maplut->nb = in->Bands; else maplut->nb = lut->Bands; /* Attach tables. */ if( !(maplut->table = VIPS_ARRAY( maplut, maplut->nb, VipsPel * )) ) return( -1 ); for( i = 0; i < maplut->nb; i++ ) if( !(maplut->table[i] = VIPS_ARRAY( maplut, maplut->sz * maplut->es, VipsPel )) ) return( -1 ); /* Scan LUT and fill table. */ switch( lut->BandFmt ) { case VIPS_FORMAT_UCHAR: PACK_TABLE( unsigned char ); break; case VIPS_FORMAT_CHAR: PACK_TABLE( char ); break; case VIPS_FORMAT_USHORT: PACK_TABLE( unsigned short ); break; case VIPS_FORMAT_SHORT: PACK_TABLE( short ); break; case VIPS_FORMAT_UINT: PACK_TABLE( unsigned int ); break; case VIPS_FORMAT_INT: PACK_TABLE( int ); break; case VIPS_FORMAT_FLOAT: PACK_TABLE( float ); break; case VIPS_FORMAT_DOUBLE: PACK_TABLE( double ); break; case VIPS_FORMAT_COMPLEX: PACK_TABLEC( float ); break; case VIPS_FORMAT_DPCOMPLEX: PACK_TABLEC( double ); break; default: g_assert_not_reached(); } if( vips_image_generate( maplut->out, vips_maplut_start, vips_maplut_gen, vips_maplut_stop, in, maplut ) ) return( -1 ); return( 0 ); } static void vips_maplut_class_init( VipsMaplutClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "maplut"; object_class->description = _( "map an image though a lut" ); object_class->build = vips_maplut_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaplut, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMaplut, out ) ); VIPS_ARG_IMAGE( class, "lut", 3, _( "LUT" ), _( "Look-up table image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaplut, lut ) ); VIPS_ARG_INT( class, "band", 4, _( "band" ), _( "apply one-band lut to this band of in" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMaplut, band ), -1, 10000, -1 ); } static void vips_maplut_init( VipsMaplut *maplut ) { maplut->band = -1; } /** * vips_maplut: (method) * @in: input image * @out: (out): output image * @lut: look-up table * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @band: apply one-band @lut to this band of @in * * Map an image through another image acting as a LUT (Look Up Table). * The lut may have any type and the output image will be that type. * * The input image will be cast to one of the unsigned integer types, that is, * VIPS_FORMAT_UCHAR, VIPS_FORMAT_USHORT or VIPS_FORMAT_UINT. * * If @lut is too small for the input type (for example, if @in is * VIPS_FORMAT_UCHAR but @lut only has 100 elements), the lut is padded out * by copying the last element. Overflows are reported at the end of * computation. * If @lut is too large, extra values are ignored. * * If @lut has one band and @band is -1 (the default), then all bands of @in * pass through @lut. If @band is >= 0, then just that band of @in passes * through @lut and other bands are just copied. * * If @lut * has same number of bands as @in, then each band is mapped * separately. If @in has one band, then @lut may have many bands and * the output will have the same number of bands as @lut. * * See also: vips_hist_find(), vips_identity(). * * Returns: 0 on success, -1 on error */ int vips_maplut( VipsImage *in, VipsImage **out, VipsImage *lut, ... ) { va_list ap; int result; va_start( ap, lut ); result = vips_call_split( "maplut", ap, in, out, lut ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/percent.c000066400000000000000000000103411361153320700204520ustar00rootroot00000000000000/* find percent of pixels * * Copyright: 1990, N. Dessipris * * Author: N. Dessipris * Written on: 02/08/1990 * Modified on : 29/4/93 K.Martinez for Sys5 * 20/2/95 JC * - now returns result through parameter * - ANSIfied a little * 19/1/07 * - redone with the vips hist operators * 25/3/10 * - gtkdoc * 20/9/13 * - wrap as a class * - more accurate */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include typedef struct _VipsPercent { VipsOperation parent_instance; VipsImage *in; double percent; int threshold; } VipsPercent; typedef VipsOperationClass VipsPercentClass; G_DEFINE_TYPE( VipsPercent, vips_percent, VIPS_TYPE_OPERATION ); static int vips_percent_build( VipsObject *object ) { VipsPercent *percent = (VipsPercent *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); double threshold; if( VIPS_OBJECT_CLASS( vips_percent_parent_class )-> build( object ) ) return( -1 ); if( vips_hist_find( percent->in, &t[0], NULL ) || vips_hist_cum( t[0], &t[1], NULL ) || vips_hist_norm( t[1], &t[2], NULL ) || vips_more_const1( t[2], &t[3], (percent->percent / 100.0) * t[2]->Xsize, NULL ) || vips_profile( t[3], &t[5], &t[6], NULL ) || vips_avg( t[6], &threshold, NULL ) ) return( -1 ); g_object_set( object, "threshold", (int) threshold, NULL ); return( 0 ); } static void vips_percent_class_init( VipsPercentClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "percent"; object_class->description = _( "find threshold for percent of pixels" ); object_class->build = vips_percent_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPercent, in ) ); VIPS_ARG_DOUBLE( class, "percent", 2, _( "Percent" ), _( "Percent of pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPercent, percent ), 0, 100, 50 ); VIPS_ARG_INT( class, "threshold", 3, _( "Threshold" ), _( "Threshold above which lie percent of pixels" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsPercent, threshold ), 0, 65535, 0 ); } static void vips_percent_init( VipsPercent *percent ) { } /** * vips_percent: (method) * @in: input image * @percent: threshold percentage * @threshold: (out): output threshold value * @...: %NULL-terminated list of optional named arguments * * vips_percent() returns (through the @threshold parameter) the threshold * above which there are @percent values of @in. If for example percent=10, the * number of pels of the input image with values greater than @threshold * will correspond to 10% of all pels of the image. * * The function works for uchar and ushort images only. It can be used * to threshold the scaled result of a filtering operation. * * See also: vips_hist_find(), vips_profile(). * * Returns: 0 on success, -1 on error */ int vips_percent( VipsImage *in, double percent, int *threshold, ... ) { va_list ap; int result; va_start( ap, threshold ); result = vips_call_split( "percent", ap, in, percent, threshold ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/histogram/phistogram.h000066400000000000000000000050231361153320700211750ustar00rootroot00000000000000/* base class for all histogram operations * * many hists in, one hist out, a buffer processing function in the class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PHISTOGRAM_H #define VIPS_PHISTOGRAM_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_HISTOGRAM (vips_histogram_get_type()) #define VIPS_HISTOGRAM( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_HISTOGRAM, VipsHistogram )) #define VIPS_HISTOGRAM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_HISTOGRAM, VipsHistogramClass)) #define VIPS_IS_HISTOGRAM( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_HISTOGRAM )) #define VIPS_IS_HISTOGRAM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_HISTOGRAM )) #define VIPS_HISTOGRAM_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_HISTOGRAM, VipsHistogramClass )) typedef struct _VipsHistogram VipsHistogram; typedef void (*VipsHistogramProcessFn)( VipsHistogram *histogram, VipsPel *out, VipsPel **in, int width ); struct _VipsHistogram { VipsOperation parent_instance; VipsImage *out; /* NULL-terminated array of input images. */ VipsImage **in; int n; /* ... and transformed ready for processing. */ VipsImage **ready; }; typedef struct _VipsHistogramClass { VipsOperationClass parent_class; /* For each input format, what output format. */ const VipsBandFormat *format_table; /* If not VIPS_FORMAT_NOTSET, upcast all ins to this. */ VipsBandFormat input_format; VipsHistogramProcessFn process; } VipsHistogramClass; GType vips_histogram_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PHISTOGRAM_H*/ libvips-8.9.1/libvips/histogram/stdif.c000066400000000000000000000234651361153320700201360ustar00rootroot00000000000000/* statistical difference * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : * 6/8/93 JC * - now works for odd window sizes * - ANSIfication * 25/5/95 JC * - new IM_ARRAY() macro * 25/1/96 JC * - im_lhisteq() adapted to make new im_stdif() * - now partial, plus rolling window * - 5x faster, amazingly * - works * 7/4/04 * - now uses im_embed() with edge stretching on the input, not * the output * 25/3/10 * - gtkdoc * - small cleanups * 10/8/13 * - wrapped as a class using hist_local.c * - many bands */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include typedef struct _VipsStdif { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int width; int height; double a; double m0; double b; double s0; } VipsStdif; typedef VipsOperationClass VipsStdifClass; G_DEFINE_TYPE( VipsStdif, vips_stdif, VIPS_TYPE_OPERATION ); /* How ugly and stupid. */ #define MAX_BANDS (100) static int vips_stdif_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; VipsRegion *ir = (VipsRegion *) vseq; VipsImage *in = (VipsImage *) a; VipsStdif *stdif = (VipsStdif *) b; int bands = in->Bands; int npel = stdif->width * stdif->width; VipsRect irect; int y; int lsk; int centre; /* Offset to move to centre of window */ /* What part of ir do we need? */ irect.left = or->valid.left; irect.top = or->valid.top; irect.width = or->valid.width + stdif->width; irect.height = or->valid.height + stdif->height; if( vips_region_prepare( ir, &irect ) ) return( -1 ); lsk = VIPS_REGION_LSKIP( ir ); centre = lsk * (stdif->height / 2) + stdif->width / 2; for( y = 0; y < r->height; y++ ) { /* Get input and output pointers for this line. */ VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *q = VIPS_REGION_ADDR( or, r->left, r->top + y ); double f1 = stdif->a * stdif->m0; double f2 = 1.0 - stdif->a; double f3 = stdif->b * stdif->s0; VipsPel *p1; int x, i, j, b; /* We will get int overflow for windows larger than about 256 * x 256, sadly. */ unsigned int sum[MAX_BANDS]; unsigned int sum2[MAX_BANDS]; /* Find sum, sum of squares for the start of this line. */ for( b = 0; b < bands; b++ ) { memset( sum, 0, bands * sizeof( unsigned int ) ); memset( sum2, 0, bands * sizeof( unsigned int ) ); } p1 = p; for( j = 0; j < stdif->height; j++ ) { i = 0; for( x = 0; x < stdif->width; x++ ) { for( b = 0; b < bands; b++ ) { int t = p1[i++]; sum[b] += t; sum2[b] += t * t; } } p1 += lsk; } /* Loop for output pels. */ for( x = 0; x < r->width; x++ ) { for( b = 0; b < bands; b++ ) { /* Find stats. */ double mean = (double) sum[b] / npel; double var = (double) sum2[b] / npel - (mean * mean); double sig = sqrt( var ); /* Transform. */ double res = f1 + f2 * mean + ((double) p[centre] - mean) * (f3 / (stdif->s0 + stdif->b * sig)); /* And write. */ if( res < 0.0 ) *q++ = 0; else if( res >= 256.0 ) *q++ = 255; else *q++ = res + 0.5; /* Adapt sums - remove the pels from the left * hand column, add in pels for a new * right-hand column. */ p1 = p; for( j = 0; j < stdif->height; j++ ) { int t1 = p1[0]; int t2 = p1[bands * stdif->width]; sum[b] -= t1; sum2[b] -= t1 * t1; sum[b] += t2; sum2[b] += t2 * t2; p1 += lsk; } p += 1; } } } return( 0 ); } static int vips_stdif_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStdif *stdif = (VipsStdif *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_stdif_parent_class )->build( object ) ) return( -1 ); in = stdif->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_check_format( class->nickname, in, VIPS_FORMAT_UCHAR ) ) return( -1 ); if( stdif->width > in->Xsize || stdif->height > in->Ysize ) { vips_error( class->nickname, "%s", _( "window too large" ) ); return( -1 ); } if( in->Bands > MAX_BANDS ) { vips_error( class->nickname, "%s", _( "too many bands" ) ); return( -1 ); } /* Expand the input. */ if( vips_embed( in, &t[1], stdif->width / 2, stdif->height / 2, in->Xsize + stdif->width - 1, in->Ysize + stdif->height - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[1]; g_object_set( object, "out", vips_image_new(), NULL ); /* Set demand hints. FATSTRIP is good for us, as THINSTRIP will cause * too many recalculations on overlaps. */ if( vips_image_pipelinev( stdif->out, VIPS_DEMAND_STYLE_FATSTRIP, in, NULL ) ) return( -1 ); stdif->out->Xsize -= stdif->width - 1; stdif->out->Ysize -= stdif->height - 1; if( vips_image_generate( stdif->out, vips_start_one, vips_stdif_generate, vips_stop_one, in, stdif ) ) return( -1 ); stdif->out->Xoffset = 0; stdif->out->Yoffset = 0; vips_reorder_margin_hint( stdif->out, stdif->width * stdif->height ); return( 0 ); } static void vips_stdif_class_init( VipsStdifClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "stdif"; object_class->description = _( "statistical difference" ); object_class->build = vips_stdif_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsStdif, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsStdif, out ) ); /* Windows larger than 256x256 will overflow sum2, see above. */ VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Window width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsStdif, width ), 1, 256, 11 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Window height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsStdif, height ), 1, 256, 11 ); VIPS_ARG_DOUBLE( class, "a", 2, _( "Mean weight" ), _( "Weight of new mean" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsStdif, a ), 0.0, 1.0, 0.5 ); VIPS_ARG_DOUBLE( class, "m0", 2, _( "Mean" ), _( "New mean" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsStdif, m0 ), -INFINITY, INFINITY, 128 ); VIPS_ARG_DOUBLE( class, "b", 2, _( "Deviation weight" ), _( "Weight of new deviation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsStdif, b ), 0.0, 2.0, 0.5 ); VIPS_ARG_DOUBLE( class, "s0", 2, _( "Deviation" ), _( "New deviation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsStdif, s0 ), -INFINITY, INFINITY, 50 ); } static void vips_stdif_init( VipsStdif *stdif ) { stdif->width = 11; stdif->height = 11; stdif->a = 0.5; stdif->m0 = 128.0; stdif->b = 0.5; stdif->s0 = 50.0; } /** * vips_stdif: (method) * @in: input image * @out: (out): output image * @width: width of region * @height: height of region * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @a: weight of new mean * * @m0: target mean * * @b: weight of new deviation * * @s0: target deviation * * vips_stdif() preforms statistical differencing according to the formula * given in page 45 of the book "An Introduction to Digital Image * Processing" by Wayne Niblack. This transformation emphasises the way in * which a pel differs statistically from its neighbours. It is useful for * enhancing low-contrast images with lots of detail, such as X-ray plates. * * At point (i,j) the output is given by the equation: * * |[ * vout(i,j) = @a * @m0 + (1 - @a) * meanv + * (vin(i,j) - meanv) * (@b * @s0) / (@s0 + @b * stdv) * ]| * * Values @a, @m0, @b and @s0 are entered, while meanv and stdv are the values * calculated over a moving window of size @width, @height centred on pixel * (i,j). @m0 is the new mean, @a is the weight given to it. @s0 is the new * standard deviation, @b is the weight given to it. * * Try: * * |[ * vips stdif $VIPSHOME/pics/huysum.v fred.v 0.5 128 0.5 50 11 11 * ]| * * The operation works on one-band uchar images only, and writes a one-band * uchar image as its result. The output image has the same size as the * input. * * See also: vips_hist_local(). * * Returns: 0 on success, -1 on error */ int vips_stdif( VipsImage *in, VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "stdif", ap, in, out, width, height ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/include/000077500000000000000000000000001361153320700162755ustar00rootroot00000000000000libvips-8.9.1/libvips/include/Makefile.am000066400000000000000000000000211361153320700203220ustar00rootroot00000000000000 SUBDIRS = vips libvips-8.9.1/libvips/include/vips/000077500000000000000000000000001361153320700172565ustar00rootroot00000000000000libvips-8.9.1/libvips/include/vips/Makefile.am000066400000000000000000000035041361153320700213140ustar00rootroot00000000000000pkginclude_HEADERS = \ connection.h \ sbuf.h \ basic.h \ type.h \ gate.h \ almostdeprecated.h \ deprecated.h \ arithmetic.h \ buf.h \ dbuf.h \ colour.h \ conversion.h \ convolution.h \ debug.h \ dispatch.h \ enumtypes.h \ error.h \ operation.h \ format.h \ foreign.h \ draw.h \ generate.h \ header.h \ histogram.h \ freqfilt.h \ image.h \ interpolate.h \ intl.h \ mask.h \ memory.h \ morphology.h \ mosaicing.h \ create.h \ video.h \ cimg_funcs.h \ object.h \ private.h \ rect.h \ region.h \ resample.h \ semaphore.h \ soname.h \ threadpool.h \ thread.h \ transform.h \ util.h \ version.h \ vector.h \ vips7compat.h \ vips.h vipsc++.h: vips --cpph all > vipsc++.h EXTRA_DIST = version.h.in internal.h enumtemplate # the headers we scan for enums etc. # keep in sync with ${top_srcdir}/libvips/iofuncs/Makefile.am # we need absolute filenames here since this list appears in the src dir as # well vips_scan_headers = \ ${top_srcdir}/libvips/include/vips/resample.h \ ${top_srcdir}/libvips/include/vips/memory.h \ ${top_srcdir}/libvips/include/vips/create.h \ ${top_srcdir}/libvips/include/vips/foreign.h \ ${top_srcdir}/libvips/include/vips/arithmetic.h \ ${top_srcdir}/libvips/include/vips/conversion.h \ ${top_srcdir}/libvips/include/vips/util.h \ ${top_srcdir}/libvips/include/vips/image.h \ ${top_srcdir}/libvips/include/vips/colour.h \ ${top_srcdir}/libvips/include/vips/operation.h \ ${top_srcdir}/libvips/include/vips/convolution.h \ ${top_srcdir}/libvips/include/vips/morphology.h \ ${top_srcdir}/libvips/include/vips/draw.h \ ${top_srcdir}/libvips/include/vips/basic.h \ ${top_srcdir}/libvips/include/vips/object.h \ ${top_srcdir}/libvips/include/vips/region.h enumtypes.h: $(vips_scan_headers) Makefile.am glib-mkenums --template enumtemplate $(vips_scan_headers) > enumtypes.h libvips-8.9.1/libvips/include/vips/almostdeprecated.h000066400000000000000000000236741361153320700227630ustar00rootroot00000000000000/* Old and broken stuff that we still enable by default, but don't document * and certainly don't recommend. * * 30/6/09 * - from vips.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_ALMOSTDEPRECATED_H #define IM_ALMOSTDEPRECATED_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Was public, now deprecated. */ typedef enum { IM_BBITS_BYTE = 8, IM_BBITS_SHORT = 16, IM_BBITS_INT = 32, IM_BBITS_FLOAT = 32, IM_BBITS_COMPLEX = 64, IM_BBITS_DOUBLE = 64, IM_BBITS_DPCOMPLEX = 128 } VipsBBits; /* Used to define a region of interest for im_extract() etc. Too boring to be * public API, see im_extract_area() etc. */ typedef struct { int xstart; int ystart; int xsize; int ysize; int chsel; /* 1 2 3 or 0, for r g b or all respectively *(channel select) */ } IMAGE_BOX; int im_extract( IMAGE *, IMAGE *, IMAGE_BOX * ); DOUBLEMASK *im_measure( IMAGE *im, IMAGE_BOX *box, int h, int v, int *sel, int nsel, const char *name ); gboolean im_isuint( IMAGE *im ); gboolean im_isint( IMAGE *im ); gboolean im_isfloat( IMAGE *im ); gboolean im_isscalar( IMAGE *im ); gboolean im_iscomplex( IMAGE *im ); int im_c2ps( IMAGE *in, IMAGE *out ); int im_clip( IMAGE *in, IMAGE *out ); #define MASK_IDEAL_HIGHPASS IM_MASK_IDEAL_HIGHPASS #define MASK_IDEAL_LOWPASS IM_MASK_IDEAL_LOWPASS #define MASK_BUTTERWORTH_HIGHPASS IM_MASK_BUTTERWORTH_HIGHPASS #define MASK_BUTTERWORTH_LOWPASS IM_MASK_BUTTERWORTH_LOWPASS #define MASK_GAUSS_HIGHPASS IM_MASK_GAUSS_HIGHPASS #define MASK_GAUSS_LOWPASS IM_MASK_GAUSS_LOWPASS #define MASK_IDEAL_RINGPASS IM_MASK_IDEAL_RINGPASS #define MASK_IDEAL_RINGREJECT IM_MASK_IDEAL_RINGREJECT #define MASK_BUTTERWORTH_RINGPASS IM_MASK_BUTTERWORTH_RINGPASS #define MASK_BUTTERWORTH_RINGREJECT IM_MASK_BUTTERWORTH_RINGREJECT #define MASK_GAUSS_RINGPASS IM_MASK_GAUSS_RINGPASS #define MASK_GAUSS_RINGREJECT IM_MASK_GAUSS_RINGREJECT #define MASK_IDEAL_BANDPASS IM_MASK_IDEAL_BANDPASS #define MASK_IDEAL_BANDREJECT IM_MASK_IDEAL_BANDREJECT #define MASK_BUTTERWORTH_BANDPASS IM_MASK_BUTTERWORTH_BANDPASS #define MASK_BUTTERWORTH_BANDREJECT IM_MASK_BUTTERWORTH_BANDREJECT #define MASK_GAUSS_BANDPASS IM_MASK_GAUSS_BANDPASS #define MASK_GAUSS_BANDREJECT IM_MASK_GAUSS_BANDREJECT #define MASK_FRACTAL_FLT IM_MASK_FRACTAL_FLT #define MaskType ImMaskType /* Copy and swap types. */ typedef enum { IM_ARCH_NATIVE, IM_ARCH_BYTE_SWAPPED, IM_ARCH_LSB_FIRST, IM_ARCH_MSB_FIRST } im_arch_type; gboolean im_isnative( im_arch_type arch ); int im_copy_from( IMAGE *in, IMAGE *out, im_arch_type architecture ); /* Backwards compatibility macros. */ #define im_clear_error_string() im_error_clear() #define im_errorstring() im_error_buffer() /* Deprecated API. */ void im_errormsg( const char *fmt, ... ) __attribute__((format(printf, 1, 2))); void im_verrormsg( const char *fmt, va_list ap ); void im_errormsg_system( int err, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); void im_diagnostics( const char *fmt, ... ) __attribute__((format(printf, 1, 2))); void im_warning( const char *fmt, ... ) __attribute__((format(printf, 1, 2))); int im_iterate( VipsImage *im, VipsStartFn start, im_generate_fn generate, VipsStopFn stop, void *a, void *b ); /* Async rendering. */ int im_render_priority( VipsImage *in, VipsImage *out, VipsImage *mask, int width, int height, int max, int priority, void (*notify)( VipsImage *, VipsRect *, void * ), void *client ); int im_cache( VipsImage *in, VipsImage *out, int width, int height, int max ); /* Deprecated operations. */ int im_cmulnorm( IMAGE *in1, IMAGE *in2, IMAGE *out ); int im_fav4( IMAGE **, IMAGE * ); int im_gadd( double, IMAGE *, double, IMAGE *, double, IMAGE *); int im_litecor( IMAGE *, IMAGE *, IMAGE *, int, double ); int im_render_fade( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, int fps, int steps, int priority, void (*notify)( IMAGE *, VipsRect *, void * ), void *client ); int im_render( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, void (*notify)( IMAGE *, VipsRect *, void * ), void *client ); int im_cooc_matrix( IMAGE *im, IMAGE *m, int xp, int yp, int xs, int ys, int dx, int dy, int flag ); int im_cooc_asm( IMAGE *m, double *asmoment ); int im_cooc_contrast( IMAGE *m, double *contrast ); int im_cooc_correlation( IMAGE *m, double *correlation ); int im_cooc_entropy( IMAGE *m, double *entropy ); int im_glds_matrix( IMAGE *im, IMAGE *m, int xpos, int ypos, int xsize, int ysize, int dx, int dy ); int im_glds_asm( IMAGE *m, double *asmoment ); int im_glds_contrast( IMAGE *m, double *contrast ); int im_glds_entropy( IMAGE *m, double *entropy ); int im_glds_mean( IMAGE *m, double *mean ); int im_dif_std(IMAGE *im, int xpos, int ypos, int xsize, int ysize, int dx, int dy, double *pmean, double *pstd); int im_simcontr( IMAGE *out, int xsize, int ysize ); int im_spatres( IMAGE *in, IMAGE *out, int step ); int im_stretch3( IMAGE *in, IMAGE *out, double dx, double dy ); /* Renamed operations. */ /* arithmetic */ int im_remainderconst_vec( IMAGE *in, IMAGE *out, int n, double *c ); /* boolean */ int im_andconst( IMAGE *, IMAGE *, double ); int im_and_vec( IMAGE *, IMAGE *, int, double * ); int im_orconst( IMAGE *, IMAGE *, double ); int im_or_vec( IMAGE *, IMAGE *, int, double * ); int im_eorconst( IMAGE *, IMAGE *, double ); int im_eor_vec( IMAGE *, IMAGE *, int, double * ); /* mosaicing */ int im_affine( IMAGE *in, IMAGE *out, double a, double b, double c, double d, double dx, double dy, int ox, int oy, int ow, int oh ); int im_similarity( IMAGE *in, IMAGE *out, double a, double b, double dx, double dy ); int im_similarity_area( IMAGE *in, IMAGE *out, double a, double b, double dx, double dy, int ox, int oy, int ow, int oh ); /* colour */ int im_icc_export( IMAGE *in, IMAGE *out, const char *output_profile_filename, int intent ); /* conversion */ int im_clip2dcm( IMAGE *in, IMAGE *out ); int im_clip2cm( IMAGE *in, IMAGE *out ); int im_clip2us( IMAGE *in, IMAGE *out ); int im_clip2ui( IMAGE *in, IMAGE *out ); int im_clip2s( IMAGE *in, IMAGE *out ); int im_clip2i( IMAGE *in, IMAGE *out ); int im_clip2d( IMAGE *in, IMAGE *out ); int im_clip2f( IMAGE *in, IMAGE *out ); int im_clip2c( IMAGE *in, IMAGE *out ); int im_slice( IMAGE *in, IMAGE *out, double, double ); int im_thresh( IMAGE *in, IMAGE *out, double ); int im_print( const char *message ); int im_convsub( IMAGE *in, IMAGE *out, INTMASK *mask, int xskip, int yskip ); int im_bernd( const char *tiffname, int x, int y, int w, int h ); int im_resize_linear( IMAGE *, IMAGE *, int, int ); int im_convf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_convsepf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_conv_raw( IMAGE *in, IMAGE *out, INTMASK *mask ); int im_convf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_convsep_raw( IMAGE *in, IMAGE *out, INTMASK *mask ); int im_convsepf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_fastcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); int im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); int im_gradcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); int im_contrast_surface_raw( IMAGE *in, IMAGE *out, int half_win_size, int spacing ); int im_stdif_raw( IMAGE *in, IMAGE *out, double a, double m0, double b, double s0, int xwin, int ywin ); int im_lhisteq_raw( IMAGE *in, IMAGE *out, int xwin, int ywin ); int im_erode_raw( IMAGE *in, IMAGE *out, INTMASK *m ); int im_dilate_raw( IMAGE *in, IMAGE *out, INTMASK *m ); int im_rank_raw( IMAGE *in, IMAGE *out, int xsize, int ysize, int order ); /* inplace */ int im_circle( IMAGE *im, int cx, int cy, int radius, int intensity ); int im_line( IMAGE *, int, int, int, int, int ); int im_segment( IMAGE *test, IMAGE *mask, int *segments ); int im_paintrect( IMAGE *im, VipsRect *r, PEL *ink ); int im_insertplace( IMAGE *main, IMAGE *sub, int x, int y ); int im_flood_copy( IMAGE *in, IMAGE *out, int x, int y, PEL *ink ); int im_flood_blob_copy( IMAGE *in, IMAGE *out, int x, int y, PEL *ink ); int im_flood_other_copy( IMAGE *test, IMAGE *mark, IMAGE *out, int x, int y, int serial ); int im_flood( IMAGE *im, int x, int y, PEL *ink, VipsRect *dout ); int im_flood_blob( IMAGE *im, int x, int y, PEL *ink, VipsRect *dout ); int im_flood_other( IMAGE *test, IMAGE *mark, int x, int y, int serial, VipsRect *dout ); int im_fastline( IMAGE *im, int x1, int y1, int x2, int y2, PEL *pel ); int im_fastlineuser( IMAGE *im, int x1, int y1, int x2, int y2, VipsPlotFn fn, void *client1, void *client2, void *client3 ); int im_plotmask( IMAGE *im, int ix, int iy, PEL *ink, PEL *mask, VipsRect *r ); int im_readpoint( IMAGE *im, int x, int y, PEL *pel ); int im_plotpoint( IMAGE *im, int x, int y, PEL *pel ); int im_smudge( IMAGE *image, int ix, int iy, VipsRect *r ); int im_smear( IMAGE *im, int ix, int iy, VipsRect *r ); void vips_warn( const char *domain, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); void vips_vwarn( const char *domain, const char *fmt, va_list ap ); void vips_info_set( gboolean info ); void vips_info( const char *domain, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); void vips_vinfo( const char *domain, const char *fmt, va_list ap ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_ALMOSTDEPRECATED_H*/ libvips-8.9.1/libvips/include/vips/arithmetic.h000066400000000000000000000351171361153320700215670ustar00rootroot00000000000000/* Headers for arithmetic * * 30/6/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_ARITHMETIC_H #define IM_ARITHMETIC_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /** * VipsOperationMath: * @VIPS_OPERATION_MATH_SIN: sin(), angles in degrees * @VIPS_OPERATION_MATH_COS: cos(), angles in degrees * @VIPS_OPERATION_MATH_TAN: tan(), angles in degrees * @VIPS_OPERATION_MATH_ASIN: asin(), angles in degrees * @VIPS_OPERATION_MATH_ACOS: acos(), angles in degrees * @VIPS_OPERATION_MATH_ATAN: atan(), angles in degrees * @VIPS_OPERATION_MATH_LOG: log base e * @VIPS_OPERATION_MATH_LOG10: log base 10 * @VIPS_OPERATION_MATH_EXP: e to the something * @VIPS_OPERATION_MATH_EXP10: 10 to the something * * See also: vips_math(). */ typedef enum { VIPS_OPERATION_MATH_SIN, VIPS_OPERATION_MATH_COS, VIPS_OPERATION_MATH_TAN, VIPS_OPERATION_MATH_ASIN, VIPS_OPERATION_MATH_ACOS, VIPS_OPERATION_MATH_ATAN, VIPS_OPERATION_MATH_LOG, VIPS_OPERATION_MATH_LOG10, VIPS_OPERATION_MATH_EXP, VIPS_OPERATION_MATH_EXP10, VIPS_OPERATION_MATH_LAST } VipsOperationMath; /** * VipsOperationMath2: * @VIPS_OPERATION_MATH2_POW: pow( left, right ) * @VIPS_OPERATION_MATH2_WOP: pow( right, left ) * * See also: vips_math(). */ typedef enum { VIPS_OPERATION_MATH2_POW, VIPS_OPERATION_MATH2_WOP, VIPS_OPERATION_MATH2_LAST } VipsOperationMath2; /** * VipsOperationRound: * @VIPS_OPERATION_ROUND_RINT: round to nearest * @VIPS_OPERATION_ROUND_FLOOR: largest integral value not greater than * @VIPS_OPERATION_ROUND_CEIL: the smallest integral value not less than * * See also: vips_round(). */ typedef enum { VIPS_OPERATION_ROUND_RINT, VIPS_OPERATION_ROUND_CEIL, VIPS_OPERATION_ROUND_FLOOR, VIPS_OPERATION_ROUND_LAST } VipsOperationRound; /** * VipsOperationRelational: * @VIPS_OPERATION_RELATIONAL_EQUAL: == * @VIPS_OPERATION_RELATIONAL_NOTEQ: != * @VIPS_OPERATION_RELATIONAL_LESS: < * @VIPS_OPERATION_RELATIONAL_LESSEQ: <= * @VIPS_OPERATION_RELATIONAL_MORE: > * @VIPS_OPERATION_RELATIONAL_MOREEQ: >= * * See also: vips_relational(). */ typedef enum { VIPS_OPERATION_RELATIONAL_EQUAL, VIPS_OPERATION_RELATIONAL_NOTEQ, VIPS_OPERATION_RELATIONAL_LESS, VIPS_OPERATION_RELATIONAL_LESSEQ, VIPS_OPERATION_RELATIONAL_MORE, VIPS_OPERATION_RELATIONAL_MOREEQ, VIPS_OPERATION_RELATIONAL_LAST } VipsOperationRelational; /** * VipsOperationBoolean: * @VIPS_OPERATION_BOOLEAN_AND: & * @VIPS_OPERATION_BOOLEAN_OR: | * @VIPS_OPERATION_BOOLEAN_EOR: ^ * @VIPS_OPERATION_BOOLEAN_LSHIFT: >> * @VIPS_OPERATION_BOOLEAN_RSHIFT: << * * See also: vips_boolean(). */ typedef enum { VIPS_OPERATION_BOOLEAN_AND, VIPS_OPERATION_BOOLEAN_OR, VIPS_OPERATION_BOOLEAN_EOR, VIPS_OPERATION_BOOLEAN_LSHIFT, VIPS_OPERATION_BOOLEAN_RSHIFT, VIPS_OPERATION_BOOLEAN_LAST } VipsOperationBoolean; /** * VipsOperationComplex: * @VIPS_OPERATION_COMPLEX_POLAR: convert to polar coordinates * @VIPS_OPERATION_COMPLEX_RECT: convert to rectangular coordinates * @VIPS_OPERATION_COMPLEX_CONJ: complex conjugate * * See also: vips_complex(). */ typedef enum { VIPS_OPERATION_COMPLEX_POLAR, VIPS_OPERATION_COMPLEX_RECT, VIPS_OPERATION_COMPLEX_CONJ, VIPS_OPERATION_COMPLEX_LAST } VipsOperationComplex; /** * VipsOperationComplex2: * @VIPS_OPERATION_COMPLEX2_CROSS_PHASE: convert to polar coordinates * * See also: vips_complex2(). */ typedef enum { VIPS_OPERATION_COMPLEX2_CROSS_PHASE, VIPS_OPERATION_COMPLEX2_LAST } VipsOperationComplex2; /** * VipsOperationComplexget: * @VIPS_OPERATION_COMPLEXGET_REAL: get real component * @VIPS_OPERATION_COMPLEXGET_IMAG: get imaginary component * * See also: vips_complexget(). */ typedef enum { VIPS_OPERATION_COMPLEXGET_REAL, VIPS_OPERATION_COMPLEXGET_IMAG, VIPS_OPERATION_COMPLEXGET_LAST } VipsOperationComplexget; int vips_add( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_sum( VipsImage **in, VipsImage **out, int n, ... ) __attribute__((sentinel)); int vips_subtract( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) __attribute__((sentinel)); int vips_multiply( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_divide( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_linear( VipsImage *in, VipsImage **out, double *a, double *b, int n, ... ) __attribute__((sentinel)); int vips_linear1( VipsImage *in, VipsImage **out, double a, double b, ... ) __attribute__((sentinel)); int vips_remainder( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_remainder_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_remainder_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_invert( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_abs( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_sign( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_round( VipsImage *in, VipsImage **out, VipsOperationRound round, ... ) __attribute__((sentinel)); int vips_floor( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_ceil( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rint( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_math( VipsImage *in, VipsImage **out, VipsOperationMath math, ... ) __attribute__((sentinel)); int vips_sin( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cos( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_tan( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_asin( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_acos( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_atan( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_exp( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_exp10( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_log( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_log10( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_complex( VipsImage *in, VipsImage **out, VipsOperationComplex cmplx, ... ) __attribute__((sentinel)); int vips_polar( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rect( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_conj( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_complex2( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationComplex2 cmplx, ... ) __attribute__((sentinel)); int vips_cross_phase( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_complexget( VipsImage *in, VipsImage **out, VipsOperationComplexget get, ... ) __attribute__((sentinel)); int vips_real( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_imag( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_complexform( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_relational( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationRelational relational, ... ) __attribute__((sentinel)); int vips_equal( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_notequal( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_less( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_lesseq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_more( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_moreeq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_relational_const( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double *c, int n, ... ) __attribute__((sentinel)); int vips_equal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_notequal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_less_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_lesseq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_more_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_moreeq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_relational_const1( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double c, ... ) __attribute__((sentinel)); int vips_equal_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_notequal_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_less_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_lesseq_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_more_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_moreeq_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_boolean( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationBoolean boolean, ... ) __attribute__((sentinel)); int vips_andimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_orimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_eorimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_lshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_boolean_const( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, double *c, int n, ... ) __attribute__((sentinel)); int vips_andimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_orimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_eorimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_lshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_rshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_boolean_const1( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, double c, ... ) __attribute__((sentinel)); int vips_andimage_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_orimage_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_eorimage_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_lshift_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_rshift_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_math2( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationMath2 math2, ... ) __attribute__((sentinel)); int vips_pow( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_wop( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_math2_const( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double *c, int n, ... ) __attribute__((sentinel)); int vips_pow_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_wop_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_math2_const1( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double c, ... ) __attribute__((sentinel)); int vips_pow_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_wop_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_avg( VipsImage *in, double *out, ... ) __attribute__((sentinel)); int vips_deviate( VipsImage *in, double *out, ... ) __attribute__((sentinel)); int vips_min( VipsImage *in, double *out, ... ) __attribute__((sentinel)); int vips_max( VipsImage *in, double *out, ... ) __attribute__((sentinel)); int vips_stats( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_measure( VipsImage *in, VipsImage **out, int h, int v, ... ) __attribute__((sentinel)); int vips_find_trim( VipsImage *in, int *left, int *top, int *width, int *height, ... ) __attribute__((sentinel)); int vips_getpoint( VipsImage *in, double **vector, int *n, int x, int y, ... ) __attribute__((sentinel)); int vips_hist_find( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_find_ndim( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_find_indexed( VipsImage *in, VipsImage *index, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hough_line( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hough_circle( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_project( VipsImage *in, VipsImage **columns, VipsImage **rows, ... ) __attribute__((sentinel)); int vips_profile( VipsImage *in, VipsImage **columns, VipsImage **rows, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_ARITHMETIC_H*/ libvips-8.9.1/libvips/include/vips/basic.h000066400000000000000000000037321361153320700205150ustar00rootroot00000000000000/* A few basic types needed everywhere. * * 27/10/11 * - from type.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_BASIC_H #define VIPS_BASIC_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /** * VipsPel: * * A picture element. Cast this to whatever the associated VipsBandFormat says * to get the value. */ typedef unsigned char VipsPel; /* Also used for eg. vips_local() and friends. */ typedef int (*VipsCallbackFn)( void *a, void *b ); /* Like GFunc, but return a value. */ typedef void *(*VipsSListMap2Fn)( void *item, void *a, void *b ); typedef void *(*VipsSListMap4Fn)( void *item, void *a, void *b, void *c, void *d ); typedef void *(*VipsSListFold2Fn)( void *item, void *a, void *b, void *c ); typedef enum { VIPS_PRECISION_INTEGER, VIPS_PRECISION_FLOAT, VIPS_PRECISION_APPROXIMATE, VIPS_PRECISION_LAST } VipsPrecision; /* Just for testing. */ char *vips_path_filename7( const char *path ); char *vips_path_mode7( const char *path ); struct _VipsImage; typedef struct _VipsImage VipsImage; struct _VipsRegion; typedef struct _VipsRegion VipsRegion; #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_BASIC_H*/ libvips-8.9.1/libvips/include/vips/buf.h000066400000000000000000000060011361153320700202000ustar00rootroot00000000000000/* A static string buffer, with overflow protection. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_BUF_H #define VIPS_BUF_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include /* A string in the process of being written to ... multiple calls to * vips_buf_append add to it. On overflow append "..." and block further * writes. */ typedef struct _VipsBuf { /* All fields are private. */ /*< private >*/ char *base; /* String base */ int mx; /* Maximum length */ int i; /* Current write point */ gboolean full; /* String has filled, block writes */ int lasti; /* For read-recent */ gboolean dynamic; /* We own the string with malloc() */ } VipsBuf; #define VIPS_BUF_STATIC( TEXT ) \ { &TEXT[0], sizeof( TEXT ), 0, FALSE, 0, FALSE } /* Init and append to one of the above. */ void vips_buf_rewind( VipsBuf *buf ); void vips_buf_destroy( VipsBuf *buf ); void vips_buf_init( VipsBuf *buf ); void vips_buf_set_static( VipsBuf *buf, char *base, int mx ); void vips_buf_set_dynamic( VipsBuf *buf, int mx ); void vips_buf_init_static( VipsBuf *buf, char *base, int mx ); void vips_buf_init_dynamic( VipsBuf *buf, int mx ); gboolean vips_buf_appendns( VipsBuf *buf, const char *str, int sz ); gboolean vips_buf_appends( VipsBuf *buf, const char *str ); gboolean vips_buf_appendf( VipsBuf *buf, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); gboolean vips_buf_vappendf( VipsBuf *buf, const char *fmt, va_list ap ); gboolean vips_buf_appendc( VipsBuf *buf, char ch ); gboolean vips_buf_appendsc( VipsBuf *buf, gboolean quote, const char *str ); gboolean vips_buf_appendgv( VipsBuf *buf, GValue *value ); gboolean vips_buf_append_size( VipsBuf *buf, size_t n ); gboolean vips_buf_removec( VipsBuf *buf, char ch ); gboolean vips_buf_change( VipsBuf *buf, const char *o, const char *n ); gboolean vips_buf_is_empty( VipsBuf *buf ); gboolean vips_buf_is_full( VipsBuf *buf ); const char *vips_buf_all( VipsBuf *buf ); const char *vips_buf_firstline( VipsBuf *buf ); gboolean vips_buf_appendg( VipsBuf *buf, double g ); gboolean vips_buf_appendd( VipsBuf *buf, int d ); int vips_buf_len( VipsBuf *buf ); #endif /*VIPS_BUF_H*/ #ifdef __cplusplus } #endif /*__cplusplus*/ libvips-8.9.1/libvips/include/vips/cimg_funcs.h000066400000000000000000000024061361153320700215460ustar00rootroot00000000000000/* cimg_funcs.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_CIMG_FUNCS_H #define IM_CIMG_FUNCS_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include int vips_gmic( VipsImage **in, VipsImage **out, int n, int padding, double x_scale, double y_scale, const char *command, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_CIMG_FUNCS_H*/ libvips-8.9.1/libvips/include/vips/colour.h000066400000000000000000000166331361153320700207430ustar00rootroot00000000000000/* Definitions for VIPS colour package. * * J.Cupitt, 8/4/93 * 15/7/96 JC * - C++ stuff added * 20/2/98 JC * - new display calibration added * 26/9/05 * - added IM_ prefix to colour temps */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_COLOUR_H #define VIPS_COLOUR_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Areas under curves for Dxx. 2 degree observer. */ #define VIPS_D93_X0 (89.7400) #define VIPS_D93_Y0 (100.0) #define VIPS_D93_Z0 (130.7700) #define VIPS_D75_X0 (94.9682) #define VIPS_D75_Y0 (100.0) #define VIPS_D75_Z0 (122.5710) /* D65 temp 6504. */ #define VIPS_D65_X0 (95.0470) #define VIPS_D65_Y0 (100.0) #define VIPS_D65_Z0 (108.8827) #define VIPS_D55_X0 (95.6831) #define VIPS_D55_Y0 (100.0) #define VIPS_D55_Z0 (92.0871) #define VIPS_D50_X0 (96.4250) #define VIPS_D50_Y0 (100.0) #define VIPS_D50_Z0 (82.4680) /* A temp 2856k. */ #define VIPS_A_X0 (109.8503) #define VIPS_A_Y0 (100.0) #define VIPS_A_Z0 (35.5849) /* B temp 4874k. */ #define VIPS_B_X0 (99.0720) #define VIPS_B_Y0 (100.0) #define VIPS_B_Z0 (85.2230) /* C temp 6774k. */ #define VIPS_C_X0 (98.0700) #define VIPS_C_Y0 (100.0) #define VIPS_C_Z0 (118.2300) #define VIPS_E_X0 (100.0) #define VIPS_E_Y0 (100.0) #define VIPS_E_Z0 (100.0) #define VIPS_D3250_X0 (105.6590) #define VIPS_D3250_Y0 (100.0) #define VIPS_D3250_Z0 (45.8501) typedef enum { VIPS_INTENT_PERCEPTUAL = 0, VIPS_INTENT_RELATIVE, VIPS_INTENT_SATURATION, VIPS_INTENT_ABSOLUTE, VIPS_INTENT_LAST } VipsIntent; typedef enum { VIPS_PCS_LAB, VIPS_PCS_XYZ, VIPS_PCS_LAST } VipsPCS; gboolean vips_colourspace_issupported( const VipsImage *image ); int vips_colourspace( VipsImage *in, VipsImage **out, VipsInterpretation space, ... ) __attribute__((sentinel)); int vips_LabQ2sRGB( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rad2float( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_float2rad( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LabS2LabQ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LabQ2LabS( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LabQ2Lab( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Lab2LabQ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LCh2Lab( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Lab2LCh( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Yxy2Lab( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_CMC2XYZ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Lab2XYZ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_XYZ2Lab( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_XYZ2scRGB( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_scRGB2sRGB( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_scRGB2BW( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_sRGB2scRGB( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_scRGB2XYZ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_HSV2sRGB( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_sRGB2HSV( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LCh2CMC( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_CMC2LCh( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_XYZ2Yxy( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Yxy2XYZ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LabS2Lab( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Lab2LabS( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_CMYK2XYZ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_XYZ2CMYK( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_profile_load( const char *name, VipsBlob **profile, ... ) __attribute__((sentinel)); int vips_icc_present( void ); int vips_icc_transform( VipsImage *in, VipsImage **out, const char *output_profile, ... ) __attribute__((sentinel)); int vips_icc_import( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_icc_export( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_icc_ac2rc( VipsImage *in, VipsImage **out, const char *profile_filename ); gboolean vips_icc_is_compatible_profile( VipsImage *image, const void *data, size_t data_length ); int vips_dE76( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_dE00( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_dECMC( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); void vips_col_Lab2XYZ( float L, float a, float b, float *X, float *Y, float *Z ); void vips_col_XYZ2Lab( float X, float Y, float Z, float *L, float *a, float *b ); double vips_col_ab2h( double a, double b ); void vips_col_ab2Ch( float a, float b, float *C, float *h ); void vips_col_Ch2ab( float C, float h, float *a, float *b ); float vips_col_L2Lcmc( float L ); float vips_col_C2Ccmc( float C ); float vips_col_Ch2hcmc( float C, float h ); void vips_col_make_tables_CMC( void ); float vips_col_Lcmc2L( float Lcmc ); float vips_col_Ccmc2C( float Ccmc ); float vips_col_Chcmc2h( float C, float hcmc ); int vips_col_sRGB2scRGB_8( int r, int g, int b, float *R, float *G, float *B ); int vips_col_sRGB2scRGB_16( int r, int g, int b, float *R, float *G, float *B ); int vips_col_sRGB2scRGB_8_noclip( int r, int g, int b, float *R, float *G, float *B ); int vips_col_sRGB2scRGB_16_noclip( int r, int g, int b, float *R, float *G, float *B ); int vips_col_scRGB2XYZ( float R, float G, float B, float *X, float *Y, float *Z ); int vips_col_XYZ2scRGB( float X, float Y, float Z, float *R, float *G, float *B ); int vips_col_scRGB2sRGB_8( float R, float G, float B, int *r, int *g, int *b, int *og ); int vips_col_scRGB2sRGB_16( float R, float G, float B, int *r, int *g, int *b, int *og ); int vips_col_scRGB2BW_16( float R, float G, float B, int *g, int *og ); int vips_col_scRGB2BW_8( float R, float G, float B, int *g, int *og ); float vips_pythagoras( float L1, float a1, float b1, float L2, float a2, float b2 ); float vips_col_dE00( float L1, float a1, float b1, float L2, float a2, float b2 ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_COLOUR_H*/ libvips-8.9.1/libvips/include/vips/connection.h000066400000000000000000000300501361153320700215640ustar00rootroot00000000000000/* A byte source/sink .. it can be a pipe, socket, or perhaps a node.js stream. * * J.Cupitt, 19/6/14 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_CONNECTION_H #define VIPS_CONNECTION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_CONNECTION (vips_connection_get_type()) #define VIPS_CONNECTION( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_CONNECTION, VipsConnection )) #define VIPS_CONNECTION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_CONNECTION, VipsConnectionClass)) #define VIPS_IS_CONNECTION( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_CONNECTION )) #define VIPS_IS_CONNECTION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_CONNECTION )) #define VIPS_CONNECTION_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_CONNECTION, VipsConnectionClass )) /* Communicate with something like a socket or pipe. */ typedef struct _VipsConnection { VipsObject parent_object; /*< private >*/ /* Read/write this fd if connected to a system pipe/socket. Override * ::read() and ::write() to do something else. */ int descriptor; /* A descriptor we close with vips_tracked_close(). */ int tracked_descriptor; /* A descriptor we close with close(). */ int close_descriptor; /* If descriptor is a file, the filename we opened. Handy for error * messages. */ char *filename; } VipsConnection; typedef struct _VipsConnectionClass { VipsObjectClass parent_class; } VipsConnectionClass; GType vips_connection_get_type( void ); const char *vips_connection_filename( VipsConnection *connection ); const char *vips_connection_nick( VipsConnection *connection ); #define VIPS_TYPE_SOURCE (vips_source_get_type()) #define VIPS_SOURCE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_SOURCE, VipsSource )) #define VIPS_SOURCE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_SOURCE, VipsSourceClass)) #define VIPS_IS_SOURCE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_SOURCE )) #define VIPS_IS_SOURCE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_SOURCE )) #define VIPS_SOURCE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_SOURCE, VipsSourceClass )) /* Read from something like a socket, file or memory area and present the data * with a unified seek / read / map interface. * * During the header phase, we save data from unseekable sources in a buffer * so readers can rewind and read again. We don't buffer data during the * decode stage. */ typedef struct _VipsSource { VipsConnection parent_object; /* We have two phases: * * During the header phase, we save bytes read from the input (if this * is an unseekable source) so that we can rewind and try again, if * necessary. * * Once we reach decode phase, we no longer support rewind and the * buffer of saved data is discarded. */ gboolean decode; /* TRUE if this input is something like a pipe. These don't support * seek or map -- all you can do is read() bytes sequentially. * * If you attempt to map or get the size of a pipe-style input, it'll * get read entirely into memory. Seeks will cause read up to the seek * point. */ gboolean have_tested_seek; gboolean is_pipe; /* The current read point and length. * * length is -1 for is_pipe sources. * * off_t can be 32 bits on some platforms, so make sure we have a * full 64. */ gint64 read_position; gint64 length; /*< private >*/ /* For sources where we have the whole image in memory (from a memory * buffer, from mmaping the file, from reading the pipe into memory), * a pointer to the start. */ const void *data; /* For is_pipe sources, save data read during header phase here. If * we rewind and try again, serve data from this until it runs out. * * If we need to force the whole pipe into memory, read everything to * this and put a copy pf the pointer in data. */ GByteArray *header_bytes; /* Save the first few bytes here for file type sniffing. */ GByteArray *sniff; /* For a memory source, the blob we read from. */ VipsBlob *blob; /* If we mmaped the file, whet we need to unmmap on finalize. */ void *mmap_baseaddr; size_t mmap_length; } VipsSource; typedef struct _VipsSourceClass { VipsConnectionClass parent_class; /* Subclasses can define these to implement other source methods. */ /* Read from the source into the supplied buffer, args exactly as * read(2). Set errno on error. * * We must return gint64, since ssize_t is often defined as unsigned * on Windows. */ gint64 (*read)( VipsSource *, void *, size_t ); /* Seek to a certain position, args exactly as lseek(2). Set errno on * error. * * Unseekable sources should always return -1. VipsSource will then * seek by _read()ing bytes into memory as required. * * We have to use int64 rather than off_t, since we must work on * Windows, where off_t can be 32-bits. */ gint64 (*seek)( VipsSource *, gint64, int ); } VipsSourceClass; GType vips_source_get_type( void ); VipsSource *vips_source_new_from_descriptor( int descriptor ); VipsSource *vips_source_new_from_file( const char *filename ); VipsSource *vips_source_new_from_blob( VipsBlob *blob ); VipsSource *vips_source_new_from_memory( const void *data, size_t size ); VipsSource *vips_source_new_from_options( const char *options ); void vips_source_minimise( VipsSource *source ); int vips_source_unminimise( VipsSource *source ); int vips_source_decode( VipsSource *source ); gint64 vips_source_read( VipsSource *source, void *data, size_t length ); gboolean vips_source_is_mappable( VipsSource *source ); const void *vips_source_map( VipsSource *source, size_t *length ); VipsBlob *vips_source_map_blob( VipsSource *source ); gint64 vips_source_seek( VipsSource *source, gint64 offset, int whence ); int vips_source_rewind( VipsSource *source ); size_t vips_source_sniff_at_most( VipsSource *source, unsigned char **data, size_t length ); unsigned char *vips_source_sniff( VipsSource *source, size_t length ); gint64 vips_source_length( VipsSource *source ); #define VIPS_TYPE_SOURCE_CUSTOM (vips_source_custom_get_type()) #define VIPS_SOURCE_CUSTOM( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_SOURCE_CUSTOM, VipsSourceCustom )) #define VIPS_SOURCE_CUSTOM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_SOURCE_CUSTOM, VipsSourceCustomClass)) #define VIPS_IS_SOURCE_CUSTOM( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_SOURCE_CUSTOM )) #define VIPS_IS_SOURCE_CUSTOM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_SOURCE_CUSTOM )) #define VIPS_SOURCE_CUSTOM_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_SOURCE_CUSTOM, VipsSourceCustomClass )) /* Subclass of source_custom with signals for handlers. This is supposed to be * useful for language bindings. */ typedef struct _VipsSourceCustom { VipsSource parent_object; } VipsSourceCustom; typedef struct _VipsSourceCustomClass { VipsSourceClass parent_class; /* The action signals clients can use to implement read and seek. * We must use gint64 everywhere since there's no G_TYPE_SIZE. */ gint64 (*read)( VipsSourceCustom *, void *, gint64 ); gint64 (*seek)( VipsSourceCustom *, gint64, int ); } VipsSourceCustomClass; GType vips_source_custom_get_type( void ); VipsSourceCustom *vips_source_custom_new( void ); #define VIPS_TYPE_TARGET (vips_target_get_type()) #define VIPS_TARGET( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_TARGET, VipsTarget )) #define VIPS_TARGET_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_TARGET, VipsTargetClass)) #define VIPS_IS_TARGET( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_TARGET )) #define VIPS_IS_TARGET_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_TARGET )) #define VIPS_TARGET_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_TARGET, VipsTargetClass )) /* PNG writes in 8kb chunks, so we need to be a little larger than that. */ #define VIPS_TARGET_BUFFER_SIZE (8500) /* Output to something like a socket, pipe or memory area. */ typedef struct _VipsTarget { VipsConnection parent_object; /*< private >*/ /* This target should write to memory. */ gboolean memory; /* The target has been finished and can no longer be written. */ gboolean finished; /* Write memory output here. */ GByteArray *memory_buffer; /* And return memory via this blob. */ VipsBlob *blob; /* Buffer small writes here. write_point is the index of the next * character to write. */ unsigned char output_buffer[VIPS_TARGET_BUFFER_SIZE]; int write_point; } VipsTarget; typedef struct _VipsTargetClass { VipsConnectionClass parent_class; /* Write to output. Args exactly as write(2). * * We must return gint64, since ssize_t is often defined as unsigned * on Windows. */ gint64 (*write)( VipsTarget *, const void *, size_t ); /* Output has been generated, so do any clearing up, * eg. copy the bytes we saved in memory to the target blob. */ void (*finish)( VipsTarget * ); } VipsTargetClass; GType vips_target_get_type( void ); VipsTarget *vips_target_new_to_descriptor( int descriptor ); VipsTarget *vips_target_new_to_file( const char *filename ); VipsTarget *vips_target_new_to_memory( void ); int vips_target_write( VipsTarget *target, const void *data, size_t length ); void vips_target_finish( VipsTarget *target ); unsigned char *vips_target_steal( VipsTarget *target, size_t *length ); char *vips_target_steal_text( VipsTarget *target ); int vips_target_putc( VipsTarget *target, int ch ); #define VIPS_TARGET_PUTC( S, C ) ( \ (S)->write_point < VIPS_TARGET_BUFFER_SIZE ? \ ((S)->output_buffer[(S)->write_point++] = (C), 0) : \ vips_target_putc( (S), (C) ) \ ) int vips_target_writes( VipsTarget *target, const char *str ); int vips_target_writef( VipsTarget *target, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); int vips_target_write_amp( VipsTarget *target, const char *str ); #define VIPS_TYPE_TARGET_CUSTOM (vips_target_custom_get_type()) #define VIPS_TARGET_CUSTOM( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_TARGET_CUSTOM, VipsTargetCustom )) #define VIPS_TARGET_CUSTOM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_TARGET_CUSTOM, VipsTargetCustomClass)) #define VIPS_IS_TARGET_CUSTOM( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_TARGET_CUSTOM )) #define VIPS_IS_TARGET_CUSTOM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_TARGET_CUSTOM )) #define VIPS_TARGET_CUSTOM_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_TARGET_CUSTOM, VipsTargetCustomClass )) #define VIPS_TARGET_CUSTOM_BUFFER_SIZE (4096) /* Output to something like a socket, pipe or memory area. */ typedef struct _VipsTargetCustom { VipsTarget parent_object; } VipsTargetCustom; typedef struct _VipsTargetCustomClass { VipsTargetClass parent_class; /* The action signals clients can use to implement write and finish. * We must use gint64 everywhere since there's no G_TYPE_SIZE. */ gint64 (*write)( VipsTargetCustom *, const void *, gint64 ); void (*finish)( VipsTargetCustom * ); } VipsTargetCustomClass; GType vips_target_custom_get_type( void ); VipsTargetCustom *vips_target_custom_new( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_CONNECTION_H*/ libvips-8.9.1/libvips/include/vips/conversion.h000066400000000000000000000223141361153320700216160ustar00rootroot00000000000000/* conversion.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_CONVERSION_H #define VIPS_CONVERSION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum { VIPS_EXTEND_BLACK, VIPS_EXTEND_COPY, VIPS_EXTEND_REPEAT, VIPS_EXTEND_MIRROR, VIPS_EXTEND_WHITE, VIPS_EXTEND_BACKGROUND, VIPS_EXTEND_LAST } VipsExtend; typedef enum { VIPS_COMPASS_DIRECTION_CENTRE, VIPS_COMPASS_DIRECTION_NORTH, VIPS_COMPASS_DIRECTION_EAST, VIPS_COMPASS_DIRECTION_SOUTH, VIPS_COMPASS_DIRECTION_WEST, VIPS_COMPASS_DIRECTION_NORTH_EAST, VIPS_COMPASS_DIRECTION_SOUTH_EAST, VIPS_COMPASS_DIRECTION_SOUTH_WEST, VIPS_COMPASS_DIRECTION_NORTH_WEST, VIPS_COMPASS_DIRECTION_LAST } VipsCompassDirection; typedef enum { VIPS_DIRECTION_HORIZONTAL, VIPS_DIRECTION_VERTICAL, VIPS_DIRECTION_LAST } VipsDirection; typedef enum { VIPS_ALIGN_LOW, VIPS_ALIGN_CENTRE, VIPS_ALIGN_HIGH, VIPS_ALIGN_LAST } VipsAlign; typedef enum { VIPS_ANGLE_D0, VIPS_ANGLE_D90, VIPS_ANGLE_D180, VIPS_ANGLE_D270, VIPS_ANGLE_LAST } VipsAngle; typedef enum { VIPS_ANGLE45_D0, VIPS_ANGLE45_D45, VIPS_ANGLE45_D90, VIPS_ANGLE45_D135, VIPS_ANGLE45_D180, VIPS_ANGLE45_D225, VIPS_ANGLE45_D270, VIPS_ANGLE45_D315, VIPS_ANGLE45_LAST } VipsAngle45; typedef enum { VIPS_INTERESTING_NONE, VIPS_INTERESTING_CENTRE, VIPS_INTERESTING_ENTROPY, VIPS_INTERESTING_ATTENTION, VIPS_INTERESTING_LOW, VIPS_INTERESTING_HIGH, VIPS_INTERESTING_LAST } VipsInteresting; typedef enum { VIPS_BLEND_MODE_CLEAR, VIPS_BLEND_MODE_SOURCE, VIPS_BLEND_MODE_OVER, VIPS_BLEND_MODE_IN, VIPS_BLEND_MODE_OUT, VIPS_BLEND_MODE_ATOP, VIPS_BLEND_MODE_DEST, VIPS_BLEND_MODE_DEST_OVER, VIPS_BLEND_MODE_DEST_IN, VIPS_BLEND_MODE_DEST_OUT, VIPS_BLEND_MODE_DEST_ATOP, VIPS_BLEND_MODE_XOR, VIPS_BLEND_MODE_ADD, VIPS_BLEND_MODE_SATURATE, VIPS_BLEND_MODE_MULTIPLY, VIPS_BLEND_MODE_SCREEN, VIPS_BLEND_MODE_OVERLAY, VIPS_BLEND_MODE_DARKEN, VIPS_BLEND_MODE_LIGHTEN, VIPS_BLEND_MODE_COLOUR_DODGE, VIPS_BLEND_MODE_COLOUR_BURN, VIPS_BLEND_MODE_HARD_LIGHT, VIPS_BLEND_MODE_SOFT_LIGHT, VIPS_BLEND_MODE_DIFFERENCE, VIPS_BLEND_MODE_EXCLUSION, VIPS_BLEND_MODE_LAST } VipsBlendMode; int vips_copy( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_tilecache( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_linecache( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_sequential( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cache( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_copy_file( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_embed( VipsImage *in, VipsImage **out, int x, int y, int width, int height, ... ) __attribute__((sentinel)); int vips_gravity( VipsImage *in, VipsImage **out, VipsCompassDirection direction, int width, int height, ... ) __attribute__((sentinel)); int vips_flip( VipsImage *in, VipsImage **out, VipsDirection direction, ... ) __attribute__((sentinel)); int vips_insert( VipsImage *main, VipsImage *sub, VipsImage **out, int x, int y, ... ) __attribute__((sentinel)); int vips_join( VipsImage *in1, VipsImage *in2, VipsImage **out, VipsDirection direction, ... ) __attribute__((sentinel)); int vips_arrayjoin( VipsImage **in, VipsImage **out, int n, ... ) __attribute__((sentinel)); int vips_extract_area( VipsImage *in, VipsImage **out, int left, int top, int width, int height, ... ) __attribute__((sentinel)); int vips_crop( VipsImage *in, VipsImage **out, int left, int top, int width, int height, ... ) __attribute__((sentinel)); int vips_smartcrop( VipsImage *in, VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_extract_band( VipsImage *in, VipsImage **out, int band, ... ) __attribute__((sentinel)); int vips_replicate( VipsImage *in, VipsImage **out, int across, int down, ... ) __attribute__((sentinel)); int vips_grid( VipsImage *in, VipsImage **out, int tile_height, int across, int down, ... ) __attribute__((sentinel)); int vips_transpose3d( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_wrap( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rot( VipsImage *in, VipsImage **out, VipsAngle angle, ... ) __attribute__((sentinel)); int vips_rot90( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rot180( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rot270( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rot45( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); VipsAngle vips_autorot_get_angle( VipsImage *image ); void vips_autorot_remove_angle( VipsImage *image ); int vips_autorot( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_zoom( VipsImage *in, VipsImage **out, int xfac, int yfac, ... ) __attribute__((sentinel)); int vips_subsample( VipsImage *in, VipsImage **out, int xfac, int yfac, ... ) __attribute__((sentinel)); int vips_cast( VipsImage *in, VipsImage **out, VipsBandFormat format, ... ) __attribute__((sentinel)); int vips_cast_uchar( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_char( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_ushort( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_short( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_uint( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_int( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_float( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_double( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_complex( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_dpcomplex( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_scale( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_msb( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_byteswap( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandjoin( VipsImage **in, VipsImage **out, int n, ... ) __attribute__((sentinel)); int vips_bandjoin2( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandjoin_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_bandjoin_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_bandrank( VipsImage **in, VipsImage **out, int n, ... ) __attribute__((sentinel)); int vips_bandfold( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandunfold( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandbool( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, ... ) __attribute__((sentinel)); int vips_bandand( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandor( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandeor( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandmean( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_recomb( VipsImage *in, VipsImage **out, VipsImage *m, ... ) __attribute__((sentinel)); int vips_ifthenelse( VipsImage *cond, VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) __attribute__((sentinel)); int vips_switch( VipsImage **tests, VipsImage **out, int n, ... ) __attribute__((sentinel)); int vips_flatten( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_addalpha( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_premultiply( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_unpremultiply( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_composite( VipsImage **in, VipsImage **out, int n, int *mode, ... ) __attribute__((sentinel)); int vips_composite2( VipsImage *base, VipsImage *overlay, VipsImage **out, VipsBlendMode mode1, ... ) __attribute__((sentinel)); int vips_falsecolour( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_gamma( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_CONVERSION_H*/ libvips-8.9.1/libvips/include/vips/convolution.h000066400000000000000000000046471361153320700220210ustar00rootroot00000000000000/* convolution.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_CONVOLUTION_H #define VIPS_CONVOLUTION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum { VIPS_COMBINE_MAX, VIPS_COMBINE_SUM, VIPS_COMBINE_MIN, VIPS_COMBINE_LAST } VipsCombine; int vips_conv( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) __attribute__((sentinel)); int vips_convf( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) __attribute__((sentinel)); int vips_convi( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) __attribute__((sentinel)); int vips_conva( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) __attribute__((sentinel)); int vips_convsep( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) __attribute__((sentinel)); int vips_convasep( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) __attribute__((sentinel)); int vips_compass( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) __attribute__((sentinel)); int vips_gaussblur( VipsImage *in, VipsImage **out, double sigma, ... ) __attribute__((sentinel)); int vips_sharpen( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_spcor( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) __attribute__((sentinel)); int vips_fastcor( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) __attribute__((sentinel)); int vips_sobel( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_canny( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_CONVOLUTION_H*/ libvips-8.9.1/libvips/include/vips/create.h000066400000000000000000000103171361153320700206740ustar00rootroot00000000000000/* create.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_CREATE_H #define VIPS_CREATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips_black( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_xyz( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_grey( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_gaussmat( VipsImage **out, double sigma, double min_ampl, ... ) __attribute__((sentinel)); int vips_logmat( VipsImage **out, double sigma, double min_ampl, ... ) __attribute__((sentinel)); int vips_text( VipsImage **out, const char *text, ... ) __attribute__((sentinel)); int vips_gaussnoise( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_eye( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_sines( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_zone( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_identity( VipsImage **out, ... ) __attribute__((sentinel)); int vips_buildlut( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_invertlut( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_tonelut( VipsImage **out, ... ) __attribute__((sentinel)); int vips_mask_ideal( VipsImage **out, int width, int height, double frequency_cutoff, ... ) __attribute__((sentinel)); int vips_mask_ideal_ring( VipsImage **out, int width, int height, double frequency_cutoff, double ringwidth, ... ) __attribute__((sentinel)); int vips_mask_ideal_band( VipsImage **out, int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, ... ) __attribute__((sentinel)); int vips_mask_butterworth( VipsImage **out, int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, ... ) __attribute__((sentinel)); int vips_mask_butterworth_ring( VipsImage **out, int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, double ringwidth, ... ) __attribute__((sentinel)); int vips_mask_butterworth_band( VipsImage **out, int width, int height, double order, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, ... ) __attribute__((sentinel)); int vips_mask_gaussian( VipsImage **out, int width, int height, double frequency_cutoff, double amplitude_cutoff, ... ) __attribute__((sentinel)); int vips_mask_gaussian_ring( VipsImage **out, int width, int height, double frequency_cutoff, double amplitude_cutoff, double ringwidth, ... ) __attribute__((sentinel)); int vips_mask_gaussian_band( VipsImage **out, int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, ... ) __attribute__((sentinel)); int vips_mask_fractal( VipsImage **out, int width, int height, double fractal_dimension, ... ) __attribute__((sentinel)); int vips_fractsurf( VipsImage **out, int width, int height, double fractal_dimension, ... ) __attribute__((sentinel)); int vips_worley( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_perlin( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_CREATE_H*/ libvips-8.9.1/libvips/include/vips/dbuf.h000066400000000000000000000046651361153320700203620ustar00rootroot00000000000000/* A dynamic memory buffer that expands as you write. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_DBUF_H #define VIPS_DBUF_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include /* A buffer in the process of being written to. */ typedef struct _VipsDbuf { /* All fields are private. */ /*< private >*/ /* The current base, and the size of the allocated memory area. */ unsigned char *data; size_t allocated_size; /* The size of the actual data that's been written. This will usually * be <= allocated_size, but always >= write_point. */ size_t data_size; /* The write point. */ size_t write_point; } VipsDbuf; void vips_dbuf_destroy( VipsDbuf *dbuf ); void vips_dbuf_init( VipsDbuf *dbuf ); gboolean vips_dbuf_allocate( VipsDbuf *dbuf, size_t size ); size_t vips_dbuf_read( VipsDbuf *dbuf, unsigned char *data, size_t size ); unsigned char *vips_dbuf_get_write( VipsDbuf *dbuf, size_t *size ); gboolean vips_dbuf_write( VipsDbuf *dbuf, const unsigned char *data, size_t size ); gboolean vips_dbuf_writef( VipsDbuf *dbuf, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); gboolean vips_dbuf_write_amp( VipsDbuf *dbuf, const char *str ); void vips_dbuf_reset( VipsDbuf *dbuf ); void vips_dbuf_destroy( VipsDbuf *dbuf ); gboolean vips_dbuf_seek( VipsDbuf *dbuf, off_t offset, int whence ); void vips_dbuf_truncate( VipsDbuf *dbuf ); off_t vips_dbuf_tell( VipsDbuf *dbuf ); unsigned char *vips_dbuf_string( VipsDbuf *dbuf, size_t *size ); unsigned char *vips_dbuf_steal( VipsDbuf *dbuf, size_t *size ); #endif /*VIPS_DBUF_H*/ #ifdef __cplusplus } #endif /*__cplusplus*/ libvips-8.9.1/libvips/include/vips/debug.h000066400000000000000000000036371361153320700205260ustar00rootroot00000000000000/* Support for debug.c in iofuncs. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_DEBUG_H #define VIPS_DEBUG_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #ifdef VIPS_DEBUG #define VIPS_DEBUG_MSG( ... ) \ G_STMT_START { printf( __VA_ARGS__ ); } G_STMT_END #else #define VIPS_DEBUG_MSG( ... ) \ G_STMT_START { ; } G_STMT_END #endif /*VIPS_DEBUG*/ #ifdef VIPS_DEBUG_RED #define VIPS_DEBUG_MSG_RED( ... ) \ G_STMT_START { printf( "red: " __VA_ARGS__ ); } G_STMT_END #else #define VIPS_DEBUG_MSG_RED( ... ) \ G_STMT_START { ; } G_STMT_END #endif /*VIPS_DEBUG_RED*/ #ifdef VIPS_DEBUG_AMBER #define VIPS_DEBUG_MSG_AMBER( ... ) \ G_STMT_START { printf( "amber: " __VA_ARGS__ ); } G_STMT_END #else #define VIPS_DEBUG_MSG_AMBER( ... ) \ G_STMT_START { ; } G_STMT_END #endif /*VIPS_DEBUG_AMBER*/ #ifdef VIPS_DEBUG_GREEN #define VIPS_DEBUG_MSG_GREEN( ... ) \ G_STMT_START { printf( "green: " __VA_ARGS__ ); } G_STMT_END #else #define VIPS_DEBUG_MSG_GREEN( ... ) \ G_STMT_START { ; } G_STMT_END #endif /*VIPS_DEBUG_GREEN*/ #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /* VIPS_DEBUG_H */ libvips-8.9.1/libvips/include/vips/deprecated.h000066400000000000000000000075411361153320700215360ustar00rootroot00000000000000/* Old and broken stuff we do not enable by default * * 30/6/09 * - from vips.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_DEPRECATED_H #define IM_DEPRECATED_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* On win32, need to override the wingdi defs for these. Yuk! */ #ifdef HAVE_WINDOWS_H #ifdef RGB #undef RGB #endif #ifdef CMYK #undef CMYK #endif #endif /*HAVE_WINDOWS_H*/ /* Bits per Band */ #define BBBYTE 8 #define BBSHORT 16 #define BBINT 32 #define BBFLOAT 32 #define BBCOMPLEX 64 /* complex consisting of two floats */ #define BBDOUBLE 64 #define BBDPCOMPLEX 128 /* complex consisting of two doubles */ /* picture Type */ #define MULTIBAND 0 #define B_W 1 #define LUMINACE 2 #define XRAY 3 #define IR 4 #define YUV 5 #define RED_ONLY 6 /* red channel only */ #define GREEN_ONLY 7 /* green channel only */ #define BLUE_ONLY 8 /* blue channel only */ #define POWER_SPECTRUM 9 #define HISTOGRAM 10 #define FOURIER 24 /* Colour spaces. */ #define LUT 11 #define XYZ 12 #define LAB 13 #define CMC 14 #define CMYK 15 #define LABQ 16 #define RGB 17 #define UCS 18 #define LCH 19 #define LABS 21 #define sRGB 22 #define YXY 23 /* BandFmt */ #define FMTNOTSET -1 #define FMTUCHAR 0 /* pels interpreted as unsigned chars */ #define FMTCHAR 1 /* pels interpreted as signed chars */ #define FMTUSHORT 2 /* pels interpreted as unsigned shorts */ #define FMTSHORT 3 /* pels interpreted as signed shorts */ #define FMTUINT 4 /* pels interpreted as unsigned ints */ #define FMTINT 5 /* pels interpreted as signed ints */ #define FMTFLOAT 6 /* pels interpreted as floats */ #define FMTCOMPLEX 7 /* pels interpreted as complex (2 float each) */ #define FMTDOUBLE 8 /* pels interpreted as unsigned double */ #define FMTDPCOMPLEX 9 /* pels interpreted as complex (2 double each)*/ /* Coding type */ #define NOCODING 0 #define COLQUANT 1 #define LABPACK 2 #define LABPACK_COMPRESSED 3 #define RGB_COMPRESSED 4 #define LUM_COMPRESSED 5 /* Compression type */ #define NO_COMPRESSION 0 #define TCSF_COMPRESSION 1 #define JPEG_COMPRESSION 2 #define esize(I) IM_IMAGE_SIZEOF_ELEMENT(I) #define psize(I) IM_IMAGE_SIZEOF_PEL(I) #define lsize(I) IM_IMAGE_SIZEOF_LINE(I) #define niele(I) IM_IMAGE_N_ELEMENTS(I) #define lskip(B) IM_REGION_LSKIP(B) #define nele(B) IM_REGION_N_ELEMENTS(B) #define rsize(B) IM_REGION_SIZEOF_LINE(B) #define addr(B,X,Y) IM_REGION_ADDR(B,X,Y) #ifndef MAX #define MAX(A,B) IM_MAX(A, B) #define MIN(A,B) IM_MIN(A, B) #endif /*MAX*/ #define CLIP(A,V,B) IM_CLIP(A, V, B) #define NEW(IM,A) IM_NEW(IM,A) #define NUMBER(R) IM_NUMBER(R) #define ARRAY(IM,N,T) IM_ARRAY(IM,N,T) #define RINT( R ) IM_RINT( R ) #define CLIP_UCHAR( V, SEQ ) IM_CLIP_UCHAR( V, SEQ ) #define CLIP_USHORT( V, SEQ ) IM_CLIP_USHORT( V, SEQ ) #define CLIP_CHAR( V, SEQ ) IM_CLIP_CHAR( V, SEQ ) #define CLIP_SHORT( V, SEQ ) IM_CLIP_SHORT( V, SEQ ) #define CLIP_NONE( V, SEQ ) IM_CLIP_NONE( V, SEQ ) #define right(R) IM_RECT_RIGHT(R) #define bottom(R) IM_RECT_BOTTOM(R) #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_DEPRECATED_H*/ libvips-8.9.1/libvips/include/vips/dispatch.h000066400000000000000000000230731361153320700212330ustar00rootroot00000000000000/* VIPS function dispatch. * * J. Cupitt, 8/4/93. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_DISPATCH_H #define IM_DISPATCH_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include #include /* Type names. You may define your own, but if you use one of these, then * you should use the built-in VIPS type converters. */ #define IM_TYPE_IMAGEVEC "imagevec" /* im_object is ptr to IMAGE[] */ #define IM_TYPE_DOUBLEVEC "doublevec" /* im_object is ptr to double[] */ #define IM_TYPE_INTVEC "intvec" /* im_object is ptr to int[] */ #define IM_TYPE_DOUBLE "double" /* im_object is ptr to double */ #define IM_TYPE_INT "integer" /* 32-bit integer */ #define IM_TYPE_COMPLEX "complex" /* Pair of doubles */ #define IM_TYPE_STRING "string" /* Zero-terminated char array */ #define IM_TYPE_IMASK "intmask" /* Integer mask type */ #define IM_TYPE_DMASK "doublemask" /* Double mask type */ #define IM_TYPE_IMAGE "image" /* IMAGE descriptor */ #define IM_TYPE_DISPLAY "display" /* Display descriptor */ #define IM_TYPE_GVALUE "gvalue" /* GValue wrapper */ #define IM_TYPE_INTERPOLATE "interpolate"/* A subclass of VipsInterpolate */ typedef char *im_arg_type; /* Type of argument id */ /* Internal representation of an argument to an image processing function. */ typedef void *im_object; /* These bits are ored together to make the flags in a type descriptor. * * IM_TYPE_OUTPUT: set to indicate output, otherwise input. If the IM_TYPE_RW * bit is set and IM_TYPE_OUTPUT is not set, both input and output (ie. the * operation side-effects this argument). * * IM_TYPE_ARG: Two ways of making an im_object --- with and without a * command-line string to help you along. Arguments with a string are thing * like IMAGE descriptors, which require a filename to initialise. * Arguments without are things like output numbers, where making the object * simply involves allocating storage. */ typedef enum { IM_TYPE_NONE = 0, /* No flags */ IM_TYPE_OUTPUT = 0x1, /* Output/input object */ IM_TYPE_ARG = 0x2, /* Uses a str arg in construction */ IM_TYPE_RW = 0x4 /* Read-write */ } im_type_flags; /* Initialise, destroy and write objects. The "str" argument to the * init function will not be supplied if this is not an ARG type. The * write function writes to the GString. */ typedef int (*im_init_obj_fn)( im_object *obj, char *str ); typedef int (*im_dest_obj_fn)( im_object obj ); /* Describe a VIPS type. */ typedef struct { im_arg_type type; /* Type of argument */ int size; /* sizeof( im_object repres. ) */ im_type_flags flags; /* Flags */ im_init_obj_fn init; /* Operation functions */ im_dest_obj_fn dest; /* Destroy object */ } im_type_desc; /* Success on an argument. This is called if the image processing function * succeeds and should be used to (for example) print output. */ typedef int (*im_print_obj_fn)( im_object obj ); /* Describe a VIPS command argument. */ typedef struct { char *name; /* eg. "width" */ im_type_desc *desc; /* Type description */ im_print_obj_fn print; /* Print some output objects */ } im_arg_desc; /* Type of VIPS dispatch funtion. */ typedef int (*im_dispatch_fn)( im_object *argv ); /* Maximum size of arg table. */ #define IM_MAX_ARGS (1000) /* Flags for functions. These are for information only, and more may be * added. */ typedef enum { IM_FN_NONE = 0, /* No flags set */ IM_FN_PIO = 0x1, /* Is a partial function */ IM_FN_TRANSFORM = 0x2, /* Performs coordinate transformations */ IM_FN_PTOP = 0x4, /* Point-to-point ... can be done with a LUT */ IM_FN_NOCACHE = 0x8 /* Result should not be cached */ } im_fn_flags; /* Describe a VIPS function. */ typedef struct { char *name; /* eg "im_invert" */ char *desc; /* Description - eg "photographic negative" */ im_fn_flags flags; /* Flags for this function */ im_dispatch_fn disp; /* Dispatch */ int argc; /* Number of args */ im_arg_desc *argv; /* Arg table */ } im_function; /* A set of VIPS functions forming a package. */ typedef struct { char *name; /* Package name (eg "arithmetic") */ int nfuncs; /* Number of functions in package */ im_function **table; /* Array of function descriptors */ } im_package; /* Externs for dispatch. */ /* Struct for mask IO to a file. */ typedef struct { char *name; /* Command-line name in */ void *mask; /* Mask --- DOUBLE or INT */ } im_mask_object; /* Struct for doublevec IO */ typedef struct { int n; /* Vector length */ double *vec; /* Vector */ } im_doublevec_object; /* Struct for intvec IO */ typedef struct { int n; /* Vector length */ int *vec; /* Vector */ } im_intvec_object; /* Struct for imagevec IO */ typedef struct { int n; /* Vector length */ IMAGE **vec; /* Vector */ } im_imagevec_object; /* Built-in VIPS types. */ extern im_type_desc im__input_int; extern im_type_desc im__input_intvec; extern im_type_desc im__input_imask; extern im_type_desc im__output_int; extern im_type_desc im__output_intvec; extern im_type_desc im__output_imask; extern im_type_desc im__input_double; extern im_type_desc im__input_doublevec; extern im_type_desc im__input_dmask; extern im_type_desc im__output_double; extern im_type_desc im__output_doublevec; extern im_type_desc im__output_dmask; extern im_type_desc im__output_dmask_screen; extern im_type_desc im__output_complex; extern im_type_desc im__input_string; extern im_type_desc im__output_string; extern im_type_desc im__input_imagevec; extern im_type_desc im__input_image; extern im_type_desc im__output_image; extern im_type_desc im__rw_image; extern im_type_desc im__input_display; extern im_type_desc im__output_display; extern im_type_desc im__input_gvalue; extern im_type_desc im__output_gvalue; extern im_type_desc im__input_interpolate; /* VIPS print functions. */ int im__iprint( im_object obj ); /* int */ int im__ivprint( im_object obj ); /* intvec */ int im__dprint( im_object obj ); /* double */ int im__dvprint( im_object obj ); /* doublevec */ int im__dmsprint( im_object obj ); /* DOUBLEMASK as stats */ int im__cprint( im_object obj ); /* complex */ int im__sprint( im_object obj ); /* string */ int im__displayprint( im_object obj ); /* im_col_display */ int im__gprint( im_object obj ); /* GValue */ /* Macros for convenient creation. */ #define IM_INPUT_INT( S ) { S, &im__input_int, NULL } #define IM_INPUT_INTVEC( S ) { S, &im__input_intvec, NULL } #define IM_INPUT_IMASK( S ) { S, &im__input_imask, NULL } #define IM_OUTPUT_INT( S ) { S, &im__output_int, im__iprint } #define IM_OUTPUT_INTVEC( S ) { S, &im__output_intvec, im__ivprint } #define IM_OUTPUT_IMASK( S ) { S, &im__output_imask, NULL } #define IM_INPUT_DOUBLE( S ) { S, &im__input_double, NULL } #define IM_INPUT_DOUBLEVEC( S ) { S, &im__input_doublevec, NULL } #define IM_INPUT_DMASK( S ) { S, &im__input_dmask, NULL } #define IM_OUTPUT_DOUBLE( S ) { S, &im__output_double, im__dprint } #define IM_OUTPUT_DOUBLEVEC( S ) { S, &im__output_doublevec, im__dvprint } #define IM_OUTPUT_DMASK( S ) { S, &im__output_dmask, NULL } #define IM_OUTPUT_DMASK_STATS( S ) { S, &im__output_dmask_screen, im__dmsprint } #define IM_OUTPUT_COMPLEX( S ) { S, &im__output_complex, im__cprint } #define IM_INPUT_STRING( S ) { S, &im__input_string, NULL } #define IM_OUTPUT_STRING( S ) { S, &im__output_string, im__sprint } #define IM_INPUT_IMAGE( S ) { S, &im__input_image, NULL } #define IM_INPUT_IMAGEVEC( S ) { S, &im__input_imagevec, NULL } #define IM_OUTPUT_IMAGE( S ) { S, &im__output_image, NULL } #define IM_RW_IMAGE( S ) { S, &im__rw_image, NULL } #define IM_INPUT_DISPLAY( S ) { S, &im__input_display, NULL } #define IM_OUTPUT_DISPLAY( S ) { S, &im__output_display, im__displayprint } #define IM_INPUT_GVALUE( S ) { S, &im__input_gvalue, NULL } #define IM_OUTPUT_GVALUE( S ) { S, &im__output_gvalue, im__gprint } #define IM_INPUT_INTERPOLATE( S ) { S, &im__input_interpolate, NULL } /* Add a plug-in package. */ im_package *im_load_plugin( const char *name ); int im_load_plugins( const char *fmt, ... ) __attribute__((format(printf, 1, 2))); /* Close all plug-ins. */ int im_close_plugins( void ); /* Loop over all loaded packages. */ void *im_map_packages( VipsSListMap2Fn fn, void *a ); /* Convenience functions for finding packages, functions, etc. */ im_function *im_find_function( const char *name ); im_package *im_find_package( const char *name ); im_package *im_package_of_function( const char *name ); /* Allocate space for, and free im_object argument lists. */ int im_free_vargv( im_function *fn, im_object *vargv ); int im_allocate_vargv( im_function *fn, im_object *vargv ); /* Run a VIPS command by name. */ int im_run_command( char *name, int argc, char **argv ); int vips__input_interpolate_init( im_object *obj, char *str ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_DISPATCH_H*/ libvips-8.9.1/libvips/include/vips/draw.h000066400000000000000000000054231361153320700203700ustar00rootroot00000000000000/* draw.h * * 3/11/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_DRAW_H #define VIPS_DRAW_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum { VIPS_COMBINE_MODE_SET, VIPS_COMBINE_MODE_ADD, VIPS_COMBINE_MODE_LAST } VipsCombineMode; int vips_draw_rect( VipsImage *image, double *ink, int n, int left, int top, int width, int height, ... ) __attribute__((sentinel)); int vips_draw_rect1( VipsImage *image, double ink, int left, int top, int width, int height, ... ) __attribute__((sentinel)); int vips_draw_point( VipsImage *image, double *ink, int n, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_point1( VipsImage *image, double ink, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_image( VipsImage *image, VipsImage *sub, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_mask( VipsImage *image, double *ink, int n, VipsImage *mask, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_mask1( VipsImage *image, double ink, VipsImage *mask, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_line( VipsImage *image, double *ink, int n, int x1, int y1, int x2, int y2, ... ) __attribute__((sentinel)); int vips_draw_line1( VipsImage *image, double ink, int x1, int y1, int x2, int y2, ... ) __attribute__((sentinel)); int vips_draw_circle( VipsImage *image, double *ink, int n, int cx, int cy, int radius, ... ) __attribute__((sentinel)); int vips_draw_circle1( VipsImage *image, double ink, int cx, int cy, int radius, ... ) __attribute__((sentinel)); int vips_draw_flood( VipsImage *image, double *ink, int n, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_flood1( VipsImage *image, double ink, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_smudge( VipsImage *image, int left, int top, int width, int height, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_DRAW_H*/ libvips-8.9.1/libvips/include/vips/enumtemplate000066400000000000000000000007331361153320700217040ustar00rootroot00000000000000/*** BEGIN file-header ***/ #ifndef VIPS_ENUM_TYPES_H #define VIPS_ENUM_TYPES_H G_BEGIN_DECLS /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@filename@" */ /*** END file-production ***/ /*** BEGIN value-header ***/ GType @enum_name@_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) /*** END value-header ***/ /*** BEGIN file-tail ***/ G_END_DECLS #endif /*VIPS_ENUM_TYPES_H*/ /*** END file-tail ***/ libvips-8.9.1/libvips/include/vips/enumtypes.h000066400000000000000000000147351361153320700214720ustar00rootroot00000000000000 /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ #ifndef VIPS_ENUM_TYPES_H #define VIPS_ENUM_TYPES_H G_BEGIN_DECLS /* enumerations from "../../../libvips/include/vips/arithmetic.h" */ GType vips_operation_math_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_MATH (vips_operation_math_get_type()) GType vips_operation_math2_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_MATH2 (vips_operation_math2_get_type()) GType vips_operation_round_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_ROUND (vips_operation_round_get_type()) GType vips_operation_relational_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_RELATIONAL (vips_operation_relational_get_type()) GType vips_operation_boolean_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_BOOLEAN (vips_operation_boolean_get_type()) GType vips_operation_complex_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_COMPLEX (vips_operation_complex_get_type()) GType vips_operation_complex2_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_COMPLEX2 (vips_operation_complex2_get_type()) GType vips_operation_complexget_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_COMPLEXGET (vips_operation_complexget_get_type()) /* enumerations from "../../../libvips/include/vips/basic.h" */ GType vips_precision_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_PRECISION (vips_precision_get_type()) /* enumerations from "../../../libvips/include/vips/colour.h" */ GType vips_intent_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_INTENT (vips_intent_get_type()) GType vips_pcs_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_PCS (vips_pcs_get_type()) /* enumerations from "../../../libvips/include/vips/conversion.h" */ GType vips_extend_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_EXTEND (vips_extend_get_type()) GType vips_compass_direction_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_COMPASS_DIRECTION (vips_compass_direction_get_type()) GType vips_direction_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_DIRECTION (vips_direction_get_type()) GType vips_align_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_ALIGN (vips_align_get_type()) GType vips_angle_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_ANGLE (vips_angle_get_type()) GType vips_angle45_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_ANGLE45 (vips_angle45_get_type()) GType vips_interesting_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_INTERESTING (vips_interesting_get_type()) GType vips_blend_mode_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_BLEND_MODE (vips_blend_mode_get_type()) /* enumerations from "../../../libvips/include/vips/convolution.h" */ GType vips_combine_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_COMBINE (vips_combine_get_type()) /* enumerations from "../../../libvips/include/vips/draw.h" */ GType vips_combine_mode_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_COMBINE_MODE (vips_combine_mode_get_type()) /* enumerations from "../../../libvips/include/vips/foreign.h" */ GType vips_foreign_flags_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_FLAGS (vips_foreign_flags_get_type()) GType vips_saveable_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_SAVEABLE (vips_saveable_get_type()) GType vips_foreign_webp_preset_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_WEBP_PRESET (vips_foreign_webp_preset_get_type()) GType vips_foreign_tiff_compression_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_TIFF_COMPRESSION (vips_foreign_tiff_compression_get_type()) GType vips_foreign_tiff_predictor_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_TIFF_PREDICTOR (vips_foreign_tiff_predictor_get_type()) GType vips_foreign_tiff_resunit_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_TIFF_RESUNIT (vips_foreign_tiff_resunit_get_type()) GType vips_foreign_png_filter_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_PNG_FILTER (vips_foreign_png_filter_get_type()) GType vips_foreign_dz_layout_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_DZ_LAYOUT (vips_foreign_dz_layout_get_type()) GType vips_foreign_dz_depth_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_DZ_DEPTH (vips_foreign_dz_depth_get_type()) GType vips_foreign_dz_container_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_DZ_CONTAINER (vips_foreign_dz_container_get_type()) GType vips_foreign_heif_compression_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_HEIF_COMPRESSION (vips_foreign_heif_compression_get_type()) /* enumerations from "../../../libvips/include/vips/image.h" */ GType vips_demand_style_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_DEMAND_STYLE (vips_demand_style_get_type()) GType vips_image_type_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_IMAGE_TYPE (vips_image_type_get_type()) GType vips_interpretation_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_INTERPRETATION (vips_interpretation_get_type()) GType vips_band_format_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_BAND_FORMAT (vips_band_format_get_type()) GType vips_coding_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_CODING (vips_coding_get_type()) GType vips_access_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_ACCESS (vips_access_get_type()) /* enumerations from "../../../libvips/include/vips/morphology.h" */ GType vips_operation_morphology_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_MORPHOLOGY (vips_operation_morphology_get_type()) /* enumerations from "../../../libvips/include/vips/object.h" */ GType vips_argument_flags_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_ARGUMENT_FLAGS (vips_argument_flags_get_type()) /* enumerations from "../../../libvips/include/vips/operation.h" */ GType vips_operation_flags_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_FLAGS (vips_operation_flags_get_type()) /* enumerations from "../../../libvips/include/vips/region.h" */ GType vips_region_shrink_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_REGION_SHRINK (vips_region_shrink_get_type()) /* enumerations from "../../../libvips/include/vips/resample.h" */ GType vips_kernel_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_KERNEL (vips_kernel_get_type()) GType vips_size_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_SIZE (vips_size_get_type()) /* enumerations from "../../../libvips/include/vips/util.h" */ GType vips_token_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_TOKEN (vips_token_get_type()) G_END_DECLS #endif /*VIPS_ENUM_TYPES_H*/ /* Generated data ends here */ libvips-8.9.1/libvips/include/vips/error.h000066400000000000000000000076641361153320700205750ustar00rootroot00000000000000/* Error handling. */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_ERROR_H #define VIPS_ERROR_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ const char *vips_error_buffer( void ); char *vips_error_buffer_copy( void ); void vips_error_clear( void ); void vips_error_freeze( void ); void vips_error_thaw( void ); void vips_error( const char *domain, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); void vips_verror( const char *domain, const char *fmt, va_list ap ); void vips_error_system( int err, const char *domain, const char *fmt, ... ) __attribute__((format(printf, 3, 4))); void vips_verror_system( int err, const char *domain, const char *fmt, va_list ap ); void vips_error_g( GError **error ); void vips_g_error( GError **error ); void vips_error_exit( const char *fmt, ... ) __attribute__((noreturn, format(printf, 1, 2))); int vips_check_uncoded( const char *domain, VipsImage *im ); int vips_check_coding( const char *domain, VipsImage *im, VipsCoding coding ); int vips_check_coding_known( const char *domain, VipsImage *im ); int vips_check_coding_noneorlabq( const char *domain, VipsImage *im ); int vips_check_coding_same( const char *domain, VipsImage *im1, VipsImage *im2 ); int vips_check_mono( const char *domain, VipsImage *im ); int vips_check_bands( const char *domain, VipsImage *im, int bands ); int vips_check_bands_1or3( const char *domain, VipsImage *im ); int vips_check_bands_atleast( const char *domain, VipsImage *im, int bands ); int vips_check_bands_1orn( const char *domain, VipsImage *im1, VipsImage *im2 ); int vips_check_bands_1orn_unary( const char *domain, VipsImage *im, int n ); int vips_check_bands_same( const char *domain, VipsImage *im1, VipsImage *im2 ); int vips_check_bandno( const char *domain, VipsImage *im, int bandno ); int vips_check_int( const char *domain, VipsImage *im ); int vips_check_uint( const char *domain, VipsImage *im ); int vips_check_uintorf( const char *domain, VipsImage *im ); int vips_check_noncomplex( const char *domain, VipsImage *im ); int vips_check_complex( const char *domain, VipsImage *im ); int vips_check_twocomponents( const char *domain, VipsImage *im ); int vips_check_format( const char *domain, VipsImage *im, VipsBandFormat fmt ); int vips_check_u8or16( const char *domain, VipsImage *im ); int vips_check_8or16( const char *domain, VipsImage *im ); int vips_check_u8or16orf( const char *domain, VipsImage *im ); int vips_check_format_same( const char *domain, VipsImage *im1, VipsImage *im2 ); int vips_check_size_same( const char *domain, VipsImage *im1, VipsImage *im2 ); int vips_check_oddsquare( const char *domain, VipsImage *im ); int vips_check_vector_length( const char *domain, int n, int len ); int vips_check_vector( const char *domain, int n, VipsImage *im ); int vips_check_hist( const char *domain, VipsImage *im ); int vips_check_matrix( const char *domain, VipsImage *im, VipsImage **out ); int vips_check_separable( const char *domain, VipsImage *im ); int vips_check_precision_intfloat( const char *domain, VipsPrecision precision ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_ERROR_H*/ libvips-8.9.1/libvips/include/vips/foreign.h000066400000000000000000000533771361153320700210770ustar00rootroot00000000000000/* Base type for supported image formats. Subclass this to add a new * format. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_FOREIGN_H #define VIPS_FOREIGN_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_FOREIGN (vips_foreign_get_type()) #define VIPS_FOREIGN( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FOREIGN, VipsForeign )) #define VIPS_FOREIGN_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FOREIGN, VipsForeignClass)) #define VIPS_IS_FOREIGN( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN )) #define VIPS_IS_FOREIGN_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN )) #define VIPS_FOREIGN_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FOREIGN, VipsForeignClass )) typedef struct _VipsForeign { VipsOperation parent_object; /*< public >*/ } VipsForeign; typedef struct _VipsForeignClass { VipsOperationClass parent_class; /*< public >*/ /* Loop over formats in this order, default 0. We need this because * some formats can be read by several loaders (eg. tiff can be read * by the libMagick loader as well as by the tiff loader), and we want * to make sure the better loader comes first. */ int priority; /* Null-terminated list of recommended suffixes, eg. ".tif", ".tiff". * This can be used by both load and save, so it's in the base class. */ const char **suffs; } VipsForeignClass; /* Don't put spaces around void here, it breaks gtk-doc. */ GType vips_foreign_get_type(void); /* Map over and find formats. This uses type introspection to loop over * subclasses of VipsForeign. */ void *vips_foreign_map( const char *base, VipsSListMap2Fn fn, void *a, void *b ); /* Image file load properties. * * Keep in sync with the deprecated VipsFormatFlags, we need to be able to * cast between them. */ typedef enum /*< flags >*/ { VIPS_FOREIGN_NONE = 0, /* No flags set */ VIPS_FOREIGN_PARTIAL = 1, /* Lazy read OK (eg. tiled tiff) */ VIPS_FOREIGN_BIGENDIAN = 2, /* Most-significant byte first */ VIPS_FOREIGN_SEQUENTIAL = 4, /* Top-to-bottom lazy read OK */ VIPS_FOREIGN_ALL = 7 /* All flags set */ } VipsForeignFlags; #define VIPS_TYPE_FOREIGN_LOAD (vips_foreign_load_get_type()) #define VIPS_FOREIGN_LOAD( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FOREIGN_LOAD, VipsForeignLoad )) #define VIPS_FOREIGN_LOAD_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FOREIGN_LOAD, VipsForeignLoadClass)) #define VIPS_IS_FOREIGN_LOAD( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN_LOAD )) #define VIPS_IS_FOREIGN_LOAD_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN_LOAD )) #define VIPS_FOREIGN_LOAD_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FOREIGN_LOAD, VipsForeignLoadClass )) typedef struct _VipsForeignLoad { VipsForeign parent_object; /*< private >*/ /* Set TRUE to force open via memory. */ gboolean memory; /* Type of access upstream wants and the loader must supply. */ VipsAccess access; /* Flags for this load operation. */ VipsForeignFlags flags; /* Stop load on first warning. */ gboolean fail; /* Deprecated and unused, just here for compat. */ gboolean sequential; /*< public >*/ /* The image we generate. This must be set by ->header(). */ VipsImage *out; /* The behind-the-scenes real image we decompress to. This can be a * disc file or a memory buffer. This must be set by ->load(). */ VipsImage *real; /* Set this to tag the operation as nocache. */ gboolean nocache; /* Deprecated: the memory option used to be called disc and default * TRUE. */ gboolean disc; /* Set if a start function fails. We want to prevent the other starts * from also triggering the load. */ gboolean error; } VipsForeignLoad; typedef struct _VipsForeignLoadClass { VipsForeignClass parent_class; /*< public >*/ /* Is a file in this format. * * This function should return %TRUE if the file contains an image of * this type. If you don't define this function, #VipsForeignLoad * will use @suffs instead. */ gboolean (*is_a)( const char *filename ); /* Is a buffer in this format. * * This function should return %TRUE if the buffer contains an image of * this type. */ gboolean (*is_a_buffer)( const void *data, size_t size ); /* Is a stream in this format. * * This function should return %TRUE if the stream contains an image of * this type. */ gboolean (*is_a_source)( VipsSource *source ); /* Get the flags from a filename. * * This function should examine the file and return a set * of flags. If you don't define it, vips will default to 0 (no flags * set). * * This method is necessary for vips7 compatibility. Don't define * it if you don't need vips7. */ VipsForeignFlags (*get_flags_filename)( const char *filename ); /* Get the flags for this load operation. Images can be loaded from * (for example) memory areas rather than files, so you can't just use * @get_flags_filename(). */ VipsForeignFlags (*get_flags)( VipsForeignLoad *load ); /* Do the minimum read we can. * * Set the header fields in @out from @filename. If you can read the * whole image as well with no performance cost (as with vipsload), * or if your loader does not support reading only the header, read * the entire image in this method and leave @load() NULL. * * @header() needs to set the dhint on the image .. otherwise you get * the default SMALLTILE. * * Return 0 for success, -1 for error, setting vips_error(). */ int (*header)( VipsForeignLoad *load ); /* Read the whole image into @real. The pixels will get copied to @out * later. * * You can omit this method if you define a @header() method which * loads the whole file. * * Return 0 for success, -1 for error, setting * vips_error(). */ int (*load)( VipsForeignLoad *load ); } VipsForeignLoadClass; /* Don't put spaces around void here, it breaks gtk-doc. */ GType vips_foreign_load_get_type(void); const char *vips_foreign_find_load( const char *filename ); const char *vips_foreign_find_load_buffer( const void *data, size_t size ); const char *vips_foreign_find_load_source( VipsSource *source ); VipsForeignFlags vips_foreign_flags( const char *loader, const char *filename ); gboolean vips_foreign_is_a( const char *loader, const char *filename ); gboolean vips_foreign_is_a_buffer( const char *loader, const void *data, size_t size ); gboolean vips_foreign_is_a_source( const char *loader, VipsSource *source ); void vips_foreign_load_invalidate( VipsImage *image ); #define VIPS_TYPE_FOREIGN_SAVE (vips_foreign_save_get_type()) #define VIPS_FOREIGN_SAVE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FOREIGN_SAVE, VipsForeignSave )) #define VIPS_FOREIGN_SAVE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FOREIGN_SAVE, VipsForeignSaveClass)) #define VIPS_IS_FOREIGN_SAVE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN_SAVE )) #define VIPS_IS_FOREIGN_SAVE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN_SAVE )) #define VIPS_FOREIGN_SAVE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FOREIGN_SAVE, VipsForeignSaveClass )) /** * VipsSaveable: * @VIPS_SAVEABLE_MONO: 1 band (eg. CSV) * @VIPS_SAVEABLE_RGB: 1 or 3 bands (eg. PPM) * @VIPS_SAVEABLE_RGBA: 1, 2, 3 or 4 bands (eg. PNG) * @VIPS_SAVEABLE_RGBA_ONLY: 3 or 4 bands (eg. WEBP) * @VIPS_SAVEABLE_RGB_CMYK: 1, 3 or 4 bands (eg. JPEG) * @VIPS_SAVEABLE_ANY: any number of bands (eg. TIFF) * * See also: #VipsForeignSave. */ typedef enum { VIPS_SAVEABLE_MONO, VIPS_SAVEABLE_RGB, VIPS_SAVEABLE_RGBA, VIPS_SAVEABLE_RGBA_ONLY, VIPS_SAVEABLE_RGB_CMYK, VIPS_SAVEABLE_ANY, VIPS_SAVEABLE_LAST } VipsSaveable; typedef struct _VipsForeignSave { VipsForeign parent_object; /* Don't attach metadata. */ gboolean strip; /* If flattening out alpha, the background colour to use. Default to * 0 (black). */ VipsArrayDouble *background; /* Set to non-zero to set the page size for multi-page save. */ int page_height; /*< public >*/ /* The image we are to save, as supplied by our caller. */ VipsImage *in; /* @in converted to a saveable format (eg. 8-bit RGB) according to the * instructions you give in the class fields below. * * This is the image you should actually write to the output. */ VipsImage *ready; } VipsForeignSave; typedef struct _VipsForeignSaveClass { VipsForeignClass parent_class; /*< public >*/ /* How this format treats bands. * * @saveable describes the bands that your saver can handle. For * example, PPM images can have 1 or 3 bands (mono or RGB), so it * uses #VIPS_SAVEABLE_RGB. */ VipsSaveable saveable; /* How this format treats band formats. * * @format_table describes the band formats that your saver can * handle. For each of the 10 #VipsBandFormat values, the array * should give the format your saver will accept. */ VipsBandFormat *format_table; /* The set of coding types this format can save. For example, jpeg can * only save NONE, so has NONE TRUE and RAD and LABQ FALSE. * * Default NONE TRUE, RAD and LABQ FALSE. */ gboolean coding[VIPS_CODING_LAST]; } VipsForeignSaveClass; /* Don't put spaces around void here, it breaks gtk-doc. */ GType vips_foreign_save_get_type(void); const char *vips_foreign_find_save( const char *filename ); gchar **vips_foreign_get_suffixes( void ); const char *vips_foreign_find_save_buffer( const char *suffix ); const char *vips_foreign_find_save_target( const char *suffix ); int vips_vipsload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_vipssave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_openslideload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_jpegload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_jpegload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_jpegsave_target( VipsImage *in, VipsTarget *target, ... ) __attribute__((sentinel)); int vips_jpegsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_jpegsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) __attribute__((sentinel)); int vips_jpegsave_mime( VipsImage *in, ... ) __attribute__((sentinel)); /** * VipsForeignWebpPreset: * @VIPS_FOREIGN_WEBP_PRESET_DEFAULT: default preset * @VIPS_FOREIGN_WEBP_PRESET_PICTURE: digital picture, like portrait, inner shot * @VIPS_FOREIGN_WEBP_PRESET_PHOTO: outdoor photograph, with natural lighting * @VIPS_FOREIGN_WEBP_PRESET_DRAWING: hand or line drawing, with high-contrast details * @VIPS_FOREIGN_WEBP_PRESET_ICON: small-sized colorful images * @VIPS_FOREIGN_WEBP_PRESET_TEXT: text-like * * Tune lossy encoder settings for different image types. */ typedef enum { VIPS_FOREIGN_WEBP_PRESET_DEFAULT, VIPS_FOREIGN_WEBP_PRESET_PICTURE, VIPS_FOREIGN_WEBP_PRESET_PHOTO, VIPS_FOREIGN_WEBP_PRESET_DRAWING, VIPS_FOREIGN_WEBP_PRESET_ICON, VIPS_FOREIGN_WEBP_PRESET_TEXT, VIPS_FOREIGN_WEBP_PRESET_LAST } VipsForeignWebpPreset; int vips_webpload_source( VipsSource *source, VipsImage **out, ... ) __attribute__((sentinel)); int vips_webpload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_webpload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_webpsave_target( VipsImage *in, VipsTarget *target, ... ) __attribute__((sentinel)); int vips_webpsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_webpsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) __attribute__((sentinel)); int vips_webpsave_mime( VipsImage *in, ... ) __attribute__((sentinel)); /** * VipsForeignTiffCompression: * @VIPS_FOREIGN_TIFF_COMPRESSION_NONE: no compression * @VIPS_FOREIGN_TIFF_COMPRESSION_JPEG: jpeg compression * @VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE: deflate (zip) compression * @VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS: packbits compression * @VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4: fax4 compression * @VIPS_FOREIGN_TIFF_COMPRESSION_LZW: LZW compression * @VIPS_FOREIGN_TIFF_COMPRESSION_WEBP: WEBP compression * @VIPS_FOREIGN_TIFF_COMPRESSION_ZSTD: ZSTD compression * * The compression types supported by the tiff writer. * * Use @Q to set the jpeg compression level, default 75. * * Use @prediction to set the lzw or deflate prediction, default none. * * Use @lossless to set WEBP lossless compression. * * Use @level to set webp and zstd compression level. */ typedef enum { VIPS_FOREIGN_TIFF_COMPRESSION_NONE, VIPS_FOREIGN_TIFF_COMPRESSION_JPEG, VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE, VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS, VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4, VIPS_FOREIGN_TIFF_COMPRESSION_LZW, VIPS_FOREIGN_TIFF_COMPRESSION_WEBP, VIPS_FOREIGN_TIFF_COMPRESSION_ZSTD, VIPS_FOREIGN_TIFF_COMPRESSION_LAST } VipsForeignTiffCompression; /** * VipsForeignTiffPredictor: * @VIPS_FOREIGN_TIFF_PREDICTOR_NONE: no prediction * @VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL: horizontal differencing * @VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT: float predictor * * The predictor can help deflate and lzw compression. The values are fixed by * the tiff library. */ typedef enum { VIPS_FOREIGN_TIFF_PREDICTOR_NONE = 1, VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL = 2, VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT = 3, VIPS_FOREIGN_TIFF_PREDICTOR_LAST } VipsForeignTiffPredictor; /** * VipsForeignTiffResunit: * @VIPS_FOREIGN_TIFF_RESUNIT_CM: use centimeters * @VIPS_FOREIGN_TIFF_RESUNIT_INCH: use inches * * Use inches or centimeters as the resolution unit for a tiff file. */ typedef enum { VIPS_FOREIGN_TIFF_RESUNIT_CM, VIPS_FOREIGN_TIFF_RESUNIT_INCH, VIPS_FOREIGN_TIFF_RESUNIT_LAST } VipsForeignTiffResunit; int vips_tiffload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_tiffload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_tiffload_source( VipsSource *source, VipsImage **out, ... ) __attribute__((sentinel)); int vips_tiffsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_tiffsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) __attribute__((sentinel)); int vips_openexrload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_fitsload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_fitssave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_analyzeload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rawload( const char *filename, VipsImage **out, int width, int height, int bands, ... ) __attribute__((sentinel)); int vips_rawsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_rawsave_fd( VipsImage *in, int fd, ... ) __attribute__((sentinel)); int vips_csvload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_csvsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_matrixload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_matrixsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_matrixprint( VipsImage *in, ... ) __attribute__((sentinel)); int vips_magickload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_magickload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_magicksave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_magicksave_buffer( VipsImage *in, void **buf, size_t *len, ... ) __attribute__((sentinel)); /** * VipsForeignPngFilter: * @VIPS_FOREIGN_PNG_FILTER_NONE: no filtering * @VIPS_FOREIGN_PNG_FILTER_SUB: difference to the left * @VIPS_FOREIGN_PNG_FILTER_UP: difference up * @VIPS_FOREIGN_PNG_FILTER_AVG: average of left and up * @VIPS_FOREIGN_PNG_FILTER_PAETH: pick best neighbor predictor automatically * @VIPS_FOREIGN_PNG_FILTER_ALL: adaptive * * http://www.w3.org/TR/PNG-Filters.html * The values mirror those of png.h in libpng. */ typedef enum /*< flags >*/ { VIPS_FOREIGN_PNG_FILTER_NONE = 0x08, VIPS_FOREIGN_PNG_FILTER_SUB = 0x10, VIPS_FOREIGN_PNG_FILTER_UP = 0x20, VIPS_FOREIGN_PNG_FILTER_AVG = 0x40, VIPS_FOREIGN_PNG_FILTER_PAETH = 0x80, VIPS_FOREIGN_PNG_FILTER_ALL = 0xF8 } VipsForeignPngFilter; int vips_pngload_source( VipsSource *source, VipsImage **out, ... ) __attribute__((sentinel)); int vips_pngload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_pngload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_pngsave_target( VipsImage *in, VipsTarget *target, ... ) __attribute__((sentinel)); int vips_pngsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_pngsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) __attribute__((sentinel)); int vips_ppmload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_ppmsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_matload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_radload_source( VipsSource *source, VipsImage **out, ... ) __attribute__((sentinel)); int vips_radload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_radload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_radsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_radsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) __attribute__((sentinel)); int vips_radsave_target( VipsImage *in, VipsTarget *target, ... ) __attribute__((sentinel)); int vips_pdfload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_pdfload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_svgload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_svgload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_gifload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_gifload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_heifload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_heifload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_heifsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_heifsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) __attribute__((sentinel)); int vips_niftiload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_niftisave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); /** * VipsForeignDzLayout: * @VIPS_FOREIGN_DZ_LAYOUT_DZ: use DeepZoom directory layout * @VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY: use Zoomify directory layout * @VIPS_FOREIGN_DZ_LAYOUT_GOOGLE: use Google maps directory layout * @VIPS_FOREIGN_DZ_LAYOUT_IIIF: use IIIF directory layout * * What directory layout and metadata standard to use. */ typedef enum { VIPS_FOREIGN_DZ_LAYOUT_DZ, VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY, VIPS_FOREIGN_DZ_LAYOUT_GOOGLE, VIPS_FOREIGN_DZ_LAYOUT_IIIF, VIPS_FOREIGN_DZ_LAYOUT_LAST } VipsForeignDzLayout; /** * VipsForeignDzDepth: * @VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL: create layers down to 1x1 pixel * @VIPS_FOREIGN_DZ_DEPTH_ONETILE: create layers down to 1x1 tile * @VIPS_FOREIGN_DZ_DEPTH_ONE: only create a single layer * * How many pyramid layers to create. */ typedef enum { VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL, VIPS_FOREIGN_DZ_DEPTH_ONETILE, VIPS_FOREIGN_DZ_DEPTH_ONE, VIPS_FOREIGN_DZ_DEPTH_LAST } VipsForeignDzDepth; /** * VipsForeignDzContainer: * @VIPS_FOREIGN_DZ_CONTAINER_FS: write tiles to the filesystem * @VIPS_FOREIGN_DZ_CONTAINER_ZIP: write tiles to a zip file * @VIPS_FOREIGN_DZ_CONTAINER_SZI: write to a szi file * * How many pyramid layers to create. */ typedef enum { VIPS_FOREIGN_DZ_CONTAINER_FS, VIPS_FOREIGN_DZ_CONTAINER_ZIP, VIPS_FOREIGN_DZ_CONTAINER_SZI, VIPS_FOREIGN_DZ_CONTAINER_LAST } VipsForeignDzContainer; int vips_dzsave( VipsImage *in, const char *name, ... ) __attribute__((sentinel)); /** * VipsForeignHeifCompression: * @VIPS_FOREIGN_HEIF_COMPRESSION_HEVC: x265 * @VIPS_FOREIGN_HEIF_COMPRESSION_AVC: x264 * @VIPS_FOREIGN_HEIF_COMPRESSION_JPEG: jpeg * @VIPS_FOREIGN_HEIF_COMPRESSION_AV1: aom * * The compression format to use inside a HEIF container. * * This is assumed to use the same numbering as %heif_compression_format. */ typedef enum { VIPS_FOREIGN_HEIF_COMPRESSION_HEVC = 1, VIPS_FOREIGN_HEIF_COMPRESSION_AVC = 2, VIPS_FOREIGN_HEIF_COMPRESSION_JPEG = 3, VIPS_FOREIGN_HEIF_COMPRESSION_AV1 = 4, VIPS_FOREIGN_HEIF_COMPRESSION_LAST } VipsForeignHeifCompression; #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_FOREIGN_H*/ libvips-8.9.1/libvips/include/vips/format.h000066400000000000000000000126171361153320700207260ustar00rootroot00000000000000/* Base type for supported image formats. Subclass this to add a new * format. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_FORMAT_H #define IM_FORMAT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_FORMAT (vips_format_get_type()) #define VIPS_FORMAT( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FORMAT, VipsFormat )) #define VIPS_FORMAT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FORMAT, VipsFormatClass)) #define VIPS_IS_FORMAT( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FORMAT )) #define VIPS_IS_FORMAT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FORMAT )) #define VIPS_FORMAT_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FORMAT, VipsFormatClass )) /* Image file properties. */ typedef enum { VIPS_FORMAT_NONE = 0, /* No flags set */ VIPS_FORMAT_PARTIAL = 1, /* Lazy read OK (eg. tiled tiff) */ VIPS_FORMAT_BIGENDIAN = 2 /* Most-significant byte first */ } VipsFormatFlags; /* Don't instantiate these things, just use the class stuff. */ typedef struct _VipsFormat { VipsObject parent_object; /*< public >*/ } VipsFormat; typedef struct _VipsFormatClass { VipsObjectClass parent_class; /*< public >*/ /* Is a file in this format. */ gboolean (*is_a)( const char * ); /* Read just the header into the VipsImage. */ int (*header)( const char *, VipsImage * ); /* Load the whole image. */ int (*load)( const char *, VipsImage * ); /* Write the VipsImage to the file in this format. */ int (*save)( VipsImage *, const char * ); /* Get the flags for this file in this format. */ VipsFormatFlags (*get_flags)( const char * ); /* Loop over formats in this order, default 0. We need this because * some formats can be read by several loaders (eg. tiff can be read * by the libMagick loader as well as by the tiff loader), and we want * to make sure the better loader comes first. */ int priority; /* Null-terminated list of allowed suffixes, eg. ".tif", ".tiff". */ const char **suffs; } VipsFormatClass; GType vips_format_get_type( void ); /* Map over and find formats. This uses type introspection to loop over * subclasses of VipsFormat. */ void *vips_format_map( VipsSListMap2Fn fn, void *a, void *b ); VipsFormatClass *vips_format_for_file( const char *filename ); VipsFormatClass *vips_format_for_name( const char *filename ); VipsFormatFlags vips_format_get_flags( VipsFormatClass *format, const char *filename ); /* Read/write an image convenience functions. */ int vips_format_read( const char *filename, VipsImage *out ); int vips_format_write( VipsImage *in, const char *filename ); /* Low-level read/write operations. */ int im_jpeg2vips( const char *filename, VipsImage *out ); int im_bufjpeg2vips( void *buf, size_t len, VipsImage *out, gboolean header_only ); int im_vips2jpeg( VipsImage *in, const char *filename ); int im_vips2mimejpeg( VipsImage *in, int qfac ); int im_vips2bufjpeg( VipsImage *in, VipsImage *out, int qfac, char **obuf, int *olen ); int im_tiff2vips( const char *filename, VipsImage *out ); int im_vips2tiff( VipsImage *in, const char *filename ); int im_tile_cache( VipsImage *in, VipsImage *out, int tile_width, int tile_height, int max_tiles ); int im_magick2vips( const char *filename, VipsImage *out ); int im_bufmagick2vips( void *buf, size_t len, VipsImage *out, gboolean header_only ); int im_exr2vips( const char *filename, VipsImage *out ); int im_ppm2vips( const char *filename, VipsImage *out ); int im_vips2ppm( VipsImage *in, const char *filename ); int im_analyze2vips( const char *filename, VipsImage *out ); int im_csv2vips( const char *filename, VipsImage *out ); int im_vips2csv( VipsImage *in, const char *filename ); int im_png2vips( const char *filename, VipsImage *out ); int im_vips2png( VipsImage *in, const char *filename ); int im_vips2bufpng( VipsImage *in, VipsImage *out, int compression, int interlace, char **obuf, size_t *olen ); int im_webp2vips( const char *filename, VipsImage *out ); int im_vips2webp( VipsImage *in, const char *filename ); int im_raw2vips( const char *filename, VipsImage *out, int width, int height, int bpp, int offset ); int im_vips2raw( VipsImage *in, int fd ); int im_mat2vips( const char *filename, VipsImage *out ); int im_rad2vips( const char *filename, VipsImage *out ); int im_vips2rad( VipsImage *in, const char *filename ); int im_fits2vips( const char *filename, VipsImage *out ); int im_vips2fits( VipsImage *in, const char *filename ); int im_vips2dz( VipsImage *in, const char *filename ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_FORMAT_H*/ libvips-8.9.1/libvips/include/vips/freqfilt.h000066400000000000000000000030311361153320700212400ustar00rootroot00000000000000/* freq_filt.h * * 2/11/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_FREQFILT_H #define VIPS_FREQFILT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips_fwfft( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_invfft( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_freqmult( VipsImage *in, VipsImage *mask, VipsImage **out, ... ) __attribute__((sentinel)); int vips_spectrum( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_phasecor( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_FREQFILT_H*/ libvips-8.9.1/libvips/include/vips/gate.h000066400000000000000000000037541361153320700203600ustar00rootroot00000000000000/* Thread profiling. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_GATE_H #define VIPS_GATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_GATE_START( NAME ) \ G_STMT_START { \ if( vips__thread_profile ) \ vips__thread_gate_start( NAME ); \ } G_STMT_END #define VIPS_GATE_STOP( NAME ) \ G_STMT_START { \ if( vips__thread_profile ) \ vips__thread_gate_stop( NAME ); \ } G_STMT_END #define VIPS_GATE_MALLOC( SIZE ) \ G_STMT_START { \ if( vips__thread_profile ) \ vips__thread_malloc_free( (gint64) (SIZE) ); \ } G_STMT_END #define VIPS_GATE_FREE( SIZE ) \ G_STMT_START { \ if( vips__thread_profile ) \ vips__thread_malloc_free( -((gint64) (SIZE)) ); \ } G_STMT_END extern gboolean vips__thread_profile; void vips_profile_set( gboolean profile ); void vips__thread_profile_attach( const char *thread_name ); void vips__thread_profile_detach( void ); void vips__thread_profile_stop( void ); void vips__thread_gate_start( const char *gate_name ); void vips__thread_gate_stop( const char *gate_name ); void vips__thread_malloc_free( gint64 size ); #endif /*VIPS_GATE_H*/ #ifdef __cplusplus } #endif /*__cplusplus*/ libvips-8.9.1/libvips/include/vips/generate.h000066400000000000000000000046271361153320700212320ustar00rootroot00000000000000/* Generate pixels. * * J.Cupitt, 8/4/93 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_GENERATE_H #define VIPS_GENERATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef int (*VipsRegionWrite)( VipsRegion *region, VipsRect *area, void *a ); int vips_sink_disc( VipsImage *im, VipsRegionWrite write_fn, void *a ); int vips_sink( VipsImage *im, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ); int vips_sink_tile( VipsImage *im, int tile_width, int tile_height, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ); typedef void (*VipsSinkNotify)( VipsImage *im, VipsRect *rect, void *a ); int vips_sink_screen( VipsImage *in, VipsImage *out, VipsImage *mask, int tile_width, int tile_height, int max_tiles, int priority, VipsSinkNotify notify_fn, void *a ); int vips_sink_memory( VipsImage *im ); void *vips_start_one( VipsImage *out, void *a, void *b ); int vips_stop_one( void *seq, void *a, void *b ); void *vips_start_many( VipsImage *out, void *a, void *b ); int vips_stop_many( void *seq, void *a, void *b ); VipsImage **vips_allocate_input_array( VipsImage *out, ... ) __attribute__((sentinel)); int vips_image_generate( VipsImage *image, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ); int vips_image_pipeline_array( VipsImage *image, VipsDemandStyle hint, VipsImage **in ); int vips_image_pipelinev( VipsImage *image, VipsDemandStyle hint, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_GENERATE_H*/ libvips-8.9.1/libvips/include/vips/header.h000066400000000000000000000177531361153320700206740ustar00rootroot00000000000000/* image header funcs * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_HEADER_H #define VIPS_HEADER_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /** * VIPS_META_EXIF_NAME: * * The name that JPEG read and write operations use for the image's EXIF data. */ #define VIPS_META_EXIF_NAME "exif-data" /** * VIPS_META_XMP_NAME: * * The name that read and write operations use for the image's XMP data. */ #define VIPS_META_XMP_NAME "xmp-data" /** * VIPS_META_IPTC_NAME: * * The name that read and write operations use for the image's IPTC data. */ #define VIPS_META_IPTC_NAME "iptc-data" /** * VIPS_META_PHOTOSHOP_NAME: * * The name that TIFF read and write operations use for the image's * TIFFTAG_PHOTOSHOP data. */ #define VIPS_META_PHOTOSHOP_NAME "photoshop-data" /** * VIPS_META_ICC_NAME: * * The name we use to attach an ICC profile. The file read and write * operations for TIFF, JPEG, PNG and others use this item of metadata to * attach and save ICC profiles. The profile is updated by the * vips_icc_transform() operations. */ #define VIPS_META_ICC_NAME "icc-profile-data" /** * VIPS_META_IMAGEDESCRIPTION: * * The IMAGEDESCRIPTION tag. Often has useful metadata. */ #define VIPS_META_IMAGEDESCRIPTION "image-description" /** * VIPS_META_RESOLUTION_UNIT: * * The JPEG and TIFF read and write operations use this to record the * file's preferred unit for resolution. */ #define VIPS_META_RESOLUTION_UNIT "resolution-unit" /** * VIPS_META_LOADER: * * Record the name of the original loader here. Handy for hinting file formats * and for debugging. */ #define VIPS_META_LOADER "vips-loader" /** * VIPS_META_SEQUENTIAL: * * Images loaded via vips_sequential() have this int field defined. Some * operations (eg. vips_shrinkv()) add extra caches if they see it on their * input. */ #define VIPS_META_SEQUENTIAL "vips-sequential" /** * VIPS_META_ORIENTATION: * * The orientation tag for this image. An int from 1 - 8 using the standard * exif/tiff meanings. * * * 1 - The 0th row represents the visual top of the image, and the 0th column * represents the visual left-hand side. * * 2 - The 0th row represents the visual top of the image, and the 0th column * represents the visual right-hand side. * * 3 - The 0th row represents the visual bottom of the image, and the 0th * column represents the visual right-hand side. * * 4 - The 0th row represents the visual bottom of the image, and the 0th * column represents the visual left-hand side. * * 5 - The 0th row represents the visual left-hand side of the image, and the * 0th column represents the visual top. * * 6 - The 0th row represents the visual right-hand side of the image, and the * 0th column represents the visual top. * * 7 - The 0th row represents the visual right-hand side of the image, and the * 0th column represents the visual bottom. * * 8 - The 0th row represents the visual left-hand side of the image, and the * 0th column represents the visual bottom. */ #define VIPS_META_ORIENTATION "orientation" /** * VIPS_META_PAGE_HEIGHT: * * If set, the height of each page when this image was loaded. If you save an * image with "page-height" set to a format that supports multiple pages, such * as tiff, the image will be saved as a series of pages. */ #define VIPS_META_PAGE_HEIGHT "page-height" /** * VIPS_META_N_PAGES: * * If set, the number of pages in the original file. */ #define VIPS_META_N_PAGES "n-pages" guint64 vips_format_sizeof( VipsBandFormat format ); guint64 vips_format_sizeof_unsafe( VipsBandFormat format ); int vips_image_get_width( const VipsImage *image ); int vips_image_get_height( const VipsImage *image ); int vips_image_get_bands( const VipsImage *image ); VipsBandFormat vips_image_get_format( const VipsImage *image ); VipsBandFormat vips_image_guess_format( const VipsImage *image ); VipsCoding vips_image_get_coding( const VipsImage *image ); VipsInterpretation vips_image_get_interpretation( const VipsImage *image ); VipsInterpretation vips_image_guess_interpretation( const VipsImage *image ); double vips_image_get_xres( const VipsImage *image ); double vips_image_get_yres( const VipsImage *image ); int vips_image_get_xoffset( const VipsImage *image ); int vips_image_get_yoffset( const VipsImage *image ); const char *vips_image_get_filename( const VipsImage *image ); const char *vips_image_get_mode( const VipsImage *image ); double vips_image_get_scale( const VipsImage *image ); double vips_image_get_offset( const VipsImage *image ); int vips_image_get_page_height( VipsImage *image ); int vips_image_get_n_pages( VipsImage *image ); const void *vips_image_get_data( VipsImage *image ); void vips_image_init_fields( VipsImage *image, int xsize, int ysize, int bands, VipsBandFormat format, VipsCoding coding, VipsInterpretation interpretation, double xres, double yres ); void vips_image_set( VipsImage *image, const char *name, GValue *value ); int vips_image_get( const VipsImage *image, const char *name, GValue *value_copy ); int vips_image_get_as_string( const VipsImage *image, const char *name, char **out ); GType vips_image_get_typeof( const VipsImage *image, const char *name ); gboolean vips_image_remove( VipsImage *image, const char *name ); typedef void *(*VipsImageMapFn)( VipsImage *image, const char *name, GValue *value, void *a ); void *vips_image_map( VipsImage *image, VipsImageMapFn fn, void *a ); gchar **vips_image_get_fields( VipsImage *image ); void vips_image_set_area( VipsImage *image, const char *name, VipsCallbackFn free_fn, void *data ); int vips_image_get_area( const VipsImage *image, const char *name, const void **data ); void vips_image_set_blob( VipsImage *image, const char *name, VipsCallbackFn free_fn, const void *data, size_t length ); void vips_image_set_blob_copy( VipsImage *image, const char *name, const void *data, size_t length ); int vips_image_get_blob( const VipsImage *image, const char *name, const void **data, size_t *length ); int vips_image_get_int( const VipsImage *image, const char *name, int *out ); void vips_image_set_int( VipsImage *image, const char *name, int i ); int vips_image_get_double( const VipsImage *image, const char *name, double *out ); void vips_image_set_double( VipsImage *image, const char *name, double d ); int vips_image_get_string( const VipsImage *image, const char *name, const char **out ); void vips_image_set_string( VipsImage *image, const char *name, const char *str ); void vips_image_print_field( const VipsImage *image, const char *field ); int vips_image_get_image( const VipsImage *image, const char *name, VipsImage **out ); void vips_image_set_image( VipsImage *image, const char *name, VipsImage *im ); void vips_image_set_array_int( VipsImage *image, const char *name, const int *array, int n ); int vips_image_get_array_int( VipsImage *image, const char *name, int **out, int *n ); int vips_image_history_printf( VipsImage *image, const char *format, ... ) __attribute__((format(printf, 2, 3))); int vips_image_history_args( VipsImage *image, const char *name, int argc, char *argv[] ); const char *vips_image_get_history( VipsImage *image ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_HEADER_H*/ libvips-8.9.1/libvips/include/vips/histogram.h000066400000000000000000000043231361153320700214260ustar00rootroot00000000000000/* histograms_lut.h * * 3/11/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_HISTOGRAM_H #define VIPS_HISTOGRAM_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips_maplut( VipsImage *in, VipsImage **out, VipsImage *lut, ... ) __attribute__((sentinel)); int vips_percent( VipsImage *in, double percent, int *threshold, ... ) __attribute__((sentinel)); int vips_stdif( VipsImage *in, VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_hist_cum( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_norm( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_equal( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_plot( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_match( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_local( VipsImage *in, VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_hist_ismonotonic( VipsImage *in, gboolean *out, ... ) __attribute__((sentinel)); int vips_hist_entropy( VipsImage *in, double *out, ... ) __attribute__((sentinel)); int vips_case( VipsImage *index, VipsImage **cases, VipsImage **out, int n, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_HISTOGRAM_H*/ libvips-8.9.1/libvips/include/vips/image.h000066400000000000000000000413531361153320700205170ustar00rootroot00000000000000/* VIPS image class. * * 7/7/09 * - from vips.h * 2/3/11 * - move to GObject */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_IMAGE_H #define VIPS_IMAGE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* If you read MSB first, you get these two values. * intel order: byte 0 = b6 * SPARC order: byte 0 = 08 */ #define VIPS_MAGIC_INTEL (0xb6a6f208U) #define VIPS_MAGIC_SPARC (0x08f2a6b6U) /* We have a maximum value for a coordinate at various points for sanity * checking. For example, vips_black() has a max with and height. We use int * for width/height so we could go up to 2bn, but it's good to have a lower * value set so we can see crazy numbers early. * * This was 1m for a while, but someone found a use for a 4m wide image. */ #define VIPS_MAX_COORD (10000000) typedef enum { VIPS_DEMAND_STYLE_ERROR = -1, VIPS_DEMAND_STYLE_SMALLTILE, VIPS_DEMAND_STYLE_FATSTRIP, VIPS_DEMAND_STYLE_THINSTRIP, VIPS_DEMAND_STYLE_ANY } VipsDemandStyle; /* Types of image descriptor we may have. The type field is advisory only: it * does not imply that any fields in IMAGE have valid data. */ typedef enum { VIPS_IMAGE_ERROR = -1, VIPS_IMAGE_NONE, /* no type set */ VIPS_IMAGE_SETBUF, /* malloced memory array */ VIPS_IMAGE_SETBUF_FOREIGN, /* memory array, don't free on close */ VIPS_IMAGE_OPENIN, /* input from fd with a window */ VIPS_IMAGE_MMAPIN, /* memory mapped input file */ VIPS_IMAGE_MMAPINRW, /* memory mapped read/write file */ VIPS_IMAGE_OPENOUT, /* output to fd */ VIPS_IMAGE_PARTIAL /* partial image */ } VipsImageType; typedef enum { VIPS_INTERPRETATION_ERROR = -1, VIPS_INTERPRETATION_MULTIBAND = 0, VIPS_INTERPRETATION_B_W = 1, VIPS_INTERPRETATION_HISTOGRAM = 10, VIPS_INTERPRETATION_XYZ = 12, VIPS_INTERPRETATION_LAB = 13, VIPS_INTERPRETATION_CMYK = 15, VIPS_INTERPRETATION_LABQ = 16, VIPS_INTERPRETATION_RGB = 17, VIPS_INTERPRETATION_CMC = 18, VIPS_INTERPRETATION_LCH = 19, VIPS_INTERPRETATION_LABS = 21, VIPS_INTERPRETATION_sRGB = 22, VIPS_INTERPRETATION_YXY = 23, VIPS_INTERPRETATION_FOURIER = 24, VIPS_INTERPRETATION_RGB16 = 25, VIPS_INTERPRETATION_GREY16 = 26, VIPS_INTERPRETATION_MATRIX = 27, VIPS_INTERPRETATION_scRGB = 28, VIPS_INTERPRETATION_HSV = 29, VIPS_INTERPRETATION_LAST = 30 } VipsInterpretation; typedef enum { VIPS_FORMAT_NOTSET = -1, VIPS_FORMAT_UCHAR = 0, VIPS_FORMAT_CHAR = 1, VIPS_FORMAT_USHORT = 2, VIPS_FORMAT_SHORT = 3, VIPS_FORMAT_UINT = 4, VIPS_FORMAT_INT = 5, VIPS_FORMAT_FLOAT = 6, VIPS_FORMAT_COMPLEX = 7, VIPS_FORMAT_DOUBLE = 8, VIPS_FORMAT_DPCOMPLEX = 9, VIPS_FORMAT_LAST = 10 } VipsBandFormat; typedef enum { VIPS_CODING_ERROR = -1, VIPS_CODING_NONE = 0, VIPS_CODING_LABQ = 2, VIPS_CODING_RAD = 6, VIPS_CODING_LAST = 7 } VipsCoding; typedef enum { VIPS_ACCESS_RANDOM, VIPS_ACCESS_SEQUENTIAL, VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, VIPS_ACCESS_LAST } VipsAccess; typedef void *(*VipsStartFn)( struct _VipsImage *out, void *a, void *b ); typedef int (*VipsGenerateFn)( struct _VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ); typedef int (*VipsStopFn)( void *seq, void *a, void *b ); /* Struct we keep a record of execution time in. Passed to eval signal so * it can assess progress. */ typedef struct _VipsProgress { /*< private >*/ struct _VipsImage *im; /* Image we are part of */ /*< public >*/ int run; /* Time we have been running */ int eta; /* Estimated seconds of computation left */ gint64 tpels; /* Number of pels we expect to calculate */ gint64 npels; /* Number of pels calculated so far */ int percent; /* Percent complete */ GTimer *start; /* Start time */ } VipsProgress; #define VIPS_TYPE_IMAGE (vips_image_get_type()) #define VIPS_IMAGE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_IMAGE, VipsImage )) #define VIPS_IMAGE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_IMAGE, VipsImageClass)) #define VIPS_IS_IMAGE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_IMAGE )) #define VIPS_IS_IMAGE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_IMAGE )) #define VIPS_IMAGE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_IMAGE, VipsImageClass )) typedef struct _VipsImage { VipsObject parent_instance; /*< private >*/ /* We have to keep these names for compatibility with the old API. * Don't use them though, use vips_image_get_width() and friends. */ int Xsize; /* image width, in pixels */ int Ysize; /* image height, in pixels */ int Bands; /* number of image bands */ VipsBandFormat BandFmt; /* pixel format */ VipsCoding Coding; /* pixel coding */ VipsInterpretation Type;/* pixel interpretation */ double Xres; /* horizontal pixels per millimetre */ double Yres; /* vertical pixels per millimetre */ int Xoffset; /* image origin hint */ int Yoffset; /* image origin hint */ /* No longer used, the names are here for compat with very, very old * code. */ int Length; short Compression; short Level; int Bbits; /* was number of bits in this format */ /* Old code expects to see this member, newer code has a param on * eval(). */ VipsProgress *time; /* Derived fields that some code can fiddle with. New code should use * vips_image_get_history() and friends. */ char *Hist; /* don't use, see vips_image_get_history() */ char *filename; /* pointer to copy of filename */ VipsPel *data; /* start of image data for WIO */ int kill; /* set to non-zero to block eval */ /* Everything below this private and only used internally by * VipsImage. */ /* During vips image read and write we need temporary float-sized * fields in the struct for staging xres/yres. Don't use these any * other time. */ float Xres_float; float Yres_float; char *mode; /* mode string passed to _new() */ VipsImageType dtype; /* descriptor type */ int fd; /* file descriptor */ void *baseaddr; /* pointer to the start of an mmap file */ size_t length; /* size of mmap area */ guint32 magic; /* magic from header, endian-ness of image */ /* Partial image stuff. All these fields are initialised * to NULL and ignored unless set by vips_image_generate() etc. */ VipsStartFn start_fn; VipsGenerateFn generate_fn; VipsStopFn stop_fn; void *client1; /* user arguments */ void *client2; GMutex *sslock; /* start-stop lock */ GSList *regions; /* list of regions current for this image */ VipsDemandStyle dhint; /* demand style hint */ /* Extra user-defined fields ... see vips_image_get() etc. */ GHashTable *meta; /* GhashTable of GValue */ GSList *meta_traverse; /* traverse order for Meta */ /* Part of mmap() read ... the sizeof() the header we skip from the * file start. Usually VIPS_SIZEOF_HEADER, but can be something else * for binary file read. * * guint64 so that we can guarantee to work even on systems with * strange ideas about large files. */ gint64 sizeof_header; /* If this is a large disc image, don't map the whole thing, instead * have a set of windows shared between the regions active on the * image. List of VipsWindow. */ GSList *windows; /* Upstream/downstream relationships, built from args to * vips_demand_hint(). * * We use these to invalidate downstream pixel buffers. * Use 'serial' to spot circular dependencies. * * See also hint_set below. */ GSList *upstream; GSList *downstream; int serial; /* Keep a list of recounted GValue strings so we can share hist * efficiently. */ GSList *history_list; /* The VipsImage (if any) we should signal eval progress on. */ struct _VipsImage *progress_signal; /* Record the file length here. We use this to stop ourselves mapping * things beyond the end of the file in the case that the file has * been truncated. * * gint64 so that we can guarantee to work even on systems with * strange ideas about large files. */ gint64 file_length; /* Set this when vips_demand_hint_array() is called, and check in any * operation that will demand pixels from the image. * * We use vips_demand_hint_array() to build the tree of * upstream/downstream relationships, so it's a mandatory thing. */ gboolean hint_set; /* Delete-on-close is hard to do with signals and callbacks since we * really need to do this in finalize after the fd has been closed, * but you can't emit signals then. * * Also keep a private copy of the filename string to be deleted, * since image->filename will be freed in _dispose(). */ gboolean delete_on_close; char *delete_on_close_filename; } VipsImage; typedef struct _VipsImageClass { VipsObjectClass parent_class; /* Signals we emit. */ /* Evaluation is starting. */ void (*preeval)( VipsImage *image, VipsProgress *progress ); /* Evaluation progress. */ void (*eval)( VipsImage *image, VipsProgress *progress ); /* Evaluation is ending. */ void (*posteval)( VipsImage *image, VipsProgress *progress ); /* An image has been written to. * Used by eg. vips_image_new_mode("x.jpg", "w") to do the * final write to jpeg. * Set *result to non-zero to indicate an error on write. */ void (*written)( VipsImage *image, int *result ); /* An image has been modified in some way and all caches * need dropping. */ void (*invalidate)( VipsImage *image ); /* Minimise this pipeline. * * This is triggered (sometimes) at the end of eval to signal that * we're probably done and that operations involved should try to * minimise memory use by, for example, dropping caches. * * See vips_tilecache(). */ void (*minimise)( VipsImage *image ); } VipsImageClass; /* Don't put spaces around void here, it breaks gtk-doc. */ GType vips_image_get_type(void); /* Has to be guint64 and not size_t/off_t since we have to be able to address * huge images on platforms with 32-bit files. */ /* Pixel address calculation macros. */ #define VIPS_IMAGE_SIZEOF_ELEMENT( I ) \ (vips_format_sizeof_unsafe((I)->BandFmt)) #define VIPS_IMAGE_SIZEOF_PEL( I ) \ (VIPS_IMAGE_SIZEOF_ELEMENT( I ) * (I)->Bands) #define VIPS_IMAGE_SIZEOF_LINE( I ) \ (VIPS_IMAGE_SIZEOF_PEL( I ) * (I)->Xsize) #define VIPS_IMAGE_SIZEOF_IMAGE( I ) \ (VIPS_IMAGE_SIZEOF_LINE( I ) * (I)->Ysize) #define VIPS_IMAGE_N_ELEMENTS( I ) \ ((I)->Bands * (I)->Xsize) #define VIPS_IMAGE_N_PELS( I ) \ ((guint64) (I)->Xsize * (I)->Ysize) /* If VIPS_DEBUG is defined, add bounds checking. */ #ifdef VIPS_DEBUG #define VIPS_IMAGE_ADDR( I, X, Y ) \ ( ((X) >= 0 && (X) < VIPS_IMAGE( I )->Xsize && \ (Y) >= 0 && (Y) < VIPS_IMAGE( I )->Ysize && \ VIPS_IMAGE( I )->data) ? \ (VIPS_IMAGE( I )->data + \ (Y) * VIPS_IMAGE_SIZEOF_LINE( I ) + \ (X) * VIPS_IMAGE_SIZEOF_PEL( I )) : \ (fprintf( stderr, \ "VIPS_IMAGE_ADDR: point out of bounds, " \ "file \"%s\", line %d\n" \ "(point x=%d, y=%d\n" \ " should have been within VipsRect left=%d, top=%d, " \ "width=%d, height=%d)\n", \ __FILE__, __LINE__, \ (X), (Y), \ 0, 0, \ VIPS_IMAGE( I )->Xsize, \ VIPS_IMAGE( I )->Ysize ), (VipsPel *) NULL) \ ) #else /*!VIPS_DEBUG*/ #define VIPS_IMAGE_ADDR( I, X, Y ) \ ((I)->data + \ (Y) * VIPS_IMAGE_SIZEOF_LINE( I ) + \ (X) * VIPS_IMAGE_SIZEOF_PEL( I )) #endif /*VIPS_DEBUG*/ #ifdef VIPS_DEBUG #define VIPS_MATRIX( I, X, Y ) \ ((VIPS_IMAGE( I )->BandFmt == VIPS_FORMAT_DOUBLE && \ VIPS_IMAGE( I )->Bands == 1) ? \ ((double *) VIPS_IMAGE_ADDR( I, X, Y )) : \ (fprintf( stderr, "VIPS_MATRIX: not a matrix image\n" ), \ (double *) NULL)) #else /*!VIPS_DEBUG*/ #define VIPS_MATRIX( I, X, Y ) \ ((double *) VIPS_IMAGE_ADDR( I, X, Y )) #endif /*VIPS_DEBUG*/ void vips_progress_set( gboolean progress ); void vips_image_invalidate_all( VipsImage *image ); void vips_image_minimise_all( VipsImage *image ); gboolean vips_image_is_sequential( VipsImage *image ); void vips_image_set_progress( VipsImage *image, gboolean progress ); gboolean vips_image_iskilled( VipsImage *image ); void vips_image_set_kill( VipsImage *image, gboolean kill ); char *vips_filename_get_filename( const char *vips_filename ); char *vips_filename_get_options( const char *vips_filename ); VipsImage *vips_image_new( void ); VipsImage *vips_image_new_memory( void ); VipsImage *vips_image_memory( void ); VipsImage *vips_image_new_from_file( const char *name, ... ) __attribute__((sentinel)); VipsImage *vips_image_new_from_file_RW( const char *filename ); VipsImage *vips_image_new_from_file_raw( const char *filename, int xsize, int ysize, int bands, guint64 offset ); VipsImage *vips_image_new_from_memory( const void *data, size_t size, int width, int height, int bands, VipsBandFormat format ); VipsImage *vips_image_new_from_memory_copy( const void *data, size_t size, int width, int height, int bands, VipsBandFormat format ); VipsImage *vips_image_new_from_buffer( const void *buf, size_t len, const char *option_string, ... ) __attribute__((sentinel)); VipsImage *vips_image_new_from_source( VipsSource *source, const char *option_string, ... ) __attribute__((sentinel)); VipsImage *vips_image_new_matrix( int width, int height ); VipsImage *vips_image_new_matrixv( int width, int height, ... ); VipsImage *vips_image_new_matrix_from_array( int width, int height, const double *array, int size ); VipsImage *vips_image_matrix_from_array( int width, int height, const double *array, int size ); VipsImage *vips_image_new_from_image( VipsImage *image, const double *c, int n ); VipsImage *vips_image_new_from_image1( VipsImage *image, double c ); void vips_image_set_delete_on_close( VipsImage *image, gboolean delete_on_close ); guint64 vips_get_disc_threshold( void ); VipsImage *vips_image_new_temp_file( const char *format ); int vips_image_write( VipsImage *image, VipsImage *out ); int vips_image_write_to_file( VipsImage *image, const char *name, ... ) __attribute__((sentinel)); int vips_image_write_to_buffer( VipsImage *in, const char *suffix, void **buf, size_t *size, ... ) __attribute__((sentinel)); int vips_image_write_to_target( VipsImage *in, const char *suffix, VipsTarget *target, ... ) __attribute__((sentinel)); void *vips_image_write_to_memory( VipsImage *in, size_t *size ); int vips_image_decode_predict( VipsImage *in, int *bands, VipsBandFormat *format ); int vips_image_decode( VipsImage *in, VipsImage **out ); int vips_image_encode( VipsImage *in, VipsImage **out, VipsCoding coding ); gboolean vips_image_isMSBfirst( VipsImage *image ); gboolean vips_image_isfile( VipsImage *image ); gboolean vips_image_ispartial( VipsImage *image ); gboolean vips_image_hasalpha( VipsImage *image ); VipsImage *vips_image_copy_memory( VipsImage *image ); int vips_image_wio_input( VipsImage *image ); int vips_image_pio_input( VipsImage *image ); int vips_image_pio_output( VipsImage *image ); int vips_image_inplace( VipsImage *image ); int vips_image_write_prepare( VipsImage *image ); int vips_image_write_line( VipsImage *image, int ypos, VipsPel *linebuffer ); gboolean vips_band_format_isint( VipsBandFormat format ); gboolean vips_band_format_isuint( VipsBandFormat format ); gboolean vips_band_format_is8bit( VipsBandFormat format ); gboolean vips_band_format_isfloat( VipsBandFormat format ); gboolean vips_band_format_iscomplex( VipsBandFormat format ); int vips_system( const char *cmd_format, ... ) __attribute__((sentinel)); /* Defined in type.c but declared here, since they use VipsImage. */ VipsArrayImage *vips_array_image_new( VipsImage **array, int n ); VipsArrayImage *vips_array_image_newv( int n, ... ); VipsArrayImage *vips_array_image_new_from_string( const char *string, VipsAccess flags ); VipsArrayImage *vips_array_image_empty( void ); VipsArrayImage *vips_array_image_append( VipsArrayImage *array, VipsImage *image ); VipsImage **vips_array_image_get( VipsArrayImage *array, int *n ); VipsImage **vips_value_get_array_image( const GValue *value, int *n ); void vips_value_set_array_image( GValue *value, int n ); /* Defined in reorder.c, but really a function on image. */ int vips_reorder_prepare_many( VipsImage *image, struct _VipsRegion **regions, VipsRect *r ); void vips_reorder_margin_hint( VipsImage *image, int margin ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_IMAGE_H*/ libvips-8.9.1/libvips/include/vips/inlines.h000066400000000000000000000027651361153320700211020ustar00rootroot00000000000000/* Inline maths functions if they are missing from libm */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_INLINE_H #define VIPS_INLINE_H /* glib promises to define inline in a portable way */ #include #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #ifdef HAVE_HYPOT #define vips__hypot hypot #else /* HAVE_HYPOT */ static inline double vips__hypot( double a, double b ) { double ta = fabs( a ); double tb = fabs( b ); if( ta > tb ) { tb = b / a; return( ta * sqrt( 1.0 + tb * tb ) ); } else { ta = a / b; return( tb * sqrt( 1.0 + ta * ta ) ); } } #endif /* HAVE_HYPOT */ #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_INLINE_H*/ libvips-8.9.1/libvips/include/vips/internal.h000066400000000000000000000220071361153320700212440ustar00rootroot00000000000000/* Declarations only used internally to vips. See private.h for declarations * which are not public, but which have to be publically visible. * * 11/9/06 * - cut from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_INTERNAL_H #define VIPS_INTERNAL_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* << on an int is undefined in C if the int is negative. Imagine a machine * that uses 1s complement, for example. * * Fuzzers find and warn about this, so we must use this macro instead. Cast * to uint, shift, and cast back. */ #define VIPS_LSHIFT_INT( I, N ) ((int) ((unsigned int) (I) << (N))) /* What we store in the Meta hash table. We can't just use GHashTable's * key/value pairs, since we need to iterate over meta in Meta_traverse order. * * We don't refcount at this level ... large meta values are refcounted by * their GValue implementation, see eg. MetaArea. */ typedef struct _VipsMeta { VipsImage *im; char *name; /* strdup() of field name */ GValue value; /* copy of value */ } VipsMeta; int vips__exif_parse( VipsImage *image ); int vips__exif_update( VipsImage *image ); void vips_check_init( void ); void vips__meta_init_types( void ); void vips__meta_destroy( VipsImage *im ); int vips__meta_cp( VipsImage *, const VipsImage * ); /* Default tile geometry. */ extern int vips__tile_width; extern int vips__tile_height; extern int vips__fatstrip_height; extern int vips__thinstrip_height; /* Default n threads. */ extern int vips__concurrency; /* abort() on any error. */ extern int vips__fatal; /* Enable leak check. */ extern int vips__leak; /* Give progress feedback. */ extern int vips__progress; /* Leak check on exit. */ extern int vips__leak; /* Show info messages. Handy for debugging. */ extern int vips__info; /* A string giving the image size (in bytes of uncompressed image) above which * we decompress to disc on open. */ extern char *vips__disc_threshold; extern gboolean vips__cache_dump; extern gboolean vips__cache_trace; extern int vips__n_active_threads; void vips__threadpool_init( void ); void vips__cache_init( void ); void vips__print_renders( void ); void vips__type_leak( void ); typedef int (*im__fftproc_fn)( VipsImage *, VipsImage *, VipsImage * ); int im__fftproc( VipsImage *dummy, VipsImage *in, VipsImage *out, im__fftproc_fn fn ); /* iofuncs */ int vips__open_image_read( const char *filename ); int vips__open_image_write( const char *filename, gboolean temp ); int vips_image_open_input( VipsImage *image ); int vips_image_open_output( VipsImage *image ); void vips__link_break_all( VipsImage *im ); void *vips__link_map( VipsImage *image, gboolean upstream, VipsSListMap2Fn fn, void *a, void *b ); char *vips__b64_encode( const unsigned char *data, size_t data_length ); unsigned char *vips__b64_decode( const char *buffer, size_t *data_length ); gboolean vips__mmap_supported( int fd ); void *vips__mmap( int fd, int writeable, size_t length, gint64 offset ); int vips__munmap( const void *start, size_t length ); int vips_mapfile( VipsImage * ); int vips_mapfilerw( VipsImage * ); int vips_remapfilerw( VipsImage * ); void vips__buffer_init( void ); void vips__copy_4byte( int swap, unsigned char *to, unsigned char *from ); void vips__copy_2byte( gboolean swap, unsigned char *to, unsigned char *from ); guint32 vips__file_magic( const char *filename ); int vips__has_extension_block( VipsImage *im ); void *vips__read_extension_block( VipsImage *im, int *size ); int vips__write_extension_block( VipsImage *im, void *buf, int size ); int vips__writehist( VipsImage *image ); int vips__read_header_bytes( VipsImage *im, unsigned char *from ); int vips__write_header_bytes( VipsImage *im, unsigned char *to ); extern GMutex *vips__global_lock; int vips_image_written( VipsImage *image ); void vips_image_preeval( VipsImage *image ); void vips_image_eval( VipsImage *image, guint64 processed ); void vips_image_posteval( VipsImage *image ); VipsImage *vips_image_new_mode( const char *filename, const char *mode ); int vips__formatalike_vec( VipsImage **in, VipsImage **out, int n ); int vips__sizealike_vec( VipsImage **in, VipsImage **out, int n ); int vips__bandup( const char *domain, VipsImage *in, VipsImage **out, int n ); int vips__bandalike_vec( const char *domain, VipsImage **in, VipsImage **out, int n, int base_bands ); int vips__formatalike( VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ); int vips__sizealike( VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ); int vips__bandalike( const char *domain, VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ); /* draw */ VipsPel *vips__vector_to_pels( const char *domain, int bands, VipsBandFormat format, VipsCoding coding, double *real, double *imag, int n ); VipsPel *vips__vector_to_ink( const char *domain, VipsImage *im, double *real, double *imag, int n ); double *vips__ink_to_vector( const char *domain, VipsImage *im, VipsPel *ink, int *n ); VipsPel *im__vector_to_ink( const char *domain, VipsImage *im, int n, double *vec ); int vips__draw_flood_direct( VipsImage *image, VipsImage *test, int serial, int x, int y ); int vips__draw_mask_direct( VipsImage *image, VipsImage *mask, VipsPel *ink, int x, int y ); typedef void (*VipsDrawPoint)( VipsImage *image, int x, int y, void *client ); typedef void (*VipsDrawScanline)( VipsImage *image, int y, int x1, int x2, int quadrant, void *client ); void vips__draw_line_direct( VipsImage *image, int x1, int y1, int x2, int y2, VipsDrawPoint draw_point, void *client ); void vips__draw_circle_direct( VipsImage *image, int cx, int cy, int r, VipsDrawScanline draw_scanline, void *client ); int vips__insert_just_one( VipsRegion *out, VipsRegion *in, int x, int y ); int vips__insert_paste_region( VipsRegion *out, VipsRegion *in, VipsRect *pos ); /* Register base vips interpolators, called during startup. */ void vips__interpolate_init( void ); /* Start up various packages. */ void vips_arithmetic_operation_init( void ); void vips_conversion_operation_init( void ); void vips_resample_operation_init( void ); void vips_foreign_operation_init( void ); void vips_colour_operation_init( void ); void vips_histogram_operation_init( void ); void vips_freqfilt_operation_init( void ); void vips_create_operation_init( void ); void vips_morphology_operation_init( void ); void vips_convolution_operation_init( void ); void vips_draw_operation_init( void ); void vips_mosaicing_operation_init( void ); void vips_cimg_operation_init( void ); guint64 vips__parse_size( const char *size_string ); int vips__substitute( char *buf, size_t len, char *sub ); int vips_check_coding_labq( const char *domain, VipsImage *im ); int vips_check_coding_rad( const char *domain, VipsImage *im ); int vips_check_bands_3ormore( const char *domain, VipsImage *im ); int vips__byteswap_bool( VipsImage *in, VipsImage **out, gboolean swap ); char *vips__xml_properties( VipsImage *image ); void vips__cairo2rgba( guint32 *buf, int n ); void vips__Lab2LabQ_vec( VipsPel *out, float *in, int width ); void vips__LabQ2Lab_vec( float *out, VipsPel *in, int width ); #ifdef DEBUG_LEAK extern GQuark vips__image_pixels_quark; #endif /*DEBUG_LEAK*/ /* With DEBUG_LEAK, hang one of these off each image and count pixels * calculated. */ typedef struct _VipsImagePixels { const char *nickname; gint64 tpels; /* Number of pels we expect to calculate */ gint64 npels; /* Number of pels calculated so far */ } VipsImagePixels; int vips__foreign_convert_saveable( VipsImage *in, VipsImage **ready, VipsSaveable saveable, VipsBandFormat *format, VipsCoding *coding, VipsArrayDouble *background ); int vips_foreign_load( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_foreign_save( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips__image_intize( VipsImage *in, VipsImage **out ); void vips__reorder_init( void ); int vips__reorder_set_input( VipsImage *image, VipsImage **in ); void vips__reorder_clear( VipsImage *image ); /* Window manager API. */ VipsWindow *vips_window_take( VipsWindow *window, VipsImage *im, int top, int height ); int vips__profile_set( VipsImage *image, const char *name ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_INTERNAL_H*/ libvips-8.9.1/libvips/include/vips/interpolate.h000066400000000000000000000100721361153320700217550ustar00rootroot00000000000000/* Various interpolators. * * J.Cupitt, 15/10/08 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_INTERPOLATE_H #define VIPS_INTERPOLATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_INTERPOLATE (vips_interpolate_get_type()) #define VIPS_INTERPOLATE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE, VipsInterpolate )) #define VIPS_INTERPOLATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE, VipsInterpolateClass)) #define VIPS_IS_INTERPOLATE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE )) #define VIPS_IS_INTERPOLATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE )) #define VIPS_INTERPOLATE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE, VipsInterpolateClass )) typedef struct _VipsInterpolate { VipsObject parent_object; } VipsInterpolate; /* An interpolation function. This is a class method, but we have a lookup * function for it to speed up dispatch. Write to the memory at "out", * interpolate the value at position (x, y) in "in". */ typedef void (*VipsInterpolateMethod)( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ); typedef struct _VipsInterpolateClass { VipsObjectClass parent_class; /* Write to pixel out(x,y), interpolating from in(x,y). The caller has * to set the regions up. */ VipsInterpolateMethod interpolate; /* This interpolator needs a window this many pixels across and down. */ int (*get_window_size)( VipsInterpolate *interpolate ); /* Or just set this if you want a constant. */ int window_size; /* Stencils are offset by this much. Default to window_size / 2 - 1 * (centering) if get_window_offset is NULL and window_offset is -1. */ int (*get_window_offset)( VipsInterpolate *interpolate ); int window_offset; } VipsInterpolateClass; /* Don't put spaces around void here, it breaks gtk-doc. */ GType vips_interpolate_get_type(void); void vips_interpolate( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ); VipsInterpolateMethod vips_interpolate_get_method( VipsInterpolate *interpolate ); int vips_interpolate_get_window_size( VipsInterpolate *interpolate ); int vips_interpolate_get_window_offset( VipsInterpolate *interpolate ); /* How many bits of precision we keep for transformations, ie. how many * pre-computed matricies we have. */ #define VIPS_TRANSFORM_SHIFT (6) #define VIPS_TRANSFORM_SCALE (1 << VIPS_TRANSFORM_SHIFT) /* How many bits of precision we keep for interpolation, ie. where the decimal * is in the fixed-point tables. For 16-bit pixels, we need 16 bits for the * data and 4 bits to add 16 values together. That leaves 12 bits for the * fractional part. */ #define VIPS_INTERPOLATE_SHIFT (12) #define VIPS_INTERPOLATE_SCALE (1 << VIPS_INTERPOLATE_SHIFT) /* Convenience: return static interpolators, no need to unref. */ VipsInterpolate *vips_interpolate_nearest_static( void ); VipsInterpolate *vips_interpolate_bilinear_static( void ); /* Convenience: make an interpolator from a nickname. g_object_unref() when * you're done with it. */ VipsInterpolate *vips_interpolate_new( const char *nickname ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_INTERPOLATE_H*/ libvips-8.9.1/libvips/include/vips/intl.h000066400000000000000000000022301361153320700203720ustar00rootroot00000000000000/* i18n stuff for vips. */ #ifndef VIPS_INTL_H #define VIPS_INTL_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ const char *vips__gettext( const char *msgid ); const char *vips__ngettext( const char *msgid, const char *plural, unsigned long int n ); #ifdef ENABLE_NLS #include #define _(String) vips__gettext(String) /* ngettext may be defined as a macro if we're optimised. */ #ifdef ngettext #undef ngettext #endif /*ngettext*/ #define ngettext(String,Plural,number) vips__ngettext(String,Plural,number) #ifdef gettext_noop #define N_(String) gettext_noop(String) #else #define N_(String) (String) #endif #else /*!ENABLE_NLS*/ #define _(String) (String) #define N_(String) (String) #define textdomain(String) (String) #define gettext(String) (String) #define dgettext(Domain,String) (String) #define dcgettext(Domain,String,Type) (String) #define bindtextdomain(Domain,Directory) (Domain) #define bind_textdomain_codeset(Domain,Codeset) (Codeset) #define ngettext(S, P, N) ((N) == 1 ? (S) : (P)) #define dngettext(D, S, P, N) ngettext(S, P, N) #endif /* ENABLE_NLS */ #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /* VIPS_INTL_H */ libvips-8.9.1/libvips/include/vips/mask.h000066400000000000000000000075271361153320700203750ustar00rootroot00000000000000/* mask.h * * 20/9/09 * - from proto.h */ /* All deprecated. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_MASK_H #define IM_MASK_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef struct im__INTMASK { int xsize; int ysize; int scale; int offset; int *coeff; char *filename; } INTMASK; typedef struct im__DOUBLEMASK { int xsize; int ysize; double scale; double offset; double *coeff; char *filename; } DOUBLEMASK; #define IM_MASK( M, X, Y ) ((M)->coeff[(X) + (Y) * (M)->xsize]) INTMASK *im_create_imask( const char *filename, int xsize, int ysize ); INTMASK *im_create_imaskv( const char *filename, int xsize, int ysize, ... ); DOUBLEMASK *im_create_dmask( const char *filename, int xsize, int ysize ); DOUBLEMASK *im_create_dmaskv( const char *filename, int xsize, int ysize, ... ); INTMASK *im_read_imask( const char *filename ); DOUBLEMASK *im_read_dmask( const char *filename ); void im_print_imask( INTMASK *in ); void im_print_dmask( DOUBLEMASK *in ); int im_write_imask( INTMASK *in ); int im_write_dmask( DOUBLEMASK *in ); int im_write_imask_name( INTMASK *in, const char *filename ); int im_write_dmask_name( DOUBLEMASK *in, const char *filename ); int im_free_imask( INTMASK *in ); int im_free_dmask( DOUBLEMASK *in ); INTMASK *im_log_imask( const char *filename, double sigma, double min_ampl ); DOUBLEMASK *im_log_dmask( const char *filename, double sigma, double min_ampl ); INTMASK *im_gauss_imask( const char *filename, double sigma, double min_ampl ); INTMASK *im_gauss_imask_sep( const char *filename, double sigma, double min_ampl ); DOUBLEMASK *im_gauss_dmask( const char *filename, double sigma, double min_ampl ); DOUBLEMASK *im_gauss_dmask_sep( const char *filename, double sigma, double min_ampl ); INTMASK *im_dup_imask( INTMASK *in, const char *filename ); DOUBLEMASK *im_dup_dmask( DOUBLEMASK *in, const char *filename ); INTMASK *im_scale_dmask( DOUBLEMASK *in, const char *filename ); void im_norm_dmask( DOUBLEMASK *mask ); DOUBLEMASK *im_imask2dmask( INTMASK *in, const char *filename ); INTMASK *im_dmask2imask( DOUBLEMASK *in, const char *filename ); INTMASK *im_rotate_imask90( INTMASK *in, const char *filename ); INTMASK *im_rotate_imask45( INTMASK *in, const char *filename ); DOUBLEMASK *im_rotate_dmask90( DOUBLEMASK *in, const char *filename ); DOUBLEMASK *im_rotate_dmask45( DOUBLEMASK *in, const char *filename ); DOUBLEMASK *im_mattrn( DOUBLEMASK *in, const char *filename ); DOUBLEMASK *im_matcat( DOUBLEMASK *top, DOUBLEMASK *bottom, const char *filename ); DOUBLEMASK *im_matmul( DOUBLEMASK *in1, DOUBLEMASK *in2, const char *filename ); DOUBLEMASK *im_lu_decomp( const DOUBLEMASK *mat, const char *filename ); int im_lu_solve( const DOUBLEMASK *lu, double *vec ); DOUBLEMASK *im_matinv( const DOUBLEMASK *mat, const char *filename ); int im_matinv_inplace( DOUBLEMASK *mat ); DOUBLEMASK *im_local_dmask( struct _VipsImage *out, DOUBLEMASK *mask ); INTMASK *im_local_imask( struct _VipsImage *out, INTMASK *mask ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_MASK_H*/ libvips-8.9.1/libvips/include/vips/memory.h000066400000000000000000000043761361153320700207510ustar00rootroot00000000000000/* memory utilities * * J.Cupitt, 8/4/93 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_MEMORY_H #define VIPS_MEMORY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_FREEF( F, S ) G_STMT_START { \ if( S ) { \ (void) F( (S) ); \ (S) = 0; \ } \ } G_STMT_END #define VIPS_FREE( S ) VIPS_FREEF( g_free, (S) ); #define VIPS_SETSTR( S, V ) \ G_STMT_START { \ const char *sst = (V); \ \ if( (S) != sst ) { \ if( !(S) || !sst || strcmp( (S), sst ) != 0 ) { \ VIPS_FREE( S ); \ if( sst ) \ (S) = g_strdup( sst ); \ } \ } \ } G_STMT_END #define VIPS_NEW( OBJ, T ) \ ((T *) vips_malloc( VIPS_OBJECT( OBJ ), sizeof( T ))) #define VIPS_ARRAY( OBJ, N, T ) \ ((T *) vips_malloc( VIPS_OBJECT( OBJ ), (N) * sizeof( T ))) void *vips_malloc( VipsObject *object, size_t size ); char *vips_strdup( VipsObject *object, const char *str ); int vips_free( void *buf ); void vips_tracked_free( void *s ); void *vips_tracked_malloc( size_t size ); size_t vips_tracked_get_mem( void ); size_t vips_tracked_get_mem_highwater( void ); int vips_tracked_get_allocs( void ); int vips_tracked_open( const char *pathname, int flags, ... ); int vips_tracked_close( int fd ); int vips_tracked_get_files( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_MEMORY_H*/ libvips-8.9.1/libvips/include/vips/morphology.h000066400000000000000000000035431361153320700216330ustar00rootroot00000000000000/* morphology.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_MORPHOLOGY_H #define VIPS_MORPHOLOGY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum { VIPS_OPERATION_MORPHOLOGY_ERODE, VIPS_OPERATION_MORPHOLOGY_DILATE, VIPS_OPERATION_MORPHOLOGY_LAST } VipsOperationMorphology; int vips_morph( VipsImage *in, VipsImage **out, VipsImage *mask, VipsOperationMorphology morph, ... ) __attribute__((sentinel)); int vips_rank( VipsImage *in, VipsImage **out, int width, int height, int index, ... ) __attribute__((sentinel)); int vips_median( VipsImage *in, VipsImage **out, int size, ... ) __attribute__((sentinel)); int vips_countlines( VipsImage *in, double *nolines, VipsDirection direction, ... ) __attribute__((sentinel)); int vips_labelregions( VipsImage *in, VipsImage **mask, ... ) __attribute__((sentinel)); int vips_fill_nearest( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_MORPHOLOGY_H*/ libvips-8.9.1/libvips/include/vips/mosaicing.h000066400000000000000000000037341361153320700214070ustar00rootroot00000000000000/* mosaicing.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_MOSAICING_H #define IM_MOSAICING_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips_merge( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int dx, int dy, ... ) __attribute__((sentinel)); int vips_mosaic( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int xref, int yref, int xsec, int ysec, ... ) __attribute__((sentinel)); int vips_mosaic1( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, ... ) __attribute__((sentinel)); int vips_match( VipsImage *ref, VipsImage *sec, VipsImage **out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, ... ) __attribute__((sentinel)); int vips_globalbalance( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_remosaic( VipsImage *in, VipsImage **out, const char *old_str, const char *new_str, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_MOSAICING_H*/ libvips-8.9.1/libvips/include/vips/object.h000066400000000000000000000507611361153320700207060ustar00rootroot00000000000000/* abstract base class for all vips objects */ /* Copyright (C) 1991-2003 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_OBJECT_H #define VIPS_OBJECT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Handy! */ #ifdef VIPS_DEBUG #define VIPS_UNREF( X ) G_STMT_START { \ if( X ) { \ g_assert( G_OBJECT( X )->ref_count > 0 ); \ g_object_unref( X ); \ (X) = 0; \ } \ } G_STMT_END #else /*!VIPS_DEBUG*/ #define VIPS_UNREF( X ) VIPS_FREEF( g_object_unref, (X) ) #endif /*VIPS_DEBUG*/ typedef struct _VipsObject VipsObject; typedef struct _VipsObjectClass VipsObjectClass; /* Track extra stuff for arguments to objects */ typedef enum /*< flags >*/ { VIPS_ARGUMENT_NONE = 0, VIPS_ARGUMENT_REQUIRED = 1, VIPS_ARGUMENT_CONSTRUCT = 2, VIPS_ARGUMENT_SET_ONCE = 4, VIPS_ARGUMENT_SET_ALWAYS = 8, VIPS_ARGUMENT_INPUT = 16, VIPS_ARGUMENT_OUTPUT = 32, VIPS_ARGUMENT_DEPRECATED = 64, VIPS_ARGUMENT_MODIFY = 128 } VipsArgumentFlags; /* Useful flag combinations. User-visible ones are: VIPS_ARGUMENT_REQUIRED_INPUT Eg. the "left" argument for an add operation VIPS_ARGUMENT_OPTIONAL_INPUT Eg. the "caption" for an object VIPS_ARGUMENT_REQUIRED_OUTPUT Eg. the "result" of an add operation VIPS_ARGUMENT_OPTIONAL_OUTPUT Eg. the x pos of the image minimum Other combinations are used internally, eg. supplying the cast-table for an arithmetic operation */ #define VIPS_ARGUMENT_REQUIRED_INPUT \ (VIPS_ARGUMENT_INPUT | \ VIPS_ARGUMENT_REQUIRED | \ VIPS_ARGUMENT_CONSTRUCT) #define VIPS_ARGUMENT_OPTIONAL_INPUT \ (VIPS_ARGUMENT_INPUT | \ VIPS_ARGUMENT_CONSTRUCT) #define VIPS_ARGUMENT_REQUIRED_OUTPUT \ (VIPS_ARGUMENT_OUTPUT | \ VIPS_ARGUMENT_REQUIRED | \ VIPS_ARGUMENT_CONSTRUCT) #define VIPS_ARGUMENT_OPTIONAL_OUTPUT \ (VIPS_ARGUMENT_OUTPUT | \ VIPS_ARGUMENT_CONSTRUCT) #define VIPS_ARG_IMAGE( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_object( (NAME), (LONG), (DESC), \ VIPS_TYPE_IMAGE, \ (GParamFlags) (G_PARAM_READWRITE) ); \ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ vips_argument_get_id(), pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_OBJECT( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, TYPE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_object( (NAME), (LONG), (DESC), \ TYPE, \ (GParamFlags) (G_PARAM_READWRITE) ); \ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ vips_argument_get_id(), pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_INTERPOLATE( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET ) \ VIPS_ARG_OBJECT( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, VIPS_TYPE_INTERPOLATE ) #define VIPS_ARG_BOOL( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_boolean( (NAME), (LONG), (DESC), \ (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) ); \ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ vips_argument_get_id(), pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_DOUBLE( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, MIN, MAX, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_double( (NAME), (LONG), (DESC), \ (MIN), (MAX), (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ vips_argument_get_id(), pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_BOXED( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, TYPE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_boxed( (NAME), (LONG), (DESC), \ (TYPE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ vips_argument_get_id(), pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_INT( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, MIN, MAX, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_int( (NAME), (LONG), (DESC), \ (MIN), (MAX), (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ vips_argument_get_id(), pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_UINT64( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, MIN, MAX, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_uint64( (NAME), (LONG), (DESC), \ (MIN), (MAX), (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ vips_argument_get_id(), pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_ENUM( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, TYPE, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_enum( (NAME), (LONG), (DESC), \ (TYPE), (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ vips_argument_get_id(), pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_FLAGS( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, TYPE, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_flags( (NAME), (LONG), (DESC), \ (TYPE), (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ vips_argument_get_id(), pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_STRING( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, \ VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_string( (NAME), (LONG), (DESC), \ (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) ); \ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ vips_argument_get_id(), pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_POINTER( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_pointer( (NAME), (LONG), (DESC), \ (GParamFlags) (G_PARAM_READWRITE) ); \ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ vips_argument_get_id(), pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } /* Keep one of these for every argument. */ typedef struct _VipsArgument { GParamSpec *pspec; /* pspec for this argument */ /* More stuff, see below */ } VipsArgument; /* Keep one of these in the class struct for every argument. */ typedef struct _VipsArgumentClass { VipsArgument parent; /* The class of the object we are an arg for. */ VipsObjectClass *object_class; VipsArgumentFlags flags; int priority; /* Order args by this */ guint offset; /* G_STRUCT_OFFSET of member in object */ } VipsArgumentClass; /* Keep one of these in the object struct for every argument instance. */ typedef struct _VipsArgumentInstance { VipsArgument parent; /* The class we are part of. */ VipsArgumentClass *argument_class; /* The object we are attached to. */ VipsObject *object; /* Has been set. */ gboolean assigned; /* If this is an output argument, keep the id of our "close" handler * here. */ gulong close_id; /* We need to listen for "invalidate" on input images and send our own * "invalidate" out. If we go, we need to disconnect. */ gulong invalidate_id; } VipsArgumentInstance; /* Need to look up our VipsArgument structs from a pspec. Just hash the * pointer (ie. we assume pspecs are never shared, is this correct?) */ typedef GHashTable VipsArgumentTable; int vips_argument_get_id( void ); void vips__object_set_member( VipsObject *object, GParamSpec *pspec, GObject **member, GObject *argument ); typedef void *(*VipsArgumentMapFn)( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ); void *vips_argument_map( VipsObject *object, VipsArgumentMapFn fn, void *a, void *b ); int vips_object_get_args( VipsObject *object, const char ***names, int **flags, int *n_args ); typedef void *(*VipsArgumentClassMapFn)( VipsObjectClass *object_class, GParamSpec *pspec, VipsArgumentClass *argument_class, void *a, void *b ); void *vips_argument_class_map( VipsObjectClass *object_class, VipsArgumentClassMapFn fn, void *a, void *b ); gboolean vips_argument_class_needsstring( VipsArgumentClass *argument_class ); int vips_object_get_argument( VipsObject *object, const char *name, GParamSpec **pspec, VipsArgumentClass **argument_class, VipsArgumentInstance **argument_instance ); gboolean vips_object_argument_isset( VipsObject *object, const char *name ); VipsArgumentFlags vips_object_get_argument_flags( VipsObject *object, const char *name ); int vips_object_get_argument_priority( VipsObject *object, const char *name ); /* We have to loop over an objects args in several places, and we can't always * use vips_argument_map(), the preferred looper. Have the loop code as a * macro as well for these odd cases. */ #define VIPS_ARGUMENT_FOR_ALL( OBJECT, PSPEC, ARG_CLASS, ARG_INSTANCE ) { \ VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( OBJECT ); \ GSList *p; \ \ for( p = object_class->argument_table_traverse; p; p = p->next ) { \ VipsArgumentClass *ARG_CLASS = \ (VipsArgumentClass *) p->data; \ VipsArgument *argument = (VipsArgument *) argument_class; \ GParamSpec *PSPEC = argument->pspec; \ VipsArgumentInstance *ARG_INSTANCE __attribute__ ((unused)) = \ vips__argument_get_instance( argument_class, \ VIPS_OBJECT( OBJECT ) ); \ #define VIPS_ARGUMENT_FOR_ALL_END } } /* And some macros to collect args from a va list. * * Use something like this: GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( VIPS_OBJECT( operation ), name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, ap ); GValue value holds the value of an input argument, do something with it VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, ap ); void **arg points to where to write an output argument VIPS_ARGUMENT_COLLECT_END */ #define VIPS_ARGUMENT_COLLECT_SET( PSPEC, ARG_CLASS, AP ) \ if( (ARG_CLASS->flags & VIPS_ARGUMENT_INPUT) ) { \ GValue value = { 0, }; \ gchar *error = NULL; \ \ /* Input args are given inline, eg. ("factor", 12.0) \ * and must be collected. \ */ \ g_value_init( &value, G_PARAM_SPEC_VALUE_TYPE( PSPEC ) ); \ G_VALUE_COLLECT( &value, AP, 0, &error ); \ \ /* Don't bother with the error message. \ */ \ if( error ) { \ VIPS_DEBUG_MSG( "VIPS_OBJECT_COLLECT_SET: err\n" ); \ g_free( error ); \ } #define VIPS_ARGUMENT_COLLECT_GET( PSPEC, ARG_CLASS, AP ) \ g_value_unset( &value ); \ } \ else if( (ARG_CLASS->flags & VIPS_ARGUMENT_OUTPUT) ) { \ void **arg __attribute__ ((unused)); \ \ /* Output args are a pointer to where to send the \ * result. \ */ \ arg = va_arg( AP, void ** ); #define VIPS_ARGUMENT_COLLECT_END \ } #define VIPS_TYPE_OBJECT (vips_object_get_type()) #define VIPS_OBJECT( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), VIPS_TYPE_OBJECT, VipsObject )) #define VIPS_OBJECT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), VIPS_TYPE_OBJECT, VipsObjectClass)) #define VIPS_IS_OBJECT( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_OBJECT )) #define VIPS_IS_OBJECT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_OBJECT )) #define VIPS_OBJECT_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), VIPS_TYPE_OBJECT, VipsObjectClass )) struct _VipsObject { GObject parent_instance; /* Set after ->build() has run succesfully: construct is fully done * and checked. */ gboolean constructed; /* Set for static objects which are allocated at startup and never * freed. These objects are ommitted from leak reports. */ gboolean static_object; /* Table of argument instances for this class and any derived classes. */ VipsArgumentTable *argument_table; /* Class properties (see below), duplicated in the instance so we can * get at them easily via the property system. */ char *nickname; char *description; /* The pre/post/close callbacks are all fire-once. */ gboolean preclose; gboolean close; gboolean postclose; /* Total memory allocated relative to this object, handy for * profiling. */ size_t local_memory; }; struct _VipsObjectClass { GObjectClass parent_class; /* Build the object ... all argument properties have been set, * now build the thing. */ int (*build)( VipsObject *object ); /* Just after build ... the object is fully ready for work. */ int (*postbuild)( VipsObject *object ); /* Try to print something about the class, handy for help displays. * Keep to one line. */ void (*summary_class)( struct _VipsObjectClass *cls, VipsBuf *buf ); /* Try to print a one-line summary for the object, the user can see * this output via things like "header fred.tif", --vips-cache-trace, * etc. */ void (*summary)( VipsObject *object, VipsBuf *buf ); /* Try to print everything about the object, handy for debugging. */ void (*dump)( VipsObject *object, VipsBuf *buf ); /* Sanity-check the object. Print messages and stuff. * Handy for debugging. */ void (*sanity)( VipsObject *object, VipsBuf *buf ); /* Rewind. Save and restore any stuff that needs to survive a * dispose(). */ void (*rewind)( VipsObject *object ); /* Just before close, everything is still alive. */ void (*preclose)( VipsObject *object ); /* Close, time to free stuff. */ void (*close)( VipsObject *object ); /* Post-close, everything is dead, except the VipsObject pointer. * Useful for eg. deleting the file associated with a temp image. */ void (*postclose)( VipsObject *object ); /* The CLI interface. Implement these four to get CLI input and output * for your object. */ /* Given a command-line arg (eg. a filename), make an instance of the * object. Just do the g_object_new(), don't call _build(). * * Don't call this directly, see vips_object_new_from_string(). */ VipsObject *(*new_from_string)( const char *string ); /* The inverse of ^^. Given an object, output what ->new_from_string() * would have been given to make that object. */ void (*to_string)( VipsObject *object, VipsBuf *buf ); /* Does this output arg need an arg from the command line? Image * output, for example, needs a filename to write to. */ gboolean output_needs_arg; /* Write the object to the string. Return 0 for success, or -1 on * error, setting vips_error(). string is NULL if output_needs_arg() * was FALSE. */ int (*output_to_arg)( VipsObject *object, const char *string ); /* Class nickname, eg. "VipsInterpolateBicubic" has "bicubic" as a * nickname. Not internationalised. */ const char *nickname; /* Class description. Used for help messages, so internationalised. */ const char *description; /* Hash from pspec to VipsArgumentClass. * * This records the VipsArgumentClass for every pspec used in * VipsObject and any subclass (ie. everywhere), so it's huge. Don't * loop over this hash! Fine for lookups though. */ VipsArgumentTable *argument_table; /* A sorted (by priority) list of the VipsArgumentClass for this class * and any superclasses. This is small and specific to this class. * * Use the stored GType to work out when to restart the list for a * subclass. */ GSList *argument_table_traverse; GType argument_table_traverse_gtype; /* This class is deprecated and therefore hidden from various UI bits. * * VipsOperation has a deprecated flag, use that in preference to this * if you can. */ gboolean deprecated; /* Reserved for future expansion. */ void (*_vips_reserved1)( void ); void (*_vips_reserved2)( void ); void (*_vips_reserved3)( void ); void (*_vips_reserved4)( void ); }; gboolean vips_value_is_null( GParamSpec *psoec, const GValue *value ); void vips_object_set_property( GObject *gobject, guint property_id, const GValue *value, GParamSpec *pspec ); void vips_object_get_property( GObject *gobject, guint property_id, GValue *value, GParamSpec *pspec ); void vips_object_preclose( VipsObject *object ); int vips_object_build( VipsObject *object ); void vips_object_summary_class( VipsObjectClass *klass, VipsBuf *buf ); void vips_object_summary( VipsObject *object, VipsBuf *buf ); void vips_object_dump( VipsObject *object, VipsBuf *buf ); void vips_object_print_summary_class( VipsObjectClass *klass ); void vips_object_print_summary( VipsObject *object ); void vips_object_print_dump( VipsObject *object ); void vips_object_print_name( VipsObject *object ); gboolean vips_object_sanity( VipsObject *object ); /* Don't put spaces around void here, it breaks gtk-doc. */ GType vips_object_get_type(void); void vips_object_class_install_argument( VipsObjectClass *cls, GParamSpec *pspec, VipsArgumentFlags flags, int priority, guint offset ); int vips_object_set_argument_from_string( VipsObject *object, const char *name, const char *value ); gboolean vips_object_argument_needsstring( VipsObject *object, const char *name ); int vips_object_get_argument_to_string( VipsObject *object, const char *name, const char *arg ); int vips_object_set_required( VipsObject *object, const char *value ); typedef void *(*VipsObjectSetArguments)( VipsObject *object, void *a, void *b ); VipsObject *vips_object_new( GType type, VipsObjectSetArguments set, void *a, void *b ); int vips_object_set_valist( VipsObject *object, va_list ap ); int vips_object_set( VipsObject *object, ... ) __attribute__((sentinel)); int vips_object_set_from_string( VipsObject *object, const char *string ); VipsObject *vips_object_new_from_string( VipsObjectClass *object_class, const char *p ); void vips_object_to_string( VipsObject *object, VipsBuf *buf ); void *vips_object_map( VipsSListMap2Fn fn, void *a, void *b ); typedef void *(*VipsTypeMapFn)( GType type, void *a ); typedef void *(*VipsTypeMap2Fn)( GType type, void *a, void *b ); typedef void *(*VipsClassMapFn)( VipsObjectClass *cls, void *a ); void *vips_type_map( GType base, VipsTypeMap2Fn fn, void *a, void *b ); void *vips_type_map_all( GType base, VipsTypeMapFn fn, void *a ); int vips_type_depth( GType type ); GType vips_type_find( const char *basename, const char *nickname ); const char *vips_nickname_find( GType type ); void *vips_class_map_all( GType type, VipsClassMapFn fn, void *a ); const VipsObjectClass *vips_class_find( const char *basename, const char *nickname ); VipsObject **vips_object_local_array( VipsObject *parent, int n ); void vips_object_local_cb( VipsObject *vobject, GObject *gobject ); #define vips_object_local( V, G ) \ (g_signal_connect( V, "close", G_CALLBACK( vips_object_local_cb ), G )) void vips_object_set_static( VipsObject *object, gboolean static_object ); void vips_object_print_all( void ); void vips_object_sanity_all( void ); void vips_object_rewind( VipsObject *object ); void vips_object_unref_outputs( VipsObject *object ); const char *vips_object_get_description( VipsObject *object ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_OBJECT_H*/ libvips-8.9.1/libvips/include/vips/operation.h000066400000000000000000000107271361153320700214360ustar00rootroot00000000000000/* base class for all vips operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_OPERATION_H #define VIPS_OPERATION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum /*< flags >*/ { VIPS_OPERATION_NONE = 0, VIPS_OPERATION_SEQUENTIAL = 1, VIPS_OPERATION_SEQUENTIAL_UNBUFFERED = 2, VIPS_OPERATION_NOCACHE = 4, VIPS_OPERATION_DEPRECATED = 8 } VipsOperationFlags; #define VIPS_TYPE_OPERATION (vips_operation_get_type()) #define VIPS_OPERATION( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_OPERATION, VipsOperation )) #define VIPS_OPERATION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_OPERATION, VipsOperationClass )) #define VIPS_IS_OPERATION( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_OPERATION )) #define VIPS_IS_OPERATION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_OPERATION )) #define VIPS_OPERATION_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_OPERATION, VipsOperationClass )) typedef gboolean (*VipsOperationBuildFn)( VipsObject *object ); typedef struct _VipsOperation { VipsObject parent_instance; /* Keep the hash here. */ guint hash; gboolean found_hash; /* Pixels calculated ... handy for measuring over-calculation. */ int pixels; } VipsOperation; typedef struct _VipsOperationClass { VipsObjectClass parent_class; /* Print the usage message. */ void (*usage)( struct _VipsOperationClass *cls, VipsBuf *buf ); /* Return a set of operation flags. */ VipsOperationFlags (*get_flags)( VipsOperation *operation ); VipsOperationFlags flags; /* One of our input images has signalled "invalidate". The cache uses * VipsOperation::invalidate to drop dirty ops. */ void (*invalidate)( VipsOperation *operation ); } VipsOperationClass; /* Don't put spaces around void here, it breaks gtk-doc. */ GType vips_operation_get_type(void); VipsOperationFlags vips_operation_get_flags( VipsOperation *operation ); void vips_operation_class_print_usage( VipsOperationClass *operation_class ); void vips_operation_invalidate( VipsOperation *operation ); int vips_operation_call_valist( VipsOperation *operation, va_list ap ); VipsOperation *vips_operation_new( const char *name ); int vips_call_required_optional( VipsOperation **operation, va_list required, va_list optional ); int vips_call( const char *operation_name, ... ) __attribute__((sentinel)); int vips_call_split( const char *operation_name, va_list optional, ... ); int vips_call_split_option_string( const char *operation_name, const char *option_string, va_list optional, ... ); void vips_call_options( GOptionGroup *group, VipsOperation *operation ); int vips_call_argv( VipsOperation *operation, int argc, char **argv ); void vips_cache_drop_all( void ); VipsOperation *vips_cache_operation_lookup( VipsOperation *operation ); void vips_cache_operation_add( VipsOperation *operation ); int vips_cache_operation_buildp( VipsOperation **operation ); VipsOperation *vips_cache_operation_build( VipsOperation *operation ); void vips_cache_print( void ); void vips_cache_set_max( int max ); void vips_cache_set_max_mem( size_t max_mem ); int vips_cache_get_max( void ); int vips_cache_get_size( void ); size_t vips_cache_get_max_mem( void ); int vips_cache_get_max_files( void ); void vips_cache_set_max_files( int max_files ); void vips_cache_set_dump( gboolean dump ); void vips_cache_set_trace( gboolean trace ); /* Part of threadpool, really, but we want these in a header that gets scanned * for our typelib. */ void vips_concurrency_set( int concurrency ); int vips_concurrency_get( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_OPERATION_H*/ libvips-8.9.1/libvips/include/vips/private.h000066400000000000000000000141321361153320700211020ustar00rootroot00000000000000/* Declarations which are public-facing, but private. See internal.h for * declarations which are only used internally by vips and which are not * externally visible. * * 6/7/09 * - from vips.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PRIVATE_H #define VIPS_PRIVATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_SPARE (8) /* Private to iofuncs: the minimum number of scanlines we add above and below * the window as a margin for slop. */ #define VIPS__WINDOW_MARGIN_PIXELS (128) /* Private to iofuncs: add at least this many bytes above and below the window. * There's no point mapping just a few KB of a small image. */ #define VIPS__WINDOW_MARGIN_BYTES (1024 * 1024 * 10) /* sizeof() a VIPS header on disc. */ #define VIPS_SIZEOF_HEADER (64) /* What we track for each mmap window. Have a list of these on an openin * VipsImage. */ typedef struct { int ref_count; /* # of regions referencing us */ struct _VipsImage *im; /* VipsImage we are attached to */ int top; /* Area of image we have mapped, in pixels */ int height; VipsPel *data; /* First pixel of line 'top' */ void *baseaddr; /* Base of window */ size_t length; /* Size of window */ } VipsWindow; int vips_window_unref( VipsWindow *window ); void vips_window_print( VipsWindow *window ); /* Per-thread buffer state. Held in a GPrivate. */ typedef struct { GHashTable *hash; /* VipsImage -> VipsBufferCache* */ GThread *thread; /* Just for sanity checking */ } VipsBufferThread; /* Per-image buffer cache. This keeps a list of "done" VipsBuffer that this * worker has generated. We use this to reuse results within a thread. * * Hash to this from VipsBufferThread::hash. * We can't store the GSList directly in the hash table as GHashTable lacks an * update operation and we'd need to _remove() and _insert() on every list * operation. */ typedef struct _VipsBufferCache { GSList *buffers; /* GSList of "done" VipsBuffer* */ GThread *thread; /* Just for sanity checking */ struct _VipsImage *im; VipsBufferThread *buffer_thread; GSList *reserve; /* VipsBuffer kept in reserve */ int n_reserve; /* Number in reserve */ } VipsBufferCache; /* What we track for each pixel buffer. These can move between caches and * between threads, but not between images. * * Moving between threads is difficult, use region ownership stuff. */ typedef struct _VipsBuffer { int ref_count; /* # of regions referencing us */ struct _VipsImage *im; /* VipsImage we are attached to */ VipsRect area; /* Area this pixel buffer covers */ gboolean done; /* Calculated and in a cache */ VipsBufferCache *cache; /* The cache this buffer is published on */ VipsPel *buf; /* Private malloc() area */ size_t bsize; /* Size of private malloc() */ } VipsBuffer; void vips_buffer_dump_all( void ); void vips_buffer_done( VipsBuffer *buffer ); void vips_buffer_undone( VipsBuffer *buffer ); void vips_buffer_unref( VipsBuffer *buffer ); VipsBuffer *vips_buffer_new( struct _VipsImage *im, VipsRect *area ); VipsBuffer *vips_buffer_ref( struct _VipsImage *im, VipsRect *area ); VipsBuffer *vips_buffer_unref_ref( VipsBuffer *buffer, struct _VipsImage *im, VipsRect *area ); void vips_buffer_print( VipsBuffer *buffer ); void vips__render_shutdown( void ); /* Sections of region.h that are private to VIPS. */ /* Region types. */ typedef enum _RegionType { VIPS_REGION_NONE, VIPS_REGION_BUFFER, /* A VipsBuffer */ VIPS_REGION_OTHER_REGION, /* Memory on another region */ VIPS_REGION_OTHER_IMAGE, /* Memory on another image */ VIPS_REGION_WINDOW /* A VipsWindow on fd */ } RegionType; /* Private to iofuncs: the size of the `tiles' requested by * vips_image_generate() when acting as a data sink. */ #define VIPS__TILE_WIDTH (128) #define VIPS__TILE_HEIGHT (128) /* The height of the strips for the other two request styles. */ #define VIPS__THINSTRIP_HEIGHT (1) #define VIPS__FATSTRIP_HEIGHT (16) /* Functions on regions. */ struct _VipsRegion; void vips__region_take_ownership( struct _VipsRegion *reg ); void vips__region_check_ownership( struct _VipsRegion *reg ); void vips__region_no_ownership( struct _VipsRegion *reg ); typedef int (*VipsRegionFillFn)( struct _VipsRegion *, void * ); int vips_region_fill( struct _VipsRegion *reg, const VipsRect *r, VipsRegionFillFn fn, void *a ); int vips__image_wio_output( struct _VipsImage *image ); int vips__image_pio_output( struct _VipsImage *image ); VipsArgumentInstance *vips__argument_get_instance( VipsArgumentClass *argument_class, VipsObject *object); VipsArgument *vips__argument_table_lookup( VipsArgumentTable *table, GParamSpec *pspec); void vips__demand_hint_array( struct _VipsImage *image, int hint, struct _VipsImage **in ); int vips__image_copy_fields_array( struct _VipsImage *out, struct _VipsImage *in[] ); void vips__region_count_pixels( struct _VipsRegion *region, const char *nickname ); void vips_region_dump_all( void ); /* Deprecated. */ int vips__init( const char *argv0 ); size_t vips__get_sizeof_vipsobject( void ); int vips_region_prepare_many( struct _VipsRegion **reg, const VipsRect *r ); /* Handy for debugging. */ int vips__view_image( struct _VipsImage *image ); /* Pre 8.7 libvipses used this for allocating argument ids. */ extern int _vips__argument_id; #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PRIVATE_H*/ libvips-8.9.1/libvips/include/vips/rect.h000066400000000000000000000037761361153320700204010ustar00rootroot00000000000000/* Simple rectangle algebra. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_RECT_H #define VIPS_RECT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef struct _VipsRect { /*< public >*/ int left; int top; int width; int height; } VipsRect; #define VIPS_RECT_RIGHT(R) ((R)->left + (R)->width) #define VIPS_RECT_BOTTOM(R) ((R)->top + (R)->height) #define VIPS_RECT_HCENTRE(R) ((R)->left + (R)->width / 2) #define VIPS_RECT_VCENTRE(R) ((R)->top + (R)->height / 2) gboolean vips_rect_isempty( const VipsRect *r ); gboolean vips_rect_includespoint( const VipsRect *r, int x, int y ); gboolean vips_rect_includesrect( const VipsRect *r1, const VipsRect *r2 ); gboolean vips_rect_equalsrect( const VipsRect *r1, const VipsRect *r2 ); gboolean vips_rect_overlapsrect( const VipsRect *r1, const VipsRect *r2 ); void vips_rect_marginadjust( VipsRect *r, int n ); void vips_rect_intersectrect( const VipsRect *r1, const VipsRect *r2, VipsRect *out ); void vips_rect_unionrect( const VipsRect *r1, const VipsRect *r2, VipsRect *out ); VipsRect *vips_rect_dup( const VipsRect *r ); void vips_rect_normalise( VipsRect *r ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_RECT_H*/ libvips-8.9.1/libvips/include/vips/region.h000066400000000000000000000137771361153320700207310ustar00rootroot00000000000000/* Definitions for partial image regions. * * J.Cupitt, 8/4/93 * * 2/3/11 * - move to GObject */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_REGION_H #define VIPS_REGION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_REGION (vips_region_get_type()) #define VIPS_REGION( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_REGION, VipsRegion )) #define VIPS_REGION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_REGION, VipsRegionClass)) #define VIPS_IS_REGION( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_REGION )) #define VIPS_IS_REGION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_REGION )) #define VIPS_REGION_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_REGION, VipsRegionClass )) /** * VipsRegionShrink: * @VIPS_REGION_SHRINK_MEAN: use the average * @VIPS_REGION_SHRINK_MEDIAN: use the median * @VIPS_REGION_SHRINK_MODE: use the mode * * How to calculate the output pixels when shrinking a 2x2 region. */ typedef enum { VIPS_REGION_SHRINK_MEAN, VIPS_REGION_SHRINK_MEDIAN, VIPS_REGION_SHRINK_MODE, VIPS_REGION_SHRINK_LAST } VipsRegionShrink; /* Sub-area of image. */ typedef struct _VipsRegion { VipsObject parent_object; /*< public >*/ /* Users may read these two fields. */ VipsImage *im; /* Link back to parent image */ VipsRect valid; /* Area of parent we can see */ /* The rest of VipsRegion is private. */ /*< private >*/ RegionType type; /* What kind of attachment */ VipsPel *data; /* Off here to get data */ int bpl; /* Bytes-per-line for data */ void *seq; /* Sequence we are using to fill region */ /* The thread that made this region. Used to assert() test that * regions are not being shared between threads. */ GThread *thread; /* Ref to the window we use for this region, if any. */ VipsWindow *window; /* Ref to the buffer we use for this region, if any. */ VipsBuffer *buffer; /* The image this region is on has changed and caches need to be * dropped. */ gboolean invalid; } VipsRegion; typedef struct _VipsRegionClass { VipsObjectClass parent_class; } VipsRegionClass; /* Don't put spaces around void here, it breaks gtk-doc. */ GType vips_region_get_type(void); VipsRegion *vips_region_new( VipsImage *image ); int vips_region_buffer( VipsRegion *reg, const VipsRect *r ); int vips_region_image( VipsRegion *reg, const VipsRect *r ); int vips_region_region( VipsRegion *reg, VipsRegion *dest, const VipsRect *r, int x, int y ); int vips_region_equalsregion( VipsRegion *reg1, VipsRegion *reg2 ); int vips_region_position( VipsRegion *reg, int x, int y ); void vips_region_paint( VipsRegion *reg, const VipsRect *r, int value ); void vips_region_paint_pel( VipsRegion *reg, const VipsRect *r, const VipsPel *ink ); void vips_region_black( VipsRegion *reg ); void vips_region_copy( VipsRegion *reg, VipsRegion *dest, const VipsRect *r, int x, int y ); int vips_region_shrink_method( VipsRegion *from, VipsRegion *to, const VipsRect *target, VipsRegionShrink method ); int vips_region_shrink( VipsRegion *from, VipsRegion *to, const VipsRect *target ); int vips_region_prepare( VipsRegion *reg, const VipsRect *r ); int vips_region_prepare_to( VipsRegion *reg, VipsRegion *dest, const VipsRect *r, int x, int y ); VipsPel *vips_region_fetch( VipsRegion *region, int left, int top, int width, int height, size_t *len ); int vips_region_width( VipsRegion *region ); int vips_region_height( VipsRegion *region ); void vips_region_invalidate( VipsRegion *reg ); /* Use this to count pixels passing through key points. Handy for spotting bad * overcomputation. */ #ifdef DEBUG_LEAK #define VIPS_COUNT_PIXELS( R, N ) vips__region_count_pixels( R, N ) #else /*!DEBUG_LEAK*/ #define VIPS_COUNT_PIXELS( R, N ) #endif /*DEBUG_LEAK*/ /* Macros on VipsRegion. * VIPS_REGION_LSKIP() add to move down line * VIPS_REGION_N_ELEMENTS() number of elements across region * VIPS_REGION_SIZEOF_LINE() sizeof width of region * VIPS_REGION_ADDR() address of pixel in region */ #define VIPS_REGION_LSKIP( R ) \ ((size_t)((R)->bpl)) #define VIPS_REGION_N_ELEMENTS( R ) \ ((size_t)((R)->valid.width * (R)->im->Bands)) #define VIPS_REGION_SIZEOF_LINE( R ) \ ((size_t)((R)->valid.width * VIPS_IMAGE_SIZEOF_PEL( (R)->im) )) /* If DEBUG is defined, add bounds checking. */ #ifdef DEBUG #define VIPS_REGION_ADDR( R, X, Y ) \ ( (vips_rect_includespoint( &(R)->valid, (X), (Y) ))? \ ((R)->data + ((Y) - (R)->valid.top) * VIPS_REGION_LSKIP(R) + \ ((X) - (R)->valid.left) * VIPS_IMAGE_SIZEOF_PEL((R)->im)): \ (fprintf( stderr, \ "VIPS_REGION_ADDR: point out of bounds, " \ "file \"%s\", line %d\n" \ "(point x=%d, y=%d\n" \ " should have been within VipsRect left=%d, top=%d, " \ "width=%d, height=%d)\n", \ __FILE__, __LINE__, \ (X), (Y), \ (R)->valid.left, \ (R)->valid.top, \ (R)->valid.width, \ (R)->valid.height ), abort(), (VipsPel *) NULL) \ ) #else /*DEBUG*/ #define VIPS_REGION_ADDR( R, X, Y ) \ ((R)->data + \ ((Y)-(R)->valid.top) * VIPS_REGION_LSKIP( R ) + \ ((X)-(R)->valid.left) * VIPS_IMAGE_SIZEOF_PEL( (R)->im )) #endif /*DEBUG*/ #define VIPS_REGION_ADDR_TOPLEFT( R ) ((R)->data) #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_REGION_H*/ libvips-8.9.1/libvips/include/vips/renameE000066400000000000000000000236741361153320700205710ustar00rootroot00000000000000/* Old and broken stuff that we still enable by default, but don't document * and certainly don't recommend. * * 30/6/09 * - from vips.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_ALMOSTDEPRECATED_H #define IM_ALMOSTDEPRECATED_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Was public, now deprecated. */ typedef enum { IM_BBITS_BYTE = 8, IM_BBITS_SHORT = 16, IM_BBITS_INT = 32, IM_BBITS_FLOAT = 32, IM_BBITS_COMPLEX = 64, IM_BBITS_DOUBLE = 64, IM_BBITS_DPCOMPLEX = 128 } VipsBBits; /* Used to define a region of interest for im_extract() etc. Too boring to be * public API, see im_extract_area() etc. */ typedef struct { int xstart; int ystart; int xsize; int ysize; int chsel; /* 1 2 3 or 0, for r g b or all respectively *(channel select) */ } IMAGE_BOX; int im_extract( IMAGE *, IMAGE *, IMAGE_BOX * ); DOUBLEMASK *im_measure( IMAGE *im, IMAGE_BOX *box, int h, int v, int *sel, int nsel, const char *name ); gboolean im_isuint( IMAGE *im ); gboolean im_isint( IMAGE *im ); gboolean im_isfloat( IMAGE *im ); gboolean im_isscalar( IMAGE *im ); gboolean im_iscomplex( IMAGE *im ); int im_c2ps( IMAGE *in, IMAGE *out ); int im_clip( IMAGE *in, IMAGE *out ); #define MASK_IDEAL_HIGHPASS IM_MASK_IDEAL_HIGHPASS #define MASK_IDEAL_LOWPASS IM_MASK_IDEAL_LOWPASS #define MASK_BUTTERWORTH_HIGHPASS IM_MASK_BUTTERWORTH_HIGHPASS #define MASK_BUTTERWORTH_LOWPASS IM_MASK_BUTTERWORTH_LOWPASS #define MASK_GAUSS_HIGHPASS IM_MASK_GAUSS_HIGHPASS #define MASK_GAUSS_LOWPASS IM_MASK_GAUSS_LOWPASS #define MASK_IDEAL_RINGPASS IM_MASK_IDEAL_RINGPASS #define MASK_IDEAL_RINGREJECT IM_MASK_IDEAL_RINGREJECT #define MASK_BUTTERWORTH_RINGPASS IM_MASK_BUTTERWORTH_RINGPASS #define MASK_BUTTERWORTH_RINGREJECT IM_MASK_BUTTERWORTH_RINGREJECT #define MASK_GAUSS_RINGPASS IM_MASK_GAUSS_RINGPASS #define MASK_GAUSS_RINGREJECT IM_MASK_GAUSS_RINGREJECT #define MASK_IDEAL_BANDPASS IM_MASK_IDEAL_BANDPASS #define MASK_IDEAL_BANDREJECT IM_MASK_IDEAL_BANDREJECT #define MASK_BUTTERWORTH_BANDPASS IM_MASK_BUTTERWORTH_BANDPASS #define MASK_BUTTERWORTH_BANDREJECT IM_MASK_BUTTERWORTH_BANDREJECT #define MASK_GAUSS_BANDPASS IM_MASK_GAUSS_BANDPASS #define MASK_GAUSS_BANDREJECT IM_MASK_GAUSS_BANDREJECT #define MASK_FRACTAL_FLT IM_MASK_FRACTAL_FLT #define MaskType ImMaskType /* Copy and swap types. */ typedef enum { IM_ARCH_NATIVE, IM_ARCH_BYTE_SWAPPED, IM_ARCH_LSB_FIRST, IM_ARCH_MSB_FIRST } im_arch_type; gboolean im_isnative( im_arch_type arch ); int im_copy_from( IMAGE *in, IMAGE *out, im_arch_type architecture ); /* Backwards compatibility macros. */ #define im_clear_error_string() im_error_clear() #define im_errorstring() im_error_buffer() /* Deprecated API. */ void im_errormsg( const char *fmt, ... ) __attribute__((format(printf, 1, 2))); void im_verrormsg( const char *fmt, va_list ap ); void im_errormsg_system( int err, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); void im_diagnostics( const char *fmt, ... ) __attribute__((format(printf, 1, 2))); void im_warning( const char *fmt, ... ) __attribute__((format(printf, 1, 2))); int im_iterate( VipsImage *im, VipsStartFn start, im_generate_fn generate, VipsStopFn stop, void *a, void *b ); /* Async rendering. */ int im_render_priority( VipsImage *in, VipsImage *out, VipsImage *mask, int width, int height, int max, int priority, void (*notify)( VipsImage *, VipsRect *, void * ), void *client ); int im_cache( VipsImage *in, VipsImage *out, int width, int height, int max ); /* Deprecated operations. */ int im_cmulnorm( IMAGE *in1, IMAGE *in2, IMAGE *out ); int im_fav4( IMAGE **, IMAGE * ); int im_gadd( double, IMAGE *, double, IMAGE *, double, IMAGE *); int im_litecor( IMAGE *, IMAGE *, IMAGE *, int, double ); int im_render_fade( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, int fps, int steps, int priority, void (*notify)( IMAGE *, VipsRect *, void * ), void *client ); int im_render( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, void (*notify)( IMAGE *, VipsRect *, void * ), void *client ); int im_cooc_matrix( IMAGE *im, IMAGE *m, int xp, int yp, int xs, int ys, int dx, int dy, int flag ); int im_cooc_asm( IMAGE *m, double *asmoment ); int im_cooc_contrast( IMAGE *m, double *contrast ); int im_cooc_correlation( IMAGE *m, double *correlation ); int im_cooc_entropy( IMAGE *m, double *entropy ); int im_glds_matrix( IMAGE *im, IMAGE *m, int xpos, int ypos, int xsize, int ysize, int dx, int dy ); int im_glds_asm( IMAGE *m, double *asmoment ); int im_glds_contrast( IMAGE *m, double *contrast ); int im_glds_entropy( IMAGE *m, double *entropy ); int im_glds_mean( IMAGE *m, double *mean ); int im_dif_std(IMAGE *im, int xpos, int ypos, int xsize, int ysize, int dx, int dy, double *pmean, double *pstd); int im_simcontr( IMAGE *out, int xsize, int ysize ); int im_spatres( IMAGE *in, IMAGE *out, int step ); int im_stretch3( IMAGE *in, IMAGE *out, double dx, double dy ); /* Renamed operations. */ /* arithmetic */ int im_remainderconst_vec( IMAGE *in, IMAGE *out, int n, double *c ); /* boolean */ int im_andconst( IMAGE *, IMAGE *, double ); int im_and_vec( IMAGE *, IMAGE *, int, double * ); int im_orconst( IMAGE *, IMAGE *, double ); int im_or_vec( IMAGE *, IMAGE *, int, double * ); int im_eorconst( IMAGE *, IMAGE *, double ); int im_eor_vec( IMAGE *, IMAGE *, int, double * ); /* mosaicing */ int im_affine( IMAGE *in, IMAGE *out, double a, double b, double c, double d, double dx, double dy, int ox, int oy, int ow, int oh ); int im_similarity( IMAGE *in, IMAGE *out, double a, double b, double dx, double dy ); int im_similarity_area( IMAGE *in, IMAGE *out, double a, double b, double dx, double dy, int ox, int oy, int ow, int oh ); /* colour */ int im_icc_export( IMAGE *in, IMAGE *out, const char *output_profile_filename, int intent ); /* conversion */ int im_clip2dcm( IMAGE *in, IMAGE *out ); int im_clip2cm( IMAGE *in, IMAGE *out ); int im_clip2us( IMAGE *in, IMAGE *out ); int im_clip2ui( IMAGE *in, IMAGE *out ); int im_clip2s( IMAGE *in, IMAGE *out ); int im_clip2i( IMAGE *in, IMAGE *out ); int im_clip2d( IMAGE *in, IMAGE *out ); int im_clip2f( IMAGE *in, IMAGE *out ); int im_clip2c( IMAGE *in, IMAGE *out ); int im_slice( IMAGE *in, IMAGE *out, double, double ); int im_thresh( IMAGE *in, IMAGE *out, double ); int im_print( const char *message ); int im_convsub( IMAGE *in, IMAGE *out, INTMASK *mask, int xskip, int yskip ); int im_bernd( const char *tiffname, int x, int y, int w, int h ); int im_resize_linear( IMAGE *, IMAGE *, int, int ); int im_convf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_convsepf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_conv_raw( IMAGE *in, IMAGE *out, INTMASK *mask ); int im_convf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_convsep_raw( IMAGE *in, IMAGE *out, INTMASK *mask ); int im_convsepf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_fastcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); int im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); int im_gradcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); int im_contrast_surface_raw( IMAGE *in, IMAGE *out, int half_win_size, int spacing ); int im_stdif_raw( IMAGE *in, IMAGE *out, double a, double m0, double b, double s0, int xwin, int ywin ); int im_lhisteq_raw( IMAGE *in, IMAGE *out, int xwin, int ywin ); int im_erode_raw( IMAGE *in, IMAGE *out, INTMASK *m ); int im_dilate_raw( IMAGE *in, IMAGE *out, INTMASK *m ); int im_rank_raw( IMAGE *in, IMAGE *out, int xsize, int ysize, int order ); /* inplace */ int im_circle( IMAGE *im, int cx, int cy, int radius, int intensity ); int im_line( IMAGE *, int, int, int, int, int ); int im_segment( IMAGE *test, IMAGE *mask, int *segments ); int im_paintrect( IMAGE *im, VipsRect *r, PEL *ink ); int im_insertplace( IMAGE *main, IMAGE *sub, int x, int y ); int im_flood_copy( IMAGE *in, IMAGE *out, int x, int y, PEL *ink ); int im_flood_blob_copy( IMAGE *in, IMAGE *out, int x, int y, PEL *ink ); int im_flood_other_copy( IMAGE *test, IMAGE *mark, IMAGE *out, int x, int y, int serial ); int im_flood( IMAGE *im, int x, int y, PEL *ink, VipsRect *dout ); int im_flood_blob( IMAGE *im, int x, int y, PEL *ink, VipsRect *dout ); int im_flood_other( IMAGE *test, IMAGE *mark, int x, int y, int serial, VipsRect *dout ); int im_fastline( IMAGE *im, int x1, int y1, int x2, int y2, PEL *pel ); int im_fastlineuser( IMAGE *im, int x1, int y1, int x2, int y2, VipsPlotFn fn, void *client1, void *client2, void *client3 ); int im_plotmask( IMAGE *im, int ix, int iy, PEL *ink, PEL *mask, VipsRect *r ); int im_readpoint( IMAGE *im, int x, int y, PEL *pel ); int im_plotpoint( IMAGE *im, int x, int y, PEL *pel ); int im_smudge( IMAGE *image, int ix, int iy, VipsRect *r ); int im_smear( IMAGE *im, int ix, int iy, VipsRect *r ); void vips_warn( const char *domain, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); void vips_vwarn( const char *domain, const char *fmt, va_list ap ); void vips_info_set( gboolean info ); void vips_info( const char *domain, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); void vips_vinfo( const char *domain, const char *fmt, va_list ap ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_ALMOSTDEPRECATED_H*/ libvips-8.9.1/libvips/include/vips/resample.h000066400000000000000000000057771361153320700212570ustar00rootroot00000000000000/* resample.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_RESAMPLE_H #define VIPS_RESAMPLE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum { VIPS_KERNEL_NEAREST, VIPS_KERNEL_LINEAR, VIPS_KERNEL_CUBIC, VIPS_KERNEL_MITCHELL, VIPS_KERNEL_LANCZOS2, VIPS_KERNEL_LANCZOS3, VIPS_KERNEL_LAST } VipsKernel; typedef enum { VIPS_SIZE_BOTH, VIPS_SIZE_UP, VIPS_SIZE_DOWN, VIPS_SIZE_FORCE, VIPS_SIZE_LAST } VipsSize; int vips_shrink( VipsImage *in, VipsImage **out, double hshrink, double vshrink, ... ) __attribute__((sentinel)); int vips_shrinkh( VipsImage *in, VipsImage **out, int hshrink, ... ) __attribute__((sentinel)); int vips_shrinkv( VipsImage *in, VipsImage **out, int vshrink, ... ) __attribute__((sentinel)); int vips_reduce( VipsImage *in, VipsImage **out, double hshrink, double vshrink, ... ) __attribute__((sentinel)); int vips_reduceh( VipsImage *in, VipsImage **out, double hshrink, ... ) __attribute__((sentinel)); int vips_reducev( VipsImage *in, VipsImage **out, double vshrink, ... ) __attribute__((sentinel)); int vips_thumbnail( const char *filename, VipsImage **out, int width, ... ) __attribute__((sentinel)); int vips_thumbnail_buffer( void *buf, size_t len, VipsImage **out, int width, ... ) __attribute__((sentinel)); int vips_thumbnail_image( VipsImage *in, VipsImage **out, int width, ... ) __attribute__((sentinel)); int vips_thumbnail_source( VipsSource *source, VipsImage **out, int width, ... ) __attribute__((sentinel)); int vips_similarity( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rotate( VipsImage *in, VipsImage **out, double angle, ... ) __attribute__((sentinel)); int vips_affine( VipsImage *in, VipsImage **out, double a, double b, double c, double d, ... ) __attribute__((sentinel)); int vips_resize( VipsImage *in, VipsImage **out, double scale, ... ) __attribute__((sentinel)); int vips_mapim( VipsImage *in, VipsImage **out, VipsImage *index, ... ) __attribute__((sentinel)); int vips_quadratic( VipsImage *in, VipsImage **out, VipsImage *coeff, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_RESAMPLE_H*/ libvips-8.9.1/libvips/include/vips/sbuf.h000066400000000000000000000067401361153320700203750ustar00rootroot00000000000000/* Buffered inputput from a VipsSource * * J.Cupitt, 18/11/19 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_SBUF_H #define VIPS_SBUF_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_SBUF (vips_sbuf_get_type()) #define VIPS_SBUF( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_SBUF, VipsSbuf )) #define VIPS_SBUF_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_SBUF, VipsSbufClass)) #define VIPS_IS_SBUF( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_SBUF )) #define VIPS_IS_SBUF_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_SBUF )) #define VIPS_SBUF_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_SBUF, VipsSbufClass )) #define VIPS_SBUF_BUFFER_SIZE (4096) /* Layer over source: read with an input buffer. * * Libraries like libjpeg do their own input buffering and need raw IO, but * others, like radiance, need to parse the input into lines. A buffered read * class is very convenient. */ typedef struct _VipsSbuf { VipsObject parent_object; /*< private >*/ /* The VipsSource we wrap. */ VipsSource *source; /* The +1 means there's always a \0 byte at the end. * * Unsigned char, since we don't want >127 to be -ve. * * chars_in_buffer is how many chars we have in input_buffer, * read_point is the current read position in that buffer. */ unsigned char input_buffer[VIPS_SBUF_BUFFER_SIZE + 1]; int chars_in_buffer; int read_point; /* Build lines of text here. */ unsigned char line[VIPS_SBUF_BUFFER_SIZE + 1]; } VipsSbuf; typedef struct _VipsSbufClass { VipsObjectClass parent_class; } VipsSbufClass; GType vips_sbuf_get_type( void ); VipsSbuf *vips_sbuf_new_from_source( VipsSource *source ); void vips_sbuf_unbuffer( VipsSbuf *sbuf ); int vips_sbuf_getc( VipsSbuf *sbuf ); #define VIPS_SBUF_GETC( S ) ( \ (S)->read_point < (S)->chars_in_buffer ? \ (S)->input_buffer[(S)->read_point++] : \ vips_sbuf_getc( S ) \ ) void vips_sbuf_ungetc( VipsSbuf *sbuf ); #define VIPS_SBUF_UNGETC( S ) { \ if( (S)->read_point > 0 ) \ (S)->read_point -= 1; \ } int vips_sbuf_require( VipsSbuf *sbuf, int require ); #define VIPS_SBUF_REQUIRE( S, R ) ( \ (S)->read_point + (R) <= (S)->chars_in_buffer ? \ 0 : \ vips_sbuf_require( (S), (R) ) \ ) #define VIPS_SBUF_PEEK( S ) ((S)->input_buffer + (S)->read_point) #define VIPS_SBUF_FETCH( S ) ((S)->input_buffer[(S)->read_point++]) const char *vips_sbuf_get_line( VipsSbuf *sbuf ); char *vips_sbuf_get_line_copy( VipsSbuf *sbuf ); const char *vips_sbuf_get_non_whitespace( VipsSbuf *sbuf ); int vips_sbuf_skip_whitespace( VipsSbuf *sbuf ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_SBUF_H*/ libvips-8.9.1/libvips/include/vips/semaphore.h000066400000000000000000000032511361153320700214130ustar00rootroot00000000000000/* Definitions for thread support. * * JC, 9/5/94 * 30/7/99 RP, JC * - reworked for posix/solaris threads * 28/9/99 JC * - restructured, made part of public API */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_SEMAPHORE_H #define VIPS_SEMAPHORE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include /* Implement our own semaphores. */ typedef struct { char *name; int v; GMutex *mutex; GCond *cond; } VipsSemaphore; int vips_semaphore_up( VipsSemaphore *s ); int vips_semaphore_down( VipsSemaphore *s ); int vips_semaphore_upn( VipsSemaphore *s, int n ); int vips_semaphore_downn( VipsSemaphore *s, int n ); void vips_semaphore_destroy( VipsSemaphore *s ); void vips_semaphore_init( VipsSemaphore *s, int v, char *name ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_SEMAPHORE_H*/ libvips-8.9.1/libvips/include/vips/soname.h000066400000000000000000000001231361153320700207050ustar00rootroot00000000000000/* This file is autogenerated, do not edit. */ #define VIPS_SONAME "libvips.so.42" libvips-8.9.1/libvips/include/vips/thread.h000066400000000000000000000031451361153320700207010ustar00rootroot00000000000000/* Private include file ... if we've been configured without gthread, we need * to point the g_thread_*() and g_mutex_*() functions at our own stubs. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_THREAD_H #define VIPS_THREAD_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* We need wrappers over g_mutex_new(), it was replaced by g_mutex_init() in * glib 2.32+ */ GMutex *vips_g_mutex_new( void ); void vips_g_mutex_free( GMutex * ); /* Same for GCond. */ GCond *vips_g_cond_new( void ); void vips_g_cond_free( GCond * ); /* ... and for GThread. */ GThread *vips_g_thread_new( const char *, GThreadFunc, gpointer ); void *vips_g_thread_join( GThread *thread ); gboolean vips_thread_isworker( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_THREAD_H*/ libvips-8.9.1/libvips/include/vips/threadpool.h000066400000000000000000000076541361153320700216040ustar00rootroot00000000000000/* Thread eval for VIPS. * * 29/9/99 JC * - from thread.h * 17/3/10 * - from threadgroup * - rework with a simpler distributed work allocation model */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_THREADPOOL_H #define VIPS_THREADPOOL_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include /* Per-thread state. Allocate functions can use these members to * communicate with work functions. */ #define VIPS_TYPE_THREAD_STATE (vips_thread_state_get_type()) #define VIPS_THREAD_STATE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_THREAD_STATE, VipsThreadState )) #define VIPS_THREAD_STATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_THREAD_STATE, VipsThreadStateClass)) #define VIPS_IS_THREAD_STATE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_THREAD_STATE )) #define VIPS_IS_THREAD_STATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_THREAD_STATE )) #define VIPS_THREAD_STATE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_THREAD_STATE, VipsThreadStateClass )) typedef struct _VipsThreadState { VipsObject parent_object; /*< public >*/ /* Image we run on. */ VipsImage *im; /* This region is created and destroyed by the threadpool for the * use of the worker. */ VipsRegion *reg; /* Neither used nor set, do what you like with them. */ VipsRect pos; int x, y; /* Set in work to get the allocate to signal stop. */ gboolean stop; /* The client data passed to the enclosing vips_threadpool_run(). */ void *a; /* Set in allocate to stall this thread for a moment. Handy for * debugging race conditions. */ gboolean stall; } VipsThreadState; typedef struct _VipsThreadStateClass { VipsObjectClass parent_class; /*< public >*/ } VipsThreadStateClass; void *vips_thread_state_set( VipsObject *object, void *a, void *b ); /* Don't put spaces around void here, it breaks gtk-doc. */ GType vips_thread_state_get_type(void); VipsThreadState *vips_thread_state_new( VipsImage *im, void *a ); /* Constructor for per-thread state. */ typedef VipsThreadState *(*VipsThreadStartFn)( VipsImage *im, void *a ); /* A work allocate function. This is run single-threaded by a worker to * set up a new work unit. * Return non-zero for errors. Set *stop for "no more work to do" */ typedef int (*VipsThreadpoolAllocateFn)( VipsThreadState *state, void *a, gboolean *stop ); /* A work function. This does a unit of work (eg. processing a tile or * whatever). Return non-zero for errors. */ typedef int (*VipsThreadpoolWorkFn)( VipsThreadState *state, void *a ); /* A progress function. This is run by the main thread once for every * allocation. Return an error to kill computation early. */ typedef int (*VipsThreadpoolProgressFn)( void *a ); int vips_threadpool_run( VipsImage *im, VipsThreadStartFn start, VipsThreadpoolAllocateFn allocate, VipsThreadpoolWorkFn work, VipsThreadpoolProgressFn progress, void *a ); void vips_get_tile_size( VipsImage *im, int *tile_width, int *tile_height, int *n_lines ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_THREADPOOL_H*/ libvips-8.9.1/libvips/include/vips/transform.h000066400000000000000000000047741361153320700214560ustar00rootroot00000000000000/* Affine transforms. */ /* Copyright (C) 1991-2003 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_TRANSFORM_H #define VIPS_TRANSFORM_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Params for an affine transformation. */ typedef struct { /* Area of input we can use. This can be smaller than the real input * image: we expand the input to add extra pixels for interpolation. */ VipsRect iarea; /* The area of the output we've been asked to generate. left/top can * be negative. */ VipsRect oarea; /* The transform. */ double a, b, c, d; double idx, idy; double odx, ody; double ia, ib, ic, id; /* Inverse of matrix abcd */ } VipsTransformation; void vips__transform_init( VipsTransformation *trn ); int vips__transform_calc_inverse( VipsTransformation *trn ); int vips__transform_isidentity( const VipsTransformation *trn ); int vips__transform_add( const VipsTransformation *in1, const VipsTransformation *in2, VipsTransformation *out ); void vips__transform_print( const VipsTransformation *trn ); void vips__transform_forward_point( const VipsTransformation *trn, const double x, const double y, double *ox, double *oy ); void vips__transform_invert_point( const VipsTransformation *trn, const double x, const double y, double *ox, double *oy ); void vips__transform_forward_rect( const VipsTransformation *trn, const VipsRect *in, VipsRect *out ); void vips__transform_invert_rect( const VipsTransformation *trn, const VipsRect *in, VipsRect *out ); void vips__transform_set_area( VipsTransformation * ); int vips__affine( VipsImage *in, VipsImage *out, VipsTransformation *trn ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_TRANSFORM_H*/ libvips-8.9.1/libvips/include/vips/type.h000066400000000000000000000160601361153320700204130ustar00rootroot00000000000000/* the GTypes we define * * 27/10/11 * - from header.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_TYPE_H #define VIPS_TYPE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* A very simple boxed type for testing. Just holds an int. */ typedef struct _VipsThing { int i; } VipsThing; /** * VIPS_TYPE_THING: * * The #GType for a #VipsThing. */ #define VIPS_TYPE_THING (vips_thing_get_type()) GType vips_thing_get_type(void); VipsThing *vips_thing_new( int i ); /* A ref-counted area of memory. Can hold arrays of things as well. */ typedef struct _VipsArea { void *data; size_t length; /* 0 if not known */ /* If this area represents an array, the number of elements in the * array. Equal to length / sizeof(element). */ int n; /*< private >*/ /* Reference count and lock. * * We could use an atomic int, but this is not a high-traffic data * structure, so a simple GMutex is OK. */ int count; GMutex *lock; /* Things like ICC profiles need their own free functions. * * Set client to anything you like -- VipsArea doesn't use this. */ VipsCallbackFn free_fn; void *client; /* If we are holding an array (for example, an array of double), the * GType of the elements and their size. 0 for not known. * * n is always length / sizeof_type, we keep it as a member for * convenience. */ GType type; size_t sizeof_type; } VipsArea; VipsArea *vips_area_copy( VipsArea *area ); void vips_area_unref( VipsArea *area ); VipsArea *vips_area_new( VipsCallbackFn free_fn, void *data ); VipsArea *vips_area_new_array( GType type, size_t sizeof_type, int n ); VipsArea *vips_area_new_array_object( int n ); void *vips_area_get_data( VipsArea *area, size_t *length, int *n, GType *type, size_t *sizeof_type ); #ifdef VIPS_DEBUG #define VIPS_ARRAY_ADDR( X, I ) \ (((I) >= 0 && (I) < VIPS_AREA( X )->n) ? \ (void *) ((VipsPel *) VIPS_AREA( X )->data + \ VIPS_AREA( X )->sizeof_type * (I)) : \ (fprintf( stderr, \ "VIPS_ARRAY_ADDR: index out of bounds, " \ "file \"%s\", line %d\n" \ "(index %d should have been within [0,%d])\n", \ __FILE__, __LINE__, \ (I), VIPS_AREA( X )->n ), NULL )) #else /*!VIPS_DEBUG*/ #define VIPS_ARRAY_ADDR( X, I ) \ ((void *) \ ((VipsPel *) VIPS_AREA( X )->data + VIPS_AREA( X )->sizeof_type * (I))) #endif /*VIPS_DEBUG*/ /** * VIPS_TYPE_AREA: * * The #GType for a #VipsArea. */ #define VIPS_TYPE_AREA (vips_area_get_type()) #define VIPS_AREA( X ) ((VipsArea *) (X)) GType vips_area_get_type(void); /** * VIPS_TYPE_SAVE_STRING: * * The #GType for a #VipsSaveString. */ #define VIPS_TYPE_SAVE_STRING (vips_save_string_get_type()) GType vips_save_string_get_type(void); /** * VIPS_TYPE_REF_STRING: * * The #GType for a #VipsRefString. */ #define VIPS_TYPE_REF_STRING (vips_ref_string_get_type()) typedef struct _VipsRefString { VipsArea area; } VipsRefString; VipsRefString *vips_ref_string_new( const char *str ); const char *vips_ref_string_get( VipsRefString *refstr, size_t *length ); GType vips_ref_string_get_type(void); /** * VIPS_TYPE_BLOB: * * The %GType for a #VipsBlob. */ #define VIPS_TYPE_BLOB (vips_blob_get_type()) typedef struct _VipsBlob { VipsArea area; } VipsBlob; VipsBlob *vips_blob_new( VipsCallbackFn free_fn, const void *data, size_t length ); VipsBlob *vips_blob_copy( const void *data, size_t length ); const void *vips_blob_get( VipsBlob *blob, size_t *length ); void vips_blob_set( VipsBlob *blob, VipsCallbackFn free_fn, const void *data, size_t length ); GType vips_blob_get_type(void); /** * VIPS_TYPE_ARRAY_DOUBLE: * * The #GType for a #VipsArrayDouble. */ #define VIPS_TYPE_ARRAY_DOUBLE (vips_array_double_get_type()) typedef struct _VipsArrayDouble { VipsArea area; } VipsArrayDouble; VipsArrayDouble *vips_array_double_new( const double *array, int n ); VipsArrayDouble *vips_array_double_newv( int n, ... ); double *vips_array_double_get( VipsArrayDouble *array, int *n ); GType vips_array_double_get_type(void); /** * VIPS_TYPE_ARRAY_INT: * * The #GType for a #VipsArrayInt. */ #define VIPS_TYPE_ARRAY_INT (vips_array_int_get_type()) typedef struct _VipsArrayInt { VipsArea area; } VipsArrayInt; VipsArrayInt *vips_array_int_new( const int *array, int n ); VipsArrayInt *vips_array_int_newv( int n, ... ); int *vips_array_int_get( VipsArrayInt *array, int *n ); GType vips_array_int_get_type(void); /** * VIPS_TYPE_ARRAY_IMAGE: * * The #GType for a #VipsArrayImage. */ #define VIPS_TYPE_ARRAY_IMAGE (vips_array_image_get_type()) typedef struct _VipsArrayImage { VipsArea area; } VipsArrayImage; /* See image.h for vips_array_image_new() etc., they need to be declared after * VipsImage. */ GType vips_array_image_get_type(void); void vips_value_set_area( GValue *value, VipsCallbackFn free_fn, void *data ); void *vips_value_get_area( const GValue *value, size_t *length ); const char *vips_value_get_save_string( const GValue *value ); void vips_value_set_save_string( GValue *value, const char *str ); void vips_value_set_save_stringf( GValue *value, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); const char *vips_value_get_ref_string( const GValue *value, size_t *length ); void vips_value_set_ref_string( GValue *value, const char *str ); void *vips_value_get_blob( const GValue *value, size_t *length ); void vips_value_set_blob( GValue *value, VipsCallbackFn free_fn, const void *data, size_t length ); void vips_value_set_blob_free( GValue *value, void *data, size_t length ); void vips_value_set_array( GValue *value, int n, GType type, size_t sizeof_type ); void *vips_value_get_array( const GValue *value, int *n, GType *type, size_t *sizeof_type ); double *vips_value_get_array_double( const GValue *value, int *n ); void vips_value_set_array_double( GValue *value, const double *array, int n ); int *vips_value_get_array_int( const GValue *value, int *n ); void vips_value_set_array_int( GValue *value, const int *array, int n ); GObject **vips_value_get_array_object( const GValue *value, int *n ); void vips_value_set_array_object( GValue *value, int n ); /* See also image.h, that has vips_array_image_get(), vips_array_image_new(), * vips_value_get_array_image() and vips_value_set_array_image(). They need * to be declared after VipsImage. */ #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_TYPE_H*/ libvips-8.9.1/libvips/include/vips/util.h000066400000000000000000000250041361153320700204050ustar00rootroot00000000000000/* Various useful definitions. * * J.Cupitt, 8/4/93 * 15/7/96 JC * - C++ stuff added */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_UTIL_H #define VIPS_UTIL_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include /* Some platforms don't have M_PI :-( */ #define VIPS_PI (3.14159265358979323846) /* Convert degrees->rads and vice-versa. */ #define VIPS_RAD( R ) (((R) / 360.0) * 2.0 * VIPS_PI) #define VIPS_DEG( A ) (((A) / (2.0 * VIPS_PI)) * 360.0) #define VIPS_MAX( A, B ) ((A) > (B) ? (A) : (B)) #define VIPS_MIN( A, B ) ((A) < (B) ? (A) : (B)) #define VIPS_CLIP( A, V, B ) VIPS_MAX( (A), VIPS_MIN( (B), (V) ) ) #define VIPS_FCLIP( A, V, B ) VIPS_FMAX( (A), VIPS_FMIN( (B), (V) ) ) #define VIPS_NUMBER( R ) ((int) (sizeof(R) / sizeof(R[0]))) #define VIPS_ABS( X ) (((X) >= 0) ? (X) : -(X)) /* The built-in isnan and isinf functions provided by gcc 4+ and clang are * up to 7x faster than their libc equivalent included from . */ #if defined(__clang__) || (__GNUC__ >= 4) #define VIPS_ISNAN( V ) __builtin_isnan( V ) #define VIPS_ISINF( V ) __builtin_isinf( V ) #define VIPS_FLOOR( V ) __builtin_floor( V ) #define VIPS_CEIL( V ) __builtin_ceil( V ) #define VIPS_RINT( V ) __builtin_rint( V ) #define VIPS_ROUND( V ) __builtin_round( V ) #define VIPS_FABS( V ) __builtin_fabs( V ) #define VIPS_FMAX( A, B ) __builtin_fmax( A, B ) #define VIPS_FMIN( A, B ) __builtin_fmin( A, B ) #else #define VIPS_ISNAN( V ) isnan( V ) #define VIPS_ISINF( V ) isinf( V ) #define VIPS_FLOOR( V ) floor( V ) #define VIPS_CEIL( V ) ceil( V ) #define VIPS_RINT( V ) rint( V ) #define VIPS_ROUND( V ) round( V ) #define VIPS_FABS( V ) VIPS_ABS( V ) #define VIPS_FMAX( A, B ) VIPS_MAX( A, B ) #define VIPS_FMIN( A, B ) VIPS_MIN( A, B ) #endif /* Testing status before the function call saves a lot of time. */ #define VIPS_ONCE( ONCE, FUNC, CLIENT ) \ G_STMT_START { \ if( G_UNLIKELY( (ONCE)->status != G_ONCE_STATUS_READY ) ) \ (void) g_once( ONCE, FUNC, CLIENT ); \ } G_STMT_END /* VIPS_RINT() does "bankers rounding", it rounds to the nerarest even integer. * For things like image geometry, we want strict nearest int. * * If you know it's unsigned, _UINT is a little faster. */ #define VIPS_ROUND_INT( R ) ((int) ((R) > 0 ? ((R) + 0.5) : ((R) - 0.5))) #define VIPS_ROUND_UINT( R ) ((int) ((R) + 0.5)) /* Round N down and up to the nearest multiple of P. */ #define VIPS_ROUND_DOWN( N, P ) ((N) - ((N) % (P))) #define VIPS_ROUND_UP( N, P ) (VIPS_ROUND_DOWN( (N) + (P) - 1, (P) )) #define VIPS_SWAP( TYPE, A, B ) \ G_STMT_START { \ TYPE t = (A); \ (A) = (B); \ (B) = t; \ } G_STMT_END /* Duff's device. Do OPERation N times in a 16-way unrolled loop. */ #define VIPS_UNROLL( N, OPER ) \ G_STMT_START { \ if( (N) ) { \ int duff_count = ((N) + 15) / 16; \ \ switch( (N) % 16 ) { \ case 0: do { OPER; \ case 15: OPER; \ case 14: OPER; \ case 13: OPER; \ case 12: OPER; \ case 11: OPER; \ case 10: OPER; \ case 9: OPER; \ case 8: OPER; \ case 7: OPER; \ case 6: OPER; \ case 5: OPER; \ case 4: OPER; \ case 3: OPER; \ case 2: OPER; \ case 1: OPER; \ } while( --duff_count > 0 ); \ } \ } \ } G_STMT_END /* The g_info() macro was added in 2.40. */ #ifndef g_info /* Hopefully we have varargs macros. Maybe revisit this. */ #define g_info(...) \ g_log( G_LOG_DOMAIN, G_LOG_LEVEL_INFO, __VA_ARGS__ ) #endif /* Various integer range clips. Record over/under flows. */ #define VIPS_CLIP_UCHAR( V, SEQ ) \ G_STMT_START { \ if( (V) < 0 ) { \ (SEQ)->underflow++; \ (V) = 0; \ } \ else if( (V) > UCHAR_MAX ) { \ (SEQ)->overflow++; \ (V) = UCHAR_MAX; \ } \ } G_STMT_END #define VIPS_CLIP_CHAR( V, SEQ ) \ G_STMT_START { \ if( (V) < SCHAR_MIN ) { \ (SEQ)->underflow++; \ (V) = SCHAR_MIN; \ } \ else if( (V) > SCHAR_MAX ) { \ (SEQ)->overflow++; \ (V) = SCHAR_MAX; \ } \ } G_STMT_END #define VIPS_CLIP_USHORT( V, SEQ ) \ G_STMT_START { \ if( (V) < 0 ) { \ (SEQ)->underflow++; \ (V) = 0; \ } \ else if( (V) > USHRT_MAX ) { \ (SEQ)->overflow++; \ (V) = USHRT_MAX; \ } \ } G_STMT_END #define VIPS_CLIP_SHORT( V, SEQ ) \ G_STMT_START { \ if( (V) < SHRT_MIN ) { \ (SEQ)->underflow++; \ (V) = SHRT_MIN; \ } \ else if( (V) > SHRT_MAX ) { \ (SEQ)->overflow++; \ (V) = SHRT_MAX; \ } \ } G_STMT_END #define VIPS_CLIP_UINT( V, SEQ ) \ G_STMT_START { \ if( (V) < 0 ) { \ (SEQ)->underflow++; \ (V) = 0; \ } \ } G_STMT_END #define VIPS_CLIP_NONE( V, SEQ ) {} /* Not all platforms have PATH_MAX (eg. Hurd) and we don't need a platform one * anyway, just a static buffer big enough for almost any path. */ #define VIPS_PATH_MAX (4096) const char *vips_enum_string( GType enm, int value ); const char *vips_enum_nick( GType enm, int value ); int vips_enum_from_nick( const char *domain, GType type, const char *str ); int vips_flags_from_nick( const char *domain, GType type, const char *nick ); gboolean vips_slist_equal( GSList *l1, GSList *l2 ); void *vips_slist_map2( GSList *list, VipsSListMap2Fn fn, void *a, void *b ); void *vips_slist_map2_rev( GSList *list, VipsSListMap2Fn fn, void *a, void *b ); void *vips_slist_map4( GSList *list, VipsSListMap4Fn fn, void *a, void *b, void *c, void *d ); void *vips_slist_fold2( GSList *list, void *start, VipsSListFold2Fn fn, void *a, void *b ); GSList *vips_slist_filter( GSList *list, VipsSListMap2Fn fn, void *a, void *b ); void vips_slist_free_all( GSList *list ); void *vips_map_equal( void *a, void *b ); void *vips_hash_table_map( GHashTable *hash, VipsSListMap2Fn fn, void *a, void *b ); char *vips_strncpy( char *dest, const char *src, int n ); char *vips_strrstr( const char *haystack, const char *needle ); gboolean vips_ispostfix( const char *a, const char *b ); gboolean vips_iscasepostfix( const char *a, const char *b ); gboolean vips_isprefix( const char *a, const char *b ); char *vips_break_token( char *str, const char *brk ); void vips__chomp( char *str ); int vips_vsnprintf( char *str, size_t size, const char *format, va_list ap ); int vips_snprintf( char *str, size_t size, const char *format, ... ) __attribute__((format(printf, 3, 4))); int vips_filename_suffix_match( const char *path, const char *suffixes[] ); gint64 vips_file_length( int fd ); int vips__write( int fd, const void *buf, size_t count ); int vips__open( const char *filename, int flags, ... ); int vips__open_read( const char *filename ); FILE *vips__fopen( const char *filename, const char *mode ); FILE *vips__file_open_read( const char *filename, const char *fallback_dir, gboolean text_mode ); FILE *vips__file_open_write( const char *filename, gboolean text_mode ); char *vips__file_read( FILE *fp, const char *name, size_t *length_out ); char *vips__file_read_name( const char *name, const char *fallback_dir, size_t *length_out ); int vips__file_write( void *data, size_t size, size_t nmemb, FILE *stream ); guint64 vips__get_bytes( const char *filename, unsigned char buf[], guint64 len ); int vips__fgetc( FILE *fp ); GValue *vips__gvalue_ref_string_new( const char *text ); void vips__gslist_gvalue_free( GSList *list ); GSList *vips__gslist_gvalue_copy( const GSList *list ); GSList *vips__gslist_gvalue_merge( GSList *a, const GSList *b ); char *vips__gslist_gvalue_get( const GSList *list ); gint64 vips__seek_no_error( int fd, gint64 pos, int whence ); gint64 vips__seek( int fd, gint64 pos, int whence ); int vips__ftruncate( int fd, gint64 pos ); int vips_existsf( const char *name, ... ) __attribute__((format(printf, 1, 2))); int vips_mkdirf( const char *name, ... ) __attribute__((format(printf, 1, 2))); int vips_rmdirf( const char *name, ... ) __attribute__((format(printf, 1, 2))); int vips_rename( const char *old_name, const char *new_name ); FILE *vips_popenf( const char *fmt, const char *mode, ... ) __attribute__((format(printf, 1, 3))); /** * VipsToken: * @VIPS_TOKEN_LEFT: left bracket * @VIPS_TOKEN_RIGHT: right bracket * @VIPS_TOKEN_STRING: string constant * @VIPS_TOKEN_EQUALS: equals sign * @VIPS_TOKEN_COMMA: comma * * Tokens returned by the vips lexical analyzer, see vips__token_get(). This * is used to parse option strings for arguments. * * Left and right brackets can be any of (, {, [, <. * * Strings may be in double quotes, and may contain escaped quote characters, * for example string, "string" and "str\"ing". * */ typedef enum { VIPS_TOKEN_LEFT = 1, VIPS_TOKEN_RIGHT, VIPS_TOKEN_STRING, VIPS_TOKEN_EQUALS, VIPS_TOKEN_COMMA } VipsToken; const char *vips__token_get( const char *buffer, VipsToken *token, char *string, int size ); const char *vips__token_must( const char *buffer, VipsToken *token, char *string, int size ); const char *vips__token_need( const char *buffer, VipsToken need_token, char *string, int size ); const char *vips__token_segment( const char *p, VipsToken *token, char *string, int size ); const char *vips__token_segment_need( const char *p, VipsToken need_token, char *string, int size ); const char *vips__find_rightmost_brackets( const char *p ); void vips__filename_split8( const char *name, char *filename, char *option_string ); int vips_ispoweroftwo( int p ); int vips_amiMSBfirst( void ); char *vips__temp_name( const char *format ); void vips__change_suffix( const char *name, char *out, int mx, const char *new_suff, const char **olds, int nolds ); char *vips_realpath( const char *path ); guint32 vips__random( guint32 seed ); guint32 vips__random_add( guint32 seed, int value ); const char *vips__icc_dir( void ); const char *vips__windows_prefix( void ); char *vips__get_iso8601( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_UTIL_H*/ libvips-8.9.1/libvips/include/vips/vector.h000066400000000000000000000101711361153320700207310ustar00rootroot00000000000000/* helper stuff for Orc * * 29/10/10 * - from im_dilate hackery */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VECTOR_H #define VIPS_VECTOR_H /* If we are building with -fcf-protection (run-time checking of * indirect jumps) then Orc won't work. Make sure it's off. * * https://gcc.gnu.org/onlinedocs/gcc/\ * Instrumentation-Options.html#index-fcf-protection * https://gitlab.freedesktop.org/gstreamer/orc/issues/17 * * orc 0.4.30 and later work with cf-protection. */ #ifdef __CET__ #ifndef HAVE_ORC_CF_PROTECTION #undef HAVE_ORC #endif #endif #ifdef HAVE_ORC #include #endif /*HAVE_ORC*/ #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_VECTOR_SOURCE_MAX (10) /* An Orc program. */ typedef struct { /* Handy for debugging. */ const char *name; char *unique_name; /* How many resources we've used so far in this codegen. */ int n_temp; int n_scanline; int n_source; int n_destination; int n_constant; int n_parameter; int n_instruction; /* The scanline sources, and for each variable, the associated line. * "sl0" onwards. */ int sl[VIPS_VECTOR_SOURCE_MAX]; int line[VIPS_VECTOR_SOURCE_MAX]; /* Non-scanline sources, "s1" etc. s[0] is the var for "s1". */ int s[VIPS_VECTOR_SOURCE_MAX]; /* The destination var. */ int d1; #ifdef HAVE_ORC /* The code we have generated. */ OrcProgram *program; #endif /*HAVE_ORC*/ /* Compiled successfully. */ gboolean compiled; } VipsVector; /* An executor. */ typedef struct { #ifdef HAVE_ORC OrcExecutor executor; #endif /*HAVE_ORC*/ VipsVector *vector; } VipsExecutor; /* Set from the command-line. */ extern gboolean vips__vector_enabled; void vips_vector_init( void ); gboolean vips_vector_isenabled( void ); void vips_vector_set_enabled( gboolean enabled ); void vips_vector_free( VipsVector *vector ); VipsVector *vips_vector_new( const char *name, int dsize ); void vips_vector_constant( VipsVector *vector, char *name, int value, int size ); void vips_vector_source_scanline( VipsVector *vector, char *name, int line, int size ); int vips_vector_source_name( VipsVector *vector, const char *name, int size ); void vips_vector_temporary( VipsVector *vector, const char *name, int size ); int vips_vector_parameter( VipsVector *vector, const char *name, int size ); int vips_vector_destination( VipsVector *vector, const char *name, int size ); void vips_vector_asm2( VipsVector *vector, const char *op, const char *a, const char *b ); void vips_vector_asm3( VipsVector *vector, const char *op, const char *a, const char *b, const char *c ); gboolean vips_vector_full( VipsVector *vector ); gboolean vips_vector_compile( VipsVector *vector ); void vips_vector_print( VipsVector *vector ); void vips_executor_set_program( VipsExecutor *executor, VipsVector *vector, int n ); void vips_executor_set_scanline( VipsExecutor *executor, VipsRegion *ir, int x, int y ); void vips_executor_set_destination( VipsExecutor *executor, void *value ); void vips_executor_set_parameter( VipsExecutor *executor, int var, int value ); void vips_executor_set_array( VipsExecutor *executor, int var, void *value ); void vips_executor_run( VipsExecutor *executor ); void vips_vector_to_fixed_point( double *in, int *out, int n, int scale ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_VECTOR_H*/ libvips-8.9.1/libvips/include/vips/version.h.in000066400000000000000000000016021361153320700215200ustar00rootroot00000000000000/* Macros for the header version. */ #ifndef VIPS_VERSION_H #define VIPS_VERSION_H #define VIPS_VERSION "@VIPS_VERSION@" #define VIPS_VERSION_STRING "@VIPS_VERSION_STRING@" #define VIPS_MAJOR_VERSION (@VIPS_MAJOR_VERSION@) #define VIPS_MINOR_VERSION (@VIPS_MINOR_VERSION@) #define VIPS_MICRO_VERSION (@VIPS_MICRO_VERSION@) /* The ABI version, as used for library versioning. */ #define VIPS_LIBRARY_CURRENT (@LIBRARY_CURRENT@) #define VIPS_LIBRARY_REVISION (@LIBRARY_REVISION@) #define VIPS_LIBRARY_AGE (@LIBRARY_AGE@) /** * VIPS_SONAME: * * The name of the shared object containing the vips library, for example * "libvips.so.42", or "libvips-42.dll". */ #include "soname.h" /* Not really anything to do with versions, but this is a handy place to put * it. */ #define VIPS_EXEEXT "@VIPS_EXEEXT@" #define VIPS_ENABLE_DEPRECATED @VIPS_ENABLE_DEPRECATED@ #endif /*VIPS_VERSION_H*/ libvips-8.9.1/libvips/include/vips/video.h000066400000000000000000000024021361153320700205330ustar00rootroot00000000000000/* video.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_VIDEO_H #define IM_VIDEO_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int im_video_v4l1( VipsImage *im, const char *device, int channel, int brightness, int colour, int contrast, int hue, int ngrabs ); int im_video_test( VipsImage *im, int brightness, int error ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_VIDEO_H*/ libvips-8.9.1/libvips/include/vips/vips.h000066400000000000000000000113171361153320700204130ustar00rootroot00000000000000/* @(#) Header file for Birkbeck/VIPS Image Processing Library * Authors: N. Dessipris, K. Martinez, Birkbeck College, London. * Sept 94 * * 15/7/96 JC * - now does C++ extern stuff * - many more protos * 15/4/97 JC * - protos split out * 4/3/98 JC * - IM_ANY added * - sRGB colourspace added * 28/10/98 JC * - VASARI_MAGIC_INTEL and VASARI_MAGIC_SPARC added * 29/9/99 JC * - new locks for threading, no more threadgroup stuff in IMAGE * 30/11/00 JC * - override RGB/CMYK macros on cygwin * 21/9/02 JC * - new Xoffset/Yoffset fields * - rationalized macro names * 6/6/05 Markus Wollgarten * - added Meta header field * 31/7/05 * - added meta.h for new metadata API * 22/8/05 * - scrapped stupid VAS_HD * 30/9/05 * - added sizeof_header field for mmap window read of RAW files * 4/10/05 * - now you have to define IM_ENABLE_DEPRECATED to get broken #defined * 5/10/05 * - added GNUC attributes * 8/5/06 * - added RGB16, GREY16 * 30/10/06 * - added im_window_t * 7/11/07 * - added preclose and evalstart callbacks * - brought time struct in here * 7/3/08 * - MAGIC values should be unsigned * 2/7/08 * - added invalidate callbacks * 7/8/08 * - include , thanks nicola * 30/6/09 * - move deprecated stuff to its own header * 16/5/18 * - remove old vips7 stuff, you must explicitly include it now */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VIPS_H #define VIPS_VIPS_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include #include #include /* If we're being parsed by SWIG, remove gcc attributes. */ #ifdef SWIG # ifndef __attribute__ # define __attribute__(x) /*NOTHING*/ # endif #endif /*SWIG*/ /* Or if this isn't gcc. */ #ifndef __GNUC__ # ifndef __attribute__ # define __attribute__(x) /*NOTHING*/ # endif #endif /*__GNUC__*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* We can't use _ here since this will be compiled by our clients and they may * not have _(). */ #define VIPS_INIT( ARGV0 ) \ (vips_version( 3 ) - vips_version( 5 ) != \ VIPS_LIBRARY_CURRENT - VIPS_LIBRARY_AGE ? ( \ g_warning( "ABI mismatch" ), \ g_warning( "library has ABI version %d", \ vips_version( 3 ) - vips_version( 5 ) ), \ g_warning( "application needs ABI version %d", \ VIPS_LIBRARY_CURRENT - VIPS_LIBRARY_AGE ), \ vips_error( "vips_init", "ABI mismatch" ), \ -1 ) : \ vips_init( ARGV0 )) int vips_init( const char *argv0 ); const char *vips_get_argv0( void ); void vips_shutdown( void ); void vips_thread_shutdown( void ); void vips_add_option_entries( GOptionGroup *option_group ); extern void vips_leak_set( gboolean leak ); const char *vips_version_string( void ); int vips_version( int flag ); const char *vips_guess_prefix( const char *argv0, const char *env_name ); const char *vips_guess_libdir( const char *argv0, const char *env_name ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_VIPS_H*/ libvips-8.9.1/libvips/include/vips/vips7compat.h000066400000000000000000001361001361153320700217040ustar00rootroot00000000000000/* compat with the vips7 API * * 4/3/11 * - hacked up */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VIPS7COMPAT_H #define VIPS_VIPS7COMPAT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Renamed types. */ /* We have this misspelt in earlier versions :( */ #define VIPS_META_IPCT_NAME VIPS_META_IPTC_NAME #define IM_D93_X0 VIPS_D93_X0 #define IM_D93_Y0 VIPS_D93_Y0 #define IM_D93_Z0 VIPS_D93_Z0 #define IM_D75_X0 VIPS_D75_X0 #define IM_D75_Y0 VIPS_D75_Y0 #define IM_D75_Z0 VIPS_D75_Z0 #define IM_D65_X0 VIPS_D65_X0 #define IM_D65_Y0 VIPS_D65_Y0 #define IM_D65_Z0 VIPS_D65_Z0 #define IM_D55_X0 VIPS_D55_X0 #define IM_D55_Y0 VIPS_D55_Y0 #define IM_D55_Z0 VIPS_D55_Z0 #define IM_D50_X0 VIPS_D50_X0 #define IM_D50_Y0 VIPS_D50_Y0 #define IM_D50_Z0 VIPS_D50_Z0 #define IM_A_X0 VIPS_A_X0 #define IM_A_Y0 VIPS_A_Y0 #define IM_A_Z0 VIPS_A_Z0 #define IM_B_X0 VIPS_B_X0 #define IM_B_Y0 VIPS_B_Y0 #define IM_B_Z0 VIPS_B_Z0 #define IM_C_X0 VIPS_C_X0 #define IM_C_Y0 VIPS_C_Y0 #define IM_C_Z0 VIPS_C_Z0 #define IM_E_X0 VIPS_E_X0 #define IM_E_Y0 VIPS_E_Y0 #define IM_E_Z0 VIPS_E_Z0 #define IM_D3250_X0 VIPS_D3250_X0 #define IM_D3250_Y0 VIPS_D3250_Y0 #define IM_D3250_Z0 VIPS_D3250_Z0 #define im_col_Lab2XYZ vips_col_Lab2XYZ #define im_col_XYZ2Lab vips_col_XYZ2Lab #define im_col_ab2h vips_col_ab2h #define im_col_ab2Ch vips_col_ab2Ch #define im_col_Ch2ab vips_col_Ch2ab #define im_col_L2Lucs vips_col_L2Lcmc #define im_col_C2Cucs vips_col_C2Ccmc #define im_col_Ch2hucs vips_col_Ch2hcmc #define im_col_pythagoras vips_pythagoras #define im_col_make_tables_UCS vips_col_make_tables_CMC #define im_col_Lucs2L vips_col_Lcmc2L #define im_col_Cucs2C vips_col_Ccmc2C #define im_col_Chucs2h vips_col_Chcmc2h #define PEL VipsPel #define IM_BANDFMT_NOTSET VIPS_FORMAT_NOTSET #define IM_BANDFMT_UCHAR VIPS_FORMAT_UCHAR #define IM_BANDFMT_CHAR VIPS_FORMAT_CHAR #define IM_BANDFMT_USHORT VIPS_FORMAT_USHORT #define IM_BANDFMT_SHORT VIPS_FORMAT_SHORT #define IM_BANDFMT_UINT VIPS_FORMAT_UINT #define IM_BANDFMT_INT VIPS_FORMAT_INT #define IM_BANDFMT_FLOAT VIPS_FORMAT_FLOAT #define IM_BANDFMT_COMPLEX VIPS_FORMAT_COMPLEX #define IM_BANDFMT_DOUBLE VIPS_FORMAT_DOUBLE #define IM_BANDFMT_DPCOMPLEX VIPS_FORMAT_DPCOMPLEX #define IM_BANDFMT_LAST VIPS_FORMAT_LAST #define VipsBandFmt VipsBandFormat #define IM_SMALLTILE VIPS_DEMAND_STYLE_SMALLTILE #define IM_FATSTRIP VIPS_DEMAND_STYLE_FATSTRIP #define IM_THINSTRIP VIPS_DEMAND_STYLE_THINSTRIP #define IM_ANY VIPS_DEMAND_STYLE_ANY #define IM_CODING_NONE VIPS_CODING_NONE #define IM_CODING_LABQ VIPS_CODING_LABQ #define IM_CODING_RAD VIPS_CODING_RAD #define IM_TYPE_MULTIBAND VIPS_INTERPRETATION_MULTIBAND #define IM_TYPE_B_W VIPS_INTERPRETATION_B_W #define IM_TYPE_HISTOGRAM VIPS_INTERPRETATION_HISTOGRAM #define IM_TYPE_FOURIER VIPS_INTERPRETATION_FOURIER #define IM_TYPE_XYZ VIPS_INTERPRETATION_XYZ #define IM_TYPE_LAB VIPS_INTERPRETATION_LAB #define IM_TYPE_CMYK VIPS_INTERPRETATION_CMYK #define IM_TYPE_LABQ VIPS_INTERPRETATION_LABQ #define IM_TYPE_RGB VIPS_INTERPRETATION_RGB #define IM_TYPE_UCS VIPS_INTERPRETATION_CMC #define IM_TYPE_LCH VIPS_INTERPRETATION_LCH #define IM_TYPE_LABS VIPS_INTERPRETATION_LABS #define IM_TYPE_sRGB VIPS_INTERPRETATION_sRGB #define IM_TYPE_YXY VIPS_INTERPRETATION_YXY #define IM_TYPE_RGB16 VIPS_INTERPRETATION_RGB16 #define IM_TYPE_GREY16 VIPS_INTERPRETATION_GREY16 #define VipsType VipsInterpretation #define IMAGE VipsImage #define REGION VipsRegion #define IM_INTENT_PERCEPTUAL VIPS_INTENT_PERCEPTUAL #define IM_INTENT_RELATIVE_COLORIMETRIC VIPS_INTENT_RELATIVE #define IM_INTENT_SATURATION VIPS_INTENT_SATURATION #define IM_INTENT_ABSOLUTE_COLORIMETRIC VIPS_INTENT_ABSOLUTE /* Renamed macros. */ #define IM_MAX VIPS_MAX #define IM_MIN VIPS_MIN #define IM_RAD VIPS_RAD #define IM_DEG VIPS_DEG #define IM_PI VIPS_PI #define IM_RINT VIPS_RINT #define IM_ABS VIPS_ABS #define IM_NUMBER VIPS_NUMBER #define IM_CLIP VIPS_CLIP #define IM_CLIP_UCHAR VIPS_CLIP_UCHAR #define IM_CLIP_CHAR VIPS_CLIP_CHAR #define IM_CLIP_USHORT VIPS_CLIP_USHORT #define IM_CLIP_SHORT VIPS_CLIP_SHORT #define IM_CLIP_NONE VIPS_CLIP_NONE #define IM_SWAP VIPS_SWAP #define IM_IMAGE_ADDR VIPS_IMAGE_ADDR #define IM_IMAGE_N_ELEMENTS VIPS_IMAGE_N_ELEMENTS #define IM_IMAGE_SIZEOF_ELEMENT VIPS_IMAGE_SIZEOF_ELEMENT #define IM_IMAGE_SIZEOF_PEL VIPS_IMAGE_SIZEOF_PEL #define IM_IMAGE_SIZEOF_LINE VIPS_IMAGE_SIZEOF_LINE #define IM_REGION_LSKIP VIPS_REGION_LSKIP #define IM_REGION_ADDR VIPS_REGION_ADDR #define IM_REGION_ADDR_TOPLEFT VIPS_REGION_ADDR_TOPLEFT #define IM_REGION_N_ELEMENTS VIPS_REGION_N_ELEMENTS #define IM_REGION_SIZEOF_LINE VIPS_REGION_SIZEOF_LINE /* Renamed externs. */ extern const guint64 vips__image_sizeof_bandformat[]; #define im__sizeof_bandfmt vips__image_sizeof_bandformat /* Renamed functions. */ #define im_error vips_error #define im_verror vips_verror #define im_verror_system vips_verror_system #define im_error_system vips_error_system #define im_error_buffer vips_error_buffer #define im_error_clear vips_error_clear #define im_warn vips_warn #define im_vwarn vips_vwarn #define im_diag vips_info #define im_vdiag vips_vinfo #define error_exit vips_error_exit #define im_get_argv0 vips_get_argv0 #define im_version_string vips_version_string #define im_version vips_version #define im_get_option_group vips_get_option_group #define im_guess_prefix vips_guess_prefix #define im_guess_libdir vips_guess_libdir #define im__global_lock vips__global_lock int im_cp_desc(IMAGE *out, IMAGE *in ); int im_cp_descv (IMAGE * im, ...); #define im_cp_desc_array(I, A) vips__image_copy_fields_array(I, A) int im_demand_hint (IMAGE * im, VipsDemandStyle hint, ...); #define im_demand_hint_array( A, B, C ) (vips__demand_hint_array( A, B, C ), 0) #define im_image(P, W, H, B, F) \ vips_image_new_from_memory((P), 0, (W), (H), (B), (F)) #define im_binfile vips_image_new_from_file_raw #define im__open_temp vips_image_new_temp_file #define im__test_kill( I ) (vips_image_get_kill( I )) #define im__start_eval( I ) (vips_image_preeval( I ), vips_image_get_kill( I )) #define im__handle_eval( I, W, H ) \ (vips_image_eval( I, W, H ), vips_image_get_kill( I )) #define im__end_eval vips_image_posteval #define im_invalidate vips_image_invalidate_all #define im_isfile vips_image_isfile #define im_printdesc( I ) vips_object_print_dump( VIPS_OBJECT( I ) ) /* im_openout() needs to have this visible. */ VipsImage * vips_image_new_mode( const char *filename, const char *mode ); #define im_openout( F ) vips_image_new_mode( F, "w" ) #define im_setbuf( F ) vips_image_new( "t" ) #define im_initdesc( image, \ xsize, ysize, bands, bandbits, bandfmt, coding, \ type, xres, yres, xo, yo ) \ vips_image_init_fields( image, \ xsize, ysize, bands, bandfmt, coding, \ type, xres, yres ) #define im__open_image_file vips__open_image_read #define im_setupout vips_image_write_prepare #define im_writeline( Y, IM, P ) vips_image_write_line( IM, Y, P ) #define im_prepare vips_region_prepare #define im_prepare_to vips_region_prepare_to #define im_region_create vips_region_new #define im_region_free g_object_unref #define im_region_region vips_region_region #define im_region_buffer vips_region_buffer #define im_region_black vips_region_black #define im_region_paint vips_region_paint #define im_prepare_many vips_region_prepare_many #define im__region_no_ownership vips__region_no_ownership #define im_image_sanity( I ) (!vips_object_sanity( VIPS_OBJECT( I ) )) #define im_image_sanity_all vips_object_sanity_all #define im__print_all vips_object_print_all /* Compat functions. */ int im_init_world( const char *argv0 ); VipsImage *im_open( const char *filename, const char *mode ); VipsImage *im_open_local( VipsImage *parent, const char *filename, const char *mode ); int im_open_local_array( VipsImage *parent, VipsImage **images, int n, const char *filename, const char *mode ); #define im_callback_fn VipsCallbackFn int im_add_callback( VipsImage *im, const char *callback, im_callback_fn fn, void *a, void *b ); int im_add_callback1( VipsImage *im, const char *callback, im_callback_fn fn, void *a, void *b ); #define im_add_close_callback( IM, FN, A, B ) \ im_add_callback( IM, "close", FN, A, B ) #define im_add_postclose_callback( IM, FN, A, B ) \ im_add_callback( IM, "postclose", FN, A, B ) #define im_add_preclose_callback( IM, FN, A, B ) \ im_add_callback( IM, "preclose", FN, A, B ) #define im_add_evalstart_callback( IM, FN, A, B ) \ im_add_callback1( IM, "preeval", FN, A, B ) #define im_add_evalend_callback( IM, FN, A, B ) \ im_add_callback1( IM, "posteval", FN, A, B ) #define im_add_eval_callback( IM, FN, A, B ) \ (vips_image_set_progress( IM, TRUE ), \ im_add_callback1( IM, "eval", FN, A, B )) #define im_add_invalidate_callback( IM, FN, A, B ) \ im_add_callback( IM, "invalidate", FN, A, B ) #define im_bits_of_fmt( fmt ) (vips_format_sizeof( fmt ) << 3) typedef void *(*im_construct_fn)( void *, void *, void * ); void *im_local( VipsImage *im, im_construct_fn cons, im_callback_fn dest, void *a, void *b, void *c ); int im_local_array( VipsImage *im, void **out, int n, im_construct_fn cons, im_callback_fn dest, void *a, void *b, void *c ); int im_close( VipsImage *im ); VipsImage *im_init( const char *filename ); const char *im_Type2char( VipsInterpretation type ); const char *im_BandFmt2char( VipsBandFormat fmt ); const char *im_Coding2char( VipsCoding coding ); const char *im_Compression2char( int n ); const char *im_dtype2char( VipsImageType n ); const char *im_dhint2char( VipsDemandStyle style ); VipsInterpretation im_char2Type( const char *str ); VipsBandFormat im_char2BandFmt( const char *str ); VipsCoding im_char2Coding( const char *str ); VipsImageType im_char2dtype( const char *str ); VipsDemandStyle im_char2dhint( const char *str ); #define Rect VipsRect #define IM_RECT_RIGHT VIPS_RECT_RIGHT #define IM_RECT_BOTTOM VIPS_RECT_BOTTOM #define IM_RECT_HCENTRE VIPS_RECT_HCENTRE #define IM_RECT_VCENTRE VIPS_RECT_VCENTRE #define im_rect_marginadjust vips_rect_marginadjust #define im_rect_includespoint vips_rect_includespoint #define im_rect_includesrect vips_rect_includesrect #define im_rect_intersectrect vips_rect_intersectrect #define im_rect_isempty vips_rect_isempty #define im_rect_unionrect vips_rect_unionrect #define im_rect_equalsrect vips_rect_equalsrect #define im_rect_dup vips_rect_dup #define im_rect_normalise vips_rect_normalise #define im_start_one vips_start_one #define im_stop_one vips_stop_one #define im_start_many vips_start_many #define im_stop_many vips_stop_many #define im_allocate_input_array vips_allocate_input_array #define im_start_fn VipsStartFn typedef int (*im_generate_fn)( VipsRegion *out, void *seq, void *a, void *b ); #define im_stop_fn VipsStopFn int im_generate( VipsImage *im, im_start_fn start, im_generate_fn generate, im_stop_fn stop, void *a, void *b ); #define im__mmap vips__mmap #define im__munmap vips__munmap #define im_mapfile vips_mapfile #define im_mapfilerw vips_mapfilerw #define im_remapfilerw vips_remapfilerw #define im__print_renders vips__print_renders int im_cache( IMAGE *in, IMAGE *out, int width, int height, int max ); #define IM_FREEF( F, S ) \ G_STMT_START { \ if( S ) { \ (void) F( (S) ); \ (S) = 0; \ } \ } G_STMT_END /* Can't just use VIPS_FREEF(), we want the extra cast to void on the argument * to vips_free() to make sure we can work for "const char *" variables. */ #define IM_FREE( S ) \ G_STMT_START { \ if( S ) { \ (void) im_free( (void *) (S) ); \ (S) = 0; \ } \ } G_STMT_END #define IM_SETSTR( S, V ) \ G_STMT_START { \ const char *sst = (V); \ \ if( (S) != sst ) { \ if( !(S) || !sst || strcmp( (S), sst ) != 0 ) { \ IM_FREE( S ); \ if( sst ) \ (S) = im_strdup( NULL, sst ); \ } \ } \ } G_STMT_END #define im_malloc( IM, SZ ) \ (vips_malloc( VIPS_OBJECT( IM ), (SZ) )) #define im_free vips_free #define im_strdup( IM, STR ) \ (vips_strdup( VIPS_OBJECT( IM ), (STR) )) #define IM_NEW( IM, T ) ((T *) im_malloc( (IM), sizeof( T ))) #define IM_ARRAY( IM, N, T ) ((T *) im_malloc( (IM), (N) * sizeof( T ))) #define im_incheck vips_image_wio_input #define im_outcheck( I ) (0) #define im_rwcheck vips_image_inplace #define im_pincheck vips_image_pio_input #define im_poutcheck( I ) (0) #define im_iocheck( I, O ) im_incheck( I ) #define im_piocheck( I, O ) im_pincheck( I ) #define im_check_uncoded vips_check_uncoded #define im_check_coding_known vips_check_coding_known #define im_check_coding_labq vips_check_coding_labq #define im_check_coding_rad vips_check_coding_rad #define im_check_coding_noneorlabq vips_check_coding_noneorlabq #define im_check_coding_same vips_check_coding_same #define im_check_mono vips_check_mono #define im_check_bands_1or3 vips_check_bands_1or3 #define im_check_bands vips_check_bands #define im_check_bands_1orn vips_check_bands_1orn #define im_check_bands_1orn_unary vips_check_bands_1orn_unary #define im_check_bands_same vips_check_bands_same #define im_check_bandno vips_check_bandno #define im_check_int vips_check_int #define im_check_uint vips_check_uint #define im_check_uintorf vips_check_uintorf #define im_check_noncomplex vips_check_noncomplex #define im_check_complex vips_check_complex #define im_check_format vips_check_format #define im_check_u8or16 vips_check_u8or16 #define im_check_8or16 vips_check_8or16 #define im_check_u8or16orf vips_check_u8or16orf #define im_check_format_same vips_check_format_same #define im_check_size_same vips_check_size_same #define im_check_vector vips_check_vector #define im_check_hist vips_check_hist #define im_check_imask vips_check_imask #define im_check_dmask vips_check_dmask #define vips_bandfmt_isint vips_band_format_isint #define vips_bandfmt_isuint vips_band_format_isuint #define vips_bandfmt_isfloat vips_band_format_isfloat #define vips_bandfmt_iscomplex vips_band_format_iscomplex #define im__change_suffix vips__change_suffix /* Buffer processing. */ typedef void (*im_wrapone_fn)( void *in, void *out, int width, void *a, void *b ); int im_wrapone( VipsImage *in, VipsImage *out, im_wrapone_fn fn, void *a, void *b ); typedef void (*im_wraptwo_fn)( void *in1, void *in2, void *out, int width, void *a, void *b ); int im_wraptwo( VipsImage *in1, VipsImage *in2, VipsImage *out, im_wraptwo_fn fn, void *a, void *b ); typedef void (*im_wrapmany_fn)( void **in, void *out, int width, void *a, void *b ); int im_wrapmany( VipsImage **in, VipsImage *out, im_wrapmany_fn fn, void *a, void *b ); #define IM_META_EXIF_NAME VIPS_META_EXIF_NAME #define IM_META_ICC_NAME VIPS_META_ICC_NAME #define IM_META_RESOLUTION_UNIT VIPS_META_RESOLUTION_UNIT #define IM_TYPE_SAVE_STRING VIPS_TYPE_SAVE_STRING #define IM_TYPE_BLOB VIPS_TYPE_BLOB #define IM_TYPE_AREA VIPS_TYPE_AREA #define IM_TYPE_REF_STRING VIPS_TYPE_REF_STRING #define im_header_map_fn VipsImageMapFn #define im_header_map vips_image_map #define im_header_int vips_image_get_int #define im_header_double vips_image_get_double #define im_header_string( IMAGE, FIELD, STRING ) \ vips_image_get_string( IMAGE, FIELD, (const char **) STRING ) #define im_header_as_string vips_image_get_as_string #define im_header_get_typeof vips_image_get_typeof #define im_header_get vips_image_get #define im_histlin vips_image_history_printf #define im_updatehist vips_image_history_args #define im_history_get vips_image_get_history #define im_save_string_get vips_value_get_save_string #define im_save_string_set vips_value_set_save_string #define im_save_string_setf vips_value_set_save_stringf #define im_ref_string_set vips_value_set_ref_string #define im_ref_string_get( V ) vips_value_get_ref_string( V, NULL ) size_t im_ref_string_get_length( const GValue *value ); #define im_blob_get vips_value_get_blob #define im_blob_set vips_value_set_blob #define im_meta_set( A, B, C ) (vips_image_set( A, B, C ), 0) #define im_meta_remove vips_image_remove #define im_meta_get vips_image_get #define im_meta_get_typeof vips_image_get_typeof #define im_meta_set_int( A, B, C ) (vips_image_set_int( A, B, C ), 0) #define im_meta_get_int vips_image_get_int #define im_meta_set_double( A, B, C ) (vips_image_set_double( A, B, C ), 0) #define im_meta_get_double vips_image_get_double #define im_meta_set_area( A, B, C, D ) (vips_image_set_area( A, B, C, D ), 0) #define im_meta_get_area vips_image_get_area #define im_meta_set_string( A, B, C ) (vips_image_set_string( A, B, C ), 0) #define im_meta_get_string vips_image_get_string #define im_meta_set_blob( A, B, C, D, E ) \ (vips_image_set_blob( A, B, C, D, E ), 0) #define im_meta_get_blob vips_image_get_blob #define im_semaphore_t VipsSemaphore #define im_semaphore_up vips_semaphore_up #define im_semaphore_down vips_semaphore_down #define im_semaphore_upn vips_semaphore_upn #define im_semaphore_downn vips_semaphore_downn #define im_semaphore_destroy vips_semaphore_destroy #define im_semaphore_init vips_semaphore_init #define im__open_image_read vips__open_image_read #define im_image_open_input vips_image_open_input #define im_image_open_output vips_image_open_output #define im__has_extension_block vips__has_extension_block #define im__read_extension_block vips__read_extension_block #define im__write_extension_block vips__write_extension_block #define im__writehist vips__writehist #define im__read_header_bytes vips__read_header_bytes #define im__write_header_bytes vips__write_header_bytes #define VSListMap2Fn VipsSListMap2Fn #define VSListMap4Fn VipsSListMap4Fn #define VSListFold2Fn VipsSListFold2Fn #define im_slist_equal vips_slist_equal #define im_slist_map2 vips_slist_map2 #define im_slist_map2_rev vips_slist_map2_rev #define im_slist_map4 vips_slist_map4 #define im_slist_fold2 vips_slist_fold2 #define im_slist_filter vips_slist_filter #define im_slist_free_all vips_slist_free_all #define im_map_equal vips_map_equal #define im_hash_table_map vips_hash_table_map #define im_strncpy vips_strncpy #define im_strrstr vips_strrstr #define im_ispostfix vips_ispostfix #define im_isprefix vips_isprefix #define im_break_token vips_break_token #define im_vsnprintf vips_vsnprintf #define im_snprintf vips_snprintf #define im_file_length vips_file_length #define im__write vips__write #define im__file_open_read vips__file_open_read #define im__file_open_write vips__file_open_write #define im__file_read vips__file_read #define im__file_read_name vips__file_read_name #define im__file_write vips__file_write #define im__get_bytes vips__get_bytes #define im__gvalue_ref_string_new vips__gvalue_ref_string_new #define im__gslist_gvalue_free vips__gslist_gvalue_free #define im__gslist_gvalue_copy vips__gslist_gvalue_copy #define im__gslist_gvalue_merge vips__gslist_gvalue_merge #define im__gslist_gvalue_get vips__gslist_gvalue_get #define im__seek vips__seek #define im__ftruncate vips__ftruncate #define im_existsf vips_existsf #define im_popenf vips_popenf #define im_ispoweroftwo vips_ispoweroftwo #define im_amiMSBfirst vips_amiMSBfirst #define im__temp_name vips__temp_name #define IM_VERSION_STRING VIPS_VERSION_STRING #define IM_MAJOR_VERSION VIPS_MAJOR_VERSION #define IM_MINOR_VERSION VIPS_MINOR_VERSION #define IM_MICRO_VERSION VIPS_MICRO_VERSION #define IM_EXEEXT VIPS_EXEEXT #define IM_SIZEOF_HEADER VIPS_SIZEOF_HEADER #define im_concurrency_set vips_concurrency_set #define im_concurrency_get vips_concurrency_get int im_init_world( const char *argv0 ); int im_add( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_subtract( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_multiply( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_divide( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_min( VipsImage *in, double *out ); int im_minpos( VipsImage *in, int *xpos, int *ypos, double *out ); int im_max( VipsImage *in, double *out ); int im_maxpos( VipsImage *in, int *xpos, int *ypos, double *out ); int im_avg( VipsImage *in, double *out ); int im_deviate( VipsImage *in, double *out ); int im_invert( VipsImage *in, VipsImage *out ); int im_lintra( double a, VipsImage *in, double b, VipsImage *out ); int im_lintra_vec( int n, double *a, VipsImage *in, double *b, VipsImage *out ); int im_abs( VipsImage *in, VipsImage *out ); int im_sign( VipsImage *in, VipsImage *out ); DOUBLEMASK *im_stats( VipsImage *in ); DOUBLEMASK *im_measure_area( VipsImage *im, int left, int top, int width, int height, int h, int v, int *sel, int nsel, const char *name ); int im_sintra( VipsImage *in, VipsImage *out ); int im_costra( VipsImage *in, VipsImage *out ); int im_tantra( VipsImage *in, VipsImage *out ); int im_asintra( VipsImage *in, VipsImage *out ); int im_acostra( VipsImage *in, VipsImage *out ); int im_atantra( VipsImage *in, VipsImage *out ); int im_logtra( VipsImage *in, VipsImage *out ); int im_log10tra( VipsImage *in, VipsImage *out ); int im_exptra( VipsImage *in, VipsImage *out ); int im_exp10tra( VipsImage *in, VipsImage *out ); int im_floor( VipsImage *in, VipsImage *out ); int im_rint( VipsImage *in, VipsImage *out ); int im_ceil( VipsImage *in, VipsImage *out ); int im_equal( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_notequal( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_less( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_lesseq( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_more( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_moreeq( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_andimage( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_orimage( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_eorimage( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_andimage_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_orimage_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_eorimage_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_andimageconst( VipsImage *in, VipsImage *out, double c ); int im_orimageconst( VipsImage *in, VipsImage *out, double c ); int im_eorimageconst( VipsImage *in, VipsImage *out, double c ); int im_shiftleft_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_shiftleft( VipsImage *in, VipsImage *out, int n ); int im_shiftright_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_shiftright( VipsImage *in, VipsImage *out, int n ); int im_remainder( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_remainder_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_remainderconst( VipsImage *in, VipsImage *out, double c ); int im_powtra( VipsImage *in, VipsImage *out, double e ); int im_powtra_vec( VipsImage *in, VipsImage *out, int n, double *e ); int im_expntra( VipsImage *in, VipsImage *out, double e ); int im_expntra_vec( VipsImage *in, VipsImage *out, int n, double *e ); int im_equal_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_notequal_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_less_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_lesseq_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_more_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_moreeq_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_equalconst( VipsImage *in, VipsImage *out, double c ); int im_notequalconst( VipsImage *in, VipsImage *out, double c ); int im_lessconst( VipsImage *in, VipsImage *out, double c ); int im_lesseqconst( VipsImage *in, VipsImage *out, double c ); int im_moreconst( VipsImage *in, VipsImage *out, double c ); int im_moreeqconst( VipsImage *in, VipsImage *out, double c ); int im_maxpos_vec( VipsImage *im, int *xpos, int *ypos, double *maxima, int n ); int im_minpos_vec( VipsImage *im, int *xpos, int *ypos, double *minima, int n ); int im_maxpos_avg( VipsImage *im, double *xpos, double *ypos, double *out ); int im_linreg( VipsImage **ins, VipsImage *out, double *xs ); int im_cross_phase( VipsImage *a, VipsImage *b, VipsImage *out ); int im_point( VipsImage *im, VipsInterpolate *interpolate, double x, double y, int band, double *out ); int im_point_bilinear( VipsImage *im, double x, double y, int band, double *out ); int im_copy( VipsImage *in, VipsImage *out ); int im_copy_set( VipsImage *in, VipsImage *out, VipsInterpretation interpretation, float xres, float yres, int xoffset, int yoffset ); int im_copy_set_meta( VipsImage *in, VipsImage *out, const char *field, GValue *value ); int im_copy_morph( VipsImage *in, VipsImage *out, int bands, VipsBandFormat format, VipsCoding coding ); int im_copy_swap( VipsImage *in, VipsImage *out ); int im_copy_file( VipsImage *in, VipsImage *out ); int im_copy_native( VipsImage *in, VipsImage *out, gboolean is_msb_first ); int im_embed( VipsImage *in, VipsImage *out, int type, int x, int y, int width, int height ); int im_fliphor( VipsImage *in, VipsImage *out ); int im_flipver( VipsImage *in, VipsImage *out ); int im_insert( VipsImage *main, VipsImage *sub, VipsImage *out, int x, int y ); int im_insert_noexpand( VipsImage *main, VipsImage *sub, VipsImage *out, int x, int y ); int im_lrjoin( VipsImage *left, VipsImage *right, VipsImage *out ); int im_tbjoin( VipsImage *top, VipsImage *bottom, VipsImage *out ); int im_extract_area( VipsImage *in, VipsImage *out, int left, int top, int width, int height ); int im_extract_band( VipsImage *in, VipsImage *out, int band ); int im_extract_bands( VipsImage *in, VipsImage *out, int band, int nbands ); int im_extract_areabands( VipsImage *in, VipsImage *out, int left, int top, int width, int height, int band, int nbands ); int im_replicate( VipsImage *in, VipsImage *out, int across, int down ); int im_wrap( VipsImage *in, VipsImage *out, int x, int y ); int im_rotquad( VipsImage *in, VipsImage *out ); int im_clip2fmt( VipsImage *in, VipsImage *out, VipsBandFormat fmt ); int im_bandjoin( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_gbandjoin( VipsImage **in, VipsImage *out, int n ); int im_rank_image( VipsImage **in, VipsImage *out, int n, int index ); int im_maxvalue( VipsImage **in, VipsImage *out, int n ); int im_grid( VipsImage *in, VipsImage *out, int tile_height, int across, int down ); int im_scale( VipsImage *in, VipsImage *out ); int im_scaleps( VipsImage *in, VipsImage *out ); int im_msb( VipsImage *in, VipsImage *out ); int im_msb_band( VipsImage *in, VipsImage *out, int band ); int im_zoom( VipsImage *in, VipsImage *out, int xfac, int yfac ); int im_subsample( VipsImage *in, VipsImage *out, int xshrink, int yshrink ); int im_gaussnoise( VipsImage *out, int x, int y, double mean, double sigma ); int im_text( VipsImage *out, const char *text, const char *font, int width, int alignment, int dpi ); int im_black( VipsImage *out, int x, int y, int bands ); int im_make_xy( VipsImage *out, const int xsize, const int ysize ); int im_zone( VipsImage *out, int size ); int im_fzone( VipsImage *out, int size ); int im_feye( VipsImage *out, const int xsize, const int ysize, const double factor ); int im_eye( VipsImage *out, const int xsize, const int ysize, const double factor ); int im_grey( VipsImage *out, const int xsize, const int ysize ); int im_fgrey( VipsImage *out, const int xsize, const int ysize ); int im_sines( VipsImage *out, int xsize, int ysize, double horfreq, double verfreq ); int im_buildlut( DOUBLEMASK *input, VipsImage *output ); int im_invertlut( DOUBLEMASK *input, VipsImage *output, int lut_size ); int im_identity( VipsImage *lut, int bands ); int im_identity_ushort( VipsImage *lut, int bands, int sz ); int im_tone_build_range( VipsImage *out, int in_max, int out_max, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ); int im_tone_build( VipsImage *out, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ); int im_system( VipsImage *im, const char *cmd, char **out ); VipsImage *im_system_image( VipsImage *im, const char *in_format, const char *out_format, const char *cmd_format, char **log ); int im_c2amph( VipsImage *in, VipsImage *out ); int im_c2rect( VipsImage *in, VipsImage *out ); int im_c2imag( VipsImage *in, VipsImage *out ); int im_c2real( VipsImage *in, VipsImage *out ); int im_ri2c( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_rot90( VipsImage *in, VipsImage *out ); int im_rot180( VipsImage *in, VipsImage *out ); int im_rot270( VipsImage *in, VipsImage *out ); int im_ifthenelse( VipsImage *c, VipsImage *a, VipsImage *b, VipsImage *out ); int im_blend( VipsImage *c, VipsImage *a, VipsImage *b, VipsImage *out ); DOUBLEMASK *im_vips2mask( VipsImage *in, const char *filename ); INTMASK *im_vips2imask( IMAGE *in, const char *filename ); int im_mask2vips( DOUBLEMASK *in, VipsImage *out ); int im_imask2vips( INTMASK *in, VipsImage *out ); int im_bandmean( VipsImage *in, VipsImage *out ); int im_recomb( VipsImage *in, VipsImage *out, DOUBLEMASK *recomb ); int im_argb2rgba( VipsImage *in, VipsImage *out ); int im_falsecolour( VipsImage *in, VipsImage *out ); int im_gammacorrect( VipsImage *in, VipsImage *out, double exponent ); int im_tile_cache_random( IMAGE *in, IMAGE *out, int tile_width, int tile_height, int max_tiles ); int im_shrink( VipsImage *in, VipsImage *out, double xshrink, double yshrink ); int im_affinei( VipsImage *in, VipsImage *out, VipsInterpolate *interpolate, double a, double b, double c, double d, double dx, double dy, int ox, int oy, int ow, int oh ); int im_affinei_all( VipsImage *in, VipsImage *out, VipsInterpolate *interpolate, double a, double b, double c, double d, double dx, double dy ) ; int im_rightshift_size( VipsImage *in, VipsImage *out, int xshift, int yshift, int band_fmt ); int im_Lab2XYZ_temp( IMAGE *in, IMAGE *out, double X0, double Y0, double Z0 ); int im_Lab2XYZ( IMAGE *in, IMAGE *out ); int im_XYZ2Lab( VipsImage *in, VipsImage *out ); int im_XYZ2Lab_temp( VipsImage *in, VipsImage *out, double X0, double Y0, double Z0 ); int im_Lab2LCh( VipsImage *in, VipsImage *out ); int im_LCh2Lab( VipsImage *in, VipsImage *out ); int im_LCh2UCS( VipsImage *in, VipsImage *out ); int im_UCS2LCh( VipsImage *in, VipsImage *out ); int im_XYZ2Yxy( VipsImage *in, VipsImage *out ); int im_Yxy2XYZ( VipsImage *in, VipsImage *out ); int im_float2rad( VipsImage *in, VipsImage *out ); int im_rad2float( VipsImage *in, VipsImage *out ); int im_Lab2LabQ( VipsImage *in, VipsImage *out ); int im_LabQ2Lab( VipsImage *in, VipsImage *out ); int im_Lab2LabS( VipsImage *in, VipsImage *out ); int im_LabS2Lab( VipsImage *in, VipsImage *out ); int im_LabQ2LabS( VipsImage *in, VipsImage *out ); int im_LabS2LabQ( VipsImage *in, VipsImage *out ); int im_LabQ2sRGB( VipsImage *in, VipsImage *out ); int im_XYZ2sRGB( IMAGE *in, IMAGE *out ); int im_sRGB2XYZ( IMAGE *in, IMAGE *out ); struct im_col_display; #define im_col_displays(S) (NULL) #define im_LabQ2disp_build_table(A, B) (NULL) #define im_LabQ2disp_table(A, B, C) (im_LabQ2disp(A, B, C)) int im_Lab2disp( IMAGE *in, IMAGE *out, struct im_col_display *disp ); int im_disp2Lab( IMAGE *in, IMAGE *out, struct im_col_display *disp ); int im_dE_fromdisp( IMAGE *, IMAGE *, IMAGE *, struct im_col_display * ); int im_dECMC_fromdisp( IMAGE *, IMAGE *, IMAGE *, struct im_col_display * ); #define im_disp2XYZ(A, B, C) (im_sRGB2XYZ(A, B)) #define im_XYZ2disp(A, B, C) (im_XYZ2sRGB(A, B)) #define im_LabQ2disp(A, B, C) (im_LabQ2sRGB(A, B)) int im_icc_transform( VipsImage *in, VipsImage *out, const char *input_profile_filename, const char *output_profile_filename, VipsIntent intent ); #define im_icc_present vips_icc_present int im_icc_import( VipsImage *in, VipsImage *out, const char *input_profile_filename, VipsIntent intent ); int im_icc_import_embedded( VipsImage *in, VipsImage *out, VipsIntent intent ); int im_icc_export_depth( VipsImage *in, VipsImage *out, int depth, const char *output_profile_filename, VipsIntent intent ); int im_icc_ac2rc( VipsImage *in, VipsImage *out, const char *profile_filename ); int im_LabQ2XYZ( VipsImage *in, VipsImage *out ); int im_UCS2XYZ( VipsImage *in, VipsImage *out ); int im_UCS2Lab( VipsImage *in, VipsImage *out ); int im_Lab2UCS( VipsImage *in, VipsImage *out ); int im_XYZ2UCS( VipsImage *in, VipsImage *out ); int im_dE_fromLab( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_dECMC_fromLab( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_dE_fromXYZ( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_dE00_fromLab( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_lab_morph( VipsImage *in, VipsImage *out, DOUBLEMASK *mask, double L_offset, double L_scale, double a_scale, double b_scale ); #define im_col_dE00 vips_col_dE00 int im_quadratic( IMAGE *in, IMAGE *out, IMAGE *coeff ); int im_maplut( VipsImage *in, VipsImage *out, VipsImage *lut ); int im_hist( VipsImage *in, VipsImage *out, int bandno ); int im_histgr( VipsImage *in, VipsImage *out, int bandno ); int im_histcum( VipsImage *in, VipsImage *out ); int im_histnorm( VipsImage *in, VipsImage *out ); int im_histeq( VipsImage *in, VipsImage *out ); int im_heq( VipsImage *in, VipsImage *out, int bandno ); int im_histnD( VipsImage *in, VipsImage *out, int bins ); int im_hist_indexed( VipsImage *index, VipsImage *value, VipsImage *out ); int im_histplot( VipsImage *in, VipsImage *out ); int im_project( VipsImage *in, VipsImage *hout, VipsImage *vout ); int im_profile( IMAGE *in, IMAGE *out, int dir ); int im_hsp( VipsImage *in, VipsImage *ref, VipsImage *out ); int im_histspec( VipsImage *in, VipsImage *ref, VipsImage *out ); int im_lhisteq( VipsImage *in, VipsImage *out, int xwin, int ywin ); int im_stdif( VipsImage *in, VipsImage *out, double a, double m0, double b, double s0, int xwin, int ywin ); int im_mpercent( VipsImage *in, double percent, int *out ); int im_mpercent_hist( VipsImage *hist, double percent, int *out ); int im_ismonotonic( VipsImage *lut, int *out ); int im_tone_analyse( VipsImage *in, VipsImage *out, double Ps, double Pm, double Ph, double S, double M, double H ); int im_tone_map( VipsImage *in, VipsImage *out, VipsImage *lut ); /* Not really correct, but who uses these. */ #define im_lhisteq_raw im_lhisteq #define im_stdif_raw im_stdif /* ruby-vips uses this */ #define vips_class_map_concrete_all vips_class_map_all int im_dilate( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_erode( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_aconv( VipsImage *in, VipsImage *out, DOUBLEMASK *mask, int n_layers, int cluster ); int im_conv( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_conv_f( VipsImage *in, VipsImage *out, DOUBLEMASK *mask ); int im_aconvsep( VipsImage *in, VipsImage *out, DOUBLEMASK *mask, int n_layers ); int im_convsep( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_convsep_f( VipsImage *in, VipsImage *out, DOUBLEMASK *mask ); int im_compass( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_gradient( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_lindetect( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_addgnoise( VipsImage *in, VipsImage *out, double sigma ); int im_contrast_surface_raw( IMAGE *in, IMAGE *out, int half_win_size, int spacing ); int im_contrast_surface( VipsImage *in, VipsImage *out, int half_win_size, int spacing ); int im_grad_x( VipsImage *in, VipsImage *out ); int im_grad_y( VipsImage *in, VipsImage *out ); int im_fastcor( VipsImage *in, VipsImage *ref, VipsImage *out ); int im_spcor( VipsImage *in, VipsImage *ref, VipsImage *out ); int im_gradcor( VipsImage *in, VipsImage *ref, VipsImage *out ); int im_sharpen( VipsImage *in, VipsImage *out, int mask_size, double x1, double y2, double y3, double m1, double m2 ); typedef enum { IM_MASK_IDEAL_HIGHPASS = 0, IM_MASK_IDEAL_LOWPASS = 1, IM_MASK_BUTTERWORTH_HIGHPASS = 2, IM_MASK_BUTTERWORTH_LOWPASS = 3, IM_MASK_GAUSS_HIGHPASS = 4, IM_MASK_GAUSS_LOWPASS = 5, IM_MASK_IDEAL_RINGPASS = 6, IM_MASK_IDEAL_RINGREJECT = 7, IM_MASK_BUTTERWORTH_RINGPASS = 8, IM_MASK_BUTTERWORTH_RINGREJECT = 9, IM_MASK_GAUSS_RINGPASS = 10, IM_MASK_GAUSS_RINGREJECT = 11, IM_MASK_IDEAL_BANDPASS = 12, IM_MASK_IDEAL_BANDREJECT = 13, IM_MASK_BUTTERWORTH_BANDPASS = 14, IM_MASK_BUTTERWORTH_BANDREJECT = 15, IM_MASK_GAUSS_BANDPASS = 16, IM_MASK_GAUSS_BANDREJECT = 17, IM_MASK_FRACTAL_FLT = 18 } ImMaskType; /* We had them in the VIPS namespace for a while before deprecating them. */ #define VIPS_MASK_IDEAL_HIGHPASS IM_MASK_IDEAL_HIGHPASS #define VIPS_MASK_IDEAL_LOWPASS IM_MASK_IDEAL_LOWPASS #define VIPS_MASK_BUTTERWORTH_HIGHPASS IM_MASK_BUTTERWORTH_HIGHPASS #define VIPS_MASK_BUTTERWORTH_LOWPASS IM_MASK_BUTTERWORTH_LOWPASS #define VIPS_MASK_GAUSS_HIGHPASS IM_MASK_GAUSS_HIGHPASS #define VIPS_MASK_GAUSS_LOWPASS IM_MASK_GAUSS_LOWPASS #define VIPS_MASK_IDEAL_RINGPASS IM_MASK_IDEAL_RINGPASS #define VIPS_MASK_IDEAL_RINGREJECT IM_MASK_IDEAL_RINGREJECT #define VIPS_MASK_BUTTERWORTH_RINGPASS IM_MASK_BUTTERWORTH_RINGPASS #define VIPS_MASK_BUTTERWORTH_RINGREJECT IM_MASK_BUTTERWORTH_RINGREJECT #define VIPS_MASK_GAUSS_RINGPASS IM_MASK_GAUSS_RINGPASS #define VIPS_MASK_GAUSS_RINGREJECT IM_MASK_GAUSS_RINGREJECT #define VIPS_MASK_IDEAL_BANDPASS IM_MASK_IDEAL_BANDPASS #define VIPS_MASK_IDEAL_BANDREJECT IM_MASK_IDEAL_BANDREJECT #define VIPS_MASK_BUTTERWORTH_BANDPASS IM_MASK_BUTTERWORTH_BANDPASS #define VIPS_MASK_BUTTERWORTH_BANDREJECT IM_MASK_BUTTERWORTH_BANDREJECT #define VIPS_MASK_GAUSS_BANDPASS IM_MASK_GAUSS_BANDPASS #define VIPS_MASK_GAUSS_BANDREJECT IM_MASK_GAUSS_BANDREJECT #define VIPS_MASK_FRACTAL_FLT IM_MASK_FRACTAL_FLT #define VIPS_MASK IM_MASK int im_flt_image_freq( VipsImage *in, VipsImage *out, ImMaskType flag, ... ); int im_create_fmask( VipsImage *out, int xsize, int ysize, ImMaskType flag, ... ); int im_fwfft( VipsImage *in, VipsImage *out ); int im_invfft( VipsImage *in, VipsImage *out ); int im_invfftr( VipsImage *in, VipsImage *out ); int im_freqflt( VipsImage *in, VipsImage *mask, VipsImage *out ); int im_disp_ps( VipsImage *in, VipsImage *out ); int im_fractsurf( VipsImage *out, int size, double frd ); int im_phasecor_fft( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_cntlines( VipsImage *im, double *nolines, int flag ); int im_label_regions( VipsImage *test, VipsImage *mask, int *segments ); int im_rank( VipsImage *in, VipsImage *out, int width, int height, int index ); int im_zerox( VipsImage *in, VipsImage *out, int sign ); int im_benchmarkn( VipsImage *in, VipsImage *out, int n ); int im_benchmark2( VipsImage *in, double *out ); int im_draw_circle( VipsImage *image, int x, int y, int radius, gboolean fill, VipsPel *ink ); int im_draw_mask( VipsImage *image, VipsImage *mask_im, int x, int y, VipsPel *ink ); int im_draw_image( VipsImage *image, VipsImage *sub, int x, int y ); int im_draw_rect( VipsImage *image, int left, int top, int width, int height, int fill, VipsPel *ink ); typedef int (*VipsPlotFn)( VipsImage *image, int x, int y, void *a, void *b, void *c ); int im_draw_line_user( VipsImage *image, int x1, int y1, int x2, int y2, VipsPlotFn plot, void *a, void *b, void *c ); int im_draw_line( VipsImage *image, int x1, int y1, int x2, int y2, VipsPel *ink ); int im_lineset( VipsImage *in, VipsImage *out, VipsImage *mask, VipsImage *ink, int n, int *x1v, int *y1v, int *x2v, int *y2v ); int im_insertset( VipsImage *main, VipsImage *sub, VipsImage *out, int n, int *x, int *y ); int im_draw_flood( VipsImage *image, int x, int y, VipsPel *ink, VipsRect *dout ); int im_draw_flood_blob( VipsImage *image, int x, int y, VipsPel *ink, VipsRect *dout ); int im_draw_flood_other( VipsImage *image, VipsImage *test, int x, int y, int serial, VipsRect *dout ); int im_draw_point( VipsImage *image, int x, int y, VipsPel *ink ); int im_read_point( VipsImage *image, int x, int y, VipsPel *ink ); int im_draw_smudge( VipsImage *image, int left, int top, int width, int height ); void im_filename_split( const char *path, char *name, char *mode ); const char *im_skip_dir( const char *filename ); void im_filename_suffix( const char *path, char *suffix ); int im_filename_suffix_match( const char *path, const char *suffixes[] ); char *im_getnextoption( char **in ); char *im_getsuboption( const char *buf ); int im_lrmerge( VipsImage *ref, VipsImage *sec, VipsImage *out, int dx, int dy, int mwidth ); int im_tbmerge( VipsImage *ref, VipsImage *sec, VipsImage *out, int dx, int dy, int mwidth ); int im_lrmosaic( VipsImage *ref, VipsImage *sec, VipsImage *out, int bandno, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int balancetype, int mwidth ); int im_tbmosaic( VipsImage *ref, VipsImage *sec, VipsImage *out, int bandno, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int balancetype, int mwidth ); int im_match_linear( VipsImage *ref, VipsImage *sec, VipsImage *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2 ); int im_match_linear_search( VipsImage *ref, VipsImage *sec, VipsImage *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize ); int im_global_balance( VipsImage *in, VipsImage *out, double gamma ); int im_global_balancef( VipsImage *in, VipsImage *out, double gamma ); int im_remosaic( VipsImage *in, VipsImage *out, const char *old_str, const char *new_str ); int im_lrmerge1( VipsImage *ref, VipsImage *sec, VipsImage *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ); int im_tbmerge1( VipsImage *ref, VipsImage *sec, VipsImage *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ); int im_lrmosaic1( VipsImage *ref, VipsImage *sec, VipsImage *out, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize, int balancetype, int mwidth ); int im_tbmosaic1( VipsImage *ref, VipsImage *sec, VipsImage *out, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize, int balancetype, int mwidth ); int im_correl( VipsImage *ref, VipsImage *sec, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, double *correlation, int *x, int *y ); int im_align_bands( VipsImage *in, VipsImage *out ); int im_maxpos_subpel( VipsImage *in, double *x, double *y ); VipsImage *vips__deprecated_open_read( const char *filename, gboolean sequential ); VipsImage *vips__deprecated_open_write( const char *filename ); void im__format_init( void ); void im__tiff_register( void ); void im__jpeg_register( void ); void im__png_register( void ); void im__csv_register( void ); void im__ppm_register( void ); void im__analyze_register( void ); void im__exr_register( void ); void im__magick_register( void ); int im__bandup( const char *domain, VipsImage *in, VipsImage *out, int n ); int im__bandalike_vec( const char *domain, VipsImage **in, VipsImage **out, int n ); int im__bandalike( const char *domain, VipsImage *in1, VipsImage *in2, VipsImage *out1, VipsImage *out2 ); int im__formatalike_vec( VipsImage **in, VipsImage **out, int n ); int im__formatalike( VipsImage *in1, VipsImage *in2, VipsImage *out1, VipsImage *out2 ); typedef int (*im__wrapscan_fn)( void *p, int n, void *seq, void *a, void *b ); int im__wrapscan( VipsImage *in, VipsStartFn start, im__wrapscan_fn scan, VipsStopFn stop, void *a, void *b ); int im__colour_difference( const char *domain, VipsImage *in1, VipsImage *in2, VipsImage *out, im_wrapmany_fn buffer_fn, void *a, void *b ); int im__colour_unary( const char *domain, VipsImage *in, VipsImage *out, VipsInterpretation interpretation, im_wrapone_fn buffer_fn, void *a, void *b ); VipsImage **im__insert_base( const char *domain, VipsImage *in1, VipsImage *in2, VipsImage *out ); int im__find_lroverlap( VipsImage *ref_in, VipsImage *sec_in, VipsImage *out, int bandno_in, int xref, int yref, int xsec, int ysec, int halfcorrelation, int halfarea, int *dx0, int *dy0, double *scale1, double *angle1, double *dx1, double *dy1 ); int im__find_tboverlap( VipsImage *ref_in, VipsImage *sec_in, VipsImage *out, int bandno_in, int xref, int yref, int xsec, int ysec, int halfcorrelation, int halfarea, int *dx0, int *dy0, double *scale1, double *angle1, double *dx1, double *dy1 ); int im__find_best_contrast( VipsImage *image, int xpos, int ypos, int xsize, int ysize, int xarray[], int yarray[], int cont[], int nbest, int hcorsize ); int im__balance( VipsImage *ref, VipsImage *sec, VipsImage *out, VipsImage **ref_out, VipsImage **sec_out, int dx, int dy, int balancetype ); void imb_LCh2Lab( float *, float *, int ); /* A colour temperature. */ typedef struct { double X0, Y0, Z0; } im_colour_temperature; void imb_XYZ2Lab( float *, float *, int, im_colour_temperature * ); void imb_LabS2Lab( signed short *, float *, int ); void imb_Lab2LabS( float *, signed short *, int n ); void im_copy_dmask_matrix( DOUBLEMASK *mask, double **matrix ); void im_copy_matrix_dmask( double **matrix, DOUBLEMASK *mask ); int *im_ivector(int nl, int nh); float *im_fvector(int nl, int nh); double *im_dvector(int nl, int nh); void im_free_ivector(int *v, int nl, int nh); void im_free_fvector(float *v, int nl, int nh); void im_free_dvector(double *v, int nl, int nh); int **im_imat_alloc(int nrl, int nrh, int ncl, int nch); void im_free_imat(int **m, int nrl, int nrh, int ncl, int nch); float **im_fmat_alloc(int nrl, int nrh, int ncl, int nch); void im_free_fmat(float **m, int nrl, int nrh, int ncl, int nch); double **im_dmat_alloc(int nrl, int nrh, int ncl, int nch); void im_free_dmat(double **m, int nrl, int nrh, int ncl, int nch); int im_invmat( double **, int ); int *im_offsets45( int size ); int im_conv_f_raw( VipsImage *in, VipsImage *out, DOUBLEMASK *mask ); int im_convsep_f_raw( VipsImage *in, VipsImage *out, DOUBLEMASK *mask ); int im_greyc_mask( VipsImage *in, VipsImage *out, VipsImage *mask, int iterations, float amplitude, float sharpness, float anisotropy, float alpha, float sigma, float dl, float da, float gauss_prec, int interpolation, int fast_approx ); int vips_check_imask( const char *domain, INTMASK *mask ); int vips_check_dmask( const char *domain, DOUBLEMASK *mask ); int vips_check_dmask_1d( const char *domain, DOUBLEMASK *mask ); GOptionGroup *vips_get_option_group( void ); /* old window manager API */ VipsWindow *vips_window_ref( VipsImage *im, int top, int height ); /* This stuff is very, very old and should not be used by anyone now. */ #ifdef VIPS_ENABLE_ANCIENT #include #endif /*VIPS_ENABLE_ANCIENT*/ #include #include #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_VIPS7COMPAT_H*/ libvips-8.9.1/libvips/include/vips/x.h000066400000000000000000000057751361153320700177140ustar00rootroot00000000000000/* resample.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_RESAMPLE_H #define VIPS_RESAMPLE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum { VIPS_KERNEL_NEAREST, VIPS_KERNEL_LINEAR, VIPS_KERNEL_CUBIC, VIPS_KERNEL_MITCHELL, VIPS_KERNEL_LANCZOS2, VIPS_KERNEL_LANCZOS3, VIPS_KERNEL_LAST } VipsKernel; typedef enum { VIPS_SIZE_BOTH, VIPS_SIZE_UP, VIPS_SIZE_DOWN, VIPS_SIZE_FORCE, VIPS_SIZE_LAST } VipsSize; int vips_shrink( VipsImage *in, VipsImage **out, double hshrink, double vshrink, ... ) __attribute__((sentinel)); int vips_shrinkh( VipsImage *in, VipsImage **out, int hshrink, ... ) __attribute__((sentinel)); int vips_shrinkv( VipsImage *in, VipsImage **out, int vshrink, ... ) __attribute__((sentinel)); int vips_reduce( VipsImage *in, VipsImage **out, double hshrink, double vshrink, ... ) __attribute__((sentinel)); int vips_reduceh( VipsImage *in, VipsImage **out, double hshrink, ... ) __attribute__((sentinel)); int vips_reducev( VipsImage *in, VipsImage **out, double vshrink, ... ) __attribute__((sentinel)); int vips_thumbnail( const char *filename, VipsImage **out, int width, ... ) __attribute__((sentinel)); int vips_thumbnail_buffer( void *buf, size_t len, VipsImage **out, int width, ... ) __attribute__((sentinel)); int vips_thumbnail_image( VipsImage *in, VipsImage **out, int width, ... ) __attribute__((sentinel)); int vips_thumbnail_source( VipsSource *source, VipsImage **out, int width, ... ) __attribute__((sentinel)); int vips_similarity( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rotate( VipsImage *in, VipsImage **out, double angle, ... ) __attribute__((sentinel)); int vips_affine( VipsImage *in, VipsImage **out, double a, double b, double c, double d, ... ) __attribute__((sentinel)); int vips_resize( VipsImage *in, VipsImage **out, double scale, ... ) __attribute__((sentinel)); int vips_mapim( VipsImage *in, VipsImage **out, VipsImage *index, ... ) __attribute__((sentinel)); int vips_quadratic( VipsImage *in, VipsImage **out, VipsImage *coeff, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_RESAMPLE_H*/ libvips-8.9.1/libvips/introspect.c000066400000000000000000000055641361153320700172220ustar00rootroot00000000000000/* Entry point for g-ir-scanner ... this program is used during build time * only. * * 19/12/14 * - quick hack */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include static char *main_option_introspect_dump = NULL; static GOptionEntry main_option[] = { { "introspect-dump", 'i', 0, G_OPTION_ARG_STRING, &main_option_introspect_dump, N_( "dump introspection data" ), NULL }, { NULL } }; int main( int argc, char *argv[] ) { GOptionContext *context; GOptionGroup *main_group; GError *error = NULL; if( VIPS_INIT( argv[0] ) ) vips_error_exit( "unable to start VIPS" ); textdomain( GETTEXT_PACKAGE ); setlocale( LC_ALL, "" ); context = g_option_context_new( _( "- introspect" ) ); main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); g_option_group_add_entries( main_group, main_option ); vips_add_option_entries( main_group ); g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); if( !g_option_context_parse( context, &argc, &argv, &error ) ) { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( "try \"%s --help\"", g_get_prgname() ); } g_option_context_free( context ); #ifdef DEBUG /* For debugging it's handy to have a copy of the input file. */ if( main_option_introspect_dump ) { char **args; char *cmd; args = g_strsplit( main_option_introspect_dump, ",", 2 ); cmd = g_strdup_printf( "cp %s ~/functions.txt", args[0]); printf( "introspect: running '%s'\n", cmd ); system( cmd ); g_free( cmd ); } #endif /*DEBUG*/ if( main_option_introspect_dump && !g_irepository_dump( main_option_introspect_dump, &error ) ) { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( "unable to dump introspection" ); } vips_shutdown(); return( 0 ); } libvips-8.9.1/libvips/iofuncs/000077500000000000000000000000001361153320700163205ustar00rootroot00000000000000libvips-8.9.1/libvips/iofuncs/Makefile.am000066400000000000000000000040311361153320700203520ustar00rootroot00000000000000noinst_LTLIBRARIES = libiofuncs.la libiofuncs_la_SOURCES = \ connection.c \ source.c \ sourcecustom.c \ target.c \ targetcustom.c \ sbuf.c \ dbuf.c \ reorder.c \ vipsmarshal.h \ vipsmarshal.c \ type.c \ gate.c \ enumtypes.c \ object.c \ base64.c \ error.c \ image.c \ vips.c \ generate.c \ mapfile.c \ cache.c \ sink.h \ sink.c \ sinkmemory.c \ sinkdisc.c \ sinkscreen.c \ memory.c \ header.c \ operation.c \ region.c \ rect.c \ semaphore.c \ threadpool.c \ util.c \ init.c \ buf.c \ window.c \ vector.c \ system.c \ buffer.c vipsmarshal.h: vipsmarshal.list glib-genmarshal --prefix=vips --header vipsmarshal.list > vipsmarshal.h vipsmarshal.c: vipsmarshal.list echo "#include \"vipsmarshal.h\"" > vipsmarshal.c glib-genmarshal --prefix=vips --body vipsmarshal.list >> vipsmarshal.c EXTRA_DIST = \ enumtemplate \ vipsmarshal.h \ vipsmarshal.c \ vipsmarshal.list AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ # the headers we scan for enums etc. # keep in sync with ../include/vips/Makefile.am # we need absolute filenames here since this list appears in the header dir as # well vips_scan_headers = \ ${top_srcdir}/libvips/include/vips/resample.h \ ${top_srcdir}/libvips/include/vips/memory.h \ ${top_srcdir}/libvips/include/vips/create.h \ ${top_srcdir}/libvips/include/vips/foreign.h \ ${top_srcdir}/libvips/include/vips/conversion.h \ ${top_srcdir}/libvips/include/vips/arithmetic.h \ ${top_srcdir}/libvips/include/vips/util.h \ ${top_srcdir}/libvips/include/vips/image.h \ ${top_srcdir}/libvips/include/vips/colour.h \ ${top_srcdir}/libvips/include/vips/operation.h \ ${top_srcdir}/libvips/include/vips/convolution.h \ ${top_srcdir}/libvips/include/vips/morphology.h \ ${top_srcdir}/libvips/include/vips/draw.h \ ${top_srcdir}/libvips/include/vips/basic.h \ ${top_srcdir}/libvips/include/vips/object.h \ ${top_srcdir}/libvips/include/vips/region.h enumtypes.c: $(vips_scan_headers) Makefile.am glib-mkenums --template enumtemplate $(vips_scan_headers) > enumtypes.c libvips-8.9.1/libvips/iofuncs/base64.c000066400000000000000000000200271361153320700175510ustar00rootroot00000000000000/* base64.c -- Encode/decode integers in base64 format * Created: Mon Sep 23 16:55:12 1996 by faith@dict.org * Revised: Sat Mar 30 12:02:36 2002 by faith@dict.org * Copyright 1996, 2002 Rickard E. Faith (faith@dict.org) * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA * * \section{Base-64 Routines} * * \intro These routines use the 64-character subset of International * Alphabet IA5 discussed in RFC 1421 (printeable encoding) and RFC 1522 * (base64 MIME). * Value Encoding Value Encoding Value Encoding Value Encoding 0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v 14 O 31 f 48 w (pad) = 15 P 32 g 49 x 16 Q 33 h 50 y * */ /* Hacked for VIPS ... does any length object (not just ints), formats base64 into 70 character lines, output to a malloc'd buffer. VIPS uses this to write BLOBs (like ICC profiles, for example) to the XML that follows an image. Modified on: 23/7/07 JC - oop, needed a slightly larger worst-case buffer in im__b64_encode() 12/5/09 - fix signed/unsigned warning 25/3/11 - move to vips_ namespace 31/5/15 - oops siged/unsigned mess-up meant we were not padding correctly 20/3/19 - larger output allocate - better max size check */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_BASE64_ENCODE /* glib 2.12 adds these. */ char * vips__b64_encode( const unsigned char *data, size_t data_length ) { return( g_base64_encode( data, data_length ) ); } unsigned char * vips__b64_decode( const char *buffer, size_t *data_length ) { return( g_base64_decode( buffer, data_length ) ); } #else /*!HAVE_BASE64_ENCODE*/ static unsigned char b64_list[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; #define XX 100 static unsigned char b64_index[256] = { XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,62, XX,XX,XX,63, 52,53,54,55, 56,57,58,59, 60,61,XX,XX, XX,XX,XX,XX, XX, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14, 15,16,17,18, 19,20,21,22, 23,24,25,XX, XX,XX,XX,XX, XX,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40, 41,42,43,44, 45,46,47,48, 49,50,51,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, }; /* Read (up to) 3 bytes from in. Be careful about byte ordering :-/ we need to * end up with in[2] in the bottom few bits. */ static int read24( const unsigned char *in, int remaining ) { int bits; int i; bits = 0; for( i = 0; i < 3; i++ ) { bits = VIPS_LSHIFT_INT( bits, 8 ); if( remaining > 0 ) { bits |= in[i]; remaining -= 1; } } return( bits ); } /* Output (up to) 24 bits as four base64 chars. Pad with '=' characters. */ static void encode24( char *p, int bits, int remaining ) { int i; for( i = 0; i < 4; i++ ) { if( remaining <= 0 ) p[i] = '='; else { /* Take the top 6 bits of 24. */ p[i] = b64_list[(bits >> 18) & 63]; bits = VIPS_LSHIFT_INT( bits, 6 ); remaining -= 6; } } } /* Output to a malloc'd buffer, NULL on error. Try to be simple and reliable, * rather than quick. */ char * vips__b64_encode( const unsigned char *data, size_t data_length ) { /* Worst case: 1.333 chars per byte, plus 10% for extra carriage * returns and stuff, plus the final \n\0. */ const size_t output_data_length = data_length * 44 / 30 + 10; char *buffer; char *p; int i; int cursor; if( data_length > 10 * 1024 * 1024 ) { /* We shouldn't really be used for large amounts of data, plus * we are using int offsets. * * A large ICC profile can be 1MB, so allow 10MB. */ vips_error( "vips__b64_encode", "%s", _( "too much data" ) ); return( NULL ); } if( !(buffer = vips_malloc( NULL, output_data_length )) ) return( NULL ); p = buffer; *p++ = '\n'; cursor = 0; for( i = 0; i < data_length; i += 3 ) { int remaining = data_length - i; int bits; bits = read24( data + i, remaining ); encode24( p, bits, remaining * 8 ); p += 4; cursor += 4; if( cursor >= 76 ) { *p++ = '\n'; cursor = 0; } } if( cursor > 0 ) *p++ = '\n'; *p++ = '\0'; g_assert( (size_t) (p - buffer) < output_data_length ); #ifdef DEBUG { unsigned int total; /* Calculate a very simple checksum for debugging. */ for( total = 0, i = 0; i < data_length; i++ ) total += data[i]; printf( "vips__b64_encode: length = %zu, checksum 0x%x\n", data_length, total & 0xffff ); } #endif /*DEBUG*/ return( buffer ); } /* Decode base64 back to binary in a malloc'd buffer. NULL on error. */ unsigned char * vips__b64_decode( const char *buffer, size_t *data_length ) { const size_t buffer_length = strlen( buffer ); /* Worst case. Add one, since we don't want to return NULL for an empty * input string, it would look like an error return. */ const size_t output_data_length = 1 + buffer_length * 3 / 4; unsigned char *data; unsigned char *p; unsigned int bits; int nbits; int i; /* A large ICC profile can be a couple of MB, so 10 should be plenty. */ if( output_data_length > 10 * 1024 * 1024 ) { /* We shouldn't really be used for large amounts of data, plus * we are using an int for offset. */ vips_error( "vips__b64_decode", "%s", _( "too much data" ) ); return( NULL ); } if( !(data = vips_malloc( NULL, output_data_length )) ) return( NULL ); p = data; bits = 0; nbits = 0; for( i = 0; i < buffer_length; i++ ) { unsigned int val; if( (val = b64_index[(int) buffer[i]]) != XX ) { bits = VIPS_LSHIFT_INT( bits, 6 ); bits |= val; nbits += 6; if( nbits >= 8 ) { *p++ = (bits >> (nbits - 8)) & 0xff; nbits -= 8; } } } g_assert( (size_t) (p - data) < output_data_length ); if( data_length ) *data_length = p - data; #ifdef DEBUG { unsigned int total; /* Calculate a very simple checksum for debugging. */ for( total = 0, i = 0; i < p - data; i++ ) total += data[i]; printf( "vips__b64_decode: length = %d, checksum 0x%x\n", p - data, total & 0xffff ); } #endif /*DEBUG*/ return( data ); } #endif /*HAVE_BASE64_ENCODE*/ libvips-8.9.1/libvips/iofuncs/buf.c000066400000000000000000000363161361153320700172510ustar00rootroot00000000000000/* string buffers */ /* Copyright (C) 1991-2003 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include /** * SECTION: buf * @short_description: a string you can append to * @stability: Stable * @see_also: #vips * @include: vips/vips.h * * A message buffer you can append stuff to safely and quickly. If the message * gets too long, you get "..." and truncation. Message buffers can be on the * stack or heap. * * For example: * * |[ * char txt[256]; * VipsBuf buf = VIPS_BUF_STATIC (txt); * int i; * * vips_buf_appends (&buf, "Numbers are: "); * for (i = 0; i < array_length; i++) { * if (i > 0) * vips_buf_appends (&buf, ", "); * vips_buf_appendg (&buf, array[i]); * } * printf ("%s", vips_buf_all (&buf)); * ]| */ /** * VIPS_BUF_STATIC: * @TEXT: the storage area to use * * Initialize a heap buffer. For example: * * |[ * char txt[256]; * VipsBuf buf = VIPS_BUF_STATIC (txt); * ]| */ /** * vips_buf_rewind: * @buf: the buffer * * Reset the buffer to the empty string. */ void vips_buf_rewind( VipsBuf *buf ) { buf->i = 0; buf->lasti = 0; buf->full = FALSE; if( buf->base ) buf->base[0] = '\0'; } /** * vips_buf_init: * @buf: the buffer * * Initialize a buffer. */ void vips_buf_init( VipsBuf *buf ) { buf->base = NULL; buf->mx = 0; buf->dynamic = FALSE; vips_buf_rewind( buf ); } /** * vips_buf_destroy: * @buf: the buffer * * Destroy a buffer. Only needed for heap buffers. Leaves the buffer in the * _init state. */ void vips_buf_destroy( VipsBuf *buf ) { if( buf->dynamic ) { VIPS_FREE( buf->base ); } vips_buf_init( buf ); } /** * vips_buf_set_static: * @buf: the buffer * @base: the start of the memory area to use for storage * @mx: the size of the storage area * * Attach the buffer to a static memory area. The buffer needs to have been * initialised. The memory area needs to be at least 4 bytes long. */ void vips_buf_set_static( VipsBuf *buf, char *base, int mx ) { g_assert( mx >= 4 ); vips_buf_destroy( buf ); buf->base = base; buf->mx = mx; buf->dynamic = FALSE; vips_buf_rewind( buf ); } /** * vips_buf_init_static: * @buf: the buffer * @base: the start of the memory area to use for storage * @mx: the size of the storage area * * Initialise and attach to a static memory area. VIPS_BUF_STATIC() is usually * more convenient. * * For example: * * |[ * char txt[256]; * VipsBuf buf; * * vips_buf_init_static (&buf, txt, 256); * ]| * * Static buffers don't need to be freed when they go out of scope, but their * size must be set at compile-time. */ void vips_buf_init_static( VipsBuf *buf, char *base, int mx ) { vips_buf_init( buf ); vips_buf_set_static( buf, base, mx ); } /** * vips_buf_set_dynamic: * @buf: the buffer * @mx: the size of the storage area * * Attach the buffer to a heap memory area. The buffer needs to have been * initialised. The memory area needs to be at least 4 bytes long. */ void vips_buf_set_dynamic( VipsBuf *buf, int mx ) { g_assert( mx >= 4 ); if( buf->mx == mx && buf->dynamic ) /* No change? */ vips_buf_rewind( buf ); else { vips_buf_destroy( buf ); if( !(buf->base = VIPS_ARRAY( NULL, mx, char )) ) /* No error return, so just block writes. */ buf->full = TRUE; else { buf->mx = mx; buf->dynamic = TRUE; vips_buf_rewind( buf ); } } } /** * vips_buf_init_dynamic: * @buf: the buffer * @mx: the size of the storage area * * Initialise and attach to a heap memory area. * The memory area needs to be at least 4 bytes long. * * |[ * VipsBuf buf; * * vips_buf_init_synamic (&buf, 256); * ]| * * Dynamic buffers must be freed with vips_buf_destroy(), but their size can * be set at runtime. */ void vips_buf_init_dynamic( VipsBuf *buf, int mx ) { vips_buf_init( buf ); vips_buf_set_dynamic( buf, mx ); } /** * vips_buf_appendns: * @buf: the buffer * @str: the string to append to the buffer * @sz: the size of the string to append * * Append at most @sz chars from @str to @buf. @sz < 0 means unlimited. This * is the low-level append operation: functions like vips_buf_appendf() build * on top of this. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendns( VipsBuf *buf, const char *str, int sz ) { int len; int n; int avail; int cpy; if( buf->full ) return( FALSE ); /* Amount we want to copy. */ len = strlen( str ); if( sz >= 0 ) n = VIPS_MIN( sz, len ); else n = len; /* Space available. */ avail = buf->mx - buf->i - 4; cpy = VIPS_MIN( n, avail ); /* Can't use vips_strncpy() here, we don't want to drop the end of the * string. */ strncpy( buf->base + buf->i, str, cpy ); buf->i += cpy; if( buf->i >= buf->mx - 4 ) { buf->full = TRUE; strcpy( buf->base + buf->mx - 4, "..." ); buf->i = buf->mx - 1; return( FALSE ); } return( TRUE ); } /** * vips_buf_appends: * @buf: the buffer * @str: the string to append to the buffer * * Append the whole of @str to @buf. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appends( VipsBuf *buf, const char *str ) { return( vips_buf_appendns( buf, str, -1 ) ); } /** * vips_buf_appendc: * @buf: the buffer * @ch: the character to append to the buffer * * Append a single character @ch to @buf. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendc( VipsBuf *buf, char ch ) { char tiny[2]; tiny[0] = ch; tiny[1] = '\0'; return( vips_buf_appendns( buf, tiny, 1 ) ); } /** * vips_buf_change: * @buf: the buffer * @o: the string to search for * @n: the string to substitute * * Swap the rightmost occurence of @o for @n. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_change( VipsBuf *buf, const char *old, const char *new ) { int olen = strlen( old ); int nlen = strlen( new ); int i; if( buf->full ) return( FALSE ); if( buf->i - olen + nlen > buf->mx - 4 ) { buf->full = TRUE; return( FALSE ); } /* Find pos of old. */ for( i = buf->i - olen; i > 0; i-- ) if( vips_isprefix( old, buf->base + i ) ) break; g_assert( i >= 0 ); /* Move tail of buffer to make right-size space for new. */ memmove( buf->base + i + nlen, buf->base + i + olen, buf->i - i - olen ); /* Copy new in. */ memcpy( buf->base + i, new, nlen ); buf->i = i + nlen + (buf->i - i - olen); return( TRUE ); } /** * vips_buf_removec: * @buf: the buffer * @ch: the character to remove * * Remove the last character, if it's @ch. * * Returns: %FALSE on failure, %TRUE otherwise. */ gboolean vips_buf_removec( VipsBuf *buf, char ch ) { if( buf->full ) return( FALSE ); if( buf->i <= 0 ) return( FALSE ); if( buf->base[buf->i - 1] == ch ) buf->i -= 1; return( TRUE ); } /** * vips_buf_vappendf: * @buf: the buffer * @fmt: printf()-style format string * @ap: arguments to format string * * Append to @buf, args as vprintf(). * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_vappendf( VipsBuf *buf, const char *fmt, va_list ap ) { int avail; char *p; if( buf->full ) return( FALSE ); avail = buf->mx - buf->i - 4; p = buf->base + buf->i; (void) vips_vsnprintf( p, avail, fmt, ap ); buf->i += strlen( p ); if( buf->i >= buf->mx - 4 ) { buf->full = TRUE; strcpy( buf->base + buf->mx - 4, "..." ); buf->i = buf->mx - 1; return( FALSE ); } return( TRUE ); } /** * vips_buf_appendf: * @buf: the buffer * @fmt: printf()-style format string * @...: arguments to format string * * Format the string and append to @buf. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendf( VipsBuf *buf, const char *fmt, ... ) { va_list ap; gboolean result; va_start( ap, fmt ); result = vips_buf_vappendf( buf, fmt, ap ); va_end( ap ); return( result ); } /** * vips_buf_appendg: * @buf: the buffer * @g: value to format and append * * Append a double, non-localised. Useful for config files etc. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendg( VipsBuf *buf, double g ) { char text[G_ASCII_DTOSTR_BUF_SIZE]; g_ascii_dtostr( text, sizeof( text ), g ); return( vips_buf_appends( buf, text ) ); } /** * vips_buf_appendd: * @buf: the buffer * @d: value to format and append * * Append a number. If the number is -ve, add brackets. Needed for * building function arguments. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendd( VipsBuf *buf, int d ) { if( d < 0 ) return( vips_buf_appendf( buf, " (%d)", d ) ); else return( vips_buf_appendf( buf, " %d", d ) ); } /** * vips_buf_appendgv: * @buf: the buffer * @value: #GValue to format and append * * Format and append a #GValue as a printable thing. We display text line "3144 * bytes of binary data" for BLOBs like icc-profile-data. * * Use vips_image_get_as_string() to make a text representation of a field. * That will base64-encode blobs, for example. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendgv( VipsBuf *buf, GValue *value ) { GType type = G_VALUE_TYPE( value ); GType fundamental = g_type_fundamental( type ); gboolean handled; gboolean result; result = FALSE; handled = FALSE; switch( fundamental ) { case G_TYPE_STRING: { const char *str; /* These are GStrings (gchararray). vips refstrings are * handled by boxed, see below. */ str = g_value_get_string( value ); result = vips_buf_appends( buf, str ); handled = TRUE; } break; case G_TYPE_OBJECT: { GObject *object; object = g_value_get_object( value ); if( VIPS_IS_OBJECT( object ) ) { vips_object_summary( VIPS_OBJECT( object ), buf ); result = TRUE; handled = TRUE; } } break; case G_TYPE_INT: result = vips_buf_appendf( buf, "%d", g_value_get_int( value ) ); handled = TRUE; break; case G_TYPE_UINT64: result = vips_buf_appendf( buf, "%" G_GINT64_FORMAT, g_value_get_uint64( value ) ); handled = TRUE; break; case G_TYPE_DOUBLE: result = vips_buf_appendf( buf, "%g", g_value_get_double( value ) ); handled = TRUE; break; case G_TYPE_BOOLEAN: result = vips_buf_appends( buf, g_value_get_boolean( value ) ? "true" : "false" ); handled = TRUE; break; case G_TYPE_ENUM: result = vips_buf_appends( buf, vips_enum_nick( type, g_value_get_enum( value ) ) ); handled = TRUE; break; case G_TYPE_FLAGS: { GFlagsClass *flags_class = g_type_class_ref( type ); GFlagsValue *v; int flags; flags = g_value_get_flags( value ); while( flags && (v = g_flags_get_first_value( flags_class, flags )) ) { result = vips_buf_appendf( buf, "%s ", v->value_nick ); flags &= ~v->value; } handled = TRUE; } break; case G_TYPE_BOXED: if( type == VIPS_TYPE_REF_STRING ) { const char *str; size_t str_len; /* These should be printable. */ str = vips_value_get_ref_string( value, &str_len ); result = vips_buf_appends( buf, str ); handled = TRUE; } else if( type == VIPS_TYPE_BLOB ) { size_t str_len; /* Binary data and not printable. */ (void) vips_value_get_ref_string( value, &str_len ); result = vips_buf_appendf( buf, _( "%zd bytes of binary data" ), str_len ); handled = TRUE; } else if( type == VIPS_TYPE_ARRAY_DOUBLE ) { double *arr; int n; int i; arr = vips_value_get_array_double( value, &n ); for( i = 0; i < n; i++ ) result = vips_buf_appendf( buf, "%g ", arr[i] ); handled = TRUE; } else if( type == VIPS_TYPE_ARRAY_INT ) { int *arr; int n; int i; arr = vips_value_get_array_int( value, &n ); for( i = 0; i < n; i++ ) result = vips_buf_appendf( buf, "%d ", arr[i] ); handled = TRUE; } else if( type == VIPS_TYPE_ARRAY_IMAGE ) { VipsImage **arr; int n; int i; arr = vips_value_get_array_image( value, &n ); for( i = 0; i < n; i++ ) { vips_object_summary( VIPS_OBJECT( arr[i] ), buf ); result = vips_buf_appends( buf, " " ); } handled = TRUE; } break; default: break; } if( !handled ) { char *str_value; str_value = g_strdup_value_contents( value ); result = vips_buf_appends( buf, str_value ); g_free( str_value ); } return( result ); } /** * vips_buf_append_size: * @buf: the buffer * @n: the number of bytes * * Turn a number of bytes into a sensible string ... eg "12", "12KB", "12MB", * "12GB" etc. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_append_size( VipsBuf *buf, size_t n ) { const static char *names[] = { /* File length unit. */ N_( "bytes" ), /* Kilobyte unit. */ N_( "KB" ), /* Megabyte unit. */ N_( "MB" ), /* Gigabyte unit. */ N_( "GB" ), /* Terabyte unit. */ N_( "TB" ) }; double sz = n; int i; /* -1, since we want to stop at TB, not run off the end. */ for( i = 0; sz > 1024 && i < VIPS_NUMBER( names ) - 1; sz /= 1024, i++ ) ; if( i == 0 ) /* No decimal places for bytes. */ return( vips_buf_appendf( buf, "%g %s", sz, _( names[i] ) ) ); else return( vips_buf_appendf( buf, "%.2f %s", sz, _( names[i] ) ) ); } /** * vips_buf_all: * @buf: the buffer * * Return the contents of the buffer as a C string. * * Returns: the %NULL-terminated contents of the buffer. This is a pointer to * the memory managed by the buffer and must not be freed. */ const char * vips_buf_all( VipsBuf *buf ) { buf->base[buf->i] = '\0'; return( buf->base ); } /** * vips_buf_firstline: * @buf: the buffer * * Trim to just the first line (excluding "\n"). * * Returns: the %NULL-terminated contents of the buffer. This is a pointer to * the memory managed by the buffer and must not be freed. */ const char * vips_buf_firstline( VipsBuf *buf ) { char *p; if( (p = strchr( vips_buf_all( buf ), '\n' )) ) *p = '\0'; return( vips_buf_all( buf ) ); } /** * vips_buf_is_empty: * @buf: the buffer * * Returns: %TRUE if the buffer is empty. */ gboolean vips_buf_is_empty( VipsBuf *buf ) { return( buf->i == 0 ); } /** * vips_buf_is_full: * @buf: the buffer * * Returns: %TRUE if the buffer is full. */ gboolean vips_buf_is_full( VipsBuf *buf ) { return( buf->full ); } /** * vips_buf_len: * @buf: the buffer * * Returns: the number of characters currently in the buffer. */ int vips_buf_len( VipsBuf *buf ) { return( buf->i ); } libvips-8.9.1/libvips/iofuncs/buffer.c000066400000000000000000000403161361153320700177410ustar00rootroot00000000000000/* Manage sets of pixel buffers on an image. * * 30/10/06 * - from window.c * 2/2/07 * - speed up the search, use our own lock (thanks Christian) * 5/2/07 * - split to many buffer lists per image * 11/2/07 * - split to a buffer hash per thread * - reuse buffer mallocs when we can * 20/2/07 * - add VipsBufferCacheList and we can avoid some hash ops on * done/undone * 5/3/10 * - move invalid stuff to region * - move link maintenance to im_demand_hint * 21/9/11 * - switch to vips_tracked_malloc() * 18/12/13 * - keep a few buffers in reserve per image, stops malloc/free * cycling when sharing is repeatedly discovered * 6/6/16 * - free buffers on image close as well as thread exit, so main thread * buffers don't clog up the system * 13/10/16 * - better solution: don't keep a buffercache for non-workers */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG_CREATE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #ifdef DEBUG /* Track all buffers here for debugging. */ static GSList *vips__buffer_all = NULL; #endif /*DEBUG*/ #ifdef DEBUG_CREATE static GSList *vips__buffer_cache_all = NULL; #endif /*DEBUG_CREATE*/ /* The maximum numbers of buffers we hold in reserve per image. */ static const int buffer_cache_max_reserve = 2; /* Workers have a BufferThread (and BufferCache) in a GPrivate they have * exclusive access to. */ static GPrivate *buffer_thread_key = NULL; void vips_buffer_print( VipsBuffer *buffer ) { printf( "VipsBuffer: %p ref_count = %d, ", buffer, buffer->ref_count ); printf( "im = %p, ", buffer->im ); printf( "area.left = %d, ", buffer->area.left ); printf( "area.top = %d, ", buffer->area.top ); printf( "area.width = %d, ", buffer->area.width ); printf( "area.height = %d, ", buffer->area.height ); printf( "done = %d, ", buffer->done ); printf( "cache = %p, ", buffer->cache ); printf( "buf = %p, ", buffer->buf ); printf( "bsize = %zd\n", buffer->bsize ); } #ifdef DEBUG static void * vips_buffer_dump( VipsBuffer *buffer, size_t *reserve, size_t *alive ) { vips_buffer_print( buffer ); g_assert( buffer->im ); g_assert( buffer->buf ); if( !buffer->cache && !buffer->done ) { /* Global buffer, not linked to any cache. */ printf( "global buffer %p, %.3g MB\n", buffer, buffer->bsize / (1024 * 1024.0) ); *alive += buffer->bsize; } else if( buffer->cache && buffer->done && !vips_rect_isempty( &buffer->area ) && g_slist_find( buffer->cache->buffers, buffer ) ) { /* Published on a thread. */ printf( "thread buffer %p, %.3g MB\n", buffer, buffer->bsize / (1024 * 1024.0) ); *alive += buffer->bsize; } else if( buffer->ref_count == 0 && buffer->cache && !buffer->done && vips_rect_isempty( &buffer->area ) && g_slist_find( buffer->cache->reserve, buffer ) ) /* Held in reserve. */ *reserve += buffer->bsize; else printf( "buffer craziness!\n" ); return( NULL ); } #endif /*DEBUG*/ #ifdef DEBUG_CREATE static void * vips_buffer_cache_dump( VipsBufferCache *cache ) { printf( "VipsBufferCache: %p\n", cache ); printf( "\t%d buffers\n", g_slist_length( cache->buffers ) ); printf( "\tthread %p\n", cache->thread ); printf( "\timage %p\n", cache->im ); printf( "\tbuffer_thread %p\n", cache->buffer_thread ); printf( "\t%d in reserve\n", g_slist_length( cache->reserve ) ); return( NULL ); } #endif /*DEBUG_CREATE*/ void vips_buffer_dump_all( void ) { #ifdef DEBUG if( vips__buffer_all ) { size_t reserve; size_t alive; printf( "buffers:\n" ); reserve = 0; alive = 0; vips_slist_map2( vips__buffer_all, (VipsSListMap2Fn) vips_buffer_dump, &reserve, &alive ); printf( "%.3g MB alive\n", alive / (1024 * 1024.0) ); printf( "%.3g MB in reserve\n", reserve / (1024 * 1024.0) ); } #ifdef DEBUG_CREATE if( vips__buffer_cache_all ) { printf( "buffers: %d buffer cache still alive\n", g_slist_length( vips__buffer_cache_all ) ); vips_slist_map2( vips__buffer_cache_all, (VipsSListMap2Fn) vips_buffer_cache_dump, NULL, NULL ); printf( "g_thread_self() == %p\n", g_thread_self() ); } #endif /*DEBUG_CREATE*/ #endif /*DEBUG*/ } static void vips_buffer_free( VipsBuffer *buffer ) { VIPS_FREEF( vips_tracked_free, buffer->buf ); buffer->bsize = 0; g_free( buffer ); #ifdef DEBUG g_mutex_lock( vips__global_lock ); g_assert( g_slist_find( vips__buffer_all, buffer ) ); vips__buffer_all = g_slist_remove( vips__buffer_all, buffer ); g_mutex_unlock( vips__global_lock ); #endif /*DEBUG*/ #ifdef DEBUG_VERBOSE printf( "vips_buffer_free: freeing buffer %p\n", buffer ); #endif /*DEBUG_VERBOSE*/ } static void buffer_thread_free( VipsBufferThread *buffer_thread ) { VIPS_FREEF( g_hash_table_destroy, buffer_thread->hash ); VIPS_FREE( buffer_thread ); } /* Run for GDestroyNotify on the VipsBufferThread hash. */ static void buffer_cache_free( VipsBufferCache *cache ) { GSList *p; #ifdef DEBUG_CREATE g_mutex_lock( vips__global_lock ); vips__buffer_cache_all = g_slist_remove( vips__buffer_cache_all, cache ); g_mutex_unlock( vips__global_lock ); printf( "buffer_cache_free: freeing cache %p on thread %p\n", cache, g_thread_self() ); printf( "\t(%d caches left)\n", g_slist_length( vips__buffer_cache_all ) ); #endif /*DEBUG_CREATE*/ /* Need to mark undone so we don't try and take them off this cache on * unref. */ for( p = cache->buffers; p; p = p->next ) { VipsBuffer *buffer = (VipsBuffer *) p->data; g_assert( buffer->done ); g_assert( buffer->cache == cache ); buffer->done = FALSE; buffer->cache = NULL; } VIPS_FREEF( g_slist_free, cache->buffers ); for( p = cache->reserve; p; p = p->next ) { VipsBuffer *buffer = (VipsBuffer *) p->data; vips_buffer_free( buffer ); } VIPS_FREEF( g_slist_free, cache->reserve ); g_free( cache ); } static VipsBufferCache * buffer_cache_new( VipsBufferThread *buffer_thread, VipsImage *im ) { VipsBufferCache *cache; cache = g_new( VipsBufferCache, 1 ); cache->buffers = NULL; cache->thread = g_thread_self(); cache->im = im; cache->buffer_thread = buffer_thread; cache->reserve = NULL; cache->n_reserve = 0; #ifdef DEBUG_CREATE g_mutex_lock( vips__global_lock ); vips__buffer_cache_all = g_slist_prepend( vips__buffer_cache_all, cache ); g_mutex_unlock( vips__global_lock ); printf( "buffer_cache_new: new cache %p for thread %p on image %p\n", cache, g_thread_self(), im ); printf( "\t(%d caches now)\n", g_slist_length( vips__buffer_cache_all ) ); #endif /*DEBUG_CREATE*/ return( cache ); } static VipsBufferThread * buffer_thread_new( void ) { VipsBufferThread *buffer_thread; buffer_thread = g_new( VipsBufferThread, 1 ); buffer_thread->hash = g_hash_table_new_full( g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) buffer_cache_free ); buffer_thread->thread = g_thread_self(); return( buffer_thread ); } /* Get our private VipsBufferThread. NULL for non-worker threads. */ static VipsBufferThread * buffer_thread_get( void ) { VipsBufferThread *buffer_thread; if( vips_thread_isworker() ) { /* Workers get a private set of buffers. */ if( !(buffer_thread = g_private_get( buffer_thread_key )) ) { buffer_thread = buffer_thread_new(); g_private_set( buffer_thread_key, buffer_thread ); } g_assert( buffer_thread->thread == g_thread_self() ); } else /* Non-workers don't have one. */ buffer_thread = NULL; return( buffer_thread ); } /* Get the VipsBufferCache for this image, or NULL for a non-worker. */ static VipsBufferCache * buffer_cache_get( VipsImage *im ) { VipsBufferThread *buffer_thread; VipsBufferCache *cache; if( (buffer_thread = buffer_thread_get()) ) { if( !(cache = (VipsBufferCache *) g_hash_table_lookup( buffer_thread->hash, im )) ) { cache = buffer_cache_new( buffer_thread, im ); g_hash_table_insert( buffer_thread->hash, im, cache ); } g_assert( cache->thread == g_thread_self() ); } else cache = NULL; return( cache ); } /* Pixels have been calculated: publish for other parts of this thread to see. */ void vips_buffer_done( VipsBuffer *buffer ) { VipsImage *im = buffer->im; VipsBufferCache *cache; if( !buffer->done && (cache = buffer_cache_get( im )) ) { g_assert( !g_slist_find( cache->buffers, buffer ) ); g_assert( !buffer->cache ); buffer->done = TRUE; buffer->cache = cache; cache->buffers = g_slist_prepend( cache->buffers, buffer ); #ifdef DEBUG_VERBOSE printf( "vips_buffer_done: " "thread %p adding buffer %p to cache %p\n", g_thread_self(), buffer, cache ); vips_buffer_print( buffer ); #endif /*DEBUG_VERBOSE*/ } } /* Take off the public 'done' list. Make sure it has no calculated pixels in. */ void vips_buffer_undone( VipsBuffer *buffer ) { if( buffer->done ) { VipsBufferCache *cache = buffer->cache; #ifdef DEBUG_VERBOSE printf( "vips_buffer_undone: thread %p removing " "buffer %p from cache %p\n", g_thread_self(), buffer, cache ); #endif /*DEBUG_VERBOSE*/ g_assert( cache->thread == g_thread_self() ); g_assert( cache->buffer_thread->thread == cache->thread ); g_assert( g_slist_find( cache->buffers, buffer ) ); g_assert( buffer_thread_get() ); g_assert( cache->buffer_thread == buffer_thread_get() ); cache->buffers = g_slist_remove( cache->buffers, buffer ); buffer->done = FALSE; #ifdef DEBUG_VERBOSE printf( "vips_buffer_undone: %d buffers left\n", g_slist_length( cache->buffers ) ); #endif /*DEBUG_VERBOSE*/ } buffer->cache = NULL; buffer->area.width = 0; buffer->area.height = 0; } void vips_buffer_unref( VipsBuffer *buffer ) { #ifdef DEBUG_VERBOSE printf( "** vips_buffer_unref: left = %d, top = %d, " "width = %d, height = %d (%p)\n", buffer->area.left, buffer->area.top, buffer->area.width, buffer->area.height, buffer ); #endif /*DEBUG_VERBOSE*/ g_assert( buffer->ref_count > 0 ); buffer->ref_count -= 1; if( buffer->ref_count == 0 ) { VipsBufferCache *cache; #ifdef DEBUG_VERBOSE if( !buffer->done ) printf( "vips_buffer_unref: buffer was not done\n" ); #endif /*DEBUG_VERBOSE*/ vips_buffer_undone( buffer ); /* Place on this thread's reserve list for reuse. */ if( (cache = buffer_cache_get( buffer->im )) && cache->n_reserve < buffer_cache_max_reserve ) { g_assert( !buffer->cache ); cache->reserve = g_slist_prepend( cache->reserve, buffer ); cache->n_reserve += 1; buffer->cache = cache; buffer->area.width = 0; buffer->area.height = 0; } else vips_buffer_free( buffer ); } } static int buffer_move( VipsBuffer *buffer, VipsRect *area ) { VipsImage *im = buffer->im; size_t new_bsize; g_assert( buffer->ref_count == 1 ); vips_buffer_undone( buffer ); g_assert( !buffer->done ); buffer->area = *area; new_bsize = (size_t) VIPS_IMAGE_SIZEOF_PEL( im ) * area->width * area->height; if( buffer->bsize < new_bsize || !buffer->buf ) { buffer->bsize = new_bsize; VIPS_FREEF( vips_tracked_free, buffer->buf ); if( !(buffer->buf = vips_tracked_malloc( buffer->bsize )) ) return( -1 ); } return( 0 ); } /* Make a new buffer. */ VipsBuffer * vips_buffer_new( VipsImage *im, VipsRect *area ) { VipsBufferCache *cache; VipsBuffer *buffer; if( (cache = buffer_cache_get( im )) && cache->reserve ) { buffer = (VipsBuffer *) cache->reserve->data; cache->reserve = g_slist_remove( cache->reserve, buffer ); cache->n_reserve -= 1; g_assert( buffer->im == im ); g_assert( buffer->done == FALSE ); g_assert( buffer->cache ); buffer->ref_count = 1; buffer->done = FALSE; buffer->cache = NULL; } else { buffer = g_new0( VipsBuffer, 1 ); buffer->ref_count = 1; buffer->im = im; buffer->done = FALSE; buffer->cache = NULL; buffer->buf = NULL; buffer->bsize = 0; #ifdef DEBUG g_mutex_lock( vips__global_lock ); vips__buffer_all = g_slist_prepend( vips__buffer_all, buffer ); g_mutex_unlock( vips__global_lock ); #endif /*DEBUG*/ } if( buffer_move( buffer, area ) ) { vips_buffer_free( buffer ); return( NULL ); } return( buffer ); } /* Find an existing buffer that encloses area and return a ref. Or NULL for no * existing buffer. */ static VipsBuffer * buffer_find( VipsImage *im, VipsRect *r ) { VipsBufferCache *cache; VipsBuffer *buffer; GSList *p; VipsRect *area; if( !(cache = buffer_cache_get( im )) ) return( NULL ); /* This needs to be quick :-( don't use * vips_slist_map2()/vips_rect_includesrect(), do the search * inline. * * FIXME we return the first enclosing buffer, perhaps we should * search for the largest? */ for( p = cache->buffers; p; p = p->next ) { buffer = (VipsBuffer *) p->data; area = &buffer->area; if( area->left <= r->left && area->top <= r->top && area->left + area->width >= r->left + r->width && area->top + area->height >= r->top + r->height ) { buffer->ref_count += 1; #ifdef DEBUG_VERBOSE printf( "buffer_find: left = %d, top = %d, " "width = %d, height = %d, count = %d (%p)\n", buffer->area.left, buffer->area.top, buffer->area.width, buffer->area.height, buffer->ref_count, buffer ); #endif /*DEBUG_VERBOSE*/ return( buffer ); } } return( NULL ); } /* Return a ref to a buffer that encloses area. The buffer we return might be * done. */ VipsBuffer * vips_buffer_ref( VipsImage *im, VipsRect *area ) { VipsBuffer *buffer; if( (buffer = buffer_find( im, area )) ) return( buffer ); else return( vips_buffer_new( im, area ) ); } /* Unref old, ref new, in a single operation. Reuse stuff if we can. The * buffer we return might or might not be done. */ VipsBuffer * vips_buffer_unref_ref( VipsBuffer *old_buffer, VipsImage *im, VipsRect *area ) { VipsBuffer *buffer; g_assert( !old_buffer || old_buffer->im == im ); /* Is the current buffer OK? */ if( old_buffer && vips_rect_includesrect( &old_buffer->area, area ) ) return( old_buffer ); /* Does the new area already have a buffer? */ if( (buffer = buffer_find( im, area )) ) { VIPS_FREEF( vips_buffer_unref, old_buffer ); return( buffer ); } /* Is the current buffer unshared? We can just move it. */ if( old_buffer && old_buffer->ref_count == 1 ) { if( buffer_move( old_buffer, area ) ) { vips_buffer_unref( old_buffer ); return( NULL ); } return( old_buffer ); } /* Fallback ... unref the old one, make a new one. */ VIPS_FREEF( vips_buffer_unref, old_buffer ); if( !(buffer = vips_buffer_new( im, area )) ) return( NULL ); return( buffer ); } static void buffer_thread_destroy_notify( VipsBufferThread *buffer_thread ) { /* We only come here if vips_thread_shutdown() was not called for this * thread. Do our best to clean up. * * GPrivate has stopped working by this point in destruction, be * careful not to touch that. */ buffer_thread_free( buffer_thread ); } /* Init the buffer cache system. This is called during vips_init. */ void vips__buffer_init( void ) { #ifdef HAVE_PRIVATE_INIT static GPrivate private = G_PRIVATE_INIT( (GDestroyNotify) buffer_thread_destroy_notify ); buffer_thread_key = &private; #else if( !buffer_thread_key ) buffer_thread_key = g_private_new( (GDestroyNotify) buffer_thread_destroy_notify ); #endif if( buffer_cache_max_reserve < 1 ) printf( "vips__buffer_init: buffer reserve disabled\n" ); #ifdef DEBUG printf( "vips__buffer_init: DEBUG enabled\n" ); #endif /*DEBUG*/ #ifdef DEBUG_CREATE printf( "vips__buffer_init: DEBUG_CREATE enabled\n" ); #endif /*DEBUG_CREATE*/ } libvips-8.9.1/libvips/iofuncs/cache.c000066400000000000000000000650761361153320700175450ustar00rootroot00000000000000/* cache vips operations * * 20/6/12 * - try to make it compile on centos5 * 7/7/12 * - add a lock so we can run operations from many threads * 28/11/19 [MaxKellermann] * - make invalidate advisory rather than immediate */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* TODO what about delayed writes ... do we ever write in close? we shouldn't, should do in evalend or written or somesuch use g_param_values_cmp() instead of value_equal()? */ /* #define VIPS_DEBUG #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include /* Set by GOption from the command line, eg. "12m". */ gboolean vips__cache_dump = FALSE; gboolean vips__cache_trace = FALSE; /* Max number of cached operations. * * It was 10,000, but this was too high for batch-style applications with * little reuse. */ static int vips_cache_max = 1000; /* How many tracked open files we allow before we start dropping cache. */ static int vips_cache_max_files = 100; /* How much RAM we spend on caches before we start dropping cached operations * ... default 100mb. * * It was 1gb, but that's a lot of memory for things like vipsthumbnail where * there will be (almost) no reuse. Default low and let apps raise it if it'd * be useful. */ static size_t vips_cache_max_mem = 100 * 1024 * 1024; /* Hold a ref to all "recent" operations. */ static GHashTable *vips_cache_table = NULL; /* A 'time' counter: increment on all cache ops. Use this to detect LRU. */ static int vips_cache_time = 0; /* Protect cache access with this. */ static GMutex *vips_cache_lock = NULL; /* Old versions of glib are missing these. When we abandon centos 5, switch to * g_int64_hash() and g_double_hash(). */ #define INT64_HASH(X) (g_direct_hash(X)) #define DOUBLE_HASH(X) (g_direct_hash(X)) /* Old glibs use g_value_get_char(), new ones g_value_get_schar(). */ #ifdef HAVE_VALUE_GET_SCHAR #define VIPS_VALUE_GET_CHAR g_value_get_schar #else #define VIPS_VALUE_GET_CHAR g_value_get_char #endif /* A cache entry. */ typedef struct _VipsOperationCacheEntry { VipsOperation *operation; /* When we added this operation to cache .. used to find LRU for * flush. */ int time; /* We listen for "invalidate" from the operation. Track the id here so * we can disconnect when we drop an operation. */ gulong invalidate_id; /* Set if someone thinks this cache entry should be dropped. */ gboolean invalid; } VipsOperationCacheEntry; /* Pass in the pspec so we can get the generic type. For example, a * held in a GParamSpec allowing OBJECT, but the value could be of type * VipsImage. generics are much faster to compare. */ static unsigned int vips_value_hash( GParamSpec *pspec, GValue *value ) { GType generic = G_PARAM_SPEC_TYPE( pspec ); /* Not compile-time constants, so we have to use a set of if()s. Could * make a table at run time I guess. */ if( generic == G_TYPE_PARAM_BOOLEAN ) return( (unsigned int) g_value_get_boolean( value ) ); else if( generic == G_TYPE_PARAM_CHAR ) return( (unsigned int) VIPS_VALUE_GET_CHAR( value ) ); else if( generic == G_TYPE_PARAM_UCHAR ) return( (unsigned int) g_value_get_uchar( value ) ); else if( generic == G_TYPE_PARAM_INT ) return( (unsigned int) g_value_get_int( value ) ); else if( generic == G_TYPE_PARAM_UINT ) return( (unsigned int) g_value_get_uint( value ) ); else if( generic == G_TYPE_PARAM_LONG ) return( (unsigned int) g_value_get_long( value ) ); else if( generic == G_TYPE_PARAM_ULONG ) return( (unsigned int) g_value_get_ulong( value ) ); else if( generic == G_TYPE_PARAM_ENUM ) return( (unsigned int) g_value_get_enum( value ) ); else if( generic == G_TYPE_PARAM_FLAGS ) return( (unsigned int) g_value_get_flags( value ) ); else if( generic == G_TYPE_PARAM_UINT64 ) { guint64 i = g_value_get_uint64( value ); return( INT64_HASH( (gint64 *) &i ) ); } else if( generic == G_TYPE_PARAM_INT64 ) { gint64 i = g_value_get_int64( value ); return( INT64_HASH( &i ) ); } else if( generic == G_TYPE_PARAM_FLOAT ) { float f = g_value_get_float( value ); return( g_direct_hash( (void *) &f ) ); } else if( generic == G_TYPE_PARAM_DOUBLE ) { double d = g_value_get_double( value ); return( DOUBLE_HASH( &d ) ); } else if( generic == G_TYPE_PARAM_STRING ) { const char *s = g_value_get_string( value ); return( s ? g_str_hash( s ) : 0 ); } else if( generic == G_TYPE_PARAM_BOXED ) { void *p = g_value_get_boxed( value ); return( p ? g_direct_hash( p ) : 0 ); } else if( generic == G_TYPE_PARAM_POINTER ) { void *p = g_value_get_pointer( value ); return( p ? g_direct_hash( p ) : 0 ); } else if( generic == G_TYPE_PARAM_OBJECT ) { void *p = g_value_get_object( value ); return( p ? g_direct_hash( p ) : 0 ); } else { /* Fallback: convert to a string and hash that. * This is very slow, print a warning if we use it * so we can add another case. */ char *s; unsigned int hash; s = g_strdup_value_contents( value ); hash = g_str_hash( s ); printf( "vips_value_hash: no case for %s\n", s ); printf( "\ttype %d, %s\n", (int) G_VALUE_TYPE( value ), g_type_name( G_VALUE_TYPE( value ) ) ); printf( "\tgeneric %d, %s\n", (int) G_VALUE_TYPE( generic ), g_type_name( generic ) ); g_free( s ); return( hash ); } } /* Pass in the pspec so we can get the generic type. For example, a * value could be held in a GParamSpec allowing OBJECT, but the value * could be of type VipsImage. generics are much faster to compare. */ static gboolean vips_value_equal( GParamSpec *pspec, GValue *v1, GValue *v2 ) { GType generic = G_PARAM_SPEC_TYPE( pspec ); GType t1 = G_VALUE_TYPE( v1 ); GType t2 = G_VALUE_TYPE( v2 ); if( t1 != t2 ) return( FALSE ); /* Not compile-time constants, so we have to use a set of if()s. Could * make a table at run time I guess. */ if( generic == G_TYPE_PARAM_BOOLEAN ) return( g_value_get_boolean( v1 ) == g_value_get_boolean( v2 ) ); else if( generic == G_TYPE_PARAM_CHAR ) return( VIPS_VALUE_GET_CHAR( v1 ) == VIPS_VALUE_GET_CHAR( v2 ) ); if( generic == G_TYPE_PARAM_UCHAR ) return( g_value_get_uchar( v1 ) == g_value_get_uchar( v2 ) ); if( generic == G_TYPE_PARAM_INT ) return( g_value_get_int( v1 ) == g_value_get_int( v2 ) ); if( generic == G_TYPE_PARAM_UINT ) return( g_value_get_uint( v1 ) == g_value_get_uint( v2 ) ); if( generic == G_TYPE_PARAM_LONG ) return( g_value_get_long( v1 ) == g_value_get_long( v2 ) ); if( generic == G_TYPE_PARAM_ULONG ) return( g_value_get_ulong( v1 ) == g_value_get_ulong( v2 ) ); if( generic == G_TYPE_PARAM_ENUM ) return( g_value_get_enum( v1 ) == g_value_get_enum( v2 ) ); if( generic == G_TYPE_PARAM_FLAGS ) return( g_value_get_flags( v1 ) == g_value_get_flags( v2 ) ); if( generic == G_TYPE_PARAM_UINT64 ) return( g_value_get_uint64( v1 ) == g_value_get_uint64( v2 ) ); if( generic == G_TYPE_PARAM_INT64 ) return( g_value_get_int64( v1 ) == g_value_get_int64( v2 ) ); if( generic == G_TYPE_PARAM_FLOAT ) return( g_value_get_float( v1 ) == g_value_get_float( v2 ) ); if( generic == G_TYPE_PARAM_DOUBLE ) return( g_value_get_double( v1 ) == g_value_get_double( v2 ) ); if( generic == G_TYPE_PARAM_STRING ) { const char *s1 = g_value_get_string( v1 ); const char *s2 = g_value_get_string( v2 ); if( s1 == s2 ) return( TRUE ); else return( s1 && s2 && strcmp( s1, s2 ) == 0 ); } if( generic == G_TYPE_PARAM_BOXED ) return( g_value_get_boxed( v1 ) == g_value_get_boxed( v2 ) ); if( generic == G_TYPE_PARAM_POINTER ) return( g_value_get_pointer( v1 ) == g_value_get_pointer( v2 ) ); if( generic == G_TYPE_PARAM_OBJECT ) return( g_value_get_object( v1 ) == g_value_get_object( v2 ) ); else { /* Fallback: convert to a string and compare that. * This is very slow, print a warning if we use it * so we can add another case. */ char *s1; char *s2; gboolean equal; s1 = g_strdup_value_contents( v1 ); s2 = g_strdup_value_contents( v2 ); equal = strcmp( s1, s2 ) == 0; printf( "vips_value_equal: no case for %s, %s\n", s1, s2 ); printf( "\tt1 %d, %s\n", (int) t1, g_type_name( t1 ) ); printf( "\tt2 %d, %s\n", (int) t2, g_type_name( t2 ) ); printf( "\tgeneric %d, %s\n", (int) G_VALUE_TYPE( generic ), g_type_name( generic ) ); g_free( s1 ); g_free( s2 ); return( equal ); } } static void * vips_object_hash_arg( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { unsigned int *hash = (unsigned int *) a; if( (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && (argument_class->flags & VIPS_ARGUMENT_INPUT) && argument_instance->assigned ) { const char *name = g_param_spec_get_name( pspec ); GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); GValue value = { 0, }; g_value_init( &value, type ); g_object_get_property( G_OBJECT( object ), name, &value ); *hash = (*hash << 1) ^ vips_value_hash( pspec, &value ); g_value_unset( &value ); } return( NULL ); } /* Find a hash from the input arguments to a VipsOperstion. */ static unsigned int vips_operation_hash( VipsOperation *operation ) { if( !operation->found_hash ) { guint hash; /* Include the operation type in the hash. */ hash = (guint) G_OBJECT_TYPE( operation ); (void) vips_argument_map( VIPS_OBJECT( operation ), vips_object_hash_arg, &hash, NULL ); /* Make sure we can't have a zero hash value. */ hash |= 1; operation->hash = hash; operation->found_hash = TRUE; } return( operation->hash ); } static void * vips_object_equal_arg( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsObject *other = (VipsObject *) a; const char *name = g_param_spec_get_name( pspec ); GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); GValue v1 = { 0, }; GValue v2 = { 0, }; gboolean equal; /* Only test assigned input constructor args. */ if( !(argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) || !(argument_class->flags & VIPS_ARGUMENT_INPUT) || !argument_instance->assigned ) return( NULL ); /* If this is an optional arg, we need to check that this was * assigned on @other as well. */ if( !(argument_class->flags & VIPS_ARGUMENT_REQUIRED) && !vips_object_argument_isset( other, name ) ) /* Optional and was not set on other ... we've found a * difference! */ return( object ); g_value_init( &v1, type ); g_value_init( &v2, type ); g_object_get_property( G_OBJECT( object ), name, &v1 ); g_object_get_property( G_OBJECT( other ), name, &v2 ); equal = vips_value_equal( pspec, &v1, &v2 ); g_value_unset( &v1 ); g_value_unset( &v2 ); /* Stop (return non-NULL) if we've found a difference. */ return( !equal ? object : NULL ); } /* Are two objects equal, ie. have the same inputs. */ static gboolean vips_operation_equal( VipsOperation *a, VipsOperation *b ) { if( a == b ) return( TRUE ); if( G_OBJECT_TYPE( a ) == G_OBJECT_TYPE( b ) && vips_operation_hash( a ) == vips_operation_hash( b ) && !vips_argument_map( VIPS_OBJECT( a ), vips_object_equal_arg, b, NULL ) ) return( TRUE ); return( FALSE ); } void * vips__cache_once_init( void ) { vips_cache_lock = vips_g_mutex_new(); vips_cache_table = g_hash_table_new( (GHashFunc) vips_operation_hash, (GEqualFunc) vips_operation_equal ); return( NULL ); } void vips__cache_init( void ) { static GOnce once = G_ONCE_INIT; VIPS_ONCE( &once, (GThreadFunc) vips__cache_once_init, NULL ); } static void * vips_cache_print_fn( void *value, void *a, void *b ) { VipsOperationCacheEntry *entry = value; char str[32768]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_to_string( VIPS_OBJECT( entry->operation ), &buf ); printf( "%p - %s\n", value, vips_buf_all( &buf ) ); return( NULL ); } static void vips_cache_print_nolock( void ) { if( vips_cache_table ) { printf( "Operation cache:\n" ); vips_hash_table_map( vips_cache_table, vips_cache_print_fn, NULL, NULL ); } } /** * vips_cache_print: * * Print the whole operation cache to stdout. Handy for debugging. */ void vips_cache_print( void ) { g_mutex_lock( vips_cache_lock ); vips_cache_print_nolock(); g_mutex_unlock( vips_cache_lock ); } static void * vips_object_unref_arg( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { if( (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && (argument_class->flags & VIPS_ARGUMENT_OUTPUT) && argument_instance->assigned && G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject *value; /* This will up the ref count for us. */ g_object_get( G_OBJECT( object ), g_param_spec_get_name( pspec ), &value, NULL ); /* Drop the ref we just got, then drop the ref we make when we * added to the cache. */ g_object_unref( value ); g_object_unref( value ); } return( NULL ); } static void vips_cache_unref( VipsOperation *operation ) { #ifdef DEBUG printf( "vips_cache_unref: " ); vips_object_print_summary( VIPS_OBJECT( operation ) ); #endif /*DEBUG*/ (void) vips_argument_map( VIPS_OBJECT( operation ), vips_object_unref_arg, NULL, NULL ); g_object_unref( operation ); } /* Remove an operation from the cache. */ static void vips_cache_remove( VipsOperation *operation ) { VipsOperationCacheEntry *entry = (VipsOperationCacheEntry *) g_hash_table_lookup( vips_cache_table, operation ); #ifdef DEBUG printf( "vips_cache_remove: " ); vips_object_print_summary( VIPS_OBJECT( operation ) ); #endif /*DEBUG*/ g_assert( entry ); if( entry->invalidate_id ) { g_signal_handler_disconnect( operation, entry->invalidate_id ); entry->invalidate_id = 0; } g_hash_table_remove( vips_cache_table, operation ); vips_cache_unref( operation ); g_free( entry ); } static void * vips_object_ref_arg( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { if( (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && (argument_class->flags & VIPS_ARGUMENT_OUTPUT) && argument_instance->assigned && G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject *value; /* This will up the ref count for us. */ g_object_get( G_OBJECT( object ), g_param_spec_get_name( pspec ), &value, NULL ); } return( NULL ); } static void vips_operation_touch( VipsOperation *operation ) { VipsOperationCacheEntry *entry = (VipsOperationCacheEntry *) g_hash_table_lookup( vips_cache_table, operation ); vips_cache_time += 1; /* Don't up the time for invalid items -- we want them to fall out of * cache. */ if( !entry->invalid ) entry->time = vips_cache_time; } /* Ref an operation for the cache. The operation itself, plus all the output * objects it makes. */ static void vips_cache_ref( VipsOperation *operation ) { #ifdef DEBUG printf( "vips_cache_ref: " ); vips_object_print_summary( VIPS_OBJECT( operation ) ); #endif /*DEBUG*/ g_object_ref( operation ); (void) vips_argument_map( VIPS_OBJECT( operation ), vips_object_ref_arg, NULL, NULL ); vips_operation_touch( operation ); } static void vips_cache_invalidate_cb( VipsOperation *operation, VipsOperationCacheEntry *entry ) { #ifdef DEBUG printf( "vips_cache_invalidate_cb: " ); vips_object_print_summary( VIPS_OBJECT( operation ) ); #endif /*DEBUG*/ entry->invalid = TRUE; } static void vips_cache_insert( VipsOperation *operation ) { VipsOperationCacheEntry *entry = g_new( VipsOperationCacheEntry, 1 ); #ifdef VIPS_DEBUG printf( "vips_cache_insert: adding to cache" ); vips_object_print_dump( VIPS_OBJECT( operation ) ); #endif /*VIPS_DEBUG*/ entry->operation = operation; entry->time = 0; entry->invalidate_id = 0; entry->invalid = FALSE; g_hash_table_insert( vips_cache_table, operation, entry ); vips_cache_ref( operation ); /* If the operation signals "invalidate", we must tag this cache entry * for removal. */ entry->invalidate_id = g_signal_connect( operation, "invalidate", G_CALLBACK( vips_cache_invalidate_cb ), entry ); } static void * vips_cache_get_first_fn( void *value, void *a, void *b ) { return( value ); } /* Return the first item. */ static VipsOperation * vips_cache_get_first( void ) { VipsOperationCacheEntry *entry; if( vips_cache_table && (entry = vips_hash_table_map( vips_cache_table, vips_cache_get_first_fn, NULL, NULL )) ) return( VIPS_OPERATION( entry->operation ) ); return( NULL ); } /** * vips_cache_drop_all: * * Drop the whole operation cache, handy for leak tracking. Also called * automatically on vips_shutdown(). */ void vips_cache_drop_all( void ) { #ifdef VIPS_DEBUG printf( "vips_cache_drop_all:\n" ); #endif /*VIPS_DEBUG*/ g_mutex_lock( vips_cache_lock ); if( vips_cache_table ) { VipsOperation *operation; if( vips__cache_dump ) vips_cache_print_nolock(); /* We can't modify the hash in the callback from * g_hash_table_foreach() and friends. Repeatedly drop the * first item instead. */ while( (operation = vips_cache_get_first()) ) vips_cache_remove( operation ); VIPS_FREEF( g_hash_table_unref, vips_cache_table ); } g_mutex_unlock( vips_cache_lock ); } static void vips_cache_get_lru_cb( VipsOperation *key, VipsOperationCacheEntry *value, VipsOperationCacheEntry **best ) { if( !*best || (*best)->time > value->time ) *best = value; } /* Get the least-recently-used cache item. * * TODO ... will this be too expensive? probably not */ static VipsOperation * vips_cache_get_lru( void ) { VipsOperationCacheEntry *entry; entry = NULL; g_hash_table_foreach( vips_cache_table, (GHFunc) vips_cache_get_lru_cb, &entry ); if( entry ) return( entry->operation ); return( NULL ); } /* Is the cache full? Drop until it's not. */ static void vips_cache_trim( void ) { VipsOperation *operation; g_mutex_lock( vips_cache_lock ); while( vips_cache_table && (g_hash_table_size( vips_cache_table ) > vips_cache_max || vips_tracked_get_files() > vips_cache_max_files || vips_tracked_get_mem() > vips_cache_max_mem) && (operation = vips_cache_get_lru()) ) { #ifdef DEBUG printf( "vips_cache_trim: trimming " ); vips_object_print_summary( VIPS_OBJECT( operation ) ); #endif /*DEBUG*/ vips_cache_remove( operation ); } g_mutex_unlock( vips_cache_lock ); } /** * vips_cache_operation_lookup: * @operation: (transfer none): pointer to operation to lookup * * Look up an unbuilt @operation in the cache. If we get a hit, ref and * return the old operation. If there's no hit, return NULL. * * Returns: (transfer full): the cache hit, if any. */ VipsOperation * vips_cache_operation_lookup( VipsOperation *operation ) { VipsOperationCacheEntry *hit; VipsOperation *result; g_assert( VIPS_IS_OPERATION( operation ) ); g_assert( !VIPS_OBJECT( operation )->constructed ); #ifdef VIPS_DEBUG printf( "vips_cache_operation_lookup: " ); vips_object_print_dump( VIPS_OBJECT( operation ) ); #endif /*VIPS_DEBUG*/ g_mutex_lock( vips_cache_lock ); result = NULL; if( (hit = g_hash_table_lookup( vips_cache_table, operation )) ) { if( hit->invalid ) { /* There but has been tagged for removal. */ vips_cache_remove( hit->operation ); hit = NULL; } else { if( vips__cache_trace ) { printf( "vips cache*: " ); vips_object_print_summary( VIPS_OBJECT( operation ) ); } result = hit->operation; vips_cache_ref( result ); } } g_mutex_unlock( vips_cache_lock ); #ifdef VIPS_DEBUG printf( "vips_cache_operation_lookup: result = %p\n", result ); #endif /*VIPS_DEBUG*/ return( result ); } /** * vips_cache_operation_add: * @operation: (transfer none): pointer to operation to add * * Add a built operation to the cache. The cache will ref the operation. */ void vips_cache_operation_add( VipsOperation *operation ) { g_assert( VIPS_OBJECT( operation )->constructed ); g_mutex_lock( vips_cache_lock ); #ifdef VIPS_DEBUG printf( "vips_cache_operation_add: adding " ); vips_object_print_dump( VIPS_OBJECT( operation ) ); #endif /*VIPS_DEBUG*/ /* If two threads call the same operation at the same time, * we can get multiple adds. Let the first one win. See * https://github.com/libvips/libvips/pull/181 */ if( !g_hash_table_lookup( vips_cache_table, operation ) ) { VipsOperationFlags flags = vips_operation_get_flags( operation ); gboolean nocache = flags & VIPS_OPERATION_NOCACHE; /* Has to be after _build() so we can see output args. */ if( vips__cache_trace ) { if( nocache ) printf( "vips cache : " ); else printf( "vips cache+: " ); vips_object_print_summary( VIPS_OBJECT( operation ) ); } if( !nocache ) vips_cache_insert( operation ); } g_mutex_unlock( vips_cache_lock ); vips_cache_trim(); } /** * vips_cache_operation_buildp: (skip) * @operation: pointer to operation to lookup * * Look up @operation in the cache. If we get a hit, unref @operation, ref the * old one and return that through the argument pointer. * * If we miss, build and add @operation. * * Returns: 0 on success, or -1 on error. */ int vips_cache_operation_buildp( VipsOperation **operation ) { VipsOperation *hit; g_assert( VIPS_IS_OPERATION( *operation ) ); #ifdef VIPS_DEBUG printf( "vips_cache_operation_buildp: " ); vips_object_print_dump( VIPS_OBJECT( *operation ) ); #endif /*VIPS_DEBUG*/ if( (hit = vips_cache_operation_lookup( *operation )) ) { #ifdef VIPS_DEBUG printf( "vips_cache_operation_buildp: cache hit %p\n", hit ); #endif /*VIPS_DEBUG*/ g_object_unref( *operation ); *operation = hit; } else { #ifdef VIPS_DEBUG printf( "vips_cache_operation_buildp: cache miss, building\n" ); #endif /*VIPS_DEBUG*/ if( vips_object_build( VIPS_OBJECT( *operation ) ) ) return( -1 ); vips_cache_operation_add( *operation ); } return( 0 ); } /** * vips_cache_operation_build: * @operation: (transfer none): operation to lookup * * A binding-friendly version of vips_cache_operation_buildp(). * * After calling this, @operation has the same ref count as when it went in, * and the result must be freed with vips_object_unref_outputs() and * g_object_unref(). * * Returns: (transfer full): The built operation. */ VipsOperation * vips_cache_operation_build( VipsOperation *operation ) { VipsOperation *orig_operation = operation; /* Stop it being unreffed for us on hit. */ g_object_ref( orig_operation ); if( vips_cache_operation_buildp( &operation ) ) { g_object_unref( orig_operation ); return( NULL ); } return( operation ); } /** * vips_cache_set_max: * @max: maximum number of operation to cache * * Set the maximum number of operations we keep in cache. */ void vips_cache_set_max( int max ) { vips_cache_max = max; vips_cache_trim(); } /** * vips_cache_set_max_mem: * @max_mem: maximum amount of tracked memory we use * * Set the maximum amount of tracked memory we allow before we start dropping * cached operations. See vips_tracked_get_mem(). * * libvips only tracks memory it allocates, it can't track memory allocated by * external libraries. If you use an operation like vips_magickload(), most of * the memory it uses won't be included. * * See also: vips_tracked_get_mem(). */ void vips_cache_set_max_mem( size_t max_mem ) { vips_cache_max_mem = max_mem; vips_cache_trim(); } /** * vips_cache_get_max: * * Get the maximum number of operations we keep in cache. * * Returns: the maximum number of operations we keep in cache */ int vips_cache_get_max( void ) { return( vips_cache_max ); } /** * vips_cache_get_size: * * Get the current number of operations in cache. * * Returns: get the current number of operations in cache. */ int vips_cache_get_size( void ) { guint size; g_mutex_lock( vips_cache_lock ); size = 0; if( vips_cache_table ) size = g_hash_table_size( vips_cache_table ); g_mutex_unlock( vips_cache_lock ); return( size ); } /** * vips_cache_get_max_mem: * * Get the maximum amount of tracked memory we allow before we start dropping * cached operations. See vips_tracked_get_mem(). * * See also: vips_tracked_get_mem(). * * Returns: the maximum amount of tracked memory we allow */ size_t vips_cache_get_max_mem( void ) { return( vips_cache_max_mem ); } /** * vips_cache_get_max_files: * * Get the maximum number of tracked files we allow before we start dropping * cached operations. See vips_tracked_get_files(). * * libvips only tracks file descriptors it allocates, it can't track ones * allocated by external libraries. If you use an operation like * vips_magickload(), most of the descriptors it uses won't be included. * * See also: vips_tracked_get_files(). * * Returns: the maximum number of tracked files we allow */ int vips_cache_get_max_files( void ) { return( vips_cache_max_files ); } /** * vips_cache_set_max_files: * @max_files: max open files we allow * * Set the maximum number of tracked files we allow before we start dropping * cached operations. See vips_tracked_get_files(). * * See also: vips_tracked_get_files(). */ void vips_cache_set_max_files( int max_files ) { vips_cache_max_files = max_files; vips_cache_trim(); } /** * vips_cache_set_dump: * @dump: if %TRUE, dump the operation cache on exit * * Handy for debugging. Print the operation cache to stdout just before exit. * * See also: vips_cache_set_trace(). */ void vips_cache_set_dump( gboolean dump ) { vips__cache_dump = dump; } /** * vips_cache_set_trace: * @trace: if %TRUE, trace the operation cache * * Handy for debugging. Print operation cache actions to stdout as we run. * * You can set the environment variable `VIPS_TRACE` to turn this option on, or * use the command-line flag `--vips-cache-trace`. * * See also: vips_cache_set_dump(). */ void vips_cache_set_trace( gboolean trace ) { vips__cache_trace = trace; } libvips-8.9.1/libvips/iofuncs/connection.c000066400000000000000000000107711361153320700206310ustar00rootroot00000000000000/* A byte source/sink .. it can be a pipe, file descriptor, memory area, * socket, node.js stream, etc. * * J.Cupitt, 19/6/14 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include #include #include #include #include /** * SECTION: connection * @short_description: a source/sink of bytes, perhaps a network socket * @stability: Stable * @see_also: foreign * @include: vips/vips.h * @title: VipsConnection * * A #VipsConnection is a source or sink of bytes for something like jpeg * loading, see for example vips_jpegload_source(). * * It can be connected to a network socket, for example, or perhaps * a node.js stream, or to an area of memory. * * Subclass to add other input sources. Use #VipsSourceCustom and * #VipsTargetCustom to make a source or target with action signals for * ::read, ::write and ::seek. */ /** * VipsConnection: * * A #VipsConnection is a source or sink of bytes for something like jpeg * loading. It can be connected to a network socket, for example. */ G_DEFINE_ABSTRACT_TYPE( VipsConnection, vips_connection, VIPS_TYPE_OBJECT ); static void vips_connection_finalize( GObject *gobject ) { VipsConnection *connection = (VipsConnection *) gobject; #ifdef VIPS_DEBUG VIPS_DEBUG_MSG( "vips_connection_finalize: " ); vips_object_print_name( VIPS_OBJECT( gobject ) ); VIPS_DEBUG_MSG( "\n" ); #endif /*VIPS_DEBUG*/ if( connection->tracked_descriptor >= 0 ) { VIPS_DEBUG_MSG( " tracked_close()\n" ); vips_tracked_close( connection->tracked_descriptor ); connection->tracked_descriptor = -1; connection->descriptor = -1; } if( connection->close_descriptor >= 0 ) { VIPS_DEBUG_MSG( " close()\n" ); close( connection->close_descriptor ); connection->close_descriptor = -1; connection->descriptor = -1; } VIPS_FREE( connection->filename ); G_OBJECT_CLASS( vips_connection_parent_class )->finalize( gobject ); } static void vips_connection_class_init( VipsConnectionClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); gobject_class->finalize = vips_connection_finalize; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; VIPS_ARG_INT( class, "descriptor", 1, _( "Descriptor" ), _( "File descriptor for read or write" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConnection, descriptor ), -1, 1000000000, 0 ); VIPS_ARG_STRING( class, "filename", 2, _( "Filename" ), _( "Name of file to open" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConnection, filename ), NULL ); } static void vips_connection_init( VipsConnection *connection ) { connection->descriptor = -1; connection->tracked_descriptor = -1; connection->close_descriptor = -1; } /** * vips_connection_filename: * @connection: connection to operate on * * Returns: any filename associated with this connection, or NULL. */ const char * vips_connection_filename( VipsConnection *connection ) { return( connection->filename ); } /** * vips_connection_nick: * @connection: connection to operate on * * Returns: a string describing this connection which could be displayed to a * user. */ const char * vips_connection_nick( VipsConnection *connection ) { return( connection->filename ? connection->filename : VIPS_OBJECT( connection )->nickname ); } libvips-8.9.1/libvips/iofuncs/dbuf.c000066400000000000000000000232451361153320700174120ustar00rootroot00000000000000/* A dynamic memory buffer that expands as you write. */ /* Copyright (C) 1991-2003 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /** * vips_dbuf_init: * @dbuf: the buffer * * Initialize @dbuf. */ void vips_dbuf_init( VipsDbuf *dbuf ) { dbuf->data = NULL; dbuf->allocated_size = 0; dbuf->data_size = 0; dbuf->write_point = 0; } /** * vips_dbuf_minimum_size: * @dbuf: the buffer * @size: the minimum size * * Make sure @dbuf is at least @size bytes. * * Returns: %FALSE on out of memory, %TRUE otherwise. */ gboolean vips_dbuf_minimum_size( VipsDbuf *dbuf, size_t size ) { if( size > dbuf->allocated_size ) { const size_t new_allocated_size = 3 * (16 + size) / 2; unsigned char *new_data; if( !(new_data = g_try_realloc( dbuf->data, new_allocated_size )) ) { vips_error( "VipsDbuf", "%s", _( "out of memory" ) ); return( FALSE ); } dbuf->data = new_data; dbuf->allocated_size = new_allocated_size; } return( TRUE ); } /** * vips_dbuf_allocate: * @dbuf: the buffer * @size: the size to allocate * * Make sure @dbuf has at least @size bytes available after the write point. * * Returns: %FALSE on out of memory, %TRUE otherwise. */ gboolean vips_dbuf_allocate( VipsDbuf *dbuf, size_t size ) { return( vips_dbuf_minimum_size( dbuf, dbuf->write_point + size ) ); } /** * vips_dbuf_read: * @dbuf: the buffer * @data: read to this area * @size: read up to this many bytes * * Up to @size bytes are read from the buffer and copied to @data. The number * of bytes transferred is returned. * * Returns: the number of bytes transferred. */ size_t vips_dbuf_read( VipsDbuf *dbuf, unsigned char *data, size_t size ) { const size_t available = dbuf->data_size - dbuf->write_point; const size_t copied = VIPS_MIN( size, available ); memcpy( data, dbuf->data + dbuf->write_point, copied ); dbuf->write_point += copied; return( copied ); } /** * vips_dbuf_get_write: * @dbuf: the buffer * @size: (allow-none): optionally return length in bytes here * * Return a pointer to an area you can write to, return length of area in * @size. Use vips_dbuf_allocate() before this call to set a minimum amount of * space to have available. * * The write point moves to just beyond the returned block. Use * vips_dbuf_seek() to move it back again. * * Returns: (transfer none): start of write area. */ unsigned char * vips_dbuf_get_write( VipsDbuf *dbuf, size_t *size ) { unsigned char *write = dbuf->data + dbuf->write_point; const size_t available = dbuf->allocated_size - dbuf->write_point; memset( write, 0, available ); dbuf->write_point = dbuf->allocated_size; dbuf->data_size = dbuf->allocated_size; if( size ) *size = available; return( write ); } /** * vips_dbuf_write: * @dbuf: the buffer * @data: the data to write to the buffer * @size: the size of the len to write * * Append @size bytes from @data. @dbuf expands if necessary. * * Returns: %FALSE on out of memory, %TRUE otherwise. */ gboolean vips_dbuf_write( VipsDbuf *dbuf, const unsigned char *data, size_t size ) { if( !vips_dbuf_allocate( dbuf, size ) ) return( FALSE ); memcpy( dbuf->data + dbuf->write_point, data, size ); dbuf->write_point += size; dbuf->data_size = VIPS_MAX( dbuf->data_size, dbuf->write_point ); return( TRUE ); } /** * vips_dbuf_writef: * @dbuf: the buffer * @fmt: printf()-style format string * @...: arguments to format string * * Format the string and write to @dbuf. * * Returns: %FALSE on out of memory, %TRUE otherwise. */ gboolean vips_dbuf_writef( VipsDbuf *dbuf, const char *fmt, ... ) { va_list ap; char *line; va_start( ap, fmt ); line = g_strdup_vprintf( fmt, ap ); va_end( ap ); if( vips_dbuf_write( dbuf, (unsigned char *) line, strlen( line ) ) ) { g_free( line ); return( FALSE ); } g_free( line ); return( TRUE ); } /** * vips_dbuf_write_amp: * @dbuf: the buffer * @str: string to write * * Write @str to @dbuf, but escape stuff that xml hates in text. Our * argument string is utf-8. * * XML rules: * * - We must escape &<> * - Don't escape \n, \t, \r * - Do escape the other ASCII codes. * * Returns: %FALSE on out of memory, %TRUE otherwise. */ gboolean vips_dbuf_write_amp( VipsDbuf *dbuf, const char *str ) { const char *p; for( p = str; *p; p++ ) if( *p < 32 && *p != '\n' && *p != '\t' && *p != '\r' ) { /* You'd think we could output "%x;", but xml * 1.0 parsers barf on that. xml 1.1 allows this, but * there are almost no parsers. * * U+2400 onwards are unicode glyphs for the ASCII * control characters, so we can use them -- thanks * electroly. */ if( !vips_dbuf_writef( dbuf, "&#x%04x;", 0x2400 + *p ) ) return( FALSE ); } else if( *p == '<' ) { if( !vips_dbuf_write( dbuf, (guchar *) "<", 4 ) ) return( FALSE ); } else if( *p == '>' ) { if( !vips_dbuf_write( dbuf, (guchar *) ">", 4 ) ) return( FALSE ); } else if( *p == '&' ) { if( !vips_dbuf_write( dbuf, (guchar *) "&", 5 ) ) return( FALSE ); } else { if( !vips_dbuf_write( dbuf, (guchar *) p, 1 ) ) return( FALSE ); } return( TRUE ); } /** * vips_dbuf_reset: * @dbuf: the buffer * * Reset the buffer to empty. No memory is freed, just the data size and * write point are reset. */ void vips_dbuf_reset( VipsDbuf *dbuf ) { dbuf->write_point = 0; dbuf->data_size = 0; } /** * vips_dbuf_destroy: * @dbuf: the buffer * * Destroy @dbuf. This frees any allocated memory. */ void vips_dbuf_destroy( VipsDbuf *dbuf ) { vips_dbuf_reset( dbuf ); VIPS_FREE( dbuf->data ); dbuf->allocated_size = 0; } /** * vips_dbuf_seek: * @dbuf: the buffer * @offset: how to move the write point * @whence: from start, from end, from current * * Move the write point. @whence can be %SEEK_SET, %SEEK_CUR, %SEEK_END, with * the usual meaning. */ gboolean vips_dbuf_seek( VipsDbuf *dbuf, off_t offset, int whence ) { off_t new_write_point; switch( whence ) { case SEEK_SET: new_write_point = offset; break; case SEEK_END: new_write_point = dbuf->data_size + offset; break; case SEEK_CUR: new_write_point = dbuf->write_point + offset; break; default: g_assert( 0 ); new_write_point = dbuf->write_point; break; } if( new_write_point < 0 ) { vips_error( "VipsDbuf", "%s", "negative seek" ); return( FALSE ); } /* Possibly need to grow the buffer */ if( !vips_dbuf_minimum_size( dbuf, new_write_point ) ) return( FALSE ); dbuf->write_point = new_write_point; if( dbuf->data_size < dbuf->write_point ) { memset( dbuf->data + dbuf->data_size, 0, dbuf->write_point - dbuf->data_size ); dbuf->data_size = dbuf->write_point; } return( TRUE ); } /** * vips_dbuf_truncate: * @dbuf: the buffer * * Truncate the data so that it ends at the write point. No memory is freed. */ void vips_dbuf_truncate( VipsDbuf *dbuf ) { dbuf->data_size = dbuf->write_point; } /** * vips_dbuf_tell: * @dbuf: the buffer * * Returns: the current write point */ off_t vips_dbuf_tell( VipsDbuf *dbuf ) { return( dbuf->write_point ); } /** * vips_dbuf_null_terminate: * @dbuf: the buffer * * Make sure the byte after the last data byte is `\0`. This extra byte is not * included in the data size and the write point is not moved. * * This makes it safe to treat the dbuf contents as a C string. * * Returns: %FALSE on out of memory, %TRUE otherwise. */ static gboolean vips_dbuf_null_terminate( VipsDbuf *dbuf ) { if( !vips_dbuf_minimum_size( dbuf, dbuf->data_size + 1 ) ) return( FALSE ); dbuf->data[dbuf->data_size] = 0; return( TRUE ); } /** * vips_dbuf_steal: * @dbuf: the buffer * @size: (allow-none): optionally return length in bytes here * * Destroy a buffer, but rather than freeing memory, a pointer is returned. * This must be freed with g_free(). * * A `\0` is appended, but not included in the character count. This is so the * pointer can be safely treated as a C string. * * Returns: (transfer full): The pointer held by @dbuf. */ unsigned char * vips_dbuf_steal( VipsDbuf *dbuf, size_t *size ) { unsigned char *data; vips_dbuf_null_terminate( dbuf ); data = dbuf->data; if( size ) *size = dbuf->data_size; dbuf->data = NULL; vips_dbuf_destroy( dbuf ); return( data ); } /** * vips_dbuf_string: * @dbuf: the buffer * @size: (allow-none): optionally return length in bytes here * * Return a pointer to @dbuf's internal data. * * A `\0` is appended, but not included in the character count. This is so the * pointer can be safely treated as a C string. * * Returns: (transfer none): The pointer held by @dbuf. */ unsigned char * vips_dbuf_string( VipsDbuf *dbuf, size_t *size ) { vips_dbuf_null_terminate( dbuf ); if( size ) *size = dbuf->data_size; return( dbuf->data ); } libvips-8.9.1/libvips/iofuncs/enumtemplate000066400000000000000000000012561361153320700207470ustar00rootroot00000000000000/*** BEGIN file-header ***/ /* auto-generated enums for vips introspection */ #include /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@filename@" */ /*** END file-production ***/ /*** BEGIN value-header ***/ GType @enum_name@_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const G@Type@Value values[] = { /*** END value-header ***/ /*** BEGIN value-production ***/ {@VALUENAME@, "@VALUENAME@", "@valuenick@"}, /*** END value-production ***/ /*** BEGIN value-tail ***/ {0, NULL, NULL} }; etype = g_@type@_register_static( "@EnumName@", values ); } return( etype ); } /*** END value-tail ***/ libvips-8.9.1/libvips/iofuncs/enumtypes.c000066400000000000000000000746401361153320700205300ustar00rootroot00000000000000 /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ /* auto-generated enums for vips introspection */ #include /* enumerations from "../../libvips/include/vips/arithmetic.h" */ GType vips_operation_math_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_MATH_SIN, "VIPS_OPERATION_MATH_SIN", "sin"}, {VIPS_OPERATION_MATH_COS, "VIPS_OPERATION_MATH_COS", "cos"}, {VIPS_OPERATION_MATH_TAN, "VIPS_OPERATION_MATH_TAN", "tan"}, {VIPS_OPERATION_MATH_ASIN, "VIPS_OPERATION_MATH_ASIN", "asin"}, {VIPS_OPERATION_MATH_ACOS, "VIPS_OPERATION_MATH_ACOS", "acos"}, {VIPS_OPERATION_MATH_ATAN, "VIPS_OPERATION_MATH_ATAN", "atan"}, {VIPS_OPERATION_MATH_LOG, "VIPS_OPERATION_MATH_LOG", "log"}, {VIPS_OPERATION_MATH_LOG10, "VIPS_OPERATION_MATH_LOG10", "log10"}, {VIPS_OPERATION_MATH_EXP, "VIPS_OPERATION_MATH_EXP", "exp"}, {VIPS_OPERATION_MATH_EXP10, "VIPS_OPERATION_MATH_EXP10", "exp10"}, {VIPS_OPERATION_MATH_LAST, "VIPS_OPERATION_MATH_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationMath", values ); } return( etype ); } GType vips_operation_math2_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_MATH2_POW, "VIPS_OPERATION_MATH2_POW", "pow"}, {VIPS_OPERATION_MATH2_WOP, "VIPS_OPERATION_MATH2_WOP", "wop"}, {VIPS_OPERATION_MATH2_LAST, "VIPS_OPERATION_MATH2_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationMath2", values ); } return( etype ); } GType vips_operation_round_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_ROUND_RINT, "VIPS_OPERATION_ROUND_RINT", "rint"}, {VIPS_OPERATION_ROUND_CEIL, "VIPS_OPERATION_ROUND_CEIL", "ceil"}, {VIPS_OPERATION_ROUND_FLOOR, "VIPS_OPERATION_ROUND_FLOOR", "floor"}, {VIPS_OPERATION_ROUND_LAST, "VIPS_OPERATION_ROUND_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationRound", values ); } return( etype ); } GType vips_operation_relational_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_RELATIONAL_EQUAL, "VIPS_OPERATION_RELATIONAL_EQUAL", "equal"}, {VIPS_OPERATION_RELATIONAL_NOTEQ, "VIPS_OPERATION_RELATIONAL_NOTEQ", "noteq"}, {VIPS_OPERATION_RELATIONAL_LESS, "VIPS_OPERATION_RELATIONAL_LESS", "less"}, {VIPS_OPERATION_RELATIONAL_LESSEQ, "VIPS_OPERATION_RELATIONAL_LESSEQ", "lesseq"}, {VIPS_OPERATION_RELATIONAL_MORE, "VIPS_OPERATION_RELATIONAL_MORE", "more"}, {VIPS_OPERATION_RELATIONAL_MOREEQ, "VIPS_OPERATION_RELATIONAL_MOREEQ", "moreeq"}, {VIPS_OPERATION_RELATIONAL_LAST, "VIPS_OPERATION_RELATIONAL_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationRelational", values ); } return( etype ); } GType vips_operation_boolean_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_BOOLEAN_AND, "VIPS_OPERATION_BOOLEAN_AND", "and"}, {VIPS_OPERATION_BOOLEAN_OR, "VIPS_OPERATION_BOOLEAN_OR", "or"}, {VIPS_OPERATION_BOOLEAN_EOR, "VIPS_OPERATION_BOOLEAN_EOR", "eor"}, {VIPS_OPERATION_BOOLEAN_LSHIFT, "VIPS_OPERATION_BOOLEAN_LSHIFT", "lshift"}, {VIPS_OPERATION_BOOLEAN_RSHIFT, "VIPS_OPERATION_BOOLEAN_RSHIFT", "rshift"}, {VIPS_OPERATION_BOOLEAN_LAST, "VIPS_OPERATION_BOOLEAN_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationBoolean", values ); } return( etype ); } GType vips_operation_complex_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_COMPLEX_POLAR, "VIPS_OPERATION_COMPLEX_POLAR", "polar"}, {VIPS_OPERATION_COMPLEX_RECT, "VIPS_OPERATION_COMPLEX_RECT", "rect"}, {VIPS_OPERATION_COMPLEX_CONJ, "VIPS_OPERATION_COMPLEX_CONJ", "conj"}, {VIPS_OPERATION_COMPLEX_LAST, "VIPS_OPERATION_COMPLEX_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationComplex", values ); } return( etype ); } GType vips_operation_complex2_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_COMPLEX2_CROSS_PHASE, "VIPS_OPERATION_COMPLEX2_CROSS_PHASE", "cross-phase"}, {VIPS_OPERATION_COMPLEX2_LAST, "VIPS_OPERATION_COMPLEX2_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationComplex2", values ); } return( etype ); } GType vips_operation_complexget_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_COMPLEXGET_REAL, "VIPS_OPERATION_COMPLEXGET_REAL", "real"}, {VIPS_OPERATION_COMPLEXGET_IMAG, "VIPS_OPERATION_COMPLEXGET_IMAG", "imag"}, {VIPS_OPERATION_COMPLEXGET_LAST, "VIPS_OPERATION_COMPLEXGET_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationComplexget", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/basic.h" */ GType vips_precision_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_PRECISION_INTEGER, "VIPS_PRECISION_INTEGER", "integer"}, {VIPS_PRECISION_FLOAT, "VIPS_PRECISION_FLOAT", "float"}, {VIPS_PRECISION_APPROXIMATE, "VIPS_PRECISION_APPROXIMATE", "approximate"}, {VIPS_PRECISION_LAST, "VIPS_PRECISION_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsPrecision", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/colour.h" */ GType vips_intent_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_INTENT_PERCEPTUAL, "VIPS_INTENT_PERCEPTUAL", "perceptual"}, {VIPS_INTENT_RELATIVE, "VIPS_INTENT_RELATIVE", "relative"}, {VIPS_INTENT_SATURATION, "VIPS_INTENT_SATURATION", "saturation"}, {VIPS_INTENT_ABSOLUTE, "VIPS_INTENT_ABSOLUTE", "absolute"}, {VIPS_INTENT_LAST, "VIPS_INTENT_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsIntent", values ); } return( etype ); } GType vips_pcs_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_PCS_LAB, "VIPS_PCS_LAB", "lab"}, {VIPS_PCS_XYZ, "VIPS_PCS_XYZ", "xyz"}, {VIPS_PCS_LAST, "VIPS_PCS_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsPCS", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/conversion.h" */ GType vips_extend_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_EXTEND_BLACK, "VIPS_EXTEND_BLACK", "black"}, {VIPS_EXTEND_COPY, "VIPS_EXTEND_COPY", "copy"}, {VIPS_EXTEND_REPEAT, "VIPS_EXTEND_REPEAT", "repeat"}, {VIPS_EXTEND_MIRROR, "VIPS_EXTEND_MIRROR", "mirror"}, {VIPS_EXTEND_WHITE, "VIPS_EXTEND_WHITE", "white"}, {VIPS_EXTEND_BACKGROUND, "VIPS_EXTEND_BACKGROUND", "background"}, {VIPS_EXTEND_LAST, "VIPS_EXTEND_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsExtend", values ); } return( etype ); } GType vips_compass_direction_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_COMPASS_DIRECTION_CENTRE, "VIPS_COMPASS_DIRECTION_CENTRE", "centre"}, {VIPS_COMPASS_DIRECTION_NORTH, "VIPS_COMPASS_DIRECTION_NORTH", "north"}, {VIPS_COMPASS_DIRECTION_EAST, "VIPS_COMPASS_DIRECTION_EAST", "east"}, {VIPS_COMPASS_DIRECTION_SOUTH, "VIPS_COMPASS_DIRECTION_SOUTH", "south"}, {VIPS_COMPASS_DIRECTION_WEST, "VIPS_COMPASS_DIRECTION_WEST", "west"}, {VIPS_COMPASS_DIRECTION_NORTH_EAST, "VIPS_COMPASS_DIRECTION_NORTH_EAST", "north-east"}, {VIPS_COMPASS_DIRECTION_SOUTH_EAST, "VIPS_COMPASS_DIRECTION_SOUTH_EAST", "south-east"}, {VIPS_COMPASS_DIRECTION_SOUTH_WEST, "VIPS_COMPASS_DIRECTION_SOUTH_WEST", "south-west"}, {VIPS_COMPASS_DIRECTION_NORTH_WEST, "VIPS_COMPASS_DIRECTION_NORTH_WEST", "north-west"}, {VIPS_COMPASS_DIRECTION_LAST, "VIPS_COMPASS_DIRECTION_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsCompassDirection", values ); } return( etype ); } GType vips_direction_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_DIRECTION_HORIZONTAL, "VIPS_DIRECTION_HORIZONTAL", "horizontal"}, {VIPS_DIRECTION_VERTICAL, "VIPS_DIRECTION_VERTICAL", "vertical"}, {VIPS_DIRECTION_LAST, "VIPS_DIRECTION_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsDirection", values ); } return( etype ); } GType vips_align_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_ALIGN_LOW, "VIPS_ALIGN_LOW", "low"}, {VIPS_ALIGN_CENTRE, "VIPS_ALIGN_CENTRE", "centre"}, {VIPS_ALIGN_HIGH, "VIPS_ALIGN_HIGH", "high"}, {VIPS_ALIGN_LAST, "VIPS_ALIGN_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsAlign", values ); } return( etype ); } GType vips_angle_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_ANGLE_D0, "VIPS_ANGLE_D0", "d0"}, {VIPS_ANGLE_D90, "VIPS_ANGLE_D90", "d90"}, {VIPS_ANGLE_D180, "VIPS_ANGLE_D180", "d180"}, {VIPS_ANGLE_D270, "VIPS_ANGLE_D270", "d270"}, {VIPS_ANGLE_LAST, "VIPS_ANGLE_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsAngle", values ); } return( etype ); } GType vips_angle45_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_ANGLE45_D0, "VIPS_ANGLE45_D0", "d0"}, {VIPS_ANGLE45_D45, "VIPS_ANGLE45_D45", "d45"}, {VIPS_ANGLE45_D90, "VIPS_ANGLE45_D90", "d90"}, {VIPS_ANGLE45_D135, "VIPS_ANGLE45_D135", "d135"}, {VIPS_ANGLE45_D180, "VIPS_ANGLE45_D180", "d180"}, {VIPS_ANGLE45_D225, "VIPS_ANGLE45_D225", "d225"}, {VIPS_ANGLE45_D270, "VIPS_ANGLE45_D270", "d270"}, {VIPS_ANGLE45_D315, "VIPS_ANGLE45_D315", "d315"}, {VIPS_ANGLE45_LAST, "VIPS_ANGLE45_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsAngle45", values ); } return( etype ); } GType vips_interesting_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_INTERESTING_NONE, "VIPS_INTERESTING_NONE", "none"}, {VIPS_INTERESTING_CENTRE, "VIPS_INTERESTING_CENTRE", "centre"}, {VIPS_INTERESTING_ENTROPY, "VIPS_INTERESTING_ENTROPY", "entropy"}, {VIPS_INTERESTING_ATTENTION, "VIPS_INTERESTING_ATTENTION", "attention"}, {VIPS_INTERESTING_LOW, "VIPS_INTERESTING_LOW", "low"}, {VIPS_INTERESTING_HIGH, "VIPS_INTERESTING_HIGH", "high"}, {VIPS_INTERESTING_LAST, "VIPS_INTERESTING_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsInteresting", values ); } return( etype ); } GType vips_blend_mode_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_BLEND_MODE_CLEAR, "VIPS_BLEND_MODE_CLEAR", "clear"}, {VIPS_BLEND_MODE_SOURCE, "VIPS_BLEND_MODE_SOURCE", "source"}, {VIPS_BLEND_MODE_OVER, "VIPS_BLEND_MODE_OVER", "over"}, {VIPS_BLEND_MODE_IN, "VIPS_BLEND_MODE_IN", "in"}, {VIPS_BLEND_MODE_OUT, "VIPS_BLEND_MODE_OUT", "out"}, {VIPS_BLEND_MODE_ATOP, "VIPS_BLEND_MODE_ATOP", "atop"}, {VIPS_BLEND_MODE_DEST, "VIPS_BLEND_MODE_DEST", "dest"}, {VIPS_BLEND_MODE_DEST_OVER, "VIPS_BLEND_MODE_DEST_OVER", "dest-over"}, {VIPS_BLEND_MODE_DEST_IN, "VIPS_BLEND_MODE_DEST_IN", "dest-in"}, {VIPS_BLEND_MODE_DEST_OUT, "VIPS_BLEND_MODE_DEST_OUT", "dest-out"}, {VIPS_BLEND_MODE_DEST_ATOP, "VIPS_BLEND_MODE_DEST_ATOP", "dest-atop"}, {VIPS_BLEND_MODE_XOR, "VIPS_BLEND_MODE_XOR", "xor"}, {VIPS_BLEND_MODE_ADD, "VIPS_BLEND_MODE_ADD", "add"}, {VIPS_BLEND_MODE_SATURATE, "VIPS_BLEND_MODE_SATURATE", "saturate"}, {VIPS_BLEND_MODE_MULTIPLY, "VIPS_BLEND_MODE_MULTIPLY", "multiply"}, {VIPS_BLEND_MODE_SCREEN, "VIPS_BLEND_MODE_SCREEN", "screen"}, {VIPS_BLEND_MODE_OVERLAY, "VIPS_BLEND_MODE_OVERLAY", "overlay"}, {VIPS_BLEND_MODE_DARKEN, "VIPS_BLEND_MODE_DARKEN", "darken"}, {VIPS_BLEND_MODE_LIGHTEN, "VIPS_BLEND_MODE_LIGHTEN", "lighten"}, {VIPS_BLEND_MODE_COLOUR_DODGE, "VIPS_BLEND_MODE_COLOUR_DODGE", "colour-dodge"}, {VIPS_BLEND_MODE_COLOUR_BURN, "VIPS_BLEND_MODE_COLOUR_BURN", "colour-burn"}, {VIPS_BLEND_MODE_HARD_LIGHT, "VIPS_BLEND_MODE_HARD_LIGHT", "hard-light"}, {VIPS_BLEND_MODE_SOFT_LIGHT, "VIPS_BLEND_MODE_SOFT_LIGHT", "soft-light"}, {VIPS_BLEND_MODE_DIFFERENCE, "VIPS_BLEND_MODE_DIFFERENCE", "difference"}, {VIPS_BLEND_MODE_EXCLUSION, "VIPS_BLEND_MODE_EXCLUSION", "exclusion"}, {VIPS_BLEND_MODE_LAST, "VIPS_BLEND_MODE_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsBlendMode", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/convolution.h" */ GType vips_combine_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_COMBINE_MAX, "VIPS_COMBINE_MAX", "max"}, {VIPS_COMBINE_SUM, "VIPS_COMBINE_SUM", "sum"}, {VIPS_COMBINE_MIN, "VIPS_COMBINE_MIN", "min"}, {VIPS_COMBINE_LAST, "VIPS_COMBINE_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsCombine", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/draw.h" */ GType vips_combine_mode_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_COMBINE_MODE_SET, "VIPS_COMBINE_MODE_SET", "set"}, {VIPS_COMBINE_MODE_ADD, "VIPS_COMBINE_MODE_ADD", "add"}, {VIPS_COMBINE_MODE_LAST, "VIPS_COMBINE_MODE_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsCombineMode", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/foreign.h" */ GType vips_foreign_flags_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GFlagsValue values[] = { {VIPS_FOREIGN_NONE, "VIPS_FOREIGN_NONE", "none"}, {VIPS_FOREIGN_PARTIAL, "VIPS_FOREIGN_PARTIAL", "partial"}, {VIPS_FOREIGN_BIGENDIAN, "VIPS_FOREIGN_BIGENDIAN", "bigendian"}, {VIPS_FOREIGN_SEQUENTIAL, "VIPS_FOREIGN_SEQUENTIAL", "sequential"}, {VIPS_FOREIGN_ALL, "VIPS_FOREIGN_ALL", "all"}, {0, NULL, NULL} }; etype = g_flags_register_static( "VipsForeignFlags", values ); } return( etype ); } GType vips_saveable_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_SAVEABLE_MONO, "VIPS_SAVEABLE_MONO", "mono"}, {VIPS_SAVEABLE_RGB, "VIPS_SAVEABLE_RGB", "rgb"}, {VIPS_SAVEABLE_RGBA, "VIPS_SAVEABLE_RGBA", "rgba"}, {VIPS_SAVEABLE_RGBA_ONLY, "VIPS_SAVEABLE_RGBA_ONLY", "rgba-only"}, {VIPS_SAVEABLE_RGB_CMYK, "VIPS_SAVEABLE_RGB_CMYK", "rgb-cmyk"}, {VIPS_SAVEABLE_ANY, "VIPS_SAVEABLE_ANY", "any"}, {VIPS_SAVEABLE_LAST, "VIPS_SAVEABLE_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsSaveable", values ); } return( etype ); } GType vips_foreign_webp_preset_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_WEBP_PRESET_DEFAULT, "VIPS_FOREIGN_WEBP_PRESET_DEFAULT", "default"}, {VIPS_FOREIGN_WEBP_PRESET_PICTURE, "VIPS_FOREIGN_WEBP_PRESET_PICTURE", "picture"}, {VIPS_FOREIGN_WEBP_PRESET_PHOTO, "VIPS_FOREIGN_WEBP_PRESET_PHOTO", "photo"}, {VIPS_FOREIGN_WEBP_PRESET_DRAWING, "VIPS_FOREIGN_WEBP_PRESET_DRAWING", "drawing"}, {VIPS_FOREIGN_WEBP_PRESET_ICON, "VIPS_FOREIGN_WEBP_PRESET_ICON", "icon"}, {VIPS_FOREIGN_WEBP_PRESET_TEXT, "VIPS_FOREIGN_WEBP_PRESET_TEXT", "text"}, {VIPS_FOREIGN_WEBP_PRESET_LAST, "VIPS_FOREIGN_WEBP_PRESET_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignWebpPreset", values ); } return( etype ); } GType vips_foreign_tiff_compression_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_TIFF_COMPRESSION_NONE, "VIPS_FOREIGN_TIFF_COMPRESSION_NONE", "none"}, {VIPS_FOREIGN_TIFF_COMPRESSION_JPEG, "VIPS_FOREIGN_TIFF_COMPRESSION_JPEG", "jpeg"}, {VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE, "VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE", "deflate"}, {VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS, "VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS", "packbits"}, {VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4, "VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4", "ccittfax4"}, {VIPS_FOREIGN_TIFF_COMPRESSION_LZW, "VIPS_FOREIGN_TIFF_COMPRESSION_LZW", "lzw"}, {VIPS_FOREIGN_TIFF_COMPRESSION_WEBP, "VIPS_FOREIGN_TIFF_COMPRESSION_WEBP", "webp"}, {VIPS_FOREIGN_TIFF_COMPRESSION_ZSTD, "VIPS_FOREIGN_TIFF_COMPRESSION_ZSTD", "zstd"}, {VIPS_FOREIGN_TIFF_COMPRESSION_LAST, "VIPS_FOREIGN_TIFF_COMPRESSION_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignTiffCompression", values ); } return( etype ); } GType vips_foreign_tiff_predictor_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_TIFF_PREDICTOR_NONE, "VIPS_FOREIGN_TIFF_PREDICTOR_NONE", "none"}, {VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL, "VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL", "horizontal"}, {VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT, "VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT", "float"}, {VIPS_FOREIGN_TIFF_PREDICTOR_LAST, "VIPS_FOREIGN_TIFF_PREDICTOR_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignTiffPredictor", values ); } return( etype ); } GType vips_foreign_tiff_resunit_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_TIFF_RESUNIT_CM, "VIPS_FOREIGN_TIFF_RESUNIT_CM", "cm"}, {VIPS_FOREIGN_TIFF_RESUNIT_INCH, "VIPS_FOREIGN_TIFF_RESUNIT_INCH", "inch"}, {VIPS_FOREIGN_TIFF_RESUNIT_LAST, "VIPS_FOREIGN_TIFF_RESUNIT_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignTiffResunit", values ); } return( etype ); } GType vips_foreign_png_filter_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GFlagsValue values[] = { {VIPS_FOREIGN_PNG_FILTER_NONE, "VIPS_FOREIGN_PNG_FILTER_NONE", "none"}, {VIPS_FOREIGN_PNG_FILTER_SUB, "VIPS_FOREIGN_PNG_FILTER_SUB", "sub"}, {VIPS_FOREIGN_PNG_FILTER_UP, "VIPS_FOREIGN_PNG_FILTER_UP", "up"}, {VIPS_FOREIGN_PNG_FILTER_AVG, "VIPS_FOREIGN_PNG_FILTER_AVG", "avg"}, {VIPS_FOREIGN_PNG_FILTER_PAETH, "VIPS_FOREIGN_PNG_FILTER_PAETH", "paeth"}, {VIPS_FOREIGN_PNG_FILTER_ALL, "VIPS_FOREIGN_PNG_FILTER_ALL", "all"}, {0, NULL, NULL} }; etype = g_flags_register_static( "VipsForeignPngFilter", values ); } return( etype ); } GType vips_foreign_dz_layout_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_DZ_LAYOUT_DZ, "VIPS_FOREIGN_DZ_LAYOUT_DZ", "dz"}, {VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY, "VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY", "zoomify"}, {VIPS_FOREIGN_DZ_LAYOUT_GOOGLE, "VIPS_FOREIGN_DZ_LAYOUT_GOOGLE", "google"}, {VIPS_FOREIGN_DZ_LAYOUT_IIIF, "VIPS_FOREIGN_DZ_LAYOUT_IIIF", "iiif"}, {VIPS_FOREIGN_DZ_LAYOUT_LAST, "VIPS_FOREIGN_DZ_LAYOUT_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignDzLayout", values ); } return( etype ); } GType vips_foreign_dz_depth_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL, "VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL", "onepixel"}, {VIPS_FOREIGN_DZ_DEPTH_ONETILE, "VIPS_FOREIGN_DZ_DEPTH_ONETILE", "onetile"}, {VIPS_FOREIGN_DZ_DEPTH_ONE, "VIPS_FOREIGN_DZ_DEPTH_ONE", "one"}, {VIPS_FOREIGN_DZ_DEPTH_LAST, "VIPS_FOREIGN_DZ_DEPTH_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignDzDepth", values ); } return( etype ); } GType vips_foreign_dz_container_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_DZ_CONTAINER_FS, "VIPS_FOREIGN_DZ_CONTAINER_FS", "fs"}, {VIPS_FOREIGN_DZ_CONTAINER_ZIP, "VIPS_FOREIGN_DZ_CONTAINER_ZIP", "zip"}, {VIPS_FOREIGN_DZ_CONTAINER_SZI, "VIPS_FOREIGN_DZ_CONTAINER_SZI", "szi"}, {VIPS_FOREIGN_DZ_CONTAINER_LAST, "VIPS_FOREIGN_DZ_CONTAINER_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignDzContainer", values ); } return( etype ); } GType vips_foreign_heif_compression_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_HEIF_COMPRESSION_HEVC, "VIPS_FOREIGN_HEIF_COMPRESSION_HEVC", "hevc"}, {VIPS_FOREIGN_HEIF_COMPRESSION_AVC, "VIPS_FOREIGN_HEIF_COMPRESSION_AVC", "avc"}, {VIPS_FOREIGN_HEIF_COMPRESSION_JPEG, "VIPS_FOREIGN_HEIF_COMPRESSION_JPEG", "jpeg"}, {VIPS_FOREIGN_HEIF_COMPRESSION_AV1, "VIPS_FOREIGN_HEIF_COMPRESSION_AV1", "av1"}, {VIPS_FOREIGN_HEIF_COMPRESSION_LAST, "VIPS_FOREIGN_HEIF_COMPRESSION_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignHeifCompression", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/image.h" */ GType vips_demand_style_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_DEMAND_STYLE_ERROR, "VIPS_DEMAND_STYLE_ERROR", "error"}, {VIPS_DEMAND_STYLE_SMALLTILE, "VIPS_DEMAND_STYLE_SMALLTILE", "smalltile"}, {VIPS_DEMAND_STYLE_FATSTRIP, "VIPS_DEMAND_STYLE_FATSTRIP", "fatstrip"}, {VIPS_DEMAND_STYLE_THINSTRIP, "VIPS_DEMAND_STYLE_THINSTRIP", "thinstrip"}, {VIPS_DEMAND_STYLE_ANY, "VIPS_DEMAND_STYLE_ANY", "any"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsDemandStyle", values ); } return( etype ); } GType vips_image_type_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_IMAGE_ERROR, "VIPS_IMAGE_ERROR", "error"}, {VIPS_IMAGE_NONE, "VIPS_IMAGE_NONE", "none"}, {VIPS_IMAGE_SETBUF, "VIPS_IMAGE_SETBUF", "setbuf"}, {VIPS_IMAGE_SETBUF_FOREIGN, "VIPS_IMAGE_SETBUF_FOREIGN", "setbuf-foreign"}, {VIPS_IMAGE_OPENIN, "VIPS_IMAGE_OPENIN", "openin"}, {VIPS_IMAGE_MMAPIN, "VIPS_IMAGE_MMAPIN", "mmapin"}, {VIPS_IMAGE_MMAPINRW, "VIPS_IMAGE_MMAPINRW", "mmapinrw"}, {VIPS_IMAGE_OPENOUT, "VIPS_IMAGE_OPENOUT", "openout"}, {VIPS_IMAGE_PARTIAL, "VIPS_IMAGE_PARTIAL", "partial"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsImageType", values ); } return( etype ); } GType vips_interpretation_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_INTERPRETATION_ERROR, "VIPS_INTERPRETATION_ERROR", "error"}, {VIPS_INTERPRETATION_MULTIBAND, "VIPS_INTERPRETATION_MULTIBAND", "multiband"}, {VIPS_INTERPRETATION_B_W, "VIPS_INTERPRETATION_B_W", "b-w"}, {VIPS_INTERPRETATION_HISTOGRAM, "VIPS_INTERPRETATION_HISTOGRAM", "histogram"}, {VIPS_INTERPRETATION_XYZ, "VIPS_INTERPRETATION_XYZ", "xyz"}, {VIPS_INTERPRETATION_LAB, "VIPS_INTERPRETATION_LAB", "lab"}, {VIPS_INTERPRETATION_CMYK, "VIPS_INTERPRETATION_CMYK", "cmyk"}, {VIPS_INTERPRETATION_LABQ, "VIPS_INTERPRETATION_LABQ", "labq"}, {VIPS_INTERPRETATION_RGB, "VIPS_INTERPRETATION_RGB", "rgb"}, {VIPS_INTERPRETATION_CMC, "VIPS_INTERPRETATION_CMC", "cmc"}, {VIPS_INTERPRETATION_LCH, "VIPS_INTERPRETATION_LCH", "lch"}, {VIPS_INTERPRETATION_LABS, "VIPS_INTERPRETATION_LABS", "labs"}, {VIPS_INTERPRETATION_sRGB, "VIPS_INTERPRETATION_sRGB", "srgb"}, {VIPS_INTERPRETATION_YXY, "VIPS_INTERPRETATION_YXY", "yxy"}, {VIPS_INTERPRETATION_FOURIER, "VIPS_INTERPRETATION_FOURIER", "fourier"}, {VIPS_INTERPRETATION_RGB16, "VIPS_INTERPRETATION_RGB16", "rgb16"}, {VIPS_INTERPRETATION_GREY16, "VIPS_INTERPRETATION_GREY16", "grey16"}, {VIPS_INTERPRETATION_MATRIX, "VIPS_INTERPRETATION_MATRIX", "matrix"}, {VIPS_INTERPRETATION_scRGB, "VIPS_INTERPRETATION_scRGB", "scrgb"}, {VIPS_INTERPRETATION_HSV, "VIPS_INTERPRETATION_HSV", "hsv"}, {VIPS_INTERPRETATION_LAST, "VIPS_INTERPRETATION_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsInterpretation", values ); } return( etype ); } GType vips_band_format_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FORMAT_NOTSET, "VIPS_FORMAT_NOTSET", "notset"}, {VIPS_FORMAT_UCHAR, "VIPS_FORMAT_UCHAR", "uchar"}, {VIPS_FORMAT_CHAR, "VIPS_FORMAT_CHAR", "char"}, {VIPS_FORMAT_USHORT, "VIPS_FORMAT_USHORT", "ushort"}, {VIPS_FORMAT_SHORT, "VIPS_FORMAT_SHORT", "short"}, {VIPS_FORMAT_UINT, "VIPS_FORMAT_UINT", "uint"}, {VIPS_FORMAT_INT, "VIPS_FORMAT_INT", "int"}, {VIPS_FORMAT_FLOAT, "VIPS_FORMAT_FLOAT", "float"}, {VIPS_FORMAT_COMPLEX, "VIPS_FORMAT_COMPLEX", "complex"}, {VIPS_FORMAT_DOUBLE, "VIPS_FORMAT_DOUBLE", "double"}, {VIPS_FORMAT_DPCOMPLEX, "VIPS_FORMAT_DPCOMPLEX", "dpcomplex"}, {VIPS_FORMAT_LAST, "VIPS_FORMAT_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsBandFormat", values ); } return( etype ); } GType vips_coding_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_CODING_ERROR, "VIPS_CODING_ERROR", "error"}, {VIPS_CODING_NONE, "VIPS_CODING_NONE", "none"}, {VIPS_CODING_LABQ, "VIPS_CODING_LABQ", "labq"}, {VIPS_CODING_RAD, "VIPS_CODING_RAD", "rad"}, {VIPS_CODING_LAST, "VIPS_CODING_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsCoding", values ); } return( etype ); } GType vips_access_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_ACCESS_RANDOM, "VIPS_ACCESS_RANDOM", "random"}, {VIPS_ACCESS_SEQUENTIAL, "VIPS_ACCESS_SEQUENTIAL", "sequential"}, {VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, "VIPS_ACCESS_SEQUENTIAL_UNBUFFERED", "sequential-unbuffered"}, {VIPS_ACCESS_LAST, "VIPS_ACCESS_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsAccess", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/morphology.h" */ GType vips_operation_morphology_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_MORPHOLOGY_ERODE, "VIPS_OPERATION_MORPHOLOGY_ERODE", "erode"}, {VIPS_OPERATION_MORPHOLOGY_DILATE, "VIPS_OPERATION_MORPHOLOGY_DILATE", "dilate"}, {VIPS_OPERATION_MORPHOLOGY_LAST, "VIPS_OPERATION_MORPHOLOGY_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationMorphology", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/object.h" */ GType vips_argument_flags_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GFlagsValue values[] = { {VIPS_ARGUMENT_NONE, "VIPS_ARGUMENT_NONE", "none"}, {VIPS_ARGUMENT_REQUIRED, "VIPS_ARGUMENT_REQUIRED", "required"}, {VIPS_ARGUMENT_CONSTRUCT, "VIPS_ARGUMENT_CONSTRUCT", "construct"}, {VIPS_ARGUMENT_SET_ONCE, "VIPS_ARGUMENT_SET_ONCE", "set-once"}, {VIPS_ARGUMENT_SET_ALWAYS, "VIPS_ARGUMENT_SET_ALWAYS", "set-always"}, {VIPS_ARGUMENT_INPUT, "VIPS_ARGUMENT_INPUT", "input"}, {VIPS_ARGUMENT_OUTPUT, "VIPS_ARGUMENT_OUTPUT", "output"}, {VIPS_ARGUMENT_DEPRECATED, "VIPS_ARGUMENT_DEPRECATED", "deprecated"}, {VIPS_ARGUMENT_MODIFY, "VIPS_ARGUMENT_MODIFY", "modify"}, {0, NULL, NULL} }; etype = g_flags_register_static( "VipsArgumentFlags", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/operation.h" */ GType vips_operation_flags_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GFlagsValue values[] = { {VIPS_OPERATION_NONE, "VIPS_OPERATION_NONE", "none"}, {VIPS_OPERATION_SEQUENTIAL, "VIPS_OPERATION_SEQUENTIAL", "sequential"}, {VIPS_OPERATION_SEQUENTIAL_UNBUFFERED, "VIPS_OPERATION_SEQUENTIAL_UNBUFFERED", "sequential-unbuffered"}, {VIPS_OPERATION_NOCACHE, "VIPS_OPERATION_NOCACHE", "nocache"}, {VIPS_OPERATION_DEPRECATED, "VIPS_OPERATION_DEPRECATED", "deprecated"}, {0, NULL, NULL} }; etype = g_flags_register_static( "VipsOperationFlags", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/region.h" */ GType vips_region_shrink_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_REGION_SHRINK_MEAN, "VIPS_REGION_SHRINK_MEAN", "mean"}, {VIPS_REGION_SHRINK_MEDIAN, "VIPS_REGION_SHRINK_MEDIAN", "median"}, {VIPS_REGION_SHRINK_MODE, "VIPS_REGION_SHRINK_MODE", "mode"}, {VIPS_REGION_SHRINK_LAST, "VIPS_REGION_SHRINK_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsRegionShrink", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/resample.h" */ GType vips_kernel_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_KERNEL_NEAREST, "VIPS_KERNEL_NEAREST", "nearest"}, {VIPS_KERNEL_LINEAR, "VIPS_KERNEL_LINEAR", "linear"}, {VIPS_KERNEL_CUBIC, "VIPS_KERNEL_CUBIC", "cubic"}, {VIPS_KERNEL_MITCHELL, "VIPS_KERNEL_MITCHELL", "mitchell"}, {VIPS_KERNEL_LANCZOS2, "VIPS_KERNEL_LANCZOS2", "lanczos2"}, {VIPS_KERNEL_LANCZOS3, "VIPS_KERNEL_LANCZOS3", "lanczos3"}, {VIPS_KERNEL_LAST, "VIPS_KERNEL_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsKernel", values ); } return( etype ); } GType vips_size_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_SIZE_BOTH, "VIPS_SIZE_BOTH", "both"}, {VIPS_SIZE_UP, "VIPS_SIZE_UP", "up"}, {VIPS_SIZE_DOWN, "VIPS_SIZE_DOWN", "down"}, {VIPS_SIZE_FORCE, "VIPS_SIZE_FORCE", "force"}, {VIPS_SIZE_LAST, "VIPS_SIZE_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsSize", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/util.h" */ GType vips_token_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_TOKEN_LEFT, "VIPS_TOKEN_LEFT", "left"}, {VIPS_TOKEN_RIGHT, "VIPS_TOKEN_RIGHT", "right"}, {VIPS_TOKEN_STRING, "VIPS_TOKEN_STRING", "string"}, {VIPS_TOKEN_EQUALS, "VIPS_TOKEN_EQUALS", "equals"}, {VIPS_TOKEN_COMMA, "VIPS_TOKEN_COMMA", "comma"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsToken", values ); } return( etype ); } /* Generated data ends here */ libvips-8.9.1/libvips/iofuncs/error.c000066400000000000000000000720531361153320700176240ustar00rootroot00000000000000/* error.c --- error message handling * * Copyright: N. Dessipris * Written on: 18/03/1991 * Updated on: 9/7/92 KM * 20/12/2003 JC * - i18n added, domain now separate arg * 14/2/07 * - lock around error buffer changes * 20/2/08 * - lock around warnings and diagnostics too, why not * 2/10/09 * - error_exit() moved here * - gtkdoc comments * 24/6/10 * - fmt to error_exit() may be NULL * 12/9/19 [dineshkannaa] * - add vips_error_buffer_copy() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #ifdef OS_WIN32 #include #include #endif /*OS_WIN32*/ /** * SECTION: error * @short_description: error messages and error handling * @stability: Stable * @include: vips/vips.h * * VIPS maintains an error buffer (a log of localised text messages), * a set of functions * for adding messages, and a way to access and clear the buffer. * * The error buffer is global, that is, it is shared between all threads. You * can add to the buffer from any thread (there is a lock to prevent * corruption), but it's sensible to only read and clear the buffer from the * main thread of execution. * * The general principle is: if you detect an error, log a message for the * user. If a function you call detects an error, just propogate it and don't * add another message. * * |[ * IMAGE *im; * * if( !(im = vips_image_new_from_file( filename, NULL )) ) * // vips_image_new_from_file() will set a message, we don't need to * return( -1 ); * * if( vips_image_get_width( im ) < 100 ) { * // we have detected an error, we must set a message * vips_error( "myprogram", "%s", _( "width too small" ) ); * return( -1 ); * } * ]| * * The domain argument most of these functions take is not localised and is * supposed to indicate the component which failed. * * libvips uses g_warning() and g_info() to send warning and information * messages to the user. You can use the usual glib mechanisms to display or * divert these messages. For example, info messages are hidden by default, but * you can see them with: * * |[ * $ G_MESSAGES_DEBUG=VIPS vipsthumbnail k2.jpg * VIPS-INFO: thumbnailing k2.jpg * VIPS-INFO: selected loader is VipsForeignLoadJpegFile * VIPS-INFO: input size is 1450 x 2048 * VIPS-INFO: loading jpeg with factor 8 pre-shrink * VIPS-INFO: converting to processing space srgb * VIPS-INFO: residual reducev by 0.5 * VIPS-INFO: 13 point mask * VIPS-INFO: using vector path * VIPS-INFO: residual reduceh by 0.5 * VIPS-INFO: 13 point mask * VIPS-INFO: thumbnailing k2.jpg as ./tn_k2.jpg * ]| * */ /* Make global array to keep the error message buffer. */ #define VIPS_MAX_ERROR (10240) static char vips_error_text[VIPS_MAX_ERROR] = ""; static VipsBuf vips_error_buf = VIPS_BUF_STATIC( vips_error_text ); static int vips_error_freeze_count = 0; /** * vips_error_freeze: * * Stop errors being logged. Use vips_error_thaw() to unfreeze. You can * nest freeze/thaw pairs. */ void vips_error_freeze( void ) { g_mutex_lock( vips__global_lock ); g_assert( vips_error_freeze_count >= 0 ); vips_error_freeze_count += 1; g_mutex_unlock( vips__global_lock ); } /** * vips_error_thaw: * * Reenable error logging. */ void vips_error_thaw( void ) { g_mutex_lock( vips__global_lock ); vips_error_freeze_count -= 1; g_assert( vips_error_freeze_count >= 0 ); g_mutex_unlock( vips__global_lock ); } /** * vips_error_buffer: * * Get a pointer to the start of the error buffer as a C string. * The string is owned by the error system and must not be freed. * * See also: vips_error_clear(). * * Returns: the error buffer as a C string which must not be freed */ const char * vips_error_buffer( void ) { const char *msg; g_mutex_lock( vips__global_lock ); msg = vips_buf_all( &vips_error_buf ); g_mutex_unlock( vips__global_lock ); return( msg ); } /** * vips_error_buffer_copy: * * Return a copy of the vips error buffer, and clear it. * * Returns: a copy of the libvips error buffer */ char * vips_error_buffer_copy( void ) { char *msg; g_mutex_lock( vips__global_lock ); msg = g_strdup( vips_buf_all( &vips_error_buf ) ); vips_error_clear(); g_mutex_unlock( vips__global_lock ); return( msg ); } /* Some systems do not have va_copy() ... this might work (it does on MSVC), * apparently. * * FIXME ... this should be in configure.in */ #ifndef va_copy #define va_copy(d,s) ((d) = (s)) #endif /** * vips_verror: * @domain: the source of the error * @fmt: printf()-style format string for the error * @ap: arguments to the format string * * Append a message to the error buffer. * * See also: vips_error(). */ void vips_verror( const char *domain, const char *fmt, va_list ap ) { #ifdef VIPS_DEBUG { char txt[256]; VipsBuf buf = VIPS_BUF_STATIC( txt ); va_list ap2; vips_buf_appendf( &buf, "%s: ", domain ); va_copy( ap2, ap ); vips_buf_vappendf( &buf, fmt, ap2 ); vips_buf_appends( &buf, "\n" ); VIPS_DEBUG_MSG( "vips_verror: %s", vips_buf_all( &buf ) ); } #endif /*VIPS_DEBUG*/ g_mutex_lock( vips__global_lock ); g_assert( vips_error_freeze_count >= 0 ); if( !vips_error_freeze_count ) { if( domain ) vips_buf_appendf( &vips_error_buf, "%s: ", domain ); vips_buf_vappendf( &vips_error_buf, fmt, ap ); vips_buf_appends( &vips_error_buf, "\n" ); } g_mutex_unlock( vips__global_lock ); if( vips__fatal ) vips_error_exit( "vips__fatal" ); } /** * vips_error: * @domain: the source of the error * @fmt: printf()-style format string for the error * @...: arguments to the format string * * Format the string in the style of printf() and append to the error buffer. * * See also: vips_error_system(), vips_verror(). */ void vips_error( const char *domain, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); vips_verror( domain, fmt, ap ); va_end( ap ); } /** * vips_verror_system: * @err: the system error code * @domain: the source of the error * @fmt: printf()-style format string for the error * @ap: arguments to the format string * * Format the string in the style of printf() and append to the error buffer. * Then create and append a localised message based on the system error code, * usually the value of errno. * * See also: vips_error_system(). */ void vips_verror_system( int err, const char *domain, const char *fmt, va_list ap ) { vips_verror( domain, fmt, ap ); #ifdef OS_WIN32 { char *buf; if( FormatMessageA( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), (LPSTR) &buf, 0, NULL ) ) { vips_error( _( "windows error" ), "%s", buf ); LocalFree( buf ); } } #else /*OS_WIN32*/ { char *buf; buf = g_locale_to_utf8( strerror( err ), -1, NULL, NULL, NULL ); vips_error( _( "unix error" ), "%s", buf ); g_free( buf ); } #endif /*OS_WIN32*/ } /** * vips_error_system: * @err: the system error code * @domain: the source of the error * @fmt: printf()-style format string for the error * @...: arguments to the format string * * Format the string in the style of printf() and append to the error buffer. * Then create and append a localised message based on the system error code, * usually the value of errno. * * See also: vips_verror_system(). */ void vips_error_system( int err, const char *domain, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); vips_verror_system( err, domain, fmt, ap ); va_end( ap ); } /** * vips_error_g: * @error: (out): glib error pointer * * This function sets the glib error pointer from the vips error buffer and * clears it. It's handy for returning errors to glib functions from vips. * * See vips_g_error() for the inverse operation. * * See also: g_set_error(), vips_g_error(). */ void vips_error_g( GError **error ) { static GQuark vips_domain = 0; if( !vips_domain ) vips_domain = g_quark_from_string( "libvips" ); /* glib does not expect a trailing '\n' and vips always has one. */ g_mutex_lock( vips__global_lock ); vips_buf_removec( &vips_error_buf, '\n' ); g_mutex_unlock( vips__global_lock ); g_set_error( error, vips_domain, -1, "%s", vips_error_buffer() ); vips_error_clear(); } /** * vips_g_error: * @error: glib error pointer * * This function adds the %GError to the vips error buffer and clears it. It's * the opposite of vips_error_g(). * * See also: vips_error_g(). */ void vips_g_error( GError **error ) { if( error && *error ) { vips_error( "glib", "%s\n", (*error)->message ); g_error_free( *error ); *error = NULL; } } /** * vips_error_clear: * * Clear and reset the error buffer. This is typically called after presenting * an error to the user. * * See also: vips_error_buffer(). */ void vips_error_clear( void ) { g_mutex_lock( vips__global_lock ); vips_buf_rewind( &vips_error_buf ); g_mutex_unlock( vips__global_lock ); } /** * vips_error_exit: * @fmt: printf()-style format string for the message * @...: arguments to the format string * * Sends a formatted error message to stderr, then sends the contents of the * error buffer, if any, then shuts down vips and terminates the program with * an error code. * * @fmt may be %NULL, in which case only the error buffer is printed before * exiting. * * See also: vips_error(). */ void vips_error_exit( const char *fmt, ... ) { if( fmt ) { va_list ap; fprintf( stderr, "%s: ", g_get_prgname() ); va_start( ap, fmt ); (void) vfprintf( stderr, fmt, ap ); va_end( ap ); fprintf( stderr, "\n" ); } fprintf( stderr, "%s", vips_error_buffer() ); vips_shutdown(); if( vips__fatal ) abort(); else exit( 1 ); } /** * vips_check_uncoded: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is not coded. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_uncoded( const char *domain, VipsImage *im ) { if( im->Coding != VIPS_CODING_NONE ) { vips_error( domain, "%s", _( "image must be uncoded" ) ); return( -1 ); } return( 0 ); } /** * vips_check_coding_noneorlabq: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is uncoded or LABQ coded. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_coding_noneorlabq( const char *domain, VipsImage *im ) { /* These all have codings that extract/ifthenelse/etc can ignore. */ if( im->Coding != VIPS_CODING_NONE && im->Coding != VIPS_CODING_LABQ ) { vips_error( domain, "%s", _( "image coding must be 'none' or 'labq'" ) ); return( -1 ); } return( 0 ); } /** * vips_check_coding_known: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is uncoded, LABQ coded or RAD coded. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_coding_known( const char *domain, VipsImage *im ) { /* These all have codings that extract/ifthenelse/etc can ignore. */ if( im->Coding != VIPS_CODING_NONE && im->Coding != VIPS_CODING_LABQ && im->Coding != VIPS_CODING_RAD ) { vips_error( domain, "%s", _( "unknown image coding" ) ); return( -1 ); } return( 0 ); } /** * vips_check_coding: * @domain: the originating domain for the error message * @im: image to check * @coding: required coding * * Check that the image has the required @coding. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_coding( const char *domain, VipsImage *im, VipsCoding coding ) { if( im->Coding != coding ) { vips_error( domain, _( "coding '%s' only" ), vips_enum_nick( VIPS_TYPE_CODING, coding ) ); return( -1 ); } return( 0 ); } /** * vips_check_mono: * @domain: the originating domain for the error message * @im: image to check * * Check that the image has exactly one band. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_mono( const char *domain, VipsImage *im ) { if( im->Bands != 1 ) { vips_error( domain, "%s", _( "image must one band" ) ); return( -1 ); } return( 0 ); } /** * vips_check_bands: * @domain: the originating domain for the error message * @im: image to check * @bands: must have this many bands * * Check that the image has @bands bands. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_bands( const char *domain, VipsImage *im, int bands ) { if( im->Bands != bands ) { vips_error( domain, _( "image must have %d bands" ), bands ); return( -1 ); } return( 0 ); } /** * vips_check_bands_1or3: * @domain: the originating domain for the error message * @im: image to check * * Check that the image has either one or three bands. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_bands_1or3( const char *domain, VipsImage *im ) { if( im->Bands != 1 && im->Bands != 3 ) { vips_error( domain, "%s", _( "image must have one or three bands" ) ); return( -1 ); } return( 0 ); } /** * vips_check_bands_atleast: * @domain: the originating domain for the error message * @im: image to check * @bands: at least this many bands * * Check that the image has at least @bands bands. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_bands_atleast( const char *domain, VipsImage *im, int bands ) { if( im->Bands < bands ) { vips_error( domain, _( "image must have at least %d bands" ), bands ); return( -1 ); } return( 0 ); } /** * vips_check_bands_1orn: * @domain: the originating domain for the error message * @im1: first image to check * @im2: second image to check * * Check that the images have the same number of bands, or that one of the * images has just 1 band. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_bands_1orn( const char *domain, VipsImage *im1, VipsImage *im2 ) { if( im1->Bands != im2->Bands && (im1->Bands != 1 && im2->Bands != 1) ) { vips_error( domain, "%s", _( "images must have the same number of bands, " "or one must be single-band" ) ); return( -1 ); } return( 0 ); } /** * vips_check_bands_1orn_unary: * @domain: the originating domain for the error message * @im: image to check * @n: number of bands, or 1 * * Check that an image has 1 or @n bands. Handy for unary operations, cf. * vips_check_bands_1orn(). * If not, set an error message * and return non-zero. * * See also: vips_check_bands_1orn(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_bands_1orn_unary( const char *domain, VipsImage *im, int n ) { if( im->Bands != 1 && im->Bands != n ) { vips_error( domain, _( "image must have 1 or %d bands" ), n ); return( -1 ); } return( 0 ); } /** * vips_check_noncomplex: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is not complex. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_noncomplex( const char *domain, VipsImage *im ) { if( vips_band_format_iscomplex( im->BandFmt ) ) { vips_error( domain, "%s", _( "image must be non-complex" ) ); return( -1 ); } return( 0 ); } /** * vips_check_complex: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is complex. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_complex( const char *domain, VipsImage *im ) { if( !vips_band_format_iscomplex( im->BandFmt ) ) { vips_error( domain, "%s", _( "image must be complex" ) ); return( -1 ); } return( 0 ); } /** * vips_check_twocomponents: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is has two "components", ie. is a one-band complex or * a two-band non-complex. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_twocomponents( const char *domain, VipsImage *im ) { if( !vips_band_format_iscomplex( im->BandFmt ) && im->Bands != 2 ) { vips_error( domain, "%s", _( "image must be two-band or complex" ) ); return( -1 ); } return( 0 ); } /** * vips_check_format: * @domain: the originating domain for the error message * @im: image to check * @fmt: format to test for * * Check that the image has the specified format. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_format( const char *domain, VipsImage *im, VipsBandFormat fmt ) { if( im->BandFmt != fmt ) { vips_error( domain, _( "image must be %s" ), vips_enum_string( VIPS_TYPE_BAND_FORMAT, fmt ) ); return( -1 ); } return( 0 ); } /** * vips_check_int: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is in one of the integer formats. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_int( const char *domain, VipsImage *im ) { if( !vips_band_format_isint( im->BandFmt ) ) { vips_error( domain, "%s", _( "image must be integer" ) ); return( -1 ); } return( 0 ); } /** * vips_check_uint: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is in one of the unsigned integer formats. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_uint( const char *domain, VipsImage *im ) { if( !vips_band_format_isuint( im->BandFmt ) ) { vips_error( domain, "%s", _( "image must be unsigned integer" ) ); return( -1 ); } return( 0 ); } /** * vips_check_8or16: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is 8 or 16-bit integer, signed or unsigned. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_8or16( const char *domain, VipsImage *im ) { if( im->BandFmt != VIPS_FORMAT_UCHAR && im->BandFmt != VIPS_FORMAT_USHORT && im->BandFmt != VIPS_FORMAT_CHAR && im->BandFmt != VIPS_FORMAT_SHORT ) { vips_error( domain, "%s", _( "image must be 8- or 16-bit integer, " "signed or unsigned" ) ); return( -1 ); } return( 0 ); } /** * vips_check_u8or16: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is 8 or 16-bit unsigned integer. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_u8or16( const char *domain, VipsImage *im ) { if( im->BandFmt != VIPS_FORMAT_UCHAR && im->BandFmt != VIPS_FORMAT_USHORT ) { vips_error( domain, "%s", _( "image must be 8- or 16-bit unsigned integer" ) ); return( -1 ); } return( 0 ); } /** * vips_check_u8or16orf: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is 8 or 16-bit unsigned integer, or float. * Otherwise set an error message and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_u8or16orf( const char *domain, VipsImage *im ) { if( im->BandFmt != VIPS_FORMAT_UCHAR && im->BandFmt != VIPS_FORMAT_USHORT && im->BandFmt != VIPS_FORMAT_FLOAT ) { vips_error( domain, "%s", _( "image must be 8- or 16-bit unsigned integer, " "or float" ) ); return( -1 ); } return( 0 ); } /** * vips_check_uintorf: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is unsigned int or float. * Otherwise set an error message and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_uintorf( const char *domain, VipsImage *im ) { if( im->BandFmt != VIPS_FORMAT_UCHAR && im->BandFmt != VIPS_FORMAT_USHORT && im->BandFmt != VIPS_FORMAT_UINT && im->BandFmt != VIPS_FORMAT_FLOAT ) { vips_error( domain, "%s", _( "image must be unsigned int or float" ) ); return( -1 ); } return( 0 ); } /** * vips_check_size_same: * @domain: the originating domain for the error message * @im1: first image to check * @im2: second image to check * * Check that the images have the same size. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_size_same( const char *domain, VipsImage *im1, VipsImage *im2 ) { if( im1->Xsize != im2->Xsize || im1->Ysize != im2->Ysize ) { vips_error( domain, "%s", _( "images must match in size" ) ); return( -1 ); } return( 0 ); } /** * vips_check_oddsquare: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is square and that the sides are odd. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_oddsquare( const char *domain, VipsImage *im ) { if( im->Xsize != im->Ysize || im->Xsize % 2 == 0 ) { vips_error( domain, "%s", _( "images must be odd and square" ) ); return( -1 ); } return( 0 ); } /** * vips_check_bands_same: * @domain: the originating domain for the error message * @im1: first image to check * @im2: second image to check * * Check that the images have the same number of bands. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_bands_same( const char *domain, VipsImage *im1, VipsImage *im2 ) { if( im1->Bands != im2->Bands ) { vips_error( domain, "%s", _( "images must have the same number of bands" ) ); return( -1 ); } return( 0 ); } /** * vips_check_bandno: * @domain: the originating domain for the error message * @im: image to check * @bandno: band number * * @bandno should be a valid band number (ie. 0 to im->Bands - 1), or can be * -1, meaning all bands. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_bandno( const char *domain, VipsImage *im, int bandno ) { if( bandno < -1 || bandno > im->Bands - 1 ) { vips_error( domain, "bandno must be -1, or less than %d", im->Bands ); return( -1 ); } return( 0 ); } /** * vips_check_format_same: * @domain: the originating domain for the error message * @im1: first image to check * @im2: second image to check * * Check that the images have the same format. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_format_same( const char *domain, VipsImage *im1, VipsImage *im2 ) { if( im1->BandFmt != im2->BandFmt ) { vips_error( domain, "%s", _( "images must have the same band format" ) ); return( -1 ); } return( 0 ); } /** * vips_check_coding_same: * @domain: the originating domain for the error message * @im1: first image to check * @im2: second image to check * * Check that the images have the same coding. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_coding_same( const char *domain, VipsImage *im1, VipsImage *im2 ) { if( im1->Coding != im2->Coding ) { vips_error( domain, "%s", _( "images must have the same coding" ) ); return( -1 ); } return( 0 ); } /** * vips_check_vector_length: * @domain: the originating domain for the error message * @n: number of elements in vector * @len: number of elements vector should have * * Check that @n == @len. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_vector_length( const char *domain, int n, int len ) { if( n != len ) { vips_error( domain, _( "vector must have %d elements" ), len ); return( -1 ); } return( 0 ); } /** * vips_check_vector: * @domain: the originating domain for the error message * @n: number of elements in vector * @im: image to check against * * Operations with a vector constant need a 1-element vector, or a vector with * the same number of elements as there are bands in the image. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_vector( const char *domain, int n, VipsImage *im ) { if( n != 1 && im->Bands != 1 && n != im->Bands ) { vips_error( domain, _( "vector must have 1 or %d elements" ), im->Bands ); return( -1 ); } return( 0 ); } /** * vips_check_hist: * @domain: the originating domain for the error message * @im: image to check * * Histogram images must have width or height 1, and must not have more than * 65536 elements. Return 0 if the image will pass as a histogram, or -1 and * set an error message otherwise. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_hist( const char *domain, VipsImage *im ) { if( im->Xsize != 1 && im->Ysize != 1 ) { vips_error( domain, "%s", _( "histograms must have width or height 1" ) ); return( -1 ); } if( VIPS_IMAGE_N_PELS( im ) > 65536 ) { vips_error( domain, "%s", _( "histograms must have not have more than " "65536 elements" ) ); return( -1 ); } return( 0 ); } /** * vips_check_matrix: * @domain: the originating domain for the error message * @im: image to check * @out: (out): put image as in-memory doubles here * * Matrix images must have width and height less than 100000 and have 1 band. * * Return 0 if the image will pass as a matrix, or -1 and set an error * message otherwise. * * @out is set to be @im cast to double and stored in memory. Use * VIPS_MATRIX() to address values in @out. * * You must unref @out when you are done with it. * * See also: VIPS_MATRIX(), vips_object_local() * * Returns: 0 if OK, -1 otherwise. */ int vips_check_matrix( const char *domain, VipsImage *im, VipsImage **out ) { VipsImage *t; *out = NULL; if( im->Xsize > 100000 || im->Ysize > 100000 ) { vips_error( domain, "%s", _( "matrix image too large" ) ); return( -1 ); } if( im->Bands != 1 ) { vips_error( domain, "%s", _( "matrix image must have one band" ) ); return( -1 ); } if( vips_cast( im, &t, VIPS_FORMAT_DOUBLE, NULL ) ) return( -1 ); if( !(*out = vips_image_copy_memory( t )) ) { VIPS_UNREF( t ); return( -1 ); } VIPS_UNREF( t ); return( 0 ); } /** * vips_check_separable: * @domain: the originating domain for the error message * @im: image to check * * Separable matrix images must have width or height 1. * Return 0 if the image will pass, or -1 and * set an error message otherwise. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_separable( const char *domain, VipsImage *im ) { if( im->Xsize != 1 && im->Ysize != 1 ) { vips_error( domain, "%s", _( "separable matrix images must have " "width or height 1" ) ); return( -1 ); } return( 0 ); } /** * vips_check_precision_intfloat: * @domain: the originating domain for the error message * @precision: precision to check * * Check that @prec image is either float or int. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_precision_intfloat( const char *domain, VipsPrecision precision ) { if( precision != VIPS_PRECISION_INTEGER && precision != VIPS_PRECISION_FLOAT ) { vips_error( domain, "%s", _( "precision must be int or float" ) ); return( -1 ); } return( 0 ); } libvips-8.9.1/libvips/iofuncs/gate.c000066400000000000000000000225361361153320700174140ustar00rootroot00000000000000/* gate.c --- thread profiling * * Written on: 18 nov 13 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Very verbose. #define VIPS_DEBUG_RED */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #define VIPS_GATE_SIZE (1000) /* A set of timing records. i is the index of the next slot we fill. */ typedef struct _VipsThreadGateBlock { struct _VipsThreadGateBlock *prev; gint64 time[VIPS_GATE_SIZE]; int i; } VipsThreadGateBlock; /* What we track for each gate-name. */ typedef struct _VipsThreadGate { const char *name; VipsThreadGateBlock *start; VipsThreadGateBlock *stop; } VipsThreadGate; /* One of these in per-thread private storage. */ typedef struct _VipsThreadProfile { /*< private >*/ const char *name; GThread *thread; GHashTable *gates; VipsThreadGate *memory; } VipsThreadProfile; gboolean vips__thread_profile = FALSE; static GPrivate *vips_thread_profile_key = NULL; static FILE *vips__thread_fp = NULL;; /** * vips_profile_set: * @profile: %TRUE to enable profile recording * * If set, vips will record profiling information, and dump it on program * exit. These profiles can be analysed with the `vipsprofile` program. */ void vips_profile_set( gboolean profile ) { vips__thread_profile = profile; } static void vips_thread_gate_block_save( VipsThreadGateBlock *block, FILE *fp ) { int i; for( i = block->i - 1; i >= 0; i-- ) fprintf( fp, "%" G_GINT64_FORMAT " ", block->time[i] ); fprintf( fp, "\n" ); if( block->prev ) vips_thread_gate_block_save( block->prev, fp ); } static void vips_thread_profile_save_gate( VipsThreadGate *gate, FILE *fp ) { if( gate->start->i || gate->start->prev ) { fprintf( fp, "gate: %s\n", gate->name ); fprintf( fp, "start:\n" ); vips_thread_gate_block_save( gate->start, fp ); fprintf( fp, "stop:\n" ); vips_thread_gate_block_save( gate->stop, fp ); } } static void vips_thread_profile_save_cb( gpointer key, gpointer value, gpointer data ) { VipsThreadGate *gate = (VipsThreadGate *) value; FILE *fp = (FILE *) data; vips_thread_profile_save_gate( gate, fp ); } static void vips_thread_profile_save( VipsThreadProfile *profile ) { g_mutex_lock( vips__global_lock ); VIPS_DEBUG_MSG( "vips_thread_profile_save: %s\n", profile->name ); if( !vips__thread_fp ) { vips__thread_fp = vips__file_open_write( "vips-profile.txt", TRUE ); if( !vips__thread_fp ) { g_mutex_unlock( vips__global_lock ); g_warning( "unable to create profile log" ); return; } printf( "recording profile in vips-profile.txt\n" ); } fprintf( vips__thread_fp, "thread: %s (%p)\n", profile->name, profile ); g_hash_table_foreach( profile->gates, vips_thread_profile_save_cb, vips__thread_fp ); vips_thread_profile_save_gate( profile->memory, vips__thread_fp ); g_mutex_unlock( vips__global_lock ); } static void vips_thread_gate_block_free( VipsThreadGateBlock *block ) { VIPS_FREEF( vips_thread_gate_block_free, block->prev ); VIPS_FREE( block ); } static void vips_thread_gate_free( VipsThreadGate *gate ) { VIPS_FREEF( vips_thread_gate_block_free, gate->start ); VIPS_FREEF( vips_thread_gate_block_free, gate->stop ); VIPS_FREE( gate ); } static void vips_thread_profile_free( VipsThreadProfile *profile ) { VIPS_DEBUG_MSG( "vips_thread_profile_free: %s\n", profile->name ); VIPS_FREEF( g_hash_table_destroy, profile->gates ); VIPS_FREEF( vips_thread_gate_free, profile->memory ); VIPS_FREE( profile ); } void vips__thread_profile_stop( void ) { if( vips__thread_profile ) VIPS_FREEF( fclose, vips__thread_fp ); } static void vips__thread_profile_init_cb( VipsThreadProfile *profile ) { /* We only come here if vips_thread_shutdown() was not called for this * thread. Do our best to clean up. * * GPrivate has stopped working, be careful not to touch that. * * Don't try to save: we must free all mem before saving and we * probably haven't done that because vips_thread_shutdown() has not * been called. */ if( vips__thread_profile ) g_warning( "discarding unsaved state for thread %p --- " "call vips_thread_shutdown() for this thread", profile->thread ); vips_thread_profile_free( profile ); } static void vips__thread_profile_init( void ) { #ifdef HAVE_PRIVATE_INIT static GPrivate private = G_PRIVATE_INIT( (GDestroyNotify) vips__thread_profile_init_cb ); vips_thread_profile_key = &private; #else if( !vips_thread_profile_key ) vips_thread_profile_key = g_private_new( (GDestroyNotify) vips__thread_profile_init_cb ); #endif } static VipsThreadGate * vips_thread_gate_new( const char *gate_name ) { VipsThreadGate *gate; gate = g_new( VipsThreadGate, 1 ); gate->name = gate_name; gate->start = g_new0( VipsThreadGateBlock, 1 ); gate->stop = g_new0( VipsThreadGateBlock, 1 ); return( gate ); } void vips__thread_profile_attach( const char *thread_name ) { static GOnce once = G_ONCE_INIT; VipsThreadProfile *profile; VIPS_ONCE( &once, (GThreadFunc) vips__thread_profile_init, NULL ); VIPS_DEBUG_MSG( "vips__thread_profile_attach: %s\n", thread_name ); g_assert( !g_private_get( vips_thread_profile_key ) ); profile = g_new( VipsThreadProfile, 1 ); profile->name = thread_name; profile->gates = g_hash_table_new_full( g_direct_hash, g_str_equal, NULL, (GDestroyNotify) vips_thread_gate_free ); profile->memory = vips_thread_gate_new( "memory" ); g_private_set( vips_thread_profile_key, profile ); } static VipsThreadProfile * vips_thread_profile_get( void ) { return( g_private_get( vips_thread_profile_key ) ); } /* This usually happens automatically when a thread shuts down, see * vips__thread_profile_init() where we set a GDestroyNotify, but will not * happen for the main thread. * * Shut down any stats on the main thread with this, see vips_shutdown() */ void vips__thread_profile_detach( void ) { VipsThreadProfile *profile; VIPS_DEBUG_MSG( "vips__thread_profile_detach:\n" ); if( (profile = vips_thread_profile_get()) ) { if( vips__thread_profile ) vips_thread_profile_save( profile ); vips_thread_profile_free( profile ); g_private_set( vips_thread_profile_key, NULL ); } } static void vips_thread_gate_block_add( VipsThreadGateBlock **block ) { VipsThreadGateBlock *new_block; new_block = g_new0( VipsThreadGateBlock, 1 ); new_block->prev = *block; *block = new_block; } static gint64 vips_get_time( void ) { #ifdef HAVE_MONOTONIC_TIME return( g_get_monotonic_time() ); #else GTimeVal time; g_get_current_time( &time ); return( (gint64) time.tv_usec ); #endif } void vips__thread_gate_start( const char *gate_name ) { VipsThreadProfile *profile; VIPS_DEBUG_MSG_RED( "vips__thread_gate_start: %s\n", gate_name ); if( (profile = vips_thread_profile_get()) ) { gint64 time = vips_get_time(); VipsThreadGate *gate; if( !(gate = g_hash_table_lookup( profile->gates, gate_name )) ) { gate = vips_thread_gate_new( gate_name ); g_hash_table_insert( profile->gates, (char *) gate_name, gate ); } if( gate->start->i >= VIPS_GATE_SIZE ) vips_thread_gate_block_add( &gate->start ); gate->start->time[gate->start->i++] = time; VIPS_DEBUG_MSG_RED( "\t %" G_GINT64_FORMAT "\n", time ); } } void vips__thread_gate_stop( const char *gate_name ) { VipsThreadProfile *profile; VIPS_DEBUG_MSG_RED( "vips__thread_gate_stop: %s\n", gate_name ); if( (profile = vips_thread_profile_get()) ) { gint64 time = vips_get_time(); VipsThreadGate *gate; if( !(gate = g_hash_table_lookup( profile->gates, gate_name )) ) { gate = vips_thread_gate_new( gate_name ); g_hash_table_insert( profile->gates, (char *) gate_name, gate ); } if( gate->stop->i >= VIPS_GATE_SIZE ) vips_thread_gate_block_add( &gate->stop ); gate->stop->time[gate->stop->i++] = time; VIPS_DEBUG_MSG_RED( "\t %" G_GINT64_FORMAT "\n", time ); } } /* Record a malloc() or free(). Use -ve numbers for free. */ void vips__thread_malloc_free( gint64 size ) { VipsThreadProfile *profile; VIPS_DEBUG_MSG_RED( "vips__thread_malloc_free: %zd\n", size ); #ifdef VIPS_DEBUG if( !(profile = vips_thread_profile_get()) ) printf( "argh no block to record free() in!\n" ); #endif /*VIPS_DEBUG*/ if( (profile = vips_thread_profile_get()) ) { gint64 time = vips_get_time(); VipsThreadGate *gate = profile->memory; if( gate->start->i >= VIPS_GATE_SIZE ) { vips_thread_gate_block_add( &gate->start ); vips_thread_gate_block_add( &gate->stop ); } gate->start->time[gate->start->i++] = time; gate->stop->time[gate->stop->i++] = size; } } libvips-8.9.1/libvips/iofuncs/generate.c000066400000000000000000000460321361153320700202630ustar00rootroot00000000000000/* Manage pipelines of partial images. * * J.Cupitt, 17/4/93. * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 6/7/93 JC * - im_setupout() conventions clarified - see autorewind in * im_iocheck(). * 20/7/93 JC * - eval callbacks added * 7/9/93 JC * - demand hint mechanism added * 25/10/93 * - asynchronous output mechanisms removed, as no observable speed-up * 9/5/94 * - new thread stuff added, with a define to turn it off * 15/8/94 * - start & stop functions can now be NULL for no-op * 7/10/94 JC * - evalend callback system added * 23/12/94 JC * - IM_ARRAY uses added * 22/2/95 JC * - im_fill_copy() added * - im_region_region() uses modified * 24/4/95 JC & KM * - im_fill_lines() bug removed * 30/8/96 JC * - revised and simplified ... some code shared with im_iterate() * - new im_generate_region() added * 2/3/98 JC * - IM_ANY added * 20/7/99 JC * - tile geometry made into ints for easy tuning * 30/7/99 RP JC * - threads reorganised for POSIX * 29/9/99 JC * - threadgroup stuff added * 15/4/04 * - better how-many-pixels-calculated * 27/11/06 * - merge background write stuff * 7/11/07 * - new start/end eval callbacks * 7/10/09 * - gtkdoc comments * 16/4/10 * - remove threadgroup stuff * 24/3/11 * - move demand_hint stuff in here * - move to vips_ namespace * 7/7/12 * - lock around link make/break so we can process an image from many * threads */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #ifdef HAVE_IO_H #include #endif /*HAVE_IO_H*/ #include #include #include #include /** * SECTION: generate * @short_description: calculate pixels and pixel buffers * @stability: Stable * @see_also: VipsImage, * VipsRegion * @include: vips/vips.h * * These functions let you attach generate functions to images * and ask for regions of images to be calculated. */ /* Max number of images we can handle. */ #define MAX_IMAGES (1000) /* Make an upstream/downstream link. upstream is one of downstream's inputs. */ static void vips__link_make( VipsImage *image_up, VipsImage *image_down ) { g_assert( image_up ); g_assert( image_down ); image_up->downstream = g_slist_prepend( image_up->downstream, image_down ); image_down->upstream = g_slist_prepend( image_down->upstream, image_up ); /* Propogate the progress indicator. */ if( image_up->progress_signal && !image_down->progress_signal ) image_down->progress_signal = image_up->progress_signal; } static void * vips__link_break( VipsImage *image_up, VipsImage *image_down ) { g_assert( image_up ); g_assert( image_down ); g_assert( g_slist_find( image_up->downstream, image_down ) ); g_assert( g_slist_find( image_down->upstream, image_up ) ); image_up->downstream = g_slist_remove( image_up->downstream, image_down ); image_down->upstream = g_slist_remove( image_down->upstream, image_up ); /* Unlink the progress chain. */ if( image_down->progress_signal && image_down->progress_signal == image_up->progress_signal ) image_down->progress_signal = NULL; return( NULL ); } static void * vips__link_break_rev( VipsImage *image_down, VipsImage *image_up ) { return( vips__link_break( image_up, image_down ) ); } /* A VipsImage is going ... break all links. */ void vips__link_break_all( VipsImage *image ) { g_mutex_lock( vips__global_lock ); vips_slist_map2( image->upstream, (VipsSListMap2Fn) vips__link_break, image, NULL ); vips_slist_map2( image->downstream, (VipsSListMap2Fn) vips__link_break_rev, image, NULL ); g_assert( !image->upstream ); g_assert( !image->downstream ); g_mutex_unlock( vips__global_lock ); } typedef struct _LinkMap { gboolean upstream; int serial; VipsSListMap2Fn fn; void *a; void *b; } LinkMap; static void * vips__link_mapp( VipsImage *image, LinkMap *map ) { void *res; /* Loop? */ if( image->serial == map->serial ) return( NULL ); image->serial = map->serial; if( (res = map->fn( image, map->a, map->b )) ) return( res ); return( vips_slist_map2( map->upstream ? image->upstream : image->downstream, (VipsSListMap2Fn) vips__link_mapp, map, NULL ) ); } static void * vips__link_map_cb( VipsImage *image, GSList **images ) { *images = g_slist_prepend( *images, image ); return( NULL ); } /* Apply a function to an image and all upstream or downstream images, * direct and indirect. */ void * vips__link_map( VipsImage *image, gboolean upstream, VipsSListMap2Fn fn, void *a, void *b ) { static int serial = 0; LinkMap map; GSList *images; GSList *p; void *result; images = NULL; /* The function might do anything, including removing images * or invalidating other images, so we can't trigger them from within * the image loop. Instead we collect a list of images, ref them, * run the functions, and unref. */ map.upstream = upstream; map.fn = (VipsSListMap2Fn) vips__link_map_cb; map.a = (void *) &images; map.b = NULL; /* We will be walking the tree of images and updating the ->serial * member. There will be intense confusion if two threads try to do * this at the same time. */ g_mutex_lock( vips__global_lock ); serial += 1; map.serial = serial; vips__link_mapp( image, &map ); for( p = images; p; p = p->next ) g_object_ref( p->data ); g_mutex_unlock( vips__global_lock ); result = vips_slist_map2( images, fn, a, b ); for( p = images; p; p = p->next ) g_object_unref( p->data ); g_slist_free( images ); return( result ); } /* We have to have this as a separate entry point so we can support the old * vips7 API. */ void vips__demand_hint_array( VipsImage *image, VipsDemandStyle hint, VipsImage **in ) { int i, len, nany; VipsDemandStyle set_hint; /* How many input images are there? And how many are ANY? */ for( i = 0, len = 0, nany = 0; in[i]; i++, len++ ) if( in[i]->dhint == VIPS_DEMAND_STYLE_ANY ) nany++; set_hint = hint; if( len == 0 ) /* No input images? Just set the requested hint. We don't * force ANY, since the operation might be something like * tiled read of an EXR image, where we certainly don't want * ANY. */ ; else if( nany == len ) /* Special case: if all the inputs are ANY, then output can * be ANY regardless of what this function wants. */ set_hint = VIPS_DEMAND_STYLE_ANY; else /* Find the most restrictive of all the hints available to us. */ for( i = 0; i < len; i++ ) set_hint = (VipsDemandStyle) VIPS_MIN( (int) set_hint, (int) in[i]->dhint ); image->dhint = set_hint; #ifdef DEBUG printf( "vips_image_pipeline_array: set dhint for \"%s\" to %s\n", image->filename, vips_enum_nick( VIPS_TYPE_DEMAND_STYLE, image->dhint ) ); printf( "\toperation requested %s\n", vips_enum_nick( VIPS_TYPE_DEMAND_STYLE, hint ) ); printf( "\tinputs were:\n" ); printf( "\t" ); for( i = 0; in[i]; i++ ) printf( "%s ", vips_enum_nick( VIPS_TYPE_DEMAND_STYLE, in[i]->dhint ) ); printf( "\n" ); #endif /*DEBUG*/ /* im depends on all these ims. */ g_mutex_lock( vips__global_lock ); for( i = 0; i < len; i++ ) vips__link_make( in[i], image ); g_mutex_unlock( vips__global_lock ); /* Set a flag on the image to say we remembered to call this thing. * vips_image_generate() and friends check this. */ image->hint_set = TRUE; } /** * vips_image_pipeline_array: * @image: (out): output image * @hint: demand hint for @image * @in: (array zero-terminated=1): %NULL-terminated array of input images * * Add an image to a pipeline. @image depends on all of the images in @in, * @image prefers to supply pixels according to @hint. * * Operations can set demand hints, that is, hints to the VIPS IO system about * the type of region geometry they work best with. For example, * operations which transform coordinates will usually work best with * %VIPS_DEMAND_STYLE_SMALLTILE, operations which work on local windows of * pixels will like %VIPS_DEMAND_STYLE_FATSTRIP. * * Header fields in @image are set from the fields in @in, with lower-numbered * images in @in taking priority. * For example, if @in[0] and @in[1] both have an item * called "icc-profile", it's the profile attached to @in[0] that will end up * on @image. * Image history is completely copied from all @in. @image will have the history * of all the input images. * The array of input images can be empty, meaning @image is at the start of a * pipeline. * * VIPS uses the list of input images to build the tree of operations it needs * for the cache invalidation system. * * See also: vips_image_pipelinev(), vips_image_generate(). * * Returns: 0 on success, -1 on error. */ int vips_image_pipeline_array( VipsImage *image, VipsDemandStyle hint, VipsImage **in ) { /* This function can be called more than once per output image. For * example, jpeg header load will call this once on ->out to set the * default hint, then later call it again to connect the output image * up to the real image. * * It's only ever called first time with in[0] == NULL and second time * with a real value for @in. */ vips__demand_hint_array( image, hint, in ); if( in[0] && vips__image_copy_fields_array( image, in ) ) return( -1 ); if( vips__reorder_set_input( image, in ) ) return( -1 ); return( 0 ); } /** * vips_image_pipelinev: * @image: output image of pipeline * @hint: hint for this image * @...: %NULL-terminated list of input images * * Build an array and call vips_image_pipeline_array(). * * See also: vips_image_generate(). */ int vips_image_pipelinev( VipsImage *image, VipsDemandStyle hint, ... ) { va_list ap; int i; VipsImage *ar[MAX_IMAGES]; va_start( ap, hint ); for( i = 0; i < MAX_IMAGES && (ar[i] = va_arg( ap, VipsImage * )); i++ ) ; va_end( ap ); if( i == MAX_IMAGES ) { g_warning( "%s", _( "too many images" ) ); /* Make sure we have a sentinel there. */ ar[i - 1] = NULL; } return( vips_image_pipeline_array( image, hint, ar ) ); } /** * vips_start_one: * @out: image to generate * @a: user data * @b: user data * * Start function for one image in. Input image is @a. * * See also: vips_image_generate(). */ void * vips_start_one( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; return( vips_region_new( in ) ); } /** * vips_stop_one: * @seq: sequence value * @a: user data * @b: user data * * Stop function for one image in. Input image is @a. * * See also: vips_image_generate(). */ int vips_stop_one( void *seq, void *a, void *b ) { VipsRegion *reg = (VipsRegion *) seq; g_object_unref( reg ); return( 0 ); } /** * vips_stop_many: * @seq: sequence value * @a: user data * @b: user data * * Stop function for many images in. @a is a pointer to * a %NULL-terminated array of input images. * * See also: vips_image_generate(). */ int vips_stop_many( void *seq, void *a, void *b ) { VipsRegion **ar = (VipsRegion **) seq; if( ar ) { int i; for( i = 0; ar[i]; i++ ) g_object_unref( ar[i] ); vips_free( (char *) ar ); } return( 0 ); } /** * vips_start_many: * @out: image to generate * @a: user data * @b: user data * * Start function for many images in. @a is a pointer to * a %NULL-terminated array of input images. * * See also: vips_image_generate(), vips_allocate_input_array() */ void * vips_start_many( VipsImage *out, void *a, void *b ) { VipsImage **in = (VipsImage **) a; int i, n; VipsRegion **ar; /* How many images? */ for( n = 0; in[n]; n++ ) ; /* Alocate space for region array. */ if( !(ar = VIPS_ARRAY( NULL, n + 1, VipsRegion * )) ) return( NULL ); /* Create a set of regions. */ for( i = 0; i < n; i++ ) if( !(ar[i] = vips_region_new( in[i] )) ) { vips_stop_many( ar, NULL, NULL ); return( NULL ); } ar[n] = NULL; return( ar ); } /** * vips_allocate_input_array: * @out: free array when this image closes * @...: %NULL-terminated list of input images * * Convenience function --- make a %NULL-terminated array of input images. * Use with vips_start_many(). * * See also: vips_image_generate(), vips_start_many(). * * Returns: %NULL-terminated array of images. Do not free the result. */ VipsImage ** vips_allocate_input_array( VipsImage *out, ... ) { va_list ap; VipsImage **ar; int i, n; /* Count input images. */ va_start( ap, out ); for( n = 0; va_arg( ap, VipsImage * ); n++ ) ; va_end( ap ); /* Allocate array. */ if( !(ar = VIPS_ARRAY( out, n + 1, VipsImage * )) ) return( NULL ); /* Fill array. */ va_start( ap, out ); for( i = 0; i < n; i++ ) ar[i] = va_arg( ap, VipsImage * ); va_end( ap ); ar[n] = NULL; return( ar ); } /** * VipsStartFn: * @out: image being calculated * @a: user data * @b: user data * * Start a new processing sequence for this generate function. This allocates * per-thread state, such as an input region. * * See also: vips_start_one(), vips_start_many(). * * Returns: a new sequence value */ /** * VipsGenerateFn: * @out: #VipsRegion to fill * @seq: sequence value * @a: user data * @b: user data * @stop: set this to stop processing * * Fill @out->valid with pixels. @seq contains per-thread state, such as the * input regions. Set @stop to %TRUE to stop processing. * * See also: vips_image_generate(), vips_stop_many(). * * Returns: 0 on success, -1 on error. */ /** * VipsStopFn: * @seq: sequence value * @a: user data * @b: user data * * Stop a processing sequence. This frees * per-thread state, such as an input region. * * See also: vips_stop_one(), vips_stop_many(). * * Returns: 0 on success, -1 on error. */ /* A write function for VIPS images. Just write() the pixel data. */ static int write_vips( VipsRegion *region, VipsRect *area, void *a, void *b ) { size_t nwritten, count; void *buf; count = (size_t) region->bpl * area->height; buf = VIPS_REGION_ADDR( region, 0, area->top ); do { nwritten = write( region->im->fd, buf, count ); if( nwritten == (size_t) -1 ) return( errno ); buf = (void *) ((char *) buf + nwritten); count -= nwritten; } while( count > 0 ); return( 0 ); } /** * vips_image_generate: * @image: generate this image * @start_fn: start sequences with this function * @generate_fn: generate pixels with this function * @stop_fn: stop sequences with this function * @a: user data * @b: user data * * Generates an image. The action depends on the image type. * * For images created with vips_image_new(), vips_image_generate() just * attaches the start/generate/stop callbacks and returns. * * For images created with vips_image_new_memory(), memory is allocated for * the whole image and it is entirely generated using vips_sink_memory(). * * For images created with vips_image_new_temp_file() and friends, memory for * a few scanlines is allocated and * vips_sink_disc() used to generate the image in small chunks. As each * chunk is generated, it is written to disc. * * See also: vips_sink(), vips_image_new(), vips_region_prepare(). * * Returns: 0 on success, or -1 on error. */ int vips_image_generate( VipsImage *image, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ) { int res; VIPS_DEBUG_MSG( "vips_image_generate: %p\n", image ); g_assert( generate_fn ); g_assert( vips_object_sanity( VIPS_OBJECT( image ) ) ); if( !image->hint_set ) { vips_error( "vips_image_generate", "%s", _( "demand hint not set" ) ); return( -1 ); } /* We don't use this, but make sure it's set in case any old binaries * are expecting it. */ image->Bbits = vips_format_sizeof( image->BandFmt ) << 3; /* Look at output type to decide our action. */ switch( image->dtype ) { case VIPS_IMAGE_PARTIAL: /* Output to partial image. Just attach functions and return. */ if( image->generate_fn || image->start_fn || image->stop_fn ) { vips_error( "VipsImage", "%s", _( "generate() called twice" ) ); return( -1 ); } image->start_fn = start_fn; image->generate_fn = generate_fn; image->stop_fn = stop_fn; image->client1 = a; image->client2 = b; VIPS_DEBUG_MSG( "vips_image_generate: " "attaching partial callbacks\n" ); if( vips_image_written( image ) ) return( -1 ); break; case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_OPENOUT: /* Eval now .. sanity check. */ if( image->generate_fn || image->start_fn || image->stop_fn ) { vips_error( "VipsImage", "%s", _( "generate() called twice" ) ); return( -1 ); } /* Attach callbacks. */ image->start_fn = start_fn; image->generate_fn = generate_fn; image->stop_fn = stop_fn; image->client1 = a; image->client2 = b; if( vips_image_write_prepare( image ) ) return( -1 ); if( image->dtype == VIPS_IMAGE_OPENOUT ) res = vips_sink_disc( image, (VipsRegionWrite) write_vips, NULL ); else res = vips_sink_memory( image ); /* Error? */ if( res ) return( -1 ); /* Must come before we rewind. */ if( vips_image_written( image ) ) return( -1 ); /* We've written to image ... rewind it ready for reading. */ if( vips_image_pio_input( image ) ) return( -1 ); break; default: /* Not a known output style. */ vips_error( "VipsImage", _( "unable to output to a %s image" ), vips_enum_nick( VIPS_TYPE_IMAGE_TYPE, image->dtype ) ); return( -1 ); } return( 0 ); } libvips-8.9.1/libvips/iofuncs/header.c000066400000000000000000001440411361153320700177200ustar00rootroot00000000000000/* get, set and copy image header fields * * 9/7/02 JC * - first version * 7/6/05 * - now reads meta fields too * - cleaned up * - added im_header_exists(), im_header_map() * 1/8/05 * - now im_header_get_type() and im_header_get() rather than * im_header_exists() * 4/1/07 * - removed Hist from standard fields ... now a separate function * 29/8/09 * - im_header_get_type() renamed as im_header_get_typeof() to prevent * confusion with GObject-style type definers * 1/10/09 * - rename as header.c * - gtkdoc comments * 22/3/11 * - rename fields for vips8 * - move to vips_ prefix * 16/7/15 * - auto wrap GString as RefString * 20/10/16 * - return header enums as enums, not ints * - vips_image_get_*() all convert everything to target type if they can * - rename "field" as "name" in docs * 21/11/18 * - get_string will allow G_STRING and REF_STRING * 28/12/18 * - hide deprecated header fields from _map * 17/2/19 * - add vips_image_get_page_height() * 19/6/19 * - add vips_image_get_n_pages() * 20/6/19 * - add vips_image_get/set_array_int() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include /** * SECTION: header * @short_description: get, set and walk image headers * @stability: Stable * @see_also: type * @include: vips/vips.h * * These functions let you get at image header data (including metadata) in a * uniform way. * * Use vips_image_get_typeof() to test for the * existence and #GType of a header field. * * You can attach arbitrary metadata to images. Metadata is copied as images * are processed, so all images which used this image as input, directly or * indirectly, will have this same bit of metadata attached to them. Copying * is implemented with reference-counted pointers, so it is efficient, even for * large items of data. This does however mean that metadata items need to be * immutable. Metadata is handy for things like ICC profiles or EXIF data. * * Various convenience functions (eg. vips_image_set_int()) let you easily * attach * simple types like * numbers, strings and memory blocks to images. Use vips_image_map() to loop * over an image's fields, including all metadata. * * Items of metadata are identified by strings. Some strings are reserved, for * example the ICC profile for an image is known by convention as * "icc-profile-data". * * If you save an image in VIPS format, all metadata (with a restriction, see * below) is automatically saved for you in a block of XML at the end of the * file. When you load a VIPS image, the metadata is restored. You can use the * `vipsedit` command-line tool to extract or replace this block of XML. * * VIPS metadata is based on %GValue. See the docs for that system if you want * to do fancy stuff such as defining a new metadata type. * VIPS defines a new %GValue called `vips_save_string`, a variety of string, * see vips_value_set_save_string(). * If your %GValue can be transformed to `vips_save_string`, it will be * saved and loaded to and from VIPS files for you. * * VIPS provides a couple of base classes which implement * reference-counted areas of memory. If you base your metadata on one of * these types, it can be copied between images efficiently. */ /* We have to keep the gtype as a string, since we statically init this. */ typedef struct _HeaderField { const char *name; const char *type; glong offset; } HeaderField; /* Built in fields and struct offsets. */ static HeaderField vips_header_fields[] = { { "width", "gint", G_STRUCT_OFFSET( VipsImage, Xsize ) }, { "height", "gint", G_STRUCT_OFFSET( VipsImage, Ysize ) }, { "bands", "gint", G_STRUCT_OFFSET( VipsImage, Bands ) }, { "format", "VipsBandFormat", G_STRUCT_OFFSET( VipsImage, BandFmt ) }, { "coding", "VipsCoding", G_STRUCT_OFFSET( VipsImage, Coding ) }, { "interpretation", "VipsInterpretation", G_STRUCT_OFFSET( VipsImage, Type ) }, { "xoffset", "gint", G_STRUCT_OFFSET( VipsImage, Xoffset ) }, { "yoffset", "gint", G_STRUCT_OFFSET( VipsImage, Yoffset ) }, { "xres", "gdouble", G_STRUCT_OFFSET( VipsImage, Xres ) }, { "yres", "gdouble", G_STRUCT_OFFSET( VipsImage, Yres ) }, { "filename", "gchararray", G_STRUCT_OFFSET( VipsImage, filename ) } }; /* Old names we keep around for back-compat. We never loop over these with * map, but we do check them when we look up fields by name. */ static HeaderField vips_header_fields_old[] = { { "Xsize", "gint", G_STRUCT_OFFSET( VipsImage, Xsize ) }, { "Ysize", "gint", G_STRUCT_OFFSET( VipsImage, Ysize ) }, { "Bands", "gint", G_STRUCT_OFFSET( VipsImage, Bands ) }, { "Bbits", "gint", G_STRUCT_OFFSET( VipsImage, Bbits ) }, { "BandFmt", "gint", G_STRUCT_OFFSET( VipsImage, BandFmt ) }, { "Coding", "gint", G_STRUCT_OFFSET( VipsImage, Coding ) }, { "Type", "gint", G_STRUCT_OFFSET( VipsImage, Type ) }, { "Xoffset", "gint", G_STRUCT_OFFSET( VipsImage, Xoffset ) }, { "Yoffset", "gint", G_STRUCT_OFFSET( VipsImage, Yoffset ) }, { "Xres", "gdouble", G_STRUCT_OFFSET( VipsImage, Xres ) }, { "Yres", "gdouble", G_STRUCT_OFFSET( VipsImage, Yres ) } }; /* This is used by (eg.) VIPS_IMAGE_SIZEOF_ELEMENT() to calculate object * size via vips_format_sizeof(). * * It needs to be guint64 and not size_t since we use this as the basis for * image address calcs and they have to be 64-bit, even on 32-bit machines. * * Can't be static, we need this to be visible for vips7 compat. */ const guint64 vips__image_sizeof_bandformat[] = { sizeof( unsigned char ), /* VIPS_FORMAT_UCHAR */ sizeof( signed char ), /* VIPS_FORMAT_CHAR */ sizeof( unsigned short ), /* VIPS_FORMAT_USHORT */ sizeof( unsigned short ), /* VIPS_FORMAT_SHORT */ sizeof( unsigned int ), /* VIPS_FORMAT_UINT */ sizeof( unsigned int ), /* VIPS_FORMAT_INT */ sizeof( float ), /* VIPS_FORMAT_FLOAT */ 2 * sizeof( float ), /* VIPS_FORMAT_COMPLEX */ sizeof( double ), /* VIPS_FORMAT_DOUBLE */ 2 * sizeof( double ) /* VIPS_FORMAT_DPCOMPLEX */ }; /** * vips_format_sizeof: * @format: format type * * Returns: number of bytes for a band format. */ guint64 vips_format_sizeof( VipsBandFormat format ) { format = VIPS_CLIP( 0, format, VIPS_FORMAT_DPCOMPLEX ); return( vips__image_sizeof_bandformat[format] ); } /** * vips_format_sizeof_unsafe: (skip) * @format: format type * * A fast but dangerous version of vips_format_sizeof(). You must have * previously range-checked @format or you'll crash. * * Returns: number of bytes for a band format. */ guint64 vips_format_sizeof_unsafe( VipsBandFormat format ) { g_assert( 0 <= format && format <= VIPS_FORMAT_DPCOMPLEX ); return( vips__image_sizeof_bandformat[format] ); } #ifdef DEBUG /* Check that this meta is on the hash table. */ static void * meta_sanity_on_hash( VipsMeta *meta, VipsImage *im ) { VipsMeta *found; if( meta->im != im ) printf( "*** field \"%s\" has incorrect im\n", meta->name ); if( !(found = g_hash_table_lookup( im->meta, meta->name )) ) printf( "*** field \"%s\" is on traverse but not in hash\n", meta->name ); if( found != meta ) printf( "*** meta \"%s\" on traverse and hash do not match\n", meta->name ); return( NULL ); } static void meta_sanity_on_traverse( const char *name, VipsMeta *meta, VipsImage *im ) { if( meta->name != name ) printf( "*** field \"%s\" has incorrect name\n", meta->name ); if( meta->im != im ) printf( "*** field \"%s\" has incorrect im\n", meta->name ); if( !g_slist_find( im->meta_traverse, meta ) ) printf( "*** field \"%s\" is in hash but not on traverse\n", meta->name ); } static void meta_sanity( const VipsImage *im ) { if( im->meta ) g_hash_table_foreach( im->meta, (GHFunc) meta_sanity_on_traverse, (void *) im ); vips_slist_map2( im->meta_traverse, (VipsSListMap2Fn) meta_sanity_on_hash, (void *) im, NULL ); } #endif /*DEBUG*/ static void meta_free( VipsMeta *meta ) { #ifdef DEBUG { char *str_value; str_value = g_strdup_value_contents( &meta->value ); printf( "meta_free: name %s, value = %s\n", meta->name, str_value ); g_free( str_value ); } #endif /*DEBUG*/ if( meta->im ) meta->im->meta_traverse = g_slist_remove( meta->im->meta_traverse, meta ); g_value_unset( &meta->value ); g_free( meta->name ); g_free( meta ); } static VipsMeta * meta_new( VipsImage *image, const char *name, GValue *value ) { VipsMeta *meta; meta = g_new( VipsMeta, 1 ); meta->im = image; meta->name = NULL; memset( &meta->value, 0, sizeof( GValue ) ); meta->name = g_strdup( name ); /* Special case: we don't want to have G_STRING on meta. They will be * copied down pipelines, plus some of our API (like * vips_image_get_string()) assumes that the GValue is a refstring and * that read-only pointers can be handed out. * * Turn G_TYPE_STRING into VIPS_TYPE_REF_STRING. */ if( G_VALUE_TYPE( value ) == G_TYPE_STRING ) g_value_init( &meta->value, VIPS_TYPE_REF_STRING ); else g_value_init( &meta->value, G_VALUE_TYPE( value ) ); /* We don't do any conversions that can fail. */ (void) g_value_transform( value, &meta->value ); image->meta_traverse = g_slist_append( image->meta_traverse, meta ); g_hash_table_replace( image->meta, meta->name, meta ); #ifdef DEBUG { char *str_value; str_value = g_strdup_value_contents( value ); printf( "meta_new: name %s, value = %s\n", name, str_value ); g_free( str_value ); } #endif /*DEBUG*/ return( meta ); } /* Destroy all the meta on an image. */ void vips__meta_destroy( VipsImage *image ) { VIPS_FREEF( g_hash_table_destroy, image->meta ); g_assert( !image->meta_traverse ); } static void meta_init( VipsImage *im ) { if( !im->meta ) { g_assert( !im->meta_traverse ); im->meta = g_hash_table_new_full( g_str_hash, g_str_equal, NULL, (GDestroyNotify) meta_free ); } } /** * vips_image_get_width: (method) * @image: image to get from * * Returns: the number of pixels across the image. */ int vips_image_get_width( const VipsImage *image ) { return( image->Xsize ); } /** * vips_image_get_height: (method) * @image: image to get from * * Returns: the number of pixels down the image. */ int vips_image_get_height( const VipsImage *image ) { return( image->Ysize ); } /** * vips_image_get_bands: (method) * @image: image to get from * * Returns: the number of bands (channels) in the image. */ int vips_image_get_bands( const VipsImage *image ) { return( image->Bands ); } /** * vips_image_get_format: (method) * @image: image to get from * * Returns: the format of each band element. */ VipsBandFormat vips_image_get_format( const VipsImage *image ) { return( image->BandFmt ); } /** * vips_image_guess_format: (method) * @image: image to guess for * * Return the #VipsBandFormat for an image, guessing a sane value if * the set value looks crazy. * * For example, for a float image tagged as rgb16, we'd return ushort. * * Returns: a sensible #VipsBandFormat for the image. */ VipsBandFormat vips_image_guess_format( const VipsImage *image ) { VipsBandFormat format; /* Stop a compiler warning. */ format = VIPS_FORMAT_UCHAR; switch( image->Type ) { case VIPS_INTERPRETATION_B_W: case VIPS_INTERPRETATION_HISTOGRAM: case VIPS_INTERPRETATION_MULTIBAND: format = image->BandFmt; break; case VIPS_INTERPRETATION_FOURIER: if( image->BandFmt == VIPS_FORMAT_DOUBLE || image->BandFmt == VIPS_FORMAT_DPCOMPLEX ) format = VIPS_FORMAT_DPCOMPLEX; else format = VIPS_FORMAT_COMPLEX; break; case VIPS_INTERPRETATION_sRGB: case VIPS_INTERPRETATION_RGB: format = VIPS_FORMAT_UCHAR; break; case VIPS_INTERPRETATION_XYZ: case VIPS_INTERPRETATION_LAB: case VIPS_INTERPRETATION_CMC: case VIPS_INTERPRETATION_LCH: case VIPS_INTERPRETATION_HSV: case VIPS_INTERPRETATION_scRGB: case VIPS_INTERPRETATION_YXY: format = VIPS_FORMAT_FLOAT; break; case VIPS_INTERPRETATION_CMYK: if( image->BandFmt == VIPS_FORMAT_USHORT ) format = VIPS_FORMAT_USHORT; else format = VIPS_FORMAT_UCHAR; break; case VIPS_INTERPRETATION_LABQ: format = VIPS_FORMAT_UCHAR; break; case VIPS_INTERPRETATION_LABS: format = VIPS_FORMAT_SHORT; break; case VIPS_INTERPRETATION_GREY16: case VIPS_INTERPRETATION_RGB16: format = VIPS_FORMAT_USHORT; break; case VIPS_INTERPRETATION_MATRIX: if( image->BandFmt == VIPS_FORMAT_DOUBLE ) format = VIPS_FORMAT_DOUBLE; else format = VIPS_FORMAT_FLOAT; break; default: format = VIPS_FORMAT_NOTSET; break; } return( format ); } /** * vips_image_get_coding: (method) * @image: image to get from * * Returns: the image coding */ VipsCoding vips_image_get_coding( const VipsImage *image ) { return( image->Coding ); } /** * vips_image_get_interpretation: (method) * @image: image to get from * * Return the #VipsInterpretation set in the image header. * Use vips_image_guess_interpretation() if you want a sanity-checked value. * * Returns: the #VipsInterpretation from the image header. */ VipsInterpretation vips_image_get_interpretation( const VipsImage *image ) { return( image->Type ); } /* Try to guess a sane value for interpretation. */ static VipsInterpretation vips_image_default_interpretation( const VipsImage *image ) { switch( image->Coding ) { case VIPS_CODING_LABQ: return( VIPS_INTERPRETATION_LABQ ); case VIPS_CODING_RAD: return( VIPS_INTERPRETATION_sRGB ); default: break; } /* 1 and 2 bands -> greyscale. The extra band could be alpha. */ if( image->Bands < 3 ) { if( image->BandFmt == VIPS_FORMAT_USHORT ) return( VIPS_INTERPRETATION_GREY16 ); else return( VIPS_INTERPRETATION_B_W ); } else { /* 3 or more -> some sort of RGB. You'll need to set CMYK * explicitly if you want that. */ if( image->BandFmt == VIPS_FORMAT_USHORT ) return( VIPS_INTERPRETATION_RGB16 ); else return( VIPS_INTERPRETATION_sRGB ); } } /** * vips_image_guess_interpretation: (method) * @image: image to guess for * * Return the #VipsInterpretation for an image, guessing a sane value if * the set value looks crazy. * * Returns: a sensible #VipsInterpretation for the image. */ VipsInterpretation vips_image_guess_interpretation( const VipsImage *image ) { gboolean sane; sane = TRUE; /* Coding overrides interpretation. */ switch( image->Coding ) { case VIPS_CODING_LABQ: if( image->Type != VIPS_INTERPRETATION_LABQ ) sane = FALSE; break; case VIPS_CODING_RAD: if( image->Type != VIPS_INTERPRETATION_sRGB ) sane = FALSE; break; default: break; } switch( image->Type ) { case VIPS_INTERPRETATION_MULTIBAND: /* This is a pretty useless generic tag. Always reset it. */ sane = FALSE; break; case VIPS_INTERPRETATION_B_W: /* Don't test bands, we allow bands after the first to be * unused extras, like alpha. */ break; case VIPS_INTERPRETATION_HISTOGRAM: if( image->Xsize > 1 && image->Ysize > 1 ) sane = FALSE; break; case VIPS_INTERPRETATION_FOURIER: if( !vips_band_format_iscomplex( image->BandFmt ) ) sane = FALSE; break; case VIPS_INTERPRETATION_XYZ: case VIPS_INTERPRETATION_LAB: case VIPS_INTERPRETATION_RGB: case VIPS_INTERPRETATION_CMC: case VIPS_INTERPRETATION_LCH: case VIPS_INTERPRETATION_sRGB: case VIPS_INTERPRETATION_HSV: case VIPS_INTERPRETATION_scRGB: case VIPS_INTERPRETATION_YXY: if( image->Bands < 3 ) sane = FALSE; break; case VIPS_INTERPRETATION_CMYK: if( image->Bands < 4 ) sane = FALSE; break; case VIPS_INTERPRETATION_LABQ: if( image->Coding != VIPS_CODING_LABQ ) sane = FALSE; break; case VIPS_INTERPRETATION_LABS: if( image->BandFmt != VIPS_FORMAT_SHORT ) sane = FALSE; break; case VIPS_INTERPRETATION_RGB16: if( image->BandFmt == VIPS_FORMAT_CHAR || image->BandFmt == VIPS_FORMAT_UCHAR || image->Bands < 3 ) sane = FALSE; break; case VIPS_INTERPRETATION_GREY16: if( image->BandFmt == VIPS_FORMAT_CHAR || image->BandFmt == VIPS_FORMAT_UCHAR ) sane = FALSE; break; case VIPS_INTERPRETATION_MATRIX: if( image->Bands != 1 ) sane = FALSE; break; default: g_assert_not_reached(); } if( sane ) return( vips_image_get_interpretation( image ) ); else return( vips_image_default_interpretation( image ) ); } /** * vips_image_get_xres: (method) * @image: image to get from * * Returns: the horizontal image resolution in pixels per millimeter. */ double vips_image_get_xres( const VipsImage *image ) { return( image->Xres ); } /** * vips_image_get_yres: (method) * @image: image to get from * * Returns: the vertical image resolution in pixels per millimeter. */ double vips_image_get_yres( const VipsImage *image ) { return( image->Yres ); } /** * vips_image_get_xoffset: (method) * @image: image to get from * * Returns: the horizontal position of the image origin, in pixels. */ int vips_image_get_xoffset( const VipsImage *image ) { return( image->Xoffset ); } /** * vips_image_get_yoffset: (method) * @image: image to get from * * Returns: the vertical position of the image origin, in pixels. */ int vips_image_get_yoffset( const VipsImage *image ) { return( image->Yoffset ); } /** * vips_image_get_filename: (method) * @image: image to get from * * Returns: the name of the file the image was loaded from, or NULL if there * is no filename. */ const char * vips_image_get_filename( const VipsImage *image ) { return( image->filename ); } /** * vips_image_get_mode: (method) * @image: image to get from * * Image modes are things like `"t"`, meaning a memory buffer, and `"p"` * meaning a delayed computation. * * Returns: the image mode. */ const char * vips_image_get_mode( const VipsImage *image ) { return( image->mode ); } /** * vips_image_get_scale: (method) * @image: image to get from * * Matrix images can have an optional `scale` field for use by integer * convolution. * * Returns: the scale. */ double vips_image_get_scale( const VipsImage *image ) { double scale; scale = 1.0; if( vips_image_get_typeof( image, "scale" ) ) vips_image_get_double( image, "scale", &scale ); return( scale ); } /** * vips_image_get_offset: (method) * @image: image to get from * * Matrix images can have an optional `offset` field for use by integer * convolution. * * Returns: the offset. */ double vips_image_get_offset( const VipsImage *image ) { double offset; offset = 0.0; if( vips_image_get_typeof( image, "offset" ) ) vips_image_get_double( image, "offset", &offset ); return( offset ); } /** * vips_image_get_page_height: (method) * @image: image to get from * * Multi-page images can have a page height. Fetch it, and sanity check it. If * page-height is not set, it defaults to the image height. * * Returns: the page height. */ int vips_image_get_page_height( VipsImage *image ) { int page_height; if( vips_image_get_typeof( image, VIPS_META_PAGE_HEIGHT ) && !vips_image_get_int( image, VIPS_META_PAGE_HEIGHT, &page_height ) && page_height > 0 && page_height < image->Ysize && image->Ysize % page_height == 0 ) return( page_height ); return( image->Ysize ); } /** * vips_image_get_n_pages: (method) * @image: image to get from * * Fetch and sanity-check VIPS_META_N_PAGES. Default to 1 if not present or * crazy. * * This is the number of pages in the image file, not the number of pages that * have been loaded into @image. * * Returns: the number of pages in the image file */ int vips_image_get_n_pages( VipsImage *image ) { int n_pages; if( vips_image_get_typeof( image, VIPS_META_N_PAGES ) && !vips_image_get_int( image, VIPS_META_N_PAGES, &n_pages ) && n_pages > 1 && n_pages < 1000 ) return( n_pages ); return( 1 ); } /** * vips_image_get_data: (method) * @image: image to get data for * * Return a pointer to the image's pixel data, if possible. This can involve * allocating large amounts of memory and performing a long computation. Image * pixels are laid out in band-packed rows. * * Since this function modifies @image, it is not threadsafe. Only call it on * images which you are sure have not been shared with another thread. * * See also: vips_image_wio_input(), vips_image_copy_memory(). * * Returns: (transfer none): a pointer to pixel data, if possible. */ const void * vips_image_get_data( VipsImage *image ) { if( vips_image_wio_input( image ) ) return( NULL ); return( image->data ); } /** * vips_image_init_fields: (method) * @image: image to init * @xsize: image width * @ysize: image height * @bands: image bands * @format: band format * @coding: image coding * @interpretation: image type * @xres: horizontal resolution, pixels per millimetre * @yres: vertical resolution, pixels per millimetre * * A convenience function to set the header fields after creating an image. * Normally you copy the fields from your input images with * vips_image_pipelinev() and then make * any adjustments you need, but if you are creating an image from scratch, * for example vips_black() or vips_jpegload(), you do need to set all the * fields yourself. * * See also: vips_image_pipelinev(). */ void vips_image_init_fields( VipsImage *image, int xsize, int ysize, int bands, VipsBandFormat format, VipsCoding coding, VipsInterpretation interpretation, double xres, double yres ) { g_object_set( image, "width", xsize, "height", ysize, "bands", bands, "format", format, NULL ); image->Coding = coding; image->Type = interpretation; image->Xres = xres; image->Yres = yres; } static void * meta_cp_field( VipsMeta *meta, VipsImage *dst ) { #ifdef DEBUG { char *str_value; str_value = g_strdup_value_contents( &meta->value ); printf( "vips__meta_cp: copying name %s, value = %s\n", meta->name, str_value ); g_free( str_value ); } #endif /*DEBUG*/ (void) meta_new( dst, meta->name, &meta->value ); #ifdef DEBUG meta_sanity( dst ); #endif /*DEBUG*/ return( NULL ); } /* Copy meta on to dst. */ static int meta_cp( VipsImage *dst, const VipsImage *src ) { if( src->meta ) { /* Loop, copying fields. */ meta_init( dst ); /* We lock with vips_image_set() to stop races in highly- * threaded applications. */ g_mutex_lock( vips__global_lock ); vips_slist_map2( src->meta_traverse, (VipsSListMap2Fn) meta_cp_field, dst, NULL ); g_mutex_unlock( vips__global_lock ); } return( 0 ); } /* We have to have this as a separate entry point so we can support the old * vips7 API. */ int vips__image_copy_fields_array( VipsImage *out, VipsImage *in[] ) { int i; int ni; g_assert( in[0] ); /* Copy magic too, handy for knowing the original image's byte order. */ out->magic = in[0]->magic; out->Xsize = in[0]->Xsize; out->Ysize = in[0]->Ysize; out->Bands = in[0]->Bands; out->Bbits = in[0]->Bbits; out->BandFmt = in[0]->BandFmt; out->Type = in[0]->Type; out->Coding = in[0]->Coding; out->Xres = in[0]->Xres; out->Yres = in[0]->Yres; out->Xoffset = in[0]->Xoffset; out->Yoffset = in[0]->Yoffset; /* Count number of images. */ for( ni = 0; in[ni]; ni++ ) ; /* Need to copy last-to-first so that in0 meta will override any * earlier meta. * * Don't destroy the meta on out. Things like foreign.c like setting * image properties before calling a subclass loader, and those * subclass loaders will sometimes write to an image. */ for( i = ni - 1; i >= 0; i-- ) if( meta_cp( out, in[i] ) ) return( -1 ); /* Merge hists first to last. */ for( i = 0; in[i]; i++ ) out->history_list = vips__gslist_gvalue_merge( out->history_list, in[i]->history_list ); return( 0 ); } /** * vips_image_set: (method) * @image: image to set the metadata on * @name: the name to give the metadata * @value: the %GValue to copy into the image * * Set a piece of metadata on @image. Any old metadata with that name is * destroyed. The %GValue is copied into the image, so you need to unset the * value when you're done with it. * * For example, to set an integer on an image (though you would use the * convenience function vips_image_set_int() in practice), you would do: * * |[ * GValue value = { 0 }; * * g_value_init (&value, G_TYPE_INT); * g_value_set_int (&value, 42); * vips_image_set (image, name, &value); * g_value_unset (&value); * ]| * * See also: vips_image_get(). */ void vips_image_set( VipsImage *image, const char *name, GValue *value ) { g_assert( name ); g_assert( value ); /* If this image is shared, block metadata changes. */ if( G_OBJECT( image )->ref_count > 1 ) { g_warning( "can't set metadata \"%s\" on shared image", name ); return; } meta_init( image ); /* We lock between modifying metadata and copying metadata between * images, see meta_cp(). * * This prevents modification of metadata by one thread racing with * metadata copy on another -- this can lead to crashes in * highly-threaded applications. */ g_mutex_lock( vips__global_lock ); (void) meta_new( image, name, value ); g_mutex_unlock( vips__global_lock ); /* If we're setting an EXIF data block, we need to automatically expand * out all the tags. This will set things like xres/yres too. * * We do this here rather than in meta_new() since we don't want to * trigger on copy_fields. */ if( strcmp( name, VIPS_META_EXIF_NAME ) == 0 ) if( vips__exif_parse( image ) ) g_warning( "image_set: bad exif data" ); #ifdef DEBUG meta_sanity( image ); #endif /*DEBUG*/ } /* Unforunately gvalue seems to have no way of doing this. Just handle the vips * built-in types. */ static void vips_set_value_from_pointer( GValue *value, void *data ) { GType type = G_VALUE_TYPE( value ); /* The fundamental type ... eg. G_TYPE_ENUM for a VIPS_TYPE_KERNEL, * or G_TYPE_OBJECT for VIPS_TYPE_IMAGE(). */ GType fundamental = G_TYPE_FUNDAMENTAL( type ); if( fundamental == G_TYPE_INT ) g_value_set_int( value, *((int *) data) ); else if( fundamental == G_TYPE_DOUBLE ) g_value_set_double( value, *((double *) data) ); else if( fundamental == G_TYPE_ENUM ) g_value_set_enum( value, *((int *) data) ); else if( fundamental == G_TYPE_STRING ) g_value_set_string( value, *((char **) data) ); else g_warning( "%s: unimplemented vips_set_value_from_pointer() " "type %s", G_STRLOC, g_type_name( type ) ); } /** * vips_image_get: (method) * @image: image to get the field from from * @name: the name to fetch * @value_copy: (transfer full) (out caller-allocates): the %GValue is copied into this * * Fill @value_copy with a copy of the header field. @value_copy must be zeroed * but uninitialised. * * This will return -1 and add a message to the error buffer if the field * does not exist. Use vips_image_get_typeof() to test for the * existence of a field first if you are not certain it will be there. * * For example, to read a double from an image (though of course you would use * vips_image_get_double() in practice): * * |[ * GValue value = { 0 }; * double d; * * if (vips_image_get (image, name, &value)) * return -1; * * if (G_VALUE_TYPE (&value) != G_TYPE_DOUBLE) { * vips_error( "mydomain", * _("field \"%s\" is of type %s, not double"), * name, * g_type_name (G_VALUE_TYPE (&value))); * g_value_unset (&value); * return -1; * } * * d = g_value_get_double (&value); * g_value_unset (&value); * ]| * * See also: vips_image_get_typeof(), vips_image_get_double(). * * Returns: (skip): 0 on success, -1 otherwise. */ int vips_image_get( const VipsImage *image, const char *name, GValue *value_copy ) { int i; VipsMeta *meta; g_assert( name ); g_assert( value_copy ); for( i = 0; i < VIPS_NUMBER( vips_header_fields ); i++ ) { HeaderField *field = &vips_header_fields[i]; if( strcmp( field->name, name ) == 0 ) { GType gtype = g_type_from_name( field->type ); g_value_init( value_copy, gtype ); vips_set_value_from_pointer( value_copy, G_STRUCT_MEMBER_P( image, field->offset ) ); return( 0 ); } } for( i = 0; i < VIPS_NUMBER( vips_header_fields_old ); i++ ) { HeaderField *field = &vips_header_fields_old[i]; if( strcmp( field->name, name ) == 0 ) { GType gtype = g_type_from_name( field->type ); g_value_init( value_copy, gtype ); vips_set_value_from_pointer( value_copy, G_STRUCT_MEMBER_P( image, field->offset ) ); return( 0 ); } } if( image->meta && (meta = g_hash_table_lookup( image->meta, name )) ) { g_value_init( value_copy, G_VALUE_TYPE( &meta->value ) ); g_value_copy( &meta->value, value_copy ); return( 0 ); } vips_error( "vips_image_get", _( "field \"%s\" not found" ), name ); return( -1 ); } /** * vips_image_get_typeof: (method) * @image: image to test * @name: the name to search for * * Read the %GType for a header field. Returns zero if there is no * field of that name. * * See also: vips_image_get(). * * Returns: the %GType of the field, or zero if there is no * field of that name. */ GType vips_image_get_typeof( const VipsImage *image, const char *name ) { int i; VipsMeta *meta; g_assert( name ); for( i = 0; i < VIPS_NUMBER( vips_header_fields ); i++ ) { HeaderField *field = &vips_header_fields[i]; if( strcmp( field->name, name ) == 0 ) return( g_type_from_name( field->type ) ); } for( i = 0; i < VIPS_NUMBER( vips_header_fields_old ); i++ ) { HeaderField *field = &vips_header_fields_old[i]; if( strcmp( field->name, name ) == 0 ) return( g_type_from_name( field->type ) ); } if( image->meta && (meta = g_hash_table_lookup( image->meta, name )) ) return( G_VALUE_TYPE( &meta->value ) ); VIPS_DEBUG_MSG( "vips_image_get_typeof: unknown field %s\n", name ); return( 0 ); } /** * vips_image_remove: (method) * @image: image to test * @name: the name to search for * * Find and remove an item of metadata. Return %FALSE if no metadata of that * name was found. * * See also: vips_image_set(), vips_image_get_typeof(). * * Returns: %TRUE if an item of metadata of that name was found and removed */ gboolean vips_image_remove( VipsImage *image, const char *name ) { gboolean result; result = FALSE; /* If this image is shared, block metadata changes. */ if( G_OBJECT( image )->ref_count > 1 ) { g_warning( "can't remove metadata \"%s\" on shared image", name ); return( result ); } if( image->meta ) { /* We lock between modifying metadata and copying metadata * between images, see meta_cp(). * * This prevents modification of metadata by one thread * racing with metadata copy on another -- this can lead to * crashes in highly-threaded applications. */ g_mutex_lock( vips__global_lock ); result = g_hash_table_remove( image->meta, name ); g_mutex_unlock( vips__global_lock ); } return( result ); } /* Deprecated header fields we hide from _map. */ static const char *vips_image_header_deprecated[] = { "ipct-data", "gif-delay", "gif-loop" }; static void * vips_image_map_fn( VipsMeta *meta, VipsImageMapFn fn, void *a ) { int i; /* Hide deprecated fields. */ for( i = 0; i < VIPS_NUMBER( vips_image_header_deprecated ); i++ ) if( strcmp( meta->name, vips_image_header_deprecated[i] ) == 0 ) return( NULL ); return( fn( meta->im, meta->name, &meta->value, a ) ); } /** * vips_image_map: (method) * @image: image to map over * @fn: (scope call): function to call for each header field * @a: (closure fn): user data for function * * This function calls @fn for every header field, including every item of * metadata. * * Like all _map functions, the user function should return %NULL to continue * iteration, or a non-%NULL pointer to indicate early termination. * * See also: vips_image_get_typeof(), vips_image_get(). * * Returns: (transfer none): %NULL on success, the failing pointer otherwise. */ void * vips_image_map( VipsImage *image, VipsImageMapFn fn, void *a ) { int i; GValue value = { 0 }; void *result; for( i = 0; i < VIPS_NUMBER( vips_header_fields ); i++ ) { HeaderField *field = &vips_header_fields[i]; (void) vips_image_get( image, field->name, &value ); result = fn( image, field->name, &value, a ); g_value_unset( &value ); if( result ) return( result ); } if( image->meta_traverse && (result = vips_slist_map2( image->meta_traverse, (VipsSListMap2Fn) vips_image_map_fn, fn, a )) ) return( result ); return( NULL ); } static void * count_fields( VipsImage *image, const char *field, GValue *value, void *a ) { int *n_fields = (int *) a; *n_fields += 1; return( NULL ); } static void * add_fields( VipsImage *image, const char *field, GValue *value, void *a ) { gchar ***p = (gchar ***) a; **p = g_strdup( field ); *p += 1; return( NULL ); } /** * vips_image_get_fields: (method) * @image: image to get fields from * * Get a %NULL-terminated array listing all the metadata field names on @image. * Free the return result with g_strfreev(). * * This is handy for language bindings. From C, it's usually more convenient to * use vips_image_map(). * * Returns: (transfer full): metadata fields in image, as a %NULL-terminated * array. */ gchar ** vips_image_get_fields( VipsImage *image ) { int n_fields; gchar **fields; gchar **p; n_fields = 0; (void) vips_image_map( image, count_fields, &n_fields ); fields = g_new0( gchar *, n_fields + 1 ); p = fields; (void) vips_image_map( image, add_fields, &p ); return( fields ); } /** * vips_image_set_area: (method) * @image: image to attach the metadata to * @name: metadata name * @free_fn: (scope async): free function for @data * @data: pointer to area of memory * * Attaches @data as a metadata item on @image under the name @name. When * VIPS no longer needs the metadata, it will be freed with @free_fn. * * See also: vips_image_get_double(), vips_image_set() */ void vips_image_set_area( VipsImage *image, const char *name, VipsCallbackFn free_fn, void *data ) { GValue value = { 0 }; vips_value_set_area( &value, free_fn, data ); vips_image_set( image, name, &value ); g_value_unset( &value ); } static int meta_get_value( const VipsImage *image, const char *name, GType type, GValue *value_copy ) { GValue value = { 0 }; if( vips_image_get( image, name, &value ) ) return( -1 ); g_value_init( value_copy, type ); if( !g_value_transform( &value, value_copy ) ) { vips_error( "VipsImage", _( "field \"%s\" is of type %s, not %s" ), name, g_type_name( G_VALUE_TYPE( &value ) ), g_type_name( type ) ); g_value_unset( &value ); return( -1 ); } g_value_unset( &value ); return( 0 ); } /** * vips_image_get_area: (method) * @image: image to get the metadata from * @name: metadata name * @data: (out): return metadata value * * Gets @data from @image under the name @name. A convenience * function over vips_image_get(). Use vips_image_get_typeof() to test for * the existence of a piece of metadata. * * See also: vips_image_set_area(), vips_image_get(), * vips_image_get_typeof() * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_area( const VipsImage *image, const char *name, const void **data ) { GValue value_copy = { 0 }; if( !meta_get_value( image, name, VIPS_TYPE_AREA, &value_copy ) ) { *data = vips_value_get_area( &value_copy, NULL ); g_value_unset( &value_copy ); return( 0 ); } return( -1 ); } /** * vips_image_set_blob: (method) * @image: image to attach the metadata to * @name: metadata name * @free_fn: (scope async): free function for @data * @data: pointer to area of memory * @length: length of memory area * * Attaches @blob as a metadata item on @image under the name @name. A * convenience * function over vips_image_set() using a vips_blob. * * See also: vips_image_get_blob(), vips_image_set(). */ void vips_image_set_blob( VipsImage *image, const char *name, VipsCallbackFn free_fn, const void *data, size_t size ) { GValue value = { 0 }; g_value_init( &value, VIPS_TYPE_BLOB ); vips_value_set_blob( &value, free_fn, data, size ); vips_image_set( image, name, &value ); g_value_unset( &value ); } /** * vips_image_set_blob_copy: (method) * @image: image to attach the metadata to * @name: metadata name * @data: pointer to area of memory * @length: length of memory area * * Attaches @blob as a metadata item on @image under the name @name, taking * a copy of the memory area. A convenience function over * vips_image_set_blob(). * * See also: vips_image_get_blob(), vips_image_set(). */ void vips_image_set_blob_copy( VipsImage *image, const char *name, const void *data, size_t length ) { void *data_copy; /* Cap at 100mb for sanity. */ if( !data || length == 0 || length > 100 * 1024 * 1024 ) return; /* We add an extra, secret null byte at the end, just in case this blob * is read as a C string. The libtiff reader attaches * XMP XML as a blob, for example. */ if( !(data_copy = vips_malloc( NULL, length + 1 )) ) return; memcpy( data_copy, data, length ); ((unsigned char *) data_copy)[length] = '\0'; vips_image_set_blob( image, name, (VipsCallbackFn) vips_free, data_copy, length ); } /** * vips_image_get_blob: (method) * @image: image to get the metadata from * @name: metadata name * @data: pointer to area of memory * @length: return the blob length here, optionally * * Gets @blob from @image under the name @name, optionally returns its length in * @length. A convenience * function over vips_image_get(). Use vips_image_get_typeof() to test for the * existence * of a piece of metadata. * * See also: vips_image_get(), vips_image_get_typeof(), vips_blob_get(), * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_blob( const VipsImage *image, const char *name, const void **data, size_t *length ) { GValue value_copy = { 0 }; if( !meta_get_value( image, name, VIPS_TYPE_BLOB, &value_copy ) ) { *data = vips_value_get_blob( &value_copy, length ); g_value_unset( &value_copy ); return( 0 ); } return( -1 ); } /** * vips_image_get_int: (method) * @image: image to get the header field from * @name: field name * @out: (out): return field value * * Gets @out from @im under the name @name. * The value will be transformed into * an int, if possible. * * See also: vips_image_get(), vips_image_get_typeof() * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_int( const VipsImage *image, const char *name, int *out ) { GValue value = { 0 }; if( meta_get_value( image, name, G_TYPE_INT, &value ) ) return( -1 ); *out = g_value_get_int( &value ); g_value_unset( &value ); return( 0 ); } /** * vips_image_set_int: (method) * @image: image to attach the metadata to * @name: metadata name * @i: metadata value * * Attaches @i as a metadata item on @image under the name @name. A * convenience * function over vips_image_set(). * * See also: vips_image_get_int(), vips_image_set() */ void vips_image_set_int( VipsImage *image, const char *name, int i ) { GValue value = { 0 }; g_value_init( &value, G_TYPE_INT ); g_value_set_int( &value, i ); vips_image_set( image, name, &value ); g_value_unset( &value ); } /** * vips_image_get_double: (method) * @image: image to get the header field from * @name: field name * @out: return field value * * Gets @out from @im under the name @name. * The value will be transformed into * a double, if possible. * * See also: vips_image_get(), vips_image_get_typeof() * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_double( const VipsImage *image, const char *name, double *out ) { GValue value = { 0 }; if( meta_get_value( image, name, G_TYPE_DOUBLE, &value ) ) return( -1 ); *out = g_value_get_double( &value ); g_value_unset( &value ); return( 0 ); } /** * vips_image_set_double: (method) * @image: image to attach the metadata to * @name: metadata name * @d: metadata value * * Attaches @d as a metadata item on @image as @name. A * convenience * function over vips_image_set(). * * See also: vips_image_get_double(), vips_image_set() */ void vips_image_set_double( VipsImage *image, const char *name, double d ) { GValue value = { 0 }; g_value_init( &value, G_TYPE_DOUBLE ); g_value_set_double( &value, d ); vips_image_set( image, name, &value ); g_value_unset( &value ); } /** * vips_image_get_string: (method) * @image: image to get the header field from * @name: field name * @out: (transfer none): return field value * * Gets @out from @im under the name @name. * The field must be of type * G_STRING, VIPS_TYPE_REFSTRING. * * Do not free @out. * * Use vips_image_get_as_string() to fetch any field as a string. * * See also: vips_image_get(), vips_image_get_typeof() * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_string( const VipsImage *image, const char *name, const char **out ) { GValue value = { 0 }; if( vips_image_get( image, name, &value ) ) return( -1 ); if( G_VALUE_TYPE( &value ) == VIPS_TYPE_REF_STRING ) { VipsArea *area; area = g_value_get_boxed( &value ); *out = area->data; } else if( G_VALUE_TYPE( &value ) == G_TYPE_STRING ) { *out = g_value_get_string( &value ); } else { vips_error( "VipsImage", _( "field \"%s\" is of type %s, not VipsRefString" ), name, g_type_name( G_VALUE_TYPE( &value ) ) ); g_value_unset( &value ); return( -1 ); } g_value_unset( &value ); return( 0 ); } /** * vips_image_set_string: (method) * @image: image to attach the metadata to * @name: metadata name * @str: metadata value * * Attaches @str as a metadata item on @image as @name. * A convenience * function over vips_image_set() using #VIPS_TYPE_REF_STRING. * * See also: vips_image_get_double(), vips_image_set(). */ void vips_image_set_string( VipsImage *image, const char *name, const char *str ) { GValue value = { 0 }; g_value_init( &value, VIPS_TYPE_REF_STRING ); vips_value_set_ref_string( &value, str ); vips_image_set( image, name, &value ); g_value_unset( &value ); } /** * vips_image_get_as_string: (method) * @image: image to get the header field from * @name: field name * @out: (transfer full): return field value as string * * Returns @name from @image in @out. * This function will read any field, returning it as a printable string. * You need to free the string with g_free() when you are done with it. * * This will base64-encode BLOBs, for example. Use vips_buf_appendgv() to * make a string that's for humans. * * See also: vips_image_get(), vips_image_get_typeof(), vips_buf_appendgv(). * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_as_string( const VipsImage *image, const char *name, char **out ) { GValue value = { 0 }; GType type; if( vips_image_get( image, name, &value ) ) return( -1 ); /* Display the save form, if there is one. This way we display * something useful for ICC profiles, xml fields, etc. */ type = G_VALUE_TYPE( &value ); if( g_value_type_transformable( type, VIPS_TYPE_SAVE_STRING ) ) { GValue save_value = { 0 }; g_value_init( &save_value, VIPS_TYPE_SAVE_STRING ); if( !g_value_transform( &value, &save_value ) ) return( -1 ); *out = g_strdup( vips_value_get_save_string( &save_value ) ); g_value_unset( &save_value ); } else *out = g_strdup_value_contents( &value ); g_value_unset( &value ); return( 0 ); } /** * vips_image_print_field: (method) * @image: image to get the header field from * @name: field name * * Prints field @name to stdout as ASCII. Handy for debugging. */ void vips_image_print_field( const VipsImage *image, const char *name ) { char *str; if( vips_image_get_as_string( image, name, &str ) ) { printf( "vips_image_print_field: unable to read field\n" ); return; } printf( ".%s: %s\n", name, str ); g_free( str ); } /** * vips_image_get_image: (method) * @image: image to get the metadata from * @name: metadata name * @out: (transfer full): return metadata value * * Gets @out from @im under the name @name. * The field must be of type * #VIPS_TYPE_IMAGE. You must unref @out with g_object_unref(). * * Use vips_image_get_typeof() to test for the * existence of a piece of metadata. * * See also: vips_image_get(), vips_image_set_image() * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_image( const VipsImage *image, const char *name, VipsImage **out ) { GValue value = { 0 }; if( meta_get_value( image, name, VIPS_TYPE_IMAGE, &value ) ) return( -1 ); *out = g_value_dup_object( &value ); g_value_unset( &value ); return( 0 ); } /** * vips_image_set_image: (method) * @image: image to attach the metadata to * @name: metadata name * @im: metadata value * * Attaches @im as a metadata item on @image as @name. * A convenience function over vips_image_set(). * * See also: vips_image_get_image(), vips_image_set(). */ void vips_image_set_image( VipsImage *image, const char *name, VipsImage *im ) { GValue value = { 0 }; g_value_init( &value, VIPS_TYPE_IMAGE ); g_value_set_object( &value, im ); vips_image_set( image, name, &value ); g_value_unset( &value ); } /** * vips_image_get_array_int: (method) * @image: image to get the metadata from * @name: metadata name * @out: (transfer none): return pointer to array * @n: (allow-none): return the number of elements here, optionally * * Gets @out from @im under the name @name. * The field must be of type * #VIPS_TYPE_ARRAY_INT. * * Do not free @out. @out is valid as long as @image is valid. * * Use vips_image_get_typeof() to test for the * existence of a piece of metadata. * * See also: vips_image_get(), vips_image_set_image() * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_array_int( VipsImage *image, const char *name, int **out, int *n ) { GValue value = { 0 }; if( meta_get_value( image, name, VIPS_TYPE_ARRAY_INT, &value ) ) return( -1 ); *out = vips_value_get_array_int( &value, n ); g_value_unset( &value ); return( 0 ); } /** * vips_image_set_array_int: (method) * @image: image to attach the metadata to * @name: metadata name * @array: (array length=n) (allow-none): array of ints * @n: the number of elements * * Attaches @array as a metadata item on @image as @name. * A convenience function over vips_image_set(). * * See also: vips_image_get_image(), vips_image_set(). */ void vips_image_set_array_int( VipsImage *image, const char *name, const int *array, int n ) { GValue value = { 0 }; g_value_init( &value, VIPS_TYPE_ARRAY_INT ); vips_value_set_array_int( &value, array, n ); vips_image_set( image, name, &value ); g_value_unset( &value ); } /** * vips_image_history_printf: (method) * @image: add history line to this image * @format: printf() format string * @...: arguments to format string * * Add a line to the image history. The @format and arguments are expanded, the * date and time is appended prefixed with a hash character, and the whole * string is appended to the image history and terminated with a newline. * * For example: * * |[ * vips_image_history_printf (image, "vips invert %s %s", * in->filename, out->filename); * ]| * * Might add the string * * |[ * "vips invert /home/john/fred.v /home/john/jim.v # Fri Apr 3 23:30:35 2009\n" * ]| * * VIPS operations don't add history lines for you because a single action at * the application level might involve many VIPS operations. History must be * recorded by the application. * * Returns: 0 on success, -1 on error. */ int vips_image_history_printf( VipsImage *image, const char *fmt, ... ) { va_list args; char str[VIPS_PATH_MAX]; VipsBuf buf = VIPS_BUF_STATIC( str ); time_t timebuf; va_start( args, fmt ); (void) vips_buf_vappendf( &buf, fmt, args ); va_end( args ); vips_buf_appends( &buf, " # " ); /* Add the date. ctime always attaches a '\n', gah. */ time( &timebuf ); vips_buf_appends( &buf, ctime( &timebuf ) ); vips_buf_removec( &buf, '\n' ); #ifdef DEBUG printf( "vips_image_history_printf: " "adding:\n\t%s\nto history on image %p\n", vips_buf_all( &buf ), image ); #endif /*DEBUG*/ image->history_list = g_slist_append( image->history_list, vips__gvalue_ref_string_new( vips_buf_all( &buf ) ) ); return( 0 ); } /** * vips_image_history_args: (method) * @image: image to attach history line to * @name: program name * @argc: number of program arguments * @argv: (array length=argc) (element-type char*): program arguments * * Formats the name/argv as a single string and calls * vips_image_history_printf(). A * convenience function for command-line prorams. * * See also: vips_image_get_history(). * * Returns: 0 on success, -1 on error. */ int vips_image_history_args( VipsImage *image, const char *name, int argc, char *argv[] ) { int i; char txt[1024]; VipsBuf buf = VIPS_BUF_STATIC( txt ); vips_buf_appends( &buf, name ); for( i = 0; i < argc; i++ ) { vips_buf_appends( &buf, " " ); vips_buf_appends( &buf, argv[i] ); } if( vips_image_history_printf( image, "%s", vips_buf_all( &buf ) ) ) return( -1 ); return( 0 ); } /** * vips_image_get_history: (method) * @image: get history from here * * This function reads the image history as a C string. The string is owned * by VIPS and must not be freed. * * VIPS tracks the history of each image, that is, the sequence of operations * that generated that image. Applications built on VIPS need to call * vips_image_history_printf() for each action they perform, setting the * command-line equivalent for the action. * * See also: vips_image_history_printf(). * * Returns: (transfer none): The history of @image as a C string. Do not free! */ const char * vips_image_get_history( VipsImage *image ) { if( !image->Hist ) image->Hist = vips__gslist_gvalue_get( image->history_list ); return( image->Hist ? image->Hist : "" ); } libvips-8.9.1/libvips/iofuncs/image.c000066400000000000000000003027421361153320700175560ustar00rootroot00000000000000/* vips image class * * 4/2/11 * - hacked up from various places * 6/6/13 * - vips_image_write() didn't ref non-partial sources * 18/4/15 * - add vips_image_copy_memory() * 25/11/15 * - add vips_image_new_from_memory_copy() * 10/6/16 * - vips_image_write() does not ref input for non-partial images * 29/10/16 * - add vips_image_hasalpha() * 11/10/17 * - more severing for vips_image_write() * 3/4/18 * - better rules for hasalpha * 9/10/18 * - fix up vips_image_dump(), it was still using ints not enums * 10/12/19 * - add vips_image_new_from_source() / vips_image_write_to_target() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include /** * SECTION: image * @short_description: the VIPS image class * @stability: Stable * @see_also: header * VipsRegion * generate * VipsOperation * @include: vips/vips.h * * The image class and associated types and macros. * * Images can be created from formatted files on disc, from C-style arrays on * disc, from formatted areas of memory, or from C-style arrays in memory. See * vips_image_new_from_file() and friends. * Creating an image is fast. VIPS reads just enough of * the image to be able to get the various properties, such as width in * pixels. It delays reading any pixels until they are really needed. * * Once you have an image, you can get properties from it in the usual way. * You can use projection functions, like vips_image_get_width() or * g_object_get(), to get %GObject properties. * * VIPS images are three-dimensional arrays, the dimensions being width, * height and bands. Each dimension can be up to 2 ** 31 pixels (or band * elements). An image has a format, meaning the machine number type used * to represent each value. VIPS supports 10 formats, from 8-bit unsigned * integer up to 128-bit double complex, see vips_image_get_format(). * * In VIPS, images are uninterpreted arrays, meaning that from the point of * view of most operations, they are just large collections of numbers. * There's no difference between an RGBA (RGB with alpha) image and a CMYK * image, for example, they are both just four-band images. It's up to the * user of the library to pass the right sort of image to each operation. * * To take an example, VIPS has vips_Lab2XYZ(), an operation to transform * an image from CIE LAB colour space to CIE XYZ space. It assumes the * first three bands represent pixels in LAB colour space and returns an * image where the first three bands are transformed to XYZ and any * remaining bands are just copied. Pass it a RGB image by mistake and * you'll just get nonsense. * * VIPS has a feature to help (a little) with this: it sets a * #VipsInterpretation hint for each image (see * vips_image_get_interpretation()); a hint which says how pixels should * be interpreted. For example, vips_Lab2XYZ() will set the * interpretation of the output image to #VIPS_INTERPRETATION_XYZ. A * few utility operations will also use interpretation as a guide. For * example, you can give vips_colourspace() an input image and a desired * colourspace and it will use the input's interpretation hint to apply * the best sequence of colourspace transforms to get to the desired space. * * Use things like vips_invert() to manipulate your images. When you are done, * you can write images to disc files (with vips_image_write_to_file()), * to formatted memory buffers (with vips_image_write_to_buffer()) and to * C-style memory arrays (with vips_image_write_to_memory(). * * You can also write images to other images. Create, for example, a temporary * disc image with vips_image_new_temp_file(), then write your image to that * with vips_image_write(). You can create several other types of image and * write to them, see vips_image_new_memory(), for example. * * See operation for an introduction to * running operations on images, see header for getting and setting image * metadata. See object for a discussion of * the lower levels. */ /** * VIPS_MAGIC_INTEL: * * The first four bytes of a VIPS file in Intel byte ordering. */ /** * VIPS_MAGIC_SPARC: * * The first four bytes of a VIPS file in SPARC byte ordering. */ /** * VipsAccess: * @VIPS_ACCESS_RANDOM: can read anywhere * @VIPS_ACCESS_SEQUENTIAL: top-to-bottom reading only, but with a small buffer * * The type of access an operation has to supply. See vips_tilecache() * and #VipsForeign. * * @VIPS_ACCESS_RANDOM means requests can come in any order. * * @VIPS_ACCESS_SEQUENTIAL means requests will be top-to-bottom, but with some * amount of buffering behind the read point for small non-local accesses. */ /** * VipsDemandStyle: * @VIPS_DEMAND_STYLE_SMALLTILE: demand in small (typically 64x64 pixel) tiles * @VIPS_DEMAND_STYLE_FATSTRIP: demand in fat (typically 10 pixel high) strips * @VIPS_DEMAND_STYLE_THINSTRIP: demand in thin (typically 1 pixel high) strips * @VIPS_DEMAND_STYLE_ANY: demand geometry does not matter * * See vips_image_pipelinev(). Operations can hint to the VIPS image IO * system about the kind of demand geometry they prefer. * * These demand styles are given below in order of increasing * restrictiveness. When demanding output from a pipeline, * vips_image_generate() * will use the most restrictive of the styles requested by the operations * in the pipeline. * * #VIPS_DEMAND_STYLE_THINSTRIP --- This operation would like to output strips * the width of the image and a few pels high. This is option suitable for * point-to-point operations, such as those in the arithmetic package. * * This option is only efficient for cases where each output pel depends * upon the pel in the corresponding position in the input image. * * #VIPS_DEMAND_STYLE_FATSTRIP --- This operation would like to output strips * the width of the image and as high as possible. This option is suitable * for area operations which do not violently transform coordinates, such * as vips_conv(). * * #VIPS_DEMAND_STYLE_SMALLTILE --- This is the most general demand format. * Output is demanded in small (around 100x100 pel) sections. This style works * reasonably efficiently, even for bizzare operations like 45 degree rotate. * * #VIPS_DEMAND_STYLE_ANY --- This image is not being demand-read from a disc * file (even indirectly) so any demand style is OK. It's used for things like * vips_black() where the pixels are calculated. * * See also: vips_image_pipelinev(). */ /** * VipsInterpretation: * @VIPS_INTERPRETATION_MULTIBAND: generic many-band image * @VIPS_INTERPRETATION_B_W: some kind of single-band image * @VIPS_INTERPRETATION_HISTOGRAM: a 1D image, eg. histogram or lookup table * @VIPS_INTERPRETATION_FOURIER: image is in fourier space * @VIPS_INTERPRETATION_XYZ: the first three bands are CIE XYZ * @VIPS_INTERPRETATION_LAB: pixels are in CIE Lab space * @VIPS_INTERPRETATION_CMYK: the first four bands are in CMYK space * @VIPS_INTERPRETATION_LABQ: implies #VIPS_CODING_LABQ * @VIPS_INTERPRETATION_RGB: generic RGB space * @VIPS_INTERPRETATION_CMC: a uniform colourspace based on CMC(1:1) * @VIPS_INTERPRETATION_LCH: pixels are in CIE LCh space * @VIPS_INTERPRETATION_LABS: CIE LAB coded as three signed 16-bit values * @VIPS_INTERPRETATION_sRGB: pixels are sRGB * @VIPS_INTERPRETATION_HSV: pixels are HSV * @VIPS_INTERPRETATION_scRGB: pixels are scRGB * @VIPS_INTERPRETATION_YXY: pixels are CIE Yxy * @VIPS_INTERPRETATION_RGB16: generic 16-bit RGB * @VIPS_INTERPRETATION_GREY16: generic 16-bit mono * @VIPS_INTERPRETATION_MATRIX: a matrix * * How the values in an image should be interpreted. For example, a * three-band float image of type #VIPS_INTERPRETATION_LAB should have its * pixels interpreted as coordinates in CIE Lab space. * * RGB and sRGB are treated in the same way. Use the colourspace functions if * you want some other behaviour. * * The gaps in numbering are historical and must be maintained. Allocate * new numbers from the end. */ /** * VipsBandFormat: * @VIPS_FORMAT_NOTSET: invalid setting * @VIPS_FORMAT_UCHAR: unsigned char format * @VIPS_FORMAT_CHAR: char format * @VIPS_FORMAT_USHORT: unsigned short format * @VIPS_FORMAT_SHORT: short format * @VIPS_FORMAT_UINT: unsigned int format * @VIPS_FORMAT_INT: int format * @VIPS_FORMAT_FLOAT: float format * @VIPS_FORMAT_COMPLEX: complex (two floats) format * @VIPS_FORMAT_DOUBLE: double float format * @VIPS_FORMAT_DPCOMPLEX: double complex (two double) format * * The format used for each band element. * * Each corresponds to a native C type for the current machine. For example, * #VIPS_FORMAT_USHORT is unsigned short. */ /** * VipsCoding: * @VIPS_CODING_NONE: pixels are not coded * @VIPS_CODING_LABQ: pixels encode 3 float CIELAB values as 4 uchar * @VIPS_CODING_RAD: pixels encode 3 float RGB as 4 uchar (Radiance coding) * * How pixels are coded. * * Normally, pixels are uncoded and can be manipulated as you would expect. * However some file formats code pixels for compression, and sometimes it's * useful to be able to manipulate images in the coded format. * * The gaps in the numbering are historical and must be maintained. Allocate * new numbers from the end. */ /** * VipsProgress: * @run: Time we have been running * @eta: Estimated seconds of computation left * @tpels: Number of pels we expect to calculate * @npels: Number of pels calculated so far * @percent: Percent complete * @start: Start time * * A structure available to eval callbacks giving information on evaluation * progress. See #VipsImage::eval. */ /** * VipsImage: * * An image. These can represent an image on disc, a memory buffer, an image * in the process of being written to disc or a partially evaluated image * in memory. */ /** * VIPS_IMAGE_SIZEOF_ELEMENT: * @I: a #VipsImage * * Returns: sizeof() a band element. */ /** * VIPS_IMAGE_SIZEOF_PEL: * @I: a #VipsImage * * Returns: sizeof() a pixel. */ /** * VIPS_IMAGE_SIZEOF_LINE: * @I: a #VipsImage * * Returns: sizeof() a scanline of pixels. */ /** * VIPS_IMAGE_N_ELEMENTS: * @I: a #VipsImage * * Returns: The number of band elements in a scanline. */ /** * VIPS_IMAGE_N_PELS: * @I: a #VipsImage * * Returns: The number of pels in an image. A 64-bit unsigned int. */ /** * VIPS_IMAGE_ADDR: * @I: a #VipsImage * @X: x coordinate * @Y: y coordinate * * This macro returns a pointer to a pixel in an image, cast to a #VipsPel *. * It only works for * images which are fully available in memory, so memory buffers and small * mapped images only. * * If VIPS_DEBUG is defined, you get a version that checks bounds for you. * * See also: vips_image_wio_input(), vips_image_inplace(), VIPS_REGION_ADDR(). * * Returns: The address of pixel (@X,@Y) in @I. */ /** * VIPS_MATRIX: * @I: a #VipsImage * @X: x coordinate * @Y: y coordinate * * This macro returns a pointer to a pixel in an image, cast to a double*. The * image must have a single band, be #VIPS_FORMAT_DOUBLE and be * fully available in memory, so memory buffers and small * mapped images only. * * If VIPS_DEBUG is defined, you get a version that checks bounds and image * type for you. * * See also: vips_image_wio_input(), vips_image_inplace(), vips_check_matrix(). * * Returns: The address of pixel (@X,@Y) in @I. */ /* Our signals. */ enum { SIG_PREEVAL, SIG_EVAL, SIG_POSTEVAL, SIG_WRITTEN, SIG_INVALIDATE, SIG_MINIMISE, SIG_LAST }; /* Progress feedback. Only really useful for testing, tbh. */ int vips__progress = 0; /* A string giving the image size (in bytes of uncompressed image) above which * we decompress to disc on open. Can be eg. "12m" for 12 megabytes. */ char *vips__disc_threshold = NULL; static guint vips_image_signals[SIG_LAST] = { 0 }; G_DEFINE_TYPE( VipsImage, vips_image, VIPS_TYPE_OBJECT ); /** * vips_progress_set: * @progress: %TRUE to enable progress messages * * If set, vips will print messages about the progress of computation to * stdout. This can also be enabled with the --vips-progress option, or by * setting the environment variable VIPS_PROGRESS. */ void vips_progress_set( gboolean progress ) { vips__progress = progress; } static void vips_image_delete( VipsImage *image ) { if( image->delete_on_close ) { g_assert( image->delete_on_close_filename ); VIPS_DEBUG_MSG( "vips_image_delete: removing temp %s\n", image->delete_on_close_filename ); g_unlink( image->delete_on_close_filename ); VIPS_FREE( image->delete_on_close_filename ); image->delete_on_close = FALSE; } } static void vips_image_finalize( GObject *gobject ) { VipsImage *image = VIPS_IMAGE( gobject ); VIPS_DEBUG_MSG( "vips_image_finalize: %p\n", gobject ); /* Should be no regions defined on the image, since they all hold a * ref to their host image. */ g_assert( !image->regions ); /* Therefore there should be no windows. */ g_assert( !image->windows ); /* Junk generate functions. */ image->start_fn = NULL; image->generate_fn = NULL; image->stop_fn = NULL; image->client1 = NULL; image->client2 = NULL; /* No more upstream/downstream links. */ vips__link_break_all( image ); if( image->time ) { VIPS_FREEF( g_timer_destroy, image->time->start ); VIPS_FREE( image->time ); } /* Free attached memory. */ if( image->data ) { if( image->dtype == VIPS_IMAGE_SETBUF ) { VIPS_DEBUG_MSG( "vips_image_finalize: " "freeing buffer\n" ); vips_tracked_free( image->data ); image->dtype = VIPS_IMAGE_NONE; } image->data = NULL; } /* Delete associated files. */ vips_image_delete( image ); VIPS_FREEF( vips_g_mutex_free, image->sslock ); VIPS_FREE( image->Hist ); VIPS_FREEF( vips__gslist_gvalue_free, image->history_list ); vips__meta_destroy( image ); G_OBJECT_CLASS( vips_image_parent_class )->finalize( gobject ); } static void vips_image_dispose( GObject *gobject ) { VipsImage *image = VIPS_IMAGE( gobject ); VIPS_DEBUG_MSG( "vips_image_dispose: %p\n", gobject ); #ifdef DEBUG_LEAK { VipsImagePixels *pixels = g_object_get_qdata( G_OBJECT( image ), vips__image_pixels_quark ); if( pixels && pixels->tpels ) { int compute_percent = 100.0 * pixels->npels / pixels->tpels; if( compute_percent > 100 ) printf( "vips_image_dispose: %s %s computed %d%%\n", image->filename, pixels->nickname, compute_percent ); } } #endif /*DEBUG_LEAK*/ vips_object_preclose( VIPS_OBJECT( gobject ) ); /* We have to junk the fd in dispose, since we run this for rewind and * we must close and reopen the file when we switch from write to * read. */ /* Any file mapping? */ if( image->baseaddr ) { /* MMAP file. */ VIPS_DEBUG_MSG( "vips_image_dispose: unmapping file\n" ); vips__munmap( image->baseaddr, image->length ); image->baseaddr = NULL; image->length = 0; /* This must have been a pointer to the mmap region, rather * than a setbuf. */ image->data = NULL; } /* Is there a file descriptor? */ if( image->fd != -1 ) { VIPS_DEBUG_MSG( "vips_image_dispose: closing output file\n" ); if( vips_tracked_close( image->fd ) == -1 ) vips_error( "VipsImage", "%s", _( "unable to close fd" ) ); image->fd = -1; } G_OBJECT_CLASS( vips_image_parent_class )->dispose( gobject ); } static VipsObject * vips_image_new_from_file_object( const char *string ) { VipsImage *image; vips_check_init(); /* We mustn't _build() the object here, so we can't just call * vips_image_new_from_file(). */ image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", string, "mode", "r", NULL ); return( VIPS_OBJECT( image ) ); } static void vips_image_to_string( VipsObject *object, VipsBuf *buf ) { VipsImage *image = VIPS_IMAGE( object ); vips_buf_appends( buf, image->filename ); } static int vips_image_write_object( VipsObject *object, const char *string ) { return( vips_image_write_to_file( VIPS_IMAGE( object ), string, NULL ) ); } static void * print_field_fn( VipsImage *image, const char *field, GValue *value, void *a ) { VipsBuf *buf = (VipsBuf *) a; vips_buf_appendf( buf, "%s: ", field ); vips_buf_appendgv( buf, value ); vips_buf_appendf( buf, "\n" ); return( NULL ); } static void vips_image_dump( VipsObject *object, VipsBuf *buf ) { VipsImage *image = VIPS_IMAGE( object ); vips_buf_appendf( buf, ngettext( "%dx%d %s, %d band, %s", "%dx%d %s, %d bands, %s", vips_image_get_bands( image ) ), vips_image_get_width( image ), vips_image_get_height( image ), vips_enum_nick( VIPS_TYPE_BAND_FORMAT, vips_image_get_format( image ) ), vips_image_get_bands( image ), vips_enum_nick( VIPS_TYPE_INTERPRETATION, vips_image_get_interpretation( image ) ) ); vips_buf_appendf( buf, ", %s", vips_enum_nick( VIPS_TYPE_IMAGE_TYPE, image->dtype ) ); VIPS_OBJECT_CLASS( vips_image_parent_class )->dump( object, buf ); vips_buf_appendf( buf, "\n" ); (void) vips_image_map( image, print_field_fn, (void *) buf ); vips_buf_appendf( buf, "Hist: %s", vips_image_get_history( image ) ); } static void vips_image_summary( VipsObject *object, VipsBuf *buf ) { VipsImage *image = VIPS_IMAGE( object ); const char *p; vips_buf_appendf( buf, "%dx%d", vips_image_get_width( image ), vips_image_get_height( image ) ); if( vips_image_get_coding( image ) == VIPS_CODING_NONE ) { vips_buf_appendf( buf, ngettext( " %s, %d band, %s", " %s, %d bands, %s", vips_image_get_bands( image ) ), vips_enum_nick( VIPS_TYPE_BAND_FORMAT, vips_image_get_format( image ) ), vips_image_get_bands( image ), vips_enum_nick( VIPS_TYPE_INTERPRETATION, vips_image_get_interpretation( image ) ) ); } else { vips_buf_appendf( buf, ", %s", vips_enum_nick( VIPS_TYPE_CODING, vips_image_get_coding( image ) ) ); } if( vips_image_get_typeof( image, VIPS_META_LOADER ) && !vips_image_get_string( image, VIPS_META_LOADER, &p ) ) vips_buf_appendf( buf, ", %s", p ); VIPS_OBJECT_CLASS( vips_image_parent_class )->summary( object, buf ); } static void * vips_image_sanity_upstream( VipsImage *up, VipsImage *down ) { if( !g_slist_find( up->downstream, down ) || !g_slist_find( down->upstream, up ) ) return( up ); return( NULL ); } static void * vips_image_sanity_downstream( VipsImage *down, VipsImage *up ) { return( vips_image_sanity_upstream( up, down ) ); } static void vips_image_sanity( VipsObject *object, VipsBuf *buf ) { VipsImage *image = VIPS_IMAGE( object ); /* All 0 means im has been inited but never used. */ if( image->Xsize != 0 || image->Ysize != 0 || image->Bands != 0 ) { if( image->Xsize <= 0 || image->Ysize <= 0 || image->Bands <= 0 ) vips_buf_appends( buf, "bad dimensions\n" ); if( image->BandFmt < -1 || image->BandFmt > VIPS_FORMAT_DPCOMPLEX || (image->Coding != -1 && image->Coding != VIPS_CODING_NONE && image->Coding != VIPS_CODING_LABQ && image->Coding != VIPS_CODING_RAD) || image->Type >= VIPS_INTERPRETATION_LAST || image->dtype > VIPS_IMAGE_PARTIAL || image->dhint > VIPS_DEMAND_STYLE_ANY ) vips_buf_appends( buf, "bad enum\n" ); if( image->Xres < 0 || image->Yres < 0 ) vips_buf_appends( buf, "bad resolution\n" ); } /* Must lock around inter-image links. */ g_mutex_lock( vips__global_lock ); if( vips_slist_map2( image->upstream, (VipsSListMap2Fn) vips_image_sanity_upstream, image, NULL ) ) vips_buf_appends( buf, "upstream broken\n" ); if( vips_slist_map2( image->downstream, (VipsSListMap2Fn) vips_image_sanity_downstream, image, NULL ) ) vips_buf_appends( buf, "downstream broken\n" ); g_mutex_unlock( vips__global_lock ); VIPS_OBJECT_CLASS( vips_image_parent_class )->sanity( object, buf ); } static void vips_image_rewind( VipsObject *object ) { VipsImage *image = VIPS_IMAGE( object ); char *filename; char *mode; /* This triggers a dispose. Copy filename/mode across the dispose. */ filename = g_strdup( vips_image_get_filename( image ) ); mode = g_strdup( vips_image_get_mode( image ) ); VIPS_OBJECT_CLASS( vips_image_parent_class )->rewind( object ); g_assert( image->filename == NULL ); g_assert( image->mode == NULL ); image->filename = filename; image->mode = mode; } /* Delayed save. */ /* From "written" callback: save to image->filename using VipsForeign. */ static void vips_image_save_cb( VipsImage *image, int *result ) { if( vips_foreign_save( image, image->filename, NULL ) ) *result = -1; } /* Progress feedback. */ static void vips_image_preeval_cb( VipsImage *image, VipsProgress *progress, int *last ) { int tile_width; int tile_height; int n_lines; *last = -1; vips_get_tile_size( image, &tile_width, &tile_height, &n_lines ); printf( _( "%s %s: %d x %d pixels, %d threads, %d x %d tiles, " "%d lines in buffer" ), g_get_prgname(), image->filename, image->Xsize, image->Ysize, vips_concurrency_get(), tile_width, tile_height, n_lines ); printf( "\n" ); } static void vips_image_eval_cb( VipsImage *image, VipsProgress *progress, int *last ) { if( progress->percent != *last ) { printf( _( "%s %s: %d%% complete" ), g_get_prgname(), image->filename, progress->percent ); printf( "\r" ); fflush( stdout ); *last = progress->percent; /* Needs DEBUG in region.c vips_region_dump_all(); */ } } static void vips_image_posteval_cb( VipsImage *image, VipsProgress *progress ) { /* Spaces at end help to erase the %complete message we overwrite. */ printf( _( "%s %s: done in %.3gs \n" ), g_get_prgname(), image->filename, g_timer_elapsed( progress->start, NULL ) ); } /* Attach progress feedback, if required. */ static void vips_image_add_progress( VipsImage *image ) { if( vips__progress || g_getenv( "VIPS_PROGRESS" ) || g_getenv( "IM_PROGRESS" ) ) { /* Keep the %complete we displayed last time here. */ int *last = VIPS_NEW( image, int ); g_signal_connect( image, "preeval", G_CALLBACK( vips_image_preeval_cb ), last ); g_signal_connect( image, "eval", G_CALLBACK( vips_image_eval_cb ), last ); g_signal_connect( image, "posteval", G_CALLBACK( vips_image_posteval_cb ), NULL ); vips_image_set_progress( image, TRUE ); } } /* We have to do a lot of work in _build() so we can work with the stuff in * /deprecated to support the vips7 API. We could get rid of most of this * stuff if we were vips8-only. */ static int vips_image_build( VipsObject *object ) { VipsImage *image = VIPS_IMAGE( object ); const char *filename = image->filename; const char *mode = image->mode; guint32 magic; guint64 sizeof_image; VIPS_DEBUG_MSG( "vips_image_build: %p\n", image ); if( VIPS_OBJECT_CLASS( vips_image_parent_class )->build( object ) ) return( -1 ); /* Parse the mode string. */ switch( mode[0] ) { case 'v': /* Used by 'r' for native open of vips, see below. Also by * vips_image_rewind_output(). */ if( vips_image_open_input( image ) ) return( -1 ); break; case 'r': if( (magic = vips__file_magic( filename )) ) { /* We may need to byteswap. */ guint32 us = vips_amiMSBfirst() ? VIPS_MAGIC_INTEL : VIPS_MAGIC_SPARC; if( magic == us ) { /* Native open. */ if( vips_image_open_input( image ) ) return( -1 ); } else { VipsImage *t; VipsImage *t2; /* Open the image in t, then byteswap to this * image. */ if( !(t = vips_image_new_mode( filename, "v" )) ) return( -1 ); if( vips_byteswap( t, &t2, NULL ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); image->dtype = VIPS_IMAGE_PARTIAL; if( vips_image_write( t2, image ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); } } else { VipsImage *t; if( mode[1] == 's' ) { if( vips_foreign_load( filename, &t, "access", VIPS_ACCESS_SEQUENTIAL, NULL ) ) return( -1 ); } else { if( vips_foreign_load( filename, &t, NULL ) ) return( -1 ); } image->dtype = VIPS_IMAGE_PARTIAL; if( vips_image_write( t, image ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); } break; case 'w': { const char *file_op; /* Make sure the vips saver is there ... strange things will * happen if this type is renamed or removed. */ g_assert( g_type_from_name( "VipsForeignSaveVips" ) ); if( !(file_op = vips_foreign_find_save( filename )) ) return( -1 ); /* If this is the vips saver, just save directly ourselves. * Otherwise save with VipsForeign when the image has been * written to. */ if( strcmp( file_op, "VipsForeignSaveVips" ) == 0 ) image->dtype = VIPS_IMAGE_OPENOUT; else { image->dtype = VIPS_IMAGE_PARTIAL; g_signal_connect( image, "written", G_CALLBACK( vips_image_save_cb ), NULL ); } } break; case 't': image->dtype = VIPS_IMAGE_SETBUF; image->dhint = VIPS_DEMAND_STYLE_ANY; break; case 'p': image->dtype = VIPS_IMAGE_PARTIAL; break; case 'a': if( (image->fd = vips__open_image_read( filename )) == -1 ) return( -1 ); image->dtype = VIPS_IMAGE_OPENIN; image->dhint = VIPS_DEMAND_STYLE_THINSTRIP; if( image->Bands == 1 ) image->Type = VIPS_INTERPRETATION_B_W; else if( image->Bands == 3 ) image->Type = VIPS_INTERPRETATION_sRGB; else image->Type = VIPS_INTERPRETATION_MULTIBAND; /* Read the real file length and check against what we think * the size should be. */ if( (image->file_length = vips_file_length( image->fd )) == -1 ) return( -1 ); /* Very common, so a special message. */ sizeof_image = VIPS_IMAGE_SIZEOF_IMAGE( image ) + image->sizeof_header; if( image->file_length < sizeof_image ) { vips_error( "VipsImage", _( "unable to open \"%s\", file too short" ), image->filename ); return( -1 ); } /* Just weird. Only print a warning for this, since we should * still be able to process it without coredumps. */ if( image->file_length > sizeof_image ) g_warning( _( "%s is longer than expected" ), image->filename ); break; case 'm': if( image->Bands == 1 ) image->Type = VIPS_INTERPRETATION_B_W; else if( image->Bands == 3 ) image->Type = VIPS_INTERPRETATION_sRGB; else image->Type = VIPS_INTERPRETATION_MULTIBAND; image->dtype = VIPS_IMAGE_SETBUF_FOREIGN; image->dhint = VIPS_DEMAND_STYLE_ANY; break; default: vips_error( "VipsImage", _( "bad mode \"%s\"" ), mode ); return( -1 ); } vips_image_add_progress( image ); return( 0 ); } static void * vips_image_real_invalidate_cb( VipsRegion *reg ) { vips_region_invalidate( reg ); return( NULL ); } static void vips_image_real_invalidate( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_real_invalidate: %p\n", image ); VIPS_GATE_START( "vips_image_real_invalidate: wait" ); g_mutex_lock( image->sslock ); VIPS_GATE_STOP( "vips_image_real_invalidate: wait" ); (void) vips_slist_map2( image->regions, (VipsSListMap2Fn) vips_image_real_invalidate_cb, NULL, NULL ); g_mutex_unlock( image->sslock ); } static void vips_image_real_minimise( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_real_minimise: %p\n", image ); } static void vips_image_real_written( VipsImage *image, int *result ) { VIPS_DEBUG_MSG( "vips_image_real_written: %p\n", image ); /* For vips image write, append the xml after the data. */ if( image->dtype == VIPS_IMAGE_OPENOUT && vips__writehist( image ) ) *result = -1; } static void vips_image_class_init( VipsImageClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_image_class_init:\n" ); /* We must have threads set up before we can process. */ vips_check_init(); gobject_class->finalize = vips_image_finalize; gobject_class->dispose = vips_image_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->new_from_string = vips_image_new_from_file_object; vobject_class->to_string = vips_image_to_string; vobject_class->output_needs_arg = TRUE; vobject_class->output_to_arg = vips_image_write_object; vobject_class->nickname = "image"; vobject_class->description = _( "image class" ); vobject_class->dump = vips_image_dump; vobject_class->summary = vips_image_summary; vobject_class->sanity = vips_image_sanity; vobject_class->rewind = vips_image_rewind; vobject_class->build = vips_image_build; class->invalidate = vips_image_real_invalidate; class->written = vips_image_real_written; class->minimise = vips_image_real_minimise; /* Create properties. */ /* It'd be good to have these as set once at construct time, but we * can't :-( * * For example, a "p" image might be made with vips_image_new() and * constructed, then passed to vips_copy() of whatever to be written to. * That operation will then need to set width/height etc. * * We can't set_once either, since vips_copy() etc. need to update * xoffset and friends on the way through. */ VIPS_ARG_INT( class, "width", 2, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Xsize ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 3, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Ysize ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "bands", 4, _( "Bands" ), _( "Number of bands in image" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Bands ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_ENUM( class, "format", 5, _( "Format" ), _( "Pixel format in image" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, BandFmt ), VIPS_TYPE_BAND_FORMAT, VIPS_FORMAT_UCHAR ); VIPS_ARG_ENUM( class, "coding", 6, _( "Coding" ), _( "Pixel coding" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Coding ), VIPS_TYPE_CODING, VIPS_CODING_NONE ); VIPS_ARG_ENUM( class, "interpretation", 7, _( "Interpretation" ), _( "Pixel interpretation" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Type ), VIPS_TYPE_INTERPRETATION, VIPS_INTERPRETATION_MULTIBAND ); VIPS_ARG_DOUBLE( class, "xres", 8, _( "Xres" ), _( "Horizontal resolution in pixels/mm" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Xres ), -0.0, 1000000, 0 ); VIPS_ARG_DOUBLE( class, "yres", 9, _( "Yres" ), _( "Vertical resolution in pixels/mm" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Yres ), -0.0, 1000000, 0 ); VIPS_ARG_INT( class, "xoffset", 10, _( "Xoffset" ), _( "Horizontal offset of origin" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Xoffset ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "yoffset", 11, _( "Yoffset" ), _( "Vertical offset of origin" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Yoffset ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_STRING( class, "filename", 12, _( "Filename" ), _( "Image filename" ), VIPS_ARGUMENT_SET_ONCE | VIPS_ARGUMENT_CONSTRUCT, G_STRUCT_OFFSET( VipsImage, filename ), NULL ); VIPS_ARG_STRING( class, "mode", 13, _( "Mode" ), _( "Open mode" ), VIPS_ARGUMENT_SET_ONCE | VIPS_ARGUMENT_CONSTRUCT, G_STRUCT_OFFSET( VipsImage, mode ), "p" ); VIPS_ARG_BOOL( class, "kill", 14, _( "Kill" ), _( "Block evaluation on this image" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, kill ), FALSE ); VIPS_ARG_ENUM( class, "demand", 15, _( "Demand style" ), _( "Preferred demand style for this image" ), VIPS_ARGUMENT_CONSTRUCT, G_STRUCT_OFFSET( VipsImage, dhint ), VIPS_TYPE_DEMAND_STYLE, VIPS_DEMAND_STYLE_SMALLTILE ); VIPS_ARG_UINT64( class, "sizeof_header", 16, _( "Size of header" ), _( "Offset in bytes from start of file" ), VIPS_ARGUMENT_SET_ONCE | VIPS_ARGUMENT_CONSTRUCT, G_STRUCT_OFFSET( VipsImage, sizeof_header ), 0, 1000000000, VIPS_SIZEOF_HEADER ); VIPS_ARG_POINTER( class, "foreign_buffer", 17, _( "Foreign buffer" ), _( "Pointer to foreign pixels" ), VIPS_ARGUMENT_SET_ONCE | VIPS_ARGUMENT_CONSTRUCT, G_STRUCT_OFFSET( VipsImage, data ) ); /* Create signals. */ /** * VipsImage::preeval: * @image: the image to be calculated * @progress: #VipsProgress for this image * * The ::preeval signal is emitted once before computation of @image * starts. It's a good place to set up evaluation feedback. * * Use vips_image_set_progress() to turn on progress reporting for an * image. */ vips_image_signals[SIG_PREEVAL] = g_signal_new( "preeval", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsImageClass, preeval ), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER ); /** * VipsImage::eval: * @image: the image being calculated * @progress: #VipsProgress for this image * * The ::eval signal is emitted once per work unit (typically a 128 x * 128 area of pixels) during image computation. * * You can use this signal to update user-interfaces with progress * feedback. Beware of updating too frequently: you will usually * need some throttling mechanism. * * Use vips_image_set_progress() to turn on progress reporting for an * image. */ vips_image_signals[SIG_EVAL] = g_signal_new( "eval", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsImageClass, eval ), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER ); /** * VipsImage::posteval: * @image: the image that was calculated * @progress: #VipsProgress for this image * * The ::posteval signal is emitted once at the end of the computation * of @image. It's a good place to shut down evaluation feedback. * * Use vips_image_set_progress() to turn on progress reporting for an * image. */ vips_image_signals[SIG_POSTEVAL] = g_signal_new( "posteval", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsImageClass, posteval ), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER ); /** * VipsImage::written: * @image: the image that was calculated * @result: set to non-zero to indicate error * * The ::written signal is emitted just after an image has been * written to. It is * used by vips to implement things like write to foreign file * formats. */ vips_image_signals[SIG_WRITTEN] = g_signal_new( "written", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET( VipsImageClass, written ), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER ); /** * VipsImage::invalidate: * @image: the image that has changed * * The ::invalidate signal is emitted when an image or one of it's * upstream data sources has been destructively modified. See * vips_image_invalidate_all(). */ vips_image_signals[SIG_INVALIDATE] = g_signal_new( "invalidate", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET( VipsImageClass, invalidate ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); /** * VipsImage::minimise: * @image: the image that is being minimised * * The ::minimise signal is emitted when an image has been asked to * minimise memory usage. All non-essential caches are dropped. * See * vips_image_minimise_all(). */ vips_image_signals[SIG_MINIMISE] = g_signal_new( "minimise", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET( VipsImageClass, minimise ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); } static void vips_image_init( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_init: %p\n", image ); /* Default to native order. */ image->magic = vips_amiMSBfirst() ? VIPS_MAGIC_SPARC : VIPS_MAGIC_INTEL; image->Xsize = 1; image->Ysize = 1; image->Bands = 1; image->Xres = 1.0; image->Yres = 1.0; image->fd = -1; /* since 0 is stdout */ image->sslock = vips_g_mutex_new(); image->sizeof_header = VIPS_SIZEOF_HEADER; image->mode = g_strdup( "p" ); #ifdef DEBUG_LEAK g_object_set_qdata_full( G_OBJECT( image ), vips__image_pixels_quark, g_new0( VipsImagePixels, 1 ), (GDestroyNotify) g_free ); #endif /*DEBUG_LEAK*/ } int vips_image_written( VipsImage *image ) { int result; VIPS_DEBUG_MSG( "vips_image_written: %p\n", image ); result = 0; g_signal_emit( image, vips_image_signals[SIG_WRITTEN], 0, &result ); return( result ); } void vips_image_invalidate( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_invalidate: %p\n", image ); g_signal_emit( image, vips_image_signals[SIG_INVALIDATE], 0 ); } static void * vips_image_invalidate_all_cb( VipsImage *image ) { vips_image_invalidate( image ); return( NULL ); } /** * vips_image_invalidate_all: (method) * @image: #VipsImage to invalidate * * Invalidate all pixel caches on @image and any downstream images, that * is, images which depend on this image. Additionally, all operations which * depend upon this image are dropped from the VIPS operation cache. * * You should call this function after * destructively modifying an image with something like vips_draw_circle(). * * The #VipsImage::invalidate signal is emitted for all invalidated images. * * See also: vips_region_invalidate(). */ void vips_image_invalidate_all( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_invalidate_all: %p\n", image ); (void) vips__link_map( image, FALSE, (VipsSListMap2Fn) vips_image_invalidate_all_cb, NULL, NULL ); } void vips_image_minimise( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_minimise: %p\n", image ); g_signal_emit( image, vips_image_signals[SIG_MINIMISE], 0 ); } static void * vips_image_minimise_all_cb( VipsImage *image ) { vips_image_minimise( image ); return( NULL ); } /** * vips_image_minimise_all: (method) * @image: #VipsImage to minimise * * Minimise memory use on this image and any upstream images, that is, images * which this image depends upon. This function is called automatically at the * end of a computation, but it might be useful to call at other times. * * The #VipsImage::minimise signal is emitted for all minimised images. */ void vips_image_minimise_all( VipsImage *image ) { (void) vips__link_map( image, TRUE, (VipsSListMap2Fn) vips_image_minimise_all_cb, NULL, NULL ); } /** * vips_image_is_sequential: (method) * @image: #VipsImage to minimise * * TRUE if any of the images upstream from @image were opened in sequential * mode. Some operations change behaviour slightly in sequential mode to * optimize memory behaviour. * * Returns: %TRUE if @image is in sequential mode. */ gboolean vips_image_is_sequential( VipsImage *image ) { return( vips_image_get_typeof( image, VIPS_META_SEQUENTIAL ) ); } /* Attach a new time struct, if necessary, and reset it. */ static int vips_progress_add( VipsImage *image ) { VipsProgress *progress; VIPS_DEBUG_MSG( "vips_progress_add: %p\n", image ); if( !(progress = image->time) ) { if( !(image->time = VIPS_NEW( NULL, VipsProgress )) ) return( -1 ); progress = image->time; progress->im = image; progress->start = NULL; } if( !progress->start ) progress->start = g_timer_new(); g_timer_start( progress->start ); progress->run = 0; progress->eta = 0; progress->tpels = VIPS_IMAGE_N_PELS( image ); progress->npels = 0; progress->percent = 0; return( 0 ); } static void vips_progress_update( VipsProgress *progress, guint64 processed ) { float prop; VIPS_DEBUG_MSG( "vips_progress_update: %p\n", progress ); g_assert( progress ); progress->run = g_timer_elapsed( progress->start, NULL ); progress->npels = processed; prop = (float) progress->npels / (float) progress->tpels; progress->percent = 100 * prop; /* Don't estimate eta until we are 10% in. */ if( prop > 0.1 ) progress->eta = (1.0 / prop) * progress->run - progress->run; } void vips_image_preeval( VipsImage *image ) { if( image->progress_signal ) { VIPS_DEBUG_MSG( "vips_image_preeval: %p\n", image ); g_assert( vips_object_sanity( VIPS_OBJECT( image->progress_signal ) ) ); (void) vips_progress_add( image ); /* For vips7 compat, we also have to make sure ->time on the * image that was originally marked with * vips_image_set_progress() is valid. */ (void) vips_progress_add( image->progress_signal ); if( !vips_image_get_typeof( image, "hide-progress" ) ) g_signal_emit( image->progress_signal, vips_image_signals[SIG_PREEVAL], 0, image->time ); } } /* Updated the number of pixels that have been processed. */ void vips_image_eval( VipsImage *image, guint64 processed ) { if( image->progress_signal && image->time ) { VIPS_DEBUG_MSG( "vips_image_eval: %p\n", image ); g_assert( vips_object_sanity( VIPS_OBJECT( image->progress_signal ) ) ); vips_progress_update( image->time, processed ); /* For vips7 compat, update the ->time on the signalling image * too, even though it may have a different width/height to * the image we are actually generating. */ if( image->progress_signal->time != image->time ) vips_progress_update( image->progress_signal->time, processed ); if( !vips_image_get_typeof( image, "hide-progress" ) ) g_signal_emit( image->progress_signal, vips_image_signals[SIG_EVAL], 0, image->time ); } } void vips_image_posteval( VipsImage *image ) { if( image->progress_signal && image->progress_signal->time ) { VIPS_DEBUG_MSG( "vips_image_posteval: %p\n", image ); g_assert( vips_object_sanity( VIPS_OBJECT( image->progress_signal ) ) ); if( !vips_image_get_typeof( image, "hide-progress" ) ) g_signal_emit( image->progress_signal, vips_image_signals[SIG_POSTEVAL], 0, image->time ); } } /** * vips_image_set_progress: (method) * @image: image to signal progress on * @progress: turn progress reporting on or off * * vips signals evaluation progress via the #VipsImage::preeval, * #VipsImage::eval and #VipsImage::posteval * signals. Progress is signalled on the most-downstream image for which * vips_image_set_progress() was called. */ void vips_image_set_progress( VipsImage *image, gboolean progress ) { if( progress && !image->progress_signal ) { VIPS_DEBUG_MSG( "vips_image_set_progress: %p %s\n", image, image->filename ); image->progress_signal = image; } else image->progress_signal = NULL; } /** * vips_image_iskilled: (method) * @image: image to test * * If @image has been killed (see vips_image_set_kill()), set an error message, * clear the #VipsImage.kill flag and return %TRUE. Otherwise return %FALSE. * * Handy for loops which need to run sets of threads which can fail. * * See also: vips_image_set_kill(). * * Returns: %TRUE if @image has been killed. */ gboolean vips_image_iskilled( VipsImage *image ) { gboolean kill; kill = image->kill; /* Has kill been set for this image? If yes, abort evaluation. */ if( image->kill ) { VIPS_DEBUG_MSG( "vips_image_iskilled: %s (%p) killed\n", image->filename, image ); vips_error( "VipsImage", _( "killed for image \"%s\"" ), image->filename ); /* We've picked up the kill message, it's now our caller's * responsibility to pass the message up the chain. */ vips_image_set_kill( image, FALSE ); } return( kill ); } /** * vips_image_set_kill: (method) * @image: image to test * @kill: the kill state * * Set the #VipsImage.kill flag on an image. Handy for stopping sets of * threads. * * See also: vips_image_iskilled(). */ void vips_image_set_kill( VipsImage *image, gboolean kill ) { if( image->kill != kill ) VIPS_DEBUG_MSG( "vips_image_set_kill: %s (%p) %d\n", image->filename, image, kill ); image->kill = kill; } /* Fills the given buffer with a temporary filename. * Assuming that "int" might be 64 Bit wide a buffer size of 26 suffices. */ void vips_image_temp_name( char *name, int size ) { static int global_serial = 0; /* Old glibs named this differently. */ int serial = #if GLIB_CHECK_VERSION( 2, 30, 0 ) g_atomic_int_add( &global_serial, 1 ); #else g_atomic_int_exchange_and_add( &global_serial, 1 ); #endif vips_snprintf( name, size, "temp-%d", serial ); } /** * vips_image_new: (constructor) * * vips_image_new() creates a new, empty #VipsImage. * If you write to one of these images, vips will just attach some callbacks, * no pixels will be generated. * * Write pixels to an image with vips_image_generate() or * vips_image_write_line(). Write a whole image to another image with * vips_image_write(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new( void ) { VipsImage *image; char filename[26]; vips_check_init(); vips_image_temp_name( filename, sizeof( filename ) ); image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", filename, "mode", "p", NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { VIPS_UNREF( image ); return( NULL ); } return( image ); } VipsImage * vips_image_new_mode( const char *filename, const char *mode ) { VipsImage *image; g_assert( filename ); g_assert( mode ); vips_check_init(); image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", filename, "mode", mode, NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { VIPS_UNREF( image ); return( NULL ); } return( image ); } /** * vips_image_new_memory: (constructor) * * vips_image_new_memory() creates a new #VipsImage which, when written to, will * create a memory image. * * See also: vips_image_new(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_memory( void ) { char filename[26]; vips_image_temp_name( filename, sizeof( filename ) ); return( vips_image_new_mode( filename, "t" ) ); } /** * vips_image_memory: (constructor) * * A renamed vips_image_new_memory() ... Some gobject binding systems do not * like more than one _new() method. * * See also: vips_image_new_memory(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_memory( void ) { return( vips_image_new_memory() ); } /** * vips_filename_get_filename: * @vips_filename: a filename including a set of options * * Given a vips filename like "fred.jpg[Q=90]", return a new string of * just the filename part, "fred.jpg" in this case. * * Useful for language bindings. * * See also: vips_filename_get_options(). * * Returns: transfer full: just the filename component. */ char * vips_filename_get_filename( const char *vips_filename ) { char filename[VIPS_PATH_MAX]; char options[VIPS_PATH_MAX]; vips__filename_split8( vips_filename, filename, options ); return( g_strdup( filename ) ); } /** * vips_filename_get_options: * @vips_filename: a filename including a set of options * * Given a vips filename like "fred.jpg[Q=90]", return a new string of * just the options part, "[Q=90]" in this case. * * Useful for language bindings. * * See also: vips_filename_get_filename(). * * Returns: transfer full: just the options component. */ char * vips_filename_get_options( const char *vips_filename ) { char filename[VIPS_PATH_MAX]; char options[VIPS_PATH_MAX]; vips__filename_split8( vips_filename, filename, options ); return( g_strdup( options ) ); } /** * vips_image_new_from_file: (constructor) * @name: file to open * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @access: hint #VipsAccess mode to loader * * @memory: force load via memory * * vips_image_new_from_file() opens @name for reading. It can load files * in many image formats, including VIPS, TIFF, PNG, JPEG, FITS, Matlab, * OpenEXR, CSV, WebP, Radiance, RAW, PPM and others. * * Load options may be appended to @filename as "[name=value,...]" or given as * a NULL-terminated list of name-value pairs at the end of the arguments. * Options given in the function call override options given in the filename. * Many loaders add extra options, see vips_jpegload(), for example. * * vips_image_new_from_file() always returns immediately with the header * fields filled in. No pixels are actually read until you first access them. * * @access lets you set a #VipsAccess hint giving the expected access pattern * for this file. * #VIPS_ACCESS_RANDOM means you can fetch pixels randomly from the image. * This is the default mode. #VIPS_ACCESS_SEQUENTIAL means you will read the * whole image exactly once, top-to-bottom. In this mode, vips can avoid * converting the whole image in one go, for a large memory saving. You are * allowed to make small non-local references, so area operations like * convolution will work. * * In #VIPS_ACCESS_RANDOM mode, small images are decompressed to memory and * then processed from there. Large images are decompressed to temporary * random-access files on disc and then processed from there. * * Set @memory to %TRUE to force loading via memory. The default is to load * large random access images via temporary disc files. See * vips_image_new_temp_file() for an * explanation of how VIPS selects a location for the temporary file. * * The disc threshold can be set with the "--vips-disc-threshold" * command-line argument, or the `VIPS_DISC_THRESHOLD` environment variable. * The value is a simple integer, but can take a unit postfix of "k", * "m" or "g" to indicate kilobytes, megabytes or gigabytes. * The default threshold is 100 MB. * * For example: * * |[ * VipsImage *image = vips_image_new_from_file ("fred.tif", * "page", 12, * NULL); * ]| * * Will open "fred.tif", reading page 12. * * |[ * VipsImage *image = vips_image_new_from_file ("fred.jpg[shrink=2]", * NULL); * ]| * * Will open "fred.jpg", downsampling by a factor of two. * * Use vips_foreign_find_load() or vips_foreign_is_a() to see what format a * file is in and therefore what options are available. If you need more * control over the loading process, you can call loaders directly, see * vips_jpegload(), for example. * * See also: vips_foreign_find_load(), vips_foreign_is_a(), * vips_image_write_to_file(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_file( const char *name, ... ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; va_list ap; int result; VipsImage *out; vips_check_init(); vips__filename_split8( name, filename, option_string ); if( !(operation_name = vips_foreign_find_load( filename )) ) return( NULL ); va_start( ap, name ); result = vips_call_split_option_string( operation_name, option_string, ap, filename, &out ); va_end( ap ); if( result ) return( NULL ); return( out ); } /** * vips_image_new_from_file_RW: (constructor) * @filename: filename to open * * Opens the named file for simultaneous reading and writing. This will only * work for VIPS files in a format native to your machine. It is only for * paintbox-type applications. * * See also: vips_draw_circle(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_file_RW( const char *filename ) { return( vips_image_new_mode( filename, "rw" ) ); } /** * vips_image_new_from_file_raw: (constructor) * @filename: filename to open * @xsize: image width * @ysize: image height * @bands: image bands (or bytes per pixel) * @offset: bytes to skip at start of file * * This function maps the named file and returns a #VipsImage you can use to * read it. * * It returns an 8-bit image with @bands bands. If the image is not 8-bit, use * vips_copy() to transform the descriptor after loading it. * * See also: vips_copy(), vips_rawload(), vips_image_new_from_file(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_file_raw( const char *filename, int xsize, int ysize, int bands, guint64 offset ) { VipsImage *image; vips_check_init(); image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", filename, "mode", "a", "width", xsize, "height", ysize, "bands", bands, "sizeof_header", offset, NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { VIPS_UNREF( image ); return( NULL ); } return( image ); } /** * vips_image_new_from_memory: (constructor) * @data: (array length=size) (element-type guint8) (transfer none): start of memory area * @size: (type gsize): length of memory area * @width: image width * @height: image height * @bands: image bands (or bytes per pixel) * @format: image format * * This function wraps a #VipsImage around a memory area. The memory area * must be a simple array, for example RGBRGBRGB, left-to-right, * top-to-bottom. Use vips_image_new_from_buffer() to load an area of memory * containing an image in a format. * * VIPS does not take * responsibility for the area of memory, it's up to you to make sure it's * freed when the image is closed. See for example #VipsObject::close. * * Because VIPS is "borrowing" @data from the caller, this function is * extremely dangerous. Unless you are very careful, you will get crashes or * memory corruption. Use vips_image_new_from_memory_copy() instead if you are * at all unsure. * * Use vips_copy() to set other image properties. * * See also: vips_image_new(), vips_image_write_to_memory(), * vips_image_new_from_memory_copy(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_memory( const void *data, size_t size, int width, int height, int bands, VipsBandFormat format ) { VipsImage *image; char filename[26]; vips_check_init(); vips_image_temp_name( filename, sizeof( filename ) ); image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", filename, "mode", "m", "foreign_buffer", data, "width", width, "height", height, "bands", bands, "format", format, NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { VIPS_UNREF( image ); return( NULL ); } if( size < VIPS_IMAGE_SIZEOF_IMAGE( image ) ) { vips_error( "VipsImage", _( "memory area too small --- " "should be %" G_GINT64_FORMAT " bytes, " "you passed %zd" ), VIPS_IMAGE_SIZEOF_IMAGE( image ), size ); VIPS_UNREF( image ); return( NULL ); } return( image ); } static void vips_image_new_from_memory_copy_cb( VipsImage *image, void *data_copy ) { vips_tracked_free( data_copy ); } /** * vips_image_new_from_memory_copy: (constructor) * @data: (array length=size) (element-type guint8) (transfer none): start of memory area * @size: (type gsize): length of memory area * @width: image width * @height: image height * @bands: image bands (or bytes per pixel) * @format: image format * * Like vips_image_new_from_memory(), but VIPS will make a copy of the memory * area. This means more memory use and an extra copy operation, but is much * simpler and safer. * * See also: vips_image_new_from_memory(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_memory_copy( const void *data, size_t size, int width, int height, int bands, VipsBandFormat format ) { void *data_copy; VipsImage *image; vips_check_init(); if( !(data_copy = vips_tracked_malloc( size )) ) return( NULL ); memcpy( data_copy, data, size ); if( !(image = vips_image_new_from_memory( data_copy, size, width, height, bands, format )) ) { vips_tracked_free( data_copy ); return( NULL ); } g_signal_connect( image, "close", G_CALLBACK( vips_image_new_from_memory_copy_cb ), data_copy ); return( image ); } /** * vips_image_new_from_buffer: (constructor) * @buf: (array length=len) (element-type guint8) (transfer none): image data * @len: (type gsize): length of memory buffer * @option_string: set of extra options as a string * @...: %NULL-terminated list of optional named arguments * * Loads an image from the formatted area of memory @buf, @len using the * loader recommended by vips_foreign_find_load_buffer(). * To load an unformatted area of memory, use * vips_image_new_from_memory(). * * VIPS does not take * responsibility for the area of memory, it's up to you to make sure it's * freed when the image is closed. See for example #VipsObject::close. * * Load options may be given in @option_string as "[name=value,...]" or given as * a NULL-terminated list of name-value pairs at the end of the arguments. * Options given in the function call override options given in the filename. * * See also: vips_image_write_to_buffer(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_buffer( const void *buf, size_t len, const char *option_string, ... ) { const char *operation_name; va_list ap; int result; VipsImage *out; VipsBlob *blob; vips_check_init(); if( !(operation_name = vips_foreign_find_load_buffer( buf, len )) ) return( NULL ); /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, option_string ); result = vips_call_split_option_string( operation_name, option_string, ap, blob, &out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); if( result ) return( NULL ); return( out ); } /** * vips_image_new_from_source: (constructor) * @source: (transfer none): source to fetch image from * @option_string: set of extra options as a string * @...: %NULL-terminated list of optional named arguments * * Loads an image from the formatted source @input, * loader recommended by vips_foreign_find_load_source(). * * Load options may be given in @option_string as "[name=value,...]" or given as * a NULL-terminated list of name-value pairs at the end of the arguments. * Options given in the function call override options given in the string. * * See also: vips_image_write_to_target(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_source( VipsSource *source, const char *option_string, ... ) { const char *filename = vips_connection_filename( VIPS_CONNECTION( source ) ); const char *operation_name; va_list ap; int result; VipsImage *out; vips_check_init(); vips_error_freeze(); operation_name = vips_foreign_find_load_source( source ); vips_error_thaw(); if( operation_name ) { va_start( ap, option_string ); result = vips_call_split_option_string( operation_name, option_string, ap, source, &out ); va_end( ap ); } else if( filename ) { /* Try with the old file-based loaders. */ if( !(operation_name = vips_foreign_find_load( filename )) ) return( NULL ); va_start( ap, option_string ); result = vips_call_split_option_string( operation_name, option_string, ap, filename, &out ); va_end( ap ); } else if( vips_source_is_mappable( source ) ) { /* Try with the old buffer-based loaders. */ VipsBlob *blob; const void *buf; size_t len; if( !(blob = vips_source_map_blob( source )) ) return( NULL ); buf = vips_blob_get( blob, &len ); if( !(operation_name = vips_foreign_find_load_buffer( buf, len )) ) { vips_area_unref( VIPS_AREA( blob ) ); return( NULL ); } va_start( ap, option_string ); result = vips_call_split_option_string( operation_name, option_string, ap, blob, &out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); } else { vips_error( "VipsImage", "%s", _( "unable to load source" ) ); result = -1; } if( result ) return( NULL ); return( out ); } /** * vips_image_new_matrix: (constructor) * @width: image width * @height: image height * * This convenience function makes an image which is a matrix: a one-band * #VIPS_FORMAT_DOUBLE image held in memory. * * Use VIPS_IMAGE_ADDR(), or VIPS_MATRIX() to address pixels in the image. * * Use vips_image_set_double() to set "scale" and "offset", if required. * * See also: vips_image_new_matrixv() * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_matrix( int width, int height ) { VipsImage *image; vips_check_init(); image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", "vips_image_new_matrix", "mode", "t", "width", width, "height", height, "bands", 1, "format", VIPS_FORMAT_DOUBLE, "interpretation", VIPS_INTERPRETATION_MATRIX, NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { VIPS_UNREF( image ); return( NULL ); } if( vips_image_write_prepare( image ) ) { g_object_unref( image ); return( NULL ); } return( image ); } /** * vips_image_new_matrixv: (constructor) * @width: image width * @height: image height * @...: matrix coefficients * * As vips_image_new_matrix(), but initialise the matrix from the argument * list. After @height should be @width * @height double constants which are * used to set the matrix elements. * * See also: vips_image_new_matrix() * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_matrixv( int width, int height, ... ) { va_list ap; VipsImage *matrix; int x, y; vips_check_init(); matrix = vips_image_new_matrix( width, height ); va_start( ap, height ); for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) *VIPS_MATRIX( matrix, x, y ) = va_arg( ap, double ); va_end( ap ); return( matrix ); } /** * vips_image_new_matrix_from_array: (constructor) * @width: image width * @height: image height * @array: (array length=size) (transfer none): array of elements * @size: (type gsize): number of elements * * A binding-friendly version of vips_image_new_matrixv(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_matrix_from_array( int width, int height, const double *array, int size ) { VipsImage *matrix; int x, y; int i; if( size != width * height ) { vips_error( "VipsImage", _( "bad array length --- should be %d, you passed %d" ), width * height, size ); return( NULL ); } vips_check_init(); matrix = vips_image_new_matrix( width, height ); i = 0; for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) *VIPS_MATRIX( matrix, x, y ) = array[i++]; return( matrix ); } /** * vips_image_matrix_from_array: (constructor) * @width: image width * @height: image height * @array: (array length=size) (transfer none): array of elements * @size: (type gsize): number of elements * * A renamed vips_image_new_matrix_from_array(). Some gobject bindings do not * like more than one _new method. * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_matrix_from_array( int width, int height, const double *array, int size ) { return( vips_image_new_matrix_from_array( width, height, array, size ) ); } /** * vips_image_new_from_image: (constructor) * @image: image to copy * @c: (array length=n) (transfer none): array of constants * @n: number of constants * * Creates a new image with width, height, format, interpretation, resolution * and offset taken from @image, but with number of bands taken from @n and the * value of each band element set from @c. * * See also: vips_image_new_from_image1() * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_image( VipsImage *image, const double *c, int n ) { VipsObject *scope = (VipsObject *) vips_image_new(); VipsImage **t = (VipsImage **) vips_object_local_array( scope, 5 ); double *ones; int i; VipsImage *result; if( !(ones = VIPS_ARRAY( scope, n, double )) ) { g_object_unref( scope ); return( NULL ); } for( i = 0; i < n; i++ ) ones[i] = 1.0; if( vips_black( &t[0], 1, 1, NULL ) || vips_linear( t[0], &t[1], ones, (double *) c, n, NULL ) || vips_cast( t[1], &t[2], image->BandFmt, NULL ) || vips_embed( t[2], &t[3], 0, 0, image->Xsize, image->Ysize, "extend", VIPS_EXTEND_COPY, NULL ) || vips_copy( t[3], &t[4], "interpretation", image->Type, "xres", image->Xres, "yres", image->Yres, "xoffset", image->Xoffset, "yoffset", image->Yoffset, NULL ) ) { g_object_unref( scope ); return( NULL ); } result = t[4]; g_object_ref( result ); g_object_unref( scope ); return( result ); } /** * vips_image_new_from_image1: (constructor) * @image: image to copy * @c: constants * * Creates a new image with width, height, format, interpretation, resolution * and offset taken from @image, but with one band and each pixel having the * value @c. * * See also: vips_image_new_from_image() * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_image1( VipsImage *image, double c ) { return( vips_image_new_from_image( image, (const double *) &c, 1 ) ); } /** * vips_image_set_delete_on_close: (method) * @image: image to set * @delete_on_close: format of file * * Sets the delete_on_close flag for the image. If this flag is set, when * @image is finalized, the filename held in @image->filename at the time of * this call is deleted. * * This function is clearly extremely dangerous, use with great caution. * * See also: vips_image_new_temp_file(). */ void vips_image_set_delete_on_close( VipsImage *image, gboolean delete_on_close ) { VIPS_DEBUG_MSG( "vips_image_set_delete_on_close: %d %s\n", delete_on_close, image->filename ); image->delete_on_close = delete_on_close; VIPS_FREE( image->delete_on_close_filename ); if( delete_on_close ) VIPS_SETSTR( image->delete_on_close_filename, image->filename ); } /** * vips_get_disc_threshold: * * Return the number of bytes at which we flip between open via memory and * open via disc. This defaults to 100mb, but can be changed with the * VIPS_DISC_THRESHOLD environment variable or the --vips-disc-threshold * command-line flag. See vips_image_new_from_file(). * * Returns: disc threshold in bytes. */ guint64 vips_get_disc_threshold( void ) { static gboolean done = FALSE; static guint64 threshold; if( !done ) { const char *env; done = TRUE; /* 100mb default. */ threshold = 100 * 1024 * 1024; if( (env = g_getenv( "VIPS_DISC_THRESHOLD" )) || (env = g_getenv( "IM_DISC_THRESHOLD" )) ) threshold = vips__parse_size( env ); if( vips__disc_threshold ) threshold = vips__parse_size( vips__disc_threshold ); #ifdef DEBUG printf( "vips_get_disc_threshold: %zd bytes\n", threshold ); #endif /*DEBUG*/ } return( threshold ); } /** * vips_image_new_temp_file: (constructor) * @format: format of file * * Make a #VipsImage which, when written to, will create a temporary file on * disc. The file will be automatically deleted when the image is destroyed. * @format is something like "%s.v" for a vips file. * * The file is created in the temporary directory. This is set with the * environment variable TMPDIR. If this is not set, then on Unix systems, vips * will default to /tmp. On Windows, vips uses GetTempPath() to find the * temporary directory. * * See also: vips_image_new(). * * Returns: the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_temp_file( const char *format ) { char *name; VipsImage *image; vips_check_init(); if( !(name = vips__temp_name( format )) ) return( NULL ); if( !(image = vips_image_new_mode( name, "w" )) ) { g_free( name ); return( NULL ); } g_free( name ); vips_image_set_delete_on_close( image, TRUE ); return( image ); } static int vips_image_write_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; /* printf( "vips_image_write_gen: %p " "left = %d, top = %d, width = %d, height = %d\n", or->im, r->left, r->top, r->width, r->height ); */ /* Copy with pointers. */ if( vips_region_prepare( ir, r ) || vips_region_region( or, ir, r, r->left, r->top ) ) return( -1 ); return( 0 ); } /** * vips_image_write: (method) * @image: image to write * @out: (out): write to this image * * Write @image to @out. Use vips_image_new() and friends to create the * #VipsImage you want to write to. * * See also: vips_image_new(), vips_copy(), vips_image_write_to_file(). * * Returns: 0 on success, or -1 on error. */ int vips_image_write( VipsImage *image, VipsImage *out ) { /* image needs to stay alive for this call. It can be unreffed during * the generate. */ g_object_ref( image ); if( vips_image_pio_input( image ) || vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, image, NULL ) ) { g_object_unref( image ); return( -1 ); } if( vips_image_generate( out, vips_start_one, vips_image_write_gen, vips_stop_one, image, NULL ) ) { g_object_unref( image ); return( -1 ); } /* If @out is a partial image, we need to unref @image when out is * unreffed. * * If it's not partial, perhaps a file we write to or a memory image, * we need to break any links between @image and @out created by * vips_image_pipelinev(). */ if( vips_image_ispartial( out ) ) { vips_object_local( out, image ); } else { vips__reorder_clear( out ); vips__link_break_all( out ); g_object_unref( image ); } return( 0 ); } /** * vips_image_write_to_file: (method) * @image: image to write * @name: write to this file * @...: %NULL-terminated list of optional named arguments * * Writes @in to @name using the saver recommended by * vips_foreign_find_save(). * * Save options may be appended to @filename as "[name=value,...]" or given as * a NULL-terminated list of name-value pairs at the end of the arguments. * Options given in the function call override options given in the filename. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, or -1 on error. */ int vips_image_write_to_file( VipsImage *image, const char *name, ... ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; va_list ap; int result; /* Save with the new target API if we can. Fall back to the older * mechanism in case the loader we need has not been converted yet. * * We need to hide any errors from this first phase. */ vips__filename_split8( name, filename, option_string ); vips_error_freeze(); operation_name = vips_foreign_find_save_target( filename ); vips_error_thaw(); if( operation_name ) { VipsTarget *target; if( !(target = vips_target_new_to_file( filename )) ) return( -1 ); va_start( ap, name ); result = vips_call_split_option_string( operation_name, option_string, ap, image, target ); va_end( ap ); VIPS_UNREF( target ); } else if( (operation_name = vips_foreign_find_save( filename )) ) { va_start( ap, name ); result = vips_call_split_option_string( operation_name, option_string, ap, image, filename ); va_end( ap ); } else return( -1 ); return( result ); } /** * vips_image_write_to_buffer: (method) * @in: image to write * @suffix: format to write * @buf: (array length=size) (element-type guint8) (transfer full): return buffer start here * @size: (type gsize): return buffer length here * @...: %NULL-terminated list of optional named arguments * * Writes @in to a memory buffer in a format specified by @suffix. * * Save options may be appended to @suffix as "[name=value,...]" or given as * a NULL-terminated list of name-value pairs at the end of the arguments. * Options given in the function call override options given in the filename. * * Currently only TIFF, JPEG and PNG formats are supported. * * You can call the various save operations directly if you wish, see * vips_jpegsave_buffer(), for example. * * See also: vips_image_write_to_memory(), vips_image_new_from_buffer(). * * Returns: 0 on success, -1 on error */ int vips_image_write_to_buffer( VipsImage *in, const char *suffix, void **buf, size_t *size, ... ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; VipsBlob *blob; va_list ap; int result; vips__filename_split8( suffix, filename, option_string ); if( (operation_name = vips_foreign_find_save_target( filename )) ) { VipsTarget *target; if( !(target = vips_target_new_to_memory()) ) return( -1 ); va_start( ap, size ); result = vips_call_split_option_string( operation_name, option_string, ap, in, target ); va_end( ap ); if( result ) { VIPS_UNREF( target ); return( -1 ); } g_object_get( target, "blob", &blob, NULL ); VIPS_UNREF( target ); } else if( (operation_name = vips_foreign_find_save_buffer( filename )) ) { va_start( ap, size ); result = vips_call_split_option_string( operation_name, option_string, ap, in, &blob ); va_end( ap ); if( result ) return( -1 ); } else return( -1 ); *buf = NULL; if( size ) *size = 0; if( blob ) { if( buf ) { *buf = VIPS_AREA( blob )->data; VIPS_AREA( blob )->free_fn = NULL; } if( size ) *size = VIPS_AREA( blob )->length; vips_area_unref( VIPS_AREA( blob ) ); } return( 0 ); } /** * vips_image_write_to_target: (method) * @in: image to write * @suffix: format to write * @target: target to write to * @...: %NULL-terminated list of optional named arguments * * Writes @in to @output in format @suffix. * * Save options may be appended to @suffix as "[name=value,...]" or given as * a NULL-terminated list of name-value pairs at the end of the arguments. * Options given in the function call override options given in the filename. * * You can call the various save operations directly if you wish, see * vips_jpegsave_target(), for example. * * See also: vips_image_write_to_file(). * * Returns: 0 on success, -1 on error */ int vips_image_write_to_target( VipsImage *in, const char *suffix, VipsTarget *target, ... ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; va_list ap; int result; vips__filename_split8( suffix, filename, option_string ); if( !(operation_name = vips_foreign_find_save_target( filename )) ) return( -1 ); va_start( ap, target ); result = vips_call_split_option_string( operation_name, option_string, ap, in, target ); va_end( ap ); if( result ) return( -1 ); return( 0 ); } /** * vips_image_write_to_memory: (method) * @in: image to write * @size: return buffer length here * * Writes @in to memory as a simple, unformatted C-style array. * * The caller is responsible for freeing this memory with g_free(). * * See also: vips_image_write_to_buffer(). * * Returns: (array length=size) (element-type guint8) (transfer full): return buffer start here */ void * vips_image_write_to_memory( VipsImage *in, size_t *size_out ) { void *buf; size_t size; VipsImage *x; size = VIPS_IMAGE_SIZEOF_IMAGE( in ); if( !(buf = g_try_malloc( size )) ) { vips_error( "vips_image_write_to_memory", _( "out of memory --- size == %dMB" ), (int) (size / (1024.0 * 1024.0)) ); g_warning( _( "out of memory --- size == %dMB" ), (int) (size / (1024.0 * 1024.0)) ); return( NULL ); } x = vips_image_new_from_memory( buf, size, in->Xsize, in->Ysize, in->Bands, in->BandFmt ); if( vips_image_write( in, x ) ) { g_object_unref( x ); g_free( buf ); return( NULL ); } g_object_unref( x ); if( size_out ) *size_out = size; return( buf ); } /** * vips_image_decode: (method) * @in: image to decode * @out: (out): write to this image * * A convenience function to unpack to a format that we can compute with. * @out.coding is always #VIPS_CODING_NONE. * * This unpacks LABQ to plain LAB. Use vips_LabQ2LabS() for a bit more speed * if you need it. * * See also: vips_image_encode(), vips_LabQ2Lab(), vips_rad2float(). * * Returns: 0 on success, or -1 on error. */ int vips_image_decode( VipsImage *in, VipsImage **out ) { /* Keep in sync with vips__vector_to_ink(). */ if( in->Coding == VIPS_CODING_LABQ ) { if( vips_LabQ2Lab( in, out, NULL ) ) return( -1 ); } else if( in->Coding == VIPS_CODING_RAD ) { if( vips_rad2float( in, out, NULL ) ) return( -1 ); } else { if( vips_copy( in, out, NULL ) ) return( -1 ); } return( 0 ); } /** * vips_image_decode_predict: (method) * @in: image to decode * @bands: (out): predict bands here * @format: (out): predict format here * * We often need to know what an image will decode to without actually * decoding it, for example, in arg checking. * * See also: vips_image_decode(). */ int vips_image_decode_predict( VipsImage *in, int *out_bands, VipsBandFormat *out_format ) { VipsBandFormat format; int bands; if( in->Coding == VIPS_CODING_LABQ ) { bands = 3; format = VIPS_FORMAT_FLOAT; } else if( in->Coding == VIPS_CODING_RAD ) { bands = 3; format = VIPS_FORMAT_FLOAT; } else { bands = in->Bands; format = in->BandFmt; } if( out_bands ) *out_bands = bands; if( out_format ) *out_format = format; return( 0 ); } /** * vips_image_encode: (method) * @in: image to encode * @out: (out): write to this image * @coding: coding to apply * * A convenience function to pack to a coding. The inverse of * vips_image_decode(). * * See also: vips_image_decode(). * * Returns: 0 on success, or -1 on error. */ int vips_image_encode( VipsImage *in, VipsImage **out, VipsCoding coding ) { if( coding == VIPS_CODING_LABQ ) { if( vips_Lab2LabQ( in, out, NULL ) ) return( -1 ); } else if( coding == VIPS_CODING_RAD ) { if( vips_float2rad( in, out, NULL ) ) return( -1 ); } else { if( vips_copy( in, out, NULL ) ) return( -1 ); } return( 0 ); } /** * vips_image_isMSBfirst: (method) * @image: image to test * * Return %TRUE if @image is in most-significant- * byte first form. This is the byte order used on the SPARC * architecture and others. */ gboolean vips_image_isMSBfirst( VipsImage *image ) { if( image->magic == VIPS_MAGIC_SPARC ) return( 1 ); else return( 0 ); } /** * vips_image_isfile: (method) * @image: image to test * * Return %TRUE if @image represents a file on disc in some way. */ gboolean vips_image_isfile( VipsImage *image ) { switch( image->dtype ) { case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_OPENOUT: case VIPS_IMAGE_OPENIN: return( 1 ); case VIPS_IMAGE_PARTIAL: case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: case VIPS_IMAGE_NONE: return( 0 ); default: g_assert( FALSE ); return( 0 ); } } /** * vips_image_ispartial: (method) * @image: image to test * * Return %TRUE if @im represents a partial image (a delayed calculation). */ gboolean vips_image_ispartial( VipsImage *image ) { if( image->dtype == VIPS_IMAGE_PARTIAL ) return( 1 ); else return( 0 ); } /** * vips_image_hasalpha: (method) * @image: image to check * * Look at an image's interpretation and see if it has extra alpha bands. For * example, a 4-band #VIPS_INTERPRETATION_sRGB would, but a six-band * #VIPS_INTERPRETATION_MULTIBAND would not. * * Return %TRUE if @image has an alpha channel. */ gboolean vips_image_hasalpha( VipsImage *image ) { /* The result of hasalpha is used to turn on things like * premultiplication, so we are rather conservative about when we * signal this. We don't want to premultiply things that should not be * premultiplied. */ switch( image->Type ) { case VIPS_INTERPRETATION_B_W: case VIPS_INTERPRETATION_GREY16: return( image->Bands > 1 ); case VIPS_INTERPRETATION_RGB: case VIPS_INTERPRETATION_CMC: case VIPS_INTERPRETATION_LCH: case VIPS_INTERPRETATION_LABS: case VIPS_INTERPRETATION_sRGB: case VIPS_INTERPRETATION_YXY: case VIPS_INTERPRETATION_XYZ: case VIPS_INTERPRETATION_LAB: case VIPS_INTERPRETATION_RGB16: case VIPS_INTERPRETATION_scRGB: case VIPS_INTERPRETATION_HSV: return( image->Bands > 3 ); case VIPS_INTERPRETATION_CMYK: return( image->Bands > 4 ); default: /* We can't really infer anything about bands from things like * HISTOGRAM or FOURIER. */ return( FALSE ); } } /** * vips_image_write_prepare: (method) * @image: image to prepare * * Call this after setting header fields (width, height, and so on) to * allocate resources ready for writing. * * Normally this function is called for you by vips_image_generate() or * vips_image_write_line(). You will need to call it yourself if you plan to * write directly to the ->data member of a memory image. * * Returns: 0 on success, or -1 on error. */ int vips_image_write_prepare( VipsImage *image ) { g_assert( vips_object_sanity( VIPS_OBJECT( image ) ) ); if( image->Xsize <= 0 || image->Ysize <= 0 || image->Bands <= 0 ) { vips_error( "VipsImage", "%s", _( "bad dimensions" ) ); return( -1 ); } /* We don't use this, but make sure it's set in case any old programs * are expecting it. */ image->Bbits = vips_format_sizeof( image->BandFmt ) << 3; if( image->dtype == VIPS_IMAGE_PARTIAL ) { VIPS_DEBUG_MSG( "vips_image_write_prepare: " "old-style output for %s\n", image->filename ); image->dtype = VIPS_IMAGE_SETBUF; } switch( image->dtype ) { case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_SETBUF_FOREIGN: break; case VIPS_IMAGE_SETBUF: if( !image->data && !(image->data = vips_tracked_malloc( VIPS_IMAGE_SIZEOF_IMAGE( image ))) ) return( -1 ); break; case VIPS_IMAGE_OPENOUT: if( vips_image_open_output( image ) ) return( -1 ); break; default: vips_error( "VipsImage", "%s", _( "bad image descriptor" ) ); return( -1 ); } return( 0 ); } /** * vips_image_write_line: (method) * @image: image to write to * @ypos: vertical position of scan-line to write * @linebuffer: scanline of pixels * * Write a line of pixels to an image. This function must be called repeatedly * with @ypos increasing from 0 to #VipsImage::height . * @linebuffer must be VIPS_IMAGE_SIZEOF_LINE() bytes long. * * See also: vips_image_generate(). * * Returns: 0 on success, or -1 on error. */ int vips_image_write_line( VipsImage *image, int ypos, VipsPel *linebuffer ) { int linesize = VIPS_IMAGE_SIZEOF_LINE( image ); /* Is this the start of eval? */ if( ypos == 0 ) { if( vips__image_wio_output( image ) ) return( -1 ); /* Always clear kill before we start looping. See the * call to vips_image_iskilled() below. */ vips_image_set_kill( image, FALSE ); vips_image_write_prepare( image ); vips_image_preeval( image ); } /* Possible cases for output: FILE or SETBUF. */ switch( image->dtype ) { case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: memcpy( VIPS_IMAGE_ADDR( image, 0, ypos ), linebuffer, linesize ); break; case VIPS_IMAGE_OPENOUT: /* Don't use ypos for this. */ if( vips__write( image->fd, linebuffer, linesize ) ) return( -1 ); break; default: vips_error( "VipsImage", _( "unable to output to a %s image" ), vips_enum_string( VIPS_TYPE_IMAGE_TYPE, image->dtype ) ); return( -1 ); } /* Trigger evaluation callbacks for this image. */ vips_image_eval( image, ypos * image->Xsize ); if( vips_image_iskilled( image ) ) return( -1 ); /* Is this the end of eval? */ if( ypos == image->Ysize - 1 ) { vips_image_posteval( image ); if( vips_image_written( image ) ) return( -1 ); } return( 0 ); } /* Rewind an output file. VIPS images only. */ static int vips_image_rewind_output( VipsImage *image ) { int fd; g_assert( image->dtype == VIPS_IMAGE_OPENOUT ); #ifdef DEBUG_IO printf( "vips_image_rewind_output: %s\n", image->filename ); #endif/*DEBUG_IO*/ /* We want to keep the fd across rewind. * * On Windows, we open temp files with _O_TEMPORARY. We mustn't close * the file since this will delete it. * * We could open the file again to keep a reference to it alive, but * this is also problematic on Windows. */ fd = image->fd; image->fd = -1; /* Free any resources the image holds and reset to a base * state. */ vips_object_rewind( VIPS_OBJECT( image ) ); /* And reopen ... recurse to get a mmaped image. * * We use "v" mode to get it opened as a vips image, bypassing the * file type checks. They will fail on Windows because you can't open * fds more than once. */ image->fd = fd; g_object_set( image, "mode", "v", NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { vips_error( "VipsImage", _( "auto-rewind for %s failed" ), image->filename ); return( -1 ); } /* Now we've finished writing and reopened as read, we can * delete-on-close. * * On *nix-like systems, this will unlink the file from the * filesystem and when we exit, for whatever reason, the file * we be reclaimed. * * On Windows this will fail because the file is open and you can't * delete open files. However, on Windows we set _O_TEMPORARY, so the * file will be deleted when the fd is finally closed. */ vips_image_delete( image ); return( 0 ); } /** * vips_image_copy_memory: (method) * @image: image to copy to a memory buffer * * Make an image which is an area of memory. * * If @image is already a memory buffer, just ref and return. If it's a file on * disc or a partial, allocate memory and copy the image to it. * * This operation is thread-safe, unlike vips_image_wio_input(). * * If you are sure that @image is not shared with another thread (perhaps you * have made it yourself), use vips_image_wio_input() instead. * * See also: vips_image_wio_input(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_copy_memory( VipsImage *image ) { VipsImage *new; switch( image->dtype ) { case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: /* Can read from all these, in principle anyway. */ new = image; g_object_ref( new ); break; case VIPS_IMAGE_OPENOUT: case VIPS_IMAGE_OPENIN: case VIPS_IMAGE_PARTIAL: new = vips_image_new_memory(); if( vips_image_write( image, new ) ) { g_object_unref( new ); return( NULL ); } break; default: vips_error( "vips_image_copy_memory", "%s", _( "image not readable" ) ); return( NULL ); } return( new ); } /** * vips_image_wio_input: (method) * @image: image to transform * * Check that an image is readable via the VIPS_IMAGE_ADDR() macro, that is, * that the entire image is in memory and all pixels can be read with * VIPS_IMAGE_ADDR(). If it * isn't, try to transform it so that VIPS_IMAGE_ADDR() can work. * * Since this function modifies @image, it is not thread-safe. Only call it on * images which you are sure have not been shared with another thread. If the * image might have been shared, use the less efficient * vips_image_copy_memory() instead. * * See also: vips_image_copy_memory(), vips_image_pio_input(), * vips_image_inplace(), VIPS_IMAGE_ADDR(). * * Returns: 0 on succeess, or -1 on error. */ int vips_image_wio_input( VipsImage *image ) { VipsImage *t1; g_assert( vips_object_sanity( VIPS_OBJECT( image ) ) ); #ifdef DEBUG_IO printf( "vips_image_wio_input: wio input for %s\n", image->filename ); #endif/*DEBUG_IO*/ switch( image->dtype ) { case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: /* Should have been written to. */ if( !image->data ) { vips_error( "vips_image_wio_input", "%s", _( "no image data" ) ); return( -1 ); } break; case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: /* Can read from all these, in principle anyway. */ break; case VIPS_IMAGE_PARTIAL: #ifdef DEBUG_IO printf( "vips_image_wio_input: " "converting partial image to WIO\n" ); #endif/*DEBUG_IO*/ /* Change to VIPS_IMAGE_SETBUF. First, make a memory * buffer and copy into that. */ t1 = vips_image_new_memory(); if( vips_image_write( image, t1 ) ) { g_object_unref( t1 ); return( -1 ); } /* Copy new stuff in. We can't unref and free stuff, as this * would kill of lots of regions and cause dangling pointers * elsewhere. */ image->dtype = VIPS_IMAGE_SETBUF; image->data = t1->data; t1->data = NULL; /* Close temp image. */ g_object_unref( t1 ); /* We need to zap any start/gen/stop callbacks. If we don't, * calling vips_region_prepare_to() later to read from this * image will fail, since it will think it needs to create the * image, not read from it. */ image->start_fn = NULL; image->generate_fn = NULL; image->stop_fn = NULL; image->client1 = NULL; image->client2 = NULL; /* ... and that may confuse any regions which are trying to * generate from this image. */ if( image->regions ) g_warning( "rewinding image with active regions" ); break; case VIPS_IMAGE_OPENIN: #ifdef DEBUG_IO printf( "vips_image_wio_input: " "converting openin image for wio input\n" ); #endif/*DEBUG_IO*/ /* just mmap() the whole thing. */ if( vips_mapfile( image ) ) return( -1 ); image->data = (VipsPel *) image->baseaddr + image->sizeof_header; image->dtype = VIPS_IMAGE_MMAPIN; break; case VIPS_IMAGE_OPENOUT: /* Close file down and reopen as input. I guess this will only * work for vips files? */ if( vips_image_rewind_output( image ) || vips_image_wio_input( image ) ) return( -1 ); break; default: vips_error( "vips_image_wio_input", "%s", _( "image not readable" ) ); return( -1 ); } return( 0 ); } int vips__image_wio_output( VipsImage *image ) { #ifdef DEBUG_IO printf( "vips__image_wio_output: WIO output for %s\n", image->filename ); #endif/*DEBUG_IO*/ switch( image->dtype ) { case VIPS_IMAGE_PARTIAL: /* Make sure nothing is attached. */ if( image->generate_fn ) { vips_error( "vips__image_wio_output", "%s", _( "image already written" ) ); return( -1 ); } /* Cannot do old-style write to PARTIAL. Turn to SETBUF. */ image->dtype = VIPS_IMAGE_SETBUF; break; case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_OPENOUT: case VIPS_IMAGE_SETBUF_FOREIGN: /* Can write to this ok. * * We used to check that ->data was null and warn about * writing twice, but we no longer insist that this is called * before vips_image_write_prepare(), so we can't do that any * more. */ break; default: vips_error( "vips__image_wio_output", "%s", _( "image not writeable" ) ); return( -1 ); } return( 0 ); } /** * vips_image_inplace: (method) * @image: image to make read-write * * Gets @image ready for an in-place operation, such as vips_draw_circle(). * After calling this function you can both read and write the image with * VIPS_IMAGE_ADDR(). * * Since this function modifies @image, it is not thread-safe. Only call it on * images which you are sure have not been shared with another thread. * All in-place operations are inherently not thread-safe, so you need to take * great care in any case. * * See also: vips_draw_circle(), vips_image_wio_input(). * * Returns: 0 on succeess, or -1 on error. */ int vips_image_inplace( VipsImage *image ) { /* Do an vips_image_wio_input(). This will rewind, generate, etc. */ if( vips_image_wio_input( image ) ) return( -1 ); /* Look at the type. */ switch( image->dtype ) { case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: case VIPS_IMAGE_MMAPINRW: /* No action necessary. */ break; case VIPS_IMAGE_MMAPIN: /* Try to remap read-write. */ if( vips_remapfilerw( image ) ) return( -1 ); break; default: vips_error( "vips_image_inplace", "%s", _( "bad file type" ) ); return( -1 ); } /* This image is about to be changed (probably). Make sure it's not * in cache. */ vips_image_invalidate_all( image ); return( 0 ); } /** * vips_image_pio_input: (method) * @image: image to check * * Check that an image is readable with vips_region_prepare() and friends. * If it isn't, try to transform the image so that vips_region_prepare() can * work. * * See also: vips_image_pio_output(), vips_region_prepare(). * * Returns: 0 on succeess, or -1 on error. */ int vips_image_pio_input( VipsImage *image ) { g_assert( vips_object_sanity( VIPS_OBJECT( image ) ) ); #ifdef DEBUG_IO printf( "vips_image_pio_input: enabling partial input for %s\n", image->filename ); #endif /*DEBUG_IO*/ switch( image->dtype ) { case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: /* Should have been written to. */ if( !image->data ) { vips_error( "vips_image_pio_input", "%s", _( "no image data" ) ); return( -1 ); } /* Should be no generate functions now. */ image->start_fn = NULL; image->generate_fn = NULL; image->stop_fn = NULL; break; case VIPS_IMAGE_PARTIAL: /* Should have had generate functions attached. */ if( !image->generate_fn ) { vips_error( "vips_image_pio_input", "%s", _( "no image data" ) ); return( -1 ); } break; case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_OPENIN: break; case VIPS_IMAGE_OPENOUT: /* Free any resources the image holds and reset to a base * state. */ if( vips_image_rewind_output( image ) ) return( -1 ); break; default: vips_error( "vips_image_pio_input", "%s", _( "image not readable" ) ); return( -1 ); } return( 0 ); } /** * vips_image_pio_output: (method) * @image: image to check * * Check that an image is writeable with vips_image_generate(). If it isn't, * try to transform the image so that vips_image_generate() can work. * * See also: vips_image_pio_input(). * * Returns: 0 on succeess, or -1 on error. */ int vips_image_pio_output( VipsImage *image ) { #ifdef DEBUG_IO printf( "vips_image_pio_output: enabling partial output for %s\n", image->filename ); #endif /*DEBUG_IO*/ switch( image->dtype ) { case VIPS_IMAGE_SETBUF: if( image->data ) { vips_error( "vips_image_pio_output", "%s", _( "image already written" ) ); return( -1 ); } break; case VIPS_IMAGE_PARTIAL: if( image->generate_fn ) { vips_error( "vips_image_pio_output", "%s", _( "image already written" ) ); return( -1 ); } break; case VIPS_IMAGE_OPENOUT: case VIPS_IMAGE_SETBUF_FOREIGN: break; default: vips_error( "vips_image_pio_output", "%s", _( "image not writeable" ) ); return( -1 ); } return( 0 ); } /** * vips_band_format_isint: * @format: format to test * * Return %TRUE if @format is one of the integer types. */ gboolean vips_band_format_isint( VipsBandFormat format ) { switch( format ) { case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_CHAR: case VIPS_FORMAT_USHORT: case VIPS_FORMAT_SHORT: case VIPS_FORMAT_UINT: case VIPS_FORMAT_INT: return( TRUE ); case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: return( FALSE ); default: g_assert_not_reached(); return( FALSE ); } } /** * vips_band_format_isuint: * @format: format to test * * Return %TRUE if @format is one of the unsigned integer types. */ gboolean vips_band_format_isuint( VipsBandFormat format ) { switch( format ) { case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_USHORT: case VIPS_FORMAT_UINT: return( TRUE ); case VIPS_FORMAT_INT: case VIPS_FORMAT_SHORT: case VIPS_FORMAT_CHAR: case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: return( FALSE ); default: g_assert_not_reached(); return( FALSE ); } } /** * vips_band_format_is8bit: * @format: format to test * * Return %TRUE if @format is uchar or schar. */ gboolean vips_band_format_is8bit( VipsBandFormat format ) { switch( format ) { case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_CHAR: return( TRUE ); case VIPS_FORMAT_USHORT: case VIPS_FORMAT_SHORT: case VIPS_FORMAT_UINT: case VIPS_FORMAT_INT: case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: return( FALSE ); default: g_assert_not_reached(); return( FALSE ); } } /** * vips_band_format_isfloat: * @format: format to test * * Return %TRUE if @format is one of the float types. */ gboolean vips_band_format_isfloat( VipsBandFormat format ) { switch( format ) { case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_DOUBLE: return( TRUE ); case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_CHAR: case VIPS_FORMAT_USHORT: case VIPS_FORMAT_SHORT: case VIPS_FORMAT_UINT: case VIPS_FORMAT_INT: case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: return( FALSE ); default: g_assert_not_reached(); return( FALSE ); } } /** * vips_band_format_iscomplex: * @format: format to test * * Return %TRUE if @fmt is one of the complex types. */ gboolean vips_band_format_iscomplex( VipsBandFormat format ) { switch( format ) { case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: return( TRUE ); case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_CHAR: case VIPS_FORMAT_USHORT: case VIPS_FORMAT_SHORT: case VIPS_FORMAT_UINT: case VIPS_FORMAT_INT: case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_DOUBLE: return( FALSE ); default: g_assert_not_reached(); return( FALSE ); } } /* Handy for debugging: view an image in nip2. */ int vips__view_image( VipsImage *image ) { VipsArrayImage *array; int result; array = vips_array_image_new( &image, 1 ); result = vips_system( "nip2 %s", "in", array, "in-format", "%s.v", NULL ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } libvips-8.9.1/libvips/iofuncs/init.c000066400000000000000000000744571361153320700174500ustar00rootroot00000000000000/* Start up the world of vips. * * 7/1/04 JC * - 1st version * 7/6/05 * - g_type_init() too, so we can use gobject * 2/9/06 * - also set g_prg_name() and load plugins * 8/12/06 * - add liboil support * 5/2/07 * - stop a loop if we're called recursively during VIPS startup ... it * can happen if (for example) vips_guess_prefix() fails and tries to * i18n an error message (thanks Christian) * 8/6/07 * - just warn if plugins fail to load correctly: too annoying to have * VIPS refuse to start because of a dodgy plugin * 7/11/07 * - progress feedback option * 5/8/08 * - load plugins from libdir/vips-x.x * 5/10/09 * - gtkdoc comments * 14/3/10 * - init image and region before we start, we need all types to be fully * constructed before we go parallel * 18/9/16 * - call _setmaxstdio() on win32 * 4/8/17 * - hide warnings is VIPS_WARNING is set * 20/4/19 * - set the min stack, if we can */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ /* pthread_setattr_default_np() is a non-portable GNU extension. */ #define _GNU_SOURCE #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_PTHREAD_DEFAULT_NP #include #endif /*HAVE_PTHREAD_DEFAULT_NP*/ #include #include #ifdef HAVE_SYS_PARAM_H #include #endif /*HAVE_SYS_PARAM_H*/ #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #ifdef HAVE_DIRECT_H #include #endif /*HAVE_DIRECT_H*/ #include #include #ifdef HAVE_GSF #include #endif /*HAVE_GSF*/ #include #include #include #include #include /* abort() on the first warning or error. */ int vips__fatal = 0; /* Use in various small places where we need a mutex and it's not worth * making a private one. */ GMutex *vips__global_lock = NULL; /* A debugging timer, zero at library init. */ GTimer *vips__global_timer = NULL; /* Keep a copy of the argv0 here. */ static char *vips__argv0 = NULL; /* Leak check on exit. */ int vips__leak = 0; #ifdef DEBUG_LEAK /* Count pixels processed per image here. */ GQuark vips__image_pixels_quark = 0; #endif /*DEBUG_LEAK*/ /** * vips_get_argv0: * * See also: VIPS_INIT(). * * Returns: a pointer to an internal copy of the argv0 string passed to * VIPS_INIT(). Do not free this value */ const char * vips_get_argv0( void ) { return( vips__argv0 ); } /** * VIPS_INIT: * @ARGV0: name of application * * gtk-doc mistakenly tags this macro as deprecated for unknown reasons. It is * *NOT* deprecated, please ignore the warning above. * * VIPS_INIT() starts up the world of VIPS. You should call this on * program startup before using any other VIPS operations. If you do not call * VIPS_INIT(), VIPS will call it for you when you use your first VIPS * operation, but it may not be able to get hold of @ARGV0 and VIPS may * therefore be unable to find its data files. It is much better to call * this macro yourself. * * @ARGV0 is used to help discover message catalogues if libvips has been * relocated. If you don't need a relocatable package, you can just pass `""` * and it'll be fine. * * Additionally, VIPS_INIT() can be run from any thread, but it must not be * called from more than one thread at the same time. This is much easier to * guarantee if you call it yourself. * * VIPS_INIT() is a macro, since it tries to check ABI compatibility * between the caller and the library. You can also call vips_init(), the * non-macro version, if macros are not available to you. * * You may call VIPS_INIT() many times and vips_shutdown() many times, but you * must not call VIPS_INIT() after vips_shutdown(). In other words, you cannot * stop and restart vips. * * Use the environment variable `VIPS_MIN_STACK_SIZE` to set the minimum stack * size. For example, `2m` for a minimum of two megabytes of stack. This can * be important for systems like musl where the default stack is very small. * * VIPS_INIT() does approximately the following: * * + checks that the libvips your program is expecting is * binary-compatible with the vips library you're running against * * + sets a minimum stack size, see above * * + initialises any libraries that VIPS is using, including GObject * and the threading system, if neccessary * * + guesses where the VIPS data files are and sets up * internationalisation --- see vips_guess_prefix() * * + creates the main vips types, including #VipsImage and friends * * + loads any plugins from $libdir/vips-x.y/, where x and y are the * major and minor version numbers for this VIPS. * * + if your platform supports atexit(), VIPS_INIT() will ask for * vips_shutdown() to be called on program exit * * Example: * * |[ * int main (int argc, char **argv) * { * if (VIPS_INIT (argv[0])) * vips_error_exit ("unable to start VIPS"); * * vips_shutdown (); * * return 0; * } * ]| * * See also: vips_shutdown(), vips_add_option_entries(), vips_version(), * vips_guess_prefix(), vips_guess_libdir(). * * Returns: 0 on success, -1 otherwise */ /* Load all plugins in a directory ... look for '.plg' suffix. Error if we had * any probs. */ static int vips_load_plugins( const char *fmt, ... ) { va_list ap; char dir_name[VIPS_PATH_MAX]; GDir *dir; const char *name; int result; /* Silently succeed if we can't do modules. */ if( !g_module_supported() ) return( 0 ); va_start( ap, fmt ); (void) vips_vsnprintf( dir_name, VIPS_PATH_MAX - 1, fmt, ap ); va_end( ap ); #ifdef DEBUG printf( "vips_load_plugins: searching \"%s\"\n", dir_name ); #endif /*DEBUG*/ if( !(dir = g_dir_open( dir_name, 0, NULL )) ) /* Silent success for dir not there. */ return( 0 ); result = 0; while( (name = g_dir_read_name( dir )) ) if( vips_ispostfix( name, ".plg" ) ) { char path[VIPS_PATH_MAX]; GModule *module; vips_snprintf( path, VIPS_PATH_MAX - 1, "%s" G_DIR_SEPARATOR_S "%s", dir_name, name ); #ifdef DEBUG printf( "vips_load_plugins: loading \"%s\"\n", path ); #endif /*DEBUG*/ module = g_module_open( path, G_MODULE_BIND_LAZY ); if( !module ) { g_warning( _( "unable to load \"%s\" -- %s" ), path, g_module_error() ); result = -1; } } g_dir_close( dir ); return( result ); } /* Install this log handler to hide warning messages. */ static void empty_log_handler( const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data ) { } /* Attempt to set a minimum stacksize. This can be important on systems with a * very low default, like musl. */ static void set_stacksize( guint64 size ) { #ifdef HAVE_PTHREAD_DEFAULT_NP pthread_attr_t attr; guint64 cur_stack_size; /* Don't allow stacks less than 2mb. */ size = VIPS_MAX( size, 2 * 1024 * 1024 ); if( pthread_attr_init( &attr ) || pthread_attr_getstacksize( &attr, &cur_stack_size ) ) { g_warning( "set_stacksize: unable to get stack size" ); return; } if( cur_stack_size < size ) { if( pthread_attr_setstacksize( &attr, size ) || pthread_setattr_default_np( &attr ) ) g_warning( "set_stacksize: unable to set stack size" ); else g_info( "set stack size to %" G_GUINT64_FORMAT "k", size / (guint64) 1024 ); } #endif /*HAVE_PTHREAD_DEFAULT_NP*/ } /** * vips_init: * @argv0: name of application * * This function starts up libvips, see VIPS_INIT(). * * This function is for bindings which need to start up vips. C programs * should use the VIPS_INIT() macro, which does some extra checks. * * See also: VIPS_INIT(). * * Returns: 0 on success, -1 otherwise */ int vips_init( const char *argv0 ) { extern GType vips_system_get_type( void ); extern GType write_thread_state_get_type( void ); extern GType sink_memory_thread_state_get_type( void ); extern GType render_thread_state_get_type( void ); extern GType vips_source_get_type( void ); extern GType vips_source_custom_get_type( void ); extern GType vips_target_get_type( void ); extern GType vips_target_custom_get_type( void ); static gboolean started = FALSE; static gboolean done = FALSE; const char *vips_min_stack_size; const char *prefix; const char *libdir; char *locale; /* Two stage done handling: 'done' means we've completed, 'started' * means we're currently initialising. Use this to prevent recursive * invocation. */ if( done ) /* Called more than once, we succeeded, just return OK. */ return( 0 ); if( started ) /* Recursive invocation, something has broken horribly. * Hopefully the first init will handle it. */ return( 0 ); started = TRUE; #ifdef OS_WIN32 /* Windows has a limit of 512 files open at once for the fopen() family * of functions, and 2048 for the _open() family. This raises the limit * of fopen() to the same level as _open(). * * It will not go any higher than this, unfortunately. */ (void) _setmaxstdio( 2048 ); #endif /*OS_WIN32*/ #ifdef HAVE_TYPE_INIT /* Before glib 2.36 you have to call this on startup. */ g_type_init(); #endif /*HAVE_TYPE_INIT*/ /* Older glibs need this. */ #ifndef HAVE_THREAD_NEW if( !g_thread_supported() ) g_thread_init( NULL ); #endif /*HAVE_THREAD_NEW*/ vips__threadpool_init(); vips__buffer_init(); /* This does an unsynchronised static hash table init on first call -- * we have to make sure we do this single-threaded. See: * https://github.com/openslide/openslide/issues/161 */ (void) g_get_language_names(); if( !vips__global_lock ) vips__global_lock = vips_g_mutex_new(); if( !vips__global_timer ) vips__global_timer = g_timer_new(); VIPS_SETSTR( vips__argv0, argv0 ); if( argv0 ) { char *prgname; prgname = g_path_get_basename( argv0 ); g_set_prgname( prgname ); g_free( prgname ); } vips__thread_profile_attach( "main" ); /* We can't do VIPS_GATE_START() until command-line processing * happens, since vips__thread_profile may not be set yet. Call * directly. */ vips__thread_gate_start( "init: main" ); vips__thread_gate_start( "init: startup" ); /* Try to discover our prefix. */ if( !(prefix = vips_guess_prefix( argv0, "VIPSHOME" )) || !(libdir = vips_guess_libdir( argv0, "VIPSHOME" )) ) return( -1 ); /* Get i18n .mo files from $VIPSHOME/share/locale/. */ locale = g_build_filename( prefix, "share", "locale", NULL ); bindtextdomain( GETTEXT_PACKAGE, locale ); g_free( locale ); bind_textdomain_codeset( GETTEXT_PACKAGE, "UTF-8" ); /* Deprecated, this is just for compat. */ if( g_getenv( "VIPS_INFO" ) || g_getenv( "IM_INFO" ) ) vips_info_set( TRUE ); if( g_getenv( "VIPS_PROFILE" ) ) vips_profile_set( TRUE ); /* Default various settings from env. */ if( g_getenv( "VIPS_TRACE" ) ) vips_cache_set_trace( TRUE ); /* Register base vips types. */ (void) vips_image_get_type(); (void) vips_region_get_type(); (void) write_thread_state_get_type(); (void) sink_memory_thread_state_get_type(); (void) render_thread_state_get_type(); (void) vips_source_get_type(); (void) vips_source_custom_get_type(); (void) vips_target_get_type(); (void) vips_target_custom_get_type(); vips__meta_init_types(); vips__interpolate_init(); im__format_init(); /* Start up operator cache. */ vips__cache_init(); /* Recomp reordering system. */ vips__reorder_init(); /* Start up packages. */ (void) vips_system_get_type(); vips_arithmetic_operation_init(); vips_conversion_operation_init(); vips_create_operation_init(); vips_foreign_operation_init(); vips_resample_operation_init(); vips_colour_operation_init(); vips_histogram_operation_init(); vips_convolution_operation_init(); vips_freqfilt_operation_init(); vips_morphology_operation_init(); vips_draw_operation_init(); vips_mosaicing_operation_init(); /* Load any vips8 plugins from the vips libdir. Keep going, even if * some plugins fail to load. */ (void) vips_load_plugins( "%s/vips-plugins-%d.%d", libdir, VIPS_MAJOR_VERSION, VIPS_MINOR_VERSION ); /* Load up any vips7 plugins in the vips libdir. We don't error on * failure, it's too annoying to have VIPS refuse to start because of * a broken plugin. */ if( im_load_plugins( "%s/vips-%d.%d", libdir, VIPS_MAJOR_VERSION, VIPS_MINOR_VERSION ) ) { g_warning( "%s", vips_error_buffer() ); vips_error_clear(); } /* Also load from libdir. This is old and slightly broken behaviour * :-( kept for back compat convenience. */ if( im_load_plugins( "%s", libdir ) ) { g_warning( "%s", vips_error_buffer() ); vips_error_clear(); } /* Get the run-time compiler going. */ vips_vector_init(); #ifdef HAVE_GSF /* Use this for structured file write. */ gsf_init(); #endif /*HAVE_GSF*/ /* Register vips_shutdown(). This may well not get called and many * platforms don't support it anyway. */ #ifdef HAVE_ATEXIT atexit( vips_shutdown ); #endif /*HAVE_ATEXIT*/ #ifdef DEBUG_LEAK vips__image_pixels_quark = g_quark_from_static_string( "vips-image-pixels" ); #endif /*DEBUG_LEAK*/ done = TRUE; /* If VIPS_WARNING is defined, suppress all warning messages from vips. * * Libraries should not call g_log_set_handler(), it is * supposed to be for the application layer, but this can be awkward to * set up if you are using libvips from something like Ruby. Allow this * env var hack as a workaround. */ if( g_getenv( "VIPS_WARNING" ) || g_getenv( "IM_WARNING" ) ) g_log_set_handler( "VIPS", G_LOG_LEVEL_WARNING, empty_log_handler, NULL ); /* Set a minimum stacksize, if we can. */ if( (vips_min_stack_size = g_getenv( "VIPS_MIN_STACK_SIZE" )) ) (void) set_stacksize( vips__parse_size( vips_min_stack_size ) ); vips__thread_gate_stop( "init: startup" ); return( 0 ); } /* Call this before vips stuff that uses stuff we need to have inited. */ void vips_check_init( void ) { /* Pass in a nonsense name for argv0 ... this init path is only here * for old programs which are missing an vips_init() call. We need * i18n set up before we can translate. */ if( vips_init( "vips" ) ) vips_error_clear(); } static void vips_leak( void ) { char txt[1024]; VipsBuf buf = VIPS_BUF_STATIC( txt ); vips_object_print_all(); if( vips_tracked_get_allocs() || vips_tracked_get_mem() || vips_tracked_get_files() ) { vips_buf_appendf( &buf, "memory: %d allocations, %zd bytes\n", vips_tracked_get_allocs(), vips_tracked_get_mem() ); vips_buf_appendf( &buf, "files: %d open\n", vips_tracked_get_files() ); } vips_buf_appendf( &buf, "memory: high-water mark " ); vips_buf_append_size( &buf, vips_tracked_get_mem_highwater() ); vips_buf_appends( &buf, "\n" ); if( strlen( vips_error_buffer() ) > 0 ) vips_buf_appendf( &buf, "error buffer: %s", vips_error_buffer() ); if( vips__n_active_threads != 0 ) vips_buf_appendf( &buf, "threads: %d not joined\n", vips__n_active_threads ); fprintf( stderr, "%s", vips_buf_all( &buf ) ); vips__print_renders(); #ifdef DEBUG vips_buffer_dump_all(); #endif /*DEBUG*/ } /** * vips_thread_shutdown: * * Free any thread-private data and flush any profiling information. * * This function needs to be called when a thread that has been using vips * exits. It is called for you by vips_shutdown() and for any threads created * by vips_g_thread_new(). * * You will need to call it from threads created in * other ways or there will be memory leaks. If you do not call it, vips * will generate a warning message. * * It may be called many times, and you can continue using vips after * calling it. Calling it too often will reduce performance. */ void vips_thread_shutdown( void ) { vips__thread_profile_detach(); } /** * vips_shutdown: * * Call this to drop caches and close plugins. Run with "--vips-leak" to do * a leak check too. * * You may call VIPS_INIT() many times and vips_shutdown() many times, but you * must not call VIPS_INIT() after vips_shutdown(). In other words, you cannot * stop and restart vips. */ void vips_shutdown( void ) { #ifdef DEBUG printf( "vips_shutdown:\n" ); #endif /*DEBUG*/ vips_cache_drop_all(); im_close_plugins(); /* Mustn't run this more than once. Don't use the VIPS_GATE macro, * since we don't for gate start. */ { static gboolean done = FALSE; if( !done ) vips__thread_gate_stop( "init: main" ); } vips__render_shutdown(); vips_thread_shutdown(); vips__thread_profile_stop(); #ifdef HAVE_GSF gsf_shutdown(); #endif /*HAVE_GSF*/ /* In dev releases, always show leaks. But not more than once, it's * annoying. */ #ifndef DEBUG_LEAK if( vips__leak ) #endif /*DEBUG_LEAK*/ { static gboolean done = FALSE; if( !done ) vips_leak(); done = TRUE; } } const char * vips__gettext( const char *msgid ) { vips_check_init(); return( dgettext( GETTEXT_PACKAGE, msgid ) ); } const char * vips__ngettext( const char *msgid, const char *plural, unsigned long int n ) { vips_check_init(); return( dngettext( GETTEXT_PACKAGE, msgid, plural, n ) ); } static gboolean vips_lib_info_cb( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { vips_info_set( TRUE ); return( TRUE ); } static gboolean vips_set_fatal_cb( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { vips__fatal = 1; /* Set masks for debugging ... stop on any problem. */ g_log_set_always_fatal( G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL | G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING ); return( TRUE ); } static gboolean vips_lib_version_cb( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { printf( "libvips %s\n", VIPS_VERSION_STRING ); vips_shutdown(); exit( 0 ); } static gboolean vips_cache_max_cb( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { vips_cache_set_max( vips__parse_size( value ) ); return( TRUE ); } static gboolean vips_cache_max_memory_cb( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { vips_cache_set_max_mem( vips__parse_size( value ) ); return( TRUE ); } static gboolean vips_cache_max_files_cb( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { vips_cache_set_max_files( vips__parse_size( value ) ); return( TRUE ); } static GOptionEntry option_entries[] = { { "vips-info", 0, G_OPTION_FLAG_HIDDEN | G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, (gpointer) &vips_lib_info_cb, N_( "show informative messages" ), NULL }, { "vips-fatal", 0, G_OPTION_FLAG_HIDDEN | G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, (gpointer) &vips_set_fatal_cb, N_( "abort on first error or warning" ), NULL }, { "vips-concurrency", 0, 0, G_OPTION_ARG_INT, &vips__concurrency, N_( "evaluate with N concurrent threads" ), "N" }, { "vips-tile-width", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__tile_width, N_( "set tile width to N (DEBUG)" ), "N" }, { "vips-tile-height", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__tile_height, N_( "set tile height to N (DEBUG)" ), "N" }, { "vips-thinstrip-height", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__thinstrip_height, N_( "set thinstrip height to N (DEBUG)" ), "N" }, { "vips-fatstrip-height", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__fatstrip_height, N_( "set fatstrip height to N (DEBUG)" ), "N" }, { "vips-progress", 0, 0, G_OPTION_ARG_NONE, &vips__progress, N_( "show progress feedback" ), NULL }, { "vips-leak", 0, 0, G_OPTION_ARG_NONE, &vips__leak, N_( "leak-check on exit" ), NULL }, { "vips-profile", 0, 0, G_OPTION_ARG_NONE, &vips__thread_profile, N_( "profile and dump timing on exit" ), NULL }, { "vips-disc-threshold", 0, 0, G_OPTION_ARG_STRING, &vips__disc_threshold, N_( "images larger than N are decompressed to disc" ), "N" }, { "vips-novector", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &vips__vector_enabled, N_( "disable vectorised versions of operations" ), NULL }, { "vips-cache-max", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &vips_cache_max_cb, N_( "cache at most N operations" ), "N" }, { "vips-cache-max-memory", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &vips_cache_max_memory_cb, N_( "cache at most N bytes in memory" ), "N" }, { "vips-cache-max-files", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &vips_cache_max_files_cb, N_( "allow at most N open files" ), "N" }, { "vips-cache-trace", 0, 0, G_OPTION_ARG_NONE, &vips__cache_trace, N_( "trace operation cache" ), NULL }, { "vips-cache-dump", 0, 0, G_OPTION_ARG_NONE, &vips__cache_dump, N_( "dump operation cache on exit" ), NULL }, { "vips-version", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, (gpointer) &vips_lib_version_cb, N_( "print libvips version" ), NULL }, { NULL } }; /** * vips_add_option_entries: * @option_group: group to add to * * Add the standard vips %GOptionEntry to a %GOptionGroup. * * See also: g_option_group_new(). */ void vips_add_option_entries( GOptionGroup *option_group ) { g_option_group_add_entries( option_group, option_entries ); } /* Find the prefix part of a dir ... name is the name of this prog from argv0. * * dir name guess prefix * * /home/john/vips-7.6.4/bin/vips-7.6 vips-7.6 /home/john/vips-7.6.4 * /usr/local/bin/ip ip /usr/local * * all other forms ... return NULL. */ static char * extract_prefix( const char *dir, const char *name ) { char edir[VIPS_PATH_MAX]; char vname[VIPS_PATH_MAX]; int i; #ifdef DEBUG printf( "extract_prefix: trying for dir = \"%s\", name = \"%s\"\n", dir, name ); #endif /*DEBUG*/ /* Is dir relative? Prefix with cwd. */ if( !g_path_is_absolute( dir ) ) { char *cwd; cwd = g_get_current_dir(); vips_snprintf( edir, VIPS_PATH_MAX, "%s" G_DIR_SEPARATOR_S "%s", cwd, dir ); g_free( cwd ); } else { vips_strncpy( edir, dir, VIPS_PATH_MAX ); } /* Chop off the trailing prog name, plus the trailing * G_DIR_SEPARATOR_S. */ if( !vips_ispostfix( edir, name ) ) return( NULL ); vips_strncpy( vname, edir, VIPS_PATH_MAX ); vname[strlen( edir ) - strlen( name ) - 1] = '\0'; /* Remove any "/./", any trailing "/.", any trailing "/". */ for( i = 0; i < (int) strlen( vname ); i++ ) if( vips_isprefix( G_DIR_SEPARATOR_S "." G_DIR_SEPARATOR_S, vname + i ) ) memmove( vname + i, vname + i + 2, strlen( vname + i + 2 ) + 1 ); if( vips_ispostfix( vname, G_DIR_SEPARATOR_S "." ) ) vname[strlen( vname ) - 2] = '\0'; if( vips_ispostfix( vname, G_DIR_SEPARATOR_S ) ) vname[strlen( vname ) - 1] = '\0'; #ifdef DEBUG printf( "extract_prefix: canonicalised path = \"%s\"\n", vname ); #endif /*DEBUG*/ /* Ought to be a "/bin" at the end now. */ if( !vips_ispostfix( vname, G_DIR_SEPARATOR_S "bin" ) ) return( NULL ); vname[strlen( vname ) - strlen( G_DIR_SEPARATOR_S "bin" )] = '\0'; #ifdef DEBUG printf( "extract_prefix: found \"%s\"\n", vname ); #endif /*DEBUG*/ return( vips_strdup( NULL, vname ) ); } /* Search a path for a file ... we overwrite the PATH string passed in. */ static char * scan_path( char *path, const char *name ) { char *p, *q; char *prefix; for( p = path; (q = vips_break_token( p, G_SEARCHPATH_SEPARATOR_S )); p = q ) { char str[VIPS_PATH_MAX]; /* Form complete path. */ vips_snprintf( str, VIPS_PATH_MAX, "%s" G_DIR_SEPARATOR_S "%s", p, name ); #ifdef DEBUG printf( "scan_path: looking in \"%s\" for \"%s\"\n", p, name ); #endif /*DEBUG*/ if( vips_existsf( "%s", str ) && (prefix = extract_prefix( str, name )) ) { return( prefix ); } } return( NULL ); } /* Look for a file along PATH. If we find it, look for an enclosing prefix. */ static char * find_file( const char *name ) { const char *path = g_getenv( "PATH" ); char *prefix; char full_path[VIPS_PATH_MAX]; if( !path ) return( NULL ); #ifdef DEBUG printf( "vips_guess_prefix: g_getenv( \"PATH\" ) == \"%s\"\n", path ); #endif /*DEBUG*/ #ifdef OS_WIN32 { char *dir; /* Windows always searches '.' first, so prepend cwd to path. */ dir = g_get_current_dir(); vips_snprintf( full_path, VIPS_PATH_MAX, "%s" G_SEARCHPATH_SEPARATOR_S "%s", dir, path ); g_free( dir ); } #else /*!OS_WIN32*/ vips_strncpy( full_path, path, VIPS_PATH_MAX ); #endif /*OS_WIN32*/ if( (prefix = scan_path( full_path, name )) ) return( prefix ); return( NULL ); } /* Guess a value for the install PREFIX. */ static const char * guess_prefix( const char *argv0, const char *name ) { char *prefix; /* Try to guess from argv0. */ if( argv0 ) { if( g_path_is_absolute( argv0 ) ) { /* Must point to our executable. */ if( (prefix = extract_prefix( argv0, name )) ) { #ifdef DEBUG printf( "vips_guess_prefix: found \"%s\" from " "argv0\n", prefix ); #endif /*DEBUG*/ return( prefix ); } } /* Look along path for name. */ if( (prefix = find_file( name )) ) { #ifdef DEBUG printf( "vips_guess_prefix: found \"%s\" from " "PATH\n", prefix ); #endif /*DEBUG*/ return( prefix ); } } /* Try to guess from cwd. Only if this is a relative path, though. */ if( argv0 && !g_path_is_absolute( argv0 ) ) { char *dir; char full_path[VIPS_PATH_MAX]; char *resolved; dir = g_get_current_dir(); vips_snprintf( full_path, VIPS_PATH_MAX, "%s" G_DIR_SEPARATOR_S "%s", dir, argv0 ); g_free( dir ); if( (resolved = vips_realpath( full_path )) ) { prefix = extract_prefix( resolved, name ); g_free( resolved ); if( prefix ) { #ifdef DEBUG printf( "vips_guess_prefix: found \"%s\" " "from cwd\n", prefix ); #endif /*DEBUG*/ return( prefix ); } } } /* Fall back to the configure-time prefix. */ return( VIPS_PREFIX ); } /** * vips_guess_prefix: * @argv0: program name (typically argv[0]) * @env_name: save prefix in this environment variable * * vips_guess_prefix() tries to guess the install directory. You should pass * in the value of argv[0] (the name your program was run as) as a clue to * help it out, plus the name of the environment variable you let the user * override your package install area with (eg. "VIPSHOME"). * * On success, vips_guess_prefix() returns the prefix it discovered, and as a * side effect, sets the environment variable (if it's not set). * * Don't free the return string! * * See also: vips_guess_libdir(). * * Returns: (transfer none): the install prefix as a static string, do not free. */ const char * vips_guess_prefix( const char *argv0, const char *env_name ) { const char *prefix; /* Already set? */ if( (prefix = g_getenv( env_name )) ) { #ifdef DEBUG printf( "vips_guess_prefix: found \"%s\" in environment\n", prefix ); #endif /*DEBUG*/ return( prefix ); } #ifdef OS_WIN32 prefix = vips__windows_prefix(); #else { char *basename; basename = g_path_get_basename( argv0 ); prefix = guess_prefix( argv0, basename ); g_free( basename ); } #endif g_setenv( env_name, prefix, TRUE ); return( prefix ); } /** * vips_guess_libdir: * @argv0: program name (typically argv[0]) * @env_name: save prefix in this environment variable * * vips_guess_libdir() tries to guess the install directory (usually the * configure libdir, or $prefix/lib). You should pass * in the value of argv[0] (the name your program was run as) as a clue to * help it out, plus the name of the environment variable you let the user * override your package install area with (eg. "VIPSHOME"). * * On success, vips_guess_libdir() returns the libdir it discovered, and as a * side effect, sets the prefix environment variable (if it's not set). * * Don't free the return string! * * See also: vips_guess_prefix(). * * Returns: (transfer none): the libdir as a static string, do not free. */ const char * vips_guess_libdir( const char *argv0, const char *env_name ) { const char *prefix = vips_guess_prefix( argv0, env_name ); static char *libdir = NULL; if( libdir ) return( libdir ); /* Have we been moved since configure? If not, use the configure-time * libdir. */ if( strcmp( prefix, VIPS_PREFIX ) == 0 ) libdir = VIPS_LIBDIR; else libdir = g_strdup_printf( "%s/lib", prefix ); #ifdef DEBUG printf( "vips_guess_libdir: VIPS_PREFIX = %s\n", VIPS_PREFIX ); printf( "vips_guess_libdir: VIPS_LIBDIR = %s\n", VIPS_LIBDIR ); printf( "vips_guess_libdir: prefix = %s\n", prefix ); printf( "vips_guess_libdir: libdir = %s\n", libdir ); #endif /*DEBUG*/ return( libdir ); } /** * vips_version_string: * * Get the VIPS version as a static string, including a build date and time. * Do not free. * * Returns: (transfer none): a static version string */ const char * vips_version_string( void ) { return( VIPS_VERSION_STRING ); } /** * vips_version: * @flag: which field of the version to get * * Get the major, minor or micro library version, with @flag values 0, 1 and * 2. * * Get the ABI current, revision and age (as used by libtool) with @flag * values 3, 4, 5. * * Returns: library version number */ int vips_version( int flag ) { switch( flag ) { case 0: return( VIPS_MAJOR_VERSION ); case 1: return( VIPS_MINOR_VERSION ); case 2: return( VIPS_MICRO_VERSION ); case 3: return( VIPS_LIBRARY_CURRENT ); case 4: return( VIPS_LIBRARY_REVISION ); case 5: return( VIPS_LIBRARY_AGE ); default: vips_error( "vips_version", "%s", _( "flag not in [0, 5]" ) ); return( -1 ); } } /** * vips_leak_set: * @leak: turn leak checking on or off * * Turn on or off vips leak checking. See also --vips-leak and * vips_add_option_entries(). * * You should call this very early in your program. */ void vips_leak_set( gboolean leak ) { vips__leak = leak; } /* Deprecated. */ size_t vips__get_sizeof_vipsobject( void ) { return( sizeof( VipsObject ) ); } libvips-8.9.1/libvips/iofuncs/mapfile.c000066400000000000000000000223011361153320700200770ustar00rootroot00000000000000/* map and unmap files in various ways * * Copyright: Nicos Dessipris * Wriiten on: 13/02/1990 * Updated on: * 10/5/93 J.Cupitt * - im_mapfilerw() added * 13/12/94 JC * - ANSIfied * 5/7/99 JC * - better error if unable to map rw * 31/3/02 JC * - better mmap() fails error * 19/9/02 JC * - added im__mmap()/im__munmap() with windows versions * 5/1/04 Lev Serebryakov * - patched for freebsd compatibility * 5/2/04 JC * - now records length as well as base, so we unmap the right amount of * memory even if files change behind our back * 1/1/10 * - set NOCACHE if we can ... helps OS X performance a lot * 25/3/11 * - move to vips_ namespace */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_SYS_MMAN_H #include #endif /*HAVE_SYS_MMAN_H*/ #ifdef HAVE_SYS_FILE_H #include #endif /*HAVE_SYS_FILE_H*/ #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #ifdef OS_WIN32 #ifndef S_ISREG #define S_ISREG(m) (!!(m & _S_IFREG)) #endif #endif /*OS_WIN32*/ #include #ifdef OS_WIN32 #include #include #endif /*OS_WIN32*/ /* Does this fd support mmap. Pipes won't, for example. */ gboolean vips__mmap_supported( int fd ) { void *baseaddr; size_t length = 4096; off_t offset = 0; #ifdef OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( fd ); DWORD flProtect; HANDLE hMMFile; DWORD dwDesiredAccess; ULARGE_INTEGER quad; DWORD dwFileOffsetHigh; DWORD dwFileOffsetLow; flProtect = PAGE_READONLY; if( !(hMMFile = CreateFileMapping( hFile, NULL, flProtect, 0, 0, NULL )) ) return( FALSE ); dwDesiredAccess = FILE_MAP_READ; quad.QuadPart = offset; dwFileOffsetLow = quad.LowPart; dwFileOffsetHigh = quad.HighPart; if( !(baseaddr = (char *)MapViewOfFile( hMMFile, dwDesiredAccess, dwFileOffsetHigh, dwFileOffsetLow, length )) ) { CloseHandle( hMMFile ); return( FALSE ); } CloseHandle( hMMFile ); UnmapViewOfFile( baseaddr ); } #else /*!OS_WIN32*/ { int prot = PROT_READ; int flags = MAP_SHARED; baseaddr = mmap( 0, length, prot, flags, fd, (off_t) offset ); if( baseaddr == MAP_FAILED ) return( FALSE ); munmap( baseaddr, length ); } #endif /*OS_WIN32*/ return( TRUE ); } void * vips__mmap( int fd, int writeable, size_t length, gint64 offset ) { void *baseaddr; #ifdef DEBUG printf( "vips__mmap: length = 0x%zx, offset = 0x%lx\n", length, offset ); #endif /*DEBUG*/ #ifdef OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( fd ); DWORD flProtect; DWORD dwDesiredAccess; HANDLE hMMFile; ULARGE_INTEGER quad; DWORD dwFileOffsetHigh; DWORD dwFileOffsetLow; if( writeable ) { flProtect = PAGE_READWRITE; dwDesiredAccess = FILE_MAP_WRITE; } else { flProtect = PAGE_READONLY; dwDesiredAccess = FILE_MAP_READ; } quad.QuadPart = offset; dwFileOffsetLow = quad.LowPart; dwFileOffsetHigh = quad.HighPart; if( !(hMMFile = CreateFileMapping( hFile, NULL, flProtect, 0, 0, NULL )) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to CreateFileMapping" ) ); printf( "CreateFileMapping failed: %s\n", vips_error_buffer() ); return( NULL ); } if( !(baseaddr = (char *)MapViewOfFile( hMMFile, dwDesiredAccess, dwFileOffsetHigh, dwFileOffsetLow, length )) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to MapViewOfFile" ) ); printf( "MapViewOfFile failed: %s\n", vips_error_buffer() ); CloseHandle( hMMFile ); return( NULL ); } /* Can close mapping now ... view stays until UnmapViewOfFile(). FIXME ... is this a performance problem? */ CloseHandle( hMMFile ); } #else /*!OS_WIN32*/ { int prot; int flags; if( writeable ) prot = PROT_WRITE; else prot = PROT_READ; flags = MAP_SHARED; /* OS X caches mmapped files very aggressively if this flags is not * set. Scanning a large file without this flag will cause every other * process to get swapped out and kill performance. */ #ifdef MAP_NOCACHE flags |= MAP_NOCACHE; #endif /*MAP_NOCACHE*/ /* Casting gint64 to off_t should be safe, even on *nixes without * LARGEFILE. */ baseaddr = mmap( 0, length, prot, flags, fd, (off_t) offset ); if( baseaddr == MAP_FAILED ) { vips_error_system( errno, "vips_mapfile", "%s", _( "unable to mmap" ) ); g_warning( _( "map failed (%s), " "running very low on system resources, " "expect a crash soon" ), strerror( errno ) ); return( NULL ); } } #endif /*OS_WIN32*/ return( baseaddr ); } int vips__munmap( const void *start, size_t length ) { #ifdef OS_WIN32 if( !UnmapViewOfFile( (void *) start ) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to UnmapViewOfFile" ) ); return( -1 ); } #else /*!OS_WIN32*/ if( munmap( (void *) start, length ) < 0 ) { vips_error_system( errno, "vips_mapfile", "%s", _( "unable to munmap file" ) ); return( -1 ); } #endif /*OS_WIN32*/ return( 0 ); } int vips_mapfile( VipsImage *im ) { struct stat st; mode_t m; assert( !im->baseaddr ); /* Check the size of the file; if it is less than 64 bytes, then flag * an error, we won't be able to read the vips header without a segv. */ g_assert( im->file_length > 0 ); if( im->file_length < 64 ) { vips_error( "vips_mapfile", "%s", _( "file is less than 64 bytes" ) ); return( -1 ); } if( fstat( im->fd, &st ) == -1 ) { vips_error( "vips_mapfile", "%s", _( "unable to get file status" ) ); return( -1 ); } m = (mode_t) st.st_mode; if( !S_ISREG( m ) ) { vips_error( "vips_mapfile", "%s", _( "not a regular file" ) ); return( -1 ); } if( !(im->baseaddr = vips__mmap( im->fd, 0, im->file_length, 0 )) ) return( -1 ); im->length = im->file_length; return( 0 ); } /* As above, but map read/write. */ int vips_mapfilerw( VipsImage *im ) { struct stat st; mode_t m; assert( !im->baseaddr ); /* Check the size of the file if it is less than 64 bytes return * make also sure that it is a regular file */ g_assert( im->file_length > 0 ); if( fstat( im->fd, &st ) == -1 ) { vips_error( "vips_mapfilerw", "%s", _( "unable to get file status" ) ); return( -1 ); } m = (mode_t) st.st_mode; if( im->file_length < 64 || !S_ISREG( m ) ) { vips_error( "vips_mapfile", "%s", _( "unable to read data" ) ); return( -1 ); } if( !(im->baseaddr = vips__mmap( im->fd, 1, im->file_length, 0 )) ) return( -1 ); im->length = im->file_length; return( 0 ); } /* From im_rwcheck() ... image needs to be a completely mapped read-only file, * we try to remap it read-write. */ int vips_remapfilerw( VipsImage *image ) { void *baseaddr; #ifdef OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( image->fd ); HANDLE hMMFile; if( !(hMMFile = CreateFileMapping( hFile, NULL, PAGE_READWRITE, 0, 0, NULL )) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to CreateFileMapping" ) ); return( -1 ); } if( !UnmapViewOfFile( image->baseaddr ) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to UnmapViewOfFile" ) ); return( -1 ); } if( !(baseaddr = (char *)MapViewOfFileEx( hMMFile, FILE_MAP_WRITE, 0, 0, 0, image->baseaddr )) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to MapViewOfFile" ) ); CloseHandle( hMMFile ); return( -1 ); } /* Can close mapping now ... view stays until UnmapViewOfFile(). FIXME ... is this a performance problem? */ CloseHandle( hMMFile ); } #else /*!OS_WIN32*/ { assert( image->dtype == VIPS_IMAGE_MMAPIN ); baseaddr = mmap( image->baseaddr, image->length, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, image->fd, 0 ); if( baseaddr == (void *)-1 ) { vips_error( "vips_mapfile", _( "unable to mmap: \"%s\" - %s" ), image->filename, strerror( errno ) ); return( -1 ); } } #endif /*OS_WIN32*/ image->dtype = VIPS_IMAGE_MMAPINRW; if( baseaddr != image->baseaddr ) { vips_error( "vips_mapfile", _( "unable to mmap \"%s\" to same " "address" ), image->filename ); image->baseaddr = baseaddr; return( -1 ); } return( 0 ); } libvips-8.9.1/libvips/iofuncs/memory.c000066400000000000000000000273311361153320700200020ustar00rootroot00000000000000/* tracked memory * * 2/11/99 JC * - from im_open.c and callback.c * - malloc tracking stuff added * 11/3/01 JC * - im_strncpy() added * 20/4/01 JC * - im_(v)snprintf() added * 6/7/05 * - more tracking for DEBUGM * 20/10/06 * - return NULL for size <= 0 * 11/5/06 * - abort() on malloc() failure with DEBUG * 20/10/09 * - gtkdoc comment * 6/11/09 * - im_malloc()/im_free() now call g_try_malloc()/g_free() ... removes * confusion over whether to use im_free() or g_free() for things like * im_header_string() * 21/9/11 * - rename as vips_tracked_malloc() to emphasise difference from * g_malloc()/g_free() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_IO_H #include #endif /*HAVE_IO_H*/ #include #include #include #include #include #include /** * SECTION: memory * @short_description: memory utilities * @stability: Stable * @include: vips/vips.h * * These functions cover two main areas. * * First, some simple utility functions over the underlying * g_malloc()/g_free() functions. Memory allocated and freeded using these * functions is interchangeable with any other glib library. * * Second, a pair of functions, vips_tracked_malloc() and vips_tracked_free(), * which are NOT compatible. If you g_free() memory that has been allocated * with vips_tracked_malloc() you will see crashes. * * The tracked functions are * only suitable for large allocations internal to the library, for example * pixel buffers. libvips watches the total amount of live tracked memory and * uses this information to decide when to trim caches. */ /* g_assert_not_reached() on memory errors. #define DEBUG */ /* Track malloc/free and open/close. #define DEBUG_VERBOSE */ #ifdef DEBUG # warning DEBUG on in libsrc/iofuncs/memory.c #endif /*DEBUG*/ static int vips_tracked_allocs = 0; static size_t vips_tracked_mem = 0; static int vips_tracked_files = 0; static size_t vips_tracked_mem_highwater = 0; static GMutex *vips_tracked_mutex = NULL; /** * VIPS_NEW: * @OBJ: allocate memory local to @OBJ, or %NULL for no auto-free * @T: type of thing to allocate * * Allocate memory for a thing of type @T. The memory is not * cleared. * * This macro cannot fail. See vips_tracked_malloc() if you are * allocating large amounts of memory. * * See also: vips_malloc(). * * Returns: A pointer of type @T *. */ /** * VIPS_ARRAY: * @OBJ: allocate memory local to @OBJ, or %NULL for no auto-free * @N: number of @T 's to allocate * @T: type of thing to allocate * * Allocate memory for an array of objects of type @T. The memory is not * cleared. * * This macro cannot fail. See vips_tracked_malloc() if you are * allocating large amounts of memory. * * See also: vips_malloc(). * * Returns: A pointer of type @T *. */ static void vips_malloc_cb( VipsObject *object, char *buf ) { g_free( buf ); } /** * vips_malloc: * @object: (nullable): allocate memory local to this #VipsObject, or %NULL * @size: number of bytes to allocate * * g_malloc() local to @object, that is, the memory will be automatically * freed for you when the object is closed. If @object is %NULL, you need to * free the memory explicitly with g_free(). * * This function cannot fail. See vips_tracked_malloc() if you are * allocating large amounts of memory. * * See also: vips_tracked_malloc(). * * Returns: (transfer full): a pointer to the allocated memory. */ void * vips_malloc( VipsObject *object, size_t size ) { void *buf; buf = g_malloc0( size ); if( object ) { g_signal_connect( object, "postclose", G_CALLBACK( vips_malloc_cb ), buf ); object->local_memory += size; } return( buf ); } /** * vips_strdup: * @object: (nullable): allocate memory local to this #VipsObject, or %NULL * @str: string to copy * * g_strdup() a string. When @object is freed, the string will be freed for * you. If @object is %NULL, you need to * free the memory yourself with g_free(). * * This function cannot fail. * * See also: vips_malloc(). * * Returns: (transfer full): a pointer to the allocated memory */ char * vips_strdup( VipsObject *object, const char *str ) { char *str_dup; str_dup = g_strdup( str ); if( object ) { g_signal_connect( object, "postclose", G_CALLBACK( vips_malloc_cb ), str_dup ); object->local_memory += strlen( str ); } return( str_dup ); } /** * vips_free: * @buf: memory to free * * Frees memory with g_free() and returns 0. Handy for callbacks. * * See also: vips_malloc(). * * Returns: 0 */ int vips_free( void *buf ) { g_free( buf ); return( 0 ); } /** * vips_tracked_free: * @s: (transfer full): memory to free * * Only use it to free * memory that was previously allocated with vips_tracked_malloc() with a * %NULL first argument. * * See also: vips_tracked_malloc(). */ void vips_tracked_free( void *s ) { /* Keep the size of the alloc in the previous 16 bytes. Ensures * alignment rules are kept. */ void *start = (void *) ((char *) s - 16); size_t size = *((size_t *) start); g_mutex_lock( vips_tracked_mutex ); #ifdef DEBUG_VERBOSE printf( "vips_tracked_free: %p, %zd bytes\n", s, size ); #endif /*DEBUG_VERBOSE*/ if( vips_tracked_allocs <= 0 ) g_warning( "%s", _( "vips_free: too many frees" ) ); if( vips_tracked_mem < size ) g_warning( "%s", _( "vips_free: too much free" ) ); vips_tracked_mem -= size; vips_tracked_allocs -= 1; g_mutex_unlock( vips_tracked_mutex ); g_free( start ); VIPS_GATE_FREE( size ); } static void vips_tracked_init_mutex( void ) { vips_tracked_mutex = vips_g_mutex_new(); } static void vips_tracked_init( void ) { static GOnce vips_tracked_once = G_ONCE_INIT; VIPS_ONCE( &vips_tracked_once, (GThreadFunc) vips_tracked_init_mutex, NULL ); } /** * vips_tracked_malloc: * @size: number of bytes to allocate * * Allocate an area of memory that will be tracked by vips_tracked_get_mem() * and friends. * * If allocation fails, vips_malloc() returns %NULL and * sets an error message. * * You must only free the memory returned with vips_tracked_free(). * * See also: vips_tracked_free(), vips_malloc(). * * Returns: (transfer full): a pointer to the allocated memory, or %NULL on error. */ void * vips_tracked_malloc( size_t size ) { void *buf; vips_tracked_init(); /* Need an extra sizeof(size_t) bytes to track * size of this block. Ask for an extra 16 to make sure we don't break * alignment rules. */ size += 16; if( !(buf = g_try_malloc0( size )) ) { #ifdef DEBUG g_assert_not_reached(); #endif /*DEBUG*/ vips_error( "vips_tracked", _( "out of memory --- size == %dMB" ), (int) (size / (1024.0 * 1024.0)) ); g_warning( _( "out of memory --- size == %dMB" ), (int) (size / (1024.0 * 1024.0)) ); return( NULL ); } g_mutex_lock( vips_tracked_mutex ); *((size_t *)buf) = size; buf = (void *) ((char *)buf + 16); vips_tracked_mem += size; if( vips_tracked_mem > vips_tracked_mem_highwater ) vips_tracked_mem_highwater = vips_tracked_mem; vips_tracked_allocs += 1; #ifdef DEBUG_VERBOSE printf( "vips_tracked_malloc: %p, %zd bytes\n", buf, size ); #endif /*DEBUG_VERBOSE*/ g_mutex_unlock( vips_tracked_mutex ); VIPS_GATE_MALLOC( size ); return( buf ); } /** * vips_tracked_open: * @pathname: name of file to open * @flags: flags for open() * @...: open mode * * Exactly as open(2), but the number of files current open via * vips_tracked_open() is available via vips_tracked_get_files(). This is used * by the vips operation cache to drop cache when the number of files * available is low. * * You must only close the file descriptor with vips_tracked_close(). * * @pathname should be utf8. * * See also: vips_tracked_close(), vips_tracked_get_files(). * * Returns: a file descriptor, or -1 on error. */ int vips_tracked_open( const char *pathname, int flags, ... ) { int fd; mode_t mode; va_list ap; /* mode_t is promoted to int in ..., so we have to pull it out as an * int. */ va_start( ap, flags ); mode = va_arg( ap, int ); va_end( ap ); if( (fd = vips__open( pathname, flags, mode )) == -1 ) return( -1 ); vips_tracked_init(); g_mutex_lock( vips_tracked_mutex ); vips_tracked_files += 1; #ifdef DEBUG_VERBOSE printf( "vips_tracked_open: %s = %d (%d)\n", pathname, fd, vips_tracked_files ); #endif /*DEBUG_VERBOSE*/ g_mutex_unlock( vips_tracked_mutex ); return( fd ); } /** * vips_tracked_close: * @fd: file to close() * * Exactly as close(2), but update the number of files currently open via * vips_tracked_get_files(). This is used * by the vips operation cache to drop cache when the number of files * available is low. * * You must only close file descriptors opened with vips_tracked_open(). * * See also: vips_tracked_open(), vips_tracked_get_files(). * * Returns: a file descriptor, or -1 on error. */ int vips_tracked_close( int fd ) { int result; g_mutex_lock( vips_tracked_mutex ); g_assert( vips_tracked_files > 0 ); vips_tracked_files -= 1; #ifdef DEBUG_VERBOSE printf( "vips_tracked_close: %d (%d)\n", fd, vips_tracked_files ); #endif /*DEBUG_VERBOSE*/ g_mutex_unlock( vips_tracked_mutex ); result = close( fd ); return( result ); } /** * vips_tracked_get_mem: * * Returns the number of bytes currently allocated via vips_malloc() and * friends. vips uses this figure to decide when to start dropping cache, see * #VipsOperation. * * Returns: the number of currently allocated bytes */ size_t vips_tracked_get_mem( void ) { size_t mem; vips_tracked_init(); g_mutex_lock( vips_tracked_mutex ); mem = vips_tracked_mem; g_mutex_unlock( vips_tracked_mutex ); return( mem ); } /** * vips_tracked_get_mem_highwater: * * Returns the largest number of bytes simultaneously allocated via * vips_tracked_malloc(). Handy for estimating max memory requirements for a * program. * * Returns: the largest number of currently allocated bytes */ size_t vips_tracked_get_mem_highwater( void ) { size_t mx; vips_tracked_init(); g_mutex_lock( vips_tracked_mutex ); mx = vips_tracked_mem_highwater; g_mutex_unlock( vips_tracked_mutex ); return( mx ); } /** * vips_tracked_get_allocs: * * Returns the number of active allocations. * * Returns: the number of active allocations */ int vips_tracked_get_allocs( void ) { int n; vips_tracked_init(); g_mutex_lock( vips_tracked_mutex ); n = vips_tracked_allocs; g_mutex_unlock( vips_tracked_mutex ); return( n ); } /** * vips_tracked_get_files: * * Returns the number of open files. * * Returns: the number of open files */ int vips_tracked_get_files( void ) { int n; vips_tracked_init(); g_mutex_lock( vips_tracked_mutex ); n = vips_tracked_files; g_mutex_unlock( vips_tracked_mutex ); return( n ); } libvips-8.9.1/libvips/iofuncs/object.c000066400000000000000000002434651361153320700177500ustar00rootroot00000000000000/* abstract base class for all vips objects * * Edited from nip's base class, 15/10/08 * * 29/5/18 * - added vips_argument_get_id() */ /* Copyright (C) 1991-2003 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define VIPS_DEBUG #define DEBUG_REF */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include "vipsmarshal.h" /** * SECTION: object * @short_description: the VIPS base object class * @stability: Stable * @see_also: operation * @include: vips/vips.h * * The #VipsObject class and associated types and macros. * * #VipsObject is the base class for all objects in libvips. It has the * following major features: * * Functional class creation Vips objects have a very * regular lifecycle: initialise, build, use, destroy. They behave rather like * function calls and are free of side-effects. * * Run-time introspection Vips objects can be fully * introspected at run-time. There is no need for separate source-code * analysis. * * Command-line interface Any vips object can be run from * the command-line with the `vips` driver program. * * ## The #VipsObject lifecycle * * #VipsObject s have a strictly defined lifecycle, split broadly as construct * and then use. In detail, the stages are: * * 1. g_object_new(). The #VipsObject is created with g_object_new(). Objects * in this state are blank slates and need to have their various parameters * set. * * 2. g_object_set(). You loop over the #VipsArgument that the object has * defined with vips_argument_map(). Arguments have a set of flags attached to * them for required, optional, input, output, type, and so on. You must set * all required arguments. * * 3. vips_object_build(). Call this to construct the object and get it ready * for use. Building an object happens in four stages, see below. * * 4. g_object_get(). The object has now been built. You can read out any * computed values. * * 5. g_object_unref(). When you are done with an object, you can unref it. * See the section on reference counting for an explanation of the convention * that #VipsObject uses. When the last ref to an object is released, the * object is closed. Objects close in three stages, see below. * * The stages inside vips_object_build() are: * * 1. Chain up through the object's @build class methods. At each stage, * each class does any initial setup and checking, then chains up to its * superclass. * * 2. The innermost @build method inside #VipsObject itself checks that all * input arguments have been set and then returns. * * 3. All object @build methods now finish executing, from innermost to * outermost. They know all input arguments have been checked and supplied, so * now they set all output arguments. * * 4. vips_object_build() finishes the process by checking that all output * objects have been set, and then triggering the #VipsObject::postbuild * signal. #VipsObject::postbuild only runs if the object has constructed * successfuly. * * #VipsOperation has a cache of recent operation objects, see that class for * an explanation of vips_cache_operation_build(). * * Finally the stages inside close are: * * 1. #VipsObject::preclose. This is emitted at the start of * the #VipsObject dispose. The object is still functioning. * * 2. #VipsObject::close. This runs just after all #VipsArgument held by * the object have been released. * * 3. #VipsObject::postclose. This runs right at the end. The object * pointer is still valid, but nothing else is. * * ## #VipsArgument * * libvips has a simple mechanism for automating at least some aspects of * %GObject properties. You add a set of macros to your _class_init() which * describe the arguments, and set the get and set functions to the vips ones. * * See extending for a complete example. * * ## The #VipsObject reference counting convention * * #VipsObject has a set of conventions to simplify reference counting. * * 1. All input %GObject have a ref added to them, owned by the object. When a * #VipsObject is unreffed, all of these refs to input objects are * automatically dropped. * * 2. All output %GObject hold a ref to the object. When a %GObject which is an * output of a #VipsObject is disposed, it must drop this reference. * #VipsObject which are outputs of other #VipsObject will do this * automatically. * * See #VipsOperation for an example of #VipsObject reference counting. * */ /** * VipsArgumentFlags: * @VIPS_ARGUMENT_NONE: no flags * @VIPS_ARGUMENT_REQUIRED: must be set in the constructor * @VIPS_ARGUMENT_CONSTRUCT: can only be set in the constructor * @VIPS_ARGUMENT_SET_ONCE: can only be set once * @VIPS_ARGUMENT_SET_ALWAYS: don't do use-before-set checks * @VIPS_ARGUMENT_INPUT: is an input argument (one we depend on) * @VIPS_ARGUMENT_OUTPUT: is an output argument (depends on us) * @VIPS_ARGUMENT_DEPRECATED: just there for back-compat, hide * @VIPS_ARGUMENT_MODIFY: the input argument will be modified * * Flags we associate with each object argument. * * Have separate input & output flags. Both set is an error; neither set is OK. * * Input gobjects are automatically reffed, output gobjects automatically ref * us. We also automatically watch for "destroy" and unlink. * * @VIPS_ARGUMENT_SET_ALWAYS is handy for arguments which are set from C. For * example, VipsImage::width is a property that gives access to the Xsize * member of struct _VipsImage. We default its 'assigned' to TRUE * since the field is always set directly by C. * * @VIPS_ARGUMENT_DEPRECATED arguments are not shown in help text, are not * looked for if required, are not checked for "have-been-set". You can * deprecate a required argument, but you must obviously add a new required * argument if you do. * * Input args with @VIPS_ARGUMENT_MODIFY will be modified by the operation. * This is used for things like the in-place drawing operations. */ /* Our signals. */ enum { SIG_POSTBUILD, SIG_PRECLOSE, SIG_CLOSE, SIG_POSTCLOSE, SIG_LAST }; /* Table of all objects, handy for debugging. */ static GHashTable *vips__object_all = NULL; static GMutex *vips__object_all_lock = NULL; static guint vips_object_signals[SIG_LAST] = { 0 }; /* This has to be externally visible for compatibility with older libvipses. */ int _vips__argument_id = 1; /* Keep a cache of nickname -> GType lookups. */ static GHashTable *vips__object_nickname_table = NULL; G_DEFINE_ABSTRACT_TYPE( VipsObject, vips_object, G_TYPE_OBJECT ); /** * vips_argument_get_id: (skip) * * Allocate a new property id. See g_object_class_install_property(). * * Returns: a new property id > 0 */ int vips_argument_get_id( void ) { int id; /* We probably don't need to lock: glib seems to single-thread class * creation. */ id = _vips__argument_id++; return( id ); } /* Don't call this directly, see vips_object_build(). */ static int vips_object_postbuild( VipsObject *object ) { int result; #ifdef DEBUG printf( "vips_object_postbuild: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_signal_emit( object, vips_object_signals[SIG_POSTBUILD], 0, &result ); return( result ); } void vips_object_preclose( VipsObject *object ) { if( !object->preclose ) { object->preclose = TRUE; #ifdef DEBUG printf( "vips_object_preclose: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_signal_emit( object, vips_object_signals[SIG_PRECLOSE], 0 ); } } static void vips_object_close( VipsObject *object ) { if( !object->close ) { object->close = TRUE; #ifdef DEBUG printf( "vips_object_close: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_signal_emit( object, vips_object_signals[SIG_CLOSE], 0 ); } } static void vips_object_postclose( VipsObject *object ) { if( !object->postclose ) { object->postclose = TRUE; #ifdef DEBUG printf( "vips_object_postclose: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_signal_emit( object, vips_object_signals[SIG_POSTCLOSE], 0 ); } } static void * vips_object_check_required( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); int *result = (int *) a; VipsArgumentFlags *iomask = (VipsArgumentFlags *) b; VIPS_DEBUG_MSG( "vips_object_check_required: %s\n", g_param_spec_get_name( pspec ) ); VIPS_DEBUG_MSG( "\trequired: %d\n", argument_class->flags & VIPS_ARGUMENT_REQUIRED ); VIPS_DEBUG_MSG( "\tconstruct: %d\n", argument_class->flags & VIPS_ARGUMENT_CONSTRUCT ); VIPS_DEBUG_MSG( "\tinput: %d\n", argument_class->flags & VIPS_ARGUMENT_INPUT ); VIPS_DEBUG_MSG( "\toutput: %d\n", argument_class->flags & VIPS_ARGUMENT_OUTPUT ); VIPS_DEBUG_MSG( "\tassigned: %d\n", argument_instance->assigned ); if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && !(argument_class->flags & VIPS_ARGUMENT_DEPRECATED) && (argument_class->flags & *iomask) && !argument_instance->assigned ) { vips_error( class->nickname, _( "parameter %s not set" ), g_param_spec_get_name( pspec ) ); *result = -1; } return( NULL ); } int vips_object_build( VipsObject *object ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); /* Input and output args must both be set. */ VipsArgumentFlags iomask = VIPS_ARGUMENT_INPUT | VIPS_ARGUMENT_OUTPUT; int result; #ifdef DEBUG printf( "vips_object_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( object_class->build( object ) ) return( -1 ); /* Check all required arguments have been supplied, don't stop on 1st * error. */ result = 0; (void) vips_argument_map( object, vips_object_check_required, &result, &iomask ); /* ... more checks go here. */ object->constructed = TRUE; /* Only postbuild on success. */ if( !result ) result = vips_object_postbuild( object ); return( result ); } /** * vips_object_summary_class: (skip) * @klass: class to summarise * @buf: write summary here * * Generate a human-readable summary for a class. */ void vips_object_summary_class( VipsObjectClass *klass, VipsBuf *buf ) { klass->summary_class( klass, buf ); } /** * vips_object_summary: (skip) * @object: object to summarise * @buf: write summary here * * Generate a human-readable summary for an object. */ void vips_object_summary( VipsObject *object, VipsBuf *buf ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); class->summary( object, buf ); } /** * vips_object_dump: (skip) * @object: object to dump * @buf: write dump here * * Dump everything that vips knows about an object to a string. */ void vips_object_dump( VipsObject *object, VipsBuf *buf ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); class->dump( object, buf ); } void vips_object_print_summary_class( VipsObjectClass *class ) { char str[2048]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_summary_class( class, &buf ); printf( "%s\n", vips_buf_all( &buf ) ); } void vips_object_print_summary( VipsObject *object ) { char str[2048]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_summary( object, &buf ); printf( "%s\n", vips_buf_all( &buf ) ); } void vips_object_print_dump( VipsObject *object ) { char str[32768]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_dump( object, &buf ); printf( "%s\n", vips_buf_all( &buf ) ); } void vips_object_print_name( VipsObject *object ) { printf( "%s (%p)", G_OBJECT_TYPE_NAME( object ), object ); } gboolean vips_object_sanity( VipsObject *object ) { VipsObjectClass *class; char str[1000]; VipsBuf buf = VIPS_BUF_STATIC( str ); if( !object ) { printf( "vips_object_sanity: null object\n" ); return( FALSE ); } class = VIPS_OBJECT_GET_CLASS( object ); class->sanity( object, &buf ); if( !vips_buf_is_empty( &buf ) ) { printf( "sanity failure: " ); vips_object_print_name( object ); printf( " %s\n", vips_buf_all( &buf ) ); return( FALSE ); } return( TRUE ); } /* On a rewind, we dispose the old contents of the object and * reconstruct. This is used in things like im_pincheck() where a "w" * image has to be rewound and become a "p" image. * * Override in subclasses if you want to preserve some fields, see image.c. */ void vips_object_rewind( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); class->rewind( object ); } /* Extra stuff we track for properties to do our argument handling. */ static void vips_argument_instance_detach( VipsArgumentInstance *argument_instance ) { VipsObject *object = argument_instance->object; VipsArgumentClass *argument_class = argument_instance->argument_class; if( argument_instance->close_id ) { /* If close_id is set, the argument must be a gobject of some * sort, so we can fetch it. */ GObject *member = G_STRUCT_MEMBER( GObject *, object, argument_class->offset ); if( g_signal_handler_is_connected( member, argument_instance->close_id ) ) g_signal_handler_disconnect( member, argument_instance->close_id ); argument_instance->close_id = 0; } if( argument_instance->invalidate_id ) { GObject *member = G_STRUCT_MEMBER( GObject *, object, argument_class->offset ); if( g_signal_handler_is_connected( member, argument_instance->invalidate_id ) ) g_signal_handler_disconnect( member, argument_instance->invalidate_id ); argument_instance->invalidate_id = 0; } } /* Free a VipsArgumentInstance ... VipsArgumentClass can just be g_free()d. */ static void vips_argument_instance_free( VipsArgumentInstance *argument_instance ) { vips_argument_instance_detach( argument_instance ); g_free( argument_instance ); } VipsArgument * vips__argument_table_lookup( VipsArgumentTable *table, GParamSpec *pspec ) { VipsArgument *argument; g_mutex_lock( vips__global_lock ); argument = (VipsArgument *) g_hash_table_lookup( table, pspec ); g_mutex_unlock( vips__global_lock ); return( argument ); } static void vips_argument_table_replace( VipsArgumentTable *table, VipsArgument *argument ) { g_hash_table_replace( table, argument->pspec, argument ); } static void vips_argument_table_destroy( VipsArgumentTable *table ) { g_hash_table_destroy( table ); } /** * vips_argument_map: (skip) * @object: object whose args should be enumerated * @fn: call this function for every argument * @a: client data * @b: client data * * Loop over the vips_arguments to an object. Stop when @fn returns non-%NULL * and return that value. * * Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first * non-%NULL value from @fn. */ void * vips_argument_map( VipsObject *object, VipsArgumentMapFn fn, void *a, void *b ) { /* Make sure we can't go during the loop. This can happen if eg. we * flush an arg that refs us. */ g_object_ref( object ); VIPS_ARGUMENT_FOR_ALL( object, pspec, argument_class, argument_instance ) { void *result; /* argument_instance should not be NULL. */ g_assert( argument_instance ); if( (result = fn( object, pspec, argument_class, argument_instance, a, b )) ) { g_object_unref( object ); return( result ); } } VIPS_ARGUMENT_FOR_ALL_END g_object_unref( object ); return( NULL ); } /** * vips_argument_class_map: (skip) * * And loop over a class. Same as ^^, but with no VipsArgumentInstance. */ void * vips_argument_class_map( VipsObjectClass *object_class, VipsArgumentClassMapFn fn, void *a, void *b ) { GSList *p; for( p = object_class->argument_table_traverse; p; p = p->next ) { VipsArgumentClass *arg_class = (VipsArgumentClass *) p->data; VipsArgument *argument = (VipsArgument *) arg_class; GParamSpec *pspec = argument->pspec; void *result; if( (result = fn( object_class, pspec, arg_class, a, b )) ) return( result ); } return( NULL ); } /* Does an vipsargument need an argument to write to? For example, an image * output needs a filename, a double output just prints. */ gboolean vips_argument_class_needsstring( VipsArgumentClass *argument_class ) { GParamSpec *pspec = ((VipsArgument *) argument_class)->pspec; GType otype; VipsObjectClass *oclass; if( G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) /* Bools, input or output, don't need args. */ return( FALSE ); if( argument_class->flags & VIPS_ARGUMENT_INPUT ) /* All other inputs need something. */ return( TRUE ); /* Just output objects. */ if( (otype = G_PARAM_SPEC_VALUE_TYPE( pspec )) && g_type_is_a( otype, VIPS_TYPE_OBJECT ) && (oclass = g_type_class_ref( otype )) ) /* For now, only vipsobject subclasses can ask for args. */ return( oclass->output_needs_arg ); else return( FALSE ); } /* Create a VipsArgumentInstance for each installed argument property. Ideally * we'd do this during _init() but g_object_class_find_property() does not seem * to work then :-( so we have to delay it until first access. See * vips__argument_get_instance(). */ static void vips_argument_init( VipsObject *object ) { if( !object->argument_table ) { #ifdef DEBUG printf( "vips_argument_init: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ object->argument_table = g_hash_table_new_full( g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) vips_argument_instance_free ); /* Make a VipsArgumentInstance for each installed argument * property. We can't use vips_argument_map() since that does * some sanity checks that won't pass until all arg instance * are built. */ VIPS_ARGUMENT_FOR_ALL( object, pspec, argument_class, argument_instance ) { #ifdef DEBUG printf( "vips_argument_init: " "adding instance argument for %s\n", g_param_spec_get_name( pspec ) ); #endif /*DEBUG*/ /* argument_instance should be NULL since we've not * set it yet. */ g_assert( argument_instance == NULL ); argument_instance = g_new( VipsArgumentInstance, 1 ); ((VipsArgument *) argument_instance)->pspec = pspec; argument_instance->argument_class = argument_class; argument_instance->object = object; /* SET_ALWAYS args default to assigned. */ argument_instance->assigned = argument_class->flags & VIPS_ARGUMENT_SET_ALWAYS; argument_instance->close_id = 0; argument_instance->invalidate_id = 0; vips_argument_table_replace( object->argument_table, (VipsArgument *) argument_instance ); } VIPS_ARGUMENT_FOR_ALL_END } } /** * vips__argument_get_instance: (skip) * * Convenience ... given the VipsArgumentClass, get the VipsArgumentInstance. */ VipsArgumentInstance * vips__argument_get_instance( VipsArgumentClass *argument_class, VipsObject *object ) { /* Make sure the instance args are built. */ vips_argument_init( object ); return( (VipsArgumentInstance *) vips__argument_table_lookup( object->argument_table, ((VipsArgument *) argument_class)->pspec ) ); } /** * vips_object_get_argument: (skip) * @object: the object to fetch the args from * @name: arg to fetch * @pspec: (transfer none): the pspec for this arg * @argument_class: (transfer none): the argument_class for this arg * @argument_instance: (transfer none): the argument_instance for this arg * * Look up the three things you need to work with a vips argument. * * Returns: 0 on success, or -1 on error. */ int vips_object_get_argument( VipsObject *object, const char *name, GParamSpec **pspec, VipsArgumentClass **argument_class, VipsArgumentInstance **argument_instance ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); if( !(*pspec = g_object_class_find_property( G_OBJECT_CLASS( class ), name )) ) { vips_error( class->nickname, _( "no property named `%s'" ), name ); return( -1 ); } if( !(*argument_class = (VipsArgumentClass *) vips__argument_table_lookup( class->argument_table, *pspec )) ) { vips_error( class->nickname, _( "no vips argument named `%s'" ), name ); return( -1 ); } if( !(*argument_instance = vips__argument_get_instance( *argument_class, object )) ) { vips_error( class->nickname, _( "argument `%s' has no instance" ), name ); return( -1 ); } return( 0 ); } /** * vips_object_argument_isset: * @object: the object to fetch the args from * @name: arg to fetch * * Convenience: has an argument been assigned. Useful for bindings. * * Returns: %TRUE if the argument has been assigned. */ gboolean vips_object_argument_isset( VipsObject *object, const char *name ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( FALSE ); return( argument_instance->assigned ); } /** * vips_object_get_argument_flags: * @object: the object to fetch the args from * @name: arg to fetch * * Convenience: get the flags for an argument. Useful for bindings. * * Returns: The #VipsArgumentFlags for this argument. */ VipsArgumentFlags vips_object_get_argument_flags( VipsObject *object, const char *name ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( 0 ); return( argument_class->flags ); } /** * vips_object_get_argument_priority: * @object: the object to fetch the args from * @name: arg to fetch * * Convenience: get the priority for an argument. Useful for bindings. * * Returns: The priority of this argument. */ int vips_object_get_argument_priority( VipsObject *object, const char *name ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( 0 ); return( argument_class->priority ); } static void vips_object_clear_member( VipsArgumentInstance *argument_instance ) { VipsObject *object = argument_instance->object; VipsArgumentClass *argument_class = argument_instance->argument_class; GObject **member = &G_STRUCT_MEMBER( GObject *, object, argument_class->offset ); vips_argument_instance_detach( argument_instance ); if( *member ) { if( argument_class->flags & VIPS_ARGUMENT_INPUT ) { #ifdef DEBUG_REF printf( "vips_object_clear_member: vips object: " ); vips_object_print_name( object ); printf( " no longer refers to gobject %s (%p)\n", G_OBJECT_TYPE_NAME( *member ), *member ); printf( " count down to %d\n", G_OBJECT( *member )->ref_count - 1 ); #endif /*DEBUG_REF*/ /* We reffed the object. */ g_object_unref( *member ); } else if( argument_class->flags & VIPS_ARGUMENT_OUTPUT ) { #ifdef DEBUG_REF printf( "vips_object_clear_member: gobject %s (%p)\n", G_OBJECT_TYPE_NAME( *member ), *member ); printf( " no longer refers to vips object: " ); vips_object_print_name( object ); printf( " count down to %d\n", G_OBJECT( object )->ref_count - 1 ); #endif /*DEBUG_REF*/ g_object_unref( object ); } *member = NULL; } } /* Free any args which are holding resources. */ static void * vips_object_dispose_argument( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { g_assert( ((VipsArgument *) argument_class)->pspec == pspec ); g_assert( ((VipsArgument *) argument_instance)->pspec == pspec ); if( G_IS_PARAM_SPEC_OBJECT( pspec ) || G_IS_PARAM_SPEC_BOXED( pspec ) ) { #ifdef DEBUG printf( "vips_object_dispose_argument: " ); vips_object_print_name( object ); printf( ".%s\n", g_param_spec_get_name( pspec ) ); #endif /*DEBUG*/ g_object_set( object, g_param_spec_get_name( pspec ), NULL, NULL ); } return( NULL ); } /* Free all args on this object which may be holding resources. * * Note that this is not the same as vips_object_unref_outputs(). That * looks for output objects which may have been created during _build() which * hold refs to this object and unrefs them. * * This function looks for objects which this object holds refs to and which * may be holding sub-resources and zaps them. */ static void vips_argument_dispose_all( VipsObject *object ) { #ifdef DEBUG printf( "vips_argument_dispose_all: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ vips_argument_map( object, vips_object_dispose_argument, NULL, NULL ); } /* Free any args which are holding memory. */ static void * vips_object_free_argument( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { g_assert( ((VipsArgument *) argument_class)->pspec == pspec ); g_assert( ((VipsArgument *) argument_instance)->pspec == pspec ); if( G_IS_PARAM_SPEC_STRING( pspec ) ) { #ifdef DEBUG printf( "vips_object_free_argument: " ); vips_object_print_name( object ); printf( ".%s\n", g_param_spec_get_name( pspec ) ); #endif /*DEBUG*/ g_object_set( object, g_param_spec_get_name( pspec ), NULL, NULL ); } return( NULL ); } /* Free args which hold memory. Things like strings need to be freed right at * the end in case anyone is still using them. */ static void vips_argument_free_all( VipsObject *object ) { #ifdef DEBUG printf( "vips_argument_free_all: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ vips_argument_map( object, vips_object_free_argument, NULL, NULL ); } static void vips_object_dispose( GObject *gobject ) { VipsObject *object = VIPS_OBJECT( gobject ); #ifdef DEBUG printf( "vips_object_dispose: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ /* Our subclasses should have already called this. Run it again, just * in case. */ #ifdef DEBUG if( !object->preclose ) printf( "vips_object_dispose: pre-close missing!\n" ); #endif /*DEBUG*/ vips_object_preclose( object ); /* Clear all our arguments: they may be holding resources we should * drop. */ vips_argument_dispose_all( object ); vips_object_close( object ); vips_object_postclose( object ); vips_argument_free_all( object ); VIPS_FREEF( vips_argument_table_destroy, object->argument_table ); G_OBJECT_CLASS( vips_object_parent_class )->dispose( gobject ); } static void vips_object_finalize( GObject *gobject ) { VipsObject *object = VIPS_OBJECT( gobject ); #ifdef DEBUG printf( "vips_object_finalize: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ /* I'd like to have post-close in here, but you can't emit signals * from finalize, sadly. */ g_mutex_lock( vips__object_all_lock ); g_hash_table_remove( vips__object_all, object ); g_mutex_unlock( vips__object_all_lock ); G_OBJECT_CLASS( vips_object_parent_class )->finalize( gobject ); } static void vips_object_arg_invalidate( GObject *argument, VipsArgumentInstance *argument_instance ) { /* Image @argument has signalled "invalidate" ... resignal on our * operation. */ if( VIPS_IS_OPERATION( argument_instance->object ) ) vips_operation_invalidate( VIPS_OPERATION( argument_instance->object ) ); } static void vips_object_arg_close( GObject *argument, VipsArgumentInstance *argument_instance ) { VipsObject *object = argument_instance->object; GParamSpec *pspec = ((VipsArgument *) argument_instance)->pspec; /* Argument had reffed us ... now it's being closed, so we NULL out * the pointer to unref. */ g_object_set( object, g_param_spec_get_name( pspec ), NULL, NULL ); } /* Set a member to an object. Handle the ref counts and signal * connect/disconnect. */ void vips__object_set_member( VipsObject *object, GParamSpec *pspec, GObject **member, GObject *argument ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsArgumentClass *argument_class = (VipsArgumentClass *) vips__argument_table_lookup( class->argument_table, pspec ); VipsArgumentInstance *argument_instance = vips__argument_get_instance( argument_class, object ); GType otype = G_PARAM_SPEC_VALUE_TYPE( pspec ); g_assert( argument_instance ); vips_object_clear_member( argument_instance ); g_assert( !*member ); *member = argument; if( *member ) { if( argument_class->flags & VIPS_ARGUMENT_INPUT ) { #ifdef DEBUG_REF printf( "vips__object_set_member: vips object: " ); vips_object_print_name( object ); printf( " refers to gobject %s (%p)\n", G_OBJECT_TYPE_NAME( *member ), *member ); printf( " count up to %d\n", G_OBJECT( *member )->ref_count ); #endif /*DEBUG_REF*/ /* Ref the argument. */ g_object_ref( *member ); } else if( argument_class->flags & VIPS_ARGUMENT_OUTPUT ) { #ifdef DEBUG_REF printf( "vips__object_set_member: gobject %s (%p)\n", G_OBJECT_TYPE_NAME( *member ), *member ); printf( " refers to vips object: " ); vips_object_print_name( object ); printf( " count up to %d\n", G_OBJECT (object)->ref_count ); #endif /*DEBUG_REF*/ /* The argument reffs us. */ g_object_ref( object ); } } if( *member && g_type_is_a( otype, VIPS_TYPE_IMAGE ) ) { if( argument_class->flags & VIPS_ARGUMENT_INPUT ) { g_assert( !argument_instance->invalidate_id ); argument_instance->invalidate_id = g_signal_connect( *member, "invalidate", G_CALLBACK( vips_object_arg_invalidate ), argument_instance ); } else if( argument_class->flags & VIPS_ARGUMENT_OUTPUT ) { g_assert( !argument_instance->close_id ); argument_instance->close_id = g_signal_connect( *member, "close", G_CALLBACK( vips_object_arg_close ), argument_instance ); } } } /* Is a value NULL? We allow multiple sets of NULL so props can be cleared. * The pspec gives the value type, for consistency with the way value types * are detected in set and get. */ gboolean vips_value_is_null( GParamSpec *pspec, const GValue *value ) { if( G_IS_PARAM_SPEC_STRING( pspec ) && !g_value_get_string( value ) ) return( TRUE ); if( G_IS_PARAM_SPEC_OBJECT( pspec ) && !g_value_get_object( value ) ) return( TRUE ); if( G_IS_PARAM_SPEC_POINTER( pspec ) && !g_value_get_pointer( value ) ) return( TRUE ); if( G_IS_PARAM_SPEC_BOXED( pspec ) && !g_value_get_boxed( value ) ) return( TRUE ); return( FALSE ); } /* Also used by subclasses, so not static. */ void vips_object_set_property( GObject *gobject, guint property_id, const GValue *value, GParamSpec *pspec ) { VipsObject *object = VIPS_OBJECT( gobject ); VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( gobject ); VipsArgumentClass *argument_class = (VipsArgumentClass *) vips__argument_table_lookup( class->argument_table, pspec ); VipsArgumentInstance *argument_instance = vips__argument_get_instance( argument_class, object ); g_assert( argument_instance ); #ifdef DEBUG printf( "vips_object_set_property: " ); vips_object_print_name( object ); printf( ".%s\n", g_param_spec_get_name( pspec ) ); /* This can crash horribly with some values, have it as a separate * chunk so we can easily comment it out. */ { char *str_value; str_value = g_strdup_value_contents( value ); printf( "\t%s\n", str_value ); g_free( str_value ); } #endif /*DEBUG*/ g_assert( ((VipsArgument *) argument_class)->pspec == pspec ); g_assert( ((VipsArgument *) argument_instance)->pspec == pspec ); /* If this is a construct-only argument, we can only set before we've * built. */ if( argument_class->flags & VIPS_ARGUMENT_CONSTRUCT && object->constructed && !vips_value_is_null( pspec, value ) ) { g_warning( "%s: %s can't assign '%s' after construct", G_STRLOC, G_OBJECT_TYPE_NAME( gobject ), g_param_spec_get_name( pspec ) ); return; } /* If this is a set-once argument, check we've not set it before. */ if( argument_class->flags & VIPS_ARGUMENT_SET_ONCE && argument_instance->assigned && !vips_value_is_null( pspec, value ) ) { g_warning( "%s: %s can only assign '%s' once", G_STRLOC, G_OBJECT_TYPE_NAME( gobject ), g_param_spec_get_name( pspec ) ); return; } /* We can't use a switch since some param specs don't have fundamental * types and are hence not compile-time constants, argh. */ if( G_IS_PARAM_SPEC_STRING( pspec ) ) { char **member = &G_STRUCT_MEMBER( char *, object, argument_class->offset ); if( *member ) g_free( *member ); *member = g_value_dup_string( value ); } else if( G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject **member = &G_STRUCT_MEMBER( GObject *, object, argument_class->offset ); vips__object_set_member( object, pspec, member, g_value_get_object( value ) ); } else if( G_IS_PARAM_SPEC_INT( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); *member = g_value_get_int( value ); } else if( G_IS_PARAM_SPEC_UINT64( pspec ) ) { guint64 *member = &G_STRUCT_MEMBER( guint64, object, argument_class->offset ); *member = g_value_get_uint64( value ); } else if( G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) { gboolean *member = &G_STRUCT_MEMBER( gboolean, object, argument_class->offset ); *member = g_value_get_boolean( value ); } else if( G_IS_PARAM_SPEC_ENUM( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); *member = g_value_get_enum( value ); } else if( G_IS_PARAM_SPEC_FLAGS( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); *member = g_value_get_flags( value ); } else if( G_IS_PARAM_SPEC_POINTER( pspec ) ) { gpointer *member = &G_STRUCT_MEMBER( gpointer, object, argument_class->offset ); *member = g_value_get_pointer( value ); } else if( G_IS_PARAM_SPEC_DOUBLE( pspec ) ) { double *member = &G_STRUCT_MEMBER( double, object, argument_class->offset ); *member = g_value_get_double( value ); } else if( G_IS_PARAM_SPEC_BOXED( pspec ) ) { gpointer *member = &G_STRUCT_MEMBER( gpointer, object, argument_class->offset ); if( *member ) { g_boxed_free( G_PARAM_SPEC_VALUE_TYPE( pspec ), *member ); *member = NULL; } /* Copy the boxed into our pointer (will use eg. * vips__object_vector_dup()). */ *member = g_value_dup_boxed( value ); } else { g_warning( "%s: %s.%s unimplemented property type %s", G_STRLOC, G_OBJECT_TYPE_NAME( gobject ), g_param_spec_get_name( pspec ), g_type_name( G_PARAM_SPEC_VALUE_TYPE( pspec ) ) ); } /* Note that it's now been set. */ argument_instance->assigned = TRUE; } /* Also used by subclasses, so not static. */ void vips_object_get_property( GObject *gobject, guint property_id, GValue *value, GParamSpec *pspec ) { VipsObject *object = VIPS_OBJECT( gobject ); VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( gobject ); VipsArgumentClass *argument_class = (VipsArgumentClass *) vips__argument_table_lookup( class->argument_table, pspec ); VipsArgumentInstance *argument_instance = vips__argument_get_instance( argument_class, object ); g_assert( ((VipsArgument *) argument_class)->pspec == pspec ); if( !argument_instance->assigned ) { /* Set the value to the default. Things like Ruby * gobject-introspection will walk objects during GC, and we * can find ourselves fetching object values between init and * build. */ g_param_value_set_default( pspec, value ); return; } if( G_IS_PARAM_SPEC_STRING( pspec ) ) { char *member = G_STRUCT_MEMBER( char *, object, argument_class->offset ); g_value_set_string( value, member ); } else if( G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject **member = &G_STRUCT_MEMBER( GObject *, object, argument_class->offset ); g_value_set_object( value, *member ); } else if( G_IS_PARAM_SPEC_INT( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); g_value_set_int( value, *member ); } else if( G_IS_PARAM_SPEC_UINT64( pspec ) ) { guint64 *member = &G_STRUCT_MEMBER( guint64, object, argument_class->offset ); g_value_set_uint64( value, *member ); } else if( G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) { gboolean *member = &G_STRUCT_MEMBER( gboolean, object, argument_class->offset ); g_value_set_boolean( value, *member ); } else if( G_IS_PARAM_SPEC_ENUM( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); g_value_set_enum( value, *member ); } else if( G_IS_PARAM_SPEC_FLAGS( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); g_value_set_flags( value, *member ); } else if( G_IS_PARAM_SPEC_POINTER( pspec ) ) { gpointer *member = &G_STRUCT_MEMBER( gpointer, object, argument_class->offset ); g_value_set_pointer( value, *member ); } else if( G_IS_PARAM_SPEC_DOUBLE( pspec ) ) { double *member = &G_STRUCT_MEMBER( double, object, argument_class->offset ); g_value_set_double( value, *member ); } else if( G_IS_PARAM_SPEC_BOXED( pspec ) ) { gpointer *member = &G_STRUCT_MEMBER( gpointer, object, argument_class->offset ); /* Copy the boxed into our pointer (will use eg. * vips__object_vector_dup ()). */ g_value_set_boxed( value, *member ); } else { g_warning( "%s: %s.%s unimplemented property type %s", G_STRLOC, G_OBJECT_TYPE_NAME( gobject ), g_param_spec_get_name( pspec ), g_type_name( G_PARAM_SPEC_VALUE_TYPE( pspec ) ) ); } } static int vips_object_real_build( VipsObject *object ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); /* Only test input args, output ones can be set by our subclasses as * they build. See vips_object_build() above. */ VipsArgumentFlags iomask = VIPS_ARGUMENT_INPUT; int result; #ifdef DEBUG printf( "vips_object_real_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_assert( !object->constructed ); /* It'd be nice if this just copied a pointer rather than did a * strdup(). Set these here rather than in object_init, so that the * class gets a chance to set them. */ g_object_set( object, "nickname", object_class->nickname, "description", object_class->description, NULL ); /* Check all required input arguments have been supplied, don't stop * on 1st error. */ result = 0; (void) vips_argument_map( object, vips_object_check_required, &result, &iomask ); return( result ); } static int vips_object_real_postbuild( VipsObject *object ) { #ifdef DEBUG printf( "vips_object_real_postbuild: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_assert( object->constructed ); return( 0 ); } static void vips_object_real_summary_class( VipsObjectClass *class, VipsBuf *buf ) { vips_buf_appendf( buf, "%s", G_OBJECT_CLASS_NAME( class ) ); if( class->nickname ) vips_buf_appendf( buf, " (%s)", class->nickname ); if( class->description ) vips_buf_appendf( buf, ", %s", class->description ); } static void vips_object_real_summary( VipsObject *object, VipsBuf *buf ) { } static void vips_object_real_dump( VipsObject *object, VipsBuf *buf ) { vips_buf_appendf( buf, " %s (%p) count=%d", G_OBJECT_TYPE_NAME( object ), object, G_OBJECT( object )->ref_count ); if( object->local_memory ) vips_buf_appendf( buf, " %zd bytes", object->local_memory ); } static void vips_object_real_sanity( VipsObject *object, VipsBuf *buf ) { } static void vips_object_real_rewind( VipsObject *object ) { #ifdef DEBUG printf( "vips_object_real_rewind\n" ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_object_run_dispose( G_OBJECT( object ) ); object->constructed = FALSE; object->preclose = FALSE; object->close = FALSE; object->postclose = FALSE; } static VipsObject * vips_object_real_new_from_string( const char *string ) { GType type; vips_check_init(); /* The main arg selects the subclass. */ if( !(type = vips_type_find( NULL, string )) ) { vips_error( "VipsObject", _( "class \"%s\" not found" ), string ); return( NULL ); } return( VIPS_OBJECT( g_object_new( type, NULL ) ) ); } static void vips_object_real_to_string( VipsObject *object, VipsBuf *buf ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); /* Just "bicubic" or whatever. */ vips_buf_appends( buf, class->nickname ); } static void transform_string_double( const GValue *src_value, GValue *dest_value ) { g_value_set_double( dest_value, g_ascii_strtod( g_value_get_string( src_value ), NULL ) ); } static void vips_object_class_init( VipsObjectClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); if( !vips__object_all ) { vips__object_all = g_hash_table_new( g_direct_hash, g_direct_equal ); vips__object_all_lock = vips_g_mutex_new(); } gobject_class->dispose = vips_object_dispose; gobject_class->finalize = vips_object_finalize; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; class->build = vips_object_real_build; class->postbuild = vips_object_real_postbuild; class->summary_class = vips_object_real_summary_class; class->summary = vips_object_real_summary; class->dump = vips_object_real_dump; class->sanity = vips_object_real_sanity; class->rewind = vips_object_real_rewind; class->new_from_string = vips_object_real_new_from_string; class->to_string = vips_object_real_to_string; class->nickname = "object"; class->description = _( "base class" ); /* Table of VipsArgumentClass ... we can just g_free() them. */ class->argument_table = g_hash_table_new_full( g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) g_free ); class->argument_table_traverse = NULL; /* For setting double arguments from the command-line. */ g_value_register_transform_func( G_TYPE_STRING, G_TYPE_DOUBLE, transform_string_double ); VIPS_ARG_STRING( class, "nickname", 1, _( "Nickname" ), _( "Class nickname" ), VIPS_ARGUMENT_SET_ONCE, G_STRUCT_OFFSET( VipsObject, nickname ), "" ); VIPS_ARG_STRING( class, "description", 2, _( "Description" ), _( "Class description" ), VIPS_ARGUMENT_SET_ONCE, G_STRUCT_OFFSET( VipsObject, description ), "" ); /** * VipsObject::postbuild: * @object: the object that has been built * * The ::postbuild signal is emitted once just after successful object * construction. Return non-zero to cause object construction to fail. */ vips_object_signals[SIG_POSTBUILD] = g_signal_new( "postbuild", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsObjectClass, postbuild ), NULL, NULL, vips_INT__VOID, G_TYPE_INT, 0 ); /** * VipsObject::preclose: * @object: the object that is to close * * The ::preclose signal is emitted once just before object close * starts. The oject is still alive. */ vips_object_signals[SIG_PRECLOSE] = g_signal_new( "preclose", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsObjectClass, preclose ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); /** * VipsObject::close: * @object: the object that is closing * * The ::close signal is emitted once during object close. The object * is dying and may not work. */ vips_object_signals[SIG_CLOSE] = g_signal_new( "close", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsObjectClass, close ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); /** * VipsObject::postclose: * @object: the object that has closed * * The ::postclose signal is emitted once after object close. The * object pointer is still valid, but nothing else. */ vips_object_signals[SIG_POSTCLOSE] = g_signal_new( "postclose", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsObjectClass, postclose ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); } static void vips_object_init( VipsObject *object ) { #ifdef DEBUG printf( "vips_object_init: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_mutex_lock( vips__object_all_lock ); g_hash_table_insert( vips__object_all, object, object ); g_mutex_unlock( vips__object_all_lock ); } static void * traverse_find_required_priority( void *data, void *a, void *b ) { VipsArgumentClass *argument_class = (VipsArgumentClass *) data; int priority = GPOINTER_TO_INT( a ); if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) && !(argument_class->flags & VIPS_ARGUMENT_DEPRECATED) && argument_class->priority == priority ) return( argument_class ); return( NULL ); } static gint traverse_sort( gconstpointer a, gconstpointer b ) { VipsArgumentClass *class1 = (VipsArgumentClass *) a; VipsArgumentClass *class2 = (VipsArgumentClass *) b; return( class1->priority - class2->priority ); } /* Add a vipsargument ... automate some stuff with this. */ void vips_object_class_install_argument( VipsObjectClass *object_class, GParamSpec *pspec, VipsArgumentFlags flags, int priority, guint offset ) { VipsArgumentClass *argument_class = g_new( VipsArgumentClass, 1 ); GSList *argument_table_traverse; VipsArgumentClass *ac; #ifdef DEBUG printf( "vips_object_class_install_argument: %p %s %s\n", object_class, g_type_name( G_TYPE_FROM_CLASS( object_class ) ), g_param_spec_get_name( pspec ) ); #endif /*DEBUG*/ /* object_class->argument* is shared, so we must lock. */ g_mutex_lock( vips__global_lock ); /* Must be a new one. */ g_assert( !g_hash_table_lookup( object_class->argument_table, pspec ) ); /* Mustn't have INPUT and OUTPUT both set. */ g_assert( !( (flags & VIPS_ARGUMENT_INPUT) && (flags & VIPS_ARGUMENT_OUTPUT)) ); ((VipsArgument *) argument_class)->pspec = pspec; argument_class->object_class = object_class; argument_class->flags = flags; argument_class->priority = priority; argument_class->offset = offset; vips_argument_table_replace( object_class->argument_table, (VipsArgument *) argument_class ); /* If this is the first argument for a new subclass, we need to clone * the traverse list we inherit. */ if( object_class->argument_table_traverse_gtype != G_TYPE_FROM_CLASS( object_class ) ) { #ifdef DEBUG printf( "vips_object_class_install_argument: " "cloning traverse\n" ); #endif /*DEBUG*/ object_class->argument_table_traverse = g_slist_copy( object_class->argument_table_traverse ); object_class->argument_table_traverse_gtype = G_TYPE_FROM_CLASS( object_class ); } /* We read argument_table_traverse without a lock (eg. see * vips_argument_map()), so we must be very careful updating it. */ argument_table_traverse = g_slist_copy( object_class->argument_table_traverse ); /* We keep traverse sorted by priority, so we musn't have duplicate * priority values in required args. */ if( (flags & VIPS_ARGUMENT_REQUIRED) && !(flags & VIPS_ARGUMENT_DEPRECATED) && (ac = vips_slist_map2( argument_table_traverse, traverse_find_required_priority, GINT_TO_POINTER( priority ), NULL )) ) g_warning( "vips_object_class_install_argument: " "%s.%s, %s.%s duplicate priority", g_type_name( G_TYPE_FROM_CLASS( object_class ) ), g_param_spec_get_name( pspec ), g_type_name( G_TYPE_FROM_CLASS( ac->object_class ) ), g_param_spec_get_name( ((VipsArgument *) ac)->pspec ) ); /* Warn about optional boolean args which default TRUE. These won't * work from the CLI, since simple GOption switches don't allow * `=false`. */ if( !(flags & VIPS_ARGUMENT_REQUIRED) && !(flags & VIPS_ARGUMENT_DEPRECATED) && G_IS_PARAM_SPEC_BOOLEAN( pspec ) && G_PARAM_SPEC_BOOLEAN( pspec )->default_value ) g_warning( "vips_object_class_install_argument: " "default TRUE BOOL arg %s.%s", g_type_name( G_TYPE_FROM_CLASS( object_class ) ), g_param_spec_get_name( pspec ) ); argument_table_traverse = g_slist_prepend( argument_table_traverse, argument_class ); argument_table_traverse = g_slist_sort( argument_table_traverse, traverse_sort ); VIPS_SWAP( GSList *, argument_table_traverse, object_class->argument_table_traverse ); g_slist_free( argument_table_traverse ); #ifdef DEBUG { GSList *p; printf( "%d items on traverse %p\n", g_slist_length( object_class->argument_table_traverse ), &object_class->argument_table_traverse ); for( p = object_class->argument_table_traverse; p; p = p->next ) { VipsArgumentClass *argument_class = (VipsArgumentClass *) p->data; printf( "\t%p %s\n", argument_class, g_param_spec_get_name( ((VipsArgument *) argument_class)->pspec ) ); } } #endif /*DEBUG*/ g_mutex_unlock( vips__global_lock ); } static void vips_object_no_value( VipsObject *object, const char *name ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) g_assert_not_reached(); if( strcmp( name, g_param_spec_get_name( pspec ) ) == 0 ) vips_error( class->nickname, _( "no value supplied for argument '%s'" ), name ); else vips_error( class->nickname, _( "no value supplied for argument '%s' ('%s')" ), name, g_param_spec_get_name( pspec ) ); } /* Set a named arg from a string. */ int vips_object_set_argument_from_string( VipsObject *object, const char *name, const char *value ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; VipsObjectClass *oclass; GType otype; GValue gvalue = { 0 }; VIPS_DEBUG_MSG( "vips_object_set_argument_from_string: %s = %s\n", name, value ); if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); otype = G_PARAM_SPEC_VALUE_TYPE( pspec ); g_assert( argument_class->flags & VIPS_ARGUMENT_INPUT ); if( g_type_is_a( otype, VIPS_TYPE_IMAGE ) ) { VipsImage *out; VipsOperationFlags flags; VipsAccess access; char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; flags = 0; if( VIPS_IS_OPERATION( object ) ) flags = vips_operation_get_flags( VIPS_OPERATION( object ) ); if( flags & (VIPS_OPERATION_SEQUENTIAL_UNBUFFERED | VIPS_OPERATION_SEQUENTIAL) ) access = VIPS_ACCESS_SEQUENTIAL; else access = VIPS_ACCESS_RANDOM; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } vips__filename_split8( value, filename, option_string ); if( strcmp( "stdin", filename ) == 0 ) { VipsSource *source; if( !(source = vips_source_new_from_descriptor( 0 )) ) return( -1 ); if( !(out = vips_image_new_from_source( source, option_string, "access", access, NULL )) ) { VIPS_UNREF( source ); return( -1 ); } VIPS_UNREF( source ); } else { if( !(out = vips_image_new_from_file( value, "access", access, NULL )) ) return( -1 ); } g_value_init( &gvalue, VIPS_TYPE_IMAGE ); g_value_set_object( &gvalue, out ); /* Setting gvalue will have upped @out's count again, * go back to 1 so that gvalue has the only ref. */ g_object_unref( out ); } else if( g_type_is_a( otype, VIPS_TYPE_SOURCE ) ) { VipsSource *source; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( !(source = vips_source_new_from_options( value )) ) return( -1 ); g_value_init( &gvalue, VIPS_TYPE_SOURCE ); g_value_set_object( &gvalue, source ); /* Setting gvalue will have upped @out's count again, * go back to 1 so that gvalue has the only ref. */ g_object_unref( source ); } else if( g_type_is_a( otype, VIPS_TYPE_ARRAY_IMAGE ) ) { /* We have to have a special case for this, we can't just rely * on transform_g_string_array_image(), since we need to be * able to set the access hint on the image. */ VipsArrayImage *array_image; VipsOperationFlags flags; VipsAccess access; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } flags = 0; if( VIPS_IS_OPERATION( object ) ) flags = vips_operation_get_flags( VIPS_OPERATION( object ) ); if( flags & (VIPS_OPERATION_SEQUENTIAL_UNBUFFERED | VIPS_OPERATION_SEQUENTIAL) ) access = VIPS_ACCESS_SEQUENTIAL; else access = VIPS_ACCESS_RANDOM; if( !(array_image = vips_array_image_new_from_string( value, access )) ) return( -1 ); g_value_init( &gvalue, VIPS_TYPE_ARRAY_IMAGE ); g_value_set_boxed( &gvalue, array_image ); /* Setting gvalue will have upped @array_image's count again, * go back to 1 so that gvalue has the only ref. */ vips_area_unref( VIPS_AREA( array_image ) ); } else if( g_type_is_a( otype, VIPS_TYPE_OBJECT ) && (oclass = g_type_class_ref( otype )) ) { VipsObject *new_object; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( !(new_object = vips_object_new_from_string( oclass, value )) ) return( -1 ); /* Not necessarily a VipsOperation subclass so we don't use * the cache. We could have a separate case for this. */ if( vips_object_build( new_object ) ) { g_object_unref( new_object ); return( -1 ); } g_value_init( &gvalue, G_TYPE_OBJECT ); g_value_set_object( &gvalue, new_object ); /* The GValue now has a ref, we can drop ours. */ g_object_unref( new_object ); } else if( G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) { gboolean b; b = TRUE; if( value && (g_ascii_strcasecmp( value, "false" ) == 0 || g_ascii_strcasecmp( value, "no" ) == 0 || strcmp( value, "0" ) == 0) ) b = FALSE; g_value_init( &gvalue, G_TYPE_BOOLEAN ); g_value_set_boolean( &gvalue, b ); } else if( G_IS_PARAM_SPEC_INT( pspec ) ) { int i; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( sscanf( value, "%d", &i ) != 1 ) { vips_error( class->nickname, _( "'%s' is not an integer" ), value ); return( -1 ); } g_value_init( &gvalue, G_TYPE_INT ); g_value_set_int( &gvalue, i ); } else if( G_IS_PARAM_SPEC_UINT64( pspec ) ) { /* Not allways the same as guint64 :-( argh. */ long long l; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( sscanf( value, "%lld", &l ) != 1 ) { vips_error( class->nickname, _( "'%s' is not an integer" ), value ); return( -1 ); } g_value_init( &gvalue, G_TYPE_UINT64 ); g_value_set_uint64( &gvalue, l ); } else if( G_IS_PARAM_SPEC_DOUBLE( pspec ) ) { double d; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( sscanf( value, "%lg", &d ) != 1 ) { vips_error( class->nickname, _( "'%s' is not a double" ), value ); return( -1 ); } g_value_init( &gvalue, G_TYPE_DOUBLE ); g_value_set_double( &gvalue, d ); } else if( G_IS_PARAM_SPEC_ENUM( pspec ) ) { int i; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( (i = vips_enum_from_nick( class->nickname, otype, value )) < 0 ) return( -1 ); g_value_init( &gvalue, otype ); g_value_set_enum( &gvalue, i ); } else if( G_IS_PARAM_SPEC_FLAGS( pspec ) ) { /* Allow a symbolic name, or an int. */ int i; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( sscanf( value, "%d", &i ) != 1 && (i = vips_flags_from_nick( class->nickname, otype, value )) < 0 ) { vips_error( class->nickname, _( "'%s' is not an integer" ), value ); return( -1 ); } g_value_init( &gvalue, otype ); g_value_set_flags( &gvalue, i ); } else { if( !value ) { vips_object_no_value( object, name ); return( -1 ); } g_value_init( &gvalue, G_TYPE_STRING ); g_value_set_string( &gvalue, value ); } g_object_set_property( G_OBJECT( object ), name, &gvalue ); g_value_unset( &gvalue ); return( 0 ); } /* Does an vipsargument need an argument to write to? For example, an image * output needs a filename, a double output just prints. */ gboolean vips_object_argument_needsstring( VipsObject *object, const char *name ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; #ifdef DEBUG printf( "vips_object_argument_needsstring: %s\n", name ); #endif /*DEBUG*/ if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); return( vips_argument_class_needsstring( argument_class ) ); } static void vips_object_print_arg( VipsObject *object, GParamSpec *pspec, VipsBuf *buf ) { GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); const char *name = g_param_spec_get_name( pspec ); GValue value = { 0, }; char *str_value; g_value_init( &value, type ); g_object_get_property( G_OBJECT( object ), name, &value ); str_value = g_strdup_value_contents( &value ); vips_buf_appends( buf, str_value ); g_free( str_value ); g_value_unset( &value ); } /* Write a named arg to the string. If the arg does not need a string (see * above), arg will be NULL. */ int vips_object_get_argument_to_string( VipsObject *object, const char *name, const char *arg ) { GParamSpec *pspec; GType otype; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; VipsObjectClass *oclass; #ifdef DEBUG printf( "vips_object_get_argument_to_string: %s -> %s\n", name, arg ); #endif /*DEBUG*/ if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); otype = G_PARAM_SPEC_VALUE_TYPE( pspec ); g_assert( argument_class->flags & VIPS_ARGUMENT_OUTPUT ); if( g_type_is_a( otype, VIPS_TYPE_IMAGE ) ) { VipsImage *in; char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; vips__filename_split8( arg, filename, option_string ); if( vips_isprefix( ".", filename ) ) { VipsTarget *target; if( !(target = vips_target_new_to_descriptor( 1 )) ) return( -1 ); g_object_get( object, name, &in, NULL ); if( vips_image_write_to_target( in, arg, target, NULL ) ) { VIPS_UNREF( in ); VIPS_UNREF( target ); return( -1 ); } VIPS_UNREF( in ); VIPS_UNREF( target ); } else { /* Pull out the image and write it. */ g_object_get( object, name, &in, NULL ); if( vips_image_write_to_file( in, arg, NULL ) ) { VIPS_UNREF( in ); return( -1 ); } VIPS_UNREF( in ); } } else if( g_type_is_a( otype, VIPS_TYPE_OBJECT ) && (oclass = g_type_class_ref( otype )) && oclass->output_to_arg ) { VipsObject *value; g_object_get( object, name, &value, NULL ); if( oclass->output_to_arg( value, arg ) ) { g_object_unref( value ); return( -1 ); } g_object_unref( value ); } else { char str[1000]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_print_arg( object, pspec, &buf ); printf( "%s\n", vips_buf_all( &buf ) ); } return( 0 ); } static void * vips_argument_is_required( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && (argument_class->flags & VIPS_ARGUMENT_INPUT) && !argument_instance->assigned ) return( pspec ); return( NULL ); } /* Find the first unassigned required input arg. */ static GParamSpec * vips_object_find_required( VipsObject *object ) { return( (GParamSpec *) vips_argument_map( object, vips_argument_is_required, NULL, NULL ) ); } typedef struct _VipsNameFlagsPair { const char **names; int *flags; } VipsNameFlagsPair; static void * vips_object_find_args( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsNameFlagsPair *pair = (VipsNameFlagsPair *) a; int *i = (int *) b; pair->names[*i] = g_param_spec_get_name( pspec ); pair->flags[*i] = (int) argument_class->flags; *i += 1; return( NULL ); } /** * vips_object_get_args: (skip) * @object: object whose args should be retrieved * @names: (transfer none) (array length=n_args) (allow-none): output array of %GParamSpec names * @flags: (transfer none) (array length=n_args) (allow-none): output array of #VipsArgumentFlags * @n_args: (allow-none): length of output arrays * * Get all %GParamSpec names and #VipsArgumentFlags for an object. * * This is handy for language bindings. From C, it's usually more convenient to * use vips_argument_map(). * * Returns: 0 on success, -1 on error */ int vips_object_get_args( VipsObject *object, const char ***names, int **flags, int *n_args ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); int n = g_slist_length( object_class->argument_table_traverse ); VipsNameFlagsPair pair; int i; pair.names = VIPS_ARRAY( object, n, const char * ); pair.flags = VIPS_ARRAY( object, n, int ); if( !pair.names || !pair.flags ) return( -1 ); i = 0; (void) vips_argument_map( object, vips_object_find_args, &pair, &i ); if( names ) *names = pair.names; if( flags ) *flags = pair.flags; if( n_args ) *n_args = n; return( 0 ); } /** * vips_object_new: (skip) * @type: object to create * @set: set arguments with this * @a: client data * @b: client data * * g_object_new() the object, set any arguments with @set, call * vips_object_build() and return the complete object. * * Returns: the new object */ VipsObject * vips_object_new( GType type, VipsObjectSetArguments set, void *a, void *b ) { VipsObject *object; vips_check_init(); object = VIPS_OBJECT( g_object_new( type, NULL ) ); if( set && set( object, a, b ) ) { g_object_unref( object ); return( NULL ); } if( vips_object_build( object ) ) { g_object_unref( object ); return( NULL ); } return( object ); } /** * vips_object_set_valist: * @object: object to set arguments on * @ap: %NULL-terminated list of argument/value pairs * * See vips_object_set(). * * Returns: 0 on success, -1 on error */ int vips_object_set_valist( VipsObject *object, va_list ap ) { char *name; VIPS_DEBUG_MSG( "vips_object_set_valist:\n" ); for( name = va_arg( ap, char * ); name; name = va_arg( ap, char * ) ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; VIPS_DEBUG_MSG( "\tname = '%s' (%p)\n", name, name ); if( vips_object_get_argument( VIPS_OBJECT( object ), name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, ap ); g_object_set_property( G_OBJECT( object ), name, &value ); VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, ap ); VIPS_ARGUMENT_COLLECT_END } return( 0 ); } /** * vips_object_set: * @object: object to set arguments on * @...: %NULL-terminated list of argument/value pairs * * Set a list of vips object arguments. For example: * * |[ * vips_object_set (operation, * "input", in, * "output", &out, * NULL); * ]| * * Input arguments are given in-line, output arguments are given as pointers * to where the output value should be written. * * See also: vips_object_set_valist(), vips_object_set_from_string(). * * Returns: 0 on success, -1 on error */ int vips_object_set( VipsObject *object, ... ) { va_list ap; int result; va_start( ap, object ); result = vips_object_set_valist( object, ap ); va_end( ap ); return( result ); } /* Set object args from a string. @p should be the initial left bracket and * there should be no tokens after the matching right bracket. @p is modified. */ static int vips_object_set_args( VipsObject *object, const char *p ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsToken token; char string[VIPS_PATH_MAX]; char string2[VIPS_PATH_MAX]; GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( !(p = vips__token_need( p, VIPS_TOKEN_LEFT, string, VIPS_PATH_MAX )) ) return( -1 ); if( !(p = vips__token_segment( p, &token, string, VIPS_PATH_MAX )) ) return( -1 ); for(;;) { if( token == VIPS_TOKEN_RIGHT ) break; if( token != VIPS_TOKEN_STRING ) { vips_error( class->nickname, _( "expected string or ), saw %s" ), vips_enum_nick( VIPS_TYPE_TOKEN, token ) ); return( -1 ); } /* We have to look for a '=', ']' or a ',' to see if string is * a param name or a value. */ if( !(p = vips__token_segment( p, &token, string2, VIPS_PATH_MAX )) ) return( -1 ); if( token == VIPS_TOKEN_EQUALS ) { if( !(p = vips__token_segment_need( p, VIPS_TOKEN_STRING, string2, VIPS_PATH_MAX )) ) return( -1 ); if( vips_object_set_argument_from_string( object, string, string2 ) ) return( -1 ); if( !(p = vips__token_must( p, &token, string2, VIPS_PATH_MAX )) ) return( -1 ); } else if( g_object_class_find_property( G_OBJECT_GET_CLASS( object ), string ) && !vips_object_get_argument( object, string, &pspec, &argument_class, &argument_instance ) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && (argument_class->flags & VIPS_ARGUMENT_INPUT) && G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) { /* The string is the name of an optional * input boolean ... set it! */ if( !argument_instance->assigned ) g_object_set( object, string, TRUE, NULL ); } else if( (pspec = vips_object_find_required( object )) ) { if( vips_object_set_argument_from_string( object, g_param_spec_get_name( pspec ), string ) ) return( -1 ); } else { vips_error( class->nickname, _( "unable to set '%s'" ), string ); return( -1 ); } /* Now must be a , or a ). */ if( token == VIPS_TOKEN_COMMA ) { if( !(p = vips__token_must( p, &token, string, VIPS_PATH_MAX )) ) return( -1 ); } else if( token != VIPS_TOKEN_RIGHT ) { vips_error( class->nickname, "%s", _( "not , or ) after parameter" ) ); return( -1 ); } } if( (p = vips__token_get( p, &token, string, VIPS_PATH_MAX )) ) { vips_error( class->nickname, "%s", _( "extra tokens after ')'" ) ); return( -1 ); } return( 0 ); } /** * vips_object_set_from_string: * @object: object to set arguments on * @string: arguments as a string * * Set object arguments from a string. The string can be something like * "a=12", or "a = 12, b = 13", or "fred". The string can optionally be * enclosed in brackets. * * You'd typically use this between creating the object and building it. * * See also: vips_object_set(), vips_object_build(), * vips_cache_operation_buildp(). * * Returns: 0 on success, -1 on error */ int vips_object_set_from_string( VipsObject *object, const char *string ) { const char *q; VipsToken token; char buffer[VIPS_PATH_MAX]; char str[VIPS_PATH_MAX]; vips_strncpy( buffer, string, VIPS_PATH_MAX ); /* Does string start with a bracket? If it doesn't, enclose the whole * thing in []. */ if( !(q = vips__token_get( buffer, &token, str, VIPS_PATH_MAX )) || token != VIPS_TOKEN_LEFT ) vips_snprintf( buffer, VIPS_PATH_MAX, "[%s]", string ); else vips_strncpy( buffer, string, VIPS_PATH_MAX ); return( vips_object_set_args( object, buffer ) ); } VipsObject * vips_object_new_from_string( VipsObjectClass *object_class, const char *p ) { const char *q; char str[VIPS_PATH_MAX]; VipsObject *object; g_assert( object_class ); g_assert( object_class->new_from_string ); /* Find the start of the optional args on the end of the string, take * everything before that as the principal arg for the constructor. */ if( (q = vips__find_rightmost_brackets( p )) ) vips_strncpy( str, p, VIPS_MIN( VIPS_PATH_MAX, q - p + 1 ) ); else vips_strncpy( str, p, VIPS_PATH_MAX ); if( !(object = object_class->new_from_string( str )) ) return( NULL ); /* More tokens there? Set any other args. */ if( q && vips_object_set_from_string( object, q ) ) { g_object_unref( object ); return( NULL ); } return( object ); } static void * vips_object_to_string_required( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsBuf *buf = (VipsBuf *) a; gboolean *first = (gboolean *) b; if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) ) { if( *first ) { vips_buf_appends( buf, "(" ); *first = FALSE; } else { vips_buf_appends( buf, "," ); } vips_object_print_arg( object, pspec, buf ); } return( NULL ); } static void * vips_object_to_string_optional( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsBuf *buf = (VipsBuf *) a; gboolean *first = (gboolean *) b; if( !(argument_class->flags & VIPS_ARGUMENT_REQUIRED) && argument_instance->assigned ) { if( *first ) { vips_buf_appends( buf, "(" ); *first = FALSE; } else { vips_buf_appends( buf, "," ); } vips_buf_appends( buf, g_param_spec_get_name( pspec ) ); vips_buf_appends( buf, "=" ); vips_object_print_arg( object, pspec, buf ); } return( NULL ); } /** * vips_object_to_string: * @object: object to stringify * @buf: write string here * * The inverse of vips_object_new_from_string(): turn @object into eg. * "VipsInterpolateSnohalo1(blur=.333333)". */ void vips_object_to_string( VipsObject *object, VipsBuf *buf ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); gboolean first; g_assert( object_class->to_string ); /* Nicknames are not guaranteed to be unique, so use the full type * name. */ object_class->to_string( object, buf ); first = TRUE; (void) vips_argument_map( object, vips_object_to_string_required, buf, &first ); (void) vips_argument_map( object, vips_object_to_string_optional, buf, &first ); if( !first ) vips_buf_appends( buf, ")" ); } typedef struct { VipsSListMap2Fn fn; void *a; void *b; void *result; } VipsObjectMapArgs; static void vips_object_map_sub( VipsObject *key, VipsObject *value, VipsObjectMapArgs *args ) { if( !args->result ) args->result = args->fn( key, args->a, args->b ); } /** * vips_object_map: (skip) * @fn: function to call for all objects * @a: client data * @b: client data * * Call a function for all alive objects. * Stop when @fn returns non-%NULL and return that value. * * Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first * non-%NULL value from @fn. */ void * vips_object_map( VipsSListMap2Fn fn, void *a, void *b ) { VipsObjectMapArgs args; args.fn = fn; args.a = a; args.b = b; args.result = NULL; /* We must test vips__object_all before we lock because the lock is * only created when the first object is created. */ if( vips__object_all ) { g_mutex_lock( vips__object_all_lock ); g_hash_table_foreach( vips__object_all, (GHFunc) vips_object_map_sub, &args ); g_mutex_unlock( vips__object_all_lock ); } return( args.result ); } /** * vips_type_map: (skip) * @base: base type * @fn: call this function for every type * @a: client data * @b: client data * * Map over a type's children. Stop when @fn returns non-%NULL * and return that value. * * Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first * non-%NULL value from @fn. */ void * vips_type_map( GType base, VipsTypeMap2Fn fn, void *a, void *b ) { GType *child; guint n_children; unsigned int i; void *result; child = g_type_children( base, &n_children ); result = NULL; for( i = 0; i < n_children && !result; i++ ) result = fn( child[i], a, b ); g_free( child ); return( result ); } /** * vips_type_map_all: (skip) * @base: base type * @fn: call this function for every type * @a: client data * * Map over a type's children, direct and indirect. Stop when @fn returns * non-%NULL and return that value. * * Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first * non-%NULL value from @fn. */ void * vips_type_map_all( GType base, VipsTypeMapFn fn, void *a ) { void *result; if( !(result = fn( base, a )) ) result = vips_type_map( base, (VipsTypeMap2Fn) vips_type_map_all, fn, a ); return( result ); } /** * vips_class_map_all: (skip) * @type: base type * @fn: call this function for every type * @a: client data * * Loop over all the subclasses of @type. Non-abstract classes only. * Stop when @fn returns * non-%NULL and return that value. * * Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first * non-%NULL value from @fn. */ void * vips_class_map_all( GType type, VipsClassMapFn fn, void *a ) { void *result; /* Avoid abstract classes. Use type_map_all for them. */ if( !G_TYPE_IS_ABSTRACT( type ) ) { /* We never unref this ref, but we never unload classes * anyway, so so what. */ if( (result = fn( VIPS_OBJECT_CLASS( g_type_class_ref( type ) ), a )) ) return( result ); } if( (result = vips_type_map( type, (VipsTypeMap2Fn) vips_class_map_all, fn, a )) ) return( result ); return( NULL ); } /* How deeply nested is a class ... used to indent class lists. */ int vips_type_depth( GType type ) { int depth; depth = 0; while( type != VIPS_TYPE_OBJECT && (type = g_type_parent( type )) ) depth += 1; return( depth ); } static void * test_name( VipsObjectClass *class, const char *nickname ) { if( g_ascii_strcasecmp( class->nickname, nickname ) == 0 ) return( class ); /* Check the class name too, why not. */ if( g_ascii_strcasecmp( G_OBJECT_CLASS_NAME( class ), nickname ) == 0 ) return( class ); return( NULL ); } /** * vips_class_find: * @basename: name of base class * @nickname: search for a class with this nickname * * Search below @basename, return the first class whose name or @nickname * matches. * * See also: vips_type_find() * * Returns: (transfer none): the found class. */ const VipsObjectClass * vips_class_find( const char *basename, const char *nickname ) { const char *classname = basename ? basename : "VipsObject"; VipsObjectClass *class; GType base; if( !(base = g_type_from_name( classname )) ) return( NULL ); class = vips_class_map_all( base, (VipsClassMapFn) test_name, (void *) nickname ); return( class ); } /* What we store for each nickname. We can't just store the type with * GINT_TO_POINTER() since GType is 64 bits on some platforms. */ typedef struct _NicknameGType { const char *nickname; GType type; gboolean duplicate; } NicknameGType; static void * vips_class_add_hash( VipsObjectClass *class, GHashTable *table ) { GType type = G_OBJECT_CLASS_TYPE( class ); NicknameGType *hit; hit = (NicknameGType *) g_hash_table_lookup( table, (void *) class->nickname ); /* If this is not a unique name, mark as a duplicate. In this case * we'll need to fall back to a search. */ if( hit ) hit->duplicate = TRUE; else { hit = g_new( NicknameGType, 1 ); hit->nickname = class->nickname; hit->type = type; hit->duplicate = FALSE; g_hash_table_insert( table, (void *) hit->nickname, hit ); } return( NULL ); } static void * vips_class_build_hash_cb( void *dummy ) { GType base; vips__object_nickname_table = g_hash_table_new( g_str_hash, g_str_equal ); base = g_type_from_name( "VipsObject" ); g_assert( base ); vips_class_map_all( base, (VipsClassMapFn) vips_class_add_hash, (void *) vips__object_nickname_table ); return( NULL ); } /** * vips_type_find: * @basename: name of base class * @nickname: search for a class with this nickname * * Search below @basename, return the %GType of the class whose name or * @nickname matches, or 0 for not found. * If @basename is NULL, the whole of #VipsObject is searched. * * This function uses a cache, so it should be quick. * * See also: vips_class_find() * * Returns: the %GType of the class, or 0 if the class is not found. */ GType vips_type_find( const char *basename, const char *nickname ) { static GOnce once = G_ONCE_INIT; const char *classname = basename ? basename : "VipsObject"; NicknameGType *hit; GType base; GType type; VIPS_ONCE( &once, vips_class_build_hash_cb, NULL ); hit = (NicknameGType *) g_hash_table_lookup( vips__object_nickname_table, (void *) nickname ); /* We must only search below basename ... check that the cache hit is * in the right part of the tree. */ if( !(base = g_type_from_name( classname )) ) return( 0 ); if( hit && !hit->duplicate && g_type_is_a( hit->type, base ) ) type = hit->type; else { const VipsObjectClass *class; if( !(class = vips_class_find( basename, nickname )) ) return( 0 ); type = G_OBJECT_CLASS_TYPE( class ); } return( type ); } /** * vips_nickname_find: * @type: #GType to search for * * Return the VIPS nickname for a %GType. Handy for language bindings. * * Returns: (transfer none): the class nickname. */ const char * vips_nickname_find( GType type ) { gpointer p; VipsObjectClass *class; if( type && (p = g_type_class_ref( type )) && VIPS_IS_OBJECT_CLASS( p ) && (class = VIPS_OBJECT_CLASS( p )) ) return( class->nickname ); return( NULL ); } /* The vips_object_local() macro uses this as its callback. */ void vips_object_local_cb( VipsObject *vobject, GObject *gobject ) { VIPS_FREEF( g_object_unref, gobject ); } typedef struct { VipsObject **array; int n; } VipsObjectLocal; static void vips_object_local_array_cb( GObject *parent, VipsObjectLocal *local ) { int i; for( i = 0; i < local->n; i++ ) VIPS_FREEF( g_object_unref, local->array[i] ); VIPS_FREEF( g_free, local->array ); VIPS_FREEF( g_free, local ); } /** * vips_object_local_array: (skip) * @parent: objects unref when this object unrefs * @n: array size * * Make an array of NULL VipsObject pointers. When @parent closes, every * non-NULL pointer in the array will be unreffed and the array will be * freed. Handy for creating a set of temporary images for a function. * * The array is NULL-terminated, ie. contains an extra NULL element at the * end. * * Example: * * |[ * VipsObject **t; * * t = vips_object_local_array( a, 5 ); * if( * vips_add( a, b, &t[0], NULL ) || * vips_invert( t[0], &t[1], NULL ) || * vips_add( t[1], t[0], &t[2], NULL ) || * vips_costra( t[2], out, NULL ) ) * return( -1 ); * ]| * * See also: vips_object_local(). * * Returns: an array of NULL pointers of length @n */ VipsObject ** vips_object_local_array( VipsObject *parent, int n ) { VipsObjectLocal *local; local = g_new( VipsObjectLocal, 1 ); local->n = n; /* Make the array 1 too long so we can be sure there's a NULL * terminator. */ local->array = g_new0( VipsObject *, n + 1 ); g_signal_connect( parent, "close", G_CALLBACK( vips_object_local_array_cb ), local ); return( local->array ); } void vips_object_set_static( VipsObject *object, gboolean static_object ) { object->static_object = static_object; } static void * vips_object_n_static_cb( VipsObject *object, int *n ) { if( object->static_object ) *n += 1; return( NULL ); } static int vips_object_n_static( void ) { int n; n = 0; vips_object_map( (VipsSListMap2Fn) vips_object_n_static_cb, &n, NULL ); return( n ); } static void * vips_object_print_all_cb( VipsObject *object, int *n ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); char str[32768]; VipsBuf buf = VIPS_BUF_STATIC( str ); fprintf( stderr, "%d) %s (%p)", *n, G_OBJECT_TYPE_NAME( object ), object ); if( object->local_memory ) fprintf( stderr, " %zd bytes", object->local_memory ); fprintf( stderr, ", count=%d", G_OBJECT( object )->ref_count ); fprintf( stderr, "\n" ); vips_object_summary_class( class, &buf ); vips_buf_appends( &buf, ", " ); vips_object_summary( object, &buf ); fprintf( stderr, "%s\n", vips_buf_all( &buf ) ); *n += 1; return( NULL ); } void vips_object_print_all( void ) { if( vips__object_all && g_hash_table_size( vips__object_all ) > vips_object_n_static() ) { int n; fprintf( stderr, "%d objects alive:\n", g_hash_table_size( vips__object_all ) ); n = 0; vips_object_map( (VipsSListMap2Fn) vips_object_print_all_cb, &n, NULL ); } vips__type_leak(); } static void * vips_object_sanity_all_cb( VipsObject *object ) { (void) vips_object_sanity( object ); return( NULL ); } void vips_object_sanity_all( void ) { vips_object_map( (VipsSListMap2Fn) vips_object_sanity_all_cb, NULL, NULL ); } static void * vips_object_unref_outputs_sub( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { if( (argument_class->flags & VIPS_ARGUMENT_OUTPUT) && G_IS_PARAM_SPEC_OBJECT( pspec ) && argument_instance->assigned ) { GObject *value; g_object_get( object, g_param_spec_get_name( pspec ), &value, NULL ); /* Doing the get refs the object, so unref the get, then unref * again since this an an output object of the operation. */ g_object_unref( value ); g_object_unref( value ); } return( NULL ); } /** * vips_object_unref_outputs: * @object: object to drop output refs from * * Unref all assigned output objects. Useful for language bindings. * * After an object is built, all output args are owned by the caller. If * something goes wrong before then, we have to unref the outputs that have * been made so far. This function can also be useful for callers when * they've finished processing outputs themselves. * * See also: vips_cache_operation_build(). */ void vips_object_unref_outputs( VipsObject *object ) { (void) vips_argument_map( object, vips_object_unref_outputs_sub, NULL, NULL ); } /** * vips_object_get_description: * @object: object to fetch description from * * Fetch the object description. Useful for language bindings. * * @object.description is only avaliable after _build(), which can be too * late. This function fetches from the instance, if possible, but falls back * to the class description if we are too early. * * Returns: the object description */ const char * vips_object_get_description( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); if( object->description ) return( object->description ) ; else return( class->description ) ; } libvips-8.9.1/libvips/iofuncs/operation.c000066400000000000000000001116231361153320700204700ustar00rootroot00000000000000/* base class for all vips operations * * 30/12/14 * - display default/min/max for pspec in usage */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include /** * SECTION: operation * @short_description: the VIPS operation base object class * @stability: Stable * @see_also: object * @include: vips/vips.h * * The #VipsOperation class and associated types and macros. * * #VipsOperation is the base class for all operations in libvips. It builds * on #VipsObject to provide the introspection and command-line interface to * libvips. * * It also maintains a cache of recent operations. See below. * * vips_call(), vips_call_split() and vips_call_split_option_string() are used * by vips to implement the C API. They can execute any #VipsOperation, * passing in a set of required and optional arguments. Normally you would not * use these functions directly: every operation has a tiny wrapper function * which provides type-safety for the required arguments. For example, * vips_embed() is defined as: * * |[ * int * vips_embed( VipsImage *in, VipsImage **out, * int x, int y, int width, int height, ... ) * { * va_list ap; * int result; * * va_start( ap, height ); * result = vips_call_split( "embed", ap, in, out, x, y, width, height ); * va_end( ap ); * * return( result ); * } * ]| * * Use vips_call_argv() to run any vips operation from a command-line style * argc/argv array. This is the thing used by the vips main program to * implement the vips command-line interface. * * ## #VipsOperation and reference counting * * After calling a #VipsOperation you are responsible for unreffing any output * objects. For example, consider: * * |[ * VipsImage *im = ...; * VipsImage *t1; * * if (vips_invert (im, &t1, NULL)) * error .. * ]| * * This will invert @im and return a new #VipsImage, @t1. As the caller * of vips_invert(), you are responsible for @t1 and must unref it when you no * longer need it. If vips_invert() fails, no @t1 is returned and you don't * need to do anything. * * If you don't need to use @im for another operation, * you can unref @im immediately after the call. If @im is needed to calculate * @t1, vips_invert() will add a ref to @im and automatically drop it when @t1 * is unreffed. * * Consider running two operations, one after the other. You could write: * * |[ * VipsImage *im = ...; * VipsImage *t1, *t2; * * if (vips_invert (im, &t1, NULL)) { * g_object_unref (im); * return -1; * } * g_object_unref (im); * * if (vips_flip (t1, &t2, VIPS_DIRECTION_HORIZONTAL, NULL)) { * g_object_unref (t1); * return -1; * } * g_object_unref (t1); * ]| * * This is correct, but rather long-winded. libvips provides a handy thing to * make a vector of auto-freeing object references. You can write this as: * * |[ * VipsObject *parent = ...; * VipsImage *im = ...; * VipsImage *t = (VipsImage **) vips_object_local_array (parent, 2); * * if (vips_invert (im, &t[0], NULL) || * vips_flip (t[0], &t[1], VIPS_DIRECTION_HORIZONTAL, NULL)) * return -1; * ]| * * where @parent is some enclosing object which will be unreffed when this * task is complete. vips_object_local_array() makes an array of #VipsObject * (or #VipsImage, in this case) where when @parent is freed, all non-NULL * #VipsObject in the array are also unreffed. * * ## The #VipsOperation cache * * Because all #VipsObject are immutable, they can be cached. The cache is * very simple to use: instead of calling vips_object_build(), call * vips_cache_operation_build(). This function calculates a hash from the * operations's input arguments and looks it up in table of all recent * operations. If there's a hit, the new operation is unreffed, the old * operation reffed, and the old operation returned in place of the new one. * * The cache size is controlled with vips_cache_set_max() and friends. */ /** * VipsOperationFlags: * @VIPS_OPERATION_NONE: no flags * @VIPS_OPERATION_SEQUENTIAL: can work sequentially with a small buffer * @VIPS_OPERATION_NOCACHE: must not be cached * @VIPS_OPERATION_DEPRECATED: a compatibility thing * * Flags we associate with an operation. * * @VIPS_OPERATION_SEQUENTIAL means that the operation works like vips_conv(): * it can process images top-to-bottom with only small non-local * references. * * Every scan-line must be requested, you are not allowed to skip * ahead, but as a special case, the very first request can be for a region * not at the top of the image. In this case, the first part of the image will * be read and discarded * * Every scan-line must be requested, you are not allowed to skip * ahead, but as a special case, the very first request can be for a region * not at the top of the image. In this case, the first part of the image will * be read and discarded * * @VIPS_OPERATION_NOCACHE means that the operation must not be cached by * vips. * * @VIPS_OPERATION_DEPRECATED means this is an old operation kept in vips for * compatibility only and should be hidden from users. */ /* Abstract base class for operations. */ /* Our signals. */ enum { SIG_INVALIDATE, SIG_LAST }; static guint vips_operation_signals[SIG_LAST] = { 0 }; G_DEFINE_ABSTRACT_TYPE( VipsOperation, vips_operation, VIPS_TYPE_OBJECT ); static void vips_operation_finalize( GObject *gobject ) { VipsOperation *operation = VIPS_OPERATION( gobject ); VIPS_DEBUG_MSG( "vips_operation_finalize: %p\n", gobject ); if( operation->pixels ) g_info( _( "%d pixels calculated" ), operation->pixels ); G_OBJECT_CLASS( vips_operation_parent_class )->finalize( gobject ); } static void vips_operation_dispose( GObject *gobject ) { VIPS_DEBUG_MSG( "vips_operation_dispose: %p\n", gobject ); G_OBJECT_CLASS( vips_operation_parent_class )->dispose( gobject ); } /* Three basic types of command-line argument. * * INPUTS: things like an input image, there is a filename argument on the * command-line which is used to construct the operation argument. * * NOARG_OUTPUT: things like the result of VipsMax, there's no correspondiong * command-line argument, we just print the value. * * OPTIONS: optional arguments. * * NONE: hide this thing. */ typedef enum { USAGE_INPUTS, USAGE_NOARG_OUTPUT, USAGE_OPTIONS, USAGE_NONE } UsageType; typedef struct { char *message; /* header message on first print */ UsageType type; /* Type of arg to select */ gboolean oftype; /* Show as "of type" */ int n; /* Arg number */ } VipsOperationClassUsage; /* Put an arg into one the categories above. */ static UsageType vips_operation_class_usage_classify( VipsArgumentClass *argument_class ) { if( !(argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) || (argument_class->flags & VIPS_ARGUMENT_DEPRECATED) ) return( USAGE_NONE ); if( !(argument_class->flags & VIPS_ARGUMENT_REQUIRED) ) return( USAGE_OPTIONS ); if( vips_argument_class_needsstring( argument_class ) ) return( USAGE_INPUTS ); if( (argument_class->flags & VIPS_ARGUMENT_OUTPUT) && !vips_argument_class_needsstring( argument_class ) ) return( USAGE_NOARG_OUTPUT ); return( USAGE_NONE ); } static void vips_operation_pspec_usage( VipsBuf *buf, GParamSpec *pspec ) { GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); /* These are the pspecs that vips uses that have interesting values. */ if( G_IS_PARAM_SPEC_ENUM( pspec ) ) { GTypeClass *class = g_type_class_ref( type ); GParamSpecEnum *pspec_enum = (GParamSpecEnum *) pspec; GEnumClass *genum; int i; /* Should be impossible, no need to warn. */ if( !class ) return; genum = G_ENUM_CLASS( class ); vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "default" ) ); vips_buf_appendf( buf, ": %s\n", vips_enum_nick( type, pspec_enum->default_value ) ); vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "allowed" ) ); vips_buf_appendf( buf, ": " ); /* -1 since we always have a "last" member. */ for( i = 0; i < genum->n_values - 1; i++ ) { if( i > 0 ) vips_buf_appends( buf, ", " ); vips_buf_appends( buf, genum->values[i].value_nick ); } vips_buf_appendf( buf, "\n" ); } else if( G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) { GParamSpecBoolean *pspec_boolean = (GParamSpecBoolean *) pspec; vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "default" ) ); vips_buf_appendf( buf, ": %s\n", pspec_boolean->default_value ? "true" : "false" ); } else if( G_IS_PARAM_SPEC_DOUBLE( pspec ) ) { GParamSpecDouble *pspec_double = (GParamSpecDouble *) pspec; vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "default" ) ); vips_buf_appendf( buf, ": %g\n", pspec_double->default_value ); vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "min" ) ); vips_buf_appendf( buf, ": %g, ", pspec_double->minimum ); vips_buf_appendf( buf, "%s", _( "max" ) ); vips_buf_appendf( buf, ": %g\n", pspec_double->maximum ); } else if( G_IS_PARAM_SPEC_INT( pspec ) ) { GParamSpecInt *pspec_int = (GParamSpecInt *) pspec; vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "default" ) ); vips_buf_appendf( buf, ": %d\n", pspec_int->default_value ); vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "min" ) ); vips_buf_appendf( buf, ": %d, ", pspec_int->minimum ); vips_buf_appendf( buf, "%s", _( "max" ) ); vips_buf_appendf( buf, ": %d\n", pspec_int->maximum ); } } static void * vips_operation_class_usage_arg( VipsObjectClass *object_class, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsBuf *buf, VipsOperationClassUsage *usage ) { if( usage->type == vips_operation_class_usage_classify( argument_class ) ) { if( usage->message && usage->n == 0 ) vips_buf_appendf( buf, "%s\n", usage->message ); if( usage->oftype ) { vips_buf_appendf( buf, " %-12s - %s, %s %s\n", g_param_spec_get_name( pspec ), g_param_spec_get_blurb( pspec ), (argument_class->flags & VIPS_ARGUMENT_INPUT) ? _( "input" ) : _( "output" ), g_type_name( G_PARAM_SPEC_VALUE_TYPE( pspec ) ) ); vips_operation_pspec_usage( buf, pspec ); } else { if( usage->n > 0 ) vips_buf_appends( buf, " " ); vips_buf_appends( buf, g_param_spec_get_name( pspec ) ); } usage->n += 1; } return( NULL ); } static void vips_operation_usage( VipsOperationClass *class, VipsBuf *buf ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsOperationClassUsage usage; vips_buf_appendf( buf, "%s\n", object_class->description ); vips_buf_appendf( buf, "usage:\n" ); /* First pass through args: show the required names. */ vips_buf_appendf( buf, " %s ", object_class->nickname ); usage.message = NULL; usage.type = USAGE_INPUTS; usage.oftype = FALSE; usage.n = 0; vips_argument_class_map( object_class, (VipsArgumentClassMapFn) vips_operation_class_usage_arg, buf, &usage ); vips_buf_appends( buf, " [--option-name option-value ...]\n" ); /* Show required types. */ usage.message = "where:"; usage.type = USAGE_INPUTS; usage.oftype = TRUE; usage.n = 0; vips_argument_class_map( object_class, (VipsArgumentClassMapFn) vips_operation_class_usage_arg, buf, &usage ); /* Show outputs with no input arg (eg. output maximum value for * vips_max()). */ usage.message = "outputs:"; usage.type = USAGE_NOARG_OUTPUT; usage.oftype = TRUE; usage.n = 0; vips_argument_class_map( object_class, (VipsArgumentClassMapFn) vips_operation_class_usage_arg, buf, &usage ); /* Show optional args. */ usage.message = "optional arguments:"; usage.type = USAGE_OPTIONS; usage.oftype = TRUE; usage.n = 0; vips_argument_class_map( object_class, (VipsArgumentClassMapFn) vips_operation_class_usage_arg, buf, &usage ); /* Show flags. */ if( class->flags ) { GFlagsValue *value; VipsOperationFlags flags; GFlagsClass *flags_class = g_type_class_ref( VIPS_TYPE_OPERATION_FLAGS ); vips_buf_appendf( buf, "operation flags: " ); flags = class->flags; while( flags && (value = g_flags_get_first_value( flags_class, flags )) ) { vips_buf_appendf( buf, "%s ", value->value_nick ); flags &= ~value->value; } vips_buf_appends( buf, "\n" ); } } static void * vips_operation_call_argument( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsArgument *argument = (VipsArgument *) argument_class; printf( " %s: offset = %d ", g_param_spec_get_name( argument->pspec ), argument_class->offset ); if( argument_class->flags & VIPS_ARGUMENT_REQUIRED ) printf ("required " ); if( argument_class->flags & VIPS_ARGUMENT_CONSTRUCT ) printf ("construct " ); if( argument_class->flags & VIPS_ARGUMENT_SET_ONCE ) printf ("set-once " ); if( argument_instance->assigned ) printf ("assigned " ); printf( "\n" ); return( NULL ); } static void vips_operation_dump( VipsObject *object, VipsBuf *buf ) { VipsOperation *operation = VIPS_OPERATION( object ); VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); if( operation->found_hash ) printf( "hash = %x\n", operation->hash ); printf( "%s args:\n", object_class->nickname ); vips_argument_map( VIPS_OBJECT( operation ), vips_operation_call_argument, NULL, NULL ); VIPS_OBJECT_CLASS( vips_operation_parent_class )->dump( object, buf ); } static void * vips_operation_vips_operation_print_summary_arg( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsBuf *buf = (VipsBuf *) a; /* Just assigned input and output construct args. _summary() is used * for things like cache tracing, so it's useful to show output args. */ if( ((argument_class->flags & VIPS_ARGUMENT_INPUT) || (argument_class->flags & VIPS_ARGUMENT_OUTPUT)) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && argument_instance->assigned ) { const char *name = g_param_spec_get_name( pspec ); GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); GValue gvalue = { 0, }; char *str; g_value_init( &gvalue, type ); g_object_get_property( G_OBJECT( object ), name, &gvalue ); str = g_strdup_value_contents( &gvalue ); vips_buf_appendf( buf, " %s=%s", name, str ); g_free( str ); g_value_unset( &gvalue ); } return( NULL ); } static void vips_operation_summary( VipsObject *object, VipsBuf *buf ) { VipsOperation *operation = VIPS_OPERATION( object ); VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); vips_buf_appendf( buf, "%s", object_class->nickname ); vips_argument_map( VIPS_OBJECT( operation ), vips_operation_vips_operation_print_summary_arg, buf, NULL ); vips_buf_appends( buf, " -" ); VIPS_OBJECT_CLASS( vips_operation_parent_class )-> summary( object, buf ); } static VipsOperationFlags vips_operation_real_get_flags( VipsOperation *operation ) { VipsOperationClass *class = VIPS_OPERATION_GET_CLASS( operation ); return( class->flags ); } static void vips_operation_class_init( VipsOperationClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->finalize = vips_operation_finalize; gobject_class->dispose = vips_operation_dispose; vobject_class->nickname = "operation"; vobject_class->description = _( "operations" ); vobject_class->summary = vips_operation_summary; vobject_class->dump = vips_operation_dump; class->usage = vips_operation_usage; class->get_flags = vips_operation_real_get_flags; vips_operation_signals[SIG_INVALIDATE] = g_signal_new( "invalidate", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsOperationClass, invalidate ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); } static void vips_operation_init( VipsOperation *operation ) { } /** * vips_operation_get_flags: * @operation: operation to fetch flags from * * Returns the set of flags for this operation. * * Returns: 0 on success, or -1 on error. */ VipsOperationFlags vips_operation_get_flags( VipsOperation *operation ) { VipsOperationClass *class = VIPS_OPERATION_GET_CLASS( operation ); return( class->get_flags( operation ) ); } /** * vips_operation_class_print_usage: (skip) * @operation_class: class to print usage for * * Print a usage message for the operation to stdout. */ void vips_operation_class_print_usage( VipsOperationClass *operation_class ) { char str[2048]; VipsBuf buf = VIPS_BUF_STATIC( str ); operation_class->usage( operation_class, &buf ); printf( "%s", vips_buf_all( &buf ) ); } void vips_operation_invalidate( VipsOperation *operation ) { #ifdef VIPS_DEBUG printf( "vips_operation_invalidate: %p\n", operation ); vips_object_print_summary( VIPS_OBJECT( operation ) ); #endif /*VIPS_DEBUG*/ g_signal_emit( operation, vips_operation_signals[SIG_INVALIDATE], 0 ); } /** * vips_operation_new: (constructor) * @name: nickname of operation to create * * Return a new #VipsOperation with the specified nickname. Useful for * language bindings. * * You'll need to set * any arguments and build the operation before you can use it. See * vips_call() for a higher-level way to make new operations. * * Returns: (transfer full): the new operation. */ VipsOperation * vips_operation_new( const char *name ) { GType type; VipsObject *object; VipsOperation *operation; vips_check_init(); if( !(type = vips_type_find( "VipsOperation", name )) ) { vips_error( "VipsOperation", _( "class \"%s\" not found" ), name ); return( NULL ); } if( !(object = g_object_new( type, NULL )) ) { vips_error( "VipsOperation", _( "\"%s\" is not an instantiable class" ), name ); return( NULL ); } operation = VIPS_OPERATION( object ); VIPS_DEBUG_MSG( "vips_operation_new: %s (%p)\n", name, operation ); return( operation ); } /* Some systems do not have va_copy() ... this might work (it does on MSVC, * apparently). * * FIXME ... this should be in configure.in */ #ifndef va_copy #define va_copy(d,s) ((d) = (s)) #endif static int vips_operation_set_valist_required( VipsOperation *operation, va_list ap ) { VIPS_DEBUG_MSG( "vips_operation_set_valist_required:\n" ); /* Set required input arguments. Can't use vips_argument_map here * :-( because passing va_list by reference is not portable. */ VIPS_ARGUMENT_FOR_ALL( operation, pspec, argument_class, argument_instance ) { g_assert( argument_instance ); /* We skip deprecated required args. There will be a new, * renamed arg in the same place. */ if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) && !(argument_class->flags & VIPS_ARGUMENT_DEPRECATED) ) { VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, ap ); #ifdef VIPS_DEBUG { char *str; str = g_strdup_value_contents( &value ); VIPS_DEBUG_MSG( "\t%s = %s\n", g_param_spec_get_name( pspec ), str ); g_free( str ); } #endif /*VIPS_DEBUG */ g_object_set_property( G_OBJECT( operation ), g_param_spec_get_name( pspec ), &value ); VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, ap ); #ifdef VIPS_DEBUG printf( "\tskipping arg %p for %s\n", arg, g_param_spec_get_name( pspec ) ); #endif /*VIPS_DEBUG */ VIPS_ARGUMENT_COLLECT_END } } VIPS_ARGUMENT_FOR_ALL_END return( 0 ); } static int vips_operation_get_valist_required( VipsOperation *operation, va_list ap ) { VIPS_DEBUG_MSG( "vips_operation_get_valist_required:\n" ); /* Extract output arguments. Can't use vips_argument_map here * :-( because passing va_list by reference is not portable. */ VIPS_ARGUMENT_FOR_ALL( operation, pspec, argument_class, argument_instance ) { if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) ) { VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, ap ); VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, ap ); if( !argument_instance->assigned ) continue; #ifdef VIPS_DEBUG printf( "\twriting %s to %p\n", g_param_spec_get_name( pspec ), arg ); #endif /*VIPS_DEBUG */ /* It'd be nice to be able to test for arg being a * valid gobject pointer, since passing in a valid * pointer (and having us destroy it) is a common * error and a cause of hard-to-find leaks. * * Unfortunately, G_IS_OBJECT() can't be given an * arbitrary pointer for testing -- you're very likely * to get coredumps. */ g_object_get( G_OBJECT( operation ), g_param_spec_get_name( pspec ), arg, NULL ); /* If the pspec is an object, that will up the ref * count. We want to hand over the ref, so we have to * knock it down again. */ if( G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject *object; object = *((GObject **) arg); g_object_unref( object ); } VIPS_ARGUMENT_COLLECT_END } } VIPS_ARGUMENT_FOR_ALL_END return( 0 ); } static int vips_operation_get_valist_optional( VipsOperation *operation, va_list ap ) { char *name; VIPS_DEBUG_MSG( "vips_operation_get_valist_optional:\n" ); for( name = va_arg( ap, char * ); name; name = va_arg( ap, char * ) ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; VIPS_DEBUG_MSG( "\tname = '%s' (%p)\n", name, name ); if( vips_object_get_argument( VIPS_OBJECT( operation ), name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, ap ); /* We must collect input args as we walk the name/value list, * but we don't do anything with them. */ VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, ap ); /* Here's an output arg. */ #ifdef VIPS_DEBUG printf( "\twriting %s to %p\n", g_param_spec_get_name( pspec ), arg ); #endif /*VIPS_DEBUG */ /* If the dest pointer is NULL, skip the read. */ if( arg ) { g_object_get( G_OBJECT( operation ), g_param_spec_get_name( pspec ), arg, NULL ); /* If the pspec is an object, that will up * the ref count. We want to hand over the * ref, so we have to knock it down again. */ if( G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject *object; object = *((GObject **) arg); g_object_unref( object ); } } VIPS_ARGUMENT_COLLECT_END } return( 0 ); } /** * vips_call_required_optional: * @operation: the operation to execute * @required: %va_list of required arguments * @optional: NULL-terminated %va_list of name / value pairs * * This is the main entry point for the C and C++ varargs APIs. @operation * is executed, supplying @required and @optional arguments. * * Beware, this can change @operation to point at an old, cached one. * * Returns: 0 on success, -1 on error */ int vips_call_required_optional( VipsOperation **operation, va_list required, va_list optional ) { int result; va_list a; va_list b; /* We need to be able to walk required and optional twice. On x64 gcc, * vips_operation_set_valist_required() etc. will destructively alter * the passed-in va_list. We make a copy and walk that instead. */ va_copy( a, required ); va_copy( b, optional ); result = vips_operation_set_valist_required( *operation, a ) || vips_object_set_valist( VIPS_OBJECT( *operation ), b ); va_end( a ); va_end( b ); if( result ) return( -1 ); /* Build from cache. */ if( vips_cache_operation_buildp( operation ) ) return( -1 ); /* Walk args again, writing output. */ va_copy( a, required ); va_copy( b, optional ); result = vips_operation_get_valist_required( *operation, required ) || vips_operation_get_valist_optional( *operation, optional ); va_end( a ); va_end( b ); return( result ); } static int vips_call_by_name( const char *operation_name, const char *option_string, va_list required, va_list optional ) { VipsOperation *operation; int result; VIPS_DEBUG_MSG( "vips_call_by_name: starting for %s ...\n", operation_name ); if( !(operation = vips_operation_new( operation_name )) ) return( -1 ); /* Set str options before vargs options, so the user can't override * things we set deliberately. */ if( option_string && vips_object_set_from_string( VIPS_OBJECT( operation ), option_string ) ) { vips_object_unref_outputs( VIPS_OBJECT( operation ) ); g_object_unref( operation ); return( -1 ); } result = vips_call_required_optional( &operation, required, optional ); /* Build failed: junk args and back out. */ if( result ) { vips_object_unref_outputs( VIPS_OBJECT( operation ) ); g_object_unref( operation ); return( -1 ); } /* The operation we have built should now have been reffed by one of * its arguments or have finished its work. Either way, we can unref. */ g_object_unref( operation ); return( result ); } /** * vips_call: * @operation_name: name of operation to call * @...: required args, then a %NULL-terminated list of argument/value pairs * * vips_call() calls the named operation, passing in required arguments and * then setting any optional ones from the remainder of the arguments as a set * of name/value pairs. * * For example, vips_embed() takes six required arguments, @in, @out, @x, @y, * @width, @height, and has two optional arguments, @extend and @background. * You can run it with vips_call() like this: * * |[ * VipsImage *in = ... * VipsImage *out; * * if( vips_call( "embed", in, &out, 10, 10, 100, 100, * "extend", VIPS_EXTEND_COPY, * NULL ) ) * ... error * ]| * * Normally of course you'd just use the vips_embed() wrapper function and get * type-safety for the required arguments. * * See also: vips_call_split(), vips_call_options(). * * Returns: 0 on success, -1 on error */ int vips_call( const char *operation_name, ... ) { VipsOperation *operation; int result; va_list required; va_list optional; if( !(operation = vips_operation_new( operation_name )) ) return( -1 ); /* We have to break the va_list into separate required and optional * components. * * Note the start, grab the required, then copy and reuse. */ va_start( required, operation_name ); va_copy( optional, required ); VIPS_ARGUMENT_FOR_ALL( operation, pspec, argument_class, argument_instance ) { g_assert( argument_instance ); if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) ) { VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, optional ); VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, optional ); VIPS_ARGUMENT_COLLECT_END } } VIPS_ARGUMENT_FOR_ALL_END /* We just needed this operation for the arg loop. */ g_object_unref( operation ); result = vips_call_by_name( operation_name, NULL, required, optional ); va_end( required ); va_end( optional ); return( result ); } int vips_call_split( const char *operation_name, va_list optional, ... ) { int result; va_list required; va_start( required, optional ); result = vips_call_by_name( operation_name, NULL, required, optional ); va_end( required ); return( result ); } int vips_call_split_option_string( const char *operation_name, const char *option_string, va_list optional, ... ) { int result; va_list required; va_start( required, optional ); result = vips_call_by_name( operation_name, option_string, required, optional ); va_end( required ); return( result ); } static void * vips_call_find_pspec( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { const char *name = (const char *) a; /* One char names we assume are "-x" style abbreviations, longer names * we match the whole string. */ if( !(argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && !argument_instance->assigned ) if( (strlen( name ) == 1 && g_param_spec_get_name( pspec )[0] == name[0]) || strcmp( g_param_spec_get_name( pspec ), name ) == 0 ) return( argument_instance ); return( NULL ); } /* Keep this stuff around for output args. */ typedef struct _VipsCallOptionOutput { VipsArgumentInstance *argument_instance; char *value; } VipsCallOptionOutput; static int vips_call_option_output( VipsObject *object, VipsCallOptionOutput *output ) { VipsArgumentInstance *argument_instance = output->argument_instance; GParamSpec *pspec = ((VipsArgument *) argument_instance)->pspec; int result; /* Don't look at the output arg if _build() hasn't run sucessfully, it * probably won't have been set. */ result = 0; if( object->constructed ) result = vips_object_get_argument_to_string( object, g_param_spec_get_name( pspec ), output->value ); return( result ); } static void vips_call_option_output_free( VipsObject *object, VipsCallOptionOutput *output ) { VIPS_FREE( output->value ); g_free( output ); } static gboolean vips_call_options_set( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { VipsOperation *operation = (VipsOperation *) data; const char *name; VipsArgumentInstance *argument_instance; VipsArgumentClass *argument_class; GParamSpec *pspec; VIPS_DEBUG_MSG( "vips_call_options_set: %s = %s\n", option_name, value ); /* Remove any leading "--" from the option name. */ for( name = option_name; *name == '-'; name++ ) ; if( !(argument_instance = (VipsArgumentInstance *) vips_argument_map( VIPS_OBJECT( operation ), vips_call_find_pspec, (void *) name, NULL )) ) { vips_error( VIPS_OBJECT_GET_CLASS( operation )->nickname, _( "unknown argument '%s'" ), name ); vips_error_g( error ); return( FALSE ); } argument_class = argument_instance->argument_class; pspec = ((VipsArgument *) argument_instance)->pspec; if( (argument_class->flags & VIPS_ARGUMENT_INPUT) ) { if( vips_object_set_argument_from_string( VIPS_OBJECT( operation ), g_param_spec_get_name( pspec ), value ) ) { vips_error_g( error ); return( FALSE ); } #ifdef VIPS_DEBUG { GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); GValue gvalue = { 0, }; char *str; g_value_init( &gvalue, type ); g_object_get_property( G_OBJECT( operation ), g_param_spec_get_name( pspec ), &gvalue ); str = g_strdup_value_contents( &gvalue ); VIPS_DEBUG_MSG( "\tGValue %s = %s\n", g_param_spec_get_name( pspec ), str ); g_free( str ); g_value_unset( &gvalue ); } #endif /*VIPS_DEBUG*/ } else if( (argument_class->flags & VIPS_ARGUMENT_OUTPUT) ) { VipsCallOptionOutput *output; /* We can't do output now, we have to attach a callback to do * the processing after the operation has run. */ output = g_new( VipsCallOptionOutput, 1 ); output->argument_instance = argument_instance; output->value = g_strdup( value ); g_signal_connect( operation, "postbuild", G_CALLBACK( vips_call_option_output ), output ); g_signal_connect( operation, "close", G_CALLBACK( vips_call_option_output_free ), output ); } return( TRUE ); } static void * vips_call_options_add( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { GOptionGroup *group = (GOptionGroup *) a; if( !(argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && !argument_instance->assigned ) { const char *name = g_param_spec_get_name( pspec ); gboolean needs_string = vips_object_argument_needsstring( object, name ); GOptionEntry entry[2]; entry[0].long_name = name; entry[0].description = g_param_spec_get_blurb( pspec ); /* Don't set short names for deprecated args. */ if( argument_class->flags & VIPS_ARGUMENT_DEPRECATED ) entry[0].short_name = '\0'; else entry[0].short_name = name[0]; entry[0].flags = 0; if( !needs_string ) entry[0].flags |= G_OPTION_FLAG_NO_ARG; if( argument_class->flags & VIPS_ARGUMENT_DEPRECATED ) entry[0].flags |= G_OPTION_FLAG_HIDDEN; entry[0].arg = G_OPTION_ARG_CALLBACK; entry[0].arg_data = (gpointer) vips_call_options_set; if( needs_string ) entry[0].arg_description = g_type_name( G_PARAM_SPEC_VALUE_TYPE( pspec ) ); else entry[0].arg_description = NULL; entry[1].long_name = NULL; VIPS_DEBUG_MSG( "vips_call_options_add: adding %s\n", name ); g_option_group_add_entries( group, &entry[0] ); } return( NULL ); } void vips_call_options( GOptionGroup *group, VipsOperation *operation ) { (void) vips_argument_map( VIPS_OBJECT( operation ), vips_call_options_add, group, NULL ); } /* What we track during an argv call. */ typedef struct _VipsCall { VipsOperation *operation; int argc; char **argv; int i; } VipsCall; static const char * vips_call_get_arg( VipsCall *call, int i ) { if( i < 0 || i >= call->argc ) { vips_error( VIPS_OBJECT_GET_CLASS( call->operation )->nickname, "%s", _( "too few arguments" ) ); return( NULL ); } return( call->argv[i] ); } static void * vips_call_argv_input( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsCall *call = (VipsCall *) a; /* Loop over all required construct args. */ if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && !(argument_class->flags & VIPS_ARGUMENT_DEPRECATED) ) { const char *name = g_param_spec_get_name( pspec ); if( (argument_class->flags & VIPS_ARGUMENT_INPUT) ) { const char *arg; if( !(arg = vips_call_get_arg( call, call->i )) || vips_object_set_argument_from_string( object, name, arg ) ) return( pspec ); call->i += 1; } else if( (argument_class->flags & VIPS_ARGUMENT_OUTPUT) ) { if( vips_object_argument_needsstring( object, name ) ) call->i += 1; } } return( NULL ); } static void * vips_call_argv_output( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsCall *call = (VipsCall *) a; /* Loop over all required construct args. */ if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && !(argument_class->flags & VIPS_ARGUMENT_DEPRECATED) ) { if( (argument_class->flags & VIPS_ARGUMENT_INPUT) ) call->i += 1; else if( (argument_class->flags & VIPS_ARGUMENT_OUTPUT) ) { const char *name = g_param_spec_get_name( pspec ); const char *arg; arg = NULL; if( vips_object_argument_needsstring( object, name ) ) { arg = vips_call_get_arg( call, call->i ); if( !arg ) return( pspec ); call->i += 1; } if( vips_object_get_argument_to_string( object, name, arg ) ) return( pspec ); } } return( NULL ); } /* Our main command-line entry point. Optional args should have been set by * the GOption parser already, see above. * * We don't create the operation, so we must not unref it. The caller must * unref on error too. The caller must also call vips_object_unref_outputs() on * all code paths. */ int vips_call_argv( VipsOperation *operation, int argc, char **argv ) { VipsCall call; g_assert( argc >= 0 ); #ifdef VIPS_DEBUG printf( "vips_call_argv: " ); vips_object_print_name( VIPS_OBJECT( operation ) ); printf( "\n" ); { int i; for( i = 0; i < argc; i++ ) printf( "%d) %s\n", i, argv[i] ); } #endif /*VIPS_DEBUG*/ call.operation = operation; call.argc = argc; call.argv = argv; call.i = 0; if( vips_argument_map( VIPS_OBJECT( operation ), vips_call_argv_input, &call, NULL ) ) return( -1 ); /* Any unused arguments? We must fail. Consider eg. "vips bandjoin a b * c". This would overwrite b with a and ignore c, potentially * disastrous. */ if( argc > call.i ) { vips_error( VIPS_OBJECT_GET_CLASS( operation )->nickname, "%s", _( "too many arguments" ) ); return( -1 ); } /* We can't use the operation cache, we need to be able to change the * operation pointer. The cache probably wouldn't help anyway. */ if( vips_object_build( VIPS_OBJECT( operation ) ) ) return( -1 ); /* We're not using the cache, so we need to print the trace line. */ if( vips__cache_trace ) { printf( "vips cache : " ); vips_object_print_summary( VIPS_OBJECT( operation ) ); } call.i = 0; if( vips_argument_map( VIPS_OBJECT( operation ), vips_call_argv_output, &call, NULL ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/iofuncs/rect.c000066400000000000000000000133501361153320700174230ustar00rootroot00000000000000/* Simple rectangle algebra. Should build rectangle list algebra on top of * this. * * J. Cupitt, 8/4/93. * * 17/3/11 * - move to vips_ prefix * - gtk-doc comments */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /** * SECTION: rect * @short_description: the VIPS rectangle class * @stability: Stable * @see_also: region * @include: vips/vips.h * * The #VipsRect class and associated types and macros. */ /** * VipsRect: * @left: left edge of rectangle * @top: top edge of rectangle * @width: width of rectangle * @height: height of rectangle * * A #VipsRect is a rectangular area of pixels. This is a struct for * performing simple rectangle algebra. */ /** * vips_rect_includespoint: * @r: rectangle to test * @x: position to test for * @y: position to test for * * Does @r contain point (@x, @y)? * * Returns: %TRUE if @r contains (@x, @y). */ gboolean vips_rect_includespoint( const VipsRect *r, int x, int y ) { return( r->left <= x && r->top <= y && r->left + r->width > x && r->top + r->height > y ); } /** * vips_rect_isempty: (method) * @r: rectangle to test * * Is @r empty? ie. zero width or height. * * Returns: %TRUE if @r contains no pixels. */ gboolean vips_rect_isempty( const VipsRect *r ) { return( r->width <= 0 || r->height <= 0 ); } /** * vips_rect_includesrect: (method) * @r1: outer rectangle * @r2: inner rectangle * * Is @r2 a subset of @r1? * * Returns: %TRUE if @r2 is a subset of @r1. */ gboolean vips_rect_includesrect( const VipsRect *r1, const VipsRect *r2 ) { return( r1->left <= r2->left && r1->top <= r2->top && r1->left + r1->width >= r2->left + r2->width && r1->top + r1->height >= r2->top + r2->height ); } /** * vips_rect_equalsrect: (method) * @r1: first rectangle * @r2: second rectangle * * Is @r1 equal to @r2? * * Returns: %TRUE if @r1 is equal to @r2. */ gboolean vips_rect_equalsrect( const VipsRect *r1, const VipsRect *r2 ) { return( r1->left == r2->left && r1->top == r2->top && r1->width == r2->width && r1->height == r2->height ); } /** * vips_rect_overlapsrect: (method) * @r1: first rectangle * @r2: second rectangle * * Do @r1 and @r2 have a non-empty intersection? * * Returns: %TRUE if @r2 and @r1 overlap. */ gboolean vips_rect_overlapsrect( const VipsRect *r1, const VipsRect *r2 ) { VipsRect intersection; vips_rect_intersectrect( r1, r2, &intersection ); return( !vips_rect_isempty( &intersection ) ); } /** * vips_rect_marginadjust: (method) * @r: rectangle to adjust * @n: enlarge by * * Enlarge @r by @n. +1 means out one pixel. */ void vips_rect_marginadjust( VipsRect *r, int n ) { r->left -= n; r->top -= n; r->width += 2 * n; r->height += 2 * n; } /** * vips_rect_intersectrect: * @r1: input rectangle 1 * @r2: input rectangle 2 * @out: (out): output rectangle * * Fill @out with the intersection of @r1 and @r2. @out can equal @r1 or @r2. */ void vips_rect_intersectrect( const VipsRect *r1, const VipsRect *r2, VipsRect *out ) { int left = VIPS_MAX( r1->left, r2->left ); int top = VIPS_MAX( r1->top, r2->top ); int right = VIPS_MIN( VIPS_RECT_RIGHT( r1 ), VIPS_RECT_RIGHT( r2 ) ); int bottom = VIPS_MIN( VIPS_RECT_BOTTOM( r1 ), VIPS_RECT_BOTTOM( r2 ) ); int width = VIPS_MAX( 0, right - left ); int height = VIPS_MAX( 0, bottom - top ); out->left = left; out->top = top; out->width = width; out->height = height; } /** * vips_rect_unionrect: * @r1: input rectangle 1 * @r2: input rectangle 2 * @out: (out): output rectangle * * Fill @out with the bounding box of @r1 and @r2. @out can equal @r1 or @r2. */ void vips_rect_unionrect( const VipsRect *r1, const VipsRect *r2, VipsRect *out ) { if( vips_rect_isempty( r1 ) ) *out = *r2; else if( vips_rect_isempty( r2 ) ) *out = *r1; else { int left = VIPS_MIN( r1->left, r2->left ); int top = VIPS_MIN( r1->top, r2->top ); int width = VIPS_MAX( VIPS_RECT_RIGHT( r1 ), VIPS_RECT_RIGHT( r2 ) ) - left; int height = VIPS_MAX( VIPS_RECT_BOTTOM( r1 ), VIPS_RECT_BOTTOM( r2 ) )- top; out->left = left; out->top = top; out->width = width; out->height = height; } } /** * vips_rect_dup: (skip) * @r: rectangle to duplicate * * Duplicate a rect to the heap. You need to free the result with vips_free(). * * Returns: (transfer full): a pointer to copy of @r allocated on the heap. */ VipsRect * vips_rect_dup( const VipsRect *r ) { VipsRect *out; if( !(out = VIPS_NEW( NULL, VipsRect )) ) return( NULL ); *out = *r; return( out ); } /** * vips_rect_normalise: (method) * @r: rect to normalise * * Make sure width and height are >0 by moving the origin and flipping the * rect. */ void vips_rect_normalise( VipsRect *r ) { if( r->width < 0 ) { r->left += r->width; r->width *= -1; } if( r->height < 0 ) { r->top += r->height; r->height *= -1; } } libvips-8.9.1/libvips/iofuncs/region.c000066400000000000000000001440311361153320700177520ustar00rootroot00000000000000/* Make and destroy partial image regions. * * J.Cupitt, 8/4/93. * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 15/8/94 JC * - start & stop can now be NULL for no-op * 12/5/94 JC * - threads v2.0 added * 22/2/95 JC * - im_region_region() args changed * 22/6/95 JC * - im_region_local() did not always reset the data pointer * 18/11/98 JC * - init a, b, c also now, to help rtc avoid spurious checks * 29/6/01 JC * - im_region_free() now frees immediately * 6/8/02 JC * - new mmap() window regions * 5/11/02 JC * - fix for mmap a local region * 28/2/05 * - shrink local region memory if required much-greater-than allocated * 3/6/05 * - im_region_region() allows Bands and BandFmt to differ, provided * sizeof( pel ) is the same ... makes im_copy_morph() work * 30/10/06 * - switch to im_window_t for mmap window stuff * 29/11/06 * - switch to im_buffer_t for local mem buffer stuff * 19/1/07 * - im_region_image() only sets r, not whole image * 1'2'07 * - gah, im_region_image() could still break (thanks Mikkel) * 23/7/08 * - added im_region_print() * 7/10/09 * - gtkdoc comments * 5/3/10 * - move invalid stuff to region * 3/3/11 * - move on top of VipsObject, rename as VipsRegion * 23/2/17 * - multiply transparent images through alpha in vips_region_shrink() * 13/6/18 harukizaemon * - add VipsRegionShrink parameter to vips_region_shrink() * 9/6/19 * - saner behaviour for vips_region_fetch() if the request is partly * outside the image */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_MOVE #define DEBUG_ENVIRONMENT 1 #define DEBUG_CREATE #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include /** * SECTION: region * @short_description: small, rectangular parts of images * @stability: Stable * @see_also: image, * generate * @include: vips/vips.h * * A #VipsRegion is a small part of an image. You use regions to * read pixels out of images without having to have the whole image in memory * at once. * * A region can be a memory buffer, part of a memory-mapped file, part of some * other image, or part of some other region. * * Regions must be created, used and freed all within the same thread, since * they can reference private per-thread caches. VIPS sanity-checks region * ownership in various places, so you are likely to see g_assert() errors if * you don't follow this rule. * * There * is API to transfer ownership of regions between threads, but hopefully this * is only needed within VIPS, so we don't expose it. Hopefully. */ /** * VipsRegion: * @im: the #VipsImage that this region is defined on * @valid: the #VipsRect of pixels that this region represents * * A small part of a #VipsImage. @valid holds the left/top/width/height of the * area of pixels that are available from the region. * * See also: VIPS_REGION_ADDR(), vips_region_new(), vips_region_prepare(). */ /** * VIPS_REGION_LSKIP: * @R: a #VipsRegion * * Returns: The number of bytes to add to move down a scanline. */ /** * VIPS_REGION_N_ELEMENTS: * @R: a #VipsRegion * * Returns: The number of band elements across a region. */ /** * VIPS_REGION_SIZEOF_LINE: * @R: a #VipsRegion * * Returns: The number of bytes across a region. */ /** * VIPS_REGION_ADDR: * @R: a #VipsRegion * @X: x coordinate * @Y: y coordinate * * This macro returns a pointer to a pixel in a region. The (@X, @Y) * coordinates need to be within the #VipsRect (@R->valid). * * If DEBUG is defined, you get a version that checks bounds for you. * * See also: vips_region_prepare(). * * Returns: The address of pixel (@X,@Y) in @R. */ /** * VIPS_REGION_ADDR_TOPLEFT: * @R: a #VipsRegion * * This macro returns a pointer to the top-left pixel in the #VipsRegion, that * is, the pixel at (@R->valid.left, @R->valid.top). * * See also: vips_region_prepare(). * * Returns: The address of the top-left pixel in the region. */ /* Properties. */ enum { PROP_IMAGE = 1, PROP_LAST }; G_DEFINE_TYPE( VipsRegion, vips_region, VIPS_TYPE_OBJECT ); #ifdef VIPS_DEBUG static GSList *vips__regions_all = NULL; #endif /*VIPS_DEBUG*/ static void vips_region_finalize( GObject *gobject ) { #ifdef VIPS_DEBUG VIPS_DEBUG_MSG( "vips_region_finalize: " ); vips_object_print_name( VIPS_OBJECT( gobject ) ); VIPS_DEBUG_MSG( "\n" ); #endif /*VIPS_DEBUG*/ #ifdef VIPS_DEBUG g_mutex_lock( vips__global_lock ); vips__regions_all = g_slist_remove( vips__regions_all, gobject ); g_mutex_unlock( vips__global_lock ); #endif /*VIPS_DEBUG*/ G_OBJECT_CLASS( vips_region_parent_class )->finalize( gobject ); } /* Call a start function if no sequence is running on this VipsRegion. */ int vips__region_start( VipsRegion *region ) { VipsImage *image = region->im; if( !region->seq && image->start_fn ) { VIPS_GATE_START( "vips__region_start: wait" ); g_mutex_lock( image->sslock ); VIPS_GATE_STOP( "vips__region_start: wait" ); region->seq = image->start_fn( image, image->client1, image->client2 ); g_mutex_unlock( image->sslock ); if( !region->seq ) { #ifdef DEBUG printf( "vips__region_start: " "start function failed for image %s", image->filename ); #endif /*DEBUG*/ return( -1 ); } } return( 0 ); } /* Call a stop function if a sequence is running in this VipsRegion. */ void vips__region_stop( VipsRegion *region ) { VipsImage *image = region->im; if( region->seq && image->stop_fn ) { int result; VIPS_GATE_START( "vips__region_stop: wait" ); g_mutex_lock( image->sslock ); VIPS_GATE_STOP( "vips__region_stop: wait" ); result = image->stop_fn( region->seq, image->client1, image->client2 ); g_mutex_unlock( image->sslock ); /* stop function can return an error, but we have nothing we * can really do with it, sadly. */ if( result ) g_warning( "stop callback failed for image %s", image->filename ); region->seq = NULL; } } static void vips_region_dispose( GObject *gobject ) { VipsRegion *region = VIPS_REGION( gobject ); VipsImage *image = region->im; #ifdef VIPS_DEBUG VIPS_DEBUG_MSG( "vips_region_dispose: " ); vips_object_print_name( VIPS_OBJECT( gobject ) ); VIPS_DEBUG_MSG( "\n" ); #endif /*VIPS_DEBUG*/ vips_object_preclose( VIPS_OBJECT( gobject ) ); /* Stop this sequence. */ vips__region_stop( region ); /* Free any attached memory. */ VIPS_FREEF( vips_window_unref, region->window ); VIPS_FREEF( vips_buffer_unref, region->buffer ); /* Detach from image. */ VIPS_GATE_START( "vips_region_dispose: wait" ); g_mutex_lock( image->sslock ); VIPS_GATE_STOP( "vips_region_dispose: wait" ); image->regions = g_slist_remove( image->regions, region ); g_mutex_unlock( image->sslock ); region->im = NULL; g_object_unref( image ); G_OBJECT_CLASS( vips_region_parent_class )->dispose( gobject ); } static void vips_region_dump( VipsObject *object, VipsBuf *buf ) { VipsRegion *region = VIPS_REGION( object ); vips_buf_appendf( buf, "VipsRegion: %p, ", region ); vips_buf_appendf( buf, "im = %p, ", region->im ); vips_buf_appendf( buf, "valid.left = %d, ", region->valid.left ); vips_buf_appendf( buf, "valid.top = %d, ", region->valid.top ); vips_buf_appendf( buf, "valid.width = %d, ", region->valid.width ); vips_buf_appendf( buf, "valid.height = %d, ", region->valid.height ); vips_buf_appendf( buf, "type = %d, ", region->type ); vips_buf_appendf( buf, "data = %p, ", region->data ); vips_buf_appendf( buf, "bpl = %d, ", region->bpl ); vips_buf_appendf( buf, "seq = %p, ", region->seq ); vips_buf_appendf( buf, "thread = %p, ", region->thread ); vips_buf_appendf( buf, "window = %p, ", region->window ); vips_buf_appendf( buf, "buffer = %p, ", region->buffer ); vips_buf_appendf( buf, "invalid = %d", region->invalid ); VIPS_OBJECT_CLASS( vips_region_parent_class )->dump( object, buf ); } static void vips_region_summary( VipsObject *object, VipsBuf *buf ) { VipsRegion *region = VIPS_REGION( object ); vips_buf_appendf( buf, "VipsRegion: %p, ", region ); vips_buf_appendf( buf, "im = %p, ", region->im ); vips_buf_appendf( buf, "left = %d, ", region->valid.left ); vips_buf_appendf( buf, "top = %d, ", region->valid.top ); vips_buf_appendf( buf, "width = %d, ", region->valid.width ); vips_buf_appendf( buf, "height = %d", region->valid.height ); if( region->buffer && region->buffer->buf ) vips_buf_appendf( buf, ", %.3gMB", region->buffer->bsize / (1024 * 1024.0) ); VIPS_OBJECT_CLASS( vips_region_parent_class )->summary( object, buf ); } /* If a region is being created in one thread (eg. the main thread) and then * used in another (eg. a worker thread), the new thread needs to tell VIPS * to stop sanity g_assert() fails. The previous owner needs to * vips__region_no_ownership() before we can call this. */ void vips__region_take_ownership( VipsRegion *region ) { /* Lock so that there's a memory barrier with the thread doing the * vips__region_no_ownership() before us. */ VIPS_GATE_START( "vips__region_take_ownership: wait" ); g_mutex_lock( region->im->sslock ); VIPS_GATE_STOP( "vips__region_take_ownership: wait" ); if( region->thread != g_thread_self() ) { g_assert( region->thread == NULL ); /* We don't want to move shared buffers: the other region * using this buffer will still be on the other thread. * Not sure if this will ever happen: if it does, we'll * need to dup the buffer. */ g_assert( !region->buffer || region->buffer->ref_count == 1 ); region->thread = g_thread_self(); } g_mutex_unlock( region->im->sslock ); } void vips__region_check_ownership( VipsRegion *region ) { if( region->thread ) { g_assert( region->thread == g_thread_self() ); if( region->buffer && region->buffer->cache ) g_assert( region->thread == region->buffer->cache->thread ); } } /* Call this from the relinquishing thread. Removes the buffer (if any) from * this thread's buffer cache. */ void vips__region_no_ownership( VipsRegion *region ) { VIPS_GATE_START( "vips__region_no_ownership: wait" ); g_mutex_lock( region->im->sslock ); VIPS_GATE_STOP( "vips__region_no_ownership: wait" ); vips__region_check_ownership( region ); region->thread = NULL; if( region->buffer ) vips_buffer_undone( region->buffer ); g_mutex_unlock( region->im->sslock ); } static int vips_region_build( VipsObject *object ) { VipsRegion *region = VIPS_REGION( object ); VipsImage *image = region->im; VIPS_DEBUG_MSG( "vips_region_build: %p\n", region ); if( VIPS_OBJECT_CLASS( vips_region_parent_class )->build( object ) ) return( -1 ); vips__region_take_ownership( region ); /* We're usually inside the ss lock anyway. But be safe ... */ VIPS_GATE_START( "vips_region_build: wait" ); g_mutex_lock( image->sslock ); VIPS_GATE_STOP( "vips_region_build: wait" ); image->regions = g_slist_prepend( image->regions, region ); g_mutex_unlock( image->sslock ); return( 0 ); } static void vips_region_class_init( VipsRegionClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->finalize = vips_region_finalize; gobject_class->dispose = vips_region_dispose; vobject_class->summary = vips_region_summary; vobject_class->dump = vips_region_dump; vobject_class->build = vips_region_build; } static void vips_region_init( VipsRegion *region ) { region->type = VIPS_REGION_NONE; #ifdef VIPS_DEBUG g_mutex_lock( vips__global_lock ); vips__regions_all = g_slist_prepend( vips__regions_all, region ); printf( "vips_region_init: %d regions in vips\n", g_slist_length( vips__regions_all ) ); g_mutex_unlock( vips__global_lock ); #endif /*VIPS_DEBUG*/ } /** * vips_region_new: (constructor) * @image: image to create this region on * * Create a region. #VipsRegion s start out empty, you need to call * vips_region_prepare() to fill them with pixels. * * See also: vips_region_prepare(). */ VipsRegion * vips_region_new( VipsImage *image ) { VipsRegion *region; /* Ref quickly, we want to make sure we keep the image around. * We can't use the property system, we need to be very threaded. */ g_object_ref( image ); g_assert( G_OBJECT( image )->ref_count > 1 ); g_assert( vips_object_sanity( VIPS_OBJECT( image ) ) ); region = VIPS_REGION( g_object_new( VIPS_TYPE_REGION, NULL ) ); region->im = image; if( vips_object_build( VIPS_OBJECT( region ) ) ) { VIPS_UNREF( region ); return( NULL ); } g_assert( vips_object_sanity( VIPS_OBJECT( region ) ) ); return( region ); } /* Region should be a pixel buffer. On return, check * reg->buffer->done to see if there are pixels there already. Otherwise, you * need to calculate. */ /** * vips_region_buffer: (method) * @reg: region to operate upon * @r: #VipsRect of pixels you need to be able to address * * The region is transformed so that at least @r pixels are available as a * memory buffer that can be written to. * * Returns: 0 on success, or -1 for error. */ int vips_region_buffer( VipsRegion *reg, const VipsRect *r ) { VipsImage *im = reg->im; VipsRect image; VipsRect clipped; vips__region_check_ownership( reg ); /* Clip against image. */ image.top = 0; image.left = 0; image.width = im->Xsize; image.height = im->Ysize; vips_rect_intersectrect( r, &image, &clipped ); /* Test for empty. */ if( vips_rect_isempty( &clipped ) ) { vips_error( "VipsRegion", "%s", _( "valid clipped to nothing" ) ); return( -1 ); } VIPS_FREEF( vips_window_unref, reg->window ); /* Have we been asked to drop caches? We want to throw everything * away. * * If not, try to reuse the current buffer. */ if( reg->invalid ) { VIPS_FREEF( vips_buffer_unref, reg->buffer ); reg->invalid = FALSE; if( !(reg->buffer = vips_buffer_new( im, &clipped )) ) return( -1 ); } else { /* We combine buffer unref and new buffer ref in one call * to reduce malloc/free cycling. */ if( !(reg->buffer = vips_buffer_unref_ref( reg->buffer, im, &clipped )) ) return( -1 ); } /* Init new stuff. */ reg->valid = reg->buffer->area; reg->bpl = VIPS_IMAGE_SIZEOF_PEL( im ) * reg->buffer->area.width; reg->type = VIPS_REGION_BUFFER; reg->data = reg->buffer->buf; return( 0 ); } /** * vips_region_image: (method) * @reg: region to operate upon * @r: #VipsRect of pixels you need to be able to address * * The region is transformed so that at least @r pixels are available to be * read from the image. The image needs to be a memory buffer or represent a * file on disc that has been mapped or can be mapped. * * Returns: 0 on success, or -1 for error. */ int vips_region_image( VipsRegion *reg, const VipsRect *r ) { VipsImage *image = reg->im; VipsRect all; VipsRect clipped; /* Sanity check. */ vips__region_check_ownership( reg ); /* Clip against image. */ all.top = 0; all.left = 0; all.width = image->Xsize; all.height = image->Ysize; vips_rect_intersectrect( r, &all, &clipped ); if( vips_rect_isempty( &clipped ) ) { vips_error( "VipsRegion", "%s", _( "valid clipped to nothing" ) ); return( -1 ); } reg->invalid = FALSE; VIPS_FREEF( vips_buffer_unref, reg->buffer ); if( image->data ) { /* We have the whole image available ... easy! */ VIPS_FREEF( vips_window_unref, reg->window ); /* We can't just set valid = whole image, since this may be an * incompletely calculated memory buffer. Just set valid to r. */ reg->valid = clipped; reg->bpl = VIPS_IMAGE_SIZEOF_LINE( image ); reg->data = VIPS_IMAGE_ADDR( image, clipped.left, clipped.top ); reg->type = VIPS_REGION_OTHER_IMAGE; } else if( image->dtype == VIPS_IMAGE_OPENIN ) { /* No complete image data ... but we can use a rolling window. */ reg->type = VIPS_REGION_WINDOW; if( !(reg->window = vips_window_take( reg->window, image, clipped.top, clipped.height )) ) return( -1 ); /* Note the area the window actually represents. */ reg->valid.left = 0; reg->valid.top = reg->window->top; reg->valid.width = image->Xsize; reg->valid.height = reg->window->height; reg->bpl = VIPS_IMAGE_SIZEOF_LINE( image ); reg->data = reg->window->data; } else { VIPS_FREEF( vips_window_unref, reg->window ); vips_error( "VipsRegion", "%s", _( "bad image type" ) ); return( -1 ); } return( 0 ); } /** * vips_region_region: (method) * @reg: region to operate upon * @dest: region to connect to * @r: #VipsRect of pixels you need to be able to address * @x: postion of @r in @dest * @y: postion of @r in @dest * * Make VIPS_REGION_ADDR() on @reg go to @dest instead. * * @r is the part of @reg which you want to be able to address (this * effectively becomes the valid field), (@x, @y) is the top LH corner of the * corresponding area in @dest. * * Performs all clipping necessary to ensure that @reg->valid is indeed * valid. * * If the region we attach to is moved or destroyed, we can be left with * dangling pointers! If the region we attach to is on another image, the * two images must have the same sizeof( pel ). * * Returns: 0 on success, or -1 for error. */ int vips_region_region( VipsRegion *reg, VipsRegion *dest, const VipsRect *r, int x, int y ) { VipsRect image; VipsRect wanted; VipsRect clipped; VipsRect clipped2; VipsRect final; /* Sanity check. */ if( !dest->data ) { vips_error( "VipsRegion", "%s", _( "no pixel data on attached image" ) ); return( -1 ); } if( VIPS_IMAGE_SIZEOF_PEL( dest->im ) != VIPS_IMAGE_SIZEOF_PEL( reg->im ) ) { vips_error( "VipsRegion", "%s", _( "images do not match in pixel size" ) ); return( -1 ); } vips__region_check_ownership( reg ); /* We can't test g_assert( dest->thread == g_thread_self() ); * since we can have several threads writing to the same region in * threadgroup. */ /* Clip r against size of the image. */ image.top = 0; image.left = 0; image.width = reg->im->Xsize; image.height = reg->im->Ysize; vips_rect_intersectrect( r, &image, &clipped ); /* Translate to dest's coordinate space and clip against the available * pixels. */ wanted.left = x + (clipped.left - r->left); wanted.top = y + (clipped.top - r->top); wanted.width = clipped.width; wanted.height = clipped.height; /* Test that dest->valid is large enough. */ if( !vips_rect_includesrect( &dest->valid, &wanted ) ) { vips_error( "VipsRegion", "%s", _( "dest too small" ) ); return( -1 ); } /* Clip against the available pixels. */ vips_rect_intersectrect( &wanted, &dest->valid, &clipped2 ); /* Translate back to reg's coordinate space and set as valid. */ final.left = r->left + (clipped2.left - wanted.left); final.top = r->top + (clipped2.top - wanted.top); final.width = clipped2.width; final.height = clipped2.height; /* Test for empty. */ if( vips_rect_isempty( &final ) ) { vips_error( "VipsRegion", "%s", _( "valid clipped to nothing" ) ); return( -1 ); } /* Init new stuff. */ VIPS_FREEF( vips_buffer_unref, reg->buffer ); VIPS_FREEF( vips_window_unref, reg->window ); reg->invalid = FALSE; reg->valid = final; reg->bpl = dest->bpl; reg->data = VIPS_REGION_ADDR( dest, clipped2.left, clipped2.top ); reg->type = VIPS_REGION_OTHER_REGION; return( 0 ); } /** * vips_region_equalsregion: * @reg1: region to test * @reg2: region to test * * Do two regions point to the same piece of image? ie. * * |[ * VIPS_REGION_ADDR( reg1, x, y ) == VIPS_REGION_ADDR( reg2, x, y ) && * *VIPS_REGION_ADDR( reg1, x, y ) == * *VIPS_REGION_ADDR( reg2, x, y ) for all x, y, reg1, reg2. * ]| * * Returns: non-zero on equality. */ int vips_region_equalsregion( VipsRegion *reg1, VipsRegion *reg2 ) { return( reg1->im == reg2->im && vips_rect_equalsrect( ®1->valid, ®2->valid ) && reg1->data == reg2->data ); } /** * vips_region_position: (method) * @reg: region to operate upon * @x: position to move to * @y: position to move to * * Set the position of a region. This only affects reg->valid, ie. the way * pixels are addressed, not reg->data, the pixels which are addressed. Clip * against the size of the image. Do not allow negative positions, or * positions outside the image. * * Returns: 0 on success, or -1 for error. */ int vips_region_position( VipsRegion *reg, int x, int y ) { VipsRect req, image, clipped; /* Clip! */ image.top = 0; image.left = 0; image.width = reg->im->Xsize; image.height = reg->im->Ysize; req.top = y; req.left = x; req.width = reg->valid.width; req.height = reg->valid.height; vips_rect_intersectrect( &image, &req, &clipped ); if( x < 0 || y < 0 || vips_rect_isempty( &clipped ) ) { vips_error( "VipsRegion", "%s", _( "bad position" ) ); return( -1 ); } reg->valid = clipped; reg->invalid = FALSE; return( 0 ); } int vips_region_fill( VipsRegion *reg, const VipsRect *r, VipsRegionFillFn fn, void *a ) { g_assert( reg->im->dtype == VIPS_IMAGE_PARTIAL ); g_assert( reg->im->generate_fn ); /* You'd think we could check reg and see if it already has some of * the pixels we need. If it does, we could copy them and only * generate the new ones. * * However, we usually have neighbouring regions on different threads, * so from the point of view of this thread, we will get no overlaps * on successive prepare requests. */ /* Should have local memory. */ if( vips_region_buffer( reg, r ) ) return( -1 ); /* Evaluate into or, if we've not got calculated pixels. */ if( !reg->buffer->done ) { if( fn( reg, a ) ) return( -1 ); /* Publish our results. */ if( reg->buffer ) vips_buffer_done( reg->buffer ); } return( 0 ); } #define FILL_LINE( TYPE, Q, N, V ) { \ int x; \ TYPE *QT = (TYPE *) Q; \ \ for( x = 0; x < (N); x++ ) \ QT[x] = (V); \ } /** * vips_region_paint: (method) * @reg: region to operate upon * @r: area to paint * @value: value to paint * * Paints @value into @reg covering rectangle @r. * @r is clipped against * @reg->valid. * * For int images, @value is * passed to memset(), so it usually needs to be 0 or 255. For float images, * value is cast to a float and copied in to each band element. * * @r is clipped against * @reg->valid. * * See also: vips_region_black(). */ void vips_region_paint( VipsRegion *reg, const VipsRect *r, int value ) { VipsRect clipped; vips_rect_intersectrect( r, ®->valid, &clipped ); if( !vips_rect_isempty( &clipped ) ) { VipsPel *q = VIPS_REGION_ADDR( reg, clipped.left, clipped.top ); size_t ls = VIPS_REGION_LSKIP( reg ); size_t wd = clipped.width * VIPS_IMAGE_SIZEOF_PEL( reg->im ); int y; if( vips_band_format_isint( reg->im->BandFmt ) ) { for( y = 0; y < clipped.height; y++ ) { memset( (char *) q, value, wd ); q += ls; } } else { gboolean iscomplex = vips_band_format_iscomplex( reg->im->BandFmt ); int nele = clipped.width * reg->im->Bands * (iscomplex ? 2 : 1); VipsPel *q1; switch( reg->im->BandFmt ) { case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: FILL_LINE( float, q, nele, value ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: FILL_LINE( double, q, nele, value ); break; default: g_assert_not_reached(); } q1 = q + ls; for( y = 1; y < clipped.height; y++ ) { memcpy( (char *) q1, (char *) q, wd ); q1 += ls; } } } } /** * vips_region_paint_pel: (method) * @reg: region to operate upon * @r: area to paint * @ink: value to paint * * Paints @ink into @reg covering rectangle @r. @r is clipped against * @reg->valid. * * @ink should be a byte array of the same size as an image pixel containing * the binary value to write into the pixels. * * See also: vips_region_paint(). */ void vips_region_paint_pel( VipsRegion *reg, const VipsRect *r, const VipsPel *ink ) { VipsRect ovl; vips_rect_intersectrect( r, ®->valid, &ovl ); if( !vips_rect_isempty( &ovl ) ) { int ps = VIPS_IMAGE_SIZEOF_PEL( reg->im ); int ws = ovl.width * ps; int ls = VIPS_REGION_LSKIP( reg ); VipsPel *to, *q; int x, y, z; /* We plot the first line pointwise, then memcpy() it for the * subsequent lines. */ to = VIPS_REGION_ADDR( reg, ovl.left, ovl.top ); q = to; for( x = 0; x < ovl.width; x++ ) { /* Faster than memcpy() for about n<20. */ for( z = 0; z < ps; z++ ) q[z] = ink[z]; q += ps; } q = to + ls; for( y = 1; y < ovl.height; y++ ) { memcpy( q, to, ws ); q += ls; } } } /** * vips_region_black: (method) * @reg: region to operate upon * * Paints 0 into the valid part of @reg. * * See also: vips_region_paint(). */ void vips_region_black( VipsRegion *reg ) { vips_region_paint( reg, ®->valid, 0 ); } /** * vips_region_copy: * @reg: source region * @dest: (inout): destination region * @r: #VipsRect of pixels you need to copy * @x: postion of @r in @dest * @y: postion of @r in @dest * * Copy from one region to another. Copy area @r from inside @reg to @dest, * positioning the area of pixels at @x, @y. The two regions must have pixels * which are the same size. * * See also: vips_region_paint(). */ void vips_region_copy( VipsRegion *reg, VipsRegion *dest, const VipsRect *r, int x, int y ) { int z; int len = VIPS_IMAGE_SIZEOF_PEL( reg->im ) * r->width; VipsPel *p = VIPS_REGION_ADDR( reg, r->left, r->top ); VipsPel *q = VIPS_REGION_ADDR( dest, x, y ); int plsk = VIPS_REGION_LSKIP( reg ); int qlsk = VIPS_REGION_LSKIP( dest ); #ifdef DEBUG /* Find the area we will write to in dest. */ VipsRect output; printf( "vips_region_copy: sanity check\n" ); output.left = x; output.top = y; output.width = r->width; output.height = r->height; /* Must be inside dest->valid. */ g_assert( vips_rect_includesrect( &dest->valid, &output ) ); /* Check the area we are reading from in reg. */ g_assert( vips_rect_includesrect( ®->valid, r ) ); /* VipsPel size must be the same. */ g_assert( VIPS_IMAGE_SIZEOF_PEL( reg->im ) == VIPS_IMAGE_SIZEOF_PEL( dest->im ) ); #endif /*DEBUG*/ /* Copy the scanlines. * * Special case: if the two sets of scanlines are end-to-end (this * happens if we are copying complete regions) we can do a single * memcpy() for the whole thing. This is a little faster since we * won't have to do unaligned copies. */ if( len == plsk && len == qlsk ) memcpy( q, p, len * r->height ); else for( z = 0; z < r->height; z++ ) { memcpy( q, p, len ); p += plsk; q += qlsk; } } /* Generate area @target in @to using pixels in @from. * * VIPS_CODING_LABQ only. */ static void vips_region_shrink_labpack( VipsRegion *from, VipsRegion *to, const VipsRect *target ) { int ls = VIPS_REGION_LSKIP( from ); int x, y; for( y = 0; y < target->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( from, target->left * 2, (target->top + y) * 2 ); VipsPel *q = VIPS_REGION_ADDR( to, target->left, target->top + y ); /* Ignore the extra bits for speed. */ for( x = 0; x < target->width; x++ ) { signed char *sp = (signed char *) p; unsigned char *up = (unsigned char *) p; int l = up[0] + up[4] + up[ls] + up[ls + 4]; int a = sp[1] + sp[5] + sp[ls + 1] + sp[ls + 5]; int b = sp[2] + sp[6] + sp[ls + 2] + sp[ls + 6]; q[0] = (l + 2) >> 2; q[1] = a >> 2; q[2] = b >> 2; q[3] = 0; q += 4; p += 8; } } } #define SHRINK_TYPE_MEAN_INT( TYPE ) \ for( x = 0; x < target->width; x++ ) { \ TYPE *tp = (TYPE *) p; \ TYPE *tp1 = (TYPE *) (p + ls); \ TYPE *tq = (TYPE *) q; \ \ for( z = 0; z < nb; z++ ) { \ int tot = tp[z] + tp[z + nb] + \ tp1[z] + tp1[z + nb]; \ \ tq[z] = (tot + 2) >> 2; \ } \ \ /* Move on two pels in input. \ */ \ p += ps << 1; \ q += ps; \ } #define SHRINK_TYPE_MEAN_FLOAT( TYPE ) \ for( x = 0; x < target->width; x++ ) { \ TYPE *tp = (TYPE *) p; \ TYPE *tp1 = (TYPE *) (p + ls); \ TYPE *tq = (TYPE *) q; \ \ for( z = 0; z < nb; z++ ) { \ double tot = tp[z] + tp[z + nb] + \ tp1[z] + tp1[z + nb]; \ \ tq[z] = tot / 4; \ } \ \ /* Move on two pels in input. \ */ \ p += ps << 1; \ q += ps; \ } /* Generate area @target in @to using pixels in @from. Non-complex. */ static void vips_region_shrink_uncoded_mean( VipsRegion *from, VipsRegion *to, const VipsRect *target ) { int ls = VIPS_REGION_LSKIP( from ); int ps = VIPS_IMAGE_SIZEOF_PEL( from->im ); int nb = from->im->Bands; int x, y, z; for( y = 0; y < target->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( from, target->left * 2, (target->top + y) * 2 ); VipsPel *q = VIPS_REGION_ADDR( to, target->left, target->top + y ); /* Process this line of pels. */ switch( from->im->BandFmt ) { case VIPS_FORMAT_UCHAR: SHRINK_TYPE_MEAN_INT( unsigned char ); break; case VIPS_FORMAT_CHAR: SHRINK_TYPE_MEAN_INT( signed char ); break; case VIPS_FORMAT_USHORT: SHRINK_TYPE_MEAN_INT( unsigned short ); break; case VIPS_FORMAT_SHORT: SHRINK_TYPE_MEAN_INT( signed short ); break; case VIPS_FORMAT_UINT: SHRINK_TYPE_MEAN_INT( unsigned int ); break; case VIPS_FORMAT_INT: SHRINK_TYPE_MEAN_INT( signed int ); break; case VIPS_FORMAT_FLOAT: SHRINK_TYPE_MEAN_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: SHRINK_TYPE_MEAN_FLOAT( double ); break; default: g_assert_not_reached(); } } } /* This method is implemented so as to perform well and to always select an * output pixel from one of the input pixels. As such we make only the * following guarantees: * * ONLY works for non-complex uncoded images pixel types * ALWAYS draws from the input values * NEVER interpolates * NOT stable with respect to the ordered set of input values * IS stable with respect to the initial arrangement of input values */ #define SHRINK_TYPE_MEDIAN( TYPE ) { \ for( x = 0; x < target->width; x++ ) { \ TYPE *tp = (TYPE *) p; \ TYPE *tp1 = (TYPE *) (p + ls); \ TYPE *tq = (TYPE *) q; \ \ for( z = 0; z < nb; z++ ) { \ tq[z] = VIPS_MIN( \ VIPS_MAX( tp[z], tp[z + nb] ), \ VIPS_MAX( tp1[z], tp1[z + nb] ) \ ); \ } \ \ /* Move on two pels in input. \ */ \ p += ps << 1; \ q += ps; \ } \ } /* Generate area @target in @to using pixels in @from. Non-complex. */ static void vips_region_shrink_uncoded_median( VipsRegion *from, VipsRegion *to, const VipsRect *target ) { int ls = VIPS_REGION_LSKIP( from ); int ps = VIPS_IMAGE_SIZEOF_PEL( from->im ); int nb = from->im->Bands; int x, y, z; for( y = 0; y < target->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( from, target->left * 2, (target->top + y) * 2 ); VipsPel *q = VIPS_REGION_ADDR( to, target->left, target->top + y ); /* Process this line of pels. */ switch( from->im->BandFmt ) { case VIPS_FORMAT_UCHAR: SHRINK_TYPE_MEDIAN( unsigned char ); break; case VIPS_FORMAT_CHAR: SHRINK_TYPE_MEDIAN( signed char ); break; case VIPS_FORMAT_USHORT: SHRINK_TYPE_MEDIAN( unsigned short ); break; case VIPS_FORMAT_SHORT: SHRINK_TYPE_MEDIAN( signed short ); break; case VIPS_FORMAT_UINT: SHRINK_TYPE_MEDIAN( unsigned int ); break; case VIPS_FORMAT_INT: SHRINK_TYPE_MEDIAN( signed int ); break; case VIPS_FORMAT_FLOAT: SHRINK_TYPE_MEDIAN( float ); break; case VIPS_FORMAT_DOUBLE: SHRINK_TYPE_MEDIAN( double ); break; default: g_assert_not_reached(); } } } /* This method is implemented so as to perform well and to always select an * output pixel from one of the input pixels. As such we make only the * following guarantees: * * ONLY works for non-complex uncoded images pixel types * ALWAYS draws from the input values * NEVER interpolates * NOT stable with respect to the ordered set of input values * IS stable with respect to the initial arrangement of input values */ #define SHRINK_TYPE_MODE( TYPE ) { \ for( x = 0; x < target->width; x++ ) { \ TYPE *tp = (TYPE *) p; \ TYPE *tp1 = (TYPE *) (p + ls); \ TYPE *tq = (TYPE *) q; \ \ for( z = 0; z < nb; z++ ) { \ TYPE v[] = {tp[z], tp[z + nb], tp1[z], tp1[z + nb]}; \ int b0 = (v[0] == v[1]) | \ (v[0] == v[2]) | \ (v[0] == v[3]); \ int b1 = (v[1] == v[0]) | \ (v[1] == v[2]) | \ (v[1] == v[3]); \ int index = ((~b0) & 0x1) + (~(b0 ^ b1) & 0x1); \ \ tq[z] = v[index]; \ } \ \ /* Move on two pels in input. \ */ \ p += ps << 1; \ q += ps; \ } \ } /* Generate area @target in @to using pixels in @from. Non-complex. */ static void vips_region_shrink_uncoded_mode( VipsRegion *from, VipsRegion *to, const VipsRect *target ) { int ls = VIPS_REGION_LSKIP( from ); int ps = VIPS_IMAGE_SIZEOF_PEL( from->im ); int nb = from->im->Bands; int x, y, z; for( y = 0; y < target->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( from, target->left * 2, (target->top + y) * 2 ); VipsPel *q = VIPS_REGION_ADDR( to, target->left, target->top + y ); /* Process this line of pels. */ switch( from->im->BandFmt ) { case VIPS_FORMAT_UCHAR: SHRINK_TYPE_MODE( unsigned char ); break; case VIPS_FORMAT_CHAR: SHRINK_TYPE_MODE( signed char ); break; case VIPS_FORMAT_USHORT: SHRINK_TYPE_MODE( unsigned short ); break; case VIPS_FORMAT_SHORT: SHRINK_TYPE_MODE( signed short ); break; case VIPS_FORMAT_UINT: SHRINK_TYPE_MODE( unsigned int ); break; case VIPS_FORMAT_INT: SHRINK_TYPE_MODE( signed int ); break; case VIPS_FORMAT_FLOAT: SHRINK_TYPE_MODE( float ); break; case VIPS_FORMAT_DOUBLE: SHRINK_TYPE_MODE( double ); break; default: g_assert_not_reached(); } } } /* Generate area @target in @to using pixels in @from. Non-complex. */ static void vips_region_shrink_uncoded( VipsRegion *from, VipsRegion *to, const VipsRect *target, VipsRegionShrink method ) { switch( method ) { case VIPS_REGION_SHRINK_MEAN: vips_region_shrink_uncoded_mean( from, to, target ); break; case VIPS_REGION_SHRINK_MEDIAN: vips_region_shrink_uncoded_median( from, to, target ); break; case VIPS_REGION_SHRINK_MODE: vips_region_shrink_uncoded_mode( from, to, target ); break; default: g_assert_not_reached(); } } /* No point having an int path, this will always be horribly slow. */ #define SHRINK_ALPHA_TYPE( TYPE ) { \ TYPE *tp = (TYPE *) p; \ TYPE *tp1 = (TYPE *) (p + ls); \ TYPE *tq = (TYPE *) q; \ \ for( x = 0; x < target->width; x++ ) { \ /* Make the input alphas. \ */ \ double a1 = tp[nb - 1]; \ double a2 = tp[nb + nb - 1]; \ double a3 = tp1[nb - 1]; \ double a4 = tp1[nb + nb - 1]; \ \ /* Output alpha. \ */ \ double a = (a1 + a2 + a3 + a4) / 4.0; \ \ if( a == 0 ) { \ for( z = 0; z < nb; z++ ) \ tq[z] = 0; \ } \ else { \ for( z = 0; z < nb - 1; z++ ) \ tq[z] = (a1 * tp[z] + a2 * tp[z + nb] + \ a3 * tp1[z] + a4 * tp1[z + nb]) / \ (4.0 * a); \ tq[z] = a; \ } \ \ /* Move on two pels in input. \ */ \ tp += nb << 1; \ tp1 += nb << 1; \ tq += nb; \ } \ } /* Generate area @target in @to using pixels in @from. Non-complex. Use the * last band as alpha. */ static void vips_region_shrink_alpha( VipsRegion *from, VipsRegion *to, const VipsRect *target ) { int ls = VIPS_REGION_LSKIP( from ); int nb = from->im->Bands; int x, y, z; for( y = 0; y < target->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( from, target->left * 2, (target->top + y) * 2 ); VipsPel *q = VIPS_REGION_ADDR( to, target->left, target->top + y ); /* Process this line of pels. */ switch( from->im->BandFmt ) { case VIPS_FORMAT_UCHAR: SHRINK_ALPHA_TYPE( unsigned char ); break; case VIPS_FORMAT_CHAR: SHRINK_ALPHA_TYPE( signed char ); break; case VIPS_FORMAT_USHORT: SHRINK_ALPHA_TYPE( unsigned short ); break; case VIPS_FORMAT_SHORT: SHRINK_ALPHA_TYPE( signed short ); break; case VIPS_FORMAT_UINT: SHRINK_ALPHA_TYPE( unsigned int ); break; case VIPS_FORMAT_INT: SHRINK_ALPHA_TYPE( signed int ); break; case VIPS_FORMAT_FLOAT: SHRINK_ALPHA_TYPE( float ); break; case VIPS_FORMAT_DOUBLE: SHRINK_ALPHA_TYPE( double ); break; default: g_assert_not_reached(); } } } /** * vips_region_shrink_method: * @from: source region * @to: (inout): destination region * @target: #VipsRect of pixels you need to copy * @method: method to use when generating target pixels * * Write the pixels @target in @to from the x2 larger area in @from. * Non-complex uncoded images and LABQ only. Images with alpha (see * vips_image_hasalpha()) shrink with pixels scaled by alpha to avoid fringing. * * @method selects the method used to do the 2x2 shrink. * * See also: vips_region_copy(). */ int vips_region_shrink_method( VipsRegion *from, VipsRegion *to, const VipsRect *target, VipsRegionShrink method ) { VipsImage *image = from->im; if( vips_check_coding_noneorlabq( "vips_region_shrink_method", image ) ) return( -1 ); if( from->im->Coding == VIPS_CODING_NONE ) { if( vips_check_noncomplex( "vips_region_shrink_method", image ) ) return( -1 ); if( vips_image_hasalpha( image ) ) vips_region_shrink_alpha( from, to, target ); else vips_region_shrink_uncoded( from, to, target, method ); } else vips_region_shrink_labpack( from, to, target ); return( 0 ); } /** * vips_region_shrink: (skip) * @from: source region * @to: (inout): destination region * @target: #VipsRect of pixels you need to copy * * Write the pixels @target in @to from the x2 larger area in @from. * Non-complex uncoded images and LABQ only. Images with alpha (see * vips_image_hasalpha()) shrink with pixels scaled by alpha to avoid fringing. * * This is a compatibility stub that just calls vips_region_shrink_method(). * * See also: vips_region_shrink_method(). */ int vips_region_shrink( VipsRegion *from, VipsRegion *to, const VipsRect *target ) { return( vips_region_shrink_method( from, to, target, VIPS_REGION_SHRINK_MEAN ) ); } /* Generate into a region. */ static int vips_region_generate( VipsRegion *reg ) { VipsImage *im = reg->im; gboolean stop; /* Start new sequence, if necessary. */ if( vips__region_start( reg ) ) return( -1 ); /* Ask for evaluation. */ stop = FALSE; if( im->generate_fn( reg, reg->seq, im->client1, im->client2, &stop ) ) return( -1 ); if( stop ) { vips_error( "vips_region_generate", "%s", _( "stop requested" ) ); return( -1 ); } return( 0 ); } /** * vips_region_prepare: (method) * @reg: region to prepare * @r: #VipsRect of pixels you need to be able to address * * vips_region_prepare() fills @reg with pixels. After calling, * you can address at least the area @r with VIPS_REGION_ADDR() and get * valid pixels. * * vips_region_prepare() runs in-line, that is, computation is done by * the calling thread, no new threads are involved, and computation * blocks until the pixels are ready. * * Use vips_sink_screen() to calculate an area of pixels in the * background. * * See also: vips_sink_screen(), * vips_region_prepare_to(). * * Returns: 0 on success, or -1 on error. */ int vips_region_prepare( VipsRegion *reg, const VipsRect *r ) { VipsImage *im = reg->im; VipsRect save = *r; vips__region_check_ownership( reg ); if( vips_image_iskilled( im ) ) return( -1 ); /* We use save for sanity checking valid: we test at the end that the * pixels we have generated are indeed all the ones that were asked * for. * * However, r may be clipped by the image size, so we need to clip * save as well to make sure we don't fail the assert due to that. */ { VipsRect image; image.left = 0; image.top = 0; image.width = reg->im->Xsize; image.height = reg->im->Ysize; vips_rect_intersectrect( &save, &image, &save ); } #ifdef DEBUG printf( "vips_region_prepare: " "left = %d, top = %d, width = %d, height = %d\n", r->left, r->top, r->width, r->height ); #endif /*DEBUG*/ switch( im->dtype ) { case VIPS_IMAGE_PARTIAL: if( vips_region_fill( reg, r, (VipsRegionFillFn) vips_region_generate, NULL ) ) return( -1 ); break; case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_OPENIN: /* Attach to existing buffer. */ if( vips_region_image( reg, r ) ) return( -1 ); break; default: vips_error( "vips_region_prepare", _( "unable to input from a %s image" ), vips_enum_string( VIPS_TYPE_DEMAND_STYLE, im->dtype ) ); return( -1 ); } /* valid should now include all the pixels that were asked for. */ g_assert( vips_rect_includesrect( ®->valid, &save ) ); return( 0 ); } /* We need to make pixels using reg's generate function, and write the result * to dest. */ static int vips_region_prepare_to_generate( VipsRegion *reg, VipsRegion *dest, const VipsRect *r, int x, int y ) { VipsImage *im = reg->im; VipsPel *p; if( !im->generate_fn ) { vips_error( "vips_region_prepare_to", "%s", _( "incomplete header" ) ); return( -1 ); } if( vips_region_region( reg, dest, r, x, y ) ) return( -1 ); /* Remember where reg is pointing now. */ p = VIPS_REGION_ADDR( reg, reg->valid.left, reg->valid.top ); /* Run sequence into reg. */ if( vips_region_generate( reg ) ) return( -1 ); /* The generate function may not have actually made any pixels ... it * might just have redirected reg to point somewhere else. If it has, * we need an extra copy operation. */ if( VIPS_REGION_ADDR( reg, reg->valid.left, reg->valid.top ) != p ) vips_region_copy( reg, dest, r, x, y ); return( 0 ); } /** * vips_region_prepare_to: (method) * @reg: region to prepare * @dest: (inout): region to write to * @r: #VipsRect of pixels you need to be able to address * @x: postion of @r in @dest * @y: postion of @r in @dest * * Like vips_region_prepare(): fill @reg with the pixels in area @r. * * Unlike vips_region_prepare(), rather than writing the result to @reg, the * pixels are written into @dest at offset @x, @y. * * Also unlike vips_region_prepare(), @dest is not set up for writing for * you with vips_region_buffer(). You can * point @dest at anything, and pixels really will be written there. * This makes vips_region_prepare_to() useful for making the ends of * pipelines. * * See also: vips_region_prepare(), vips_sink_disc(). * * Returns: 0 on success, or -1 on error */ int vips_region_prepare_to( VipsRegion *reg, VipsRegion *dest, const VipsRect *r, int x, int y ) { VipsImage *im = reg->im; VipsRect image; VipsRect wanted; VipsRect clipped; VipsRect clipped2; VipsRect final; if( vips_image_iskilled( im ) ) return( -1 ); /* Sanity check. */ if( !dest->data || dest->im->BandFmt != reg->im->BandFmt || dest->im->Bands != reg->im->Bands ) { vips_error( "vips_region_prepare_to", "%s", _( "inappropriate region type" ) ); return( -1 ); } /* clip r first against the size of reg->im, then again against the * memory we have available to write to on dest. Just like * vips_region_region() */ image.top = 0; image.left = 0; image.width = reg->im->Xsize; image.height = reg->im->Ysize; vips_rect_intersectrect( r, &image, &clipped ); g_assert( clipped.left == r->left ); g_assert( clipped.top == r->top ); wanted.left = x + (clipped.left - r->left); wanted.top = y + (clipped.top - r->top); wanted.width = clipped.width; wanted.height = clipped.height; /* Test that dest->valid is large enough. */ if( !vips_rect_includesrect( &dest->valid, &wanted ) ) { vips_error( "vips_region_prepare_to", "%s", _( "dest too small" ) ); return( -1 ); } vips_rect_intersectrect( &wanted, &dest->valid, &clipped2 ); /* Translate back to reg's coordinate space and set as valid. */ final.left = r->left + (clipped2.left - wanted.left); final.top = r->top + (clipped2.top - wanted.top); final.width = clipped2.width; final.height = clipped2.height; x = clipped2.left; y = clipped2.top; if( vips_rect_isempty( &final ) ) { vips_error( "vips_region_prepare_to", "%s", _( "valid clipped to nothing" ) ); return( -1 ); } #ifdef DEBUG printf( "vips_region_prepare_to: " "left = %d, top = %d, width = %d, height = %d\n", final.left, final.top, final.width, final.height ); #endif /*DEBUG*/ /* Input or output image type? */ switch( im->dtype ) { case VIPS_IMAGE_OPENOUT: case VIPS_IMAGE_PARTIAL: /* We are generating with a sequence. */ if( vips_region_prepare_to_generate( reg, dest, &final, x, y ) ) return( -1 ); break; case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_OPENIN: /* Attach to existing buffer and copy to dest. */ if( vips_region_image( reg, &final ) ) return( -1 ); vips_region_copy( reg, dest, &final, x, y ); break; case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: /* Could be either input or output. If there is a generate * function, we are outputting. */ if( im->generate_fn ) { if( vips_region_prepare_to_generate( reg, dest, &final, x, y ) ) return( -1 ); } else { if( vips_region_image( reg, &final ) ) return( -1 ); vips_region_copy( reg, dest, &final, x, y ); } break; default: vips_error( "vips_region_prepare_to", _( "unable to input from a %s image" ), vips_enum_nick( VIPS_TYPE_DEMAND_STYLE, im->dtype ) ); return( -1 ); } /* We've written fresh pixels to dest, it's no longer invalid (if it * was). * * We need this extra thing here because, unlike * vips_region_prepare(), we don't vips_region_buffer() dest before * writing it. */ dest->invalid = FALSE; return( 0 ); } /* Don't use this, use vips_reorder_prepare_many() instead. */ int vips_region_prepare_many( VipsRegion **reg, const VipsRect *r ) { for( ; *reg; ++reg ) if( vips_region_prepare( *reg, r ) ) return( -1 ); return( 0 ); } /** * vips_region_fetch: (method) * @reg: region to fetch pixels from * @left: area of pixels to fetch * @top: area of pixels to fetch * @width: area of pixels to fetch * @height: area of pixels to fetch * * Generate an area of pixels and return a copy. The result must be freed * with g_free(). The requested area must be completely inside the image. * * This is equivalent to vips_region_prepare(), followed by a memcpy. It is * convenient for language bindings. * * Returns: A copy of the pixel data. */ VipsPel * vips_region_fetch( VipsRegion *region, int left, int top, int width, int height, size_t *len ) { VipsRect request; VipsRect image; int y; VipsPel *result; VipsPel *p, *q; size_t skip; size_t line; g_assert( width > 0 ); g_assert( height > 0 ); image.left = 0; image.top = 0; image.width = region->im->Xsize; image.height = region->im->Ysize; request.left = left; request.top = top; request.width = width; request.height = height; if( !vips_rect_includesrect( &image, &request ) ) return( NULL ); if( vips_region_prepare( region, &request ) ) return( NULL ); skip = VIPS_REGION_LSKIP( region ); line = VIPS_IMAGE_SIZEOF_PEL( region->im ) * request.width; if( !(result = (VipsPel *) vips_malloc( NULL, line * request.height )) ) return( NULL ); p = VIPS_REGION_ADDR( region, request.left, request.top ); q = result; for( y = 0; y < request.height; y++ ) { memcpy( q, p, line ); p += skip; q += line; } if( len ) *len = request.height * line; return( result ); } /** * vips_region_width: (method) * @region: fetch width from this * * Returns: Width of the pixels held in region. */ int vips_region_width( VipsRegion *region ) { return( region->valid.width ); } /** * vips_region_height: (method) * @region: fetch height from this * * Returns: Height of the pixels held in region. */ int vips_region_height( VipsRegion *region ) { return( region->valid.height ); } /** * vips_region_invalidate: (method) * @reg: region to invalidate * * Mark a region as containing invalid pixels. Calling this function means * that the next time vips_region_prepare() is called, the region will be * recalculated. * * This is faster than calling vips_image_invalidate_all(), but obviously only * affects a single region. * * See also: vips_image_invalidate_all(), vips_region_prepare(). */ void vips_region_invalidate( VipsRegion *reg ) { reg->invalid = TRUE; } #ifdef VIPS_DEBUG static void * vips_region_dump_all_cb( VipsRegion *region, size_t *alive ) { char str[2048]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_summary( VIPS_OBJECT( region ), &buf ); printf( "%s\n", vips_buf_all( &buf ) ); if( region->buffer && region->buffer->buf ) *alive += region->buffer->bsize; return( NULL ); } void vips_region_dump_all( void ) { size_t alive; g_mutex_lock( vips__global_lock ); alive = 0; printf( "%d regions in vips\n", g_slist_length( vips__regions_all ) ); vips_slist_map2( vips__regions_all, (VipsSListMap2Fn) vips_region_dump_all_cb, &alive, NULL ); printf( "%gMB alive\n", alive / (1024 * 1024.0) ); g_mutex_unlock( vips__global_lock ); } #endif /*VIPS_DEBUG*/ #ifdef DEBUG_LEAK void vips__region_count_pixels( VipsRegion *region, const char *nickname ) { VipsImage *image = region->im; VipsImagePixels *pixels = g_object_get_qdata( G_OBJECT( image ), vips__image_pixels_quark ); g_mutex_lock( vips__global_lock ); if( !pixels->tpels ) pixels->tpels = VIPS_IMAGE_N_PELS( image ); if( !pixels->nickname ) pixels->nickname = nickname; pixels->npels += region->valid.width * region->valid.height; g_mutex_unlock( vips__global_lock ); } #endif /*DEBUG_LEAK*/ libvips-8.9.1/libvips/iofuncs/reorder.c000066400000000000000000000232521361153320700201320ustar00rootroot00000000000000/* reorder.c ... manage reorder reordering * * 11/1/17 * - first version */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* Have one of these on every image, identified by a quark. */ typedef struct _VipsReorder { /* The image we are attached to. */ VipsImage *image; /* The direct inputs to this image, so a copy of the array that is * passed to vips_image_pipeline_array(), and in the same order. * NULL-terminated. * * Score is the priority we give to the inputs as we de-dupe the source * arrays. * * The recomp order is the order we prepare regions in ... just make a * range then sort by score. */ int n_inputs; VipsImage **input; int *score; int *recomp_order; /* Source images are images with no input images, so file load, * vips_black(), etc. NULL-terminated array. * * The cumulative margin is the total margin that has been added to * each source image up to this point in the pipeline. */ int n_sources; VipsImage **source; int *cumulative_margin; } VipsReorder; GQuark vips__image_reorder_quark = 0; #ifdef DEBUG static void vips_reorder_print( VipsReorder *reorder ) { int i; printf( "vips_reorder_print: " ); vips_object_print_name( VIPS_OBJECT( reorder->image ) ); printf( "\n" ); printf( "n_inputs = %d\n", reorder->n_inputs ); printf( " n score order\n" ); for( i = 0; i < reorder->n_inputs; i++ ) { printf( "%2d - %8d, %8d, ", i, reorder->score[i], reorder->recomp_order[i] ); vips_object_print_name( VIPS_OBJECT( reorder->input[i] ) ); printf( "\n" ); } printf( "n_sources = %d\n", reorder->n_sources ); printf( " n margin\n" ); for( i = 0; i < reorder->n_sources; i++ ) { printf( "%2d - %8d, ", i, reorder->cumulative_margin[i] ); vips_object_print_name( VIPS_OBJECT( reorder->source[i] ) ); printf( "\n" ); } } #endif /*DEBUG*/ static void vips_reorder_free( VipsReorder *reorder ) { /* We free explicitly, rather than using VIPS_ARRAY( image ... ), since * we need to make sure these pointers are valid to this point in the * close cycle. */ VIPS_FREE( reorder->input ); VIPS_FREE( reorder->score ); VIPS_FREE( reorder->recomp_order ); VIPS_FREE( reorder->source ); VIPS_FREE( reorder->cumulative_margin ); } static void vips_reorder_destroy( VipsReorder *reorder ) { vips_reorder_free( reorder ); VIPS_FREE( reorder ); } static VipsReorder * vips_reorder_get( VipsImage *image ) { VipsReorder *reorder; if( (reorder = g_object_get_qdata( G_OBJECT( image ), vips__image_reorder_quark )) ) return( reorder ); reorder = VIPS_NEW( NULL, VipsReorder ); reorder->image = image; reorder->n_inputs = 0; reorder->input = NULL; reorder->score = NULL; reorder->recomp_order = NULL; reorder->n_sources = 0; reorder->source = NULL; reorder->cumulative_margin = NULL; g_object_set_qdata_full( G_OBJECT( image ), vips__image_reorder_quark, reorder, (GDestroyNotify) vips_reorder_destroy ); return( reorder ); } static int vips_reorder_compare_score( const void *a, const void *b, void *arg ) { int i1 = *((int *) a); int i2 = *((int *) b); VipsReorder *reorder = (VipsReorder *) arg; return( reorder->score[i2] - reorder->score[i1] ); } int vips__reorder_set_input( VipsImage *image, VipsImage **in ) { VipsReorder *reorder = vips_reorder_get( image ); int i; int total; /* We have to support being called more than once on the same image. * Two cases: * * 1. in the first call, no images were set ... we throw away * everything from the first call and try again. foreign can do this. * * 2. warn if the args were different and do nothing. */ if( reorder->source ) { if( reorder->n_inputs == 0 ) { reorder->n_sources = 0; vips_reorder_free( reorder ); } else { for( i = 0; in[i]; i++ ) if( i >= reorder->n_inputs || in[i] != reorder->input[i] ) { /* Should never happen. */ g_warning( "vips__reorder_set_input: " "args differ\n" ); break; } return( 0 ); } } /* Make a copy of the input array. */ for( i = 0; in[i]; i++ ) ; reorder->n_inputs = i; reorder->input = VIPS_ARRAY( NULL, reorder->n_inputs + 1, VipsImage * ); reorder->score = VIPS_ARRAY( NULL, reorder->n_inputs, int ); reorder->recomp_order = VIPS_ARRAY( NULL, reorder->n_inputs, int ); if( !reorder->input ) return( -1 ); if( reorder->n_inputs && (!reorder->score || !reorder->recomp_order) ) return( -1 ); for( i = 0; i < reorder->n_inputs; i++ ) { reorder->input[i] = in[i]; reorder->score[i] = 0; reorder->recomp_order[i] = i; } reorder->input[i] = NULL; /* Find the total number of source images -- this gives an upper bound * to the size of the unique source image array we will need. */ total = 0; for( i = 0; i < reorder->n_inputs; i++ ) total += vips_reorder_get( reorder->input[i] )->n_sources; /* No source images means this must itself be a source image, so it has * a source image of itself. */ total = VIPS_MAX( 1, total ); reorder->source = VIPS_ARRAY( NULL, total + 1, VipsImage * ); reorder->cumulative_margin = VIPS_ARRAY( NULL, total, int ); if( !reorder->source || !reorder->cumulative_margin ) return( -1 ); /* Copy source images over, removing duplicates. If we find a * duplicate, we have a reordering opportunity, and we adjust the * scores of the two images containing the dupe. */ for( i = 0; i < reorder->n_inputs; i++ ) { VipsReorder *input = vips_reorder_get( reorder->input[i] ); int j; for( j = 0; j < input->n_sources; j++ ) { int k; /* Search for dupe. */ for( k = 0; k < reorder->n_sources; k++ ) if( reorder->source[k] == input->source[j] ) break; if( k < reorder->n_sources ) { /* Found a dupe. Does this new use of * input->source[j] have a larger or smaller * margin? Adjust the score to reflect the * change, note the new max. */ reorder->score[i] += input->cumulative_margin[j] - reorder->cumulative_margin[k]; reorder->cumulative_margin[k] = VIPS_MAX( reorder->cumulative_margin[k], input->cumulative_margin[j] ); } else { /* No dupe, just add to the table. */ reorder->source[reorder->n_sources] = input->source[j]; reorder->cumulative_margin[reorder->n_sources] = input->cumulative_margin[j]; reorder->n_sources += 1; } } } /* Sort recomp_order by score. qsort_r() is a GNU libc thing, don't use * it. */ if( reorder->n_inputs > 1 ) g_qsort_with_data( reorder->recomp_order, reorder->n_inputs, sizeof( int ), vips_reorder_compare_score, reorder ); /* No sources ... make one, us! */ if( reorder->n_inputs == 0 ) { reorder->source[0] = image; reorder->cumulative_margin[0] = 0; reorder->n_sources = 1; } #ifdef DEBUG vips_reorder_print( reorder ); #endif /*DEBUG*/ return( 0 ); } /** * vips_reorder_prepare_many: (method) * @image: the image that's being written * @regions: (array) (element-type VipsRegion): the set of regions to prepare * @r: the #VipsRect to prepare on each region * * vips_reorder_prepare_many() runs vips_region_prepare() on each region in * @regions, requesting the pixels in @r. * * It tries to request the regions in the order which will cause least * recomputation. This can give a large speedup, in some cases. * * See also: vips_region_prepare(), vips_reorder_margin_hint(). * * Returns: 0 on success, or -1 on error. */ int vips_reorder_prepare_many( VipsImage *image, VipsRegion **regions, VipsRect *r ) { VipsReorder *reorder = vips_reorder_get( image ); int i; for( i = 0; i < reorder->n_inputs; i++ ) { g_assert( regions[i] ); if( vips_region_prepare( regions[reorder->recomp_order[i]], r ) ) return( -1 ); } return( 0 ); } /** * vips_reorder_margin_hint: (method) * @image: the image to hint on * @margin: the size of the margin this operation has added * * vips_reorder_margin_hint() sets a hint that @image contains a margin, that * is, that each vips_region_prepare() on @image will request a slightly larger * region from it's inputs. A good value for @margin is (width * height) for * the window the operation uses. * * This information is used by vips_image_prepare_many() to attempt to reorder * computations to minimise recomputation. * * See also: vips_image_prepare_many(). */ void vips_reorder_margin_hint( VipsImage *image, int margin ) { VipsReorder *reorder = vips_reorder_get( image ); int i; for( i = 0; i < reorder->n_sources; i++ ) reorder->cumulative_margin[i] += margin; } void vips__reorder_clear( VipsImage *image ) { g_object_set_qdata( G_OBJECT( image ), vips__image_reorder_quark, NULL ); } void vips__reorder_init( void ) { if( !vips__image_reorder_quark ) vips__image_reorder_quark = g_quark_from_static_string( "vips-image-reorder" ); } libvips-8.9.1/libvips/iofuncs/sbuf.c000066400000000000000000000306301361153320700174250ustar00rootroot00000000000000/* Buffered input from a source. * * J.Cupitt, 18/11/19 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include #include #include #include #include /** * SECTION: sbuf * @short_description: buffered read from a source * @stability: Stable * @see_also: foreign * @include: vips/vips.h * @title: VipsSbuf * * #VipsSbuf wraps up a #VipsSource and provides a set of calls for * text-oriented buffered reading. You can fetch lines of text, skip * whitespace, and so on. * * It is useful for implementing things like CSV readers, for example. */ G_DEFINE_TYPE( VipsSbuf, vips_sbuf, VIPS_TYPE_OBJECT ); static void vips_sbuf_class_init( VipsSbufClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); GObjectClass *gobject_class = G_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "sbuf"; object_class->description = _( "buffered source" ); VIPS_ARG_OBJECT( class, "input", 1, _( "Input" ), _( "Source to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSbuf, source ), VIPS_TYPE_SOURCE ); } static void vips_sbuf_init( VipsSbuf *sbuf ) { sbuf->read_point = 0; sbuf->chars_in_buffer = 0; sbuf->input_buffer[0] = '\0'; } /** * vips_sbuf_new_from_source: * @source: source to operate on * * Create a VipsSbuf wrapping a source. * * Returns: a new #VipsSbuf */ VipsSbuf * vips_sbuf_new_from_source( VipsSource *source ) { VipsSbuf *sbuf; sbuf = VIPS_SBUF( g_object_new( VIPS_TYPE_SBUF, "input", source, NULL ) ); if( vips_object_build( VIPS_OBJECT( sbuf ) ) ) { VIPS_UNREF( sbuf ); return( NULL ); } return( sbuf ); } /** * vips_sbuf_unbuffer: * @sbuf: source to operate on * * Discard the input buffer and reset the read point. You must call this * before using read or seek on the underlying #VipsSource class. */ void vips_sbuf_unbuffer( VipsSbuf *sbuf ) { /* We'd read ahead a little way -- seek backwards by that amount. */ vips_source_seek( sbuf->source, sbuf->read_point - sbuf->chars_in_buffer, SEEK_CUR ); sbuf->read_point = 0; sbuf->chars_in_buffer = 0; } /* Returns -1 on error, 0 on EOF, otherwise bytes read. */ static gint64 vips_sbuf_refill( VipsSbuf *sbuf ) { gint64 bytes_read; VIPS_DEBUG_MSG( "vips_sbuf_refill:\n" ); /* We should not discard any unread bytes. */ g_assert( sbuf->read_point == sbuf->chars_in_buffer ); bytes_read = vips_source_read( sbuf->source, sbuf->input_buffer, VIPS_SBUF_BUFFER_SIZE ); if( bytes_read == -1 ) return( -1 ); sbuf->read_point = 0; sbuf->chars_in_buffer = bytes_read; /* Always add a null byte so we can use strchr() etc. on lines. This is * safe because input_buffer is VIPS_SBUF_BUFFER_SIZE + 1 bytes. */ sbuf->input_buffer[bytes_read] = '\0'; return( bytes_read ); } /** * vips_sbuf_getc: * @sbuf: source to operate on * * Fetch the next character from the source. * * If you can, use the macro VIPS_SBUF_GETC() instead for speed. * * Returns: the next char from @sbuf, -1 on read error or EOF. */ int vips_sbuf_getc( VipsSbuf *sbuf ) { if( sbuf->read_point == sbuf->chars_in_buffer && vips_sbuf_refill( sbuf ) <= 0 ) return( -1 ); g_assert( sbuf->read_point < sbuf->chars_in_buffer ); return( sbuf->input_buffer[sbuf->read_point++] ); } /** * VIPS_SBUF_GETC: * @sbuf: source to operate on * * Fetch the next character from the source. * * Returns: the next char from @sbuf, -1 on read error or EOF. */ /** * vips_sbuf_ungetc: * @sbuf: source to operate on * * The opposite of vips_sbuf_getc(): undo the previous getc. * * unget more than one character is undefined. Unget at the start of the file * does nothing. * * If you can, use the macro VIPS_SBUF_UNGETC() instead for speed. */ void vips_sbuf_ungetc( VipsSbuf *sbuf ) { if( sbuf->read_point > 0 ) sbuf->read_point -= 1; } /** * VIPS_SBUF_UNGETC: * @sbuf: source to operate on * * The opposite of vips_sbuf_getc(): undo the previous getc. * * unget more than one character is undefined. Unget at the start of the file * does nothing. */ /** * vips_sbuf_require: * @sbuf: source to operate on * @require: make sure we have at least this many chars available * * Make sure there are at least @require bytes of readahead available. * * Returns: 0 on success, -1 on error or EOF. */ int vips_sbuf_require( VipsSbuf *sbuf, int require ) { g_assert( require < VIPS_SBUF_BUFFER_SIZE ); g_assert( sbuf->chars_in_buffer >= 0 ); g_assert( sbuf->chars_in_buffer <= VIPS_SBUF_BUFFER_SIZE ); g_assert( sbuf->read_point >= 0 ); g_assert( sbuf->read_point <= sbuf->chars_in_buffer ); VIPS_DEBUG_MSG( "vips_sbuf_require: %d\n", require ); if( sbuf->read_point + require > sbuf->chars_in_buffer ) { /* Areas can overlap, so we must memmove(). */ memmove( sbuf->input_buffer, sbuf->input_buffer + sbuf->read_point, sbuf->chars_in_buffer - sbuf->read_point ); sbuf->chars_in_buffer -= sbuf->read_point; sbuf->read_point = 0; while( require > sbuf->chars_in_buffer ) { unsigned char *to = sbuf->input_buffer + sbuf->chars_in_buffer; int space_available = VIPS_SBUF_BUFFER_SIZE - sbuf->chars_in_buffer; size_t bytes_read; if( (bytes_read = vips_source_read( sbuf->source, to, space_available )) == -1 ) return( -1 ); if( bytes_read == 0 ) { vips_error( vips_connection_nick( VIPS_CONNECTION( sbuf->source ) ), "%s", _( "end of file" ) ); return( -1 ); } to[bytes_read] = '\0'; sbuf->chars_in_buffer += bytes_read; } } return( 0 ); } /** * VIPS_SBUF_REQUIRE: * @sbuf: source to operate on * @require: need this many characters * * Make sure at least @require characters are available for * VIPS_SBUF_PEEK() and VIPS_SBUF_FETCH(). * * Returns: 0 on success, -1 on read error or EOF. */ /** * VIPS_SBUF_PEEK: * @sbuf: source to operate on * * After a successful VIPS_SBUF_REQUIRE(), you can index this to get * require characters of input. * * Returns: a pointer to the next requre characters of input. */ /** * VIPS_SBUF_FETCH: * @sbuf: source to operate on * * After a successful VIPS_SBUF_REQUIRE(), you can use this require times * to fetch characters of input. * * Returns: the next input character. */ /** * vips_sbuf_get_line: * @sbuf: source to operate on * * Fetch the next line of text from @sbuf and return it. The end of * line character (or characters, for DOS files) are removed, and the string * is terminated with a null (`\0` character). * * Returns NULL on end of file or read error. * * If the line is longer than some arbitrary (but large) limit, it is * truncated. If you need to be able to read very long lines, use the * slower vips_sbuf_get_line_copy(). * * The return value is owned by @sbuf and must not be freed. It * is valid until the next get call to @sbuf. * * Returns: the next line of text, or NULL on EOF or read error. */ const char * vips_sbuf_get_line( VipsSbuf *sbuf ) { int write_point; int space_remaining; int ch; VIPS_DEBUG_MSG( "vips_sbuf_get_line:\n" ); write_point = 0; space_remaining = VIPS_SBUF_BUFFER_SIZE; while( (ch = VIPS_SBUF_GETC( sbuf )) != -1 && ch != '\n' && space_remaining > 0 ) { sbuf->line[write_point] = ch; write_point += 1; space_remaining -= 1; } sbuf->line[write_point] = '\0'; /* If we hit EOF immediately, return EOF. */ if( ch == -1 && write_point == 0 ) return( NULL ); /* If the final char in the buffer is \r, this is probably a DOS file * and we should remove that too. * * There's a chance this could incorrectly remove \r in very long * lines, but ignore this. */ if( write_point > 0 && sbuf->line[write_point - 1] == '\r' ) sbuf->line[write_point - 1] = '\0'; /* If we filled the output line without seeing \n, keep going to the * next \n. */ if( ch != '\n' && space_remaining == 0 ) { while( (ch = VIPS_SBUF_GETC( sbuf )) != -1 && ch != '\n' ) ; } VIPS_DEBUG_MSG( " %s\n", sbuf->line ); return( (const char *) sbuf->line ); } /** * vips_sbuf_get_line_copy: * @sbuf: source to operate on * * Fetch the next line of text from @sbuf and return it. The end of * line character (or characters, for DOS files) are removed, and the string * is terminated with a null (`\0` character). * * The return result must be freed with g_free(). * * This is slower than vips_sbuf_get_line(), but can work with lines of * any length. * * Returns: the next line of text, or NULL on EOF or read error. */ char * vips_sbuf_get_line_copy( VipsSbuf *sbuf ) { static const unsigned char null = '\0'; VIPS_DEBUG_MSG( "vips_sbuf_get_line_copy:\n" ); GByteArray *buffer; int ch; char *result; buffer = g_byte_array_new(); while( (ch = VIPS_SBUF_GETC( sbuf )) != -1 && ch != '\n' ) { unsigned char c = ch; g_byte_array_append( buffer, &c, 1 ); } /* Immediate EOF. */ if( ch == -1 && buffer->len == 0 ) { VIPS_FREEF( g_byte_array_unref, buffer ); return( NULL ); } /* If the character before the \n was \r, this is probably a DOS file * and we should remove the \r. */ if( ch == '\n' && buffer->len > 0 && buffer->data[buffer->len - 1] == '\r' ) g_byte_array_set_size( buffer, buffer->len - 1 ); g_byte_array_append( buffer, &null, 1 ); result = (char *) g_byte_array_free( buffer, FALSE ); VIPS_DEBUG_MSG( " %s\n", result ); return( result ); } /** * vips_sbuf_get_non_whitespace: * @sbuf: source to operate on * * Fetch the next chunk of non-whitespace text from the source, and * null-terminate it. * * After this, the next getc will be the first char of the next block of * whitespace (or EOF). * * If the first getc is whitespace, stop instantly and return the empty * string. * * If the item is longer than some arbitrary (but large) limit, it is * truncated. * * The return value is owned by @sbuf and must not be freed. It * is valid until the next get call to @sbuf. * * Returns: the next block of non-whitespace, or NULL on EOF or read error. */ const char * vips_sbuf_get_non_whitespace( VipsSbuf *sbuf ) { int ch; int i; for( i = 0; i < VIPS_SBUF_BUFFER_SIZE && !isspace( ch = VIPS_SBUF_GETC( sbuf ) ) && ch != EOF; i++ ) sbuf->line[i] = ch; sbuf->line[i] = '\0'; /* If we stopped before seeing any whitespace, skip to the end of the * block of non-whitespace. */ if( !isspace( ch ) ) while( !isspace( ch = VIPS_SBUF_GETC( sbuf ) ) && ch != EOF ) ; /* If we finally stopped on whitespace, step back one so the next get * will be whitespace (or EOF). */ if( isspace( ch ) ) VIPS_SBUF_UNGETC( sbuf ); return( (const char *) sbuf->line ); } /** * vips_sbuf_skip_whitespace: * @sbuf: source to operate on * * After this, the next getc will be the first char of the next block of * non-whitespace (or EOF). * * Also skip comments, ie. from any '#' character to the end of the line. * * Returns: 0 on success, or -1 on EOF. */ int vips_sbuf_skip_whitespace( VipsSbuf *sbuf ) { int ch; do { ch = VIPS_SBUF_GETC( sbuf ); /* # skip comments too. */ if( ch == '#' ) { /* Probably EOF. */ if( !vips_sbuf_get_line( sbuf ) ) return( -1 ); ch = VIPS_SBUF_GETC( sbuf ); } } while( isspace( ch ) ); VIPS_SBUF_UNGETC( sbuf ); return( 0 ); } libvips-8.9.1/libvips/iofuncs/semaphore.c000066400000000000000000000060441361153320700204530ustar00rootroot00000000000000/* Support for thread stuff. * * JC & KM 9/5/94 * Modified: * 28/11/94 JC * - return(0) missing from tidy_thread_info() * 4/8/99 RP JC * - reorganised for POSIX * 28/3/11 * - moved to vips_ namespace */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_IO */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include void vips_semaphore_init( VipsSemaphore *s, int v, char *name ) { s->v = v; s->name = name; s->mutex = vips_g_mutex_new(); s->cond = vips_g_cond_new(); } void vips_semaphore_destroy( VipsSemaphore *s ) { VIPS_FREEF( vips_g_mutex_free, s->mutex ); VIPS_FREEF( vips_g_cond_free, s->cond ); } /* Add n to the semaphore and signal any threads that are blocked waiting * a change. */ int vips_semaphore_upn( VipsSemaphore *s, int n ) { int value_after_op; g_mutex_lock( s->mutex ); s->v += n; value_after_op = s->v; /* If we are only incrementing by one, we only need to wake a single * thread. If we are incrementing by a lot, we must wake all threads. */ if( n == 1 ) g_cond_signal( s->cond ); else g_cond_broadcast( s->cond ); g_mutex_unlock( s->mutex ); #ifdef DEBUG_IO printf( "vips_semaphore_upn(\"%s\",%d) = %d\n", s->name, n, value_after_op ); if( value_after_op > 1 ) vips_error( "vips_semaphore_upn", "up over 1!" ); #endif /*DEBUG_IO*/ return( value_after_op ); } /* Increment the semaphore. */ int vips_semaphore_up( VipsSemaphore *s ) { return( vips_semaphore_upn( s, 1 ) ); } /* Wait for sem>n, then subtract n. */ int vips_semaphore_downn( VipsSemaphore *s, int n ) { int value_after_op; VIPS_GATE_START( "vips_semaphore_downn: wait" ); g_mutex_lock( s->mutex ); while( s->v < n ) g_cond_wait( s->cond, s->mutex ); s->v -= n; value_after_op = s->v; g_mutex_unlock( s->mutex ); #ifdef DEBUG_IO printf( "vips_semaphore_downn(\"%s\",%d): %d\n", s->name, n, value_after_op ); #endif /*DEBUG_IO*/ VIPS_GATE_STOP( "vips_semaphore_downn: wait" ); return( value_after_op ); } /* Wait for sem > 0, then decrement. */ int vips_semaphore_down( VipsSemaphore *s ) { return( vips_semaphore_downn( s, 1 ) ); } libvips-8.9.1/libvips/iofuncs/sink.c000066400000000000000000000307541361153320700174410ustar00rootroot00000000000000/* A sink that's not attached to anything, eg. find image average, * * 28/3/10 * - from im_iterate(), reworked for threadpool */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "sink.h" /* A part of the image we are scanning. * * We can't let any threads fall too far behind as that would mess up seq * image sources. Keep track of two areas moving down the image, and stall if * the previous area still has active threads. */ typedef struct _SinkArea { struct _Sink *sink; VipsRect rect; /* Part of image this area covers */ VipsSemaphore n_thread; /* Number of threads scanning this area */ } SinkArea; /* Per-call state. */ typedef struct _Sink { SinkBase sink_base; /* We need a temp "p" image between the source image and us to * make sure we can't damage the original. */ VipsImage *t; /* Call params. */ VipsStartFn start_fn; VipsGenerateFn generate_fn; VipsStopFn stop_fn; void *a; void *b; /* We are current scanning area, we'll delay starting a new * area if old_area (the previous position) hasn't completed. */ SinkArea *area; SinkArea *old_area; } Sink; /* Our per-thread state. */ typedef struct _SinkThreadState { VipsThreadState parent_object; /* Sequence value for this thread. */ void *seq; /* The region we walk over sink.t copy. We can't use * parent_object.reg, it's defined on the outer image. */ VipsRegion *reg; /* The area we were allocated from. */ SinkArea *area; } SinkThreadState; typedef struct _SinkThreadStateClass { VipsThreadStateClass parent_class; } SinkThreadStateClass; G_DEFINE_TYPE( SinkThreadState, sink_thread_state, VIPS_TYPE_THREAD_STATE ); static void sink_area_free( SinkArea *area ) { vips_semaphore_destroy( &area->n_thread ); vips_free( area ); } static SinkArea * sink_area_new( Sink *sink ) { SinkArea *area; if( !(area = VIPS_NEW( NULL, SinkArea )) ) return( NULL ); area->sink = sink; vips_semaphore_init( &area->n_thread, 0, "n_thread" ); return( area ); } /* Move an area to a position. */ static void sink_area_position( SinkArea *area, int top, int height ) { Sink *sink = area->sink; VipsRect all, rect; all.left = 0; all.top = 0; all.width = sink->sink_base.im->Xsize; all.height = sink->sink_base.im->Ysize; rect.left = 0; rect.top = top; rect.width = sink->sink_base.im->Xsize; rect.height = height; vips_rect_intersectrect( &all, &rect, &area->rect ); } /* Our VipsThreadpoolAllocate function ... move the thread to the next tile * that needs doing. If we fill the current area, we block until the previous * area is finished, then swap areas. * * If all tiles are done, we return FALSE to end iteration. */ static gboolean sink_area_allocate_fn( VipsThreadState *state, void *a, gboolean *stop ) { SinkThreadState *wstate = (SinkThreadState *) state; Sink *sink = (Sink *) a; SinkBase *sink_base = (SinkBase *) sink; VipsRect image; VipsRect tile; VIPS_DEBUG_MSG( "sink_area_allocate_fn: %p\n", g_thread_self() ); /* Is the state x/y OK? New line or maybe new buffer or maybe even * all done. */ if( sink_base->x >= sink->area->rect.width ) { sink_base->x = 0; sink_base->y += sink_base->tile_height; if( sink_base->y >= VIPS_RECT_BOTTOM( &sink->area->rect ) ) { /* Block until the previous area is done. */ if( sink->area->rect.top > 0 ) vips_semaphore_downn( &sink->old_area->n_thread, 0 ); /* End of image? */ if( sink_base->y >= sink_base->im->Ysize ) { *stop = TRUE; return( 0 ); } /* Swap buffers. */ VIPS_SWAP( SinkArea *, sink->area, sink->old_area ); /* Position buf at the new y. */ sink_area_position( sink->area, sink_base->y, sink_base->n_lines ); } } /* x, y and buf are good: save params for thread. */ image.left = 0; image.top = 0; image.width = sink_base->im->Xsize; image.height = sink_base->im->Ysize; tile.left = sink_base->x; tile.top = sink_base->y; tile.width = sink_base->tile_width; tile.height = sink_base->tile_height; vips_rect_intersectrect( &image, &tile, &state->pos ); /* The thread needs to know which area it's writing to. */ wstate->area = sink->area; VIPS_DEBUG_MSG( " %p allocated %d x %d:\n", g_thread_self(), state->pos.left, state->pos.top ); /* Add to the number of writers on the area. */ vips_semaphore_upn( &sink->area->n_thread, -1 ); /* Move state on. */ sink_base->x += sink_base->tile_width; /* Add the number of pixels we've just allocated to progress. */ sink_base->processed += state->pos.width * state->pos.height; return( 0 ); } /* Call a thread's stop function. */ static int sink_call_stop( Sink *sink, SinkThreadState *state ) { if( state->seq && sink->stop_fn ) { VIPS_DEBUG_MSG( "sink_call_stop: state = %p\n", state ); if( sink->stop_fn( state->seq, sink->a, sink->b ) ) { SinkBase *sink_base = (SinkBase *) sink; vips_error( "vips_sink", _( "stop function failed for image \"%s\"" ), sink_base->im->filename ); return( -1 ); } state->seq = NULL; } return( 0 ); } static void sink_thread_state_dispose( GObject *gobject ) { SinkThreadState *state = (SinkThreadState *) gobject; Sink *sink = (Sink *) ((VipsThreadState *) state)->a; sink_call_stop( sink, state ); VIPS_UNREF( state->reg ); G_OBJECT_CLASS( sink_thread_state_parent_class )->dispose( gobject ); } /* Call the start function for this thread, if necessary. */ static int sink_call_start( Sink *sink, SinkThreadState *state ) { if( !state->seq && sink->start_fn ) { VIPS_DEBUG_MSG( "sink_call_start: state = %p\n", state ); state->seq = sink->start_fn( sink->t, sink->a, sink->b ); if( !state->seq ) { SinkBase *sink_base = (SinkBase *) sink; vips_error( "vips_sink", _( "start function failed for image \"%s\"" ), sink_base->im->filename ); return( -1 ); } } return( 0 ); } static int sink_thread_state_build( VipsObject *object ) { SinkThreadState *state = (SinkThreadState *) object; Sink *sink = (Sink *) ((VipsThreadState *) state)->a; if( !(state->reg = vips_region_new( sink->t )) || sink_call_start( sink, state ) ) return( -1 ); return( VIPS_OBJECT_CLASS( sink_thread_state_parent_class )->build( object ) ); } static void sink_thread_state_class_init( SinkThreadStateClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); gobject_class->dispose = sink_thread_state_dispose; object_class->build = sink_thread_state_build; object_class->nickname = "sinkthreadstate"; object_class->description = _( "per-thread state for sink" ); } static void sink_thread_state_init( SinkThreadState *state ) { state->seq = NULL; state->reg = NULL; } VipsThreadState * vips_sink_thread_state_new( VipsImage *im, void *a ) { return( VIPS_THREAD_STATE( vips_object_new( sink_thread_state_get_type(), vips_thread_state_set, im, a ) ) ); } static void sink_free( Sink *sink ) { VIPS_FREEF( sink_area_free, sink->area ); VIPS_FREEF( sink_area_free, sink->old_area ); VIPS_FREEF( g_object_unref, sink->t ); } void vips_sink_base_init( SinkBase *sink_base, VipsImage *image ) { /* Always clear kill before we start looping. See the * call to vips_image_iskilled() below. */ vips_image_set_kill( image, FALSE ); sink_base->im = image; sink_base->x = 0; sink_base->y = 0; vips_get_tile_size( image, &sink_base->tile_width, &sink_base->tile_height, &sink_base->n_lines ); sink_base->processed = 0; } static int sink_init( Sink *sink, VipsImage *image, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ) { g_assert( generate_fn ); vips_sink_base_init( &sink->sink_base, image ); sink->t = NULL; sink->start_fn = start_fn; sink->generate_fn = generate_fn; sink->stop_fn = stop_fn; sink->a = a; sink->b = b; sink->area = NULL; sink->old_area = NULL; if( !(sink->t = vips_image_new()) || !(sink->area = sink_area_new( sink )) || !(sink->old_area = sink_area_new( sink )) || vips_image_write( sink->sink_base.im, sink->t ) ) { sink_free( sink ); return( -1 ); } return( 0 ); } static int sink_work( VipsThreadState *state, void *a ) { SinkThreadState *sstate = (SinkThreadState *) state; Sink *sink = (Sink *) a; SinkArea *area = sstate->area; int result; result = vips_region_prepare( sstate->reg, &state->pos ); if( !result ) result = sink->generate_fn( sstate->reg, sstate->seq, sink->a, sink->b, &state->stop ); /* Tell the allocator we're done. */ vips_semaphore_upn( &area->n_thread, 1 ); return( result ); } int vips_sink_base_progress( void *a ) { SinkBase *sink_base = (SinkBase *) a; VIPS_DEBUG_MSG( "vips_sink_base_progress:\n" ); /* Trigger any eval callbacks on our source image and * check for errors. */ vips_image_eval( sink_base->im, sink_base->processed ); if( vips_image_iskilled( sink_base->im ) ) return( -1 ); return( 0 ); } /** * vips_sink_tile: (method) * @im: scan over this image * @tile_width: tile width * @tile_height: tile height * @start_fn: start sequences with this function * @generate_fn: generate pixels with this function * @stop_fn: stop sequences with this function * @a: user data * @b: user data * * Loops over an image. @generate_fn is called for every * pixel in the image, with * the @reg argument being a region of calculated pixels. * * Each set of pixels is @tile_width by @tile_height pixels (less at the * image edges). This is handy for things like writing a tiled TIFF image, * where tiles have to be generated with a certain size. * * See also: vips_sink(), vips_get_tile_size(). * * Returns: 0 on success, or -1 on error. */ int vips_sink_tile( VipsImage *im, int tile_width, int tile_height, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ) { Sink sink; int result; g_assert( vips_object_sanity( VIPS_OBJECT( im ) ) ); /* We don't use this, but make sure it's set in case any old binaries * are expecting it. */ im->Bbits = vips_format_sizeof( im->BandFmt ) << 3; if( sink_init( &sink, im, start_fn, generate_fn, stop_fn, a, b ) ) return( -1 ); if( tile_width > 0 ) { sink.sink_base.tile_width = tile_width; sink.sink_base.tile_height = tile_height; } /* vips_sink_base_progress() signals progress on im, so we have to do * pre/post on that too. */ vips_image_preeval( im ); sink_area_position( sink.area, 0, sink.sink_base.n_lines ); result = vips_threadpool_run( im, vips_sink_thread_state_new, sink_area_allocate_fn, sink_work, vips_sink_base_progress, &sink ); vips_image_posteval( im ); sink_free( &sink ); return( result ); } /** * vips_sink: (method) * @im: scan over this image * @start_fn: start sequences with this function * @generate_fn: generate pixels with this function * @stop_fn: stop sequences with this function * @a: user data * @b: user data * * Loops over an image. @generate_fn is called for every pixel in * the image, with * the @reg argument being a region of calculated pixels. vips_sink() is * used to implement operations like vips_avg() which have no image output. * * Each set of pixels is sized according to the requirements of the image * pipeline that generated @im. * * See also: vips_image_generate(), vips_image_new(). * * Returns: 0 on success, or -1 on error. */ int vips_sink( VipsImage *im, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ) { return( vips_sink_tile( im, -1, -1, start_fn, generate_fn, stop_fn, a, b ) ); } libvips-8.9.1/libvips/iofuncs/sink.h000066400000000000000000000035211361153320700174360ustar00rootroot00000000000000/* A sink that's not attached to anything, eg. find image average, * * 28/3/10 * - from im_iterate(), reworked for threadpool */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_SINK_H #define VIPS_SINK_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include /* Base for sink.c / sinkdisc.c / sinkmemory.c */ typedef struct _SinkBase { VipsImage *im; /* The position we're at in buf. */ int x; int y; /* The tilesize we've picked. */ int tile_width; int tile_height; int n_lines; /* The number of pixels allocate has allocated. Used for progress * feedback. */ guint64 processed; } SinkBase; /* Some function we can share. */ void vips_sink_base_init( SinkBase *sink_base, VipsImage *image ); VipsThreadState *vips_sink_thread_state_new( VipsImage *im, void *a ); int vips_sink_base_allocate( VipsThreadState *state, void *a, gboolean *stop ); int vips_sink_base_progress( void *a ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_SINK_H*/ libvips-8.9.1/libvips/iofuncs/sinkdisc.c000066400000000000000000000317041361153320700203000ustar00rootroot00000000000000/* Write an image to a disc file. * * 19/3/10 * - from im_wbuffer.c * - move on top of VipsThreadpool, instead of im_threadgroup_t * 23/6/10 * - better buffer handling for single-line images * 17/7/10 * - we could get stuck if allocate failed (thanks Tim) * 23/2/12 * - we could deadlock if generate failed */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include #include "sink.h" /* A buffer we are going to write to disc in a background thread. */ typedef struct _WriteBuffer { struct _Write *write; VipsRegion *region; /* Pixels */ VipsRect area; /* Part of image this region covers */ VipsSemaphore go; /* Start bg thread loop */ VipsSemaphore nwrite; /* Number of threads writing to region */ VipsSemaphore done; /* Bg thread has done write */ int write_errno; /* Save write errors here */ GThread *thread; /* BG writer thread */ gboolean kill; /* Set to ask thread to exit */ } WriteBuffer; /* Per-call state. */ typedef struct _Write { SinkBase sink_base; /* We are current writing tiles to buf, buf_back is in the hands of * the bg write thread. */ WriteBuffer *buf; WriteBuffer *buf_back; /* The file format write operation. */ VipsRegionWrite write_fn; void *a; } Write; /* Our per-thread state ... we need to also track the buffer that pos is * supposed to write to. */ typedef struct _WriteThreadState { VipsThreadState parent_object; WriteBuffer *buf; } WriteThreadState; typedef struct _WriteThreadStateClass { VipsThreadStateClass parent_class; } WriteThreadStateClass; G_DEFINE_TYPE( WriteThreadState, write_thread_state, VIPS_TYPE_THREAD_STATE ); static void write_thread_state_class_init( WriteThreadStateClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); object_class->nickname = "writethreadstate"; object_class->description = _( "per-thread state for sinkdisc" ); } static void write_thread_state_init( WriteThreadState *state ) { state->buf = NULL; } static VipsThreadState * write_thread_state_new( VipsImage *im, void *a ) { return( VIPS_THREAD_STATE( vips_object_new( write_thread_state_get_type(), vips_thread_state_set, im, a ) ) ); } static void wbuffer_free( WriteBuffer *wbuffer ) { /* Is there a thread running this region? Kill it! */ if( wbuffer->thread ) { wbuffer->kill = TRUE; vips_semaphore_up( &wbuffer->go ); /* Return value is always NULL (see wbuffer_write_thread). */ (void) vips_g_thread_join( wbuffer->thread ); VIPS_DEBUG_MSG( "wbuffer_free: vips_g_thread_join()\n" ); wbuffer->thread = NULL; } VIPS_UNREF( wbuffer->region ); vips_semaphore_destroy( &wbuffer->go ); vips_semaphore_destroy( &wbuffer->nwrite ); vips_semaphore_destroy( &wbuffer->done ); vips_free( wbuffer ); } static void wbuffer_write( WriteBuffer *wbuffer ) { Write *write = wbuffer->write; VIPS_DEBUG_MSG( "wbuffer_write: %d bytes from wbuffer %p\n", wbuffer->region->bpl * wbuffer->area.height, wbuffer ); VIPS_GATE_START( "wbuffer_write: work" ); wbuffer->write_errno = write->write_fn( wbuffer->region, &wbuffer->area, write->a ); VIPS_GATE_STOP( "wbuffer_write: work" ); } /* Run this as a thread to do a BG write. */ static void * wbuffer_write_thread( void *data ) { WriteBuffer *wbuffer = (WriteBuffer *) data; for(;;) { /* Wait to be told to write. */ vips_semaphore_down( &wbuffer->go ); if( wbuffer->kill ) break; /* Now block until the last worker finishes on this buffer. */ vips_semaphore_downn( &wbuffer->nwrite, 0 ); wbuffer_write( wbuffer ); /* Signal write complete. */ vips_semaphore_up( &wbuffer->done ); } return( NULL ); } static WriteBuffer * wbuffer_new( Write *write ) { WriteBuffer *wbuffer; if( !(wbuffer = VIPS_NEW( NULL, WriteBuffer )) ) return( NULL ); wbuffer->write = write; wbuffer->region = NULL; vips_semaphore_init( &wbuffer->go, 0, "go" ); vips_semaphore_init( &wbuffer->nwrite, 0, "nwrite" ); vips_semaphore_init( &wbuffer->done, 0, "done" ); wbuffer->write_errno = 0; wbuffer->thread = NULL; wbuffer->kill = FALSE; if( !(wbuffer->region = vips_region_new( write->sink_base.im )) ) { wbuffer_free( wbuffer ); return( NULL ); } /* The worker threads need to be able to move the buffers around. */ vips__region_no_ownership( wbuffer->region ); /* Make this last (picks up parts of wbuffer on startup). */ if( !(wbuffer->thread = vips_g_thread_new( "wbuffer", wbuffer_write_thread, wbuffer )) ) { wbuffer_free( wbuffer ); return( NULL ); } return( wbuffer ); } /* Block until the previous write completes, then write the front buffer. */ static int wbuffer_flush( Write *write ) { VIPS_DEBUG_MSG( "wbuffer_flush:\n" ); /* Block until the other buffer has been written. We have to do this * before we can set this buffer writing or we'll lose output ordering. */ if( write->buf->area.top > 0 ) { vips_semaphore_down( &write->buf_back->done ); /* Previous write succeeded? */ if( write->buf_back->write_errno ) { vips_error_system( write->buf_back->write_errno, "wbuffer_write", "%s", _( "write failed" ) ); return( -1 ); } } /* Set the background writer going for this buffer. */ vips_semaphore_up( &write->buf->go ); return( 0 ); } /* Move a wbuffer to a position. */ static int wbuffer_position( WriteBuffer *wbuffer, int top, int height ) { VipsRect image, area; int result; image.left = 0; image.top = 0; image.width = wbuffer->write->sink_base.im->Xsize; image.height = wbuffer->write->sink_base.im->Ysize; area.left = 0; area.top = top; area.width = wbuffer->write->sink_base.im->Xsize; area.height = height; vips_rect_intersectrect( &area, &image, &wbuffer->area ); /* The workers take turns to move the buffers. */ vips__region_take_ownership( wbuffer->region ); result = vips_region_buffer( wbuffer->region, &wbuffer->area ); vips__region_no_ownership( wbuffer->region ); /* This should be an exclusive buffer, hopefully. */ if( !result ) g_assert( !wbuffer->region->buffer->done ); return( result ); } /* Our VipsThreadpoolAllocate function ... move the thread to the next tile * that needs doing. If no buffer is available (the bg writer hasn't yet * finished with it), we block. If all tiles are done, we return FALSE to end * iteration. */ static gboolean wbuffer_allocate_fn( VipsThreadState *state, void *a, gboolean *stop ) { WriteThreadState *wstate = (WriteThreadState *) state; Write *write = (Write *) a; SinkBase *sink_base = (SinkBase *) write; VipsRect image; VipsRect tile; VIPS_DEBUG_MSG( "wbuffer_allocate_fn:\n" ); /* Is the state x/y OK? New line or maybe new buffer or maybe even * all done. */ if( sink_base->x >= write->buf->area.width ) { sink_base->x = 0; sink_base->y += sink_base->tile_height; if( sink_base->y >= VIPS_RECT_BOTTOM( &write->buf->area ) ) { VIPS_DEBUG_MSG( "wbuffer_allocate_fn: " "finished top = %d, height = %d\n", write->buf->area.top, write->buf->area.height ); /* Block until the write of the previous buffer * is done, then set write of this buffer going. */ if( wbuffer_flush( write ) ) { *stop = TRUE; return( -1 ); } /* End of image? */ if( sink_base->y >= sink_base->im->Ysize ) { *stop = TRUE; return( 0 ); } VIPS_DEBUG_MSG( "wbuffer_allocate_fn: " "starting top = %d, height = %d\n", sink_base->y, sink_base->n_lines ); /* Swap buffers. */ VIPS_SWAP( WriteBuffer *, write->buf, write->buf_back ); /* Position buf at the new y. */ if( wbuffer_position( write->buf, sink_base->y, sink_base->n_lines ) ) { *stop = TRUE; return( -1 ); } /* This will be the first tile of a new buffer ... * stall for a moment to stress the caching system. */ state->stall = TRUE; } } /* x, y and buf are good: save params for thread. */ image.left = 0; image.top = 0; image.width = sink_base->im->Xsize; image.height = sink_base->im->Ysize; tile.left = sink_base->x; tile.top = sink_base->y; tile.width = sink_base->tile_width; tile.height = sink_base->tile_height; vips_rect_intersectrect( &image, &tile, &state->pos ); /* The thread needs to know which buffer it's writing to. */ wstate->buf = write->buf; VIPS_DEBUG_MSG( " thread %p allocated " "left = %d, top = %d, width = %d, height = %d\n", g_thread_self(), tile.left, tile.top, tile.width, tile.height ); /* Add to the number of writers on the buffer. */ vips_semaphore_upn( &write->buf->nwrite, -1 ); /* Move state on. */ sink_base->x += sink_base->tile_width; /* Add the number of pixels we've just allocated to progress. */ sink_base->processed += state->pos.width * state->pos.height; return( 0 ); } /* Our VipsThreadpoolWork function ... generate a tile! */ static int wbuffer_work_fn( VipsThreadState *state, void *a ) { WriteThreadState *wstate = (WriteThreadState *) state; int result; VIPS_DEBUG_MSG( "wbuffer_work_fn: thread %p, %d x %d\n", g_thread_self(), state->pos.left, state->pos.top ); result = vips_region_prepare_to( state->reg, wstate->buf->region, &state->pos, state->pos.left, state->pos.top ); VIPS_DEBUG_MSG( "wbuffer_work_fn: thread %p result = %d\n", g_thread_self(), result ); /* Tell the bg write thread we've left. */ vips_semaphore_upn( &wstate->buf->nwrite, 1 ); return( result ); } static void write_init( Write *write, VipsImage *image, VipsRegionWrite write_fn, void *a ) { vips_sink_base_init( &write->sink_base, image ); write->buf = wbuffer_new( write ); write->buf_back = wbuffer_new( write ); write->write_fn = write_fn; write->a = a; } static void write_free( Write *write ) { VIPS_FREEF( wbuffer_free, write->buf ); VIPS_FREEF( wbuffer_free, write->buf_back ); } /** * VipsRegionWrite: * @region: get pixels from here * @area: area to write * @a: client data * * The function should write the pixels in @area from @region. @a is the * value passed into vips_sink_disc(). * * See also: vips_sink_disc(). * * Returns: 0 on success, -1 on error. */ /** * vips_sink_disc: (method) * @im: image to process * @write_fn: (scope call): called for every batch of pixels * @a: (closure write_fn): client data * * vips_sink_disc() loops over @im, top-to-bottom, generating it in sections. * As each section is produced, @write_fn is called. * * @write_fn is always called single-threaded (though not always from the same * thread), it's always given image * sections in top-to-bottom order, and there are never any gaps. * * This operation is handy for making image sinks which output to things like * disc files. Things like vips_jpegsave(), for example, use this to write * images to files in JPEG format. * * See also: vips_concurrency_set(). * * Returns: 0 on success, -1 on error. */ int vips_sink_disc( VipsImage *im, VipsRegionWrite write_fn, void *a ) { Write write; int result; vips_image_preeval( im ); write_init( &write, im, write_fn, a ); result = 0; if( !write.buf || !write.buf_back || wbuffer_position( write.buf, 0, write.sink_base.n_lines ) || vips_threadpool_run( im, write_thread_state_new, wbuffer_allocate_fn, wbuffer_work_fn, vips_sink_base_progress, &write ) ) result = -1; /* Just before allocate signalled stop, it set write.buf writing. We * need to wait for this write to finish. * * We can't just free the buffers (which will wait for the bg threads * to finish), since the bg thread might see the kill before it gets a * chance to write. * * If the pool exited with an error, write.buf might not have been * started (if the allocate failed), and in any case, we don't care if * the final write went through or not. */ if( !result ) vips_semaphore_down( &write.buf->done ); vips_image_posteval( im ); write_free( &write ); return( result ); } libvips-8.9.1/libvips/iofuncs/sinkmemory.c000066400000000000000000000207561361153320700206730ustar00rootroot00000000000000/* SinkMemory an image to a memory buffer, keeping top-to-bottom ordering. * * For sequential operations we need to keep requests reasonably ordered: we * can't let some tiles get very delayed. So we need to stall starting new * threads if the last thread gets too far behind. * * 17/2/12 * - from sinkdisc.c * 23/2/12 * - we could deadlock if generate failed */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "sink.h" /* A part of the image we are writing. */ typedef struct _SinkMemoryArea { struct _SinkMemory *memory; VipsRect rect; /* Part of image this area covers */ VipsSemaphore nwrite; /* Number of threads writing to this area */ } SinkMemoryArea; /* Per-call state. */ typedef struct _SinkMemory { SinkBase sink_base; /* We are current writing tiles to area, we'll delay starting a new * area if old_area (the previous position) hasn't completed. */ SinkMemoryArea *area; SinkMemoryArea *old_area; /* A region covering the whole of the output image ... we write to * this from many workers with vips_region_prepare_to(). */ VipsRegion *region; } SinkMemory; /* Our per-thread state ... we need to also track the area that pos is * supposed to write to. */ typedef struct _SinkMemoryThreadState { VipsThreadState parent_object; SinkMemoryArea *area; } SinkMemoryThreadState; typedef struct _SinkMemoryThreadStateClass { VipsThreadStateClass parent_class; } SinkMemoryThreadStateClass; G_DEFINE_TYPE( SinkMemoryThreadState, sink_memory_thread_state, VIPS_TYPE_THREAD_STATE ); static void sink_memory_thread_state_class_init( SinkMemoryThreadStateClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); object_class->nickname = "sinkmemorythreadstate"; object_class->description = _( "per-thread state for sinkmemory" ); } static void sink_memory_thread_state_init( SinkMemoryThreadState *state ) { } static VipsThreadState * sink_memory_thread_state_new( VipsImage *image, void *a ) { return( VIPS_THREAD_STATE( vips_object_new( sink_memory_thread_state_get_type(), vips_thread_state_set, image, a ) ) ); } static void sink_memory_area_free( SinkMemoryArea *area ) { vips_semaphore_destroy( &area->nwrite ); vips_free( area ); } static SinkMemoryArea * sink_memory_area_new( SinkMemory *memory ) { SinkMemoryArea *area; if( !(area = VIPS_NEW( NULL, SinkMemoryArea )) ) return( NULL ); area->memory = memory; vips_semaphore_init( &area->nwrite, 0, "nwrite" ); return( area ); } /* Move an area to a position. */ static void sink_memory_area_position( SinkMemoryArea *area, int top, int height ) { SinkMemory *memory = area->memory; VipsRect all, rect; all.left = 0; all.top = 0; all.width = memory->sink_base.im->Xsize; all.height = memory->sink_base.im->Ysize; rect.left = 0; rect.top = top; rect.width = memory->sink_base.im->Xsize; rect.height = height; vips_rect_intersectrect( &all, &rect, &area->rect ); } /* Our VipsThreadpoolAllocate function ... move the thread to the next tile * that needs doing. If we fill the current area, we block until the previous * area is finished, then swap areas. * If all tiles are done, we return FALSE to end * iteration. */ static gboolean sink_memory_area_allocate_fn( VipsThreadState *state, void *a, gboolean *stop ) { SinkMemoryThreadState *wstate = (SinkMemoryThreadState *) state; SinkMemory *memory = (SinkMemory *) a; SinkBase *sink_base = (SinkBase *) memory; VipsRect image; VipsRect tile; VIPS_DEBUG_MSG( "sink_memory_area_allocate_fn: %p\n", g_thread_self() ); /* Is the state x/y OK? New line or maybe new buffer or maybe even * all done. */ if( sink_base->x >= memory->area->rect.width ) { sink_base->x = 0; sink_base->y += sink_base->tile_height; if( sink_base->y >= VIPS_RECT_BOTTOM( &memory->area->rect ) ) { /* Block until the previous area is done. */ if( memory->area->rect.top > 0 ) vips_semaphore_downn( &memory->old_area->nwrite, 0 ); /* End of image? */ if( sink_base->y >= sink_base->im->Ysize ) { *stop = TRUE; return( 0 ); } /* Swap buffers. */ VIPS_SWAP( SinkMemoryArea *, memory->area, memory->old_area ); /* Position buf at the new y. */ sink_memory_area_position( memory->area, sink_base->y, sink_base->n_lines ); } } /* x, y and buf are good: save params for thread. */ image.left = 0; image.top = 0; image.width = sink_base->im->Xsize; image.height = sink_base->im->Ysize; tile.left = sink_base->x; tile.top = sink_base->y; tile.width = sink_base->tile_width; tile.height = sink_base->tile_height; vips_rect_intersectrect( &image, &tile, &state->pos ); /* The thread needs to know which area it's writing to. */ wstate->area = memory->area; VIPS_DEBUG_MSG( " %p allocated %d x %d:\n", g_thread_self(), state->pos.left, state->pos.top ); /* Add to the number of writers on the area. */ vips_semaphore_upn( &memory->area->nwrite, -1 ); /* Move state on. */ sink_base->x += sink_base->tile_width; /* Add the number of pixels we've just allocated to progress. */ sink_base->processed += state->pos.width * state->pos.height; return( 0 ); } /* Our VipsThreadpoolWork function ... generate a tile! */ static int sink_memory_area_work_fn( VipsThreadState *state, void *a ) { SinkMemory *memory = (SinkMemory *) a; SinkMemoryThreadState *wstate = (SinkMemoryThreadState *) state; SinkMemoryArea *area = wstate->area; int result; VIPS_DEBUG_MSG( "sink_memory_area_work_fn: %p %d x %d\n", g_thread_self(), state->pos.left, state->pos.top ); result = vips_region_prepare_to( state->reg, memory->region, &state->pos, state->pos.left, state->pos.top ); VIPS_DEBUG_MSG( "sink_memory_area_work_fn: %p result = %d\n", g_thread_self(), result ); /* Tell the allocator we're done. */ vips_semaphore_upn( &area->nwrite, 1 ); return( result ); } static void sink_memory_free( SinkMemory *memory ) { VIPS_FREEF( sink_memory_area_free, memory->area ); VIPS_FREEF( sink_memory_area_free, memory->old_area ); VIPS_UNREF( memory->region ); } static int sink_memory_init( SinkMemory *memory, VipsImage *image ) { VipsRect all; vips_sink_base_init( &memory->sink_base, image ); memory->area = NULL; memory->old_area = NULL; all.left = 0; all.top = 0; all.width = image->Xsize; all.height = image->Ysize; if( !(memory->region = vips_region_new( image )) || vips_region_image( memory->region, &all ) || !(memory->area = sink_memory_area_new( memory )) || !(memory->old_area = sink_memory_area_new( memory )) ) { sink_memory_free( memory ); return( -1 ); } return( 0 ); } /** * vips_sink_memory: * @im: generate this image to memory * * Loops over @im, generating it to a memory buffer attached to @im. It is * used by vips to implement writing to a memory buffer. * * See also: vips_sink(), vips_get_tile_size(), vips_image_new_memory(). * * Returns: 0 on success, or -1 on error. */ int vips_sink_memory( VipsImage *image ) { SinkMemory memory; int result; if( sink_memory_init( &memory, image ) ) return( -1 ); vips_image_preeval( image ); result = 0; sink_memory_area_position( memory.area, 0, memory.sink_base.n_lines ); if( vips_threadpool_run( image, sink_memory_thread_state_new, sink_memory_area_allocate_fn, sink_memory_area_work_fn, vips_sink_base_progress, &memory ) ) result = -1; vips_image_posteval( image ); sink_memory_free( &memory ); VIPS_DEBUG_MSG( "vips_sink_memory: done\n" ); return( result ); } libvips-8.9.1/libvips/iofuncs/sinkscreen.c000066400000000000000000000657271361153320700206510ustar00rootroot00000000000000/* aynchronous screen sink * * 1/1/10 * - from im_render.c * 25/11/10 * - in synchronous mode, use a single region for input and save huge * mem use * 20/1/14 * - bg render thread quits on shutdown * 1/12/15 * - don't do anything to out or mask after they have closed * - only run the bg render thread when there's work to do */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Verbose debugging output. #define VIPS_DEBUG */ /* Trace allocate/free. #define VIPS_DEBUG_AMBER */ /* Trace reschedule #define VIPS_DEBUG_GREEN */ /* Trace serious problems. #define VIPS_DEBUG_RED */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #ifdef VIPS_DEBUG_AMBER static int render_num_renders = 0; #endif /*VIPS_DEBUG_AMBER*/ /* A tile in our cache. */ typedef struct { struct _Render *render; VipsRect area; /* Place here (unclipped) */ VipsRegion *region; /* VipsRegion with the pixels */ /* The tile contains calculated pixels. Though the region may have been * invalidated behind our backs: we have to check that too. */ gboolean painted; /* The tile is on the dirty list. This saves us having to search the * dirty list all the time. */ gboolean dirty; /* Time of last use, for LRU flush */ int ticks; } Tile; /* Per-call state. */ typedef struct _Render { /* Reference count this, since we use these things from several * threads. We can't easily use the gobject ref count system since we * need a lock around operations. */ int ref_count; GMutex *ref_count_lock; /* Parameters. */ VipsImage *in; /* Image we render */ VipsImage *out; /* Write tiles here on demand */ VipsImage *mask; /* Set valid pixels here */ int tile_width; /* Tile size */ int tile_height; int max_tiles; /* Maximum number of tiles */ int priority; /* Larger numbers done sooner */ VipsSinkNotify notify; /* Tell caller about paints here */ void *a; /* Lock here before reading or modifying the tile structure. */ GMutex *lock; /* Tile cache. */ GSList *all; /* All our tiles */ int ntiles; /* Number of tiles */ int ticks; /* Inc. on each access ... used for LRU */ /* List of dirty tiles. Most recent at the front. */ GSList *dirty; /* Hash of tiles with positions. Tiles can be dirty or painted. */ GHashTable *tiles; /* A shutdown flag. If ->out or ->mask close, we must no longer do * anything to them until we shut down too. */ gboolean shutdown; } Render; /* Our per-thread state. */ typedef struct _RenderThreadState { VipsThreadState parent_object; /* The tile that should be calculated. */ Tile *tile; } RenderThreadState; typedef struct _RenderThreadStateClass { VipsThreadStateClass parent_class; } RenderThreadStateClass; G_DEFINE_TYPE( RenderThreadState, render_thread_state, VIPS_TYPE_THREAD_STATE ); /* The BG thread which sits waiting to do some calculations, and the semaphore * it waits on holding the number of renders with dirty tiles. */ static GThread *render_thread = NULL; /* Set this to ask the render thread to quit. */ static gboolean render_kill = FALSE; /* All the renders with dirty tiles, and a semaphore that the bg render thread * waits on. */ static GMutex *render_dirty_lock = NULL; static GSList *render_dirty_all = NULL; static VipsSemaphore n_render_dirty_sem; /* Set this to make the bg thread stop and reschedule. */ static gboolean render_reschedule = FALSE; static void render_thread_state_class_init( RenderThreadStateClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); object_class->nickname = "renderthreadstate"; object_class->description = _( "per-thread state for render" ); } static void render_thread_state_init( RenderThreadState *state ) { state->tile = NULL; } static VipsThreadState * render_thread_state_new( VipsImage *im, void *a ) { return( VIPS_THREAD_STATE( vips_object_new( render_thread_state_get_type(), vips_thread_state_set, im, a ) ) ); } static void * tile_free( Tile *tile ) { VIPS_DEBUG_MSG_AMBER( "tile_free\n" ); VIPS_UNREF( tile->region ); vips_free( tile ); return( NULL ); } static int render_free( Render *render ) { VIPS_DEBUG_MSG_AMBER( "render_free: %p\n", render ); g_assert( render->ref_count == 0 ); g_mutex_lock( render_dirty_lock ); if( g_slist_find( render_dirty_all, render ) ) { render_dirty_all = g_slist_remove( render_dirty_all, render ); /* We don't need to adjust the semaphore: if it's too high, * the render thread will just loop and decrement next time * render_dirty_all is NULL. */ } g_mutex_unlock( render_dirty_lock ); vips_g_mutex_free( render->ref_count_lock ); vips_g_mutex_free( render->lock ); vips_slist_map2( render->all, (VipsSListMap2Fn) tile_free, NULL, NULL ); VIPS_FREEF( g_slist_free, render->all ); render->ntiles = 0; VIPS_FREEF( g_slist_free, render->dirty ); VIPS_FREEF( g_hash_table_destroy, render->tiles ); VIPS_UNREF( render->in ); vips_free( render ); #ifdef VIPS_DEBUG_AMBER render_num_renders -= 1; #endif /*VIPS_DEBUG_AMBER*/ return( 0 ); } /* Ref and unref a Render ... free on last unref. */ static int render_ref( Render *render ) { g_mutex_lock( render->ref_count_lock ); g_assert( render->ref_count != 0 ); render->ref_count += 1; g_mutex_unlock( render->ref_count_lock ); return( 0 ); } static int render_unref( Render *render ) { int kill; g_mutex_lock( render->ref_count_lock ); g_assert( render->ref_count > 0 ); render->ref_count -= 1; kill = render->ref_count == 0; g_mutex_unlock( render->ref_count_lock ); if( kill ) render_free( render ); return( 0 ); } /* Get the next tile to paint off the dirty list. */ static Tile * render_tile_dirty_get( Render *render ) { Tile *tile; if( !render->dirty ) tile = NULL; else { tile = (Tile *) render->dirty->data; g_assert( tile->dirty ); render->dirty = g_slist_remove( render->dirty, tile ); tile->dirty = FALSE; } return( tile ); } /* Pick a dirty tile to reuse. We could potentially get the tile that * render_work() is working on in the background :-( but I don't think we'll * get a crash, just a mis-paint. It should be vanishingly impossible anyway. */ static Tile * render_tile_dirty_reuse( Render *render ) { Tile *tile; if( !render->dirty ) tile = NULL; else { tile = (Tile *) g_slist_last( render->dirty )->data; render->dirty = g_slist_remove( render->dirty, tile ); g_assert( tile->dirty ); tile->dirty = FALSE; VIPS_DEBUG_MSG( "render_tile_get_dirty_reuse: " "reusing dirty %p\n", tile ); } return( tile ); } /* Add a tile to the dirty list. */ static void tile_dirty_set( Tile *tile ) { Render *render = tile->render; if( !tile->dirty ) { g_assert( !g_slist_find( render->dirty, tile ) ); render->dirty = g_slist_prepend( render->dirty, tile ); tile->dirty = TRUE; tile->painted = FALSE; } else g_assert( g_slist_find( render->dirty, tile ) ); } /* Bump a tile to the front of the dirty list, if it's there. */ static void tile_dirty_bump( Tile *tile ) { Render *render = tile->render; if( tile->dirty ) { g_assert( g_slist_find( render->dirty, tile ) ); render->dirty = g_slist_remove( render->dirty, tile ); render->dirty = g_slist_prepend( render->dirty, tile ); } else g_assert( !g_slist_find( render->dirty, tile ) ); } static int render_allocate( VipsThreadState *state, void *a, gboolean *stop ) { Render *render = (Render *) a; RenderThreadState *rstate = (RenderThreadState *) state; Tile *tile; g_mutex_lock( render->lock ); if( render_reschedule || !(tile = render_tile_dirty_get( render )) ) { VIPS_DEBUG_MSG_GREEN( "render_allocate: stopping\n" ); *stop = TRUE; rstate->tile = NULL; } else rstate->tile = tile; g_mutex_unlock( render->lock ); return( 0 ); } static int render_work( VipsThreadState *state, void *a ) { Render *render = (Render *) a; RenderThreadState *rstate = (RenderThreadState *) state; Tile *tile = rstate->tile; g_assert( tile ); VIPS_DEBUG_MSG( "calculating tile %p %dx%d\n", tile, tile->area.left, tile->area.top ); if( vips_region_prepare_to( state->reg, tile->region, &tile->area, tile->area.left, tile->area.top ) ) { VIPS_DEBUG_MSG_RED( "render_work: " "vips_region_prepare_to() failed: %s\n", vips_error_buffer() ); return( -1 ); } tile->painted = TRUE; /* All downstream images must drop caches, since we've (effectively) * modified render->out. */ if( !render->shutdown ) vips_image_invalidate_all( render->out ); if( !render->shutdown && render->mask ) vips_image_invalidate_all( render->mask ); /* Now clients can update. */ if( !render->shutdown && render->notify ) render->notify( render->out, &tile->area, render->a ); return( 0 ); } static void render_dirty_put( Render *render ); /* Called from vips_shutdown(). */ void vips__render_shutdown( void ) { /* We may come here without having inited. */ if( render_dirty_lock ) { g_mutex_lock( render_dirty_lock ); if( render_thread ) { GThread *thread; thread = render_thread; render_reschedule = TRUE; render_kill = TRUE; g_mutex_unlock( render_dirty_lock ); vips_semaphore_up( &n_render_dirty_sem ); (void) vips_g_thread_join( thread ); } else g_mutex_unlock( render_dirty_lock ); } } static int render_dirty_sort( Render *a, Render *b ) { return( b->priority - a->priority ); } /* Add to the jobs list, if it has work to be done. */ static void render_dirty_put( Render *render ) { g_mutex_lock( render_dirty_lock ); if( render->dirty ) { if( !g_slist_find( render_dirty_all, render ) ) { render_dirty_all = g_slist_prepend( render_dirty_all, render ); render_dirty_all = g_slist_sort( render_dirty_all, (GCompareFunc) render_dirty_sort ); /* Tell the bg render thread we have one more dirty * render on there. */ vips_semaphore_up( &n_render_dirty_sem ); } } g_mutex_unlock( render_dirty_lock ); } static guint tile_hash( gconstpointer key ) { VipsRect *rect = (VipsRect *) key; int x = rect->left / rect->width; int y = rect->top / rect->height; return( x << 16 ^ y ); } static gboolean tile_equal( gconstpointer a, gconstpointer b ) { VipsRect *rect1 = (VipsRect *) a; VipsRect *rect2 = (VipsRect *) b; return( rect1->left == rect2->left && rect1->top == rect2->top ); } static int render_close_cb( VipsImage *image, Render *render ) { VIPS_DEBUG_MSG_AMBER( "render_close_cb\n" ); /* The output image or mask are closing. This render will stick * around for a while, since threads can still be running, but it * must no longer reference ->out or ->mask (for example, invalidating * them). */ render->shutdown = TRUE; render_unref( render ); /* If this render is being worked on, we want to jog the bg thread, * make it drop it's ref and think again. */ VIPS_DEBUG_MSG_GREEN( "render_close_cb: reschedule\n" ); render_reschedule = TRUE; return( 0 ); } static Render * render_new( VipsImage *in, VipsImage *out, VipsImage *mask, int tile_width, int tile_height, int max_tiles, int priority, VipsSinkNotify notify, void *a ) { Render *render; /* Don't use auto-free for render, we do our own lifetime management * with _ref() and _unref(). */ if( !(render = VIPS_NEW( NULL, Render )) ) return( NULL ); /* render must hold a ref to in. This is dropped in render_free(). */ g_object_ref( in ); render->ref_count = 1; render->ref_count_lock = vips_g_mutex_new(); render->in = in; render->out = out; render->mask = mask; render->tile_width = tile_width; render->tile_height = tile_height; render->max_tiles = max_tiles; render->priority = priority; render->notify = notify; render->a = a; render->lock = vips_g_mutex_new(); render->all = NULL; render->ntiles = 0; render->ticks = 0; render->tiles = g_hash_table_new( tile_hash, tile_equal ); render->dirty = NULL; render->shutdown = FALSE; /* Both out and mask must close before we can free the render. */ g_signal_connect( out, "close", G_CALLBACK( render_close_cb ), render ); if( mask ) { g_signal_connect( mask, "close", G_CALLBACK( render_close_cb ), render ); render_ref( render ); } VIPS_DEBUG_MSG_AMBER( "render_new: %p\n", render ); #ifdef VIPS_DEBUG_AMBER render_num_renders += 1; #endif /*VIPS_DEBUG_AMBER*/ return( render ); } /* Make a Tile. */ static Tile * tile_new( Render *render ) { Tile *tile; VIPS_DEBUG_MSG_AMBER( "tile_new\n" ); /* Don't use auto-free: we need to make sure we free the tile after * Render. */ if( !(tile = VIPS_NEW( NULL, Tile )) ) return( NULL ); tile->render = render; tile->area.left = 0; tile->area.top = 0; tile->area.width = render->tile_width; tile->area.height = render->tile_height; tile->region = NULL; tile->painted = FALSE; tile->dirty = FALSE; tile->ticks = render->ticks; if( !(tile->region = vips_region_new( render->in )) ) { (void) tile_free( tile ); return( NULL ); } render->all = g_slist_prepend( render->all, tile ); render->ntiles += 1; return( tile ); } /* Search the cache for a tile by position. */ static Tile * render_tile_lookup( Render *render, VipsRect *area ) { return( (Tile *) g_hash_table_lookup( render->tiles, area ) ); } /* Add a new tile to the table. */ static void render_tile_add( Tile *tile, VipsRect *area ) { Render *render = tile->render; g_assert( !render_tile_lookup( render, area ) ); tile->area = *area; tile->painted = FALSE; /* Ignore buffer allocate errors, there's not much we could do with * them. */ if( vips_region_buffer( tile->region, &tile->area ) ) VIPS_DEBUG_MSG_RED( "render_tile_add: " "buffer allocate failed\n" ); g_hash_table_insert( render->tiles, &tile->area, tile ); } /* Move a tile to a new position. */ static void render_tile_move( Tile *tile, VipsRect *area ) { Render *render = tile->render; g_assert( render_tile_lookup( render, &tile->area ) ); if( tile->area.left != area->left || tile->area.top != area->top ) { g_assert( !render_tile_lookup( render, area ) ); g_hash_table_remove( render->tiles, &tile->area ); render_tile_add( tile, area ); } } /* We've looked at a tile ... bump to end of LRU and front of dirty. */ static void tile_touch( Tile *tile ) { Render *render = tile->render; tile->ticks = render->ticks; render->ticks += 1; tile_dirty_bump( tile ); } /* Queue a tile for calculation. */ static void tile_queue( Tile *tile, VipsRegion *reg ) { Render *render = tile->render; VIPS_DEBUG_MSG( "tile_queue: adding tile %p %dx%d to dirty\n", tile, tile->area.left, tile->area.top ); tile->painted = FALSE; tile_touch( tile ); if( render->notify ) { /* Add to the list of renders with dirty tiles. The bg * thread will pick it up and paint it. It can be already on * the dirty list. */ tile_dirty_set( tile ); render_dirty_put( render ); } else { /* no notify ... paint the tile ourselves * sychronously. No need to notify the client since they'll * never see black tiles. */ VIPS_DEBUG_MSG( "tile_queue: " "painting tile %p %dx%d synchronously\n", tile, tile->area.left, tile->area.top ); /* While we're computing, let other threads use the cache. * This tile won't get pulled out from under us since it's not * marked as "painted", and it's not on the dirty list. */ g_mutex_unlock( render->lock ); if( vips_region_prepare_to( reg, tile->region, &tile->area, tile->area.left, tile->area.top ) ) VIPS_DEBUG_MSG_RED( "tile_queue: prepare failed\n" ); g_mutex_lock( render->lock ); tile->painted = TRUE; } } static void tile_test_clean_ticks( VipsRect *key, Tile *value, Tile **best ) { if( value->painted ) if( !*best || value->ticks < (*best)->ticks ) *best = value; } /* Pick a painted tile to reuse. Search for LRU (slow!). */ static Tile * render_tile_get_painted( Render *render ) { Tile *tile; tile = NULL; g_hash_table_foreach( render->tiles, (GHFunc) tile_test_clean_ticks, &tile ); if( tile ) { VIPS_DEBUG_MSG( "render_tile_get_painted: " "reusing painted %p\n", tile ); } return( tile ); } /* Ask for an area of calculated pixels. Get from cache, request calculation, * or if we've no threads or no notify, calculate immediately. */ static Tile * render_tile_request( Render *render, VipsRegion *reg, VipsRect *area ) { Tile *tile; VIPS_DEBUG_MSG( "render_tile_request: asking for %dx%d\n", area->left, area->top ); if( (tile = render_tile_lookup( render, area )) ) { /* We already have a tile at this position. If it's invalid, * ask for a repaint. */ if( tile->region->invalid ) tile_queue( tile, reg ); else tile_touch( tile ); } else if( render->ntiles < render->max_tiles || render->max_tiles == -1 ) { /* We have fewer tiles than teh max. We can just make a new * tile. */ if( !(tile = tile_new( render )) ) return( NULL ); render_tile_add( tile, area ); tile_queue( tile, reg ); } else { /* Need to reuse a tile. Try for an old painted tile first, * then if that fails, reuse a dirty tile. */ if( !(tile = render_tile_get_painted( render )) && !(tile = render_tile_dirty_reuse( render )) ) { VIPS_DEBUG_MSG( "render_tile_request: " "no tiles to reuse\n" ); return( NULL ); } render_tile_move( tile, area ); tile_queue( tile, reg ); } return( tile ); } /* Copy what we can from the tile into the region. */ static void tile_copy( Tile *tile, VipsRegion *to ) { VipsRect ovlap; /* Find common pixels. */ vips_rect_intersectrect( &tile->area, &to->valid, &ovlap ); g_assert( !vips_rect_isempty( &ovlap ) ); /* If the tile is painted, copy over the pixels. Otherwise, fill with * zero. */ if( tile->painted && !tile->region->invalid ) { int len = VIPS_IMAGE_SIZEOF_PEL( to->im ) * ovlap.width; int y; VIPS_DEBUG_MSG( "tile_copy: " "copying calculated pixels for %p %dx%d\n", tile, tile->area.left, tile->area.top ); for( y = ovlap.top; y < VIPS_RECT_BOTTOM( &ovlap ); y++ ) { VipsPel *p = VIPS_REGION_ADDR( tile->region, ovlap.left, y ); VipsPel *q = VIPS_REGION_ADDR( to, ovlap.left, y ); memcpy( q, p, len ); } } else { VIPS_DEBUG_MSG( "tile_copy: zero filling for %p %dx%d\n", tile, tile->area.left, tile->area.top ); vips_region_paint( to, &ovlap, 0 ); } } /* Loop over the output region, filling with data from cache. */ static int image_fill( VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ) { Render *render = (Render *) b; int tile_width = render->tile_width; int tile_height = render->tile_height; VipsRegion *reg = (VipsRegion *) seq; VipsRect *r = &out->valid; int x, y; /* Find top left of tiles we need. */ int xs = (r->left / tile_width) * tile_width; int ys = (r->top / tile_height) * tile_height; VIPS_DEBUG_MSG( "image_fill: left = %d, top = %d, " "width = %d, height = %d\n", r->left, r->top, r->width, r->height ); g_mutex_lock( render->lock ); /* FIXME ... if r fits inside a single tile, we could skip the copy. */ for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += tile_height ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += tile_width ) { VipsRect area; Tile *tile; area.left = x; area.top = y; area.width = tile_width; area.height = tile_height; tile = render_tile_request( render, reg, &area ); if( tile ) tile_copy( tile, out ); else VIPS_DEBUG_MSG_RED( "image_fill: argh!\n" ); } g_mutex_unlock( render->lock ); return( 0 ); } /* The mask image is 255 / 0 for the state of painted for each tile. */ static int mask_fill( VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ) { Render *render = (Render *) a; int tile_width = render->tile_width; int tile_height = render->tile_height; VipsRect *r = &out->valid; int x, y; /* Find top left of tiles we need. */ int xs = (r->left / tile_width) * tile_width; int ys = (r->top / tile_height) * tile_height; VIPS_DEBUG_MSG( "mask_fill: left = %d, top = %d, " "width = %d, height = %d\n", r->left, r->top, r->width, r->height ); g_mutex_lock( render->lock ); for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += tile_height ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += tile_width ) { VipsRect area; Tile *tile; int value; area.left = x; area.top = y; area.width = tile_width; area.height = tile_height; tile = render_tile_lookup( render, &area ); value = (tile && tile->painted && !tile->region->invalid) ? 255 : 0; /* Only mark painted tiles containing valid pixels. */ vips_region_paint( out, &area, value ); } g_mutex_unlock( render->lock ); return( 0 ); } /* Get the first render with dirty tiles. */ static Render * render_dirty_get( void ) { Render *render; /* Wait for a render with dirty tiles. */ vips_semaphore_down( &n_render_dirty_sem ); g_mutex_lock( render_dirty_lock ); /* Just take the head of the jobs list ... we sort when we add. */ render = NULL; if( render_dirty_all ) { render = (Render *) render_dirty_all->data; /* Ref the render to make sure it can't die while we're * working on it. */ render_ref( render ); render_dirty_all = g_slist_remove( render_dirty_all, render ); } g_mutex_unlock( render_dirty_lock ); return( render ); } /* Loop for the background render mananger thread. */ static void * render_thread_main( void *client ) { Render *render; while( !render_kill ) { VIPS_DEBUG_MSG_GREEN( "render_thread_main: " "threadpool start\n" ); render_reschedule = FALSE; if( (render = render_dirty_get()) ) { if( vips_threadpool_run( render->in, render_thread_state_new, render_allocate, render_work, NULL, render ) ) VIPS_DEBUG_MSG_RED( "render_thread_main: " "threadpool_run failed\n" ); VIPS_DEBUG_MSG_GREEN( "render_thread_main: " "threadpool return\n" ); /* Add back to the jobs list, if we need to. */ render_dirty_put( render ); /* _get() does a ref to make sure we keep the render * alive during processing ... unref before we loop. * This can kill off the render. */ render_unref( render ); } } /* We are exiting, so render_thread must now be NULL. */ render_thread = NULL; return( NULL ); } static void vips_sink_screen_init( void ) { g_assert( !render_thread ); g_assert( !render_dirty_lock ); render_dirty_lock = vips_g_mutex_new(); render_thread = vips_g_thread_new( "sink_screen", render_thread_main, NULL ); vips_semaphore_init( &n_render_dirty_sem, 0, "n_render_dirty" ); g_assert( render_thread ); g_assert( render_dirty_lock ); } /** * vips_sink_screen: (method) * @in: input image * @out: (out): output image * @mask: mask image indicating valid pixels * @tile_width: tile width * @tile_height: tile height * @max_tiles: maximum tiles to cache * @priority: rendering priority * @notify_fn: (scope call) (nullable): pixels are ready notification callback * @a: (closure notify_fn) (nullable): client data for callback * * This operation renders @in in the background, making pixels available on * @out as they are calculated. The @notify_fn callback is run every time a new * set of pixels are available. Calculated pixels are kept in a cache with * tiles sized @tile_width by @tile_height pixels and with at most @max_tiles * tiles. * If @max_tiles is -1, the cache is of unlimited size (up to the maximum image * size). * The @mask image is a one-band uchar image and has 255 for pixels which are * currently in cache and 0 for uncalculated pixels. * * Only a single sink is calculated at any one time, though many may be * alive. Use @priority to indicate which renders are more important: * zero means normal * priority, negative numbers are low priority, positive numbers high * priority. * * Calls to vips_region_prepare() on @out return immediately and hold * whatever is * currently in cache for that #VipsRect (check @mask to see which parts of the * #VipsRect are valid). Any pixels in the #VipsRect which are not in * cache are added * to a queue, and the @notify_fn callback will trigger when those pixels are * ready. * * The @notify_fn callback is run from one of the background threads. In the * callback * you need to somehow send a message to the main thread that the pixels are * ready. In a glib-based application, this is easily done with g_idle_add(). * * If @notify_fn is %NULL then vips_sink_screen() runs synchronously. * vips_region_prepare() on @out will always block until the pixels have been * calculated. * * See also: vips_tilecache(), vips_region_prepare(), * vips_sink_disc(), vips_sink(). * * Returns: 0 on sucess, -1 on error. */ int vips_sink_screen( VipsImage *in, VipsImage *out, VipsImage *mask, int tile_width, int tile_height, int max_tiles, int priority, VipsSinkNotify notify_fn, void *a ) { static GOnce once = G_ONCE_INIT; Render *render; VIPS_ONCE( &once, (GThreadFunc) vips_sink_screen_init, NULL ); if( tile_width <= 0 || tile_height <= 0 || max_tiles < -1 ) { vips_error( "vips_sink_screen", "%s", _( "bad parameters" ) ); return( -1 ); } if( vips_image_pio_input( in ) || vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); if( mask ) { if( vips_image_pipelinev( mask, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); mask->Bands = 1; mask->BandFmt = VIPS_FORMAT_UCHAR; mask->Type = VIPS_INTERPRETATION_B_W; mask->Coding = VIPS_CODING_NONE; } if( !(render = render_new( in, out, mask, tile_width, tile_height, max_tiles, priority, notify_fn, a )) ) return( -1 ); VIPS_DEBUG_MSG( "vips_sink_screen: max = %d, %p\n", max_tiles, render ); if( vips_image_generate( out, vips_start_one, image_fill, vips_stop_one, in, render ) ) return( -1 ); if( mask && vips_image_generate( mask, NULL, mask_fill, NULL, render, NULL ) ) return( -1 ); return( 0 ); } void vips__print_renders( void ) { #ifdef VIPS_DEBUG_AMBER if( render_num_renders > 0 ) printf( "%d active renders\n", render_num_renders ); #endif /*VIPS_DEBUG_AMBER*/ if( render_dirty_lock ) { int n_dirty; g_mutex_lock( render_dirty_lock ); n_dirty = g_slist_length( render_dirty_all ); if( n_dirty > 0 ) printf( "%d dirty renders\n", n_dirty ); g_mutex_unlock( render_dirty_lock ); } } libvips-8.9.1/libvips/iofuncs/source.c000066400000000000000000000704301361153320700177700ustar00rootroot00000000000000/* A byte source/sink .. it can be a pipe, file descriptor, memory area, * socket, node.js stream, etc. * * J.Cupitt, 19/6/14 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* TODO * * - can we map and then close the fd? how about on Windows? */ /* #define VIPS_DEBUG #define TEST_SANITY */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include #include #include #include #include /* Try to make an O_BINARY ... sometimes need the leading '_'. */ #ifdef BINARY_OPEN #ifndef O_BINARY #ifdef _O_BINARY #define O_BINARY _O_BINARY #endif /*_O_BINARY*/ #endif /*!O_BINARY*/ #endif /*BINARY_OPEN*/ /* If we have O_BINARY, add it to a mode flags set. */ #ifdef O_BINARY #define BINARYIZE(M) ((M) | O_BINARY) #else /*!O_BINARY*/ #define BINARYIZE(M) (M) #endif /*O_BINARY*/ #define MODE_READ BINARYIZE (O_RDONLY) #define MODE_READWRITE BINARYIZE (O_RDWR) #define MODE_WRITE BINARYIZE (O_WRONLY | O_CREAT | O_TRUNC) G_DEFINE_TYPE( VipsSource, vips_source, VIPS_TYPE_CONNECTION ); /* We can't test for seekability or length during _build, since the read and * seek signal handlers may not have been connected yet. Instead, we test * when we first need to know. */ static int vips_source_test_features( VipsSource *source ) { VipsSourceClass *class = VIPS_SOURCE_GET_CLASS( source ); if( source->have_tested_seek ) return( 0 ); source->have_tested_seek = TRUE; VIPS_DEBUG_MSG( "vips_source_test_features: testing seek ..\n" ); /* We'll need a descriptor to test. */ if( vips_source_unminimise( source ) ) return( -1 ); /* Can we seek this input? * * We need to call the method directly rather than via * vips_source_seek() etc. or we might trigger seek emulation. */ if( source->data || class->seek( source, 0, SEEK_CUR ) != -1 ) { gint64 length; VIPS_DEBUG_MSG( " seekable source\n" ); /* We should be able to get the length of seekable * objects. */ if( (length = vips_source_length( source )) == -1 ) return( -1 ); source->length = length; /* If we can seek, we won't need to save header bytes. */ VIPS_FREEF( g_byte_array_unref, source->header_bytes ); } else { /* Not seekable. This must be some kind of pipe. */ VIPS_DEBUG_MSG( " not seekable\n" ); source->is_pipe = TRUE; } return( 0 ); } #ifdef TEST_SANITY static void vips_source_sanity( VipsSource *source ) { if( source->data ) { /* Not a pipe (can map and seek). */ g_assert( !source->is_pipe ); /* Read position must lie within the buffer. */ g_assert( source->read_position >= 0 ); g_assert( source->read_position <= source->length ); /* After we're done with the header, the sniff buffer should * be gone. */ g_assert( !source->decode || !source->sniff ); /* Have length. */ g_assert( source->length != -1 ); } else if( source->is_pipe ) { if( source->decode ) { /* Reading pixel data. */ g_assert( !source->header_bytes ); g_assert( !source->sniff ); } else { /* Reading header data. */ g_assert( source->header_bytes ); g_assert( source->read_position >= 0 ); g_assert( source->read_position <= source->header_bytes->len ); } /* No length available. */ g_assert( source->length == -1 ); } else { /* After we're done with the header, the sniff buffer should * be gone. */ if( source->decode ) { g_assert( !source->sniff ); } /* Once we've tested seek, the read position must lie within * the file. */ if( source->have_tested_seek ) { g_assert( source->length != -1 ); g_assert( source->read_position >= 0 ); g_assert( source->read_position <= source->length ); } /* Supports minimise, so if descriptor is -1, we must have a * filename we can reopen. */ g_assert( VIPS_CONNECTION( source )->descriptor != -1 || (VIPS_CONNECTION( source )->filename && VIPS_CONNECTION( source )->descriptor) ); } } #endif /*TEST_SANITY*/ #ifdef TEST_SANITY #define SANITY( S ) vips_source_sanity( S ) #warning "sanity tests on in source.c" #else /*!TEST_SANITY*/ #define SANITY( S ) #endif /*TEST_SANITY*/ static void vips_source_finalize( GObject *gobject ) { VipsSource *source = VIPS_SOURCE( gobject ); VIPS_FREEF( g_byte_array_unref, source->header_bytes ); VIPS_FREEF( g_byte_array_unref, source->sniff ); if( source->mmap_baseaddr ) { vips__munmap( source->mmap_baseaddr, source->mmap_length ); source->mmap_baseaddr = NULL; } G_OBJECT_CLASS( vips_source_parent_class )->finalize( gobject ); } static int vips_source_build( VipsObject *object ) { VipsConnection *connection = VIPS_CONNECTION( object ); VipsSource *source = VIPS_SOURCE( object ); VIPS_DEBUG_MSG( "vips_source_build: %p\n", source ); if( VIPS_OBJECT_CLASS( vips_source_parent_class )-> build( object ) ) return( -1 ); if( vips_object_argument_isset( object, "filename" ) && vips_object_argument_isset( object, "descriptor" ) ) { vips_error( vips_connection_nick( connection ), "%s", _( "don't set 'filename' and 'descriptor'" ) ); return( -1 ); } /* unminimise will open the filename. */ if( vips_object_argument_isset( object, "filename" ) && vips_source_unminimise( source ) ) return( -1 ); if( vips_object_argument_isset( object, "descriptor" ) ) { connection->descriptor = dup( connection->descriptor ); connection->close_descriptor = connection->descriptor; } if( vips_object_argument_isset( object, "blob" ) ) { size_t length; source->data = vips_blob_get( source->blob, &length ); source->length = VIPS_MIN( length, G_MAXSSIZE ); } return( 0 ); } static gint64 vips_source_read_real( VipsSource *source, void *data, size_t length ) { VipsConnection *connection = VIPS_CONNECTION( source ); gint64 bytes_read; VIPS_DEBUG_MSG( "vips_source_read_real:\n" ); do { bytes_read = read( connection->descriptor, data, length ); } while( bytes_read < 0 && errno == EINTR ); return( bytes_read ); } static gint64 vips_source_seek_real( VipsSource *source, gint64 offset, int whence ) { VipsConnection *connection = VIPS_CONNECTION( source ); gint64 new_pos; VIPS_DEBUG_MSG( "vips_source_seek_real:\n" ); /* Like _read_real(), we must not set a vips_error. We need to use the * vips__seek() wrapper so we can seek long files on Windows. */ new_pos = vips__seek_no_error( connection->descriptor, offset, whence ); return( new_pos ); } static void vips_source_class_init( VipsSourceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); gobject_class->finalize = vips_source_finalize; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "source"; object_class->description = _( "input source" ); object_class->build = vips_source_build; class->read = vips_source_read_real; class->seek = vips_source_seek_real; VIPS_ARG_BOXED( class, "blob", 3, _( "Blob" ), _( "Blob to load from" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSource, blob ), VIPS_TYPE_BLOB ); } static void vips_source_init( VipsSource *source ) { source->length = -1; source->sniff = g_byte_array_new(); source->header_bytes = g_byte_array_new(); } /** * vips_source_new_from_descriptor: * @descriptor: read from this file descriptor * * Create an source attached to a file descriptor. @descriptor is * closed with close() when source is finalized. * * Returns: a new source. */ VipsSource * vips_source_new_from_descriptor( int descriptor ) { VipsSource *source; VIPS_DEBUG_MSG( "vips_source_new_from_descriptor: %d\n", descriptor ); source = VIPS_SOURCE( g_object_new( VIPS_TYPE_SOURCE, "descriptor", descriptor, NULL ) ); if( vips_object_build( VIPS_OBJECT( source ) ) ) { VIPS_UNREF( source ); return( NULL ); } SANITY( source ); return( source ); } /** * vips_source_new_from_file: * @descriptor: read from this filename * * Create an source attached to a file. * * Returns: a new source. */ VipsSource * vips_source_new_from_file( const char *filename ) { VipsSource *source; VIPS_DEBUG_MSG( "vips_source_new_from_file: %s\n", filename ); source = VIPS_SOURCE( g_object_new( VIPS_TYPE_SOURCE, "filename", filename, NULL ) ); if( vips_object_build( VIPS_OBJECT( source ) ) ) { VIPS_UNREF( source ); return( NULL ); } SANITY( source ); return( source ); } /** * vips_source_new_from_blob: * @blob: memory area to load * * Create a source attached to an area of memory. * * Returns: a new source. */ VipsSource * vips_source_new_from_blob( VipsBlob *blob ) { VipsSource *source; VIPS_DEBUG_MSG( "vips_source_new_from_blob: %p\n", blob ); source = VIPS_SOURCE( g_object_new( VIPS_TYPE_SOURCE, "blob", blob, NULL ) ); if( vips_object_build( VIPS_OBJECT( source ) ) ) { VIPS_UNREF( source ); return( NULL ); } SANITY( source ); return( source ); } /** * vips_source_new_from_memory: * @data: memory area to load * @length: size of memory area * * Create a source attached to an area of memory. * * You must not free @data while the source is active. * * Returns: a new source. */ VipsSource * vips_source_new_from_memory( const void *data, size_t length ) { VipsSource *source; VipsBlob *blob; VIPS_DEBUG_MSG( "vips_source_new_from_buffer: " "%p, length = %zd\n", data, length ); /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, data, length ); source = vips_source_new_from_blob( blob ); vips_area_unref( VIPS_AREA( blob ) ); SANITY( source ); return( source ); } /** * vips_source_new_from_options: * @options: option string * * Create a source from an option string. * * Returns: a new source. */ VipsSource * vips_source_new_from_options( const char *options ) { VipsSource *source; VIPS_DEBUG_MSG( "vips_source_new_from_options: %s\n", options ); source = VIPS_SOURCE( g_object_new( VIPS_TYPE_SOURCE, NULL ) ); if( vips_object_set_from_string( VIPS_OBJECT( source ), options ) || vips_object_build( VIPS_OBJECT( source ) ) ) { VIPS_UNREF( source ); return( NULL ); } SANITY( source ); return( source ); } /** * vips_source_minimise: * @source: source to operate on * * Minimise the source. As many resources as can be safely removed are * removed. Use vips_source_unminimise() to restore the source if you wish to * use it again. * * Loaders should call this in response to the minimise signal on their output * image. * * Returns: 0 on success, or -1 on error. */ void vips_source_minimise( VipsSource *source ) { VipsConnection *connection = VIPS_CONNECTION( source ); VIPS_DEBUG_MSG( "vips_source_minimise:\n" ); SANITY( source ); (void) vips_source_test_features( source ); if( connection->filename && connection->descriptor != -1 && connection->tracked_descriptor == connection->descriptor && !source->is_pipe ) { VIPS_DEBUG_MSG( " tracked_close()\n" ); vips_tracked_close( connection->tracked_descriptor ); connection->tracked_descriptor = -1; connection->descriptor = -1; } SANITY( source ); } /** * vips_source_unminimise: * @source: source to operate on * * Restore the source after minimisation. This is called at the start * of every source method, so loaders should not usually need this. * * See also: vips_source_minimise(). * * Returns: 0 on success, or -1 on error. */ int vips_source_unminimise( VipsSource *source ) { VipsConnection *connection = VIPS_CONNECTION( source ); VIPS_DEBUG_MSG( "vips_source_unminimise:\n" ); if( connection->descriptor == -1 && connection->tracked_descriptor == -1 && connection->filename ) { int fd; if( (fd = vips_tracked_open( connection->filename, MODE_READ )) == -1 ) { vips_error_system( errno, vips_connection_nick( connection ), "%s", _( "unable to open for read" ) ); return( -1 ); } connection->tracked_descriptor = fd; connection->descriptor = fd; VIPS_DEBUG_MSG( "vips_source_unminimise: " "restoring read position %" G_GINT64_FORMAT "\n", source->read_position ); if( vips__seek( connection->descriptor, source->read_position, SEEK_SET ) == -1 ) return( -1 ); } return( 0 ); } /** * vips_source_decode: * @source: source to operate on * * Signal the end of header read and the start of the pixel decode phase. * After this, you can no longer seek on this source. * * Loaders should call this at the end of header read. * * See also: vips_source_unminimise(). * * Returns: 0 on success, -1 on error. */ int vips_source_decode( VipsSource *source ) { VIPS_DEBUG_MSG( "vips_source_decode:\n" ); SANITY( source ); /* We have finished reading the header. We can discard the header bytes * we saved. */ if( !source->decode ) { source->decode = TRUE; VIPS_FREEF( g_byte_array_unref, source->header_bytes ); VIPS_FREEF( g_byte_array_unref, source->sniff ); } vips_source_minimise( source ); SANITY( source ); return( 0 ); } /** * vips_source_read: * @source: source to operate on * @buffer: store bytes here * @length: length of @buffer in bytes * * Read up to @length bytes from @source and store the bytes in @buffer. * Return the number of bytes actually read. If all bytes have been read from * the file, return 0. * * Arguments exactly as read(2). * * Returns: the number of bytes read, 0 on end of file, -1 on error. */ gint64 vips_source_read( VipsSource *source, void *buffer, size_t length ) { VipsSourceClass *class = VIPS_SOURCE_GET_CLASS( source ); gint64 total_read; VIPS_DEBUG_MSG( "vips_source_read:\n" ); SANITY( source ); if( vips_source_unminimise( source ) || vips_source_test_features( source ) ) return( -1 ); total_read = 0; if( source->data ) { /* The whole thing is in memory somehow. */ gint64 available = VIPS_MIN( length, source->length - source->read_position ); VIPS_DEBUG_MSG( " %zd bytes from memory\n", available ); memcpy( buffer, source->data + source->read_position, available ); source->read_position += available; total_read += available; } else { /* Some kind of filesystem or custom source. * * Get what we can from header_bytes. We may need to read * some more after this. */ if( source->header_bytes && source->read_position < source->header_bytes->len ) { gint64 available = VIPS_MIN( length, source->header_bytes->len - source->read_position ); VIPS_DEBUG_MSG( " %zd bytes from cache\n", available ); memcpy( buffer, source->header_bytes->data + source->read_position, available ); source->read_position += available; buffer += available; length -= available; total_read += available; } /* Any more bytes requested? Call the read() vfunc. */ if( length > 0 ) { gint64 bytes_read; VIPS_DEBUG_MSG( " calling class->read()\n" ); bytes_read = class->read( source, buffer, length ); VIPS_DEBUG_MSG( " %zd bytes from read()\n", bytes_read ); if( bytes_read == -1 ) { vips_error_system( errno, vips_connection_nick( VIPS_CONNECTION( source ) ), "%s", _( "read error" ) ); return( -1 ); } /* We need to save bytes if we're in header mode and * we can't seek or map. */ if( source->header_bytes && source->is_pipe && !source->decode && bytes_read > 0 ) g_byte_array_append( source->header_bytes, buffer, bytes_read ); source->read_position += bytes_read; total_read += bytes_read; } } VIPS_DEBUG_MSG( " %zd bytes total\n", total_read ); SANITY( source ); return( total_read ); } /* -1 on a pipe isn't actually unbounded. Have a limit to prevent * huge sources accidentally filling memory. * * 1gb. Why not. */ static const int vips_pipe_read_limit = 1024 * 1024 * 1024; /* Read to a position. -1 means read to end of source. Does not change * read_position. */ static int vips_source_pipe_read_to_position( VipsSource *source, gint64 target ) { gint64 old_read_position; unsigned char buffer[4096]; VIPS_DEBUG_MSG( "vips_source_pipe_read_position: %" G_GINT64_FORMAT "\n", target ); g_assert( !source->decode ); g_assert( source->header_bytes ); g_assert( source->is_pipe ); if( target != -1 && (target < 0 || (source->length != -1 && target > source->length)) ) { vips_error( vips_connection_nick( VIPS_CONNECTION( source ) ), _( "bad read to %" G_GINT64_FORMAT ), target ); return( -1 ); } old_read_position = source->read_position; while( target == -1 || source->read_position < target ) { gint64 bytes_read; bytes_read = vips_source_read( source, buffer, 4096 ); if( bytes_read == -1 ) return( -1 ); if( bytes_read == 0 ) break; if( target == -1 && source->read_position > vips_pipe_read_limit ) { vips_error( vips_connection_nick( VIPS_CONNECTION( source ) ), "%s", _( "pipe too long" ) ); return( -1 ); } } source->read_position = old_read_position; return( 0 ); } /* Convert a seekable source that can't be mapped (eg. a custom input with a * seek method) into a memory source. */ static int vips_source_read_to_memory( VipsSource *source ) { GByteArray *byte_array; gint64 read_position; unsigned char *q; VIPS_DEBUG_MSG( "vips_source_read_to_memory:\n" ); g_assert( !source->is_pipe ); g_assert( !source->blob ); g_assert( !source->header_bytes ); g_assert( source->length >= 0 ); if( vips_source_rewind( source ) ) return( -1 ); /* We know the length, so we can size the buffer correctly and read * directly to it. */ byte_array = g_byte_array_new(); g_byte_array_set_size( byte_array, source->length ); /* Read in a series of chunks to reduce stress upstream. */ read_position = 0; q = byte_array->data; while( read_position < source->length ) { gint64 bytes_read; bytes_read = vips_source_read( source, q, VIPS_MAX( 4096, source->length - read_position ) ); if( bytes_read == -1 ) { VIPS_FREEF( g_byte_array_unref, byte_array ); return( -1 ); } if( bytes_read == 0 ) break; read_position += bytes_read; q += bytes_read; } /* Steal the byte_array pointer and turn into a memory source. * * We save byte_array in the header_bytes field to get it freed when * we are freed. */ source->data = byte_array->data; source->is_pipe = FALSE; source->header_bytes = byte_array; vips_source_minimise( source ); return( 0 ); } /* Read the entire pipe into memory and turn this into a memory source. */ static int vips_source_pipe_to_memory( VipsSource *source ) { VIPS_DEBUG_MSG( "vips_source_pipe_to_memory:\n" ); g_assert( source->is_pipe ); g_assert( !source->blob ); g_assert( !source->decode ); g_assert( source->header_bytes ); if( vips_source_pipe_read_to_position( source, -1 ) ) return( -1 ); /* Steal the header_bytes pointer and turn into a memory source. */ source->length = source->header_bytes->len; source->data = source->header_bytes->data; source->is_pipe = FALSE; /* TODO ... we could close more fds here. */ vips_source_minimise( source ); return( 0 ); } static int vips_source_descriptor_to_memory( VipsSource *source ) { VipsConnection *connection = VIPS_CONNECTION( source ); VIPS_DEBUG_MSG( "vips_source_descriptor_to_memory:\n" ); g_assert( !source->blob ); g_assert( !source->mmap_baseaddr ); if( !(source->mmap_baseaddr = vips__mmap( connection->descriptor, FALSE, source->length, 0 )) ) return( -1 ); /* And it's now a memory source. */ source->data = source->mmap_baseaddr; source->mmap_length = source->length; return( 0 ); } /** * vips_source_is_mappable: * @source: source to operate on * * Some sources can be efficiently mapped into memory. * You can still use vips_source_map() if this function returns %FALSE, * but it will be slow. * * Returns: %TRUE if the source can be efficiently mapped into memory. */ gboolean vips_source_is_mappable( VipsSource *source ) { if( vips_source_unminimise( source ) || vips_source_test_features( source ) ) return( -1 ); /* Already a memory object, or there's a filename we can map, or * there's a seekable descriptor. */ return( source->data || VIPS_CONNECTION( source )->filename || (!source->is_pipe && VIPS_CONNECTION( source )->descriptor != -1) ); } /** * vips_source_map: * @source: source to operate on * @length_out: return the file length here, or NULL * * Map the source entirely into memory and return a pointer to the * start. If @length_out is non-NULL, the source size is written to it. * * This operation can take a long time. Use vips_source_is_mappable() to * check if a source can be mapped efficiently. * * The pointer is valid for as long as @source is alive. * * Returns: a pointer to the start of the file contents, or NULL on error. */ const void * vips_source_map( VipsSource *source, size_t *length_out ) { VIPS_DEBUG_MSG( "vips_source_map:\n" ); SANITY( source ); if( vips_source_unminimise( source ) || vips_source_test_features( source ) ) return( NULL ); if( !source->data ) { /* Seekable descriptors can simply be mapped. Seekable sources * can be read. All other sources must be streamed into memory. */ if( vips_source_is_mappable( source ) ) { if( vips_source_descriptor_to_memory( source ) ) return( NULL ); } else if( !source->is_pipe ) { if( vips_source_read_to_memory( source ) ) return( NULL ); } else { if( vips_source_pipe_to_memory( source ) ) return( NULL ); } } if( length_out ) *length_out = source->length; SANITY( source ); return( source->data ); } static int vips_source_map_cb( void *a, void *b ) { VipsArea *area = VIPS_AREA( b ); GObject *gobject = G_OBJECT( area->client ); VIPS_UNREF( gobject ); return( 0 ); } /** * vips_source_map_blob: * @source: source to operate on * * Just like vips_source_map(), but return a #VipsBlob containing the * pointer. @source will stay alive as long as the result is alive. * * Returns: a new #VipsBlob containing the data, or NULL on error. */ VipsBlob * vips_source_map_blob( VipsSource *source ) { const void *buf; size_t len; VipsBlob *blob; if( !(buf = vips_source_map( source, &len )) || !(blob = vips_blob_new( vips_source_map_cb, buf, len )) ) return( NULL ); /* The source must stay alive until the blob is done. */ g_object_ref( source ); VIPS_AREA( blob )->client = source; return( blob ); } /** * vips_source_seek: * @source: source to operate on * @offset: seek by this offset * @whence: seek relative to this point * * Move the file read position. You can't call this after pixel decode starts. * The arguments are exactly as lseek(2). * * Returns: the new file position, or -1 on error. */ gint64 vips_source_seek( VipsSource *source, gint64 offset, int whence ) { VipsSourceClass *class = VIPS_SOURCE_GET_CLASS( source ); gint64 new_pos; VIPS_DEBUG_MSG( "vips_source_seek: offset = %" G_GINT64_FORMAT ", whence = %d\n", offset, whence ); if( vips_source_unminimise( source ) || vips_source_test_features( source ) ) return( -1 ); if( source->data ) { switch( whence ) { case SEEK_SET: new_pos = offset; break; case SEEK_CUR: new_pos = source->read_position + offset; break; case SEEK_END: new_pos = source->length + offset; break; default: vips_error( vips_connection_nick( VIPS_CONNECTION( source ) ), "%s", _( "bad 'whence'" ) ); return( -1 ); } } else if( source->is_pipe ) { switch( whence ) { case SEEK_SET: new_pos = offset; break; case SEEK_CUR: new_pos = source->read_position + offset; break; case SEEK_END: /* We have to read the whole source into memory to get * the length. */ if( source->length == -1 && vips_source_pipe_to_memory( source ) ) return( -1 ); new_pos = source->length + offset; break; default: vips_error( vips_connection_nick( VIPS_CONNECTION( source ) ), "%s", _( "bad 'whence'" ) ); return( -1 ); } } else { if( (new_pos = class->seek( source, offset, whence )) == -1 ) return( -1 ); } /* Don't allow out of range seeks. */ if( new_pos < 0 || (source->length != -1 && new_pos > source->length) ) { vips_error( vips_connection_nick( VIPS_CONNECTION( source ) ), _( "bad seek to %" G_GINT64_FORMAT ), new_pos ); return( -1 ); } /* For pipes, we have to fake seek by reading to that point. */ if( source->is_pipe && vips_source_pipe_read_to_position( source, new_pos ) ) return( -1 ); source->read_position = new_pos; VIPS_DEBUG_MSG( " new_pos = %" G_GINT64_FORMAT "\n", new_pos ); return( new_pos ); } /** * vips_source_rewind: * @source: source to operate on * * Rewind the source to the start. You can't do this after pixel decode phase * starts. * * Returns: 0 on success, or -1 on error. */ int vips_source_rewind( VipsSource *source ) { VIPS_DEBUG_MSG( "vips_source_rewind:\n" ); SANITY( source ); if( vips_source_test_features( source ) || vips_source_seek( source, 0, SEEK_SET ) != 0 ) return( -1 ); SANITY( source ); return( 0 ); } /** * vips_source_length: * @source: source to operate on * * Return the length in bytes of the source. Unseekable sources, for * example pipes, will have to be read entirely into memory before the length * can be found, so this operation can take a long time. * * Returns: number of bytes in source, or -1 on error. */ gint64 vips_source_length( VipsSource *source ) { gint64 length; gint64 read_position; VIPS_DEBUG_MSG( "vips_source_length:\n" ); if( vips_source_test_features( source ) ) return( -1 ); read_position = vips_source_seek( source, 0, SEEK_CUR ); length = vips_source_seek( source, 0, SEEK_END ); vips_source_seek( source, read_position, SEEK_SET ); return( length ); } /** * vips_source_peek: * @source: peek this source * @data: return a pointer to the bytes read here * @length: max number of bytes to read * * Attempt to sniff at most @length bytes from the start of the source. A * pointer to the bytes is returned in @data. The number of bytes actually * read is returned -- it may be less than @length if the file is shorter than * @length. A negative number indicates a read error. * * Returns: number of bytes read, or -1 on error. */ size_t vips_source_sniff_at_most( VipsSource *source, unsigned char **data, size_t length ) { unsigned char *q; gint64 read_position; VIPS_DEBUG_MSG( "vips_source_sniff_at_most: %zd bytes\n", length ); SANITY( source ); if( vips_source_test_features( source ) || vips_source_rewind( source ) ) return( -1 ); g_byte_array_set_size( source->sniff, length ); read_position = 0; q = source->sniff->data; while( read_position < length ) { gint64 bytes_read; bytes_read = vips_source_read( source, q, length - read_position ); if( bytes_read == -1 ) return( -1 ); if( bytes_read == 0 ) break; read_position += bytes_read; q += bytes_read; } SANITY( source ); *data = source->sniff->data; return( read_position ); } /** * vips_source_sniff: * @source: sniff this source * @length: number of bytes to sniff * * Return a pointer to the first few bytes of the file. If the file is too * short, return NULL. * * Returns: a pointer to the bytes at the start of the file, or NULL on error. */ unsigned char * vips_source_sniff( VipsSource *source, size_t length ) { unsigned char *data; size_t bytes_read; if( vips_source_test_features( source ) ) return( NULL ); bytes_read = vips_source_sniff_at_most( source, &data, length ); if( bytes_read < length ) return( NULL ); return( data ); } libvips-8.9.1/libvips/iofuncs/sourcecustom.c000066400000000000000000000134061361153320700212230ustar00rootroot00000000000000/* A Source subclass with signals you can easily hook up to other input * sources. * * J.Cupitt, 21/11/19 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include #include #include #include #include #include "vipsmarshal.h" G_DEFINE_TYPE( VipsSourceCustom, vips_source_custom, VIPS_TYPE_SOURCE ); /* Our signals. */ enum { SIG_SEEK, SIG_READ, SIG_LAST }; static guint vips_source_custom_signals[SIG_LAST] = { 0 }; static gint64 vips_source_custom_read_real( VipsSource *source, void *buffer, size_t length ) { gint64 bytes_read; VIPS_DEBUG_MSG( "vips_source_custom_read_real:\n" ); /* Return this value (error) if there's no attached handler. */ bytes_read = 0; g_signal_emit( source, vips_source_custom_signals[SIG_READ], 0, buffer, (gint64) length, &bytes_read ); VIPS_DEBUG_MSG( " vips_source_custom_read_real, seen %zd bytes\n", bytes_read ); return( bytes_read ); } static gint64 vips_source_custom_seek_real( VipsSource *source, gint64 offset, int whence ) { GValue args[3] = { { 0 } }; GValue result = { 0 }; gint64 new_position; VIPS_DEBUG_MSG( "vips_source_custom_seek_real:\n" ); /* Set the signal args. */ g_value_init( &args[0], G_TYPE_OBJECT ); g_value_set_object( &args[0], source ); g_value_init( &args[1], G_TYPE_INT64 ); g_value_set_int64( &args[1], offset ); g_value_init( &args[2], G_TYPE_INT ); g_value_set_int( &args[2], whence ); /* Set the default value if no handlers are attached. */ g_value_init( &result, G_TYPE_INT64 ); g_value_set_int64( &result, -1 ); /* We need to use this signal interface since we want a default value * if no handlers are attached. */ g_signal_emitv( (const GValue *) &args, vips_source_custom_signals[SIG_SEEK], 0, &result ); new_position = g_value_get_int64( &result ); g_value_unset( &args[0] ); g_value_unset( &args[1] ); g_value_unset( &args[2] ); g_value_unset( &result ); VIPS_DEBUG_MSG( " vips_source_custom_seek_real, seen new pos %zd\n", new_position ); return( new_position ); } static gint64 vips_source_custom_read_signal_real( VipsSourceCustom *source_custom, void *data, gint64 length ) { VIPS_DEBUG_MSG( "vips_source_custom_read_signal_real:\n" ); return( 0 ); } static gint64 vips_source_custom_seek_signal_real( VipsSourceCustom *source_custom, gint64 offset, int whence ) { VIPS_DEBUG_MSG( "vips_source_custom_seek_signal_real:\n" ); return( -1 ); } static void vips_source_custom_class_init( VipsSourceCustomClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsSourceClass *source_class = VIPS_SOURCE_CLASS( class ); object_class->nickname = "source_custom"; object_class->description = _( "Custom source" ); source_class->read = vips_source_custom_read_real; source_class->seek = vips_source_custom_seek_real; class->read = vips_source_custom_read_signal_real; class->seek = vips_source_custom_seek_signal_real; /** * VipsSourceCustom::read: * @source_custom: the source being operated on * @buffer: %gpointer, buffer to fill * @size: %gint64, size of buffer * * This signal is emitted to read bytes from the source into @buffer. * * Returns: the number of bytes read. */ vips_source_custom_signals[SIG_READ] = g_signal_new( "read", G_TYPE_FROM_CLASS( class ), G_SIGNAL_ACTION, G_STRUCT_OFFSET( VipsSourceCustomClass, read ), NULL, NULL, vips_INT64__POINTER_INT64, G_TYPE_INT64, 2, G_TYPE_POINTER, G_TYPE_INT64 ); /** * VipsSourceCustom::seek: * @source_custom: the source being operated on * @offset: %gint64, seek offset * @whence: %gint, seek origin * * This signal is emitted to seek the source. The handler should * change the source position appropriately. * * The handler for an unseekable source should always return -1. * * Returns: the new seek position. */ vips_source_custom_signals[SIG_SEEK] = g_signal_new( "seek", G_TYPE_FROM_CLASS( class ), G_SIGNAL_ACTION, G_STRUCT_OFFSET( VipsSourceCustomClass, seek ), NULL, NULL, vips_INT64__INT64_INT, G_TYPE_INT64, 2, G_TYPE_INT64, G_TYPE_INT ); } static void vips_source_custom_init( VipsSourceCustom *source_custom ) { } /** * vips_source_custom_new: * * Create a #VipsSourceCustom. Attach signals to implement read and seek. * * Returns: a new #VipsSourceCustom */ VipsSourceCustom * vips_source_custom_new( void ) { VipsSourceCustom *source_custom; VIPS_DEBUG_MSG( "vips_source_custom_new:\n" ); source_custom = VIPS_SOURCE_CUSTOM( g_object_new( VIPS_TYPE_SOURCE_CUSTOM, NULL ) ); if( vips_object_build( VIPS_OBJECT( source_custom ) ) ) { VIPS_UNREF( source_custom ); return( NULL ); } return( source_custom ); } libvips-8.9.1/libvips/iofuncs/system.c000066400000000000000000000240731361153320700200160ustar00rootroot00000000000000/* vips_system(): run a command on an image * * 7/3/00 JC * - hacked it in * 21/10/02 JC * - use mktemp() if mkstemp() is not available * 10/3/03 JC * - out can be NULL * 23/12/04 * - use g_mkstemp() * 8/9/09 * - add .v suffix (thanks Roland) * - use vipsbuf * - rewrite to make it simpler * 2/2/10 * - gtkdoc * 4/6/13 * - redo as a class * - input and output images are now optional * 3/5/14 * - switch to g_spawn_command_line_sync() from popen() ... helps stop * stray command-windows on Windows * 27/3/16 * - allow [options] in out_format */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include typedef struct _VipsSystem { VipsOperation parent_instance; VipsArrayImage *in; VipsImage *out; char *cmd_format; char *in_format; char *out_format; char *log; /* Array of names we wrote the input images to. */ char **in_name; /* Output name without any options, so /tmp/vips-weifh.svg, for * example. */ char *out_name; /* Output name with any options, so /tmp/vips-weifh.svg[scale=2], for * example. */ char *out_name_options; } VipsSystem; typedef VipsOperationClass VipsSystemClass; G_DEFINE_TYPE( VipsSystem, vips_system, VIPS_TYPE_OPERATION ); static void vips_system_dispose( GObject *gobject ) { VipsSystem *system = (VipsSystem *) gobject; if( system->in_name ) { int i; for( i = 0; i < VIPS_AREA( system->in )->n; i++ ) { g_unlink( system->in_name[i] ); VIPS_FREE( system->in_name[i] ); } } VIPS_FREE( system->out_name ); VIPS_FREE( system->out_name_options ); G_OBJECT_CLASS( vips_system_parent_class )->dispose( gobject ); } static int vips_system_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsSystem *system = (VipsSystem *) object; int i; char cmd[VIPS_PATH_MAX]; char *p; char *std_output; char *std_error; int result; GError *error = NULL; if( VIPS_OBJECT_CLASS( vips_system_parent_class )->build( object ) ) return( -1 ); /* Write the input images to files. We must always make copies of the * files, even if this image is a disc file already, in case the * command needs a different format. */ if( system->in ) { char *in_format = system->in_format ? system->in_format : "%s.tif"; int n; VipsImage **in = vips_array_image_get( system->in, &n ); if( !(system->in_name = VIPS_ARRAY( object, n, char * )) ) return( -1 ); memset( system->in_name, 0, n * sizeof( char * ) ); for( i = 0; i < n; i++ ) { if( !(system->in_name[i] = vips__temp_name( in_format )) ) return( -1 ); if( vips_image_write_to_file( in[i], system->in_name[i], NULL ) ) return( -1 ); } } /* Make the output filename. */ if( system->out_format ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; vips__filename_split8( system->out_format, filename, option_string ); if( !(system->out_name = vips__temp_name( filename )) ) return( -1 ); system->out_name_options = g_strconcat( system->out_name, option_string, NULL ); } vips_strncpy( cmd, system->cmd_format, VIPS_PATH_MAX ); if( system->in ) for( i = 0; i < VIPS_AREA( system->in )->n; i++ ) if( vips__substitute( cmd, VIPS_PATH_MAX, system->in_name[i] ) ) { vips_error( class->nickname, "%s", _( "unable to substitute " "input filename" ) ); return( -1 ); } if( system->out_name && vips__substitute( cmd, VIPS_PATH_MAX, system->out_name ) ) { vips_error( class->nickname, "%s", _( "unable to substitute output filename" ) ); return( -1 ); } /* Swap all "%%" in the string for a single "%". We need this for * compatibility with older printf-based vips_system()s which * needed a double %%. */ for( p = cmd; *p; p++ ) if( p[0] == '%' && p[1] == '%' ) memmove( p, p + 1, strlen( p ) ); if( !g_spawn_command_line_sync( cmd, &std_output, &std_error, &result, &error ) || result ) { if( error ) { vips_error( class->nickname, "%s", error->message ); g_error_free( error ); } if( std_error ) { vips__chomp( std_error ); if( strcmp( std_error, "" ) != 0 ) vips_error( class->nickname, "error output: %s", std_error ); VIPS_FREE( std_error ); } if( std_output ) { vips__chomp( std_output ); if( strcmp( std_output, "" ) != 0 ) vips_error( class->nickname, "output: %s", std_output ); VIPS_FREE( std_output ); } vips_error_system( result, class->nickname, _( "command \"%s\" failed" ), cmd ); return( -1 ); } if( std_error ) { vips__chomp( std_error ); if( strcmp( std_error, "" ) != 0 ) g_warning( _( "stderr output: %s" ), std_error ); } if( std_output ) { vips__chomp( std_output ); g_object_set( system, "log", std_output, NULL ); } VIPS_FREE( std_output ); VIPS_FREE( std_error ); if( system->out_name_options ) { VipsImage *out; if( !(out = vips_image_new_from_file( system->out_name_options, NULL )) ) return( -1 ); vips_image_set_delete_on_close( out, TRUE ); g_object_set( system, "out", out, NULL ); } return( 0 ); } static void vips_system_class_init( VipsSystemClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->dispose = vips_system_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "system"; vobject_class->description = _( "run an external command" ); vobject_class->build = vips_system_build; /* Commands can have side-effects, so don't cache them. */ operation_class->flags = VIPS_OPERATION_NOCACHE; VIPS_ARG_BOXED( class, "in", 0, _( "Input" ), _( "Array of input images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSystem, in ), VIPS_TYPE_ARRAY_IMAGE ); VIPS_ARG_IMAGE( class, "out", 1, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsSystem, out ) ); VIPS_ARG_STRING( class, "cmd_format", 2, _( "Command" ), _( "Command to run" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSystem, cmd_format ), NULL ); VIPS_ARG_STRING( class, "in_format", 2, _( "Input format" ), _( "Format for input filename" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSystem, in_format ), NULL ); VIPS_ARG_STRING( class, "out_format", 2, _( "Output format" ), _( "Format for output filename" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSystem, out_format ), NULL ); VIPS_ARG_STRING( class, "log", 2, _( "Log" ), _( "Command log" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsSystem, log ), NULL ); } static void vips_system_init( VipsSystem *system ) { } /** * vips_system: * @cmd_format: command to run * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @in: array of input images * * @out: output image * * @in_format: write input files like this * * @out_format: write output filename like this * * @log: stdout of command is returned here * * vips_system() runs a command, optionally passing a set of images in and * optionally getting an image back. The command's stdout is returned in @log. * * First, if @in is set, the array of images are written to files. See * vips_image_new_temp_file() to see how temporary files are created. * If @in_format is * something like %s.png, the file will be written in PNG format. By * default, @in_format is %s.tif. * * If @out_format is set, an output filename is formed in the same way. Any * trailing [options] are stripped from @out_format. * * The command string to run is made by substituting the first set of %s * in @cmd_format for the names of the input files, if @in is set, and then * the next %s for the output filename, if @out_format is set. * You can put a number between the % and the s to change the order * in which the substitution occurs. * * The command is executed with popen() and the output captured in @log. * * After the command finishes, if @out_format is set, the output image is * opened and returned in @out. You can append [options] to @out_format to * control how this open happens. * Closing @out image will automatically delete the output file. * * Finally the input images are deleted. * * For example, this call will run the ImageMagick convert program on an * image, using JPEG files to pass images into and out of the convert command. * * |[ * VipsArrayImage *in; * VipsImage *out; * char *log; * * if (vips_system ("convert %s -swirl 45 %s", * "in", in, * "out", &out, * "in_format", "%s.jpg", * "out_format", "%s.jpg", * "log", &log, * NULL)) * error ... * ]| * * Returns: 0 on success, -1 on failure. */ int vips_system( const char *cmd_format, ... ) { va_list ap; int result; va_start( ap, cmd_format ); result = vips_call_split( "system", ap, cmd_format ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/iofuncs/target.c000066400000000000000000000333471361153320700177640ustar00rootroot00000000000000/* A byte source/sink .. it can be a pipe, file descriptor, memory area, * socket, node.js stream, etc. * * J.Cupitt, 19/6/14 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include #include #include #include #include /* Try to make an O_BINARY ... sometimes need the leading '_'. */ #ifdef BINARY_OPEN #ifndef O_BINARY #ifdef _O_BINARY #define O_BINARY _O_BINARY #endif /*_O_BINARY*/ #endif /*!O_BINARY*/ #endif /*BINARY_OPEN*/ /* If we have O_BINARY, add it to a mode flags set. */ #ifdef O_BINARY #define BINARYIZE(M) ((M) | O_BINARY) #else /*!O_BINARY*/ #define BINARYIZE(M) (M) #endif /*O_BINARY*/ #define MODE_READ BINARYIZE (O_RDONLY) #define MODE_READWRITE BINARYIZE (O_RDWR) #define MODE_WRITE BINARYIZE (O_WRONLY | O_CREAT | O_TRUNC) G_DEFINE_TYPE( VipsTarget, vips_target, VIPS_TYPE_CONNECTION ); static void vips_target_finalize( GObject *gobject ) { VipsTarget *target = VIPS_TARGET( gobject ); VIPS_DEBUG_MSG( "vips_target_finalize:\n" ); VIPS_FREEF( g_byte_array_unref, target->memory_buffer ); if( target->blob ) { vips_area_unref( VIPS_AREA( target->blob ) ); target->blob = NULL; } G_OBJECT_CLASS( vips_target_parent_class )->finalize( gobject ); } static int vips_target_build( VipsObject *object ) { VipsConnection *connection = VIPS_CONNECTION( object ); VipsTarget *target = VIPS_TARGET( object ); VIPS_DEBUG_MSG( "vips_target_build: %p\n", connection ); if( VIPS_OBJECT_CLASS( vips_target_parent_class )->build( object ) ) return( -1 ); if( vips_object_argument_isset( object, "filename" ) && vips_object_argument_isset( object, "descriptor" ) ) { vips_error( vips_connection_nick( connection ), "%s", _( "don't set 'filename' and 'descriptor'" ) ); return( -1 ); } if( connection->filename ) { const char *filename = connection->filename; int fd; /* 0644 is rw user, r group and other. */ if( (fd = vips_tracked_open( filename, MODE_WRITE, 0644 )) == -1 ) { vips_error_system( errno, vips_connection_nick( connection ), "%s", _( "unable to open for write" ) ); return( -1 ); } connection->tracked_descriptor = fd; connection->descriptor = fd; } else if( vips_object_argument_isset( object, "descriptor" ) ) { connection->descriptor = dup( connection->descriptor ); connection->close_descriptor = connection->descriptor; } else if( target->memory ) { target->memory_buffer = g_byte_array_new(); } return( 0 ); } static gint64 vips_target_write_real( VipsTarget *target, const void *data, size_t length ) { VipsConnection *connection = VIPS_CONNECTION( target ); VIPS_DEBUG_MSG( "vips_target_write_real: %zd bytes\n", length ); return( write( connection->descriptor, data, length ) ); } static void vips_target_finish_real( VipsTarget *target ) { VIPS_DEBUG_MSG( "vips_target_finish_real:\n" ); } static void vips_target_class_init( VipsTargetClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); gobject_class->finalize = vips_target_finalize; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "target"; object_class->description = _( "Target" ); object_class->build = vips_target_build; class->write = vips_target_write_real; class->finish = vips_target_finish_real; VIPS_ARG_BOOL( class, "memory", 3, _( "Memory" ), _( "File descriptor should output to memory" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTarget, memory ), FALSE ); /* SET_ALWAYS means that blob is set by C and the obj system is not * involved in creation or destruction. It can be read at any time. */ VIPS_ARG_BOXED( class, "blob", 4, _( "Blob" ), _( "Blob to save to" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsTarget, blob ), VIPS_TYPE_BLOB ); } static void vips_target_init( VipsTarget *target ) { target->blob = vips_blob_new( NULL, NULL, 0 ); target->write_point = 0; } /** * vips_target_new_to_descriptor: * @descriptor: write to this file descriptor * * Create a target attached to a file descriptor. * @descriptor is kept open until the target is finalized. * * See also: vips_target_new_to_file(). * * Returns: a new target. */ VipsTarget * vips_target_new_to_descriptor( int descriptor ) { VipsTarget *target; VIPS_DEBUG_MSG( "vips_target_new_to_descriptor: %d\n", descriptor ); target = VIPS_TARGET( g_object_new( VIPS_TYPE_TARGET, "descriptor", descriptor, NULL ) ); if( vips_object_build( VIPS_OBJECT( target ) ) ) { VIPS_UNREF( target ); return( NULL ); } return( target ); } /** * vips_target_new_to_file: * @filename: write to this file * * Create a target attached to a file. * * Returns: a new target. */ VipsTarget * vips_target_new_to_file( const char *filename ) { VipsTarget *target; VIPS_DEBUG_MSG( "vips_target_new_to_file: %s\n", filename ); target = VIPS_TARGET( g_object_new( VIPS_TYPE_TARGET, "filename", filename, NULL ) ); if( vips_object_build( VIPS_OBJECT( target ) ) ) { VIPS_UNREF( target ); return( NULL ); } return( target ); } /** * vips_target_new_to_memory: * * Create a target which will write to a memory area. Read from @blob to get * memory. * * See also: vips_target_new_to_file(). * * Returns: a new #VipsConnection */ VipsTarget * vips_target_new_to_memory( void ) { VipsTarget *target; VIPS_DEBUG_MSG( "vips_target_new_to_memory:\n" ); target = VIPS_TARGET( g_object_new( VIPS_TYPE_TARGET, "memory", TRUE, NULL ) ); if( vips_object_build( VIPS_OBJECT( target ) ) ) { VIPS_UNREF( target ); return( NULL ); } return( target ); } static int vips_target_write_unbuffered( VipsTarget *target, const void *data, size_t length ) { VipsTargetClass *class = VIPS_TARGET_GET_CLASS( target ); VIPS_DEBUG_MSG( "vips_target_write_unbuffered:\n" ); if( target->finished ) return( 0 ); if( target->memory_buffer ) g_byte_array_append( target->memory_buffer, data, length ); else while( length > 0 ) { gint64 bytes_written; bytes_written = class->write( target, data, length ); /* n == 0 isn't strictly an error, but we treat it as * one to make sure we don't get stuck in this loop. */ if( bytes_written <= 0 ) { vips_error_system( errno, vips_connection_nick( VIPS_CONNECTION( target ) ), "%s", _( "write error" ) ); return( -1 ); } length -= bytes_written; data += bytes_written; } return( 0 ); } static int vips_target_flush( VipsTarget *target ) { g_assert( target->write_point >= 0 ); g_assert( target->write_point <= VIPS_TARGET_BUFFER_SIZE ); VIPS_DEBUG_MSG( "vips_target_flush:\n" ); if( target->write_point > 0 ) { if( vips_target_write_unbuffered( target, target->output_buffer, target->write_point ) ) return( -1 ); target->write_point = 0; } return( 0 ); } /** * vips_target_write: * @target: target to operate on * @buffer: bytes to write * @length: length of @buffer in bytes * * Write @length bytes from @buffer to the output. * * Returns: 0 on success, -1 on error. */ int vips_target_write( VipsTarget *target, const void *buffer, size_t length ) { VIPS_DEBUG_MSG( "vips_target_write: %zd bytes\n", length ); if( length > VIPS_TARGET_BUFFER_SIZE - target->write_point && vips_target_flush( target ) ) return( -1 ); if( length > VIPS_TARGET_BUFFER_SIZE - target->write_point ) { /* Still too large? Do an unbuffered write. */ if( vips_target_write_unbuffered( target, buffer, length ) ) return( -1 ); } else { memcpy( target->output_buffer + target->write_point, buffer, length ); target->write_point += length; } return( 0 ); } /** * vips_target_finish: * @target: target to operate on * @buffer: bytes to write * @length: length of @buffer in bytes * * Call this at the end of write to make the target do any cleaning up. You * can call it many times. * * After a target has been finished, further writes will do nothing. */ void vips_target_finish( VipsTarget *target ) { VipsTargetClass *class = VIPS_TARGET_GET_CLASS( target ); VIPS_DEBUG_MSG( "vips_target_finish:\n" ); if( target->finished ) return; (void) vips_target_flush( target ); /* Move the target buffer into the blob so it can be read out. */ if( target->memory_buffer ) { unsigned char *data; size_t length; length = target->memory_buffer->len; data = g_byte_array_free( target->memory_buffer, FALSE ); target->memory_buffer = NULL; vips_blob_set( target->blob, (VipsCallbackFn) g_free, data, length ); } else class->finish( target ); target->finished = TRUE; } /** * vips_target_steal: * @target: target to operate on * @length: return number of bytes of data * * Memory targets only (see vips_target_new_to_memory()). Steal all data * written to the target so far, and finish it. * * You must free the returned pointer with g_free(). * * The data is NOT automatically null-terminated. vips_target_putc() a '\0' * before calling this to get a null-terminated string. * * Returns: (array length=length) (element-type guint8) (transfer full): the * data */ unsigned char * vips_target_steal( VipsTarget *target, size_t *length ) { unsigned char *data; (void) vips_target_flush( target ); if( !target->memory_buffer || target->finished ) { if( length ) *length = target->memory_buffer->len; return( NULL ); } if( length ) *length = target->memory_buffer->len; data = g_byte_array_free( target->memory_buffer, FALSE ); target->memory_buffer = NULL; /* We must have a valid byte array or finish will fail. */ target->memory_buffer = g_byte_array_new(); vips_target_finish( target ); return( data ); } /** * vips_target_steal_text: * @target: target to operate on * * As vips_target_steal_text(), but return a null-terminated string. * * Returns: (transfer full): target contents as a null-terminated string. */ char * vips_target_steal_text( VipsTarget *target ) { vips_target_putc( target, '\0' ); return( (char *) vips_target_steal( target, NULL ) ); } /** * vips_target_putc: * @target: target to operate on * @ch: character to write * * Write a single character @ch to @target. See the macro VIPS_TARGET_PUTC() * for a faster way to do this. * * Returns: 0 on success, -1 on error. */ int vips_target_putc( VipsTarget *target, int ch ) { VIPS_DEBUG_MSG( "vips_target_putc: %d\n", ch ); if( target->write_point >= VIPS_TARGET_BUFFER_SIZE && vips_target_flush( target ) ) return( -1 ); target->output_buffer[target->write_point++] = ch; return( 0 ); } /** * vips_target_writes: * @target: target to operate on * @str: string to write * * Write a null-terminated string to @target. * * Returns: 0 on success, and -1 on error. */ int vips_target_writes( VipsTarget *target, const char *str ) { return( vips_target_write( target, (unsigned char *) str, strlen( str ) ) ); } /** * vips_target_writef: * @target: target to operate on * @fmt: printf()-style format string * @...: arguments to format string * * Format the string and write to @target. * * Returns: 0 on success, and -1 on error. */ int vips_target_writef( VipsTarget *target, const char *fmt, ... ) { va_list ap; char *line; int result; va_start( ap, fmt ); line = g_strdup_vprintf( fmt, ap ); va_end( ap ); result = vips_target_writes( target, line ); g_free( line ); return( result ); } /** * vips_target_write_amp: * @target: target to operate on * @str: string to write * * Write @str to @target, but escape stuff that xml hates in text. Our * argument string is utf-8. * * XML rules: * * - We must escape &<> * - Don't escape \n, \t, \r * - Do escape the other ASCII codes. * * Returns: 0 on success, -1 on error. */ int vips_target_write_amp( VipsTarget *target, const char *str ) { const char *p; for( p = str; *p; p++ ) if( *p < 32 && *p != '\n' && *p != '\t' && *p != '\r' ) { /* You'd think we could output "%x;", but xml * 1.0 parsers barf on that. xml 1.1 allows this, but * there are almost no parsers. * * U+2400 onwards are unicode glyphs for the ASCII * control characters, so we can use them -- thanks * electroly. */ if( vips_target_writef( target, "&#x%04x;", 0x2400 + *p ) ) return( -1 ); } else if( *p == '<' ) { if( vips_target_writes( target, "<" ) ) return( -1 ); } else if( *p == '>' ) { if( vips_target_writes( target, ">" ) ) return( -1 ); } else if( *p == '&' ) { if( vips_target_writes( target, "&" ) ) return( -1 ); } else { if( VIPS_TARGET_PUTC( target, *p ) ) return( -1 ); } return( 0 ); } libvips-8.9.1/libvips/iofuncs/targetcustom.c000066400000000000000000000111331361153320700212040ustar00rootroot00000000000000/* A Target subclass with signals you can easily hook up to other output * sources. * * J.Cupitt, 21/11/19 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include #include #include #include #include #include "vipsmarshal.h" G_DEFINE_TYPE( VipsTargetCustom, vips_target_custom, VIPS_TYPE_TARGET ); /* Our signals. */ enum { SIG_WRITE, SIG_FINISH, SIG_LAST }; static guint vips_target_custom_signals[SIG_LAST] = { 0 }; static gint64 vips_target_custom_write_real( VipsTarget *target, const void *data, size_t length ) { gint64 bytes_written; VIPS_DEBUG_MSG( "vips_target_custom_write_real:\n" ); /* Return value if no attached handler. */ bytes_written = 0; g_signal_emit( target, vips_target_custom_signals[SIG_WRITE], 0, data, (gint64) length, &bytes_written ); VIPS_DEBUG_MSG( " %zd\n", bytes_written ); return( bytes_written ); } static void vips_target_custom_finish_real( VipsTarget *target ) { VIPS_DEBUG_MSG( "vips_target_custom_seek_real:\n" ); g_signal_emit( target, vips_target_custom_signals[SIG_FINISH], 0 ); } static gint64 vips_target_custom_write_signal_real( VipsTargetCustom *target_custom, const void *data, gint64 length ) { VIPS_DEBUG_MSG( "vips_target_custom_write_signal_real:\n" ); return( 0 ); } static void vips_target_custom_finish_signal_real( VipsTargetCustom *target_custom ) { VIPS_DEBUG_MSG( "vips_target_custom_finish_signal_real:\n" ); } static void vips_target_custom_class_init( VipsTargetCustomClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsTargetClass *target_class = VIPS_TARGET_CLASS( class ); object_class->nickname = "target_custom"; object_class->description = _( "Custom target" ); target_class->write = vips_target_custom_write_real; target_class->finish = vips_target_custom_finish_real; class->write = vips_target_custom_write_signal_real; class->finish = vips_target_custom_finish_signal_real; /** * VipsTargetCustom::write: * @target_custom: the target being operated on * @data: %pointer, bytes to write * @length: %gint64, number of bytes * * This signal is emitted to write bytes to the target. * * Returns: the number of bytes written. */ vips_target_custom_signals[SIG_WRITE] = g_signal_new( "write", G_TYPE_FROM_CLASS( class ), G_SIGNAL_ACTION, G_STRUCT_OFFSET( VipsTargetCustomClass, write ), NULL, NULL, vips_INT64__POINTER_INT64, G_TYPE_INT64, 2, G_TYPE_POINTER, G_TYPE_INT64 ); /** * VipsTargetCustom::finish: * @target_custom: the target being operated on * * This signal is emitted at the end of write. The target should do * any finishing necessary. */ vips_target_custom_signals[SIG_FINISH] = g_signal_new( "finish", G_TYPE_FROM_CLASS( class ), G_SIGNAL_ACTION, G_STRUCT_OFFSET( VipsTargetCustomClass, finish ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); } static void vips_target_custom_init( VipsTargetCustom *target_custom ) { } /** * vips_target_custom_new: * * Create a #VipsTargetCustom. Attach signals to implement write and finish. * * Returns: a new #VipsTargetCustom */ VipsTargetCustom * vips_target_custom_new( void ) { VipsTargetCustom *target_custom; VIPS_DEBUG_MSG( "vips_target_custom_new:\n" ); target_custom = VIPS_TARGET_CUSTOM( g_object_new( VIPS_TYPE_TARGET_CUSTOM, NULL ) ); if( vips_object_build( VIPS_OBJECT( target_custom ) ) ) { VIPS_UNREF( target_custom ); return( NULL ); } return( target_custom ); } libvips-8.9.1/libvips/iofuncs/threadpool.c000066400000000000000000000611231361153320700206300ustar00rootroot00000000000000/* Support for thread pools ... like threadgroups, but lighter. * * 18/3/10 * - from threadgroup.c * - distributed work allocation idea from Christian Blenia, thank you * very much * 21/3/10 * - progress feedback * - only expose VipsThreadState * 11/5/10 * - argh, stopping many threads could sometimes leave allocated work * undone * 17/7/10 * - set pool->error whenever we set thr->error, lets us catch allocate * errors (thanks Tim) * 25/7/14 * - limit nthr on tiny images * 6/3/17 * - remove single-thread-first-request thing, new seq system makes it * unnecessary * 23/4/17 * - add ->stall * - don't depend on image width when setting n_lines * 27/2/19 jtorresfabra * - free threadpool earlier */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_OUT_OF_THREADS #define VIPS_DEBUG #define VIPS_DEBUG_RED */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include #ifdef OS_WIN32 #include #endif /*OS_WIN32*/ /** * SECTION: threadpool * @short_description: pools of worker threads * @stability: Stable * @see_also: generate * @include: vips/vips.h * @title: VipsThreadpool * * vips_threadpool_run() loops a set of threads over an image. Threads take it * in turns to allocate units of work (a unit might be a tile in an image), * then run in parallel to process those units. An optional progress function * can be used to give feedback. */ /* Maximum number of concurrent threads we allow. No reason for the limit, * it's just there to stop mad values for VIPS_CONCURRENCY killing the system. */ #define MAX_THREADS (1024) /* Default tile geometry ... can be set by vips_init(). */ int vips__tile_width = VIPS__TILE_WIDTH; int vips__tile_height = VIPS__TILE_HEIGHT; int vips__fatstrip_height = VIPS__FATSTRIP_HEIGHT; int vips__thinstrip_height = VIPS__THINSTRIP_HEIGHT; /* Default n threads ... 0 means get from environment. */ int vips__concurrency = 0; /* Count the number of threads we have active and report on leak test. */ int vips__n_active_threads = 0; /* Set this GPrivate to indicate that this is a vips worker. */ static GPrivate *is_worker_key = NULL; /* Set to stall threads for debugging. */ static gboolean vips__stall = FALSE; /* Glib 2.32 revised the thread API. We need some compat functions. */ GMutex * vips_g_mutex_new( void ) { GMutex *mutex; #ifdef HAVE_MUTEX_INIT mutex = g_new( GMutex, 1 ); g_mutex_init( mutex ); #else mutex = g_mutex_new(); #endif return( mutex ); } void vips_g_mutex_free( GMutex *mutex ) { #ifdef HAVE_MUTEX_INIT g_mutex_clear( mutex ); g_free( mutex ); #else g_mutex_free( mutex ); #endif } GCond * vips_g_cond_new( void ) { GCond *cond; #ifdef HAVE_COND_INIT cond = g_new( GCond, 1 ); g_cond_init( cond ); #else cond = g_cond_new(); #endif return( cond ); } void vips_g_cond_free( GCond *cond ) { #ifdef HAVE_COND_INIT g_cond_clear( cond ); g_free( cond ); #else g_cond_free( cond ); #endif } /* TRUE if we are a vips worker thread. We sometimes manage resource allocation * differently for vips workers since we can cheaply free stuff on thread * termination. */ gboolean vips_thread_isworker( void ) { return( g_private_get( is_worker_key ) != NULL ); } typedef struct { const char *domain; GThreadFunc func; gpointer data; } VipsThreadInfo; static void * vips_thread_run( gpointer data ) { VipsThreadInfo *info = (VipsThreadInfo *) data; void *result; /* Set this to something (anything) to tag this thread as a vips * worker. */ g_private_set( is_worker_key, data ); if( vips__thread_profile ) vips__thread_profile_attach( info->domain ); result = info->func( info->data ); g_free( info ); vips_thread_shutdown(); return( result ); } GThread * vips_g_thread_new( const char *domain, GThreadFunc func, gpointer data ) { #ifdef DEBUG_OUT_OF_THREADS static int n_threads = 0; #endif /*DEBUG_OUT_OF_THREADS*/ GThread *thread; VipsThreadInfo *info; GError *error = NULL; info = g_new( VipsThreadInfo, 1 ); info->domain = domain; info->func = func; info->data = data; #ifdef DEBUG_OUT_OF_THREADS n_threads += 1; if( n_threads > 10 ) thread = NULL; else { #endif /*DEBUG_OUT_OF_THREADS*/ #ifdef HAVE_THREAD_NEW thread = g_thread_try_new( domain, vips_thread_run, info, &error ); #else thread = g_thread_create( vips_thread_run, info, TRUE, &error ); #endif VIPS_DEBUG_MSG_RED( "vips_g_thread_new: g_thread_create( %s ) = %p\n", domain, thread ); #ifdef DEBUG_OUT_OF_THREADS } #endif /*DEBUG_OUT_OF_THREADS*/ if( !thread ) { if( error ) vips_g_error( &error ); else vips_error( domain, "%s", _( "unable to create thread" ) ); } if( thread && vips__leak ) { g_mutex_lock( vips__global_lock ); vips__n_active_threads += 1; g_mutex_unlock( vips__global_lock ); } return( thread ); } void * vips_g_thread_join( GThread *thread ) { void *result; result = g_thread_join( thread ); VIPS_DEBUG_MSG_RED( "vips_g_thread_join: g_thread_join( %p )\n", thread ); if( vips__leak ) { g_mutex_lock( vips__global_lock ); vips__n_active_threads -= 1; g_mutex_unlock( vips__global_lock ); } return( result ); } /** * vips_concurrency_set: * @concurrency: number of threads to run * * Sets the number of worker threads that vips should use when running a * #VipsThreadPool. * * The special value 0 means "default". In this case, the number of threads is * set by the environment variable VIPS_CONCURRENCY, or if that is not set, the * number of threads availble on the host machine. * * See also: vips_concurrency_get(). */ void vips_concurrency_set( int concurrency ) { vips__concurrency = concurrency; } static int get_num_processors( void ) { int nproc; nproc = 1; #ifdef G_OS_UNIX #if defined(HAVE_UNISTD_H) && defined(_SC_NPROCESSORS_ONLN) { /* POSIX style. */ int x; x = sysconf( _SC_NPROCESSORS_ONLN ); if( x > 0 ) nproc = x; } #elif defined HW_NCPU { /* BSD style. */ int x; size_t len = sizeof(x); sysctl( (int[2]) {CTL_HW, HW_NCPU}, 2, &x, &len, NULL, 0 ); if( x > 0 ) nproc = x; } #endif /* libgomp has some very complex code on Linux to count the number of * processors available to the current process taking pthread affinity * into account, but we don't attempt that here. Perhaps we should? */ #endif /*G_OS_UNIX*/ #ifdef OS_WIN32 { /* Count the CPUs currently available to this process. */ DWORD_PTR process_cpus; DWORD_PTR system_cpus; if( GetProcessAffinityMask( GetCurrentProcess(), &process_cpus, &system_cpus ) ) { unsigned int count; for( count = 0; process_cpus != 0; process_cpus >>= 1 ) if( process_cpus & 1 ) count++; if( count > 0 ) nproc = count; } } #endif /*OS_WIN32*/ return( nproc ); } /** * vips_concurrency_get: * * Returns the number of worker threads that vips should use when running a * #VipsThreadPool. * * vips gets this values from these sources in turn: * * If vips_concurrency_set() has been called, this value is used. The special * value 0 means "default". You can also use the command-line argument * "--vips-concurrency" to set this value. * * If vips_concurrency_set() has not been called and no command-line argument * was used, vips uses the value of the environment variable VIPS_CONCURRENCY, * * If VIPS_CONCURRENCY has not been set, vips find the number of hardware * threads that the host machine can run in parallel and uses that value. * * The final value is clipped to the range 1 - 1024. * * See also: vips_concurrency_get(). * * Returns: number of worker threads to use. */ int vips_concurrency_get( void ) { const char *str; int nthr; int x; /* Tell the threads system how much concurrency we expect. */ if( vips__concurrency > 0 ) nthr = vips__concurrency; else if( ((str = g_getenv( "VIPS_CONCURRENCY" )) || (str = g_getenv( "IM_CONCURRENCY" ))) && (x = atoi( str )) > 0 ) nthr = x; else nthr = get_num_processors(); if( nthr < 1 || nthr > MAX_THREADS ) { nthr = VIPS_CLIP( 1, nthr, MAX_THREADS ); g_warning( _( "threads clipped to %d" ), nthr ); } /* Save for next time around. */ vips_concurrency_set( nthr ); return( nthr ); } G_DEFINE_TYPE( VipsThreadState, vips_thread_state, VIPS_TYPE_OBJECT ); static void vips_thread_state_dispose( GObject *gobject ) { VipsThreadState *state = (VipsThreadState *) gobject; VIPS_DEBUG_MSG( "vips_thread_state_dispose:\n" ); VIPS_UNREF( state->reg ); G_OBJECT_CLASS( vips_thread_state_parent_class )->dispose( gobject ); } static int vips_thread_state_build( VipsObject *object ) { VipsThreadState *state = (VipsThreadState *) object; if( !(state->reg = vips_region_new( state->im )) ) return( -1 ); return( VIPS_OBJECT_CLASS( vips_thread_state_parent_class )->build( object ) ); } static void vips_thread_state_class_init( VipsThreadStateClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); gobject_class->dispose = vips_thread_state_dispose; object_class->build = vips_thread_state_build; object_class->nickname = "threadstate"; object_class->description = _( "per-thread state for vipsthreadpool" ); } static void vips_thread_state_init( VipsThreadState *state ) { VIPS_DEBUG_MSG( "vips_thread_state_init:\n" ); state->reg = NULL; state->stop = FALSE; state->stall = FALSE; } void * vips_thread_state_set( VipsObject *object, void *a, void *b ) { VipsThreadState *state = (VipsThreadState *) object; VipsImage *im = (VipsImage *) a; VIPS_DEBUG_MSG( "vips_thread_state_set:\n" ); state->im = im; state->a = b; return( NULL ); } VipsThreadState * vips_thread_state_new( VipsImage *im, void *a ) { VIPS_DEBUG_MSG( "vips_thread_state_new:\n" ); return( VIPS_THREAD_STATE( vips_object_new( VIPS_TYPE_THREAD_STATE, vips_thread_state_set, im, a ) ) ); } /* What we track for each thread in the pool. */ typedef struct { /* All private. */ /*< private >*/ struct _VipsThreadpool *pool; /* Pool we are part of */ VipsThreadState *state; /* Thread we are running. */ GThread *thread; /* Set this to ask the thread to exit. */ gboolean exit; /* Set by the thread if work or allocate return an error. */ gboolean error; } VipsThread; /* What we track for a group of threads working together. */ typedef struct _VipsThreadpool { /* All private. */ /*< private >*/ VipsImage *im; /* Image we are calculating */ /* Start a thread, do a unit of work (runs in parallel) and allocate * a unit of work (serial). Plus the mutex we use to serialize work * allocation. */ VipsThreadStartFn start; VipsThreadpoolAllocateFn allocate; VipsThreadpoolWorkFn work; GMutex *allocate_lock; void *a; /* User argument to start / allocate / etc. */ int nthr; /* Number of threads in pool */ VipsThread **thr; /* Threads */ /* The caller blocks here until all threads finish. */ VipsSemaphore finish; /* Workers up this for every loop to make the main thread tick. */ VipsSemaphore tick; /* Set this to abort evaluation early with an error. */ gboolean error; /* Set by Allocate (via an arg) to indicate normal end of computation. */ gboolean stop; } VipsThreadpool; /* Junk a thread. */ static void vips_thread_free( VipsThread *thr ) { /* Is there a thread running this region? Kill it! */ if( thr->thread ) { thr->exit = 1; /* Return value is always NULL (see thread_main_loop). */ (void) vips_g_thread_join( thr->thread ); thr->thread = NULL; } VIPS_FREEF( g_object_unref, thr->state ); thr->pool = NULL; VIPS_FREE( thr ); } static int vips_thread_allocate( VipsThread *thr ) { VipsThreadpool *pool = thr->pool; g_assert( !pool->stop ); if( !thr->state && !(thr->state = pool->start( pool->im, pool->a )) ) return( -1 ); if( pool->allocate( thr->state, pool->a, &pool->stop ) ) return( -1 ); return( 0 ); } /* Run this once per main loop. Get some work (single-threaded), then do it * (many-threaded). * * The very first workunit is also executed single-threaded. This gives * loaders a change to seek to the correct spot, see vips_sequential(). */ static void vips_thread_work_unit( VipsThread *thr ) { VipsThreadpool *pool = thr->pool; if( thr->error ) return; VIPS_GATE_START( "vips_thread_work_unit: wait" ); g_mutex_lock( pool->allocate_lock ); VIPS_GATE_STOP( "vips_thread_work_unit: wait" ); /* Has another worker signaled stop while we've been working? */ if( pool->stop ) { g_mutex_unlock( pool->allocate_lock ); return; } if( vips_thread_allocate( thr ) ) { thr->error = TRUE; pool->error = TRUE; g_mutex_unlock( pool->allocate_lock ); return; } /* Have we just signalled stop? */ if( pool->stop ) { g_mutex_unlock( pool->allocate_lock ); return; } g_mutex_unlock( pool->allocate_lock ); if( thr->state->stall && vips__stall ) { /* Sleep for 0.5s. Handy for stressing the seq system. Stall * is set by allocate funcs in various places. */ g_usleep( 500000 ); thr->state->stall = FALSE; printf( "vips_thread_work_unit: " "stall done, releasing y = %d ...\n", thr->state->y ); } /* Process a work unit. */ if( pool->work( thr->state, pool->a ) ) { thr->error = TRUE; pool->error = TRUE; } } /* What runs as a thread ... loop, waiting to be told to do stuff. */ static void * vips_thread_main_loop( void *a ) { VipsThread *thr = (VipsThread *) a; VipsThreadpool *pool = thr->pool; g_assert( pool == thr->pool ); VIPS_GATE_START( "vips_thread_main_loop: thread" ); /* Process work units! Always tick, even if we are stopping, so the * main thread will wake up for exit. */ for(;;) { VIPS_GATE_START( "vips_thread_work_unit: u" ); vips_thread_work_unit( thr ); VIPS_GATE_STOP( "vips_thread_work_unit: u" ); vips_semaphore_up( &pool->tick ); if( pool->stop || pool->error ) break; } /* We are exiting: tell the main thread. */ vips_semaphore_up( &pool->finish ); VIPS_GATE_STOP( "vips_thread_main_loop: thread" ); return( NULL ); } /* Attach another thread to a threadpool. */ static VipsThread * vips_thread_new( VipsThreadpool *pool ) { VipsThread *thr; if( !(thr = VIPS_NEW( NULL, VipsThread )) ) return( NULL ); thr->pool = pool; thr->state = NULL; thr->thread = NULL; thr->exit = 0; thr->error = 0; /* We can't build the state here, it has to be done by the worker * itself the first time that allocate runs so that any regions are * owned by the correct thread. */ if( !(thr->thread = vips_g_thread_new( "worker", vips_thread_main_loop, thr )) ) { vips_thread_free( thr ); return( NULL ); } return( thr ); } /* Kill all threads in a threadpool, if there are any. Can be called multiple * times. */ static void vips_threadpool_kill_threads( VipsThreadpool *pool ) { if( pool->thr ) { int i; for( i = 0; i < pool->nthr; i++ ) VIPS_FREEF( vips_thread_free, pool->thr[i] ); VIPS_DEBUG_MSG( "vips_threadpool_kill_threads: " "killed %d threads\n", pool->nthr ); } } static void vips_threadpool_free( VipsThreadpool *pool ) { VIPS_DEBUG_MSG( "vips_threadpool_free: \"%s\" (%p)\n", pool->im->filename, pool ); vips_threadpool_kill_threads( pool ); VIPS_FREEF( vips_g_mutex_free, pool->allocate_lock ); vips_semaphore_destroy( &pool->finish ); vips_semaphore_destroy( &pool->tick ); VIPS_FREE( pool->thr ); VIPS_FREE( pool ); } static VipsThreadpool * vips_threadpool_new( VipsImage *im ) { VipsThreadpool *pool; int tile_width; int tile_height; gint64 n_tiles; int n_lines; /* Allocate and init new thread block. */ if( !(pool = VIPS_NEW( NULL, VipsThreadpool )) ) return( NULL ); pool->im = im; pool->allocate = NULL; pool->work = NULL; pool->allocate_lock = vips_g_mutex_new(); pool->nthr = vips_concurrency_get(); pool->thr = NULL; vips_semaphore_init( &pool->finish, 0, "finish" ); vips_semaphore_init( &pool->tick, 0, "tick" ); pool->error = FALSE; pool->stop = FALSE; /* If this is a tiny image, we won't need all nthr threads. Guess how * many tiles we might need to cover the image and use that to limit * the number of threads we create. */ vips_get_tile_size( im, &tile_width, &tile_height, &n_lines ); n_tiles = (1 + (gint64) im->Xsize / tile_width) * (1 + (gint64) im->Ysize / tile_height); n_tiles = VIPS_CLIP( 0, n_tiles, MAX_THREADS ); pool->nthr = VIPS_MIN( pool->nthr, n_tiles ); VIPS_DEBUG_MSG( "vips_threadpool_new: \"%s\" (%p), with %d threads\n", im->filename, pool, pool->nthr ); return( pool ); } /* Attach a set of threads. */ static int vips_threadpool_create_threads( VipsThreadpool *pool ) { int i; g_assert( !pool->thr ); /* Make thread array. */ if( !(pool->thr = VIPS_ARRAY( NULL, pool->nthr, VipsThread * )) ) return( -1 ); for( i = 0; i < pool->nthr; i++ ) pool->thr[i] = NULL; /* Attach threads and start them working. */ for( i = 0; i < pool->nthr; i++ ) if( !(pool->thr[i] = vips_thread_new( pool )) ) { vips_threadpool_kill_threads( pool ); return( -1 ); } return( 0 ); } /** * VipsThreadpoolStartFn: * @a: client data * @b: client data * @c: client data * * This function is called once by each worker just before the first time work * is allocated to it to build the per-thread state. Per-thread state is used * by #VipsThreadpoolAllocate and #VipsThreadpoolWork to communicate. * * #VipsThreadState is a subclass of #VipsObject. Start functions are called * from allocate, that is, they are single-threaded. * * See also: vips_threadpool_run(). * * Returns: a new #VipsThreadState object, or NULL on error */ /** * VipsThreadpoolAllocateFn: * @state: per-thread state * @a: client data * @b: client data * @c: client data * @stop: set this to signal end of computation * * This function is called to allocate a new work unit for the thread. It is * always single-threaded, so it can modify per-pool state (such as a * counter). * * @a, @b, @c are the values supplied to the call to * vips_threadpool_run(). * * It should set @stop to %TRUE to indicate that no work could be allocated * because the job is done. * * See also: vips_threadpool_run(). * * Returns: 0 on success, or -1 on error */ /** * VipsThreadpoolWorkFn: * @state: per-thread state * @a: client data * @b: client data * @c: client data * * This function is called to process a work unit. Many copies of this can run * at once, so it should not write to the per-pool state. It can write to * per-thread state. * * @a, @b, @c are the values supplied to the call to * vips_threadpool_run(). * * See also: vips_threadpool_run(). * * Returns: 0 on success, or -1 on error */ /** * VipsThreadpoolProgressFn: * @a: client data * @b: client data * @c: client data * * This function is called by the main thread once for every work unit * processed. It can be used to give the user progress feedback. * * See also: vips_threadpool_run(). * * Returns: 0 on success, or -1 on error */ /** * vips_threadpool_run: * @im: image to loop over * @start: allocate per-thread state * @allocate: allocate a work unit * @work: process a work unit * @progress: give progress feedback about a work unit, or %NULL * @a: client data * * This function runs a set of threads over an image. Each thread first calls * @start to create new per-thread state, then runs * @allocate to set up a new work unit (perhaps the next tile in an image, for * example), then @work to process that work unit. After each unit is * processed, @progress is called, so that the operation can give * progress feedback. @progress may be %NULL. * * The object returned by @start must be an instance of a subclass of * #VipsThreadState. Use this to communicate between @allocate and @work. * * @allocate and @start are always single-threaded (so they can write to the * per-pool state), whereas @work can be executed concurrently. @progress is * always called by * the main thread (ie. the thread which called vips_threadpool_run()). * * See also: vips_concurrency_set(). * * Returns: 0 on success, or -1 on error. */ int vips_threadpool_run( VipsImage *im, VipsThreadStartFn start, VipsThreadpoolAllocateFn allocate, VipsThreadpoolWorkFn work, VipsThreadpoolProgressFn progress, void *a ) { VipsThreadpool *pool; int result; if( !(pool = vips_threadpool_new( im )) ) return( -1 ); pool->start = start; pool->allocate = allocate; pool->work = work; pool->a = a; /* Attach workers and set them going. */ if( vips_threadpool_create_threads( pool ) ) { vips_threadpool_free( pool ); return( -1 ); } for(;;) { /* Wait for a tick from a worker. */ vips_semaphore_down( &pool->tick ); VIPS_DEBUG_MSG( "vips_threadpool_run: tick\n" ); if( pool->stop || pool->error ) break; if( progress && progress( pool->a ) ) pool->error = TRUE; if( pool->stop || pool->error ) break; } /* Wait for them all to hit finish. */ vips_semaphore_downn( &pool->finish, pool->nthr ); /* Return 0 for success. */ result = pool->error ? -1 : 0; vips_threadpool_free( pool ); vips_image_minimise_all( im ); return( result ); } /* Start up threadpools. This is called during vips_init. */ void vips__threadpool_init( void ) { /* We need to work with the pre-2.32 threading API. */ #ifdef HAVE_PRIVATE_INIT static GPrivate private = { 0 }; is_worker_key = &private; #else if( !is_worker_key ) is_worker_key = g_private_new( NULL ); #endif if( g_getenv( "VIPS_STALL" ) ) vips__stall = TRUE; } /** * vips_get_tile_size: (method) * @im: image to guess for * @tile_width: (out): return selected tile width * @tile_height: (out): return selected tile height * @n_lines: (out): return buffer height in scanlines * * Pick a tile size and a buffer height for this image and the current * value of vips_concurrency_get(). The buffer height * will always be a multiple of tile_height. * * The buffer height is the height of each buffer we fill in sink disc. Since * we have two buffers, the largest range of input locality is twice the output * buffer size, plus whatever margin we add for things like convolution. */ void vips_get_tile_size( VipsImage *im, int *tile_width, int *tile_height, int *n_lines ) { const int nthr = vips_concurrency_get(); const int typical_image_width = 1000; /* Compiler warnings. */ *tile_width = 1; *tile_height = 1; /* Pick a render geometry. */ switch( im->dhint ) { case VIPS_DEMAND_STYLE_SMALLTILE: *tile_width = vips__tile_width; *tile_height = vips__tile_height; break; case VIPS_DEMAND_STYLE_ANY: case VIPS_DEMAND_STYLE_FATSTRIP: *tile_width = im->Xsize; *tile_height = vips__fatstrip_height; break; case VIPS_DEMAND_STYLE_THINSTRIP: *tile_width = im->Xsize; *tile_height = vips__thinstrip_height; break; default: g_assert_not_reached(); } /* We can't set n_lines for the current demand style: a later bit of * the pipeline might see a different hint and we need to synchronise * buffer sizes everywhere. * * We also can't depend on the current image size, since that might * change down the pipeline too. Pick a typical image width. * * Pick the maximum buffer size we might possibly need, then round up * to a multiple of tileheight. */ *n_lines = vips__tile_height * VIPS_ROUND_UP( vips__tile_width * nthr, typical_image_width ) / typical_image_width; *n_lines = VIPS_MAX( *n_lines, vips__fatstrip_height * nthr ); *n_lines = VIPS_MAX( *n_lines, vips__thinstrip_height * nthr ); *n_lines = VIPS_ROUND_UP( *n_lines, *tile_height ); /* We make this assumption in several places. */ g_assert( *n_lines % *tile_height == 0 ); VIPS_DEBUG_MSG( "vips_get_tile_size: %d by %d patches, " "groups of %d scanlines\n", *tile_width, *tile_height, *n_lines ); } libvips-8.9.1/libvips/iofuncs/type.c000066400000000000000000001317321361153320700174540ustar00rootroot00000000000000/* array type * * Unlike GArray, this has fixed length, tracks a GType for elements, and has * a per-element free function. * * 27/10/11 * - from header.c * 16/7/13 * - leakcheck VipsArea * 16/8/17 * - validate strings as utf-8 on set */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include /** * SECTION: basic * @short_description: a few typedefs used everywhere * @stability: Stable * @include: vips/vips.h * * A few simple typedefs used by VIPS. */ /** * SECTION: type * @short_description: basic types * @stability: Stable * @see_also: header * @include: vips/vips.h * * A selection of %GType defintions used by VIPS. */ /* A very simple boxed type for testing. Just an int. * * You can manipulate this thing from Python (for example) with: * * from gi.repository import Vips * a = Vips.Thing.new(12) * print a.i * b = a * del a * print b.i * del b */ /** * vips_thing_new: * @i: * * Returns: (transfer full): a new #VipsThing. */ VipsThing * vips_thing_new( int i ) { VipsThing *thing; thing = g_new( VipsThing, 1 ); thing->i = i; printf( "vips_thing_new: %d %p\n", i, thing ); return( thing ); } static VipsThing * vips_thing_copy( VipsThing *thing ) { VipsThing *thing2; thing2 = vips_thing_new( thing->i ); printf( "vips_thing_copy: %d %p = %p\n", thing->i, thing2, thing ); return( thing2 ); } static void vips_thing_free( VipsThing *thing ) { printf( "vips_thing_free: %d %p\n", thing->i, thing ); g_free( thing ); } /* * glib-2.26+ only G_DEFINE_BOXED_TYPE( VipsThing, vips_thing, (GBoxedCopyFunc) vips_thing_copy, (GBoxedFreeFunc) vips_thing_free ); */ GType vips_thing_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsThing", (GBoxedCopyFunc) vips_thing_copy, (GBoxedFreeFunc) vips_thing_free ); } return( type ); } static GSList *vips_area_all = NULL; VipsArea * vips_area_copy( VipsArea *area ) { g_mutex_lock( area->lock ); g_assert( area->count > 0 ); area->count += 1; #ifdef DEBUG printf( "vips_area_copy: %p count = %d\n", area, area->count ); #endif /*DEBUG*/ g_mutex_unlock( area->lock ); return( area ); } void vips_area_free( VipsArea *area ) { if( area->free_fn && area->data ) { area->free_fn( area->data, area ); area->free_fn = NULL; } area->data = NULL; } void vips_area_unref( VipsArea *area ) { g_mutex_lock( area->lock ); g_assert( area->count > 0 ); area->count -= 1; #ifdef DEBUG printf( "vips_area_unref: %p count = %d\n", area, area->count ); #endif /*DEBUG*/ if( vips__leak ) { g_mutex_lock( vips__global_lock ); g_assert( g_slist_find( vips_area_all, area ) ); g_mutex_unlock( vips__global_lock ); } if( area->count == 0 ) { vips_area_free( area ); g_mutex_unlock( area->lock ); VIPS_FREEF( vips_g_mutex_free, area->lock ); g_free( area ); if( vips__leak ) { g_mutex_lock( vips__global_lock ); vips_area_all = g_slist_remove( vips_area_all, area ); g_mutex_unlock( vips__global_lock ); } #ifdef DEBUG g_mutex_lock( vips__global_lock ); printf( "vips_area_unref: free .. total = %d\n", g_slist_length( vips_area_all ) ); g_mutex_unlock( vips__global_lock ); #endif /*DEBUG*/ } else g_mutex_unlock( area->lock ); } /** * vips_area_new: (constructor) * @free_fn: (scope async): @data will be freed with this function * @data: data will be freed with this function * * A VipsArea wraps a chunk of memory. It adds reference counting and a free * function. It also keeps a count and a %GType, so the area can be an array. * * This type is used for things like passing an array of double or an array of * #VipsObject pointers to operations, and for reference-counted immutable * strings. * * Inital count == 1, so _unref() after attaching somewhere. * * See also: vips_area_unref(). * * Returns: (transfer full): the new #VipsArea. */ VipsArea * vips_area_new( VipsCallbackFn free_fn, void *data ) { VipsArea *area; area = g_new( VipsArea, 1 ); area->count = 1; area->lock = vips_g_mutex_new(); area->length = 0; area->data = data; area->free_fn = free_fn; area->type = 0; area->sizeof_type = 0; if( vips__leak ) { g_mutex_lock( vips__global_lock ); vips_area_all = g_slist_prepend( vips_area_all, area ); g_mutex_unlock( vips__global_lock ); } #ifdef DEBUG g_mutex_lock( vips__global_lock ); printf( "vips_area_new: %p count = %d (%d in total)\n", area, area->count, g_slist_length( vips_area_all ) ); g_mutex_unlock( vips__global_lock ); #endif /*DEBUG*/ return( area ); } void vips__type_leak( void ) { if( vips_area_all ) { GSList *p; fprintf( stderr, "%d VipsArea alive\n", g_slist_length( vips_area_all ) ); for( p = vips_area_all; p; p = p->next ) { VipsArea *area = VIPS_AREA( p->data ); fprintf( stderr, "\t%p count = %d, bytes = %zd\n", area, area->count, area->length ); } } } /** * vips_area_new_array: * @type: %GType of elements to store * @sizeof_type: sizeof() an element in the array * @n: number of elements in the array * * An area which holds an array of elements of some %GType. To set values for * the elements, get the pointer and write. * * See also: vips_area_unref(). * * Returns: (transfer full): the new #VipsArea. */ VipsArea * vips_area_new_array( GType type, size_t sizeof_type, int n ) { VipsArea *area; void *array; array = g_malloc( n * sizeof_type ); area = vips_area_new( (VipsCallbackFn) g_free, array ); area->n = n; area->length = n * sizeof_type; area->type = type; area->sizeof_type = sizeof_type; return( area ); } static void vips_area_free_array_object( GObject **array, VipsArea *area ) { int i; for( i = 0; i < area->n; i++ ) VIPS_FREEF( g_object_unref, array[i] ); VIPS_FREE( array ); area->n = 0; } /** * vips_area_new_array_object: (constructor) * @n: number of elements in the array * * An area which holds an array of %GObject s. See vips_area_new_array(). When * the area is freed, each %GObject will be unreffed. * * Add an extra NULL element at the end, handy for eg. * vips_image_pipeline_array() etc. * * See also: vips_area_unref(). * * Returns: (transfer full): the new #VipsArea. */ VipsArea * vips_area_new_array_object( int n ) { GObject **array; VipsArea *area; array = g_new0( GObject *, n + 1 ); area = vips_area_new( (VipsCallbackFn) vips_area_free_array_object, array ); area->n = n; area->length = n * sizeof( GObject * ); area->type = G_TYPE_OBJECT; area->sizeof_type = sizeof( GObject * ); return( area ); } /** * vips_area_get_data: (method) * @area: #VipsArea to fetch from * @length: (optional): optionally return length in bytes here * @n: (optional): optionally return number of elements here * @type: (optional): optionally return element type here * @sizeof_type: (optional): optionally return sizeof() element type here * * Return the data pointer plus optionally the length in bytes of an area, * the number of elements, the %GType of each element and the sizeof() each * element. * * Returns: (transfer none): The pointer held by @area. */ void * vips_area_get_data( VipsArea *area, size_t *length, int *n, GType *type, size_t *sizeof_type ) { if( !area ) return( NULL ); if( length ) *length = area->length; if( n ) *n = area->n; if( type ) *type = area->type; if( sizeof_type ) *sizeof_type = area->sizeof_type; return( area->data ); } /* Transform an area to a G_TYPE_STRING. */ static void transform_area_g_string( const GValue *src_value, GValue *dest_value ) { VipsArea *area; char buf[256]; area = g_value_get_boxed( src_value ); vips_snprintf( buf, 256, "VIPS_TYPE_AREA, count = %d, data = %p", area->count, area->data ); g_value_set_string( dest_value, buf ); } GType vips_area_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsArea", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( type, G_TYPE_STRING, transform_area_g_string ); } return( type ); } /* Transform funcs for builtin types to SAVE_STRING. */ static void transform_int_save_string( const GValue *src_value, GValue *dest_value ) { vips_value_set_save_stringf( dest_value, "%d", g_value_get_int( src_value ) ); } static void transform_save_string_int( const GValue *src_value, GValue *dest_value ) { g_value_set_int( dest_value, atoi( vips_value_get_save_string( src_value ) ) ); } static void transform_double_save_string( const GValue *src_value, GValue *dest_value ) { char buf[G_ASCII_DTOSTR_BUF_SIZE]; /* Need to be locale independent. */ g_ascii_dtostr( buf, G_ASCII_DTOSTR_BUF_SIZE, g_value_get_double( src_value ) ); vips_value_set_save_string( dest_value, buf ); } static void transform_save_string_double( const GValue *src_value, GValue *dest_value ) { g_value_set_double( dest_value, g_ascii_strtod( vips_value_get_save_string( src_value ), NULL ) ); } static void transform_float_save_string( const GValue *src_value, GValue *dest_value ) { char buf[G_ASCII_DTOSTR_BUF_SIZE]; /* Need to be locale independent. */ g_ascii_dtostr( buf, G_ASCII_DTOSTR_BUF_SIZE, g_value_get_float( src_value ) ); vips_value_set_save_string( dest_value, buf ); } static void transform_save_string_float( const GValue *src_value, GValue *dest_value ) { g_value_set_float( dest_value, g_ascii_strtod( vips_value_get_save_string( src_value ), NULL ) ); } /* Save meta fields to the header. We have a new string type for header fields * to save to XML and define transform functions to go from our meta types to * this string type. */ GType vips_save_string_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsSaveString", (GBoxedCopyFunc) g_strdup, (GBoxedFreeFunc) g_free ); } return( type ); } /* Transform a refstring to a G_TYPE_STRING and back. */ static void transform_ref_string_g_string( const GValue *src_value, GValue *dest_value ) { g_value_set_string( dest_value, vips_value_get_ref_string( src_value, NULL ) ); } static void transform_g_string_ref_string( const GValue *src_value, GValue *dest_value ) { vips_value_set_ref_string( dest_value, g_value_get_string( src_value ) ); } /* To a save string. */ static void transform_ref_string_save_string( const GValue *src_value, GValue *dest_value ) { vips_value_set_save_stringf( dest_value, "%s", vips_value_get_ref_string( src_value, NULL ) ); } static void transform_save_string_ref_string( const GValue *src_value, GValue *dest_value ) { vips_value_set_ref_string( dest_value, vips_value_get_save_string( src_value ) ); } /** * vips_ref_string_new: * @str: (transfer none): string to store * * Create a new refstring. These are reference-counted immutable strings, used * to store string data in vips image metadata. * * Strings must be valid utf-8; use blob for binary data. * * See also: vips_area_unref(). * * Returns: (transfer full): the new #VipsRefString, or NULL on error. */ VipsRefString * vips_ref_string_new( const char *str ) { VipsArea *area; if( !g_utf8_validate( str, -1, NULL ) ) str = ""; area = vips_area_new( (VipsCallbackFn) g_free, g_strdup( str ) ); /* Handy place to cache this. */ area->length = strlen( str ); return( (VipsRefString *) area ); } /** * vips_ref_string_get: * @refstr: the #VipsRefString to fetch from * @length: (allow-none): return length here, optionally * * Get a pointer to the private string inside a refstr. Handy for language * bindings. * * See also: vips_value_get_ref_string(). * * Returns: (transfer none): The C string held by @refstr. */ const char * vips_ref_string_get( VipsRefString *refstr, size_t *length ) { VipsArea *area = VIPS_AREA( refstr ); return( vips_area_get_data( area, length, NULL, NULL, NULL ) ); } GType vips_ref_string_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsRefString", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( type, G_TYPE_STRING, transform_ref_string_g_string ); g_value_register_transform_func( G_TYPE_STRING, type, transform_g_string_ref_string ); g_value_register_transform_func( type, VIPS_TYPE_SAVE_STRING, transform_ref_string_save_string ); g_value_register_transform_func( VIPS_TYPE_SAVE_STRING, type, transform_save_string_ref_string ); } return( type ); } /** * vips_blob_new: * @free_fn: (scope async) (allow-none): @data will be freed with this function * @data: (array length=length) (element-type guint8) (transfer full): data to store * @length: number of bytes in @data * * Like vips_area_new(), but track a length as well. The returned #VipsBlob * takes ownership of @data and will free it with @free_fn. Pass NULL for * @free_fn to not transfer ownership. * * An area of mem with a free func and a length (some sort of binary object, * like an ICC profile). * * See also: vips_area_unref(). * * Returns: (transfer full): the new #VipsBlob. */ VipsBlob * vips_blob_new( VipsCallbackFn free_fn, const void *data, size_t length ) { VipsArea *area; area = vips_area_new( free_fn, (void *) data ); area->length = length; return( (VipsBlob *) area ); } /** * vips_blob_copy: * @data: (array length=length) (element-type guint8) (transfer none): data to store * @length: number of bytes in @data * * Like vips_blob_new(), but take a copy of the data. Useful for bindings * which strugle with callbacks. * * See also: vips_blob_new(). * * Returns: (transfer full): the new #VipsBlob. */ VipsBlob * vips_blob_copy( const void *data, size_t length ) { void *data_copy; VipsArea *area; data_copy = vips_malloc( NULL, length ); memcpy( data_copy, data, length ); area = vips_area_new( (VipsCallbackFn) g_free, data_copy ); area->length = length; return( (VipsBlob *) area ); } /** * vips_blob_get: * @blob: #VipsBlob to fetch from * @length: return number of bytes of data * * Get the data from a #VipsBlob. * * See also: vips_blob_new(). * * Returns: (array length=length) (element-type guint8) (transfer none): the * data */ const void * vips_blob_get( VipsBlob *blob, size_t *length ) { return( vips_area_get_data( VIPS_AREA( blob ), length, NULL, NULL, NULL ) ); } /* vips_blob_set: * @blob: #VipsBlob to set * @free_fn: (scope async) (allow-none): @data will be freed with this function * @data: (array length=length) (element-type guint8) (transfer full): data to store * @length: number of bytes in @data * * Any old data is freed and new data attached. * * It's sometimes useful to be able to create blobs as empty and then fill * them later. * * See also: vips_blob_new(). */ void vips_blob_set( VipsBlob *blob, VipsCallbackFn free_fn, const void *data, size_t length ) { VipsArea *area = VIPS_AREA( blob ); g_mutex_lock( area->lock ); vips_area_free( area ); area->free_fn = free_fn; area->length = length; area->data = (void *) data; g_mutex_unlock( area->lock ); } /* Transform a blob to a G_TYPE_STRING. */ static void transform_blob_g_string( const GValue *src_value, GValue *dest_value ) { void *blob; size_t length; char buf[256]; blob = vips_value_get_blob( src_value, &length ); vips_snprintf( buf, 256, "VIPS_TYPE_BLOB, data = %p, length = %zd", blob, length ); g_value_set_string( dest_value, buf ); } /* Transform a blob to a save string and back. */ static void transform_blob_save_string( const GValue *src_value, GValue *dest_value ) { void *blob; size_t length; char *b64; blob = vips_value_get_blob( src_value, &length ); if( (b64 = vips__b64_encode( blob, length )) ) { vips_value_set_save_string( dest_value, b64 ); vips_free( b64 ); } else /* No error return from transform, but we should set it to * something. */ vips_value_set_save_string( dest_value, "" ); } static void transform_save_string_blob( const GValue *src_value, GValue *dest_value ) { const char *b64; void *blob; size_t length; b64 = vips_value_get_save_string( src_value ); if( (blob = vips__b64_decode( b64, &length )) ) vips_value_set_blob( dest_value, (VipsCallbackFn) vips_free, blob, length ); else /* No error return from transform, but we should set it to * something. */ vips_value_set_blob( dest_value, NULL, NULL, 0 ); } GType vips_blob_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsBlob", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( type, G_TYPE_STRING, transform_blob_g_string ); g_value_register_transform_func( type, VIPS_TYPE_SAVE_STRING, transform_blob_save_string ); g_value_register_transform_func( VIPS_TYPE_SAVE_STRING, type, transform_save_string_blob ); } return( type ); } /** * vips_array_int_new: * @array: (array length=n): array of int * @n: number of ints * * Allocate a new array of ints and copy @array into it. Free with * vips_area_unref(). * * See also: #VipsArea. * * Returns: (transfer full): A new #VipsArrayInt. */ VipsArrayInt * vips_array_int_new( const int *array, int n ) { VipsArea *area; int *array_copy; area = vips_area_new_array( G_TYPE_INT, sizeof( int ), n ); array_copy = vips_area_get_data( area, NULL, NULL, NULL, NULL ); memcpy( array_copy, array, n * sizeof( int ) ); return( (VipsArrayInt *) area ); } /** * vips_array_int_newv: * @n: number of ints * @...: list of int arguments * * Allocate a new array of @n ints and copy @... into it. Free with * vips_area_unref(). * * See also: vips_array_int_new() * * Returns: (transfer full): A new #VipsArrayInt. */ VipsArrayInt * vips_array_int_newv( int n, ... ) { va_list ap; VipsArea *area; int *array; int i; area = vips_area_new_array( G_TYPE_INT, sizeof( int ), n ); array = vips_area_get_data( area, NULL, NULL, NULL, NULL ); va_start( ap, n ); for( i = 0; i < n; i++ ) array[i] = va_arg( ap, int ); va_end( ap ); return( (VipsArrayInt *) area ); } /** * vips_array_int_get: * @array: the #VipsArrayInt to fetch from * @n: length of array * * Fetch an int array from a #VipsArrayInt. Useful for language bindings. * * Returns: (array length=n) (transfer none): array of int */ int * vips_array_int_get( VipsArrayInt *array, int *n ) { VipsArea *area = VIPS_AREA( array ); g_assert( area->type == G_TYPE_INT ); if( n ) *n = area->n; return( (int *) VIPS_ARRAY_ADDR( array, 0 ) ); } static void transform_array_int_g_string( const GValue *src_value, GValue *dest_value ) { int n; int *array; char txt[1024]; VipsBuf buf = VIPS_BUF_STATIC( txt ); int i; if( (array = vips_value_get_array_int( src_value, &n )) ) for( i = 0; i < n; i++ ) /* Use space as a separator since ',' may be a * decimal point in this locale. */ vips_buf_appendf( &buf, "%d ", array[i] ); g_value_set_string( dest_value, vips_buf_all( &buf ) ); } /* It'd be great to be able to write a generic string->array function, but * it doesn't seem possible. */ static void transform_g_string_array_int( const GValue *src_value, GValue *dest_value ) { char *str; int n; char *p, *q; int i; int *array; /* Walk the string to get the number of elements. * We need a copy of the string, since we insert \0 during * scan. * * We can't allow ',' as a separator, since some locales use it as a * decimal point. */ str = g_value_dup_string( src_value ); n = 0; for( p = str; (q = vips_break_token( p, "\t; " )); p = q ) n += 1; g_free( str ); vips_value_set_array_int( dest_value, NULL, n ); array = vips_value_get_array_int( dest_value, NULL ); str = g_value_dup_string( src_value ); i = 0; for( p = str; (q = vips_break_token( p, "\t; " )); p = q ) { if( sscanf( p, "%d", &array[i] ) != 1 ) { /* Set array to length zero to indicate an error. */ vips_error( "vipstype", _( "unable to convert \"%s\" to int" ), p ); vips_value_set_array( dest_value, 0, G_TYPE_INT, sizeof( int ) ); g_free( str ); return; } i += 1; } g_free( str ); } /* We need a arrayint, we have an int, make a one-element array. */ static void transform_int_array_int( const GValue *src_value, GValue *dest_value ) { int *array; vips_value_set_array_int( dest_value, NULL, 1 ); array = vips_value_get_array_int( dest_value, NULL ); array[0] = g_value_get_int( src_value ); } static void transform_double_array_int( const GValue *src_value, GValue *dest_value ) { int *array; vips_value_set_array_int( dest_value, NULL, 1 ); array = vips_value_get_array_int( dest_value, NULL ); array[0] = g_value_get_double( src_value ); } static void transform_array_double_array_int( const GValue *src_value, GValue *dest_value ) { int n; double *array_double = vips_value_get_array_double( src_value, &n ); int *array_int; int i; vips_value_set_array_int( dest_value, NULL, n ); array_int = vips_value_get_array_int( dest_value, NULL ); for( i = 0; i < n; i++ ) array_int[i] = array_double[i]; } GType vips_array_int_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsArrayInt", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( type, G_TYPE_STRING, transform_array_int_g_string ); g_value_register_transform_func( G_TYPE_STRING, type, transform_g_string_array_int ); g_value_register_transform_func( G_TYPE_INT, type, transform_int_array_int ); g_value_register_transform_func( G_TYPE_DOUBLE, type, transform_double_array_int ); g_value_register_transform_func( VIPS_TYPE_ARRAY_DOUBLE, type, transform_array_double_array_int ); } return( type ); } /** * vips_array_double_new: * @array: (array length=n): array of double * @n: number of doubles * * Allocate a new array of doubles and copy @array into it. Free with * vips_area_unref(). * * See also: #VipsArea. * * Returns: (transfer full): A new #VipsArrayDouble. */ VipsArrayDouble * vips_array_double_new( const double *array, int n ) { VipsArea *area; double *array_copy; area = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array_copy = vips_area_get_data( area, NULL, NULL, NULL, NULL ); memcpy( array_copy, array, n * sizeof( double ) ); return( (VipsArrayDouble *) area ); } /** * vips_array_double_newv: * @n: number of doubles * @...: list of double arguments * * Allocate a new array of @n doubles and copy @... into it. Free with * vips_area_unref(). * * See also: vips_array_double_new() * * Returns: (transfer full): A new #VipsArrayDouble. */ VipsArrayDouble * vips_array_double_newv( int n, ... ) { va_list ap; VipsArea *area; double *array; int i; area = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array = vips_area_get_data( area, NULL, NULL, NULL, NULL ); va_start( ap, n ); for( i = 0; i < n; i++ ) array[i] = va_arg( ap, double ); va_end( ap ); return( (VipsArrayDouble *) area ); } /** * vips_array_double_get: * @array: the #VipsArrayDouble to fetch from * @n: length of array * * Fetch a double array from a #VipsArrayDouble. Useful for language bindings. * * Returns: (array length=n) (transfer none): array of double */ double * vips_array_double_get( VipsArrayDouble *array, int *n ) { VipsArea *area = VIPS_AREA( array ); g_assert( area->type == G_TYPE_DOUBLE ); if( n ) *n = area->n; return( VIPS_ARRAY_ADDR( array, 0 ) ); } static void transform_array_double_g_string( const GValue *src_value, GValue *dest_value ) { int n; double *array; char txt[1024]; VipsBuf buf = VIPS_BUF_STATIC( txt ); int i; if( (array = vips_value_get_array_double( src_value, &n )) ) for( i = 0; i < n; i++ ) /* Use space as a separator since ',' may be a decimal * point in this locale. */ vips_buf_appendf( &buf, "%g ", array[i] ); g_value_set_string( dest_value, vips_buf_all( &buf ) ); } /* It'd be great to be able to write a generic string->array function, but * it doesn't seem possible. */ static void transform_g_string_array_double( const GValue *src_value, GValue *dest_value ) { char *str; int n; char *p, *q; int i; double *array; /* Walk the string to get the number of elements. * We need a copy of the string, since we insert \0 during scan. * * We can't allow ',' as a separator since some locales use it as a * decimal point. */ str = g_value_dup_string( src_value ); n = 0; for( p = str; (q = vips_break_token( p, "\t; " )); p = q ) n += 1; g_free( str ); vips_value_set_array_double( dest_value, NULL, n ); array = vips_value_get_array_double( dest_value, NULL ); str = g_value_dup_string( src_value ); i = 0; for( p = str; (q = vips_break_token( p, "\t; " )); p = q ) { if( sscanf( p, "%lf", &array[i] ) != 1 ) { /* Set array to length zero to indicate an error. */ vips_error( "vipstype", _( "unable to convert \"%s\" to float" ), p ); vips_value_set_array_double( dest_value, NULL, 0 ); g_free( str ); return; } i += 1; } g_free( str ); } /* We need a arraydouble, we have a double, make a one-element array. */ static void transform_double_array_double( const GValue *src_value, GValue *dest_value ) { double *array; vips_value_set_array_double( dest_value, NULL, 1 ); array = vips_value_get_array_double( dest_value, NULL ); array[0] = g_value_get_double( src_value ); } static void transform_int_array_double( const GValue *src_value, GValue *dest_value ) { double *array; vips_value_set_array_double( dest_value, NULL, 1 ); array = vips_value_get_array_double( dest_value, NULL ); array[0] = g_value_get_int( src_value ); } static void transform_array_int_array_double( const GValue *src_value, GValue *dest_value ) { int n; int *array_int = vips_value_get_array_int( src_value, &n ); double *array_double; int i; vips_value_set_array_double( dest_value, NULL, n ); array_double = vips_value_get_array_double( dest_value, NULL ); for( i = 0; i < n; i++ ) array_double[i] = array_int[i]; } /* You can set enums from ints, but not doubles. Add a double converter too. */ static void transform_double_enum( const GValue *src_value, GValue *dest_value ) { g_value_set_enum( dest_value, g_value_get_double( src_value ) ); } GType vips_array_double_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsArrayDouble", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( type, G_TYPE_STRING, transform_array_double_g_string ); g_value_register_transform_func( G_TYPE_STRING, type, transform_g_string_array_double ); g_value_register_transform_func( G_TYPE_DOUBLE, type, transform_double_array_double ); g_value_register_transform_func( G_TYPE_INT, type, transform_int_array_double ); g_value_register_transform_func( VIPS_TYPE_ARRAY_INT, type, transform_array_int_array_double ); g_value_register_transform_func( G_TYPE_DOUBLE, G_TYPE_ENUM, transform_double_enum ); } return( type ); } /** * vips_array_image_new: (constructor) * @array: (array length=n): array of #VipsImage * @n: number of images * * Allocate a new array of images and copy @array into it. Free with * vips_area_unref(). * * The images will all be reffed by this function. They * will be automatically unreffed for you by * vips_area_unref(). * * Add an extra NULL element at the end, handy for eg. * vips_image_pipeline_array() etc. * * See also: #VipsArea. * * Returns: (transfer full): A new #VipsArrayImage. */ VipsArrayImage * vips_array_image_new( VipsImage **array, int n ) { VipsArea *area; VipsImage **array_copy; int i; area = vips_area_new_array_object( n ); area->type = VIPS_TYPE_IMAGE; array_copy = vips_area_get_data( area, NULL, NULL, NULL, NULL ); for( i = 0; i < n; i++ ) { array_copy[i] = (VipsImage *) array[i]; g_object_ref( array_copy[i] ); } return( (VipsArrayImage *) area ); } /** * vips_array_image_newv: (constructor) * @n: number of images * @...: list of #VipsImage arguments * * Allocate a new array of @n #VipsImage and copy @... into it. Free with * vips_area_unref(). * * The images will all be reffed by this function. They * will be automatically unreffed for you by * vips_area_unref(). * * Add an extra NULL element at the end, handy for eg. * vips_image_pipeline_array() etc. * * See also: vips_array_image_new() * * Returns: (transfer full): A new #VipsArrayImage. */ VipsArrayImage * vips_array_image_newv( int n, ... ) { va_list ap; VipsArea *area; VipsImage **array; int i; area = vips_area_new_array_object( n ); area->type = VIPS_TYPE_IMAGE; array = vips_area_get_data( area, NULL, NULL, NULL, NULL ); va_start( ap, n ); for( i = 0; i < n; i++ ) { array[i] = va_arg( ap, VipsImage * ); g_object_ref( array[i] ); } va_end( ap ); return( (VipsArrayImage *) area ); } VipsArrayImage * vips_array_image_new_from_string( const char *string, VipsAccess access ) { char *str; int n; VipsArea *area; VipsImage **array; char *p, *q; int i; /* We need a copy of the string, since we insert \0 during * scan. */ str = g_strdup( string ); n = 0; for( p = str; (q = vips_break_token( p, " \n\t\r" )); p = q ) n += 1; g_free( str ); area = vips_area_new_array_object( n ); area->type = VIPS_TYPE_IMAGE; array = vips_area_get_data( area, NULL, NULL, NULL, NULL ); str = g_strdup( string ); i = 0; for( p = str; (q = vips_break_token( p, " \n\t\r" )); p = q ) { if( !(array[i] = vips_image_new_from_file( p, "access", access, NULL )) ) { vips_area_unref( area ); g_free( str ); return( NULL ); } i += 1; } g_free( str ); return( (VipsArrayImage *) area ); } /** * vips_array_image_empty: (constructor) * * Make an empty image array. * Handy with vips_array_image_add() for bindings * which can't handle object array arguments. * * See also: vips_array_image_add(). * * Returns: (transfer full): A new #VipsArrayImage. */ VipsArrayImage * vips_array_image_empty( void ) { return( vips_array_image_new( NULL, 0 ) ); } /** * vips_array_image_append: (method) * @array: (transfer none): append to this * @image: add this * * Make a new #VipsArrayImage, one larger than @array, with @image appended * to the end. * Handy with vips_array_image_empty() for bindings * which can't handle object array arguments. * * See also: vips_array_image_empty(). * * Returns: (transfer full): A new #VipsArrayImage. */ VipsArrayImage * vips_array_image_append( VipsArrayImage *array, VipsImage *image ) { VipsArea *old_area = VIPS_AREA( array ); int n = old_area->n; VipsArea *new_area; VipsImage **old_vector; VipsImage **new_vector; int i; new_area = vips_area_new_array_object( n + 1 ); new_area->type = VIPS_TYPE_IMAGE; old_vector = vips_area_get_data( old_area, NULL, NULL, NULL, NULL ); new_vector = vips_area_get_data( new_area, NULL, NULL, NULL, NULL ); for( i = 0; i < n; i++ ) { new_vector[i] = (VipsImage *) old_vector[i]; g_object_ref( new_vector[i] ); } new_vector[i] = image; g_object_ref( new_vector[i] ); return( (VipsArrayImage *) new_area ); } /** * vips_array_image_get: (method) * @array: the #VipsArrayImage to fetch from * @n: length of array * * Fetch an image array from a #VipsArrayImage. Useful for language bindings. * * Returns: (array length=n) (transfer none): array of #VipsImage */ VipsImage ** vips_array_image_get( VipsArrayImage *array, int *n ) { VipsArea *area = VIPS_AREA( array ); g_assert( area->type == VIPS_TYPE_IMAGE ); if( n ) *n = area->n; return( (VipsImage **) VIPS_ARRAY_ADDR( array, 0 ) ); } static void transform_g_string_array_image( const GValue *src_value, GValue *dest_value ) { char *str; VipsArrayImage *array_image; str = g_value_dup_string( src_value ); /* We can't get access here, just assume nothing. See the special case * in vips_object_new_from_string() for how we usually get this right. */ if( !(array_image = vips_array_image_new_from_string( str, 0 )) ) { /* Set the dest to length zero to indicate error. */ vips_value_set_array_image( dest_value, 0 ); g_free( str ); return; } g_free( str ); g_value_set_boxed( dest_value, array_image ); vips_area_unref( VIPS_AREA( array_image ) ); } GType vips_array_image_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsArrayImage", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( G_TYPE_STRING, type, transform_g_string_array_image ); } return( type ); } /** * vips_value_set_area: * @value: (out): set this value * @free_fn: (scope async): data will be freed with this function * @data: set @value to track this pointer * * Set value to be a ref-counted area of memory with a free function. */ void vips_value_set_area( GValue *value, VipsCallbackFn free_fn, void *data ) { VipsArea *area; area = vips_area_new( free_fn, data ); g_value_init( value, VIPS_TYPE_AREA ); g_value_set_boxed( value, area ); vips_area_unref( area ); } /** * vips_value_get_area: * @value: get from this value * @length: (allow-none): optionally return length here * * Get the pointer from an area. Don't touch count (area is static). * * Returns: (transfer none): The pointer held by @value. */ void * vips_value_get_area( const GValue *value, size_t *length ) { VipsArea *area; area = g_value_get_boxed( value ); return( vips_area_get_data( area, length, NULL, NULL, NULL ) ); } /** * vips_value_get_save_string: * @value: GValue to get from * * Get the C string held internally by the GValue. * * Returns: (transfer none): The C string held by @value. */ const char * vips_value_get_save_string( const GValue *value ) { return( (char *) g_value_get_boxed( value ) ); } /** * vips_value_set_save_string: * @value: (out): GValue to set * @str: C string to copy into the GValue * * Copies the C string into @value. * * @str should be a valid utf-8 string. */ void vips_value_set_save_string( GValue *value, const char *str ) { g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_SAVE_STRING ); if( !g_utf8_validate( str, -1, NULL ) ) str = ""; g_value_set_boxed( value, str ); } /** * vips_value_set_save_stringf: * @value: (out): GValue to set * @fmt: printf()-style format string * @...: arguments to printf()-formatted @fmt * * Generates a string and copies it into @value. */ void vips_value_set_save_stringf( GValue *value, const char *fmt, ... ) { va_list ap; char *str; g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_SAVE_STRING ); va_start( ap, fmt ); str = g_strdup_vprintf( fmt, ap ); va_end( ap ); vips_value_set_save_string( value, str ); g_free( str ); } /** * vips_value_get_ref_string: * @value: %GValue to get from * @length: (allow-none): return length here, optionally * * Get the C string held internally by the %GValue. * * Returns: (transfer none): The C string held by @value. */ const char * vips_value_get_ref_string( const GValue *value, size_t *length ) { return( vips_value_get_area( value, length ) ); } /** * vips_value_set_ref_string: * @value: (out): %GValue to set * @str: C string to copy into the GValue * * Copies the C string @str into @value. * * vips_ref_string are immutable C strings that are copied between images by * copying reference-counted pointers, making them much more efficient than * regular %GValue strings. * * @str should be a valid utf-8 string. */ void vips_value_set_ref_string( GValue *value, const char *str ) { VipsRefString *ref_str; g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_REF_STRING ); ref_str = vips_ref_string_new( str ); g_value_set_boxed( value, ref_str ); vips_area_unref( VIPS_AREA( ref_str ) ); } /** * vips_value_set_blob: * @value: (out): GValue to set * @free_fn: (scope async): free function for @data * @data: pointer to area of memory * @length: length of memory area * * Sets @value to hold a @data. When @value is freed, @data will be * freed with @free_fn. @value also holds a note of the size of the memory * area. * * blobs are things like ICC profiles or EXIF data. They are relocatable, and * are saved to VIPS files for you coded as base64 inside the XML. They are * copied by copying reference-counted pointers. * * See also: vips_value_get_blob() */ void vips_value_set_blob( GValue *value, VipsCallbackFn free_fn, const void *data, size_t length ) { VipsBlob *blob; g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_BLOB ); blob = vips_blob_new( free_fn, data, length ); g_value_set_boxed( value, blob ); vips_area_unref( VIPS_AREA( blob ) ); } /** * vips_value_set_blob_free: * @value: (out): GValue to set * @data: pointer to area of memory * @length: length of memory area * * Just like vips_value_set_blob(), but when * @value is freed, @data will be * freed with g_free(). * * This can be easier to call for language bindings. * * See also: vips_value_set_blob() */ void vips_value_set_blob_free( GValue *value, void *data, size_t length ) { VipsBlob *blob; g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_BLOB ); blob = vips_blob_new( (VipsCallbackFn) g_free, data, length ); g_value_set_boxed( value, blob ); vips_area_unref( VIPS_AREA( blob ) ); } /** * vips_value_get_blob: * @value: GValue to set * @length: (allow-none): optionally return length of memory area * * Returns the data pointer from a blob. Optionally returns the length too. * * blobs are things like ICC profiles or EXIF data. They are relocatable, and * are saved to VIPS files for you coded as base64 inside the XML. They are * copied by copying reference-counted pointers. * * See also: vips_value_set_blob() * * Returns: (transfer none): The pointer held by @value. */ void * vips_value_get_blob( const GValue *value, size_t *length ) { return( vips_value_get_area( value, length ) ); } /** * vips_value_set_array: * @value: (out): %GValue to set * @n: number of elements * @type: the type of each element * @sizeof_type: the sizeof each element * * Set @value to be an array of things. * * This allocates memory but does not * initialise the contents: get the pointer and write instead. */ void vips_value_set_array( GValue *value, int n, GType type, size_t sizeof_type ) { VipsArea *area; area = vips_area_new_array( type, sizeof_type, n ); g_value_set_boxed( value, area ); vips_area_unref( area ); } /** * vips_value_get_array: * @value: %GValue to get from * @n: (allow-none): return the number of elements here, optionally * @type: (allow-none): return the type of each element here, optionally * @sizeof_type: (allow-none): return the sizeof each element here, optionally * * Return the pointer to the array held by @value. * Optionally return the other properties of the array in @n, @type, * @sizeof_type. * * See also: vips_value_set_array(). * * Returns: (transfer none): The array address. */ void * vips_value_get_array( const GValue *value, int *n, GType *type, size_t *sizeof_type ) { VipsArea *area; /* Can't check value type, because we may get called from * vips_*_get_type(). */ if( !(area = g_value_get_boxed( value )) ) return( NULL ); if( n ) *n = area->n; if( type ) *type = area->type; if( sizeof_type ) *sizeof_type = area->sizeof_type; return( area->data ); } /** * vips_value_get_array_int: * @value: %GValue to get from * @n: (allow-none): return the number of elements here, optionally * * Return the start of the array of ints held by @value. * optionally return the number of elements in @n. * * See also: vips_array_int_new(). * * Returns: (transfer none): The array address. */ int * vips_value_get_array_int( const GValue *value, int *n ) { return( vips_value_get_array( value, n, NULL, NULL ) ); } /** * vips_value_set_array_int: * @value: (out): %GValue to get from * @array: (array length=n) (allow-none): array of ints * @n: the number of elements * * Set @value to hold a copy of @array. Pass in the array length in @n. * * See also: vips_array_int_get(). */ void vips_value_set_array_int( GValue *value, const int *array, int n ) { vips_value_set_array( value, n, G_TYPE_INT, sizeof( int ) ); if( array ) { int *array_copy; array_copy = vips_value_get_array_int( value, NULL ); memcpy( array_copy, array, n * sizeof( int ) ); } } /** * vips_value_get_array_double: * @value: %GValue to get from * @n: (allow-none): return the number of elements here, optionally * * Return the start of the array of doubles held by @value. * optionally return the number of elements in @n. * * See also: vips_array_double_new(). * * Returns: (transfer none): The array address. */ double * vips_value_get_array_double( const GValue *value, int *n ) { return( vips_value_get_array( value, n, NULL, NULL ) ); } /** * vips_value_set_array_double: * @value: (out): %GValue to get from * @array: (array length=n) (allow-none): array of doubles * @n: the number of elements * * Set @value to hold a copy of @array. Pass in the array length in @n. * * See also: vips_array_double_get(). */ void vips_value_set_array_double( GValue *value, const double *array, int n ) { vips_value_set_array( value, n, G_TYPE_DOUBLE, sizeof( double ) ); if( array ) { double *array_copy; array_copy = vips_value_get_array_double( value, NULL ); memcpy( array_copy, array, n * sizeof( double ) ); } } /** * vips_value_get_array_image: * @value: %GValue to get from * @n: (allow-none): return the number of elements here, optionally * * Return the start of the array of images held by @value. * optionally return the number of elements in @n. * * See also: vips_value_set_array_image(). * * Returns: (transfer none): The array address. */ VipsImage ** vips_value_get_array_image( const GValue *value, int *n ) { return( vips_value_get_array( value, n, NULL, NULL ) ); } /** * vips_value_set_array_image: * @value: (out): %GValue to get from * @n: the number of elements * * Set @value to hold an array of images. Pass in the array length in @n. * * See also: vips_array_image_get(). */ void vips_value_set_array_image( GValue *value, int n ) { VipsArea *area; area = vips_area_new_array_object( n ); area->type = VIPS_TYPE_IMAGE; g_value_set_boxed( value, area ); vips_area_unref( area ); } /** * vips_value_get_array_object: (skip) * @value: %GValue to get from * @n: (allow-none): return the number of elements here, optionally * * Return the start of the array of %GObject held by @value. * Optionally return the number of elements in @n. * * See also: vips_area_new_array_object(). * * Returns: (transfer none): The array address. */ GObject ** vips_value_get_array_object( const GValue *value, int *n ) { return( vips_value_get_array( value, n, NULL, NULL ) ); } /** * vips_value_set_array_object: * @value: (out): %GValue to set * @n: the number of elements * * Set @value to hold an array of %GObject. Pass in the array length in @n. * * See also: vips_value_get_array_object(). */ void vips_value_set_array_object( GValue *value, int n ) { VipsArea *area; area = vips_area_new_array_object( n ); g_value_set_boxed( value, area ); vips_area_unref( area ); } /* Make the types we need for basic functioning. Called from vips_init(). */ void vips__meta_init_types( void ) { (void) vips_thing_get_type(); (void) vips_save_string_get_type(); (void) vips_area_get_type(); (void) vips_ref_string_get_type(); (void) vips_blob_get_type(); (void) vips_array_int_get_type(); (void) vips_array_double_get_type(); (void) vips_array_image_get_type(); /* Register transform functions to go from built-in saveable types to * a save string. Transform functions for our own types are set * during type creation. */ g_value_register_transform_func( G_TYPE_INT, VIPS_TYPE_SAVE_STRING, transform_int_save_string ); g_value_register_transform_func( VIPS_TYPE_SAVE_STRING, G_TYPE_INT, transform_save_string_int ); g_value_register_transform_func( G_TYPE_DOUBLE, VIPS_TYPE_SAVE_STRING, transform_double_save_string ); g_value_register_transform_func( VIPS_TYPE_SAVE_STRING, G_TYPE_DOUBLE, transform_save_string_double ); g_value_register_transform_func( G_TYPE_FLOAT, VIPS_TYPE_SAVE_STRING, transform_float_save_string ); g_value_register_transform_func( VIPS_TYPE_SAVE_STRING, G_TYPE_FLOAT, transform_save_string_float ); } libvips-8.9.1/libvips/iofuncs/util.c000066400000000000000000001205331361153320700174450ustar00rootroot00000000000000/* Some basic util functions. */ /* Copyright (C) 1991-2003 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #ifdef HAVE_IO_H #include #endif /*HAVE_IO_H*/ #include #ifdef OS_WIN32 #include #endif /*OS_WIN32*/ #include #include #include /* Temp buffer for snprintf() layer on old systems. */ #define MAX_BUF (100000) /* Try to make an O_BINARY ... sometimes need the leading '_'. */ #ifdef BINARY_OPEN #ifndef O_BINARY #ifdef _O_BINARY #define O_BINARY _O_BINARY #endif /*_O_BINARY*/ #endif /*!O_BINARY*/ #endif /*BINARY_OPEN*/ /* If we have O_BINARY, add it to a mode flags set. */ #ifdef O_BINARY #define BINARYIZE(M) ((M) | O_BINARY) #else /*!O_BINARY*/ #define BINARYIZE(M) (M) #endif /*O_BINARY*/ /* Open mode for image write ... on some systems, have to set BINARY too. */ #define MODE_WRITE BINARYIZE (O_WRONLY | O_CREAT | O_TRUNC) /* Mode for read/write. This is if we might later want to mmaprw () the file. */ #define MODE_READWRITE BINARYIZE (O_RDWR) /* Mode for read only. This is the fallback if READWRITE fails. */ #define MODE_READONLY BINARYIZE (O_RDONLY) /* Test two lists for eqality. */ gboolean vips_slist_equal( GSList *l1, GSList *l2 ) { while( l1 && l2 ) { if( l1->data != l2->data ) return( FALSE ); l1 = l1->next; l2 = l2->next; } if( l1 || l2 ) return( FALSE ); return( TRUE ); } /* Map over an slist. _copy() the list in case the callback changes it. */ void * vips_slist_map2( GSList *list, VipsSListMap2Fn fn, void *a, void *b ) { GSList *copy; GSList *i; void *result; copy = g_slist_copy( list ); result = NULL; for( i = copy; i && !(result = fn( i->data, a, b )); i = i->next ) ; g_slist_free( copy ); return( result ); } /* Map backwards. We _reverse() rather than recurse and unwind to save stack. */ void * vips_slist_map2_rev( GSList *list, VipsSListMap2Fn fn, void *a, void *b ) { GSList *copy; GSList *i; void *result; copy = g_slist_copy( list ); copy = g_slist_reverse( copy ); result = NULL; for( i = copy; i && !(result = fn( i->data, a, b )); i = i->next ) ; g_slist_free( copy ); return( result ); } void * vips_slist_map4( GSList *list, VipsSListMap4Fn fn, void *a, void *b, void *c, void *d ) { GSList *copy; GSList *i; void *result; copy = g_slist_copy( list ); result = NULL; for( i = copy; i && !(result = fn( i->data, a, b, c, d )); i = i->next ) ; g_slist_free( copy ); return( result ); } void * vips_slist_fold2( GSList *list, void *start, VipsSListFold2Fn fn, void *a, void *b ) { void *c; GSList *this, *next; for( c = start, this = list; this; this = next ) { next = this->next; if( !(c = fn( this->data, c, a, b )) ) return( NULL ); } return( c ); } /* Remove all occurences of an item from a list. */ GSList * vips_slist_filter( GSList *list, VipsSListMap2Fn fn, void *a, void *b ) { GSList *tmp; GSList *prev; prev = NULL; tmp = list; while( tmp ) { if( fn( tmp->data, a, b ) ) { GSList *next = tmp->next; if( prev ) prev->next = next; if( list == tmp ) list = next; tmp->next = NULL; g_slist_free( tmp ); tmp = next; } else { prev = tmp; tmp = tmp->next; } } return( list ); } static void vips_slist_free_all_cb( void * thing, void * dummy ) { vips_free( thing ); } /* Free a g_slist of things which need vips_free()ing. */ void vips_slist_free_all( GSList *list ) { g_slist_foreach( list, vips_slist_free_all_cb, NULL ); g_slist_free( list ); } void * vips_map_equal( void *a, void *b ) { if( a == b ) return( a ); return( NULL ); } typedef struct { void *a; void *b; VipsSListMap2Fn fn; void *result; } Pair; static gboolean vips_hash_table_predicate( const char *key, void *value, Pair *pair ) { return( (pair->result = pair->fn( value, pair->a, pair->b )) != NULL ); } /* Like slist map, but for a hash table. */ void * vips_hash_table_map( GHashTable *hash, VipsSListMap2Fn fn, void *a, void *b ) { Pair pair; pair.a = a; pair.b = b; pair.fn = fn; pair.result = NULL; g_hash_table_find( hash, (GHRFunc) vips_hash_table_predicate, &pair ); return( pair.result ); } /* Like strncpy(), but always NULL-terminate, and don't pad with NULLs. * If @n is 100 and @src is more than 99 characters, 99 are copied and the * final byte of @dest is set to '\0'. */ char * vips_strncpy( char *dest, const char *src, int n ) { int i; g_assert( n > 0 ); for( i = 0; i < n - 1; i++ ) if( !(dest[i] = src[i]) ) break; dest[i] = '\0'; return( dest ); } /* Find the rightmost occurrence of needle in haystack. */ char * vips_strrstr( const char *haystack, const char *needle ) { int haystack_len = strlen( haystack ); int needle_len = strlen( needle ); int i; for( i = haystack_len - needle_len; i >= 0; i-- ) if( strncmp( needle, haystack + i, needle_len ) == 0 ) return( (char *) haystack + i ); return( NULL ); } /* Test for string b ends string a. */ gboolean vips_ispostfix( const char *a, const char *b ) { int m = strlen( a ); int n = strlen( b ); if( n > m ) return( FALSE ); return( strcmp( a + m - n, b ) == 0 ); } /* Case-insensitive test for string b ends string a. ASCII strings only. */ gboolean vips_iscasepostfix( const char *a, const char *b ) { int m = strlen( a ); int n = strlen( b ); if( n > m ) return( FALSE ); return( g_ascii_strcasecmp( a + m - n, b ) == 0 ); } /* Test for string a starts string b. a is a known-good string, b may be * random data. */ gboolean vips_isprefix( const char *a, const char *b ) { int i; for( i = 0; a[i] && b[i]; i++ ) if( a[i] != b[i] ) return( FALSE ); /* If there's stuff left in a but b has finished, we must have a * mismatch. */ if( a[i] && !b[i] ) return( FALSE ); return( TRUE ); } /* Like strtok(). Give a string and a list of break characters. Then: * - skip initial break characters * - EOS? return NULL * - skip a series of non-break characters * - write a '\0' over the next break character and return a pointer to the * char after that * * The idea is that this can be used in loops as the iterator. Example: * * char *p = " 1 2 3 "; // mutable * char *q; * int i; * int v[...]; * * for( i = 0; (q = vips_break_token( p, " " )); i++, p = q ) * v[i] = atoi( p ); * * will set * v[0] = 1; * v[1] = 2; * v[2] = 3; * * or with just one pointer, provided your atoi() is OK with trailing chars * and you know there is at least one item there * * char *p = " 1 2 3 "; // mutable * int i; * int v[...]; * * for( i = 0; p; p = vips_break_token( p, " " ) ) * v[i] = atoi( p ); */ char * vips_break_token( char *str, const char *brk ) { char *p; /* Is the string empty? If yes, return NULL immediately. */ if( !str || !*str ) return( NULL ); /* Skip initial break characters. */ p = str + strspn( str, brk ); /* No item? */ if( !*p ) return( NULL ); /* We have a token ... search for the first break character after the * token. */ p += strcspn( p, brk ); /* Is there string left? */ if( *p ) { /* Write in an end-of-string mark and return the start of the * next token. */ *p++ = '\0'; p += strspn( p, brk ); } return( p ); } /* Wrapper over (v)snprintf() ... missing on old systems. */ int vips_vsnprintf( char *str, size_t size, const char *format, va_list ap ) { #ifdef HAVE_VSNPRINTF return( vsnprintf( str, size, format, ap ) ); #else /*HAVE_VSNPRINTF*/ /* Bleurg! */ int n; static char buf[MAX_BUF]; /* We can't return an error code, we may already have trashed the * stack. We must stop immediately. */ if( size > MAX_BUF ) vips_error_exit( "panic: buffer overflow " "(request to write %lu bytes to buffer of %d bytes)", (unsigned long) size, MAX_BUF ); n = vsprintf( buf, format, ap ); if( n > MAX_BUF ) vips_error_exit( "panic: buffer overflow " "(%d bytes written to buffer of %d bytes)", n, MAX_BUF ); vips_strncpy( str, buf, size ); return( n ); #endif /*HAVE_VSNPRINTF*/ } int vips_snprintf( char *str, size_t size, const char *format, ... ) { va_list ap; int n; va_start( ap, format ); n = vips_vsnprintf( str, size, format, ap ); va_end( ap ); return( n ); } /* Does a filename have one of a set of suffixes. Ignore case and any trailing * options. */ int vips_filename_suffix_match( const char *path, const char *suffixes[] ) { char *basename; char *q; int result; const char **p; /* Drop any directory components. */ basename = g_path_get_basename( path ); /* Zap any trailing [] options. */ if( (q = (char *) vips__find_rightmost_brackets( basename )) ) *q = '\0'; result = 0; for( p = suffixes; *p; p++ ) if( vips_iscasepostfix( basename, *p ) ) { result = 1; break; } g_free( basename ); return( result ); } /* Get file length ... 64-bitally. -1 for error. */ gint64 vips_file_length( int fd ) { #ifdef OS_WIN32 struct _stati64 st; if( _fstati64( fd, &st ) == -1 ) { #else /*!OS_WIN32*/ struct stat st; if( fstat( fd, &st ) == -1 ) { #endif /*OS_WIN32*/ vips_error_system( errno, "vips_file_length", "%s", _( "unable to get file stats" ) ); return( -1 ); } return( st.st_size ); } /* Wrap write() up */ int vips__write( int fd, const void *buf, size_t count ) { do { size_t nwritten = write( fd, buf, count ); if( nwritten == (size_t) -1 ) { vips_error_system( errno, "vips__write", "%s", _( "write failed" ) ); return( -1 ); } buf = (void *) ((char *) buf + nwritten); count -= nwritten; } while( count > 0 ); return( 0 ); } #ifdef OS_WIN32 /* Set the create date on a file. On Windows, the create date may be copied * over from an existing file of the same name, unless you reset it. * * See https://blogs.msdn.microsoft.com/oldnewthing/20050715-14/?p=34923 */ void vips__set_create_time( int fd ) { HANDLE handle; SYSTEMTIME st; FILETIME ft; if( (handle = _get_osfhandle( fd )) == INVALID_HANDLE_VALUE ) return; GetSystemTime( &st ); SystemTimeToFileTime( &st, &ft ); SetFileTime( handle, &ft, &ft, &ft ); } #endif /*OS_WIN32*/ /* open() with a utf8 filename, setting errno. */ int vips__open( const char *filename, int flags, ... ) { int fd; mode_t mode; va_list ap; va_start( ap, flags ); mode = va_arg( ap, int ); va_end( ap ); fd = g_open( filename, flags, mode ); #ifdef OS_WIN32 if( mode & O_CREAT ) vips__set_create_time( fd ); #endif return( fd ); } int vips__open_read( const char *filename ) { return( vips__open( filename, MODE_READONLY ) ); } /* fopen() with utf8 filename and mode, setting errno. */ FILE * vips__fopen( const char *filename, const char *mode ) { FILE *fp; fp = g_fopen( filename, mode ); #ifdef OS_WIN32 if( mode[0] == 'w' ) vips__set_create_time( _fileno( fp ) ); #endif return( fp ); } /* Does a filename contain a directory separator? */ static gboolean filename_hasdir( const char *filename ) { char *dirname; gboolean hasdir; dirname = g_path_get_dirname( filename ); hasdir = (strcmp( dirname, "." ) != 0); g_free( dirname ); return( hasdir ); } /* Open a file. We take an optional fallback dir as well and will try opening * there if opening directly fails. * * This is used for things like finding ICC profiles. We try to open the file * directly first, and if that fails and the filename does not contain a * directory separator, we try looking in the fallback dir. */ FILE * vips__file_open_read( const char *filename, const char *fallback_dir, gboolean text_mode ) { char *mode; FILE *fp; #ifdef BINARY_OPEN if( text_mode ) mode = "r"; else mode = "rb"; #else /*BINARY_OPEN*/ mode = "r"; #endif /*BINARY_OPEN*/ if( (fp = vips__fopen( filename, mode )) ) return( fp ); if( fallback_dir && !filename_hasdir( filename ) ) { char *path; path = g_build_filename( fallback_dir, filename, NULL ); fp = vips__fopen( path, mode ); g_free( path ); if( fp ) return( fp ); } vips_error_system( errno, "vips__file_open_read", _( "unable to open file \"%s\" for reading" ), filename ); return( NULL ); } FILE * vips__file_open_write( const char *filename, gboolean text_mode ) { char *mode; FILE *fp; #ifdef BINARY_OPEN if( text_mode ) mode = "w"; else mode = "wb"; #else /*BINARY_OPEN*/ mode = "w"; #endif /*BINARY_OPEN*/ if( !(fp = vips__fopen( filename, mode )) ) { vips_error_system( errno, "vips__file_open_write", _( "unable to open file \"%s\" for writing" ), filename ); return( NULL ); } return( fp ); } /* Load up a file as a string. */ char * vips__file_read( FILE *fp, const char *filename, size_t *length_out ) { gint64 len; size_t read; char *str; len = vips_file_length( fileno( fp ) ); if( len > 1024 * 1024 * 1024 ) { /* Over a gb? Seems crazy! */ vips_error( "vips__file_read", _( "\"%s\" too long" ), filename ); return( NULL ); } if( len == -1 ) { int size; /* Can't get length: read in chunks and realloc() to end of * file. */ str = NULL; len = 0; size = 0; do { char *str2; /* Again, a 1gb sanity limit. */ size += 1024; if( size > 1024 * 1024 * 1024 || !(str2 = realloc( str, size )) ) { free( str ); vips_error( "vips__file_read", "%s", _( "out of memory" ) ); return( NULL ); } str = str2; /* -1 to allow space for an extra NULL we add later. */ read = fread( str + len, sizeof( char ), (size - len - 1) / sizeof( char ), fp ); len += read; } while( !feof( fp ) ); #ifdef DEBUG printf( "read %ld bytes from unseekable stream\n", len ); #endif /*DEBUG*/ } else { /* Allocate memory and fill. */ if( !(str = vips_malloc( NULL, len + 1 )) ) return( NULL ); rewind( fp ); read = fread( str, sizeof( char ), (size_t) len, fp ); if( read != (size_t) len ) { vips_free( str ); vips_error( "vips__file_read", _( "error reading from file \"%s\"" ), filename ); return( NULL ); } } str[len] = '\0'; if( length_out ) *length_out = len; return( str ); } /* Load from a filename as a string. Used for things like reading in ICC * profiles, ie. binary objects. */ char * vips__file_read_name( const char *filename, const char *fallback_dir, size_t *length_out ) { FILE *fp; char *buffer; if( !(fp = vips__file_open_read( filename, fallback_dir, FALSE )) ) return( NULL ); if( !(buffer = vips__file_read( fp, filename, length_out )) ) { fclose( fp ); return( NULL ); } fclose( fp ); return( buffer ); } /* Like fwrite(), but returns non-zero on error and sets error message. */ int vips__file_write( void *data, size_t size, size_t nmemb, FILE *stream ) { size_t n; if( !data ) return( 0 ); if( (n = fwrite( data, size, nmemb, stream )) != nmemb ) { vips_error_system( errno, "vips__file_write", _( "write error (%zd out of %zd blocks written)" ), n, nmemb ); return( -1 ); } return( 0 ); } /* Read a few bytes from the start of a file. This is used for sniffing file * types, so we must read binary. * * Return the number of bytes actually read (the file might be shorter than * len), or 0 for error. */ guint64 vips__get_bytes( const char *filename, unsigned char buf[], guint64 len ) { int fd; guint64 bytes_read; /* File may not even exist (for tmp images for example!) * so no hasty messages. And the file might be truncated, so no error * on read either. */ if( (fd = vips__open_read( filename )) == -1 ) return( 0 ); bytes_read = read( fd, buf, len ); close( fd ); return( bytes_read ); } /* We try to support stupid DOS files too. These have \r\n (13, 10) as line * separators. Strategy: an fgetc() that swaps \r\n for \n. * * On Windows, stdio will automatically swap \r\n for \n, but on Linux we have * to do this by hand. */ int vips__fgetc( FILE *fp ) { int ch; ch = fgetc( fp ); if( ch == '\r' ) { ch = fgetc( fp ); if( ch != '\n' ) { ungetc( ch, fp ); ch = '\r'; } } return( ch ); } /* Alloc/free a GValue. */ static GValue * vips__gvalue_new( GType type ) { GValue *value; value = g_new0( GValue, 1 ); g_value_init( value, type ); return( value ); } static GValue * vips__gvalue_copy( GValue *value ) { GValue *value_copy; value_copy = vips__gvalue_new( G_VALUE_TYPE( value ) ); g_value_copy( value, value_copy ); return( value_copy ); } static void vips__gvalue_free( GValue *value ) { g_value_unset( value ); g_free( value ); } GValue * vips__gvalue_ref_string_new( const char *text ) { GValue *value; value = vips__gvalue_new( VIPS_TYPE_REF_STRING ); vips_value_set_ref_string( value, text ); return( value ); } /* Free a GSList of GValue. */ void vips__gslist_gvalue_free( GSList *list ) { g_slist_foreach( list, (GFunc) vips__gvalue_free, NULL ); g_slist_free( list ); } /* Copy a GSList of GValue. */ GSList * vips__gslist_gvalue_copy( const GSList *list ) { GSList *copy; const GSList *p; copy = NULL; for( p = list; p; p = p->next ) copy = g_slist_prepend( copy, vips__gvalue_copy( (GValue *) p->data ) ); copy = g_slist_reverse( copy ); return( copy ); } /* Merge two GSList of GValue ... append to a all elements in b which are not * in a. Return the new value of a. Works for any vips refcounted type * (string, blob, etc.). */ GSList * vips__gslist_gvalue_merge( GSList *a, const GSList *b ) { const GSList *i, *j; GSList *tail; tail = NULL; for( i = b; i; i = i->next ) { GValue *value = (GValue *) i->data; g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_REF_STRING ); for( j = a; j; j = j->next ) { GValue *value2 = (GValue *) j->data; g_assert( G_VALUE_TYPE( value2 ) == VIPS_TYPE_REF_STRING ); /* Just do a pointer compare ... good enough 99.9% of * the time. */ if( vips_value_get_ref_string( value, NULL ) == vips_value_get_ref_string( value2, NULL ) ) break; } if( !j ) tail = g_slist_prepend( tail, vips__gvalue_copy( value ) ); } a = g_slist_concat( a, g_slist_reverse( tail ) ); return( a ); } /* Make a char * from GSList of GValue. Each GValue should be a ref_string. * free the result. Empty list -> "", not NULL. Join strings with '\n'. */ char * vips__gslist_gvalue_get( const GSList *list ) { const GSList *p; size_t length; char *all; char *q; /* Need to estimate length first. */ length = 0; for( p = list; p; p = p->next ) { GValue *value = (GValue *) p->data; size_t l2; g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_REF_STRING ); /* +1 for the newline we will add for each item. */ (void) vips_value_get_ref_string( value, &l2 ); length += l2 + 1; } if( length == 0 ) return( NULL ); /* More than 10MB of history? Madness! */ g_assert( length < 10 * 1024 * 1024 ); /* +1 for '\0'. */ if( !(all = vips_malloc( NULL, length + 1 )) ) return( NULL ); q = all; for( p = list; p; p = p->next ) { GValue *value = (GValue *) p->data; size_t l2; strcpy( q, vips_value_get_ref_string( value, &l2 ) ); q += l2; strcpy( q, "\n" ); q += 1; } g_assert( (size_t) (q - all) == length ); return( all ); } gint64 vips__seek_no_error( int fd, gint64 pos, int whence ) { gint64 new_pos; #ifdef OS_WIN32 new_pos = _lseeki64( fd, pos, whence ); #else /*!OS_WIN32*/ new_pos = lseek( fd, pos, whence ); #endif /*OS_WIN32*/ return( new_pos ); } /* Need our own seek(), since lseek() on win32 can't do long files. */ gint64 vips__seek( int fd, gint64 pos, int whence ) { gint64 new_pos; if( (new_pos = vips__seek_no_error( fd, pos, whence )) == -1 ) { vips_error_system( errno, "vips__seek", "%s", _( "unable to seek" ) ); return( -1 ); } return( new_pos ); } /* Need our own ftruncate(), since ftruncate() on win32 can't do long files. DANGER ... this moves the file pointer to the end of file on win32, but not on *nix; don't make any assumptions about the file pointer position after calling this */ int vips__ftruncate( int fd, gint64 pos ) { #ifdef OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( fd ); if( vips__seek( fd, pos, SEEK_SET ) == -1 ) return( -1 ); if( !SetEndOfFile( hFile ) ) { vips_error_system( GetLastError(), "vips__ftruncate", "%s", _( "unable to truncate" ) ); return( -1 ); } } #else /*!OS_WIN32*/ if( ftruncate( fd, pos ) ) { vips_error_system( errno, "vips__ftruncate", "%s", _( "unable to truncate" ) ); return( -1 ); } #endif /*OS_WIN32*/ return( 0 ); } /* TRUE if file exists. */ gboolean vips_existsf( const char *name, ... ) { va_list ap; char *path; int result; va_start( ap, name ); path = g_strdup_vprintf( name, ap ); va_end( ap ); result = g_access( path, R_OK ); g_free( path ); /* access() can fail for various reasons, especially under things * like selinux. Only return FALSE if we are certain the file does not * exist. */ return( result == 0 || errno != ENOENT ); } #ifdef OS_WIN32 #ifndef popen #define popen(b,m) _popen(b,m) #endif #ifndef pclose #define pclose(f) _pclose(f) #endif #endif /*OS_WIN32*/ /* Do popen(), with printf-style args. */ FILE * vips_popenf( const char *fmt, const char *mode, ... ) { va_list args; char buf[VIPS_PATH_MAX]; FILE *fp; va_start( args, mode ); (void) vips_vsnprintf( buf, VIPS_PATH_MAX, fmt, args ); va_end( args ); #ifdef DEBUG printf( "vips_popenf: running: %s\n", buf ); #endif /*DEBUG*/ if( !(fp = popen( buf, mode )) ) { vips_error( "popenf", "%s", strerror( errno ) ); return( NULL ); } return( fp ); } /* Make a directory. */ int vips_mkdirf( const char *name, ... ) { va_list ap; char *path; va_start( ap, name ); path = g_strdup_vprintf( name, ap ); va_end( ap ); if( g_mkdir( path, 0755 ) ) { vips_error( "mkdirf", _( "unable to create directory \"%s\", %s" ), path, strerror( errno ) ); g_free( path ); return( -1 ); } g_free( path ); return( 0 ); } /* Remove a directory. */ int vips_rmdirf( const char *name, ... ) { va_list ap; char *path; va_start( ap, name ); path = g_strdup_vprintf( name, ap ); va_end( ap ); if( g_rmdir( path ) ) { vips_error( "rmdir", _( "unable to remove directory \"%s\", %s" ), path, strerror( errno ) ); g_free( path ); return( -1 ); } g_free( path ); return( 0 ); } /* Rename a file. */ int vips_rename( const char *old_name, const char *new_name ) { if( g_rename( old_name, new_name ) ) { vips_error( "rename", _( "unable to rename file \"%s\" as \"%s\", %s" ), old_name, new_name, strerror( errno ) ); return( -1 ); } return( 0 ); } /* Chop off any trailing whitespace. */ void vips__chomp( char *str ) { char *p; for( p = str + strlen( str ); p > str && isspace( p[-1] ); p-- ) p[-1] = '\0'; } /* Break a command-line argument into tokens separated by whitespace. * * Strings can't be adjacent, so "hello world" (without quotes) is a single * string. Strings are written (with \" escaped) into @string. If the string * is larger than @size, it is silently null-terminated and truncated. * * Return NULL for end of tokens. */ const char * vips__token_get( const char *p, VipsToken *token, char *string, int size ) { const char *q; int ch; int n; int i; /* Parse this token with p. */ if( !p ) return( NULL ); /* Skip initial whitespace. */ p += strspn( p, " \t\n\r" ); if( !p[0] ) return( NULL ); switch( (ch = p[0]) ) { case '[': *token = VIPS_TOKEN_LEFT; p += 1; break; case ']': *token = VIPS_TOKEN_RIGHT; p += 1; break; case '=': *token = VIPS_TOKEN_EQUALS; p += 1; break; case ',': *token = VIPS_TOKEN_COMMA; p += 1; break; case '"': case '\'': /* Parse a quoted string. Copy up to ", interpret any \", * error if no closing ". */ *token = VIPS_TOKEN_STRING; do { /* Number of characters until the next quote * character or end of string. */ if( (q = strchr( p + 1, ch )) ) n = q - p + 1; else n = strlen( p + 1 ); /* How much can we copy to the buffer? */ i = VIPS_MIN( n, size ); vips_strncpy( string, p + 1, i ); /* We might have stopped at an escaped quote. If the * string was not truncated, swap the preceding * backslash for a quote. */ if( p[n + 1] == ch && p[n] == '\\' && i == n ) string[i - 1] = ch; string += i; size -= i; p += n + 1; } while( p[0] && p[-1] == '\\' ); p += 1; break; default: /* It's an unquoted string: read up to the next non-string * character. We don't allow two strings next to each other, * so the next break must be brackets, equals, comma. */ *token = VIPS_TOKEN_STRING; q = p + strcspn( p, "[]=," ); i = VIPS_MIN( q - p, size ); vips_strncpy( string, p, i + 1 ); p = q; /* We remove leading whitespace, so we trim trailing * whitespace from unquoted strings too. Only if the string * hasn't been truncated. */ if( i != size ) while( i > 0 && isspace( string[i - 1] ) ) { string[i - 1] = '\0'; i--; } break; } return( p ); } /* We expect a token. */ const char * vips__token_must( const char *p, VipsToken *token, char *string, int size ) { if( !(p = vips__token_get( p, token, string, size )) ) { vips_error( "get_token", "%s", _( "unexpected end of string" ) ); return( NULL ); } return( p ); } /* We expect a certain token. */ const char * vips__token_need( const char *p, VipsToken need_token, char *string, int size ) { VipsToken token; if( !(p = vips__token_must( p, &token, string, size )) ) return( NULL ); if( token != need_token ) { vips_error( "get_token", _( "expected %s, saw %s" ), vips_enum_nick( VIPS_TYPE_TOKEN, need_token ), vips_enum_nick( VIPS_TYPE_TOKEN, token ) ); return( NULL ); } return( p ); } /* Fetch a token. If it's a string token terminated by a '[', fetch up to the * matching ']' as well, for example ".jpg[Q=90]". * * Return NULL for end of tokens. */ const char * vips__token_segment( const char *p, VipsToken *token, char *string, int size ) { const char *q; if( !(q = vips__token_must( p, token, string, size )) ) return( NULL ); /* If we stopped on [, read up to the matching ]. */ if( *token == VIPS_TOKEN_STRING && q[0] == '[' ) { VipsToken sub_token; char sub_string[VIPS_PATH_MAX]; int depth; int i; depth = 0; do { if( !(q = vips__token_must( q, &sub_token, sub_string, VIPS_PATH_MAX )) ) return( NULL ); switch( sub_token ) { case VIPS_TOKEN_LEFT: depth += 1; break; case VIPS_TOKEN_RIGHT: depth -= 1; break; default: break; } } while( !(sub_token == VIPS_TOKEN_RIGHT && depth == 0) ); i = VIPS_MIN( q - p, size ); vips_strncpy( string, p, i + 1 ); } return( q ); } /* We expect a certain segment. */ const char * vips__token_segment_need( const char *p, VipsToken need_token, char *string, int size ) { VipsToken token; if( !(p = vips__token_segment( p, &token, string, size )) ) return( NULL ); if( token != need_token ) { vips_error( "get_token", _( "expected %s, saw %s" ), vips_enum_nick( VIPS_TYPE_TOKEN, need_token ), vips_enum_nick( VIPS_TYPE_TOKEN, token ) ); return( NULL ); } return( p ); } /* Maximum number of tokens we allow in a filename. Surely this will be * plenty. */ #define MAX_TOKENS (1000) /* Find the start of the right-most pair of brackets in the string. * * A string can be of the form: * * "hello world! (no really).tif[fred=12]" * * we need to be able to find the fred=12 at the end. * * We lex the whole string noting the position of each token, then, if the * final token is a right-bracket, search left for the matching left-bracket. * * This can get confused if the lefts are hidden inside another token :-( But * a fixing that would require us to write a separate right-to-left lexer, * argh. */ const char * vips__find_rightmost_brackets( const char *p ) { const char *start[MAX_TOKENS + 1]; VipsToken tokens[MAX_TOKENS]; char str[VIPS_PATH_MAX]; int n, i; int nest; start[0] = p; for( n = 0; n < MAX_TOKENS && (p = vips__token_get( start[n], &tokens[n], str, VIPS_PATH_MAX )); n++, start[n] = p ) ; /* Too many tokens? */ if( n == MAX_TOKENS ) return( NULL ); /* No rightmost close bracket? */ if( n == 0 || tokens[n - 1] != VIPS_TOKEN_RIGHT ) return( NULL ); nest = 0; for( i = n - 1; i >= 0; i-- ) { if( tokens[i] == VIPS_TOKEN_RIGHT ) nest += 1; else if( tokens[i] == VIPS_TOKEN_LEFT ) nest -= 1; if( nest == 0 ) break; } /* No matching left bracket? */ if( nest != 0 ) return( NULL ); /* This should be the matching left. */ return( start[i] ); } /* Split a vips8-style filename + options. * * filename and option_string must be VIPS_PATH_MAX in length. */ void vips__filename_split8( const char *name, char *filename, char *option_string ) { char *p; vips_strncpy( filename, name, VIPS_PATH_MAX ); if( (p = (char *) vips__find_rightmost_brackets( filename )) ) { vips_strncpy( option_string, p, VIPS_PATH_MAX ); *p = '\0'; } else vips_strncpy( option_string, "", VIPS_PATH_MAX ); } /* True if an int is a power of two ... 1, 2, 4, 8, 16, 32, etc. Do with just * integer arithmetic for portability. A previous Nicos version using doubles * and log/log failed on x86 with rounding problems. Return 0 for not * power of two, otherwise return the position of the set bit (numbering with * bit 1 as the lsb). */ int vips_ispoweroftwo( int p ) { int i, n; /* Count set bits. Could use a LUT, I guess. */ for( i = 0, n = 0; p; i++, p >>= 1 ) if( p & 1 ) n++; /* Should be just one set bit. */ if( n == 1 ) /* Return position of bit. */ return( i ); else return( 0 ); } /* Test this processor for endianness. True for SPARC order. */ int vips_amiMSBfirst( void ) { int test; unsigned char *p = (unsigned char *) &test; test = 0; p[0] = 255; if( test == 255 ) return( 0 ); else return( 1 ); } /* Return the tmp dir. On Windows, GetTempPath() will also check the values of * TMP, TEMP and USERPROFILE. */ static const char * vips__temp_dir( void ) { const char *tmpd; if( !(tmpd = g_getenv( "TMPDIR" )) ) { #ifdef OS_WIN32 static gboolean done = FALSE; static char buf[256]; if( !done ) { if( !GetTempPath( 256, buf ) ) strcpy( buf, "C:\\temp" ); } tmpd = buf; #else /*!OS_WIN32*/ tmpd = "/tmp"; #endif /*!OS_WIN32*/ } return( tmpd ); } /* Make a temporary file name. The format parameter is something like "%s.jpg" * and will be expanded to something like "/tmp/vips-12-34587.jpg". * * You need to free the result. */ char * vips__temp_name( const char *format ) { static int serial = 0; char file[FILENAME_MAX]; char file2[FILENAME_MAX]; char *name; vips_snprintf( file, FILENAME_MAX, "vips-%d-%u", serial++, g_random_int() ); vips_snprintf( file2, FILENAME_MAX, format, file ); name = g_build_filename( vips__temp_dir(), file2, NULL ); /* We could use something like g_mkstemp() to guarantee uniqueness * across processes, but the extra FS calls can be difficult for * selinux. * * g_random_int() should be safe enough -- it's seeded from time(), so * it ought not to collide often -- and on linux at least we never * actually use these filenames in the filesystem anyway. */ return( name ); } /* Strip off any of a set of old suffixes (eg. [".v", ".jpg"]), add a single * new suffix (eg. ".tif"). */ void vips__change_suffix( const char *name, char *out, int mx, const char *new, const char **olds, int nolds ) { char *p; int i; int len; /* Copy start string. */ vips_strncpy( out, name, mx ); /* Drop all matching suffixes. */ while( (p = strrchr( out, '.' )) ) { /* Found suffix - test against list of alternatives. Ignore * case. */ for( i = 0; i < nolds; i++ ) if( g_ascii_strcasecmp( p, olds[i] ) == 0 ) { *p = '\0'; break; } /* Found match? If not, break from loop. */ if( *p ) break; } /* Add new suffix. */ len = strlen( out ); vips_strncpy( out + len, new, mx - len ); } typedef struct { const char unit; int multiplier; } Unit; guint64 vips__parse_size( const char *size_string ) { static Unit units[] = { { 'k', 1024 }, { 'm', 1024 * 1024 }, { 'g', 1024 * 1024 * 1024 } }; guint64 size; int n; int i; char *unit; /* An easy way to alloc a buffer large enough. */ unit = g_strdup( size_string ); n = sscanf( size_string, "%d %s", &i, unit ); size = i; if( n > 1 ) { int j; for( j = 0; j < VIPS_NUMBER( units ); j++ ) if( tolower( unit[0] ) == units[j].unit ) { size *= units[j].multiplier; break; } } g_free( unit ); VIPS_DEBUG_MSG( "parse_size: parsed \"%s\" as %" G_GUINT64_FORMAT "\n", size_string, size ); return( size ); } /* Look up the const char * for an enum value. */ const char * vips_enum_string( GType enm, int v ) { GEnumValue *value; if( !(value = g_enum_get_value( g_type_class_ref( enm ), v )) ) return( "(null)" ); return( value->value_name ); } const char * vips_enum_nick( GType enm, int v ) { GEnumValue *value; if( !(value = g_enum_get_value( g_type_class_ref( enm ), v )) ) return( "(null)" ); return( value->value_nick ); } int vips_enum_from_nick( const char *domain, GType type, const char *nick ) { GTypeClass *class; GEnumClass *genum; GEnumValue *enum_value; int i; char str[1000]; VipsBuf buf = VIPS_BUF_STATIC( str ); if( !(class = g_type_class_ref( type )) ) { vips_error( domain, "%s", _( "no such enum type" ) ); return( -1 ); } genum = G_ENUM_CLASS( class ); if( (enum_value = g_enum_get_value_by_name( genum, nick )) ) return( enum_value->value ); if( (enum_value = g_enum_get_value_by_nick( genum, nick )) ) return( enum_value->value ); /* -1 since we always have a "last" member. */ for( i = 0; i < genum->n_values - 1; i++ ) { if( i > 0 ) vips_buf_appends( &buf, ", " ); vips_buf_appends( &buf, genum->values[i].value_nick ); } vips_error( domain, _( "enum '%s' has no member '%s', " "should be one of: %s" ), g_type_name( type ), nick, vips_buf_all( &buf ) ); return( -1 ); } int vips_flags_from_nick( const char *domain, GType type, const char *nick ) { GTypeClass *class; GFlagsClass *gflags; GFlagsValue *flags_value; int i; char str[1000]; VipsBuf buf = VIPS_BUF_STATIC( str ); if( !(class = g_type_class_ref( type )) ) { vips_error( domain, "%s", _( "no such flag type" ) ); return( -1 ); } gflags = G_FLAGS_CLASS( class ); if( (flags_value = g_flags_get_value_by_name( gflags, nick )) ) return( flags_value->value ); if( (flags_value = g_flags_get_value_by_nick( gflags, nick )) ) return( flags_value->value ); for( i = 0; i < gflags->n_values; i++ ) { if( i > 0 ) vips_buf_appends( &buf, ", " ); vips_buf_appends( &buf, gflags->values[i].value_nick ); } vips_error( domain, _( "flags '%s' has no member '%s', " "should be one of: %s" ), g_type_name( type ), nick, vips_buf_all( &buf ) ); return( -1 ); } /* Scan @buf for the first "%ns" (eg. "%12s") and substitute the * lowest-numbered one for @sub. @buf is @len bytes in size. * * If there are no %ns, use the first %s. */ int vips__substitute( char *buf, size_t len, char *sub ) { size_t buflen = strlen( buf ); size_t sublen = strlen( sub ); int lowest_n; char *sub_start; char *p; char *sub_end; size_t before_len, marker_len, after_len, final_len; g_assert( buflen < len ); lowest_n = -1; sub_start = NULL; sub_end = NULL; for( p = buf; (p = strchr( p, '%' )); p++ ) if( isdigit( p[1] ) ) { char *q; for( q = p + 1; isdigit( *q ); q++ ) ; if( q[0] == 's' ) { int n; n = atoi( p + 1 ); if( lowest_n == -1 || n < lowest_n ) { lowest_n = n; sub_start = p; sub_end = q + 1; } } } if( !sub_start ) for( p = buf; (p = strchr( p, '%' )); p++ ) if( p[1] == 's' ) { sub_start = p; sub_end = p + 2; break; } if( !sub_start ) return( -1 ); before_len = sub_start - buf; marker_len = sub_end - sub_start; after_len = buflen - (before_len + marker_len); final_len = before_len + sublen + after_len + 1; if( final_len > len ) return( -1 ); memmove( buf + before_len + sublen, buf + before_len + marker_len, after_len + 1 ); memmove( buf + before_len, sub, sublen ); return( 0 ); } /* Absoluteize a path. Free the result with g_free(). */ char * vips_realpath( const char *path ) { char *real; /* It'd be nice to use realpath here, but sadly that won't work on * linux systems with grsec, since it works by opening /proc/self/fd. */ if( !g_path_is_absolute( path ) ) { char *cwd; cwd = g_get_current_dir(); real = g_build_filename( cwd, path, NULL ); g_free( cwd ); } else real = g_strdup( path ); return( real ); } /* A very simple random number generator. See: * http://isthe.com/chongo/tech/comp/fnv/#FNV-source */ guint32 vips__random( guint32 seed ) { return( 1103515245u * seed + 12345 ); } guint32 vips__random_add( guint32 seed, int value ) { seed = ((2166136261u ^ seed) * 16777619u) ^ value; return( vips__random( seed ) ); } static void * vips_icc_dir_once( void *null ) { #ifdef OS_WIN32 /* From glib get_windows_directory_root() */ wchar_t wwindowsdir[MAX_PATH]; if( GetWindowsDirectoryW( wwindowsdir, G_N_ELEMENTS( wwindowsdir ) ) ) { /* Usually X:\Windows, but in terminal server environments * might be an UNC path, AFAIK. */ char *windowsdir; if( (windowsdir = g_utf16_to_utf8( wwindowsdir, -1, NULL, NULL, NULL)) ) { gchar *full_path; full_path = g_build_filename( windowsdir, "system32", "spool", "drivers", "color", NULL ); g_free( windowsdir ); return( (void *) full_path ); } } #endif return( (void *) VIPS_ICC_DIR ); } const char * vips__icc_dir( void ) { static GOnce once = G_ONCE_INIT; return( (const char *) g_once( &once, (GThreadFunc) vips_icc_dir_once, NULL ) ); } #ifdef OS_WIN32 static HMODULE vips__dll = NULL; #ifdef DLL_EXPORT BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) { if( fdwReason == DLL_PROCESS_ATTACH ) vips__dll = hinstDLL; return( TRUE ); } #endif #endif static void * vips__windows_prefix_once( void *null ) { char *prefix; #ifdef OS_WIN32 prefix = g_win32_get_package_installation_directory_of_module( vips__dll ); #else prefix = (char *) g_getenv( "VIPSHOME" ); #endif return( (void *) prefix ); } const char * vips__windows_prefix( void ) { static GOnce once = G_ONCE_INIT; return( (const char *) g_once( &once, (GThreadFunc) vips__windows_prefix_once, NULL ) ); } char * vips__get_iso8601( void ) { char *date; #ifdef HAVE_DATE_TIME_FORMAT_ISO8601 { GDateTime *now; now = g_date_time_new_now_local(); date = g_date_time_format_iso8601( now ); g_date_time_unref( now ); } #else /*!HAVE_DATE_TIME_FORMAT_ISO8601*/ { GTimeVal now; g_get_current_time( &now ); date = g_time_val_to_iso8601( &now ); } #endif /*HAVE_DATE_TIME_FORMAT_ISO8601*/ return( date ); } libvips-8.9.1/libvips/iofuncs/vector.c000066400000000000000000000334601361153320700177740ustar00rootroot00000000000000/* helper functions for Orc * * 29/10/10 * - from morph hacking */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* TODO - would setting params by index rather than name be any quicker? */ /* Verbose messages from Orc (or use ORC_DEBUG=99 on the command-line). #define DEBUG_ORC */ /* #define DEBUG */ /* Trace all orc calls, handy for debugging. #define DEBUG_TRACE */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* Cleared by the command-line --vips-novector switch and the IM_NOVECTOR env * var. */ gboolean vips__vector_enabled = TRUE; void vips_vector_error( VipsVector *vector ) { #ifdef HAVE_ORC #ifdef HAVE_ORC_PROGRAM_GET_ERROR if( vector->program ) g_warning( "orc error: %s", orc_program_get_error( vector->program ) ); #endif /*HAVE_ORC_PROGRAM_GET_ERROR*/ #endif /*HAVE_ORC*/ } void vips_vector_init( void ) { #ifdef HAVE_ORC #ifdef DEBUG_TRACE printf( "orc_init();\n" ); #endif /*DEBUG_TRACE*/ orc_init(); #ifdef DEBUG_ORC /* You can also do ORC_DEBUG=99 at the command-line. */ #ifdef DEBUG_TRACE printf( "orc_debug_set_level( 99 );\n" ); #endif /*DEBUG_TRACE*/ orc_debug_set_level( 99 ); #endif /*DEBUG_ORC*/ /* Look for the environment variable IM_NOVECTOR and use that to turn * off as well. */ if( g_getenv( "VIPS_NOVECTOR" ) || g_getenv( "IM_NOVECTOR" ) ) vips__vector_enabled = FALSE; #endif /*HAVE_ORC*/ } gboolean vips_vector_isenabled( void ) { #ifdef HAVE_ORC return( vips__vector_enabled ); #else /*!HAVE_ORC*/ return( FALSE ); #endif /*HAVE_ORC*/ } void vips_vector_set_enabled( gboolean enabled ) { vips__vector_enabled = enabled; } void vips_vector_free( VipsVector *vector ) { #ifdef HAVE_ORC /* orc-0.4.19 will crash if you free programs. Update your orc, or * comment out this line. * * See https://bugzilla.gnome.org/show_bug.cgi?id=731227 * * orc does not set any version variables so we can't disable this * free automatically. */ #ifdef DEBUG_TRACE printf( "orc_program_free( %s );\n", vector->unique_name ); printf( "%s = NULL;\n", vector->unique_name ); #endif /*DEBUG_TRACE*/ VIPS_FREEF( orc_program_free, vector->program ); #endif /*HAVE_ORC*/ VIPS_FREE( vector->unique_name ); VIPS_FREE( vector ); } VipsVector * vips_vector_new( const char *name, int dsize ) { static int vector_number = 0; VipsVector *vector; int i; if( !(vector = VIPS_NEW( NULL, VipsVector )) ) return( NULL ); vector->name = name; vector->unique_name = g_strdup_printf( "p[%d]", vector_number++ ); vector->n_temp = 0; vector->n_scanline = 0; vector->n_source = 0; vector->n_destination = 0; vector->n_constant = 0; vector->n_parameter = 0; vector->n_instruction = 0; for( i = 0; i < VIPS_VECTOR_SOURCE_MAX; i++ ) { vector->s[i] = -1; vector->sl[i] = -1; } vector->d1 = -1; vector->compiled = FALSE; #ifdef HAVE_ORC vector->program = orc_program_new(); #ifdef DEBUG_TRACE printf( "%s = orc_program_new();\n", vector->unique_name ); #endif /*DEBUG_TRACE*/ #endif /*HAVE_ORC*/ /* We always make d1, our callers make either a single point source, or * for area ops, a set of scanlines. * * Don't check error return. orc uses 0 to mean error, but the first * var you create will have id 0 :-( The first var is unlikely to fail * anyway. */ vector->d1 = vips_vector_destination( vector, "d1", dsize ); return( vector ); } void vips_vector_asm2( VipsVector *vector, const char *op, const char *a, const char *b ) { vector->n_instruction += 1; #ifdef DEBUG printf( " %s %s %s\n", op, a, b ); #endif /*DEBUG*/ #ifdef HAVE_ORC #ifdef DEBUG_TRACE printf( "orc_program_append_ds_str( %s, \"%s\", \"%s\", \"%s\" );\n", vector->unique_name, op, a, b ); #endif /*DEBUG_TRACE*/ orc_program_append_ds_str( vector->program, op, a, b ); #endif /*HAVE_ORC*/ } void vips_vector_asm3( VipsVector *vector, const char *op, const char *a, const char *b, const char *c ) { vector->n_instruction += 1; #ifdef DEBUG printf( " %s %s %s %s\n", op, a, b, c ); #endif /*DEBUG*/ #ifdef HAVE_ORC #ifdef DEBUG_TRACE printf( "orc_program_append_str( %s, \"%s\", " "\"%s\", \"%s\", \"%s\" );\n", vector->unique_name, op, a, b, c ); #endif /*DEBUG_TRACE*/ orc_program_append_str( vector->program, op, a, b, c ); #endif /*HAVE_ORC*/ } void vips_vector_constant( VipsVector *vector, char *name, int value, int size ) { #ifdef HAVE_ORC char *sname; if( size == 1 ) sname = "b"; else if( size == 2 ) sname = "w"; else if( size == 4 ) sname = "l"; else { printf( "vips_vector_constant: bad constant size\n" ); /* Not really correct, heh. */ sname = "x"; } if( value > 0 ) vips_snprintf( name, 256, "c%d%s", value, sname ); else vips_snprintf( name, 256, "cm%d%s", -value, sname ); if( orc_program_find_var_by_name( vector->program, name ) == -1 ) { #ifdef DEBUG_TRACE printf( "orc_program_add_constant( %s, %d, %d, \"%s\" );\n", vector->unique_name, size, value, name ); #endif /*DEBUG_TRACE*/ if( !orc_program_add_constant( vector->program, size, value, name ) ) vips_vector_error( vector ); vector->n_constant += 1; } #endif /*HAVE_ORC*/ } void vips_vector_source_scanline( VipsVector *vector, char *name, int line, int size ) { #ifdef HAVE_ORC vips_snprintf( name, 256, "sl%d", line ); if( orc_program_find_var_by_name( vector->program, name ) == -1 ) { int var; if( !(var = orc_program_add_source( vector->program, size, name )) ) vips_vector_error( vector ); #ifdef DEBUG_TRACE printf( "orc_program_add_source( %s, %d, \"%s\" );\n", vector->unique_name, size, name ); #endif /*DEBUG_TRACE*/ vector->sl[vector->n_scanline] = var; vector->line[vector->n_scanline] = line; vector->n_scanline += 1; } #endif /*HAVE_ORC*/ } int vips_vector_source_name( VipsVector *vector, const char *name, int size ) { int var; #ifdef HAVE_ORC g_assert( orc_program_find_var_by_name( vector->program, name ) == -1 ); if( !(var = orc_program_add_source( vector->program, size, name )) ) vips_vector_error( vector ); vector->s[vector->n_source] = var; #ifdef DEBUG_TRACE printf( "orc_program_add_source( %s, %d, \"%s\" );\n", vector->unique_name, size, name ); #endif /*DEBUG_TRACE*/ vector->n_source += 1; #else /*!HAVE_ORC*/ var = -1; #endif /*HAVE_ORC*/ return( var ); } void vips_vector_temporary( VipsVector *vector, const char *name, int size ) { #ifdef HAVE_ORC g_assert( orc_program_find_var_by_name( vector->program, name ) == -1 ); if( !orc_program_add_temporary( vector->program, size, name ) ) vips_vector_error( vector ); #ifdef DEBUG_TRACE printf( "orc_program_add_temporary( %s, %d, \"%s\" );\n", vector->unique_name, size, name ); #endif /*DEBUG_TRACE*/ vector->n_temp += 1; #endif /*HAVE_ORC*/ } int vips_vector_parameter( VipsVector *vector, const char *name, int size ) { int var; #ifdef HAVE_ORC g_assert( orc_program_find_var_by_name( vector->program, name ) == -1 ); var = orc_program_add_parameter( vector->program, size, name ); if( !var ) vips_vector_error( vector ); #ifdef DEBUG_TRACE printf( "orc_program_add_parameter( %s, %d, \"%s\" );\n", vector->unique_name, size, name ); #endif /*DEBUG_TRACE*/ vector->n_parameter += 1; #else /*!HAVE_ORC*/ var = -1; #endif /*HAVE_ORC*/ return ( var ); } int vips_vector_destination( VipsVector *vector, const char *name, int size ) { int var; #ifdef HAVE_ORC g_assert( orc_program_find_var_by_name( vector->program, name ) == -1 ); var = orc_program_add_destination( vector->program, size, name ); #ifdef DEBUG_TRACE printf( "orc_program_add_destination( %d, \"%s\" );\n", size, name ); #endif /*DEBUG_TRACE*/ vector->n_destination += 1; #else /*!HAVE_ORC*/ var = -1; #endif /*HAVE_ORC*/ return( var ); } gboolean vips_vector_full( VipsVector *vector ) { /* Many orcs don't have ORC_MAX_CONST_VARS etc., stick to our own * constants for now. */ /* We can need a max of 2 constants plus one source per * coefficient, so stop if we're sure we don't have enough. */ if( vector->n_constant + 2 > 8 ) return( TRUE ); /* You can have 8 source, and d1 counts as one of them, so +1 * there. */ if( vector->n_source + vector->n_scanline + 1 > 7 ) return( TRUE ); /* Need to leave some space, so 1 spare. */ if( vector->n_parameter > 7 ) return( TRUE ); /* After signalling full, some operations will add up to 4 more * instructions as they finish up. Leave a margin. */ if( vector->n_instruction + 10 > 50 ) return( TRUE ); return( FALSE ); } gboolean vips_vector_compile( VipsVector *vector ) { #ifdef HAVE_ORC OrcCompileResult result; /* Some orcs seem to be unstable with many compilers active at once. */ g_mutex_lock( vips__global_lock ); result = orc_program_compile( vector->program ); g_mutex_unlock( vips__global_lock ); #ifdef DEBUG_TRACE printf( "orc_program_compile( %s );\n", vector->unique_name ); #endif /*DEBUG_TRACE*/ if( !ORC_COMPILE_RESULT_IS_SUCCESSFUL( result ) ) { #ifdef DEBUG printf( "*** error compiling %s\n", vector->name ); #endif /*DEBUG*/ return( FALSE ); } vector->compiled = TRUE; #endif /*HAVE_ORC*/ return( TRUE ); } void vips_vector_print( VipsVector *vector ) { int i; printf( "%s: ", vector->name ); if( vector->compiled ) printf( "successfully compiled\n" ); else printf( "not compiled\n" ); printf( " n_scanline = %d\n", vector->n_scanline ); for( i = 0; i < vector->n_scanline; i++ ) printf( " var %d = line %d\n", vector->sl[i], vector->line[i] ); printf( " n_source = %d\n", vector->n_source ); for( i = 0; i < vector->n_source; i++ ) printf( " var %d\n", vector->s[i] ); printf( " n_parameter = %d\n", vector->n_parameter ); printf( " n_destination = %d\n", vector->n_destination ); printf( " n_constant = %d\n", vector->n_constant ); printf( " n_temp = %d\n", vector->n_temp ); printf( " n_instruction = %d\n", vector->n_instruction ); } void vips_executor_set_program( VipsExecutor *executor, VipsVector *vector, int n ) { #ifdef HAVE_ORC executor->vector = vector; orc_executor_set_program( &executor->executor, vector->program ); orc_executor_set_n( &executor->executor, n ); #endif /*HAVE_ORC*/ } void vips_executor_set_array( VipsExecutor *executor, int var, void *value ) { #ifdef HAVE_ORC if( var != -1 ) orc_executor_set_array( &executor->executor, var, value ); #endif /*HAVE_ORC*/ } void vips_executor_set_parameter( VipsExecutor *executor, int var, int value ) { #ifdef HAVE_ORC if( var != -1 ) orc_executor_set_param( &executor->executor, var, value ); #endif /*HAVE_ORC*/ } void vips_executor_set_scanline( VipsExecutor *executor, VipsRegion *ir, int x, int y ) { VipsVector *vector = executor->vector; VipsPel *base = VIPS_REGION_ADDR( ir, x, y ); int lsk = VIPS_REGION_LSKIP( ir ); int i; for( i = 0; i < vector->n_scanline; i++ ) vips_executor_set_array( executor, vector->sl[i], base + vector->line[i] * lsk ); } void vips_executor_set_destination( VipsExecutor *executor, void *value ) { VipsVector *vector = executor->vector; vips_executor_set_array( executor, vector->d1, value ); } void vips_executor_run( VipsExecutor *executor ) { #ifdef HAVE_ORC orc_executor_run( &executor->executor ); #endif /*HAVE_ORC*/ } /* Make a fixed-point version of a matrix. Each * out[i] = rint(in[i] * adj_scale), where adj_scale is selected so that * sum(out) = sum(in) * scale. * * Because of the vagaries of rint(), we can't just calc this, we have to * iterate and converge on the best value for adj_scale. */ void vips_vector_to_fixed_point( double *in, int *out, int n, int scale ) { double fsum; int i; int target; int sum; double high; double low; double guess; fsum = 0.0; for( i = 0; i < n; i++ ) fsum += in[i]; target = VIPS_RINT( fsum * scale ); /* As we rint() each scale element, we can get up to 0.5 error. * Therefore, by the end of the mask, we can be off by up to n/2. Our * high and low guesses are therefore n/2 either side of the obvious * answer. */ high = scale + (n + 1) / 2; low = scale - (n + 1) / 2; do { guess = (high + low) / 2.0; for( i = 0; i < n; i++ ) out[i] = VIPS_RINT( in[i] * guess ); sum = 0; for( i = 0; i < n; i++ ) sum += out[i]; if( sum == target ) break; if( sum < target ) low = guess; if( sum > target ) high = guess; /* This will typically produce about 5 iterations. */ } while( high - low > 0.01 ); if( sum != target ) { /* Spread the error out thinly over the whole array. For * example, consider the matrix: * * 3 3 9 0 * 1 1 1 * 1 1 1 * 1 1 1 * * being converted with scale = 64 (convi does this). We want * to generate a mix of 7s and 8s. */ int each_error = (target - sum) / n; int extra_error = (target - sum) % n; /* To share the residual error, we add or subtract 1 from the * first abs(extra_error) elements. */ int direction = extra_error > 0 ? 1 : -1; int n_elements = VIPS_ABS( extra_error ); for( i = 0; i < n; i++ ) out[i] += each_error; for( i = 0; i < n_elements; i++ ) out[i] += direction; } } libvips-8.9.1/libvips/iofuncs/vips.c000066400000000000000000000651011361153320700174500ustar00rootroot00000000000000/* Read and write a vips file. * * 22/5/08 * - from im_open.c, im_openin.c, im_desc_hd.c, im_readhist.c, * im_openout.c * 19/3/09 * - block mmaps of nodata images * 12/5/09 * - fix signed/unsigned warnings * 12/10/09 * - heh argh reading history always stopped after the first line * 9/12/09 * - only wholly map input files on im_incheck() ... this reduces VM use, * especially with large numbers of small files * 14/2/11 * - renamed to vips.c from im_open_vips.c, some stuff chopped out for * image.c ... this file now just does read / write to disc * 28/3/11 * - moved to vips_ namespace * 25/2/17 * - use expat for xml read, printf for xml write * 16/8/17 * - validate strs as being utf-8 before we write * 9/4/18 Alexander-- * - use O_TMPFILE, if available * 23/7/18 * - escape ASCII control characters in XML * 29/8/19 * - verify bands/format for coded images */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define SHOW_HEADER #define DEBUG */ /* Enable linux extensions like O_TMPFILE, if available. */ #define _GNU_SOURCE #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_SYS_FILE_H #include #endif /*HAVE_SYS_FILE_H*/ #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #ifdef HAVE_IO_H #include #endif /*HAVE_IO_H*/ #include #include #ifdef OS_WIN32 #include #endif /*OS_WIN32*/ #include #include #include /** * SECTION: vips * @short_description: startup, shutdown, version * @stability: Stable * @see_also: VipsOperation * @include: vips/vips.h * * Start VIPS up, shut VIPS down, get version information, relocation. * * VIPS is a relocatable package, meaning you can move the directory tree you * compiled it to at runtime and it will still be able to find all data files. * This is required for OS X and Windows, but slightly unusual in the Unix * world. See vips_init() and vips_guess_prefix(). */ /* Try to make an O_BINARY ... sometimes need the leading '_'. */ #ifdef BINARY_OPEN #ifndef O_BINARY #ifdef _O_BINARY #define O_BINARY _O_BINARY #endif /*_O_BINARY*/ #endif /*!O_BINARY*/ #endif /*BINARY_OPEN*/ /* If we have O_BINARY, add it to a mode flags set. */ #ifdef O_BINARY #define BINARYIZE(M) ((M) | O_BINARY) #else /*!O_BINARY*/ #define BINARYIZE(M) (M) #endif /*O_BINARY*/ /* Open mode for image write ... on some systems, have to set BINARY too. * * We use O_RDWR not O_WRONLY since after writing we may want to rewind the * image and read from it. */ #define MODE_WRITE BINARYIZE (O_RDWR | O_CREAT | O_TRUNC) /* Mode for read/write. This is if we might later want to mmaprw () the file. */ #define MODE_READWRITE BINARYIZE (O_RDWR) /* Mode for read only. This is the fallback if READWRITE fails. */ #define MODE_READONLY BINARYIZE (O_RDONLY) /* Our XML namespace. */ #define NAMESPACE_URI "http://www.vips.ecs.soton.ac.uk/" /* Open for read for image files. */ int vips__open_image_read( const char *filename ) { int fd; /* Try to open read-write, so that calls to vips_image_inplace() will * work. When we later mmap this file, we set read-only, so there * is little danger of scrubbing over files we own. */ fd = vips_tracked_open( filename, MODE_READWRITE ); if( fd == -1 ) /* Open read-write failed. Fall back to open read-only. */ fd = vips_tracked_open( filename, MODE_READONLY ); if( fd == -1 ) { vips_error_system( errno, "VipsImage", _( "unable to open \"%s\"" ), filename ); return( -1 ); } return( fd ); } /* Open for write for image files. */ int vips__open_image_write( const char *filename, gboolean temp ) { int flags; int fd; fd = -1; #ifndef O_TMPFILE if( temp ) g_info( "vips__open_image_write: O_TMPFILE not available" ); #endif /*!O_TMPFILE*/ #ifdef O_TMPFILE /* Linux-only extension creates an unlinked file. CREAT and TRUNC must * be clear. The filename arg to open() must name a directory. * * This can fail since not all filesystems support it. In this case, * we open as a regular file and rely on the delete-on-close * mechanism, see vips_image_delete(). */ if( temp ) { char *dirname; g_info( "vips__open_image_write: opening with O_TMPFILE" ); dirname = g_path_get_dirname( filename ); fd = vips_tracked_open( dirname, O_TMPFILE | O_RDWR , 0644 ); g_free( dirname ); if( fd < 0 ) g_info( "vips__open_image_write: O_TMPFILE failed!" ); } #endif /*O_TMPFILE*/ flags = MODE_WRITE; #ifdef _O_TEMPORARY /* On Windows, setting _O_TEMPORARY will delete the file automatically * on process exit, even if the processes crashes. */ if( temp ) { g_info( "vips__open_image_write: setting _O_TEMPORARY" ); flags |= _O_TEMPORARY; } #endif /*_O_TEMPORARY*/ if( fd < 0 ) { g_info( "vips__open_image_write: simple open" ); fd = vips_tracked_open( filename, flags, 0644 ); } if( fd < 0 ) { g_info( "vips__open_image_write: failed!" ); vips_error_system( errno, "VipsImage", _( "unable to write to \"%s\"" ), filename ); return( -1 ); } return( fd ); } /* Predict the size of the header plus pixel data. Don't use off_t, * it's sometimes only 32 bits (eg. on many windows build environments) and we * want to always be 64 bit. */ static gint64 image_pixel_length( VipsImage *image ) { gint64 psize; switch( image->Coding ) { case VIPS_CODING_LABQ: case VIPS_CODING_RAD: case VIPS_CODING_NONE: psize = VIPS_IMAGE_SIZEOF_IMAGE( image ); break; default: psize = image->Length; break; } return( psize + image->sizeof_header ); } /* Copy 2 and 4 bytes, optionally swapping byte order. */ void vips__copy_4byte( int swap, unsigned char *to, unsigned char *from ) { guint32 *in = (guint32 *) from; guint32 *out = (guint32 *) to; if( swap ) *out = GUINT32_SWAP_LE_BE( *in ); else *out = *in; } void vips__copy_2byte( gboolean swap, unsigned char *to, unsigned char *from ) { guint16 *in = (guint16 *) from; guint16 *out = (guint16 *) to; if( swap ) *out = GUINT16_SWAP_LE_BE( *in ); else *out = *in; } guint32 vips__file_magic( const char *filename ) { guint32 magic; if( vips__get_bytes( filename, (unsigned char *) &magic, 4 ) == 4 && (magic == VIPS_MAGIC_INTEL || magic == VIPS_MAGIC_SPARC) ) return( magic ); return( 0 ); } /* offset, read, write functions. */ typedef struct _FieldIO { glong offset; int size; void (*copy)( gboolean swap, unsigned char *to, unsigned char *from ); } FieldIO; static FieldIO fields[] = { { G_STRUCT_OFFSET( VipsImage, Xsize ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Ysize ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Bands ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Bbits ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, BandFmt ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Coding ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Type ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Xres_float ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Yres_float ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Length ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Compression ), 2, vips__copy_2byte }, { G_STRUCT_OFFSET( VipsImage, Level ), 2, vips__copy_2byte }, { G_STRUCT_OFFSET( VipsImage, Xoffset ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Yoffset ), 4, vips__copy_4byte } }; int vips__read_header_bytes( VipsImage *im, unsigned char *from ) { gboolean swap; int i; #ifdef SHOW_HEADER printf( "vips__read_header_bytes: file bytes:\n" ); for( i = 0; i < im->sizeof_header; i++ ) printf( "%2d - 0x%02x\n", i, from[i] ); #endif /*SHOW_HEADER*/ /* The magic number is always written MSB first, we may need to swap. */ vips__copy_4byte( !vips_amiMSBfirst(), (unsigned char *) &im->magic, from ); from += 4; if( im->magic != VIPS_MAGIC_INTEL && im->magic != VIPS_MAGIC_SPARC ) { vips_error( "VipsImage", _( "\"%s\" is not a VIPS image" ), im->filename ); return( -1 ); } /* We need to swap for other fields if the file byte order is * different from ours. */ swap = vips_amiMSBfirst() != (im->magic == VIPS_MAGIC_SPARC); for( i = 0; i < VIPS_NUMBER( fields ); i++ ) { fields[i].copy( swap, &G_STRUCT_MEMBER( unsigned char, im, fields[i].offset ), from ); from += fields[i].size; } /* Set this ourselves ... bbits is deprecated in the file format. */ im->Bbits = vips_format_sizeof( im->BandFmt ) << 3; /* We read xres/yres as floats to a staging area, then copy to double * in the main fields. */ im->Xres = im->Xres_float; im->Yres = im->Yres_float; /* Some protection against malicious files. We also check predicted * (based on these values) against real file length, see below. */ im->Xsize = VIPS_CLIP( 1, im->Xsize, VIPS_MAX_COORD ); im->Ysize = VIPS_CLIP( 1, im->Ysize, VIPS_MAX_COORD ); im->Bands = VIPS_CLIP( 1, im->Bands, VIPS_MAX_COORD ); im->BandFmt = VIPS_CLIP( 0, im->BandFmt, VIPS_FORMAT_LAST - 1 ); /* Coding and Type have missing values, so we look up in the enum. */ im->Type = g_enum_get_value( g_type_class_ref( VIPS_TYPE_INTERPRETATION ), im->Type ) ? im->Type : VIPS_INTERPRETATION_ERROR; im->Coding = g_enum_get_value( g_type_class_ref( VIPS_TYPE_CODING ), im->Coding ) ? im->Coding : VIPS_CODING_ERROR; /* Offset, Res, etc. don't affect vips file layout, just * pixel interpretation, don't clip them. */ /* Coding values imply Bands and BandFmt settings --- make sure they * are sane. */ switch( im->Coding ) { case VIPS_CODING_NONE: break; case VIPS_CODING_LABQ: if( im->Bands != 4 || im->BandFmt != VIPS_FORMAT_UCHAR ) { vips_error( "VipsImage", "%s", _( "malformed LABQ image" ) ); return( -1 ); } break; case VIPS_CODING_RAD: if( im->Bands != 4 || im->BandFmt != VIPS_FORMAT_UCHAR ) { vips_error( "VipsImage", "%s", _( "malformed RAD image" ) ); return( -1 ); } break; default: g_assert_not_reached(); break; } return( 0 ); } int vips__write_header_bytes( VipsImage *im, unsigned char *to ) { /* Swap if the byte order we are asked to write the header in is * different from ours. */ gboolean swap = vips_amiMSBfirst() != (im->magic == VIPS_MAGIC_SPARC); int i; unsigned char *q; /* We set xres/yres as floats in a staging area, then copy those * smaller values to the file. */ im->Xres_float = im->Xres; im->Yres_float = im->Yres; /* Always write the magic number MSB first. */ vips__copy_4byte( !vips_amiMSBfirst(), to, (unsigned char *) &im->magic ); q = to + 4; for( i = 0; i < VIPS_NUMBER( fields ); i++ ) { fields[i].copy( swap, q, &G_STRUCT_MEMBER( unsigned char, im, fields[i].offset ) ); q += fields[i].size; } /* Pad spares with zeros. */ while( q - to < im->sizeof_header ) *q++ = 0; #ifdef SHOW_HEADER printf( "vips__write_header_bytes: file bytes:\n" ); for( i = 0; i < im->sizeof_header; i++ ) printf( "%2d - 0x%02x\n", i, to[i] ); #endif /*SHOW_HEADER*/ return( 0 ); } /* Read a chunk of an fd into memory. Add a '\0' at the end. */ static char * read_chunk( int fd, gint64 offset, size_t length ) { char *buf; if( vips__seek( fd, offset, SEEK_SET ) == -1 ) return( NULL ); if( !(buf = vips_malloc( NULL, length + 1 )) ) return( NULL ); if( read( fd, buf, length ) != (ssize_t) length ) { vips_free( buf ); vips_error( "VipsImage", "%s", _( "unable to read history" ) ); return( NULL ); } buf[length] = '\0'; return( buf ); } /* Does it look like an image has an extension block? */ int vips__has_extension_block( VipsImage *im ) { gint64 psize; psize = image_pixel_length( im ); g_assert( im->file_length > 0 ); return( im->file_length - psize > 0 ); } /* Read everything after the pixels into memory. */ void * vips__read_extension_block( VipsImage *im, int *size ) { gint64 psize; void *buf; psize = image_pixel_length( im ); g_assert( im->file_length > 0 ); if( im->file_length - psize > 100 * 1024 * 1024 ) { vips_error( "VipsImage", "%s", _( "more than 100 megabytes of XML? " "sufferin' succotash!" ) ); return( NULL ); } if( im->file_length - psize == 0 ) return( NULL ); if( !(buf = read_chunk( im->fd, psize, im->file_length - psize )) ) return( NULL ); if( size ) *size = im->file_length - psize; #ifdef DEBUG printf( "vips__read_extension_block: read %d bytes from %s\n", (int) (im->file_length - psize), im->filename ); printf( "data: \"%s\"\n", (char *) buf ); #endif /*DEBUG*/ return( buf ); } static int parser_read_fd( XML_Parser parser, int fd ) { const int chunk_size = 1024; gint64 bytes_read; gint64 len; bytes_read = 0; do { void *buf; if( !(buf = XML_GetBuffer( parser, chunk_size )) ) { vips_error( "VipsImage", "%s", _( "unable to allocate read buffer" ) ); return( -1 ); } len = read( fd, buf, chunk_size ); if( len == -1 ) { vips_error( "VipsImage", "%s", _( "read error while fetching XML" ) ); return( -1 ); } /* Allow missing XML block. */ if( bytes_read == 0 && len == 0 ) break; bytes_read += len; if( !XML_ParseBuffer( parser, len, len == 0 ) ) { vips_error( "VipsImage", "%s", _( "XML parse error" ) ); return( -1 ); } } while( len > 0 ); return( 0 ); } #define MAX_PARSE_ATTR (256) /* What we track during expat parse. */ typedef struct _VipsExpatParse { VipsImage *image; /* Set on error. */ gboolean error; /* TRUE for in header section. */ gboolean header; /* For the current node, the type and name. */ XML_Char type[MAX_PARSE_ATTR]; XML_Char name[MAX_PARSE_ATTR]; /* Accumulate data here. */ VipsDbuf dbuf; } VipsExpatParse; static void parser_element_start_handler( void *user_data, const XML_Char *name, const XML_Char **atts ) { VipsExpatParse *vep = (VipsExpatParse *) user_data; const XML_Char **p; #ifdef DEBUG printf( "parser_element_start: %s\n", name ); for( p = atts; *p; p += 2 ) printf( "%s = %s\n", p[0], p[1] ); #endif /*DEBUG*/ if( strcmp( name, "field" ) == 0 ) { for( p = atts; *p; p += 2 ) { if( strcmp( p[0], "name" ) == 0 ) vips_strncpy( vep->name, p[1], MAX_PARSE_ATTR ); if( strcmp( p[0], "type" ) == 0 ) vips_strncpy( vep->type, p[1], MAX_PARSE_ATTR ); } vips_dbuf_reset( &vep->dbuf ); } else if( strcmp( name, "header" ) == 0 ) vep->header = TRUE; else if( strcmp( name, "meta" ) == 0 ) vep->header = FALSE; else if( strcmp( name, "root" ) == 0 ) { for( p = atts; *p; p += 2 ) if( strcmp( p[0], "xmlns" ) == 0 && !vips_isprefix( NAMESPACE_URI "vips", p[1] ) ) { vips_error( "VipsImage", "%s", _( "incorrect namespace in XML" ) ); vep->error = TRUE; } } } /* Chop history into lines, add each one as a refstring. */ static void set_history( VipsImage *im, char *history ) { GSList *history_list; char *p, *q; /* There can be history there already if we're rewinding. */ VIPS_FREEF( vips__gslist_gvalue_free, im->history_list ); history_list = NULL; for( p = history; *p; p = q ) { if( (q = strchr( p, '\n' )) ) { *q = '\0'; q += 1; } else q = p + strlen( p ); history_list = g_slist_prepend( history_list, vips__gvalue_ref_string_new( p ) ); } im->history_list = g_slist_reverse( history_list ); } static int set_meta( VipsImage *image, GType gtype, const char *name, const char *data ) { GValue save_value = { 0 }; GValue value = { 0 }; g_value_init( &save_value, VIPS_TYPE_SAVE_STRING ); vips_value_set_save_string( &save_value, data ); g_value_init( &value, gtype ); if( !g_value_transform( &save_value, &value ) ) { g_value_unset( &save_value ); vips_error( "VipsImage", "%s", _( "error transforming from save format" ) ); return( -1 ); } vips_image_set( image, name, &value ); g_value_unset( &save_value ); g_value_unset( &value ); return( 0 ); } static void parser_element_end_handler( void *user_data, const XML_Char *name ) { VipsExpatParse *vep = (VipsExpatParse *) user_data; #ifdef DEBUG printf( "parser_element_end_handler: %s\n", name ); #endif /*DEBUG*/ if( strcmp( name, "field" ) == 0 ) { if( vep->header ) { if( strcmp( name, "Hist" ) == 0 ) set_history( vep->image, (char *) vips_dbuf_string( &vep->dbuf, NULL ) ); } else { GType gtype = g_type_from_name( vep->type ); /* Can we convert from VIPS_SAVE_STRING to type? */ if( gtype && g_value_type_transformable( VIPS_TYPE_SAVE_STRING, gtype ) && set_meta( vep->image, gtype, vep->name, (char *) vips_dbuf_string( &vep->dbuf, NULL ) ) ) vep->error = TRUE; } } } static void parser_data_handler( void *user_data, const XML_Char *data, int len ) { VipsExpatParse *vep = (VipsExpatParse *) user_data; #ifdef DEBUG printf( "parser_data_handler: %d bytes\n", len ); #endif /*DEBUG*/ vips_dbuf_write( &vep->dbuf, (unsigned char *) data, len ); } /* Called at the end of vips open ... get any XML after the pixel data * and read it in. */ static int readhist( VipsImage *im ) { XML_Parser parser; VipsExpatParse vep; if( vips__seek( im->fd, image_pixel_length( im ), SEEK_SET ) == -1 ) return( -1 ); parser = XML_ParserCreate( "UTF-8" ); vep.image = im; vips_dbuf_init( &vep.dbuf ); vep.error = FALSE; XML_SetUserData( parser, &vep ); XML_SetElementHandler( parser, parser_element_start_handler, parser_element_end_handler ); XML_SetCharacterDataHandler( parser, parser_data_handler ); if( parser_read_fd( parser, im->fd ) || vep.error ) { vips_dbuf_destroy( &vep.dbuf ); XML_ParserFree( parser ); return( -1 ); } vips_dbuf_destroy( &vep.dbuf ); XML_ParserFree( parser ); return( 0 ); } int vips__write_extension_block( VipsImage *im, void *buf, int size ) { gint64 length; gint64 psize; psize = image_pixel_length( im ); if( (length = vips_file_length( im->fd )) == -1 ) return( -1 ); if( length < psize ) { vips_error( "VipsImage", "%s", _( "file has been truncated" ) ); return( -1 ); } if( vips__ftruncate( im->fd, psize ) || vips__seek( im->fd, psize, SEEK_SET ) == -1 ) return( -1 ); if( vips__write( im->fd, buf, size ) ) return( -1 ); #ifdef DEBUG printf( "vips__write_extension_block: written %d bytes of XML to %s\n", size, im->filename ); #endif /*DEBUG*/ return( 0 ); } /* Append a string to a buffer, but escape " as \". */ static void target_write_quotes( VipsTarget *target, const char *str ) { const char *p; size_t len; for( p = str; *p; p += len ) { len = strcspn( p, "\"" ); vips_target_write( target, (unsigned char *) p, len ); if( p[len] == '"' ) vips_target_writes( target, "\\" ); } } static void * build_xml_meta( VipsMeta *meta, VipsTarget *target ) { GType type = G_VALUE_TYPE( &meta->value ); const char *str; /* If we can transform to VIPS_TYPE_SAVE_STRING and back, we can save * and restore. */ if( g_value_type_transformable( type, VIPS_TYPE_SAVE_STRING ) && g_value_type_transformable( VIPS_TYPE_SAVE_STRING, type ) ) { GValue save_value = { 0 }; g_value_init( &save_value, VIPS_TYPE_SAVE_STRING ); if( !g_value_transform( &meta->value, &save_value ) ) { vips_error( "VipsImage", "%s", _( "error transforming to save format" ) ); return( meta ); } /* We need to validate the str to make sure we'll be able to * read it back. */ str = vips_value_get_save_string( &save_value ); if( g_utf8_validate( str, -1, NULL ) ) { vips_target_writef( target, " name ); vips_target_writes( target, "\">" ); vips_target_write_amp( target, str ); vips_target_writes( target, "\n" ); } g_value_unset( &save_value ); } return( NULL ); } /* Make the xml we append to vips images after the pixel data. */ static char * build_xml( VipsImage *image ) { VipsTarget *target; const char *str; char *result; target = vips_target_new_to_memory(); vips_target_writef( target, "\n" ); vips_target_writef( target, "\n", NAMESPACE_URI, VIPS_MAJOR_VERSION, VIPS_MINOR_VERSION, VIPS_MICRO_VERSION ); vips_target_writef( target, "
\n" ); str = vips_image_get_history( image ); if( g_utf8_validate( str, -1, NULL ) ) { vips_target_writef( target, " ", g_type_name( VIPS_TYPE_REF_STRING ) ); vips_target_write_amp( target, str ); vips_target_writef( target, "\n" ); } vips_target_writef( target, "
\n" ); vips_target_writef( target, " \n" ); if( vips_slist_map2( image->meta_traverse, (VipsSListMap2Fn) build_xml_meta, target, NULL ) ) { VIPS_UNREF( target ); return( NULL ); } vips_target_writef( target, " \n" ); vips_target_writef( target, "
\n" ); result = vips_target_steal_text( target ); VIPS_UNREF( target ); return( result ); } static void * vips__xml_properties_meta( VipsImage *image, const char *field, GValue *value, void *a ) { VipsTarget *target = (VipsTarget *) a; GType type = G_VALUE_TYPE( value ); const char *str; /* If we can transform to VIPS_TYPE_SAVE_STRING and back, we can save * and restore. */ if( g_value_type_transformable( type, VIPS_TYPE_SAVE_STRING ) && g_value_type_transformable( VIPS_TYPE_SAVE_STRING, type ) ) { GValue save_value = { 0 }; g_value_init( &save_value, VIPS_TYPE_SAVE_STRING ); if( !g_value_transform( value, &save_value ) ) { vips_error( "VipsImage", "%s", _( "error transforming to save format" ) ); return( target ); } str = vips_value_get_save_string( &save_value ); vips_target_writef( target, " \n" ); vips_target_writef( target, " " ); vips_target_write_amp( target, field ); vips_target_writef( target, "\n" ); vips_target_writef( target, " ", g_type_name( type ) ); vips_target_write_amp( target, str ); vips_target_writef( target, "\n" ); vips_target_writef( target, " \n" ); g_value_unset( &save_value ); } return( NULL ); } /* Make the xml we write to vips-properties in dzsave, or to TIFF. A simple * dump of all vips metadata. Free with g_free(). */ char * vips__xml_properties( VipsImage *image ) { VipsTarget *target; char *date; char *result; date = vips__get_iso8601(); target = vips_target_new_to_memory(); vips_target_writef( target, "\n" ); vips_target_writef( target, "\n", NAMESPACE_URI, date, VIPS_MAJOR_VERSION, VIPS_MINOR_VERSION, VIPS_MICRO_VERSION ); vips_target_writef( target, " \n" ); g_free( date ); if( vips_image_map( image, vips__xml_properties_meta, target ) ) { VIPS_UNREF( target ); return( NULL ); } vips_target_writef( target, " \n" ); vips_target_writef( target, "\n" ); result = vips_target_steal_text( target ); VIPS_UNREF( target ); return( result ); } /* Append XML to output fd. */ int vips__writehist( VipsImage *image ) { char *xml; assert( image->dtype == VIPS_IMAGE_OPENOUT ); assert( image->fd != -1 ); if( !(xml = build_xml( image )) ) return( -1 ); if( vips__write_extension_block( image, xml, strlen( xml ) ) ) { g_free( xml ); return( -1 ); } #ifdef DEBUG printf( "vips__writehist: saved XML is: \"%s\"\n", xml ); #endif /*DEBUG*/ g_free( xml ); return( 0 ); } /* Open the filename, read the header, some sanity checking. */ int vips_image_open_input( VipsImage *image ) { /* We don't use im->sizeof_header here, but we know we're reading a * VIPS image anyway. */ unsigned char header[VIPS_SIZEOF_HEADER]; gint64 psize; gint64 rsize; image->dtype = VIPS_IMAGE_OPENIN; /* We may have an fd already, see vips_image_rewind_output(). */ if( image->fd == -1 ) { image->fd = vips__open_image_read( image->filename ); if( image->fd == -1 ) return( -1 ); } vips__seek( image->fd, 0, SEEK_SET ); if( read( image->fd, header, VIPS_SIZEOF_HEADER ) != VIPS_SIZEOF_HEADER || vips__read_header_bytes( image, header ) ) { vips_error_system( errno, "VipsImage", _( "unable to read header for \"%s\"" ), image->filename ); return( -1 ); } /* Predict and check the file size. Only issue a warning, we want to be * able to read all the header fields we can, even if the actual data * isn't there. */ psize = image_pixel_length( image ); if( (rsize = vips_file_length( image->fd )) == -1 ) return( -1 ); image->file_length = rsize; if( psize > rsize ) g_warning( _( "unable to read data for \"%s\", %s" ), image->filename, _( "file has been truncated" ) ); /* Set demand style. This suits a disc file we read sequentially. */ image->dhint = VIPS_DEMAND_STYLE_THINSTRIP; /* Set the history part of im descriptor. Don't return an error if this * fails (due to eg. corrupted XML) because it's probably mostly * harmless. */ if( readhist( image ) ) { g_warning( _( "error reading vips image metadata: %s" ), vips_error_buffer() ); vips_error_clear(); } return( 0 ); } int vips_image_open_output( VipsImage *image ) { if( image->fd == -1 ) { /* Don't use im->sizeof_header here, but we know we're * writing a VIPS image anyway. */ unsigned char header[VIPS_SIZEOF_HEADER]; if( (image->fd = vips__open_image_write( image->filename, image->delete_on_close )) < 0 ) return( -1 ); /* We always write in native mode, so we must overwrite the * magic we read from the file originally. */ image->magic = vips_amiMSBfirst() ? VIPS_MAGIC_SPARC : VIPS_MAGIC_INTEL; if( vips__write_header_bytes( image, header ) || vips__write( image->fd, header, VIPS_SIZEOF_HEADER ) ) return( -1 ); } return( 0 ); } libvips-8.9.1/libvips/iofuncs/vipsmarshal.c000066400000000000000000000154031361153320700210200ustar00rootroot00000000000000#include "vipsmarshal.h" /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ #include #ifdef G_ENABLE_DEBUG #define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) #define g_marshal_value_peek_char(v) g_value_get_schar (v) #define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) #define g_marshal_value_peek_int(v) g_value_get_int (v) #define g_marshal_value_peek_uint(v) g_value_get_uint (v) #define g_marshal_value_peek_long(v) g_value_get_long (v) #define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) #define g_marshal_value_peek_int64(v) g_value_get_int64 (v) #define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) #define g_marshal_value_peek_enum(v) g_value_get_enum (v) #define g_marshal_value_peek_flags(v) g_value_get_flags (v) #define g_marshal_value_peek_float(v) g_value_get_float (v) #define g_marshal_value_peek_double(v) g_value_get_double (v) #define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) #define g_marshal_value_peek_param(v) g_value_get_param (v) #define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) #define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) #define g_marshal_value_peek_object(v) g_value_get_object (v) #define g_marshal_value_peek_variant(v) g_value_get_variant (v) #else /* !G_ENABLE_DEBUG */ /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. * Do not access GValues directly in your code. Instead, use the * g_value_get_*() functions */ #define g_marshal_value_peek_boolean(v) (v)->data[0].v_int #define g_marshal_value_peek_char(v) (v)->data[0].v_int #define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint #define g_marshal_value_peek_int(v) (v)->data[0].v_int #define g_marshal_value_peek_uint(v) (v)->data[0].v_uint #define g_marshal_value_peek_long(v) (v)->data[0].v_long #define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong #define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 #define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 #define g_marshal_value_peek_enum(v) (v)->data[0].v_long #define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong #define g_marshal_value_peek_float(v) (v)->data[0].v_float #define g_marshal_value_peek_double(v) (v)->data[0].v_double #define g_marshal_value_peek_string(v) (v)->data[0].v_pointer #define g_marshal_value_peek_param(v) (v)->data[0].v_pointer #define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer #define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer #define g_marshal_value_peek_object(v) (v)->data[0].v_pointer #define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer #endif /* !G_ENABLE_DEBUG */ /* INT: VOID (vipsmarshal.list:25) */ void vips_INT__VOID (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gint (*GMarshalFunc_INT__VOID) (gpointer data1, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_INT__VOID callback; gint v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 1); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_INT__VOID) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, data2); g_value_set_int (return_value, v_return); } /* INT64: INT64, INT (vipsmarshal.list:26) */ void vips_INT64__INT64_INT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gint64 (*GMarshalFunc_INT64__INT64_INT) (gpointer data1, gint64 arg1, gint arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_INT64__INT64_INT callback; gint64 v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_INT64__INT64_INT) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_int64 (param_values + 1), g_marshal_value_peek_int (param_values + 2), data2); g_value_set_int64 (return_value, v_return); } /* INT64: POINTER, INT64 (vipsmarshal.list:27) */ void vips_INT64__POINTER_INT64 (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gint64 (*GMarshalFunc_INT64__POINTER_INT64) (gpointer data1, gpointer arg1, gint64 arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_INT64__POINTER_INT64 callback; gint64 v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_INT64__POINTER_INT64) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_pointer (param_values + 1), g_marshal_value_peek_int64 (param_values + 2), data2); g_value_set_int64 (return_value, v_return); } libvips-8.9.1/libvips/iofuncs/vipsmarshal.h000066400000000000000000000027421361153320700210270ustar00rootroot00000000000000/* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ #ifndef __VIPS_MARSHAL_H__ #define __VIPS_MARSHAL_H__ #include G_BEGIN_DECLS /* INT: VOID (vipsmarshal.list:25) */ extern void vips_INT__VOID (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* INT64: INT64, INT (vipsmarshal.list:26) */ extern void vips_INT64__INT64_INT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* INT64: POINTER, INT64 (vipsmarshal.list:27) */ extern void vips_INT64__POINTER_INT64 (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); G_END_DECLS #endif /* __VIPS_MARSHAL_H__ */ libvips-8.9.1/libvips/iofuncs/vipsmarshal.list000066400000000000000000000024071361153320700215510ustar00rootroot00000000000000# see glib-genmarshal(1) for a detailed description of the file format, # possible parameter types are: # VOID indicates no return type, or no extra # parameters. if VOID is used as the parameter # list, no additional parameters may be present. # BOOLEAN for boolean types (gboolean) # CHAR for signed char types (gchar) # UCHAR for unsigned char types (guchar) # INT for signed integer types (gint) # UINT for unsigned integer types (guint) # LONG for signed long integer types (glong) # ULONG for unsigned long integer types (gulong) # ENUM for enumeration types (gint) # FLAGS for flag enumeration types (guint) # FLOAT for single-precision float types (gfloat) # DOUBLE for double-precision float types (gdouble) # STRING for string types (gchar*) # BOXED for boxed (anonymous but reference counted) types (GBoxed*) # POINTER for anonymous pointer types (gpointer) # PARAM for GParamSpec or derived types (GParamSpec*) # OBJECT for GObject or derived types (GObject*) # NONE deprecated alias for VOID # BOOL deprecated alias for BOOLEAN INT: VOID INT64: INT64, INT INT64: POINTER, INT64 libvips-8.9.1/libvips/iofuncs/window.c000066400000000000000000000221341361153320700177750ustar00rootroot00000000000000/* Manage sets of mmap buffers on an image. * * 30/10/06 * - from region.c * 19/3/09 * - block mmaps of nodata images */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_TOTAL #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #ifdef HAVE_SYS_MMAN_H #include #endif #include #include #include #ifdef OS_WIN32 #include #endif /*OS_WIN32*/ /* Sanity checking ... write to this during read tests to make sure we don't * get optimized out. */ int vips__read_test; /* Add this many lines above and below the mmap() window. */ int vips__window_margin_pixels = VIPS__WINDOW_MARGIN_PIXELS; /* Always map at least this many bytes. There's no point making tiny windows * on small files. */ int vips__window_margin_bytes = VIPS__WINDOW_MARGIN_BYTES; /* Track global mmap usage. */ #ifdef DEBUG_TOTAL static int total_mmap_usage = 0; static int max_mmap_usage = 0; #endif /*DEBUG_TOTAL*/ static int vips_window_unmap( VipsWindow *window ) { /* unmap the old window */ if( window->baseaddr ) { if( vips__munmap( window->baseaddr, window->length ) ) return( -1 ); #ifdef DEBUG_TOTAL g_mutex_lock( vips__global_lock ); total_mmap_usage -= window->length; g_assert( total_mmap_usage >= 0 ); g_mutex_unlock( vips__global_lock ); #endif /*DEBUG_TOTAL*/ window->data = NULL; window->baseaddr = NULL; window->length = 0; } return( 0 ); } static int vips_window_free( VipsWindow *window ) { VipsImage *im = window->im; g_assert( window->ref_count == 0 ); #ifdef DEBUG printf( "** vips_window_free: window top = %d, height = %d (%p)\n", window->top, window->height, window ); printf( "vips_window_unref: %d windows left\n", g_slist_length( im->windows ) ); #endif /*DEBUG*/ g_assert( g_slist_find( im->windows, window ) ); im->windows = g_slist_remove( im->windows, window ); if( vips_window_unmap( window ) ) return( -1 ); window->im = NULL; vips_free( window ); return( 0 ); } int vips_window_unref( VipsWindow *window ) { VipsImage *im = window->im; g_mutex_lock( im->sslock ); #ifdef DEBUG printf( "vips_window_unref: window top = %d, height = %d, count = %d\n", window->top, window->height, window->ref_count ); #endif /*DEBUG*/ g_assert( window->ref_count > 0 ); window->ref_count -= 1; if( window->ref_count == 0 ) { if( vips_window_free( window ) ) { g_mutex_unlock( im->sslock ); return( -1 ); } } g_mutex_unlock( im->sslock ); return( 0 ); } #ifdef DEBUG_TOTAL static void trace_mmap_usage( void ) { g_mutex_lock( vips__global_lock ); { static int last_total = 0; int total = total_mmap_usage / (1024 * 1024); int max = max_mmap_usage / (1024 * 1024); if( total != last_total ) { printf( "vips_window_set: current mmap " "usage of ~%dMB (high water mark %dMB)\n", total, max ); last_total = total; } } g_mutex_unlock( vips__global_lock ); } #endif /*DEBUG_TOTAL*/ static int vips_getpagesize( void ) { static int pagesize = 0; if( !pagesize ) { #ifdef OS_WIN32 SYSTEM_INFO si; GetSystemInfo( &si ); pagesize = si.dwAllocationGranularity; #else /*OS_WIN32*/ pagesize = getpagesize(); #endif /*OS_WIN32*/ #ifdef DEBUG_TOTAL printf( "vips_getpagesize: 0x%x\n", pagesize ); #endif /*DEBUG_TOTAL*/ } return( pagesize ); } /* Map a window into a file. */ static int vips_window_set( VipsWindow *window, int top, int height ) { int pagesize = vips_getpagesize(); void *baseaddr; gint64 start, end, pagestart; size_t length, pagelength; /* Calculate start and length for our window. */ start = window->im->sizeof_header + VIPS_IMAGE_SIZEOF_LINE( window->im ) * top; length = VIPS_IMAGE_SIZEOF_LINE( window->im ) * height; pagestart = start - start % pagesize; end = start + length; pagelength = end - pagestart; /* Make sure we have enough file. */ if( end > window->im->file_length ) { vips_error( "vips_window_set", _( "unable to read data for \"%s\", %s" ), window->im->filename, _( "file has been truncated" ) ); return( -1 ); } if( vips_window_unmap( window ) ) return( -1 ); if( !(baseaddr = vips__mmap( window->im->fd, 0, pagelength, pagestart )) ) return( -1 ); window->baseaddr = baseaddr; window->length = pagelength; window->data = (VipsPel *) baseaddr + (start - pagestart); window->top = top; window->height = height; /* Sanity check ... make sure the data pointer is readable. */ vips__read_test &= window->data[0]; #ifdef DEBUG_TOTAL g_mutex_lock( vips__global_lock ); total_mmap_usage += window->length; if( total_mmap_usage > max_mmap_usage ) max_mmap_usage = total_mmap_usage; g_mutex_unlock( vips__global_lock ); trace_mmap_usage(); #endif /*DEBUG_TOTAL*/ return( 0 ); } /* Make a new window. */ static VipsWindow * vips_window_new( VipsImage *im, int top, int height ) { VipsWindow *window; if( !(window = VIPS_NEW( NULL, VipsWindow )) ) return( NULL ); window->ref_count = 1; window->im = im; window->top = 0; window->height = 0; window->data = NULL; window->baseaddr = NULL; window->length = 0; im->windows = g_slist_prepend( im->windows, window ); if( vips_window_set( window, top, height ) ) { vips_window_free( window ); return( NULL ); } #ifdef DEBUG printf( "** vips_window_new: window top = %d, height = %d (%p)\n", window->top, window->height, window ); #endif /*DEBUG*/ return( window ); } /* A request for an area of pixels. */ typedef struct { int top; int height; } request_t; static void * vips_window_fits( VipsWindow *window, request_t *req ) { if( window->top <= req->top && window->top + window->height >= req->top + req->height ) return( window ); return( NULL ); } /* Find an existing window that fits within top/height and return a ref. */ static VipsWindow * vips_window_find( VipsImage *im, int top, int height ) { request_t req; VipsWindow *window; req.top = top; req.height = height; window = vips_slist_map2( im->windows, (VipsSListMap2Fn) vips_window_fits, &req, NULL ); if( window ) { window->ref_count += 1; #ifdef DEBUG printf( "vips_window_find: ref window top = %d, height = %d, " "count = %d\n", top, height, window->ref_count ); #endif /*DEBUG*/ } return( window ); } /* Old API. Just a compat stub now. */ VipsWindow * vips_window_ref( VipsImage *im, int top, int height ) { return( NULL ); } /* Update a window to make it enclose top/height. */ VipsWindow * vips_window_take( VipsWindow *window, VipsImage *im, int top, int height ) { int margin; /* We have a window and it has the pixels we need. */ if( window && window->top <= top && window->top + window->height >= top + height ) return( window ); g_mutex_lock( im->sslock ); /* We have a window and we are the only ref to it ... scroll. */ if( window && window->ref_count == 1 ) { if( vips_window_set( window, top, height ) ) { g_mutex_unlock( im->sslock ); vips_window_unref( window ); return( NULL ); } g_mutex_unlock( im->sslock ); return( window ); } /* There's more than one ref to the window. We can just decrement. * Don't call _unref, since we've inside the lock. */ if( window ) window->ref_count -= 1; /* Is there an existing window we can reuse? */ if( (window = vips_window_find( im, top, height )) ) { g_mutex_unlock( im->sslock ); return( window ); } /* We have to make a new window. Make it a bit bigger than strictly * necessary. */ margin = VIPS_MIN( vips__window_margin_pixels, vips__window_margin_bytes / VIPS_IMAGE_SIZEOF_LINE( im ) ); top -= margin; height += margin * 2; top = VIPS_CLIP( 0, top, im->Ysize - 1 ); height = VIPS_CLIP( 0, height, im->Ysize - top ); if( !(window = vips_window_new( im, top, height )) ) { g_mutex_unlock( im->sslock ); return( NULL ); } g_mutex_unlock( im->sslock ); return( window ); } void vips_window_print( VipsWindow *window ) { printf( "VipsWindow: %p ref_count = %d, ", window, window->ref_count ); printf( "im = %p, ", window->im ); printf( "top = %d, ", window->top ); printf( "height = %d, ", window->height ); printf( "data = %p, ", window->data ); printf( "baseaddr = %p, ", window->baseaddr ); printf( "length = %zd\n", window->length ); } libvips-8.9.1/libvips/morphology/000077500000000000000000000000001361153320700170515ustar00rootroot00000000000000libvips-8.9.1/libvips/morphology/Makefile.am000066400000000000000000000004031361153320700211020ustar00rootroot00000000000000noinst_LTLIBRARIES = libmorphology.la libmorphology_la_SOURCES = \ nearest.c \ morphology.c \ pmorphology.h \ countlines.c \ rank.c \ hitmiss.c \ morph.c \ labelregions.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ libvips-8.9.1/libvips/morphology/countlines.c000066400000000000000000000113121361153320700213760ustar00rootroot00000000000000/* count lines * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : * * 19/9/95 JC * - tidied up * 23/10/10 * - gtk-doc * 17/1/14 * - redone as a class, now just a convenience function */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pmorphology.h" typedef struct _VipsCountlines { VipsMorphology parent_instance; double nolines; VipsDirection direction; } VipsCountlines; typedef VipsMorphologyClass VipsCountlinesClass; G_DEFINE_TYPE( VipsCountlines, vips_countlines, VIPS_TYPE_MORPHOLOGY ); static int vips_countlines_build( VipsObject *object ) { VipsMorphology *morphology = VIPS_MORPHOLOGY( object ); VipsCountlines *countlines = (VipsCountlines *) object; VipsImage *in = morphology->in; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); double nolines; if( VIPS_OBJECT_CLASS( vips_countlines_parent_class )->build( object ) ) return( -1 ); /* Compiler warnings. */ nolines = 1; switch( countlines->direction ) { case VIPS_DIRECTION_HORIZONTAL: if( !(t[0] = vips_image_new_matrixv( 1, 2, -1.0, 1.0 )) || vips_moreeq_const1( in, &t[1], 128, NULL ) || vips_conv( t[1], &t[2], t[0], "precision", VIPS_PRECISION_INTEGER, NULL ) || vips_project( t[2], &t[3], &t[4], NULL ) || vips_avg( t[3], &nolines, NULL ) ) return( -1 ); break; case VIPS_DIRECTION_VERTICAL: if( !(t[0] = vips_image_new_matrixv( 2, 1, -1.0, 1.0 )) || vips_moreeq_const1( in, &t[1], 128, NULL ) || vips_conv( t[1], &t[2], t[0], "precision", VIPS_PRECISION_INTEGER, NULL ) || vips_project( t[2], &t[3], &t[4], NULL ) || vips_avg( t[4], &nolines, NULL ) ) return( -1 ); break; default: g_assert_not_reached(); } g_object_set( object, "nolines", nolines / 255.0, NULL ); return( 0 ); } static void vips_countlines_class_init( VipsCountlinesClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_countlines_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "countlines"; vobject_class->description = _( "count lines in an image" ); vobject_class->build = vips_countlines_build; VIPS_ARG_DOUBLE( class, "nolines", 2, _( "Nolines" ), _( "Number of lines" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsCountlines, nolines ), 0, 10000000, 0.0 ); VIPS_ARG_ENUM( class, "direction", 3, _( "direction" ), _( "Countlines left-right or up-down" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCountlines, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); } static void vips_countlines_init( VipsCountlines *countlines ) { } /** * vips_countlines: (method) * @in: input image * @nolines: (out): output average number of lines * @direction: count lines horizontally or vertically * @...: %NULL-terminated list of optional named arguments * * Function which calculates the number of transitions * between black and white for the horizontal or the vertical * direction of an image. black<128 , white>=128 * The function calculates the number of transitions for all * Xsize or Ysize and returns the mean of the result * Input should be one band, 8-bit. * * See also: vips_morph(), vips_conv(). * * Returns: 0 on success, -1 on error. */ int vips_countlines( VipsImage *in, double *nolines, VipsDirection direction, ... ) { va_list ap; int result; va_start( ap, direction ); result = vips_call_split( "countlines", ap, in, nolines, direction ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/morphology/hitmiss.c000066400000000000000000000417541361153320700207100ustar00rootroot00000000000000/* morphological operators * * 19/9/95 JC * - rewritten * 6/7/99 JC * - small tidies * 7/4/04 * - now uses im_embed() with edge stretching on the input, not * the output * - sets Xoffset / Yoffset * 21/4/08 * - only rebuild the buffer offsets if bpl changes * - small cleanups * 25/10/10 * - start again from the Orc'd im_conv * 29/10/10 * - use VipsVector * - do erode as well * 7/11/10 * - gtk-doc * - do (!=0) to make uchar, if we're not given uchar * 28/6/13 * - oops, fix !=0 code */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include /* The two operators we implement. They are more hit-miss, really. */ typedef enum { ERODE, DILATE } MorphOp; /* We can't run more than this many passes. Larger than this and we * fall back to C. */ #define MAX_PASS (10) /* A pass with a vector. */ typedef struct { int first; /* The index of the first mask coff we use */ int last; /* The index of the last mask coff we use */ int r; /* Set previous result in this var */ /* The code we generate for this section of this mask. */ VipsVector *vector; } Pass; /* Our parameters. */ typedef struct { IMAGE *in; IMAGE *out; INTMASK *mask; /* Copy of mask arg */ MorphOp op; /* The passes we generate for this mask. */ int n_pass; Pass pass[MAX_PASS]; } Morph; static void pass_free( Morph *morph ) { int i; for( i = 0; i < morph->n_pass; i++ ) IM_FREEF( vips_vector_free, morph->pass[i].vector ); morph->n_pass = 0; } static int morph_close( Morph *morph ) { IM_FREEF( im_free_imask, morph->mask ); pass_free( morph ); return( 0 ); } #define TEMP( N, S ) vips_vector_temporary( v, N, S ) #define SCANLINE( N, P, S ) vips_vector_source_scanline( v, N, P, S ) #define CONST( N, V, S ) vips_vector_constant( v, N, V, S ) #define ASM2( OP, A, B ) vips_vector_asm2( v, OP, A, B ) #define ASM3( OP, A, B, C ) vips_vector_asm3( v, OP, A, B, C ) /* Generate code for a section of the mask. first is the index we start * at, we set last to the index of the last one we use before we run * out of intermediates / constants / parameters / sources or mask * coefficients. * * 0 for success, -1 on error. */ static int pass_compile_section( Pass *pass, Morph *morph, gboolean first_pass ) { INTMASK *mask = morph->mask; const int n_mask = mask->xsize * mask->ysize; VipsVector *v; char offset[256]; char source[256]; char zero[256]; char one[256]; int i; pass->vector = v = vips_vector_new( "morph", 1 ); /* The value we fetch from the image, the accumulated sum. */ TEMP( "value", 1 ); TEMP( "sum", 1 ); CONST( zero, 0, 1 ); CONST( one, 255, 1 ); /* Init the sum. If this is the first pass, it's a constant. If this * is a later pass, we have to init the sum from the result * of the previous pass. */ if( first_pass ) { if( morph->op == DILATE ) ASM2( "copyb", "sum", zero ); else ASM2( "copyb", "sum", one ); } else { /* "r" is the result of the previous pass. */ pass->r = vips_vector_source_name( v, "r", 1 ); ASM2( "loadb", "sum", "r" ); } for( i = pass->first; i < n_mask; i++ ) { int x = i % mask->xsize; int y = i / mask->xsize; /* Exclude don't-care elements. */ if( mask->coeff[i] == 128 ) continue; /* The source. sl0 is the first scanline in the mask. */ SCANLINE( source, y, 1 ); /* The offset, only for non-first-columns though. */ if( x > 0 ) { CONST( offset, morph->in->Bands * x, 1 ); ASM3( "loadoffb", "value", source, offset ); } else ASM2( "loadb", "value", source ); /* Join to our sum. If the mask element is zero, we have to * add an extra negate. */ if( morph->op == DILATE ) { if( !mask->coeff[i] ) ASM3( "xorb", "value", "value", one ); ASM3( "orb", "sum", "sum", "value" ); } else { if( !mask->coeff[i] ) { /* You'd think we could use andnb, but it * fails on some machines with some orc * versions :( */ ASM3( "xorb", "value", "value", one ); ASM3( "andb", "sum", "sum", "value" ); } else ASM3( "andb", "sum", "sum", "value" ); } if( vips_vector_full( v ) ) break; } pass->last = i; ASM2( "copyb", "d1", "sum" ); if( !vips_vector_compile( v ) ) return( -1 ); #ifdef DEBUG printf( "done matrix coeffs %d to %d\n", pass->first, pass->last ); vips_vector_print( v ); #endif /*DEBUG*/ return( 0 ); } /* Generate a set of passes. */ static int pass_compile( Morph *morph ) { INTMASK *mask = morph->mask; const int n_mask = mask->xsize * mask->ysize; int i; Pass *pass; #ifdef DEBUG printf( "morph: generating vector code\n" ); #endif /*DEBUG*/ /* Generate passes until we've used up the whole mask. */ for( i = 0;;) { /* Skip any don't-care coefficients at the start of the mask * region. */ for( ; i < n_mask && mask->coeff[i] == 128; i++ ) ; if( i == n_mask ) break; /* Allocate space for another pass. */ if( morph->n_pass == MAX_PASS ) return( -1 ); pass = &morph->pass[morph->n_pass]; morph->n_pass += 1; pass->first = i; pass->last = i; pass->r = -1; if( pass_compile_section( pass, morph, morph->n_pass == 1 ) ) return( -1 ); i = pass->last + 1; if( i >= n_mask ) break; } return( 0 ); } static Morph * morph_new( IMAGE *in, IMAGE *out, INTMASK *mask, MorphOp op ) { const int n_mask = mask->xsize * mask->ysize; Morph *morph; int i; /* If in is not uchar, do (!=0) to make a uchar image. */ if( in->BandFmt != IM_BANDFMT_UCHAR ) { IMAGE *t; if( !(t = im_open_local( out, "morph_new", "p" )) || im_notequalconst( in, t, 0 ) ) return( NULL ); in = t; } if( im_piocheck( in, out ) || im_check_uncoded( "morph", in ) || im_check_format( "morph", in, IM_BANDFMT_UCHAR ) || im_check_imask( "morph", mask ) ) return( NULL ); for( i = 0; i < n_mask; i++ ) if( mask->coeff[i] != 0 && mask->coeff[i] != 128 && mask->coeff[i] != 255 ) { im_error( "morph", _( "bad mask element (%d " "should be 0, 128 or 255)" ), mask->coeff[i] ); return( NULL ); } if( !(morph = IM_NEW( out, Morph )) ) return( NULL ); morph->in = in; morph->out = out; morph->mask = NULL; morph->op = op; morph->n_pass = 0; for( i = 0; i < MAX_PASS; i++ ) morph->pass[i].vector = NULL; if( im_add_close_callback( out, (im_callback_fn) morph_close, morph, NULL ) || !(morph->mask = im_dup_imask( mask, "morph" )) ) return( NULL ); /* Generate code for this mask / image, if possible. */ if( vips_vector_isenabled() ) { if( pass_compile( morph ) ) pass_free( morph ); } return( morph ); } /* Our sequence value. */ typedef struct { Morph *morph; REGION *ir; /* Input region */ int *soff; /* Offsets we check for set */ int ss; /* ... and number we check for set */ int *coff; /* Offsets we check for clear */ int cs; /* ... and number we check for clear */ int last_bpl; /* Avoid recalcing offsets, if we can */ /* In vector mode we need a pair of intermediate buffers to keep the * results of each pass in. */ void *t1; void *t2; } MorphSequence; /* Free a sequence value. */ static int morph_stop( void *vseq, void *a, void *b ) { MorphSequence *seq = (MorphSequence *) vseq; IM_FREEF( im_region_free, seq->ir ); IM_FREE( seq->t1 ); IM_FREE( seq->t2 ); return( 0 ); } /* Morph start function. */ static void * morph_start( IMAGE *out, void *a, void *b ) { IMAGE *in = (IMAGE *) a; Morph *morph = (Morph *) b; int n_mask = morph->mask->xsize * morph->mask->ysize; int sz = IM_IMAGE_N_ELEMENTS( in ); MorphSequence *seq; if( !(seq = IM_NEW( out, MorphSequence )) ) return( NULL ); /* Init! */ seq->morph = morph; seq->ir = NULL; seq->soff = NULL; seq->ss = 0; seq->coff = NULL; seq->cs = 0; seq->last_bpl = -1; seq->t1 = NULL; seq->t2 = NULL; /* Attach region and arrays. */ seq->ir = im_region_create( in ); seq->soff = IM_ARRAY( out, n_mask, int ); seq->coff = IM_ARRAY( out, n_mask, int ); seq->t1 = IM_ARRAY( NULL, sz, VipsPel ); seq->t2 = IM_ARRAY( NULL, sz, VipsPel ); if( !seq->ir || !seq->soff || !seq->coff || !seq->t1 || !seq->t2 ) { morph_stop( seq, in, NULL ); return( NULL ); } return( seq ); } /* Dilate! */ static int dilate_gen( REGION *or, void *vseq, void *a, void *b ) { MorphSequence *seq = (MorphSequence *) vseq; Morph *morph = (Morph *) b; INTMASK *mask = morph->mask; REGION *ir = seq->ir; int *soff = seq->soff; int *coff = seq->coff; Rect *r = &or->valid; Rect s; int le = r->left; int to = r->top; int bo = IM_RECT_BOTTOM( r ); int sz = IM_REGION_N_ELEMENTS( or ); int *t; int x, y; int result, i; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); #ifdef DEBUG_VERBOSE printf( "dilate_gen: preparing %dx%d@%dx%d pixels\n", s.width, s.height, s.left, s.top ); #endif /*DEBUG_VERBOSE*/ /* Scan mask, building offsets we check when processing. Only do this * if the bpl has changed since the previous im_prepare(). */ if( seq->last_bpl != IM_REGION_LSKIP( ir ) ) { seq->last_bpl = IM_REGION_LSKIP( ir ); seq->ss = 0; seq->cs = 0; for( t = mask->coeff, y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++, t++ ) switch( *t ) { case 255: soff[seq->ss++] = IM_REGION_ADDR( ir, x + le, y + to ) - IM_REGION_ADDR( ir, le, to ); break; case 128: break; case 0: coff[seq->cs++] = IM_REGION_ADDR( ir, x + le, y + to ) - IM_REGION_ADDR( ir, le, to ); break; default: g_assert_not_reached(); } } /* Dilate! */ for( y = to; y < bo; y++ ) { VipsPel *p = IM_REGION_ADDR( ir, le, y ); VipsPel *q = IM_REGION_ADDR( or, le, y ); /* Loop along line. */ for( x = 0; x < sz; x++, q++, p++ ) { /* Search for a hit on the set list. */ result = 0; for( i = 0; i < seq->ss; i++ ) if( p[soff[i]] ) { /* Found a match! */ result = 255; break; } /* No set pixels ... search for a hit in the clear * pixels. */ if( !result ) for( i = 0; i < seq->cs; i++ ) if( !p[coff[i]] ) { /* Found a match! */ result = 255; break; } *q = result; } } return( 0 ); } /* Erode! */ static int erode_gen( REGION *or, void *vseq, void *a, void *b ) { MorphSequence *seq = (MorphSequence *) vseq; Morph *morph = (Morph *) b; INTMASK *mask = morph->mask; REGION *ir = seq->ir; int *soff = seq->soff; int *coff = seq->coff; Rect *r = &or->valid; Rect s; int le = r->left; int to = r->top; int bo = IM_RECT_BOTTOM(r); int sz = IM_REGION_N_ELEMENTS( or ); int *t; int x, y; int result, i; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); #ifdef DEBUG_VERBOSE printf( "erode_gen: preparing %dx%d@%dx%d pixels\n", s.width, s.height, s.left, s.top ); #endif /*DEBUG_VERBOSE*/ /* Scan mask, building offsets we check when processing. Only do this * if the bpl has changed since the previous im_prepare(). */ if( seq->last_bpl != IM_REGION_LSKIP( ir ) ) { seq->last_bpl = IM_REGION_LSKIP( ir ); seq->ss = 0; seq->cs = 0; for( t = mask->coeff, y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++, t++ ) switch( *t ) { case 255: soff[seq->ss++] = IM_REGION_ADDR( ir, x + le, y + to ) - IM_REGION_ADDR( ir, le, to ); break; case 128: break; case 0: coff[seq->cs++] = IM_REGION_ADDR( ir, x + le, y + to ) - IM_REGION_ADDR( ir, le, to ); break; default: g_assert_not_reached(); } } /* Erode! */ for( y = to; y < bo; y++ ) { VipsPel *p = IM_REGION_ADDR( ir, le, y ); VipsPel *q = IM_REGION_ADDR( or, le, y ); /* Loop along line. */ for( x = 0; x < sz; x++, q++, p++ ) { /* Check all set pixels are set. */ result = 255; for( i = 0; i < seq->ss; i++ ) if( !p[soff[i]] ) { /* Found a mismatch! */ result = 0; break; } /* Check all clear pixels are clear. */ if( result ) for( i = 0; i < seq->cs; i++ ) if( p[coff[i]] ) { result = 0; break; } *q = result; } } return( 0 ); } /* The vector codepath. */ static int morph_vector_gen( REGION *or, void *vseq, void *a, void *b ) { MorphSequence *seq = (MorphSequence *) vseq; Morph *morph = (Morph *) b; INTMASK *mask = morph->mask; REGION *ir = seq->ir; Rect *r = &or->valid; int sz = IM_REGION_N_ELEMENTS( or ); Rect s; int y, j; VipsExecutor executor[MAX_PASS]; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); #ifdef DEBUG_VERBOSE printf( "morph_vector_gen: preparing %dx%d@%dx%d pixels\n", s.width, s.height, s.left, s.top ); #endif /*DEBUG_VERBOSE*/ for( j = 0; j < morph->n_pass; j++ ) vips_executor_set_program( &executor[j], morph->pass[j].vector, sz ); for( y = 0; y < r->height; y++ ) { for( j = 0; j < morph->n_pass; j++ ) { void *d; /* The last pass goes to the output image, * intermediate passes go to t2. */ if( j == morph->n_pass - 1 ) d = IM_REGION_ADDR( or, r->left, r->top + y ); else d = seq->t2; vips_executor_set_scanline( &executor[j], ir, r->left, r->top + y ); vips_executor_set_array( &executor[j], morph->pass[j].r, seq->t1 ); vips_executor_set_destination( &executor[j], d ); vips_executor_run( &executor[j] ); IM_SWAP( void *, seq->t1, seq->t2 ); } } return( 0 ); } /* Morph an image. */ static int morphology( IMAGE *in, IMAGE *out, INTMASK *mask, MorphOp op ) { Morph *morph; im_generate_fn generate; /* Check parameters. */ if( !(morph = morph_new( in, out, mask, op )) ) return( -1 ); /* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output * would be 1x1. */ if( im_cp_desc( morph->out, morph->in ) ) return( -1 ); morph->out->Xsize -= morph->mask->xsize - 1; morph->out->Ysize -= morph->mask->ysize - 1; if( morph->out->Xsize <= 0 || morph->out->Ysize <= 0 ) { im_error( "morph", "%s", _( "image too small for mask" ) ); return( -1 ); } if( morph->n_pass ) { generate = morph_vector_gen; #ifdef DEBUG printf( "morph_vector_gen: %d passes\n", morph->n_pass ); #endif /*DEBUG*/ } else if( morph->op == DILATE ) generate = dilate_gen; else generate = erode_gen; if( im_demand_hint( morph->out, IM_SMALLTILE, morph->in, NULL ) || im_generate( morph->out, morph_start, generate, morph_stop, morph->in, morph ) ) return( -1 ); morph->out->Xoffset = -morph->mask->xsize / 2; morph->out->Yoffset = -morph->mask->ysize / 2; return( 0 ); } /* Keep the _raw versions for compat. */ int im_dilate_raw( IMAGE *in, IMAGE *out, INTMASK *mask ) { return( morphology( in, out, mask, DILATE ) ); } int im_erode_raw( IMAGE *in, IMAGE *out, INTMASK *mask ) { return( morphology( in, out, mask, ERODE ) ); } int im_dilate( IMAGE *in, IMAGE *out, INTMASK *mask ) { IMAGE *t1 = im_open_local( out, "im_dilate:1", "p" ); if( !t1 || im_embed( in, t1, 1, mask->xsize / 2, mask->ysize / 2, in->Xsize + mask->xsize - 1, in->Ysize + mask->ysize - 1 ) || morphology( t1, out, mask, DILATE ) ) return( -1 ); out->Xoffset = 0; out->Yoffset = 0; return( 0 ); } int im_erode( IMAGE *in, IMAGE *out, INTMASK *mask ) { IMAGE *t1 = im_open_local( out, "im_erode:1", "p" ); if( !t1 || im_embed( in, t1, 1, mask->xsize / 2, mask->ysize / 2, in->Xsize + mask->xsize - 1, in->Ysize + mask->ysize - 1 ) || morphology( t1, out, mask, ERODE ) ) return( -1 ); out->Xoffset = 0; out->Yoffset = 0; return( 0 ); } libvips-8.9.1/libvips/morphology/labelregions.c000066400000000000000000000110151361153320700216610ustar00rootroot00000000000000/* labelregions.c * * 5/11/09 * - renamed from im_segment() * 11/2/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pmorphology.h" typedef struct _VipsLabelregions { VipsMorphology parent_instance; VipsImage *mask; int segments; } VipsLabelregions; typedef VipsMorphologyClass VipsLabelregionsClass; G_DEFINE_TYPE( VipsLabelregions, vips_labelregions, VIPS_TYPE_MORPHOLOGY ); static int vips_labelregions_build( VipsObject *object ) { VipsMorphology *morphology = VIPS_MORPHOLOGY( object ); VipsImage *in = morphology->in; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *mask; int segments; int *m; int x, y; if( VIPS_OBJECT_CLASS( vips_labelregions_parent_class )-> build( object ) ) return( -1 ); /* Create the zero mask image in memory. */ mask = vips_image_new_memory(); g_object_set( object, "mask", mask, NULL ); if( vips_black( &t[0], in->Xsize, in->Ysize, NULL ) || vips_cast( t[0], &t[1], VIPS_FORMAT_INT, NULL ) || vips_image_write( t[1], mask ) ) return( -1 ); segments = 1; m = (int *) mask->data; for( y = 0; y < mask->Ysize; y++ ) { for( x = 0; x < mask->Xsize; x++ ) { if( !m[x] ) { /* Use a direct path for speed. */ if( vips__draw_flood_direct( mask, in, segments, x, y ) ) return( -1 ); segments += 1; } } m += mask->Xsize; } g_object_set( object, "segments", segments, NULL ); return( 0 ); } static void vips_labelregions_class_init( VipsLabelregionsClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "labelregions"; vobject_class->description = _( "label regions in an image" ); vobject_class->build = vips_labelregions_build; VIPS_ARG_IMAGE( class, "mask", 2, _( "Mask" ), _( "Mask of region labels" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsLabelregions, mask ) ); VIPS_ARG_INT( class, "segments", 3, _( "Segments" ), _( "Number of discrete contigious regions" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsLabelregions, segments ), 0, 1000000000, 0 ); } static void vips_labelregions_init( VipsLabelregions *labelregions ) { } /** * vips_labelregions: (method) * @in: image to test * @mask: write labelled regions here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @segments: return number of regions found here * * Repeatedly scans @in for regions of 4-connected pixels * with the same pixel value. Every time a region is discovered, those * pixels are marked in @mask with a unique serial number. Once all pixels * have been labelled, the operation returns, setting @segments to the number * of discrete regions which were detected. * * @mask is always a 1-band #VIPS_FORMAT_INT image of the same dimensions as * @in. * * This operation is useful for, for example, blob counting. You can use the * morphological operators to detect and isolate a series of objects, then use * vips_labelregions() to number them all. * * Use vips_hist_find_indexed() to (for example) find blob coordinates. * * See also: vips_hist_find_indexed(). * * Returns: 0 on success, -1 on error. */ int vips_labelregions( VipsImage *in, VipsImage **mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "labelregions", ap, in, mask ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/morphology/morph.c000066400000000000000000000136031361153320700203450ustar00rootroot00000000000000/* morphology * * 23/10/13 * - from vips_conv() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* This is a simple wrapper over the old vips7 functions. At some point we * should rewrite this as a pure vips8 class and redo the vips7 functions as * wrappers over this. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pmorphology.h" /** * VipsOperationMorphology: * @VIPS_OPERATION_MORPHOLOGY_ERODE: true if all set * @VIPS_OPERATION_MORPHOLOGY_DILATE: true if one set * * More like hit-miss, really. * * See also: vips_morph(). */ typedef struct { VipsMorphology parent_instance; VipsImage *out; VipsImage *mask; VipsOperationMorphology morph; /* @mask cast ready for processing. */ VipsImage *M; } VipsMorph; typedef VipsMorphologyClass VipsMorphClass; G_DEFINE_TYPE( VipsMorph, vips_morph, VIPS_TYPE_MORPHOLOGY ); static int vips_morph_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsMorphology *morphology = (VipsMorphology *) object; VipsMorph *morph = (VipsMorph *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); INTMASK *imsk; VipsImage *in; g_object_set( morph, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_morph_parent_class )->build( object ) ) return( -1 ); in = morphology->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_check_matrix( class->nickname, morph->mask, &t[1] ) ) return( -1 ); morph->M = t[1]; if( !(imsk = im_vips2imask( morph->M, class->nickname )) || !im_local_imask( morph->out, imsk ) ) return( -1 ); switch( morph->morph ) { case VIPS_OPERATION_MORPHOLOGY_DILATE: if( im_dilate( in, morph->out, imsk ) ) return( -1 ); break; case VIPS_OPERATION_MORPHOLOGY_ERODE: if( im_erode( in, morph->out, imsk ) ) return( -1 ); break; default: g_assert_not_reached(); } vips_reorder_margin_hint( morph->out, morph->M->Xsize * morph->M->Ysize ); return( 0 ); } static void vips_morph_class_init( VipsMorphClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "morph"; object_class->description = _( "morphology operation" ); object_class->build = vips_morph_build; VIPS_ARG_IMAGE( class, "out", 10, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMorph, out ) ); VIPS_ARG_IMAGE( class, "mask", 20, _( "Mask" ), _( "Input matrix image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMorph, mask ) ); VIPS_ARG_ENUM( class, "morph", 103, _( "Morphology" ), _( "Morphological operation to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMorph, morph ), VIPS_TYPE_OPERATION_MORPHOLOGY, VIPS_OPERATION_MORPHOLOGY_ERODE ); } static void vips_morph_init( VipsMorph *morph ) { morph->morph = VIPS_OPERATION_MORPHOLOGY_ERODE; } /** * vips_morph: (method) * @in: input image * @out: (out): output image * @mask: morphology with this mask * @morph: operation to perform * @...: %NULL-terminated list of optional named arguments * * Performs a morphological operation on @in using @mask as a * structuring element. * * The image should have 0 (black) for no object and 255 * (non-zero) for an object. Note that this is the reverse of the usual * convention for these operations, but more convenient when combined with the * boolean operators. The output image is the same * size as the input image: edge pxels are made by expanding the input image * as necessary. * * Mask coefficients can be either 0 (for object) or 255 (for background) * or 128 (for do not care). The origin of the mask is at location * (m.xsize / 2, m.ysize / 2), integer division. All algorithms have been * based on the book "Fundamentals of Digital Image Processing" by A. Jain, * pp 384-388, Prentice-Hall, 1989. * * For #VIPS_OPERATION_MORPHOLOGY_ERODE, * the whole mask must match for the output pixel to be * set, that is, the result is the logical AND of the selected input pixels. * * For #VIPS_OPERATION_MORPHOLOGY_DILATE, * the output pixel is set if any part of the mask * matches, that is, the result is the logical OR of the selected input pixels. * * See the boolean operations vips_andimage(), vips_orimage() and * vips_eorimage() * for analogues of the usual set difference and set union operations. * * Operations are performed using the processor's vector unit, * if possible. Disable this with --vips-novector or IM_NOVECTOR. * * Returns: 0 on success, -1 on error */ int vips_morph( VipsImage *in, VipsImage **out, VipsImage *mask, VipsOperationMorphology morph, ... ) { va_list ap; int result; va_start( ap, morph ); result = vips_call_split( "morph", ap, in, out, mask, morph ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/morphology/morphology.c000066400000000000000000000105131361153320700214140ustar00rootroot00000000000000/* base class for all morphological operations * * properties: * - one input image */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pmorphology.h" /** * SECTION: morphology * @short_description: morphological operators, rank filters and related image * analysis * @see_also: arithmetic * @stability: Stable * @include: vips/vips.h * * The morphological functions search images * for particular patterns of pixels, specified with the mask argument, * either adding or removing pixels when they find a match. They are useful * for cleaning up images --- for example, you might threshold an image, and * then use one of the morphological functions to remove all single isolated * pixels from the result. * * If you combine the morphological operators with the mask rotators * (vips_rot45(), for example) and apply them repeatedly, you * can achieve very complicated effects: you can thin, prune, fill, open edges, * close gaps, and many others. For example, see `Fundamentals of Digital * Image Processing' by A. Jain, pp 384-388, Prentice-Hall, 1989 for more * ideas. * * Beware that VIPS reverses the usual image processing convention, by * assuming white objects (non-zero pixels) on a black background (zero * pixels). * * The mask you give to the morphological functions should contain only the * values 0 (for background), 128 (for don't care) and 255 (for object). The * mask must have odd length sides --- the origin of the mask is taken to be * the centre value. For example, the mask: * * 3 3 * 128 255 128 * 255 0 255 * 128 255 128 * * applied to an image with vips_morph() #VIPS_OPERATION_MORPHOLOGY_ERODE, will * find all black pixels * 4-way connected with white pixels. Essentially, dilate * sets pixels in the output if any part of the mask matches, whereas * erode sets pixels only if all of the mask matches. * * See vips_andimage(), vips_orimage() and vips_eorimage() * for analogues of the usual set difference and set union operations. */ G_DEFINE_ABSTRACT_TYPE( VipsMorphology, vips_morphology, VIPS_TYPE_OPERATION ); static void vips_morphology_class_init( VipsMorphologyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "morphology"; vobject_class->description = _( "morphological operations" ); /* Inputs set by subclassess. */ VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMorphology, in ) ); } static void vips_morphology_init( VipsMorphology *morphology ) { } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_morphology_operation_init( void ) { extern int vips_morph_get_type( void ); extern int vips_rank_get_type( void ); extern int vips_countlines_get_type( void ); extern int vips_labelregions_get_type( void ); extern int vips_fill_nearest_get_type( void ); vips_morph_get_type(); vips_rank_get_type(); vips_countlines_get_type(); vips_labelregions_get_type(); vips_fill_nearest_get_type(); } libvips-8.9.1/libvips/morphology/nearest.c000066400000000000000000000216221361153320700206610ustar00rootroot00000000000000/* nearest.c * * 31/10/17 * - from labelregion */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pmorphology.h" /* A seed pixel. We fill outwards from each of these. */ typedef struct _Seed { int x; int y; int r; /* Bits saying which octant can still grow. When they are all zero, the * seed is dead. */ int octant_mask; } Seed; typedef struct _VipsFillNearest { VipsMorphology parent_instance; VipsImage *out; VipsImage *distance; /* Size of our image. */ int width; int height; /* All our seed pixels. There can be a lot of these. */ GArray *seeds; } VipsFillNearest; typedef VipsMorphologyClass VipsFillNearestClass; G_DEFINE_TYPE( VipsFillNearest, vips_fill_nearest, VIPS_TYPE_MORPHOLOGY ); static void vips_fill_nearest_finalize( GObject *gobject ) { VipsFillNearest *nearest = (VipsFillNearest *) gobject; #ifdef DEBUG printf( "vips_fill_nearest_finalize: " ); vips_object_print_name( VIPS_OBJECT( gobject ) ); printf( "\n" ); #endif /*DEBUG*/ VIPS_FREEF( g_array_unref, nearest->seeds ); G_OBJECT_CLASS( vips_fill_nearest_parent_class )->finalize( gobject ); } struct _Circle; typedef void (*VipsFillNearestPixel)( struct _Circle *circle, int x, int y, int octant ); typedef struct _Circle { VipsFillNearest *nearest; Seed *seed; int octant_mask; VipsFillNearestPixel nearest_pixel; } Circle; static void vips_fill_nearest_pixel( Circle *circle, int x, int y, int octant ) { float *p; float radius; int dx, dy; if( (circle->seed->octant_mask & (1 << octant)) == 0 ) return; /* We need to do this as float, or we'll have dithering along edges. */ p = (float *) VIPS_IMAGE_ADDR( circle->nearest->distance, x, y ); dx = x - circle->seed->x; dy = y - circle->seed->y; radius = sqrt( dx * dx + dy * dy ); if( p[0] == 0 || p[0] > radius ) { VipsMorphology *morphology = VIPS_MORPHOLOGY( circle->nearest ); VipsImage *in = morphology->in; int ps = VIPS_IMAGE_SIZEOF_PEL( in ); VipsPel *pi = VIPS_IMAGE_ADDR( in, circle->seed->x, circle->seed->y ); VipsPel *qi = VIPS_IMAGE_ADDR( circle->nearest->out, x, y ); int i; p[0] = radius; circle->octant_mask |= 1 << octant; for( i = 0; i < ps; i++ ) qi[i] = pi[i]; } } static void vips_fill_nearest_pixel_clip( Circle *circle, int x, int y, int octant ) { if( (circle->seed->octant_mask & (1 << octant)) == 0 ) return; if( x >= 0 && x < circle->nearest->width && y >= 0 && y < circle->nearest->height ) vips_fill_nearest_pixel( circle, x, y, octant ); } static void vips_fill_nearest_scanline( VipsImage *image, int y, int x1, int x2, int quadrant, void *client ) { Circle *circle = (Circle *) client; circle->nearest_pixel( circle, x1, y, quadrant ); circle->nearest_pixel( circle, x2, y, quadrant + 4 ); /* We have to do one point back as well, or we'll leave gaps at * around 45 degrees. */ if( quadrant == 0 ) { circle->nearest_pixel( circle, x1, y - 1, quadrant ); circle->nearest_pixel( circle, x2, y - 1, quadrant + 4 ); } else if( quadrant == 1 ) { circle->nearest_pixel( circle, x1, y + 1, quadrant ); circle->nearest_pixel( circle, x2, y + 1, quadrant + 4 ); } else { circle->nearest_pixel( circle, x1 + 1, y, quadrant ); circle->nearest_pixel( circle, x2 - 1, y, quadrant + 4 ); } } static void vips_fill_nearest_grow_seed( VipsFillNearest *nearest, Seed *seed ) { Circle circle; circle.nearest = nearest; circle.seed = seed; circle.octant_mask = 0; if( seed->x - seed->r >= 0 && seed->x + seed->r < nearest->width && seed->y - seed->r >= 0 && seed->y + seed->r < nearest->height ) circle.nearest_pixel = vips_fill_nearest_pixel; else circle.nearest_pixel = vips_fill_nearest_pixel_clip; vips__draw_circle_direct( nearest->distance, seed->x, seed->y, seed->r, vips_fill_nearest_scanline, &circle ); /* Update the action_mask for this seed. Next time, we can skip any * octants where we failed to act this time. */ seed->octant_mask = circle.octant_mask; seed->r += 1; } static int vips_fill_nearest_build( VipsObject *object ) { VipsMorphology *morphology = VIPS_MORPHOLOGY( object ); VipsFillNearest *nearest = (VipsFillNearest *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); int ps; int x, y, i; if( VIPS_OBJECT_CLASS( vips_fill_nearest_parent_class )-> build( object ) ) return( -1 ); if( vips_image_wio_input( morphology->in ) ) return( -1 ); nearest->width = morphology->in->Xsize; nearest->height = morphology->in->Ysize; ps = VIPS_IMAGE_SIZEOF_PEL( morphology->in ); nearest->seeds = g_array_new( FALSE, FALSE, sizeof( Seed ) ); for( y = 0; y < nearest->height; y++ ) { VipsPel *p; p = VIPS_IMAGE_ADDR( morphology->in, 0, y ); for( x = 0; x < nearest->width; x++ ) { for( i = 0; i < ps; i++ ) if( p[i] ) break; if( i != ps ) { Seed *seed; g_array_set_size( nearest->seeds, nearest->seeds->len + 1 ); seed = &g_array_index( nearest->seeds, Seed, nearest->seeds->len - 1 ); seed->x = x; seed->y = y; seed->r = 1; seed->octant_mask = 255; } p += ps; } } /* Create the output and distance images in memory. */ g_object_set( object, "distance", vips_image_new_memory(), NULL ); if( vips_black( &t[1], nearest->width, nearest->height, NULL ) || vips_cast( t[1], &t[2], VIPS_FORMAT_FLOAT, NULL ) || vips_image_write( t[2], nearest->distance ) ) return( -1 ); g_object_set( object, "out", vips_image_new_memory(), NULL ); if( vips_image_write( morphology->in, nearest->out ) ) return( -1 ); while( nearest->seeds->len > 0 ) { #ifdef DEBUG printf( "looping for %d seeds ...\n", nearest->seeds->len ); #endif /*DEBUG*/ /* Grow all seeds by one pixel. */ for( i = 0; i < nearest->seeds->len; i++ ) vips_fill_nearest_grow_seed( nearest, &g_array_index( nearest->seeds, Seed, i ) ); /* Remove dead seeds. */ i = 0; while( i < nearest->seeds->len ) { Seed *seed = &g_array_index( nearest->seeds, Seed, i ); if( seed->octant_mask == 0 ) g_array_remove_index_fast( nearest->seeds, i ); else i += 1; } } return( 0 ); } static void vips_fill_nearest_class_init( VipsFillNearestClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->finalize = vips_fill_nearest_finalize; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "fill_nearest"; vobject_class->description = _( "fill image zeros with nearest non-zero pixel" ); vobject_class->build = vips_fill_nearest_build; VIPS_ARG_IMAGE( class, "out", 2, _( "Out" ), _( "Value of nearest non-zero pixel" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsFillNearest, out ) ); VIPS_ARG_IMAGE( class, "distance", 3, _( "Distance" ), _( "Distance to nearest non-zero pixel" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsFillNearest, distance ) ); } static void vips_fill_nearest_init( VipsFillNearest *nearest ) { } /** * vips_fill_nearest: (method) * @in: image to test * @out: image with zero pixels filled with the nearest non-zero pixel * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @distance: output image of distance to nearest non-zero pixel * * Fill outwards from every non-zero pixel in @in, setting pixels in @distance * and @value. * * At the position of zero pixels in @in, @distance contains the distance to * the nearest non-zero pixel in @in, and @value contains the value of that * pixel. * * @distance is a one-band float image. @value has the same number of bands and * format as @in. * * See also: vips_hist_find_indexed(). * * Returns: 0 on success, -1 on error. */ int vips_fill_nearest( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "fill_nearest", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/morphology/pmorphology.h000066400000000000000000000040051361153320700216000ustar00rootroot00000000000000/* base class for all morphology operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PMORPHOLOGY_H #define VIPS_PMORPHOLOGY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_MORPHOLOGY (vips_morphology_get_type()) #define VIPS_MORPHOLOGY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_MORPHOLOGY, VipsMorphology )) #define VIPS_MORPHOLOGY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_MORPHOLOGY, VipsMorphologyClass)) #define VIPS_IS_MORPHOLOGY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_MORPHOLOGY )) #define VIPS_IS_MORPHOLOGY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_MORPHOLOGY )) #define VIPS_MORPHOLOGY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_MORPHOLOGY, VipsMorphologyClass )) typedef struct _VipsMorphology VipsMorphology; struct _VipsMorphology { VipsOperation parent_instance; VipsImage *in; }; typedef struct _VipsMorphologyClass { VipsOperationClass parent_class; } VipsMorphologyClass; GType vips_morphology_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PMORPHOLOGY_H*/ libvips-8.9.1/libvips/morphology/rank.c000066400000000000000000000303221361153320700201500ustar00rootroot00000000000000/* Rank filter. * * Author: JC * Written on: 19/8/96 * Modified on: * JC 20/8/96 * - now uses insert-sort rather than bubble-sort * - now works for any non-complex type * JC 22/6/01 * - oops, sanity check on n wrong * JC 28/8/03 * - cleanups * - better selection algorithm ... same speed for 3x3, about 3x faster * for 5x5, faster still for larger windows * - index from zero for consistency with other parts of vips * 7/4/04 * - now uses im_embed() with edge stretching on the input, not * the output * - sets Xoffset / Yoffset * 7/10/04 * - oops, im_embed() size was wrong * 10/11/10 * - cleanups * - gtk-doc * 17/1/14 * - redone as a class * 12/11/16 * - oop, allow index == 0, thanks Rob */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pmorphology.h" typedef struct _VipsRank { VipsMorphology parent_instance; VipsImage *out; int width; int height; int index; int n; } VipsRank; typedef VipsMorphologyClass VipsRankClass; G_DEFINE_TYPE( VipsRank, vips_rank, VIPS_TYPE_MORPHOLOGY ); /* Sequence value: just the array we sort in. */ typedef struct { VipsRegion *ir; VipsPel *sort; } VipsRankSequence; static int vips_rank_stop( void *vseq, void *a, void *b ) { VipsRankSequence *seq = (VipsRankSequence *) vseq; VIPS_FREEF( g_object_unref, seq->ir ); return( 0 ); } static void * vips_rank_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsRank *rank = (VipsRank *) b; VipsRankSequence *seq; if( !(seq = VIPS_NEW( out, VipsRankSequence )) ) return( NULL ); seq->ir = NULL; seq->sort = NULL; seq->ir = vips_region_new( in ); if( !(seq->sort = VIPS_ARRAY( out, VIPS_IMAGE_SIZEOF_ELEMENT( in ) * rank->n, VipsPel )) ) { vips_rank_stop( seq, in, rank ); return( NULL ); } return( (void *) seq ); } /* Inner loop for select-sorting TYPE. */ #define LOOP_SELECT( TYPE ) { \ TYPE *q = (TYPE *) VIPS_REGION_ADDR( or, r->left, r->top + y ); \ TYPE *p = (TYPE *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); \ TYPE *sort = (TYPE *) seq->sort; \ TYPE a; \ \ for( x = 0; x < sz; x++ ) { \ TYPE *d = p + x; \ \ /* Copy window into sort[]. */ \ for( k = 0, j = 0; j < rank->height; j++ ) { \ for( i = 0; i < eaw; i += bands, k++ ) \ sort[k] = d[i]; \ d += ls; \ } \ \ /* Rearrange sort[] to make the index-th element the index-th * smallest, adapted from Numerical Recipes in C. */ \ lower = 0; /* Range we know the result lies in */ \ upper = rank->n - 1; \ for(;;) { \ if( upper - lower < 2 ) { \ /* 1 or 2 elements left. */ \ if( upper - lower == 1 && \ sort[lower] > sort[upper] ) \ VIPS_SWAP( TYPE, \ sort[lower], sort[upper] ); \ break; \ } \ else { \ /* Pick mid-point of remaining elements. */ \ mid = (lower + upper) >> 1; \ \ /* Sort lower/mid/upper elements, hold * midpoint in sort[lower + 1] for * partitioning. */ \ VIPS_SWAP( TYPE, sort[lower + 1], sort[mid] ); \ if( sort[lower] > sort[upper] ) \ VIPS_SWAP( TYPE, \ sort[lower], sort[upper] ); \ if( sort[lower + 1] > sort[upper] ) \ VIPS_SWAP( TYPE, \ sort[lower + 1], sort[upper] );\ if( sort[lower] > sort[lower + 1] ) \ VIPS_SWAP( TYPE, \ sort[lower], sort[lower + 1] );\ \ i = lower + 1; \ j = upper; \ a = sort[lower + 1]; \ \ for(;;) { \ /* Search for out of order elements. */ \ do \ i++; \ while( sort[i] < a ); \ do \ j--; \ while( sort[j] > a ); \ if( j < i ) \ break; \ VIPS_SWAP( TYPE, sort[i], sort[j] ); \ } \ \ /* Replace mid element. */ \ sort[lower + 1] = sort[j]; \ sort[j] = a; \ \ /* Move to partition with the kth element. */ \ if( j >= rank->index ) \ upper = j - 1; \ if( j <= rank->index ) \ lower = i; \ } \ } \ \ q[x] = sort[rank->index]; \ } \ } /* Loop for find max of window. */ #define LOOP_MAX( TYPE ) { \ TYPE *q = (TYPE *) VIPS_REGION_ADDR( or, r->left, r->top + y ); \ TYPE *p = (TYPE *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); \ \ for( x = 0; x < sz; x++ ) { \ TYPE *d = &p[x]; \ TYPE max; \ \ max = *d; \ for( j = 0; j < rank->height; j++ ) { \ TYPE *e = d; \ \ for( i = 0; i < rank->width; i++ ) { \ if( *e > max ) \ max = *e; \ \ e += bands; \ } \ \ d += ls; \ } \ \ q[x] = max; \ } \ } /* Loop for find min of window. */ #define LOOP_MIN( TYPE ) { \ TYPE *q = (TYPE *) VIPS_REGION_ADDR( or, r->left, r->top + y ); \ TYPE *p = (TYPE *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); \ \ for( x = 0; x < sz; x++ ) { \ TYPE *d = &p[x]; \ TYPE min; \ \ min = *d; \ for( j = 0; j < rank->height; j++ ) { \ TYPE *e = d; \ \ for( i = 0; i < rank->width; i++ ) { \ if( *e < min ) \ min = *e; \ \ e += bands; \ } \ \ d += ls; \ } \ \ q[x] = min; \ } \ } #define SWITCH( OPERATION ) \ switch( rank->out->BandFmt ) { \ case VIPS_FORMAT_UCHAR: OPERATION( unsigned char ); break; \ case VIPS_FORMAT_CHAR: OPERATION( signed char ); break; \ case VIPS_FORMAT_USHORT: OPERATION( unsigned short ); break; \ case VIPS_FORMAT_SHORT: OPERATION( signed short ); break; \ case VIPS_FORMAT_UINT: OPERATION( unsigned int ); break; \ case VIPS_FORMAT_INT: OPERATION( signed int ); break; \ case VIPS_FORMAT_FLOAT: OPERATION( float ); break; \ case VIPS_FORMAT_DOUBLE: OPERATION( double ); break; \ \ default: \ g_assert_not_reached(); \ } static int vips_rank_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; VipsRankSequence *seq = (VipsRankSequence *) vseq; VipsRegion *ir = seq->ir; VipsImage *in = (VipsImage *) a; VipsRank *rank = (VipsRank *) b; int bands = in->Bands; int eaw = rank->width * bands; /* elements across window */ int sz = VIPS_REGION_N_ELEMENTS( or ); VipsRect s; int ls; int x, y; int i, j, k; int upper, lower, mid; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += rank->width - 1; s.height += rank->height - 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); ls = VIPS_REGION_LSKIP( ir ) / VIPS_IMAGE_SIZEOF_ELEMENT( in ); for( y = 0; y < r->height; y++ ) { if( rank->index == 0 ) SWITCH( LOOP_MIN ) else if( rank->index == rank->n - 1 ) SWITCH( LOOP_MAX ) else SWITCH( LOOP_SELECT ) } return( 0 ); } static int vips_rank_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsMorphology *morphology = VIPS_MORPHOLOGY( object ); VipsRank *rank = (VipsRank *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_rank_parent_class )->build( object ) ) return( -1 ); in = morphology->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_check_noncomplex( class->nickname, in ) ) return( -1 ); if( rank->width > in->Xsize || rank->height > in->Ysize ) { vips_error( class->nickname, "%s", _( "window too large" ) ); return( -1 ); } rank->n = rank->width * rank->height; if( rank->index < 0 || rank->index > rank->n - 1 ) { vips_error( class->nickname, "%s", _( "index out of range" ) ); return( -1 ); } /* Expand the input. */ if( vips_embed( in, &t[1], rank->width / 2, rank->height / 2, in->Xsize + rank->width - 1, in->Ysize + rank->height - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[1]; g_object_set( object, "out", vips_image_new(), NULL ); /* Set demand hints. FATSTRIP is good for us, as THINSTRIP will cause * too many recalculations on overlaps. */ if( vips_image_pipelinev( rank->out, VIPS_DEMAND_STYLE_FATSTRIP, in, NULL ) ) return( -1 ); rank->out->Xsize -= rank->width - 1; rank->out->Ysize -= rank->height - 1; if( vips_image_generate( rank->out, vips_rank_start, vips_rank_generate, vips_rank_stop, in, rank ) ) return( -1 ); rank->out->Xoffset = 0; rank->out->Yoffset = 0; vips_reorder_margin_hint( rank->out, rank->width * rank->height ); return( 0 ); } static void vips_rank_class_init( VipsRankClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "rank"; object_class->description = _( "rank filter" ); object_class->build = vips_rank_build; VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsRank, out ) ); VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Window width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRank, width ), 1, 100000, 11 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Window height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRank, height ), 1, 100000, 11 ); VIPS_ARG_INT( class, "index", 6, _( "index" ), _( "Select pixel at index" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRank, index ), 0, 100000000, 50 ); } static void vips_rank_init( VipsRank *rank ) { rank->width = 11; rank->height = 11; rank->index = 50; } /** * vips_rank: (method) * @in: input image * @out: (out): output image * @width: width of region * @height: height of region * @index: select pixel * @...: %NULL-terminated list of optional named arguments * * vips_rank() does rank filtering on an image. A window of size @width by * @height is passed over the image. At each position, the pixels inside the * window are sorted into ascending order and the pixel at position @index is * output. @index numbers from 0. * * It works for any non-complex image type, with any number of bands. * The input is expanded by copying edge pixels before performing the * operation so that the output image has the same size as the input. * Edge pixels in the output image are therefore only approximate. * * For a median filter with mask size m (3 for 3x3, 5 for 5x5, etc.) use * * vips_rank( in, out, m, m, m * m / 2 ); * * The special cases n == 0 and n == m * m - 1 are useful dilate and * expand operators. * * See also: vips_conv(), vips_median(), vips_spcor(). * * Returns: 0 on success, -1 on error */ int vips_rank( VipsImage *in, VipsImage **out, int width, int height, int index, ... ) { va_list ap; int result; va_start( ap, index ); result = vips_call_split( "rank", ap, in, out, width, height, index ); va_end( ap ); return( result ); } /** * vips_median: (method) * @in: input image * @out: (out): output image * @size: size of region * @...: %NULL-terminated list of optional named arguments * * A convenience function equivalent to: * * vips_rank( in, out, size, size, (size * size) / 2 ); * * See also: vips_rank(). * * Returns: 0 on success, -1 on error */ int vips_median( VipsImage *in, VipsImage **out, int size, ... ) { va_list ap; int result; va_start( ap, size ); result = vips_call_split( "rank", ap, in, out, size, size, (size * size) / 2 ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/mosaicing/000077500000000000000000000000001361153320700166235ustar00rootroot00000000000000libvips-8.9.1/libvips/mosaicing/Makefile.am000066400000000000000000000007151361153320700206620ustar00rootroot00000000000000noinst_LTLIBRARIES = libmosaicing.la libmosaicing_la_SOURCES = \ mosaicing.c \ merge.c \ mosaic.c \ match.c \ mosaic1.c \ global_balance.c \ im_avgdxdy.c \ im_chkpair.c \ im_clinear.c \ im_improve.c \ im_initialize.c \ im_lrcalcon.c \ im_lrmerge.c \ im_lrmosaic.c \ im_tbcalcon.c \ im_tbmerge.c \ im_remosaic.c \ im_tbmosaic.c \ global_balance.h \ pmosaicing.h AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ libvips-8.9.1/libvips/mosaicing/global_balance.c000066400000000000000000001224461361153320700217050ustar00rootroot00000000000000/* Parse ".desc" files from mosaiced images to generate (x,y) offsets for * every sub-image. Find all overlap stats and solve balancing with LMS. * Regenerate mosaic, with balancing fixed. * * 1/12/93 JC * - first version, unfinished! * 6/9/95 JC * - LMS fixed, now works, more or less * 12/9/95 JC * - now does positions correctly too * - ignores trivial overlaps * 19/9/95 JC * - prints correct number of balance factors! * 10/11/95 JC * - now tracks im_copy() calls too, so you can save sub-images * 12/1/96 JC * - slightly clearer diagnostics * - better centre of factors around 1.0 with log() average * 1/3/96 JC * - new im_global_balance_float variant lets our caller adjust factor * range if output has burn-out * - im_global_balance_search uses the above to produce scaled output ... * very slow! * 11/3/96 JC * - now tries current directory too for input files * 22/3/96 JC * - horrible bug in position finding! now fixed * 1/8/97 JC * - revised for new mosaic functions and non-square images * 12/9/97 JC * - code for im_lrmosaic1() support * - output type == input type, so works for short images too * 6/1/99 JC * - new gamma parameter, do scale in linear space * - removed _search version, as can now be done with ip * - renamed _float to f suffix, in line with im_conv()/im_convf() * 15/2/00 JC * - balancef() did not scale in linear space * 2/2/01 JC * - added tunable max blend width * 7/11/01 JC * - global_balance.h broken out for im_remosaic() * 25/02/02 JC * - better transform function scheme * 21/3/01 JC * - quicker bailout on error * 8/11/02 JC * - add <> around file names so you can have spaces :( * 9/12/02 JC * - track original params and always reuse them ... makes us proof * against geo reconstruct errors * 10/3/03 JC * - weed out overlaps which contain only transparent pixels * 4/1/07 * - switch to new history thing, switch im_errormsg() too * 24/1/11 * - gtk-doc * 12/7/12 * - always allocate local to an output descriptor ... stops ref cycles * with the new base class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Strategy: build a tree describing the file * relationships in the desc file, then walk that passing constraints * back up to the root. Look up file names in symbol_table. */ /* Define for debug output. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include "pmosaicing.h" #include "global_balance.h" #define MAX_ITEMS (50) /* How pix an overlap has to be (in pixels) before we think it's trivial and * we ignore it. */ #define TRIVIAL (20 * 20) /* Break a string into a list of strings. Write '\0's into the string. out * needs to be MAX_FILES long. -1 for error, otherwise number of args found. " " out[0] = "fred" out[1] = "jim poop" out[2] = "sn aff le" */ static int break_items( char *line, char **out ) { int i; char *p; for( i = 0; i < MAX_ITEMS; i++ ) { /* Skip to first '<'. */ if( !(p = strchr( line, '<' )) ) break; out[i] = line = p + 1; if( !(p = strchr( line, '>' )) ) { im_error( "break_files", "%s", _( "no matching '>'" ) ); return( -1 ); } *p = '\0'; line = p + 1; } if( i == MAX_ITEMS ) { im_error( "break_files", "%s", _( "too many items" ) ); return( -1 ); } return( i ); } /* Try to open a file. If full path fails, try the current directory. */ IMAGE * im__global_open_image( SymbolTable *st, char *name ) { IMAGE *im; if( (im = im_open_local( st->im, name, "r" )) || (im = im_open_local( st->im, im_skip_dir( name ), "r" )) ) return( im ); return( NULL ); } static int junk_node( JoinNode *node ) { IM_FREEF( g_slist_free, node->overlaps ); return( 0 ); } /* Hash from a filename to an index into symbol_table. */ static int hash( char *n ) { int i; int r = 0; int l = strlen( n ); for( i = 0; i < l; i++ ) r = ((r + n[i]) * 43) & 0xffffff; return( r % SYM_TAB_SIZE ); } /* Make a leaf for a file. */ static JoinNode * build_node( SymbolTable *st, char *name ) { JoinNode *node = IM_NEW( st->im, JoinNode ); int n = hash( name ); /* Fill fields. */ if( !node || !(node->name = im_strdup( st->im, name )) ) return( NULL ); node->type = JOIN_LEAF; node->dirty = 0; node->mwidth = -2; node->st = st; vips__transform_init( &node->cumtrn ); node->trnim = NULL; node->arg1 = NULL; node->arg2 = NULL; node->overlaps = NULL; node->im = NULL; node->index = 0; if( im_add_close_callback( st->im, (im_callback_fn) junk_node, node, NULL ) ) return( NULL ); /* Try to open. */ if( (node->im = im__global_open_image( st, name )) ) { /* There is a file there - set width and height. */ node->cumtrn.oarea.width = node->im->Xsize; node->cumtrn.oarea.height = node->im->Ysize; } else { /* Clear the error buffer to lessen confusion. */ im_error_clear(); } st->table[n] = g_slist_prepend( st->table[n], node ); return( node ); } /* Make a new overlap struct. */ static OverlapInfo * build_overlap( JoinNode *node, JoinNode *other, Rect *overlap ) { OverlapInfo *lap = IM_NEW( node->st->im, OverlapInfo ); if( !lap ) return( NULL ); lap->node = node; lap->other = other; lap->overlap = *overlap; lap->nstats = NULL; lap->ostats = NULL; node->overlaps = g_slist_prepend( node->overlaps, lap ); node->st->novl++; return( lap ); } static void overlap_destroy( OverlapInfo *lap ) { JoinNode *node = lap->node; node->overlaps = g_slist_remove( node->overlaps, lap ); g_assert( node->st->novl > 0 ); node->st->novl--; } static int junk_table( SymbolTable *st ) { int i; for( i = 0; i < st->sz; i++ ) IM_FREEF( g_slist_free, st->table[i] ); return( 0 ); } /* Build a new symbol table. */ SymbolTable * im__build_symtab( IMAGE *out, int sz ) { SymbolTable *st = IM_NEW( out, SymbolTable ); int i; if( !st || !(st->table = IM_ARRAY( out, sz, GSList * )) ) return( NULL ); st->sz = sz; st->im = out; st->novl = 0; st->nim = 0; st->njoin = 0; st->root = NULL; st->leaf = NULL; st->fac = NULL; if( im_add_close_callback( out, (im_callback_fn) junk_table, st, NULL ) ) return( NULL ); for( i = 0; i < sz; i++ ) st->table[i] = NULL; return( st ); } /* Does this node have this file name? */ static JoinNode * test_name( JoinNode *node, char *name ) { if( strcmp( node->name, name ) == 0 ) return( node ); else return( NULL ); } /* Look up a filename in the symbol_table. */ static JoinNode * find_node( SymbolTable *st, char *name ) { return( im_slist_map2( st->table[hash( name )], (VSListMap2Fn) test_name, name, NULL ) ); } /* Given a name: return either the existing node for that name, or a new node * we have made. */ static JoinNode * add_node( SymbolTable *st, char *name ) { JoinNode *node; if( !(node = find_node( st, name )) && !(node = build_node( st, name )) ) return( NULL ); return( node ); } /* Map a user function over the whole of the symbol table. */ void * im__map_table( SymbolTable *st, VSListMap2Fn fn, void *a, void *b ) { int i; void *r; for( i = 0; i < st->sz; i++ ) if( (r = im_slist_map2( st->table[i], fn, a, b )) ) return( r ); return( NULL ); } /* Set the dirty field on a join. */ static void * set_dirty( JoinNode *node, int state ) { node->dirty = state; return( NULL ); } /* Clean the whole table. */ static void clean_table( SymbolTable *st ) { (void) im__map_table( st, (VipsSListMap2Fn) set_dirty, (void *) 0, NULL ); } /* Do geometry calculations on a node, assuming geo is up to date for any * children. */ static void calc_geometry( JoinNode *node ) { Rect um; switch( node->type ) { case JOIN_LR: case JOIN_TB: case JOIN_LRROTSCALE: case JOIN_TBROTSCALE: /* Join two areas. */ im_rect_unionrect( &node->arg1->cumtrn.oarea, &node->arg2->cumtrn.oarea, &um ); node->cumtrn.iarea.left = 0; node->cumtrn.iarea.top = 0; node->cumtrn.iarea.width = um.width; node->cumtrn.iarea.height = um.height; vips__transform_set_area( &node->cumtrn ); break; case JOIN_CP: /* Copy from child. */ node->cumtrn = node->arg1->cumtrn; break; case JOIN_LEAF: /* Just use leaf dimensions, if there are any. */ if( node->im ) { node->cumtrn.iarea.left = 0; node->cumtrn.iarea.top = 0; node->cumtrn.iarea.width = node->im->Xsize; node->cumtrn.iarea.height = node->im->Ysize; vips__transform_set_area( &node->cumtrn ); } break; default: error_exit( "internal error #98356" ); /*NOTREACHED*/ } } /* Propogate a transform down a tree. If dirty is set, we've been here before, * so there is a doubling up of this node. If this is a leaf, then we have the * same leaf twice (which, in fact, we can cope with); if this is a node, we * have circularity. */ static int propogate_transform( JoinNode *node, VipsTransformation *trn ) { if( !node ) return( 0 ); if( node->dirty && node->arg1 && node->arg2 ) { im_error( "im_global_balance", "%s", _( "circularity detected" ) ); return( -1 ); } node->dirty = 1; /* Transform our children. */ if( propogate_transform( node->arg1, trn ) || propogate_transform( node->arg2, trn ) ) return( -1 ); /* Transform us, and recalculate our position and size. */ vips__transform_add( &node->cumtrn, trn, &node->cumtrn ); calc_geometry( node ); return( 0 ); } /* Ah ha! A leaf is actually made up of two smaller files with an lr or a tb * merge. Turn a leaf node into a join node. Propogate the transform down * arg2's side of the tree. */ static int make_join( SymbolTable *st, JoinType type, JoinNode *arg1, JoinNode *arg2, JoinNode *out, double a, double b, double dx, double dy, int mwidth ) { VipsTransformation trn; /* Check output is ok. */ if( out->type != JOIN_LEAF ) { im_error( "im_global_balance", _( "image \"%s\" used twice as output" ), out->name ); return( -1 ); } /* Fill fields. */ out->type = type; out->mwidth = mwidth; out->a = a; out->b = b; out->dx = dx; out->dy = dy; out->arg1 = arg1; out->arg2 = arg2; out->thistrn.a = a; out->thistrn.b = -b; out->thistrn.c = b; out->thistrn.d = a; out->thistrn.idx = 0; out->thistrn.idy = 0; out->thistrn.odx = dx; out->thistrn.ody = dy; /* Clean the table and propogate the transform down the RHS of the * graph. */ clean_table( st ); if( propogate_transform( arg2, &out->thistrn ) ) return( -1 ); /* Find the position and size of our output. */ calc_geometry( out ); /* Now normalise the result, so that out is at (0,0) again. */ trn.a = 1.0; trn.b = 0.0; trn.c = 0.0; trn.d = 1.0; trn.idx = 0; trn.idy = 0; trn.odx = -out->cumtrn.oarea.left; trn.ody = -out->cumtrn.oarea.top; clean_table( st ); if( propogate_transform( out, &trn ) ) return( -1 ); return( 0 ); } /* Make a copy node. */ static int make_copy( SymbolTable *st, JoinNode *before, JoinNode *after ) { /* Check output is ok. */ if( after->type != JOIN_LEAF ) { im_error( "im_global_balance", _( "image \"%s\" used twice as output" ), after->name ); return( -1 ); } /* Fill fields. */ after->type = JOIN_CP; after->arg1 = before; after->arg2 = NULL; /* Copy over the position and size from the before to the after. */ calc_geometry( after ); return( 0 ); } /* Process a single .desc line. */ static int process_line( SymbolTable *st, const char *text ) { char line[1024]; #ifdef DEBUG printf( "read: %s\n", text ); #endif /*DEBUG*/ /* We destroy line during the parse. */ im_strncpy( line, text, 1024 ); if( im_isprefix( "#LRJOIN ", line ) || im_isprefix( "#TBJOIN ", line ) ) { /* Yes: magic join command. Break into tokens. Format is eg. #LRJOIN [] */ char *item[MAX_ITEMS]; int nitems; JoinType type; JoinNode *arg1, *arg2, *join; int dx, dy, mwidth; if( (nitems = break_items( line, item )) < 0 ) return( -1 ); if( nitems != 5 && nitems != 6 ) { im_error( "global_balance", "%s", _( "bad number of args in join line" ) ); return( -1 ); } if( !(arg1 = add_node( st, item[0] )) || !(arg2 = add_node( st, item[1] )) || !(join = add_node( st, item[2] )) ) return( -1 ); dx = atoi( item[3] ); dy = atoi( item[4] ); if( nitems == 6 ) mwidth = atoi( item[5] ); else mwidth = -1; if( im_isprefix( "#LRJOIN ", line ) ) type = JOIN_LR; else type = JOIN_TB; if( make_join( st, type, arg1, arg2, join, 1.0, 0.0, dx, dy, mwidth ) ) return( -1 ); } else if( im_isprefix( "#LRROTSCALE ", line ) || im_isprefix( "#TBROTSCALE ", line ) ) { /* Rot + scale. Format is eg. #LRROTSCALE \ [] */ char *item[MAX_ITEMS]; int nitems; JoinType type; JoinNode *arg1, *arg2, *join; double a, b, dx, dy; int mwidth; if( (nitems = break_items( line, item )) < 0 ) return( -1 ); if( nitems != 7 && nitems != 8 ) { im_error( "global_balance", "%s", _( "bad number of args in join1 line" ) ); return( -1 ); } if( !(arg1 = add_node( st, item[0] )) || !(arg2 = add_node( st, item[1] )) || !(join = add_node( st, item[2] )) ) return( -1 ); a = g_ascii_strtod( item[3], NULL ); b = g_ascii_strtod( item[4], NULL ); dx = g_ascii_strtod( item[5], NULL ); dy = g_ascii_strtod( item[6], NULL ); if( nitems == 8 ) mwidth = atoi( item[7] ); else mwidth = -1; if( im_isprefix( "#LRROTSCALE ", line ) ) type = JOIN_LRROTSCALE; else type = JOIN_TBROTSCALE; if( make_join( st, type, arg1, arg2, join, a, b, dx, dy, mwidth ) ) return( -1 ); } else if( im_isprefix( "copy ", line ) ) { /* im_copy() call ... make a JOIN_CP node. */ char *item[MAX_ITEMS]; int nitems; JoinNode *before, *after; if( (nitems = break_items( line, item )) < 0 ) return( -1 ); if( nitems != 2 ) { im_error( "global_balance", "%s", _( "bad number of args in copy line" ) ); return( -1 ); } if( !(before = add_node( st, item[0] )) || !(after = add_node( st, item[1] )) || make_copy( st, before, after ) ) return( -1 ); } return( 0 ); } /* Set the dirty flag on any nodes we reference. */ static void * set_referenced( JoinNode *node ) { if( node->arg1 ) node->arg1->dirty = 1; if( node->arg2 ) node->arg2->dirty = 1; return( NULL ); } /* Is this a root node? Should be clean. */ static void * is_root( JoinNode *node ) { if( !node->dirty ) return( (void *) node ); else return( NULL ); } /* Scan the symbol table, looking for a node which no node references. */ static JoinNode * find_root( SymbolTable *st ) { JoinNode *root; /* Clean the table, then scan it, setting all pointed-to nodes dirty. */ clean_table( st ); im__map_table( st, (VipsSListMap2Fn) set_referenced, NULL, NULL ); /* Look for the first clean symbol. */ root = (JoinNode *) im__map_table( st, (VipsSListMap2Fn) is_root, NULL, NULL ); /* No root? Hot dang! */ if( !root ) { im_error( "im_global_balance", "%s", _( "mosaic root not found in desc file\n" "is this really a mosaiced image?" ) ); return( NULL ); } /* Now dirty that - then if there are any more clean symbols, we have * more than one root. */ root->dirty = 1; if( im__map_table( st, (VipsSListMap2Fn) is_root, NULL, NULL ) ) { im_error( "im_global_balance", "%s", _( "more than one root" ) ); return( NULL ); } return( root ); } /* Walk history_list and parse each line. */ int im__parse_desc( SymbolTable *st, IMAGE *in ) { GSList *p; for( p = in->history_list; p; p = p->next ) { GValue *value = (GValue *) p->data; g_assert( G_VALUE_TYPE( value ) == IM_TYPE_REF_STRING ); if( process_line( st, im_ref_string_get( value ) ) ) return( -1 ); } /* Find root. */ if( !(st->root = find_root( st )) ) return( -1 ); return( 0 ); } /* Count and index all leaf images. */ static void * count_leaves( JoinNode *node ) { if( node->type == JOIN_LEAF ) { node->index = node->st->nim; node->st->nim++; } return( NULL ); } #ifdef DEBUG /* Print a JoinNode. */ static void print_node( JoinNode *node ) { printf( "%s, position %dx%d, size %dx%d, index %d\n", im_skip_dir( node->name ), node->cumtrn.oarea.left, node->cumtrn.oarea.top, node->cumtrn.oarea.width, node->cumtrn.oarea.height, node->index ); } #endif /*DEBUG*/ #ifdef DEBUG /* Print a leaf. */ static void * print_leaf( JoinNode *node ) { if( node->type == JOIN_LEAF ) print_node( node ); return( NULL ); } #endif /*DEBUG*/ /* Count all join nodes. */ static void * count_joins( JoinNode *node ) { if( node->type == JOIN_TB || node->type == JOIN_LR || node->type == JOIN_LRROTSCALE || node->type == JOIN_TBROTSCALE ) node->st->njoin++; return( NULL ); } #ifdef DEBUG /* Print a few spaces. */ static void spc( int n ) { int i; for( i = 0; i < n; i++ ) printf( " " ); } #endif /*DEBUG*/ #ifdef DEBUG static char * JoinType2char( JoinType type ) { switch( type ) { case JOIN_LR: return( "JOIN_LR" ); case JOIN_TB: return( "JOIN_TB" ); case JOIN_LRROTSCALE: return( "JOIN_LRROTSCALE" ); case JOIN_TBROTSCALE: return( "JOIN_TBROTSCALE" ); case JOIN_CP: return( "JOIN_CP" ); case JOIN_LEAF: return( "JOIN_LEAF" ); default: error_exit( "internal error #9275" ); /*NOTEACHED*/ return( NULL ); } } #endif /*DEBUG*/ #ifdef DEBUG /* Print a join node. */ static void * print_joins( JoinNode *node, int indent ) { switch( node->type ) { case JOIN_TB: case JOIN_LR: case JOIN_TBROTSCALE: case JOIN_LRROTSCALE: spc( indent ); printf( "%s to make %s, size %dx%d, pos. %dx%d, of:\n", JoinType2char( node->type ), im_skip_dir( node->name ), node->cumtrn.oarea.width, node->cumtrn.oarea.height, node->cumtrn.oarea.left, node->cumtrn.oarea.top ); spc( indent ); printf( "reference:\n" ); print_joins( node->arg1, indent+2 ); spc( indent ); printf( "secondary:\n" ); print_joins( node->arg2, indent+2 ); break; case JOIN_CP: spc( indent ); printf( "copy to make %s of:\n", im_skip_dir( node->name ) ); print_joins( node->arg1, indent+2 ); break; case JOIN_LEAF: spc( indent ); printf( "input image %s\n", im_skip_dir( node->name ) ); break; } return( NULL ); } #endif /*DEBUG*/ #ifdef DEBUG /* Print an overlap. */ static void * print_overlap( OverlapInfo *lap ) { printf( "-> %s overlaps with %s; (this, other) = (%.4G, %.4G)\n", im_skip_dir( lap->node->name ), im_skip_dir( lap->other->name ), lap->nstats->coeff[4], lap->ostats->coeff[4] ); return( NULL ); } #endif /*DEBUG*/ #ifdef DEBUG /* Print the overlaps on a leaf. */ static void * print_overlaps( JoinNode *node ) { if( node->type == JOIN_LEAF && g_slist_length( node->overlaps ) > 0 ) { printf( "overlap of %s with:\n", im_skip_dir( node->name ) ); im_slist_map2( node->overlaps, (VSListMap2Fn) print_overlap, NULL, NULL ); } return( NULL ); } #endif /*DEBUG*/ #ifdef DEBUG /* Print and accumulate the error on an overlap. */ static void * print_overlap_error( OverlapInfo *lap, double *fac, double *total ) { double na = lap->nstats->coeff[4]; double oa = lap->ostats->coeff[4]; double err; if( fac ) { na *= fac[lap->node->index]; oa *= fac[lap->other->index]; } err = na - oa; printf( "-> file %s, error = %g\n", im_skip_dir( lap->other->name ), err ); *total += err*err; return( NULL ); } #endif /*DEBUG*/ #ifdef DEBUG /* Print and accumulate the overlap errors on a leaf. */ static void * print_overlap_errors( JoinNode *node, double *fac, double *total ) { if( node->type == JOIN_LEAF && g_slist_length( node->overlaps ) > 0 ) { printf( "overlap of %s (index %d) with:\n", im_skip_dir( node->name ), node->index ); im_slist_map2( node->overlaps, (VSListMap2Fn) print_overlap_error, fac, total ); } return( NULL ); } #endif /*DEBUG*/ /* Extract a rect. */ static int extract_rect( IMAGE *in, IMAGE *out, Rect *r ) { return( im_extract_area( in, out, r->left, r->top, r->width, r->height ) ); } /* Two images overlap in an area ... make a mask the size of the area, which * has 255 for every pixel where both images are non-zero. */ static int make_overlap_mask( IMAGE *mem, IMAGE *ref, IMAGE *sec, IMAGE *mask, Rect *rarea, Rect *sarea ) { IMAGE *t[6]; if( im_open_local_array( mem, t, 6, "mytemps", "p" ) || extract_rect( ref, t[0], rarea ) || extract_rect( sec, t[1], sarea ) || im_extract_band( t[0], t[2], 0 ) || im_extract_band( t[1], t[3], 0 ) || im_notequalconst( t[2], t[4], 0.0 ) || im_notequalconst( t[3], t[5], 0.0 ) || im_andimage( t[4], t[5], mask ) ) return( -1 ); return( 0 ); } /* Find the number of non-zero pixels in a mask image. */ static int count_nonzero( IMAGE *in, gint64 *count ) { double avg; if( im_avg( in, &avg ) ) return( -1 ); *count = (avg * VIPS_IMAGE_N_PELS( in )) / 255.0; return( 0 ); } /* Find stats on an area of an IMAGE ... consider only pixels for which the * mask is true. */ static DOUBLEMASK * find_image_stats( IMAGE *mem, IMAGE *in, IMAGE *mask, Rect *area ) { DOUBLEMASK *stats; IMAGE *t[4]; gint64 count; /* Extract area, build black image, mask out pixels we want. */ if( im_open_local_array( mem, t, 4, "find_image_stats", "p" ) || extract_rect( in, t[0], area ) || im_black( t[1], t[0]->Xsize, t[0]->Ysize, t[0]->Bands ) || im_clip2fmt( t[1], t[2], t[0]->BandFmt ) || im_ifthenelse( mask, t[0], t[2], t[3] ) ) return( NULL ); /* Get stats from masked image. */ if( !(stats = im_local_dmask( mem, im_stats( t[3] ) )) ) return( NULL ); /* Number of non-zero pixels in mask. */ if( count_nonzero( mask, &count ) ) return( NULL ); /* And scale masked average to match. */ stats->coeff[4] *= (double) count / VIPS_IMAGE_N_PELS( mask ); /* Yuk! Zap the deviation column with the pixel count. Used later to * determine if this is likely to be a significant overlap. */ stats->coeff[5] = count; #ifdef DEBUG if( count == 0 ) im_warn( "global_balance", "%s", _( "empty overlap!" ) ); #endif /*DEBUG*/ return( stats ); } /* Find the stats for an overlap struct. */ static int find_overlap_stats( OverlapInfo *lap ) { IMAGE *mem = lap->node->st->im; IMAGE *t1 = im_open_local( mem, "find_overlap_stats:1", "p" ); Rect rarea, sarea; /* Translate the overlap area into the coordinate scheme for the main * node. */ rarea = lap->overlap; rarea.left -= lap->node->cumtrn.oarea.left; rarea.top -= lap->node->cumtrn.oarea.top; /* Translate the overlap area into the coordinate scheme for the other * node. */ sarea = lap->overlap; sarea.left -= lap->other->cumtrn.oarea.left; sarea.top -= lap->other->cumtrn.oarea.top; /* Make a mask for the overlap. */ if( make_overlap_mask( mem, lap->node->trnim, lap->other->trnim, t1, &rarea, &sarea ) ) return( -1 ); /* Find stats for that area. */ if( !(lap->nstats = find_image_stats( mem, lap->node->trnim, t1, &rarea )) ) return( -1 ); if( !(lap->ostats = find_image_stats( mem, lap->other->trnim, t1, &sarea )) ) return( -1 ); return( 0 ); } /* Sub-fn. of below. */ static void * overlap_eq( OverlapInfo *this, JoinNode *node ) { if( this->other == node ) return( this ); else return( NULL ); } /* Is this an overlapping leaf? If yes, add to overlap list. */ static void * test_overlap( JoinNode *other, JoinNode *node ) { Rect overlap; OverlapInfo *lap; /* Is other a suitable leaf to overlap with node? */ if( other->type != JOIN_LEAF || node == other ) return( NULL ); /* Is there an overlap? */ im_rect_intersectrect( &node->cumtrn.oarea, &other->cumtrn.oarea, &overlap ); if( im_rect_isempty( &overlap ) ) return( NULL ); /* Is this a trivial overlap? Ignore it if it is. */ if( overlap.width * overlap.height < TRIVIAL ) /* Too few pixels. */ return( NULL ); /* Have we already added this overlap the other way around? ie. is * node on other's overlap list? */ if( im_slist_map2( other->overlaps, (VSListMap2Fn) overlap_eq, node, NULL ) ) return( NULL ); /* A new overlap - add to overlap list. */ if( !(lap = build_overlap( node, other, &overlap )) ) return( node ); /* Calculate overlap statistics. Open stuff relative to this, and * free quickly. */ if( find_overlap_stats( lap ) ) return( node ); /* If the pixel count either masked overlap is trivial, ignore this * overlap. */ if( lap->nstats->coeff[5] < TRIVIAL || lap->ostats->coeff[5] < TRIVIAL ) { #ifdef DEBUG printf( "trivial overlap ... junking\n" ); printf( "nstats count = %g, ostats count = %g\n", lap->nstats->coeff[5], lap->ostats->coeff[5] ); print_overlap( lap ); #endif /*DEBUG*/ overlap_destroy( lap ); } return( NULL ); } /* If this is a leaf, look at all other joins for a leaf that overlaps. Aside: * If this is a leaf, there should be an IMAGE. Flag an error if there is * not. */ static void * find_overlaps( JoinNode *node, SymbolTable *st ) { if( node->type == JOIN_LEAF ) { /* Check for image. */ if( !node->im ) { im_error( "im_global_balance", _( "unable to open \"%s\"" ), node->name ); return( node ); } if( !node->trnim ) error_exit( "global_balance: sanity failure #9834" ); return( im__map_table( st, (VipsSListMap2Fn) test_overlap, node, NULL ) ); } return( NULL ); } /* Bundle of variables for matrix creation. */ typedef struct { SymbolTable *st; /* Main table */ JoinNode *leaf; /* Leaf to be 1.000 */ DOUBLEMASK *K; /* LHS */ DOUBLEMASK *M; /* RHS */ int row; /* Current row */ } MatrixBundle; /* Add a new row for the nominated overlap to the matricies. */ static void * add_nominated( OverlapInfo *ovl, MatrixBundle *bun, double *gamma ) { double *Kp = bun->K->coeff + bun->row; double *Mp = bun->M->coeff + bun->row*bun->M->xsize; double ns = pow( ovl->nstats->coeff[4], 1/(*gamma) ); double os = pow( ovl->ostats->coeff[4], 1/(*gamma) ); Kp[0] = ns; Mp[ovl->other->index - 1] = os; bun->row++; return( NULL ); } /* Add a new row for an ordinary overlap to the matricies. */ static void * add_other( OverlapInfo *ovl, MatrixBundle *bun, double *gamma ) { double *Mp = bun->M->coeff + bun->row*bun->M->xsize; double ns = -pow( ovl->nstats->coeff[4], 1/(*gamma) ); double os = pow( ovl->ostats->coeff[4], 1/(*gamma) ); Mp[ovl->node->index - 1] = ns; Mp[ovl->other->index - 1] = os; bun->row++; return( NULL ); } /* Add stuff for node to matrix. */ static void * add_row( JoinNode *node, MatrixBundle *bun, double *gamma ) { if( node == bun->leaf ) im_slist_map2( node->overlaps, (VSListMap2Fn) add_nominated, bun, gamma ); else im_slist_map2( node->overlaps, (VSListMap2Fn) add_other, bun, gamma ); return( NULL ); } /* Fill K and M. leaf is image selected to have factor of 1.000. */ static void fill_matricies( SymbolTable *st, double gamma, DOUBLEMASK *K, DOUBLEMASK *M ) { MatrixBundle bun; bun.st = st; bun.leaf = st->leaf; bun.K = K; bun.M = M; bun.row = 0; /* Build matricies. */ im__map_table( st, (VipsSListMap2Fn) add_row, &bun, &gamma ); } /* Used to select the leaf whose coefficient we set to 1. */ static void * choose_leaf( JoinNode *node ) { if( node->type == JOIN_LEAF ) return( node ); return( NULL ); } /* Make an image from a node. */ static IMAGE * make_mos_image( SymbolTable *st, JoinNode *node, transform_fn tfn, void *a ) { IMAGE *im1, *im2, *out; switch( node->type ) { case JOIN_LR: case JOIN_TB: if( !(im1 = make_mos_image( st, node->arg1, tfn, a )) || !(im2 = make_mos_image( st, node->arg2, tfn, a )) || !(out = im_open_local( st->im, node->name, "p" )) ) return( NULL ); if( node->type == JOIN_LR ) { if( im_lrmerge( im1, im2, out, -node->dx, -node->dy, node->mwidth ) ) return( NULL ); } else { if( im_tbmerge( im1, im2, out, -node->dx, -node->dy, node->mwidth ) ) return( NULL ); } break; case JOIN_LRROTSCALE: case JOIN_TBROTSCALE: if( !(im1 = make_mos_image( st, node->arg1, tfn, a )) || !(im2 = make_mos_image( st, node->arg2, tfn, a )) || !(out = im_open_local( st->im, node->name, "p" )) ) return( NULL ); if( node->type == JOIN_LRROTSCALE ) { if( im__lrmerge1( im1, im2, out, node->a, node->b, node->dx, node->dy, node->mwidth ) ) return( NULL ); } else { if( im__tbmerge1( im1, im2, out, node->a, node->b, node->dx, node->dy, node->mwidth ) ) return( NULL ); } break; case JOIN_LEAF: /* Trivial case! */ if( !(out = tfn( node, a )) ) return( NULL ); break; case JOIN_CP: /* Very trivial case. */ out = make_mos_image( st, node->arg1, tfn, a ); break; default: error_exit( "internal error #982369824375987" ); /*NOTEACHED*/ return( NULL ); } return( out ); } /* Re-build mosaic. */ int im__build_mosaic( SymbolTable *st, IMAGE *out, transform_fn tfn, void *a ) { JoinNode *root = st->root; IMAGE *im1, *im2; switch( root->type ) { case JOIN_LR: case JOIN_TB: if( !(im1 = make_mos_image( st, root->arg1, tfn, a )) || !(im2 = make_mos_image( st, root->arg2, tfn, a )) ) return( -1 ); if( root->type == JOIN_LR ) { if( im_lrmerge( im1, im2, out, -root->dx, -root->dy, root->mwidth ) ) return( -1 ); } else { if( im_tbmerge( im1, im2, out, -root->dx, -root->dy, root->mwidth ) ) return( -1 ); } break; case JOIN_LRROTSCALE: case JOIN_TBROTSCALE: if( !(im1 = make_mos_image( st, root->arg1, tfn, a )) || !(im2 = make_mos_image( st, root->arg2, tfn, a )) ) return( -1 ); if( root->type == JOIN_LRROTSCALE ) { if( im__lrmerge1( im1, im2, out, root->a, root->b, root->dx, root->dy, root->mwidth ) ) return( -1 ); } else { if( im__tbmerge1( im1, im2, out, root->a, root->b, root->dx, root->dy, root->mwidth ) ) return( -1 ); } break; case JOIN_LEAF: /* Trivial case! Just one file in our mosaic. */ if( !(im1 = tfn( root, a )) || im_copy( im1, out ) ) return( -1 ); break; case JOIN_CP: /* Very trivial case. */ if( !(im1 = make_mos_image( st, root->arg1, tfn, a )) ) return( -1 ); if( im_copy( im1, out ) ) return( -1 ); break; default: error_exit( "internal error #982369824375987" ); /*NOTEACHED*/ } return( 0 ); } /* Find correction factors. */ static int find_factors( SymbolTable *st, double gamma ) { DOUBLEMASK *K; DOUBLEMASK *M; DOUBLEMASK *m1, *m2, *m3, *m4, *m5; double total; double avg; int i; /* Make output matricies. */ if( !(K = im_local_dmask( st->im, im_create_dmask( "K", 1, st->novl ) )) || !(M = im_local_dmask( st->im, im_create_dmask( "M", st->nim-1, st->novl ) )) ) return( -1 ); fill_matricies( st, gamma, K, M ); #ifdef DEBUG im_write_dmask( K ); im_write_dmask( M ); #endif /*DEBUG*/ /* Calculate LMS. */ if( !(m1 = im_local_dmask( st->im, im_mattrn( M, "lms:1" ) )) ) return( -1 ); if( !(m2 = im_local_dmask( st->im, im_matmul( m1, M, "lms:2" ) )) ) return( -1 ); if( !(m3 = im_local_dmask( st->im, im_matinv( m2, "lms:3" ) )) ) return( -1 ); if( !(m4 = im_local_dmask( st->im, im_matmul( m3, m1, "lms:4" ) )) ) return( -1 ); if( !(m5 = im_local_dmask( st->im, im_matmul( m4, K, "lms:5" ) )) ) return( -1 ); /* Make array of correction factors. */ if( !(st->fac = IM_ARRAY( st->im, st->nim, double )) ) return( -1 ); for( i = 0; i < m5->ysize; i++ ) st->fac[i + 1] = m5->coeff[i]; st->fac[0] = 1.0; /* Find average balance factor, normalise to that average. */ total = 0.0; for( i = 0; i < st->nim; i++ ) total += st->fac[i]; avg = total / st->nim; for( i = 0; i < st->nim; i++ ) st->fac[i] /= avg; #ifdef DEBUG /* Diagnostics! */ printf( "debugging output for im_global_balance():\n" ); for( i = 0; i < st->nim; i++ ) printf( "balance factor %d = %g\n", i, st->fac[i] ); total = 0.0; printf( "Overlap errors:\n" ); im__map_table( st, (VipsSListMap2Fn) print_overlap_errors, NULL, &total ); printf( "RMS error = %g\n", sqrt( total / st->novl ) ); total = 0.0; printf( "Overlap errors after adjustment:\n" ); im__map_table( st, (VipsSListMap2Fn) print_overlap_errors, st->fac, &total ); printf( "RMS error = %g\n", sqrt( total / st->novl ) ); #endif /*DEBUG*/ return( 0 ); } /* Look for all leaves, make sure we have a transformed version of each. */ static void * generate_trn_leaves( JoinNode *node, SymbolTable *st ) { if( node->type == JOIN_LEAF ) { /* Check for image. */ if( !node->im ) { im_error( "im_global_balance", _( "unable to open \"%s\"" ), node->name ); return( node ); } if( node->trnim ) error_exit( "global_balance: sanity failure #765" ); /* Special case: if this is an untransformed leaf (there will * always be at least one), then skip the affine. */ if( vips__transform_isidentity( &node->cumtrn ) ) node->trnim = node->im; else if( !(node->trnim = im_open_local( node->st->im, "trnleaf:1", "p" )) || vips__affine( node->im, node->trnim, &node->cumtrn ) ) return( node ); } return( NULL ); } /* Analyse mosaic. */ static int analyse_mosaic( SymbolTable *st, IMAGE *in ) { /* Parse Hist on in. */ if( im__parse_desc( st, in ) ) return( -1 ); /* Print parsed data. */ #ifdef DEBUG printf( "Input files:\n" ); im__map_table( st, (VipsSListMap2Fn) print_leaf, NULL, NULL ); printf( "\nOutput file:\n" ); print_node( st->root ); printf( "\nJoin commands:\n" ); print_joins( st->root, 0 ); #endif /*DEBUG*/ /* Generate transformed leaves. */ if( im__map_table( st, (VipsSListMap2Fn) generate_trn_leaves, st, NULL ) ) return( -1 ); /* Find overlaps. */ if( im__map_table( st, (VipsSListMap2Fn) find_overlaps, st, NULL ) ) return( -1 ); /* Scan table, counting and indexing input images and joins. */ im__map_table( st, (VipsSListMap2Fn) count_leaves, NULL, NULL ); im__map_table( st, (VipsSListMap2Fn) count_joins, NULL, NULL ); /* Select leaf to be 1.000. * This must be index == 0, unless you change stuff above! */ st->leaf = im__map_table( st, (VipsSListMap2Fn) choose_leaf, NULL, NULL ); /* And print overlaps. */ #ifdef DEBUG printf( "\nLeaf to be 1.000:\n" ); print_node( st->leaf ); printf( "\nOverlaps:\n" ); im__map_table( st, (VipsSListMap2Fn) print_overlaps, NULL, NULL ); printf( "\n%d input files, %d unique overlaps, %d joins\n", st->nim, st->novl, st->njoin ); #endif /*DEBUG*/ return( 0 ); } /* Scale im by fac --- if it's uchar/ushort, use a lut. If we can use a lut, * transform in linear space. If we can't, don't bother for efficiency. */ static IMAGE * transform( JoinNode *node, double *gamma ) { SymbolTable *st = node->st; IMAGE *in = node->im; double fac = st->fac[node->index]; IMAGE *out = im_open_local( st->im, node->name, "p" ); IMAGE *t1 = im_open_local( out, "transform:1", "p" ); IMAGE *t2 = im_open_local( out, "transform:2", "p" ); IMAGE *t3 = im_open_local( out, "transform:3", "p" ); IMAGE *t4 = im_open_local( out, "transform:4", "p" ); IMAGE *t5 = im_open_local( out, "transform:5", "p" ); if( !out || !t1 || !t2 || !t3 || !t4 || !t5 ) return( NULL ); if( fac == 1.0 ) { /* Easy! */ out = in; } else if( in->BandFmt == IM_BANDFMT_UCHAR ) { if( im_identity( t1, 1 ) || im_powtra( t1, t2, 1.0 / (*gamma) ) || im_lintra( fac, t2, 0.0, t3 ) || im_powtra( t3, t4, *gamma ) || im_clip2fmt( t4, t5, IM_BANDFMT_UCHAR ) || im_maplut( in, out, t5 ) ) return( NULL ); } else if( in->BandFmt == IM_BANDFMT_USHORT ) { if( im_identity_ushort( t1, 1, 65535 ) || im_powtra( t1, t2, 1.0 / (*gamma) ) || im_lintra( fac, t2, 0.0, t3 ) || im_powtra( t3, t4, *gamma ) || im_clip2fmt( t4, t5, IM_BANDFMT_USHORT ) || im_maplut( in, out, t5 ) ) return( NULL ); } else { /* Just im_lintra it. */ if( im_lintra( fac, in, 0.0, t1 ) || im_clip2fmt( t1, out, in->BandFmt ) ) return( NULL ); } return( out ); } /* As above, but output as float, not matched to input. */ static IMAGE * transformf( JoinNode *node, double *gamma ) { SymbolTable *st = node->st; IMAGE *in = node->im; double fac = node->st->fac[node->index]; IMAGE *out = im_open_local( st->im, node->name, "p" ); IMAGE *t1 = im_open_local( out, "transform:1", "p" ); IMAGE *t2 = im_open_local( out, "transform:2", "p" ); IMAGE *t3 = im_open_local( out, "transform:3", "p" ); IMAGE *t4 = im_open_local( out, "transform:4", "p" ); if( !out || !t1 || !t2 || !t3 || !t4 ) return( NULL ); if( fac == 1.0 ) { /* Easy! */ out = in; } else if( in->BandFmt == IM_BANDFMT_UCHAR ) { if( im_identity( t1, 1 ) || im_powtra( t1, t2, 1/(*gamma) ) || im_lintra( fac, t2, 0.0, t3 ) || im_powtra( t3, t4, *gamma ) || im_maplut( in, out, t4 ) ) return( NULL ); } else if( in->BandFmt == IM_BANDFMT_USHORT ) { if( im_identity_ushort( t1, 1, 65535 ) || im_powtra( t1, t2, 1/(*gamma) ) || im_lintra( fac, t2, 0.0, t3 ) || im_powtra( t3, t4, *gamma ) || im_maplut( in, out, t4 ) ) return( NULL ); } else { /* Just im_lintra it. */ if( im_lintra( fac, in, 0.0, out ) ) return( NULL ); } return( out ); } typedef struct { VipsOperation parent_instance; VipsImage *in; VipsImage *out; gboolean int_output; double gamma; } VipsGlobalbalance; typedef VipsOperationClass VipsGlobalbalanceClass; G_DEFINE_TYPE( VipsGlobalbalance, vips_globalbalance, VIPS_TYPE_OPERATION ); static int vips_globalbalance_build( VipsObject *object ) { VipsGlobalbalance *globalbalance = (VipsGlobalbalance *) object; SymbolTable *st; transform_fn trn; g_object_set( globalbalance, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_globalbalance_parent_class )-> build( object ) ) return( -1 ); if( !(st = im__build_symtab( globalbalance->out, SYM_TAB_SIZE )) || analyse_mosaic( st, globalbalance->in ) || find_factors( st, globalbalance->gamma ) ) return( -1 ); trn = globalbalance->int_output ? (transform_fn) transform : (transform_fn) transformf; if( im__build_mosaic( st, globalbalance->out, trn, &globalbalance->gamma ) ) return( -1 ); return( 0 ); } static void vips_globalbalance_class_init( VipsGlobalbalanceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "globalbalance"; object_class->description = _( "global balance an image mosaic" ); object_class->build = vips_globalbalance_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGlobalbalance, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsGlobalbalance, out ) ); VIPS_ARG_DOUBLE( class, "gamma", 5, _( "gamma" ), _( "Image gamma" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGlobalbalance, gamma ), 0.00001, 10, 1.6 ); VIPS_ARG_BOOL( class, "int_output", 7, _( "Int output" ), _( "Integer output" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGlobalbalance, int_output ), FALSE ); } static void vips_globalbalance_init( VipsGlobalbalance *globalbalance ) { globalbalance->gamma = 1.6; } /** * vips_globalbalance: (method) * @in: mosaic to rebuild * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @gamma: gamma of source images * * @int_output: %TRUE for integer image output * * vips_globalbalance() can be used to remove contrast differences in * an assembled mosaic. * * It reads the History field attached to @in and builds a list of the source * images that were used to make the mosaic and the position that each ended * up at in the final image. * * It opens each of the source images in turn and extracts all parts which * overlap with any of the other images. It finds the average values in the * overlap areas and uses least-mean-square to find a set of correction * factors which will minimise overlap differences. It uses @gamma to * gamma-correct the source images before calculating the factors. A value of * 1.0 will stop this. * * Each of the source images is transformed with the appropriate correction * factor, then the mosaic is reassembled. @out is #VIPS_FORMAT_FLOAT, but * if @int_output is set, the output image is the same format as the input * images. * * There are some conditions that must be met before this operation can work: * the source images must all be present under the filenames recorded in the * history on @in, and the mosaic must have been built using only operations in * this package. * * See also: vips_remosaic(). * * Returns: 0 on success, -1 on error */ int vips_globalbalance( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "globalbalance", ap, in, out ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/mosaicing/global_balance.h000066400000000000000000000073511361153320700217070ustar00rootroot00000000000000/* Header for the .desc file parser in im_global_balance() * * 1/11/01 JC * - cut from global_balance.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Number of entries in spine of file name hash table. */ #define SYM_TAB_SIZE (113) typedef enum _JoinType JoinType; typedef struct _OverlapInfo OverlapInfo; typedef struct _JoinNode JoinNode; typedef struct _SymbolTable SymbolTable; /* Type of a transform function. */ typedef IMAGE *(*transform_fn)( JoinNode *, void * ); /* Join type. */ enum _JoinType { JOIN_LR, /* im_lrmerge join */ JOIN_TB, /* im_tbmerge join */ JOIN_LRROTSCALE, /* 1st oder lrmerge */ JOIN_TBROTSCALE, /* 1st oder tbmerge */ JOIN_CP, /* im_copy operation */ JOIN_LEAF /* Base file */ }; /* An overlap struct. Attach a list of these to each leaf, one for each of * the other leaves we touch. */ struct _OverlapInfo { JoinNode *node; /* The base node - we are on this list */ JoinNode *other; /* Node we overlap with */ Rect overlap; /* The overlap area */ DOUBLEMASK *nstats; /* Node's stats for overlap area */ DOUBLEMASK *ostats; /* Other's stats for overlap area */ }; /* Struct for a join node. */ struct _JoinNode { char *name; /* This file name */ JoinType type; /* What kind of join */ SymbolTable *st; /* Symbol table we are on */ int dirty; /* Used for circularity detection */ /* Params from join line in .desc file. */ double a, b; double dx, dy; int mwidth; /* Cumulative transform for this node. What our parents do to us. * cumtrn.area is position and size of us, thistrn.area is pos and * size of arg2. */ VipsTransformation cumtrn; /* X-tras for LR/TB. thistrn is what we do to arg2. */ JoinNode *arg1; /* Left or up thing to join */ JoinNode *arg2; /* Right or down thing to join */ VipsTransformation thistrn; /* Transformation for arg2 */ /* Special for leaves: all the join_nodes we overlap with, the * IMAGE for that file, and the index. */ GSList *overlaps; IMAGE *im; IMAGE *trnim; /* Transformed image .. used in 2nd pass */ int index; }; /* We need to keep a table of JoinNode, indexed by file name. Hash into one * of these from the name to get a pointer to the base of a list of JoinNode * which hash to that offset. */ struct _SymbolTable { GSList **table; /* Ptr to base of hash table */ int sz; /* Size of hash table */ IMAGE *im; /* Malloc relative to this */ int novl; /* Number of unique overlaps */ int nim; /* Number of leaf images */ int njoin; /* Number of join nodes */ JoinNode *root; /* Root of join tree */ JoinNode *leaf; /* Leaf nominated to be 1.000 */ double *fac; /* Correction factors */ }; IMAGE *im__global_open_image( SymbolTable *st, char *name ); SymbolTable *im__build_symtab( IMAGE *out, int sz ); int im__parse_desc( SymbolTable *st, IMAGE *in ); void *im__map_table( SymbolTable *st, VSListMap2Fn fn, void *a, void *b ); int im__build_mosaic( SymbolTable *st, IMAGE *out, transform_fn tfn, void * ); libvips-8.9.1/libvips/mosaicing/im_avgdxdy.c000066400000000000000000000041751361153320700211310ustar00rootroot00000000000000/* @(#) Function which averages the difference x_secondary[] - x_reference[] * @(#) and y_secondary[] - y_reference[] of the structure points; * @(#) The rounded integer result is returnd into dx, dy * @(#) No IMAGES are involved in this function. * @(#) * @(#) int im_avgdxdy( points, dx, dy ) * @(#) TIE_POINTS *points; * @(#) int *dx, *dy; * @(#) * @(#) Returns 0 on sucess and -1 on error. * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 20/12/1990 * Modified on : 18/04/1991 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pmosaicing.h" int im__avgdxdy( TIE_POINTS *points, int *dx, int *dy ) { int sumdx, sumdy; int i; if( points->nopoints == 0 ) { im_error( "im_avgdxdy", "%s", _( "no points to average" ) ); return( -1 ); } /* Lots of points. */ sumdx = 0; sumdy = 0; for( i = 0; i < points->nopoints; i++ ) { sumdx += points->x_secondary[i] - points->x_reference[i]; sumdy += points->y_secondary[i] - points->y_reference[i]; } *dx = IM_RINT( (double) sumdx / (double) points->nopoints ); *dy = IM_RINT( (double) sumdy / (double) points->nopoints ); return( 0 ); } libvips-8.9.1/libvips/mosaicing/im_chkpair.c000066400000000000000000000134451361153320700211040ustar00rootroot00000000000000/* find image overlaps * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : 18/04/1991 * 8/7/93 JC * - allows IM_CODING_LABQ coding * - now calls im_incheck() * 13/7/95 JC * - rewritten * - now uses im_spcor() * 13/8/96 JC * - order of args changed to help C++ API * 24/1/11 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pmosaicing.h" /** * im_correl: * @ref: reference image * @sec: secondary image * @xref: position in reference image * @yref: position in reference image * @xsec: position in secondary image * @ysec: position in secondary image * @hwindowsize: half window size * @hsearchsize: half search size * @correlation: return detected correlation * @x: return found position * @y: return found position * * This operation finds the position of @sec within @ref. * * The area around * (@xsec, @ysec) is searched for the best match to the area around (@xref, * @yref). It searches an area of size @hsearchsize for a * match of size @hwindowsize. The position of the best match is * returned, together with the correlation at that point. * * Only the first band of each image is correlated. @ref and @sec may be * very large --- the function extracts and generates just the * parts needed. Correlation is done with im_spcor(); the position of * the maximum is found with im_maxpos(). * * See also: im_match_linear(), im_match_linear_search(), im_lrmosaic(). * * Returns: 0 on success, -1 on error */ int im_correl( IMAGE *ref, IMAGE *sec, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, double *correlation, int *x, int *y ) { IMAGE *surface = im_open( "surface", "t" ); IMAGE *t1, *t2, *t3, *t4; Rect refr, secr; Rect winr, srhr; Rect wincr, srhcr; if( !surface || !(t1 = im_open_local( surface, "correlate:1", "p" )) || !(t2 = im_open_local( surface, "correlate:1", "p" )) || !(t3 = im_open_local( surface, "correlate:1", "p" )) || !(t4 = im_open_local( surface, "correlate:1", "p" )) ) return( -1 ); /* Find position of window and search area, and clip against image * size. */ refr.left = 0; refr.top = 0; refr.width = ref->Xsize; refr.height = ref->Ysize; winr.left = xref - hwindowsize; winr.top = yref - hwindowsize; winr.width = hwindowsize*2 + 1; winr.height = hwindowsize*2 + 1; im_rect_intersectrect( &refr, &winr, &wincr ); secr.left = 0; secr.top = 0; secr.width = sec->Xsize; secr.height = sec->Ysize; srhr.left = xsec - hsearchsize; srhr.top = ysec - hsearchsize; srhr.width = hsearchsize*2 + 1; srhr.height = hsearchsize*2 + 1; im_rect_intersectrect( &secr, &srhr, &srhcr ); /* Extract window and search area. */ if( im_extract_area( ref, t1, wincr.left, wincr.top, wincr.width, wincr.height ) || im_extract_area( sec, t2, srhcr.left, srhcr.top, srhcr.width, srhcr.height ) ) { im_close( surface ); return( -1 ); } /* Make sure we have just one band. From im_*mosaic() we will, but * from im_match_linear_search() etc. we may not. */ if( t1->Bands != 1 ) { if( im_extract_band( t1, t3, 0 ) ) { im_close( surface ); return( -1 ); } t1 = t3; } if( t2->Bands != 1 ) { if( im_extract_band( t2, t4, 0 ) ) { im_close( surface ); return( -1 ); } t2 = t4; } /* Search! */ if( im_spcor( t2, t1, surface ) ) { im_close( surface ); return( -1 ); } /* Find maximum of correlation surface. */ if( im_maxpos( surface, x, y, correlation ) ) { im_close( surface ); return( -1 ); } im_close( surface ); /* Translate back to position within sec. */ *x += srhcr.left; *y += srhcr.top; return( 0 ); } int im__chkpair( IMAGE *ref, IMAGE *sec, TIE_POINTS *points ) { int i; int x, y; double correlation; const int hcor = points->halfcorsize; const int harea = points->halfareasize; /* Check images. */ if( im_incheck( ref ) || im_incheck( sec ) ) return( -1 ); if( ref->Bands != sec->Bands || ref->BandFmt != sec->BandFmt || ref->Coding != sec->Coding ) { im_error( "im_chkpair", "%s", _( "inputs incompatible" ) ); return( -1 ); } if( ref->Bands != 1 || ref->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im_chkpair", "%s", _( "help!" ) ); return( -1 ); } for( i = 0; i < points->nopoints; i++ ) { /* Find correlation point. */ if( im_correl( ref, sec, points->x_reference[i], points->y_reference[i], points->x_reference[i], points->y_reference[i], hcor, harea, &correlation, &x, &y ) ) return( -1 ); /* And note in x_secondary. */ points->x_secondary[i] = x; points->y_secondary[i] = y; points->correlation[i] = correlation; /* Note each dx, dy too. */ points->dx[i] = points->x_secondary[i] - points->x_reference[i]; points->dy[i] = points->y_secondary[i] - points->y_reference[i]; } return( 0 ); } libvips-8.9.1/libvips/mosaicing/im_clinear.c000066400000000000000000000105611361153320700210740ustar00rootroot00000000000000/* @(#) Function which calculates the coefficients between corresponding * @(#) points from reference and secondary images (probably from the scanner), * @(#) previously calculated using the functions im_calcon() and im_chpair() * @(#) It is assummed that a selection of the best(?) possible points has * @(#) been already carried out and that those nopoints points are in arrays * @(#) x1, y1 and x2, y2 * @(#) No IMAGES are involved in this function and the calculated parameters * @(#) are returned in scale angle deltax and deltay of the TIE_POINTS struct. * @(#) * @(#) int im_clinear( points ) * @(#) TIE_POINTS *points; * @(#) * @(#) Returns 0 on sucess and -1 on error. * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 20/12/1990 * Modified on : 18/04/1991 * 24/1/97 JC * - tiny mem leak fixed */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pmosaicing.h" int im__clinear( TIE_POINTS *points ) { double **mat; /* matrix mar[4][4] */ double *g; /* vector g[1][4] */ double value; double sx1=0.0, sx1x1=0.0, sy1=0.0, sy1y1=0.0, sx1y1 = 0.0; double sx2x1=0.0, sx2y1=0.0, sx2=0.0, sy2=0.0, sy2y1=0.0, sy2x1=0.0; int i, j; int elms; double scale, angle, xdelta, ydelta; int *xref, *yref, *xsec, *ysec; double *dx, *dy, *dev; xref = &points->x_reference[0]; yref = &points->y_reference[0]; xsec = &points->x_secondary[0]; ysec = &points->y_secondary[0]; dx = &points->dx[0]; dy = &points->dy[0]; dev = &points->deviation[0]; elms = points->nopoints; if( !(mat = im_dmat_alloc( 0, 3, 0, 3 )) ) return( -1 ); if( !(g = im_dvector( 0, 3 )) ) { im_free_dmat( mat, 0, 3, 0, 3 ); return( -1 ); } for( i = 0; i < points->nopoints; i++ ) { sx1 += xref[i]; sx1x1 += xref[i] * xref[i]; sy1 += yref[i]; sy1y1 += yref[i] * yref[i]; sx1y1 += xref[i] * yref[i]; sx2x1 += xsec[i] * xref[i]; sx2y1 += xsec[i] * yref[i]; sy2y1 += ysec[i] * yref[i]; sy2x1 += ysec[i] * xref[i]; sx2 += xsec[i]; sy2 += ysec[i]; } mat[0][0] = sx1x1 + sy1y1; mat[0][1] = 0; mat[0][2] = sx1; mat[0][3] = sy1; mat[1][0] = 0; mat[1][1] = sx1x1 + sy1y1; mat[1][2] = -sy1; mat[1][3] = sx1; mat[2][0] = sx1; mat[2][1] = -sy1; mat[2][2] = (double)elms; mat[2][3] = 0.0; mat[3][0] = sy1; mat[3][1] = sx1; mat[3][2] = 0.0; mat[3][3] = (double)elms; g[0] = sx2x1 + sy2y1; g[1] = -sx2y1 + sy2x1; g[2] = sx2; g[3] = sy2; if( im_invmat( mat, 4 ) ) { im_free_dmat( mat, 0, 3, 0, 3 ); im_free_dvector( g, 0, 3 ); im_error( "im_clinear", "%s", _( "im_invmat failed" ) ); return( -1 ); } scale = 0.0; angle = 0.0; xdelta = 0.0; ydelta = 0.0; for( j = 0; j < 4; j++ ) { scale += mat[0][j] * g[j]; angle += mat[1][j] * g[j]; xdelta += mat[2][j] * g[j]; ydelta += mat[3][j] * g[j]; } /* find the deviation of each point for the estimated variables * if it greater than 1 then the solution is not good enough * but this is handled by the main program */ for( i = 0; i < points->nopoints; i++ ) { dx[i] = xsec[i] - ((scale * xref[i]) - (angle * yref[i]) + xdelta); dy[i] = ysec[i] - ((angle * xref[i]) + (scale * yref[i]) + ydelta); value = sqrt( dx[i]*dx[i] + dy[i]*dy[i] ); dev[i] = value; } points->l_scale = scale; points->l_angle = angle; points->l_deltax = xdelta; points->l_deltay = ydelta; im_free_dmat( mat, 0, 3, 0, 3 ); im_free_dvector( g, 0, 3 ); return( 0 ); } libvips-8.9.1/libvips/mosaicing/im_improve.c000066400000000000000000000117761361153320700211510ustar00rootroot00000000000000/* @(#) Function which improves the selection of tiepoints carried out by * @(#) im_clinear() until no points have deviation greater than 1 pixel * @(#) No reference or secondary images are involved * @(#) Function im_improve assumes that im_clinear has been applied on points * @(#) No IMAGES are involved in this function and the result is * @(#) returned in outpoints which is declared as a pointer in the * @(#) calling routine. Space for outpoints should be allocated in the calling * @(#) routine * @(#) * @(#) int im_improve( inpoints, outpoints ) * @(#) TIE_POINTS *inpoints, *outpoints; * @(#) * @(#) Returns 0 on sucess and -1 on error. * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 20/12/1990 * Modified on : 18/04/1991 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pmosaicing.h" static void copypoints( TIE_POINTS *pnew, TIE_POINTS *pold ) { int i; pnew->reference = pold->reference; pnew->secondary = pold->secondary; pnew->deltax = pold->deltax; pnew->deltay = pold->deltay; pnew->nopoints = pold->nopoints; pnew->halfcorsize = pold->halfcorsize; pnew->halfareasize = pold->halfareasize; for( i = 0; i < pold->nopoints; i++ ) { pnew->x_reference[i] = pold->x_reference[i]; pnew->y_reference[i] = pold->y_reference[i]; pnew->x_secondary[i] = pold->x_secondary[i]; pnew->y_secondary[i] = pold->y_secondary[i]; pnew->contrast[i] = pold->contrast[i]; pnew->correlation[i] = pold->correlation[i]; pnew->deviation[i] = pold->deviation[i]; pnew->dx[i] = pold->dx[i]; pnew->dy[i] = pold->dy[i]; } pnew->l_scale = pold->l_scale; pnew->l_angle = pold->l_angle; pnew->l_deltax = pold->l_deltax; pnew->l_deltay = pold->l_deltay; } /* exclude all points with deviation greater or equal to 1.0 pixel */ static int copydevpoints( TIE_POINTS *pnew, TIE_POINTS *pold ) { int i; int j; double thresh_dev,max_dev, min_dev; double *corr; min_dev = 9999.0; max_dev = 0.0; corr = &pold->correlation[0]; for( i = 0; i < pold->nopoints; i++ ) if( corr[i] > 0.01 ) { if( pold->deviation[i]/corr[i] < min_dev ) min_dev = pold->deviation[i]/corr[i] ; if( pold->deviation[i]/corr[i] > max_dev ) max_dev = pold->deviation[i]/corr[i]; } thresh_dev = min_dev + (max_dev - min_dev)*0.3; if( thresh_dev <= 1.0 ) thresh_dev = 1.0; for( i = 0, j = 0; i < pold->nopoints; i++ ) if( pold->correlation[i] > 0.01 ) if( pold->deviation[i]/corr[i] <= thresh_dev ) { pnew->x_reference[j] = pold->x_reference[i]; pnew->y_reference[j] = pold->y_reference[i]; pnew->x_secondary[j] = pold->x_secondary[i]; pnew->y_secondary[j] = pold->y_secondary[i]; pnew->contrast[j] = pold->contrast[i]; pnew->correlation[j] = pold->correlation[i]; pnew->deviation[j] = pold->deviation[i]; pnew->dx[j] = pold->dx[i]; pnew->dy[j] = pold->dy[i]; j++; } pnew->nopoints = j; for( i = j; i < IM_MAXPOINTS; i++ ) { pnew->x_reference[i] = 0; pnew->y_reference[i] = 0; pnew->x_secondary[i] = 0; pnew->y_secondary[i] = 0; pnew->contrast[i] = 0; pnew->correlation[i] = 0.0; pnew->deviation[i] = 0.0; pnew->dx[i] = 0.0; pnew->dy[i] = 0.0; } /* Return non-zero if we changed something. */ if( j != pold->nopoints ) return( -1 ); return( 0 ); } int im__improve( TIE_POINTS *inpoints, TIE_POINTS *outpoints ) { TIE_POINTS points1, points2; TIE_POINTS *p = &points1; TIE_POINTS *q = &points2; /* p has the current state - make a new state, q, with only those * points which have a small deviation. */ for( copypoints( p, inpoints ); copypoints( q, p ), copydevpoints( q, p ); ) { /* If there are only a few left, jump out. */ if( q->nopoints < 2 ) break; /* Fit the model to the new set of points. */ if( im__clinear( q ) ) return( -1 ); /* And loop. */ IM_SWAP( void *, p, q ); } /* q has the output - copy to outpoints. */ copypoints( outpoints, q ); return( 0 ); } libvips-8.9.1/libvips/mosaicing/im_initialize.c000066400000000000000000000045211361153320700216170ustar00rootroot00000000000000/* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pmosaicing.h" int im__initialize( TIE_POINTS *points ) { if( im__clinear( points ) ) { /* im_clinear failed! Set some sensible fallback values. */ int i, j; double xdelta, ydelta, max_cor; double a1, a2; int *xref = &points->x_reference[0]; int *yref = &points->y_reference[0]; int *xsec = &points->x_secondary[0]; int *ysec = &points->y_secondary[0]; double *corr = &points->correlation[0]; double *dx = &points->dx[0]; double *dy = &points->dy[0]; int npt = points->nopoints; max_cor = 0.0; for( i = 0; i < npt; i++ ) if( corr[i] > max_cor ) max_cor = corr[i]; max_cor = max_cor - 0.04; xdelta = 0.0; ydelta = 0.0; j = 0; for( i = 0; i < npt; i++ ) if( corr[i] >= max_cor ) { xdelta += xsec[i] - xref[i]; ydelta += ysec[i] - yref[i]; ++j; } if( j == 0 ) { vips_error( "im_initialize", "no tie points" ); return( -1 ); } xdelta = xdelta / j; ydelta = ydelta / j; for( i = 0; i < npt; i++ ) { dx[i] = (xsec[i] - xref[i]) - xdelta; dy[i] = (ysec[i] - yref[i]) - ydelta; } for( i = 0; i < npt; i++ ) { a1 = dx[i]; a2 = dy[i]; points->deviation[i] = sqrt( a1 * a1 + a2 * a2 ); } points->l_scale = 1.0; points->l_angle = 0.0; points->l_deltax = xdelta; points->l_deltay = ydelta; } return( 0 ); } libvips-8.9.1/libvips/mosaicing/im_lrcalcon.c000066400000000000000000000170771361153320700212650ustar00rootroot00000000000000/* @(#) Functions which takes an initial estimate of deltax, deltay * @(#) between reference and secondary images (probably from the scanner), * @(#) and looks in three areas of the overlapping part of the reference image * @(#) corresponding to reference and secondary. For every other halfreasize * @(#) point of the three areas of the reference image * @(#) the contrast is calculated * @(#) an area 2*halfcorsize+1 centered at this point * @(#) Results are saved in the structure points * @(#) The function expects the following valid data in points: * @(#) deltax, deltay, nopoints, halfcorsize, halfareasize * @(#) and fills in the memebers: * @(#) x, y_reference[], contrast and x,y_secondary[], * @(#) based on deltax and deltay * @(#) Input image should are either memory mapped or in a buffer. * @(#) The initial setting checks all points of reference * @(#) in the overlapping area of the images to be mosaiced * @(#) To speed up the procedure the ysize of the box can be reduced * @(#) during the calculation of the ysize * @(#) An easy way is to change FACTOR to 1 2 or 3. * @(#) The calculation of the contrast is carried out based on bandno only. * @(#) The variable bandno should be between 1 and ref->Bands * @(#) * @(#) int im_lrcalcon( ref, sec, bandno, points ) * @(#) IMAGE *ref, *sec; * @(#) int bandno; * @(#) TIE_POINTS *points; see mosaic.h * @(#) * @(#) Returns 0 on sucess and -1 on error. * @(#) * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 20/12/1990 * Modified on : 18/04/1991 * 8/7/93 JC * - now calls im_incheck() * 12/7/95 JC * - reworked * - what a lot of horrible old code there was too * 24/1/97 JC * - now ignores black stuff (all bands zero) when selecting possible tie * points, part of new mosaic policy * 26/9/97 JC * - now skips all-black windows, instead of any-black windows * 11/4/01 JC * - ooops, < 0 should have been <= 0 * 10/3/03 JC * - better error message for overlap too small */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pmosaicing.h" /* A position and contrast. */ typedef struct { int x, y; int cont; } PosCont; /* Search a window for black pelss ... true if window is all black. * One-band uchar only. */ static int all_black( IMAGE *im, int xpos, int ypos, int winsize ) { const int hwinsize = (winsize - 1)/2; const int left = xpos - hwinsize; const int top = ypos - hwinsize; const int ls = im->Xsize; int x, y; VipsPel *line; /* Loop over image. */ line = im->data + top*ls + left; for( y = 0; y < winsize; y++ ) { for( x = 0; x < winsize; x++ ) if( line[x] ) /* Not all black. */ return( 0 ); line += ls; } return( -1 ); } /* Calculate a value for 'contrast' within a window * of (odd) size winsize*winsize centered at location (xpos, ypos). * One band uchar only, */ static int calculate_contrast( IMAGE *im, int xpos, int ypos, int winsize ) { const int hwinsize = (winsize - 1)/2; const int left = xpos - hwinsize; const int top = ypos - hwinsize; const int ls = im->Xsize; int x, y; VipsPel *line, *p; int total; line = im->data + top*ls + left; for( total = 0, y = 0; y < winsize-1; y++ ) { p = line; for( x = 0; x < winsize-1; x++ ) { const int lrd = (int) p[0] - p[1]; const int tbd = (int) p[0] - p[ls]; total += abs( lrd ) + abs( tbd ); p += 1; } line += ls; } return( total ); } /* Compare two PosConts for qsort. */ static int pos_compare( const void *vl, const void *vr ) { PosCont *l = (PosCont *) vl; PosCont *r = (PosCont *) vr; return( r->cont - l->cont ); } /* Search an area for the n best contrast areas. */ int im__find_best_contrast( IMAGE *im, int xpos, int ypos, int xsize, int ysize, int xarray[], int yarray[], int cont[], int nbest, int hcorsize ) { /* Geometry: we test squares of size windowsize, overlapping by * hcorsize. */ const int windowsize = 2 * hcorsize + 1; /* Number of squares we can fit in area. */ const int nacross = (xsize - windowsize + hcorsize) / hcorsize; const int ndown = (ysize - windowsize + hcorsize) / hcorsize; /* Number of squares we search. */ int elms; /* All points in this area. */ PosCont *pc; int x, y, i; if( nacross <= 0 || ndown <= 0 ) { im_error( "im__lrcalcon", "%s", _( "overlap too small for your search size" ) ); return( -1 ); } /* Malloc space for 3 int arrays, to keep the int coordinates and * the contrast. */ if( !(pc = IM_ARRAY( NULL, nacross * ndown, PosCont )) ) return( -1 ); /* Find contrast for each area. */ for( i = 0, y = 0; y < ndown; y++ ) for( x = 0; x < nacross; x++ ) { const int left = xpos + x * hcorsize; const int top = ypos + y * hcorsize; /* Skip this position if it is all black. */ if( all_black( im, left, top, windowsize ) ) continue; /* Find contrast and note. */ pc[i].x = left; pc[i].y = top; pc[i].cont = calculate_contrast( im, left, top, windowsize ); i++; } /* Note number found. */ elms = i; /* Found enough tie-points? */ if( elms < nbest ) { im_error( "im_mosaic", _( "found %d tie-points, need at least %d" ), elms, nbest ); im_free( pc ); return( -1 ); } /* Sort areas by contrast. */ qsort( pc, elms, sizeof( PosCont ), pos_compare ); /* Copy the n best into our parent. */ for( i = 0; i < nbest; i++ ) { xarray[i] = pc[i].x; yarray[i] = pc[i].y; cont[i] = pc[i].cont; } im_free( pc ); return( 0 ); } int im__lrcalcon( IMAGE *ref, TIE_POINTS *points ) { /* Geometry: border we must leave around each area. */ const int border = points->halfareasize; /* Height of an area. */ const int aheight = ref->Ysize / AREAS; /* Number of points we find in each area. */ const int len = points->nopoints / AREAS; int i; Rect area; /* Make sure we can read image. */ if( im_incheck( ref ) ) return( -1 ); if( ref->Bands != 1 || ref->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im__lrcalcon", "%s", _( "not 1-band uchar image" ) ); return( -1 ); } /* Define bits to search for high-contrast areas. Need to be able to * fit at least 1 window in. */ area.height = aheight; area.width = ref->Xsize; area.left = 0; area.top = 0; im_rect_marginadjust( &area, -border ); area.width--; area.height--; /* Loop over areas, finding points. */ for( i = 0; area.top < ref->Ysize; area.top += aheight, i++ ) if( im__find_best_contrast( ref, area.left, area.top, area.width, area.height, points->x_reference + i*len, points->y_reference + i*len, points->contrast + i*len, len, points->halfcorsize ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/mosaicing/im_lrmerge.c000066400000000000000000000661531361153320700211240ustar00rootroot00000000000000/* Merge two images left-right. * * Copyright: 1990, 1991 N. Dessipris * Author: N. Dessipris * Written on: 20/09/1990 * Updated on: 17/04/1991 * 1/6/92: JC * - check for difference bug fixed * - geometry calculations improved and simplified * - small speedups Kirk Martinez for Sys5 29/4/93 * 7/8/93 JC * - ANSIfied * - memory leaks fixed, ready for partial v2 * - now does IM_CODING_LABQ too * 8/11/93 JC * - now propogates both input histories * - adds magic lines for global mosaic optimisation * * * May/1994 Ahmed Abbood * * - Modified to use partials on all IO * June/1995 Ahmed Abbood * * - Modified to work with different types of images. * * 16/6/95 JC * - tidied up a little * - added to VIPS! * 7/9/95 JC * - split into two parts: im_lrmerge() and im__lrmerge() * - latter called by im_lrmosaic() * - just the same as public im_lrmerge(), but adds no history * - necessary for im_global_balance() * - small bugs fixed * 10/10/95 JC * - better checks that parameters are sensible * 11/10/95 JC * - Kirk spotted what a load of rubbish Ahmed's code is * - rewritten - many, many bugs fixed * 24/1/97 JC * - now outputs bounding area of input images, rather than clipping * - ignores 0 pixels in blend * - small tidies * 7/2/97 JC * - new blend, caching * 25/2/97 JC * - old blend back, much simpler * - speed this up at some point if you think of an easy way to do it * 29/7/97 JC * - IM_CODING_LABQ blend now works, was bug in im_wrapone() * - small tidies * 10/1/98 JC * - merge LUTs now shared between all running mergers * - frees memory explicitly in im__stop_merge, for much better memory * use in large mosaics, huge improvement! * 18/2/98 JC * - im_demand_hint() call added * 19/2/98 JC * - now works for any dx/dy by calling im_insert() for bizarre cases * 26/9/99 JC * - ooops, blend lut was wrong! wonder how long that's been broken, * since feb97 I guess * 2/2/01 JC * - added tunable max blend width * 8/3/01 JC * - switched to integer arithmetic for integer blends * 7/11/01 JC * - more sophisticated transparency handling * - tiny blend speed up * 19/3/02 JC * - move fl cache to main state for better sharing * 15/8/02 JC * - records Xoffset/Yoffset * 20/6/05 * - now requires all bands == 0 for transparency (used to just check * band 0) * 24/1/11 * - gtk-doc * - match formats and bands automatically * 22/5/14 * - wrap as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* #define DEBUG */ #include #include #include #include #include #include "pmosaicing.h" /* Blend luts. Shared between all lr and tb blends. */ double *im__coef1 = NULL; double *im__coef2 = NULL; int *im__icoef1 = NULL; int *im__icoef2 = NULL; /* Create a lut for the merging area. Always BLEND_SIZE entries, we * scale later when we index it. */ int im__make_blend_luts( void ) { int x; /* Already done? */ if( im__coef1 && im__coef2 ) return( 0 ); /* Allocate and fill. */ im__coef1 = IM_ARRAY( NULL, BLEND_SIZE, double ); im__coef2 = IM_ARRAY( NULL, BLEND_SIZE, double ); im__icoef1 = IM_ARRAY( NULL, BLEND_SIZE, int ); im__icoef2 = IM_ARRAY( NULL, BLEND_SIZE, int ); if( !im__coef1 || !im__coef2 || !im__icoef1 || !im__icoef2 ) return( -1 ); for( x = 0; x < BLEND_SIZE; x++ ) { double a = VIPS_PI * x / (BLEND_SIZE - 1.0); im__coef1[x] = (cos( a ) + 1.0) / 2.0; im__coef2[x] = 1.0 - im__coef1[x]; im__icoef1[x] = im__coef1[x] * BLEND_SCALE; im__icoef2[x] = im__coef2[x] * BLEND_SCALE; } return( 0 ); } /* Return the position of the first non-zero pel from the left. */ static int find_first( REGION *ir, int *pos, int x, int y, int w ) { VipsPel *pr = IM_REGION_ADDR( ir, x, y ); IMAGE *im = ir->im; int ne = w * im->Bands; int i; /* Double the number of bands in a complex. */ if( vips_band_format_iscomplex( im->BandFmt ) ) ne *= 2; /* Search for the first non-zero band element from the left edge of the image. */ #define lsearch( TYPE ) { \ TYPE *p = (TYPE *) pr; \ \ for( i = 0; i < ne; i++ ) \ if( p[i] )\ break;\ } switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: lsearch( unsigned char ); break; case IM_BANDFMT_CHAR: lsearch( signed char ); break; case IM_BANDFMT_USHORT: lsearch( unsigned short ); break; case IM_BANDFMT_SHORT: lsearch( signed short ); break; case IM_BANDFMT_UINT: lsearch( unsigned int ); break; case IM_BANDFMT_INT: lsearch( signed int ); break; case IM_BANDFMT_FLOAT: lsearch( float ); break; case IM_BANDFMT_DOUBLE: lsearch( double ); break; case IM_BANDFMT_COMPLEX:lsearch( float ); break; case IM_BANDFMT_DPCOMPLEX:lsearch( double ); break; default: im_error( "im_lrmerge", "%s", _( "internal error" ) ); return( -1 ); } /* i is first non-zero band element, we want first non-zero pixel. */ *pos = x + i / im->Bands; return( 0 ); } /* Return the position of the first non-zero pel from the right. */ static int find_last( REGION *ir, int *pos, int x, int y, int w ) { VipsPel *pr = IM_REGION_ADDR( ir, x, y ); IMAGE *im = ir->im; int ne = w * im->Bands; int i; /* Double the number of bands in a complex. */ if( vips_band_format_iscomplex( im->BandFmt ) ) ne *= 2; /* Search for the first non-zero band element from the right. */ #define rsearch( TYPE ) { \ TYPE *p = (TYPE *) pr; \ \ for( i = ne - 1; i >= 0; i-- )\ if( p[i] )\ break;\ } switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: rsearch( unsigned char ); break; case IM_BANDFMT_CHAR: rsearch( signed char ); break; case IM_BANDFMT_USHORT: rsearch( unsigned short ); break; case IM_BANDFMT_SHORT: rsearch( signed short ); break; case IM_BANDFMT_UINT: rsearch( unsigned int ); break; case IM_BANDFMT_INT: rsearch( signed int ); break; case IM_BANDFMT_FLOAT: rsearch( float ); break; case IM_BANDFMT_DOUBLE: rsearch( double ); break; case IM_BANDFMT_COMPLEX:rsearch( float ); break; case IM_BANDFMT_DPCOMPLEX:rsearch( double ); break; default: im_error( "im_lrmerge", "%s", _( "internal error" ) ); return( -1 ); } /* i is first non-zero band element, we want first non-zero pixel. */ *pos = x + i / im->Bands; return( 0 ); } /* Make sure we have first/last for this area. */ static int make_firstlast( MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; Rect rr, sr; int y, yr, ys; int missing; /* We're going to build first/last ... lock it from other generate * threads. In fact it's harmless if we do get two writers, but we may * avoid duplicating work. */ g_mutex_lock( ovlap->fl_lock ); /* Do we already have first/last for this area? Bail out if we do. */ missing = 0; for( y = oreg->top; y < IM_RECT_BOTTOM( oreg ); y++ ) { const int j = y - ovlap->overlap.top; const int first = ovlap->first[j]; if( first < 0 ) { missing = 1; break; } } if( !missing ) { /* No work to do! */ g_mutex_unlock( ovlap->fl_lock ); return( 0 ); } /* Entire width of overlap in ref for scan-lines we want. */ rr.left = ovlap->overlap.left; rr.top = oreg->top; rr.width = ovlap->overlap.width; rr.height = oreg->height; rr.left -= ovlap->rarea.left; rr.top -= ovlap->rarea.top; /* Entire width of overlap in sec for scan-lines we want. */ sr.left = ovlap->overlap.left; sr.top = oreg->top; sr.width = ovlap->overlap.width; sr.height = oreg->height; sr.left -= ovlap->sarea.left; sr.top -= ovlap->sarea.top; #ifdef DEBUG printf( "im__lrmerge: making first/last for areas:\n" ); printf( "ref: left = %d, top = %d, width = %d, height = %d\n", rr.left, rr.top, rr.width, rr.height ); printf( "sec: left = %d, top = %d, width = %d, height = %d\n", sr.left, sr.top, sr.width, sr.height ); #endif /* Make pixels. */ if( im_prepare( rir, &rr ) || im_prepare( sir, &sr ) ) { g_mutex_unlock( ovlap->fl_lock ); return( -1 ); } /* Make first/last cache. */ for( y = oreg->top, yr = rr.top, ys = sr.top; y < IM_RECT_BOTTOM( oreg ); y++, yr++, ys++ ) { const int j = y - ovlap->overlap.top; int *first = &ovlap->first[j]; int *last = &ovlap->last[j]; /* Done this line already? */ if( *first < 0 ) { /* Search for start/end of overlap on this scan-line. */ if( find_first( sir, first, sr.left, ys, sr.width ) || find_last( rir, last, rr.left, yr, rr.width ) ) { g_mutex_unlock( ovlap->fl_lock ); return( -1 ); } /* Translate to output space. */ *first += ovlap->sarea.left; *last += ovlap->rarea.left; /* Clip to maximum blend width, if necessary. */ if( ovlap->mwidth >= 0 && *last - *first > ovlap->mwidth ) { int shrinkby = (*last - *first) - ovlap->mwidth; *first += shrinkby / 2; *last -= shrinkby / 2; } } } g_mutex_unlock( ovlap->fl_lock ); return( 0 ); } /* Test pixel == 0. */ #define TEST_ZERO( TYPE, T, RESULT ) { \ TYPE *tt = (T); \ int ii; \ \ for( ii = 0; ii < cb; ii++ ) \ if( tt[i + ii] ) \ break; \ if( ii == cb ) \ (RESULT) = 1; \ } /* Blend two integer images. */ #define iblend( TYPE, B, IN1, IN2, OUT ) { \ TYPE *tr = (TYPE *) (IN1); \ TYPE *ts = (TYPE *) (IN2); \ TYPE *tq = (TYPE *) (OUT); \ const int cb = (B); \ const int left = IM_CLIP( 0, first - oreg->left, oreg->width ); \ const int right = IM_CLIP( left, last - oreg->left, oreg->width ); \ int ref_zero; \ int sec_zero; \ int x, b; \ int i; \ \ /* Left of the blend area. \ */ \ for( i = 0, x = 0; x < left; x++ ) { \ ref_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ \ /* In blend area. \ */ \ for( x = left; x < right; x++ ) { \ ref_zero = 0; \ sec_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ TEST_ZERO( TYPE, ts, sec_zero ); \ \ if( !ref_zero && !sec_zero ) { \ int inx = ((x + oreg->left - first) << \ BLEND_SHIFT) / bwidth; \ int c1 = im__icoef1[inx]; \ int c2 = im__icoef2[inx]; \ \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = c1 * tr[i] / BLEND_SCALE + \ c2 * ts[i] / BLEND_SCALE; \ } \ else if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ \ /* Right of blend. */ \ for( x = right; x < oreg->width; x++ ) { \ sec_zero = 0; \ TEST_ZERO( TYPE, ts, sec_zero ); \ if( !sec_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ } \ } /* Blend two float images. */ #define fblend( TYPE, B, IN1, IN2, OUT ) { \ TYPE *tr = (TYPE *) (IN1); \ TYPE *ts = (TYPE *) (IN2); \ TYPE *tq = (TYPE *) (OUT); \ const int cb = (B); \ const int left = IM_CLIP( 0, first - oreg->left, oreg->width ); \ const int right = IM_CLIP( left, last - oreg->left, oreg->width ); \ int ref_zero; \ int sec_zero; \ int x, b; \ int i; \ \ /* Left of the blend area. \ */ \ for( i = 0, x = 0; x < left; x++ ) { \ ref_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ \ /* In blend area. \ */ \ for( x = left; x < right; x++ ) { \ ref_zero = 0; \ sec_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ TEST_ZERO( TYPE, ts, sec_zero ); \ \ if( !ref_zero && !sec_zero ) { \ int inx = ((x + oreg->left - first) << \ BLEND_SHIFT) / bwidth; \ double c1 = im__coef1[inx]; \ double c2 = im__coef2[inx]; \ \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = c1 * tr[i] + c2 * ts[i]; \ } \ else if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ \ /* Right of blend. */ \ for( x = right; x < oreg->width; x++ ) { \ sec_zero = 0; \ TEST_ZERO( TYPE, ts, sec_zero ); \ if( !sec_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ } \ } /* Left-right blend function for non-labpack images. */ static int lr_blend( REGION *or, MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; IMAGE *im = or->im; Rect prr, psr; int y, yr, ys; /* Make sure we have a complete first/last set for this area. */ if( make_firstlast( inf, ovlap, oreg ) ) return( -1 ); /* Part of rr which we will output. */ prr = *oreg; prr.left -= ovlap->rarea.left; prr.top -= ovlap->rarea.top; /* Part of sr which we will output. */ psr = *oreg; psr.left -= ovlap->sarea.left; psr.top -= ovlap->sarea.top; /* Make pixels. */ if( im_prepare( rir, &prr ) ) return( -1 ); if( im_prepare( sir, &psr ) ) return( -1 ); /* Loop down overlap area. */ for( y = oreg->top, yr = prr.top, ys = psr.top; y < IM_RECT_BOTTOM( oreg ); y++, yr++, ys++ ) { VipsPel *pr = IM_REGION_ADDR( rir, prr.left, yr ); VipsPel *ps = IM_REGION_ADDR( sir, psr.left, ys ); VipsPel *q = IM_REGION_ADDR( or, oreg->left, y ); const int j = y - ovlap->overlap.top; const int first = ovlap->first[j]; const int last = ovlap->last[j]; const int bwidth = last - first; switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: iblend( unsigned char, im->Bands, pr, ps, q ); break; case IM_BANDFMT_CHAR: iblend( signed char, im->Bands, pr, ps, q ); break; case IM_BANDFMT_USHORT: iblend( unsigned short, im->Bands, pr, ps, q ); break; case IM_BANDFMT_SHORT: iblend( signed short, im->Bands, pr, ps, q ); break; case IM_BANDFMT_UINT: iblend( unsigned int, im->Bands, pr, ps, q ); break; case IM_BANDFMT_INT: iblend( signed int, im->Bands, pr, ps, q ); break; case IM_BANDFMT_FLOAT: fblend( float, im->Bands, pr, ps, q ); break; case IM_BANDFMT_DOUBLE: fblend( double, im->Bands, pr, ps, q ); break; case IM_BANDFMT_COMPLEX: fblend( float, im->Bands*2, pr, ps, q ); break; case IM_BANDFMT_DPCOMPLEX: fblend( double, im->Bands*2, pr, ps, q ); break; default: im_error( "im_lrmerge", "%s", _( "internal error" ) ); return( -1 ); } } return( 0 ); } /* Left-right blend function for IM_CODING_LABQ images. */ static int lr_blend_labpack( REGION *or, MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; Rect prr, psr; int y, yr, ys; /* Make sure we have a complete first/last set for this area. This * will just look at the top 8 bits of L, not all 10, but should be OK. */ if( make_firstlast( inf, ovlap, oreg ) ) return( -1 ); /* Part of rr which we will output. */ prr = *oreg; prr.left -= ovlap->rarea.left; prr.top -= ovlap->rarea.top; /* Part of sr which we will output. */ psr = *oreg; psr.left -= ovlap->sarea.left; psr.top -= ovlap->sarea.top; /* Make pixels. */ if( im_prepare( rir, &prr ) ) return( -1 ); if( im_prepare( sir, &psr ) ) return( -1 ); /* Loop down overlap area. */ for( y = oreg->top, yr = prr.top, ys = psr.top; y < IM_RECT_BOTTOM( oreg ); y++, yr++, ys++ ) { VipsPel *pr = IM_REGION_ADDR( rir, prr.left, yr ); VipsPel *ps = IM_REGION_ADDR( sir, psr.left, ys ); VipsPel *q = IM_REGION_ADDR( or, oreg->left, y ); const int j = y - ovlap->overlap.top; const int first = ovlap->first[j]; const int last = ovlap->last[j]; const int bwidth = last - first; float *fq = inf->merge; float *r = inf->from1; float *s = inf->from2; /* Unpack two bits we want. */ vips__LabQ2Lab_vec( r, pr, oreg->width ); vips__LabQ2Lab_vec( s, ps, oreg->width ); /* Blend as floats. */ fblend( float, 3, r, s, fq ); /* Re-pack to output buffer. */ vips__Lab2LabQ_vec( q, inf->merge, oreg->width ); } return( 0 ); } static void * lock_free( GMutex *lock ) { vips_g_mutex_free( lock ); return( NULL ); } /* Build basic per-call state and do some geometry calculations. Shared with * im_tbmerge, so not static. */ Overlapping * im__build_mergestate( const char *domain, IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { IMAGE **vec; Overlapping *ovlap; int x; if( !(vec = im__insert_base( domain, ref, sec, out )) || !(ovlap = IM_NEW( out, Overlapping )) ) return( NULL ); if( mwidth < -1 ) { im_error( domain, "%s", _( "mwidth must be -1 or >= 0" ) ); return( NULL ); } ovlap->ref = vec[0]; ovlap->sec = vec[1]; ovlap->out = out; ovlap->dx = dx; ovlap->dy = dy; ovlap->mwidth = mwidth; /* Area occupied by ref image. Place at (0,0) to start with. */ ovlap->rarea.left = 0; ovlap->rarea.top = 0; ovlap->rarea.width = ovlap->ref->Xsize; ovlap->rarea.height = ovlap->ref->Ysize; /* Area occupied by sec image. */ ovlap->sarea.left = -dx; ovlap->sarea.top = -dy; ovlap->sarea.width = ovlap->sec->Xsize; ovlap->sarea.height = ovlap->sec->Ysize; /* Compute overlap. */ im_rect_intersectrect( &ovlap->rarea, &ovlap->sarea, &ovlap->overlap ); if( im_rect_isempty( &ovlap->overlap ) ) { im_error( domain, "%s", _( "no overlap" ) ); return( NULL ); } /* Find position and size of output image. */ im_rect_unionrect( &ovlap->rarea, &ovlap->sarea, &ovlap->oarea ); /* Now: translate everything, so that the output image, not the left * image, is at (0,0). */ ovlap->rarea.left -= ovlap->oarea.left; ovlap->rarea.top -= ovlap->oarea.top; ovlap->sarea.left -= ovlap->oarea.left; ovlap->sarea.top -= ovlap->oarea.top; ovlap->overlap.left -= ovlap->oarea.left; ovlap->overlap.top -= ovlap->oarea.top; ovlap->oarea.left = 0; ovlap->oarea.top = 0; /* Make sure blend luts are built. */ im__make_blend_luts(); /* Size of first/last cache. Could be either of these ... just pick * the larger. */ ovlap->flsize = IM_MAX( ovlap->overlap.width, ovlap->overlap.height ); /* Build first/last cache. */ ovlap->first = IM_ARRAY( out, ovlap->flsize, int ); ovlap->last = IM_ARRAY( out, ovlap->flsize, int ); if( !ovlap->first || !ovlap->last ) return( NULL ); for( x = 0; x < ovlap->flsize; x++ ) ovlap->first[x] = -1; ovlap->fl_lock = vips_g_mutex_new(); if( im_add_close_callback( out, (im_callback_fn) lock_free, ovlap->fl_lock, NULL ) ) { vips_g_mutex_free( ovlap->fl_lock ); return( NULL ); } return( ovlap ); } /* Build per-call state. */ static Overlapping * build_lrstate( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { Overlapping *ovlap; if( !(ovlap = im__build_mergestate( "im_lrmerge", ref, sec, out, dx, dy, mwidth )) ) return( NULL ); /* Select blender. */ switch( ovlap->ref->Coding ) { case IM_CODING_LABQ: ovlap->blend = lr_blend_labpack; break; case IM_CODING_NONE: ovlap->blend = lr_blend; break; default: im_error( "im_lrmerge", "%s", _( "unknown coding type" ) ); return( NULL ); } /* Find the parts of output which come just from ref and just from sec. */ ovlap->rpart = ovlap->rarea; ovlap->spart = ovlap->sarea; ovlap->rpart.width -= ovlap->overlap.width; ovlap->spart.left += ovlap->overlap.width; ovlap->spart.width -= ovlap->overlap.width; /* Is there too much overlap? ie. right edge of ref image is greater * than right edge of sec image, or left > left. */ if( IM_RECT_RIGHT( &ovlap->rarea ) > IM_RECT_RIGHT( &ovlap->sarea ) || ovlap->rarea.left > ovlap->sarea.left ) { im_error( "im_lrmerge", "%s", _( "too much overlap" ) ); return( NULL ); } /* Max number of pixels we may have to blend over. */ ovlap->blsize = ovlap->overlap.width; return( ovlap ); } /* The area being demanded can be filled using only pels from either the ref * or the sec images. Attach output to the appropriate part of the input image. * area is the position that ir->im occupies in the output image. * * Shared with im_tbmerge(), so not static. */ int im__attach_input( REGION *or, REGION *ir, Rect *area ) { Rect r = or->valid; /* Translate to source coordinate space. */ r.left -= area->left; r.top -= area->top; /* Demand input. */ if( im_prepare( ir, &r ) ) return( -1 ); /* Attach or to ir. */ if( im_region_region( or, ir, &or->valid, r.left, r.top ) ) return( -1 ); return( 0 ); } /* The area being demanded requires pixels from the ref and sec images. As * above, but just do a sub-area of the output, and make sure we copy rather * than just pointer-fiddling. reg is the sub-area of or->valid we should do. * * Shared with im_tbmerge(), so not static. */ int im__copy_input( REGION *or, REGION *ir, Rect *area, Rect *reg ) { Rect r = *reg; /* Translate to source coordinate space. */ r.left -= area->left; r.top -= area->top; /* Paint this area of ir into or. */ if( im_prepare_to( ir, or, &r, reg->left, reg->top ) ) return( -1 ); return( 0 ); } /* Generate function for merge. This is shared between im_lrmerge() and * im_tbmerge(). */ int im__merge_gen( REGION *or, void *seq, void *a, void *b ) { MergeInfo *inf = (MergeInfo *) seq; Overlapping *ovlap = (Overlapping *) a; Rect *r = &or->valid; Rect rreg, sreg, oreg; /* Find intersection with overlap, ref and sec parts. */ im_rect_intersectrect( r, &ovlap->rpart, &rreg ); im_rect_intersectrect( r, &ovlap->spart, &sreg ); /* Do easy cases first: can we satisfy this demand with pixels just * from ref, or just from sec. */ if( im_rect_equalsrect( r, &rreg ) ) { if( im__attach_input( or, inf->rir, &ovlap->rarea ) ) return( -1 ); } else if( im_rect_equalsrect( r, &sreg ) ) { if( im__attach_input( or, inf->sir, &ovlap->sarea ) ) return( -1 ); } else { /* Difficult case - do in three stages: black out whole area, * copy in parts of ref and sec we touch, write blend area. * This could be sped up somewhat ... we will usually black * out far too much, and write to the blend area three times. * Upgrade in the future! */ /* Need intersections with whole of left & right, and overlap * too. */ im_rect_intersectrect( r, &ovlap->rarea, &rreg ); im_rect_intersectrect( r, &ovlap->sarea, &sreg ); im_rect_intersectrect( r, &ovlap->overlap, &oreg ); im_region_black( or ); if( !im_rect_isempty( &rreg ) ) if( im__copy_input( or, inf->rir, &ovlap->rarea, &rreg ) ) return( -1 ); if( !im_rect_isempty( &sreg ) ) if( im__copy_input( or, inf->sir, &ovlap->sarea, &sreg ) ) return( -1 ); /* Nasty: inf->rir and inf->sir now point to the same bit of * memory (part of or), and we've written twice. We need to * make sure we get fresh pixels for the blend, so we must * invalidate them both. Should maybe add a call to the API * for this. */ inf->rir->valid.width = inf->sir->valid.width = 0; /* Now blat in the blended area. */ if( !im_rect_isempty( &oreg ) ) if( ovlap->blend( or, inf, ovlap, &oreg ) ) return( -1 ); } return( 0 ); } /* Stop function. Shared with im_tbmerge(). Free explicitly to reduce mem * requirements quickly for large mosaics. */ int im__stop_merge( void *seq, void *a, void *b ) { MergeInfo *inf = (MergeInfo *) seq; if( inf->rir ) { im_region_free( inf->rir ); inf->rir = NULL; } if( inf->sir ) { im_region_free( inf->sir ); inf->sir = NULL; } if( inf->from1 ) { im_free( inf->from1 ); inf->from1 = NULL; } if( inf->from2 ) { im_free( inf->from2 ); inf->from2 = NULL; } if( inf->merge ) { im_free( inf->merge ); inf->merge = NULL; } im_free( inf ); return( 0 ); } /* Start function. Shared with im_tbmerge(). */ void * im__start_merge( IMAGE *out, void *a, void *b ) { Overlapping *ovlap = (Overlapping *) a; MergeInfo *inf; if( !(inf = IM_NEW( NULL, MergeInfo )) ) return( NULL ); inf->rir = NULL; inf->sir = NULL; inf->from1 = NULL; inf->from2 = NULL; inf->merge = NULL; /* If this is going to be a IM_CODING_LABQ, we need IM_CODING_LABQ * blend buffers. */ if( out->Coding == IM_CODING_LABQ ) { inf->from1 = IM_ARRAY( NULL, ovlap->blsize * 3, float ); inf->from2 = IM_ARRAY( NULL, ovlap->blsize * 3, float ); inf->merge = IM_ARRAY( NULL, ovlap->blsize * 3, float ); if( !inf->from1 || !inf->from2 || !inf->merge ) { im__stop_merge( inf, NULL, NULL ); return( NULL ); } } inf->rir = im_region_create( ovlap->ref ); inf->sir = im_region_create( ovlap->sec ); if( !inf->rir || !inf->sir ) { im__stop_merge( inf, NULL, NULL ); return( NULL ); } return( inf ); } int im__lrmerge( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { Overlapping *ovlap; #ifdef DEBUG printf( "im__lrmerge %s %s %s %d %d %d\n", ref->filename, sec->filename, out->filename, dx, dy, mwidth ); printf( "ref is %d x %d pixels\n", ref->Xsize, ref->Ysize ); printf( "sec is %d x %d pixels\n", sec->Xsize, sec->Ysize ); #endif if( dx > 0 || dx < 1 - ref->Xsize ) { #ifdef DEBUG printf( "im__lrmerge: no overlap, using insert\n" ); #endif /* No overlap, use insert instead. */ if( im_insert( ref, sec, out, -dx, -dy ) ) return( -1 ); out->Xoffset = -dx; out->Yoffset = -dy; return( 0 ); } if( !(ovlap = build_lrstate( ref, sec, out, dx, dy, mwidth )) ) return( -1 ); if( im_cp_descv( out, ovlap->ref, ovlap->sec, NULL ) ) return( -1 ); out->Xsize = ovlap->oarea.width; out->Ysize = ovlap->oarea.height; out->Xoffset = -dx; out->Yoffset = -dy; if( im_demand_hint( out, IM_THINSTRIP, ovlap->ref, ovlap->sec, NULL ) ) return( -1 ); if( im_generate( out, im__start_merge, im__merge_gen, im__stop_merge, ovlap, NULL ) ) return( -1 ); return ( 0 ); } const char * im__get_mosaic_name( VipsImage *image ) { const char *name; if( vips_image_get_typeof( image, "mosaic-name" ) ) { if( vips_image_get_string( image, "mosaic-name", &name ) ) return( NULL ); } else name = image->filename; return( name ); } void im__add_mosaic_name( VipsImage *image ) { static int serial = 0; char name[256]; /* We must override any inherited name, so don't test for doesn't * exist before setting. */ vips_snprintf( name, 256, "mosaic-temp-%d", serial++ ); vips_image_set_string( image, "mosaic-name", name ); } int im_lrmerge( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { if( im__lrmerge( ref, sec, out, dx, dy, mwidth ) ) return( -1 ); im__add_mosaic_name( out ); if( im_histlin( out, "#LRJOIN <%s> <%s> <%s> <%d> <%d> <%d>", im__get_mosaic_name( ref ), im__get_mosaic_name( sec ), im__get_mosaic_name( out ), -dx, -dy, mwidth ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/mosaicing/im_lrmosaic.c000066400000000000000000000156071361153320700212760ustar00rootroot00000000000000/* join left-right with an approximate overlap * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 07/11/1989 * Modified on : 29/11/1989, 18/04/1991 * * * Modified and debugged by Ahmed Abbood . 1995 * 14/6/95 JC * - rewritten for new balance ideas * - more bug-fixes * 1/11/95 JC * - frees memory used by analysis phase as soon as possible * - means large mosaics use significantly less peak memory * 26/3/96 JC * - now calls im_lrmerge() rather than im__lrmerge() * 2/2/01 JC * - added tunable max blend width * 24/2/05 * - im_scale() makes it work for any image type * 25/1/11 * - gtk-doc * - remove balance stuff * - any mix of types and bands * - cleanups */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pmosaicing.h" #ifdef DEBUG static void im__print_mdebug( TIE_POINTS *points ) { int i; double adx = 0.0; double ady = 0.0; double acor = 0.0; for( i = 0; i < points->nopoints; i++ ) { adx += points->dx[i]; ady += points->dy[i]; acor += points->correlation[i]; } adx = adx / (double) points->nopoints; ady = ady / (double) points->nopoints; acor = acor / (double) points->nopoints; printf( "points: %d\n", points->nopoints ); printf( "average dx, dy: %g %g\n", adx, ady ); printf( "average correlation: %g\n", acor ); printf( "deltax, deltay: %g %g\n", points->l_deltax, points->l_deltay ); } #endif /*DEBUG*/ int im__find_lroverlap( IMAGE *ref_in, IMAGE *sec_in, IMAGE *out, int bandno_in, int xref, int yref, int xsec, int ysec, int halfcorrelation, int halfarea, int *dx0, int *dy0, double *scale1, double *angle1, double *dx1, double *dy1 ) { Rect left, right, overlap; IMAGE *ref, *sec; IMAGE *t[6]; TIE_POINTS points, *p_points; TIE_POINTS newpoints, *p_newpoints; int dx, dy; int i; /* Test cor and area. */ if( halfcorrelation < 0 || halfarea < 0 || halfarea < halfcorrelation ) { im_error( "im_lrmosaic", "%s", _( "bad area parameters" ) ); return( -1 ); } /* Set positions of left and right. */ left.left = 0; left.top = 0; left.width = ref_in->Xsize; left.height = ref_in->Ysize; right.left = xref - xsec; right.top = yref - ysec; right.width = sec_in->Xsize; right.height = sec_in->Ysize; /* Find overlap. */ im_rect_intersectrect( &left, &right, &overlap ); if( overlap.width < 2 * halfarea + 1 || overlap.height < 2 * halfarea + 1 ) { im_error( "im_lrmosaic", "%s", _( "overlap too small for search" ) ); return( -1 ); } /* Extract overlaps as 8-bit, 1 band. */ if( !(ref = im_open_local( out, "temp_one", "t" )) || !(sec = im_open_local( out, "temp_two", "t" )) || im_open_local_array( out, t, 6, "im_lrmosaic", "p" ) || im_extract_area( ref_in, t[0], overlap.left, overlap.top, overlap.width, overlap.height ) || im_extract_area( sec_in, t[1], overlap.left - right.left, overlap.top - right.top, overlap.width, overlap.height ) ) return( -1 ); if( ref_in->Coding == IM_CODING_LABQ ) { if( im_LabQ2Lab( t[0], t[2] ) || im_LabQ2Lab( t[1], t[3] ) || im_Lab2disp( t[2], t[4], im_col_displays( 1 ) ) || im_Lab2disp( t[3], t[5], im_col_displays( 1 ) ) || im_extract_band( t[4], ref, 1 ) || im_extract_band( t[5], sec, 1 ) ) return( -1 ); } else if( ref_in->Coding == IM_CODING_NONE ) { if( im_extract_band( t[0], t[2], bandno_in ) || im_extract_band( t[1], t[3], bandno_in ) || im_scale( t[2], ref ) || im_scale( t[3], sec ) ) return( -1 ); } else { im_error( "im_lrmosaic", "%s", _( "unknown Coding type" ) ); return( -1 ); } /* Initialise and fill TIE_POINTS */ p_points = &points; p_newpoints = &newpoints; p_points->reference = ref_in->filename; p_points->secondary = sec_in->filename; p_points->nopoints = IM_MAXPOINTS; p_points->deltax = 0; p_points->deltay = 0; p_points->halfcorsize = halfcorrelation; p_points->halfareasize = halfarea; /* Initialise the structure */ for( i = 0; i < IM_MAXPOINTS; i++ ) { p_points->x_reference[i] = 0; p_points->y_reference[i] = 0; p_points->x_secondary[i] = 0; p_points->y_secondary[i] = 0; p_points->contrast[i] = 0; p_points->correlation[i] = 0.0; p_points->dx[i] = 0.0; p_points->dy[i] = 0.0; p_points->deviation[i] = 0.0; } /* Search ref for possible tie-points. Sets: p_points->contrast, * p_points->x,y_reference. */ if( im__lrcalcon( ref, p_points ) ) return( -1 ); /* For each candidate point, correlate against corresponding part of * sec. Sets x,y_secondary and fills correlation and dx, dy. */ if( im__chkpair( ref, sec, p_points ) ) return( -1 ); /* First call to im_clinear(). */ if( im__initialize( p_points ) ) return( -1 ); /* Improve the selection of tiepoints until all abs(deviations) are * < 1.0 by deleting all wrong points. */ if( im__improve( p_points, p_newpoints ) ) return( -1 ); /* Average remaining offsets. */ if( im__avgdxdy( p_newpoints, &dx, &dy ) ) return( -1 ); /* Offset with overlap position. */ *dx0 = -right.left + dx; *dy0 = -right.top + dy; /* Write 1st order parameters too. */ *scale1 = newpoints.l_scale; *angle1 = newpoints.l_angle; *dx1 = newpoints.l_deltax; *dy1 = newpoints.l_deltay; return( 0 ); } int im_lrmosaic( IMAGE *ref, IMAGE *sec, IMAGE *out, int bandno, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int balancetype, int mwidth ) { int dx0, dy0; double scale1, angle1, dx1, dy1; IMAGE *dummy; /* Correct overlap. dummy is just a placeholder used to ensure that * memory used by the analysis phase is freed as soon as possible. */ if( !(dummy = im_open( "placeholder:1", "p" )) ) return( -1 ); if( im__find_lroverlap( ref, sec, dummy, bandno, xref, yref, xsec, ysec, hwindowsize, hsearchsize, &dx0, &dy0, &scale1, &angle1, &dx1, &dy1 ) ) { im_close( dummy ); return( -1 ); } im_close( dummy ); /* Merge left right. */ if( im_lrmerge( ref, sec, out, dx0, dy0, mwidth ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/mosaicing/im_remosaic.c000066400000000000000000000131511361153320700212570ustar00rootroot00000000000000/* Use one mosiaced file to mosaic another set of images. * * 1/11/01 JC * - from global_balance * 25/02/02 JC * - detect size change * 10/4/06 * - spot file-not-found */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Define for debug output. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include "pmosaicing.h" #include "global_balance.h" typedef struct { VipsOperation parent_instance; VipsImage *in; VipsImage *out; char *old_str; char *new_str; int new_len; int old_len; } VipsRemosaic; typedef VipsOperationClass VipsRemosaicClass; G_DEFINE_TYPE( VipsRemosaic, vips_remosaic, VIPS_TYPE_OPERATION ); static IMAGE * remosaic_fn( JoinNode *node, VipsRemosaic *remosaic ) { SymbolTable *st = node->st; IMAGE *im = node->im; IMAGE *out; char filename[FILENAME_MAX]; char *p; if( !im ) { im_error( "im_remosaic", _( "file \"%s\" not found" ), node->name ); return( NULL ); } /* Remove substring remosaic->old_str from in->filename, replace with * remosaic->new_str. */ im_strncpy( filename, im->filename, FILENAME_MAX ); if( (p = im_strrstr( filename, remosaic->old_str )) ) { int offset = p - &filename[0]; im_strncpy( p, remosaic->new_str, FILENAME_MAX - offset ); im_strncpy( p + remosaic->new_len, im->filename + offset + remosaic->old_len, FILENAME_MAX - offset - remosaic->new_len ); } #ifdef DEBUG printf( "im_remosaic: filename \"%s\" -> \"%s\"\n", im->filename, filename ); #endif /*DEBUG*/ if( !(out = im__global_open_image( st, filename )) ) return( NULL ); if( out->Xsize != im->Xsize || out->Ysize != im->Ysize ) { im_error( "im_remosaic", _( "substitute image \"%s\" is not " "the same size as \"%s\"" ), filename, im->filename ); return( NULL ); } return( out ); } static int vips_remosaic_build( VipsObject *object ) { VipsRemosaic *remosaic = (VipsRemosaic *) object; SymbolTable *st; g_object_set( remosaic, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_remosaic_parent_class )-> build( object ) ) return( -1 ); if( !(st = im__build_symtab( remosaic->out, SYM_TAB_SIZE )) || im__parse_desc( st, remosaic->in ) ) return( -1 ); remosaic->old_len = strlen( remosaic->old_str ); remosaic->new_len = strlen( remosaic->new_str ); if( im__build_mosaic( st, remosaic->out, (transform_fn) remosaic_fn, remosaic ) ) return( -1 ); return( 0 ); } static void vips_remosaic_class_init( VipsRemosaicClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "remosaic"; object_class->description = _( "global balance an image mosaic" ); object_class->build = vips_remosaic_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRemosaic, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsRemosaic, out ) ); VIPS_ARG_STRING( class, "old_str", 5, _( "old_str" ), _( "Search for this string" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRemosaic, old_str ), "" ); VIPS_ARG_STRING( class, "new_str", 6, _( "new_str" ), _( "And swap for this string" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRemosaic, new_str ), "" ); } static void vips_remosaic_init( VipsRemosaic *remosaic ) { } /** * vips_remosaic: (method) * @in: mosaic to rebuild * @out: (out): output image * @old_str: gamma of source images * @new_str: gamma of source images * @...: %NULL-terminated list of optional named arguments * * vips_remosaic() works rather as vips_globalbalance(). It takes apart the * mosaiced image @in and rebuilds it, substituting images. * * Unlike vips_globalbalance(), images are substituted based on their file‐ * names. The rightmost occurence of the string @old_str is swapped * for @new_str, that file is opened, and that image substituted for * the old image. * * It's convenient for multispectral images. You can mosaic one band, then * use that mosaic as a template for mosaicing the others automatically. * * See also: vips_globalbalance(). * * Returns: 0 on success, -1 on error */ int vips_remosaic( VipsImage *in, VipsImage **out, const char *old_str, const char *new_str, ... ) { va_list ap; int result; va_start( ap, new_str ); result = vips_call_split( "remosaic", ap, in, out, old_str, new_str ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/mosaicing/im_tbcalcon.c000066400000000000000000000074131361153320700212460ustar00rootroot00000000000000/* @(#) Functions which takes an initial estimate of deltax, deltay * @(#) between reference and secondary images (probably from the scanner), * @(#) and looks in three areas of the overlapping part of the reference image * @(#) corresponding to reference and secondary. For every other halfreasize * @(#) point of the three areas of the reference image * @(#) the contrast is calculated * @(#) an area 2*halfcorsize+1 centered at this point * @(#) Results are saved in the structure points * @(#) The function expects the following valid data in points: * @(#) deltax, deltay, nopoints, halfcorsize, halfareasize * @(#) and fills in the memebers: * @(#) x, y_reference[], contrast and x,y_secondary[], * @(#) based on deltax and deltay * @(#) Input image should are either memory mapped or in a buffer. * @(#) To make the calculation faster set FACTOR to 1, 2 or 3 * @(#) Calculations are based on bandno only. * @(#) The function uses functions im_calculate_contrast() * @(#) which is in im_lrcalcon() * @(#) * @(#) int im_tbcalcon( ref, sec, bandno, points ) * @(#) IMAGE *ref, *sec; * @(#) int bandno; * @(#) TIE_POINTS *points; see mosaic.h * @(#) * @(#) Returns 0 on sucess and -1 on error. * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 20/12/1990 * Modified on : 18/04/1991 * 8/7/93 JC * - allow IM_CODING_LABQ coding * - now calls im_incheck() * 12/7/95 JC * - reworked * - what a lot of horrible old code there was too */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pmosaicing.h" int im__tbcalcon( IMAGE *ref, TIE_POINTS *points ) { /* Geometry: border we must leave around each area. */ const int border = points->halfareasize; /* Width of an area. */ const int awidth = ref->Xsize / AREAS; /* Number of points we find in each area. */ const int len = points->nopoints / AREAS; int i; Rect area; /* Make sure we can read image. */ if( im_incheck( ref ) ) return( -1 ); if( ref->Bands != 1 || ref->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im__tbcalcon", "%s", _( "help!" ) ); return( -1 ); } /* Define bits to search for high-contrast areas. */ area.width = awidth; area.height = ref->Ysize; area.left = 0; area.top = 0; im_rect_marginadjust( &area, -border ); area.width--; area.height--; if( area.width < 0 || area.height < 0 ) { im_error( "im__tbcalcon", "%s", _( "overlap too small" ) ); return( -1 ); } /* Loop over areas, finding points. */ for( i = 0; area.left < ref->Xsize; area.left += awidth, i++ ) if( im__find_best_contrast( ref, area.left, area.top, area.width, area.height, points->x_reference + i*len, points->y_reference + i*len, points->contrast + i*len, len, points->halfcorsize ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/mosaicing/im_tbmerge.c000066400000000000000000000420511361153320700211030ustar00rootroot00000000000000/* Merge two images top-bottom. dx, dy is the offset needed to get from sec * (secondary image) to ref (reference image). * * Usage: * * int * im_tbmerge( ref, sec, out, dx, dy ) * IMAGE *ref, *sec, *out; * int dx, dy; * * Returns 0 on success and -1 on error * * Copyright: 1990, 1991 N. Dessipris * Author: N. Dessipris * Written on: 20/09/1990 * Updated on: 17/04/1991 * 1/6/92: J. Cupitt * - check for difference bug fixed * - geometry calculations improved and simplified * - small speedups * 30/6/93 K.Martinez : coped with IM_CODING_LABQ images * 7/7/93 JC * - ANSIfied * - proper freeing on errors, ready for partial * 8/11/93 JC * - now propogates both input histories * - adds magic lines for global mosaic optimisation * * * 16/May/1994 Ahmed. Abbood * - Modified to use partials on all IO * * June/1995 Ahmed Abbood * * - Modified to work with different types of images. * * * 16/6/95 JC * - added to VIPS! * 7/9/95 JC * - split into two parts: im_tbmerge() and im__tbmerge() * - latter called by im_tbmosaic() * - just the same as public im_tbmerge(), but adds no history * - necessary for im_global_balance() * - small bugs fixed * 10/10/95 JC * - better checks that parameters are sensible * 11/10/95 JC * - Kirk spotted what a load of rubbish Ahmed's code is * - rewritten - many, many bugs fixed * 28/7/97 JC * - new non-rectangular im_lrmerge adapted to make this * - small tidies * 18/2/98 JC * - im_demand_hint() call added * 19/2/98 JC * - now works for any dx/dy by calling im_insert() for bizarre cases * 2/2/01 JC * - added tunable max blend width * 8/3/01 JC * - switched to integer arithmetic for integer blends * 23/3/01 JC * - oops, iblend was broken * 7/11/01 JC * - more sophisticated transparency handling * 15/8/02 JC * - records Xoffset/Yoffset * 20/6/05 * - now requires all bands == 0 for transparency (used to just check * band 0) * 24/1/11 * - gtk-doc * - match formats and bands automatically */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include "pmosaicing.h" /* Return the position of the first non-zero pel from the top. */ static int find_top( REGION *ir, int *pos, int x, int y, int h ) { VipsPel *pr = IM_REGION_ADDR( ir, x, y ); IMAGE *im = ir->im; int ls = IM_REGION_LSKIP( ir ) / IM_IMAGE_SIZEOF_ELEMENT( im ); int b = im->Bands; int i, j; /* Double the number of bands in a complex. */ if( vips_band_format_iscomplex( im->BandFmt ) ) b *= 2; /* Search for the first non-zero band element from the top edge of the image. */ #define tsearch( TYPE ) { \ TYPE *p = (TYPE *) pr; \ \ for( i = 0; i < h; i++ ) { \ for( j = 0; j < b; j++ ) \ if( p[j] ) \ break; \ if( j < b ) \ break; \ \ p += ls; \ } \ } switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: tsearch( unsigned char ); break; case IM_BANDFMT_CHAR: tsearch( signed char ); break; case IM_BANDFMT_USHORT: tsearch( unsigned short ); break; case IM_BANDFMT_SHORT: tsearch( signed short ); break; case IM_BANDFMT_UINT: tsearch( unsigned int ); break; case IM_BANDFMT_INT: tsearch( signed int ); break; case IM_BANDFMT_FLOAT: tsearch( float ); break; case IM_BANDFMT_DOUBLE: tsearch( double ); break; case IM_BANDFMT_COMPLEX:tsearch( float ); break; case IM_BANDFMT_DPCOMPLEX:tsearch( double ); break; default: im_error( "im_tbmerge", "%s", _( "internal error" ) ); return( -1 ); } *pos = y + i; return( 0 ); } /* Return the position of the first non-zero pel from the bottom. */ static int find_bot( REGION *ir, int *pos, int x, int y, int h ) { VipsPel *pr = IM_REGION_ADDR( ir, x, y ); IMAGE *im = ir->im; int ls = IM_REGION_LSKIP( ir ) / IM_IMAGE_SIZEOF_ELEMENT( ir->im ); int b = im->Bands; int i, j; /* Double the number of bands in a complex. */ if( vips_band_format_iscomplex( im->BandFmt ) ) b *= 2; /* Search for the first non-zero band element from the top edge of the image. */ #define rsearch( TYPE ) { \ TYPE *p = (TYPE *) pr + (h - 1) * ls; \ \ for( i = h - 1; i >= 0; i-- ) { \ for( j = 0; j < b; j++ ) \ if( p[j] ) \ break; \ if( j < b ) \ break; \ \ p -= ls; \ } \ } switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: rsearch( unsigned char ); break; case IM_BANDFMT_CHAR: rsearch( signed char ); break; case IM_BANDFMT_USHORT: rsearch( unsigned short ); break; case IM_BANDFMT_SHORT: rsearch( signed short ); break; case IM_BANDFMT_UINT: rsearch( unsigned int ); break; case IM_BANDFMT_INT: rsearch( signed int ); break; case IM_BANDFMT_FLOAT: rsearch( float ); break; case IM_BANDFMT_DOUBLE: rsearch( double ); break; case IM_BANDFMT_COMPLEX:rsearch( float ); break; case IM_BANDFMT_DPCOMPLEX:rsearch( double ); break; default: im_error( "im_tbmerge", "%s", _( "internal error" ) ); return( -1 ); } *pos = y + i; return( 0 ); } /* Make first/last for oreg. */ static int make_firstlast( MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; Rect rr, sr; int x; int missing; /* We're going to build first/last ... lock it from other generate * threads. In fact it's harmless if we do get two writers, but we may * avoid duplicating work. */ g_mutex_lock( ovlap->fl_lock ); /* Do we already have first/last for this area? Bail out if we do. */ missing = 0; for( x = oreg->left; x < IM_RECT_RIGHT( oreg ); x++ ) { const int j = x - ovlap->overlap.left; const int first = ovlap->first[j]; if( first < 0 ) { missing = 1; break; } } if( !missing ) { /* No work to do! */ g_mutex_unlock( ovlap->fl_lock ); return( 0 ); } /* Entire height of overlap in ref for oreg ... we know oreg is inside * overlap. */ rr.left = oreg->left; rr.top = ovlap->overlap.top; rr.width = oreg->width; rr.height = ovlap->overlap.height; rr.left -= ovlap->rarea.left; rr.top -= ovlap->rarea.top; /* Same in sec. */ sr.left = oreg->left; sr.top = ovlap->overlap.top; sr.width = oreg->width; sr.height = ovlap->overlap.height; sr.left -= ovlap->sarea.left; sr.top -= ovlap->sarea.top; /* Make pixels. */ if( im_prepare( rir, &rr ) || im_prepare( sir, &sr ) ) { g_mutex_unlock( ovlap->fl_lock ); return( -1 ); } /* Make first/last cache. */ for( x = 0; x < oreg->width; x++ ) { const int j = (x + oreg->left) - ovlap->overlap.left; int *first = &ovlap->first[j]; int *last = &ovlap->last[j]; /* Done this line already? */ if( *first < 0 ) { /* Search for top/bottom of overlap on this scan-line. */ if( find_top( sir, first, x + sr.left, sr.top, sr.height ) || find_bot( rir, last, x + rr.left, rr.top, rr.height ) ) { g_mutex_unlock( ovlap->fl_lock ); return( -1 ); } /* Translate to output space. */ *first += ovlap->sarea.top; *last += ovlap->rarea.top; /* Clip to maximum blend width, if necessary. */ if( ovlap->mwidth >= 0 && *last - *first > ovlap->mwidth ) { int shrinkby = (*last - *first) - ovlap->mwidth; *first += shrinkby / 2; *last -= shrinkby / 2; } } } g_mutex_unlock( ovlap->fl_lock ); return( 0 ); } /* Test pixel == 0. */ #define TEST_ZERO( TYPE, T, RESULT ) { \ TYPE *tt = (T); \ int ii; \ \ for( ii = 0; ii < cb; ii++ ) \ if( tt[i + ii] ) \ break; \ if( ii == cb ) \ (RESULT) = 1; \ } /* Blend two integer images ... one scan-line. */ #define iblend( TYPE, B, IN1, IN2, OUT ) { \ TYPE *tr = (TYPE *) (IN1); \ TYPE *ts = (TYPE *) (IN2); \ TYPE *tq = (TYPE *) (OUT); \ const int cb = (B); \ int ref_zero; \ int sec_zero; \ int x, b; \ int i; \ \ for( i = 0, x = 0; x < oreg->width; x++ ) { \ ref_zero = 0; \ sec_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ TEST_ZERO( TYPE, ts, sec_zero ); \ \ /* Above the bottom image? \ */ \ if( y < first[x] ) { \ if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ /* To the right? \ */ \ else if( y >= last[x] ) { \ if( !sec_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ } \ /* In blend area. \ */ \ else { \ if( !ref_zero && !sec_zero ) { \ const int bheight = last[x] - first[x]; \ const int inx = ((y - first[x]) << \ BLEND_SHIFT) / bheight; \ int c1 = im__icoef1[inx]; \ int c2 = im__icoef2[inx]; \ \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = c1*tr[i] / BLEND_SCALE + \ c2*ts[i] / BLEND_SCALE; \ } \ else if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ } \ } /* Blend two float images. */ #define fblend( TYPE, B, IN1, IN2, OUT ) { \ TYPE *tr = (TYPE *) (IN1); \ TYPE *ts = (TYPE *) (IN2); \ TYPE *tq = (TYPE *) (OUT); \ int ref_zero; \ int sec_zero; \ const int cb = (B); \ int x, b; \ int i; \ \ for( i = 0, x = 0; x < oreg->width; x++ ) { \ ref_zero = 0; \ sec_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ TEST_ZERO( TYPE, ts, sec_zero ); \ \ /* Above the bottom image? \ */ \ if( y < first[x] ) \ if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ /* To the right? \ */ \ else if( y >= last[x] ) \ if( !sec_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ /* In blend area. \ */ \ else { \ if( !ref_zero && !sec_zero ) { \ const int bheight = last[x] - first[x]; \ const int inx = ((y - first[x]) << \ BLEND_SHIFT) / bheight; \ double c1 = im__coef1[inx]; \ double c2 = im__coef2[inx]; \ \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = c1 * tr[i] + c2 * ts[i]; \ } \ else if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ } \ } /* Top-bottom blend function for non-labpack images. */ static int tb_blend( REGION *or, MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; IMAGE *im = or->im; Rect prr, psr; int y, yr, ys; /* Make sure we have a complete first/last set for this area. */ if( make_firstlast( inf, ovlap, oreg ) ) return( -1 ); /* Part of rr which we will output. */ prr = *oreg; prr.left -= ovlap->rarea.left; prr.top -= ovlap->rarea.top; /* Part of sr which we will output. */ psr = *oreg; psr.left -= ovlap->sarea.left; psr.top -= ovlap->sarea.top; /* Make pixels. */ if( im_prepare( rir, &prr ) ) return( -1 ); if( im_prepare( sir, &psr ) ) return( -1 ); /* Loop down overlap area. */ for( y = oreg->top, yr = prr.top, ys = psr.top; y < IM_RECT_BOTTOM( oreg ); y++, yr++, ys++ ) { VipsPel *pr = IM_REGION_ADDR( rir, prr.left, yr ); VipsPel *ps = IM_REGION_ADDR( sir, psr.left, ys ); VipsPel *q = IM_REGION_ADDR( or, oreg->left, y ); const int j = oreg->left - ovlap->overlap.left; const int *first = ovlap->first + j; const int *last = ovlap->last + j; switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: iblend( unsigned char, im->Bands, pr, ps, q ); break; case IM_BANDFMT_CHAR: iblend( signed char, im->Bands, pr, ps, q ); break; case IM_BANDFMT_USHORT: iblend( unsigned short, im->Bands, pr, ps, q ); break; case IM_BANDFMT_SHORT: iblend( signed short, im->Bands, pr, ps, q ); break; case IM_BANDFMT_UINT: iblend( unsigned int, im->Bands, pr, ps, q ); break; case IM_BANDFMT_INT: iblend( signed int, im->Bands, pr, ps, q ); break; case IM_BANDFMT_FLOAT: fblend( float, im->Bands, pr, ps, q ); break; case IM_BANDFMT_DOUBLE: fblend( double, im->Bands, pr, ps, q ); break; case IM_BANDFMT_COMPLEX: fblend( float, im->Bands*2, pr, ps, q ); break; case IM_BANDFMT_DPCOMPLEX: fblend( double, im->Bands*2, pr, ps, q ); break; default: im_error( "im_tbmerge", "%s", _( "internal error" ) ); return( -1 ); } } return( 0 ); } /* Top-bottom blend function for IM_CODING_LABQ images. */ static int tb_blend_labpack( REGION *or, MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; Rect prr, psr; int y, yr, ys; /* Make sure we have a complete first/last set for this area. This * will just look at the top 8 bits of L, not all 10, but should be OK. */ if( make_firstlast( inf, ovlap, oreg ) ) return( -1 ); /* Part of rr which we will output. */ prr = *oreg; prr.left -= ovlap->rarea.left; prr.top -= ovlap->rarea.top; /* Part of sr which we will output. */ psr = *oreg; psr.left -= ovlap->sarea.left; psr.top -= ovlap->sarea.top; /* Make pixels. */ if( im_prepare( rir, &prr ) ) return( -1 ); if( im_prepare( sir, &psr ) ) return( -1 ); /* Loop down overlap area. */ for( y = oreg->top, yr = prr.top, ys = psr.top; y < IM_RECT_BOTTOM( oreg ); y++, yr++, ys++ ) { VipsPel *pr = IM_REGION_ADDR( rir, prr.left, yr ); VipsPel *ps = IM_REGION_ADDR( sir, psr.left, ys ); VipsPel *q = IM_REGION_ADDR( or, oreg->left, y ); const int j = oreg->left - ovlap->overlap.left; const int *first = ovlap->first + j; const int *last = ovlap->last + j; float *fq = inf->merge; float *r = inf->from1; float *s = inf->from2; /* Unpack two bits we want. */ vips__LabQ2Lab_vec( r, pr, oreg->width ); vips__LabQ2Lab_vec( s, ps, oreg->width ); /* Blend as floats. */ fblend( float, 3, r, s, fq ); /* Re-pack to output buffer. */ vips__Lab2LabQ_vec( q, inf->merge, oreg->width ); } return( 0 ); } /* Build per-call state. */ static Overlapping * build_tbstate( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { Overlapping *ovlap; if( !(ovlap = im__build_mergestate( "im_tbmerge", ref, sec, out, dx, dy, mwidth )) ) return( NULL ); /* Select blender. */ switch( ovlap->ref->Coding ) { case IM_CODING_LABQ: ovlap->blend = tb_blend_labpack; break; case IM_CODING_NONE: ovlap->blend = tb_blend; break; default: im_error( "im_tbmerge", "%s", _( "unknown coding type" ) ); return( NULL ); } /* Find the parts of output which come just from ref and just from sec. */ ovlap->rpart = ovlap->rarea; ovlap->spart = ovlap->sarea; ovlap->rpart.height -= ovlap->overlap.height; ovlap->spart.top += ovlap->overlap.height; ovlap->spart.height -= ovlap->overlap.height; /* Is there too much overlap? ie. bottom edge of ref image is greater * than bottom edge of sec image, or top edge of ref > top edge of * sec. */ if( IM_RECT_BOTTOM( &ovlap->rarea ) > IM_RECT_BOTTOM( &ovlap->sarea ) || ovlap->rarea.top > ovlap->sarea.top ) { im_error( "im_tbmerge", "%s", _( "too much overlap" ) ); return( NULL ); } /* Max number of pixels we may have to blend together. */ ovlap->blsize = ovlap->overlap.width; return( ovlap ); } int im__tbmerge( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { Overlapping *ovlap; if( dy > 0 || dy < 1 - ref->Ysize ) { /* No overlap, use insert instead. */ if( im_insert( ref, sec, out, -dx, -dy ) ) return( -1 ); out->Xoffset = -dx; out->Yoffset = -dy; return( 0 ); } if( !(ovlap = build_tbstate( ref, sec, out, dx, dy, mwidth )) ) return( -1 ); if( im_cp_descv( out, ref, sec, NULL ) ) return( -1 ); out->Xsize = ovlap->oarea.width; out->Ysize = ovlap->oarea.height; out->Xoffset = -dx; out->Yoffset = -dy; if( im_demand_hint( out, IM_THINSTRIP, ref, sec, NULL ) ) return( -1 ); if( im_generate( out, im__start_merge, im__merge_gen, im__stop_merge, ovlap, NULL ) ) return( -1 ); return ( 0 ); } int im_tbmerge( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { if( im__tbmerge( ref, sec, out, dx, dy, mwidth ) ) return( -1 ); im__add_mosaic_name( out ); if( im_histlin( out, "#TBJOIN <%s> <%s> <%s> <%d> <%d> <%d>", im__get_mosaic_name( ref ), im__get_mosaic_name( sec ), im__get_mosaic_name( out ), -dx, -dy, mwidth ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/mosaicing/im_tbmosaic.c000066400000000000000000000146261361153320700212660ustar00rootroot00000000000000/* join top-bottom with an approximate overlap * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 07/11/1989 * Modified on : 29/11/1989, 18/04/1991 * Modified and debugged by Ahmed Abbood . 1995 * 14/6/95 JC * - adapted for new balance ideas * - more bug-fixes * 1/11/95 JC * - frees memory used by analysis phase as soon as possible * - means large mosaics use significantly less peak memory * 26/3/96 JC * - now calls im_tbmerge() rather than im__tbmerge() * 30/7/97 JC * - im__find_tboverlap() returns 1st order params too * 2/2/01 JC * - added tunable max blend width * 24/2/05 * - im_scale() makes it work for any image type * 25/1/11 * - gtk-doc * - remove balance stuff * - any mix of types and bands * - cleanups */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pmosaicing.h" int im__find_tboverlap( IMAGE *ref_in, IMAGE *sec_in, IMAGE *out, int bandno_in, int xref, int yref, int xsec, int ysec, int halfcorrelation, int halfarea, int *dx0, int *dy0, double *scale1, double *angle1, double *dx1, double *dy1 ) { Rect top, bottom, overlap; IMAGE *ref, *sec; IMAGE *t[6]; TIE_POINTS points, *p_points; /* defined in mosaic.h */ TIE_POINTS newpoints, *p_newpoints; int i; int dx, dy; /* Test cor and area. */ if( halfcorrelation < 0 || halfarea < 0 || halfarea < halfcorrelation ) { im_error( "im_tbmosaic", "%s", _( "bad area parameters" ) ); return( -1 ); } /* Set positions of top and bottom. */ top.left = 0; top.top = 0; top.width = ref_in->Xsize; top.height = ref_in->Ysize; bottom.left = xref - xsec; bottom.top = yref - ysec; bottom.width = sec_in->Xsize; bottom.height = sec_in->Ysize; /* Find overlap. */ im_rect_intersectrect( &top, &bottom, &overlap ); if( overlap.width < 2 * halfarea + 1 || overlap.height < 2 * halfarea + 1 ) { im_error( "im_tbmosaic", "%s", _( "overlap too small for search" ) ); return( -1 ); } /* Extract overlaps as 8-bit, 1 band. */ if( !(ref = im_open_local( out, "temp_one", "t" )) || !(sec = im_open_local( out, "temp_two", "t" )) || im_open_local_array( out, t, 6, "im_tbmosaic", "p" ) || im_extract_area( ref_in, t[0], overlap.left, overlap.top, overlap.width, overlap.height ) || im_extract_area( sec_in, t[1], overlap.left - bottom.left, overlap.top - bottom.top, overlap.width, overlap.height ) ) return( -1 ); if( ref_in->Coding == IM_CODING_LABQ ) { if( im_LabQ2Lab( t[0], t[2] ) || im_LabQ2Lab( t[1], t[3] ) || im_Lab2disp( t[2], t[4], im_col_displays( 1 ) ) || im_Lab2disp( t[3], t[5], im_col_displays( 1 ) ) || im_extract_band( t[4], ref, 1 ) || im_extract_band( t[5], sec, 1 ) ) return( -1 ); } else if( ref_in->Coding == IM_CODING_NONE ) { if( im_extract_band( t[0], t[2], bandno_in ) || im_extract_band( t[1], t[3], bandno_in ) || im_scale( t[2], ref ) || im_scale( t[3], sec ) ) return( -1 ); } else { im_error( "im_tbmosaic", "%s", _( "unknown Coding type" ) ); return( -1 ); } /* Initialise and fill TIE_POINTS */ p_points = &points; p_newpoints = &newpoints; p_points->reference = ref_in->filename; p_points->secondary = sec_in->filename; p_points->nopoints = IM_MAXPOINTS; p_points->deltax = 0; p_points->deltay = 0; p_points->halfcorsize = halfcorrelation; p_points->halfareasize = halfarea; /* Initialise the structure */ for( i = 0; i < IM_MAXPOINTS; i++ ) { p_points->x_reference[i] = 0; p_points->y_reference[i] = 0; p_points->x_secondary[i] = 0; p_points->y_secondary[i] = 0; p_points->contrast[i] = 0; p_points->correlation[i] = 0.0; p_points->dx[i] = 0.0; p_points->dy[i] = 0.0; p_points->deviation[i] = 0.0; } /* Search ref for possible tie-points. Sets: p_points->contrast, * p_points->x,y_reference. */ if( im__tbcalcon( ref, p_points ) ) return( -1 ); /* For each candidate point, correlate against corresponding part of * sec. Sets x,y_secondary and fills correlation and dx, dy. */ if( im__chkpair( ref, sec, p_points ) ) return( -1 ); /* First call to im_clinear(). */ if( im__initialize( p_points ) ) return( -1 ); /* Improve the selection of tiepoints until all abs(deviations) are * < 1.0 by deleting all wrong points. */ if( im__improve( p_points, p_newpoints ) ) return( -1 ); /* Average remaining offsets. */ if( im__avgdxdy( p_newpoints, &dx, &dy ) ) return( -1 ); /* Offset with overlap position. */ *dx0 = -bottom.left + dx; *dy0 = -bottom.top + dy; /* Write 1st order parameters too. */ *scale1 = newpoints.l_scale; *angle1 = newpoints.l_angle; *dx1 = newpoints.l_deltax; *dy1 = newpoints.l_deltay; return( 0 ); } int im_tbmosaic( IMAGE *ref, IMAGE *sec, IMAGE *out, int bandno, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int balancetype, int mwidth ) { int dx0, dy0; double scale1, angle1, dx1, dy1; IMAGE *dummy; /* Correct overlap. dummy is just a placeholder used to ensure that * memory used by the analysis phase is freed as soon as possible. */ if( !(dummy = im_open( "placeholder:1", "p" )) ) return( -1 ); if( im__find_tboverlap( ref, sec, dummy, bandno, xref, yref, xsec, ysec, hwindowsize, hsearchsize, &dx0, &dy0, &scale1, &angle1, &dx1, &dy1 ) ) { im_close( dummy ); return( -1 ); } im_close( dummy ); /* Merge top-bottom. */ if( im_tbmerge( ref, sec, out, dx0, dy0, mwidth ) ) return( -1 ); return( 0 ); } libvips-8.9.1/libvips/mosaicing/match.c000066400000000000000000000213621361153320700200670ustar00rootroot00000000000000/* Match images. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pmosaicing.h" /* Given a pair of points, return scale, angle, dx, dy to resample the 2nd * image with. */ int im__coeff( int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, double *a, double *b, double *dx, double *dy ) { DOUBLEMASK *in, *out; if( !(in = im_create_dmask( "in", 4, 4 )) ) return( -1 ); in->coeff[0] = (double)xs1; in->coeff[1] = (double)-ys1; in->coeff[2] = 1.0; in->coeff[3] = 0.0; in->coeff[4] = (double)ys1; in->coeff[5] = (double)xs1; in->coeff[6] = 0.0; in->coeff[7] = 1.0; in->coeff[8] = (double)xs2; in->coeff[9] = (double)-ys2; in->coeff[10] = 1.0; in->coeff[11] = 0.0; in->coeff[12] = (double)ys2; in->coeff[13] = (double)xs2; in->coeff[14] = 0.0; in->coeff[15] = 1.0; if( !(out = im_matinv( in, "out" )) ) { im_free_dmask( in ); return( -1 ); } *a = out->coeff[0]*xr1 + out->coeff[1]*yr1 + out->coeff[2]*xr2 + out->coeff[3]*yr2; *b = out->coeff[4]*xr1 + out->coeff[5]*yr1 + out->coeff[6]*xr2 + out->coeff[7]*yr2; *dx= out->coeff[8]*xr1 + out->coeff[9]*yr1 + out->coeff[10]*xr2 + out->coeff[11]*yr2; *dy= out->coeff[12]*xr1 + out->coeff[13]*yr1 + out->coeff[14]*xr2 + out->coeff[15]*yr2; im_free_dmask( in ); im_free_dmask( out ); return( 0 ); } typedef struct { VipsOperation parent_instance; VipsImage *ref; VipsImage *sec; VipsImage *out; int xr1; int yr1; int xs1; int ys1; int xr2; int yr2; int xs2; int ys2; int hwindow; int harea; gboolean search; VipsInterpolate *interpolate; } VipsMatch; typedef VipsOperationClass VipsMatchClass; G_DEFINE_TYPE( VipsMatch, vips_match, VIPS_TYPE_OPERATION ); static int vips_match_build( VipsObject *object ) { VipsMatch *match = (VipsMatch *) object; double a, b, dx, dy; VipsArrayInt *oarea; VipsImage *x; g_object_set( match, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_match_parent_class )->build( object ) ) return( -1 ); if( !match->interpolate ) match->interpolate = vips_interpolate_new( "bilinear" ); if( match->search ) { int xs, ys; double cor; if( im_correl( match->ref, match->sec, match->xr1, match->yr1, match->xs1, match->ys1, match->hwindow, match->harea, &cor, &xs, &ys ) ) return( -1 ); match->xs1 = xs; match->ys1 = ys; if( im_correl( match->ref, match->sec, match->xr2, match->yr2, match->xs2, match->ys2, match->hwindow, match->harea, &cor, &xs, &ys ) ) return( -1 ); match->xs2 = xs; match->ys2 = ys; } /* Solve to get scale + rot + disp to obtain match. */ if( im__coeff( match->xr1, match->yr1, match->xs1, match->ys1, match->xr2, match->yr2, match->xs2, match->ys2, &a, &b, &dx, &dy ) ) return( -1 ); /* Output area of ref image. */ oarea = vips_array_int_newv( 4, 0, 0, match->ref->Xsize, match->ref->Ysize ); if( vips_affine( match->sec, &x, a, -b, b, a, "interpolate", match->interpolate, "odx", dx, "ody", dy, "oarea", oarea, NULL ) ) { vips_area_unref( VIPS_AREA( oarea ) ); return( -1 ); } vips_area_unref( VIPS_AREA( oarea ) ); if( vips_image_write( x, match->out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } static void vips_match_class_init( VipsMatchClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "match"; object_class->description = _( "first-order match of two images" ); object_class->build = vips_match_build; VIPS_ARG_IMAGE( class, "ref", 1, _( "Reference" ), _( "Reference image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, ref ) ); VIPS_ARG_IMAGE( class, "sec", 2, _( "Secondary" ), _( "Secondary image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, sec ) ); VIPS_ARG_IMAGE( class, "out", 3, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMatch, out ) ); VIPS_ARG_INT( class, "xr1", 5, _( "xr1" ), _( "Position of first reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, xr1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "yr1", 6, _( "yr1" ), _( "Position of first reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, yr1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xs1", 7, _( "xs1" ), _( "Position of first secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, xs1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "ys1", 8, _( "ys1" ), _( "Position of first secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, ys1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xr2", 9, _( "xr2" ), _( "Position of second reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, xr2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "yr2", 10, _( "yr2" ), _( "Position of second reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, yr2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xs2", 11, _( "xs2" ), _( "Position of second secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, xs2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "ys2", 12, _( "ys2" ), _( "Position of second secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, ys2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "hwindow", 13, _( "hwindow" ), _( "Half window size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMatch, hwindow ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "harea", 14, _( "harea" ), _( "Half area size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMatch, harea ), 0, 1000000000, 1 ); VIPS_ARG_BOOL( class, "search", 15, _( "search" ), _( "Search to improve tie-points" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMatch, search ), FALSE ); VIPS_ARG_INTERPOLATE( class, "interpolate", 16, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMatch, interpolate ) ); } static void vips_match_init( VipsMatch *match ) { match->hwindow = 5; match->harea = 15; match->search = FALSE; } /** * vips_match: * @ref: reference image * @sec: secondary image * @out: (out): output image * @xr1: first reference tie-point * @yr1: first reference tie-point * @xs1: first secondary tie-point * @ys1: first secondary tie-point * @xr2: second reference tie-point * @yr2: second reference tie-point * @xs2: second secondary tie-point * @ys2: second secondary tie-point * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @search: search to improve tie-points * * @hwindow: half window size * * @harea: half search size * * @interpolate: interpolate pixels with this * * Scale, rotate and translate @sec so that the tie-points line up. * * If @search is %TRUE, before performing the transformation, the tie-points * are improved by searching an area of @sec of size @harea for a * match of size @hwindow to @ref. * * This function will only work well for small rotates and scales. * * Returns: 0 on success, -1 on error */ int vips_match( VipsImage *ref, VipsImage *sec, VipsImage **out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, ... ) { va_list ap; int result; va_start( ap, ys2 ); result = vips_call_split( "match", ap, ref, sec, out, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2 ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/mosaicing/merge.c000066400000000000000000000135171361153320700200750ustar00rootroot00000000000000/* merge two images left/right or up/down * * 22/5/14 * - from vips_merge() * 13/6/17 * - tag as SEQUENTIAL */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* This is a simple wrapper over the old vips7 functions. At some point we * should rewrite this as a pure vips8 class and redo the vips7 functions as * wrappers over this. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include typedef struct { VipsOperation parent_instance; VipsImage *ref; VipsImage *sec; VipsImage *out; VipsDirection direction; int dx; int dy; int mblend; } VipsMerge; typedef VipsOperationClass VipsMergeClass; G_DEFINE_TYPE( VipsMerge, vips_merge, VIPS_TYPE_OPERATION ); static int vips_merge_build( VipsObject *object ) { VipsMerge *merge = (VipsMerge *) object; g_object_set( merge, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_merge_parent_class )->build( object ) ) return( -1 ); switch( merge->direction ) { case VIPS_DIRECTION_HORIZONTAL: if( im_lrmerge( merge->ref, merge->sec, merge->out, merge->dx, merge->dy, merge->mblend ) ) return( -1 ); break; case VIPS_DIRECTION_VERTICAL: if( im_tbmerge( merge->ref, merge->sec, merge->out, merge->dx, merge->dy, merge->mblend ) ) return( -1 ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_merge_class_init( VipsMergeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "merge"; object_class->description = _( "merge two images" ); object_class->build = vips_merge_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "ref", 1, _( "Reference" ), _( "Reference image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMerge, ref ) ); VIPS_ARG_IMAGE( class, "sec", 2, _( "Secondary" ), _( "Secondary image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMerge, sec ) ); VIPS_ARG_IMAGE( class, "out", 3, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMerge, out ) ); VIPS_ARG_ENUM( class, "direction", 4, _( "Direction" ), _( "Horizontal or vertcial merge" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMerge, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); VIPS_ARG_INT( class, "dx", 5, _( "dx" ), _( "Horizontal displacement from sec to ref" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMerge, dx ), -100000000, 1000000000, 1 ); VIPS_ARG_INT( class, "dy", 6, _( "dy" ), _( "Vertical displacement from sec to ref" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMerge, dy ), -100000000, 1000000000, 1 ); VIPS_ARG_INT( class, "mblend", 7, _( "Max blend" ), _( "Maximum blend size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMerge, mblend ), 0, 10000, 10 ); } static void vips_merge_init( VipsMerge *merge ) { merge->mblend = 10; } /** * vips_merge: * @ref: reference image * @sec: secondary image * @out: (out): output image * @direction: horizontal or vertical merge * @dx: displacement of ref from sec * @dy: displacement of ref from sec * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @mblend: %gint, maximum blend size * * This operation joins two images left-right (with @ref on the left) or * up-down (with @ref above) with a smooth seam. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * @dx and @dy give the displacement of @sec relative to @ref, in other words, * the vector to get from the origin of @sec to the origin of @ref, in other * words, @dx will generally be a negative number. * * @mblend limits the maximum width of the * blend area. A value of "-1" means "unlimited". The two images are blended * with a raised cosine. * * Pixels with all bands equal to zero are "transparent", that * is, zero pixels in the overlap area do not contribute to the merge. * This makes it possible to join non-rectangular images. * * See also: vips_mosaic(), vips_insert(). * * Returns: 0 on success, -1 on error */ int vips_merge( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int dx, int dy, ... ) { va_list ap; int result; va_start( ap, dy ); result = vips_call_split( "merge", ap, ref, sec, out, direction, dx, dy ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/mosaicing/mosaic.c000066400000000000000000000227651361153320700202560ustar00rootroot00000000000000/* mosaic two images left/right or up/down * * 22/5/14 * - from vips_mosaic() * 4/9/18 * - add docs for transform output */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* This is a simple wrapper over the old vips7 functions. At some point we * should rewrite this as a pure vips8 class and redo the vips7 functions as * wrappers over this. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pmosaicing.h" typedef struct { VipsOperation parent_instance; VipsImage *ref; VipsImage *sec; VipsImage *out; VipsDirection direction; int xref; int yref; int xsec; int ysec; int mblend; int bandno; int hwindow; int harea; int dx0; int dy0; double scale1; double angle1; double dx1; double dy1; } VipsMosaic; typedef VipsOperationClass VipsMosaicClass; G_DEFINE_TYPE( VipsMosaic, vips_mosaic, VIPS_TYPE_OPERATION ); static int vips_mosaic_build( VipsObject *object ) { VipsMosaic *mosaic = (VipsMosaic *) object; VipsImage *x; int dx0; int dy0; double scale1; double angle1; double dx1; double dy1; g_object_set( mosaic, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_mosaic_parent_class )->build( object ) ) return( -1 ); /* A placeholder used to ensure that memory used by the analysis * phase is freed as soon as possible. */ x = vips_image_new(); switch( mosaic->direction ) { case VIPS_DIRECTION_HORIZONTAL: if( im__find_lroverlap( mosaic->ref, mosaic->sec, x, mosaic->bandno, mosaic->xref, mosaic->yref, mosaic->xsec, mosaic->ysec, mosaic->hwindow, mosaic->harea, &dx0, &dy0, &scale1, &angle1, &dx1, &dy1 ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); break; case VIPS_DIRECTION_VERTICAL: if( im__find_tboverlap( mosaic->ref, mosaic->sec, x, mosaic->bandno, mosaic->xref, mosaic->yref, mosaic->xsec, mosaic->ysec, mosaic->hwindow, mosaic->harea, &dx0, &dy0, &scale1, &angle1, &dx1, &dy1 ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); break; default: g_assert_not_reached(); /* Compiler warnings. */ dx0 = 0; dy0 = 0; scale1 = 1; angle1 = 1; dx1 = 0; dy1 = 0; } g_object_set( mosaic, "dx0", dx0, "dy0", dy0, "scale1", scale1, "angle1", angle1, "dx1", dx1, "dy1", dy1, NULL ); if( vips_merge( mosaic->ref, mosaic->sec, &x, mosaic->direction, mosaic->dx0, mosaic->dy0, "mblend", mosaic->mblend, NULL ) ) return( -1 ); if( vips_image_write( x, mosaic->out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } static void vips_mosaic_class_init( VipsMosaicClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "mosaic"; object_class->description = _( "mosaic two images" ); object_class->build = vips_mosaic_build; VIPS_ARG_IMAGE( class, "ref", 1, _( "Reference" ), _( "Reference image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, ref ) ); VIPS_ARG_IMAGE( class, "sec", 2, _( "Secondary" ), _( "Secondary image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, sec ) ); VIPS_ARG_IMAGE( class, "out", 3, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, out ) ); VIPS_ARG_ENUM( class, "direction", 4, _( "Direction" ), _( "Horizontal or vertcial mosaic" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); VIPS_ARG_INT( class, "xref", 5, _( "xref" ), _( "Position of reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, xref ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "yref", 6, _( "yref" ), _( "Position of reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, yref ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "xsec", 7, _( "xsec" ), _( "Position of secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, xsec ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "ysec", 8, _( "ysec" ), _( "Position of secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, ysec ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "hwindow", 9, _( "hwindow" ), _( "Half window size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic, hwindow ), 0, 1000000000, 5 ); VIPS_ARG_INT( class, "harea", 10, _( "harea" ), _( "Half area size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic, harea ), 0, 1000000000, 15 ); VIPS_ARG_INT( class, "mblend", 11, _( "Max blend" ), _( "Maximum blend size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic, mblend ), 0, 10000, 10 ); VIPS_ARG_INT( class, "bandno", 12, _( "Search band" ), _( "Band to search for features on" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic, bandno ), 0, 10000, 0 ); VIPS_ARG_INT( class, "dx0", 13, _( "Integer offset" ), _( "Detected integer offset" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, dx0 ), -10000000, 10000000, 0 ); VIPS_ARG_INT( class, "dy0", 14, _( "Integer offset" ), _( "Detected integer offset" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, dy0 ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "scale1", 15, _( "Scale" ), _( "Detected scale" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, scale1 ), -10000000.0, 10000000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "angle1", 16, _( "Angle" ), _( "Detected rotation" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, angle1 ), -10000000.0, 10000000.0, 0.0 ); VIPS_ARG_DOUBLE( class, "dx1", 17, _( "First-order displacement" ), _( "Detected first-order displacement" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, dx1 ), -10000000.0, 10000000.0, 0.0 ); VIPS_ARG_DOUBLE( class, "dy1", 17, _( "First-order displacement" ), _( "Detected first-order displacement" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, dy1 ), -10000000.0, 10000000.0, 0.0 ); } static void vips_mosaic_init( VipsMosaic *mosaic ) { mosaic->mblend = 10; mosaic->hwindow = 5; mosaic->harea = 15; mosaic->scale1 = 1.0; } /** * vips_mosaic: * @ref: reference image * @sec: secondary image * @out: (out): output image * @direction: horizontal or vertical join * @xref: position in reference image * @yref: position in reference image * @xsec: position in secondary image * @ysec: position in secondary image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @bandno: %gint, band to search for features * * @hwindow: %gint, half window size * * @harea: %gint, half search size * * @mblend: %gint, maximum blend size * * @dx0: %gint, output, detected displacement * * @dy0: %gint, output, detected displacement * * @scale1: %gdouble, output, detected first order scale * * @angle1: %gdouble, output, detected first order rotation * * @dx1: %gdouble, output, detected first order displacement * * @dy1: %gdouble, output, detected first order displacement * * This operation joins two images left-right (with @ref on the left) or * top-bottom (with @ref above) given an approximate overlap. * * @sec is positioned so that the pixel (@xsec, @ysec) in @sec lies on top of * the pixel (@xref, @yref) in @ref. The overlap area is divided into three * sections, 20 high-contrast points in band @bandno of image @ref are found * in each, and a window of pixels of size @hwindow around each high-contrast * point is searched for in @sec over an area of @harea. * * A linear model is fitted to the 60 tie-points, points a long way from the * fit are discarded, and the model refitted until either too few points * remain or the model reaches good agreement. * * The detected displacement is used with vips_merge() to join the two images * together. * * You can read out the detected transform with @dx0, @dy0, @scale1, @angle1, * @dx1, @dy1. * * See also: vips_merge(), vips_insert(). * * Returns: 0 on success, -1 on error */ int vips_mosaic( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int xref, int yref, int xsec, int ysec, ... ) { va_list ap; int result; va_start( ap, ysec ); result = vips_call_split( "mosaic", ap, ref, sec, out, direction, xref, yref, xsec, ysec ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/mosaicing/mosaic1.c000066400000000000000000000425411361153320700203310ustar00rootroot00000000000000/* 1st order mosaic functions * * 31/7/97 JC * - done! * 12/9/97 JC * - mods so global_balance() can work with 1st order mosaics * 27/12/99 JC * - now uses affine() stuff * - small tidies * 2/2/01 JC * - added tunable max blend width * 23/3/01 JC * - better mosaic1 calcs ... was a bit broken * 14/12/04 * - works for LABQ as well * 25/1/11 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pmosaicing.h" /* #define DEBUG */ /* define this to get old not-really-working joiner. #define OLD */ /* Like im_similarity(), but return the transform we generated. */ static int apply_similarity( VipsTransformation *trn, IMAGE *in, IMAGE *out, double a, double b, double dx, double dy ) { trn->iarea.left = 0; trn->iarea.top = 0; trn->iarea.width = in->Xsize; trn->iarea.height = in->Ysize; trn->a = a; trn->b = -b; trn->c = b; trn->d = a; trn->idx = 0; trn->idy = 0; trn->odx = dx; trn->ody = dy; vips__transform_set_area( trn ); if( vips__transform_calc_inverse( trn ) ) return( -1 ); if( vips__affine( in, out, trn ) ) return( -1 ); return( 0 ); } /* A join function ... either left-right or top-bottom rotscalemerge. */ typedef int (*joinfn)( IMAGE *, IMAGE *, IMAGE *, double, double, double, double, int ); /* similarity+lrmerge. */ int im__lrmerge1( IMAGE *ref, IMAGE *sec, IMAGE *out, double a, double b, double dx, double dy, int mwidth ) { VipsTransformation trn; IMAGE *t1 = im_open_local( out, "im_lrmosaic1:1", "p" ); VipsBuf buf; char text[1024]; /* Scale, rotate and displace sec. */ if( !t1 || apply_similarity( &trn, sec, t1, a, b, dx, dy ) ) return( -1 ); /* And join to ref. */ if( im__lrmerge( ref, t1, out, -trn.oarea.left, -trn.oarea.top, mwidth ) ) return( -1 ); /* Note parameters in history file ... for global balance to pick up * later. */ im__add_mosaic_name( out ); vips_buf_init_static( &buf, text, 1024 ); vips_buf_appendf( &buf, "#LRROTSCALE <%s> <%s> <%s> <", im__get_mosaic_name( ref ), im__get_mosaic_name( sec ), im__get_mosaic_name( out ) ); vips_buf_appendg( &buf, a ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, b ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, dx ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, dy ); vips_buf_appendf( &buf, "> <%d>", mwidth ); if( im_histlin( out, "%s", vips_buf_all( &buf ) ) ) return( -1 ); return( 0 ); } /* similarity+tbmerge. */ int im__tbmerge1( IMAGE *ref, IMAGE *sec, IMAGE *out, double a, double b, double dx, double dy, int mwidth ) { VipsTransformation trn; IMAGE *t1 = im_open_local( out, "im_lrmosaic1:2", "p" ); VipsBuf buf; char text[1024]; /* Scale, rotate and displace sec. */ if( !t1 || apply_similarity( &trn, sec, t1, a, b, dx, dy ) ) return( -1 ); /* And join to ref. */ if( im__tbmerge( ref, t1, out, -trn.oarea.left, -trn.oarea.top, mwidth ) ) return( -1 ); /* Note parameters in history file ... for global balance to pick up * later. */ im__add_mosaic_name( out ); vips_buf_init_static( &buf, text, 1024 ); vips_buf_appendf( &buf, "#TBROTSCALE <%s> <%s> <%s> <", im__get_mosaic_name( ref ), im__get_mosaic_name( sec ), im__get_mosaic_name( out ) ); vips_buf_appendg( &buf, a ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, b ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, dx ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, dy ); vips_buf_appendf( &buf, "> <%d>", mwidth ); if( im_histlin( out, "%s", vips_buf_all( &buf ) ) ) return( -1 ); return( 0 ); } /* Join two images, using a pair of tie-points as parameters. */ static int rotjoin( IMAGE *ref, IMAGE *sec, IMAGE *out, joinfn jfn, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) { double a, b, dx, dy; /* Solve to get scale + rot + disp. */ if( im__coeff( xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, &a, &b, &dx, &dy ) ) return( -1 ); /* Scale, rotate and displace sec. */ if( jfn( ref, sec, out, a, b, dx, dy, mwidth ) ) return( -1 ); return( 0 ); } /* Like rotjoin, but do a search to refine the tie-points. */ static int rotjoin_search( IMAGE *ref, IMAGE *sec, IMAGE *out, joinfn jfn, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) { VipsTransformation trn; double cor1, cor2; double a, b, dx, dy; double xs3, ys3; double xs4, ys4; int xs5, ys5; int xs6, ys6; double xs7, ys7; double xs8, ys8; /* Temps. */ IMAGE *t[3]; if( im_open_local_array( out, t, 3, "rotjoin_search", "p" ) ) return( -1 ); /* Unpack LABQ to LABS for correlation. */ if( ref->Coding == IM_CODING_LABQ ) { if( im_LabQ2LabS( ref, t[0] ) ) return( -1 ); } else t[0] = ref; if( sec->Coding == IM_CODING_LABQ ) { if( im_LabQ2LabS( sec, t[1] ) ) return( -1 ); } else t[1] = sec; /* Solve to get scale + rot + disp. */ if( im__coeff( xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, &a, &b, &dx, &dy ) || apply_similarity( &trn, t[1], t[2], a, b, dx, dy ) ) return( -1 ); /* Map points on sec to rotated image. */ vips__transform_forward_point( &trn, xs1, ys1, &xs3, &ys3 ); vips__transform_forward_point( &trn, xs2, ys2, &xs4, &ys4 ); /* Refine tie-points on rotated image. Remember the clip * vips__transform_set_area() has set, and move the sec tie-points * accordingly. */ if( im_correl( t[0], t[2], xr1, yr1, xs3 - trn.oarea.left, ys3 - trn.oarea.top, halfcorrelation, halfarea, &cor1, &xs5, &ys5 ) ) return( -1 ); if( im_correl( t[0], t[2], xr2, yr2, xs4 - trn.oarea.left, ys4 - trn.oarea.top, halfcorrelation, halfarea, &cor2, &xs6, &ys6 ) ) return( -1 ); #ifdef DEBUG printf( "rotjoin_search: nudged pair 1 from %d, %d to %d, %d\n", xs3 - trn.oarea.left, ys3 - trn.oarea.top, xs5, ys5 ); printf( "rotjoin_search: nudged pair 2 from %d, %d to %d, %d\n", xs4 - trn.oarea.left, ys4 - trn.oarea.top, xs6, ys6 ); #endif /*DEBUG*/ /* Put the sec tie-points back into output space. */ xs5 += trn.oarea.left; ys5 += trn.oarea.top; xs6 += trn.oarea.left; ys6 += trn.oarea.top; /* ... and now back to input space again. */ vips__transform_invert_point( &trn, xs5, ys5, &xs7, &ys7 ); vips__transform_invert_point( &trn, xs6, ys6, &xs8, &ys8 ); /* Recalc the transform using the refined points. */ if( im__coeff( xr1, yr1, xs7, ys7, xr2, yr2, xs8, ys8, &a, &b, &dx, &dy ) ) return( -1 ); /* Scale and rotate final. */ if( jfn( ref, sec, out, a, b, dx, dy, mwidth ) ) return( -1 ); return( 0 ); } #ifdef OLD /* 1st order mosaic using im__find_lroverlap() ... does not work too well :( * Look at im__find_lroverlap() for problem? */ static int old_lrmosaic1( IMAGE *ref, IMAGE *sec, IMAGE *out, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) { VipsTransformation trn1, trn2; int dx0, dy0; double a, b, dx, dy; double a1, b1, dx1, dy1; double af, bf, dxf, dyf; int xpos, ypos; int xpos1, ypos1; /* Temps. */ IMAGE *t1 = im_open_local( out, "im_lrmosaic1:1", "p" ); IMAGE *t2 = im_open_local( out, "im_lrmosaic1:2", "p" ); IMAGE *dummy; if( !t1 || !t2 ) return( -1 ); /* Solve to get scale + rot + disp. */ if( im__coeff( xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, &a, &b, &dx, &dy ) || apply_similarity( &trn1, sec, t1, a, b, dx, dy ) ) return( -1 ); /* Correct tie-points. dummy is just a placeholder used to ensure that * memory used by the analysis phase is freed as soon as possible. */ if( !(dummy = im_open( "placeholder:1", "p" )) ) return( -1 ); if( im__find_lroverlap( ref, t1, dummy, bandno, -trn1.area.left, -trn1.area.top, 0, 0, halfcorrelation, halfarea, &dx0, &dy0, &a1, &b1, &dx1, &dy1 ) ) { im_close( dummy ); return( -1 ); } im_close( dummy ); /* Now combine the two transformations to get a corrected transform. */ af = a1 * a - b1 * b; bf = a1 * b + b1 * a; dxf = a1 * dx - b1 * dy + dx1; dyf = b1 * dx + a1 * dy + dy1; printf( "transform was: a = %g, b = %g, dx = %g, dy = %g\n", a, b, dx, dy ); printf( "correction: a = %g, b = %g, dx = %g, dy = %g\n", a1, b1, dx1, dy1 ); printf( "final: a = %g, b = %g, dx = %g, dy = %g\n", af, bf, dxf, dyf ); /* Scale and rotate final. */ if( apply_similarity( &trn2, sec, t2, af, bf, dxf, dyf ) ) return( -1 ); printf( "disp: trn1 left = %d, top = %d\n", trn1.area.left, trn1.area.top ); printf( "disp: trn2 left = %d, top = %d\n", trn2.area.left, trn2.area.top ); /* And join to ref. */ if( im_lrmerge( ref, t2, out, -trn2.area.left, -trn2.area.top, mwidth ) ) return( -1 ); return( 0 ); } #endif /*OLD*/ typedef struct { VipsOperation parent_instance; VipsImage *ref; VipsImage *sec; VipsImage *out; VipsDirection direction; int xr1; int yr1; int xs1; int ys1; int xr2; int yr2; int xs2; int ys2; int hwindow; int harea; gboolean search; VipsInterpolate *interpolate; int mblend; int bandno; } VipsMosaic1; typedef VipsOperationClass VipsMosaic1Class; G_DEFINE_TYPE( VipsMosaic1, vips_mosaic1, VIPS_TYPE_OPERATION ); static int vips_mosaic1_build( VipsObject *object ) { VipsMosaic1 *mosaic1 = (VipsMosaic1 *) object; joinfn jfn; g_object_set( mosaic1, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_mosaic1_parent_class )->build( object ) ) return( -1 ); if( !mosaic1->interpolate ) mosaic1->interpolate = vips_interpolate_new( "bilinear" ); jfn = mosaic1->direction == VIPS_DIRECTION_HORIZONTAL ? im__lrmerge1 : im__tbmerge1; if( mosaic1->search ) { if( rotjoin_search( mosaic1->ref, mosaic1->sec, mosaic1->out, jfn, mosaic1->bandno, mosaic1->xr1, mosaic1->yr1, mosaic1->xs1, mosaic1->ys1, mosaic1->xr2, mosaic1->yr2, mosaic1->xs2, mosaic1->ys2, mosaic1->hwindow, mosaic1->harea, 0, mosaic1->mblend ) ) return( -1 ); } else { if( rotjoin( mosaic1->ref, mosaic1->sec, mosaic1->out, jfn, mosaic1->xr1, mosaic1->yr1, mosaic1->xs1, mosaic1->ys1, mosaic1->xr2, mosaic1->yr2, mosaic1->xs2, mosaic1->ys2, mosaic1->mblend ) ) return( -1 ); } return( 0 ); } static void vips_mosaic1_class_init( VipsMosaic1Class *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "mosaic1"; object_class->description = _( "first-order mosaic of two images" ); object_class->build = vips_mosaic1_build; VIPS_ARG_IMAGE( class, "ref", 1, _( "Reference" ), _( "Reference image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, ref ) ); VIPS_ARG_IMAGE( class, "sec", 2, _( "Secondary" ), _( "Secondary image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, sec ) ); VIPS_ARG_IMAGE( class, "out", 3, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMosaic1, out ) ); VIPS_ARG_ENUM( class, "direction", 4, _( "Direction" ), _( "Horizontal or vertcial mosaic" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); VIPS_ARG_INT( class, "xr1", 5, _( "xr1" ), _( "Position of first reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, xr1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "yr1", 6, _( "yr1" ), _( "Position of first reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, yr1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xs1", 7, _( "xs1" ), _( "Position of first secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, xs1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "ys1", 8, _( "ys1" ), _( "Position of first secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, ys1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xr2", 9, _( "xr2" ), _( "Position of second reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, xr2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "yr2", 10, _( "yr2" ), _( "Position of second reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, yr2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xs2", 11, _( "xs2" ), _( "Position of second secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, xs2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "ys2", 12, _( "ys2" ), _( "Position of second secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, ys2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "hwindow", 13, _( "hwindow" ), _( "Half window size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, hwindow ), 0, 1000000000, 5 ); VIPS_ARG_INT( class, "harea", 14, _( "harea" ), _( "Half area size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, harea ), 0, 1000000000, 15 ); VIPS_ARG_BOOL( class, "search", 15, _( "search" ), _( "Search to improve tie-points" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, search ), FALSE ); VIPS_ARG_INTERPOLATE( class, "interpolate", 16, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, interpolate ) ); VIPS_ARG_INT( class, "mblend", 17, _( "Max blend" ), _( "Maximum blend size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, mblend ), 0, 10000, 10 ); VIPS_ARG_INT( class, "bandno", 18, _( "Search band" ), _( "Band to search for features on" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, bandno ), 0, 10000, 0 ); } static void vips_mosaic1_init( VipsMosaic1 *mosaic1 ) { mosaic1->hwindow = 5; mosaic1->harea = 15; mosaic1->mblend = 10; } /** * vips_mosaic1: * @ref: reference image * @sec: secondary image * @out: output image * @direction: horizontal or vertical join * @xr1: first reference tie-point * @yr1: first reference tie-point * @xs1: first secondary tie-point * @ys1: first secondary tie-point * @xr2: second reference tie-point * @yr2: second reference tie-point * @xs2: second secondary tie-point * @ys2: second secondary tie-point * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @search: search to improve tie-points * * @hwindow: half window size * * @harea: half search size * * @interpolate: interpolate pixels with this * * @mblend: maximum blend size * * @bandno: band to search for features * * This operation joins two images top-bottom (with @sec on the right) * or left-right (with @sec at the bottom) * given an approximate pair of tie-points. @sec is scaled and rotated as * necessary before the join. * * If @search is %TRUE, before performing the transformation, the tie-points * are improved by searching an area of @sec of size @harea for a * object of size @hwindow in @ref. * * @mblend limits the maximum size of the * blend area. A value of "-1" means "unlimited". The two images are blended * with a raised cosine. * * Pixels with all bands equal to zero are "transparent", that * is, zero pixels in the overlap area do not contribute to the merge. * This makes it possible to join non-rectangular images. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * See also: vips_merge(), vips_insert(), vips_globalbalance(). * * Returns: 0 on success, -1 on error */ int vips_mosaic1( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, ... ) { va_list ap; int result; va_start( ap, ys2 ); result = vips_call_split( "mosaic1", ap, ref, sec, out, direction, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2 ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/mosaicing/mosaicing.c000066400000000000000000000063271361153320700207500ustar00rootroot00000000000000/* base class for all mosaicing operations * */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /** * SECTION: mosaicing * @short_description: build image mosaics * @stability: Stable * @include: vips/vips.h * * These functions are useful for joining many small images together to make * one large image. They can cope with unstable contrast and arbitary sub-image * layout, but will not do any geometric correction. Geometric errors should * be removed before using these functions. * * The mosaicing functions can be grouped into layers: * * The lowest level functions are im_correl() and vips_merge(). * im_correl() * searches a large image for a small sub-image, returning * the position of the best sub-image match. vips_merge() * joins two images together * left-right or up-down with a smooth seam. * * Next, vips_mosaic() use the * search function plus the two low-level merge operations to join two images * given just an approximate overlap as a start point. * * The functions im_lrmosaic1() and im_tbmosaic1() are * first-order * analogues of the basic mosaic functions: they take two approximate * tie-points and use * them to rotate and scale the right-hand or bottom image before starting to * join. * * Finally, vips_globalbalance() can be used to remove contrast differences in * a mosaic * which has been assembled with these functions. It takes the mosaic apart, * measures image contrast differences along the seams, finds a set of * correction factors which will minimise these differences, and reassembles * the mosaic. * im_remosaic() uses the * same * techniques, but will reassemble the image from a different set of source * images. * */ /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_mosaicing_operation_init( void ) { extern int vips_merge_get_type( void ); extern int vips_mosaic_get_type( void ); extern int vips_mosaic1_get_type( void ); extern int vips_match_get_type( void ); extern int vips_globalbalance_get_type( void ); vips_merge_get_type(); vips_mosaic_get_type(); vips_mosaic1_get_type(); vips_match_get_type(); vips_globalbalance_get_type(); } libvips-8.9.1/libvips/mosaicing/pmosaicing.h000066400000000000000000000134121361153320700211260ustar00rootroot00000000000000/* Local definitions used by the mosaicing program * If IM_MAXPOINTS change please ensure that it is still a multiple of * AREAS or else AREAS must change as well. Initial setup is for * IM_MAXPOINTS = 60, AREAS = 3. * * Copyright: 1990, 1991 N. Dessipris * Author: Nicos Dessipris * Written on: 07/11/1989 * Modified on : 29/11/1989 */ /* Copyright (C) 1991-2003 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Number of entries in blend table. As a power of two as well, for >>ing. */ #define BLEND_SHIFT (10) #define BLEND_SIZE (1<20, size<10 * * Re-written on: 20/08/92, J.Ph Laurent * * 21/02/93, JC * - speed-ups * - simplifications * - im_similarity now calculates a window and calls this routine * 6/7/93 JC * - rewritten for partials * - ANSIfied * - now rotates any non-complex type * 3/6/94 JC * - C revised in bug search * 9/6/94 JC * - im_prepare() was preparing too small an area! oops * 22/5/95 JC * - added code to detect all-black output area case - helps lazy ip * 3/7/95 JC * - IM_CODING_LABQ handling moved to here * 31/7/97 JC * - dx/dy sign reversed to be less confusing ... now follows comment at * top ... ax - by + dx etc. * - tiny speed up, replaced the *++ on interpolation with [z] * - im_similarity() moved in here * - args swapped: was whxy, now xywh * - didn't agree with dispatch fns before :( * 3/3/98 JC * - im_demand_hint() added * 20/12/99 JC * - im_affine() made from im_similarity_area() * - transform stuff cleaned up a bit * 14/4/01 JC * - oops, invert_point() had a rounding problem * 23/2/02 JC * - pre-calculate interpolation matricies * - integer interpolation for int8/16 types, double for * int32/float/double * - faster transformation * 15/8/02 JC * - records Xoffset/Yoffset * 14/4/04 * - rounding, clipping and transforming revised, now pixel-perfect (or * better than gimp, anyway) * 22/6/05 * - all revised again, simpler and more reliable now * 30/3/06 * - gah, still an occasional clipping problem * 12/7/06 * - still more tweaking, gah again * 7/10/06 * - set THINSTRIP for no-rotate affines * 20/10/08 * - version with interpolate parameter, from im_affine() * 30/10/08 * - allow complex image types * 4/11/08 * - take an interpolator as a param * - replace im_affine with this, provide an im_affine() compat wrapper * - break transform stuff out to transform.c * - revise clipping / transform stuff, again * - now do corner rather than centre: this way the identity transform * returns the input exactly * 12/8/10 * - revise window_size / window_offset stuff again, see also * interpolate.c * 2/2/11 * - gtk-doc * 14/12/12 * - redone as a class * - added input space translation * 22/1/14 * - auto RAD decode * 1/8/14 * - revise transform ... again * - see new stress test in nip2/test/extras * 7/11/17 * - add "extend" param * - add "background" parameter * - better clipping means we have no jaggies on edges * - premultiply alpha */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsAffine { VipsResample parent_instance; VipsArea *matrix; VipsInterpolate *interpolate; VipsArea *oarea; double odx; double ody; double idx; double idy; VipsTransformation trn; /* How to generate extra edge pixels. */ VipsExtend extend; /* Background colour. */ VipsArrayDouble *background; /* The [double] converted to the input image format. */ VipsPel *ink; } VipsAffine; typedef VipsResampleClass VipsAffineClass; G_DEFINE_TYPE( VipsAffine, vips_affine, VIPS_TYPE_RESAMPLE ); /* We have five (!!) coordinate systems. Working forward through them, these * are: * * 1. The original input image. iarea is defined on this image. * * 2. This is embedded in a larger image to provide borders for the * interpolator. window_offset and window_size control the embedding. * These are the coordinates we pass to VIPS_REGION_ADDR()/ * vips_region_prepare() and the interpolator. * * The borders are sized by the interpolator's window_size property and offset * by the interpolator's window_offset property. For example, * for bilinear (window_size 2, window_offset 0) we add a single line * of extra pixels along the bottom and right (window_size - 1). For * bicubic (window_size 4, window_offset 1) we add a single line top and left * (window_offset), and two lines bottom and right (window_size - 1 - * window_offset). * * 3. We need point (0, 0) in (1) to be at (0, 0) for the transformation. So * shift everything up and left to make the displaced input image. This is the * space that the transformation maps from, and can have negative pixels * (up and left of the image, for interpolation). iarea works here too. * * 4. Output transform space. This is the where the transform maps to. Pixels * can be negative, since a rotated image can go up and left of the origin. * * 5. Output image space. This is the wh of the xywh passed to vips_affine() * below. These are the coordinates we pass to VIPS_REGION_ADDR() for the * output image, and that affinei_gen() is asked for. */ static int vips_affine_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; const VipsAffine *affine = (VipsAffine *) b; const VipsImage *in = (VipsImage *) a; const int window_size = vips_interpolate_get_window_size( affine->interpolate ); const int window_offset = vips_interpolate_get_window_offset( affine->interpolate ); const VipsInterpolateMethod interpolate = vips_interpolate_get_method( affine->interpolate ); /* Area we generate in the output image. */ const VipsRect *r = &or->valid; const int le = r->left; const int ri = VIPS_RECT_RIGHT( r ); const int to = r->top; const int bo = VIPS_RECT_BOTTOM( r ); const VipsRect *iarea = &affine->trn.iarea; const VipsRect *oarea = &affine->trn.oarea; int ps = VIPS_IMAGE_SIZEOF_PEL( in ); int x, y, z; VipsRect image, want, need, clipped; #ifdef DEBUG_VERBOSE printf( "vips_affine_gen: " "generating left=%d, top=%d, width=%d, height=%d\n", r->left, r->top, r->width, r->height ); #endif /*DEBUG_VERBOSE*/ /* We are generating this chunk of the transformed image. This takes * us to space 4. */ want = *r; want.left += oarea->left; want.top += oarea->top; /* Find the area of the input image we need. This takes us to space 3. */ vips__transform_invert_rect( &affine->trn, &want, &need ); /* That does round-to-nearest, because it has to stop rounding errors * growing images unexpectedly. We need round-down, so we must * add half a pixel along the left and top. But we are int :( so add 1 * pixel. * * Add an extra line along the right and bottom as well, for rounding. */ vips_rect_marginadjust( &need, 1 ); /* We need to fetch a larger area for the interpolator. */ need.left -= window_offset; need.top -= window_offset; need.width += window_size - 1; need.height += window_size - 1; /* Now go to space 2, the expanded input image. This is the one we * read pixels from. */ need.left += window_offset; need.top += window_offset; /* Clip against the size of (2). */ image.left = 0; image.top = 0; image.width = in->Xsize; image.height = in->Ysize; vips_rect_intersectrect( &need, &image, &clipped ); #ifdef DEBUG_VERBOSE printf( "vips_affine_gen: " "preparing left=%d, top=%d, width=%d, height=%d\n", clipped.left, clipped.top, clipped.width, clipped.height ); #endif /*DEBUG_VERBOSE*/ if( vips_rect_isempty( &clipped ) ) { vips_region_paint_pel( or, r, affine->ink ); return( 0 ); } if( vips_region_prepare( ir, &clipped ) ) return( -1 ); VIPS_GATE_START( "vips_affine_gen: work" ); /* Resample! x/y loop over pixels in the output image (5). */ for( y = to; y < bo; y++ ) { /* Input clipping rectangle. We offset this so we can clip in * space 2. */ const int ile = iarea->left + window_offset; const int ito = iarea->top + window_offset; const int iri = ile + iarea->width; const int ibo = ito + iarea->height; /* Derivative of matrix. */ const double ddx = affine->trn.ia; const double ddy = affine->trn.ic; /* Continuous cods in transformed space. */ const double ox = le + oarea->left - affine->trn.odx; const double oy = y + oarea->top - affine->trn.ody; /* Continuous cods in input space. */ double ix, iy; VipsPel *q; /* To (3). */ ix = affine->trn.ia * ox + affine->trn.ib * oy; iy = affine->trn.ic * ox + affine->trn.id * oy; /* And the input offset in (3). */ ix -= affine->trn.idx; iy -= affine->trn.idy; /* Finally to 2. */ ix += window_offset; iy += window_offset; q = VIPS_REGION_ADDR( or, le, y ); for( x = le; x < ri; x++ ) { int fx, fy; fx = VIPS_FLOOR( ix ); fy = VIPS_FLOOR( iy ); /* Clip against iarea. */ if( fx >= ile && fx <= iri && fy >= ito && fy <= ibo ) { /* Verify that we can read the whole stencil. * With DEBUG on this will range-check. */ g_assert( VIPS_REGION_ADDR( ir, (int) ix - window_offset, (int) iy - window_offset ) ); g_assert( VIPS_REGION_ADDR( ir, (int) ix - window_offset + window_size - 1, (int) iy - window_offset + window_size - 1 ) ); interpolate( affine->interpolate, q, ir, ix, iy ); } else { /* Out of range: paint the background. */ for( z = 0; z < ps; z++ ) q[z] = affine->ink[z]; } ix += ddx; iy += ddy; q += ps; } } VIPS_GATE_STOP( "vips_affine_gen: work" ); VIPS_COUNT_PIXELS( or, "vips_affine_gen" ); return( 0 ); } static int vips_affine_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsAffine *affine = (VipsAffine *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); VipsImage *in; VipsDemandStyle hint; int window_size; int window_offset; double edge; /* TRUE if we've premultiplied and need to unpremultiply. */ gboolean have_premultiplied; VipsBandFormat unpremultiplied_format; if( VIPS_OBJECT_CLASS( vips_affine_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_known( class->nickname, resample->in ) ) return( -1 ); if( vips_check_vector_length( class->nickname, affine->matrix->n, 4 ) ) return( -1 ); if( vips_object_argument_isset( object, "oarea" ) && vips_check_vector_length( class->nickname, affine->oarea->n, 4 ) ) return( -1 ); /* Can be set explicitly to NULL to mean default setting. */ if( !affine->interpolate ) affine->interpolate = vips_interpolate_new( "bilinear" ); in = resample->in; /* Set up transform. */ window_size = vips_interpolate_get_window_size( affine->interpolate ); window_offset = vips_interpolate_get_window_offset( affine->interpolate ); affine->trn.iarea.left = 0; affine->trn.iarea.top = 0; affine->trn.iarea.width = in->Xsize; affine->trn.iarea.height = in->Ysize; affine->trn.a = ((double *) affine->matrix->data)[0]; affine->trn.b = ((double *) affine->matrix->data)[1]; affine->trn.c = ((double *) affine->matrix->data)[2]; affine->trn.d = ((double *) affine->matrix->data)[3]; affine->trn.idx = 0; affine->trn.idy = 0; affine->trn.odx = 0; affine->trn.ody = 0; if( vips__transform_calc_inverse( &affine->trn ) ) return( -1 ); /* Set the default value for oarea. */ vips__transform_set_area( &affine->trn ); if( vips_object_argument_isset( object, "oarea" ) ) { affine->trn.oarea.left = ((int *) affine->oarea->data)[0]; affine->trn.oarea.top = ((int *) affine->oarea->data)[1]; affine->trn.oarea.width = ((int *) affine->oarea->data)[2]; affine->trn.oarea.height = ((int *) affine->oarea->data)[3]; } if( vips_object_argument_isset( object, "odx" ) ) affine->trn.odx = affine->odx; if( vips_object_argument_isset( object, "ody" ) ) affine->trn.ody = affine->ody; if( vips_object_argument_isset( object, "idx" ) ) affine->trn.idx = affine->idx; if( vips_object_argument_isset( object, "idy" ) ) affine->trn.idy = affine->idy; #ifdef DEBUG printf( "vips_affine_build: copy on identity transform disabled\n" ); #else /*!DEBUG*/ if( vips__transform_isidentity( &affine->trn ) && affine->trn.oarea.left == 0 && affine->trn.oarea.top == 0 && affine->trn.oarea.width == in->Xsize && affine->trn.oarea.height == in->Ysize ) return( vips_image_write( in, resample->out ) ); #endif /*!DEBUG*/ /* Check for coordinate overflow ... we want to be able to hold the * output space inside INT_MAX / TRANSFORM_SCALE. */ edge = (int) (INT_MAX / VIPS_TRANSFORM_SCALE); if( affine->trn.oarea.left < -edge || affine->trn.oarea.top < -edge || VIPS_RECT_RIGHT( &affine->trn.oarea ) > edge || VIPS_RECT_BOTTOM( &affine->trn.oarea ) > edge ) { vips_error( class->nickname, "%s", _( "output coordinates out of range" ) ); return( -1 ); } if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* Add new pixels around the input so we can interpolate at the edges. * * We add the interpolate stencil, plus one extra pixel on all the * edges. This means when we clip in generate (above) we can be sure * we clip outside the real pixels and don't get jaggies on edges. */ if( vips_embed( in, &t[2], window_offset + 1, window_offset + 1, in->Xsize + window_size - 1 + 2, in->Ysize + window_size - 1 + 2, "extend", affine->extend, "background", affine->background, NULL ) ) return( -1 ); in = t[2]; /* We've added a one-pixel border to the input: displace the transform * to compensate. */ affine->trn.idx -= 1; affine->trn.idy -= 1; /* If there's an alpha, we have to premultiply before resampling. See * https://github.com/libvips/libvips/issues/291 */ have_premultiplied = FALSE; if( vips_image_hasalpha( in ) ) { if( vips_premultiply( in, &t[3], NULL ) ) return( -1 ); have_premultiplied = TRUE; /* vips_premultiply() makes a float image. When we * vips_unpremultiply() below, we need to cast back to the * pre-premultiply format. */ unpremultiplied_format = in->BandFmt; in = t[3]; } /* Convert the background to the image's format. */ if( !(affine->ink = vips__vector_to_ink( class->nickname, in, VIPS_AREA( affine->background )->data, NULL, VIPS_AREA( affine->background )->n )) ) return( -1 ); /* Normally SMALLTILE ... except if this is strictly a size * up/down affine. */ if( affine->trn.b == 0.0 && affine->trn.c == 0.0 ) hint = VIPS_DEMAND_STYLE_FATSTRIP; else hint = VIPS_DEMAND_STYLE_SMALLTILE; t[4] = vips_image_new(); if( vips_image_pipelinev( t[4], hint, in, NULL ) ) return( -1 ); t[4]->Xsize = affine->trn.oarea.width; t[4]->Ysize = affine->trn.oarea.height; #ifdef DEBUG printf( "vips_affine_build: transform: " ); vips__transform_print( &affine->trn ); printf( " window_offset = %d, window_size = %d\n", window_offset, window_size ); printf( " input image width = %d, height = %d\n", in->Xsize, in->Ysize ); printf( " output image width = %d, height = %d\n", t[4]->Xsize, t[4]->Ysize ); #endif /*DEBUG*/ /* Generate! */ if( vips_image_generate( t[4], vips_start_one, vips_affine_gen, vips_stop_one, in, affine ) ) return( -1 ); /* Finally: can now set Xoffset/Yoffset. */ t[4]->Xoffset = affine->trn.odx - affine->trn.oarea.left; t[4]->Yoffset = affine->trn.ody - affine->trn.oarea.top; in = t[4]; if( have_premultiplied ) { if( vips_unpremultiply( in, &t[5], NULL ) || vips_cast( t[5], &t[6], unpremultiplied_format, NULL ) ) return( -1 ); in = t[6]; } if( vips_image_write( in, resample->out ) ) return( -1 ); return( 0 ); } static void vips_affine_class_init( VipsAffineClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_affine_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "affine"; vobject_class->description = _( "affine transform of an image" ); vobject_class->build = vips_affine_build; VIPS_ARG_BOXED( class, "matrix", 110, _( "Matrix" ), _( "Transformation matrix" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsAffine, matrix ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_INTERPOLATE( class, "interpolate", 2, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, interpolate ) ); VIPS_ARG_BOXED( class, "oarea", 111, _( "Output rect" ), _( "Area of output to generate" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, oarea ), VIPS_TYPE_ARRAY_INT ); VIPS_ARG_DOUBLE( class, "odx", 112, _( "Output offset" ), _( "Horizontal output displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, odx ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "ody", 113, _( "Output offset" ), _( "Vertical output displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, ody ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "idx", 114, _( "Input offset" ), _( "Horizontal input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, idx ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "idy", 115, _( "Input offset" ), _( "Vertical input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, idy ), -10000000, 10000000, 0 ); VIPS_ARG_ENUM( class, "extend", 117, _( "Extend" ), _( "How to generate the extra pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, extend ), VIPS_TYPE_EXTEND, VIPS_EXTEND_BACKGROUND ); VIPS_ARG_BOXED( class, "background", 116, _( "Background" ), _( "Background value" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, background ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_affine_init( VipsAffine *affine ) { affine->extend = VIPS_EXTEND_BACKGROUND; affine->background = vips_array_double_newv( 1, 0.0 ); } /** * vips_affine: (method) * @in: input image * @out: (out): output image * @a: transformation matrix coefficient * @b: transformation matrix coefficient * @c: transformation matrix coefficient * @d: transformation matrix coefficient * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @interpolate: #VipsInterpolate, interpolate pixels with this * * @oarea: #VipsArrayInt, output rectangle * * @idx: %gdouble, input horizontal offset * * @idy: %gdouble, input vertical offset * * @odx: %gdouble, output horizontal offset * * @ody: %gdouble, output vertical offset * * @extend: #VipsExtend how to generate new pixels * * @background: #VipsArrayDouble colour for new pixels * * This operator performs an affine transform on an image using @interpolate. * * The transform is: * * |[ * X = @a * (x + @idx) + @b * (y + @idy) + @odx * Y = @c * (x + @idx) + @d * (y + @idy) + @doy * * where: * x and y are the coordinates in input image. * X and Y are the coordinates in output image. * (0,0) is the upper left corner. * ]| * * The section of the output space defined by @oarea is written to * @out. @oarea is a four-element int array of left, top, width, height. * By default @oarea is just large enough to cover the whole of the * transformed input image. * * By default, new pixels are filled with @background. This defaults to * zero (black). You can set other extend types with @extend. #VIPS_EXTEND_COPY * is better for image upsizing. * * @interpolate defaults to bilinear. * * @idx, @idy, @odx, @ody default to zero. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_shrink(), vips_resize(), #VipsInterpolate. * * Returns: 0 on success, -1 on error */ int vips_affine( VipsImage *in, VipsImage **out, double a, double b, double c, double d, ... ) { va_list ap; VipsArea *matrix; int result; matrix = VIPS_AREA( vips_array_double_newv( 4, a, b, c, d ) ); va_start( ap, d ); result = vips_call_split( "affine", ap, in, out, matrix ); va_end( ap ); vips_area_unref( matrix ); return( result ); } libvips-8.9.1/libvips/resample/bicubic.cpp000066400000000000000000000416271361153320700206000ustar00rootroot00000000000000/* bicubic (catmull-rom) interpolator * * 12/8/10 * - revise window_size / window_offset stuff again * 7/2/16 * - double intermediate for 32-bit int types */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Bicubic (Catmull-Rom) interpolator derived from Nicolas Robidoux's * original YAFR resampler with permission and thanks. */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "templates.h" #ifdef WITH_DMALLOC #include #endif /*WITH_DMALLOC*/ #define VIPS_TYPE_INTERPOLATE_BICUBIC \ (vips_interpolate_bicubic_get_type()) #define VIPS_INTERPOLATE_BICUBIC( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_BICUBIC, VipsInterpolateBicubic )) #define VIPS_INTERPOLATE_BICUBIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_BICUBIC, VipsInterpolateBicubicClass)) #define VIPS_IS_INTERPOLATE_BICUBIC( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_BICUBIC )) #define VIPS_IS_INTERPOLATE_BICUBIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_BICUBIC )) #define VIPS_INTERPOLATE_BICUBIC_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_BICUBIC, VipsInterpolateBicubicClass )) typedef VipsInterpolate VipsInterpolateBicubic; typedef VipsInterpolateClass VipsInterpolateBicubicClass; /* Precalculated interpolation matrices. int (used for pel * sizes up to short), and double (for all others). We go to * scale + 1 so we can round-to-nearest safely. */ /* We could keep a large set of 2d 4x4 matricies, but this actually * works out slower since for many resizes the thing will no longer * fit in L1. */ static int vips_bicubic_matrixi[VIPS_TRANSFORM_SCALE + 1][4]; static double vips_bicubic_matrixf[VIPS_TRANSFORM_SCALE + 1][4]; /* We need C linkage for this. */ extern "C" { G_DEFINE_TYPE( VipsInterpolateBicubic, vips_interpolate_bicubic, VIPS_TYPE_INTERPOLATE ); } /* Pointers to write to / read from, number of bands, * how many bytes to add to move down a line. */ /* T is the type of pixels we are reading and writing. */ /* Fixed-point version, for 8 and 16-bit types. */ template static void inline bicubic_unsigned_int_tab( void *pout, const VipsPel *pin, const int bands, const int lskip, const int *cx, const int *cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int b1 = bands; const int b2 = b1 + b1; const int b3 = b1 + b2; const int l1 = lskip / sizeof( T ); const int l2 = l1 + l1; const int l3 = l1 + l2; const int l1_plus_b1 = l1 + b1; const int l1_plus_b2 = l1 + b2; const int l1_plus_b3 = l1 + b3; const int l2_plus_b1 = l2 + b1; const int l2_plus_b2 = l2 + b2; const int l2_plus_b3 = l2 + b3; const int l3_plus_b1 = l3 + b1; const int l3_plus_b2 = l3 + b2; const int l3_plus_b3 = l3 + b3; for( int z = 0; z < bands; z++ ) { const T uno_one = in[0]; const T uno_two = in[b1]; const T uno_thr = in[b2]; const T uno_fou = in[b3]; const T dos_one = in[l1]; const T dos_two = in[l1_plus_b1]; const T dos_thr = in[l1_plus_b2]; const T dos_fou = in[l1_plus_b3]; const T tre_one = in[l2]; const T tre_two = in[l2_plus_b1]; const T tre_thr = in[l2_plus_b2]; const T tre_fou = in[l2_plus_b3]; const T qua_one = in[l3]; const T qua_two = in[l3_plus_b1]; const T qua_thr = in[l3_plus_b2]; const T qua_fou = in[l3_plus_b3]; int bicubic = bicubic_unsigned_int( uno_one, uno_two, uno_thr, uno_fou, dos_one, dos_two, dos_thr, dos_fou, tre_one, tre_two, tre_thr, tre_fou, qua_one, qua_two, qua_thr, qua_fou, cx, cy ); bicubic = VIPS_CLIP( 0, bicubic, max_value ); out[z] = bicubic; in += 1; } } template static void inline bicubic_signed_int_tab( void *pout, const VipsPel *pin, const int bands, const int lskip, const int *cx, const int *cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int b1 = bands; const int b2 = b1 + b1; const int b3 = b1 + b2; const int l1 = lskip / sizeof( T ); const int l2 = l1 + l1; const int l3 = l1 + l2; const int l1_plus_b1 = l1 + b1; const int l1_plus_b2 = l1 + b2; const int l1_plus_b3 = l1 + b3; const int l2_plus_b1 = l2 + b1; const int l2_plus_b2 = l2 + b2; const int l2_plus_b3 = l2 + b3; const int l3_plus_b1 = l3 + b1; const int l3_plus_b2 = l3 + b2; const int l3_plus_b3 = l3 + b3; for( int z = 0; z < bands; z++ ) { const T uno_one = in[0]; const T uno_two = in[b1]; const T uno_thr = in[b2]; const T uno_fou = in[b3]; const T dos_one = in[l1]; const T dos_two = in[l1_plus_b1]; const T dos_thr = in[l1_plus_b2]; const T dos_fou = in[l1_plus_b3]; const T tre_one = in[l2]; const T tre_two = in[l2_plus_b1]; const T tre_thr = in[l2_plus_b2]; const T tre_fou = in[l2_plus_b3]; const T qua_one = in[l3]; const T qua_two = in[l3_plus_b1]; const T qua_thr = in[l3_plus_b2]; const T qua_fou = in[l3_plus_b3]; int bicubic = bicubic_signed_int( uno_one, uno_two, uno_thr, uno_fou, dos_one, dos_two, dos_thr, dos_fou, tre_one, tre_two, tre_thr, tre_fou, qua_one, qua_two, qua_thr, qua_fou, cx, cy ); bicubic = VIPS_CLIP( min_value, bicubic, max_value ); out[z] = bicubic; in += 1; } } /* Floating-point version. */ template static void inline bicubic_float_tab( void *pout, const VipsPel *pin, const int bands, const int lskip, const double *cx, const double *cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int b1 = bands; const int b2 = b1 + b1; const int b3 = b1 + b2; const int l1 = lskip / sizeof( T ); const int l2 = l1 + l1; const int l3 = l1 + l2; const int l1_plus_b1 = l1 + b1; const int l1_plus_b2 = l1 + b2; const int l1_plus_b3 = l1 + b3; const int l2_plus_b1 = l2 + b1; const int l2_plus_b2 = l2 + b2; const int l2_plus_b3 = l2 + b3; const int l3_plus_b1 = l3 + b1; const int l3_plus_b2 = l3 + b2; const int l3_plus_b3 = l3 + b3; for( int z = 0; z < bands; z++ ) { const T uno_one = in[0]; const T uno_two = in[b1]; const T uno_thr = in[b2]; const T uno_fou = in[b3]; const T dos_one = in[l1]; const T dos_two = in[l1_plus_b1]; const T dos_thr = in[l1_plus_b2]; const T dos_fou = in[l1_plus_b3]; const T tre_one = in[l2]; const T tre_two = in[l2_plus_b1]; const T tre_thr = in[l2_plus_b2]; const T tre_fou = in[l2_plus_b3]; const T qua_one = in[l3]; const T qua_two = in[l3_plus_b1]; const T qua_thr = in[l3_plus_b2]; const T qua_fou = in[l3_plus_b3]; const T bicubic = bicubic_float( uno_one, uno_two, uno_thr, uno_fou, dos_one, dos_two, dos_thr, dos_fou, tre_one, tre_two, tre_thr, tre_fou, qua_one, qua_two, qua_thr, qua_fou, cx, cy ); out[z] = bicubic; in += 1; } } /* uint32 version needs a double intermediate. */ template static void inline bicubic_unsigned_int32_tab( void *pout, const VipsPel *pin, const int bands, const int lskip, const double *cx, const double *cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int b1 = bands; const int b2 = b1 + b1; const int b3 = b1 + b2; const int l1 = lskip / sizeof( T ); const int l2 = l1 + l1; const int l3 = l1 + l2; const int l1_plus_b1 = l1 + b1; const int l1_plus_b2 = l1 + b2; const int l1_plus_b3 = l1 + b3; const int l2_plus_b1 = l2 + b1; const int l2_plus_b2 = l2 + b2; const int l2_plus_b3 = l2 + b3; const int l3_plus_b1 = l3 + b1; const int l3_plus_b2 = l3 + b2; const int l3_plus_b3 = l3 + b3; for( int z = 0; z < bands; z++ ) { const T uno_one = in[0]; const T uno_two = in[b1]; const T uno_thr = in[b2]; const T uno_fou = in[b3]; const T dos_one = in[l1]; const T dos_two = in[l1_plus_b1]; const T dos_thr = in[l1_plus_b2]; const T dos_fou = in[l1_plus_b3]; const T tre_one = in[l2]; const T tre_two = in[l2_plus_b1]; const T tre_thr = in[l2_plus_b2]; const T tre_fou = in[l2_plus_b3]; const T qua_one = in[l3]; const T qua_two = in[l3_plus_b1]; const T qua_thr = in[l3_plus_b2]; const T qua_fou = in[l3_plus_b3]; double bicubic = bicubic_float( uno_one, uno_two, uno_thr, uno_fou, dos_one, dos_two, dos_thr, dos_fou, tre_one, tre_two, tre_thr, tre_fou, qua_one, qua_two, qua_thr, qua_fou, cx, cy ); bicubic = VIPS_CLIP( 0, bicubic, max_value ); out[z] = bicubic; in += 1; } } template static void inline bicubic_signed_int32_tab( void *pout, const VipsPel *pin, const int bands, const int lskip, const double *cx, const double *cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int b1 = bands; const int b2 = b1 + b1; const int b3 = b1 + b2; const int l1 = lskip / sizeof( T ); const int l2 = l1 + l1; const int l3 = l1 + l2; const int l1_plus_b1 = l1 + b1; const int l1_plus_b2 = l1 + b2; const int l1_plus_b3 = l1 + b3; const int l2_plus_b1 = l2 + b1; const int l2_plus_b2 = l2 + b2; const int l2_plus_b3 = l2 + b3; const int l3_plus_b1 = l3 + b1; const int l3_plus_b2 = l3 + b2; const int l3_plus_b3 = l3 + b3; for( int z = 0; z < bands; z++ ) { const T uno_one = in[0]; const T uno_two = in[b1]; const T uno_thr = in[b2]; const T uno_fou = in[b3]; const T dos_one = in[l1]; const T dos_two = in[l1_plus_b1]; const T dos_thr = in[l1_plus_b2]; const T dos_fou = in[l1_plus_b3]; const T tre_one = in[l2]; const T tre_two = in[l2_plus_b1]; const T tre_thr = in[l2_plus_b2]; const T tre_fou = in[l2_plus_b3]; const T qua_one = in[l3]; const T qua_two = in[l3_plus_b1]; const T qua_thr = in[l3_plus_b2]; const T qua_fou = in[l3_plus_b3]; double bicubic = bicubic_float( uno_one, uno_two, uno_thr, uno_fou, dos_one, dos_two, dos_thr, dos_fou, tre_one, tre_two, tre_thr, tre_fou, qua_one, qua_two, qua_thr, qua_fou, cx, cy ); bicubic = VIPS_CLIP( min_value, bicubic, max_value ); out[z] = bicubic; in += 1; } } /* Ultra-high-quality version for double images. */ template static void inline bicubic_notab( void *pout, const VipsPel *pin, const int bands, const int lskip, double x, double y ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int b1 = bands; const int b2 = b1 + b1; const int b3 = b1 + b2; const int l1 = lskip / sizeof( T ); const int l2 = l1 + l1; const int l3 = l1 + l2; const int l1_plus_b1 = l1 + b1; const int l1_plus_b2 = l1 + b2; const int l1_plus_b3 = l1 + b3; const int l2_plus_b1 = l2 + b1; const int l2_plus_b2 = l2 + b2; const int l2_plus_b3 = l2 + b3; const int l3_plus_b1 = l3 + b1; const int l3_plus_b2 = l3 + b2; const int l3_plus_b3 = l3 + b3; double cx[4]; double cy[4]; calculate_coefficients_catmull( cx, x ); calculate_coefficients_catmull( cy, y ); for( int z = 0; z < bands; z++ ) { const T uno_one = in[0]; const T uno_two = in[b1]; const T uno_thr = in[b2]; const T uno_fou = in[b3]; const T dos_one = in[l1]; const T dos_two = in[l1_plus_b1]; const T dos_thr = in[l1_plus_b2]; const T dos_fou = in[l1_plus_b3]; const T tre_one = in[l2]; const T tre_two = in[l2_plus_b1]; const T tre_thr = in[l2_plus_b2]; const T tre_fou = in[l2_plus_b3]; const T qua_one = in[l3]; const T qua_two = in[l3_plus_b1]; const T qua_thr = in[l3_plus_b2]; const T qua_fou = in[l3_plus_b3]; const T bicubic = bicubic_float( uno_one, uno_two, uno_thr, uno_fou, dos_one, dos_two, dos_thr, dos_fou, tre_one, tre_two, tre_thr, tre_fou, qua_one, qua_two, qua_thr, qua_fou, cx, cy ); out[z] = bicubic; in += 1; } } static void vips_interpolate_bicubic_interpolate( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ) { /* Find the mask index. We round-to-nearest, so we need to generate * indexes in 0 to VIPS_TRANSFORM_SCALE, 2^n + 1 values. We multiply * by 2 more than we need to, add one, mask, then shift down again to * get the extra range. */ const int sx = x * VIPS_TRANSFORM_SCALE * 2; const int sy = y * VIPS_TRANSFORM_SCALE * 2; const int six = sx & (VIPS_TRANSFORM_SCALE * 2 - 1); const int siy = sy & (VIPS_TRANSFORM_SCALE * 2 - 1); const int tx = (six + 1) >> 1; const int ty = (siy + 1) >> 1; /* We know x/y are always positive, so we can just (int) them. */ const int ix = (int) x; const int iy = (int) y; /* Back and up one to get the top-left of the 4x4. */ const VipsPel *p = VIPS_REGION_ADDR( in, ix - 1, iy - 1 ); /* Look up the tables we need. */ const int *cxi = vips_bicubic_matrixi[tx]; const int *cyi = vips_bicubic_matrixi[ty]; const double *cxf = vips_bicubic_matrixf[tx]; const double *cyf = vips_bicubic_matrixf[ty]; /* Pel size and line size. */ const int bands = in->im->Bands; const int lskip = VIPS_REGION_LSKIP( in ); /* Confirm that absolute_x and absolute_y are >= 1, because of * window_offset. */ g_assert( x >= 1.0 ); g_assert( y >= 1.0 ); g_assert( ix - 1 >= in->valid.left ); g_assert( iy - 1 >= in->valid.top ); g_assert( ix + 2 < VIPS_RECT_RIGHT( &in->valid ) ); g_assert( iy + 2 < VIPS_RECT_BOTTOM( &in->valid ) ); #ifdef DEBUG printf( "vips_interpolate_bicubic_interpolate: %g %g\n", x, y ); printf( "\tleft=%d, top=%d, width=%d, height=%d\n", ix - 1, iy - 1, 4, 4 ); printf( "\tmaskx=%d, masky=%d\n", tx, ty ); #endif /*DEBUG*/ switch( in->im->BandFmt ) { case VIPS_FORMAT_UCHAR: bicubic_unsigned_int_tab( out, p, bands, lskip, cxi, cyi ); /* Handy for benchmarking bicubic_float_tab( out, p, bands, lskip, cxf, cyf ); bicubic_notab( out, p, bands, lskip, x - ix, y - iy ); */ break; case VIPS_FORMAT_CHAR: bicubic_signed_int_tab( out, p, bands, lskip, cxi, cyi ); break; case VIPS_FORMAT_USHORT: bicubic_unsigned_int32_tab( out, p, bands, lskip, cxf, cyf ); break; case VIPS_FORMAT_SHORT: bicubic_signed_int32_tab( out, p, bands, lskip, cxf, cyf ); break; case VIPS_FORMAT_UINT: bicubic_unsigned_int32_tab( out, p, bands, lskip, cxf, cyf ); break; case VIPS_FORMAT_INT: bicubic_signed_int32_tab( out, p, bands, lskip, cxf, cyf ); break; case VIPS_FORMAT_FLOAT: bicubic_float_tab( out, p, bands, lskip, cxf, cyf ); break; case VIPS_FORMAT_DOUBLE: bicubic_notab( out, p, bands, lskip, x - ix, y - iy ); break; case VIPS_FORMAT_COMPLEX: bicubic_float_tab( out, p, bands * 2, lskip, cxf, cyf ); break; case VIPS_FORMAT_DPCOMPLEX: bicubic_notab( out, p, bands * 2, lskip, x - ix, y - iy ); break; default: break; } } static void vips_interpolate_bicubic_class_init( VipsInterpolateBicubicClass *iclass ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( iclass ); VipsInterpolateClass *interpolate_class = VIPS_INTERPOLATE_CLASS( iclass ); object_class->nickname = "bicubic"; object_class->description = _( "bicubic interpolation (Catmull-Rom)" ); interpolate_class->interpolate = vips_interpolate_bicubic_interpolate; interpolate_class->window_size = 4; /* Build the tables of pre-computed coefficients. */ for( int x = 0; x < VIPS_TRANSFORM_SCALE + 1; x++ ) { calculate_coefficients_catmull( vips_bicubic_matrixf[x], (float) x / VIPS_TRANSFORM_SCALE ); for( int i = 0; i < 4; i++ ) vips_bicubic_matrixi[x][i] = vips_bicubic_matrixf[x][i] * VIPS_INTERPOLATE_SCALE; } } static void vips_interpolate_bicubic_init( VipsInterpolateBicubic *bicubic ) { #ifdef DEBUG printf( "vips_interpolate_bicubic_init: " ); vips_object_print_dump( VIPS_OBJECT( bicubic ) ); #endif /*DEBUG*/ } libvips-8.9.1/libvips/resample/dummy2.cc000066400000000000000000000002551361153320700202100ustar00rootroot00000000000000/* mac os x libtool needs to link libraries containing c++ (eg. cimg) with * g++ ... force this with a dummy c++ file at the top level */ const int im__dummy_value = 42; libvips-8.9.1/libvips/resample/interpolate.c000066400000000000000000000431721361153320700211630ustar00rootroot00000000000000/* vipsinterpolate ... abstract base class for various interpolators * * J. Cupitt, 15/10/08 * * 12/8/10 * - revise window_size / window_offset stuff again: window_offset now * defaults to (window_size / 2 - 1), so for a 4x4 stencil (eg. * bicubic) we have an offset of 1 * - tiny speedups * 7/1/11 * - don't use tables for bilinear on float data for a small speedup * (thanks Nicolas Robidoux) * 12/1/11 * - faster, more accuarate uchar bilinear (thanks Nicolas) * 2/2/11 * - gtk-doc * 16/12/15 * - faster bilinear * 27/2/19 s-sajid-ali * - more accurate bilinear */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /** * SECTION: interpolate * @short_description: various interpolators: nearest, bilinear, and * some non-linear * @stability: Stable * @include: vips/vips.h * * A number of image interpolators. */ G_DEFINE_ABSTRACT_TYPE( VipsInterpolate, vips_interpolate, VIPS_TYPE_OBJECT ); /** * VipsInterpolateMethod: * @interpolate: the interpolator * @out: write the interpolated pixel here * @in: read source pixels from here * @x: interpolate value at this position * @y: interpolate value at this position * * An interpolation function. It should read source pixels from @in with * VIPS_REGION_ADDR(), it can look left and up from (x, y) by @window_offset * pixels and it can access pixels in a window of size @window_size. * * The interpolated value should be written to the pixel pointed to by @out. * * See also: #VipsInterpolateClass. */ /** * VipsInterpolateClass: * @interpolate: the interpolation method * @get_window_size: return the size of the window needed by this method * @window_size: or just set this for a constant window size * @get_window_offset: return the window offset for this method * @window_offset: or just set this for a constant window offset * * The abstract base class for the various VIPS interpolation functions. * Use "vips --list classes" to see all the interpolators available. * * An interpolator consists of a function to perform the interpolation, plus * some extra data fields which tell vips how to call the function and what * data it needs. * * @window_size is the size of the window that the interpolator needs. For * example, a bicubic interpolator needs to see a window of 4x4 pixels to be * able to interpolate a value. * * You can either have a function in @get_window_size which returns the window * that a specific interpolator needs, or you can leave @get_window_size %NULL * and set a constant value in @window_size. * * @window_offset is how much to offset the window up and left of (x, y). For * example, a bicubic interpolator will want a @window_offset of 1. * * You can either have a function in @get_window_offset which returns the * offset that a specific interpolator needs, or you can leave * @get_window_offset %NULL and set a constant value in @window_offset. * * You also need to set @nickname and @description in #VipsObject. * * See also: #VipsInterpolateMethod, #VipsObject, * vips_interpolate_bilinear_static(). */ #ifdef DEBUG static void vips_interpolate_finalize( GObject *gobject ) { printf( "vips_interpolate_finalize: " ); vips_object_print_name( VIPS_OBJECT( gobject ) ); G_OBJECT_CLASS( vips_interpolate_parent_class )->finalize( gobject ); } #endif /*DEBUG*/ static int vips_interpolate_real_get_window_size( VipsInterpolate *interpolate ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); g_assert( class->window_size != -1 ); return( class->window_size ); } static int vips_interpolate_real_get_window_offset( VipsInterpolate *interpolate ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); /* Default to half window size - 1. For example, bicubic is a 4x4 * stencil and needs an offset of 1. */ if( class->window_offset != -1 ) return( class->window_offset ); else { int window_size = vips_interpolate_get_window_size( interpolate ); /* Don't go -ve, of course, for window_size 1. */ return( VIPS_MAX( 0, window_size / 2 - 1 ) ); } } static void vips_interpolate_class_init( VipsInterpolateClass *class ) { VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); #ifdef DEBUG GObjectClass *gobject_class = G_OBJECT_CLASS( class ); #endif /*DEBUG*/ #ifdef DEBUG gobject_class->finalize = vips_interpolate_finalize; #endif /*DEBUG*/ vobject_class->nickname = "interpolate"; vobject_class->description = _( "VIPS interpolators" ); class->interpolate = NULL; class->get_window_size = vips_interpolate_real_get_window_size; class->get_window_offset = vips_interpolate_real_get_window_offset; class->window_size = -1; class->window_offset = -1; } static void vips_interpolate_init( VipsInterpolate *interpolate ) { #ifdef DEBUG printf( "vips_interpolate_init: " ); vips_object_print_name( VIPS_OBJECT( interpolate ) ); #endif /*DEBUG*/ } /** * vips_interpolate: (skip) * @interpolate: interpolator to use * @out: write result here * @in: read source data from here * @x: interpolate value at this position * @y: interpolate value at this position * * Look up the @interpolate method in the class and call it. Use * vips_interpolate_get_method() to get a direct pointer to the function and * avoid the lookup overhead. * * You need to set @in and @out up correctly. */ void vips_interpolate( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); g_assert( class->interpolate ); class->interpolate( interpolate, out, in, x, y ); } /** * vips_interpolate_get_method: (skip) * @interpolate: interpolator to use * * Look up the @interpolate method in the class and return it. Use this * instead of vips_interpolate() to cache method dispatch. * * Returns: a pointer to the interpolation function */ VipsInterpolateMethod vips_interpolate_get_method( VipsInterpolate *interpolate ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); g_assert( class->interpolate ); return( class->interpolate ); } /** * vips_interpolate_get_window_size: * @interpolate: interpolator to use * * Look up an interpolators desired window size. * * Returns: the interpolators required window size */ int vips_interpolate_get_window_size( VipsInterpolate *interpolate ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); g_assert( class->get_window_size ); return( class->get_window_size( interpolate ) ); } /** * vips_interpolate_get_window_offset: * @interpolate: interpolator to use * * Look up an interpolators desired window offset. * * Returns: the interpolators required window offset */ int vips_interpolate_get_window_offset( VipsInterpolate *interpolate ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); g_assert( class->get_window_offset ); return( class->get_window_offset( interpolate ) ); } /** * VIPS_TRANSFORM_SHIFT: * * Many of the vips interpolators use fixed-point arithmetic for coordinate * calculation. This is how many bits of precision they use. */ /** * VIPS_TRANSFORM_SCALE: * * #VIPS_TRANSFORM_SHIFT as a multiplicative constant. */ /** * VIPS_INTERPOLATE_SHIFT: * * Many of the vips interpolators use fixed-point arithmetic for value * calcualtion. This is how many bits of precision they use. */ /** * VIPS_INTERPOLATE_SCALE: * * #VIPS_INTERPOLATE_SHIFT as a multiplicative constant. */ /* VipsInterpolateNearest class */ #define VIPS_TYPE_INTERPOLATE_NEAREST (vips_interpolate_nearest_get_type()) #define VIPS_INTERPOLATE_NEAREST( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_NEAREST, VipsInterpolateNearest )) #define VIPS_INTERPOLATE_NEAREST_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_NEAREST, VipsInterpolateNearestClass)) #define VIPS_IS_INTERPOLATE_NEAREST( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_NEAREST )) #define VIPS_IS_INTERPOLATE_NEAREST_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_NEAREST )) #define VIPS_INTERPOLATE_NEAREST_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_NEAREST, VipsInterpolateNearestClass )) /* No new members. */ typedef VipsInterpolate VipsInterpolateNearest; typedef VipsInterpolateClass VipsInterpolateNearestClass; G_DEFINE_TYPE( VipsInterpolateNearest, vips_interpolate_nearest, VIPS_TYPE_INTERPOLATE ); static void vips_interpolate_nearest_interpolate( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ) { const int ps = VIPS_IMAGE_SIZEOF_PEL( in->im ); const int xi = (int) x; const int yi = (int) y; const VipsPel * restrict p = VIPS_REGION_ADDR( in, xi, yi ); VipsPel * restrict q = (VipsPel *) out; int z; for( z = 0; z < ps; z++ ) q[z] = p[z]; } static void vips_interpolate_nearest_class_init( VipsInterpolateNearestClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsInterpolateClass *interpolate_class = VIPS_INTERPOLATE_CLASS( class ); object_class->nickname = "nearest"; object_class->description = _( "nearest-neighbour interpolation" ); interpolate_class->interpolate = vips_interpolate_nearest_interpolate; interpolate_class->window_size = 1; } static void vips_interpolate_nearest_init( VipsInterpolateNearest *nearest ) { #ifdef DEBUG printf( "vips_interpolate_nearest_init: " ); vips_object_print_name( VIPS_OBJECT( nearest ) ); #endif /*DEBUG*/ } VipsInterpolate * vips_interpolate_nearest_new( void ) { return( VIPS_INTERPOLATE( vips_object_new( VIPS_TYPE_INTERPOLATE_NEAREST, NULL, NULL, NULL ) ) ); } /** * vips_interpolate_nearest_static: * * A convenience function that returns a nearest-neighbour interpolator you * don't need to free. * * Returns: (transfer none): a nearest-neighbour interpolator */ VipsInterpolate * vips_interpolate_nearest_static( void ) { static VipsInterpolate *interpolate = NULL; if( !interpolate ) { interpolate = vips_interpolate_nearest_new(); vips_object_set_static( VIPS_OBJECT( interpolate ), TRUE ); } return( interpolate ); } /* VipsInterpolateBilinear class */ #define VIPS_TYPE_INTERPOLATE_BILINEAR (vips_interpolate_bilinear_get_type()) #define VIPS_INTERPOLATE_BILINEAR( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_BILINEAR, VipsInterpolateBilinear )) #define VIPS_INTERPOLATE_BILINEAR_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_BILINEAR, VipsInterpolateBilinearClass)) #define VIPS_IS_INTERPOLATE_BILINEAR( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_BILINEAR )) #define VIPS_IS_INTERPOLATE_BILINEAR_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_BILINEAR )) #define VIPS_INTERPOLATE_BILINEAR_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_BILINEAR, VipsInterpolateBilinearClass )) typedef VipsInterpolate VipsInterpolateBilinear; typedef VipsInterpolateClass VipsInterpolateBilinearClass; G_DEFINE_TYPE( VipsInterpolateBilinear, vips_interpolate_bilinear, VIPS_TYPE_INTERPOLATE ); /* in this class, name vars in the 2x2 grid as eg. * p1 p2 * p3 p4 */ #define BILINEAR_INT_INNER { \ tq[z] = (c1 * tp1[z] + c2 * tp2[z] + \ c3 * tp3[z] + c4 * tp4[z] + \ (1 << VIPS_INTERPOLATE_SHIFT) / 2) >> VIPS_INTERPOLATE_SHIFT; \ z += 1; \ } /* Fixed-point arithmetic, no tables. */ #define BILINEAR_INT( TYPE ) { \ TYPE * restrict tq = (TYPE *) out; \ \ int X = (x - ix) * VIPS_INTERPOLATE_SCALE; \ int Y = (y - iy) * VIPS_INTERPOLATE_SCALE; \ \ int Yd = VIPS_INTERPOLATE_SCALE - Y; \ \ int c4 = (Y * X) >> VIPS_INTERPOLATE_SHIFT; \ int c2 = (Yd * X) >> VIPS_INTERPOLATE_SHIFT; \ int c3 = Y - c4; \ int c1 = Yd - c2; \ \ const TYPE * restrict tp1 = (TYPE *) p1; \ const TYPE * restrict tp2 = (TYPE *) p2; \ const TYPE * restrict tp3 = (TYPE *) p3; \ const TYPE * restrict tp4 = (TYPE *) p4; \ \ z = 0; \ VIPS_UNROLL( b, BILINEAR_INT_INNER ); \ } #define BILINEAR_FLOAT_INNER { \ tq[z] = c1 * tp1[z] + c2 * tp2[z] + \ c3 * tp3[z] + c4 * tp4[z]; \ z += 1; \ } /* Interpolate a pel ... int16, int32 and float types, no tables, float * arithmetic. Use double not float for coefficient calculation or we can * get small over/undershoots. */ #define BILINEAR_FLOAT( TYPE ) { \ TYPE * restrict tq = (TYPE *) out; \ \ double X = x - ix; \ double Y = y - iy; \ \ double Yd = 1.0f - Y; \ \ double c4 = Y * X; \ double c2 = Yd * X; \ double c3 = Y - c4; \ double c1 = Yd - c2; \ \ const TYPE * restrict tp1 = (TYPE *) p1; \ const TYPE * restrict tp2 = (TYPE *) p2; \ const TYPE * restrict tp3 = (TYPE *) p3; \ const TYPE * restrict tp4 = (TYPE *) p4; \ \ z = 0; \ VIPS_UNROLL( b, BILINEAR_FLOAT_INNER ); \ } /* The fixed-point path is fine for uchar pixels, but it'll be inaccurate for * shorts and larger. */ #define SWITCH_INTERPOLATE( FMT, INT, FLOAT ) { \ switch( (FMT) ) { \ case VIPS_FORMAT_UCHAR: INT( unsigned char ); break; \ case VIPS_FORMAT_CHAR: INT( char ); break; \ case VIPS_FORMAT_USHORT:INT( unsigned short ); break; \ case VIPS_FORMAT_SHORT: INT( short ); break; \ case VIPS_FORMAT_UINT: FLOAT( unsigned int ); break; \ case VIPS_FORMAT_INT: FLOAT( int ); break; \ case VIPS_FORMAT_FLOAT: FLOAT( float ); break; \ case VIPS_FORMAT_DOUBLE:FLOAT( double ); break; \ case VIPS_FORMAT_COMPLEX: FLOAT( float ); break; \ case VIPS_FORMAT_DPCOMPLEX:FLOAT( double ); break; \ default: \ g_assert( FALSE ); \ } \ } static void vips_interpolate_bilinear_interpolate( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ) { /* Pel size and line size. */ const int ps = VIPS_IMAGE_SIZEOF_PEL( in->im ); const int ls = VIPS_REGION_LSKIP( in ); const int b = in->im->Bands * (vips_band_format_iscomplex( in->im->BandFmt ) ? 2 : 1); const int ix = (int) x; const int iy = (int) y; const VipsPel * restrict p1 = VIPS_REGION_ADDR( in, ix, iy ); const VipsPel * restrict p2 = p1 + ps; const VipsPel * restrict p3 = p1 + ls; const VipsPel * restrict p4 = p3 + ps; int z; g_assert( (int) x >= in->valid.left ); g_assert( (int) y >= in->valid.top ); g_assert( (int) x + 1 < VIPS_RECT_RIGHT( &in->valid ) ); g_assert( (int) y + 1 < VIPS_RECT_BOTTOM( &in->valid ) ); SWITCH_INTERPOLATE( in->im->BandFmt, BILINEAR_INT, BILINEAR_FLOAT ); } static void vips_interpolate_bilinear_class_init( VipsInterpolateBilinearClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsInterpolateClass *interpolate_class = (VipsInterpolateClass *) class; object_class->nickname = "bilinear"; object_class->description = _( "bilinear interpolation" ); interpolate_class->interpolate = vips_interpolate_bilinear_interpolate; interpolate_class->window_size = 2; } static void vips_interpolate_bilinear_init( VipsInterpolateBilinear *bilinear ) { #ifdef DEBUG printf( "vips_interpolate_bilinear_init: " ); vips_object_print_name( VIPS_OBJECT( bilinear ) ); #endif /*DEBUG*/ } VipsInterpolate * vips_interpolate_bilinear_new( void ) { return( VIPS_INTERPOLATE( vips_object_new( VIPS_TYPE_INTERPOLATE_BILINEAR, NULL, NULL, NULL ) ) ); } /** * vips_interpolate_bilinear_static: * * A convenience function that returns a bilinear interpolator you * don't need to free. * * Returns: (transfer none): a bilinear interpolator */ VipsInterpolate * vips_interpolate_bilinear_static( void ) { static VipsInterpolate *interpolate = NULL; if( !interpolate ) { interpolate = vips_interpolate_bilinear_new(); vips_object_set_static( VIPS_OBJECT( interpolate ), TRUE ); } return( interpolate ); } /* Called on startup: register the base vips interpolators. */ void vips__interpolate_init( void ) { extern GType vips_interpolate_bicubic_get_type( void ); extern GType vips_interpolate_lbb_get_type( void ); extern GType vips_interpolate_nohalo_get_type( void ); extern GType vips_interpolate_vsqbs_get_type( void ); vips_interpolate_nearest_get_type(); vips_interpolate_bilinear_get_type(); vips_interpolate_bicubic_get_type(); vips_interpolate_lbb_get_type(); vips_interpolate_nohalo_get_type(); vips_interpolate_vsqbs_get_type(); } /** * vips_interpolate_new: (constructor) * @nickname: nickname for interpolator * * Look up an interpolator from a nickname and make one. You need to free the * result with g_object_unref() when you're done with it. * * See also: vips_type_find(). * * Returns: an interpolator, or %NULL on error. */ VipsInterpolate * vips_interpolate_new( const char *nickname ) { GType type; if( !(type = vips_type_find( "VipsInterpolate", nickname )) ) { vips_error( "VipsInterpolate", _( "class \"%s\" not found" ), nickname ); return( NULL ); } return( VIPS_INTERPOLATE( vips_object_new( type, NULL, NULL, NULL ) ) ); } libvips-8.9.1/libvips/resample/lbb.cpp000066400000000000000000001022151361153320700177260ustar00rootroot00000000000000/* lbb (locally bounded bicubic) resampler * * N. Robidoux, C. Racette and J. Cupitt, 23-28/03/2010 * * N. Robidoux, 16-19/05/2010 * * N. Robidoux, 22/11/2011 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* * 2010 (c) Nicolas Robidoux, Chantal Racette, John Cupitt. * * N. Robidoux thanks Adam Turcotte, Geert Jordaens, Ralf Meyer, * Øyvind Kolås, Minglun Gong, Eric Daoust and Sven Neumann for useful * comments and code. * * C. Racette's image resampling research and programming funded in * part by an NSERC (National Science and Engineering Research Council * of Canada) Alexander Graham Bell Canada Graduate Scholarship, by an * NSERC Discovery Grant awarded to Julien Dompierre (grant number * 20-61098) and by N. Robidoux's Laurentian University professional * allowance. */ /* * LBB has two versions: * * A "soft" version, which shows a little less staircasing and a * little more haloing, and which is a little more expensive to * compute. We recommend this as the default. * * A "sharp" version, which shows a little more staircasing and a * little less haloing, which is a little cheaper (it uses 6 less * comparisons and 12 less "? :"). * * The only difference between the two is that the "soft" versions * uses local minima and maxima computed over 3x3 square blocks, and * the "sharp" version uses local minima and maxima computed over 3x3 * crosses. * * If you want to use the "sharp" version, comment out the following * three pre-processor code lines: */ /* #ifndef __LBB_CHEAP_H__ #define __LBB_CHEAP_H__ #endif */ /* * LBB (Locally Bounded Bicubic) is a high quality nonlinear variant * of Catmull-Rom. Images resampled with LBB have much smaller halos * than images resampled with windowed sincs or other interpolatory * cubic spline filters. Specifically, LBB halos are narrower and the * over/undershoot amplitude is smaller. This is accomplished without * significantly affecting the smoothness of the result (compared to * Catmull-Rom). * * Another important property is that the resampled values are * contained within the range of nearby input values. Consequently, no * final clamping is needed to stay "in range" (e.g., 0-255 for * standard 8-bit images). * * LBB was developed by N. Robidoux and C. Racette at the Department * of Mathematics and Computer Science of Laurentian University in the * course of C. Racette's Masters thesis in Computational * Sciences. Preliminary work directly leading to the LBB method and * code was performed by C. Racette and N. Robidoux in the course of * her honours thesis, and by N. Robidoux, A. Turcotte and E. Daoust * during Google Summer of Code 2009 (through two awards made to GIMP * to improve GEGL). * * LBB is a novel method with the following properties: * * --LBB is a Hermite bicubic method: The bicubic surface is defined, * one convex hull of four nearby input points at a time, using four * point values, four x-derivatives, four y-derivatives, and four * cross-derivatives. * * --The stencil for values in a square patch is the usual 4x4. * * --LBB is interpolatory. * * --It is C^1 with continuous cross derivatives. * * --When the limiters are inactive, LBB gives the same result as * Catmull-Rom. * * --When used on binary images, LBB gives results similar to bicubic * Hermite with all first derivatives---but not necessarily the * cross derivatives (this last assertion needs to be double * checked)--at input pixel locations set to zero. * * --The LBB reconstruction is locally bounded: Over each square * patch, the surface is contained between the minimum and the * maximum of the 16 nearest input pixel values. * * --Consequently, the LBB reconstruction is globally bounded between * the very smallest input pixel value and the very largest input * pixel value. It is not necessary to clamp results. * * The LBB method is based on the method of Ken Brodlie, Petros * Mashwama and Sohail Butt for constraining Hermite interpolants * between globally defined planes: * * Visualization of surface data to preserve positivity and other * simple constraints. Computer & Graphics, Vol. 19, Number 4, pages * 585-594, 1995. DOI: 10.1016/0097-8493(95)00036-C. * * Instead of forcing the reconstructed surface to lie between two * GLOBALLY defined planes, LBB constrains one patch at a time to lie * between LOCALLY defined planes. This is accomplished by * constraining the derivatives (x, y and cross) at each input pixel * location so that if the constraint was applied everywhere the * surface would fit between the min and max of the values at the 9 * closest pixel locations. Because this is done with each of the four * pixel locations which define the bicubic patch, this forces the * reconstructed surface to lie between the min and max of the values * at the 16 closest values pixel locations. (Each corner defines its * own 3x3 subgroup of the 4x4 stencil. Consequently, the surface is * necessarily above the minimum of the four minima, which happens to * be the minimum over the 4x4. Similarly with the maxima.) * * The above paragraph described the "soft" version of LBB. The * "sharp" version is similar. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "templates.h" #define VIPS_TYPE_INTERPOLATE_LBB \ (vips_interpolate_lbb_get_type()) #define VIPS_INTERPOLATE_LBB( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_LBB, VipsInterpolateLbb )) #define VIPS_INTERPOLATE_LBB_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_LBB, VipsInterpolateLbbClass)) #define VIPS_IS_INTERPOLATE_LBB( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_LBB )) #define VIPS_IS_INTERPOLATE_LBB_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_LBB )) #define VIPS_INTERPOLATE_LBB_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_LBB, VipsInterpolateLbbClass )) typedef struct _VipsInterpolateLbb { VipsInterpolate parent_object; } VipsInterpolateLbb; typedef struct _VipsInterpolateLbbClass { VipsInterpolateClass parent_class; } VipsInterpolateLbbClass; /* * Absolute value and sign macros: */ #define LBB_ABS(x) ( ((x)>=0.) ? (x) : -(x) ) #define LBB_SIGN(x) ( ((x)>=0.) ? 1.0 : -1.0 ) /* * MIN and MAX macros set up so that I can put the likely winner in * the first argument (forward branch likely blah blah blah): */ #define LBB_MIN(x,y) ( ((x)<=(y)) ? (x) : (y) ) #define LBB_MAX(x,y) ( ((x)>=(y)) ? (x) : (y) ) static inline double lbbicubic( const double c00, const double c10, const double c01, const double c11, const double c00dx, const double c10dx, const double c01dx, const double c11dx, const double c00dy, const double c10dy, const double c01dy, const double c11dy, const double c00dxdy, const double c10dxdy, const double c01dxdy, const double c11dxdy, const double uno_one, const double uno_two, const double uno_thr, const double uno_fou, const double dos_one, const double dos_two, const double dos_thr, const double dos_fou, const double tre_one, const double tre_two, const double tre_thr, const double tre_fou, const double qua_one, const double qua_two, const double qua_thr, const double qua_fou ) { /* * STENCIL (FOOTPRINT) OF INPUT VALUES: * * The stencil of LBB is the same as for any standard Hermite * bicubic (e.g., Catmull-Rom): * * (ix-1,iy-1) (ix,iy-1) (ix+1,iy-1) (ix+2,iy-1) * = uno_one = uno_two = uno_thr = uno_fou * * (ix-1,iy) (ix,iy) (ix+1,iy) (ix+2,iy) * = dos_one = dos_two = dos_thr = dos_fou * X * (ix-1,iy+1) (ix,iy+1) (ix+1,iy+1) (ix+2,iy+1) * = tre_one = tre_two = tre_thr = tre_fou * * (ix-1,iy+2) (ix,iy+2) (ix+1,iy+2) (ix+2,iy+2) * = qua_one = qua_two = qua_thr = qua_fou * * where ix is the (pseudo-)floor of the requested left-to-right * location ("X"), and iy is the floor of the requested up-to-down * location. */ #if defined (__LBB_CHEAP_H__) /* * Computation of the four min and four max over 3x3 input data * sub-crosses of the 4x4 input stencil, performed with only 22 * comparisons and 28 "? :". If you can figure out how to do this * more efficiently, let us know. * * This is the cheaper (but arguably less desirable in terms of * quality) version of the computation. */ const double m1 = (dos_two <= dos_thr) ? dos_two : dos_thr ; const double M1 = (dos_two <= dos_thr) ? dos_thr : dos_two ; const double m2 = (tre_two <= tre_thr) ? tre_two : tre_thr ; const double M2 = (tre_two <= tre_thr) ? tre_thr : tre_two ; const double m3 = (uno_two <= dos_one) ? uno_two : dos_one ; const double M3 = (uno_two <= dos_one) ? dos_one : uno_two ; const double m4 = (uno_thr <= dos_fou) ? uno_thr : dos_fou ; const double M4 = (uno_thr <= dos_fou) ? dos_fou : uno_thr ; const double m5 = (tre_one <= qua_two) ? tre_one : qua_two ; const double M5 = (tre_one <= qua_two) ? qua_two : tre_one ; const double m6 = (tre_fou <= qua_thr) ? tre_fou : qua_thr ; const double M6 = (tre_fou <= qua_thr) ? qua_thr : tre_fou ; const double m7 = LBB_MIN( m1, tre_two ); const double M7 = LBB_MAX( M1, tre_two ); const double m8 = LBB_MIN( m1, tre_thr ); const double M8 = LBB_MAX( M1, tre_thr ); const double m9 = LBB_MIN( m2, dos_two ); const double M9 = LBB_MAX( M2, dos_two ); const double m10 = LBB_MIN( m2, dos_thr ); const double M10 = LBB_MAX( M2, dos_thr ); const double min00 = LBB_MIN( m7, m3 ); const double max00 = LBB_MAX( M7, M3 ); const double min10 = LBB_MIN( m8, m4 ); const double max10 = LBB_MAX( M8, M4 ); const double min01 = LBB_MIN( m9, m5 ); const double max01 = LBB_MAX( M9, M5 ); const double min11 = LBB_MIN( m10, m6 ); const double max11 = LBB_MAX( M10, M6 ); #else /* * Computation of the four min and four max over 3x3 input data * sub-blocks of the 4x4 input stencil, performed with only 28 * comparisons and 34 "? :". If you can figure how to do this more * efficiently, let us know. */ const double m1 = (dos_two <= dos_thr) ? dos_two : dos_thr ; const double M1 = (dos_two <= dos_thr) ? dos_thr : dos_two ; const double m2 = (tre_two <= tre_thr) ? tre_two : tre_thr ; const double M2 = (tre_two <= tre_thr) ? tre_thr : tre_two ; const double m6 = (dos_one <= tre_one) ? dos_one : tre_one ; const double M6 = (dos_one <= tre_one) ? tre_one : dos_one ; const double m7 = (dos_fou <= tre_fou) ? dos_fou : tre_fou ; const double M7 = (dos_fou <= tre_fou) ? tre_fou : dos_fou ; const double m3 = (uno_two <= uno_thr) ? uno_two : uno_thr ; const double M3 = (uno_two <= uno_thr) ? uno_thr : uno_two ; const double m4 = (qua_two <= qua_thr) ? qua_two : qua_thr ; const double M4 = (qua_two <= qua_thr) ? qua_thr : qua_two ; const double m5 = LBB_MIN( m1, m2 ); const double M5 = LBB_MAX( M1, M2 ); const double m10 = LBB_MIN( m6, uno_one ); const double M10 = LBB_MAX( M6, uno_one ); const double m11 = LBB_MIN( m6, qua_one ); const double M11 = LBB_MAX( M6, qua_one ); const double m12 = LBB_MIN( m7, uno_fou ); const double M12 = LBB_MAX( M7, uno_fou ); const double m13 = LBB_MIN( m7, qua_fou ); const double M13 = LBB_MAX( M7, qua_fou ); const double m8 = LBB_MIN( m5, m3 ); const double M8 = LBB_MAX( M5, M3 ); const double m9 = LBB_MIN( m5, m4 ); const double M9 = LBB_MAX( M5, M4 ); const double min00 = LBB_MIN( m8, m10 ); const double max00 = LBB_MAX( M8, M10 ); const double min10 = LBB_MIN( m8, m12 ); const double max10 = LBB_MAX( M8, M12 ); const double min01 = LBB_MIN( m9, m11 ); const double max01 = LBB_MAX( M9, M11 ); const double min11 = LBB_MIN( m9, m13 ); const double max11 = LBB_MAX( M9, M13 ); #endif /* * The remainder of the "per channel" computation involves the * computation of: * * --8 conditional moves, * * --8 signs (in which the sign of zero is unimportant), * * --12 minima of two values, * * --8 maxima of two values, * * --8 absolute values, * * for a grand total of 29 minima, 25 maxima, 8 conditional moves, 8 * signs, and 8 absolute values. If everything is done with * conditional moves, "only" 28+8+8+12+8+8=72 flags are involved * (because initial min and max can be computed with one flag). * * The "per channel" part of the computation also involves 107 * arithmetic operations (54 *, 21 +, 42 -). */ /* * Distances to the local min and max: */ const double u00 = dos_two - min00; const double v00 = max00 - dos_two; const double u10 = dos_thr - min10; const double v10 = max10 - dos_thr; const double u01 = tre_two - min01; const double v01 = max01 - tre_two; const double u11 = tre_thr - min11; const double v11 = max11 - tre_thr; /* * Initial values of the derivatives computed with centered * differences. Factors of 1/2 are left out because they are folded * in later: */ const double dble_dzdx00i = dos_thr - dos_one; const double dble_dzdy11i = qua_thr - dos_thr; const double dble_dzdx10i = dos_fou - dos_two; const double dble_dzdy01i = qua_two - dos_two; const double dble_dzdx01i = tre_thr - tre_one; const double dble_dzdy10i = tre_thr - uno_thr; const double dble_dzdx11i = tre_fou - tre_two; const double dble_dzdy00i = tre_two - uno_two; /* * Signs of the derivatives. The upcoming clamping does not change * them (except if the clamping sends a negative derivative to 0, in * which case the sign does not matter anyway). */ const double sign_dzdx00 = LBB_SIGN( dble_dzdx00i ); const double sign_dzdx10 = LBB_SIGN( dble_dzdx10i ); const double sign_dzdx01 = LBB_SIGN( dble_dzdx01i ); const double sign_dzdx11 = LBB_SIGN( dble_dzdx11i ); const double sign_dzdy00 = LBB_SIGN( dble_dzdy00i ); const double sign_dzdy10 = LBB_SIGN( dble_dzdy10i ); const double sign_dzdy01 = LBB_SIGN( dble_dzdy01i ); const double sign_dzdy11 = LBB_SIGN( dble_dzdy11i ); /* * Initial values of the cross-derivatives. Factors of 1/4 are left * out because folded in later: */ const double quad_d2zdxdy00i = uno_one - uno_thr + dble_dzdx01i; const double quad_d2zdxdy10i = uno_two - uno_fou + dble_dzdx11i; const double quad_d2zdxdy01i = qua_thr - qua_one - dble_dzdx00i; const double quad_d2zdxdy11i = qua_fou - qua_two - dble_dzdx10i; /* * Slope limiters. The key multiplier is 3 but we fold a factor of * 2, hence 6: */ const double dble_slopelimit_00 = 6.0 * LBB_MIN( u00, v00 ); const double dble_slopelimit_10 = 6.0 * LBB_MIN( u10, v10 ); const double dble_slopelimit_01 = 6.0 * LBB_MIN( u01, v01 ); const double dble_slopelimit_11 = 6.0 * LBB_MIN( u11, v11 ); /* * Clamped first derivatives: */ const double dble_dzdx00 = ( sign_dzdx00 * dble_dzdx00i <= dble_slopelimit_00 ) ? dble_dzdx00i : sign_dzdx00 * dble_slopelimit_00; const double dble_dzdy00 = ( sign_dzdy00 * dble_dzdy00i <= dble_slopelimit_00 ) ? dble_dzdy00i : sign_dzdy00 * dble_slopelimit_00; const double dble_dzdx10 = ( sign_dzdx10 * dble_dzdx10i <= dble_slopelimit_10 ) ? dble_dzdx10i : sign_dzdx10 * dble_slopelimit_10; const double dble_dzdy10 = ( sign_dzdy10 * dble_dzdy10i <= dble_slopelimit_10 ) ? dble_dzdy10i : sign_dzdy10 * dble_slopelimit_10; const double dble_dzdx01 = ( sign_dzdx01 * dble_dzdx01i <= dble_slopelimit_01 ) ? dble_dzdx01i : sign_dzdx01 * dble_slopelimit_01; const double dble_dzdy01 = ( sign_dzdy01 * dble_dzdy01i <= dble_slopelimit_01 ) ? dble_dzdy01i : sign_dzdy01 * dble_slopelimit_01; const double dble_dzdx11 = ( sign_dzdx11 * dble_dzdx11i <= dble_slopelimit_11 ) ? dble_dzdx11i : sign_dzdx11 * dble_slopelimit_11; const double dble_dzdy11 = ( sign_dzdy11 * dble_dzdy11i <= dble_slopelimit_11 ) ? dble_dzdy11i : sign_dzdy11 * dble_slopelimit_11; /* * Sums and differences of first derivatives: */ const double twelve_sum00 = 6.0 * ( dble_dzdx00 + dble_dzdy00 ); const double twelve_dif00 = 6.0 * ( dble_dzdx00 - dble_dzdy00 ); const double twelve_sum10 = 6.0 * ( dble_dzdx10 + dble_dzdy10 ); const double twelve_dif10 = 6.0 * ( dble_dzdx10 - dble_dzdy10 ); const double twelve_sum01 = 6.0 * ( dble_dzdx01 + dble_dzdy01 ); const double twelve_dif01 = 6.0 * ( dble_dzdx01 - dble_dzdy01 ); const double twelve_sum11 = 6.0 * ( dble_dzdx11 + dble_dzdy11 ); const double twelve_dif11 = 6.0 * ( dble_dzdx11 - dble_dzdy11 ); /* * Absolute values of the sums: */ const double twelve_abs_sum00 = LBB_ABS( twelve_sum00 ); const double twelve_abs_sum10 = LBB_ABS( twelve_sum10 ); const double twelve_abs_sum01 = LBB_ABS( twelve_sum01 ); const double twelve_abs_sum11 = LBB_ABS( twelve_sum11 ); /* * Scaled distances to the min: */ const double u00_times_36 = 36.0 * u00; const double u10_times_36 = 36.0 * u10; const double u01_times_36 = 36.0 * u01; const double u11_times_36 = 36.0 * u11; /* * First cross-derivative limiter: */ const double first_limit00 = twelve_abs_sum00 - u00_times_36; const double first_limit10 = twelve_abs_sum10 - u10_times_36; const double first_limit01 = twelve_abs_sum01 - u01_times_36; const double first_limit11 = twelve_abs_sum11 - u11_times_36; const double quad_d2zdxdy00ii = LBB_MAX( quad_d2zdxdy00i, first_limit00 ); const double quad_d2zdxdy10ii = LBB_MAX( quad_d2zdxdy10i, first_limit10 ); const double quad_d2zdxdy01ii = LBB_MAX( quad_d2zdxdy01i, first_limit01 ); const double quad_d2zdxdy11ii = LBB_MAX( quad_d2zdxdy11i, first_limit11 ); /* * Scaled distances to the max: */ const double v00_times_36 = 36.0 * v00; const double v10_times_36 = 36.0 * v10; const double v01_times_36 = 36.0 * v01; const double v11_times_36 = 36.0 * v11; /* * Second cross-derivative limiter: */ const double second_limit00 = v00_times_36 - twelve_abs_sum00; const double second_limit10 = v10_times_36 - twelve_abs_sum10; const double second_limit01 = v01_times_36 - twelve_abs_sum01; const double second_limit11 = v11_times_36 - twelve_abs_sum11; const double quad_d2zdxdy00iii = LBB_MIN( quad_d2zdxdy00ii, second_limit00 ); const double quad_d2zdxdy10iii = LBB_MIN( quad_d2zdxdy10ii, second_limit10 ); const double quad_d2zdxdy01iii = LBB_MIN( quad_d2zdxdy01ii, second_limit01 ); const double quad_d2zdxdy11iii = LBB_MIN( quad_d2zdxdy11ii, second_limit11 ); /* * Absolute values of the differences: */ const double twelve_abs_dif00 = LBB_ABS( twelve_dif00 ); const double twelve_abs_dif10 = LBB_ABS( twelve_dif10 ); const double twelve_abs_dif01 = LBB_ABS( twelve_dif01 ); const double twelve_abs_dif11 = LBB_ABS( twelve_dif11 ); /* * Third cross-derivative limiter: */ const double third_limit00 = twelve_abs_dif00 - v00_times_36; const double third_limit10 = twelve_abs_dif10 - v10_times_36; const double third_limit01 = twelve_abs_dif01 - v01_times_36; const double third_limit11 = twelve_abs_dif11 - v11_times_36; const double quad_d2zdxdy00iiii = LBB_MAX( quad_d2zdxdy00iii, third_limit00); const double quad_d2zdxdy10iiii = LBB_MAX( quad_d2zdxdy10iii, third_limit10); const double quad_d2zdxdy01iiii = LBB_MAX( quad_d2zdxdy01iii, third_limit01); const double quad_d2zdxdy11iiii = LBB_MAX( quad_d2zdxdy11iii, third_limit11); /* * Fourth cross-derivative limiter: */ const double fourth_limit00 = u00_times_36 - twelve_abs_dif00; const double fourth_limit10 = u10_times_36 - twelve_abs_dif10; const double fourth_limit01 = u01_times_36 - twelve_abs_dif01; const double fourth_limit11 = u11_times_36 - twelve_abs_dif11; const double quad_d2zdxdy00 = LBB_MIN( quad_d2zdxdy00iiii, fourth_limit00); const double quad_d2zdxdy10 = LBB_MIN( quad_d2zdxdy10iiii, fourth_limit10); const double quad_d2zdxdy01 = LBB_MIN( quad_d2zdxdy01iiii, fourth_limit01); const double quad_d2zdxdy11 = LBB_MIN( quad_d2zdxdy11iiii, fourth_limit11); /* * Part of the result which does not need derivatives: */ const double newval1 = c00 * dos_two + c10 * dos_thr + c01 * tre_two + c11 * tre_thr; /* * Twice the part of the result which only needs first derivatives. */ const double newval2 = c00dx * dble_dzdx00 + c10dx * dble_dzdx10 + c01dx * dble_dzdx01 + c11dx * dble_dzdx11 + c00dy * dble_dzdy00 + c10dy * dble_dzdy10 + c01dy * dble_dzdy01 + c11dy * dble_dzdy11; /* * Four times the part of the result which only uses cross * derivatives: */ const double newval3 = c00dxdy * quad_d2zdxdy00 + c10dxdy * quad_d2zdxdy10 + c01dxdy * quad_d2zdxdy01 + c11dxdy * quad_d2zdxdy11; const double newval = newval1 + .5 * newval2 + .25 * newval3; return newval; } /* * Call lbb with a type conversion operator as a parameter. * * It would be nice to do this with templates but we can't figure out * how to do it cleanly. Suggestions welcome! */ #define LBB_CONVERSION( conversion ) \ template static void inline \ lbb_ ## conversion( void* restrict pout, \ const VipsPel* restrict pin, \ const int bands, \ const int lskip, \ const double relative_x, \ const double relative_y ) \ { \ T* restrict out = (T *) pout; \ \ const T* restrict in = (T *) pin; \ \ const int one_shift = -bands; \ const int thr_shift = bands; \ const int fou_shift = 2*bands; \ \ const int uno_two_shift = -lskip; \ \ const int tre_two_shift = lskip; \ const int qua_two_shift = 2*lskip; \ \ const int uno_one_shift = uno_two_shift + one_shift; \ const int dos_one_shift = one_shift; \ const int tre_one_shift = tre_two_shift + one_shift; \ const int qua_one_shift = qua_two_shift + one_shift; \ \ const int uno_thr_shift = uno_two_shift + thr_shift; \ const int dos_thr_shift = thr_shift; \ const int tre_thr_shift = tre_two_shift + thr_shift; \ const int qua_thr_shift = qua_two_shift + thr_shift; \ \ const int uno_fou_shift = uno_two_shift + fou_shift; \ const int dos_fou_shift = fou_shift; \ const int tre_fou_shift = tre_two_shift + fou_shift; \ const int qua_fou_shift = qua_two_shift + fou_shift; \ \ const double xp1over2 = relative_x; \ const double xm1over2 = xp1over2 - 1.0; \ const double onepx = 0.5 + xp1over2; \ const double onemx = 1.5 - xp1over2; \ const double xp1over2sq = xp1over2 * xp1over2; \ \ const double yp1over2 = relative_y; \ const double ym1over2 = yp1over2 - 1.0; \ const double onepy = 0.5 + yp1over2; \ const double onemy = 1.5 - yp1over2; \ const double yp1over2sq = yp1over2 * yp1over2; \ \ const double xm1over2sq = xm1over2 * xm1over2; \ const double ym1over2sq = ym1over2 * ym1over2; \ \ const double twice1px = onepx + onepx; \ const double twice1py = onepy + onepy; \ const double twice1mx = onemx + onemx; \ const double twice1my = onemy + onemy; \ \ const double xm1over2sq_times_ym1over2sq = xm1over2sq * ym1over2sq; \ const double xp1over2sq_times_ym1over2sq = xp1over2sq * ym1over2sq; \ const double xp1over2sq_times_yp1over2sq = xp1over2sq * yp1over2sq; \ const double xm1over2sq_times_yp1over2sq = xm1over2sq * yp1over2sq; \ \ const double four_times_1px_times_1py = twice1px * twice1py; \ const double four_times_1mx_times_1py = twice1mx * twice1py; \ const double twice_xp1over2_times_1py = xp1over2 * twice1py; \ const double twice_xm1over2_times_1py = xm1over2 * twice1py; \ \ const double twice_xm1over2_times_1my = xm1over2 * twice1my; \ const double twice_xp1over2_times_1my = xp1over2 * twice1my; \ const double four_times_1mx_times_1my = twice1mx * twice1my; \ const double four_times_1px_times_1my = twice1px * twice1my; \ \ const double twice_1px_times_ym1over2 = twice1px * ym1over2; \ const double twice_1mx_times_ym1over2 = twice1mx * ym1over2; \ const double xp1over2_times_ym1over2 = xp1over2 * ym1over2; \ const double xm1over2_times_ym1over2 = xm1over2 * ym1over2; \ \ const double xm1over2_times_yp1over2 = xm1over2 * yp1over2; \ const double xp1over2_times_yp1over2 = xp1over2 * yp1over2; \ const double twice_1mx_times_yp1over2 = twice1mx * yp1over2; \ const double twice_1px_times_yp1over2 = twice1px * yp1over2; \ \ const double c00 = \ four_times_1px_times_1py * xm1over2sq_times_ym1over2sq; \ const double c00dx = \ twice_xp1over2_times_1py * xm1over2sq_times_ym1over2sq; \ const double c00dy = \ twice_1px_times_yp1over2 * xm1over2sq_times_ym1over2sq; \ const double c00dxdy = \ xp1over2_times_yp1over2 * xm1over2sq_times_ym1over2sq; \ \ const double c10 = \ four_times_1mx_times_1py * xp1over2sq_times_ym1over2sq; \ const double c10dx = \ twice_xm1over2_times_1py * xp1over2sq_times_ym1over2sq; \ const double c10dy = \ twice_1mx_times_yp1over2 * xp1over2sq_times_ym1over2sq; \ const double c10dxdy = \ xm1over2_times_yp1over2 * xp1over2sq_times_ym1over2sq; \ \ const double c01 = \ four_times_1px_times_1my * xm1over2sq_times_yp1over2sq; \ const double c01dx = \ twice_xp1over2_times_1my * xm1over2sq_times_yp1over2sq; \ const double c01dy = \ twice_1px_times_ym1over2 * xm1over2sq_times_yp1over2sq; \ const double c01dxdy = \ xp1over2_times_ym1over2 * xm1over2sq_times_yp1over2sq; \ \ const double c11 = \ four_times_1mx_times_1my * xp1over2sq_times_yp1over2sq; \ const double c11dx = \ twice_xm1over2_times_1my * xp1over2sq_times_yp1over2sq; \ const double c11dy = \ twice_1mx_times_ym1over2 * xp1over2sq_times_yp1over2sq; \ const double c11dxdy = \ xm1over2_times_ym1over2 * xp1over2sq_times_yp1over2sq; \ \ int band = bands; \ \ do \ { \ const double double_result = \ lbbicubic( c00, \ c10, \ c01, \ c11, \ c00dx, \ c10dx, \ c01dx, \ c11dx, \ c00dy, \ c10dy, \ c01dy, \ c11dy, \ c00dxdy, \ c10dxdy, \ c01dxdy, \ c11dxdy, \ in[ uno_one_shift ], \ in[ uno_two_shift ], \ in[ uno_thr_shift ], \ in[ uno_fou_shift ], \ in[ dos_one_shift ], \ in[ 0 ], \ in[ dos_thr_shift ], \ in[ dos_fou_shift ], \ in[ tre_one_shift ], \ in[ tre_two_shift ], \ in[ tre_thr_shift ], \ in[ tre_fou_shift ], \ in[ qua_one_shift ], \ in[ qua_two_shift ], \ in[ qua_thr_shift ], \ in[ qua_fou_shift ] ); \ \ const T result = to_ ## conversion( double_result ); \ in++; \ *out++ = result; \ } while (--band); \ } LBB_CONVERSION( fptypes ) LBB_CONVERSION( withsign ) LBB_CONVERSION( nosign ) #define CALL( T, conversion ) \ lbb_ ## conversion( out, \ p, \ bands, \ lskip, \ relative_x, \ relative_y ); /* * We need C linkage: */ extern "C" { G_DEFINE_TYPE( VipsInterpolateLbb, vips_interpolate_lbb, VIPS_TYPE_INTERPOLATE ); } static void vips_interpolate_lbb_interpolate( VipsInterpolate* restrict interpolate, void* restrict out, VipsRegion* restrict in, double absolute_x, double absolute_y ) { /* absolute_x and absolute_y are always >= 1.0 (see double-check assert * below), so we don't need floor(). * * It's 1 not 0 since have a window_offset of 1. */ const int ix = (int) absolute_x; const int iy = (int) absolute_y; /* * Move the pointer to (the first band of) the top/left pixel of the * 2x2 group of pixel centers which contains the sampling location * in its convex hull: */ const VipsPel* restrict p = VIPS_REGION_ADDR( in, ix, iy ); const double relative_x = absolute_x - ix; const double relative_y = absolute_y - iy; /* * VIPS versions of Nicolas's pixel addressing values. */ const int lskip = VIPS_REGION_LSKIP( in ) / VIPS_IMAGE_SIZEOF_ELEMENT( in->im ); /* * Double the bands for complex images to account for the real and * imaginary parts being computed independently: */ const int actual_bands = in->im->Bands; const int bands = vips_band_format_iscomplex( in->im->BandFmt ) ? 2 * actual_bands : actual_bands; g_assert( ix - 1 >= in->valid.left ); g_assert( iy - 1 >= in->valid.top ); g_assert( ix + 2 < VIPS_RECT_RIGHT( &in->valid ) ); g_assert( iy + 2 < VIPS_RECT_BOTTOM( &in->valid ) ); /* Confirm that absolute_x and absolute_y are >= 1, see above. */ g_assert( absolute_x >= 1.0 ); g_assert( absolute_y >= 1.0 ); switch( in->im->BandFmt ) { case VIPS_FORMAT_UCHAR: CALL( unsigned char, nosign ); break; case VIPS_FORMAT_CHAR: CALL( signed char, withsign ); break; case VIPS_FORMAT_USHORT: CALL( unsigned short, nosign ); break; case VIPS_FORMAT_SHORT: CALL( signed short, withsign ); break; case VIPS_FORMAT_UINT: CALL( unsigned int, nosign ); break; case VIPS_FORMAT_INT: CALL( signed int, withsign ); break; /* * Complex images are handled by doubling of bands. */ case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: CALL( float, fptypes ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: CALL( double, fptypes ); break; default: g_assert( 0 ); break; } } static void vips_interpolate_lbb_class_init( VipsInterpolateLbbClass *klass ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( klass ); VipsInterpolateClass *interpolate_class = VIPS_INTERPOLATE_CLASS( klass ); object_class->nickname = "lbb"; object_class->description = _( "reduced halo bicubic" ); interpolate_class->interpolate = vips_interpolate_lbb_interpolate; interpolate_class->window_size = 4; } static void vips_interpolate_lbb_init( VipsInterpolateLbb *lbb ) { } libvips-8.9.1/libvips/resample/mapim.c000066400000000000000000000302151361153320700177320ustar00rootroot00000000000000/* resample with an index image * * 15/11/15 * - from affine.c * 12/8/18 * - prevent float->int overflow * - a bit quicker * 17/12/18 * - we were not offsetting pixel fetches by window_offset */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsMapim { VipsResample parent_instance; VipsImage *index; VipsInterpolate *interpolate; /* Need an image vector for start_many / stop_many */ VipsImage *in_array[3]; } VipsMapim; typedef VipsResampleClass VipsMapimClass; G_DEFINE_TYPE( VipsMapim, vips_mapim, VIPS_TYPE_RESAMPLE ); /* Minmax of a line of pixels. Pass in a thing to convert back to int * coordinates. */ #define MINMAX( TYPE, CLIP_LOW, CLIP_HIGH ) { \ TYPE * restrict p1 = (TYPE *) p; \ TYPE t_max_x = max_x; \ TYPE t_min_x = min_x; \ TYPE t_max_y = max_y; \ TYPE t_min_y = min_y; \ \ for( x = 0; x < r->width; x++ ) { \ TYPE px = p1[0]; \ TYPE py = p1[1]; \ \ if( first ) { \ t_min_x = px; \ t_max_x = px; \ t_min_y = py; \ t_max_y = py; \ \ first = FALSE; \ } \ else { \ if( px > t_max_x ) \ t_max_x = px; \ else if( px < t_min_x ) \ t_min_x = px; \ \ if( py > t_max_y ) \ t_max_y = py; \ else if( py < t_min_y ) \ t_min_y = py; \ } \ \ p1 += 2; \ } \ \ min_x = CLIP_LOW( t_min_x ); \ max_x = CLIP_HIGH( t_max_x ); \ min_y = CLIP_LOW( t_min_y ); \ max_y = CLIP_HIGH( t_max_y ); \ } /* All the clippers. These vary with TYPE. */ /* Clip a small (max val < VIPS_MAX_COORD) unsigned int type. */ #define CLIP_UINT_SMALL( X ) (X) /* Clip a small (max val < VIPS_MAX_COORD) signed int type. */ #define CLIP_SINT_SMALL( X ) VIPS_MAX( X, 0 ); /* An unsigned int type larger than VIPS_MAX_COORD. Trim upper range. */ #define CLIP_UINT_LARGE( X ) VIPS_MIN( X, VIPS_MAX_COORD ); /* A large signed int. */ #define CLIP_SINT_LARGE( X ) VIPS_CLIP( 0, X, VIPS_MAX_COORD ); /* Float types must clip the range, and also round up or down at the extremes. */ #define CLIP_FLOAT_LOW( X ) VIPS_CLIP( 0, floor( X ), VIPS_MAX_COORD ); #define CLIP_FLOAT_HIGH( X ) VIPS_CLIP( 0, ceil( X ), VIPS_MAX_COORD ); /* Scan a region and find min/max in the two axes. */ static void vips_mapim_region_minmax( VipsRegion *region, VipsRect *r, VipsRect *bounds ) { int min_x; int max_x; int min_y; int max_y; gboolean first; int x, y; min_x = 0; max_x = 0; min_y = 0; max_y = 0; first = TRUE; for( y = 0; y < r->height; y++ ) { VipsPel * restrict p = VIPS_REGION_ADDR( region, r->left, r->top + y ); switch( region->im->BandFmt ) { case VIPS_FORMAT_UCHAR: MINMAX( unsigned char, CLIP_UINT_SMALL, CLIP_UINT_SMALL ); break; case VIPS_FORMAT_CHAR: MINMAX( signed char, CLIP_SINT_SMALL, CLIP_SINT_SMALL ); break; case VIPS_FORMAT_USHORT: MINMAX( unsigned short, CLIP_UINT_SMALL, CLIP_UINT_SMALL ); break; case VIPS_FORMAT_SHORT: MINMAX( signed short, CLIP_SINT_SMALL, CLIP_SINT_SMALL ); break; case VIPS_FORMAT_UINT: MINMAX( unsigned int, CLIP_UINT_LARGE, CLIP_UINT_LARGE ); break; case VIPS_FORMAT_INT: MINMAX( signed int, CLIP_SINT_LARGE, CLIP_SINT_LARGE ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: MINMAX( float, CLIP_FLOAT_LOW, CLIP_FLOAT_HIGH ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: MINMAX( double, CLIP_FLOAT_LOW, CLIP_FLOAT_HIGH ); break; default: g_assert_not_reached(); } } bounds->left = min_x; bounds->top = min_y; bounds->width = max_x - min_x + 1; bounds->height = max_y - min_y + 1; } #define ULOOKUP( TYPE ) { \ TYPE * restrict p1 = (TYPE *) p; \ \ for( x = 0; x < r->width; x++ ) { \ TYPE px = p1[0]; \ TYPE py = p1[1]; \ \ if( px >= clip_width || \ py >= clip_height ) { \ for( z = 0; z < ps; z++ ) \ q[z] = 0; \ } \ else \ interpolate( mapim->interpolate, q, ir[0], \ px + window_offset, py + window_offset ); \ \ p1 += 2; \ q += ps; \ } \ } #define LOOKUP( TYPE ) { \ TYPE * restrict p1 = (TYPE *) p; \ \ for( x = 0; x < r->width; x++ ) { \ TYPE px = p1[0]; \ TYPE py = p1[1]; \ \ if( px < 0 || \ px >= clip_width || \ py < 0 || \ py >= clip_height ) { \ for( z = 0; z < ps; z++ ) \ q[z] = 0; \ } \ else \ interpolate( mapim->interpolate, q, ir[0], \ px + window_offset, py + window_offset ); \ \ p1 += 2; \ q += ps; \ } \ } static int vips_mapim_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; VipsRegion **ir = (VipsRegion **) seq; const VipsImage **in_array = (const VipsImage **) a; const VipsMapim *mapim = (VipsMapim *) b; const VipsResample *resample = VIPS_RESAMPLE( mapim ); const VipsImage *in = in_array[0]; const int window_size = vips_interpolate_get_window_size( mapim->interpolate ); const int window_offset = vips_interpolate_get_window_offset( mapim->interpolate ); const VipsInterpolateMethod interpolate = vips_interpolate_get_method( mapim->interpolate ); const int ps = VIPS_IMAGE_SIZEOF_PEL( in ); const int clip_width = resample->in->Xsize; const int clip_height = resample->in->Ysize; VipsRect bounds, image, clipped; int x, y, z; #ifdef DEBUG_VERBOSE printf( "vips_mapim_gen: " "generating left=%d, top=%d, width=%d, height=%d\n", r->left, r->top, r->width, r->height ); #endif /*DEBUG_VERBOSE*/ /* Fetch the chunk of the mapim image we need, and find the max/min in * x and y. */ if( vips_region_prepare( ir[1], r ) ) return( -1 ); VIPS_GATE_START( "vips_mapim_gen: work" ); vips_mapim_region_minmax( ir[1], r, &bounds ); VIPS_GATE_STOP( "vips_mapim_gen: work" ); /* The bounding box of that area is what we will need from @in. Add * enough for the interpolation stencil as well. * */ bounds.width += window_size - 1; bounds.height += window_size - 1; /* Clip against the expanded image. */ image.left = 0; image.top = 0; image.width = in->Xsize; image.height = in->Ysize; vips_rect_intersectrect( &bounds, &image, &clipped ); #ifdef DEBUG_VERBOSE printf( "vips_mapim_gen: " "preparing left=%d, top=%d, width=%d, height=%d\n", clipped.left, clipped.top, clipped.width, clipped.height ); #endif /*DEBUG_VERBOSE*/ if( vips_rect_isempty( &clipped ) ) { vips_region_black( or ); return( 0 ); } if( vips_region_prepare( ir[0], &clipped ) ) return( -1 ); VIPS_GATE_START( "vips_mapim_gen: work" ); /* Resample! x/y loop over pixels in the output image (5). */ for( y = 0; y < r->height; y++ ) { VipsPel * restrict p = VIPS_REGION_ADDR( ir[1], r->left, y + r->top ); VipsPel * restrict q = VIPS_REGION_ADDR( or, r->left, y + r->top ); switch( ir[1]->im->BandFmt ) { case VIPS_FORMAT_UCHAR: ULOOKUP( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOKUP( signed char ); break; case VIPS_FORMAT_USHORT: ULOOKUP( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOKUP( signed short ); break; case VIPS_FORMAT_UINT: ULOOKUP( unsigned int ); break; case VIPS_FORMAT_INT: LOOKUP( signed int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOKUP( float ); break; break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOKUP( double ); break; default: g_assert_not_reached(); } } VIPS_GATE_STOP( "vips_mapim_gen: work" ); return( 0 ); } static int vips_mapim_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsMapim *mapim = (VipsMapim *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; int window_size; int window_offset; if( VIPS_OBJECT_CLASS( vips_mapim_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_known( class->nickname, resample->in ) || vips_check_twocomponents( class->nickname, mapim->index ) ) return( -1 ); in = resample->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; window_size = vips_interpolate_get_window_size( mapim->interpolate ); window_offset = vips_interpolate_get_window_offset( mapim->interpolate ); /* Add new pixels around the input so we can interpolate at the edges. */ if( vips_embed( in, &t[1], window_offset, window_offset, in->Xsize + window_size - 1, in->Ysize + window_size - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[1]; if( vips_image_pipelinev( resample->out, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); resample->out->Xsize = mapim->index->Xsize; resample->out->Ysize = mapim->index->Ysize; mapim->in_array[0] = in; mapim->in_array[1] = mapim->index; mapim->in_array[2] = NULL; if( vips_image_generate( resample->out, vips_start_many, vips_mapim_gen, vips_stop_many, mapim->in_array, mapim ) ) return( -1 ); return( 0 ); } static void vips_mapim_class_init( VipsMapimClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_mapim_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mapim"; vobject_class->description = _( "resample with a map image" ); vobject_class->build = vips_mapim_build; VIPS_ARG_IMAGE( class, "index", 3, _( "Index" ), _( "Index pixels with this" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMapim, index ) ); VIPS_ARG_INTERPOLATE( class, "interpolate", 4, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMapim, interpolate ) ); } static void vips_mapim_init( VipsMapim *mapim ) { mapim->interpolate = vips_interpolate_new( "bilinear" ); } /** * vips_mapim: (method) * @in: input image * @out: (out): output image * @index: index image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @interpolate: interpolate pixels with this * * This operator resamples @in using @index to look up pixels. @out is * the same size as @index, with each pixel being fetched from that position in * @in. That is: * * |[ * out[x, y] = in[index[x, y]] * ]| * * If @index has one band, that band must be complex. Otherwise, @index must * have two bands of any format. * Coordinates in @index are in pixels, with (0, 0) being the top-left corner * of @in, and with y increasing down the image. Use vips_xyz() to build index * images. * * @interpolate defaults to bilinear. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See vips_maplut() for a 1D equivalent of this operation. * * See also: vips_xyz(), vips_affine(), vips_resize(), * vips_maplut(), #VipsInterpolate. * * Returns: 0 on success, -1 on error */ int vips_mapim( VipsImage *in, VipsImage **out, VipsImage *index, ... ) { va_list ap; int result; va_start( ap, index ); result = vips_call_split( "mapim", ap, in, out, index ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/resample/nohalo.cpp000066400000000000000000001734301361153320700204560ustar00rootroot00000000000000/* nohalo subdivision followed by lbb (locally bounded bicubic) * interpolation resampler * * Nohalo level 1 with bilinear finishing scheme hacked for VIPS by * J. Cupitt based on code by N. Robidoux, 20/1/09 * * N. Robidoux and J. Cupitt, 4-17/3/09 * * N. Robidoux, 1/4-29/5/2009 * * Nohalo level 2 with bilinear finishing scheme by N. Robidoux based * on code by N. Robidoux, A. Turcotte and J. Cupitt, 27/1/2010 * * Nohalo level 1 with LBB finishing scheme by N. Robidoux and * C. Racette, 11-18/5/2010 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* * 2009-2010 (c) Nicolas Robidoux, Chantal Racette, John Cupitt and * Adam Turcotte * * N. Robidoux thanks Geert Jordaens, Ralf Meyer, Øyvind Kolås, * Minglun Gong, Eric Daoust and Sven Neumann for useful comments and * code. * * N. Robidoux's early research on Nohalo funded in part by an NSERC * (National Science and Engineering Research Council of Canada) * Discovery Grant awarded to him (298424--2004). * * C. Racette's image resampling research and programming funded in * part by an NSERC (National Science and Engineering Research Council * of Canada) Alexander Graham Bell Canada Graduate Scholarship, by an * NSERC Discovery Grant awarded to Julien Dompierre (grant number * 20-61098) and by N. Robidoux's Laurentian University professional * allowance. * * A. Turcotte's image resampling research on reduced halo funded in * part by an NSERC Alexander Graham Bell Canada Graduate Scholarhip * awarded to him and by a Google Summer of Code 2010 award awarded to * GIMP (Gnu Image Manipulation Program). * * Nohalo with LBB finishing scheme was developed by N. Robidoux and * C. Racette at the Department of Mathematics and Computer Science of * Laurentian University in the course of C. Racette's Masters thesis * in Computational Sciences. Preliminary work on Nohalo and monotone * interpolation was performed by C. Racette and N. Robidoux in the * course of her honours thesis, by N. Robidoux, A. Turcotte and * E. Daoust during Google Summer of Code 2009 (through two awards * made to GIMP to improve GEGL), and, earlier, by N. Robidoux, * A. Turcotte, J. Cupitt, M. Gong and K. Martinez. */ /* * Nohalo with LBB as finishing scheme has two versions, which are * only different in the way LBB is implemented: * * A "soft" version, which shows a little less staircasing and a * little more haloing, and which is a little more expensive to * compute. We recommend this as the default. * * A "sharp" version, which shows a little more staircasing and a * little less haloing, and which is a little cheaper (it uses 6 * less comparisons and 12 less "? :"). * * The only difference between the two is that the "soft" versions * uses local minima and maxima computed over 3x3 square blocks, and * the "sharp" version uses local minima and maxima computed over 3x3 * crosses. * * The "sharp" version is (a little) faster. We don't know yet for * sure, but it appears that the "soft" version gives marginally * better results. * * If you want to use the "sharp" (cheaper) version, uncomment the * following three pre-processor code lines: */ /* #ifndef __NOHALO_CHEAP_H__ #define __NOHALO_CHEAP_H__ #endif */ /* * ================ * NOHALO RESAMPLER * ================ * * "Nohalo" is a resampler with a mission: smoothly straightening * oblique lines without undesirable side-effects. In particular, * without much blurring and with no added haloing. * * In this code, one Nohalo subdivision is performed. The * interpolation is finished with LBB (Locally Bounded Bicubic). * * Key properties: * * ======================= * Nohalo is interpolatory * ======================= * * That is, Nohalo preserves point values: If asked for the value at * the center of an input pixel, the sampler returns the corresponding * value, unchanged. In addition, because Nohalo is continuous, if * asked for a value at a location "very close" to the center of an * input pixel, then the sampler returns a value "very close" to * it. (Nohalo is not smoothing like, say, B-Spline * pseudo-interpolation.) * * ==================================================================== * Nohalo subdivision is co-monotone (this is why it's called "no-halo") * ==================================================================== * * One consequence of monotonicity is that additional subdivided * values are in the range of the four closest input values, which is * a form of local boundedness. (Note: plain vanilla bilinear and * nearest neighbour are also co-monotone.) LBB is also locally * bounded. Consequently, Nohalo subdivision followed by LBB is * locally bounded. When used as a finishing scheme for Nohalo, the * standard LBB bounds imply that the final interpolated value is in * the range of the nine closest input values. This property is why * there is very little added haloing, even when a finishing scheme * which is not strictly monotone. Another consequence of local * boundedness is that clamping is unnecessary (provided abyss values * are within the range of acceptable values, which is "always" the * case). * * Note: If the abyss policy is an extrapolating one---for example, * linear or bilinear extrapolation---clamping is still unnecessary * UNLESS one attempts to resample outside of the convex hull of the * input pixel positions. Consequence: the "corner" image size * convention does not require clamping when using linear * extrapolation abyss policy when performing image resizing, but the * "center" one does, when upscaling, at locations very close to the * boundary. If computing values at locations outside of the convex * hull of the pixel locations of the input image, nearest neighbour * abyss policy is most likely better anyway, because linear * extrapolation produces "streaks" if positions far outside the * original image boundary are resampled. * * ======================== * Nohalo is a local method * ======================== * * The interpolated pixel value when using Nohalo subdivision followed * by LBB only depends on the 21 (5x5 minus the four corners) closest * input values. * * =============================== * Nohalo is second order accurate * =============================== * * (Except possibly near the boundary: it is easy to make this * property carry over everywhere but this requires a tuned abyss * policy---linear extrapolation, say---or building the boundary * conditions inside the sampler.) Nohalo+LBB is exact on linear * intensity profiles, meaning that if the input pixel values (in the * stencil) are obtained from a function of the form f(x,y) = a + b*x * + c*y (a, b, c constants), then the computed pixel value is exactly * the value of f(x,y) at the asked-for sampling location. The * boundary condition which is emulated by VIPS through the "extend" * extension of the input image---this corresponds to the nearest * neighbour abyss policy---does NOT make this resampler exact on * linears near the boundary. It does, however, guarantee that no * clamping is required even when resampled values are computed at * positions outside of the extent of the input image (when * extrapolation is required). * * =================== * Nohalo is nonlinear * =================== * * Both Nohalo and LBB are nonlinear, consequently their composition * is nonlinear. In particular, resampling a sum of images may not be * the same as summing the resamples. (This occurs even without taking * into account over and underflow issues: images can only take values * within a banded range, and consequently no sampler is truly * linear.) * * ==================== * Weaknesses of Nohalo * ==================== * * In some cases, the initial subdivision computation is wasted: * * If a region is bi-chromatic, the nonlinear component of Nohalo * subdivision is zero in the interior of the region, and consequently * Nohalo subdivision boils down to bilinear. For such images, LBB is * probably a better choice. * * ========================= * Bibliographical reference * ========================= * * For more information about Nohalo (a prototype version with * bilinear finish instead of LBB), see * * CPU, SMP and GPU implementations of Nohalo level 1, a fast * co-convex antialiasing image resampler by Nicolas Robidoux, Minglun * Gong, John Cupitt, Adam Turcotte, and Kirk Martinez, in C3S2E '09: * Proceedings of the 2nd Canadian Conference on Computer Science and * Software Engineering, p. 185--195, ACM, New York, NY, USA, 2009. * http://doi.acm.org/10.1145/1557626.1557657. */ /* Uncomment to enable bounds checking for VIPS_REGION_ADDR(). */ #define DEBUG #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "templates.h" #define VIPS_TYPE_INTERPOLATE_NOHALO \ (vips_interpolate_nohalo_get_type()) #define VIPS_INTERPOLATE_NOHALO( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_NOHALO, VipsInterpolateNohalo )) #define VIPS_INTERPOLATE_NOHALO_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_NOHALO, VipsInterpolateNohaloClass)) #define VIPS_IS_INTERPOLATE_NOHALO( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_NOHALO )) #define VIPS_IS_INTERPOLATE_NOHALO_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_NOHALO )) #define VIPS_INTERPOLATE_NOHALO_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_NOHALO, VipsInterpolateNohaloClass )) typedef struct _VipsInterpolateNohalo { VipsInterpolate parent_object; } VipsInterpolateNohalo; typedef struct _VipsInterpolateNohaloClass { VipsInterpolateClass parent_class; } VipsInterpolateNohaloClass; /* * NOHALO_MINMOD is an implementation of the minmod function which * only needs two "conditional moves." * NOHALO_MINMOD(a,b,a_times_a,a_times_b) "returns" * minmod(a,b). The macro parameter ("input") a_times_a is assumed to * contain the square of a; a_times_b, the product of a and b. * * For uncompressed natural images in high bit depth (images for which * the slopes a and b are unlikely to be equal to zero or be equal to * each other), or chips with good branch prediction, the following * version of the minmod function may work well: * * ( (a_times_b)>=0. ? ( (a_times_b)<(a_times_a) ? (b) : (a) ) : 0. ) * * In this version, the forward branch of the second conditional move * is taken when |b|>|a| and when a*b<0. However, the "else" branch is * taken when a=0 (or when a=b), which is why the above version is not * as effective for images with regions with constant pixel values (or * regions with pixel values which vary linearly or bilinearly) since * we apply minmod to pairs of differences. * * The following version is more suitable for images with flat * (constant) colour areas, since a, which is a pixel difference, will * often be 0, in which case both forward branches are likely. This * may be preferable if "branch flag look ahead" does not work so * well. * * ( (a_times_b)>=0. ? ( (a_times_a)<=(a_times_b) ? (a) : (b) ) : 0. ) * * This last version appears to be slightly better than the former in * speed tests performed on a recent multicore Intel chip, especially * when enlarging a sharp image by a large factor, hence the choice. */ #define NOHALO_MINMOD(a,b,a_times_a,a_times_b) \ ( ( (a_times_b)>=0. ) ? ( (a_times_a)<=(a_times_b) ? (a) : (b) ) : 0. ) /* * Absolute value and sign macros: */ #define NOHALO_ABS(x) ( ((x)>=0.) ? (x) : -(x) ) #define NOHALO_SIGN(x) ( ((x)>=0.) ? 1. : -1. ) /* * MIN and MAX macros set up so that I can put the likely winner in * the first argument (forward branch likely blah blah blah): */ #define NOHALO_MIN(x,y) ( ((x)<=(y)) ? (x) : (y) ) #define NOHALO_MAX(x,y) ( ((x)>=(y)) ? (x) : (y) ) static void inline nohalo_subdivision (const double uno_two, const double uno_thr, const double uno_fou, const double dos_one, const double dos_two, const double dos_thr, const double dos_fou, const double dos_fiv, const double tre_one, const double tre_two, const double tre_thr, const double tre_fou, const double tre_fiv, const double qua_one, const double qua_two, const double qua_thr, const double qua_fou, const double qua_fiv, const double cin_two, const double cin_thr, const double cin_fou, double* restrict uno_one_1, double* restrict uno_two_1, double* restrict uno_thr_1, double* restrict uno_fou_1, double* restrict dos_one_1, double* restrict dos_two_1, double* restrict dos_thr_1, double* restrict dos_fou_1, double* restrict tre_one_1, double* restrict tre_two_1, double* restrict tre_thr_1, double* restrict tre_fou_1, double* restrict qua_one_1, double* restrict qua_two_1, double* restrict qua_thr_1, double* restrict qua_fou_1) { /* * nohalo_subdivision calculates the missing twelve double density * pixel values, and also returns the "already known" four, so that * the sixteen values which make up the stencil of LBB are * available. */ /* * THE STENCIL OF INPUT VALUES: * * Pointer arithmetic is used to implicitly reflect the input * stencil about tre_thr---assumed closer to the sampling location * than other pixels (ties are OK)---in such a way that after * reflection the sampling point is to the bottom right of tre_thr. * * The following code and picture assumes that the stencil reflexion * has already been performed. * * (ix-1,iy-2) (ix,iy-2) (ix+1,iy-2) * =uno_two = uno_thr = uno_fou * * * * (ix-2,iy-1) (ix-1,iy-1) (ix,iy-1) (ix+1,iy-1) (ix+2,iy-1) * = dos_one = dos_two = dos_thr = dos_fou = dos_fiv * * * * (ix-2,iy) (ix-1,iy) (ix,iy) (ix+1,iy) (ix+2,iy) * = tre_one = tre_two = tre_thr = tre_fou = tre_fiv * X * * * (ix-2,iy+1) (ix-1,iy+1) (ix,iy+1) (ix+1,iy+1) (ix+2,iy+1) * = qua_one = qua_two = qua_thr = qua_fou = qua_fiv * * * * (ix-1,iy+2) (ix,iy+2) (ix+1,iy+2) * = cin_two = cin_thr = cin_fou * * * The above input pixel values are the ones needed in order to make * available the following values, needed by LBB: * * uno_one_1 = uno_two_1 = uno_thr_1 = uno_fou_1 = * (ix-1/2,iy-1/2) (ix,iy-1/2) (ix+1/2,iy-1/2) (ix+1,iy-1/2) * * * * * dos_one_1 = dos_two_1 = dos_thr_1 = dos_fou_1 = * (ix-1/2,iy) (ix,iy) (ix+1/2,iy) (ix+1,iy) * * X * * * tre_one_1 = tre_two_1 = tre_thr_1 = tre_fou_1 = * (ix-1/2,iy+1/2) (ix,iy+1/2) (ix+1/2,iy+1/2) (ix+1,iy+1/2) * * * * * qua_one_1 = qua_two_1 = qua_thr_1 = qua_fou_1 = * (ix-1/2,iy+1) (ix,iy+1) (ix+1/2,iy+1) (ix+1,iy+1) * */ /* * Computation of the nonlinear slopes: If two consecutive pixel * value differences have the same sign, the smallest one (in * absolute value) is taken to be the corresponding slope; if the * two consecutive pixel value differences don't have the same sign, * the corresponding slope is set to 0. * * In other words: Apply minmod to consecutive differences. */ /* * Two vertical simple differences: */ const double d_unodos_two = dos_two - uno_two; const double d_dostre_two = tre_two - dos_two; const double d_trequa_two = qua_two - tre_two; const double d_quacin_two = cin_two - qua_two; /* * Thr(ee) vertical differences: */ const double d_unodos_thr = dos_thr - uno_thr; const double d_dostre_thr = tre_thr - dos_thr; const double d_trequa_thr = qua_thr - tre_thr; const double d_quacin_thr = cin_thr - qua_thr; /* * Fou(r) vertical differences: */ const double d_unodos_fou = dos_fou - uno_fou; const double d_dostre_fou = tre_fou - dos_fou; const double d_trequa_fou = qua_fou - tre_fou; const double d_quacin_fou = cin_fou - qua_fou; /* * Dos horizontal differences: */ const double d_dos_onetwo = dos_two - dos_one; const double d_dos_twothr = dos_thr - dos_two; const double d_dos_thrfou = dos_fou - dos_thr; const double d_dos_foufiv = dos_fiv - dos_fou; /* * Tre(s) horizontal differences: */ const double d_tre_onetwo = tre_two - tre_one; const double d_tre_twothr = tre_thr - tre_two; const double d_tre_thrfou = tre_fou - tre_thr; const double d_tre_foufiv = tre_fiv - tre_fou; /* * Qua(ttro) horizontal differences: */ const double d_qua_onetwo = qua_two - qua_one; const double d_qua_twothr = qua_thr - qua_two; const double d_qua_thrfou = qua_fou - qua_thr; const double d_qua_foufiv = qua_fiv - qua_fou; /* * Recyclable vertical products and squares: */ const double d_unodos_times_dostre_two = d_unodos_two * d_dostre_two; const double d_dostre_two_sq = d_dostre_two * d_dostre_two; const double d_dostre_times_trequa_two = d_dostre_two * d_trequa_two; const double d_trequa_times_quacin_two = d_quacin_two * d_trequa_two; const double d_quacin_two_sq = d_quacin_two * d_quacin_two; const double d_unodos_times_dostre_thr = d_unodos_thr * d_dostre_thr; const double d_dostre_thr_sq = d_dostre_thr * d_dostre_thr; const double d_dostre_times_trequa_thr = d_trequa_thr * d_dostre_thr; const double d_trequa_times_quacin_thr = d_trequa_thr * d_quacin_thr; const double d_quacin_thr_sq = d_quacin_thr * d_quacin_thr; const double d_unodos_times_dostre_fou = d_unodos_fou * d_dostre_fou; const double d_dostre_fou_sq = d_dostre_fou * d_dostre_fou; const double d_dostre_times_trequa_fou = d_trequa_fou * d_dostre_fou; const double d_trequa_times_quacin_fou = d_trequa_fou * d_quacin_fou; const double d_quacin_fou_sq = d_quacin_fou * d_quacin_fou; /* * Recyclable horizontal products and squares: */ const double d_dos_onetwo_times_twothr = d_dos_onetwo * d_dos_twothr; const double d_dos_twothr_sq = d_dos_twothr * d_dos_twothr; const double d_dos_twothr_times_thrfou = d_dos_twothr * d_dos_thrfou; const double d_dos_thrfou_times_foufiv = d_dos_thrfou * d_dos_foufiv; const double d_dos_foufiv_sq = d_dos_foufiv * d_dos_foufiv; const double d_tre_onetwo_times_twothr = d_tre_onetwo * d_tre_twothr; const double d_tre_twothr_sq = d_tre_twothr * d_tre_twothr; const double d_tre_twothr_times_thrfou = d_tre_thrfou * d_tre_twothr; const double d_tre_thrfou_times_foufiv = d_tre_thrfou * d_tre_foufiv; const double d_tre_foufiv_sq = d_tre_foufiv * d_tre_foufiv; const double d_qua_onetwo_times_twothr = d_qua_onetwo * d_qua_twothr; const double d_qua_twothr_sq = d_qua_twothr * d_qua_twothr; const double d_qua_twothr_times_thrfou = d_qua_thrfou * d_qua_twothr; const double d_qua_thrfou_times_foufiv = d_qua_thrfou * d_qua_foufiv; const double d_qua_foufiv_sq = d_qua_foufiv * d_qua_foufiv; /* * Minmod slopes and first level pixel values: */ const double dos_thr_y = NOHALO_MINMOD( d_dostre_thr, d_unodos_thr, d_dostre_thr_sq, d_unodos_times_dostre_thr ); const double tre_thr_y = NOHALO_MINMOD( d_dostre_thr, d_trequa_thr, d_dostre_thr_sq, d_dostre_times_trequa_thr ); const double newval_uno_two = .5 * ( dos_thr + tre_thr ) + .25 * ( dos_thr_y - tre_thr_y ); const double qua_thr_y = NOHALO_MINMOD( d_quacin_thr, d_trequa_thr, d_quacin_thr_sq, d_trequa_times_quacin_thr ); const double newval_tre_two = .5 * ( tre_thr + qua_thr ) + .25 * ( tre_thr_y - qua_thr_y ); const double tre_fou_y = NOHALO_MINMOD( d_dostre_fou, d_trequa_fou, d_dostre_fou_sq, d_dostre_times_trequa_fou ); const double qua_fou_y = NOHALO_MINMOD( d_quacin_fou, d_trequa_fou, d_quacin_fou_sq, d_trequa_times_quacin_fou ); const double newval_tre_fou = .5 * ( tre_fou + qua_fou ) + .25 * ( tre_fou_y - qua_fou_y ); const double dos_fou_y = NOHALO_MINMOD( d_dostre_fou, d_unodos_fou, d_dostre_fou_sq, d_unodos_times_dostre_fou ); const double newval_uno_fou = .5 * ( dos_fou + tre_fou ) + .25 * (dos_fou_y - tre_fou_y ); const double tre_two_x = NOHALO_MINMOD( d_tre_twothr, d_tre_onetwo, d_tre_twothr_sq, d_tre_onetwo_times_twothr ); const double tre_thr_x = NOHALO_MINMOD( d_tre_twothr, d_tre_thrfou, d_tre_twothr_sq, d_tre_twothr_times_thrfou ); const double newval_dos_one = .5 * ( tre_two + tre_thr ) + .25 * ( tre_two_x - tre_thr_x ); const double tre_fou_x = NOHALO_MINMOD( d_tre_foufiv, d_tre_thrfou, d_tre_foufiv_sq, d_tre_thrfou_times_foufiv ); const double tre_thr_x_minus_tre_fou_x = tre_thr_x - tre_fou_x; const double newval_dos_thr = .5 * ( tre_thr + tre_fou ) + .25 * tre_thr_x_minus_tre_fou_x; const double qua_thr_x = NOHALO_MINMOD( d_qua_twothr, d_qua_thrfou, d_qua_twothr_sq, d_qua_twothr_times_thrfou ); const double qua_fou_x = NOHALO_MINMOD( d_qua_foufiv, d_qua_thrfou, d_qua_foufiv_sq, d_qua_thrfou_times_foufiv ); const double qua_thr_x_minus_qua_fou_x = qua_thr_x - qua_fou_x; const double newval_qua_thr = .5 * ( qua_thr + qua_fou ) + .25 * qua_thr_x_minus_qua_fou_x; const double qua_two_x = NOHALO_MINMOD( d_qua_twothr, d_qua_onetwo, d_qua_twothr_sq, d_qua_onetwo_times_twothr ); const double newval_qua_one = .5 * ( qua_two + qua_thr ) + .25 * ( qua_two_x - qua_thr_x ); const double newval_tre_thr = .125 * ( tre_thr_x_minus_tre_fou_x + qua_thr_x_minus_qua_fou_x ) + .5 * ( newval_tre_two + newval_tre_fou ); const double dos_thr_x = NOHALO_MINMOD( d_dos_twothr, d_dos_thrfou, d_dos_twothr_sq, d_dos_twothr_times_thrfou ); const double dos_fou_x = NOHALO_MINMOD( d_dos_foufiv, d_dos_thrfou, d_dos_foufiv_sq, d_dos_thrfou_times_foufiv ); const double newval_uno_thr = .25 * ( dos_fou - tre_thr ) + .125 * ( dos_fou_y - tre_fou_y + dos_thr_x - dos_fou_x ) + .5 * ( newval_uno_two + newval_dos_thr ); const double tre_two_y = NOHALO_MINMOD( d_dostre_two, d_trequa_two, d_dostre_two_sq, d_dostre_times_trequa_two ); const double qua_two_y = NOHALO_MINMOD( d_quacin_two, d_trequa_two, d_quacin_two_sq, d_trequa_times_quacin_two ); const double newval_tre_one = .25 * ( qua_two - tre_thr ) + .125 * ( qua_two_x - qua_thr_x + tre_two_y - qua_two_y ) + .5 * ( newval_dos_one + newval_tre_two ); const double dos_two_x = NOHALO_MINMOD( d_dos_twothr, d_dos_onetwo, d_dos_twothr_sq, d_dos_onetwo_times_twothr ); const double dos_two_y = NOHALO_MINMOD( d_dostre_two, d_unodos_two, d_dostre_two_sq, d_unodos_times_dostre_two ); const double newval_uno_one = .25 * ( dos_two + dos_thr + tre_two + tre_thr ) + .125 * ( dos_two_x - dos_thr_x + tre_two_x - tre_thr_x + dos_two_y + dos_thr_y - tre_two_y - tre_thr_y ); /* * Return the sixteen LBB stencil values: */ *uno_one_1 = newval_uno_one; *uno_two_1 = newval_uno_two; *uno_thr_1 = newval_uno_thr; *uno_fou_1 = newval_uno_fou; *dos_one_1 = newval_dos_one; *dos_two_1 = tre_thr; *dos_thr_1 = newval_dos_thr; *dos_fou_1 = tre_fou; *tre_one_1 = newval_tre_one; *tre_two_1 = newval_tre_two; *tre_thr_1 = newval_tre_thr; *tre_fou_1 = newval_tre_fou; *qua_one_1 = newval_qua_one; *qua_two_1 = qua_thr; *qua_thr_1 = newval_qua_thr; *qua_fou_1 = qua_fou; } /* * LBB (Locally Bounded Bicubic) is a high quality nonlinear variant * of Catmull-Rom. Images resampled with LBB have much smaller halos * than images resampled with windowed sincs or other interpolatory * cubic spline filters. Specifically, LBB halos are narrower and the * over/undershoot amplitude is smaller. This is accomplished without * a significant reduction in the smoothness of the result (compared * to Catmull-Rom). * * Another important property is that the resampled values are * contained within the range of nearby input values. Consequently, no * final clamping is needed to stay "in range" (e.g., 0-255 for * standard 8-bit images). * * LBB was developed by N. Robidoux and C. Racette of the Department * of Mathematics and Computer Science of Laurentian University in the * course of C.'s Masters Thesis in Computational Sciences. */ /* * LBB is a novel method with the following properties: * * --LBB is a Hermite bicubic method: The bicubic surface is defined, * one convex hull of four nearby input points at a time, using four * point values, four x-derivatives, four y-derivatives, and four * cross-derivatives. * * --The stencil for values in a square patch is the usual 4x4. * * --LBB is interpolatory. * * --It is C^1 with continuous cross derivatives. * * --When the limiters are inactive, LBB gives the same results as * Catmull-Rom. * * --When used on binary images, LBB gives results similar to bicubic * Hermite with all first derivatives---but not necessarily the * cross derivatives--at the input pixel locations set to zero. * * --The LBB reconstruction is locally bounded: Over each square * patch, the surface is contained between the minimum and the * maximum values among the 16 nearest input pixel values (those in * the stencil). * * --Consequently, the LBB reconstruction is globally bounded between * the very smallest input pixel value and the very largest input * pixel value. (It is not necessary to clamp results.) * * The LBB method is based on the method of Ken Brodlie, Petros * Mashwama and Sohail Butt for constraining Hermite interpolants * between globally defined planes: * * Visualization of surface data to preserve positivity and other * simple constraints. Computer & Graphics, Vol. 19, Number 4, pages * 585-594, 1995. DOI: 10.1016/0097-8493(95)00036-C. * * Instead of forcing the reconstructed surface to lie between two * GLOBALLY defined planes, LBB constrains one patch at a time to lie * between LOCALLY defined planes. This is accomplished by * constraining the derivatives (x, y and cross) at each input pixel * location so that if the constraint was applied everywhere the * surface would fit between the min and max of the values at the 9 * closest pixel locations. Because this is done with each of the four * pixel locations which define the bicubic patch, this forces the * reconstructed surface to lie between the min and max of the values * at the 16 closest values pixel locations. (Each corner defines its * own 3x3 subgroup of the 4x4 stencil. Consequently, the surface is * necessarily above the minimum of the four minima, which happens to * be the minimum over the 4x4. Similarly with the maxima.) * * The above paragraph described the "soft" version of LBB. The * "sharp" version is similar. */ static inline double lbbicubic( const double c00, const double c10, const double c01, const double c11, const double c00dx, const double c10dx, const double c01dx, const double c11dx, const double c00dy, const double c10dy, const double c01dy, const double c11dy, const double c00dxdy, const double c10dxdy, const double c01dxdy, const double c11dxdy, const double uno_one, const double uno_two, const double uno_thr, const double uno_fou, const double dos_one, const double dos_two, const double dos_thr, const double dos_fou, const double tre_one, const double tre_two, const double tre_thr, const double tre_fou, const double qua_one, const double qua_two, const double qua_thr, const double qua_fou ) { /* * STENCIL (FOOTPRINT) OF INPUT VALUES: * * The stencil of LBB is the same as for any standard Hermite * bicubic (e.g., Catmull-Rom): * * (ix-1,iy-1) (ix,iy-1) (ix+1,iy-1) (ix+2,iy-1) * = uno_one = uno_two = uno_thr = uno_fou * * (ix-1,iy) (ix,iy) (ix+1,iy) (ix+2,iy) * = dos_one = dos_two = dos_thr = dos_fou * X * (ix-1,iy+1) (ix,iy+1) (ix+1,iy+1) (ix+2,iy+1) * = tre_one = tre_two = tre_thr = tre_fou * * (ix-1,iy+2) (ix,iy+2) (ix+1,iy+2) (ix+2,iy+2) * = qua_one = qua_two = qua_thr = qua_fou * * where ix is the (pseudo-)floor of the requested left-to-right * location ("X"), and iy is the floor of the requested up-to-down * location. */ #if defined (__NOHALO_CHEAP_H__) /* * Computation of the four min and four max over 3x3 input data * sub-crosses of the 4x4 input stencil. * * We exploit the fact that the data comes from the (co-monotone) * method Nohalo so that it is known ahead of time that * * dos_thr is between dos_two and dos_fou * * tre_two is between dos_two and qua_two * * tre_fou is between dos_fou and qua_fou * * qua_thr is between qua_two and qua_fou * * tre_thr is in the convex hull of dos_two, dos_fou, qua_two and qua_fou * * to minimize the number of flags and conditional moves. * * (The "between" are not strict: "a between b and c" means * * "min(b,c) <= a <= max(b,c)".) * * We have, however, succeeded in eliminating one flag computation * (one comparison) and one use of an intermediate result. See the * two commented out lines below. * * Overall, only 20 comparisons and 28 "? :" are needed (to compute * 4 mins and 4 maxes). If you can figure how to do this more * efficiently, let us know. */ const double m1 = (uno_two <= tre_two) ? uno_two : tre_two ; const double M1 = (uno_two <= tre_two) ? tre_two : uno_two ; const double m2 = (dos_thr <= qua_thr) ? dos_thr : qua_thr ; const double M2 = (dos_thr <= qua_thr) ? qua_thr : dos_thr ; const double m3 = (dos_two <= dos_fou) ? dos_two : dos_fou ; const double M3 = (dos_two <= dos_fou) ? dos_fou : dos_two ; const double m4 = (uno_thr <= tre_thr) ? uno_thr : tre_thr ; const double M4 = (uno_thr <= tre_thr) ? tre_thr : uno_thr ; const double m5 = (dos_two <= qua_two) ? dos_two : qua_two ; const double M5 = (dos_two <= qua_two) ? qua_two : dos_two ; const double m6 = (tre_one <= tre_thr) ? tre_one : tre_thr ; const double M6 = (tre_one <= tre_thr) ? tre_thr : tre_one ; const double m7 = (dos_one <= dos_thr) ? dos_one : dos_thr ; const double M7 = (dos_one <= dos_thr) ? dos_thr : dos_one ; const double m8 = (tre_two <= tre_fou) ? tre_two : tre_fou ; const double M8 = (tre_two <= tre_fou) ? tre_fou : tre_two ; const double m9 = NOHALO_MIN( m1, dos_two ); const double M9 = NOHALO_MAX( M1, dos_two ); const double m10 = NOHALO_MIN( m2, tre_thr ); const double M10 = NOHALO_MAX( M2, tre_thr ); const double min10 = NOHALO_MIN( m3, m4 ); const double max10 = NOHALO_MAX( M3, M4 ); const double min01 = NOHALO_MIN( m5, m6 ); const double max01 = NOHALO_MAX( M5, M6 ); const double min00 = NOHALO_MIN( m9, m7 ); const double max00 = NOHALO_MAX( M9, M7 ); const double min11 = NOHALO_MIN( m10, m8 ); const double max11 = NOHALO_MAX( M10, M8 ); #else /* * Computation of the four min and four max over 3x3 input data * sub-blocks of the 4x4 input stencil. * * Surprisingly, we have not succeeded in reducing the number of "? * :" needed by using the fact that the data comes from the * (co-monotone) method Nohalo so that it is known ahead of time * that * * dos_thr is between dos_two and dos_fou * * tre_two is between dos_two and qua_two * * tre_fou is between dos_fou and qua_fou * * qua_thr is between qua_two and qua_fou * * tre_thr is in the convex hull of dos_two, dos_fou, qua_two and qua_fou * * to minimize the number of flags and conditional moves. * * (The "between" are not strict: "a between b and c" means * * "min(b,c) <= a <= max(b,c)".) * * We have, however, succeeded in eliminating one flag computation * (one comparison) and one use of an intermediate result. See the * two commented out lines below. * * Overall, only 27 comparisons are needed (to compute 4 mins and 4 * maxes!). Without the simplification, 28 comparisons would be * used. Either way, the number of "? :" used is 34. If you can * figure how to do this more efficiently, let us know. */ const double m1 = (dos_two <= dos_thr) ? dos_two : dos_thr ; const double M1 = (dos_two <= dos_thr) ? dos_thr : dos_two ; const double m2 = (tre_two <= tre_thr) ? tre_two : tre_thr ; const double M2 = (tre_two <= tre_thr) ? tre_thr : tre_two ; const double m4 = (qua_two <= qua_thr) ? qua_two : qua_thr ; const double M4 = (qua_two <= qua_thr) ? qua_thr : qua_two ; const double m3 = (uno_two <= uno_thr) ? uno_two : uno_thr ; const double M3 = (uno_two <= uno_thr) ? uno_thr : uno_two ; const double m5 = NOHALO_MIN( m1, m2 ); const double M5 = NOHALO_MAX( M1, M2 ); const double m6 = (dos_one <= tre_one) ? dos_one : tre_one ; const double M6 = (dos_one <= tre_one) ? tre_one : dos_one ; const double m7 = (dos_fou <= tre_fou) ? dos_fou : tre_fou ; const double M7 = (dos_fou <= tre_fou) ? tre_fou : dos_fou ; const double m13 = (dos_fou <= qua_fou) ? dos_fou : qua_fou ; const double M13 = (dos_fou <= qua_fou) ? qua_fou : dos_fou ; /* * Because the data comes from Nohalo subdivision, the following two * lines can be replaced by the above, simpler, two lines without * changing the results. * * const double m13 = NOHALO_MIN( m7, qua_fou ); * const double M13 = NOHALO_MAX( M7, qua_fou ); * * This also allows reodering the comparisons to put space between * the computation of a result and its use. */ const double m9 = NOHALO_MIN( m5, m4 ); const double M9 = NOHALO_MAX( M5, M4 ); const double m11 = NOHALO_MIN( m6, qua_one ); const double M11 = NOHALO_MAX( M6, qua_one ); const double m10 = NOHALO_MIN( m6, uno_one ); const double M10 = NOHALO_MAX( M6, uno_one ); const double m8 = NOHALO_MIN( m5, m3 ); const double M8 = NOHALO_MAX( M5, M3 ); const double m12 = NOHALO_MIN( m7, uno_fou ); const double M12 = NOHALO_MAX( M7, uno_fou ); const double min11 = NOHALO_MIN( m9, m13 ); const double max11 = NOHALO_MAX( M9, M13 ); const double min01 = NOHALO_MIN( m9, m11 ); const double max01 = NOHALO_MAX( M9, M11 ); const double min00 = NOHALO_MIN( m8, m10 ); const double max00 = NOHALO_MAX( M8, M10 ); const double min10 = NOHALO_MIN( m8, m12 ); const double max10 = NOHALO_MAX( M8, M12 ); #endif /* * The remainder of the "per channel" computation involves the * computation of: * * --8 conditional moves, * * --8 signs (in which the sign of zero is unimportant), * * --12 minima of two values, * * --8 maxima of two values, * * --8 absolute values, * * for a grand total of 29 minima, 25 maxima, 8 conditional moves, 8 * signs, and 8 absolute values. If everything is done with * conditional moves, "only" 28+8+8+12+8+8=72 flags are involved * (because initial min and max can be computed with one flag). * * The "per channel" part of the computation also involves 107 * arithmetic operations (54 *, 21 +, 42 -). */ /* * Distances to the local min and max: */ const double u11 = tre_thr - min11; const double v11 = max11 - tre_thr; const double u01 = tre_two - min01; const double v01 = max01 - tre_two; const double u00 = dos_two - min00; const double v00 = max00 - dos_two; const double u10 = dos_thr - min10; const double v10 = max10 - dos_thr; /* * Initial values of the derivatives computed with centered * differences. Factors of 1/2 are left out because they are folded * in later: */ const double dble_dzdx00i = dos_thr - dos_one; const double dble_dzdy11i = qua_thr - dos_thr; const double dble_dzdx10i = dos_fou - dos_two; const double dble_dzdy01i = qua_two - dos_two; const double dble_dzdx01i = tre_thr - tre_one; const double dble_dzdy10i = tre_thr - uno_thr; const double dble_dzdx11i = tre_fou - tre_two; const double dble_dzdy00i = tre_two - uno_two; /* * Signs of the derivatives. The upcoming clamping does not change * them (except if the clamping sends a negative derivative to 0, in * which case the sign does not matter anyway). */ const double sign_dzdx00 = NOHALO_SIGN( dble_dzdx00i ); const double sign_dzdx10 = NOHALO_SIGN( dble_dzdx10i ); const double sign_dzdx01 = NOHALO_SIGN( dble_dzdx01i ); const double sign_dzdx11 = NOHALO_SIGN( dble_dzdx11i ); const double sign_dzdy00 = NOHALO_SIGN( dble_dzdy00i ); const double sign_dzdy10 = NOHALO_SIGN( dble_dzdy10i ); const double sign_dzdy01 = NOHALO_SIGN( dble_dzdy01i ); const double sign_dzdy11 = NOHALO_SIGN( dble_dzdy11i ); /* * Initial values of the cross-derivatives. Factors of 1/4 are left * out because folded in later: */ const double quad_d2zdxdy00i = uno_one - uno_thr + dble_dzdx01i; const double quad_d2zdxdy10i = uno_two - uno_fou + dble_dzdx11i; const double quad_d2zdxdy01i = qua_thr - qua_one - dble_dzdx00i; const double quad_d2zdxdy11i = qua_fou - qua_two - dble_dzdx10i; /* * Slope limiters. The key multiplier is 3 but we fold a factor of * 2, hence 6: */ const double dble_slopelimit_00 = 6.0 * NOHALO_MIN( u00, v00 ); const double dble_slopelimit_10 = 6.0 * NOHALO_MIN( u10, v10 ); const double dble_slopelimit_01 = 6.0 * NOHALO_MIN( u01, v01 ); const double dble_slopelimit_11 = 6.0 * NOHALO_MIN( u11, v11 ); /* * Clamped first derivatives: */ const double dble_dzdx00 = ( sign_dzdx00 * dble_dzdx00i <= dble_slopelimit_00 ) ? dble_dzdx00i : sign_dzdx00 * dble_slopelimit_00; const double dble_dzdy00 = ( sign_dzdy00 * dble_dzdy00i <= dble_slopelimit_00 ) ? dble_dzdy00i : sign_dzdy00 * dble_slopelimit_00; const double dble_dzdx10 = ( sign_dzdx10 * dble_dzdx10i <= dble_slopelimit_10 ) ? dble_dzdx10i : sign_dzdx10 * dble_slopelimit_10; const double dble_dzdy10 = ( sign_dzdy10 * dble_dzdy10i <= dble_slopelimit_10 ) ? dble_dzdy10i : sign_dzdy10 * dble_slopelimit_10; const double dble_dzdx01 = ( sign_dzdx01 * dble_dzdx01i <= dble_slopelimit_01 ) ? dble_dzdx01i : sign_dzdx01 * dble_slopelimit_01; const double dble_dzdy01 = ( sign_dzdy01 * dble_dzdy01i <= dble_slopelimit_01 ) ? dble_dzdy01i : sign_dzdy01 * dble_slopelimit_01; const double dble_dzdx11 = ( sign_dzdx11 * dble_dzdx11i <= dble_slopelimit_11 ) ? dble_dzdx11i : sign_dzdx11 * dble_slopelimit_11; const double dble_dzdy11 = ( sign_dzdy11 * dble_dzdy11i <= dble_slopelimit_11 ) ? dble_dzdy11i : sign_dzdy11 * dble_slopelimit_11; /* * Sums and differences of first derivatives: */ const double twelve_sum00 = 6.0 * ( dble_dzdx00 + dble_dzdy00 ); const double twelve_dif00 = 6.0 * ( dble_dzdx00 - dble_dzdy00 ); const double twelve_sum10 = 6.0 * ( dble_dzdx10 + dble_dzdy10 ); const double twelve_dif10 = 6.0 * ( dble_dzdx10 - dble_dzdy10 ); const double twelve_sum01 = 6.0 * ( dble_dzdx01 + dble_dzdy01 ); const double twelve_dif01 = 6.0 * ( dble_dzdx01 - dble_dzdy01 ); const double twelve_sum11 = 6.0 * ( dble_dzdx11 + dble_dzdy11 ); const double twelve_dif11 = 6.0 * ( dble_dzdx11 - dble_dzdy11 ); /* * Absolute values of the sums: */ const double twelve_abs_sum00 = NOHALO_ABS( twelve_sum00 ); const double twelve_abs_sum10 = NOHALO_ABS( twelve_sum10 ); const double twelve_abs_sum01 = NOHALO_ABS( twelve_sum01 ); const double twelve_abs_sum11 = NOHALO_ABS( twelve_sum11 ); /* * Scaled distances to the min: */ const double u00_times_36 = 36.0 * u00; const double u10_times_36 = 36.0 * u10; const double u01_times_36 = 36.0 * u01; const double u11_times_36 = 36.0 * u11; /* * First cross-derivative limiter: */ const double first_limit00 = twelve_abs_sum00 - u00_times_36; const double first_limit10 = twelve_abs_sum10 - u10_times_36; const double first_limit01 = twelve_abs_sum01 - u01_times_36; const double first_limit11 = twelve_abs_sum11 - u11_times_36; const double quad_d2zdxdy00ii = NOHALO_MAX( quad_d2zdxdy00i, first_limit00 ); const double quad_d2zdxdy10ii = NOHALO_MAX( quad_d2zdxdy10i, first_limit10 ); const double quad_d2zdxdy01ii = NOHALO_MAX( quad_d2zdxdy01i, first_limit01 ); const double quad_d2zdxdy11ii = NOHALO_MAX( quad_d2zdxdy11i, first_limit11 ); /* * Scaled distances to the max: */ const double v00_times_36 = 36.0 * v00; const double v10_times_36 = 36.0 * v10; const double v01_times_36 = 36.0 * v01; const double v11_times_36 = 36.0 * v11; /* * Second cross-derivative limiter: */ const double second_limit00 = v00_times_36 - twelve_abs_sum00; const double second_limit10 = v10_times_36 - twelve_abs_sum10; const double second_limit01 = v01_times_36 - twelve_abs_sum01; const double second_limit11 = v11_times_36 - twelve_abs_sum11; const double quad_d2zdxdy00iii = NOHALO_MIN( quad_d2zdxdy00ii, second_limit00 ); const double quad_d2zdxdy10iii = NOHALO_MIN( quad_d2zdxdy10ii, second_limit10 ); const double quad_d2zdxdy01iii = NOHALO_MIN( quad_d2zdxdy01ii, second_limit01 ); const double quad_d2zdxdy11iii = NOHALO_MIN( quad_d2zdxdy11ii, second_limit11 ); /* * Absolute values of the differences: */ const double twelve_abs_dif00 = NOHALO_ABS( twelve_dif00 ); const double twelve_abs_dif10 = NOHALO_ABS( twelve_dif10 ); const double twelve_abs_dif01 = NOHALO_ABS( twelve_dif01 ); const double twelve_abs_dif11 = NOHALO_ABS( twelve_dif11 ); /* * Third cross-derivative limiter: */ const double third_limit00 = twelve_abs_dif00 - v00_times_36; const double third_limit10 = twelve_abs_dif10 - v10_times_36; const double third_limit01 = twelve_abs_dif01 - v01_times_36; const double third_limit11 = twelve_abs_dif11 - v11_times_36; const double quad_d2zdxdy00iiii = NOHALO_MAX( quad_d2zdxdy00iii, third_limit00); const double quad_d2zdxdy10iiii = NOHALO_MAX( quad_d2zdxdy10iii, third_limit10); const double quad_d2zdxdy01iiii = NOHALO_MAX( quad_d2zdxdy01iii, third_limit01); const double quad_d2zdxdy11iiii = NOHALO_MAX( quad_d2zdxdy11iii, third_limit11); /* * Fourth cross-derivative limiter: */ const double fourth_limit00 = u00_times_36 - twelve_abs_dif00; const double fourth_limit10 = u10_times_36 - twelve_abs_dif10; const double fourth_limit01 = u01_times_36 - twelve_abs_dif01; const double fourth_limit11 = u11_times_36 - twelve_abs_dif11; const double quad_d2zdxdy00 = NOHALO_MIN( quad_d2zdxdy00iiii, fourth_limit00); const double quad_d2zdxdy10 = NOHALO_MIN( quad_d2zdxdy10iiii, fourth_limit10); const double quad_d2zdxdy01 = NOHALO_MIN( quad_d2zdxdy01iiii, fourth_limit01); const double quad_d2zdxdy11 = NOHALO_MIN( quad_d2zdxdy11iiii, fourth_limit11); /* * Part of the result which does not need derivatives: */ const double newval1 = c00 * dos_two + c10 * dos_thr + c01 * tre_two + c11 * tre_thr; /* * Twice the part of the result which only needs first derivatives. */ const double newval2 = c00dx * dble_dzdx00 + c10dx * dble_dzdx10 + c01dx * dble_dzdx01 + c11dx * dble_dzdx11 + c00dy * dble_dzdy00 + c10dy * dble_dzdy10 + c01dy * dble_dzdy01 + c11dy * dble_dzdy11; /* * Four times the part of the result which only uses cross * derivatives: */ const double newval3 = c00dxdy * quad_d2zdxdy00 + c10dxdy * quad_d2zdxdy10 + c01dxdy * quad_d2zdxdy01 + c11dxdy * quad_d2zdxdy11; const double newval = newval1 + .5 * newval2 + .25 * newval3; return newval; } /* * Call Nohalo+LBB with a careful type conversion as a parameter. * * It would be nice to do this with templates somehow---for one thing * this would allow code comments!---but we can't figure a clean way * to do it. */ #define NOHALO_CONVERSION( conversion ) \ template static void inline \ nohalo_ ## conversion( void* restrict pout, \ const void* restrict pin, \ const int bands, \ const int lskip, \ const double x_0, \ const double y_0 ) \ { \ T* restrict out = (T *) pout; \ \ const T* restrict in = (T *) pin; \ \ \ const int sign_of_x_0 = 2 * ( x_0 >= 0. ) - 1; \ const int sign_of_y_0 = 2 * ( y_0 >= 0. ) - 1; \ \ \ const int shift_forw_1_pix = sign_of_x_0 * bands; \ const int shift_forw_1_row = sign_of_y_0 * lskip; \ \ const int shift_back_1_pix = -shift_forw_1_pix; \ const int shift_back_1_row = -shift_forw_1_row; \ \ const int shift_back_2_pix = 2 * shift_back_1_pix; \ const int shift_back_2_row = 2 * shift_back_1_row; \ const int shift_forw_2_pix = 2 * shift_forw_1_pix; \ const int shift_forw_2_row = 2 * shift_forw_1_row; \ \ \ const int uno_two_shift = shift_back_1_pix + shift_back_2_row; \ const int uno_thr_shift = shift_back_2_row; \ const int uno_fou_shift = shift_forw_1_pix + shift_back_2_row; \ \ const int dos_one_shift = shift_back_2_pix + shift_back_1_row; \ const int dos_two_shift = shift_back_1_pix + shift_back_1_row; \ const int dos_thr_shift = shift_back_1_row; \ const int dos_fou_shift = shift_forw_1_pix + shift_back_1_row; \ const int dos_fiv_shift = shift_forw_2_pix + shift_back_1_row; \ \ const int tre_one_shift = shift_back_2_pix; \ const int tre_two_shift = shift_back_1_pix; \ const int tre_thr_shift = 0; \ const int tre_fou_shift = shift_forw_1_pix; \ const int tre_fiv_shift = shift_forw_2_pix; \ \ const int qua_one_shift = shift_back_2_pix + shift_forw_1_row; \ const int qua_two_shift = shift_back_1_pix + shift_forw_1_row; \ const int qua_thr_shift = shift_forw_1_row; \ const int qua_fou_shift = shift_forw_1_pix + shift_forw_1_row; \ const int qua_fiv_shift = shift_forw_2_pix + shift_forw_1_row; \ \ const int cin_two_shift = shift_back_1_pix + shift_forw_2_row; \ const int cin_thr_shift = shift_forw_2_row; \ const int cin_fou_shift = shift_forw_1_pix + shift_forw_2_row; \ \ \ const double xp1over2 = ( 2 * sign_of_x_0 ) * x_0; \ const double xm1over2 = xp1over2 - 1.0; \ const double onepx = 0.5 + xp1over2; \ const double onemx = 1.5 - xp1over2; \ const double xp1over2sq = xp1over2 * xp1over2; \ \ const double yp1over2 = ( 2 * sign_of_y_0 ) * y_0; \ const double ym1over2 = yp1over2 - 1.0; \ const double onepy = 0.5 + yp1over2; \ const double onemy = 1.5 - yp1over2; \ const double yp1over2sq = yp1over2 * yp1over2; \ \ const double xm1over2sq = xm1over2 * xm1over2; \ const double ym1over2sq = ym1over2 * ym1over2; \ \ const double twice1px = onepx + onepx; \ const double twice1py = onepy + onepy; \ const double twice1mx = onemx + onemx; \ const double twice1my = onemy + onemy; \ \ const double xm1over2sq_times_ym1over2sq = xm1over2sq * ym1over2sq; \ const double xp1over2sq_times_ym1over2sq = xp1over2sq * ym1over2sq; \ const double xp1over2sq_times_yp1over2sq = xp1over2sq * yp1over2sq; \ const double xm1over2sq_times_yp1over2sq = xm1over2sq * yp1over2sq; \ \ const double four_times_1px_times_1py = twice1px * twice1py; \ const double four_times_1mx_times_1py = twice1mx * twice1py; \ const double twice_xp1over2_times_1py = xp1over2 * twice1py; \ const double twice_xm1over2_times_1py = xm1over2 * twice1py; \ \ const double twice_xm1over2_times_1my = xm1over2 * twice1my; \ const double twice_xp1over2_times_1my = xp1over2 * twice1my; \ const double four_times_1mx_times_1my = twice1mx * twice1my; \ const double four_times_1px_times_1my = twice1px * twice1my; \ \ const double twice_1px_times_ym1over2 = twice1px * ym1over2; \ const double twice_1mx_times_ym1over2 = twice1mx * ym1over2; \ const double xp1over2_times_ym1over2 = xp1over2 * ym1over2; \ const double xm1over2_times_ym1over2 = xm1over2 * ym1over2; \ \ const double xm1over2_times_yp1over2 = xm1over2 * yp1over2; \ const double xp1over2_times_yp1over2 = xp1over2 * yp1over2; \ const double twice_1mx_times_yp1over2 = twice1mx * yp1over2; \ const double twice_1px_times_yp1over2 = twice1px * yp1over2; \ \ \ const double c00 = \ four_times_1px_times_1py * xm1over2sq_times_ym1over2sq; \ const double c00dx = \ twice_xp1over2_times_1py * xm1over2sq_times_ym1over2sq; \ const double c00dy = \ twice_1px_times_yp1over2 * xm1over2sq_times_ym1over2sq; \ const double c00dxdy = \ xp1over2_times_yp1over2 * xm1over2sq_times_ym1over2sq; \ \ const double c10 = \ four_times_1mx_times_1py * xp1over2sq_times_ym1over2sq; \ const double c10dx = \ twice_xm1over2_times_1py * xp1over2sq_times_ym1over2sq; \ const double c10dy = \ twice_1mx_times_yp1over2 * xp1over2sq_times_ym1over2sq; \ const double c10dxdy = \ xm1over2_times_yp1over2 * xp1over2sq_times_ym1over2sq; \ \ const double c01 = \ four_times_1px_times_1my * xm1over2sq_times_yp1over2sq; \ const double c01dx = \ twice_xp1over2_times_1my * xm1over2sq_times_yp1over2sq; \ const double c01dy = \ twice_1px_times_ym1over2 * xm1over2sq_times_yp1over2sq; \ const double c01dxdy = \ xp1over2_times_ym1over2 * xm1over2sq_times_yp1over2sq; \ \ const double c11 = \ four_times_1mx_times_1my * xp1over2sq_times_yp1over2sq; \ const double c11dx = \ twice_xm1over2_times_1my * xp1over2sq_times_yp1over2sq; \ const double c11dy = \ twice_1mx_times_ym1over2 * xp1over2sq_times_yp1over2sq; \ const double c11dxdy = \ xm1over2_times_ym1over2 * xp1over2sq_times_yp1over2sq; \ \ \ int band = bands; \ \ \ do \ { \ double uno_one, uno_two, uno_thr, uno_fou; \ double dos_one, dos_two, dos_thr, dos_fou; \ double tre_one, tre_two, tre_thr, tre_fou; \ double qua_one, qua_two, qua_thr, qua_fou; \ \ nohalo_subdivision( in[ uno_two_shift ], \ in[ uno_thr_shift ], \ in[ uno_fou_shift ], \ in[ dos_one_shift ], \ in[ dos_two_shift ], \ in[ dos_thr_shift ], \ in[ dos_fou_shift ], \ in[ dos_fiv_shift ], \ in[ tre_one_shift ], \ in[ tre_two_shift ], \ in[ tre_thr_shift ], \ in[ tre_fou_shift ], \ in[ tre_fiv_shift ], \ in[ qua_one_shift ], \ in[ qua_two_shift ], \ in[ qua_thr_shift ], \ in[ qua_fou_shift ], \ in[ qua_fiv_shift ], \ in[ cin_two_shift ], \ in[ cin_thr_shift ], \ in[ cin_fou_shift ], \ &uno_one, \ &uno_two, \ &uno_thr, \ &uno_fou, \ &dos_one, \ &dos_two, \ &dos_thr, \ &dos_fou, \ &tre_one, \ &tre_two, \ &tre_thr, \ &tre_fou, \ &qua_one, \ &qua_two, \ &qua_thr, \ &qua_fou ); \ \ const double double_result = \ lbbicubic( c00, \ c10, \ c01, \ c11, \ c00dx, \ c10dx, \ c01dx, \ c11dx, \ c00dy, \ c10dy, \ c01dy, \ c11dy, \ c00dxdy, \ c10dxdy, \ c01dxdy, \ c11dxdy, \ uno_one, \ uno_two, \ uno_thr, \ uno_fou, \ dos_one, \ dos_two, \ dos_thr, \ dos_fou, \ tre_one, \ tre_two, \ tre_thr, \ tre_fou, \ qua_one, \ qua_two, \ qua_thr, \ qua_fou ); \ \ { \ const T result = to_ ## conversion( double_result ); \ in++; \ *out++ = result; \ } \ \ } while (--band); \ } NOHALO_CONVERSION( fptypes ) NOHALO_CONVERSION( withsign ) NOHALO_CONVERSION( nosign ) #define CALL( T, conversion ) \ nohalo_ ## conversion( out, \ p, \ bands, \ lskip, \ relative_x, \ relative_y ); /* * We need C linkage: */ extern "C" { G_DEFINE_TYPE( VipsInterpolateNohalo, vips_interpolate_nohalo, VIPS_TYPE_INTERPOLATE ); } static void vips_interpolate_nohalo_interpolate( VipsInterpolate* restrict interpolate, void* restrict out, VipsRegion* restrict in, double absolute_x, double absolute_y ) { /* absolute_x and absolute_y are always >= 2.0 (see double-check assert * below), so we don't need floor(). * * It's 2 not 0 since we ask for a window_offset of 2 at the bottom. */ const int ix = (int) (absolute_x + 0.5); const int iy = (int) (absolute_y + 0.5); /* * Move the pointer to (the first band of) the top/left pixel of the * 2x2 group of pixel centers which contains the sampling location * in its convex hull: */ const VipsPel* restrict p = VIPS_REGION_ADDR( in, ix, iy ); const double relative_x = absolute_x - ix; const double relative_y = absolute_y - iy; /* * VIPS versions of Nicolas's pixel addressing values. */ const int lskip = VIPS_REGION_LSKIP( in ) / VIPS_IMAGE_SIZEOF_ELEMENT( in->im ); /* * Double the bands for complex images to account for the real and * imaginary parts being computed independently: */ const int actual_bands = in->im->Bands; const int bands = vips_band_format_iscomplex( in->im->BandFmt ) ? 2 * actual_bands : actual_bands; g_assert( ix - 2 >= in->valid.left ); g_assert( iy - 2 >= in->valid.top ); g_assert( ix + 2 <= VIPS_RECT_RIGHT( &in->valid ) ); g_assert( iy + 2 <= VIPS_RECT_BOTTOM( &in->valid ) ); /* Confirm that absolute_x and absolute_y are >= 2, see above. */ g_assert( absolute_x >= 2.0 ); g_assert( absolute_y >= 2.0 ); switch( in->im->BandFmt ) { case VIPS_FORMAT_UCHAR: CALL( unsigned char, nosign ); break; case VIPS_FORMAT_CHAR: CALL( signed char, withsign ); break; case VIPS_FORMAT_USHORT: CALL( unsigned short, nosign ); break; case VIPS_FORMAT_SHORT: CALL( signed short, withsign ); break; case VIPS_FORMAT_UINT: CALL( unsigned int, nosign ); break; case VIPS_FORMAT_INT: CALL( signed int, withsign ); break; /* * Complex images are handled by doubling of bands. */ case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: CALL( float, fptypes ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: CALL( double, fptypes ); break; default: g_assert( 0 ); break; } } static void vips_interpolate_nohalo_class_init( VipsInterpolateNohaloClass *klass ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( klass ); VipsInterpolateClass *interpolate_class = VIPS_INTERPOLATE_CLASS( klass ); object_class->nickname = "nohalo"; object_class->description = _( "edge sharpening resampler with halo reduction" ); interpolate_class->interpolate = vips_interpolate_nohalo_interpolate; interpolate_class->window_size = 6; interpolate_class->window_offset = 2; } static void vips_interpolate_nohalo_init( VipsInterpolateNohalo *nohalo ) { } libvips-8.9.1/libvips/resample/presample.h000066400000000000000000000042171361153320700206270ustar00rootroot00000000000000/* base class for all resample operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PRESAMPLE_H #define VIPS_PRESAMPLE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_RESAMPLE (vips_resample_get_type()) #define VIPS_RESAMPLE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_RESAMPLE, VipsResample )) #define VIPS_RESAMPLE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_RESAMPLE, VipsResampleClass)) #define VIPS_IS_RESAMPLE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_RESAMPLE )) #define VIPS_IS_RESAMPLE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_RESAMPLE )) #define VIPS_RESAMPLE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_RESAMPLE, VipsResampleClass )) typedef struct _VipsResample { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipsResample; typedef struct _VipsResampleClass { VipsOperationClass parent_class; } VipsResampleClass; GType vips_resample_get_type( void ); /* The max size of the vector we use. */ #define MAX_POINT (2000) int vips_reduce_get_points( VipsKernel kernel, double shrink ); void vips_reduce_make_mask( double *c, VipsKernel kernel, double shrink, double x ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PRESAMPLE_H*/ libvips-8.9.1/libvips/resample/quadratic.c000066400000000000000000000211351361153320700206050ustar00rootroot00000000000000/* Resample an image with a quadratic transform. * * Original code from Reimar Lenz, * Adapted by Lars Raffelt for many bands, * VIPSified by JC ... other numeric types, partial output * * 7/11/12 * - rewritten again for vips8 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define DEBUG_GEOMETRY */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "presample.h" /* The transform we compute: x',y' = coordinates of srcim x,y = coordinates of dstim a .. l = coefficients x = x' + a : order 0 image shift only + b x' + c y' : order 1 + affine transf. + d x' y' : order 2 + bilinear transf. + e x' x' + f y' y' : order 3 + quadratic transf. y = y' + g + h y' + i x' + j y' x' + k y' y' + l x' x' input matrix: a g -- b h c i -- d j -- e k f l matrix height may be 1, 3, 4, 6 */ typedef struct _VipsQuadratic { VipsResample parent_instance; VipsImage *coeff; VipsInterpolate *interpolate; /* The coeff array argment, made into an in-memory double. */ VipsImage *mat; /* Transform order. */ int order; } VipsQuadratic; typedef VipsResampleClass VipsQuadraticClass; G_DEFINE_TYPE( VipsQuadratic, vips_quadratic, VIPS_TYPE_RESAMPLE ); static void vips_quadratic_dispose( GObject *gobject ) { VipsQuadratic *quadratic = (VipsQuadratic *) gobject; VIPS_UNREF( quadratic->mat ); G_OBJECT_CLASS( vips_quadratic_parent_class )->dispose( gobject ); } static int vips_quadratic_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) vseq; VipsQuadratic *quadratic = (VipsQuadratic *) b; VipsResample *resample = VIPS_RESAMPLE( quadratic ); VipsInterpolateMethod interpolate_fn = vips_interpolate_get_method( quadratic->interpolate ); /* @in is the enlarged image (borders on, after vips_embed()). Use * @resample->in for the original, not-expanded image. */ const VipsImage *in = (VipsImage *) a; const int ps = VIPS_IMAGE_SIZEOF_PEL( in ); double *vec = VIPS_MATRIX( quadratic->mat, 0, 0 ); int clip_width = resample->in->Xsize; int clip_height = resample->in->Ysize; int xlow = or->valid.left; int ylow = or->valid.top; int xhigh = VIPS_RECT_RIGHT( &or->valid ); int yhigh = VIPS_RECT_BOTTOM( &or->valid ); VipsPel *q; int xo, yo; /* output coordinates, dstimage */ int z; double fxi, fyi; /* input coordinates */ double dx, dy; /* xo derivative of input coord. */ double ddx, ddy; /* 2nd xo derivative of input coord. */ VipsRect image; image.left = 0; image.top = 0; image.width = in->Xsize; image.height = in->Ysize; if( vips_region_image( ir, &image ) ) return( -1 ); for( yo = ylow; yo < yhigh; yo++ ) { fxi = 0.0; fyi = 0.0; dx = 0.0; dy = 0.0; ddx = 0.0; ddy = 0.0; switch( quadratic->order ) { case 3: fxi += vec[10] * yo * yo + vec[8] * xlow * xlow; fyi += vec[11] * yo * yo + vec[9] * xlow * xlow; dx += vec[8]; ddx += vec[8] * 2.0; dy += vec[9]; ddy += vec[9] * 2.0; case 2: fxi += vec[6] * xlow * yo; fyi += vec[7] * xlow * yo; dx += vec[6] * yo; dy += vec[7] * yo; case 1: fxi += vec[4] * yo + vec[2] * xlow; fyi += vec[5] * yo + vec[3] * xlow; dx += vec[2]; dy += vec[3]; case 0: fxi += vec[0]; fyi += vec[1]; break; default: g_assert_not_reached(); } printf( "dx = %g, dy = %g\n", dx, dy ); q = VIPS_REGION_ADDR( or, xlow, yo ); for( xo = xlow; xo < xhigh; xo++ ) { int xi, yi; xi = fxi; yi = fyi; /* Clipping! */ if( xi < 0 || yi < 0 || xi >= clip_width || yi >= clip_height ) { for( z = 0; z < ps; z++ ) q[z] = 0; } else interpolate_fn( quadratic->interpolate, q, ir, fxi, fyi ); q += ps; fxi += dx; fyi += dy; if( quadratic->order > 2 ) { dx += ddx; dy += ddy; } } } return( 0 ); } static int vips_quadratic_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsQuadratic *quadratic = (VipsQuadratic *) object; VipsInterpolate *interpolate; int window_size; int window_offset; VipsImage *in; VipsImage *t; if( VIPS_OBJECT_CLASS( vips_quadratic_parent_class )->build( object ) ) return( -1 ); /* We have the whole of the input in memory, so we can generate any * output. */ if( vips_image_pipelinev( resample->out, VIPS_DEMAND_STYLE_ANY, resample->in, NULL ) ) return( -1 ); in = resample->in; if( vips_check_uncoded( class->nickname, in ) || vips_check_noncomplex( class->nickname, in ) || vips_check_matrix( class->nickname, quadratic->coeff, &quadratic->mat ) ) return( -1 ); if( quadratic->mat->Xsize != 2 ) { vips_error( class->nickname, "%s", _( "coefficient matrix must have width 2" ) ); return( -1 ); } switch( quadratic->mat->Ysize ) { case 1: quadratic->order = 0; break; case 3: quadratic->order = 1; break; case 4: quadratic->order = 2; break; case 6: quadratic->order = 3; break; default: vips_error( class->nickname, "%s", _( "coefficient matrix must have height " "1, 3, 4 or 6" ) ); return( -1 ); } if( !vips_object_argument_isset( object, "interpolator" ) ) quadratic->interpolate = vips_interpolate_new( "bilinear" ); interpolate = quadratic->interpolate; window_size = vips_interpolate_get_window_size( interpolate ); window_offset = vips_interpolate_get_window_offset( interpolate ); /* Enlarge the input image. */ if( vips_embed( in, &t, window_offset, window_offset, in->Xsize + window_size, in->Ysize + window_size, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); vips_object_local( object, t ); in = t; /* We need random access to our input. */ if( !(t = vips_image_copy_memory( in )) ) return( -1 ); vips_object_local( object, t ); in = t; if( vips_image_generate( resample->out, vips_start_one, vips_quadratic_gen, vips_stop_one, in, quadratic ) ) return( -1 ); return( 0 ); } static void vips_quadratic_class_init( VipsQuadraticClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_quadratic_class_init\n" ); gobject_class->dispose = vips_quadratic_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "quadratic"; vobject_class->description = _( "resample an image with a quadratic transform" ); vobject_class->build = vips_quadratic_build; VIPS_ARG_IMAGE( class, "coeff", 8, _( "Coeff" ), _( "Coefficient matrix" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsQuadratic, coeff ) ); VIPS_ARG_INTERPOLATE( class, "interpolate", 9, _( "Interpolate" ), _( "Interpolate values with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsQuadratic, interpolate ) ); } static void vips_quadratic_init( VipsQuadratic *quadratic ) { } /** * vips_quadratic: (method) * @in: input image * @out: (out): output image * @coeff: horizontal quadratic * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @interpolate: use this interpolator (default bilinear) * * This operation is unfinished and unusable, sorry. * * See also: vips_affine(). * * Returns: 0 on success, -1 on error */ int vips_quadratic( VipsImage *in, VipsImage **out, VipsImage *coeff, ... ) { va_list ap; int result; va_start( ap, coeff ); result = vips_call_split( "quadratic", ap, in, out, coeff ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/resample/reduce.c000066400000000000000000000173401361153320700201020ustar00rootroot00000000000000/* 2D reduce ... call reduceh and reducev * * 27/1/16 * - from shrink.c * 15/8/16 * - rename xshrink -> hshrink for greater consistency * 9/9/16 * - add @centre option */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "presample.h" /** * VipsKernel: * @VIPS_KERNEL_NEAREST: The nearest pixel to the point. * @VIPS_KERNEL_LINEAR: Convolve with a triangle filter. * @VIPS_KERNEL_CUBIC: Convolve with a cubic filter. * @VIPS_KERNEL_LANCZOS2: Convolve with a two-lobe Lanczos kernel. * @VIPS_KERNEL_LANCZOS3: Convolve with a three-lobe Lanczos kernel. * * The resampling kernels vips supports. See vips_reduce(), for example. */ /* gtk-doc does not see comments in C++ files, so we have these docs here. */ /** * vips_reducev: (method) * @in: input image * @out: (out): output image * @vshrink: vertical reduce * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @kernel: #VipsKernel to use to interpolate (default: lanczos3) * * @centre: %gboolean use centre rather than corner sampling convention * * Reduce @in vertically by a float factor. The pixels in @out are * interpolated with a 1D mask generated by @kernel. * * Set @centre to use centre rather than corner sampling convention. Centre * convention can be useful to match the behaviour of other systems. * * This is a very low-level operation: see vips_resize() for a more * convenient way to resize images. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_shrink(), vips_resize(), vips_affine(). * * Returns: 0 on success, -1 on error */ /** * vips_reduceh: (method) * @in: input image * @out: (out): output image * @hshrink: horizontal reduce * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @kernel: #VipsKernel to use to interpolate (default: lanczos3) * * @centre: %gboolean use centre rather than corner sampling convention * * Reduce @in horizontally by a float factor. The pixels in @out are * interpolated with a 1D mask generated by @kernel. * * Set @centre to use centre rather than corner sampling convention. Centre * convention can be useful to match the behaviour of other systems. * * This is a very low-level operation: see vips_resize() for a more * convenient way to resize images. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_shrink(), vips_resize(), vips_affine(). * * Returns: 0 on success, -1 on error */ typedef struct _VipsReduce { VipsResample parent_instance; double hshrink; /* Shrink factors */ double vshrink; /* The thing we use to make the kernel. */ VipsKernel kernel; /* Use centre rather than corner sampling convention. */ gboolean centre; } VipsReduce; typedef VipsResampleClass VipsReduceClass; G_DEFINE_TYPE( VipsReduce, vips_reduce, VIPS_TYPE_RESAMPLE ); static int vips_reduce_build( VipsObject *object ) { VipsResample *resample = VIPS_RESAMPLE( object ); VipsReduce *reduce = (VipsReduce *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); if( VIPS_OBJECT_CLASS( vips_reduce_parent_class )->build( object ) ) return( -1 ); if( vips_reducev( resample->in, &t[0], reduce->vshrink, "kernel", reduce->kernel, "centre", reduce->centre, NULL ) || vips_reduceh( t[0], &t[1], reduce->hshrink, "kernel", reduce->kernel, "centre", reduce->centre, NULL ) || vips_image_write( t[1], resample->out ) ) return( -1 ); return( 0 ); } static void vips_reduce_class_init( VipsReduceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_reduce_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "reduce"; vobject_class->description = _( "reduce an image" ); vobject_class->build = vips_reduce_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_DOUBLE( class, "hshrink", 8, _( "Hshrink" ), _( "Horizontal shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsReduce, hshrink ), 1.0, 1000000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "vshrink", 9, _( "Vshrink" ), _( "Vertical shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsReduce, vshrink ), 1.0, 1000000.0, 1.0 ); VIPS_ARG_ENUM( class, "kernel", 3, _( "Kernel" ), _( "Resampling kernel" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsReduce, kernel ), VIPS_TYPE_KERNEL, VIPS_KERNEL_LANCZOS3 ); VIPS_ARG_BOOL( class, "centre", 7, _( "Centre" ), _( "Use centre sampling convention" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsReduce, centre ), FALSE ); /* The old names .. now use h and v everywhere. */ VIPS_ARG_DOUBLE( class, "xshrink", 8, _( "Xshrink" ), _( "Horizontal shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsReduce, hshrink ), 1.0, 1000000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "yshrink", 9, _( "Yshrink" ), _( "Vertical shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsReduce, vshrink ), 1.0, 1000000.0, 1.0 ); } static void vips_reduce_init( VipsReduce *reduce ) { reduce->kernel = VIPS_KERNEL_LANCZOS3; } /** * vips_reduce: (method) * @in: input image * @out: (out): output image * @hshrink: horizontal shrink * @vshrink: vertical shrink * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @kernel: #VipsKernel to use to interpolate (default: lanczos3) * * @centre: %gboolean use centre rather than corner sampling convention * * Reduce @in by a pair of factors with a pair of 1D kernels. This * will not work well for shrink factors greater than three. * * Set @centre to use centre rather than corner sampling convention. Centre * convention can be useful to match the behaviour of other systems. * * This is a very low-level operation: see vips_resize() for a more * convenient way to resize images. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_resize(), vips_affine(). * * Returns: 0 on success, -1 on error */ int vips_reduce( VipsImage *in, VipsImage **out, double hshrink, double vshrink, ... ) { va_list ap; int result; va_start( ap, vshrink ); result = vips_call_split( "reduce", ap, in, out, hshrink, vshrink ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/resample/reduceh.cpp000066400000000000000000000350201361153320700206050ustar00rootroot00000000000000/* horizontal reduce by a float factor with a kernel * * 29/1/16 * - from shrinkh.c * 10/3/16 * - add other kernels * 15/8/16 * - rename xshrink as hshrink for consistency * 9/9/16 * - add @centre option */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "presample.h" #include "templates.h" typedef struct _VipsReduceh { VipsResample parent_instance; double hshrink; /* Reduce factor */ /* The thing we use to make the kernel. */ VipsKernel kernel; /* Use centre rather than corner sampling convention. */ gboolean centre; /* Number of points in kernel. */ int n_point; /* Precalculated interpolation matrices. int (used for pel * sizes up to short), and double (for all others). We go to * scale + 1 so we can round-to-nearest safely. */ int *matrixi[VIPS_TRANSFORM_SCALE + 1]; double *matrixf[VIPS_TRANSFORM_SCALE + 1]; } VipsReduceh; typedef VipsResampleClass VipsReducehClass; /* We need C linkage for this. */ extern "C" { G_DEFINE_TYPE( VipsReduceh, vips_reduceh, VIPS_TYPE_RESAMPLE ); } /* Get n points. @shrink is the shrink factor, so 2 for a 50% reduction. */ int vips_reduce_get_points( VipsKernel kernel, double shrink ) { switch( kernel ) { case VIPS_KERNEL_NEAREST: return( 1 ); case VIPS_KERNEL_LINEAR: return( rint( 2 * shrink ) + 1 ); case VIPS_KERNEL_CUBIC: case VIPS_KERNEL_MITCHELL: return( rint( 4 * shrink ) + 1 ); case VIPS_KERNEL_LANCZOS2: /* Needs to be in sync with calculate_coefficients_lanczos(). */ return( rint( 2 * 2 * shrink ) + 1 ); case VIPS_KERNEL_LANCZOS3: return( rint( 2 * 3 * shrink ) + 1 ); default: g_assert_not_reached(); return( 0 ); } } /* Calculate a mask element. */ void vips_reduce_make_mask( double *c, VipsKernel kernel, double shrink, double x ) { switch( kernel ) { case VIPS_KERNEL_NEAREST: c[0] = 1.0; break; case VIPS_KERNEL_LINEAR: calculate_coefficients_triangle( c, shrink, x ); break; case VIPS_KERNEL_CUBIC: /* Catmull-Rom. */ calculate_coefficients_cubic( c, shrink, x, 0.0, 0.5 ); break; case VIPS_KERNEL_MITCHELL: calculate_coefficients_cubic( c, shrink, x, 1.0 / 3.0, 1.0 / 3.0 ); break; case VIPS_KERNEL_LANCZOS2: calculate_coefficients_lanczos( c, 2, shrink, x ); break; case VIPS_KERNEL_LANCZOS3: calculate_coefficients_lanczos( c, 3, shrink, x ); break; default: g_assert_not_reached(); break; } } template static void inline reduceh_unsigned_int_tab( VipsReduceh *reduceh, VipsPel *pout, const VipsPel *pin, const int bands, const int * restrict cx ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reduceh->n_point; for( int z = 0; z < bands; z++ ) { int sum; sum = reduce_sum( in + z, bands, cx, n ); sum = unsigned_fixed_round( sum ); sum = VIPS_CLIP( 0, sum, max_value ); out[z] = sum; } } template static void inline reduceh_signed_int_tab( VipsReduceh *reduceh, VipsPel *pout, const VipsPel *pin, const int bands, const int * restrict cx ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reduceh->n_point; for( int z = 0; z < bands; z++ ) { int sum; sum = reduce_sum( in, bands, cx, n ); sum = signed_fixed_round( sum ); sum = VIPS_CLIP( min_value, sum, max_value ); out[z] = sum; in += 1; } } /* Floating-point version. */ template static void inline reduceh_float_tab( VipsReduceh *reduceh, VipsPel *pout, const VipsPel *pin, const int bands, const double *cx ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reduceh->n_point; for( int z = 0; z < bands; z++ ) { out[z] = reduce_sum( in, bands, cx, n ); in += 1; } } /* 32-bit int output needs a double intermediate. */ template static void inline reduceh_unsigned_int32_tab( VipsReduceh *reduceh, VipsPel *pout, const VipsPel *pin, const int bands, const double * restrict cx ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reduceh->n_point; for( int z = 0; z < bands; z++ ) { double sum; sum = reduce_sum( in, bands, cx, n ); out[z] = VIPS_CLIP( 0, sum, max_value ); in += 1; } } template static void inline reduceh_signed_int32_tab( VipsReduceh *reduceh, VipsPel *pout, const VipsPel *pin, const int bands, const double * restrict cx ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reduceh->n_point; for( int z = 0; z < bands; z++ ) { double sum; sum = reduce_sum( in, bands, cx, n ); sum = VIPS_CLIP( min_value, sum, max_value ); out[z] = sum; in += 1; } } /* Ultra-high-quality version for double images. */ template static void inline reduceh_notab( VipsReduceh *reduceh, VipsPel *pout, const VipsPel *pin, const int bands, double x ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reduceh->n_point; double cx[MAX_POINT]; vips_reduce_make_mask( cx, reduceh->kernel, reduceh->hshrink, x ); for( int z = 0; z < bands; z++ ) { out[z] = reduce_sum( in, bands, cx, n ); in += 1; } } /* Tried a vector path (see reducev) but it was slower. The vectors for * horizontal reduce are just too small to get a useful speedup. */ static int vips_reduceh_gen( VipsRegion *out_region, void *seq, void *a, void *b, gboolean *stop ) { VipsImage *in = (VipsImage *) a; VipsReduceh *reduceh = (VipsReduceh *) b; const int ps = VIPS_IMAGE_SIZEOF_PEL( in ); VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &out_region->valid; /* Double bands for complex. */ const int bands = in->Bands * (vips_band_format_iscomplex( in->BandFmt ) ? 2 : 1); VipsRect s; #ifdef DEBUG printf( "vips_reduceh_gen: generating %d x %d at %d x %d\n", r->width, r->height, r->left, r->top ); #endif /*DEBUG*/ s.left = r->left * reduceh->hshrink; s.top = r->top; s.width = r->width * reduceh->hshrink + reduceh->n_point; s.height = r->height; if( reduceh->centre ) s.width += 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); VIPS_GATE_START( "vips_reduceh_gen: work" ); for( int y = 0; y < r->height; y ++ ) { VipsPel *p0; VipsPel *q; double X; q = VIPS_REGION_ADDR( out_region, r->left, r->top + y ); X = r->left * reduceh->hshrink; if( reduceh->centre ) X += 0.5; /* We want p0 to be the start (ie. x == 0) of the input * scanline we are reading from. We can then calculate the p we * need for each pixel with a single mul and avoid calling ADDR * for each pixel. * * We can't get p0 directly with ADDR since it could be outside * valid, so get the leftmost pixel in valid and subtract a * bit. */ p0 = VIPS_REGION_ADDR( ir, ir->valid.left, r->top + y ) - ir->valid.left * ps; for( int x = 0; x < r->width; x++ ) { int ix = (int) X; VipsPel *p = p0 + ix * ps; const int sx = X * VIPS_TRANSFORM_SCALE * 2; const int six = sx & (VIPS_TRANSFORM_SCALE * 2 - 1); const int tx = (six + 1) >> 1; const int *cxi = reduceh->matrixi[tx]; const double *cxf = reduceh->matrixf[tx]; switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: reduceh_unsigned_int_tab ( reduceh, q, p, bands, cxi ); break; case VIPS_FORMAT_CHAR: reduceh_signed_int_tab ( reduceh, q, p, bands, cxi ); break; case VIPS_FORMAT_USHORT: reduceh_unsigned_int_tab ( reduceh, q, p, bands, cxi ); break; case VIPS_FORMAT_SHORT: reduceh_signed_int_tab ( reduceh, q, p, bands, cxi ); break; case VIPS_FORMAT_UINT: reduceh_unsigned_int32_tab ( reduceh, q, p, bands, cxf ); break; case VIPS_FORMAT_INT: reduceh_signed_int32_tab ( reduceh, q, p, bands, cxf ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: reduceh_float_tab( reduceh, q, p, bands, cxf ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: reduceh_notab( reduceh, q, p, bands, X - ix ); break; default: g_assert_not_reached(); break; } X += reduceh->hshrink; q += ps; } } VIPS_GATE_STOP( "vips_reduceh_gen: work" ); VIPS_COUNT_PIXELS( out_region, "vips_reduceh_gen" ); return( 0 ); } static int vips_reduceh_build( VipsObject *object ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsReduceh *reduceh = (VipsReduceh *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; int width; if( VIPS_OBJECT_CLASS( vips_reduceh_parent_class )->build( object ) ) return( -1 ); in = resample->in; if( reduceh->hshrink < 1 ) { vips_error( object_class->nickname, "%s", _( "reduce factors should be >= 1" ) ); return( -1 ); } if( reduceh->hshrink == 1 ) return( vips_image_write( in, resample->out ) ); /* Build the tables of pre-computed coefficients. */ reduceh->n_point = vips_reduce_get_points( reduceh->kernel, reduceh->hshrink ); g_info( "reduceh: %d point mask", reduceh->n_point ); if( reduceh->n_point > MAX_POINT ) { vips_error( object_class->nickname, "%s", _( "reduce factor too large" ) ); return( -1 ); } for( int x = 0; x < VIPS_TRANSFORM_SCALE + 1; x++ ) { reduceh->matrixf[x] = VIPS_ARRAY( object, reduceh->n_point, double ); reduceh->matrixi[x] = VIPS_ARRAY( object, reduceh->n_point, int ); if( !reduceh->matrixf[x] || !reduceh->matrixi[x] ) return( -1 ); vips_reduce_make_mask( reduceh->matrixf[x], reduceh->kernel, reduceh->hshrink, (float) x / VIPS_TRANSFORM_SCALE ); for( int i = 0; i < reduceh->n_point; i++ ) reduceh->matrixi[x][i] = reduceh->matrixf[x][i] * VIPS_INTERPOLATE_SCALE; #ifdef DEBUG printf( "vips_reduceh_build: mask %d\n ", x ); for( int i = 0; i < reduceh->n_point; i++ ) printf( "%d ", reduceh->matrixi[x][i] ); printf( "\n" ); #endif /*DEBUG*/ } /* Unpack for processing. */ if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* Add new pixels around the input so we can interpolate at the edges. * In centre mode, we read 0.5 pixels more to the right, so we must * enlarge a little further. */ width = in->Xsize + reduceh->n_point - 1; if( reduceh->centre ) width += 1; if( vips_embed( in, &t[1], reduceh->n_point / 2 - 1, 0, width, in->Ysize, "extend", VIPS_EXTEND_COPY, (void *) NULL ) ) return( -1 ); in = t[1]; if( vips_image_pipelinev( resample->out, VIPS_DEMAND_STYLE_THINSTRIP, in, (void *) NULL ) ) return( -1 ); /* Size output. We need to always round to nearest, so round(), not * rint(). * * Don't change xres/yres, leave that to the application layer. For * example, vipsthumbnail knows the true reduce factor (including the * fractional part), we just see the integer part here. */ resample->out->Xsize = VIPS_ROUND_UINT( resample->in->Xsize / reduceh->hshrink ); if( resample->out->Xsize <= 0 ) { vips_error( object_class->nickname, "%s", _( "image has shrunk to nothing" ) ); return( -1 ); } #ifdef DEBUG printf( "vips_reduceh_build: reducing %d x %d image to %d x %d\n", in->Xsize, in->Ysize, resample->out->Xsize, resample->out->Ysize ); #endif /*DEBUG*/ if( vips_image_generate( resample->out, vips_start_one, vips_reduceh_gen, vips_stop_one, in, reduceh ) ) return( -1 ); vips_reorder_margin_hint( resample->out, reduceh->n_point ); return( 0 ); } static void vips_reduceh_class_init( VipsReducehClass *reduceh_class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( reduceh_class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( reduceh_class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( reduceh_class ); VIPS_DEBUG_MSG( "vips_reduceh_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "reduceh"; vobject_class->description = _( "shrink an image horizontally" ); vobject_class->build = vips_reduceh_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_DOUBLE( reduceh_class, "hshrink", 3, _( "Hshrink" ), _( "Horizontal shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsReduceh, hshrink ), 1, 1000000, 1 ); VIPS_ARG_ENUM( reduceh_class, "kernel", 3, _( "Kernel" ), _( "Resampling kernel" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsReduceh, kernel ), VIPS_TYPE_KERNEL, VIPS_KERNEL_LANCZOS3 ); VIPS_ARG_BOOL( reduceh_class, "centre", 7, _( "Centre" ), _( "Use centre sampling convention" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsReduceh, centre ), FALSE ); /* Old name. */ VIPS_ARG_DOUBLE( reduceh_class, "xshrink", 3, _( "Xshrink" ), _( "Horizontal shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsReduceh, hshrink ), 1, 1000000, 1 ); } static void vips_reduceh_init( VipsReduceh *reduceh ) { reduceh->kernel = VIPS_KERNEL_LANCZOS3; } /* See reduce.c for the doc comment. */ int vips_reduceh( VipsImage *in, VipsImage **out, double hshrink, ... ) { va_list ap; int result; va_start( ap, hshrink ); result = vips_call_split( "reduceh", ap, in, out, hshrink ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/resample/reducev.cpp000066400000000000000000000604021361153320700206250ustar00rootroot00000000000000/* vertical reduce by a float factor with a kernel * * 29/1/16 * - from shrinkv.c * 10/3/16 * - add other kernels * 21/3/16 * - add vector path * 2/4/16 * - better int mask creation ... we now adjust the scale to keep the sum * equal to the target scale * 15/6/16 * - better accuracy with smarter multiplication * 15/8/16 * - rename yshrink as vshrink for consistency * 9/9/16 * - add @centre option * 7/3/17 * - add a seq line cache */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_PIXELS #define DEBUG_COMPILE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "presample.h" #include "templates.h" /* We can't run more than this many passes. Larger than this and we * fall back to C. */ #define MAX_PASS (10) /* The number of params we pass for coeffs. Orc limits this rather. */ #define MAX_PARAM (8) /* A pass with a vector. */ typedef struct { int first; /* The index of the first mask coff we use */ int last; /* The index of the last mask coff we use */ int r; /* Set previous result in this var */ int d2; /* Write new temp result here */ int p[MAX_PARAM]; /* Mask coeffs passed in these */ int n_param; /* The code we generate for this section of this mask. */ VipsVector *vector; } Pass; typedef struct _VipsReducev { VipsResample parent_instance; double vshrink; /* Shrink factor */ /* The thing we use to make the kernel. */ VipsKernel kernel; /* Use centre rather than corner sampling convention. */ gboolean centre; /* Number of points in kernel. */ int n_point; /* Precalculated interpolation matrices. int (used for pel * sizes up to short), and double (for all others). We go to * scale + 1 so we can round-to-nearest safely. */ int *matrixi[VIPS_TRANSFORM_SCALE + 1]; double *matrixf[VIPS_TRANSFORM_SCALE + 1]; /* And another set for orc: we want 2.6 precision. */ int *matrixo[VIPS_TRANSFORM_SCALE + 1]; /* The passes we generate for this mask. */ int n_pass; Pass pass[MAX_PASS]; } VipsReducev; typedef VipsResampleClass VipsReducevClass; /* We need C linkage for this. */ extern "C" { G_DEFINE_TYPE( VipsReducev, vips_reducev, VIPS_TYPE_RESAMPLE ); } static void vips_reducev_finalize( GObject *gobject ) { VipsReducev *reducev = (VipsReducev *) gobject; for( int i = 0; i < reducev->n_pass; i++ ) VIPS_FREEF( vips_vector_free, reducev->pass[i].vector ); reducev->n_pass = 0; for( int i = 0; i < VIPS_TRANSFORM_SCALE + 1; i++ ) { VIPS_FREE( reducev->matrixf[i] ); VIPS_FREE( reducev->matrixi[i] ); VIPS_FREE( reducev->matrixo[i] ); } G_OBJECT_CLASS( vips_reducev_parent_class )->finalize( gobject ); } #define TEMP( N, S ) vips_vector_temporary( v, (char *) N, S ) #define PARAM( N, S ) vips_vector_parameter( v, (char *) N, S ) #define SCANLINE( N, P, S ) vips_vector_source_scanline( v, (char *) N, P, S ) #define CONST( N, V, S ) vips_vector_constant( v, (char *) N, V, S ) #define ASM2( OP, A, B ) vips_vector_asm2( v, (char *) OP, A, B ) #define ASM3( OP, A, B, C ) vips_vector_asm3( v, (char *) OP, A, B, C ) /* Generate code for a section of the mask. first is the index we start * at, we set last to the index of the last one we use before we run * out of intermediates / constants / parameters / sources or mask * coefficients. * * 0 for success, -1 on error. */ static int vips_reducev_compile_section( VipsReducev *reducev, Pass *pass, gboolean first ) { VipsVector *v; int i; #ifdef DEBUG_COMPILE printf( "starting pass %d\n", pass->first ); #endif /*DEBUG_COMPILE*/ pass->vector = v = vips_vector_new( "reducev", 1 ); /* We have two destinations: the final output image (8-bit) and the * intermediate buffer if this is not the final pass (16-bit). */ pass->d2 = vips_vector_destination( v, "d2", 2 ); /* "r" is the array of sums from the previous pass (if any). */ pass->r = vips_vector_source_name( v, "r", 2 ); /* The value we fetch from the image, the accumulated sum. */ TEMP( "value", 2 ); TEMP( "sum", 2 ); /* Init the sum. If this is the first pass, it's a constant. If this * is a later pass, we have to init the sum from the result * of the previous pass. */ if( first ) { char c0[256]; CONST( c0, 0, 2 ); ASM2( "loadpw", "sum", c0 ); } else ASM2( "loadw", "sum", "r" ); for( i = pass->first; i < reducev->n_point; i++ ) { char source[256]; char coeff[256]; SCANLINE( source, i, 1 ); /* This mask coefficient. */ vips_snprintf( coeff, 256, "p%d", i ); pass->p[pass->n_param] = PARAM( coeff, 2 ); pass->n_param += 1; if( pass->n_param >= MAX_PARAM ) return( -1 ); /* Mask coefficients are 2.6 bits fixed point. We need to hold * about -0.5 to 1.0, so -2 to +1.999 is as close as we can * get. * * We need a signed multiply, so the image pixel needs to * become a signed 16-bit value. We know only the bottom 8 bits * of the image and coefficient are interesting, so we can take * the bottom bits of a 16x16->32 multiply. * * We accumulate the signed 16-bit result in sum. */ ASM2( "convubw", "value", source ); ASM3( "mullw", "value", "value", coeff ); ASM3( "addssw", "sum", "sum", "value" ); /* We've used this coeff. */ pass->last = i; if( vips_vector_full( v ) ) break; /* orc 0.4.24 and earlier hate more than about five lines at * once :( */ if( i - pass->first > 3 ) break; } /* If this is the end of the mask, we write the 8-bit result to the * image, otherwise write the 16-bit intermediate to our temp buffer. */ if( pass->last >= reducev->n_point - 1 ) { char c32[256]; char c6[256]; char c0[256]; char c255[256]; CONST( c32, 32, 2 ); ASM3( "addw", "sum", "sum", c32 ); CONST( c6, 6, 2 ); ASM3( "shrsw", "sum", "sum", c6 ); /* You'd think "convsuswb", convert signed 16-bit to unsigned * 8-bit with saturation, would be quicker, but it's a lot * slower. */ CONST( c0, 0, 2 ); ASM3( "maxsw", "sum", c0, "sum" ); CONST( c255, 255, 2 ); ASM3( "minsw", "sum", c255, "sum" ); ASM2( "convwb", "d1", "sum" ); } else ASM2( "copyw", "d2", "sum" ); if( !vips_vector_compile( v ) ) return( -1 ); #ifdef DEBUG_COMPILE printf( "done coeffs %d to %d\n", pass->first, pass->last ); vips_vector_print( v ); #endif /*DEBUG_COMPILE*/ return( 0 ); } static int vips_reducev_compile( VipsReducev *reducev ) { Pass *pass; /* Generate passes until we've used up the whole mask. */ for( int i = 0;; ) { /* Allocate space for another pass. */ if( reducev->n_pass == MAX_PASS ) return( -1 ); pass = &reducev->pass[reducev->n_pass]; reducev->n_pass += 1; pass->first = i; pass->r = -1; pass->d2 = -1; pass->n_param = 0; if( vips_reducev_compile_section( reducev, pass, reducev->n_pass == 1 ) ) return( -1 ); i = pass->last + 1; if( i >= reducev->n_point ) break; } return( 0 ); } /* Our sequence value. */ typedef struct { VipsReducev *reducev; VipsRegion *ir; /* Input region */ /* In vector mode we need a pair of intermediate buffers to keep the * results of each pass in. */ signed short *t1; signed short *t2; } Sequence; static int vips_reducev_stop( void *vseq, void *a, void *b ) { Sequence *seq = (Sequence *) vseq; VIPS_UNREF( seq->ir ); VIPS_FREE( seq->t1 ); VIPS_FREE( seq->t2 ); return( 0 ); } static void * vips_reducev_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsReducev *reducev = (VipsReducev *) b; int sz = VIPS_IMAGE_N_ELEMENTS( in ); Sequence *seq; if( !(seq = VIPS_NEW( out, Sequence )) ) return( NULL ); /* Init! */ seq->reducev = reducev; seq->ir = NULL; seq->t1 = NULL; seq->t2 = NULL; /* Attach region and arrays. */ seq->ir = vips_region_new( in ); seq->t1 = VIPS_ARRAY( NULL, sz, signed short ); seq->t2 = VIPS_ARRAY( NULL, sz, signed short ); if( !seq->ir || !seq->t1 || !seq->t2 ) { vips_reducev_stop( seq, NULL, NULL ); return( NULL ); } return( seq ); } /* You'd think this would vectorise, but gcc hates mixed types in nested loops * :-( */ template static void inline reducev_unsigned_int_tab( VipsReducev *reducev, VipsPel *pout, const VipsPel *pin, const int ne, const int lskip, const int * restrict cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reducev->n_point; const int l1 = lskip / sizeof( T ); for( int z = 0; z < ne; z++ ) { int sum; sum = reduce_sum( in + z, l1, cy, n ); sum = unsigned_fixed_round( sum ); sum = VIPS_CLIP( 0, sum, max_value ); out[z] = sum; } } template static void inline reducev_signed_int_tab( VipsReducev *reducev, VipsPel *pout, const VipsPel *pin, const int ne, const int lskip, const int * restrict cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reducev->n_point; const int l1 = lskip / sizeof( T ); for( int z = 0; z < ne; z++ ) { int sum; sum = reduce_sum( in + z, l1, cy, n ); sum = signed_fixed_round( sum ); sum = VIPS_CLIP( min_value, sum, max_value ); out[z] = sum; } } /* Floating-point version. */ template static void inline reducev_float_tab( VipsReducev *reducev, VipsPel *pout, const VipsPel *pin, const int ne, const int lskip, const double * restrict cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reducev->n_point; const int l1 = lskip / sizeof( T ); for( int z = 0; z < ne; z++ ) out[z] = reduce_sum( in + z, l1, cy, n ); } /* 32-bit int output needs a double intermediate. */ template static void inline reducev_unsigned_int32_tab( VipsReducev *reducev, VipsPel *pout, const VipsPel *pin, const int ne, const int lskip, const double * restrict cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reducev->n_point; const int l1 = lskip / sizeof( T ); for( int z = 0; z < ne; z++ ) { double sum; sum = reduce_sum( in + z, l1, cy, n ); out[z] = VIPS_CLIP( 0, sum, max_value ); } } template static void inline reducev_signed_int32_tab( VipsReducev *reducev, VipsPel *pout, const VipsPel *pin, const int ne, const int lskip, const double * restrict cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reducev->n_point; const int l1 = lskip / sizeof( T ); for( int z = 0; z < ne; z++ ) { double sum; sum = reduce_sum( in + z, l1, cy, n ); out[z] = VIPS_CLIP( min_value, sum, max_value ); } } /* Ultra-high-quality version for double images. */ template static void inline reducev_notab( VipsReducev *reducev, VipsPel *pout, const VipsPel *pin, const int ne, const int lskip, double y ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int n = reducev->n_point; const int l1 = lskip / sizeof( T ); double cy[MAX_POINT]; vips_reduce_make_mask( cy, reducev->kernel, reducev->vshrink, y ); for( int z = 0; z < ne; z++ ) out[z] = reduce_sum( in + z, l1, cy, n ); } static int vips_reducev_gen( VipsRegion *out_region, void *vseq, void *a, void *b, gboolean *stop ) { VipsImage *in = (VipsImage *) a; VipsReducev *reducev = (VipsReducev *) b; Sequence *seq = (Sequence *) vseq; VipsRegion *ir = seq->ir; VipsRect *r = &out_region->valid; /* Double bands for complex. */ const int bands = in->Bands * (vips_band_format_iscomplex( in->BandFmt ) ? 2 : 1); int ne = r->width * bands; VipsRect s; #ifdef DEBUG printf( "vips_reducev_gen: generating %d x %d at %d x %d\n", r->width, r->height, r->left, r->top ); #endif /*DEBUG*/ s.left = r->left; s.top = r->top * reducev->vshrink; s.width = r->width; s.height = r->height * reducev->vshrink + reducev->n_point; if( reducev->centre ) s.height += 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); VIPS_GATE_START( "vips_reducev_gen: work" ); for( int y = 0; y < r->height; y ++ ) { VipsPel *q = VIPS_REGION_ADDR( out_region, r->left, r->top + y ); const double Y = (r->top + y) * reducev->vshrink + (reducev->centre ? 0.5 : 0.0); VipsPel *p = VIPS_REGION_ADDR( ir, r->left, (int) Y ); const int sy = Y * VIPS_TRANSFORM_SCALE * 2; const int siy = sy & (VIPS_TRANSFORM_SCALE * 2 - 1); const int ty = (siy + 1) >> 1; const int *cyi = reducev->matrixi[ty]; const double *cyf = reducev->matrixf[ty]; const int lskip = VIPS_REGION_LSKIP( ir ); switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: reducev_unsigned_int_tab ( reducev, q, p, ne, lskip, cyi ); break; case VIPS_FORMAT_CHAR: reducev_signed_int_tab ( reducev, q, p, ne, lskip, cyi ); break; case VIPS_FORMAT_USHORT: reducev_unsigned_int_tab ( reducev, q, p, ne, lskip, cyi ); break; case VIPS_FORMAT_SHORT: reducev_signed_int_tab ( reducev, q, p, ne, lskip, cyi ); break; case VIPS_FORMAT_UINT: reducev_unsigned_int32_tab ( reducev, q, p, ne, lskip, cyf ); break; case VIPS_FORMAT_INT: reducev_signed_int32_tab ( reducev, q, p, ne, lskip, cyf ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: reducev_float_tab( reducev, q, p, ne, lskip, cyf ); break; case VIPS_FORMAT_DPCOMPLEX: case VIPS_FORMAT_DOUBLE: reducev_notab( reducev, q, p, ne, lskip, Y - (int) Y ); break; default: g_assert_not_reached(); break; } } VIPS_GATE_STOP( "vips_reducev_gen: work" ); VIPS_COUNT_PIXELS( out_region, "vips_reducev_gen" ); return( 0 ); } /* Process uchar images with a vector path. */ static int vips_reducev_vector_gen( VipsRegion *out_region, void *vseq, void *a, void *b, gboolean *stop ) { VipsImage *in = (VipsImage *) a; VipsReducev *reducev = (VipsReducev *) b; Sequence *seq = (Sequence *) vseq; VipsRegion *ir = seq->ir; VipsRect *r = &out_region->valid; int ne = r->width * in->Bands; VipsExecutor executor[MAX_PASS]; VipsRect s; #ifdef DEBUG_PIXELS printf( "vips_reducev_vector_gen: generating %d x %d at %d x %d\n", r->width, r->height, r->left, r->top ); #endif /*DEBUG_PIXELS*/ s.left = r->left; s.top = r->top * reducev->vshrink; s.width = r->width; s.height = r->height * reducev->vshrink + reducev->n_point; if( reducev->centre ) s.height += 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); #ifdef DEBUG_PIXELS printf( "vips_reducev_vector_gen: preparing %d x %d at %d x %d\n", s.width, s.height, s.left, s.top ); #endif /*DEBUG_PIXELS*/ for( int i = 0; i < reducev->n_pass; i++ ) vips_executor_set_program( &executor[i], reducev->pass[i].vector, ne ); VIPS_GATE_START( "vips_reducev_vector_gen: work" ); for( int y = 0; y < r->height; y ++ ) { VipsPel *q = VIPS_REGION_ADDR( out_region, r->left, r->top + y ); const double Y = (r->top + y) * reducev->vshrink + (reducev->centre ? 0.5 : 0.0); const int py = (int) Y; const int sy = Y * VIPS_TRANSFORM_SCALE * 2; const int siy = sy & (VIPS_TRANSFORM_SCALE * 2 - 1); const int ty = (siy + 1) >> 1; const int *cyo = reducev->matrixo[ty]; #ifdef DEBUG_PIXELS printf( "starting row %d\n", y + r->top ); printf( "coefficients:\n" ); for( int i = 0; i < reducev->n_point; i++ ) printf( "\t%d - %d\n", i, cyo[i] ); printf( "first column of pixel values:\n" ); for( int i = 0; i < reducev->n_point; i++ ) printf( "\t%d - %d\n", i, *VIPS_REGION_ADDR( ir, r->left, r->top + y + i ) ); #endif /*DEBUG_PIXELS*/ /* We run our n passes to generate this scanline. */ for( int i = 0; i < reducev->n_pass; i++ ) { Pass *pass = &reducev->pass[i]; vips_executor_set_scanline( &executor[i], ir, r->left, py ); vips_executor_set_array( &executor[i], pass->r, seq->t1 ); vips_executor_set_array( &executor[i], pass->d2, seq->t2 ); for( int j = 0; j < pass->n_param; j++ ) vips_executor_set_parameter( &executor[i], pass->p[j], cyo[j + pass->first] ); vips_executor_set_destination( &executor[i], q ); vips_executor_run( &executor[i] ); VIPS_SWAP( signed short *, seq->t1, seq->t2 ); } #ifdef DEBUG_PIXELS printf( "pixel result:\n" ); printf( "\t%d\n", *q ); #endif /*DEBUG_PIXELS*/ } VIPS_GATE_STOP( "vips_reducev_vector_gen: work" ); VIPS_COUNT_PIXELS( out_region, "vips_reducev_vector_gen" ); return( 0 ); } static int vips_reducev_raw( VipsReducev *reducev, VipsImage *in, VipsImage **out ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( reducev ); VipsResample *resample = VIPS_RESAMPLE( reducev ); VipsGenerateFn generate; /* Build masks. */ for( int y = 0; y < VIPS_TRANSFORM_SCALE + 1; y++ ) { reducev->matrixf[y] = VIPS_ARRAY( NULL, reducev->n_point, double ); if( !reducev->matrixf[y] ) return( -1 ); vips_reduce_make_mask( reducev->matrixf[y], reducev->kernel, reducev->vshrink, (float) y / VIPS_TRANSFORM_SCALE ); #ifdef DEBUG printf( "%6.2g", (double) y / VIPS_TRANSFORM_SCALE ); for( int i = 0; i < reducev->n_point; i++ ) printf( ", %6.2g", reducev->matrixf[y][i] ); printf( "\n" ); #endif /*DEBUG*/ } /* uchar and ushort need an int version of the masks. */ if( VIPS_IMAGE_SIZEOF_ELEMENT( in ) <= 2 ) for( int y = 0; y < VIPS_TRANSFORM_SCALE + 1; y++ ) { reducev->matrixi[y] = VIPS_ARRAY( NULL, reducev->n_point, int ); if( !reducev->matrixi[y] ) return( -1 ); vips_vector_to_fixed_point( reducev->matrixf[y], reducev->matrixi[y], reducev->n_point, VIPS_INTERPOLATE_SCALE ); } /* And we need an 2.6 version if we will use the vector path. */ if( in->BandFmt == VIPS_FORMAT_UCHAR && vips_vector_isenabled() ) for( int y = 0; y < VIPS_TRANSFORM_SCALE + 1; y++ ) { reducev->matrixo[y] = VIPS_ARRAY( NULL, reducev->n_point, int ); if( !reducev->matrixo[y] ) return( -1 ); vips_vector_to_fixed_point( reducev->matrixf[y], reducev->matrixo[y], reducev->n_point, 64 ); } /* Try to build a vector version, if we can. */ generate = vips_reducev_gen; if( in->BandFmt == VIPS_FORMAT_UCHAR && vips_vector_isenabled() && !vips_reducev_compile( reducev ) ) { g_info( "reducev: using vector path" ); generate = vips_reducev_vector_gen; } *out = vips_image_new(); if( vips_image_pipelinev( *out, VIPS_DEMAND_STYLE_FATSTRIP, in, (void *) NULL ) ) return( -1 ); /* Size output. We need to always round to nearest, so round(), not * rint(). * * Don't change xres/yres, leave that to the application layer. For * example, vipsthumbnail knows the true reduce factor (including the * fractional part), we just see the integer part here. */ (*out)->Ysize = VIPS_ROUND_UINT( resample->in->Ysize / reducev->vshrink ); if( (*out)->Ysize <= 0 ) { vips_error( object_class->nickname, "%s", _( "image has shrunk to nothing" ) ); return( -1 ); } #ifdef DEBUG printf( "vips_reducev_build: reducing %d x %d image to %d x %d\n", in->Xsize, in->Ysize, (*out)->Xsize, (*out)->Ysize ); #endif /*DEBUG*/ if( vips_image_generate( *out, vips_reducev_start, generate, vips_reducev_stop, in, reducev ) ) return( -1 ); vips_reorder_margin_hint( *out, reducev->n_point ); return( 0 ); } static int vips_reducev_build( VipsObject *object ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsReducev *reducev = (VipsReducev *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; int height; if( VIPS_OBJECT_CLASS( vips_reducev_parent_class )->build( object ) ) return( -1 ); in = resample->in; if( reducev->vshrink < 1 ) { vips_error( object_class->nickname, "%s", _( "reduce factor should be >= 1" ) ); return( -1 ); } if( reducev->vshrink == 1 ) return( vips_image_write( in, resample->out ) ); reducev->n_point = vips_reduce_get_points( reducev->kernel, reducev->vshrink ); g_info( "reducev: %d point mask", reducev->n_point ); if( reducev->n_point > MAX_POINT ) { vips_error( object_class->nickname, "%s", _( "reduce factor too large" ) ); return( -1 ); } /* Unpack for processing. */ if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* Add new pixels around the input so we can interpolate at the edges. */ height = in->Ysize + reducev->n_point - 1; if( reducev->centre ) height += 1; if( vips_embed( in, &t[1], 0, reducev->n_point / 2 - 1, in->Xsize, height, "extend", VIPS_EXTEND_COPY, (void *) NULL ) ) return( -1 ); in = t[1]; if( vips_reducev_raw( reducev, in, &t[2] ) ) return( -1 ); in = t[2]; /* Large reducev will throw off sequential mode. Suppose thread1 is * generating tile (0, 0), but stalls. thread2 generates tile * (0, 1), 128 lines further down the output. After it has done, * thread1 tries to generate (0, 0), but by then the pixels it needs * have gone from the input image line cache if the reducev is large. * * To fix this, put another seq on the output of reducev. Now we'll * always have the previous XX lines of the shrunk image, and we won't * fetch out of order. */ if( vips_image_get_typeof( in, VIPS_META_SEQUENTIAL ) ) { g_info( "reducev sequential line cache" ); if( vips_sequential( in, &t[3], "tile_height", 10, // "trace", TRUE, (void *) NULL ) ) return( -1 ); in = t[3]; } if( vips_image_write( in, resample->out ) ) return( -1 ); return( 0 ); } static void vips_reducev_class_init( VipsReducevClass *reducev_class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( reducev_class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( reducev_class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( reducev_class ); VIPS_DEBUG_MSG( "vips_reducev_class_init\n" ); gobject_class->finalize = vips_reducev_finalize; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "reducev"; vobject_class->description = _( "shrink an image vertically" ); vobject_class->build = vips_reducev_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_DOUBLE( reducev_class, "vshrink", 3, _( "Vshrink" ), _( "Vertical shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsReducev, vshrink ), 1, 1000000, 1 ); VIPS_ARG_ENUM( reducev_class, "kernel", 4, _( "Kernel" ), _( "Resampling kernel" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsReducev, kernel ), VIPS_TYPE_KERNEL, VIPS_KERNEL_LANCZOS3 ); VIPS_ARG_BOOL( reducev_class, "centre", 7, _( "Centre" ), _( "Use centre sampling convention" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsReducev, centre ), FALSE ); /* Old name. */ VIPS_ARG_DOUBLE( reducev_class, "yshrink", 3, _( "Yshrink" ), _( "Vertical shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsReducev, vshrink ), 1, 1000000, 1 ); } static void vips_reducev_init( VipsReducev *reducev ) { reducev->kernel = VIPS_KERNEL_LANCZOS3; } /* See reduce.c for the doc comment. */ int vips_reducev( VipsImage *in, VipsImage **out, double vshrink, ... ) { va_list ap; int result; va_start( ap, vshrink ); result = vips_call_split( "reducev", ap, in, out, vshrink ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/resample/resample.c000066400000000000000000000126751361153320700204510ustar00rootroot00000000000000/* base class for all resample operations * * properties: * - one in, one out * - not point-to-point * - size can change in any way * - bands, type, format etc. all fixed */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "presample.h" /** * SECTION: resample * @short_description: resample images in various ways * @stability: Stable * @include: vips/vips.h * * There are three types of operation in this section. * * First, vips_affine() applies an affine transform to an image. This is any * sort of 2D transform which preserves straight lines; so any combination of * stretch, sheer, rotate and translate. You supply an interpolator for it to * use to generate pixels, see vips_interpolate_new(). It will not produce * good results for very large shrinks: you'll see aliasing. * * vips_reduce() is like vips_affine(), but it can only shrink images, it can't * enlarge, rotate, or skew. It's very fast and uses an adaptive kernel for * interpolation. * * vips_shrink() is a fast block shrinker. It can quickly reduce images by * large integer factors. It will give poor results for small size reductions: * again, you'll see aliasing. * * Next, vips_resize() specialises in the common task of image reduce and * enlarge. It strings together combinations of vips_shrink(), vips_reduce(), * vips_affine() and others to implement a general, high-quality image * resizer. * * Finally, vips_mapim() can apply arbitrary 2D image transforms to an image. */ /** * VipsSize: * @VIPS_SIZE_BOTH: size both up and down * @VIPS_SIZE_UP: only upsize * @VIPS_SIZE_DOWN: only downsize * @VIPS_SIZE_FORCE: force size, that is, break aspect ratio * * Controls whether an operation should upsize, downsize, both up and * downsize, or force a size. * * See also: vips_thumbnail(). */ G_DEFINE_ABSTRACT_TYPE( VipsResample, vips_resample, VIPS_TYPE_OPERATION ); static int vips_resample_build( VipsObject *object ) { VipsResample *resample = VIPS_RESAMPLE( object ); #ifdef DEBUG printf( "vips_resample_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_object_set( resample, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_resample_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_resample_class_init( VipsResampleClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "resample"; vobject_class->description = _( "resample operations" ); vobject_class->build = vips_resample_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsResample, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsResample, out ) ); } static void vips_resample_init( VipsResample *resample ) { } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_resample_operation_init( void ) { extern GType vips_thumbnail_file_get_type( void ); extern GType vips_thumbnail_buffer_get_type( void ); extern GType vips_thumbnail_image_get_type( void ); extern GType vips_thumbnail_source_get_type( void ); extern GType vips_mapim_get_type( void ); extern GType vips_shrink_get_type( void ); extern GType vips_shrinkh_get_type( void ); extern GType vips_shrinkv_get_type( void ); extern GType vips_reduce_get_type( void ); extern GType vips_reduceh_get_type( void ); extern GType vips_reducev_get_type( void ); extern GType vips_quadratic_get_type( void ); extern GType vips_affine_get_type( void ); extern GType vips_similarity_get_type( void ); extern GType vips_rotate_get_type( void ); extern GType vips_resize_get_type( void ); vips_thumbnail_file_get_type(); vips_thumbnail_buffer_get_type(); vips_thumbnail_image_get_type(); vips_thumbnail_source_get_type(); vips_mapim_get_type(); vips_shrink_get_type(); vips_shrinkh_get_type(); vips_shrinkv_get_type(); vips_reduceh_get_type(); vips_reducev_get_type(); vips_reduce_get_type(); vips_quadratic_get_type(); vips_affine_get_type(); vips_similarity_get_type(); vips_rotate_get_type(); vips_resize_get_type(); } libvips-8.9.1/libvips/resample/resize.c000066400000000000000000000272241361153320700201360ustar00rootroot00000000000000/* resize an image ... up and down resampling. * * 13/8/14 * - from affine.c * 18/11/14 * - add the fancier algorithm from vipsthumbnail * 11/11/15 * - smarter cache sizing * 29/2/16 * - shrink more affine less, now we have better anti-alias settings * 10/3/16 * - revise again, using new vips_reduce() code * 1/5/16 * - allow >1 on one axis, <1 on the other * - expose @kernel setting * 16/6/16 * - better quality for linear/cubic kernels ... do more shrink and less * reduce * 22/6/16 * - faster and better upsizing * 15/8/16 * - more accurate resizing * 9/9/16 * - add @centre option * 6/3/17 * - moved the cache to shrinkv * 15/10/17 * - make LINEAR and CUBIC adaptive * 25/11/17 * - deprecate --centre ... it's now always on, thanks tback * 3/12/18 [edwjusti] * - disable the centre sampling offset for nearest upscale, since the * affine nearest interpolator is always centre * 7/7/19 [lovell] * - don't let either axis drop below 1px */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsResize { VipsResample parent_instance; double scale; double vscale; VipsKernel kernel; /* Deprecated. */ VipsInterpolate *interpolate; double idx; double idy; gboolean centre; } VipsResize; typedef VipsResampleClass VipsResizeClass; G_DEFINE_TYPE( VipsResize, vips_resize, VIPS_TYPE_RESAMPLE ); /* How much of a scale should be by an integer shrink factor? * * This depends on the scale and the kernel we will use for residual resizing. * For upsizing and nearest-neighbour downsize, we want no shrinking. * * The others are adaptive: the size of the kernel changes with the shrink * factor. We will get the best quality (but be the slowest) if we let * reduce do all the work. Leave it the final 200 - 300% to do as a compromise * for efficiency. * * FIXME: this is rather ugly. Kernel should be a class and this info should be * stored in there. */ static int vips_resize_int_shrink( VipsResize *resize, double scale ) { int shrink; if( scale > 1.0 ) shrink = 1; else switch( resize->kernel ) { case VIPS_KERNEL_NEAREST: shrink = 1; break; case VIPS_KERNEL_LINEAR: case VIPS_KERNEL_CUBIC: case VIPS_KERNEL_MITCHELL: case VIPS_KERNEL_LANCZOS2: case VIPS_KERNEL_LANCZOS3: default: shrink = VIPS_MAX( 1, VIPS_FLOOR( 1.0 / (scale * 2) ) ); break; } return( shrink ); } /* Suggest a VipsInterpolate which corresponds to a VipsKernel. We use * this to pick a thing for affine(). */ static const char * vips_resize_interpolate( VipsKernel kernel ) { switch( kernel ) { case VIPS_KERNEL_NEAREST: return( "nearest" ); case VIPS_KERNEL_LINEAR: return( "bilinear" ); /* Use cubic for everything else. There are other interpolators, like * nohalo, but they don't really correspond well to any kernel. */ default: return( "bicubic" ); } } static int vips_resize_build( VipsObject *object ) { VipsResample *resample = VIPS_RESAMPLE( object ); VipsResize *resize = (VipsResize *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); VipsImage *in; double hscale; double vscale; int int_hshrink; int int_vshrink; if( VIPS_OBJECT_CLASS( vips_resize_parent_class )->build( object ) ) return( -1 ); in = resample->in; /* Updated below when we do the int part of our shrink. */ hscale = resize->scale; if( vips_object_argument_isset( object, "vscale" ) ) vscale = resize->vscale; else vscale = resize->scale; /* The int part of our scale. */ int_hshrink = vips_resize_int_shrink( resize, hscale ); int_vshrink = vips_resize_int_shrink( resize, vscale ); /* Unpack for processing. */ if( vips_image_decode( in, &t[5] ) ) return( -1 ); in = t[5]; if( int_vshrink > 1 ) { g_info( "shrinkv by %d", int_vshrink ); if( vips_shrinkv( in, &t[0], int_vshrink, NULL ) ) return( -1 ); in = t[0]; vscale *= int_vshrink; } if( int_hshrink > 1 ) { g_info( "shrinkh by %d", int_hshrink ); if( vips_shrinkh( in, &t[1], int_hshrink, NULL ) ) return( -1 ); in = t[1]; hscale *= int_hshrink; } /* Don't let either axis drop below 1 px. */ hscale = VIPS_MAX( hscale, 1.0 / in->Xsize ); vscale = VIPS_MAX( vscale, 1.0 / in->Ysize ); /* Any residual downsizing. */ if( vscale < 1.0 ) { g_info( "residual reducev by %g", vscale ); if( vips_reducev( in, &t[2], 1.0 / vscale, "kernel", resize->kernel, "centre", TRUE, NULL ) ) return( -1 ); in = t[2]; } if( hscale < 1.0 ) { g_info( "residual reduceh by %g", hscale ); if( vips_reduceh( in, &t[3], 1.0 / hscale, "kernel", resize->kernel, "centre", TRUE, NULL ) ) return( -1 ); in = t[3]; } /* Any upsizing. */ if( hscale > 1.0 || vscale > 1.0 ) { const char *nickname = vips_resize_interpolate( resize->kernel ); /* Input displacement. For centre sampling, shift by 0.5 down * and right. Except if this is nearest, which is always * centre. */ const double id = resize->kernel == VIPS_KERNEL_NEAREST ? 0.0 : 0.5; VipsInterpolate *interpolate; if( !(interpolate = vips_interpolate_new( nickname )) ) return( -1 ); vips_object_local( object, interpolate ); if( resize->kernel == VIPS_KERNEL_NEAREST && hscale == VIPS_FLOOR( hscale ) && vscale == VIPS_FLOOR( vscale ) ) { /* Fast, integral nearest neighbour enlargement */ if( vips_zoom( in, &t[4], VIPS_FLOOR( hscale ), VIPS_FLOOR( vscale ), NULL ) ) return( -1 ); in = t[4]; } else if( hscale > 1.0 && vscale > 1.0 ) { g_info( "residual scale %g x %g", hscale, vscale ); if( vips_affine( in, &t[4], hscale, 0.0, 0.0, vscale, "interpolate", interpolate, "idx", id, "idy", id, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[4]; } else if( hscale > 1.0 ) { g_info( "residual scale %g", hscale ); if( vips_affine( in, &t[4], hscale, 0.0, 0.0, 1.0, "interpolate", interpolate, "idx", id, "idy", id, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[4]; } else { g_info( "residual scale %g", vscale ); if( vips_affine( in, &t[4], 1.0, 0.0, 0.0, vscale, "interpolate", interpolate, "idx", id, "idy", id, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[4]; } } if( vips_image_write( in, resample->out ) ) return( -1 ); return( 0 ); } static void vips_resize_class_init( VipsResizeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_resize_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "resize"; vobject_class->description = _( "resize an image" ); vobject_class->build = vips_resize_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_DOUBLE( class, "scale", 113, _( "Scale factor" ), _( "Scale image by this factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsResize, scale ), 0, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "vscale", 113, _( "Vertical scale factor" ), _( "Vertical scale image by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsResize, vscale ), 0, 10000000, 0 ); VIPS_ARG_ENUM( class, "kernel", 3, _( "Kernel" ), _( "Resampling kernel" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsResize, kernel ), VIPS_TYPE_KERNEL, VIPS_KERNEL_LANCZOS3 ); /* We used to let people set the input offset so you could pick centre * or corner interpolation, but it's not clear this was useful. */ VIPS_ARG_DOUBLE( class, "idx", 115, _( "Input offset" ), _( "Horizontal input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsResize, idx ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "idy", 116, _( "Input offset" ), _( "Vertical input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsResize, idy ), -10000000, 10000000, 0 ); /* It's a kernel now we use vips_reduce() not vips_affine(). */ VIPS_ARG_INTERPOLATE( class, "interpolate", 2, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsResize, interpolate ) ); /* We used to let people pick centre or corner, but it's automatic now. */ VIPS_ARG_BOOL( class, "centre", 7, _( "Centre" ), _( "Use centre sampling convention" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsResize, centre ), FALSE ); } static void vips_resize_init( VipsResize *resize ) { resize->kernel = VIPS_KERNEL_LANCZOS3; } /** * vips_resize: (method) * @in: input image * @out: (out): output image * @scale: scale factor * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @vscale: %gdouble vertical scale factor * * @kernel: #VipsKernel to reduce with * * Resize an image. * * When downsizing, the * image is block-shrunk with vips_shrink(), * then the image is shrunk again to the * target size with vips_reduce(). How much is done by vips_shrink() vs. * vips_reduce() varies with the @kernel setting. Downsizing is done with * centre convention. * * vips_resize() normally uses #VIPS_KERNEL_LANCZOS3 for the final reduce, you * can change this with @kernel. * * When upsizing (@scale > 1), the operation uses vips_affine() with * a #VipsInterpolate selected depending on @kernel. It will use * #VipsInterpolateBicubic for #VIPS_KERNEL_CUBIC and above. It adds a * 0.5 pixel displacement to the input pixels to get centre convention scaling. * * vips_resize() normally maintains the image aspect ratio. If you set * @vscale, that factor is used for the vertical scale and @scale for the * horizontal. * * If either axis would drop below 1px in size, the shrink in that dimension * is limited. This breaks the image aspect ratio, but prevents errors due to * fractional pixel sizes. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_shrink(), vips_reduce(). * * Returns: 0 on success, -1 on error */ int vips_resize( VipsImage *in, VipsImage **out, double scale, ... ) { va_list ap; int result; va_start( ap, scale ); result = vips_call_split( "resize", ap, in, out, scale ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/resample/shrink.c000066400000000000000000000126601361153320700201310ustar00rootroot00000000000000/* shrink with a box filter * * 30/10/15 * - from shrink.c (now renamed as shrink2.c) * - split to h and v shrinks for a large memory saving * - now handles complex * 15/8/16 * - more accurate resize * - rename xshrink -> hshrink for greater consistency * 9/2/17 * - use reduce, not affine, for any residual shrink * - expand cache hint */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsShrink { VipsResample parent_instance; double hshrink; /* Shrink factors */ double vshrink; } VipsShrink; typedef VipsResampleClass VipsShrinkClass; G_DEFINE_TYPE( VipsShrink, vips_shrink, VIPS_TYPE_RESAMPLE ); static int vips_shrink_build( VipsObject *object ) { VipsResample *resample = VIPS_RESAMPLE( object ); VipsShrink *shrink = (VipsShrink *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); int hshrink_int; int vshrink_int; if( VIPS_OBJECT_CLASS( vips_shrink_parent_class )->build( object ) ) return( -1 ); hshrink_int = (int) shrink->hshrink; vshrink_int = (int) shrink->vshrink; if( hshrink_int != shrink->hshrink || vshrink_int != shrink->vshrink ) { /* Shrink by int factors, reduce to final size. */ double xresidual = shrink->hshrink / hshrink_int; double yresidual = shrink->vshrink / vshrink_int; if( vips_shrinkv( resample->in, &t[0], vshrink_int, NULL ) || vips_shrinkh( t[0], &t[1], hshrink_int, NULL ) ) return( -1 ); if( vips_reduce( t[1], &t[2], xresidual, yresidual, NULL ) || vips_image_write( t[2], resample->out ) ) return( -1 ); } else { if( vips_shrinkv( resample->in, &t[0], shrink->vshrink, NULL ) || vips_shrinkh( t[0], &t[1], shrink->hshrink, NULL ) || vips_image_write( t[1], resample->out ) ) return( -1 ); } return( 0 ); } static void vips_shrink_class_init( VipsShrinkClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_shrink_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "shrink"; vobject_class->description = _( "shrink an image" ); vobject_class->build = vips_shrink_build; /* You'd think UNBUFFERED would work, but we will use reduce for non-int * shrinks, so it has to be straight SEQ. */ operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_DOUBLE( class, "vshrink", 9, _( "Vshrink" ), _( "Vertical shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsShrink, vshrink ), 1.0, 1000000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "hshrink", 8, _( "Hshrink" ), _( "Horizontal shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsShrink, hshrink ), 1.0, 1000000.0, 1.0 ); /* The old names .. now use h and v everywhere. */ VIPS_ARG_DOUBLE( class, "xshrink", 8, _( "Xshrink" ), _( "Horizontal shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsShrink, hshrink ), 1.0, 1000000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "yshrink", 9, _( "Yshrink" ), _( "Vertical shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsShrink, vshrink ), 1.0, 1000000.0, 1.0 ); } static void vips_shrink_init( VipsShrink *shrink ) { } /** * vips_shrink: (method) * @in: input image * @out: (out): output image * @hshrink: horizontal shrink * @vshrink: vertical shrink * @...: %NULL-terminated list of optional named arguments * * Shrink @in by a pair of factors with a simple box filter. For non-integer * factors, vips_shrink() will first shrink by the integer part with a box * filter, then use vips_reduce() to shrink by the * remaining fractional part. * * This is a very low-level operation: see vips_resize() for a more * convenient way to resize images. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_resize(), vips_reduce(). * * Returns: 0 on success, -1 on error */ int vips_shrink( VipsImage *in, VipsImage **out, double hshrink, double vshrink, ... ) { va_list ap; int result; va_start( ap, vshrink ); result = vips_call_split( "shrink", ap, in, out, hshrink, vshrink ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/resample/shrinkh.c000066400000000000000000000224101361153320700202730ustar00rootroot00000000000000/* horizontal shrink by an integer factor * * 30/10/15 * - from shrink.c * 22/1/16 * - reorganise loops, 30% faster, vectorisable * 15/8/16 * - rename xshrink -> hshrink for greater consistency * 6/8/19 * - use a double sum buffer for int32 types */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsShrinkh { VipsResample parent_instance; int hshrink; /* Shrink factor */ } VipsShrinkh; typedef VipsResampleClass VipsShrinkhClass; G_DEFINE_TYPE( VipsShrinkh, vips_shrinkh, VIPS_TYPE_RESAMPLE ); #define INNER( BANDS ) \ sum += p[x1]; \ x1 += BANDS; /* Integer shrink. */ #define ISHRINK( ACC_TYPE, TYPE, BANDS ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ for( b = 0; b < BANDS; b++ ) { \ ACC_TYPE sum; \ \ sum = 0; \ x1 = b; \ VIPS_UNROLL( shrink->hshrink, INNER( BANDS ) ); \ q[b] = (sum + shrink->hshrink / 2) / \ shrink->hshrink; \ } \ p += ne; \ q += BANDS; \ } \ } /* Float shrink. */ #define FSHRINK( TYPE ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ for( b = 0; b < bands; b++ ) { \ double sum; \ \ sum = 0.0; \ x1 = b; \ VIPS_UNROLL( shrink->hshrink, INNER( bands ) ); \ q[b] = sum / shrink->hshrink; \ } \ p += ne; \ q += bands; \ } \ } /* Generate an area of @or. @ir is large enough. */ static void vips_shrinkh_gen2( VipsShrinkh *shrink, VipsRegion *or, VipsRegion *ir, int left, int top, int width ) { VipsResample *resample = VIPS_RESAMPLE( shrink ); const int bands = resample->in->Bands * (vips_band_format_iscomplex( resample->in->BandFmt ) ? 2 : 1); const int ne = shrink->hshrink * bands; VipsPel *out = VIPS_REGION_ADDR( or, left, top ); VipsPel *in = VIPS_REGION_ADDR( ir, left * shrink->hshrink, top ); int x; int x1, b; switch( resample->in->BandFmt ) { case VIPS_FORMAT_UCHAR: /* Generate a special path for 1, 3 and 4 band uchar data. The * compiler will be able to vectorise these. * * Vectorisation doesn't help much for 16, 32-bit or float * data, don't bother with them. */ switch( bands ) { case 1: ISHRINK( int, unsigned char, 1 ); break; case 3: ISHRINK( int, unsigned char, 3 ); break; case 4: ISHRINK( int, unsigned char, 4 ); break; default: ISHRINK( int, unsigned char, bands ); break; } break; case VIPS_FORMAT_CHAR: ISHRINK( int, char, bands ); break; case VIPS_FORMAT_USHORT: ISHRINK( int, unsigned short, bands ); break; case VIPS_FORMAT_SHORT: ISHRINK( int, short, bands ); break; case VIPS_FORMAT_UINT: ISHRINK( double, unsigned int, bands ); break; case VIPS_FORMAT_INT: ISHRINK( double, int, bands ); break; case VIPS_FORMAT_FLOAT: FSHRINK( float ); break; case VIPS_FORMAT_DOUBLE: FSHRINK( double ); break; case VIPS_FORMAT_COMPLEX: FSHRINK( float ); break; case VIPS_FORMAT_DPCOMPLEX: FSHRINK( double ); break; default: g_assert_not_reached(); } } static int vips_shrinkh_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsShrinkh *shrink = (VipsShrinkh *) b; VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; int y; /* How do we chunk up the image? We don't want to prepare the whole of * the input region corresponding to *r since it could be huge. * * Request input a line at a time. * * We don't chunk horizontally. We want "vips shrink x.jpg b.jpg 100 * 100" to run sequentially. If we chunk horizontally, we will fetch * 100x100 lines from the top of the image, then 100x100 100 lines * down, etc. for each thread, then when they've finished, fetch * 100x100, 100 pixels across from the top of the image. This will * break sequentiality. */ #ifdef DEBUG printf( "vips_shrinkh_gen: generating %d x %d at %d x %d\n", r->width, r->height, r->left, r->top ); #endif /*DEBUG*/ for( y = 0; y < r->height; y ++ ) { VipsRect s; s.left = r->left * shrink->hshrink; s.top = r->top + y; s.width = r->width * shrink->hshrink; s.height = 1; #ifdef DEBUG printf( "shrinkh_gen: requesting line %d\n", s.top ); #endif /*DEBUG*/ if( vips_region_prepare( ir, &s ) ) return( -1 ); VIPS_GATE_START( "vips_shrinkh_gen: work" ); vips_shrinkh_gen2( shrink, or, ir, r->left, r->top + y, r->width ); VIPS_GATE_STOP( "vips_shrinkh_gen: work" ); } VIPS_COUNT_PIXELS( or, "vips_shrinkh_gen" ); return( 0 ); } static int vips_shrinkh_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsShrinkh *shrink = (VipsShrinkh *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_shrinkh_parent_class )->build( object ) ) return( -1 ); in = resample->in; if( shrink->hshrink < 1 ) { vips_error( class->nickname, "%s", _( "shrink factors should be >= 1" ) ); return( -1 ); } if( shrink->hshrink == 1 ) return( vips_image_write( in, resample->out ) ); /* We need new pixels at the right so that we don't have small chunks * to average down the right edge. */ if( vips_embed( in, &t[1], 0, 0, in->Xsize + shrink->hshrink, in->Ysize, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[1]; if( vips_image_pipelinev( resample->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); /* Size output. We need to always round to nearest, so round(), not * rint(). * * Don't change xres/yres, leave that to the application layer. For * example, vipsthumbnail knows the true shrink factor (including the * fractional part), we just see the integer part here. */ resample->out->Xsize = VIPS_ROUND_UINT( (double) resample->in->Xsize / shrink->hshrink ); if( resample->out->Xsize <= 0 ) { vips_error( class->nickname, "%s", _( "image has shrunk to nothing" ) ); return( -1 ); } #ifdef DEBUG printf( "vips_shrinkh_build: shrinking %d x %d image to %d x %d\n", in->Xsize, in->Ysize, resample->out->Xsize, resample->out->Ysize ); #endif /*DEBUG*/ if( vips_image_generate( resample->out, vips_start_one, vips_shrinkh_gen, vips_stop_one, in, shrink ) ) return( -1 ); return( 0 ); } static void vips_shrinkh_class_init( VipsShrinkhClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_shrinkh_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "shrinkh"; vobject_class->description = _( "shrink an image horizontally" ); vobject_class->build = vips_shrinkh_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_INT( class, "hshrink", 8, _( "Hshrink" ), _( "Horizontal shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsShrinkh, hshrink ), 1, 1000000, 1 ); /* The old name .. now use h and v everywhere. */ VIPS_ARG_INT( class, "xshrink", 8, _( "Xshrink" ), _( "Horizontal shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsShrinkh, hshrink ), 1, 1000000, 1 ); } static void vips_shrinkh_init( VipsShrinkh *shrink ) { } /** * vips_shrinkh: (method) * @in: input image * @out: (out): output image * @hshrink: horizontal shrink * @...: %NULL-terminated list of optional named arguments * * Shrink @in horizontally by an integer factor. Each pixel in the output is * the average of the corresponding line of @hshrink pixels in the input. * * This is a very low-level operation: see vips_resize() for a more * convenient way to resize images. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_shrinkv(), vips_shrink(), vips_resize(), vips_affine(). * * Returns: 0 on success, -1 on error */ int vips_shrinkh( VipsImage *in, VipsImage **out, int hshrink, ... ) { va_list ap; int result; va_start( ap, hshrink ); result = vips_call_split( "shrinkh", ap, in, out, hshrink ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/resample/shrinkv.c000066400000000000000000000312011361153320700203070ustar00rootroot00000000000000/* vertical shrink with a box filter * * Copyright: 1990, N. Dessipris. * * Authors: Nicos Dessipris and Kirk Martinez * Written on: 29/04/1991 * Modified on: 2/11/92, 22/2/93 Kirk Martinez - Xres Yres & cleanup incredibly inefficient for box filters as LUTs are used instead of + Needs converting to a smoother filter: eg Gaussian! KM * 15/7/93 JC * - rewritten for partial v2 * - ANSIfied * - now shrinks any non-complex type * - no longer cloned from im_convsub() * - could be much better! see km comments above * 3/8/93 JC * - rounding bug fixed * 11/1/94 JC * - problems with .000001 and round up/down ignored! Try shrink 3738 * pixel image by 9.345000000001 * 7/10/94 JC * - IM_NEW and IM_ARRAY added * - more typedef * 3/7/95 JC * - IM_CODING_LABQ handling added here * 20/12/08 * - fall back to im_copy() for 1/1 shrink * 2/2/11 * - gtk-doc * 10/2/12 * - shrink in chunks to reduce peak memuse for large shrinks * - simpler * 12/6/12 * - redone as a class * - warn about non-int shrinks * - some tuning .. tried an int coordinate path, not worthwhile * 16/11/12 * - don't change xres/yres, see comment below * 8/4/13 * - oops demand_hint was incorrect, thanks Jan * 6/6/13 * - don't chunk horizontally, fixes seq problems with large shrink * factors * 15/8/16 * - rename yshrink -> vshrink for greater consistency * 7/3/17 * - add a seq line cache * 6/8/19 * - use a double sum buffer for int32 types */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsShrinkv { VipsResample parent_instance; int vshrink; size_t sizeof_line_buffer; } VipsShrinkv; typedef VipsResampleClass VipsShrinkvClass; G_DEFINE_TYPE( VipsShrinkv, vips_shrinkv, VIPS_TYPE_RESAMPLE ); /* Our per-sequence parameter struct. Somewhere to sum band elements. */ typedef struct { VipsRegion *ir; VipsPel *sum; } VipsShrinkvSequence; /* Free a sequence value. */ static int vips_shrinkv_stop( void *vseq, void *a, void *b ) { VipsShrinkvSequence *seq = (VipsShrinkvSequence *) vseq; VIPS_FREEF( g_object_unref, seq->ir ); VIPS_FREE( seq->sum ); VIPS_FREE( seq ); return( 0 ); } /* Make a sequence value. */ static void * vips_shrinkv_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsShrinkv *shrink = (VipsShrinkv *) b; VipsShrinkvSequence *seq; if( !(seq = VIPS_NEW( NULL, VipsShrinkvSequence )) ) return( NULL ); seq->ir = vips_region_new( in ); /* Big enough for the largest intermediate .. a whole scanline. */ seq->sum = VIPS_ARRAY( NULL, shrink->sizeof_line_buffer, VipsPel ); return( (void *) seq ); } #define ADD( ACC_TYPE, TYPE ) { \ ACC_TYPE * restrict sum = (ACC_TYPE *) seq->sum; \ TYPE * restrict p = (TYPE *) in; \ \ for( x = 0; x < sz; x++ ) \ sum[x] += p[x]; \ } /* Add a line of pixels to sum. */ static void vips_shrinkv_add_line( VipsShrinkv *shrink, VipsShrinkvSequence *seq, VipsRegion *ir, int left, int top, int width ) { VipsResample *resample = VIPS_RESAMPLE( shrink ); const int bands = resample->in->Bands * (vips_band_format_iscomplex( resample->in->BandFmt ) ? 2 : 1); const int sz = bands * width; int x; VipsPel *in = VIPS_REGION_ADDR( ir, left, top ); switch( resample->in->BandFmt ) { case VIPS_FORMAT_UCHAR: ADD( int, unsigned char ); break; case VIPS_FORMAT_CHAR: ADD( int, char ); break; case VIPS_FORMAT_USHORT: ADD( int, unsigned short ); break; case VIPS_FORMAT_SHORT: ADD( int, short ); break; case VIPS_FORMAT_UINT: ADD( double, unsigned int ); break; case VIPS_FORMAT_INT: ADD( double, int ); break; case VIPS_FORMAT_FLOAT: ADD( double, float ); break; case VIPS_FORMAT_DOUBLE: ADD( double, double ); break; case VIPS_FORMAT_COMPLEX: ADD( double, float ); break; case VIPS_FORMAT_DPCOMPLEX: ADD( double, double ); break; default: g_assert_not_reached(); } } /* Integer average. */ #define IAVG( ACC_TYPE, TYPE ) { \ ACC_TYPE * restrict sum = (ACC_TYPE *) seq->sum; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = (sum[x] + shrink->vshrink / 2) / shrink->vshrink; \ } /* Float average. */ #define FAVG( TYPE ) { \ double * restrict sum = (double *) seq->sum; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = sum[x] / shrink->vshrink; \ } /* Average the line of sums to out. */ static void vips_shrinkv_write_line( VipsShrinkv *shrink, VipsShrinkvSequence *seq, VipsRegion *or, int left, int top, int width ) { VipsResample *resample = VIPS_RESAMPLE( shrink ); const int bands = resample->in->Bands * (vips_band_format_iscomplex( resample->in->BandFmt ) ? 2 : 1); const int sz = bands * width; int x; VipsPel *out = VIPS_REGION_ADDR( or, left, top ); switch( resample->in->BandFmt ) { case VIPS_FORMAT_UCHAR: IAVG( int, unsigned char ); break; case VIPS_FORMAT_CHAR: IAVG( int, char ); break; case VIPS_FORMAT_USHORT: IAVG( int, unsigned short ); break; case VIPS_FORMAT_SHORT: IAVG( int, short ); break; case VIPS_FORMAT_UINT: IAVG( double, unsigned int ); break; case VIPS_FORMAT_INT: IAVG( double, int ); break; case VIPS_FORMAT_FLOAT: FAVG( float ); break; case VIPS_FORMAT_DOUBLE: FAVG( double ); break; case VIPS_FORMAT_COMPLEX: FAVG( float ); break; case VIPS_FORMAT_DPCOMPLEX: FAVG( double ); break; default: g_assert_not_reached(); } } static int vips_shrinkv_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsShrinkvSequence *seq = (VipsShrinkvSequence *) vseq; VipsShrinkv *shrink = (VipsShrinkv *) b; VipsRegion *ir = seq->ir; VipsRect *r = &or->valid; int y, y1; /* How do we chunk up the image? We don't want to prepare the whole of * the input region corresponding to *r since it could be huge. * * Request input a line at a time, average to a line buffer. */ #ifdef DEBUG printf( "vips_shrinkv_gen: generating %d x %d at %d x %d\n", r->width, r->height, r->left, r->top ); #endif /*DEBUG*/ for( y = 0; y < r->height; y++ ) { memset( seq->sum, 0, shrink->sizeof_line_buffer ); for( y1 = 0; y1 < shrink->vshrink; y1++ ) { VipsRect s; s.left = r->left; s.top = y1 + (y + r->top) * shrink->vshrink; s.width = r->width; s.height = 1; #ifdef DEBUG printf( "shrink_gen: requesting line %d\n", s.top ); #endif /*DEBUG*/ if( vips_region_prepare( ir, &s ) ) return( -1 ); VIPS_GATE_START( "vips_shrinkv_gen: work" ); vips_shrinkv_add_line( shrink, seq, ir, s.left, s.top, s.width ); VIPS_GATE_STOP( "vips_shrinkv_gen: work" ); } VIPS_GATE_START( "vips_shrinkv_gen: work" ); vips_shrinkv_write_line( shrink, seq, or, r->left, r->top + y, r->width ); VIPS_GATE_STOP( "vips_shrinkv_gen: work" ); } VIPS_COUNT_PIXELS( or, "vips_shrinkv_gen" ); return( 0 ); } static int vips_shrinkv_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsShrinkv *shrink = (VipsShrinkv *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_shrinkv_parent_class )->build( object ) ) return( -1 ); in = resample->in; if( shrink->vshrink < 1 ) { vips_error( class->nickname, "%s", _( "shrink factors should be >= 1" ) ); return( -1 ); } if( shrink->vshrink == 1 ) return( vips_image_write( in, resample->out ) ); /* Make the height a multiple of the shrink factor so we don't need to * average half pixels. */ if( vips_embed( in, &t[1], 0, 0, in->Xsize, VIPS_ROUND_UP( in->Ysize, shrink->vshrink ), "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[1]; /* We have to keep a line buffer as we sum columns. */ shrink->sizeof_line_buffer = in->Xsize * in->Bands * vips_format_sizeof( VIPS_FORMAT_DPCOMPLEX ); /* SMALLTILE or we'll need huge input areas for our output. In seq * mode, the linecache above will keep us sequential. */ t[2] = vips_image_new(); if( vips_image_pipelinev( t[2], VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); /* Size output. We need to always round to nearest, so round(), not * rint(). * * Don't change xres/yres, leave that to the application layer. For * example, vipsthumbnail knows the true shrink factor (including the * fractional part), we just see the integer part here. */ t[2]->Ysize = VIPS_ROUND_UINT( (double) resample->in->Ysize / shrink->vshrink ); if( t[2]->Ysize <= 0 ) { vips_error( class->nickname, "%s", _( "image has shrunk to nothing" ) ); return( -1 ); } #ifdef DEBUG printf( "vips_shrinkv_build: shrinking %d x %d image to %d x %d\n", in->Xsize, in->Ysize, t[2]->Xsize, t[2]->Ysize ); #endif /*DEBUG*/ if( vips_image_generate( t[2], vips_shrinkv_start, vips_shrinkv_gen, vips_shrinkv_stop, in, shrink ) ) return( -1 ); in = t[2]; /* Large vshrinks will throw off sequential mode. Suppose thread1 is * generating tile (0, 0), but stalls. thread2 generates tile * (0, 1), 128 lines further down the output. After it has done, * thread1 tries to generate (0, 0), but by then the pixels it needs * have gone from the input image line cache if the vshrink is large. * * To fix this, put another seq on the output of vshrink. Now we'll * always have the previous XX lines of the shrunk image, and we won't * fetch out of order. */ if( vips_image_is_sequential( in ) ) { g_info( "shrinkv sequential line cache" ); if( vips_sequential( in, &t[3], "tile_height", 10, NULL ) ) return( -1 ); in = t[3]; } if( vips_image_write( in, resample->out ) ) return( -1 ); return( 0 ); } static void vips_shrinkv_class_init( VipsShrinkvClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_shrinkv_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "shrinkv"; vobject_class->description = _( "shrink an image vertically" ); vobject_class->build = vips_shrinkv_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_INT( class, "vshrink", 9, _( "Vshrink" ), _( "Vertical shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsShrinkv, vshrink ), 1, 1000000, 1 ); /* The old name .. now use h and v everywhere. */ VIPS_ARG_INT( class, "yshrink", 9, _( "Yshrink" ), _( "Vertical shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsShrinkv, vshrink ), 1, 1000000, 1 ); } static void vips_shrinkv_init( VipsShrinkv *shrink ) { } /** * vips_shrinkv: (method) * @in: input image * @out: (out): output image * @vshrink: vertical shrink * @...: %NULL-terminated list of optional named arguments * * Shrink @in vertically by an integer factor. Each pixel in the output is * the average of the corresponding column of @vshrink pixels in the input. * * This is a very low-level operation: see vips_resize() for a more * convenient way to resize images. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_shrinkh(), vips_shrink(), vips_resize(), vips_affine(). * * Returns: 0 on success, -1 on error */ int vips_shrinkv( VipsImage *in, VipsImage **out, int vshrink, ... ) { va_list ap; int result; va_start( ap, vshrink ); result = vips_call_split( "shrinkv", ap, in, out, vshrink ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/resample/similarity.c000066400000000000000000000212221361153320700210130ustar00rootroot00000000000000/* simple wrapper over vips_affine() to make scale / rotate easy from the * command-line * * 3/10/13 * - from affine.c * 25/10/13 * - oops, reverse rotation direction to match the convention used in the * rest of vips * 13/8/14 * - oops, missing scale from b, thanks Topochicho * 7/2/16 * - use vips_reduce(), if we can * 17/11/17 * ` - add optional "background" param * ` - don't use vips_reduce() since it has no "background" param * 10/3/18 * - add vips_rotate() class for convenience */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "presample.h" typedef struct _VipsSimilarityBase { VipsResample parent_instance; double scale; double angle; VipsInterpolate *interpolate; VipsArrayDouble *background; double odx; double ody; double idx; double idy; } VipsSimilarityBase; typedef VipsResampleClass VipsSimilarityBaseClass; G_DEFINE_ABSTRACT_TYPE( VipsSimilarityBase, vips_similarity_base, VIPS_TYPE_RESAMPLE ); static int vips_similarity_base_build( VipsObject *object ) { VipsResample *resample = VIPS_RESAMPLE( object ); VipsSimilarityBase *base = (VipsSimilarityBase *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); double a = base->scale * cos( VIPS_RAD( base->angle ) ); double b = base->scale * -sin( VIPS_RAD( base->angle ) ); double c = -b; double d = a; if( VIPS_OBJECT_CLASS( vips_similarity_base_parent_class )-> build( object ) ) return( -1 ); if( vips_affine( resample->in, &t[0], a, b, c, d, "interpolate", base->interpolate, "odx", base->odx, "ody", base->ody, "idx", base->idx, "idy", base->idy, "background", base->background, NULL ) ) return( -1 ); if( vips_image_write( t[0], resample->out ) ) return( -1 ); return( 0 ); } static void vips_similarity_base_class_init( VipsSimilarityBaseClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "similarity_base"; vobject_class->description = _( "base similarity transform" ); vobject_class->build = vips_similarity_base_build; VIPS_ARG_INTERPOLATE( class, "interpolate", 5, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarityBase, interpolate ) ); VIPS_ARG_BOXED( class, "background", 6, _( "Background" ), _( "Background value" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarityBase, background ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_DOUBLE( class, "odx", 112, _( "Output offset" ), _( "Horizontal output displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarityBase, odx ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "ody", 113, _( "Output offset" ), _( "Vertical output displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarityBase, ody ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "idx", 114, _( "Input offset" ), _( "Horizontal input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarityBase, idx ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "idy", 115, _( "Input offset" ), _( "Vertical input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarityBase, idy ), -10000000, 10000000, 0 ); } static void vips_similarity_base_init( VipsSimilarityBase *base ) { base->scale = 1; base->angle = 0; base->interpolate = NULL; base->odx = 0; base->ody = 0; base->idx = 0; base->idy = 0; base->background = vips_array_double_newv( 1, 0.0 ); } typedef VipsSimilarityBase VipsSimilarity; typedef VipsSimilarityBaseClass VipsSimilarityClass; G_DEFINE_TYPE( VipsSimilarity, vips_similarity, vips_similarity_base_get_type() ); static void vips_similarity_class_init( VipsSimilarityClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "similarity"; vobject_class->description = _( "similarity transform of an image" ); VIPS_ARG_DOUBLE( class, "scale", 3, _( "Scale" ), _( "Scale by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarity, scale ), 0, 10000000, 1 ); VIPS_ARG_DOUBLE( class, "angle", 4, _( "Angle" ), _( "Rotate anticlockwise by this many degrees" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarity, angle ), -10000000, 10000000, 0 ); } static void vips_similarity_init( VipsSimilarity *similarity ) { } /** * vips_similarity: (method) * @in: input image * @out: (out): output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @scale: %gdouble, scale by this factor * * @angle: %gdouble, rotate by this many degrees clockwise * * @interpolate: #VipsInterpolate, interpolate pixels with this * * @background: #VipsArrayDouble colour for new pixels * * @idx: %gdouble, input horizontal offset * * @idy: %gdouble, input vertical offset * * @odx: %gdouble, output horizontal offset * * @ody: %gdouble, output vertical offset * * @ody: %gdouble, output vertical offset * * This operator calls vips_affine() for you, calculating the matrix for the * affine transform from @scale and @angle. Other parameters are passed on to * vips_affine() unaltered. * * See also: vips_affine(), #VipsInterpolate. * * Returns: 0 on success, -1 on error */ int vips_similarity( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "similarity", ap, in, out ); va_end( ap ); return( result ); } typedef VipsSimilarityBase VipsRotate; typedef VipsSimilarityBaseClass VipsRotateClass; G_DEFINE_TYPE( VipsRotate, vips_rotate, vips_similarity_base_get_type() ); static void vips_rotate_class_init( VipsRotateClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "rotate"; vobject_class->description = _( "rotate an image by a number of degrees" ); VIPS_ARG_DOUBLE( class, "angle", 4, _( "Angle" ), _( "Rotate anticlockwise by this many degrees" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSimilarity, angle ), -10000000, 10000000, 0 ); } static void vips_rotate_init( VipsRotate *rotate ) { } /** * vips_rotate: (method) * @in: input image * @out: (out): output image * @angle: %gdouble, rotate by this many degrees clockwise * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @interpolate: #VipsInterpolate, interpolate pixels with this * * @background: #VipsArrayDouble colour for new pixels * * @idx: %gdouble, input horizontal offset * * @idy: %gdouble, input vertical offset * * @odx: %gdouble, output horizontal offset * * @ody: %gdouble, output vertical offset * * @ody: %gdouble, output vertical offset * * This operator calls vips_affine() for you, calculating the matrix for the * affine transform from @scale and @angle. Other parameters are passed on to * vips_affine() unaltered. * * See also: vips_affine(), #VipsInterpolate. * * Returns: 0 on success, -1 on error */ int vips_rotate( VipsImage *in, VipsImage **out, double angle, ... ) { va_list ap; int result; va_start( ap, angle ); result = vips_call_split( "rotate", ap, in, out, angle ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/resample/templates.h000066400000000000000000000255701361153320700206420ustar00rootroot00000000000000/* various interpolation templates */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* * Various casts which assume that the data is already in range. (That * is, they are to be used with monotone samplers.) */ template static T inline to_fptypes( const double val ) { const T newval = val; return( newval ); } template static T inline to_withsign( const double val ) { const int sign_of_val = 2 * ( val >= 0. ) - 1; const int rounded_abs_val = .5 + sign_of_val * val; const T newval = sign_of_val * rounded_abs_val; return( newval ); } template static T inline to_nosign( const double val ) { const T newval = .5 + val; return( newval ); } /* * Various bilinear implementation templates. Note that no clampling * is used: There is an assumption that the data is such that * over/underflow is not an issue: */ /* * Bilinear interpolation for float and double types. The first four * inputs are weights, the last four are the corresponding pixel * values: */ template static T inline bilinear_fptypes( const double w_times_z, const double x_times_z, const double w_times_y, const double x_times_y, const double tre_thr, const double tre_thrfou, const double trequa_thr, const double trequa_thrfou ) { const T newval = w_times_z * tre_thr + x_times_z * tre_thrfou + w_times_y * trequa_thr + x_times_y * trequa_thrfou; return( newval ); } /* * Bilinear interpolation for signed integer types: */ template static T inline bilinear_withsign( const double w_times_z, const double x_times_z, const double w_times_y, const double x_times_y, const double tre_thr, const double tre_thrfou, const double trequa_thr, const double trequa_thrfou ) { const double val = w_times_z * tre_thr + x_times_z * tre_thrfou + w_times_y * trequa_thr + x_times_y * trequa_thrfou; const int sign_of_val = 2 * ( val >= 0. ) - 1; const int rounded_abs_val = .5 + sign_of_val * val; const T newval = sign_of_val * rounded_abs_val; return( newval ); } /* * Bilinear Interpolation for unsigned integer types: */ template static T inline bilinear_nosign( const double w_times_z, const double x_times_z, const double w_times_y, const double x_times_y, const double tre_thr, const double tre_thrfou, const double trequa_thr, const double trequa_thrfou ) { const T newval = w_times_z * tre_thr + x_times_z * tre_thrfou + w_times_y * trequa_thr + x_times_y * trequa_thrfou + 0.5; return( newval ); } /* * Bicubic (Catmull-Rom) interpolation templates: */ static int inline unsigned_fixed_round( int v ) { const int round_by = VIPS_INTERPOLATE_SCALE >> 1; return( (v + round_by) >> VIPS_INTERPOLATE_SHIFT ); } /* Fixed-point integer bicubic, used for 8-bit types. */ template static int inline bicubic_unsigned_int( const T uno_one, const T uno_two, const T uno_thr, const T uno_fou, const T dos_one, const T dos_two, const T dos_thr, const T dos_fou, const T tre_one, const T tre_two, const T tre_thr, const T tre_fou, const T qua_one, const T qua_two, const T qua_thr, const T qua_fou, const int* restrict cx, const int* restrict cy ) { const int c0 = cx[0]; const int c1 = cx[1]; const int c2 = cx[2]; const int c3 = cx[3]; const int r0 = unsigned_fixed_round( c0 * uno_one + c1 * uno_two + c2 * uno_thr + c3 * uno_fou ); const int r1 = unsigned_fixed_round( c0 * dos_one + c1 * dos_two + c2 * dos_thr + c3 * dos_fou ); const int r2 = unsigned_fixed_round( c0 * tre_one + c1 * tre_two + c2 * tre_thr + c3 * tre_fou ); const int r3 = unsigned_fixed_round( c0 * qua_one + c1 * qua_two + c2 * qua_thr + c3 * qua_fou ); return( unsigned_fixed_round( cy[0] * r0 + cy[1] * r1 + cy[2] * r2 + cy[3] * r3 ) ); } static int inline signed_fixed_round( int v ) { const int sign_of_v = 2 * (v > 0) - 1; const int round_by = sign_of_v * (VIPS_INTERPOLATE_SCALE >> 1); return( (v + round_by) >> VIPS_INTERPOLATE_SHIFT ); } /* Fixed-point integer bicubic, used for 8-bit types. */ template static int inline bicubic_signed_int( const T uno_one, const T uno_two, const T uno_thr, const T uno_fou, const T dos_one, const T dos_two, const T dos_thr, const T dos_fou, const T tre_one, const T tre_two, const T tre_thr, const T tre_fou, const T qua_one, const T qua_two, const T qua_thr, const T qua_fou, const int* restrict cx, const int* restrict cy ) { const int c0 = cx[0]; const int c1 = cx[1]; const int c2 = cx[2]; const int c3 = cx[3]; const int r0 = signed_fixed_round( c0 * uno_one + c1 * uno_two + c2 * uno_thr + c3 * uno_fou ); const int r1 = signed_fixed_round( c0 * dos_one + c1 * dos_two + c2 * dos_thr + c3 * dos_fou ); const int r2 = signed_fixed_round( c0 * tre_one + c1 * tre_two + c2 * tre_thr + c3 * tre_fou ); const int r3 = signed_fixed_round( c0 * qua_one + c1 * qua_two + c2 * qua_thr + c3 * qua_fou ); return( signed_fixed_round( cy[0] * r0 + cy[1] * r1 + cy[2] * r2 + cy[3] * r3 ) ); } template static T inline cubic_float( const T one, const T two, const T thr, const T fou, const double* restrict cx ) { return( cx[0] * one + cx[1] * two + cx[2] * thr + cx[3] * fou ); } /* Floating-point bicubic, used for int/float/double types. */ template static T inline bicubic_float( const T uno_one, const T uno_two, const T uno_thr, const T uno_fou, const T dos_one, const T dos_two, const T dos_thr, const T dos_fou, const T tre_one, const T tre_two, const T tre_thr, const T tre_fou, const T qua_one, const T qua_two, const T qua_thr, const T qua_fou, const double* restrict cx, const double* restrict cy ) { const double r0 = cubic_float( uno_one, uno_two, uno_thr, uno_fou, cx ); const double r1 = cubic_float( dos_one, dos_two, dos_thr, dos_fou, cx ); const double r2 = cubic_float( tre_one, tre_two, tre_thr, tre_fou, cx ); const double r3 = cubic_float( qua_one, qua_two, qua_thr, qua_fou, cx ); return( cubic_float( r0, r1, r2, r3, cy ) ); } /* Given an offset in [0,1] (we can have x == 1 when building tables), * calculate c0, c1, c2, c3, the catmull-rom coefficients. This is called * from the interpolator as well as from the table builder. */ static void inline calculate_coefficients_catmull( double c[4], const double x ) { /* Nicolas believes that the following is an hitherto unknown * hyper-efficient method of computing Catmull-Rom coefficients. It * only uses 4* & 1+ & 5- for a total of only 10 flops to compute * four coefficients. */ const double cr1 = 1. - x; const double cr2 = -.5 * x; const double cr3 = cr1 * cr2; const double cone = cr1 * cr3; const double cfou = x * cr3; const double cr4 = cfou - cone; const double ctwo = cr1 - cone + cr4; const double cthr = x - cfou - cr4; g_assert( x >= 0. && x <= 1. ); c[0] = cone; c[3] = cfou; c[1] = ctwo; c[2] = cthr; } /* Given an x in [0,1] (we can have x == 1 when building tables), * calculate c0 .. c(@shrink + 1), the triangle coefficients. This is called * from the interpolator as well as from the table builder. */ static void inline calculate_coefficients_triangle( double *c, const double shrink, const double x ) { /* Needs to be in sync with vips_reduce_get_points(). */ const int n_points = rint( 2 * shrink ) + 1; int i; double sum; sum = 0; for( i = 0; i < n_points; i++ ) { double xp = (i - (shrink - 0.5) - x) / shrink; double l; l = 1.0 - VIPS_FABS( xp ); l = VIPS_MAX( 0.0, l ); c[i] = l; sum += l; } for( i = 0; i < n_points; i++ ) c[i] /= sum; } /* Generate a cubic filter. See: * * Mitchell and Netravali, Reconstruction Filters in Computer Graphics * Computer Graphics, Volume 22, Number 4, August 1988. * * B = 1, C = 0 - cubic B-spline * B = 1/3, C = 1/3 - Mitchell * B = 0, C = 1/2 - Catmull-Rom spline */ static void inline calculate_coefficients_cubic( double *c, const double shrink, const double x, double B, double C ) { /* Needs to be in sync with vips_reduce_get_points(). */ const int n_points = rint( 4 * shrink ) + 1; int i; double sum; sum = 0; for( i = 0; i < n_points; i++ ) { const double xp = (i - (2 * shrink - 1) - x) / shrink; const double axp = VIPS_FABS( xp ); const double axp2 = axp * axp; const double axp3 = axp2 * axp; double l; if( axp <= 1 ) l = ((12 - 9 * B - 6 * C) * axp3 + (-18 + 12 * B + 6 * C) * axp2 + (6 - 2 * B)) / 6; else if( axp <= 2 ) l = ((-B - 6 * C) * axp3 + (6 * B + 30 * C) * axp2 + (-12 * B - 48 * C) * axp + (8 * B + 24 * C)) / 6; else l = 0.0; c[i] = l; sum += l; } for( i = 0; i < n_points; i++ ) c[i] /= sum; } /* Given an x in [0,1] (we can have x == 1 when building tables), * calculate c0 .. c(@a * @shrink + 1), the lanczos coefficients. This is called * from the interpolator as well as from the table builder. * * @a is the number of lobes, so usually 2 or 3. @shrink is the reduction * factor, so 1 for interpolation, 2 for a x2 reduction, etc. We need more * points for large decimations to avoid aliasing. */ static void inline calculate_coefficients_lanczos( double *c, const int a, const double shrink, const double x ) { /* Needs to be in sync with vips_reduce_get_points(). */ const int n_points = rint( 2 * a * shrink ) + 1; int i; double sum; sum = 0; for( i = 0; i < n_points; i++ ) { double xp = (i - (n_points - 2) / 2 - x) / shrink; double l; if( xp == 0.0 ) l = 1.0; else if( xp < -a ) l = 0.0; else if( xp > a ) l = 0.0; else l = (double) a * sin( VIPS_PI * xp ) * sin( VIPS_PI * xp / (double) a ) / (VIPS_PI * VIPS_PI * xp * xp); c[i] = l; sum += l; } for( i = 0; i < n_points; i++ ) c[i] /= sum; } /* Our inner loop for resampling with a convolution. Operate on elements of * type T, gather results in an intermediate of type IT. */ template static IT reduce_sum( const T * restrict in, int stride, const IT * restrict c, int n ) { IT sum; sum = 0; for( int i = 0; i < n; i++ ) { sum += c[i] * in[0]; in += stride; } return( sum ); } libvips-8.9.1/libvips/resample/thumbnail.c000066400000000000000000001253271361153320700206230ustar00rootroot00000000000000/* make a thumbnail ... wraps up the process of thumbnailing, including * premultiply, colour management etc etc * * 2/11/16 * - from vipsthumbnail.c * 6/1/17 * - add @size parameter * 4/5/17 * - add FORCE * 29/5/17 * - don't cache (thanks tomasc) * 30/8/17 * - add intent option, thanks kleisauke * 31/10/18 * - deprecate auto_rotate, add no_rotate * - implement shrink-on-load for openslide images * 16/11/18 * - implement shrink-on-load for tiff pyramid * 3/2/19 kleisauke * - add option_string param to thumbnail_buffer * 23/4/19 * - don't force import CMYK, since colourspace knows about it now * 24/4/19 * - support multi-page (animated) images * 27/8/19 kleisauke * - prevent over-pre-shrink in thumbnail * 30/9/19 * - smarter heif thumbnail selection * 12/10/19 * - add thumbnail_source */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #define VIPS_TYPE_THUMBNAIL (vips_thumbnail_get_type()) #define VIPS_THUMBNAIL( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), VIPS_TYPE_THUMBNAIL, VipsThumbnail )) #define VIPS_THUMBNAIL_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_THUMBNAIL, VipsThumbnailClass)) #define VIPS_IS_THUMBNAIL( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_THUMBNAIL )) #define VIPS_IS_THUMBNAIL_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_THUMBNAIL )) #define VIPS_THUMBNAIL_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_THUMBNAIL, VipsThumbnailClass )) /* Should be plenty. */ #define MAX_LEVELS (256) typedef struct _VipsThumbnail { VipsOperation parent_instance; VipsImage *out; int width; int height; VipsSize size; gboolean auto_rotate; gboolean no_rotate; VipsInteresting crop; gboolean linear; char *export_profile; char *import_profile; VipsIntent intent; /* Bits of info we read from the input image when we get the header of * the original. */ const char *loader; /* Eg. "VipsForeignLoadJpeg*" */ int input_width; int input_height; int page_height; VipsAngle angle; /* From vips_autorot_get_angle() */ int n_pages; /* Pages in file */ int n_loaded_pages; /* Pages we've loaded from file */ /* For openslide, we need to read out the size of each level too. * * These are filled out for pyr tiffs as well. */ int level_count; int level_width[MAX_LEVELS]; int level_height[MAX_LEVELS]; /* For HEIF, try to fetch the size of the stored thumbnail. */ int heif_thumbnail_width; int heif_thumbnail_height; } VipsThumbnail; typedef struct _VipsThumbnailClass { VipsOperationClass parent_class; /* Fill out the info section of VipsThumbnail from the input object. */ int (*get_info)( VipsThumbnail *thumbnail ); /* Open with some kind of shrink or scale factor. Exactly what we pass * and to what param depends on the loader. It'll be an integer shrink * factor for vips_jpegload(), a double scale factor for vips_svgload(). * * See VipsThumbnail::loader */ VipsImage *(*open)( VipsThumbnail *thumbnail, double factor ); } VipsThumbnailClass; G_DEFINE_ABSTRACT_TYPE( VipsThumbnail, vips_thumbnail, VIPS_TYPE_OPERATION ); static void vips_thumbnail_dispose( GObject *gobject ) { #ifdef DEBUG printf( "vips_thumbnail_dispose: " ); vips_object_print_name( VIPS_OBJECT( gobject ) ); printf( "\n" ); #endif /*DEBUG*/ G_OBJECT_CLASS( vips_thumbnail_parent_class )->dispose( gobject ); } static void vips_thumbnail_finalize( GObject *gobject ) { #ifdef DEBUG printf( "vips_thumbnail_finalize: " ); vips_object_print_name( VIPS_OBJECT( gobject ) ); printf( "\n" ); #endif /*DEBUG*/ G_OBJECT_CLASS( vips_thumbnail_parent_class )->finalize( gobject ); } /* Fetch an int openslide field from metadata. These are all represented as * strings. Return the default value if there's any problem. */ static int get_int( VipsImage *image, const char *field, int default_value ) { const char *str; if( vips_image_get_typeof( image, field ) && !vips_image_get_string( image, field, &str ) ) return( atoi( str ) ); return( default_value ); } static void vips_thumbnail_read_header( VipsThumbnail *thumbnail, VipsImage *image ) { thumbnail->input_width = image->Xsize; thumbnail->input_height = image->Ysize; thumbnail->angle = vips_autorot_get_angle( image ); thumbnail->page_height = vips_image_get_page_height( image ); thumbnail->n_pages = vips_image_get_n_pages( image ); /* VIPS_META_N_PAGES is the number of pages in the document, * not the number we've read out into this image. We calculate * ourselves from page_height. * * vips_image_get_page_height() has verified that Ysize is a simple * multiple of page_height. */ thumbnail->n_loaded_pages = thumbnail->input_height / thumbnail->page_height; /* For openslide, read out the level structure too. */ if( vips_isprefix( "VipsForeignLoadOpenslide", thumbnail->loader ) ) { int level_count; int level; level_count = get_int( image, "openslide.level-count", 1 ); level_count = VIPS_CLIP( 1, level_count, MAX_LEVELS ); thumbnail->level_count = level_count; for( level = 0; level < level_count; level++ ) { char name[256]; vips_snprintf( name, 256, "openslide.level[%d].width", level ); thumbnail->level_width[level] = get_int( image, name, 0 ); vips_snprintf( name, 256, "openslide.level[%d].height", level ); thumbnail->level_height[level] = get_int( image, name, 0 ); } } } /* This may not be a pyr tiff, so no error if we can't find the layers. * We just look for two or more pages following roughly /2 shrinks. */ static void vips_thumbnail_get_tiff_pyramid( VipsThumbnail *thumbnail ) { VipsThumbnailClass *class = VIPS_THUMBNAIL_GET_CLASS( thumbnail ); int i; for( i = 0; i < thumbnail->n_pages; i++ ) { VipsImage *page; int level_width; int level_height; int expected_level_width; int expected_level_height; if( !(page = class->open( thumbnail, i )) ) return; level_width = page->Xsize; level_height = page->Ysize; VIPS_UNREF( page ); expected_level_width = thumbnail->input_width / (1 << i); expected_level_height = thumbnail->input_height / (1 << i); /* This won't be exact due to rounding etc. */ if( abs( level_width - expected_level_width ) > 5 || level_width < 2 ) return; if( abs( level_height - expected_level_height ) > 5 || level_height < 2 ) return; thumbnail->level_width[i] = level_width; thumbnail->level_height[i] = level_height; } /* Now set level_count. This signals that we've found a pyramid. */ #ifdef DEBUG printf( "vips_thumbnail_get_tiff_pyramid: %d layer pyramid detected\n", thumbnail->n_pages ); #endif /*DEBUG*/ thumbnail->level_count = thumbnail->n_pages; } static int vips_thumbnail_get_heif_thumb_info( VipsThumbnail *thumbnail ) { VipsThumbnailClass *class = VIPS_THUMBNAIL_GET_CLASS( thumbnail ); VipsImage *thumb; if( !(thumb = class->open( thumbnail, 1 )) ) return( -1 ); if( thumb->Xsize < thumbnail->input_width ) { thumbnail->heif_thumbnail_width = thumb->Xsize; thumbnail->heif_thumbnail_height = thumb->Ysize; } VIPS_UNREF( thumb ); return( 0 ); } /* Calculate the shrink factor, taking into account auto-rotate, the fit mode, * and so on. * * The hshrink/vshrink are the amount to shrink the input image axes by in * order for the output axes (ie. after rotation) to match the required * thumbnail->width, thumbnail->height and fit mode. */ static void vips_thumbnail_calculate_shrink( VipsThumbnail *thumbnail, int input_width, int input_height, double *hshrink, double *vshrink ) { /* If we will be rotating, swap the target width and height. */ gboolean rotate = (thumbnail->angle == VIPS_ANGLE_D90 || thumbnail->angle == VIPS_ANGLE_D270) && thumbnail->auto_rotate; int target_width = rotate ? thumbnail->height : thumbnail->width; int target_height = rotate ? thumbnail->width : thumbnail->height; VipsDirection direction; /* Calculate the horizontal and vertical shrink we'd need to fit the * image to the bounding box, and pick the biggest. * * In crop mode, we aim to fill the bounding box, so we must use the * smaller axis. */ *hshrink = (double) input_width / target_width; *vshrink = (double) input_height / target_height; if( thumbnail->crop != VIPS_INTERESTING_NONE ) { if( *hshrink < *vshrink ) direction = VIPS_DIRECTION_HORIZONTAL; else direction = VIPS_DIRECTION_VERTICAL; } else { if( *hshrink < *vshrink ) direction = VIPS_DIRECTION_VERTICAL; else direction = VIPS_DIRECTION_HORIZONTAL; } if( thumbnail->size != VIPS_SIZE_FORCE ) { if( direction == VIPS_DIRECTION_HORIZONTAL ) *vshrink = *hshrink; else *hshrink = *vshrink; } if( thumbnail->size == VIPS_SIZE_UP ) { *hshrink = VIPS_MIN( 1, *hshrink ); *vshrink = VIPS_MIN( 1, *vshrink ); } else if( thumbnail->size == VIPS_SIZE_DOWN ) { *hshrink = VIPS_MAX( 1, *hshrink ); *vshrink = VIPS_MAX( 1, *vshrink ); } } /* Just the common part of the shrink: the bit by which both axes must be * shrunk. */ static double vips_thumbnail_calculate_common_shrink( VipsThumbnail *thumbnail, int width, int height ) { double hshrink; double vshrink; double shrink; vips_thumbnail_calculate_shrink( thumbnail, width, height, &hshrink, &vshrink ); shrink = VIPS_MIN( hshrink, vshrink ); /* We don't want to shrink so much that we send an axis to 0. */ shrink = VIPS_MIN( shrink, VIPS_MIN( width, height ) ); return( shrink ); } /* Find the best jpeg preload shrink. */ static int vips_thumbnail_find_jpegshrink( VipsThumbnail *thumbnail, int width, int height ) { double shrink = vips_thumbnail_calculate_common_shrink( thumbnail, width, height ); /* We can't use pre-shrunk images in linear mode. libjpeg shrinks in Y * (of YCbCR), not linear space. */ if( thumbnail->linear ) return( 1 ); /* Shrink-on-load is a simple block shrink and will add quite a bit of * extra sharpness to the image. We want to block shrink to a * bit above our target, then vips_shrink() / vips_reduce() to the * final size. * * Leave at least a factor of two for the final resize step. */ if( shrink >= 16 ) return( 8 ); else if( shrink >= 8 ) return( 4 ); else if( shrink >= 4 ) return( 2 ); else return( 1 ); } /* Find the best pyramid (openslide or tiff) level. */ static int vips_thumbnail_find_pyrlevel( VipsThumbnail *thumbnail, int width, int height ) { int level; g_assert( thumbnail->level_count > 0 ); g_assert( thumbnail->level_count <= MAX_LEVELS ); for( level = thumbnail->level_count - 1; level >= 0; level-- ) if( vips_thumbnail_calculate_common_shrink( thumbnail, thumbnail->level_width[level], thumbnail->level_height[level] ) >= 1.0 ) return( level ); return( 0 ); } /* Open the image, returning the best version for thumbnailing. * * For example, libjpeg supports fast shrink-on-read, so if we have a JPEG, * we can ask VIPS to load a lower resolution version. */ static VipsImage * vips_thumbnail_open( VipsThumbnail *thumbnail ) { VipsThumbnailClass *class = VIPS_THUMBNAIL_GET_CLASS( thumbnail ); VipsImage *im; double factor; if( class->get_info( thumbnail ) ) return( NULL ); g_info( "selected loader is %s", thumbnail->loader ); g_info( "input size is %d x %d", thumbnail->input_width, thumbnail->input_height ); /* For tiff, we need a separate ->open() for each page to * get all the pyramid levels. */ if( vips_isprefix( "VipsForeignLoadTiff", thumbnail->loader ) ) vips_thumbnail_get_tiff_pyramid( thumbnail ); /* For heif, we need to fetch the thumbnail size, in case we can use * that as the source. */ if( vips_isprefix( "VipsForeignLoadHeif", thumbnail->loader ) ) vips_thumbnail_get_heif_thumb_info( thumbnail ); /* We read the openslide level structure in * vips_thumbnail_read_header(). */ factor = 1.0; if( vips_isprefix( "VipsForeignLoadJpeg", thumbnail->loader ) ) factor = vips_thumbnail_find_jpegshrink( thumbnail, thumbnail->input_width, thumbnail->input_height ); else if( vips_isprefix( "VipsForeignLoadTiff", thumbnail->loader ) || vips_isprefix( "VipsForeignLoadOpenslide", thumbnail->loader ) ) factor = vips_thumbnail_find_pyrlevel( thumbnail, thumbnail->input_width, thumbnail->input_height ); else if( vips_isprefix( "VipsForeignLoadPdf", thumbnail->loader ) || vips_isprefix( "VipsForeignLoadWebp", thumbnail->loader ) || vips_isprefix( "VipsForeignLoadSvg", thumbnail->loader ) ) factor = vips_thumbnail_calculate_common_shrink( thumbnail, thumbnail->input_width, thumbnail->page_height ); else if( vips_isprefix( "VipsForeignLoadHeif", thumbnail->loader ) ) { /* 'factor' is a gboolean which enables thumbnail load instead * of image load. * * Use the thumbnail if, by using it, we could get a factor >= * 1.0, ie. we would not need to expand the thumbnail. */ double shrink_factor = vips_thumbnail_calculate_common_shrink( thumbnail, thumbnail->heif_thumbnail_width, thumbnail->heif_thumbnail_height ); factor = shrink_factor >= 1.0 ? 1 : 0; } g_info( "loading with factor %g pre-shrink", factor ); if( !(im = class->open( thumbnail, factor )) ) return( NULL ); g_info( "pre-shrunk size is %d x %d", im->Xsize, im->Ysize ); return( im ); } static int vips_thumbnail_build( VipsObject *object ) { VipsThumbnail *thumbnail = VIPS_THUMBNAIL( object ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 15 ); VipsInterpretation interpretation = thumbnail->linear ? VIPS_INTERPRETATION_scRGB : VIPS_INTERPRETATION_sRGB; VipsImage *in; int preshrunk_page_height; double hshrink; double vshrink; /* TRUE if we've done the import of an ICC transform and still need to * export. */ gboolean have_imported; /* TRUE if we've premultiplied and need to unpremultiply. */ gboolean have_premultiplied; VipsBandFormat unpremultiplied_format; #ifdef DEBUG printf( "vips_thumbnail_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_thumbnail_parent_class )->build( object ) ) return( -1 ); /* We have to support both no_rotate and auto_rotate optional args, * with no_rotate being the new and not-deprecated one. * * If the new no_rotate flag has been set, that value overrides * auto_rotate. */ if( vips_object_argument_isset( object, "no_rotate" ) ) thumbnail->auto_rotate = !thumbnail->no_rotate; if( !vips_object_argument_isset( object, "height" ) ) thumbnail->height = thumbnail->width; /* Open and do any pre-shrinking. */ if( !(t[0] = vips_thumbnail_open( thumbnail )) ) return( -1 ); in = t[0]; /* After pre-shrink, but before the main shrink stage. */ preshrunk_page_height = vips_image_get_page_height( in ); /* RAD needs special unpacking. */ if( in->Coding == VIPS_CODING_RAD ) { g_info( "unpacking Rad to float" ); /* rad is scrgb. */ if( vips_rad2float( in, &t[12], NULL ) ) return( -1 ); in = t[12]; } /* In linear mode, we import right at the start. * * We also have to import the whole image if it's CMYK, since * vips_colourspace() (see below) doesn't let you specify the fallback * profile. * * This is only going to work for images in device space. If you have * an image in PCS which also has an attached profile, strange things * will happen. */ have_imported = FALSE; if( thumbnail->linear && in->Coding == VIPS_CODING_NONE && (in->BandFmt == VIPS_FORMAT_UCHAR || in->BandFmt == VIPS_FORMAT_USHORT) && (vips_image_get_typeof( in, VIPS_META_ICC_NAME ) || thumbnail->import_profile) ) { g_info( "importing to XYZ PCS" ); if( thumbnail->import_profile ) g_info( "fallback input profile %s", thumbnail->import_profile ); if( vips_icc_import( in, &t[1], "input_profile", thumbnail->import_profile, "embedded", TRUE, "intent", thumbnail->intent, "pcs", VIPS_PCS_XYZ, NULL ) ) return( -1 ); in = t[1]; have_imported = TRUE; } /* To the processing colourspace. This will unpack LABQ, import CMYK, * etc. * * If this is a CMYK image, we need to set have_imported since we only * want to export at the end. */ if( in->Type == VIPS_INTERPRETATION_CMYK ) have_imported = TRUE; g_info( "converting to processing space %s", vips_enum_nick( VIPS_TYPE_INTERPRETATION, interpretation ) ); if( vips_colourspace( in, &t[2], interpretation, NULL ) ) return( -1 ); in = t[2]; /* If there's an alpha, we have to premultiply before shrinking. See * https://github.com/libvips/libvips/issues/291 */ have_premultiplied = FALSE; if( vips_image_hasalpha( in ) ) { g_info( "premultiplying alpha" ); if( vips_premultiply( in, &t[3], NULL ) ) return( -1 ); have_premultiplied = TRUE; /* vips_premultiply() makes a float image. When we * vips_unpremultiply() below, we need to cast back to the * pre-premultiply format. */ unpremultiplied_format = in->BandFmt; in = t[3]; } /* Shrink to preshrunk_page_height, so we work for multi-page images. */ vips_thumbnail_calculate_shrink( thumbnail, in->Xsize, preshrunk_page_height, &hshrink, &vshrink ); /* In toilet-roll mode, we must adjust vshrink so that we exactly hit * page_height or we'll have pixels straddling page boundaries. */ if( in->Ysize > preshrunk_page_height ) { int target_page_height = VIPS_RINT( preshrunk_page_height / vshrink ); int target_image_height = target_page_height * thumbnail->n_loaded_pages; vshrink = (double) in->Ysize / target_image_height; } if( vips_resize( in, &t[4], 1.0 / hshrink, "vscale", 1.0 / vshrink, NULL ) ) return( -1 ); in = t[4]; /* Only set page-height if we have more than one page, or this could * accidentally turn into an animated image later. */ if( thumbnail->n_loaded_pages > 1 ) { int output_page_height = VIPS_RINT( preshrunk_page_height / vshrink ); if( vips_copy( in, &t[13], NULL ) ) return( -1 ); in = t[13]; vips_image_set_int( in, VIPS_META_PAGE_HEIGHT, output_page_height ); } if( have_premultiplied ) { g_info( "unpremultiplying alpha" ); if( vips_unpremultiply( in, &t[5], NULL ) || vips_cast( t[5], &t[6], unpremultiplied_format, NULL ) ) return( -1 ); in = t[6]; } /* Colour management. * * If we've already imported, just export. Otherwise, we're in * device space and we need a combined import/export to transform to * the target space. */ if( have_imported ) { if( thumbnail->export_profile || vips_image_get_typeof( in, VIPS_META_ICC_NAME ) ) { g_info( "exporting to device space with a profile" ); if( vips_icc_export( in, &t[7], "output_profile", thumbnail->export_profile, "intent", thumbnail->intent, NULL ) ) return( -1 ); in = t[7]; } else { g_info( "converting to sRGB" ); if( vips_colourspace( in, &t[7], VIPS_INTERPRETATION_sRGB, NULL ) ) return( -1 ); in = t[7]; } } else if( thumbnail->export_profile && (vips_image_get_typeof( in, VIPS_META_ICC_NAME ) || thumbnail->import_profile) ) { g_info( "transforming to %s", thumbnail->export_profile ); if( thumbnail->import_profile ) g_info( "fallback input profile %s", thumbnail->import_profile ); if( vips_icc_transform( in, &t[7], thumbnail->export_profile, "input_profile", thumbnail->import_profile, "intent", thumbnail->intent, "embedded", TRUE, NULL ) ) return( -1 ); in = t[7]; } if( thumbnail->auto_rotate && thumbnail->angle != VIPS_ANGLE_D0 ) { VipsAngle angle = vips_autorot_get_angle( in ); g_info( "rotating by %s", vips_enum_nick( VIPS_TYPE_ANGLE, angle ) ); /* Need to copy to memory, we have to stay seq. */ if( !(t[9] = vips_image_copy_memory( in )) || vips_rot( t[9], &t[10], angle, NULL ) || vips_copy( t[10], &t[14], NULL ) ) return( -1 ); in = t[14]; vips_autorot_remove_angle( in ); } /* Crop after rotate so we don't need to rotate the crop box. */ if( thumbnail->crop != VIPS_INTERESTING_NONE ) { g_info( "cropping to %dx%d", thumbnail->width, thumbnail->height ); /* Need to copy to memory, we have to stay seq. * * FIXME ... could skip the copy if we've rotated. */ if( !(t[8] = vips_image_copy_memory( in )) || vips_smartcrop( t[8], &t[11], thumbnail->width, thumbnail->height, "interesting", thumbnail->crop, NULL ) ) return( -1 ); in = t[11]; } g_object_set( thumbnail, "out", vips_image_new(), NULL ); if( vips_image_write( in, thumbnail->out ) ) return( -1 ); return( 0 ); } static void vips_thumbnail_class_init( VipsThumbnailClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->dispose = vips_thumbnail_dispose; gobject_class->finalize = vips_thumbnail_finalize; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "thumbnail_base"; vobject_class->description = _( "thumbnail generation" ); vobject_class->build = vips_thumbnail_build; /* We mustn't cache these calls, since we open the file or buffer in * sequential mode. */ operation_class->flags = VIPS_OPERATION_NOCACHE; VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsThumbnail, out ) ); VIPS_ARG_INT( class, "width", 3, _( "Target width" ), _( "Size to this width" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsThumbnail, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 113, _( "Target height" ), _( "Size to this height" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsThumbnail, height ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_ENUM( class, "size", 114, _( "size" ), _( "Only upsize, only downsize, or both" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsThumbnail, size ), VIPS_TYPE_SIZE, VIPS_SIZE_BOTH ); VIPS_ARG_BOOL( class, "no_rotate", 115, _( "No rotate" ), _( "Don't use orientation tags to rotate image upright" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsThumbnail, no_rotate ), FALSE ); VIPS_ARG_ENUM( class, "crop", 116, _( "Crop" ), _( "Reduce to fill target rectangle, then crop" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsThumbnail, crop ), VIPS_TYPE_INTERESTING, VIPS_INTERESTING_NONE ); VIPS_ARG_BOOL( class, "linear", 117, _( "Linear" ), _( "Reduce in linear light" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsThumbnail, linear ), FALSE ); VIPS_ARG_STRING( class, "import_profile", 118, _( "Import profile" ), _( "Fallback import profile" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsThumbnail, import_profile ), NULL ); VIPS_ARG_STRING( class, "export_profile", 119, _( "Export profile" ), _( "Fallback export profile" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsThumbnail, export_profile ), NULL ); VIPS_ARG_ENUM( class, "intent", 120, _( "Intent" ), _( "Rendering intent" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsThumbnail, intent ), VIPS_TYPE_INTENT, VIPS_INTENT_RELATIVE ); /* BOOL args which default TRUE arguments don't work with the * command-line -- GOption does not allow --auto-rotate=false. * * This is now replaced (though still functional) with "no-rotate", * see above. */ VIPS_ARG_BOOL( class, "auto_rotate", 121, _( "Auto rotate" ), _( "Use orientation tags to rotate image upright" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsThumbnail, auto_rotate ), TRUE ); } static void vips_thumbnail_init( VipsThumbnail *thumbnail ) { thumbnail->width = 1; thumbnail->height = 1; thumbnail->auto_rotate = TRUE; thumbnail->intent = VIPS_INTENT_RELATIVE; } typedef struct _VipsThumbnailFile { VipsThumbnail parent_object; char *filename; } VipsThumbnailFile; typedef VipsThumbnailClass VipsThumbnailFileClass; G_DEFINE_TYPE( VipsThumbnailFile, vips_thumbnail_file, vips_thumbnail_get_type() ); /* Get the info from a file. */ static int vips_thumbnail_file_get_info( VipsThumbnail *thumbnail ) { VipsThumbnailFile *file = (VipsThumbnailFile *) thumbnail; VipsImage *image; g_info( "thumbnailing %s", file->filename ); if( !(thumbnail->loader = vips_foreign_find_load( file->filename )) || !(image = vips_image_new_from_file( file->filename, NULL )) ) return( -1 ); vips_thumbnail_read_header( thumbnail, image ); g_object_unref( image ); return( 0 ); } /* Open an image, pre-shrinking as appropriate. */ static VipsImage * vips_thumbnail_file_open( VipsThumbnail *thumbnail, double factor ) { VipsThumbnailFile *file = (VipsThumbnailFile *) thumbnail; if( vips_isprefix( "VipsForeignLoadJpeg", thumbnail->loader ) ) { return( vips_image_new_from_file( file->filename, "access", VIPS_ACCESS_SEQUENTIAL, "shrink", (int) factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadOpenslide", thumbnail->loader ) ) { return( vips_image_new_from_file( file->filename, "access", VIPS_ACCESS_SEQUENTIAL, "level", (int) factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadPdf", thumbnail->loader ) || vips_isprefix( "VipsForeignLoadSvg", thumbnail->loader ) || vips_isprefix( "VipsForeignLoadWebp", thumbnail->loader ) ) { return( vips_image_new_from_file( file->filename, "access", VIPS_ACCESS_SEQUENTIAL, "scale", 1.0 / factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadTiff", thumbnail->loader ) ) { return( vips_image_new_from_file( file->filename, "access", VIPS_ACCESS_SEQUENTIAL, "page", (int) factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadHeif", thumbnail->loader ) ) { return( vips_image_new_from_file( file->filename, "access", VIPS_ACCESS_SEQUENTIAL, "thumbnail", (int) factor, NULL ) ); } else { return( vips_image_new_from_file( file->filename, "access", VIPS_ACCESS_SEQUENTIAL, NULL ) ); } } static void vips_thumbnail_file_class_init( VipsThumbnailClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsThumbnailClass *thumbnail_class = VIPS_THUMBNAIL_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "thumbnail"; vobject_class->description = _( "generate thumbnail from file" ); thumbnail_class->get_info = vips_thumbnail_file_get_info; thumbnail_class->open = vips_thumbnail_file_open; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to read from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsThumbnailFile, filename ), NULL ); } static void vips_thumbnail_file_init( VipsThumbnailFile *file ) { } /** * vips_thumbnail: * @filename: file to read from * @out: (out): output image * @width: target width in pixels * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @height: %gint, target height in pixels * * @size: #VipsSize, upsize, downsize, both or force * * @no_rotate: %gboolean, don't rotate upright using orientation tag * * @crop: #VipsInteresting, shrink and crop to fill target * * @linear: %gboolean, perform shrink in linear light * * @import_profile: %gchararray, fallback import ICC profile * * @export_profile: %gchararray, export ICC profile * * @intent: #VipsIntent, rendering intent * * Make a thumbnail from a file. Shrinking is done in three stages: using any * shrink-on-load features available in the file import library, using a block * shrink, and using a lanczos3 shrink. At least the final 200% is done with * lanczos3. The output should be high quality, and the operation should be * quick. * * See vips_thumbnail_buffer() to thumbnail from a memory source. * * The output image will fit within a square of size @width x @width. You can * specify a separate height with the @height option. * * If you set @crop, then the output image will fill the whole of the @width x * @height rectangle, with any excess cropped away. See vips_smartcrop() for * details on the cropping strategy. * * Normally the operation will upsize or downsize as required to fit the image * inside or outside the target size. If @size is set * to #VIPS_SIZE_UP, the operation will only upsize and will just * copy if asked to downsize. * If @size is set * to #VIPS_SIZE_DOWN, the operation will only downsize and will just * copy if asked to upsize. * If @size is #VIPS_SIZE_FORCE, the image aspect ratio will be broken and the * image will be forced to fit the target. * * Normally any orientation tags on the input image (such as EXIF tags) are * interpreted to rotate the image upright. If you set @no_rotate to %TRUE, * these tags will not be interpreted. * * Shrinking is normally done in sRGB colourspace. Set @linear to shrink in * linear light colourspace instead. This can give better results, but can * also be far slower, since tricks like JPEG shrink-on-load cannot be used in * linear space. * * If you set @export_profile to the filename of an ICC profile, the image * will be transformed to the target colourspace before writing to the * output. You can also give an @import_profile which will be used if the * input image has no ICC profile, or if the profile embedded in the * input image is broken. * * Use @intent to set the rendering intent for any ICC transform. The default * is #VIPS_INTENT_RELATIVE. * * See also: vips_thumbnail_buffer(). * * Returns: 0 on success, -1 on error. */ int vips_thumbnail( const char *filename, VipsImage **out, int width, ... ) { va_list ap; int result; va_start( ap, width ); result = vips_call_split( "thumbnail", ap, filename, out, width ); va_end( ap ); return( result ); } typedef struct _VipsThumbnailBuffer { VipsThumbnail parent_object; VipsArea *buf; char *option_string; } VipsThumbnailBuffer; typedef VipsThumbnailClass VipsThumbnailBufferClass; G_DEFINE_TYPE( VipsThumbnailBuffer, vips_thumbnail_buffer, vips_thumbnail_get_type() ); /* Get the info from a buffer. */ static int vips_thumbnail_buffer_get_info( VipsThumbnail *thumbnail ) { VipsThumbnailBuffer *buffer = (VipsThumbnailBuffer *) thumbnail; VipsImage *image; g_info( "thumbnailing %zd bytes of data", buffer->buf->length ); if( !(thumbnail->loader = vips_foreign_find_load_buffer( buffer->buf->data, buffer->buf->length )) || !(image = vips_image_new_from_buffer( buffer->buf->data, buffer->buf->length, buffer->option_string, NULL )) ) return( -1 ); vips_thumbnail_read_header( thumbnail, image ); g_object_unref( image ); return( 0 ); } /* Open an image, scaling as appropriate. */ static VipsImage * vips_thumbnail_buffer_open( VipsThumbnail *thumbnail, double factor ) { VipsThumbnailBuffer *buffer = (VipsThumbnailBuffer *) thumbnail; if( vips_isprefix( "VipsForeignLoadJpeg", thumbnail->loader ) ) { return( vips_image_new_from_buffer( buffer->buf->data, buffer->buf->length, buffer->option_string, "access", VIPS_ACCESS_SEQUENTIAL, "shrink", (int) factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadOpenslide", thumbnail->loader ) ) { return( vips_image_new_from_buffer( buffer->buf->data, buffer->buf->length, buffer->option_string, "access", VIPS_ACCESS_SEQUENTIAL, "level", (int) factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadPdf", thumbnail->loader ) || vips_isprefix( "VipsForeignLoadSvg", thumbnail->loader ) || vips_isprefix( "VipsForeignLoadWebp", thumbnail->loader ) ) { return( vips_image_new_from_buffer( buffer->buf->data, buffer->buf->length, buffer->option_string, "access", VIPS_ACCESS_SEQUENTIAL, "scale", 1.0 / factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadTiff", thumbnail->loader ) ) { return( vips_image_new_from_buffer( buffer->buf->data, buffer->buf->length, buffer->option_string, "access", VIPS_ACCESS_SEQUENTIAL, "page", (int) factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadHeif", thumbnail->loader ) ) { return( vips_image_new_from_buffer( buffer->buf->data, buffer->buf->length, buffer->option_string, "access", VIPS_ACCESS_SEQUENTIAL, "thumbnail", (int) factor, NULL ) ); } else { return( vips_image_new_from_buffer( buffer->buf->data, buffer->buf->length, buffer->option_string, "access", VIPS_ACCESS_SEQUENTIAL, NULL ) ); } } static void vips_thumbnail_buffer_class_init( VipsThumbnailClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsThumbnailClass *thumbnail_class = VIPS_THUMBNAIL_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "thumbnail_buffer"; vobject_class->description = _( "generate thumbnail from buffer" ); thumbnail_class->get_info = vips_thumbnail_buffer_get_info; thumbnail_class->open = vips_thumbnail_buffer_open; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsThumbnailBuffer, buf ), VIPS_TYPE_BLOB ); VIPS_ARG_STRING( class, "option_string", 20, _( "Extra options" ), _( "Options that are passed on to the underlying loader" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsThumbnailBuffer, option_string ), "" ); } static void vips_thumbnail_buffer_init( VipsThumbnailBuffer *buffer ) { } /** * vips_thumbnail_buffer: * @buf: (array length=len) (element-type guint8): memory area to load * @len: (type gsize): size of memory area * @out: (out): output image * @width: target width in pixels * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @height: %gint, target height in pixels * * @size: #VipsSize, upsize, downsize, both or force * * @no_rotate: %gboolean, don't rotate upright using orientation tag * * @crop: #VipsInteresting, shrink and crop to fill target * * @linear: %gboolean, perform shrink in linear light * * @import_profile: %gchararray, fallback import ICC profile * * @export_profile: %gchararray, export ICC profile * * @intent: #VipsIntent, rendering intent * * Exacty as vips_thumbnail(), but read from a memory buffer. * * See also: vips_thumbnail(). * * Returns: 0 on success, -1 on error. */ int vips_thumbnail_buffer( void *buf, size_t len, VipsImage **out, int width, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, width ); result = vips_call_split( "thumbnail_buffer", ap, blob, out, width ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } typedef struct _VipsThumbnailSource { VipsThumbnail parent_object; VipsSource *source; char *option_string; } VipsThumbnailSource; typedef VipsThumbnailClass VipsThumbnailSourceClass; G_DEFINE_TYPE( VipsThumbnailSource, vips_thumbnail_source, vips_thumbnail_get_type() ); /* Get the info from a source. */ static int vips_thumbnail_source_get_info( VipsThumbnail *thumbnail ) { VipsThumbnailSource *source = (VipsThumbnailSource *) thumbnail; VipsImage *image; g_info( "thumbnailing source" ); if( !(thumbnail->loader = vips_foreign_find_load_source( source->source )) || !(image = vips_image_new_from_source( source->source, source->option_string, NULL )) ) return( -1 ); vips_thumbnail_read_header( thumbnail, image ); g_object_unref( image ); return( 0 ); } /* Open an image, scaling as appropriate. */ static VipsImage * vips_thumbnail_source_open( VipsThumbnail *thumbnail, double factor ) { VipsThumbnailSource *source = (VipsThumbnailSource *) thumbnail; if( vips_isprefix( "VipsForeignLoadJpeg", thumbnail->loader ) ) { return( vips_image_new_from_source( source->source, source->option_string, "access", VIPS_ACCESS_SEQUENTIAL, "shrink", (int) factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadOpenslide", thumbnail->loader ) ) { return( vips_image_new_from_source( source->source, source->option_string, "access", VIPS_ACCESS_SEQUENTIAL, "level", (int) factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadPdf", thumbnail->loader ) || vips_isprefix( "VipsForeignLoadSvg", thumbnail->loader ) || vips_isprefix( "VipsForeignLoadWebp", thumbnail->loader ) ) { return( vips_image_new_from_source( source->source, source->option_string, "access", VIPS_ACCESS_SEQUENTIAL, "scale", 1.0 / factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadTiff", thumbnail->loader ) ) { return( vips_image_new_from_source( source->source, source->option_string, "access", VIPS_ACCESS_SEQUENTIAL, "page", (int) factor, NULL ) ); } else if( vips_isprefix( "VipsForeignLoadHeif", thumbnail->loader ) ) { return( vips_image_new_from_source( source->source, source->option_string, "access", VIPS_ACCESS_SEQUENTIAL, "thumbnail", (int) factor, NULL ) ); } else { return( vips_image_new_from_source( source->source, source->option_string, "access", VIPS_ACCESS_SEQUENTIAL, NULL ) ); } } static void vips_thumbnail_source_class_init( VipsThumbnailClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsThumbnailClass *thumbnail_class = VIPS_THUMBNAIL_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "thumbnail_source"; vobject_class->description = _( "generate thumbnail from source" ); thumbnail_class->get_info = vips_thumbnail_source_get_info; thumbnail_class->open = vips_thumbnail_source_open; VIPS_ARG_OBJECT( class, "source", 1, _( "Source" ), _( "Source to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsThumbnailSource, source ), VIPS_TYPE_SOURCE ); VIPS_ARG_STRING( class, "option_string", 20, _( "Extra options" ), _( "Options that are passed on to the underlying loader" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsThumbnailSource, option_string ), "" ); } static void vips_thumbnail_source_init( VipsThumbnailSource *source ) { } /** * vips_thumbnail_source: * @source: source to thumbnail * @out: (out): output image * @width: target width in pixels * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @height: %gint, target height in pixels * * @size: #VipsSize, upsize, downsize, both or force * * @no_rotate: %gboolean, don't rotate upright using orientation tag * * @crop: #VipsInteresting, shrink and crop to fill target * * @linear: %gboolean, perform shrink in linear light * * @import_profile: %gchararray, fallback import ICC profile * * @export_profile: %gchararray, export ICC profile * * @intent: #VipsIntent, rendering intent * * Exactly as vips_thumbnail(), but read from a source. * * See also: vips_thumbnail(). * * Returns: 0 on success, -1 on error. */ int vips_thumbnail_source( VipsSource *source, VipsImage **out, int width, ... ) { va_list ap; int result; va_start( ap, width ); result = vips_call_split( "thumbnail_source", ap, source, out, width ); va_end( ap ); return( result ); } typedef struct _VipsThumbnailImage { VipsThumbnail parent_object; VipsImage *in; } VipsThumbnailImage; typedef VipsThumbnailClass VipsThumbnailImageClass; G_DEFINE_TYPE( VipsThumbnailImage, vips_thumbnail_image, vips_thumbnail_get_type() ); /* Get the info from a image. */ static int vips_thumbnail_image_get_info( VipsThumbnail *thumbnail ) { VipsThumbnailImage *image = (VipsThumbnailImage *) thumbnail; /* Doesn't really matter what we put here. */ thumbnail->loader = "image source"; vips_thumbnail_read_header( thumbnail, image->in ); return( 0 ); } /* Open an image. We can't pre-shrink with an image source, sadly. */ static VipsImage * vips_thumbnail_image_open( VipsThumbnail *thumbnail, double factor ) { VipsThumbnailImage *image = (VipsThumbnailImage *) thumbnail; g_object_ref( image->in ); return( image->in ); } static void vips_thumbnail_image_class_init( VipsThumbnailClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsThumbnailClass *thumbnail_class = VIPS_THUMBNAIL_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "thumbnail_image"; vobject_class->description = _( "generate thumbnail from image" ); thumbnail_class->get_info = vips_thumbnail_image_get_info; thumbnail_class->open = vips_thumbnail_image_open; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsThumbnailImage, in ) ); } static void vips_thumbnail_image_init( VipsThumbnailImage *image ) { } /** * vips_thumbnail_image: (method) * @in: input image * @out: (out): output image * @width: target width in pixels * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * * @height: %gint, target height in pixels * * @size: #VipsSize, upsize, downsize, both or force * * @no_rotate: %gboolean, don't rotate upright using orientation tag * * @crop: #VipsInteresting, shrink and crop to fill target * * @linear: %gboolean, perform shrink in linear light * * @import_profile: %gchararray, fallback import ICC profile * * @export_profile: %gchararray, export ICC profile * * @intent: #VipsIntent, rendering intent * * Exacty as vips_thumbnail(), but read from an existing image. * * See also: vips_thumbnail(). * * Returns: 0 on success, -1 on error. */ int vips_thumbnail_image( VipsImage *in, VipsImage **out, int width, ... ) { va_list ap; int result; va_start( ap, width ); result = vips_call_split( "thumbnail_image", ap, in, out, width ); va_end( ap ); return( result ); } libvips-8.9.1/libvips/resample/transform.c000066400000000000000000000144301361153320700206430ustar00rootroot00000000000000/* affine transforms */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include /* Calculate the inverse transformation. */ int vips__transform_calc_inverse( VipsTransformation *trn ) { DOUBLEMASK *msk, *msk2; if( !(msk = im_create_dmaskv( "boink", 2, 2, trn->a, trn->b, trn->c, trn->d )) ) return( -1 ); if( !(msk2 = im_matinv( msk, "boink2" )) ) { (void) im_free_dmask( msk ); return( -1 ); } trn->ia = msk2->coeff[0]; trn->ib = msk2->coeff[1]; trn->ic = msk2->coeff[2]; trn->id = msk2->coeff[3]; (void) im_free_dmask( msk ); (void) im_free_dmask( msk2 ); return( 0 ); } /* Init a VipsTransform. */ void vips__transform_init( VipsTransformation *trn ) { trn->oarea.left = 0; trn->oarea.top = 0; trn->oarea.width = -1; trn->oarea.height = -1; trn->iarea.left = 0; trn->iarea.top = 0; trn->iarea.width = -1; trn->iarea.height = -1; trn->a = 1.0; /* Identity transform */ trn->b = 0.0; trn->c = 0.0; trn->d = 1.0; trn->idx = 0.0; trn->idy = 0.0; trn->odx = 0.0; trn->ody = 0.0; (void) vips__transform_calc_inverse( trn ); } /* Test for transform is identity function. */ int vips__transform_isidentity( const VipsTransformation *trn ) { if( trn->a == 1.0 && trn->b == 0.0 && trn->c == 0.0 && trn->d == 1.0 && trn->idx == 0.0 && trn->idy == 0.0 && trn->odx == 0.0 && trn->ody == 0.0 ) return( 1 ); else return( 0 ); } /* Combine two transformations. out can be one of the ins. */ int vips__transform_add( const VipsTransformation *in1, const VipsTransformation *in2, VipsTransformation *out ) { out->a = in1->a * in2->a + in1->c * in2->b; out->b = in1->b * in2->a + in1->d * in2->b; out->c = in1->a * in2->c + in1->c * in2->d; out->d = in1->b * in2->c + in1->d * in2->d; // fixme: do idx/idy as well out->odx = in1->odx * in2->a + in1->ody * in2->b + in2->odx; out->ody = in1->odx * in2->c + in1->ody * in2->d + in2->ody; if( vips__transform_calc_inverse( out ) ) return( -1 ); return( 0 ); } void vips__transform_print( const VipsTransformation *trn ) { printf( "vips__transform_print:\n" ); printf( " iarea: left=%d, top=%d, width=%d, height=%d\n", trn->iarea.left, trn->iarea.top, trn->iarea.width, trn->iarea.height ); printf( " oarea: left=%d, top=%d, width=%d, height=%d\n", trn->oarea.left, trn->oarea.top, trn->oarea.width, trn->oarea.height ); printf( " mat: a=%g, b=%g, c=%g, d=%g\n", trn->a, trn->b, trn->c, trn->d ); printf( " off: odx=%g, ody=%g, idx=%g, idy=%g\n", trn->odx, trn->ody, trn->idx, trn->idy ); } /* Map a pixel coordinate through the transform. */ void vips__transform_forward_point( const VipsTransformation *trn, double x, double y, /* In input space */ double *ox, double *oy )/* In output space */ { x += trn->idx; y += trn->idy; *ox = trn->a * x + trn->b * y + trn->odx; *oy = trn->c * x + trn->d * y + trn->ody; } /* Map a pixel coordinate through the inverse transform. */ void vips__transform_invert_point( const VipsTransformation *trn, double x, double y, /* In output space */ double *ox, double *oy )/* In input space */ { x -= trn->odx; y -= trn->ody; *ox = trn->ia * x + trn->ib * y - trn->idx; *oy = trn->ic * x + trn->id * y - trn->idy; } typedef void (*transform_fn)( const VipsTransformation *, const double, const double, double*, double* ); /* Transform a rect using a point transformer. */ static void transform_rect( const VipsTransformation *trn, transform_fn transform, const VipsRect *in, /* In input space */ VipsRect *out ) /* In output space */ { double x1, y1; /* Map corners */ double x2, y2; double x3, y3; double x4, y4; double left, right, top, bottom; /* Map input VipsRect. */ transform( trn, in->left, in->top, &x1, &y1 ); transform( trn, in->left, VIPS_RECT_BOTTOM( in ), &x3, &y3 ); transform( trn, VIPS_RECT_RIGHT( in ), in->top, &x2, &y2 ); transform( trn, VIPS_RECT_RIGHT( in ), VIPS_RECT_BOTTOM( in ), &x4, &y4 ); /* Find bounding box for these four corners. Round-to-nearest to try * to stop rounding errors growing images. */ left = VIPS_MIN( x1, VIPS_MIN( x2, VIPS_MIN( x3, x4 ) ) ); right = VIPS_MAX( x1, VIPS_MAX( x2, VIPS_MAX( x3, x4 ) ) ); top = VIPS_MIN( y1, VIPS_MIN( y2, VIPS_MIN( y3, y4 ) ) ); bottom = VIPS_MAX( y1, VIPS_MAX( y2, VIPS_MAX( y3, y4 ) ) ); out->left = VIPS_ROUND_INT( left ); out->top = VIPS_ROUND_INT( top ); out->width = VIPS_ROUND_INT( right - left ); out->height = VIPS_ROUND_INT( bottom - top ); } /* Given an area in the input image, calculate the bounding box for those * pixels in the output image. */ void vips__transform_forward_rect( const VipsTransformation *trn, const VipsRect *in, /* In input space */ VipsRect *out ) /* In output space */ { transform_rect( trn, vips__transform_forward_point, in, out ); } /* Given an area in the output image, calculate the bounding box for the * corresponding pixels in the input image. */ void vips__transform_invert_rect( const VipsTransformation *trn, const VipsRect *in, /* In output space */ VipsRect *out ) /* In input space */ { transform_rect( trn, vips__transform_invert_point, in, out ); } /* Set output area of trn so that it just holds all of our input pels. */ void vips__transform_set_area( VipsTransformation *trn ) { vips__transform_forward_rect( trn, &trn->iarea, &trn->oarea ); } libvips-8.9.1/libvips/resample/vsqbs.cpp000066400000000000000000000337651361153320700203420ustar00rootroot00000000000000/* vertex-split subdivision followed by quadratic b-spline smoothing * * C. Racette 23-28/05/2010 based on code by N. Robidoux and J. Cupitt * * N. Robidoux 29-30/05/2010 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* * 2010 (c) Chantal Racette, Nicolas Robidoux, John Cupitt. * * Nicolas Robidoux thanks Adam Turcotte, Geert Jordaens, Ralf Meyer, * Øyvind Kolås, Minglun Gong and Eric Daoust for useful comments and * code. * * Chantal Racette's image resampling research and programming funded * in part by a NSERC Discovery Grant awarded to Julien Dompierre * (20-61098). */ /* * Vertex-Split Quadratic B-Splines (VSQBS) is a brand new method * which consists of vertex-split subdivision, a subdivision method * with the (as yet unknown?) property that data which is (locally) * constant on diagonals is subdivided into data which is (locally) * constant on diagonals, followed by quadratic B-Spline smoothing. * Because both methods are linear, their combination can be * implemented as if there is no subdivision. * * At high enlargement ratios, VSQBS is very effective at "masking" * that the original has pixels uniformly distributed on a grid. In * particular, VSQBS produces resamples with only very mild * staircasing. Like cubic B-Spline smoothing, however, VSQBS is not * an interpolatory method. For example, using VSQBS to perform the * identity geometric transformation (enlargement by a scaling factor * equal to 1) on an image does not return the original: VSQBS * effectively smooths out the image with the convolution mask * * 1/8 * 1/8 1/2 1/8 * 1/8 * * which is a fairly moderate blur (although the checkerboard mode is * in its nullspace). * * By blending VSQBS with an interpolatory method (bilinear, say) in a * transformation adaptive environment (current GEGL, for example), it * is quite easy to restore that resampling for identity geometric * transformation is equivalent to the identity, and rotations are not * affected by the above, implicit, blur. Contact N. Robidoux for * details. * * An article on VSQBS is forthcoming. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "templates.h" #define VIPS_TYPE_INTERPOLATE_VSQBS \ (vips_interpolate_vsqbs_get_type()) #define VIPS_INTERPOLATE_VSQBS( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_VSQBS, VipsInterpolateVsqbs )) #define VIPS_INTERPOLATE_VSQBS_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_VSQBS, VipsInterpolateVsqbsClass)) #define VIPS_IS_INTERPOLATE_VSQBS( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_VSQBS )) #define VIPS_IS_INTERPOLATE_VSQBS_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_VSQBS )) #define VIPS_INTERPOLATE_VSQBS_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_VSQBS, VipsInterpolateVsqbsClass )) typedef struct _VipsInterpolateVsqbs { VipsInterpolate parent_object; } VipsInterpolateVsqbs; typedef struct _VipsInterpolateVsqbsClass { VipsInterpolateClass parent_class; } VipsInterpolateVsqbsClass; /* * THE STENCIL OF INPUT VALUES: * * Pointer arithmetic is used to implicitly reflect the input stencil * about dos_two---assumed closer to the sampling location than other * pixels (ties are OK)---in such a way that after reflection the * sampling point is to the bottom right of dos_two. * * The following code and picture assumes that the stencil reflexion * has already been performed. (X is the sampling location.) * * * (ix,iy-1) (ix+1,iy-1) * = uno_two = uno_thr * * * * (ix-1,iy) (ix,iy) (ix+1,iy) * = dos_one = dos_two = dos_thr * X * * * (ix-1,iy+1) (ix,iy+1) (ix+1,iy+1) * = tre_one = tre_two = tre_thr * * * The above input pixel values are the ones needed in order to * IMPLICITLY make available the following values, needed by quadratic * B-Splines, which is performed on (shifted) double density data: * * * uno_one_1 = uno_two_1 = uno_thr_1 = * (ix-1/4,iy-1/4) (ix+1/4,iy-1/4) (ix+3/4,iy-1/4) * * * * X or X * dos_one_1 = dos_two_1 = dos_thr_1 = * (ix-1/4,iy+1/4) (ix+1/4,iy+1/4) (ix+3/4,iy+1/4) * or X or X * * * * tre_one_1 = tre_two_1 = tre_thr_1 = * (ix-1/4,iy+3/4) (ix+1/4,iy+3/4) (ix+3/4,iy+3/4) * * * In the coefficient computations, we fix things so that coordinates * are relative to dos_two_1, and so that distances are rescaled so * that double density pixel locations are at a distance of 1. */ /* * Call vertex-split + quadratic B-splines with a careful type * conversion as a parameter. (It would be nice to do this with * templates somehow---for one thing this would allow code * comments---but we can't figure a clean way to do it.) */ #define VSQBS_CONVERSION( conversion ) \ template static void inline \ vsqbs_ ## conversion( void* restrict pout, \ const VipsPel* restrict pin, \ const int bands, \ const int lskip, \ const double x_0, \ const double y_0 ) \ { \ T* restrict out = (T *) pout; \ \ const T* restrict in = (T *) pin; \ \ const int sign_of_x_0 = 2 * ( x_0 >= 0. ) - 1; \ const int sign_of_y_0 = 2 * ( y_0 >= 0. ) - 1; \ \ const int shift_forw_1_pix = sign_of_x_0 * bands; \ const int shift_forw_1_row = sign_of_y_0 * lskip; \ \ const int shift_back_1_pix = -shift_forw_1_pix; \ const int shift_back_1_row = -shift_forw_1_row; \ \ const int uno_two_shift = shift_back_1_row; \ const int uno_thr_shift = shift_forw_1_pix + shift_back_1_row; \ \ const int dos_one_shift = shift_back_1_pix; \ const int dos_two_shift = 0; \ const int dos_thr_shift = shift_forw_1_pix; \ \ const int tre_one_shift = shift_back_1_pix + shift_forw_1_row; \ const int tre_two_shift = shift_forw_1_row; \ const int tre_thr_shift = shift_forw_1_pix + shift_forw_1_row; \ \ \ const double twice_abs_x_0 = ( 2 * sign_of_x_0 ) * x_0; \ const double twice_abs_y_0 = ( 2 * sign_of_y_0 ) * y_0; \ const double x = twice_abs_x_0 + -0.5; \ const double y = twice_abs_y_0 + -0.5; \ const double cent = 0.75 - x * x; \ const double mid = 0.75 - y * y; \ const double left = -0.5 * ( x + cent ) + 0.5; \ const double top = -0.5 * ( y + mid ) + 0.5; \ const double left_p_cent = left + cent; \ const double top_p_mid = top + mid; \ const double cent_p_rite = 1.0 - left; \ const double mid_p_bot = 1.0 - top; \ const double rite = 1.0 - left_p_cent; \ const double bot = 1.0 - top_p_mid; \ \ const double four_c_uno_two = left_p_cent * top; \ const double four_c_dos_one = left * top_p_mid; \ const double four_c_dos_two = left_p_cent + top_p_mid; \ const double four_c_dos_thr = cent_p_rite * top_p_mid + rite; \ const double four_c_tre_two = mid_p_bot * left_p_cent + bot; \ const double four_c_tre_thr = mid_p_bot * rite + cent_p_rite * bot; \ const double four_c_uno_thr = top - four_c_uno_two; \ const double four_c_tre_one = left - four_c_dos_one; \ \ \ int band = bands; \ \ do \ { \ const double double_result = \ ( \ ( \ ( \ four_c_uno_two * in[uno_two_shift] \ + \ four_c_dos_one * in[dos_one_shift] \ ) \ + \ ( \ four_c_dos_two * in[dos_two_shift] \ + \ four_c_dos_thr * in[dos_thr_shift] \ ) \ ) \ + \ ( \ ( \ four_c_tre_two * in[tre_two_shift] \ + \ four_c_tre_thr * in[tre_thr_shift] \ ) \ + \ ( \ four_c_uno_thr * in[uno_thr_shift] \ + \ four_c_tre_one * in[tre_one_shift] \ ) \ ) \ ) * 0.25; \ \ const T result = to_ ## conversion( double_result ); \ in++; \ *out++ = result; \ \ } while (--band); \ } VSQBS_CONVERSION( fptypes ) VSQBS_CONVERSION( withsign ) VSQBS_CONVERSION( nosign ) #define CALL( T, conversion ) \ vsqbs_ ## conversion( out, \ p, \ bands, \ lskip, \ relative_x, \ relative_y ); /* * We need C linkage: */ extern "C" { G_DEFINE_TYPE( VipsInterpolateVsqbs, vips_interpolate_vsqbs, VIPS_TYPE_INTERPOLATE ); } static void vips_interpolate_vsqbs_interpolate( VipsInterpolate* restrict interpolate, void* restrict out, VipsRegion* restrict in, double absolute_x, double absolute_y ) { /* absolute_x and absolute_y are always >= 1.0 (see double-check assert * below), so we don't need floor(). * * It's 1 not 0 since we ask for a window_offset of 1 at the bottom. */ const int ix = (int) (absolute_x + 0.5); const int iy = (int) (absolute_y + 0.5); /* * Move the pointer to (the first band of) the top/left pixel of the * 2x2 group of pixel centers which contains the sampling location * in its convex hull: */ const VipsPel* restrict p = VIPS_REGION_ADDR( in, ix, iy ); const double relative_x = absolute_x - ix; const double relative_y = absolute_y - iy; /* * VIPS versions of Nicolas's pixel addressing values. */ const int lskip = VIPS_REGION_LSKIP( in ) / VIPS_IMAGE_SIZEOF_ELEMENT( in->im ); /* * Double the bands for complex images to account for the real and * imaginary parts being computed independently: */ const int actual_bands = in->im->Bands; const int bands = vips_band_format_iscomplex( in->im->BandFmt ) ? 2 * actual_bands : actual_bands; g_assert( ix - 1 >= in->valid.left ); g_assert( iy - 1 >= in->valid.top ); g_assert( ix + 1 <= VIPS_RECT_RIGHT( &in->valid ) ); g_assert( iy + 1 <= VIPS_RECT_BOTTOM( &in->valid ) ); /* Confirm that absolute_x and absolute_y are >= 1, see above. */ g_assert( absolute_x >= 1.0 ); g_assert( absolute_y >= 1.0 ); switch( in->im->BandFmt ) { case VIPS_FORMAT_UCHAR: CALL( unsigned char, nosign ); break; case VIPS_FORMAT_CHAR: CALL( signed char, withsign ); break; case VIPS_FORMAT_USHORT: CALL( unsigned short, nosign ); break; case VIPS_FORMAT_SHORT: CALL( signed short, withsign ); break; case VIPS_FORMAT_UINT: CALL( unsigned int, nosign ); break; case VIPS_FORMAT_INT: CALL( signed int, withsign ); break; /* * Complex images are handled by doubling bands: */ case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: CALL( float, fptypes ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: CALL( double, fptypes ); break; default: g_assert( 0 ); break; } } static void vips_interpolate_vsqbs_class_init( VipsInterpolateVsqbsClass *klass ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( klass ); VipsInterpolateClass *interpolate_class = VIPS_INTERPOLATE_CLASS( klass ); object_class->nickname = "vsqbs"; object_class->description = _( "B-Splines with antialiasing smoothing" ); interpolate_class->interpolate = vips_interpolate_vsqbs_interpolate; interpolate_class->window_size = 4; interpolate_class->window_offset = 1; } static void vips_interpolate_vsqbs_init( VipsInterpolateVsqbs *vsqbs ) { } libvips-8.9.1/m4/000077500000000000000000000000001361153320700135225ustar00rootroot00000000000000libvips-8.9.1/m4/ax_gcc_var_attribute.m4000066400000000000000000000113121361153320700201410ustar00rootroot00000000000000# =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_gcc_var_attribute.html # =========================================================================== # # SYNOPSIS # # AX_GCC_VAR_ATTRIBUTE(ATTRIBUTE) # # DESCRIPTION # # This macro checks if the compiler supports one of GCC's variable # attributes; many other compilers also provide variable attributes with # the same syntax. Compiler warnings are used to detect supported # attributes as unsupported ones are ignored by default so quieting # warnings when using this macro will yield false positives. # # The ATTRIBUTE parameter holds the name of the attribute to be checked. # # If ATTRIBUTE is supported define HAVE_VAR_ATTRIBUTE_. # # The macro caches its result in the ax_cv_have_var_attribute_ # variable. # # The macro currently supports the following variable attributes: # # aligned # cleanup # common # nocommon # deprecated # mode # packed # tls_model # unused # used # vector_size # weak # dllimport # dllexport # init_priority # # Unsupported variable attributes will be tested against a global integer # variable and without any arguments given to the attribute itself; the # result of this check might be wrong or meaningless so use with care. # # LICENSE # # Copyright (c) 2013 Gabriele Svelto # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 5 AC_DEFUN([AX_GCC_VAR_ATTRIBUTE], [ AS_VAR_PUSHDEF([ac_var], [ax_cv_have_var_attribute_$1]) AC_CACHE_CHECK([for __attribute__(($1))], [ac_var], [ AC_LINK_IFELSE([AC_LANG_PROGRAM([ m4_case([$1], [aligned], [ int foo __attribute__(($1(32))); ], [cleanup], [ int bar(int *t) { return *t; }; ], [common], [ int foo __attribute__(($1)); ], [nocommon], [ int foo __attribute__(($1)); ], [deprecated], [ int foo __attribute__(($1)) = 0; ], [mode], [ long foo __attribute__(($1(word))); ], [packed], [ struct bar { int baz __attribute__(($1)); }; ], [tls_model], [ __thread int bar1 __attribute__(($1("global-dynamic"))); __thread int bar2 __attribute__(($1("local-dynamic"))); __thread int bar3 __attribute__(($1("initial-exec"))); __thread int bar4 __attribute__(($1("local-exec"))); ], [unused], [ int foo __attribute__(($1)); ], [used], [ int foo __attribute__(($1)); ], [vector_size], [ int foo __attribute__(($1(16))); ], [weak], [ int foo __attribute__(($1)); ], [dllimport], [ int foo __attribute__(($1)); ], [dllexport], [ int foo __attribute__(($1)); ], [init_priority], [ struct bar { bar() {} ~bar() {} }; bar b __attribute__(($1(65535/2))); ], [ m4_warn([syntax], [Unsupported attribute $1, the test may fail]) int foo __attribute__(($1)); ] )], [ m4_case([$1], [cleanup], [ int foo __attribute__(($1(bar))) = 0; foo = foo + 1; ], [] )]) ], dnl GCC doesn't exit with an error if an unknown attribute is dnl provided but only outputs a warning, so accept the attribute dnl only if no warning were issued. [AS_IF([test -s conftest.err], [AS_VAR_SET([ac_var], [no])], [AS_VAR_SET([ac_var], [yes])])], [AS_VAR_SET([ac_var], [no])]) ]) AS_IF([test yes = AS_VAR_GET([ac_var])], [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_VAR_ATTRIBUTE_$1), 1, [Define to 1 if the system has the `$1' variable attribute])], []) AS_VAR_POPDEF([ac_var]) ]) libvips-8.9.1/m4/expat.m4000066400000000000000000000020171361153320700151050ustar00rootroot00000000000000dnl Look for expat, set EXPAT_CFLAGS, EXPAT_LIBS dnl Use --with-expat=PREFIX to set a specific prefix dnl dnl This is modified from the usual expat.m4: dnl - default to with_expat=yes dnl - don't set a conditional AC_DEFUN([AM_WITH_EXPAT], [ AC_ARG_WITH(expat, [ --with-expat=PREFIX Use system Expat library], , with_expat=yes) EXPAT_CFLAGS= EXPAT_LIBS= if test $with_expat != no; then if test $with_expat != yes; then EXPAT_CFLAGS="-I$with_expat/include" EXPAT_LIBS="-L$with_expat/lib" fi AC_CHECK_LIB(expat, XML_ParserCreate, [ EXPAT_LIBS="$EXPAT_LIBS -lexpat" expat_found=yes ], [ expat_found=no ], "$EXPAT_LIBS") if test $expat_found = no; then AC_MSG_ERROR([Could not find the Expat library]) fi expat_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $EXPAT_CFLAGS" AC_CHECK_HEADERS(expat.h, , expat_found=no) if test $expat_found = no; then AC_MSG_ERROR([Could not find expat.h]) fi CFLAGS="$expat_save_CFLAGS" fi AC_SUBST(EXPAT_CFLAGS) AC_SUBST(EXPAT_LIBS) ]) libvips-8.9.1/m4/gif.m4000066400000000000000000000056451361153320700145430ustar00rootroot00000000000000dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_GIFLIB[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl --------------------------------------------------- dnl dnl Find GIFLIB libraries and headers dnl dnl Put compile stuff in GIFLIB_INCLUDES dnl Put link stuff in GIFLIB_LIBS dnl Define HAVE_GIFLIB if found. dnl AC_DEFUN([FIND_GIFLIB], [ AC_REQUIRE([AC_PATH_XTRA]) GIFLIB_INCLUDES="" GIFLIB_LIBS="" AC_ARG_WITH(giflib, AS_HELP_STRING([--without-giflib], [build without giflib (default: test)])) # Treat --without-giflib like --without-giflib-includes --without-giflib-libraries. if test "$with_giflib" = "no"; then GIFLIB_INCLUDES=no GIFLIB_LIBS=no fi AC_ARG_WITH(giflib-includes, AS_HELP_STRING([--with-giflib-includes=DIR], [giflib includes are in DIR]), GIFLIB_INCLUDES="-I$withval") AC_ARG_WITH(giflib-libraries, AS_HELP_STRING([--with-giflib-libraries=DIR], [giflib libraries are in DIR]), GIFLIB_LIBS="-L$withval -lgif") AC_MSG_CHECKING(for giflib) # Look for gif_lib.h if test "$GIFLIB_INCLUDES" = ""; then # Check the standard search path AC_TRY_COMPILE([#include ],[int a;],[ GIFLIB_INCLUDES="" ], [ # gif_lib.h is not in the standard search path, try # $prefix giflib_save_CFLAGS="$CFLAGS" CFLAGS="-I${prefix}/include $CFLAGS" AC_TRY_COMPILE([#include ],[int a;],[ GIFLIB_INCLUDES="-I${prefix}/include" ], [ GIFLIB_INCLUDES="no" ]) CFLAGS=$giflib_save_CFLAGS ]) fi # Now for the libraries if test "$GIFLIB_LIBS" = ""; then giflib_save_LIBS="$LIBS" giflib_save_CFLAGS="$CFLAGS" LIBS="-lgif $LIBS" CFLAGS="$GIFLIB_INCLUDES $CFLAGS" # Try the standard search path first AC_TRY_LINK([#include ],[DGifSlurp(0)], [ GIFLIB_LIBS="-lgif" ], [ # giflib is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" AC_TRY_LINK([#include ],[DGifSlurp(0)], [ GIFLIB_LIBS="-L${prefix}/lib -lgif" ], [ GIFLIB_LIBS=no ]) ]) LIBS="$giflib_save_LIBS" CFLAGS="$giflib_save_CFLAGS" fi AC_SUBST(GIFLIB_LIBS) AC_SUBST(GIFLIB_INCLUDES) # Print a helpful message giflib_libraries_result="$GIFLIB_LIBS" giflib_includes_result="$GIFLIB_INCLUDES" if test x"$giflib_libraries_result" = x""; then giflib_libraries_result="in default path" fi if test x"$giflib_includes_result" = x""; then giflib_includes_result="in default path" fi if test "$giflib_libraries_result" = "no"; then giflib_libraries_result="(none)" fi if test "$giflib_includes_result" = "no"; then giflib_includes_result="(none)" fi AC_MSG_RESULT([libraries $giflib_libraries_result, headers $giflib_includes_result]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$GIFLIB_INCLUDES" != "no" && test "$GIFLIB_LIBS" != "no"; then AC_DEFINE(HAVE_GIFLIB,1,[Define if you have giflib libraries and header files.]) $1 else GIFLIB_INCLUDES="" GIFLIB_LIBS="" $2 fi ])dnl libvips-8.9.1/m4/jpeg.m4000066400000000000000000000056461361153320700147240ustar00rootroot00000000000000dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_JPEG[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl ------------------------------------------------ dnl dnl Find JPEG libraries and headers dnl dnl Put compile stuff in JPEG_INCLUDES dnl Put link stuff in JPEG_LIBS dnl Define HAVE_JPEG if found dnl AC_DEFUN([FIND_JPEG], [ AC_REQUIRE([AC_PATH_XTRA]) JPEG_INCLUDES="" JPEG_LIBS="" AC_ARG_WITH(jpeg, AS_HELP_STRING([--without-jpeg], [build without libjpeg (default: test)])) # Treat --without-jpeg like --without-jpeg-includes --without-jpeg-libraries. if test "$with_jpeg" = "no"; then JPEG_INCLUDES=no JPEG_LIBS=no fi AC_ARG_WITH(jpeg-includes, AS_HELP_STRING([--with-jpeg-includes=DIR], [libjpeg includes are in DIR]), JPEG_INCLUDES="-I$withval") AC_ARG_WITH(jpeg-libraries, AS_HELP_STRING([--with-jpeg-libraries=DIR], [libjpeg libraries are in DIR]), JPEG_LIBS="-L$withval -ljpeg") AC_MSG_CHECKING(for JPEG) # Look for jpeglib.h if test "$JPEG_INCLUDES" = ""; then # Check the standard search path AC_TRY_COMPILE([#include #include ],[int a;],[ JPEG_INCLUDES="" ], [ # jpeglib.h is not in the standard search path, try # $prefix jpeg_save_CFLAGS="$CFLAGS" CFLAGS="-I${prefix}/include $CFLAGS" AC_TRY_COMPILE([#include #include ],[int a;],[ JPEG_INCLUDES="-I${prefix}/include" ], [ JPEG_INCLUDES="no" ]) CFLAGS=$jpeg_save_CFLAGS ]) fi # Now for the libraries if test "$JPEG_LIBS" = ""; then jpeg_save_LIBS="$LIBS" jpeg_save_CFLAGS="$CFLAGS" LIBS="-ljpeg $LIBS" CFLAGS="$JPEG_INCLUDES $CFLAGS" # Try the standard search path first AC_TRY_LINK([#include #include ],[jpeg_abort((void*)0)], [ JPEG_LIBS="-ljpeg" ], [ # libjpeg is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" AC_TRY_LINK([#include #include ],[jpeg_abort((void*)0)], [ JPEG_LIBS="-L${prefix}/lib -ljpeg" ], [ JPEG_LIBS=no ]) ]) LIBS="$jpeg_save_LIBS" CFLAGS="$jpeg_save_CFLAGS" fi AC_SUBST(JPEG_LIBS) AC_SUBST(JPEG_INCLUDES) # Print a helpful message jpeg_libraries_result="$JPEG_LIBS" jpeg_includes_result="$JPEG_INCLUDES" if test x"$jpeg_libraries_result" = x""; then jpeg_libraries_result="in default path" fi if test x"$jpeg_includes_result" = x""; then jpeg_includes_result="in default path" fi if test "$jpeg_libraries_result" = "no"; then jpeg_libraries_result="(none)" fi if test "$jpeg_includes_result" = "no"; then jpeg_includes_result="(none)" fi AC_MSG_RESULT([libraries $jpeg_libraries_result, headers $jpeg_includes_result]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$JPEG_INCLUDES" != "no" && test "$JPEG_LIBS" != "no"; then AC_DEFINE(HAVE_JPEG,1,[Define if you have jpeg libraries and header files.]) $1 else JPEG_INCLUDES="" JPEG_LIBS="" $2 fi ])dnl libvips-8.9.1/m4/mkdir.m4000066400000000000000000000037341361153320700151010ustar00rootroot00000000000000dnl @synopsis AC_FUNC_MKDIR dnl dnl Check whether mkdir() is mkdir or _mkdir, and whether it takes one dnl or two arguments. dnl dnl This macro can define HAVE_MKDIR, HAVE__MKDIR, and dnl MKDIR_TAKES_ONE_ARG, which are expected to be used as follows: dnl dnl #if HAVE_MKDIR dnl # if MKDIR_TAKES_ONE_ARG dnl /* MinGW32 */ dnl # define mkdir(a, b) mkdir(a) dnl # endif dnl #else dnl # if HAVE__MKDIR dnl /* plain Windows 32 */ dnl # define mkdir(a, b) _mkdir(a) dnl # else dnl # error "Don't know how to create a directory on this system." dnl # endif dnl #endif dnl dnl @category C dnl @author Alexandre Duret-Lutz dnl @version 2003-12-28 dnl @license GPLWithACException AC_DEFUN([AC_FUNC_MKDIR], [AC_CHECK_FUNCS([mkdir _mkdir]) AC_CACHE_CHECK([whether mkdir takes one argument], [ac_cv_mkdir_takes_one_arg], [AC_TRY_COMPILE([ #include #if HAVE_UNISTD_H # include #endif ], [mkdir (".");], [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])]) if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1, [Define if mkdir takes only one argument.]) fi ]) dnl Note: dnl ===== dnl I have not implemented the following suggestion because I don't have dnl access to such a broken environment to test the macro. So I'm just dnl appending the comments here in case you have, and want to fix dnl AC_FUNC_MKDIR that way. dnl dnl |Thomas E. Dickey (dickey@herndon4.his.com) said: dnl | it doesn't cover the problem areas (compilers that mistreat mkdir dnl | may prototype it in dir.h and dirent.h, for instance). dnl | dnl |Alexandre: dnl | Would it be sufficient to check for these headers and #include dnl | them in the AC_TRY_COMPILE block? (and is AC_HEADER_DIRENT dnl | suitable for this?) dnl | dnl |Thomas: dnl | I think that might be a good starting point (with the set of recommended dnl | ifdef's and includes for AC_HEADER_DIRENT, of course). libvips-8.9.1/m4/nifti.m4000066400000000000000000000061431361153320700151010ustar00rootroot00000000000000dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_NIFTI[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl ------------------------------------------------ dnl dnl Find NIFTI libraries and headers dnl dnl Put compile stuff in NIFTI_INCLUDES dnl Put link stuff in NIFTI_LIBS dnl Define HAVE_NIFTI if found dnl AC_DEFUN([FIND_NIFTI], [ AC_REQUIRE([AC_PATH_XTRA]) NIFTI_INCLUDES="" NIFTI_LIBS="" AC_ARG_WITH(nifti, AS_HELP_STRING([--without-nifti], [build without nifti (default: test)])) # Treat --without-nifti like --without-nifti-includes --without-nifti-libraries. if test "$with_nifti" = "no"; then NIFTI_INCLUDES=no NIFTI_LIBS=no fi AC_ARG_WITH(nifti-includes, AS_HELP_STRING([--with-nifti-includes=DIR], [libniftiio includes are in DIR]), NIFTI_INCLUDES="-I$withval" ) AC_ARG_WITH(nifti-libraries, AS_HELP_STRING([--with-nifti-libraries=DIR], [libniftiio libraries are in DIR]), NIFTI_LIBS="-L$withval -lniftiio -lznz" ) AC_MSG_CHECKING(for NIFTI) # Look for nifti1_io.h ... usually in /usr/include/nifti if test "$NIFTI_INCLUDES" = ""; then nifti_save_CFLAGS="$CFLAGS" # annoyingly, the header must be unqualified, so we have to add to the # search path CFLAGS="-I/usr/include/nifti $nifti_save_CFLAGS" AC_TRY_COMPILE([#include ],[int a;],[ NIFTI_INCLUDES="-I/usr/include/nifti" ], [ # not in the standard search path, try $prefix CFLAGS="-I${prefix}/include/nifti $nifti_save_CFLAGS" AC_TRY_COMPILE([#include ],[int a;],[ NIFTI_INCLUDES="-I${prefix}/include/nifti" ], [ NIFTI_INCLUDES="no" ]) ]) CFLAGS="$nifti_save_CFLAGS" fi # Now for the libraries if test "$NIFTI_LIBS" = ""; then nifti_save_LIBS="$LIBS" nifti_save_CFLAGS="$CFLAGS" LIBS="-lniftiio -lznz -lm $nifti_save_LIBS" CFLAGS="$NIFTI_INCLUDES $CFLAGS" # Try the standard search path first AC_TRY_LINK([#include ],[is_nifti_file("")], [ NIFTI_LIBS="-lniftiio -lznz" ], [ # libniftiio is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" AC_TRY_LINK([#include ],[is_nifti_file("")], [ NIFTI_LIBS="-L${prefix}/lib -lniftiio -lznz" ], [ NIFTI_LIBS=no ]) ]) LIBS="$nifti_save_LIBS" CFLAGS="$nifti_save_CFLAGS" fi AC_SUBST(NIFTI_LIBS) AC_SUBST(NIFTI_INCLUDES) # Print a helpful message nifti_libraries_result="$NIFTI_LIBS" nifti_includes_result="$NIFTI_INCLUDES" if test x"$nifti_libraries_result" = x""; then nifti_libraries_result="in default path" fi if test x"$nifti_includes_result" = x""; then nifti_includes_result="in default path" fi if test "$nifti_libraries_result" = "no"; then nifti_libraries_result="(none)" fi if test "$nifti_includes_result" = "no"; then nifti_includes_result="(none)" fi AC_MSG_RESULT([libraries $nifti_libraries_result, headers $nifti_includes_result]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$NIFTI_INCLUDES" != "no" && test "$NIFTI_LIBS" != "no"; then AC_DEFINE(HAVE_NIFTI,1,[Define if you have nifti libraries and header files.]) $1 else NIFTI_INCLUDES="" NIFTI_LIBS="" $2 fi ])dnl libvips-8.9.1/m4/pdfium.m4000066400000000000000000000056051361153320700152560ustar00rootroot00000000000000dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_PDFIUM[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl --------------------------------------------------- dnl dnl Find pdfium libraries and headers dnl dnl Put -I stuff in PDFIUM_INCLUDES dnl Put PDFium objects in PDFIUM_LIBS (add this to the link line untouched!) dnl Define HAVE_PDFIUM if found dnl AC_DEFUN([FIND_PDFIUM], [ AC_REQUIRE([AC_PATH_XTRA]) ZLIB_INCLUDES="" ZLIB_LIBS="" AC_ARG_WITH(pdfium, AS_HELP_STRING([--without-pdfium], [build without pdfium (default: test)])) # Treat --without-pdfium like --without-pdfium-includes # --without-pdfium-libraries if test "$with_pdfium" = "no"; then PDFIUM_INCLUDES=no PDFIUM_LIBS=no fi AC_ARG_WITH(pdfium-includes, AS_HELP_STRING([--with-pdfium-includes=DIR], [pdfium includes are in DIR]), PDFIUM_INCLUDES="-I$withval") AC_ARG_WITH(pdfium-libraries, AS_HELP_STRING([--with-pdfium-libraries=DIR], [pdfium libraries are in DIR]), PDFIUM_LIBS="$withval") AC_MSG_CHECKING(for PDFIUM) # Look for fpdfview.h ... this is a documented header, so it should be a good # target # # it won't be in the standard search path, but try $PREFIX if test "$PDFIUM_INCLUDES" = ""; then pdfium_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="-I${prefix}/include $CPPFLAGS" AC_TRY_COMPILE([#include ],[int a;],[ PDFIUM_INCLUDES="-I${prefix}/include" ], [ PDFIUM_INCLUDES="no" ] ) CPPFLAGS="$pdfium_save_CPPFLAGS" fi # Now for the libraries ... if there's nothing set, try $PREFIX/lib if test "$PDFIUM_LIBS" = ""; then pdfium_save_LIBS="$LIBS" pdfium_save_CPPFLAGS="$CPPFLAGS" LIBS="-L$prefix/lib -lpdfium -lc++ -licuuc $LIBS" CPPFLAGS="$PDFIUM_INCLUDES $CPPFLAGS" AC_TRY_LINK([#include ], [FPDF_DOCUMENT doc; doc = FPDF_LoadDocument("", "")], [PDFIUM_LIBS="${prefix}/lib"], [PDFIUM_LIBS=no]) LIBS="$pdfium_save_LIBS" CPPFLAGS="$pdfium_save_CPPFLAGS" fi # Print a helpful message pdfium_libraries_result="$PDFIUM_LIBS" pdfium_includes_result="$PDFIUM_INCLUDES" if test x"$pdfium_libraries_result" = x""; then pdfium_libraries_result="in default path" fi if test x"$pdfium_includes_result" = x""; then pdfium_includes_result="in default path" fi if test "$pdfium_libraries_result" = "no"; then pdfium_libraries_result="(none)" fi if test "$pdfium_includes_result" = "no"; then pdfium_includes_result="(none)" fi AC_MSG_RESULT([libraries $pdfium_libraries_result, headers $pdfium_includes_result]) if test x"$PDFIUM_LIBS" != x"no"; then dir="$PDFIUM_LIBS" PDFIUM_LIBS="-L$dir -lpdfium -lc++ -licuuc" fi AC_SUBST(PDFIUM_LIBS) AC_SUBST(PDFIUM_INCLUDES) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$PDFIUM_INCLUDES" != "no" && test "$PDFIUM_LIBS" != "no"; then AC_DEFINE(HAVE_PDFIUM,1, [Define if you have pdfium libraries and header files.]) $1 else PDFIUM_INCLUDES="" PDFIUM_LIBS="" $2 fi ])dnl libvips-8.9.1/m4/png.m4000066400000000000000000000053671361153320700145630ustar00rootroot00000000000000dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_PNG[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl ------------------------------------------------ dnl dnl Find PNG libraries and headers dnl dnl Put compile stuff in PNG_INCLUDES dnl Put link stuff in PNG_LIBS dnl Define HAVE_PNG if found. dnl AC_DEFUN([FIND_PNG], [ AC_REQUIRE([AC_PATH_XTRA]) PNG_INCLUDES="" PNG_LIBS="" AC_ARG_WITH(png, AS_HELP_STRING([--without-png], [build without libpng (default: test)])) # Treat --without-png like --without-png-includes --without-png-libraries. if test "$with_png" = "no"; then PNG_INCLUDES=no PNG_LIBS=no fi AC_ARG_WITH(png-includes, AS_HELP_STRING([--with-png-includes=DIR], [libpng includes are in DIR]), PNG_INCLUDES="-I$withval") AC_ARG_WITH(png-libraries, AS_HELP_STRING([--with-png-libraries=DIR], [libpng libraries are in DIR]), PNG_LIBS="-L$withval -lpng") AC_MSG_CHECKING(for libpng) # Look for png.h if test "$PNG_INCLUDES" = ""; then # Check the standard search path AC_TRY_COMPILE([#include ],[int a;],[ PNG_INCLUDES="" ], [ # png.h is not in the standard search path, try # $prefix png_save_CFLAGS="$CFLAGS" CFLAGS="-I${prefix}/include $CFLAGS" AC_TRY_COMPILE([#include ],[int a;],[ PNG_INCLUDES="-I${prefix}/include" ], [ PNG_INCLUDES="no" ]) CFLAGS=$png_save_CFLAGS ]) fi # Now for the libraries if test "$PNG_LIBS" = ""; then png_save_LIBS="$LIBS" png_save_CFLAGS="$CFLAGS" LIBS="-lpng $LIBS" CFLAGS="$PNG_INCLUDES $CFLAGS" # Try the standard search path first AC_TRY_LINK([#include ],[png_access_version_number()], [ PNG_LIBS="-lpng" ], [ # libpng is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" AC_TRY_LINK([#include ],[png_access_version_number()], [ PNG_LIBS="-L${prefix}/lib -lpng" ], [ PNG_LIBS=no ]) ]) LIBS="$png_save_LIBS" CFLAGS="$png_save_CFLAGS" fi AC_SUBST(PNG_LIBS) AC_SUBST(PNG_INCLUDES) # Print a helpful message png_libraries_result="$PNG_LIBS" png_includes_result="$PNG_INCLUDES" if test x"$png_libraries_result" = x""; then png_libraries_result="in default path" fi if test x"$png_includes_result" = x""; then png_includes_result="in default path" fi if test "$png_libraries_result" = "no"; then png_libraries_result="(none)" fi if test "$png_includes_result" = "no"; then png_includes_result="(none)" fi AC_MSG_RESULT([libraries $png_libraries_result, headers $png_includes_result]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$PNG_INCLUDES" != "no" && test "$PNG_LIBS" != "no"; then AC_DEFINE(HAVE_PNG,1,[Define if you have png libraries and header files.]) $1 else PNG_INCLUDES="" PNG_LIBS="" $2 fi ])dnl libvips-8.9.1/m4/tiff.m4000066400000000000000000000054531361153320700147230ustar00rootroot00000000000000dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_TIFF[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl ------------------------------------------------ dnl dnl Find TIFF libraries and headers dnl dnl Put compile stuff in TIFF_INCLUDES dnl Put link stuff in TIFF_LIBS dnl Define HAVE_TIFF if found dnl AC_DEFUN([FIND_TIFF], [ AC_REQUIRE([AC_PATH_XTRA]) TIFF_INCLUDES="" TIFF_LIBS="" AC_ARG_WITH(tiff, AS_HELP_STRING([--without-tiff], [build without libtiff (default: test)])) # Treat --without-tiff like --without-tiff-includes --without-tiff-libraries. if test "$with_tiff" = "no"; then TIFF_INCLUDES=no TIFF_LIBS=no fi AC_ARG_WITH(tiff-includes, AS_HELP_STRING([--with-tiff-includes=DIR], [libtiff includes are in DIR]), TIFF_INCLUDES="-I$withval") AC_ARG_WITH(tiff-libraries, AS_HELP_STRING([--with-tiff-libraries=DIR], [libtiff libraries are in DIR]), TIFF_LIBS="-L$withval -ltiff") AC_MSG_CHECKING(for TIFF) # Look for tiff.h if test "$TIFF_INCLUDES" = ""; then # Check the standard search path AC_TRY_COMPILE([#include ],[int a;],[ TIFF_INCLUDES="" ], [ # tiff.h is not in the standard search path, try # $prefix tiff_save_CFLAGS="$CFLAGS" CFLAGS="-I${prefix}/include $CFLAGS" AC_TRY_COMPILE([#include ],[int a;],[ TIFF_INCLUDES="-I${prefix}/include" ], [ TIFF_INCLUDES="no" ]) CFLAGS=$tiff_save_CFLAGS ]) fi # Now for the libraries if test "$TIFF_LIBS" = ""; then tiff_save_LIBS="$LIBS" tiff_save_CFLAGS="$CFLAGS" LIBS="-ltiff -lm $LIBS" CFLAGS="$TIFF_INCLUDES $CFLAGS" # Try the standard search path first AC_TRY_LINK([#include ],[TIFFGetVersion()], [ TIFF_LIBS="-ltiff" ], [ # libtiff is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" AC_TRY_LINK([#include ],[TIFFGetVersion()], [ TIFF_LIBS="-L${prefix}/lib -ltiff" ], [ TIFF_LIBS=no ]) ]) LIBS="$tiff_save_LIBS" CFLAGS="$tiff_save_CFLAGS" fi AC_SUBST(TIFF_LIBS) AC_SUBST(TIFF_INCLUDES) # Print a helpful message tiff_libraries_result="$TIFF_LIBS" tiff_includes_result="$TIFF_INCLUDES" if test x"$tiff_libraries_result" = x""; then tiff_libraries_result="in default path" fi if test x"$tiff_includes_result" = x""; then tiff_includes_result="in default path" fi if test "$tiff_libraries_result" = "no"; then tiff_libraries_result="(none)" fi if test "$tiff_includes_result" = "no"; then tiff_includes_result="(none)" fi AC_MSG_RESULT([libraries $tiff_libraries_result, headers $tiff_includes_result]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$TIFF_INCLUDES" != "no" && test "$TIFF_LIBS" != "no"; then AC_DEFINE(HAVE_TIFF,1,[Define if you have tiff libraries and header files.]) $1 else TIFF_INCLUDES="" TIFF_LIBS="" $2 fi ])dnl libvips-8.9.1/m4/webp.m4000066400000000000000000000061271361153320700147270ustar00rootroot00000000000000dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_LIBWEBP[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl --------------------------------------------------- dnl dnl Find webp libraries and headers ... useful for platforms which are missing dnl the webp .pc file dnl dnl Put compile stuff in LIBWEBP_INCLUDES dnl Put link stuff in LIBWEBP_LIBS dnl Define HAVE_LIBWEBP if found. dnl AC_DEFUN([FIND_LIBWEBP], [ AC_REQUIRE([AC_PATH_XTRA]) LIBWEBP_INCLUDES="" LIBWEBP_LIBS="" AC_ARG_WITH(libwebp, AS_HELP_STRING([--without-libwebp], [build without libwebp (default: test)])) # Treat --without-libwebp like --without-libwebp-includes --without-libwebp-libraries. if test "$with_libwebp" = "no"; then LIBWEBP_INCLUDES=no LIBWEBP_LIBS=no fi AC_ARG_WITH(libwebp-includes, AS_HELP_STRING([--with-libwebp-includes=DIR], [libwebp includes are in DIR]), LIBWEBP_INCLUDES="-I$withval") AC_ARG_WITH(libwebp-libraries, AS_HELP_STRING([--with-libwebp-libraries=DIR], [libwebp libraries are in DIR]), LIBWEBP_LIBS="-L$withval -lwebp") AC_MSG_CHECKING(for libwebp) # Look for webp/decode.h if test "$LIBWEBP_INCLUDES" = ""; then # Check the standard search path AC_TRY_COMPILE([#include ],[int a;],[ LIBWEBP_INCLUDES="" ], [ # webp/decode.h is not in the standard search path, try # $prefix libwebp_save_CFLAGS="$CFLAGS" CFLAGS="-I${prefix}/include $CFLAGS" AC_TRY_COMPILE([#include ],[int a;],[ LIBWEBP_INCLUDES="-I${prefix}/include" ], [ LIBWEBP_INCLUDES="no" ]) CFLAGS=$libwebp_save_CFLAGS ]) fi # Now for the libraries if test "$LIBWEBP_LIBS" = ""; then libwebp_save_LIBS="$LIBS" libwebp_save_CFLAGS="$CFLAGS" LIBS="-lwebp $LIBS" CFLAGS="$LIBWEBP_INCLUDES $CFLAGS" # Try the standard search path first AC_TRY_LINK([#include ],[WebPInitDecoderConfig(0)], [ LIBWEBP_LIBS="-lwebp" ], [ # libwebp is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" AC_TRY_LINK([#include ],[WebPInitDecoderConfig(0)], [ LIBWEBP_LIBS="-L${prefix}/lib -lwebp" ], [ LIBWEBP_LIBS=no ]) ]) LIBS="$libwebp_save_LIBS" CFLAGS="$libwebp_save_CFLAGS" fi AC_SUBST(LIBWEBP_LIBS) AC_SUBST(LIBWEBP_INCLUDES) # Print a helpful message libwebp_libraries_result="$LIBWEBP_LIBS" libwebp_includes_result="$LIBWEBP_INCLUDES" if test x"$libwebp_libraries_result" = x""; then libwebp_libraries_result="in default path" fi if test x"$libwebp_includes_result" = x""; then libwebp_includes_result="in default path" fi if test "$libwebp_libraries_result" = "no"; then libwebp_libraries_result="(none)" fi if test "$libwebp_includes_result" = "no"; then libwebp_includes_result="(none)" fi AC_MSG_RESULT([libraries $libwebp_libraries_result, headers $libwebp_includes_result]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$LIBWEBP_INCLUDES" != "no" && test "$LIBWEBP_LIBS" != "no"; then AC_DEFINE(HAVE_LIBWEBP,1,[Define if you have libwebp libraries and header files.]) $1 else LIBWEBP_INCLUDES="" LIBWEBP_LIBS="" $2 fi ])dnl libvips-8.9.1/m4/zlib.m4000066400000000000000000000057441361153320700147360ustar00rootroot00000000000000dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_ZLIB[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl ------------------------------------------------ dnl dnl Find zlib libraries and headers ... useful for platforms which are missing dnl the zlib .pc file dnl dnl Put compile stuff in ZLIB_INCLUDES dnl Put link stuff in ZLIB_LIBS dnl Define HAVE_ZLIB if found dnl AC_DEFUN([FIND_ZLIB], [ AC_REQUIRE([AC_PATH_XTRA]) ZLIB_INCLUDES="" ZLIB_LIBS="" AC_ARG_WITH(zlib, AS_HELP_STRING([--without-zlib], [build without zlib (default: test)])) # Treat --without-zlib like --without-zlib-includes --without-zlib-libraries. if test "$with_zlib" = "no"; then ZLIB_INCLUDES=no ZLIB_LIBS=no fi AC_ARG_WITH(zlib-includes, AS_HELP_STRING([--with-zlib-includes=DIR], [libz includes are in DIR]), ZLIB_INCLUDES="-I$withval") AC_ARG_WITH(zlib-libraries, AS_HELP_STRING([--with-zlib-libraries=DIR], [libz libraries are in DIR]), ZLIB_LIBS="-L$withval -lz") AC_MSG_CHECKING(for ZLIB) # Look for zlib.h if test "$ZLIB_INCLUDES" = ""; then # Check the standard search path AC_TRY_COMPILE([#include #include ],[int a;],[ ZLIB_INCLUDES="" ], [ # zlib.h is not in the standard search path, try # $prefix zlib_save_CFLAGS="$CFLAGS" CFLAGS="-I${prefix}/include $CFLAGS" AC_TRY_COMPILE([#include #include ],[int a;],[ ZLIB_INCLUDES="-I${prefix}/include" ], [ ZLIB_INCLUDES="no" ]) CFLAGS=$zlib_save_CFLAGS ]) fi # Now for the libraries if test "$ZLIB_LIBS" = ""; then zlib_save_LIBS="$LIBS" zlib_save_CFLAGS="$CFLAGS" LIBS="-lz $LIBS" CFLAGS="$ZLIB_INCLUDES $CFLAGS" # Try the standard search path first AC_TRY_LINK([#include #include ],[z_stream zs;inflateInit2(&zs, 15 | 32)], [ ZLIB_LIBS="-lz" ], [ # libz is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" AC_TRY_LINK([#include #include ],[z_stream zs;inflateInit2(&zs, 15 | 32)], [ ZLIB_LIBS="-L${prefix}/lib -lz" ], [ ZLIB_LIBS=no ]) ]) LIBS="$zlib_save_LIBS" CFLAGS="$zlib_save_CFLAGS" fi AC_SUBST(ZLIB_LIBS) AC_SUBST(ZLIB_INCLUDES) # Print a helpful message zlib_libraries_result="$ZLIB_LIBS" zlib_includes_result="$ZLIB_INCLUDES" if test x"$zlib_libraries_result" = x""; then zlib_libraries_result="in default path" fi if test x"$zlib_includes_result" = x""; then zlib_includes_result="in default path" fi if test "$zlib_libraries_result" = "no"; then zlib_libraries_result="(none)" fi if test "$zlib_includes_result" = "no"; then zlib_includes_result="(none)" fi AC_MSG_RESULT([libraries $zlib_libraries_result, headers $zlib_includes_result]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$ZLIB_INCLUDES" != "no" && test "$ZLIB_LIBS" != "no"; then AC_DEFINE(HAVE_ZLIB,1,[Define if you have zlib libraries and header files.]) $1 else ZLIB_INCLUDES="" ZLIB_LIBS="" $2 fi ])dnl libvips-8.9.1/man/000077500000000000000000000000001361153320700137555ustar00rootroot00000000000000libvips-8.9.1/man/Makefile.am000066400000000000000000000003051361153320700160070ustar00rootroot00000000000000man_MANS = \ batch_crop.1 \ batch_image_convert.1 \ batch_rubber_sheet.1 \ vipsedit.1 \ vipsheader.1 \ light_correct.1 \ vips.1 \ vipsprofile.1 \ vipsthumbnail.1 EXTRA_DIST = ${man_MANS} libvips-8.9.1/man/batch_crop.1000066400000000000000000000012211361153320700161370ustar00rootroot00000000000000.TH BATCH_CROP 1 "2 Feb 2002" .SH NAME batch_crop \- crop a set of images .SH SYNOPSIS .B batch_crop left top width height image1 image2 ... .SH DESCRIPTION The area defined by the rectangle left, top, width, height is cropped out of each of the images and saved in a file of the same name, but prefixed by "crop_". For example: batch_crop 10 10 100 100 fred.jpg jim.png will make two images, crop_fred.jpg and crop_jim.png, each of 100 by 100 pixels, taken from the corresponding input images. .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vipsheader(1), im_vips2tiff(3), im_vips2jpeg(3), im_vips2png(3), im_vips2ppm(3) libvips-8.9.1/man/batch_image_convert.1000066400000000000000000000015101361153320700200170ustar00rootroot00000000000000.TH BATCH_IMAGE_CONVERT 1 "2 Feb 2002" .SH NAME batch_image_convert \- use VIPS to convert a set of images to a new type .SH SYNOPSIS .B batch_image_convert type image1 image2 ... .SH DESCRIPTION The first argument is the name of an image type, subsequent arguments are the names of files to be converted to that type. VIPS can usually read almost any image type, but it can only write VIPS, PNG, TIFF, PPM/PGM/PBM and JPEG. You can specify conversion parameters in the type name. For example: batch_image_convert tiff fred.jpg jim.png will convert .B fred.jpg and .B jim.png to TIFF format. batch_image_convert jpeg:95 jim.png will write jim.jpeg with a 95% quality factor. .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vipsheader(1), im_vips2tiff(3), im_vips2jpeg(3), im_vips2png(3), im_vips2ppm(3) libvips-8.9.1/man/batch_rubber_sheet.1000066400000000000000000000013701361153320700176520ustar00rootroot00000000000000.TH BATCH_RUBBER_SHEET 1 "2 Feb 2002" .SH NAME batch_rubber_sheet \- warp a set of images with a rubber-sheet transformation .SH SYNOPSIS .B batch_rubber_sheet matrix image1 image2 ... .SH DESCRIPTION The first argument specifies a file containing the transformation, subsequent arguments are image files to be transformed. The transformed image is written to a new file, named as the old file, but with "rsc_" prepended to the file name. For example: batch_rubber_sheet lens.mat fred.jpg jim.png will read a transform from the file .B lens.mat and apply it to .B fred.jpg and .B jim.png, writing files .B rsc_fred.jpg and .B rsc_jim.png. .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO The "Image=>Rubber" menu in nip. libvips-8.9.1/man/light_correct.1000066400000000000000000000024041361153320700166670ustar00rootroot00000000000000.TH LIGHT_CORRECT 1 "14 Oct 1996" .SH NAME light_correct \- correct illumination errors on set of images .SH SYNOPSIS .B light_correct grey image1 image2 image3 ... .SH DESCRIPTION The first argument should be an image of a piece of grey card, subsequent arguments should be images taken with the same lighting set-up which need correcting. The corrected images are written to files prefixed with "ic_". For example, suppose you have a directory with the following files in: example% ls dat1.1.v dat1.2.v dat2.1.v dat2.2.v dat3.1.v dat3.2.v dat4.1.v dat4.2.v grey.v then run light_correct like this: example% light_correct grey.v dat*.v to generate this: example% ls dat1.1.v dat1.2.v dat2.1.v dat2.2.v dat3.1.v dat3.2.v dat4.1.v dat4.2.v grey.v ic_dat1.1.v ic_dat1.2.v ic_dat2.1.v ic_dat2.2.v ic_dat3.1.v ic_dat3.2.v ic_dat4.1.v ic_dat4.2.v light_correct works by smoothing out the grey card image, finding grey-mean/pixel for each point, and then multiplying the result by all the following images. It also removes any .desc files it generates, to avoid problems with im_global_balance(3). .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vipsheader(1), vips(1) .SH COPYRIGHT The National Gallery and Birkbeck College, 1989-1996. libvips-8.9.1/man/vips.1000066400000000000000000000053451361153320700150270ustar00rootroot00000000000000.TH VIPS 1 "30 June 1993" .SH NAME vips \- run vips operations from the command line .SH SYNOPSIS .B vips [options] [command] [command-options] [command-args] .SH DESCRIPTION .B vips(1) is the VIPS universal main program. You can use it to run any VIPS operation from the command line, to query the VIPS class hierarchy, and to maintain parts of the VIPS library. To run a VIPS operation, the first argument should be the name of the operation and following arguments should be the operation arguments. For example: $ vips invert lena.v lena2.v .SH OPTIONS .TP .B -l BASE-NAME, --list=BASE-NAME List operations below BASE-NAME. This prints a one-line summary of every operation in vips below the class BASE-NAME, where BASE-NAME may be a full vips class name, or a nickname. If BASE-NAME is not supplied, this will list all classes below VipsOperation. .TP .B -p PLUGIN, --plugin=PLUGIN Load PLUGIN. Note that plugins in $VIPSHOME/lib/vips-plugins-MAJOR.MINOR are loaded automatically. .TP .B -v, --version Show VIPS version. .SH COMMANDS .TP .B operation-name operation-arguments Execute a named operation, for example add. .SH EXAMPLES Run a vips8 operation. Operation options must follow the operation name. $ vips insert lena.v lena2.v out.v 0 0 --background "128 0 0" Get a "usage" message for an operation. $ vips insert insert image @sub into @main at @x, @y usage: insert main sub out x y where: main - Main input image, input VipsImage sub - Sub-image to insert into main image, input VipsImage out - Output image, output VipsImage x - Left edge of sub in main, input gint default: 0 min: -100000000, max: 100000000 y - Top edge of sub in main, input gint default: 0 min: -100000000, max: 100000000 optional arguments: expand - Expand output to hold all of both inputs, input gboolean default: false background - Colour for new pixels, input VipsArrayDouble operation flags: sequential List all draw operations. $ vips -l draw VipsDraw (draw), draw operations VipsDrawink (drawink), draw with ink operations VipsDrawRect (draw_rect), paint a rectangle on an image VipsDrawMask (draw_mask), draw a mask on an image VipsDrawLine (draw_line), draw a line on an image VipsDrawCircle (draw_circle), draw a circle on an image VipsDrawFlood (draw_flood), flood-fill an area VipsDrawImage (draw_image), paint an image into another image VipsDrawSmudge (draw_smudge), blur a rectangle on an image .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vipsheader(1) .SH COPYRIGHT The National Gallery and Birkbeck College, 1989-1996. libvips-8.9.1/man/vipsedit.1000066400000000000000000000024521361153320700156710ustar00rootroot00000000000000.TH VIPSEDIT 1 "30 June 1993" .SH NAME vipsedit \- edit header of a vips image file .SH SYNOPSIS .B vipsedit [OPTION...] vipsfile .SH DESCRIPTION .B vipsedit alters a VIPS image file's header. This is useful for setting the resolution, for example. The options are: -x, --xsize=N set Xsize to N -y, --ysize=N set Ysize to N -b, --bands=N set Bands to N -f, --format=F set BandFmt to F (eg. uchar) -i, --interpretation=I set Interpretation to I (eg. xyz) -c, --coding=C set Coding to C (eg. labq) -X, --xres=R set Xres to R pixels/mm -Y, --yres=R set Yres to R pixels/mm -u, --xoffset=N set Xoffset to N -v, --yoffset=N set Yoffset to N -e, --setext replace extension block with stdin Be very careful when changing Xsize, Ysize, BandFmt or Bands. vipsedit does no checking! .SH EXAMPLES To set the Xsize to 512 and Bands to 6: vipsedit --xsize=512 --bands=6 fred.v or vipsedit -x 512 -b 6 fred.v Extract the XML metadata from an image with .B vipsheader(1), edit it, and reattach with .B vipsedit(1). vipsheader -f getext fred.v | sed s/banana/pineapple/ | vipsedit -e fred.v .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vipsheader(1) .SH COPYRIGHT K. Martinez 1993 libvips-8.9.1/man/vipsheader.1000066400000000000000000000016661361153320700162020ustar00rootroot00000000000000.TH VIPSHEADER 1 "12 July 1990" .SH NAME vipsheader \- prints information about an image file .SH SYNOPSIS vipsheader [OPTIONS ...] files ... .SH DESCRIPTION .B vipsheader(1) prints image header fields to stdout. .SH OPTIONS .TP .B -a, --all Show all fields. Fields are displayed to be convenient for humans to read, so binary data, for example, is summarized rather than simply copied. .TP .B -f FIELD, --field=FIELD Print value of .B FIELD from image header. Fields are printed in a way suitable for programs to understand, so, for example, binary data is base64-encoded and printed as a stream of characters. The special field name .B getext prints the VIPS extension block: the XML defining the image metadata. You can alter this, then reattach with .B vipsedit(1). .SH EXAMPLES $ vipsheader -f Xsize ~/pics/*.v 1024 1279 22865 1 256 .SH SEE ALSO vipsedit(1) .SH COPYRIGHT N. Dessipris .SH AUTHOR N. Dessipris \- 12/07/1990 libvips-8.9.1/man/vipsprofile.1000066400000000000000000000027141361153320700164050ustar00rootroot00000000000000.TH VIPSPROFILE 1 "13 December 2013" .SH NAME vipsprofile \- analyze vips profiles .SH SYNOPSIS .B vipsprofile .SH DESCRIPTION .B vipsprofile(1) analyzes the file written by the --vips-profile option, calculates some statistics, and draws a graph of evaluation. Run any vips program with the --vips-profile option to generate a file called "vips-profile.txt". This contains timing information about CPU use, memory use and thread synchronisation. Run .B vipsprofile(1) to load this file, calculate some statistics, and draw a graph of evaluation saved to vips-profile.svg. This analysis can help track down performance problems. For example: $ vips sharpen shark.jpg x.jpg --vips-profile recording profile in vips-profile.txt $ vipsprofile reading from vips-profile.txt loaded 3622 events total time = 0.138322 name alive wait% work% unkn% memory peakm worker 20 0.069 34.5 58.9 6.65 3.14 5.56 worker 21 0.07 1.36 60.2 38.4 2.65 5.07 worker 22 0.07 33 55.8 11.1 2.62 5.04 worker 23 0.072 34.2 59.7 6.15 2.72 5.14 wbuffer 24 0.075 99 1.03 0.00401 0 0 wbuffer 25 0.075 95.6 4.39 0.00667 0 0 main 26 0.14 52.8 0 47.2 -11.1 0.787 peak memory = 21.6 MB writing to vips-profile.svg .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vips(1) libvips-8.9.1/man/vipsthumbnail.1000066400000000000000000000055411361153320700167310ustar00rootroot00000000000000.TH VIPSTHUMBNAIL 1 "13 May 2010" .SH NAME vipsthumbnail \- make thumbnails of image files .SH SYNOPSIS .B vipsthumbnail [flags] imagefile1 imagefile2 ... .SH DESCRIPTION .B vipsthumbnail(1) processes each .B imagefile in turn, shrinking each image to fit within a 128 by 128 pixel square. The shrunk image is written to a new file named .B tn_imagefile.jpg. This program is typically faster and uses less memory than other image thumbnail programs. For example: $ vipsthumbnail fred.png jim.tif will read image files .B fred.png and .B jim.tif and write thumbnails to the files .B tn_fred.jpg and .B tn_jim.jpg. $ vipsthumbnail --size=64 -o thumbnails/%s.png fred.jpg will read image file .B fred.jpg and write a 64 x 64 pixel thumbnail to the file .B thumbnails/fred.png. .SH OPTIONS .TP .B -s N, --size=N Set the output thumbnail size to .B N x .B N pixels. You can use "MxN" to specify a rectangular bounding box. The image is shrunk so that it just fits within this area, images which are smaller than this are expanded. Use "xN" or "Mx" to just resize on one axis. Append "<" to only resize if the input image is smaller than the target, append ">" to only resize if the input image is larger than the target. .TP .B -o FORMAT, --output=FORMAT Set the output format string. The input filename has any file type suffix removed, then that value is substitued into .B FORMAT replacing .B %s. If .B FORMAT is a relative path, the name of the input directory is prepended. In other words, any path in .B FORMAT is relative to the directory of the current input file. The default value is .B tn_%s.jpg meaning JPEG output, with .B tn_ prepended. You can add format options too, for example .B tn_%s.jpg[Q=20] will write JPEG images with Q set to 20. .TP .B -e PROFILE, --eprofile=PROFILE Export thumbnails with this ICC profile. Images are only colour-transformed if there is both an output and an input profile available. The input profile can either be embedded in the input image or supplied with the .B --iprofile option. .TP .B -i PROFILE, --iprofile=PROFILE Import images with this ICC profile, if no profile is embdedded in the image. Images are only colour-transformed if there is both an output and an input profile available. The output profile should be supplied with the .B --oprofile option. .TP .B -c, --crop Crop the output image down. The image is shrunk so as to completely fill the bounding box in both axes, then any excess is cropped off. .TP .B -d, --delete Delete the output profile from the image. This can save a small amount of space. .TP .B -t, --rotate Auto-rotate images using EXIF orientation tags. .TP .B -a, --linear Shrink images in linear light colour space. This can be much slower. .SH RETURN VALUE returns 0 on success and non-zero on error. Error can mean one or more conversions failed. .SH SEE ALSO vipsheader(1) libvips-8.9.1/po/000077500000000000000000000000001361153320700136205ustar00rootroot00000000000000libvips-8.9.1/po/ChangeLog000066400000000000000000000000221361153320700153640ustar00rootroot00000000000000started 17 dec 03 libvips-8.9.1/po/LINGUAS000066400000000000000000000000001361153320700146330ustar00rootroot00000000000000libvips-8.9.1/po/POTFILES.in000066400000000000000000000300101361153320700153670ustar00rootroot00000000000000libvips/arithmetic/hough_circle.c libvips/arithmetic/boolean.c libvips/arithmetic/complex.c libvips/arithmetic/hough_line.c libvips/arithmetic/profile.c libvips/arithmetic/sign.c libvips/arithmetic/hough.c libvips/arithmetic/getpoint.c libvips/arithmetic/remainder.c libvips/arithmetic/math.c libvips/arithmetic/sum.c libvips/arithmetic/hist_find_ndim.c libvips/arithmetic/subtract.c libvips/arithmetic/statistic.c libvips/arithmetic/unary.c libvips/arithmetic/abs.c libvips/arithmetic/round.c libvips/arithmetic/measure.c libvips/arithmetic/linear.c libvips/arithmetic/relational.c libvips/arithmetic/multiply.c libvips/arithmetic/deviate.c libvips/arithmetic/unaryconst.c libvips/arithmetic/min.c libvips/arithmetic/add.c libvips/arithmetic/nary.c libvips/arithmetic/stats.c libvips/arithmetic/binary.c libvips/arithmetic/project.c libvips/arithmetic/hist_find.c libvips/arithmetic/arithmetic.c libvips/arithmetic/divide.c libvips/arithmetic/invert.c libvips/arithmetic/max.c libvips/arithmetic/find_trim.c libvips/arithmetic/math2.c libvips/arithmetic/avg.c libvips/arithmetic/hist_find_indexed.c libvips/colour/dE76.c libvips/colour/scRGB2XYZ.c libvips/colour/LabQ2LabS.c libvips/colour/LabS2LabQ.c libvips/colour/UCS2LCh.c libvips/colour/profiles.c libvips/colour/LCh2Lab.c libvips/colour/Yxy2XYZ.c libvips/colour/XYZ2Lab.c libvips/colour/scRGB2BW.c libvips/colour/sRGB2HSV.c libvips/colour/LabQ2Lab.c libvips/colour/LabQ2sRGB.c libvips/colour/Lab2XYZ.c libvips/colour/CMYK2XYZ.c libvips/colour/XYZ2Yxy.c libvips/colour/XYZ2scRGB.c libvips/colour/colour.c libvips/colour/profile_load.c libvips/colour/Lab2LCh.c libvips/colour/rad2float.c libvips/colour/XYZ2CMYK.c libvips/colour/Lab2LabQ.c libvips/colour/dECMC.c libvips/colour/colourspace.c libvips/colour/scRGB2sRGB.c libvips/colour/sRGB2scRGB.c libvips/colour/LCh2UCS.c libvips/colour/icc_transform.c libvips/colour/dE00.c libvips/colour/float2rad.c libvips/colour/HSV2sRGB.c libvips/colour/Lab2LabS.c libvips/colour/LabS2Lab.c libvips/conversion/bandjoin.c libvips/conversion/wrap.c libvips/conversion/arrayjoin.c libvips/conversion/premultiply.c libvips/conversion/switch.c libvips/conversion/scale.c libvips/conversion/flatten.c libvips/conversion/conversion.c libvips/conversion/rot.c libvips/conversion/sequential.c libvips/conversion/gamma.c libvips/conversion/msb.c libvips/conversion/autorot.c libvips/conversion/smartcrop.c libvips/conversion/bandmean.c libvips/conversion/copy.c libvips/conversion/tilecache.c libvips/conversion/extract.c libvips/conversion/bandbool.c libvips/conversion/grid.c libvips/conversion/transpose3d.c libvips/conversion/unpremultiply.c libvips/conversion/bandrank.c libvips/conversion/ifthenelse.c libvips/conversion/join.c libvips/conversion/falsecolour.c libvips/conversion/cache.c libvips/conversion/embed.c libvips/conversion/insert.c libvips/conversion/replicate.c libvips/conversion/rot45.c libvips/conversion/byteswap.c libvips/conversion/bandunfold.c libvips/conversion/cast.c libvips/conversion/flip.c libvips/conversion/zoom.c libvips/conversion/bandfold.c libvips/conversion/subsample.c libvips/conversion/recomb.c libvips/conversion/bandary.c libvips/convolution/conva.c libvips/convolution/correlation.c libvips/convolution/gaussblur.c libvips/convolution/conv.c libvips/convolution/convi.c libvips/convolution/convsep.c libvips/convolution/sharpen.c libvips/convolution/convolution.c libvips/convolution/fastcor.c libvips/convolution/canny.c libvips/convolution/convf.c libvips/convolution/spcor.c libvips/convolution/compass.c libvips/convolution/convasep.c libvips/convolution/sobel.c libvips/create/perlin.c libvips/create/worley.c libvips/create/zone.c libvips/create/mask_ideal_band.c libvips/create/gaussmat.c libvips/create/grey.c libvips/create/buildlut.c libvips/create/create.c libvips/create/fractsurf.c libvips/create/black.c libvips/create/xyz.c libvips/create/invertlut.c libvips/create/mask.c libvips/create/mask_butterworth.c libvips/create/mask_ideal_ring.c libvips/create/point.c libvips/create/tonelut.c libvips/create/mask_ideal.c libvips/create/text.c libvips/create/mask_butterworth_ring.c libvips/create/mask_gaussian.c libvips/create/gaussnoise.c libvips/create/mask_butterworth_band.c libvips/create/sines.c libvips/create/mask_gaussian_ring.c libvips/create/eye.c libvips/create/logmat.c libvips/create/identity.c libvips/create/mask_gaussian_band.c libvips/create/mask_fractal.c libvips/draw/drawink.c libvips/draw/draw_line.c libvips/draw/draw_circle.c libvips/draw/draw_flood.c libvips/draw/draw_rect.c libvips/draw/draw_smudge.c libvips/draw/draw_image.c libvips/draw/draw_mask.c libvips/draw/draw.c libvips/foreign/vipssave.c libvips/foreign/dzsave.c libvips/foreign/csv.c libvips/foreign/niftiload.c libvips/foreign/magick.c libvips/foreign/ppmload.c libvips/foreign/openslideload.c libvips/foreign/tiffload.c libvips/foreign/tiff2vips.c libvips/foreign/radsave.c libvips/foreign/analyze2vips.c libvips/foreign/fits.c libvips/foreign/csvsave.c libvips/foreign/analyzeload.c libvips/foreign/ppmsave.c libvips/foreign/radload.c libvips/foreign/pdfload.c libvips/foreign/fitssave.c libvips/foreign/rawload.c libvips/foreign/heifload.c libvips/foreign/jpeg2vips.c libvips/foreign/vips2jpeg.c libvips/foreign/pdfiumload.c libvips/foreign/webpsave.c libvips/foreign/magick7load.c libvips/foreign/csvload.c libvips/foreign/heifsave.c libvips/foreign/radiance.c libvips/foreign/pngload.c libvips/foreign/openslide2vips.c libvips/foreign/matrixsave.c libvips/foreign/tiffsave.c libvips/foreign/magickload.c libvips/foreign/jpegsave.c libvips/foreign/webpload.c libvips/foreign/gifload.c libvips/foreign/pngsave.c libvips/foreign/exif.c libvips/foreign/magick2vips.c libvips/foreign/openexr2vips.c libvips/foreign/matload.c libvips/foreign/vips2webp.c libvips/foreign/openexrload.c libvips/foreign/rawsave.c libvips/foreign/fitsload.c libvips/foreign/niftisave.c libvips/foreign/tiff.c libvips/foreign/quantise.c libvips/foreign/webp2vips.c libvips/foreign/vips2tiff.c libvips/foreign/cairo.c libvips/foreign/magicksave.c libvips/foreign/svgload.c libvips/foreign/jpegload.c libvips/foreign/vipsload.c libvips/foreign/matlab.c libvips/foreign/foreign.c libvips/foreign/vipspng.c libvips/foreign/matrixload.c libvips/freqfilt/freqfilt.c libvips/freqfilt/invfft.c libvips/freqfilt/freqmult.c libvips/freqfilt/spectrum.c libvips/freqfilt/fwfft.c libvips/freqfilt/phasecor.c libvips/histogram/hist_norm.c libvips/histogram/hist_cum.c libvips/histogram/histogram.c libvips/histogram/hist_match.c libvips/histogram/hist_entropy.c libvips/histogram/hist_plot.c libvips/histogram/stdif.c libvips/histogram/percent.c libvips/histogram/hist_ismonotonic.c libvips/histogram/hist_equal.c libvips/histogram/maplut.c libvips/histogram/hist_unary.c libvips/histogram/case.c libvips/histogram/hist_local.c libvips/introspect.c libvips/iofuncs/target.c libvips/iofuncs/sinkscreen.c libvips/iofuncs/vipsmarshal.c libvips/iofuncs/init.c libvips/iofuncs/dbuf.c libvips/iofuncs/buffer.c libvips/iofuncs/operation.c libvips/iofuncs/sbuf.c libvips/iofuncs/sinkmemory.c libvips/iofuncs/window.c libvips/iofuncs/reorder.c libvips/iofuncs/targetcustom.c libvips/iofuncs/base64.c libvips/iofuncs/source.c libvips/iofuncs/memory.c libvips/iofuncs/sinkdisc.c libvips/iofuncs/region.c libvips/iofuncs/rect.c libvips/iofuncs/util.c libvips/iofuncs/vips.c libvips/iofuncs/cache.c libvips/iofuncs/type.c libvips/iofuncs/semaphore.c libvips/iofuncs/gate.c libvips/iofuncs/sourcecustom.c libvips/iofuncs/mapfile.c libvips/iofuncs/sink.c libvips/iofuncs/enumtypes.c libvips/iofuncs/vector.c libvips/iofuncs/header.c libvips/iofuncs/error.c libvips/iofuncs/generate.c libvips/iofuncs/image.c libvips/iofuncs/connection.c libvips/iofuncs/threadpool.c libvips/iofuncs/buf.c libvips/iofuncs/system.c libvips/iofuncs/object.c libvips/morphology/labelregions.c libvips/morphology/morph.c libvips/morphology/nearest.c libvips/morphology/morphology.c libvips/morphology/rank.c libvips/morphology/hitmiss.c libvips/morphology/countlines.c libvips/mosaicing/global_balance.c libvips/mosaicing/im_lrmosaic.c libvips/mosaicing/im_initialize.c libvips/mosaicing/im_remosaic.c libvips/mosaicing/im_improve.c libvips/mosaicing/im_lrcalcon.c libvips/mosaicing/mosaic1.c libvips/mosaicing/im_chkpair.c libvips/mosaicing/im_tbcalcon.c libvips/mosaicing/mosaicing.c libvips/mosaicing/mosaic.c libvips/mosaicing/im_avgdxdy.c libvips/mosaicing/im_clinear.c libvips/mosaicing/merge.c libvips/mosaicing/im_tbmosaic.c libvips/mosaicing/match.c libvips/mosaicing/im_lrmerge.c libvips/mosaicing/im_tbmerge.c libvips/resample/shrinkh.c libvips/resample/shrinkv.c libvips/resample/reduce.c libvips/resample/transform.c libvips/resample/resize.c libvips/resample/mapim.c libvips/resample/thumbnail.c libvips/resample/resample.c libvips/resample/affine.c libvips/resample/quadratic.c libvips/resample/interpolate.c libvips/resample/similarity.c libvips/resample/shrink.c tools/vips.c tools/vipsedit.c tools/vipsheader.c tools/vipsthumbnail.c cplusplus/include/vips/VError8.h cplusplus/include/vips/vips-operators.h cplusplus/include/vips/VConnection8.h cplusplus/include/vips/VImage8.h cplusplus/include/vips/VInterpolate8.h libvips/arithmetic/binary.h libvips/arithmetic/unary.h libvips/arithmetic/parithmetic.h libvips/arithmetic/hough.h libvips/arithmetic/nary.h libvips/arithmetic/statistic.h libvips/arithmetic/unaryconst.h libvips/colour/profiles.h libvips/colour/pcolour.h libvips/conversion/bandary.h libvips/conversion/pconversion.h libvips/convolution/correlation.h libvips/convolution/pconvolution.h libvips/create/pmask.h libvips/create/pcreate.h libvips/create/point.h libvips/draw/pdraw.h libvips/draw/drawink.h libvips/foreign/tiff.h libvips/foreign/pforeign.h libvips/foreign/dbh.h libvips/foreign/magick.h libvips/foreign/jpeg.h libvips/freqfilt/pfreqfilt.h libvips/histogram/phistogram.h libvips/histogram/hist_unary.h libvips/include/vips/freqfilt.h libvips/include/vips/arithmetic.h libvips/include/vips/buf.h libvips/include/vips/histogram.h libvips/include/vips/intl.h libvips/include/vips/threadpool.h libvips/include/vips/operation.h libvips/include/vips/video.h libvips/include/vips/memory.h libvips/include/vips/conversion.h libvips/include/vips/private.h libvips/include/vips/interpolate.h libvips/include/vips/internal.h libvips/include/vips/basic.h libvips/include/vips/region.h libvips/include/vips/foreign.h libvips/include/vips/gate.h libvips/include/vips/almostdeprecated.h libvips/include/vips/dispatch.h libvips/include/vips/image.h libvips/include/vips/mosaicing.h libvips/include/vips/vector.h libvips/include/vips/cimg_funcs.h libvips/include/vips/dbuf.h libvips/include/vips/error.h libvips/include/vips/connection.h libvips/include/vips/sbuf.h libvips/include/vips/type.h libvips/include/vips/create.h libvips/include/vips/generate.h libvips/include/vips/format.h libvips/include/vips/util.h libvips/include/vips/convolution.h libvips/include/vips/thread.h libvips/include/vips/resample.h libvips/include/vips/object.h libvips/include/vips/vips.h libvips/include/vips/inlines.h libvips/include/vips/transform.h libvips/include/vips/draw.h libvips/include/vips/semaphore.h libvips/include/vips/vips7compat.h libvips/include/vips/header.h libvips/include/vips/soname.h libvips/include/vips/rect.h libvips/include/vips/colour.h libvips/include/vips/mask.h libvips/include/vips/debug.h libvips/include/vips/morphology.h libvips/include/vips/enumtypes.h libvips/include/vips/deprecated.h libvips/include/vips/version.h libvips/iofuncs/sink.h libvips/iofuncs/vipsmarshal.h libvips/morphology/pmorphology.h libvips/mosaicing/pmosaicing.h libvips/mosaicing/global_balance.h libvips/resample/presample.h libvips/resample/templates.h cplusplus/examples/invert.cpp cplusplus/examples/avg.cpp cplusplus/examples/test.cpp cplusplus/examples/resize.cpp cplusplus/examples/buffer.cpp cplusplus/examples/embed.cpp cplusplus/examples/profile.cpp cplusplus/examples/test_overloads.cpp cplusplus/VError.cpp cplusplus/VImage.cpp cplusplus/VInterpolate.cpp cplusplus/vips-operators.cpp cplusplus/VConnection.cpp libvips/conversion/composite.cpp libvips/resample/reduceh.cpp libvips/resample/vsqbs.cpp libvips/resample/lbb.cpp libvips/resample/nohalo.cpp libvips/resample/reducev.cpp libvips/resample/bicubic.cpp libvips-8.9.1/po/POTFILES.skip000066400000000000000000000000001361153320700157230ustar00rootroot00000000000000libvips-8.9.1/po/README000066400000000000000000000030621361153320700145010ustar00rootroot00000000000000translators ----------- see this page for a howto: http://developer.gnome.org/doc/tutorials/gnome-i18n/translator.html Things like msgid "/File/_Save Image As ..." are menu items. You only need to translate the last part (following the final "/"). The underscore character marks the accelerator (the underlined character in the menu item). So you could put: msgstr "Sevy i_mago os ..." and it would display as "Sevy imago os ...", with the "m" underlined. tips ---- cd vips-8.x find */* -name "*.c" > po/POTFILES.in find */* -name "*.cc" >> po/POTFILES.in find */* -name "*.h" >> po/POTFILES.in find */* -name "*.cxx" >> po/POTFILES.in find */* -name "*.cpp" >> po/POTFILES.in regenerate the list of files to search for strings ... don't forget to remove autogenerated files, fuzzer sources, deprecated stuff etc. intltool-update --pot make a new vips8.x.pot translation template from the sources add header # test translation file # Copyright (C) 2019 # This file is distributed under the same license as the libvips package. # John Cupitt , 2019. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: vips 8.9.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-08-06 15:19+0100\n" "PO-Revision-Date: 2019-08-06 15:19+0100\n" "Last-Translator: john \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=s;\n" edits to make vips8.xx.pot into test.po msgfmt -cv -o /dev/null test.po check translation for errors libvips-8.9.1/po/de.po000066400000000000000000003025631361153320700145610ustar00rootroot00000000000000# German translation of vips. # Copyright (C) 1990-2009 Imperial College, London and others. # This file is distributed under the same license as the vips package. # Copyright of this file (C) Chris Leick 2010-2013. # See also http://www.gnu-darwin.org/www001/src/ports/graphics/vips/work/ # vips-7.12.4/doc/pdf/vipsmanual.pdf # msgid "" msgstr "" "Project-Id-Version: libvips-doc 7.36.5-1\n" "Report-Msgid-Bugs-To: VIPSIP@JISCMAIL.AC.UK\n" "POT-Creation-Date: 2012-03-08 21:02+0000\n" "PO-Revision-Date: 2014-03-12 21:58+0100\n" "Last-Translator: Chris Leick \n" "Language-Team: Debian German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: libvips/arithmetic/abs.c:215 # http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650& # db=man&fname=/usr/share/catman/p_man/cat3/il_c/ilAbsImg.z msgid "absolute value of an image" msgstr "absoluter Wert eines Bildes" #: libvips/arithmetic/statistic.c:147 msgid "VIPS statistic operations" msgstr "statistische VIPS-Transaktionen" #: libvips/arithmetic/statistic.c:151 libvips/arithmetic/unary.c:87 #: libvips/conversion/bandmean.c:197 libvips/conversion/cast.c:474 #: libvips/conversion/tilecache.c:422 libvips/conversion/extract.c:194 #: libvips/conversion/extract.c:353 libvips/conversion/embed.c:516 #: libvips/conversion/rot.c:355 libvips/conversion/flip.c:240 #: libvips/conversion/copy.c:318 libvips/conversion/recomb.c:200 #: libvips/conversion/replicate.c:196 libvips/conversion/cache.c:106 #: libvips/conversion/bandjoin.c:171 libvips/foreign/foreign.c:1379 msgid "Input" msgstr "Eingabe" #: libvips/arithmetic/statistic.c:152 libvips/conversion/cast.c:475 #: libvips/conversion/tilecache.c:423 libvips/conversion/extract.c:195 #: libvips/conversion/extract.c:354 libvips/conversion/embed.c:517 #: libvips/conversion/rot.c:356 libvips/conversion/flip.c:241 #: libvips/conversion/copy.c:319 libvips/conversion/replicate.c:197 #: libvips/conversion/cache.c:107 msgid "Input image" msgstr "Eingabebild" #: libvips/arithmetic/im_point_bilinear.c:74 msgid "coords outside image" msgstr "Koordinaten außerhalb des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:298 msgid "absolute value" msgstr "absoluter Wert" #. Name #: libvips/arithmetic/arith_dispatch.c:317 libvips/arithmetic/add.c:186 msgid "add two images" msgstr "zwei Bilder hinzufügen" #. Name #: libvips/arithmetic/arith_dispatch.c:342 msgid "average value of image" msgstr "Durchschnittswert des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:431 msgid "standard deviation of image" msgstr "Standardabweichung des Bildes" # im_exptra() transforms element x of input to # pow(e, x) in output. #. Name #: libvips/arithmetic/arith_dispatch.c:450 msgid "10^pel of image" msgstr "10^pel des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:469 msgid "e^pel of image" msgstr "e^pel des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:498 msgid "x^pel of image" msgstr "x^pel des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:527 msgid "[x,y,z]^pel of image" msgstr "[x,y,z]^pel des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:546 libvips/arithmetic/divide.c:225 msgid "divide two images" msgstr "zwei Bilder teilen" #. Name #: libvips/arithmetic/arith_dispatch.c:565 msgid "photographic negative" msgstr "Fotonegativ" #. Name #: libvips/arithmetic/arith_dispatch.c:596 msgid "calculate a*in + b = outfile" msgstr "Berechnen von a*in + b = Ausgabedatei" #: libvips/arithmetic/arith_dispatch.c:622 msgid "vectors not equal length" msgstr "Vektoren ungleicher Länge" #. Name #: libvips/arithmetic/arith_dispatch.c:633 msgid "calculate a*in + b -> out, a and b vectors" msgstr "Berechnen von a*in + b -> out, a und b Vektoren" #. Name #: libvips/arithmetic/arith_dispatch.c:652 msgid "log10 of image" msgstr "log10 des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:671 msgid "ln of image" msgstr "ln des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:690 msgid "tan of image (angles in degrees)" msgstr "Tangens des Bildes (Winkel in Grad)" #. Name #: libvips/arithmetic/arith_dispatch.c:709 msgid "atan of image (result in degrees)" msgstr "Arkustangens des Bildes (Ergebnis in Grad)" #. Name #: libvips/arithmetic/arith_dispatch.c:728 msgid "cos of image (angles in degrees)" msgstr "Kosinus des Bildes (Winkel in Grad)" #. Name #: libvips/arithmetic/arith_dispatch.c:747 msgid "acos of image (result in degrees)" msgstr "Arkuskosinus des Bildes (Ergebnis in Grad)" # hinter diesem String folgt ein Flag. #. Name #: libvips/arithmetic/arith_dispatch.c:766 msgid "round to smallest integer value not less than" msgstr "auf kleinsten ganzzahligen Wert runden, nicht weniger als" # hinter diesem String folgt ein Flag. #. Name #: libvips/arithmetic/arith_dispatch.c:785 msgid "round to largest integer value not greater than" msgstr "auf größten ganzzahligen Wert runden, nicht größer als" # hinter diesem String folgt ein Flag. #. Name #: libvips/arithmetic/arith_dispatch.c:804 msgid "round to nearest integer value" msgstr "auf nächsten ganzzahligen Wert runden" #. Name #: libvips/arithmetic/arith_dispatch.c:823 msgid "sin of image (angles in degrees)" msgstr "Sinus des Bildes (Winkel in Grad)" #. Name #: libvips/arithmetic/arith_dispatch.c:842 msgid "average image bands" msgstr "durchschnittliche Bildbänder" #. Name #: libvips/arithmetic/arith_dispatch.c:861 msgid "unit vector in direction of value" msgstr "Einheitsvektor in Richtung des Wertes" #. Name #: libvips/arithmetic/arith_dispatch.c:880 msgid "asin of image (result in degrees)" msgstr "Arkussinus des Bildes (Ergebnis in Grad)" #. Name #: libvips/arithmetic/arith_dispatch.c:905 msgid "maximum value of image" msgstr "Maximalwert des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:940 msgid "position of maximum value of image" msgstr "Position des Maximalwerts des Bildes" #: libvips/arithmetic/arith_dispatch.c:968 msgid "position of maximum value of image, averaging in case of draw" msgstr "" "Position des Maximalwerts des Bildes, durchschnittlich im Fall des Zeichnens" #: libvips/arithmetic/arith_dispatch.c:1012 msgid "position and value of n maxima of image" msgstr "Position und Wert von n Maxima des Bildes" #: libvips/arithmetic/arith_dispatch.c:1046 msgid "position and value of n minima of image" msgstr "Position und Wert von n Minima des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:1094 msgid "measure averages of a grid of patches" msgstr "Durchschnittsmaße eine Gitters aus Flickstücken" #. Name #: libvips/arithmetic/arith_dispatch.c:1119 msgid "minimum value of image" msgstr "Minimalwert des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:1147 msgid "position of minimum value of image" msgstr "Position des Minimalwerts des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:1166 msgid "remainder after integer division" msgstr "Rest nach Ganzzahldivision" #. Name #: libvips/arithmetic/arith_dispatch.c:1195 msgid "remainder after integer division by a constant" msgstr "Rest nach Ganzzahldivision durch eine Konstante" #. Name #: libvips/arithmetic/arith_dispatch.c:1224 msgid "remainder after integer division by a vector of constants" msgstr "Rest nach Ganzzahldivision durch einen Vektor von Konstanten" #. Name #: libvips/arithmetic/arith_dispatch.c:1244 libvips/arithmetic/multiply.c:172 msgid "multiply two images" msgstr "zwei Bilder multiplizieren" #. Name #: libvips/arithmetic/arith_dispatch.c:1265 msgid "pel^x of image" msgstr "pel^x des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:1286 msgid "pel^[x,y,z] of image" msgstr "pel^[x,y,z] des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:1317 msgid "many image statistics in one pass" msgstr "viele Bildstatistiken in einem Durchgang" #. Name #: libvips/arithmetic/arith_dispatch.c:1336 libvips/arithmetic/subtract.c:161 msgid "subtract two images" msgstr "zwei Bilder subtrahieren" #. Name #: libvips/arithmetic/arith_dispatch.c:1384 msgid "pixelwise linear regression" msgstr "bildpunktweise lineare Regression" #. Name #: libvips/arithmetic/arith_dispatch.c:1403 msgid "phase of cross power spectrum of two complex images" msgstr "Phase des Kreuzleistungsspektrums zweier komplexer Bilder" #: libvips/arithmetic/linear.c:249 msgid "calculate (a * in + b)" msgstr "(a * in + b) berechnen" #: libvips/arithmetic/linear.c:257 msgid "a" msgstr "a" #: libvips/arithmetic/linear.c:258 msgid "Multiply by this" msgstr "hiermit multiplizieren" #: libvips/arithmetic/linear.c:264 msgid "b" msgstr "b" #: libvips/arithmetic/linear.c:265 msgid "Add this" msgstr "dies hinzufügen" #: libvips/arithmetic/remainder.c:178 msgid "remainder after integer division of two images" msgstr "Rest nach Ganzzahldivision zweier Bilder" #: libvips/arithmetic/remainder.c:327 msgid "remainder after integer division of an image and a constant" msgstr "Rest nach Ganzzahldivision eines Bildes und einer Konstante" #: libvips/arithmetic/im_maxpos_vec.c:121 #: libvips/arithmetic/im_maxpos_vec.c:186 msgid "scalar images only" msgstr "nur skalare Bilder" #: libvips/arithmetic/im_maxpos_vec.c:126 #: libvips/arithmetic/im_maxpos_vec.c:191 msgid "single band images only" msgstr "nur Einzelbandbilder" #: libvips/arithmetic/im_maxpos_vec.c:131 #: libvips/arithmetic/im_maxpos_vec.c:196 msgid "uncoded images only" msgstr "nur unkodierte Bilder" #: libvips/arithmetic/im_maxpos_vec.c:136 #: libvips/arithmetic/im_maxpos_vec.c:201 msgid "invalid argument" msgstr "ungültiges Argument" #: libvips/arithmetic/min.c:317 msgid "find image minimum" msgstr "Minimum des Bildes finden" #: libvips/arithmetic/min.c:325 libvips/arithmetic/arithmetic.c:382 #: libvips/arithmetic/stats.c:423 libvips/arithmetic/measure.c:202 #: libvips/arithmetic/max.c:324 libvips/arithmetic/avg.c:218 #: libvips/arithmetic/deviate.c:219 libvips/conversion/conversion.c:89 #: libvips/foreign/foreign.c:897 msgid "Output" msgstr "Ausgabe" #: libvips/arithmetic/min.c:326 libvips/arithmetic/max.c:325 #: libvips/arithmetic/avg.c:219 libvips/arithmetic/deviate.c:220 msgid "Output value" msgstr "Ausgabewert" #: libvips/arithmetic/min.c:332 libvips/arithmetic/max.c:331 #: libvips/conversion/embed.c:522 msgid "x" msgstr "x" #: libvips/arithmetic/min.c:333 msgid "Horizontal position of minimum" msgstr "horizontale Position des Minimums" #: libvips/arithmetic/min.c:339 libvips/arithmetic/max.c:338 #: libvips/conversion/embed.c:529 msgid "y" msgstr "y" #: libvips/arithmetic/min.c:340 msgid "Vertical position of minimum" msgstr "vertikale Position des Minimums" #: libvips/arithmetic/boolean.c:209 msgid "a boolean operation on a pair of images" msgstr "eine Wahr-/Falsch-Transaktion für ein Bilderpaar" #: libvips/arithmetic/boolean.c:217 libvips/arithmetic/boolean.c:519 #: libvips/arithmetic/math2.c:204 libvips/arithmetic/math2.c:401 #: libvips/arithmetic/math.c:205 libvips/arithmetic/relational.c:227 #: libvips/arithmetic/relational.c:560 libvips/arithmetic/complex.c:222 #: libvips/arithmetic/complex.c:476 msgid "Operation" msgstr "Transaktion" #: libvips/arithmetic/boolean.c:218 libvips/arithmetic/boolean.c:520 msgid "boolean to perform" msgstr "Boolesch zur Durchführung" #: libvips/arithmetic/boolean.c:511 msgid "boolean operations against a constant" msgstr "boolesche Transaktionen mit einer Konstante" #: libvips/arithmetic/arithmetic.c:164 #, c-format msgid "not one band or %d bands" msgstr "nicht ein Band oder %d Bänder" #: libvips/arithmetic/arithmetic.c:168 libvips/histograms_lut/im_identity.c:80 #: libvips/histograms_lut/im_identity.c:143 msgid "bad bands" msgstr "falsche Bänder" #: libvips/arithmetic/arithmetic.c:324 libvips/conversion/bandary.c:131 msgid "too many input images" msgstr "zu viele Eingabebilder" #: libvips/arithmetic/arithmetic.c:378 msgid "arithmetic operations" msgstr "arithmetische Transaktionen" #: libvips/arithmetic/arithmetic.c:383 libvips/conversion/conversion.c:90 #: libvips/foreign/foreign.c:898 msgid "Output image" msgstr "Ausgabebild" #: libvips/arithmetic/stats.c:415 libvips/arithmetic/avg.c:210 #: libvips/arithmetic/deviate.c:211 msgid "find image average" msgstr "Bildmittelwert finden" #: libvips/arithmetic/stats.c:424 libvips/arithmetic/measure.c:203 msgid "Output array of statistics" msgstr "Ausgabefeld von Statistiken" #: libvips/arithmetic/math2.c:196 msgid "pow( left, right)" msgstr "pow( links, rechts)" #: libvips/arithmetic/math2.c:205 libvips/arithmetic/math2.c:402 #: libvips/arithmetic/math.c:206 msgid "math to perform" msgstr "durchzuführende Berechnung" #: libvips/arithmetic/math2.c:393 msgid "pow( @in, @c )" msgstr "pow( @in, @c )" #: libvips/arithmetic/round.c:160 msgid "perform a round function on an image" msgstr "eine Rundungsfunktion für ein Bild ausführen" #: libvips/arithmetic/round.c:168 msgid "Round operation" msgstr "Rundungstransakktion" #: libvips/arithmetic/round.c:169 msgid "rounding operation to perform" msgstr "durchzuführende Rundungstransakktion" #: libvips/arithmetic/measure.c:163 #, c-format msgid "patch %d x %d, band %d: avg = %g, sdev = %g" msgstr "Flicken %d x %d, Band %d: Durchschn. = %g, sdev = %g" #: libvips/arithmetic/measure.c:192 msgid "measure a set of patches on a colour chart" msgstr "messen eines Satzes von Patches auf ein Farbdiagramm" #: libvips/arithmetic/measure.c:196 msgid "in" msgstr "in" #: libvips/arithmetic/measure.c:197 msgid "Image to measure" msgstr "zu vermessendes Bild" #: libvips/arithmetic/measure.c:208 libvips/conversion/replicate.c:202 msgid "Across" msgstr "über" #: libvips/arithmetic/measure.c:209 msgid "Number of patches across chart" msgstr "Anzahl der Patches über ein Diagramm" #: libvips/arithmetic/measure.c:215 libvips/conversion/replicate.c:209 msgid "Down" msgstr "hinunter" #: libvips/arithmetic/measure.c:216 msgid "Number of patches down chart" msgstr "Anzahl der Patches ein Diagramm hinunter" #: libvips/arithmetic/measure.c:222 libvips/arithmetic/binary.c:95 #: libvips/conversion/extract.c:200 msgid "Left" msgstr "links" #: libvips/arithmetic/measure.c:223 libvips/conversion/extract.c:201 msgid "Left edge of extract area" msgstr "linke Kante eines extrahierten Bereichs" #: libvips/arithmetic/measure.c:229 libvips/conversion/extract.c:207 msgid "Top" msgstr "oben" #: libvips/arithmetic/measure.c:230 libvips/conversion/extract.c:208 msgid "Top edge of extract area" msgstr "obere Kante eines extrahierten Bereichs" #: libvips/arithmetic/measure.c:236 libvips/conversion/extract.c:214 #: libvips/conversion/embed.c:536 libvips/conversion/copy.c:331 #: libvips/conversion/black.c:128 libvips/foreign/rawload.c:122 #: libvips/iofuncs/image.c:845 msgid "Width" msgstr "Breite" #: libvips/arithmetic/measure.c:237 libvips/conversion/extract.c:215 msgid "Width of extract area" msgstr "Breite des extrahierten Bereichs" #: libvips/arithmetic/measure.c:243 libvips/conversion/extract.c:221 #: libvips/conversion/embed.c:543 libvips/conversion/copy.c:338 #: libvips/conversion/black.c:135 libvips/foreign/rawload.c:129 #: libvips/iofuncs/image.c:852 msgid "Height" msgstr "Höhe" #: libvips/arithmetic/measure.c:244 libvips/conversion/extract.c:222 msgid "Height of extract area" msgstr "Höhe des extrahierten Bereichs" #: libvips/arithmetic/math.c:197 msgid "perform a math function on an image" msgstr "eine mathematische Funktion für ein Bild ausführen" #: libvips/arithmetic/relational.c:219 msgid "a relational operation on a pair of images" msgstr "eine relationale Transaktion für ein Bilderpaar" #: libvips/arithmetic/relational.c:228 libvips/arithmetic/relational.c:561 msgid "relational to perform" msgstr "relational durchzuführen" #: libvips/arithmetic/relational.c:552 msgid "relational operations against a constant" msgstr "relationale Transaktion für eine Konstante" #: libvips/arithmetic/unaryconst.c:201 msgid "unary operations with a constant" msgstr "unäre Transaktionen mit einer Konstante" #: libvips/arithmetic/unaryconst.c:205 msgid "c" msgstr "c" #: libvips/arithmetic/unaryconst.c:206 msgid "Array of constants" msgstr "Feld aus Konstanten" #: libvips/arithmetic/unary.c:80 msgid "unary operations" msgstr "unäre Transaktionen" #: libvips/arithmetic/unary.c:88 libvips/conversion/bandmean.c:198 #: libvips/conversion/recomb.c:201 msgid "Input image argument" msgstr "Eingabebildargument" #: libvips/arithmetic/invert.c:152 msgid "invert an image" msgstr "ein Bild invertieren" #: libvips/arithmetic/max.c:316 msgid "find image maximum" msgstr "Maximum des Bildes finden" #: libvips/arithmetic/max.c:332 msgid "Horizontal position of maximum" msgstr "horizontale Position des Maximums" #: libvips/arithmetic/max.c:339 msgid "Vertical position of maximum" msgstr "vertikale Position des Maximums" #: libvips/arithmetic/complex.c:215 msgid "perform a complex operation on an image" msgstr "eine komplexe Transaktion mit einem Bild durchführen" #: libvips/arithmetic/complex.c:223 libvips/arithmetic/complex.c:477 msgid "complex to perform" msgstr "komplex durchzuführen" #: libvips/arithmetic/complex.c:468 msgid "get a component from a complex image" msgstr "einen Bestandteil eines komplexen Bildes holen" #: libvips/arithmetic/complex.c:666 msgid "form a complex image from two real images" msgstr "ein komplexes Bild aus zwei echten Bildern erstellen" #: libvips/arithmetic/binary.c:88 msgid "binary operations" msgstr "binäre Transaktionen" #: libvips/arithmetic/binary.c:96 msgid "Left-hand image argument" msgstr "linksseitiges Bildargument" #: libvips/arithmetic/binary.c:101 msgid "Right" msgstr "rechts" #: libvips/arithmetic/binary.c:102 msgid "Right-hand image argument" msgstr "rechtsseitiges Bildargument" #: libvips/arithmetic/sign.c:151 msgid "unit vector of pixel" msgstr "Einheitsvektor von Bildpunkten" #: libvips/colour/im_rad2float.c:186 msgid "not a RAD image" msgstr "kein RAD-Bild" #: libvips/colour/im_icc_transform.c:202 libvips/colour/im_icc_transform.c:212 #: libvips/colour/im_icc_transform.c:1000 #: libvips/colour/im_icc_transform.c:1010 #, c-format msgid "unable to open profile \"%s\"" msgstr "Profil »%s« kann nicht geöffnet werden" #: libvips/colour/im_icc_transform.c:223 #: libvips/colour/im_icc_transform.c:1022 msgid "unable to create profiles" msgstr "es können keine Profile erstellt werden" #: libvips/colour/im_icc_transform.c:242 #: libvips/colour/im_icc_transform.c:1042 msgid "unable to read profile" msgstr "Profil kann nicht gelesen werden" #: libvips/colour/im_icc_transform.c:363 libvips/colour/im_icc_transform.c:372 #: libvips/colour/im_icc_transform.c:737 #: libvips/colour/im_icc_transform.c:1170 #: libvips/colour/im_icc_transform.c:1179 #: libvips/colour/im_icc_transform.c:1522 #, c-format msgid "" "intent %d (%s) not supported by profile \"%s\"; falling back to default " "intent (usually PERCEPTUAL)" msgstr "" "Ziel-%d (%s) nicht von Profil »%s« unterstützt; Rückfall auf Standardabsicht " "(normalerweise WAHRNEHMUNG)" #: libvips/colour/im_icc_transform.c:382 #: libvips/colour/im_icc_transform.c:1189 msgid "CMYK input profile needs a 4 band input image" msgstr "CMYK-Eingabeprofil benötigt ein Eingabebild mit vier Bändern" #: libvips/colour/im_icc_transform.c:392 #: libvips/colour/im_icc_transform.c:1199 msgid "RGB input profile needs a 3 band input image" msgstr "RGB-Eingabeprofil benötigt ein Eingabebild mit drei Bändern" #: libvips/colour/im_icc_transform.c:401 libvips/colour/im_icc_transform.c:551 #: libvips/colour/im_icc_transform.c:1208 #: libvips/colour/im_icc_transform.c:1340 #, c-format msgid "unimplemented input color space 0x%x" msgstr "nicht implementierter Eingabefarbraum 0x%x" #: libvips/colour/im_icc_transform.c:428 libvips/colour/im_icc_transform.c:767 #: libvips/colour/im_icc_transform.c:1235 #: libvips/colour/im_icc_transform.c:1552 #, c-format msgid "unimplemented output color space 0x%x" msgstr "nicht implementierter Ausgabefarbraum 0x%x" #: libvips/colour/im_icc_transform.c:444 libvips/colour/im_icc_transform.c:567 #: libvips/colour/im_icc_transform.c:1251 #: libvips/colour/im_icc_transform.c:1356 msgid "uchar or ushort input only" msgstr "nur »uchar« oder »ushort«-Eingabe" #: libvips/colour/im_icc_transform.c:516 #: libvips/colour/im_icc_transform.c:1305 #, c-format msgid "" "intent %d (%s) not supported by profile; falling back to default intent " "(usually PERCEPTUAL)" msgstr "" "Ziel-%d (%s) nicht vom Profil unterstützt; Rückfall auf Standardabsicht " "(normalerweise WAHRNEHMUNG)" #: libvips/colour/im_icc_transform.c:533 #: libvips/colour/im_icc_transform.c:1322 msgid "CMYK profile needs a 4 band input image" msgstr "CMYK-Profil benötigt ein Eingabebild mit vier Bändern" #: libvips/colour/im_icc_transform.c:543 #: libvips/colour/im_icc_transform.c:1332 msgid "RGB profile needs a 3 band input image" msgstr "RGB-Profil benötigt ein Eingabebild mit drei Bändern" #: libvips/colour/im_icc_transform.c:634 #: libvips/colour/im_icc_transform.c:1427 msgid "no embedded profile" msgstr "kein eingebettetes Profil" #: libvips/colour/im_icc_transform.c:726 #: libvips/colour/im_icc_transform.c:1511 msgid "unsupported bit depth" msgstr "nicht unterstützte Bit-Tiefe" #: libvips/colour/im_icc_transform.c:815 #: libvips/colour/im_icc_transform.c:1605 msgid "unable to get media white point" msgstr "weißer Medienpunkt kann nicht abgefragt werden" #: libvips/colour/im_icc_transform.c:1672 msgid "lcms library not linked to this VIPS" msgstr "gegen die »lcms«-Bibliothek wird in diesem VIPS nicht verlinkt" #: libvips/colour/im_icc_transform.c:1682 #: libvips/colour/im_icc_transform.c:1691 #: libvips/colour/im_icc_transform.c:1701 #: libvips/colour/im_icc_transform.c:1710 msgid "lmcs library not linked to this VIPS" msgstr "gegen die »lmcs«-Bibliothek wird in diesem VIPS nicht verlinkt" #: libvips/colour/disp.c:397 msgid "out of range [0,255]" msgstr "außerhalb des Bereichs [0,255]" #: libvips/colour/disp.c:423 msgid "bad display type" msgstr "falsche Anzeigetyp" #: libvips/colour/disp.c:537 msgid "display unknown" msgstr "Anzeige unbekannt" #: libvips/colour/im_disp2XYZ.c:86 msgid "input not 3-band uncoded char" msgstr "Eingabe ist kein unkodiertes Zeichen mit drei Bändern" #: libvips/colour/im_XYZ2disp.c:139 msgid "3-band uncoded float only" msgstr "nur unkodierte Fließkommazahlen mit drei Bändern" #: libvips/colour/im_lab_morph.c:75 msgid "bad greyscale mask size" msgstr "falsche Grauskala-Maskengröße" #: libvips/colour/im_lab_morph.c:86 #, c-format msgid "bad greyscale mask value, row %d" msgstr "falscher Grauskala-Maskenwert, Reihe %d" #: libvips/conversion/im_gaussnoise.c:124 msgid "bad parameter" msgstr "falscher Parameter" #: libvips/conversion/bandmean.c:191 msgid "band-wise average" msgstr "bandweiser Durchschnitt" #: libvips/conversion/cast.c:123 #, c-format msgid "%d underflows and %d overflows detected" msgstr "%d Unter- und %d Überläufe entdeckt" #: libvips/conversion/cast.c:470 msgid "cast an image" msgstr "ein Bild umwandeln" #: libvips/conversion/cast.c:480 libvips/conversion/copy.c:352 #: libvips/iofuncs/image.c:866 msgid "Format" msgstr "Format" #: libvips/conversion/cast.c:481 msgid "Format to cast to" msgstr "Format, in das umgewandelt werden soll" #: libvips/conversion/ifthenelse.c:395 msgid "ifthenelse an image" msgstr "fallsdannsonst eines Bildes" #: libvips/conversion/ifthenelse.c:399 msgid "Condition" msgstr "Bedingung" #: libvips/conversion/ifthenelse.c:400 msgid "Condition input image" msgstr "Bedingung des Eingabebilds" #: libvips/conversion/ifthenelse.c:405 msgid "Then image" msgstr "dann Bild" #: libvips/conversion/ifthenelse.c:406 msgid "Source for TRUE pixels" msgstr "Quelle für TRUE-Bildpunkte" #: libvips/conversion/ifthenelse.c:411 msgid "Else image" msgstr "sonst Bild" #: libvips/conversion/ifthenelse.c:412 msgid "Source for FALSE pixels" msgstr "Quelle für FALSE-Bildpunkte" #: libvips/conversion/ifthenelse.c:417 msgid "blend" msgstr "Mischung" #: libvips/conversion/ifthenelse.c:418 msgid "Blend smoothly between then and else parts" msgstr "nahtlos zwischen »dann«- und »sonst«-Teilen mischen" #: libvips/conversion/insert.c:349 msgid "insert an image" msgstr "ein Bild einfügen" #: libvips/conversion/insert.c:353 msgid "Main" msgstr "primär" #: libvips/conversion/insert.c:354 msgid "Main input image" msgstr "Haupteingabebild" #: libvips/conversion/insert.c:359 msgid "Sub-image" msgstr "Teilbild" #: libvips/conversion/insert.c:360 msgid "Sub-image to insert into main image" msgstr "Teilbild, das in das Hauptbild eingefügt werden soll" #: libvips/conversion/insert.c:365 msgid "X" msgstr "X" #: libvips/conversion/insert.c:366 msgid "Left edge of sub in main" msgstr "linker Rand des Teilbilds im Hauptbild" #: libvips/conversion/insert.c:372 msgid "Y" msgstr "Y" #: libvips/conversion/insert.c:373 msgid "Top edge of sub in main" msgstr "oberer Rand des Teilbilds im Hauptbild" #: libvips/conversion/insert.c:379 libvips/conversion/join.c:233 msgid "Expand" msgstr "expandieren" #: libvips/conversion/insert.c:380 libvips/conversion/join.c:234 msgid "Expand output to hold all of both inputs" msgstr "Ausgabe so expandieren, dass sie beide Eingaben vollständig enthält" #: libvips/conversion/insert.c:386 libvips/conversion/join.c:247 msgid "Background" msgstr "Hintergrund" #: libvips/conversion/insert.c:387 libvips/conversion/join.c:248 msgid "Colour for new pixels" msgstr "Farbe für neue Bildpunkte" #: libvips/conversion/tilecache.c:418 libvips/conversion/cache.c:102 msgid "cache an image" msgstr "ein Bild zwischenspeichern" #: libvips/conversion/tilecache.c:428 libvips/conversion/cache.c:112 #: libvips/foreign/tiffsave.c:213 msgid "Tile width" msgstr "Kachelbreite" #: libvips/conversion/tilecache.c:429 libvips/conversion/cache.c:113 #: libvips/foreign/tiffsave.c:214 msgid "Tile width in pixels" msgstr "Kachelbreite in Bildpunkten" #: libvips/conversion/tilecache.c:435 libvips/conversion/cache.c:119 #: libvips/foreign/tiffsave.c:220 msgid "Tile height" msgstr "Kachelhöhe" #: libvips/conversion/tilecache.c:436 libvips/conversion/cache.c:120 #: libvips/foreign/tiffsave.c:221 msgid "Tile height in pixels" msgstr "Kachelhöhe in Bildpunkten" #: libvips/conversion/tilecache.c:442 libvips/conversion/cache.c:126 msgid "Max tiles" msgstr "Kacheln maximal" #: libvips/conversion/tilecache.c:443 libvips/conversion/cache.c:127 msgid "Maximum number of tiles to cache" msgstr "maximale Anzahl von Kacheln, die zwischengespeichert werden soll" #: libvips/conversion/tilecache.c:449 msgid "Strategy" msgstr "Strategie" #: libvips/conversion/tilecache.c:450 msgid "Expected access pattern" msgstr "erwartetes Zugriffsmuster" #: libvips/conversion/im_text.c:132 msgid "no text to render" msgstr "kein Text zu rendern" #: libvips/conversion/im_text.c:219 msgid "invalid markup in text" msgstr "ungültige Auszeichnung im Text" #: libvips/conversion/im_text.c:252 msgid "pangoft2 support disabled" msgstr "Pangoft2-Unterstützung deaktiviert" #: libvips/conversion/im_zoom.c:331 msgid "zoom factors should be >= 0" msgstr "Zoomfaktoren sollten >=0 sein" #. Make sure we won't get integer overflow. #. #: libvips/conversion/im_zoom.c:338 msgid "zoom factors too large" msgstr "Zoomfaktoren zu groß" #: libvips/conversion/conver_dispatch.c:918 #: libvips/inplace/inplace_dispatch.c:171 msgid "vectors not same length" msgstr "Vektoren ungleicher Länge" #: libvips/conversion/extract.c:147 msgid "bad extract area" msgstr "falscher extrahierter Bereich" #: libvips/conversion/extract.c:190 msgid "extract an area from an image" msgstr "einen Bereich eines Bildes extrahieren" #: libvips/conversion/extract.c:318 msgid "bad extract band" msgstr "schlecht extrahiertes Band" #: libvips/conversion/extract.c:347 msgid "extract band from an image" msgstr "Band aus einem Bild extrahieren" #: libvips/conversion/extract.c:359 msgid "Band" msgstr "Band" #: libvips/conversion/extract.c:360 msgid "Band to extract" msgstr "zu extrahierendes Band" #: libvips/conversion/extract.c:366 msgid "n" msgstr "n" #: libvips/conversion/extract.c:367 msgid "Number of bands to extract" msgstr "Anzahl zu extrahierender Bänder" #: libvips/conversion/embed.c:430 libvips/iofuncs/image.c:1777 msgid "bad dimensions" msgstr "falsche Abmessungen" #: libvips/conversion/embed.c:512 msgid "embed an image in a larger image" msgstr "ein Bild in ein größeres Bild einbetten" #: libvips/conversion/embed.c:523 msgid "Left edge of input in output" msgstr "linker Rand der Eingabe in der Ausgabe" #: libvips/conversion/embed.c:530 msgid "Top edge of input in output" msgstr "oberer Rand der Eingabe in der Ausgabe" #: libvips/conversion/embed.c:537 libvips/conversion/copy.c:332 #: libvips/conversion/black.c:129 libvips/foreign/rawload.c:123 #: libvips/iofuncs/image.c:846 msgid "Image width in pixels" msgstr "Bildbreite in Bildpunkten" #: libvips/conversion/embed.c:544 libvips/conversion/copy.c:339 #: libvips/conversion/black.c:136 libvips/foreign/rawload.c:130 #: libvips/iofuncs/image.c:853 msgid "Image height in pixels" msgstr "Bildhöhe in Bildpunkten" #: libvips/conversion/embed.c:550 msgid "Extend" msgstr "vergrößern" #: libvips/conversion/embed.c:551 msgid "How to generate the extra pixels" msgstr "Wie werden die zusätzlichen Bildpunkte erzeugt?" #: libvips/conversion/im_grid.c:164 #: libvips/convolution/im_contrast_surface.c:140 libvips/iofuncs/image.c:710 #: libvips/iofuncs/sinkscreen.c:1082 libvips/morphology/im_rank.c:342 msgid "bad parameters" msgstr "falsche Parameter" #: libvips/conversion/im_grid.c:169 msgid "bad grid geometry" msgstr "falsche Gittergeometrie" #: libvips/conversion/join.c:210 msgid "join a pair of images" msgstr "ein Bilderpaar zusammenführen" #: libvips/conversion/join.c:214 msgid "in1" msgstr "in1" #: libvips/conversion/join.c:215 msgid "First input image" msgstr "erstes Eingabebild" #: libvips/conversion/join.c:220 msgid "in2" msgstr "in2" #: libvips/conversion/join.c:221 msgid "Second input image" msgstr "zweites Eingabebild" #: libvips/conversion/join.c:226 msgid "direction" msgstr "Richtung" #: libvips/conversion/join.c:227 msgid "Join left-right or up-down" msgstr "von links nach rechts oder von oben nach unten zusammenführen" #: libvips/conversion/join.c:240 msgid "Shim" msgstr "Scheibe" #: libvips/conversion/join.c:241 msgid "Pixels between images" msgstr "Bildpunkte zwischen Bildern" #: libvips/conversion/join.c:254 msgid "Align" msgstr "ausrichten" #: libvips/conversion/join.c:255 msgid "Align on the low, centre or high coordinate edge" msgstr "am Rand der unteren, mittleren oder höchsten Koordinate ausrichten" #: libvips/conversion/rot.c:351 msgid "rotate an image" msgstr "ein Bild drehen" #: libvips/conversion/rot.c:361 msgid "Angle" msgstr "Winkel" #: libvips/conversion/rot.c:362 msgid "Angle to rotate image" msgstr "Winkel zum Drehen eines Bildes" #: libvips/conversion/flip.c:236 msgid "flip an image" msgstr "ein Bild umdrehen" #: libvips/conversion/flip.c:246 msgid "Direction" msgstr "Richtung" #: libvips/conversion/flip.c:247 msgid "Direction to flip image" msgstr "Richtung, nach der das Bild umgedreht werden soll" #: libvips/conversion/copy.c:314 msgid "copy an image" msgstr "ein Bild kopieren" #: libvips/conversion/copy.c:324 msgid "Swap" msgstr "austauschen" #: libvips/conversion/copy.c:325 msgid "Swap bytes in image between little and big-endian" msgstr "Byte im Bild zwischen Little- und Big-Endian austauschen" #: libvips/conversion/copy.c:345 libvips/conversion/black.c:142 #: libvips/foreign/rawload.c:136 libvips/iofuncs/image.c:859 msgid "Bands" msgstr "Bänder" #: libvips/conversion/copy.c:346 libvips/conversion/black.c:143 #: libvips/foreign/rawload.c:137 libvips/iofuncs/image.c:860 msgid "Number of bands in image" msgstr "Anzahl der Bänder in einem Bild" #: libvips/conversion/copy.c:353 libvips/iofuncs/image.c:867 msgid "Pixel format in image" msgstr "Bildpunktformat im Bild" #: libvips/conversion/copy.c:359 libvips/iofuncs/image.c:873 msgid "Coding" msgstr "Kodierung" #: libvips/conversion/copy.c:360 libvips/iofuncs/image.c:874 msgid "Pixel coding" msgstr "Bildpunktkodierung" #: libvips/conversion/copy.c:366 libvips/iofuncs/image.c:880 msgid "Interpretation" msgstr "Interpretation" #: libvips/conversion/copy.c:367 libvips/iofuncs/image.c:881 msgid "Pixel interpretation" msgstr "Bildpunktinterpretation" #: libvips/conversion/copy.c:373 libvips/foreign/tiffsave.c:249 #: libvips/iofuncs/image.c:887 msgid "Xres" msgstr "Xres" #: libvips/conversion/copy.c:374 libvips/foreign/tiffsave.c:250 #: libvips/iofuncs/image.c:888 msgid "Horizontal resolution in pixels/mm" msgstr "horizontale Auflösung in Bildpunkten/mm" #: libvips/conversion/copy.c:380 libvips/foreign/tiffsave.c:256 #: libvips/iofuncs/image.c:894 msgid "Yres" msgstr "Yres" #: libvips/conversion/copy.c:381 libvips/foreign/tiffsave.c:257 #: libvips/iofuncs/image.c:895 msgid "Vertical resolution in pixels/mm" msgstr "vertikale Auflösung in Bildpunkten/mm" #: libvips/conversion/copy.c:387 libvips/iofuncs/image.c:901 msgid "Xoffset" msgstr "Xoffset" #: libvips/conversion/copy.c:388 libvips/iofuncs/image.c:902 msgid "Horizontal offset of origin" msgstr "horizontaler Versatz vom Ursprung" #: libvips/conversion/copy.c:394 libvips/iofuncs/image.c:908 msgid "Yoffset" msgstr "Yoffset" #: libvips/conversion/copy.c:395 libvips/iofuncs/image.c:909 msgid "Vertical offset of origin" msgstr "vertikaler Versatz vom Ursprung" #: libvips/conversion/bandary.c:127 msgid "no input images" msgstr "keine Eingabebilder" #: libvips/conversion/bandary.c:173 msgid "operations on image bands" msgstr "Transaktionen für Bänder von Bildern" #: libvips/conversion/conversion.c:85 msgid "conversion operations" msgstr "Umwandlungstransaktionen" #: libvips/conversion/recomb.c:160 msgid "bands in must equal matrix width" msgstr "»in«-Bänder müssen die gleiche Breite wie die Matrix haben" #: libvips/conversion/recomb.c:196 msgid "linear recombination with matrix" msgstr "lineare Neukombinierung mit der Matrix" #: libvips/conversion/recomb.c:206 msgid "M" msgstr "M" #: libvips/conversion/recomb.c:207 msgid "matrix of coefficients" msgstr "Matrix der Koeffizienten" #: libvips/conversion/replicate.c:192 msgid "replicate an image" msgstr "ein Bild nachmachen" #: libvips/conversion/replicate.c:203 msgid "Repeat this many times horizontally" msgstr "horizontal so oft wiederholen" #: libvips/conversion/replicate.c:210 msgid "Repeat this many times vertically" msgstr "vertikal so oft wiederholen" #: libvips/conversion/black.c:124 msgid "make a black image" msgstr "ein schwarzes Bild erstellen" #: libvips/conversion/im_msb.c:134 libvips/conversion/im_msb.c:213 msgid "unknown coding" msgstr "unbekannte Kodierung" #: libvips/conversion/im_msb.c:169 libvips/resample/im_rightshift_size.c:116 msgid "bad arguments" msgstr "falsche Argumente" #: libvips/conversion/im_msb.c:183 libvips/conversion/im_msb.c:200 msgid "image does not have that many bands" msgstr "Bild hat nicht so viele Bänder" #: libvips/conversion/im_system_image.c:76 #, c-format msgid "command failed: \"%s\"" msgstr "Befehl fehlgeschlagen: »%s«" #: libvips/conversion/im_subsample.c:202 msgid "factors should both be >= 1" msgstr "beide Faktoren sollten >=1 sein" #: libvips/conversion/im_subsample.c:221 libvips/resample/im_shrink.c:286 msgid "image has shrunk to nothing" msgstr "Bild ist zu nichts geschrumpft" #: libvips/conversion/bandjoin.c:165 msgid "bandwise join a set of images" msgstr "einen Satz Bilder bandweise zusammenführen" #: libvips/conversion/bandjoin.c:172 msgid "Array of input images" msgstr "Feld von Eingabebildern" #: libvips/convolution/im_contrast_surface.c:147 msgid "parameters would result in zero size output image" msgstr "Parameter würden zu einem Ausgabebild der Größe Null führen" #: libvips/convolution/im_aconvsep.c:130 libvips/convolution/im_aconv.c:223 #: libvips/convolution/im_aconv.c:229 libvips/convolution/im_aconv.c:750 msgid "mask too complex" msgstr "Maske zu komplex" #: libvips/convolution/im_aconvsep.c:798 libvips/convolution/im_conv.c:1038 #: libvips/convolution/im_conv_f.c:340 libvips/convolution/im_aconv.c:980 #: libvips/convolution/im_aconv.c:1201 libvips/morphology/morphology.c:721 msgid "image too small for mask" msgstr "Bild zu klein für Maske" #: libvips/convolution/im_conv.c:215 #, c-format msgid "%d overflows and %d underflows detected" msgstr "%d Über- und %d Unterläufe entdeckt" #: libvips/convolution/im_conv.c:1125 libvips/convolution/im_conv_f.c:403 msgid "expect 1xN or Nx1 input mask" msgstr "1xN- oder Nx1-Eingabemaske wird erwartet" # ref und in sind Objekte #: libvips/convolution/im_fastcor.c:134 libvips/convolution/im_spcor.c:247 msgid "ref not smaller than or equal to in" msgstr "»ref« nicht kleiner oder gleich »in«" #: libvips/convolution/im_sharpen.c:325 libvips/histograms_lut/im_stdif.c:196 msgid "parameters out of range" msgstr "Parameter außerhalb des Bereichs" #: libvips/foreign/rawload.c:107 msgid "load raw data from a file" msgstr "Rohdaten aus einer Datei laden" #: libvips/foreign/rawload.c:115 libvips/foreign/fitssave.c:128 #: libvips/foreign/ppmload.c:126 libvips/foreign/radload.c:126 #: libvips/foreign/openslideload.c:176 libvips/foreign/tiffload.c:142 #: libvips/foreign/fitsload.c:116 libvips/foreign/vipssave.c:125 #: libvips/foreign/radsave.c:119 libvips/foreign/openexrload.c:137 #: libvips/foreign/analyzeload.c:126 libvips/foreign/pngload.c:136 #: libvips/foreign/tiffsave.c:169 libvips/foreign/vipsload.c:133 #: libvips/foreign/magickload.c:146 libvips/foreign/matload.c:128 #: libvips/foreign/jpegload.c:245 libvips/foreign/jpegsave.c:193 #: libvips/foreign/rawsave.c:166 libvips/foreign/ppmsave.c:118 #: libvips/foreign/csvsave.c:121 libvips/foreign/csvload.c:132 #: libvips/foreign/pngsave.c:166 libvips/iofuncs/image.c:915 msgid "Filename" msgstr "Dateiname" #: libvips/foreign/rawload.c:116 libvips/foreign/ppmload.c:127 #: libvips/foreign/radload.c:127 libvips/foreign/openslideload.c:177 #: libvips/foreign/tiffload.c:143 libvips/foreign/fitsload.c:117 #: libvips/foreign/openexrload.c:138 libvips/foreign/analyzeload.c:127 #: libvips/foreign/pngload.c:137 libvips/foreign/vipsload.c:134 #: libvips/foreign/magickload.c:147 libvips/foreign/matload.c:129 #: libvips/foreign/jpegload.c:246 libvips/foreign/csvload.c:133 msgid "Filename to load from" msgstr "Name der Datei, aus der geladen werden soll" #: libvips/foreign/rawload.c:143 libvips/iofuncs/image.c:943 msgid "Size of header" msgstr "Größe der Kopfdaten" #: libvips/foreign/rawload.c:144 libvips/iofuncs/image.c:944 msgid "Offset in bytes from start of file" msgstr "Versatz in Byte vom Anfang der Datei" #: libvips/foreign/fitssave.c:119 # http://de.wikipedia.org/wiki/Flexible_Image_Transport_System msgid "save image to fits file" msgstr "Bild in FITS-Datei speichern" #: libvips/foreign/fitssave.c:129 libvips/foreign/vipssave.c:126 #: libvips/foreign/radsave.c:120 libvips/foreign/tiffsave.c:170 #: libvips/foreign/jpegsave.c:194 libvips/foreign/rawsave.c:167 #: libvips/foreign/ppmsave.c:119 libvips/foreign/csvsave.c:122 #: libvips/foreign/pngsave.c:167 msgid "Filename to save to" msgstr "Name der Datei in die gespeichert werden soll" #: libvips/foreign/ppmload.c:114 # Portable Pixmap msgid "load ppm from file" msgstr "PPM aus Datei laden" #: libvips/foreign/radload.c:114 msgid "load a Radiance image from a file" msgstr "ein Radiance-Bild aus einer Datei laden" #: libvips/foreign/openslideload.c:159 msgid "load file with OpenSlide" msgstr "Datei mit OpenSlide laden" #: libvips/foreign/openslideload.c:183 msgid "Level" msgstr "Ebene" #: libvips/foreign/openslideload.c:184 msgid "Load this level from the file" msgstr "diese Ebene aus der Datei laden" #: libvips/foreign/openslideload.c:190 msgid "Associated" msgstr "dazugehörig" #: libvips/foreign/openslideload.c:191 msgid "Load this associated image" msgstr "dieses zugehörige Bild laden" #: libvips/foreign/tiffload.c:130 msgid "load tiff from file" msgstr "TIFF aus Datei laden" #: libvips/foreign/tiffload.c:149 msgid "Page" msgstr "Seite" #: libvips/foreign/tiffload.c:150 msgid "Load this page from the file" msgstr "diese Seite aus der Datei laden" #: libvips/foreign/fitsload.c:107 msgid "load a FITS image" msgstr "ein FITS-Bild laden" #: libvips/foreign/vipssave.c:114 msgid "save image to vips file" msgstr "Bild in Vips-Datei speichern" #: libvips/foreign/radsave.c:108 msgid "save image to Radiance file" msgstr "Bild in Radiance-Datei speichern" #: libvips/foreign/openexrload.c:125 msgid "load an OpenEXR image" msgstr "ein OpenEXR-Bild laden" #: libvips/foreign/analyzeload.c:114 msgid "load an Analyze6 image" msgstr "ein Analyze6-Bild laden" #: libvips/foreign/pngload.c:124 msgid "load png from file" msgstr "PNG-Datei aus Datei laden" #: libvips/foreign/tiffsave.c:159 msgid "save image to tiff file" msgstr "Bild in TIFF-Datei speichern" #: libvips/foreign/tiffsave.c:176 libvips/foreign/pngsave.c:103 msgid "Compression" msgstr "Komprimierung" #: libvips/foreign/tiffsave.c:177 msgid "Compression for this file" msgstr "Komprimierung für diese Datei" #: libvips/foreign/tiffsave.c:184 libvips/foreign/jpegsave.c:124 msgid "Q" msgstr "Q" #: libvips/foreign/tiffsave.c:185 libvips/foreign/jpegsave.c:125 msgid "Q factor" msgstr "Q-Faktor" #: libvips/foreign/tiffsave.c:191 # http://de.wikipedia.org/wiki/Abhängige_und_unabhängige_Variable msgid "predictor" msgstr "Prädiktor" #: libvips/foreign/tiffsave.c:192 msgid "Compression prediction" msgstr "Prognose der Komprimierung" #: libvips/foreign/tiffsave.c:199 libvips/foreign/jpegsave.c:131 msgid "profile" msgstr "Profil" #: libvips/foreign/tiffsave.c:200 libvips/foreign/jpegsave.c:132 msgid "ICC profile to embed" msgstr "einzubettendes ICC-Profil" #: libvips/foreign/tiffsave.c:206 msgid "Tile" msgstr "Kachel" #: libvips/foreign/tiffsave.c:207 msgid "Write a tiled tiff" msgstr "ein gekacheltes TIFF schreiben" #: libvips/foreign/tiffsave.c:227 msgid "Pyramid" msgstr "Pyramide" #: libvips/foreign/tiffsave.c:228 msgid "Write a pyramidal tiff" msgstr "ein pyramidenförmiges TIFF schreiben" #: libvips/foreign/tiffsave.c:234 msgid "Squash" msgstr "quetschen" #: libvips/foreign/tiffsave.c:235 msgid "Squash images down to 1 bit" msgstr "Bilder auf ein Bit zusammenquetschen" #: libvips/foreign/tiffsave.c:241 libvips/foreign/tiffsave.c:242 msgid "Resolution unit" msgstr "Einheit der Auflösung" #: libvips/foreign/tiffsave.c:263 # http://de.wikipedia.org/wiki/Liste_von_Dateinamenserweiterungen/T msgid "Bigtiff" msgstr "BigTIFF" #: libvips/foreign/tiffsave.c:264 msgid "Write a bigtiff image" msgstr "ein BigTIFF-Bild schreiben" #: libvips/foreign/csv.c:183 #, c-format msgid "error parsing number, line %d, column %d" msgstr "Fehler beim Auswerten von Nummer, Zeile %d, Spalte %d" #: libvips/foreign/csv.c:237 msgid "end of file while skipping start" msgstr "Dateiende während des Überspringens des Startes" #: libvips/foreign/csv.c:246 libvips/iofuncs/util.c:1072 #: libvips/iofuncs/util.c:1078 msgid "unable to seek" msgstr "kann nicht gesucht werden" #: libvips/foreign/csv.c:257 msgid "empty line" msgstr "leere Zeile" #: libvips/foreign/csv.c:301 #, c-format msgid "unexpected EOF, line %d col %d" msgstr "unerwartetes Dateiende, Zeile %d, Spalte %d" #: libvips/foreign/csv.c:307 #, c-format msgid "unexpected EOL, line %d col %d" msgstr "unerwartetes Zeilenende, Zeile %d, Spalte %d" #: libvips/foreign/vipsload.c:121 msgid "load vips from file" msgstr "Vips aus einer Datei laden" #: libvips/foreign/magickload.c:131 msgid "load file with ImageMagick" msgstr "Datei mit ImageMagick laden" #: libvips/foreign/matload.c:116 # http://www.dateiendung.com/format/mat msgid "load mat from file" msgstr "Mat aus Datei laden" #: libvips/foreign/jpegload.c:118 #, c-format msgid "bad shrink factor %d" msgstr "falscher Schrumpffaktor %d" #: libvips/foreign/jpegload.c:140 msgid "load jpeg" msgstr "JPEG laden" #: libvips/foreign/jpegload.c:146 msgid "Shrink" msgstr "verkleinern" #: libvips/foreign/jpegload.c:147 msgid "Shrink factor on load" msgstr "falscher Verkleinerungsfaktor %d" #: libvips/foreign/jpegload.c:153 msgid "Fail" msgstr "scheitern" #: libvips/foreign/jpegload.c:154 msgid "Fail on first warning" msgstr "scheitert bei erster Warnung" #: libvips/foreign/jpegload.c:234 msgid "load jpeg from file" msgstr "JPEG aus Datei laden" #: libvips/foreign/jpegload.c:309 msgid "load jpeg from buffer" msgstr "JPEG aus Puffer laden" #: libvips/foreign/jpegload.c:315 libvips/foreign/jpegsave.c:260 #: libvips/foreign/pngsave.c:228 msgid "Buffer" msgstr "Puffer" #: libvips/foreign/jpegload.c:316 msgid "Buffer to load from" msgstr "Puffer, aus dem geladen werden soll" #: libvips/foreign/openslide2vips.c:134 msgid "invalid associated image name" msgstr "ungültiger zugehöriger Bildname" #: libvips/foreign/openslide2vips.c:159 msgid "failure opening slide" msgstr "Fehler beim Öffnen des Dias" #: libvips/foreign/openslide2vips.c:166 msgid "invalid slide level" msgstr "ungültige Diastufe" #: libvips/foreign/openslide2vips.c:202 #, c-format msgid "getting dimensions: %s" msgstr "Abfragen der Abmessungen: %s" #: libvips/foreign/openslide2vips.c:209 msgid "image dimensions overflow int" msgstr "Überlaufganzzahl der Bildabmessungen" #: libvips/foreign/openslide2vips.c:274 #, c-format msgid "reading region: %s" msgstr "Region wird gelesen: %s" #: libvips/foreign/openslide2vips.c:348 #, c-format msgid "reading associated image: %s" msgstr "zugehöriges Bild wird gelesen: %s" #: libvips/foreign/analyze2vips.c:308 msgid "header file size incorrect" msgstr "Kopfdatendateigröße nicht korrekt" #: libvips/foreign/analyze2vips.c:353 msgid "header size incorrect" msgstr "Kopfdatengröße nicht korrekt" #: libvips/foreign/analyze2vips.c:371 #, c-format msgid "%d-dimensional images not supported" msgstr "%d-dimensionale Bilder nicht unterstützt" #: libvips/foreign/analyze2vips.c:424 #, c-format msgid "datatype %d not supported" msgstr "Datentyp %d nicht unterstützt" #: libvips/foreign/tiff2vips.c:262 libvips/foreign/tiff2vips.c:285 #: libvips/foreign/tiff2vips.c:303 #, c-format msgid "required field %d missing" msgstr "benötigtes Feld %d fehlt" #: libvips/foreign/tiff2vips.c:266 #, c-format msgid "required field %d=%d, not %d" msgstr "benötigtes Feld %d=%d, nicht %d" #: libvips/foreign/tiff2vips.c:650 #, c-format msgid "%d bits per sample palette image not supported" msgstr "%d Bit pro Musterfarbpalettenbild nicht unterstützt" #: libvips/foreign/tiff2vips.c:659 msgid "bad colormap" msgstr "falsche Farbzusammenstellung" #: libvips/foreign/tiff2vips.c:716 libvips/foreign/tiff2vips.c:747 msgid "3 or 4 bands RGB TIFF only" msgstr "nur RGB-TIFF mit drei oder vier Bändern" #: libvips/foreign/tiff2vips.c:818 msgid "4 or 5 bands CMYK TIFF only" msgstr "nur CMYK-TIFF mit vier oder fünf Bändern" #: libvips/foreign/tiff2vips.c:869 msgid "unknown resolution unit" msgstr "unbekannte Auflösungseinheit" #: libvips/foreign/tiff2vips.c:874 #, c-format msgid "" "no resolution information for TIFF image \"%s\" -- defaulting to 1 pixel per " "mm" msgstr "" "Keine Auflösungsinformationen für TIFF-Bild »%s« – Standard auf 1 Bildpunkt " "pro mm" #: libvips/foreign/tiff2vips.c:946 #, c-format msgid "unsupported sample format %d for lab image" msgstr "nicht unterstütztes Musterformat %d für LAB-Bild" #: libvips/foreign/tiff2vips.c:956 #, c-format msgid "unsupported depth %d for LAB image" msgstr "nicht unterstützte Tiefe %d für LAB-Bild" #: libvips/foreign/tiff2vips.c:995 #, c-format msgid "unsupported sample format %d for greyscale image" msgstr "nicht unterstütztes Musterformat %d für Graustufenbild" #: libvips/foreign/tiff2vips.c:1004 #, c-format msgid "unsupported depth %d for greyscale image" msgstr "nicht unterstützte Tiefe %d für Graustufenbild" #: libvips/foreign/tiff2vips.c:1052 #, c-format msgid "unsupported sample format %d for rgb image" msgstr "nicht unterstütztes Musterformat %d für RGB-Bild" #: libvips/foreign/tiff2vips.c:1061 #, c-format msgid "unsupported depth %d for RGB image" msgstr "nicht unterstützte Tiefe %d für RGB-Bild" #: libvips/foreign/tiff2vips.c:1075 #, c-format msgid "unknown photometric interpretation %d" msgstr "unbekannte fotometrische Deutung %d" #: libvips/foreign/tiff2vips.c:1331 libvips/foreign/radiance.c:959 msgid "read error" msgstr "Lesefehler" #: libvips/foreign/tiff2vips.c:1444 #, c-format msgid "bad page number %d" msgstr "falsche Seitennummer %d" #: libvips/foreign/tiff2vips.c:1465 libvips/foreign/vips2tiff.c:286 #, c-format msgid "unable to open \"%s\" for input" msgstr "»%s« kann nicht zur Eingabe geöffnet werden" #: libvips/foreign/tiff2vips.c:1520 libvips/foreign/tiff2vips.c:1550 #, c-format msgid "TIFF file does not contain page %d" msgstr "TIFF-Datei enthält nicht Seite %d" #: libvips/foreign/jpegsave.c:118 msgid "save jpeg" msgstr "JPEG speichern" #: libvips/foreign/jpegsave.c:187 msgid "save image to jpeg file" msgstr "Bild in JPEG-Datei speichern" #: libvips/foreign/jpegsave.c:256 msgid "save image to jpeg buffer" msgstr "Bild in den JPEG-Puffer speichern" #: libvips/foreign/jpegsave.c:261 libvips/foreign/pngsave.c:229 msgid "Buffer to save to" msgstr "Puffer, in den gespeichert werden soll" #: libvips/foreign/jpegsave.c:303 msgid "error writing output" msgstr "Fehler beim Schreiben der Ausgabe" #: libvips/foreign/jpegsave.c:319 # http://de.wikipedia.org/wiki/MIME#image msgid "save image to jpeg mime" msgstr "Bild in JPEG-MIME speichern" #: libvips/foreign/rawsave.c:159 # http://de.wikipedia.org/wiki/Rohdatenformat_(Fotografie) msgid "save image to raw file" msgstr "Bild in Rohdatenformatdatei speichern" #: libvips/foreign/rawsave.c:266 msgid "write raw image to file descriptor" msgstr "Rohdatenbild in Datei-Deskriptor schreiben" #: libvips/foreign/rawsave.c:273 msgid "File descriptor" msgstr "Datei-Deskriptor" #: libvips/foreign/rawsave.c:274 msgid "File descriptor to write to" msgstr "Datei-Deskriptor, in den geschrieben werden soll" #: libvips/foreign/ppmsave.c:109 # http://de.wikipedia.org/wiki/Portable_Pixmap msgid "save image to ppm file" msgstr "Bild in PPM-Datei speichern" #: libvips/foreign/ppmsave.c:125 msgid "ASCII" msgstr "ASCII" #: libvips/foreign/ppmsave.c:126 msgid "save as ascii" msgstr "Bild als ASCII speichern" #: libvips/foreign/vips2jpeg.c:132 #, c-format msgid "%s" msgstr "%s" #: libvips/foreign/vips2jpeg.c:363 msgid "error setting JPEG resolution" msgstr "Fehler beim Setzen der JPEG-Auflösung" #: libvips/foreign/vips2jpeg.c:510 msgid "error saving EXIF" msgstr "Fehler beim Speichern von EXIF" #: libvips/foreign/openexr2vips.c:115 #, c-format msgid "EXR error: %s" msgstr "EXR-Fehler: %s" #: libvips/foreign/magick2vips.c:215 #, c-format msgid "unsupported image type %d" msgstr "nicht unterstützter Bildtyp %d" #: libvips/foreign/magick2vips.c:275 #, c-format msgid "unsupported bit depth %d" msgstr "nicht unterstützte Bit-Tiefe %d" #: libvips/foreign/magick2vips.c:307 #, c-format msgid "unsupported colorspace %d" msgstr "nicht unterstützter Farbraum %d" #: libvips/foreign/magick2vips.c:622 msgid "unable to read pixels" msgstr "Bildpunkte können nicht gelesen werden" #: libvips/foreign/magick2vips.c:658 #, c-format msgid "" "unable to read file \"%s\"\n" "libMagick error: %s %s" msgstr "" "Datei »%s« kann nicht gelesen werden\n" "libMagick-Fehler: %s %s" #: libvips/foreign/magick2vips.c:692 #, c-format msgid "" "unable to ping file \"%s\"\n" "libMagick error: %s %s" msgstr "" "Datei »%s« kann nicht angepingt werden\n" "libMagick-Fehler: %s %s" #: libvips/foreign/magick2vips.c:703 msgid "bad image size" msgstr "falsche Bildgröße" #: libvips/foreign/vipspng.c:230 msgid "unsupported color type" msgstr "nicht unterstützter Farbtyp" #: libvips/foreign/vipspng.c:570 msgid "compress should be in [0,9]" msgstr "Komprimierung sollte in [0,9] liegen" #: libvips/foreign/vipspng.c:650 #, c-format msgid "unable to write \"%s\"" msgstr "»%s« kann nicht geschrieben werden" #: libvips/foreign/vipspng.c:749 msgid "unable to write to buffer" msgstr "In den Puffer kann nicht geschrieben werden." #: libvips/foreign/matlab.c:106 libvips/foreign/fits.c:178 #: libvips/iofuncs/vips.c:143 libvips/mosaicing/global_balance.c:1181 #: libvips/mosaicing/global_balance.c:1516 #, c-format msgid "unable to open \"%s\"" msgstr "»%s« kann nicht geöffnet werden" #: libvips/foreign/matlab.c:114 #, c-format msgid "no matrix variables in \"%s\"" msgstr "keine Matrixvariablen in »%s«" #: libvips/foreign/matlab.c:175 #, c-format msgid "unsupported rank %d\n" msgstr "nicht unterstützte Rangstufe %d\n" #: libvips/foreign/matlab.c:188 #, c-format msgid "unsupported class type %d\n" msgstr "nicht unterstützter Klassentyp %d\n" #: libvips/foreign/matlab.c:236 msgid "Mat_VarReadDataAll failed" msgstr "»Mat_VarReadDataAll« fehlgeschlagen" #: libvips/foreign/jpeg2vips.c:167 #, c-format msgid "read gave %ld warnings" msgstr "Lesen ergab %ld Warnungen" #: libvips/foreign/jpeg2vips.c:489 msgid "error reading resolution" msgstr "Fehler beim Lesen der Auflösung" #: libvips/foreign/jpeg2vips.c:510 msgid "unknown EXIF resolution unit" msgstr "unbekannte EXIF-Auflösungseinheit" #: libvips/foreign/jpeg2vips.c:718 msgid "unknown JFIF resolution unit" msgstr "unbekannte JFIF-Auflösungseinheit" #: libvips/foreign/fits.c:240 msgid "dimensions above 3 must be size 1" msgstr "Dimensionen größer drei müssen die Größe eins haben" #: libvips/foreign/fits.c:256 #, c-format msgid "bad number of axis %d" msgstr "falsche Achsenanzahl %d" #: libvips/foreign/fits.c:272 #, c-format msgid "unsupported bitpix %d\n" msgstr "nicht unterstützte »bitpix« %d\n" #: libvips/foreign/fits.c:576 libvips/iofuncs/vips.c:171 #, c-format msgid "unable to write to \"%s\"" msgstr "auf »%s« kann nicht geschrieben werden" #: libvips/foreign/fits.c:637 #, c-format msgid "unsupported BandFmt %d\n" msgstr "nicht unterstütztes BandFmt %d\n" #: libvips/foreign/csvsave.c:112 msgid "save image to csv file" msgstr "Bild in CSV-Datei speichern" #: libvips/foreign/csvsave.c:128 libvips/foreign/csvload.c:160 msgid "Separator" msgstr "Trenner" #: libvips/foreign/csvsave.c:129 msgid "Separator characters" msgstr "Trennzeichen" #: libvips/foreign/ppm.c:109 msgid "bad int" msgstr "falsche Ganzzahl" #: libvips/foreign/ppm.c:121 msgid "bad float" msgstr "falsche Fließkommazahl" #: libvips/foreign/ppm.c:172 msgid "bad magic number" msgstr "falsche magische Zahl" #: libvips/foreign/ppm.c:222 msgid "not whitespace before start of binary data" msgstr "kein Leerraum vor dem Start der binären Daten" #: libvips/foreign/ppm.c:599 libvips/foreign/ppm.c:611 msgid "write error ... disc full?" msgstr "Schreibfehler … Platte voll?" #: libvips/foreign/ppm.c:716 msgid "binary >8 bit images must be float" msgstr "binäre Bilder >8 Bit müssen aus Fließkommazahlen bestehen" #: libvips/foreign/vips2tiff.c:270 #, c-format msgid "unable to open \"%s\" for output" msgstr "»%s« kann nicht zur Ausgabe geöffnet werden" #: libvips/foreign/vips2tiff.c:692 msgid "layer buffer exhausted -- try making TIFF output tiles smaller" msgstr "" "Ebenenpuffer aufgebraucht – versuchen Sie die TIFF-Ausgabekacheln zu " "verkleinern" #: libvips/foreign/vips2tiff.c:922 msgid "TIFF write tile failed" msgstr "Schreiben des TIFF-Bildes fehlgeschlagen" #: libvips/foreign/vips2tiff.c:998 msgid "internal error #9876345" msgstr "interner Fehler #9876345" #: libvips/foreign/vips2tiff.c:1251 msgid "tile size not a multiple of 16" msgstr "Bildgröße kein Vielfaches von 16" #: libvips/foreign/vips2tiff.c:1257 msgid "can't have strip pyramid -- enabling tiling" msgstr "" "nicht ummantelte Pyramide nicht möglich – Zerteilung wird eingeschaltet" #: libvips/foreign/vips2tiff.c:1268 msgid "can only pyramid LABQ and non-complex images" msgstr "" "nur LABQ und nicht-komplexe Bilder können pyramidenartig verwendet werden" #: libvips/foreign/vips2tiff.c:1285 msgid "can't have 1-bit JPEG -- disabling JPEG" msgstr "1-Bit-JPEG nicht möglich – JPEG wird ausgeschaltet" #: libvips/foreign/vips2tiff.c:1463 msgid "unsigned 8-bit int, 16-bit int, and 32-bit float only" msgstr "nur vorzeichenlose 8-Bit-Ganzzahl und 32-Bit-Fließkommazahl" #: libvips/foreign/vips2tiff.c:1470 msgid "1 to 5 bands only" msgstr "nur 1 bis 5 Bänder" #: libvips/foreign/radiance.c:885 # http://radsite.lbl.gov/radiance/refer/Notes/picture_format.html msgid "error reading radiance header" msgstr "Fehler beim Lesen der Radiance-Kopfzeilen" #: libvips/foreign/csvload.c:121 msgid "load csv from file" msgstr "CSV aus Datei laden" #: libvips/foreign/csvload.c:139 msgid "Skip" msgstr "überspringen" #: libvips/foreign/csvload.c:140 msgid "Skip this many lines at the start of the file" msgstr "so viele Zeilen ab dem Dateianfang überspringen" #: libvips/foreign/csvload.c:146 msgid "Lines" msgstr "Zeilen" #: libvips/foreign/csvload.c:147 msgid "Read this many lines from the file" msgstr "so viele Zeilen aus der Datei lesen" #: libvips/foreign/csvload.c:153 msgid "Whitespace" msgstr "Leerraum" #: libvips/foreign/csvload.c:154 msgid "Set of whitespace characters" msgstr "Satz von Leerraumzeichen" #: libvips/foreign/csvload.c:161 msgid "Set of separator characters" msgstr "Satz von Trennzeichen" #: libvips/foreign/pngsave.c:95 msgid "save png" msgstr "PNG speichern" #: libvips/foreign/pngsave.c:104 msgid "Compression factor" msgstr "Komprimierungsfaktor" #: libvips/foreign/pngsave.c:110 msgid "Interlace" msgstr "Zeilensprung" #: libvips/foreign/pngsave.c:111 msgid "Interlace image" msgstr "Zeilensprungbild" #: libvips/foreign/pngsave.c:162 msgid "save image to png file" msgstr "Bild in PNG-Datei speichern" #: libvips/foreign/pngsave.c:224 msgid "save image to png buffer" msgstr "Bild in den PNG-Puffer speichern" #: libvips/foreign/foreign.c:384 msgid "load and save image files" msgstr "Bilddateien laden und speichern" #: libvips/foreign/foreign.c:525 libvips/mosaicing/im_remosaic.c:76 #, c-format msgid "file \"%s\" not found" msgstr "Datei »%s« nicht gefunden" #: libvips/foreign/foreign.c:534 libvips/foreign/foreign.c:1022 #, c-format msgid "\"%s\" is not a known file format" msgstr "»%s« ist kein bekanntes Dateiformat" #: libvips/foreign/foreign.c:740 msgid "images do not match" msgstr "Bilder passen nicht zusammen" #: libvips/foreign/foreign.c:826 msgid "" "VIPS_FOREIGN_PARTIAL and VIPS_FOREIGN_SEQUENTIAL both set -- using SEQUENTIAL" msgstr "" "sowohl VIPS_FOREIGN_PARTIAL als auch VIPS_FOREIGN_SEQUENTIAL setzen – " "verwenden Sie SEQUENTIAL" #: libvips/foreign/foreign.c:894 msgid "file loaders" msgstr "Dateilader" #: libvips/foreign/foreign.c:903 msgid "Flags" msgstr "Schalter" #: libvips/foreign/foreign.c:904 msgid "Flags for this file" msgstr "Schalter für diese Datei" #: libvips/foreign/foreign.c:910 msgid "Disc" msgstr "Platte" #: libvips/foreign/foreign.c:911 msgid "Open to disc" msgstr "offen zur Platte" #: libvips/foreign/foreign.c:917 msgid "Sequential" msgstr "sequenziell" #: libvips/foreign/foreign.c:918 msgid "Sequential read only" msgstr "sequenziell nur mit Lesezugriff" #: libvips/foreign/foreign.c:1370 msgid "file savers" msgstr "Dateispeicherer" #: libvips/foreign/foreign.c:1380 msgid "Image to save" msgstr "zu speicherndes Bild" #: libvips/freq_filt/im_freq_mask.c:108 msgid "mask sizes power of 2 only" msgstr "Maskengröße nur Potenzen von 2" #: libvips/freq_filt/im_freq_mask.c:155 msgid "unimplemented mask type" msgstr "nicht implementierter Maskentyp" #: libvips/freq_filt/fmaskcir.c:158 libvips/freq_filt/fmaskcir.c:303 #: libvips/freq_filt/fmaskcir.c:394 libvips/freq_filt/fmaskcir.c:476 #: libvips/freq_filt/fmaskcir.c:556 msgid "bad sizes" msgstr "falsche Größen" #: libvips/freq_filt/fmaskcir.c:172 libvips/freq_filt/fmaskcir.c:228 #: libvips/freq_filt/fmaskcir.c:242 libvips/freq_filt/fmaskcir.c:317 #: libvips/freq_filt/fmaskcir.c:321 libvips/freq_filt/fmaskcir.c:408 #: libvips/freq_filt/fmaskcir.c:412 libvips/freq_filt/fmaskcir.c:570 #: libvips/freq_filt/fmaskcir.c:574 libvips/freq_filt/fmask4th.c:120 #: libvips/freq_filt/fmask4th.c:129 libvips/freq_filt/fmask4th.c:163 #: libvips/freq_filt/fmask4th.c:172 libvips/freq_filt/fmask4th.c:205 #: libvips/freq_filt/fmask4th.c:214 libvips/freq_filt/fmask4th.c:252 #: libvips/freq_filt/fmask4th.c:261 libvips/freq_filt/fmask4th.c:292 #: libvips/freq_filt/fmask4th.c:301 libvips/freq_filt/fmask4th.c:333 #: libvips/freq_filt/fmask4th.c:342 libvips/freq_filt/fmask4th.c:373 #: libvips/freq_filt/fmask4th.c:387 libvips/freq_filt/fmask4th.c:423 #: libvips/freq_filt/fmask4th.c:437 libvips/freq_filt/fmask4th.c:473 #: libvips/freq_filt/fmask4th.c:487 libvips/freq_filt/fmask4th.c:527 #: libvips/freq_filt/fmask4th.c:541 libvips/freq_filt/fmask4th.c:578 #: libvips/freq_filt/fmask4th.c:592 libvips/freq_filt/fmask4th.c:629 #: libvips/freq_filt/fmask4th.c:643 libvips/freq_filt/fmask4th.c:697 msgid "bad args" msgstr "falsche Argumente" #: libvips/freq_filt/fmaskcir.c:490 msgid "bad args (f)" msgstr "falsche Argumente (f)" #: libvips/freq_filt/fmaskcir.c:494 msgid "bad args (ac)" msgstr "falsche Argumente (ac)" #: libvips/freq_filt/fmaskcir.c:655 libvips/freq_filt/fmask4th.c:791 msgid "unimplemented mask" msgstr "nicht implementierte Maske" #: libvips/freq_filt/im_fractsurf.c:72 msgid "dimension should be in (2,3)" msgstr "Dimension sollte in (2,3) liegen" #: libvips/freq_filt/im_invfft.c:105 libvips/freq_filt/im_invfftr.c:124 #: libvips/freq_filt/im_fwfft.c:125 libvips/freq_filt/im_fwfft.c:241 msgid "unable to create transform plan" msgstr "Umwandlungsplan kann nicht erstellt werden" #: libvips/freq_filt/im_invfft.c:130 libvips/freq_filt/im_invfftr.c:145 #: libvips/freq_filt/im_fwfft.c:301 msgid "vips configured without FFT support" msgstr "VIPS wurde ohne FFT-Unterstützung konfiguriert" #: libvips/histograms_lut/im_stdif.c:186 #: libvips/histograms_lut/im_lhisteq.c:159 msgid "window too large" msgstr "Fenster zu groß" #: libvips/histograms_lut/im_stdif.c:191 #: libvips/histograms_lut/im_lhisteq.c:164 msgid "window too small" msgstr "Fenster zu klein" #: libvips/histograms_lut/im_histnD.c:227 #, c-format msgid " bins out of range [1,%d]" msgstr " »bins« außerhalb des Bereichs [1,%d]" #: libvips/histograms_lut/im_identity.c:139 libvips/other/im_grey.c:101 #: libvips/other/im_make_xy.c:95 msgid "bad size" msgstr "falsche Größe" #: libvips/histograms_lut/im_buildlut.c:120 msgid "x value not an int" msgstr "x-Wert keine Ganzzahl" #: libvips/histograms_lut/im_buildlut.c:133 msgid "x range too small" msgstr "x-Bereich zu klein" #: libvips/histograms_lut/im_buildlut.c:278 msgid "bad input matrix size" msgstr "falsche Eingabematrix-Größe" #: libvips/histograms_lut/tone.c:194 msgid "bad in_max, out_max parameters" msgstr "falsche »in_max«-, »out_max«-Parameter" #: libvips/histograms_lut/tone.c:199 msgid "bad Lb, Lw parameters" msgstr "falsche »Lb«-, »Lw«-Parameter" #: libvips/histograms_lut/tone.c:204 msgid "Ps not in range [0.0,1.0]" msgstr "»Ps« nicht im Bereich [0.0,1.0]" #: libvips/histograms_lut/tone.c:209 msgid "Pm not in range [0.0,1.0]" msgstr "»Pm« nicht im Bereich [0.0,1.0]" #: libvips/histograms_lut/tone.c:214 msgid "Ph not in range [0.0,1.0]" msgstr "»Ph« nicht im Bereich [0.0,1.0]" #: libvips/histograms_lut/tone.c:219 msgid "S not in range [-30,+30]" msgstr "»S« nicht im Bereich [-30,+30]" #: libvips/histograms_lut/tone.c:224 msgid "M not in range [-30,+30]" msgstr "»M« nicht im Bereich [-30,+30]" #: libvips/histograms_lut/tone.c:229 msgid "H not in range [-30,+30]" msgstr "»H« nicht im Bereich [-30,+30]" #: libvips/histograms_lut/im_invertlut.c:132 msgid "element out of range [0,1]" msgstr "Element außerhalb des Bereichs [0,1]" #: libvips/histograms_lut/im_invertlut.c:287 msgid "bad input matrix" msgstr "falsche Eingabematrix" #: libvips/histograms_lut/im_invertlut.c:292 msgid "bad lut_size" msgstr "falsche »lut_size«" #: libvips/histograms_lut/im_maplut.c:97 #, c-format msgid "%d overflows detected" msgstr "%d Überläufe entdeckt" #: libvips/inplace/im_draw_line.c:389 msgid "mask image not 1 band 8 bit uncoded" msgstr "Maskenbild nicht 8-Bit-kodiert mit einem Band" #: libvips/inplace/im_draw_line.c:395 msgid "ink image does not match in image" msgstr "»ink«-Bild passt nicht in das Bild" #: libvips/inplace/im_draw_line.c:399 msgid "ink image not 1x1 pixels" msgstr "»ink«-Bild nicht 1x1 Bildpunkte" #: libvips/iofuncs/sink.c:105 #, c-format msgid "stop function failed for image \"%s\"" msgstr "»stop«-Funktion für Bild »%s« fehlgeschlagen" #: libvips/iofuncs/sink.c:142 #, c-format msgid "start function failed for image \"%s\"" msgstr "»start«-Funktion für Bild »%s« fehlgeschlagen" #: libvips/iofuncs/sink.c:175 msgid "per-thread state for sink" msgstr "Status pro Thread für »sink«" #: libvips/iofuncs/memory.c:231 msgid "vips_free: too many frees" msgstr "vips_free: zu viele Frees" #: libvips/iofuncs/memory.c:235 msgid "vips_free: too much free" msgstr "vips_free: zu viel frei" #: libvips/iofuncs/memory.c:295 libvips/iofuncs/memory.c:298 #, c-format msgid "out of memory --- size == %dMB" msgstr "Hauptspeicher reicht nicht aus – Größe == %dMB" #: libvips/iofuncs/vips.c:286 #, c-format msgid "\"%s\" is not a VIPS image" msgstr "»%s« ist kein VIPS-Bild" #: libvips/iofuncs/vips.c:374 msgid "unable to read history" msgstr "Verlauf kann nicht gelesen werden" #: libvips/iofuncs/vips.c:407 msgid "more than a 10 megabytes of XML? sufferin' succotash!" msgstr "mehr als 10 Megabyte XML? Leidende Succotash!" #: libvips/iofuncs/vips.c:455 msgid "incorrect namespace in XML" msgstr "falscher Namensraum in XML" #: libvips/iofuncs/vips.c:579 msgid "error transforming from save format" msgstr "Fehler beim Umwandeln vom gespeicherten Format" #: libvips/iofuncs/vips.c:680 #, c-format msgid "unable to set property \"%s\" to value \"%s\"." msgstr "Eigenschaft »%s« kann nicht auf Wert »%s« gesetzt werden." #: libvips/iofuncs/vips.c:728 msgid "error transforming to save format" msgstr "Fehler beim Umwandeln in das zu speichernde Format" #: libvips/iofuncs/vips.c:776 libvips/iofuncs/vips.c:973 #: libvips/iofuncs/window.c:237 msgid "file has been truncated" msgstr "Datei wurde gekürzt" #: libvips/iofuncs/vips.c:890 libvips/iofuncs/vips.c:899 #: libvips/iofuncs/vips.c:922 msgid "xml save error" msgstr "XML-Fehler beim Speichern" #: libvips/iofuncs/vips.c:959 #, c-format msgid "unable to read header for \"%s\"" msgstr "Kopfdaten für »%s« können nicht gelesen werden" #: libvips/iofuncs/vips.c:972 libvips/iofuncs/window.c:236 #, c-format msgid "unable to read data for \"%s\", %s" msgstr "Daten für »%s« können nicht gelesen werden, %s" #: libvips/iofuncs/vips.c:984 #, c-format msgid "error reading XML: %s" msgstr "Fehler beim Lesen von XML: %s" #: libvips/iofuncs/generate.c:343 libvips/iofuncs/header.c:611 msgid "too many images" msgstr "zu viele Bilder" #: libvips/iofuncs/generate.c:606 msgid "demand hint not set" msgstr "Hinweisanfrage nicht gesetzt" #: libvips/iofuncs/generate.c:625 libvips/iofuncs/generate.c:650 msgid "generate() called twice" msgstr "generate() zweimal aufgerufen" #: libvips/iofuncs/generate.c:682 libvips/iofuncs/image.c:1873 #, c-format msgid "unable to output to a %s image" msgstr "es kann nicht zu einem %s-Bild ausgegeben werden" #: libvips/iofuncs/region.c:212 #, c-format msgid "start function failed for image %s" msgstr "Startfunktion für Bild %s fehlgeschlagen" #: libvips/iofuncs/region.c:528 libvips/iofuncs/region.c:598 #: libvips/iofuncs/region.c:745 libvips/iofuncs/region.c:1241 msgid "valid clipped to nothing" msgstr "gültig an nichts angeklammert" #: libvips/iofuncs/region.c:642 msgid "bad image type" msgstr "falscher Bildtyp" #: libvips/iofuncs/region.c:687 msgid "no pixel data on attached image" msgstr "keine Bildpunktdaten in angehängtem Bild" #: libvips/iofuncs/region.c:693 msgid "images do not match in pixel size" msgstr "Bilder passen in der Bildpunktgröße nicht zusammen" #: libvips/iofuncs/region.c:726 libvips/iofuncs/region.c:1223 msgid "dest too small" msgstr "Ziel zu klein" #: libvips/iofuncs/region.c:813 msgid "bad position" msgstr "falsche Position" #: libvips/iofuncs/region.c:1102 libvips/iofuncs/region.c:1294 #, c-format msgid "unable to input from a %s image" msgstr "Eingabe von einem %s-Bild nicht möglich" #: libvips/iofuncs/region.c:1126 msgid "incomplete header" msgstr "unvollständige Kopfzeilen" #: libvips/iofuncs/region.c:1197 msgid "inappropriate region type" msgstr "Ungeeigneter Regionstyp" #: libvips/iofuncs/init.c:366 msgid "evaluate with N concurrent threads" msgstr "mit N gleichzeitigen Threads auswerten" #: libvips/iofuncs/init.c:369 msgid "set tile width to N (DEBUG)" msgstr "Bildbreite auf N setzen (DEBUG)" #: libvips/iofuncs/init.c:372 msgid "set tile height to N (DEBUG)" msgstr "Bildhöhe auf N setzen (DEBUG)" #: libvips/iofuncs/init.c:375 msgid "set thinstrip height to N (DEBUG)" msgstr "»thinstrip«-Höhe auf N setzen (DEBUG)" #: libvips/iofuncs/init.c:378 msgid "set fatstrip height to N (DEBUG)" msgstr "»fatstrip«-Höhe auf N setzen (DEBUG)" #: libvips/iofuncs/init.c:381 msgid "show progress feedback" msgstr "Fortschrittsrückmeldung anzeigen" #: libvips/iofuncs/init.c:384 msgid "leak-check on exit" msgstr "Lückenprüfung beim Beenden" #: libvips/iofuncs/init.c:387 msgid "images larger than N are decompressed to disc" msgstr "Bilder, die größer als N sind, werden auf die Platte dekomprimiert" #: libvips/iofuncs/init.c:390 msgid "disable vectorised versions of operations" msgstr "vektorgesteuerte Versionen von Transaktionen deaktivieren" #: libvips/iofuncs/init.c:393 msgid "cache at most N operations" msgstr "höchstens N Transaktionen zwischenspeichern" #: libvips/iofuncs/init.c:396 msgid "cache at most N bytes in memory" msgstr "höchstens N Byte zwischenspeichern" #: libvips/iofuncs/init.c:399 msgid "allow at most N open files" msgstr "höchstens N offene Dateien erlauben" #: libvips/iofuncs/init.c:402 msgid "trace operation cache" msgstr "Transaktionszwischenspeicher aufzeichnen" #: libvips/iofuncs/init.c:405 msgid "dump operation cache on exit" msgstr "Transaktionszwischenspeicher beim Beenden ausgeben" #: libvips/iofuncs/init.c:428 msgid "VIPS Options" msgstr "VIPS-Optionen" #: libvips/iofuncs/init.c:428 msgid "Show VIPS options" msgstr "VIPS-Optionen anzeigen" #: libvips/iofuncs/image.c:293 msgid "unable to close fd" msgstr "»fd« kann nicht geschlossen werden" #: libvips/iofuncs/image.c:373 #, c-format msgid "%dx%d %s, %d band, %s" msgid_plural "%dx%d %s, %d bands, %s" msgstr[0] "%dx%d %s, %d Band, %s" msgstr[1] "%dx%d %s, %d Bänder, %s" #: libvips/iofuncs/image.c:403 #, c-format msgid " %s, %d band, %s" msgid_plural " %s, %d bands, %s" msgstr[0] " %s, %d band, %s" msgstr[1] " %s, %d Bänder, %s" #: libvips/iofuncs/image.c:529 #, c-format msgid "%s %s: %d threads, %d x %d tiles, groups of %d scanlines" msgstr "%s %s: %d Threads, %d x %d Kacheln, Gruppen von %d Scan-Zeilen" #: libvips/iofuncs/image.c:542 #, c-format msgid "%s %s: %d%% complete" msgstr "%s %s: %d%% komplett" #. Spaces at end help to erase the %complete message we overwrite. #. #: libvips/iofuncs/image.c:559 #, c-format msgid "%s %s: done in %ds \n" msgstr "%s %s: Erledigt in %ds \n" #: libvips/iofuncs/image.c:738 #, c-format msgid "unable to open \"%s\", file too short" msgstr "»%s« kann nicht geöffnet werden, Datei zu klein" #: libvips/iofuncs/image.c:748 #, c-format msgid "%s is longer than expected" msgstr "%s ist länger als erwartet" #: libvips/iofuncs/image.c:765 #, c-format msgid "bad mode \"%s\"" msgstr "falscher Modus »%s«" #: libvips/iofuncs/image.c:820 msgid "image class" msgstr "Bildklasse" #: libvips/iofuncs/image.c:916 msgid "Image filename" msgstr "Bilddateiname" #: libvips/iofuncs/image.c:922 msgid "Mode" msgstr "Modus" #: libvips/iofuncs/image.c:923 msgid "Open mode" msgstr "Öffnen-Modus" #: libvips/iofuncs/image.c:929 msgid "Kill" msgstr "töten" #: libvips/iofuncs/image.c:930 msgid "Block evaluation on this image" msgstr "Blockauswertung dieses Bildes" #: libvips/iofuncs/image.c:936 msgid "Demand style" msgstr "Nachfragestil" #: libvips/iofuncs/image.c:937 msgid "Preferred demand style for this image" msgstr "für dieses Bild bevorzugter Nachfragestil" #: libvips/iofuncs/image.c:950 msgid "Foreign buffer" msgstr "Fremdpuffer" #: libvips/iofuncs/image.c:951 msgid "Pointer to foreign pixels" msgstr "Puffer für fremde Bildpunkte" #: libvips/iofuncs/image.c:1215 #, c-format msgid "killed for image \"%s\"" msgstr "für Bild »%s« abgeschossen" #: libvips/iofuncs/image.c:1815 msgid "bad image descriptor" msgstr "falscher Bild-Deskriptor" #: libvips/iofuncs/image.c:1917 #, c-format msgid "auto-rewind for %s failed" msgstr "automatischer Rücklauf für %s fehlgeschlagen" #: libvips/iofuncs/image.c:1973 libvips/iofuncs/image.c:2168 #: libvips/iofuncs/image.c:2185 msgid "no image data" msgstr "keine Bilddaten" #: libvips/iofuncs/image.c:2041 libvips/iofuncs/image.c:2208 msgid "image not readable" msgstr "Bild nicht lesbar" #: libvips/iofuncs/image.c:2062 libvips/iofuncs/image.c:2238 #: libvips/iofuncs/image.c:2247 msgid "image already written" msgstr "Bild bereits geschrieben" #: libvips/iofuncs/image.c:2086 libvips/iofuncs/image.c:2259 msgid "image not writeable" msgstr "Bild nicht schreibbar" #: libvips/iofuncs/image.c:2132 msgid "bad file type" msgstr "falscher Dateityp" #: libvips/iofuncs/sinkscreen.c:185 msgid "per-thread state for render" msgstr "Status pro Thread für »render«" #: libvips/iofuncs/sinkscreen.c:537 libvips/iofuncs/sinkdisc.c:236 #: libvips/iofuncs/threadpool.c:606 msgid "unable to create thread" msgstr "Thread kann nicht erstellt werden" #: libvips/iofuncs/mapfile.c:130 libvips/iofuncs/mapfile.c:297 msgid "unable to CreateFileMapping" msgstr "»CreateFileMapping« nicht möglich" #: libvips/iofuncs/mapfile.c:138 libvips/iofuncs/mapfile.c:309 msgid "unable to MapViewOfFile" msgstr "»MapViewOfFile« nicht möglich" #: libvips/iofuncs/mapfile.c:178 msgid "unable to mmap" msgstr "»mmap« nicht möglich" #: libvips/iofuncs/mapfile.c:179 #, c-format msgid "" "map failed (%s), running very low on system resources, expect a crash soon" msgstr "" "»map« fehlgeschlagen (%s), die Systemressourcen werden knapp, ein Absturz " "steht bevor" #: libvips/iofuncs/mapfile.c:196 libvips/iofuncs/mapfile.c:303 msgid "unable to UnmapViewOfFile" msgstr "»UnmapViewOfFile« nicht möglich" #: libvips/iofuncs/mapfile.c:202 msgid "unable to munmap file" msgstr "»munmap« der Datei nicht möglich" #: libvips/iofuncs/mapfile.c:224 msgid "file is less than 64 bytes" msgstr "Datei ist weniger als 64 Byte groß" #: libvips/iofuncs/mapfile.c:229 libvips/iofuncs/mapfile.c:263 msgid "unable to get file status" msgstr "Dateistatus kann nicht abgefragt werden" #: libvips/iofuncs/mapfile.c:235 msgid "not a regular file" msgstr "keine reguläre Datei" #: libvips/iofuncs/mapfile.c:269 msgid "unable to read data" msgstr "Daten können nicht gelesen werden" #: libvips/iofuncs/mapfile.c:329 #, c-format msgid "unable to mmap: \"%s\" - %s" msgstr "»mmap« nicht möglich: \"%s\" - %s" #: libvips/iofuncs/mapfile.c:339 #, c-format msgid "unable to mmap \"%s\" to same address" msgstr "»mmap %s« zur gleichen Adresse nicht möglich" #: libvips/iofuncs/base64.c:170 msgid "too little data" msgstr "zu wenige Daten" #. We shouldn't really be used for large amounts of data. #. #: libvips/iofuncs/base64.c:176 libvips/iofuncs/base64.c:241 msgid "too much data" msgstr "zu viele Daten" #: libvips/iofuncs/object.c:148 #, c-format msgid "parameter %s not set" msgstr "Parameter %s nicht gesetzt" #: libvips/iofuncs/object.c:505 #, c-format msgid "no property named `%s'" msgstr "keine Eigenschaft namens »%s«" #: libvips/iofuncs/object.c:513 #, c-format msgid "no vips argument named `%s'" msgstr "kein VIPS-Argument namens »%s«" #: libvips/iofuncs/object.c:520 #, c-format msgid "argument `%s' has no instance" msgstr "Argument »%s« hat keine Instanz" #: libvips/iofuncs/object.c:1248 libvips/iofuncs/operation.c:287 #: libvips/resample/interpolate.c:615 #, c-format msgid "class \"%s\" not found" msgstr "Klasse »%s« nicht gefunden" #: libvips/iofuncs/object.c:1297 msgid "base class" msgstr "Basisklasse" #: libvips/iofuncs/object.c:1311 msgid "Nickname" msgstr "Nickname" #: libvips/iofuncs/object.c:1312 msgid "Class nickname" msgstr "Klassen-Nickname" #: libvips/iofuncs/object.c:1318 msgid "Description" msgstr "Beschreibung" #: libvips/iofuncs/object.c:1319 msgid "Class description" msgstr "Klassenbeschreibung" #: libvips/iofuncs/object.c:1509 #, c-format msgid "enum '%s' has no member '%s'" msgstr "Aufzählung »%s« hat keinen Bestandteil »%s«" #: libvips/iofuncs/object.c:1769 #, c-format msgid "unable to set '%s'" msgstr "»%s« kann nicht gesetzt werden" #: libvips/iofuncs/object.c:1777 msgid "not , or ) after parameter" msgstr "kein »,« oder »)« nach Parameter" #: libvips/iofuncs/object.c:1784 msgid "extra tokens after ')'" msgstr "keine zusätzlichen Token nach »)«" #. File length unit. #. #: libvips/iofuncs/buf.c:520 msgid "bytes" msgstr "Byte" #. Kilo byte unit. #. #: libvips/iofuncs/buf.c:524 msgid "KB" msgstr "KB" #. Mega byte unit. #. #: libvips/iofuncs/buf.c:528 msgid "MB" msgstr "MB" #. Giga byte unit. #. #: libvips/iofuncs/buf.c:532 msgid "GB" msgstr "GB" #. Tera byte unit. #. #: libvips/iofuncs/buf.c:536 msgid "TB" msgstr "TB" #: libvips/iofuncs/util.c:639 msgid "unable to get file stats" msgstr "Dateistatus kann nicht abgefragt werden" #: libvips/iofuncs/util.c:656 libvips/iofuncs/sinkdisc.c:262 msgid "write failed" msgstr "Schreiben fehlgeschlagen" #: libvips/iofuncs/util.c:720 #, c-format msgid "unable to open file \"%s\" for reading" msgstr "Datei »%s« kann nicht zum Lesen geöffnet werden" #: libvips/iofuncs/util.c:742 #, c-format msgid "unable to open file \"%s\" for writing" msgstr "Datei »%s« kann nicht zum Schreiben geöffnet werden" #: libvips/iofuncs/util.c:767 #, c-format msgid "\"%s\" too long" msgstr "»%s« zu lang" #: libvips/iofuncs/util.c:784 msgid "out of memory" msgstr "Hauptspeicher reicht nicht aus" #: libvips/iofuncs/util.c:810 #, c-format msgid "error reading from file \"%s\"" msgstr "Fehler beim Lesen von Datei »%s«" #: libvips/iofuncs/util.c:857 #, c-format msgid "write error (%zd out of %zd blocks written) ... disc full?" msgstr "Schreibfehler (%zd aus %zd Blöcken geschrieben) … Platte voll?" #: libvips/iofuncs/util.c:1106 libvips/iofuncs/util.c:1113 msgid "unable to truncate" msgstr "kann nicht gekürzt werden" #: libvips/iofuncs/util.c:1297 msgid "unexpected end of string" msgstr "Unerwartetes Ende der Zeichenkette" #: libvips/iofuncs/util.c:1315 #, c-format msgid "expected %s, saw %s" msgstr "%s erwartet, %s gesehen" #: libvips/iofuncs/util.c:1485 #, c-format msgid "unable to make temporary file %s" msgstr "temporäre Datei %s kann nicht erstellt werden" #: libvips/iofuncs/operation.c:97 msgid "input" msgstr "Eingabe" #: libvips/iofuncs/operation.c:97 msgid "output" msgstr "Ausgabe" #: libvips/iofuncs/operation.c:246 msgid "operations" msgstr "Transaktionen" #: libvips/iofuncs/operation.c:273 msgid "usage:" msgstr "Aufruf:" #: libvips/iofuncs/operation.c:699 #, c-format msgid "unknown argument '%s'" msgstr "unbekanntes Argument »%s«" #: libvips/iofuncs/operation.c:810 msgid "too few arguments" msgstr "zu wenige Argumente" #: libvips/iofuncs/operation.c:931 msgid "too many arguments" msgstr "zu viele Argumente" #: libvips/iofuncs/header.c:210 #, c-format msgid "unknown band format %d" msgstr "unbekanntes Bandformat %d" #: libvips/iofuncs/header.c:781 #, c-format msgid "field \"%s\" not found" msgstr "Feld »%s« nicht gefunden" #: libvips/iofuncs/header.c:949 #, c-format msgid "field \"%s\" is of type %s, not %s" msgstr "Feld »%s« ist vom Typ %s, nicht %s" #: libvips/iofuncs/sinkmemory.c:108 msgid "per-thread state for sinkmemory" msgstr "Status pro Thread für »sinkmemory«" #: libvips/iofuncs/sinkdisc.c:121 msgid "per-thread state for sinkdisc" msgstr "Status pro Thread für »sinkdisc«" #: libvips/iofuncs/error.c:210 msgid "windows error" msgstr "Windows-Fehler" #: libvips/iofuncs/error.c:219 msgid "unix error" msgstr "Unix-Fehler" #: libvips/iofuncs/error.c:304 libvips/iofuncs/error.c:305 #: libvips/iofuncs/error.c:354 libvips/iofuncs/error.c:355 #, c-format msgid "%s: " msgstr "%s: " #: libvips/iofuncs/error.c:304 msgid "vips diagnostic" msgstr "Vips-Diagnose" #: libvips/iofuncs/error.c:354 msgid "vips warning" msgstr "Vips-Warnung" #: libvips/iofuncs/error.c:438 msgid "image must be uncoded" msgstr "Bild muss unkodiert sein" #: libvips/iofuncs/error.c:466 msgid "image coding must be NONE or LABQ" msgstr "Bildkodierung muss NONE oder LABQ sein" #: libvips/iofuncs/error.c:494 msgid "unknown image coding" msgstr "unbekannte Bildkodierung" #: libvips/iofuncs/error.c:520 msgid "Radiance coding only" msgstr "Nur Radiance-Kodierung" #: libvips/iofuncs/error.c:546 msgid "LABQ coding only" msgstr "Nur LABQ-Kodierung" #: libvips/iofuncs/error.c:570 msgid "image must one band" msgstr "Bild muss ein Band haben" #: libvips/iofuncs/error.c:595 #, c-format msgid "image must have %d bands" msgstr "Bild muss %d Bänder haben" #: libvips/iofuncs/error.c:620 msgid "image must have one or three bands" msgstr "Bild muss ein oder drei Bänder haben" #: libvips/iofuncs/error.c:648 msgid "images must have the same number of bands, or one must be single-band" msgstr "" "Bilder müssen die gleiche Anzahl Bänder haben oder eines muss ein Band haben" #: libvips/iofuncs/error.c:675 #, c-format msgid "image must have 1 or %d bands" msgstr "Bild muss ein oder %d Bänder haben" #: libvips/iofuncs/error.c:699 msgid "image must be non-complex" msgstr "Bild muss nicht-komplex sein" #: libvips/iofuncs/error.c:723 msgid "image must be complex" msgstr "Bild muss komplex sein" #: libvips/iofuncs/error.c:749 #, c-format msgid "image must be %s" msgstr "Bild muss %s sein" #: libvips/iofuncs/error.c:774 msgid "image must be integer" msgstr "Bild muss ganzzahlig sein" #: libvips/iofuncs/error.c:799 msgid "image must be unsigned integer" msgstr "Bild muss aus vorzeichenlosen Ganzzahlen bestehen" #: libvips/iofuncs/error.c:827 msgid "image must be 8- or 16-bit integer, signed or unsigned" msgstr "" "Bild muss aus 8- oder 16-Bit Ganzzahlen mit oder ohne Vorzeichen bestehen" #: libvips/iofuncs/error.c:854 msgid "image must be 8- or 16-bit unsigned integer" msgstr "Bild muss aus 8- oder 16-Bit vorzeichenlosen Ganzzahlen bestehen" #: libvips/iofuncs/error.c:880 msgid "image must be 8- or 16-bit unsigned integer, or float" msgstr "" "Bild muss aus 8- oder 16-Bit vorzeichenlosen Ganzzahlen oder " "Fließkommazahlen bestehen" #: libvips/iofuncs/error.c:908 msgid "image must be unsigned int or float" msgstr "" "Bild muss aus 8- oder 16-Bit vorzeichenlosen Ganz- oder Fließkommazahlen " "bestehen" #: libvips/iofuncs/error.c:933 msgid "images must match in size" msgstr "Bilder müssen in der Größe passen" #: libvips/iofuncs/error.c:959 msgid "images must have the same number of bands" msgstr "Bilder müssen die gleiche Anzahl Bänder haben" #: libvips/iofuncs/error.c:1013 msgid "images must have the same band format" msgstr "Bilder müssen das gleiche Bandformat haben" #: libvips/iofuncs/error.c:1039 msgid "images must have the same coding" msgstr "Bilder müssen die gleiche Kodierung haben" #: libvips/iofuncs/error.c:1064 #, c-format msgid "vector must have 1 or %d elements" msgstr "Vektor muss 1 oder %d Elemente haben" #: libvips/iofuncs/error.c:1089 msgid "histograms must have width or height 1" msgstr "Histogramme müssen eine Breite oder Höhe von eins haben" #: libvips/iofuncs/error.c:1094 msgid "histograms must have not have more than 65536 elements" msgstr "Histogramm dürfen nicht mehr als 65536 Elemente haben" #: libvips/iofuncs/error.c:1123 libvips/iofuncs/error.c:1151 msgid "nonsense mask parameters" msgstr "unsinnige Maskenparameter" #: libvips/iofuncs/error.c:1176 msgid "mask must be 1D" msgstr "Maske muss 1D sein" #: libvips/iofuncs/threadpool.c:217 #, c-format msgid "threads clipped to %d" msgstr "Threads an %d angeheftet" #: libvips/iofuncs/threadpool.c:281 msgid "per-thread state for vipsthreadpool" msgstr "Status pro Thread für »vipsthreadpool«" #: libvips/morphology/im_profile.c:104 msgid "dir not 0 or 1" msgstr "»dir« nicht 0 oder 1" #: libvips/morphology/morphology.c:311 #, c-format msgid "bad mask element (%d should be 0, 128 or 255)" msgstr "falsches Maskenelement (%d sollte 0, 128 oder 255 sein)" #: libvips/morphology/im_zerox.c:141 msgid "flag not -1 or 1" msgstr "Schalter nicht -1 oder 1" #: libvips/morphology/im_zerox.c:145 msgid "image too narrow" msgstr "Bild zu schmal" #: libvips/morphology/im_cntlines.c:81 msgid "flag should be 0 (horizontal) or 1 (vertical)" msgstr "Schalter sollte 0 (horizontal) oder 1 (vertikal) sein" #: libvips/morphology/im_rank.c:365 msgid "image too small for window" msgstr "Bild zu klein für Fenster" #: libvips/morphology/im_rank_image.c:303 msgid "zero input images!" msgstr "null Eingabebilder" #: libvips/morphology/im_rank_image.c:308 #, c-format msgid "index should be in range 0 - %d" msgstr "Index sollte im Bereich 0 - %d liegen" #: libvips/mosaicing/im_lrmerge.c:213 libvips/mosaicing/im_lrmerge.c:262 #: libvips/mosaicing/im_lrmerge.c:603 libvips/mosaicing/im_tbmerge.c:163 #: libvips/mosaicing/im_tbmerge.c:217 libvips/mosaicing/im_tbmerge.c:535 msgid "internal error" msgstr "interner Fehler" #: libvips/mosaicing/im_lrmerge.c:703 msgid "mwidth must be -1 or >= 0" msgstr "»mwidth« muss -1 oder >= 0 sein" #: libvips/mosaicing/im_lrmerge.c:732 msgid "no overlap" msgstr "kein Überlappen" #: libvips/mosaicing/im_lrmerge.c:803 libvips/mosaicing/im_tbmerge.c:634 #: libvips/resample/im_affine.c:469 msgid "unknown coding type" msgstr "unbekannter Kodierungstyp" #: libvips/mosaicing/im_lrmerge.c:820 libvips/mosaicing/im_tbmerge.c:652 msgid "too much overlap" msgstr "zu viel Überlappung" #: libvips/mosaicing/im_remosaic.c:104 #, c-format msgid "substitute image \"%s\" is not the same size as \"%s\"" msgstr "Bild zum Ersetzen »%s« hat nicht die gleiche Größe wie »%s«" #: libvips/mosaicing/im_tbmosaic.c:89 libvips/mosaicing/im_lrmosaic.c:113 msgid "bad area parameters" msgstr "falsche Bereichsparameter" #: libvips/mosaicing/im_tbmosaic.c:110 libvips/mosaicing/im_lrmosaic.c:134 msgid "overlap too small for search" msgstr "Überlappen zu klein für Suche" #: libvips/mosaicing/im_tbmosaic.c:143 libvips/mosaicing/im_lrmosaic.c:167 msgid "unknown Coding type" msgstr "unbekannter Kodierungstyp" #: libvips/mosaicing/im_chkpair.c:200 msgid "inputs incompatible" msgstr "Eingaben inkompatibel" #: libvips/mosaicing/im_chkpair.c:204 libvips/mosaicing/im_tbcalcon.c:102 msgid "help!" msgstr "Hilfe!" #: libvips/mosaicing/im_tbcalcon.c:116 msgid "overlap too small" msgstr "Überlappen zu schmal" #: libvips/mosaicing/global_balance.c:145 msgid "no matching '>'" msgstr "kein passendes »>«" #: libvips/mosaicing/global_balance.c:154 msgid "too many items" msgstr "zu viele Elemente" # Propogate a transform down a tree. If dirty is set, we've been here before, # so there is a doubling up of this node. If this is a leaf, then we have the # same leaf twice (which, in fact, we can cope with); if this is a node, we # have circularity. #: libvips/mosaicing/global_balance.c:448 msgid "circularity detected" msgstr "Zirkularität entdeckt" #: libvips/mosaicing/global_balance.c:482 #: libvips/mosaicing/global_balance.c:538 #, c-format msgid "image \"%s\" used twice as output" msgstr "Bild »%s« zweimal als Ausgabe benutzt" #: libvips/mosaicing/global_balance.c:587 msgid "bad number of args in join line" msgstr "falsche Anzahl von Argumenten in »join«-Zeile" #: libvips/mosaicing/global_balance.c:629 msgid "bad number of args in join1 line" msgstr "falsche Anzahl von Argumenten in »join1«-Zeile" #: libvips/mosaicing/global_balance.c:665 msgid "bad number of args in copy line" msgstr "falsche Anzahl von Argumenten in »copy«-Zeile" #: libvips/mosaicing/global_balance.c:723 msgid "" "mosaic root not found in desc file\n" "is this really a mosaiced image?" msgstr "" "Mosaik-Wurzel nicht in Beschreibungsdatei gefunden\n" "ist das wirklich ein Bild?" #: libvips/mosaicing/global_balance.c:734 msgid "more than one root" msgstr "mehr als eine Wurzel" #: libvips/mosaicing/global_balance.c:1053 msgid "empty overlap!" msgstr "leere Überlappung!" #: libvips/mosaicing/im_avgdxdy.c:64 msgid "no points to average" msgstr "keine Punkte zum Mitteln" #: libvips/mosaicing/im_lrcalcon.c:203 msgid "overlap too small for your search size" msgstr "Überlappen zu schmal für Ihre Suchgröße" #: libvips/mosaicing/im_lrcalcon.c:242 #, c-format msgid "found %d tie-points, need at least %d" msgstr "es wurden %d Verbindungspunkte gefunden, mindestens %d sind nötig" #: libvips/mosaicing/im_lrcalcon.c:287 msgid "not 1-band uchar image" msgstr "kein »uchar«-Bild mit einem Band" #: libvips/mosaicing/im_clinear.c:136 msgid "im_invmat failed" msgstr "»im_invmat« fehlgeschlagen" #: libvips/other/im_zone.c:80 msgid "size must be even and positive" msgstr "Größe muss gerade und positiv sein" #: libvips/other/im_sines.c:88 msgid "wrong sizes" msgstr "falsche Größen" #: libvips/other/im_sines.c:101 msgid "calloc failed" msgstr "»calloc« fehlgeschlagen" #: libvips/other/im_eye.c:83 msgid "factor should be in [1,0)" msgstr "Faktor sollte in [0,1) liegen" #: libvips/resample/im_affine.c:410 msgid "output coordinates out of range" msgstr "Ausgabekoordinaten außerhalb des Bereichs" #: libvips/resample/im_shrink.c:346 msgid "shrink factors should be >= 1" msgstr "Schrumpffaktoren sollten >=1 sein" #: libvips/resample/interpolate.c:180 msgid "VIPS interpolators" msgstr "VIPS-Interpolatoren" #: libvips/resample/interpolate.c:361 msgid "Nearest-neighbour interpolation" msgstr "Nächste-Nachbar-Interpolation" #: libvips/resample/interpolate.c:532 msgid "Bilinear interpolation" msgstr "Bilineare Interpolation" #: libvips/resample/im_rightshift_size.c:120 msgid "shift by zero: falling back to im_copy" msgstr "verschieben um Null: Rückfall auf »im_copy«" #: libvips/resample/im_rightshift_size.c:124 msgid "would result in zero size output image" msgstr "würde in einem Ausgabebild der Größe Null resultieren" #: libvips/resample/im_rightshift_size.c:132 msgid "image and band_fmt must match in sign" msgstr "Bild und Band-Fmt müssen im Kennzeichen zusammenpassen" #: libvips/video/im_video_test.c:51 msgid "error requested" msgstr "Fehler abgefragt" #: libvips/video/im_video_v4l1.c:241 msgid "no file descriptor" msgstr "kein Datei-Deskriptor" #: libvips/video/im_video_v4l1.c:246 #, c-format msgid "ioctl(0x%x) failed: %s" msgstr "ioctl(0x%x) fehlgeschlagen: %s" #: libvips/video/im_video_v4l1.c:295 #, c-format msgid "cannot open video device \"%s\"" msgstr "Videogerät »%s« kann nicht geöffnet werden" #: libvips/video/im_video_v4l1.c:303 msgid "cannot get video capability" msgstr "Videofähigkeit kann nicht abgefragt werden" #: libvips/video/im_video_v4l1.c:312 msgid "card cannot capture to memory" msgstr "Karte kann nicht in Speicher digitalisiert werden" #: libvips/video/im_video_v4l1.c:458 msgid "unable to map memory" msgstr "Speicher kann nicht abgebildet werden" #: libvips/video/im_video_v4l1.c:470 #, c-format msgid "channel not between 0 and %d" msgstr "Kanal nicht zwischen 0 und %d" #: libvips/video/im_video_v4l1.c:698 msgid "compiled without im_video_v4l1 support" msgstr "ohne »im_video_v4l1«-Unterstützung kompiliert" #: tools/edvips.c:82 msgid "tag file as big or little-endian" msgstr "Kennzeichendatei als Big- oder Little-Endian" #: tools/edvips.c:84 msgid "set width to N pixels" msgstr "Breite auf N Bildpunkte setzen" #: tools/edvips.c:86 msgid "set height to N pixels" msgstr "Höhe auf N Bildpunkte setzen" #: tools/edvips.c:88 msgid "set Bands to N" msgstr "Bänder auf N setzen" #: tools/edvips.c:90 msgid "set BandFmt to F (eg. uchar, float)" msgstr "»BandFmt« auf F setzen (z.B. uchar, float)" #: tools/edvips.c:92 msgid "set interpretation to I (eg. xyz)" msgstr "Interpretation aif I setzen (z.B. xyz)" #: tools/edvips.c:94 msgid "set Coding to C (eg. labq)" msgstr "Kodierung auf C setzen (z.B. labq)" #: tools/edvips.c:96 msgid "set Xres to R pixels/mm" msgstr "»Xres« auf R Bildpunkte/mm setzen" #: tools/edvips.c:98 msgid "set Yres to R pixels/mm" msgstr "»Yres« auf R Bildpunkte/mm setzen" #: tools/edvips.c:100 msgid "set Xoffset to N pixels" msgstr "»Xoffset« auf N Bildpunkte setzen" #: tools/edvips.c:102 msgid "set Yoffset to N pixels" msgstr "»Yoffset« auf N Bildpunkte setzen" #: tools/edvips.c:104 msgid "replace extension block with stdin" msgstr "Erweiterungsblock mit STDIN ersetzen" #: tools/edvips.c:106 msgid "set Xsize to N (deprecated, use width)" msgstr "»Xsize« auf N setzen (missbilligt, benutzen Sie »width«)" #: tools/edvips.c:108 msgid "set Ysize to N (deprecated, use height)" msgstr "»Ysize« auf N setzen (missbilligt, benutzen Sie »height«)" #: tools/edvips.c:110 msgid "set Type to T (deprecated, use interpretation)" msgstr "Typ auf N setzen (missbilligt, benutzen Sie »interpretation«" #: tools/edvips.c:121 #, c-format msgid "'%s' is not a positive integer" msgstr "»%s« ist keine positive Ganzzahl" #: tools/edvips.c:133 msgid "unable to start VIPS" msgstr "VIPS kann nicht gestartet werden" #: tools/edvips.c:138 msgid "vipsfile - edit vipsfile header" msgstr "»vipsfile« - »vipsfile«-Kopfzeilen bearbeiten" #: tools/edvips.c:150 #, c-format msgid "usage: %s [OPTION...] vipsfile\n" msgstr "Aufruf: %s [OPTION …] vipsfile\n" #: tools/edvips.c:157 #, c-format msgid "could not open image %s" msgstr "Bild %s konnte nicht geöffnet werden" #: tools/edvips.c:160 #, c-format msgid "could not read VIPS header for %s" msgstr "VIPS-Kopfzeilen für %s konnten nicht gelesen werden" #: tools/edvips.c:169 #, c-format msgid "bad endian-ness %s, should be 'big' or 'little'" msgstr "falsche Byte-Reihenfolge %s, sollte »big« oder »little« sein" #: tools/edvips.c:182 #, c-format msgid "bad format %s" msgstr "falsches Format %s" #: tools/edvips.c:190 #, c-format msgid "bad interpretation %s" msgstr "falsche Interpretation »%s« " #: tools/edvips.c:198 #, c-format msgid "bad coding %s" msgstr "falsche Kodierung %s" #: tools/edvips.c:211 #, c-format msgid "could not seek on %s" msgstr "auf %s konnte nicht gesucht werden" #: tools/edvips.c:214 #, c-format msgid "could not write to %s" msgstr "auf %s konnte nicht geschrieben werden" #: tools/edvips.c:221 msgid "could not get ext data" msgstr "zusätzliche Daten konnten nicht abgefragt werden" #: tools/edvips.c:230 msgid "could not set extension" msgstr "Erweiterung konnte nicht gesetzt werden" #: tools/find_mosaic.c:112 tools/find_mosaic.c:122 tools/find_mosaic.c:144 #: tools/find_mosaic.c:154 tools/find_mosaic.c:163 tools/find_mosaic.c:184 #: tools/find_mosaic.c:194 tools/find_mosaic.c:203 tools/mergeup.c:238 #: tools/mergeup.c:248 tools/mergeup.c:270 tools/mergeup.c:280 #: tools/mergeup.c:289 tools/mergeup.c:310 tools/mergeup.c:320 #: tools/mergeup.c:329 #, c-format msgid "bad file name format '%s'" msgstr "falsches Dateinamensformat »%s«" #: tools/header.c:85 msgid "show all fields" msgstr "alle Felder anzeigen" #: tools/header.c:87 msgid "" "print value of FIELD (\"getext\" reads extension block, \"Hist\" reads image " "history)" msgstr "" "Wert von FELD ausgeben (»getext« liest Erweiterungsblock, »Hist« liest " "Bildchronik)" #: tools/header.c:210 msgid "- print image header" msgstr "- Bild-Kopfzeilen ausgeben" #: tools/mergeup.c:381 msgid "allocation failure in mergeup" msgstr "Reservierung in »mergeup« gescheitert" #: tools/mergeup.c:391 msgid "Need more than one image" msgstr "Mehr als ein Bild benötigt" #: tools/vips.c:101 msgid "load PLUGIN" msgstr "ERWEITERUNG laden" #: tools/vips.c:102 msgid "PLUGIN" msgstr "ERWEITERUNG" #: tools/vips.c:104 msgid "print version" msgstr "Version ausgeben" #: tools/vips.c:147 #, c-format msgid "no package or function \"%s\"" msgstr "kein Paket oder Funktion »%s«" #: tools/vips.c:917 msgid "list classes|packages|all|package-name|operation-name" msgstr "classes|packages|all|package-name|operation-name aufführen" #: tools/vips.c:919 msgid "generate headers for C++ binding" msgstr "Header für C++-Anbindung erzeugen" #: tools/vips.c:921 msgid "generate bodies for C++ binding" msgstr "Rumpfdaten für C++-Anbindung erzeugen" #: tools/vips.c:923 msgid "generate links for vips/bin" msgstr "Verweise für VIPS/Bin erzeugen" #: tools/vips.c:1043 msgid "[ACTION] [OPTIONS] [PARAMETERS] - VIPS driver program" msgstr "[AKTION] [OPTIONEN] [PARAMETER] - VIPS-Treiberprogramm" #: tools/vips.c:1111 msgid "possible actions:\n" msgstr "mögliche Aktionen:\n" #: tools/vips.c:1116 msgid "execute named vips operation" msgstr "genannte VIPS-Transaktion ausführen" #: tools/vips.c:1118 #, c-format msgid "unknown action \"%s\"" msgstr "unbekannte Aktion »%s«" #: tools/vipsthumbnail.c:54 msgid "set thumbnail size to SIZE" msgstr "Miniaturansicht auf GRÖẞE setzen" #: tools/vipsthumbnail.c:55 msgid "SIZE" msgstr "GRÖẞE" #: tools/vipsthumbnail.c:57 msgid "set output to FORMAT" msgstr "Ausgabe auf FORMAT setzen" #: tools/vipsthumbnail.c:58 msgid "FORMAT" msgstr "FORMAT" #: tools/vipsthumbnail.c:60 msgid "resample with INTERPOLATOR" msgstr "neues Muster mit INTERPOLATOR erstellen" #: tools/vipsthumbnail.c:61 msgid "INTERPOLATOR" msgstr "INTERPOLATOR" #: tools/vipsthumbnail.c:63 msgid "don't sharpen thumbnail" msgstr "Miniaturansicht nicht schärfen" #: tools/vipsthumbnail.c:65 msgid "export with PROFILE" msgstr "mit PROFIL exportieren" #: tools/vipsthumbnail.c:66 tools/vipsthumbnail.c:69 msgid "PROFILE" msgstr "PROFIL" #: tools/vipsthumbnail.c:68 msgid "import untagged images with PROFILE" msgstr "nicht gekennzeichnetes Bild mit PROFIL importieren" #: tools/vipsthumbnail.c:71 msgid "don't delete profile from exported image" msgstr "Profil aus exportiertem Bild nicht löschen" #: tools/vipsthumbnail.c:73 msgid "verbose output" msgstr "detaillierte Ausgabe" #: tools/vipsthumbnail.c:412 msgid "- thumbnail generator" msgstr "- Miniaturansichten-Generator" #: libvips/resample/bicubic.cpp:430 msgid "Bicubic interpolation (Catmull-Rom)" msgstr "doppelt kubische Interpolation (Catmull-Rom)" #: libvips/resample/nohalo.cpp:1577 msgid "Edge sharpening resampler with halo reduction" msgstr "neues Kantenschärfungsmuster mit Halo-Reduzierung" #: libvips/resample/vsqbs.cpp:400 msgid "B-Splines with antialiasing smoothing" msgstr "B-Splines mit Kantenglättung" #: libvips/resample/lbb.cpp:861 msgid "Reduced halo bicubic" msgstr "doppelt kubische Halo-Reduzierung" libvips-8.9.1/po/en_GB.gmo000066400000000000000000000026271361153320700153050ustar00rootroot00000000000000xy" 0L)a$%#7 KYu*%&=d|   Destination color spaceNeither global nor local color mapSource color spacebad colormapcalculate color differencechange color codingcolor operationscolor space transformationsconvert to a new colorspacefalse-color an imagemeasure a set of patches on a color chartunimplemented input color space 0x%xunimplemented output color space 0x%xunsupported color typeunsupported colorspace %dProject-Id-Version: vips 8.5 Report-Msgid-Bugs-To: PO-Revision-Date: Last-Translator: John Cupitt Language-Team: Language: en_GB MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Destination colour spaceNeither global nor local colour mapSource colour spacebad colourmapcalculate colour differencechange colour codingcolour operationscolour space transformationsconvert to a new colourspacefalse-colour an imagemeasure a set of patches on a colour chartunimplemented input colour space 0x%xunimplemented output colour space 0x%xunsupported colour typeunsupported colourspace %dlibvips-8.9.1/po/en_GB.po000066400000000000000000004461171361153320700151470ustar00rootroot00000000000000# en_GB for vips # Copyright (C) 2017 # This file is distributed under the same license as the vips package. # John Cupitt , 2017. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: vips 8.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-02-22 13:13+0000\n" "PO-Revision-Date: \n" "Last-Translator: John Cupitt \n" "Language-Team: \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../libvips/arithmetic/min.c:431 msgid "find image minimum" msgstr "" #: ../libvips/arithmetic/min.c:439 ../libvips/arithmetic/stats.c:420 #: ../libvips/arithmetic/deviate.c:221 ../libvips/arithmetic/max.c:438 #: ../libvips/arithmetic/hist_find_ndim.c:298 #: ../libvips/arithmetic/measure.c:210 ../libvips/arithmetic/hist_find.c:450 #: ../libvips/arithmetic/hough.c:185 ../libvips/arithmetic/arithmetic.c:639 #: ../libvips/arithmetic/avg.c:214 #: ../libvips/arithmetic/hist_find_indexed.c:391 ../libvips/colour/colour.c:427 #: ../libvips/colour/sRGB2scRGB.c:249 ../libvips/colour/scRGB2BW.c:243 #: ../libvips/colour/scRGB2sRGB.c:271 ../libvips/colour/colourspace.c:592 #: ../libvips/conversion/conversion.c:200 #: ../libvips/convolution/convolution.c:135 #: ../libvips/convolution/gaussblur.c:125 ../libvips/convolution/sharpen.c:319 #: ../libvips/convolution/correlation.c:163 ../libvips/create/create.c:101 #: ../libvips/foreign/foreign.c:984 ../libvips/freqfilt/freqfilt.c:104 #: ../libvips/histogram/hist_equal.c:114 ../libvips/histogram/stdif.c:300 #: ../libvips/histogram/histogram.c:232 ../libvips/histogram/hist_entropy.c:119 #: ../libvips/histogram/hist_norm.c:147 ../libvips/histogram/hist_plot.c:348 #: ../libvips/histogram/hist_local.c:364 ../libvips/histogram/maplut.c:700 #: ../libvips/iofuncs/system.c:284 ../libvips/morphology/morph.c:143 #: ../libvips/morphology/rank.c:413 ../libvips/mosaicing/merge.c:121 #: ../libvips/mosaicing/im_remosaic.c:170 #: ../libvips/mosaicing/global_balance.c:1777 ../libvips/mosaicing/mosaic.c:192 #: ../libvips/mosaicing/match.c:216 ../libvips/mosaicing/mosaic1.c:501 #: ../libvips/resample/resample.c:138 ../libvips/resample/thumbnail.c:520 msgid "Output" msgstr "" #: ../libvips/arithmetic/min.c:440 ../libvips/arithmetic/deviate.c:222 #: ../libvips/arithmetic/max.c:439 ../libvips/arithmetic/avg.c:215 #: ../libvips/histogram/hist_entropy.c:120 msgid "Output value" msgstr "" #: ../libvips/arithmetic/min.c:446 ../libvips/arithmetic/max.c:445 #: ../libvips/arithmetic/getpoint.c:153 ../libvips/conversion/embed.c:569 #: ../libvips/conversion/wrap.c:125 ../libvips/draw/draw_image.c:265 #: ../libvips/draw/draw_mask.c:329 ../libvips/draw/draw_flood.c:552 msgid "x" msgstr "" #: ../libvips/arithmetic/min.c:447 msgid "Horizontal position of minimum" msgstr "" #: ../libvips/arithmetic/min.c:453 ../libvips/arithmetic/max.c:452 #: ../libvips/arithmetic/getpoint.c:160 ../libvips/conversion/embed.c:576 #: ../libvips/conversion/wrap.c:132 ../libvips/draw/draw_image.c:272 #: ../libvips/draw/draw_mask.c:336 ../libvips/draw/draw_flood.c:559 msgid "y" msgstr "" #: ../libvips/arithmetic/min.c:454 msgid "Vertical position of minimum" msgstr "" #: ../libvips/arithmetic/min.c:460 ../libvips/arithmetic/max.c:459 #: ../libvips/create/invertlut.c:295 ../libvips/create/identity.c:158 msgid "Size" msgstr "" #: ../libvips/arithmetic/min.c:461 msgid "Number of minimum values to find" msgstr "" #: ../libvips/arithmetic/min.c:467 ../libvips/arithmetic/max.c:466 #: ../libvips/arithmetic/getpoint.c:146 msgid "Output array" msgstr "" #: ../libvips/arithmetic/min.c:468 ../libvips/arithmetic/max.c:467 #: ../libvips/arithmetic/getpoint.c:147 msgid "Array of output values" msgstr "" #: ../libvips/arithmetic/min.c:474 ../libvips/arithmetic/max.c:473 msgid "x array" msgstr "" #: ../libvips/arithmetic/min.c:475 ../libvips/arithmetic/max.c:474 msgid "Array of horizontal positions" msgstr "" #: ../libvips/arithmetic/min.c:481 ../libvips/arithmetic/max.c:480 msgid "y array" msgstr "" #: ../libvips/arithmetic/min.c:482 ../libvips/arithmetic/max.c:481 msgid "Array of vertical positions" msgstr "" #: ../libvips/arithmetic/sum.c:141 msgid "sum an array of images" msgstr "" #: ../libvips/arithmetic/stats.c:412 ../libvips/arithmetic/avg.c:206 msgid "find image average" msgstr "" #: ../libvips/arithmetic/stats.c:421 ../libvips/arithmetic/measure.c:211 msgid "Output array of statistics" msgstr "" #: ../libvips/arithmetic/project.c:322 msgid "find image projections" msgstr "" #: ../libvips/arithmetic/project.c:330 ../libvips/arithmetic/profile.c:300 msgid "Columns" msgstr "" #: ../libvips/arithmetic/project.c:331 msgid "Sums of columns" msgstr "" #: ../libvips/arithmetic/project.c:336 ../libvips/arithmetic/profile.c:306 msgid "Rows" msgstr "" #: ../libvips/arithmetic/project.c:337 msgid "Sums of rows" msgstr "" #: ../libvips/arithmetic/hough_line.c:135 msgid "find hough line transform" msgstr "" #: ../libvips/arithmetic/hough_line.c:142 ../libvips/arithmetic/measure.c:244 #: ../libvips/conversion/embed.c:583 ../libvips/conversion/copy.c:284 #: ../libvips/conversion/extract.c:219 ../libvips/create/xyz.c:193 #: ../libvips/create/logmat.c:208 ../libvips/create/worley.c:310 #: ../libvips/create/gaussnoise.c:172 ../libvips/create/perlin.c:297 #: ../libvips/create/point.c:143 ../libvips/create/fractsurf.c:102 #: ../libvips/create/text.c:297 ../libvips/create/black.c:129 #: ../libvips/draw/draw_flood.c:593 ../libvips/foreign/rawload.c:123 #: ../libvips/histogram/stdif.c:308 ../libvips/histogram/hist_local.c:370 #: ../libvips/iofuncs/image.c:1130 ../libvips/morphology/rank.c:419 msgid "Width" msgstr "" #: ../libvips/arithmetic/hough_line.c:143 msgid "horizontal size of parameter space" msgstr "" #: ../libvips/arithmetic/hough_line.c:149 ../libvips/arithmetic/measure.c:251 #: ../libvips/conversion/embed.c:590 ../libvips/conversion/copy.c:291 #: ../libvips/conversion/extract.c:226 ../libvips/create/xyz.c:200 #: ../libvips/create/worley.c:317 ../libvips/create/gaussnoise.c:179 #: ../libvips/create/perlin.c:304 ../libvips/create/point.c:150 #: ../libvips/create/fractsurf.c:109 ../libvips/create/black.c:136 #: ../libvips/draw/draw_flood.c:600 ../libvips/foreign/rawload.c:130 #: ../libvips/histogram/stdif.c:315 ../libvips/histogram/hist_local.c:377 #: ../libvips/iofuncs/image.c:1137 ../libvips/morphology/rank.c:426 msgid "Height" msgstr "" #: ../libvips/arithmetic/hough_line.c:150 msgid "Vertical size of parameter space" msgstr "" #: ../libvips/arithmetic/binary.c:89 msgid "binary operations" msgstr "" #: ../libvips/arithmetic/binary.c:96 ../libvips/arithmetic/measure.c:230 #: ../libvips/colour/colour.c:699 ../libvips/conversion/extract.c:205 #: ../libvips/draw/draw_smudge.c:197 ../libvips/draw/draw_flood.c:579 #: ../libvips/draw/draw_rect.c:173 msgid "Left" msgstr "" #: ../libvips/arithmetic/binary.c:97 msgid "Left-hand image argument" msgstr "" #: ../libvips/arithmetic/binary.c:102 ../libvips/colour/colour.c:705 msgid "Right" msgstr "" #: ../libvips/arithmetic/binary.c:103 msgid "Right-hand image argument" msgstr "" #: ../libvips/arithmetic/deviate.c:213 msgid "find image standard deviation" msgstr "" #: ../libvips/arithmetic/max.c:430 msgid "find image maximum" msgstr "" #: ../libvips/arithmetic/max.c:446 msgid "Horizontal position of maximum" msgstr "" #: ../libvips/arithmetic/max.c:453 msgid "Vertical position of maximum" msgstr "" #: ../libvips/arithmetic/max.c:460 msgid "Number of maximum values to find" msgstr "" #: ../libvips/arithmetic/statistic.c:161 msgid "VIPS statistic operations" msgstr "" #: ../libvips/arithmetic/statistic.c:167 ../libvips/arithmetic/nary.c:87 #: ../libvips/arithmetic/unary.c:88 ../libvips/colour/colour.c:493 #: ../libvips/colour/colour.c:587 ../libvips/colour/sRGB2scRGB.c:243 #: ../libvips/colour/scRGB2BW.c:237 ../libvips/colour/scRGB2sRGB.c:265 #: ../libvips/colour/colourspace.c:586 ../libvips/conversion/embed.c:563 #: ../libvips/conversion/zoom.c:383 ../libvips/conversion/replicate.c:196 #: ../libvips/conversion/bandfold.c:160 ../libvips/conversion/wrap.c:119 #: ../libvips/conversion/arrayjoin.c:304 #: ../libvips/conversion/unpremultiply.c:268 ../libvips/conversion/flip.c:240 #: ../libvips/conversion/flatten.c:386 ../libvips/conversion/copy.c:271 #: ../libvips/conversion/bandjoin.c:176 ../libvips/conversion/bandjoin.c:395 #: ../libvips/conversion/rot45.c:267 ../libvips/conversion/msb.c:244 #: ../libvips/conversion/extract.c:199 ../libvips/conversion/extract.c:422 #: ../libvips/conversion/cast.c:548 ../libvips/conversion/bandunfold.c:163 #: ../libvips/conversion/tilecache.c:416 ../libvips/conversion/sequential.c:327 #: ../libvips/conversion/premultiply.c:259 ../libvips/conversion/bandmean.c:198 #: ../libvips/conversion/byteswap.c:206 ../libvips/conversion/subsample.c:274 #: ../libvips/conversion/bandbool.c:214 ../libvips/conversion/recomb.c:207 #: ../libvips/conversion/cache.c:101 ../libvips/conversion/grid.c:199 #: ../libvips/conversion/scale.c:151 ../libvips/conversion/autorot.c:178 #: ../libvips/conversion/rot.c:359 ../libvips/conversion/bandrank.c:244 #: ../libvips/convolution/convolution.c:129 #: ../libvips/convolution/gaussblur.c:119 ../libvips/convolution/sharpen.c:313 #: ../libvips/convolution/correlation.c:151 ../libvips/create/invertlut.c:289 #: ../libvips/create/buildlut.c:261 ../libvips/foreign/foreign.c:1522 #: ../libvips/histogram/hist_match.c:161 ../libvips/histogram/hist_equal.c:108 #: ../libvips/histogram/stdif.c:294 ../libvips/histogram/hist_entropy.c:113 #: ../libvips/histogram/hist_ismonotonic.c:117 #: ../libvips/histogram/hist_norm.c:141 ../libvips/histogram/hist_plot.c:342 #: ../libvips/histogram/hist_unary.c:89 ../libvips/histogram/hist_local.c:358 #: ../libvips/histogram/percent.c:110 ../libvips/histogram/maplut.c:694 #: ../libvips/iofuncs/system.c:277 ../libvips/morphology/morphology.c:117 #: ../libvips/mosaicing/im_remosaic.c:164 #: ../libvips/mosaicing/global_balance.c:1771 #: ../libvips/resample/resample.c:132 msgid "Input" msgstr "" #: ../libvips/arithmetic/statistic.c:168 ../libvips/arithmetic/getpoint.c:141 #: ../libvips/arithmetic/unary.c:89 ../libvips/colour/colour.c:494 #: ../libvips/colour/colour.c:588 ../libvips/colour/sRGB2scRGB.c:244 #: ../libvips/colour/scRGB2BW.c:238 ../libvips/colour/scRGB2sRGB.c:266 #: ../libvips/colour/colourspace.c:587 ../libvips/conversion/embed.c:564 #: ../libvips/conversion/zoom.c:384 ../libvips/conversion/replicate.c:197 #: ../libvips/conversion/bandfold.c:161 ../libvips/conversion/wrap.c:120 #: ../libvips/conversion/unpremultiply.c:269 ../libvips/conversion/flip.c:241 #: ../libvips/conversion/flatten.c:387 ../libvips/conversion/copy.c:272 #: ../libvips/conversion/bandjoin.c:396 ../libvips/conversion/rot45.c:268 #: ../libvips/conversion/msb.c:245 ../libvips/conversion/extract.c:200 #: ../libvips/conversion/extract.c:423 ../libvips/conversion/cast.c:549 #: ../libvips/conversion/bandunfold.c:164 ../libvips/conversion/tilecache.c:417 #: ../libvips/conversion/sequential.c:328 #: ../libvips/conversion/premultiply.c:260 #: ../libvips/conversion/falsecolour.c:382 ../libvips/conversion/byteswap.c:207 #: ../libvips/conversion/subsample.c:275 ../libvips/conversion/gamma.c:144 #: ../libvips/conversion/cache.c:102 ../libvips/conversion/grid.c:200 #: ../libvips/conversion/scale.c:152 ../libvips/conversion/autorot.c:179 #: ../libvips/conversion/rot.c:360 ../libvips/convolution/gaussblur.c:120 #: ../libvips/convolution/sharpen.c:314 ../libvips/freqfilt/freqfilt.c:99 #: ../libvips/histogram/hist_equal.c:109 ../libvips/histogram/stdif.c:295 #: ../libvips/histogram/hist_norm.c:142 ../libvips/histogram/hist_plot.c:343 #: ../libvips/histogram/hist_unary.c:90 ../libvips/histogram/hist_local.c:359 #: ../libvips/histogram/percent.c:111 ../libvips/histogram/maplut.c:695 #: ../libvips/mosaicing/im_remosaic.c:165 #: ../libvips/mosaicing/global_balance.c:1772 msgid "Input image" msgstr "" #: ../libvips/arithmetic/nary.c:80 msgid "nary operations" msgstr "" #: ../libvips/arithmetic/nary.c:88 ../libvips/conversion/arrayjoin.c:305 #: ../libvips/conversion/bandjoin.c:177 ../libvips/conversion/bandrank.c:245 #: ../libvips/iofuncs/system.c:278 msgid "Array of input images" msgstr "" #: ../libvips/arithmetic/invert.c:165 msgid "invert an image" msgstr "" #: ../libvips/arithmetic/remainder.c:174 msgid "remainder after integer division of two images" msgstr "" #: ../libvips/arithmetic/remainder.c:324 msgid "remainder after integer division of an image and a constant" msgstr "" #: ../libvips/arithmetic/boolean.c:210 msgid "boolean operation on two images" msgstr "" #: ../libvips/arithmetic/boolean.c:218 ../libvips/arithmetic/boolean.c:521 #: ../libvips/arithmetic/relational.c:224 #: ../libvips/arithmetic/relational.c:562 ../libvips/arithmetic/math2.c:205 #: ../libvips/arithmetic/math2.c:404 ../libvips/arithmetic/complex.c:255 #: ../libvips/arithmetic/complex.c:548 ../libvips/arithmetic/complex.c:763 #: ../libvips/arithmetic/math.c:214 ../libvips/conversion/bandbool.c:220 #: ../tools/vips.c:1070 msgid "Operation" msgstr "" #: ../libvips/arithmetic/boolean.c:219 ../libvips/arithmetic/boolean.c:522 #: ../libvips/conversion/bandbool.c:221 msgid "boolean to perform" msgstr "" #: ../libvips/arithmetic/boolean.c:513 msgid "boolean operations against a constant" msgstr "" #: ../libvips/arithmetic/sign.c:152 msgid "unit vector of pixel" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:112 #, c-format msgid "bins out of range [1,%d]" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:289 msgid "find n-dimensional image histogram" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:299 #: ../libvips/arithmetic/hist_find.c:451 #: ../libvips/arithmetic/hist_find_indexed.c:392 msgid "Output histogram" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:304 msgid "Bins" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:305 msgid "Number of bins in each dimension" msgstr "" #: ../libvips/arithmetic/multiply.c:173 msgid "multiply two images" msgstr "" #: ../libvips/arithmetic/hough_circle.c:113 msgid "parameters out of range" msgstr "" #: ../libvips/arithmetic/hough_circle.c:233 msgid "find hough circle transform" msgstr "" #: ../libvips/arithmetic/hough_circle.c:240 ../libvips/foreign/pdfload.c:489 #: ../libvips/foreign/svgload.c:290 ../libvips/mosaicing/mosaic.c:275 #: ../libvips/resample/similarity.c:171 msgid "Scale" msgstr "" #: ../libvips/arithmetic/hough_circle.c:241 msgid "Scale down dimensions by this factor" msgstr "" #: ../libvips/arithmetic/hough_circle.c:247 msgid "Min radius" msgstr "" #: ../libvips/arithmetic/hough_circle.c:248 msgid "Smallest radius to search for" msgstr "" #: ../libvips/arithmetic/hough_circle.c:254 msgid "Max radius" msgstr "" #: ../libvips/arithmetic/hough_circle.c:255 msgid "Largest radius to search for" msgstr "" #: ../libvips/arithmetic/measure.c:168 #, c-format msgid "%s: patch %d x %d, band %d: avg = %g, sdev = %g" msgstr "" #: ../libvips/arithmetic/measure.c:200 msgid "measure a set of patches on a color chart" msgstr "measure a set of patches on a colour chart" #: ../libvips/arithmetic/measure.c:204 ../libvips/arithmetic/getpoint.c:140 #: ../libvips/conversion/falsecolour.c:381 ../libvips/conversion/gamma.c:143 #: ../libvips/freqfilt/freqfilt.c:98 msgid "in" msgstr "" #: ../libvips/arithmetic/measure.c:205 msgid "Image to measure" msgstr "" #: ../libvips/arithmetic/measure.c:216 ../libvips/conversion/replicate.c:202 #: ../libvips/conversion/arrayjoin.c:311 ../libvips/conversion/grid.c:212 msgid "Across" msgstr "" #: ../libvips/arithmetic/measure.c:217 msgid "Number of patches across chart" msgstr "" #: ../libvips/arithmetic/measure.c:223 ../libvips/conversion/replicate.c:209 #: ../libvips/conversion/grid.c:219 msgid "Down" msgstr "" #: ../libvips/arithmetic/measure.c:224 msgid "Number of patches down chart" msgstr "" #: ../libvips/arithmetic/measure.c:231 ../libvips/conversion/extract.c:206 msgid "Left edge of extract area" msgstr "" #: ../libvips/arithmetic/measure.c:237 ../libvips/conversion/extract.c:212 #: ../libvips/draw/draw_flood.c:586 msgid "Top" msgstr "" #: ../libvips/arithmetic/measure.c:238 ../libvips/conversion/extract.c:213 msgid "Top edge of extract area" msgstr "" #: ../libvips/arithmetic/measure.c:245 ../libvips/conversion/extract.c:220 msgid "Width of extract area" msgstr "" #: ../libvips/arithmetic/measure.c:252 ../libvips/conversion/extract.c:227 msgid "Height of extract area" msgstr "" #: ../libvips/arithmetic/hist_find.c:441 msgid "find image histogram" msgstr "" #: ../libvips/arithmetic/hist_find.c:456 ../libvips/conversion/msb.c:250 #: ../libvips/conversion/extract.c:428 ../libvips/histogram/hist_equal.c:120 msgid "Band" msgstr "" #: ../libvips/arithmetic/hist_find.c:457 msgid "Find histogram of band" msgstr "" #: ../libvips/arithmetic/getpoint.c:136 msgid "read a point from an image" msgstr "" #: ../libvips/arithmetic/getpoint.c:154 ../libvips/arithmetic/getpoint.c:161 msgid "Point to read" msgstr "" #: ../libvips/arithmetic/add.c:172 msgid "add two images" msgstr "" #: ../libvips/arithmetic/divide.c:225 msgid "divide two images" msgstr "" #: ../libvips/arithmetic/relational.c:216 msgid "relational operation on two images" msgstr "" #: ../libvips/arithmetic/relational.c:225 #: ../libvips/arithmetic/relational.c:563 msgid "relational to perform" msgstr "" #: ../libvips/arithmetic/relational.c:553 msgid "relational operations against a constant" msgstr "" #: ../libvips/arithmetic/hough.c:176 msgid "find hough transform" msgstr "" #: ../libvips/arithmetic/hough.c:186 ../libvips/arithmetic/arithmetic.c:640 #: ../libvips/colour/colour.c:428 ../libvips/colour/sRGB2scRGB.c:250 #: ../libvips/colour/scRGB2BW.c:244 ../libvips/colour/scRGB2sRGB.c:272 #: ../libvips/colour/colourspace.c:593 ../libvips/conversion/conversion.c:201 #: ../libvips/convolution/convolution.c:136 #: ../libvips/convolution/gaussblur.c:126 ../libvips/convolution/sharpen.c:320 #: ../libvips/convolution/correlation.c:164 ../libvips/create/create.c:102 #: ../libvips/foreign/foreign.c:985 ../libvips/freqfilt/freqfilt.c:105 #: ../libvips/histogram/hist_equal.c:115 ../libvips/histogram/stdif.c:301 #: ../libvips/histogram/histogram.c:233 ../libvips/histogram/hist_norm.c:148 #: ../libvips/histogram/hist_plot.c:349 ../libvips/histogram/hist_local.c:365 #: ../libvips/histogram/maplut.c:701 ../libvips/iofuncs/system.c:285 #: ../libvips/morphology/morph.c:144 ../libvips/morphology/rank.c:414 #: ../libvips/mosaicing/merge.c:122 ../libvips/mosaicing/im_remosaic.c:171 #: ../libvips/mosaicing/global_balance.c:1778 ../libvips/mosaicing/mosaic.c:193 #: ../libvips/mosaicing/match.c:217 ../libvips/mosaicing/mosaic1.c:502 #: ../libvips/resample/resample.c:139 ../libvips/resample/thumbnail.c:521 msgid "Output image" msgstr "" #: ../libvips/arithmetic/arithmetic.c:378 #, c-format msgid "not one band or %d bands" msgstr "" #: ../libvips/arithmetic/arithmetic.c:382 msgid "bad bands" msgstr "" #: ../libvips/arithmetic/arithmetic.c:572 ../libvips/colour/colour.c:297 #: ../libvips/conversion/bandary.c:140 ../libvips/conversion/bandrank.c:204 msgid "too many input images" msgstr "" #: ../libvips/arithmetic/arithmetic.c:633 msgid "arithmetic operations" msgstr "" #: ../libvips/arithmetic/abs.c:230 msgid "absolute value of an image" msgstr "" #: ../libvips/arithmetic/linear.c:386 msgid "calculate (a * in + b)" msgstr "" #: ../libvips/arithmetic/linear.c:394 msgid "a" msgstr "" #: ../libvips/arithmetic/linear.c:395 msgid "Multiply by this" msgstr "" #: ../libvips/arithmetic/linear.c:401 msgid "b" msgstr "" #: ../libvips/arithmetic/linear.c:402 msgid "Add this" msgstr "" #: ../libvips/arithmetic/linear.c:408 msgid "uchar" msgstr "" #: ../libvips/arithmetic/linear.c:409 msgid "Output should be uchar" msgstr "" #: ../libvips/arithmetic/round.c:161 msgid "perform a round function on an image" msgstr "" #: ../libvips/arithmetic/round.c:169 msgid "Round operation" msgstr "" #: ../libvips/arithmetic/round.c:170 msgid "rounding operation to perform" msgstr "" #: ../libvips/arithmetic/math2.c:197 msgid "binary math operations" msgstr "" #: ../libvips/arithmetic/math2.c:206 ../libvips/arithmetic/math2.c:405 #: ../libvips/arithmetic/math.c:215 msgid "math to perform" msgstr "" #: ../libvips/arithmetic/math2.c:396 msgid "binary math operations with a constant" msgstr "" #: ../libvips/arithmetic/unaryconst.c:203 msgid "unary operations with a constant" msgstr "" #: ../libvips/arithmetic/unaryconst.c:207 msgid "c" msgstr "" #: ../libvips/arithmetic/unaryconst.c:208 msgid "Array of constants" msgstr "" #: ../libvips/arithmetic/complex.c:248 msgid "perform a complex operation on an image" msgstr "" #: ../libvips/arithmetic/complex.c:256 ../libvips/arithmetic/complex.c:764 msgid "complex to perform" msgstr "" #: ../libvips/arithmetic/complex.c:541 msgid "complex binary operations on two images" msgstr "" #: ../libvips/arithmetic/complex.c:549 msgid "binary complex operation to perform" msgstr "" #: ../libvips/arithmetic/complex.c:754 msgid "get a component from a complex image" msgstr "" #: ../libvips/arithmetic/complex.c:962 msgid "form a complex image from two real images" msgstr "" #: ../libvips/arithmetic/profile.c:292 msgid "find image profiles" msgstr "" #: ../libvips/arithmetic/profile.c:301 msgid "First non-zero pixel in column" msgstr "" #: ../libvips/arithmetic/profile.c:307 msgid "First non-zero pixel in row" msgstr "" #: ../libvips/arithmetic/unary.c:81 msgid "unary operations" msgstr "" #: ../libvips/arithmetic/subtract.c:162 msgid "subtract two images" msgstr "" #: ../libvips/arithmetic/hist_find_indexed.c:377 msgid "find indexed image histogram" msgstr "" #: ../libvips/arithmetic/hist_find_indexed.c:385 #: ../libvips/conversion/bandrank.c:251 ../libvips/resample/mapim.c:412 msgid "Index" msgstr "" #: ../libvips/arithmetic/hist_find_indexed.c:386 msgid "Index image" msgstr "" #: ../libvips/arithmetic/math.c:206 msgid "apply a math operation to an image" msgstr "" #: ../libvips/colour/LabQ2LabS.c:104 msgid "unpack a LabQ image to short Lab" msgstr "" #: ../libvips/colour/rad2float.c:188 msgid "unpack Radiance coding to float RGB" msgstr "" #: ../libvips/colour/XYZ2scRGB.c:105 msgid "transform XYZ to scRGB" msgstr "" #: ../libvips/colour/Lab2LabS.c:80 msgid "transform float Lab to signed short" msgstr "" #: ../libvips/colour/LabS2LabQ.c:127 msgid "transform short Lab to LabQ coding" msgstr "" #: ../libvips/colour/float2rad.c:201 msgid "transform float RGB to Radiance coding" msgstr "" #: ../libvips/colour/scRGB2XYZ.c:90 msgid "transform scRGB to XYZ" msgstr "" #: ../libvips/colour/LabQ2Lab.c:124 msgid "unpack a LabQ image to float Lab" msgstr "" #: ../libvips/colour/HSV2sRGB.c:113 msgid "transform HSV to sRGB" msgstr "" #: ../libvips/colour/XYZ2Lab.c:222 msgid "transform XYZ to Lab" msgstr "" #: ../libvips/colour/XYZ2Lab.c:228 ../libvips/colour/Lab2XYZ.c:175 msgid "Temperature" msgstr "" #: ../libvips/colour/XYZ2Lab.c:229 msgid "Colour temperature" msgstr "" #: ../libvips/colour/UCS2LCh.c:272 ../libvips/colour/LCh2UCS.c:206 msgid "transform LCh to CMC" msgstr "" #: ../libvips/colour/dE76.c:113 msgid "calculate dE76" msgstr "" #: ../libvips/colour/colour.c:421 msgid "color operations" msgstr "colour operations" #: ../libvips/colour/colour.c:489 msgid "color space transformations" msgstr "colour space transformations" #: ../libvips/colour/colour.c:583 msgid "change color coding" msgstr "change colour coding" #: ../libvips/colour/colour.c:695 msgid "calculate color difference" msgstr "calculate colour difference" #: ../libvips/colour/colour.c:700 msgid "Left-hand input image" msgstr "" #: ../libvips/colour/colour.c:706 msgid "Right-hand input image" msgstr "" #: ../libvips/colour/sRGB2HSV.c:134 msgid "transform sRGB to HSV" msgstr "" #: ../libvips/colour/Lab2LabQ.c:137 msgid "transform float Lab to LabQ coding" msgstr "" #: ../libvips/colour/sRGB2scRGB.c:237 msgid "convert an sRGB image to scRGB" msgstr "" #: ../libvips/colour/dECMC.c:61 msgid "calculate dECMC" msgstr "" #: ../libvips/colour/LCh2Lab.c:120 msgid "transform LCh to Lab" msgstr "" #: ../libvips/colour/Yxy2XYZ.c:93 msgid "transform Yxy to XYZ" msgstr "" #: ../libvips/colour/LabS2Lab.c:78 msgid "transform signed short Lab to float" msgstr "" #: ../libvips/colour/LabQ2sRGB.c:514 msgid "convert a LabQ image to sRGB" msgstr "" #: ../libvips/colour/scRGB2BW.c:190 ../libvips/colour/icc_transform.c:237 #: ../libvips/colour/scRGB2sRGB.c:219 msgid "depth must be 8 or 16" msgstr "" #: ../libvips/colour/scRGB2BW.c:231 msgid "convert scRGB to BW" msgstr "" #: ../libvips/colour/scRGB2BW.c:249 ../libvips/colour/icc_transform.c:980 #: ../libvips/colour/icc_transform.c:1121 ../libvips/colour/scRGB2sRGB.c:277 #: ../libvips/foreign/dzsave.c:2163 msgid "Depth" msgstr "" #: ../libvips/colour/scRGB2BW.c:250 ../libvips/colour/icc_transform.c:981 #: ../libvips/colour/icc_transform.c:1122 ../libvips/colour/scRGB2sRGB.c:278 msgid "Output device space depth in bits" msgstr "" #: ../libvips/colour/Lab2LCh.c:149 msgid "transform Lab to LCh" msgstr "" #: ../libvips/colour/icc_transform.c:292 #, c-format msgid "unimplemented input color space 0x%x" msgstr "unimplemented input colour space 0x%x" #: ../libvips/colour/icc_transform.c:357 #, c-format msgid "unimplemented output color space 0x%x" msgstr "unimplemented output colour space 0x%x" #: ../libvips/colour/icc_transform.c:369 msgid "no device profile" msgstr "" #: ../libvips/colour/icc_transform.c:400 msgid "transform using ICC profiles" msgstr "" #: ../libvips/colour/icc_transform.c:404 msgid "Intent" msgstr "" #: ../libvips/colour/icc_transform.c:405 msgid "Rendering intent" msgstr "" #: ../libvips/colour/icc_transform.c:411 msgid "PCS" msgstr "" #: ../libvips/colour/icc_transform.c:412 msgid "Set Profile Connection Space" msgstr "" #: ../libvips/colour/icc_transform.c:455 #, c-format msgid "" "%s: intent %d (%s) not supported by %s profile; falling back to default " "intent" msgstr "" #: ../libvips/colour/icc_transform.c:460 ../libvips/iofuncs/operation.c:377 msgid "input" msgstr "" #: ../libvips/colour/icc_transform.c:460 ../libvips/iofuncs/operation.c:377 msgid "output" msgstr "" #: ../libvips/colour/icc_transform.c:557 msgid "corrupt embedded profile" msgstr "" #: ../libvips/colour/icc_transform.c:565 msgid "embedded profile incompatible with image" msgstr "" #: ../libvips/colour/icc_transform.c:580 ../libvips/colour/icc_transform.c:822 #: ../libvips/colour/icc_transform.c:1045 #, c-format msgid "unable to open profile \"%s\"" msgstr "" #: ../libvips/colour/icc_transform.c:587 #, c-format msgid "profile \"%s\" incompatible with image" msgstr "" #: ../libvips/colour/icc_transform.c:626 ../libvips/colour/icc_transform.c:1037 msgid "no input profile" msgstr "" #: ../libvips/colour/icc_transform.c:736 msgid "import from device with ICC profile" msgstr "" #: ../libvips/colour/icc_transform.c:742 ../libvips/colour/icc_transform.c:1107 msgid "Embedded" msgstr "" #: ../libvips/colour/icc_transform.c:743 ../libvips/colour/icc_transform.c:1108 msgid "Use embedded input profile, if available" msgstr "" #: ../libvips/colour/icc_transform.c:749 ../libvips/colour/icc_transform.c:1114 msgid "Input profile" msgstr "" #: ../libvips/colour/icc_transform.c:750 ../libvips/colour/icc_transform.c:1115 msgid "Filename to load input profile from" msgstr "" #: ../libvips/colour/icc_transform.c:814 msgid "unable to load embedded profile" msgstr "" #: ../libvips/colour/icc_transform.c:830 msgid "no output profile" msgstr "" #: ../libvips/colour/icc_transform.c:967 msgid "output to device with ICC profile" msgstr "" #: ../libvips/colour/icc_transform.c:973 ../libvips/colour/icc_transform.c:1100 msgid "Output profile" msgstr "" #: ../libvips/colour/icc_transform.c:974 ../libvips/colour/icc_transform.c:1101 msgid "Filename to load output profile from" msgstr "" #: ../libvips/colour/icc_transform.c:1094 msgid "transform between devices with ICC profiles" msgstr "" #: ../libvips/colour/icc_transform.c:1166 #: ../libvips/colour/icc_transform.c:1180 msgid "unable to get media white point" msgstr "" #: ../libvips/colour/icc_transform.c:1240 msgid "libvips configured without lcms support" msgstr "" #: ../libvips/colour/scRGB2sRGB.c:259 msgid "convert an scRGB image to sRGB" msgstr "" #: ../libvips/colour/dE00.c:235 msgid "calculate dE00" msgstr "" #: ../libvips/colour/Lab2XYZ.c:169 msgid "transform CIELAB to XYZ" msgstr "" #: ../libvips/colour/Lab2XYZ.c:176 msgid "Color temperature" msgstr "" #: ../libvips/colour/XYZ2Yxy.c:92 msgid "transform XYZ to Yxy" msgstr "" #: ../libvips/colour/colourspace.c:145 msgid "too few bands for operation" msgstr "" #: ../libvips/colour/colourspace.c:548 #, c-format msgid "no known route from '%s' to '%s'" msgstr "" #: ../libvips/colour/colourspace.c:580 msgid "convert to a new colorspace" msgstr "convert to a new colourspace" #: ../libvips/colour/colourspace.c:598 msgid "Space" msgstr "" #: ../libvips/colour/colourspace.c:599 msgid "Destination color space" msgstr "Destination colour space" #: ../libvips/colour/colourspace.c:605 msgid "Source space" msgstr "" #: ../libvips/colour/colourspace.c:606 msgid "Source color space" msgstr "Source colour space" #: ../libvips/conversion/conversion.c:196 msgid "conversion operations" msgstr "" #: ../libvips/conversion/embed.c:474 ../libvips/iofuncs/image.c:2818 msgid "bad dimensions" msgstr "" #: ../libvips/conversion/embed.c:557 msgid "embed an image in a larger image" msgstr "" #: ../libvips/conversion/embed.c:570 ../libvips/conversion/wrap.c:126 msgid "Left edge of input in output" msgstr "" #: ../libvips/conversion/embed.c:577 ../libvips/conversion/wrap.c:133 msgid "Top edge of input in output" msgstr "" #: ../libvips/conversion/embed.c:584 ../libvips/conversion/copy.c:285 #: ../libvips/create/xyz.c:194 ../libvips/create/worley.c:311 #: ../libvips/create/gaussnoise.c:173 ../libvips/create/perlin.c:298 #: ../libvips/create/point.c:144 ../libvips/create/fractsurf.c:103 #: ../libvips/create/black.c:130 ../libvips/foreign/rawload.c:124 #: ../libvips/iofuncs/image.c:1131 msgid "Image width in pixels" msgstr "" #: ../libvips/conversion/embed.c:591 ../libvips/conversion/copy.c:292 #: ../libvips/create/xyz.c:201 ../libvips/create/worley.c:318 #: ../libvips/create/gaussnoise.c:180 ../libvips/create/perlin.c:305 #: ../libvips/create/point.c:151 ../libvips/create/fractsurf.c:110 #: ../libvips/create/black.c:137 ../libvips/foreign/rawload.c:131 #: ../libvips/iofuncs/image.c:1138 msgid "Image height in pixels" msgstr "" #: ../libvips/conversion/embed.c:597 msgid "Extend" msgstr "" #: ../libvips/conversion/embed.c:598 msgid "How to generate the extra pixels" msgstr "" #: ../libvips/conversion/embed.c:604 ../libvips/conversion/arrayjoin.c:325 #: ../libvips/conversion/flatten.c:392 ../libvips/conversion/join.c:265 #: ../libvips/conversion/insert.c:550 ../libvips/foreign/foreign.c:1535 msgid "Background" msgstr "" #: ../libvips/conversion/embed.c:605 msgid "Color for background pixels" msgstr "" #: ../libvips/conversion/zoom.c:333 msgid "zoom factors too large" msgstr "" #: ../libvips/conversion/zoom.c:377 msgid "zoom an image" msgstr "" #: ../libvips/conversion/zoom.c:389 ../libvips/conversion/subsample.c:280 msgid "Xfac" msgstr "" #: ../libvips/conversion/zoom.c:390 msgid "Horizontal zoom factor" msgstr "" #: ../libvips/conversion/zoom.c:396 ../libvips/conversion/subsample.c:287 msgid "Yfac" msgstr "" #: ../libvips/conversion/zoom.c:397 msgid "Vertical zoom factor" msgstr "" #: ../libvips/conversion/replicate.c:192 msgid "replicate an image" msgstr "" #: ../libvips/conversion/replicate.c:203 msgid "Repeat this many times horizontally" msgstr "" #: ../libvips/conversion/replicate.c:210 msgid "Repeat this many times vertically" msgstr "" #: ../libvips/conversion/bandfold.c:122 msgid "@factor must be a factor of image width" msgstr "" #: ../libvips/conversion/bandfold.c:154 msgid "fold up x axis into bands" msgstr "" #: ../libvips/conversion/bandfold.c:166 ../libvips/conversion/bandunfold.c:169 #: ../libvips/create/eye.c:103 msgid "Factor" msgstr "" #: ../libvips/conversion/bandfold.c:167 msgid "Fold by this factor" msgstr "" #: ../libvips/conversion/wrap.c:115 msgid "wrap image origin" msgstr "" #: ../libvips/conversion/arrayjoin.c:298 msgid "join an array of images" msgstr "" #: ../libvips/conversion/arrayjoin.c:312 msgid "Number of images across grid" msgstr "" #: ../libvips/conversion/arrayjoin.c:318 ../libvips/conversion/join.c:258 msgid "Shim" msgstr "" #: ../libvips/conversion/arrayjoin.c:319 ../libvips/conversion/join.c:259 msgid "Pixels between images" msgstr "" #: ../libvips/conversion/arrayjoin.c:326 ../libvips/conversion/join.c:266 msgid "Colour for new pixels" msgstr "" #: ../libvips/conversion/arrayjoin.c:332 msgid "Horizontal align" msgstr "" #: ../libvips/conversion/arrayjoin.c:333 msgid "Align on the left, centre or right" msgstr "" #: ../libvips/conversion/arrayjoin.c:339 msgid "Vertical align" msgstr "" #: ../libvips/conversion/arrayjoin.c:340 msgid "Align on the top, centre or bottom" msgstr "" #: ../libvips/conversion/arrayjoin.c:346 msgid "Horizontal spacing" msgstr "" #: ../libvips/conversion/arrayjoin.c:347 msgid "Horizontal spacing between images" msgstr "" #: ../libvips/conversion/arrayjoin.c:353 msgid "Vertical spacing" msgstr "" #: ../libvips/conversion/arrayjoin.c:354 msgid "Vertical spacing between images" msgstr "" #: ../libvips/conversion/unpremultiply.c:262 msgid "unpremultiply image alpha" msgstr "" #: ../libvips/conversion/unpremultiply.c:274 #: ../libvips/conversion/flatten.c:399 ../libvips/conversion/premultiply.c:265 msgid "Maximum alpha" msgstr "" #: ../libvips/conversion/unpremultiply.c:275 #: ../libvips/conversion/flatten.c:400 ../libvips/conversion/premultiply.c:266 msgid "Maximum value of alpha channel" msgstr "" #: ../libvips/conversion/flip.c:236 msgid "flip an image" msgstr "" #: ../libvips/conversion/flip.c:246 ../libvips/mosaicing/merge.c:127 #: ../libvips/mosaicing/mosaic.c:198 ../libvips/mosaicing/mosaic1.c:507 msgid "Direction" msgstr "" #: ../libvips/conversion/flip.c:247 msgid "Direction to flip image" msgstr "" #: ../libvips/conversion/flatten.c:380 msgid "flatten alpha out of an image" msgstr "" #: ../libvips/conversion/flatten.c:393 ../libvips/foreign/foreign.c:1536 msgid "Background value" msgstr "" #: ../libvips/conversion/copy.c:181 msgid "copy swap is deprecated, use byteswap instead" msgstr "" #: ../libvips/conversion/copy.c:235 msgid "must not change pel size" msgstr "" #: ../libvips/conversion/copy.c:260 msgid "copy an image" msgstr "" #: ../libvips/conversion/copy.c:277 msgid "Swap" msgstr "" #: ../libvips/conversion/copy.c:278 msgid "Swap bytes in image between little and big-endian" msgstr "" #: ../libvips/conversion/copy.c:298 ../libvips/create/identity.c:144 #: ../libvips/create/black.c:143 ../libvips/foreign/rawload.c:137 #: ../libvips/iofuncs/image.c:1144 msgid "Bands" msgstr "" #: ../libvips/conversion/copy.c:299 ../libvips/create/black.c:144 #: ../libvips/foreign/rawload.c:138 ../libvips/iofuncs/image.c:1145 msgid "Number of bands in image" msgstr "" #: ../libvips/conversion/copy.c:305 ../libvips/conversion/cast.c:554 #: ../libvips/iofuncs/image.c:1151 msgid "Format" msgstr "" #: ../libvips/conversion/copy.c:306 ../libvips/iofuncs/image.c:1152 msgid "Pixel format in image" msgstr "" #: ../libvips/conversion/copy.c:312 ../libvips/iofuncs/image.c:1158 msgid "Coding" msgstr "" #: ../libvips/conversion/copy.c:313 ../libvips/iofuncs/image.c:1159 msgid "Pixel coding" msgstr "" #: ../libvips/conversion/copy.c:319 ../libvips/iofuncs/image.c:1165 msgid "Interpretation" msgstr "" #: ../libvips/conversion/copy.c:320 ../libvips/iofuncs/image.c:1166 msgid "Pixel interpretation" msgstr "" #: ../libvips/conversion/copy.c:326 ../libvips/foreign/tiffsave.c:260 #: ../libvips/iofuncs/image.c:1172 msgid "Xres" msgstr "" #: ../libvips/conversion/copy.c:327 ../libvips/foreign/tiffsave.c:261 #: ../libvips/iofuncs/image.c:1173 msgid "Horizontal resolution in pixels/mm" msgstr "" #: ../libvips/conversion/copy.c:333 ../libvips/foreign/tiffsave.c:267 #: ../libvips/iofuncs/image.c:1179 msgid "Yres" msgstr "" #: ../libvips/conversion/copy.c:334 ../libvips/foreign/tiffsave.c:268 #: ../libvips/iofuncs/image.c:1180 msgid "Vertical resolution in pixels/mm" msgstr "" #: ../libvips/conversion/copy.c:340 ../libvips/iofuncs/image.c:1186 msgid "Xoffset" msgstr "" #: ../libvips/conversion/copy.c:341 ../libvips/iofuncs/image.c:1187 msgid "Horizontal offset of origin" msgstr "" #: ../libvips/conversion/copy.c:347 ../libvips/iofuncs/image.c:1193 msgid "Yoffset" msgstr "" #: ../libvips/conversion/copy.c:348 ../libvips/iofuncs/image.c:1194 msgid "Vertical offset of origin" msgstr "" #: ../libvips/conversion/bandjoin.c:170 msgid "bandwise join a set of images" msgstr "" #: ../libvips/conversion/bandjoin.c:389 msgid "append a constant band to an image" msgstr "" #: ../libvips/conversion/bandjoin.c:401 msgid "Constants" msgstr "" #: ../libvips/conversion/bandjoin.c:402 msgid "Array of constants to add" msgstr "" #: ../libvips/conversion/rot45.c:263 ../libvips/conversion/rot.c:355 msgid "rotate an image" msgstr "" #: ../libvips/conversion/rot45.c:273 ../libvips/conversion/autorot.c:184 #: ../libvips/conversion/rot.c:365 ../libvips/convolution/compass.c:157 #: ../libvips/foreign/dzsave.c:2178 ../libvips/mosaicing/mosaic.c:282 #: ../libvips/resample/similarity.c:178 msgid "Angle" msgstr "" #: ../libvips/conversion/rot45.c:274 ../libvips/conversion/rot.c:366 msgid "Angle to rotate image" msgstr "" #: ../libvips/conversion/msb.c:166 msgid "bad band" msgstr "" #: ../libvips/conversion/msb.c:238 msgid "pick most-significant byte from an image" msgstr "" #: ../libvips/conversion/msb.c:251 msgid "Band to msb" msgstr "" #: ../libvips/conversion/extract.c:150 msgid "bad extract area" msgstr "" #: ../libvips/conversion/extract.c:193 msgid "extract an area from an image" msgstr "" #: ../libvips/conversion/extract.c:387 msgid "bad extract band" msgstr "" #: ../libvips/conversion/extract.c:416 msgid "extract band from an image" msgstr "" #: ../libvips/conversion/extract.c:429 msgid "Band to extract" msgstr "" #: ../libvips/conversion/extract.c:435 ../libvips/foreign/magickload.c:138 #: ../libvips/foreign/gifload.c:823 ../libvips/foreign/magick7load.c:400 #: ../libvips/foreign/pdfload.c:475 ../libvips/foreign/tiffload.c:106 msgid "n" msgstr "" #: ../libvips/conversion/extract.c:436 msgid "Number of bands to extract" msgstr "" #: ../libvips/conversion/cast.c:131 #, c-format msgid "%d underflows and %d overflows detected" msgstr "" #: ../libvips/conversion/cast.c:542 msgid "cast an image" msgstr "" #: ../libvips/conversion/cast.c:555 msgid "Format to cast to" msgstr "" #: ../libvips/conversion/cast.c:561 msgid "Shift" msgstr "" #: ../libvips/conversion/cast.c:562 msgid "Shift integer values up and down" msgstr "" #: ../libvips/conversion/bandunfold.c:125 msgid "@factor must be a factor of image bands" msgstr "" #: ../libvips/conversion/bandunfold.c:157 msgid "unfold image bands into x axis" msgstr "" #: ../libvips/conversion/bandunfold.c:170 msgid "Unfold by this factor" msgstr "" #: ../libvips/conversion/tilecache.c:410 ../libvips/conversion/cache.c:97 msgid "cache an image" msgstr "" #: ../libvips/conversion/tilecache.c:422 ../libvips/conversion/sequential.c:340 #: ../libvips/conversion/cache.c:114 ../libvips/conversion/grid.c:205 #: ../libvips/foreign/tiffsave.c:225 ../libvips/foreign/dzsave.c:2224 msgid "Tile height" msgstr "" #: ../libvips/conversion/tilecache.c:423 ../libvips/conversion/sequential.c:341 #: ../libvips/conversion/cache.c:115 ../libvips/foreign/tiffsave.c:226 #: ../libvips/foreign/dzsave.c:2225 msgid "Tile height in pixels" msgstr "" #: ../libvips/conversion/tilecache.c:429 ../libvips/conversion/tilecache.c:999 #: ../libvips/foreign/foreign.c:1004 msgid "Access" msgstr "" #: ../libvips/conversion/tilecache.c:430 ../libvips/conversion/tilecache.c:1000 #: ../libvips/conversion/sequential.c:348 msgid "Expected access pattern" msgstr "" #: ../libvips/conversion/tilecache.c:436 msgid "Threaded" msgstr "" #: ../libvips/conversion/tilecache.c:437 msgid "Allow threaded access" msgstr "" #: ../libvips/conversion/tilecache.c:443 msgid "Persistent" msgstr "" #: ../libvips/conversion/tilecache.c:444 msgid "Keep cache between evaluations" msgstr "" #: ../libvips/conversion/tilecache.c:704 #, c-format msgid "error in tile %d x %d" msgstr "" #: ../libvips/conversion/tilecache.c:795 msgid "cache an image as a set of tiles" msgstr "" #: ../libvips/conversion/tilecache.c:799 ../libvips/conversion/cache.c:107 #: ../libvips/foreign/tiffsave.c:218 ../libvips/foreign/dzsave.c:2217 msgid "Tile width" msgstr "" #: ../libvips/conversion/tilecache.c:800 ../libvips/conversion/cache.c:108 #: ../libvips/foreign/tiffsave.c:219 ../libvips/foreign/dzsave.c:2218 msgid "Tile width in pixels" msgstr "" #: ../libvips/conversion/tilecache.c:806 ../libvips/conversion/cache.c:121 msgid "Max tiles" msgstr "" #: ../libvips/conversion/tilecache.c:807 ../libvips/conversion/cache.c:122 msgid "Maximum number of tiles to cache" msgstr "" #: ../libvips/conversion/tilecache.c:995 msgid "cache an image as a set of lines" msgstr "" #: ../libvips/conversion/sequential.c:323 msgid "check sequential access" msgstr "" #: ../libvips/conversion/sequential.c:333 msgid "trace" msgstr "" #: ../libvips/conversion/sequential.c:334 msgid "trace pixel requests" msgstr "" #: ../libvips/conversion/sequential.c:347 msgid "Strategy" msgstr "" #: ../libvips/conversion/premultiply.c:253 msgid "premultiply image alpha" msgstr "" #: ../libvips/conversion/bandmean.c:192 msgid "band-wise average" msgstr "" #: ../libvips/conversion/bandmean.c:199 ../libvips/conversion/bandbool.c:215 #: ../libvips/conversion/recomb.c:208 ../libvips/convolution/convolution.c:130 #: ../libvips/convolution/correlation.c:152 #: ../libvips/morphology/morphology.c:118 ../libvips/resample/resample.c:133 msgid "Input image argument" msgstr "" #: ../libvips/conversion/falsecolour.c:375 msgid "false-color an image" msgstr "false-colour an image" #: ../libvips/conversion/byteswap.c:200 msgid "byteswap an image" msgstr "" #: ../libvips/conversion/subsample.c:230 ../libvips/resample/shrinkv.c:393 #: ../libvips/resample/shrinkh.c:289 ../libvips/resample/reduceh.cpp:528 #: ../libvips/resample/reducev.cpp:801 msgid "image has shrunk to nothing" msgstr "" #: ../libvips/conversion/subsample.c:266 msgid "subsample an image" msgstr "" #: ../libvips/conversion/subsample.c:281 msgid "Horizontal subsample factor" msgstr "" #: ../libvips/conversion/subsample.c:288 msgid "Vertical subsample factor" msgstr "" #: ../libvips/conversion/subsample.c:294 msgid "Point" msgstr "" #: ../libvips/conversion/subsample.c:295 msgid "Point sample" msgstr "" #: ../libvips/conversion/bandbool.c:75 #, c-format msgid "operator %s not supported across image bands" msgstr "" #: ../libvips/conversion/bandbool.c:207 msgid "boolean operation across image bands" msgstr "" #: ../libvips/conversion/recomb.c:166 msgid "bands in must equal matrix width" msgstr "" #: ../libvips/conversion/recomb.c:201 msgid "linear recombination with matrix" msgstr "" #: ../libvips/conversion/recomb.c:213 msgid "M" msgstr "" #: ../libvips/conversion/recomb.c:214 msgid "matrix of coefficients" msgstr "" #: ../libvips/conversion/bandary.c:135 msgid "no input images" msgstr "" #: ../libvips/conversion/bandary.c:186 msgid "operations on image bands" msgstr "" #: ../libvips/conversion/ifthenelse.c:479 msgid "ifthenelse an image" msgstr "" #: ../libvips/conversion/ifthenelse.c:483 msgid "Condition" msgstr "" #: ../libvips/conversion/ifthenelse.c:484 msgid "Condition input image" msgstr "" #: ../libvips/conversion/ifthenelse.c:489 msgid "Then image" msgstr "" #: ../libvips/conversion/ifthenelse.c:490 msgid "Source for TRUE pixels" msgstr "" #: ../libvips/conversion/ifthenelse.c:495 msgid "Else image" msgstr "" #: ../libvips/conversion/ifthenelse.c:496 msgid "Source for FALSE pixels" msgstr "" #: ../libvips/conversion/ifthenelse.c:501 msgid "blend" msgstr "" #: ../libvips/conversion/ifthenelse.c:502 msgid "Blend smoothly between then and else parts" msgstr "" #: ../libvips/conversion/gamma.c:137 msgid "gamma an image" msgstr "" #: ../libvips/conversion/gamma.c:149 msgid "exponent" msgstr "" #: ../libvips/conversion/gamma.c:150 msgid "Gamma factor" msgstr "" #: ../libvips/conversion/join.c:228 msgid "join a pair of images" msgstr "" #: ../libvips/conversion/join.c:232 msgid "in1" msgstr "" #: ../libvips/conversion/join.c:233 msgid "First input image" msgstr "" #: ../libvips/conversion/join.c:238 ../libvips/freqfilt/phasecor.c:112 msgid "in2" msgstr "" #: ../libvips/conversion/join.c:239 ../libvips/freqfilt/phasecor.c:113 msgid "Second input image" msgstr "" #: ../libvips/conversion/join.c:244 ../libvips/morphology/countlines.c:142 msgid "direction" msgstr "" #: ../libvips/conversion/join.c:245 msgid "Join left-right or up-down" msgstr "" #: ../libvips/conversion/join.c:251 ../libvips/conversion/insert.c:543 msgid "Expand" msgstr "" #: ../libvips/conversion/join.c:252 ../libvips/conversion/insert.c:544 msgid "Expand output to hold all of both inputs" msgstr "" #: ../libvips/conversion/join.c:272 ../libvips/create/text.c:304 msgid "Align" msgstr "" #: ../libvips/conversion/join.c:273 msgid "Align on the low, centre or high coordinate edge" msgstr "" #: ../libvips/conversion/grid.c:165 msgid "bad grid geometry" msgstr "" #: ../libvips/conversion/grid.c:195 msgid "grid an image" msgstr "" #: ../libvips/conversion/grid.c:206 msgid "chop into tiles this high" msgstr "" #: ../libvips/conversion/grid.c:213 msgid "number of tiles across" msgstr "" #: ../libvips/conversion/grid.c:220 msgid "number of tiles down" msgstr "" #: ../libvips/conversion/scale.c:147 msgid "scale an image to uchar" msgstr "" #: ../libvips/conversion/scale.c:157 ../libvips/iofuncs/system.c:311 msgid "Log" msgstr "" #: ../libvips/conversion/scale.c:158 msgid "Log scale" msgstr "" #: ../libvips/conversion/scale.c:164 msgid "Exponent" msgstr "" #: ../libvips/conversion/scale.c:165 msgid "Exponent for log scale" msgstr "" #: ../libvips/conversion/insert.c:509 msgid "insert image @sub into @main at @x, @y" msgstr "" #: ../libvips/conversion/insert.c:517 msgid "Main" msgstr "" #: ../libvips/conversion/insert.c:518 msgid "Main input image" msgstr "" #: ../libvips/conversion/insert.c:523 ../libvips/draw/draw_image.c:259 msgid "Sub-image" msgstr "" #: ../libvips/conversion/insert.c:524 ../libvips/draw/draw_image.c:260 msgid "Sub-image to insert into main image" msgstr "" #: ../libvips/conversion/insert.c:529 msgid "X" msgstr "" #: ../libvips/conversion/insert.c:530 msgid "Left edge of sub in main" msgstr "" #: ../libvips/conversion/insert.c:536 msgid "Y" msgstr "" #: ../libvips/conversion/insert.c:537 msgid "Top edge of sub in main" msgstr "" #: ../libvips/conversion/insert.c:551 msgid "Color for new pixels" msgstr "" #: ../libvips/conversion/autorot.c:174 msgid "autorotate image by exif tag" msgstr "" #: ../libvips/conversion/autorot.c:185 msgid "Angle image was rotated by" msgstr "" #: ../libvips/conversion/bandrank.c:238 msgid "band-wise rank of a set of images" msgstr "" #: ../libvips/conversion/bandrank.c:252 msgid "Select this band element from sorted list" msgstr "" #: ../libvips/convolution/spcor.c:315 msgid "spatial correlation" msgstr "" #: ../libvips/convolution/conva.c:237 ../libvips/convolution/conva.c:243 #: ../libvips/convolution/conva.c:760 ../libvips/convolution/convasep.c:152 msgid "mask too complex" msgstr "" #: ../libvips/convolution/conva.c:988 ../libvips/convolution/conva.c:1216 #: ../libvips/convolution/convasep.c:823 ../libvips/morphology/hitmiss.c:732 msgid "image too small for mask" msgstr "" #: ../libvips/convolution/conva.c:1288 msgid "approximate integer convolution" msgstr "" #: ../libvips/convolution/conva.c:1292 ../libvips/convolution/compass.c:178 #: ../libvips/convolution/convasep.c:901 ../libvips/convolution/convsep.c:134 #: ../libvips/convolution/conv.c:143 msgid "Layers" msgstr "" #: ../libvips/convolution/conva.c:1293 ../libvips/convolution/compass.c:179 #: ../libvips/convolution/convasep.c:902 ../libvips/convolution/convsep.c:135 #: ../libvips/convolution/conv.c:144 msgid "Use this many layers in approximation" msgstr "" #: ../libvips/convolution/conva.c:1299 ../libvips/convolution/compass.c:185 #: ../libvips/convolution/convsep.c:141 ../libvips/convolution/conv.c:150 msgid "Cluster" msgstr "" #: ../libvips/convolution/conva.c:1300 ../libvips/convolution/compass.c:186 #: ../libvips/convolution/convsep.c:142 ../libvips/convolution/conv.c:151 msgid "Cluster lines closer than this in approximation" msgstr "" #: ../libvips/convolution/fastcor.c:215 msgid "fast correlation" msgstr "" #: ../libvips/convolution/convi.c:1012 msgid "int convolution operation" msgstr "" #: ../libvips/convolution/compass.c:146 msgid "convolve with rotating mask" msgstr "" #: ../libvips/convolution/compass.c:150 msgid "Times" msgstr "" #: ../libvips/convolution/compass.c:151 msgid "Rotate and convolve this many times" msgstr "" #: ../libvips/convolution/compass.c:158 msgid "Rotate mask by this much between convolutions" msgstr "" #: ../libvips/convolution/compass.c:164 msgid "Combine" msgstr "" #: ../libvips/convolution/compass.c:165 msgid "Combine convolution results like this" msgstr "" #: ../libvips/convolution/compass.c:171 ../libvips/convolution/gaussblur.c:145 #: ../libvips/convolution/convsep.c:127 ../libvips/convolution/conv.c:136 #: ../libvips/create/logmat.c:229 ../libvips/create/gaussmat.c:212 msgid "Precision" msgstr "" #: ../libvips/convolution/compass.c:172 ../libvips/convolution/gaussblur.c:146 #: ../libvips/convolution/convsep.c:128 ../libvips/convolution/conv.c:137 msgid "Convolve with this precision" msgstr "" #: ../libvips/convolution/convolution.c:120 msgid "convolution operations" msgstr "" #: ../libvips/convolution/convolution.c:141 #: ../libvips/convolution/correlation.c:157 ../libvips/draw/draw_mask.c:323 #: ../libvips/morphology/morph.c:149 ../libvips/morphology/labelregions.c:125 msgid "Mask" msgstr "" #: ../libvips/convolution/convolution.c:142 ../libvips/morphology/morph.c:150 msgid "Input matrix image" msgstr "" #: ../libvips/convolution/convf.c:365 msgid "float convolution operation" msgstr "" #: ../libvips/convolution/gaussblur.c:113 msgid "gaussian blur" msgstr "" #: ../libvips/convolution/gaussblur.c:131 ../libvips/convolution/sharpen.c:325 #: ../libvips/create/gaussmat.c:184 ../libvips/create/gaussnoise.c:193 msgid "Sigma" msgstr "" #: ../libvips/convolution/gaussblur.c:132 ../libvips/convolution/sharpen.c:326 #: ../libvips/create/gaussmat.c:185 msgid "Sigma of Gaussian" msgstr "" #: ../libvips/convolution/gaussblur.c:138 ../libvips/create/gaussmat.c:191 msgid "Minimum amplitude" msgstr "" #: ../libvips/convolution/gaussblur.c:139 ../libvips/create/gaussmat.c:192 msgid "Minimum amplitude of Gaussian" msgstr "" #: ../libvips/convolution/convasep.c:897 msgid "approximate separable integer convolution" msgstr "" #: ../libvips/convolution/convsep.c:123 msgid "seperable convolution operation" msgstr "" #: ../libvips/convolution/sharpen.c:307 msgid "unsharp masking for print" msgstr "" #: ../libvips/convolution/sharpen.c:332 ../libvips/draw/draw_line.c:284 msgid "x1" msgstr "" #: ../libvips/convolution/sharpen.c:333 msgid "Flat/jaggy threshold" msgstr "" #: ../libvips/convolution/sharpen.c:339 ../libvips/draw/draw_line.c:305 msgid "y2" msgstr "" #: ../libvips/convolution/sharpen.c:340 msgid "Maximum brightening" msgstr "" #: ../libvips/convolution/sharpen.c:346 msgid "y3" msgstr "" #: ../libvips/convolution/sharpen.c:347 msgid "Maximum darkening" msgstr "" #: ../libvips/convolution/sharpen.c:353 msgid "m1" msgstr "" #: ../libvips/convolution/sharpen.c:354 msgid "Slope for flat areas" msgstr "" #: ../libvips/convolution/sharpen.c:360 msgid "m2" msgstr "" #: ../libvips/convolution/sharpen.c:361 msgid "Slope for jaggy areas" msgstr "" #: ../libvips/convolution/sharpen.c:369 ../libvips/create/logmat.c:201 #: ../libvips/draw/draw_circle.c:249 msgid "Radius" msgstr "" #: ../libvips/convolution/sharpen.c:370 msgid "radius of Gaussian" msgstr "" #: ../libvips/convolution/conv.c:132 msgid "convolution operation" msgstr "" #: ../libvips/convolution/correlation.c:145 msgid "correlation operation" msgstr "" #: ../libvips/convolution/correlation.c:158 msgid "Input reference image" msgstr "" #: ../libvips/create/sines.c:121 msgid "make a 2D sine wave" msgstr "" #: ../libvips/create/sines.c:127 msgid "hfreq" msgstr "" #: ../libvips/create/sines.c:128 msgid "Horizontal spatial frequency" msgstr "" #: ../libvips/create/sines.c:134 msgid "vfreq" msgstr "" #: ../libvips/create/sines.c:135 msgid "Vertical spatial frequency" msgstr "" #: ../libvips/create/grey.c:89 msgid "make a grey ramp image" msgstr "" #: ../libvips/create/mask_ideal.c:79 msgid "make an ideal filter" msgstr "" #: ../libvips/create/mask_ideal.c:84 ../libvips/create/mask_ideal.c:85 #: ../libvips/create/mask_gaussian.c:86 ../libvips/create/mask_gaussian.c:87 #: ../libvips/create/mask_butterworth.c:95 #: ../libvips/create/mask_butterworth.c:96 msgid "Frequency cutoff" msgstr "" #: ../libvips/create/create.c:97 msgid "create operations" msgstr "" #: ../libvips/create/mask_gaussian.c:81 #: ../libvips/create/mask_gaussian_band.c:102 msgid "make a gaussian filter" msgstr "" #: ../libvips/create/mask_gaussian.c:93 ../libvips/create/mask_gaussian.c:94 #: ../libvips/create/mask_butterworth_band.c:141 #: ../libvips/create/mask_butterworth_band.c:142 #: ../libvips/create/mask_butterworth.c:102 #: ../libvips/create/mask_butterworth.c:103 #: ../libvips/create/mask_gaussian_band.c:128 #: ../libvips/create/mask_gaussian_band.c:129 msgid "Amplitude cutoff" msgstr "" #: ../libvips/create/xyz.c:139 msgid "lower dimensions not set" msgstr "" #: ../libvips/create/xyz.c:156 msgid "image too large" msgstr "" #: ../libvips/create/xyz.c:189 msgid "make an image where pixel values are coordinates" msgstr "" #: ../libvips/create/xyz.c:207 msgid "csize" msgstr "" #: ../libvips/create/xyz.c:208 msgid "Size of third dimension" msgstr "" #: ../libvips/create/xyz.c:214 msgid "dsize" msgstr "" #: ../libvips/create/xyz.c:215 msgid "Size of fourth dimension" msgstr "" #: ../libvips/create/xyz.c:221 msgid "esize" msgstr "" #: ../libvips/create/xyz.c:222 msgid "Size of fifth dimension" msgstr "" #: ../libvips/create/invertlut.c:124 msgid "bad input matrix" msgstr "" #: ../libvips/create/invertlut.c:129 msgid "bad size" msgstr "" #: ../libvips/create/invertlut.c:149 #, c-format msgid "element (%d, %d) is %g, outside range [0,1]" msgstr "" #: ../libvips/create/invertlut.c:285 msgid "build an inverted look-up table" msgstr "" #: ../libvips/create/invertlut.c:290 ../libvips/create/buildlut.c:262 msgid "Matrix of XY coordinates" msgstr "" #: ../libvips/create/invertlut.c:296 msgid "LUT size to generate" msgstr "" #: ../libvips/create/mask_butterworth_ring.c:101 msgid "make a butterworth ring filter" msgstr "" #: ../libvips/create/mask_butterworth_ring.c:106 #: ../libvips/create/mask_butterworth_ring.c:107 #: ../libvips/create/mask_gaussian_ring.c:101 #: ../libvips/create/mask_gaussian_ring.c:102 #: ../libvips/create/mask_ideal_ring.c:98 #: ../libvips/create/mask_ideal_ring.c:99 msgid "Ringwidth" msgstr "" #: ../libvips/create/logmat.c:147 ../libvips/create/gaussmat.c:133 msgid "mask too large" msgstr "" #: ../libvips/create/logmat.c:197 msgid "make a laplacian of gaussian image" msgstr "" #: ../libvips/create/logmat.c:202 msgid "Radius of Logmatian" msgstr "" #: ../libvips/create/logmat.c:209 msgid "Minimum amplitude of Logmatian" msgstr "" #: ../libvips/create/logmat.c:215 ../libvips/create/gaussmat.c:198 msgid "Separable" msgstr "" #: ../libvips/create/logmat.c:216 msgid "Generate separable Logmatian" msgstr "" #: ../libvips/create/logmat.c:222 ../libvips/create/gaussmat.c:205 msgid "Integer" msgstr "" #: ../libvips/create/logmat.c:223 msgid "Generate integer Logmatian" msgstr "" #: ../libvips/create/logmat.c:230 ../libvips/create/gaussmat.c:213 msgid "Generate with this precision" msgstr "" #: ../libvips/create/gaussmat.c:180 msgid "make a gaussian image" msgstr "" #: ../libvips/create/gaussmat.c:199 msgid "Generate separable Gaussian" msgstr "" #: ../libvips/create/gaussmat.c:206 msgid "Generate integer Gaussian" msgstr "" #: ../libvips/create/worley.c:306 msgid "make a worley noise image" msgstr "" #: ../libvips/create/worley.c:324 ../libvips/create/perlin.c:311 msgid "Cell size" msgstr "" #: ../libvips/create/worley.c:325 msgid "Size of Worley cells" msgstr "" #: ../libvips/create/mask_gaussian_ring.c:96 msgid "make a gaussian ring filter" msgstr "" #: ../libvips/create/gaussnoise.c:164 msgid "make a gaussnoise image" msgstr "" #: ../libvips/create/gaussnoise.c:186 ../libvips/histogram/stdif.c:329 msgid "Mean" msgstr "" #: ../libvips/create/gaussnoise.c:187 msgid "Mean of pixels in generated image" msgstr "" #: ../libvips/create/gaussnoise.c:194 msgid "Standard deviation of pixels in generated image" msgstr "" #: ../libvips/create/zone.c:90 msgid "make a zone plate" msgstr "" #: ../libvips/create/tonelut.c:221 ../libvips/create/buildlut.c:257 msgid "build a look-up table" msgstr "" #: ../libvips/create/tonelut.c:225 msgid "In-max" msgstr "" #: ../libvips/create/tonelut.c:226 msgid "Size of LUT to build" msgstr "" #: ../libvips/create/tonelut.c:232 msgid "Out-max" msgstr "" #: ../libvips/create/tonelut.c:233 msgid "Maximum value in output LUT" msgstr "" #: ../libvips/create/tonelut.c:239 msgid "Black point" msgstr "" #: ../libvips/create/tonelut.c:240 msgid "Lowest value in output" msgstr "" #: ../libvips/create/tonelut.c:246 msgid "White point" msgstr "" #: ../libvips/create/tonelut.c:247 msgid "Highest value in output" msgstr "" #: ../libvips/create/tonelut.c:253 msgid "Shadow point" msgstr "" #: ../libvips/create/tonelut.c:254 msgid "Position of shadow" msgstr "" #: ../libvips/create/tonelut.c:260 msgid "Mid-tone point" msgstr "" #: ../libvips/create/tonelut.c:261 msgid "Position of mid-tones" msgstr "" #: ../libvips/create/tonelut.c:267 msgid "Highlight point" msgstr "" #: ../libvips/create/tonelut.c:268 msgid "Position of highlights" msgstr "" #: ../libvips/create/tonelut.c:274 msgid "Shadow adjust" msgstr "" #: ../libvips/create/tonelut.c:275 msgid "Adjust shadows by this much" msgstr "" #: ../libvips/create/tonelut.c:281 msgid "Mid-tone adjust" msgstr "" #: ../libvips/create/tonelut.c:282 msgid "Adjust mid-tones by this much" msgstr "" #: ../libvips/create/tonelut.c:288 msgid "Highlight adjust" msgstr "" #: ../libvips/create/tonelut.c:289 msgid "Adjust highlights by this much" msgstr "" #: ../libvips/create/perlin.c:293 msgid "make a perlin noise image" msgstr "" #: ../libvips/create/perlin.c:312 msgid "Size of Perlin cells" msgstr "" #: ../libvips/create/perlin.c:318 ../libvips/create/point.c:157 msgid "Uchar" msgstr "" #: ../libvips/create/perlin.c:319 ../libvips/create/point.c:158 msgid "Output an unsigned char image" msgstr "" #: ../libvips/create/point.c:134 msgid "make a point image" msgstr "" #: ../libvips/create/mask.c:111 msgid "base class for frequency filters" msgstr "" #: ../libvips/create/mask.c:119 msgid "Optical" msgstr "" #: ../libvips/create/mask.c:120 msgid "Rotate quadrants to optical space" msgstr "" #: ../libvips/create/mask.c:126 msgid "Reject" msgstr "" #: ../libvips/create/mask.c:127 msgid "Invert the sense of the filter" msgstr "" #: ../libvips/create/mask.c:133 msgid "Nodc" msgstr "" #: ../libvips/create/mask.c:134 msgid "Remove DC component" msgstr "" #: ../libvips/create/mask_butterworth_band.c:108 msgid "make a butterworth_band filter" msgstr "" #: ../libvips/create/mask_butterworth_band.c:113 #: ../libvips/create/mask_butterworth.c:88 msgid "Order" msgstr "" #: ../libvips/create/mask_butterworth_band.c:114 #: ../libvips/create/mask_butterworth.c:89 msgid "Filter order" msgstr "" #: ../libvips/create/mask_butterworth_band.c:120 #: ../libvips/create/mask_butterworth_band.c:121 #: ../libvips/create/mask_gaussian_band.c:107 #: ../libvips/create/mask_gaussian_band.c:108 #: ../libvips/create/mask_ideal_band.c:98 #: ../libvips/create/mask_ideal_band.c:99 msgid "Frequency cutoff x" msgstr "" #: ../libvips/create/mask_butterworth_band.c:127 #: ../libvips/create/mask_butterworth_band.c:128 #: ../libvips/create/mask_gaussian_band.c:114 #: ../libvips/create/mask_gaussian_band.c:115 #: ../libvips/create/mask_ideal_band.c:105 #: ../libvips/create/mask_ideal_band.c:106 msgid "Frequency cutoff y" msgstr "" #: ../libvips/create/mask_butterworth_band.c:134 #: ../libvips/create/mask_gaussian_band.c:121 #: ../libvips/create/mask_ideal_band.c:112 msgid "radius" msgstr "" #: ../libvips/create/mask_butterworth_band.c:135 #: ../libvips/create/mask_gaussian_band.c:122 #: ../libvips/create/mask_ideal_band.c:113 msgid "radius of circle" msgstr "" #: ../libvips/create/mask_ideal_ring.c:93 msgid "make an ideal ring filter" msgstr "" #: ../libvips/create/mask_butterworth.c:83 msgid "make a butterworth filter" msgstr "" #: ../libvips/create/fractsurf.c:98 msgid "make a fractal surface" msgstr "" #: ../libvips/create/fractsurf.c:116 ../libvips/create/fractsurf.c:117 #: ../libvips/create/mask_fractal.c:93 ../libvips/create/mask_fractal.c:94 msgid "Fractal dimension" msgstr "" #: ../libvips/create/identity.c:140 msgid "make a 1D image where pixel values are indexes" msgstr "" #: ../libvips/create/identity.c:145 msgid "Number of bands in LUT" msgstr "" #: ../libvips/create/identity.c:151 msgid "Ushort" msgstr "" #: ../libvips/create/identity.c:152 msgid "Create a 16-bit LUT" msgstr "" #: ../libvips/create/identity.c:159 msgid "Size of 16-bit LUT" msgstr "" #: ../libvips/create/text.c:170 msgid "invalid markup in text" msgstr "" #: ../libvips/create/text.c:212 msgid "no text to render" msgstr "" #: ../libvips/create/text.c:279 msgid "make a text image" msgstr "" #: ../libvips/create/text.c:283 msgid "Text" msgstr "" #: ../libvips/create/text.c:284 msgid "Text to render" msgstr "" #: ../libvips/create/text.c:290 msgid "Font" msgstr "" #: ../libvips/create/text.c:291 msgid "Font to render with" msgstr "" #: ../libvips/create/text.c:298 msgid "Maximum image width in pixels" msgstr "" #: ../libvips/create/text.c:305 msgid "Align on the low, centre or high edge" msgstr "" #: ../libvips/create/text.c:311 ../libvips/foreign/pdfload.c:482 #: ../libvips/foreign/svgload.c:283 msgid "DPI" msgstr "" #: ../libvips/create/text.c:312 msgid "DPI to render at" msgstr "" #: ../libvips/create/text.c:318 msgid "Spacing" msgstr "" #: ../libvips/create/text.c:319 msgid "Line spacing" msgstr "" #: ../libvips/create/mask_fractal.c:88 msgid "make fractal filter" msgstr "" #: ../libvips/create/eye.c:98 msgid "make an image showing the eye's spatial response" msgstr "" #: ../libvips/create/eye.c:104 msgid "Maximum spatial frequency" msgstr "" #: ../libvips/create/black.c:125 msgid "make a black image" msgstr "" #: ../libvips/create/mask_ideal_band.c:93 msgid "make an ideal band filter" msgstr "" #: ../libvips/create/buildlut.c:134 #, c-format msgid "x value row %d not an int" msgstr "" #: ../libvips/create/buildlut.c:149 msgid "x range too small" msgstr "" #: ../libvips/draw/draw_line.c:280 msgid "draw a line on an image" msgstr "" #: ../libvips/draw/draw_line.c:285 ../libvips/draw/draw_line.c:292 msgid "Start of draw_line" msgstr "" #: ../libvips/draw/draw_line.c:291 msgid "y1" msgstr "" #: ../libvips/draw/draw_line.c:298 msgid "x2" msgstr "" #: ../libvips/draw/draw_line.c:299 ../libvips/draw/draw_line.c:306 msgid "End of draw_line" msgstr "" #: ../libvips/draw/draw_image.c:255 msgid "paint an image into another image" msgstr "" #: ../libvips/draw/draw_image.c:266 ../libvips/draw/draw_image.c:273 msgid "Draw image here" msgstr "" #: ../libvips/draw/draw_image.c:279 ../libvips/iofuncs/image.c:1207 msgid "Mode" msgstr "" #: ../libvips/draw/draw_image.c:280 msgid "Combining mode" msgstr "" #: ../libvips/draw/draw_mask.c:319 msgid "draw a mask on an image" msgstr "" #: ../libvips/draw/draw_mask.c:324 msgid "Mask of pixels to draw" msgstr "" #: ../libvips/draw/draw_mask.c:330 ../libvips/draw/draw_mask.c:337 msgid "Draw mask here" msgstr "" #: ../libvips/draw/draw.c:129 msgid "draw operations" msgstr "" #: ../libvips/draw/draw.c:133 msgid "Image" msgstr "" #: ../libvips/draw/draw.c:134 msgid "Image to draw on" msgstr "" #: ../libvips/draw/draw_smudge.c:193 msgid "blur a rectangle on an image" msgstr "" #: ../libvips/draw/draw_smudge.c:198 ../libvips/draw/draw_smudge.c:205 #: ../libvips/draw/draw_smudge.c:212 ../libvips/draw/draw_smudge.c:219 #: ../libvips/draw/draw_rect.c:174 ../libvips/draw/draw_rect.c:181 #: ../libvips/draw/draw_rect.c:188 ../libvips/draw/draw_rect.c:195 msgid "Rect to fill" msgstr "" #: ../libvips/draw/draw_smudge.c:204 ../libvips/draw/draw_rect.c:180 msgid "top" msgstr "" #: ../libvips/draw/draw_smudge.c:211 ../libvips/draw/draw_rect.c:187 msgid "width" msgstr "" #: ../libvips/draw/draw_smudge.c:218 ../libvips/draw/draw_rect.c:194 msgid "height" msgstr "" #: ../libvips/draw/drawink.c:86 msgid "draw with ink operations" msgstr "" #: ../libvips/draw/drawink.c:90 msgid "Ink" msgstr "" #: ../libvips/draw/drawink.c:91 msgid "Color for pixels" msgstr "" #: ../libvips/draw/draw_circle.c:231 msgid "draw a circle on an image" msgstr "" #: ../libvips/draw/draw_circle.c:235 msgid "cx" msgstr "" #: ../libvips/draw/draw_circle.c:236 ../libvips/draw/draw_circle.c:243 msgid "Centre of draw_circle" msgstr "" #: ../libvips/draw/draw_circle.c:242 msgid "cy" msgstr "" #: ../libvips/draw/draw_circle.c:250 msgid "Radius in pixels" msgstr "" #: ../libvips/draw/draw_circle.c:256 ../libvips/draw/draw_rect.c:201 msgid "Fill" msgstr "" #: ../libvips/draw/draw_circle.c:257 ../libvips/draw/draw_rect.c:202 msgid "Draw a solid object" msgstr "" #: ../libvips/draw/draw_flood.c:548 msgid "flood-fill an area" msgstr "" #: ../libvips/draw/draw_flood.c:553 ../libvips/draw/draw_flood.c:560 msgid "DrawFlood start point" msgstr "" #: ../libvips/draw/draw_flood.c:566 msgid "Test" msgstr "" #: ../libvips/draw/draw_flood.c:567 msgid "Test pixels in this image" msgstr "" #: ../libvips/draw/draw_flood.c:572 msgid "Equal" msgstr "" #: ../libvips/draw/draw_flood.c:573 msgid "DrawFlood while equal to edge" msgstr "" #: ../libvips/draw/draw_flood.c:580 msgid "Left edge of modified area" msgstr "" #: ../libvips/draw/draw_flood.c:587 msgid "top edge of modified area" msgstr "" #: ../libvips/draw/draw_flood.c:594 msgid "width of modified area" msgstr "" #: ../libvips/draw/draw_flood.c:601 msgid "height of modified area" msgstr "" #: ../libvips/draw/draw_rect.c:169 msgid "paint a rectangle on an image" msgstr "" #: ../libvips/foreign/foreign.c:357 msgid "load and save image files" msgstr "" #: ../libvips/foreign/foreign.c:520 ../libvips/mosaicing/im_remosaic.c:87 #, c-format msgid "file \"%s\" not found" msgstr "" #: ../libvips/foreign/foreign.c:529 ../libvips/foreign/foreign.c:1592 #, c-format msgid "\"%s\" is not a known file format" msgstr "" #: ../libvips/foreign/foreign.c:605 msgid "buffer is not in a known format" msgstr "" #: ../libvips/foreign/foreign.c:773 msgid "images do not match" msgstr "" #: ../libvips/foreign/foreign.c:880 msgid "" "VIPS_FOREIGN_PARTIAL and VIPS_FOREIGN_SEQUENTIAL both set -- using SEQUENTIAL" msgstr "" #: ../libvips/foreign/foreign.c:900 msgid "" "ignoring deprecated \"sequential\" mode -- please use \"access\" instead" msgstr "" #: ../libvips/foreign/foreign.c:979 msgid "file loaders" msgstr "" #: ../libvips/foreign/foreign.c:990 msgid "Flags" msgstr "" #: ../libvips/foreign/foreign.c:991 msgid "Flags for this file" msgstr "" #: ../libvips/foreign/foreign.c:997 msgid "Disc" msgstr "" #: ../libvips/foreign/foreign.c:998 msgid "Open to disc" msgstr "" #: ../libvips/foreign/foreign.c:1005 msgid "Required access pattern for this file" msgstr "" #: ../libvips/foreign/foreign.c:1011 msgid "Sequential" msgstr "" #: ../libvips/foreign/foreign.c:1012 msgid "Sequential read only" msgstr "" #: ../libvips/foreign/foreign.c:1018 msgid "Fail" msgstr "" #: ../libvips/foreign/foreign.c:1019 msgid "Fail on first warning" msgstr "" #: ../libvips/foreign/foreign.c:1499 msgid "file savers" msgstr "" #: ../libvips/foreign/foreign.c:1523 msgid "Image to save" msgstr "" #: ../libvips/foreign/foreign.c:1528 msgid "Strip" msgstr "" #: ../libvips/foreign/foreign.c:1529 msgid "Strip all metadata from image" msgstr "" #: ../libvips/foreign/foreign.c:1667 #, c-format msgid "\"%s\" is not a known buffer format" msgstr "" #: ../libvips/foreign/ppm.c:116 msgid "bad int" msgstr "" #: ../libvips/foreign/ppm.c:128 msgid "bad float" msgstr "" #: ../libvips/foreign/ppm.c:179 msgid "bad magic number" msgstr "" #: ../libvips/foreign/ppm.c:230 msgid "not whitespace before start of binary data" msgstr "" #: ../libvips/foreign/ppm.c:621 ../libvips/foreign/ppm.c:638 #: ../libvips/foreign/ppm.c:672 ../libvips/foreign/ppm.c:686 msgid "write error" msgstr "" #: ../libvips/foreign/ppm.c:803 msgid "float images must be binary -- disabling ascii" msgstr "" #: ../libvips/foreign/ppm.c:813 ../libvips/foreign/vips2tiff.c:1001 msgid "can only squash 1 band uchar images -- disabling squash" msgstr "" #: ../libvips/foreign/csvsave.c:95 msgid "save image to csv file" msgstr "" #: ../libvips/foreign/csvsave.c:103 ../libvips/foreign/pngload.c:144 #: ../libvips/foreign/webpload.c:192 ../libvips/foreign/pngsave.c:189 #: ../libvips/foreign/fitsload.c:123 ../libvips/foreign/matrixsave.c:121 #: ../libvips/foreign/ppmsave.c:123 ../libvips/foreign/csvload.c:141 #: ../libvips/foreign/ppmload.c:135 ../libvips/foreign/magickload.c:223 #: ../libvips/foreign/gifload.c:892 ../libvips/foreign/magick7load.c:803 #: ../libvips/foreign/fitssave.c:138 ../libvips/foreign/pdfload.c:590 #: ../libvips/foreign/openslideload.c:187 ../libvips/foreign/rawload.c:116 #: ../libvips/foreign/tiffsave.c:362 ../libvips/foreign/svgload.c:368 #: ../libvips/foreign/radsave.c:154 ../libvips/foreign/dzsave.c:2319 #: ../libvips/foreign/radload.c:138 ../libvips/foreign/openexrload.c:144 #: ../libvips/foreign/vipssave.c:114 ../libvips/foreign/webpsave.c:214 #: ../libvips/foreign/rawsave.c:145 ../libvips/foreign/jpegsave.c:268 #: ../libvips/foreign/matrixload.c:153 ../libvips/foreign/jpegload.c:232 #: ../libvips/foreign/analyzeload.c:135 ../libvips/foreign/matload.c:133 #: ../libvips/foreign/vipsload.c:138 ../libvips/foreign/tiffload.c:223 #: ../libvips/iofuncs/image.c:1200 ../libvips/resample/thumbnail.c:669 msgid "Filename" msgstr "" #: ../libvips/foreign/csvsave.c:104 ../libvips/foreign/pngsave.c:190 #: ../libvips/foreign/matrixsave.c:122 ../libvips/foreign/ppmsave.c:124 #: ../libvips/foreign/fitssave.c:139 ../libvips/foreign/tiffsave.c:363 #: ../libvips/foreign/radsave.c:155 ../libvips/foreign/dzsave.c:2320 #: ../libvips/foreign/vipssave.c:115 ../libvips/foreign/webpsave.c:215 #: ../libvips/foreign/rawsave.c:146 ../libvips/foreign/jpegsave.c:269 msgid "Filename to save to" msgstr "" #: ../libvips/foreign/csvsave.c:110 ../libvips/foreign/csvload.c:169 msgid "Separator" msgstr "" #: ../libvips/foreign/csvsave.c:111 msgid "Separator characters" msgstr "" #: ../libvips/foreign/webp2vips.c:199 msgid "bad setting for shrink" msgstr "" #: ../libvips/foreign/webp2vips.c:247 msgid "unable to read image metadata" msgstr "" #: ../libvips/foreign/webp2vips.c:290 ../libvips/foreign/webp2vips.c:340 #: ../libvips/foreign/matlab.c:113 ../libvips/foreign/fits.c:189 #: ../libvips/iofuncs/vips.c:163 ../libvips/mosaicing/global_balance.c:1192 #: ../libvips/mosaicing/global_balance.c:1530 #, c-format msgid "unable to open \"%s\"" msgstr "" #: ../libvips/foreign/webp2vips.c:323 ../libvips/foreign/magick2vips.c:723 msgid "unable to read pixels" msgstr "" #: ../libvips/foreign/webp2vips.c:360 ../libvips/foreign/webp2vips.c:382 msgid "unable to open buffer" msgstr "" #: ../libvips/foreign/pngload.c:128 msgid "load png from file" msgstr "" #: ../libvips/foreign/pngload.c:145 ../libvips/foreign/webpload.c:193 #: ../libvips/foreign/fitsload.c:124 ../libvips/foreign/csvload.c:142 #: ../libvips/foreign/ppmload.c:136 ../libvips/foreign/magickload.c:224 #: ../libvips/foreign/gifload.c:893 ../libvips/foreign/magick7load.c:804 #: ../libvips/foreign/pdfload.c:591 ../libvips/foreign/openslideload.c:188 #: ../libvips/foreign/rawload.c:117 ../libvips/foreign/svgload.c:369 #: ../libvips/foreign/radload.c:139 ../libvips/foreign/openexrload.c:145 #: ../libvips/foreign/matrixload.c:154 ../libvips/foreign/jpegload.c:233 #: ../libvips/foreign/analyzeload.c:136 ../libvips/foreign/matload.c:134 #: ../libvips/foreign/vipsload.c:139 ../libvips/foreign/tiffload.c:224 msgid "Filename to load from" msgstr "" #: ../libvips/foreign/pngload.c:222 msgid "load png from buffer" msgstr "" #: ../libvips/foreign/pngload.c:230 ../libvips/foreign/webpload.c:268 #: ../libvips/foreign/pngsave.c:255 ../libvips/foreign/magickload.c:307 #: ../libvips/foreign/gifload.c:977 ../libvips/foreign/magick7load.c:900 #: ../libvips/foreign/pdfload.c:652 ../libvips/foreign/tiffsave.c:437 #: ../libvips/foreign/svgload.c:531 ../libvips/foreign/radsave.c:217 #: ../libvips/foreign/dzsave.c:2406 ../libvips/foreign/webpsave.c:285 #: ../libvips/foreign/jpegsave.c:340 ../libvips/foreign/jpegload.c:311 #: ../libvips/foreign/tiffload.c:314 ../libvips/resample/thumbnail.c:836 msgid "Buffer" msgstr "" #: ../libvips/foreign/pngload.c:231 ../libvips/foreign/webpload.c:269 #: ../libvips/foreign/magickload.c:308 ../libvips/foreign/gifload.c:978 #: ../libvips/foreign/magick7load.c:901 ../libvips/foreign/pdfload.c:653 #: ../libvips/foreign/svgload.c:532 ../libvips/foreign/jpegload.c:312 #: ../libvips/foreign/tiffload.c:315 ../libvips/resample/thumbnail.c:837 msgid "Buffer to load from" msgstr "" #: ../libvips/foreign/matlab.c:121 #, c-format msgid "no matrix variables in \"%s\"" msgstr "" #: ../libvips/foreign/matlab.c:203 #, c-format msgid "unsupported rank %d\n" msgstr "" #: ../libvips/foreign/matlab.c:211 #, c-format msgid "unsupported class type %d\n" msgstr "" #: ../libvips/foreign/matlab.c:260 msgid "Mat_VarReadDataAll failed" msgstr "" #: ../libvips/foreign/webpload.c:94 msgid "load webp" msgstr "" #: ../libvips/foreign/webpload.c:100 ../libvips/foreign/jpegload.c:137 msgid "Shrink" msgstr "" #: ../libvips/foreign/webpload.c:101 ../libvips/foreign/jpegload.c:138 msgid "Shrink factor on load" msgstr "" #: ../libvips/foreign/webpload.c:181 msgid "load webp from file" msgstr "" #: ../libvips/foreign/webpload.c:257 msgid "load webp from buffer" msgstr "" #: ../libvips/foreign/pngsave.c:100 msgid "save png" msgstr "" #: ../libvips/foreign/pngsave.c:108 ../libvips/foreign/tiffsave.c:181 #: ../libvips/foreign/dzsave.c:2200 msgid "Compression" msgstr "" #: ../libvips/foreign/pngsave.c:109 msgid "Compression factor" msgstr "" #: ../libvips/foreign/pngsave.c:115 ../libvips/foreign/jpegsave.c:170 msgid "Interlace" msgstr "" #: ../libvips/foreign/pngsave.c:116 msgid "Interlace image" msgstr "" #: ../libvips/foreign/pngsave.c:122 ../libvips/foreign/jpegsave.c:156 msgid "Profile" msgstr "" #: ../libvips/foreign/pngsave.c:123 ../libvips/foreign/tiffsave.c:205 #: ../libvips/foreign/jpegsave.c:157 msgid "ICC profile to embed" msgstr "" #: ../libvips/foreign/pngsave.c:129 msgid "Filter" msgstr "" #: ../libvips/foreign/pngsave.c:130 msgid "libpng row filter flag(s)" msgstr "" #: ../libvips/foreign/pngsave.c:185 msgid "save image to png file" msgstr "" #: ../libvips/foreign/pngsave.c:251 msgid "save image to png buffer" msgstr "" #: ../libvips/foreign/pngsave.c:256 ../libvips/foreign/tiffsave.c:438 #: ../libvips/foreign/radsave.c:218 ../libvips/foreign/dzsave.c:2407 #: ../libvips/foreign/webpsave.c:286 ../libvips/foreign/jpegsave.c:341 msgid "Buffer to save to" msgstr "" #: ../libvips/foreign/tiff2vips.c:333 ../libvips/foreign/tiff2vips.c:351 #, c-format msgid "required field %d missing" msgstr "" #: ../libvips/foreign/tiff2vips.c:393 msgid "unknown resolution unit" msgstr "" #: ../libvips/foreign/tiff2vips.c:398 #, c-format msgid "" "no resolution information for TIFF image \"%s\" -- defaulting to 1 pixel per " "mm" msgstr "" #: ../libvips/foreign/tiff2vips.c:465 msgid "read error" msgstr "" #: ../libvips/foreign/tiff2vips.c:482 #, c-format msgid "TIFF does not contain page %d" msgstr "" #: ../libvips/foreign/tiff2vips.c:516 #, c-format msgid "not %d bands" msgstr "" #: ../libvips/foreign/tiff2vips.c:530 #, c-format msgid "not at least %d samples per pixel" msgstr "" #: ../libvips/foreign/tiff2vips.c:544 #, c-format msgid "not photometric interpretation %d" msgstr "" #: ../libvips/foreign/tiff2vips.c:557 #, c-format msgid "not %d bits per sample" msgstr "" #: ../libvips/foreign/tiff2vips.c:573 #, c-format msgid "%d bits per sample palette image not supported" msgstr "" #: ../libvips/foreign/tiff2vips.c:630 msgid "unsupported tiff image type\n" msgstr "" #: ../libvips/foreign/tiff2vips.c:1038 msgid "bad colormap" msgstr "bad colourmap" #: ../libvips/foreign/tiff2vips.c:1059 msgid "assuming 8-bit palette" msgstr "" #: ../libvips/foreign/tiff2vips.c:1594 msgid "tiled separate planes not supported" msgstr "" #: ../libvips/foreign/tiff2vips.c:1616 ../libvips/foreign/tiff2vips.c:1883 msgid "unsupported tiff image type" msgstr "" #: ../libvips/foreign/tiff2vips.c:1981 #, c-format msgid "bad page number %d" msgstr "" #: ../libvips/foreign/tiff2vips.c:1991 #, c-format msgid "bad number of pages %d" msgstr "" #: ../libvips/foreign/tiff2vips.c:2022 msgid "width/height out of range" msgstr "" #: ../libvips/foreign/tiff2vips.c:2031 msgid "samples out of range" msgstr "" #: ../libvips/foreign/tiff2vips.c:2160 #, c-format msgid "page %d differs from page %d" msgstr "" #: ../libvips/foreign/fitsload.c:110 msgid "load a FITS image" msgstr "" #: ../libvips/foreign/matrixsave.c:112 msgid "save image to matrix file" msgstr "" #: ../libvips/foreign/matrixsave.c:192 msgid "print matrix" msgstr "" #: ../libvips/foreign/vips2webp.c:128 msgid "output webp image too large" msgstr "" #: ../libvips/foreign/vips2webp.c:134 ../libvips/iofuncs/util.c:738 msgid "out of memory" msgstr "" #: ../libvips/foreign/vips2webp.c:242 ../libvips/foreign/vips2webp.c:252 msgid "config version error" msgstr "" #: ../libvips/foreign/vips2webp.c:266 msgid "lossless unsupported" msgstr "" #: ../libvips/foreign/vips2webp.c:268 msgid "alpha_q unsupported" msgstr "" #: ../libvips/foreign/vips2webp.c:278 msgid "near_lossless unsupported" msgstr "" #: ../libvips/foreign/vips2webp.c:280 msgid "smart_subsample unsupported" msgstr "" #: ../libvips/foreign/vips2webp.c:284 msgid "invalid configuration" msgstr "" #: ../libvips/foreign/vips2webp.c:302 msgid "picture memory error" msgstr "" #: ../libvips/foreign/vips2webp.c:308 msgid "unable to encode" msgstr "" #: ../libvips/foreign/vips2webp.c:526 ../libvips/foreign/vips2webp.c:579 msgid "picture version error" msgstr "" #: ../libvips/foreign/tiff.c:123 #, c-format msgid "unable to open \"%s\" for output" msgstr "" #: ../libvips/foreign/tiff.c:169 #, c-format msgid "unable to open \"%s\" for input" msgstr "" #: ../libvips/foreign/tiff.c:195 msgid "read beyond end of buffer" msgstr "" #: ../libvips/foreign/tiff.c:291 msgid "unable to open memory buffer for input" msgstr "" #: ../libvips/foreign/tiff.c:348 msgid "Out of memory." msgstr "" #: ../libvips/foreign/tiff.c:450 msgid "unable to open memory buffer for output" msgstr "" #: ../libvips/foreign/ppmsave.c:114 msgid "save image to ppm file" msgstr "" #: ../libvips/foreign/ppmsave.c:130 msgid "ASCII" msgstr "" #: ../libvips/foreign/ppmsave.c:131 msgid "save as ascii" msgstr "" #: ../libvips/foreign/ppmsave.c:137 ../libvips/foreign/tiffsave.c:239 msgid "Squash" msgstr "" #: ../libvips/foreign/ppmsave.c:138 msgid "save as one bit" msgstr "" #. Only a warning, since (for example) exported spreadsheets #. * will often have text or date fields. #. #: ../libvips/foreign/csv.c:198 #, c-format msgid "error parsing number, line %d, column %d" msgstr "" #: ../libvips/foreign/csv.c:256 msgid "end of file while skipping start" msgstr "" #: ../libvips/foreign/csv.c:265 ../libvips/iofuncs/util.c:1050 #: ../libvips/iofuncs/util.c:1056 msgid "unable to seek" msgstr "" #: ../libvips/foreign/csv.c:276 msgid "empty line" msgstr "" #: ../libvips/foreign/csv.c:316 #, c-format msgid "unexpected EOF, line %d col %d" msgstr "" #: ../libvips/foreign/csv.c:322 #, c-format msgid "unexpected EOL, line %d col %d" msgstr "" #: ../libvips/foreign/csv.c:554 msgid "no width / height" msgstr "" #: ../libvips/foreign/csv.c:560 msgid "width / height not int" msgstr "" #: ../libvips/foreign/csv.c:570 msgid "width / height out of range" msgstr "" #: ../libvips/foreign/csv.c:574 msgid "extra chars in header" msgstr "" #: ../libvips/foreign/csv.c:578 msgid "zero scale" msgstr "" #: ../libvips/foreign/csv.c:626 msgid "line too short" msgstr "" #: ../libvips/foreign/csv.c:670 #, c-format msgid "line %d too short" msgstr "" #: ../libvips/foreign/csvload.c:126 msgid "load csv from file" msgstr "" #: ../libvips/foreign/csvload.c:148 msgid "Skip" msgstr "" #: ../libvips/foreign/csvload.c:149 msgid "Skip this many lines at the start of the file" msgstr "" #: ../libvips/foreign/csvload.c:155 msgid "Lines" msgstr "" #: ../libvips/foreign/csvload.c:156 msgid "Read this many lines from the file" msgstr "" #: ../libvips/foreign/csvload.c:162 msgid "Whitespace" msgstr "" #: ../libvips/foreign/csvload.c:163 msgid "Set of whitespace characters" msgstr "" #: ../libvips/foreign/csvload.c:170 msgid "Set of separator characters" msgstr "" #: ../libvips/foreign/vipspng.c:307 msgid "unsupported color type" msgstr "unsupported colour type" #: ../libvips/foreign/vipspng.c:417 msgid "unable to read PNG header" msgstr "" #: ../libvips/foreign/vipspng.c:504 ../libvips/foreign/jpeg2vips.c:560 #, c-format msgid "out of order read at line %d" msgstr "" #: ../libvips/foreign/vipspng.c:878 msgid "compress should be in [0,9]" msgstr "" #: ../libvips/foreign/vipspng.c:900 #, c-format msgid "can't save %d band image as png" msgstr "" #: ../libvips/foreign/vipspng.c:1010 #, c-format msgid "unable to write \"%s\"" msgstr "" #: ../libvips/foreign/vipspng.c:1078 msgid "unable to write to buffer" msgstr "" #: ../libvips/foreign/vips2jpeg.c:148 #, c-format msgid "%s" msgstr "" #: ../libvips/foreign/vips2jpeg.c:254 #, c-format msgid "field \"%s\" is too large for a single JPEG marker, ignoring" msgstr "" #: ../libvips/foreign/vips2jpeg.c:496 msgid "trellis_quant unsupported" msgstr "" #: ../libvips/foreign/vips2jpeg.c:509 msgid "overshoot_deringing unsupported" msgstr "" #: ../libvips/foreign/vips2jpeg.c:523 ../libvips/foreign/vips2jpeg.c:550 msgid "ignoring optimize_scans" msgstr "" #: ../libvips/foreign/vips2jpeg.c:527 msgid "ignoring optimize_scans for baseline" msgstr "" #: ../libvips/foreign/vips2jpeg.c:539 msgid "setting quant_table unsupported" msgstr "" #: ../libvips/foreign/vips2jpeg.c:546 msgid "ignoring trellis_quant" msgstr "" #: ../libvips/foreign/vips2jpeg.c:548 msgid "ignoring overshoot_deringing" msgstr "" #: ../libvips/foreign/vips2jpeg.c:552 msgid "ignoring quant_table" msgstr "" #: ../libvips/foreign/ppmload.c:119 msgid "load ppm from file" msgstr "" #: ../libvips/foreign/magickload.c:105 msgid "load with ImageMagick" msgstr "" #: ../libvips/foreign/magickload.c:117 ../libvips/foreign/magick7load.c:379 msgid "all_frames" msgstr "" #: ../libvips/foreign/magickload.c:118 ../libvips/foreign/magick7load.c:380 msgid "Read all frames from an image" msgstr "" #: ../libvips/foreign/magickload.c:124 ../libvips/foreign/magick7load.c:386 msgid "Density" msgstr "" #: ../libvips/foreign/magickload.c:125 ../libvips/foreign/magick7load.c:387 msgid "Canvas resolution for rendering vector formats like SVG" msgstr "" #: ../libvips/foreign/magickload.c:131 ../libvips/foreign/gifload.c:816 #: ../libvips/foreign/magick7load.c:393 ../libvips/foreign/pdfload.c:468 #: ../libvips/foreign/tiffload.c:99 msgid "Page" msgstr "" #: ../libvips/foreign/magickload.c:132 ../libvips/foreign/gifload.c:817 #: ../libvips/foreign/magick7load.c:394 ../libvips/foreign/pdfload.c:469 msgid "Load this page from the file" msgstr "" #: ../libvips/foreign/magickload.c:139 ../libvips/foreign/gifload.c:824 #: ../libvips/foreign/magick7load.c:401 ../libvips/foreign/pdfload.c:476 #: ../libvips/foreign/tiffload.c:107 msgid "Load this many pages" msgstr "" #: ../libvips/foreign/magickload.c:216 msgid "load file with ImageMagick" msgstr "" #: ../libvips/foreign/magickload.c:300 msgid "load buffer with ImageMagick" msgstr "" #: ../libvips/foreign/openexr2vips.c:121 #, c-format msgid "EXR error: %s" msgstr "" #: ../libvips/foreign/gifload.c:145 msgid "Failed to open given file" msgstr "" #: ../libvips/foreign/gifload.c:148 msgid "Failed to read from given file" msgstr "" #: ../libvips/foreign/gifload.c:151 msgid "Data is not a GIF file" msgstr "" #: ../libvips/foreign/gifload.c:154 msgid "No screen descriptor detected" msgstr "" #: ../libvips/foreign/gifload.c:157 msgid "No image descriptor detected" msgstr "" #: ../libvips/foreign/gifload.c:160 msgid "Neither global nor local color map" msgstr "Neither global nor local colour map" #: ../libvips/foreign/gifload.c:163 msgid "Wrong record type detected" msgstr "" #: ../libvips/foreign/gifload.c:166 msgid "Number of pixels bigger than width * height" msgstr "" #: ../libvips/foreign/gifload.c:169 msgid "Failed to allocate required memory" msgstr "" #: ../libvips/foreign/gifload.c:172 msgid "Failed to close given file" msgstr "" #: ../libvips/foreign/gifload.c:175 msgid "Given file was not opened for read" msgstr "" #: ../libvips/foreign/gifload.c:178 msgid "Image is defective, decoding aborted" msgstr "" #: ../libvips/foreign/gifload.c:181 msgid "Image EOF detected, before image complete" msgstr "" #: ../libvips/foreign/gifload.c:184 msgid "Unknown error" msgstr "" #: ../libvips/foreign/gifload.c:371 msgid "pixel value out of range" msgstr "" #: ../libvips/foreign/gifload.c:411 msgid "frame is outside image area" msgstr "" #: ../libvips/foreign/gifload.c:662 ../libvips/foreign/gifload.c:711 msgid "too few frames in GIF file" msgstr "" #: ../libvips/foreign/gifload.c:809 ../libvips/foreign/gifload.c:884 #: ../libvips/foreign/gifload.c:971 msgid "load GIF with giflib" msgstr "" #: ../libvips/foreign/magick7load.c:366 msgid "load with ImageMagick7" msgstr "" #: ../libvips/foreign/magick7load.c:419 #, c-format msgid "Magick: %s %s" msgstr "" #: ../libvips/foreign/magick7load.c:474 #, c-format msgid "unsupported bit depth %zd" msgstr "" #: ../libvips/foreign/magick7load.c:506 ../libvips/foreign/magick2vips.c:387 #, c-format msgid "unsupported colorspace %d" msgstr "unsupported colourspace %d" #: ../libvips/foreign/magick7load.c:797 msgid "load file with ImageMagick7" msgstr "" #: ../libvips/foreign/magick7load.c:894 msgid "load buffer with ImageMagick7" msgstr "" #: ../libvips/foreign/openslide2vips.c:195 msgid "invalid associated image name" msgstr "" #: ../libvips/foreign/openslide2vips.c:239 msgid "specify only one of level or associated image" msgstr "" #: ../libvips/foreign/openslide2vips.c:275 msgid "unsupported slide format" msgstr "" #: ../libvips/foreign/openslide2vips.c:282 #, c-format msgid "opening slide: %s" msgstr "" #: ../libvips/foreign/openslide2vips.c:289 msgid "invalid slide level" msgstr "" #: ../libvips/foreign/openslide2vips.c:371 #, c-format msgid "getting dimensions: %s" msgstr "" #: ../libvips/foreign/openslide2vips.c:378 msgid "image dimensions overflow int" msgstr "" #: ../libvips/foreign/openslide2vips.c:505 #, c-format msgid "reading region: %s" msgstr "" #: ../libvips/foreign/openslide2vips.c:587 #, c-format msgid "reading associated image: %s" msgstr "" #: ../libvips/foreign/exif.c:158 msgid "unable to init exif" msgstr "" #: ../libvips/foreign/exif.c:413 ../libvips/foreign/exif.c:788 msgid "unknown EXIF resolution unit" msgstr "" #: ../libvips/foreign/exif.c:918 ../libvips/foreign/exif.c:928 #: ../libvips/foreign/exif.c:933 #, c-format msgid "bad exif meta \"%s\"" msgstr "" #: ../libvips/foreign/exif.c:1097 msgid "error saving EXIF" msgstr "" #: ../libvips/foreign/fitssave.c:129 msgid "save image to fits file" msgstr "" #: ../libvips/foreign/pdfload.c:189 #, c-format msgid "unable to load page %d" msgstr "" #: ../libvips/foreign/pdfload.c:281 msgid "pages out of range" msgstr "" #: ../libvips/foreign/pdfload.c:459 msgid "load PDF with libpoppler" msgstr "" #: ../libvips/foreign/pdfload.c:483 ../libvips/foreign/svgload.c:284 msgid "Render at this DPI" msgstr "" #: ../libvips/foreign/pdfload.c:490 ../libvips/foreign/svgload.c:291 msgid "Scale output by this factor" msgstr "" #: ../libvips/foreign/magick2vips.c:293 #, c-format msgid "unsupported image type %d" msgstr "" #: ../libvips/foreign/magick2vips.c:355 #, c-format msgid "unsupported bit depth %d" msgstr "" #: ../libvips/foreign/magick2vips.c:753 #, c-format msgid "" "unable to read file \"%s\"\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/magick2vips.c:792 #, c-format msgid "" "unable to ping file \"%s\"\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/magick2vips.c:804 ../libvips/foreign/magick2vips.c:880 msgid "bad image size" msgstr "" #: ../libvips/foreign/magick2vips.c:835 #, c-format msgid "" "unable to read buffer\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/magick2vips.c:869 #, c-format msgid "" "unable to ping blob\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/fits.c:263 msgid "dimensions above 3 must be size 1" msgstr "" #: ../libvips/foreign/fits.c:279 #, c-format msgid "bad number of axis %d" msgstr "" #: ../libvips/foreign/fits.c:295 #, c-format msgid "unsupported bitpix %d\n" msgstr "" #: ../libvips/foreign/fits.c:612 ../libvips/iofuncs/vips.c:191 #, c-format msgid "unable to write to \"%s\"" msgstr "" #: ../libvips/foreign/fits.c:673 #, c-format msgid "unsupported BandFmt %d\n" msgstr "" #: ../libvips/foreign/openslideload.c:167 msgid "load file with OpenSlide" msgstr "" #: ../libvips/foreign/openslideload.c:194 msgid "Level" msgstr "" #: ../libvips/foreign/openslideload.c:195 msgid "Load this level from the file" msgstr "" #: ../libvips/foreign/openslideload.c:201 msgid "Autocrop" msgstr "" #: ../libvips/foreign/openslideload.c:202 msgid "Crop to image bounds" msgstr "" #: ../libvips/foreign/openslideload.c:208 msgid "Associated" msgstr "" #: ../libvips/foreign/openslideload.c:209 msgid "Load this associated image" msgstr "" #: ../libvips/foreign/rawload.c:108 msgid "load raw data from a file" msgstr "" #: ../libvips/foreign/rawload.c:144 ../libvips/iofuncs/image.c:1228 msgid "Size of header" msgstr "" #: ../libvips/foreign/rawload.c:145 ../libvips/iofuncs/image.c:1229 msgid "Offset in bytes from start of file" msgstr "" #: ../libvips/foreign/jpeg2vips.c:187 #, c-format msgid "read gave %ld warnings" msgstr "" #: ../libvips/foreign/jpeg2vips.c:387 msgid "unknown JFIF resolution unit" msgstr "" #: ../libvips/foreign/tiffsave.c:172 ../libvips/foreign/tiffsave.c:358 msgid "save image to tiff file" msgstr "" #: ../libvips/foreign/tiffsave.c:182 msgid "Compression for this file" msgstr "" #: ../libvips/foreign/tiffsave.c:189 ../libvips/foreign/webpsave.c:115 #: ../libvips/foreign/jpegsave.c:149 msgid "Q" msgstr "" #: ../libvips/foreign/tiffsave.c:190 ../libvips/foreign/webpsave.c:116 #: ../libvips/foreign/jpegsave.c:150 msgid "Q factor" msgstr "" #: ../libvips/foreign/tiffsave.c:196 msgid "predictor" msgstr "" #: ../libvips/foreign/tiffsave.c:197 msgid "Compression prediction" msgstr "" #: ../libvips/foreign/tiffsave.c:204 msgid "profile" msgstr "" #: ../libvips/foreign/tiffsave.c:211 msgid "Tile" msgstr "" #: ../libvips/foreign/tiffsave.c:212 msgid "Write a tiled tiff" msgstr "" #: ../libvips/foreign/tiffsave.c:232 msgid "Pyramid" msgstr "" #: ../libvips/foreign/tiffsave.c:233 msgid "Write a pyramidal tiff" msgstr "" #: ../libvips/foreign/tiffsave.c:240 msgid "Squash images down to 1 bit" msgstr "" #: ../libvips/foreign/tiffsave.c:246 msgid "Miniswhite" msgstr "" #: ../libvips/foreign/tiffsave.c:247 msgid "Use 0 for white in 1-bit images" msgstr "" #: ../libvips/foreign/tiffsave.c:253 ../libvips/foreign/tiffsave.c:254 msgid "Resolution unit" msgstr "" #: ../libvips/foreign/tiffsave.c:274 msgid "Bigtiff" msgstr "" #: ../libvips/foreign/tiffsave.c:275 msgid "Write a bigtiff image" msgstr "" #: ../libvips/foreign/tiffsave.c:281 msgid "RGB JPEG" msgstr "" #: ../libvips/foreign/tiffsave.c:282 msgid "Output RGB JPEG rather than YCbCr" msgstr "" #: ../libvips/foreign/tiffsave.c:288 ../libvips/foreign/dzsave.c:2193 msgid "Properties" msgstr "" #: ../libvips/foreign/tiffsave.c:289 msgid "Write a properties document to IMAGEDESCRIPTION" msgstr "" #: ../libvips/foreign/tiffsave.c:433 msgid "save image to tiff buffer" msgstr "" #: ../libvips/foreign/svgload.c:207 msgid "SVG rendering failed" msgstr "" #: ../libvips/foreign/svgload.c:274 msgid "load SVG with rsvg" msgstr "" #: ../libvips/foreign/radsave.c:97 msgid "save Radiance" msgstr "" #: ../libvips/foreign/radsave.c:150 msgid "save image to Radiance file" msgstr "" #: ../libvips/foreign/radsave.c:213 msgid "save image to Radiance buffer" msgstr "" #: ../libvips/foreign/dzsave.c:181 ../libvips/iofuncs/vips.c:712 #, c-format msgid "unable to set property \"%s\" to value \"%s\"." msgstr "" #: ../libvips/foreign/dzsave.c:196 #, c-format msgid "unable to set create node \"%s\"" msgstr "" #: ../libvips/foreign/dzsave.c:252 ../libvips/foreign/dzsave.c:257 #: ../libvips/foreign/dzsave.c:284 ../libvips/iofuncs/vips.c:849 #: ../libvips/iofuncs/vips.c:856 msgid "xml save error" msgstr "" #: ../libvips/foreign/dzsave.c:351 ../libvips/foreign/dzsave.c:357 msgid "unable to close stream" msgstr "" #: ../libvips/foreign/dzsave.c:1395 msgid "too many files in zip" msgstr "" #: ../libvips/foreign/dzsave.c:1405 msgid "output file too large" msgstr "" #: ../libvips/foreign/dzsave.c:1762 msgid "overlap too large" msgstr "" #: ../libvips/foreign/dzsave.c:1904 #, c-format msgid "output directory %s/%s_files exists" msgstr "" #: ../libvips/foreign/dzsave.c:1932 ../libvips/iofuncs/util.c:1625 #, c-format msgid "unable to make temporary file %s" msgstr "" #: ../libvips/foreign/dzsave.c:2002 msgid "deflate-level not supported by libgsf, using default compression" msgstr "" #: ../libvips/foreign/dzsave.c:2117 msgid "save image to deep zoom format" msgstr "" #: ../libvips/foreign/dzsave.c:2127 msgid "Base name" msgstr "" #: ../libvips/foreign/dzsave.c:2128 msgid "Base name to save to" msgstr "" #: ../libvips/foreign/dzsave.c:2134 msgid "Layout" msgstr "" #: ../libvips/foreign/dzsave.c:2135 msgid "Directory layout" msgstr "" #: ../libvips/foreign/dzsave.c:2142 msgid "suffix" msgstr "" #: ../libvips/foreign/dzsave.c:2143 msgid "Filename suffix for tiles" msgstr "" #: ../libvips/foreign/dzsave.c:2149 msgid "Overlap" msgstr "" #: ../libvips/foreign/dzsave.c:2150 msgid "Tile overlap in pixels" msgstr "" #: ../libvips/foreign/dzsave.c:2156 msgid "Tile size" msgstr "" #: ../libvips/foreign/dzsave.c:2157 msgid "Tile size in pixels" msgstr "" #: ../libvips/foreign/dzsave.c:2164 msgid "Pyramid depth" msgstr "" #: ../libvips/foreign/dzsave.c:2171 msgid "Center" msgstr "" #: ../libvips/foreign/dzsave.c:2172 msgid "Center image in tile" msgstr "" #: ../libvips/foreign/dzsave.c:2179 msgid "Rotate image during save" msgstr "" #: ../libvips/foreign/dzsave.c:2185 msgid "Container" msgstr "" #: ../libvips/foreign/dzsave.c:2186 msgid "Pyramid container type" msgstr "" #: ../libvips/foreign/dzsave.c:2194 msgid "Write a properties file to the output directory" msgstr "" #: ../libvips/foreign/dzsave.c:2201 msgid "ZIP deflate compression level" msgstr "" #: ../libvips/foreign/dzsave.c:2210 msgid "Directory name" msgstr "" #: ../libvips/foreign/dzsave.c:2211 msgid "Directory name to save to" msgstr "" #: ../libvips/foreign/dzsave.c:2315 msgid "save image to deepzoom file" msgstr "" #: ../libvips/foreign/dzsave.c:2377 ../libvips/iofuncs/image.c:2590 #: ../libvips/iofuncs/image.c:2592 ../libvips/iofuncs/memory.c:309 #: ../libvips/iofuncs/memory.c:311 #, c-format msgid "out of memory --- size == %dMB" msgstr "" #: ../libvips/foreign/dzsave.c:2402 msgid "save image to dz buffer" msgstr "" #: ../libvips/foreign/radload.c:122 msgid "load a Radiance image from a file" msgstr "" #: ../libvips/foreign/openexrload.c:128 msgid "load an OpenEXR image" msgstr "" #: ../libvips/foreign/vipssave.c:104 msgid "save image to vips file" msgstr "" #: ../libvips/foreign/webpsave.c:107 msgid "save webp" msgstr "" #: ../libvips/foreign/webpsave.c:122 msgid "lossless" msgstr "" #: ../libvips/foreign/webpsave.c:123 msgid "enable lossless compression" msgstr "" #: ../libvips/foreign/webpsave.c:129 msgid "preset" msgstr "" #: ../libvips/foreign/webpsave.c:130 msgid "Preset for lossy compression" msgstr "" #: ../libvips/foreign/webpsave.c:137 msgid "Smart subsampling" msgstr "" #: ../libvips/foreign/webpsave.c:138 msgid "Enable high quality chroma subsampling" msgstr "" #: ../libvips/foreign/webpsave.c:144 msgid "Near lossless" msgstr "" #: ../libvips/foreign/webpsave.c:145 msgid "Enable preprocessing in lossless mode (uses Q)" msgstr "" #: ../libvips/foreign/webpsave.c:151 msgid "Alpha quality" msgstr "" #: ../libvips/foreign/webpsave.c:152 msgid "Change alpha plane fidelity for lossy compression" msgstr "" #: ../libvips/foreign/webpsave.c:210 msgid "save image to webp file" msgstr "" #: ../libvips/foreign/webpsave.c:281 msgid "save image to webp buffer" msgstr "" #: ../libvips/foreign/webpsave.c:330 ../libvips/foreign/jpegsave.c:386 msgid "error writing output" msgstr "" #: ../libvips/foreign/webpsave.c:346 msgid "save image to webp mime" msgstr "" #: ../libvips/foreign/radiance.c:685 msgid "end of file" msgstr "" #: ../libvips/foreign/radiance.c:773 msgid "scanline length mismatch" msgstr "" #: ../libvips/foreign/radiance.c:790 msgid "overrun" msgstr "" #: ../libvips/foreign/radiance.c:1040 msgid "error reading radiance header" msgstr "" #: ../libvips/foreign/radiance.c:1057 msgid "image size out of bounds" msgstr "" #: ../libvips/foreign/radiance.c:1125 #, c-format msgid "read error line %d" msgstr "" #: ../libvips/foreign/rawsave.c:139 msgid "save image to raw file" msgstr "" #: ../libvips/foreign/rawsave.c:245 msgid "write raw image to file descriptor" msgstr "" #: ../libvips/foreign/rawsave.c:251 msgid "File descriptor" msgstr "" #: ../libvips/foreign/rawsave.c:252 msgid "File descriptor to write to" msgstr "" #: ../libvips/foreign/jpegsave.c:139 msgid "save jpeg" msgstr "" #: ../libvips/foreign/jpegsave.c:163 msgid "Optimize_coding" msgstr "" #: ../libvips/foreign/jpegsave.c:164 msgid "Compute optimal Huffman coding tables" msgstr "" #: ../libvips/foreign/jpegsave.c:171 msgid "Generate an interlaced (progressive) jpeg" msgstr "" #: ../libvips/foreign/jpegsave.c:177 msgid "No subsample" msgstr "" #: ../libvips/foreign/jpegsave.c:178 msgid "Disable chroma subsample" msgstr "" #: ../libvips/foreign/jpegsave.c:184 msgid "Trellis quantisation" msgstr "" #: ../libvips/foreign/jpegsave.c:185 msgid "Apply trellis quantisation to each 8x8 block" msgstr "" #: ../libvips/foreign/jpegsave.c:191 msgid "Overshoot de-ringing" msgstr "" #: ../libvips/foreign/jpegsave.c:192 msgid "Apply overshooting to samples with extreme values" msgstr "" #: ../libvips/foreign/jpegsave.c:198 msgid "Optimize scans" msgstr "" #: ../libvips/foreign/jpegsave.c:199 msgid "Split the spectrum of DCT coefficients into separate scans" msgstr "" #: ../libvips/foreign/jpegsave.c:205 msgid "Quantization table" msgstr "" #: ../libvips/foreign/jpegsave.c:206 msgid "Use predefined quantization table with given index" msgstr "" #: ../libvips/foreign/jpegsave.c:264 msgid "save image to jpeg file" msgstr "" #: ../libvips/foreign/jpegsave.c:336 msgid "save image to jpeg buffer" msgstr "" #: ../libvips/foreign/jpegsave.c:402 msgid "save image to jpeg mime" msgstr "" #: ../libvips/foreign/analyze2vips.c:311 msgid "header file size incorrect" msgstr "" #: ../libvips/foreign/analyze2vips.c:356 msgid "header size incorrect" msgstr "" #: ../libvips/foreign/analyze2vips.c:374 #, c-format msgid "%d-dimensional images not supported" msgstr "" #: ../libvips/foreign/analyze2vips.c:427 #, c-format msgid "datatype %d not supported" msgstr "" #: ../libvips/foreign/matrixload.c:137 msgid "load matrix from file" msgstr "" #: ../libvips/foreign/jpegload.c:109 #, c-format msgid "bad shrink factor %d" msgstr "" #: ../libvips/foreign/jpegload.c:131 msgid "load jpeg" msgstr "" #: ../libvips/foreign/jpegload.c:144 ../libvips/foreign/tiffload.c:113 msgid "Autorotate" msgstr "" #: ../libvips/foreign/jpegload.c:145 msgid "Rotate image using exif orientation" msgstr "" #: ../libvips/foreign/jpegload.c:219 msgid "load jpeg from file" msgstr "" #: ../libvips/foreign/jpegload.c:304 msgid "load jpeg from buffer" msgstr "" #: ../libvips/foreign/analyzeload.c:119 msgid "load an Analyze6 image" msgstr "" #: ../libvips/foreign/vips2tiff.c:470 msgid "rounding up IPCT data length" msgstr "" #: ../libvips/foreign/vips2tiff.c:948 #, c-format msgid "image height %d is not a factor of page-height %d" msgstr "" #: ../libvips/foreign/vips2tiff.c:964 msgid "can't pyramid multi page images --- disabling pyramid" msgstr "" #: ../libvips/foreign/vips2tiff.c:977 msgid "tile size not a multiple of 16" msgstr "" #: ../libvips/foreign/vips2tiff.c:988 msgid "can only pyramid LABQ and non-complex images" msgstr "" #: ../libvips/foreign/vips2tiff.c:1009 msgid "can't have 1-bit JPEG -- disabling JPEG" msgstr "" #: ../libvips/foreign/vips2tiff.c:1020 msgid "" "can only save non-complex greyscale images as miniswhite -- disabling " "miniswhite" msgstr "" #: ../libvips/foreign/vips2tiff.c:1043 msgid "image over 4gb, enabling bigtiff" msgstr "" #: ../libvips/foreign/vips2tiff.c:1295 msgid "TIFF write tile failed" msgstr "" #: ../libvips/foreign/matload.c:121 msgid "load mat from file" msgstr "" #: ../libvips/foreign/vipsload.c:122 msgid "load vips from file" msgstr "" #: ../libvips/foreign/tiffload.c:96 msgid "load tiff" msgstr "" #: ../libvips/foreign/tiffload.c:100 msgid "Load this page from the image" msgstr "" #: ../libvips/foreign/tiffload.c:114 msgid "Rotate image using orientation tag" msgstr "" #: ../libvips/foreign/tiffload.c:207 msgid "load tiff from file" msgstr "" #: ../libvips/foreign/tiffload.c:306 msgid "load tiff from buffer" msgstr "" #: ../libvips/freqfilt/spectrum.c:101 msgid "make displayable power spectrum" msgstr "" #: ../libvips/freqfilt/phasecor.c:108 msgid "calculate phase correlation" msgstr "" #: ../libvips/freqfilt/fwfft.c:137 ../libvips/freqfilt/fwfft.c:252 #: ../libvips/freqfilt/invfft.c:120 ../libvips/freqfilt/invfft.c:194 msgid "unable to create transform plan" msgstr "" #: ../libvips/freqfilt/fwfft.c:335 msgid "forward FFT" msgstr "" #: ../libvips/freqfilt/freqmult.c:127 msgid "frequency-domain filtering" msgstr "" #: ../libvips/freqfilt/freqmult.c:131 msgid "mask" msgstr "" #: ../libvips/freqfilt/freqmult.c:132 msgid "Input mask image" msgstr "" #: ../libvips/freqfilt/freqfilt.c:94 msgid "frequency-domain filter operations" msgstr "" #: ../libvips/freqfilt/invfft.c:252 msgid "inverse FFT" msgstr "" #: ../libvips/freqfilt/invfft.c:256 msgid "Real" msgstr "" #: ../libvips/freqfilt/invfft.c:257 msgid "Output only the real part of the transform" msgstr "" #: ../libvips/histogram/hist_match.c:154 msgid "match two histograms" msgstr "" #: ../libvips/histogram/hist_match.c:162 msgid "Input histogram" msgstr "" #: ../libvips/histogram/hist_match.c:167 ../libvips/mosaicing/merge.c:109 #: ../libvips/mosaicing/mosaic.c:180 ../libvips/mosaicing/match.c:204 #: ../libvips/mosaicing/mosaic1.c:489 msgid "Reference" msgstr "" #: ../libvips/histogram/hist_match.c:168 msgid "Reference histogram" msgstr "" #: ../libvips/histogram/hist_cum.c:148 msgid "form cumulative histogram" msgstr "" #: ../libvips/histogram/hist_equal.c:104 msgid "histogram equalisation" msgstr "" #: ../libvips/histogram/hist_equal.c:121 msgid "Equalise with this band" msgstr "" #: ../libvips/histogram/stdif.c:236 ../libvips/histogram/hist_local.c:304 #: ../libvips/morphology/rank.c:354 msgid "window too large" msgstr "" #: ../libvips/histogram/stdif.c:240 msgid "too many bands" msgstr "" #: ../libvips/histogram/stdif.c:290 msgid "statistical difference" msgstr "" #: ../libvips/histogram/stdif.c:309 ../libvips/histogram/hist_local.c:371 #: ../libvips/morphology/rank.c:420 msgid "Window width in pixels" msgstr "" #: ../libvips/histogram/stdif.c:316 ../libvips/histogram/hist_local.c:378 #: ../libvips/morphology/rank.c:427 msgid "Window height in pixels" msgstr "" #: ../libvips/histogram/stdif.c:322 msgid "Mean weight" msgstr "" #: ../libvips/histogram/stdif.c:323 msgid "Weight of new mean" msgstr "" #: ../libvips/histogram/stdif.c:330 msgid "New mean" msgstr "" #: ../libvips/histogram/stdif.c:336 msgid "Deviation weight" msgstr "" #: ../libvips/histogram/stdif.c:337 msgid "Weight of new deviation" msgstr "" #: ../libvips/histogram/stdif.c:343 msgid "Deviation" msgstr "" #: ../libvips/histogram/stdif.c:344 msgid "New deviation" msgstr "" #: ../libvips/histogram/histogram.c:223 msgid "histogram operations" msgstr "" #: ../libvips/histogram/hist_entropy.c:109 msgid "estimate image entropy" msgstr "" #: ../libvips/histogram/hist_entropy.c:114 #: ../libvips/histogram/hist_ismonotonic.c:118 msgid "Input histogram image" msgstr "" #: ../libvips/histogram/hist_ismonotonic.c:113 msgid "test for monotonicity" msgstr "" #: ../libvips/histogram/hist_ismonotonic.c:123 msgid "Monotonic" msgstr "" #: ../libvips/histogram/hist_ismonotonic.c:124 msgid "true if in is monotonic" msgstr "" #: ../libvips/histogram/hist_norm.c:137 msgid "normalise histogram" msgstr "" #: ../libvips/histogram/hist_plot.c:338 msgid "plot histogram" msgstr "" #: ../libvips/histogram/hist_unary.c:85 msgid "hist_unary operations" msgstr "" #: ../libvips/histogram/hist_local.c:354 msgid "local histogram equalisation" msgstr "" #: ../libvips/histogram/hist_local.c:384 msgid "Max slope" msgstr "" #: ../libvips/histogram/hist_local.c:385 msgid "Maximum slope (CLAHE)" msgstr "" #: ../libvips/histogram/percent.c:106 msgid "find threshold for percent of pixels" msgstr "" #: ../libvips/histogram/percent.c:116 msgid "Percent" msgstr "" #: ../libvips/histogram/percent.c:117 msgid "Percent of pixels" msgstr "" #: ../libvips/histogram/percent.c:123 msgid "Threshold" msgstr "" #: ../libvips/histogram/percent.c:124 msgid "Threshold above which lie percent of pixels" msgstr "" #: ../libvips/histogram/maplut.c:110 #, c-format msgid "%d overflows detected" msgstr "" #: ../libvips/histogram/maplut.c:688 msgid "map an image though a lut" msgstr "" #: ../libvips/histogram/maplut.c:706 msgid "LUT" msgstr "" #: ../libvips/histogram/maplut.c:707 msgid "Look-up table image" msgstr "" #: ../libvips/histogram/maplut.c:712 msgid "band" msgstr "" #: ../libvips/histogram/maplut.c:713 msgid "apply one-band lut to this band of in" msgstr "" #: ../libvips/introspect.c:54 msgid "dump introspection data" msgstr "" #: ../libvips/introspect.c:71 msgid "- introspect" msgstr "" #: ../libvips/iofuncs/sink.c:106 #, c-format msgid "stop function failed for image \"%s\"" msgstr "" #: ../libvips/iofuncs/sink.c:143 #, c-format msgid "start function failed for image \"%s\"" msgstr "" #: ../libvips/iofuncs/sink.c:176 msgid "per-thread state for sink" msgstr "" #: ../libvips/iofuncs/type.c:854 #, c-format msgid "unable to convert \"%s\" to int" msgstr "" #: ../libvips/iofuncs/type.c:1046 #, c-format msgid "unable to convert \"%s\" to float" msgstr "" #: ../libvips/iofuncs/image.c:536 msgid "unable to close fd" msgstr "" #: ../libvips/iofuncs/image.c:617 #, c-format msgid "%dx%d %s, %d band, %s" msgid_plural "%dx%d %s, %d bands, %s" msgstr[0] "" msgstr[1] "" #: ../libvips/iofuncs/image.c:651 #, c-format msgid " %s, %d band, %s" msgid_plural " %s, %d bands, %s" msgstr[0] "" msgstr[1] "" #: ../libvips/iofuncs/image.c:784 #, c-format msgid "%s %s: %d x %d pixels, %d threads, %d x %d tiles, %d lines in buffer" msgstr "" #: ../libvips/iofuncs/image.c:797 #, c-format msgid "%s %s: %d%% complete" msgstr "" #. Spaces at end help to erase the %complete message we overwrite. #. #: ../libvips/iofuncs/image.c:816 #, c-format msgid "%s %s: done in %.3gs \n" msgstr "" #: ../libvips/iofuncs/image.c:1000 #, c-format msgid "unable to open \"%s\", file too short" msgstr "" #: ../libvips/iofuncs/image.c:1009 #, c-format msgid "%s is longer than expected" msgstr "" #: ../libvips/iofuncs/image.c:1027 #, c-format msgid "bad mode \"%s\"" msgstr "" #: ../libvips/iofuncs/image.c:1103 msgid "image class" msgstr "" #: ../libvips/iofuncs/image.c:1201 msgid "Image filename" msgstr "" #: ../libvips/iofuncs/image.c:1208 msgid "Open mode" msgstr "" #: ../libvips/iofuncs/image.c:1214 msgid "Kill" msgstr "" #: ../libvips/iofuncs/image.c:1215 msgid "Block evaluation on this image" msgstr "" #: ../libvips/iofuncs/image.c:1221 msgid "Demand style" msgstr "" #: ../libvips/iofuncs/image.c:1222 msgid "Preferred demand style for this image" msgstr "" #: ../libvips/iofuncs/image.c:1235 msgid "Foreign buffer" msgstr "" #: ../libvips/iofuncs/image.c:1236 msgid "Pointer to foreign pixels" msgstr "" #: ../libvips/iofuncs/image.c:1647 #, c-format msgid "killed for image \"%s\"" msgstr "" #: ../libvips/iofuncs/image.c:2049 #, c-format msgid "memory area too small --- should be %zd bytes, you passed %zd" msgstr "" #: ../libvips/iofuncs/image.c:2264 #, c-format msgid "bad array length --- should be %d, you passed %d" msgstr "" #: ../libvips/iofuncs/image.c:2854 msgid "bad image descriptor" msgstr "" #: ../libvips/iofuncs/image.c:2912 ../libvips/iofuncs/generate.c:779 #, c-format msgid "unable to output to a %s image" msgstr "" #: ../libvips/iofuncs/image.c:2976 #, c-format msgid "auto-rewind for %s failed" msgstr "" #: ../libvips/iofuncs/image.c:3045 ../libvips/iofuncs/image.c:3175 #: ../libvips/iofuncs/image.c:3354 msgid "image not readable" msgstr "" #: ../libvips/iofuncs/image.c:3090 ../libvips/iofuncs/image.c:3314 #: ../libvips/iofuncs/image.c:3331 msgid "no image data" msgstr "" #: ../libvips/iofuncs/image.c:3196 ../libvips/iofuncs/image.c:3384 #: ../libvips/iofuncs/image.c:3393 msgid "image already written" msgstr "" #: ../libvips/iofuncs/image.c:3220 ../libvips/iofuncs/image.c:3405 msgid "image not writeable" msgstr "" #: ../libvips/iofuncs/image.c:3272 msgid "bad file type" msgstr "" #: ../libvips/iofuncs/threadpool.c:247 msgid "unable to create thread" msgstr "" #: ../libvips/iofuncs/threadpool.c:410 #, c-format msgid "threads clipped to %d" msgstr "" #: ../libvips/iofuncs/threadpool.c:456 msgid "per-thread state for vipsthreadpool" msgstr "" #: ../libvips/iofuncs/mapfile.c:131 ../libvips/iofuncs/mapfile.c:298 msgid "unable to CreateFileMapping" msgstr "" #: ../libvips/iofuncs/mapfile.c:139 ../libvips/iofuncs/mapfile.c:310 msgid "unable to MapViewOfFile" msgstr "" #: ../libvips/iofuncs/mapfile.c:179 msgid "unable to mmap" msgstr "" #: ../libvips/iofuncs/mapfile.c:180 #, c-format msgid "" "map failed (%s), running very low on system resources, expect a crash soon" msgstr "" #: ../libvips/iofuncs/mapfile.c:197 ../libvips/iofuncs/mapfile.c:304 msgid "unable to UnmapViewOfFile" msgstr "" #: ../libvips/iofuncs/mapfile.c:203 msgid "unable to munmap file" msgstr "" #: ../libvips/iofuncs/mapfile.c:225 msgid "file is less than 64 bytes" msgstr "" #: ../libvips/iofuncs/mapfile.c:230 ../libvips/iofuncs/mapfile.c:264 msgid "unable to get file status" msgstr "" #: ../libvips/iofuncs/mapfile.c:236 msgid "not a regular file" msgstr "" #: ../libvips/iofuncs/mapfile.c:270 msgid "unable to read data" msgstr "" #: ../libvips/iofuncs/mapfile.c:330 #, c-format msgid "unable to mmap: \"%s\" - %s" msgstr "" #: ../libvips/iofuncs/mapfile.c:340 #, c-format msgid "unable to mmap \"%s\" to same address" msgstr "" #: ../libvips/iofuncs/sinkdisc.c:122 msgid "per-thread state for sinkdisc" msgstr "" #: ../libvips/iofuncs/sinkdisc.c:261 ../libvips/iofuncs/util.c:535 msgid "write failed" msgstr "" #: ../libvips/iofuncs/operation.c:225 #, c-format msgid "%d pixels calculated" msgstr "" #: ../libvips/iofuncs/operation.c:309 ../libvips/iofuncs/operation.c:330 #: ../libvips/iofuncs/operation.c:338 ../libvips/iofuncs/operation.c:350 msgid "default" msgstr "" #: ../libvips/iofuncs/operation.c:313 msgid "allowed" msgstr "" #: ../libvips/iofuncs/operation.c:341 ../libvips/iofuncs/operation.c:353 msgid "min" msgstr "" #: ../libvips/iofuncs/operation.c:343 ../libvips/iofuncs/operation.c:355 msgid "max" msgstr "" #: ../libvips/iofuncs/operation.c:571 msgid "operations" msgstr "" #: ../libvips/iofuncs/operation.c:659 ../libvips/iofuncs/object.c:1511 #: ../libvips/resample/interpolate.c:637 #, c-format msgid "class \"%s\" not found" msgstr "" #: ../libvips/iofuncs/operation.c:665 #, c-format msgid "\"%s\" is not an instantiable class" msgstr "" #: ../libvips/iofuncs/operation.c:1129 #, c-format msgid "unknown argument '%s'" msgstr "" #: ../libvips/iofuncs/operation.c:1253 msgid "too few arguments" msgstr "" #: ../libvips/iofuncs/operation.c:1374 msgid "too many arguments" msgstr "" #: ../libvips/iofuncs/sinkmemory.c:109 msgid "per-thread state for sinkmemory" msgstr "" #: ../libvips/iofuncs/generate.c:425 msgid "too many images" msgstr "" #: ../libvips/iofuncs/generate.c:690 msgid "demand hint not set" msgstr "" #: ../libvips/iofuncs/generate.c:709 ../libvips/iofuncs/generate.c:737 msgid "generate() called twice" msgstr "" #: ../libvips/iofuncs/window.c:237 ../libvips/iofuncs/vips.c:918 #, c-format msgid "unable to read data for \"%s\", %s" msgstr "" #: ../libvips/iofuncs/window.c:238 ../libvips/iofuncs/vips.c:808 #: ../libvips/iofuncs/vips.c:919 msgid "file has been truncated" msgstr "" #: ../libvips/iofuncs/system.c:184 msgid "unable to substitute input filename" msgstr "" #: ../libvips/iofuncs/system.c:191 msgid "unable to substitute output filename" msgstr "" #: ../libvips/iofuncs/system.c:226 #, c-format msgid "command \"%s\" failed" msgstr "" #: ../libvips/iofuncs/system.c:234 #, c-format msgid "stderr output: %s" msgstr "" #: ../libvips/iofuncs/system.c:269 msgid "run an external command" msgstr "" #: ../libvips/iofuncs/system.c:290 msgid "Command" msgstr "" #: ../libvips/iofuncs/system.c:291 msgid "Command to run" msgstr "" #: ../libvips/iofuncs/system.c:297 msgid "Input format" msgstr "" #: ../libvips/iofuncs/system.c:298 msgid "Format for input filename" msgstr "" #: ../libvips/iofuncs/system.c:304 msgid "Output format" msgstr "" #: ../libvips/iofuncs/system.c:305 msgid "Format for output filename" msgstr "" #: ../libvips/iofuncs/system.c:312 msgid "Command log" msgstr "" #: ../libvips/iofuncs/header.c:1067 #, c-format msgid "field \"%s\" not found" msgstr "" #: ../libvips/iofuncs/header.c:1269 #, c-format msgid "field \"%s\" is of type %s, not %s" msgstr "" #: ../libvips/iofuncs/header.c:1498 #, c-format msgid "field \"%s\" is of type %s, not VipsRefString" msgstr "" #: ../libvips/iofuncs/init.c:234 #, c-format msgid "unable to load \"%s\" -- %s" msgstr "" #: ../libvips/iofuncs/init.c:655 msgid "show informative messages" msgstr "" #: ../libvips/iofuncs/init.c:658 msgid "abort on first error or warning" msgstr "" #: ../libvips/iofuncs/init.c:661 msgid "evaluate with N concurrent threads" msgstr "" #: ../libvips/iofuncs/init.c:664 msgid "set tile width to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:667 msgid "set tile height to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:670 msgid "set thinstrip height to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:673 msgid "set fatstrip height to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:676 msgid "show progress feedback" msgstr "" #: ../libvips/iofuncs/init.c:679 msgid "leak-check on exit" msgstr "" #: ../libvips/iofuncs/init.c:682 msgid "profile and dump timing on exit" msgstr "" #: ../libvips/iofuncs/init.c:685 msgid "images larger than N are decompressed to disc" msgstr "" #: ../libvips/iofuncs/init.c:688 msgid "disable vectorised versions of operations" msgstr "" #: ../libvips/iofuncs/init.c:691 msgid "cache at most N operations" msgstr "" #: ../libvips/iofuncs/init.c:694 msgid "cache at most N bytes in memory" msgstr "" #: ../libvips/iofuncs/init.c:697 msgid "allow at most N open files" msgstr "" #: ../libvips/iofuncs/init.c:700 msgid "trace operation cache" msgstr "" #: ../libvips/iofuncs/init.c:703 msgid "dump operation cache on exit" msgstr "" #: ../libvips/iofuncs/init.c:706 msgid "print libvips version" msgstr "" #: ../libvips/iofuncs/init.c:1091 msgid "flag not in [0, 5]" msgstr "" #: ../libvips/iofuncs/region.c:585 ../libvips/iofuncs/region.c:657 #: ../libvips/iofuncs/region.c:805 ../libvips/iofuncs/region.c:1516 msgid "valid clipped to nothing" msgstr "" #: ../libvips/iofuncs/region.c:702 msgid "bad image type" msgstr "" #: ../libvips/iofuncs/region.c:747 msgid "no pixel data on attached image" msgstr "" #: ../libvips/iofuncs/region.c:753 msgid "images do not match in pixel size" msgstr "" #: ../libvips/iofuncs/region.c:786 ../libvips/iofuncs/region.c:1498 msgid "dest too small" msgstr "" #: ../libvips/iofuncs/region.c:875 msgid "bad position" msgstr "" #: ../libvips/iofuncs/region.c:1291 msgid "stop requested" msgstr "" #: ../libvips/iofuncs/region.c:1376 ../libvips/iofuncs/region.c:1569 #, c-format msgid "unable to input from a %s image" msgstr "" #: ../libvips/iofuncs/region.c:1400 msgid "incomplete header" msgstr "" #: ../libvips/iofuncs/region.c:1472 msgid "inappropriate region type" msgstr "" #: ../libvips/iofuncs/vips.c:306 #, c-format msgid "\"%s\" is not a VIPS image" msgstr "" #: ../libvips/iofuncs/vips.c:406 msgid "unable to read history" msgstr "" #: ../libvips/iofuncs/vips.c:439 msgid "more than a 10 megabytes of XML? sufferin' succotash!" msgstr "" #: ../libvips/iofuncs/vips.c:487 msgid "incorrect namespace in XML" msgstr "" #: ../libvips/iofuncs/vips.c:611 msgid "error transforming from save format" msgstr "" #: ../libvips/iofuncs/vips.c:760 msgid "error transforming to save format" msgstr "" #: ../libvips/iofuncs/vips.c:904 #, c-format msgid "unable to read header for \"%s\"" msgstr "" #: ../libvips/iofuncs/vips.c:930 #, c-format msgid "error reading XML: %s" msgstr "" #: ../libvips/iofuncs/error.c:287 msgid "windows error" msgstr "" #: ../libvips/iofuncs/error.c:296 msgid "unix error" msgstr "" #: ../libvips/iofuncs/error.c:447 msgid "image must be uncoded" msgstr "" #: ../libvips/iofuncs/error.c:475 msgid "image coding must be 'none' or 'labq'" msgstr "" #: ../libvips/iofuncs/error.c:503 msgid "unknown image coding" msgstr "" #: ../libvips/iofuncs/error.c:528 #, c-format msgid "coding '%s' only" msgstr "" #: ../libvips/iofuncs/error.c:553 msgid "image must one band" msgstr "" #: ../libvips/iofuncs/error.c:578 #, c-format msgid "image must have %d bands" msgstr "" #: ../libvips/iofuncs/error.c:603 msgid "image must have one or three bands" msgstr "" #: ../libvips/iofuncs/error.c:629 #, c-format msgid "image must have at least %d bands" msgstr "" #: ../libvips/iofuncs/error.c:657 msgid "images must have the same number of bands, or one must be single-band" msgstr "" #: ../libvips/iofuncs/error.c:684 #, c-format msgid "image must have 1 or %d bands" msgstr "" #: ../libvips/iofuncs/error.c:708 msgid "image must be non-complex" msgstr "" #: ../libvips/iofuncs/error.c:732 msgid "image must be complex" msgstr "" #: ../libvips/iofuncs/error.c:759 msgid "image must be two-band or complex" msgstr "" #: ../libvips/iofuncs/error.c:785 #, c-format msgid "image must be %s" msgstr "" #: ../libvips/iofuncs/error.c:810 msgid "image must be integer" msgstr "" #: ../libvips/iofuncs/error.c:835 msgid "image must be unsigned integer" msgstr "" #: ../libvips/iofuncs/error.c:863 msgid "image must be 8- or 16-bit integer, signed or unsigned" msgstr "" #: ../libvips/iofuncs/error.c:890 msgid "image must be 8- or 16-bit unsigned integer" msgstr "" #: ../libvips/iofuncs/error.c:916 msgid "image must be 8- or 16-bit unsigned integer, or float" msgstr "" #: ../libvips/iofuncs/error.c:944 msgid "image must be unsigned int or float" msgstr "" #: ../libvips/iofuncs/error.c:969 msgid "images must match in size" msgstr "" #: ../libvips/iofuncs/error.c:995 msgid "images must be odd and square" msgstr "" #: ../libvips/iofuncs/error.c:1021 msgid "images must have the same number of bands" msgstr "" #: ../libvips/iofuncs/error.c:1075 msgid "images must have the same band format" msgstr "" #: ../libvips/iofuncs/error.c:1101 msgid "images must have the same coding" msgstr "" #: ../libvips/iofuncs/error.c:1124 #, c-format msgid "vector must have %d elements" msgstr "" #: ../libvips/iofuncs/error.c:1149 #, c-format msgid "vector must have 1 or %d elements" msgstr "" #: ../libvips/iofuncs/error.c:1174 msgid "histograms must have width or height 1" msgstr "" #: ../libvips/iofuncs/error.c:1179 msgid "histograms must have not have more than 65536 elements" msgstr "" #: ../libvips/iofuncs/error.c:1216 msgid "matrix image too large" msgstr "" #: ../libvips/iofuncs/error.c:1221 msgid "matrix image must have one band" msgstr "" #: ../libvips/iofuncs/error.c:1255 msgid "separable matrix images must have width or height 1" msgstr "" #: ../libvips/iofuncs/error.c:1282 msgid "precision must be int or float" msgstr "" #: ../libvips/iofuncs/util.c:518 msgid "unable to get file stats" msgstr "" #: ../libvips/iofuncs/util.c:674 #, c-format msgid "unable to open file \"%s\" for reading" msgstr "" #: ../libvips/iofuncs/util.c:696 #, c-format msgid "unable to open file \"%s\" for writing" msgstr "" #: ../libvips/iofuncs/util.c:718 #, c-format msgid "\"%s\" too long" msgstr "" #: ../libvips/iofuncs/util.c:765 #, c-format msgid "error reading from file \"%s\"" msgstr "" #: ../libvips/iofuncs/util.c:812 #, c-format msgid "write error (%zd out of %zd blocks written)" msgstr "" #: ../libvips/iofuncs/util.c:1084 ../libvips/iofuncs/util.c:1091 msgid "unable to truncate" msgstr "" #: ../libvips/iofuncs/util.c:1167 #, c-format msgid "unable to create directory \"%s\", %s" msgstr "" #: ../libvips/iofuncs/util.c:1191 #, c-format msgid "unable to remove directory \"%s\", %s" msgstr "" #: ../libvips/iofuncs/util.c:1208 #, c-format msgid "unable to rename file \"%s\" as \"%s\", %s" msgstr "" #: ../libvips/iofuncs/util.c:1348 msgid "unexpected end of string" msgstr "" #: ../libvips/iofuncs/util.c:1366 ../libvips/iofuncs/util.c:1436 #, c-format msgid "expected %s, saw %s" msgstr "" #: ../libvips/iofuncs/util.c:1750 msgid "no such enum type" msgstr "" #: ../libvips/iofuncs/util.c:1768 #, c-format msgid "enum '%s' has no member '%s', should be one of: %s" msgstr "" #: ../libvips/iofuncs/util.c:1786 msgid "no such flag type" msgstr "" #: ../libvips/iofuncs/util.c:1802 #, c-format msgid "flags '%s' has no member '%s', should be one of: %s" msgstr "" #: ../libvips/iofuncs/util.c:1889 msgid "unable to form filename" msgstr "" #: ../libvips/iofuncs/memory.c:251 msgid "vips_free: too many frees" msgstr "" #: ../libvips/iofuncs/memory.c:253 msgid "vips_free: too much free" msgstr "" #: ../libvips/iofuncs/sinkscreen.c:188 msgid "per-thread state for render" msgstr "" #: ../libvips/iofuncs/sinkscreen.c:1088 msgid "bad parameters" msgstr "" #: ../libvips/iofuncs/object.c:316 #, c-format msgid "parameter %s not set" msgstr "" #: ../libvips/iofuncs/object.c:751 #, c-format msgid "no property named `%s'" msgstr "" #: ../libvips/iofuncs/object.c:759 #, c-format msgid "no vips argument named `%s'" msgstr "" #: ../libvips/iofuncs/object.c:765 #, c-format msgid "argument `%s' has no instance" msgstr "" #: ../libvips/iofuncs/object.c:1561 msgid "base class" msgstr "" #: ../libvips/iofuncs/object.c:1575 msgid "Nickname" msgstr "" #: ../libvips/iofuncs/object.c:1576 msgid "Class nickname" msgstr "" #: ../libvips/iofuncs/object.c:1582 msgid "Description" msgstr "" #: ../libvips/iofuncs/object.c:1583 msgid "Class description" msgstr "" #: ../libvips/iofuncs/object.c:1781 #, c-format msgid "no value supplied for argument '%s'" msgstr "" #: ../libvips/iofuncs/object.c:1784 #, c-format msgid "no value supplied for argument '%s' ('%s')" msgstr "" #: ../libvips/iofuncs/object.c:1942 ../libvips/iofuncs/object.c:1961 #: ../libvips/iofuncs/object.c:2014 #, c-format msgid "'%s' is not an integer" msgstr "" #: ../libvips/iofuncs/object.c:1978 #, c-format msgid "'%s' is not a double" msgstr "" #: ../libvips/iofuncs/object.c:2293 #, c-format msgid "expected string or ), saw %s" msgstr "" #: ../libvips/iofuncs/object.c:2336 #, c-format msgid "unable to set '%s'" msgstr "" #: ../libvips/iofuncs/object.c:2349 msgid "not , or ) after parameter" msgstr "" #: ../libvips/iofuncs/object.c:2356 msgid "extra tokens after ')'" msgstr "" #: ../libvips/iofuncs/buf.c:610 #, c-format msgid "%zd bytes of binary data" msgstr "" #. File length unit. #. #: ../libvips/iofuncs/buf.c:679 msgid "bytes" msgstr "" #. Kilobyte unit. #. #: ../libvips/iofuncs/buf.c:683 msgid "KB" msgstr "" #. Megabyte unit. #. #: ../libvips/iofuncs/buf.c:687 msgid "MB" msgstr "" #. Gigabyte unit. #. #: ../libvips/iofuncs/buf.c:691 msgid "GB" msgstr "" #. Terabyte unit. #. #: ../libvips/iofuncs/buf.c:695 msgid "TB" msgstr "" #. We shouldn't really be used for large amounts of data, plus #. * we are using int offsets. #. * #. * A large ICC profile can be 1MB, so allow 10MB of b64. #. #. We shouldn't really be used for large amounts of data, plus #. * we are using an int for offset. #. #: ../libvips/iofuncs/base64.c:177 ../libvips/iofuncs/base64.c:244 msgid "too much data" msgstr "" #: ../libvips/morphology/morph.c:139 msgid "morphology operation" msgstr "" #: ../libvips/morphology/morph.c:155 msgid "Morphology" msgstr "" #: ../libvips/morphology/morph.c:156 msgid "Morphological operation to perform" msgstr "" #: ../libvips/morphology/rank.c:359 msgid "index out of range" msgstr "" #: ../libvips/morphology/rank.c:409 msgid "rank filter" msgstr "" #: ../libvips/morphology/rank.c:433 msgid "index" msgstr "" #: ../libvips/morphology/rank.c:434 msgid "Select pixel at index" msgstr "" #: ../libvips/morphology/countlines.c:131 msgid "count lines in an image" msgstr "" #: ../libvips/morphology/countlines.c:135 msgid "Nolines" msgstr "" #: ../libvips/morphology/countlines.c:136 msgid "Number of lines" msgstr "" #: ../libvips/morphology/countlines.c:143 msgid "Countlines left-right or up-down" msgstr "" #: ../libvips/morphology/labelregions.c:121 msgid "label regions in an image" msgstr "" #: ../libvips/morphology/labelregions.c:126 msgid "Mask of region labels" msgstr "" #: ../libvips/morphology/labelregions.c:131 msgid "Segments" msgstr "" #: ../libvips/morphology/labelregions.c:132 msgid "Number of discrete contigious regions" msgstr "" #: ../libvips/morphology/morphology.c:111 msgid "morphological operations" msgstr "" #: ../libvips/morphology/hitmiss.c:321 #, c-format msgid "bad mask element (%d should be 0, 128 or 255)" msgstr "" #: ../libvips/mosaicing/im_tbmerge.c:164 ../libvips/mosaicing/im_tbmerge.c:218 #: ../libvips/mosaicing/im_tbmerge.c:536 ../libvips/mosaicing/im_lrmerge.c:216 #: ../libvips/mosaicing/im_lrmerge.c:265 ../libvips/mosaicing/im_lrmerge.c:606 msgid "internal error" msgstr "" #: ../libvips/mosaicing/im_tbmerge.c:635 ../libvips/mosaicing/im_lrmerge.c:806 msgid "unknown coding type" msgstr "" #: ../libvips/mosaicing/im_tbmerge.c:653 ../libvips/mosaicing/im_lrmerge.c:823 msgid "too much overlap" msgstr "" #: ../libvips/mosaicing/im_chkpair.c:201 msgid "inputs incompatible" msgstr "" #: ../libvips/mosaicing/im_chkpair.c:205 ../libvips/mosaicing/im_tbcalcon.c:103 msgid "help!" msgstr "" #: ../libvips/mosaicing/im_lrmosaic.c:114 ../libvips/mosaicing/im_tbmosaic.c:90 msgid "bad area parameters" msgstr "" #: ../libvips/mosaicing/im_lrmosaic.c:135 #: ../libvips/mosaicing/im_tbmosaic.c:111 msgid "overlap too small for search" msgstr "" #: ../libvips/mosaicing/im_lrmosaic.c:168 #: ../libvips/mosaicing/im_tbmosaic.c:144 msgid "unknown Coding type" msgstr "" #: ../libvips/mosaicing/im_tbcalcon.c:117 msgid "overlap too small" msgstr "" #: ../libvips/mosaicing/merge.c:105 msgid "merge two images" msgstr "" #: ../libvips/mosaicing/merge.c:110 ../libvips/mosaicing/mosaic.c:181 #: ../libvips/mosaicing/match.c:205 ../libvips/mosaicing/mosaic1.c:490 msgid "Reference image" msgstr "" #: ../libvips/mosaicing/merge.c:115 ../libvips/mosaicing/mosaic.c:186 #: ../libvips/mosaicing/match.c:210 ../libvips/mosaicing/mosaic1.c:495 msgid "Secondary" msgstr "" #: ../libvips/mosaicing/merge.c:116 ../libvips/mosaicing/mosaic.c:187 #: ../libvips/mosaicing/match.c:211 ../libvips/mosaicing/mosaic1.c:496 msgid "Secondary image" msgstr "" #: ../libvips/mosaicing/merge.c:128 msgid "Horizontal or vertcial merge" msgstr "" #: ../libvips/mosaicing/merge.c:134 msgid "dx" msgstr "" #: ../libvips/mosaicing/merge.c:135 msgid "Horizontal displacement from sec to ref" msgstr "" #: ../libvips/mosaicing/merge.c:141 msgid "dy" msgstr "" #: ../libvips/mosaicing/merge.c:142 msgid "Vertical displacement from sec to ref" msgstr "" #: ../libvips/mosaicing/merge.c:148 ../libvips/mosaicing/mosaic.c:247 #: ../libvips/mosaicing/mosaic1.c:597 msgid "Max blend" msgstr "" #: ../libvips/mosaicing/merge.c:149 ../libvips/mosaicing/mosaic.c:248 #: ../libvips/mosaicing/mosaic1.c:598 msgid "Maximum blend size" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:115 #, c-format msgid "substitute image \"%s\" is not the same size as \"%s\"" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:160 #: ../libvips/mosaicing/global_balance.c:1767 msgid "global balance an image mosaic" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:176 msgid "old_str" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:177 msgid "Search for this string" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:183 msgid "new_str" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:184 msgid "And swap for this string" msgstr "" #: ../libvips/mosaicing/im_lrcalcon.c:204 msgid "overlap too small for your search size" msgstr "" #: ../libvips/mosaicing/im_lrcalcon.c:243 #, c-format msgid "found %d tie-points, need at least %d" msgstr "" #: ../libvips/mosaicing/im_lrcalcon.c:288 msgid "not 1-band uchar image" msgstr "" #: ../libvips/mosaicing/global_balance.c:148 msgid "no matching '>'" msgstr "" #: ../libvips/mosaicing/global_balance.c:157 msgid "too many items" msgstr "" #: ../libvips/mosaicing/global_balance.c:451 msgid "circularity detected" msgstr "" #: ../libvips/mosaicing/global_balance.c:485 #: ../libvips/mosaicing/global_balance.c:545 #, c-format msgid "image \"%s\" used twice as output" msgstr "" #: ../libvips/mosaicing/global_balance.c:594 msgid "bad number of args in join line" msgstr "" #: ../libvips/mosaicing/global_balance.c:636 msgid "bad number of args in join1 line" msgstr "" #: ../libvips/mosaicing/global_balance.c:672 msgid "bad number of args in copy line" msgstr "" #: ../libvips/mosaicing/global_balance.c:730 msgid "" "mosaic root not found in desc file\n" "is this really a mosaiced image?" msgstr "" #: ../libvips/mosaicing/global_balance.c:741 msgid "more than one root" msgstr "" #: ../libvips/mosaicing/global_balance.c:1060 msgid "empty overlap!" msgstr "" #: ../libvips/mosaicing/global_balance.c:1783 msgid "gamma" msgstr "" #: ../libvips/mosaicing/global_balance.c:1784 msgid "Image gamma" msgstr "" #: ../libvips/mosaicing/global_balance.c:1790 msgid "Int output" msgstr "" #: ../libvips/mosaicing/global_balance.c:1791 msgid "Integer output" msgstr "" #: ../libvips/mosaicing/im_avgdxdy.c:65 msgid "no points to average" msgstr "" #: ../libvips/mosaicing/im_lrmerge.c:706 msgid "mwidth must be -1 or >= 0" msgstr "" #: ../libvips/mosaicing/im_lrmerge.c:735 msgid "no overlap" msgstr "" #: ../libvips/mosaicing/mosaic.c:176 msgid "mosaic two images" msgstr "" #: ../libvips/mosaicing/mosaic.c:199 ../libvips/mosaicing/mosaic1.c:508 msgid "Horizontal or vertcial mosaic" msgstr "" #: ../libvips/mosaicing/mosaic.c:205 msgid "xref" msgstr "" #: ../libvips/mosaicing/mosaic.c:206 ../libvips/mosaicing/mosaic.c:213 msgid "Position of reference tie-point" msgstr "" #: ../libvips/mosaicing/mosaic.c:212 msgid "yref" msgstr "" #: ../libvips/mosaicing/mosaic.c:219 msgid "xsec" msgstr "" #: ../libvips/mosaicing/mosaic.c:220 ../libvips/mosaicing/mosaic.c:227 msgid "Position of secondary tie-point" msgstr "" #: ../libvips/mosaicing/mosaic.c:226 msgid "ysec" msgstr "" #: ../libvips/mosaicing/mosaic.c:233 ../libvips/mosaicing/match.c:278 #: ../libvips/mosaicing/mosaic1.c:570 msgid "hwindow" msgstr "" #: ../libvips/mosaicing/mosaic.c:234 ../libvips/mosaicing/match.c:279 #: ../libvips/mosaicing/mosaic1.c:571 msgid "Half window size" msgstr "" #: ../libvips/mosaicing/mosaic.c:240 ../libvips/mosaicing/match.c:285 #: ../libvips/mosaicing/mosaic1.c:577 msgid "harea" msgstr "" #: ../libvips/mosaicing/mosaic.c:241 ../libvips/mosaicing/match.c:286 #: ../libvips/mosaicing/mosaic1.c:578 msgid "Half area size" msgstr "" #: ../libvips/mosaicing/mosaic.c:254 ../libvips/mosaicing/mosaic1.c:604 msgid "Search band" msgstr "" #: ../libvips/mosaicing/mosaic.c:255 ../libvips/mosaicing/mosaic1.c:605 msgid "Band to search for features on" msgstr "" #: ../libvips/mosaicing/mosaic.c:261 ../libvips/mosaicing/mosaic.c:268 msgid "Integer offset" msgstr "" #: ../libvips/mosaicing/mosaic.c:262 ../libvips/mosaicing/mosaic.c:269 msgid "Detected integer offset" msgstr "" #: ../libvips/mosaicing/mosaic.c:276 msgid "Detected scale" msgstr "" #: ../libvips/mosaicing/mosaic.c:283 msgid "Detected rotation" msgstr "" #: ../libvips/mosaicing/mosaic.c:289 ../libvips/mosaicing/mosaic.c:296 msgid "First-order displacement" msgstr "" #: ../libvips/mosaicing/mosaic.c:290 ../libvips/mosaicing/mosaic.c:297 msgid "Detected first-order displacement" msgstr "" #: ../libvips/mosaicing/im_clinear.c:137 msgid "im_invmat failed" msgstr "" #: ../libvips/mosaicing/match.c:200 msgid "first-order match of two images" msgstr "" #: ../libvips/mosaicing/match.c:222 ../libvips/mosaicing/mosaic1.c:514 msgid "xr1" msgstr "" #: ../libvips/mosaicing/match.c:223 ../libvips/mosaicing/match.c:230 #: ../libvips/mosaicing/mosaic1.c:515 ../libvips/mosaicing/mosaic1.c:522 msgid "Position of first reference tie-point" msgstr "" #: ../libvips/mosaicing/match.c:229 ../libvips/mosaicing/mosaic1.c:521 msgid "yr1" msgstr "" #: ../libvips/mosaicing/match.c:236 ../libvips/mosaicing/mosaic1.c:528 msgid "xs1" msgstr "" #: ../libvips/mosaicing/match.c:237 ../libvips/mosaicing/match.c:244 #: ../libvips/mosaicing/mosaic1.c:529 ../libvips/mosaicing/mosaic1.c:536 msgid "Position of first secondary tie-point" msgstr "" #: ../libvips/mosaicing/match.c:243 ../libvips/mosaicing/mosaic1.c:535 msgid "ys1" msgstr "" #: ../libvips/mosaicing/match.c:250 ../libvips/mosaicing/mosaic1.c:542 msgid "xr2" msgstr "" #: ../libvips/mosaicing/match.c:251 ../libvips/mosaicing/match.c:258 #: ../libvips/mosaicing/mosaic1.c:543 ../libvips/mosaicing/mosaic1.c:550 msgid "Position of second reference tie-point" msgstr "" #: ../libvips/mosaicing/match.c:257 ../libvips/mosaicing/mosaic1.c:549 msgid "yr2" msgstr "" #: ../libvips/mosaicing/match.c:264 ../libvips/mosaicing/mosaic1.c:556 msgid "xs2" msgstr "" #: ../libvips/mosaicing/match.c:265 ../libvips/mosaicing/match.c:272 #: ../libvips/mosaicing/mosaic1.c:557 ../libvips/mosaicing/mosaic1.c:564 msgid "Position of second secondary tie-point" msgstr "" #: ../libvips/mosaicing/match.c:271 ../libvips/mosaicing/mosaic1.c:563 msgid "ys2" msgstr "" #: ../libvips/mosaicing/match.c:292 ../libvips/mosaicing/mosaic1.c:584 msgid "search" msgstr "" #: ../libvips/mosaicing/match.c:293 ../libvips/mosaicing/mosaic1.c:585 msgid "Search to improve tie-points" msgstr "" #: ../libvips/mosaicing/match.c:299 ../libvips/mosaicing/mosaic1.c:591 #: ../libvips/resample/affine.c:568 ../libvips/resample/mapim.c:418 #: ../libvips/resample/resize.c:384 ../libvips/resample/quadratic.c:354 #: ../libvips/resample/similarity.c:185 msgid "Interpolate" msgstr "" #: ../libvips/mosaicing/match.c:300 ../libvips/mosaicing/mosaic1.c:592 #: ../libvips/resample/affine.c:569 ../libvips/resample/mapim.c:419 #: ../libvips/resample/resize.c:385 ../libvips/resample/similarity.c:186 msgid "Interpolate pixels with this" msgstr "" #: ../libvips/mosaicing/mosaic1.c:485 msgid "first-order mosaic of two images" msgstr "" #: ../libvips/resample/affine.c:486 msgid "output coordinates out of range" msgstr "" #: ../libvips/resample/affine.c:557 msgid "affine transform of an image" msgstr "" #: ../libvips/resample/affine.c:561 msgid "Matrix" msgstr "" #: ../libvips/resample/affine.c:562 msgid "Transformation matrix" msgstr "" #: ../libvips/resample/affine.c:574 msgid "Output rect" msgstr "" #: ../libvips/resample/affine.c:575 msgid "Area of output to generate" msgstr "" #: ../libvips/resample/affine.c:581 ../libvips/resample/affine.c:588 #: ../libvips/resample/similarity.c:191 ../libvips/resample/similarity.c:198 msgid "Output offset" msgstr "" #: ../libvips/resample/affine.c:582 ../libvips/resample/similarity.c:192 msgid "Horizontal output displacement" msgstr "" #: ../libvips/resample/affine.c:589 ../libvips/resample/similarity.c:199 msgid "Vertical output displacement" msgstr "" #: ../libvips/resample/affine.c:595 ../libvips/resample/affine.c:602 #: ../libvips/resample/resize.c:368 ../libvips/resample/resize.c:375 #: ../libvips/resample/similarity.c:205 ../libvips/resample/similarity.c:212 msgid "Input offset" msgstr "" #: ../libvips/resample/affine.c:596 ../libvips/resample/resize.c:369 #: ../libvips/resample/similarity.c:206 msgid "Horizontal input displacement" msgstr "" #: ../libvips/resample/affine.c:603 ../libvips/resample/resize.c:376 #: ../libvips/resample/similarity.c:213 msgid "Vertical input displacement" msgstr "" #: ../libvips/resample/shrinkv.c:344 ../libvips/resample/shrinkh.c:246 msgid "shrink factors should be >= 1" msgstr "" #: ../libvips/resample/shrinkv.c:424 ../libvips/resample/reducev.cpp:895 msgid "shrink an image vertically" msgstr "" #: ../libvips/resample/shrinkv.c:430 ../libvips/resample/reduce.c:141 #: ../libvips/resample/shrink.c:137 ../libvips/resample/reducev.cpp:901 msgid "Vshrink" msgstr "" #: ../libvips/resample/shrinkv.c:431 ../libvips/resample/shrinkv.c:440 #: ../libvips/resample/reduce.c:142 ../libvips/resample/reduce.c:172 #: ../libvips/resample/shrink.c:138 ../libvips/resample/shrink.c:161 #: ../libvips/resample/reducev.cpp:902 ../libvips/resample/reducev.cpp:925 msgid "Vertical shrink factor" msgstr "" #: ../libvips/resample/shrinkv.c:439 ../libvips/resample/reduce.c:171 #: ../libvips/resample/shrink.c:160 ../libvips/resample/reducev.cpp:924 msgid "Yshrink" msgstr "" #: ../libvips/resample/mapim.c:408 msgid "resample with an mapim image" msgstr "" #: ../libvips/resample/mapim.c:413 msgid "Index pixels with this" msgstr "" #: ../libvips/resample/resize.c:331 msgid "resize an image" msgstr "" #: ../libvips/resample/resize.c:337 msgid "Scale factor" msgstr "" #: ../libvips/resample/resize.c:338 msgid "Scale image by this factor" msgstr "" #: ../libvips/resample/resize.c:344 msgid "Vertical scale factor" msgstr "" #: ../libvips/resample/resize.c:345 msgid "Vertical scale image by this factor" msgstr "" #: ../libvips/resample/resize.c:351 ../libvips/resample/reduce.c:148 #: ../libvips/resample/reduceh.cpp:575 ../libvips/resample/reducev.cpp:908 msgid "Kernel" msgstr "" #: ../libvips/resample/resize.c:352 ../libvips/resample/reduce.c:149 #: ../libvips/resample/reduceh.cpp:576 ../libvips/resample/reducev.cpp:909 msgid "Resampling kernel" msgstr "" #: ../libvips/resample/resize.c:358 ../libvips/resample/reduce.c:155 #: ../libvips/resample/reduceh.cpp:582 ../libvips/resample/reducev.cpp:915 msgid "Centre" msgstr "" #: ../libvips/resample/resize.c:359 ../libvips/resample/reduce.c:156 #: ../libvips/resample/reduceh.cpp:583 ../libvips/resample/reducev.cpp:916 msgid "Use centre sampling convention" msgstr "" #: ../libvips/resample/reduce.c:128 msgid "reduce an image" msgstr "" #: ../libvips/resample/reduce.c:134 ../libvips/resample/shrinkh.c:326 #: ../libvips/resample/shrink.c:144 ../libvips/resample/reduceh.cpp:568 msgid "Hshrink" msgstr "" #: ../libvips/resample/reduce.c:135 ../libvips/resample/reduce.c:165 #: ../libvips/resample/shrinkh.c:327 ../libvips/resample/shrinkh.c:336 #: ../libvips/resample/shrink.c:145 ../libvips/resample/shrink.c:154 #: ../libvips/resample/reduceh.cpp:569 ../libvips/resample/reduceh.cpp:592 msgid "Horizontal shrink factor" msgstr "" #: ../libvips/resample/reduce.c:164 ../libvips/resample/shrinkh.c:335 #: ../libvips/resample/shrink.c:153 ../libvips/resample/reduceh.cpp:591 msgid "Xshrink" msgstr "" #: ../libvips/resample/shrinkh.c:320 ../libvips/resample/reduceh.cpp:562 msgid "shrink an image horizontally" msgstr "" #: ../libvips/resample/resample.c:128 msgid "resample operations" msgstr "" #: ../libvips/resample/quadratic.c:270 msgid "coefficient matrix must have width 2" msgstr "" #: ../libvips/resample/quadratic.c:292 msgid "coefficient matrix must have height 1, 3, 4 or 6" msgstr "" #: ../libvips/resample/quadratic.c:344 msgid "resample an image with a quadratic transform" msgstr "" #: ../libvips/resample/quadratic.c:348 msgid "Coeff" msgstr "" #: ../libvips/resample/quadratic.c:349 msgid "Coefficient matrix" msgstr "" #: ../libvips/resample/quadratic.c:355 msgid "Interpolate values with this" msgstr "" #: ../libvips/resample/thumbnail.c:436 #, c-format msgid "unable to import with embedded profile: %s" msgstr "" #: ../libvips/resample/thumbnail.c:516 msgid "thumbnail generation" msgstr "" #: ../libvips/resample/thumbnail.c:526 msgid "Target width" msgstr "" #: ../libvips/resample/thumbnail.c:527 msgid "Size to this width" msgstr "" #: ../libvips/resample/thumbnail.c:533 msgid "Target height" msgstr "" #: ../libvips/resample/thumbnail.c:534 msgid "Size to this height" msgstr "" #: ../libvips/resample/thumbnail.c:540 msgid "size" msgstr "" #: ../libvips/resample/thumbnail.c:541 msgid "Only upsize, only downsize, or both" msgstr "" #: ../libvips/resample/thumbnail.c:547 msgid "Auto rotate" msgstr "" #: ../libvips/resample/thumbnail.c:548 msgid "Use orientation tags to rotate image upright" msgstr "" #: ../libvips/resample/thumbnail.c:554 msgid "Crop" msgstr "" #: ../libvips/resample/thumbnail.c:555 msgid "Reduce to fill target rectangle, then crop" msgstr "" #: ../libvips/resample/thumbnail.c:561 msgid "Linear" msgstr "" #: ../libvips/resample/thumbnail.c:562 msgid "Reduce in linear light" msgstr "" #: ../libvips/resample/thumbnail.c:568 msgid "Import profile" msgstr "" #: ../libvips/resample/thumbnail.c:569 msgid "Fallback import profile" msgstr "" #: ../libvips/resample/thumbnail.c:575 msgid "Export profile" msgstr "" #: ../libvips/resample/thumbnail.c:576 msgid "Fallback export profile" msgstr "" #: ../libvips/resample/thumbnail.c:663 msgid "generate thumbnail from file" msgstr "" #: ../libvips/resample/thumbnail.c:670 msgid "Filename to read from" msgstr "" #: ../libvips/resample/thumbnail.c:830 msgid "generate thumbnail from buffer" msgstr "" #: ../libvips/resample/shrink.c:128 msgid "shrink an image" msgstr "" #: ../libvips/resample/similarity.c:167 msgid "similarity transform of an image" msgstr "" #: ../libvips/resample/similarity.c:172 msgid "Scale by this factor" msgstr "" #: ../libvips/resample/similarity.c:179 msgid "Rotate anticlockwise by this many degrees" msgstr "" #: ../libvips/resample/interpolate.c:183 msgid "VIPS interpolators" msgstr "" #: ../libvips/resample/interpolate.c:359 msgid "nearest-neighbour interpolation" msgstr "" #: ../libvips/resample/interpolate.c:556 msgid "bilinear interpolation" msgstr "" #: ../libvips/video/im_video_test.c:52 msgid "error requested" msgstr "" #: ../tools/vips.c:154 #, c-format msgid "'%s' is not the name of a vips class" msgstr "" #: ../tools/vips.c:170 msgid "list objects" msgstr "" #: ../tools/vips.c:171 msgid "BASE-NAME" msgstr "" #: ../tools/vips.c:173 msgid "load PLUGIN" msgstr "" #: ../tools/vips.c:174 msgid "PLUGIN" msgstr "" #: ../tools/vips.c:176 msgid "print version" msgstr "" #: ../tools/vips.c:219 #, c-format msgid "no package or function \"%s\"" msgstr "" #: ../tools/vips.c:1000 msgid "list classes|packages|all|package-name|operation-name" msgstr "" #: ../tools/vips.c:1002 msgid "generate headers for C++ binding" msgstr "" #: ../tools/vips.c:1004 msgid "generate bodies for C++ binding" msgstr "" #: ../tools/vips.c:1006 msgid "generate links for vips/bin" msgstr "" #: ../tools/vips.c:1008 msgid "list possible actions" msgstr "" #: ../tools/vips.c:1027 msgid "execute vips operation OPER" msgstr "" #: ../tools/vips.c:1070 msgid "Operation help" msgstr "" #: ../tools/vips.c:1116 msgid "[ACTION] [OPTIONS] [PARAMETERS] - VIPS driver program" msgstr "" #: ../tools/vips.c:1300 #, c-format msgid "unknown action \"%s\"" msgstr "" #: ../tools/vipsedit.c:83 msgid "tag file as big or little-endian" msgstr "" #: ../tools/vipsedit.c:85 msgid "set width to N pixels" msgstr "" #: ../tools/vipsedit.c:87 msgid "set height to N pixels" msgstr "" #: ../tools/vipsedit.c:89 msgid "set Bands to N" msgstr "" #: ../tools/vipsedit.c:91 msgid "set BandFmt to F (eg. uchar, float)" msgstr "" #: ../tools/vipsedit.c:93 msgid "set interpretation to I (eg. xyz)" msgstr "" #: ../tools/vipsedit.c:95 msgid "set Coding to C (eg. labq)" msgstr "" #: ../tools/vipsedit.c:97 msgid "set Xres to R pixels/mm" msgstr "" #: ../tools/vipsedit.c:99 msgid "set Yres to R pixels/mm" msgstr "" #: ../tools/vipsedit.c:101 msgid "set Xoffset to N pixels" msgstr "" #: ../tools/vipsedit.c:103 msgid "set Yoffset to N pixels" msgstr "" #: ../tools/vipsedit.c:105 msgid "replace extension block with stdin" msgstr "" #: ../tools/vipsedit.c:107 msgid "set Xsize to N (deprecated, use width)" msgstr "" #: ../tools/vipsedit.c:109 msgid "set Ysize to N (deprecated, use height)" msgstr "" #: ../tools/vipsedit.c:111 msgid "set Type to T (deprecated, use interpretation)" msgstr "" #: ../tools/vipsedit.c:122 #, c-format msgid "'%s' is not a positive integer" msgstr "" #: ../tools/vipsedit.c:135 msgid "unable to start VIPS" msgstr "" #: ../tools/vipsedit.c:147 msgid "vipsedit - edit vips file header" msgstr "" #: ../tools/vipsedit.c:175 #, c-format msgid "usage: %s [OPTION...] vips-file\n" msgstr "" #: ../tools/vipsedit.c:182 #, c-format msgid "could not open image %s" msgstr "" #: ../tools/vipsedit.c:185 #, c-format msgid "could not read VIPS header for %s" msgstr "" #: ../tools/vipsedit.c:194 #, c-format msgid "bad endian-ness %s, should be 'big' or 'little'" msgstr "" #: ../tools/vipsedit.c:207 #, c-format msgid "bad format %s" msgstr "" #: ../tools/vipsedit.c:215 #, c-format msgid "bad interpretation %s" msgstr "" #: ../tools/vipsedit.c:223 #, c-format msgid "bad coding %s" msgstr "" #: ../tools/vipsedit.c:236 #, c-format msgid "could not seek on %s" msgstr "" #: ../tools/vipsedit.c:239 #, c-format msgid "could not write to %s" msgstr "" #: ../tools/vipsedit.c:246 msgid "could not get ext data" msgstr "" #: ../tools/vipsedit.c:255 msgid "could not set extension" msgstr "" #: ../tools/vipsheader.c:88 msgid "show all fields" msgstr "" #: ../tools/vipsheader.c:90 msgid "" "print value of FIELD (\"getext\" reads extension block, \"Hist\" reads image " "history)" msgstr "" #: ../tools/vipsheader.c:181 msgid "- print image header" msgstr "" #: ../tools/vipsthumbnail.c:136 msgid "shrink to SIZE or to WIDTHxHEIGHT" msgstr "" #: ../tools/vipsthumbnail.c:137 msgid "SIZE" msgstr "" #: ../tools/vipsthumbnail.c:140 msgid "set output to FORMAT" msgstr "" #: ../tools/vipsthumbnail.c:141 ../tools/vipsthumbnail.c:145 msgid "FORMAT" msgstr "" #: ../tools/vipsthumbnail.c:144 msgid "set output format string to FORMAT" msgstr "" #: ../tools/vipsthumbnail.c:148 msgid "export with PROFILE" msgstr "" #: ../tools/vipsthumbnail.c:149 ../tools/vipsthumbnail.c:153 msgid "PROFILE" msgstr "" #: ../tools/vipsthumbnail.c:152 msgid "import untagged images with PROFILE" msgstr "" #: ../tools/vipsthumbnail.c:156 msgid "process in linear space" msgstr "" #: ../tools/vipsthumbnail.c:159 msgid "crop exactly to SIZE" msgstr "" #: ../tools/vipsthumbnail.c:162 msgid "auto-rotate" msgstr "" #: ../tools/vipsthumbnail.c:165 msgid "delete profile from exported image" msgstr "" #: ../tools/vipsthumbnail.c:169 ../tools/vipsthumbnail.c:172 #: ../tools/vipsthumbnail.c:175 ../tools/vipsthumbnail.c:178 #: ../tools/vipsthumbnail.c:181 msgid "(deprecated, does nothing)" msgstr "" #: ../tools/vipsthumbnail.c:375 msgid "- thumbnail generator" msgstr "" #: ../tools/vipsthumbnail.c:406 msgid "auto-rotate disabled: libvips built without exif support" msgstr "" #: ../libvips/resample/reduceh.cpp:457 msgid "reduce factors should be >= 1" msgstr "" #: ../libvips/resample/reduceh.cpp:471 ../libvips/resample/reducev.cpp:850 msgid "reduce factor too large" msgstr "" #: ../libvips/resample/bicubic.cpp:639 msgid "bicubic interpolation (Catmull-Rom)" msgstr "" #: ../libvips/resample/vsqbs.cpp:405 msgid "B-Splines with antialiasing smoothing" msgstr "" #: ../libvips/resample/nohalo.cpp:1586 msgid "edge sharpening resampler with halo reduction" msgstr "" #: ../libvips/resample/lbb.cpp:865 msgid "reduced halo bicubic" msgstr "" #: ../libvips/resample/reducev.cpp:839 msgid "reduce factor should be >= 1" msgstr "" libvips-8.9.1/po/malkovich.gmo000066400000000000000000000005741361153320700163070ustar00rootroot00000000000000$,8B9Project-Id-Version: nip2 7.9.3 Report-Msgid-Bugs-To: POT-Creation-Date: 2005-06-08 14:51+0100 PO-Revision-Date: 2003-11-04 12:30+0000 Last-Translator: malkovich Language-Team: malkovich MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit libvips-8.9.1/po/malkovich.po000066400000000000000000002017011361153320700161360ustar00rootroot00000000000000# test translation file # msgid "" msgstr "" "Project-Id-Version: nip2 7.9.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-06-08 14:51+0100\n" "PO-Revision-Date: 2003-11-04 12:30+0000\n" "Last-Translator: malkovich \n" "Language-Team: malkovich \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: libsrc/convolution/im_addgnoise.c:78 #, fuzzy msgid "too many bands" msgstr "Malkovich" #: libsrc/convolution/im_sharpen.c:247 msgid "input not 3-band short" msgstr "" #: libsrc/convolution/im_sharpen.c:258 msgid "parameters out of range" msgstr "" #: libsrc/colour/im_icc_transform.c:200 libsrc/colour/im_icc_transform.c:210 #, fuzzy, c-format msgid "unable to open profile \"%s\"" msgstr "Malkovich" #: libsrc/matrix/im_invmat.c:69 msgid "singular matrix in ludcmp" msgstr "" #: libsrc/matrix/im_invmat.c:206 #, fuzzy msgid "singular matrix" msgstr "Malkovich" #: libsrc/acquire/im_clamp.c:69 msgid "bad input format" msgstr "" #: libsrc/acquire/im_clamp.c:74 msgid "bad black format" msgstr "" #: libsrc/freq_filt/im_invfftr.c:89 libsrc/freq_filt/im_invfftr.c:171 #: libsrc/freq_filt/im_invfft.c:94 libsrc/freq_filt/im_invfft.c:142 #: libsrc/freq_filt/im_fwfft.c:112 libsrc/freq_filt/im_fwfft.c:217 #: libsrc/freq_filt/im_fwfft.c:308 libsrc/freq_filt/im_fwfft.c:420 #, fuzzy msgid "one band uncoded only" msgstr "Malkovich" #: libsrc/freq_filt/im_invfftr.c:126 libsrc/freq_filt/im_invfftr.c:209 #: libsrc/freq_filt/im_invfft.c:106 libsrc/freq_filt/im_invfft.c:156 #: libsrc/freq_filt/im_fwfft.c:123 libsrc/freq_filt/im_fwfft.c:228 #: libsrc/freq_filt/im_fwfft.c:321 libsrc/freq_filt/im_fwfft.c:433 #, fuzzy msgid "unable to create transform plan" msgstr "Malkovich" #: libsrc/freq_filt/im_invfftr.c:252 libsrc/freq_filt/im_invfft.c:199 #, fuzzy msgid "one band complex uncoded only" msgstr "Malkovich" #: libsrc/freq_filt/im_invfftr.c:256 libsrc/freq_filt/im_invfft.c:203 #: libsrc/freq_filt/im_fwfft.c:515 #, fuzzy msgid "sides must be power of 2" msgstr "Malkovich" #: libsrc/freq_filt/im_invfftr.c:276 libsrc/freq_filt/im_invfft.c:223 #: libsrc/freq_filt/im_fwfft.c:535 msgid "fft_sp failed" msgstr "" #: libsrc/freq_filt/im_fwfft.c:511 msgid "one band non-complex uncoded only" msgstr "" #: libsrc/conversion/im_extract.c:162 msgid "bad extract area" msgstr "" #: libsrc/conversion/im_extract.c:167 libsrc/conversion/im_extract.c:252 msgid "band selection out of range" msgstr "" #: libsrc/conversion/im_extract.c:172 #, fuzzy msgid "unknown image coding type" msgstr "Malkovich" #: libsrc/conversion/im_extract.c:177 msgid "can't extract band from IM_CODING_LABQ" msgstr "" #: libsrc/conversion/im_extract.c:256 libsrc/arithmetic/im_powtra.c:184 #: libsrc/arithmetic/im_deviate.c:171 libsrc/arithmetic/im_multiply.c:186 #: libsrc/arithmetic/im_ceil.c:92 libsrc/arithmetic/im_maxpos.c:94 #: libsrc/arithmetic/im_costra.c:117 libsrc/arithmetic/im_costra.c:202 #: libsrc/arithmetic/im_tantra.c:117 libsrc/arithmetic/im_tantra.c:203 #: libsrc/arithmetic/im_measure.c:189 libsrc/arithmetic/im_sign.c:146 #: libsrc/arithmetic/im_expntra.c:184 libsrc/arithmetic/im_logtra.c:123 #: libsrc/arithmetic/im_abs.c:147 libsrc/arithmetic/im_add.c:254 #: libsrc/arithmetic/im_avg.c:166 libsrc/arithmetic/im_max.c:232 #: libsrc/arithmetic/im_min.c:231 libsrc/arithmetic/im_lintra.c:281 #: libsrc/arithmetic/im_invert.c:117 libsrc/arithmetic/im_stats.c:238 #: libsrc/arithmetic/im_floor.c:92 libsrc/arithmetic/im_remainder.c:103 #: libsrc/arithmetic/im_remainder.c:212 libsrc/arithmetic/im_subtract.c:171 #: libsrc/arithmetic/im_sintra.c:117 libsrc/arithmetic/im_sintra.c:202 #: libsrc/arithmetic/im_log10tra.c:123 libsrc/arithmetic/im_divide.c:150 msgid "not uncoded" msgstr "" #: libsrc/conversion/im_magick2vips.c:54 libsrc/conversion/im_magick2vips.c:61 msgid "libMagick support disabled" msgstr "" #: libsrc/conversion/im_magick2vips.c:190 #, fuzzy, c-format msgid "unsupported colorspace %d" msgstr "Malkovich" #: libsrc/conversion/im_magick2vips.c:214 #, fuzzy, c-format msgid "unsupported bit depth %d" msgstr "Malkovich" #: libsrc/conversion/im_magick2vips.c:409 #, fuzzy msgid "unable to read pixels" msgstr "Malkovich" #: libsrc/conversion/im_magick2vips.c:431 #, fuzzy, c-format msgid "" "unable to read file \"%s\"\n" "libMagick error: %s %s" msgstr "Malkovich" #: libsrc/conversion/im_magick2vips.c:456 #, fuzzy, c-format msgid "" "unable to ping file \"%s\"\n" "libMagick error: %s %s" msgstr "Malkovich" #: libsrc/conversion/im_magick2vips.c:467 #, fuzzy msgid "bad image size" msgstr "Malkovich" #: libsrc/conversion/im_copy.c:138 libsrc/conversion/im_copy.c:275 msgid "in must be uncoded" msgstr "" #: libsrc/conversion/im_copy.c:142 msgid "Coding must be NONE or LABQ" msgstr "" #: libsrc/conversion/im_copy.c:146 #, c-format msgid "BandFmt must be in range [0,%d]" msgstr "" #: libsrc/conversion/im_copy.c:169 msgid "sizeof( pixel ) has changed" msgstr "" #: libsrc/conversion/im_copy.c:312 #, fuzzy msgid "unsupported image type" msgstr "Malkovich" #: libsrc/conversion/im_ppm2vips.c:250 #, fuzzy msgid "internal error" msgstr "Malkovich" #: libsrc/conversion/im_tiff2vips.c:131 libsrc/conversion/im_tiff2vips.c:144 #: libsrc/conversion/im_vips2tiff.c:127 msgid "TIFF support disabled" msgstr "" #: libsrc/conversion/im_tiff2vips.c:284 libsrc/conversion/im_tiff2vips.c:307 #: libsrc/conversion/im_tiff2vips.c:326 #, c-format msgid "required field %d missing" msgstr "" #: libsrc/conversion/im_tiff2vips.c:288 #, c-format msgid "required field %d=%d, not %d" msgstr "" #: libsrc/conversion/im_tiff2vips.c:632 #, fuzzy msgid "read error" msgstr "Malkovich" #: libsrc/conversion/im_tiff2vips.c:1029 #, fuzzy msgid "bad colormap" msgstr "Malkovich" #: libsrc/conversion/im_tiff2vips.c:1085 libsrc/conversion/im_tiff2vips.c:1135 msgid "3 or 4 bands RGB TIFF only" msgstr "" #: libsrc/conversion/im_tiff2vips.c:1284 #, fuzzy msgid "unknown resolution unit" msgstr "Malkovich" #: libsrc/conversion/im_tiff2vips.c:1360 #, fuzzy, c-format msgid "unsupported sample format %d for lab image" msgstr "Malkovich" #: libsrc/conversion/im_tiff2vips.c:1370 #, fuzzy, c-format msgid "unsupported depth %d for LAB image" msgstr "Malkovich" #: libsrc/conversion/im_tiff2vips.c:1417 #, c-format msgid "unsupported sample format %d for greyscale image" msgstr "" #: libsrc/conversion/im_tiff2vips.c:1426 #, fuzzy, c-format msgid "unsupported depth %d for greyscale image" msgstr "Malkovich" #: libsrc/conversion/im_tiff2vips.c:1466 #, c-format msgid "unsupported sample format %d for rgb image" msgstr "" #: libsrc/conversion/im_tiff2vips.c:1475 #, fuzzy, c-format msgid "unsupported depth %d for RGB image" msgstr "Malkovich" #: libsrc/conversion/im_tiff2vips.c:1489 #, c-format msgid "unknown photometric interpretation %d" msgstr "" #: libsrc/conversion/im_tiff2vips.c:1550 #, fuzzy, c-format msgid "bad page number %d" msgstr "Malkovich" #: libsrc/conversion/im_tiff2vips.c:1577 libsrc/conversion/im_vips2tiff.c:265 #, fuzzy, c-format msgid "unable to open \"%s\" for input" msgstr "Malkovich" #: libsrc/conversion/im_tiff2vips.c:1627 libsrc/conversion/im_tiff2vips.c:1661 #, c-format msgid "TIFF file does not contain page %d" msgstr "" #: libsrc/conversion/im_vips2tiff.c:228 #, fuzzy, c-format msgid "TIFF error in \"%s\": " msgstr "Malkovich" #: libsrc/conversion/im_vips2tiff.c:245 #, fuzzy, c-format msgid "unable to open \"%s\" for output" msgstr "Malkovich" #: libsrc/conversion/im_vips2tiff.c:381 #, fuzzy, c-format msgid "file \"%s\" too long" msgstr "Malkovich" #: libsrc/conversion/im_vips2tiff.c:393 #, fuzzy, c-format msgid "error reading from file \"%s\"" msgstr "Malkovich" #: libsrc/conversion/im_vips2tiff.c:416 #, fuzzy, c-format msgid "unable to read profile \"%s\"" msgstr "Malkovich" #. Out of space! #. #: libsrc/conversion/im_vips2tiff.c:688 msgid "layer buffer exhausted -- try making TIFF output tiles smaller" msgstr "" #: libsrc/conversion/im_vips2tiff.c:919 msgid "TIFF write tile failed" msgstr "" #: libsrc/conversion/im_vips2tiff.c:994 #, fuzzy msgid "internal error #9876345" msgstr "Malkovich" #: libsrc/conversion/im_vips2tiff.c:1109 #, fuzzy msgid "TIFF write failed" msgstr "Malkovich" #: libsrc/conversion/im_vips2tiff.c:1238 #, fuzzy msgid "bad JPEG quality parameter" msgstr "Malkovich" #: libsrc/conversion/im_vips2tiff.c:1244 #, c-format msgid "" "unknown compression mode \"%s\"\n" "should be one of \"none\", \"packbits\", \"ccittfax4\", \"lzw\", \"deflate\" " "or \"jpeg\"" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1258 #, fuzzy msgid "bad tile sizes" msgstr "Malkovich" #: libsrc/conversion/im_vips2tiff.c:1265 #, c-format msgid "bad tile size %dx%d" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1273 msgid "tile size not a multiple of 16" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1282 #, c-format msgid "" "unknown layout mode \"%s\"\n" "should be one of \"tile\" or \"strip\"" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1294 #, c-format msgid "" "unknown multi-res mode \"%s\"\n" "should be one of \"flat\" or \"pyramid\"" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1306 #, c-format msgid "" "unknown format \"%s\"\n" "should be one of \"onebit\" or \"manybit\"" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1318 #, c-format msgid "" "unknown resolution unit \"%s\"\n" "should be one of \"res_cm\" or \"res_inch\"" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1327 #, fuzzy msgid "bad resolution values" msgstr "Malkovich" #: libsrc/conversion/im_vips2tiff.c:1342 #, c-format msgid "unknown extra options \"%s\"" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1346 msgid "can't have strip pyramid -- enabling tiling" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1356 msgid "can only pyramid LABQ and non-complex images" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1372 msgid "can't have 1-bit JPEG -- disabling JPEG" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1529 #, fuzzy msgid "unknown coding type" msgstr "Malkovich" #: libsrc/conversion/im_vips2tiff.c:1537 msgid "unsigned 8-bit int, 16-bit int, and 32-bit float only" msgstr "" #: libsrc/conversion/im_vips2tiff.c:1543 msgid "1 to 4 bands only" msgstr "" #: libsrc/arithmetic/im_powtra.c:188 libsrc/arithmetic/im_tantra.c:121 #: libsrc/arithmetic/im_tantra.c:207 libsrc/arithmetic/im_expntra.c:188 #: libsrc/arithmetic/im_logtra.c:127 libsrc/arithmetic/im_sintra.c:121 #: libsrc/arithmetic/im_sintra.c:206 libsrc/arithmetic/im_log10tra.c:127 #, fuzzy msgid "not non-complex" msgstr "Malkovich" #: libsrc/arithmetic/im_powtra.c:193 libsrc/arithmetic/im_expntra.c:193 #: libsrc/arithmetic/im_lintra.c:290 libsrc/arithmetic/im_remainder.c:217 #, c-format msgid "not 1 or %d elements in vector" msgstr "" #: libsrc/arithmetic/im_deviate.c:175 libsrc/arithmetic/im_costra.c:121 #: libsrc/arithmetic/im_costra.c:206 libsrc/arithmetic/im_measure.c:193 #: libsrc/arithmetic/im_avg.c:162 libsrc/arithmetic/im_stats.c:234 msgid "bad input type" msgstr "" #: libsrc/arithmetic/im_multiply.c:177 libsrc/arithmetic/im_remainder.c:94 msgid "not same size" msgstr "" #: libsrc/arithmetic/im_multiply.c:182 libsrc/arithmetic/im_add.c:250 #: libsrc/arithmetic/im_remainder.c:99 libsrc/arithmetic/im_subtract.c:167 #: libsrc/arithmetic/im_divide.c:146 #, fuzzy msgid "not same number of bands" msgstr "Malkovich" #: libsrc/arithmetic/im_minpos.c:80 msgid "input must be uncoded" msgstr "" #: libsrc/arithmetic/im_gadd.c:91 libsrc/arithmetic/im_gadd.c:107 #, fuzzy msgid "Unable to accept image1" msgstr "Malkovich" #. Name #: libsrc/arithmetic/arith_dispatch.c:79 #, fuzzy msgid "absolute value" msgstr "Malkovich" #. Name #: libsrc/arithmetic/arith_dispatch.c:98 #, fuzzy msgid "add two images" msgstr "Malkovich" #. Name #: libsrc/arithmetic/arith_dispatch.c:123 msgid "average value of image" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:142 msgid "multiply two complex images, normalising output" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:167 msgid "standard deviation of image" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:186 #, fuzzy msgid "10^pel of image" msgstr "Malkovich" #. Name #: libsrc/arithmetic/arith_dispatch.c:205 #, fuzzy msgid "e^pel of image" msgstr "Malkovich" #. Name #: libsrc/arithmetic/arith_dispatch.c:234 #, fuzzy msgid "x^pel of image" msgstr "Malkovich" #. Name #: libsrc/arithmetic/arith_dispatch.c:263 msgid "[x,y,z]^pel of image" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:299 msgid "average of 4 images" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:318 msgid "divide two images" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:352 msgid "calculate a*in1 + b*in2 + c = outfile" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:371 msgid "photographic negative" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:402 msgid "calculate a*in + b = outfile" msgstr "" #: libsrc/arithmetic/arith_dispatch.c:427 msgid "vectors not same length" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:438 msgid "calculate a*in + b -> out, a and b vectors" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:470 msgid "calculate max(white)*factor*(in/white), if clip == 1" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:489 #, fuzzy msgid "log10 of image" msgstr "Malkovich" #. Name #: libsrc/arithmetic/arith_dispatch.c:508 #, fuzzy msgid "ln of image" msgstr "Malkovich" #. Name #: libsrc/arithmetic/arith_dispatch.c:527 msgid "tan of image (angles in degrees)" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:546 msgid "atan of image (result in degrees)" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:565 msgid "cos of image (angles in degrees)" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:584 msgid "acos of image (result in degrees)" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:603 msgid "round to smallest integal value not less than" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:622 msgid "round to largest integal value not greater than" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:641 msgid "round to nearest integal value" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:660 msgid "sin of image (angles in degrees)" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:679 msgid "unit vector in direction of value" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:698 msgid "asin of image (result in degrees)" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:723 msgid "maximum value of image" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:758 msgid "position of maximum value of image" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:818 msgid "measure averages of a grid of patches" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:843 msgid "minimum value of image" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:871 msgid "position of minimum value of image" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:890 msgid "remainder after integer division" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:919 msgid "remainder after integer division by a constant" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:948 msgid "remainder after integer division by a vector of constants" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:968 msgid "multiply two images" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:989 msgid "pel^x ofbuildimage" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:1010 msgid "pel^[x,y,z] of image" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:1041 msgid "many image statistics in one pass" msgstr "" #. Name #: libsrc/arithmetic/arith_dispatch.c:1060 msgid "subtract two images" msgstr "" #: libsrc/arithmetic/im_measure.c:106 #, c-format msgid "patch %d is out of range" msgstr "" #: libsrc/arithmetic/im_measure.c:148 #, c-format msgid "patch %d, band %d: avg = %g, sdev = %g" msgstr "" #: libsrc/arithmetic/im_abs.c:183 #, fuzzy msgid "unknown input type" msgstr "Malkovich" #: libsrc/arithmetic/im_add.c:190 #, fuzzy, c-format msgid "not one band or %d bands" msgstr "Malkovich" #: libsrc/arithmetic/im_add.c:194 #, fuzzy msgid "bad bands" msgstr "Malkovich" #: libsrc/arithmetic/im_invert.c:121 msgid "not UCHAR" msgstr "" #: libsrc/arithmetic/im_remainder.c:239 #, fuzzy msgid "division by zero" msgstr "Malkovich" #: libsrc/relational/im_blend.c:338 #, fuzzy msgid "images not uncoded" msgstr "Malkovich" #: libsrc/relational/im_blend.c:344 libsrc/relational/im_ifthenelse.c:183 msgid "size and format of then and else must match" msgstr "" #: libsrc/relational/im_blend.c:349 libsrc/relational/im_ifthenelse.c:188 msgid "conditional image must be uchar" msgstr "" #: libsrc/relational/im_blend.c:354 libsrc/relational/im_ifthenelse.c:193 msgid "conditional image must be one band or same as then and else images" msgstr "" #: libsrc/relational/im_ifthenelse.c:167 msgid "then image must be uncoded or labpack" msgstr "" #: libsrc/relational/im_ifthenelse.c:172 msgid "else image must be uncoded or labpack" msgstr "" #: libsrc/relational/im_ifthenelse.c:177 msgid "condition image must be uncoded" msgstr "" #: libsrc/histograms_lut/im_maplut.c:112 #, c-format msgid "%d overflows detected" msgstr "" #. Switch for input types. Has to be uint type! #. #: libsrc/histograms_lut/im_maplut.c:473 #, fuzzy msgid "bad input file" msgstr "Malkovich" #. Switch for LUT types. One function for non-complex images, a #. * variant for complex ones. Another pair as well, in case the input is not #. * uchar. #. #: libsrc/histograms_lut/im_maplut.c:504 #, fuzzy msgid "bad lut file" msgstr "Malkovich" #: libsrc/histograms_lut/im_maplut.c:554 msgid "lut is not uncoded" msgstr "" #: libsrc/histograms_lut/im_maplut.c:558 msgid "lut seems very large!" msgstr "" #: libsrc/histograms_lut/im_maplut.c:570 msgid "input is not uncoded" msgstr "" #: libsrc/histograms_lut/im_maplut.c:574 #, fuzzy msgid "input is not some unsigned integer type" msgstr "Malkovich" #: libsrc/histograms_lut/im_maplut.c:579 msgid "" "lut should have 1 band, or same number of bands as input, or any number of " "bands if input has 1 band" msgstr "" #: libsrc/histograms_lut/im_maplut.c:586 msgid "input is uchar and lut does not have 256 elements" msgstr "" #: libsrc/histograms_lut/im_histnD.c:212 #, fuzzy msgid " uncoded images only" msgstr "Malkovich" #: libsrc/histograms_lut/im_histnD.c:218 msgid " unsigned 8 or 16 bit images only" msgstr "" #: libsrc/histograms_lut/im_histnD.c:225 #, c-format msgid " bins out of range [1,%d]" msgstr "" #: libsrc/histograms_lut/tone.c:233 msgid "bad in_max, out_max parameters" msgstr "" #: libsrc/histograms_lut/tone.c:237 #, fuzzy msgid "bad Lb, Lw parameters" msgstr "Malkovich" #: libsrc/histograms_lut/tone.c:241 msgid "Ps not in range [0.0,1.0]" msgstr "" #: libsrc/histograms_lut/tone.c:245 msgid "Pm not in range [0.0,1.0]" msgstr "" #: libsrc/histograms_lut/tone.c:249 msgid "Ph not in range [0.0,1.0]" msgstr "" #: libsrc/histograms_lut/tone.c:253 msgid "S not in range [-30,+30]" msgstr "" #: libsrc/histograms_lut/tone.c:257 msgid "M not in range [-30,+30]" msgstr "" #: libsrc/histograms_lut/tone.c:261 msgid "H not in range [-30,+30]" msgstr "" #: libsrc/histograms_lut/tone.c:342 libsrc/histograms_lut/tone.c:390 msgid "not 1 by n or n by 1 image" msgstr "" #: libsrc/histograms_lut/tone.c:396 msgid "not 1024-point IM_BANDFMT_SHORT lut" msgstr "" #: libsrc/histograms_lut/tone.c:413 libsrc/histograms_lut/tone.c:487 msgid "input not LabS or LabQ" msgstr "" #: libsrc/inplace/im_insertplace.c:81 msgid "inputs differ in format" msgstr "" #: libsrc/inplace/im_insertplace.c:85 msgid "input should be uncoded or IM_CODING_LABQ" msgstr "" #: libsrc/inplace/im_insertplace.c:104 msgid "small not inside big" msgstr "" #: libsrc/iofuncs/im_mapfile.c:134 libsrc/iofuncs/im_mapfile.c:301 #, fuzzy msgid "unable to CreateFileMapping" msgstr "Malkovich" #: libsrc/iofuncs/im_mapfile.c:150 libsrc/iofuncs/im_mapfile.c:313 #, fuzzy msgid "unable to MapViewOfFile" msgstr "Malkovich" #: libsrc/iofuncs/im_mapfile.c:177 #, fuzzy msgid "unable to mmap" msgstr "Malkovich" #: libsrc/iofuncs/im_mapfile.c:178 #, c-format msgid "" "map failed (%s), running very low on system resources, expect a crash soon" msgstr "" #: libsrc/iofuncs/im_mapfile.c:195 libsrc/iofuncs/im_mapfile.c:307 #, fuzzy msgid "unable to UnmapViewOfFile" msgstr "Malkovich" #: libsrc/iofuncs/im_mapfile.c:201 #, fuzzy msgid "unable to munmap file" msgstr "Malkovich" #: libsrc/iofuncs/im_mapfile.c:224 libsrc/iofuncs/im_mapfile.c:265 #, fuzzy msgid "unable to get file status" msgstr "Malkovich" #: libsrc/iofuncs/im_mapfile.c:229 msgid "file is less than 64 bytes" msgstr "" #: libsrc/iofuncs/im_mapfile.c:233 msgid "not a regular file" msgstr "" #: libsrc/iofuncs/im_mapfile.c:270 #, fuzzy msgid "unable to read data" msgstr "Malkovich" #: libsrc/iofuncs/im_mapfile.c:333 #, fuzzy, c-format msgid "unable to mmap: \"%s\" - %s" msgstr "Malkovich" #: libsrc/iofuncs/im_mapfile.c:343 #, fuzzy, c-format msgid "unable to mmap \"%s\" to same address" msgstr "Malkovich" #: libsrc/iofuncs/im_binfile.c:88 libsrc/iofuncs/im_render.c:1079 #, fuzzy msgid "bad parameters" msgstr "Malkovich" #: libsrc/iofuncs/im_binfile.c:116 #, fuzzy, c-format msgid "unable to open %s: file has been truncated" msgstr "Malkovich" #: libsrc/iofuncs/im_binfile.c:126 #, c-format msgid "%s is longer than expected" msgstr "" #: libsrc/iofuncs/error.c:114 #, fuzzy msgid "windows error" msgstr "Malkovich" #: libsrc/iofuncs/error.c:123 #, fuzzy msgid "unix error" msgstr "Malkovich" #: libsrc/iofuncs/error.c:149 libsrc/iofuncs/error.c:150 #: libsrc/iofuncs/error.c:170 libsrc/iofuncs/error.c:171 #, fuzzy, c-format msgid "%s: " msgstr "Malkovich" #: libsrc/iofuncs/error.c:149 msgid "vips diagnostic" msgstr "" #: libsrc/iofuncs/error.c:170 msgid "vips warning" msgstr "" #: libsrc/iofuncs/im_readhist.c:163 msgid "history file too large" msgstr "" #: libsrc/iofuncs/im_readhist.c:174 #, fuzzy msgid "unable to read" msgstr "Malkovich" #: libsrc/iofuncs/im_header.c:102 #, c-format msgid "no such int field \"%s\"" msgstr "" #: libsrc/iofuncs/im_header.c:124 #, c-format msgid "no such double field \"%s\"" msgstr "" #: libsrc/iofuncs/im_header.c:146 #, c-format msgid "no such string field \"%s\"" msgstr "" #: libsrc/iofuncs/im_printdesc.c:112 msgid "" msgstr "" #: libsrc/iofuncs/im_printdesc.c:118 #, fuzzy msgid "" msgstr "Malkovich" #: libsrc/iofuncs/im_printdesc.c:124 msgid "" msgstr "" #: libsrc/iofuncs/im_printdesc.c:130 msgid "" msgstr "" #: libsrc/iofuncs/im_printdesc.c:136 msgid "" msgstr "" #: libsrc/iofuncs/im_printdesc.c:142 msgid "" msgstr "" #: libsrc/iofuncs/im_render.c:511 libsrc/iofuncs/im_render.c:666 #: libsrc/iofuncs/threadgroup.c:330 #, fuzzy msgid "unable to create thread" msgstr "Malkovich" #: libsrc/iofuncs/package.c:436 #, fuzzy, c-format msgid "unable to close plugin \"%s\"" msgstr "Malkovich" #: libsrc/iofuncs/package.c:438 libsrc/iofuncs/package.c:488 #: libsrc/iofuncs/package.c:502 #, fuzzy, c-format msgid "plugin error: %s" msgstr "Malkovich" #: libsrc/iofuncs/package.c:462 msgid "plugins not supported on this platform" msgstr "" #: libsrc/iofuncs/package.c:486 #, fuzzy, c-format msgid "unable to open plugin \"%s\"" msgstr "Malkovich" #: libsrc/iofuncs/package.c:499 #, c-format msgid "unable to find symbol \"package_table\" in plugin \"%s\"" msgstr "" #: libsrc/iofuncs/package.c:513 #, c-format msgid "corrupted package table in plugin \"%s\"" msgstr "" #: libsrc/iofuncs/package.c:636 libsrc/iofuncs/package.c:692 #, fuzzy, c-format msgid "function \"%s\" not found" msgstr "Malkovich" #: libsrc/iofuncs/package.c:664 #, fuzzy, c-format msgid "package \"%s\" not found" msgstr "Malkovich" #: libsrc/iofuncs/package.c:802 #, fuzzy msgid "too few arguments" msgstr "Malkovich" #: libsrc/iofuncs/package.c:824 #, fuzzy msgid "too many arguments" msgstr "Malkovich" #: libsrc/iofuncs/package.c:1031 msgid "flag not 0,1,2" msgstr "" #: libsrc/iofuncs/im_wrapmany.c:158 #, fuzzy msgid "too many input images" msgstr "Malkovich" #: libsrc/iofuncs/im_wrapmany.c:176 msgid "descriptors differ in size" msgstr "" #~ msgid "Stack overflow." #~ msgstr "Malkovich" #~ msgid "Spine stack overflow, runaway recursion?" #~ msgstr "Malkovich" #~ msgid "Frame stack overflow, expression too complex." #~ msgstr "Malkovich" #~ msgid "Stack underflow." #~ msgstr "Malkovich" #~ msgid "Frame stack underflow, you've found a bug!" #~ msgstr "Malkovich" #~ msgid "Spine stack underflow, you've found a bug!" #~ msgstr "Malkovich" #, fuzzy #~ msgid "" #~ "Error in binary \"%s\".\n" #~ "left = %s\n" #~ "right = %s" #~ msgstr "Malkovich" #~ msgid "Member not found." #~ msgstr "Malkovich" #, fuzzy #~ msgid "" #~ "Member \"%s\" not found in object \"%s\".\n" #~ "object = %s\n" #~ "tag = %s\n" #~ "Reference attempted in \"%s\"." #~ msgstr "Malkovich" #~ msgid "Bad argument." #~ msgstr "Malkovich" #, fuzzy #~ msgid "" #~ "Error in unary \"%s\".\n" #~ "argument = %s" #~ msgstr "Malkovich" #~ msgid "Symbol on left hand side of '.' is not scope" #~ msgstr "Malkovich" #~ msgid "Right hand side of '.' is not tag." #~ msgstr "Malkovich" #~ msgid "Bad left hand side." #~ msgstr "Malkovich" #~ msgid "Unimplemented." #~ msgstr "Malkovich" #~ msgid "invoking method:" #~ msgstr "Malkovich" #~ msgid "Close _without Saving" #~ msgstr "Malkovich" #~ msgid "translator_credits" #~ msgstr "Malkovich" #~ msgid "About %s." #~ msgstr "Malkovich" #~ msgid "%s: (c) 2003 The National Gallery" #~ msgstr "Malkovich" #~ msgid "" #~ "%s comes with ABSOLUTELY NO WARRANTY. This is free software\n" #~ "and you are welcome to redistribute it under certain conditions,\n" #~ "see http://www.gnu.org." #~ msgstr "Malkovich" #~ msgid "Homepage:" #~ msgstr "Malkovich" #~ msgid "Linked to VIPS library version:" #~ msgstr "Malkovich" #~ msgid "Temp files in:" #~ msgstr "Malkovich" #~ msgid "Help page not found." #~ msgstr "Malkovich" #~ msgid "No indexed help page found for tag \"%s\"" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Search for" #~ msgstr "Malkovich" #~ msgid "Case sensitive" #~ msgstr "Malkovich" #~ msgid "Regular expression" #~ msgstr "Malkovich" #~ msgid "Search from start" #~ msgstr "Malkovich" #~ msgid "Unable to open location." #~ msgstr "Malkovich" #~ msgid "" #~ "Unable to open URL \"%s\"\n" #~ "windows error code = %d" #~ msgstr "Malkovich" #~ msgid "Browser window opened." #~ msgstr "Malkovich" #~ msgid "" #~ "Opened window for URL:\n" #~ "\n" #~ " %s\n" #~ "\n" #~ "This may take a few seconds." #~ msgstr "Malkovich" #~ msgid "" #~ "Attempted to launch browser with command:\n" #~ "\n" #~ " %s\n" #~ "\n" #~ "You can change this command in Preferences." #~ msgstr "Malkovich" #~ msgid "" #~ "Opened window for URL:\n" #~ "\n" #~ " %s\n" #~ "\n" #~ "You may need to switch desktops to see the new window." #~ msgstr "Malkovich" #~ msgid "Cancelling" #~ msgstr "Malkovich" #~ msgid "Computing image." #~ msgstr "Malkovich" #~ msgid "" #~ "Calculating all the pixels in an image. Press the\n" #~ "Cancel button to stop computation early." #~ msgstr "Malkovich" #~ msgid "Calculating" #~ msgstr "Malkovich" #~ msgid "About %d seconds left" #~ msgstr "Malkovich" #~ msgid "Thumbnails" #~ msgstr "Malkovich" #~ msgid "Image files found in: \"%s\"" #~ msgstr "Malkovich" #~ msgid "Searching ..." #~ msgstr "Malkovich" #~ msgid "Search incomplete!" #~ msgstr "Malkovich" #~ msgid "Not implemented." #~ msgstr "Malkovich" #~ msgid "Complex math ops not implemented." #~ msgstr "Malkovich" #, fuzzy #~ msgid "Macro error." #~ msgstr "Malkovich" #~ msgid "Builtin \"%s\" takes %d argument." #~ msgid_plural "Builtin \"%s\" takes %d arguments." #~ msgstr[0] "Malkovich" #~ msgstr[1] "Malkovich" #~ msgid "" #~ "Argument %d to builtin \"%s\" should be \"%s\"\n" #~ "you passed:\n" #~ " %s" #~ msgstr "Malkovich" #~ msgid "" #~ "Object %s\n" #~ "is not a class." #~ msgstr "Malkovich" #~ msgid "Member \"%s\" not found in class \"%s\"." #~ msgstr "Malkovich" #~ msgid "" #~ "Too many arguments to superclass constructor \"%s\".\n" #~ "No more than %d arguments are possible." #~ msgstr "Malkovich" #~ msgid "Superclass constructor \"%s\" expects %d arguments, not %d." #~ msgstr "Malkovich" #~ msgid "Bad superclass." #~ msgstr "Malkovich" #~ msgid "Superclass constructor \"%s\" should have no secret arguments." #~ msgstr "Malkovich" #~ msgid "First element in superclass of \"%s\" must be class or constructor." #~ msgstr "Malkovich" #~ msgid "" #~ "Too many arguments to class constructor \"%s\".\n" #~ "No more than %d arguments are possible." #~ msgstr "Malkovich" #~ msgid "Class not found." #~ msgstr "Malkovich" #~ msgid "Class \"%s\" not found." #~ msgstr "Malkovich" #~ msgid "" #~ "Member \"%s\" of class \"%s\" should be of type \"%s\", instead it's:" #~ msgstr "Malkovich" #~ msgid "_%s() not implemented for class \"%s\"." #~ msgstr "Malkovich" #~ msgid "Edit color \"%s\"" #~ msgstr "Malkovich" #~ msgid "Set color" #~ msgstr "Malkovich" #~ msgid "Bad value." #~ msgstr "Malkovich" #~ msgid "Double-click to edit this color, or drag-and-drop between colors" #~ msgstr "Malkovich" #~ msgid "Name clash." #~ msgstr "Malkovich" #~ msgid "" #~ "Can't create column \"%s\".\n" #~ "A column with that name already exists." #~ msgstr "Malkovich" #~ msgid "Empty column." #~ msgstr "Malkovich" #~ msgid "There are no objects in the current column." #~ msgstr "Malkovich" #~ msgid "Too few items." #~ msgstr "Malkovich" #~ msgid "" #~ "This column only has %d items, but %d items\n" #~ "are needed by operation \"%s\"." #~ msgstr "Malkovich" #~ msgid "Save Column \"%s\"" #~ msgstr "Malkovich" #~ msgid "Name" #~ msgstr "Malkovich" #~ msgid "Toolkit" #~ msgstr "Malkovich" #~ msgid "Filename" #~ msgstr "Malkovich" #~ msgid "Set menu item text here" #~ msgstr "Malkovich" #~ msgid "Add to this toolkit" #~ msgstr "Malkovich" #~ msgid "Store column in this file" #~ msgstr "Malkovich" #~ msgid "New menu item from column \"%s\"" #~ msgstr "Malkovich" #~ msgid "Menuize" #~ msgstr "Malkovich" #~ msgid "Edit caption, press enter to accept changes, press escape to cancel" #~ msgstr "Malkovich" #~ msgid "Enter expressions here" #~ msgstr "Malkovich" #~ msgid "Close the columnview" #~ msgstr "Malkovich" #~ msgid "Open the columnview" #~ msgstr "Malkovich" #~ msgid "Column menu" #~ msgstr "Malkovich" #~ msgid "Edit caption ..." #~ msgstr "Malkovich" #~ msgid "Select all" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Make column into menu item ..." #~ msgstr "Malkovich" #~ msgid "" #~ "Left-drag to move, left-double-click to set title, right-click for menu" #~ msgstr "Malkovich" #~ msgid "Delete the column" #~ msgstr "Malkovich" #~ msgid "Too many shared nodes in graph." #~ msgstr "Malkovich" #~ msgid "Disable optimisation, or raise MAX_RELOC" #~ msgstr "Malkovich" #~ msgid "Member \"%s\" of class \"%s\" should have no arguments." #~ msgstr "Malkovich" #~ msgid "Unable to find image range." #~ msgstr "Malkovich" #~ msgid "Find image range failed." #~ msgstr "Malkovich" #~ msgid "Convert menu" #~ msgstr "Malkovich" #~ msgid "Scale" #~ msgstr "Malkovich" #~ msgid "Interpret" #~ msgstr "Malkovich" #~ msgid "Reset" #~ msgstr "Malkovich" #~ msgid "value" #~ msgstr "Malkovich" #~ msgid "zombie" #~ msgstr "Malkovich" #~ msgid "workspace" #~ msgstr "Malkovich" #~ msgid "workspace group" #~ msgstr "Malkovich" #~ msgid "root symbol" #~ msgstr "Malkovich" #~ msgid "external symbol" #~ msgstr "Malkovich" #~ msgid "built-in symbol" #~ msgstr "Malkovich" #~ msgid "Escape to cancel edit, press Return to accept edit and recalculate" #~ msgstr "Malkovich" #~ msgid "top level" #~ msgstr "Malkovich" #~ msgid "class" #~ msgstr "Malkovich" #~ msgid "instance" #~ msgstr "Malkovich" #~ msgid "definition" #~ msgstr "Malkovich" #~ msgid "parameter \"%s\"" #~ msgstr "Malkovich" #~ msgid "member" #~ msgstr "Malkovich" #~ msgid "function" #~ msgstr "Malkovich" #~ msgid "of" #~ msgstr "Malkovich" #~ msgid "XML library error." #~ msgstr "Malkovich" #~ msgid "model_save_filename: xmlNewDoc() failed" #~ msgstr "Malkovich" #~ msgid "model_save_filename: xmlNewDocNode() failed" #~ msgstr "Malkovich" #~ msgid "Save failed." #~ msgstr "Malkovich" #~ msgid "" #~ "Save of %s \"%s\" to file \"%s\" failed.\n" #~ "%s" #~ msgstr "Malkovich" #~ msgid "filemodel_save_all: no save method" #~ msgstr "Malkovich" #~ msgid "Load failed." #~ msgstr "Malkovich" #~ msgid "" #~ "Can't load XML file \"%s\",\n" #~ "it's not a %s save file" #~ msgstr "Malkovich" #~ msgid "" #~ "Can't load XML file \"%s\",\n" #~ "Unable to extract version information from namespace." #~ msgstr "Malkovich" #~ msgid "" #~ "Can't load XML file \"%s\",\n" #~ "The file does not contain a %s." #~ msgstr "Malkovich" #~ msgid "Save %s %s" #~ msgstr "Malkovich" #~ msgid "Save successful." #~ msgstr "Malkovich" #~ msgid "" #~ "%s \"%s\" successfully saved\n" #~ "to file \"%s\"." #~ msgstr "Malkovich" #~ msgid "Object has been modified." #~ msgstr "Malkovich" #~ msgid "" #~ "%s \"%s\" has been modified since you loaded it\n" #~ "from file \"%s\".\n" #~ "Do you want to save your changes?" #~ msgstr "Malkovich" #~ msgid "%s \"%s\" has been modified. Do you want to save your changes?" #~ msgstr "Malkovich" #~ msgid "Select file" #~ msgstr "Malkovich" #~ msgid "Choose" #~ msgstr "Malkovich" #~ msgid "TIFF image files (*.tif, *.tiff)" #~ msgstr "Malkovich" #~ msgid "JPEG image files (*.jpg, *.jpeg, *.jpe)" #~ msgstr "Malkovich" #~ msgid "PNG image files (*.png)" #~ msgstr "Malkovich" #~ msgid "VIPS image files (*.v)" #~ msgstr "Malkovich" #~ msgid "PPM image files (*.ppm, *.pgm, *.pbm)" #~ msgstr "Malkovich" #~ msgid "Workspace files (*.ws)" #~ msgstr "Malkovich" #~ msgid "Recombination matrix files (*.rec)" #~ msgstr "Malkovich" #~ msgid "Morphology matrix files (*.mor)" #~ msgstr "Malkovich" #~ msgid "Convolution matrix files (*.con)" #~ msgstr "Malkovich" #~ msgid "Matrix files (*.mat)" #~ msgstr "Malkovich" #~ msgid "Definition files (*.def)" #~ msgstr "Malkovich" #~ msgid "ICC profiles (*.icc, *.icm)" #~ msgstr "Malkovich" #~ msgid "All files (*)" #~ msgstr "Malkovich" #~ msgid "Unable to determine space free in \"%s\"." #~ msgstr "Malkovich" #~ msgid "free in \"%s\"" #~ msgstr "Malkovich" #~ msgid "Increment filename" #~ msgstr "Malkovich" #, fuzzy #~ msgid "After Save, add 1 to the last number in the file name" #~ msgstr "Malkovich" #~ msgid "Show thumbnails" #~ msgstr "Malkovich" #~ msgid "Show thumbnails for files in this directory" #~ msgstr "Malkovich" #~ msgid "Overwrite" #~ msgstr "Malkovich" #~ msgid "File \"%s\" exists. OK to overwrite?" #~ msgstr "Malkovich" #~ msgid "circular" #~ msgstr "Malkovich" #~ msgid "circular to label %d" #~ msgstr "Malkovich" #~ msgid "label %d" #~ msgstr "Malkovich" #~ msgid "unevaluated" #~ msgstr "Malkovich" #~ msgid "class (0x%x)" #~ msgstr "Malkovich" #~ msgid "members" #~ msgstr "Malkovich" #~ msgid "secret" #~ msgstr "Malkovich" #~ msgid "from" #~ msgstr "Malkovich" #~ msgid "NULL pointer" #~ msgstr "Malkovich" #~ msgid "symbol" #~ msgstr "Malkovich" #~ msgid "constructor" #~ msgstr "Malkovich" #~ msgid "symref" #~ msgstr "Malkovich" #~ msgid "compileref" #~ msgstr "Malkovich" #~ msgid "image \"%s\"" #~ msgstr "Malkovich" #~ msgid "tag \"%s\"" #~ msgstr "Malkovich" #~ msgid "unknown element tag %d" #~ msgstr "Malkovich" #~ msgid "Current:" #~ msgstr "Malkovich" #~ msgid "Directories" #~ msgstr "Malkovich" #~ msgid "Files" #~ msgstr "Malkovich" #~ msgid "Selection:" #~ msgstr "Malkovich" #~ msgid "Create Dir" #~ msgstr "Malkovich" #~ msgid "Delete File" #~ msgstr "Malkovich" #~ msgid "Rename File" #~ msgstr "Malkovich" #~ msgid "Error" #~ msgstr "Malkovich" #~ msgid "Close" #~ msgstr "Malkovich" #~ msgid "Create Directory" #~ msgstr "Malkovich" #~ msgid "Directory name:" #~ msgstr "Malkovich" #~ msgid "Create" #~ msgstr "Malkovich" #~ msgid "Cancel" #~ msgstr "Malkovich" #~ msgid "Delete" #~ msgstr "Malkovich" #~ msgid "Rename" #~ msgstr "Malkovich" #~ msgid "Directory unreadable: " #~ msgstr "Malkovich" #~ msgid "Current: " #~ msgstr "Malkovich" #~ msgid "Bad identifier." #~ msgstr "Malkovich" #~ msgid "" #~ "Enter an identifier. Identifiers start with\n" #~ "a letter, and then contain only letters, numbers,\n" #~ "apostrophy and underscore." #~ msgstr "Malkovich" #~ msgid "Bad floating point number." #~ msgstr "Malkovich" #~ msgid "\"%s\" is not a floating point number." #~ msgstr "Malkovich" #~ msgid "Bad integer." #~ msgstr "Malkovich" #~ msgid "\"%s\" is not an integer." #~ msgstr "Malkovich" #~ msgid "Bad unsigned integer." #~ msgstr "Malkovich" #~ msgid "Bad positive integer." #~ msgstr "Malkovich" #~ msgid "Left-click to change value" #~ msgstr "Malkovich" #~ msgid "Heap full." #~ msgstr "Malkovich" #~ msgid "" #~ "The main calculation heap has filled. Raise\n" #~ "the heap size limit in the Preferences panel." #~ msgstr "Malkovich" #~ msgid "Typecheck error." #~ msgstr "Malkovich" #~ msgid "" #~ "Expected %s, instead saw:\n" #~ " %s" #~ msgstr "Malkovich" #~ msgid "on" #~ msgstr "Malkovich" #, fuzzy #~ msgid "at %d" #~ msgstr "Malkovich" #~ msgid "at (%d, %d)" #~ msgstr "Malkovich" #~ msgid "at (%d, %d), offset (%d, %d)" #~ msgstr "Malkovich" #~ msgid "Pin up" #~ msgstr "Malkovich" #~ msgid "Check this to pin the dialog up" #~ msgstr "Malkovich" #~ msgid "Save Image \"%s\"" #~ msgstr "Malkovich" #~ msgid "Replace Image \"%s\"" #~ msgstr "Malkovich" #~ msgid "Double-click to open a viewer on this thumbnail" #~ msgstr "Malkovich" #~ msgid "Unable to open image \"%s\" for read." #~ msgstr "Malkovich" #~ msgid "Unable to write to file." #~ msgstr "Malkovich" #~ msgid "File \"%s\" is already open for read." #~ msgstr "Malkovich" #~ msgid "Error writing image to file \"%s\"." #~ msgstr "Malkovich" #~ msgid "Unable to paint on image." #~ msgstr "Malkovich" #~ msgid "" #~ "Unable to get write permission for file \"%s\".\n" #~ "Check permission settings." #~ msgstr "Malkovich" #~ msgid "Modify" #~ msgstr "Malkovich" #~ msgid "Modify disc file?" #~ msgstr "Malkovich" #~ msgid "" #~ "This image is being shown directly from the disc file:\n" #~ "\n" #~ " %s\n" #~ "\n" #~ "If you paint on this file, it will be permanently changed.\n" #~ "If something goes wrong, you may lose work.\n" #~ "Are you sure you want to modify this file?" #~ msgstr "Malkovich" #~ msgid "No image value" #~ msgstr "Malkovich" #~ msgid "%dx%d %s pixels, %d band, %s" #~ msgid_plural "%dx%d %s pixels, %d bands, %s" #~ msgstr[0] "Malkovich" #~ msgstr[1] "Malkovich" #~ msgid "Ruler menu" #~ msgstr "Malkovich" #~ msgid "Header for \"%s\"" #~ msgstr "Malkovich" #~ msgid "OK" #~ msgstr "Malkovich" #~ msgid "/_File" #~ msgstr "Malkovich" #~ msgid "/File/_New" #~ msgstr "Malkovich" #~ msgid "/File/New/_Point" #~ msgstr "Malkovich" #~ msgid "/File/New/_HGuide" #~ msgstr "Malkovich" #~ msgid "/File/New/_VGuide" #~ msgstr "Malkovich" #~ msgid "/File/New/_Arrow" #~ msgstr "Malkovich" #~ msgid "/File/New/_Region" #~ msgstr "Malkovich" #~ msgid "/File/sep3" #~ msgstr "Malkovich" #~ msgid "/File/_Replace Image ..." #~ msgstr "Malkovich" #~ msgid "/File/_Save Image As ..." #~ msgstr "Malkovich" #~ msgid "/File/sep1" #~ msgstr "Malkovich" #~ msgid "/File/Image _Header" #~ msgstr "Malkovich" #~ msgid "/File/Re_calculate Image" #~ msgstr "Malkovich" #~ msgid "/File/sep2" #~ msgstr "Malkovich" #~ msgid "/File/_Close" #~ msgstr "Malkovich" #~ msgid "/_View" #~ msgstr "Malkovich" #~ msgid "/View/_Toolbar" #~ msgstr "Malkovich" #~ msgid "/View/Toolbar/_Status" #~ msgstr "Malkovich" #~ msgid "/View/Toolbar/_Display control" #~ msgstr "Malkovich" #~ msgid "/View/Toolbar/_Paint" #~ msgstr "Malkovich" #~ msgid "/View/Toolbar/_Rulers" #~ msgstr "Malkovich" #~ msgid "/View/M_ode" #~ msgstr "Malkovich" #~ msgid "/View/Mode/_Select" #~ msgstr "Malkovich" #~ msgid "/View/Mode/_Pan" #~ msgstr "Malkovich" #~ msgid "/View/Mode/Zoom _In" #~ msgstr "Malkovich" #~ msgid "/View/Mode/Zoom _Out" #~ msgstr "Malkovich" #~ msgid "/View/Mode/P_aint" #~ msgstr "Malkovich" #~ msgid "/View/sep1" #~ msgstr "Malkovich" #~ msgid "/View/Zoom _In" #~ msgstr "Malkovich" #~ msgid "/View/Zoom _Out" #~ msgstr "Malkovich" #~ msgid "/View/Zoom _100%" #~ msgstr "Malkovich" #~ msgid "/View/Zoom to _Fit" #~ msgstr "Malkovich" #~ msgid "/View/_Zoom" #~ msgstr "Malkovich" #~ msgid "/View/Zoom/6%" #~ msgstr "Malkovich" #~ msgid "/View/Zoom/12%" #~ msgstr "Malkovich" #~ msgid "/View/Zoom/25%" #~ msgstr "Malkovich" #~ msgid "/View/Zoom/50%" #~ msgstr "Malkovich" #~ msgid "/View/Zoom/100%" #~ msgstr "Malkovich" #~ msgid "/View/Zoom/200%" #~ msgstr "Malkovich" #~ msgid "/View/Zoom/400%" #~ msgstr "Malkovich" #~ msgid "/View/Zoom/800%" #~ msgstr "Malkovich" #~ msgid "/View/Zoom/1600%" #~ msgstr "Malkovich" #~ msgid "/_Help" #~ msgstr "Malkovich" #~ msgid "/Help/_Image View" #~ msgstr "Malkovich" #~ msgid "/Help/_Paint Bar" #~ msgstr "Malkovich" #~ msgid "Left" #~ msgstr "Malkovich" #~ msgid "Top" #~ msgstr "Malkovich" #~ msgid "Width" #~ msgstr "Malkovich" #~ msgid "Height" #~ msgstr "Malkovich" #~ msgid "Left edge of region" #~ msgstr "Malkovich" #~ msgid "Top edge of region" #~ msgstr "Malkovich" #~ msgid "Width of region" #~ msgstr "Malkovich" #~ msgid "Height of region" #~ msgstr "Malkovich" #~ msgid "Edit \"%s\"" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Set Region" #~ msgstr "Malkovich" #~ msgid "at (%d, %d), size (%d, %d)" #~ msgstr "Malkovich" #~ msgid "%dx%d %s pixels, %d band" #~ msgid_plural "%dx%d %s pixels, %d bands" #~ msgstr[0] "Malkovich" #~ msgstr[1] "Malkovich" #~ msgid "scope \"%s\"" #~ msgstr "Malkovich" #~ msgid "reference to symbol \"%s\"" #~ msgstr "Malkovich" #~ msgid "" #~ "Press Escape to cancel edit, press Return to accept edit and recalculate" #~ msgstr "Malkovich" #~ msgid "" #~ "Value display\n" #~ "Left-click to edit expression" #~ msgstr "Malkovich" #~ msgid "line too long" #~ msgstr "Malkovich" #~ msgid "end of line inside string" #~ msgstr "Malkovich" #~ msgid "no end of string" #~ msgstr "Malkovich" #~ msgid "no end of comment!" #~ msgstr "Malkovich" #~ msgid "bad char constant" #~ msgstr "Malkovich" #~ msgid "illegal character \"%c\"" #~ msgstr "Malkovich" #~ msgid "Circular dependency." #~ msgstr "Malkovich" #~ msgid "Circular dependency detected near symbol \"%s\"." #~ msgstr "Malkovich" #~ msgid "" #~ "%s: usage:\n" #~ "%s filename1 filename2 ...\n" #~ "\tstart in GUI mode, loading the named files" #~ msgstr "Malkovich" #~ msgid "" #~ "%s -script filename arg1 arg2 ...\n" #~ "\tread in filename as a set of definitions, set list argv to\n" #~ "\t[\"filename\", \"arg1\", \"arg2\", ...], set argc to length of list;\n" #~ "\tprint the value of symbol \"main\" to stdout; exit; useful for\n" #~ "\trunning %s as an interpreter on unix" #~ msgstr "Malkovich" #~ msgid "" #~ "%s -main arg1 arg2 ...\n" #~ "\tas -script, but read the definitions from stdin rather than from a\n" #~ "\tfile; useful for here-is shell scripts" #~ msgstr "Malkovich" #~ msgid "" #~ "%s -workspace arg1 arg2 ...\n" #~ "\tas -main, but read a workspace save file instead; run in GUI mode\n" #~ "\tprint the value of the final row in the save file on exit" #~ msgstr "Malkovich" #~ msgid "" #~ "%s -benchmark\n" #~ "\tload all start objects and quit; useful for bechmarking the compiler" #~ msgstr "Malkovich" #~ msgid "symbol \"main\" not found" #~ msgstr "Malkovich" #~ msgid "symbol \"main\" has no value" #~ msgstr "Malkovich" #~ msgid "Unknown file type." #~ msgstr "Malkovich" #~ msgid "Unable to load \"%s\"." #~ msgstr "Malkovich" #~ msgid "Unable to load." #~ msgstr "Malkovich" #~ msgid "Error loading plug-in \"%s\"." #~ msgstr "Malkovich" #~ msgid "Error loading plug-ins in directory \"%s/lib\"" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Ink dropper" #~ msgstr "Malkovich" #~ msgid "Duplicate" #~ msgstr "Malkovich" #~ msgid "Pen" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Line" #~ msgstr "Malkovich" #~ msgid "Text" #~ msgstr "Malkovich" #~ msgid "Smudge" #~ msgstr "Malkovich" #~ msgid "Flood" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Flood Blob" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Fill Rectangle" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Pan" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Select" #~ msgstr "Malkovich" #~ msgid "" #~ "unable to change max file descriptors\n" #~ "max file descriptors still set to %d" #~ msgstr "Malkovich" #~ msgid "unable to read max file descriptors" #~ msgstr "Malkovich" #~ msgid "-script needs an argument" #~ msgstr "Malkovich" #~ msgid "Startup error." #~ msgstr "Malkovich" #~ msgid "" #~ "Startup error log:\n" #~ "%s" #~ msgstr "Malkovich" #~ msgid "Welcome to %s-%s!" #~ msgstr "Malkovich" #~ msgid "" #~ "A new directory has been created in your home directory to hold startup,\n" #~ "data and temporary files:\n" #~ "\n" #~ " %s\n" #~ "\n" #~ "If you've used previous versions of %s, you will probably want\n" #~ "to move any files over from your old work area and remove any old temps." #~ msgstr "Malkovich" #~ msgid "No temp area" #~ msgstr "Malkovich" #~ msgid "%s free" #~ msgstr "Malkovich" #~ msgid "%d cells free" #~ msgstr "Malkovich" #~ msgid "Selected:" #~ msgstr "Malkovich" #~ msgid "%s in \"%s\", %d cells in heap, %d cells free, %d cells maximum" #~ msgstr "Malkovich" #~ msgid "modified" #~ msgstr "Malkovich" #~ msgid "No objects selected." #~ msgstr "Malkovich" #~ msgid "Find in workspace not implemented yet." #~ msgstr "Malkovich" #~ msgid "Find again in workspace not implemented yet." #~ msgstr "Malkovich" #~ msgid "There are no errors (that I can see) in this workspace." #~ msgstr "Malkovich" #~ msgid "Recalculate" #~ msgstr "Malkovich" #~ msgid "Completely recalculate?" #~ msgstr "Malkovich" #~ msgid "Insert image" #~ msgstr "Malkovich" #~ msgid "Merge workspace" #~ msgstr "Malkovich" #, fuzzy #~ msgid "No recent workspaces" #~ msgstr "Malkovich" #~ msgid "Open workspace" #~ msgstr "Malkovich" #~ msgid "Caption" #~ msgstr "Malkovich" #~ msgid "Set workspace name here" #~ msgstr "Malkovich" #~ msgid "Set workspace caption here" #~ msgstr "Malkovich" #~ msgid "New Workspace" #~ msgstr "Malkovich" #~ msgid "Create Workspace" #~ msgstr "Malkovich" #~ msgid "Set column name here" #~ msgstr "Malkovich" #~ msgid "Set column caption here" #~ msgstr "Malkovich" #~ msgid "New Column" #~ msgstr "Malkovich" #~ msgid "Create Column" #~ msgstr "Malkovich" #~ msgid "Delete selected objects?" #~ msgstr "Malkovich" #~ msgid "Are you sure you want to delete %s?" #~ msgstr "Malkovich" #~ msgid "/File/_New ..." #~ msgstr "Malkovich" #~ msgid "/File/_Open ..." #~ msgstr "Malkovich" #, fuzzy #~ msgid "/File/Open _Recent" #~ msgstr "Malkovich" #~ msgid "/File/_Save" #~ msgstr "Malkovich" #~ msgid "/File/_Save As ..." #~ msgstr "Malkovich" #~ msgid "/File/_Program" #~ msgstr "Malkovich" #~ msgid "/File/Re_cover After Crash ..." #~ msgstr "Malkovich" #~ msgid "/_Edit" #~ msgstr "Malkovich" #~ msgid "/Edit/Delete" #~ msgstr "Malkovich" #~ msgid "/Edit/Select All" #~ msgstr "Malkovich" #~ msgid "/Edit/Duplicate" #~ msgstr "Malkovich" #~ msgid "/Edit/sep2" #~ msgstr "Malkovich" #~ msgid "/Edit/_Find" #~ msgstr "Malkovich" #~ msgid "/Edit/Find _Next" #~ msgstr "Malkovich" #~ msgid "/Edit/_Jump To Next Error" #~ msgstr "Malkovich" #~ msgid "/Edit/sep4" #~ msgstr "Malkovich" #~ msgid "/Edit/_Group" #~ msgstr "Malkovich" #~ msgid "/Edit/U_ngroup" #~ msgstr "Malkovich" #~ msgid "/Edit/_Recalculate" #~ msgstr "Malkovich" #~ msgid "/Edit/sep3" #~ msgstr "Malkovich" #~ msgid "/Edit/_Preferences" #~ msgstr "Malkovich" #~ msgid "/View/_Statusbar" #~ msgstr "Malkovich" #~ msgid "/View/_Regular" #~ msgstr "Malkovich" #~ msgid "/View/Show _Formula" #~ msgstr "Malkovich" #~ msgid "/View/No _Edits" #~ msgstr "Malkovich" #~ msgid "/_Insert" #~ msgstr "Malkovich" #~ msgid "/Insert/New C_olumn ..." #~ msgstr "Malkovich" #~ msgid "/Insert/sep6" #~ msgstr "Malkovich" #~ msgid "/Insert/Ima_ge From File ..." #~ msgstr "Malkovich" #~ msgid "/Insert/Workspace From File ..." #~ msgstr "Malkovich" #~ msgid "/Insert/Matrix From File ..." #~ msgstr "Malkovich" #~ msgid "/_Toolkits" #~ msgstr "Malkovich" #~ msgid "/Help/_About" #~ msgstr "Malkovich" #~ msgid "/Help/sep7" #~ msgstr "Malkovich" #~ msgid "/Help/_This Window" #~ msgstr "Malkovich" #~ msgid "/Help/_Users Guide" #~ msgstr "Malkovich" #~ msgid "/Help/_Quick Tour" #~ msgstr "Malkovich" #~ msgid "/Help/_Mosaic Tour" #~ msgstr "Malkovich" #~ msgid "/Help/_Nerd Tour" #~ msgstr "Malkovich" #~ msgid "/Help/M_enu Reference" #~ msgstr "Malkovich" #~ msgid "/Help/_Configuration" #~ msgstr "Malkovich" #~ msgid "/Help/sep6" #~ msgstr "Malkovich" #~ msgid "/Help/_Go to VIPS Home Page" #~ msgstr "Malkovich" #~ msgid "Open Workspace" #~ msgstr "Malkovich" #~ msgid "Save Workspace As" #~ msgstr "Malkovich" #~ msgid "Duplicate Workspace" #~ msgstr "Malkovich" #~ msgid "Duplicate Selected Rows" #~ msgstr "Malkovich" #~ msgid "Insert File" #~ msgstr "Malkovich" #~ msgid "Sliders" #~ msgstr "Malkovich" #~ msgid "Toggle buttons" #~ msgstr "Malkovich" #~ msgid "Text, plus scale and offset" #~ msgstr "Malkovich" #~ msgid "Display as" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Edit matrix \"%s\"" #~ msgstr "Malkovich" #~ msgid "Set matrix" #~ msgstr "Malkovich" #~ msgid "Save Matrix \"%s\"" #~ msgstr "Malkovich" #~ msgid "Replace Matrix \"%s\"" #~ msgstr "Malkovich" #~ msgid "" #~ "Cell (%d, %d):\n" #~ "%s" #~ msgstr "Malkovich" #~ msgid ": cell (%d, %d): %s" #~ msgstr "Malkovich" #~ msgid "" #~ "Unable to load from file \"%s\".\n" #~ "Error log is:\n" #~ "%s" #~ msgstr "Malkovich" #~ msgid "" #~ "Unable to load from \"%s\".\n" #~ "Error log is:\n" #~ "%s" #~ msgstr "Malkovich" #~ msgid "model_save: xmlNewChild() failed" #~ msgstr "Malkovich" #~ msgid "XML load error." #~ msgstr "Malkovich" #~ msgid "Can't load node of type \"%s\" into object of type \"%s\"" #~ msgstr "Malkovich" #~ msgid "Delete?" #~ msgstr "Malkovich" #~ msgid "Are you sure you want to delete %s \"%s\"?" #~ msgstr "Malkovich" #~ msgid "No options." #~ msgstr "Malkovich" #~ msgid "You need at least one option in your option list" #~ msgstr "Malkovich" #~ msgid "Set option caption here" #~ msgstr "Malkovich" #~ msgid "Options" #~ msgstr "Malkovich" #~ msgid "Value" #~ msgstr "Malkovich" #~ msgid "Set option default value here" #~ msgstr "Malkovich" #~ msgid "Edit option" #~ msgstr "Malkovich" #~ msgid "Set option" #~ msgstr "Malkovich" #~ msgid "Orderlist menu" #~ msgstr "Malkovich" #~ msgid "Delete item" #~ msgstr "Malkovich" #~ msgid "Delete selected items" #~ msgstr "Malkovich" #~ msgid "Delete all items" #~ msgstr "Malkovich" #~ msgid "Current options - right button for menu" #~ msgstr "Malkovich" #~ msgid "Enter new option fields here" #~ msgstr "Malkovich" #~ msgid "Paintbox bar menu" #~ msgstr "Malkovich" #~ msgid "Font not found." #~ msgstr "Malkovich" #~ msgid "Font \"%s\" not found on system." #~ msgstr "Malkovich" #~ msgid "Select font" #~ msgstr "Malkovich" #~ msgid "Set font" #~ msgstr "Malkovich" #~ msgid "Clear undo history?" #~ msgstr "Malkovich" #~ msgid "" #~ "Are you sure you want to clear all undo and redo?\n" #~ "This will free up memory, but you will no longer be\n" #~ "able to undo or redo any of the painting you have\n" #~ "done so far." #~ msgstr "Malkovich" #~ msgid "1 round" #~ msgstr "Malkovich" #~ msgid "2 round" #~ msgstr "Malkovich" #~ msgid "3 round" #~ msgstr "Malkovich" #~ msgid "4 round" #~ msgstr "Malkovich" #~ msgid "5 round" #~ msgstr "Malkovich" #~ msgid "6 round" #~ msgstr "Malkovich" #~ msgid "10 round" #~ msgstr "Malkovich" #~ msgid "2 italic" #~ msgstr "Malkovich" #~ msgid "3 italic" #~ msgstr "Malkovich" #~ msgid "4 italic" #~ msgstr "Malkovich" #~ msgid "5 italic" #~ msgstr "Malkovich" #~ msgid "6 italic" #~ msgstr "Malkovich" #~ msgid "10 italic" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Pan window" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Zoom out" #~ msgstr "Malkovich" #~ msgid "Undo last paint action" #~ msgstr "Malkovich" #~ msgid "Redo last paint action" #~ msgstr "Malkovich" #~ msgid "Clear all undo and redo buffers" #~ msgstr "Malkovich" #~ msgid "Nib" #~ msgstr "Malkovich" #~ msgid "Click to select font" #~ msgstr "Malkovich" #~ msgid "Enter text for text tool" #~ msgstr "Malkovich" #~ msgid "Error in %s: %s" #~ msgstr "Malkovich" #~ msgid "definition is too long!" #~ msgstr "Malkovich" #~ msgid "not top level" #~ msgstr "Malkovich" #~ msgid "not strings" #~ msgstr "Malkovich" #~ msgid "Not found." #~ msgstr "Malkovich" #~ msgid "File \"%s\" not found on path" #~ msgstr "Malkovich" #~ msgid "Revert to Defaults" #~ msgstr "Malkovich" #~ msgid "Revert to installation defaults?" #~ msgstr "Malkovich" #~ msgid "" #~ "Would you like to reset all preferences to their factory\n" #~ "settings? This will delete any changes you have ever made\n" #~ "to your preferences and may take a few seconds." #~ msgstr "Malkovich" #~ msgid "Preferences" #~ msgstr "Malkovich" #~ msgid "Unable to display preferences." #~ msgstr "Malkovich" #~ msgid "" #~ "No preferences workspace was found.\n" #~ "Preferences probably failed to load when %s started." #~ msgstr "Malkovich" #~ msgid "Program" #~ msgstr "Malkovich" #~ msgid "Edit window" #~ msgstr "Malkovich" #~ msgid "Menu item text" #~ msgstr "Malkovich" #~ msgid "Load column from this file" #~ msgstr "Malkovich" #~ msgid "Edit column item \"%s\"" #~ msgstr "Malkovich" #~ msgid "Set column item" #~ msgstr "Malkovich" #~ msgid "Unable to save." #~ msgstr "Malkovich" #~ msgid "You can only save toolkits, not tools." #~ msgstr "Malkovich" #~ msgid "You can't save auto-generated toolkits." #~ msgstr "Malkovich" #~ msgid "Toolkit tree menu" #~ msgstr "Malkovich" #~ msgid "Edit ..." #~ msgstr "Malkovich" #~ msgid "Tool changed." #~ msgstr "Malkovich" #~ msgid "" #~ "Tool changed by someone else!\n" #~ "You're going to loose edits unless you're careful." #~ msgstr "Malkovich" #~ msgid "Bad drag." #~ msgstr "Malkovich" #~ msgid "" #~ "Sorry, you can only drag tools between toolkits\n" #~ "You can't reorder toolkits, you can't nest toolkits\n" #~ "and you can't drag tools to the top level." #~ msgstr "Malkovich" #~ msgid "Sorry, you can't drag to or from from pseudo toolkits." #~ msgstr "Malkovich" #~ msgid "Set toolkit name here" #~ msgstr "Malkovich" #~ msgid "Set toolkit caption here" #~ msgstr "Malkovich" #~ msgid "New toolkit" #~ msgstr "Malkovich" #~ msgid "Nothing selected." #~ msgstr "Malkovich" #~ msgid "No toolkit selected." #~ msgstr "Malkovich" #~ msgid "Display this name" #~ msgstr "Malkovich" #~ msgid "Load definition" #~ msgstr "Malkovich" #~ msgid "Reload" #~ msgstr "Malkovich" #~ msgid "Reload startup objects?" #~ msgstr "Malkovich" #~ msgid "" #~ "Would you like to reload all startup menus, workspaces\n" #~ "and plugins now? This may take a few seconds." #~ msgstr "Malkovich" #~ msgid "No tool selected" #~ msgstr "Malkovich" #~ msgid "Bad regular expression." #~ msgstr "Malkovich" #, fuzzy #~ msgid "No match found for \"%s\"." #~ msgstr "Malkovich" #~ msgid "Find in all toolkits" #~ msgstr "Malkovich" #~ msgid "Enter search string here" #~ msgstr "Malkovich" #~ msgid "No match found." #~ msgstr "Malkovich" #~ msgid "No top-level symbol called \"%s\"." #~ msgstr "Malkovich" #~ msgid "Symbol \"%s\" has no tool inforation." #~ msgstr "Malkovich" #~ msgid "Go to definition of this symbol" #~ msgstr "Malkovich" #~ msgid "Go to definition" #~ msgstr "Malkovich" #~ msgid "Object information." #~ msgstr "Malkovich" #~ msgid "No unresolved symbols found." #~ msgstr "Malkovich" #~ msgid "Link report." #~ msgstr "Malkovich" #~ msgid "No documentation available." #~ msgstr "Malkovich" #~ msgid "" #~ "On-line documentation is only currently\n" #~ "available for VIPS functions and nip builtins." #~ msgstr "Malkovich" #~ msgid "/File/New/_Tool" #~ msgstr "Malkovich" #~ msgid "/File/New/Tool_kit ..." #~ msgstr "Malkovich" #~ msgid "/File/New/Separator ..." #~ msgstr "Malkovich" #~ msgid "/File/New/Column Item ..." #~ msgstr "Malkovich" #~ msgid "/File/New/Program Window ..." #~ msgstr "Malkovich" #~ msgid "/File/_Open Toolkit ..." #~ msgstr "Malkovich" #~ msgid "/File/_Save Toolkit" #~ msgstr "Malkovich" #~ msgid "/File/Save Toolkit _As ..." #~ msgstr "Malkovich" #~ msgid "/File/Pr_ocess Text ..." #~ msgstr "Malkovich" #~ msgid "/File/_Reload Start Stuff ..." #~ msgstr "Malkovich" #~ msgid "/Edit/C_ut" #~ msgstr "Malkovich" #~ msgid "/Edit/_Copy" #~ msgstr "Malkovich" #~ msgid "/Edit/_Paste" #~ msgstr "Malkovich" #~ msgid "/Edit/_Select All" #~ msgstr "Malkovich" #~ msgid "/Edit/Delete This _Tool ..." #~ msgstr "Malkovich" #~ msgid "/Edit/Delete This Tool_kit ..." #~ msgstr "Malkovich" #~ msgid "/Edit/_Find ..." #~ msgstr "Malkovich" #~ msgid "/Edit/_Jump to Definition of ..." #~ msgstr "Malkovich" #~ msgid "/Edit/_Info ..." #~ msgstr "Malkovich" #~ msgid "/_Debug" #~ msgstr "Malkovich" #~ msgid "/Debug/_Trace ..." #~ msgstr "Malkovich" #~ msgid "/Debug/_Link ..." #~ msgstr "Malkovich" #~ msgid "/Help/_Program ..." #~ msgstr "Malkovich" #~ msgid "/Help/_Documentation For This Tool ..." #~ msgstr "Malkovich" #~ msgid "Overflow error." #~ msgstr "Malkovich" #~ msgid "%s too long." #~ msgstr "Malkovich" #~ msgid "Not rectangular." #~ msgstr "Malkovich" #~ msgid "" #~ "Matrix of real is not rectangular.\n" #~ "Found row of length %d, should be %d." #~ msgstr "Malkovich" #~ msgid "List only has %d elements, unable to get element %d." #~ msgstr "Malkovich" #~ msgid "No arguments allowed." #~ msgstr "Malkovich" #~ msgid "Object \"%s\" should have no arguments." #~ msgstr "Malkovich" #~ msgid "C stack overflow. Expression too complex." #~ msgstr "Malkovich" #~ msgid "No value." #~ msgstr "Malkovich" #~ msgid "Symbol \"%s\" has no value" #~ msgstr "Malkovich" #~ msgid "Symbol \"%s\" is not defined." #~ msgstr "Malkovich" #~ msgid "Can't duplicate." #~ msgstr "Malkovich" #~ msgid "You can only duplicate top level regions." #~ msgstr "Malkovich" #~ msgid "Can't delete." #~ msgstr "Malkovich" #~ msgid "You can only delete top level regions." #~ msgstr "Malkovich" #~ msgid "Delete Region?" #~ msgstr "Malkovich" #~ msgid "Are you sure you want to delete Region \"%s\"?" #~ msgstr "Malkovich" #~ msgid "Region menu" #~ msgstr "Malkovich" #~ msgid "blocked on" #~ msgstr "Malkovich" #~ msgid "" #~ "Left-click to select, shift-left-click to extend select, double-left-" #~ "click to edit, right-click for menu, left-drag to move" #~ msgstr "Malkovich" #~ msgid "You can only duplicate top level rows." #~ msgstr "Malkovich" #~ msgid "You can only delete top level rows." #~ msgstr "Malkovich" #~ msgid "Drag between columns not yet implemented." #~ msgstr "Malkovich" #~ msgid "Row menu" #~ msgstr "Malkovich" #~ msgid "Ungroup" #~ msgstr "Malkovich" #~ msgid "Replace from file ..." #~ msgstr "Malkovich" #~ msgid "Click to open or close class" #~ msgstr "Malkovich" #~ msgid "Minimum" #~ msgstr "Malkovich" #~ msgid "Maximum" #~ msgstr "Malkovich" #~ msgid "Lower slider value" #~ msgstr "Malkovich" #~ msgid "Upper slider value" #~ msgstr "Malkovich" #~ msgid "Set slider value here" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Edit slider \"%s\"" #~ msgstr "Malkovich" #, fuzzy #~ msgid "Set Slider" #~ msgstr "Malkovich" #~ msgid "Status bar menu" #~ msgstr "Malkovich" #~ msgid "Magnification" #~ msgstr "Malkovich" #~ msgid "Attempt to redefine root symbol \"%s\"." #~ msgstr "Malkovich" #~ msgid "Name \"%s\" repeated in scope." #~ msgstr "Malkovich" #~ msgid "Can't redefine %s \"%s\"." #~ msgstr "Malkovich" #~ msgid "Set toggle caption here" #~ msgstr "Malkovich" #~ msgid "State" #~ msgstr "Malkovich" #~ msgid "Set toggle state here" #~ msgstr "Malkovich" #~ msgid "Edit toggle" #~ msgstr "Malkovich" #~ msgid "Set toggle" #~ msgstr "Malkovich" #~ msgid "" #~ "Can't create dialog with name \"%s\"\n" #~ "an object with that name already exists in kit \"%s\"" #~ msgstr "Malkovich" #~ msgid "tool \"%s\", toolkit \"%s\", refers to undefined symbol" #~ msgstr "Malkovich" #~ msgid "Trace buffer stack overflow." #~ msgstr "Malkovich" #~ msgid "/File/_Clear" #~ msgstr "Malkovich" #~ msgid "/View/Operators" #~ msgstr "Malkovich" #~ msgid "/View/Builtin Functions" #~ msgstr "Malkovich" #~ msgid "/View/Class Construction" #~ msgstr "Malkovich" #~ msgid "/Help/_Trace ..." #~ msgstr "Malkovich" #~ msgid "Trace" #~ msgstr "Malkovich" #~ msgid "Slider value ... edit!" #~ msgstr "Malkovich" #~ msgid "Left-drag to set number" #~ msgstr "Malkovich" #~ msgid "VIPS library error." #~ msgstr "Malkovich" #~ msgid "Unable to set XML property." #~ msgstr "Malkovich" #~ msgid "Unable to set property \"%s\" to value \"%s\"." #~ msgstr "Malkovich" #~ msgid "8-bit signed integer" #~ msgstr "Malkovich" #~ msgid "16-bit unsigned integer" #~ msgstr "Malkovich" #~ msgid "16-bit signed integer" #~ msgstr "Malkovich" #~ msgid "32-bit unsigned integer" #~ msgstr "Malkovich" #~ msgid "32-bit signed integer" #~ msgstr "Malkovich" #~ msgid "32-bit float" #~ msgstr "Malkovich" #~ msgid "64-bit float" #~ msgstr "Malkovich" #~ msgid "128-bit complex" #~ msgstr "Malkovich" #~ msgid "" #~ msgstr "Malkovich" #~ msgid "TIFF image" #~ msgstr "Malkovich" #~ msgid "JPEG image" #~ msgstr "Malkovich" #~ msgid "PNG image" #~ msgstr "Malkovich" #~ msgid "PPM/PGM/PBM image" #~ msgstr "Malkovich" #~ msgid "VIPS image" #~ msgstr "Malkovich" #~ msgid "%s, %s, %s, %dx%d, %d band" #~ msgid_plural "%s, %s, %s, %dx%d, %d bands" #~ msgstr[0] "Malkovich" #~ msgstr[1] "Malkovich" #~ msgid "Bad filename." #~ msgstr "Malkovich" #~ msgid "Filenames may not contain ':' characters." #~ msgstr "Malkovich" #~ msgid "Filename is too long." #~ msgstr "Malkovich" #~ msgid "Filename contains only blank characters." #~ msgstr "Malkovich" #~ msgid "Unable to open." #~ msgstr "Malkovich" #~ msgid "" #~ "Unable to open file \"%s\" for writing.\n" #~ "%s." #~ msgstr "Malkovich" #~ msgid "Unable to write." #~ msgstr "Malkovich" #~ msgid "" #~ "Unable to write to file \"%s\".\n" #~ "%s." #~ msgstr "Malkovich" #~ msgid "bytes" #~ msgstr "Malkovich" #~ msgid "KB" #~ msgstr "Malkovich" #~ msgid "MB" #~ msgstr "Malkovich" #~ msgid "GB" #~ msgstr "Malkovich" #~ msgid "TB" #~ msgstr "Malkovich" #~ msgid "" #~ "unable to make temporary file \"%s\"\n" #~ "%s" #~ msgstr "Malkovich" #~ msgid "Out of memory." #~ msgstr "Malkovich" #~ msgid "" #~ "Request for %s of RAM triggered memory allocation\n" #~ "failure." #~ msgstr "Malkovich" #~ msgid "Unknown type." #~ msgstr "Malkovich" #~ msgid "VIPS type \"%s\" not supported" #~ msgstr "Malkovich" #~ msgid "Error calling library function \"%s\" (%s)." #~ msgstr "Malkovich" #~ msgid "VIPS operator \"%s\"" #~ msgstr "Malkovich" #~ msgid "%s, from package \"%s\"" #~ msgstr "Malkovich" #~ msgid "\"%s\" takes %d argument:" #~ msgid_plural "\"%s\" takes %d arguments:" #~ msgstr[0] "Malkovich" #~ msgstr[1] "Malkovich" #~ msgid "And produces %d result:" #~ msgid_plural "And produces %d results" #~ msgstr[0] "Malkovich" #~ msgstr[1] "Malkovich" #~ msgid "flags:" #~ msgstr "Malkovich" #~ msgid "PIO function" #~ msgstr "Malkovich" #~ msgid "WIO function" #~ msgstr "Malkovich" #~ msgid "coordinate transformer" #~ msgstr "Malkovich" #~ msgid "no coordinate transformation" #~ msgstr "Malkovich" #~ msgid "point-to-point operation" #~ msgstr "Malkovich" #~ msgid "area operation" #~ msgstr "Malkovich" #~ msgid "" #~ "Argument %d to \"%s\" is the wrong type.\n" #~ "You passed:\n" #~ " %s\n" #~ "Usage:\n" #~ " %s" #~ msgstr "Malkovich" #~ msgid "doublevec" #~ msgstr "Malkovich" #~ msgid "imagevec" #~ msgstr "Malkovich" #~ msgid "Bad regular expression \"%s\"." #~ msgstr "Malkovich" #~ msgid "Select exactly one object and try again." #~ msgstr "Malkovich" #~ msgid "More than one object selected." #~ msgstr "Malkovich" #~ msgid "No backup workspaces found." #~ msgstr "Malkovich" #~ msgid "" #~ "You need to enable \"Auto workspace save\" in Preferences\n" #~ "Before automatic recovery works" #~ msgstr "Malkovich" #~ msgid "No suitable workspace save files found in \"%s\"" #~ msgstr "Malkovich" #~ msgid "Open workspace backup?" #~ msgstr "Malkovich" #~ msgid "" #~ "Found workspace \"%s\",\n" #~ "dated %sDo you want to recover this workspace?" #~ msgstr "Malkovich" #~ msgid "" #~ "Can't create workspace \"%s\".\n" #~ "A symbol with that name already exists." #~ msgstr "Malkovich" #~ msgid "Default empty workspace" #~ msgstr "Malkovich" #~ msgid "\"%s\" needs %d arguments, there are %d selected." #~ msgstr "Malkovich" #~ msgid "Too many names selected." #~ msgstr "Malkovich" #~ msgid "You can only remove top level rows." #~ msgstr "Malkovich" #~ msgid "Not all selected objects are top level rows." #~ msgstr "Malkovich" #~ msgid "Unable to ungroup." #~ msgstr "Malkovich" #~ msgid "" #~ "You can only ungroup lists (comma-separated lists of things enclosed in " #~ "square brackets).\n" #~ "Use Format=>Decompose to break compound objects into lists." #~ msgstr "Malkovich" #~ msgid "" #~ "Can't create workspacegroup \"%s\".\n" #~ "A symbol with that name already exists." #~ msgstr "Malkovich" #~ msgid "No text specified." #~ msgstr "Malkovich" #~ msgid "" #~ "Enter some text to paint in the entry widget at the top of the window." #~ msgstr "Malkovich" #~ msgid "Edit regions (+CTRL to create)" #~ msgstr "Malkovich" #~ msgid "Pan image (also use middle mouse button)" #~ msgstr "Malkovich" #~ msgid "Zoom in (also 'i' key)" #~ msgstr "Malkovich" #~ msgid "Zoom out (also 'o' key)" #~ msgstr "Malkovich" #~ msgid "Ink:" #~ msgstr "Malkovich" #~ msgid "Find" #~ msgstr "Malkovich" #~ msgid "at %1$d" #~ msgstr "Malkovich" #~ msgid "Tool" #~ msgstr "Malkovich" #~ msgid "Range" #~ msgstr "Malkovich" libvips-8.9.1/po/messages000066400000000000000000000005351361153320700153550ustar00rootroot00000000000000$,0+1Project-Id-Version: nip2 7.9.3 POT-Creation-Date: 2004-09-30 21:02+0000 PO-Revision-Date: 2003-11-04 12:30+0000 Last-Translator: malkovich Language-Team: malkovich MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit libvips-8.9.1/po/missing000066400000000000000000000000001361153320700152020ustar00rootroot00000000000000libvips-8.9.1/suppressions/000077500000000000000000000000001361153320700157575ustar00rootroot00000000000000libvips-8.9.1/suppressions/asan.supp000066400000000000000000000000531361153320700176100ustar00rootroot00000000000000interceptor_via_lib:libMagickCore-6.Q16.so libvips-8.9.1/suppressions/lsan.supp000066400000000000000000000001411361153320700176210ustar00rootroot00000000000000leak:python2.7 leak:libfontconfig.so leak:libglib-2.0.so leak:libIlmImf-2_2.so leak:libstdc++.so libvips-8.9.1/suppressions/ubsan.supp000066400000000000000000000000251361153320700177750ustar00rootroot00000000000000undefined:libexif.so libvips-8.9.1/suppressions/valgrind.supp000066400000000000000000000134731361153320700205060ustar00rootroot00000000000000# hide GObject type init allocs, they can only happen once and are not really # leaks { type_init Memcheck:Leak fun:*alloc ... fun:g_type_register_* } { type_init2 Memcheck:Leak fun:*alloc ... fun:g_type_init_* } { type_init3 Memcheck:Leak fun:*alloc ... fun:g_type_create_* } { type_init4 Memcheck:Leak fun:*alloc ... fun:g_type_class_ref } { type_init5 Memcheck:Leak fun:*alloc ... fun:g_type_add_interface_static } # module init does this { init7 Memcheck:Leak ... fun:*alloc* ... fun:_dl_init } # g_get_home_dir has a private buffer { gwd Memcheck:Leak fun:*alloc ... fun:g_get_home_dir } # selinux on ubuntu generates a leak report we ignore { selinux Memcheck:Leak fun:*alloc ... obj:/lib/libselinux.so.1 } # gdk and x init { gdk_init Memcheck:Leak fun:*alloc ... fun:gdk_display_open } { x_init_ext Memcheck:Leak fun:*alloc ... fun:XInitExtension } { gio Memcheck:Leak fun:malloc ... fun:g_simple_async_result_complete } { pthread Memcheck:Leak fun:calloc fun:_dl_allocate_tls fun:pthread_create@@GLIBC_* } # hide all dbus reports, not the app's problem { dbus Memcheck:Leak fun:*alloc ... obj:*/libdbus-1.so.* } # hide all orbit leaks, not our problem { orbit Memcheck:Leak fun:*alloc ... fun:ORBit_* } # other lib init { fontconfig_init Memcheck:Leak fun:*alloc ... fun:FcConfigParseAndLoad } { fontconfig2 Memcheck:Leak fun:malloc fun:strdup fun:FcValueSave obj:*/libfontconfig.so.* } { fontconfig3 Memcheck:Leak fun:realloc ... fun:FcFontMatch } { fontconfig4 Memcheck:Leak fun:realloc ... fun:FcPatternAddInteger } { fontconfig5 Memcheck:Leak fun:realloc ... fun:FcPatternDuplicate } { fontconfig6 Memcheck:Leak fun:realloc ... fun:FcDefaultSubstitute } { freetype_init Memcheck:Leak fun:*alloc ... fun:FT_Open_Face } { harfbuzz Memcheck:Leak fun:calloc ... fun:hb_shape_plan_execute } { goffice_init Memcheck:Leak fun:*alloc ... fun:libgoffice_init } { g_module_init Memcheck:Leak fun:*alloc ... fun:g_module_open } { gtk_module_init Memcheck:Leak fun:*alloc ... fun:gtk_module_init } # gdk-x11 makes a toplevel object { gdk_x11_init Memcheck:Leak fun:*alloc ... fun:_gdk_x11_window_get_toplevel } # the icon theme allocates stuff on lazy load { gtk_icon_theme_has_icon Memcheck:Leak fun:*alloc ... fun:gtk_icon_theme_has_icon } # tooltip labels are not really owned by anyone and will not be freed on exit { gtk_tooltip_set_markup Memcheck:Leak fun:*alloc ... fun:gtk_tooltip_set_markup } # pango makes a PangoLanguage for every script you use { pango_language Memcheck:Leak fun:*alloc ... fun:pango_language_from_string } # pango makes a PangoOTRuleset for every font you use { pango_ot_ruleset_get_for_description Memcheck:Leak fun:*alloc ... fun:pango_ot_ruleset_get_for_description } # pango makes a PangoOTInfo for every font you use { pango_ot_info_get Memcheck:Leak fun:*alloc ... fun:pango_ot_info_get } # fonts pango has loaded { pango_fc_fontset_get_font_at Memcheck:Leak fun:*alloc ... fun:pango_fc_fontset_get_font_at } # font maps pango has loaded { pango_fc_font_map_load_fontset Memcheck:Leak fun:*alloc ... fun:pango_fc_font_map_load_fontset } # ... and font descriptions from every "sans 12" type string { pango_font_description_from_string Memcheck:Leak fun:*alloc ... fun:pango_font_description_from_string } # gettext has annoying uninit warnings { gettext Memcheck:Cond fun:__GI___strcasecmp_l ... fun:__dcigettext } { gettext Memcheck:Value8 fun:__GI___strcasecmp_l ... fun:__dcigettext } # libz has a warning too ... see this from libpng / libxml2 etc. { libz Memcheck:Cond fun:inflateReset2 } # libvips can generate this one spuriously { libvipswrite Memcheck:Param write(buf) ... fun:write_vips } { pixman1 Memcheck:Cond ... fun:pixman_image_composite32 } { cairo1 Memcheck:Cond fun:rsvg_cairo_surface_to_pixbuf } { rsvg Memcheck:Cond obj:*/librsvg-2.so.* } { murrine Memcheck:Leak fun:calloc fun:g_malloc0 fun:raico_blur_create } { signal_connect Memcheck:Leak fun:calloc fun:g_malloc0 fun:g_closure_new_simple fun:g_cclosure_new fun:g_signal_connect_data } # ruby has some annoying ones too { ruby1 Memcheck:Cond ... fun:rb_parser_compile_file } { ruby2 Memcheck:Value8 ... fun:rb_parser_compile_file } { ruby3 Memcheck:Cond ... fun:rb_file_expand_path } { ruby4 Memcheck:Value8 ... fun:rb_file_expand_path } { ruby5 Memcheck:Value8 ... fun:rb_enc_str_new } # helgrind stuff ... run against glib-2.40.x or earlier, later glibs have # their own mutex primitive which helgrind can't see { helgrind1 Helgrind:Race fun:g_thread_proxy ... fun:start_thread fun:clone } { helgrind2 Helgrind:Race fun:strlen fun:pthread_setname_np fun:g_system_thread_set_name fun:g_thread_proxy ... fun:start_thread fun:clone } # there's an unlocked assign FALSE which is fine { helgrind3 Helgrind:Race fun:vips_region_prepare_to } # unlocked read of pixels-processed-so-far, which is fine { helgrind4 Helgrind:Race fun:vips_sink_base_progress } { helgrind4a Helgrind:Race fun:wbuffer_allocate_fn } # helgrind can't see g_private { helgrind5 Helgrind:Race fun:g_private_set } # use of *stop from generate funcs is unlocked, but fine { helgrind6 Helgrind:Race fun:vips_threadpool_run } libvips-8.9.1/test/000077500000000000000000000000001361153320700141615ustar00rootroot00000000000000libvips-8.9.1/test/.gitignore000066400000000000000000000000421361153320700161450ustar00rootroot00000000000000test_descriptors test_connections libvips-8.9.1/test/Makefile.am000066400000000000000000000014051361153320700162150ustar00rootroot00000000000000# don't run test_thumbnail.sh by default, it takes ages TESTS = \ test_connections.sh \ test_descriptors.sh \ test_cli.sh \ test_formats.sh \ test_seq.sh \ test_stall.sh \ test_threading.sh SUBDIRS = \ test-suite noinst_PROGRAMS = \ test_descriptors \ test_connections test_descriptors_SOURCES = \ test_descriptors.c test_connections_SOURCES = \ test_connections.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ AM_LDFLAGS = @LDFLAGS@ LDADD = @VIPS_CFLAGS@ ${top_builddir}/libvips/libvips.la @VIPS_LIBS@ EXTRA_DIST = \ variables.sh.in \ test_cli.sh \ test_descriptors.sh \ test_connections.sh \ test_formats.sh \ test_seq.sh \ test_thumbnail.sh \ test_stall.sh \ test_threading.sh clean-local: -rm -rf tmp-* libvips-8.9.1/test/README.md000066400000000000000000000002661361153320700154440ustar00rootroot00000000000000# libvips test suite This is in two parts: a few simple bash scripts in this directory are run on "make check", and a fancier Python test suite that's run by Travis on each commit. libvips-8.9.1/test/test-suite/000077500000000000000000000000001361153320700162675ustar00rootroot00000000000000libvips-8.9.1/test/test-suite/Makefile.am000066400000000000000000000004771361153320700203330ustar00rootroot00000000000000SUBDIRS = \ helpers EXTRA_DIST = \ images \ conftest.py \ __init__.py \ test_arithmetic.py \ test_colour.py \ test_conversion.py \ test_convolution.py \ test_create.py \ test_draw.py \ test_foreign.py \ test_histogram.py \ test_iofuncs.py \ test_morphology.py \ test_resample.py \ test_connection.py libvips-8.9.1/test/test-suite/__init__.py000066400000000000000000000000001361153320700203660ustar00rootroot00000000000000libvips-8.9.1/test/test-suite/conftest.py000066400000000000000000000001321361153320700204620ustar00rootroot00000000000000import sys import os sys.path.append(os.path.join(os.path.dirname(__file__), 'helpers')) libvips-8.9.1/test/test-suite/helpers/000077500000000000000000000000001361153320700177315ustar00rootroot00000000000000libvips-8.9.1/test/test-suite/helpers/Makefile.am000066400000000000000000000000351361153320700217630ustar00rootroot00000000000000EXTRA_DIST = \ helpers.py libvips-8.9.1/test/test-suite/helpers/helpers.py000066400000000000000000000204521361153320700217500ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : # test helpers import os import tempfile import pytest import pyvips IMAGES = os.path.join(os.path.dirname(__file__), os.pardir, 'images') JPEG_FILE = os.path.join(IMAGES, "sample.jpg") TRUNCATED_FILE = os.path.join(IMAGES, "truncated.jpg") SRGB_FILE = os.path.join(IMAGES, "sRGB.icm") MATLAB_FILE = os.path.join(IMAGES, "sample.mat") PNG_FILE = os.path.join(IMAGES, "sample.png") TIF_FILE = os.path.join(IMAGES, "sample.tif") OME_FILE = os.path.join(IMAGES, "multi-channel-z-series.ome.tif") ANALYZE_FILE = os.path.join(IMAGES, "t00740_tr1_segm.hdr") GIF_FILE = os.path.join(IMAGES, "cramps.gif") WEBP_FILE = os.path.join(IMAGES, "1.webp") EXR_FILE = os.path.join(IMAGES, "sample.exr") FITS_FILE = os.path.join(IMAGES, "WFPC2u5780205r_c0fx.fits") OPENSLIDE_FILE = os.path.join(IMAGES, "CMU-1-Small-Region.svs") PDF_FILE = os.path.join(IMAGES, "ISO_12233-reschart.pdf") CMYK_PDF_FILE = os.path.join(IMAGES, "cmyktest.pdf") SVG_FILE = os.path.join(IMAGES, "logo.svg") SVGZ_FILE = os.path.join(IMAGES, "logo.svgz") SVG_GZ_FILE = os.path.join(IMAGES, "logo.svg.gz") GIF_ANIM_FILE = os.path.join(IMAGES, "cogs.gif") DICOM_FILE = os.path.join(IMAGES, "dicom_test_image.dcm") BMP_FILE = os.path.join(IMAGES, "MARBLES.BMP") NIFTI_FILE = os.path.join(IMAGES, "avg152T1_LR_nifti.nii.gz") ICO_FILE = os.path.join(IMAGES, "favicon.ico") HEIC_FILE = os.path.join(IMAGES, "Example1.heic") unsigned_formats = [pyvips.BandFormat.UCHAR, pyvips.BandFormat.USHORT, pyvips.BandFormat.UINT] signed_formats = [pyvips.BandFormat.CHAR, pyvips.BandFormat.SHORT, pyvips.BandFormat.INT] float_formats = [pyvips.BandFormat.FLOAT, pyvips.BandFormat.DOUBLE] complex_formats = [pyvips.BandFormat.COMPLEX, pyvips.BandFormat.DPCOMPLEX] int_formats = unsigned_formats + signed_formats noncomplex_formats = int_formats + float_formats all_formats = int_formats + float_formats + complex_formats colour_colourspaces = [pyvips.Interpretation.XYZ, pyvips.Interpretation.LAB, pyvips.Interpretation.LCH, pyvips.Interpretation.CMC, pyvips.Interpretation.LABS, pyvips.Interpretation.SCRGB, pyvips.Interpretation.HSV, pyvips.Interpretation.SRGB, pyvips.Interpretation.YXY] cmyk_colourspaces = [pyvips.Interpretation.CMYK] coded_colourspaces = [pyvips.Interpretation.LABQ] mono_colourspaces = [pyvips.Interpretation.B_W] sixteenbit_colourspaces = [pyvips.Interpretation.GREY16, pyvips.Interpretation.RGB16] all_colourspaces = colour_colourspaces + mono_colourspaces + \ coded_colourspaces + sixteenbit_colourspaces + \ cmyk_colourspaces max_value = {pyvips.BandFormat.UCHAR: 0xff, pyvips.BandFormat.USHORT: 0xffff, pyvips.BandFormat.UINT: 0xffffffff, pyvips.BandFormat.CHAR: 0x7f, pyvips.BandFormat.SHORT: 0x7fff, pyvips.BandFormat.INT: 0x7fffffff, pyvips.BandFormat.FLOAT: 1.0, pyvips.BandFormat.DOUBLE: 1.0, pyvips.BandFormat.COMPLEX: 1.0, pyvips.BandFormat.DPCOMPLEX: 1.0} sizeof_format = {pyvips.BandFormat.UCHAR: 1, pyvips.BandFormat.USHORT: 2, pyvips.BandFormat.UINT: 4, pyvips.BandFormat.CHAR: 1, pyvips.BandFormat.SHORT: 2, pyvips.BandFormat.INT: 4, pyvips.BandFormat.FLOAT: 4, pyvips.BandFormat.DOUBLE: 8, pyvips.BandFormat.COMPLEX: 8, pyvips.BandFormat.DPCOMPLEX: 16} rot45_angles = [pyvips.Angle45.D0, pyvips.Angle45.D45, pyvips.Angle45.D90, pyvips.Angle45.D135, pyvips.Angle45.D180, pyvips.Angle45.D225, pyvips.Angle45.D270, pyvips.Angle45.D315] rot45_angle_bonds = [pyvips.Angle45.D0, pyvips.Angle45.D315, pyvips.Angle45.D270, pyvips.Angle45.D225, pyvips.Angle45.D180, pyvips.Angle45.D135, pyvips.Angle45.D90, pyvips.Angle45.D45] rot_angles = [pyvips.Angle.D0, pyvips.Angle.D90, pyvips.Angle.D180, pyvips.Angle.D270] rot_angle_bonds = [pyvips.Angle.D0, pyvips.Angle.D270, pyvips.Angle.D180, pyvips.Angle.D90] # an expanding zip ... if either of the args is a scalar or a one-element list, # duplicate it down the other side def zip_expand(x, y): # handle singleton list case if isinstance(x, list) and len(x) == 1: x = x[0] if isinstance(y, list) and len(y) == 1: y = y[0] if isinstance(x, list) and isinstance(y, list): return list(zip(x, y)) elif isinstance(x, list): return [[i, y] for i in x] elif isinstance(y, list): return [[x, j] for j in y] else: return [[x, y]] # run a 1-ary function on a thing -- loop over elements if the # thing is a list def run_fn(fn, x): if isinstance(x, list): return [fn(i) for i in x] else: return fn(x) # make a temp filename with the specified suffix and in the # specified directory def temp_filename(directory, suffix): temp_name = next(tempfile._get_candidate_names()) filename = os.path.join(directory, temp_name + suffix) return filename # test for an operator exists def have(name): return pyvips.type_find("VipsOperation", name) != 0 def skip_if_no(operation_name): return pytest.mark.skipif(not have(operation_name), reason='no {}, skipping test'.format(operation_name)) # run a 2-ary function on two things -- loop over elements pairwise if the # things are lists def run_fn2(fn, x, y): if isinstance(x, pyvips.Image) or isinstance(y, pyvips.Image): return fn(x, y) elif isinstance(x, list) or isinstance(y, list): return [fn(i, j) for i, j in zip_expand(x, y)] else: return fn(x, y) # test a pair of things which can be lists for approx. equality def assert_almost_equal_objects(a, b, threshold=0.0001, msg=''): # print('assertAlmostEqualObjects %s = %s' % (a, b)) assert all([pytest.approx(x, abs=threshold) == y for x, y in zip_expand(a, b)]), msg # test a pair of things which can be lists for equality def assert_equal_objects(a, b, msg=''): # print 'assertEqualObjects %s = %s' % (a, b) assert all([x == y for x, y in zip_expand(a, b)]), msg # test a pair of things which can be lists for difference less than a # threshold def assert_less_threshold(a, b, diff): assert all([abs(x - y) < diff for x, y in zip_expand(a, b)]) # run a function on an image and on a single pixel, the results # should match def run_cmp(message, im, x, y, fn): a = im(x, y) v1 = fn(a) im2 = fn(im) v2 = im2(x, y) assert_almost_equal_objects(v1, v2, msg=message) # run a function on an image, # 50,50 and 10,10 should have different values on the test image def run_image(message, im, fn): run_cmp(message, im, 50, 50, fn) run_cmp(message, im, 10, 10, fn) # run a function on (image, constant), and on (constant, image). # 50,50 and 10,10 should have different values on the test image def run_const(message, fn, im, c): run_cmp(message, im, 50, 50, lambda x: run_fn2(fn, x, c)) run_cmp(message, im, 50, 50, lambda x: run_fn2(fn, c, x)) run_cmp(message, im, 10, 10, lambda x: run_fn2(fn, x, c)) run_cmp(message, im, 10, 10, lambda x: run_fn2(fn, c, x)) # run a function on a pair of images and on a pair of pixels, the results # should match def run_cmp2(message, left, right, x, y, fn): a = left(x, y) b = right(x, y) v1 = fn(a, b) after = fn(left, right) v2 = after(x, y) assert_almost_equal_objects(v1, v2, msg=message) # run a function on a pair of images # 50,50 and 10,10 should have different values on the test image def run_image2(message, left, right, fn): run_cmp2(message, left, right, 50, 50, lambda x, y: run_fn2(fn, x, y)) run_cmp2(message, left, right, 10, 10, lambda x, y: run_fn2(fn, x, y)) libvips-8.9.1/test/test-suite/images/000077500000000000000000000000001361153320700175345ustar00rootroot00000000000000libvips-8.9.1/test/test-suite/images/1.webp000066400000000000000000000731601361153320700205620ustar00rootroot00000000000000RIFFhvWEBPVP8 \vҾ*&p>NCѴQ93u>ʧ-:c *d/ Uœo经OnzO3wK[;>x?{ /@s=@?`/~y-WG_ u?eQlŠs78е[Ks7R!iʧV^4K*:'ѩOw*w >kMmGF W\_|=|= ʟ04OPg~ݢs(+0\ߎ,lnl2S֐ 3qw%^Yw$UiJ N p 5GܽGYh#[{`nbGEpN$,8#x`e0Nx.Ɗ?>}LN;;"QƜ;$M~z\2elJ~+w}ݸ 5]ISV&[F ۢxfd142fج+.SB aTL "׏% J3ÍiVfk 6qHI,'x5=/ws Ʃxm(oUKe"GqDžVQ"k-y%1w -;T .fWk΁ߟ` bu,ǹ[jqۤ_6~cH6? h9Rf<^VSg,s)lUd<f+U._K*J24fa\ 3ޯ]e/Lv7ю@`FVÒM%W;OTVz'b 7.Gw6%8~Tݧ!*Tˤ [Yb/6>ܦUU S˕:9 6D:k۶1 > zZr4PnhCn͡+9lC|!>2;cJzrF=n$<2@uc8Z5Ael|.9n& 꾲L*<6_{ 1YW#pUN2c82 #Z&;Nnz&e:V9:Zup:7<fTʏU" @{Q__֦ * 9A75֧y-_?~g/h޸:?NAXM8b)B^uw#gr_u1q8[]","髺>18ؿxQT`P1%d{w2"5APV}X6t;؀> {;~Q@نYh̟>,Gm2z#%ϊvVIO՟lZI#, e=jE/־oZ)7<ڢV)B]{dBK;SBr`Y+̡=>[aq =-n}-RStBG ߶֛S#h7x|Y{}-N |61NQId{Σ}4bPMgt6#˥L:v|"&8뉉sm{΅: !-NJNV,9o-/>mVc17s?gpsj"0ROC7脃\YL{Zl8y[SM},*C84߽Œ6!kZk,W|/'"vyHg#m^+>C1Y xw:O~LDvcT3aZz6RW_K9!AuR8iî&q~f#1`VM*|jCɫ\Q@bQi(q xÉ<'D&gC_\2԰ˬZ񪙯h[a-(1~#uE{q8(ҭXh܍w+Pb̿V L,e,[^6Mx-4W<1,h2fj=^;p=Iرj*1wL:hC̕=r#-qQ#\`)?$EdϹ3*VS?-&$_◭_C]I(^ w Sb-נgZw# S78iD`i,%X6^\3豋J2G>V(\HDkF7f<+}QA0VzpgdfOk1cDE*c06Cfq wM"ُU35%Nwj+R y,}|XdD&6"$6-*k@1 SFV^r@G@" _'ʻ 0 !뿇Jp#*w cBm3ד\ɍmjo?mtNrYcN2k#,EO`w"cZJH%/$>6n7> gh ?N 2 )gC2pǯ Y]E"'HF*e cgQ䒂pi=5+c*_a~OU"$f|Kdqy-Kp*!wH8'C_X:T Ji_7%id-]?iƣq;F֯K|`K[Eɒ0e?T֧(iL}bzFOf__ϹNnzzQa|V9(x_œM%{bi7{l*MEMaEW?؊{1 ZM[=~0ͬ,"2G~ljp@|eK ~=cݛh|Ï^,ukq 4Xϵ/yJ=ddԣhQ D,1xuQ""#ciye#炪|*ð1ZDԫF>KǞ~яwoq̂ue؎=)4*mͶ  ނڕz9A -s=%A (lVB;5Qϛd0 Z3F73|Щ${ˣlvfC0FjT@7J 7e.f4zemp@1zưP7pV*Ҧ&i+5 cǝp[`}i (Ⱥ~YA;" PcJb*Y/2샎M&/zwnA L-6;>Ŝ#4ܑ5}̹S'g1gmQİdʯhO]Hn5J\J,H&G#nJXfOnAG`߳% lOoo`*鵦? 55$C^Ji.11Sm[wvL 0R,p>(TAL) ƎU!~/A!a5^$!HLwI:^s:8SA;Φ}A3 _JzqBMX>VyjjBO:? ,D }0(zwoT5%ֽ(%egL Z_IW#]ER&p`\-r./e_@QXRDw]]릳t%WeMf9!$ݓiOK8@޼T#q#_R~q'Y.s Ybux+HSoLl;cZپ,(y x Ӛ3U΀O7d߉U/̹u2D}O>a?RgФ4͜[~n|d?t.Ì&mL`<;UѶ, E!=-RIDcCot=OA7Zj [r5#1e'mI`^QK^ $h-#6 h`!zg08跦D۬U[8npgy$9PN xwk@"~_{U,cctwT&=%[TCY] X|?~LsD49#uXMI(y6*\f`u'_Bq2vvL;]+|MFBnڳEx&PU)sO>(i;C<JvB(k~h.pi{]܎P´rL,'^,dvy"TGn`30Xc 1ВmFR&6yS #]g*M5)BUsNCkǾ\5 ;е6D,Xf9/% OB~zTNGCw=c=iZ~-k`()ȯP99 %ז}&}UX!pmlZΰ-h:mtU=`IH0<ӡ潳|_VR&+`Zu%\G(`f 0ebZNM S1]-` +I@mbWvo'Q2ig_!4tw8TZ-NՍ;ҎЕRدlۉ L8TR4٧58V7N|gW:%_*zgk[4F%I–cdpP!QzK[Ψ{pb_5ݐvM߇$_!Ӽ0bDN0?H1r x3/4 a 0գ8:%Ũ+2#R`zR<uH. P}$gy[ku\\j %j@e>~]Ye;DlR۴kڮ&a*;]b3ATdnR@$R@\,ÇFNkB>J[lo%*֤G@?wGo8u/@/ | e8ٞICǀӉk-7UhoW<6>Ux) 6nѽ raਬةa =2Q* ˭aP05d3C{;"ɎUgP4&-L{fC0//6*vWʪ3mĝ7)Po05{s33Oe%{w!L9)7ysHj3k0Xp$w2NP%p!fӯymFҌ+kBa0T;X!ŇAͺ" ok_> <Fow"RG4' #ZܓՆ!i7HA/YH=gsU+`3_j8Dwdn/BWwXW'P|sF&%^3őJq`$Ţo)EF] IԆ|R;]O&ݾoP^ʇDm٪3гiv-K]5VKXJ=sC̍{֡rw`0uI%:S,E[le9"R(-r/#,#zj|N9i>xρb ^;D2N?e3\ky޹z7N0dm /M<gFr2 -9.aȰk(0ljp 4n{cz! x?:_Ht^mbHi'/N͞q8UArCPA A!d@p 7@|Mr;\Dݾ(|RϚC^ .c>XxSJ=XrF.ʹejqz.ͅ`DcXq._C%zm'8mԲD+ QɽK{}2ϻ!yKRVpW2z2<"x لYʷTc1r8<΀\~VtD^tݕ:3'eǢqRy aVW hsMwꠝw34*i$.ioGq/OÒ,i afbX:*FUTÁƲ'n*) ,2[FTbg$=lfGzx։j,U@J.td6~ĴEHR,D}kˤmba`7z>2mJb~X3zE}(bHE=fdqDa$YwE*;!-q1 #U4[}4=FL>3v,S+N=.8bb3֬RPђH" !" M[!-|ZXgDI1 HCqx0x>9K!{W h+q}(Z\S#a.b,F?mc9) 50"", DD${aoeM¹srs*wN{_<h|33C.oM1q6h6mUJ$ڕZ(bD|d}97vy 4KƢ+7*K kov%|T ԹX *p^}:w][FGԶ/,9&ȤM|d.)ݢ],Nk]w +=-Qjm`iɾMI/u9 _M˩{XRvcRc?gYs`%"`zŇI7bf2w𠩴HB_ Fr鏱]2p3DJ07Z9˾F2 S2|И*6λ49 @;AQUXӼrG:B·۫鞲>9'ZӁ<2t IuB;"d;7z(\k5c{ta /hZ$݅Esq}>@l  h7(RlŻB: =FĤ"*DJLs=UDV @C؎¬%L{@C HsHL[ s`VJ!,0O܁Amzr~4($W2W(~|NWb6 ١$aCl2:aA 1rSInw(矀,ߘx}=`GE@HV_ 381H2~j 0G(Pi7w^/6UH$_ 1#W.?KT14x{Ic 2oUD>{ZneIXx?3dRJFe"-jD:I35UI2Qi<5W 0o x| *GnXu3sQSF1cW+J_%d6dR ;P%E .1eˋ׉y{Uv L O䰩¯d ^W*,43ص ҖԯL5@qӐתy3}RY SןfGHa';T[1<8ME'frQ^/0,YJez]{ͬ=OZCl-'W&T :W94t!t|a>.OG?@LOiN;؇utM^(fN\o}קF*,;7bzn %:p)thǐEEam=Xi((1B)dy_ѯ[$b#P4 2sj !aG|PF2ºl^ɢ(X=,\d3,a|cmˉ.]m%pDq\ν!?}*%e2dj]wSNTaĖ)ٹ:^مb:ŋMԙء}HFҰq1(y3:[#MfVV7e->X&wg`o!" (x |*~E NgfR/3g` Ւ'ϭ_-Z\ϓmika @ c8Tu|~^ +~u3J:\+b5%WIZۧH}J})OH~Pk$)Ev1s 9?V~pݙ1ӀlYU9O/4e=gޝ>59[p[`kZ]Q+d2.IH\83#?Oat4R( ̀٫#O].Z k^w#̜)SU^d&* a޿FcYM7^*~,ۨ?8ɟw]נ%gf77I.rO lO(7|I`@ŷ_`9Ŝjũ n4>r?OTj9C\N[pEL+Q߸=Pxqy\."ƃǩ,{;{4O#P rKt?Q~8D+%sX.ӄ6#ifLYNņт]Y/tK"W K3~;lmS-g߾ܘO101:]ő/qpgx >Q'ng R.vWՁ Su9hALpfr|aK\u˴,> jVXԆԃ:ɍ]g uZLDeBґeD7xkفHr`[TQcV0) 65:^uN^R1VT)2"BŤ@"/A$ܲp]KYtyc=n1+kC3: 34Wӎ`E]ϧWXכ RֱUa{ pw T‡@W 6s{<ÞY,m>L0_Uz`:*QUK)ٕWӆ\ً%BҺnljGҭcM^Uk+ h r@b=<<CP%:KZ r=)/S.݉/e#jۿyT-6V%4b=Iwv[`Y ñphhbdy1L7knmq+зf5s0Ú|YHA<^r `oJvg~杻/zxlWD_`GDas`Ǚ`7ZQq:S]R@f 0Zz^L5dT܎ЌRџeTRZ=d>X1pF}B\`9xزA%0 ;1`@Yx?G37QtK3{\Ɗ3 OLaMV)]$|(S: az:ή VgfݱG<k6l-)ך+*xR3M;7e}>uo |O>q^^hv0hyD y~5H?/8}A? r㣹c4&lS K)F3D\OanXj -NNq@?p߾Ac0\8^QF) uS[DBd86sb0j)P=R8g6857r]Mg  #q8@L~ЮQ|RjH_1q݀[?[@"ߕ$8h%H_i2P& Yѻ +I8 V,NP9v"7u{ٮy)qvw%mG" ?g~ u]Iڼ7$Xex"飰-#`8ƳfIV;UVHr72D7BQ9+|,(:tO%zq䆄 [El)=C `E9YO .rɖP, ̦{jW9 o&}`j?Q٨auJw3Y}:do{zgt/gGZ?Bo<UBw?|V7|t QZgI貫B#i/V5 |g1݁U.^E *_nURzjuCnc\JĶ3#M4M/-] E\+QElA`i @OPo+H~$eJ|,s|A|w]qה0@Go_XDf0zGBb]'ohq#:wٙb 1{,@jhswavB-U XwFP^__@\]Tm!`p1a tȉLGxQ"Ǣj: K,]]{_D}QfD3 oc%b'!F9=Iƹ ݭqh365T7g 'q4 K铘?'p_92WSZ&?,w H8/+"((n `iaTiQON5[R>km^@nbXg:1ٱYp+)i}="♈livP$X0NfJGSbeX D *w^D)V/~ V\dvͺ<(V<k?%t=&0T>SR -ɼ"!(Woƾ5cg"??o2L:Q߂1hr91Cw?a҃3O22 %u 1w5pŌ\dÖCD͕*]SUҜ>Kya(k8nQU] Քf|bb(m녶^i/ 錭M'쑤tf  /k${uv m&g⽞۬NA ތkʐrfо5BFӦgwӖ>x >ҸO%[7'̮!Zu%!oWhO#mTXa 2ųY> 4MOw=hey5EC־Ҕ5Cweka'eċ 5SҲ k4tB>#kDT+4Cszۭ., wt~Qck\EAy^)fY;B?ѕy򱔇et/mj,kW;K<*꺂EJwpS 8eTٔ f>Yiw^E"7TRUL-M0+d-=8Ac y*{/nLHaw caYj[1Q &q|4Kf֟q!2Rk^ CJxr |PI譂"RSM7sK{ZH"%5F: фOZ~9/]wz-se*fdq.z?7PQI: ' WBH2ēt_`d ?*zdCY'V7M@Zoϧ mEn78^屈8E AŲ΋O~.y [*ʼn}@X5!sW耫tETհAn5dT9k9El5"Lȼ[4@m.@/o 1>P۩qDpoǧ5ճ"N +?@XcL,+^C7/$g։Ax?c[.Ei if8rq)b'R :|>Sw_v2e٣Wo]ĸ K"|!SflJL3T' )[q5J*$P:VA!D)A\tj5d?Aя{c{ <&OGI QQAUd JPz 7f߱"uhPa Z2Qt>>kp$U1V_nxr0R%ߡ鯸U Z0$(>_W<+fp=t^pxb<ifz{d`d_  Ibd(&ȕp%?3!BLɞ&6nZCL~?ztoyu쩐IX sI{W{M,`tI+ܤ8>rf*Z ˜cS7-fw`Q)y3a7J#ꐊob]4kX_,䌗'2>DL ;2ݜi΄iwBZ@E+Y ȡVki yW~TSht?NNRCa\,o`Fʜ. r7]mV[Qhv{"&gǂއu Ϛ[F^ׅ3d1WK̦ +\/%I[F:sYPzY%/3 %qő", w vŶ8dO$U,r(<* ]>&k{-[^0EHܦ!;aǶtA>`*;ꎱߖkEPb& TD9YQs0q]',eT~VǷVSg %.oBZz FP%pBo_,_Zh>1I y;j ~քy}z"ZHU5%m]'e!EmnR."Boe x΁ ȌLFjv;"!PXGVt1= vL/'#4o@fGvu**.kr /ekw5p:=PZα/w//H6O1q42u~w*ق @_Z]2Z 4%ru-2Snȃ]%̒e q:6晙l2ma@Cnek;2KOk /bFZzOs_cIsA}Jcn J,+4g^@Z{J&bIdHw/ axON+Lے|Z>(iDwl6m FCbrhC; .].[f|]usRvuڜ }Lc AԽSRB ky}.FEYգal8Ic3:ROiNe,hλ /%1mKFpFؖ=璀pYD*^Jqۍƀ`dB[]5WxڇaYվ! f^5Ǿa&O̦(liҩ$Z^EC~Բ3:Y?ſ^!T;ӯe"Hr \KwɘZ2Ӱ+v- ԤTa.e8V'9 Si*X˞FPbI[$c[ aUx[ٲr 륗avh7g EOld3>M߶;1mj)HLڰ2c"04I61y#~+*&gڠRbbpꑿKKr :a0w6;/66gB-['.4˃b"k7C7CL~ I0ߨ/ÓRIl8I߿_WY[ vڻ~5'?6_FfX2.6ΥnT&X,c, 'IWH{! ~<.6\@'>p݂#ѓ"B;ּysӟɀC󒨢{2|{I5Nq ٠j> Y`5Wtj,N!ar,sDl¦.Q`?=+?Tyc&'棫DbT|fX-1R+ͣ 4_y4AKYwBYuoF'y?pwIa4kÄTp" F7~B7nՀͼUt/(b}pظgQ"R{>t3K_0vy ;1A70,OD$u {ߐPUG}|BuJ"$HV fE}}΂ lP8%ߠ7jbH$; ҳG'~\R6alǑS=t۱Տ_T`2U p\eSOIqv`,-Ĝ /'< e#G,>)oN*+cLlR߫4ɖ>,wjz>E7!uPd:%^ZА@c_9$qWWC?EL_J'Z!K{L$Yj)$ #*.蕫[*h4Tz's'%U\P \T:'aQr>duH)^oCpWnI B,{q~Gкr.M^1 =dztG, Mtᖀ: `"ZH@ *]a)sb")qըHRgMBrɀ]*YydSi)Zg@TekIn\T:' JXOL-q&S(˚)K)Fi"K otdx2hQ_ Ț@ o@L(0Ӳowk]#cvԬg'zIvu,ގ.0Xf 7;Z7]4om$!Z1Ƴ9o !O%|yQt5b0'7q-(dy]q]J=;xB!&^"P|9R]$<9ʄywf˽HsEvb7FGXrR$W%2|gaHZ~԰$g\yr:ng닙A$ȺܺA;waHT;_|x|\Eewńy[QasMTQtm˸\8on(EeKS~ j9tT# FTYl t_RX9zXOP ePa6" S$1N md lQkt6p!t5zlweKv2.E(51^8S)"N-ǜ4sbmc7^:.wwBfaXUnTgQ8Rszazm^h#3 .axA`|"gLImV\36|"HՎwP<;0#B.5դ$3Ҽ#?E*@Ekt4ƈ$"X]O ,߱O`T"I TBE]n%> u V<@i4k(C4q=&9va/5n ypO|yJbP𭃬V i"ktGrmlͩGmYL;Яזqe KA[$|s]= `W"KVnwti!O&Z/0A?.S9ŐDPKz6E>e 0-k 毛eYvA}Sʅ0㇯SR&mjKbzUiT/zﱕu&;U2{uw,2\]*ݞ(-JC}5"_|S]Ǚ>nQ ʼnIq t'f(2 <Ӷ(LLwYPhBn*;7YV[?qǝ %<)aVzLRp3q\.(C' fg #$fJu 璼fб$+\[.n:5=T@wܻH)E`fNywZs( vs~G&)Dlk u+$њʗ͹M}hѲVi7~\gBiu\S@ 0V:֔V/1Ж )JB=V#;qid5CA!vn>* 8UFSrE篩e}C@dпǜw!E +5!Dk$DwŽ;o,u=3#nMY߳ XF +l enG*M 2{}3^V7J+o 媧wZsSGSN% 9'u!5.;jZaeseAw>VhgY@jmsLLKO s RjD) P8{I\w~>Z|Xd / K1sS: Rd!<,3b{]$i\Ep-aM Ѕ)ԹV [\|Ua5,FiW|5KW .rw[TWRYk'Xwje]g,7Ho2$Dۦv+X `yByWLAsV)⏘atITБi1œ|#- /T@%i+|u d;5tMjkD81aE]f*?kw!0cC,c*s L!wY{t:YS\A_x)LKuҎ?xҫݥ*yj4+~-JAb,OX WWa)eS!Jw' 3vF!W۹jo[t͟?23cVp\]d]F*Y|CÐF='C8 Nb~Rd{\ y)Λ/pxjcRZx.xḧla9`x @l|?]S>~wD4} *L~9'h/v `u!#FPkMZ$}OdI^IB2eq[!EU4ei!&/d{7Fu ,&p$kG_A'<8O@͍E0-Nђ޻>y,?1:\KX)$H"->#?;OnY1hĶhxzE puKQ].];,ؙQߠK$ʋ<ܒ킁gWNtGW >b) pz(NrHpGHPK>}amQ53pԁsAUySIUuBi:@2N3WgKH,C6x_7SRžm(S1r4 Pv>PvNPzv+Xl!Bj??JmUC`3c-S.4adu5"Hp8ZQ3lT:h%AG-u3)4b>AޠC[.>rEULz(8Jfketߙm9BBXم`bxBW}^@G)^AP8`&piSkgcC]r Op?UkbIЉ!Ҳ|0?^ [#NЕ9"D.}˝T=.dGfnp=' a ^G|_cK*X}٪uOE6+ȅW"5Ԙ`i9 @ 'Du*xB-wzv{X'vY`I{I M,KZCJdm)3aBs{/r0og-@!oJdh$%|nxE2#km`aRJ'OJH>~pe?:&$'=я(e9Ba#2Y.*4^3=.Z .\Nueug z'RqAI*\NECN dnD.34cN}xHTopus#9ftQD„(O >%VMuZ9êFl`g یZ +iƌiLHY.Qy-f-uK0UOb󕻔 &ʲ;pw0:H5Nښ%|ۊj8.C?PힽrΧQl4>h7ԙIk(ganp@nwn s"!+WUQZ>ccM2g7&:D}GocIҭJ0zܟ۟_ޒw ߆T"WG25fr9}iqC|ӎ:KsD꥕rƹ9DnjI-oRa}.BJ/Vj#>M1f!̔8gb:'z1={ٸzpF{.}ĢŌWX ~ig|j}J) VA-9R+59#7zhfnpĸZ*&LMT#r-U#&ܮ 4;E,:?ɹBs_wbBYMk+j];bZKPŞ;7K2D(#W7SĻMӃv`Jw:eF7:؞C6+%&\Ȅja1̺b¥P0DjOL,;*q;1 hZ"Jil5R3ߟYu\ēo;LzpBNخiSx+K>GsjɵTVZ|1[Ɲ&&N@x7<j9b 59Uǽ^G_uyduױ:El4ѐf=_9& }NkƃX\|KyEp$=F\YNȩ9Bg$Kh(%gyP)DR۴zkR^ Tp՘Db"w`Vx"U1#tpFsC 6/KF[A`ԛٚ]p;tc80{,NЗO0c;G0©rj#w-[҉ 2a* mʗa' f_征9` " 1kZhaZrL\ JdU9qV-W6Tω`V32gh 4(ي :72E},]̑ /U[k(]x&vƫiռIvԇG#=y:ѠSh$6GJ͎axrh?f_!xM]@J$ĉB&|Va\J\buq^q9|875_-:Whp8B% Pܐk͈c4)`ousms-WE5zvߊ[}=Qj暑 t7tH JwD8{u%/t~=DQ.F7ފ:`%yawV.u!ؐ%"g:CkĶsC!5\Fh:Q!$qǒӥ7"Wb3^4,HQP"o\Uw01X1p;3imtðb&mZVQD`O**JW l ~q)R>ޕ3XOd'*F+qW-vE?Ǭ}8}fnmEHVLqpRN4EpBv̮MEW80FMx*yvɵ↹&PcIT +ڽwгX}:8)e_|E^kľoPRM31eSavLHݔ](t-xnya|%p`2 @]7WX8 a/E̻{zãn8^M(rs^(`] 1!xPTYoc7?+d{B!Voc0t&_ԃ$W)I(Ý)mۛ06ENXZNAR (њ((((()h)h(((((JZ;KEQEQIE%RE%Q1EQ1E-QEQKEQEQE-RQMʆ4}H]\R 斖OwoK$ٶI; drI]jD$ϖOQUuq ӕ=zԃ8 Z((J)(@J(((RIIEQEREQIE%RE%RT_lr `e\<`Cj;3ԆGmKrsK rA֥IL#sa\2h"Ȋ~V隶CCU ]=8@QXqTu?`qʩ3~ s>eƒqUUHcczZ\х]<s[ִOzZ(()(R---RIIEQKERQE---RQERQEQEQERE%cN z*n$1apZΨ7ˎ-kUxr'TRn#q>.XS;V>ryWm/|sZWrGC0f9IޯZM)A~AaZgQYnI`L$?:u2 eyYPA! OLuENq'>B%qv>N}:eF XǠ'Y"VP0G6 +ڤEQE%j;QKEREQEQKE%%QIEREQIEQE-QEREQIE%ֹ/N,r![Xe,|Sn!r+1.Kx4#%򥕜G.dqsm8oC`5`D7`'hZ05>B*kKpg=+Q]'2>xxbdo ($6-q!px ?5n3XXQF[jZ@8p>() (@()h)ihZ((Z((ZZ()()+\Y<_kkA[՛um< *ձM ;g * '=HǾP2w#:Kyp[|s>'#(n,翵Mn|er '%Vռ{# ŽկZN8֥kOb((J()h(JJ(((J)ih))hZ(JJ)ih 8a{\[B0%3 >W2Z˒]B5.PALbV#i[ljqMRymGj>IYg9늫q=4ۏcӊ$9bw߯zKWqʝ§ljiq:OCmiX&NO֞B?.=;V_–((((QEw(@@())(Z()(( D#2)Š8\p8[쏙$6r1Jb [(=HJ_(F3V,Kt wHlFR>󎾙H#'vGt𢒒)h()((((()&h-QE--QERRE%QEQEQEQMXLEFGFSV(ƣ=xo7`Va =ꆵ ,~LLsjq`g4f((J((((J((((()(((Z(ZZ))(J(JC)GJ;REQES]9.C8?2Y TF a$*"KKm N:T}dKn8 x#tV-nE{2zq&MY}J}MO((((((Z(()h)h()()'ڣ-ژПJ:Szx ZZ(?ZBp qڐ}*]IlzV%q!Onk6F'v'Ti X;PDv&@FQG +eT*iԴQERE%QIEQIEQAE-RQEQEQEQE-RQEQEQEQEk7Wyb_%;d=]c>JBQ!PXQ*yW_=꾗ʻ0:5tvܟwTXĉ*kEk*fQռ+*Rc=:zV  PsRFA{P84-Sܹ=ަ'48TYK}=pjm6#|apzMCKoq1:) 85.=ȷ 84 gʑG;[Z~((((((\RE%%RRQKEQEQE-RRKIE%QEujjC}B*hז'guzz."FicֹE@ʑ>x 86<Ҕ= )fU 2i?n˟K Ũ)y*X.-lBxhS+q9 _J[qC.f2n LۻpTlRܖY𹺑HTsG9$$|\&C8`9yr b c;8HϸtƎ;:G-ԺyX21}jeq]~@R)QEQERg'ւp2HU,($(jTu92YUh(gr1;|mmvymUq7֮袊()hZ()h()(QL UoT"`rpǽs(+lҹkbzs\@C,sPwQޭCao$r:="Zӣ }+x~nQF?P,[JqS/KLl8L]I`UHTkFNXwX_H<_cVV?!{g ,߽@[Kxį(޻AYU)mva] BBR?{b=3L2ʘ 7ZTjwp b3k[jnrүޭ8uiV<Ŕ/#\o% :Ջ+W.HZ ^V1IOL3ESJF=)bN@2N wv?&Fz5_hʌ3x-SPLcCְ5<1 N1ұl5 *ΎO%?U./2Cs6<;+((()()h(*,8j(dnUoT:2Mcjv\‹3a'y ݫ. I T.׌>зM& _%Idc[ksx $Oҭټ-qv&6*[:zxbt+}&$F 0=2ͦfa@ҮO_|nr*ď-;VmMJG8j3^&(j{vہ9Ң+Y-R;waO?Z,4-鞭=2&Vie'hZ&b`W֋>jJ Ž=2 ܆<AdW+= uwY#G&7nei7[fdӠlMYy3<6@5=*\>P=j<k`3;ր<֊*13v5SKH;ϟҲMCom&}RC 1KI=k `Ijd#V̬wp0qS'kk]߽'qH-T*aS$Q)ާ[êt#֦k_,8WM]tRE%QEQERQEQE-RQEXƄo%w∺&YpZ.E!AګٓEE=A$sޫwV8,-PYx ԂzumgUect$k>,̣!-yFx H*é'"E6TY+H3.#REh 8ǯZgyqJH9`qo`c ȒۆH5v+gDTv?x"w!|:O#hURet`TFDzj_#Ɂ"pԉzk7ZXs$wLc6CBq5,81ݞ6}{sѱQ|c#WtJkiWt2, ս/P][N>aگyL9Fdkc iHY1qcTf$Ui122\9(7 -*rX!Syr~[[,{% ]Zo2ңQ.A%䞀S3y `;aQ#L83d*ͨ[fq7Fji eV,R[rO:g8qKx" <R]1&[juHl?T42$ Ӟ]J6{HfQ})CrۜvwiO0}N%Sg$ƅO.7?rvVݜ *0E / 7"l ҒPBJԮ袊(((J(()h4^Z(ZeCTy<2;TqH"b՛ Gf{RJnWgF]i\g:UҬC+ph[[ _9+WaL|%zTA]ҴJ8A]GˌS1J# xqSSAlN6{uIjQ}?QQ4q) Up>z,PG"">(\|^h,>GCQQϹٴEWTuYe g7-љ XT'qdNk1De-ɥNH\G:oiRX?HdNxnRZH6)6J[X?Ք`hJ<$L1RX+T'i1`;'Ir8* $,K(RN;U3" BI!Cr}Vjڢ((ZJ(J)32;QKE ~^z _ VUk˵:WyzJsu''&_=_秵1K@;Gw[mi6̧Jk6~FKAC\{S,'Eht! mƂ1ZKEQE%RE49F+JkFj+.ʽxo"ܧ.803ҫ>f`2/V7su&r W>[vծh(()()2@I}4>)bG֒FHcgf¯N{\Qb=67U$g9PpjþxXڄ}Ccnvқ"hl11֙7!8m1֒v 6iֲAl6{55q v Wj[IWvY0\TR#[X7NH|s>W6 IVOvk?()()()R1:S&O2\dp)&q*У! tjþdH=+.cÂo$ <uQXR6Sw2H<;,S41֙.:ҔetcJ8 cҴ/[Y U ɖ3yOH˜4_vj;ɨ g榚Qrc(EʎbXZ#eGaLwlSXד+(((>QԁFGs^Vg!'J̷I{.S,9j41$x$( sUŒW'?JyK6Xkx[bc@kFcDڔq$fFvjuʒǧ>TH^l(q3وj?<6Ro,F=8sү[l*Iz kJ:aiD9'SXY=rb9$Gm-K^5kWQEQEQEQEQPȬA*ݴ1,>ZxYzV| eqP۳8VlB#8k$f->G*>,DXRydF6AX| }8=ax!ǏJu4 ssjom T|14]if0T21ެ>RYk .wM_JC$aL^rEQEQEQERQE-QEQEQEQE-QEQE%%REQE-RQE-RQE-QE%%R RC7 TWlDs3Q\ HK^4'~y_6~jIa LH,F#1RkbA"1ԓƦ97zpUѾ}v1_H@ϕ7?ƃ}r~B >8+RtؤԭKQ򣏨IKEQKEQKEQEQIEQEQEQERKIEQEQEQEQEQKIE%QׯJZ('ES7aϜzQI0U4`{, 3j߭G+'pwYf+w{0']v!L;1ZbIkL}UҮejU95mX2IEQE-QE-RQEQKEQEQEQKEQE%-QEREQE-RQIKEQEQL 4)}\*` Aukpj;kY׌p}3 8>?aqY6&+yU2\m]9Ś|>sZ?Vîzc伷 7CIfH<r_[ϙ0Ps&H8MXAwq)jVR(ǫwUWhJ1Vǩ*"ZQJD$SҮN5B9F@1XջpLMa(A"LZ&at߼+KqTⷙI@ =*;\ EWmA-} g=,xDj; +6GcQA2bϵgޔeS|񫱤f0$2Jx]ۇNTe VtImfa.ڱ߭t+"l]%WP:`ۆh|GpQE-QE-RQEQEQE--QEQIEQEQE-RQEQE'Nh'h'Ӛ3OVYʪ,rN+8+]M=@|0 Tl Q*fQLQ* I(\OҝbQRX0HqManMr*V0wnM$@`Sim8 -ګjYK,v ~j̱D Z̝#Mn{Ttِ Xf2LI *EOgXeEhA< 2$UT *ŤuEWΫDK,;\1S?g 8u9EmόAS|zK-H~  ='!)P) +`c˗p0H;e8JeńAuZl21jŴ$ Wd?/nA@̼)'Mm;4_p3IO-WvIjh%g :,b6qRZC4N>-;%7lT]CN\ }+ICX3\R"8r9`:դ^XsW$&2I5j g` )˨4D8S\yqQpq֥!ڤ:ӖV*19Azi#fS#=sVn@FI<ڬ?)yy*c9>ɪ?l+ff01o@sRCDOM` 3MD#>eeG}^C/%[хY7CRcEHzQE}zPH'''B8]yovLN}*N|ΡTw5z K;s)BrW#' /<;6qޣa&m9=ŗ'ګ0}Lb^CBd3ԿPhMnٌY8'R+6Ӛ-~”| G+`k{5'p:7fYNÃӭ\Nmdm,y wK1.Hm+w؃9Ҭɍ횿M5i9scȆ\#;]Q9۳^]^}֭6jm7XGUqяCSXI(`t'Uk+.!9`j;tޖePqњ6i2ǹURMF9 bGRqTm% G(3Ҩk#bF3U57trt +4ʥ/e#ȌYTdufLhv6첓&e1#=VXÃP*zTܑWy o:׎8ٷ~^i#|]䔌 sK;iH9^.#S0 G0|tSd?1*VOnUiRFxj=Z@뎣#by 38u^+h2nU9Տ>@nⴖ"TީУ2۲29"ݾR}*#s[KF>UfG3ƲFGI-hF@w:B0y5emXdaYlg/Y)LAnw1V$IefoĜzVI ?}'iTA^rrh*ѳsC)RیRKjKl{VqviO9M%982_9&[*!@ӥHT.}+7T9 c7\|rƨ^'6*HUd!pIvڥsлZ5eMPӟT:ZBʦJCQlRDqsWGpCAPu4%@"AfXaC#ҕB+ ԩn2d9[ g d)@Bc= ] ʾp~ #q8Mefq ⬪AhG5zwۅ@zջU-Y>ۯ52zuKu nU-9 $6;A<Ӷ+GOkNq)%9_aPG$*TdѐCª% DgpчRKهOʫ&؎ bIdC.P7تP /> b8rG^yeuQXԨ=O2R H^>~bHHI g=KQ0?1Vh]TdI[ɷܪO͓sV`n9o.S.ރ׵G Fܰb[@Ei d$tSҭ|O k.l=U >D@Gh%)1rқ[L@Se6zYQކWnn2I$1<sҞH~ܧ;q"09 0YycPfCAj8R*!RF:$jg 皱XH~ݦ.3ZLv_pXm|V tZ%Cd-Y]p٤L2igp)5n)<-&VO9rぁs2Jⱐnʏ^8[5 n1ZvJ߶+NP*Ĉ .ڴ!Y-M$Ev1$23U(8@ hߒ`AjG2`RG'.7 d+Hϩ~B7I)YP cU@EF?&OSS-ʹ})d}IMXt rnƦ;=V"fԕJK~fd0SQٻlX)P )8 TU]Ķ5%8reG\vS늫 o8 q»{T񰙷{S[NinDfK(aR)s[BjSiʣ*p<㸧:I%t?ިÆY0Fj *pG'2mlFV`K4ۜ8K4u ѾP@ JY8hP*+ǴEaHʎtF$QI&B>H%)"F_rqdhvI'LEifu; b#ODj 2G-ɩL(T(/Xʿ M6(9 ;D)( G#8:hE%-QEQEbJ.JH܀Z-ϝJ$ŁA/k")'&i~CY>"6|>$RMȸpI+mQ˱AXuÐ:ᵇ8YEw'^FFs5jX` 1'֢\~I4kg'ڪCmk#ˠiH졋$;ֲ_\ӽOo#$5d6pG_zВTdz|̌C XVB>_\{]g#HjntArOP*<661dCȍ\u*8ݼ G] l6S,I{ku֚TE[0W*&g~Yn$f<IpY0:wg']'$VBҦiv(,sU˫ !xjו{Ȫn }y f e0_yTL wS6*II4+W`mʐzRVbpjI1ȫϦǸoj Z39d@҅Vuң\($mrDxs$F; GgjFic{[lQ$ǭ.smbIZn0 "L9<[j~ikapmXx UX+"Ypܼ2gCpcb4r;e<XHf VKIp:M[_7rkVvcքqvr:qSTRERQEQKE|M ,p #jl͸1[V2c0|rk]\ɈHF ɭD+12; n+N.76*)wd8"gUOU%|qUdnv\XnbFK ;Ԗp&$yG[ `U#2I,(2nd2"X"́* lpYmH]m9QXe.pVY$a'#5 J3֡E~jȦFp׵OJFF T񑌚kvC ƐP"X\~fHVƛb!3f^8|IsT)xL `O]jq;<=岐rzԏC)RP*wR1 wy8YyYzT!w o&pA\&,cc9 4ؘLbDj*jPH\zcmJ>mp:QēFuQmV%T]zs]5qıavZ݆4HUqXVq =4i8tZ(99*'@i\0ijZ}aq,(υ>:nWQI]Q!osVZQ),+S-&Bg1֝e ƭdrvߕƬί&GLvT 9 Tlp~B(y9qtߐk}O`8tEjF;;Fx~Bygw^U#+#0Sc=kydv!~sY4o,ۀZ~e@&A5nX0*f%s 1׊nWjM*62^lh%)dr7[kC$ {`#9eu2ʏGZUhvH>d*%v9dsמuaؤYG3'4$я,`p*LHVǶSijL}+֮iMi0a#V 2UHjů -} CI1ό~ 6c/\pzMl]]EfQT w9#eBW$te]2*XfCx&&eH2ʑzU [${*ise9eϗ4BP1M2CD7wd7"goc]GQc9lC~*&122mt*2$lݯ4ոyU+74e Pܙ6#8oQy'+$JJ+}=eF$)'2}Ib`I%F Sd Tr*ŵO([5̳d#S;6 zn৵n'SA` JS<],gt([[KFqҪcҳ5Ƹg~-pY `R= V(B7Q }p*)^cD5ɝt6X mj-1B]@ w4 ?"Sҝ.~:)BnO/[a jLJ6qYbQUwm07ԑ,} >bÞ)0 >.EU?\N @}H쑯=KtU6I<PBpcTbT|]ǵLkU$@3<شLiT#5e,WS'<+1^QE AОhW&@<`i&љld(y2<2RJ=#Ҍ qg@9 }h^*nJd*=FG$qPp0 &)p|q\nZ&;0*PvM]HZF񑻆*m9.c?0>$09;V[x4v` =Z;-"EN[ ʾJ'<(,F? u!kҪl "V>qq$B>MgjJ gGaY yG GjfYnynIŊ]6,2yy)&[,P<}Et,;vi>dV;Ѕ <ZOU*WH.SF_3taHo b ߮iA+ԌC/^DQ:ȠPJIUeMl *nbGқn*Rج=vqKhFLkӤE0B>uL[o-Ҥd)T> Vr/3k *ǔ$,2e'wOvojդ2aDQ~S  Ve؀PhطnDw4L[9Y'I.J Ny_0)SZP ң A껀K\ >~+9b$$6+RьУ@+Q$+!E_íl[+Q&2aws;D>if}rURTIZ9.Q3ry'** z`M]!\Li:Nbgb'NĆ6bGjkօE, OX5(LѺJ^A+k)Zv"Y&9/oj c11|N( U$7 X8D/*w9SK##RK$9VLVqQ+_;QҩVF7v#ƫWM[@g*Tw"##2ҍ=O$vst44 \M-T!^B$$=i!Uw#)\j'8@,i*'iߐEF֦F7gwNKxDA ԱFH8|ԋqs@Iz)qr#^Vi_R A==)iGBRAǧ)VB28M4*b @5a~nx)X\5^xJG2R0wȢ843Q@d=*]rz}А4pHaI̸qҮaY10iX21ޛ<"T8V.e$`DPXN{rz]:ʁ`T2Ci\u/֖(()h(((()h(()hZ()((%%QAF3{;s1YwnU`#Ϻ (d^)fMQd cQ"/4RG`1O]Lag>S F0Jʎ5*Pne7]N̲LUUnۡz wC ol? ʻ`ڤ)QIIEQIEQIEQIEQEQKEQERE%QIEQEQE-QE-%QEQHtdViҩvIɐPPr?j8L2M,ioU^ilLNC)10F#$Űy+F?,$#4F$=Xz?hD+G6d=pfdO{rH"\j7gF*{V'%O*uSm:U9uRAUe J 5۟SYۜ.Hǫ-<_\*1R.unSS?6Z;aqVbf?y#q꤃V#du' yr=Bџ~en8}jEVUA0 cKKEQERQE-RQE-QEQKEQERKIIIE--RRERTsfJ# Cu HN2k5$5W-;N]q5Z5Y#qi[t*8;OjX yBGJݴm.gXtm>@,C@ T`( UR:,Urƛ,k,f9 ", lz܎NO=>}A l֬RĐ~騌Q| k<ym3FygLH$6[L wOo! ޥX aǨ3m0Y:cW`GFHwv !c&=_ƣa$eI:BW1IE?23)i&<*Y'1c8r*In')T&%p.Ư\IuoUfsR,,WFۀ?%q)5>(((J(J)h((Zd71G45ɬrIXws511.w3 ))s{C4ghb*\S>Sdt*)\`+_MLԊұǒjzUJF >`si?ZpzGk~[-_֑֭Gqyrhg8L=^Ky*2$l w0Q\FN`g,dV瞦?.0>RjO$b4YW,2)j 37Ryx_&AU($cjym& Gj=8S؊\[O2nuq/e d2 tnEYKIQ;Rc9E*sӰ >ղ+đ+@`OQNE-RQEQERKEQE%RERRKYs=|jA'E`Nu-W co}TFg<8wb«]Mv>aR\ųIL\<UFM܍u zE9Jl|R8ҏfJni C-wQK!NQfJ ;NHѺ>b)f 9 =B{R#+Gy0ެwBT}zV^ TfE'/@).&AR:DƤ:ސ\.6FZB2֡K9AA%3Y~Vu!Y;5JYd,O9˹kmbb:0%ҩiP>EZ{;O\"T1PrUԋFrzlqUf,=3) 4q=)NTȅ}қô.G gR=TV j%]T*ՙXV)HeA̘njMya o{1fvq?&OAU&|n_0[ʓx`̏S2>B>XTM6Stm2~_W8[#xu5'hQUNjyPL |"ϑ&$RJq]E4 ]t4˂8ǭXhEQE-QIE-RQEQEQERE%V*;bx\s)z ^9 rF@Sߵ1EA-AH:[|\4͹g /wN>KYP\a H74"6HSMhJ܅5͖LR#[ +q.&əO|V}Ս IQEQERG4 1iizQE-RQEQE-RQEQKEQE-RQEQE-QKEQIIE-RRKIERRQEQEQEQEQEQIE%QKERE%RERRQKERE%%QEQKE%%!Ev(J(()h)h(()()h)()((J()()h1EQE--RQERQE-RQIEQER1(n949KKKKE-QERQE-RQERQEQE-RQKKERRE%QE-QKE%%RRQERE%QKEQEQERERQIKERIIEQERE%-RRKIERRQKKEQERQEQE (gqbZZ((Z)h)h((L~SA8)h(ZZ()()((()(J(i撔Sih(Z(Z(JZ)i()hZ((J(J(JZ)i()((Z)i;QERRE%QEQEQERRQEQKEQEQEw(Z()(((J((()(Z)i(()(Z())h(()(()i((((((()h)h()h((Z(((Z)i(((J)(JJ((JJ)ih())h)((J)()((J(J(((()((Z(EQEQKEQE%QE-RIERQE-QEQE%QEQERQIERE%QE-RQE-b((ZZ()(J(JZ(((Z((Z))()hJ(Z(J(ZZ(()hJZ)h()(()ih(J()h)())(ZJ))hZJ)((ZJ(J)()()h((Z()(((((J(J))hJJ@1`0Oz@30[h<斖)ih(J(JJ()hJZ)h()()ih)hZJ(JZ()(JJJ((J)ihJ(J()hZ(JJ(J(Z()()((JZ)i(J(ZZ))()ihZ(J((J)ih(J(Z(J(J(Z())h)h)hZ()())(J()((9()()((Z(((Z(ZJ)((J(J(J)((QKEQERE%QIEQIE%QEQIKEQE%QIKERE%QKEQEQEQIEQEQKE-QIE%RE%RIIE-RQE--RQIEQEQKKERQEQE-RQE-RQKERQE-QE%QEQE-RQE-QIERRE%QERQEQERQKEQEQIE%QERKIE%-QEQIEQKEQEQERQE-%QERE%QEQE-QEQIEQE-QKERRE%QIEQEQE-QKE%RE%QIEQERE%-RQKERW ?룮JZ)i()hJJ)h(ZZ)(ԴQE--RQERRERERRERQERRKIEQEQKEQE%QE%-QIIERQE--QEQE%RERRQKERE%QEQEQEREQIEQE-QE%RQEQKE%RQIKIE%---RQE-RQIERRKE%RIIIKEQKE-QIE%RIIE--RQEQKEQERE%QE-Z)ih(Z)((()(()h()()hZZ))(J((Z((-RQE-QE%QIE-QEQKEQIEQKERERRKIE%REQE-QEQEQEREQIEQIEQEQEQEQERRKIEQE(RIIE-QEQEQERREQEQIIE-RRE%QEREQEQEQKEQKERQERQE-RQE--QERQE-QEQKERIEQE-%QKERE%QE%RE%RE%-QKE%%t)h((ZJ(J()hZ(JJ(J)h)h((Z(JJ((((JN)h(J(J((Z)i(J(%QE%%%--RE%RQIERRQE-RRQKKEQKE((ZJ(JZ((Z()((J))hJJ()h(Z((ZJ)()(Z(((((()(()hJ()((J)hIHh(J)hZ((Z(ZJ(((((((((((J()h((()(()(JZ)h((())h()(((((J(((((J((()hJ((4f((((((()(Z())hu)h()h(Z(((Z(Z(((((Z(Z)i(((J((()()((JZ)i((J()h)h((()hZ(J()h()h)hZ))()h()(Z)i((Z((J(Z(J(J()ih(JZ((()h)h((()ih((()ih(Z)(J((ZZ(J)hZ(())h)h)()h)h(((()(Z()9H'#Ҏ}iih(J;KEQEQEQEQKKERQE--QEQERQEQE-QEQEQEQEQEQEQEQKEQEQKERIEQIIEQKKE%%QIEQEQEQERE%QEQERQEQEQKEQIIERQIEQEQKE%%QE--RQIEQIEQIERRRQE-QE-RQE--QE%%QE-QEQEQERQFhh)((((J()i()((JJ)hZ))(J((((J()h)(J(()h(Z((()sJh斊Z(()()h((J((J((J((((J)hZ))((Z()(Z((J(hZJ()h)h))(()h)h)()((J(J((J()hZ(())()h()hJZJ)9ҊZ((()h)ihJJ((QEQEQKEQEQIERKEQE%QIEQEQEQKEQEQE-QKIJJZZ(4RQEQEQEQKEQEQIEQIEQE-RQERQE-QEQERE%-RW ?뢮Z((JJ(()(((J((Z)i((((J((()((JZ((J(J()h(Z()()())h(Z()((((=(((((JJ)h)h((()h()()h)((ZZ(JJ)h(J)ih()((((J()hZJ)((J()ih((()hZZ))((J(J()h()(Z(JJ)ih))((J(Z(()h(J(ZZ(((J()hJ((((J(((()(()(Z(()ih))((((((JJ(Z()((J(((Z(()(((ZZ))()h)h(Z(()h)(((Z))((((())hZ())hZ((Z()()h(((JZ((J()h((J(J(J(ZJ()h)h((J)ih)(((()()((J(((Z(JZ(Z)h((J)(()(JZ)i((J((((()h)(((((()h)h(())h((((Z(((J(J(J(Z(Z((Z)i(Z()((J()h(Z(Z(())h)i()(J)h(J((()h(()((ZJ)((J()hJ(J()ihJ(((((((J)((ZJ)()(Z(ZZ()(Z(((J)(Z((J(((ZZ)(((Z()((((((ZZ((()(((())hZZ)(J(((J()h)h)(J(Z((Z(((Z(;RQEQKEQEQEQKEQIIEQKEQEQE-RQEQEQKKEQKE%%QEQIEQE-RRQGKKEQIEQERQEQKEQERRQKEQERERQE-%QE%RIIފZ(Z((J(8Z(((JQIEQEQEQEQE-RQERRKIEQIKEQKKEQE%QKERERQEQERERQIKE-%RQE-R;ޖ()())h(((Z(J(()hZ((h(V #p3i(#ިYJt+׎*.v㏭Rwd㊩+yV&q8訥JJ)h(Z(JJ@ EULg@ RE-RQEQEQKEQE%QEQEQEU9eXlGl}cFP1 N^1l8,%#`,HXl(#ڪF6OǞH=ү۲pf,>]¬ÈZWf9\ҘbIw. ,_3,>NhSn֨mVlE {zT]c.NOW"(d';gm r;Lwwb{8c\)pT7AXBZi7ME{ÓbrXTI,[]}wQIEQIEQIERQEQEQEQIEQIIEQEQEQE%REQLwJmZo)=odC|$ Ve̋ߐG̝EPTXST r'MSO4,Lw# K9pJBbUAmRX&sǢ?O1pǐ \k'Waz)k=R.POHI-u$Vl0s+j|՟S:ml~IJ1\7Q vgFUCquFzn-5,OJjH7stWMEQEQE%QEQIIE--QE%QE-RQEQE-RQEQKHiԁyyrBFU Ȱ[~V{B'?F&eO2LIEq)W$IQP^ $ d?< LtجUXx6bl ;TIoJ81P aF3[d0c:13&xTpp:qiӐ g5 gS]UP9kSGVd{֮x/ʃ9]+Qd.8%,o~ԮSG~sS]JW?*JQr_s۔ Y^ɞ{O,L@8tWIE-RQE-%RE%QEQEQE%QIKERE%QKEQE5E6D$ 7b:]AM dg֠Yy2FE3( umy1+J\}MT+g31g:%wf(2j0ϳiXO{ֱ"X bmDXcw+;H Jv Uk'qڧIen2*N>MY Ř񏘒sD*N R\EJ%Ms;Y4{Lg!ekdȟ9$VN$sq]&+M2 Օ\} .@]ǨE1"agR+HEd ^ 79epnHh'w{dHA@p}qM-@}kfZ٢Z(()((((JZ)i(((((ARgJ:UED(˱6, 2J^"%Gc,@Yy -VZF4+);!z [uV݆ɕP$W$(+ xe;qJ_50ϼq7= g6 Gu9_qQ$v0#[hnLnur>Sjp~]9.OZ6?gˑOz;!7 GCT#FҨ-ɔmF#Aigoʪ=ka`ym-b3Рcq׮(JJ)ihZ((()h(Z()(((Z/c;VUŬ4чy\ơ\Cp gW=Gj9TCFѐzֳlR{U-TVCGTzXŒd=] -\ )n!_'9QNܴFPlv9u>}vj\'s&JZQH >ZӮbZs"6 | YJNnfycWiomQo"F24 u-QTZc 뷸j`P֤r'8FNO^"C>ݪ94)ܽkR:ע))hZJ(((J(((J((()R;FFeD.jbrYƬ6@*j ̻g&m8-a)IwKOc#Lg?ʩu5+?6;] 7*3v=buI9NB*k=k,=ph,|NUy2X]8UFD`CuM;2*h0*ԓb&Q{ԍn6,t9 69 /淎2"6]G\zւ?#E"F\o ֭n~|ޖ5Lt9'j9SəfuuZnR 6`zE㷽Ep%3;sg"(ÏWv袖Z(((()((((Z((vrp3WIe2?JAq %[" dF;C@=+!pRtZ-*)oC&\aڨ 8fݒIv<zP`@ilnyE]Q:bZ,68^<*vJJ5鏼{PI$+sPH?!FQpO֬ܭȈw.Rʫnڈ.A"GZڬIpd0V 0rG֮N2.֧FǦ:ԷNs g@u^bWt|Z׮Z)ih)((Z(J((((((())CV0AHFAf7э9;U[> \e93XV\ n#]=R͢RzSm`|o R6vjX~V@5+"p<[f.#yL: 8XHרD!0M]B d6γcYISO.r eȎs >aj[)nc-jk)1g4*짠uҷ 5Ԟִ pAJ:Ӽ 7>{ke${k $ސDs;J)#7OjWO[tRQERQE--QE%KEREQIKEQEQERRE%QERQE-QEV^Oq?Qhk*;$y0.{ɱk5c8nmJr ֠ .D 桽2]f3Tؼab(a@9*h@?3pj;UlA ?)ˢzVt,]H,f-pY'02n䚝0ya#U sX /1YP~gr>j=Oҧ,WA#֢zQ[y%z6 'Σӽ_2G˗LC";cOhs8֝-?9E GPri`a9 US$ezMnhgbX"#֣'xz$sϘNC9ҡ ''⹻[ v#j]JY UD1l3M5c sq^W9Il#zDYlIcy3TGT%hTʫ|~T'  V]#eպUzw&I0Bcۙt,!;:TPjIw  d 39,Kg1J8vsOR*DYLܞ"[s*w0*L!9LQڧY|eE4Y;cJ ܒiBN Csf'IT8ؚC9!Gط(#ahdFM1p;Ռ- Kuu- `!UÌlŁ3p# 3XVz&0uni- {&AO.J19 hE,jV a¤Ic$Y[OrqQ[B"qLt0 iH aIv;V" Aq ?Z~08PpsR c#RRQO$ި/$x3Q\ǹ⹍5y"Zl5رy iAЕ> ω qVyBT3qU6M3#8Q&N3kfKhr oz֍@wu[ks)brkUw܊z=MsnRq_irw(swrTw+˵'UU+VvCGSX$v 9Y.#N+nh #],v1+i"2k[ə,p;W%mFy[: K{?˖i WW}aڻ->v YۋkuqlsSGVnNK bANEW>V *m$x~TIpGe@]K/aV XȠp?S4mX|y&IHH:泤I[@>Pβ a֔9UX|T!ݹSڝp:ab1J0;dǟU1e!ܑh&AĐ){*lb6b*B2珦)HˌΚL&2?:6i{`>Q<\ME8 p)]bAAWH8 wp@Nf@Odh#P1iJ*.0sA$fhʺݽ!NT{OUB9w*p$$0<Vtd0=ӕ f 73+Y@Xz{+:'XZdJfI*O0Aq=j}ZHfGp:d{~f+wyN*>dqd8U(I8FX;xa}Ҁ>T~5|ZWj?ٻfM (nc11&igo^*XcWO qWCڬqPFcQɀNޫZn︎ 2КW&xWp>5[R B!7RI$UnQrsȬ~첱"̍cb{{VݝpDgMZDT@`@`` jZF }h'^o*"ʎw5{rR8j̛ھ#S$ѧ'sI-N]yEX1 T73ɱ~B|Մ*K)Ɖ3 $IA\Q"GM+A XJ·\`G4\$rS$t8df:Rg$>bNKzv(2I=5Lu f< ywaH%<<(|x5*w/Ü}~_Χx8jS}: >Uq5[~A?ts!U|ˤ?kvib`@ M},@{G1xp*&yp[ pŋH;!4CMJ{*c(x|Il0=M=D04)F@<ﱤele+c`p{Kc#00Zslv@8kVh`m9U&(;pG`.܏'0?û-cubyԧJr lgitz0`\q@Ӗ|TV,3zZ~lt ޤtK+hI( W6%ޕ0f;Z#*UYh.OgۡwJ U&`Ji 2sk6ȋ 0?Zd\N9{Q r;FGrsLЍ2)+ a#6Vڬ1cN/n+LT0*;B{S.$I ؝B{T<3LJy,?JE(Bp>W%f-r~\ -D,g9%[m[=r)<pq Iֲܯv!ҬFʮ@;b06zgf$Ɍc)Z'PJ:kgUmQt)b/*6YTU2֫:UUFdVYf61dhd !;~_b[7r*IQqGqSA@QHc(sSJ=*1o;sPFja>aQP0sAc.avHW"J(Y2ZD|*fzvP<ܱ0[OLZ\Χ|S,QfS!+qITm#o51*42zs[ qw0[0v<}+U;h" O&!,M;L@->:;Fw,BzVƎ-w?ۿz(օ1r0joCV-bz(F؈Fc#FDIH}:SbgY Ȓ7L}tƓ+~+QAI,r* $(K ;3xvlm$UrzsS9(puH)>#SToQa9QПJPh^Iv9;/jB. V+%`)R'`9ԗhbWc1iV>خK4V?;x>ԃt`,Y9?xTR,UXzh>l#Y@m#FP~~NH4}1WcdD#NI\3g%j{{sjsu-In6[.?dݓ,fKqe@~cJ-ϖS,f-. 85BlH 6OX'%TS g2c֯Jmظ幣So3.A` nP{$e}o(I{.؛{f8#үF#vyCG\@ڒQU\+OY,X÷j,|c,y">JXXVzIvRX|.Ie°FXy֨G&omMe =7VRD+ C#yr(Va1H\sW CVVFF;˜'cDS mYؗ QPJ: ?_Ơ 8@$PXt%}i(;{57 KzIܼ2)۲pW*T)"lp "mdΠU)PHP%RTHyۓҥb$!hilV.!\@q'EBe{f\|Q >#jp@]ATޡ*SE,>r\)UR{?7VNEolN&9JR0G4o1_QLnA`sM)Z<򾢫ϙJ|˙Bl2s:ԎJ-1e{{m=OZ| _c^*rp*"x^Ґ#m1 WH[+~b;U&(FdV"m╠C"*5yUfv+B˷#qXrK|sx V]vDzTǷtā7 hhG687{U2I_azK 4, GcZo0?9S~MI7 ~aBEomld zsV8DQx VaHH2qQIS#u(FNIQ,N:D(==)L;Zc z(Hfi>P:xۿ!O 7s[,3y?2 dpIim#2\oLKh>w9X0:kgS)&,y9Z:Ӥ|r1\sBTxk0)q;Ԍe( "0.;iYjI+|sZzn'U R0%p>peoqֵ^&6uλizc@y 6 'o֫h{L0AZ,U+sMjĕb>ئA~xũTL߳i&8#Dwg =iVadmÜ/[hp= H}{zʻ=kJ$Qj `Toj QSQMFJIߞjJ8TV|v@]:0 Z]|é9%\z#|coZwcxXg* K I*rfTA2*u\ d8Y+K)y*8̏zqQrڄ6YKX3>#Y)㯡,* W#5hrEu+Gn2U$H c?j1+* dzU+$+[Fmn"V"Jh<+S6rm=Z[)YTGn%Y_p-!RC9n|}Heޡ _!n֣[o.3Kt"oe)x̄Z##y#Cdݸӵ ??xzѪHZXdȮIancB2[m^Raw氾$d'e'Ls . Cm _CR$J܃"c{\lpjkY}*ݬG³h}4o 2KuK=Z9BInMh3JNhOX}#d`P*ts9S']_"ee>!FnI$1ܯ*>08jnNW;X8v-%SaϿʷ1\k2"@5s3CaOJlnˆH~NҖhCA2 FCݰ*Kr:NsV GOJ"aPO[Zy1zxb(>o iVdS3dӛMNa)ZpNl{&\6qYjOPJDDqՕϜ<T~b4@]2pA=kGO[xuP<e0FPqUm*1(20x{Է@>Tf82pcXw&kBV5Ec+Kp=KH$Ji ֬BQL>Fzy<6*_Zr9֤K/m`:SKgTc$jQ КWSY:ѐm0sYڬҳo8PԦD|)AǽGgdQzPSIo 0:# HRlqk_&*_ʁq@ZUSp"jflڛ3‘v7쾔]K1 p܊Uc֞c#i!3a`Q,o|pq1PޣF~Q5 r#qm1 @Xr*}#dMD*MBZ| f:Lgۭ]h{ȈG5$pTƤֶ4wvE#z]-iVQT,#^}گyg>\EW68\Z7(n#hI^K mnP ᫝6-2!^pkIV& %GqSC뚷8I=YIb#F*UقT)X$cySOVO)CӡG+2ld>in9;-G-KqHױg0G%gtJqNc1w+M /$ܖR)琳ڙuVF~e?+ԓ[$9qI2lD\s*@0So^9āy4hDrEӣcuahu@rҟt<`ҳ-,⹸a8 IlI0,sYZ+MFO̫?-;KtKz%Pptȧu;/gE!;qQ RjWd 0>SPAFeZ͝ @a׵Pm΂4 کj0y'VE?(ޝ ^CAG9O?%UϽXO8 "sO8w4QbQQGcCb`WJ1`GUb$ Ny8aE@2H犎r8@2qV,3@+ ZwmaVmXS0d>qҒX0ˆg5Va匄0+>_H<QTd Xu>Օ$Qy25^=҆=g:R'9F+UJe"$P2l%5W-RQEGs wv"9!+0'D2%Z$xEjņbvT;}"xFA KbE84 cF> ӥ#e?HX>"+ZUըyLiV ` `Ԯ ;С70DzcF@#%AHHvC0Ek$I3 S;㰥g9gpaڍ2hRFYWj2"!H9 Vl0iG֮j6<' 9:T( AR;®=#T.<'_SӼٷ1|+n4%JLq֐R[v[FmAl+yvA* 7ll*- } ;7S@F2\ zT1cqB`|fW3N.^NXaTGjd-P7j#L/̩5΃25V\Ԇ,9FXVTUpKqҤ%^(¯AK#4 'ڠ-;3CQ[)g?*zX;$zOn֝nbFJxI#zYg}88=j+pZvt$ƍ# g{MJBjAB6I8UoNÓJȱ,( Lz=!FW`sSq 7|;(qU4N^>V#Bᣓibޣ l`㿽$?ؤOUFmtojGKc[*RH M쓉Wl\k8WvRQEQKEQEZ> S=Y#ZK`[raOg_HQ;If ; }q\"pA뎵H}:;*J'^ACP!,\U=W丹4ŐyMnG7\}jM>XgRC3,CnNd d [[wUP9D$6GU2Hف6wڞ jŽwh`P3 9_Zb$  -Զ%T9AC=Gz[L*1UwI9%]s^ALerr2zAq@U8 j L6QU.bd<iLm9fT Un.W|s2F1H1v7>T:7N1]NN]M][rqz gH"QKEQEQEԩ8 t=)CRqY6%d1> W?},dny @cXs!Pȍ<[zyb;@> רQcBJFb=]T~B T&$#r=%dR;eeR_"{_: ~v'Ke[FznvڨʂNioZ;5L*8aӮ-Jp {4s#ynTLr9<5ZYWb95^IVFb oo fgךIpx\~jl =q.L{ av71XE7Y+2@sj/z;sW-*ޔΓ>'&I:yivK+Uq 84F8d*ښ(4*$Mjgsn TY7 c u@sڜ$1ș_caӵ>1Xjͩ;[}*Źf4*p#֠юTuUi:1$~:`_5K`rGZ޶![Bh[roA$s&_KRTQEQKEQE E*ȅXf,I2d#Yc !w-fe,YڻtZ%wluvĆڸ#cOl`+d8GMpC{b ¢C( =i@(ĠֈJW3V58̰98O>5NX ^yama#Eتp"nV%`OcZYF,LaݲE }ф^MSp? 9㟣+dT^9%^OL arpsBHn$+TE;TkTy0T g5l.Py+4݌l$TH8I~lPW8/REXc;@'N. rVǝ UJ8QGzUFyerц<Y24HλEfI R*ViyVs 95cct5 ShFP~U KLUit* ,#c85]!D$z{G(QUݧr"PjTi2HA0̉_k3L[,#I7ŽA5dB#3rEhˤEg:gf_'֮Ia Zʊc٨=]+?HG*i G,[v%$J+GcZgTbFV#Τg$ ,Ӯ(Qޝ,\aS$*]A^rLUʜFRG NUcIuldTZ|̄nldtXy8l_-qңn>{Toi(MF?(1N;ybdԛU;} Y'F#j6 4ôC:ېr :FA84F{qQ~9ڨ H9:ivvwxe)"++4sBTڝs*\OZ[VXA#b 2.ZܴrHZ! p#֠Ga*m/-"f2&Y^9VkD3sT8F$931gAD+:;Vys "R; =i73ڪGQS{ = gQآaP:TR]Fәj4Ynl)w#rIF^CҼi ܗUrQR!S#OJe?Զ=[{Qq(]N T:F@)74}G}V)Dlzz5f ! @ON㱫LY#,NT%GsW$1J< 9$Tmf˒ŏzn|y$5cn}V#$l֭yv?!ÆH<{6 A8>HQpBԒ iOSd $i꬀M1NWeH2+a:Y# .;ȯvS6#cPE41<~zTDIg=iЯ/zӱ%`}}x vW`[P# S{V(6H< T,|- l.<6j6q^*c| zIǥG(CdПjHfKIVC HiaY 2Ӭ$ AS"!2FA:0Gb)iph((((M\i~kG :w*\1ZL~C fS-ӤvGT=j S٨; 8GS""Xgey[k<л9q dmjђ @Wxl*m؝w#C`}*HaSqocLHr cUҘ$0zVnȄqƽO= %n1(c,%#‹hvj{8@n㓷 sV.C NI1ӭO{*G ?Eh+m:+Brj(EJO̘ V!fR RH@;Q`5>am;p#A" :TNʂW4#-VmDxeWz׍BGG5FG95dRsNREQE-RQEQ\aQ&9pU sX HʞxT;l-dо}MQ x F@sZ x s>3or>cUInH KoJb*im\QdOY+E]Ɏ͗쑶dUz \EVQ֫.RL#g锐+!=I޵zؒ=ŠnIBEs 0*h9&fY|"\F6$vRJdM"@+;I88aQ:UIN(ˎګ RL2*;uqTbp,O]ҐN;5a*\p=GJ8;WUB{5JZcȤ)H_0'c1 DeB:5,Wk9ٌ?z{#9 ;zG/;x"ѝq)}j2LD=7<5=fbI\cMKI$c\(s\jXs0* qg_8Fbz -1'!% 水]x?eڳ׸Ve$㜂J-1k`q隈,J&*'Fvh'2bȹ=8oeܼ0੥ /Mq240mFu^\ B0A TEaiea&_Tz5QE*Jc5h\ܣ>fBwCޯ5#r Wx>ndE@)8B*W< wqV`Jb0JX QW#JP}j'(Hb ^Di%:(J((̋ojZSkh]n8ϥAvEpjX$ "RZ,[Q>ng-aaޟ2zo .0W ״+čۏƶ%.IJqֆ#]!]Ŭpr(by,">)%Cg?-4uO\u#ދsx$EIzy1DEܡ$f[U;}rEi(_ju-e! Gl(9>S9W5,mW?n?e8 ߝ,9S~g# Ah;GԯYzMGs221FRf)tF9Fvc@GskdĂt vskgUr@8JntnȫKu*991cu+ߵ$['"Q\'; N$6䜂"HB쁰vVKy3߂՜Hexk/Vgelz5V7.)֪Ddk-JF$eh=MXOJyvk X+)^meai7R9`:Tt.y#Zty|9+~b)83na[iƠ([B\cH0v:N((((1-{At=5 yOo!n gڸy#o8rrCdR] #*mkF=+SEoo']6<3iQFN#]43i.M[EYM*?w8'VYRIG 0RH#+``cJ40Q֖9v>2Ag4]98 I77Ƙ4ܳ;Vd)r:v}/1 psWmt,f !1j'‡CӨ^Ih bS 2kd͖ zzK2ln[u]Ls՘%4YLt4m>>Vcd*^7kgՍ-Ea="p9)/drV?*SVwLkoݽ+1 DnN QݲFެH`ެ 1+aG$xu*xAzӕ\&ݩyFF"늒jqCM$.SZKKPҤ-~N+et"67KsOT\ys A]8/g1]Bq¦kYJv2 \{;'v1Z%[xUu ˌ u;5I=4^@|֯S308UEk&cGIkݰZ-RUbUnT9e?_nՀ r+.>}:chYP:pKN(((!sV(ug-m&5o)xlV]YգұuKp{Ywֆ9rpGoJs,23T%da{U)dEF`N~6S8FbȫzA)`qShs{Vj\qT$j\;0f!UTd_,)0~SeKD V [yvs銂pv\TQn7Zg]a6*Kظ+j}H*8QꪨoqCh vm ޠGfm-?m1Vt_|+圆_|Ժ|OA#lwx4dU[w:!C#mǘO+"'X26"`qySQ!"NUT]oR ! y=1cq~2$!D,˞J*CmҒc+p)=Wʻ8lP*#N ӽtjaWaU UmF+-ى2j!4N~_AQ+&s O2zz dͽK|)>ff͹rH=* pHodV輶6 ɂjZ +b\\>^A8n95&T5IXb0I^f)ecc)cU-7OO}X*YIp1ʢn q2k[aG2&vmbSYXuY!*Չ# ZUr(((W?U}UKA^M"#$sW.aYHF$^G"oXabwV,諓58$*k0ujF u皡kB1#[yLWSb:qV7užmD:F3K*sޔ[y_>2J r 71leaTӃ •7 z!` l 3A%TR\Ojα v܎E:M $*Hɽ esQ]G fAF= [{1W5<|@O,S]ۺ5Zo0("NEVdh00a/Pc &=,Q;̕ľNÁ֝ yIVL,q@ɫvvd܎blǴGSj#ʏe%#w55BƟm*Qs߁W|?I.0mUA;*.n9,8=9Q\iA@>*8>l4`ЯF1v1֔DI9+H8={TnjG;K_R(7m,I3Fyےxd}ͨ+& 3VPi/F]r9Զ/z:U륆uΠZpa8\US!jxR%H@:bCZ"XF>QڣfڥGjsIE jM3OҥrҠIZ=袊((HDHEWKRM̎j)YUסςX>G#|LN=ڊ999TdYs#`Ov&(U y9\ WݼƒȪj]!Q FZL5mq R wRj r_3VS6Tie$0gq84ٝZnUWfKŸmdPbmaޠbdUWDl>E@)g:-q'Eeps֥߮0AU$\[&5l7$[=Wb=LY۪ЫF#;Ajy218n*/PqG"˷p(h|ddEv3jiW 2EIp.e0m4ĤG i,\4mKV*9EidV {ԴQEQE+:k,)Qx}]C+ySuyST+;/ʭ'W/![cc-ى*ORz{#;6f^H: :aqv$X*7SY zL)!ơts$Q Xa&'),;#IUǪԞW*7QV qm;>3WoPaT }n35Nh pQccya㹫 ![F榒E1**2V X7+KRf-=sW*̼I$5"ÓR\1wGPi9JW9B+tPc-⟟=rcVyX-ǥUdVns٫:XʜU7992wdH6WlЁM6EGF 2HNs:mOnm` b:R@q.vUelH#YbpyrUxDdB{ e:o\g#Ku2"#H Ҥ eg9bcު^\ݪ!;@z=Br&ʣ,reUDu(aX7*Pb w]+pqޭެcsm²=*m#%XZR-`ʕZ҃ZSxmH}裮*ړ'd'VFMĊ9_UOY(Vgh$7̿ޫVWkw/ no!,>W^= Xn#8#--Vd9WBŸCXyn}*9UĎV*ͳ0vf @rjΞ',-ެ8Y9+ 4pƤ`&Z%SV vy5J o=y5x[^T=N@bd*4_xxqNp+M'ڵmf;&5dH,#QmOO`5 b*A!H.Da0vu Oyޤ%bby;"$̽z֡ItFGQyJ`~i̊$޼{V!& #=޽ښœzW6EG<-5c fSd⫤EHڡT*8b?Oè&{TC'=KDIsOWqҬ A.y Ԣ%oޮ;ԻUvC;U!%,xuNbI!;+;j$N<+H5 B~WARV_O :գy8>-rk@樅&4b29#k8#.Kn~4IQGMT\;2IOʲ.C+SV=H1*yfڵģg9ɂ6lxoOk}K.֦Vַk^MG4c ' g\,#YNrٯUY >Jڮwj( ?I !az(Z\[r7 >nYxkRsgL;I'挫[~*MUёp#=ԞZKBU9\5Z6h' }=2a,*m862nR[0!t|px&c/p÷%)BCzz֬nã w "]R^Aov re}FJ&qQ֩\q WuYC޹,Y7|~Ͼri_֖6`N͂**e$vdkt.ٲV! 1pXqZҨG7"u WcF9e 8VFRTng>D*1%IPcs~st1\urC51)yUbIi%$~aU4,)ʱQ^9WSM0(et Ăf,V y&2DnnQ]sE r)ɭ7Wsidҙn9UPӌYd5Rh̆F9PjҼX V Gc!@튩3n=*c*B.E_P*O=G8‰q،K6m;ouK8=IXtS?5WdP!_ 7sH G|4+F_bZ"I-5`Em_QI M~2hd/'L&aVrsH¬q:+^3 &QB޾U9.[YU V$XEhiIȫ9,Z(Z((((JJ)h)h G|VN6p>aGQU*PG|V*#VJ#RLdo `qIiI~pPC[#FJm=)Ohe޸'zf61`'013={RZyJ{Q Bcp} ) B֔FB!@ e$bf۸PFIhɌlP;dwG*{b+ @'@ }cҎ5X] ,,u'YЏ⩢?s#G*v/R%̈ R;PE܂B "1PEpS9 ң(zLRT58ƥF_:9>JOQUh'2̈A/ lzUQ9s[NT$fAxeV?\ը.BXtvLYJzecw(ܤLfffi̝⵴<8-hy*8*jUZ((((Z((((a]L嘆 8YwHvvk5 ܃Z#c( 6a巖\9[y$ sD0# ń#'[9ᰟVʀd >Qod@+ vr櫦VEf!A?F]skkK\@֍\J((((((((8 >r;ۇ _]bha QӶjo) vFFS3r908{0 O}YKW?rf *on =)nvFqSM1Q52c`W%pH* 918CpaUBZ [\үAkp!I'k?8@5bky0[p{֭nX|FRX́F[eg9E%%%REQEQEQEQEQEQEP; 69IH|{3N>-[ʞ~9X *<f'e?+H=Fi9SsI#I?V8`7lSU#aM>Ol8F~c"8ҔD`Q)%EwFO_)~i$Ddҍ=1Fpz 6G 7 0 >x&$5-J`#*Oj{3+{+8 d VŐ q8PTϛV 9%,ipSc难%$80>\I-ʸ Z^HU$Pa o'F ^fRkdr2GzҮU;QEQE%REQEQE-RQKEQIU#s2~X&O?|YeЄ@sJT'B75IvH^ To⌇ 1cym!Xw=3Yl Q!SGilOCܴmDaEHH!ۊv:T<I;Fz(Gh#h>R?B]=OIHFxniṦN[) NxdEbPlwxdT*Ws5C~u*]N@`@ +O7W 4 LiʙՔBH9n4vQ1GO9wO *wO68=zLQ`*<>> :i *7D$jɻ) ,I3j4xƶkH.>FLeVehRJPIYbA`zR淝>$O+C!Fڤ8Lx[i )!ɜoQUED rH)d* GCڠCy.;ʩ`Z  ۭYmZp72~oOɌ*;QeEV9 uo !@\+nHVc6.S}:şpikr9?ڧz< >upޟiAD=jeҦ*,=ԫa$8id<ٰQTK U.zUv]vGW[y=B ϥHdzMН~-9/K- w\yd=jK[,,Na؜SK|Ѿd0(]05N> (Pwu>F]yws+* ^{)aMXܸ@kL2yF5p0j9VI#<uI]d ChbQg +J88Sۏ7mWGnd AI5rDw#r Ok9UHpjx&2"8vI-`ZK,|f@:fs$ud\F<cPa$Gv=[E*DO{v$ d-=Z-oxoYؖ+?Fᑝ#Q[5ف=xs wIjdPqWn&ި2$?Jkt`z`u D %>sVxM/;z֭"6P(Ώ[ 'OHd{{V ̣|rұne7T,!dޘu SӽWf ۽k?Y'^o,}8(*Rwi#rYDNKcT5I(1Z9&@#O&$` BEKgrp}OXqpjvEsP) 9$@lWɵUO$r*廀W O^c^A8H3|ЉW{c82&~\[9tzMh隍6.Gz-ZBH5^H]dgrNjޢ-B6=rDjѠ`33vzWKI+`@r~nqZWi(-:UK@ =N #{[ݑӱ[{+ \'ޱmnJ0Sk2˿ 9c,K08"- `Ԁ>r.#*qY}k!i`3(\3Y̆H댎 )Ig!7@UHy6Įoj1HmWah `X84O V-6KY+RI˸ qnexDSneqOJll$2##̋ [ F֩ɲ9@ssެdp9V D }Ÿ8 ;f8푊̮Ug88aa [Iɵ@$4I1٩͛*0y ;Z}&΢#6b ě;gD)qmѓ5cTFT\v 4' j:V( ^lzgsYv{n;!KWb:S5-HJ"1QLGr;#+FGSluY ѫ/vSm53dPW*0ukVO\pE_3jF%3+6O {5Jk+8 =i|s"[`{*ħ&$U\u4VV%H a8RuQEFX1 U%p19 P,99Lc?7ξS#hNïqL[/oޜ+!N{j&z;}S㊶W?SjBfj.*VT^_ݪ0*T֬njT¤|$a"rƪ3kHvђR[eu oy{T3FZ#;Sv6=役|}h<#icgFza^_dwI4R@~뷩4>"Iv9Ƕh0έ 6W{kdEw|ox##s(KqVmtԎ5glɷ=i[iphey5v =1a}-IAҖO%B/VP=YGtwʐ^fwG gT d7Q׭jE+HkB4f*νzN(r:qVS =c-xq޲bsrС,~`G."-'~^"źN*R2sR*B?sp`N? & yȎ=̶P28X9h=[HC%R R 2fc8gϦj+440gV3zjNѾX:=di԰J7ev(\K V!pA!ȓxiyxV% 0cEEr8PTpyPNM6495b)Z8nZ\:XPHhnDV $ * *KC g55[`6Vs?$Jhqkcu>՛qi<`XKnp 2[G Ӑl·$w`[z#;['$\qޮFؖ4e*yqS[\ynlX akBq2d.151lҥyN6}Z@0 <6r2k?RE+jUew5wg.+ rc\6y5̑9P<^R7g:IE\Twe$HcIuUV$TbNr}Z[ɒ׵>+{bU@1ަ IW$gU82Jv7je5*XA+BJx$---5pd`Mu 1Y7o\`FGl6@3@A"#AkrMy=n)r4qr:Wje:99J^0Al\ c@bݐ8z50AҬ#*\vł֭E Et'# Q/inSR9sa|T3 H>UO%)REw{ԶKgyp{ӡqz1C`d`5+o((GC{8+LYČ$W:w֪ xZunPսjߕyOצFj ș+sхg_)5QHU)4HEa^ACy1B%h|X[? "om~X(O+6۱#ҖSh L:>zԖB|MKk4`|fcMg;9I39,ID.I9LF)R7np*Fn1L\~AɥqBROҡo,~sNK#;77iOmNKc;I58ԕ^ 8L`̦6({Xc4,R{4[O5.ϧU2RyM-d*KoӒxcd%eiXHZ`e*܂~c/`uHf!FcD]Pl ɮFc F1[@(h=)ij7F} Aym Cj& VP2[MqOW9#+X䶜_QRK+c1)Q(8aV!@Ud!*B,~&Q]Zͺ@GQ[zS.vN 6xGK>fNVaH-r},pr= ⥷H݁NJ|6 30=( AE--Ct"#*3iuVFv*`sޱ`ۆst\uHܶZڃ#کy G̀*W{#¡{Y^Tv=k:;$ch qƭvD3,8hGi.66fP[!v@/(+bd zbZѶ|ɵLVoY@# HP^={2U9 ’sNT!Sh~B I R;m@#H[ZHX4FH;VʉVRýS&FT#T(\T6Iջr@V'18$e@O*ҢR2H逎HR>P#zg̯|X.̎sA29f W'.wp*k6hb$硩f?㱩orZֲԖ;Ќ([f, t9Z7ȷ  8>EoֵEh&\8ϡEW- чQQ\Er\sٽ*'pIAS؊mBO{RYXGlە8ކiZ0mͿY- WJu((p#ޫZ9n `:S&PpȮws#[ Hpj>>\3Һ\`m1ZMM%aG#n-UБU\(fAGY̻IN7 )֝ySzc Wb%B1UiܬVV"L*,h\nOH]IޘjU֣ NN60XgQ(((((((Z(yhD)DzR6ZB;hVmXTXN@ҖNB 7^f${=/|G9kPɹʞ7w ҙqȤSAI >12H'jI՝ZUST.j;/'b[~?򥲶\W6WIoBr?՜]?+,Kf>ҭ*1}z FkJvDHF(98:[7CrqV/c v Ms'wvs3ƫC9?OR^6q >^ZQmÃҰ;"7첃5p ]T!X~nXJִhR\ZÆ _Y\Vh'LςSi~zwSҰD_zrf,Imm9 W=ĬF2I5ȽXa#?@ڵl$o&0Ei}{.pg8i%D#44ǧi%gOaQpF;ZHFV VŽ&X\:R pcڝݲ= 7Y:bGf/G"̓vWGEQEQEQIEQIEQE-QEQEQIEQEQEPzPhDr^04T\biS/=C[5͛Fy~ajZkfC$wz-n0`r %QV!cuV$ŽHWYH1݊k,s>*YqXSnW}DR'QH)n dJrW%TMg;KqTi8[E^[EL!Vn,͌[o>a#Sҋxim;n{B"K}QWezVʍdaq[V-QEQEQEQEQEQERQE-QEQE%QEQEQKEQEgjwq4@ tiKt| GQY'd@ _z˷GF lsFk*;mgiէԓ*z_PVGzRyEQ:Q.vQ[EÀȨK0Z:L 0Ml>o$!,xS60gֳkxsڮi`y@4|yҮikqs*KlyjGLbƤt\@@GLT"m 8/pj&.ǡ"rUY2'Tkc.ծ袊((Z(Z(()((J((((J)k ‡~5ϸ"En̈Щ|V<6W.mk>H%eC5JUO֫$S"Y=MWX獁TU9U=빲b֑0B]͋i3]fM3HzB21QO9rrsQңFNy[G'[G&C;imQZ=\:̸ rTwJk]7oQ[-QEQEQEQEQEQEQEQEQE%QEQEQKERE% PE5\a4}r)U TEAhTTR@մSC#9ڤW* t89⦇n*cb 2.NQEQE5]JR2:摕X`aM^"1$+ANөh()((J((((((((()h(Z((J(udf?@9>ڗ#LrsҨjvCJҭZGz((((()(()h(()((()(((($/{W Zd\$-ȮbOInfBNy ?뢮)(Z(((J(()hZ)((((Z()hZ)h)(JJ(ZJZ)h(()h((()()((()h()(ZZ(JJ)ih(((()(Z()()hJ(J(EQEQEQKIE%-QE%QE%QKERE%REQIE%-QE%RIIE-QKE%REQEQEQEQEQEQE-QKIEQIE%-QEQERKIE%QERQEQKE-RRQKERIIE-RRKE%%RQKKEQIEQKEQE%RIIERE%QIEQIE--QE%QEQEQKE-QIEQERQE-RQE-RQE-QEQE%RIERQERQERQE-RQEQE-QKIEQEREQKEQKEQIERQKKEQIEQEQERRQEQEQEQEQEQIKE-%QKEQEQIERRQEQEQE--RQEQEREQIEQIEQIEQE-RQERQIEQIEQERQIEQERE%%QIEQIKEQKIE%-QIEQIEQIEQIIEQEQERQEQEQE--RQIEQIEQIKEQERQIERERE%QEQE%QIE--QEQEQKERRKIERE%RERE%%RRQKKERQE-RQE-RREQIE-RQE--RQE.i\OAu-QEQEQKEQERQEQKERE'zJZ((JZ(Z)hJ((()hJ(t;Rv((((J()(()h)ih(ZJ))hZZ)(J()(J((((Z)i((()h)h)ih(Z))()((((Z()(((J)h)h(Z()(JJ(ZZ(Z(Z))(((Z())(((Z(J)h)()ih(t(J((JJ((J)ihJJ(((((Z(((((J(()ih(((J(()h)h((((()((((J(J((Z(((QI҂@4QEQKEQEQEQERQEQKE-%QE%-QE-%QEQEQEQIIERQEQKERRKIE%Oz)Ao})'5&8&(J(((((()(((ZZZ(JJ(Z(Z(Z()(2yRc)(((((((J)(JJ(ZZ))()h()hJ))h()2)((J(((()h)i(JJ)ih((JJ((J(JJ((QC CFdMN"\"XԄqO'<E\4iiԴQEUӘ J OzaԝpکM桃Q24~=DVjۊ((Z((()h((J)()(((J(MS(ZS-=p=꥓`S}jKO^piEQ e=#8g =A*^pzS`OR}E4C| kq`T7O߽THwN'g!ZȂ""gfB?r*XgRw@zCo5y1/Zo.j/\%RE%RERKERQE-RQERRKERQIEQERRKEQKERY8MI `A.R;E|1TA:#ޫ\4sCP췑 Y^[FNTb3 6AQ^B# 85~PXQE&Eu"qȩVDa%O*`~u:)(((J(JZ()((JZ(((Ƿi PrNd*sQD*JwmEu vTop{ґVHH֘HpJ5e?m LeHN\pZޱ6硩OQiEtM jA.\+5(Fp\ŪΒÁeGӐ2yZ:\˲Qa'U ʨRZGG+gVr*8+A|>ԴZ()(()h(ZZ))()(J(JZ(xT '\6ʄ9#cE oZj{0yJ1E¯cLr@¯\Ы+KdKlDXJX̌M2Ky 휁uFf'#\B=ie2\H26.tˤNh(X7< ӑDZԷCזS24~TEhjǑZ+$^j~u$Be{fHq$eӧ8/"c!_DV5SNIu #;lN=->&rJŞqޙi9bpfm::DcOou)<+ r}:u(rO<8+D QEQKEQERE%QEQKE%%RE%REQIEQKKEQIIT[x1#jͼDjnN8bC*TE74<(O0^F>V5S4OCNdAMǓ9`xpH=3YXy7֪,OjsOl1KvZvڂWC[:N !Yk$ca-2Qn&i6yIV΁h yZzEnOЭJEQEQE%REQEQE-REQE-QEREQE;JLĞz%}ē& 19W{J/5sKhTv~5kL(Fn1Ĩ2j\8#W U$Nd8j̎N9 )Dc lNd5sꌜHIM$*VDu$ޒ$ +az#nB+ zիGF/ zKɒlY:$fsY\CUG$u5@jyU4LTP d`ApwqUҲ('qWLF=q9rFzsN-K/iI I0o%f=ԩk-|d}X$߫od)څbg8=H Z q4wpzqS$2\F87DYҮaLVPwzVq(+vGie-4lZ}>Uˀ3&QƒU#=i'3E}Ҙb$OKĄ<*2⥒TwHqR_8#=E89r8<()h()hZ()((J(( ?룮JJ)ih)()h((J(()h(JJ)hZJ(J((()h()()((J((JZ)h(()ih)hJZ)i(JJ)ihZ()()(()i(()h)((((()i)h)(Z((Z()(J(Z((J(JJJ)iih(Z))((ZJ()h((J(Z()h(_QEQKEQE%RIEQEREQEQEQKIE%-QEQIE%REQEQKEQE%REQEQEQEQKERIEQERRQKERE%QEQEQE%QEQKEQEQIEQEQKIERRQKERE%REQERQEQKEQE%QKKEQKIIJZZ())h(J()i(J(()(J)ih)h)h(((J(Z(ZZ))(J(((Z()((ZZ)(J)ih((ZZ(Z((J()iih(J(J)(()h)hJZ)h((((ZJ(J()hJ()hZJ))h(J()((Z((J)(()h(((()((J(Z()(()hJ(((()hZ))()h(JJ()h(Z))(J))hZ())i)i)h)(()hJ((()())h)hZ()h(((Z(((Z((((JJ)hZ(JJ(JZ)i()(JJ)h()((JZ()()hJJ)h(Z(%%--QEQKKE%%QEQERIIE-QIE-RQEQE-%RKEQKEQE%QE-RQEQEQEQERQIEQEQKKE%%RERQIKE-%QKEQE%-RQE-QKEQE%RRKERQE-RRKIEQIERE%QIKE-QIE%-RQEQEQKEQKIߊ{RREQIKEQKEQEQIEQE-RRRKIEQE-QEQIEQKKEQE%QEQIEQIEQE-REREb(()h(()(JJ)h(Z(()h))h(Z((()h)h((JJ)ihJ()ih(Z((J(J)iii((JZ(()h((Z)hJ(((()()()(JJ((()h)))ih)()h)ih(J()hZ(J)ih(Z(JJ(J(((J(J(()h((Z(JZ(Z)hJ)())h)(((()h(Z)i()((J)(()hZJ(J()h((J(J(((Z((LyREQE-RQEQKEQERE%QE%QKERE%REQIE%-RQE-RQE--&s%% Z(((QEQKEQKEQKERQEQKEQKE%RQIKE-%QERE%RE%hE)ihJ(;KEQEQEQE-RQERIIEQEQEQKEQIEQIEQEuQޖZ(ZJ(J(((()hZJ(()h(Z()i)i)i(J(MB~~\g:KEQEQKEQKE-%%%QEQERIIEQERQEQEQEQERE%QEQIEQEQERE%-QGj)>g֊Z(((()(()ih((())h(Z+ ?룮()h)h(JZ)h((J(((ZJ(J((Z(((ZJ))h(J(J(Z()((J((J((Z()ih)h(Z(()(()hJ(ZZ((ZZ(Z()ih))()h(Z)(()ih((J(JZ)h()h((Z((JJ)hZZ(Z()(JZ)i(Z((J(ZZ(((()((Z()((ZZ()()hZ(Z(JZ((ZZ)((Z))()h)h()hZ))(J)(()h((JJ((((Z())h)hZ(((Z(JZ)h()h(Z(Z)(((Z(((ZJ)(()h(ZZ(JJ(Z()()hJJ(((J()ihJ(((ZJ))h)i()h(Z((J()hJ))hJJ(((J)()(Z(Z)i(J)h(ZZ))()(J(JZJ))hZZ)(J(Z(J(Z(()(RRIERQEQEQERRE%QERQIEQIEQE-QEQEQIEQE-QKEQE%QEQEQE%QIE-RRE%RRQKE%REQE%-QE~4~4~4QKKE%RQERQE--RQERQE--RQEQKERQE--QEQEQEQKKE%%QE-RQE--RIE--%%QIEQIKE-QIEQIEQIEQIERRQKERQERRKIEQIE%REQEQKEQE%QIEQEQIEQEQKEQEQE%RE%RERRQKKފJJ((Z)i((JJ)h)hJJ)ih(J()h(EQKIE%-QE-RQE-%RQE-RQEQEQEQIEQERQE-QKEQEQEQIEQERRKIERRsQKKKE%%%QEQIE-RQE-QKEQEREQEREQE-RE%RIIE-QKE%QIE-QEQE%-%-QEQIEQE-QERQEQEQEQIEQIKE-RRQE--QEQE%RQEQKEQE%RQIKE-%RQIEQEQKERQEQKEQEQEf)h(()hZJ((ZJ((()()h()(((i8e' ~jZ_ŒsHFXQjZZ(J()h(J((Z((((ZJ(J)(((J(uZ(()h(()h))()hJ(J(JZ)h(((J(JJJ(((ZJ((()()())h)()()(()h(Z(Z))(J()(J(J()hZ((J(Z((()(Z(J((Z(Z)h())(())h)hZZ(JJ)ihJ(Z(ZJ(J)((()iih)h(()h(J))h(J()h)hZ)i(J(JJ()hZ(JJ)OJ()JQIEQE-QEQEQEQEQERQE-%RE%RIIE-RRKIEQE- IޓRERRQKKIHzR((KKEQIIE---QE%QE-QE%RQIEQIE%QKE-QERE%-%Q@)ih(ZCڐZ()())hJJ)ih))()h)h()h((JNڊZ()(ZZ()h(JJ)h((JZ)i((J(J ?룮J(((ZJUZrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2QIEQIEQEQJJuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLS()h)hJ)VNS(((((((((((((((e2())((ZU/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)(((J(iW9iuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:()hJ(iVuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLTtQEQE-RQKERҭ*үzu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQETuGEt()hUZUSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2LJ(()h)ViNS(((((((((((((((eGQKKE%QERQKEQJNZu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQETuGKEREQIEQEJSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEG*2@jY@žF%>u\"ZЉ3PġIǽE,ѣSƫ\]FS\DH'ڡFFpITVljSڪ- Oj\(1FMG,LUAUS8ƙ$*Io>Ptxj.@S vr0=*5d;"r׭DdmR:,6>Z2QCgҢG*˜tkuE]R=7(>=Z\..?zY Wp)d=Uc mU1g_pOQ׳[xpYXb- Ir:_*y#]IQՏ3 rOE7N-vv`9ZUVQEQEQEQEQEQEQEPC%҂X*Mج][s2BgVe^FHzʫ/:w c'>)% MH'<*KJHOztCGnPvk3y͐;Ua#o05Xރ5$ltҤ;\ұFe rŘ ԪAo,H)+vxR1OHvhO PIkI` ,V#1(}HAT[sDs*)I; SH2Ȭ護>[ij!`p䏥Q9#%})mM֮ nC}iᏭ<9Oǣu?j,:'w7 pZ@Dp}j1( j'XאJ'QH;EBn oREDn#l`V!$cڥt3cK2GJXGQ}GJzVD A qW6G%=3Wkb()h(((((1׊ȻĊ ߀?PZXL]=BH$&da{jĩn |*]K'Z)nB8b7j9n. g$`Jqږ((((((((((((((GZ((GJ:Q<#4dgJ(1*920#4BdMGT95mb^JxRO֤UUT!%.}8*RөhAҎ٢(((()((((J((Z(Z(((v}h'8h((Z(((((()h()h(Z()()((((((((((J3E-RQE-QEQEQERQE-QEQE%RE%QEQIEQIEQEQEQETi.cp~`z@O84Zi|;F**9(pjj(Z()((((((((()()((()hn,>`Zc9>޴)h((JZJ))h(((((J(((((((((d TmA隂IVz((((((((((((((((((((Z(j W+3Rܓ"+yWJ槭:EQEQEQEQEQFh((Z()((((Z(Z((J((Å~Êǘ@8C׊vᏥKW*%RE%REQEQEQEQEQEQEQEQEQKEQEQERQEQEQEQIh()CI(@rJG:u--QERQE-QEQEQERQE-QEQEQEQEQEQEQEQEQEQEQE%QEQEQA4(J((Z()()((((((((Z((J()h(e ]n.U93ɩc@%eTpqҭ&ҧ$ n,@;Ң$mT$4Yv;c)lY@# *?(+\B$n*yҌ(F=85V14)=N8cE$|T>eU|aI@ =K>o:BcR%r\[S%yHFsVwl{jy[aX6nWR3 !u>PK)$3HO(>%9_Ɛ7ypѧOLmȼNTӦt 4D:va4JcݒYq.!K|xhʎM>r$r9ekt =U$o-KǭNnBÒ e NÞZZ崄惔'$- 75I8C"Mkqh"lKEC$[yQԊ1e=@ HQ 1kiUduMe<;ɒeYGV4ZSӭx Q}AJR8<ֱ!b 栐mUX8'>gLDQo6RFo= jhX66{:2<'z$mݑk`.zփ2aQ+.@5 r^!*q7+OjOҥRVDK!o1@rI#+p>n=RĒ>QU?N?ei";"-̅b l̲+ResҨNI 5%mn߫uPy>0%Zo~y˞kZ%-hFA=j@M&̋(֪pj Z*!b'\Z"<78ܿKyJ I^m%rӧ4ַbTDYQw:T&DmZG`2)ݰ};QZKP1Tgݽw'J Ԛy,WztKf>9;;Lq`3TKE˱@4prԙߍj˂IU:U7ڧ֣,CP,'*#pO#bX dw9b>^1LfFʪCP3A'Bf F R;*]ǠX2ʖ?Y2 A4)$6ύӖv*_=HL< nO&LVڧYxEx<®%#Et^Q|"F-;d#fKK⨴en#џVn0cnG\19jmC8vZJHm9*r1ïoZNX22?(8WYeɫ%# m5BMB]`vg>'APqZb@ ?0ҴͮY#ʒ9#kïˑ L貞:Al3Y؏g"ۍؒfaZc 8ZZ#s*F9c:EAz+bhϷt;nl#-.}iÿW{V@JH&;{YWW\ֳtkTyn[c`r;D#78H@֞!NYۈllBsZ6EdV\#95reHjtPjdtU1Q\1o/jհ7);z!|ʠ`s޳"e CT.A=)"*8Z.NkvA0s kBnzՍʑP )\D sBzaYIlꌅ,3IrAC pYgw(1]FIRܠ)]Ρ/*Չ$Ո8.͓WWh$eBBSԴU\'`[b'$QQsyPzԬW=i5 Tڣ0}7S7mrz}+.4L5ykBR2TX%Οrlwd#2hҷ[[n=5Zܼ#!f=t8DH $O[ԦF„SS;gi 4J)OZznQN:֞Ƿ p84! C)]B+,UIlR+%FTR=L""rm`w46T'$DSyTZYܯތQV:hrBk,@dliZw*2JuoGv(ʱ~>SAF-D23Ys}*&ؓǜfKR=iu8#֒H32zS$'dU4y$1olWәs3{V zZ1cv/'ț$5f9l~;;P9vm&b=*2e:քnAVduQEQEPFEn`sj*ǵC$ ԕR9RFd9aeII9ܷYqUfVc Jo"Jߺ#oTH}iIq!.|9ɤ4iqA=˨ x>iʞa*Vv+6Ss G3}(C=rG]nSV :H'`84 eBi0#j ' 4^ۅ#fh@exo+cȑr6l7dUsN}'f@˫Wxݛp_ {ViF y`-8!v!ivbAn ydU>*cl'*O#caQ;HN*SZIXmf 3ji玾õ4x'>j+?!Ҫ[$(@vnznÒ>Ցr;ZzW7ݐ |{J>F[;# ^YX99WV@$JS6F94??,`}I2SPHAqڑvrނ`p~bkR15+vģ+]Q:SԴQIE}h>O]$^~a^zRo@:F9ylϽsQNT FƇv}Œ_i Y&IcAޢtc#TaO=F. Bcꦡp,#*{_dc;e<+4ڠfyn~ln CWQ:nZ!7,<8S0;E>AmXH݌jkvWR=hn OQSHh&~X'֓dېd6^'lN@\>$[KԮYAa|:w#e8*+铟T;c,ϵ:/G"d TWw)݉QlOaEʬV$MuA83YM^+N ihQ֔LdH$"HíG$Pǐ,vznϊF@z{(2zU{i ]`֙m~ "&/9WctFs["# ھIL!5< ieD0ƞɢ[CZh^@^V-2"yVRJ9~jm#F}zHVtlDSЊC6)Դ2O3GJ=I X" Tg{8cqPK13k:[`,Lc>e d^? U'X;m1WMvڸj)'j!3܂K/ʤz:ACz2206(53(@J*г֑fE\Ӣ[@f+A1wvb0W[D-T1~ZɁsad/[&o\̤g%TV_3nTV^] kD۱ nCDLwD\SP wgdR+'g4bp̜9 _GǹYh[5F >ǵ ;c Z/2LuO(;׊{㎦@;qe\79#;8ɦϘr{ԓ5Rtʂ"?\A\Fxaߎ9<{T B,i#y&cΘ=MF<|E6 9=*ŰMrzU6lʟ"&`xiRm5U9f"oj{Fr.sZj2+LѨPJ.03,$1P9:TRD%B jl$=E K0X=)mxiTyO44#vYB =2Ya-I#ǒ֦p,Zc+m'jkK"{U߰EғpmyCnXHbCP:ըAXHC jITU'FYQT S($❜4ZZ)jkfmf9xQ8 a>Kl5 J ˻+ڔp} r /X8]H%rx<.t'tQ7ƟaK'͌֕گJnZn`ka†A[0@ðҷLLt8;Xq'{/5vׯ>k&K0ch-S1ZB$RHe{˒Z`T0x7 dz|$LV|Fy#1튀A':T>HqS p6W`RZ *jB(Myn$UP0H0s?ª܍R9* 6%UY6r3XJJ^՘ `j0<i"DdHUtl TR(uBSJȑ*9 @`Iy4-' }*"A )nfT{87t=i<1]qS]*AcbDYE?|cc}`y|ڬFV #F#Դ(.t8sɸeê0b5-쌬=09&% B5;ls ~pySZU~-gO-1i˚5ۓQcB1h;lR@$ze= 'nGHzb% ).rW5$s_r$Q9䎀`2^ $tcX*5z;Hio_KBzI 棖>@mǫ74ǜb-=I97<lfW|:8ٳZ݄t#9' c+@^Y_vT/GR FF' oWWh^,$nb[$p[i䊚0QhjFpsWPmuCq*${Pn%Ot+nْU 85t҂!aX (=x1A= MnkA= Kn˸+ܞ 4d iG1fL'r`砦^Mr!f?1}j[H7,Nq%â2IVƢ9n4px51[=U8`ɤ>S_;8/V~&N82*_'zmq5c

nAC. '9Rsr.ǞsW6n"="}zTp8; װF8ke#.GԒq?Jĕ\~x G8%Ab3ۄer ic֖c;zm#XrK9bAcՏIc!MS}*-'ʬ:*`Ń'tUi3[1AD2xډ1%jWCZtQҎQQ:@R;=KT=U[+mysvt*}v2jYG;IRJ oQ2x8#{xpeҠnŽ;U HlTGUoʠ} GZ2pgO?jFK?iV+MH1_iKy#FerV@ c#Vf7$%p6ԉ?31bI&\c*9*'b}꛰v#6lRH#v5Q͑ujBvRz%D\0(9A#no!via$j‘29MZ .pItx5],BHI]#vhCC篭V"I0{ R8T2|j>.NpyP8<  Pzcb\Dz%.(ٺ'n$*[CQ]ԏ@zԲ@,(Բ&9ZE܏} dax篽B~4[MUXBx?Jypay'w $`U!\$iHdWgDF{**?*K-_J;@emHb2,L(TW]I29Qr1g!-26D x< |Iޢ(֪܏ê? w?8 yF vR)&;TTpH嬜 бlsJ tqۭo-g9(Q!a|2_-F ivrFAYp]OiyOeޅ3[ˈ1fcVrOjDV޵2?ʤ B8W'#R1\oXp:-ȩ.KNHڹi7 $Vi,kSԫ3O#)+nw"Oz%e[.AyHAwM$!ýgK׊"_JWn3PF|1L FyWb^OztQ@x]@8p}Vc_=0N96j TQ TϵFuTOe櫸sPL;Ugc$Wr]RĢ9c,+Us M9Ni[ϯ5I[3檩'3=z<0M+23WPg$1TIe҈UQcX20pqҦێ+rޢ(Ҋv?~9ڣq醬]AG@Rd#VV` SFS ! 1ִ#EWp*=r};XLr t$ۀA>5 KT :ګNrPtHȫl$ET\` i,P2AH2iX!O0Tlf?1X RmBE$BVj[6!Vږp$:VT  sYFYb1P6zQMTdoe48;Jim9ևv/š'= wA>救ě#\8ѵQ]5U:5r?timqQg.z3jp%*%Ǚ~iH8EjN5i…D\Ն Pv=h|~VOLR\utF% XtCy MA)E}D8j6 aM@yd<^0ώrs IwOZ}* #)EcA=Fk]9Y$KId:U<<ҦIq-D7HId uڝI@#:9TzCd*ޓH[p t߳&/JJ.G~1+G1۴H;RD0F0Os-À|*Οqkg'rFON3SZol TRKo=bV7n̶ȍcg[޴_  [oXג60wZv&Be&uyA*Ny?*Ojl+;AcI~tVwLp9gĠÌq֮<2 Hu^>Namr01U1N)U(8 !v]+ 9# O*; XrqI;XqMryerIfvvEęcR5 ͻ %?WE%]mvQEQE(MV`@*AG5y6I#MP~U?ְ c|}j"Ix(957vIS v8c|F$n&'“TWlj[Uh&2ΘseK"7q_z,#'ڗQ`s֠F"IVb*=e$ NjJETSM 217ʁb%G z#Q?;,mJHʧT$s h A$l SQU*F;daqڪA2)RG#5`S.0H F `|®[:j(]@qDe;#Ne#;ytѕ$ᦻ(xo7-2CQTfe U2I*N- mzű7jlVm1WV]ObLJ]γ+ƨf|#TxVn#+sHUεtpjwXѲ>I"fDb^&*Ӌ2' *aY3ҨJ6Jˑ B W_CQU=Re\Op*N >IR̤9*!26Bz҈-G-7NG\u=a"Ąt'Uvc:皁 5g]%QA8T!!AcsPOLlH6f*ڜjQNj |×jNj-ݺ:͋,C4iO:fc /ĚBgJL^FȌpcV4Pds1Jl#* +t_n"#>Td w'?,p{U4z*b=Hq?I}mI` i8V>R}jИ0 eJ7\2In~<9MQl!3QWtC mǑM@`ܤmjMqLt_9$c8JDg;,SMR*Ks P5ܫ3.xK*9ԉmR$Tm"A늎@ݜF7RyyqLwn$1ޑFlz EzU8TZz(~E8UQG5=HfM .F/d,1;kҺP<`=zu"bH\3i8Ak ao\BNCLs+wRNwLSSޢelݹlԙT.)Ò&>YNKi#cgUI6cޫ$phcM5)1M`ezU#e z+3bQ}WK]ttQEeH]:"a1Tb[sBRV:XV`}i:O csޥbpgAs䏥Rqui* ۗH`wۍnhv"VQWi`׵g߶6ClQzT=~VpWpm%|t$ĊAE8 ~r@-zªlP+i\t%k/d2 ;#MgqIh *S@Ȕ2}sQlV*mH*Wڄ:ԯ] - ץQ =TfMJrb Ҝv DGJ5=ĂG1V7uj20vpU`4݀6瞔sJ6dU0$WE:Ew7q~D'qMxƛ UWn1j㑎2q+B`'Vi`ck*kb5Y6!c@WQ}pA>Rr*|0ES˜LO'`p> E<})=6 X䓚ln0y$暌`DL&# Ti1qbLwN*i#_/_JY96*8֬FyEhKvoֵtշES] }sҪ]^y?,@;w$* |#D;~B-朴gV%94hS߸xpɿ1R6Jd+I#n8fe,x+֣\Ld~rث ƽvaREMbx" xJzfpj1aw0y_ aqŵwΡWƫ@}Ry'fwe~9S>^{ԉNVĊFrA!yR)1>cܜQ7w}*"GU؊Q> |TM 2ED,#ۈH "$`(R1ޒ@/Rmԓ8i7qj͋o-œ4%]vUQE TN85ĉ0z N |@V>X;F ZXwvGFR -ʠCo|Q\{q{ H#On i#N:7^20z}*,sZFѐHoPjգ.#'nu߳$H޳(Qeoۻ'wfZe:HJUJee |UK6\*FPqow#A;PEx CH>%2J$+ҩ42zکnPO|`M pzщ8]uQ@u =dX6=GTCsr&-jILzbDаHPɚxHN  ӊqN)%ᡟ3`Qȫp}zz;[(:ޭɚ0~fӭX',Y|ܓۇnJRw>U|hvs(rr11T) 6Ta6LOp@қV@1S>R|jbqI œ+2:SBr*2Cu5$yqO_3VPTHsTm{oޘ*#m*&rOҘ+ݨ^7w,lF?j9u,y7X w)=@|=@桙TF́* @f@ )r;LA~F((w[KWI?aez5 {e8leMeZ,W?V9D{dS-.$B@ږ"4 =1ޜF.0^õOn W1ܩ԰>J{B `\Z?(|ci$$~Z. =S{Y[ T2{90?.*)TVb9ϒ8Лsک".g".}j!~N|r^\ANTT 9UIOBEDQ FQ,AUbQ[u9C~70LUٿI$ޖ)7exӤ]s`<ݳNNi;㕦 &XFLY\LWIqZw*ޘZмaG uݯ늈rxPQW\U֭(%Fz*5 U`TTv &7AZmmq"Fr7vn y 1ҫncU&>wЪNO/5Zњ*ǒ> JNrݩ&H9VrF[#>r>P9uRU(օnVQEQEɤػpK7JͲ()-%Wl;ad gCBՇj|DNS4 J$&TrpE;xy?v>POzBhPzkcG\3BI\p0S }TV@wyr.zT,#c%ldz+c0ݪ<*qa㚝)}t'͜1 Q1qƙ 7A d"BgsUxPׯ5ζub^9Zt9:⩨UF@V>՘jhkNT5^О-@)dFjO 8X95MĎW)nmC(}'!MrwiV3L RZl mC{Hb ]I@*% ::VPe#ӭԢ((fqjuaJ©v2sY3FU\eT&)&\sLO e5i!t#?r [QJ[*F@"߾]YzUvű HDaiϲsjMPr(^,$1ޠ[f2[F#,g5^c>\Ui.|vJ; ${ ұzTMJcnn*%qP 9#*O#;vϽjca;pr}B Rq8Yd*ysy y5ZmT jAQhv:Tjg:-~ l2A1L).xl Gy۞4қnz)#2.BcҥK&E;y2 r9'8vRJ$jyczwA>3ڧ>h~.IӀ'0̀bq }i"(1=Ee)"L iH%F%~Uᣏʐ:ze;;֭yM;(0=j%)#Z~3̮>U, vcL&I>x;޺m32X5mIڿ ?[(,['S/|–PA%lZErxPNx֚63)C1U%L,pw9NsV lf{2rX3j9IgLWp <B Bt8Sa[=ulpiIK ɥe=F)H>) O^9F0Oz$l@]EoA=:Kr֖6)l SSZǚN9{})yH皳 6qʥ\p X80 nQn~|p67:|Q*qKN99;Ld$$87aXZ&BV+!+'Q|8wÐ5;ջ"d UVjm%A4#X'4Tpj+FB⥺o1ni,k_ O\o;V Re涴f<-ZVVPqJӳw)ҵcc?wҵ$k@O{zс ǷWew,}k9xd2$m/((۱S:{欇/]8sSnoqJ0IK4gs29ҫʾQD+2?&Ab?J:P:n䊝|ķ8G=:Ldr4w S$+t1U55nD٘a Rk19:Suc4\´O?tUf@~T>  Ы1`y0}钌(`GʻT0#Sd\ÌUifp+yP0mqN>Np9A^ d%g9 @8(SFʼn~QϽ1j+f '=)6iF=av ːzRĿaRjb8k9"G_JMFf 5! zyb{j=kZmП+ e{VK ֍B%8b:Œ9:G >%`;  |/&R0ڦ2RޑAi, pj7B,` VP'Rȅh9 8#Wv ]])XN0lm< Ȣb֤3#*"$,vڣmGM 4qBJrKmJ̆.qڪCCk̹} Ξ'S͒,5uTb087hJ}| *_")" IeK.2kɅ+{l@ θ;Eی7j3& a ,d:Fj)HHVu^FkjṮ҅,r:Yb1HQ|oB쓔]$p}]ܯCWL_%Hw"^>P]6=y]Q.? &ICW<j$aǩ/:$|=^'Rc$Ufʻ@wgJ!`?J}T8qOHӮ0 Nj%$'WSO<٨ܠN$zRqIޜ>\i=$27?ʒL0*k5ZhNs@^sV#A$M̦B~\JNk|Í.-&v2RGS;ȏiL 3(DUpU}V$0R+sKm'xpAMs)d WO-<@r{TJdppoZ9]j"B~Wzj"ۚ.9L\isu$P~v6;U=Fg1c<ܾ6֝pK*I^jcFn)FnW4G+T &*`S}}1NqFG#^cޑ cޑ{tgw!G P[r=)āS)ICgizfOFjŒgZ Og:ӷ4 gNW"_=Ue3\0PqUve!ppN6#K{FRE>H[{DPjKȪښ甉*jkYF;# ֧dlK%g>RA9*0X}$j$enO&UIŽIDTIQtwZHPK'sY ,<(Ms})mf+#Ҝ##l;Ng*w,CۜR= >pE9 @w =*Hg$f2+2sT9i"f(sҞ?3i҇M9? LrVv$q'o8QRO@bb;ӮD 8ɦ"{KE6̙.OTdO\ЅicV;T#_#>RĦ{y:5&G8=:4$2r9 U~Gd<0)T.qޜJOޜm.mwG5 $ѹ xQFb͚< &pxj'Vvj6 ن;ھ`RGxR)w@Irr@'6$h?jXۭ9#HB niPpN*Gu)NvRJnq3fxM /442114 Sa1Q4 $pM*OKs)H/Sd{F7Jtϵ6IuMV &hPE\ֈ8`ؤO,O-֫8FN~e#1#2灞sR$f4O"T(^0y6d782wu>P;Tg˱GlS.|GҔG&0R&& 6>SO rZ`dE9s%TS8>,f? jbS!R}9Xx}iᘓRqϽO0hsHc 6c*lFAx )X gc9QdR+SMCJi0Yz >\1+*nHMG)++( jrhneB6xʷ[2Ĥ5=9SQM[Tlz ]M~Lth.>o#?ƬžP>TvE|)dy9bхU§bjlS>Oa__ Ҍ;luRZ58 pE46:2?2Aک 7CF LP n)˖>T'd21ANF94BsҠgGPxG`zZێ1:ԝCvO<8jL ipti$c})AJNr: a@M4#y vЊ9aU$l28$u5Y 6뎦{6jYfpI *Y&p 5I%pr*؅Z8Y?jBnֈ-HssN\1h.InOiȹ9R)e?(S tԪboCj;2ҦAH ̣P'bHUs fT@G'ZIQUCƚ -ޠyQR gDΧlzӁ1M秸p y?!88Rp7gU(P@s*˲Py۰éRڲwqr%˔nǧO1(G=7)v^ ֚Qga8ԅLquSE=Yxb]r2CTr<U:TP}ކ1qӐi[NIdd&qO⣹SZx.Tɣ,T#O2csӽF;Y=kil oh zƥ3nBAi4V/Mc1l=M%\QnzfmvP1֮1:Չcn@˹B*#p>Fybi@T9EJrSNUNIpF}TpUwc]60*Ij'Nzw 8h;2&YOzR.BSǥLUH!#'q5*AM8J9wX7%f%GJnU;K>d)=qTgA A-qK%jM= SJ>V,H}VrppOZw dlp9a OkV%MshOڭ$EI=>z֥ -$zj7͎0vn68%)@FC}Z]Mq3d7cS4y\M`Dgfԍj,0 *8 D!)N(_`{cy?hm'on,rq$x6B9Q3i-d @T6" ڪ\>_p~5V!`*F8qQ(;b逓zR>l9اcßʝ~cګ\;͈a桞I% 8AҢP(ۍ,?.r ,Go9j=zP9J qZ*qFLIr;MIFޛ ybw 銱d'*o5&Nݟe93*g %rJXu$ ¬|6rK)*rAF$Te@99U`s(v?J" gɫDGn {XF NxXO(`,oj^92 ZG2̣h8Ɇܳa7D6U!G` $.Oj4ct: h brU9crߊt d#\)oRHM\BeeBXv4KnRrß^FC$d:Kœw$=j)iss+fWt7՝Fs,j$cӹ5fgt%ڛjr?ͳ=Zn=V9fI8۸)v'T( rE<(NHFOZiҐU[zR rn9R{0 )H2ݩp}jߞ*CVDw)62 XDPLn: $讄+g6r=ULN{5MwL=3RGbwM*lԑY6dp+B8w klX|*ЇpKO¾پeB,k퐒*`?jؘ.B:5c/tnT=HV?.L52kfsÑIIwbJp䑊xddv,wQRm qـVUH Nɭ[|㝧6J/lCQϧH69(i2BNAJ~ Igf.)Pn5kSbx#/Pjk ,cơI1%~BciDh³AV wՎOQNȇaxrwh,sS!G dӌ;2r)^'Iyd!YQʰ4BygbOֱ-Byɼ@H*ÜDRH8([AA.1B[de n 9f-KtnԒ[D&$t㊈*aؓQT8cI6pC=ךIs|f-#q D@uJ8 ¤ݢ\T۴kx=3R$%WҫY]jEEqerP{WxUc:VOWedC qn,> tzӏm`03pL1R)N#B,,P$/$bP6*Σ+LƸv>{乳+EB[v/i[`QNk30IdJXF8=RT=ꦑu梒#E$_7qM#ʌS$&%e6Bc^[UO1ʖ'wױ7 ڡqUxJf'ޭVQv7䚬*櫁KXCi0^G(*)3!jONiɌL*?άZ3#(]wfF,!Kty?:*V)?հe;O<(%m#DhdTwM< ^)yQOj X hz[KX%=)-n(JS=k@ ;U2֐gݷm>ݞR7P:0ȫ'<4vd@T2`pr;5GzQ!XQݕn@D EFm0I3jb5U늲"qVРTr],Xrx8pBI.{23ZK%?';ye VN#p.0[)"gTm7iЍYzUm5]-VFۿi@!UɁSӡ+u_0AݪYPU\ n<cdUcdS M4xK8ޢKv5|޳ͫA m-numew?yЄ0\jL(J. Ydᨀ02vR9#EC>\Z"0ȑbEBι^;ȉHGoA[)]| JF|֣[nﷵQH6`[6oZ0}iUI @1,UվPxSI$ G;AJGvkڢ(cRszwln+) 00)Q85ʣ#S N6צjҢ!s,\N\[w-#.ujPyjn񖭈dJad1bB眒Os:rKai@֜)@ҏ4SY{8ޑDǎA!Ts8p#iSx7 2b)Q6Pt4ci'}ҫZ^8Rr }j {am\ҪOD2Xi0=ۨ{FbFz!uJ!-¤EI-lS y ?25H݄eClge \p*XO>) u" 0<(*GZ ұ "SJ"X9"ذE㹨 sURHXHe$:Ԗܑt=Gc˨9ʌ4Yz=)S\tcӵw_TcQ)@?ZtaYzjx9?(L;ۖ+#5vl0;bHHv).O~zVLaR0p?^AvWzȸ~X՝=ė'+jϚISN®inXO $ =֜٣w3VlXfeqZFf#GQH br&${&R4U%?Z}&l`VI45SӣQYX7wⳂ*MjOd6 z-;N{շ`ju!F@ *"F^۵Xql) @E<5aHu+eqQ+o{T7ÎEkqৣ } Go.d Â)Is*w`aqS66܆! {UgB~z_zyYWхYsH}TrceqA'xI* P88PlђFvQrY= TQn%G)켖${u'GjF#чK,~S=%Fp^REu GE#'R%l-ʎX^&۟v d *~GsJI;Pku{m͙EKf;OP6kgFbQ>#~u;K/pj;!A:IVe)Ͽow"&N$,`+0,AF=I229RPlFz\֫ `XU['Ҫvdl5Z[*{H9dE94RϋmY$P 5GZ#TfٯB0\Y]0[zիU wC*PCend!]zeNePzҸUÝ+qW/C+W= mSYboCMY Æ45@)?;Ӗ'6]9QXo {SC 3bh~|J5ݑ"Ȕ9pM^["Ћ@n3idظyid8cҥӯͳyR[g2Ơ!(8 ÎaT05uJ>V%?!Xaޢ݈?28ݽWh"1-+W!Q/j(T)$ BU& N= tjFȥғBj,c) `$ul¸Zo]h$pϾjhidj!V4eU$0V\s3A/b=k^oK]+y(īXבb(t-y?.;U~b`cCo`H6oc t m#Tkr$ N$!ya;tf^hH+GwOhPDE wW J ˁ4P)V}ҕB+o&L`|ҳ9:O+*A׊rVݞm. w2y=8MƤ.7(RAwĻ]= KǕ .yjqnw0:Թ>P@FP*0#5 D^~j$~㡡B?~lt$ZKB0wN}RNW l0C )*9_2@3a:SkNXksjʳ F3VEYzu ±^H;yRဩѕPX>;me-/8ާ2"^@dOp߆k><`Sف?JjY[-O_@q)rOZy.BXuJrsR 3Ql+$ڠ1+lT^[+9 X XA[?(26$ pW$Ԓc;I ƜlYsHI!/\+rHD =9fb@PTr\ ->lŒӦ \Lb"w8NqvO&FsoVo)F;g޴ې/l#ꮦ+pު՜mnZeLDL]ͱF$~^.#}in,ÒѝIo2]i^?kL$a7X=>jW"+#sZ٤g 0$}Xbz.zyq'ǚJRu|](Og?J|b3JE*0D[KwlJ [6>F(''i 6Q᜶Nͣ)$_<$?MxC29d!G梒- ÓR;4`6;m㨫/=F K8cnHTn1= j \v= Q~ȣҩl0d T1"(M6$d;lYRr0߇zKF dcr:8wү`MZ]G6gERv=:g]V$V'V\C~4:Qw8*΋tmIH7:mO})Z1 inKf(_I wnSe/YwJ̸sԖEHѦBhRX뙣c8PfЄ+ҪH^D!g\~V榑[iթ#fx+}jĈYi)td䎅MVA /mc5@le8+Qdex ޣHIHl"8x6HX@yUgm.+?w=}2r!QKf`HqoRn)g8U߹8&q,*x 6 >1<:~5iwJWdWmȷ;v"pwt#e q =1RJC~ɂqnG\jF;a i#SO.rKm$zӋ M]de G[ Df%s>a_JžtGWP 0yyU AWPwT9Vmy?qQKyܦiݼ#'O!)_A,=SDȠyj_5LKtKҤHߒXR`GFܓ٨nQMk ܰ GQZ* T4>X#VsY) MprjWFd p3Iȁ8jk\L?%3Ly [錭@7aZ`J@gi4@I+#cz2"RE>UެFelm5FX qMc8T zZW2GB)[1E\`NN0s[z_M8 r:[Xj rGp}k)vA8>X4|4'#6#2@c9$Gҗx76ȧOzdΒ"k L˔#ZHVf%;l2:xsbnNU"u+% ᗔ5}hq0c&׏cir)e#Vv)w1? ZvYv<+K&GRF<Ԁuq"5r %ED9P9iykp :j[!8U?6Cp:HL\F]cljTX挣6ڣBJ[*G~A6d%̠ ԖV4+<{b`-3n1QR )T%PN=Ѳ1d=*8=c#38Z9oacz(T2dVG\RmX>A՘̎haFSTP`єU$;2qeU6>Rj)y %_v* S昞BJ; }%#!ʱ$p$ rgdVyb=*caaQcةydΐjZ׹Bu*l%GZH|6r$*mROyR'#Ĭ2 =zc.aw4$ ˌԧ!uӶHC ]O۴ʑ _{{FD^AjݼClP(\Rfpb]]u)wnsY72#1=G-őNNp<Ԗ 晹nEi^6 綌0&߼jnW.AK>rmL\yWʙS**fU4,Lym?֜^YFF_}0Gޭ+T/0۩O>?PoԕVP{Usp{jOl]*;Źd\_FL4$ǨRepZ.7oޣqWt@vVH~ v==j=鼵T,嶹kp늊m1Ό9[}*Þ0~ٷc9Ұht7pSӮ*$N7eJFP9!3"a ;!I/b+f%uocOHpd䜃SHW؍*wK<$c;{*R&PQMw?#c$u5 \-*cV6en~y_!ƅf&a)l'$|DOIxDrd" ~iWxv>B#xl7Τ׊ɸ|U\l:P2ѻYn!54RIQ O:ivӥ2JE"1:(ʸ,iRHgrRiq;MVز| S,#U$c6t.DGZ5x& ;`$<4WIYV˂1%Fjd+չoE _( #p* *0ہ t*h9ݜNT h]E rzxZtqj.X?ҳGA QTĦ&?w5Ym2n$; ]z%j'7>Z+k%$(H=8]{uD344y7ϒ# Cv4iGsSq }X.ebHSkq!>k2i}% L6Ei$l2L78|KnT?7O{ rǖª8/3S7fвIJaeEYld8>ڵڴQ wqZq>pۙ)7A1 ~u.Șu C7Tq/bA4fT0GNM-,R<3ɴU[2Rs%˔8$j͌$d_S[7(b jw <$ƤݐrZk2v5[u@qBS$ޫȲmRNWjuI6F1Gtbqnf-ݩWtVF zUKp@:3J8px ۑDJwx.x#*r\V1ҍOMW~KjEWFt!z=k&W@y'ZςF1#ۊjL YXgƬ,[H=)r;ao;`>Ť1I78ؘܐ~a=S3H<6Y6<0.o!|X 'q5Ijb<5Y$1VG<nMbBHSD09'VD8N_.\w-C,j0`V_.E db\}柧g<@"{6eKyF3?5z_%=W>&]hJ JXXsdQg",,*U,[̝ݴJZs'hR_ۀܞ m `YPAAiitGkmr S,d#,Zh73:ѷ#-QȄȌ oL| Ңhs:<)B0?UGQ%0C)D#sImt";m$[$d`5#Y e`rxE4RnWs'=$>zRDݙ+sT7Fz3 Ki9RʊdЇq yˈD·$MiwH2F< r4%a1G/ҥch8QJ1#|nrqS^4/ ĎMxYaoBwdu<8f,un'5]}N gN&2C c"`1QJ,A [˜dT[UVe޴dHt!F]p=.ة Zo 1\ch34 p=p"f2g$ eą85DljǙ;?+5#4ՑB"Ax̸gvgt;OVF-ϊ[@gxЬO1*cܼw5VyǼ wL%2yL|5=I?9fjKsX婽m$<@? Xߧ]>Ow'P?*%Mnjʳ[桹RǪ ]'Y$>XO2;K;v*yxxب霜n"ٔSc #` z|%an5F055c5mkk{r} RL1Vϯj")[>;Q[9?,.a,}39f4tc+ƫ,yǥV I ߥA0а؃t7}dU#uEĊ:*۱b2+4D I򘁊PD|sAJ<ùiHzp:SM?x驕2$u uUvfra;91r2j$H2G:{8n|ɭJqI5Sn8tȸhi%w*N0c4U<]p}BK/KX'-Inḍ/F4j5*N 84?&3NIM,ʰEO>jZƄ29VPpy^{Ջc8+Phhɸ'hC=1ֳ1Cq20wRݣ(DmʰT$ 2j!G#Fjbpe# Q. m 1\Rv+*z6N r*ׯGJǕPjy[9$?,ǏPjfo*g%v%GuZ77IY #v?L:0튎Y#Y۬9EG#|eIlaŰYToy%cM,d,@RRXǭw#jQ2# 'f*۔.XMIt)VS ϵ d 3P[4H9j8`c!@\1̨'@ : ps dlynaXӔ鵲 8:b *(lU cnHH:ՒeXc;QHI8]fb11DYGz(;pqd>Uhm.XC*qnbDEf1gd@UQ- b!v"gA-e*+|<)Ingڐ` ${Z`nj=,Twrp=꫸۱[1.XU*C1Rejqx5%@^N*ƲD!*mKPz GNqUPUKr LSP8l.x94GIpᗿLTu08#)Q]̲# Jr#6BF1R 2|̤TlY^)^ H/z~bv=EYЗeßBWX1LԌkI 8iݿS,Wn~#8։e1E 4"ryx-+*`7x.vR[Lzu>oQN\MSNn@8HrOiBR8X*)fA σK6 . `p$yrՁ]ѰqLݘkSQZw0yF456C:gw< c3 pi;$OK&ˀsVYfʻ/uL%wLF!UTILIYdU}|SRFd!U ɹYr=S۱v2!*ɖSK+YXrHKzwL%m┆ sS\fʇjԑVuQ\w9n~DzPʷ/-|Wdq}}*s*G'ޘĔN¢OC)i+H-rq\ }W'0[r?Dl!;8 BC:㰧"7|dRF/@hE @R06eE6Vƒ֪g^֫\B$nS.GUQUP.W5Y imc&W'H sWHK<?W4Hg?C$ ?n#P]6f=#U!Lmeǡ4ϸ w)n>[`fQRK˘ۜ,O5ճ[FpA`}jYhnQֈW/ G+Ip T?:aI'~U\ n9.#\\bKʟ$(ǔӦm>Y$,@,ڗz{fco- {j[1Y  3Io"2eZPcP}FO!y Jȯ#ʏztgGAHvG@QnSHʱ$hYQ3+`(5:Jn}[8cUXTGİ95$j8䓚 $g"09#jd 5pƥeޚg2ܙ<< :S`&Y <~T%gq֒y;v=i%];us?7Up[S5:[1$>hEo6cVcG-uKq6=frbå".˼ުuz\ޠ,|,F*$񑂹ڢH=07gjKe,vZGvWԶ)ݎ“r)pΤg?5F(ތx9MޣrdNZtcK[H`T-d唆$~*{#_NJ󎣊C/MZ:~߱JAv/O|Qs[@nMELVݻP{FAT PLNwQm:p'B !:m8hP rĐ}UljPA,HA\~hyѐF;*8Nr=+1[xfd%4qӚc\(Jcjk43:!L'8%[⦊K=ϓPL6xR\cޜ?CzTbn0r*fF6qnp}2ovmm29 O=*lh}u&uv6ј0;Oz/)21}:M~YdPmv!E9\iνG6m=9F x\zqPF*QUU9=y GZZ{} ޼gUFv\ 4L#t5<)E#䁚  ;ȅ,Jf'b@͕RIN[6DhӍ6(mJE >֔cz1b*cv4c3SjO$$-"y 1ޟy99nTP(g db(G0ʌlOA!u[r &\^,v,ͻ$wS܈AbsS'FfiٕIbHUbHRX>+@ɩH^rHɩ.@Ŏ2EO)dGd}{~Ge߽Q8m,|.I+U1!`uiOejKB1GaPÕFF_ޤ++~i'qJÚdlv󪑖'?.8ǟ՛udRZx0mV!J183q7u>V"eG{x̌9fE]yN. 6Zs9t+'6O:ed.H!I㯽!kEđr։T\ijV@%TRLq+2.Lo䍫~K˖I2L =9d' lAYP|̅sQ@"3QB\1ɧ۠IwTNj}07K,?/^98Q*ɑd$5Tk럙-WV-qw|ЙC8gpq[e|!ג=q[7 ;r;}*uNGF*UgT4NG!oU?1Uv\ 2J@~4Ic{d棾Dkh~tS@bX MoPj m\,`zrv`dG!mYv0=*HST#"d#$ePOnMKi2$OY['{@ O~`PJd\g;w2Hsҥ 8m0 _;5[YCP`e=:##՛YNߙ*$%Dg!~u?wNj,.]ONj܌ 2ȫ~njEU\v:jL? 9̻k9I8=CqK mn)WXݩBILo!F1INz-^t2K.K2ަ#B'$}i|0x*↲i*QJ֠26)\y8i AP308cUb=hmbY 21cڥQۂ94JnC$;KpC#Dџ)"a98<Ԗ!#. 7$2>yMI䌑!ʐ1V1>cl RopC9Uf+īck}bp Y~x$ FMXGfTP۹-xڊf85WH$JygϠ./E4גJ M *Xܤʭ .Q˴ǀY(28zb]#G q(~A^Rr qYrʧEAp^9$QN2!tbSylϯj2ӱoyP[!X֨n%qxr.7 g zu :C41<ڱ㍼#ZF%$̉2qWde%WWk}>BA{b5ʪAbԤk}=/Њ"˴ w8\}ꗇxvbpG"sp|̟bgqV$3O|v [2AlZ<&\6Z̾C;,IERIb[3HX.rk*Դ֯iV6P?)98*X'zU9e?J x݉Kdg3dyi!RB2M:>c$DeŽk%wXXU--G*Ly[R hʝŕ(m:42?i~׺\ VBbtF[U~g  fUF Hg)&45$f8@9J, V A+fV bĞ;l- )fql)ĮWڄƘ; pjn#ewx o`Oa@ÆsR+Feg$)_ZXZgaہb9#iH֝VLb0rOv?Sl/‡$*XJ"| sޫ"5(cv gڢHDAx( Vi2CUd dN8"%X|T&3>ݒz3&qOm☇ uqmOS yfpzbZi^L*!zKdFR^FL<"CZdv6 U$ zT2|W'(1Zk=GR]"CKI^Vv+%]ٙ|8ϥ2^NA c0iC8B3TI–Wm Yd ҬK+qWڣ8Fj8QԌ梽uDUS̠I+m}jM?M3vԖV$Z}Z`gZ'OG/V 㴴ژ۽f=О9YP 7gŨ11\B{U!2¸u Xa椾- /c"tȖ@tCȧ0/GG #*y?^յud.y8k}@DgL(¥˅}{RҘpC+S1&r2s*b)VW¦GXn };Jk-DY[inX@aWcTHH*mEE,Jg?P,jc* 9]΀@8md9y\c*[hYGR"l,yOJbKfYcȩKH\<㚒l&Evsw`JOe?{b.E&w'ӵHEpR :o5 mcNxdKprr*vs>hiCzSI pF0or>i ;5=b;Y\? hF<ɤxRqڤ,0­Oe2ծgfvGm-q,Zi,%9g'Q$rLCR_2o "–鉓 ghwrLIPOi*fRH?vN|`FOjt (AأnH{ټ|l}01ޮ!ln4>>@8+V՘7j|Bp5BtT$j2D8qԛ[A'׽XJ]05d<¨9{WeyEs ^GP(=>f~m㨨r{~r2 :Z ܪ UN{U#*GZ=CMqޑȅ_#E>bLX(|=~5̵u\|>٬bo1YʒJskNLX#!“ִm 5NH41fm.B-S2><Qڪn`FXQy?Zm#D2~lQdfa@Z%F9jas'Zuc"O D?5EP)c4董D t՗b8lUAʱa1ޘhorۜ iNs.M)mmp73Vش,.2MsiU>R rÊmmw9]M[|rkɃɮ/.0Rrj+ćjnEA_^R0iC^,)G[t `YH?`Law.&6F0:Ucsbe#OOZO|TFI_K Q0OUY݅^Ú䕇FSE?ǥJ˛w~mNj;8F?xewF'P,=+ ̱+r{%P+ 2з>,NpNMs6i;I8ڵR#gRg;v9⧌P+X"F TU]rC GF8UP.I*d2'٦Tu6 SdD{QVc1Z["3݈-dBT*RmwcUJȴ BYnzT !nda kG^kawty1O5R YLMYILT- rj].`oݛs[{Xbaԟ8wG?zqڵ yǘ~aP35Hk2A%R3*W4c >Jflanw=?Z/#ܑՕmB#9Z3*+#ml#o**2]m#j$@4} F]h;umx)2I8oʪ0pPM.#y.1\$#K*ೲ 5m4lTi[=lWn-:$Snөc G9CO4.LVZδY`̓uQOA9G$浉>XQn,0CcjܡsL>[Qo' _7RRcӁP,bb\4q*b)̒ G${m9w<Ծo˝FVA1 .OEjɛdsGˁTClr6KB,(ImbC,-B!E$0ОA^ٺRQ=EFdiq!T w"WIJ P#qGʟ,c"@ 6ISʄedPHM#ɏр&7.Bc٫(*|{5,jT:1Sn:7. c˶98J"y|Ɏ_sPs.G>T(y?U2\(#Ha f>TĹc)23 Fbx0梴h,ːF}};s# 4G%`v)d<\*-[i' J$9$g@ѫ)',QU.۶fG`l{h985o9c0 ֵtٝB5Z22¨R7, R94[d8>/!, ɫA StrwNjtX-QN` mHR9v d;7FVB`:qM|>B69`i]c-Ն$eqQZdSČz[-r:E0';})CpӸYDe=jwaޥxG?A#ʹDj̳:Ʈ#TFٹvvV[`hECGB85%&o1TI'S+;I 1&$dX3BǷzsGN| 9#RGy9,x"2! pGO-4B\?Jt9H.qҝ#1 95J\T UJ:~yۃS*%y%W8'#F2Q `zU|1T-%`~`BΪBXC!BH0(C;U54Le*11@Uzu5 % GMG$F(=iCA~bMN@TFw1=RYQWu&U *Pw|Hj ɊD#S0=MQdzF`3Ȥ#"7HǵEʑ6QCyVzd7&Y n*Yab?=*19-銔+`~43,<v+/ZEF\$Q[VfFCAXPkr$~<G(,3fmI$j2*~h?T_s3Ufh컣=9YX܆/vj2 ,<;;.L$)"l.h$ˉddzѕqq<͔<6,r8*,:T8i9$fkjZI VU vVd<%KJkى1#_9j͒g- }[t ^ӭ[1+*sZ14v# )Gs эF{Ҡi.vN`#-i^ b9C [WK&T]PNy2J#He27cU*|>'ae`@;KnJ50M6Eq/,hX %ꝳ;~X?Z&Y5lcެM0գ8_9SV 3s*9؜r{9$稫0 +gLv;~V+V͉+9F |U).ǐ\Hi)yjlGd;SeS1dҝ9 jQ *Iy2YbIJ%E$ڄu)m>;*>iiPH iH79\e~֤[C**?Oyޖ#<'5=ڬ@wtPsRf\8x_ ,bO$7$, ڢID$E {v_1<X*4^1jdU݀@iOpEyriPa(PjJ_gmc@CѸt #m#>&l?:0ِTb3";;>BʠJ}>U+(y.-opC$e[hY.ҧ+d=]Q  n#jʮc`5:ȻTq%ld;̢0Wq!)X#TْYUb_\, nIcU_"UFI"A}+4$ ŹmGvdUc)H ǩcj8`n7@I2DRR{P䤸<{tE2bEgr*9UK+.wlf>']Jv߭Wm_JMnjvزpyPo,]TNAF&S*rf'F?;L{cRrp{T## UV//cmX@=s*8{ff6}![M=di@d|O2B\MA#"qltE(L(6 x'z慌®IiK VBJsp)F0Nx<20aS Hi@qޝcӎ>{EqTwl'!cRPW`*)| b7Z8-Uo,0ȽCj Q+j ~I$sJ}3T y,|gTim0ZHo+` Rlb3)XIpyInX"@ǥhMz# noci4nꠄ6mdU"-g 0+sgTX%̙jh%4Ri K$%7CpII'qº({ƫPQBgn8s$l٨`0SA>`JR<]zz[ScQF$Yp1/A72! PdOC?,9)X,ÜKܹ$TN1f [략d`0@֣UV}ҹ8 P(YLNbHݸ͑ohңD;FUM5'Py\(^:Uw t6X\ef# -4n]@ҙ"WJGO m|xR;ӎ<( !I@B6؂BTtWcp!I Pw2qM1$%AҐƬp]=⡷WP1"8Q@' =ѩRe$UQE֥M8)&[;9_[g?z3SKgt}N~b3ҙ,r@?%3;U W9UT&&yuUNoLU/% n*a@@V8qҬݰXzc&A%O+-9Y͐IV*0@9qV슭jՇ)* ޴L~RzZ7Mϴ#Ư\2IO* ~a~)8l5*noM`I‘w1=)ɳv?9#7N@5d SYvH23i\'4&VLS490c7C z]w n$ '$ ^/֚!T`7gVla~j)m!ɨHo7晙WQJ ~d͗8T!{iYRI$eP}90W|"w=i<Pr=}(b+B,qO:Df䊉܉ t>*br9jxQ9N(Qid`8".L~4@|N~v~`;R]FD[J.O>Ԋl.@ң.ֲt25fer0Zndy ϥio̹ j!2ݑS n&D)+%֥b@c m?ަ^mѐAn;y<.7QP$P2rt1Er1Lh i3eYG*[Ie0ʕq>wQۘGgk+>G_AU,d- 9#!~aL rP2:r%7l`@NOzKn\*+,%UfBK5g>Pp-" ]&#+-MT|+L-=3TKyaQY&* :㸬YCEHp[8s+6m) jyc_F5 n#yAZ[1N)cT'7a'ySc ŏzDH gsHz*EjH!nb# !TSx jfV9¥XfOJ,+xbY?JH8%$ YcS,/hw;\ODs`ј YWq H iXFN pO4Er=,Yttd#BTLTY\ޕXAix2f9f9.GbpqL ?1T454X dm^lHp1VU[4ǚhLon5#qjm<`S f"T=<Jb1y=A+xehr=)HQaޕ*^#f`; V{ix 7知E%հ)zTm  f+ 3dʠ|#҇`%P0Ht6snH&x)`rjI FTEXmURėn$;c Bţʥ*t)Jۚ2"(w RČ"/rw SU^5# Ǧ;RΒ,hUcP(r zJ#D! 8-*mdnX=M\0sTvqB|<N t1 uoZ\z0׭M%6_TBL#oU0J͜!qRq¤M5$M 9#gٞH]%r <+~hqtTw=*v_9W8榚)~bp]n 2_r|ÌzRi;0)L!bM>hv97|M3!PHywlG+m8 yr>mslh*{b+GTs(T*I9!VeU<ԶŹ 2 9o80ǰ Prݤ(8$#lٶ69'RK6FĒ{UŒ48ڇH4%mzI/T"ҭs/ F2AcɏQ]\cd Un?-e.n i> 늒቉Fy]Vv`naF!x> 9Bc=7%H B c)g\67n=ʯÜԾY:lgUtB! ~\o_0i !CHCò6w 1MQ hdxx}ituZlu|c"y.؏z? TkYHX )P! V4&O֫pQv?:p0@(?:j; ǗcpԤ4v39 W +8 sNUr'c/{*%nIقE>0&cJ}i0+& jW|Og)kt+%&^ #w<㊞@OrJa0+t<Ds*ncE tyEsY[# FAUd#TjBNO <*ʽ 3VO,jҎ*Ii"c 楘G&$X}yILz7בEm Z!o0dҙyrŹ{V*}8@$v+ &ppHY$U~Vk}VL8$% ;KF'3UR;,2K9=]VWyrN;8zHP8g_)Ϲws8$a| ZF-N7\Ԫ!T)P|q%E W'Hl!f݃o4mģk*0^x~ g x~ sjfSxVdN9 xG4sI X_/VZ2Z2zZ 9W8 `Z^Ȫ4o'E=0m<[)F I?Ϋ`SO&34LIgϝnZ"w@R2.@pGJs|g؎G=" !Oq@JLeO8mvGX۱8=iFң*;8'Zܗ ?*3֠{Gdk\[CkL|U]JI,Tjs,Ƈ Js,ɸg;j rzzT:e^Am65e<6վGWB~^sqTVSuLӊ ݲWQw);1ܶ)'c<'>٬9ǘł=.mq7=N6v[=!4ToM>|7ݨncWEvʃQ\*?zXQ *[|=aKmTmY?7JN#(=zHmfI<Cqz#DciF@=sZqE|\cֆb~Q}*9lQ}^ҁsR''zMܰHSf!c9Ҡ)'PO#*<+eIa4A#^XXg;AUe& -زu۞^K#l] s,c yp7d 8=ڠ̋zV(!ҮFѝ!J8 SB4RаoP}i$J#U-ޢ)CcG"uܠJ ?irs7awcnTQ2L:&Hyq֣;ǻs瞵gly\g{q\aԈz9Ej65؁zSX s#_Ƅ(" (36M7 ;'j; -^In>4Kvi&BG'iۃO JJyPIK.b?N((ͳ,F2gPi' T= c1¯sOXȒd:Zh#L[%[v\v¹xLTMlT.cǚUhrͻ$VcWӜSVwQ1gy *Cy|߰D1hR@`uH2\𫁌KNt&MaS!? RKTf%"$cz\1JA+ӚQi$lȴ֍#pQ[3#p4̶F֬De9bT"!CV`Q/,v~TșgԱ<QDL@&v1sS+앉sR+b3׶jlGj؆Dh+@VlWgO֡<<`Th6!nbi4kՁS:W cLEA+I=J@XPqQ`^'#q֭FNGҩrE?tXw2rw.-*XvZ͋3&8sֺΞ)ܹ5mMfr8W r޵b /ʟOZԳ>rG+>'ۏ92j #xJRMc|18!i$v&0G9 C2yEXsAe1\I>d>hQjeI;lHF 689\(ΣJ0GOQt/'=1R49+F9?3yж<D@*+ޫ =ՆF{U{ ̌>8WxjȈQޡ`BJ ʍvl'RRʧ+ jE cȫ2@PF;сc-l}3M@p70ɼƪ\yB*I>5\Ī6w#RI#O΄}*A#/\Y[jFCc* &A*1j\m4$~S@N37,x֩Odn.SL͸GE?6[a,vըbQ7*meNFѸiPj装L.bXJÅR\)D'5$s() SH%GQAG'yޜ60A1<Ա |R"9SԟZrLcnҬArѨMaemٓ"E(tLVdޘFAT7!PSUT}(I @'ma3iBH5Y$+֡rÏ~՛v 8jJRvgtf&u'gb^]GCY:qӦFpj¶M,ݫ*nd *C[9/*>AHB,ՠ1'!9m$k*Y#i j! Pe2coTx3!c?8rF.0c?ҙ\ $]:T֦1[y_@|)9j44RT`Yʬ(I@$Dn=݄WʔsJk.sO(3VnUs#(p*kԁ ȨFHBn$zUhf #rPec$wš0!# TrHgh㟗p)3>{Pʻ39#Bj$RiJ9 \~p6ҭ1B NXT[q暘f^AANjXQ:TVu]Lhpz**ڨ0 ?0`;j5&IpAŸZb>@j+ ɐTWItuwztnfIWh?+vAO!goaRZK}IKN/ (r1anE 9Zv3-ͮUYhw/,8 9V9_9ϥΛv-GqsxSGW2b=}d=; cښ)ycFп:8Gٰ cdtQ.k^nT{qѢV"Р>t4wpW4|}j)$2YUqWTH&s:}1Pe#g"gWʧZM ҆VfPS3JRcHI5gbf'譇SLݒ9JpjkDDnAY Šeq#.n##vl-ڐ9%X';}MJUHH'ҢzƮ+! ⣔6aIڜ$D}z2#<}3ҘChnZC43 be93M$ĊfVxDLBvG !c4 ,A8QHJ]͑z֘XܐG2d{weQצ*9UaSCxNBpORC7 gqMq޴Ъ6$JD:(Ȃ$f⡺X[=#ҡ# 5ǖHJd2~THA85;o0|+I'wn2)>2*S&Kn?Sk1zf V|Q2NMO&v_δ)7/We]0^ 5~hnj8WE;zXMuw^̊矧e :gE~+%ebUҵmo-O|p֕>c+Zplw=jzg0?^yoqHWkv4JKSv]֍䐊#|s\Fj{ =E∣$N nF-+w?i+<1ᰀp1Qȏ:q3G%e€:ZHP7`zp کx >_-*犱9dhpFWm &ڿZwd?>Zcf}>DCrdڢԶ`7R.ɞ2ҟn67W]P;I?)~_CO CjpPJ$>ZU\=w~tsTI!TUYCĊH0IP'P #f&ϙ|:f"x#xjг7-,.cxV>j7ؔ(`+J1Rk{*8#l#{dP[~ҥB£v{f@HQFIniKl#4-ǥE}j/mܜ{R]@o!r*})p}#{L' In`SnsH=O1_-?{{r!}{Qʱ'߽C2 |U%ISsǵG Y\eHܣ{+޴¥}FЙ%ܕOr ,Y?SMtVh|mFfnQ7cRU Upr?J&d 9^A4$Ү8VZ`wJqj{@Ù S.Q `JcC 6\qSI(_*я}irGD|8lp=*EH1v>TrǸդ b3sN/EROBzqR9I8)NiBĒ*EFqP[x8jBہԩ( 1Wm15fp Pji"YW8#\.PqpEO$+*wU'i dt=YT1R6!X cHA[9x'@0;z)SL$C:d'3$ O}uǘZ 2p)K2x_\әr,!V,1OYi+vZ@ؗ?AH6LTn>}Laay;6wzH 8c֐<N HLrwA4PÁrE=driFG@-Q\%iį< 'U[G1Y>)\`׏NWI'Pn?R#ũG?PidvK;F. )_ 0Y0YMW>ZMU~e-ՁM݊61Q?Jd;rU6#)v&>u[jcq[~F2VQ9oj3> ʝ?6?@q)jɶJNTjDVSgl*qM2h`\Ri" z [2_#lb:ԯl) GZYcg2Aڞ?ٙ_ ?=+Y&I",I&QֳͶ68!31Yd݇p_ ][rSZA%*Qޮ8 R gELŔW=)Yd!RJ P$|pGny lI.\}Ve}$r3)H*@:WojY"131Hf\6҂;{JpzFX+N .UІvcZ0F"UKUH1 P\Ƃ(1TSQepfl/r)H%ȤzN[opTx UUvuk~ݬ9H]/<.J^yF7ڂxېo)%0ǥ? 8`JG@5W͎ԌSJUeYӦ6p8jʹ>ZsҧArXBo 9,xJ0۴4= 2R#(<ǖA"mJ j|oW`)#Rpv\i^1S1L2``2c2$Y6eOLT[G̼q%x|kGJw9?s)D1H9*N*Cr|pI8 =T2?rnj Aqvci!z#pRBXV9 R8VЀ*f~lrIrqҍ ֏0;xbH8nh2iSHTMJ48^bGaOI#sABڕ*`R '*䎴ne~Xi :I+MEh6y5*@D J$CSVMs_ ?ӡbG+@vc}kCJ<=][}JbzT|OzS ^z{U+vn=k,ܓuG/9)ƪ6f7{`|$&i#t$Ld5maGAMV ,+J❮ @U_ |A?J~UWWeUx9iU pH?Z$Kw4 ",*ų4\¨we>$\~ROWKl0ޯp'< ]lmpzI!޹*-JA嚫K7jtdt`Y@9>=Wo. ˑ+V}=wnBz и"`a縪{\ԌsR<՘ۂէ<ȏO֯vꍱ"{5 D2y4;~= v"P@s+V`b<·l-(KaZqՏOKɫd{TU+ju[5T9Dck$PWd0h*s !G%j'6BsRHn*% wGe$!Drơd${b}:k; hS2={S|JY!. m^գai.9cޭDRK[t_{r-z@:: gJږ0К.qcWhDhqǵIIWqTo161S]q\f>`kbetŒ5[~ݠ nI"FZeF[ÜT1@ÌAjK%&sؖӺ=IdrOsRc֞T%HJ-P HV$H XԌ1Sޥf *n~h+0X z.:MGG8YPf$}jq MCwFR ֋&^O*cD<(cKu Lse_R]Bwr];_n6y:y &@yۑ!0ۙYoNBp9^Ѥe?V[]+AAJK{#vpy,7uP#P^7:DgVM0 j7|֫41=}j.$>f&^b dfU ˁZr.18WcR 7QNK$ V[3IE!O$9 R2 cee5_>tڶT7N۳/ (5GYç @~]JCW`U!"%?q~UyXOAӒy&-Eu4ؤXYWh*"$@iB랫hˎr(?"4~F@H Ң_ZH`y%51ɍ?Ŝ:3qN~lEIp$:RoXdKyV7Ab2O =eer"һ3J5dF횞~gA&' gK8)3fDa6 dRّ@:椙ayf`]N]VndF] e6V=0FՕvT7#j21l泞F-Vm7 >dt5=}kcb#Uhwy[\U)URsTdVdƒUH8UF+]2C*2yrx#E*H 穫 Glcrx&ö1yՂF-Q[a95]NK(>`=d5W+ڂD{5&/YKѨ#HYX?P8X>Cwȣ5#FAcLɐGJRL2Xmn|W <(=I[I߳h= #?:+fm6@ ӣn}KxĒn#i5û lBFw#u -K3R j3`c;T~KRWUce}ʇRo6U(?4yb@C|}'XQہԁͬJR9e}kJ7laHz52שkՋWG+3J\@w!/JҀ ~*'4pI5R\s˶zYc9⨨'mHp;Uؔ*z1zqZl'+J͈pZ`xVU.$S+mb]$zbI B~g8e)JĤzUH%ՎTlrQ]52Y}v *V7\n+[Q6u(Uh t*ˌg#qz%)㚹]kMExc$ʰ|I!󠋰FMzH3c8nm5SI<>Axɩ#KGz %Ԝڶgu^ƠjYdQ٧m"YKqJɅQcT*~$v 7٠򿈷4(Uϕz] #wES)Qe/=OaVlUhB˱ЮQoj0\/+01f,&BG Z Hw5 T=jƦIܞVJ0XR@@?3z$qV{Չ nQEE9l/CȥܧW uW?z(Z&ZXt ,c۸W5:7RyVèF8`܃XFP>U%@囟֭?:>G(psڴMˇ{Uˆ{f͈{پ@=dpv㌀v'Jӵ VBÎ<07$M,pq 4[\z1T]1GV0<ø®ǣyhRXp*iZ#dzRy ?, ^޽Kv[?zX[jmB9pc\<'89.@G cjj86jy]>Z+L~jʳNi'&C67D2fI,NPiUpVEQ#T(ǩ̉|1ǭ]֪ѻ>vu Y$DA2nlҪL"%H*~Tcg9 PF) 8sC ipx8Z68#4g*pjմ|܃[].mH?ޭ{ ܲ},c|GQIE$N c*9:b >jQVP1WTT(*UPjo#+ mǖ7$+2Vm~RF}i2>$zvz֕KjT司9"VjzzTW @:dtY\Bʤĩ8Huܹ#K$y5rUR[FAWlldA>v̲ԍ: g9$s`*YhIMOM6Q o#_г|Gz{ mͰ|S|EΞGk_澾`LQzVR`T],kWOwtg8X$-4j#'z@ g?6rMVBc 庹<{:C 89}94Qs'Cn4ұgvV6ۙXx1|IkXx(+7|TaBI aq޴.2@ ɧ0 p0*("2q#U̘ZiXnN*w'-ɫ zd&|nm\(/x{f͹$$ i1t~d>QiT tNBu XBՈaӃQ݋X czSnr3Ocܤ3?qYR$̬wNxzَC)ַ-*#ϩu=>?{ֹLJ$⹉Y䑉 )z#+iv겳r? U YA㝴j%vj,zUVPK>#.F~\ ~Ub!+WE+q7lS" (#cx3+֯[\-{`vBp5;G;"sR*#3p9Vfp\D'92E2#(,Ɩ"9D̑rF8VZHr 6@ y{- ֣{9gE1x}urXwݨx4D?ZfE1@sV-v}Bj H[h$*Osқgo6NTs{Ӱ*v$ΦEߴ*nMLݎ3H*V|=B*mk$m*v2Wt2ӿUV,IX,lrsv9'c75b6dn[4";7p7?LV[FĄtV <ڠG5?ڮ`kb^?' ;v|z@<>^ܾDqzqW4vf<?-WobzjcPk8U* ReAG5f^VJdyδT+)䌱W՘ ukbiD+"tTH`زuIp [xhrT8~Udr< G3u^Z2DH 1j݉$ǐ8irV-Z?f(ZTSu&܋l~f O5LU}gO_x'No.5#j@{Q-aj=NfHaf20>ͥ66R}k/)[$V`֥Kp)o?xSkZ?WuXo=Gn&~oYvUUK(Z""bڪE -V쏿cXU؇ʣ8^ґmAԞbk<؀Z[ƃjG=U[,H95Ozz)nj1 H޵n$HZ0!XMpܨ'ژNNߔeQDʼҨp dAneoɨoPMĚi2\\_<{՗Y.G^r*Rn8k`[Vf S֏`\~VLWaF!5E #|?Uvm)!c+T$eǭaHVǭ]Eg +@ZSlfUiN/PMdI2rj ^k- |w`pǜI:-JwPY%|^E\XmVdd'xfc-9RD9 JM @ncQ.LP}/`ڄb:3u?Z%i%1ʢ/.[q}Pҷ$-+Ua85 uUWrN;Th^9.>CyOaD4vOu!˻Ah3&Djᰘnomޫ)(l&9 !;y\UG&C3?zc $?&'cOº->CJڴFSpJo*0~aڟs&𪱩in#"ξ;fĞepi7ge3P}${O=;"&M dw&OFicR2)fKMt}}7mʼsI-̆jC@Q(RKZȻ G e,FbpoLx 5]db >եH#q|w#jmj2'b  $g8`ZK-TSl8BA O }&HxQD~YT'ך̴In{U+W7NJtgdaj`q[6v ;T 4 Q;NH0,xQRS'کIBscֹyXē!{w],P yy"LՎHdzx3j^nO'#$1GSZ}|tb ucQ"paJ|h5ZRnUEHsORkiB,e ڥ#-M0)ؚF# 84)msԎBǶp[LC4!gaޡBGSRK1FFQ3{^ 5!x О9<9֧?+_LHY", 6TpNq*y՞H0ݴk rqYWm tёr~\3UelZfmQL9_vҙf2/6x%G-]%6I+/C7ܓZDxSPh<9*l3皫B\pSbvbgɥ]T==,!P [JʆSڵszu/)Gӽ.؇8ğ.G?J m4ԅU#hwJ$tQ+K'ɓQK+BOL %!rINRL԰ZIrz wG5=*X ёߌɭD nY֫ $IЂQѴZVq=gqw S*Y'+p0ZIp[p4͗EP|*(Xչ98Um}!AP L?OZkI5O,1Ԛ#u4L9'*ԩ"(?dR+.3uEv'.?T)~7,Pw-'9VR,,ї#ںHYU̅\pf"n18\(v 37e &GDh 8?ݦܶoJmn .[RZ",SU&%in<N@\6~nGjZԢe0}%@9_378*^ilm- 7@RNFOEljtE ,|1 \ܕT9s+}SQ2?M6Қ'*,l%98)ȅ[98Z}*!Siu #t1rdZ#id$*{%2HdrIX`x:V\YPH$q8C/UeU"~^1Hv~xBfϘ$h]k HYqEhLc]#9=8`V mbi(UYVVe$]Y>cIabsUmB9U"G4İiW m.Z[KN*N`Մx{&pjԶqp<ңp ';c0J}j功s߷FR$z>YT`[9o:TysSl#tA֪7N' M'' ֣N,#Ṁ$ љ ;&5i-8 9mO_ҫDǽC@Zf (+KlTcYqGֲ.4#dTX7.s,9ژfoGI# h0Ē dI&y'qir4y`yj[yQ1OZi*ۺ=3l Taipjpt$ ?ֹ?ybe4ʧOʤ$3U8DW/*vdqH \8*A5%?j-9v (ylEG;N7 񦉛zok  b;n |4Ćq=kLDE ;=cc ƥ%Anj0[Ȑu+GM }jRzVS*) |X8ֳ.2vڭ N*̂=kb;qS(N9#J'֯!5n$؃֢*z Zj-֠2lGAYU7}1:SXު8f%G/'j9~Upǁ_`ⴢA*&+Z$@a! *rM$2OR'1n sMbuj>FNVǥ`2\r[qW$%dCN\?uv1*U R=V’X*{x\sU5%:ʤW *ĉFze$`TX*\[p5jzk#4zf_ cѶ;4pu XYji[iؤ(QWnYM@@Ugc(2OJy|=*vtFHK+B.=H5i1{$0 tzzI%stz K+ϷJ^',fEVMե<1ݢI4{vTK<(,=Qog3(y Vۉȋ[;ǖ\'85mܻg,z&fnY@,O̓!Rs.0|3Q,g"2;ls8jY̽v'gajI>Jc Ky+_ '-̆()d4 -B8WK<{ sTQß9>DɴmgɫZZJ3c=*yH4qJP$>^zz+(3r |Jb#2?'ڬG4nA:cے}), o}EV2 2^بzO<;|U+%zThv39?18P*IdWw۸V~}ѕdjmg~U:}jGO,$.fR6+^yRG#h;MJc"㿭s#RoH|Ұ⾞G8QkaD0Ij[%֔#ni")L-Y[I+yݝvef<XN9&IL < kE$P\=0@{T 2s!Js1HA֥2Kx ޥ.,h*Ā-mDenOi@xSn92zXW;!!ڲ˿Rx_#k%<;EZbB sS#=[uVNt_2Y`PfEb?09H%:TK UWߦjt^g܀z`fBT\-,bIk.:;5,Xq[zµ4QN=MkتYx=+^8b)XȊPs6=iRgz5-l+W6hYU65P[n3s$@-P,y##IjL\Aڬi0\t[ҟ106ޞ&e[YJvsLUvñ~u^3rx*+iN*+0kY]<9P1y{V|9 |\UYKH{T#r'_[T#g0ip@~$8j"5 ViG!^IQj8#h簦"PK+1E5y y.e@O$QCȋoE:KQg}nFinoB ZPaRH'+&o$A=*ե6)ԚӴ4HÖ?ʴ` rM$y' rjBarD w4۩،}9fgcQ01W4M`TvMN-c~zu~jү!Ȭi.**Ў F격ih!msC} cr7Xz}#JX: >pVD#SJii$ ݰC=I'VPqҳ&/(U06JIIgĽHB4 ~5jKKxjƷƻI.r*MQW,ǥGnDzF𚭧G\PFpaY_gef@1UndϠ4<کIqrsI' !D9]Gn®^] lV0ÐAVn'A0,P^m^j3iZKI7P6p)-koeQA ]G*7 ݗ`AihV;U0.Ft` @U^tNX XeC-W̸>cީhp4F#?cUӑ+|*mVc1MR)#PwӐ,r&."NYbrKQbA5ƣfmGvE]7fyPqET5ͅln\GSUUb~gZarmOG!y?G7uI|޵yo K; JF  uq2dmv&EUQ )!bn>n[L4IRYH N*9 [_Xj5z)5 7Eߤ@IKdpҐDj@$ks#,0{g^9S)j>=f-&g`GQѡL¨SU'T#ΦI<$ ձYXKrFw6hʶO3I,H?t՝<*vK%EVۄ^>Da9'޶T->L8pVjI#`U@۝lrpŋ皚%{21?ZU Vrٳy@a@WUؘNYǽ˞%nCYk@]9Zf}9sKg K.1FvG(5^ YOAMfƍn2Fe*}k ufV(g9\:frdo=ni%; :QB ϰ%Cm$аV(O.1 ՂXp-1*(} 2GYZ98*ڨ^\4vٙU&i3i)4$­Y(KIn2B~UjmSԜR33B?2cƣyKwNf$lTb F:cRAi,ڤp#^X9wOZKd2`9(d..%@^ 2E,yfqQ͐} T%EEr 9 =KX`*Ko&.9ջh7]VΛf|!W'Ҵ쭒eSLzF=?w-4%1j+L?ZjUSaWUNIi@ fj}Un}m!Տ5kfGuVMeс߭o䀼md`ֹO8C)=N շ֛)d /Pj-P~U[u 9^{MRܧz{8\p?5L)'{s'AҜEˀs5$M3>SdIUܙn#Ұ6Jc"<+>jk jr!n?իWZ$UQIWFq U䚗TK`1Z: ս@ ӴAk&&l,ܸ n=k/ǽk^Zk>N8#"M bCx;:qUh88+KcVJh)cVvypIYHAPzo*Um֯9$vu4Ff12"h].Tw`^6QS(#d-2zm튣h ??V*Hˊh)ݟjYIny$V v9ћ XpÁڪ+6tX1jRQHb-ha^޷<T d;@xU2:gިo8j^;UkUg{ f V0xi,UҤӆ,pJ܋)>퉧p2w> t$)OVb`ϵW8dpz㰨`vm£ܓ9b*| p}qWy 0s0صזAکs܈^y~݃- ջ=. g oe,rqHLSld\p0kfy+fCcub\ORHWߕZqñ9;*9i]QL rsV /Vd"v=@K6qq zWc\r98H$䪮:rMa볖xnz_mVb|x=XĤz*ː^٪+5Ydp@`Mn[:A5~zքI >4Q dڭ DZ0B.H隊HwH|~c֣|bA<;sVQ0L#\Mͳ #XP jp$˖i'ڣD&bj8~}2 |dCl~+m!>LQOֵTGK#dcϥȎy$u5VAڪI9SW~&wLN8Ž?ԗ;1>j eOJ=sV4ޘV 6@扤PsU.PPs:fj;O#֡VR  dGFd|<;yUfvv9VYv'ѝV-(mň?Nje 1C XI`a@M@d>I#ShLw+K >73I6# ΋Hn+E¬r\検kү_3[Sc=ӴN!SQNH)-Clm(wmݳ[Ъdz$¯d jG,r4^D*ը!Kx rOF1ưB]Er1nv=la*ޑAʪVD=ϭmۭ!p7ZPİRT% ǽ!P{GtQyw}듿V(&k6Lcށ;ՋKm$aZY#$pqQ{pJ$c_6Viгb,d`bS['yH ޤeT͒yRKn"]O:TF ))/3›cT$7z+E|S+'Sx<;TdVV3up:`'$ <՝7T$gOfpW=+W0\^-,{U'ϿwrM}ȁONٜti6RGj8fMV$E=iF* 1D*P.ʫ=j,~]U^"ƶ*p>B,%B~dq*+e@O $)47s뚂bFw9?/˄pO4٠`c+۩ca!i2y~Tx$VyŏGvvvKgbǨTk.x0X֘<ZDi 9OI{r{jFf9'zS݉&wf$0).W21lp8bnFj흴VyqfAv_4g ARp`*}JXݪ['2_´hNָU:?[Vl֋6ޣ5mh*})ɻn8)C!=(e~)b5*=PmSԎ2E2iqP}+SIQU;:os' k",z?i<.Ӽ/5` qU¯Uex #)l.y).F1=&O埛dT'/GqQWF"bAc(jƂ8?AsYytz/caLRT}ːO<6FAJ>hCNh^Ii5[QpI/vM1 (qXopѯYrN>Sڕ"3rTm¨;2Bhu2yңHyU*#3w5%ڄ#ʤ:F!%j.t ¡~j2I8f~ֳ݈& 乮@9!\V[]竚u0{/Vqsn0j}mT͛h*yK/p"AR ̿tJNK6=IbK3zV^KfrPKF+wE)$@}dlݪ6餓P'3 +:Vۮ8;]I8ܽB>fӮթȖ@})ײcgWJcQPM)A&@_C g!߭Glźbێ>aUL0=@φqK͞zR+K7ZErzU;RHђH+PC7Lt7L%S'cU┇`[w.N9m#8UM2EjF3Djac~3S! dv,jC$B v5JT0NBQU?0 f'&smnOГVϷlVT$O^%:7< !S#L5G\p;z HA֜BZQ1ޤSANS땀7j"(̇-l x9aAcw\er>iHh ).fsʴˉLdSi`{U/dB[Œ(5cO I3uOc/nmثVBgCrbʻ99 ,jBـKj#5NKߕYc7rOR{U"-{v9HPX"yU5KFzsƪiIx(2OSsU1mר*ml2?W`^=AlʳUr [+n٭vr}[N";Vr:DAXz\;fy4=8fs=]1Y!IxS5~)PQ(0$*\g82q#H*qy8Oֆ5a?G/xU9UwA&#RZI6g}aZ100}u0RC`A!V*0UZr@ ?ZEéJ@Iw5"FQpV/;PikmJ˶|gPV($?&Hͤ.K|Gl\rwsQFa x h2jЕbni ۷1۵Bsj0 f\M.3֛+–rIj5@GtHT&#rUxæ:QLJ չנ*Rc-YE8wghvln#ϰ=keAlC5#gJ69?LDWiJЏQ d~V= 6@gGAҭ[XƩoSѶPq-Y֫NNy5j@N D 9$R97Iܝ;ӕA;jECT]Mcˈǯ5SQz-=bV'' ǷGjމ?T,lfXmo% @[YBZ&?t@_<_{ͰV\'>;3saj3TjM`3c"XIԒrJeC7!M.O"_g3(d",fN@=*<1aiD)}*DwLaȩIYI;@wlڈh\_vW7.x QfH;lai3+,G@"#i̱W/M5[r,h 1 JK& h+ד"m7#=UnG#PXHR`VRTVV\AnHȩHn+I&T}>JFf:u%FySS ido,"-`Ur=80zS| :3fCoŸJO)n'kCIH>: `9 Iݬѹlȡ'F(w{j2w^sUTI^euE T_Z[6$ioYSy\!{"{8l*OJ6e=[֤`Bey+;lr2E0MpF?5 + ۷MfjeeGx8P1+GJC ڸ⧱j¢> 1 gw9,@P˦.?Ɠs 5끊Э0ƒfLw8VBe~2kr,$Pw咜~.ܹ =h eMtg e HF:dS2yC"mrM8!ፃTMp>vFD+厘Ubd]?Gb֝u/GbnQr% ,sA-@9 4:$En yi©Pʭjev[P<6՝-8,:* "v`BQ*Θ=1SI?zWHo8M3Q Ov,nAvM]|3#cpdr*fCgVR%s0jUE1tS<0-q6MPHi0,sS>D(es!+6Чr@,vq(qQC\|6* s4blM*T7yTK(ڡZk6ߗT$('ds"$dkz(b7pee#2ESf+- ȒCxf ΖBOJʞsxWyJPHqvTiBa9a*[xiЧ݅:lggX>a% +lST9)C֫jjPeoxZ B%^pH9hblwքҘ֤,̪d5;Euly|i85_q$nv+VC()+ɕ=&F;Vmte *xdž&.)yMUw?1E‰sSa_&6i0zR'ԗQؤ*Iwi0;9ɥEfE<8ѹI88T(YtbTк0Z6VץKR#JHTm͓Q2aJboAڗZb^[bE5UemjbmU.cwgڠ" 3C|)$(J1cEǎاEvvunbQYYVC6)=9FXUm,rFQ`9$lsL~Gieo!6~,Vos̮*mn(I}( 4G 6*ޤZ5 {A5 Ky~?T{c>RT A¯50t w$Ug-K ;ARHqx_7o<\yX I4 LgԅSU=,ӎT}AU]q)M6YF6R H9_z%IF0s5Xt⨛ybV}qULەT5$ U5V@no %zU{5(T9'j eoO^Y~]I }zⱧK+Y yTnu5,_ubgP{7[ިfs6TI#5=?ԷA#Ӣo4b}ԟ zG' in8ggޠ{\KxH̑c 2( RLl~bcGq]Fو ;#YӐS~b?3\򕾝[ý^JxvQ3P1BrGF RsRy4s?ֶmGS5iQC bCY>VzOL.\ SRpq:TӲ]q'dđh||ZK2INqԖ侕SQGGqUى(ڠ YV|T1MpFOjj2>cz [XFFZ<[ewi)Vfچy$3N2p -ĭ!d8$vrƖq 1=o. 4(6qgEݏߚgc{(mPnsU<}y ~I{j9_!fnڣ7bZYT~3Ts9V2F՘TXjLXmN}j^~]b"f'`n>J1NjY|q*iύJ|qRGXLOBtc(/ODPal0 6(Sc]EOz{pphʅqDXe#L6{j=< q;e듚z5by'T>da99&ܠbH=1R;lm,Է#cGKtIGJ o57;|#Jj)ީ^ߺMW3>Sީ=Ɲ*|e; ZbG#[[_el<ki 6Q[6W%J}1N*}J/z 0eAnYȑ Q$jg?ZjdseLgn1Z6}hH|[GǵC+q}&41 px>AYp0AJK0<Dʼn;$ʈzj*&?5mofin۔f\Ϩͼ*C͉dQV^p1vО+"O4[qǵ9?ʬy 9:fzj)ɴw/CdLP;3ޛn8 6ٌhudy7Q*Id䎔ZFyysUs5[0kI ^1t$ʱLtۏˊZ\*.R 9j%rsN+"lAJF=zUؘ:py]ug"\["DB,00#Brˑ~Lsޥ\0O׭ (m Ohi,ObP^)J+n35PӺO2EJ}qYQ?ʫt>ccfu_8?ֵB.-4pɨ`%afBT㓌~B"@`:f ]^&1J{>lg ;F: `gZ&L7d4!8ҥ^8ħqb8lqUJMxɷ1džaژ$yyjcW-U[DvUWj+hsqg$_O"^2[AxqQEH c}M P0AFn1jyQaHSjYc+lo0?:dqA1R=KK}#ۑ1ާ(*Ųs@RqT6ff8`Oҥ )$LnS0}Ery$Q vj#El;sUTl8OZL*=R0o+WFKm& q,Ѽ-XzU5lS{~ZI`cֳ4C6$2+`v5ҷ* WSϰUT'[ :GF8]JuA{Vn]P\Kai$N Ʋ$e"|䞵tRp t G%Cm+e2*S.QP1;U NPIBjDMN墺Q;6 }E6tY$8>⛨m6pHOO?JAy5^!E4uqb\ީ Ui?҇E]rMu ꋹ(GJ#$+6hC\`*GEMlRr:?b\,oLV-O኉Xx}xk&WԷXCd杨ƪ"[vXU`d,BpGzjTpGJ<7 P+iW?w<Ջ/|sޥ!S0 AlEPw\T{ڀgYTNw/Oy )ޥFA~G,Ƀq*ܖ砨 b=hd.!z5*>B T}̽͵9Iy 9<ݪ܅,iܣ*2=v#Ƞ|HLwT(噎e Br*D@>}k2*yKGV Nے)W8#{T 7A J9`U^@W'Xѱj̰5z'bI}%K&tT,I&3yd6x !K]9U;n՛(\lw0qhbÁU v ?A;N2VuJҩٝǸqZPȰ`9?jiB9[l3[!XnU9#YhZ$eN gݓ' v5E+.z63\e8؃ Hv.աظ\DFrKK昃zB0Q!\ Ц։p`ʅ*Cc; Ok#R5(FPmYפz!QsOnC2=3#0T>7Jr@hvº|:%S\h2"c0J(!Tz/P4|籪2{U PL6>iuqvajvA.g+,q@PɃXCG?ӎj֗чJfi؞Uu/J}A0[ݻqPڦ{qP&I$.Q崛'ٷdǏ3RGJ~l$96ih `sU$fUR=1#l`#$jq*g=1We.F{O%_#T&9!?:ڢ+?j{$8aUkDJdr\ $iS< jHc4pAnG*@NڤUsOv@[ʵ [{ dqз4l} WќO2tmw!~:0/&V([yq*)?A]F{*i}^] /Hؤ 5{qNwTw Ūbxbr d9)1w kpS ϝLPw}qcMU{SDH{m(hFJ|(sa1UB/6FG1!OT6 h0F#h=)Id NJn8j0Xޤ Q.GSݻ.:AQb&(FiI]V6 "1aSevn҂2`Tck S1P~zs{8L8 ;l1W>bE2X`jhS(xC zeU2g Q4e:B93(%AQ=҅7M (A9v#<'> i$lM*4ȕzsdaʏJjuF9GMy`WHp,>jĆӓK2Jvii0T,xJ>$FeAP^jMq$ 3Qyt6HFp`ʍ84"fyS&wj eVoP)?(=)$v_j[?Os깪vJa=qKiF˖Ǿ)-a <HڔfX6W/%0\0G6Y7[~v3ߚK"(#ޛ<ʸyHX\hT.# 8 v0 g3r ^4XMDY=M;L^/#"fXe hꓴV85vV q=*DsX ~y5!b}^I*ǁ.YbL׭=pz>#Lbc#'YIrk+ܵUXޢǚco*ƛ埴=B?ʬK/g&<W@?OnBIVA_i6I1R"vSR[qҥчe r]vNvUЁ8h>Ҙ5#zg,L :"rd9-PBX8 ز/?^k!#E<~NR>:U07ʱm9VQ*x% 3{›n`%8"^d'Q~9WlGwbGӽ6 $:~FwJL5VVmqz$$lb[P5pwp)H#ylA⋉Gl2F:{I<߂8w|W6nSox%c ^\]5!V-F`0DRڊ94oE4[7Ik+?6- T{V95ҳcV+9MbuX \z(g?yA{rpjg>F3aLunPp' 1cOU*p>^f\pU Uimw p Ԗt-2{RZaBw:MovIoI|(k>ֵ3)*ݖppeI֮XT}~yZiiV\d̳Oq.0Y.K+ di8bxǘ#`81 H=0IJLǓ&@lǘvB4<-T|Snw,Oj q)uhSzgӡN6ss4xic4ߺEXB?WS ̑{T7C˙WTi]FlX00~mmSBLN㊣nF8j U\u9[b-1vSH *#<T5_# +_EE3s[-Z&L2Z(wfBA| ZxMFG;BsnURnENdfx>lG((;º  sQ@e>D&:pMq<9^q ocZsD˱K!DY%Mon?#R'$oMx]l!hjR4=]T\o&c=[ ~ HYLfBvH*S?.*dr,jY$/P o$,w^2B7,X#O2bҧG 4'?]7̨ A>nHrI;y' 1 @5z o%{{SJ ~Wlvէj~Yq;S S͜.^ A-c$*enso{|楟pPdSV5ȯ :|Է/1W9jWzQ]3 "(o<:rVصcmqjXEg<%@> H) PI n^6H;O`j)$$ =*, RDަ1$RU׭hƧ$mڤ'N땷xes  $zݳI媞Ta=^J6ks 丷S( 3##I} PfV{!|UvJ"@'Ҵ5k_*fѻڮpjbdjJ~\bp _rkFBNrkӑ6溍"w$i47erc;H⳵50cwzJ(N >RVFz28ҰrHCF~ZtI'ڬ&i|TRdl9"ug'I8Y:ӿY?4D7ըSÜn%)4-NwVoh]#q׫\@qUf'c]χ8YÏpjWthQaWUBy,)J#Kb[tINư48\` \98Q*-^*ôچiNjd"Sq9rXSU JLrEEt8f*X#`! z4B_ IjZ%ˋx9)qI#\eRF8Pwj2RT''HWOjЂ6Q9sV,-'_CVk9'ڦ@9_>ve[˛,`'*ݴ1sҠBd*w>RIlI\]<)J0PN=qmaW/Qc0?"7$n?3y81Rgf-O %O5ZlPLiK3J2ZԩWB #je :ge~pk݌vMa]OԊCC簦("1ڣQ\@@2 "|n^Fyclw\Su+ g ǽLTmUPo-Vo#h<6s*{`9$S<~V+cžj\x?CR(n;%bŒ.vU}[ yQxpi5_]ڳƫ 5_V HNFHN蔜,q>@@\DmG~ $y7/24FC'_ϊKawtD;>F?ʴ7HcV֩G#oα`},s :ˉ0vM\\Nvb~5gdjI>ZZW9I}ۜ [DTa9lAʕ#ԜMedßT%#+9SҪ+;P9V|LvzVdӺJ@lQdV6~ec3+8*c52e9ֵmſ/"֎ZNdZZvN0P;TF("':iA>X&*Xo-nH_, bQr(LyҜ~*Q1񌜠hoPno&_C=Cз5hG;EC1^$hG* ?0{Emk#.=jAn=f[ HU['\0I-X#̬ 4d<Յ`a ÜC3< iy3ZC9$ъ|JcYÙ[)ȁKq'Dqfp*EƘ'4<*CWw5I>n ČVQU(ui+`X/HT8rGEg_H.Xz/Ҩݿtq\$ Tq8RȤGqS`{WCҭXDi S&q#=j8VP~tjBT҈i>o#^siC =jp[*8ǯZUSEc֬M6SmP[Zی|~_i"zM2m㠩aro"YGޭc1^b򀍛0-@m`2 qQ?qȥ_HHޚ r1i0ep>j1aƒެZ1*1󧯧fD}éֳ Fg5$.֡zf$L`cO=vZx-=!?X]2:bK}S*NWts棐MG'ȨdsLs[pj9տұdi5Qg n;ԶHI$._rrirJ2+V-N*tʹ2ET[vcDí3X1pX0|~_Ēs `,\wұ 9ny~!o&1[2pq[ӊ>aJU G`R#n94}j8_'Zdɩ2ݵ9* !IV%#^Hζ}>F!jXlکmg`o\Sȭ D ֌}BA-b bm;*$?-~z8Ԛl4.SNo[WEI#?ID\nC/] "ҙ&0+#yB .}hGiwJ>⦜Y*Ŭ[F*.}jAR1? sXHNAaqYѐG2lBO6FT6wڝ*C֫ݟipjmW1W<$=zVj8MK&@W$X,/\̈I9b?*yP*qT psQ=O:fd8ASsxaRD|ҟ['D>bG$ChFFO& t|cYN[Pۣ)S|ֽZz)&ynf_ JfIH=Fj-j MZS @\Ӵsqpp1afc0+%Hݘ: WGx3p$ #lȮfVY\T^EaH#cýQ{Eܭ@mZ瑕#"KVbz 8V;GҦ$+Sd+!r6Rg`҇n21Klؒs#ҋTۺ㨢2KdB0~&pw~&R9G68;UIdNxP7#R8W.No6x֬LLYFȠ4 G)֒\cikZ!MSj'uQ }j)X?={0: 1Oc[d~! K(Sm}j 5ZCꢫM$z'x,ΐc5j!ʎ*h ڤawȥwWoH$R79Gjp֠ 8a\C#nブ]|e:sI$'h]LBg{ӣUIT.xYYV[Y.m8R96d2Mě(Bf>Ocaǯ+ex#֦;N idDȱUh'\d%G奤c 0G|Ug*jk©_=PV4=j]10L1"\*#5kۚFf xT*wc"m.sP6TR.1MUj"C!Wo_Jv€}*THm,0ƭ,j1ɫ| 8%p܊k0%wn=rǥ& ^9 =ɣqd H[$A1}Ĭ=N< ›gRGH?Z6zd|ѿ|$`gнLU#ڮ\TPHcɎ H lpN TR9LH<ؾVѪI6<4]$Ż r@KVQ^ 7_|q])LOٹ8@.6O"a|уb4- ǔ*AYm 7A*;P@v: dBqtLpF{b~R)"#$5A߼ic]qOE)7v4] \0xI?vx#?0ǃdڤ L\#I.$d9UؖnF'Ztf=k!(YKU0Wy\nE!ڃynFVn0T:) OR@?1<~4y D1F}XHע"Xvơ䫰Uy*,sRL,ʋ`y{Qp[߽[[QŽY1oBU1jلaYKfhf'<5Q͙YwD1UYZŅЎ)0oSB{)_٬˫.(yZl|ɂC3/z{a6̪m XMmCni\9[+.3~^fdv*+;CY*G3[G`GP"sDunGң|nҰnuGRG Ri<Khi. kU_N! Ĭo|c5\  $/ R;pzOX/lv5|3C (' R11{r6r0=t GMbponr ⠖o |4 Li|T T圖$/5NI THy' U$_!V%$qV p7U8L̹CsڤN}iL9#sǵ*Hb`~*Hc9JI00*å$)8<74\0'֖5cFWdq^b鬪뵆AIKIT+VgI;vTnSܽVͷ<_ys܉~fstcS>՟=KSmN'7Lmjnװ}~J6Ӭ-AeTQZm݌g;~<p*H דҦpspE=lݞAyH>(J=*ƚ-kAAWS[J5n%h$ 6ax;.TpFYzͶJ@u,1Py|m+rQ"hd<`/HydV9*}* MO~dZK (Bpcfd*D`Pw$qz oPqQX'UYҩBCjD|Nj5QA$3PEr7gt$~(hv:A8䃚y퐣`m`̻m$~@4H6= R3M6>8myޝj;p^)#=S24|E0d*#dAO O5_:TR F{tڌNe}xm9,5UoѲ{R[u#%. }6;`CnKzӾJwj%ГEY,Y˜>vd}juuA31]~Su5rO|ѓ+YT!5oDY֮#,j9 x\T,=*Λ]14Sjhպ(uwdc?J{AECv\L}Ȍtqq3p jijYU!ēΈ1[|eCa6j'~Rp1qV.F>XظQCe7- p$dOPwwM ˱>LG( IcKuS֌EG_jhMMiD8 h%G4$sY1ST C"ZEݍZҲcZR2AV9%6lQVŭʨ=@W>>3m#M[TwnձGpȠrqL 2)7t؛vW.1_ӭ:sA>N9=kXxLVm`~vVDzqP2`vRyw_ݦ?Vƛ^jڼOjNGҴ4K7 jjRQE 2=ANzȹĭ ҹ8w'ƹW|f@UsJU86}yZG02X,e1njj}Sސwiuo+J8v.;sUuky׊*`ep:w%Cd/NXKnH)ɩ 3iCh/cR>sՖ9'1JIُAL/~) p>v:U٤38 ;? 3ۊ̕ҡ;d?JH7LK翥)M5S%sB2(JtG1O#HqCT^ g>9>$Ske1nezӥrZMy\\ }ǭTV,I#=) 5fBr)oҤT\_.W(jxv$V_Ҵ8CK@}+KTVpLZw2(aϳR;:q ressW;5}b?$׵[VG 1ƓqmqrjHF?Z?L 8hh8 ޜv{ւcV.{j͸{sMe* >-Z.M!V57VB^KuzJn2ƾ{ɼD{{֎ơySu4HBA##< H基X*Sm=*5l?'Axn{s[q?V>HuZD!Ti@\~TI ?*.ޠpDUhLV`IaUm(t+~D(wf4JF],,hY+-f'RYI; ci5V2\ñqU[smV"e¥.{9UDT>5NPiC|B>Ցs}jIcX,~f4hR0s);T*Ơ$-$j>Y.bo1ڝ4:!#v>ZT<zUi1A*f<HC gʡª⡾By+ޣRWqDr9RbdjuWpGxfȨy9NLgӇO_AJ4Q`SOrG$T^:2u>PN{Uy>IJ OL< >aK qJ܎:A=:p~4:b`?wnI 0 &H˿_j6.ҟhc#3F-r=GJ 섗8v\=*Yr<¬UcA@s2(AIJ"\q=9318MD'aLޫg#hNj+(L0p-ܯ!RFZviS"_8>{u|'֮-=cI~ut&PV?Η!!>T.mČ:3g*>d̓l}(VK;C*}>kP7Aq,0C~tKY@-hK$e\y|cOUk>Z72]1בUnvڿpsNh+ #*`XqT4!c Mn&pW9QEĮoOW#݄N«Y6ۤ=Ϋ۶&CqQ[&SYZV=K5N^Lw-֞ /қ+F+ 0ew O>Ioc0 p!^*p+( +▖((((((((J(J(J(J((+$i0ryp(|r֛ʬь+@jĐT v4ƣWbz))oF9jff{UW\Dϭ `+X՗ cjIn8ZY2IU[T o&>tKFV?ZFwD$3]]IIIIEQEQEQEQEQERQEQEQEQEQERE%RE%QEQEs[2k @=k.qPM|/רW`AQAR\/*p?*N]Iy\f(Tih w4ScH*sڝlȁES{R]4xnqJ ˕)2˼RzRNB{F/nv2=*ׇ o='A[emSV 9UkkkSQEQEQEQEQEQEQEQEQEQEQE-QEQERE%QEQEs3 9#jJIrɪbњA|P a.*B9 qJ^?Jz y6' :;AU瓟,v؁iH_z} Kj[8>W>$ =OJ\{VEr瀣Xk.9=W*=K$Gr8) 6D 0QAF'{ b!Kn~􇏥"DzןŶPN:w]u>ɴb nJ cme`WMgsI0Urm@@9#"ZZ(()((((((((((((((!L\pbF@𦰞VD =*˺@s)g #*{Ui` UHpN: 2n*B$GG\ llU'Sɀ{TlҞs>ޕ ϚFqG\ U[U<5H P٨i^8.@FvV R%Aދ%Y\QVTYK"f9\~WK]((((((((((((((((̴In1ϕ} s-raD:{Fj\o'ozQɶ2)힕Kj"ei۷Z6S+qJ(JZBrX=뜐o !bdc}k@\3wILKXP! p[H(jP#pw4LԛBU?:b3fQ[Vr]u~]P?vu}J頟c[UZTQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-VSY޼| c5uFxOjNJf>P~F^Y7KϽs#n$'$ l>ĒZb p99Lqp=j@ 9R1>jTpNF 9'j=j@@KuSfn2MWrI]\6`u SDg5̧Mf5Zv((((((((((((((((+&]̍W&f<9ݕ#μFsl7ʸy63SyQ@~P)h((((((+r΄I,95\sIh?BGp;9dzQ 3I#Ǡ; ,x<~42OZyp=sTЖw59lUr\ҤKq< ce%23K aek1[xR50MvDĨ 5-IEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE\(ĞsҸy'zW%(^Npj' >[̗AM"4#Z|`00I=)>P2= I**/bFd17zbL廏J45l$H5i1>c]EvQmQ$օZ4QEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEr$cf fv޹14W)zQݺLʗ㔒䎠riy1d 15?2G蕽.^AC%o mZ((((((((((((((((((KV|\4# '-\~6v2HPr>ۣ'x"2p8`9c'ޓgzRvF#i8S94H P:~ 1D:5tU(ٚ!0@mH2hT5QEQEQEQEQEQEQEQEQEQEQEQEQERE%QEQEQEW+3JD1ڨm%~zE~4a~n~5ؽN'ʼ+eSGֲG ҥ )}QǦQEQEQEQEQEQEQEQEQEQEQE`g sEQEQEQEQEQEQEQEqSHČ %bpOeIa{ Nig'SQT?$71N/Ul#],logya)!p?o+"2&ןWSFcBsz`~^*9})Y0qޗ>tKEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW ?뢮(Z(((((()h((((((((((((((J()h((((()()((((((((J(((QIEQEQEQKEQEQIEQEQEREQEQEQEQEQEQEQERQE-QEQEQIEQEQEREQEQEQKEQKEQKEQERE%QEQE-QEQKEQEQEQEQKEQE%REQIEQEQEQEQIEQERQE-QEQEQEQEQEQIEQEQKEQEQEQEQEQEQIEQIEQEQERE%REQIEQERQE-RQE-RQEQERE%QEQIEQEQEQEQEQEQEQEQEQEQEQERE%QEQE-RQEQEQEQEQERE%QEtZ(((((((()(((((;QEQE-RQEQEQEQEQES# y=){)QEQEQEQEQEQEQERQE-RQEQEQEQE-RQE-RQEQEQEQEQEQEH9EQEQEQEQEQEQEQEQEQEQEQEQEQEQKEQEQEQEQKEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERE%QE(((Z(()()(()h(((J()h(()()()(((()(((((((((((J((Z((()h(((J((((((()h(()(((((((((Z()(((((J()h(((((((Z((()h((()h(((J((Z(((J(J(J((((((()h)h(((J()h)h)h)h((((Z((()h(((J((((((()h((((((((()h(((((((Z(()((((((((((((Z()((4QEQEQEQKEQEQEQE-QEQEREQIEQEQERE%QEQEQERE%QEQEQEQEQIEQEQEQEQEQEQEQE-RQEQERE%QEQEQEQEQEQKEQEQEQEQKEQEQEQEQEQEQEQEQEQIEQEQKEQKEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQKEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQKEQE%QEQE-RQE-RQEQEREQERQEQEQEQEQKEQEQEQE-RQEQEQEQEQEQEQE-RQEQERE%QEQE-RQEQEQEQEQEQEQEQEQEQEQKEQEQEQIEQE-RQEQEQEQE-RQEQKEQEQEQEQERE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQIEQIEQEQERE%QEQIEQIEQEQEQEQEQEQEQEQEQEQEQEQEQEQERE%QEQEQERE%QEQEQERE%W ?뢮)h(Z()VޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎZ()(JJ)NZrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2袊(((J(-9{ӗ:N(((((((((((((((*:(((J(-9{ӗ:N(((((((((((((((*:((((iN^u:((((((((((((((((:)((((Zr/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQETuGKEQERE%RE*/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQtQEQKEQEQIE/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEVC9#D7dQ 9ZZZ((((ޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQu-RQE-RQEQESޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQE%QEQEQES9{ӗ:N(((((((((((((((*:((((r/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQtQEQEQEQEQN^N^u:((((((((((((((((:((Z((ޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:J((()(ޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQuQEREQEQEޜޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQEQEQKEQES9{ӗ:N(((((((((((((((*:(EQEQERQE9{ӗ9{ө((((((((((((((((:(()h)h{ӗ9{ө((((((((((((((((:(()hZ"+&sEj$H952"NS(((((((((((((((袊((((ޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQuQEQEQEQES9{ӗ:N(((((((((((((((*:(Z()()W9{ӗ:N(((((((((((((((*:J((((/zr/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:(((J(/zr/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQETuGKEQEQEQEQN^N^u:((((((((((((((((:((Z((ޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQuQEQEQEQES9{ӗ:N(((((((((((((((*:((((rӗ9{ө((((((((((((((((:(((((/zr/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW ?뢮((((((((((((J(((((Z((((((J(J((((((((((((()h(((((((((((((((((((((((((((((((((((((((((((((((((((((()h(((((((((((((((((((((((((((((((((((((((((((((((((((((((J((((J((((((((()(((((((()h(((((()h(((((((Z(()(((((((((((((((((((((((((((((((ҌJ\J0}(4`QKF>`QF>`QF>`QF4`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>}>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ?諢((((((((((((((()((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((J(((((((((((((((((()(((((((((((((((((((((Z(((((()h((((((((((((((((()((((((((((((((((((((((((((((((((((A@QEQE-RQEQEQEQE-RQEQEQEQEQEQEQEQEQE>>>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>O((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+ ?諢((B7.3MuW]Ȥ tK^+d"prsҨM}dt9z za؂"x'ڴ{0öjԠ7SKpY% xEM298?O@ ȇ5ppzQI BNi嶲0ytSR!;d 98Vc叔<TWs #;),Ʈĥ–csըԱ5e$O8G!O>8V!ON󂓶`MRR9MSSsKmpB7bhFqOV_򧹫- .=ᛮ@/JqR+ q ԊOa`֦O!{T9CXu ;t=}1UNyS5#9=x5GP01qT/&ےUɊd^oƣt 5V.XOҪ-ʩ$ɭ/#m#ڵo) 0pTl֧b9}9#*G֪]ɍҏ}*ÜGJ;{Ly\Nsҳ>9޳v5y8 2[T4HBg늒9#F( &G֡f;Ahؒ=1 YxFnW#sMs?ML$J3"ʹfTfCŸ?-Y{t׈yҟ psRŃ2?:,Tvis" q?zF6>RFwxiIʀ;v;ӰC'NU!cµ*X7Ss :n_ƨ[rnypgo ,MYP:I+]=1Djе$yU *.Ań]5!2id%8"ΆGqR!>|Q8,w]uEQEQEQM?{=3ܘ˜%V\ڜzN"Mòw xFM?TٙZ_OjvL D>!%O k^-N>եy(QQCsd"*,{nHaGAJF'=sOeبepi6d攐f# OܲJnaW손Q#wPUzM*`24ʘKk<=r;x9U1rCޓ`RVt+)K^j e9FEDł.Ab:inv #Ɇbzhۖ?J};> =@掅zi`<4d.lդtb2%pHȫ*"1cTu=#8u=쨩,p1֩ZKP{Ve$@9T+" ts$'9 ?֌O52g '*Hu+R^ʫlwOGAn0MTy?Drݕj3 '>aF#;U@u P,dtw~F~4b%fb!FÌ )cC)xٗ 3H̷.OFl-lqۮ袊(()é銥'~]Yձק y5lD(l"E<(QN1U5q5bln@+2L$Up<{{T!P dҡ}9=)$ҝSJn4k1܎A;`)3Hi̙ffp~ce/3g>II$aXh >`qlު<9HO@±*k֭in36_(?}1SxO?cǃ*.o$}k>dsbd/j@$/jUKddAUniq*m) :c:0݇U0C,d|NO&1Vp:lUqdC튧8jfC Mi"~YyWD"=zY4 /ʮZk L0WZm0U[ZZTQEQEQEB~9'j)".@ޞG^r==:ԞO* ~5x+yJXd#|9oyDۃ0F COA39T[62 FL0JئL7 |X@!0~=pP1;r~jeAsXL3bN[*O+'zI9@;@IߦhKGaA'Iv֟Wx.r v*JĮIHČSBvWR*6}H:TV*=>cRHX9V"V5RNq*9 Ol%pvw ,g#UH\*夋"dpA_Zf|۸-d̞u0/12E3Ro68ʨNBn۟UEnW{sMzS{qjVqǹ|<5>cϽ$3;F'Cٹ‘y.ލ r8V=j0'MӭW<qT^KK քQ ?(w[Dv\g+R5z;e5h#;֭DiW+^EQEQEQEQP\1kG(0=?.hFU6תD-:oxdrqT3̓8EE." ҩqr;7.%`8PqZ7V$m.N'"l_Z|eA, dؓ6 ITlɖ8rC|ڷ$'8a 'FUFG0M`0 l"/w=$I U/gcJS*Gzq)szj܌!AV P3@jblRcqS)2GO[pOLylzc1jH5 UU1ߗy1jS,͌TLf8W*L:q52f9 n֊㩫nwZ=* * 0)O 4#R)6P3zsHKS"\|91:cs. zme`G'i#ҡ!aR:⡖cl`Pt[YO} Oda&&={G2dz(QcI3F0E>]cҮ((((9#1ԉ$rjڢsFQ:ysqTd_.bP ,Ps2d1qztQ7 Z4tfuyW.Qi55AmeY0=Gy|c ı’;KLByʤ}[;:(v 9sdVu6I"~m95č?1? OUG'*np#86ޣ586rzդ `Jcv ;8"gn3/5Hb385rGҀ:qRvJ5VAr0NyZOdu5=98ǭKJ&ֵFֵnr>ւ9Q71PSaF@9?&0ԑuMd񏚕yUL|Ȉ~p1`gS!#qS\Cxu>㰬Mk0O^2<{VnЩڮ Cr3ڬf+洶Bcx,\SM_Ӣ((((EWWoLz69F^6`+>RF2';Y[h# UF ?Z@j18e8r6;]oZo:LK8¡vxN7K*3[e.0G˜<hA+U :&WUp>X#x $aq7UYg7 !3N~UU]1(8U̕E|玂WQSbN}z$njLt/4h[1,c xdg):wXl=(P{R/Υ O< /73֣)d984-7!=jXAYC'?{)PmmŃ^PZ6]z;;T߯qܰQNl9N|Q&vsQŻ=9(Bt1MA!:n 1;ɧ7!Yl𱒀AzU&}W=S0m$ڬ10J,_98RȏM_/)\ @!ɛTɘy2u*O\ X*4I/g>H LH_ aRH$*MYs¥[O$^ZAV fcH@LvF,5Q$FwY0NQj ge#8_ң&R~lu'LB'{`DH~%5?0U]BhFXV䪹QJK*Fr#LW) '115ʢ}{ҪHW9T0ŶUo)CV4!/ÃDw NzS.c.AAң@hbx~}qPFB8ۚ2#pQ$>iUhJzzVnX;(05ҡhoޝużx?ґ 'ϔ i3)(DP\S͉-aXQ7*yxcٓX?!!H-LOYU*'5QVP9MTr+T"][Ļ^!کf q ʋozSpYs{v *HcCb+e#,a1*1ϥfN cnT#H  .)H36FXdjmr$1S0|UVCF`[zU}Z?f `O_Qo%W$Ҁm'$ᦂ`,U>`y>Բ퐠dOaH}%C#&W4#/k/ВB[S_Lotq[?JLQ'A6:`s?MF! `p[#{[cQO'ɊN7IfX-moٽV'qqF8`M>\Ux܈e ]XdzX")`vRKVM+pKm*Gj? B0 sQF]5b8fz@u; ʱmy9AR3K0 9nchN#=;pHڇU O&Pa69?9s(UgkZ|FgaLsO>n31֚]>Bsԅ/j@w[eW  '*l.⡈Qq07"ʡq07*Hh| 4mT' N1ަR~#,GztlT7QqO![v@8Am$mgWiR]! /`)B\S%P796O."QbyI$|Es 8Qѻ8鞕!@؎*qw M-܅EhߺnqP^ccQTϕ?yΊ|=o 42)obXT-;1 V||@\ Q}_#i!W%}s#FJ,cڨrɬ γޥpV֥b!6$eoz9T2~aI!$+eG+MwPßoIqĀ}i:7CMWee|}m9䶹IpWڦgt+n<,܇޶Ktu8oO\kNݸn_ Ϛè>k2(=ps+)z#dA=v-˻\p$RY= N($]q튵p&0?Lfu ]c~wr0U'ܼs*Nzp)"{20bWZqZ"$T\rjһ۠W#梔nXu勏~$y dy}J8}**N?<I O- i.YhN\MOBb:K;pҧZlLb۶)8bf*TKD /b(~cP_R"lHC5*7$d`G lr}##qQ.Ȗ2yQFj1{tʈ6#XPӶڇO4Ljwaǭ\7[hKu%ݵǭ%EǘàNH eޖ#(#qZanE?1Hku jJD,۳b;™rb}X'$Օ8r1W>Y]1Vv&6e`@)ZG6e!ٸ t;2Fq-KQ~2*{miGާݥ38cǵ`I#ܾ.ǯbcc֔#+@,:tTȁdoqǯ'+|V\WaިY*d\?uVT#gLI$V=!2!`RqWCi3mLњK*}ǦzUFgbK>sTi92v YPKH-Ѡ}Q1ǷK£V\]:ScǾX2nQI*ST:Yd SmFCnxPdeܹmBÒ23PL c ɐ?{*n mmeMdFA=EZnQ' a3ep;6!XC*>\*V`,773tH~EZ!?zlCMڠkX>PN-~I~0Rgo;f?^ؤPĜ/' #1=9݂jO%LLq|ZG ~z+_,vz@L'dcԞ˸mVkg:?M6xb~`l:Dɖ$ ";w*mnቈ $EQd}HsNrHŸ4T_c=e2R0Ʃ*5JfQޤ~̒rO>J}<*Aڣs|voH}VӭM 0yg OgEY"LyI, ¸flHW@>HY]WPlOzf5Uct{YSSݩ!OPsL,J2[#9G 5Q zLRJE!|up};sAb6i-MzR>ĸ|@Qm!};d?]T b5SՇz^XžM2BZY`2>[I3,|?/ݦ;9%Ozqbm`[p=[pA|p{=C/' Q6>`~]hq"n8ڪ rb!'qaW[bR}p)`Iv"fFr}xeFл2%9* 'NVijʨ3i|onb{M1!ϱ5 f3=gJdcc|ҖVxז5ym`NYj !Uv# zjO'#U'<'8F2+59Kmfi]D[ti\RU!wj8TJ{ՈQ!y82.A?BY,; 9U&XqeJp̪x$> "q G4n1jyD>HqV}1 P>|$u gd>5w[ʚgZ$c#*FY¨#JXl4,N@ccKeG8>YBq 3ū*s U*ˉxRMڪIAV|'H\S^M cj (?A;rR!1AXiO|X_ٙO)pĸM7ODi }9&5/H> KC)c~: j˻/aI]-J{AlTMK9!ܠm H-=wj4v2pU;JAf UGlpxEX2}k!nV }k1o$ &Cq4젱in<)$3ZBҖmDcW ;쨾z_n͕g::[YW M;4`p{X=gnõ:iU,ڬp:#kR+=96OsWȆ5!N0_jΚG0QF5FTG\pOҬEm83\=Kr";5 TjU%8F{8UCNFA[z%CR|{ Xai-T3>H=F^oQcjپvH=vU~oC_8d֭iX?ΝrA~a=ְָWO 8N{VsXޝ.p Jr;ҐW v 7A~u)?B>ier>9A H}jR[y ;~I%BI栶Vl2׹ԅ(Y[)Jվꌩ5v(m6M,y)Wm.䨨mBPfb*4$4r4΍;Q?z d4`2`yIqo$[Y\C$`S, qd/j݃Êlѥj),d;қTCpp7^HWʔQ ";Wn5I1 PӭMzWMDGFJUN)U%NY*AJ\·NiE/#1?JU2g*dz'6I73˳݁ $gU;KaAQ;rB `SD|Ҥ0+,<|hvc>UDm,p@9#yk]6:#7vي*P-ɏ$ƻSG9_0NŸhPqZMyB7c b8o5{^H->cP:SUr{v$9j(AщcT2,6adY\1ƖI^g Qݵ۔aTc'Eqrgp0`##۷U)cNOӵBpYdv§[r#^:TIrV%EKiP§^eTH5 RKtV Cgpmo#sUq RްImzӽhk {LIսY u$2SVS-XecYrzSR˱xus!u* 7?J2V[|18P!b)1vOAS_59ԗv[NPCKytsT$+xF9If]pjep1u*mI5'b}J`^X?bǵMo02qLvL[*l?YO#<,84i#ɸeJ?>+]{Y}W#Ic:)Ք#ʣj5PF˯%1QEg8-ԵKmF:RF88Ҭۘ% yif, qDʲ@P\̞b.sP0eNC}H><Fnj5 Dn2jY 3H@ \s+ 8SȘ v27jռ oo;y;Hݜ>YU[tV,z\P,{ yne2#c`jWRUTOj*I=OMV)0T&F`2i$P1?t3O?IҢuIgT=8m..w+"QDnNqL e-RIR;l0r|i>&I1I&1I<6:F9,F)X\\NJrE2+9oGrcC:mS[H~n" 4{<֠ocw+ɪOLbbǀ+Y]Y3q=Ē2mGA#a BKt1[M%fmv*A"Y")79i+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ?#8@I=`RcSʈ [tԟ8?.j̋Σ9yhJ# j4DU#֠uTd'\SY\KiXAu?.GǶj{]OmY$lZcIvеj[;|ű` K;$a$EFЬ`S-[H yY 0})|߸4ZՕPi0,88AjrJ#\.c<004G} s0(X%ezoYo> ǯQH0O?LN88RcjRrN3070_7-2$(m?Lm9bF$)q 8J];Tr*-"l|)ڛ PaSq#^"A  i$A؃/C<ڹR fXM>FRF9݃SiFČO,"wioґUR@)ÚW g'^iَI0 =LR\q##\ޗsDN)wȏwqF挐I`n 3  ~}ic& *0}8\`?p_oLT p\:F]>+G#Qds=)#Y<Z'aIeʱ+ lzlcU;䚯16g4؂9s4y>O9UU$$Uƨ(!ɫ ҦЭ4B<ݼ#Rݛ'i)ųIީ@]\˖YW&ݒTEMh'x˾v®C*rX*=CyQ0m?CVGP.Yp}J0Cf}j{Rè)`c v.p˽$\ɟL[و~cM#p Ԝ=U#:cl *Q#h FGjg'`%JۑmM\Ʋn1NE`nwU͇iom S$22;p]X(<E[uPEYp13P( @wz ~620'Þ d*ÚXʕensN^X`朥# )An@?JxY$bqNHrUvlQ8Nr]dPPKHӯZsϕQ<9)Mk{eɩ-)@Df2}*T!s"cL Mj}Ki@cX88unAC)}mfr͸[`Œ巹QaC%Lsd/T╲0=UmeŏQ[)>*V$&}jBz *pB RQڭY3(˞ڣ*;e%Qk1gIMuPY$fBģ{|/q@p$$4mAL̍:cjI!V9>S#ѐe=j9;IP^ޛ3pnzh,>6zbW099H8oQV!0+ӱA繥ϒQ|֓{)9]H;\viD34B"XA9OnRA sF>ː0<릏ignO~*)K `#4Smc $w !n1f,Cc&"w/B OXѷ@40c8$N*1:{H*xSV axSSE`8FKH昢a`7 9ĞV1Qw- Y8(̽NH|?iޯg3e֮݁[dCĹMgcDvThrHNX{l :m԰ $#&ڻEkVGLo5ncFv8$p@QU6b~)Rҩ,yZ%Gr+;pE2BV2F>F0ö,(#ZYˋ VO>, Ŷύpҝ In$ )^*S pWSčdAdXaRܹ"aOEcR+r}j`]{c0~y@*<Z|v;@}Z쑻2h nN]dJp*2I70 q"$l={dVڅsՈQ<i PEF`99-D@m d|1S l.gRv V=EMdQXGz}*[B>i!p=XU3xlӖ`Jd  J %TƩd0cӵʱzQ#ktkvN9UZ`]Xl?ZԹ7ej;vo#C%ȾBk JGs,%aY0$ڕ\NOVD .zT䎭+v* t[iq[vDF0z%cd u]XCow)eI2ATG "E`H"1JHb@$Ҽ3EgSJțI<z) 2 qJk[9lw1m(~lw",o'=1!WGʱOj@6V*ҝ W!szPD09Yep`;~C#1OH=}[5IP ڨ Gͻ?\"$r9|HR},e{ԗ#IGQ l94*}*wi2?\T]SH)AӢQl$'iiEݧFu-/ʢpB(>.}4E!^DHYFԜ(֦0+c _8] H܍\+CMeyZ|5?3knC—U ˚cL?k.fWHᏘx)J_q>$H‚}y%U!TSi)%ّ⡹hٓ|(c\4j}8Q1'y5sޙ\+օaӢ:Uf (*v1fNZB\9X֦7n`0T4 : 3mLsF/@2*7U-jsd5 .=VʂHU?D2Wq)c7pjK zl&xNԙڛaBR{Q |UU@SNh2uc!O=3YɎ" 8j{v$ j͵2e!;T)O c6pRbF |8C0,J[}JiGL)m=I&n0sP2w-c JKg*'QFIU4$F2$1Ap$3]>wd=qY!{o>T iQVtx P3Dˎ0:Ee#,i:c c4aS"n\q)"y#t W@z)V'F|2O2Y砪W CҨ4qAvgo54QP19(j{x.\*jxcEMJ.⑨S% zR#G+O^چ20W݅Mlvu18jyy>G&yrS_fBy *şئmoL*dG?QR-8Wr^P$z/#eREn4q=&^I,s(ƽHb,mXn3VZt?0^) U'v qj ^YT52+/ fIm^0SwB;PP ιR})0'~BN)oԭq2Oϸ(G|*H%vE b; (޹-OvtyQu+e=*MUbX߱qbXh8T#^wle+MXnFJO=:6( ؅`tZˉ v%j|GoZܟJ݁ 3TppU)j "v"c;GC!S9cT0¦, ?ɫJrby>#Fq<@)_9g#oj>ԤF;qU <)f*¯xyܔV`P\kTMVUyVvzS%{J'ץ=d̄yb7 8*IRx$$dMnѰ8Vl+{⩼EH>r2Fb'叜TE>u#Y sYm7 }N楷C43}@YBGƭj(nGĬWqV!Sqm6`~()'͠)+ '9STp۴E9?tnFX Wk9݋A/|ki Ox `[iN[iYH>Vjx +J inM$*a4NN0i(xvT;ٸmd3C{Rm)NŤ[>udFX%$󍆫'fgx'9\rf2:qWR o)ñkۛڡrA}k=.m. q8-ǚC M,pHn{=kk;nhWCTyyD'c:qQms$`w(i )a NXX. q[˵xzCnKmzMEpLJHZI๕ R O i&YTj(n|@»)H7f1o 14dAqpi,`trdTw6w$CoZd]"99;eJ\;428,TGb!pPpF8\[O5kpVFZ9G Xw(ɪ7aPT.Kr}MW R}i4c`nn'żPԶs;42F1Tw׵I%gרSݼ,=U+F*B? fj6oڄ+"BH~l)5 Jn-$F~zwHcUJfCZh}bO;H? ']E(r*VJoK4K&[86)y[ ɸ#x\̅y=^ T IQRqOCqP%wo)4K4Y ʖX܅ェ50DL -O獧ED wO%GMUҬew!gjn[Dd)sAQjHmB @%±臥H"BbZuVQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ_ ?B"W?>N7QA=b8US8VoFF~jiGh|I >61aPAd;?AWŻ2cP*Z;&-خRC8=*k}}J85#Ƭ[[rOCRȈW3M:/`j+3$NveCR:2]QR>T3OD2jкeUgqc5_sR!֩,# HNjcXGY FxAʖgO.eX`ȱ7Y~Is#g#Jw $rq,W!,T$ nXJʴyO,Yvzk<Q'H2\w7Zi~ɧ[pe`C9&dyAjO4mU9o|Ԟm1`!E?C%ݶZry[4ǝrLG MNc,dт%G8=bYi@a7 + FjiEIS*1TpýF6֛6c. cji*ASOEcln%3f][Y^ƅPxٹHM-v uj] ]K$d"x&0SOZUs>&)iaU` 5J_$p85Ra0GCXr8l[3GSϙvzUgqlJ5@Q֫s9b1U⍞1T+"^zf+m&{eڱkZO=saAtBF~QԎ*23 ڥI4 Jdd\0xx{ a5#`{fX¯r}gtj5޹`Zw$6TnR6Кsl?wsl#;oyMN܃性 L$ ?٨q%x> e]ܶ8oQLaPjsjK5eVpWW4I,U! qʀ6PV=sk2dWٞF2GW֪jch^I;Vb(yoi2laejCJ篥f]Ȋ$ֳ5SOI2kG.7jS1P 3Kڠr\Vnًq;縫n .߾*2la1LN"&H$+)[8踨rA5"*r  9mG2vŏ"\{ԾYhʇS1nHET1'V1ޝ-B?^<iE?m7ez+.O cҜ g$iDd`~W-E(KOҠDK娾BOe`~=*GF kc9<Ʀ1\C98ۓHv93|Ǡ409BOcDD&HK[TҤ×vȱEN7K?TO2PBO2@FZְƨ[v~ hrIAI[ ?ɩem>!vf|h85(|Zɓqj:LOߐXG1;R̻l0iE;qIviy<6uUȬӏj*{e-Pidw[(DHX5oh^:3+ 8sPj1QInv ,K4`c{u14%N7͎J7p%IavUedD%۞; kkn0BlN:jm .@T_"67?CL`"Cݪw| YS&enwفYlN9zU>]Ɇ A%J\8ߜ֭ H@3WQR5#W,a#@PD>?ZbZCƒUt@:F|5v+5V蕅Iu#Bv25f&eb;S.޸8  J\"P43rHΑ(P3I#M+!cNɸ#"-4-V3S9$DSk[y<3b-1@5ZC(/űfPÕ'?՛hq 9ȓiuUmj (6ؖ5% \l+Q|LdF>Qo C厁FʰNs?A7 ~ A.˻XU :cұ^e"g9_WGn ]sU$+ӣ&hUzVhHXqV>}$ V2&%YJ}ث*R!س;ִRknc)YZ$pd#C8_\c;`[~DqZds@"24CV<"8P7֌Y\d#pAVR JǵH ْF1Ov(cB*Oj̊`?(8ȪI `T94"0JLhg#@ۘyU26F7sUX!$`rTGaPIF*GoNNAj5LqX:yzX;piD>IUI&<P1d&lٻUXY '$<$5Ѷqoظ=+mݞõ.ÕU2(~U.:9qDb #oc N6슍HFXRO,(C=E$3BAQI3 Aϧ5JGPUvKo qVlfAS@dltQ5kAZh@zZu8y>` i.~;^䟺Cv /8TTTʣ_zў8SU#FEYن5V=?V@[YbFpr)Ay c 4Q8^R}KQ=Q(eksΥum&$/ۦ!yUmҞ3`I<)r9$Ag^H,r}jT;X]^l9cVtwxsךZD'6~0R" 6==*%>fg|z 특Y\>1T@@h,!z*瑸O80:TE--QJ8q@Y[<ك%yG=7SbU!InsDV Q"E]dPBLD6HlCbMwD;H3QX]F3#үiU;=Zl3QVaX棲$391vYUcp~st@)9:~T : Ҫc҈ Y 'U)jsҬiV7t${)IǶMf~\5ĊjuHŹSSp#QI v=(-/<ޡO4)^TuZw vN#P)Wi9EG*YTQxTw2ƧQiD @U^ 23? V۠#JeV,+TwQI e]\3(܍YIqr9)+Z EMQSJV #0#4ݙiq)E!\ۙg,`4?(Ǡln؝O5]#Jf9 ,efJe@v hf cA`[uJ`NN)0~lKAPtpՒ953&:!,ـAjUU N>ajj@)/CSE;y5PaA֢t cLrnrFqHzWE ^LvكҤJ((m>GV6v>sš{vd?cXZDYLd 1cM3JbO+̲\sh 's3_M˺/:-T˩LŊ7/t+Kd85z2j"0U1cʲ"1 `B ,d1)(YcNC+|MG209>^hnOȪF|*8Smu6*o6 P j8'&cFQ*k#8djNT<*%g9Ri X>ݿZC Ou=Q  j#Hjj] (nf* q# o0Q驖9P*0#(C*`s85VTH%F*(F9Զ1\DVrc%Mđu]ܭ BsQγ|ޤ)9-7culqZ:<U X_ӞPTH6TՆ@ Z&qjԑ Pв@V#spʐH!"法%*"v M!Aj7Jy5d`$[KyUdf F `"8d;xkVHvL"0BG[Zr!_+bZ2TeZ3O\E[ Hƶ4IK,C*ƴPdL|U{nPU}RVi g$BϷ99Ưu gCE%ݯzʼ loCdJJd$̭M6:"UȒgfZNm㐞scMww lu>St֟"n ߭ n^6ⅈ.IO"csF C znA֓k}Ӟ*Y[|?)m mJ<~81?^`aЁEv݃ڌ[2=)mF*ċSvGN.Nj!7!OZ`@Qn`qOw=w `R<\HMHIDtcJl2y7&څ`;O\iuG9aXǩZÌ{+8|׭8Zݏ*9ҳ7<ZR"ԡx뒦F0Զl'i`k~##WcbKD_At-VnK3\~V4`p:oS[[ެioޫw!MːǡST瑘*3Hr ⠹fr[=Ga$kӡ0;&O[mcAd%66dE?ʳTYpjIO 6Ѫ8[i/ 73A+ d@9R:"/0`\\pk[FFâVLHw b{"T I>x2I>rqBqo)X0*;b=ZH> %.LK皭\4I橭\Lȣ p>`pqQQ@';,$G81 U }ڔVٶgSrH-nz @9+1.*8;M(ʰr*M(n9u2 UQZtjAP;YUW\,6U/c$A@-,!Tg򤑋gI!N $q5Nv*q^iTtU.e+EXNEI"-$L+r)d F3HDk-FׂFV9lJT9{Jp9-Us *F*xy*&&7A)$*!5"gi;Ig(rAG&;N~ )5Oi+ہ 4\gNu O$VRfORDH܊KXu"qk?XYbU@SP_-6PY[V1cЂ )Ub?Bh(z7j4Y@il u%߫sPhf30횇N# ןʺY(^#m(esZ#`J|lE!8*db-KtTb0=h|LNFs 5"lb`YU1#*h’8I"YIvKqosn_ΛcŽ N1g3pNjW<\ҷ%# A'qc;UpSJ1(w6$(^XٟuU'Aߚ܈61F֞1S}F: hbܖӯ }H]5©\V_ G\ -U:Vfr gҩxu=kZ5*8dTmsVpQGjɻFcީ7vRmFRk8LdPN1 'S2 _-3+ Oڧ\*ń=^KIC ~UD 6¶teI7qL1r jNIA&>sZiRUI#e劆ic}CjIPx=Iurcqyr$z՛"l튺ۆ,Ǡ;Ib@v;Fx. ]\Qc; ߍqvo.5TcUA\o#\QZ#Y~Kj@U xMn@ AeH0UK,⥊Wy|L2o5Zg<{y+#眊T!I| 0Kn7-BBy$dӼ%Ib$g 2?YN"{A9{UuDY H*WܸLc'UUWPګ9\5^Gk=Ҡɔ> Lմs%|cvVw7zRs@lӍűOdb{'[{TRq`y#?&y5L+O-'#ȿyxZF-YQHϱ1w@ɦBg"V'ךpTP.@|G#5mFcUФI1ҍv@I>§R{7\VR6nahM+ت 6aii}ɤMȲn|c-ܭ0;hYإng%h;֏UFs!ج65 74`Tu"'ʩGZu"3h ϭc:P_!WclSUG @s"'vD䍥oZ&r< l)'Mu68#!'V &F1y1ii4ː_l`t!iͷPNwɳC啌.ASP*ձہ*#|U#AVFBAL%\اEq!Ž4Aޫ:h|Ԏ$]_x>n9t{{4vTZ832sPan9-ɪ.3}* Tn I<5AϽIkd. j[X€b]T5+d`~UpUqoZmMʗZ7^7SoY“`ZYʡbāTgVg;0~O ܚqW1J~rQ$# [<ϳ@|w05]ɼEz{YNJ7\[ ״9%ITWM,pzщ>)+]ZHԊٙ[xQ;qʐPF3!`8Fͺ5@Ng,ζaӤ"=Ϗ˶2XҬiRoR>bx6TTM$IC_|ų495iBs+$*0 qB!RIڬ~)K1s) v 2)u ~sUdRvQܸ.1PHPI!;9 1$5YTU⧸`!XpK3E1WmMJXbՕNTF%RU#,$FV-tI A54lniK 5$wB{a!2|wKrwWZ`St+5Re#J&uF[Ig4HĬ 3UjL/y,2jܖv^*8JXd[$]<@ ^Ø?ƒ5ӧ'Hp>s;d+Uk sKc˞j(=?:.qKo!\mrEYɺ"A*{71Reoh~_OJF,RzzR^"**؎*92cy8ms"H ri ^Ԃ092`.K1ܼ QJr8N [)M4f5,i)E  Q~g^S1~O|y_"HS8WRRR:e w^g3OXȹP7LHX_uB;S.lbbi""5 XmwoTH@ d cNX|ShH;WTҟ+ R9G3\/zI_jm.1Y7nc۵R9ٜmVwsAI)`2;s1u-$4Ԙ[v˱PƮB A#rW@`MO1r@ =jo)M])@`1¬s `@"E. S!Ig" cJ)@s s\8Jkn-FeC>JV,',D"žB⦁/ywڮf7Dbبo\UR S91Qj;#]&t inp'R#sU Qgp*(AϽ0V2<)j'Q*EtVM;FV/N+QjDO2I0¾0qnOt+FK֚/ $Sp=6ipf*HzoJQp碞=+Y]7HNJu#I+e#ߊ.kI\qYzs;<>Pk?NSJr=ꎜm#p V";IZ-*X(Z$)uw$3aT.^G$"3BSm#ynO.NOF\"&o?x?Iӭd dciZ@ۘo?UGb)#d;4 Hyg!i%R01*a 9*3gJvpcQ_Zp=ԁ>e}lda4_25V ;>AU[6ң15AJj,djKIb;qUd![늬@=*IW"9¶qS=*gt(qS,?ZdڋC6qC8UW?}r|Ҩx5ByIrf\L|xHi.}*8{j{[;p3o8\rLfEa{d8]ɶ i G0?;hjرq՟7<R*]۴O[K-o7mjqo1@LRqisٔvP88],iC2!*c*,pɵeTꇞi/2tӘlxkE+_cma@ifҸT41Mg!CtaQA6?4]].yOsK="oݚ&(>j?CjmffffWZNrr@~u*cNՆ(o+Zn)[y9+\maFÑU洼6{mٚdA%?V r-e_jgvZN8fx.[K֗=~CL67c߳Q7^hF 5tYiero.?5?ٮp;§|<=H^45ռx 4]nLFW>`?g4"s!q84gxXMiuO~X+L2O[;ݸ4ouoI1D0>CKK6H$iqUN\/'x\O~S:u1&n4糹KY4>p,s5'}]l3]uwUEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE ?P,1ln>v[i-U/ ٖFs&h!yUpYTkKKin3$ow횿[\(rzaPQ.NaTW7YFsoi*E3_A50H#`J#5g1jnEQEQEQEQEQEQEQEQEQEQIEQEQEQEQEQEQEQE`jG<wxZ"XsTUIȡ=3U]x=5<0$ \/ IZ~,d知uI4.v9 t"X؀I=[юuVF!Yz sa̫,^^{4A#}U#h.} hsfJN(((((((((((((((((۷Jy+y\7Vngh5Z鏘Tj&ƝZqwErH|Wtg&vuqջBI>c!+"H$x %x=oO@6:ڵkFEQEQEQEQEQEQڊ((((((((((((+8\CFs?P^.zk&\ f`p ]4{>]0ZܷXF XğjڎGq؎ %%>((((((((((((((:EQEQEQE-W1.ؓ޸v1Jw9'֪]O[LI*GSN^DvWOd",<ǭvGC ]l(đFp{U((QEQEQEQEQEQIEQEQEQEQEQEQEQE-RQEQEQEFs#\dq % rk'/ZhߨE }R6DoT|dB#]b*!!.yU: WH(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQKEQEQEQ\Q+k2=kiO[ -]~%, ɒLPdAxzE ;=}jUI8Hp޴d STԔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEqW*D^Z$\|bGze݇& 8,~Pije6V;ˠP0:?WʦVY&ϽMSRQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERQEQEQE^ペ8q:֧Y&s{<98Ox ?[=BIm֭Vqr -i"SQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ\HrzҼgpIեKIpw¶֨#C(ֺ`NvĀ9#S`S})>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>`QF>'>`RQF>`QF>`QF>`QF>O((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+ ?諢((()(()h(((J(J((()()((J(((((((((((((()h)h(()(((Z(((J(((()h((((Z((LQ1KEQERE%QEQE-RQE-RQEQEQEQEQEQEQEQKEQEQEQE-RQEQEQEQEQKEQERE%QEQE-RQEQEQEQE-QEQERE%QEQIEQE-RQEQFsRE'z((Z((((Z(Z((()h)h)h((((Z(((J(J((()()((((((((((((((((((((((()(()h(Z()((J(J((((((Z((((((((((Z((((Z((((((J(J()h((()h(((J((((J(J((((J((()(җҗҌJ0}(ҌJ0}(ҌJ0}(ҌJ0}(ҌJ0}(ҌJ0}(ҌJ0}(ҌJ4`QKF>`уF>`QI0}(ҌJ0}(ҌJ0}(ҌJ0}(ҌJ0}(ҌJ0}(ҌJ0}(ҌJ0hҌJ0}(ҌJ0}(ҌJ0}(ҟOEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE ?뢮)h)h(r/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQtQEQEREQIEN^NS(((((((((((((((袊Z(()(ޜ:N((((((((((((((()GIEQEQEQ@(/zrw/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:)h(Z(rӗ9{ө((((((((((((((((:(()h(r/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQQEQEQEQKEޜޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQE%QEQIEQJޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQuQKEQE%QEQE9{ӗ9{ө((((((((((((((((QtQEREQERQE9iޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL`S0}(ҌJ0hҌJ0}(ҌJ0}(ҌJ0}(ҕiViuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE xmxBCDh{Ep}[!x:Aperio Image Library v11.2.1 46000x32914 [42673,5576 2220x2967] (240x240) JPEG/RGB Q=30;Aperio Image Library v10.0.51 46920x33014 [0,100 46000x32914] (256x256) JPEG/RGB Q=30|AppMag = 20|StripeWidth = 2040|ScanScope ID = CPAPERIOCS|Filename = CMU-1|Date = 12/29/09|Time = 09:59:15|User = b414003d-95c6-48b0-9369-8010ed517ba7|Parmset = USM Filter|MPP = 0.4990|Left = 25.691574|Top = 23.449873|LineCameraSkew = -0.000424|LineAreaXOffset = 0.019265|LineAreaYOffset = -0.000313|Focus Offset = 0.000000|ImageID = 1004486|OriginalWidth = 46920|Originalheight = 33014|Filtered = 5|OriginalWidth = 46000|OriginalHeight = 32914tm ;s>zLC-Ҝˮ_ 5w]ә` Dy1Pw/RZ7Ņ-.Gփ84cwi2;Պ z Y  e  KT z ׃ Ō ; x  te  *Z c l Ju } P = wT'^gowgUu0emv M89ZVrrzk8 ;4Yfod) 78  p ^?  0|Yl(\< 5`E@A ['#[5/iHFM,5<  { 1ibX9^Mpv^>cOUsIaS7:m& v]aRXJq  m YdbZNWaS xgv1kefx_[k4JBINcf_]zY-q+  2-U+v%% C (B+(%%(Q:=0B`Ued_U][jxjqs[]gɺǙ }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz> ?EQW pDFE3ҽj8$ :Ju>E('ZJLc84QIc=y.0(ڊ0)(4QJ)GJQҊ(QEtGҊ? \sE(ߥ-QfSIE7QER;F((? ^P:EQE(4QOj(QǭQKEQE R8?hR (JpOJ(9KEQE)?Z(QEQ֊(CE;u(\GQEQEuAEQGEQEQEQ(R~4&)($Rh< 3GjJ)y4RR }QKKHxIҔsJ:֐uu)sEEQERQGj( (QE%G3IE%(4QEQEQEQEQҊZ;@EQIGQERQEQEPh(z(KJ)Ewފ3JzsEsE('J({QE(JCӊ)RREQGnP(E:QE(()h((:E(R> ?|s%~η{mx83..JMyP!@V#'',309ؼSqmg3rŝ)#>g=\m;[?[&+8Wo?9j/$Huu[-A$ dgҵZ=kJK(QEEQF8hbb(EwRQG-JJ;ъ  (%~4RRQEQEQEQގQKKEu)(R@QES&F0J-VXCzT5l䣪YU BJO&h"Gʕ?T.Hو 楂aqșAJcv/mRqu  d֭[OP#pjQҬTQEQEQҊ(ϵQފ-QE E&1KڊZNPhR Z)i(Q:Ph֊>Z( ? QERQEQKފ)=EQIR:QEERQH(ڸ{o|SkjRYRUH߽yVAlV pouq2Ojd"%O-jO1`Z#3dpu]tRH.rgۏϽvJW?Դ;Eh)hb1EQ֊Z;H:KZ(wK(QGfE'9(Ί)sEREcQEQ@^QEP3EQEQGE(> ?^ӭzzQE(Eѻ(4##h4)Җ!(WN]](* msߍ] WeN؆ৰcfoiZ9)<Hd/=;MN*HM8+铀Cj[䴺KC ?:mmAw8~ugS%yʏ*}o:^kʗ2Kn^3ԏ~?:UUmt)ǩְo'wl`}?Z ֥ji˼ i;x0O+B;Pkd]aEO&7>XÌ{'M2['Q6Cz6 ``d<Ѿ靹C1dqJМdyצUH)FUzz-4},,qV#͞kaokkst#'Xppð G,}?O1(E`|?8#5jm<%u`v6P9xoCo5J דVӡ?{'l'GZ2jQwBh893W*ERz(((2Qփ֊4QKڊ9(E;E/QIҊ)h(3Qފ(:qEQEQFhQގP(vGJoJf%R(bQJ/j(Z@=i zBr1A9EzRZ(Oj(Qފ(((^QEQE%QEQ\Ǎu=GF4O-Ț9UӧquO@P'A&pHzyrJ\'c?R7> bOu+,d*$?iXVnk*Gӿhxkv.`.̤h g@V}IbztIE A(xH]d{WF$2Eak^/km|STI>Ө[ğ=5cH=st=<+^H@3؜fm7W'Q !=sm3OյKmYyݮd s#u=/5}umyM>t5 ih  OBk+C.ծb)[-(%NOqK {LF2Qx$p|OxZ]4V%lOLu'm"LKɢ\V\$O| D}AGeی?t<4RiFV&9HSQI%)>}=Ee]5Ֆ1秷T.DqF c3``dg==I-Ji-7S_ Sނqq ӷoJeW# ck6:cݽ+X#?ysg)O]pkb]빇>EZ2YFzQ~uf%lWN6?JԼϺOww_Q03Y-TАSբH;a2u#~>!+UW͕ClOH0z]b4  ~=jr4bHWFr kq +4t`AZ1ѬHʲӍINE-:QE-Z)\wQKEw:(Ob4QIEQAL((ފ(QE-QEiZ((wQړ84QPh> ?׭rRh^E-)2'4RJ:fKKEEhQE'z(֐EJJ((QE%QEQE/j(s&O$ ּŷj΍y# #q88=# .5hTIb㎹Um$%i"jec,Qcd:=֯A$6zT2]m2@{֮ZL,rN#! 1jFM&eo4Jܨxεkqn%nE (?{C6\ ?z((4%MR 4S(4ԑIhPzRQ@o<g;zVhBHR@5ٖ6eB!AHĄ%Wq3^u =R5i!\cAf|$p>)./gD_J8N;S"=I#χ(>zgqO6mHGw* ߡӊc%<kb9;ϭz:S9Q֊()GZ3E}(hRE? (GRzE'򢏭K֊ANREq(֊3A֊j(f((wz;EҊ;⎴QҁErhI֓f`0h(K(GJ)OzQHhRwK(hGJJ(g_vأފ:RQGQEsE);E.3K(p(s)(1E%%S.~a,U385! *<.pq+3N'f;cǰ2x; GN!w0@p: sZ/4^݋}>y(p1O^ykH״=onsHJ:ƹ K}fKKZ/#hdȁ63_ιK9Uomy1a=FΰRiJY,nɌ|Ny0;zeʹrM>*=7O֩YOju찼ڈ6N ~~'ZeA%`7{Q-[F+cc-PědJpy<Һ{k#J; k+tI߫.W cxA6Awnm;Z79GQ>ɬ]vu$v4;u&dK,*FoLm^ G6;ioXTc" s@UC*8%&VR^ݳ2k{Uc{F峹sjX|L92!~YdJڱ" OggOU.VFAlǽ +Qcy9>6DA}0~Ti_DbaԎ޹w\"wa{Sm"D60^W2IqG/d?<1*x8_\y$9[l bzƼϨ!pg*ārIw1D [ z}%DzlI7.Coq׸n'@G)ṄG5Z,mvtg>}G5z*(hFhPE'z)sJzQ;QGjQENhRQE-(4( )sFqEG֊ 褢3 RKE%Q׭sEڊZ1_> ?1^8]h͎(4---i QE;QE ()hE%IKRRTRKE/4QIIEIQ;QI֊({(]nnl>8=8eS$J#ww.G<CYOh%'9+$<53FG'l6+o4$z1N0[k6z=nG;wQN-9;q[{5ݟۘ<2.ōX)k~ I%U!o4qs[^,JQ˽aq\qEpnAPqԗ_5Ŝ1ʰ_I {T)vgxbnC8?ji8*ooxfM;R KCv z4ԫf1ƜqՉK 3$Ҵ|s};LXbٹ;|tt*(#;kc ?By<瞵׃4oL:&خa\2=vگ4WO 1KC>5Yxr7̭4K*9)+P0;gi<'fF{ʲKB#㿥q˿KI|ӉdF%$a#[66L{ zK{AiCLQߎ&L3j<߭[{K"P͵[*$9?]59$UFy K2G,Ć#={֍>|LdHrr=jͥW =J˒{t>UТs3s;|Wa3XܺU]9in?!lJkt{*ƍ ɣTﻄt{sӊ|~%bo?\_ ^o*>Wx;Ohd6V3FUo:Ȍ`f<-$>nek`e|?*޷ʲʤ>SȤӵ(2DLeX0<{]7SS΄,CNKy6r*]^R8f((Q4P}h(hQE(4Rf(AEj) %z(4Kh_Ect:4R((E!qҊ(hQCEE/z;ҊJ9>QQIEQE/j(\1(Q𤢎sEQ(IER (z(4QE-"BAbf7RGZM ȐQS]!" rOr^#XP'4t)O+ożMGIy!Fc"/,^\4Ȉѣ`<\ACqW'&s`TL\l{vӧD,Ar6ڥm#x'VdYH`r,yTIX*=^ͤv2sD.gFec`gRnܦ$g{mّ\nA`VN??ʯˤ(;$p# ~uBL7Q[yC<{ &Zi66X!SssOՏX^uo!bBO=⥗O7vMV3!ҫǥ\^鍨Garr#P5ޞoR2\zs̖m.giu~`n]Ƞ:u޺/ Ca+IpኺXGOMDM{ek.yn\4YD8ܯ=? y Q@z?I'76\G ?ю릊1ƁEQG֌QEQqIڊ֗QIGC@RvQEPhQKQ%QE.h񤢊(KE'zJ)(_z)sIEh1EaIk@϶?Eqm~\vo2Xc6H2=ʳu[e_rưˎO?ֹ`[ry0wzymv\B"#ݑ}kHcYeE18\O[oZei+x2xArwQ< mF.A]Oշanc7F1;ntǧsʷ jYX8u_,9'Vͺŧ2 ܳF[S4Bj~`3a[^[-$̀It8EE-8Q`u}DG>R.pOPxPGU#9GR_ŕwR>Q `MZ(䳅Ls*JX0yy(5=+5{hI[ `VMb["=-vWVMqaplog $#U Z_\5,@WrֺWEu#IPdd LQYIuJNH+ŶcKW@9#[[ ~W c1v:UŝX{`UYIp?UZoc뚥} VPH #bRF݇?bxM٣%6\ſk+Z JI(IXŹVg1% #=FEkAqqe.IFv`\m<֒Hr>`ۏ:YUu9|~Iu~%k$̒nV_,q$Df}~eW- \nօLju ܋d 5~mj읮7][Xw1kݾk{7 $1Ў56:ǩ[ƏDmC'j)RU>t$$Nѵ?M:+ʐG `H?ʽk</)ؔ,AקhڢlWB36U' jU(Z(ZZ)sGZJ(ǽP(%R?\E%w(9E&hFi(њ\E(1Kۊ;H:E.{QEi?(GOŠC4_j^Q3EEQG)(/zJ>(QEQ("QRQIZ)zwΗzRʌ֌E/4ג4*KǮ12N{ d{qR(t(QEQEQE#dgi 1^c\7# wȫ1$|{~Wx% Sh]ǔr¼VEM:%6ɴn#)^?jo>MaqHwD?<;`Ņ?qs洲-NI^^צSC#<rN@1 MDd[>Wmn ~ԦHȚ]Xs5n 4[dO:&Y;gtEsd\΍s=ƣ,)p Gmt=EsQ(kq?*w,'ӑmBJsx fqִKV,鞵YN-Kc 8'kcm[g6t'9hj&3+y`ȬvsOikm|}+[@bc9ۑH 0X9-\<8‘+H^ >R*JRQE5YdT76#!}j96J$XL2F We՛Z\[а#l7籶kiYba: 6$* #Y˱!B:^uxfKnqok zа cb"=䁒f6\WD{oAv`i`d {+A2zֹѮX:j,nZ5vP7ȣMдGn w&1yfn gVV=(ފ: = 'bQE)9P)( QGj(uZ>P()4IJ)@\Ҏ(EP(EQE-> ?ߥzSE@QE.(QŠ(斊:RQGZ1hQGN(3.xR4(=(QIEPi) YA*r2:8=Fh dtKE{QERE%QEQ($ BvF=i 3+XiΈn;GEyW/t2n/!+d H#1\'ӥT#l18hSpsT{ykͤ))!AvUz &$& 06S)} 00snte\;`Z׳VKm*36̂9#Br;ք:hDwEF]g#2>R鶿p[Ȍ0fyZG$#t?fi>~c@cV> {H0u$dߞ Ѓ*ܙē<n|۝q_ƳdIf7 RtfbrXoq{8gee.Hh8gɃL)PR:*O\71Rl0xʻ? Lk2,t ?m j) QPh$Q*GRp{Ts[q MJHzd+º*J?2\漻^ i6y6y#c^xw])ZGwbN ]ɑ;koiH%]|c'pOkozCE刜dx[k1vi$‘Hx̹n4v)@GuM KtT[7CFz5sp4(mG-9t]JMH/nZ[Y*?tGNN1L֕{}N9_881xzBn,.ⷽ-B$qN1xzw-֗~q9Po@u}{z&߱+9Sw$(~~J7MmeV 9Һ089vp8g#)iGZ(E3E~8hh/9(QZ((j(EJ?'S֒.p)sE8KҊQ/J()(cފ(ފNEފ:(Eb^'ފ;QG-;Q߭ץ%RbZ) % &Z)h֊B1EQJ)xh1FyJJJNsҊ)@) QFhTeM5HtqHΨ2zi64S&BJ&d:>pqL*usฌ0CgٮuuYk#.35i۷e$ yjPOAs"?NʷLCc)P9#zTW N=5[UUUU A*:u5nc۽b.y%ڶÖԏ^k)|f gpw۹#ԀzƹH]`[Nm-Hի=907~Vǂ>%Y ;p:~D6w2Oj2C $߷VE썔N9H9 Z ."B(,Ld#4Ve$G(7b(@?{S.Zu93y(#O2f-sϵ?Xk{ỳ͎xkS24ˀ͎xoÆMBI.n66l tS]7`XV-cUlasxmxf9u+/mm ?ޔRIEQIE((IEzQҌq?J(Ah(J % (Q֊)h(%qEQGQEQEg4w$G8Bv\HF;c8Na锢n8N8ZhIa@8*~)V+hahbcި] 0.#wZq%+9瓻g @:gS> zY%|{S\mm%VB700Gg޹ N]7PY/`2i,s\̶ZnY$˜n^zUF𥭳;'dhf϶:/5m;VvV$7vd {jv֬L&p@Z{w6H'UmSL6G#?R} ۓ봌H(@@ qády ul;c9> V#0¢=*8?b;Z\K,O̬:09iF֠EkyqIuUK|áLօj[\Kr)< z"+k^3o(+3F #eP[Vw1yr%;v22*ӽ͝f 2%`YHQ]'bFt+ּ=shbUZD~mP=|sZuvފ)1EsE(Z&DB7-:3!2 K% b24i'eX}O+>iEOqq)Y]cOO+EuiIc̚ANP@q5_iosIFޢiK2"09laYȖ{(7|ddqTP4m[tJ;Y&Tm[=Zu 1*urkOIT;23Onȝb`@#9zV#bBp@#9JާVpyb0wKEbE2)qAtJZ)hQޖ֊y%-(4z(ҌE-gREERR{QAJCRҊ))(IҊZZ(i:(){RQE)RR((QG|E((()3RiP˵A9MtY#(2#(u* 2(bR"#P2}i#!'slPSlpi@R{1n|asvF[p;&i#+e,/(\~;{Kf+4Ÿ%}`Z]jVfduȲa̻T8gysUD|M 8[42Ũ]Q;NF?ȭҥ\Ζj㜌lR2vƫ+sVy8 ut<%rg3cfc;\{X(Ǘw~?lYUh[q?R͝WC7}$lZC$ azd+H0b}MRK{˛^90&!֤t2I}G&U!sH dLR@$"'SPf֝]ڊ(EwQEQKHOE%b?o粚WK|.qsX2xEy-A2^026bx/qr׌mn5R4n=0O\Qn!vAsCWyOL`N[Yd:T!yif pF< `g'g|LS /^AZsI#q;<l*B VjhhRDq#qOi^G3-[|6}? +ƺ: QA8r=(KKKE(JJ0hSEv.hQIEP3EQEftQE(> ?^E/ZZq&֓EQK֏R)(4QIҊ)x@KE &h&{=)i~Q@J((Z(h(Ph((EQQIo! *+).򧪫EE-sn*z*Fm(#䘢Awsz++M3Ð}٣e'<s6:$B J Ckd81֛Hݲ.Ftu5?g$Fvhu\* $KFmvw8g9rW'Oۧ <ϧY#k")Q@ܣ<0:7X4"lΎ N)żש8}ӣӡzU 'WoHMa"o .@N!ޭcX-7Lԥ\%Q1 ~> W'^9"d%0 c9^^^A8>v:f^vHTp}YnkF4+M6##8֩XjXVu1̻[mgZѫQN((cR6I 1K%©*:aY֦QmRIyz+pJc*:V+xG&8*Xx޵^E #XPF%QGR~Z֝xZ"t(#5Qԟ]m=WB 3m%\B"\)5c70%\ Qv)5[,]^yWHGXyykGy$d@FDaT;|ۘu {]:2#AsSeKim?AB$}3Q}#0#!|UTJ)hz@8QIޖ(E((Z(QҒ~4QHh(-;QKҗQEvE'z)h(((>QERQEr^'[2 N<Ng{2YH9=G\wY`;rkOZl9: g0[?és&&bNpZuQh4q{+rAǶ#Zcbw`s5 {v>Vs<Vw%Z%`n}J [}0NTGW!\nbQWx2m'i=0"k8L3g8R$ϒ#& fC, sa=:Hz>- U|#< m.VQ1MF;ȻLLO*0A1o-eu~'>ooEE6NX:dp>֦5g#.rr/lkO"5 osU<_kzw[[I $pO3pi|_7:֧Q-^E`ssr?/\<){>ͪǙEiPў3]CoyR(׫kXZ{ReF Mu2fczVB?z1[KfeVd{#X:UKEs ׵w7npJ ϵq!f;P(?Uk:Ʒ=`Sh?w>:'XicAw7yϮ_|Qy~&wѓs+{;TOxW$!vu?oAkn6Go56;6z=K{eɣxq9<}3Ƨ 7C2IqJ)嘟oOԵ [y.~fb=1 GY34 YLO=)0iY 8A94Ԥ=¼[3\fX48TB~"LO ~ŒF>~==0*YlK6LCGSSrQn'|(?V<8^j3 YvJG} 5,J|%sZ>wj,FrI_uCwUE)(E-(( ?袒QZ):QERJ(EQE4QJ((((J(;Q((((EQE93EQEE%WxbXsݻ>m> 1@^<|;t\_O]rxvѐ.]vv? #9Sb4y$1sw{q]3˳bEp~=xljGM]@S߱رW #pW%_H&1hA""sy&68"';OP#\$ySj7zǒ/>пh5^q0skmRgogm aFq?s&#ۋ*V08냁kд5aS{)h{ »/cMm]/hd@_2fWܻrvZO}AoU`dl!ϧ/+,beW_1s"we2"T,U[+K [N['c-Q€c1 ^B:ʆFM Y9ue0cx~,X̒o<~$r=ϭgh j6%m"R;8'SY<5 {DR1=H8SKZr"1 <J~qjᦸtF'*M]NTI\@Owy|M4ֲۂRpN#Mj\i4 1psiܷ I;% A$u ozk9 2YWA^OW!eT<=W_imfU[T6W{+[nf$n =A~50٪ko6Ųq~&>l+{`|z}2G?+nFKiAop@?x>@=zV~es*CihL`aG-XgGvmNN=ɹ?6QHY!n:u8>mu{y\]O| 6|.o?ƶiׯ$.nM*u@җQE)>ؤ)-QJ(QG=(qJ(wEɢZ;I*fnW$0`:Aʪ6_2[nٻ63j 4%t o/c ';?5̷ol{ QHCݬR t[;de"e3}]5a'&G1#&6e^F3jZ?J)q@ZJm61KހsE%RE&(𢎴QԔQJ84Q֒(((((((;QEPsڊ:QEQEQEQEcQES$}3g/g54-Twy6I&]n%*d>ҼYugy %cqz[XvϏ9ZcX1@6+u.m >T:`qǥkxFM3ʺ1c8(9w*"p⣜`JoHwTs5#լ}a% !&EBp3EWZ!}PI\"ܱppO$g[J.u!/Đ]c< pHP Eywyuqd4AA1zjΪTSh@%6㪏ޢT0is:Ơ|qK:/$&d1sjy #\0U{wsI1 ^Z܎VM.m(XtZ}2b-gB,œ}3޵-,]V8Yv΅\qsW$nG֥KHcVU- Չ(U{aFF dsa(=5WLۜpԏj8-$(=HPܤw84HzzXR 2TPW==w ٔo}G_Z/-Aѻ=hm@m&Qt?j۟A <^Z*&j6[B+Gqo{Kܮ28jmowa4Q#G+0h ZK2I o;zy߃o]BY$a6R|}9 |-l_ڗl]m>QB|dhmH2}XHW,#9=H%s#f[aj>H8W4f#H`إُԑǥ_R8FD,Kbf=z? g=w2ڻٿGY7.J[Ynfʱ rX㲒*x9nKw=XmN>foP wU70Os$")>u{mj}>69?Juooc@rɄ+3x+5Qd;9?ʻNk}{M!trۜ'P2"#G@aycs4-'*K#GVw븮\E((_ⓜqփފ^QGj3Fx1F(A;FqF;!ITg (9sRQFx9E((Ɗ)z > ?(Kޗ))(((4QE%J%QEQEQEQEQGz(((Z((QEQEQE0~QLq!2XX^7]TPi"# ;UP7a"q5:yg[Ml[e:4JND$e,6ĭ=_ΪH.dzȷ?iq$g؎GP} Y{zG[ l,6_һ4(t=9nݮe2_OOoui閍q;>rLr\ޯw; $.FAǡSWQ \%PWZ7:72pkVrź@r0@pFzՙy:% cc3ީ^uC|D2&\(9\c=Ub(]1sAc<QŀLz|I'jQE m|I=9S.g 3p1ʒO9xv$V`cϯZ Jقm f)W6%qN#;SWo>xzRu}cB٫8&H'k~]9~|*N>VI2yϸAZM:/_n\r;Lv5E$qz=|7R:c>t5_S}YKx{w9뎄gږy{XVW=JǯCDIeIh3!t䱅1#GNz5xnǽfu76Qwkwk [og x+ZĶ5+Z=Z7pvtA׵z\zjn2`tuǹ]ǂ3qZQdk Ozk]M2R&2mNくzư;M Ko8JPDM@p+}R=a縶2F8V\KMqj1jOp ,Q1X0Z/Hg**a@m tg5WQx.UdUT9oeXOY?ؼe!T IU/nqf@( rIU?zOl|by<?B{Ht]Q!8(RH `19t78uDEѸ ~Trrc3Ih?ihIEGQZ 1F9ڊ(E&CҒ.=(~R(Eh֛v(Z(((RzQIEQEQEQEQEQEQEQEQEQFh()R(#4QF=袊(4QQPqg2F|Ŝ(ڣH7/"̀?Y$:L*#';qni+X^$ d)$ gj.5ܫXЅ76HN F:I^y9UX7EV6w>W $mGGl3 <FO#YHto1 6qWm:dymc:W9.n17/]pp1ǯ#cntO&:^/9V?anr%/O! `ߍ?HokXe܍q!*85rN{{ mıOߎdFN;ի Էk#$O2qL-&aX#Q?7AP=yQ]ФI#"ޤ@sګjP)XMczɛi# ,ӜZ sv^8Ne=(WB+]O MblqGJr11L .MY:F`qZeĐr֫"$czƸF9n%00@yQMF 1p_ q!??3R4jVgz~қclGz}݃8YSd!7_f/Zy2%Vg|8X=_iu]vMB;;@$-|OeYC1'GO _cVgMē#J0_AvaKLC?k16ThF*&@) yծ}AemGmުܭV ;8끞Osp7ZJ-ml!3m8s+,[闚]p(̃͑O>|*mQA-yۤEm `8 ۶~ߡR-?@ѮlAI^{o/sl촅26u^q=7m~Qzu[^;EQEQEvKڊ(8Khi3ERRTE/j1E{@4h4E> ?(((QKKE%!(((((QERddyGQG#<(((((Rn8{Җ((.N#N*{vWwgUE$dFW? uϮ^w}MVg>M쨅"9R1\}ާ&m#YOw"Qsaji\+Y 0$`rjm~ah #Xk8WDM0np>n~b)-VѴI\NOip>mǟpKI̅L `Lg\ƩokbEkU1QӕNF3+3Ei b;`Ǧ?UKU"3-2fl<|8Jn{{[ G*uk[}iݮ"3*ݖ8$5fI_1`C^U#; ]Xv=pOV[!\)ag֤q/I]qZHFxbg#?i - 4F b`یH^uMc#*[|1Ñ\E2Ih2aa'#yY$FaVJbp{⧑x#qѲr;92&%/3i:yuئ)&KI/ڬF@5wZum7z^eu<6]|{ ˋxemH#1GȇqTb$,Oy1 I$TV Ye2p@'%튫ikscen $;vG[YCyI FTzU+>+ 2 t{}*ԶV9\*VV-DvϢ%""eXvTȬ g44 4`\m$3Z,-%c?9?nH8O١L@RQڊQEw4QI)~QH(M4tEQEQEQEPhEQEQEQEQEQEݎqсgqEQEQEQE(RqEQIsފR4b__Q?a6+SY^((PJ<5a@ gquQd7R]c19;v#Rѕ mܑ4\M[f+`;$EWu&{ I&3VRBROUojP+nمIYI}x'M艨[NTq ㌞yu0vTXKeQ+,C 8<t%GǨDE0Hdc<}+M'Ӑ[%pŤwcW;,KlCy;x+Z屰W q?F1Zy eXTGaO\>nH{K{BDZa\ϧj<7({*={>?Mʆd#0z_J!F;V;닋$H~q#*ɴ,sW|Y%ޣ5(|rFc,soCwq̮@v|1ZRܳJ1G<5%=ԊX`qNzj[cy1b )%+ 60T[ OIns#֬ Is#PN]UU}/-i^HUf9:^E$u2w5Vc܁֮UʳEQ(4QE9QEvJ)GZ(JhIE.)GZ(8F(P((> ?F(IE)h(((sEQEQEQEQEQEQhQEQEQEQF;(RvgvQU5T].4mr1eKd]sB2HQ֚싨&9޸t{Mf0H^UᄾѵBL"}CѵbnpkҬS\]7sa~x/ZiC; ncGjIUY8H#%X~-֚VBWg&\cYG."8yIl>`Vu/u(KBP/nzsqQ s}< %2UIB};u%}UD"$fsu$,cN!  A_ēޒPwrCp^9X̫H)!@2yKg~6o*UW !eO(OYoܶW΅pi7 . *~eܗ(,ViIv@+{[%,戜:p t^+= `ރ5ĸ :fT,jgye ZD q<:wy)wq2prG3ԫ-<@8N}j=WU60O$JIԵ7%`VX=p*RԤܖѪ\ҧZe,n:Ad5$y)@?zЏKiI%ìHq2N}{kIcL*@3'VOker" \d.p09'ITv\qX%i`Dt\ =XZ&G\ =ip';OoJx//4PCF9=sV ST(){QE%J((&(Z(RQE(4QEvZ)uQEQH(Py1E((-b((((r3EQE(3EQEQGj(()(($!EfcA!dW=8i /@N*/ۡ$݂7Mcc_FLu>犡cr[=EcM}u$f#aWhm0TYdS!T}})4FK;ARŪ*qG|tϭr4׷e@7>}.&/5 un2r8 RcG=ߺ ĭmfG$;2)(A<9-&Iǵ97v}SUk*My"'fvT9g*鶆RI-ܢgT$8g*EyYHO1c=@3/l1ӱ2s?#N+;ԎܻH?K ZD.s+yՖKHf1ÔI89fOVkh)zDHp@ Ɛkle[w2OO4 .3ҙuK[Rv[!3>?Zg5,PA*R=m% )BjWvm^Ьqa>?]Ķ2D9J93e^ 'V&+u44lz˵[ō}BFW;opGE8EOJ[$ENSҺ[iKg< c4 |EpDͷlP7)~1u kiZKDi |nҼ{u%#&oVn=+o5)[.%$/8{u^RX}ԃzt|wIqϗ yz1?增Ln9$U@-?G9BMl[{ʱIy ]¶Fp?^cHn KAۯz҃F}J3`<~oYZ䉵b:dqҷm5++,[y/fM>Z[V-WhAL*鵇?kem6+6U'8ICަA2mhgJs=YaǹB8?W;mEn k ;Ŋdv2}:o֏ӂ{u݋͕I ӯC'Ч 3<#JvL_Ʈ&xJGh|G+Hp:(>TYE1O#8Lz(>qөc8u<|\.[x>cd/J J^_+nﴱe۸`sGoJXſˣ!Ԯ$),Shpҵ[or}m$wO^:]3Av |ہWWLIe.2ۿxܞ}~~N`qd6 ?((EL;REQEb֊(99(EQEQEQEQEQҊ):(J(((QIEE0Kw<%$IbHqĪ j?[yy$6k3giR[q <&q2=s+KmYeIOM3VBȫM;EK5levm$Ӽ"7FG$cۓRF ]dJ.;gX.t4Fd-Ps}$J\R@+9j٥+O ydڛr~f5SLQnc~f?`M|i{w!p8_Iܛ7cΡ%#,?J(&y:ɨ#9&wbTlFBܸ 6תoGt{*.]nN_wf{oY:R0)(!x'SXXT}qYRi6bY'wg_oNsDYId.*lq#eYe.*ltM1,fm5 #zeqU*lqƩq,_0#vzq/ٚ V`UIlsSIJ&Gc$ՔՋp5m4ivEg qDT'Ԛ0q[}HCl{Vо,-*FGOk֥(z((QE.1E4QKE(hREP:Qފ;EZ(E'qEs:FqINP}(((((RQ(4J(1EQEQEQEcފ(((((QERQGIɮ{\mdSfrCێ=a3TҒ=6.uAЀ@}2:Ɨ1>*V2 Ю_irSy&5%\Xw˫o{2Ѱ'~5s-Ne#bj1αoV 7 GϰuTxHy!N)ui m̈́ qVխbWMvU 88Q[TmN$(\vU  /mJ+fX2+BY]mC(#Olz\-s(GSqmppKLb8u>Һm9xY}皁X[M1wEy[?嚁z}Mt6{XK1$⁒ǧWUImmaˈHdw8OlVyCqvA$H=N>U=ΧkH_djèc:\yV9|ӨGU6fQ_"txu-In7RJW0;~A yk1?8Ov12=>RofJe#o=>va/,+K3LoPDijFxǠj,{ ^v%n"Ǯ9u;oE,*ZE]41\!RjQY~ߪX[H MNOYWSh6c u}kM#t<;YWӮ{jZ,n,#8j%hpقOr9ozPƞL2#'%4+$bw' <ҝ:7o6mxJq 0Nrr0OӭY𾹠QQR@w#09Ҭ{\ћ{%TY eI.{ֽL)#NnvW74N;ڽcO9aKnt~pb՚_j(R}(R*(>QEQKފ(QRQފ^f:u8IGZ(Q> ?^^K4QEQϭQEQE3QRc(yT d̳O䶊}4ڧr3PȰsj< N2[QoIw+."K}@?Iy .-<0 N2[e*]Gs"I$lJ+ 8,r%y*&lcY,ǘJTJ#ڥiixWf2H&>&Hd^4${L4PI vds})>BJsi15($kQea#ǖ9 pgWqe†'*V3<,J6E*209UŨ]ed^ =1UaY]1&E,7 YvqiMùٙZ;V+#1?:kl~,)m< pU;Kdty]Rd)nqxΧECN2#s?81eB2@njM6明wݫA3s"͹Nywiuk9X޼1<1ZRj;~o^y:zV]uZ6GɌ. CZ !k.W?gJ!0qTOi@GasO##GS}Ȕu'ڤӬf8KKq/܈z-vKifi.B]aB9X}I$+y'9UnGr>qRs:%}&'E \.yYI&HW%u_K!u&$۹2N:wRcK 4e$ORJ ;+Ut:V:k(n9 ,8PFG9YM9V뜊M.+9nn4%G$h,48OV:U[Ҩ $NMzëH촶[|p,($;[T[謌>I#EP:E-Q(:E-EEbƊ9QGRQ@Z(hQH%((4QF{QE3Ed(Ͻ@Fzўh4QHȣ4n=@Pi@y8A.ö~c) ?JU,F>ܐ@)')QE()sQ(QE((((gTBB{ l1RA#:Bh d?q(tzc4nC@-9l`O㎧5iiح#&B}H W2:]xqoݱA,1ʷ 8*Ns?j=6qA˞RKed2GE\\52|olrp<; ڭA2^̀*ڽ*xx܀*ڵ CA&]qlTR\eAwxmq0KG{G$c>cVmtWR}Kp>k`T&Im?o$ Ϙ`QRcdŞLzu{1֙`"2p~84p#}7{6"zb##}OkY[du|?*еb,M&?*ղb+ C0% uHQG%VHn>c"VA`(䃟jܱKd4J`Q>ճieCԎ^H5&Ӟg9QT|?zπF^T?z%Կz:*3MdVq+Qۅ/I>qug27G%?2m>yd27lsr>ιy|TdLG'{#q\kFhRE' qקzgf? LwtKJ'k,ek(v1}m6ytg˒ET@|c5Vr5rʛ;{>ެԽ(EQEQE/z(=(-f)hQE/QIG֊:(IE)J> ?^^G&(EsQIEM,! R <}iFOZM< K/iw4̀9)t)JiAzx zasp Fpyz⑘JcKUJveN2$݉1VYgF%<.zTQyY%;U?:N0E9#RTu':ib&gTYK#Qz j\@6ucԬeǗ{nU?֣[W˘[=6 ) Zs_Zy8;1J0%Ua茂g}]~|@tGTg`P}Nk#U~Ҵ!Oe;9yڴ37b =N sҢr=}*\t 'E}ghl ̶pĔ=pO8jswZi%0Ee±=+P%&+E$˅b}ڕe[kfV +qY#&qm#Ra8gY요G򔪢+YJ5)3TL2da,6A}?}J5f$gm*yp3AҋM=,f{F-"in9ߌgޡZH"%cP[ fi30[ھegQG$1Kx_eQf(.0d\ONYM/bN:mh̆M@zTohHm;G|^26J,݉^{2\N;U-МxT'fyǗjY6G6̿8Vlf&y"Om5[C9$=jZ\:nnx\X{tIiq"ߢI'ޟucZ-aN~S~4 d <ZTh7G M0lb07j7jgH*.8=wďq֫4㏭c}LV'~e''kE1[<ְ,p}W擜q)ǹ(q$rJ o.-̬T?_\Fϛ$NLV[%M:9vYnAf Pqu[kV\Uic(9:WLGH$@y8NVhrd1iLE eM }Fʖ2~F[M<|lW#4E%ꠑY%BkuX!N8^٬,OGKUˈ:RW?3׬hK5:ۄq?3Uu_[i5; E9׼ko-wb9r9:n>!.U9izΖ񼈅HQݼ9>#ּ`--*#;!Dۓ[Ďo:!f'%'чC^ms ݺ\[$W^vpK,NáԴ^QAE(Z)MEm\帊EC+lLp?#Mycv ]{OҨͩMrsl"^{za5ĭ%Ϳb_֒^K#<ЏI}Oδj\t?*:PNqj3; LxtրxҎ{QGOQN=((IEQGEQMw2Oޛ$3f 2{M@r}M"q֖HVA^ƖHECC aHH@@=ʁFp3)ʁ{ Ҁj>ǀ3n5h:@yj:Q$AJI-Ċ(hq@cR;KQ M$EPSQX0J2T qTw U_ΩxMGyLepS>ZZs8+r+6i'r!T5Z)޻#snb#MF)ư(,cӑkQmw?!)sI@dgq޹LJdV&P?ճp:Cnc x~2gD%VTk{qa,{N*Ձ e+ʑB 8 {,S_LUKG4a(hI p̠/+#Q_ýDI/pu#gX鑤-ԹϚnq٫z6"[-ăn7Ayj eG ۝wArqQiz) Ztpc-p^f[<*=:dKKfӓ5,X⣱d٬cLcⴇMMlt1v̬GŕYi] 7c8 Տ:cIbwQ@b[ѢEVI!BUIƊ $P~Wf>EX~ Xs^yVQӞ*ΑMAd{YLzք7}{:x0Ű,Upw ׼CrzݲdHsۑW'{]SZ[NTfǷ<¹kRdtv7cONA/zu-AhȈq9~;\LleLG$~h?ٺ¾DJc[$ik YmաWcb;I8<|3o%lks JxrqXf6ZH$t[@ ۠آ~f`8ED!q/p[E3&lpǷ5Z\+|o0` o#@kIa.-nbֳa& eZDx! ?( sO~%"[ ;= =SY<Fc֠DIE>GTbeϸ[Ռ5-h!E <2gБZe Ofk_r4,CmYF/[߽1އ~sHfߵ;|9oeP}_ҩACzpl>~U$HmLKs#XP2&௸q&jzv-$I]pbM[>qQs\jF. I+gp*Ɵ%`a6A#w#߯a%4s^7$] :=j[)lE5̋'cp:d{Zoz@g¤th.Ls,08` *VG{$v)9 h_Iw2 Ӷ6co04{7, *qŨ^'&hℇt=jqpz}R{$ϑ8f೶[t9i9nzxVY^ ۙ`=yaۂK{10 ep1ǧP&)$ n7ɎG9v SoV3.e*N Qm94#7{ZOi'qp;Ww'qzsP]M;jP`X:Nktk'PC(ᶏAlN]͵kN?v$:JkRv_2W8ߧu^ky-ft3ǷWkz-ZHV8{2g[p3yA=c] @[Um(sܟgiky!Cr~WԬ6{r VbժZ(ڊ)Cc VTZwCGz(ϵ.hQEQKERQGR)xIE%> ?{ z<I<RARөh) rqADNI)QiN暷R)rMu"ePdw5>j(ETr Y@5F[%?1~0ZdU@kṉ1 O?5^|KI$Fώ4heiQk2.@<~uVĺڝ"$~i%aZ{_G6KqPp2yToUv$奘ssZĿ1bL\'ð\U(|MBC ol1#=Gү[X5G#jV(XԂg}zջskPQH&^wy$~SY%3m" /¡H~̭:e :5Ua:Nа(;֬7f2fNc,ZvkBbIV%p:npxB$bCʱہܟoj75#běTvZDۏRykaW#U?Ƶ0FsPI~6^[Ϭ~i!@|k–T_8`UPOOw^1g?xkR]8(6z֤%DZ6GZҼ-ADW }W.' $qWn5ڨ{{a0vX9SNqj5u}>nQW{ 0rp=QԵ7YF9V=xRGϨ$Ő}FAcsЋKh- PWޯ.6 ci`SPncr0%FYXcۀG󭙾 XImLI_ք t ,wHd9J4$:-0׵dd0Kh'q( VFIKe >T<c歜~cm0OR1wM&AvK91IW |f[V̶ȏS1=kOXKl8e j4G+JmP1 8;jZ镘08~7)[-Y#a`~ub=҂{I8!цӜrqԭ{h#2}=58VJ(e0*tq4b$Twz?_'ӭ4I؝rGMCwX34<3?aϿҹi%֩b䀏zdW؅?Ax5u߉4<^VvX}DZGMmjiXyrݼZ'۱DZmڤӊXIHy鼻YqP;qֹY)z c#-:x"8#wy2wH6s9s,L l { JFվ,L'wx==}xQ:}mD+Dg8QϷ֛In&(s3VU"#}HʻHcTAs2z~UKU&ɉ%VT7A\{k4I9Z0GF"3 bjhy.@?뚳y;,Ɠrz uREIՔpC=6҈m=o7%܏oj,/f<Sm|[;gSyqE`?Zli1Ur{cb>#ֲ&&M>CҲ9tc=3Y QxVdv #; Ff2#;{6iHbK)#&ր'~? xdhbTw;ު4;K$Y+տ5 #frNX;ViXHGýZKXc'vǮ)2Gڦ{o_ʟu5?%Kz*&WہUKіFGIlm{ޞ#u8,0~I ` eK@FՖ4#@'?1Z$mfDAu)pO+OC&)u )pO?:%<.c+rLy^;`zWptWb(\N$R=v/`xHKo'RFR|C~umiP 2v8 y95 D[(N}n'+fgt G=k+{r,G7ɖKuU_=Mkđ^t,rG͑+U̙" 6{^mKq༬df9hvPiüdcs?A]F.1 Q+;U/rYRIgwjL'?xG{Ek8f쮬6 4oB8 ϵT6o-Kgul! Ԛfť Ou!gDʾ?c@1Jo,/|CmˎXa#yBnICueisoY# tSx\ɫi¦Ď*߉!F6y3e烑Uunٌ-ʣE v5 BWU) Ð}i4 \g7zrܡESG8ֵ- q%m2ut5~’=i\ȭqK,ޙueH`hQxCuwLX"+2Te}rja-k !Ǡfy;Oͦ8d~giM`CcaH GnOyecr3AԵٕЈj؞1qWlۻWʊ܄ P}я)ͣ_7G40LOJqX[3,;R?u pӵM!FYo9&׸\2+ QXWYFϾJ/j!6:3s\k[2Gv gV-DjGU?=qZoa7dt?*'!;qҗYCjNEe 'xHPi ,(cؓ5ͭNEs~´ 9\vH=WQJ"%`ø?)nj0qz r&XV` y`?x决|أ BF{4/+5bbu"8-:s!oo(ԵD"y*wob]cq꺣G4Ƙ(}g6j:$CurvwtՙFkYcH::`/홮5;2ڥF c r>iop0UN:YXQ0\OwlB`x8=sY[Y"dDYp}A@̋pL6!?^ $B-l@~b^AձizWأiyt% *zF3S+f{昔"IStiڑyRyQyL [wmHO*g|͌~:diuge$f<+c,oĈdE;U 2 (R"6 lg>B{<#*$eq)iz 3 6{}iY{Mx-o0O+u~M806NÕ_^xNen"HlK"]ø^@3X>!%-4CI+5h()48)XMZԿK ":gκm/R]Fܷȇdt&3 KJN} sYiݕͺSD 'cֳ%-.\)򧌀F ǏƱIn}g(+'<HG=Ι-RtD$uu8R s&,.{I#u.uaׯ8EYp=gеi ;=(Y8ڳ\ ܠ m1}ե[ZYnL;L5z.b࿕mf\s.{ַ.R-,YE˘9S֭͵wp:mEb\sr =;W-kxZ[Iq5C/U>faО:?okqk6<]ryN|䓎ù jLMp3!@\~O nnu).fXzr}kA>ia y=1EmGRԚ4`C2A#z+yUHo)yޭj){EsE):EQGCJ bR▊:Q> ?ʆ"};JC.wgӿJ@㩪*7qqVl$n/R9z?*:u\*ԍDUel _Z7M{[)]‘dNJ''ͷ&'UUnOf'B&^W (Af=*-4?xcT yK#Nq"s֩ OO4[!%6tQ}%H#';d@r;qWHlϗ&0AUK xWumNY-\G@?L^J60>tؼ:[H }>[{UXlJ_k$֠_ Ol$/?UR >["\~smvBO'kĽc^ʳnaoge5;Z0xQW A-i#^H?u%k[8G,yAר*֑>D Hlc5k_6+g1㠭t}:ޖ[lc3Ҭ,$Q̡eEpp#5mI@Y\0ȢNQ(Rcފ)zQE&hQڊ): (4QI(QFSXddu)+$ezְ;oZ "U-{{\'!ԵDz[X ʋ*Ԛd2[`2n'{V!8^.cV`?Onգiev7:lh1C8joi:c!, qn1=+-!?cN@zu `xoHm IsqJݢhdaB $s~=Y7p\n#,>3>k.mz{K= ѿ |܀jڭtxUn@'^@9:||Klw93~uJom%xmZ9XIs*1\7q٣% 4$xuUE `<#,+Ib$U"s֕%8 4EosSjno 4l(Q}8>$KvsiRۤ ==>ƙ%aw)3ʬ݆?POekmrIոwGAoSRۉ.R0Oz}vp@1+Hߌ40A#:,zT)\UbdnXҖI<1џ1ZW:lSnqm4́= ciY\`ř)P[_n5T{gg'ߠ{ KVu:8*fV?_&ܰ:qҪ%ȫA? 鷕aYLW.R].]2@ >`=/J譯CKwV@9''ߒGҺXj!LӒ #|q^I{[[n=:k; 8 Ri:o9ql!Bz3AK̶`$z3>]$MèP[O An!vl}Mv0BP@@b PeQxth, v@1Ȍ9V9CM[UK"F,[n(U?Ƹfsujg-%)1srzt wٵ ,kyob1Wn63_KЬҍƗX9#@-YE;i^i)" cq?ZuJS`:j:#H_" vHwֵH$-"k 8}=+T 9DE%Ԑ*q95 {hQ H`>`zVnf)bf!=# Ҭo/eh IO=f`sueyq2K1ecd$}Gew[[ k$9PWYiv$ڝe]xVxcdBZe?O`}=)lAD(BL'ҵ+-qu=/6YwZz]ڄhO,Gخ/^GWKC{6#IPp~F};P{ {F@x°$gqӿnj4I# I号 ~Ny d{K>w\W:o'WާaFIy$|WߎjK7j~s1.0x(I-rpN?#Ew v8'Jt)ڍё%yLV(VقGCqӱ#1PЯ|Ks8NAcW)jq&yS)H 8]Z"'5薶Y "B2IAvP NKRRJ(()h4R:J(3GZ1G.yQG>gs֓_> ?(QJ((\QEdE&9=hE-QEQGRuQEQEPRd Q֊(tQHs)r1.ihECXU)=W9Hiq &{r ?Y#E)>xn-8g#x =ֹ ^ɦM,7  )ԃkC{)^Hg IfSz_rF@qa[ۯΞl{#Бx*;QmBM^T~dj6z6~ϧėZ`^q֙i[1#?y̯ F87-oc N<ǧ] Ӹk奪dPd $Ԝqֵo IbibG)FH8`֍r-#z 889 u'kռlX6Onbu1=kԒKokY y C툳ֲ4Y& ĀC#q⦍gPA }Υy`}z Ym eFp$VJ+K#1,Gn̊^i߀.@~WOuԸ?/4FnҺD"cƗ0T?P ߞ*KoI Q<  KtO=2%OWX_5JBLC2x+m!Z.K7P y7g5["2~?u79Ϧ+RMgPȎXd+M_Qm?uG<uqfc2n$ K~%ī䄙>nez(%:YS@b- >Pz-ԗL-ᐥ@ p6=~։u\wBh )s'֝>##9)^,Ew[[ ̣MfiNnnAX1^Eާop6(?Z&4薞TR$"VUeQ\,~F n``wWÚlF]w"^x+ЫmW(ym6.NIռwzEpˣiV[}d2Hc,ltЀ ^G%ĚMٵI giG{w$}&+")u{ĺv^<7"Ekt\mǡR^zˍsš,%Y!@瑏Tմ @iw^(0#1WEku˨"Io -NJ9zuiWh`;Vk X.6ln8HSӣF  |>ٮMK472GkKepN1*U\sEQEQGJZ(Z( (RRE/ozJ(ڒQE:QE֊((QAEwJ(sEQEQEQE(P(QE)1EE(9(+?ZUm!7Cr+moq.0#+W>MPH\m%:\O4#*r.3\Fo=W2NALA_I.A3\Ƒ8>aOkF8bg`*[x(VloHD+/8X=ŬPˮHֹ 3>߾s$TBwmzV4E9}>;gx>(%ĩdžꧨ>^ afFqN0?*ٵɉlA u8TҬs1$8sg F` t{l?ΠM 2hdbV@FE" PL:i$S1y$ǡ`wl25d#1nw즌@cWިXjw ֯wH.a`5Z~\flJ@5zqܒ3spF"W*qֳDsɌF qT j/+W-s6yO#X2bgid ZXMLq%_'hC\嶛poVT/HKº0կpD1 >(T/0~nV%:*[vHʞnDCzҾVݢC.Dc=?uWh(S<ossВvi1nX h~(l<9O2zNupjΞ$0ģϓvsQGqp[&P` ?ZihMp̠ap\cֲu Cj㵶g& t1Q:TEM rz߂Wo[QzMz(ۡV/Гf+V_„z8ɥSʥ@@8C~Iͺq%o`}bO,gMbK/`Ok>ڼnx(Xr9ϵ{^y!UsFdE̡j\6GU. Fr9PxYÞϋG0aa?\l i31ε|=$-h0ϟa⼟NG/#'ڼcCӡ+H< 3q^aiqs d{׫x4LǏRyH~WxtM 7-+<pRTvF;̯#$O>ƻ:h o#*I)[qG1!79tW7Ys(똌Alm|?+xe#x/d[j̍) !s\^ϣDS0$dHF~6g|u.$p_)];SFCjݏJuvY[ ^ mߘ1H5c#v3Y9Z(((((8G|bQG^Խ(> ?;EQEPQEQEQERcRE%REQGz()14QGJ(ފ(Z((E袎QERw(5ȹI91ۮkξ#Zyf=:W+wmF c Xgw 4P=XmoJtb9fgn6sx泮SP!DrlmP=j]ou,vV%@e}}85kӵ+3IHTXgTy`^$ׯ~qcE4e}{ܚVK!BSb^ 72 c#qq֞-NbgreH|sT I62e#PǠ{㹡YdC"n] Ud#3`44N"^zRF9n_OEAq4ң\ < .h/^\*K V0F 힕-Ox\,$L2 d~KWs}7Vy$lK1㑃Xi r 1K0X#V^|{k:2$bO1W[[wX*#Ө>Ҵ_\Al۵:cdcyr}J^sۨ?_Jg7v銪 m9*u duuq>[(dW$H ҨZuƭ<U39' Xk9mwe'շ@z*,om(Oc- z:e 2K/V,{}WM!դURf;iHϢ@ cGT}bj7A qU[OIS]N1L4*tPHTMH-]ҏ7,[9)ߎ3^ gëI |˒/9ҍw[OAB,Y{7--%EU,rHoGHΖNzTy̪I9$^q[K#hKȹ \k۾\^a}$;]ҡv9 p2:׬|=X-ekq2)rr^p)⋫}ɀ:ųbƾl 8gFY'Mdt>-6nV8f8?Z>ioj֞7qe~'9h,'q eap8sUNm*VC!?QX7z0KwoqxBėY\ۙrf@z\滣Ǯ]GmdCAҵ񶓤JIq *"ȣ xw:W?Ñ.K3 IU@dp+-+V (sڣE֥oinaۏ5$];VR`&4BL8=ZuFU{e[qn3flz81ũ!j t`uw,'S^[rH Q#ЃʖR2o_i$]ʣ=8ۥ> ׋B=0qߵA`.;X1ϺnSG ds5*LBPNv߻Ӛ|CHp }?<3f4! }:=̘deb 9cxb9Sqcpß_+i, m;8FQ" 8qϯ&So3G(R%2;0)$r20NkKG@dh =êg>m:ԺyQW*1Q=*x\Kp$W ĉ8qGS\eH|o yװ,!H ~װMFKMc\(*E˻K *=QS 43w9AT%PLm^$vo?U%Y'w}Oj3(3B~ª^H<@S iFpҳlXXۯLr,2I/ʶKKxǗ:, BeYzUڔFtYo *-糺е{k2KaIfpP.}^g%kN?GQMz+i-o}^ R?t 3ڄesMosc5 džlr9o5Yx?L˧4±.G 18=>iAo-FNy.{{B;R+TDVT6X{Ǯ;gmnO?[4YJD6d'q<=΢jۢ$QNwJ瀫]+$Ojjd́3s] to2ٽƢS̚3C'h@?GtN 5_2[dw緶63(g s3l{t5wYE|^ykidk9v'##85j:TіickP:@Gy<SIfXREϘt$2+|1c'm,gz֪M̶w ƊPr)@> ?:EQEQEQEQG4QAN1EE((QEQE'QE袎QEQ(((Ev(+Ph  m*epU[b#ha0|r+v9\~jH6A%}s?ZǴw67rd2 /?_Nh[3/,]xd(%F$̨g8?JG)1 #LAo8$3E`TаHL0 ؀׃+_O>Fnc * nCZ5҆sq\ؾCdBɹY`{eQ\YL^w1 g`lӰoP;fٯ'0Վc@].*1HnHvSL}GrS@ QJBX@)$pI3T.B+TnB)ϛ5YU by54*x$nN=kMv:}/6Ӭke}5 8;Omaiu=yur̟x/}Wiwg "Xx"=5k"Ch }=]%o" y>o- d6i{:jΩmo0" gb8vWɈ| =O~+5^SzIw>oʡOSJ/]/XK ;[R@ ~^$}B#I }`s?ZEau%z ! Jø98~5H+9fHSJ)b\}+^[5YLVpwg~% 2.dTʀzVņ4v7i;*!3'^~c[eqP&k+_Ik5FXck qx]6E-fE yK44cy5)>P'zt xmZ=N 8<~M'E?i&Qfw33U/nnZn'BpvJ38=ZjW+(2*p9 LqzQ^7Wo̅#)>IGP8u՛Y⺕U&@|E}",s2/@?Jt TLWn%dQ0ZZTQEQGj(+3Ve% [h裎QXZt2HLӅ-=k/V Kv=j>#޴ V(ڣw\d%Z]F_\|dfx9 8Q۽tZW6x1bB27ʙ$; BAgPӼQ"dY# wW0H݇,xRmJcۢ׾k5Z^\8phw?zvurX RT$v@~jf7%($\o\R&B ltni>h. %$iP~)^h.m̌ 78ZաWh3KފJ8QځE(J((Q@(sEQE8NQKEQEQG(4QHq(1EQڊ((4QA: Sdo.&r ڤQ\-eq3Nq2i<$im[oQ-57 $qĞdVyC ~Oj慬Put 'jFkAhLb Oa>w35-a3K&dTHr{cJf1 (4_q#'ץ^۴pl2?LԙbS"&ֹ'81u{96?:PWϊ"ٶ *żf(-m !pۀ?Bs,Q+g8y?.s+'MJecQ%;`H9$׭eiO+H$_nb*$>f$x;^ %鼋-'.nԭC<[@=22+Э񼄗iq SXbiR0b=Gծŭhe+g  ?ɪǑp[&ʶpN~uPj25ND_qt+y"d.XnvyFێ;'\8xSÒxNZY?H/Һ ohx~k2K*~YXA䌎2٬-Kӱc0Xt]>]eKd`ub63t+94I4dmnj¨kqYhvWQXȓVW1g8\':jZ~ǧ\yI4X,!'Ge;ZHyDnT)3j \[AhsO~߅\=j2/qB1}S߷V)sn[-><+5^ic-m ?^^EQEQEQEPy1J()=;E(;E-Q(֊(OƊ(QFMQ߭RJ(\{E%RQE-Ts: 9^+K PO{~=* Y%nUSsc0#fU:[M v1/#;boI N[0w<1?8? =G rOuH2L&K 0L#"y]d?Ckz1['8>Ɱ%km$q&1~q3][2JqpOVoKS.,DFvpx+m~̳ lQrB=Mly -2PrB1j:QX[oz/r^91C9 5խ.\ؒ3r8㓚ɾY]\rZ8ǩul OԓVy*wSDJ,x$OZne'1$SH sLSZEUfŒ`ڢhUh,wyk𦈒QdLʃ9P>*T$ȩ>N輙aڟc'.-D9-|=j[X 6NZsɐsa~uJInulZդ:< 6˃ې:Uy7jIfd^3, FYpHKJ;7gut2mmHYCZP-żK+V;UyzڏYy4Ҿgz޳8c^yo$Vpy>9Q^'I#d <I#~^10tW##= saA}kݵF?lv ˁN6|r*(?+S@22oŊT*0tK;QGOűVawϪ۶n4~确E歧M[~5idӏ& J]VJd)O5~4jy"YN$5@=2V֕i:6_a[iLvk,BZna:r OduCHPٷ"e6Is/@~adk;x~=>hLw dku4XL̝u={/"Ά'ӭ<ߙH z#8nL*о rOnr }F2 ==Zm.kQV(2y bu+^u+cʳ/o++SKER+a*̻9 oxcQy,YEj1bV#.AO8Eu}2鷒C hW20<IyowÓ7Ov (1|<s/ lcڹ)6oq2=+sž%yIlݤMn1Gj][b?gՋ7aVBc3UXuc pOEUw%ư@SDTV+imKwnbMk'ӭsӨgiE~s5w*mg'Z Ll!Whփ6F}jI@>JƬSnz#9 FSn{79dEt 0X%2~x-$uyN@ =p;p?uGC#`(=p;^3ma5s8ܚحԢ(1FsE'J^QRih)?JJZ(((((B@R3*!f8P2IbK:SMX]Ѹu2 ":HQGz}:Q֊((QE\E3ڊ)qEEQGEQEQ2O $:A IRL]scXwAuv-V!elgy}+2`bNm;+gE-i$ K0 0vW>LI2' \5ko<83*Ƴ[:.$ ulZUຜ ?ӵ[oa48(;X&[Gr;~Ud~Vn];9n y>Xz lVf’NY$KY. =t$Ip}np9'艻[{h 3j/sC}xWo$AfUNI+VDn1ڷ7಩F=V=ޢNDVy<'ZvڙwnwR~Uխ:t\4.bdUTY'ӓV6ayŦ"n?$9k?Q/q SS9zyQ-Ν8v 1u<ޡI%I&>\c,19P4 'I?19"V!RUÐ>t찫 ®O@5౼}PX$E$l89cj*[]N~u&9$C"8N@Q6yc\vDr#t9CVVo;3^0akr?« 6t7F70aϹ8 Dd1ټy9V}IM7;Ū)j؞@[uVfb{fv-Oȡk:́X <QϚv}Z}w ]h : ȗS3@Ru"[p$Ԥ|ܯE-ooBq& pr]iɓ<s S^ 5YA6(xwf% CM3Ѳdj drVMwjp9(䑶gSM&R9ݱ^I[fqSe%~&U&8ݎ7I#lϯ̧]kosXoIyp2s mZ->AҁY-i/3滙$HieuD@YԚYeY]R4(ɮI(I" 3=kZm( @{c93M~#iS? ShDT(bOzs~?shd]緯NkWN]Cv%ᶁcwg7󮛦j[+Ś eө= WL1s ' 6>(lE9-V Eï+0~:]"-_Yu"-"UuN.UڽۏMMGSdaZR,r%~Al !DiJ}ԑu妭fVRI;;ΛUR#- T/kj!Tv}RG]lTwnd؟=SԵ[=&=\dv*B[؇ןVV6İ)ו[VyVK y~c)'ե.bwo8!= ~z0:úxƳp4v.(OLC7˪LY똶CyL8TcBNsre3.vS"XC&)P\"WDdTmu3(J]v@ʯvTS> [yФHIVn&Uxw`r;}DjWp  +6? }#jkCF aMR͏l_Q^ަ4ScHUYW.Թ+t9G<1m6(O_Ri](s$= mec+FrFy=ǯrx\yy$$%}7p<zzۼ0d<3׭o/A:W%AaFzWd 0}=)J KKLHcFܑP1 })9¤( QޒQ֊(R+> ?++(֎wQEQEsEQEQIE0(R(QQE(EQKE袖)((EtNQUVc Օ,N8J#Td6Y"\wf.cp{ WPhF'EG|#_Rxo \_^^s.CD%1唞 2y_R{4kWh\ Hev(+.I#]䷹PJ6P0JAo5[cIW=;jEy >kr*3V?i}[ʎ5-Ǧu5ެDvLrKmO@5N1q)\۞OV.dhș'aG}qjj:ڊHm@&H`s֖}ޫf]w\m^8cEPYeGj7\oRݎ~Փhn?j[bԆ`\?Uyiڌ1ۀԨ`XVQ,-q9URG$hP}sMyrc8;W.TH7O}j .VX *OdUHU-8=zOjZPzkut dL~o$q=NzXr.Hm^EDY1@=RIP %+ʨaC;@klnlfO ;> !7:)m\Ae5nP|*ҳݖ"mwYOe$UQVmvd@޵~9o4+tcQa4sx -4', `gWMm M$B'sMfC)U+?@Rh15e.B;sX8 l?Xړ(qOɗ1Эݪ c,s('gֺo UkѶiH8 {gַަmF#ô؞? קhtZn1GcbƓ[[ÊIG7jOL`8p.G˽ܶS8=rpɠk\=qrrg F?ݮ3Nth 'GW*r,de.7f@@=j6%7ZUǚʗle,f@*KUgӥM"FYrv\@3qzZO$76,Gl8;Ti3[]i61 $".\P㌃ӵMwvsK }h1NGF/#(^wn!fxn+i5K7ۈoAU=g!HbIwg.N.g_4Ud#88YL&FMy#SZkYCcV]=;',|q",ׅT)E9ەtp=ѯ$6R$e2HJpJcv>O7I̍ *8Q{U6o8jHYc%O3X[ԬugH̊ܕ M5 -YYW.*>T[%ѾeI&SFQ{uSV|2~~mŜ\g-GSRYoJ8>bn㷜BP\YSi-t[{VQ>>d _NϽOkE}kb|2??d:uŜk8U <˖8%RHtcPOW%َ=˟*cqj%/lma XǹcSSGny&pE_N*弖q O2ə$E9`\vڭ@ɦE|^9$;{xZd%g$E*<$IEs2hєl~8{5a'ˌШA:kicIs!V6;F€=q:C]yc(F8l 7|e&Io0# %h"_&:ÓSXqT-һ;;gn1sXwwDKَqcXhu:fGps~7Mn*+41ڇs'S,hnfq OjʞDaxܙ ұȒY\XuL9WWڵ;(dH ;BmZit5sj74}C`zc޻&.9$ߎ40xCա.؏M2Þí"H$e#'elZ'űF6zmazW د"Kr-<=Ԑ=ǯ}o#kpQW"2{ {{}=͵C/ / OI{ֆfQθpݑU'NMRS=7 r`ބcQVlZk-&Jeb$S#?1ЏO: W:2ʁ79oTt:ZZHڕ3J7H[OO|`mmݯE 1| ƣMFODrn`@QNzz}(n;652N_s g7NIًΧ- >==+SRﵽr"$=AFdzg z5ڏ|E@X1@p!rǯ=3Zwe浬En46fPpa9~w>}Rt&4M?<^ry]BʱG nf|9 Fz^rZ LLRZ.c +'3xe!ѡ4v6 WǮE^:ّͻEs:nHU ָ]OTHk+iD )#%{cy֭m> p '=KQVT)d% >ű_+II7ʉ $zq'z?jQJh43JvCyeodkP)zTT*E y%odkI졹֩<hV$Lm6l|75k"yqd|K8LZٕs'@چygJ?կ͙T9<1\' +Etmlps*'F0=+.9d"@NBn^p:zljdSNBOkaӸ/ 'UB70z#xp2] ǭ^ǾptiIgg?Q]t(mQ]KC!aE{^zRE(E (((((KERGz1(ty> ?ɯ\\QER(((();QE袖(QEQ(=((QE-QEQERE6)ʳ(;zgFE+ȊW#8>ZcF̡jwj\g, !vJsz~o5qɳ,Тocּ+O˴Dm$>=k4avY/%Sʧ ~":^nW,?MaWN'77.y([#=:ԝ,@pO5j[3dC2BV="XJ}luHm)(8霶'D${}đoxМgWi$u*P׹"q4Fws}~.uO&!gK[p>j{9nSI7UN?ZՍNE62k\]xJʱ< ۼc` 2cȭ]m]S0\fѴ{kM>6o΋8b[[+xiRUrZ5#I';gaoRU"I-c95*eqm-NP"=z/HY\څYgGR# zvk\[ +)Pzo2+XtHc{xN}U|Ŀ (g' NFw99ε|C2<[0;~f=9''>k i[hHsu$޵|A2ʒX6Bo1''>REb4"Szqc$((^dy+߆?JrH#G@R*9ZAq9+H {fq4Ÿ5qOsQLycE]k;qYzkƺa cږb7qc?5:f%i^Vo,r?,?*/E]~|),r?,?*?L;TswHG\:+ʰ>$jʰje9dM=m~br9utxjUAˌGQi} K[$hRr?*mtlW]%ޓ4&.ؘ$dr3=G5{aJbg'͎">es\}^$e5]2ر=:mk!]ju=:)k5ߵڜam!zu?iyf`(I V NՍHK0?Vڍ:},XՉHK0?VۏD׮$!X;V0GBKOazբmT%,R Cz<>qRwظzXep5 qXZ+؂[Al\~=([Yw;p6[^gciZv R5 ++]:-l㷁8+K{HPaQUSqEQE-QEQEQE-RQEQKEږZ(Q4f(3E (EQEJ(hR(QE ((4QHhQFhzQE(Es( pi 6BXʜ4$dc FG ٔdcIb+X-F˕?³dImܙw ~ LW1=hB)S*A|nQN?kZCi üJ'/NpEN5Ӽ?ޓi\noL8GƯo+HYn?V=\RfhqL@ǿNlww'13$IqStK˫r,~\S,r0)=ƪ/Jv0DP9?`a$GpS#?GnBQT  gajbDؼHf@=PFq#>PcY`Y+gUc`D>`Jq?қ6g,fPх s) & 21uQsG^'[ic$0} I`{9JAHDdpaI$N9RL+8#} {.sa=YM&YW{1jqׯZE=֠e $d.vGa~RYE5HC$r8.vi9_֝iw+r,.ʏΙ=Es|2y0U> ϧ'{wG^X y2KSHyQU> sZXg畜)ejAM+N,{K+$k3ZbU˵7d1Yڼ\EycSb[$K x?LÖPKH BdKRxz]] vAx oνxͤ.b-"OaD-_8;yE{-ݍoo"K)8W@Z@``UޕZ| d5xv]2 Byw L~o bkIJ7an#sfO?0}{59'dPo*Mzu >*;Y$cTմlPN uǠ=2 YCΒ#tz<R=Z]1NG5kMG\ Bz6ԡ]^(S.1׎U汗X7V0]~\qVͫ8)irt\3", L 9P%7sw2#[道J)c4׺d!nVn{ tCS->W&ٶ܏3cbsH'p-LZ6b9X;y:.}3ɚks$9#=I{i~ ' qGTGQ,eVgջMC0B]bQԖ;.SIL{̣!&#hնVw+UMtmF 5m՝RM-dVΣ!%# O)=K?q\my=Ã$33ko^M 3 !ōq7k ٖၒL8<~cYe,AI7Rp8f䘶Oȿ~MpX?=[:S^%P *WNF}Zk2F"skgH[+v1#3VoY's;D^>Չch#$؈K5fHEIQv'k|5}M1lrzW[V" y˱ϧzztpFf#2ˎ]zۭJ> /EQE-QEQE袊(()h(.(֒ќ(> ?딼b)(E)EQEQE)1ERQE-PzE 99㎔<䎼q@9)ih&(3EQE-RQEQAQIEQ\[k[WkW$W9p_ӯE/nH\l++F=Vn=O$a#LJҰtbn%ArӒ6ќY=չOi^q_Jq%yK+- ^ye9KKe>bh*+ifjW्px;vTW[;UP\\8=w;G]E-ܛUgyd:qDzks@馐:t8Q u04zrUre8WY]t^I.<'jog6~Nέl;SSK&{) $LXciWAPGӮ#heŔW$ xnPI4ḧ́Ĩ$`zm-gY%CIؐ2CZ ZO k2}89փ>%m;K ,Y` dgR\\ F+N#)_Lw=k^"}(A‘Ա<7Ospb8gpu,}=^=Vlf)D 3Mbj6 kMA 0= 7cg`a:KoFCivd: MU"o=AvLTCM,"UPJܑՏTuOiZڢij!T%Wov#BtR( U\IR:U{ zDZ lz<6!&'~)ڂAkϧt,v s# ?@irc'myvO1<Fkε]R܍;IHAs=9&O!}:<^խ,:~/.ǹ9&~>kV&IHp?嫜?RBuMג-zzV}XnʷƝMu1@pxT]̊<]4p qŜ̌NxRo;\uJww7 = @Oj!{x Gz*u tWo/ :3_Da3`=ʺ+>QF(hQEQEPNhE-RQE-.=裥% SE(RQ@<@E'_Ɗ(Ev(t(()(hQEwPOPxAEL?((83 IEQE-W7c9ў+hLҼRA \=K,w!@=\v(!XԀ/ O#BԬ͇`=8ҹooJCaG_ZFWܤp3;#:=Ŭie`J t׽l7[ ̱ƬB]) 3 uPUׯԟzvĒn^?R!LӤ[*i.<)U)?^ORxbK @2f  QI2qR;23FѠYLX@#ޭ^Kwy]*m̪Y8sڬ]Ksu{qS*>bo,pTG8Z.R-Vq!𥘾vny̑jwSFql%`q{$z2$;-v[2&3X@N>f,2H$_.m5U!ˈT6q}\ U.6Gs8zpK挳¢9qg2Ue= 4˅DgcV(,PRp?scN1! $=38s qۚ4$rͩǴ81ᴼbͫBQx~F +ie*XI8#5 kYڑd F5QĄ$qp> %ϵQMy8 p>5ze\,=r+u(m&P0v9t}j]e@=x\oNZaSqf>ج\m--dmBuCc෰`ASb^^8#$2gch_^ȷ oxV;G ?(QFh(h(&):w3Q()h(;3E(QECEQEJ(hhE%VVvӥq?1i*vϠ\ϋ)q0w$c;rG07gqq[hfv7M9-}k =x+&&s$)kW_ʹm+=SXR[erTw8è7,BJ81(8|uG)sD y^2<>SYJX{ ϠDګ#~y\2٤̳ƖZE vFq'05^]\M!He(ؑ.n$vus!$ghjossm%%##}?SU*MH]E-㶲3y:ztV u X<8.GOx}9= W78K$L6.2*6GIo (8?pv8*[{EnaXAI B<ǰcUs}w AЖZNʡ؜x[ >A8!HD(+[{UR@&AٖaHNH66ꚈζgwA=cdZffSS??Oa“J ~TPB?i_-hhXFE^Ĉ!89{ӼCz-a'Z:Hx;em?N镦4Xhy^]ax.ላUuŴr î9k0[EDȌ-#( 7V/#/H$%7w5gK+c }܊sQM"Hdw$L Iȩjo2qܓ|*9o-/$P2dP;rU!$ FpW1Ov>)d;fpTbETI'nx?jͯKw`,+vD2I=v4J$j85lj^ROcl7m̻=!OqV,o/,-W̻'Zx=1Vt춖}ӴEksr+^׊:eblt9i9a{ x-SrNBGͺrGVWn+;iUIq6:VΥ J.NOJa"^+0@wȊ*QOQQEQEPH&@'giI~\nF}(=({S){H#rG4t#4QKE-tJ()G(=4@))(;E/Ҋ);(tQEQEQH(E}((Q(E()()()(Gz(+2yZ_R6 qgsl۽E#7{},]8HAR:{m[ 񝨉A(+1? cAh`c*=?WnH&v"'75 'ccV-Ң7ܗO淗jx'#槄9l7clv)}O#ڹtܡL*_ިxXi<4Plbqn٪.W|1(),\`ް6k3{]pιءPl`fiّ`ﴁX-mc &y=0FI@[[uEy9/Gf{:!a;Vgn P0 C5_+6r1R=2}aksy34I-#]ڋ-BnȠp}@w8.0&1;2@ȠFq@?ZE4.T劁N3ǵfCiapp%@R;k8Y$p Qs|X"Bݛa껄[^KاcX GAb|k~ m_GMiy w}#:62}.rbo']9N^K4MC c']izp-q!n$=-be3 lK l, GPF0} t }[kv#I b466P fD[ZGˋtnqvW>Z־`b-"eŴmnJIb u-!^gLӪ}αЎR }=񞘬Khݲ+m>gc|D~"e3`}t;6#j9+sW Z<7?rl s{WvYXc\IVF6Ƥcܟ+ys#BO\̱xwrXI{u|bz/aOs_YQxcG!nL4L^߇{{^5kJ+ZM;1̀3ƻWrg|0GS-ay7NL>o^10YEci ׵uehbBV>56piQZ[.آPz-QJ(Q@B2{RJB(Rөhb()EP(E'֊()sE;QE'I_> ?WWQڊ);QE Qڊ(S֊(P(H;ntϣ;۝gyIpTAY\Sq=-+ĕ{6|4~e^m\E4.Έ][Q8`?!T@EYyXvQlp*n'VvӖflgmQJwxIDK7SlҠSL1&أ!cT;;Nޮڎ->BDeUEbFX@ǹZ,`{*v#w kwn#E^;r#ֳO{ưf7\cU=jυnm Ÿ+$YU3ڽz u;5k&ȣs*$>K(7:kC"l';Ns $7Xk/zm; $}8^5uÒ^S}z@;V;{;g$I{Ht C~ưm,il-<1?* ]vf=tc!5(Y͈ەx}KU*DO7P+4.%1v'[q:tisi`vG.U>zSla?e-2g~XqԜWG>S1>o,s1SJ>׿qZV@lc{Vv]\RC%}5$ k,Ad[fgɐ`큞yh$,;%f gzVh#GioI+1!ŔR j_\Mk ۙ%|b GR=HW02![x g. =HRXP֭ _#rcӊͨG,ey p}9 F}A%Ao ''Qrk$B]'r{QmzL5{"~cՔ~=뢊8+0 Hcvvf-Nlvv3&6 Dh<1]/ 6rlS h=:{En-d*ܯ\lK&k. $F' rc뗻p]<'YIe,0!=?3 NDK<ğK%܂9`RcP6ʍjCv)J! ۶* Ȅ6P Ap< =zuy;.s7z~XsXwys) Z+_.J\>ޭhҋn1" n#UZI. s"̤`*}E^P:}geA~*?. /֔Wcc嗱sV2Y|-,zKpFN2fWhektQNG;}^xrc}o);ˡ`H?jŗX𡶻e,xA!x\d~kmnOk{ ^"XcKx_Q̷v\[xA!zcj_ ZO" $VS%#O乫^ҵuoY[%pc|?Տ [i8)#%#t$^V<Ҭ< ?^^KץRqEQEQIފ)(QE-Rt4QERwuRQEFsޓ9FsގPhEf(QF8:QEQEQGz(ե7۔^Ar9-RS4fHzdpn,jO2|窜 y?$B7,T 2s~yExe\I99jtvvڏ(yq$뺭^t+H&Y~zTF-"7Ӗy}9~fVd)s|:%9ϐ'R\nݶO(LzH?J,9cXZVF /1e?LuX4w5Ā[ҹ=e;R4H-18q2O)"A Sn6vPSL=1[O囷($gns ws[~}eƨ[}4 H!2*wX35`]&=+FWS-u{(4t$^oOǾI oE5F&*0 $W5HǖӪ#mv@qG?]U&KXݭ,Tr8F2A銗U|˔Tf6+85hXW!vI sso#.bWFs$ƹ_5dXI2'k5G4G@劃V 'j a92 ORR*3}yK*#1ddgלT*$?sژ462Fx8<5nGNޕ}* 78~MvHNH$B]W֋rIo$.1#dgێjhུxY$\aoOwm$:$r`l;q޽kQagcz|^ʣϯ'j]O↟ga:c}2)$\zvW<}ckiVr( }}9?yյη ]<훛^ vy>4,/}8Egnyھt>XgxM1G/8ھgt?WLMcg   ktɍϊƞRh~[6Pَp~g7!6+9Sۃ?3Uִ3Re[h*_pU_\($Tֵ'G.f;J{x*oX7Up5imIJ,ג;KnT82{f{SlwgVDs\5֯Lj{g:}p !n {pds\΢k Ey~(W[e5F&Ib&?@:5Ig&Ib?ڬ׷4Y+GkdU\F%88[yv{U*w\u_.ȅ`DZZcb(ݥP|=ERXbTc UERH b@73r=IkJhclKGtMvϡZi/\.o;mcۆWTt[#HOXAS[Z[:s)՛;I]e[ۉc##6vvYUI22gn{{}+ZZڢ){QE(((EQKEQEQEQEw=(I):(QRg(E}hQEQF(QJ((Rt1RE!>QFy;QEER():EQIڊ(EjS^Mku, {#1l~ּ7L/Vʅ;{cy罋8 _-@8 s_zKHKQ@fŸ7 ˜N _ x? Ks<\d> `~GO“V> XD\ IZ*6c bHFs1SkWq*pƊ񓂄ڇ u'dw y8oTIm)qx4uVu5<1my!=|Ougd$p$BPb.z0;{a5+$a aCƱoeFW! #6?K:f69}+S#'A>sN?}aqIr͌鏰51A~[uq(9,޹ ]k})-H wEp50:pYsV-"7Q^bK&K={n8,a t $%ryljQ$ ,8\?:ŚM7!I˛o)#Ԛk١9Qe̱ͷ&8@_>IIYZ+*K8Q'k]gfAbkq&o7;FDrpO+.[;4x 6%Eې~c:u`|fW$ @\S}H @TvVGbl amXޙF6mXLjtc% su^w1nUzw'ҳ@bl 55HDa= tRSQw_UR#Y\c5KQ4r wZԽծ$4D1!!W?ψnt|b#0w9v -+JɉHڿx9_gq]7Xg"=џo)ln5+L h.W' `;Fpy?ZivR_ݿlkSGldpzjힱjvws5O5Q!2,0ϮEjڔWs3VB sz_"/nek؆GDryr]o,!t;k9uVn8bsۧZFch[BMkf'*-'=u&`-=rpO]֥lƍЏIx2xiE%DGry>¹ {Y:E!y 1+F辿j!?}?*HԁLً1N'r^-ʰdPrs[U[}ѝQqch1<_o!-LeoK$\g3kӭ鯮z =<{zOtuRMsR',e#<{]g&&xN[T}OzU a K jFGaԢ(1ϵSC9U#+w<jȌ쁆+q4:*9#8tNPzE袖(֎QEQEQEQErih3EQ@4> ?ߠ\\֊(Q@(Q@Z((98Aފ(Ҋ)qE\QEf) QQEQJ((QF(d})J S]kQ{-귷J崂(0vlx. Y6i۟p[/ɊBn6~}pÜ;MalŞ 8?_1*ڍqLA >cߕJ-6}pǓER]57nuY9 zöjh^Ӑǜ#OL(ZwS6"FxH` °?ROK}5cs?u<#.>ǹx#qk#XIHZ+X`gZaJ-TA.7ٛUvScyVpwLs~-2:5=6^f't=o݅zT_[E W %a1}r=)^omɩ4HcVF.YbDM 8>vaLG(c wcuش-*`ǃְvt,#X7n#gE$V6#v=8pWF ۪wGnԎYYH7:}ޤ}zw=bm*esϯNRkkGO'>Ycx0`9hI"Rva9zKxmpV2GǭvԺCo5ŻoXh 9]/,&[\^۱!os!GsMjϯ_>lkq4$HqQԓIM+?Zi\E8{5 ʚ-FN>ܖ' U{kyDfg]p qCs-h"urp3?w7NXw,TO$uҺM[- *TBvoV9Iӥoj>{,0hv8׷Jm`C\׭i[$o,rc=N9 "b47 {lzܬK$h{=+-ɼXt5$ۺҰ^ sq4 ,$V]9QEQMH፤K1ɦy(eZd m$2 %ƳƩyC鎜d0Esh۔_ǰqējlL`5uEg,<*$UuVUV`"Tw=I?VBw,{@UrjjSRQEQEQE((Z(J(&(QR}hQGJ(EQEQҊ)hJ(Rh(\ќIQH((QEb(J(Fûqj9!Ļ|6˳o3!\3ol]B˥xl1pIawy(q 0T;Job$Ȳ<<#ެxVoߪJ 1F*Ʒt[SK,aLd>Œb'!?Z7Vw> ӡc6@릴COBNyi[C> crnl 685 $~63`8IO2aޡm$D`-}zV6Wj:s0,|z(QOԢ{j6/l^=('Aa{ W[v@^=.Mexbx#;[(HܑXTy $]0'ݎ9R+6, ,cAF7:=H,I"$~g>TGk#׊u5Ȓ2GL^ncVV #s5i:rfbB .g=ڹ>h?J [{p]ܷ ԓ?A7L rs9?{½mRmXy$m0SMnAE8DKi'RFpy$5i zU!yAH2'̶Bu+u[S{\Yh5Ȯsa5T(?U&N6xz-^iS!\Ұ`s+IЍeYN\Tm*h֎M)P|cm9ۦ~sLW2Mv7 ] 9[_rCJHmң$vO%t*fqe*H䑴gy}Nӥ.-fW/kR Sɰn065f=zK PY81_եIy"f:7ЌΡP8j\ UiMK^"Br|?gZW-rVӴ.gڬ dSqi3_Kqq@IKK5aW8'sgԊG)x〸9N3gRGu!Hd 8Sr:cFpqUǐ W6ђ;J'.4!7I펽jޚ֪XrO8^~ZAf,2 G$_ƯEQEQEQEQJ:E۳4R>> ?f(EE{QEQGz((EQEQh(4QGJ(($Q5!F%r"@@I?/Ju-QGh(EQKEqEQT5u(!YPֹC?)B#o"i>Lr^|??ʹm>8 y$&Ikev%P/sŒz+Ҵ8$]OR|stD /GOaP^!4;*JFcA[=8KUd%1ŝvI#A|t%;5=4Zq^ڑ6w bqֆu%$qОj핼?#d#nƛs[ eflpҙw>{{7JK;q4Ro ;d8+hp#gأĦGvZ]q$35Je/ePo:(a{9}=!1̫Ǘ?zeH; yckX)0lJaX1 Fz S0]Sݎ}?Qkv/zVH>^7dpy?jgͤpwkO?63QןkV&DK9s~}B&AXsq۰B6.{ I^@aPCzvUCwp;J0~ {Q^47 4.|Gr~֭mf B =4 kpE+m¦ =5]jV?{{D>f>#Mk:hZd;HnV(Q@s1[ڦgIe[xĀ| -#\4pĒXDk!l+O==72]*,vv&Bz5j.Ȭ>U+wC-@WtE<|z#0Q<+2PԮD]FPn?q7>yiӛ"Ԙ g s~'7W(RHIACu$4eAN?si6wh#q$conFaK,z]ҷ1_w?oxræ >+>I$G%xz;u/E%B*3?k𝼰,v.1"0~]%mJ W~9zS kȪB687zVLg2E">n\bww#c($q\44l.'mh;=+m`Xb +l^Jڴζ<+ G\{+t 7q22W,{Q#%3:HuSVa{Y8X 3Dlcxqitg[h 6\n0th+O.XwRO5 j2=q9+wG TLp8o omLXUx_k-B ګBU$UG@=}+f_Mwy7VЕlrGA+KֿeOt}֒r!O8\Gk@G>\ 3îGWFmw39s%ᘼ-R<&1`rIj2bf=kn t#DZچa|UI1ơ'ɁNO W#5A9?A08du%̠Gu\rǐ1=*.9CqFkM)COAJ[H'$f܊=niWCWq8ǧN=zg.k}ќdq𦂖ZZ~g(DeI9c~U#d.#Rw'a?ִʙy;VZhtf|oxLp2$Ծ)-=gH08R@pj ̗N-=3ӿNz^Ee2`݆n Ph$2GvV鎶 yPgM?&ũ]G@٢pʡp> ۳6ʸ8a ܵnmbFie@\Dzcv0]IҠu[m"KwajQhݦ1 35Li'$x-1{J<ob[RڸG.,n-J*84@@r=9hOѯ->*> ~t2xYm#Qbd&^"Ή!LnpN)ǾqJ=n: +m>qqy} SZ(scf#v_^K:}g%Xe\zr?:}_WqFogX c+u5kHG2]ʱەQ:o-O5EKmcfe\`2p9>n ?j(EQF>QIҊ)hQI(QEQKERg((#QEQEQERQE/j(0†Q)eSLj\9aڡ.R; {Vo>`D/ZԾFpÃhǹ}o%$9 1^oi@k ʼ' ɮ6>1cnAH]ܟNqM1DHUȢmԜ~sPx:}4pZI-ؒI?A[6vVR+v'''$Hj  /O֯Zچ0$IRpsqW W׾PyL098oYxI '8AER5[at3LnzvqL[)Y8Ajʻ[@TcI9u$3%r.ТV'`h?a43]-R.ТV,xV 6iVHe0JaqǰKK[hgM7 wVaŏ=+b+kXؼjm$Č*I*Ώmjy1b'ǩ=I<+xg@:\Uؑz{Fjos<.՘ϿԗyNUq}KP3a?<zhϦϭ2bOԌᙶ8ڭ[)nqLO*kMq $u\ܓڨxxMM59?6pN}رdlQX!}'K\ycե-42~b!P'?Anm(WibnJBtcro]@e* $>kd՛b\<S ]=f,2xI][5$eG QCsoHO1EklXzơ}qx""%;A96zzZUULKIEm m2o )[Aszor:xQ';< sOO2GevKvHЖS9c+Gylۈ%0F889C2yeܖ7(&*K @Rq*qsj7|tna3Z@={ }jIF-#Ēnzく\Ց=E=q鏭.f n/FkKp9MN9}zRꗦlJ68 ]5(mvJҌÓߗ'MͅԢGIʰڧ$wuZn,%f6=ƺ+3]iW;ZY#qVU#Ic1ȡ2 ZtYe=Au:((J(Qڊ((RM%u((Z(RE&:ERQE()h)@B(E%R( RQEQKESQa''wZ[i'PrO/_t]=GS )fQ)ݢ+aʬҼY{^X`H<GӥqM-G?@VZfT@JImep<ߥMzskh[N#I'B;o*Km%ƛZ<;] ;18hč,~~ ?L+$vP=X|nKBs$vq!o8HI2#;Fs ak ^ޅHs!gbm>cV#;mU*-nbL$XpX1X3 mL8HO䵉<"Ȉ~K]ܟb{ ¯$C%lc9{{Ekyfb8b^X`یkE42K !($#ի&Xl|Z1bE:ҵMF [4~_`گIZ_|!JcGֱU۩&mMFPq\1]kIf8Pv ~K sypYQ)OҮx휰@}kM;ݒ*\y Kx83c+w6`$/4,7cP8k:m9-_92D% pq=1Xᷙ'TDuy#S KmtH̪퓚-Q6~)7$mp ȷP6IJ\ϩIQYvulm?XyYy/c d~y贵bx 4lhc_pq35T 0p1jI/6˹zTNYrpp=*{ܤbF=Dn G^j{kp9 GZ ^nkcy $osNJO'5~eڡHHS\/?Z6//.IdfO:Sj%,E3?kxL׮uۨǜ'?ZuJYI`u?k5p} ?1IK @qS̴V9fBv`r#_޸]:-t|I$eðc=k-.#$!{H0?>Y38/ǁ:4h`XA9Fʮp3չ$1ۭ'X.O[B vHZ bizQ]D_kS[]L^sQX-nOޥ46Ff =I]"ȖH 5iYD%9siM0!넵t՜1 pʼX5=* jEý3sh5+HuKhl@~:lsW}o}DK&`yOAUgdrJvG#dDYdW݁GLu[\i]ydi}8,3mzU36Κb.#X9ߖ< tfm.)6$f;`}3uovfi nXcn_Jֵ $-?_j((((QEQKҊ(ER> ?׮WRE%R;QE%R;QEQ袌QE)MRw(EQIڊ(((4QIEQES6w5x7m HD@8ұJt,I7zR!/˓'%S$͹2X8H;[ximRVMqd5hVcљ(2JH>[U;]*R(D܇s׹H\oSu?ʙ)KḒ:)]ܬ/*%u'^ⶹB2W83bd[(7 )Kwr23wR8]8-@kɤpPK }dY/n*,dcA^"B(P,^@^`L#QpIP݆F2vԗ֢Ck,];AǯBnUG⛎6ڼowcː:ÿ@-l)on>N\xԏ-20eR*̶Zfq@W{kW=Im@ u{, K1cLtթѭZ,|TݎOLwm[G$b\ )#06XXr;0ڀv6*i+hV2O1J˂I~O< I6JI2{ ׀{]2I4.C4 qoҹ}VTm."d@,I5oM[#FcdEoZe[pPNesԞ`3W"HcXb ۆVŸe#S5̐"Edxr6=J ,qQGҪXOxJ!r%Fr{{qUl6x`($ sU{7ȖBI!Vq+DW WYd zUwϻ##%?Ƭ"򣲢c,?ƫKtHTT|"p1i.U2QUbCZ3\IrF QcҰu \;dV N%ث%5=RzVY,q=C+)7én><q_NZA>gJC438LZ[,X0I_Li/'!ePcO^Khp <']%/ \(cvӲ+ k~ 4<=L P@U$ze8ֆXhz|I01>AkEcs@]k&ܾ.dfc]w-Zᷳ4kP%;zrz#z"XI c}?*[{ۛEX Cp?¶Ф_-N8Q!t}5YF搶@PQic (Xr[`}). ߜ\US#WtXbZ!DjG8Fg x/"*?w'/-&e{Eǣ .m}FX`U cǸ4B3Yzti%9ui+ g:~k !-ʹI-xgqvɪp䖏9`4۞;`2: MF\Db*s {gojS+!7@9]Ba58 {Z=ڡ(Pc BJ`tuޝo/50U g`G=1i^T8 _P c=r# (Kp~_ʬ,1,hQag=ztlcX( c"V6zc $c'$5{aAlZCOV5 v71l)XIMa#kG9A~ vYi3.:rm!rLw~j[B۠quRa!@ ʑSd(D5$ bq(,"R$;|g9mԆK1rXS/.%ɾi2U{@|28*?27{4@< ˟zooΰHm-,Q\`^R,VA\].H% _b;x0 LU4{>[kh-~#2Kdp$u銲toV!M~'1}Tn#}>inl:ןק(Kne3R|z?z$MIVL?zZ6{ٙO늹s$K#ӷVb?Aعa"\$FWtÞ}JjZ:ǸYQM"̱o~yWm2=s1׏̚ݽȒ(t"(m={IahqF#Do?] {=&4?p'נ_D]l._?κh>}.ݱ4-ս:n5YIX< koǧ$JH䁳D}+Tcų]6t#2U'n g?ƮMho10&xNb1p0O ⋉O1o-ܕ#[6\xV1-܌|aY;[wŗ&53{j{dakkOp$D=~Y#. CYŽ`۟LOidox! ̇3ȬjZm[a-፠(`ysYiVNDIlZW| 3fQW;z~UxJHco'&q$vZ|/ҩ\B%F+O~?5Z}[^kc OV#hLE}^wz~"}пxg#QQ5̮;מ+v-ng&~XEs]}m;;߸ PUw=קxDWl. fV0|O`C}2mƁBT~[Ődʪgx"0L+)Ȁ/5i|:fvvzn3W(:K^{_=FHϠ=k<G+l% #rO}Ϯ6^ɭ[%lK1urEc}nDR~ƹnlL<'˓@=~עb[Yq1y`ש7j:-%gB1Goj􋷽ҭ%ˑRˌ`Zv(EQ@((袌E%@j> ?ֽrrQE%QEQEQEp QŠ)((?Q;QEQ@E%QQE-RQEQEQ~h$pdjAgG9~W◶wYʉeA% 7S`Z*RAUKrJ\C#E^sҰKi"8--鋦vdI-zv]5Cm \霱=&|P8 UF?qli-5~ cW9-2;C?+nԮm!պeqڧ񬛛xQ8H^o0~J̸IQR8)AKotrxO$$2F"+H>~*G b"kȋYMY&S-LGqjYM,ݰxg@Q\`߅:dq$)2rB¶cy ~n2>l ^npDu\۷ÑZe>dpsvc U3x֤K'zc*u'>%^y^LE ǰڣ Qeid7\(p'ڠuڟ5}:;O8:.HYEtW\6bHdEqys][ !j  <zC VJHcn m][j~<ӣ{x1_|ԸK{CiC I/~^5_HmB"2V7XO֨xfjzŴ@!Uw!K?Z^iBS/vNY"Ya{w #9#ˈnA*@_j"{Y.9#d+9 TWmmn;#d#xr? >M4{)Xr>C9\dMXCs+MipQ0,'m^H7bX0$^H[`l܅ y9*HZ# !uT:uM3Sj[d^©m K!_J5maYf\ys}k Qԝy;}ISUhcàH9LO+;@a~v;8O,3 P>gfS*v/@1H͐;;[vaO,D, lӯvRMy#`H3f#3޻ZtiZeǓ GSq)?369:{zX%B[iY 2ymx+=jw@$w2>[oZFݑrPn9w*3hCK#I=߅Lc9'>¯Ħ+A#I=jΗlfKK˯PN ?5W:hN^ ?,Pq\qhx +`:"Y e;Dh\Ej&-BMVZ-aDgۖ ~uKzԾ emw;>`cU=IͬM E`}w`U%QkG8y?#ps%1q~A H\9\t˝2M. A<̠MŅ}ʢg|5О/4mD }uϢ]~dO Wot7K.p< 2{}+Ews< )s?I θD_99mZ!YI<<)H[^76\WL}>A pt c>ӻ Yt֯dT@[)m 'bAmֵCEvuy58Ad| 99Nɨ goSSEc.&o}hW/EQERE%PMRpFqFh R}h()GJ(4QEQQE'4QEQE4QIE(4QIEQEQKڊ)3;dn#8h*yiN^ױ H *#뚥$( Ðz eD @ϧןxctRx:@Ðޕx .㱲u2OLH[c,9 -BU,D"5ulA<C 1@kj$^ee9ے m%KN`bNG*KMLw$ vvc_IRydoÄ%ַM`=Ƨoaskb* ,[_iIO.KZ*6@ďlggχMӭ=Ei$=኿u$ШN=6]ʗWm#S9ʳFL;R/nf(C0rF=IsbrFdG6Ai8d]GO<{M:=K֐K\c 0A'0daG)mXͻc#`ޤ7#@rIv?\=R \1\V<p?c3]s<ˉ^F+†9cβs7++HH=ZqCJC1O֊M#Ő|c?jCM#yf$8J  ac#~uXcAY:*\yyˉn3ʸ\sXM ߙ.n$-#3d /\ڣ/aN1% [ Wkc# ۏ"ܟJd[u۹ 5:Df`-rHAu?_M6mg{9&}L?^]ׅ,~mos)&[_.RYۆ@-gFAElB+I<~?W7+%P_>x,5ܣrI$ȈCr#ï3Йu#]#IZ~ۨB `Zе"&VW320*Jn4R$h7:KwWua!~SK7x{׺b/?O&ዻPDQ 5K}|IW7rl= BAw%SNXqq8#}򈗎{:dIכ˒I"FF~X;VM^+ Ls#gv'ʵ5 &4i,m (8۷j{CEO)`pFڟPh{m(Iy P(8rpqW/5dݣFiNH$߭T(c D r{5Y[5QZ=>g:?{+(b(wf6w`Ok+3"/+Qxg\o뚘IaRÞY{`궃Z%`_80:XaA%r{`qZxZ ,-rOs*xT#3},bqˍI#qRP#?gF*dSF;zUJW7ZBV ȄQzM[4Gb 1ƚ[C,f|}84Dwq+u }WԚmhH#}V3Hsv ꇋ繵DP n9ϷJO#*(<1bO'=RxIN!0 $?nx> l0qd|O+м2.Q q)xW?u dI.W5Њح: QEQF(((h>lgڊ)Š(QF)z_> ?((QE-Q(((֊(:EQIEQGEhRQEQEQEPFF(* *}Zծ>n"iT[$/^9w" 2I ^Ebx(\+9ߥy[mto*"ar8wU$jR$|tv9Z5mȃ6rX(lϠE?*ŨO89,錰ڢY*3g#+&Y[;7?t䏠?Znm[l21l~N˪ {b.Uۃևn+HC ™(vѹS G)=85njGklB}p:tiF$I[%^L/)L;ZN\}?:\]\ұn'm㏠91' c?@k{[Hg@ly Fһ}BЭk\K<1/m]'Z 'JMIb;c$.1ݘ`UkB 9X3r Y^%O:<)IUv -vvh8ʖfj*6s:*]^4o3toJ 9B]\;}L>Z!}iI3 ~$n%|"y=/(#K<ϓQe\9<?S\hJ#"䒋'?Z楕IPE_%qcg*ڙTH+cܚoo ȧ+Kiȧ`88xUf;((1#Aab>r9zT ZFFIw޵?I6qmv66N=rOZi-ci[wz`trI5$Om8XF l9"/vv8Wvh,1Qm נOq 4FNb=3O*3O?q u:łvR:wq3\γR#e2ܪ&7 W׀Zf-2yfC_ 7l=~ s0D &,qre#r>^bmrDy*&ʣ_F>ZdK47Ws+*H=-1 KvKKmgq+F!fʶxq$H%5 asP-ΪT~,`@u\h"{m>y+wxGi󒹫J.α\]fHlI眑ZrZh^2VH!\Ͼk.t>MSn.vfѼ5qejBb1cדYGd.f#cLWo,;[X` \9Msՙ! E- ^1ިk[;P">R[jW@rp`2{Rf.@G' #=~km𭋔x1 +'r;t=yJ#/ u-Ⱥ-VTGV GZ(((((HER((h()(QҊ(Eb(():(QEQG~h)hQIEQE/z(EQE8 QU?H q+;R!fPpьs~*hv%dϿ85ΥŅ5 3ܶ''{sޱkKmm24Ϟ8?1}O>F]nYcP pHxdw#̒۷-FH}|JB|x$ 2Gx&MRx;v2I3IR09B.[8@OJSѢG!&'t*)>֖}\L <UR{dSu-1%kx *CП\B:}-o8#:hƚ)[ܷ@FqF1w.&pq}=Ɍ:T`!r='X"g/ŵo.H!n*7Ŏ~-/$e-lZ S#Zv?Է ,.j.ZT}܉7c[?ZܖX+,QBϓ&ͬ#2߅Im&%) $1DˈjBOom ^X,ico³b ҭLXG+ez#ֳcS3G9rBHrI=sǨ5N5٧S$I\5)cҕq x#cAڰ5w`p~Vp}V7Χ?)]fḐnU}[Hљ6U#J``?, Kq;6\?eL٥qQc$ ;6O#' 4UI7̯Ӣn@#!nWbӢ,6 A_N+Vrlcoa>؜#.6~bG98JϛdU;aW%GSꌛY LrTdhRP.ʎvWwJ(-`$2dO vqL0x͑Aq >9㷵A#}~w,Bp: 5X$`bh Űdc=5.m*JHc,0:QonZr%Åaq0yuַ{57 HZ\0,>\dz|,\;y[b'7uzڶxKeH,`?$UPr`*g%pϦ5Χ{m)'OV,#փYUb\{/9ֵt&{TWJVfU{ Zb+3#*X귛P}Pc8l`ғ]UA7Qg ?I XbYem#܎ciqc2l&DTWYXlRU qqW߂0OΣuHSs~O b<HOCUMwˁ]&Gp;LT 8(6ezιoE,v EcM_ U I" %=v)|?ʲ3vq-?i'hyϷgol<=NA*:]^HJ(o,6qwoo'c tjٯ4}-"i{IAB@W5xm2ʷi`yI.܌z:VOn}k|0Lq?o5ڲ&288>튥ഓMԍ3\U-p0pzp:V!h1K{̤S+>'=95|0,JNkץ((((E(J)OEJJ+> ?8QEQEQA(QEQERh((ǭRQEQEQEQEQES&1fI>9>ڀKf\kH eϦk(bQ¸ק^QazEs3N@r|+hv*)^6{gx$о#*ā۱c-#IfBa`;sǡlqI0{hye2`8ٮqVgtO4C@;zVFզYV2a<i Ly +8s#'* (~?C al2q,{ ֥3 *#;X7,8St3-T8n<1cv{;a$X9*A8uطv\9i2wG~N*Mv-ŸF|x9 G8*R[2`rOy GʫIn>Qým5&Q煬pw?u->YMrrT?iqC,&H_i;@wB ]$%?;B~jquhCp}G{?Q r7[ϰ^ޢӥj#=ݎ~c$eUE2h QX9jKŊ\Yd!X~@O>?j#|'Ek^ޙ䍌*xU8?5MF뼑Ijc?TM$Ï3G[+n%ifm1ecq|VG.Ds^%pC2Cج\yoq!}?ZdבGo ̜s=p}nSȌ!su n31'}H(ipyb{M *S\)? 1RD3`UaBZq8[ϭW5Dn$ #FG֬s{+k鏿"W 65tC&ch~qOT+Hp=>O(e-*λC+r=«Fc2+2^4Fc2+ 4R[>(.}Nzk:K}kwYI4Np>aP6}YfM*@ϩޘg([= ʻFҺ+ׇM xk3Y&k#1ʱAm!/,BV8'隝WVWDG9\ #ZZg۵>k9# d֕!if8'$Ijexb*$X@&vrnWr|gߌ|jo^u,@m9<*^]Ǔ}usB)rssnm{s#qH9$̲y/]3u=6͙,9+4ݳG3~VǦ-l#KpwvHV:XnL%q%b@eI9O5g ēe$u;y+yLʷYfGBT~6׌[nv-+4_i=?jQ3/B{5\FtE)\~DԂI 'lc =9{v[0VYK?xW5&Ym9".0U9BX^}UY͉.CzbVԥԖCl4q~sXn}iɩ+Z觢;q׮P7m C, #psGS'lTC8A94;fUdQ8l~|q[6sg5+ mgX ?S<a81ؑNp˵#㊨ֲ~n[%&w#j `/ X`Gx].ǖHl_lU&Oj3ʚa?O}B<[JĘ#RA+oE \0f=zo~zKham* ?1dIź0ZEv\p3w!#m;%\;g{w C^ =Rh!FzSj"E!l#|q[ΰ6#*l֗"w>BUPnk₮X>bCB:eǗo2!lE ~>o='C2K4˖l}U[jV/q+li30H^ ycH敊Otc+ aV4IAy\dSpp|#w #w{S.9Cڪ-$&XzU%ݒPaUErI U <y<ӓPYw0'=>sU{d𱜶O^z}=iD%%'GvnM+w?/%?0nM>1L}jV5.m<'G%VuZKxx1nDZk{‰xp;Cg5d#u[[$XGS >",XHN0OZm۠0EJ$Eܫ\{W͐f}#骓 Y яЯkyZydǨgKon$,11X;]KwhܔԯKNB€3†T5]5N,Nc/k<+3d5ڞBq>*\i Z]ۼVIPWt:u>DWy!hPxt[$dA!hPx~_.4*xF`{j[&>%ýn3\p?47ˑW^^KEQEh*ޗc}smssljs?*wX_Z][$YxǸUt;ˋ{t[V- OVVQE;8QE> ?;EQGNQJOQI֊(E{QE?Z(E9;EQE"(EQERJ((Qf;cb$H?pK'㕛qڨ,1O+؆2:t<RKRVwPe2w=Ϊ%bVP^s$?O֪BV\I9~եS 6"Hp\p$w@*Hp(\p:h4qBj9º\δ-}dfmΪc*օ5˸U@䜐8<Ҭ jT38o\[ OҾ(b̏BFq$Pv.uvS U$ \~ gLQEmQYŏ` lc־{Arb UUdO8DZ)IvFhWˏj۷=0F>s?!EKN *=0xjxa@ۀF>(-]f+*q/<{MXY[8¦W+s0s5"MoaW#*L$~akxˌ XZȊ'71=H!ߠ㏥QK%Gd@\*AJk,2fQ#w rI9TLZҁݒ 'N#YKDH;'=)R:ylsN3xR0m);}'OΕjs4kmjqB[Jt>P'6P +7XDT+42/U:ċc X#f* @Ԥ]Β~ ǏOO m|+>Xf +WF:KxҺ` @P"~sƚAZ;dtf')[3.쳨ΐnpOגyrI e`xFl32LZ\w-9gxi 0F8c'ֶcF;LVۙ0:p?Z,%1^,vo ZiI# p3zUg-pmm$f]Wko o¹FGdznw#V*ҵ)C׮3J1ʸi#^n;U`mf+yn@Km5MsWwt˃x#'WOIjL7 UsH ^{{\nKLF7R}fpm[s ݴEc`z2vq8Iͷ,#ҭi;&k(! ]=Ɲnנ-q#)DZ=>rZY2`&e8c\$6Դ"VSlֈmpX)<*͵Bse?Xm݃c3*O*s rI,˞I~&I:ʰ$ʎ@?B@y'Vq l7UX~1]Umډ ,$1omM~M[ѵXF$G9;rͷsM=#Xդy'+ǻ<%olk{ōmy0 _?l`I5^%m.+/٣ 0Nv@Hr93]gNd0& ;c 3}+Ct:cE7{ WּU#x{9m8z21xՊ'gz@9=JZZC֊(QGS(';(>QJy(1ER '4RQFph(RE((R ((SEb);E.;E%QEQEQEQEQEbHdP&g-02כ,x=*W{9A__0K-bmy<9`>OzU^CmdkԱ#d:nkm#k.b+#-I{ u[cg!UDC1&~{LcEȬ=jWbmvCqYz%؍5o1Gӊ F< I#[4-IE-Fy?Ux"#Kw53Yyq%tKmS}e~?-iKJ=SSi0@ ƺ"iH|~'5RʛC؃YޛL(G_ʺxཷfku&S*FPnwFA}#豈(P#Fk%L|)֨Iefa5KQSYIM ڧ89wWq^\l'd'tr {ջml "f0B`#>oՇq/mcb81Aer Qսu2$IYRIn@@)d )+\Oh"QȪSspnYbAKg 1t d(NJW0VBx֨ɖO)OcP >[. @h-g@fP3[VLڥ1c~8xx V:\*ĀR1=}0-M<3zRcm`$Ck9,OAkM.4?6wGnN$[]j>,yAbd8_KSƺcn30 vl\j+L-E~Vb0v7RKM6чdGǷ*i.$:n;~o%9{ I=Yi!^"If?UµuDk$(1?@+[^KlFLc zQlrsb"\&=F:T#Oª_#z ]Ngi1e*AVkΧ C{[®Am#?$U(v%e7m/;6f]1RkWM[\E3̸C)4b634rс+PZĩc=\SX_|]K75-fX:4p@'ԞJgu9Cg8T}zibwFOXt\K'0U7 $?fBW*UX?ȟΨjVIan3}1T%1;6KVi.O?:5PD<-{IXqM ŸUs&RjX;Е23pKV0nQe9듐?]mOÚխÒ"]Xu^MJ " 'eƦky{^dk/-7<_JkujiC0 l gӬm5m^Ydi ߳`a遟M&[[K[E*P<7 n -OZY]݈t-ѦRB<{㹭 mKַw+8^㞃Kz5w4(Z((CҊ(Z)A> ?SEMQE}hEQG4QG֊)((QE/EuJ()zQIEQEQEQEQEdh F|Dž;CguNIHas/&i E`I?Lj5fgUyS#95Z bH35YUuxkQAD3O5xx , G 2 ϦMcak+Ž?MU{kK+;Cn >PA9`66psis4IejFN=)窜jU"ɻH[UZ}?qVR1cӶ[4 [D]yEw僖էEc"G9B'`99M_kJvXzսP-_\'$}g1\voY[Q' ^UGD$\rgN:g]&+KRbR#*ܚl$Q8DQf8Sd"FYRN(? (('W{{(ywCy!( .TcҸ47$Yd˞0α̱SP3ZD$rf?.*84b6 !x?sz:ܥ"d䃀XdcҲ/ӺH詓guyj73T3w={qT-kMGbG$dgQ '{kX(Xg5V8$K{͢4`'"ik J[İݕu%ݺ Ob` I[ag1s~)&P,a>>AmXW`rE9q={oޫ v1$3ξ^3 2"BSOyծeEW'nZ8Aq\$k}}U8Ȗ}3l^2H^@dhYlIӎ}~nmC4}_U;kk3IIh{W!w7 /m.8iOvu3-ԃ nn@_Y-rL+VMqq 3{R61z,/4IȊFduS<\ @NUIJc" ms*rNBWēpyUU OF[MJ&є^z9Q2rIKmE}}64nB[o*=gޱlmX 8I.Ge9=MR'XÞ{k8"N GN)bE olg?GL ~R%P VeЖuڒT]\_Ʃ\402qTn ú$f:Z-M@s vx{eMRHv!*a#;(ΤRhf/$ xx6!VUC bpx kgšD'ٰ/*cȚ팾 xy^&4xm߁f?Oe< 08v]00ln_} K{1g,GO\=p7s˧dnܼQY]z}85M4ZZ\U%\>]:W̞_&?*MUU̸efcVlZԫyPErp1],)YUDn pHH^0!Kl@ȏ9n 9] XI0$\d'k]E&d HAߏ¹y!H^C6GQW&8\ts#xIemٚH4;~Q=[VYTM@\@x_69_UC< @$WHfZ0W8M9b麛2#G=_wӚݱ:ȇdgF>՟G!;: \%(ۖ2H:d}[/FEH%d?aivjΙ)X Vɏ 1U 6zީq$fxlpૌ{TM>TԧG jsc~qs]QQ,Q D@^BjBU0N46DWFeaGUe#iUԫ(e#iԴQEQEQERJhG-f> ?v(Q֊(EQIEQEQEQEQIEQE;QE(((*vb:qX){  yvScxsVvrzwڕ2vY%`e8$?Z&o[42`w '?Z4kspa2C91K:Hp0̼S֚{+f$(J^?{TYl$>w~Ϡ!wҽ,p3H#@IdQ~uL H}5@1<^Gn?\b_Iv[)UĠ5-ԗ CVRZ<qX&9_ӭu;g?>MtZ~m=7> Oknn ~EMG-pwe!_d?֧K>T qp`de`O˓iyguWA6˔%FWOm\C8s==]JkJɌ zs08:rJD@OLg^Q'X孩 *wv)+f(h<ӎ{cOj5FwowAaOob?*%`S"t3SY_GmF>+ |8Ikut#c^;p6h,v$w4]}Byq.F2gq! R10R@yjI6%֗-5z 'yݱ!OA=3Vb0gSa% SӦjzlp=p_?moS3{87K)CT8hs#BY!\s+ 4gfvxXxqXq^C4\œs{i73 h %,t<֖xrK|GA*B) CtO=0?7H&+ur͓ Ψ(+erM4}`?ZmmIFr瓑ylGC'>܁ը4Vs6plnVv:.q#"WqbEhI{=3U;z{Xf# m$}G'5G$u %Ylm {< i \@FyT1Om$S^HKp4'$̈́˪}k`Ǯ&c4wic+20oP1t%FT3;dtP]WT.eUI&}ä`cu ;?*ϊ$Ye ΕxY(ϠW=s J[GkU*sOXQY HyJb8/ O1%Ȁg?oxmEhmĜ<{ Z! I$9'rZݵi|鰶GM)$ϡ斿4 !rPnQ fGMwkkS,˝Rn})[y$,I6m$uf{x#\Kz$I 2xP×I??k7Tk[b$s:n(,,y=zUkۙt&ʹ,cF ;c5 ٛx ]>睛ib3>kfgw<1TUl^przVoi$rI'J%ZGpJU8$Q𝉻ާxᴁ- e>sc$ÅP7\덿_UW*V~q|+붥(((()G4RJ(Kފ(ŽԂEw()IJ((EQEQER(QIEQE-RQEQEQEQEgk JC8 &[\Oīllls6}lgU .A  n{m6 WK_=4%N<rX$6wVǙ($ T-]rOnG Ny60 +'QxϯQIݝcʌ?T{ tD`YD;9Ci3EiTZFsQB r\"x,􈢘l"EDVe*Ď,+#Pʹ;X;js-&Iw.QV R_h (t‚Nbvv/uG>届IvAVW[-nSQ$aT Gvvz̚QG.AO8-ᵳfK% q@}ɿ^YgFU˝6QIX3Jn~ZoWBI̫שQ0;զ m@Ctde#=X` Ʋ9@\[y pfV2^ǁ8 XE2Xpd>z§Ѣ,u1+E^ĎXҢSF < #/0i{c Zoeq2sy9}6eJC>}NG\V1Z5fqVTP!ݘ xⱵQ2يзҳ5Ee.0@@ʪ4 |0 -ym7>1p8mZZ /5mcz@8{;[=.|3*EɅL m'}\\N|`cӁ keE 3wc>I$" Al~\\*[8gw ]r=8+{G-4}1-jYYb{z/ ~G/΅`1y滽Ft*Y,l53E-'f[[]+2JnXQo'\[̀o~f="K iVMeP>e }{թok4 fp) nzP[Iek }@ /ӃZcFlEPIft3D0BIq)1ׯ$~(K,c(C3zΝ.ÀвdF$V}w`S\<C܌}zWc]uEQEQEQEf(((R(Pk> ?^٢:EQEQ(((((Ph)h((()J¢j{a=8Pp:}j%HX:VHg-#yQ?uG^|i).\ZD]ՠ a3Zmo~bil.殰Gl^ yIhbjB5lݎ}ؓ>B,SH1OZ.6W3Vu[2yJ;x_çҸϴBl#O/3(fvc} slKeӾi*8G?X4B)pEVwp$~6mC"]{9f-yNW6;ȴ_g$%\Ʈ' M(8?Ci_HU9)ǰ<Ѩ\} ĊuJ~ Ω]cisS(VԳ]ږٚ u$ :{K7 ۝߼2wX66U@b3ީ?7Zw^3dE@bOԞN;OV[[֋TO{C壼#k4S7>Uuf^{6 .}vWlmm 4q;j9v;p?Τɢ[^k3ڏq=^-)$7EDjסuVi&BSKRs^z]ڔYVB- e.?Y,V8 &~tjjVtp#Rx#U^&}I̒I$tiz܋HdCl#8twZ-Σ};5A GPj7 sg3Ku}^Zoeܒc 8h+-r[nP=Uk>o[+;vnQ[&⸱v%w}u}7Yd#4*֠bkc;NJRWۓQ9<;X٥UOb qW f+&c}y$d >+PHgU;}}yzڵ/joV_5',IO6j\,KfMe''z[=77qP>׷_a1KE.chryJ}zp-|M>רjׇ-"_K8!ONyjoZi0%Χ8&'}NSwl!icFl8s횞|6#@xMsޭx|\ڴcmnxmx>gF Fh AnBM.3X:֤lm\ݸV.LU[jYmBD҃cgV`\]J!"I([?0{fi9Wg m?o5ޢKX$dfpx?'OzcHTv#H30<{K$]Yy< ظ6ב"Rx~5oY3[Aiᘥ$9 cw0.%qѶ ~Up /cyd8=A8pck6L }{*\69 ap?!QKsdV)!7ݹckG#h@[x܏B9!Zeitfr˯N}\ע3Sk}>wG0\y$z~g^T\q4k$7LuQފ((((QKKEQ@Iڊ3E6SҊ(((((J(((GWP$0@<ӽhFs+$ĀnsA毭v9uHžc\d ;.)y6"PK/A \j>5"HMFNqFۤ4\v;瘟'{X%RHܾd,܃B*8uNq[i* {Np~ŔS!6d~ sc9iiv"W,˜aa!QW,m.) S[Iu{RC,d7Xtff1ĈX??PƲ", ~~j'dv&dVSqա$OutI jꅷ'\mW Qu%m]`K/1+\B:PaO$u{kv vX9SEnpAp 'h!FlӤ@6LdOB?[_ZmW, DqpyS̗wq=I`qzڪ6"(.pgꠀ5W|Vk6Kݛ=`oy?5[imtȬlaiRs9?21]As3’i\z݌W6#\sV+]N.,⼲rӡaIq|Uo"*_ cpwg*A+u-զuqݜtP4IquO QpFj6qq X$N,P ;cv ̫;|͟!m vz!/]~S*n/# 8 OSyޠ _Z[ I">H'qPؖV(mAr:guDGXvTod2`dcF`*vɘ'9\\ܺ#]`bA0Ǧxr+ [(vC}xϥc[]Kw?&3wvV!M<8VqГ;}ztY,33&gb{q]@f"^OwOF;%:ӿݽЎпu2g8On\Ǖe}dtQZ-aȊ;sOl5Ec' |-=q[Y $/B>ap[NB{~/JGy}*NIH۶z*+3)cFN~T=:WApuHeΣ,X玃gai:|"%^yr72c: ˳,rmD%^i70;]P_>R o]I{bmu&:2:>oYmQ^ hmd1$>sǰJחZ""wq=Ow,P\Hʢ[?[P4r}z|;Avķ>Z/PkUyY'RP66R9XɅy*\ӴA97rEDݗà,Bɟ)Ym4er-D+LGL^tcK9 ߷9ҽ_:^1_V2d:psz i=KN>j]&䔜=}m j(1EQEQEQEQEQFqE> ?(hQRQE/j(ފ)(((((((() t .KwF8ʱj9Ye88>ⵛ nt[&dc d>Րunʮd!p2Tu'ڲm`7.ҳ8;OAyt5 Ɩޝؒ?E$i_]ݳcqebOSjKRuiNߘoR2Gv6m$1ӂ5zj܌AHӪ+6nuc<ioyGgQ@79PN>COMu{3J6[B<cgXtk[n@#Bɬ{xgX<:tk>qwvҪ,!7G)Isfb\+p{u&sK~fc؎sLyn *uv#>[e5oY̫ 'e1 igɚIRS@ۘԑlU-Y%w&Y$XTOԑ¯K =[K^O>l`3o z}ri׷SKB`]C-ݜ7#?R1 =GL ]I%fGW:RKi,:ܒ`ir| m$zI#H6}:Vm2ے4Ռ(P0$gs+zK Ed5 rG؎qV܇3IKң?f.HmVA2=?Zm>]Q! C-8"`Ydem8U-hTd2S9 15gI&0-h_0yцvc9 6uoMY>X82g {u5 jqksk n:V' tdzsֲm5Xg\Fmܣdc=>Ryµ+#Nk^IQnaH9RjVz7bQXS`psԷq鐅hH;9iAg1ҥe45XYLby$tcvUAHhrKu1WjILZ%مT O\UBK2)dx -uLdYs"AMtҢ]>c2Ot5ik =?U$rӎtEv,H=t5,BѮүaӿ>[cOĒt8K 0N:s*} گ*y1Z$ w0"B!DŽ|%և>xfߟcV8rjhMѲsM\Vwu\?q沵XJA>"أ, #ANGV#nȏ` t:tޑnTY|S&h!5_Y\*mi#K ՝(mi20! ?VdElJ>eؤӨ4M6iƴC#[DcF}Jk|1fjx CVCi D-},89?¹<8^HKbԸie ,,))2 C^?-<'dJ۳vϵ{ǁI|)d@[ q`'-!XASA@8t롭6NJ֖uX\ۺ$y9 {W|6gjz#=͟B85 ՠ] pA-?9z\@6⤠`ӟ?!I+*Jd/Ghُ'fJ+{u<"c$Ԝ­F/n&F :*`qNMX5yq:$0E@3Ԝ.3濕ZbIv2ފsnߑ,Kt?윐~*q}U۟P@5]#^n~ N jwQBW n?JN$ݸ<ɧirı#*B!*'E;Og!'éj1qP[t1UMvO&c ۓPOr)%݅*K; *[h) afAe? }qR\M%E&$?pC}hj9? ;]bЁ6ErN܆k5hGV? uJӴJh;d=GqḚ'l<`9ZP"w=GsAŐgA*$"et{rS ._XI3ʜLdazaϵ`iR5]#"SF~{i<~2iF)[ Q'vFz50F1vmM񑁎6;@e<˜${W5՛+)GRIAssLl$|8ߥTF$bLXgWQ9ٴŎpISlݍŤeCqq}k%2 ]*a0N9'ŴRxIԀF%,sZlV@ۂ1cߏ銥{[aVde3e=Ry ,ᴍ_Z3Fd|]G6D1d6OY鶚=ZGU|?X wo#)1hkYRFGinU'[yrƷ)6?ƽ>J"r#v @x-D kd*PcבϮ7z-: ^v4ḉq<խԤJP!sN=56{$EELrޞ{l6SWzSb.I~C0,9*^M zU]Zۆ䁸{eUg\E[٭٦,P>n=Ijj %9oajHXZg 0J?L՝\Zd5آ"bLLHp܌際R,, m2Y#"6$lNR3h &BCd5\I 7J6RsӃgWp;YsEbj~"i|_jr8P:8.oI rqצV$ڽfO`+6ŶYIH(M呆*O.+y;y"ϯ֦ܘXy~۸ZBːKfG1*LæϭDOOh8'LM pZi +7rāW7) ?\E%QEQE(((((((((*rP6VWM ([D?8$ D[FdQ>BX! BeFFxWU_ ؘn"٤F"¼:} P[6X:E sUKI&.]ieXV\5q5̗WQZc-aҹkNJin8yF989jKKȍÕH?wlWe?ڷe`0}L<&2 ϩ\Ծ @~GPO ]Bs-֠,l /B2juY!O;qwuqSA+"7)8#pGstrdBg{Vk۩L+C{mX)n2x!1Ic<㞿:,&3}z$X팒9r@ gޤ ;ǒFO(Um]ܒDy(?d,Smd Vc r5f3 V̧ w0ZZ#ߕ[d`=~tu-o/w;cS0hW ,230U{@K\G"L4iV(涑w(wɵ\>|kv;.I6~ i *(9 osCIVlJ9Yy QJdHa*SV @d}G Oʄq~Ƨ IIbE+DHNz(S}:[ NA!bOqנUG{"%1 "I$UbTGL߼cUo_`P-;`^~l^L6gq :o,rZKd@Q7?ֵtRmw;mV5\bDOO7iZ$X.aד eU;٠ÁǏγ'ơg ]+KAT!|=YH wR "O@Tz1SeKbF-|k@8~m KR^% F¶3<k^hȂܗq00=OBbv*2rPuvs0 H#JK,mN1ǽS9_[tVY |c#k-naM H}3nU/*; ޝ8UKq20 H.*[;?Y鰱&(C#O8ZM{qDCq휗c1*dOmI bǷRJtC,?AךuI-mK@ F:wOd+"Ax|W8e͐yr?: ^edPA$֤hEvGg?"kWm!6">q $=U|E nIZ 4s)cAӚZ,+$s)cJ@H!7 7Gmۏ@9##>|66E*G2?&a;1A~o"Io0s˞qb{PyM!@ή5H&Yԡx8a<Rծgxu.rmw*zT`2zO ؋ȫ/|bGJeԭoF #8#FO2^"($Cd=Oʴ-lZ[6m 6ǎBz=:KGl^1OZ?kXEYw'h =9?ڪ_iv6K *8܃ֳ=" >Ԭyta:H;rk?,o4;Gkkմ [j1}Wx#7V:nH\FvPz>%ݖ{fN>cv» ih(93ڊ(4QE(NER((i\E%Qފ){QE%Q(((((Z(:QEQEQE#}G?^+V̑J*G?^1>MHIx{u%cx#8sX~']=A刵nذ O5OL"mJK4)?\QiiX 1( a'RXXGabV";]a\牄wZ:G||\gՋ嵼 V&666qT-MWL~L;'\ܠ%ޟ't3']K(=>V{yy &d뒥?ΟtC2L3JnA?;TD6̒-7{d4LTyi}Z 6Zo4<~DKIϵ["$gڭ0ZwO*1׀2HںXDRwRsH/!,34Cc "$zulG%v2U#R* 4Äa}~?UեԮ.W);ypUO6Y`e^sǖz BBJ">fOO%1udI~'$29K*2ĨF^B>~Z`,h9ª`qb"(oi=I#f+o}A ߌ1d޾ZKH Y 63_ZjRq}Uʈ̀>aX3&XhܮD8~+:)b U8t)R9%P^C8׮),t{ZuvFo6R)eΣ*u+[?O:=jǧOJ9H٩n8>8k˜ye_GK5ޖ=I vQq[YE⬲\p2##>銙o..lo2鸟NdZ,LgԟNYK|w9 zI$m}3_'-,ec"༌sչURXym''?sx̷6v=5d[џ-aC1ƒ`3}MC84;%8Aǰ?Ϲ-˛ C@YRzF}:sPKq\Y\[Z.̮_TSЃ8sP=An c #T uB~},-+,?h÷'q@ *qE/8ng\ .In1O]eΟk)݁tsY!Ն+02mq0@Q?ȮvkbP-E\.rsӭsjwzctb"\9c]BQEke<sEMP}s*}"{;×?feg$Tl6zƣws,F$19??*7 Xa?V5. ;['.LTfRm;dDբ|Vfv㌞}] >XI[Oi'<Ϲ*zKWLNz}떱foweydH  ޛ};4ge6/ woX3vG+Ok,R3./]oLuJ>PR $Wkc3N6;*]FN[TR zW#˕ Ʀ@#U<ÏμWxEAJ'5niH0cUbÆlˊ7cH^Ĩ `ƥy {YLMq*\࢑ #NLs1ogP{3+䁙>K7Q.@܁)fv2}3jZi} [W' irjqtvsO-$5t[n͒$L;,c{zvG%.S㱭q+y2>/%q1Y$öIg(8n=sԚI4|ʠRzO>9}h& =Q<{]G|<|3WւˍAxݏ-ϸ<%{^bLgoyJxmV)?(iyһ_z(ɢSEQR(((((> ?^QIEQE-RQE(((((?=(dGo +YaP^rJCwcV\H#1cUTխdI CbqX-*})/ܿ\C `<$c{}EgGM>}=.rngr$bO+FDN!<.Fuyũ0#n 5b]' *dnd,HS$}R?:~)MJ`@2ˏqRfa;bGl; ֪oLa\̣<}-jAkH6x7עΣd=Gr6?gZ౞!oJ;?jEӆȖ;\M(a$(bMM0bvRH$ӝ"P9n֤@{ hp?7a߂?:[;u-#9w.d\&Yg#8?i ^Lm;|8{d>wm#[3cySm3cqW_lBc5)gFG%V2nߙ% @C68+ʟ\}fD0dVQ gIϰYM]4:Mszy6a(P,ow g̤ iͥic:^ -22Ҡ{ ӣZxzU#$Y:I| h O=QK=+]#<T5M-o/cs`6)9*6G]X1h$n'$g'B}pcu5cтCrAO:~vBi,ˍH Wbԭb+ RÎTƒϾ [ԡPrXXqո,61<ŧ%ib@LS洽4h:a`vF/쾋ϿUO#giH' $P0t,|2LXSsR-m'2z *-KyO*IP39'1qIn1c=? W,PfftD8ӭV.J˱$hǖc'* "vRFlsшLq{?ELm;-k'B +{Ӽ>D,k ϡ?- y;pNw}O:W ֚Nn)bC,:3pW+ $rV^i$#jQt#a}K`"acslVj{"{QAKfY9OUMNQQ]*>i62_^M(lǓ(i/V = [WןۚRݣ%ܫApqw$бX"d1!u;mƷ:{_NVn۴h.bH;Lg7]6rHcX;)QzuƟxۏF8\o|{M4{9SSkZXl`ݘCQَ:ֳ -`[bHg!Ͳ!f Slzˆ|Ö Θ#Ԟ`w@#6\C3;# r^zqM&4J!fo%ng8ǿ&6kV-I#&8']nVW'kVcL;Pv|T[qc(Sl`K@ePqܠ'vZDHF@sd%jgTX?ջbFx;˗>; 3뫆d2!Y8wMWa)-\Oqtp6z)dxP yMDp= >tU'LD''"2\c׵Gʮ|i7ua_ҙȮvIL[e [P\p9R,FO+ vpx_rt:#nFc35ʪJyDvN1H6E!sgK*܀H~_N$%թxZ@=zT ծ-ʥOV!({F2? '$}gRq`6drsۂ8b4VKt'Q*w@%/;wnl-[)7E~y`a<;E"dj3QԦg`qoPXu=Ue&@Li[x ڥ+->]%Koَ7gVO|C %ᢞDo9 >jеbGEo|u?j䢵?C|iB Ơq .3i`|$J`!Whn,I3\ŤF G+` $fr!!RXNLH]t&G| ZmJcv>fX2WwqɨR{9LD9+cMuwu*QHLxOXOV m¢}gr&&@Ubذ9γ5{V}c4x}Wխ.ǓxRs8#A{gNj7?TrgͼYd4r#14_ZF() T8j5o2qNķW-YA1T:$`uB}*ҢӥO ѯLcU[]bp!C`z=KƒIpy|{OX@oP;{ojGV4 I\ps#t_ S]\^ٷ9}I4a\Muչ Q[ 丹R4塒5{gHjbM^&i̊x<TmpO?YL7іޓD1G*ql?\MyrA\(`NF?ޮXTI$W cVOc*#\|݇\ ER"W:9V<deBQNVOUpʛB`sc76ahlpGg3[s?@HFXƽDmc{6..yb׭jҢ)sEQE袃Et^QEQ(QARcRW> ?(()h(((((((($~dO:A}m>v:&wAMɟLW)-\n`ه'<vq7m;OeoO^W5ŽdǢ'좾,&Stgk)[!hԡF>vz{{il6rQJ`jj2[\Ab@8 mg ; I$$v f u6bRPz|O`HM#kzD#hr&Ҁ#k XpY[BIu+J $ Y>_lkFڥ4L;˶PW|Cf&GN82YMUv;99ɦ,Br~4ٝ+qSUf>[U;a9'YVNOhU>%m6s.ONU6쪤*s֭lv'm.ݸ89O5ɳaʆ1z'ךv9sC5\9)e*Onաufżmj&cn!]9`288t=)t v$u':SVh#8$u;zU#>l8cd9&.ˏo8{8\U 70C+f*:o.b#hI á-R 1Uu`Œmۿ^ڤӮUH/1өg;i S'#1VpLWnĴ z>Ֆf1<0vyP\cbd3[[C@?Ҁc>$!N?qyk<)A\jI2YNIuxKVa! "=ڧԦ#[ "ddw5L[h3J9-P&ay,&bHmbc(v gK`vlԖWrM ZRpIZ{-:hp̹l*B aź?mQ2RGx&Ekq4Hج5Km A#RYXHCv W:ѭ4&b~}Gڬ]G`w;y3큻?}KCG0NO:,ͦGm5otLrEz6[?Cz$g~NeR\r/c v?"9M|k*v;@IGkKd" s^4Y±Mc|M8D@>LK^ r(-pIFX2BIʳ.2GXh:: T${#YH9{-,[Rdh%TTG ,r#u?Sho"HGOʵk239KqՅ`b\qg8j-f23~jX?{>%Ӑ3>y v I.u ]q٠l6nESQC6&F(G ɩ(ĚM˺)n%H Si +zd-.褹BTuuLg5H^:REQEQEwZ(4QEQE~4QAz׮?ڬ >u A(;ͱ^2yϯai!6Ҁ'3yŴՠ ;OrO?v0;A|z~UDYeX0^pk{8ҷ-U1U.#%gx:?_g]ủs#y뎔/wV U]lf `2ɪWiu/RXj6 VkЯ.6}rO֫h!}ZI@UiJ\A G<>Ÿxi^m2/8:U43^B" #s@|_״+jOy˧ UA>oY5֞ͭ\0^Ob3a[SQX\A;6KdiA>0T}eh=v[{r9`0Hy(, ©?GaXQB|o1d[a–:o28KGo] Q9\{3G(dʼno9$$jƛ5Ol$Pm`hĜVg$mqhr`69ϵ]%$I-L˥Oy5FLPX/*d-Is$7z1SVW^xY\˵"*w>;g+/.DGZ2!Rg9XšȞ]bȗc=q\gd$h qGKU]Vm mF̊ 6"`bJXO#(}v];L~9zm+}? +aܥp`H9\}* uk]EYBFGϽf$~&a.x2?}4ot{;$@:)* Vq5֗iqqiaG1X$WO%Νm<ш%wA$HujQEQEQEQEQEQEQEQEQM}Gbp =9O:> ??((Z((QEQEQEQE/j(((or. #$c߷s,(TtG2g,nWzb.mG8ksGEc4~|6r?_V~J ff)%|GȐ3nF\e/ʬ̱E9 SJ@pm?V$ m1G#{(8?kuW"!R30##ֹ}KR}LL"L2Is M NyFFbXMr +IHaV,Ugi#HJۚ\>z9已?As8 k?&E(q*K?8ػp3گC PirM? ?GUaGl(#*qC 8QP>%ys*Ck U\ٯȫvVeM=d(O` ר$m49*PNU3Ug{W6D\4P6cE#ڿmK, Vx1sP;Ha5Fp6c}kFJdʀDGGQsr BR! N=VokqrPɇQ~>Z5PP %q=>k8!匕 XYHt8ֶKXLAeǮ8B$xNqO[9$}JuyfT7'q҂pXrT9f%y fȏ,$˓:{,. N~g{KL 䑉Qsx-$b7<yQ ڲX:k.y- mVtI)̻H_K2HV>F?j1zlڄY"+HU:PixE$)ב*:}I*U$]yo<'=pAҴ^C< 1(,$a_,f/(%$}*vjޝ'duh.Xo$S(8#:,3%Wj`Ϸn5ŲF%c0F  o9y{rs zξ?fP>͹a8=Wi0Cggq*PX>l⟦m Oˈ`N4X hۂ!|8ٴ6w}oiп)=FwĈAs#c 4 n|'i?InaaUu$3HtqciіF1ggXǵ&Og,ig B>bXK0N:j[rGp;P,?Xv@$V2UeEt'sKh$A d:t *k9bu-() ] iufk%Ϝ1RiWukqp=3r{]?ɺ2+8qEA[+niUmH]W}8 C[]j"w 8q\]`w#Uc>TƳk6v >GL/ }Icu²F:AZbO[lKw]rIjqKa.dKsXeU@Oj\SrƸ$5]5(1[,,nd 5:'jX(kn$9RIڸh#I$Xزgp$ 欄WZS4r]>spywrhH, @ѣ  ;}27l {}+߃(;A>KEQEQEQKEQEQE(((QEQEQEQEQEQEQEQEQEQEQEQEQEUHoT6HoD6q3C!UQ* 3b3$[y0UD+sSv$~pbZ7r}\ƞINg߱?Oֱ_[Y e2GqT6gk(>9"+x 0:~[V WJ,b^g\p:Y~Mբ@|'3*k[Fyl{c,7VMCtX펄sޝջ1i*{c>rBy)]z–!O8G*00Vl(9&~T,1 TwJhug $DѤ F'ꮭ%+k@ x5(no5嵏 珩PPh~S>3P/i.[:°ɪ˥]`ۀ:n^愼`ye |S?J4;zJr0~U[='ʟ/qQszb-k۽_=[l4[ <#5r¯53@96yˮHn ?16*\`Fy*@ؽvrpA%,)xn$vx8faR7h-*Eula7_ Qe_KLkM"9.Ia+0lOstZlL.7,+ Kd9)vۤĠ :qǵii(Kؔ5ŵK!( z9HKjh'pq=㊒iyb 9u˸oYآ$d`$柪ur3Tvq1듚m#;~`kVY.4I$3G:r9T6z'ygh*JMFXҒ Z.`i{РfڃqV"f6M~Be >i|2|5NVZ3P?*?RddCUg {d^~شmxPiX3ĐTSW[Ms*Hr+:H*)ʫ?RkcQݙ9qtgIǩ+T.9;:Huvi4q|NO=q[Z̐@# '\µ ӝ6[ɶCu Kg) @'ڵ$b\vvOOOs{l{wH77''x߮~t|cJ,<AFHwg[-~ojZGdwr^/Sb?g8;TcB&|x 5jbQu>P=A:g>u0%ۺkwPK`EcǿY+0x c޽Iᘬi쮥U7>IHϷ{፞yn-.Q-+0~~SAYgu|NZBzV mo]Xzɭx#-\Jw1cO'bH!Hc*bjJ@9((^QIEQERQEQERAE+> ?(((((((((((+.yzRa k޽5#emJ5m#q&xDn'a*mE9X[$-Ǚ'#=PZIe8 d#)䔲8 n9Vgnnu3*@*Bq̷LAõ[Qf>j*= h$?ݩg}qW^[y5Y""|Fsjs Fb޿dY2&NJʚd`ȽVt1i8⵼? o*`scddZ˩ ͱA'  /R( slF`>fvն e6xUXܳc${v>eIY=NyӶghpr x#,o1UQ`޺ Ho"|dE$:H؟2]X<\`1F8Vo]Z5ΗU ;/[5.O5 ѻ`ֳw4+t=ώܪ"yr$XRE$(AE}ΟtlRal%!i.n~sT9qQ:o8i%&5;OC nj\;j&{RJIf;v*끜TmFV6(s,f=v#8dUUխt[F|F@qV@m/# y3UaD#-Ǐp*W|w;݈GU!u+Xtvs:VbGO.2Ң^CWzWSgaqp w{pn#vm&tv5bg?Nڲ-4M*mjti܆bH_Jĸ5/hֺry`bH_-拥ꮒ\cR ?Wwkc&kGD25bw%H2*6ht%),Lra~YC+55f焅޻&G<`UXeԮ4$O+̇YYD<Ҡ >[v_($t y),tm1VM!l,n{OZi*wz7IP:x&KfG)W퐁ԨiJC*|K{s ˿ig>? FE/Z*!**zo~<-DA< ~:y]$o n~~nVh#PQ:n?Ɩ0Iv9?7Y FЛa)ni$ebL60#vG01Kq\GUĂĜ9\t 2.[7[3g ąQG'g(K-ll@'ҳ2W1hI-ӃIkRCm-1Ζ7$I#y$vQ,I0yW6aEO.g}q\*-sKWAw~ʭI˄=xBS x$ OM;i iQNg.]?Hk)&Em?4Ѕ8]%ݝYH)nrFpjiB'pp=ʨ]˨]>YcnT귲_\Y,??ju뿵3HyvCs\'sdtsg7=]7TXʿ P0O\G=޽3㱗]8f)BcAO$|4 [Yu⍮$m DI zh((((((;QEQERAEx4REQEQEQEQEQEQEQEQEQEQEQEf^eW/L7u=RWڐ.1=+,l)|s֪`vTE# ( .w#=G1O'{Xb~$}qUdɵu'<~qH3_ݎr{9a ڿ'T!6l#z¬| r?;(1)1dUlQAQ8Of?1 ʹufkU[tD`33뫯,ld״e 5~sX[2E"ebOq0;#&0 R-шGdk1Lxlv?e>P3U .6Sǒ~$WQ҃…" 񖈌w=ۑַcB>JS#UZ5S岶w?JhKW F!z*UAQʋ۰BCc8AT초l5FQtۤ$Q[?LU[M8ZS?#xd&\/Jk`- $>aՔPJ% K vn~U4$[c19bnpz~TTCh!G'KZ<X$G둑63Jum)v,O NpPۨyyccip CXaW#<sNaġm0~}O<G99bIkX]ǧd}1N]K2?3JɂQ[8PUけR5SE:]Ap>o؋|R1jX 8-<`I:6Ann:^mF7+$g0u1W$39=IO4sif#jl$Hs8cVh=qJl<(gwh͗ T;t~UNI2$ ;(M(ꏤ#O /Nojaq4Ddvsϵmu8eoG].`Vv0`sߵt7vZp; 5XǩX*-ԶW|\2TKꦱ,=%![BkӎYj:z$.c*}W|(PAkv,~մ Ny9C4+H9RvpN<ӣG#ɞ8Wl<+sq=*+`i2,gz|2i$FH:1R[^nHY.$ \y1댞{bIiesF<-߯@1z$K-*#T s׮@" YC,V(O]wW?--V!^8;dx[emH3oP:CΒ8rul4&+R( 1&pڙBLƠF85nlſ[i6f?] 择EM-H4&O CMYk+Q[ewH/nDˬkipoO%MBKxV15ČIB*}{xKIw3?~5N;HRr@{}k7TQ,$g8D'=ǹZ+́ l(?_\InWh8ͻ#cߛ5hɎ((Mђ^AoY] <9{խ,ło.Q.ЪK;[ ?3EQEQEQEQEQEQEQEQEQEQEQT k O#ҹCgf53r*kf(2IVyܴO; zzg[Yki4q4Y]\8X񓩘&ADd==}:T9 #`E"> |OZK%CiUHN @ 6dᑞ#ʥ n ~THර0_;B*%e ߜƨ[ʱZY)gYUQA]$T%id6:0r +> Nx'뚕[Kq;]K&!@~?LKhcs#v}>_A?LCQ;Un{ՠݶ"⑏ 8>:sW;Oj8 $~-tN9;jhmXŴ%8~Z|ٶcIc=&|] =ޝv lY>rgڟr>d+_^^r}k2+ًIC8{kZO;bZK~SJGdgpjY]X+"@^ēD3 `O#ǷiY#1&^5q=yo_LֵΠe#|`ǐ3ל66ZgXQ\"'@< &E"QHAP<H=)RiG89Qۦv"d<0nym[Β۫+sA^kZ)VHC WQDu9SUuYfım9>ޕ^&%H*T0]~F\1vURnCC{T)tZ20H+?b(/|ۅP.yd¯XkPD64Lp}~:uVI±}}ZmZaB:9im1 V6=zЛX%2 j:3^k @I'~"}WSaj"3!Fr޵%ͭO1G*r2hۻ.&Sv{=MAyD(%*Ǽ uB;ҙ$ě'C뚕 f`H'Ob[: 4%]!wnn3늖K&I7G|=_+)WqGI?oiglNSP'U?7)%2Aom9/e3Lz?7;n#B9}-HWGjnFxZr ߼[xk[Y?NOtsۄ!Q>JSDƂPH'?OֺHUq"GҴbIywM}0 jA"v]?:EuIc!՞誁?>WxTB$WR¢[>W7ɥ gª~SY7#Spߐ*5̒2,~JIUv]Tu$~C5zh%\ncnGn옊/!T0*>x#<}:~TK 9fuڡ1#eHu)M%8u~un $O_\UI/cKe<۟qŒт*#ݢ܌jdsAov.da*0$y =)'eI y9xjkL3Irէlˏhs角~?*ҽӒNofD6$zϧҮؤ70I2?6$Ti!xнb8jwYKQz(#:>تu"ՈVU#?{98BolFQ|F%]kI@8FTyqͧIMmk≛>QN@$dY8+5+26 -鑏?]\?%(N |3*Wl}Տ"(| dF>&7I^L64J_3ʪA"81o$> © r3ݪ )[u+u*p'2w89OOfd|M|pY N =&-'%^7͇+sҘ@VDRN ?Z-2]K*F*0pxȰO,AYUG8?BIwj|7Ns=3GZtr=A)eJ n^;PY0Y73^($`#;U{hPҌ$ٳܓj ŀdiN,~lL}'?^SMv 29^aƧ.&8 O3=}Y!TR@%p=zƛk4sڭL 22rTk4۰Fmx$KOtS?K)nfQ;yOF cS.q䗷XK1 q򥷸tFK1 B*-aO5 U*J1vQey#I"g00gvQiai2ȸ8ʼMnXy%ŭ) XL9m^y[5$N(yyp?^k06w3K* x>ֹl6:ֹ_SZ˴Eq*nr2@֩B]$jrYzj|DYxnNwK|9euHAʐW9$!cƱRE^C@A8KnEBtUrO ogS}Al9R.5{+y}Ȗ-?(LZwu!d$~fc=gq\@W>@hXr{ M{Y ?((((((((((()7cw "[Ѐd J32R4`k&ܽsm ==4h۵2YB7dBtɯG!z{H,5dПЏ²u#"TCsO¨@aW D7 OҹmD2ܕ+[Aӟ=8\[3I2EhiKv>:i$VqbIdxeHNHI*pA3JGu%HNHrB9jY$y xFXȑ!Og$rI 3sֳH^ E{F[zzZC,2ey8-mK9#Ayo]Fѧf̤1%v)ܶKH/<<w-ZDS$hND`dzR.#NFNYWiH*{~U(X $|;` ~˫MH ˂h\c9 !s<b^d3дa*9…NԎ.ŮuXʱ #*ZwS;ޣlK-_̈́R2?*oN on7>㊫vZ`/-,9֖DXE,7#} #Kp[(sIH=E^S2Q98@Dbr™t3ǘOy1iL}Vơ\\G+..7ˆ#8 sh?Q>Yj$/wm_L/,"E<a_-glh9;xig$D(_,zs_J"c!7*f=#>qJdi`qGS6t}*;G*89յbba=pA)eui܄ԷӰɪ}qw|no49E2g--8^qx,,idzں[{8t)%q:!y[5XVfyK4|́]UK;1㍞G#ɬ*xefF}~y $;G [) dIǨ 8-^(- Hؒ:z,4|H ~U6g_4Cisoc]V0#*+X׮&7qBr`b3 'j҆MI[X|\)g9 yz4]a #&8V 'j[Ww@ۆ z~3\\q%rݜ|͞⳥y"Jg,99pKu=H5K5 F`1I%% 1F}9hGAvF c MsM,m]%UoGNߡC"nuzU N$[[_4v-,=G*m C~}G+/jʈB9`)8?vNНs[z1[+XW!,q= ==-Y,?j6P 3`=jt|_&V9v~b?Z~Gx9g(Y,@*8~``W(((QEQE((((EQKEQGZ((((((((((((5E2J *p9gnxooaC(;d'~.F{z:dwYw{v+ zk:O bpR+p `Mݣ + 2Tpێ/]R'fFQ)HiWӒ ܩAgYck6R_*yˬ1bOLvǧTal\nq?[@\I!I {tzU2nv# |HY@xrI⦕"YIM1qlgم3 L,p;( wޤ?+OB9_Zd>.؜7$FGQ믈VmFL}7)Jb]8%V`$;@?­ .sЌ^j?&8=D۱q$󎭃#4Ǩ;'$T5Ko6HfS Ga犓RPk+p)R@8Gaonfd BO8v&Y ñ>m'9:}(O*p^a@ރ"_ʹ>bTlz`K,ޣҝ,q-mwD3KORE<4JұI??*2f+ <zlss+IpNsӯ'ךYRXO#YYIN;KgSm5ԓ;0]ޟ.A؞}*]7Ynӣ-P0=Kc[fq&ޟ/byY,Z#y,ClC\@3}MєqDe`~uxkN.s#s=~uo!Hm޷! ɪ=֦M2nVYd=1ǩ9,嶁,!wڕ&9=?:$XvA4~(p ?1\?Htbyѩ({2 0rcs6]^HߟFcLڳOğ yS:Axf8\*֮-&P8C8k']Dntn!PVuXσtuϽBOpC"qp@Ն&]:@9wGd,aqj惼c̏f'$p`Z\##aYeق"v쏥dq ڪ1VB#UR͂=}k?Zj<^x@cw~je?dZT5cz f mʣ N3^ V"t9xonmn.a(p8Es'<һ] kyFiCqܜٍ ckĚ]:~cR2 ]-QYvP{qڪH>KNɏ,+ı =u"Knv9S$ITs'ڮee~D,X{R>f!#$I>?ڱPdPdKFk Z1ܘ¡X=ybo *, U }GXNT9+2,ǿl >X'БPHcg:Njo&άtGaZ4ڱV-,jYaՋRAX3X䁢7?6>c^/jvFN!Â?PNJxJ3 Cu00~ 0rc(((4QEQEQE.p(QCEQKEu(Ɗ+>I0D0[!ăR;Aperio Image Library v11.2.1 2220x2967 -> 574x768 - ;Aperio Image Library v10.0.51 46920x33014 [0,100 46000x32914] (256x256) JPEG/RGB Q=30|AppMag = 20|StripeWidth = 2040|ScanScope ID = CPAPERIOCS|Filename = CMU-1|Date = 12/29/09|Time = 09:59:15|User = b414003d-95c6-48b0-9369-8010ed517ba7|Parmset = USM Filter|MPP = 0.4990|Left = 25.691574|Top = 23.449873|LineCameraSkew = -0.000424|LineAreaXOffset = 0.019265|LineAreaYOffset = -0.000313|Focus Offset = 0.000000|ImageID = 1004486|OriginalWidth = 46920|Originalheight = 33014|Filtered = 5|OriginalWidth = 46000|OriginalHeight = 32914ygJE g*V $8R$gx&֜$P K.A|T(hO{l1K>m 1FYhlI C % \ y , y  Cy4K A']-/~~C    #%$""!&+7/&)4)!"0A149;>>>%.DIC; }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzـ P8$ ?. ?P(0?!0l@/ԁ`OFd`$9;*B,l@RZnu$eQtv'¢/d4UIAUH?hRJ|/O?a Ѭe4Qk\pD2K-n۩4 Y@Y&Su|~X, -8iun@BX\1*dsPl:*K(7WՆl]t]\,j€ { GH~(r*꘴-:/) %Ky%g,ۮ I:r5s氹h7(Č4J);5([߯ Ml*" ?00k0h,HD-˜6«JI׭ɀLr,1H!*.-!BH* Nr3̍A*/Jj>sTd"҉’Jf4#D}J*m8-BEKLK-j{>ZqbV(%PHjk(҉(s碲Z0 Msn-)6Z\~,sd色DiU*< ,~%r=q y'-Z.pq/Xl(ҫ"{G#R"j:Z*j duZAu[T~؋#,1cc#VSp5S$9h$N,,#W*<1Yd, .će, T`x% BlƼpC( ;;61H9")s( |h͒)*`D®bnOKTS%|m.JR "1V$*D(dCU/c&DH·!δq>Ɯ3nD$"Ћ䨬0|7O*&h\oFΜcF^ZEHb$5<$$s*ZhS9&.(bX䧯@I*rо.-Wdh馃=2Ka i@^*dʂuлT,ǔ>R%lA}JC &٢Pđ:#v;b.p-fpF,@nv<WT AЖ,pnBv(t<U#3'oAU(%Ħ4gDVIS~WWɁL->;Cj9p<ϼ@I ʽ Aq/,~Jt!Q4MxPLic+q{LΛkƃET8KdK9d@P(` A8a08,nA0B/( B DH?(_ Ac J^KDU╈"2ͦ#cʦ;6O~_tf@ "}ן{hZ5)8!SqnOa@T[v5g졐z\. K52l0p0X>xrz2j콶 34Z#'zߢn+|J+T("0q 8 ;0gn| ȱˎH:h 2( lԬ$ˎ0M{5 꺔%,sC'"hȓ%$(JF :L1ό$t% cΩݢi '6v9 *0`{4z&G\0 "-e,J]M>oe, m(vYZ*vbj 뀉(?ZBb2 4*J0H32R7U4)?5˝o!)r_(j̖Ry*i+͈{OIr.!Kaq iB <"; }#]iB`*P}0S#c8%ۜN*B&L*Q\5mԒ t,YB[/.%)QPpȵ+$<9}M 3,'+,L5tipJ\mNJQx(?ީQ">"@KIOD ȞW:&kLʅE ĝ4}6#ԁG| RwJ ݧK$T"KM_Կ:lB'&D lH9Lۤsm´/rR˶4e*:'&e%p{R$PR+:K< URp% @hx?Yb? J 0(89Qr-՜V .t)oՋ"bKI%9C"DMQQ$2'9d+'bݳTy⸧3 ̱VۏVeB, " h4ud4m1ZK˃*WS PtޙA*$` b9R*V%8v8wRdgfS#@ 56v{M9::2X ]:*t2r؜e &('Za(&? ̇ r%u64yuԥr'BG$Daրf 9 l3jK$S"db4(L~hg ($=JP3G5z4aIɎ%dѓ0LںH(bp{%J2fNFp0Z isK(8SyPp,cQ"H)4az>3Gʱv%;[ )PA:1kP7ugE!%k$jF6 "M[n̴"%$I!}K6uP"8IѮ=!FN=$[`f ''uJ)UӺgc@{7c錔6VB$U*iA]2_J)a%uaӲm.DRvH؜#?^P2MK"ТQ/͢nEM/"N*I_0Z,3H%?F`zޞ:ȌmA  V4qݿ LypR;&JU@72q*9D&R?Hwk43 P,)Io@y%A|SeaP2u%NĞ*Gxz*XzEbh 6b[#,L-ex2!PHdžnr&p|l) W$(V:íjXLGLN[rIe]+$8?hDynt<Yhf/vz鮕INƇ'" e`k fV,G.\鶃]#Bg}A#Zxzni)B,ƥ]P%%n+MfH"bbӅ^D^BD$Kd4/T#Eb7jż)i4BC06fef85"E)°BqL`*E|D? ipD-"((k_튅6oSʼO|)1(A|d@C0G*yÅ1*.*u;+HhJdqELN,Sp'(%Ue`!22*:S"x? ΘpBnBbY&7 ̊9p _%&|'5d49l(A!ѥ p( Rf(p4i\_qb.»X!km6MCi$5st%`jcPF; ץ3'!ܢ &}cyM q^,zK<(\8f&,CWnc";ʇ.R聼,? A֠kֹ1- D$`-K)ۊ@#:Pjȃn8(4&ʔ{`>ӞCpCj#q r`nb8"-Kt̿RDMi.K(`"HtD9ɔC 6l‹C28ӤK#z` }F( !茓@4KISJ~JOUISƎ;Y/ \/+O*\! Lʯ#>SJE#c!< OkR.H;ΔT<)j}~XsE`2X};D,?J~ 2ɿ6 r;y@|DVf$Fu|E*I&qLhILם7 VQk&u}DK -Bjd:]FiYIhLt$#Z~5npSXnނmim;hEs)ep!ݝxű<AB~ÔAmTV!n%ɒY!d! Wb'2o{1ձXV%|RΉ0) 7% rN0F]I:iHdw˜LRv΅TCVRdl՚_i' FB~񲓘^U5!6vCj ?xHaV)Ohp-Tð4 p͵(H&Q+R$e@1}(8(HAqfCKM=L= lW~,y (6TZȱAoI֯5)ѥ~ֿqQ""xcHXq+5.`wI<~ 5#s]29klgv]mkc1`}:F!*81[a L3XrZal|&%z%RWIENtsC$" ^|B[jj ehG!i0GF)U{0 cVM[2 [OECa.Wtj0aa m,PNݘbxd~+L\ٮu`L*g,`t=1Q5fL0h{BNMiFypHJؿhEfʪC$jѡCNJ4H֏8}LȢ+"+"Psݡ: D).+{ 6-qգG"1W'9"%*})hEKDs%㒼z{:,9I}\Y/XEG w??.K&FJKu# K8eHeM{g('LrզySOY$̭rWnL~( ̣"2J6:n*6Ъ(}8 o2H~-:1)mr=vJSD2@kJRk=-ˌ 1q! XHTkBT㬮 P64ZU=ųkC]V2;- ۞AsӠ0 *n#6n%A Ŀe9ԮkḶL Lm%HDV8|یM-*u8TZQ2(#~:Wy+hI!/2!g|EL574Vs*P 쨖,~@蛖##jfߧmJSmDMg0 k͹7lJMxQ Sr䨶 ̊Mgŵgln \w(D*͙Ĩv8-g1@nnӣvRiTjO? B5 )Rm )9%傶@)gdɑ7F}M7(*VRiN ("5 ‰y N AvMpʸƀ[4nŠ8RZKqsK$l>]HBƖKdj&yX aEw7Ж+?Z$)(XS O:$!ҠW[3QG~o $P}"zȹ<#,Y CkɈ|fl2P 95vY{2hvr#CH}Y*<,D> 3mMIŬ2 bEe9,tՐRVk TJ G mi݄q'D"]UE(uSc+BrE^ Oq$sJ# BqE}!2)~ArBSZ!FsPʄ$$KJO qQRXB5 E98ru*?&T"&Bm3zz r+jЉ`V B75DsS) 6ʚAj{t%5ST$a)lUhë`pBcI^/.ܟW%UGJښFp?_(ZwJ !rA!2s@!GӔ9vlItWm7@'JŕK9o+2&"4`Qknxbf>&JA 6M"6)N&֮ϡ@P?ŸO@2fѹv+kCEn;r!>C"C{*׻'JLzjhhU{mhVH[7o$S"D(!= zC{֫m^hAΰVWTre_=W>LQGi"\COiUyj9gsFHX@'EijbkjyQ]'lKWԕJ"?;ѣ|X{$`R+nQ@7^nuL"ӜEEԵ4/T3EI"\ӖxEvxeS`Y#T?IQj|*J1uJ!^R>M\2b@(MuOdH;`ɦ u,.9+CRۻu ;-ϻkrb۳+`䀠?GM$"Z9sh[ܐr$=J1sn /]uUe!KRsg*ַxfvzg(#mb YF2CW5m@ #cVr^ jOD0*jTZVΑ0^M1w}Y+n1:` P8$ x$ B(?! }h|2Mh;$C*ͤx@,Hg \~ͥ0`O(M L%H}Kedt}Wne\+@@0}pZHbo `AXv'jQ?dr$~~a۷ ?7eB@v@=h {_琉k2?_ G_=l[wNN77I`y/M7B~}̳ `CÀ-<$F#rP#sv, B↳Ilb$"ƫ#T$26 G˸Lcv#: +Qű6lMSjPD$e |]DvIz)1DIT%jQ2TaKQ%"nۭ&y 2Dg` D27v4bJq cP?WL֓]kUA ]w-U@^j A []$H$# '1H^IhM2S,bLbȃݹs15fҔb<+nxm@|TF 07A=GJ>ȍ(!c|>GA K62V^bKPp iFm>(5\I M%cT!, 'P7L~"'7)1QFž\JIw^L%uw_uSl)mȕ8VX_ AH\dsRA5()5!UTgЅ@P01I , XtHz@(>Ҕ/E(( WeWbg5g$0mR)YE^LS?(TŸ P#nIbtqJG*lHK͝NZaP{k]99֕dHFl]Z.5eDO3f`M7Fbb )n'%4(4l:IP'Ri2NSjd3%E1H!E/<(|7W @}q0pqZI#D*@P9t 9ǰ0@?'7h=Y,Z Š Z8!@I\}"Ĕ WQQ6؊v$>㡭DD!VruⓦJb@&'h Nu7QZ%KJIUPU?z ʦ"U)ktXI,X93fuD"C8 AҢr=X, rJm#$-NVW8AX|n9P0*;+iC ; @϶@%Ew28/L@8UtDOzU9$aOPiw=/5D?J9d{&M$|ޡ>LҕO O0T>şBG $fS0$`,'ޏnϪvM}JQL&ٟ,(!s3S%byaP+';X $0]ʄZSERkjD[G!4ͣ09f=6fKi#ZNVHr ']W:aM*r^C2(kK:LF0 AqUbHPkC Mz (>%,ExJh]N < bHn^׊:ՇbϤxb.X'@˄^f0k[tn.vB )bP nr.(~Pĵd&<[Q"PB!LZB&h!Ft,R-HPìa*&L+ Dgê~Vl3A!,xLfFZLm#¢#XƸ)%d2RBB#p& \-B? ib81*4(s='qD@F':mh~&9$6&32Ѷ5ymI?!,(EC1cA"MІ0v2('% h? 3cW*Kv>9H蝂4B `/h3n^"+MW>:hCP(p:lSEF4P*NDcT""X0rFbz٢PV(^׭QDl6K )(2${8hηȎ):/s.,F38*d@FT~*dDB٫`OW<.Z& :*#2m<3M7"X'> @zb+FF>d*-07Q H-.V( 8y;e3)#DeЯ8M9BlJ>>)&QL>29!DS LR#G Fln gJpj2dX3W3* )>SԨ1XlI~T7E6.KH߷#Eh#t,\2ITBo0r Q\2#irg+#dF_73@. }?.-&e!|g/<`!{$#s(@۲0Pg~8:',4Jr @ {!&:,4o)ir?l윉0:.ӥPjʘdޥL7N ˨kM ׀skV.R #W"GovȡScs5CfPg޴[&#҇?>RȤS+ʱ)I 4jT@1t5g(1%nR6;h* )*J2Xűmd۷,#\2X9CX|4o@B5N,#On첗;dCp2Ud_is lQ5r4ȿQJ5gcd#6ȫKeb1V J"+7us?M24d "Vm6L㒒RzNU(NT눐h(C C+|Eɵj : . [C2@ i~z|X墨T4& ,4pc&%S$%lw4 SJ"i%+ZJq[,!!~*2m 6ɮ+6E )n{58 >g.-L&s͹'i@AKBp(J0U.7yV V]\ 1IehJ($%^ɫ7HVju|hmJ + Eqw5,R{M!FL0! &͕epN O%^̨okPȱS?Hh~QPuM\J;j)Ջ(ep¥H݉  {Z D`@iwfxzJꗂbR(Ƈt[5SC|9@c0,6X`1 2|G(z!qGQMvjb+'8FbHI1޼ / ;ǨU}^1CIFytQ%WUd>Q!f8)5ֱEkRrejt ƒ~Gq}q?+x-Kx #u;d*Yz$btb ds<{T43HP˴|sl1g 3Ijғhk$;3)N>KUXb fK Hh ;"@`pTx@-1s-a̍WY Dņ:F.>C QZH'5S}`d Q2HIM#9wF0QjL~MUGn(ꋩa4ٯ&vfmJ)#9&Le?+qJEWpcr=Y}xn>2pib*?jHR߅j'sd\WTjr9nO;C1ĆF`Wȣ(dYx'pdV%)$@"@<R@2A.o$9C.`hfFD<hmC=C@ F&wC1B(N!N 6wB"#5>Cdˮf]H=FbV2d".i=c!M/b8`P J5رjecp(!A}u @1@(Ni)ILn2u`%Lr% ; QF!t[6v)FmGe"xF^MO8da2!LvuGm-!vmv.6oܳHf- ZP!Mri.Y8 ]% j@'4G5zxhXiIjKL*#m/u7ePJ@ a(.  (NDcan t9醞 .A6WDF]16Gg,+ E)"x8l.6n2*rL B sxhDDiDB"F74!j!ֳ/(kHGgL:#l`/iCE&ùp:d Ɩ-²8LLMp.q - z jŕuJ$^G=$LE|bLdʦ)(P*:Aat!a`R$RCE(% 7:)K4m}i(`7 Pa6"^A)odF_e>[A6^r#8-3*GG,h7 :`:D(2 lTgmD%Ԛ8V~rf1f8)HEg"2Zkb,"#*Q1-=JּJㆹ 3pHJX#6ø$tDUhVa]cGg2dE:k(y$$cq7s:NJ̺ 1.yŔ"PF284(,LhjԈѫ8Lj80]=X9 LD(7C ::D4hQ8VJ4t\j;B- W|ijB.1oAD3*`Dy`SNSHXDzf5iLCd$  R)NMDKd|2c2 I&c.G QjW.r*P vYc&ôwi@!Aap 5pƢeC<8•6%1He6aX=J dxTo4טΑLg2\#T$PFe#l'hy?bBaPL@#"@- 0 ?@@W ˟({4@0 ߏ( `YաgJOٵ/'3@i }d~*2(&~JPNцUi4o tyX@7 |_/KMhk4sQ':?@7]ҞP`U6;ԃNfBHM{ ۴z۳Sb) ^IoBJt:$" @Z)ܟB~:z)-h$ڬ4)|$"Z0 *N%2ւ7 &j')Q+B)KDII<( "}ӝ;. Br(*Q~34%i~})ΒFkCH*I>Na쒞s98' ХDA`FB{ i))k|~)B9TՀFKh}B/bK#$:%֔>rGfW[F@{9dxE} 5$ȉm Nڲ=ܵ |1ɚ*N+ʫ 7lhϥK$l%;j0/\=OjdxҮz —ĆX|a " 8G;2(, fPV1WM"?=#/{L&5BږHӦ"''ʃ ){06kBLr aʋZ)r9zwz t sLrhEĩSܟxrr\g 0( )ءpi&b\i<V:Bo dfk3u$.Ci41e~@cĜdi0FX'@Cjy*|A6N4(q%nRS#JvYq5,o5+p;Ca? $@QAxK;$ȸI>//ba*Keaur5~> "Sثr!1.F/[/{(&=P(#=R9Rd%z=`"=ׁH~#ΑT g&T?Q쿇. 7h\.`Jt}ft 4S! kNKo.$KL=BRKbG-hQ#rHRPBMCH&NHubCi,F:T=$%~]&LSJ<+cbIb,zE*zp?Tm`) ֣A%D$%~ܖZKБM8JZY/\CspW~Ԡ4r/[Mi::`]YKиCP>4Lf0QtIoN$fJ&A"u&X KQBӚbqVD3.99 1Lp|8L*2AP,mlSNJFvXHifJY(fKVD%ڻWYR3qH8DQۓ&n61:Gy:DE %ZP !TT *$ƒU$YHIW8S+:4f.I9-d +rHnrt(/#s1 h]Z<6^aA@!=_SjiE_8Z䦧" p0+tK yȻUT*Y |=0ئpz6DibEhE K>83O5S}(?p) t$ 0pݓ]z;?;XNNུ~>~*Q.:#MQ=sBO;XFRQ!d*{> LWUK'ҍ'2?y$2KLsHu9x ]ˊg.,g?B&*xev$X 2(5p,t.d(J&d:i $B"`9"pLT?LD,*N݅Y'iط`K)zwˬQe> dℲ`(sW#f`%DzAXG`UBdb0XETcq&\XC0ɖ=B1"h)(9 ; ^V&3&.\d 9äv 7D&d,+cf)c@An-\ !(Xc.Nkd["&丢. :'%=g~v:gGAB"5gEj%.0/xkq =@!#4-ʘv10  |N@4C"p)4$(Kv/9 |?C4>CF<\< v,>Rnؼ~V&lM 06pc&LȚZj4FKTSBt%(}Cv*#C-clH4zD'dj}ACi`pc/gJfFP"ރu"z* *P'b9.(x^B Ebfq)'DT63a : XbBfM+PC:䆋kV-%#lcG-PIBShXLz"L{Bt'*Bؤ:02|($\/3bo bƤ7Ur&sBkHi#Jέ+($dfﱀ$&m*$6: (0*:gXBV%v,B-E?T5R$/,-$(B@c 4`TGiu 2bCDȄHsc7PnJ,4'H7Fcw6?J1 7/0nKZXAa lD nIZ)A*:aAMKќD"EoVozҢ3bn2T.\"4 B䂱Gr-C!Zzxb b>%L|dtfCdj d' 4( ~@)AH~T&y$,:'T7bN%C(C40B2Gp12K~*.dI@"DO2*G`+.X $B[~BhއA+#f,\9.1>C2S`aMt^CA$~~o%:x<)#E+ 3 M? pq | #AI2 ~2"kV4`4`E,JLncZ&ba 0H"Aʹaa!@`'¨r=H"1P 3k’" C|)HgQfEsJ43#lJ98cD:"ZL=JgdVSJ`@tR`8k?v ;*dkbj(άtMS$*4Ir["k(k0z&9jM*>'UY\YCW0ZF":K2dFdCD p# %_|E!F"'DN$n&8'c`5%1\fdFN+[h{**@5d5f%@'(=FZ܂uBZE !&b(Ae%x]NX"&{;il횐 * 6%$4M~&E"RZ%8dwxv*)JMP?rVpkcf"L6! J(,se N:_]+Pob @(slpBdsbaDb E$dQ: #~vaRyv`,"8%["( I3:;! Xs5 D;3ћ,;0F"CaKǩGyl=/VnV67!b!^0L~G^.x\C5 rKgΛVGq;TE^e%r9h%h 800L@W~F@ OP@tC ~G d)CT8u J<K_h$,*Th _@h@ub1[,F4Dj1;eXSߏ.Cd |Zk[_hWjnU`P0 E+`Gl`0<OAN @QꔆOO$/|G׀m}gػ*hzސ38lP"KS ߨo,. 7ZugJ( r"Oct3(|Pj"}` }B @ PC=$~5 'Nz| Ih|~Sԡ B.}& zW 0Ӝޫ>JEL؀H[H%*:<~B\3j. :`ī HԈO (RM|-n *:V@* ]Jwq|yy҇R_BW. yH3j5(oa|OʅDsGp7|=±68T*pvfeټmv`fhpw5p,ԨҬ$+rh<8 ؊Hs> ʤdJ֦ )8 Wjj1(&Ǿ   G EKH ( z/Ҭ2CZVڊH9d#6; (q(sn6Z,̓Gk|JR1$[|C* D4^: 5H:WJ Zg(jb\~n|?9Nt={!  P qgbE1#+,"I pP> :&45[y+#p(? Kb%d4$,,~ނ+!ƑBs$pq+/BDFe(6 )XH@AdGƢhL:c$G`~# 1PYH8w @P 25]{2Ø ܰ:&@yRqYzG41Q3J=iEI_08BC }"{RS~)ԓY 10/ԺRVVFRa;!!BMa+1TXM3nŌH[feP`IH]>׈Q>b Vcc5'6f?XgpxNv8m 7D Üo7Xbf dMj42Xa &#J Q " Hr@Y2YM d() YE& U h@ @& B(Q٢)Uⓜ ZvhHY-JE `qJ=1Cb4ZlECnGذb$9DJOY5J ee J6$f YI.•c"ƀW A+ 8j̨ H7`el(eDfa`4%@Jk )x2HN11 a#J{H \SͼzcH@"YE7d?ǘ ud֬ɹɄs9혡qMS$~ Zư#]Ŀ!QnPgbC/Fݑ ,!ҎzqKLr6Q&L%x罍HHJ{f"(4`oRx#C1Hl2h0Ln -.9o>$T"g:bL4R6(D#iH>"$,.2.ԗ ~@^@ D%!aB`$bbbU Uz:<3i/If\%M^*!.&!$0K< P*D0_b,FBTmm^ aq!1$VP]`CJ۪\&$$bJ(. +`"RuC=-+0e2C In!HUf4>b,4L]I;%b:V a0\AlVLW1^ 6%F$dt2#]]˘$J#xj2BO>C",  $(ΐ1"G1$,BV9t!8*`f* ^!!|θGF($6,~O8V6.,;c"JS+4r%ox"/2#pLè+AJ7"\J O24d:%jc+)G#*t/ *1&59@ }J!E+"G+JJf)<2%3.;P"k7BY,BY9"4}DW9(!t_rWD:b B`_!R(dt+"]0_0DiEMb,et0`3C=CAD&CB]7"F>JҀ*JbFn`&S↡fBnG/`+ .I&k(,e !!$ҼF0VAVa!<²d%-AjG.[F**ehM&!THnؑ+.T%'Vn.z3tͦoCQbqr?j,`& Y#CX!7xX#.H@*6:b-*Z24/CȜ.|n!Of;>"a<-=$iHLI#8J^= !uV.` W%$KX"V!r()#K Pxd`0%`0E,^-d@%AsNt*b*O!!" C:2%` T "ML0@BÊƢ!2|NBX"*ba B-5 X%*ӭ\#@V H-# H"¤F8&JDCXa8aGHD`Jڨh,E/DD!it *@CS*4eE7BeD@`rP!@e*@T`a*@!Ef_vTP77wEW@! zhT B_ּT b$0@_vv\7{``>ƕ!(B>B^".<b`8+:7T@0$``*A!A*/ ($a4J$.HU"'vNaAa,@( *݈ALWdtA0Ppz XD2"~(aD.` O!<.`"V (7<,` |dž%g:Ď:BF\"*}^JEB7=c@ =$"8?*rc3Gfpt-BH7p$,&bKd,tO|9Ƽ7@O@$N;&Tz @.j.EIdL#'<&DR "8m'aNؕ "DD`)'M 7,!͞  &AO>_#Z`D$s.(d 媠. (!j;|+ncdB*-a_fMv_uu%嫮Aza*AP+)Ԙ. 3LaA>$GX-P͞8Fµ d@&9H׊W4Fd?"NbEڡ*(*%k4[%WHTsa=#V9.K:Hu`q/{a‰uEe` z*X!xݎMm5a?y{t^׈JrA_rtPJAA۠ a2Ѩ*Z:P&dJ-aTnrWFI61@ㄡڠqDJiF9 ,8¢.MtEab׫b2caI d+Q.(#6Q>|hab+6@"¢DG8J ۠zu+(jr*zC @a}A!A|AA@%&"ѡ @ @@7 E` ~F =\VD^`"Y%k= GL ` |0B1` &L?w,  ;~)2@|W`h@OW@O $)dlL)Pۀ@w݂@0@8 ߡC`H% |/yV |Ga`( -S }  x~*!z8 򈭀;1G` G2`jxMIѻтAH  a0,Gmnh 8$nH"'~ |,|@ 6xfNcR{/' ==V@zұI8Ђ Ѳg "ǝ}ۇHw5 C 8Hs.Q~p5:s m |{˜.N9K^q#'& @]xۀ  ء G撼j½.NhN9т~9#@"3O`.jVX*x-N sBgB1P),*{q(M 9 >X|aǐ, .C/Xq~{>Ǩ-D4@u(dx$mˀC~>xz p\0 8>GB `$]W 'z;0m 4Ɖ0,8$#b a@ kx8b@,dMI.4,lBQ$n% )@t FJ $x`)%`2 @8,?#Yv~iB}X@#c   )QX_D0 =Ja5 󎘦h9 f"mF>,{,Ol^e}THDfprR &g/B.DU}, H\A% >C#X(GzbW' 48T>H+RfGɒ0&\dd q?R+wEz!E@s6+dnS 8%Fhϟ5@=; z`t@.x î"[YbJ0#SjXDOY"r|h_ e5B>\K8|k6AKqG"oYd Ŋp{7>vʑ GJ1J2D G|a HAr4ү[H6Ӭ00 (}Q?[G /22JQ5=mpv9Ǩ X( h dn;pev4)Lf:|`I %Nw:( hHSșK.E$XOHVc  WVO{bȋ2&b9WBkqJGf}to u(9y$^X&\BCӸJbSOlqH("d= -R{) j0P.t)S4%4):t!*bXQrRǑ`PO#Y-@+,-jSH@"')q41"y "$/>F !%(0% N|Cc4;!9d0#ɞ4)".!ٌ7"9"\l0C p) 65'teZ#l 4t@ 4D!|, ~xRE*?` ~xZ"*I  ,cHgp/g  4bL78!FÉAUcB4 pc /jJ"4@\ʬ4:2 Xڐ+-ܥ%.%JDשB`jpˊxc@  i$#9Ú!0,ةǰ,!!Ȑ4/!EHD:q L$ lA$5f4'O.~)a!b~/ ii)$yeXRd6bƜ: ؕC~,),$"|BN&1c‘DF`CN\BcFo":8d*?#,aE8iO6tR!@ 2K@`.@XAP4ʇ $%.-P2}i:#>+Q ZH8&@"0$:3D4c>(""JB@`&ˆ.0"F!n$4bF3C9>"4q$-4:9)첰"%I(" ;4VXR'BozHg`B43CBni l|97#aq̸~w@E*!..A\7wCr, š6N1~/!F"BR$, 7窆^kgE, >^/3+Gt1O: 2") Dqʆ|CB,b}r%39Sn V(04` 58B5Ix"J(/ 2{w“;` +^99A3!B#:|IHOJ)B }K%KEbFNf9`#[LClvF C><,VF*z#P|(}9"^b+Ʀ3S?葵U>jr$i`BBCG.v"(."cI/ %c:6NtEI# z!8oX)Bt#vӪD˕1h?-zr) ,De%]!1C6%3j,,.l#eN"!H>U9 ˂"v(.`bو\L-`-H#-kp$.j%0?qzPꢅ6 (D$Q(э,B)b>j(b1\HNb^!-Bb%(>r "\" H 8$"Ƨ^rA@5@a*֥2wO!^ˆhNl@@V."'9)C,%7š4 +B }x(b%"@ɮ",] |$|%#Ib)C$6tnZ(b_F"0bT(x>U9X9#Z(- X4L#4!4#t(¯D b9  Kp_vhd:N#N!3%.#"XPUH˂6.!"N4}A>35"#`'ʌyi"h./d\$piF8i@9%(dN$Yjb)0`B8sRPNTDhX 210c4-倛$.9,`BT)(9)T/#%$2#0[!.2|dr\6ÒфYB meVR"s648,R)g)C(|o JLاs$BC"@&q|,Nt@1QU#00`Be1iT%Vcj"9CF*@q$`"">9X@A~j}vk"ɮcHbne\dgDl!GO$2LI gf}OX,O" AA6$7HIbJ(IԒ4[bb7~L`t P@,)i%:%7)$,Ba auРb9Nc.9[b5O=$56yxQ=$`CZS"0 qT!9̣)DUOdT}c>~` р:;Z/B4(|/o4B[(y,"Tyt/\ bTWy",cH5 3ѦU,Iڶ"Kw N>Bk# "SVUY4+$n#\>,cd++zt-"킂4+%EH .[)#B9BN*F9S-չ9+%  bxk\`Do1 B"Qcs$hH"ĺ"P9"b9)cESDr= )͆#)SA$VEU")>3]B ҃@ؾ%x/REGت{q1͋Y ړA M |R3HI,"ާ!ʦN(殊(L(P*+vYpbFp,zCEf|)ORBC)Z-ӡ}u9Қ#AbX-P-b9\)\4c6*H=bc|a![BZ2%BfV0e.32ϱ2C$ڛ>?VC#rf!61rEMHA4")J"k/7O"@]2pzP@0eDk]A @`@CP ? @w /03 a{bјKC@/?@!Gقu0CD`!N~H3T~$< V~~A-i7' =/w dXK@~|=g@H^ .}VGAmk<}?Վ]|E [`@o\WWf1NQ}g:@x/2!2| hJH;~# 17'71 R"}@y& {pk{K'#)q+LC@!"ߟ {;$B*ȢpE-j R}g-}jR.(ǻ֤.~'+gɠ(#~8Ty~<~~V>6 hrJL,Z£),Ї& x(@P"ŨyGj=gtXy١1sk@y{#ihKv"([!yGv`Rq~bPۮ,Z"zG{@H *{ Ʋ+rb~Î{piv}~W1$gic,% F|mXR+K " #0L :8y3mDIT޵<(puG) 8G Aи1>@Gz)ŀ@G @G_@(XrC ? @o( '|vohp3%}Gf'E@'`k(@  R4& ?_~/҂3.d iOϧJwG:2@ }Ng}>WŬ ]p@ }}]d [⤀2Ҥж 27g|iC¬M` ( }D1,CB84@ '6ȼ@)`gs'/`$@>2V ei~|g&s,K瀀yyF)!N{:S~@S:űnxKIz~Gm Բ:`E0(`GA s`%iWX ,  6p t#X3.Y@'4M /EE"HK1(}% lbEI>cY 0&AJM04؍Hb" Q/ #a!YhDiq+, w0ǒ "́_9Qa B #j"k FU!,?BƜFϤ4?@R՚m]'Fpˉ2xA06w:80 $B#@[d>,XsV ,s?A_4 :0Ü+?MQ r!Y1#6I@|x:DZC{ǷyN;@`<ّKZT}PQ%Gc}u@q^(0%H[+Mwwb A($pI(U]qB%BA%=> 6BXG&B2drJInyn H |騢juED X͍,#A،n/ C&z#(sv=}gD>V(`&">f~*C;"JZiHD9d^ӣ>jhGrl"PA!H_d@!!2DBT-+FJ=ŤsS@!FHjCB6BCE(8c"GAOp$^/'N)cH4:,1Fs"YP6.$w0:c"Ɣ)7g6"H|Jup?"DT>)PaICAJEh"XCBIn(D,Fc3 ("^Cl#$9.t$/ENnrA@{a;jlJBL+Jt9Z:8::`J>%eVG\0/O1N4B~V/BrPa`f(.08h\((]#DC#N.46D)2:I.È"C܄N( 3$/N:..dȯHP\`0&b6Jc*:Ŕ60?HSB#EgBYG,cAIg,ZL$&2($K-r{ FG<2YbYNF4H83Xx`"Nbhrø2a>|m@ @eFƔM.& G$D % T((O(/.B` `Cn%Bg8C*ȱbB-)`{*G&%F(-e)NQ) >4"xa#6@f#Oha @Ǯ,+2`F%)Ej,B $5A(F*'4.!u!#Ro(f0JXfw Y b$Mb1"4J-$ B8$4LsІj I =a#0VC*b@r+t(H!Y&V0Nάr $P W$&"(JGd!l.h읢 2d <D!K$,2dMS46 `($7cN{B*uD.~˜kw&c@$)&w"/^ct.`"Xl,ELgd:F}@RD2#3@X6F=.4$*h:H8aA`3mT1Jb.#l9e8H": FF $bB3"z}B9>>Ŗ1F4,*Rbl44(VdtBbcqH&VN4L>72N>.$2|{&H\a%>L܁R|@Eo0h].E%'2xdX bWJAbY':H EddsCx#(9LUcK@4@kE;g}Kwfb^'B)>>/#ܓaE@1hD4b~RP@eX~+x.fk0:{ &|-,p$txING0($48c@$SzAP'7@7d "ӛIY,O[j|o'8..4X"u~G#6a7`&tI Oh,@(|m~_ |?A/}AtϗN~@P h`^ CB@4&xxDC~>sh?_3hwޠ@C惣z -y~qgJ{hY򕀧$} R |}g*ȀJ2G1)#'z GD2< q1̖# Lz/G۪ *X>J)'K|)$b'  A S$`zGXy-'gD` ~31n#1QgсZ @*`GugBy٧c ,J4>i;)agI˄ɘ>\&xGЀtj,렊Ug:v4"I{4l' & @ ~K 5jŀz251hlyb`j ǶP{+5Vl ,۠` d,4}nJz@%|t *-'i@ AP "/,8 (%a<2u>_0@rQ}xB.84 AXzgc2zQP p( 7 }= 80 |Pg'y5-C?8P +r}P_0XFCb@-n}/Lz@@p?G}C /@F!)P CjG|@ !z  /L4-`wCi3:~Ns!+:ǀS'tٟ !G '%Ҩ1h;~}Py⁀ Sy@"QGîz` }4)|F`Z D#GQ{)B;B~( )yIB.1ri'I0m0$+`A缀Q`$*IG-A/N|' (1B(O0S*5CK Q0:X(f(H  bߑ Hc iH!!)p~A(xu0>5 d胊 @聛0_NC:1H~`]Q+b0CN)(FЃEYвVC[ fNE>mQY:1",OC0 QYm,<|m(1YlɏZ@}bPH2"9"ZzB郞=ъ8fʣ=DȄ.<bN1e3)5eDY;vQHK=Gz)CĻR4@DrD) v[ay >µ0,3N\D(G ÊP18c?D .@@Ad.k)|;Y @( {;qAd F`Q,1=Af{Q= N@8y<R}{/\:I}`G:`*Fa| qbRRcU&:aCO,2|}uJ-=6Н:?SNV 6arZM$ihE0xZ D9QPԯ0o`Ή 5$IGaM"1CǕl\yfx⒠!qMCX)6OH8Tb>D*pa8 㜐侍 6? JC(22gH*eɇI֒KD1 O 1Ĵ :i).zǞz~e4xcmL9&>0nQhclJ+TwH !чPdǖ1kڢT,>,l;oD!#> zfsh3NS?ƜacĘh(:Jd@C)h H"D(( ` Q8/%DgPåJ(I~P9bQeEa3C-#H@ aerB8) .!$T&@`(l+v$J_$48d2U/gj`(Ff)Aeh"d`> ( '%x>8H(%#B(DJF(B±!fBVHUAP_aBG/N#?@_& YCuH QDj@c9l@D1Ʀ7LAÒW&ab@a!(4'+"P}!x4 .F`"@8 6"*4(Ê>7lbh:G~*d$jbޠ9h_(C"# Nhl#1h: Mf.~8!i. ]l/f>.EcBzuCB(NP*01BP:8B"⬐fAf|g1B"D.ih("._l$%($C@TPtcR``줘-"avǢ("NN#I**C+DA>7B.<28jo)($uF,9h~{NΏnEBTmv!aqaz"R~c&mȬ!W#ĊaoBbJKbM:bZR@A9)B PUf@n_]zA?0|":+7,Pd4"t?Ac3~TXdF,)@"#4l@f7$I|!**DhEZ:%pA`.@f8ervQ$ bH bLX($LvP.kƭ@%#oX~ A.SAj?R=d/a./҉ʌ0>N;D,Vi8RC!"]@#>pU% bcaZ(Ubu$-) ""N%dJ1xj ,fgp3]Ê郄 !J%<%mDN3U1,M~.4Uh0.C~.s#nO !h. q'uBzVB& !bzDY Tl @AKH2$'|ʄ1\U bۂFd $`I,h.%2l0b6"'9Æ R0'l`F"$%bPTb A/:T Qʬ?JBBC0vQE9R*1j!"T!5tJ=c8~Kh<=*%">#kYF4!L<?*J-; (XnOp<#+ae2N {CTD0h a#B/v blNK|. "CGXHgaBV4% Dn߉ZDn%cA_c]D:|q:8TbwQb0J1q5:"‚x8I \c9lC8YN@w"4\B y&9*DDB !./TB~CwJ@Rk@$H#BkT"*0eFQL6t$2"XcNZQ"/,fh"vl6Gf+Ii!Xb"BH@4뺃E z4 *"b Fj$giC!dHm 8 @& +2!NGdZA@B1nh8 U)"]hgV[vwlNPxb>!y:Cƌ#)bIUCxAâ|` 9jef%a;d4~<RJ b@hPƸ703CcBE%cI"]AT91((7#8p%'3.tԇ$/%d (Bz71Ʉn*D2D%Z$D"HnΕC A<Ŕ46BZ#w~|^,9 .]Y2IbPAOBOVb?Ei db'oc(_ 3 [f`aBSX cdW`3 }f[4<0V4`4\D,£2L4/ZH("0~ZBn"u2, `>㍁lO-|~A>퍒A2 g&^EBB~c 0(B@BRg1"LMD"{*Ή C`>%ZPDӑdb,:C!-޳F\tBNbv'2r)CF$xy6^@Bo$(E'T#>A`p DAЃ-00C2@<  `$CP)1)If.>!%g)rܻ%j){飜a#8iRc,CH jbXSEdV%6F!RQF/^4D-eD< ](e) jPہ".]hCD"Nx V<3R  @ Obw0#  @'*|_ܝ._@;> }GŅb/)`PQ}*@W|g '#G @j|D 9^ %u`e og?`p  x0h}@HV3eFʆr>Ox8H @II'0g 䄞+Ȳt CN ;:6c~,H:@% 쓵|[B+8  (xi%j X"xħz/x 0/ <z@Ǜ'3~P̧|@C 3@P{ #|Y娑Ӗ+ 0E" E.&,ɢ(R- "n(zYc0Ǹ+0z'<`#0ZS"&MKN}I/`ә]c9kRy Zt`ji*u"B @ ? A8 Ѹ>@ 8<7'.Ǔ #o4.(Og|+юy`P`4 P,zO<'@0 @ X0|O% )?0.4?_|@_mD39^@ fu;H^ `ׂPn+|pH 쁁H,|평G9Ѐ|&>q Jz21C\ԟG{HÚ`@H{g}#{ٟK|z4|.K~g(A@ Gs:3~ \V|D`.|+Asbl }*4xs5@!+$ǹ''B>1ԞHtQ(* {{݀@,oIHXa|A򑟑zRMxL6ny1`S5^Gw`MT~K=d֐ / 88Оuр->ρozoA.X0-祎 1!?ӟNK6;Xk c:bIY;~ѐ.%z4K}ÔfGN p y|MRq< k>M2.@ z.cTG|QyF%eqOK:- tJ q9 1 $}ѶzVMqp{(/gzGwJ@zhRF= DBAH)"P>`QIȏcN@HvVfYkr?S(|G`p?_!1*3@`,Cp V*`sDjO!􂙥bh >&*zK=5$sgH{1Jt9t;fDBfR@:p䈝\Q@C,g0]8$d:ireС))z X+,zVF˅qF-Ўxr@97!caOHB !4Y q1$y@*Fvwב=: aJ1 d퀒l!"鑜Hx@&7<~J03=7} 8Y4Ebk3 N8&t TjɈCy=@k ܣG{#*h6$C@u1=1HU| ӣ9k. bc!' Aޑɋ6t6+,2@45O&'yiw" `ya(r-%-̢pK%2#zGPMx-!;#p=lP?g ]UT1JRm.1 E])*۞ԃYm`yž 3L?2q"8mL{l0WZYsht {{=+3k@>9q%'"iڗ-(]G|8Y($*2 ;b~eƂ 0b:ÃB>K;Gc'  Ӱv#m-8`U9@VFMi֛OVv<}B`!8A=AEf:2)N!%!2AAQf#p AEŹeC f(qJb9x'$I;4dgȡ=WE{%0t Hd $MX 92Ӷ$ d4תf FCkm4&te^'&`Gt PNQv zU`2bq%*HیDӐ+vCP= ~J2r,|Rz?"Zle )x/U탗R4}og8,ϻAvZCp G~IS8=G/ڛP@M46>@V<,ww+OAzYU6j/bG2.p!Bi80@ eZ!01 ș?jŢ@ͻ6tJ+D캘@rt ŅcՒ0W$(B$oFN/H`,0cgVle1caN%F|+xfI" DI Ya(DP&\vf/Bx0 OIp.#\,^Ld -!i FI@%nӎSy,_E4Ό@ ȈUV^?OIj0{2ha >%@ A,D̦hN( ` aag(Ŕ12j @!rhb'@V+0~?C\P0U"n1QJ ʸ0AvƊ &To&/c3*D.c ȶ6Ẓ @n `H^I $€BG2=Kd="b7QHL! Q@/ hpL; "#@50'9IA f h(-G#`xE6v:6= !? 8#b6d"fT$>M!hBH7#\|.þ!'h.ŒML) (/.!!|%Ȍ\#Bj}(zDKO8v"%`u-"e"Ɯper΢E;d2k$b k#4sxIT$B};Ԏ+FGB"''2C@4C@WD&N VDV!nRY$.0,%~A&z#(N\'T2,  `E3 FĈ7"i*C|tt+lCc.dbNh#l" 36Ls#L -Ġ/")<n.!1df` Pjd1@ /}EeZZdZtgf$riIUtgpDh\v7[ ^%&B\"$$d:vcG9þ-LFo~'^#60-(beZLNH*אNFb% e=0D~LBd#֦B'Djdnx49.$(ڭ9-&*#B 4uʰÞ@c\}p[2/O8`1;tr$0H0.$"hYc3ԔY"hژ(F˙F#8(D(f/@/0#sx"">FfF@!yXɮ"!n$L["9d/dz2z;p4)\y%<l쀑f|C8.eưlh#[%C=.s: 25 !OCDI:.긳D-*y$0CQ Έ ND9q[FVfh54cԟH 0L-pQx)#b%BRЉfxsbcⶂ'$Z AągbѻF*/&^NB AHXhxXG;,4C4PX06z:̢ ,8cp[Ŗl@fUĊ"&P!?IHeF>X'f*9;4-O76"Nd*߬rO$rk#@,xpYh ;hb:)<ĊM'[@H 0|q"I$8BnLA!@B$4789D˃Wb*1)pD>C:4d? h"7`/hge򯨚h&Œ$ 4Un+f35< w?@ ` >P3~>ϧ@@ >߯}ϰ z0X5 `@h>a/hC 4ph/ǀ '^+ tJp Al+aO '| H0? |O~p[c{Ep@, >{74B @?'}\Dm0 ~G~~ @S,g )h#@Gzp|*󀭸 >ҪJ.h@d0| r"v%|$p,a}zʲ|'9g"l|H{qY֩O'EBEsRՁ(9잟G@9HL,CGLAz&:)|Q@{@hz}qޡiB (@jE+& ;B) -|G('"A!7y@ v9ͧLkT:"m!yߐQ܅Ҝ~)lT'&|闞g=HH4AP7e, \Ӫ- #'yqm|f @ h8 / &hX }>w#:UB˵>OWt| `7 |=(<Ah$dJ5>]AtZ FV@CHh~@` }Ѱ!:X~O$W?t h#'}_g p_W /yad($ >G€ H}5hj~#G'`H&0)!y&t zGZ#,.KX )Ly&ްl@,&$`` mxg|"@H KX 8~0Ё Qg~Lp)}6h Hy'}`Z)'n i@ PM љӭ1~ LiG|MH }@Rzꑁp"2g 1۝iC~Au_:ט "l*BG )a'ǀ)@I` @}C", *#̭H8NQ B:$l`ZH4};ӰY }gڊ tlË9 Ȳ N.('}gR:a' @X<(Iс:Tf&|5qVK [pJ;,zg8 H%yzFcp~G@xOgx~ z_gy``ܡ2j p jY#D@J5KwVZYzceaǸox.Լfx/ ֑HZa%༑"Fߺso~Ԏ!dX2>rO.Ns,o,2RSxJaż In@$fGIQˣ4Qgq2ҡ RdH{s ZˆSm2PKw:E@VZp'+Zx*eGѩ*)d̰)ox}|h :ޯ"V3AܞsB0 Z,VKvY.jzЙ@ 3|J%,IItI~. #$X\^Ձz\Rx#Ć坳#F;GFz+anTp.]`Xi$h)>}S0j~rRDvrM+bL~=`N4'1@}!Ǐe#e1`Z?'@ e>b`J$ y*;RuZ PLAJǕ׺RFY KH;Ǡl#4ȰqeD %#yAj $`T YM?xn?%xӔs|&Elx={0z0D~P ^c}SW*j,2+=S.b zdE!HN/HGn{U_AHq7X u" "@@X\uێ R) wESј,椷e=OW}??T)"8 @()A%V] d6i@.` A)d:Ȇ6܃#̳B!+XXE5pjBEN$:vpCO`͚gȊC#!,9Av? b~!BE&nB7%Āl`b)d~}&`&_Edlb6Ll^A?#fXf$d! p>C)-*bo -~6>&2L8L!0B8Ir3dB˶@(#J!Y&d$dB!FS*J һ#`"** $0A27.n@#pVgviLK2C$0bz!h2B"ĭ2cD4 !$9A"#0bCw68AAB` (𐽏]9CB ,OD"İd,LU„]""&r</>!>\"B8E F3*Ltep#NbODKA q:.(4,'GeLAR+k: j1K =#F%DON]V,? LhGC2!D 6!C<7-7VWaCZ[B-uo%#2S"#':C(Vj͢nBB!B4bg!%٦:C4zw2)D$Pk=b#ZI/N$"$"9ixOD9"J \ &F>1b:DJm K<)jLƘPJeTc1( jH=/`b`NHS[8SkZTޡ%<`*N2_tFiDb2TL2C"I,2[!D`ng)b6p"~3D ]a3%%b& ")xG-&Wp M)Aޜ$N()B79a'@nL"h 7N9t65b4&$.Dji.f2L4:DFiFcx7b/cQ82iN)-VD<)ct1\:z,:R!8Z.bcx(qh-!b@)oB@B}I7T*H eL6 5d4A#N,)w.-zV\ Dl:b-@?,M!C5cn*%%:esd P"$Hd-r D-5Ys9v@$ s3vA&r {2DCy:D`  pG8@BL`A'6 pi|OK`2 T~@)2)5M'ܧaA3Gb,x)p(#.2V]bs7aʃxDOcL6$Fd$ Rn3,rQ&?O[g`f(,#׃NDgJC$Ft'>x;b!&4c DH";r ZBxJ-J4ei @;a#vp"H=a,B|n#*,$4\ %c t=A~?{`/oi~@va[@ 88zO_<݀@3Dʽ};'ڤʪ,*~@;B% bʹk3}@0 8{Iz1ǒ @|rK~%rn̫1d;~= )q| (ྀth,xG+NGv9}`S,l|q`(Gg2qyھ`*w4$@9|n .gQ{Qg*G`H`N BPii I2(&y|r|"ׁt}%-5emBA*`+#jǡɚ2CG^ʋ8p8 x|IYEGH~@ t~]}Ò{|E@Zf5t}QX  %8XGPF!,/Ϥsp €#Gq鎞0`Jv~ȴ˺ȂǑ Z+ J3*:}y9ӎ~.>+)#ÛQG,c6Gm  P8B@$0} `+ _Gӭ&0Ex/O@D/}.3 `$/+O`0 e Pd<  f=߯@IhзϹH 3/1@h]@p  0x>>FT~Ep> +? >OD@I{0o )G,lh2}"L˦~ @+0,<~iC(`X |MYG} @ g{ҁI!4q z! 'DDz {1{Kkb@@*( Y|(h%m:t`Hg|xF8G9yS{ԙΕ ;Igqw5|d}c&wTnG ryW\;.(}S}8+H;~4Ծ J 8F`ZGFo ~1 15/+26`38KP=W2[⃁Glj|gQX}L`zggX0z yʬd2g'L˦}Dǻ 6̡x ;6aroGp( ?oîGG }gK  L J(|kjR1ֺ@J ׁ dJQ3ՄQ*V\?ǘ}҈pŠRK68Ae(Hcxf(p(q<Ƹ<4BY7m"#d (x.9 7D =LAeO!5d醀Yzacxi*L` pzI B۷r&bf@ %q TG`,)u<eP A$92H+5*@Rd *$I>QH3~jqQD6Е5b=G YBY\DS6fd&#E) 2-UH@0 6Cz2BR,,1R&pabB 9W CANikaX18EGtL'¤aNңp34C t=^&GO^0mQiH3 | X8P @Z@8 Ȟ'r;l~h"C)b!B;.` M p xZ[e~;0@:7vGɳK\d %⒢Pᖦ+s0ӶP*W-g >i2oKt9 ӀHp`IU \s3%]EŐ`UEs1uls;%vm :txpɈe{v F%V*2 IViV(R & *!昃fNO<6#E6:d:)V/@ KiK.0~%$lT@& \`#@&'5AeBnt1HtfD@ ZDp=DW%@$cH$zpA=@ŠI&6<܄>$$/f0-@X`**@"bav/JG'BmlLl"p?Ú"&BB(eT;஄0x(2"4ld|G8zyL.&DC`:dXp0'^cZGD('"?tܤ`y $32&9/jAI)C+;b2(a.,%#=`pBOAŠshB0K|JC"@phBTDE,Z1ƌAbv͂Ljqu8ÆiVI M~F~NRJ'I8OB9)dxV,IV^8bL"Lu(#,&i%jأ M !Gid( d b"6`| F'G|BbA HA@Ppa288g!J 5%RN1g%I$I! ঃfCP348@' "Uk~;"uB(؃<\HR C"TmIŠQE IB,C88+mBFb:KŽ60l*IE"w-1C)$,d+@SF7զvpb+06brQ(!r J(QDL-$k wBF%(ީ@{t;h 6DC p1J;,2_^vUK>54,/>6npp"'8v.`OKN[F*,A!dL JC6i(!8C|(2RC"B@`(t,#d(`d@PoDDk5dxJLtr(H:h.9>(:+-#\ jB@H(B$z/w Ι!a.^=D=2!O)(9(UO/!ԁ,+KiWDH*0Qtgp\la( ֳdQc' *Z$w̮K`.mz0%PL+`6!W:w5j(z_n/cn$,:5&~^Z7w$~vD(Aad`s.J̓uJ%:2i6)Eb(q̃d#!Ԉ3"4,J[#2 74z;aIk|2yX4Kt56A'a&,Dj(/'Cya%8ƾl/b~:vbL(#8'xw`B(xHPeDCFbku]‡bC.#QKl*R!:Da5zJJ$}z:"v'd@|Wzr!([ Z &lg$D@ (60.$o"4Z0GF)r3Q2 5+ZUFÈ׈,fPz/eGgp 8 ^ 0B.Rc2+ok$(;q3,wnmD1a .z #q APw~b@ 8 P ?߯ &{=7@a|us}mc* ?8р `( F}?o0 }O D9}_XHO )oT Hb@0lǁ@qG[-H'{fux Z``=3|۱ @CwwՁ@`<xg-#1,~1γ˙΀'V|#.z@C`*ϟOQ"5àHH9l<}괸|9 w|([;@>-ޕG‹m5GXCh}.ܮd({>ܔtƳXeXϞz'AV n(|eWNjPi6$n̨,~-h5L8KM.N[|!ktdģ_#;P !J ː0,?wWaZ }&^> P8$A ?o9@p$~A/t?Dܘ# :/p? IAP<xD g:\@5X{apn| XaX_@ L?d/N^a~? @.BL{o0w `@ @$@`V_  pKasp _`C= ?ic@|3@pA ӊ') x9}'' h r{"g>}| 눝H }H\z 빰zgHx@! ~1޲Έ}\9i'qiyg!竐QX$'|.)5 ?- +.3g0ȹB`3^ȢH+M J,j~'vl ~@pW,r+t-X …~I)9}((3L1ū,. Vg/ j{ 1yC<YA8n-Y rs'WYr!d84p̰y:p[ @h{@iyǩt) qΊ$3[v~70&W G=sy+IW1&GpnG&@\Y4:{4h.buJ<.8{={䓿BRL9ܽ/x']\[)K%T=^{<U@!k>)WAa P|3CB<u ^3s65 ހMZ+ &!@x1 <<@8Y.Ip#!w~~=`J #Xaqh6CT@C i 0eXS` `E俀°N)!1-\eZfAdLaNCMiLj]2@    @`qK 5M98G`>6ec+7k+@$m4Ə<rd ;dB5ng c5@@ .#FjҌ"@ $טk`D= @\>HPDdM2 "e} ?#l:bE1C*|'_n^]Qa[pBLrKLq 4S?L Iw$ 0#dpL Ȁ!XSTExՅ8E(uc{䨎/|F#GC2B>d-@$zE E;B;8Ok k!\<kPz H!CzcMߡb@2ҹ0* ( h}f ;(岨1e,(<02(q=2hsK 97,DBj>,,%[rTC"Cwa'D;3G!Yd~ƒX1KZ@6B_6Z>w&0'K` ( N&l`5EЭb|?Q])~@&Lie(\reXO4_L8:#@MߘE-G`B{?9\j'o&C֬ll;p(cb k:ǀFȶJw)9iYv A8ŕI諕:8*%bX N9/!-&`Vm[4PK0L(̤ef5'/bv>g.lX65DV9KvL ,E0cs LA\iO+>8 >Jj@9k"'eA@-@b!,G1L # '.`'8P5I2$b9B懞5I-FvˮGE0`N"+0p. E1gWA6EK:yCclbLIT23I~O 1 2L'f1ҳ/@tMOI."08F B|D˔#` @*ֺ3TRЏă^3`%K#ShK>(Yi`^&R:v,PA5j$Cn,!mZ$.Fh#Sb6`3+a`l 8G2b ./и+`FE`"4 x !rA4,Bѣ5"iTDd;cDF7: >c`$X+LW*Ys₃ 40EBFހU r`J6efr2;cjC8ú&O'pJ 5tT"24-3Q!DudSd\Ŭ>BB!9@kU@ZD+/e9 DH%"F1' BBTJ1"(+J~'640-I>-x*u5?JcbIp^$ 7[%cPc 4T .$'!#AhETBE,ղ?mGb9 C.'#(m#̀6A!؀@j8K37O (&J0(DꊁAp ,ABZd] H5nDBN0U'k\/l,I,uVcϴ!Eǔ"eE`L*J;R6b" .0;\$d"fd~"ЮBWVm$nd=8@ e˒ETTn,ㆌ^L.[ ~d$cEhW$41<6e2ރܮ3"Vg"ErU8Xw &ԕ/PpEt#!߫Yi B D 6ZbNgLF3D 2^܀2KKB渣!AAc =C5'CA+D>"8bse_<83bl( %]d#d /59 $}D1w94(%e8~`;úMnh.7"#WJ5գ(&"jC2f;$t(6$`\`.`^x;H$>gA ^C^M-(I`a"xM CZ"jEbS"!Jskw:JdOi8Dvin O(Eɩw&>6Id$ 1Ig ~d@R]-U، LEu`&Zy1j3@\ +~ԐH2"Nej# ?C-nG Km Lfyq I\4D^#`qtrZZv8TP`aҁ$ya(I#@h5"" 2%#@d- ` 4uMgc2 @&[`0@Er&A&as@"-wL!d9>bU&0_ >O3@0'MDZXF#tbtȈ+dșDg.L"3If@\I4]"C/6"o/ V`>'&f6sV OLf?+n~.-|nZn'wv"iü86$\<|=4/GwtE";8c[~ nUiC>7cK9Q,J$搦^8P8r^+ƨCA&6k;05"8*ځڼC4Z.cm#3n ZFㄢ@9=l69Ѡh)V"B O2*ZrecO'{7NUH^H"6"0ӐoD B"` *  (TBI`rNEDx|h)qP28DMDu Bv Uň 2Y-nTuT,0O|HM㬙oH<!#^BA-c]%$f`+!dSc2@Z"%JJ7C4+cBfS&n:6\ &bc$ C# #jho&+n 28莂bӊwdFwi%@ 0~m9ccx^N+t/`=Z'bE*"q4@S {jACYA<'o&-.GjfO";D4A!Z,(O:*@W2FAJk`,IOa@4 8`"/C@ND& >6 .A^ wC ;BC_~@1hdd @ Ow' |_10(@ H !%=_7`hO]+@ I u> . ?_2P) e/x0, Z%dz}F29.l }g^?_T~|K@ v1zĀApD>$χO?6Y+ *(ɒޏ1' Iyvx@ &#Ƒ H$0~j6}T'Gx'AeѼ|櫡2+(B !m &!z#*L~HҰa~A+\;>ĩ*{ 0ECܢ\*"#iEӬP2~cޣY~-{S :eK'.~`p` `H\Kf x|RL7'Y@6pgzgԝ@9{F`&'yy:`$ n}PIܫ|lpuǙؑT1{`vgzX^߀ J"~ +$FuҘ {Q`z*Dz2 Nry_*5 j^rTTڹ +)Tq,G}Qcq`T'z}S R'2WB-HB؀ Guc|*\!( } Ӛq.x!@mN}GtG%h{/InG  @8+   /  x4}orЖ$ ϰf4 Cb@"w? Z9ހM`- }'[o@+:7rEַb) } GG8 n8|g`X_Xk`03.`~h8T " " E}?7۽}> 0_\f P!"'~1SN-"LX .GΉ -AM8*A.hHC(Tj7( p@ @lp } )!*E@$&`Kr}@{D,$d} 䟟"2}(2hiO8h@QymhGˠУl> h !qχA ˈ|5@=",Ȁ(~2$21]Э2&Oz0"l ֟]y<- c@{#`` (v   ֟'{G&# ,0 |9`M ̏^ziL{8|Ax||iE|}q͐Ƞ38t@A()|30*5L4 CZ`L9Ti m]QSa &,aDƤ=,d r]* h%\$^0c@{19 xDGXC%qZ 8 p:%a9t5,>p̞>PKŵ Bc0Z""` kh#$7 7|}L|#21,@˖jdySi**:gz!"_ l"]̾bL{%R= 'Z?݉- kN0fLNT'i@Z[Z,'8TY.C4 u9@HH9^((|Dc]pG"B%c6 n8͓$7{=( nv3bIJ3`Xp">gGL(,bCyg%P}8h( xbi}dCx9s0 g:<`Xp3Pn0X @4"G 9*8A!d6^Hly$<}( H@(&2:1Q%ϟ1SGyyP?@P Eڔ"\<2 pZVݤw* d0`}bVϖ) AϜXM'Z#., HTMR`A>(sa4#^QV$<$ 9@823n!GICs; o^l ]4f1 DdLI-0,e !ּ ]&zfnx4:@t)a;` 4|o@؞R]q!D&GGG!ș!|2"i؏q@M& ;'2>` p$>px f:Gh  Lzߓ7 (R̡~ ] RmN#F؇,(uZVBAgӄh# p#dhݡ4 bko;Ѿ"e1*okI BԻ&/x~i%`shˉ$-c{g "O5%K"(hA46f.Q X囟9 b̝.H{"@ y=tAB,{8G|mAKe9gWYyj ?Sc/>Ed9P3 P]yD pC-ED"$4D:ԃn@ P7EhsLALLbcTLǼf,d# '\֪Vl&Ge tiP#CNӅBN) e'%a a<#0; (+H+(K& (!B'C^r $CT#^A` ",/#έ@.!`" d,0|=4ʦ$"Bh6{dl .d!EA?ej x}%0s$iHO"v1R,d|i6BMD,"3]8#$D# ]7d.: c0i 9z4#"$I&rb~!mN$lFIB-b,ZLSD4zj(0t(Ds&J@s.s "Ԁ<-AlTniPFO|0jLt=# L|"|AcfJô6.<~@AA@&B6Ħ(=$k2—B g'|r=Ld9Aτ8D @AAi4bz4{CAV!ؑmŊ#Bs` 2:@"AbZF&&.R`<cL!cc!. HC2+b(YNvY243p" 0a ÌA*Mgtx(c~"-bb {^@^ މo#2"OmsHP9"z,.-p|-N/NrK&,4dW8G8Af> #22E[km^m68j3ADD %"fC .'{c(`k:i!3NFmhUЀR:od|YC|< B|:d"5j #bh2V@W'<$iEB'(Ҏ!82 e|LC;xbg p'@ f `Fa.bR,@0\n ʼ"M"OWNnC2B6dAe|I&r`$$@a@hfOeXc4.C{:YtH#2˂cb(b B!aF8> ZLZ'Ǩv"!K, JHoꡤO&e&gZZ- d >Am#xp`*K@3-8!Ab!.!5#"..B'|2ds)%dx/hr7r?bzAg"3q* U - /|4#B*ZdX (g"I2LhqG("xC5h@ |67j(;EcWF h,r M .7ĎgF~G1ChX*DG637N2(^(j-4,"{C,./|="K3?rI,fCbOo".h$BPofL=>`f&Zs.pa `Z">1Bg3Jjʃn=1MIh,BL`2$Ce 'p&n@$D&e4HG>">J#s,du @l`"A7~0HH?߀=^' x!0C`}g@OC ';x?u0(!C{E'`_9Lx  á$`M}S(~pXP2"E~8V.J0 @ 4PHQ_@;|F @(Tx?g8ϟ<7@!}VCRa֞} Md*\8 3$?{ x!`I$ NpJD`!~!چ@|*Tz+ZKGz'n0 3`Z4$F SzʒKl{(RJt|誇ưbX|+'LcC@(\ltu!|0:I@H  H",rc*`p}̏bh1y"[J!0>p}Zb}g~{aP|SpJ(M2Q{E@``&ňj}@s1+`%H@ʀ d8 'NzAg h>{gZG!@V˙zXڣL##-3BPGJ&X8~h̙G* ?h AdUQH @Ba ~?`h0?@ |_R(hdDow `'${ap2,oГʲ}V$,{ W2?~01A@p8(|?ON}>W@`0 5~ޱg0 ǀi*K!G|2~v/v~ D o{Ϡ(`V( 1pq~wc#d@|,K,~ 0@@̟h$ X g80g?Й{ d,j Hт"}M߮(z܈"S*z}` L~"3qhPx!!1- 6' R"g'q ?`9I38 +z؁xU'uxD}@};(ziˎ8/hS@@jy'(P$X {6QM >Ÿi!0"gi g'G`:t'`EǔPwX-z` t`p)A8πSV.0g{42QPL[) . (uyf~:% {8`c^bG|G,y2kkC j!;r~/$}VcZ"J<Lyr-x,F}ZvLbP ;1 l}GKx,wҶ|yNr:ӌnoS mn:aa]]DPcK("D pS@zI1ɴw<9p *:EImDYb<X '*\>G@ 0@5]_ ( X X|:Ũ&Gc$ШYd'8DH#h-g"",ry D4gLA {b " G7HLU0Ḭ̓APYcDE?\rhdYOW(G 2khH)9)cָ&u&x j X CX$DK.,s+p@ ~@c{!~<)Ee!!grcjG{㹫` % E]$' F'%N$S0 @E)Xt][ gEg@X,&FVa$.?@9QD`єGhf:]E8N:riSyUɧ` Aa֚I%?}-D9r8%lt&DN*?,r2Yl/tЙC,Q$h#}OD>^$>&P=P1 ~|'YcKzUyk& pi4xpþhpk˲1.`N#1) 'ʡ'2#;Gbϗ@4e:sؐ$6IsӜ@Ks,6`Ljd,Y |`–Ax?GɘH\CnlE؊T͌=2 !"WtySCs*3 @h R@1|-0&$aB{t;4\!ˡ:ݡc塘uT8%!m.l#v"PrPfUiڋ%buL#1X*nD&0,z\!e AcGH Ƌ0#](<ȇą'R859zQ=.G`.cHd;$h]y?ie#&$yGZ,NDȒ ,;H)<4[Ĩ?訶#ZeY\}iȍ9ujR>jrLɠsrb("I`"Ǒx #x6dq gDnyxPD ~9cG!4zI UR萠.S22nA1@#&[,igj#, eY5AA#&1c*=b#bCE.B"NN/C#;XLO=d"B[f- z>-f$&@ncZr$bD24GD"xeNf*Ц/,'$=m [Y0S- "cdc1>?.b1"x#FY(-`b2=&7H@ SDL+ƄFx"$조DbH.$Lj#oyD >"+v`Z`+@2/M(h- ;A1"LbMG{;Б( @&hr;1nBYxXp0I+pNL'$Ƃ,Z4 o" N}6"#P#t0e42 0 $f,"1&G @6N`XgAara* " V¶=H9,+TUl3#HNbp.O)&/!SP8#"r2+ fn5VZ<.+c,=,QT'.rK3&+HN\PX!1b@.e.;C;dF7E%1dХB AHx0#ʎc&2_&4,k"[O(ѧ|Cj.K#\F=,"v2fm q#F`BS,:Ex؝C|XŔ|ʰE,dH<.dZ" ~bj)jE'z1M4J> `:$%G$Z'X24*G"KnVMD4R@60!AT&P,F,Z.D<~fFD`/:*`1}&PZ#2mTbp5I 0A0s<-q:=p: hE񀍤 *\., v;l(>#+-7*"m})q"M1Np| At#:>""~,fcbDDxO(Kz`SB.pr"wRY#^$^VՏ*7FP¸6b18ifϤ1P,|-c*W5H^2ƾcw4H'T@7<_&ÀE$H8\˂Vg(y?*n VAܦrȂ-3##~0"J1ā2c2(xHdD^.$,_"e##b,1,[7B4p;S, Z ($c*C*VL`82` b!` ϣxSBx0"R#$V"2/ V-# :-j/&t#iP&2QUH8p7 :q^'C>vPzG(+-0H4$f<'*碇ȶFf!Fz&Ѣȹ"E.y - "IE 0k'ǮyLhAkp" 'i0s ίr'ƅ~`&2{c92f2"0$$Z## SIr,,-&$\uW "-DCRFC5HdF( Ў"c>5}P2v7:N#AI*+aa CfnBp t$6JXF@1 DT#g7'i|6-/tNe 6."F"/ @40$fIXxN`}5cBa"  ~"IDf|!fA$ib-+c,|."`q.De b5h=$$zf K., 9;|2Rڡb+e.fR(2G) `"`?m2.C|"Gbʂbڬǎ{D$PCBDpvc `ԐF4'ܡFu|,Y7^*yK 'ieX67V'Re&.cB.m5%X.Ir"?5PHp::gB \ ;'Dn-@s?xkk;PDfqSi[A$ ?b.>rA PiQ~nA"Neѡ,> `(!F<@X@,@0A`6zbT ,NN96j TWnB֗,iD<23Xc79&a;'q q .C6Gp+'C0E;#2N'.~jan!kMH:6At"d({Z;`".5 5`j%kFLECjb2B5(gH.7 .#}'dH)9<-rPBQe&AV# h@EN\L&{aǾr$!X"=7cYβF)"iy6 +pPu-4H2>f:b2ob,(`B+Jg$̏ 2^PN@6]wv2&)?NVeGZA$i*G Ph`5Œ8"M2܆FN)"2\F$Eyo=Wۀ 0cF}XB10Lbϱ2&+GӉZObLL -:F<7cIxv#_aFdt LAGhHUhK7MS,TVg(c;#Le}"7Z&- *[RqQBc'gj=u`pkzY"PZnJA2k=U Z2Dd.!;=Cd4% :$bMd>f"X)f z" ?!Fmmm-@x q@hFq"aZ@"2j Fz|.p?@p%p 0p}Do o {s$ @Nϰ~`We=",J ? TdP8 Gp=^g v+A@OV? /0@Ofi @@^n;z >'b 9Qvw9 dEzo }ڈ/v,ɩǙ~.:7|OҚ< R͓8׀`3~L&gǡ~(~j( -1 3*{6 0"yzОmPŇ\DZ܏82}gv!, z-)^|}" )-B'G'Tb'lHj@.];xCp}9׃zOq7u#o/)vCx͊:Ȅ &{-ϲxX,{zc5(lBJX`0?Gѧ)9z^ y}sC jN9z*5J|m Vy3{^CxRKELcGӐgz>z4X|Gl+إ- P/ 9CjpQԭC+ǭ@m.O6C0H,ޠk=܀,@5$ ' A@hCz!X(/ܳs3G3*v$p}g`(o~ `]^?O8P ~`/` ( 2gv_, zـA[><hzd@(/8Ŀ" rZwBgoXgpA'wO+.֟}'@l2N 9|l + , ,3g[m;, 'YEpC|'3J!z~ .B~$JKLT  y/ (@d( "!E'28 EMgVS[d~!`l @1|z@9{`4dBQ2'>y`yYyѠ)(+I \E#: [ Gݮ~|3TW|-p x)X`B5(C D-n =?K,rF|9wG] K$@-QN@K{8~~m#,mF Ez# 9N90OGE"u }_,d {g8T@<$s4FbL A̠MN `X ittK:Ɂ9|€9~ǧ\*UkdOw`'zl~X ßg{d#= yx#BPv~/ՒՇ«f=2>@{gŖ|Ǟ@);XfDj& A@ A=p~J`Px%^o|YCV2``<@ ìYq/G0L z bnbaZG2$ SxY*w}e MͮgFc+{&cr;( LXacl!5rdw '{ոC}< @4o ZًA輶p@Jxd p:e"Yd N L#Er[|=X*B 辦ZER1JeI6%z#"MP GA/ 4Y\ /s*A=/ l}=Lڤ-ZEƫcyJ!FqK`2Ov>РŤKSHoaH{&NMk̠k`X\kR448 )?\stxh`rXb.]"gHJlSL9>kg vb`L9bo", WK<E\ !F9g͵yc*͡x fOlcK&M'CNܹH\#mzOsvؒyFQ\u7ŴΛ̾ˤ lIbl` gC>`@ iR` t`*!f/"ƒѨ"`e<2:y7U#BB`6KWx>FXdr#BKC/C Ul#"N+o&XdSaG"o*d'`|/x3@ƖA&j#,"8$n,vANR#r2@CBLh>磎؏1'*X" lU2$'|b8M& V,H?G>%eFd8&&d&+LeJ[;3(idAkW r1)3b46H V$ºfjPbDaA&]/$7C2en'DH&$"[& 1l(_ǞA4%>X!&A2Mvd\' LdLh"RøNh$h(! " @@4a|m0N1̯@l 0>  ap!L8,-cdƬ/䰲eZd?2!s%pJ tu/N4H0KC>,VX#R ڗvD'T-bp0\9 \kdbBB. (R+4 " ĴCD`Xd0ifC  .Z0$\QJ";9b|j0"C[e>D?PĎ/" 3MBc.-BrDJhd!['6,.;ɤ,Gw%AXc@NK"ħ". j%V4hl^{`R>v~~<aDEN! 8M7l! KV$ #W VeF7g6BJ0G=y+6-B1?kLt6 P(f$C4%':TN"|A/d:`v!B=Ԃ"hz< Hl 2`$7J:4\4=V2\+d&(,q|zfqs:f$iѬfR$zҜDB$G@22C6?L(;L/ (.nRB.0"RE.BOb$Mo (@1PLY"_( 4 aJ",%("V)cL8w#U#r#6BNv q=1C+~7B7^6l>s$TH6D3z%RVG_()@MJZN6 b0~.`DȋFg4#5C`@p`NFFhŤ2|DpD r2n_p,A%:Csi>C@)R Np`>aX`,:dZl &s#tE5V>?EK,|@7d:Ar#BAф|R2LD1:uv&{g6NX#R#H+FkđC4[Œb^02-oXd# U@!.6V^ Ddk460.$K:m6@s8l $Eb X2In9 &Cҏlm# jr$c% b!&!W"HSPG]ʢ2bJGAtċ/f+r#nNdpep.D@6#L-8MkbDdX~321@v~l2ldF5-iB0fnQR":CE( d`sT1Bbz$[Ov]C bt#pOj",J%j{aHEJkES ='R5G` *,Nt$RBv fHJ@DrTS>#T7#QE^B43ELl3zd%,"8.U„f$z1ed:f&ălf+tjbM*4$:,7 K:vbc?nQ 9f:Dh*B~/2d+I`A6Kft0&KB - 8jBX*br=6 $EnF#(uKcZzD,rvEXº^,1(2dzHIJDؖbB1ji6KvK2(WGx+\yS.".32K"5E[s&RJ'f<.M1r@p!DpaS1"nJ,"?J 7A-B,,dlcU &*{h+, " &5BlX3-@f0be~E<;0 9C& `a%ǓC:% [^f jA>VA&!eѡDS1"x3Ysnw2Q ǻ` 4}oW @ gx0$pk-j<` t_y<@ >X( z`rHoW P<|AA$pbf/X 1GDt7 v@@ } @Gz>` v`PQ:Ϯ.hk O6@|+>@6 ` |@!@ }+\CiL۞|;8Ki}q '낒u g z`A/g0}9ojamsx~H$}6`*| ) P@{ !@B"|Q掩R C`:@ #R0`9BJ8~l*<BK~՟(3{'07 b#S:ֶ||`Uʀ}bg*s@4 $ ID{"NuK5(aaG|-)MhQP6=Ǖ{{TFKihr %h򒣁r.{vh5(,vqP p=g-lP8u' ;ðs@}5ޞǐ {A7h{ I;yb'g8z< .c.~yoj SjP,Vzq>( )lyGU)ŎB'|iUgWf=mT=yKm=gaIs gvMO=F֝*97.(v$ӪU'~4ik w;HdQCE0pzr(GJ,͔<Ǡc{ЀzD}` P @OT6OH4 }/ǻq?Ԉ! >d(G pUsqA(  _/GcY 6@VHDŀ@`~>~>_0# ~?@8Ꮐ ?K ` X>6oze4@EX4族d@'΀y?+{Bz/€], g }+ ~95 x 'Ʊ`;v2 |A@R22-(L9}BG}g}I +^'~L ߟP~lqpR1+|{Ԓ0}${$+q |Ķh  }ǯ ß|ɯ躴v'V4̱m|M@ X$ @, h` * 9~, 34}`@ t_gVB.;pźKQ8Q|Pۖ# 9~3, Cz hw(g+MLsP/mc- -s= ,$ T|@:~kМ͜yVn7anG{MB*ڞo``m{+mk{Wg>ٝv(1gLQ"|eɐ1 b0 G= 6I 4He4RvGCB(ؙ>G`è|H@ =CI)ԐXAR@"%s(@@ L = > 8!xeXCB0 8Xo)q3V{%Hch484@$y^f3ih֏:aH1揣x"#$٬Kj0`M+}"8Q6j),bLyM@eI z'm$tX ;(;dF C|)2h!Y@+V:ISxMsۑFY{'dv\5tQ;6mŠoe|C(!͇`f? HTı9 ~pWTx7Jy5gmr {+Qc68 ŴU< &ƱЁ0>& }mThҚ;&p2J @ Cn9I[A>|SN; 13,hA@$ E* ʏNJ رsH(v! A|^ܭC&c ]1+4sh:h QGH`,| 1zetm=pDqo$` QǸh8޺:@ K4{a 2#>"^ 9%A:><Ȣ LZ?T&o({M8a@jiO`EQ mP{㉢ZN/!P9hxP'zW5HD'qhE.]tZ@NHI֜J<(T@#!9$ɀ@ "qXIjIThG2 saA̘|wL8ǩ!/fLnC!NL)w5Q?M%*;-H(UH=H :X%r d7Lj@wMLEaN@% gϖr=%eWbs7#lG!sOE#|O(`Z$O`DP-ㄠ7C 2)!BțJAHM:'$Pf4EP#P\^HD:[|=ܽE wK 8$tGyEҖ~?RS$LDj2_3X4j:~2X~qeM~ @;|1f?瘲-)ț2{sG=Lsa #rɘ~>>@W%dip$^ 8y~=Y!aAKA"bdC |%Rf^A.+\ޭ`梠 2\" $)3zQ4nL/?2,cZ@4_`fh.&ah ACcw`X nA!z\r r0!A@d^FduNW420TaoQ^VÜ."-z+V+ ##E46@$-(L^ˬG $"q4+C|idvm$FqKJȬgȀf/.4/-4A D6ACDm;gwN'9m$lw("4CzI 0bzcW(9#$FDz\dBn C#Ě+jJ{-T0# Q"# 3! Ò #@a (b͠!^NBh"D67 !Z@l JAg KchAG!J p`Xk0-"2S+A"AD>Dj4Fvr"&*0ȴ\M5(r#'p,Tl{L`$ʈ@P!"#$:lڲJApT/*4r0ʾr"xFNc"ܒ@>PmJD_dnKD[c#~/cCD$4΢BC8@c9b: GC`b"\wHtJ&,N0# mIo$@/6"KNIbu<~ &mS "7C.2g>K^赆eɌd4$3!6K(] O+L+L"72DY殑Bͪ!bgB(~,h"f3zXg;ZmQ` ,N২ FXVt)n8,%MD$_$PI1+nJ( cd$)<=)>1m4vFG:<&291Fj5J,IԵ<t !bŮ&ڮ6N s!&"4A ++lt`ή1Ĭ9t49c9cKX@P&$$U#!#h1 2mX6+#z/exȄfc f"5@z'j:=c"dB{:CbR|FugTГ,01+c:(ݻȴ93Sjj+KB6D/Rb-,`!4@#NmI"wtDf"И1pO<1cDQ-n"4*Ã,, >GH6L@U< y@&SET}X#hƧсopuhJ""# z0j,2`a!>A҂AQ+40t0f@&t(߂`   6`07 [l&0&l+tr1G0= 2x41lBv5,JĀ ` n:& Lr0q/B_e"~,i*B@FXg +;2'jN<20Z#nC)=f .b0$8jf\zHd|-)^4tSi*.TrLBKɂ^TtUXIaa5"0' Ӗ-hl(/)K&1IҀ G}o@OW w~@qH>_@ +^/'F;~"=O~pޏWc{A@0 `yRoaw+bX 0, AZp5{F\ﰡ @4"g~@=>^zPl pKdf\nwPH`@eV}& ? y@/x @*s~h3>)ǸH@2i!':`2!A˪RG(+HÒϹ|?' ,}+@CpR`|Чg̨GG,}ǐ1JiXaXh; LN*#rHT}Pk|=W`A{)`Ll"@ʱ搁Ide& ~* +/ʝON[|jI=Oo)gZ0(wzEYn%~iF+#Z.~Xz(-@pF j\t'㸧@I{ bvUK/I P)g9s'y(@*Pӷ&mtl0 0y~ޱ|H83 B_F2Z 8roOç5K: Wh. |Q"M#Й pIHWgK:0@i%'k8z 6 XfᰊyKsgҒGHCuGQ̺@`(6mBaP8H?ah!A`4 ?@z:_RHlG7%~09{@l$ AcVg\n</~+pKT']A`( u~_k0٫P ~ .i ޺+A(8 |OǬ` ̀00,~=OF<w!z֞`Uw|q`>@Lv`['z@GGLk*Я4Bܟ0"M  P "Pܝ `Q} LR '9,}o!@xg !㟀X- yG y9N D˫j5}=n^@+RzQO{ :{pw٠tꦝ JGDП-1 8 GЦ @l !( گǵX}и2OJyHr NHK~K,S5ǩKXHzǑz8 `Ә$BkJ ;{~ݖRެi'K| rCB111{g蓟Ɓנ&X}2Bװ4 ~6/Hz8 #W]/ H xOoʼE HoVK74[lۀk\1K<sRy}S ;:Y]DzJ@(z}s+31 wX@}7O-Zc$'`iǸ  !w >L >@9SrAyzFÙ`D (BQjC<ŐQtAH`yII'" @@  i!;p@~o!z!&,' ) @q|#P`eGi5" ̀0dxLڬB<e"idP;XO!w{Iu\ ?8B< BN h>PT#++#k&sO:8JEhЏcÙq; nz'/,d6 I2Ԝ)e>Ǣ&z)4 byB,Y> aN\x@a@s~-)*3^ϣ o0{?y&P@n7>pq$9$)ls?Ud:X"h=bjlNC&0sh Hk#x8?7@@n -X@)&Qh4oMnO2@̹>o8) <bAOy@<( ל8S헢~ ;9 pM}V-#KU9 :3`#njUL @m@!&SϕPP2'lttM*rCPYxCO79J1=H|̀ @E%DGLn^*E:e2C!W>cԟҺS8{fE@z0R")9cI(COX/-X1MqR8 xI`P/&h(~ B=. 5v=C ! Cd ?!';l`BIKFmUq&)2" a0@[w&.s ` ـF8r 3E` !mQ_G8AH=x3e nG#z) LwH*L҆8>,95[C.4Pl0 rhGSp  5t|#a0Ix=_ge䣆=T1 daIp"pp%0Pw'u%s|}?a=ЃE2?.}*-.]Q%:H٨bečR;.. @Ǝ\+A:a"@l`2̅-&ƊZ;E,{C2@ 2B4=dfSo7 &G@ 'ml|6~T#tB+5'}D;E/-f+p/DC@|+Kc62NZdlG3p<#2F-B|y-BJ91$ B $KhyL:NB0$w!H~mb2F-ҥ\cio`ޥ 2*2qHE60pd,2-uy 0hm$z{Xt2:50fvbr~@.qbaFBt. I(5 1T$`BFzK!!(FE!mڨ^hb O&VF#j"C"D r DlΆ^+B!n`L`^rA$eeZQb4GB (3C.UC* :cTN,eJ,:Cv$##,D$CR"G0dn/'T Nb]yQòf`:9.JC,>n!'`"(C"uG., 8 #G䎒 C$!aqN\R/3*}BS $C2=m*IlH }G.i/TD ̊`dp?CX5=$B3C'.ZEBo'.0e{t>? R&'5\BIN$>t.$oL.&nqebA"fE"',P42edicH>fm4K&L7 5-`.b6;9'[6c hF6Fb+¶†6Bl&XG'ּ."7;(+@ VACQH;B夺/qn4qE*G"y1~1 A po ~hbC&8@2/!7jFkAGN&O"ȩl =JR;QaMFNM%]#\$ɾ(DN$={Yfdҧ0΢<7$Nn25;{K}.k%ZDZa;璁bT'^LS mDa@ 0mN" ,=m>3Uː˃I fA"3ȴ"9 IA'|!q\ MA e"PLa ( F@`*","_b ,hP`Za!va$aeZ e"0eTKĩiZz)l:dT14:#,:i4+' @/C@~-"3|\ D /z, l6`Dle#Y#a v"պY #k-10/EĚX-f,g5CbCtg\#(h 7HP y'N}Co.3`삅F'B0@"qJ63X,d@*/Bd2C'üB '„?|b mB' 0f8&)%bDsd惡k`2 xlXH$ZJ9+ĞKJ5C*1:+D{bc@LP =#vKJɌ"8Q0ce|Prmbt$44t\;Dz'.&,òzHzD$ 2d&h,: XBψ̿4.…{+!d5 F@ P,`SsCtDte.02p Ljd`XdFBA+i..#X=fhݰ&l' oIl'cC=|KbMr'&>t VHmbr:` ZBeeưt#,5Üy3f$7DSXMH2X|.Hh2CR Jx=E*4% >^r GFGFzb`O= O(1W>@~ߐ<8}@' @+jDpgj5π ,&|_ y~yؿ@ 0 =ϐ< ЂZ /gx  Ѡ {?_8% Cտ$h䚞@@~'-}I' #V)0{t |>  6'CIȀ,;hp S l|S&;`*~;{R@ c'9|' ' [z @H o-0Q@{daE|g9 !J-hMTF>&z@H:㟦> sdEܓWvT` 4w$PH}Q@b`аCpB@3k"D=Q\|Nq@9 FY0m ?e l  \9c~:Z=EGS }Y|:`pޟYR BidBK[ )4Ff̫"e4=ш*b%! Dd=Tdp( dXKO9dYZLS҉y-}؅TaF~l? hb}WԶYMm3\> 3ɚ! 8 tmȱ$싐4v?kui*uD9gFĹ) A#V:WxѤGQ'~)m "GIJɻxJaj {`wBh'A.gtT8" т:cÕzʝ=#?`%tg@.x @iNmR M&BBWKE/]p~-|"f{ wpժR^m@? IɳPKP"΃7fڠT m9`4tCH!f CII {H#*FӀaaI8&ڬꁇA6pX}do# TPfE02 L|jHd;K{oLx5I>i}O5+@JZCMzT!Q@>25&2|Faq"Ht wƤ|dJ3 ›W{Rϡo؎>0Dp>@` x )"d1 E#Hs#L֝A9 0NG@a8: U@ dQHu .3@,v*K ە;1Y[2 /&ĖVfQ0EWixl`iM,. P`4n| 6m b@H \aar?jc\>00(85!z"0Bo~pE"|3H-JLnAf.`c!c0/Jza̠}3GI7n$-RGb,'"T';(D+ػE!*vG:C&"[./c+cS0)LǤ,'>ozL ck'l)H &*RpMdL"P|TD,BQm"7c +L5+e`y*Įb"-:-@b ~1,#_H97 ,$AB+lb't.>bX#?0=".8A#C": !c0Nc\nleJ,P$jcO%TLƘdƜgX ~`t x@0 ϔwFyAI¼L qLr)A+ @ \F9RD$+GCg-D?qj"ûfzqA4u!I*v(rC PBT0䧃:Dtm1D&7D^l9d(?EP"zuPT+C,iCo`įVH|$`a'aQ 'HAܢr"%h!4(n("21="t$ Z 2'Z'fB–aTA~]py%lA LVj&Sr#d+^0 meTzI' GC8ff0eE^$$5zn$&1dA0aHHl`^*,&xeHP$p7G # @+p8JkXNCa(/!DD wFB-X1L@!M2JhN,Nz/v(X a&,@47166H+:7F;C =c-NZ@Fcb*ч0CfYCkcL<:6FX2(ƿ٤B#pe<&#,'cTar :⑊ˉTq-Itwڕ".B'oIg$dB+$<|L$"."6(y@,gO{0NC3gz*3gfy7MF/iRRPZ!@.#xa""0!!(3SmE7Rb4(ItR *"P".|$5ZSf@ ` v78!7,<3 #חj/48$LDDPG"(edCg C5Md9*dNp#IpV|z3Rk'Mz!$7|}-'@22S~$.T"V'G0z~HCBAt^!j/Fj E'u\['ȳ|*Tt9pĎcڟD>g"b3@. &!G:cT,N/ :y&է 8 d0F'ƦEU@;NCѢpwCQBQ 0 P6M+9M-N W$ 9Ԝ2`[&2'nLa!` 4R׶{ l;HN~7 z{`D=N lt4'ixU<Gl C888um@I[Nsw@ly|q'r@ CdGިUT2* xǷ|8' =w4m:Ǐ3zK8N8~Ҫ"TPL1c|UZhs6lƱ AȉC]0$ s@ yPǼAz };ǀ )r>Gxl@@@(~@Q   %OG ăҐ6y}?`0 op.~@A`s. ֟Ϸ- P-?! L$;yӠ( _O‹G_t z[@ 8}~Y_p! {D%a ._x04 ,=O9`u;5z@g9X 8)@Q~ǹw0#Sv(  8G~|nQg^~'|#+  @ PzF !=0 |R'~\KQƟ@1􀡸#P;F1ҟ(|<H E#rPGt~hCĠ*~#4C8{@0z|G YgXu`u*8Ks~QkP}'00"G0 @91L> ğA|9Ǫ 1}m{| ;*0߀蠞#R2, yd mlHSP~*{0mf{OY+~zڄ-#~,³~@M F&qg@$Z+8`*܋VbN @,0HChȏf@ة`1j-aPZaF/s^n:=Gy/1$FX 9#{4_R8hyqkqjf$a B4FaȊC!%Gp! 6_ɲ|@ (˭ƾǘ' 9{謳Feg>Ð0@9ϐ >>`Yjܠ<I05Zd jB)brb 6zw+$AeVÒݓk` / dR,x 贝*"G "I`9F Q %wO 7f5 MRς."R UƭIP  cV8\:ɑ!=eo7G8DT*W@PcxxxC !SM%H26 QYasG@R`hvŧYO[VX8! 2<C,oGHyA~2Tx\a!9&BF{!C+dʛ!ǾqSLK\BGo*Z2,2\t"[`٣iԚC-HŞ frڡOJ?B䏈ߙ E_6 =GFF=4ZB q2J<$<Y͚ #<>x` `. B0Aw ",b4!9CF`X8ƾ RdT!^h%q@<D 0G>'zQĩ >Xc?f1l_Hβ%H5hQfQF"?#@8 JMDjv=HBvI1E6OC"5`aaɠ2f2ľJPY}.@4KZRM tJV" *bVe Q|4YolXB#9.dK~gde8F#')kz0l!a,(j5!ZNp Vl@7B"Ccd#n-Cnªe7CaaȘb*4<`?4T^mc5\E IH}?ԟ.(#8kf\2&!C#j2!QpY""Hb4*VcLH1"*Ej~„1`!BaWX2"5-Egx3!$iI2ż54@>G&F#z;/"@gN"4,fE}m #C 5_$HGAab`3D w<*ʅEF' HQ YD 6þ?"ac"xO; gv(!à9C쉆-;c4b*l0Iؐe5!$qB71P!yR4h'062?6f_\5#u,h fbX\d:0DdEb65d~H`c4"~eTwDt'6xCDeB "vBX1-2VԇL 0I@$;aa PrLU*I†WCTuJ8>,V!a (zΙB#-dc/'(#cv9Bi&7*b M(?RL5-淣>tcrA:6IɊVc~nm3fLй (c|'b!'H.>pc% 5gpv@AA!z!0G_0=@&` V@6@6)8$`[f,[-|b4ct/iax#Fc3CmQbe&87HF5d=jRwn6>"AVtIC\rC[fJLV*CY,^\0h F⎎a[xbŠbakAē"0:c@EVd32 ݹs z9r~Pݯ}#/H)x1̨uV" xp  ?_g}@( 0 ?#X`@; @-Wl`p O=_ @H;]/LW{@K &87|>kp0 x׳@ {WQ)U@ {h@C~'ix;៧ @:܏ @!Gx#hD`.Ÿ 4~.bBGI [#8,0J}`#~$7$GCb:>yzħ/Ot~qa|fq'~d*V.}@,g?) GO͞ "Ơ3G.o3vk~#O} 2Tz'ZY0r?x*#hgD y4B+5 S$x'z3@C4&'X.PE}R6 @~+u*9gʜ2};\f 'o@FIz%|Iy0m8{'kLXj:}͕T]4l?v{*L*2A *^N1KW)@v8g\` Q |}#p,;@06p P8$  L* G@$ z LXt~  ~ρ@. ev=@`03?!Qp#{>/ @)9+-|_u<+@>^06`$( ڀOơ~y߀M{< x睧yxW~뀀 |ߠP*Ǡ| vϙN@K,' ~'ag@{Ǩ~`Q`P"GNy𡟧~π)g1g#t~I {~*1D`{`  Z5L'322n~* +G 0@k@Ixgg&}i{i"|ǃv`xgazg)  `p{9 `߽+~hHy'W+5S "8mhx *.+H`׀ <M"+䡁@9'׹zp뎛^amR[Tz뺭`}zRL6nˍI B/(}G ˒lnO !z,.ߟhJ~yG}02j# ,XQ.> v5A 4@x5@Ol\!|'/̬` gpC~>S1䞧zqZրKa[` ȁQc7nn^OȾ>H8a]u"G }"ChXHQ ɫwztQp"?qd9R kR4T K0GPjxQ=@R@(4;HnX7B^ [% x2?.äU-pT &)w2)iIiCVHp1g Gnh[~"xܥ)J_ȹ5~2*dysdXSX}h[P#&tG8êiR\ k%jJˀR8 O8 B6/@`qP! F:^ϐ !#Z15 d}3ߜBRH | r𸛤O~}T22:h;ҀaLu"KQp84QVx-'lS8bBËq184;)?tSjeրF>~WlP78ޏN8.%H iC C3->f`ړq{rj 9*L'|=MCJušC0J-ž=0YR2.*I]if+܁ ōhKE$84[ >S}W#dz#,9I8O.D3AwS##ߣV*yp" bA$c䏧Z eXܣ=UGb <ʣ @=Z쭇&Xq>Gc$|~҉å4!bx!${>0$@{j61XWf!Tqꈇ2FAÀ L5VJO]ւ`>A< &vp;,YH$diTlKܽH$5،=Ji~7 G·9q= +9$'%@@x}y!%%t9 ˣs ,p? a$o3< nh$d`G(`Q>hg6/H#E>^j+l ֓c FGL!; MLGܽ6/jdiwkd̛v"Gnhz,.&9EA,f>ocL'uc|@ J$ҽ042FC:i`0!DMWz2#^9"Hd=G` B?'l @ e|$<&[Q V ˥ asijj>ԣ2',3D|#0C la4@o'vM<}gv6bӌynCp/^3^C4ŶQ ' R:"p l1Gs#^I' :SJn-nvFD!P$,GEC2#Z8bVbxKfU`C#O'$d4L"H|d>AJОIô>G|ba//L& +Fb!CT2ΌԾ$CnZf!3'#ʌ&2 (v LCrza&nSM.9.}8XNI`\% ABfdxt|;B sb,b?ļa | f)]B#HR@DGB@0`B:`!RAglbkAt+&̖T+1"Bj(act! '攮i)!Ba$ $!Li2b:&^ c1Ж4(72lD.B, 1@ 3tJB+5Piô2.+"+>բjC<'B.}"B5D,Zʌ(J"DJ@"V "-!j!b(d3f;z+z2#-46CU"RTBU#,9544.H!q>^ e*J!޿3Т$6p(8Dhelr#2s( @dVm>"" i> kPe!C;/n>F@sm*+4b(g|j gZB|cD"HB~?KA/.."RG&I(Hrf,wkD~Bqc,P< -+1} -'  HJc("$4BGRD2G cW&*Sjq2# . +~,=DjKvp&h1q~o~#&+DA+b"dBt?($@Oe $}J-ai"a=Ns#$@2A*/5 $W#+Ȑ>yc).FdIH\ar5`,R$f$(C/bh44ԩd.LpHjh@(ce6$@<8 ]-'C";Hnh:4 OAǁ,/cA!' prt>bBʉ~#"c. X6L]T=.D/:*B`>abA &`4ԇ|/Epn`(È0g*p RI&="4(˟`x ./Ĭ?Cf!ăi8Bnd<7ô-3g4k"J0>P}&J#c;TRCk..dILp?c JxRHjD6f bp+ /,n$bw0GGp#*ϣ.H&Hl.#F9f#ZVkb"66l) R*A30c24$OsvK'^D=F"C4MrCv0jV*iLg8G9DJ0v=N>W=YC*1'JoY,&b>z". (d dv""$m9 NJC4*)3>de2dN=68iDt ;zW"*òu ~d>,:F#ZG/aB(e'.G$oKnlp:A&uUhBqrHJ(>=+º86.`Lf@y PV6Rf-KG fK !2~oJn qM1cOuAQ|c)kմ4}cTж!x %*#Ȃr"|Kj+LFНN@ƲA`B*L:&'w %'w qbykdLJOr 22K' ،;l@9u @Vd!V#+.bbP4xc>pT :7e2sDbx S#rs#Z Hi:2>J@4F08r+q7Ȥ.bHJKf&1`1 :H ˒41sjv"呮> "S7,bsF1-\LFmۨwc-$"+/x!!"=/h=M<&I,eb|mP52Q/0!0,7iQҐ#rf-,9+"~̯$sj>V;B5W/~, F>rw(U+pjȌ~MrFCDɂC$BuNamze>歊nyDM>JmRyfb,"nG; W/c-0`S#m"&RV"(JD 5,0G11-D'=bL4Q=H@CJBle 7"pd1Va)G˩0C.;"y|ey`s&&)*T7jHI&h5L&c5 J= ~M7mH$f -"<!@.'#NҴ~8h9"9Aca D QH jrtMֆMH'\`z `V2 ?_ϐ0 CPX. B7^/1_`@;P eH`9 L}J8 ~>@  -}o' P  >?n@xP3;oZ x5 \<ǂp 0=O g"rH(W2\/XdwoH|QX' V/P='T ~ T~(~-HsR~V+ <{Gq?IZ +A`x*a'~] J{|@@0Ȑr!@ǃx@ lj$4Z}1@iX Qi($},E7,$TGR $`w?RCY~`TEyCjį0}P՟\lWK#Ǚ zx&k6A(! Q;*'G(TAuH}ڪl'Hk@*zGxgtFgSɇyѫHXԞhs |6,:GO@f*z?9`1๞v|@ 8*+zycYfŁ@E}Txz {}cG`R`Ac'yTvH逰:|~>b.~B.L2IԫG q}0Pxn&)򋾇,I\ u[(`q~ a@@ఘ# ;@(4 g|';(PI°>w?~O B!``H'MBn$߀? W@' Ag]} o` b@ z\B @\  }}^'H} ~}߯!O`G` F1>/}@}j2 pg{+r n:"`,C5@ <6:)~0@'0Hz ͘"IzG}#'1CQ|GM`꿀K@0GzL\ >S|N[ف"H28-b̴"0%ʃM:Y@h٬4} =N~lQi `kǴ["~Y x@28 (* &@"oΈS<9/ =ī18_DJ8l*K( Z ƃ<-Hg|/n7a. v|$̨}w/@%3yK- w,co"-cm$A,0wa񧰖I-v!% *|}eGzhXbX3 cL- "#z ӝ'y|'䀸 ΄2ǟleJ Z=:~@UK`@iv.C049h* 4BY a!sGL(|p ð|7;2 8 @H J"r,`Тx!!甂S.x)D#&=|=:$Y'H]IGv ?Y?XU`oW8‰H9VHdvbU.PcXBA\RBG.1> m{yc̑X4y@` {~E\p>zl$1X~Nٚ/Đ+vX"cƀ6!L&Lj x⑕?V)a,ЀjA$9BI̿P(<œ *A$6Pb_ eG ^l4/K1C?I/\*Dǀ xy4G32o mqO!*/D1?@p $hA`\t;-FUက [8G9 >T#gRz؜G-C`2qc`$藴vq E1,Ϫ<(ЪdO{"~EhhDJUhXպh0=\Rˁ6f>i%Fa.#y(gs Vڐ3GL{K rfK|٠Qo' hG1"䄐)?! >py[$ E݁60r g}(fN&q \a@)e'YiF0G@So(: >%pAS$@ i{aXf2D(3`Z , h=@N$B>!i$}d2@"#Z1/H1hv뒄q TeB'8y5q (]9`2XM$h1"5dfɄ8>G6qIj]SCƊڰqmC_+'숡 Ef=QuK+E(&,H%SnE7UHyQRqI $s8C}ý_ 9J=Ҳ"ԃqi&OdX%JGKP}uJtّ4$>tZfLn]ǯ)ȮA5ItكF'I"k9( sp0`/U=HvZ߹['Q2 #"QK25iF!jzM6AgE4qMA@JE"M4/D1bi$t@">4Og|%F",|8YEQOp,ja8d6Ed'$!2'";bq2@,#|H?#6ybW@+8lB$a( ` faPrr!+*(TAAA..qLFC 'TZq" c.e.ԄvB--_#gC j# % J7T"ed46C;=k"'$ EbP$94s%aڰ`YM:X"C22oc*"M:,M":OdDB.?C)3 (ʰJc"ʓޙ,pehZ;at,Qnވ$Shˈ.c4"#/jca%v3$Oá #,Jh.dx+LQ唖<1}FxJ6D')Uڈ=㎪(Ni)pNN䌰c92\bP3NeTevP4e/6&d@b>&xn4-cÖ` 0e#d@ꁂ$B"&VXݣcŮ,5@NehC%<@IG`nLlhB|@"?eB|ZGLc29'ċ<-<,U4Y|:ZA76 LA ((`";A'ƅf(@U$S:(*X">T>3d4 BTQcd,H3ȄFYJC4402|B.eڱ4>&1-EL(y}hA. 98Z/RC@Gc0Z,nWѺ"{Za8TI C#4a$ l./C8㬻~!eZ?"u#c555NC\d_ÒfZdc *.`2KY.e^\@FBHAdAK`n::AEbH CqCL@Oh0^0s=\@b<% ďwCzOTF` " rgNx A@0 |=_o '@ |_ A >bJ0Bo} o(; ~P> H!?h{?Ϡ(pw@`'$F7Y.[\> ,`z}u0}AZX{G,) c ('|k`y3;grCK @8~: ~I 9ǘ =l80)ƠHgøg00> -AF:l%G }Gisi`H yq xQҋ 0@I`(㝰m`A  <}(y~[q7z6` ~Nj OY{gr#A@dhz)A*58{@ "xA<ǹ{%/\P G*b+ ,:rDt}{nֹ5hj*xCH8KPt}Y 8(#R@.΍[-`I~y;! z@,;0!1yà*̹rlC]=7PsQ[['zՎ[|A(/ <@'N`2bn@B&~h'ޠ)eP湀LpJ=F3G>G-3 \#"`]8s97p @ ?h"A_@ah:<>yxLn5z,(?& ģPd/%@0D!?$PGoT"  4E_oc aPOg:Z`0$G~`+A;L|A@V.0 ?^Ϯ[ ?`H|oO`@V@`P߯n|3Gz"g䲀N@ |g[t!{#L`8 ,hD+!Gw'\ķ`/@l~5GΠ./8|T,`оA@08}R 6Jv' *`X9iuGap'AG{|8G h)HĂ7 Ar##1kH~EɟS*{  ҁY{Q7qS> 8 h,S:/l@L 8'Ѐ(h Qx2 / z8vtxB&)xy7E >j "k ((.4-EeV{Gz( s߁1jDgcby+..tg|60` ~( ~}RsZXh "r"t'd#P]$}뙞m8),A6:; Tfqx }wxg|G@zC{Ek4w֘ ,oP'ݸQ?IIQ&>KyQ|@ }",EX]p2X HGw0 J|=GL[D$px0poAH-,~@q@|h1pF,"_Ijj&jk5h!c@RPAA61rjj'Viؐ :u$Mδ@.f{Y8+4lHŁ=!6qXԇʵ1Y{M%VfbCAL>`$ !CzztVY3P_w1=`,ӝDNp|a 8F#ǵ5~0DH# *"̠ڴ\"4Pc9>ي|\t̋Q\.Cx8FW=#S#aHP~`a6 /Dc 7[ ?ǩ@)b=0&ט_fi?c5?Y>l,tй~Tԁhe!GN`#Q/ Q`gdcB;L3QfTv>:B`Ir"NJxj0#MJD}5N<)j$Q^Ly@}q_Kb(7l6c0FY1_@f{;F㍁/%WP Bbl;褧aJ4 cK @ LWHE4#(a:L Ȝo~I]/(#mGhG >8;]Lƶ& F+&t 1騙S%)Yneu`?VA@1.*$v.T~M;L 3Z\h}{\9Ik0og|3hJ2"+f =HxRU*H <Ј 8Di2K cl#{?17f\}$H< b r<>HXI18~w?Ȋ,"ɯƾod O唁 fN9c~/-I.e\bF7C~d`;8',Cj$|4LDb!Bz:0#*26cr@z >>A/(|9`7QΨ8 TceP$3䔘.lR! (#> Qd <0mp_a#C|"\YBHDo A< K) d"#,0L 6#@4b^b:x=C|l9Hb@lZ@*Aܒi4c*J3gp11C-&:C/k9!/:B&()Q8=D$#~XD:p7 ϣB[`' fK$op61"#p1̐dLfؓJb 9LT/Pւj܀L @aȠ< I(!ƨ#OV JaEkw v"f6.F*5BXg^1MNcF_%9A0|"̇,@iMξ J9-68 J3N4 !3A,@1f/c8c5TO 'DL"Mh(#'{"e&0VB 6,-1kȏjI0*caD>/$QkPk}5,9EB,, @n`L0`j0 '( D2UЬ0!Ra@!N1f $-,  DD7ČUf,U8$( ϥ\@DTH?qw b yC/56%f56/'FB47'"Ҿ|ULAO4S ֛uf@# :VF+FCcdTL,Tk,eD(>E g* !}7b"jO0/$kPJcr-NcM%j$i(.w*6EBĦgzvn(#@f!B#0V2C;4.1`7sn'Rx"͠!O䴲Az D@&%| `o+.7/7~`^mA!!dNbENp2(?VsVg!wF55iTL6"0"fn^k0G6`` K&QfUbd$f:C$tVkFFÖ;cVʦk*@d? :-6^B&DgÛi`#NGGر1A/C.}C~EQj! T:B Id_B{Q 1#be.L=:D2xC@ *-ֽ4,9D|/вGF'LNAmm7&bc\jl#FAP8R0fHraz8b㔛:N.v82ڪ"2-JJ(_,`BwF"σB^m'EEoo l!0BXwLy"o @ *`F@R.C8)g>A&8$|L-h`=DV~A!A'~s&OBx3ƘTY\,U+["Vn-F3r wʥpľ'B4 KC`1X֠8g$n3f45Bp:loxJVi31 BnQ6'i>bA@0wP2Ilh1"#BVC C0&2@";&w sA?5=8{$ _g0Kr ,M쪄D ATl.01@!'z&N|o&!E(s& ,ApX"(gr͸gvBZJA$宍""-C1X> ɢfMȂ(:(F?B,54=QH3B,B'C@@6ffP~=K!ŋꥫ1X¿Fh_#}c'a?.r7ÔZ<3Ć!EgM4Y"-QpEL!B_d4|kCICl4fA#!PD K#Ե`C71&/# +id>"nAJR؎;:5F _OGhJi"!bA5c'6Dha<C!C0(Mb./h!=Kqg("N)Y@è@$,C Fp(ikOp -$A L9h> "j4"}N֬E@  @@*sFP1(clN H0 ;c Ub~PR@jlOQ^w jCbYj×V.b'X;'#NTMJ,e9xd0#YO$Vޝ:7%\yಉ&odgc^]B\Ɏc -Z"ΩCsۥ`',Ĩ8zլ~t L N=k ۃ"t"{2p0b<r@8^.@.8+(>n0c7(aCA\TDT\lJD а ^/fCs!J? p`  @~O0Dd@&įw3"x_﷫@(0"Pk. 2 r@G`}_0X @p?$ CPcTG)K_ {]߯@Pv{= Fa#@P c@'ٟxf0`8 Ͼf>ot }Xb?_M4'z1~{`( , 8ALYK* !x~@.,p{GR l2/͓| C0|5'{/g bR 8|sq{&G渭6~:p{#Lh06 F[3}ŀXS'|r 2'"{CD6H5K=x*!f[X }T9r0L_pT.E H.  x. {-wuLCSU>} j [GL2u [ (/ Rus2.0xE r @QN^{]>}_@0" jZ.C(sp @w~>@ {}_ / €O  8Gz ؀o-:C ~= ϟ~?>H }|>_0*}g{w }b;]&~`]0K {}@Qb`9~P90!`H DZ| kI(GJ1{=3`҈HGG|BH4 j m0N0m漻0,f`lz|-gGȇZ1|asFXG"x"-x DH⊾4'l(UTz}+[ty-3X0H(Y~'vLuӄG ~8RK ' `u(b{x'(֘ @#( }mil s5cᮀDoL'A<)UP?ۘOnX@a$92BxAHbPe` `8@$w0 K}a/{`. . @hi=9A1aD~A"[oAtKJ m$QF zHGWp P`mFЏOHbkh%cK [@p^xTGJC yq;98ԊC`kRM([R/|Pu@:"¶P=Z%,V1"iX1b%ޑuc ;J*s a[b`zS QA=R|<>Gܵf"#R؁*r(Wl a`gAN6Gc˂"O<;QR&vr5dӚǠDLp<%&ְ1X{G`#Oe9yHkd&4Tfwczր1Y!+Y^*fn rG:J #BG~љ1XcM 8hi*{rG+<S (/$va$ctq:GbH44"D\4 ܁Hb@\!OAHc}!;P%R?G(zet2@}a7vAu-l1[I'8!eGƅ/r݊0y=.yYŀIPxf}/"Y`{ćfieC}K2\J ,ftOF#LSr=rjMp\y~z@9Hc"K ^1Wd$`R0N&Y>p@~!ecZ "YŸt4> 3S.T91O6o6(IJcn%+a:bkE,dCep/PNb#/hPVh,G@'1N G BHN Vl!:aaa!΂0:$B"^a-54(f(", @`> &0bA@" dJ6F?xU™c@H`u 5p$ePT%0{#"deF(Vm8FmLfLd4TCAfcCvU^B5hHG(dmN-*@0({.:h" 2HF^'ڙ(p9EOG'($%ea3D#b;)P,>g|肺@M1U4MT#(8I,Be.Ga(|Aܡ;Ʊ$T +c100BMbяB#L6#` GF҉%'@i4#ATaa/c'l38iK"WND0$cN"G7b.OTF8b"[t\Z7!(DD,ô!o 66MP_ 8L@J@` "8(*ciEa"d>Ɯ^_(@d` od$>A!02?K| C 8DjB"6@JHoL&C(씅~ #$r7!trz`ڥįdOL^VF[P A"m8):6~,(s"Đ\Bn;?hdʱN,C##>'T;O 0D.8l&a(LJ }blfdrx EVeu$fb0H,T!1/E 3O;BPa'8G,Bπ/? BHcFkTT()a,A8 o'mK$􍢆#Bȃ4Zy$$ XH 0τb&0nbm 4^aAAD@$a/U0Az-~(f,߄4t5X($Q`b5&`f A`'Ka.bd$c!g4md3LKBM'y7`P㮆d(B>#H"҄`"L(ĖZ\ v'om!DFEFcC-"#̉0W+>'#+W&JNH(o Ft1ABefZBF> ]'3BvHF@: @\/dHmpc#"!#S\8dz+|l@8E("̓--4/@@~DA !7BEL.t"f #X,'ID/lr\dwAiV)ߊf6tb*P LO%Z#z,Dz @nE@`CGEr .+` Z@` 0@}wBNj"fFl!d7i#C2oT80JkB(ZY.0 JC>~=&Y dIdj<΃ |@Q@-I+f,&$ғk`f7dV(/t&<@;O&z-gM4Cm"h` BS;1Ct@^Cl,DB ^POd[@EyӋL$#OlCSUfB0$p|/^\VeXC:f s X\/&)#55k2Z96^"ґB!A(lp!t9f!B i4Vf 8[2Nη#$zpt` Hw^!#/H꣒UA> bAAw&JJBMъl!䍊%ɨVn\N^T"5`Ig (,Pv 1,L1FRK0"O""WKT5G`E26/(j`'Mfk"x6,ErPm̀#*址.-$4j(dZS|E8h"yog:&[%`0B{>-&Q$wx3DPpvd%\,ļ#=.ӂy %mHmf#Z(68@G %NR1Cl41!WE!|ס! d<8n]rn740k%:)H18B5˘!|(bܦX'#tb #[$zLa-i#:( i:kI\aݦv`RVGv" Udee-3pw ETp*s"" +4L98piNX6 :ADi(:4V^3V B\6fvF((Pkbi*7H"14I2D BN` J'[ PjjDF|(}d_JUP!J-١v- ـ1#Lo&߾qrm5d! $"^-HP]:K~d~dd $ _X(m@qhJ+@/%?,/D{?^GxD3bG˵ i7_{Un_$s}  v$?QK ~S&QGJo0+/>}j}`قnOJzo9HBЈ /O.zh(1,hc'#מ *I}.9yPG{ Ӏ*㴧}<9!$~sZ*mBR-i+lwEP` # @#x;lxG{GufYa{39ڢBS&}4(ر|tx`.6 ؟AK@ 1(^4$GBl"0~úßjȒ`8 c\ `+;P1qG(z%l6{v"5Q>|`T-g–Ф8$%'w~(-m$#2UU^6 Cb4L{Xig&Н@ cf;0G(y8 JM , |= HkyG})-͢>-0xGŅ0{ 3B`Qr2*GP|RϟL*.׼@4ya8 u7 {$}ǹzczg[c`%|Ox@m>S-]ļ?:|qO(u` [y 1ă< 0P ?s!o``8W ƃhBuO|` Gȴ.MI|A<P0 ~AO |?_8?oYo`F078 E!>ϛ.~EsϬ,1C|I@X7{_O}x* P  ޏ>4{y@`.5-~@*,X 1~ ~GR8-  Ԁl١G|ȓVp#ȹ->~5-2 8!h xH9. |CoH8|x)Aaynz41M&|10ʂ`I{s -J , 4qEL` qH|GyjJ1['ۆ},Վ :"[>@x @!4{@~I0yG-+uj~V`9/[+KR"#iTCtV7{Gq~B<^!f,152բJ./3"@8ttVmB4@tX5zvH @ z<L'dq~G|} puYYOYgug+Ν޼]Zsɞj ryg|.B[7Ҳw~z(P-_څ"|k}=]kf쟨v'~$=em޼CB!?>y$?@H$|vK`íD:Ln7 Db a"0$]0,{KcQ6P6)Ģ!I$B 9E U6) d~‹` +>D~R/"D0pi3ꐀ [\$ .vK7P`lHtv[>a;t>B{ .$B˩F̈SQ"$6DGO8 ( < 7D|n T4r6GF4xXAhpQi?;V[n*R%֠4|AN/Y{:$I.wRaLd92>9ߦv َ=-bex#/`8p>^p)(P2!@f}̖a$'P"[\^[Ea<&X񉈄ƹcxv =@R 5t#ZGњ$k8G#8t>0%0 :@(|,h(~i &@8"u")cR23 $`&Cr!a!MG((C/CB" 5!˃)ޚK -NU&$ `x("LIcbe!,XݪN&`Mڀ(ϢvD bŇ:30!#zd CjH (];FBV=Bb-%gl(c#ڝ z(3 A̕)EbB\z,X,t8#%OTT (B.hVmafe6.;D`BL%EP%Lfb67mF-.ȏ Iʔ24\|V=D||=FT6D" d"(n2`GJ<)XXv#"$,޼J?8-N`!.!n@ /Ԇb! Rpj]"-| L"!A!@@~ jAMF8%G&@(vaKb2~#r0 RI4&1 ɨ)TvcĈ*B>Q5)e!xD D$@؂"MŔhn:~!g!OXFp BB̙Ə/o6͔3 Kpb" N`P@m 1*! fcRHIp&5&f&@/A^@0tMJj&ywq/%cUHv/@]".OE >b<~6X7q@8H;Av*#|,17&i%τP.Ŕ \C@\`$=*YBDز N\($EcŠ#4Ɩ̖;2MDՅj̠]Ć(K굡E7]9 "GDkpb4&'5lNPW"2$rhG*nNGR) ,#abX~M O0g$Nc8'4=C X U!C4. ?tA6.B;0 .)a.D>L'B0fT.GTtR86( >E6!El,="C'd*~@4cLI$>C\4CKZQ|,*!-(Rif" `Ř*` K4| '+z m,5ԇ/KV/'.@ aA 0^,rq,3r?b"8//>Qbu&Eq)q!v8@BF(;28"|$|,Mśŀ1|)0-6/!-^u +G$@(RX,[DI*|cd<.L5$".(IީB0ńEúh8D507BK @ 5FcK̜vŶ"l"6v d:VeP/$$D'E3»^.]>6ptIhikRZ->7Ģ4f80Œ bj0lT$$d7tELDDG%2?fab}X`b>5e"x`c*V0g:H3tNB#~!~A`#>~xP.$7 )$ǝY `L" B@R'P$ͮf;th 8$r y:2@r<4H{2(>:|j^d|2 6ieeFED%B%5"/I7CmL'ZM1t~`cC"p-\t"cW!a(B6~,%- RX[{.I~ù%GVp." !cN ^I5!` '1\>-dh^m,=(ghjUb"o 9bNav`N(tj<dTH P a:pA7<(r(m m'#ƀ;@D''zL}NB@"tB:2#D8!a5/ S<=_|.J=+"b@!6|B us)P9f뗣/DYtx|Ml"4/ 1p1 J\ŌJI-R("b#]L2Iv,|Ah1]]MW!`y=>X=^%#@#\qƅ![g?No9iR;FK|Dab8"Ɔ \D|HA|kg'V8^Nf&Zܛg: 6|EV<BbcRAp!ab3la@g`UnG%ޣA.RɭCH>@yE`\&l}CjugS/-&P"|1>>F>2ԾB%qtM"CVR3ěCŒ?,&j|` GJ.1'eHzNu"#cnBbJNd5kgtD73Sj;!j!*(4336` kEQ$ %uXʖb|0H`4{p"`M!€DG^:#Q5"<"B?qڿ@4L^"I*m5*@0D~n` - NT c0V[}#D"0kAp\ ,ә@tF#b&`4@#x!xHyrn~8C#{El;- O3?@@` {ğ1(  ௨|xE@ 7 G a/h?@h3o}_ @}g0FD ׸$_pc# Gĭt]GPWd )ꕿ+ 8۟f+@ ӟLL0Ȩ} H;lȟdL† A?  g0)~'HQC}@~4,",:x }1 12O Bڟ3~K{L~6'38@ 2q@`@ |X`BrǤ|!7`ǑRiazqrLLRUYz0J6aC  BLP$Rw5JY%HmX8`Pm47jSn${ X-WR$bHf}`*H,3Ksɯƚ  nu>'p:"O` b@2#!)]$C6~ O 4˳fTlzh>5Gؽ5'MŴ| `*1nyۀ(?g"y;_ 'X~hh8 |8~H&gwMWDQTEpRN/ X2/m$<<0I :<@t:ְ(!p@@ P0  }8C! h( A@0<z>.7pD-+!χc`p} EpNg` XX:?^ @ ~_ @pH?A z# _ϫ&U_ؚ$Xr@\YqO#Ym`;5Zl,`!=^Lc?# }`_k ?/ #sւs[oBG K~Gy~8 |-( {nG(+C|PP* =|"'z #O[zO:-(`+ !L+YH-*".3rGLyL~'C :*g Pr>'8 :@H ;@8xkAā'slv@zeOgNcv,$K *ӊQ`1*!n܀`{Z}`e'r,#-Ғ_'ˇ, ${0#8cڀ@#gGв x(R'{À"C8 + Ơ;~[`67kKkXyg۲?lrP ηNcb}E tǭg-<}xԇ}s@DaHɬp {욺* |'Rnܐ '-GS5 "|'-Kʀ`J]hy| Mjgp,՞zDt xg ܷqޏPToV?GJ$ "TGh&HS]!\0y)X H`(0 x0D?Cu9yMN.~*A#o88cx ây Be"ؑfJJ!7?Ar%3 YِI}CrIA_Ӈa% {sl`; ms,ǒOL\4%BΫ@Y5C=j,Gu'C0M}:GG%0ޘAJ0 Z&=B 'M?6sX=`z px ssU:QC{hx N-t)i#dѱ|'<|S@+H3$^wrNQY J ?ż~ E9I*x='*/ [q65!g-J@HC\^9h] ~Wĭ1;LKl2<>%㗒$ϊTL؞#Tʋ43>ThJrѰrw@i>\9 @@DU= 1a)z!@UCdG@)HL"M{ =21:6#%LTȴbLjYt}QPk١{(Y)q'n<Ɠ0 G% G?~ bLX7U\BHIr"J=ْIIO)›Q V] ܐj@vMuG krX@i8ºwf@y3'y`#c8ɍu!DH)k "4cz E@ cuPTZ86Cdo:@ o]wz&4AQU1MK [14폧 ^#JwFYGxCB@,iFwER7jvK@APڪY2I쩴CN>y23-<[9| !?QihXGy"$ݤN5 0#w0eAGpHV%l ydCh@RI g ,gܜX-wP>ǜ~l]/M4>?9>Gm$^`$&k0*>F䙞dw =~YbVr'-Up xZ61>0a>GyЉӲH(\|ك5@A> ,)t\V"wA+6HLI4NJH'>cg0 |@F.NN,g1 (\c@c x=oBx'(0eOD6-cB5FoޕC\f6!"n8cL E2D#bqɬbB-bWf;f7@(eeܤI =1ܘ2elxC 7$4',dM Jj;D3cC H1i$>D* 1x8, "b\D^"'!$"B.1&;*A`~ ٠ a->B$t\l!!8XO#\=@h#fc0δ"q.B6@ZF&|j-dpJ+:cl>+HR 0jh1Cm* 0A'd7+gBȔ@ EDH*>O^X'< dh26S< RTeFH=j6+LD>@"=cH-z'/"cegOe C5'O!~f6Hg',%DK%F+:ܮ &hVcXF/R6A$)hFn!a!AlZԪJJ!"'c:)6!- CCRjK fh0 !Z#I?OcdFO#ev/" D6 4Tx"#Dn"\813$V(+d:!]@D@#꒺.`hC`3a ."¬`f8C#Iviȋ n+%x"'xfae*cB"lT&#,Fl\+%<%53DJ DNd0ﮐ%54F&R@@ d4~0V< 41\p!4RFSlj>C`="1[F7NH XwD2>g@&-3Ac>5Fbx6zBʎp 6>sd MZJ4AB,GxspN.da$Kw1(>X#潧<:A>u"M=g,@ H8l`hB#K!@K;;Bjht8CZgE <$c0 4 J+6En 6/&1~C(dnG~-x#Bd:&*hN. S:pBD Mäv֝J$&& B~SC(m /kQr&~dda㬱A^ UD5 ?>4T2Kr:R'X4&X!*A0>'J=X*!g쏩*n2BlDa8.z82JCP6fnF6P/)aL7:jC%`/j+$Fj!e#Z5"/#(e ^&*hB˂qN|GtdbpðfOG*,:Ij۫, d,4/AܷK0&wZdB$3ADc(rR>-eGFրCed-U$dJX`l쨝o04)Q.p:C z.R*MY4{,Ot̢Ŀ6v18 s8]>g/"D.< .! @h`P`B!N /I!cC"!`8#N4Ioi;r>SR ,h1 k*λnjg16$L$8F6-4N^ъAN7N1FҞG@M4 צ s<2J YdSb],RDzl$,qpLoJjq2qtx0n'62wC@6T*,蹃/7j|.d2crcMæ-f/ 77TA!>vDw&|# Vh8CcJcm|Gx.'3xG!@ "5 ~.ԤBL(W/;-Bv2D82:\w ,thV.) I"1/N! $fN2ҷt\;¤rr%HE" ŌxId>$3RBJ4%FA#Ffn"*P!8^-ƒYH<KC\%Xlh8jkb@B&'4&!}mglr=5xb*Vzh\ ׳x Al)AzX|{P߀+(~$0jMc_ʞXc`' 0VM 4m~{o38X /nx #@J`|L&x;z(@0ځ Hz . *r*('8~'qbBr/R~-b@|-(xF'bсj| zb$g՟l0ŋt| *3AJP|?9 "|О:0S` kqxGI|L38, @X΁s!ҞBV܄@#<+ P,Bݮj6@`5!~MێzM'Q M @A{ķ-`R$ RJz8#0x; 4A ܸB4wvH Iෞo=f/ 6 !ש{ǚ(J|wt}Ns6|s"N +${>bjBy3g emYx 4 X|L;w{I2D*mNgBRq@j{ܞ'pL7~7r2J }|yx )vG}X\ A x3_1` A(|<g "O#1h?Nw}@`L bx0bm.gC `{@@.qw|__0}0DA' t6`W~=_0&~o;P= "@Wn~X_hl&~"p \@,.` ּꬰ7ggՀ!{ Q¹#T܁AA}GGkv [g~'  3(@@ Fڄ@$`P '{ŏ `ڊ?ܸ(}@++*M '8qC.{ $8֨Mh `H+>u't|@h 8{'~,sGCVOK;%g~"42;f= KQzc'RoEw'9j0-h@H9@=|S1@<{chdF}) | q}){H8@lZƀ-'2g@Q @  xRtTZq]!`k;2̼R0Ԯr79@1 ڴ I,pA ɪ5i:#!aygZ`Ҫ`*Pssx6t Y{)SKdkias·;J)`9~gwzOaz`}3@9q5@jBLڏ=GPz8Qj$w 5Ifdb) jx' 9`0i%1<xM@# PGpz>#&\8cf?AH  9GAlfPvGTh,{@ OD9 @؉X`@ 0gjmg}>_J 4Ņr>'A!@\|bb2) ßpRc%=qm3Cl !=LA-ǤX L̞CWo;H힧1BhJU#N@-pBQ6sVhP*W?Ah .rz1A !^[0wVj)42>@Q/R)?@, s4 H5UTḴV}:$qL8wfMH $vtȭgCAMzjx0JCҏDu3R`>P LSQ5d~W>X(vѰ3HX1 %rMrWyNz ,6 (=@۸c%QGTye}!k -XY) ! H@Z5cyᬠ!<0 W M`(PH|?Bh@eMK Of849=1^&@=ޗcU!M =jsv3}@E9QPG]EqhۇsJn$Ǡ$ w!"_JFN} Ewf#l*-N,%RR5"G"J@\;'W=>WiTY ,˂T#$v@zƔ"2̠E'9g GtJ+p8&\Z" qC(_F$`E '3 lpE/6m`z5E0$Fe r;Z#8h|/ `  L!ACźIӇژf8"־c#Ѣ(B!`jBFc4It2NΆe!j̖#` B]B&1iJ`2TC è|dn[# *`@$GAx$/"HdT&P$ wD,B!nDnam,/@F8W9d6g2!eGĔK_*!C\D 3!bh#f~"6IbBe R "NdEfF/FPgΩ=3CPOCEdrX!Q=JnnJㆥ&5g;.B.@.02! 0Pc4-c"80D#^A/. "@2硼Mhnͨک#b_$@m;@ ^N)K w#T_;H`0: @EV=C##e^76.jf$\>QfZ& 2t{%4Y*62!"6X,+ 72FfDrs!iOO$  i,0h@j"jX.3;@hc3md.X@@D\4#`xp)B sqF` pO&Z@GHdZ((caD,Y!CTd#mŐ%"OxOck:|r9)9b dCxN!#Җ%!n=s`IlI;C엤؀Y`{13]S|0&q ;T@MN(` cCpC 0A%A!PԵiKӓ0rB2@rNtQb, @6@2X@hG1;>+$/4.tP>pC*eN䌓(>fj/ b$)E*Y$?2E/C*{2>u<b K1 *!E?DW3c4$n>c!(Z&dA=,,ZGh21! H;ӴV Z#;!ʪ)@{D1mU;.b(&3BS$BB@1ZP/V22&.6Z~` 2'8N B:QAD+0/3ib5EoRTzehO Ga6b* !q(rUp BS&r` a@BTaĮ*]C#6`!A61#,e 8:(e GC>&(dDT@:,P?$<,Yvs|0i#xx0$F iIl:*q~E_ lCoBF?ʬGD r)@PF;v>(lSG0cUWL=?ÖT*ɤ0$æg0X2"cX l%Güi/D@>SO NB)@ +Zc8C#J <ܐCґe Č(1HH9j8d9I.!~*uz5vAs6"!IX/Kʦ-mʯZvt24C!$4!w!X!<R,p3#`Æ#5(K6NѰϦf$p$cI:Dz"D\~ePx"=| V{iFYb, d}!2ͧqW'8iycGs " fStpyVB=M8NZ!@2yo"CA„hAux#TDX۔#"(%cܨ Bc ;F)J&⇐-¼;"7fKQ7ŪK#.#c7#̜!fwj`lzFPw0"2f`@s Td6zh]eFD8c ʈC(I>ƈ KD@b2XG?j.0"Ƣ>@. F܏F8(thK"V@A6|_ u|dgb/ej"4H}4ky83&{L!GH3FӃj`(O;JD.<:zm$sJ#  1͐SX2E7[$aa&a4C`E7Vuԥ} ]ˆE2#`R (`" V@VCj68WY"8h"hYF"Hu5vh$:ff=&Y t=7<f[QߙEA^+f"k`^B e~qVFY~;@/bPzcR#E&d8fNacܫB`.gH2FZȊ..>"GcƬˈȑ]b?t/WT]vI"c;`2N/Cg$>lYɘ=JF@*-쳫 ? Ġj03. h`UT` k: OA¼q-nqUSp& ;? % Qp@/G|> |^Apc0>pp*@GAJ@/ T}HߠW lϧ[Ɂ@88}k0)@P~>0o ] $|Q((U_y>@ Cd@|@ @]MaH5ǀ@ b/Wڐ'~-x J~m[Z:xƟ$8N)l l`Q+'~@PPX/g)'^ &z z(dz{('}hg{13~|D^L)R/pf`@4/`GzL( IGF d>|7` I+;o`Twk|OǀuAg[AɟNJL`T>If hP&0)%JŸǪҩI' xzGز܄R`2ɪ' ! %jz0I2ɉ  R}$ l̇ `vx'z P}i˚`J ȸ1YGzC #6B|s@ Xӫ+$2fI B`1᳞Ǚ⁁@-"\3H0 r('@$2B/pn΀꥟H{J iNOpeD_0}?@O#"*Oo춹F@gz0A/p8_WX+ {?/iro-|?-wmn_o>_;m.fp@|_P#j1"l{mV`HMQ!@0`3` 1 $&sZ*@+ˠĀ3SKz:/؀˲DZ9mqy(-`C` ' qD@cl=(jԈ":'yǓf`t~-^7'̫J 2Q*ډCЍA,+a='Y@f)x>( Ğio3@HѳZA4&vGKqJ~~/KfQ0Y=O8 ncDT!`:FgZ XY@rg0? |y3C+ʡ%QStM 8Q'gx(< v;x`Uv袕9c`; oGfү*#M Q1z'J#BjC9ߟ*j{z]$, 0OvȍgH@S28/;#'P q|-L?)F 3qIxs``䳏$\W D B\l pv ['"[p#^/ x`DG8Csr 2?-ؐ 6cv(G<ԁA^M=HÖPoF$2z08,uL]Xc:Ň 14=GoTADBIG Һ^sIt#)N{F2Z1r(]"UI8't`001掇 D&@1h 0%  W'xº 5f4a)s~GĹha&xB9 X >lje~^$L2İAڤ`6K$‡XfJ@I@-dlSXyG@B*[grn:;QyPLǏL!G$~qy]?0½Gh^Gl]at3#>9G%irHтf0? vp2@\8s)VF&ȈZin*uRYфnU K;& <iG;CJ'䤾@AC.Uf\tX*[ir`(*BU'&n\.k<{6IOC;0gǣ2>c> ٫Ϭgv`G0xN7p@42"NO,s#Y@#jevĖK<+ zX'd^ m!@yTTZ0vP ͒s I=guB5?|TJ?ZLNNWb'A2@U0 ( y ;x tEOu*`A, "=' G*rքx tgPH,^3"`mi#:# T{Q86Pj\(gOhOR~\ R#& z:\(#W(a"3.AZ7@'ovPw 'aJ`Y#SxHdPo6.A_&8\+H~DA&Gh ~f>xM3] q8ȼ1w:g0 4<Ǵ ;@ 84KzIl2J?RO*8[o;[GF*͊|D6BDJ@rabͰJʢڞ PIiT.=af$r@6D>Ba(au:@> w(4D8 )ا(n&jJa 3F:`& bPr> 2`hԉbxf? Bf d77DdbT7"!BPj9iЪ1ɦ-GB#n"=J0ń4P$rkq\dU`cc&L&\ȣ˒#B " = )gʒb!fd RJ2@0B-db)*B`@#`D!!a.z\mO0l>A>ǜjN"H.U DT5%F N#J5t cc /5"DuIcx[. خ<-bU|!bDÔs~fon,PH]BAlC8PJ("1/>|cG<"h rd)2sB($||)b]Xc J%(fLYdJ!!D7M{8&0J3>aڰ,&6d5Ck1FL?'P.T,,h>* Jub ;ib}CP>%X$a Y WKќf:5K2@ľA`pX3Ǽ;m!J9 +!ʀ`"OBcFoD4f002 $ˆ~f2A3@@ @(@L`o!m ʝvaR\ '\!u%T!Hxs@G $K, \|VAF3\ P26>AmAZd&I.27b=L ü5>dN*R?F&!ltd&> bBt;|A2c-c=@n%.zEQof"A !eDF$h=d)H)#n-Ě8#V="̎^"~P.(&"A+NT9'RÑDBOi 7Fc4Gņj# HĚ .b=b I0HC0 CiDW8LJQ$ ."'!F& ""m%4x@ 6H2&.0xfCDB/l:$rc>V`&v~$,(3Kڹaҡ `!a!**hv1f!P\a䙊cFu!zDUIEF*ր3F5g+&Luv&*]Lh)e}7XtbÈ'nT+XbU#X2^\tN29#Ϊ3':J..d !+k`!`:  $,/b4Qaht;E5po$>:5$lΔCzU1(!`"#J jP/, {-&'vsÎu$`c>Sƀ-%%Ji" `0U#::DG)7!"9HTK1dD(/>EEUCrg1"N6;ʜ"mv;%| " IU" b%usC'Nmc& ,hޡCh)&YLD!FbLyD+$bj1eTtd':+@y Td70ub D&/m#Do@e!EtF".0#f͠e Vqg^o3 Acv($7Wg F⾟2OB8J,fMJƉ(4\sh7Hp 2U#P!xq"Dt/].fCWRˣ@mGꟆ2 %&72-GN[*879\SA!a$ބYz  ].PήӖ$ Gt=D1 +~|@0?A@X9@& w@ @ # 7~_Z@}=oRW |.9_w !H@x QI3@~>@oWA@ ?̽ 0+ ?@O 'Q豀< |^C~.`P-FN O o"yfs+sd?_;mk]Gzy+YrԀJ`Kй+RJ}| 2t{ [t;nh6|$aKQ'`2xgz˟`3|2''Lxgʲ|@ q'nE|g!-@Px#м3kw(| ,m7T~G:}*0gzHXʾ ^0@-,a& ) RbQ*( g V:@2Y~ /#/(*5`$`,.!7g@E'@rt'xGyxܸSJh `ѺT{ +l!?'@V7OE T85h4'H!h NC.$,hLn 0KBB'@;w'&s(k fF{{|[Od$4#-x$gywHqb&-9# \a&`r椒m ,,yqaX8 (AP@@ P)w#Z{WÑz>  a Ll^p1 4MP{p,W:O o`@3@ߠ@# };U}>l ,?O|?^}?d`2 ɿ`0wÂ`#}oq@4~gkhޠ"|O }(~7-8L{@"`C(>(Nj'@@Q| 9\g޼5~ P`8#hD({&ɠH} @x`q~'tFpwFJ~!}T S~ g|+` hȺ-(#g7*D`@b88g  z [U ~ Z,u**= D RR I`w Hq "1E;0wBH>= Q-L L H(5NB5 ?gA{u\VGYzhЀ[?: z.n|(|AVT v$2?rFП(#J9o1OLTMa17Qu(x`9d}`N.@A')}S<l@6vJ4Yd#Bߎh͡z0edqް4hD=:uQ9̨z@8 ꔇ} C!.k0"0 - <%tp/p>G@ A!N {kR8 x}3`w-x9ʐ!@# dRyj&(3< LP޳օ&꣒8_ `$rJYHY cC4L(Yu"")6Ҙ`?@ m4&wȪM 9 >јɫY?Ĭf?x'1R AT4_4vȳYY4C:@)Yu ߥ1}Ճd&d[!z6cܼ"|<,~9jMWQJE[ 3F3M.˰{C܀rY$n[i&`Ht0,G@hw <Wy@a4a-;E$jtR!^}|'{8QLzk0~6BZ,Lz=fg`v& d( .0 t+p<@Hjuybu$L!ذIБQE B)j ~0i*1+ڒy6j&Dhn5(E;V [oGPJo8b 1#e :op Ϗ=; xbA(t}Q;pI ^Á8 x <`@b`\@`0-# E uBC!6Ek&nniddL_KZ]i CNУHg ;C(N@HDi l lroLJlpRBM#I!B*b |"`6>@Zo!@6@XX`et/(~Z(5S `hG22- ni^$*&* +CtE#hIF@$<+AËa샡&&}1- √ hjz4k""b _. "2([ nmf@r@V!P7aЃ&c#H^dza JB `vc N'3("h2BD4E><#0 C j$ǃZhMAFC4b]Pc(+0PeE~c@ l"&?dJBvpP"lPcZcCu9b3,q侯C+#,i%`,P'RJX3EĀ8eC@9KH4"zG)VDZc`2`%"lbY9C*0|_ز{&(r> +#U]Ŋ[ m2va`dnZ*>gEAVbR84crmt`"a:A~!q+Hै[E$,@gl0`e*tC0J>hDŽ3vZخW-?vɭ jȚ9)fPy!8 ̸60`0;.&L14" @c>k i*沅v#8"+~!>iG>5VJzkBC4(# al%2E. f3H618tOK:D -&N/$TB.BPf^\,VC(\OD@@Lced2]/,< "0W"9Clrt&ZC4k8+4f3_.0c.GBM/K@xw6R߭7n.0?%!IC(zcN0gtj+k_"Ʋ(mVLbȢ 8, NcbfTfc.C&9&bAA`BKa(4+< QdS +4#0kdHɭ":+c=HncsVcT@Gf9L #T/m48F8(boGfDUNRJ70U*4F4EX*|gBXX$M` |x 74 $ gc<"1'26aaZIE92aE0a*4crHD$(&_0`$6Gli:!B">FRCv#-DX~rS4(`` W-cØy%H$- 80'!XPP5z\Y8"(#t $3prmjbXLx/qB7^ f\ !J(]>VFQGbz|f@BAD x2^4D&q`Q *Y&#nAcԶg J)&(D1㤥%wg*H4C,"V`èo$2Š1G/9j@ add)"ЪuE!#0Ek[#$ $5ɏb ~!s`\p`X`¦1e4/A81+m;񕦥E 6@f^2)pp:,ϺeÎcYfڙ8,N-C[*2B,Bk  Nk(1MM!51*{ CJУ @…D~3C&8&3HK^PdQ!棂$Ew fXUE^'uAfBb+%E$Qb7x#9r-:B(CH6a禣S"fJ,&790m52ܖFbM򺤆4+BY9 >c4:h2ݲ36(W \T@* y&4?ǼuC*fD38rMzFpC3b` CMr$"'腭.LWi2< b@r{#x:V/鴒5FAøH2|*`z^$iZWDhLLf{B0q.*h'fFTO|-E&n,Sx"\BC%p!GQw'Wefp}7%~1HŠJct3o*Å60F\LN)FV]&bOAJKdBH,ƒk Y8E*=gq5",Fq>~#xsăQ]6JwaъD.?` 'd*Ȫ\N!CDsb+< `@x\ D$Ci/m  455nʔ =T-p>`d{  1?Ϙ&ϰ$Xh0og_@+OL27 /{ 1 j?fl~ `;z=_/]c@ie8\O淄 +-4@C>N1gӚ> (,dy=>8.ͻ H.,Mf 2KZ:,| -i,@0ǹ}*f-~ A}ΟMpAlIm婞vG - L ;\ *Rڸ~"Y}p^% >` p /to+}3jh`4*p"@NP:A`*@1+ןr iP 0. Ǣ#`jf#`|btifK(9ؙr@ Zy؏x J|$ 䔞}H Y1y|ǒEMƄmퟑA.J  1zl Y!}1XX /y`,u@E$n;}F 6z|"ʺ&|*ȁ yt.y'qz `sN {gh;)Ի p*~L2~""EP1)|aLrgsYP~ @ A@xD ! ȨH|>ޮ42Bc"'{_W@O[|FPPA8ߏCkG~?@0>ռ {o Go( 7}qG0$o#潍}VfΧV0 ^ſ~m8 ~"@iGpxw~=A@0P*z r '0'' h`6 A5G &`;k .}2@(  j'궴@c8`1x|gH703~K*21! p)zК ~5qx|,GZAVoy"KRz+m 0 ށ x1\}k+Rg y9⡂2'Kv3h buF; 'h7-B˽f @` ,0|2!@.jB; 3o z 9s/Dz} [ : 6< BegbzUlh`#63q͂6} `}')|'yǹxx'/8yG~kdƶ ǁk-Ms4GMv(gC4l&zF2>!(&~zj`dDg'9ȯi?9ПK~0Å= ol+FW$(!n zP.@z>2|Ϟ!5=0\O$|:@ X<~1;ǹ@6c.Bș Zπ c@(@t:1d{!=@k䂕#gB*`42ǀV#1noGL죉 6@0Q ;ӀxB'2> ]j@3IZ%miP> l65Jp6ƄOe !DG^ F,D(F3OU ,t%~ր#N%pF#|>ω`6>OLԁ} ؀&#X,HYq9qb>k |Gڀ B@z `αqd<, 7bp(_)2Gacgt9[A, X WD+'c^VFOF'N{l!q5DT# $ @ <`=* ĘK;w TX#AxbR~0|tЗfPqo%(A9 D^3HGB,"T<)ƌ"_1\:a@Gjz{c1±-xv^I %jԠ:'e 슯 /f UX`U >4r#B p+!PXv;Xg[2 5y6''bXdb (y1:05`<!(#z!hѢ*s>cfBxZQO(gfraDN$~6F8|H2Qh F{-OrO'0~vw=(Pt[MjaB0Ge* O(Ne8i;`frW9#Y|f/ ^5EMPy1h]EY07_0@8q -\"RA*䈴J Pqz-Lx`<g(䙷bO̡r-E#e@8f\o[[`65$~7G#Vq ,v4j.Cд(,r,% b,\B3H81t'閝"-ic3b :EZ:f>DEҨRI".2-* @M b,,LH-D$- P'E+@2C.,#02*Ab+7%,G*> hʜCF 2hZeX%#TKH^ézQX%D v/mUaa`W<```$eg$C[xlViC>CbAv3qC 2ʢt|>8CD@op`H/Úfb*oZM;8nB ;:(&<>ƬM6dCp;6igBDgR e*PF YF]b:cCa= ~Dbb*/\,BLjF uLYPV+QJ܃mB,/J!`P8U`"0bi^8c6#,ykД;×P~1b(.9/iÆe-n,&H%18iqvz<4L$ 2'G^2FL@8BaAA4d x0ť1srI,%"<ðlú4ñ|mIhHČ"~CwZokm304Vi/w Ick_b+b2#~`,>"B,ZC0y,-  v/TbT'ɞ ʊrhYgNE\`Ba&#.̥;8(a+v @A` QCXDW~47.p>(4DFT'ƈC8'i-K|(3p>\G}b$6cBTQ׎@0@*@ BuJ\WȢ((:cDd:-8Rh ;G EyrCǬgiIyd7h׬He:C,~cd㚬g E/RHD8A9D"qLUB=*U,a# ߃cO~2!"r%@Zb>DDT3,;4x\FaphTPBo:Z.C)6't.24L@,3 %@I. A>PM82g,$4Ct PF1>$*kàE(2*AALx:EP"qF޿xC7MrH }?C!h|`PP0*`}z9rCT c(9eZ8y3iOc@F.th 9=<"V%k\$<1b, 1ŨL#33*̼|mDv"[B;ogGcz|cyAV$6и><'l ' 3Cc;Rr`>RA.#D\\c.Aff欺fb>D`%/EbtcZ3:F2PG.$,~kz=`8V(8i77qR(Y-6a\!="ڞ"o$v#I@F*.2#~+F.Bz'Jwq-ȃ)3DD(i>΃"Fl8.@"5Nc?F@8@f\@ ycѧX(AuZFH'WDZ)vszx;v Z^!7IMlU5Z3c̨:`Гʌ\@/;QM#ņJL"h:梣Bj\:YT244BC#$,,.):")*6sbq:AbrhpLЬ1`'3`+ 6&mI#qy,tʃ4\X¾.b0()E@()0/QF%ClL2HEBFHs@a1":\*.`I[͇?5]}ǯ 3B-,ZRhYL "CU[۵O ##sI<C$2|Ȫ (p>/ tz7~@#^Ge^  =`S~p@`8?@@ ~P oDWQ 7ﰣ@GOo ߏA h ߁@i|S7԰ -`& Ͻ~A>k@* ^S~/ j۫1 *-`+ 8 + `)`'"0ܟ$-I"H܀ Ѣھã@}y2'2'{#MJvBobkpD8{{(`ӟ'8 , @ .uG쬖h^Gqj;*@PG NKp, K@ (p8P$} `+o{ ZJ1+# y@A4GV3}@-՚Q좤MB}>ܟp] *R=. w#J+Ԣπlmںq %I˧џ }g. |Q|UK!NAJ2 9a( zǺٟ QZdkVz[)}| 'zP2 Cd,W"{›ڬreК,pN#e/;j܏685_ϯSY tBzJb8} {D ^@ `(}|h< L@& 1Xj~k)"* W1탟9:*8hꉞDy7ES3@(#B{g/ՀaⰞlj}Q˺Ш`I`'{`K>_ |g|@F Qil Wȏh1' 0Wz$j(zy|&d|M,,;V}XZw@G"B avmf'|Z~|Hr@Gz93ZC7 !>A2 ݏtn> tǰ!: *A!"D B A`(~yA;hE%@<!4|0=ǣe!#aO<1  #hH4k["2@ ^pa98Ê;"@J5%n\Q1!4%$ GiDgҰ(!!`` -¾@ so54Nkqw)< ס!*9"dPs? f xT b) YjN1I "v>Gƞ$Q~r#'cUWư/l*N y7E@A(#ƮrA#`@?ׅBRX\ewPMσ5o iU)L(\JAi0\Lw`, E\^b tȡZ@)7ǚ/"R&B!+JU `@0&5@d 2 Dy`Nt0KSKWJ#e!3@9X# 2.%蠁!9 AU䄢 C0 wLq铠C$XC5K WDeCZknz\z]iW)BZg2_B|pv"tfH`@ŁR\ {&1etGcvB(*(E#Z ,FFqGeZ^_RjF6B5͆@eֲcXva9XNxq<s? WƭFe,uėw@j6<@ sggD䟓;8ϐ%l?]W" ƺ^îG"-}* k&#D"#*˞gN,#?C2z"Mʎ"(!f&!!/L†P"e} !1W:d2v{D&:]b&O2e jAɮ( )$@H8;'BcmdAx@pjƶc F0+@+s↏ڪt"x‹O $>b>$ ; ',_`.NfF 7AyZ9J"c)4"= 8b` ,$f,>fni4E $nCÐq(/AK"(gmdհh$Aj"@dJl&&adb" /M4S.(+*! >9hP?Es q$'^d2/Ì¢? Bfƞ%JaB1<> /P#@Ϊ0bę\afdfD+Gj-dbM^^Z5o֔_(0W :1+FFuk*21.Wh\@,2@~@pCe:aG8G0,"fA/` D-GPbHg>/#, ?"HtQV"t]b體ōr&A!$a?@.;.Pw" @GB4`@fHju)#6@@b,$h0o1jFskx9cxNbjR{:ya$g (: 0u"gx x_Fb%PB!$'T9V 8e4dYv1":C& c缶d8Le e]'gã\>5.qZgt<؅>"(,n2G2眧h }K$R5bDH% ]L2+\yq5:z(>D`0FBB=0B,$T&LEL & *:f"İt=h.6@h&^ $0NjFX",>6Ǹ Pea6EI"&r J:&&"VteWj+ 2.d@?O hA` h^&͜I-41Rl@>! X . Acs+B֍\4H(o^Ap44@„Dl@Hf|F 10'T.D~e)2z8;p{5"BCX6CU#<Ⰲs|C?E>pȵ. ,#|W"|*η\{TWIJ8aVOP(cn=DAWZID"Y?NE5l2Kxn@oIüDfN>cu1!75dL=Zdg$@Ba X 8cy_#l>Tdx!CȢ@koM`1 t`G|Kܴ 4e;P9d&4cur@A J N*s>>M$v@,pAB`vkH0/W؀R(@s/$tHC9P0r M&Za"bPl(CfB cT- x7^g^PQ!B~,:DCT<~#+!j``/0?7&&g#E}t$b.$!Q/ d_HT,bxĞ.Huj22,`^$.WdfZBp.zF #@M 5"(s5#RdCĎpx.5#}}(=ҊD{DDc8w;\GJ! "&C$qi|?XGE C0Fr1D`@g}fJ!.BjJq-j6T19`C&`xh\(F HmAcdqeqyb=`09@&Z-CqNȪ,-Yp= H`wKBg)n3"FQv34h<"Ƙ"Z6B~-z6(* q3]5E#?"@NZHGXn \ 2`wXZDnCTo |by#7]n@H\v,>AF (Bc" ܮ*^;clFdi.^05/AϘ] DA-yC>CIz5{}L"%6"$hp ^*%Jy b$&Ҫ`FձJ/}6ئ  8@i̞cB-Cx.2UݒfNܾAy4QRc"6f4W#0&.>f=©L-tP0#DsC;">("|GS jh%" fk ,k fV@>a$Y~4tr鐩 n"k/~DxUңB;byS>o9Gޘe="/ GG:7iC 0b \>4܉^FQDž@tW6W xB""$=PwFFv%p\!C,dل_7̫>(D}]Y,骘JA]$";DGk#"-9xȊ ądͬ! C_$"$^4"5arb*1LbA.ִ!'ҞC#`נ i`@f`\aP6_>q%BP0.?=HcB4ycf^ҧ/c(+/'>8(g,u:r>?:1y5g^PFD[5 @(~?0  <"@ #h ߠp8Gy>g|@gH +R5@_~? }  @0H-}^o(1$jk 0 ]-O`pS~?ZǮ_X?_`W=2> =@`<_Q?g}$o; Pi2K4̟ y`h !y~hkA8 *$A2@)=} `?gǟJҶ*H"8$ (&}}H@ LQZ $**f#hǜ-0a(! ASA`c0PF=\@,!@l-CO(nFWG4@4,LC Ø[+m(~akrDZ@Jy` QiaLSnyx@",Ch&%PJ,{2=J0Sru !z:j@r(rȱ8HE>0?X:R>PlO!#M}̠Hs_3@ {<CV<"Q>1̻$L{ e-Ӓٳ3)2dT TY W VRA!vWx)Lf/`o OVSBRR7 ~g:C*QΠzB8l@u&~%zgrh>G')LC!lIPz\G4 O+4,s0Z@ kWF<@ 1@&` >Km+*BKQ=ti\'xπ@`4P؁i:N(z4\.# JHIP~`(L4!m.w2Y]h>@:2lpz`bXHx=tѐ PāsIB qLL[B1!pa `=ǥ!}&BвX2P993-!=^KpҶ=xFrb!'"{?I<1;P@q)ÂzKp(&.<`4]7p r>0زӖM0H:! 5e:G[V*F {e~u>gRPs HBd+nв'eJWcꔥi H;Ơ1 "QFj: hfȍPI[*M$Zn*"3`3t䐶AaH˥A>5`tJO$G=ve1cMxgX/ix"04?Goʒpf$6w+1 ǾA*0Am!1~>!5&$ `ƅ4M43'0 ]l),Il(M6={c[O, yO4!Wf"yI LdᏨH<1 ܱ}rkπ RXx^?/EQ8WGE)jϱnDA',+un@yo q"k"zN~ !!m+w<!`u!m(!  F 62B;rAb: n0Z. C\.?v"/A؊Fn 6#Fk sJ0cE$"D|=R 4awPĖW EdIJM徤$" iJD(&ZEN,bC{`T=N+`$BHF8ZJldiFor' .iJ- FC@p{ae:D$@*:!-F2+6âkbN+b!m&Pubzhΰf#=IH 'cf%`W&F;Ρb!`[źN1ڌ)c*CB+/D0E,Ce@rTcv0M|'COMJ) 0bdCHV"Ǭ>FD)6}Sf/ŀb ς.c0㚐 (=dmn0܏KR<0 匸lTN!$fiC#"nh}DL@@/¸K#C#\ƥd>a3&V>5 i\ktt'+@.'@'R%=`"¡%A'!#RAv@ " *@&R@f!H4qB'~ sA,)00L`W r;4EALqQ($.E. / =cDS#RO-w5J߇>I)A8KR,L^)HX&T kc a9n@  F5Z^M !tjm$IcCBd*+Bt,\7c-niRT辋fsEP"P NpR'.lXºB&)/r!o)B"e13i({Y"9d NpPcF^:u= ! N v@'D  "Nc*iF@&)#@~@j`$Z5H4" k#.u6K@$8H( HTazκ!..ڬS9cC0cG &G)2\4>M(x!C*< *hwڋ3/R dhH+eNB1V"v#Z)\K kBV,"nj7qt,>4/^B5 iDD|xei|ebfeG:VW801,!z$ib$GA "!5$ >bn+Zd1J:Ciuޔl18G82M"z +,cY*LIRܢ/p61RH;t "H(`exC!_r` 1,PIGKA89,*.t>"q[|W"xeBیDENHE#o@n!pBzZ9#e&o">+|i(Уb H'WrJffFTY rCNgj)f,,&oQyRpX5 "Ö2"2c4HyT,*"GƑ{c0Ou@ \̅c!$e 8YW1 +Ff:vmV4 \PB#%5Mb(/f^˘(`Y e|чYi #\x(s/iLf㳢i"jNH "_olv;0`@f.eqz3d+ Ull<a  07ANe 5end&`/j3iudBfb!,D{md`"vc*3$ Y";0Bw/0J/T%|lc58M6bgvYuP-)\iT#cTJBL$OH7"!d^f". H8d>ˆ$}@ 1 8p EEãKZ;s6"^ck AHNb6mDN4Fqȸb&Y( "K\+q4]ora|]!!!#[V: <@wz`Xxd7P AP8y )gYǡ GC["䂁Rxlz1H@}{M`GH~zN}Xǥ  z,[~Gъw9}i5b {`j{ )GyryΦ@$H{g9~M7hCj|ga~|:[- COB$` P p"<G`"|ǹ@P]/g#*( @XZ("|FB+rJ9FyDq"𒮨KIF{g>SP" 4 h2H~`{D1g+L}k>|gzeIzWNuc@}> D 03d Z'y  CGGB;x*㬇'韉fbx"r*P gg=ek x%X_y_v@)̋s^r:|(@ @P7PH,  |=n8l4Egx R~<qG{߰|? w0  `}ğX?p<~PAM{?wx} ` _8 ?_oʁx0h$ }p?z \@ TA@,֭С(pץ3OxD+2 mɢ . j~z;@# H!X Fc.YթH”~* `pGz}|6(ô ŞC'.`x) g( 0CG) }~|9@ &zGqv@'A~yPX<ܰGx`|'8m0s/COCl%""(T,H+g`0 #8}{+h" Nx]T<-D:{=P4'[ I, 1[z`1v:j"'n @bҋR {ȟSzKˎ!| av騁Fl>gG Cz5Ğ-gxK"+ZL C*,,yQLyr, 4"RtD mƟzWvpR.+ndfW?,K@PyjŭSw,ANJ25I(kQݚu>DZ5 U0;G1)vHY!C",FND"GhҐ . M&; `<`D,<()^Y&= iwi@!$rǧ8&?g G'4zqϐ A۩U>TC,[x/@(9܇8 f^?@3p?xt)D22Qn^e"ʄSg ل.yL@pp& =9]=;P#`vu vɃ9^@ "rSE#/d(_2Ѕ`t ppE1D(fLׁv,=CR$`P9/fAQP1PM Xڈ{ K#2NK=TUϤMmY ]j##X#>G%Rb F>GýDF31,F@2jX@qm`1&ۀVeK#&mL?^aC@!1/ C}%T6(P$ʴC)4/C:\_}\ feDL7Ip8Y@Im*HզHJ'`$tJ`jz:ș] ěYr,⌊0 6q.ލ-'e%?w ^ 5#{wy^좙teXPȼ8S$4 `>.swy]R%GzS'Ez(0z}>> b~;Gtc> wXqXt;(pϤ`[WiD.I #.AmBnPG'F# AKC^7#"2ׅIY"FB$3^L$D J}$0 lw09>#Cf&6$dA(v1"MfZ3:"$8D7@@ 2(4ncÜc j$>D8 6"$Mb/ʍ( '^$ΰT @(1`,aaaB .*PGV@3"IbVwϢIcd6;AYĴ4̰# rDD % :Y"@!324#D[ CBPkJW"cb>5HN6L# 2x >7q,Y%X$"’HLGLJxH"8"zn l@.@TAގ|KD@P0t(p+2Bæ.1&68T(.qN ;ʸ.lB:j RAzE $Jax@-\j#8;@R]拨5#DOΥCCddS`,R.$O5""$Cs ∸,v8}bd` |c^pN"Ebr#c'32cH)v"h3<+V4d䚔cPŠ0qɀqvgrѢDI123c$)f_̩)(qCt'xs"e!AF @7DfnYhNN?D~+.EbFB!,^ü@`:B(X^1=BQ%.G`RJ@q5C^c!.ü-HP+6`F @r98$.Ls b,T;IGZ(jn="/@)6ְ.jf\A!@.%~`J(5E*/ !FH)#n7nX1,nSy6Cx*D1a2H` 3*Ȯ!Rr1K}d^ M .&'1D`I&e_/@JҎDx .N5EFK 'n"Z"3+(~e)wDIe8EB8"2DE40oj荐7b6DնK΋1b!LLn lR\bzxI#!.`gև#w$TC!'w%vklBThd`.` %JBC1]$5a@.5 $@4-q.BIA2d,7.(ֲꔤ]."MuNK)v#|HCWCCn[ƈc~F D.b/Ki((ƶ'hn'hEV岏<;B&t=![ col%=3B-60b@v h YN3J> D^MvE$1q9B+`6h-yS6℘/*@,cN$"3[)5#^toddA -D,rdc.vbg"Zd!MRI/B;SfCJwnF:Dw87332X"LcQlMCFJ#+l~>̔gV]b|"(aQ. * `t}Ppc:!lb$D˙4feQ*V&9(` 0l3NPgsl}"fcP 9!Ck"8?I"fA26Cx7W:  q(0A@&rSPIh+,"c >"(P*tAp)b.2A`8(-q‹uŕ$JNDwPD2#b/"B@'A!c˞ b Ob5CP=>= "dg5P.5 vf1H#| anP,e(fdCFWqh|DCRJ vHp"'fQk%bl!dȖ,Xl+Ff4%)4"=8.,bLĎ?.B&}2:&'a3ND,ne)F(ɣ#::dB@pH"1_rȇ EfM@_)B=#lKI$0e.y[ !vH4"I$ \c^‘y""ubYD]t6-Cn ^SPYcJ?BIFk!GJtbо z)?[RDMs 6 /Z64 P^i$dØRB3E%,1I~DBq)6ma@VX:!jjcL)/"K"N7D1j5j1kTPr'j' !Ӿd^2 fӝ態ix.eZC-P1B$זgfCPFiy+h . tqaqk)f=KI7X&9;(jz2p"$7En0+Afl4#Y$K'Bv|y@j=n#xK0RR ̀&JRJ#4KCB=&V"LHM|.~?Ķ3dž @vK@(#NcucC’ct [ L8|~>&B%S)L׉qLUV#&q3QP=Cf`BwnH?dcdXА:w6$X#pd.*CcNvd6v8@gn'  k_=mo%HcT(](~@8z@` WX̛#-i% Ebqa@a X "o` CϷlQ#?ߠ0 $Poǣ7@@P Le9h,J8 ҀOp[ ~^`< gw}L+ hR%Xqg&}P`(4>t`ɳOeʥ,zUI_@p4} n3& 9}\ @W}[;`P+69~ Jbl0 {3Ϫn`z? #&x*GʖjV} zg{Gng~G8pZ}'$ @kI k|~H@,4G?Og|| jʏ!"G% h `hP bxxQjG:GSڈˈyJ}Iֻ+kf}캔z5X')"Cy.|J Ψpε[|2$ρ r Wm" uǙ-йy#ۗOg6cp=z6FǢ-l`,^Vx$x ;GϽ|ɺـi)#lM*|~gʪjUǡ}g;e ~% g3˷9uz,I<5+1Β}0,|n3{&ql9(ht HGwH @8@0xHB@@@H0 0~nhl5 Ewx V}o|^O GO)f$ >W0@Bt00$|`7 n|зݤ`v~@@e0>5K]K`}`|?@Eb ?1>0"?>ޗG?r_/7@|*~k0"`zҀ3H͢-ꀬ0QL>ox 2 "T~ c? [ @`x L)ҟGGYMDh'q)0 E D҄r|+h,-<$NmTĀ73(D/( W(5%(r 0z䪞ˌO11Ԑ(h8&D xB0 [ 4&MJаk`yqa.l Ψ@/X: {yǘ  Q{GHYhEPr>x k G@;!mF] `:g nh |IzLg͢:ZB,yϢA}ǡx(~;{lEI@QU"9}G̔)AyۂʺI9hl9к'.^}R}g@F.ht.7>C}h!# #Ξy 'STi *<7FA , ' cd 1XyVGy|ȝR\:" }A>< p*6ۘ1 ^ H >[l3*ҙH )RG45iv>pY0@A8&3? !8圳%U-%-(]mdXp#o7 MȁP?r(@eWJ9g,OvGI$$H-| oz(b[L[  f:#+.E)Bn1!:sO$`5 ɥ"80|X et 2lt :Ex XĐZ@6Oq" WĐ`+p'ǐ?JtBp><BpEJ)x BŠr-'M7 ȸ5xŽ (%Bg? "AH ADqc3[?!ÏHߚ\EFp_JA kDQC|fEY.t.Dv€A [6 =Cx@BG隲&=0cT|<@([ TW&%p,fI0A >XК N,ED{OGʵp)gͣZ>GOe,=``$&tBH@DR @b3 x",r' |;C G~?Ǚoz!] 9s9Gxa6ZB0F1tFCH!!rV)s *1bj `/ڑM\qoחb`Hx p v@d -ϘIgf9t0fd6=ORM:DYB!bbWrF(pBu@4BXsuAAzɹ2( Y3E>Z(鄞e@T֯#qfvB@Al%JN` 3I c΃rTNR+Q5"pݒHA GY9rx[eD5~< d5l"IC{23,.r8Y K,?c9d4FHD ΋s#{^ p10r ni]0Pz@<\? hnSZt'5l,;ЍOwX;Y+/g"#J3vD6P-Fd#06p@$DB 6R\~cagazB΁ bDNJpE lz(m\.ţ"W&&f lZWFLfc5F(:’$B-bM x#*Sc(0AAE6G&BMp5#"Bg(ccD8bLp$,?c\iD,G +)AKd .#6RE$3kx?bI@N̸ɐǨ3 ,@ėC0dT# cRcDCĝKF$-Cfd&f| E-;/@cB:4$')8\/6>ÒBB'6:UDV-M r!4s>M0Lb"B >B0{L,LSD-}",A&~g!$oiZH ~fdJ~/gbCEr A/t` Ht6 N)2S@#z9?$BchIBb6R6G7,t-HJf K#!f&'ǰBc>xi.|"[.LXfFz+0C:*/@$4 F@C@L!h2H @.3 oDCdncXgItnlp/ʗ% t{BdH!ZfSfPBA.pRLLQ'6)BpcR:(v' U^kgTfH,5d-@A`ZnPAg 3 2{!$眕h@_#D l^@p&\D,AOA.L@\n,5扌&,۪VC;-Ƅ/#Ǎ4,vG."|ARA-LgZB*4Jdx} ũhb^$8jBw OK"3,nHB%\ Kb"\9""$Q»XpA"(k/,.Ώ,s_h$o2i@J֌RT@Π1tI0/#D6b)6 FF'+HDh?B8," 3[v$~œɖg1oV6q!N}DBAR'X!dă$nʢ({6#)LR.`FbS⟥)r,B$b /`-!?1RCmⴆԒ 0Ħ 4`"``2OQc'Z868 ܌@#jhkd51u9^nnS \Q" 2\-+9 3b Apv9.eXP0+GR颻:Fb%p&|C"eP}){{Z 4.23b)W`tnch0XG)  $ :ĔrƏҺjA]4ۨ rLΚ+rB,$hgs p chAD8I!H",ϰD!G.)(|#656cĐ$csêÎt!Ai c RĐG#m"bK*Xh (C-IjH>"v6@%/w?3('F3Z⼬CTE5W<$NG(A Fs680Ozo,[dnRDE#T2,'b4bMLw@! JI Cb;ϼ@%De;eK͂&@lVAd۬B2tGR^5ƌKgBAFB#_k$-B|NŒyEY@YEP:A-@Uα'IY/bFTwXA2'uj%~R. @$(478@a<H)"~1)ZCd$D,8E3ɖ4DPգGGxt!3`63h.@UD4#f?CD'($}=-'{^'ASKd~2&`G!\` b (S!&CY.X#&,VgfE.ӢJiaK3zDFuG$rB@~p ~xAa U|/CqA lKiB̌$rC@B&g )2?HTQBBEVb1C3$~PMg:H֩xJB36G[hRZ9 ""&DH0vNH삂jDxunc<` f~:8FI\f),#c$ħ 4Dci{b ^CQ g>)")#V/oV '!W }3}` >_0|dW"}? W ~dᏗ Y [ (,I_oC >@g`eޯ_#R7 ~O _s|nEd_8+E.Pګ(`%*V<@'嗣2{JG GȀvJGuGhB)ǫ&~ JCOk0լ"v' V~1 Z%P3&I+41hlI$~KH z/gq R (2ع9/z{TƄވ,@X HSȂrℳu{@늹 ,:ɀl "* |@\'w (@;G}̸GydzB;K!IԀ .3J.||G! B~E*%:r$z anJ܀m2KvF,0<"H(+^T`憻h%y`y' ~B !'y Aj⿀50zڎ_9 -@!?!nU. Ė@1`w @8 6"8B@0p.?Ї2`H  ?@zj3@@ v_~=;>0C :g$vA0~'>PE=W@g?p b/ K _K ~ d}G`"b~R Ȭo07~>, 6{>_6Wmk ]ڀx9y)4@( ug}ȑ~) Z<0)+}"l4 <} B)@0@}@4~'[B}G}1X `"~li2}}@[j} $ER;IgU G 0IRgYFk[z #I}?T I%!5 n8?m.k~'$13(#T(>0 @( 2A`*~ @hpU}(@k9DS{:* v{⁀T '1Th!B8#GzG!`xuz͇SNg2ĴGͪ}8Z{eō$:@hjTgomcXZ\5/qø:OͅTGˮk! v}{ n-4`+j{oi޳ $@B=hM"-Y$W  2g;u3Vg+.SrlpG}\z<ӱΞg@a ǒzh=:>G p #w=G`v@0ocj?@dhh4! <}A:8Ō@L>G, h I(Q>,1#4DJ3h5\t0&3'rb4 yP7M6.,ZEіHη zP': )s0@ "͢HUR>!s\A<:a i'A 5·,d$$LZX 39z]K2te"|9|c$P3%"[?|ÓFh\p(,Ӱ(yձL,C5B޹̘ +=\p,=#7`) @(13Qj ٰ15VP\a-XNX~TZf?fd^ y$LBC9c@c J `LBn.NIbZ&i$]D6P 4Qм;%,A bKE; #"q轔FyO\t2X1Gb diezʘ "$ XH %I u#dQ aHARr8㦄mS@4ZM%HzI2RsB @ԖlL$) 4Fz %aIbӺM>|EpR$  1?S!'VZXZUX @,BGu 3`S(h҇I3Yp(9@IюJЊ$Mgn%IȆ4bnK@Ȩ2.An4 sv 9!'&D'qABf:,<@!L;$̐60S1LvN1PK,* A%L/= $:67F RCSHXD @'0c!(Z)r<;HqR]K*'у(Ȱ>p>x$"!`,`.-!ʄ` INZCR&!$6N׀ h:hP`lZ$XDjON*`h1^Ċ2`>!`$AX, `0ETj'|MfL-JB d)HC~J>$,dPl-PYaA,!aAc>4\iTĀ>3bI"pXчlňC~88!!jEƏUXIp`2e <b ,(e*7 ZC d;Zҏ}8$(zI:$څ9|{r?BY."BFV*ohcr4Hp Ş@Lb7ˠw N3 A$K8F@|Q]" AGa? sY8UbN"nJ/j)BU `c7l-En@ % Wc.Oց/ tDzwVGh:o`d$?J(< F4DcD4AG/=3R8ЏDF(p1 L(lHn'ff Jg'< >P a@BŌECf-z!!6gy"tF"%k6$pde!|nI@dHjA`"z δ(O)dPBCZ0FP:A/I)#,Vr+:]$|,6@'n$0R7N \,Bx dKogF(5&Gڬ#j=I- $sMl! DD[VYK02$4cC!. }NBMDA#Tth'<@F gy-C[ dRh? Q;!tdTt,s01`cC*Hw)M2w^>had!AD2qeTbêCdCt; 61v:[~NjtŒ"8R.,s,6KH|4@ 2<$x>ĸ(!HR6sTc xe2/IH#t|.zoj;$3BPK_ p!HHB ĕb(jGbH'ŧuY3Bk3bG'DD`_n03-&G<.bCMdp=_+ >#'b5C.L<@c=Br=s=ubWA1,"He.#e<~D 8G˜sn4Nh0Bv3HTY)D" cBY9(Ll#Y'x`dp$\qB,vZ4tE5<=ԁ2g@-kM^BVjXMY ɪ+`-@$"a mjI `btf(7(p$b'@8wL! @"bFZ-KC@ s0_(-#JibY"!bx|gT4:WȉLNzf#hM7/C F}"c <$pT ,@CRF8$NAZ)B:3'rlpKa\˷:p0K/g$Z:f I'e6ncMm)$jKB$Ja_lT)evw'ҋCC z$H.pc@$p5s.7&USD֒j"xdeb 8NB o"a[ 4$ aaT,ETk` -Ώ>'q0D.!R\#,Ib "J>6&/@J * '>c$&r”I1=H`}8 ixh/T+}v CAʗx 0e<%`闊K&`B*}xX@,B!<3"D ,B 0BgB:SWG0*"taf=#dc0" `y&EjIc$@9D!b@ SIßA+er#4x"k** 3"Smez0/Q=d$Ry46Mѣ 1cxY,?@ @*oa"0HR B#k~؏ij?CYC$,VBF2FH\"wv6=.DRA )C*֭^[HY^ !^ UF$L`nJ%`lgTFU+r˨"tb Z2F&Hy';#X-E,KW|0,JI\& @` ~ao@@ ^ }?b/`ٳ $A0?@of>@(~? }_Og-qH yao`"O,b@'`{8 8pDyʞ'H[[ `&+!=o |_ǨQ!`x h40]&B/M{^w4s*`hiR6{ }f qYAbi`1w'Mbn.(@K"  - Ag8 g !pJ`Pŀ (g^gf{ X~1w QY|jy/@*ȁ`  VK$j{4)@J*g};Gr ϴ6keگUc+ÀR1ڊYhPCP6(Y`|@EX,yv}E~%4*JpsB|3Rb9vYXC|M GHxIAz6mxBgH{4yI* v@uLXjh>oV"HR ~xh' v04d|s{  E(}-48vFj[2xIwA {b,|q􀀀 @07& !o$ @&=owk6Ecq}>.+ ~^ ' {"s087 >K/@g@oj}P + [|_Uh6GPWh@P`  z; e m%m{@zw\џ906^ }ף|gs:. 2;2/ {gD`3'<0ʮP  (tLe~|<29'p `$Gf`09`}3]-i1Ӂkt>hkᡨ*G[=H]y" Ǩk6 |c v}J3 $Bc`|xgx.\_KSNStt}90~:۞G1C` {ltp`ǩG,1K㆞8~R&,Īy9EDs\<6}82 =dr\ @ NpWHpBp DQ 5eXֳ/H =.5V@a{B$( 3(G[c,b1bmǐZҖ: dz,A#dY"@)s@1Ǩ+= #֚6l.AhY!  `( =|B;LfPET> 0lHԸ2c@h7~Yh}$QˑK':* 6&ZE#ؐ^]cŠ?C .v7Fe $zAd#t~Cq |#fZ"$ҔFxY8BrT'q@%N"3/*Ji{q- _fNJΏAAA҃LNI&Ub$RbRc"2ʸ!d0! @@M4P5$+ĮJJ JF$AHL<|cƣo޼b8@-"E*"$9T@ccKyPNWD2x;c-u 2b p!{eWM$c%RD名-~"4"x-$'h9n. O_L#Hxd>+WdLL :2@t Zhp(u$Edp\\&hB1U40Tc +Dp`,". Du"!8 b0gU;Ev+bE6" (.Yh$ Jc/EtB4$pY~+Aμ!al`ΐ! """j*&Ixl{xjj*&cΉ(--$qL2#$`8Īm!.8b6¬7Np-EWS"`52NS1XҢjK.#Xĝv2LRV#*Ɓ%/O#>90dQgE$6KB-6m6<&F<-$d؂,+b'7(4BFcčb!sB,]퀗q-r mN``!`DL@d\2=i=)JVFإdenA$.0GB؂#H>>>4Bz;;`m-jT81"I&ϪidY`4W ā'al!=#_/b h@*|JL^` 7*NԲC@ *-J}B+"B9q@:@P nx4>*V4E7,?*/|B#i==#5Z$u,.o<.2K=cAOFZS5:g @Ƣ]+> o! 6dn]@ph¶0BV8 /RXC =B6'*;vS*7f2F҆r;1n59Ⱥ +nWff-" =?@1N<1Fbx#JB/XG v{CWtDM*OA.n8dG4<#ңU>?&&vEJł{jRⅵEBd+CJA)Rdg]C+;21p`mҝلn+.n(>*8u y^ldTF$A'8},BFxi淤J4A<#!@"dͬ.g-Tze.J g:lqhU#9a$$10{+si2LXӦ@cN9̤I p 'Dk TcĂoY^%N@$֤֣QkD P`Kp@d\H XsNQҊ FXa `0 _@?` `O @@$C#7v?.$b|L 0 :4p8̈ o _@@OX/L8$y{M@oRE&*,D\r  ̤g*f @~ /}' }|1' ! `Ϩ" *n~!`@@ A}/@4.- Л04Nրl À'\EZҌx{1htؿ3H, DJ@(%j\C22U8'vC@&rb>/L8  6@P<(*!|ǂT8X Jр'P+@BU0l|3]G .F5,R%G|)!;آ,q%A{1Lj v@a޼8,-%>@Pۉ;#b$'{vP ` 7콲}3GPrB|G΀H}}=cP15@dT?ߏ`?0( ?@@Z }W>P>~@7{@oipO8%kB #(%\oOw}`( >"/  ٟ揝+w@s[X @&ny  %|o޶dz{(ɀR)}ǹ8}@a0`pI  L0;P?8' )d-#L|"5@ &Ϭsf8}s|',g( )vi0sGYvEA PIúLO72 1|8NZk- #U|gxք` JA0DPڧxɞ 213`q $~28@X9Yx U`ix1 E0|i/.4( 7xMֿ`8)ti}grTcO`X23}lj $_s{P.`1h C*~ { H@x+fzݢVvʶMXd C/]J|H^C8="'ɔxc &jBTkG{fŲ0kLxYhȓ!@(q8 $v=3AnP@r e'$!P zA;@6hX &PqMBBEEE&>lVpdx X<hHdDBc0 ҆D%9-Six'8J҅YcuLjfQF9TLL:@a@>| >Gu!^9cxAG( PCt0NFXY*Q2hěxrt(h␐ZՁpO5$ATJ8 62?ǹD4i[f 2eG}fbjV.lZKZ=U.=!8CnRrNP|{Bל"-8H.ܿ7}e9nB `\:ƙp6Ό#ڛ#TQf98ڡ!LF#F?@Pv+5XwKA-CZS m裀ŒeIX'"@^:4!:elyҠ x,!݀~@.c,j~6 ; ,$?}Y U ,9 %~f2o:@HTxP0yF\ i!}QB,vб&G^BVwUj%rl'42^o̱cT"hThƗ+_x,&^)żH0FPK7D+y|7b(#Q'IEKKҴHlcmh[kN )$@lQvŸvXx6k7<q@2-=fbBғ 0#yRvfg?lS,ਦZрCcy3ݾ!eڨd(V?h xQG@x 9 ;Ά`!U̬VqAY]`,VY0if2cx50vtJ$P@`,`@@>CG|&B}}FD3(klaꝢMiPdb"j0pZa(d-b!~dBl].@C~M- !aaĺ1ǺWh+D |#Ah"Ve.Cbb"&Dj/!ekCF> xnH# f#qDF( dȉ4t$̫"x&!wH E358s  F*'gBTLVM&b_'(Z-5lYC0 AE"FB"m{d PB@$]`"rY6t5hNU< Ml֢8` ـj ^g,Fa(E`2Cmz`>a.J,]dL a.,vo"C$ 3*pK60"*NC0eh+7*Ah+@-P~d-v&f&,#Mb@eb&,%¼b҂N3+FABĞ8J#~#ؑiU,rxk1&ڭⱆ""0=gfd mzWD:&* alJ4/``طg.&boP9Nh/_$ !#~NAf{f7=|QUX1jm֫>!`"deBiP12B$QBh$hD *QC(Z ƒA!Ipa(0+O$N!"!b &=@b &."H hVd!TAa, 2m1 A>h(-HAoju(7+-$U\$bUgXJ+ZX$~PxM)Dr=h bxgjA Z:FEXZN n@,'#(9b!"h"cHq4hX01h9cxi5W\_FgEj6 ,# in1I@vv3zWQ"'j2p01g)>n"0&D.3b=f:;20jUo+nNjg@e.BjN% *51g05D!gF+Vb奁 D#9R䰦J*oT9!,!!AAaaaբø(V4J_zcx4#*1alF+f|` ԅOx2bU mYQ/D\$@v@@bt=j#)89(Ta%'(*P5&aVDm@x!y{``"D"("/d@ B'G;3k(k
CV9(cgLE0D6YYt{b(" 06kv&d~NhcU푃FYx)H'd~/`f@Ɋ7%Ag8x)&4nl'j&KJha١ N?HPC`,ΐ0`.`-%tdCbеipiZ '(e*!Y>,7{ϤgHd:>bx5D( O΍ dYЄ(I&(.tm#>B̤1f箩h,FdLFa!Fv9&@v5Vw-!.LKuBH oA85F]+8A# p &QB=j,wd5LFxwWX(ɚ~dAf!?`:V 7i$1`zf&3אʖ(9&̗Nf1 WM.Ђ{D(vAmdD#V30Oh 'Z7!M`hb"Brcy3Nw$5G\IFk F#F(LCbtW:`Q##'c(ZIP`5VM"LC$dn؃P.0dɘcVCmnLaOΧ8 /NH[IGBb"8LL?D0$3?/tJocw([O4?h  ߒxƟQǛ,@h՟x8/`y@`MK~[`@0@z󟙊nHr0{'y%jh4Kgx̽`4' ~A){4@Z ƿ>+ `H~`3/@0@~ ~ Aa}'(BB <Ǽ𳱨#65)hZr, G|; 3`z1gĄ{sr8+CqI +Æj"1GHp1g I1~>J|={&k})gǩp|'ܬ AZkS80sWkXȟ̓ (3DK33 !`" @P~\h!PŰq{{ Z#{SlD$p!_ !h"'{A`a,$Ґ` 3(x{`7狠y0}/#1<-#Nu'8 @[$#4rYy(`z>4INA1es4+R*dP~&FnM#EI>Rj>*|qPP}w5q q8πbxȮuE)_)M\T 2|w^Qc7)0Bo,Ype8xRC|7$  CPjUJM,poPX#@jQ4xcu(K1iCf,[ :9G>Du&hM S&҈+#𭆈h19 ~NF P`{MiL"K=Oa(ԓЈ@ z!AŐ9/7PrhP̀XX h`qH+?Nʱzns̸(p: FNC! %+7Ā}8Dp_ުBA]:3a=H W^ald)-G 7 ({Rf۝@PޣJ (Qd7zRB.Ah<6?S4F)(x3DN2/}G**젉 M:jGᄚN2S( 1&6͡(XVѢIȑY}<{/^V8tL$7QGPG{jœ@1b:ȹ#o!6G{}`@A>V޴c $(#oWh$]B(rf?>X LD[a#h&fd B,@5cNg-!lZ&o7$9a旉QUՠ&b,@br-+$@NHO4DVM8{mn|' {H>bp/ԋ<4Dydað:P&k6Dm*:@$#M(Α 8d'$cd3Al+:jp ~ $@ <D8g'Bp1+LEDPòzD082a`h#‹:&'ꛡJMRo4D؜73^/ILS/L3&bLE@N*i!G?AA2`.x: >(c,$ zr)!xfn6@`d812A&2Oc.on/$x}AL(B֣Bp>6&XK,EdvEh-c[r8"%/&rh8C(VZBl&ǰ4g*+#/d>1f^vƜ L""65%*VBբh)>4;` G'/dw0b4S%>5TSD&NJ(Wb#Oa9ⰴ :.4sj@ |i"eb~f>2VdvsR}cTBn4D EOrr@!gV A̜JӘv @vG܉,D-Ip/‚9@8O2EX!HGɜM+1-4/GB2  [FB,!;"Iw^ǐLIL'h1ddo:!AxBkԈ0D6ѬeXa" 5%HC4,+5b35(W@" H*d`uzZ.*$8&^_bWмrjVH] <8p<&,"-(N`6]-4 6r B.T (v@y7WٲdD$C)&-=ն6޳̼gA*!m,a&!o)Io)ƃ3DQ\2ld!V:v&BabZQ^i9Q<9:#4B gnv÷ 8c.X r! ,@.kdhAEAtܳ#6EcxAŠ Y* Iyt@ncohfjF@h$B_i)C6D#$.2l!*A켔&+&E%2I/"!g*:q v-{[ǪZ*LVwG-2#BXC#Ud8#*D$HS)0`άx:$"!N _frxa`UBeq8d뭲*b4{[{18fP#'Gzt1.gH f&d(+c2‘wAI딣DVCd65$4"3>ilGZ,lQ -A4=Œf7a&j+-[G`%?IŃUN}b<-`__+ke-tOdyVNA2L,+yL7EzwXf'n+dX[<‹*4.p.2.3.V7*}B d@ԛ|"IB@Ib|wcR'/ZBqXT}2RGתzb5L^.Ec02沓 H..3 Y&ԄA:0̶@ZB+)b84'G^*‹>#gdDZh ʀgF^9S"`Q\b{Jgq<簶f8"<DPVn# á#    +*5|f2Rrn8)!<(1yƸǘm@(^"k ѱ!dHL:D,"B("ElV(4_$@{ Zp}/#}K,H0 DG@=J?OeP.0_ Kof'{4`-.'vA-/.~.LnczQ y"\ ~'$  ;҈($Hǣk3 2H$ȏqP`4}jS}'&1F2  G9Nl>˓gɞqh+Һ2M + |Т|:V38b*~q:Lb~0'z$ 0i~'^Y2J6V𜥌ΉEzǹHhbyZ+<,k p?0(++0$G d˕(H`%vĬ~%\z[ʆH}@=W` A} 0 ( ikFzGVQ :BaP@@o  A"~=_oW 2 D! ׳H7~= 5h8ÀS ~@ wg>+ ? D@@( 8b [b~OO64>p ,` #8_@i0@x( zwP.~H-[Y?@@|Do0J?O0}w?|i`Āp.*ޠ ,.ƀ+0@ :#b6°~/@ |)xG@1x =01@~`a:i~''jr(/}}7N~`@, >. `P |"G=FĀ|,1#P|* ~璄d (v`vu|w, j1j=굮*'yv @"-`>:|@hz SD}:tPPGϙu@9U޺ÑN'{+Iƺ`is0ǫIǟ+<~,t@) !~x 9=W+IzGw煭+k`b|90G6{4uI{.J{-oʉERȀ=, >8`i0<h܉ >Yn[er*^Qf\8 x")qwC}X?.T{4)C=_H\c(/ޚ7 ".@:kt! lnQ9@b/Hp ?eE `!5<1PxDR<LjxA7PmQ3G7܈R %)Z403X] Du ҵ} @<D7nt8BrQULήl@!On˱1-\wׂ& ]Efy'Hy?Nr0FF7Gƻܺ1&ͰCW{7A (q=DDb 5*#oI)6(ķ8&q0 w[ Z:J q;j#qM^m0]Bm $G  h\*GCdh :=忧*sL56M|`e!v7:NB',e`e` ȋTSP~bp! ># IהITCp4| D< =:Qߗ)&}OdECeP7-p m_Ukh|=9姅EQb~luP< >+93Xx^k8 ) @t 7Q=$eȉ?1h?~cln,C@jFKX>e:Y;6%ΑU]Zᜏm #(#q"OhB^RLfct̻GCf_&VakdZsH T} = 1xAMJbō7Ջr:]^Qg6>\u?>x=iL,GiXR*jsP,6Aa!; F; æQcD̪/*<̤@4 `TA  ,MHtj<vz/&k$.InEC: 6;xrrk/na`e - Ø>k1䌓4(A$22F 2;{2W "< ,O$oJVE##n,6h"ȖV6A& "BbDQ 1bT ZJ1@y2*",1c;NscG:eF\9"j"*ǗG*sk>a+d0CR d/$N*$1l2j#z#<# D8Jl c 29''14l; @y2@+bEbF]@(92.zL"a*Aa}#FF-,gp f(/FFF`D'V}`2 @X L;$8DF3DjCb6#,[bl.Vg%c7q甴ڧ5!c2O@Daz͈qH5#Uan'#`B`Ȝjwf㧎`/݃*0C1 c "*a;J P bfz`95&;0#T¤F(m.}F*phUe7Nď@qN(WZ.3+<+,J$=&TtNb ĸn<|jV4r-p=檙Df֣64#9݃Wa7!=Ѣ@('n#$[h|x4Aa@@ S2+h 2-Sn<2p> .{+Q.IF.F,jBl"FR³2 #5" bDŽlF3A B"8X!=ނu$Eq&/see,)F"ivJ+BǗ5# bOI$F>W+Mx$y# vlϰbxװ'c"+&W>t<|yI&be >IwM=(vgN.dsaR6eeD¡p'4ZVbΐ)D5N6c,, 8+#tWbbp5(N/Neae9#ʌ,iNGdn Ȫ=]09La&̞XRaaAc(I#KVdt5j>0u*dpr"-G"r @>p& 8b0$:;F&M++3K?oJ 3;"r FP-wZaD ٸcb5!f,= J&#xBI/“Ȟ&F5'jVJ)BH(64?mRalbJ2cv&8#~cyBF9D1f6 N]! &DQlv(F&m5/H4^>®AH~/CFD/b9RbeV; |IC>3Ǖ*T'(>bЄj-ȜZA` 2PGGNQcI׋3b@U@r`NrA ^z2Cr#DPx`;+*,@E"P q ""."Cc ,c>3Sl#& &$& Dxe2#$UgzꄊTCDN"AG+C1)p*1ç.d!bH 2x&I*bi8tF(EIGEk*d}"wu"b"j 6-v"F4lJ2K.J$v$Cʊ,qI (VDbш*6i1 2pQ xI"..+UfT:"«ޜM$'b1@x$.LL>4h/$ Bv8;.~PBnjxĬ>NrfS`{8 ^^G@%za:lF.$8EI\bpK!h>;alcҧ/ j "59dew)XBND\ zFF{2e8sp 8cǬ/NEXKCc7~l;qGSZd7u<"B,.b19#7#=c릴?+:LUhM}ladLRP&R(>DT"ՂIW݀h&æ>|'ev-lD"B(k8CH9 ŷΌ,JA\Zk"m8! vwLFcr.Up0Yn-b֖g@k΄mF>Daf2p,@ Prl!hbF/%odaæ#i$-Td=f !L6@|` S AG&r( ?ߏ# lD@'@`N)~_@' g?$60_@c?`p> >ߏ@8e@t;|/, 9;{[,`<"&>jOt( _'h }&p ;rW~0'K h~ܱ) 2(='{ >G**$0+~iB4#zG6I:j;f` -x,~I|k4bB Dƥ"G"}+YҖ{ Ky|,/fG !ngt|Fy̩@ B8"03x7Ĭr &К`)}k%` 1=3漀, `\ 8}N J; Wi:ty訷srq ΐw:= qr`*| 1J 2K H~YR?pg'izۀuNn)X HM 1 @O*@azjh m 1V-O;C/k\ % mβ,MKP]2s׮`kqf ƪ4 ; )vj2*';/z?*P2 ~|L:y{,v @( }X?߰x `c?O!J /{~{Sp >_Mɬ} H`@ % {{`@8_ gPD1@ ?5Q @o{@V{E~>5n@gC@>|oJ ׁk9X ]~Y$a|8 :nw=!`!@B)F} +$hR c$H"$m }Ǵz} p &GG,T0}=@r205jDӞ8@;4sL~,,{ & B1|? Apʧa{gQaGr~ ,`2` m |&{yY~βu [@+G<p Z~0|Gw8$X2/ұ^H: ΀uBM€@IyɱžM8@S@P @c+Pc\{6MIzT'x(O1# +nyLj{Q"z!z'HI(r+|@szǩ` 52eԞgܠ`'G$v'T0 -2~ }w2g<|'6$x\t՟z@kMʼn CJvyv[ 3`I)'N31z}@ "E}WR?a ^Ɏf!ƞ8fH!4ɟ`@AL>`b A8׊N4҆#f4@D8wB;>u1o B4܉dGL"q°rBXeVd1E=/H]hp ( 2¥W`"'t^(̼Ȗ"@A_#!a>fY"Li$(yO|.--@K@r{QE |KI&He BtK"L``=Ң @9:BNI**`8$t BŎ^<2l/31BFkaz'180zQ'8v!:X98$zt9P,H$d'cy)S$( 4bLxo`,6F>J/` H?+c,BDq5ƞQ\7n P L;64Gf;PҺ"@@r.e|r~d6el)N9yP `eyCm!?Gs(&ЧbJF3=Pc PQBi f:\QEHt DbS J s`=Lj0EA.vhO<Ď|{C.5x"it'$@HP((π bBBfb~O d|:bC0%6, oDɲRevI$env"`-*(NTx~:\\T#0x`N.²7lb;&I H& #f^"kf$a!_%em`Lp$/\D4C\$2AD LbGGE_ߣg($ܪ0/!eemG1HCABiECh1?#4"n'T[\i^P'H?#Hh҃B E1Dxb-C$/02Y$"owAP+"vD4G$#xI5bl+K &͆. ƒ=J&vF\`\Hf+~B F R1H_:/f'BJwP_e #n'5cP5H4,f_d :AƠ5B[cV`JΛj*s`2zg:EE36xC!`+jLJAa6+s="cl4‹BC,Nt tKE$1/hXMb²*`r<`:@  \BEtbD5-nd"$ćL #=Dcr ORg#Rh'91fz(xT~*B?N.TX`-'QGN$l5o'ch_I "&bqB+x^B`.! KZW|2cf B3%G<nrpaPbp!ŮoJ[9.oѪ.`BpbM'DA㝃gb'`&aa-"d(Ź,g4_)Be 5Jb y@ 2"I"bz8BN6gt}C /\wҾ-i1T(΂r'hbs$^>cX0;Eb68&Bd#l* $Hrvm`f Q$`r5'I 6, 甬^u2.o#hXd-c> لEl FhC7;3 iC=^4>XEC vP߱9x,$$&1H/V.LjC ) .Y:CKEjz-BEĒgu08$ )Y<2:a/VkDe~lνIN9Ì "v&jGCXNk Hp2'܎jƅI|68Y%C 'f4_lRB򂓅oarB-e."C:#O`!C/6 ("Eh(>tYzd1.sb@&ofn2E(Ffs':t(cgBu4 j',unz8X(dcT^QvB3"Md>9bl%,KHBD" !!Mtf2%jtUaͦ@\fP HT? )_"PJKu6` .B63/ p(, A}p~}O( 1,9T6H_/> `{H)  ,P!|O+ ^r|?/ 0ͣ @3 ~ }O Xū@|E  OfX*t/ܿ+?sxEAӌ^7z=@p` v$zH> ~Gʸ: 8 'T'0`ج (gy+x*p`y|(}!g}yx[Grb.H誵5G,$RCs:肺cإP ~H (0D-Q#@ i bӈ,1T `yEZ*{ĠiT{ݖK@9A|8`9 8@ pY@R_l,y@A܏#QN)l@LjbU3ip2 ~C"ijaGNw}C:pz~\B>6g{$e B4 BG 쨹B1@nƯizPXG ꜯh]E-;y|./р3>'ӊmc%Y*mHbHYy^ Q'y((B@0'`Px= _# Jg?o{O>-0ɶ<8^?@/3]o +u"~{!6@;D@4W & P>J~0h E/܃. ρl`0uϧh || PK ~ޞ_)|~@Nl{~k#F'|-SJ3}S" Mb| 69y~@@\b#܁ (pGH1ğĈAr G }''C[Ձ 'V}!21b2+m}P A 3;/۞IgaQqq)mnsTyƷ.+k2,+g|" {;lҀXZ@F( !0"(  A,Dz L;Y@v\Gte+/D 0L1ΎRA{(׽)'@Ga  v("9\r@g;p|9k(Z@ |/`Y~g@r!4+{z;~6s1 ;X~1ΞU+jN@.({#[ܹ%j"/ /^.iY:_U[ G-O[ 06GH.{y`?f!اM(cpY1؀8 tUS+1gaǠ8i<5 "!&x(A .@4`!$CxZ Ah  LlJSC؝>h()`; d(trpJ9pÞK" ࣻk 19b@I]Yf٘p X!mI0Ea6` 9c."tA3f&PQqccٺ/D̀5?KUGݭ  (59vEZ3yPd Y+62DHDaMc)fNc xMiނģ3-H8,<fhp$85I:kDM,P~=ol4! %'oJ9R*sL#ӎ?iӺClx7GȫU=Syw(y0VBۉ0 K_N2wm!Rp N$ pN%F׏uPW`9ST KIeEܯ"Kg̝_5zKnLv-2[v/G8qN.+{`.Dbf3H%q N F[[REďg!wyFF_W  J>V{M)#T6R ~lԁ(E~(D QJWyży(~a`0~GC+d QV#P?GѬeߋ!~^ y *> skfE@:K,0D; ,a:@"CBTߊ^( a}VjcLڭF4ehy"L0^k^-ʴH/l)p@+cp(C0@.g">,,3t!`9d@"]`csHv`@.G:$-JC, 8Dz&p!^߉L;|q$B+jFX@ RxNf F Z KKklG"i6C"U +^B4,488ʡ`e'H6|ay"(b"dB,,0^o j*> b>@tRU'BhKEz` T!e& HaGP!',/+b"|-D$G2'b~mCHW@^}+C_"b8/dˆ0# 1e\k =9C'*R|,-Uxp8he2@:(--Ԭ''IJ扞+cV-T< nDP<2$8†9ɦgxԺ20F:!c.丐G Uʠ#r~,p1쪉 5d `bDsH.D/l5ɞ1f>”#;c@9cH*&bNo":\5c!*!֡AAJ`Ava= , cGA AC("?BDnEd+rLl4$ :" F (x *h!`%,U #P⺁=14a4bgAXC ()IУ&@"A.6n!o;Ai4% ef"3Id`$#,sHh.hG{"-CKC 2 ʴ>4G)HB4q ! jyU4))`),l&!bD&"&0DdV}"FK,H#)A|cwCj!5^kƪ"K M%\H@&n$/˄f(83`L<5c"35'XCBRC:0A⸠B{dER" );Pt>Ih 5^+k=L!B9_a BWKb GEd@r"bX1kI Kf@61`$!di,FASU8`#b!ޕ"'gD>,b_e2$^"ЍB2Nh0'I4RcXC+!*'D F J/钁+.9p1eR>d-((uf;´3nM Ae.LLg4@FĠ7Ule$klD-kbR0<Ц1k ,bc5J@ң6I|!cٯA2d^*46T&mDP$4C_ bF$̤\`J^5@T4`K\1ӆYJA@.aaJlLƮ5a%e' H]Ϊ/5Dɪ|t/e:0V`DnVx.T BB̂tz;AnAoa4TE(Ӎbv.s3r b0чz:HPHPpFMa:I44[IBF3nNgt0"hp-@(Jw2RGCH# Cv1!_j@"1&FM:AD,yB|7'7c/n+ ?lc(`i UҸ#߁f,@/c%R60c)˸5U>V"0L$x6ŒcI _!Y-Y0`b?.H')H"N@.6@:;ΚÂ.|bjb;1 L( )Fw!c*nP3xopob'´4N]brC*C/1`7>b yÍs'MhkCBq sc'\㰒)2*t98.~&6NIu@34Dn1U|#?tPF(!kh~(JG֢&PҔÀx=g>FD2 @ej 2}=%f, 占 yT0`kg/Q Lsr$&tADX){Quc8L> Ҡ(`81/ 05e!FL (>@Zb6y%RyCr_B#Y[hDr}e,"]RJ\  Hy]cH}n2zawH뀢d@Ŵ/iRRj@b1tHh@7K$DhY"0m^+ Fri T68 }Ԃ\Bz!jp} $JF95FK'K"N~'FcrPFRJ6Ȍ;xQ:`_xq8q- -ľupV?&DaRP ` X xS ~O%|_g ߠp$q~4@ *F `_~/p<<$P3|GpW'}>@'uUppM/=@oSs#\ߠԀ|OS uW{^g?7~/.lt9wg*>|g{h8z.K%)p4`  R $LV!r|4@ (T@H m@*  I}x9@4`x >@K/>/ G1S?>*$Vβ:5`hS Qʶ@h2P0z^}@cAoK*d ޝx% iby j+X {.g}!y z}VGQҐ$l6X`$8k~,}7L~b>qL읞JǸ Y{K֩K67e)*g,)(ج,"83-:W#E6' Q ǀ*V(z~ЀzI~AG)| hBPH   #{J@v4='@ƀhoN~X!@x~;;"( KqB?"`wNm}W3n|ά/?g߷ Gxc0> . 5~-zGH 0Gd( +8Ǽ(1r{0*& џI !D>91RGǸQv1'G1!* 28 nuRyقq!|GR@2|Iv}!(b(R fB$L}̉ āQ" < ]Q(J ~r|1擆 )P^p(N/Ccwt,Uݔh Gt}"g > U Gl)l1 ~|OfDy*"`؀@(Ukڃ7g |۠R|z!IH8MKL@9}*>ʂ L-z(I̔ mCFo!MU,>kr-ʋFЫF~ D` ڞ {5F 2 "/A@8 jʤ~8#ЁxeAgF ,DǸ38 J< ,@ @$bxͬXdY儹:Y!@ 8YJ9i"_c@.fG> "e d an,$t|͉qW-ķ@MiF}#c,mأ7Y#n)W%.DqF7䱐_"$=2O~őN @1])Hsct&,/~@+YὙGlH@0K,~X);(YGeOz4RzKdG^Hn84G4`|zi߰̊Gb#a8XØr>Ljr#Xb-̴&FI^4fLǢt8G4fzI!f!X(@W+h (`(X[A30@xi|p8A `&@X7`%`DmS!_߳m\v Z\uBQ 4@h)@z@ u>j ^( 6#ɏet 7V@ 0n#%p?h;<#bN;g\&bPyW@xʎtOHKhNk,dؓTG¤ŀZ@\sdS1`@8 6\)#I59a\р {Tl]1ǦqbJRk?d,g yXk\c3 YŷzOah(ηf 2i>c%I0 ԬvM=@ @4 . G0gN"D }pҴ@h ; .pr Gp g0s]69'syBx44Hvӂj s+~P<o;x:qqi%ƞ@4C!|Aɍkb4:t1i4W+y5-آCjj9a5ql0~Mb3" I'hDw\upTb&0D `PG`NA'2m”B@d^K@!AH >c$mb J['Ac05 k+L\( 9"/"',(CJ#]\@B' KbB$l &6̢.nUN6+H͇,)!D=*fE(t;. -$ˆxDyM@iRH8ú3\k8@.('|c>6.Pf:TBR,F&aA瞞OL D\R,L| G"Ψ/Đ<.+.DlgB~ hP4k<4b:Aޭ;~tň+E@$DO\@bl`R JTt"'C@FWfNLA-G&uDqdjd ET'((C&/¼`Thj Z=#C!/:po8þ1$y¼L?ImϚ,:1Il=\ob.]5W$K].]kqp!f~-18k+8Lff2*B]mf$,P,x"f'~ xP8ɒ LL( U3fBp]O:fTer]CXFf23 {|-IB+O|B å&1 >!BVpf&-NFd(8A\( D aAAM4'"ryOtBWd@+F;$N" 'DHWmL```(0"BFo4b;Dj䬍b $."P-Khn'd $@z@0&61$W"΃dP ]H ;t&'+cL[ (3"PaDPJ*&]"+.a?ff"m`$@L0'2ao^hr6"r,nlV=B'p4ABNLHDr 3ne$F]|fF!lLK' >RrdwS~mEU.O$2>&~Ft [BgsJ%BC$o]DQaF-'a%+A)' qe, /hLjBÂze*"AM.$F0?5DI2$G==HOACj!aa  z0@2Jx,74/T`UDX,5AnFSi!UY [BbtfG7CلVwl|2r,hAa ;D*x :k& D RjRI3$vpdLC*jJ(CB:$adŤl-d8 T㪇Tmp%SCbt#'jB&5&>=oo c+ MjfƲ#E΀L|Br&)b(fDCb^ET.D'ĄJ&꘢+G:)tBc!IEr<(!g4C\z"h (!@d@0rn^Wx0WF(#WfD{`>!!qFǖJGY1.N&@\,b.F+F!pb7QDcbGʜ:W n&c&# . 7fHV)Fc0Lt9dCG EpEn "j'B!"fw5$.D#tGb=F#w,v? az hh.fJk6w[;c$sL5cPk@YY$#Rl+LyŒ)[# 0b0vBw>.B )CA yÆ7r&#bXanB,RcS-(ƣƼ3-7qeXtBp''-W ($xY5CZA2h+rmbcǀj`4`<O5C;Æj)ba*ջxE8K[N"!Pu$P$R;DI0(wf0,0MDceä0n$jn=>-t`(m`* L缮숼DRLQAd2GB:L+-NV`.h!Xz;!'8,1HTgA&:M(׃V$\-z4yQi:xEcj'GxFncBz̍Db.IZC j/J{M8(T =Y8l*JaeN5&`^B(X gHA4B0S2!oU IR j ,pAx7N- ?V B!n"vfKf.]b c+H .&0-hQbLGF-# W{W? }>` D 3o~@`p 53` }?&o#}rg`-Cq*E[- 'W "<%Z 5,;~?P5xYhP(':2w WB@'w>@/w ?T(Op>@]u} 8`>ޯ׻˃n @3~:* A$L~ǑTlhGavOH^\HJ,~;-8 @:ltvҀ@` 1Gpl#'!\J1Ju*~ myHZĭ Ǎ' KS4x$~L Ȁ tI`yӽ3K2LV| 8y`KRSJ{(UPUPs}'SPA~:Σiq.` (O!J̚zGH:X}'8"ftVɀQ{"Ǩ 2@X){ʂSޤ3\}ZA}Txb`AIT<ʲ])'"Vĸ|@(Ā1`+5IzEI|˩`T!lzgŀbYJ n'ۋx ,Gi|Lj "~~g P8$A@ ?_ AP`8oxPdh6$ +_|*F A`L ъ0/AߐoW/ r@KbCq0g}pCo/5 ?" ] 8k~D@@,\Gc`&%|>wfvi|?qtg6ׯv4 ;<6} Ik{|A '`H؞;'@J{'j'}G n 9~+~@P`D<|l|i'g5߀*Ư/p~NZ~G.~Yfx''+t@ 0iNCErK|ڐ" 2 8)g 0+0'3 %Sx*B24G[>Ԙ@~ӖРk( Rz~idS5^!l֨{-KґQ;p'y`1< %gyP]8/@L`p,i"텰~.gډ1Se@~Ns@sG.@,>ڰ쑿f Gz;-/6ŮԼГf0|{/T!}ҫ(+rydFiЀIQj`@kr̀:|'Ϊ"~gʰ~5@K(J}la|G Hvp9 D-X GP F ;Lr;Ǡ`fA`Sc{'j=1r@8zQ%ٺ.'8]@Xٲ@4(t,7~p o,` "o64> `DP GJ;8?4>S"-T4>MaLd?hT&Wz*,wS0 2,u((ɠ۴RwKPg$'Ĝy\14=$tTCW>8e9bTY;*ԻĂ)txBq -}Q =FU{f&H` p9 ð2Fr8cѨ2h]A  @\'e{.+a2R oМt@;Tm#r72ϳQBi H !␱N#nC`XʏZԆX)3-`=Έ[C'0x`D > D$C#50H_v.4")^ 4UIJy  @wTXJYvdp=Y[44Hӗ!U/( v<+r_KQ9dKp!Hd2.jA⌇XN =2P “`=8vHGEG4 Keв򒍺4:yMp/9"B'D5ĬtL{ >VH8x>Z"hÑ6M 79KUS_c^34$ALa@tfYF_Hp=L5v/UvwK,= yA$hdr'\E%XIpBv_Ǐ=ǨF#)5p&T?[!]zLTc'Ζ"-f= ~"v(|7)#x4B]⦁ $ !2ziCa6 SÌ^S4|_b(\$hmd5>D=4\0IB|IƍeHcSf9$Fff`=4m9=ch9 ~/3 aD4"L69h=)4H6@UL4 'b9Ŏ]a` 10'kCR,7f866r.0MxK!-E*hfBq "M)hz@plAlp XE?#L(d=xaJLx :aC|@d~_#>,lC xØ10 ʨqd7` @""p,SfZ"" 2='P'0KG:$4h;cn6aXb p-` dV4xr@ @!2@4""cR4 iJihC,@D"#:(47EbhiE/ #`#d4QntJ.#60Bb6'2 1"pm _Q7O]bzi5C>&,8"*ADG -X3!l!Ae8r:!g:"9szp}a#NZ.P!jB!3Z"m!$=tdMp-I*d a5 ,F,.uÀH !.` : @fIqZ.4f8B8 7ŔfBT8pPB@4 Ix}F 2)Pf#zVj4cPE#L6A>CG)t:(_ 4cI 7'@`gGiJ~I!:+t"}DFG. 08gBv=$2;Ö5Dr'/,fR22J](D**&"C|eF2sbJ.G>)3X3@"SDmpF|(l!cj#3}Mv-R"&c bȅA`.@^BthaA.Ƕ6"$(7!f<vatQ|D;K,c>HZ6F@$4">`$a-LCD5T,'Am!@O(` E@+"hb'DMRԜ8e+$SbiC qTfN'0-5:-.pC6Sb.edn:0aB,-;'0;'4C3-J*3,13H-#!C42aD.CK*%'&dɤFCne!VC.m쭒.҈#$0S4D-7 P7*.7к+B!.8HD<}vj K,% AX^aBh,6fܥ4Ď3r!g|"VE>B.%&[eVbhEzs40bbp8|"em!B.GS măS2ln T0 l`aaF +$I2cb>:~]C`h!r ,pax*(%4FLGv' 0MDL""I$;Ĥ,zL'L,Jc`ASo[E!ވ¾0c@SA80S@{ nqzAa08">""!48C|ti q*ʮ$? $L4:[@^9VLs!$x!f `(5 0!ьvѽuf}Zc^n5F3,f<1$:S"}){kUP!u6wDiBqN l!N\/AR7jsVJ,z1' cCߏ\@X`b\hFAItRlxˤN`, de%m-CDOI//038D,+8$`$.Ôbs6䤐C>n;tfD#".e|"?o;dG*7Ƽ4,mh"^4P!f]j,"WeHG .'_z!l0]V:r<4*2#Fó\$fd0=$=J<'$/!ZQ&辩(w3B$;.ʆLb+n,tmsCtD};6S *Q=3C1S0^(ALO=%fmCe&/sy#f6VcF-Umô.EAp*md6'̛%c삐7Y%bƴTdIC7 :d& $n!dd ^(ZFzGq:pDʎX#17.bĀd4O>L4)Z5 22H#i*. AZ0͒g)!g pU#b.47$4%+56+Bħ.ZFN8 lGNxH'=dxnTJTgWGv,-* >?*"5*sa!`f:@"bx5D82I=%b0=@h~rCN J0IAIt/tHcZ7xM0V.H+"|U Q'Cq66+ĐQp0DaS @" >5$n] C£j6ӌ?ľkj.rCI4=B;Qr6cNTGB~f +@ }OW@ {=_0 ϧ+J  3A_~B@@@ "J|P' K~#@@ `7?R/~^砇(?o8{O6~ƀ&B,}{y>͗c9`2Tm7׸kkm(=?P0/\]W}~he1xLR0P䨉~#; ˸8* ) 4x yaz/%(#IП0!˒Ω@ }G& Syy`}`)C` }'^ˊt$hh~!GML0*y` yT;jP~g|:+,-ۡ7Z[ Chh@G7;|6{ɇ⠯+p:5F6|ཬJ}T'=/g"i˹vi ɚ xuY @@@/@( A8P{T4"?/&{ߏ}Q[;Zt }߱P04Hߠ'z(Px  L@(`P0 [ߠFx05 g ~BߚP'|z"6{o]X{Ѐt C{"+y`( W{+Ǹ ~ .pz }sy1@*!zП J.7P*.H GΡ H#29(@R J{`03  " } {`#p|*~r<𣢇N\ ]D20m@N a&3( ii  6, $=W7˸ ǣa?2F(.>LԐ  uBALR.} 1%%'fƟ+P-80Zx@ ̲0G{O yڇnȀ@Z-]=VzB@,1Cȯ#xPq'|~RR}`lǹǬ&ùܧ$ |6{`{(GѼe#:R6!yUt"Wqp{`E >P9y2gb,=0 %FFe B0C,b*O u6dGHuԻ9"$a˺" 0H!z( 4D !:J17BblʬG(s6>5 9I:$9`uakPQV؝G'x,Px,ȡG =SDF}Ɛ̛0S08d2 @1@=qGt>$t05"`'z+Ғ4󩝒w3. @a@%FwM$qQQO $ y=+ +"cGF"ml4=6YpXc )%#yCP A@`!r:K(EN2pL Ǹr"pօ,(yeE(ZF"h>>Rm i% A76G2ɵR4]c^>H6=1b\erX")* @ #?ApC~p@( i@5 #ZI96z Z <}p ;r,|UvAndNWh^1$VVĶ  $8q]")H:?j&+`bRYFJB.j.rS#Zg{g;ͪ3," bvk2@$BFƷaChLE m`KF@\(WZ:g@5 T$?hWlv#\䶐ĸ0c8&L1""Ćb5HL 檺 66(:-Ȣ8$& r(_tI!ChDӂ2! $ :$X `2`n~=C&j'b(nJBa@,@@43e$Y$B."#P!0B|=jCr M0D(^(C&"tB)r 'b1dۢ.4gৄ$cr*#D†G$,4QpJ#"? ؞ly\z2fOVD,Â,"C.g+f9@f2f@PG+Lf䒭/r}i.("c KC9 飼=B9(MA~TE"D*%l!-dmqulj3 &vaSo~Broe`U3"9, <&.`D(,7hj#d j&!f !!%,s.=/$4BC< nҌ 2$@ `$!HO32̨,<".aH+6d=G,>UFxDAKč+vB6bJB@\K@INP(?z=dL!ۤZm.b$/#K58fAi%7G;'Ej?+IJ.TABz &ġ@rW1~.CLP+7J@GPMB&.N!(7&u :UM4V _$} j*d 1I> 1 riG9l N$cr=Cd6%*?"2cS7}&c `n@МFAu:C1B!&V|B !#eʃJ`\I3+PRPP@h*#j:H-%Kο.!,k)dG'2"G0+h% LlJ`@-PC"F۱]1"1:Vz]L ERj,2x@I=r#B }eoEB@`!LCxCPRjYHVkl.:NN’,D\r"e5XK(fC~(@6.`L! 3X$=wCj?Mz#*Uu(`/PyPu ,t}Fo7/(HZHB|1BAH(P<ŘY,!d1 ?P1(bAdA9XRU3~{)MBbba tc*aH/ fmb8$}X,  z 丅*ӘK6>Z:L9ACRtBdH,FRFD/9 Wk0:4/i>2̾#Mʅ'D$JC$@FzFnA(FCl@FPR G)= \:0/)\4*9׼,d9cnd@ LB.THn<,Ml-fb0ڥ[*..fb&y |#17UEl?I'Yw7Cu6+P0b#A etxd<C-a.7[6P,1SKe܅gVel,f5.3?s9AB$gf` _#b9dD/"\JQWbȊ$ACdcQd-bR"A@a'^r!]ԅ"#JҀ"9|Q t@` *xƉZ"זK 8!A ,yϚ7BU3YE*uHH("9 .0XG"QyC#dwz hr(?/!G( ˺pO5?l5 ?W 0 zi xpD10(8Owvj3@/˓8}f@'֝h2ǨQ#WJ+ Ggn0 p6yxyh@~@c,3h+∣/`ޟ-Q<*Rϧ )y|/,$B 'ǒuۚ|m{P% 8((>qpg%g&{êj}G-;|NJz9:! [2 0(EW7?g } ua ; ?7F#@g 8}>hH?_Ŷ- > t_/$p+t>_O , 嬛=+e e@@p}N0 >=" _i,0`|{p.)+! ,,/h6 #z>)n1,|-Mn~,@jkP}$jG~ǣ | qq'~5 ;^܁ 7L\|k{|{ {`!`3hE|`AG zG@ ʳh \`pPa;!A,8|vl,gF@k3*yHP/RZ-ogC4t #.5&}4_o/}Xr! {?j|ycl5 h @meGPs ,C BL,{F+٢fq` 3S膔8L̳X2'Ǜm&,'6mϠ35[Q%pbg_[g1 E  o2*MaR,X6n-sp r ^~, {tlk1vi z~-?.>~ǰ{|ʬD s )?؅gHk dYA1bf,$Q1y;+,NyE=a!ZLWYTj.̯ixFxQ-1/)$^r@z4dM5{xA |q2MS^JY|0e)#<ȉdt}&Ǵ\>! pH= }&b͡qkEr}AWǾZrQUZ plK}R; V%ARb=@'%ǃ*1rQBk !yV,OG=@$qA Tʏ] aK ִ N>e*NTN4m]a'U`B6BB" lٖ/\G>J6:6K@3 SRmK$)nΞqMY-A_ - ?@X <c@%U[OA8 ?K&:NH6,ߥ$wLKМ^L +u}g@Dpa:@Aܭ̛jGm:pgv>)\L"x2F /*@"SQlKbW*!"6zPX7-pfe@$OGGC-r/DKaJDd24PV""(r˄|R$v!ځ-0@D-#ܹFd~ u+2cpp!)xH;=¾w tdf7(!6.F@ʥ,iR/bcH/C!K3"4CFVQ5q:2bnf&R ( gt;F!*Ѣ&т&"!rH1@0 @2l^b@,j "FN&Z?!A0{K@o^3[-hK1’cǦ>I/CBBpC> CvdNcCОjg7V2>tbXL "v@l~sjAw.Z@HL8e6E&zà),0#^$v}8'aCܴ\  ^4D}Gp–A0$ 7򲄐)L(c!6cd.8GjN'na0BHJd7Å'3/^.$GчpE-0CD'dNNb,tOE6'7:6bW$4C"̃eND:Nzc(ne V랰ANge@IKCV!<g!?l.xKXg/AApHM:~3$72R$C([a»gVԘ(YD& ,уh`'m@ Hf`(`t`| E%nmg_6,##,z#DOCLңEPaDk#8o|V00 /(-V[H'tu8a@Iup(@'iv5,3ǘGj1/)jXę~CdXk@&l0"E7[:Gjg@,4 X7 ƢFc|MF645n IAf@/67|R=`+PB$,'fKnc@dB3D8'8^nbeGFjwC18oPk#F2",2 1h8P| Eb>3@c/NK,2W`!DNzNP"?"4,C N씜/D:4A IȎAe2Rp6Ob-? ^/C$el4"%$EEG!ʨ!~b7 rʆPD-yXe8RNXzhI8jzĚIBDC'@"7Nô凾' !]a44f('+s'Aֈbk=&4(JjNaD\386!k&!G]ȎܭpS&Dr$[h4dVZ)IwDfΒB-o 6nPB N11In^H,*"Oz0Ԣ"*GkH;C(A6\,ÒQX83/KRG?xMzG:n"м5to-+@$oԂKE? ?ߓ'|)E{"٣NG:7ͬh@0"p@7>+N  '߳?ZMD $ ! p~O@ | @(G-HAh Nyy w1Ķ+B%(&km9@À|jg4- 1'J~)gy)0CV@Jn|}T#^Ѐ( ˚`AwI 쭾G@BL\Dy`QބN J]Y}.,`[,Av*'2՟@!hhk Gq{gG 4{B2K4{!R, }xn~$hQ0@Y}ߠ7}@@0s~4(`\/QH ^@ $ gR@ Pz~~?\~2p&>ݫ@@ow2kg@`4H{3+ja@)z@+>*:|"+{ FAy΁@)ꀠ 4Ru 2g~8'@݀`[2h~d kv@(~-*Snl:@+#$- - 4gr, Z |w)G9B4ʸs2͋sn~9Akh {${gIx|'i]`  8-R@s/)~ +`Ƞ(yӨC>lM*։'zz$#@ }b > z@Lz'C *˼4a<~e3K:Ƈ洁0"|y8~Z~{mMꄞܙPudS@ m{6j`0gݡcޟK}L~z:"ɮ;v~S']z2M-e(/S 7]rmb^?SҲ>gtA +Wn@S+)%LY܆N0&(_ra `}" f1g@$~2D&|Ed$UX,C|<, @t v3$q(#rQ9 `(b@-f\NZN.`eu gǺ t˲/1 R0TaXt$*ҹKdV nX(-Jǒ^b^!:XNN 5% -E<ˣ5%zb{H0 n@!&Z Cy#1_Uh - '?!8fk^hġneK #KRq1T.؏c*"G⛖\}Dl̗_ 8:+"Aa"43n>Ip%C  @GZAQYE?Y :H0!@`.h5<#p^h < :">L4ro2{a<ȑ\WN>N/2ԀaǵD@ Xsm3fE>P. 1CR=_|aK#TCv-+va+ H CH!wijFp'H  4hqI9Γ=܅u"9zWpPʦHi.9{^> clJ=7@IF3pNcwi6p i" #BI Y$\F ?Q`` 0`{ 1GJ7 9MVcD} 2< q` 6|Pk xDMiXXq"D F8J.,Dg|tYX6)rJf@=ʑwS¡όZґ;Y QR'97ȇ:Ym #: Hbĉ#a/ 0!tt Aa+RR=rA@HB1,88S 䞕12E(p8v@,rAȤt}$e Zf!-b9#"(,#dnTk(.B1-~c`$7'a}(,&2BI">DaEސbDc_ Z"tA/%", 'B"=O6,҃L#%H`urT<(ljĘe ,IBl(4*mx@ `JnFdN=~C j#^ԔK/pnvc33 j{LNA4́&Ba* "i>2>/#h + khDmf,%T lV+:] a b |m =z 0a,A.sNEXR#@8B8H"օezLbt(ˠ+:0cXvp I 4 iIN:}"EJ}>.""b uB _8)FyJQ-B+8RIS:/#5$6" J'|3҃F,gi$T2t2TüHlBS92Ǝ9'JIµ* F!Z˲F$b0NZH#)\uH0:36Ob" VKckpX!I!fN.4s/fZGCzq21#j1"z:aBAa8 2/rdEx2i8"jCf썃P*"IHŐ!*Oh@"` TA!p!MKmBB\74b<P D@F("X%  ]&R!zL" |`,iF8+8N~*h-Ě@$fdc9CQvMǶ3㒠#f&ABaX&@NcrcH?VF-DbiT#.|>z dNQL:FT$6Zɪj@jR=\,I!t,V&dgT 1E$ɸ9a =/1h5@,?aI.NPF.e"#"҃p:#&QQ4+m@r2P ̍_Cg\eŤH'"@X'!=p"%p_'PJ|>Ў RQ_HG&7 " %(>CL@ tF0xi lN'lUPWsF""$cd,C-h?jGGCnbxfIpG(/q.-5 Se,Zp9f 7 w?"֟D+!7!-FT(8`ZH.+,'KPcw"$VslUh~c}J)rvdz!!aĝ4l$&`_f ^n!#>y 8m VfIC0uiu2=z1Tn74('rQC5$.Y'/%l@#g<CK+ a\('qL8#{X2n[ʡ=$5>Cho5_,8\+#L/tB(c-!xY#w3Bj L,huRYb$+%/8BM:7)5&X#'8&B4OF:/?E'm?̔,cd3v1ФMΰx'C $1$$°3412rIFg0/"ej!!u-N7!"qThA" CrDaa\@NLd@r, !Q"IZs`}`.+ deȼ"DHzY$5+C2_":"&fI6 {)%b3Cl5NOK"v$5|(*(Md9 U*T!NE?i:$3J,p:=//2̤8eIP'C~b/.R!F8(d=$,8H-> 1|,*Q%:.nB'y'#CZ u /' M)&B$ k*کb(8I ZB(IgXjRv/b3)D [vghaW@ f<%TH$G`6 "&+ZXe` 8u1\{ej?ĨObsK `),!Z1۴+`@87eZI`( @T & NL@$+JF,ȁ$NU%t.X<*A=ۣ F|".C#8|y(k!_)a7<y:\.J@96F8F?[Oe="BF5@Ĝ)jOF@fX h‚"CB6dBШxPu+$#8,ukc`i,nM(gHJ!'aн&%Ӡ6a#]%,!!r`" @/ A*=﷓& C!"_w?O}>ï7e A`( O8 0 @W} |839ŭ ?k@8+~߀dkr?02b݁XFwORz_P08~i s8k@P0 | +g@oHzOl3l epgYd@]S`> j۬*j@_gx8wh@+Rb`Tio@|@}?odz @W} n RN/`@EO _<+kO<.&|c_>hX@--}xw/*t9 K}?H$qЫT&v`v^3 gOg}J :  [JLP M@GЀ8 lk ¡@Z4z{@zK0Q(G.}JH ѪZy0K֟IKz`8I'L`zzd9riz' -8iE<#c;Gg:F(8G!4$N̈)-e0(I† ` .@zP$d{"?!ȕѲw8M IB;.3K ~(^!l(՜DKYLr"#Bʌ !`ͫG~99M4L`KQ9Dh}F l5áP*2T1}Ŝr4*p ~D>cB_]IQe<ǐ,/Ȟd5Gv=^au_Gjb'hʡB[ 6Y& C|aH@%ɀp#(8AX p#b` DiqyP=R?^&ƀC(z< IБ-̅$f$W-i@P\* (IA u,Ѐ=T;Pi!GD A/%Af鯐^ @f/LRǒ^zLj'"Gå*Jbi (fr@88z"~2-|zs׸V+)g]lgwLZulfPMA@$Ǐ=5 H@{dn.H}6~!8bK4R!C$-oćrFn蹁?^ Ǐ"|Kjl쏵? #Lسd_hᖴ? !FxXHtՑ< 3Jm%b[ xD $!P@x IÑ=G@^ߎ!<> y `a;#\ 1& tvu7EmAF*T^.W`BQ0V ȴ5GcloP{DE( ؂bF"sL*B4/g(3?z<@IV~JH9#5B*y"8Fh-@m":b(l$P-†$Ў-e 8O,w xd<4ID@R0-#B4.?AcV(>">(68 !>OKC4JXnL" zjn"X„Ih8.,FGG:I~8 V.FX.G:M  ] HO( lOB&azH㦱)DD B#Bz/S-|pAM`p"RRZ Nh\-d dlP! Z`r$ )bN-23"B"0@0 <l2Kgh[cIأBb9#S88C7b&~]æ'3"JCGXb8K'cEA E#CzFk D#ű1lIs>e38#L.,wF-C[sP=C ,Bv0=&0$:6I *1" Y̮N4PNICĂ"d<("[b4#Hr!C>(.TQ*à !x&)J;,-!2#ne1`z XP``$'a. ˜/-%0ByPu\% A!:a2hB48P"H8>DM)G`4& f  9#Ac}L|GJGD*GB89£ T`C%@$ jB=˄sjA+**"R8C~g8ﺸO,{N>"x(+ (5",!ʖ;*Ftj"E$c) Њg4,$ (B:8Df"8dT!ve#%="cZFK@Q@a TMCCYVF!SF@ȐO#m^!D&.LaeXLgv1'9">;d(8c5G)@̬|wögb=GDbt.#!L/Gy>aα84gjTCxm|c22z!BzZB,@ pzb@ |(|K:b?T .0 .cc6J .&C{>E"1/^"pL̨zBƘ#D+a<[7Z'b6"-v3/c[K0YE"x"CCCHiY"FHz V%#|1(46^x(JJl{z%ҁWI3//C9F7u.7fi&6:d.4+ND(Dx(d\"C4@,  ô,D4w808,n/3*#>#"28~i. j!h 2PbaA,a >쌏#hE-251a@PH $!kb@("N7f@B<(.fp+wOaa<7c9$7s:7gc3xp$>D1.bư $ z   &b.?eq5ikׄ_f3DJ㐇(sq"'"RFw0.B{ Xb4 A A LM4%xC4E>@f7"Ni]e8;h#,v`$̈MG,-zu'!Bۛm/&1dZ8 kDilA`<_@"b'ާ*KO;&$$!; f[2fd.#( % 3cℒ0ї'K1$Ā"x_UquW@ĠY@(P+0up` Wqpb=r >*wB| b |?tOҠ$$P*ހh2~BNpb=ODe#cY5f(A#r79Fn(D5@0'x "tvsd.@ eؤh!Fl:f|y,l>o"J_(4'Pkއ7.ø/R5d*Ab$p6/,-)bꄌ\ahBFR2x# Z>0ObE;!#dEZH-,`0Be!E3|d@Gz]_`&O!98B]bvy] l;v6Gbu)x2"6CT1E$A9|Y!8A`&yd0 Ӣ5Fb|IV"c``B D@$`60j70Ģ:/F|"ObO%A2aAY>C>n2$6$Ŷ"AC" b5:T"HJaLG,'(#;]bn>[1UvFC~7M~Je$GY,fLq.G ~g >vJ1 v†W.CbChwkYp,(˦v^2-5#BE"(fz)k2>pO)j9#^b4d Mɏ-r)eH(ps5(du ̊n߂ -&o 4?)jL(I38Pn.]p Q~qe  0(z9oN)bq-#@ ?_pH ߠ` }>Od%cd|~?`|> }56Qa @$[ p G`lvi&"0x h-i8|@͟ w)#_$X @@nh $_ a@p1t>A-P@. ,'&";+> @2<Ң~?}' 2h}X'1*/8Phg}a'}LF ~ g* G L[G`s ~NbPk&K|`XH" r ǔd /h; Mg~g{b~.{0&e1~AyiVŐ🰅WUh0<  NXzh -X4[À; cz0ZiiG`0%U Bh~ Mf;% zϫ縮LQde3۾{Ε^-b}wL5DB©ʬN)SiRNN5 4|GU~` .֤_ 'gO>d&p` @ P( 0 o ao~ : x o'6xO7}3= gra/<5~X/͢hA! >Sϼ@o' }=X`,~!h"  '~KÀ~@޸}M?gҰNDq8  K% #`i~lA< ~2  dz G(€"À@ _`eqwGAB |N)!O*Aɩ@xZ"#p)|`j~56@ɣgǩf|x!Xze1v@!(  ~U!NY*gx%֠x@SrЊ`1|z@ }jhs`|%cgU 2}R:%J\Bz4L}$e e{qieϚ|L>솻e6{ 9ik'L[g ş@P|Q{RpZ(|KS0vh#*ZSzNh:~_[lOl 1)!6/|>>P2kԠap {V(h(@ $F@}>R<0Hk(*GG.=@@`$1@Ðw"@!́tBH{: ( -<!~h )HqZ>h u,[ty@0?;r@N! EL)ϡkBv*K#,{P@@-?U~"E ]<0#8=Q@,`;;ڗh6pЈ< A: 3(I4"Fl2@` $$ܚ=vM%b !ji Y6#By>KQ yME dMd8,eR&( lJ |$Z&ϗx9¼sGCmQ2F;C= Hư" F9yS`P9 Q P(ǹd%P Y{0l)u 7+1缉 & 3xybp(B1rzU%ccjA>Gq\ж/E \92 Q<(L,YN8<3 >\i. %cJ^=Gj,ijG>#P8 qEyTG#an)%<4Gg2'> >s]Qb@"0GKHxL)%ό{(&3<iH}P&WQb P Ɏ}Cz@!܆^3dCHqz#rQpPFɄP6RԵ1XF/o ;)d(O$1ѰtZT(s043miEhŊO*A!愤18#fc2˞ae6A'Tl'@" Ɍ(SCB"4(=ƜjlײL-"RgM\ "a@B Hhpm-od3EAKa!Da  !DlĤ1Őf!n,82Mܚ :F/m(4BZ/TEPDT_~#+4"T*gdF'1’YI/^lkA 2cYjP_ )!!d@Yփ`H>d@`E ;p l nr6$z&e ‡⯲n(#I P K" C $H"/4:">B,FF(/FvB(Pk# Z>k.aAO>b*#)|Ē;@,pcQ7pm&+Lb4p$=0NR #D(Յ=@^vqAoip&[VI&A.0&@ $|<@G'D@CILs"`}',6%B-CAi؎bԤ$l$” DøIJ 8l /F".Kg00@iz;sLZAfh~ 4 i"@橮Z'i72e ¬E;A#~F*pfwqKb/F_;AJ*&'b(K&KVJ)^2'B҆"D?Gb0ELA6d(0 )OКDqvbB"Ԛ n,'L’1vdjJ>Vv0L" \0MnL$6617D$, ]#^dlg;PZBUf{ /LnM:c38^ER= Є !bI#(ƒ CvIl PEPF1j+8b'=rb傎&jr !z&66l׻_44նu :'`L`n(Q[qpGTJP}05!@"(=!3SMZcs:j$P;h7djgC-Ryl;etzgOQ./)foC GT.$'ycqbթC)Xs$0~yhT*\ZLP@=-zcWA'b>T#/ĖYnamId&0Tjς㑓eF1BD'!T%}x"7%F0D䨚ѪcNďʄfL@-Uk/ #(*Pu$on2jC!`a+Ob jd;PD$Bh`O T m@!žas-FTiV4-$t&fj."h /KzAaHfj,6"J_ */$O#a,#.T&  |Ϡ:b-?4^cit=]bb K 1Bz+|@6)aŒe7d26PĒ+60E.r G!ĉ:$Il\#i}BJ^3E(}WN ~-|dXAEjDÆձJ&,Lf0@fmŻZr޿ߌ0jPDbPԫ @JiaLL‰A`&a@$Fա B#> {`P ? @ 7 C @X@` p 4oOE߯q@ ߠW ȟh<?@|@ǐ8߲R_wX7kN~5Muz͟@a/ =9WʥYH|]@Tzw-{kjkͿ:c}Tm>oI6/@90&:l  zh! *@H}-kx*͛imővaAȟһq$@(  0P!xPJ`D&g܍8 BR,rDx@g@)gjO)ی Gˣ $c>A1'}ih I(c\ 5̀|xף  IFޫ1w|/X-(/ր t'5L$R ד P8$ ?)A@P8w 0f<=0#~~>_/h"oOA `` @!7 TՀ@G5@ h ɾ` |/`P()~?o>`#7  9 |?`Og}`.t`'m~_M$WzϬ9 Jݟmی ӷ~~`1 G5 ! Iy 䩁GN*'/2M 8}B'}'d'6}>Hhz7 K%(/6v " `auI\bd̜™ K`z΀2 nN NK)9;~<͡8mɷ` 4зjo wC) 3]Ӂ^D4Zޟ !@:&Y{>[~ !8djxg.RU0t;x  (&q{ "Fɾ"ʠPZO&銅!jeGqΩq). y``dʠ#D|)|*g1NFG~kȜZJE)Ӆ5Q&,uۻXK#Ȫ4Vؑg|Xg3ـ>"{(-dRγP8>C!K()*IBcŘ\ѳɽ 4SHx){cEøFȡVW` dey$X2^m,.'hnTyI=$Gp@0X; ~[~Ք"$#xXtӺJk0a@I;L_,Tq<2y@-0ex3D j 5`caْeii*z{|[rS>00/,PDRC $%9L<\b쿶ڀ*dɣd<0=@cHy {i*eܺl .ŵvaG$ i2VM r*OW7s>y-iue\!L%{vV->f8IxlpiB(Cي%zzK cތHmt&qK'd|7"_m pdC~'ު<>K!Hq_I+( @ V0Df#~@Tzl kXsQ8lF*SwGI׃ p2Hs;Jp/DR `1 G`bQcTTQt:xmR@ Ӂ8U$l!L&/JnaZdoQT)fm^40h[ ŊpCZqI?OZFhi~[YB}sTor{V:]I0xߚ$@y52^drWƎ<~im8e.(V"]F}R CxL?x!P~#0sdG!*|3äg1G_ tN~YpL pL`$p dxMdLeN JsK?UkI=|/c1;HBiblb7xSN8;Cz%6 BH`(^` ![KPMhdbAb$Bp|C.",@a,o* gb&G<'$.+BZ!. # 0li.wJ@ ^0@(8.: ;&B ~!!ꭚ6(B*7 <@ xb>$<FES: /ԄP$˚L-:2MxzRzL"܆٧},(`. K#V8 -.!>t!PI##$ni./!BII֋<'A5-zBxLc&>g*6Wco"! $g dz ,B7d6# ""QTx38ʾxV$;^&2,BfOA*DlhJ,e!5|Ab@B*#! 6(SB)'6*([ G8d!=„ .H. 7ԎL5pEw//% i+'~&$̯cd#vl 3ٳ0Gw/kI>s-" N!6MnQt05R0DR<1.4B Ar*gΪ<6."<(B;7z*7"Ж$A,Ra| 1>l7"-brO.7`!Ճg ;*z7CljvfsCKh@3QCH,MG@l%('L(0"/ZAPsҮbx'jt&fc^G<\P$b$*;Pt-48"!' 5A#@ j$`"8$ZC:,Gd (-&bf1"z$,)p^dj&SƍidĐAb!Vĕ*Dp J+{r74cNŬ<&.欭ZXC7B0LQE"{5) `ȅ+BRI2OB&D+ex}z>+JkX.*;7q4HJ YD1!&P&1RO!@:!0*,lCd\e#k{( <#ofA 3lP˨4@F ^2 $xY|*º'"2A" @M ; $_xC $I ٨`nh"Jd73UnTkor%&|0BX95[JOG)0B+ 3"8ļh:vl.ļ!CF"Px1ª*fAc!iZqzqO1W~XWL-+-/kcBt#NBxEt_l` i/K>Z|fbn0TcJC.Jx!(IJ{JgzEeb;``2$V f VAd3Ě*vc0 'H:d|26C*Sl!!AO?7t7K2h&9 b $Ha5-Uybl;"d &%<.CzZJAdd2#Ps 1P"_N\.Axa9.,pcDUX-2 ;G&9/ RD-$Yցk2n.=>3b)$DTO!kW83WZHň@Uݡ@<~BA5I' *jn.ڀ!`Bz G#Ƃ@o 7wE~ܗᣠ C},g뢌 1,Dz)1}0 :' j: >( qF 3J~@G{܎+0 nKh(p{ } |5G}G`AZ'xcyx{($\2jۻ(K¨*5 V y2ƣJz5 Q Dm['( B}J -AxѠwy\~Mh\ j@$yGb',"Hf vLzl @`$,Xs1}z T~Z1!|1³j1H `0|0ǰ~zVHkB p*K~DzG穵 B#cb"`Jzz2p}``k !il= .0 CT` $g:|Yڨ,zG1F¬|0 LZ4MPA0OǯMag]A3m 1!#ǰo @`G)CגQih:a{y.ru Q"h 9PDȭrL9FN$YZs]ui-ɑ\\o*N(BMjW.#& 1ĐH#ǗmPE   $ޔ2p=$"'/-'8b2bB}$(Z +qP؎S"+6%]1"|=KE.ǻ J䄖y3t>{WO@( VI x0}^9z8y$BCRQm#˙  `t@(E8 >P7i;(B3z`.p; }gFy֖>yNar5c:^Q&nP0N $Ȁ|fa ##p?A , @ G y@cZB A~6X@ј"&KID (G,=-bZC>D}2[< H6K'iۜp8 lbL" C 9i#<XC!IM+dǒq̤B?(B@شѠ@w֑9A@z{b]aYa>,Ϋb޽SΏIL'FoUd~h(LWX<&r6=ygcz,ᔂ aj[94RB7\iD,"EjGNT| Lt,4"2)(5Dޝ^(%v"0sF#Ivk Nh(G1~nz!X! (6JaO u&lhXl BGnGn:%Pthd6 oHS>&a hA&B6}#CXClD5D7%."6a l:(.Jl,.'jy"#bS/.#xB p050b0@̤cCu : PDB0v9t!s5jpt–$$#wCe9,] Zb61\b"r58*ST.,55s">>,Фey0=dFIhH#)#&y`-D'"elD#jI*,!FX,!qNHr&kD#@$G *RC#B!"$( dkab!ʐ7B(]bCZb0uXJ) 0@\H$jD6!RAxiJev:-"F(Za!M%DbG5/3p.g6s3CVCci"@9u!CVkDj9rV䜾H]J`Dx4BZGR$ĴJ}` ~C#|$ cjY@>CI x ' 7fJaAj,T/CX)"$Hr*Nɮ! !"/ G#(BCDG )Dc?KBئÎA98u/>$9`(?4ld!\D#"@)%OtR(}"Aku:"6N$dbLr.^tVc"bs'.~|l\;;\bd 5' +hi/B03;AN;kKK"6"JĂ,,|E\*A4jj)qEos-%a?jDR7\A"&Hbvc(%*VD#4`TAH``T@rb.5i4$>B֖7$r==bR>qAHT)F"zNE' sJZB0/ ("^TH .;D #fECdCD<#jRi?ť1C\*ldƒ6FrQu\C9+1>zLjcD)Dpξw*H澄<Ho(\֩#V9+`$5:Bpf>9 ,# 6@hbDf î=kH|pF;a.2/dT8J O9fC"oMz@(Sic05G5Q?G$!'`C5B~ΰ{|n.'R!*6'fNqep'Mr"#ɏmFP6D`\t0!'h.Ŧ27f+AAȨ`va:c|IjDV7<"qCyD"9|.l4N# "n|@c4B.LB6WB@bCԢ-nIFw턣IJ jDL- b#HjhFl> VB r@CنbZn y|7WBVBE$N! A'"EʬD#vX%xY(|OVi6DwkiBx:V29c.b0F5>1b*rJH9Ó @!`<.Ý!TҤch< G/,.u"(t.$U|$"@.!`D ; N` 4w (թXN JHJ$NTz !!aA㠩c 1mv揀S Hؚ  p`" &%8mҲvC 4 x8f*@ä!!4Y}EYT#E "F=\6h|dqģÜA^?f"jri>-ejI$u$"0#B8&eOG*28ju/#G`dUd Y{,KRV2tdNhrf爄 OB) 898a4Z$? ңT^A5Ɵ✭dĩ$BZ sFencd}?>_/ w> a/_`8 PK~O ER0' `(O;}>5 Yo( @e@@H <♕a?f7 &7Q`*}[ׁ[$|>^ +C%u_zUZT*W,$倩ˑ@ˆ;22!BM0ғC*",:[`yIb<,|#0}^&JGyLh%}'1Ȏ*3*8 NY?r'`( 8  6x{!~T2`"ǹr'pYzIg280/BJ ;-#$.B2)Q=EA  KV>4,u9{Ԭ|M# 2=Pʚ~gyqh|:䪹g3`Yy-# 06Ǿos}$:(OMDljQFx(^`2Gdz~SO*|{t(̔@w+ '+_t3 ʾا S@M _A=8~?ѷ g_M I=:q $&ԟ@$џG  ~*2; C,"h (.Z~LhH"1zҨC-9)׀D\!ȴ lhy޶ͬ#Tr<)@"<LLjҟZiEyzⵟ>-+l*H1'@3H 6MHŀ`H68G\ Lx Si\3T w/ǔ|aViraxqk0"u$ R0|Łjɳ,zw@H\A(#}`;y@@JF@ttz]/Aj} eY{H4t}|97C.Rxzǀ`r-p|à:f.d|<#RԞ`=3 U(v YzjaL /r'{\:[c^~AtZ*/)ym(@h)[{9yʠ+ʔNI-G(*o"0,x3D-&EG8{&vYA:'|%Cӏt$zeS(jn# q@8`,Ɠ&>X1"Q$̩FqYiGC8񠵀<@l!,wR])$tHmFz`ђ] IMtJae2KfN6nz? `B Rlo6"t q | _(ZA?Ԣ2j ᗒ払?qc:*ǜǸFH@ 8r\P Nh@\EU<`nKA<oP jtYtO\S̼R*/- tX0,+ p `p3Yg0<^f)p2h4bj6 }@vK){$d8 6<(r.yitc{`a=O;Ǩϙ#Y#d4~ov'Z se#fK QdJ 8J&DHĕ)ԐMjE""րSGA:`4tΠ.Af̒Sx/!4s@ego |/|ωMx&Sܿ)\#6iTn20ͱ9Rc 佢lD1]c{fX, ꉟ䂐r&:-"C `,MP:cxd@@-`|`GsI:%:edk6PUUE:4EfQay.Ÿ*Ij)}6^ 3TY ` \-l꜏=$*]t,O;,DjtT/v by8yW+BhirNxG<&),A3%HndA?*!" IFF"lQ@"#&\*ڈTCx@N04J7RAA/ v) 4f\JCQ0F3A:aA4M]FQ4%b$G!N"N*#f*F@*19O /#`H#&k:DBL1(3#%6L Q-*~%C^F:>skF4(`^jrB6HT>:)`:z\ȚLW"$26D*;Ic4B@Ff|;pSFG;-HIPAfFR;w4 H$X"Q3k"d2p"-H!d@JҸ%}"uPa<#04Ik-2#6A1 6(~/.B"##v)'p4bu@]@U44n@h#bt/0enC;L^c.6cFC#2G4lM&@`:/.xnâ9#6zN4o<d\$d+*,;G#\e:}s0Fܭ/^Y"SLD"naal:F%d1bT Ddޒ.-DGp;.T?@ū$^&#AF.%0Imb#쒐p35o>j*HsB@"h`T@6`FP§f|@T$u*17bScLodd3Avw~>Ț=N/PqD)AIw Oi2krnfA^lQ_@lĄ|$>u&^$#@CQ|mN-TI ƃ=:8 #~o.4 6` V BR6a aYG l"G2`V:& X%l"@"UB,hb g,*JB=**J[az'r"BdM2G222'Fg`T;aB A B &D:q"LkByB:'.ByD ?"Ywy:Ğ(g6e-PbDLBt!e@/-:d R:6,~!`J3f#X3K,Ǚ9T-҈dq gQEh"\JY/u^dT1υRO%/u$aHM> yn(QS"(/%ëB0Ni.24܃@Nda0Y42Ү"Wv4ς401#-pvᏂ-'se*;>-0` @ &kd ""2@O ZJ&N"t-Bz bOte:"6BBZ3v2 9=tz-i^cz钼g #:1 B"O.,#El` 9"d#F7ƃ bXV! s0Ig pb<a0rTe4Il%ќIioi7$t>iL չ0ˆfbB9Pé!r)yuwDM8~D>d!fq3lžBC1c`7)l'):jA <1.1i&LO(@OD;8b/Ȳ.Y*_X 7]iG$=/~;aa^4Z`%H8F~aӀFK0\$zK"BPN.N@--y gl2CyDhȓ8l"/"WL*J2oTԡ&.LպF;n:(2de p+0  `C?_{>g @' w. d<A N}ޯ QG_g@|>(o`Q`H8~/50}`&  G g ܭ'+TH sgŒ]ẁo~h&Yc׮E=9[ǰ !{x@hAՀ\|!: +G裇~3+.|`@r P\K @. "!j D $, xp[:`#`"/3#R= O@)`I~@:.Rh+gxǩq^\m QA&迨hSJ"z@(|r`;:|RzyRz (Ģ7{ŀp@ +)z'(p 8&'Yy K#TĒ2T0,{gyPhH <Îj.*y1Htiy'ٌ` lʳ"a #B@0  BH[O w :;g!~?Tk8`g\j L,  }K}Aw@ ?(3{_@8~"}` B}0>h>{!ob T`[Z x >ހg#Z+F݀hM=@_|x` *'ڜ{!mH. @@c|G}(9z'~2N-x"H4b }A ^'yK0DZ+H܁'h0"`''`qЀP@ZpiY~FOh{A9gk A ;T@Q~ǚ8 )}@4Ly!29\3`P ~ v7cG 1 ` +(&a*bxG2 1'Oɀ2@8U}38ǡ{@/ !qeW@t&`X̲2`#8̩6Rr /-2Th|sDHm\L lzD.1h0ׁ`У( @y{) Kdɇ}@6Pq.TԴk3cjm8}yzx4 hA3 ;˟?|X@zx"|8 0.2:"|oPL|isg G @_Ha=a NU`cѬ!X Fϒ)"@Xy21J1@Dd<>#ucm'-b4>%wQ8$ @28J+ÀYI] 0y 9z9ܤ2\5 \ <~,9J Cпa@RMhmcyH2de 'oJBc0&f+A XtVHu ZCG9C@_ /r!ǚvh-ϑ*U;p,R<sT^7Q(j\.Lb(>i;.>3rOUH Y'!0d8k3!,yO# <8A^hy!ϑ =zb0Vf́7 JಜڎTZI_Cy=Jq}"E3;@3 4ր皐|! "t"EK ck$k^0H٤=h.RvBCc!4GKTzb&rtGˌ2K=eyj[2>tbEDF,| {.R7WLIN0FsǙ"7S_#'1_0p-8`P_m ǸnzaQ jva=jqr0 P4f[(@CZv=N']1X`)@a1>@ 7P!:c7Q"j(e2% l` cEoZr$t5Ws{ sM2G5.y1Hg& ]Ra/#VcS&ϙD'IA/-,kC֒(CI >tPZ-QWᓳOdlscۛ#ɤBU;& Öb4ʊeV"$GqrҐ$ӜSfkӴX~PTK4?>Cr=%\E Ddha5$6<ILP:H;ў a;HBw(?G3؅ݪ"30SofG;rTH3rq{dT{Aa=”NJ<ÚF j.B~&BC CXdK$-EdfJ3Hˎ:/.R1 t2klKC@E-'-:Bdq`qB䢈cT@.) ɶ=K@4By$ 7E>F2c re>#$R` lfƂ2YAG!ȧ*9fa!aA L:D 32sb3"""E\B$6(DL&@RD@> Fbx@( G6.jH(F81*-:'Af 8`ڞ䮜DRC'&! b/A#B2hxb2zԆ0ƬN (F!.c(ˮ.:Ent2 nVkfFB8-#+N᫸/&2"?f>CUGhdb:"nB.Vɺ3,#|,H\z0.4#8J=b@ crYr( Ž 4)D2#@_b"h,AՀȆV͌7$;ciOBd"7N)'Ef!!!!aZ%$C(i=#T)C8h$bT()K#4+T9HDFHœ-F&.<  Z`Z6@VlGgAG#-#D.,hcZjc*x$f("3 l(K?tc 2W #b,!F9fU ҃= @.'jzNadz)>c,@D ^#$Ht0^BH(K7460(# a!CO'D.N(56 %M-'P._4_I=nCrO UV ".Xr9)“xc$=iZ%\"G#C|pz4Lrcr:#,-O !'˯jaܧИJ6Xτ0&N6jh,!fbxR8N$>!kn`<M"t`$V3kAC\Q%ej1Aad!,@,$3@룲7cMT1P)dTp-jsdV. "KXo "'B|R"3jBF$/8C ,Vb4U S\ 1l@NA4,V_Өz]5($#cV L.@C.'IZLCfFTDL3Lxr>e 1#A3hCBt=;k4W KC7붓@"1vL/lC/ 2 EfZ\MCJB*bM4a kh8bYUOqz"f.3"2It" Fw/$"?k2/A[0% yh qv(Y$Oo,d-l "b@Un_65X>SF."2#r%zGRwV*#LO$By"se$SLd&6OwsgoocNhc$DWn)0N֛s2d5lOCZ3'=Cz8UXXf:2P4 ,Bxa|0@J>Sl;"z((&.8W=FՐ6"sfjQfd2g%f6,zĈ`C(%wȉ+lYM$^?L3B1bD#x36!҅7n2J}>I:/9qgq#$`<3(:Idaa :H@f`z, ` !L>8(z c#%^A-c'!AH!~(0@F4/ /dyCeY-bD/XDM=1#k %b"ɺBCNBOHuv@S&-(Cq4oC((5ः(G~#14Ӣ78;%.#NN\e\R98):NcsLZ2/d>썇>[Y$D`d,{&@5f'6Teb`BʁvÙ9Ñ=zV#皞fVVlcO`m,10/#Y%mh)G>,NiHQyMAAAa `쐉)iĈ,ډVnCQBcD 5CMz<|ȐfVJ#fUfif* $zՀ6I`*F`BĒz%:'4Xc1*%˼X#hVG#/O>>6zC20lc-'ړx3C!Qƪsg쐏CBC6PHx ҝzRUQ8,IF8ynS\kVLBYq2@ejcyA'Mi$iCV"5=QHL?=A>BJG ,CvfD:Z"z5Ho.(>0P1P#CLJ4Gy4paM!Az9,rt;"Bo@{nXg>BN@e/:DakT`HNg"A%h| DJj. iBfAAT@LZYz&fE"bBU mgx !Y$#|F!K!Y׈8x/D#~n/2bɇ3dlV#'JCMkoˎ >~a ' ? b $P ~/>BP0?@7<{&$,F *_G}A3|!{ߏ7p( CĂ@LX}>V<?co 2%7Up&||/r@ `/V@}ɳ 6%@(Xgzx iR+n}G`@ @a`z @ ,x  &!2~hRg }Cl' )aI} 쁭**"oÇ* "x5- <` ,{A@SbGyCH 앾1HK9w.j{|_KQ'Rz&^Uҋ^|J"  ƭ1*K"H@0!Sr.gyC 9Ʃ@C#]FRJ$HT6 <[^BIU$~')o5S N'yǑnE'iqdH0 0+u8~` ?Hd6@ B @}s(1&~@ E_0 џ-y?/'b^>@(Y# AHHL7 ~}ߠ)I_>Gx*l2p8 L/TH~a355}?( -0 ~>o!|d Z/'w{S@ F/ ۀ/3v/M<}z=>@ | #C>3.n{ Y'聞g (%P'7K Kx8BҺ/ځ kF)`@u 1xa{Fuy'{8(ƀjc}1(.J;<j:z @*N|:+.+~gzҚ`P @0P&. V@B 8RVY1L3 Xm 5;FR kЯף}#. |'dX6!-2 J?0 (D.#'}` |ʈ '囥2g-i73Ua *978b!6C fpcLd Kb缗!1]G<* >h%a8YAS1u,Zecj>:Xq@&@@h( {DDOaF}2kQ> !TLi[# @1"C Mvv2YX|nA U)\”Lz$BrcE#K( ?h@}S/-yX`p#,I'/Ic2*PTb aqz@2 6`@"bh #+y.@D#$$"#-SM C#; TMNNb@zHX^A?b`"1J> B0gecͰ*a(L!X Jq>-l8kb#v",:~ R)1cZ" RB@:H;C+Ddqϔ;( D5@TcvPh",A #H+'(wr0Cp'K4gr)BTsFq"@X?x*k~~R4VebAĬBS>)["iBk$GTn ]K"u%*4;/Ώa. c/f& Fa2k1IjB&8#d2>Bb6DVi!rgO"Ct6*c&L#Z B h67r*`o%R8D!NrI.kjZDzSJ4r9?ZEg!A0c >0)&O`uBF'#3f#%h"NS0BBSH >!.4"@L:05 ;&?7C>.Ug.POIl"zj"a:;s kJo>"/p9|T6" Vf5 6?/f#m 3dT7m$$xc-d #hR0t^"HZT(b &6 S/(d璔)Lb^<â5lpVt*SX=3`$Di^P&/3O` #D7D&4fL' !LG%^#H?3z(/4H8x(DDB<<lwAq)$ ch/LAAdEC8B&N&w"<3Ì>Ɯ $Z~@g@YGӪNt$$G:"bq WVx=,|#!BN%@^vDx"TNoVcLp"X-bbT3SX !!l/?nDJ5$zJ0GD=;?ChbN4&j.ANxzCFR\h~:شdCh쎗Hxp3+#غ7d$$Y1vF*']|g6D:,R2,t@GuCi$)=N@b3As^/`".)#Bi ws(M3èx](#(B Hǵ|HJHf@vdcaU8XJN>cMV:Ǿ Anm$T ,>H/ " >!-fVO!QѽZ)X@Kc?V?"~8 % VC2sCoБV;k"$FU)LXu(Bkk3'L6 Vf8Fpr0&#"#nucr 4.B"*T45Ch&(V`jX>Y4N&/Cz)O Azvc"@Z C cN"vG8+D:5iJR7D&b{)%֎+wTFaDڐDSJ?j=󓁽>a"\'S IcBj"Cs` #'a<:@$,Ixf6A6 u31*NH$Gf)TEãZn^-j1;^(p' *cڑ/z`,H#Ħ!c<%bP)g./OdqP598.2"fGN`8#dM^WS`H3N T>j(xmíWCh%Ì7g87w2P FB_YvW>Gn t B7i^37$/,|XBHFH5gV/R">$&f$.q6&/@"*2:diwl_d_( LH`x@: $>( ߓz _#W("t~?$8)g_mU>_/0 6=] `(|ց%~nX3ŀr}@ ~Yy ~(:+8D=oTy`!~'{'Q|@'71~@"@މhp`Hp})Լ#@G$ޢΰ@SGh:~ S|; :Nz'O;~})7CdǬ*."~n:@ ,#ÎLB糢@@SDw'"iؼɵA[Թ',p<@r{NGF,@Yx*| }@"=Tr#{)[r-DHj캶j`}`wGӞT`H{ ~ trtL®|,:L*@<~WJ4tCGzqqa}` @p8.J!D?0 O8 b@!P* @V! B@1&+AX8|?@2 '00 /8|o7sDPcA( x>]ہ_,"c/H?O_@w 0wg'/- gY ̟[T7V}նgtT 3y?@/{3>ntg!0{?y4\8!}?_PRd|@ G~` ʞ(q}N 3$4i@0-`<gg` *͑};'P@h} 6Qp '|G  IagĂ:) f!$1|- OzE--AHP $N`&@}2!'Œz|}1-jɞg6`X՟|G~}M`:{um+X~&m 'ꔞ B~%' B_5}r@g`U*xhA7?D@ B!@rV'˲d8|*U=,V̀#fCgׅ!70 6$~*򿝠m\܌AAZJ`C(yzң|P1D}sX8Pz@SU]!bP 2z-6ǘ`4#: @!gq&L0<#|1d|2TH90~7VR:'D "RYtseN@r{.?z:!rXJ-s@,~8&UG3xLb焃f}!40)%. Y+ ԡYB@,Gy>[E肛b螒Zq*9S7Ͳ&`i>Kym${(rJh(0&Pwtn`>42p #ؾ.V.{7KC\k\!)3JN73[@ 9}~4SJ`1Z`KxQܭIC+ytu!B]$@8x@s|R=LAGG 5i@I*V'MS@.@Z6@Яk\2(dFԐimɀ%TY y51oM;@ 7؞qɀ!@I*ѩS`A; DU.G.S.v b؜iZ) f.kP~wHPLMDQplR1ŬM3 @@NtՀ,s%B b2.B(crH9 %aLa@D! !!@$/@,cn VH~8/P|.Ґ&mBfZ~Gd'P&bs<7Oߢ(>2z-1 2d&p{ĺPD6;COFn4*]D'r%4ӄ/0 $GCB5&dB*8+ .A `.(hFjؙEnIƾ '%B|2Q#"SHcgH2K#,b~&UX?dBiap) /O%xH2v %."`mC:'"T+p+?MB iF/'h70aljNPkPY1&:%Hp@F'Rt5|fQm.ƿX &f(Rtje #BZE1LXcvSkf;I3=슲| 2$/0݁!=Af;@d6B wLaLfa`'B\ìSR>qDSffaD 2:צv1A8uIV8c@&l!E !it!-H 㾭z `B$BT&6ghf@*G 8WDAGB'Kr`N#z6v8Cu"'roR?SHg(Xcw.Ei32A=g-r02p1b#Wif!"LB"En?8o(RPAv#}!Y,fVXzw#,NCDz4FkŒ%2On-"(t>$D@V_FPTi S=,|5cv7h52AbGg`D 2j63SKĤ*d 4S%'_94꤀,`-$dNXȪ1t&'Mæ%&Ԏ0$'a309q1mV'Fnm4$zB$PbVsA+ cƁ2/Ks;!fa7$}4 wf-,3#Hp%qn4!7B#.Ă#~/Z5o'<(Ӌ89W/-6ZBTnc:0Y5:BEF.F #R"@dӤ%sJjNý[peo7vFph8Fh_j7Z&a䙦/ &Hrl:&8[> bܙiwz*FFIYQ0(bIn`*J.&|)ҪR䱆G`5H`$IaA@8EaW?lC$oUb2\'aBCNԮHV於)3$CF8%|GtB1c4EiMt j # @?+?~|0C`0Qu=N@@{>@/X ,@@@@' >P+{@`w ~Ϸp38!vo A@ PA@0 |Md~O `+}aِ#S=p[8}0|P;1ώ̰|RO̻ 1|,njFGꔥzH`B{Ȋ(@P.''@|'BE){e) (̀/H-b~BG)$9 "$O[NhTr{a˗`H$`j 'z$yP}RH) G5>3l|Q@4(1'b)/j}hH)J'X KV(&ӳ34{:#E2=nx)R3`"A Ԥ`"g|Yo^}go= F A [-MʒOzuPB g47>.{@BhC"G2?P>Fx_` 0i5Tz>_.@B/8}?_Gw>]z`p 2V/S ]~I N ~aٍ~bܦ/}_>ELwyao 0G寸0_m@ }=ߔh 1o3Ǯ/{_}ߺg}Y~/A*(%2 A*{~#G؜ Tj.{+ء1,צH|'z|ɨ nGG~˰ 1|L1}6@<i"TN0K|,a{+Q#ˀ|9ş*gh@T{.嶪P|NH ˁ@|9M1+~yO N;)ѻLM@I`@+ϐ!{ݫ_8nx~C \19\'儦`}%Ĵ$=c(toqDhe#×d Zb%gGy7?k&;0bzƬҎP8H@TyGq _@fIX€kX}N0'tt>`49'}$ycXk_9G jV$yU|u)w| `x g@%K‡=se0ګ;(sd>@X D"%:80 < f<ߜ2 ڐydPZ?8cG, :i8Mu-zcI#|<i0@yUn ´Ջo7(0,E(X@S5|a? f р#+S#)ҰAM/@u|7,G#LN`hM?2faH_سx129K\dO% @cZDy ?,t!dg^V$,qIY- `#DvO'ύ-08@ lxF&G.oGb?ch`q= (?p>܊'?~XJ ':*GP7(Q@=Q!Hs!O@l?@?GCĕ#I9ƘNf 2O8p_@,Rb\dzҺ[thp*?g(ps&0ٹӀH2 X)dzwEj泘p a7Ċ*M\I DZ3]\5Ş}G/ǂ%u6>AGaeFRb`5R@U dJ.S (-\&&DB3(HxV0#6uj<42W0XboX WǦc\`l@R8!>@(+$$6 '(7P ]"YUvɄ +ngZiPBNFP!lJ!҉aHF"/ *T$p$'@?b8C#"0ڙD#BdB1b3#38 `  *@A +!bό\&.:8 J`b6dtZ%?;J:&t'HbA޷ a8 2$`k 7STnR<!a@ #h8B2lG&2nrY2d6!`0 04Wt3e4%!ErcejezD80D1%Bڠ@7D" "pN~x#~m-E23N:⺥,c J4#fD#\%㒛("T5㪜`)X8Q` a0KnPgB4b6Ab4\(ҵYMp2&%(vsCLOe+>(cAc9HM$1!HEGZ#EvAa!s$&;C80"=A[ab #EGbj3Dbe._$Jg nm2hUA'z% b}j0c'>#z<K1c=h3o!c$ҽzl*"eZ#a< $0c=AŠV* L^G.%Hrc3%0 uþ2IHE2t@Ymx"'+ =|X9ek)E P+%M/er,<hV+ph-F6C*JN\LY &  Le4?b(+HC45T>F],J TG8-*C#Y%\4"7 ( G@`$]&BSV!!Ava!AA8NNV1/ 1(V#7g0 cCZ'ƙ:dc@'@ )3@ $U +4"L1/b#86F`^4ғs(P7B,"b+e.'2!+,6,$'u} „P:&LX*n,JsƊ'I@bC#I%}>bز 8(nld52Zb1%qN1oa쮤Jju(RMfsb5d<'IlFi8A,+D2c'Kdd'cfIŐR%hL8C$* L<;3%$N3IEf;|5A .K(0%qCBK4*G@6cŁF>^?dkBV95PlƼ+WcdiR%N+ 0p& |%xKȜz|6u"-Tg&6 ъz` (8!9N2"p%e QeA(>-@-uch㓅c^w#0tX&on"&#B}B2y1l/44f2$?)(%bbK^Cc#|+zU|9H!E e dH4%&p\UBqYE I51dqR5&o1CFt1oF63f'c0@("RRe8Ev&U{IJTN䒑i0' Brh6"CA1PD+veScvC>HCo61 4܉3p&.rba%L*A*Mh9y"bnʋϮTaէba&:cxJ"Yf' #1'5~@fb#g@I% ~nMcD@(EbmB*l nf>JDrxOڠU` $OC#|PxhCZC'faB$7r@{6!s%:,NP;9~g(gXVv1o|$mcgK {2W`2Ja !A8Q:&L" "#v+ > @X>a"r%9$qQ7C^D84B z7@ v6`*@*QסETRnFB F&j&<!!CEznrb*78~CrAraTt7SpjHp}hDAB<}3\L̸,%c#48 ©D#F '}@@ |@/}?_ @r8|ߏ!A0 0 {EO`o@€,}oDhOh.> {(=/w ~+K_@ jHMP}@ AՀ`x8|>q\ _/1$@4` *ڿlr|@]MI_ \mgP]`Cht`9ycB^ 9G# 3l@ n/;}& ,39 " 3(ځi'} E,TLKRB@Jcz` ~r(10@!w;% ۧMkC  x{zAP8}+Kyz & jH}" r:; 'm5(~#<)$ ~@ X{UtE j*r'-;9*$ns**@y s#{M{{U-yy*g({3xg|<6! 8( $P LzmSL@|A ("9ŦI|ܯH`8pzgG GAo P8 ?P$6B!P`?@l" !8 }A ~@Òqp@3p|wov/A@`\$ 0(<<Wy}P@wҠ,Fq|_tT\ @[i8p?/d*a df@S,)_S KP7zy@X6, ^ 0D#'~ρ~ ;t}KX{~` <`#CC~%|Ç& }H`")R2r@׭8z{Gi`pLg{ A 8@0} $1{"r4n"R8i{%+LH;*dk qJǪWT`0;`|HIwl` p Jn!T95h|;n)o"  H,xHy񬐄G ) [IPiG$?G܃)m+ Qڸ 82" }MM|~Gn[tg3e.fyNȠ|E PO \myTٮq*hp ㌕i|p$ QFǴͶ~r'z͊~@joJξh˄&gV&v'ݯ}R|EL@8 RP$i6}@@`0zccj_Gf"W$~,t` Ц<@Cn;ǰlĈRH 2x^ѐlb@8l A(thnd2bv M(v 0;Ee촀@Lyo&i0!Rpfo &Et#ЏC C?,C}0 ^| 0'`%^_PtH:V8(kClw+[7Dľ+f|I ;Cя7oIFE3`ѪO}75IK4s^O!.pnO|Gd)-J2B.?b4{TVMx?0DPj (ĭǫB&V#L6bmV|$iWQ&*tqP' vRi#p ]Hc$FX H) z!2}|\YiV`T~YK@hHd*UJm; jvq#C| @CMyA8{FQ?FT.Ks@{4ij8p`KlY/"9CtPCFH>ͭr"&Iqg 1M¹6oM!AIlRp<(޽ԩ(`M:eS3Hczu N)!d$~ >ǰU'   0JCGmK;P+]J\CVw#l0iHɗ1'ӈ>0X K(w *NX0z@{1@|9x{q> x-@(FCȑ(gM(p? !`0n?;oI#Hr)_]Sm?f:J!  u ֌OJ|="L8!M1>Z4NS [,A?$1ޞha&'.>L44jgjmZ&鲇uFt"R_ Ī29Pea91g*b1 죤lܴY M~I M#4Mk;^` Qj9PNP.⓬lS"_TupoI*8gZ"QI5HhȈ1L@+JA,I=oi ʩClBEXd Rvt/\-^g,<>1"^T3. DqMR}dyy4F34})CNc%G闳c C br> 5{"AB@I67b?B!Ze@"_hBi(dd2îbdd$6nCCj)6KŒ2B.Xtr!*pDC4L9 *%B7J܄Fl6-@ d2(h؍E8#:v|n'Eƀ"b'  .'UD m! gî"_ɀFOȅs9esʎHdb~rp%lEn$Ö;+Aaa!Ң/1t(4 F \ R"jF".Oc*%T8\x"~Nta`8^68'ˮ 4C'fU*#%sc{cjOB^kA!aAjі;&|2$!E!C#fĪ|4JBj! ""@d2v'#@/,:J\LBpEzc)m#lf!g)"j_ C&1%C(c"xM K\rd"F@z《R:Jz&Cb1hRSn8ht_rdu$te7H~W","D6(7C|l r24BrXC"C.DmrCb!U$%<#DÖFh`w)k<4hU3Vċ2j2mi&f7~a1Ô!)H:6c@dbDU1.(V-&@"7N'>3 9;J?DP9B(Bz#xT:$(2"8H :DlC"z:ETZ Hbc."fJLd:_")c/sIQU&D""|u*HgZ:ch #cnUI0ӹc&_nl(# F2@㰛6|߄Hsvو8N &f?F~J9YP'f %w5q2fsp%JS#O^HOgmzkomCaBrB@ υjW[h}hC i?swÄ6nYzf2`4GCxTBmBiFO3Z2u&$9@*J;ZVas?TjJLӂx#/?) \!F&;-z0P&#atA5DnXC*NFi_肒G8&qrSz&UghE%/qQ h{Gg&_@bӝ$tuBvҳD!bj$U`BHh`y%OdQ?h:܀v!!!jrvS*CT"4#𘖇yBxU&| \ %'qcXV6vgX>ՃmQCSav 7N[Gm"RwFZ Ԛ/ApbE\)[#3Hބjz"wET(gTLTs(>v]Cgw"/II5Cb)Olv~Rqm6Pb"d4!Cl.lg))s+Bѫd3$4g>\kax% A{!!؎rc 05H6 ʘyuG #%}%s4UYcP3 )"z&+@/GP2=UmHv Bl?DSv'b4&D_|;HE5o3~k*(iʦ={Hwމ$GZa\H% sM3 O{bS҄d.~:%>Kk9PMDH P8$ @0'(`\6G+_0 C38"oz_pS?yvg `7|?r#d~Ϲg?fA}O b+/X UpSxuq+?J-& "g*bw og{J}q师iր한CS=mL1saj?3㾡o~ēR@*}NJVAV}or :~Chj={Ա(Bn<2 ?|!`KPz,!lT&)b%^ y,Gî9b,&QsR< K|N< `*H}+@!i@ :jxЭIqsF$xn†xS:yRi.%blR,B` ~Q ~+''*MR+k3퀀J| qROukN 0m %:~l j*kbz@ 9 Rd\9@P֟S$Txgy{rhH>idOsLn"wOwL>Ua@@: +< B!CPS{ÎCvJQg%Z&* h*r2hB4  !W3ۮZs6|L9tB} GȁPĬbuD(~w0L Ewp4\ Ԭ9 r 8h@vQ8%E5 4qSJ6搸2X_&mL'Œ]SP/X Dزh*ڊQ)JdhfTQiř%&%^8n8F9d m_Ԍ zhpAP8p Ij.RDR@"ɈXjp|E!cHhbjKLI"kfJP*EQu0L}J^=d(x6ɀEd/3$*Oy+䴈Ua=h `T -1 x|^Ŷ13W_@e* 2pDjLS|}Z"#dRĔ( S ՜&O9%&rRY,(w`"D d@KQfk,@ "bιDFj% UQVJc 9$8 ⡏Qt^Uྔ.QQS"oTq|sNl[aHi,RM;f)1~"C@Rш=#PK $̳A\e8Z:XM6 [ća`\(؊?J% sS3%)SPȡ }` @C!<`ȃg ; @d>4(&N 11+ gq YpQ `q< #AR^?@9GCDMQ& Fİ2Ր4Od?O쌱8 9eW*!*) Е1CRkfKeQdvhEhLd/<"6czY&AZqZEB„pd@`,B_ ?E8djOu)P?TxP.% RöJH3MH&?>!$|$df/E2ء3T>nvdc.b`"bVCbNX&Bƺ<H.vRUNY2MH"c0%`簥 >D,5"Oct5 B7@.8-HO r"","o-Ob}ŢNtTB|‡#5,dZ%@I&0XC7G } [ Ќ(eOI7' Ud>eET#d7-h21.dfj%-DTTB`J!@&@ c>$>/Cn"".#>aR#%72 h(4.;zCZ-AAAVT`@aN7 5&^#4!H"1( =`. 2Ř<h$.maARao@w5 "G ,s);ze<'Ķ-bξ-=GNt։bX.Od|:CR52LO+`Eh\*E0j m+B!- 8rye8@"@^B2@a%tb JED(?2Y 5k\dvPlaIDY7$^%O69%$@< %8=Ϟ!$BLn2%?(X[I O:&iblRI$E>`C&>+koJ$>VϚ췥2נ(m5`j46$*pׯyrOZͷ,66pOw!FB)#]6)=++Nik뢀))~'d$_&$Ƙ60vp76Z{0^M*(-*'@ԬbDH5=!tX< .vnpv)Oj-ag/Ԣ}_Bft$-$Hb"*+5EHM|{ 3.vgr@mL[#DMk}J)ȁCDBD|FHvNˎr #\nMʋVfyiaA VV* Am"@md4,ݖ_1A0*#6í^}TadeABĕeK4}MkBFw>\.)iS bMpmM6J E,qv:ڀo(]K]6!x)>"dc# BGDn8/jPhd'.^mlSX !!vMH@a\YG07>S jC(`9tJ-A5j\RNQ'$I4UlhBfZbYi,#Ȗ42Rde:ۄFK"8~Y.<4m",(r"˒%""nEf촘[,륪bztB\@ :\H (J$62XrD%_FD~"!)'1 %VYōT&Fk{Y@^ojc4h+6ml"XXz̭I5"QT,E(b`:8V`&PӂzG8k;NWc;?΂{"HblCx9aGlyhQ9vr I)8Vӗ&K1?40FB%&d,X;uǬ2WLJ.K`79/ 8"FW ym-;D@p %LVkQ8  pַ}= , ˁiO_,7w>b~)Sn*64(4x}8 (|Zl({ @SDvBl~0+}jX |h9@ 6 tH} )} }@>:ֽ*|''GƮj"3ӠR#Pj`=`ևAzµ,%E38*LF.p9Bf|i7Lz}'|P,tʢlF5 }2?p:x&KI3COjygAl@(J@FQ@MAL!&i0 !+D"& ,z!3c?glgf!VeHXl }&p $3V#%ϛzdi|5( @*f1Tr~8 ǦH|,)Gz:B6 !2TN̋ |F Xynl֨3{"Z, 3 ʺ G3xF-:xKlS/|V["Щ53 3RWG^4'\|(nHrK!J}= M#9&#,7α'ŐbR-QbДJ +c왢 kX9& fJ%\-s•Ѥb40ad=i=ZqJ%1j9]04&' KXw/@VB50q6$HrpMab5crb*oiG.a 2ˀ;g!r5@dp?_J h?4,{>Mp;(ycɅOg,:øg0 g3 NAjԬM! _9 @B? 58B:.Z cE-·"=i/K˱q%h4\; ĉ;`Re:"sD A!K4dU0\ǗҖۏh1j5UBD=daq]䔚ٶEV]/50^"$Ӌ o֋ı#nOw&A2&CzjMkM`ĝf+"<9ZɭSFC3?yמMb,QȉV>k]HcniW`$"D[X,죻k KlaG+hNɚ6H% [Q'Skit 6"o ҸÕ3VrlO}sR}MZYװŬL|Ё$S̹xYUqcr?K=m9YeNL<19&Ǩ#ɧU[^#RhI\@$x[pd|8=r+{JUm)>I_8E 8+^ 𚟹:iI>Ga P0 ,)ĕ1*O}@\HʿAd:8g 1E8 *+37l7.ʉ*m@&v g+n&2JJ ܧ9u8mc!:3͹JB[lΙQʎMu9?h9}.Vؕ5^ɰՃ>H `MS"N9{!<*0EqC{DZ8+FԹB?.FifIriG[SMWip|/jawC<"a!ATر"lĆk,("XB&6ĒCD!zRb|OT~> 0DV)c[bdlAjqʠ"~c l͐:i70)lH-, ;MÈBJ$Ŀ1)mf]&4l(&NM"% sG64,t&D2&/),Cvj,cFJFz+TnB*cF?cFNDͤM<~OHR&|{~80/E,:L`%lP,f,3BeT:])l'r"Y.P,)3Thmo8'c4"""X:~.*5$zw#h#722R3^%~jvZH 8 %.EDsJr*& Kp"+e2'i8i,.cN>>."D@DLJ;n'0NȔ<(Okjlc\LŰ,&(#6†BpnE6%,%C!hkXfrA+9EIc(hN"`k4MV`&`"2~@*Un@wc0c6]? ʀ;2)SҚKQmjb<#&1I6`>UVA+X:ili`zP56O8}<(9R$̧B/n7Ӷ'ZtcE6$eDrC\&I.43OEz("N$'v4꟎RyI6Vr2al0Uj8rVܻ@,G\>QgJЇ/N!4o &׼JDP] Ú"9J 3^5Kfz9 K*' ,3Œpa@ $LB",bw$a1@ cXg */X,7)Z&71e#^AAa?%u5Pd@{JL +3I*yz O@li0 1x7yEH.}cOBs C Q&.afElc7șf"yE9MIՆ.<@B Z$8$BiB.U$_Il"+.c b@g|xBfJ4ej !hF"veSR.a>)Tn? \IxbHABJ׀Հ"?~QϜJZEd<l'$F"ccB`MN@'l')l'K) z@&9'si5%%Z&V--QTU"=BbSb7<P"bj~Z8a:ǮnTP(l(&f.X5Cf)7yMpALfx"'(q5E .ab~d]oTOx.G-cjbG_tbyv?"f6¾7$9f(D*C+In@#/$,`GDa\ g $(e9x$r@ߐ4* @0 @@W:I1 `h A 7R0 ?`J444PQ%#@ Bj @Z!+,hObC<@>CP;?з" eb2_ax͓Hk\kS`kDY@`3;h~wvLFJ_ >}Rllw} }ǀP?:Oph|;->nP+ ƪ 2= 셁)( H~G΀2 t(V*([͔JQ8/P9*2ʄkȢ2j:L}Т"'`ʪL,%((% MSZѨ{5 ڰ2 ض)4Y.[5Jf(~H37!z!PA` ꢫI\ 0k LKh{:RZeK. =`=X'~1+(ҼIz̪G(,Cε(Wd,Rޅm c2BA _7}'}|ɜO)HnSSSAg0~@B1XjL:jLTڄ2ڟ.RzCtj23 mh*@ fq* PBqJFN(tj2&aXlAxJZBV81{L.JϨhΖO*;+z‡@%귳:0uK|w#3Sw4n|#rVQeb9$mFJ0faBZYZ !8ÝSz̀1p,ėSiLTlJI'{#dj%bܞYdB58ߟ('"͑V-5&fI+:]+35ܘx?ǹAF8ZwoCIZsr|K=e}CRd*\Ȅ q5%$團piĠ^:- ,ޑ4F]$en?dU%iE@zNQia=@xbPC#CgMFcR+P*l|JӐCm%SiK"͏ӂjS!\@?0 !)V[>Zs%6@AHaXB&< I`%D?:`Y57 Cq -LSe@#@,CfLaNH@L `, A1|yvQm͸P怤2k ap _JMħb`OTBr)b3' €4& (h' e;e?$pV>MRªW B|%}pJܜ ZpXa\3\ǑJ^U*fd|.۽c ʒKHVT#ADfR.SS135FW{,MdXQ`HW|_@Ys@# PJy1ЃPImi=0%Z 5V WrE 9 ^ς >IKoG$ \ZkA>Ũ=Hy+fu\\Wx+cőK4n *"!Wh9aj܊R]Tꄉi uD?YW>/8v@y"_fE֢S%`:(Ho?L4(q Q<ѨЀD{:6(1dЕd$Qd`ekR.[ #.?rf!3`ot IhoouExom.E$`86D%"I6R$`0"=qٓ`<0Aǧɥ6*!m\9MEfզtq]L4u2ʼ-B(hн|ƍanAB_IYI@eV=h2 EYܔbyl2"6,0@܊h2Y#xS<S""xȋd$Ģ"cL4D})\B|"~6/.J+'@,$F=B!P;&X.8  "FXĤ6 Ft)": FL"*ȂP/#m, Ly#bZ܂:mP°%C0,f4bU@> ƄDjx/$( 4+62͌+^s#V2Ko¬0bZ-qc2d(EDRxeJC,WGYþN#f>B_"["1bK(fjB8-:-vAT/x z,(PF6e >:l*N^5 4Yf0|Q|iKDaaaB!4yz0씫˄l(,qH B%mjhh-v%Ji1b`&X74pV[' o澉jĦD\p|kŮ8J6Kj~D!c?: B8# &`:@  d'| :OCm@6qgȐc23Ze!#R Q\jfF10X/#`YJ~.V?Śx즍LhnY&}0b}Lж$!6"@#%NjtJl$lJ(J>"mdw>),%/nr$~S@+,PWc:SY>7.P#C=bPsc:1bYGZdr'B&GV"H$" 澯L;I0ffD)F܇K5Jc\|R@JH`R2|J~*66Sc .) j5D`*qtbHjLkc1*R-,5&@7IdTjT.e?CCmS'w: Ida.put8& FDYbJ(D)J9C 3C.Ğ2f@AR1yl364* *3"Ӥ#,.\roC.enjQF'4vQlI.dl J̖q3>!I>ݣ*)ȷJ.\K43kbC 4`<d@ 4n[21H.oV\hdk\uclڃ$$#L C" (nR%X*+ڵ{bYOG84Q农$9DN8%R#DbBIcx"6¿o,##\:>HSQ2 Q.ã-.A(ʜ6Vچ 48*YZfMlOH@i4#d3dQ+("Bu5$N LBȄF*Rkȧi/6-+C[POuDjNz!krY(} #ljE#D#>(j)#CXdP"2dc_8T90pDB>,` M@ * "#./Qr#tB>H1P n|F"0H6,El'ɽrctH!dEM4f淖@I-  @ hL$,ߢ|_@%60$",CFK#C,k#dΞafpvƞ/PD(Ckı.;)MC|xklc;.&oq!"Dc,@,cjKsҏxH`ĩ.c.ꒆLM&>K5SDJB,gEho:e-q4MjSE /d0mU-C!eABѕXs  ZYZȣ{t %m2$~QH#D4H!6AގUnzN VLT룪c#P[*<(ba!nB!/`21p %:ir*6$/xm|K;f8{ OJqOJv@j7FT?@BYĸ0d2pA)qrc"IY(SicID, @P ' ?ϸK  0B&8 "PTH 0}=Ϸ {!p@*o3Kc90 Კ1 %  BG%pWKy@м(Ф9E}XH BT h7@|Ph7-D.| `65 8W-oe1 =:<~!Z)!hR:'ԡ! zH#| ~BAPjYA·.Ԃ!!Ơ$꼈 "pB(tP)3q$/r҃I2+8ά0:D@F7=P;x 9#|hSjhOZߠ8)!k|;|绚!@Cx|G "'|8 },4Ph: 9NrMx4?aE1$zQ(x}Q 7B ֨h֐]"U:Hp|wav,bGz @/ Ƨڀ28ЫK֨Z0E8I'}ڇthV8` , g8zp&AiuǸm@w`J\t)v^V`[v{ 2^#?"@)!9$P(x 8@9 9[Xnp. X#8> I)]u]> ߒNGk `Q3[ &5hfn}cA)M#Ϫn.Pȃ#w nϟ9` DA/(r]׺_  rx=GmD;CCGI + ݸLIpԉ! eHRD%Y#oIcaggRsAcך%9`pC{)TӐ ,JO[sU^hU$QR@dJd%#|/Ҁl?ü~> :~%?P6<-a@`Uh6zNx?WQ9bLJhe/v|&K!G")w_URa ߨL> .Dz@ |GX@LPj4EXKc)rgkh3ej_k-DNHs&Es0 n@@w@@XȇBȠ!c$Z;ǰE(+@ǜ&)txPau5)@ )z!E›w;HDA#OSZ ?HKG (4CG<$Z9L{=%!=(ZP0x<@o&Uc9"73؂0Mȍ]G vu1(uv;7\ZӀ-iC+ =FGylG'5>($maRo#CI%%Si /=5N9-8ʣ8S(=ATNٮeF.ET"bY#2AH a$D=GE,@nC,A` hV@ Py>@y>ǩ $z 9%(iMבV9Jo-LZ&8Dx} ) |>f.x T^3J)Bjid7 9ˀSH}ɨhWzWCC!LI49}#R)%҂2K!i({=pt+N@R,0Ø ;H  `! Z>E)вL7,,!Cz]\XL9Y9BYh~7=Kz췾5XOcD"Oga\t-%–E!A`.9,#yyh#7þ9T/P ⚔>I]69w-j D!>ա*)N`&H$`0$Zg(x&B \eh"Rh0#& &iH*Ԉ"FcD W !C^uD/bvB,+^$! 8J"`AERS$3DD"JEhE)%"!#C4KXĂ%< CJDPB.ƀ٥k2XLI ܣA2,d$F$*4EtljD KHl(BdbhB8":$cVmk<.o!x@tl8T8]D ,dKEV!Ã]b@KX-"v%2>1 D L2HL DL2Dwq#N6i̱h`8HaJ~$T,9N8  @ai!rm`v}`p0A&! B&`@ HR!b "aTD"+'Jr?\g0=GH:hT@L@ !G@a*@T`(`%f^->% E$ca2? !(aO[`#ADI(S8Pj$*ae gjn`8^m@"lIA!!" AJ` )sAmR0@\`D@\4t/2LrO~.DޑTMF:b9H80G2a,Z:qfU4T/#BB=B7,_G8~A%"Fx%@2@Vg#DJeMef Q׫Y < 9AI3C YLV!POOBsV$ &cpRKD'x$.ƊUIQi0ID~8B/ V D ܷ5n$ #¾G`=$*$&=%T"(7d=+L@KBJVh;H,-$M<ð_d TS,:./f[̦:h"GxQ"N$,jUQxAN5e $ #):8 B ,,#PS347"r.@ΰTAI~> v$6{``l sER04!"cs4jcE'AG*)` Q("M @ogD@)e@BL!KfU0MmpPn(j *jAބPVv/ VHb3kL?"4$wH!g,TG3d<$)EKHbQv^s#gbB% J@E 00„W0e%F'&CҒWE ;dP}_MRE m%+ y} 8c!e.HFEiNo׶|8\GQyX!dMXk:j1]dhVx/B!&,2D$qB1$K"/&VwMQCʫSJcKC +7oa )ZKRX>PvbdhP+È)MMJ:RF N4ɋXZ=0E`@#fϮ'Q;D.mB^{8"1cH"$[$cR#\鈺RHD%&9[<|*KI$Q% b=w#!54dY,S(,ZzOhd8#KGU.iMYo)!ÿ՜酜*s=Of8X{}ڿ!Uv?^̐ Y>b4 ,dt$t,0TFΪ%DgbֶexdfJ#^rP)K$fABD!(ӄv#Dc HV !l#Tm@A6"%M*F\"LDV;!qS͜aJc+6I&DXCD/LK.G-% gDpeW$Wj#k#"# @@@|^< #)C00҇}$O (TZf`7RJ&D߳J}HgIIAr \!|ԟ[@s+~Z8}ʰy5r))J%e2yd&V 0ID?5S&qdJ}(U]&,IS>=^q5?Ԯ@m#| !cT MRJ&lTA,"P*) Ԕ(*J̈ȨHP7lf$j A<,3@9|_J< *.+Ҫ-KJa̋2G* s|0'˲*ҌG1JDnDH0?BF 82Q҄*ID}797 ĮjCWT꘦Ф@p@(&"v+bH#ǰ !pԥ2`) zv`A&aQ\Ҫ!ǹw LXҊNu{":/?Dy P}gz 4V LI~!ǹJ4܊ 'CөX @(PN\` eb.螬lz}Wg (A fYG }B @ 8,[CVE) ?K2}JԴ)xOFB **|+PP,(.ֹ %,lzf0i2\2mg6@fdkTc$O`K̉X c2:$E#xS$H;12 u˛Godȕ "~@KGH{z2Q>$+ҁE"K]kFȻ$e ]BC 2<5F$nYNj<7[ ͬkHi.,9R9H$K),.:ATb7(촬>I y&-"$0bq7 %J D%@E)%'$%DTMjoJJ5h*96f}ϡp_%5:Kt&uv1.WBqLĜ.Jl)]H1T"&i>$J E-,3I# ";P$_T%- >pɪIjc)4yZOZje!Q}6(e[R50n8r\H"CZRT\L  `QJ_PmK$I]HoU=j %kAEv*SijTRbu[%Ci.R.MׯV)u'*}j-KuY 1W2D%tIm X"@Q/NܖH!17be +K?O$M.RKdI\- c'e ԴTV!g P| JUlQX5ȬRMj89S=٠5O<@c^CN=qzk-5%.Y5t+|D`UF+ AG(%캅QN`,A0a(op |.WvvzN ,&`4-== 0 A`A=ޟpW=C2d&+jYK$`oDR% 6!ţk1j>B-"~Fⲃ h dܭ%h&OBL$,|g򕧕zZG`ׂhh")gp1+P#$C bDS)(s( cvF$ˏDĢ6R,ȰH̀K𨌐0RvR5`$ $.Ԅ|$V$J 骰=)C#$=cIo`T@,O*P1 o`3*(HX1+;9H]LDf[_/>{PVdZ=- a5Нn!+dޤ36rIM|֗* Նz0 Bu0ĔFMN۵II12d!aW$@~kJJ@bT,l ʈ =f ü("bAFG0ȏb'n""# !VF0(r$ @vb%#赐R)!hn)e 2%N.jb AIT\ԍOL͟A4 2<-P-n%O ,)**NBc; 0ARvvSSn.F5T'X A _qHs XdX%P@O%R0/%''5jGAh@0 *΁" }_ z^6z4~XSDd`;^O *̫-T-kvʄM꼝,J4HBHzKZr+ HkBJh- 2ӫg󼉨I ?< T6$t$$8,y"jk*KJ"Ch#B~Xס*ڼ(GZ tD ,AsD)D8~RI\KJӨJ]+찁l3K{ ˔'E#ܙV̚; SQ NO $ JYx7F2"!oK*qJ U2Ө4 yޗ"Ƅ^T (lFHVZԔ$tl- ,IZм%kC:KaBeOQRLTڼğJ :0U_B 2~&GE=r0  HFO#|)T}:Z2~6˲,~ J3i%.5}LoycUȀ Kr8]ы)ZΙu15)^N*"hhhz$D0on֤d &75Sg1K~zUBJF1ZM@TVAٺT{D"Ct%N0O~fm)*eښAJs4`JewWMI5k 4P2[r gefӁ*gY1V(_ +@(lG(AĨ]d9En&EDNV{z؜:_Rh\ֻ=9[CMO"LG.D T/ⳕR*k<}^ٓ.^UÓOAFjIӶe*AZa0(؃Z2ZICWъ `  M|}65Ҏy4AbLJ䯮tYYbOl%WNH%q@b5uH֚#oCGŒM=%] cz"=1*jDNb*n çr"7De:EEq-Ŧ@iK-$xf]&XSAfd3D@>-F{e!JQPq@Ƭ'}Z+ehJYt!r`EIDwtT0\N\0X:3K Q#4=ɕå0Aт HG%"*,r> :']cxljv̲Jʾ CYݮdH@<<@ :+xI $0#dA%~7}9AL9jo\C,\CylWTXBc&;aGH92g|L[C^5SHrhq9-gUs,ZVTKT=D%"iĞ#52&F"p$-7$̞̋'6bȧL%:]o5bȌmANZ[=x!4thd 2EԾWDz>kQ~-mvŻ=Vb3O3{/{ +T+ d=X,VBgmu9,\KtNd&e ȸ<R 14E~1r LkLfЦ֑/6lvF<|MCz+htiI,*z?0*D.NCPˢkjA&3J|O bT"?:2*<,?P_B~Ls4념d(*c,h4Mbn:vAnrO$OIH%NaʨBl0f}b$l^>J,,!lbhFl~osE`P' Z$FJ˾iJpΣNF<=*`aϖPQ@ډA ,hVk!sIAmX{UP@w  /?ڍb7%#߯B谜b[fxu?p,Ib"<D }qn}?-mjV\bn^kPjSGzQʔΣyڀ,S9ZQ @8+H/&,bxI*2(bn#ʭKB.^M+s-HJ9*2+ 42,O=Zr:j"ĩ |b#ތ7o-q"M &8)'̠ e=N>FMbf,L37)j)K0jK-"(sF0t# VnjMZ:h97)B@r$`* j Wؠ4~/ȥH۴\*ǵ:蚮(wGI!,7z+<?|u*,`T } pk JBXG42vcuo+ZU& ˮ2it/u<8,㺟WC%Ϣ HpZ!wmnM=F-A⊬\}^SCE9LE [kd]1k[KzEpWLJEjT?9*6IH<ꊃ DuAi97˼N<<)}Z F+ͱ70@}4JyduUBS 5VѨ'1T^(-͔ )}E%D)j |ȃq5ĤUD^6DŶWXw=-!GlL]-^nA7:ym)yRGx>SksI-j#%R bR(V-18^ZTW,"XM2[P,whW[i1fT/t`C:5dʀ'-&ػ% _E$1_G\u"rD9V PUߤ((ՠC.,=IJs Б3Ms%LARU(ObI}U a -?|"1\/A2ڞ4!"Ȉ+蠸 )`N9[.kS!ض/47$̙ Amԯ2#,TS,h 'I%[8Fڂ"@"+At˘q& {\ĒV)ˡc>Cؚ3{(I6ʖW50W`wPk&\KLRc9s: m)e |GNF98nG$F؂S ZļX[Iz9 {S*f睩N9{M`齳0`16iʄ.ݨ[^@ 1H- *׆QlrY7ydŕ',/ mYok/1 a@v j删qYUYsb!39F1 XC"V( )o^}r~7t 7DpDTZ@38B2 tQG4 \cԭ2% KF͒VI@eVBeVN5~*[CKjEQ1(e Ucc:NȽ:,.+Pg*<9]|m^Σ&Jɹqex9XAAkuSyأWS_mAHӅ b6\aJwI)I(NR^8Jen; =ǵ(`b:Rvw&S\rLfcy;м\sM] 1>Q.bCN9g5JL%s/ Lbb3Ӗ2DUM3$ߖވ^R%MgQ ݨN4h}H%)yNYFr͠]Lg0z*{u Ƨ8m끧 B7iK8YʶLt TE%Xdw]z쪻)vAai1twCjvWvQYv P8$ Ba@ !xN cHt  @d!= f `%o^D4:#MJQ.a5J]GaP x+RQYI De%2, (J/(m3iܒ-vV [Wrn(|eQx,>AS\mX |?#V *Hkzԙ8[sA$" C$Jh$*-;4, h+1$F GZlHؠdj +K[.Rg/DzD,$-(޴.42l+B?S&C5a/,GRB$dLH&6"B-C,=@ OK!O v ,J*Z3rݬI5]Q :811'iD,jMHGP5Z S$l/5jlUkS  "+U0 LZ++ȕ*ˀOD_dq 73=8t.Nލ3/ 1A L>,e|qKYTL#U$zk=(~eEbP7&]iOVwMo̻_i`<`ԧ&~Z./o=g7][NՐ:6k1 B^ܭ%tW]6w ɌwGl(p- s=QsNֽ[/{ew[a pv#$rٓJ?Ҵ$ QuvMU<44 "b6wjnrPTby$-T+i#% _h#VI ?P#ц@:8 B0, ZTJIl'Z5)|;P\9M= BPY3L]]=/o ܹrv<7CG^ &C|1OxFYK a29u)gg ՃM rO[=@tύ'*$)e諓e}-ځnLNm.b9)ZAD1 ?(HG.vP5#H5><%ct՘x=N@*~@\QtAi"8 i}fP0*/t霣Io=8¢SHL*%͝2 QP]c֕q"z;Q(NXi#ƶd~sX@ Lfn);BT#bRy(a4 S&Ű:7#+2U=$giI٠Z4x*zD_UنRpUvs'-(?Ԓzu4 bhHɇ@!㧆-i jJSj]xd2l2H'~OI3wq6mP&v9g7>'‘Pqg䎨3H@9(T,yQMI mNMP-Hc '+cK#޻r|2]HĹXJ@)n$6oOMr|(!Z}W Ryhf &XYfRX$xV{9RUym7ku.[)jasH&FW`8ׁ"X6}W/3Z|)H["XzQdn!fE2MSӺr $3u$o){8v]hB@@ @?Pd4A8V-D@bH᱘>%"cȴ€2U? N5)F3|7BGm<1H@uY"5@17OS [mڭsm P~$tסwEV@ Jqt)f f #YBs.ew 3>lo\~n MKw=wA3 XT vzW9b[ܤ"K;楧A `*}AnSb- bϡZتH,@ KdB  )`%0z0z* 4#$<,<C2<C>==$Aperio Image Library v11.2.1 label 387x463G3 %%<"Umf׸r [s6MOh  /G`x(R $<4Umi˝S`1_IVaky&,۽  S(Q19  , ].'q$uP7}[{vs;Nb&XQ- | ?(((KaSh(eBE$ʲ?aS)*2OBu,8 dd;1{R&}܎iHg9HʑJGQM V%#?z?2—= r)O^K#,nodsF})D& #[֌sF?ZxQ4YzӕCcPA46 =F?ScfEm ^q?Bh`hԌ7Σ9Zp@Ec}:J#8}9J0O/b*8>7nN.'<40`| ! jِFs_*@1$y{L<9"[C 2"W.XGH]Ae9ڥرN점:)j]ث(*OP{Ոҥ* 8$r;Hζp9;oNܲ>XI 5Z`V V8]{֭bH?,gCڪEsj.GUQ;TT$FBPʿ!3׽J΄ye[s`#6Eci% tA={قXee*y9׽)m[ +*Jאw][Ak} PYzyƍQ+^jFI~M^@?\s- MS ?\sI4Ŵg0L"7}nip!$9h[ɗmQqds׏ز5W+y'Wh;}YehRy&nNFs8X.xmm?)rA9Q@"ǹCnT<}}6);Ȯn-ÆIUU:R3mKon@da3rpxV[P%ϖÈNIr3eidkeRVE\prNrH$s{ 2GgrH͋lhġB ])zcI,Y5og$Юɑ+ OGүKhkQoxP>Rry=ҍ,=pI ۤyP6u VѤ_+Ys3# 91ƦA-[>k3IڣA@_8}զIBӹn}h3 p D^g=s=;f-Mw\I9aqΧZw|mg4dfPJ q;dPA4L"gUs!a qzT j Y$`z I9uvpZ\5 A>bG9$zgw<:t t$:r9H=i}, hm,rNr{,[# mc'99$]6!6>GoGS&2h12l,׌raVX"M@ȒH99Ak(zC 9990ZI çL˙zE 79Yʙ,0 )!G'&hmv7ހR:moLCm/y0@'j ޱk{xw)f#pqt#[&oac#ԃ g9r3WpV7Fz g?NrD73]@}3bOe1$=9'̪ xeF0rņœ'4$ yueN镚> 1,7}O;yNF| KM*K3ž:zmX-.v~#sqm kk%773JDq㟧mI srL-迾;8B8z;M_f3Ҡ&M!GbN6eMs,(#6\kr6CCǎPF&3OX"FٷTnB go%.^yq 37 8 5 521, -~[&l^~c4 5$bFH:rA\皊JH#4#=9 }r3SK؋frX#=pW>ꭝB?0XX(Vx$gϯCyC1b@Ҥ #[ӵ C>ч(RH +53*,ncFrHdӡơ 6A=J!_3@nK.r2A#O>Is*/ +f9 imt&jT<ʣ88zgi$Χo3,pK" eB ad= ML,n54(RࠐXgs .i'bW,Al03z bBH-3v*&c$3ɹ-KXD3Gq<&Fs^o0GYhnH䍿xp`Nw`gqY98Q0#my@:wPѭ~郒x#gմgm.$`d11wὐ\ӓG֭6kl!bl`GHўh 0`ڻ'`8sްm巊Uϼmq8s=vj(ȱRǓ'5S:Q.FwHIJOsT̼r'",2JxF9'9Z<R8-.s#&.Nk79&KA2ΥM#95Jhu$3<  qy4SA%}qo#&´ffO: R[\ ` Q%|71oÑ=fʺy$.38ʨ}1{bia=6mǔ 1Pl^JiG`JP]jk;UT2qɐs o֞l+43H?r=s&ID+K2?ϩN''kIdgo$68E\[K%»Obq R YbgOZ[`}?YGwzU%lַ&ɣKp@ 댜Kd+][Yw8  uwLer"H$7t`A0MkLGe5<8c,;r}峉A$R^wgn>u,k59yݞ[89>#kLRo"f3,{~HϩjdjPBͲ5bP!pS^%<+76qښyrJ)쏕zLRȊ0pȬRS pH=1OB]-1%x`9qOn*ONFٜ[9!Q=xh?to ۻmBP?=sDH剜Fr.\~>r~-vڵ<9kS{}ffӍVS#[s[~7 g Z(9?@9'qIoZ6GF2K*X}$)@.HHhr2O9'qV緆oy1rp׎tjbԴ3kt%`˅oïw[g[fÐN@8u~i4QO< ==hd8,XQ+*3}B@'NU屚1 dW*ïM{;SYZ"pMg8P*vZukǹޡ{R%cEv+R13׊d6GrQ 'jzYh3ynp}F:`v5|I}.v v{tj05%% 6~ g0q"p ;{7QEx qZ2CG]A9n[CހP=:r  X߰D[q#h8A׎@X >e4"$UeO_DӡA 2yg74Ur@1 /b3~+ (h6G${FPc83LqӼB<ھ8J 7 @~:wK6u"M#cQAcLqӻI.^:$ '%F1p;9昲 4ݾx.'q^1pP:K d챟11ÎA;`8y_sr݁a#q׎j+0L;*dF3x ˪}CrqT h_ 28\u㚞.-If   =@"k KB$ O5>VEho%ԧ ܅=@AniЋ$KxH#̊ь#t=:,J3ʌdd{1΍=S]6jș[ gǸk6;HrϵA\tӭonNj9Fn8Tt)4  70p~s*iݖX5)N$%y>yIkg-0*mldM >rzmB_-m( SfO\{[ ?$D!T2NlZKmYp'L΄62]_-&,R/eB@5-k4 22"?ǝ#ԽmbB#$S0vzvLѴ[ekigE+ xcsR"Cqu ";Cd#ߎñP?q_#DKFP s#\UeScUq0ē) 6;tgn*S3 ?_&$H$ݞ82I Onkf VWK1`#8'{uIngiq349 z?[m{EiXd\F@֥ y'YHz[dp{lО4X ̐:n=T@OP0jZ@VInbP|§n+w(еMYg=BAc׿;md TԷ%TwY 2H{coQqy7AZPΜ:mT^m9Dn/zG^[o"BBr2 %@swr+ ClKJ $caҫYw $uI䁎9!Kyq}hb6,Yy:0[$&hFr:ʆʚQ%8$s$u'_x6"V_*] s>4[ƓtIg9$㞿̎<`+ST;4<Ÿ`\AkfUxwp8G1${D?ISq%v18$ G8w?GԒZ8J # O<%᷐H<[xp%Dь ps&h IH%l1:_ $hfYqd.:>ԐG2ɖ'v+cs^[xVPHJ}utӷh-4[D J>: sn=vPZiJ#*ِq#qӜt[^9kIN0O'z$$M<6ES=@e(qDvG5-@o*9u&Fт0}OcdŸB% @@=e uBd3 :{5xq4k,J[k?yᰉq2+7Uns_b7U$$mx׹o(4`D2Yp~PO#$f7t( (YAgI6O1S sz[5s1xܱ yzli TcV_Lw&B'Nv0T9$wY,1\a28w:ũqcles+IpvNOw[K&?1mmA@@ q`$w}aR7,5p0qs-߀K+Fin%?eP'Bc9NI'e-HOxШUR1$sBl^V0^ (ͼ-n%6`rqR9msnFpQw` ޖ>eEgVު 0q:g9.J$ݽ+r08}M:me@ ;08q4kIYJcuW= Br[puRuG'Yn.ao!P`*2{-txdo2O098מ(,Q77[ve9 s`=Ò9-좚PpX3|#'^x.YT3g@_PZH$$g$܅VW "`BxV rII?ZRX iI 1GI,zۛ|Rd,IdWH-9VUh+\u#UE"2QBWHsZ(`,0qOQ9892' Ǚ/$S5=ͫ_me$+n!ר뜜/Ihd0$@;OS=ifdy"I9 ;##֪Ͳ4:#Gp$=jݴ2YDֳBc%d遅T`}1錘-! &N@>Lzc&med'21CԜu<c&9]/iXw'8O1H!#-,q[8x8Qz*越Cb81z)IfLFs+1z)W-M~#8>9=qؔk "vsr H {ױ,e]C&Ҹ‚r8?^ƔACyP(0^ ={N#Vvˆ 8v&Rf94lBA8 qM^Ӯ|)&f MɌp@rV-}{ODXp?*PE-c()OoX论و qΑJFdgPTdOHcTtKw.\ddOo[VD22xw z^D.m&Y. :SᶅdSp$aU}>%tFU̲`%@늳ycHX$wxV!iU%)[}ڣKT('#LH8b8Ϩjm  gTHf]}p03#6(m9?@z\QymteG)#2 r8g=DCa#I[y1HYP+ Th&8b>qtkt_8NyIgrT rHI i}1xQ] `qԝ܃]2&[ba[":#}+^KkeDÐ8qӣ|`ġLwh`>QG:0E=f*I5O>+H@+23ISGc&DX*mf@<9*AH%T,d8yѱĵt|m,fO|~y*m̱~^E(#ӿ5LFfw\mrIz.f2|eO9}jHt쌒;d#-#N*myaۀq2R`>R\E s"mM"28v!p[qdtxmmӵ, vtx+(>v[$ gmu _9YBg%IO'#:P5ř9\#RTy9}sӥJ,uǚ4D.KeOBy9׿N tRܤfUA hVQLuxnc3 1"b$HPFp=N@Da €3G_^=4{ۍyow'<:]Oq$vUOs_~;;g01'-qߎ'15ŜNkL qױWvi֑3KI`c~$lżhy`x>%V9Ydr`rH8c4GoN&(+AsS> ov' prH8cj;P,hqF<<3q˼4ь 'h` ٣o~Ш '?vpxKo7k1QnyU!d)wrx ݎMuO+R |\gGVHG#$aG򊑮eLp:}p{,_ަV]>^qkK2F2]392#Fr[)#EHHE !XgKqWMS=NF3;6h!/ \y#;'#T HO$T n'c! zqKW/#vN@B'>=8%~Uв#E~7sC];JCvH41}5>L:3#hJr N0Bs׍ ]Z *{h#kb7qPߍ[i"!Xd W=T݌Q%]ou\~C wSR[8n&/)0HHRH, A9i7&G8UU0\`IϧlsUdQmˀB ppA?NK=ݦ.;\ H'xxFqcs$+hYd Q3O䶺Igm1? pNJ=]+tD#WHTOj !Kfm䷖H(Fҹ9*{tUI {pfB񟸊4|A㷭T QޫL?sR޵m*Cr^GR~@Pt_H8vdMz|Pdʪ#6Z{hgy^iynsTЮA{ekI UCUF:pGL X.e"GS``Ќ\jap(#'~qm_ f$Dc،=Cq=d1iPI#G1ywxx & W w gLիk cVt(|J8?ws?fY-ԋȅ`T++9:״+i)j~4*zqO4e7gbl!IS~4w+bVH AO׽ch|ʀiʕe=-D<Ȋ6=\dW0G cos)\D3GzKsHLA/qI#Ԛi n&r>2ᛱ#8Tm_}ҸT $3s &]0y ᛱQR  2 'NF._*Tge HʜINF+iY7cİ&5 Lzcܟ`D>r<'S;agz!XaӢC,VYZfPg;h~te`zummNEpȒrx @SߦjԖ@OpXǀ{d u隳 )f5' UǀgM6Wg(&e,8Ld?/sMbΩƲlN*vy<@6Gv?/zqSh`IHaTgWrrWv8:A1sni$rAyB;vqR:ʚѮuW>L.~ieU 0z u=:,Yg\e#m3pemnHAin w/4R+cfzs~F&>Jάѳ4s + `p姹Y3:Pmiq@O^Gc"b.s$s 6яsI͙y!;+$Lʙ\;aN[u[-I!gG eN1PXM&BP\L :ȫp@}b]imxy09vqxug ̋ N1Gɶy@7$Edqƙ ӛ.7ۀ tn-ľDPq9Hwv71\E# p}?jK{Y4GFek1^=p =N1iWIgr3Ťy]IN13Ik֗$qǘr\OSpyvMNnsE (c'1ߎ}ͪVD >`##ꐇ)%yt6%a^9 gcݼ[2, y$pzp7WBȷTiVm$u9n5gpX. -v-!XdMPeXHW88r3ל^mb_%YW~4eP;r3ל[+ڶBEm w~TGLu20:c=ݎxsEJrݺf7`EOԮ8+g#n1׏JZO\^F(P8dZNyKQ⓶1Iߥ'~xȦӸ(8bFO(@RFx)A8Fq<{ _jL/ҚxAQuJ<):q)gގi3KPF0=hQt?.*8#Aco=h;~_ ?(((BW$>QL)@([Q =1IIQ)rQE2(^zS0r9m~N;SDR>^1VxNHV"kG3JrPlgb~ee(u>qGҞ0QO-zQR[;IpVP~TېkF{KX`tRrXu@#w׷[eJbѼ.H=:Qu ebxBU.V6+Bc=ҖA7irp?*F!fBzcʶ`47YHa'3>PHb'4|8 Hb?WJp@0:c?ZyT]c^b\yf:*1׭F>:)UA | {ڙGEԀY@Wlj/ C&qy˩~ك=@qFʢ!: Wa]Cy|w!Lx2ͻ3hON+ܐpF>G/F0F>qVOP.;}}iw4DFpI'ޙ 1Pl8iTl1#I Q&S‘We@}2I8 ,u?jeĞYX`=]O KjPC,rr۞;מ5jmx}%Dlxd`zg =Β t <3 E5ڠKd&z8zb*FTWzztua[i` \arOo\Z"qqaX6^sלg-0T~sP 2ο(+}}L> C 0FPd9<4=mKD"E,F38#RAi% 9=ԉ;oj#s&LlrHyv8,d[$[18 u#YU-" Ԏ}[)g;?eBڤN\%Vuk󿿭NtEG=>RRNq÷6 #Uݐ20gjCb5h6% Sd'cP#r3Bt Mce$ CUmWG(9'ryК\3X-pB:yO7w$O2IsI&7pΡ"xH,X,xP=xZxӒkĸD9q<^=jZb*:b \Ͻ6x-pbpn=|:Hk`zϸor@&@}qmZG;$Ax!;}=3ޣ.>?r wO7A3$زQ~Ig{qR}A4*AVMĒ$yhKP?rq$KS 5Cx֚,9qǶ݁-9#ϭ\MR ܳ9}iNj g1\n֕-L>AKxEP=N7wOxaˏΌ}ŒZ7FUFH>'Ӟ[pfy%\; $su$w\ybU$^OZe L[ "بSOӵZnV@Bô( O<ߦ;U{:kcgP"(icjGF ޜR ƮG#9ޜTJsޜTVv:+o 6_㓍ZdKqDB,=N7槎MAB"Ìd8GOo@r݈Ox $j3;b>n;V9i@!b;ԩ&,F|()i|/$J]ٗLnw7}*R5<J *D(ب•@1tL̡[NL(=ڡ^ QwRH̡JWv=3sTYe\}ݚ xv7z:l[eQ g@Vd[7z֘,/5 $1FCyrwsu0w&`  %iCwWw=?\sb[Mcʳ[zK{[C+Om Vs3ϿRDul8$ꑲvXP09N:f& -FFNs9֒;L3ϵHkTh݊1otI x߀Rn&Qۀ14þ 7.N$ɉ|ЮA74K qe1Ӹ75 )ظ` ab 56\8uGtq<Ռ@d8݌4v$T҃3'm`խdgXsW O-д1a qb7dZvR?P.ϽUG1uǽF^<`| B u=MA#_ƌqhQ7xzV]q)]Qӎ>ҬYʋ>Җg2` 2:qT1[kV("n l⠒yyt.Id|9O¦[rĨvy׹ʎ0 p:^ :3iaYi9`cH𼄩F%H=y-QDlnC.%X}KRm+سevd y-K-$ !QpGnN2kC1PʡU|ISB0+oWn0: I5Il5T|5 9#ݿҘ)1\awݿң2]-b38]ҭZ@ 6޸>N25,1~"m0p7s~db@6N1׏Sə0۷* N1׏]lnO,19^OqM2e''Oք%IcCrGB eHWP eSzϹTTO߸{˧%L(,{q٥(Tu?72? Xqz lM_n9#`~4aʪc$9=[M;LjX䞧!Ӡ[xqآ:9Dɾ0ʝ+WV>q=J#DRiېt]ÏYTB n ~0[lfݿ>ئi,̅pp?vb-kAs8RI=H,S*}@ڟ#lK ~3QXO J#p=*6ǖ\)Bң](lˀIzTV̻1$PN[$u]>Wa[ OGZ&ɦ|{5zA`scҧ xh 8=t}szST%+>7㯹7} !:Π}%jP[qh1eBO?GĎc`m8Jgu lUק$T~eI'XFYa?cH~(/]3H^,2MOS9m^@#X!c\XA$%Sm~xXe{/K"e~tˈ7 F( =5#T7 vR-2ͱRY\3?޳-rLZdǾy-TuwhIzŬ) D-Î9qRב}i8ϯqL[ CP1$. 3f܉&VL!T8~}̰eo#M2[r*83bƼ1!r\gj.!8Y88g'vzN9 mQUxU9tmRBѠQ6̕ 1EVL&y-F 1UYĦKt63 8?Kc\ioB",H$pk[0^G98I`pxM>3@@9#6mMch"+j θGUtcPs9=ZXao61!nH=9* ITI 35<)l3)rd1S댌v΄H`&>Tc&Heg2~9*yM+Q:dHңO,H7˞J1RDmn9@@yiU#J4hP.QˏnO f"{.N%P`aF=;{ oң*6:w& [t z]8`d_ƕP暥^2zc5='m+}:SrcA\JNF1'=B9})1qKtJ^qF8җsގ4HZU;z~>s9:B:(`)(((rQHѶ84QMh()T#eQO2;"cy3.IJJ(1`R"l 0NNi񡑶xZP O֟ko%Q/= F퓏 >(b[A NÄ cIsFxSlWh6dg>خ(j`v((((((((((((1ڊ((((((Q;QEQEQEQEQEQEQEQE4XڐHW$d;SiqEQEQEQF(~`QGQEQEQEQEQEQEQEQEQEQF(QEQEQEQEQEQEQEQEQEb((((1F3AF(((1EQEQEQ(ia ϭ:EQEQEQERG"b-QEQEQEQE#*G,2H"v)JdK eȨ--0BFF EscmuIȮcUћK_i T$er3 x9+"M-R}=D7$}tcE0H6e x9jӢd̮ 8 =s_Wӭ͝I Bw0ͧ=+}j\27@s.0ݴrn-+8di@Ÿ^F:~t#0봅qU$O0ᶒ6NztB2G=*!, !3۱3b,]$r1n㝠`~T"T'@$J] |Jgc8eg qjX qjj//J40EwOH^_-#b@9JHNX|7krf^'t}ἧ>iq'8qO.[rw2QqWe]إoO&'i=rhөGOzLm"zQJ>Mtv9;IҌ>Լ␊1IۃH x~4ʗczN9ъAߚPMw8׊<FN(g Ri(J1۽M9/:99"Կʜ-T~4 `~ xqq (((((VERQEQK袒(Rv;҅,p:ԩ*N "Nx6M=uoHl RXT*Gz?}2˻zI5մ;A9W;ճԒkѴKO8Pwɭ'bU=cME;wv8UWOZ&cw8UWNXfuH`vc$Փ) Wa889Ү[9R%xp9z҇ЊMIR PRb"p4dR_Z23Mz ֔QA$v4>PXQzRdZPā =h!c;N})2=7zPOj(ȥ;FEL&TRPh"6ymZM8~Tѿ*~xɥȣ+KEdRdQ)7-.E QIzPs<3h?:"@(9QHN(ȣ'?tgKKKFEQEy;ѹsғ M.iiw (&ERQEf@M8&4oQޖdQFFi `Gʌ\]‚@7 2(p#֓"rёKKRFIEdQz2)2=hȣppZM848RQg4n_Z7Z2=i7/dznԊB:FE.E.FGndQFFEdQIFESMgEi8F'jgKOȩdQFTLA`1֘Gw0Qq yc*ȍi"8Xi,R(dpAKg)\4dR@e=Re}ERQFFq0(Ȣ 2=i2=>\Q}E.G#QǵnqFqFqG"(qFqFQFE{QFG'`J2zсFGzсFGQFW֎=EfR{Q0)2qITyn-sinG8+;vR ե (=sҼxuU"{d Yv$;A*}e;4oJ= ^mj [*,۝#r+ȕѥeCV\V7#]f3*ns̬K<@ ̨vqjF,w1HcXbvX9>s{Һ2)eӟzƫ6qFR7ɒz`gMMDoѵ%`c)!FܓӿxB5HbX#TZvD,pfCkp֭O/ji:Ue)lzQ #=z++pqSiQ@>N:EFQN;E92c62ǠR\ {_}kBHD1(=S# 0UbpGퟒœ$`@ZO8)ʻ1u$(<0Np ֌yt4jn攮@tQأ,84c#F849lfy(!NS;~Oz~+N.2R;v&T n\R~nPH-_ @rz J폘TTރ9'^ޝiwN'UŻSY r?r+&=SFϡbSsR uF:Ԡ/QKKN֐=E(@UbcZ ␜ Z)h(M!`9&)jԛ֐!IR}/<(ޟZO=':,yϘ eOI(C>t}z/ѽ?(AG޿_Μg|RCC#Κ'/2;UWw1U2we$|`7zRoZ:}E(uR;` ֛+| "lF6G_QRP>=EQ}GA`s3 ֔zPOFQ(ܾ#84:df ց\FAiw/$h$P@!ES[2E)=H2qޘ2<֙ z)zȥϵ';qMo=iii4QQE8y8z$q~t:K'𥥧b((((EQEQEQI) ZBF) *GpiALrÀy8;@ny}ֺ{4_rh8:O-~Yb`08V>Yi%*2~㚇Nu)mfX`QGD*i8$ "XTm̋pN =W}ꍭ*E KX G<{fh#(FsG bw`$^7dHǯ6\򣣤|W]w~$v&+:\#E]| ʽWye{QSK_ ׌DdȢEC gҚ( x>|xZK]c}pOƮb!l1uAvu=Gf(=;F1Gxmd㣞qOh!}Zq7 gq.zcv~bk;< 3?$ciO։#Y>򱮃Ef!AF=NkBM~4)>(Gnb(.2i1/>1Is4R1H4{G⃟JnZ)0in)08zQMޣS)O87#^x"R cӏO ҂qKJ^HF &}(){uxezIӊ(ےj((:26` ȦRQEQN@֭5jvBJFy%B`cc19͌1L4`)(b=sziZRlS|vH9JIlRIwq)K/h@r[)S'8>9S8 4R$8Z3#J\vߗ ;f8=?Zp;O*^,7M$zBHh'ޑn;rW{Rg)hq89QN78]uJ_ƏK)QO1E\"F f9ܞ\nvq#?k0&˴sy~ho2h=OGINt>< H1ޗwKΤ 8ɧŷp$➌d?~Ru|wΞRܞE1讥)cRCw=nwCƶ6E:O[zw5"$xf֟F́+Ѻ]xMufOsg!fzuyO%PhxHML}*^H?lLTŚQRc4J4oJR V?q >xH#J(d]֍սK,2kB {J`dTenA dTGJX0Kޖފ(" R(`RRѴz 1GF`z )6/GIzʏQ(gGyiQ?*?Q?*6AFڿQ?*0=Gb6B 36u$Ѵzʛ#Gm$QfcI_Z?/TB#:ARcLx)9S$4VR?!?ƅr:ObFcPT؃mh4J?җSD'?#>>SD#Q|'Ԭ?JSQ? BJ~ښ&sc 4:?!?Ə%sj?t B/?i_ B'ƍA;/OG /!ƚڦgTWh0)GA;/ _SE}ߙѿ'g+4z/l%ƏF7,%Ə-GǣfH5-Vi>33@4p+g+4z/m?%Ɨ3GΏA[? _jz/m?%ƏG:?l%ƗSFqit Jz7m?%Ə3IVWito J/KVWhѿ+g+4y?~t:G%ƏmGۣgIkiPN̾q:K( )t~tc9?:Fi>X$ϔ?:_6Liwf yO~.?6~`~<v(\oR&)|ݿ1G'x'1AN7=9<(.sY?烊Q#)ǽ1kn'1S<ڗoʓoJn~қCÏQwsyRTy?q*O8gMJu*<_G|ZrN iLkG?Q6G( ԎUJ/##KR̝pߕ1\Q{dyh}?*C<`ʚnc7Ho7i }Lxʗqw0i2o7sնrjžq1khrjT&bi;ˤ_OۥCHzK-#TPpl>Ťd?4?Ff#iE+}2}Gm9Q?ӖF"Z_h*p^l9tt(ЍGeqT|;\;@C7]qU4=6_;g?rR7Op2=\K+8D3C.p2=M>-E+M:Vc8ZMO8.A8qYڷ% (cp=Û$UVi Inq~ y' s"VSԒ~WyW c)*,Ocެx[NiLgT@vI9+MGG}l܌'u^Sz\ WC 1ŇF޴x|?4Ux|?4U֏CO*C4 ?#IQh3@FO*G!'G!'F?#IQg#IQh33޴i?? i?7xO*C4TooZ? i?? i?7'!i?? i?7/!'IfIRo|?vχF޴x|?4U/!'FχF7޴?#IRTooZOC|?>O*CO*Kg#IQf>O*G!'G!'FχF|?4U֏CO*CO*G!'G!F{zgO*Kf@'Y>)֏a[O.hmo12 CJŀ&|S"WV\ke<]@oz k}B^RU("M.2A QsHM q$s u:($ڊZ((EQEQKEQEQHMe רe-:)hZ)(Š)p(8AE`zQE )p=Q(=(RmSړQ?*6QǠؾAR?*O-?*6GG?*]Q}Gbt~Tm_AQʓbt~TWMt܍d~eͼwP43hۨ G|';ZWr?k;Nt[\˝fm'Fb$N%]H<?RӷF82iwIeiv9KʳzQKRc (zS֒t94%PA'Z^^i3HA=i1ϥ/Ҍc:vϥ&: R@x f<ғӊAJ:.iKv&=0})'#<9xi99^zׇWWO%vNx4Hc cLOiXpzҜ''%%*-8[ :R14ciF0rh }iI)))QEQEQER()(^ԣhRRRQERE%-z QKKKV`$l#֭[ cUBDZ;O`UěH}Wڒm!=RqTN9 jNF J^Դ"ERQEQEQEQEQEQE(RYJx}j Ke PGv_F5+T<"э[ޢ((((( @0()ih(((Nt@E-QEQEQEQIEQEu;cQKY6ʸy:mJ̿aY 8QY׺Z NɞG$~XۑQiZѿh^//j=;U7wSG5[Hs=m݀4P'+dQ3Hx4)h'z)ih()ho"ыNwF-_׬_o~{B^RU(((()Hǥ1sw#u;(((Rg(--袁EQEQERޓJZZ%QE--((EQIEQERc(J(AEQEۜ7ϧ4Q[ zC\߆ ?`x^sgZ(QEQK/C)ch֒_J(QE%QE/j(h()GZQ@J(J(EiE\՘cjVm~k6pq{-͜ʽGF`x=CڤHH̽HNTSD9Z"縧REQEQEQEQEQEhkԿ_үZRYT<"эK'5C)OսM((((((((((1F( !PH#(nn[on[on}>(Z((J((jy)*a$T ' Mb(EGY918FkͿ̍XHrqT+G,`NsQƳ[I925ErMk8d/-T{KHb(F81CVKB"z F^lp+:VP^\p+>20cayo`~AҨk0z+h]0kx^7 $@jJEQE-RQEoZt|VS1j 7b#}4@~(( QEQGz;Hh4iRE-RQA)QEQEQKEQEQH}SH"I#8 HR p9KE-RQKA(t)h)3IL҃J:RZ)hJ()h(=)2 ?#3\ǣS\߅)cauy'Hi;⓽'Gz(њ3KӊCIH:AKŽvQc9恃H4z;Qڀ(;{qE qJ:R/sHF9#/j4ךZ3F=@b҂Q֐8u @JF:Ngf7RK s^#Qp#'ׇ2eن}GE94QIV{cedN y۰`]`&)r(w eQE%% u((\cQEQER(Py()(ES8RjՋoZ;.l8W@qݯfN>܁qTk)SdGV89h` r 4QEQEQEQEQLwdpҘϷ9cɳ'=1Jr)QÌTpNS Ke *5/@5C)OԲ}T<"э[ޢ(Q֊B3H(QGz(((('M!;z4REVnU:)*G0")EzaHw02?:|CiK(%JC(0c֤*JZ(((`N0qM`OCC88\J@?E]L[TfEv5\KP?ȤZ:r:R~4vpL:{RԹ▖qN) $sH8vRJrw ('# ?(((q8 :QUB6MW+@prFiҼrsӟΤ BxpbAQNzsA4#ASE3J()p@֊(QIEQEMQEQEQEQEQJzӗ(Ru4RQEQEQER@)–SVmV-~k,EUCp`c_^`|T¥RrҊZ((((()&sL 斖kԿ_үZRYT<"эJ|ȧcm?cV6()hzi9ps۽.sNҝKEQEQER#(a2(j3GAE-QG^( tREQERQE:J;{K@91?IpbXb5JbDq籬vAyk"1ԒJBԄ3MF 4Gn`tJeNq>7 9fbVU,"LjVv򥗕X嗑Vh85+@҅T'߭.1A4w̏,j޹`;SkY7H;{: `mCPj`Tՠ0ju`t4iZwF-:?+ )?{A^@wz IWQIIERE%RE%QEu r8=}sK((E-RQ((((Z((Z()4v(QEQE-RqA(J3E-QE4s03)h%-- qֹ jr?_4}N溶Ӟ3^Ԕwu'(zL L C4ӚHM!Kњ)ZLH -^(9s!=hk=N+nM;E'z 7E H(dzAF9׭`zQfq}(H03ރ\PzҐqӞ)[ ?((((((()z`RRzp#i籥J)sRs֗QEQEQEQEQEQEQES QIIEJ)()ihVbWVa/֬[½[5U6?{6Iӭ9U9jX7=rxDAN:f/Lc3RS((((((QTuj?/iWP׿׬Nƥjݦ-REQEQFh4@Z)i(()()(=9Aj3KE-RwZ( %QEQXz%Yv\ψn8tްuIn g" 1ڪ.GjY]~ޔ(`Ӗ`N9朒i`M)aJ*s;DA9=١99W4w3[ճKEQYV*b$}83"9qY^!Nˠ8a:Vlv0V(?+|xqb-xϧ]d$$mBIFt$gi枚l%xsOM* NƭmnE-RRKIEHR@$R1 4diY CHrTSg{u:QEQKEQEQEQIEQIQ1GJ:Q@u񥥢W*qM+4ҧ9#4fFiih)))+Mw1\!`;g]_ty*fSӊbI4(+Wm#piA~t>JN tp.N7t[N"B>e?5:m.CSJ*xxYcWCac <+$da]4R,,r2 >O/-m$dW[}H8+P^AWb[xHg8E+6pqr-HcBҤP*@7J0s952=sM7{R`o#9wA֤ņ4SG.zl#@á7 a8t 9|A&1y+\XV|@4` m>^}u] G䂤Y! ew~#[4@} ;b_QA) PN:Zk0^zRJFih((Z((((J()h(((((((((()((J((Rќ}+O5"gkk6HWi/57]cutץ/jo4 HE/ҊAHM% @)(j\OҒLsҁ`toSE/((zw^(RQFGNԇizAڐ uJ~} (9R֎=Rh|JN9Z;<E{x[5Uzg-*M'JʧndK4Z?ݷGcޣBH& jJZ(((((CA* Ke *5/@5C)OԲ}T<"э[V AEQEQEQE%QEQE (((J)(vsKE(N4RӨb)(5E#R1\؞1X+}*ctSԊY*$V 0'p6oi<ۗX}V|=27KEQEQEQEQEQHhZsse *5/@5K)OԲ}Y NƭmoGJBp(()EQE%%QE&vyj3( ң2-ӊ}IRQIEQEQEQh(r8#(h9})ihJJJ)h]uJ HF=9_a4`k*H-XqYc朑NH0br0Eex9;w+.[g(Ƴ A XQt}kҠ51w5k<sg"-lh?ӿ/UZ4@zREQEQE-%QE%4QKE-RQE-QEQE%RE%iJ)iE-QEQIE%-QEQIE%-QE%REQIEQE Z((J>iڎ^Ms:1lju,{9sU/\ׅ2ڳ0[]?5ttgE%ϥ'jCi(((((EP׿׬/ZRYT|"эK'5G)OջM(Z){sE-QK(J(B'!}) A3EQEQE&( sH2@'@t{)h(QZ1T;Y8Qjj.$\en_UԠ6r'p7/ְ`Q#*KLvs$;;qڜ~,7sۦ*W#?ʤzФsUۊyڌ1};RU vz某)vrKTeI`SY5Rߺ~>Wkv#f5b*}m޺nAh(MirˏʟC\hWBSà5jkvH41֨$Z@#ޞ,){c? kc`Ҵ|kDŽoCZп׬_ @:wz IWh1EQIEPsHsG9R f CBah ZZLIp&}ihQERRRwǭ.)h()(()h((REQIE%QERKERQIERE*(nP㸮gH\xSs;xsҹjlm3ӓ]z=koIIA J){QIocAGc( \Qړޓ84P(ǥc(i撏z~xvr)>Rw'Mi/juQE'zJ; /jh A0)=1J q4*BR1'94ヌ9iV*U@\E2((((q<` zҀIޒ((((QIEQڊ((((hhRQEQEQEQEQ@QNEX~zEM {s5UZAΓjOʽC5s98V  "(*zjr:SSh((() QEQEP׬_>C^^#E;/iOk??)OջM(%QIE%RފJ(((4C@QKERQEQKEQKEP)9'9=iu5t>Ϩ/qڔf% !\u !P=sQ.9i5i0HR_JB~i9@o< 9^`ڑ+>#2Hp@BTQJs=}*0O>&6.x/r]fAsEjhE<* {$\So"ֺ|m"ыW/)^п׬_4QEQEQERf()h tH3HރҊZ EREQERK(i6Gh)hJ(R:xzzZZ)(JZ)i()()(() Z(QE-Rj;R{MxS#sƷX:Qws5n~&))Z)(bS[i)?\JZ;E!#8HG=()=H-'(IG=4BސSvZCG4Rt>Ps:zPMuF8#PGJ1ڐӗis֓?6G>wRwA;)ґǽ ?((((\0)@'JJJ((((((f(((((((()hQJ(1}Ո詡^çaұmXUZ.?-ve1\cWgRA 0NƥG?F5nkz)hQފ)h((X(>uQ zk8^X{sZ)2=-pFu?:)wE"5,S2)DZ#9QՇIRSEQEQEQERQE-QEQERRQEQE%2hx7V'1L%&U1\đ3INw-.dQ;IN> c$NR:) *G+Vjt9r:SaJP0EjS]=9cF '}E :M`dpGB*v'S'q[:=ʑzji^|~[/qWNQE-QEQEQEv/ȧ{ыNF-^׬_o~B^U(J(()hERERE 4REQIKEQKEQEQIEQE-%Q@KE-QIE%QKE-%QE%QEP(ZCE%-PE/j;W=xR/\9O_ְ|>?skxַbRQE-'SqF)@#(;QI2)) '4c^JE =p(/zPh(N4LRc#SzpzSzsJ1h;RH8ߚ~z :OaK('<I4p84OҐ?*`q_ ? s^^IEQEQEQE)$=((((`9QIEQEQJ')((((((()xJ((((QEQVcV>b/SEҽH$vۺbD?&bpUΕwhtw]xp2KRzR6 )!fMxE"ʻqB8u*J}:(((()((5/@4ֳj?/jS1 YOսڛ#4REQI()h{{ҪMA=彿>H5Էg s@qk]mf[e y<~lr͞53v;6$>v? EvuEQEQEQEVS1iX^6Nū4A֯hG$:hXW*RE%R()((J((Z(-QIEQE))h)hJ)(Z)i(EQER)>QEQ(8$A8 Jw38L,S`#O2ORNRSKBv?tsgzkA8_ֹ Scsӓ[nOzIG~)&i%!'oz_z(-%'ozNQAip cSj:<*JJrfFI'(8i00yqB^4QIEQEQEQEQEQJ84QIEQEQEQE(RQEQEQJ)h)”QV#VOܩsZ`l9uG5EibFiN٤];f3ޜ)Z((((((T5j?/iWP׿__ȧem?cRPGv?F5nkvJ(brM6GXлrIb\y|޹; 㘗/ryonw(kWgS,[0d T3IE.O 9XgK Kw9.w[KxbB@iu!Xݵ[>b95YYGi >r95kk&Ub(J()h(QKE-%RQKKE%QIEQEQE ְΥdN{㚆{H.TV5 K|UF"pT=+<W}Q:4g#m Am͠ I;ɢ4 6|Nthn*K}-Ss/s,:]a:ʡTB(U B---QEQEQ҂q֊(+ )? wF-^@^"osW?4AE_Z1EQEQEQEQIEQI@cQh((()h(()ih(E--Qڊ)(((()ih;hy:R5 D}?T#ku\.ϟ&;pڐI%6y Q wJ>c(% ~ F#7Sh=ޒȥvҔ)i(ޏG~iG֓8&~4J:E/ԇsҝ8ւ8(((((G^^0tc@Կ_ȧem?cS#E;iE%5-aY! n-aYzE^8 ڹM嬄jBȩT|Gȧ3*[݁,3I 铞*q.U*$1J(]tӴ|mΘn[_M /s'ky.,y" pb'WKmrq] omkXD6ȅ@`9⦩j)h>QEQKIIE-QKEQE%-QEQE-Q(+ދ vK;b!b\Ϗn.XcY\ 68Z2rqRycwgYc+j?Z/o]ݜg(kΣ(((8':Ҏh((wF-:?+ )?{B^@wz IW(ZZ)((JZ)i(((Z)=E4SX6AS袒)hZ()()h)())hRE%QEQG֊(;Rs95KSS[ոxARsLAAK֓ޔZJZv(J:QCLQ;QHs\SNqH9IL S%(4(#44Ii{GA8'ZpsK994ާ ֎tcafj$g5xkBSk#WDzFi3MFM'QHyS[PhJ;Qڏ)>x("HhJ9Ԕf=Gz)آ(Bp1AƘ}z٠^ց8g9o֏@ў)~)"H—F44f ?N08' ʕPA$58'X.xKE*9vA9"L袊{ rP\ OmBNHʎGShv[tQL(EQNpE&8P29QIEQEQERf)((()A^h(()(Q@E}j_rwH!py]6l= 0m ^ |0+D(bI=(cJCNTRSih(((()((u._пx}k?]^#E;/iOjSƭmoW= c`āS\NJYEݻN06O9A<ƫ½cWZ=j&gvh9ZF'F&3hu)j&?7lUfH`y=*Cgչg鸌]^jɐ<c] t$0MXlU(H i[ΠT~u H#|K޹˩)"n[ b?_Ozj[>TQaF7fE!*T"QT@NFE8r3PF$O>S ud G"lTe {ui4u(QF?RIQFM;/4}(@9nGjB_ߌ #8Sy!)O|tM 8Qx*IXHTd*{K3.^@;I\, S=jݞeu¯ z֮+v)hv쨥iIkwd; Xu;ԥ) ":FdWh2ݴv#8A·8-WԂBVSUjuTp3JXO\M9%[zG" dҡlӭDjeu~f͑x"ȋu~zkB)()hZ(()ihKEQ()NLgR~|`5f0H$'>ԙd**J() =4簤% P0=@Qz)h/ȧ{lbӣⰼm"ыWi)_׬_ԕ~))hZJ)3KEQKEPhL QE-RQEQEQKEQKIEQIH'h\19<'$斝KEQHi !QI---%QEQFh)(J(()()Gj^+oq|j8yGL5N&Z#$@H:Rv8I׎.E.1IM_-)JJC)(hIE.qҌF=)>g4cJ>c_ƎhRRGH=i9קZ3nl^GZ)q֛߁@8iӚQKӽ8sz'CGҒr)3 Ij0xP ?E_k~QLp#cZ(EQEQERTvx"ERJ1ށIIEQEQEQEQEQEb)((((((QKEQEQJ)Eb?CS*XWh ? *X^ضd QhF@ZGz֝h#4襣KIQ1F@(();((QYJ> {@zOv_F5,|ȧcm?cV2OJ5`˩:/G+Fc\j;ÐIȪd1桋 ;nqR x)ozR~sOqgRyT9uE)(~4K\AR:BphaJh4sg=:Qڀ1ҐƁAqRvւpQi &9ȥ943֗r) i`wz\`qK8`këkQKR(((((((800{JN%6(ip0Ny4QEQEQEQE(((((((((\VcWS*H h[#Bk4-ilVqSN=(qE'oZ(4QE(()((3T5j?/iWg_ȧcm?cQ'5G)YOսM!(M]aY ]0YL (`ʄed k%a==k"93!%v֬#`Jv'L *Rx)1B0y5{zxC1m ckCHB#w a_ZТ%.&KxW?*73!¨ɨ`sQXiy.e;W$\ɐdaڹvwb~~g2_MJ jj?`* Y C)5Iޘ}inI Uz'jOu= lZ$1! 9"{$?~aqB u9((JZ)i(QKE :h&LKEQE%!(hZZZ((A'ZBHri ds@'8#' wF->?+)?B^@ozIW袎QGZ()i(((J(((&h4Rފ)i9yJZZZ1IEwJJ()ih44g&JiM(@QKJh4RQERHJ){QE (J(RE%(t/QH8:ޜpe?α4/u{[=kg֗QۚoN!@3KA砣8MGJ88G)94ڎԙqNڀhjoSIB8L SyniJOj旑FhwN('zRPzPsIۜQߐ)&<;R ?PIcN`dN9ph()@J(((֊)xPJ( RQE((((((QEQEQE-QEQEU}ڒ.>],w5R xzW=Iǧ}q*LYS*J89rlqrIGSO)ihEQEQEQIJ(%QT5j?/i֨k_ȧem?cQ'5C?)OսMl2s3L?6&N>n9SBs"509b+6wL ͬ*x9b)fWg4 \ IhF_=izlyc^5>J38 9N!VgqS Yn"Rӎh1smkCG?Z-b-3G?ZihZ\-a#/>Տfۧ.j[KJkD\X\$ujxsqSq` GoSPc}jW֚61LPj`qPK"@:2:sTnʼZty Aⶴ[HL09[Fb[UEQEQEQE--RERRQKKEQIIEQEQEPE%!)G Z)i3IIҊZ)h)i(%axE;go/ZMXHxj 7b_QE%QEQKEQKKEQE%QIEQE&9sIZu-sE-QEQEQEQEQKAGj;S{Ґu4RZ((JZ(ZJ:QE Z(8uRQE-(Kڔv-u 2?9ax{"P9[Gn)4'z(QEAKE#}i'zAH:P:Qz\w4zSޏJNG-/^wIސqA4b ZޘC}Ӵws@Mvs@${):\RӨKKKEQEQEQM9'Cp)sJ()h5/@4֨$zj$"э[ԕE%ͬW(V@y*W#=j.(tYJXo땻8dѮVz@iB2My)J&PH4?1M6s ֆ$Jm[m P1ZC@T-IKEQEVfl2ci6]cm՛=v XAXf<f6deI F)03môv6Hv:SgSuJ~~$oziYL`NTyQ:l-"P}OzteH>tgfެiN{U`(QE%RE4:I֐H9:))((@1E(QIEQE--RQE-QEQIEQEQGEVS1iX^6Nū4@֯?ӿ/UJEQE-RQE--QE%QEQIEQE%QE%RE%QEQEQEQKEQEQE((((()(E%-QE&(4RE(J:Slz=ZHv*e~)ypS$,X(i[himb=MۙDA̍)qoD#'0p((0((((((((((()()0s׊NA&=h(wF-:?+)?{B^@wz IW袊Z(LE-RRRQKKKEQEJ(QIEQERQEQF()(QHFG4Ai{bӊ>vQIEQE-J)((Rw QEQIE--QKE-!dRiGAJ(Dauo76Nū4@֯_/UJE J)hZ(IER撊(()()(-v(()h(((((g/_M!H@(s----QEQEQHFE! #z(RިkԿ_үZRYT<"эK'5C)OսM()h(()((9惞QIֳnvTbIle}ʨ%޳ov UV'--q㩮~[R&ێH_GSVcndd wnڮàJ\.~j=w ;gc ,rNI5aa䱭;8тr[MYuc4QE()h((((QEQEQEQG(((()h((+)?ȧ{lb @oz FWi*%_(t)(J(((REQEQERQE pN40-7 )p(((()3IE--QE-H=9$!(&3F3֓p)rRRQ@Z()hPhKڔ 顬 k|,2,{oҶ:)1Pi=);Ji9)) ;!A# =(:׆W׆AȢJ((((0yҊ)QEQE`E9QIEQEQEQEQE.N1J^h((((((((((?.*h5,Zmc>hPh-4sAZZZ3EQH< RQE(5/@4/ZRYT<"эNOv?F5oSkz1E/j((QIHA搃E--RQEb(3r(p2=-QKE((((((J(i(()h֓REQEQEQEQEQEQEQX>8 xRw;?bӣX+)?B^@wzIW袊(()((LIi3)iizEJ Z)h( LҒZQ(JJ((RPi Ґ q!4b RRE %%&h-(REGjJ(Z()GJQ҇V%X>+ nen5&ԙRfƎG?N(ڛy4џz^أ(G(ғ3¼O&?4yڏWO^i I?O5?^?{}G+#~/i|)^{}G+'~/h'+'~/h{Mcz _WO^i I?<¼O&WG^ijOWO^i I?O1/+'~/h{Mi?4½O&4Q I??^?{}G}4?4yړ?4½O&4 ?^?{}G+'~/h[R¼O&WO^ie#?t?O&WO^i淠?4½O&4Q I??^?{}GނWO^i I?_1^i?{}G+'~/i<)?^?{}G+'~/h[R¼O&WO^i淠{MtoAG+'~/h{MkwWW{??^?{}GނWO^i I?<½O&WO^i淠?4½O&5t?4y({MtMk{Q I??^?{}G}/+'~/h{Mkz OWO^i I?<½O&WO^i淠?4½O&5t?4y({MtoAG+'~/h{Mk{Q I|^i]L:5pOʄvg׽sG挎QzNy;uߦhRԀ\/#ђ==(vi1FSE'4ghihKG{֌fGPhR`Q"M8ޗ 瞔9s@Lx0sH2O S8)NyJQ9+ ?((RI94QIE J(%KSh()X9=hGZ)Tp:Q@84QIފ(((((QIA((((()h(cRҟZ? hPsҽ[dosӵzׅ _[RJ#* %c* $)ێ㏭.I#;#;џ)(QKE 9Z(hNh\KnAR t4QIEQIEgQEQFyuZ)hJJLQK@'z;A4QEA)((QEQE)()(((((L҂qڊZ((((((((((((((((4f4E!ZJ(;QEQIEQIEREQHhQKKKFi:Q׭QI֊)h)(Z惀:E-4E-QE29pAzR09Sץ2pL,2AҰ|#ZH#ys8?-n鿊GZ&s'ZoZ{RL~44p1Hy=(ɠh#ץ#{Rwi3F84vF(M.=4NM.Zk pw4vi@84i'q1֐c=sHW߭(ʎl,})O ÷ בڽ_e-zvZ7#< 15ʬF@$r3ڶJ+9< q8lP(((KKGzAL~ ZZ()(((IsIsE-A搌рiiih)h)hQE-E%QEQIEw(E%QEQEQKEQE%QAQ@(J9)(((((()h(P((((J;KEQEQH(qE-QEQEQEQE%REQE ()(((QҊ)() -RfZ(Z((LKhZ((``FȤeWaJ8v@b{;R:+VRG G><c?k$}`:i?9xqZ ќi:h){R(괔tF3Hs֎s3HI`{R4ӻ})qH }hRdܞdRQފ(4QIK'ƑS.?7Ұ<&se'?顬?lZ8;g(9P);fԽqK?G==tuC))Zh'u)QCsɠxA `Q1@u(#pixw :۵pxxR8< _nc qϥ:Odփ M#y rsMa=sA Gֿ ?(@!ٿwQL=N(((((Ppr(S=c4mQEQEQEQEQEQEQEQEQEQEQEQEQEREeA"q#^=s^-5c5hs[J6f惚CR▔('9>R▊(;RsQKKE%RA()()E---%QE%REQIސR ZZZ(<((RQE-QGQEQE%Z(((QEQIEQHERF & REQEQJ1EQEQKEQEQ@((EQEQEQEQEQERw)(;hQHEsIQFhJ9(JZ(\QEQEQEQERQIE%(J((OzN4QE(RIA08 8) g;22&((H*#mR2) 8'j4yK94ॏ 8'ҚIcQe%QE((((QEQE. RQEQEQEQEQEQE)x4QIEQEQEQEQE)ȻSrإ'eGZEzw[:#ר=>l0[`!Nմ3j,sӵ+tn-QEQ)4QJ(QE(J)(E-QEP3i>A8QKKKIE%tEQKEQERE%QEQEQA()()((()hQF QEQEQE-QEQ@((J((((((QE)3E▊Z(((-c(`P(NREQEQEb)1EQKEQIEQIEQEQEQE(JJ(4Rފ)zREC{rL(rsb>m(oQbJJO+#Y??ұ#?롬 !Vxn~ 4qAtA.1ӥ~G=(<1IaHsǽ }9xP:3LqA>ԇR^#&qF2OsK@POJ0~rO/Ay1JGnx$ LsLt+"+!`UqVFqKOJ((tQEw(RRKIE%-QE&(J>P)h((JJJ)MQKE(Z()(((4h((Z(Z)hJ)(((v((;E(QE)EQEQEQEQEQGJ((((w4QKEw()h()(((((Q@IE袊()(l;z6pqփq֔gvRG= %Qڒ2y)G(4QKGz(ATw#6 *>( Tұ+ $5\f7<.q5@5zCҐRu" iOZ4ҁOz1 Z1jZ1ԝ ֔hާ4)OG:8(<:Ҏ: 0{qNԙ8j2@+)@u1d6I9ێ҃&o4~ c@S\88sGm6)2޴7%AAEQEQKEQERE((QRcIE%QEREU"jhiNzԽ4F)W|4XL}kӼXhq)^9#޽Wa¥p9 '=斖J((((E%QEQIKE-QERQEQEQEQIEQEQKEQEQEQIEQEQE(=(QEQEQGz)(RKIEQޒ)h(()((((((ڑ0=iցLPR)((1EQEQIBi3J .hh((((3Iڂh93KEb%RQEQERHi-qGZ:iҔsȥEHz ddb?OFmzY^%#ֳ<64 9 7^\sk>׽&sސg JqK)1GojL;{K/QGO~:F3ьtIi94sEsҌʎvQ}4cdqKyzjϥ(i!ۇ!K穦zIxǽ#Ny9!LdqJHr)O9)9 HQH0>)pq֓ U᱂x8' ?((((+s=iŘ$灁Tݙ98o !gPs0?JeGL'?J((A>QIEQE(E%QEQEQEQERE%QEQE)%P4PA0qEQ\QOXɧ&T jE@ޜӾҏz)ip:PN*} Oi5`.Ezφãۃїlҵ$zVDDg!DA Ϛ@ ={ԊĀOHRE;KE---QEQE%QKKEQEQEQEQKEQKEQ@((EQEQKEQEE-QEQEQIEQE-P((EQE8(Z)h(4wZ((J(()h)3)3) Ew(((f7o$)mĖ㰦o3vZuQERQE-QEQAIzq&3J(3EQ(EQIIEEQhJ)>QEQE%QKG^zRgP R߭&=h@R;UPI,p4:EI#Efc4uYݕQAff8dz֓PT8;,ciOuYZz7r9HR 9#<k-v M/ -تd`'3*֌І9c[#P{RtGjN1ҀF:R` qJ~h91җqHlуjC^ n'4t?Zh#$F0sҗ8/sӵ-Q1қqH$dO&r @!Ny ҔJqH@':i {r?h$? Ni;5uUTQEQEQE9f%WhmR/V?TtQJI J(( aE(瑟j=sEpE%N "$={̛M2p HUtS#:)Lx84˜F˜P#$dZwN Ҥ!|Z@iiK6=8ION)BdH($n/?)}i[ERyZAe6=wW)>3SE p$RTK`,9O:Ϛr=`E1 KmaEg&!uF>;6pH&>cpt5O\B*(+pj3۵#gQ~Tv)$Rv ?*VoF?lisv< 2.R[pV?' y_Q c>R!^nv"U_s3*ͷ,9go[ۭiy->Ƞr90h8QJKKK(QKEQE袊())h)((J(((E%QIi )h (R㎴sڊZ(4QEQEQERQE-QEQhIh)(()hE&hE%/j:I)h(h((QEQE((((((Q@EQEE%RgZ){RwQEQEQEQڊ()(EZZ()(((QKN } RbbQhmoCAbRdWd%Q-n?A֩j~]U5 RMQ2}8\'<`ډ#)jTW{c?>ZZ̀  A?MV?ԁ+rr8F^yyZ r}Z_HbE)*O?SYs^%]Ҝ|nOm"s{ק鶿cHKna;שiK4c_G]VվhBiqR}(i1R4 3ARd P}iHzgq:RyI:F#Jp&y9 ?\{ 73G^ ~9b(֐w)OZSNwI"O'cu4#4wi~4)^h_ޕHP1O&x=sHߩ>ߥ x=q@AtG`Ss8>gs}fYYn#BJ|wE882(((()@`XdzRҎi)((Eʃ|Q,g*3K1E6-ۊ)4SU7ܧ)8 Zpoj|r6 nd=+NًGJh99xUߐ0hErTr4>kOSBgB1)") JҜN\=)@dSXO;pGsJ>Q׭1hiUni暤 M#q"cץ0sDOWۂl#ʽjnv/J_#U/>7#S_zwDѶW>KeNQ19SzG4siCdsӏ#8)IRlړ>sA\ڔqڃ׭;)zS;hr;krQQH.zL$gUtf ϸ#V`[1VNptKϥ-~QIsKϥsEQERfRdRFE!)&KKKSNiZBP(ZF@qAPi т1ǽ R\z`ӉS(@82(GSJA'>dgKqKFE5(sHNN".G489f"^IE)3Ef)i:ړ4QE-%R%RFi(4QFhFh-ӚCsHHJ:P F0( "F(&9E-(4QE- @yHI4c8/Rњ(H b`RPhf (((R)(sE)()(h=h=h,zB7 0^KN&Z(M! u$A`Kڌg F 9P)ih4QH %IXp gJ:gqQ0K^o]{ʅZo9C ){1y牵෗2,H GrxxYkU`Q=! q`sߞ1` ډ#C2OOϞk7!DS*Lwkee V({1O+6Dc (=* ,3:TY…2;~#%sAj[DLiv?Ҳf` lH8Q,ΰ; 3:|rמ*nTyGcPXUR$VUy  p;H8ߚyMFv |"_C+SjׯB "]VŸ3<>P#޽>+HDP(EKd՞'zi)W8 y挟J2sӊ3h2is҆4 F2s@zw(ҐtRt Ť_&+-[ V%.D8@~IBQBXciou|GD! 4q o   H _  I r 5 C   (1#%(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzlibvips-8.9.1/test/test-suite/images/Example1.heic000066400000000000000000036626561361153320700220720ustar00rootroot00000000000000ftypheicmif1heicmeta"hdlrpict$dinfdref url pitm1iinf5infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infe hvc1infe hvc1infe hvc1infe hvc1infe hvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infehvc1infe hvc1infe!hvc1infe"hvc1infe#hvc1infe$hvc1infe%hvc1infe&hvc1infe'hvc1infe(hvc1infe)hvc1infe*hvc1infe+hvc1infe,hvc1infe-hvc1infe.hvc1infe/hvc1infe0hvc1infe1gridinfe2Exif)infe3mimeapplication/rdf+xmlinfe4hvc1)infe5mimeapplication/rdf+xmlirefldimg10  !"#$%&'()*+,-./0cdsc21cdsc31auxl41cdsc54iprpbipco0colrprof$applmntrRGB XYZ   9acspAPPLAPPL-applgFKDnu descecprtd#wtptrXYZgXYZbXYZrTRC chad,bTRC gTRC desc Display P3textCopyright Apple Inc., 2015XYZ QXYZ =XYZ J7 XYZ (8 ȹparaff P sf32 B&nChvcCpZ @ pZp$BpZX>(4@|Q0h4 `i!qXBu|VCtcaBE  V 0`DŽ`XaN*H$|t(_* X"L I@I`rю ₁p2%X3 DIa 8 L\!^O_%& _'?^yׯ pI 0.35100000000000003 0.10899999999999999 0.60850000000000004 0.14600000000000002 normalized Focus 3024 4032 pixel NGVJ\LC?j6О+&bGu-=ZHN|/svKiUb(bue+KtPaNWG~$9-hZ{NR—[YV4v fʢ=Ն;s%:1$j5$d-ka4_?S>TjEkm0 s(`h@ulT#z&W4W?wͩе&ժ`C= #k$Ü;¢U:nwS8< LCG-5+Z-bq[< ŭtt}1;/ AGt0YHZ*RFϡuџ3i ڢljlUs]MݏHbC nA)ܭȱhx\7/?TwR5W3-#x&@Ze5}ԫD2qU^a]gnx}<^* Ry,)yKcNmpef|8'Ħt_0:奸4loWf Z;Zji6oT} 2.yy; f29# j+[.h#o1A#c<9@9W7ݗ Dq*As0GP#xdGp" ӭZK'e4y\XL#}+{&@: z()]!>k&}1p ̽:|&hhӺ/jG1:j-`N$- v]s>\ Nv^̓^(hAa,*۷"GCĔDu/Y,Jَ%{쌹Nͻu}՜Y+6Z5 t^mtJߪmvjR f[f懞Jl+#HtDSC&Q<\d`)$ubXy7 K]QZ@sh/WW#t 6U63׫.UŧZ#U0X!iDRU `G_bE#{ ǣsʀ,cjr8搼 JYhF Ȇ~2L&BcFhXJ3>SQt8D%qQr_P&#о$c>)njV90T>1# k6~r׏ž]c%tfE-W$ӽ{H0 (^_&^z~hA;M{-i:`"K0^ %NFRۆ \iuwwqGd-#(n|zDŽGf , 0g:~3OC-/h.l U% up1 4w7$kG=GEWQQaZX(a IhLz!7k@b n<.E(ɖ::*v-L`Y :>FZ:D7IplBID6#F;BM9ަK0MzP5,xX u57H &3r Medu3٭y)SYt5M`=aNzj_Dw|d x6#Iz}֝L7'Iðm)ʭC0,gP>en1\6$ 6YVUof3\6nkcVrE]z_'η Zt3w\q;b8oe#2jXYp ܪ,1%QV4٭iסaRqDĨB g{"< ׼{] tcԶBJ Ov_5FoaX 勺cs6/c,auA12FըYV05FI8l ]ϬsU>Ӌ7GhP-N/3q JCˡR\gBC$)gBfJ&(dh3LRwU*b9U O):c5+֙ "qb_x%:.+.jTR5IW7 '?? %=g .@aGp[3"t19/k[)fLWkӶ6b\sŒ%"왶k$9uSOH&e@~$GY‘HXp18o1I"bR^.)6˽S]P-~1I/^pS} 2Ho!tX#r8ukA`{${vTo <I} 04o&^@'(fKo&kWzE2vSinpn)@wpy"qo= 0\DfEĊ;,9C<ݶV  @K<@4ul ?jJd)e:Q9LC8p3CW Z&PM1!D>Ń0lC-y&[wA{jj[0m1Z">*8x2Zq8$M'-bNHE&CDr>O=kr,T1- PBᕬU/_SC?;:c#@ıM(s%ǀ;ǰn^Yaq9cYCTCi\Rb+5!hpqѭ=ΣEI/ N)w\&UbHOF翫T}4}@sj,%,*8Q_]IhD1Ӟy ^)im[=:1d{F\SIvO@IPwP=hYtzGlJsSvγ rgqZP!bE ^ĄK 7O"=Ei++a.s|/СZuwͭԅu+&`x٘⑙OIM07G"բG^ GLe{9L8,R};LcVr9GD {̈́O}}CaZUTPDB % $)U}wL'>jN#:L ts& a/Pm`U ⧪jzByk|Ca%Dl9bzTVj u H.fjqujnA}X`|0XvI7Q1T)҈ kĿi7Ѻu-, iFH >•F0'kpzM9P *bTT&%Ƭ6q߼:q/Ant'Vkg&BWC~&bT&9 ŭ'nvƜzpt&>('\\[$5a;tMֵ6D՜44"5S$O|zv?^=BBLRlT Ĩxf}6g|4,mД1'>ֻ.h_rA|wtS&ATC~dU]AtC`vDTAߛ<âS ;2õE}9yz=>s슕ij.TlT^iW|bNL=n6\*Ucވб"՜pϡ#wz D^+ֵٗ1ᠣNeON0B7\5c:X ;ffON+ٞbU5q͈!-)~~ H0tiǴ| B^׸c.MDL bIk;Қ= R\ե}O"(PoљVCK:セ3GBޑ2 *5Ȯ@H739~MV&  FQ q\ h`"O@J @ Oو.97d(X+p `~)&Uj,:; !#͎.HH^ ԅ岕O 0R(k6r̡<{fjbTbguˣȞݧa UF6=do,J'bkn99 q~o *D  D cmR{C{KNHVXW nw:Ev3Fx-0fJ!n4u" CJsGBݣ_sśQIQjo򐫲~5uyYꌠV pWөCul+ֹ a*re<-qPjٕ큻/* r_+Ou4 )]g1i(k='fCYT风ZMC+%/-@N#쐔DkRكS{]:#IuAgt9?Pv1-NſP"SgTJ],ޭYf:a d(!D;CuOh[\Ӛù:6S0^ WpY2NӠָ?!ݶpԴr\vLr?(Q#EL"Nk~~4N}!%yS+Oi)/eNu&U=*,u=,aA WܨSLof7ڹP7xLpwjpFͱj}34%,usLч}q1bcN'Ho ng3i,usi]xKn͋x;H-0M?!g"q7ǰQZ~q.GE1f:ј}.5R 9AλsL?48 9qQr"6C]8ªѪCCk(Mi3z^KØE4ջEh< {6.2X0.xW6'I*8ՍyEuKQmnx4ȍ`Cq{DP,Yjߎrfc" =1\iF|(J C~2ܟJG/ "DF7}بRѮwOU#[>TEkڑycy\W0`m//Z*L|f% KO7T]7BZ~(hO>3d^[ |  =?mք;@Ԟx9Q5%#Pf()|\}T~P_q"<+n$qt}uM!-}*+=R;Rߢl6f%vTD.jPq:vJLflUIBV[o pdZ_бP /7P`kUKͼ$(Lө  WN!#KylCԨ!XQ ܎\Ԉ6j@#TF/⧃oqh!թIz0.X <ӢLwU14wV?zDwC>Ԁk@̳R]F,ZYtk]ece'tD*&FdY% dn`kRzքpFUЂ EE@7KH~]3?PQ}"v>K"1Yl7d5S_ώPس9/eYL;%I;{=r7n#v7Lť Mnrâgm jQֈN)z zH-"eIiO\ZgB5`AB!L39;ߙxJT}%Ev@8cT2H3}S UP |kkQK0m$j)m۱"cyQ@n*@C57N"8hA)pu:]逯*1Aw歲`?Α6\9*)K?.-| ZZ@IX!5B{YQi+`r1!+tU,l$iʏe&Hf@{+RvaO6ui> ZO02ūl!|_,sTw%tv}qJbiyKb0}X&KSADUE!!A>[Ƿs <6.XJqxwg'[0 "-/2gP[t-u:Yr ;XTJRC6&)[!-+$ iUrNwsur%kR·*Ggoi$x~TTE3j^SȂL_34D@r!\lCQQmį(XN(,xzRKq@C`XhH|"c2HW5D#e@Ռ4dO9ԊS07.䦕Zx  RĐZHv*#%6f@"|4q9a8x}oݭ ;v)C PinG9F{lj>-`aVs0lَuOJKXvO`~YfqS/z )T%%H_-DSksYrLh{'Y@}ErS%/=mmNDp`@JG8s\ґ6YW:`aLb9Dh;(D raG߉` (sles1jc>:)!tM(еO! CУ» #sreVɄKcZ1Rz=!G s M%8MT<5^vqz|@N06XC6]DfQuC;dLϚBFڠUI9/ 'ѱhrYH Ԕ?,3ro"I6 R,4;mbGR :Jx@(/=ba5frǑuTL̼RS$ÀDSf[77t;طAо*@5{U0Z32]d 6-a'^5#̣B9@덁RWWHb*d 'a#}kJ_iw}XOR,bJ&$INwBʧq7!Ql'd51cWXQ*'“Y2aO~Ը3@ C N]z2)%/^NUKF>~IF*7t8-}+wTI>Xphcۤ 0!'VxN?ƀ]`.;p? G%Z()rƈH%lC@$^?۔=u@#C&P%ʞ%\zŬJ>1 ǖȉpW3j5TƆKm~{];O`R8orf,3cϒlKȼ ͷ~E iaU3˘~89t4+M<_=u(j'Іnp )Z\՘Aamx()Ewi.a)sȨlpe5n uub5rҽΉ;4xٺP֮Qq"1Kr[#Rknnul50򜗜$aLFUg'XFFS:mTsTQ(&>/Uf^w+8>&>E.ƢP&' ˜AN#TpP(rsNw@s_aX؇(DXk&q$T~Zg]^'PD[+\B" } xl)EeH$PoaVa/##GWE7^*8Ŧ)˄sԕ J(yo DzT+Ս蓬e2N3&߃lKg3@b0/l6Lzk{2?jL !d|ҕ]#ja[ƺWoCp#FS8ÂJnE;TuӼS mZCQZ**` @pXl\0S& #UЉ$k&qo36 6f^h|G0_⦧M¶q.3"AyVK|?N3l!pRT$u~BA}.b&)ab 7X<:ʒ"=r3$:1Pw%D]$L\H΋A!tX1nX Ōv ɑ_KlZ)ǡco2Jd/ +H׾ Ih BY&AÒq6!ZP>Z^r 8d*MzԓKz"Twd [sUvR3'LyY4 DbF[Ó;цcL k:Bj $N{U j&3IbIk,0sEˈ OY2Z,48A0 ֕HWEB~÷\3)W0A HY%hS% S >@,R$oNV+)ȭ~p꫃& oe5nW0|US̚Ph{^0$rL 90FT'&8%})s3mє^D^4Ē>):qsp I/X~ Γ( ;K4-~  i+xe2_5jfb =b@E c5Z忕9EQpބͼ|)iHqkSdN\.QzQIGVpIa ˉ wTZ/ !:=SM3{ ۋ4 ~,2nO3+({J](#;BLCoQs.+- +pPߏ蜝Vi/#D"$)t>CU;}Hְ(_gIK,N7pJ.w&y(+\5V&Px!#7\em}kJޠ.&=WIO {S㍻5F' kyu^{+iLߥO<H 5`עc7rwih}"X?cÏaͩxM'JPn8 :AUL>3啄>xRF]ep\ju= ʩ>8Aw(UI}K^whO}'(~m>I*u\,;,AY\seK'ʄO'zM?|p6^_Fg[V(]Y7E d0KV-ם&^x'IRʠ? \Dq;iи2sN^[McSy?Pbj7*WKT) $JPn 6  0$yIqK)Ѱj/vMN7'=x$Jmء,u%X;) D?,K۾Nc˖<(Fw"0*Zğ_n +7, IapvU]yA)Dxl< e X@Kpٶ$+bm+j&\9^9C',|Χlpf+wiAZNu~ZMڇq {ip]> :wZl._l1"^/5;KUo scF@iLN͛ؒT/ӿ'F BHuM!ܭ赂; W@^q4a ^  omxWHT/A,jଚe_rMh#vN֛&`u3kS)FHR>'Wxb^ÀwtVsbN8PcHMWO_qc"tTL[we;⎈UZժo@Bu$W`XOWvC P&fjGCJCHiTǠW{alrb/sAÐ0h&l&RC~HW ;26O4_#JX ѦL@!\?n);@A[ZtB[7:p%{0 :.sX%C(\B{O%vmC}p fV=>;bPҮ|B<콘bYƑJ7tq]TkļJ[+u3q `FDP;ɉ!B?L#kU9,Fkt ɅmT+?=hqt]}\]s57:f M +$`c}HPVc_ 4IW3c%/`_UcԷP9W%{1s45]~ { vt9j9S*jh%yDrmB9e?WkAI3n /(  p9k*VA_Ԫᠾ) JݛP*7wҗy۴%kRh>:+0x mFA5,Z_Ԗ\$5+њqYʕWq0îdMs ݵ,Y6\gVv'iDnnZV%tk1`4o"CCϬZ4/5DP( SG-w˕LjѦ5KH;ǩ}_H/C_Jb5?Hh4(66Zk-sB$VXpo|]g Dcc>ZX"/ \j@tP!>G$N7T,u1%p ϒtP|M XQ$i0mYҩ29>N[OOLRC(\tJ/0y,r[X=-2PEVKf 4?6i&xU̩ȋAq.0Fr97Eq[6z~F aڀfWZ z:"8:ْ r?)[}xX E.je%S.yKbⴣ5s9,hiH;땗a@'Bϫ{6? xcɈqK=Ҥ!f“Ue9Tl8MLc߄AdȩF$bQM04=zCD/0;iQhVk"\(Fs:L Eyu7~H5]t9D9„rd[C$4v4hZc.a7m9 WZ:oP,⟈0DbZgWҞR3{y׍s(TAd?"=-a+v>^?ib齰vCtxeOunŐdhZWv~UZ#([|eR㤄ocpZ!8g kBq=XG;^U@,0^NBNG^p/ ;-ic+6R[fKoDF^V h$p]`REId0d %=ӸZj )N{$ siBY@2^8R A O魵Z)pVf*Z5*bp 4E E!6+muqh-͹M]@µ3 2ۦMàm+?FLN> a8 }ky"pnx܉I3=- gm`aŗ0J;ȁJvc@ D/ =΋gas}pE))X`aujW&N{7!--hi{Jα #~7 tMɨ>߰"J9.FA\-m(`zVHÛcHx>0c47cdBi'b(6#6$7cR5j[. "@l; t%⨸Zj79v~?4=F60+V% T lĴarBmߋC{iO;5HV,h\OXN^똲oτP)Q_!+? wwfY#iNvO7Ewwb#. W;Ú?7F>iGLoj݄U]ċp+T.L@Uk1C>齠.=/aI(mԚ@q'< ]u3F\o E 1q \! m{Р7pOfQ]4(#R-omFs=Mcf[J&UxS+ Bv"& zw02rD\EF,=|p جwzA|HOQNZ i eHW i?-o|Yْ1=zQҪdBLAڗzS+>(^ ,Jyy(MGJ q9\bsa3"g#/^ތm Q|/OSvY;uŃ%!S>~_ǵhmJID4'L䁀a(Yv݄~JLea5;af}?VD[0g 'gi#/B%`u38O{ݨ@~v$:xF Lcm0"MzWEG?0pv`[vy0Ѧ)~9|,e oKwhfdYZR,6{=/`O*4X=Mr~ڹ@1f3YiTҥ0}qj= J|PB8!hGlDz*c@$iT8A=Wah?RhlKSv'GZPikޓʦXf؍=M"7̐BZD+hPV`MvE +P_+2, *j$zD rA"IVfm,Ʋp?m͗ }Df(P-rFR!'萨zݜAOJоNZx%J8*L;KaMLU eż}e|~W v0YD?b6SNЃ}6@B Ñ$}u}b;rU0 ܇Hs06lYCV@crK_Nk*K *qLTH@kh:Y-j~C6sw$tIꁰ  @,2a&I:btSkcy jĦ12~+TcSx)Lҕ(W/,tleJb]RT  2Xь0~ypv_kV(+Ul'FYqV!ߑ`bۥO) y5t["0=ǃGzZ[V[{ E꽡@PDzou1h×zk'H8N0"F]ZnR_ ԧWwD];;Po,A=Ů *;Pk)j:蜯N G pq23UGE2 3{? Q80w=ܳ1k- $j 㙖vfVZk/*$hI EV >Yf+H%f{KG-UZ=J%D+`-BmZO2nƦ閤Y(vj¾P_EUn?5X:|UB= :{?͚j[&BRk/튎 Y^f?g6>`n%F1)gÍjFu4hGI[2kV7%@ZaڥBYBhj&5gw"fR ~mZ%(梺² tG<1Kws'th}j{X8a{ESIqMκo*Z>RptI`X @sH-6bTKZb>$g?y{r-x}A'ΌB6$9t)˗Zn" }Ɂ9<[Ě Հ<~_%߱I3hXhH|W=jɤ7tV`csN44s9蟁OṄ$vڥFK<<\I sW3ХZcIc*K4*#4-'WMs/mt<.whE@XRg%c^_8 >upfD)HII TdyfHȴ3]']W,SpAW0} 뢆/.*\ (㕉)'쾅wM3[H33x )BF|+Ǎi Tl3eIP8 .o ~^03`? pTDTNS8fKy+|{_ͯl;f%oԃfVUg}wv'_'\s͸W>B)t}]}0;y<${&|ZRq+~#'re(L!ު>6>>2J %o~FFgv(}ZcQorRrck . S1꣜`!V0Y/@iaLmA*OX֫7Yz&rK& S?xPU8^×f82TěX[DGml*Be-mS&zDAV.&x%{vHP?՛+}pPKd`>_@PtzIY(iL<;9M 3iHOO{;<pWl%&ƫ\<) -c׊9=0-\%jUerV;L3B0f2mNTWRFE3k^Te~\/t=&/t3j.[U"x*xZ$ᆩ$fm:zq%]bKiv ݧ&ib5EE%o8D= y+ՓMQv4t1yeȑWp@yGo̵l,k~2+ω|,Fd6`b6AH+;٩.B-KJWӪ֩C<&]Uj% j d?Xhh1p.b"h+ b:D"ڋLS'V;ї)jԌλ_rQUI}3\SSfK^)߅O razVn]2V5?!.!xDO?U>jpi]PD\̙bJ* ԱVZܴ#WxY6|K3]60Sa=Sj97e%!'|zj'm$0iAf;4іyT U!Ƚx {AVu>N\$h}WS93So7posv8fU{+EaӶ30>P%~]ioKgOo< ~K[R*-oR.[/rd5byĸw Rv>7֌lo6"˶5^襾Um@لd"oPc}fSA 2 ͍BidjU`:Kwb6oD B/,W߿טEƮmӆ2}gJ \#5]|:FȭՐPsD nk}_2r$vXFjENDj<ʭ# Å4xߪmFO=U%j*T )4/pfl"%P7 bԩݨ7N@p5Iz>Rx[uQz^98B!8uMјǝѦ0!@$l'^ WII4)9@޿fu-e _P,P|cTZW=\rVU?WŸ6ى <@2+?;[&(ך 'oD ;n8"t*0zjʼnI`c yYX|: ̳1R $95-2)Pou.ti}Xx8BodI 7 j=yL`%Ȼ\3['_gBf؀ ٚ]#á[:ARQ>)Q')8?U/ZLs~B Qxq2rrJUJZΦ٨)bpW\"6PG0 U=qLf9e{H֡ɔ+4 B PsQʞP*JPS 2 xDqjtsnpk:w|[255A%VEe&J]"BRvJߏg,RUJ bLbj~ Wi,֢̲J31 %B9^qWBg}?B o^n.MdM?0"*941uPݚTjKP;и969'݄|U;B 2Y# <"LqwI\9E;-;#&5F)r8M2i 7s&R%Ҭi Waj*T7 5K[$Xv@.7Ƣrý Ѝ$C2y1ndJK@+b6WroO W*CZ%Rw2B=`50\ :ϯ!6]Ŏ<>Zq(`#%$uIvN"󂚑0m>?6fk,CqGks2bY579ϷAtL`7NcHx`szf|9XA wB蘞=徧Ɠ2 >7=]B$ oo^#ҽ >~SB`aeOz`,ݰ\(x!\,woɠ0j/I z7> S A#A7:1nIZ;S8r%3q/zε%$XKE&:ܿ7fA4}{uitLh(lw@Hs|mcj9kzBИ$hB;Q?9 lm'>3 `8OVsz(*pG7= aFpSzeb/23Ӝ)M4$_:h0FKӵ;l,Rk\W#94)3Vi=<ꧻiMeқzk @bTIj`)ڷhu0gZ' ά8@z#4Յ!y`XU|JIÿ(fPsӟ{ t=ۄ:, ^~~V& VIJ[Gr5[P#IG[N5ಂZO`J1:aM8s@.l i3X\ǹ P~~rC5,6֩I!s?ԃf ca  {tG40ire(t>o8HЏخu//԰9,u}UBbatF'` B:wҌ-x3 WGs9׋"ߟ*_cD)#G4}{i>_5ݡwsQπ6g8oք$=%HД;L%pQ7|i,lwlqH9?ڻ&Gt-1 c1<7ʵ]7OlWY> o"\3((jݕ-JD†?-"iKrvL\5_)Y9 e⚵mrΩ+SVDى 6(F[L#11 ki9w%$KDo3d؀!s( ^;r ^YUR꾧4SaQkڛKs!95mxҎ:&{}dאWG+.Ք%SƵe V~v/)ͩ:VB|hG Ϙ_UofXAlJ!Fc0̸ͅkUOkBH_W pSı*>ͺrϒWVΗ!lZ1;+D%5e/T'%W[e+%}ٟqi iݞG$}\I$2k2 wbd[PdCY}*P`xJ.9?"X#ahY4UMQ韃M ^AΏ{Nj‰uaXIwprJ{ i30ͫncxZ'q} >A/= Wn#nF/8)9¬:{@"8 0hC GPgX*$.Y #>Y GFsvdb3KrtPMk(1`ၡ-㇫$\5+c QկؽxqB" RkF1dKZEiqbI4G)[wA[9+b7D,VOs|Р]y=R/„i#Ow`(4b:ǦZ;22MGF@ƹ,z;:iC%찀R~P{)J9@X0K׿Kk m[2ɀɭ eX!*@=f]vq/4dH\RwEEtK$ yj>H,g.sjqlbXAs)`猏†6M~ IcI/IќCeo{Aϭ=ُUVay5]zk&r"-o(U-B5Q7ZEȝ,?+][HW'keSFæ兲[ZUxT@ ZҎCyKJz1H,%}VlBsBxk/WPIJ. mk.:fgO_Gv8`/*ୗVz[H7:ӽ,BlbJ/A$3vW{?NFTCczI{ٮ ?֡l=dXGZEB9F66Ggmڎ8,N)ӱZ$LN_xUD 3&VC5ؚy^)Uh y D& Z{ )+ƳTk"P Dd Χ0jvZNO5Zd]GTʂr8'<]@L;ZC&Ɓ8{c"h6^!d:]D([5"\ߟ/

H79;ۣl 2R^zfaEĶu{Ҭ 88&h:2b$0F(fLfIն8Uy~*3* l.!KY I$9ax-+BdR~0Q~Bk.PWTfsMTPǸy: gN(6Me(,~Zy2hm9l-G)gLciWE>yQ޴&[պ=xK\h+'Vpi_ Pwu0V%8tE2/&(mlaki{//Њ\WVXz;ICF^)aZ,x례5e!v$L.̒K"lUddk}wԽf.zeZb$s`HcůW gu¯߳>NC]u`'L-#yEl'/fuAթ =<ϻp kV-@ULđACX|Ɩ8'v$N)S&fnFpq hKp= _݋b󉠹&+bԨ 8 AX) Km q55˜mb,۴i7gj{s" v}9U8pN=E{?2+VºYQ*^YF]Zzr8n g֞ l,:=L+u%y.5ɾs<~ǝTsP_vX|L">j^/LI* dc{]) SWfO/9^}{QՒpEަ J2F)=.uIȇFIV\JAogN t6 n{Y  r={}Ïጌlֽ\dք6!um)s{9lbM*pQ|O%WLSU敨&h*(DMRM d:W- ugD(o[L~2`Twc rp $Q>peA %\Ptb\9c+}v?~׵w Q c⡣6/̖M\n:tl(>ׇ#0mrl`o Sb]=(KbYJqdցOh i\$KC"O.-dUX_ eynd2L$.7|D1^B/ȤD X}"? 5~+Rm"~@ (zb\GKhJLȑο“7U6"EILozJk wʭb9UDQQ)Eu! @SFށ1bt$AE']˘q/? 7$$hI|La2hPa՝B8gwٵAHg Ż^ q`Be騝5Ϫ 4rMY "!K@I!l)ݚ_o-.h+`jlQ U >_<A*f@595NkȟWD@dw<25 ӎEcgg qd-^dOYRF$~|$3.5$GFcMŲy`D{9(_y WUM9[8@Q*ZDIexwP/}8cǕv6K-P盵>:r6d> O6?_Q }~*Dp3p?Ňʙפb->k|2M&?0>0Sx01fJm+ =,S%:$ tl @{e7ѽ |DWL@Jx&{ Qލsb=-#t,es5 iAgZO~]_ &*~]~$v!bJ42*]ߡ%9Wd a ͔"Ơj}\" G j/DZĶˋ90/F6X/@ZA²oҩ-'-Iu,I"&Hw1wSn`HǓ}]c:`R<ٟ\ru.mRo"Y`'Z %s3GD9(;wO|[yc{9^O W'0M`  t04Ҝ3Kh3aR sзb?HڐaC˗aQ(:&J\ǜ:~D0 f_8CW<0 }99TOtF"MKq$H7-yNx≅16q|Mo!+s,f7)gU+"3@nG8=ݐCOM󼑴6jeUFɥ,W.O&p7`I|[T0) b}}~PI;PX_SmC'b$1wQ֝[BDZiE-%cfEAcؐ3C -E ɌOׯr5m&0Sk$B@9@+=`QDTp6tfX+.KNT2` ޢ{0{aR|3kuhS"/   nMhTK?,pksHw͸tPBuj.Td?mS>>%>I?ͨ:Vݍ^1Tec ਅS]ha=/?N15A DW: /h GzͶC~^ʢ2x8n;WdJ",L D]y\k9IAHGqk؄c]@X;<{PL9Pc„4]5b׹#X>prN8tybݖ | hQO ػ^!ቄ|K݅/M:̅<{YkY.I7>o0JFb=''V{@I1rmn_aUʼnh|mg}݌ie[$l*(8ӇG| 5"<)҉,씼sƐvy8pL7gʏ=0HrؓhM0|f"agENSkϸ{fؑJv-+"Kl b4+UMBh`&'R7ܮѸ;P8D,6guʢ,jF`4.|7k,^ڊ9drN;%Q8Ce`TE+TЉWJ/\hQOƧbyVQ5%d +Z"䬾Tl,2qʨk!n"ð7$ W)Ł''[e[ų˖Ufq9xpCR;5"d$tyVHh5%4Eޠ_-)FO'7^QFUECtowO аpͯjx|gU b͓홸T˫ڈE3-xQ8c]/ |eDz`5xqQT`5z5p,yJ ~NK @ v7-[*npu`xŪЪ#j^1r`I*|7 dWrNL^T(P(Ou9d9-N?)X}.q(.Hr%0=tTNG~kws΀ N0(liJkqc \&LYd: F~wRs^wpeMֿl5P_q@.?Qճδ۰t#^R'1[D(b`(yFJ>Fՠ4YȆ5 s@!U_mG6`$37SRiEg. k5~A}_][X x=f|Bd5TUbИ?"JM[` | L1S5/jz匊;>}fVsy֓Uym( Edn"✬-Q o}θ?/0_@Uj. kvǵN&Q̠NZE)0UZΜ6 AL "1Lw!^T=iE`A(*S?+ECҎ,lո4ٌ"Z Y-Z: 'JCYa]f_l,*fSVq}ъ*K{*4ˇ@sL4CѡN=7#B$c.VNk,^P\X9$LeQޯ4)ͼŰPU6+s9ZE 7X+ 3ۿO42l|3IuOaI_вaZGH jŒ$8$URfZpF 'J[󀓒D VmQFSlZ&vIU/ Bٹ~[GNy&CM8CO7__`Z*˘<{9M5s6=Mΐ=ca 4G(Ug} 9c9B.ŮSW+d_uYE0軮oک*VH<siȗlpHzpeUq +޿?_ȷ Bq92bW,YAeM_m[,m|j-ޑ|S@EhB8, 4O7t1}X V?"֧0B.nh(5R ݷl4tF7Qip# 9)fdD )Թ$:t̛B<$Ac.PG{M(}4EUYH9քjmvX*wkt¬?8 Y˅{-57ϱE<{Z4_3E>k,DEI|cq#i~j1I_T,7."! vS"TiYNeef!yx΢8tۍE!36^ñ, iNɆO?x(8M2 OzHկr/- +(녌޵t>m E#dLdik˟}WD3 _UQqKQGJlS؊d u7eE؉1"H_P9suòD.޹1 E"6 7ua^х:U^"AK 2 fe]z㝳Ue&}N/؉6iӄ`Rj}IZ^Zyܧ ~KA̹`GS#jSDAi5<**^Fhx&5g`/X b!@.Kξrnk8ȵ3Tykt=ǵw۸z{c 暪fxTC6wk2%F@ɽJT?{ E*= ˷{_Q  OpKҨQJ­?7j8!k$rARa@bI佌61?݅/"8k(䀐Y8t ø>]ShS!Bvgc}?݈2CP.龎"@DЙ}o/ X(S[ik9H :JsUGOGkHDPeK:K"Cf{z_-C tZ*eI, $ïZyel*cI-:\[[s9JL& TGw ]Cp'L{VH1J qA^Y#Y :CyF,&,0$p|ȊzD$-P5L;ƅLiU:^p ϏD !dQڸX<~%ҷ.^*d |?$DRӛr>WWq3_~ICG rsd3/Ҿ,5ipHZ񃤢Tfqae9Z[ Vz#!'>j5HԶLLT#ҤU_ +߉'4#ku(v yiکZ5髝Iw}r,Ɔ;?..S]Q6 ?CPԯ AY8bjOpS Uu&0p(;|ጛF "֫"׼)0F*.թA1 r j[L {ɬZʸ_pX"~74}(`"O#Q1dx⛣M?=|  2$xGGj+~8Cjw<nظ "K|\"Ax~l-Q_DΡYg&QiN(cF͘6\tAa,za:QPP%kH"%-T?AƝhZ_jCu3B;9{)&6inS)*%WdoUE4B?f oř K>~@]xEnCX"[a+⚏Va.*9įx=4a0AlhnsV%YƦBUob?m,qe cR`$%L_bƖzQ?2:sZ-0P P&r0ɕs< Fu^Y.졆%xz|Ҝ>dw.iPx(qP>oP[ bb+7BTHw[/ |Q/4,/{ y"c&M$a7〟u]grToUTҒ6j# ȭȊ7D4%#P A=\mreDa.[P]Lzۓ#KxOc `"[Ҵ+c%pU`A2nS~gIXȄ;ͧ9$!)1&r}D\Nrǫ<\N*޹z(nuۀ'Y0C hG=$xL/Zt=RT؋n*zH4cGKYD"Y-i`EеN,{y\Ғ^s#0" X5e$! !n˦? _ bjq9RX|@ cxzˇ/Y~+ K/s >u=:xJy>kp8E#Qؕv!ݔ*|;>#dW촆I&8N:8]ODM'/jJf1*6-{&iCD|x`O AR*~6q6R@j_ؖ~[6 XF!R ƉcS i'r59>_8Q9Ϭ#3uV9r u1C 1G6񙵦NHj}%iKy2P6=YVP O1 =;>`XVi ַBa 0 f^,k*Db  jfޅa.퐦؄s]*)3.k 6ƭW k!Or0<}6!㈞&D-|Vg[1M bPD=?XzlxB3= mUD1DƞeV1(boRH ;uIzPwm'C/QPf\<(pgU ^p"aUo-eg`!B ,;g(Y4kV򱏁#$^1MI}TB;J@@ nBoAtU\ԛ^3蒰.X-䇅+-|JNߛ 6^0wy_suL6qF@]3&M^lH琅帮k L.[P\ \*,Wܭ$d1;YZ<)^}-F>f,T%wT}(1xCZY3'&sqU`+oLb}uYCVgYr^tڟP՝Xf$_1r0tz܊g+&ycB6E{mΜ56<[ ̔$rm: QͩSNVX^b!JuzdwCM'&e4XPٟQXY9!ՑĖ[9я)V?Z[_ Ğqc !c)H*g:; v9+gavoCfkVj;667!N}վV+W5ՠ`/C ˹AE^er 4qQsM$0cTDt% լ0ܙ !@-rCEz&vALNb+ x*o9$ނAAs@s{PثVi_[`˖BG{e KBRZ S~9U7*dN+iz>^"sPOO}O[౔߸$[wf\ң6* ) qP3ƼL\'`T Šik&vЕzKE!xY]\ʠy4 V}K|y(ȵ$ٖR(#\EƏΜ1)b|i| 2M_Ի-p}gy#-H:Xȏg*(;k%KV|0qf#1 > p]T2]; o7g1/ȁnш ifمy![lrAyđUXoKX;xO|Wsd['C"T2oZG7"P^; LA=;uߦ_ Èh?y %TaE,ةtwuLL^oY2OnC]"|)s0 V^9do鸮@CC8񠥣GVnN^Aa?tS)2"Qa4|_ٓqΥ:;*M6kW;{;1/%7V^Q*/ɈSi0A9Nkj7I5 Xi^ ;}镍kFN|qkQqs;İ!,i恡f slOt|M4g< 3W!(RV*~I򴓻3yct"!S_C_d;΅ʮJSP~d6zzCnF;kI{ ڟK2֣4Foi#=k;7H[Q7n٥Eid9ei-"4ѺRJN6v.cTwRc;٨(_\ vؿirH;9=< XnRҞnWϦI5gU'$m֐L|F1n4JܓOWޓn'.'XzBpC.rӟrڅ#}9+]EPb.Sț-8aN2d{9*:"EytoOx&ɣ*HNXucv/ؠ9d+,ͱ*z:CAjf2 v avRL_&e;=)!3 =H/PnM N܉.MA5 <)居hKnseel*Cx-ᳲMwVV3,c~$7y^'WءR8P\Z"87ڥn}⽙m*ZR]lFik%p'BFlBI_{ފXqĆ ƩԳ0nߑUjyDR#g-QacSd<;#HEr?;Vtzdq2 Ȼb"i"0$?Sl}DaϚ =a2 PkpD|+pkCGcUp:;r׬-||Pk6Ђh:wCM$[tD`Ll[|76Σ0h#擮ت/f6%z4 K.]\p}Q8ͳybߞɛFǿ{&*RW.L۝̞1w եуCKX`M˵T^/:m_ =ve[q ,ʘ֠_ނ.a!?wt,taT,NV)Ibiuu|(8O0@;[iZ'P`;wd]9}, 0}"]!ƭ``^@}T<,@*T,RR1~.ѻ!HC; On#KڢhϭG&9E:X9Cۙ/ Qx,-F ^.%@xËŤ{k1GpjN'wT/j(&%t\~`(r7Xu'DF*Zn l7_k54<3{D?"s[ba? 10$Ҥ:Aux'sA ZWi0gfš5nU0]J郂jѻ/8p|6# dEuJDtf_N|T)q11t=Q+K0}$V~ lV H᥶W7蕈kWMFxg/Ǣ2,i!e +-pbʻ\*>c 0xj:r3Z_d9'|zT#r cqBb ?\&~w"&P5m߸ jf5j$KOZWr=g;kdF0˓{ԅT[w[R}e4Y}`7~^[vހ AVּP=LRy;)!hԓgǜYJҭ?6$b'lWSP+P[)7T́[C`o~˃#`rG)"BގD2sHrկ91cm%ApSvU}[}D ayk)١%.tCF\P n@kUDcv}Y n4Kt+z:Ў PW7|w2VɢB#t c k@P46_DDC螺_0:>2'%}n uC9 L.>0+u)<\.rSYxF~orX@.8u1IәX^xtlQ/f{-2xːQXcӷlmΫJd_{c^6X-na/@2:#1o.>ktS8*!.%QK~RM_RóHչ0a(HlP~UM8\H/5@ct,D@vTH$ϝ|"j.DS~ 7_)ތfz.L1f 1޲>F-fe4L Z.n{ UI!C6Y0z۩Wg& `"}UMy&oAwh] !4 m?Ӻ=0ь"Vˉ,dZ$^"4͜2x aAVRuC> V|oK#25™'Դ.%?!ϭl.Y_Rqͯ;m1ǒG ŞU)rUj#1xL%PƒtՇο'! `zDlw}Y7 9 2a`mNl}|}Ŏ)[T@9NJ/JOFBp5oY)aETqO<a#| $aR6W~|p3FM@frVu%ɔ;ǿϡ3MImcB ^Uԓ;5%E=Xd1G{Z,0RJ Zoh:AL,q](,;-6uI,=qC}>h'+̮ đ.Xo3%kkNcV(mݢf[f'he_?I5൸,&7x@uDgǂk~CZJ".5 >E^}{EAD,QMPc(F*:v'P-Nh9M΃bhPg8KNڎ)%It]2St ]FԠ+&Ȇ:Yw`$Ym+BN% S_`n}J!aF䐼ϡM@ $nt}xK.QTc1[ϥ[m U@Eڋ:g|H ~;  5n{"[[F{S0=Јe4zRNo㙹(8KT kf$,ytj?|IYFi̐Q5,Ѵ*Kz|<,yge($._6%\݌Rry-Xʾ?0ʼ.:5"КHQKS*<$c 371氢Lsld2^}N%aH WhL9Yӿr78WDf鶜P=# z9NtL佰urZ{;H^I 72g>z޺ɳYOm2sDh CLLPpؘwJ~qR(_f-ݡ}I*ÍO4 YI/!Rp4A# _a05of0.5O.fqߵ2NZp\2 H x*cB3k_I6(E/Wyߦ~ͮ|qr6Rr čT |8vT1qgbPL 2Q50UFam2ĥb̋^gUT n_8O4F.Rcv*b3[$zc? DXڌn;bSN;.{D೦tAkDÝ"",y{ȫVZb"$.r+=t;Iiǭ>.sn*ZQE%a`(]rE\NZ[՛O?7mJKӆWr} Avw)E[%Apf$Nyb3o`:ܐ(zOS f` 2?.ن'ϼ#V$ܖ!iqAsH];79Yh!z I _NY|O kF~'h/k}dg+ ]<JP`'6"04XH1RW c5sM-7kpq9 (ՅQ38'S^6=jM0 5 gQ͠$M\n6bri\j^+1d0=krnbCT *=K^NU&|ɒUT+#ow3Ow^,NWZ/y;m\NIEB$w!~/m|#%K*|~oZn;4P(Gp5#_Pw´ϳSY{YsE2nhD+k'{ˇy.m;P[5: . H_5Vew 0v"ۜrOvPeL(sU&? @xu檻yxID|7#_ãiګDgOh _Vc_>Q`=}O&`pxZ4$rasNfl Xzޥ*#-=Yy<]I.P4**ײ42m$גׂ^0))b*%W)AM =O q24^=/3I= 0oIU=1"T=@,fzRoۥl1Жt Pd\gEF2z!>KYNT2W0BVMk22w Ph\|S(`&n-Z0&j5CW4Òɋ9%c| եbBm\¢`j.41AC<d#N)m<b vDv1b;ԗN1cidQ38Y*J.78y~u sI!i-PvQ9J=YIUq)lɸ0pK i8ORqTF S0EZ-1v~ Pi?O?"knЕʭahp4!Fw\L|G覶6E }ᱧCw_c[ NeȩaPT uSnk'CШNte,˅:R%9=м= N<ڕB F =X2M>,Fzu0"6*L7WmB[kevX >7r5Rpv O$mn2G1QY{u_Xm8hϏ}2ЕL H2`TՔ6ny:-D_h hXi0e|̉RM@[ /AWYCf 9`K؛ i7? @M>*sCCٹ3=M<<,ju9pn𯷫dBk܁m"]ů;2;BW2Iu;?ff HZ߿L04,WŘ,ؾd>qc$Eibv@"2&oS@czM>d ] NZN65PFXz!-M;j So 7kkTދ!<nl@ܰ}/Sǃ9@W}Ra)\K, zc3 l7׾bIg.~Ep ũ}T)#R42Jخj~q}P|{tQpȲMI(s|%y1hF&9}0⨶تRah׾>0jdi=LM;w11 5V=4L4N[E <#7Ӽʮ-8mC[*?guϣ`G ͡X#F"Y)klя.9R76IV/*M9IlCcU/z ?]3=Mݯ.Ȃ$Ү`pt hCfX3QEvaoEJ'ߞuMCn߸c;pĉ ? rXw &VugQB\Q̢[t/;K s&#TU@^;'k51VK*>9.qcI#T8cQSrHj1>t=5?I3oc5Rӳr\S1YqfkIɋP9^sJa0*wp82ײ%,Tm"Q>n zSvQŵk呋KaL"x$3kNKUpmV{"'Dms^Ͳfa)L:{FX5d`XD_]2S3')e>\9gHBqD_wi%m @!l=^窮(*"DMoE# qB㐥+|׋'md` YC%nk֓z{u  qQ-1Edぢaޓ ݟ9J a& W'0 H/z)xgiU64;ȉ4M{*(иd9;H2.}M"匢{q]B]SY`a3u_c*f/m͋eE܂ D:]S72Mys@eDg{|Ɗ?6dDl*2k:c0$87O%.}˩ip V?Y҉5o'l?#AKXTi6 Kݑm'3lPJN "yrwvU8 X4p%cAXڏ?M&qt Au0z)^zސnV K<VMI8Աrj8F5SyMWks|4rR$'[ yi I򍀦pN+jAzj=Zbur&Sd4SNۊ._[qX,sy<8NpRTh*.[z>2Aj]hoI-i$4FAh5P$jQfMA9GϑxY#qAÓ=P7H{0UNiJdCA)'tPE=i`u뙷7b!+[ am'/4{s]a5)zl2w`* rѤ3aY&LI` 71 <RȻ8!Ǔ38#Qt;fq8<%m%qs^/g O* eKjjl9?YW9&T(KvF%4Wgww'\‹vEbtҔXGHQT{wBͱqraëd'm6\&^37j|2yӁH\y9Ԑ=aT@L Ѭm lgӀ4ÁeWu&'3BBA(0kbi\P'k 6ɥ6v&1C(R(2+,]B~]Xϒr ENLH^pnZٖ24jMe1K-dx۪H:D9~g ZАCC5'{F.A;F<2&9уw4ٛq_ rҨ԰4lZoA=xy扸}hoEzjŒ* XE]<ya]0u`'nO-\do_-QWD!I1+?4tU'ϲֱG%drˎfWRRܰV#&9,y¼u#0A]lDTv1ѩ!Ab#\s΅k"m pXCýbW"9jvqqbZac<%P _b}ә.kE}Er"^]$Ա~1( yrQ#T8eAjX{ IvO2Ոy 鶹eQm9H:F#|YG?ʲ AIdVϕ4Tad`~,SWEc[#oÞҦ~-q3=;,_o|16+|k7y n{4M=J'{.Kz`y#""BnztDH\Ъ6m9Z'ߣMԠF{3'zMOHDGڇdyvjԄ%#YO&}[?[TZ 2 k 4Glv@ $e9R~VciE0YIHֈy!r]_g|ֱxRxAHռv'59lQ()ڱ$n;XΎ !͏ JԜlSåCE:z؎Pe1(n1'eyzNV#]Ĺ=,v ]ԈCQ }"$bB!TN4&? H#ÏzLp6Ǝ%Qr'='V́rGa綍9"qCHGӬ 8ѭKeCa@eT~b[f3hȭu0qi4 -lp(#g8œd)pXl7қ.%W̙3ܧs 4PD}-(8S<$ 8IX~6N)*X8ǐFe3pkDf(8#LܹB[jL-(4Agt+|&#|iTsq}:7Ԩ,"X^i%QBx3bbIUfF%#3Oz ǩ1#3,MzQKtA%d|UIkE.ZS ֌~<ѣG4 dw2jhp녮x[WKv"um 랐!`n6Nj|UlVMw'hjӢYi[M o$_TiR3p1D#B$˒ ukø)# DÚ n }škb8ikc,k> B:y.T2g1N1MsB Q4bୡ#>&Mљ2:ӟ |2*BsaFg_!${2|y% e?1SG*iXb~U(aG*ėV3FT'@'}bN"QصX(G_{ |1"bI̚PH{/2eIB>k&+ EkfVEu2 aON ,%bZR=xSs6g^BfEӶZx7_l]$/}ȲlLX']۔/ne9^>V(y,Q2B@iL'A3HӇ^*A.j *QÜxnVd:5)`Sfch b+F>3IJl4[2Jh 2of9tl\:Rn«Ro87<;`wLXюr_` 4myχ INTXKq3.0Xb2:"*=9.c̓`7Nq:f-yTgfL`{.)$/ڀ!x,Cٱ 봣O#"d@_7RzkLΆ!Ph?kAbXViؤZ$G@аdjO;_KOYœC+˶0fw|I(j(gE\[; X# 0#!\jPn'Sտ n9j]QT[>pVIe*.A4Ũ}@+j4QT `#&$ZnN\e)IݞI@M) FpZ]+dXWv53yws(3`Vh 4Ug` ~:]1`h$FJ-G~JL@ԞjA!bڐk3%j< ْæ ]P;*fLQ/U ʉ d߂ c:x-pd./%GiUp:i%M-=YWE#kSyک M~pJxLԐ4rKOI*/NL>xͧW\c+Ql{7»_τj31t1JJ69\U!@tdž.to!;z-DlD1W{IK%UOyJ.c%XK͐|̞$BQA\B›~yNYHYBQA<\U-ag^'jW?ykPc从*k?N9 O;wGy j(OfϬ2Vs86JgxCХeԊFFܩdM9\)plV6ˮm)o\_^Iǫ͋5XݞͲՙ;^XN=J=]xzڠeAXuJǁySVFis5|a'mu ` Nm{q%/+0%sH-`ZxQ )W p,̖AE 9K)Q4F\*7jcˮE zmr@o^ *L2'5$c MLoeoETd篙!@N#a!IaMVSY$3wb起`܃zWM}5J\@9g *)RpZ9dS#a-v:Q_B$/{gP q*Meݷ('tuKT rX^ҪMR ՂT8 qs㡮:LxUn>&+hnA"=e[vx[ꔐ!Jsԃ< -͵}`M$rT~Wz۳\˸ԿQ'\[(P9YwF^_')#Y ȔU>l<0gg4&J!~y:*=}Ӿ_ywY9k'OF*òmz0@mFt`l>b<>Rԏ ]u8MNmZ:O$Ţ`-*GEZBV2ԗe6s38[Җx-Ј6 ʝ-0`],Zo3vӢqKj8[;g恱']hXcYmN$6lE-{򖍓~T8NBj&nQ7qH'XL=Aں#m.xtۀcd@54KZ щ5~H\#ZB|g{nCC,iu3X't5~H9o'R ?w`P/#U0FxvR>I5Oil3ry^OR\'7U~@Qs<;a7.X6R 6%Kc@ң3c ejX) LWʉ9%4f1:#0 .<5qU҈4lPT=YǍ;(LUC)斊ruЊeTEup9f>NR7>"͚1Alx>Ns|vy8r&ʇZs_GA S7dYjO͠v{Dz4QV )֤z&4$JBxGa[W3a6F̼8  ҅8["hyS1$Z ="s3gs4ߗf$N\-;r `ϒr")P2SHUJ@nFI,t0SE$LW⁓ގׅ4n3v %#EP &]B_sXx6ē$Wj+3ʊəC F=mb:j _X/E?_Iz}Cu/V37޼sJ|O,f:omK`,\\%Yg؊;Xn}TAܵDG.Uz]Rmz"\Lʒ-;.whU*|3r)15G_$SՓj r?1Mf qV_iFi&)+- W}g\*L} -4AƢ0h,{ΰ$>;Yk$+D* t޹f-y4 YvtljP`Pŷ3g,i"G1`: 'd ;|-wMW8\n>%`홌d_JaZV[`Zj71FlvP~lS<[#[wGuŦ &hBZUOU%-[QPpцP)6<վ"RhVxpm)r'u5`C1VOSFSQ  :>XS[C ҇j.GvG_P2K /8:`uA| =IrjLd fth[ fF i F4|P"Ңmڊ@AK`@b8ϊE^`UG Ο/޳ƑBmcP!|dvXվ(_ZrFdw8m2jY*8YKSom!k)Pyٔw d]y٭^\h`;V2o^qNYɐt)*/4ez@d'\a8gw."‘>Ex i`xOHpH.2aG&UV 訝] 3VphC!RDJDPxFuV9ǭᄀXh?ObiVh|F~lF-pDW&L7i;u; `XDhreB5A H(L#FHv%(BiaH/7\ZxVM#zSv^x0L9ZhkL\2pXee$ddu!y\+=Ԑqo$FԅÕt>0{kΌXkoCZ\M@QJa8Ƴ*Tk}zg|ww&A38ǝ W7fQPV*e [q~NW3WԠ8PfmmnYk̕>:Y˥~3Fi: #+{k\}*d6+@"H7:æ;#sN6TQl"%04n2ᴛm2Uٕ!(cy;Qq/1,! -*ϑ*'9xր;Bvq08 ]ABchd&/_3zwa<q57ǃem2x>&Q:gg[]QnHGd-UN(*6br;bFo v *PDުaNjw*x^ i: ,% e1 A;JլRw&yZϾ~"NlNMW@FSEU=lSs)@Uۢv d #KBq<&!;hڛ1dC VW\I&GK )kӈ÷Dpt&CZ6!x"ə,5,o7$fqw[@t .:;΋!-Дc=+Ybp +h!@_Xt:-p-K`0~X+c2j۪,Tl/FJ m `bm9ٶԻ:m,nտ;L Rt6ޏ1brlN- :})*g~ 5ܽݨt aP)$!4zCēWqp cNkhBÝ'I퓽|&Vf68] l3P1.Zk詞6Z5Eu1 {(\g!XU#DP0sHM$bӡ%Y|z6*^wiH-i{›wֵ3V>x1syܞ j|ޚzp\HRu ~ըD:T2&F^ }ej( %& |g247]1%,z+1趉+3}XLnh=$ #SriO |Ryŷ~v"DŽk Z_e K? fw6ts^SBŃ+\ڳM?R;n0nL[Iv5R"uiݮo;dyg@҈PpRs0(۶D>.VrUi8JtUf L|cSmfncaGtV" O\)e~L@.kȟtRZ6?`u3=~Frrw1ԋq7kja,*wIpI+E2}V]9't/݁ j0eUo#Բ-I b4{D3'aBW8 N? v5BTm$̠8+6}.h@P-,MW-#ݕl}՘k5:7TT]m r(vz9!XnKm>"3V+#nǾ=2}f2kHHO.blb l>پd;|dh Hp+-- 5Ba= [eJFk7]^bji!z^o{Gg&he@nI5{3jXKKZ ۖKGp(xqr\b(O !s u|>'ܸi@Ljf m%=| TV16^Q'SF j6JqLA$ _9S*_\^]ޫ#(!dF o%k~|Z3zح>m֩kc; Lp8hɅH0`~L+7B1l,o"~Y|ЫFP\!gt,*c^m<$m]ޕ=W9gs#}8-%\5&m[8h|qY8KOm0<Hx2ftOkk zqu|N|+n V#SFo+Fe?4A BrjIOL b<<2U?/ZT#tTJ1\JI/--ρmg 9E:0>f2&c-;^~jBH1S鬗WO@Gg:lOgY 1-\/_^c[j)HM~a#KvJ:]pD+ƨLoBq䁃Ap;{rvN픽Ē;y|UJ-Nm C F.qg8;vcXؘƉ^eI85v Xbo}w/WoՐ!ymd}?D"̙3o>7B ڐ#LnXn 7΍ݼPqr*=5'Q2IgŸ'ˬ()V8R',ۨ̉m0C yfZuӻ-jw=n?Y6.bR2&YlB_6}ˡ& Ci䘗  ɻt31YT<#+$EtpEmwrwsٔ泥l# ݃{ o蒊%17r!FT9՟2ĸRC[3"s3ԵZHK)ć\${uOv̶MFLJ_Un{k.T(!6m5kPɅ`6{ȑqB}Ƈ>20 $= nCp\E^/c/$~lH_yD$Izjn`Bw5|__/uCojy!=5ˬcE\1s {]1 zYhImD0ܣO7EaJZ>כ "(BT>(f= Pcă)4i`˥gxn!+*:Xx_۹bXgU]̨'Wh0R뗂X7C/C Ѽ* v3Ljfs *]ϛ y,Vt!,=ȞM\c_CKv0ަOz_SkSLq, DZT"Y[VP5g>DV(P?|P=vڔ _+  +&JSG=yŻ͹ߩԪ^7`|L_|pekLpنC70ɃD@Y2c)P JANހmcۣP&7eFʷHR2Xrlx4α3F?|s*#5B2$C1r6(w !uRJ ߰oV_Sm–ϬLaG70Cݺ ʽܴWbTp2]`0s|W{BKb{)Z59PLi^#7.p ]Ppհ%Z9/B\ܸimD/mz=s1j3o"Viy[35Kdp^.Rksoѝ9"ji)$i9Eѹ&K (&'pEk٪e}tO j,"ESuw1 :"d3*>$t8Of[?_WA@ E+@Dؑ#{|`ug@aIWAV~ضY^WȅIdGui  zT-u~햟5GNWzeByW)8 oOӺm݇m6FKVnzbGd.¿pRgXr! ;PI((E&jU2tY ->/|2~@wM <0fW^s s% Z¡óbT<~hnTm 'Θ'&TQXsmzD|yNDԗkA|2,8)Y-k(('`6WZ;4>_.RDx O0=ه Q*!g*Sdis(XVyus0= n|jȄ阇b} (Kwk]e[/lCZkZ8a?{ X>NLc%%SxY{V`BъJ8"$&&ɓ JEtRI>‡˰k"huv rkaYJN~=!rHwh!N~LNr[,mȈȇ;-k:szaj@_4 KpN0ÁPCue/ߨi7| PSZ,@Q[,Ti^70>sZ^'$@E2A1|o FHbⵞdTL#nKF/Dk,V`E&zfB, eY9"Jc-d )Z!yQ,"(iUoLPH{_Fhe?1.aA{zNV'i+M q!#dtbǗ6z t6lF.3ACkxҪtTdcB`$ߙ?/9YKh.&5!(gk #hIPl¼.@m|jc}ƒC B¢(G7ۜs6(WrC ҔsUM#5\ s}K~`4eJe vcz߈.ɜluGs wfO۲Sm8s\JD]i+8;0ie%rjjYIN!bQQ' 378*fAÍ gi>HBԚ Q. ,fֶZjƬ& eM&tX9OI%k>_,zNaPl cGfy'?*{NsJgXTsh>.z^9[:}eO u➾yUmŸZSFDa6wU?C0Yjdi |RՊP{vٜ-%[@ ɺݴw&=k&%-T[_e6. D֗剹+5V [{UBQc!nOq4h'-#vMS>"040iq:kn\} ^dIW$ OǼ<&DFP>8$ $ *F yC_=@fElMHeϑ=4`|ѿOǝ L hʣVWũх}q[z$8c8Ml,p+7j+(vblJQ]#Vw(_.`e A0=3W64QV=#BPkOؕ\TG GΞa6ؙ PbϐS.Q:c4ljjī9m%*k@} v +\R6VMmE?=`O|c) *,)K#}[8(ШI,@K0qZrʅRe*1u.&I&lϥ)J,J w!>jO<1qC밈'0'^8Ͷi5XnLҷz ryIJ`iU%ѭD̹lZ6Y:52lV=+y7K-yG!sqhlf /\r6A GFحlQR%צ:m -YE&)ҚvON='O:fAgTTkB> ȴoI6WȚ?rp>fsKrn{wa<ui 1S>Y/{*%O2?tYmWepOS hSri AWrw V$[6@]Kp?a'eW BGk fceiYU˰dhz]zQvzW\_C-]yx櫖ecS6V!M)*tb4 ͳaw ^B g i_{[,rqmJab2V{0#)USm2ڇX#Gq:.-1@# zXFm x"Sz9MćyGimQ=AMm<e"TWA)&qu>6lIWBYP PVds x\Dd.vȼJ]ҴHQ%K5Jr ="hTzx֏(2ywSgpaoC(ЍR)ԛ(IgXC)[?`N-B8ck|dtTgmpطtbؓfD.Z>3DCg%%ѕ"a[m w("OaXOMMU !HWLgߣIF42w'>ȅ^cTsM zmچMeC:iV_;z\^ŧ$] L&YIkSL / ڨ bfUɚ9<ݨ[L 2c/Llz?b,O0d7Czs08|8 K8t(pE655{drg`RVI{Xۢ C^M6Bƨڲ@qfaK'o|W+Z:a,z]3 /H} $,4.4DC@oX]>DL8/|/D$CdC9<,]}jj@<%{ntU # ax+6n3Pw e6},m@_^@c :X+Ilۛsȋk05ަm_y|{UδViq?8yncnY"* xXרb϶SƔ Xd>d+qyܪ0t^;n"<>DmxPj].I\?w^',*N$+b`xvwqnr~ںGlȏQa딻7v:loNS?8\)UH GmcaMk#90Jr*2f|;ulӆ1{.A<1}4̓/IzD`ʦn|PMG8~r; ֦uxĜRGߓq;Dyγόž2eX?ydVCMd0Zť07zzM][f+@whGBg`:kD0E%9}bJTrVx8^+B0dwbwE w_Aub{ [4^$:Z?:leT~0DZ,f|/hzpﭻ3J%v=>z19NHo>z7EK@6fv8@ LxretGgz~?mt|jҘȞ uNgK=6?! @H5M0v']EF-]ĝhV&CѶp`Ӽ"LЅ(_䕮7mt",;|\;.*a/6ʲЖO_Wp Ԛmy5[]*n&AAB1 ד0܍Y .)&\-zYDlec4Sf ?*{PGD^xNP_ė0CT܁I DŽy\&Lh C͔-3F8U~ ľKJPr "5&,=㔈CL?0HZ>Xj~ ދfJ=0o`kAy=<~v2da<蚑c/D#g M`%a¼Z 2>~ Ϊ̰h %1y-Xƚ75(20K̷|uם\{e"afK 򵙖`7 ;m LblH&P.7VYqyDz.t՜&JZ%u josf^SXCb^ 6TXVhMiV@(JwÉ/v2qɒ@ O&àORvy4P1SmPDC!TI@.8Eɟ2l\n^Pt׋4$ ㉽wIOa@W̭9؇J/މ|8`Ō{jC{||{'QA>/aa p|=)yD0R69xJ `b)NۭbH*>W5w$<3gѧ2Vv@]'#ͩc^|m =cٶ`.̺Xo}S>m{a¡uP{-w_`^eBI,}4K^.Xkܴ7sBH:OU[ Qqs8,fCTSFfź,-O ּ]3$$׭\ދKZ)ڔ $g㧰n*I6!no;I2@}H33sHqOl`[?f\qXvJ]L<]=WN̜AL ^[&lXRTZNʆg g"$nh^GDsΡ>a6 2l3i;=p.VNr,]*%M"jìxYez r:݋+z[`؄OzU9>ki!@!~{DcÑe3#) 1BC..8k!q-JJ*:(8R ES &${ D9ajKk[ģ!kRk$L,E? -oVI ]ё-ߍmm fd%Ql//j"˔9q/p Ơ[i2W|zΟ cSr&'6\=p;ffJԎmg ;Gz0B' j=7_˿X >ɳVZgYEI>XZG~fGqy<+Ha]G^ Up}P6Id No8+J_h.V 䄫 7blq_Pgx79e?Jf䔅*&%;S˝ou_ZB}TwX ϑ^#x&=X V*u9vbByKLgΩsU YQU[9<:otY./(%j9 _~WUcE9Ѳm }> Tc0e0Eks/(a~|oaat$:<* ַ;>%ݜH|hp.)cO\CcHn}Pd>e%L.ld[?U,|{I{X̗7dRm0Ⱦj\C{c8s0Uic_4Zzx ADخv2\\7P{}IV~,3:No^d3/79NcwāYLjK&+Ϳ, 9?*롌 п p҂1twβ ԘoMO=~ۻ d;g~u xct:y$ٗenj[-ǖ3)84]^8<Z>{K=J:EUGTxVܽ/aH%'V'gW?;bS,X$ҔdFNX+jE3D~&˕wTCYfη;K8lQinXM1RE&JE5;`w" XLۿ@.87""s֨IS6mndG"]ͦe5FHH/QUGv9a=yb6ӝAF@7~R ƵW5Ś1"֗ <0Vg~W6 |/.Q&<?m8ai8–*Jq~ s%ؗ1^,Em2bL's^z)ěFy&)mw,wP.63̕GTōI=edbn8^p K8K{fMWRT"^'*0grF pZ,|ro϶YgL2۩abh2o\d`߹m:k,P#,ű{J-V]^X2,v,VhP {K>RDZT޵BZJf\)h/3>+}ާI~3k L+sM){ Û]K7;Q GA汉Oz_fM?<`P.3T~Y+l ~S',l} u$nE_Nr0fdaKo+(sS)TCȇ%ӎ[.%wAȴf j/0khiܜOE۫L3Lh] E$p1 p*[WZ"M_m`Mf?WP{C-5;M1)P>ev!|{c.ͧ4ESKՊ= 5rSafcXA͡LQw?cЖuH{:r0O$({:E1D-@7{ q =o5Rء@xQ{r0lU-4觕ےMuLy&h^zYPEH\Mk˸2OSΌD㾉Y{.4 pΗS+"grJ"1ncOc"\V9{&ZG$ }1LKE7JHAXJ4v҈GJqH q!Qnkq~N`%!qEZTu""˚ kT( 9 Z(ܸa͚ZG NP?GXb4gx5 ÔKfF축|I[f / bufwRIإG\oά6qpG##&KbyIa[F&H|Y# YRE@'Mݦ/[^z3)b0^QYam",T accaΖJH̀$jV,s݈r),O =$Bۋ q^n&y+L7 AC#j(FxvtFS:OVbтa;;|Z3Q;b> )f״ᗓ2 D)+CH!/Ї6ab(0^NHH4bH\ۏU=]:9q*!*GCCedx{ ?=:֥K c`2y;ENOABꊏ~|o&Mp;NTL~hiTˊ,A9}|NNO8c`V})AHçWژGg~g3`CAp$sv#!Ÿw(3)3N/p ~j/١xͽBҋ @M VsS}yJlc1pl*ʹהk`ۣ,0C<5+ם}h՘id,Le1eB .5 ,>OIHǯᲶU\P-v|LQ<[x.!z{""-svE#{"bw|.)řO|HrrIC*6.dt) q]j6l-R n`-H-IMAk!e|ى.8*x'GP%GVh&ˍԹ𚗊λ=0S+ R:抪*ur`]fP#k{l!.a4nr"lWIvs>f(mިZuQ̄eYh |:EN?Ϭ0pMv: sjI.juژ ͟G5(Cz6Op9z`%'}P@\M^!E~2'U;SKI:TiH6CW2Ē0̒+MK7`[#.UC# ߭tHގRu쾂t(p̰l>gT>ҡ>IQ$8]R^[R֜@'$,9~)p%#ۺBqˈN3;ć ᣮ4Sc/^pyP{[Lj0~zViq\I"A;ci}lK">>*9Ʃp_ڷL~$] nLb^ ;%waɅO fCyOD?+ [J4#ܻkoIkjl%')W-AUK;ld `U?dB]?rv$FGz,+%`x4!a.('*@KmѠ566u5j4uw]Řz}5>hM|KgR͟G$|JT%6چJNƤC0%j/q}(Y%j#-=]3[7]JXGȌ5D90™V% ^9XhR#jhygۣǥ NMj/Y\_VU.Z5+-TS^ .pݔ[LK+c3o"'mSR{ދx!h@:*')Yp3xSU!j37[fbnn<YPvTch)+1/$.:yȪԾsBb\F%BKHj|٫M4D "]&=r$mF3S,RR/Eb#C!lw=uYĩ%7RY%'dgG$5T<ٻMu IvzT &[vIv@9C_u;~e- &0AMUlL⥂-#pTcrnjąd9 ~9r<@;TlIug \X0\ǜ1tqGP4y'K>uGHQ}7>V90e02am 9CDIӟaԚx'DOޝw4܋ƌY!%UgZOVX BXs;Ass>DqQ{-klES=P76tC;;Xچj5}aNU9x~ P^RJ/  |+bL!3Xx} 竄7@ܮ {(ɼlG~2h/آMf TD+I),"褦oϡAusi ! 94iJ!mD->7.gga+n$ʖcRwQA|7[?[wt*\W>c@%YMStu7pQK<%'~[C.289c~&.mOe_)(>d mY^soSC/3 mm%n-+t[/y}8瘠͠ ?Z2n91}pEZ; GؘN]r=ߕޭ ,,ə#\)he)нj* -R%kZ?Ή&} Mu uQUI՚_kK6]a>pthſTvE 3<$+r )Ni;. W+jH:E\ h;G;/ LD)Y~C<C/H @_y҆A^FeS#QMs3ۺκ>M.񵼸\.H5˦سY/_5a[~6/=;$3檳*P\0D%&Z1 )9!Xc+cl-IEj+xUN)@ۓ6O,UݪhL_-if5[M;|񀨶/%bn^L6q%[5O3St~=e#:X後~C`-B=Y+V"^TNT"L PDKD>S= \s.̀"ܬNhf5 VZb>pWGBhYTʜџ.}WAӜuVk+ B1vylD Snry&e٥mj6(h\P3AζSQ9ǟ IbC/ F|^ D1jk,n`;|좀LKl'޾Mm޾?3wxK}bq51:0H 6$6h|aԴR)-aUĻ >X9k4WЛS5=OPD]y GŘw?ԑ ]PH^i$#‹qiY2e)(ZH9pzzA݊FjKKl(gEv((g"YMPK$۫;J$vQB1Y\6Sdug{JRg*BN_\cćA$B-oB@A:zn4~kM%rT®UIxy ˩:,J;bR`%Rm˲TI9W NZT#0&Nyf8|i`ʌaet@-m"(y)]\J WDZL<#ҐUhO: 4qƫ.ާ,)O&GAC̳9ZT >9H0fZE m$2v~Unz!*lToG;cTMhɟr#l<.ZY ̗1iÂҕnk\S{1W.0`)Δ$nQBgKHee*/zި0@V%2~ٔBk_MrTO wBc`H;9H67|BdWuI/|[;g8TU|Cכw-tR쫗,gvf3 N JhW`t?44~rg<ǵTмs4U.Sۃ .S<—OXҧЭaV?tIZ ڼ7ʭ5',ia[6K%1n ] r"{pd_pN$EXqtÃ'24,lt> ^a}kH0 JWDAP?|6A$*v϶#wr! 3821}_)lGϾd:XY<;ZKeZ1Ux%W?X+R}{>ip bѓ*O!`V';xѐ>iN;40U0$=OG,j܋L* !+ 7sڱ&}8b?PMVw_Lx8u,.o;J7M簏> Ô]wPjn%a-$Y'3S`ݢب;Gw  \lM#^ҽ v5\y/frHk&#K @K?HՍ2ۧ aM/0O,-1P%I##߲4P,ިoyCQ#`FG1qCDA:q KYA0ä%LefpXfLO'Jgo.v~f&Q ,WtԠzlravnN'^aT]v\ut]}op^F_[08T]4H.zfB5[>V.RHZD ]Ob1\PO64"w![.,aGbjddդjNѨO*Eđ>z34(r]a.iߺ!MyUEA.|B[Y)|,~Z5-i`yOտ. Km׶nUiDm :"%g-LZ3S Շrh>n2JdXN$29vM޾jbdqhm{(mJNX1m: e~|NSN=i|Yz_'j'Z:lSW2L *4n7XrN&WU?VG.͟@ |[{1D:JGKKpv5^nc@;Fӧe'z z{GfL6${u Yv_SŃI&9uϵCcFⷰy ;Sۧ [gpuƫd~! N9d8Lp|)7> AL<yu) {JrD5Z ||Wq؅􀧬AШƹɞ+8..SgqB@ /$WMz;Fst;~Ef?}/9>@cR5(h6~n@}sT4K@%!-,;`^٫ wz ;q.(Me`BI 5+ud3jZF%*1ι9A-ўzRB`Ǩޗ"ZZM21ر6wcF5C{Z7@_*.(U:\a*9t")RQt UF:=4F",gG-Řiȕ y?jA{αtM;R<]DNG *S.ЮXy8~z3!t[>=!/?i>hxJqDp{ Q9W{ɒP'UNJVy14qGA~:4NOEvi4#UT@fpJF m9铡 `߄lJWNR[i*Ys#:آۍjĉlֹ zgJAY {L iRO/WMQ5q`@Msc2 f!T@_ŶWM`iN:%,.fU_ΒFĽe C!1,Ƥf7Q{1:i^ t>'R\ *`vNط!6ru-O{I&T&@Jߜ@U!) +8DX0/)mI7jff4S zx4>BڔDM_7>i?)|lV]T+΁Uv"uS8vad](U9HAIJP>'?+Q*3?W Ů%{C2 Q̟/HM^EL2-N'`eozI >`NhѠU.AFRd&f[>Zyu  nȘ*;kS݀*ٱ$^[XZ(%FK9gIg#S.SvieM= ]u {;[]SB kodҏ̦h@&j"$Uȱ}&3e-fw'Wy]{V,h]scݾ bri7dlZ6!>FS 5xV^-'*a vdUX~d S/ HzJig.f#j=9Jj+p1JYpBP[|##8d7"9i1He+ HL 4SpN\TC:a6K)M4!xq3!b?b;ȻQ^qet[ +l4N+0>i$٬UnK*`t*25#|="uCwߝ n5pd }۫ueeAF΍5AW(yePND붸? o%"[ xٞTh0 -w&4s!wjWcY-,-Nm ;#:@\ڡo V-rA}kW$0|O*֊z}r!OSG$!X/V"- b:g}ES)4J,Zq@ bLPxzZ<@! :e$`f\&Ahc*ݻw;5yF!fJ6J]4bḘk_?G։0O?ݷ3uDE/Z/_DxhL$ ` T"c/*e}zc Do +C@]iϼ{c bq v8>k Cjt%c.9A@~@]й(t?\pl/X c TSEXESOB\-_\8Y^a~Ԡ>(zMk[Xj9ӽ &ud G;1dkcnbjo,xlD зboӜU뀮 CNgvjP{݁.6=͛^1( = %e7CyQ?]_w[gbyKQ8 ,UKGSGbnMvU"ͥ?`Ƌ:X8.OdXcgh0(B`6 }υrsiNAvRdBaש bc\1ɔZ84|b̲JTJolluu=>G;EpK4t9:zw}/TUFQu|;R˨?d2$fv5Ы38Ͽɿ L_xky), xIzHFǦƠDt d 4 |ljc0\9(Th2L^|Խ c &CôP_i2gz ~lr/zOIH }'%0*?\ǰʡXPAוۍI䱮!Yy|l|~7l5O5@@HG]: y~aZzu'VB-Z 2?P*Q7JnXSz gZ_ ֬=S晾 )-I" G@h͗Vh8<е}ơ:m$"PJBB&.mѐӽA-SG`kW5 AKޗH=HbMY*h%h HM(t^)] == U^+$Bt!-3H3kc/Ѧtet}\."7lSY 2_UŖį."@~0P' /Z3@tsW{@Í)V.KteFѼũHY|dmQMWWVȱNc2gcY2b,`$N(/za&o=qUiC_b9~H*n_ Az"R%(^pcPFrCdۼY6 < l0?րcƏjeWv?VVD)py‚Z3xg?<;dzַQV8Ka'D{{Օ˟xBf4C)Ī%1 XX fV7phm%Dwzm]We j~: FFMJy0lme># cgZ\k}q{M 36"n+7_ l(|A#I[ LE;۫ҧXwE*`4p|uqEФ% z G=|ꪘV pvA7,jr/.c$l/yu{;3R8 t]3WAt䵱v˧cGW4pZızҿ9a?9DT~=XC~ihD*JiVQf~-*5{ XlVf;Aq%$NI%^Q;ޣE~kTlcTʩu@L9o=n Gഈ D$e8!X~Ÿ-kw^+>w9ɽ!t33N-v"Eh}>SӇc4{ubDΤyMuoD.X^?iK\fJs Hul6> ^P&Ek= RSb)Hw{ၲ1.S&k(| 9bXqȓo=w5̮r;r{>JHGةdj`DbUFx!ODfhY i .TEbdt /6eקx Y궊]bm-yFV1d8,: >')4kv74שCwƨb njćKė),H$BuʻR+Q ]$W@YEWCCjibpju av]Q]e7CKa2,0WhԘ{}js$oD|9}[1ztXG^ZA`l:_eS! "xg~,p۝JdMX^݂QX*ćwU^.0qYcv1(9VֹZC Ye3!aךE&a(t0=D.~eryTp~Ư[n (h:7+k⚆l> GM 4%e=K2@&m vt:\g2WO7ͶmyXMr%@5 EB#Ci?++k[K,#Q]ȼa4y@&w/κ [f:~5PILoݤX\@ ~_ˋ P;~(xۖq`ͺrd!Y:aޤHrj͇2SP sq 2}rCC򏟧\HJW]Ü#FxqCrC.YxbI0;0xv,rIp݁A0Ie)>giBZov7HIwnF?ёC0TCU&&eA M ,%:% m<`;KR/Y̡;BP|J6n:R' <즺D6[wt3Q#MU2-qb`=D!%YU[yTn.K#>sLz'f:u#x/u},խ?4vOaDی#C8\zC@~uա| dL6pH!pr^ȲӷSTw-QĮ&g4fv[U)­r^9W:2"jК u@g:yre/Us{<6Z4'=[?)zyOL  tN:{^4?I\r*&@FYݐ=a; `>5E ,2SL6f{q*S"GBcqZcg(7ՄO([Tn29Dls"XBfrKFV[NukR 1T9yw^iHǽ&&>w`<Jm)l !v AOLO$yKnՏt,MT >RE11OMLю3(*?XqG1{ŃďԣzϮ_5HCupt%HS)Qc^qnu,߾)CQdlA]gIa݃nS LVBPQ-F/ rq`6cӺ+T2~pj9s g4U a0.u/pz&ERqU)WIFE:! :^Qc.g*пozWJ2ɬUҬ79̇Oycc+[֘=xCgs8oƯQe~;ejtOCE)Gz6Н!"b Rg?^rk9tKiUgd ?у'Uwق:|Xh`U\Z>quaMh6老k'J,m XK>1bfmuiI> S2>;B؂U3}HG=l֍rGQv`W@<_1~m#:JD`"gjA\BKTq"@tI8lҲ4wV;RvwnVTT"[ %U~nb?ofNAm:j"j=-LYn`W"nܷn9DzF5?d S` .GR[j7=Nq!{YJ}= \9 FdwOI3ڴ ~Uv/f:fsC>"LXXq;X4VNRl2"-)2nH6*<(x\YOzWI!Vݵq&|t^?ۮyÓʶ~۞خ@^wɑu6\agBq%e7_6{'$Wv=Cu(j%'o\4sb %9c[tI܃#WJëuVKZsfɢ٦]?5xfD91j}ejB$Bot·̹,+loV$d) -yD- >LA==m#yV!Cuܚao˕Sf+yo( y$P_u5csbjx'0I_Yɖ"N='%lX4#?Bޖ.h:֭ ‡3'ÖDX8Ez'Tu%lr.sׯ_ұSkƬ'dyJx6Y~jh|;;b,oY2sUWoW֐CtV^n(*NqQNw,Dt 4b$6: ]1mm ˇɢs(]< VAj]/mN@J$ɷ|2`5sR/!-19e WHE,vn&-& V pd{Lr&)ud} I#&^zpl=ZYGKN1B_ vݓ?uHLdn<7 ~$Tx0/@akH<5^+m"@{ XќrUN~ %h?W}KNw!/@mqCT NoXуx d[їAJ%3j 4 e(]$Qy=qڋXG7/0\Z>Y=)@ПDvUevw Гd7!,( diEYFs*\K%J}~%!PDŒOث~^[ZEk ziɗ&.1hKj$+l^MӴBZ]]*Ie\75v]stZ!"n%_}:B ze"i `M "k^^z.s4O +v6SJ4EPQ٦F &[7c6 h+_P?RoʢMZ{7:1+8)?b}|yJT n*-4 ]m.*Val0ijLƸQhն@I['̢(iN}1ҷNINȚ,$ R͔K(VL#zێ༔ )djCU#'E 8XRT=6q@]}|aČi= @z\AOt>d&Oµ Ljd)C -LoDZ/pH"}J#gw쾘cK,;h5QgIVd];>"'m.X`NwM{HE?T0)CH?]j'έ_2j#vz&ߧ^nw$$VSrhE$c23TzM6}u 1 jЂYO|2b4c7*e4;<F6D(HUwL5R;] :Ƴ@ȕB'@iLõ^/\O&γnTH~ҏEЊtS{G}|3\gshRуJ(? 0 AvWR8Xġ4<"̲u^rMb :+ur^ מo "fpE`No\`8~,߀H5Vd S4qsPKW406ƠqIۙk_vyՋءfZMb}Ψ!uWT0 %Lb0l2x=VSמg+ٍ^Ӌ֕${vD hQGDFJ؃+翞WqSEɧ(#wXQ`5xC;4FomwQ>RhQ#7%½:QMctʸ[=2$SG&r}c͆um$EK(WZMhK3D~1oH+B's;7uh q|uFZh4-FjD3MZ؂3c$r.38GpZ \:aM˔'2k]>4Ӈ:9O[D] ] Q\="vqdjAdpGELCIy0W.)B'^3fof7#@8#e҉P 􊹼\Ӧ<AAAo JtMRd3miFkyb)HzҴ_uLΌ.8"Byyh˒ Eឃ2/7Gdrd\=4 !.g4^)VRr* JQ2sˌe $gb 1go[;2!COU ك*/4+/B jY|ّg ċWKM@&<φדVewmGQ*^-ADPV9*QDn&c V[-\:-P8L Ͽ9$ L!&*nzј;Af4@ڰs)W2ZH)/Z !$=&Ȃ`N8.f QE^p#ؖ؎KdĶXI+ziZy᝶/}g/Gaf&A;m3WUr/Ei6/N*]޻%" x&g @Ƙ ;j}ZRTԤ(k=VA8yM>ROxa^}QA$,V_K:bv\8k2+>^*ŎjE5s~C\oh' &:z v]N=)79\'OW>NL#Eel){H^-JX%+<clSF.4=rQ%4⌒^ Khd|'*޼*F3 *tkE}F+oSAh$0KtLf->zjmX]j`gk,yMz(7?y={m |18zX-=M3oZ!;ާ *PU#$+Zp[e>G_Bnv4LH+0.Yn2/O0+C_Wy%n@'lÆ?ڜ<~=ՍՃ;b &ʔ6% GAս~lʾQDR)j/kR31*/(;uZ;ɁuVh4)ak{2\}E:3WRX=c=n;b]_QkB\ ^$@eW3|z_b/\Hݎ;mJ1F %=Lю:#k֎*>O4mP'IW onsET ASBF.\Ft@MzhGgі]A\?Y6cп3Pl|/z*e?4Xi) n< Uxȝ4 ؾmCVgdTaie]qb'F{ΙM Z5ykydR%IĮк@92ZvlɈ沟'Y&0XSLaך6|RK (P!F?s:VR@LiQg䒸,釪hsqY(O]fQ5|t̼\Stő1:X6R"< $gvnlKɧ0K(6h)v~ G[@a?5/O͛Oj~jJ9s XOsOL|!3倭$~En5/Q$k{_%1A2eoۻ T%.Y7I I=aFrS~'^ZwE=bźQt0hE` ʞ 3 /wKIcC7Dd4!}S^ޙGcड़%˱GƐ:a ʙa'6=GZic_CF= V\ G\JZUAd|UkN9nZ~gMjO/]" O3e Dm4\=M n@9ljͯ~Il0C|5R:HOV"T}mOU+K7.)*PBE/ՄHLnO#JyRnrmN MM1 uy<Ӟ{MD BDB3җ4~VEP&JTX\!VtUE FIb RFUfRf5t. ",MVxS=,iDgO Ze|ax{rӀDAOQ?X}KC tǿ(f,lM|\ o߰Wkv -,ꤓG%]&%X}ҀoCVGq^l&(%-yiu4iLJ!>YsX248%8D'\Nr m OA;觥#cUl֡\-Xakgfr㰻\ësLc uɲ{޽*-JEXT-4{{j=ǑeKNh &q̰+U`U0:t8S- yk S8պ#65P0*/~p6UARWo33 "N-ŤL)A5հ{zV邴d؈m$ĉoN Cfv׻%^}%aݣTǼ0UZ=HH1g!䘑0#xS Nj0!bn%ؚs?gZA2JPqX7Dz¤>nomVI۵.\ozvS3L:5Gt s0x6QF>E"}D8F\DG<"ZWAEXk| Pಧw%01T!#n3_^V 3G+*4OÁޞڦ\= Sm٥#ػք%]B+8swo.d7zv6w#kl⎄M_a)a{_.ǜ,xZ",EadxI"38'͡/`Bcn{ Fⅼ|S' mmIR)=r9WGw)CGO>.vd(a:W_bs9h2 UX1ul vgLDpE{ݏmۇuw2`<-פSqHH]}  9Q% ;wW5g1ES (uKVh ɖ"~SAyp\Owx,/|>zFO7[\t7=B% 4.#TQB-^([7dz監 VKmbp6CX3gTG|D&@W9LCnIMK ɦ痻J&* e~zҼGܢ_EhM!ưBW#׉a^Wc=T_#u /d`y2HҝbxWY2N&K I]L8R2Œ$ G662I]k&yeYWWȇM^t3в]K,A\dV6: 5h&E$LwUR9M)y\!!8H(& 3XYIuRnNVgg훷Ǐ鎔OMxA(B3mH;wm A7N[;L=]vu B <GdCPuxы䪱sdcg(1]\Q%l6tq4c zй fà[܋Qޖ~7P߶* q0IR=}xRa+>Il! fAb"\zSlgg^|/7ؾX VGGY]~ƊQ#+䴱#5W+&.@4Xphhq+ұ`Ч"?$?ѩV9B$`|H:.*z7EZZGdDXR5ozRkn-M7 dcugyi@9ES*u7SYxlTFnҐf]EZFD$KQV}3n)ǻ޿HRGcsZ.:td歧'?G9ѬFBcS(=žIly 1x҉h WqޔKȞxb=ĩfBԼ ŏub;q$,.ʖnz_!rW1wFQJg9gMxi"$KՔH^9`SNPFW8;Ȅ ~j!YSYn?&Wڭ)gMPE4>H[iOi7qUHۋ\D:KOienG:=^4rqs8}ISd`~0'Sȣp@.@p:^S& =%̠ԊsZ5ֵ*.49"*|FJ$?e ]muT%iHϏ:1_Ŷ_ZQ.NbPz[b9 ~E%46Uj|WhT4 +{ܮ8Yfz! =n#a,: -M?+<"eZq}eCOށc~"~f)ǻ)2XvXV^GӠ+GTJK}0lB8)Ŧl0h=hڀ]Qjza,#m9fC:Ŝ{Nc6+ LjW|$ڇS^6Yz?AI}kKZĐ%C*,t`~YÒUpo*-,鶉V$e3M~6-aX pY3WU\^\VTAK a1^nݱ\صd,N&kre=tK׭F>\?m+#N;3,{D [Q(oܮ34e+!R y"E_z,=1,E]H#zj\HIP{Er{$+h]93 xyZH%L=~>nNxF+ڇ  [gt hh?|WH!/gYfyB(QI9MPAιIh#]P&GJxg< :uu?'pTQlo,8 䃢51U5r<߂4@MU(Q\H ztlϏ*"$"VKVDg5vTיlzk_",1KVQ{-ڊ  0QLA,<ʰovtB. < ޥlX["q^:1fqgZ৺8d,WiOVR?7sAINMln, n/[sE&4I 9[.w,5=1$/LMduV B{* ؗ҂P}b#ƾ!fCK]=c>!53&F̈clxrPCOkfdNtb} f艷PC7rޡi1Yg!10"ɒKLgTE. fME K z]ş{Foo_zXPA@]aRJ\PDf0pv{M}Iu0ǥs htYK0er4̓G[ {)/E8.;?$Lm79c oӀ xѡ^imId^R ̫`?6 P1(:H`_ L]`c|@;]0,=L' E܇j6ELc[uɴ;R79Wn `-}0 ; Ʈ}xGoho@˾Ϩ]|82И=o4SӋWbQ'Sn ]E(t FE0W6?u#+zc5LqOVZ'` Q_c^"Qra{qP]/dnH_,Dib0/; oZdL2h.D&8GOጥƕ ֣l&6kZqgt׋,ʼn)m3Bxgij$/s@70&v)DqUӫ-=M7Z%H${ueKk|\Ai!&!~O{tu&=jh Z>`ԳT!vQ=YYi4χ0APPtYE;ʨY6r @TÇwP+䎂xA٠kk>d}>6쟷PC=jp'l[86GEW:imLIj̖}E.YJa3S҉d<$3W=a T+\V7iZ719qVv 9 v/ C%$ƍTsu}ԲSBö23D$Oh&1ڣҕ=,q@O(p%w=U<EnnKߞ0Z4?x NӘ4~iHī2JpA&$1m*2'5YOdƳ#Ƨ;;IFxEGH+kPHmNlq^eZNH_!2p}<FȴҐDSi8ZyŸ0TߏF w*>3}x\)ךуAO[tl,:}w\#yKMqIup~xj9 [5vLW[I!\5YX #^Vl$IC}Z89 ?*Wub$Y"EyIAK^o؟r >WAq2V?=f-`]<ŷORfAf f(T뭖(S lb?)`t Dclʻe|ɕ7 |m7NXެ1 +)ti(D9);/F# Wxt6dM 4ZtzoZ}WcN4y*jLf\w>PҘJVuJ

Mb/:IQ9 t])Fu+~H,}"lWԦ 5 \_ť.2@{sWr*]qmhXrz e5[+ Ovfa"p y_#}-WQ괲~lB[ 1,3JF!QS}JP>T؄5Xaw28z?Rru#C?u]=Z2_a(uݎ̠0U"|2$+\Gl K88b ::x]F,UXj$+v]\4=%X*|YPЩlF7Ԍ! Rvd9C!r86b`fK=' )*BMxAbJ\z׮!;u򅲃Pkڕ$t}:D9|4\/SOh' Bgϓ3MN#k-l h[: 52e. ;w7:t8jJF9K*LM!p9"Gc3vR-r߉F`PmlssV"'[\.Z{07ei0C?ÃWƧ7|Ea)&G oS*`|6U_p9i577WRC׀ +I^?m8YE27d4M@{=V1P9yx#{;@Cq#K((?НRGWڈ{:e`yU flUj"HzRH`fiFL<:I-fb ÕjGh}.Yo+Gee&oX: JD?;fɂJpfC4auGP;o\C [x˃% -Ws7Z%?O&2C1'@U䙰N9~~](LJ{ a+>7ڍg.cf<6ċ% G ?FzbRݲ#Zm Az,$F͎b}@PIDcߢ̃Ԙ6!.B⽄m!\U=}t;UR7 n/A]o/ N^^6@O%W}pL6a{Mkp@]ɝ*'pq1<<.d6Il6_>@P?͍[*OlfG`+vz&c{F 黄J,DcanOIUXS<6U\"V'(M b2,1П-"Ր-6+4Ȕb3#^K\HZ cjM5 >}n-{Pb^$.+$A/` .n-Q}g{aZAĎЕ#XLDt1r$[8A6+n#F:Wҩ oO&YD-Y8u#Qv0f=ٲÂA]_*rmAרEJxv"v7)Ǧ.u8+I,\uШ`UCT7FDοu)@-5FvSQȇ "M8:wRt Uo'0 4JChHrgnD?-"2 h] }IW .U#mNq`^k=ߠ ֮;2FB u#o001?A,T@cixAA]ˎRAɏ̈Τ߯)Y{GAwSCp\#UlR_WN(k/hy+ [D٧!+1]d}WK0kT@8>ؑ"6O"n҆~ROd qPfpz%И*T$FnSX}9b-Q^>kgjR=\1¿O6 ]X4|nfyV /})lYzi/rem~̘=,E0-Mڝ0i~Rw |S`9;O~}\L ]brExm B}q1%z{Og-|k~I+5-Uj5Jx!ecB,OKa ֺ<*u4#wPpK^[_I< ^'3ZC髰*)z04֔DMx9;|`ald ul$s54Vqa[L*-ƿ# o=s#z&t6~| w0ϕIХ4AR}7ʊ4 uAea"_[񺙭󑨟{-[¢=$Li󖁽LSZ0x̖9SfB `% ֡[D1K@ca>44npd!Gnje,zAG|nn_mc+ }s׍_+ `I NMD;[*d%^DW1q=ÿ߿WsZ)L/NWFK͇?z؅{-z2F=S %Oh{Ƌ~4%dMYNf}sB'z͇y@r"fgH7>sg_[7M q;3z~㙋X3G|hD"FDcS!?nL՘,Dyn\ F ?kk]Ȗ%Bt %PC3aj|+Z+7GI6ISN) b"8x! r0הY^Ih'X +Yt y[DY֔kT VrHţ؇鷙t$)[IqEE-axy 6MnV0CqghKP8g h #]$ȡh1چ-aVyHNJcT L@~hFc.8i~,mBVb`5dfU*j Lv))1,dߏd}*Bx*[6 i*+ȈT0_$ E‡LgO*S4s>1QywG&_m;j6ݧxg'07wbXGREK@0CGR*(8`SAj(xG\֤C+uCn>NfynK Eo4330&{Lo+'(![!Q !cLUTg AwMrbzo0)P%Fjxx5j։*,_qF "㈿TX@*<Je֛{|Of=0ANPlRC=VbN~թĘ;l~:`>$-81mLsG?#LhL@2DTAJzDC +GM7QE%9nA-4k+O3vHYˆ̈ 3iqJ(Ҩt龹VQ-81gpP&qDُ;~')Pdjݴ vykgC5Fe(E] $ƌ|7):AgIm~ S? ^-+zWVE4iLTANfQQ.jBw Nܗ5UM4l٣7h{%!q>_glgY`&ޚ*ZOHY(:]EXVuڳz|ɽPψJpM2+T o+$eW2 v^|bO]Jgqbw6 tsi _;I"ŋ\\yo4!X?QV)r yxs WM4@ Jc9,q4:M} Y6K!$t*/LT o-30*jZO|9"QgD{UQ3?f=^LoM"[$Fւy9jb8M[w+R Deu 4W`V (6zFB|Y-JL:}E )ϰ@P3mTڽ 9@:KWIWy.d@T&m!$"1 9 ]m 4f)G]tI gt vGvo^5v9)zp/C;BÆ<8<ޙmF|0RIZJV5Ro}"J AJICYh{FY#7Q@N˴[`r c5b&FuR!SJJGLY!8cܺq=ꕊ~E6O3yՔ`D}/tW ,i]ɂ\]49QO'r۽&aOƂm#٨')OMN 50:6{LwR~6~-)WnOGFۗT,md䰋z 8gd.e|^ul(<#S5?y o׶[6-u! bAfhBک&ǚjyKc:4.0`6#z R7h` y]+nJ46U-mjcQso8HK=坿j'0sO dEEN`hKgg&59A3 c ϴI a_$އY6yDz*dBw mN{B~( 53hy|p6 skiNA ou $X9Zo92=p!XUxc1)|4Yv-|oP|,N( G!:slVd@y[S뀻Gψ[b (8qJ*3)&;v,7IV']Q0Fmf-v0ZG/U;˥#f 嬻<1mos[;Ţ"Dȿp&Eґ~[I-]` w q @NP xe̢9HeTt og~h̾;O"MK.v B2cH;%E5 =U )+,Lc¡fuZH d=i*K چQH翾pz9g%4Ӟ"/^_mȄ* U ÈZށȡ݋{Isk 9Rzt\Ы.S¸O9j,nüFN(__.9k‘8yDVHw%Sa#kNR@ɲM1qHEƝ@MO|]Ҳo\NÍa)'DDU% MVS BT?3x*xEԵ3kNGjL_63p&d}2絙O\rZܻg׫Á|Tv>{x*P\aAV,MuZt4{:UjQ hXѐ  meY}x[qTwus35 K#o+adCN|uK<2 4!5xnvQ竛MJx2Mog_CBO# ū]Y2Ӯ H^/*X.U$h~б l5%qW@$n i9&9ZU/ᗆyOYlxvp#/]*2@A3w/^q]tt pPul!&))*NFZyl ĝRŶ鞱'Qtf=pzJu)E.4<:Uޓsn1 mE-cknO3s^}5`bx`ZI y&Yv-sx_paUU_HD㤅{2w87ٓ13A[}WUo6x[!*xL̘y+jR$JPɶKmm{F.Et #eP)P8aK)xPL\beyJnHfXL,VŇNAtG~ %=jw`4?;bLJc']> hiJL콰)ZQ)4H\8DZ_V6Ɇx6@UAk.QvX,ҶQRLLѥF6 ͡6R ]W# ~/#p'3UGF4\F,PB^_."ujcC55N>*"+Ä.5}*lԪA㍟7ْ}\hgM{Nsb~,Kv^QƃB7z`wfv^ڰlvHǼ*#\=vO.KWF\m2kUN­@[v˟lNGC)}M=۫@}/kVfGrt$ϫQ’HkV&rvYG?ZZW5hV0RUTRS7nsoBCI=YX mVsA&&JC3UwP+hLniOok=RѪ\M>G\vHQx;mŀJŮ pzk;ֵ+!W To"^p #Sh)g5H}Q9Y2oMg(!a@0n 4# #Ӳbd[k)BcC3#BTRw.6Ds\9nշ)o]ouKp0_άUu)I%4>%nex|L'Y[j^{8E=>>`-0Рe mK98&mj?_yS_g)T%#&1ܰ9K* )qq:-h]h``DZXl]yȕ~֓P2V=x%rewt6KhcyHݏ!x~+̒l5Sj`Ǧ .mFGnraT2eQxu1ΫBje[nW[ҝiWe"cQ\_t1hV<̯\ "184"J>5[\٪>= X|<1snQ#;tZ8X>o'ſ R*Šv`MVۍ(%d<*/CLS-FLZSudD#ͮ;6x~&–:4t-5/Fmђ"8XQ{'\<v&b <BSK>ȅQq?1Y`5a;/p$=`Cn1FfQCdyvXZ+&Lm/A) 1ԠpcJm_{ V^Ɂ`(3gL:g$)A>Pa8.OAeY$ΰ`WFd4%웗e $8E+ԋ[hB*HVf!Lo 䑖Qyv]"_y{*2YqiiɌnH&g]ytZ+*js(YǪ *#6X_/T>Z/ՖlLf;?=y=7wZtN^cueʒ(uƪٷzT% ,rL&xQD `r?5RD陚nmQ۹s2 1kUC>n'z>@>a?WKWG eGKA;m.YecJ٭g7-:7o@DzXGkjS w${XAOe{f?bb?z2)HYgYK"g iCG [4gEu蹣-/Њ:D1 kW6-_ީb{O0f -yч=ky`ѷqAx'u"/'%:|>whDbkȴ%wgv5CV$eQ?~t-{A/ܑU5Oq^>:C38&ps4)/d{g!cX>TmEM!0Z#ƥ"m)2:w\-dyhk ~hLQ\pkZJ^ Jt5SL9b/Wٻ:?Ld->21 Yr. h^Hj+П5,I"E$xe$HQ*~<"`Tv2ܟܷ| ?+ C4OT$%Gz:?6!I|-[T?e^*kAxxf~NM54? QsթbjXsMɖ rƔn]jQ!f[UxNt,Y> |8~Mܱ+ 95PcM-~E $TgX`?wQj*wͼ?YM|ozX",qKZA IO@d)jPgV8kK+*GO8I6aHaO<$>Rqzw0(A}x'IL1r "uy8Ї2tX;@I"p w8,c&Ɍ4!1wz;aK=%qz`g Q:iۼ>q, G{V6E֪o[ En_A:w*f4~@oY`#xZv@fvlR'ϟ #pHKfIKѢ dz8/6fkt$›6M:Gr} >w[B|%VH6;r :ک~0QxE4afʘɋY'ȣɵ*Zu Gn0P* tq^P^_amȥ-ƙoƷayp;'P]볆\s.0JC m/o)+g)FU1 h 5!ƨ8EMKu%9lFA2%ț@ƾ ZhnJÀ4-Xj..A4K{֯ M ޿11lsZ }ݩKVU θ+b`Kߌte;Ύe>LX"FFbL@n'"4Dbu.-Xo7t>Oݹ/ڮ GC@D|E i1YzʺB*^P& 3y>!m9?Pn&t"BVFRW4IL WT, JAj¥ov@ڦR}l"!Û+'% ʊw.t<~W6*U^])MDޭ?2Xb={plp З-q6XiSE 岒 nRso i\4 _99=<>+Sy*3EcP\A[W.x.@9*P^=* JZ#uoP)llvMʴ}Fn 5{5ʷ}2}].:kN X- V=X6d.(ր6\vϔ \F=4_Q.oWO9-}71=LUb0!i)3pGbrBn%/E MTځImdWqz{M$$QLPmsLi֥mIkqL@S}po0}UJp-CSv+yԆ٪4fKf<*8dxgb5}YQ]J L\K'W.q*Z?|nڈw\8K[f%wav;FOϲ cu 85B 3&;Ӆuq|1'YE |YDCdiJ Ľq]$ ~&~U7t37ny1GmX{(;r3L-].YzcZ%/^EZ2z Iz>im%H+s.~eJτ rB~HS3(x "*bKU:|X)+d/O s׫}n&LXvE³2և )\Q|`, BdIȿӳ@|I l=utq0(l(:Z֕*G+Ex{! cWЭ9F;ҙYt +SGe< ޵Fv>~ w¸DFWGo9Gҁu-17}:>>|ӴKL5! _oFcPddxi&j>3dt޾xHt~F;ITER )IF5>AfkO5TGK _E[m,q,H\w q(KV|XgF-8j_r8PB»3WJ6%H%ڦJc#=VFMS<8+ &2OF+q/HZu޶Wc*RQ9tjt.F)\>p .z4-!ʷYl{OލlG#g_)` v,-S7e0)!YÚsr6%ax*P <q"GՇ˨:uHogHoX:ucθ)\i7ST^CI/-ن¡߆4k$K |u}F<H3?M] 4YR>6s*8l($je1]祈j◧RЉb,Q̹6:RB,Z1ep[MD[QU>~֮RZy3֠ϻl$^g)g*^]+qfyJyNPQqi\L.Ab$eC,Z P]DKU6wLᓊVf4G5<*3iZ4Yp'OHw† D?U-i=p̔gtN*|0Lhm{/ɓa1?GWo-ᅘM"|"-Ra>\X# X,I6^Yq5-d ,s(KVaeЭytaZz%>B^uZ*5'蛡GRP-)ďwc^_B^?V"&fC2uP}tc}T;Rl2z\!_ 25 *9X'#: j|꟰s[qJ[[cK;^O=NsTާ@,/m9 ԆڶnJ,iv(wmhl6>[ w缧;]}p]"`d|j8 %Y{0`~xF>TpQoMO($6B.83+i_T4z{nnDI1}eL0cPω9~|9k,QZ&a+CNa Xi*V"&1+Ľ+AtIwx]OJ;ΦU۶s*~؅uArwyOJRZ8u/&SǪ ~װmo"TXbF Mx0PѺB0CHͣ9KHsL.ؔ%-'_^ .:Vn'Ryw {) 6$KP5Yw$@JoKJc u0yټFUSnWr{n_FÆ\ 5Eq+SO`s>bm\_6GLGqI#̇օ b@%#ϟj؅x8,s -(e*;0J,դ᜖D1T#CaM2 T@C@hgX*Vgr-±&EyVBd_Uj䴀U.wuF:9_<Ceq ]Vrt;bCp,q/zT`s iE,xɧFE*)! tD;MڟC\^o93vxbHSeSXA\(-_ I\O/´ka(P}D"@ETHڋ6D+_81%Z9V "T"sIP"IGݎEƂ ;>S,XGr/B2TLyx_ qw3WYxyN _`{38ufIW"r$-ׁ\xR]""AyB=>81 M-?]xܚ PP'Nz̼m1v ηH;aqGc$ŗN( *'78+şҊz@F1e[&3Iw'}Pta$1$<@nA ;S4rtt ]bޠcERM) KW3' w3v 91zѧlEwAj4f};.#bixDs68]Jyu S>iTWȐMZ_N, ln 1T=J1'K(&os>aT}#+w Uf9i 3w\?YTB5vA+)sޫ{7UIb/}¤Mc2UZR sk)8Fā㌀۟ăt_@kXouG6ZD8Q%u:M=ʃIᡒdu裞 +i530.^=ٹ7"9VRlE2-jiVzF~9І(9ϱΚz(oxQHQ>^F邈C Hq'PM|˂lPK30+ٙRHyV¦?wX`19>߂`G'^"[ĽXjD x 0ȧ,#695-"z4*|`De>M4} LXӾE#ЌL˶Z/Ue8,d}S$B٢m@_t32&ᾯ@Xo5ܞY~28Xp-˴SLr'Mt6?WOL/kX$̂Qۤ+ (tލK03_*䀥K(" dNOƥOV[k;S``4|ܢ0W9t meh,~ག%KCNi[A(;!ڷs?f:׀ɉ?px߿EQm_x{V L  (E ٺ,i4UV]̃:z-8}!azcvg;&9z.[0FЦBJ.>3~4'pVOD}/듺a}nq(<fK XzbeQ9'֎4 @h$+>豃'-He FJPĞ9BcM{&HK24u_$Xd 䰓*{{ߛ 稸xqO_3YtNc5I8 X`G-a'= 6Ȓ )N1+Dhʘ8+T!k` UL(#3*0YO--t HK:aQ8./"YX:27 B7o:zr ͆gƈFug'Ϋ'ъS_s2":VEru35fmL\`j;"gm>r Pl˴ ~^%'Gӝ:)dsl;V̶ͶaTQ<瞶CÅzd-}LkkfVq4-͍-L-zATZHȎiR]>B "T |9ڠvH||<%*R{UVhіVTvtSPO"Ck!%0UJTJ|3*Q_c;{l{H֤/o7?WQK2YI7NϼU.Hgڧo]ˍ02X>…xr%ZA۝莒uR4~3A()B2BoqȹЩQVwR+ۙϬ#RGWO}i-jz:} řؕh5#a?_ESesm꣰ݣ%ж O'u l9 hv?S+cG-r2q1.ڞt+h7 cFg9?Ά<`=Gnf4p:ia`K|N Id}ڲ sفͺvgSޜmHכCF-+b*';,%RBA16(pS\9BXɭiһ(O5C<&:hj6ȽBeb.ycYm@Y4) m)i)+kϦ}([o_{j1ptxSpLߵNKV݊Il\Bԣm_qJ'8֬dӟuW[;EPCWg~xV\&kf_nl##ີDeps~A%Q $Gl|q9sStOhݝn/`3 If >?^GHzb{e4Bgiŕt%{̾PoнFȿvsgMD5:: 1rRW ;]fH{,yzR_ͅR ;Ah}V阣ŘĪ: #5|q V_Ml4i=.*aUR91]Hu.fOgVDV;+hS\^S3#iSCQ:5W- zF[@6 ;e+a~Z} ]:T W Y$ O8߸Z:mJ"a ls#3>/ęo8ooYcSO۠M' @Zy#DN]) ˲ˎK/mH17--w\u^rK* >:`@4H)ޕK*h|hMGXR7F% ]eu<[ܾJ0e1 ?v<T}v~| lzXe&yZWP1spΙ)f|[<~$?@5\9)f Hbyna|o3+u3T-IJHFLC%3rq[ rR&ɨGEz鏀g[ U#>MAv} 0h70X>>̠ 8|KSj?:5J,Ų rVa@j˻o7Će mMQ~ #4êQt)V۔j+ɭFw7E[frSt.$DkQ.pҰ= w>ٗuB&vLI&gu4LxSp,_k>':Ck /9R}#MqOK. ]!ٿS9ʅ;;H?@K$A2>ZJR`"o8Spւ~(}9|1 /?4!7XY<(WJ&kt˟6ܔ {MI7XJJsnܻ94"芫21Jv*ެǛb矴ƟXW曞J1Z pbLi5aX!tUNgl@Z]`ȆAEccs i#DL9a+}GE @@W,h&FtW,p '6MУ tkZţBshb#bSdwɇ YQ d%ܞ'|RPzMoM߹Qǡ{de@nӦ@ 1YKVBx8E>bc@ ~ѩ_hKFQ*/| 1s&c 4BGaYhH8Ҥ/ qG[9S3S @P|ڋZE5YS6dBMأr"+SvE{r\/ W x:˭0>GT*cpxv0W6`\‰4E'%uizz?o)" 4p@/oqP)ֻz㓖0zf|{Tw\ǒ;>Jkzg8Bu gt ȴ;ֳzR@4 8irxBs)?,>tϋ#o2*Rn]"ȷӃF$q'|nj`;`o3k-U:eE"3LSJY@3#D`$=6պ#5e  6 ػntDl]@H~6ٷ{d;22-)걽eWη 17NnUE& 5OUUs$BBXErPoT|cpͯ9s)ާ~w.- i7Y⻅~x0;L[tJ^V4%8N|XCJ,*/ڦT?6<@fzX Tesp?X{!hls;cZνe veSW%*AlƼZ@r9t.t58fJwp1ۅk,a:F_ʐQ$TYFj1 )+ve-hL!M`V`$INGK5XR>xBr)Ƃ)ճ;0D&1$%bhgEXt["{Y,C*XanqGLB2}pH3 mI\:|{(KcY(Bui@vQɽl4SW3^4Ѝ`rkM.f'Qm: 3\M,b"uO}J҄P~y}CoH/\7R3ensڑf 8'7b}ćw/Q ?;WjzUey1~Egk[Ǥ-"oz g/4*c GBH+"Bŋ\;~?v1o;Z'&2ࠌ$!HN%fu>=mN%w>!=RJ^1էk4d}! ;`7!x|;4Y 4blu$*g| tx S"ټUmQ,!Ȍw{O="(=LYs]F\Bȑ;}i8']_`ָ}cة1@@טSPf0&&ψs7X8]" <À{tEFN3A^ _ ]tYluq4KH2]Ѱx& ^dK$ߔITѫ0!Y~QEaoHV}\_ Qɔँ<.ئ.3 gߙ)c# rAB)S)GZ: S3$Pm" ʏC͈[Dgq@Εxu\N}L+l'aTF/O;Ph  kq#/K[VuʥM5O>FgQvZ"{I/\ 'rVe#a5$0bipȘ1DCo`S6%;(u~ 5xzآ!6-NAѳ2 .*XR2yV#JjmZbʜ7HRO7m u83ɧ/Emx~&O\'?S1&9XD"I9킰0Sf^KcHNvbQij}nf X8B2:xB7H zU>یZ2:T .HwX˵j ^ f)`ѻpAo.$ M+qigq A rlOo[W=hk!Ԋ{Y 7}I +T1Avm=a @UQhϣ@ l{2J7E;X'u%eXhGY5e/UB q`ZDy8Х+SUO`d^vvB3LM޹!VVExM2LAi \jS$uMPM9* V&:)E)THtABYUJMDj#VQè]h#X7Q(ut'_6FTeWg/cVk8bmsTJ3lT)w! ?T'+4cjDW%a{{0d(:0fIe_g?j;ѬU3_Zj{ #!dV!IUL*>^-4RNeϗc+O!K0%5jQAlI`r#$-ZBCZf &_-B[I <$S*pj|CA]7z]Lq2թ2F{Kk C Cϳr/jG^t "K^>sHQp^ROʩx,2jf%hq3P3{\ :( Iɗ(E7 Vv)[M2]# \q;m%z#rpg?7M1uG1&lw>-[)%Zaw|a~ᰨ!()f;޹w{~%v;\A}&riªgsr/iRBO!JT&T)=ey)j~14V0xfJZSu8Jw=7 }bvܟބ9^85gr$ݜ%c@r J@TџM^ ?5nYXX~0५DE69 ݺ. $$yJw$` ,Dqxlma XU){ZcK/+FOsޱ5W|荕3U[%[\LtbQr~a.P:A|7<ʿD{̚,ӧ*U7AzMߐRs%}}r3! pM,-N񨮉]B+))94hZppp\pqO^WIU) Z ɏ.m!iy;ޖrǴL^o 1tIޑVHk2%&%10#TaAVaK݂2jՑFٷVVJӳۅ4;T5dUN&H|(&:Jջ_Pl*JcUp1T|N4h-<qj; Γ$ZYG!WjL[MgjS3lGoK@՝vlf[6L1lˆ U ̬ʹ =?0\"֙ SևEPʅ-OsJ<&JWHY~0AwGoNU!xmHa-k2!Pa_WET^J~6N*VՎAÔ>#(Z8b~UNr}E9e4]jDDJa%=?F)9|Ti\/pZc\Qx;JEncĀ< ],gR.AB!o"TYЉz.*+@TkޣAy*I洚sv ܁ T 2%O,%@_ǒnڦ8M +Ly ^oC(Bޫv#`k{/_'D χmNaƝXւrz(]X7c~̕@Iܵ ;ӗ ?' v)WpJ?VS] wW<gҭ&<Q|sxLxÍ݂k˄$G\ح$u!:E$)NrүaCju6֬ $',C}r?1tb 10Ā ˀOzLU$hv|"`ygmP <{Iݦju}duxZB2ؽN*<+_ĩFᣘmn>}(;C^#ko!)); l/Kf`FU&nY+72F!e_ef,hܦ8hWX]TS8ݒIՒnM>в!I1OT- 6٢J~9h.Z-1AO^XТҼ*J5ɋGz}n۠齓.͓n-3%- UxXOcHfAS٬!:Ɇso۫t p {)O {h )"?j:$ QŊg5IXK}yi~]}$6°n{Ec'#H0QZ)"ڴ4XI ) yA~nӻ9ݍգDeOZ}4זWk:|^GجU;VXӺ5QRͽ.wL@}㸱_q G=lÿK1 $2DRr>`T=H g8&|$gEnʼn^"X̓A}^Htޥ%s. x>'VqPPiCp"oa+<]i# nJ$,* mwwQ'^o(6z`ZC4h{4 #qN;TߵPFWIr&Ø+L2BX2}Ph$3?B폝ްW37{dnc:*/B IyuD[34xPd>U~hʺbxO*<H/*:St"dt=R\FbYZD>ƫM܊4APpA%7eBҚS@9maxPձӗ>Kp`b'0({߅| Sn,j֪p$ tS~.޲ L#"VARo (`|d{C챯SԼmܜjguH\6 I^Ը_Ad ZG=~zpU@*Ǭ9?8uYVE+.HtLA c[o@ʬ8-F٧ET "\YH--Un_Qt{>Nˤw}s;r#Bj+<ްAMܣ oY D6T\.iO7H>~w v:7^-gԽM-yp%&D#mn,;9mVM)򒒦YEE7Bh(ʠJ RߠݸdVp3|_SyyVnv.CujPcM8dK fg2 Nu9z(Bů#葉=Dg;WP` >CLu-mb*ǔa*䢥7t!83b y5$6DG.^3bSqRmozH#Qo|Y6 =R p/ܹk^n 3e$+>t/H%tn1w59x9\MEm :,OO+UU>/7 МuK I Ă)|087:',p7\vx@3^5PݑR.>/uHS.:VICsWu^cBZ^[9Q|ήJ4{bvG$f [5F|+^f$RYQK|!N.;n*L qBkHIՁ{\ N9 ,Һl2IOkv<[ qV0ѧ3A)`P8xoJR&N;Sp滢L~)'>ǴB"p m~/}v~-mHbĮ'Xb\%ʳ8sw?pZ8G/<:Ve*j*T/e%Box!X)k|bd%bTx;?XS{pte=(S *wS2G SF¦Ng\O]]2m~T58m:Pb)kfwi[ouz =lcwjeg4P|g&\. zKio*zIs;v\ k2e=HO 3ۛJֳ2QP3C'6AkH-XK7 TzmO%;Zgf/%~%is]1\x֒c9deDC7M:T'j*Ӳ]σ(E#{z᎑[͵ܗ9^ l#<.{&E6+f@8K?cײO ֮NYd8>ȃ,.-frWӹ Jڪl+SM%壛4wfޓZ?u3/e\ضJd.[8l2Ѽ{u 4/6gH6t,8vr cNқ AܟsNSԀɱe wzv ]FK*o֟2VǮ7PkW;6(- 1!g ee?WFn eя*5}@:=frŞm ixrj%I_n 9bsgc jYښ"q5WdKlw_E3:RÜ8m>S*JKDP6Je/,su8垂}.[18\5LF_!!m?(j6jcS)D*Cry`D>%~X۾?4~Zam)lf";$>VQHPNwqbDUNMP=lоsDcLn!]s/, e 9ʪ(`mKjʠ4v=JG{{tXi!y +$rϒԝʱgސvcm k8~5#sqi|Ho0_i<7~eVBXO !mQ liz&b^V(H`lIѦ K@\;Cv%QPfVS0hoⴲqޤ,SRUGIe. bi7m"^5+ሢ(_è& b-W ĄO᤟[ r1fn`Xa6)!s3W' Uj4f.v^_ S ͚ٮkZ"ͯ&Iv77e Lx IX^|pDOB@FAA.h5 {`.x|; Ypj8mCԍ <ۅ0z\@exG)߂:,XHm*+2MA40n̻8siDdP]Je{AYɉ_='ZTb osQo&q{ƸiDqZ#HJblmJ,k'GM. -G-VS5~;b6nfM],>kWaed5D8$` #Uc)\e7u8:s?[ ;wj 3A@͙R@Ig4j`q/s!n ~bZ9IHN׿g==s72 N ?MWSK,R\{A^3,!R0!$z94[2BNl 8zavit[9ѼpLyGWI)sEh6'EFZQﰛK?.N\ EdڱD}[EkT?+q17P p .Q)a&#gAYP~Ty00Ŗc s\anܰ{"|\C&D2E90p_¦6SRίwHC!{=wa_vmy :6|%nvWFߤ:[tRk\BÜv>ɤ*gd`؎)g*E#x GMg4ڌf=CvpSLqH&aȰ)xLgk=vi~pًyM3aږ,BHOKq\_t|cV]BP3hCDza9ΟSd;n ̈́kغ+NH~e@D МsUg +:nye @J >Q3O1F,=)i^؎U6*o=4si/'r'e- m98 w[w^o:IRq$fgʵ՜Wsp,nQ S$aJmL17Nn¸$ks}eEeAFƆ ㈖j%=hCwp|zSJ0w/(tL?Ζ:0<STmyB)woGjŋKiFK_q{rjP؁6mShF碑Kc7w%4fk:--~ 4̪䔷gt΄TX\r1dVc;DYѨ\ѹNqW{qVa '1;?Y˵cȰ GrjxKG`+"G4_2Y ϔ`Yw'Z4)b5n뢦Hoy3]O[{,O`L@K*fSKOWB#x.w&FT_$PMQAhÿ UX(l LZlPwNkKКN_,'3(La*!s)ىr]VZSg;/[E y^1i]r%AxފS_;W$Q":"h,{PT90aƖq lƼGuZͲaSk''|@eR)'7bpygJ܈h`8=,v~}xoT#Ylh.îeJyR7X얰} IMz+.@YPh7 $9I0lcQ'~*5ľXeZurIBQ` TC}M4"xJ75.p[3&zsMܽ8K` !T^J)^qa&=m:64=FEn$*;WJH(_?6B3"Dp(k࿷ffMU.VmAG% :PVM/Ɠ7w?\7v\c *f0=-^S.,R'$6я  E\|MZqؖC2j+bvbR$be€F.Ro P {_>u=J)Z؋,6֯_5sTRƚ$Q{ÎM\+ۀ&BWŃZ@vM 蟏h".Dbc y!O.EXiL tȐE2鞡, 7`RhG2Մ6#u Dj"ь艮d2:5!vY?)e/Kzѽ \Y+yܑhV"P-G'7_oǸBag쬟Eє)\=-/<=rXb j",7  *uH3X^: l""mǾ3A4Dd [9 [$,!oM%e1F00MG[ XG;tU(A4-*x,ulR3]y=erl'US#Q]0yMZ8jӨƷ200Ԭ-!7$BTpq9" 暬66=s$6O-o]9}a3K'\`a露[<Ɲ3PA;a;0= Ph*eEҟk)m2ք:QQr=~äӳtz'jby&ic[hMx 4W'4+,u攲-RgXUxsx,!I&SN|UK~OI31( $-U?V Qф;`ؒ n~4Ӈgi|& Nܖ99="ɴ }^H&51Y)V8*=`fT#鋊t?uxn~/+@LXDmVZ~a2'E' y9jI_(K݌nN(95F;@sr wSK-"iB =r>P5*TC4Z:ʨ}%%!r޶^FQ 5` 2< fxPLA\+ͭm5]r=z^kL 2^ǃ"jJ$>cIzR{Ř(@/tcS+'T'i: ;%$~,ICnO=55!LR:tmmsMch_]^Uv-V-k*ؗn ^RgC;ߙ4n$raݠu `6 5Ȍl-BW&aD6qtiak!C_1Q#.G2E/1N mP}ߩvc @f65zpG/lj>(s>L<(xo66jD詨H5+Nͧ ``{׷6XHKڊz+&*ԁ(qt$MU^~Q,&io*ud$q#HIR4K:HaS1\ 8:@,w#44aJxz'=!#XB%'n+VjqYDg'%J2 WO/oc=uv:%I3p zeª#P O܏o_@w5*RWX CwqHY1ܜ;Vׇv]~N#\u$D6q#OYe WeGEE/'OC7I )sZW : k("1A]pyo>eV%[K~6=g%BAK % aaXu=U2G`كz1T蓲)}"ڛd ow`DB_´rMNxDf sk/!Dܝ;ƑE kz76?w :aVi^B;r%*sL O`_*Vy ˪ھ6St=J^U℆CJ(WxwY2QK<ىt9JՃUqV bm^t7^G=v"`ߗ6 Brڛꦱ#K 06DX?Xgz@ fZEWkDj?=tF9D%C"="QyR o[B(eЬ KPQvkZ5X^+G3{H!+7nHZKEV!ɒX;f?. vh'|!]nľS\"Ӂ5tJ1@Tef~BxEf1b rclD; PP ݆ 3U9Zk=ZzsMEGo#`a;jʷ$ JC;i,xnXEH#rY滍CpڞU UwCMj l/&]ThY/%]`Ag!F搫JO^q%ÊS9z*vm\44C .4|q]IcHdoVbWy_pIp9΍~zeϠjfԭFMeL*nQ诅} rRE[ ʓ b+'Qշ\`sM.RÁ DaG{HCdt;q(tGvK'o3 *M\;:䫰qo2(Gb(- ;8bkujF:]"|Qq {/ ?getz4&.LPn;2\u>ΉWsQ3AgXYFNz(X{~o<..S `2јkgބ-ǩi3!׳MTxjR!ߤ#1=BTArhbh;D_Gw+^ƤVߩ Uͱɶ5F([,k Mq=?AcȽ5Դ7lٕ%\p"Dpolw/AUyL)ޣKFӽTy%ًn?RHkYH~X3ܑ {,ìc 1zPB.<=[Ғz~lhCd*(HS rmo懒Ո<ҡgV9vzojܶ KLIښr;$Dp7 H׷0.BHc=k'E@M%ԕ"}i#;%I%#+ʿƄ AMC>lvYqX[ w 'r0d*`-%#kcɂy%}<Hv(O5_Jdp@Cmlw$^zKnHcZZ*%+~4UC66۷eh-T2s|r"h81 ˏsa(KY$-ä R5e=BڝSʉ&sż9cq6!l,ПwhPvqEEoo~*߂Z(ZgvG4h!>FC0%邱2+zg< Ԁƍ|V?恒3QV} ŸK/I('+,sYUSq c1{$ P)C]bI2b1mk]s/;DuiډA>7 %*hO}U% 1s@gagriXx?^p.)2e\zί~'v:F=[ ݚﱴU ǵ|n_]7=4Fn6c`)xg~CPt]-=҅6Gt?.Hu䝆"RGK{9W: dw#0ژ&rRy8M'fYU&w)RH2eԛRx*8JS"fs[hgA9$ϷQcހ 2*SVa-|ib)N?׺~%#Rr1]]qŸ) ҜuZĖO"`?<6"c` }sq c[£}J)?] _0'ea=|}}N!oՕЀp,zzxA, :c|R)>vc&flpg.kKX5mrp"CX'NtҮ8^Q i*Fn^<^ ;.dðjTӯ@I4s9J%Y9,JNYMe,[~ |[kSTsd$=% BE; Pv%m)_Dz%GrcO(H2Mkw BEVc=BW"Bfd 3==✛`uB{I ]6w٨hL23-j1!4q @YbHwCs`fSu J(\a2SlRiڋa ,E%JCDZsV1^?O ~)aHk  mԖ̱>cmweFm t|* 8͉,f%+/^Fޟ|I=Z'>F^ b;Q&Q]Y> C(^wBW؜P>/UsS]%JՅxfI ++_5n K鋠'R\F, UvM V/8kkIT֋syu̶О <Dy DTf| _x53'ƭej@'/Tbs¤]sEݧH%U@Qll]svw j`NĽZ^iUK%oTȣzW % *-tď O[4]sغeRZ% +h1  ,b>R*s\}Dp @alu|I|L$ [[m$C%A%6 J%iRtЄOqLj?>6iGOo}`8F}ƈ)Q A\VE6:D{$)t^bc:Owy嶝ZBe X!] :a1?e?zB@xt)KvDgv ˯/Ǻ(͠x2a!74mrcjjwpqZ$s^?^S9 ֏;vWt+ⷧfr`' ۘva#]0tg;1#kPӁ-HKc/S^TDuD V'd;=6f8g6C@ 䦏>ў `u6h{lD n[[>*4uGȦ~dÎ }A㊌0}ofF!Z;}[I˽%ݸ)NBL}~>{49 pEN|L}+Gqf?AIt#+wpxbXij}zV*A+%if#zQlMt1XM=Mo/M<2w-}J8]ޱJ@ 4S#79:27rw4M)w[Gj5'܉֓d0؟rzwӊN|YWPv AA:$@}p>;;x閅 WL50bx/2L&'"'\VPV*hL2ʻ﯐ d $^E<ڌqrEC~%c7NV*s:oprHJk([M,D%Ne,?Z}}$"Q"b"l4I76##Q_mEJc]?`(H5-xЊiaU&ξzL4Xt\!cG2 qaHV*q[/=. w %ev8ҿ+2 ؚҚ14hDRUi[ϼ0bKo[amX;x* &wdʨ 4+Uw(Ե\MKυ#%h;&@'КL  jOĶ JYUXWax@rO-姺8d M8.\^Wߒ(I`;P~p/3S&{& &7:'`OajgU:DHoFhj`*>֌%U2wlogt!?,~P "X/̸ܙWݘf^=ؼ,MѬE"[mm??eEY=f~? ĝ,% m 8>C+Nur6ms_K}iD8_ɽw4rH\g[⧍0TٴATh+D^nFbpJ|sdW^:kOeFnd;\Xd r;#:$Vڕ6z7$xMp;F%2;UDiQLց0'd ^ys;@{E179OOU'Pes/S׌Gu,zC|Dg &!5Pܳ}oX#ΉZ tL@ly1`%!dM{Lӆ[Pk[ZYH$X|0{K#{)SaiQ@[؋ěʾ:y s J$UIE %\F m ʹX+v1hzZ@crhG;| Ɗi8:b⑘6v4F+CmC؂Y,ls~ODS!;Ӳv}ʻsa]9kv% /d ?mqSLBjtJгpa-MOͶJsm yA}~ rv2@Cɺ)N7ȇ 4Mz0`b .~ Hu&2zMpk)Ix,dFSYxɽM+T~wf%!+Ky`Oy4XGьZ/nHrPPyki~#VŶa3 BoiqJKqUk?ކB eV^R` U=FV8rRCǘU㡦Ԧrz1l?wr!rCxW么\bNAYۄVⲤt 43c7KȭL`COb3*X߄3qTrxZcJ?dmYlo|KJ]Bz%mr q=r bx݀+#o ,*R6ehtCݲZwI@ `aG[,,zmtuON(fS3ZyK+ #h uLe0v( \KF-SmZr>ųu5o=LLןdc˕xW^'#ge׉S fy^޳u~t҇yv #jp2݂JG2j+sݹT; . k5n8qe mR ʯ,RCԷss9u’I%M=(Zw,~@}e-/ziڀ"BaRcײirF3%p1lJ7ɄP܇g̠ ȄHL!AEFeXV=1{oS+oh hIxoH|rj];JrW 8BY 76͘EٔڬʶʒN5s:θO@ DK36@9KjڐCiNFRFJ|gE"$<>%?;6SwaS$x:dgb,%2߄3^t#2h}nopn,~$e ay4Dv:Eck"&% Y](dIVķX$ϡv#ZjL*áj7Pp: Jd ը5eCskc`2wwoF":F#ӻ=AyЇ{h=6uݜ`5Am@͞M|f!u͐sq- ׼WO}Sb3]^ғ*kGgGٜZ #6m7%5k$T,. ~~ǁ#fxc.o3'Uoocس8Ԙff*k\mYezṼzJKւ)i:b&.ilV;ñJ`9Yp pX"bsqup'nogPx`^5=ͭRLZc❮`i/=e(17"n߿0L VwL, 'ك|mx;? ?_#2+~򛉽4qd.OG0sʶ+<]ok*&cj%y]Z&Sj?lUv#Ξ0lIXY ѻ1%Zm$&ذby!f q$ LJsiJ*:|3ByPG="רD-QKy4$*HB6^k8xY(TSߨi[ޫ'f7.$Lb/@`1hgTGgE f.֭TGp t [^+ 21.R8_/_{lU DU17n.MCL+eQxRN_ļ:Hfj AGNkgB-4 #js.DRd8Inܾ4}h5{,$"F?_*Mu 8ږшҶ mSq:x3בtnmoy㸜 o]CZk؅Dl*rPs.)D>3, Z4,zZNH^'& VŨrA"E9؉R~fhAlZ=ZHF/M ¤?p-mD :L N[ZFj9tFOz12ahqw;\gfgse' oI.=L -$C+Ioda֐ durH7a2" ŨE,@L CLi\26m>o8~z*I2Ud/m7a0Oo:ؾk +JYU Ge'y#PکՌU4jĉjq*`ݝK.g!)ۨRZL5aPD]Vr춐Õ:}TWN+LTv$Q } i&|$Ig2]%nBhm`=cM?Z #۔-%r 2 2UT jRxY47$^Y"Y']s~X:&ݞ -u0ɬt޻MJ_dJH~<=misȣd` '|_(۾03*n#m]l/Ź#)r?XjlEl-nv1RXNG<;` B 1n21Bw`b3:5m?F]>#>\߯Q* Ǻy2!Zƣ"9"F6jW&Z7|~I?@q#8N1ɤ5 oxɋV7]QJ%]/uM`eRZ>3jRWrVy 45dgTfw?጗5<1G"Ō'x62D#Cc)_K=cQoNzti0}YDX;oF~fڜg~dجrЧg@[s+n!5bNJA -^J:1hЎA"8*8Ձ0٫`bfq?3ρ1`4A akP$ !  5EsH([.{oWƝ9s:*vDcNٺOB{q& 2XJZwG!"LIG(|(Qn>pnm|}VIO4WFn}7;!4iIN F(2`xn߹/`m.$Jot]cT;$]Eqj?)?Dziv/))M]/$T)=#+&XD i@+JrDz#;FU H>W{xjֻ`_C(XC] ֦3?~#O?%t<@2^wgј.6U bf٬sG.M#dm2<괠2crq})w7jdq5%`Q6;)_4LĦT;tzQH Y*EN2cb'k0at:H;!|ka1!AIIy=N$NN$%pw.0c.1 #Ϗ\ /s0˟ֹN:M<хmcTߧ[ l >E {fᦙ{e 3myJ5ouiMCqPZ%;P3p'j QBY>݉#:=[:r_gp z>PoȔ\,2ϓ sWj~Bg\!dwl]T3zt㽽ƃ2@> Hz`үM-H42?G JϽZtA3(J>fI.ZP~A:pp9rU50|X_hXRQ'O5BDvqm~&wyY6'*n.qqwW0lKj'2dfIJo*'9ZbL)%{ߟYȔTHot9GiR|>輱JVґ]xFŚ=n0ğowI:*-wYKJ<6 BpyWtlgUЙ-oV4OK2x5<Zavt5џm׬)"ԿabBU\k$%1-h%{r8ӹ1f_K GگE5*׺2,bQ9|Wԣ Z {2+ .]a)lZX}Agv}Q }Z:1f w;Q%A8PVq(ɍq*)e&+-v(gZQ@f-ʲ,1ts3X:#7 ;T6D}ES!BG^ma w\/$1nYIYZ%q{ [:^D&ZƵ9EE ;xj4Sm$O/nj@:sM6|_\>ݶ=uGH3m*)(j\W7<)x_ G?4  IKfT}_C*zo/uӼ͇CSh˳k.p2i`VZh%\@C.uhР4M~l :sSntAR[:. r-,.((sD7dh뵯@5^ҳX&=`Ê'5Ǩ[ʓ\̈́\P2\"M7X}Z6f^ o2#@2M 1Օ&~ɣ5ɠx$Np.N@X,uOt|/&Fl: 3(; ̱^XaP;A.G_4ڭdȴ'e!myX3!H+:D(5(!ѶNEBu)R:bz|ʡo fxgo#6^7gDv컣pXV@e {d7S;IE+RM׵'EJX8^w: 'X)@![3:!(lL6oCr wO4ut[lQC<@`ÿZaYwy@6A;y"Rˀ,fݔKD<%f:EVk5ԓ:(Аdt刨I?=6[@Y?zJJ\m? KcdI s170Z&P_ɄnBx&$ !48rMFy{oKpYrN.Oǂ$l>mH62#f+ aG B1lPšf*ډIȢtfp| Na˞HI~>?C\`@[sKg?&]3S'brfPsڙ8+ q"nV ]{5=l_dwn0f|H?w-,5+/"BWeg?\͉T`Wr!=QT| hJOUJ\A.^Գ-qM[HG@e C73 ]a̦i:}n/ŕ%lE?Z; Cⶖ\^P[jƙM38GV"Z^~|/z'$t @f)SuJ\_ ?lـ@Xdz5r#5aSXNs` 1XΏ*?Ǧcfp3x h> >chdBky Ѫ*'ȱO|W,Ucd͗/s)\~r`mT}߻Vk[@9BfcH^"gBQ$Xm(KiK)Tal IG!DYL]r d()kS8p%V'&Ic#_y9 Kj#Օ,_ TyÓDlO*Vb!cLdj˔q!HpB#}3I17̗̯d! q .vR0yCW![taex۞B}h2L)sٖ1;ʤŕ%œjs` 3G:1]T[̛/׶bo=MY;u\&N-HW裓 q%qD~|8k6Ws`|ArViv@aIX!ث>2?"Ulp(a:P unSy/gkQx"\d`߰)$ \W#rsKY 1dv eS!0WʓNC]ml7)5Bg\ڔuw[9UH͓+ze1,`濚~K`~$MWl|{Gu O .??ɸ/ <X7_/jwTf?I iL[M3_JT)pY肯]A+>f];rg7VH(!z=pr1}5Ү o EfMJEzFy@7>z+G2kQxIf6:l#:@BxADMc8oRu\ĪhMl.!Wqg`':?PUtGWZI] ULf UaPn_jtK2oEV^K$"NIn fkAF_)9m%" 52=u; ݜBxv/wF= )4H([6?˼O||o(R0!{υK1b]1T[lUFl}8s|zi3p^(} Kֈ(>YB%3;d2xn[>U+tYcCt_ G˺4=O\ *jSɂum); }|}S4WI>k|2cAgL;%Vۥ }[MPThZ8IB_^O.,8tNa&,8ѯe JER|}P8/ 7 Yo@\;{ࢰQynֿ*"U{)g1`)eDZs]n+ EmHqp.{~B5Dz9E 9&&[ZAi[`՘@o 2DcfHgVعؼh2|8ORtyϭψX +/o.ɀ؉&ܧxMp muok;¨V8}R).v8ek3Yd.8SlcU;8WB ͖fBDlo.t,n{r t+&(ad u;?*S([ g:Kͬi2嚆b %=#2TͫcB7jRAt=0v [~NJhp 3&}{q+ smE9SE2A2$'LFڋ}ӎ AcO_Fߔ4-4LS@l?F@v!m f,)+R kmMưd#8F:$(@ d7䲎(>k4 MgEBDHgsrZˉQ ?*#ɑ鳘OIjaAwߢwBREn qp+'Ո-Lf]Q<@ׄڤn. SGç2b_'u}3\h)\e=#FD/!;/EFjܯCi'uFSm*3cGœ u}{U%M9}vhE>~o)Y֬L%`s32DۤϹ8}bfj2|` BCrt8ҧ/M`~Jp@?N#4||7s~us~}e12%69@j/LGR븃?3haֱ5%p0fbRIvxfz}W:?FW 5''W 'I<**>d^OFAIXθ8{F_ew|G|/ܟFd@بk"'d %Zg_cPesZ rae¯?=9G3E*¡N)qWĥsA(+غ\O%V uoà9pTn?r/$1Ea3MQn~" ~K~Aj;waqQjit<~.l\ytu G$[$ etF3d8̾${9#:+|yѤb?j}<@C!|[ix@Vl;s#;* c_YV s(1p 3aYO] H:cFs$.kXFt/鋧E3n5O3{É^0Ց ۜƛ~7lRmt(H!G0|E#lO(Ⱥs W?xo3 AǼ8g9!uT'QCUB ? %3A"PHߥ41pj WE\u Բ2Iް q8-Ҵkv]~!yb\ȦDL2HOw&uݱp[/dGoģ A#fiH@yyZ;`Z+ٶ7>" قڿϩj(UƵ-YPH%xu`j*wMs|Bz+fg> #@/?D4 MŘ2hT1J^:>mŗw%\{i`oǐF놹!a5=soʇ~v\jOOSDdjإ,hI\CNPDzj[;aȵO@c#s|[T=6=2\(tx]G4 bPCwY:‚ ml˛{uWh^ۦx2?,(.2ҬտVЍZg?Y|s5'u$NѪL(o0)lA_>{'mРEHx%0mhuL\`#%:RܚMuĎ:qU\g c]ґ*9W0( AG9?X<ٺ#ao^p(w 3)ik`mu jbT,s;vcA5v-z)Eهo7 ̂Ġ1c\Xyitlz":ӃF\sh5"f:;͇ skeeW_ Uqv-,0H ٷ[yU*.>>KG0?pa>,qs R7 ߦ!6^xqy\%EX=ڜ<;/~~1ӯ/!8ӑ٫ȣyb>&;'Q~wՍ$$$y_ۛuZhnDӶ4\uw# >7hQG}bZu Cu#Vq=\8.;%rﳀF3hI@J:Daq]4*~knbz j_1zx[foc*&n E:#E`C\[X;6nX!yGS;QyLl0~dcvY/vcWlp@0Ew p縲qi |[# wSzLT2o40>ݧzA`m&}ըld=,D|#z{k%&@ NJml5B8pM0>iT.򎞢ԣ69}qNLS%ӸWB_Fy{|nrQVz['lQ>0ڃ+]6{DM`^..̘VD1:حN-x-ϠiH/q:? Lp !=tq&kz`()-IA|HLy2c9sx㭑0s1  J+) *2:ey:iO݁$,0[Rԏ3o|+е?]" ׀{A<' ޱT|iɖXA:Mג&6⼩Q0yK7V-ꗿfQ^+jW3}ٌ n|eW}$ [,[c7?閔bC!-GY"K}H 0ʛRQK*ql,4& X``7VJpX\PL(Y8 WQ %E8[=@@D{}/1g9),}(1'N$5L,Ӿ4-< d':fqr[;*u15AS3Uԡb'bR[HB<\̅ N=m,qJ0^JS[ } ҡ$jP2B nˠX5Sx{w}`KAqH ^k.hp7l *d'"&HDeU{xioHKV]Z7)GQoF[{$jgqV)C\n@ŷT.5EW^զ5v$f翱8"^wǂU$K94aP <2k8 2.ѝҶpS"@hi4i#e"},o9&f!dN n˲ ,Pάpuw~k\Q9=W̺ݙ41Ŧəvh[ZLN6 Y,JMq kMҜNC@Š/5tzRYʠv[jFBCk#I% n"|o/f: b}(ˑc_RO`W_6Hk;0ɋto E 1'P x$қ_BA9VlٽB,|*J*kHYxt`¸@:! BYk~qem+Gpx]ח L͒6̬vW=43ܞrh}֨E3u(cU;*6ʝis70ť#:LZ^0YDt?8!X+ig?EcGAi&EAyF:/~[RBK1m ޓd8 gQq,Dv2jĻ_~O4fϽ!ݰ+&d$Q1i$k,12D;Tp>i4֕)rpMx2ISL#G='1tƩ̀ !TDo :b\68f^8"&phZʔe +|󼡋0Oa_3)z?_ nSaBs/xV-)9iJ:Ti?hf,?,V?]1}1Vՠ|r6'T#+dpD4a}7g.dP܍ru}'[h .ϢE^CKXk[0 ).CBf mc=S.榭I_Q>)ooRi/jSI?P$5w̓[KZCN?augޞ"#`'Uj*0!~gI[X9DA__W+ai:(X |Pyx9<ՠ/hRYy4tu xԲM㮤$l)y ('u9Ѓ}q~t2C,FejKF!$gwA:n9(8nP1u s|ˬ,X\ow_.N ,.!Zځ82z+sfX7bBCVVxgq-D S dד+ME%WeV-uG@錹moe뷝 "@i2FqvTeҎn=VZ,P$'K3Rw/ Ӑ0H!1ka5O\{\ c'(MyNrUlhѯAebP* J읠ł\Ͽ񅟋}thʅW.#u:1{9@z0-\zE G'݀"e`\2`ɔ%Š x˨~0wb:]>5K05?\=Uj."3Lq{ǡ?vWhL(셈vKʁF#klF& V uK*}?\ᒖڢ#ytcfUP|WRp6nNZ%rLV00e|T-/ǟ)iIJT~[wm&dQX/+VyQCO֓oHdZqO,CXJ'½a):X s36} ηA^^kmЦ)I,c4izUT+#ӣp )[۸[?M\}MSWi\`nLζ1 \YR۴##?Pb{ԿsX(sGIMW#? { =mG̞J`qM`'(*8vKۚKzNUW ٛ0E`e1>]*g :'/S\("BeǞ2R2%1&8[G v /q>%n*QF@rd(Rh٤rr4YN̙ۙ{>ET{Sv9?"9ShfG;}K(9*aW$JL~8N8r6xBƁ~kgc]sD/KJ:r7 8VzYrJ:挲\t'?qe]`2;> =+.}L{->"no=Dʥ 4[ 5_=2 +a 9dmJ [`0|+[ e8E VEBlcӵI1/t5PsX$8e| ۆ ,Q!'7]+ߵbFE*9' 0T|Bl39~Je9!WF9ۋ.dp{Idv &Gp7;dTW.bBJ^)}ХOh-0DBsL'$#%<.DXbQ,{ P?mwQmÀ;-:y& nٞD+ubrㄅހδ3W@0Eb,ahlMJ}O{Q j qDEH =^4~@c\,^ɝ1@j#JtBuZ^7%b$H6q ڳ_S11lD[Q2<Ҥuѩ]͵&:1Z2e3Z '-ZR|XC,Ow=+>yct:$ jbmo BxODCVCծwegN1fjQ>@#+f ~gjkrkbPhƐr ɕFׄr~yq썃qes8֋|S|WRmB D\FXG{Vλ=/Ә:{S :.|W~.O7&ۣ4tkφ 5 Ԋ~HԿï 80Y@)n%G*t3ا~J]艰(fN-V܅;O"]’3Ex=-Gof8hgb%IwlTU{qmXu;ߜky&% #iՓ\. )ol8RvP(@Z*s'lAJzwд!V7둭.9u#i2=ܽvF<ƣ4f:9*`k тoTAH5|A{TL(;4m0lYˍЇ!SO?)N r|Izwۻ}Ѱ[VCɺnď)~^7}{K~`຃_of rzCp q \O$U苿@H77Sao~6 ୲{HNop}s!v.c֩wY+PZ*IF%#hZ-Q p n ]ѭyT^`sKh4cg0ňP."OGRYArcmXYG6 حo.'ߨK-ϊ룤kva$:.\Z-g{ƽD'43{a@8PiN/;m0GG +cD4)X7UJ(kvެ~C8OF })Ja EU.EEfsVG_Ÿ ~DK3[k}6׭j Ŀi 0H}Z)H: .B#JZzYn ^Z!9Ll[1O7˰3yӵQ`aXwȻ~^Lł5bex{P0P58"+%;OEƒ}$HbDh|Kxu r*wMv<;-{Z1oZAT)J_"ͬטym?^! R%yA;b)=Z  V[/q t)L$]uF# =J)-"CS` AD@^|),䚣|n1!BW͌E|yƒq-m%8 YK" Dtw8X^'Hn\Ʃ.ʧdy:GF+,eT9!:ntOAͤed(g짐V%.H}!"U“nw\rnm84_n&{%ՈVZzゎ`쿟Z , #§]~ןm9752[3aiw)[Y SU ׿aVV-y?VCݤF&3j>E- L4|oN,tjZ.A틏M%,?U6zztQW%ouv! PvC֨CAPJʌлH݂N|@ >V,/4!fV_,>5 '!2h Pq |"{9j{G1<2LߡL)+̊uq؁Lt9lvބBKa>l uӊ mh쯌G|БQpN ~W0q-E&g;] }JL&Uuh{#jKf^33wxUA"=٩2O鎂>.W CP7t @#WL]gn3\ 9=5˥~SҀXR)f >L{⶧\wt-wUA#%B)+oWf w/c[Zc(񉸶3+Uhړeo{/WEƼ69i3AH֜׫Љ7'qPy?H8MoFhH\!5?֥҆|;3Q  :42H|pW/Q \nrJI/5^ [Mw6=FG$td?\sZxe63/ @_@]3'x#]enV%/fW(ď \Kcx_;eb#K0{Ԉ҄cWR*T[EdCyݣh/NYTc\{V5L 50u-._Rbޖ/[k?^/KFa1At4H:mi|{vAyN'M'A jΨrq {T6#} bY7.~';0a*-̧+V29Q_Y=WKę }|,; ,8E vSȌ|N<#Jy !Q)& LTh͋x aC.*jp->MGWmm>y`kҕQf5t eE\ѢLDԂ8C8Z8=y]^''Fp1JoG‡'*u`嫔=P](>`L?A+.u};E;1 iuO`)Q$c~ڽMq78,9sʵŌ^MsDc."E?#>9W^2Y w3A\GF~ޝ: fnMs|]~oY0h%Rz35x+Ne)T]nd 3&Z ue5Vئ}hv2Eqd_^8-mf p5 %gJ9dz+ǙX½NjIw 짗7nH`.fЯQMyT+ʡJ5&dE=&^\-;t1'J qy/6k/B|$%d2BF)3mS<8tT`OKL.vf>!@4Og1#ng;}8{qBRi4:&оӕ$LWƅ;ϝi:P[_ "j*J ]=qa-[)Mwmiۋ׏tÍ!\j[ǯRUD Ld<܋ҿ8ۘQ }C.i6uJ h?.!vʛ׎^l5ʦ:pƛ\V!W+pxMkHLw&cOhd (6fEeЪ@v|VIOmݧe_}2Z8aq ܇oCJgz%h|SPع} rG:dP_ymVRɃNת<"pݶF,"ǡjP d*"A6}$鵑~zgӚ{3)ΕM Kvc)Q]""oۼMPt5oub>F qT +. e/s;9_.VMDZE;iP1Ǔf60::IąΖ!1Q?ZN%31=*B+5tCT^Z[%S+Dg٣:X_m>1$Yj/\Աz8HRb_ko@;/ Z(nŏT::ҡP%A9 ;{4NMJQ!5jff-2N32d?3[ĠECqbd8na])&ɟRUP<vˍ wmL~-*9fddg1cT#|Or0=UDUl֩>X6 G!`X^|}\K*G JmPgʳ+bok] .rPI6h{] %l⣤?HEr-&j3sBo5т>@7#bA y qC!KhR^S@i<8Tkbf !>g2jڧ?isjj7pC]:;@T`+ԱWf..F[ b H' MɆ9&aZݙs5>ps$'IeG6wA\(,$ ]NY0`$<$։y`ԍm>]s8#QPAmJ: D(T;Hd4/Bf}T..*)>xps/ ӂMX&n>sPɅU7h,idWiU!q*6؞˜D}Ǯ7X _崖0aˋb-ɚL{]OW2BHK!꿕(*t9}dK ͋&}[s] C=Sr8Xo#Fn*Cr$ɧ+&(^|^ߋW%C*wD9ͭb_w<'>DY OoUiIZWs@cuLt8xSU'vJK޿ۉ,Nn|`G eֱ\`Bg]4(V0AiOv56' -rʆ3Czjwu0 `*,vo#TRAv=<?W[R?MS|(8Qbߥ Un"<<Mk~o GYݪwL_QRZ:~bW`dZPM>uR {+c1 !@oIU)GOljuK0-kzZu ]lM,wfe.ߥr^xUh0Rx5ۖ$VX wFRO.[kG&(kZ^bt:쐳tpxj JBtPI=47-ŢNbCEq΂\ ʟ({_=W%fUcW] ftZ_j95Z#ee_H5Zφ!z|O O}؃ꖓn86d%HG2#9mҽԮ;HL՟B$ߡAzv-"4e!:C{Is8Mĺ0 Mq|0̱'y^%TgTGp9V ~J/M`x уXV$'JRkYEcV7QJ}e @:k`A-n$DJYve-m^w =fz{i&|EurG":hk=D(iM/8]^SÅ~wH i_eQсݑHUzGMPpz2_H0-J'CDﳛY7E e8Ҋ,5$t ZSCލ(0恢or*N_7чnq w[CP`[>Gٿ\))Cu݋8MI`RDxoޙ&3/kP+=ݍ>۴.IWꬠ^rDk!FX٘ʙTZj #z"޾,rF гD>ɧa @6$5` XG*!Ѷa }c'vy!7<#l(IIdVHW'H-E eGm:|ڨ'0*&<_n3\tcS v7 V0JvH2`ş:^d!lfhMn֏E~lۄ$cpI}h2ɷl/=~#π lj7[9θxk)yK8>0擖}?#4dP]=_n5WrT>Sc9KM%$h &5T?2l'<ȫpmL OAf`{kJҦ,D{t)~H8b1wT6hܪ/ACE%RY$F,[2~Zae|4ty3`=uߡ魧t1|3b|xR? B]T N'=Qe(J>UAj.x'jDvHcc}uXvɼT*NG%OdH3חˎ.5 Lp4}14cr,aeKG?wX < Ce1\dFG18V'Oh؊CG1xX8N M,8RR$ǕDs &O0ւb&ؔw%*n,G $;C>RVt5f`t]5+cƖŒ symj:'ӼN׿R@ʩC_،}P?fK9Y zڿwp=]2T!.-PO{t&ՍPڌ2R(6Ï[_^YWUWb_o//q w8JW-3q>ZiD{< RJ!Psg nQYHS!N˅M$TB~GK9TU|,ִ>V%C"KW( ܻ;1Si `${RsM&#E%WUsar1AV3gkfo`k׎cmI) D-yr袧LhҔzyo ;FҸy8^s!oò KEeHh۴)N[W`~awn)Kl#so)dw(~q.J6;DF>0π'н($*RBV}-hD+|3ۄsrYa5DUYaʳ&IFnf .Q1wI|oCpy齾1!-:h=ݫދaCȪEU _ n@?TGJT'g̽  ^͊.JOItǀkȏweMLli>qܔQ28dyLN,;ƛF6 KoX짺Unk̸RlP)hT uo4.-YFUʧQ8jwmHxUghp.]#$Uh*&_=i]ˎ{n](o=χ̼ ҕ|}ɶTzt,4:2q6h]㲊 u#kF=|㔃["3"v1`QӎGщg1j*G`TnKX)Y`If+'-@eP$cԕqCq YOvw;&n]+D}5 @.oh辠/?8je坝#%fѻs.ԏՖ5c (&̺82jB_K34w\'9_ll$!˴F ->"|׌U;ΏiG1+ׅ3Jڎ8#IxCf!wZ[O]WlČ1MlX)ԭ.8ʝČ2ݵ~Hw!!hȖ 7++R:<|Kv2项_&SBi :_j[wM'BLOC^Ah"t]TbԁXW'K}A<æ[֤x +*!|@Л2P E#ΪKU *m.S|iZ@7S0DVI\xױ3V8t !r`.5\|Q: ecsQT>>Pt1i5wR_rA0~3kj8 %1 "n9Gkec"I>XIKs U&)}]j(+!hc]v%xc;pv(U9s90=^VKJ? A2]=qcr'LiqvzJ!CJ&i<^[)>9Q$j2zdy=g4)*e-8y.Nv^w-yeKOׁC5Rei%ir*wާ|ߍ!Dtv< j#*h gg3ܗ6Ooq6TW(K2Wfjo>wG䛶#"Bf)ﵥm@eړHb|: Sb*aC˕筡^a<<m^+FK} -ǖ)MKIt!QE=F}?Z{ՇKU&-t5?  #1ƭ|7̜;%QdI\)KwԳhKs hrvg*s7! z5HO>͛eq6\@ٍd $[ Jg1r!Fa`?+~]^ƻ9)Y*B5kJU!}ezI:m1=-'3ͥ.YX.Ue?/-*  Rݡ^;=ۏ \ cK:(w+TW5EI3K00^kvo\y>5p? )/_4yOPW_ ,cNUD/3J7H- 7W.*f볉jgy"kyBݪ &+K~h.̚\@Kh(UyI$b:|c1t-_@8:_r1^$g|K7Z8x^E_Z"N? "qR1PaSFlvp!C#,-CcıuBwYOe*Lc[DϵNNz+zN}%Iz\M2 X׊NrOÐ2TzTl OXІն9k< 8OE6Mz[?:$o376 >2>O?_=9hZ1.[Oi?:XAc. ak1ur-:* ݣl 0^ Nnpޔ\ߌHǾ%"(EOmߐ R:'͟f27T {pH@"j<{ҵͫ 2jF)RGA ؓxտ+E<xhIyYG^[,n!bh2>soOȫa)o$i3u.5_~0Ñ9ɓi2Sz>{WhSnT\ElV?xkuӴ  i^/8n #afy7W"ic KnFE0PǧL%Y>r7y'iĽA$jI @F(s_g'翜/ԉ`A&ޗpJ±yN ݸ y][`-RY\[#ta}|B{B"PwΝ?=䍬U%߼1Ivɜ'4UБEGQ kR&(|jT u|MۛGڥ}2[M¦J?ly^3'5^>KX7A^6t OޢW#R^rY3.or&cA(y Í^b걹RR] 505% *=Tk?uL]EVcbf_πj*8PGYnH)[45 :Fs/2g&JhzqkѪ #kpd|0F^%Ps~06+ q颠Z8B/7vSuBˆ~H[L 76))pZ h*>Qc 7(SQϑj%Xd]]R~ڥ$)`9~gSP*e iz򟑑}華r8Ia<Thp(ɢ* ; 䡽$jGuf;.yfH ?RɁ=9uضm3j[&ZH%;ͳ8.&5%1@ ˣ;0&bJ6 )]pW+0#cJjq\$y^ēChv@lH?rIi4]RG<+79U܉^q3D[w'(n{CpR#)<{$tBh`v3Kh𢤏T0cMŀ#0uXh@.In0tk!#o)H29烑Vc,y8 f1 GHШܽІ8"JV }sҹ&IznBVr׉Ǩ}s" l2Cc^֙#ԨR={MP}O a4^:433~⡊3HI$$RP )qP}yl^ҍCO`M} ]곾c&h8Bz#nߒwb v/g4zo-*ge O>5+>:@ɭK80 fT~Nh"3a }Nۮ 4i**p=eJ t"k*'(JKV*2S3<6uCw?!-cWeK)N?\65xmhҿ@fzVk~Ύ?SJBrg֡z?%Q+x!w`t[ҷjqI ʡ_򠼍 cK,@w#*d9V仗~wdQouoacl&9F7*PCHwYD:Ō Lh@AF=H 'H(_k$_ύ1bxG!gichH#vm{s+ZAJ6e^Pܡq1A4P`[ro=zͭMr{LG,U{ ,gb6~µ=KJE?If@~1趪L1weD*pgo1m%ҽIqU: :Gt)jٰQ''_t-.3wYFZCK#0|vv!J?aw&G]{õvR̠u/OS2QpH) 逃MW = 7*vEz, Kˁ<f:\@ܡC\H FŗYjD ɞܠT$aEv/BRg_u4mӪ9DvCdߡQ&>!| fD5]8K1E)t>fqaC\쮞f"Y!^r_4IFmϲo_N"܆Ћ%M+c["LA]88BuWxB˟*{W-$VF+,j7)+ayƉI5XFN40;#J/C͝/?I6c(\_ ?cC'jL6 'ctWrWm¿I$KƗǑtNi3⛶L)H=4sԃxlnnDͳFT-y\ >Rg{_I @KsUm0_POo$ ܤ_\SyGi hEv V-_NDiض1 #fUjҏ>K@f¤WQfjhvKgѮ@i!7<ꆐUe"/M LHG~hVK*Dg 0{h(5Mc })٦5B/٣XR 1܀ӵ~T Ȱߨ[6)J=ۋ|ِDS̡EqtW)Wlkct҅mVuxyv3:*'\N4פ*wJ*B`fs ¤$\ґjP"QIg5nZ,Bg7\I&sj\si8v ʻ48AOD'"?ߡ{|i\IFĦȧc(SN NJ3bxse0xU6}+QZ ۄrDDxC; '6&ڕ޶$FJI曰ꬭ;B SKHb˓<1SuR#g ec-"-ǚsNM ݟ+U϶vZUU1;{ Cc\m ro1_>ZQ)[:؄i|g< NO8y0eGR+8@3㕿 l,oX^VF-5'bI=@܍D)Rsѷ_h | =bI-cǀjgm~d/G;Mp!K52&hʲp#9Qہ(S^lɤ.dȜ!w!P9,d:w|hEƶ;DT;} bpLdWsIf>Z Zw }"=xšg 0QnxKIژ'FDxD4w--LŞ .7Ь .cj~9hthYUqbS~2yt" Z5+kRq.󊖖cZ^ǘtUxRuYN^2XE@^ YKۗeӶ8ٔ;xb0,@8sRl)VRPR{C+Ö0)Y@Y79$}ΰ ]!z}myUnR0 Tep%, ]IaWBjMbiA+xC* }k:!bMu(zP,w/(.LrOHe:G$1^cOVNϢe|U85wK="bt~7}ݪ2nLnkz /!A0!KA -݌fex̛x:F"}K><5k$/DT/2JUŶdwf؏v$gG%.pὛqZ@5e_,wN)f6&3gsᏂ^P$r6ֲC(a7 ]DLBVy*wdhEmZS5NJpgK@򼤔Uă0[F۬5&!bv 4QyHy:5Sq[q3rDQh X xwz\c\B&.me[PfS5;;SB̺g,h)!(*ٽ.YmKٕpUvYfÓ.{gZA=h`]*|S}"k8|T Ii¨I6C9*0W3 2"i``(L]9.ˬr5m*nQS.JP$CX*lNxӂMt39:1E?twsA4!?eCa‚GnP! ^Գ{5u̘En,U Ǻx 4ʔ~cHOSjMEg.Z8z6sԁRz"i Bt\$r3*?FWG -R҇!!Z#@pQk0 lZ$LJPD] 4eVaZ ֐' ,B& Xu mfݠ4M~㶮Y_TZ_Mp8$!cw`jMx Y۫e5|ĭ+q}|Oc~fnզ.KI勬9Vv((w 1'Ǔf!Q AR4 C&D kdŖ$WG\%E]6L U_&7ʟ0 p_*MÀ -^r!tXs(ƻr-yAYDn+* 3X谬vQԖtvBC~ /w_Tg+ps'bj DYl˵{˙LoxՄu(2Fkt s!w|g\!8h(0G|NH*9k={|B$@ d^>QY è{G FseҰoe3p6s5}zil 2#WdRD;S[%7 ZSYG+i~'KCu2͘v O=Iم]gURZr"FF* gL|_qdlfl=M]N&W F(a Q"Ӹ^x^,fgfYKT(j#Y3KC'@u% Ydlո^ k3 ^adӀ5d7&5m*(/VbŁŔ.8C!JGֲC3wpswy@/I) H;!Gɮȭy~-۟~fZNa5xaPf iD̦覷Ug9~Ht8aʤ}`zByR:?R`ljFCu_Ƴ _ . Ѝa,2lkfB56T0/5L`{i:3 ӍZ)G߲m3pү~ :9zzH3/A7F> +pK(04@ZeG'GkIXgL<:NLU:ߘ38ZS Gϝ"A,j ꯀ_pRjed$N|ySvtR:;B-; =9Gq F d7H`a8&ҭKT}12&?$VMi8`ˁ}97'f aqe.(?ǠZ/'XTԭ}0&^|J[~#sM P%iK:YZZsr(4L;o;JyXHOל ж2\QH)A iES%a2/`d2 ![*v6- h.U=٧!BiqYY;~yBi`ڮDi ,?I80ֵڢq(i/iDنmuM~>ޭrxltb"$հ6dx֒m 9k6NK?8:")ZE1AE??o땽g>,' H ROoI;&uf3qj6Ibͮ)_pSa_5 =wkM  [ !# W@?Zng@se:, `BEO P M-)'I-%*l0?9QI?H "eXd<59VƶO9!,B׷ΦߋBi[:É!;fn{fi\ԅ@{G`mn=Fyɖf +4p{fT6.O2gz; I%WǯTs.ˮz<+IOZՠx R_Zn9PbI1yM^c/Z{ %{|)?+y@zU۲#/mŐVa /Ԯ7P>9@aamPZ}dvLiO1|kzo5ƿ2WD/_$Lz\*UVQ6Pe[[0 ~w/כH_.cd<"*,fQϾesE 0;%e UXDa|GqH &[/ެ#.D% f(zW2e1ppuGOI _,s 7KS"6 ,+eB#36* KBJջr]` 3u԰Z#_sQ@ZEѩOCݭP)%uk=%N/R*,#-rՀ̽ud}a*&2a>{8b^IC֕Cɘ{x'U\%9L;H! ; Tgf@$Q^&sSAؑkt{EJann>ȴ^a{e6nlQmyu[sB DhǗݮʼ,>``ervPbCItf p~C/Gc$zS5}!З2xx! C3/?"P!o4굢qbZC5H*~t=raЌOXp8e:!&Dl6x\8@ 29 _%%Ybu:Tm>}zVeZn'xM_-KSBYgVb $C`ZaĈ(B gz:O.]_&N=O3f*7Ⱆ5`.r>_i.}s'SkslgkַRп#zud\'M}Lf"H'Ȑ͊""s:7fg)^8r? J>W(0A=W6:ɜ f]Pwp~ng )=*B/9?I﵂YKO,ɊO`RaQFQdkڟˆ$)&\ճ0jG&U S?h'PQ PzW,-ˉG|[Imv>i~ƚP-;k|ec; \?c;$/2hK[N)9  `pN4Up)KM,aڔ?\lxrr q2 9q*=ZBi9}USt.Z̟O\76U: WL%c:hܗ1YQ="=d*邌4ͷ#,H'6IVxY2shy|@h03_úmDKܸu8?_gM:h.ƖjRLC؍,c&`, DqV4e3s(L {v`kr>3yWMuAim*jGܙP%|W  8/ 5![OÍBǨZg{_gd锱N}?G%!;<DbΨ Gj\F'rx]UQdQ;9Q"{|a`'M*NHY|YRcs:OkB7HtXnG\UwhUEPK/mФ΀[X׿a7$-`F橂hyNa^|0"'S~A"x{C=qWN륚sd [!H `Hm;r_*CX^F B:Jy󊼛d?~7~ir( 9ϝ=/E52hWV[KK7NiP(MCX֕!]"A;(eQ/ʹY A3#L{ > }Lw8aa2bB4Sv[錗2&#[|fG-r{ۋ!26oU-4Ye{o !ݙ)\\׆-SaIt|l(iSbZa 7J* 6{An:-בfLc1K@Mօ]e [v|5ЦX ļ18]F}ki'Ng;byTM#/Q$8D+)|`NibNJw= ao7Dtqcou;N$v0u5])N sh.RA\UV h6 C7{~8< iH_(P6Il6X8z ?Ws :1뷙xW-1%7vƻxFmDi ,5@7!"9ĺrnzm!]j"({;I.>I0ALlv6za؆uOK¿h]<ٚl5D$Nn a_"+E^&A.cw"?KFم0]Ձj5/JJФwj|^&9p*V!i?5F1<;;9@3UmXŠ,;(߈)3eYnEU|qna,d%/d?:GC-_fZFāmRwn+sP&Zϓyǀ]=%6uEPH=0DMyLBilA~U)}v{Yy 9Q`i=Vi)bC&ЅA-^/;}DKx.SkOPYZemLOWQ/8r9&P흋[*jIG-7Uu?c+FNsPv&u\% nV r>}~o8JF68.5\2Sb~t:-&)|c2-*5^k pRh/0z-D)w&q;`8@}= -l$/s7J޴H!H]@ySgT/w`uvz?6IA4h?VT[9$HtSJB?)׻~d=}ĆO7eW Z3\AHId. >- p*? N85K(,ш=P h"opإ]Ȟ{T ԸxYV!Z@R=ig yu>?{@BY7):Ղ44iмؼ (Fm9l ;EorrFad":v8GT;?i̸vC,z!ߋ;{udGOQXa,L"GQnQ!~6B 攒@4ӗQ XC״lPAsvU @Ii[Y 9)r9oo4X_+3UUdKIn v y  6p)rghkRӫ NbNeQ0#M'!D,^J,1d]Eg<(C4q l?|E1O OoGLQw5yɁAY IN5 پa4F!,-(8 8ɣ#a`Rkzg('6ݞ-tB:_!(crX!(@X)O $_:]zw +YDS#k7)bPVNIqpj}= "'pUʾ{}+HgxHxz=Zi*umG@*鸯\Y"m]WЩe=ݬvWc / D8pP<:?~^(p_ȒZ(W8H =b%(5ڲ RG~_ɳ0*۸-E9~,I%@odQ֝9UVyT"WNc1] STޜ4?rDߋK G 9(?Ɇ`*#3C,5$^= yG:Ab'lndo aȖp*Z-o:rx䚪ӟ b@jS"H[&F4n tc$G̯YWa !{itgtq\E.W<ג5#92"֦!D$ohS.l %?N{zE-cQ%syN7D+Ѱ?"aE٥)^.0B8mDROEn,.X*r ?q@)L Iw0m Qn;0ï S;0TMhTy .}ӗU\[.%>R$bXA5+1~ɖ^!c-p3^2=ǴΖKS3KVwg0mm-~Qb Bc1yJ'rpv45o"8w{K@P(SvE2*c+a@ʘ?f}ͩҤN_qXeӟf 'TiBzÜC}NcB-n)Z҃mGcg|ha([vMuM p٧jPzx Ĝ/ H&n0p6S\`הQp ~RQjnT\Iۡt' <Za"*-L_tQM%#CzH4IҠ+N1,7P4%C,liB|RQcմOjr+Id6u0"Ad(6S_\4v?BӝpKUr=0%Tڬ.i4zܳV޶V+ h͟U҂rcx09G,$E{ʡ3Qt\ ]Ԑqup=|EZl<.>JD.^(6JzJ*Y !o,Ss;BUЩ ,9߆?Aw~ 4"n 7Q2 D=w ! XH^"1&aé}`.Y >kJՈqjK! eȷY68g<3nj aH񘘇<@䙮$yU tkW<OI_3 'zF1L$:vGDbAߝL`dyEQl%2=#gg~8ǾE I\k7{Lx ("90NWY;JFLO5>_5i<{X쁺Ę+/ޝ$ :<"x,ܓ%ЦH> 3\DC& ap~Hkq$o~nb1idr[u6lIF:k8dY s!e ˌtd2pÞɪ&/&NzE`6&d47yz䜏H Ǧ\ts$ڡk/T@K"upqnSl78Yŭ7yUER :($X$I1$ P`. j@z64Lv߁ X$buYhq?[N[-`_W"Tvo/z6-%DmG<]:9ig?{' #bttjq':$ӍҸDq Öo`O6jd Oc4-#M7Z %Fm_tbo5#ؔ]Jz~!Aq0y<ǯKC?G4CdpC%ZwQaU'ɹ$GUHM>> @]pxM4eCdƕW1L[1z 5j,K9D[c]~ʰ9-ܜ Os>Q+@[chƹ;ބY*)-@HHi3۸<_;%-SpjI+L@-#ieP$v$ހOZqe;[s. PkU{RC نͱq7FmEMR [-=~e3u!t:DiG֯(YAݐQCW'f`0n rHk[oƾ KK()rF^h=mD.xh<S7;bDtϩE¦2#vD֦bxh`Q1 ~n#(z3cđ'/x/;F{C./u=w Dr&*F~ %IG3n߱d`oW790w :AC:y NRP]-}ukND9\@RО=8 u:Ɉ@C(Ru+|@Zq5ףWkw"~R VDqK<,po?Mկᱯ}2V1KPeA%RIfd-)tMԜ'*[I>!XM!S_S9B@k} F?#* 7]~7\bmap||&@kLp]nx>}BE(ChYկmrN}% fKO2cr< 72 a @u-$g3jfEyUA-@MR"R"ܩ J7 cM 7?:9t&?h ?ը8&:$ V D˼z./Δ- x??'Ҹ(}_}0QQJKN:? D;;B/88# u4F*Z;w?Gu= _,ӗS[#Fs#D< &4ԡ+D<}ؓu(-JrHv&'}X@SwꙖtĎB)8]GMY9"JrH8"rzޏsx3 n u,=5At )i^gE1;/Qzabh/O1}}<@2+Lƴr41NdVcJl6 ørONQXdKr=iy}1A_ky(` 0¾a*d,JJFh^9aΌm:X:vɵoDb,ʱ n!_#'ʏ6ktě swbY؝3HKY';"=ī`Ap UU/N6񭡾}2gﹱKi{`),v0TjKȎpėƳ):Lcy\om7'Vb6IW)b[A˪i 'e&֏+qq )}y?aT`Pbdiy`FkpAڐ)8qGh۟̐dH$cB9Su <աFP⅃OF.а>sY:Fim,vwdǜg`rm_k ~i5Gk7ʐ@:ąS= s1WIK:C +s(}VW- jէ\}7Ea \%(Ls.'h܅m=vCzgs- ֌\6@_dO噮@iHP 1/-Q}!}-H83Mɵ|\/enz׺G0#;p9&`Z8S`wd (ja9iqLQ `) 8fiXwiGn4s2@{TZa#Oo}+jPjK,6$IŽL\y$h'7j nc" )f=p-  B7,ﯻBIJс7 zoF6܍wJ9sM$ F6R ˪g{$<0ьI?|KIރ7`.]WOiOcDF\H<'35q[5`(9ՃA{LQD;Ly\2뮞L؍+^QRaBu*if&gV>;qCSx+ -rVZ"q,&\cFBMyj֋#0m0a\B>i;->kFdPdv . j5ȥ"@1TK̔=ʁ$kImpH RN ` Fp_s׬8\cpՖJI8)tٻ8I"0Ghx8t=|^4 fxMv)R^R LSӫ| 3.JA7mThx /PD醭᷈3憡ܣp뉜'Yic;i*m* _V ;C=9~-$&N>PR8b ݺylCt93loՔ"z9\ 퍿 ߖ1Jlv1N6N:鐂vf*834 yP?_ܵ^F] 9~2Eq`O,W}{ևMO ;rz0G9ZAK6{22 .2>G]{ }HJ吳h,c9FiƎT0+Q ]?OX I0x:h??2}O . YI^eGAK*T=mxW^%|V*(KO,uܨݠtA ?Ug/("4M4OSEU q*h* A 9r@[N {Ҷ, gCn\9FX8#ՀwE̍z8ĩWlO-(^EsGJKUagj:XJt*<鰾k%\6p Cz5)0sC_jl#RadASN2=@ªm١p!|ҵ)qSrtMNnrCBq>6T *}:/ 硁opS'sWt"f€vB zL 4rM  i1'eٸ!Rkm ьWCPbب&VxF D#C!xVgOej_!owsdBYV4c GRdM/nWx&j.a8 -]zh*e4| jXPme}Re _J fYo wJ%1UyW7?ЊBX)e\$=C>q E̊Htw*x bQj&B/ۚjz>GW*BLbHgt c0xP4j-ҧRད  k]{t2(ir$6+H `Q)󤫎=P際]τ,B!wЖ%x߽dzul䲽ܡDl. {p4NmOR>r㔷*|s\zv ǝwF\.FܚI?]*3l~FS9L]K$DA"\w7'mH ( ǮdD: d7ʢ؀.,{L+CX{?E 0l@.b8 ror5Oz@At>XPHcZ)8o4@t#+Zȕ$-syRwGNԽH}Kz$,/\C%>V!BHc± z^uMU2 ǀӽW8{Y-1@DpJ P\tW .NT/W!.I-l~gb7__[iJ[R1B3F-P7+#9d_#*3ؚ O O]b$:A<4^4 w%wTEYf豒^`NOәiSmE!&o]8H1}뉄nBAE~BJN[ ԱP%mY^CΫM@4#6G:<,J^)ff0 $o܍JקX3C^:RIb7Um50ApQjVVϲ)urRja>[B6W) xWMhS#6e4unnoosSqBL ?5=BB}'G߉9ZXQ؀ j]| "5#mBF0~>+{[3rsrrꔤ乍?<%u"商*oHgBڇnm#ssv!A54 302ޥ-ȁy dyS~UfKs'L"94u)ʥGU!r452hWo{W^*Uj:AQb@F:8\ %Rd񄟨a_%8gzN-|FC6Pӓy#o7␋$D~l6)@ATT'}y:b|ǂ~^A=U&:JԼ}KX/,ZnیZ#b/IJAnU$kn4 ϱ{})LSe5Yf *DuQd>G>RZ3 8υ4@m_y h1^" -K'5,͞i8kgyywě7gv Œmfy~vk۹h[j0478ePJ>"/T̨-+r_4XUPh8?{kW=~06h;RC,D08m`E, Omךn/2j~(:+2kqEe `n~o)S 7U#ޯgzLSc/P)yC\,GŎU.` ':9D\ޡ4&[J9ӫDbQdO6ѹi ņKo9cWt$ҋ>7qBWaPWXwF.~&tXn 8C?Zm=0řݥ|C ef;S:{GqL/7& &9} ?A7ĚŃm~#ȰkU&8?v_,وFۍp I5|j':{KSSOMn7-PR{LoMv S{.Zi@PsLv}za0E\^XNo߄&:_ r[|001ZSd z?.6!/ җt)VS;rt!.cq7,ۚ vs%43Ң2 X}-0:$v9uOXKe|z9 (:\Ȇfh4|1ʶD#J1EP& {6&[f2X2آ:Z%T~GPPFI+@Z.B &އj`I?d.xEkeKʬxNs:ǝ=ltK]n8 DѸD@?K9b @vrǔ NH$2#y KE*" Q ~la s{xҵL %J'0+ZD-HQr,teUZYn;2{^{a-&0\ʼ9\z ;۩MxOS}BW2:$2h*Bld3|AVї~5jy=1gԢmvʉ廏tnIsi5-¯':<۫4[!Fl o" +@1k:$]GM T"hj)tG͠5)pùh+,ЦN?ZvD)S/ŭYg0"H_>ܔ?o<؛g \R|@Ly %@ЄVܴ P5 zr)DV%RXSAvW Y?EϵMzʜu"{s~O]fL<K%Ԗ2MqME \7L @[b  fqs!sJo Y"DhwO'fK{c],'5[1~Dt8k|H{N:׺7GLJԇfQ W1HV hfBznB# n|,1D|/QGb)^|=9Dav\@jefיn}BM_mӛD0n 0Jix kugD7DCW- 3@Upo"R@Aq|dGn-j h VØ3Ty`wrUx,_|q!AK |+< [@Km[_tA6> b35vDBԝ8n֡ƁΆ>ycő,y]%n0l7B C.Uu 9bl)-0bX5&rVb<6nRb)`Pk ђucȠLuU i{}!ϝJM'ev)݀?ntn(e[\W>+{ j<WGCe<3+xn@0ws !u##gtZ<'1RȎ>WvI$rtz,f)k/a':>ܺ˰K܅ra]t6%4u)Dlob`i:)>'y8x#Gz´AVtRsgt~Ko)(7; hOTExZf7!r>gkRJ2eirXFE$F;|w-_4pxM$^WCgMͪ[Ì=qUHdkua3ɳ-ry& ]$1T&~ꚤȦs99ۣF`^ Db. 1ؕ0 gzVU=JorrQK=u*2L eQ9cZHr5[v[t~^;6Ϫah¢"ng-lzP)5"R޸oj0!eu:Co#+aS3䑚jY|h[ gFRFFj\dS_ц_J7fNj)>QfѽAdVT,";-)%pE& 2gq̧́ x^0ܥ Ⱥnk9&1вHD ^߶,R)8bdܜ)\$~̯fB>dKԙOJׁ{mL 7t?NMgŁdxM`o4 " =S5юy>;8oo15 0\bHtb-F5cv$d$!&?t,רIVv.iy;i~"=X=O,HD@ ,!:lFȬx^,Y! =8J1_#ь)hwcV~89yp1u&Z۷&yZ_.f{4)}rFKZy $&gzfJL|ԃApءR~ ㈓?u%ZV2ƫ0%m JYP!ݸIGV,tnSѪntvecsr[ eN{|^ ctB!aZwB&R7uZ,u#e%7 Iѻ}megzLڶʭ+AM2ՇOWpd7VQX3`iՠg& xRb95%˛;K.TC?"{cu_>7r1@0hX|auE9rJE(zxMRcYlh'v%y&ɸ5NũRoyЯzG#ؿaY@OƉLlkuW.g*B,ByTɯʼ֧ ]0۔*2nA}:$vBp.W@zZлj_U4]a/JϾ&wW[7|\zvTfL0V>MF.<$,7{9 ,\4mK!+z\[hd~8>B,둨p*X?sh\)zbZ'B=Ig2nutZ/eya-:%8iedpmJ(x"&V%la/P% vIR9w,#zb,byb`.kb(qtښ *~ț߿Jx2' bShz1sz'qrIƗ𡖆(M~9#[F?"3w"Vt7Y9=qT1 (U@}%L4-n#O-&E0t'34G e3(hmAImI#DYT}$" %ӯ=IB& ̂T 'X-3TpMyTq{|[RY\0;E?NRqK^D6mGZ% F+x0(kO[誄ם!&u9IpeS+B J$ ydfyrd~*óZ1&9_^`d$5qq`~G d?W9»&[$}? 2$4AkLi}+"8+`> ; Wq*` VB`---s?00vo0.J5Q@cJVxEjn"TrGazs+®hum8KΪ#'5Y@AmB[L|%vQ51K(0ד B|򐢺nȀ)?\Qe1Cܒ rt8yue9Iy&IZ/H-[PƵ ۧt4M#.",U+L53-NQYi+72>LX+7$ӋC2';@K~":)tĩ 3̡7gz.}Ȼs6}qd7<(\P/䟱ȹ#ZuwW  o^dSRZ^+]Wh_if0^x*wxWd|T|jԐ/;(B3) k=IFc2@4Yl|ͫYO; N-pn^+ ;bu|(-3NQ>]NiS2 Z0a?ͣ ƶ9|iKMw X֦~R!0''ۿϖyU{;a$;v +?Mk^bA˹@\Ep=(F;H3ocTt<"~eǛCz[.=ˀ_ ;<{W)дaq"2~a1^" e5K1i}EE-LHY~+ Z50tzuqe T=n뵨RiPc&q1෌nt=2PےFi9/O\T+oӤ6u$&㦳Mmn1XiLb _/ τn8^nȊ]v5Yh狭=oP;D"$IZXh.]D(YM6AXj@hإ I. eIj\?`j Ul?:sMA'C%D ]mQuU#5)W:֚&qSf0Mͺ=,j\DWАQc}E:u1 m3X1pαYYe(f\׭uBUk4+bxNVĠ4vMTu;Xw:9.Yl۝>^{M7p]q 0+ | 8p ^煈}4qqzkFR]L<ρ7;{om`"Gk%V'!q3KGr0R>Oo5ÃAz* KJ?e/9(Iq QYwĭXF5@ot CvQ]m κ'm{de8qi2'5s/˸e4NN3z Y]khU2Tut9X #8RVvTভnJL -4Q&"lW(<TM[׆Vg139$(P1i]ASZ˪KN9W)S9aӎnMr.+}\1"Ay$\U36w*_|qq7{\8"#UTww"^2脭PB}g˿c&f],f7]X#.TM_ FV+ut0'Iq+U V)083~X)|5a ׹ \ a j]Jh}#(foCl`RJ,|Mzލ+@E3S kg{ځtQ! d" 31KvIOLjSҤ)e_XFx(>S⭡ֿ]Zt0j S5@! 59lUܕ5xu9o0Z" 5/s~m:ytvvj/xUX_I҇P.2´\h}j7(~%!e'\h~Cayy[ϦϷoy7F7OXoW%nWJnq Tؑ*A``/}Ugao1_&CRX j2  697 Sv 1шg0~;C0 5 Wʗˣ'tL4J7h/-ܵXJ/N2B[.JvYs'bh7Hbh ֬-zǔLb@D3v)WdXzp((*`ң =4:*[dV}m2'~ש~P =׬ABtoЎXdO)OIt,F~)oZ/oLKC&D<!(Y{#hS\z7OaV*#a!]^GO–ӬŌ=ӅLMaϤ<f5!dpOZA#M@ 4Xq"ab;eDe/ ybGgBYCchwRi3Sp mfő1^IF{3v竪 ``jk^]KbDcaD^tWo2AsR$_zNI t# yklCZݥ28CԇEw'ðnIbs##(nNON]n@6'/g#5sO٧0,îm!YRt-<ͧ+4]&nBQCk.m?y`mNY68Eu:`u29Rq@Dw'vs;sL4꾧~ޮ 2DX7|=*X$} +R\)&* j@ Y䅗'D ޾t@5*;CǸ#y'I=>΍q x JnXLOz7).,ΰ9_ʈ\lgN:Aٕ߯l EAzkR翯entb- 7 '{d"f)$ԓpak2K>csx0`&Wbx~J~^DWV3hJ{*SqPr4vv52OS`~X)te'#&HTV[BƆ{_5W/׌ fĦPCT_΀qPeRz T lS n7LR׺Ag GI=1"*wD56ۃ<&7lxmC;Wl76ьzc.O M  I[~His,`'kI;G@Yb>m~? i|uݣ'[q"|;)6yaLYsGwenC} 5^Jzd"XC#Ύ^ߞ'< [`sp䞨m (G*~FsQ_JD;#N ?c"ΩK,>n,0eC[>UTH?ί1|ߘ`XwODA[:= &\~٬"J۫V 4+٘:vz?;{M~r0bmaQ?k*7'6 L03Bhi7 i&ǎ4_Z`]b H0So;5rRE_ | SUt EMnHTne$e;EeX漅`2":FxjIvЍas+P%ɉK^{CM U{BqD}te+nWtR"H&DG40}Nsqk/2596bFGh(N@ g0;$eFsvjX Qi%-O7< (ߺބ>.Pڍw LrVu]n]Lm= ِϮie?yp₆+觪Fv,l ^x`;`yo)5N lh\UiɭE{}_|]fl2Pr@Hx|xI e$GJ= pFHՐKa_k⣼_H6ZAXvMlYYFCnfK(MO/Th`Eص:lq}b^Q0q'5'8'GEQ9v8ZF?WQ}tKI|TA? r|F#:oc>ieXbΞ̡j(LoM&7W&(_AH0>lY!遈b|{]g籩0i|KP%s7aK _?DzQ |~"<_E,b~`Y;<î[[D1dNUyNPh`H < ϿO{TdHě.\O2pS|t uWb6JρHbmP7A T;4psis>̀nlK;޲pm^&kgkńoS䤫K0I`F- OG|gp`"`16'04HN-yVy؃{Su Hs-P;2W?3 1"gxDZO30D#!yy"F&rN0@*g@㨦 |EYBTIf[[fSfq;Cq+  El/ҁ#Q2|"̉?-\y@.CvP9?\s@VOPϥ"s!콊躹O(?^,-tQ6Ι.a."qq?dÐsR/2SEU 6ӗ Tx&w\9rPW6Ɩ<{lk UnЌM![RnP8 2(87598bMf&?uv^-Rkm?wNP֧H-7{T4g cF*WRyTIę.]P#'k1D\k|]y<ܤ24Ii6LmAWB+ɪlyp6|A.Ǽ{eH E*umKFz쒙m8Qs 7r6 zX17`OSNԯ햔`̇J^y_,#; $43v`anQjxTG܃k^>NnnLi]Ya;9M<(A.Dvf$~0WCCFG?!ӵ'B1t9̘!y_qA(p~*ך@7As"CfΈ+uLL'lNa>.bS/ `.MML0dd6BLe-ΞĶӾbPl_=)?xfTfG1X~ =B~0<]^ lrƑ})*r^ɿrP |"0N#7S ' 6]kϛY?bQ21@ ]dNt8G >(b?j/GI%v'~D6l3wSwfo6 8}oc^S:G^.gWw٨ou:uT縜+fpSHtCj:jbf"6JۍqQ.I,C|;=Xk^jW4p_voiJN%,v} fkpiJew%&MƵwp/.6 2 ~|L{Y vJÖ_C}+:]8h=4 .4>N%7oOF#wC W0ʙgNZ5BZS!'VJ jB,SsheFAd+"lܙ?ZjsIPYR?$׎C18 J4A],zqGo@#sNjVG)] 5ӓ<4~ٿc>Nc$;VOqtjJݾ6#w%1z>F?+k2נADz) ,,El*z<{Jc^5/y^6T!@q=yv`i];oջ!"{BOO=Q>.w|ai.k6Dei(!ɊW^QH:vT)-'' ){ǮhBugďcQAA+@ћG=݈ v&#A,nzxRB8Gg-NUUq Z& &1,#9QhX:]0ؙPk#tl^<ڈP!:9!qa^^ k!Ðznjw$` i/Q%f\„O%$xBހ"ShٜvG]?xK-$*v_tٕǝ:<ÀHGADT3,7}YD VF1s[}=2uWsp!ҘsCE ?bJc񑿪~z-*QfVmx/Pёfw!ik8 .6\q%;ݲ'cbH:2bhQ`r>Rf7RqAi*?.QFJ emަ5) ^tl߬N̦n#np3y('y{qJm^SkBIoBH6Tqqd\pGp5-Jgm砧G, vK0 8Ps&L^FO3l+Zb|hbː}>6|YTK2p[pC{zNuy/J*^ J0L_ COX}&6`.,ciK3^hv\,-?Ck=#0LBCbJ& }#SNv"ZF;j&&'bZAӤsQu%~v:hGoshl`ZaN%OWSA͓ ]{ l)#oJq$Gts {M4o.Cku.:>#a?*Em[cKBzf֡j +rV񗬩#ԆZM)\Sˁlb^[ubޅ&3YvsYN6`T+N\ĽfNAyĆ=odmW c16C~Xb * k6"][b?U #0"U*I$!= ɁYI{H7#Qݣb4vbj(Jfk$XeUjQx 8ܸ0)=x,wAϠcq`rS 񈇿$5޸ ,Q42x4E=^X3=㪅V Z^dܷ@7$Z(JјoЧ%P7oQE ЁL-eBێkGSJ醄*f]8^jM@-3#t^q:f9s?*HҰZ FH)YЋh篙KiTWE%Ǩ.ZDv{R- w!IVY&[NEҋQ=E68v /wdvR4YE`}bz,R_3ΙgS=h?lW!vz2ܬB7=jذmdo[hJua=kGq8̣^̙?UN^W (Q&K^ų;~5 MBNmF -؊%kTF5 #N /lc-1 p[E5C[_PڒiDf!O(!ZP VI^{J&Z^g3ߠ~^obJ+ g&t[wI=-8kV"ʸZU󢎇6J62g9ue]vL &]Ǭ/c9:x88 VW:P5-H?Nfކٯ Ym@Դ@[0> Isy=54Ȭ &%Ҫ)X@KA߹MyhT!tu'gfH;VBO.ϬZ'bc\?ʞ&:<̄F}ĩ#/: m*Zl2f Mt1BZt'z tѫn-nKwN7Ӳ;E |آv1*,Dju1љx$0@b[H/bEʵ 3_3K m(«>`n>!gBQ$]D7BL'ZkOD޻^N}^2~1Rz1W3K8|"J?{BQ9i!h߶n@37bv\`,&3q)U " 27󙌣[-V?'ޤ5*/vjo_QJŢX2RQ(A1I/-C59LILHv$W V0c143V6E}1:k`Oye!FW_js܈jyL?jْ܆e;rvxcC53ܟTARh`b(v쟮M}ZCW3V4> YsJJdNxl9=jX')~zTQӕǶUC32TtyL֌ ^E\*G" G)T>`0(vhZ!|dv2)Y1ze,$ْMG[]^qVYdJǕ0Dj^dgM1U67siBNNވ9 gY"5@J{ʑO?N"DğAN.ۼF6= bЫ1Jm`58aB..lYsYDOxyq d¿'##Ɂ6f}g:®W}YOQe z8vԑ V_+8Kb0pUsU[ّ/|P%;Wz$F*sԁ@u- VqМ`/]2\7MI3lV ~Վ[@!FWUםV=6SmBF@J9)rۤu`fr[1nU20Ť( sյo3MӘ!^6K]1esH V-3Gݲ`9PkzuYC7&q6tQ\?\VV=Zl vŠJLu[GEfB1AGޣ*q9((7s`ܬgvEr>U?VL-̏;# 6I!5:MȺ- L`Mh|ռjz0fcflğbЖ}Ct qFy:ԺO Z\G~jP--,?i"I4 [wj@1"ySs.[^k(['P=@ |OhØkW0c 8^ҥw+Zk՚ @Ρ>)'qp2'Kl :ACh(i]Cu|=/??n eMnc+|zHZ%F 읍on]ETfwcpQWeua'i@ W RNs# HoU`,o ;9zTj”sa'S9gx,S6S^߷U4o$ Tr,3y櫅/ _xEh\ כ4 Eꯠ6vZˬZ:ш0(5>nٜc*͆T}N5DG4*?|`MrVDQ\+@ ?fpNí J_9Nz0uLAj@@ 2t1؇cq*`c. zid+R!hjO,7͜^X4K|ݻvX|C<:J"W3ԥhkGh6Vfg«C²B1d3ÑD66{L)pϷjLg<~qd=M>5'T1HeEY:bZ)7%J7Z*a` GA!T&keRoC!j_'dB&ww1sy3̂s?8dĊdNI}[MD&`yl3}ō C)W~o4 0ʬ' ĨD,W%u  @_3r6Û^qH*.7 e` ~Ɩbcd >Ibd:x#3=lbfuVifR6H&jRPM=s!T" aU&\ºb;vϙ&K3-Pc |!s1Y櫲%+3!u H9zsm"DcWv4ؤlOzX%d6Xcgn W\H*Yry 6rb&iZ n܁f5(o?Vm >f_+׆Cs~{K,)z:SE"go4eOHLZڰſb82NgI{L ǥ}lбhf_s#FF(p0u8R0\p0 t'8G-Y ^\eyB_)רyhk{b[d-Q>;Ǡet P)N$=|BEYCt'_@B ~E .')\dI8BҜҟg73HVX^f{z1&׾LGm-{ *Lp I7ƇC`u]`@(k'k~<ePY&th`

,!T0CA#ASK foy Mq _׽aʧ]im) *p7`CsFι)Gff"+u!nu$ )o%ՈRk/eGPK8ߑ9"eOa!Z+tD% 놔>aN%W)|/3%9Gae ƿ1PPpK 9_Pg d4,2!'i˷l/)n yE'/j^b}ξ.\y4h=|ovwS< SDOk[8D"]6SNl\˶xKi/"dQ&wѲݘQP-LN!JiOGE'OtO.n>;u>T<rS ^-T/tԂ>զ@u6kS mlX:uDiL ,5Eeӄ+/:O6۫D_ZNbu") z~#z3@080c²"Vv1EdV =^aI^bMp` I(3! }@0P.o7T?Ry.)]c8+xmeʸYȦ|*C]]NG_pF*j.Ė '8,F .KLSPăxG.=']#\dy8 Tv]H8gmTUጅ\]ݯ 'y@J"ğDsΧ4/ZE>~ygNe>)VYzQ\ ~Ҽ|^B?o4-S} osfYWĮ# f9^32WؓQѪ> xڳEr902 (@:^v _`EѤݙut̻ox˗!z8(wH?2JķmP&.ߕcf\V (anj:%D2^5HAINSV\G.0۱\ v`GK IJ֌S<'Z ^XU* Cz&#+Җ>I}Ϫ=M {U`Z/JJbSC?ӟͽڪ@%Xot)~ǀWdf]mN3MLNuJaV(`5nL=.9 /u>ۊ댴Eyr<$}n:Ϊat ˠE7>[AMNsu u #?-heTjHfYr|nӨL/^\ ?V ەVi f }I^ϼf8q4ӳz i !Rr4)~T31Q).0+Ck g:4cG>U Bշ̙KDOrJ4<=O~61_o?q;i*PWj(aБ]ALntvGB+mgd,u^&>TeEx'<]Ay&yfF9-EU$!@;whXޭ'|R_c:R"Z Z'(Xic*4{6V]4N+܄#%$F3moZ˧Jld5ۃaCKmԤCַ*{8 g-fx,er޻bQ5TsryG6h񹜚sS GF& ]g^aWv/y{HjC ;ydV Dy9uG!xpeg1&*Q*$@ *k{fIJSP !NXyC2Fqod_56F7N-ut(JɂJYXM;4yT.A$!UzjӮBdG З7' `!|J3'K\k-)Ơ)rMf~Q.7p|,2&صp1%@)"L,~{ + tx6E%(]͊aenfeI%(;2/@s΄zi7G`R+7gTAvK=3'fu@"CKaVnWd߯><KzLfN^/oFkrYOJ&I!Iufb`"f!֜=: V*>dڂgf0v \xj*SF E}Q3[} wM>0V=&Ҋv7nI/ oznpd:YfSڗ\%Sl6r3"oj[]Gn@ ]i"x,c lş8oy!'wV.M{zEc.߈M )mei"TƊ3ٮD{HYV#(2?5\KVT;Mӭ{]Ŋ%oX 2}F|ɩ m||!A>p g}7G?XDzz aקb@ @oύLÄPu1 57)-GŬ}až=y=xIzxR'56,kMN'(w'ɏFPEjp \o" 4W'B =uah3jݖ{#_"gd֩x q)vf8/3X\dQ MO5sң2)L% Ebd8Qm~ y>phAZVݵw[8G X?MأKEIo\nl߉j]D;wd%3ku/D=CB5I~Cus"$sLR޲;$]5epa*;ƍżS[DjBQ5j-Ǣv"K[jɺ  Xͮ GEdP0_ o $Dx!;]T>XS쳝G)N4un w"|B'P*xllc5aS,!/F3bn(`Y h3$mSmb1D(A߳CIѶ8d?0<;#-eAV:7 )3=w΅KhMU u9]s;>,ߘ" V ,:W"!o̥3=UXCۺYPvF݆(nY)F(h+p:}߳6ױs`+@pF&P>Y#3K9,8,(a..H\&h92FG˕ll bSXEU2{ڤuT ( lbx26<p`O91hG4S.∯Q7wl#ĩG =7\[QsAϡ i)yO֦MNC.ʸhmOhL w1 羅@&- ?kcNb5iVbL']$)y0H{i6$:G7L͟\/l5zߤja!h4շCW2pbTM)j־q+~ۑ]|Ѵ\uYjAh:2>BPl /_aCꭊ MӅ8K. V)U11~ v;jX1l0y"N.. :ޠr&zڮzxlZ2]Rth R)}\bp0$)81,ZC2{,z~.,WדdKӎQpF8tZOȧ-MnL.J^Mx8Wuq rP' xߤDRBI)BL/EFi))>N\Od'8+h7-dݩ `oBgz߂_TMZ8i\@BrSޛ0X~ ʬnc<3. Ad퐉T~ZJd(x;n[izRAK>. -?$-a[1''%K @|  *@4m$w26R!Ο*3ݢ{iK 9QsVTwPOWa&62,+d`e9E8TDzBڮQ>LJ㹾ˮ6iXON㇄DM>E 3nf .GBrSyY?9u`DTmpUIDrvҦk*[u겒vª[)>2_zIvv1m <9*6ZZk~˖R6bW)d\ׄ$!ocj&K,#*G=~OFjW%Xy,BȮ{ f&-Ik:Ax۪nfálbGhm`5Ә|/4T]J$iyDpo'o"exV{ۜ*,Ƥ(pW1ƩM?Ù%epCJ"oЖtWr$Lr΅TvOKne+ ΄~{._ u|>leyfܽc6{2n*$T(b,}v Sf fF]>t؛4;:uczFHAaj50|9!qZCMQ}11M"W? Okv * Ǜr$z&c.tY2m w~':*oZM5iA+ }:K_@ Y5~ʓ^@63Tؙܸ?oN}C\~S/h &M<<mMEKW_{g|hZU7œ?}A0I2a%&)R<^[2$G.L:'}IP.Idsϔ̱{8Law1r_Rta.Mdυgb=UPrwnx&qzE4Z/\6ŔEeϚnaXodYNϲ%6x͓g2^Gnґ/r"#cE^o)ޏ }E9x ߔ t *7r *;5ݱ셿^ s/(E2V#X%2g+&ÜOLRH|6&<u%xН*(Ekzde Iu՟^\ AZ(gs@ [N Vh0GD#`ƃb/i>&Ip@cj){虗NGS!@w>Qa=m/O-4aPzx gCvO"faDŋ[[Bp'M?:%\17bnNC"N_f LUDf9LgS%b⻴GlgV:f.o:Y52r}|Q?f%Y?J >,ur6<[}¨LضA7m 9)Eu=}5^{'$jA.U"\ܓ6zev'vyϲN0- VNBq?_q;gΐ_:t?5ug~Y!a"e``zF3^D*Kc0O;C݆ړ$.MsNX0]gW4.^@yI΁xت]ؠ"#Aw!, z~RF26tpSsPLijD+Ų.3f D h .[6E;?`]>kl^R_뢫4} $n 9p؁7g(ؗS5[#8M'9V_O&2<{%)\[G)yXMNTv: Ϛh,Bb ݛlM&qށaEGigtUbFK.ТcXux+,f>CEX&#>TW:$Y]IK+["le$~$~n 8jr\HT"q?`Y`ЫKR8n3k]Y;SW2tZLyMWjl9Ahdw? ȏJ9/V@: ͬ83a_k|E"SӰo8@YCyNɕc!)BযlwƽcrᆴX:b2k1EW)J%x \XKbHD:<4`ڴ_cQ)oV7Sa4%rnd-Or^2%ܼ1UY+bu_4D#`+Źo!^2i}]{HxgAW~@fnwbA34Fڊ]*KɥoQZQ]H?il<^ x $ۅ́>j(U$ bFq-{3&DF|1ǫ}1krW6gPC3 !ZxCt -WƵjtA4yjH6yG|Z ?8['\xKƪaayFRi6~Хj$J.SE&'6bW). @+޷׊y}_J 'cEz*ӢV5{uF*۠m;)KLjKIK-N;< xt1ah;OsHS==v0ܭLS^DtyϏΤYلbȪ |a6PS7ؤQBׯ{"Q=kz @cn4`4)|q ǪQ !YZ^nߜ+_@w#ZS}Tglй*2S}にhP ϋ/`^On3)E^R2R+(`,*44N"mPh{oNڐ?wP,$^<iʯ/aZଧ 39)B |X{6~ci,ZGVtN WL:277m(EېZ%Ye&i*}?+I =N>R+23SIȳ2&ڪ*$HǞW30 -l7.r!v:YS9(d0%, ok+yӈHA}g+e* 7;[uB-yмm,B OBHt-y[P Jq9>Wtؔ ,Y#8),/ ;4 \Vܙ234y[| -OsgfG}G̲%0ƔUVsaYN 3(=ROS̆S?Dfx3s/o7h.U@xAdp5aW\iAr'bW-MS-:'_.ٮ6z~*YQiF>Fr#q lh19}iY+y~ע(:1v̖A[Bҏ^r\HTFB$ge7ÂJ&{TM♶3$%@tx&K f>G1 (Qd*٭go 5um",vZ;g1i(uQ>VmZ bH4 C%I7ă]Xg{y=J!B%X̅W4ꅁ"Q|Sؙl)cw$\4FOH*d[9^9uKptOhDxr9b4Ĥ2}ۻ!]O$BJ`9 UF)XGSf l71e{(KУ! SO(m}, .oT X&z MwQob ;V3߆ [sړ{r p%lvHgȎ˚&vF֑2&Iώ`!AJW\g^"buVWw:d`i9bu2V )Ę (fܚ.L}7F,C/9/x!-wN~D'9\Rdhjʩtw X] pBa,fi$O`eiS]q("ah#; 1tLw7F5$?f1nb C#>udÃ/{#Hpzm^%}bEZ̍ R/`+'`%X>ȑ!&*xx 1#tA>3قo~V(m$岫|\ϴ *|GzD9<;A.I2 5,n>W8߇G7 >,Pd,U$db $UMSEry"RHTͯ=jwZa_x; Vw|l"f:'߻< 'K =0uwz7gPtg4]],(Cz͖lleaTύ4s~dt!}7ͳ Ajrmw. pePOu'ajM"yN'U(6\1 t !;E^讉3\"Qgrc{+ q2\Z֕Px_`jA 8c>!x[ڔgcLXD#`s6 ғj0PDvDߦJjdzAB|  N'cQ2Ti$# fX=m {tˋ܉M(&A.ɺcy+ YȂ?\?RsތKLmsbJq۽EF.੏׿EvK\Fb~^ jzhQ?qma0a8CjY_p^YDRo>{cC_, Նyi~pN$k |~~؋G_ԍj`m(֯h_x%'d{s j\_r_B]QQ;7I70 -PB\|UhCj$: ߽UmS"%Y*fW3ƛ4^l(!fsB7غBޭyab}` ld6Ӧ֏bu\O!:.uXX"ވ!;kZW1ph$Ҧsb-l'7Wކߪ#7,:6Ȇqb@sl7-F ķ EOi_TZea=&cկ+,rxt^HR?$j?de4CX]b0oE|[{{`Kx }8t0"iJ 0[k&3\P$l2`y~z.Hd iLX9S>^!o91{C!zSc RC NO5^P;!Pe^iyH-ܯxcO'A_a pZ_&oJkD=?͂/@פq](~7CA}3Oe1mDDL˷&: vJI{'1ik diw藏 h۫!:Vu%_/̘LhE&2~* |{2Jrp)mmfY VGQ.ȥk.9yo E.=JϹq8t7nՒ.F8Sٻ"TvyL u2=wh:#d :ML_\+w4uKJ"?^Um]ȵ VjfQMu lmceP}Āx5p.KoRKvw 6,&|2kbj;fX?O)yk/ʻ&C8|yFNPWX#m̿ȫ O' $Uog+DCV1t0e2ip +ٔ f~*I-I:@zucR}ë3ьr؎bŠQXz8!ޡ2(W==p(Vs⎻*2_WD3ӫvex_j8a KcǂDFRI7eA&͙"}$ Q2+L760\q0bj)j`UbB_ϹAI8x_MιqqU~g?;XQ> " Jo:.X6gikNMk~Z,g v|(Vvhdpb8r5룛ńG>}?o3(X؞AXbP! mdTT7bȳo; NHVcH ȬTU%қ6ٕPk†kN-5~Q'B 2 vn~4P}^jV?IJ=' u[E/X"żfP%'Xi77*./tz<@L=dOƜ{-qog& +2T ^;iJ5c m#p `YljD'FP,('[T!m %,So9v_9)鞵^;9j 0Ex)M8:E66D]8 ˼*|H_I@6`c$1.$ (/3|b Z]MPgaUI0/^(ydG/ ^a!Q@ 0iE-)D6p <ə7թJYsƇ1H?z"۹KMH٬t/Dǡ|xYyNHpe]pO ~vL`>dtוP*W$[-jm .4N:vb_vh k=!LI͠LE墨,lyώv E,(_-2x,ncFJ>vѫ 9ՓEbCU,>|N? K-N,BX=NǤLc8<Þa * 5S`(&uNCPîtJM'EH5em&9J2,yRQ=αe }rc))z1U V-D >{?l(? '1Pn櫾dQ戺 c#)A$K P@弫yp2!/s>'ED(/,̂2Mҁd~g)rÒC 7/ԟK-Z0K醋1L:!xl]nI\;m8ȗҮA' ܞJO9W[_3 }Y(9QOf>^>K:ymz:~;xSWtpԹF! mP2.Ŏa e T;VB|:ŢRWAROĦG{8f^DH3mBM5uܘkR gH-{hYuJ~ư뵼ADݍDnX̱8_׋޳L4  ?_l`Fx6f,мO,M}L_$r ~NPc |.NJ B 1 ++χTUKuayD+ZiH::h(шxB'EP5I4n!o̳t[KWe1իCfll.#a JDQwyk.KۧqcB7A6H2;YpL=}-}O&TjlU}BCg09&&i÷%g(KZc62~Cy{xPN@idc.j'4Pv]n0#FKLgu h|}w%ai*Op<4"^€Q8nXGՉgㅅ󽭨ɪ$e ]$cؠJc19834]CEY*ԖN=ps7Uk^KYu[k@.AKyc$=M}%R^pp 39"$)umn,5Ń{Ա!h Kr7űFJ?l!fEHn HB. '䖴*͘yo},ůo =& @7EH:aw$96褠7dV#kA׵m ؂,U5 lOO,cZ؟tBĴN=rٴk0P]Hx?묉,־e_ /PgMEk0m#ef9`i}?61{|? t/Q`GN)@tARH1GvgmCp#}{@'@wrX#; pS0~?ĐgGY3:s;}O -7[VVUs.?GVT;`8 4^ G}"t$~ u%72Œfm(Ξ$-Rv8)';J͘Or{ȴ'e0X萹4ovªs1.zL-b F.ʐjH>vUaWM*=Z4:CC'8S`̴d$ȇͿ`+1ELIs[HbD:xZ[&29 _&LlliSEa̳,Gn%Jb"/Q"df"9J$,lQϊ=: @R;荣>Q•e>rԜԜJ0:\c+O[Lh F-  fƛjN3Ӂy՚!wbߗTdeh_).[ $Lz) YZS.kW0P3`P@/&cc{sH-NyNDY wtWFɅWAQ%ƝkXrjzZ|V%}z%GlBa #5u'%xb!z{ԞFwD$7dH7Z9;bD!rQZ}Eok5Mh8GǾuq~X7{Z'F9Gs2dl`,tK,Xwc>rLJ ɏH яs8ik nb")o-[3[ge"B,|@9U #n߱d7!HM9la>_޳ *^ " ye~i2ׁ8iw*Byi}H֨9h~`F(_c,7ꦇ !y*I| #7nE?WO,fqtNlyC^OddD{BZCL09q/2]Sz득L^b@^s3 ؍ɛdL*Irm ="G(:xEU!"?Ʒk-qK퍙3/ &0w}wBl+^tyRfFul5<OҕI3jȈ0kǯv a)e@^1g<| V@J_0w1Op>EY6: SY^ZpJ.NKy=uaT<Y+HGw{b't]Bo뎻v<^#̛>,o%HNK^)7ԵV4x嬩_ƦsTEX<;@sz%>}n+Xz۲8lO-(sA WF3*UPˌSP[;;_HQnJj 5Ȳʧ^OQBvTrʫL"O?JZ+n!uyqtCpMcoł+-w䢓73h"5f // rOqUq"{nѭb n C[T2!e֘zEaN1:.,<3Q@Թ((AȼH>1=d>>s+"t+MS jW N)I+\6RX\M%1wE&*"qIbL s^ZZP-~+[`e4S[!ИN`RA _yPTd.H&0?OTmr:D}5A,hA#eH3}D`\>kҰ&eظDx@lLY[ΔJnDw*藿ͽW nԽ}Q@#m'X-5Bqd, VkSv^j \ U@; ݰ `  "0,zm(L^v|OBb"׺,J3435{21 4'd IMNg֮V .w'ēW MwbñzJ"f3FfGLo L .r備~0\Ԇ޾|Σv! Γq/¯˿lɵ7O\MP"4Q{oAwQڃR[ċh>8zINu;az*=v)u&^rS^۸l%]-]HAC69Rt˨>h {_?~B=dj`מ岛F~뵾5I vd/,.V8; YS~W.?g@ E# !h-`LpdL;eL]杶OBh{|bKY.Vdyph1v|:3־pFǪ~DߊPUeRD@V$]Qf ;A9j6 }%grfs_pv&_ ۆ뜗 slzN B!$C|sPv_ ִu6*a\(k]ztOV>k^F}ԣhWfZfrIx5[DvN&חjmmQٛ,}]#B8Q2b\ԭo5Ooo1K:9ϩ}!ȾHhF)MzLE]{Ҥa(ON!)N2/~> V`:(VZRl"?=ٯ\T>Y%Lb U~F BVf7:8A~`K*hʛ$'; qu-P4%i5sGxBQG i"mߕ!5L-8u둸+9)W;C8Q`J.S0ӹDm&r=ݠDjwSFso d|&` +{1fg=̓LsG5{8BېhWߛVCn@pn*W~BѪblmj>1rUQ Yخq{Ixk2>e's5!Gaj~[5DX-;(!A<^3[%(bQRM*ԋdZ^wJPgPVIRF*(Vn9`9㶤pȍ2i 6NFWDx³Ry}>Dd>כ[~Exxgy[P=f@ؼfU=F^evIR7=eԒ~1t/Ea䜍 |bXC`{K A;g$z[ɬu#qc#xrΒ(I0XjZ>VݣwAv_ݹc\, h5!$L0B"vu'qNaa@Q$(x 7U~U'Kn}=*@/#n^q֜n3% V_yzv ۙ!T"6aRs:lWH4:ʖϼ@‡HzKtC"w?n;qc{ Qm 蒴dUV78R;\v@Xz 86򉯺ڨ|^Vª@i+# ɏȻ*kx Vh(jlqe"ROK'Z~<0s 1zǐ-ц"+[|G]\U330 +BX zv0"e"UeTsF/ɸ͏,2+]ƊHw7_Y}-~LEAI6 GtktyN2 WQu>L%P`DT(}ƒ{o<)nnuq~R/(9%BpJVO$S2sQaĹK34V⇤`y ̿ jծ,7fķtp%ũZ,9}T11mp-: ԣlv'hp8d(p=p cTsʺid4PuCNO,u2.l0ٵ~NS dts9^F%9XS"'6aV$2Fp׷X~NV G1 m:MlJ8m[Uwi1^% >J}\؟2u7\ej=jC{pߩ<ܮ)AC>BW{_N6BþΣN:KiŠL"e 5I|EzeRE9H~偈85HDQ-޵x i/>$Dfn\0v$cH!yC#p;Oh8սNm;e3zMR9yrszoβhX:I·V }yCm;R̋&I`iH~l q7Nkə]W~ keӀmR-?G3ŭmK\xVi_ %i%GIMx=(!hL#ü察Kg2*1&cp6Z#y >RŐ4 ,B&"5C :b=teʵ& \GÓxc/(تKwygd]G|FL!O; +:E\ݲt4,%CÇīBL~̕%iџ/GZقdϝ~g.wmYDS2(Q"]C?פ J"?ቍu?frbW=(IkJSgO Rr [tB^$&"eBuw!@pnADv6 !3$~TGmq{d`(Qj@lp2 Z̳oT=a_M,B:oPF3%AP ⛫ p53Q``US@|L[3៌Z9Bhę5-y}!idSmG+`RR\7f7f@kjcdaK6>?L!# W WK!Ϋm\%C&ҕ>jq|#~F~AijW_Yz/26n}.ߤ>W]*qq01/^x*rB82(_x',A6/Tb1>l~cN8iEǿ‰2 [iUU\3x˾0fi@ >o)Xޑ8 &iG6<w4^^?vxtβƜ:@l<<|Ui0ɽK 4q˾:!eK 2!\n׭r+^e"և lƆ yj 7lL *,{T8ƕOޯ#dl\/ L"S}"hC@͎S?O=?$\kٷJJ,R9 {¯y71LoԨ +qz;۳3C1 W\Rމf9'[n7 MRVͧh[_<{ ]]NZ]$|2|o!(sѼS(?Ƅ̾ll-$nLץR) 4)'1~ƺκ#Q$MNDD6*~ڿp%e@1mE+# ]pj- \c_k޺u 0x\c>B$)NCϪWQ/fud\Qj ._XB֛i\SUݮ}]Rop`uj^'\Gը|d'PfU(n(*?¦ ˀ5gtNZ={2{?4zU*b@Nj=pNšgmc26YX/I LG_m=aOJ9#L܈̉j& ȁ Ze)Zm -ɝ4A0_`'dp7q 1'k~=Zh+8l*^Mde5yTI_\QMg3/1~[F3n(O\qQw$t0ݶƨ(Z/BQN﹄OMRmi , { \C?8Օ01,i9ꗼy"YJ#)ߍbg8xa`~gJoN ==`$mP@ | Z֓yp3twV@\L_2\60n3+'.UގH@E~o_60S',=Fnk:B^@-$Ą?P{-%8!2 :۱zJ1xң+?7N+$V1ޤ]fYeRapgvk) 3:+#Iލ6"^JłdP,$:ON!MĤhZBRKAwvnă^ ca@~?LYZ7|(gc MdDݲzaxHpRLk>N14? 9-ɧ4WzxeByi~f#9ʫ^wJGf2vCO@qydpW,'x> X-9xe"` "]3EQ/N@nX!Vl$#9Ĺ(#7S"$[D qf6@"ԼJI'T@JJDlChA ufx-`kŠZᵳv ۚP[n!Xw!X\W*^ћu>nZG6otVCR5G.) ӂ?nwxtmMu8P$rғ6ߛB!3Fua,-G]euD_kHp]NXJ!(j/" G]IW8P'tu6ED Kq?P+oi?H#|E.Xa$nZr @I#Re +xEa(=gE{L BDιQ\*S+_^$<_k;. ӟ. L<(6~O1]?'5Wńb:! MQ/% eDJn5X)f*BiBd֙$, =G11#~bY 2y cIZUMN|l[4~<'q~KILY!8!{SwR[6>KU<3H2̉,;㞸0g/Yɷ N/4DZDzحNNNaS{_sypFOjvAo$T-E3*R|vw"T;) 1t I|EYpz+a%hŷ8Yarʰtmq eIo-H@D<›c 7!AM>GGLKmEdC.Hik'ZzhF@to"5 nc\OzP=557ߝ,;!Nd#Qtn񑊦nPqߧ<6wnu=A2$jc,2,g9]mQM_DD8㖮@bWkc×q*eOQ̧+x-Hh36;h0 [=&vANYc0ŭsyQ:TxˣVR8Yܻ7uF]1 f铅)1@ԇj@& \W30"X{6."y5N+O:8+դ?h-#Jrb衳=vmZ"F噴4Lx5**\Mh@*o?4!gYlR%jޗWM|cC9)TFsإx,4*7]KFlCjAb6a 05bt.2[~{ 6]pL&%!p 5182x U{֥S_6mOwIyJ; 8ti&4qNsڙm2w ^Ol7yq)JI`i[l}w¸W}rҤO c3dvC/ Tb?WnVt'KۤRgft%r!CNC{ jIj469FB#놙$r3Ѡ"ǂQg]z2m#F.("^!8SAkL5͍ceyPɻօAӑz8Z`?8F"dQMECqED/gu ۸!k!tnf)4%a13q݈.iD)9R$I#'z.T/CkC)^q/ 9E*!@\,|kCDVSE"ձ#Zt3=k:V 31y5NtĘӽl^6\ 0OhkkfjlU\z6NvdVp?qCJL|NZ%o8dg"t35b@nz Cy`"kkjr!clDNNAS<5%uu.ME;-5h{%ܦ٤h*Y˘GN⭝ޮ!``<5s ʮe9}**]UΌI&AXY)mǂ =7:"jcr9(GAK1|-^E1A)Ѕ\_ۂB ŗ]wv ?V;C vܩ:"16*Oӿj&߻{2@.F_>5% ` raoC=Bdmgj f+t]6 'nv=ŝ.xL<D Ÿ2(.kMWyMd+9H]|MJFiLK^5׫Jݖ\dJu @)\jS1 \h;-LHD+Ҡ⺱=l@很\co>0b۱}JGqr:AԈQHk A֚Kqx]eY mkD_HE`kˉ0f]&ƴРlK[qc2s |b04 * *ʸgjӷxn<>@KeP()Ϝ] D7 \ 1$DIN+Yimv*9rZr4E2B\g؀ŁV("D|^"KkCfvH T̽1r})(B^;F^h[x8̢ռ|T TpB,[-Ğ%'l%q T*AFBiFcp>?c_N_69B~#L֦P0%,mD)6jC١ I'7 6wy$P'dsH{߫;32+39rOBٟ<.k7Zy:-Ig-_y_ypM79Z^;IC,G0nt_ E)gRn'GM%o,/"j-[j<ÃpĜHfXK}> :TDžM"@[M` hr!jԹpSrBE޷.5_"tU/ON8:[%,/ >lJ>"hE[i>3%B09n\9nPqȨsDU +jTg4AJ-X5!&޵t?D>MG4\]zm?;-t~TPbԇtF¥At/B,o13 F *I6sȞޅ9G| ͲvOz{Z";DS[z)̤*z;UZ}y ~N핪(Vk.87f鱚|~vFvA.%Lp0ldsb#ۏE$L}q)&mCXnov?>5ѿdUq-kHXJ*QRwف_ 1FT̽DQ2*_ȎoI=)&JYmljXs$نph5]𰆅jr]x0W@C6VcRư$zJùe2ؐzs1#%*nݶ^ :AQ @4 W{["rci_ňF۴J\8rϬSI^ @;++Y*v `_RpW 5μDGJ (ta)Ym[la`F{4H(Dv %MhAe!&-}Q!7A^i$!# #{:` \+$]?tně/Z/z/zi;^k_.}vjKiǕ >cӜZ[V+6u7@i6ydg:B6䒬'Z"cp=X DQOJck'iPpqIAə%iTQwp>öޕ̵7o| !0o@N.PCS $6nL͘>f=lKXztVXHvW-yS,^ 7GΨdRv^]:wAi^+zdQw8h3՝?m#5s(}/?*ePz ? A9[ b܍F TARG]ڨlǫX9,TfutTeCtŏ~cMT͉wϬ\zKbn3!DILH^(TNK*)r@O#7UR! k⌿ͺzREѤlV U S*$ʏrh~hpt{)>yD^1emމ5;ϗӷ0-̫Y&(̨&gVӣxNeak T Jj+ȏV1kt#T%1~ |WlQ:ٶaϣTk5ԏH2tM3oڽʨJhۦIDY1(/gQ>ܸ &7V 0,tXo*,TalDm#py)Fu$^슃Y=ҏAʋ^W)Y5@ݢ5Hr*V5Ш֓<4+1>i9cnU sp NHKXWM_Ӆ!bgika֏+HSŒN!GfuKW "qdrtSyFb:iA{hmWQix$wBhvuf!-RN~;3g*]<#$qV/ ,U$~;ѡ"Rç})ByPF xUID^n&F8H7 &yS{*_gl1cPy INWZ?-'k-wa@@k,a\5{XwOCn Nr(F.nKM;Y+1iANU#J > 0@&FO!ғ t{U>?@c2.Xjv{[D:l I#d+&lw0Af"LPi[%8dHslשwv0T:wZ>ܝPD{{uSVUeMc 9`o^p `"5w\Rb31Y{XAKG`D]@"f166<B} r|X0%Nuظ +o\,1gQ7-+Dt2 Nn;WiRsAeo :dRT mjF98$I^6FTi[鬎Θ& ״#XP1dC!b 砐?kVQ7Ҝ.|ܶ1 5_Ug7Ƒ'X-:݈qˉOK-O@O፵T a/ Y o'i.ί,vLF/ 蔺#0nHTdvr~!8|k ca|2$nNdXg @ht#R(ҹˁL U R6RKt#.rP Y/غ䆟-J7*"^f\ӡpߕqM VE:E"T tluU|1'|8άbQP:CdN4eλ1 L1z`Ŝ_M4 Sk$pIFŏ5K1='1S]ehQչ v~攍0movuo5FRX>8;IuqwHKb\/-z)9ۚFÒ%F\w;B}OCk F(8EOlU0B!=eN%.lj8%z $xhS.vPtye~oJ߄6IEfDcO%-C[6/6Ov[:tq?.[}=Ĝ~W[`) weڞ$#U`,&몴m)wYXzI-sZ2G~&;  4]4]"I Y9n=Q÷$⡶.k-{҉|8kYX_L#{˯L>oWQeu zзO& B9] ?n|*ĝhŒǐ<GaLZ|}2|8SKcptNiqq%0>] kDMP72AȪZy`|ǀ]hZj?`]%".5>s23^OŢFΈ_|psw2. _]gjBG<[13qb[WcxJ`i༝gvRԊI] -WDJ4o B<}wcj)6x"ѣuvOo4MQ'G&UtQ01D+Iv"]{DGWЃ|8/ ШB?# G+"}c> Ov0>cCHzuG"DQ֠!_XO>G~1 H.R)M\Q8EOogNFCZpKL,ze6Dmڭ\Cr-[V#Yg;Xgȑ3е{_J2aeW(';[$eNP;/T9IކBiW$Ʉn-D~ͧ:^c#jTU50䱲G74 yϵv5I2Nn__yZHYjz}3A]<ԵwFҲX mUOyW +`x#NaܔZm ,H#1_NRcR6>;~0s|dXuX0aa6>wʥ$VI:~8 Xv`]*VO!LGT`=pWhIm0* P/M!8R0 %Nɜu`(djX=:evÏU{ۨZz!dVyZ~4"xleǦgZ1ҙ'?1d?cݯR QM{tD?Rh4h-|0"rB# | l 0Z~ }{2y iITڿte6=+5$@ʆX%2ST0bד5\)>3͗|1x9 Y}:vJ >3>"- 6b?,`$8jj5rax~~CS[]: "ĖTfƕ|Ӭ˵Q]6>0Mz -1X,9-9&|҄-eB\Pd֖H]gїU\nJMv+sĶ҇Zd+~X㎃2;*BQ/saPTka(^Aڊښg.琝5 gI:\ ȄK)7}dƫ/DQdum1_ȧQPpsg2Sb#YM51b'ɜzkd 'Dl49tBȬHD9 ~ŸSS+f0۞._Ax^|0H K4{t1UGh FAL FbC?/_5GdؘgZY(UUQd~ %5( ߉GUӚ-62(Lcue Jh_J:7>ѳ-~ޮ)yn3T注tKQcf%W% 1OȀ]@p>3ϗ@$NEѻ1azvpo" vrFXč1-@!CS$^HnlYp?͐|6r4%c\9;v2n2·h-.q ?n>!xeyU%bHNiE*jڊ,RM!np1Uo>sn!r@? ieE@Rn$eٍԇ 9>k|UB8i]Pv X3QzSR!1M1nm3d:gq#l)V>jzn SS5=@N _>ps]B5KDр(0^HJ3)P0+UQB 8$]IG%j^Q3`،vZZf6^dw.c}9n=sVV\ϏR  |eV@WI]d%*);|) C|q 0v/yY;02סc'$xi RT I>5);Xb$F6YWK򻮴U{9E`l(*G"@tWkȄt \L8 r2欮M8aFqSdz *Ldut}\"Y\hܧ s[F()m]ya5AR՜"GyIA BcY׸p6mle !bDaseYWl7d"k)OxaI&`s17XIg=?˅2 &`eAU8p(r~D@qKPX72V<' H!]Oah0T.k R[4#%M)>A>|3Ya8ƀ/՗m#+== ģtBrͣ&q4JI2Dj)kf ᠗`f<4$BoUDԷ z]ڀsySLL@@2Fc_1NExQ]hv?I< )ؕ-!+jAC鿟y N}t^8N;e`ѵP4& $N9g]G[ۂ&Gk;dzt2?kLe[媇ѣ݇Qk6i_e~D8XVɋ~Hlp>N3풧[DގOӠ~pװYWt<Jk$Nl=4J#G!ϐ}u+\\ &Kɧ D} ,"s}ڝކWZ,#Js+!s?w&W6CAT tzfNF#AT7,.KIVн^>ߵZAFbf}!TX4˜~s @Nq]jz1!""-Tr4/'Vl;b).Ϊi7FzIJHt&XA`4%g_~VޱftDLb簆˔I` g~ʤSjNkF5O)%|h9ʍ8X&HTDڧ[vbë[qRgC" @V: F} 3 8V eC{-&3{>NX95MnFVQN u~&{ 6B ]{/Rz,x14xR e\@ b)^A Qۤ)H;"Ֆ3yR%,Ih4xE<`NM4֢NP{`,th$ Q˪Je%8;, ҽlU$_S3(Qit.N@1p% nTiL=,n} !j'yьIѽq}_{I/}:L€bgaiYS Ȧvj^:PR)sBmfsB^DtUTd",ukx&= r23ՍrBt2 -rU="OONi]}cQPe0c&Nk$J,FTL̚rp Ϟq hfx~M&G%Aϟ vU;3 w"7Jk$1`b;xwZ ć05@X4.IOz`z0 su¨L~dPBs Qտhcoj Tc fB>qsA@5u5^A \YʨƲLI M> /F)$HӮ1?3OD^(o[+%*T[[6>C7"+GjNj~=5_?lx6-O4ֶ?5gۋ7xtPE%2L*H ڿ3J)PtW6?94u޳Zq;.˸ʄ0SbH`NT|V@3{iB6ك>zsBYI*ZFV|9 k)6]$/$xGb~P^rdtWp.w9 dGE@f" h|Bu// WlbG{kBFٗhaV.D'`{ZWDCwqK{]!MOWWMꝷJΙ샢;D0ܮ_YnyMiӤqbVMl II Q{Uڷr:q͔yVcE'4Tq !Pم%` R.^ 4R+@[~N}Fu'b`0DZU8WJ79%JCQ >4 ,@z(5ϑXuFPWOY@l3]W1x>UwTل_х"{̔5YR(I3idYI#piqNXJQhNsjxSb}&6m'.>3'XDzJʩ(޳O),m3ơ:ޑx+}B Iy<,֞ڱ#ⵢJ``{:/WwUl_n Smϩtm0w?"ؼM5%_^IP-MLpۅmE=G'-D6y سE It$óm,iA=l;\Ǝ02%׆yit+%F@^-P'$t*bGSOjto<#z&OwwGfx!PPR@o# ؃9 `?ϛ!sQAY+(1ժXS_< YN膶>n =HV8.Tz#4o1%YH5xU#ed)Q>P帢2#oeZyEl|`3e,]cǁJ8>`P>Cyp~`3֡Fdomr (ۛU$=BLcoI(21*ŕnْu죟(;7Wg`*(ԼR`{jZ}_~O[gq*ٯM6@QL=yJ9/Q@бꏥ=q˃A>u_\&S?9O#wVū61>[G Uy^fK=_܋T硗򰤓i v{cw^;urn j(4,֋^O_j.@Y]Vlw̋avxVሾ兩|⼖- ~N@ۍ0ݪ4z޸@9yMҸw ;c85½ٻyA4;^p9}).NRGyo{SҠoA)GXTQ:% x}m;v3w>l~?0eEf%a+[%9:^>F >VI#|`ϘqS>,]aX3Ji&rPO(arVH1)d`'kP.bR1^sWA&DqL374F>,b?FvlLB)΁bj,6 &-YKi@a΀$YB8o=";F ߀= _T⪽}PҊY֎|'n~:KNŬs+1gAŒAwYXSnSo~4ܴ0V]O 4#Tٖ֬^Pi `CBR_X3qj,֋lcL>5KbhmJ Go>C|e$fJv޶8o+"mD{.1áMĵSa~gE®{7 $~֛6H9f>{Hvby t܎O9;ܣ{J'V#N+"O,@=8~_j+R%2@&'dhIۋI==EUh|H0=Wl,=S!ʾ.iJd` j,VR$oD1e4_9Ʒ1@)0k$G䞑pq [A¬](Էgsx0-xYJR0!S0VlH1 fnXȇgՐq@:xFP8P\)­ 6š,<" { Xk9]$b RR/"f;̝,nPa ܯ(BM># +sRdb&/p%S>gN<\{XY0 r );k0c )7yP!0;?Ϻ1*=Ӎ<Z_.3 ܊5#L50>|fWBSޝMg>.D>|R#?jCR7PI_W4=~B\!g!7#q*A'&:)QB2hXwY([cNRC:grys S#v~ #j =բk U!W U{Yr{vZ&'I+pxnpjBa9aKĵ❰dcd|972r$RRQB./TD@VP`s*GN)r \/%>K^ۍ+DP1녰CʹicU>ӣmrYB17q9]ge/]#~?%ȢYuHJ7YO5R`bb0}uFL3L䛘T*2ǂ/QGSX\o5Uhn.G (2ehuf @A&{g TvsSwGw-"Ӳ==SΖg ğ*1ݚڛVL&VXvڒܥ_GiobAK/F%?NZ %)]ʕܘNySFHTIQ0}vC/o"2Fzr^]y)qJ-^I塭EuTr5 hw:~yov a~ӭ!hYT 33N2-yu^C#(FrpIKl qS:$3d4O0y,nCvP ЛdƗpDq;6~I7B X8;p[ ekTzU$atzf/̱p"BZ{o.9q*7<=?|J^:8J)ٔĮ3ƼQJ2#Ԛ?5J_¢tr3u1TIeE)@; LPɠl6BQw(4d;VR*7TDsìEά(BӣtCޗڦ,l9}rI* Hq>?Jޝ ~Ы?l# *A[XNLw( ``ْUDO~d֝OdYr1pz poys$<n`^Y4"L*LZp jaڄY ƕxR׻j¶؊+G؉J4?~H",Mf!+,mDZi & +/&􅃵?{ީc+.y+gOÅ9梴V& ZұRi;GWגt{#Z/,VvqK6o:kwXr,\#DB@mxqTĸm,uHJ$&?f^// _a7#Yll/Wc=aGFjH޶,ڞ!i"oSP·'Ԧs^u~=a|Uu- ,1U& Q7#H:ե osM&GVӟ_&fxt$]jRTe?k:ߥF}Y~INϣh/e`WE &\<;ԉdS,Q Ħ'k k%sR%#Thd40l&GNwݜV*A JռHM 6q7B3JCx+a7N6hga˱YNr4{Ѻ3W?߼ }2ۦ#pfȲ?I.X*0! ޝg*PNϨ/˵D@}HeSkPEk0&57N!L"Qe5SHu?뫣c'T R,k>\[Ӱ@rTr`5t ~*s+xe,&QCc"mM aW+Yn7cl*\O973 u\i0Nn &} =h:> '[fJq%aMӻk^Mܩ0%Xf aaXiApk2-RoECͭ)yȊwS ɑhwS#rk9Rʋ.HR)3E 4G99ip2\(9 /vՏU;21y04_hWlfr3uNd'噖id1TW VL GEmkF !REƳ|1\AOA*-p^|ƶ>L~o83215kVcŦ/ iP6X_)v\zGv-x55:nB0>VLurTv,D$:P'F߾R{ Q=ːIbnt2Yv9/!DGS.!8Z+( Mzz: qkjYZ>Ӂ5{Vq4K'@tyK';_= jU"y)+ Ҙ n"!zzOuZn0Њ@ ;&P.Ɯ OF-E%|Xɔp Lu@ָL kktۛRؖL@"{ 20FbK41'Aq2R4*Zlnjv;fxoB0ݸv. +N¯Vn^NC,Gi'lO>7(XI57JG`#; Rs} yF2|-"|R`gtQcclFJύ~䚎&.饫ȳpi˻7ܞK^݅cWMOz l22 ɱSG_qm;M[츩K|(S3,|yZԫY5mVx%I7j̧PAb"k,Ft9;g{hQ|η3)XfYkpA XL&funpɩRT-۫#3XisRѺ|sNDAǗȑuB7zN:S/QF623Mt5 uƠG?J۲)s1B5'T'mÏLЄYP:( 3_( Ťv9 ] QZ*V٬ϑMZ3\PfZ:P,@ß CE$DcG=ܽҸ맋jEO Y6fGEʵ:p/R?bX3IBLD"6Amx TJSr[6GsS21B\79@3{Gvm[)6-q4N' |_na<c^2WdpaJr`_ ?>΢mjq&^XC(̧`aQ_Y{5ENDޮ/{B !laI^7YļsbAMMT)b˫` `zܘ.E kOD)]7CRc19~\kQcN#Bnǵ9Ӳ&=<*yLZp+_ت`Ȳw*/ 5KynCoJ袀*S w?!$uvpܸ"ȑGv]7U m j+`DJߥQbE&G0M+?ɖܵJ- a#_ a-{SxCXqr$_h8yMBDd5eRuOR~\֐V=<`?VU:: J(}]C-yWfyD4R73S(7'Hax9ko2nC]Cs$ʐ b0_pT6K[< LD!X8ԝxaiNy6%F%!=<k0 xg axu-[8"](neW7l#=HN'QyPC%g>,%Yr?GO8#%d5/r0z^HkĩHē69cI0|NâmPdY;{|v(Yh/~.DT0+mͬ@xeG#hi F1of]W"0ah0Dc!='*F wa5Q$&]v7n,ZG1'ƍO{v(,jXP҈TΑ8O N*+=~ΤUΟ*BR Ss ,oy@j%r;ⓕ/*8EE/8 d `d[N/IWe,* _xD-hQ* lG-ڄ]!pC|!LM蹾wsFڰ&LMb}5!H\! n+q@9dpu#*v'*V(w<ʖ;܆=zy ''|*PGL#(qz 5@ ^!/u_ylz- }K@$bt9%(HL<1K+__,>w&,nr? UyS|u뼲J!X=PFx? TqClƚ߃t#t Uc&e9 >maO5_,%I:T.'IĊ_?ֽYXOx^kYNMޅ, 22!i4#̒e|ZcU]aM M@(ЪN"sxui!/. A+#-@5/m` q:-?3%ɑϊW\% c:+O|+1uyFHn@$L:~-.ҔswdiqUr۹oV ,NդܔpD;GZV_~a]fiePەxDz9uEϻ+iN & 8CK\W;:ayBS0 ~ZC2Olo`q9 5$G G8b(U +'՘YFL3Y5ʰlG#SW)XvVP̋rL f<cJ?M)iܐ;]¸ }#ct/Z2Pύ\9! 4^[<؜t'"CHw}*ZRQ_jh#`Z!&XZ!A tC6P͊"h|G$9|*>$r\pgHFc Ǽj_zVoY~wK9֚'t&φXvL i[>L*uucP6{;*_ ͵&5¹NN X%5Bq&uۺ֗%V$9DnS Er>MűW5 j7?z ~C90 ZbÈͳ5 ?SnOl('?<e-]k%՜rVp v aMltjKai2!h_[%c-6Uf^abNЂl߇ZڜY*4L& Lm){(h+ !Ls,p:oE>\3;L.Y[ƲH0w&I|.]xO=*`4X",nXn`[[.[Փ`cUѫ!= PA7M ,۹ۏw I`bPIaWWdzI:\g-#aHx3wS^ܲ hMdKMxOgeVl)^I۰90죀ZdטEw`e(qSz"u݈Xټ A"=I$8f" zJ籒.;nAD@Q/a7j .$1#_~< CVpjI g:MD-_rnfbf@lQ9-S ]U1=dd ؠ(); ׈!TDRJ9{OFn|zp/QOpiQ{dZ8չIz߲ԢIB*`Go&Ft&G<š yfSE=9#qVKjǹ{=d¹jR 1sX,MOZcs,]6KMuāfq͏C/ @XƳZce%RԼGqAݠ"|ouZLpt298?mNpgMUdEnB6G@:t8JO*G%_ႹJiSjT`=fzj/3>8\Tp13_M"xq2|$`΄1THg i Q 7/O6}H$ P &>qhs&y=;w]~?3n_d뾪 娒PmF3Vwa~k)]*$RxD۲ ۞r hsZ6!E=Q7V1J/$ǝbf űķBRg@h7\:v"N dį^)+HMA3/8%xn^6lɖd8z&O~Dx5;X|:gk>,;/NRBAR)iRHcnm-$*ykaBeQ sGPqUb'fx iJz 7^PTњT!p%R%b6z1]xp2ԯD}=B1W*unptJªx'uSyz]K$~H*)kt>kڜ&uVER}alfA4%ug0:('ׯR`lXhiީfPR;V3=55OU}jq"LlK*L:Onie1c:K}~YkB) :f q'0ڸw ޱG0(P-Ve{3sU&ws#\EQ}&Jxx=oܐR% لqW; Jxw}4{XpZ+s:Vn8EPF _= ~GuT\| fFe5EZmͰktj fA{|`Sgs~He`b326#:dmC<3u`Jj=x@=j;'D#!hEE^! zUM1.Fe6j.L.0mbB3IU L6d ?vώe^&,)<ȎMv^$6zo1w.A3ᓂ?6W56R vƣ[|!/">VMa rOb:Dӫ8%umD'͗6 ]+l {O~ H6|ω7"p+ᱥʾ,ꄱ4)ƥД~Ju l{:ɠ^T~.k,ė6J AC:* m˾i:,;jƛٺI]mO ;"S׆ӂs^}SCn>/CtztZPK~YcGH4K{H2yVZj:4eʽ%e>5=OpZq.Ԯ휣w{3[0_si4CA+a/9neأ|_Ng %69a#oب:gO 'lgP_9~-G7:Fv#dxFY4jha⡓B&f7\ &ro4f)]~qU$7N209舶u0Zʻ2.=0 w)hOy0|U$9?L%jA:Achmx_? N4̭P"TvpY[lRqHӶa:pSsqIYwoNw 2w")dɒ NhWi`j22NkIw$ Cy& }%J:m5z>w\`mˢeM#WS=[s B 5BsL_j ْ/O'9I߇Y.Z]bxHt` `f:+nt5 Ŵ倗2ڭx VA g#<@^EIS)0+g(2ruҨ͡3j 0u78: %klcuSЧJJŚ,&}4kgz| ănXDD+7yjeȿsn?rw$TyB Szەl@B,&^\YCF@5 /˻lr9\AB/ F"G(RoJ#SX[ Od c4Dž\fEq=jy FU f YnCJKkb ˴d[Ո؅R WG"~I4Ub%q^2v ,M\ .=L wJNWo UCgmiڽ@ma9\8Up˥_`p>?v ^vWZ*wze8uvZw)n9,x9|x:%c.eHŻg>3#&D}y͛_hP}'##iJ=v6 k6sd<+Jy۷`zFTdII; '3&-Rz\^y9n^. VOy6ܙ#GCqbg^NX ^Q?VHJro?sk=~9mt{H¡{ߠX[1u|'~P LˆBf#Lf&zAnSIpe_PXjvՏΤKqNݾRgFlZ$'X &S x-ɤ~GDPSJtO&BqY 'ӑmS)%UCF/3}Ro\2fRX@ZT}`Ykڔ&Cἡtn3A5}z$=}|ŚD8|biiʕeҗU)!:":࢞9*6 st*YʔyQ̊G6i5^6nFe-l &=j~sƾ{lޯEnSS@duɔn\BbU"ep1:=qZqP, "Ji¶-irup鵖ϠB`Kdh'1fu4"7.`/ŘzXqT\*I&a]2ŨನF5UkbI?J\<{v^!ᦗjl[Hdʃ[{.a|CNwH1,Wڳ];3 ,X{?[6"zx@_>#Q*4HSNR onu[8& #2(xy\+N%&(w*ɼӄ‰, U8;xD `*dfkgKG_4@  a4_w0zQ/Gl Cf:/*ӿ=8g Ӂ{thR;ZLp.D6k/`*٦ӷ it/BĈ &f6B+= ťhl퉊x GW^bfF+}>k=XO]@خ6|{T;' ޲FѤ7!sr! j~L' =nGjp Uh Ӹs $mEgo>$]skƽ3D8Z|^K$#}O;kͨO ˌAKז>`Cp~tL:ngPa=#+;vbk|N1'}= ?˰ C%Bp_S*ӐK4'T6ڄC&kRqgRb31{E>B2X'}|s~"dԌFљ}z27e6$*!C-2gAp/QL}@/ų o7_ XlSH*]o*,5f.Oyyo}ui!J,֖9iy2i,"ɉN8HU]z[Ec9!I,[pB6bHĒ|s槀.owho4jD+=0oi(KwBq&R8S-Y)syz %,z{I `gypPܝmU榲?_QJB9lO"X117JMčȘcmNcR_SG)˭ XE܄ܢ6@0R [D_$?x+ u!!]\R'<Ӊgm;Xܨ(K!4c?VbDTOuEBWD&VvT`sgx]ЊV!I㔭T7)\$w8JMԗ* Bv%H5`K|8ZyۇL2 2> %޳^p&ȨW~ `Q4Z:\. RKR7*.v"e/D q{ .}aH&2ꅀvՑrlKLwqЈwPwr~ nw7^>39M׍ 6"S&',IU=lbY#O,; ?J(ѤS-d* $lL4_]#dNqMƈĊ-g>Q3nȯt}L3tX?GϨ`j%c5D%Si#FׂgP:>N#%=NWpzX+h3>Qp@anBvc\b$v:U38BRg/"@3ʷnMF s4<75Dfl $!(7.KHpAfP"CrPF)UYe\V酆ަMpF6Btvz[ctwDF1 xVaD|xgA25WHq\ɫxELf6/VKܲVa)غʼ߽  f.0 ?4 ZGOcʿwMLSI(Up3*J?Op:OD&ʑGYw @jCV)ugG4HBQI-*,D=6Aёm]0A@}2~94 !!5id 3J2,e7 O(r z/gŭ)1zV#7 N̗:ʪҁPِ̤ m8 ^+WQm yװo}ֱ-Y -L3XO g;@ЃK[ E7vtiOIi"g`| HgD:c'l"/Sd@n# [4MIi)G._es=r Z^x r8ٖ|0H)ɩpFWVHz 0?Q9J:@Y A>3 +%!r_[ 3vmJM4 QV8~gɫϼc]H;_NeH&2( I}߱0bGNFȆ6 FP} Hb(&lZ0V%_p4da0pLOA%s[UOU1e/q4~SYB PPSm T$]9-.1W2JI/PT1w:2ui/S≁ٿ/,-.m>H6DFD=!M&yp&LuI5G з=ؖ)"2bd*tI2"L#cvMJԒKڑ[tW tmDNժ i@"N }=-s==J`Ћp\U=r6D C &XL paԜEleīw$XcnnXͺȈ3e耜3=vQ<{JYxܲ DMV2eMVeu^/Y+DPlPwFj1SJ@[}*)~>xпZc4Fl;T %+E&Ԑm/ɰX*(DqÊ p&6,Y%5)^6Phv/ȏlb숑c{X*I$Yz=_ɗ@DC=P|Reף­sp*_j X@9db'[,$)Lprfɴy7"BCs.D?8t52$0gJ$XEL">)"YvI)bt(Wbc!Z{BNG@lT" h_;9"Q G|%og,}A`T\BF ):2E#!ޥy,\7wWTGctS\"-G͹w~bpR˚6UTn*]-_pEO$F{\{ Ju * OZJ<ҋ߻Ąu_th#B燁{?IOo' C=Y,25EjpB[}ǽۻ4\?лV/N^T]oy~s>xDRlƫ64V.d_ف^2뫦K0_ӪBsr/D kS1I [b!}|RqU6wSME FY]TlnMMt&+t|ȃGJ2ߥ78=Hо#92GTBba4쒽? < 3J]T [hOpd($`)'2@ï!}z j7e:UTmQF |zmIaH*(Fu=WxkHQi:DI^/QWA2`O3V92_I篷&@wEŦ5i3&_`0DzwQf0؏t;*RqbA#C0T6Igo[ߚ"3ċzRxSB`ȃ^Uכ/?BGfbkѾ"&%1! ?  RRfߟB%9=Ueznz:(nKoC*{G.vEC'%8$H%,,< [Ll,;=Lr&Qw|Ůۤu13|D'`38z)U#y"F Cw kC?=OmшD5%[2E׉F*>zه٭b`jGg8M}$ l~ <grA 6 $/0ڥ7 ˘Mxc痃_A삕}:V .E(7?ZX:ΌO^~gI*,1($\H۷ c(22t ;f. MOx'H\v`"=`(??ZrQy=^Dw״X E<$y<3 }..2Cr [cyU+ f$3; ܢ'YJQ?f  [ݽмz}L Rbm!~ 2@PbOUgaURy6'9eF{4z 碔jz4`l"id.|J`y*n%aXQ1guzʑy=%{(R |wA)Ͻ͵'NVR/ߔ6z bPuTw6FK>7h{Ndhʅ|۩^׏$Rv{QB,znQWc"0eubuMD}~<'8cIJ:Gr@u 8x\s vD71$n+R>v܁6ط}8' t^QQSOF~5% H(ǝ9rsn"_x8@5hXV_>kۿ--2DBtxq8/M$&o8ErgAZ}2pNߠczy6 y|3;8O0+XiW@)#:z Oc +7cLzFL]{&_ Ƞ}ռ-Pc$aY[[1"`k1}fA$ĸPluqP9LJ$k#4=8%A8dxݔ4єR2v <4 Kxꩈ%t%`՟ѥj&gGYG> 5A8RyXFT>iڷB}[W8hW`mllOp>U=˦ouvh,tY4ˆAn ̗bBޖMqEM wsv{ D7b 숞=T oege 1cyپ7ɏ +Y rmZz H>5:U\vUE T={G[\ n;_3[L352R^*Ï) + %LYU#Nuu,qmpס1'PvW_$&n"V)xI7vt=FjyjAYgQl"P:Pjf,vW DS^K Cm+x8U#F:rbtRHȦR?KL9͒xw[(! w*=±x/W$Bˮ4p*)L~ t3X=׈MR5P>*hџ3?ˈ܅B[nB>F ka5[xS1z炛D9O8c!^Rǂ9DAT6Yd MqY90fHF~Y8}{j#Z2e}:mI ^@p7#;lpq,φޔ"jmppۿzהz&f2+vVxqs\.U(,w}]^qie oF"+>h}vdJo29eK` + lG2!@Z Ĩ Rʠ!ɑLT^1!'OL5pp)ɍ!X h;Xgn&KɃiR7s N׵72|ʁ\8̛ 3S QxWؚn9-<9쬊[nN i/x/᢯b*`1?>Qp:ǰDʹecsXɌ%C=9(/5H3I 8#Rg^}T7fFgW -,.|rNGIO ; VI> ^ ڴ[{P*uU4WZOSoZleL" v#AF^];2`dd6tow(M枤Rytun䪱` ȭ&oraU6М5AV2}F?YFxNYLOxYݴxu7I x Ryqb1L+b.ސ2<蚓 ;-;#&Rq(C?er{7;bKY].2eRj6lT /~_ WD"!odOE Ȱ=BV*éK_s*[[4b 3햽iTj 9}E"v]i _O`Y-fXc,ӫM]}``i7%g" >ļdO㥽>as햙jgcS)O{n~VLvרV8;j]$]4D2_M`Q o^Vt<^ ;(Cjۡ.y!{WuW^ԻxGѠ sE@n Q)C;ӲÄ!̈́(lG3{YZ(6Ϲ;9Roςqz epIȪ^/e<| DJvXkv%4;S>?rZj_h AjD Rƻ|ѸrBzBH(S0|&_(g뷏PMUS| wۗ. ^Fo$3¹KAGVdHnF"B̒h'?rly~O`21) o> ƍ5R 4W=>2{.2a Zȭ F!0poXG=vk=k}U)OURSrett%!/ƻIU@zwqz =4D0,R J`dn/$q3XZD7Y|U9b W÷3br":-1ۑdM!h^¦$@XpDW$c9"[ -/U[5~Zj#l xsG;{Zpfϧu m#.0qJ[D E0=w-L%8E=|PaI0 WS(axd`@"Ucw6g#];^1juiH4L7C$^ #3Kl Q%a{hKIUy2IR|_-X&$}HGlTt)hrY!rE=6jMM0y˃>25i`.Lx1gA|Q"oϚu[cm0RC?&'@HUy}jk#@r^%~EcO+.Fi`y"_a^ e2| 9(tkA U>Y*60;Yj3=pq+}[l gӃtS6/_N^ٴu7H@zUX'{&!L[tZd ix15JR}4fTxiƢ'IWtԙ ڋtGE*$pD L%]܂B 5Xi:p,"09c~;7L2#{CQrT6G5ue W?HP BX Ns}xF@iuh^m=jg-򞊐@"\fs؃Kث1j퐐na9C&'ғ"}DzM!9E G]`]9mxVanK $7sqv>YvOzT`r8l<2#ߧ0̉yWηʠVuT4Ny-}~*%rU\`RDCس,cx۾|lWlxb'Xdb@y$@]a`O#.ݞdF5Ý p)i+8pHP*&ǒzERMP=:*Z 5<ŦDIG=<%<AˤٗoyV:cGRWWt\t[2l*dd󕴐n@kd XĢs\]}iWI-E8@Љ`ɰ,5˶+;Yw} =gK}[ѵL")8Y˨q0q<#,6[rLS^b}{Žs8M 1Ř-1 բ]!Phw>{ɔk<332{P0MeGS\*T- £ub|J/>-2}'.=jFJ#[t0D\ъ%P"AF'-bob,qHH91w :[\+tȯXCs'_K_\Vczo/jxDgiRJ,U|}*6)B=Y y'\wp4De2&} z`оD܍a¦Bbos7L[W7."yu_Vg>Ԁ#g@DqkArjRAh݂E6 & x-NTkX8_-Dƚ Ps7hcO)Q e]柗VݤO`T㔥&O{ U7Gx3S2,@T?*>Z%,#~\KRnsTE:@"HVӎfX)$cEڰz~+yk: u I19a'`X ܢp2y :7d]D+iХ 0g$rx73%ozW ڊwӏ$2L̳=.OQ7g:)IfMO\VMڞFX]M/jM-F#>H3=bz5q@j&ۅ.$N,ba%cچFcfCJ1+3 rn+zJa7@X0Z+Q%dl`tƌ[|dOnJ&6+S%Z#9m8=]o#}˖c種wo/֊;hc? gT}:O~$!IR ),klkgU~ljdf[U5Lr KgRGqܗ{xarC0*Ib|iנY?$bA7q8ɂh$w Hf-7݊o~1eC:><&WNXl렊3/s"} sVW<\sgWH{C:RجHw]ϙE v5y-ffe lM\/FQ"wֶs!.vCV2Uٚ m*;hмFP{9> wO [[B;ȶd,VׯPRSu%](:8|ir*W8ti'kAYLct)h6r?p!SзޘZ 9szIaSЭG4=݆zr.7+.fW1>+ӆRWO7<an#ԷL:c,pTϹb1Y╠ )FGԛTGlc:ADji9AAIҶ/M\hÔϟ-3ߨf[Rhb$M"f0JRZ>|!X䗔jb(*Avs)&9Uj|ܖhbrDN*OmVhczq?݂4D`[{#?֏y7,}H,-UmhѸCWb zRA2E6s9 mU4Y<:DoiEZ\ Ǹrj7nTo~]}`!8mH^!y=X8<񠔰,kFx N,MqEڿٿK==5Z|XDZR)DŽ~BEr"b²;cXVϯLu7d/RM *]|vNT8T~B<1iDǒ=DݴIfPI'F!sI5ISP&#v_&R-i򖽛XuG&gDP uB_)L #]2 v,k!JRe0|uFr7U˼Y@%{W̯N/_b2ze)a%R/|5r '(nx^2cfl}Oܓئl?yBTct27GLsh_ yOyUWOJĦ_R(Zڵ$t4 #( %M(̉_=ǠrwMO8%™F?N ezf[=B+Gɠ#ؠem :熋ICuЅkW[_WlI6p# gA<~Fۭ.5}ʲy/FD&j,Mؿ!5G&4s7JaHuXP gp#T1TƏnB0#@zW hKb}<.;S uVKD0֬MF pܹ݅|I=jEfH1U2^%mxP:7Wִ_/I[BHtjЏM)2ϝ!̾y 衝9}ع d&1E4t;ߪmBQδ~Y Q9ЗsDž (cNg]R7CkOq'5J|?hH37jE[g~UO iƸ ,TFBΚ &(w TNf[Ԓ/_];Ҝ,bH8f^Fn9 Nyl=5I YNp%0S_So ׻ٗwهt vW\+<{Eq^5k+ہk>xWxVi'~BDz17mVywpM,gGUŜ ^]]SL+̟.S_vBI@[zDw :FzXGDPd="-q+'30+Y_'x<%`8/̑]\wdM }rZTxMHд~C>]/>otc4nA:pK!sup0V-(wAp2J %${gh2`Uyl5>ZQ)jA 4 Rΐ  jMhv(ߋ! F1 F]|s1単q2 ]9Cka7}7%?#4r:` P[ʕ,`ODw+\iT)^'3>kV߸ж;?Tn"%3pug]Jx㙑=YB}v nf gz Rͣ">YnĘ ]dkMIIƯJC8΃sqX6&i1%`;cԩaGX +X o7J>DT$/)`}ϩuvrX #ܒ +z|9 [uFAc%Iz*ir6.m6RHd83d(FnCJΒMgIQB suj-0&Jqr WX=B W& 9_@;lB; O[. CыJ "ѹ7HxiZ0Ze#>cVJ"u_0]>0N$طe*0Y.qjÐإ&ȜnɭïE9֔fx$#Tr1C+M$56(ݖUm~R:c9'sR'w)YܧȾa\n8 t063b-EkD& ֥Ó2\e~nM#>'[ Q! ӹ\w",nVRVE.\0Vxλ!k+Qf~qᱝ~)9T5bBį :yz*g$2B=S{qvՏPsk>;W)EqO^jK±TEF˹3j[2&yXu6 #]I[ oQ@/(-NBtJ}#\y{u4T ٽv4 k ڧA ؐ= }׎_SH;01]J(ޯa~JrkbQA#4ȳI;<Vt~D=̦S5s7˿=tܦ ( J?~AI@X=+{wEt:0w@nIVIJjЦ.ؐ1/ D[y{ c}p6=F"6e7Ճ1Gt %̅tԅ!qGN=o喌yCr γ9ˌH1 3TPըWAjڀ‚ߔ b|}mBa)'T$\(اSҘNaw[V(tx7" Cs1EX\#t|EdŒWoK<[4c̣B0R?sc<ݹKC!?@ a6 YIT)ZHQ0!IseVݜ= T{L ;HZ緄ܘjV`bHi/MS֜JJ;CɶB8aqDcJf(G5Zr[k4\SϭZi VV+dňcn2=t r :WU >F ҨA魯+iRa 2&'tFk_N woELUs9<'}W0e6# \ňH̳^M[{IoWZ(f9BmtXBђ_sHnoϩP2(<\+S)fxm:2i(]Lu4-h, nD߳Y!Ü.SyG~yʶCfk1ssSK-)Iܮ9vFFi_ZU :lR8D9$iz.d_rNإL|%90 4h*7FZO%^_Ax/o}8 "r?h tw!و Nz8 -a Օ.OZ>9hKL KDV.5>')f%yghcaa{u<&{ nV#vH+gw.72_Ii`$#;uz '48EO5&8ԐhZ{A?mU`uv cR=-:h/o50iOr}0H. )@B5ő7*#b k- <̚UۇjlG) a;׀]zKͪL٥`Ji{B*,q%60u#`̹/F "Ѧ1~M4IJ+vvˀB_= _) So7NX256Ŧ\i8d`qBpglv?؊!zdy#,F|f"c۞,P3wu.=|Fz܍aL8} Ȧ|k\Z :~s/@cxPv$n1K0GpUz/ԚCv C* әh2KF鉈r# I(#zOGOŠ]zȒ+xfOeeHدy2FK dWeeĦm/{Tաf f7={5WzpeƋ`9> oBILlC:Ș)ODըO"J&= ).F^D<ؑgpggU*EȓPQMZ]/-%3 ѓ9홺!.uяk4 b@]BdU>3}xعekr" My5%LpPN2VČ8 }T\B-0x5" 6Ux(|?=1fW,Muw h\3]_dUc/J kw]DM |#ItdOwVgCBnlzKNjNrjĊB YvgZ$]>mOs{9'ctRױY(! XQ~kvo89u#QCJ~جhzH67 xI޶6]DUVM56\_G6=Mj X3H6sCt-=w+\KK>yx^\J餶6kG8N6͏m>#B>9F⃕;&V"4+=\q3o)vZe2]8 ;/M|gW>8~[yzZRa+ H}ҀO A55 j1ݮ97- rx\qyfH Ou'< I{ӆ`BrQ# @MVn;|>,̀Ir3*4-E*նѝrzM,K ϭ_M# dR4K~鉺:f=]L}s.όn".^K_>DG~5kM>)h! !!knU@zf kJpcMk2DO/+$7A}N4У~@ܤ+g5+,Ngo5o0z6ks[Rg1v{1rK+Zj _\]qs?fh?w㜎ݷT묩Z OQh{T''uXf['1#(2am 4MGP塓r᳧JP2 4Kψ[xnxE1Z8\^o(uB{`E,Z *YWsіөh8_ySxcdLJn%j:ŮT"\_ˆs|_fi|hǪip䑦w5yhw!*>6,"'=4loY(Imd dx#8] &Ӣ(|\.u͉|w8#= {x\*E7gQ1xNZbo%y1D 2P' T&b)e{0ѩ 9fDM^`fEKX> r$F-ܡyr2^;LTXZ^!sAs8̢((`݀Uptj.&En#"KL' CuKAVyCՈufdVU;Qʖ߅t@Pk㖛#mb2% 2#BPrtrZdlV?<ы'@R  mB,χ[9ry+;$VDIU7&%<9gS˼=<Α ש0 @qv;ۀV!)] Ÿc1TO؋jRG"U3&a! I @vħE~y%k&gq.A)Wo`xy MPDvWRZƫ#j1,T]&ޚqzd=fZs\uSHiY H:fUP@=gF*DM1aJ-gkqrzᷲe[D#ψ/gRLƭG)yb-檅')3y3ݩFDʽcT@kEDدC*癶ЖSvβ|q$; io:L!rW1yRNP%z>٦:rOx~A9g?>0y1];L5۴ǩwp$pSmQYJʹ~% >W76.$so=>w|^0m|mHw;t͝[R1Y?Xrt=]~ǴO})P34+kWbz'/R1Ci|餮N0Ż`#SJJHYHA|bYa e??]5l__zw~X<hi; 2q@EypXJ8TB xtynl39;ܳEŌhZM6;諗vhg<̌F-l6vps$^ղs"c1ZAr{8^XA*s%qGaBub㜽*fb902"Wv9=f)6L>nJ#z昖cF !Ԇ rSპLK&djX1nD#;@ /l_2%i. Rۦ̘q /܊"};wЫ'9 ]&!<>^dEﻑ!"2 98I\|KUS`Tz R;~ ٧tHeL\ns /h;0: J#xf c<uO$ͷשn:N ۾?dzЭi&CϮ5ƏU3q{)$zB'ek]?>0zze)B< @.RuGpoCCr֢(h|KRZ˧,=5?r!8l,4^m觴+?6MM{Y5ņO7HrqU')\xȟUv ݵb%BrPG5L8r&*fT֡ 6Y_ ^l\!%Ȗr y seƃs۽KL(uQs~՘NۿńLN4Ŝ=yH'x7m'f^Hį]!f,w>ȋ )*43Koj;,Wk_p@27wW~6LU7NZGTd\cޝ{pGkD>v9ͭYRExkGeu c-q⪀)˗%e(9{֩v;;,ushpb2t8ǿ,{P56 O!Ҙu_)RĶ0Rq6coAxr)]J2isfp!5g&+jQgA[ S8? =*;DP"tǔd+NeKU=R4U MH \[gv'hyfFFle7T;c2uYNAKܞ)yu;j*)7I?k2qK)2)ϩ42n6vP;E@n({$aRz_HցygM]}1QڛH'>ަO}B'pj%9TQN6ߒխCِ 7N5ڷf%Hl 1v]G L5lz|Q#U\ WHbģ{IaVϕIVM6ԓe>jޏ`іVfLPl۪ZMͼZ}N.3;1rvO+uhr'?Q Qu4gxeԗI+R! 'D]tȂQID@]ejE>Y!@f/pT_`Hsj=V4o1F.qcIA?ǘLg "< uYo9DFYhs,/hʯw?(8 VTxNnͬLũPLc3._=NL릶rX_.Kp XQtv~]S4ϻ{[z'Uf b1)kmgK.QD&6-ow?XW_sx %zZ"9@9SR/-#}7 (QX.$Kg 1?O&$żwjvLK&.-`=VEX.Dڇ[bj?(܆F _x%S)İίb[i[1ڪ}F4 Tsogumºxׯȅa4jN+'Q2@EbsaThP[wx'S6V#Ӛ//~lβ`-])q CKg2_N)@j@hn-7@@b{DzfZ^} BqgE)o:JˮZ8NO&B8Y\iH0 eSy>}\ο8)ɂMj'Ank NFec| *xHDYU_bCPVC]N"!G4ߒmkSɖ+rva7yZ!&0܂s 7G$50Z-<8wxryc I;d~n>z*dB ?Y0FKzK@-UQܠH Are/O˩ߪu].XCOBaǾ%j$,e>T.΢iF8\IIؤ8D ZJֳl'ĝ "Ӌi,oӾbEC.W%-g/Ta̝+l-N8Ph;\5T+wxVV!18v7iRX&s'ѷ#cM!dO;.~ ThHp 滖4;ϷD" 5Im9K3>S{:kyB"83]eMMT/7xR4zDuy,m1 Q]2CdT]5G]]Hv;7\pZ {bwoB=۷i ) qDFq,FFqw3Z;\Iu*/{yf(gPE_(lHή~FO:(\Ey%!h)(3sƳ`W.&N*#_D+Sؔj2 uEGsBp`zCNr@"FLTg;\Lȶ'0DsοUW`4v.<#{ܱdQ|WO o7ls#jcv&mxU{/Jelu87OBfxc;voY;9$ݥ+TkmAwu2@<Y*Ohn:VX2="|ɏXjELۚsJ5VԆ~%1[Ý}ͧ ^wnf7I9:{&%BvH; O7nǠgJQ y}߂\1Ȗ]}1HT6]Hr 83;{#] Wپ oPmHK $Nmbyeu0h{!Dz8Uj7H >>p'CtW' 4]2( @ ϓ&"H-2Ȇdd#x1çD0Xҷ #_j]>ǁ뺾Ɏ'o,.)*E/96*cK._3jKlPqD0չ.fCM6EF QGHe!Aqc:-/D4p*i^yKה;0*|#_:bn@fpHD%q-;ϪOZTѐ1@}nj`%A:`㇣fO[_G+얗r~5UB4Nl8Y; 1w$5pSd#x #cYePzci]EoE.37hb .8`;&ʪFKϼ&흒EQw.݂#ךJQ<v \{B(fG٠AE;Fqf>¨+Qh񊛙-'&NƜk"~j|w4_3шFq>LHHu;@Ȅ Y#kKhC{Z`(՘~-ȀsRS p@ͳCykO=zX7NOAOjFY=Iȯy'~A#i 4ؠE紭SƝ7:$abuZK>vXlś ;4TÊg˂v']c\Edse}h /MتvS }0]ͺH&s4mY[k?cn`?wweǡI.Gt'akw ;wdkκѰeaT Q f~U LF|Q},4G*ÒQXi%$r['> /e`>~#8r\:`f BE8AWL A}Cj bԍE%Gu]Dcy]ȝVw3hgs:D>%1Ƈɴni~7f z5(93:6%#T`72,38 4,܍0j;]%P6gLLbP]Fo+ڷ7Mcgڟ{=:W'KiKq$E?HzL==`S aO8߫9cX(< ضq3/gCaWe绵 8J>H o:.`g66랞B/B $وSll M-Ql {mz-%Tz0偸L#Ȣvm,hݙE!ҙӼyq_;/#HCפKE,sa8\?L=3x. y#seefGWgk꽺 VUNqfSRWqQdžuf:|u".]IhS_[̟^a"  aοҸٿÁi5lh5) }ebR]F0ҭP9{Y#K̇\p=vlYNj*Kr8ZO,c8j{':DWL^-ރHV4q(@026Ge}Po 5N7*whO_q(2[1*tSY{`B]QWV$,u{;p?+yԞKR4 b&S,m =C ;ݦȚD]e oEG_vSmg 絆NDۑvR3yߚ#,LEK .ƀ 6Տ1M:/ySNczŷׂ2;;_lȆ`n;j"RxM.9߉}lBUq-*1's.; FNVx+j93y

{xM:L|PJWxda˄A.Ɓ!HُTm MՊ)Y8۳A L5Δ*M>M32xM™A? |]-/$N Aآ(t\(}#[t2ޙj"6 By t {kj E!qNYv44NRҰr /9S1cB.}*3A4Ǒ /Uo'bȐd' j K=rUVD Tܙ!Vxy\|̹\e$}CYӜ"swYT9$AChd%tvN+A嘾M1.^tFǔ~]M*܉㜢N'-7EU:4=x{pZ!T͙ p);~tvzZوE45mdwQ?9N@8BjnݝTB@r>ov!ikwHW{M1W!豣,GاF4FL-ɣC!ҠLh| h;bDEDٽBjZ#divTd+@-U'HGbSI<LBhI c?h_ZIcq /(\|ޢq \mP.{-S՚n<l>J)XŕA_Cyo]!]cJ׈'{ 3N1Tg1:ȉ6@+ِx%GJ@M k&B=43Ҵ+ڄ-`#އN}z-+bg@dAzynnSZ\u@/޼+isx^Pc'8MFr|ek/ZPΘcOqIz~Wkt#m8P㛪鱏AmcSܠvx|"5#| ޟJq6rAdȓ!A[ C8%NZ‘](B2H:$wžpT2?$9c9VX .6Nj;86c= Z;Ns$!TqCj!ҐtZ/sZ*Yҳ8c L[Sѫzi_\x@ mefN:iB9Vm~,<)w{۞z$Brܙ8"|xJ6EGer=4i}NWgOJI4EQsdrȥn`Q*K0@JZuB gb{@h;Q7\:ui,w1~USֲUS S('$0lc^,:שɰ, !aKtGN)Rߒl@~S>Q'+[ ~ݎգ|="vF))ԏ䌇t<[c,|]5EƖYYKrtkaⱊֶz N5 {u8 |}~֤R|x5g.z5JP쯅Ғ̑Яs@ 4= Ιr1&3J#6/%> CNA\ ig$'S,!]*В1&#[=I綯Y(2??Ȳ[qAc۾vv_/u5 :X@dqǥhK@"孮/C:IH,a߀Nhn 0wN 0}^uQ\NU xhkb M# =[`Sy !{`nw!=@GJ%35=5SZs=R \^\rQLziW^{{.%b62~t,UC\ AC!j~NpID3gZJP5jxU?2beY lT<7;Ar 6᫗Oc$#_nj!W }ga=/.דZu8Q52|~i,)[jxsYQ5 TY@E]fB0Fvb%mū sjw;zʨQ ( 3)Q瘓)z$/az>MwDxƮ:2:`;ȧKmH21yHU44Bտf+gV ލ# EҤ,C"[wJ֕{|)W:Y3 f=NT<_h|ڽlQ^:6R9>8=nsr|2LiaJkPma^++w=̭^lgۻZO^9I+-cm. 8B mh,Ցũa{ۑhODy PCWaMWbY-c0njH2wYVEF/|{NFҍ?ڛYX{= ԪmdfwJFVp%k"0kaCoz@!Uūѝk'K*sZʶEcc.K;{<X94xv:yɐ]aR+Nxb9нDzMICBvA9V!Z\ \(}FPc0 $%L6?\@_tL_m 6XfS}\Ҏ.,bkHB%٬bǀ/!p3'dz6U*$ȓoaUJi) *P ԩso%ݵ u꼈;.E9wnD5BF~P ;:Eud`S{|&ݦM*/EO ~Rzgn[(jH]5U>{won3zFۘ7ed%*q#6@*T!U)U$|SvX{1o9-TVGYHn6 $KF9w@vUJ36:!SфfY#Pv; #U"q4 MMR|@Xy>jtmeyeR7ElH "ĺ V"M!J0dH޸ [}zĪEp,=(B{:#xm#21M2255pp19̟Iv c!1}DjҮ]"l=5V4DHdRXӀE_WQx ֘}mƱzX=lWup? Ɖ+ƣu/ҥh, l!؄lAX#"rEM_J+ U%C`0 BŁy4m`C}6I愵irtG/C:Ͷƅ4U^}PZÐ2ݖl0riPvk׳Yܹ+M@2NP\eg28.+h1~@}oA-](c_PdHf2eFR#uh8SLB,ɡ%ɿYf¥ؼ |<Xa>gP#I4s*6}p@|W[9cR, 8l-h4d"@5Nc埰.xC"Ѧ8RƜ{JHQ_&Yrqw#42_!z:!g!۵m+GbiW@R_b5-v{?oANWҷm0aX%zsGOz.=+FX9]Wkc9?}~ 5x66]n#V[{eB?`-c,ߎ #oL0M;cCEGZ0r/ӟ£ KTҁg7s*n&r 3=- G584}w0x^ݷ Saa{:T#yp?;|\[tkLfJ9UicqbMћs}Uܿ7 UÌ2 Fve;t* ,&)=ZAldc13gZ4_gTwaܗ];3T[t\MD`ebnBpSL򝳉!<~Q YS\w[;rZFnVp}lD_Gs߳1ˆ!:Kj\~w{AIHCen!W9-ޯJu[j(3ek.W*Й )B>L2'0y}ץu\1z {C`>ڛ2GaLz$mhQz3r[Ձ~Np樉zR;"$z'm `L1( a:DhT6%B l2?50 tFmV;+]AJ̕#O+6D]MIS1 V4%ڽ$d602sW4SB1-q2ͳ&rZ͉QL#"Ve(*o+Av|Ʉ qgVϡTfPݵ~ԄN$!mMHDU}*vU9-ʥynV-zg-0f&Qj{ f>ZL?mo?|:PoC&os20q:]FAR95Bh.CIߐ.-"W}K:w4{;_zp[q(ۈ08JkK;D_y!%f!Y^/W, E*6J4F- ^fXYPBZԑWL*$,a-LC{oUT^0d̈IJ1 TݝT8em/)] 0Ɔ3E}s8th}թ)9dZ{F'Crç7b5MuJI!iYͷp 'w+p=ӳG_|g}yl3@ y6o§$o"K$tKz8 D@DY u^X6>eDǸ}iAƛ%B@ps52E.q,T|մee‰w/b D~u) nQnȞ)I9&02[J L}-3E!2-rlw`T%}A}Pv݉f9 ׎﮽ZKO};,`V0_n>k~D) l͗wY}SzW}/몀9Wsk9v8O3Fɍ?`5/olJ&/- c / Ck؜(= A<)H5'-Ϧa ЧxT)tg):LFy.0>iiE{0V֙30b]馘|v{u >m*p^P|$ o)e^cA+#K9U2-'esuZ$:B"F'IY<4]RuQWÞ(KZە2C4./`7u{0f}GuǦ..ʳB_FOO2w_DAAdߟ_9ҘΥ+D~Xun;m`rp~Th`V!NִرT^yIJ`c oʭH qQ^ő8is|.m?ȢRts>m$3f*Tg0_B-m#{N1=^nmea*rg3E]XB# z}^I@@#צ*mΗH&sDʥZR l#)A7!^O* dz ؎φQYoiډhmg5Ɏ^s~&Ĥ ?jC(ORi +Dѱ>ԀVBRZ dk|} <7$'[x2<>qOv;{&!<ݠnZ&e92@N:Iزj\WsoIePK!B6aaDZ.-\cjH86| _Gm|WvXG*A쿋D[B!m-f<ޱOdm)vnO0V޵i2Ҍ԰KSK) [o,*_Mz*]r*{r WɄbZUU_,2Vm7?ơ4n׹Ius.t7<6)9C?~41H ݷ5tNe(g?| 5x%[M/p}h?ޱ֦k.`Y3e(3va824 މdȝ|_6MxLm{9LI[*a)%ϚلJH"d'`7W D-$am[9& !zJ`-'PA'cUPe [생F‘!I12$逫;;sVOu* 0Gzr&kjk_vmG%e'F0߆w_ɭ~+[_p LKWe| 3|V_ZZ8oΧaD|,ԀTyԈd.λ ` EևV=KEC1xjtZ簿1f i3xOK&v46sI·(K4+-AiPKt n ѫ@DZ:*~ԏ2')|~N^y)TJR@p'OFd2MI2Tt[w̴<бiM5~U3)ާ/ ^ξS3iNk DܚGn?^Ga0)lceAi+[1e8UK Vhʬ5o^qeeBn6J d)zE\)]>d }O `Zt-o ]S j=#w Dɼ$l R5H{[hy' }Y1aԊpḧ́;{Y#*А8h3F'=P856IJF0&, Фp1u3|9 p]AgZIꩪ Xyu~1ZybOEzـf[6܎XHJ~yy;P`0%^]/xA3K9@mUBm ,3# k݈].U3a#1"$-eDv~c&]IfX^[Gx e#.T1]hƕn3Ev!#N/yuc`o7OBd>o1}/Rp %kXFmbO5 Kn"E0br}\OD87qɊ #X3G\*ъ|Iw|I <5 >`=+U&اvWb |Ni{kf`]?lIS^|ڌ@*ô(F1:/ww<< Պ 25I}.Ι'N(`ij=&cc˞EI~dz\\mdSЌ.e\hn<Ѡ(B$/4lc}[WyAfɡR>྾q+eg(riF0ՆfP U)[PlCƴ%* Dj=OZa$-F#[W.5l@kwDɺi"]%``K:a.au<;TG DgHG1M]9ͥ}K':h pr㐍9Cp俫1m̕zm^vqʦwp0Ō:4ڜ~XMI"]ri_Eb\[!̈%њ 9yNt}P;yLWNRtUdz\ɖAI-B[q>5Nc;egchFH"뤆ˣ\rs-`bK+gN<`AE2y5]t.1'T(w#J:^!g}B0`mkP:~ڥjc\ط(yqi0k8n'\d^g#,%>0㳴u1K@ o)H!ĝusZY>&tSIly. ۖ}DyIͮ SމfdV7U2휶cڌ&J:-`MUVE~D7 vd)O7Dq ] u!49@QHJ/FL8eWdL>6̾ܛ"X:)j!Cus&5}m;%7`< ~.CF)RB*!eS'P9E&Z6/]x1 }mE6uqp ] HWLߘ,y53ɀAARMyȻd!a<+'W/ x0"iJv7Vn|>dC fTD+`AOm# whӰ]/lEvyWCkLփݭu%=D7w^}"FIaɵyO6PᚎJ,0uMrJ255Ib5i35j\e@FtK)VḍmA6Ъ6Bm~_3vi}=!_B*8sfZlxI9`a@f@G2FyXvQDtJ/-|[X|딉;]$b_ x'`EWaY}ҙٟf`pQO42Rz봄(-stbӒX߅+9::^.1- hH:!R}E'ᡔEޅL<7ߪG Us3{ &<7f*PKSK tXh$!7 ʼv{)\RrhF] 6r!eh_TK7`f㵕1ItŸcai~vא ?BLȥ# e*}<9u@$F9& K_ Yd4qB* ЗIP0h4! k5n8%9SP*@_e@vݪ%d3B*=C/#ROǡb$$ ՚I~@ہq9/t}ᔧ[Ɲ/Hѷ ]Fqm@9m@dgKw}#^ڪK+-c-Z;TWQJHhjNa=ʮCܔMrj،$bRJ-= nr)ظǗ$-\qÊ_(5P`RxȆYae#lIhJHsK7ȜapZURΞ͢6W9=/w\ + 9Q$X>0D51z2%w>t)XQw3MA4 9e+ô- KWXz-u1BlDp~uu'+>.ܞdgԱA~S%CKZX|[v6[GGwW^'i8y1\ffኒ;GG(j &䛣㟖1 Kj"OgH(={4$ UP3*kI!\0r`!r[{LMUsE5V@F'eȾ\x&'(H]zL*h720% X% u5|=tE>{ ^kz2#73j-5!5h]qq.612Xʸ1Rӂ KwлgݫnmjVy-c-x檈Vj/m9ܨl[n,⃊K! z-Z}8x션7E}]>2=όM`=g:Fsc0\ـVOAq \i'ZfzBSԓ^_WLe"S #yѿpo6]eB9/qPbꖫCu tgY| 6D =naP͑Y7=V Y+p^%bL)Ɛ!&zsY@u4|A0!)JJbD&[leVАPl'j[+ly4iǥF_v)yl&Yi]<ߺ¿[ZAgH==*4 uN׺r.u;*% VSv9s<? 7s5`X6<4ye[F>ؠ\ܿ%dwЗg,V~L.6lcj.FWcBh6!8(4g*n23;PhFR/I@EU?+͚eCƧ:bP-d)I%R \!c>Vy vҀu^Rv髋qq7f(!i}.DN귵q?{blW7˨)D?j3 /|O{BܒwPj3gf*6?5s"ѨX`J>^E&P:31!_.~5;S\IoCщ0Qrmo_!G2#|qVfxiRµI2ktxz+0E yH.@^€JӚy{U[OcLQ}hC(@F͒`nE5KZ ĕ|f/~h~o+aD"fŮ|wѹrT *±Ҷt兑TB.uޟV熡`3i8=r6ӇlZ6 S2 cH"I;YuwfĘȳe~E5(,KC]܉[w'JnT*zG)nZ,Lf\FuA. zs !h{~MOȾe"LKp-y}0{?e88Ͷ""ATbc#Μ]\ Ff! cjɞK/NR:GSΝ\05+5xn~ ׮߼)t%HO4%~ve^RW hZ(XMB- !4 ќϓ32}7^ ɞ2m*G v)1WNTCI9FyˢBbg8:}1uDK, ^ݝ/( 4Zm6bi~? Ah;8^z~ sܦdpK hK.W}}+f <ج"| ZL~W_N u˟+xNOJ:7)yhȹ+k2SM:vRK!gKnvn.O׾JgxܗaKML Pl'QgMChόd*Ù`v{ Lhv'J@7z@)W LbjWwx5wWu1U9q8t fg..+xסl4$_;eMn3r}s=פg} 76koKԤ1ɑn_F;w00N9>)S@w@<5ZGWfvmG9Ĕ|]aAͭ%}\TS+Lqv^&"1AKB)՞BOEDsIO&aMf./- _:R䱮`."tyO2D\؁\JȺHzX?x-tv!J55?X.͊mk *ZT5Fcf 6YlNV,3<- XQ{#z.!28}Wx7y=mnБ1XO;$ɦz7-ꍸ{ܬfн٠n]X>p)(d2U@No;yM_ϞT}M:՘d}SDmxh j\Non_ư5A]Tzd+]lč-Qu"8Wi8#)|^ C s/Ȗ) D/L< 1E{҃3ѡ}^ ZAA T2~TGޥ8 \Wa_?jд[<͢;(ϡ{{Hddwhbvm?Z>sHxd=,Ry3Gw/O:yЪB{S!ەMr2 ̞Q wv [7ₜƁ|G-(T<ZnOwFӻ=:S˸ XAŧ5γub ţwVIȭɢݱ]yRPĚ-T(>$4`u]=MkR ѵLnb#qIk@$IU:Pӽ>"Zo . -nU$'+>i릘U+ʘjXr=ѐJJyD6lhF<]ox֯Gf*n6ai6=<}p@dOlc`*@qcŒغGvlEA Ja[Xn&?P$FT!Nw3kHAǻ3]Od%[Mf^/O#5K˕n%ͬ_2hARqze0QnGz\wKM23pGAu@kfQ ]V;U m -8[KT'+;wE/ߒ]YiU6"s[;\!]e;ŜO{t Vr]c?5p;'F0K8CKl3|6x~,הKq5D5 / gTא?_d~(K ='X"2ny!Y6feb:` {y(( s/+46.z H1@+]Q ŦI.Hx_c Uz5vd;#D'-ƒ243 px\j7Ng9!׺9Ɛ4[LSNTW,R?a+j8afFy 5zj$_ /0$@qgsMSX۠[wMgwA ن7:"6K:T##鵴;kIXoY8d4!I3/FhCU(]z?Ü(cĽ-4gse<{7r@'},}W4!db/uz0:К%yZMi ,Dq<hyrBv.pyòtL e\B;cfBl![%]&E8=Uve^K##>(X0T].uҪI0kx@36,2x~XNuM7x`ׇY7siow͍p^]Yׁ\AWH(ZY|`x+́ʽhwT ,%^hw˻=,^(YdW /O&}a꽯h|P,ltcd"T(+wnKǨH31WS%-O4,>IR7O rBg\sm'&Ѱ:C1~EJgSƺJPīQz #I}&ݫErLBLӹ kN[bXx$7fՆ!އ<z?S{ͪMs`qR0o&Ψ $9. 0fn3Q,GpPt +d?/mo0_{fO, RRhGH~ 2GaJnP}4po:~X$uA6 ԾރrE+;;"Vew ͪO`諞x- z|ԉpWG::ŀy#ੀJ̜ ~wM_"<^k;͝\:0Ck! 5BPaaLnA B?qڣLMwUԇ,PqR;փ mwfzπ PES*f<%8=oNbxX@Z~:2 h)<z%*Rp(泷U=kbkb d2$,jM5j6N\AKJ)>*ԜtnQU*,9EZCJڄ9 Yf1'sT1]V䉚rHPubaݾrqA>Zh3EvU  K$h:r`]ǖ4hydf^w-H9ˢ/PA[G6坢pg@C>22F][3@4(asȲUr:}_2E ֠iHsn ?Ac"C5HDz~. })5vgZK㖷IYa7mҟM[]Pמ3 3mY>S n+#? 1CXbmf` k*a!ӑ~%ّ҄$d+Ir>c/S{&,nkJR ̏X7rǪrc@HkcDɎDU_))"x0W(_~\ gforYrFuq{ hJ6m]\s"pN8x&KeJKۘe|DZ륓aVBR%-ɉ-#?G]ͫ 7Ѷƨ #9-Mڍ|\-ݔ"I; gjs7 R:%] ;K/TRet}H9Az=Cl+i3|jƦYoor[k%[uF~JE1Ș(μ3D ygCC3ηye [/zy@v` ߁ոmRlF7"?#h*ٞk1̲4l\L Ŗ`DEÛJ;I1LwM[ugS'OSr3b^w8mAZh=-3؆0㞜R%%r"}l'0IS[i8۫"0f;2Z~x0}PKY{dj?0>ݚe%S\mcakdۜW#h9atpdb)\pj"7a2tw#f)h]t7 .u)G0*jhp`4vEk z$D$BͅHeS@*|қG(s}+,!ؽcv$|:^]Cp%[ź;m`d3.mAp8\NDlY.d¥iCe,N~^`-e}&9: Af+=pTD, \p dᡱ1rh$!~W0$1AUtSY%Jqg>?$v%EXvcylΨ9*OgcϙN`B6(٘chi~ĥzKYق0ij$ʣ8k@ӺC!OHp&_h$Jd E5fCȠ㳗e#':(PPEdF}Cz(6=ke:y4Q\PU`S7@\ (E04}}(ގAMk1`]-'#(m+8ϐ~(fcBD^;e"\*TkXz 9tv9 +u(\=P8}{X͟2~D$y]xO~rMm//L$xp:s~Aϊe;{+ c~ 9pC6xH m%Ʀv%&M3BzD!Ibj'NJ>g5?Q96BtI!ݬ9;pЅBݬg`<3йMxkډOEety.1.mt1؞31̠Rj}v ŴQi:P>,6 HI۶:{ׅX|Կ]?MP6Qu&~<ܕ;`s>. UJhq/|1s Tm?=· ,!vE?*:yBEh&D1Z9q j1 ^[=.r8B-lŦT ϔ)]gnA曀y1c<_j"o3mg|o ũb]î0g-Vխ,St$2%@I/*2WHZ `휴1D:TkηtC8b` '= KZiBcz{|z?b/F}ѻMȨ;3Wr7KTfڊ]E}^1rKk5٠L"7V1#pK^P 'RCtDg$XV }GwcJGB!aBT\f8k/ *kpn3t*lbi&}D\RYrז:( M 2pf^rZOJ884ԃ? N>S3]OM cSۜaG扆_!Z'nA !-/@z=~:R> SшN-.xŠ c/z/dRVׄ`lqBo" U @-;*i\RUZS. ʆtom"6V ;= M/ރ}cw Ƌ$ݪM,G]ׇltۦOEbj16L0'Գz6t/QAPι7?m\ b0ݙOKz $flԒqc \u;t.,wt\;m~5,WU.)-CmvavO%2Q oZjol8}3]-&I l{x->˘뙼|5~mx34/--=jV^D  ^m5| >UJfYXCյ+eoəIp܉ܴ|Q|vA\sB} T.F <܉0WRq04[e۰{&Pߊ42C[R}Vm> _K/]ӻkTkg,TK6}t (U<=kͱ(O8D8 ݀;( y3 ѱ#4c) "'AU:3!ߑg[8'/INzY e|+ɜrаt|+c}L]^ٯs{g)Ƞ Raݥ{\CD(mUo:0#+x Cva +V=dR-G'[f "1xSLYP 9y]rZfZ-cAw^ke\x4A-\njiUq`X@nLJ OJؒ4XEP y!G*nu{`Cq1=t vM B7T=qM6k#_ CBw%4CDnC1Hq$ӔqT[z@1JL[JhKLDECdC;!;HvdR\]Sۡ^{c]IRǵjc[UokI|GTc!H"[q>NPMu?f.q_.BqA`?}¢%ܟ0kXHO.,k@>}js⽅D!70 Y""Mi y~@-=VyQ ]I6xnJ<"ܰ<[TM,'P TNQZЩ5֋;u:!ia2n0YYOb:{㻠+il&w"{T'tM`rMq0څ-`26c6YQ_FOOכM8"{uI*ĊTb tC5,_H=}Rax02_23Ǘrs[xacp‰}$'LAd8؜U.h)DK4uH@%ae|Ă͍2z ~&vuI3`n5 [I $9 RcYVU=o:< ō'zŭU'HsѠ2fV]!fvjُTXa J#bW_9vW@^uf0F8U6fYWbgk%9E(E<]zb3Z(h9Ea8vGbۣFbAW$+s _ `. O.G桥SXy Er 55}]Mk[Ct14iHfM@:#5镏uD f3%Ǵ$ nƛ|`uKTd=S.F%nTޏag ExGV U(Ŗ7r쒜Dl^j2󸷰.gu*8D 8kt;FI.)0=az蓭!%?o64l#R>}n4VV~TG,UI7uwo~Osd^1Ma:n{/1Sl [<[ T+Z>E2֞Bn{VN:W|[v0%؜J'lOlBԌY%Gbn2_ģ@!./DR֛kQKgc1*FJIŧԍXweI&cB{цuLfxd AqYbr2㋍H|Og4i&zU,-Zs-{KŽ Mc1T @힇*)4=J'S瑴SEo'`sr(dfVVm)d,Er:q4Ҫ*![jFv˞|crW +_زiLKUn#HyH~ڎQ yܶ |GQ\̵F,PٲW础'NCG2l]zTvpS5!MU0=mzȷȹvr\r6m= tC;ׯu8(Frvxo:I fVyR-^rn'<>. vN F7]@ q6}j1sWK:aՁDH=m+%JF@qL$꓅L3vLT)=uWtN+~:4* 75[AɇO5'8ܒq>gh=Ybf2cfD4Af񖚋oh ~um-Zi󐑐6="zo`y&ql!"Ơ HFwOug͝f 3et&}NH"6m8*:e9K.2]קF%2YALvUA50wLu eڈDͶSPH' \l:ׂ$۪Pv _cM8H%os݃oZݴ)EfA3`n t]ECpW ` (U~3,ݪȵ,>ӦYʺcͲeBo3%)(T^=o}O^ۈw.3smnupdUxy ֝|l1Y: Ey>[GrP+@bZ޴ D6%Gl4W}X0Xf;[PZCz^O֥ aޤk3U3qˆfzua?'iN@ "[h!X3-C&.4o, N]SȤ_647*r5Jg}ʷɫq+|~lwt>$\وuf.V7 9 9Aag{@dd%sLxO@Ox7ZD]>RoY܁tլfddnUk I5"xFz). ƚbui V,7\åōe|THTazMFЃ"]F~Nx^(C5~j -YQIvH,`Sٷf?NeMJ:d=Ր|r># lNv t~_ !HmqYژjC2_9A*ptrFCHM}/_P4G#LZx5L }#/n 2 ,x}qSFnɄZ(@w1|zJƨK@LS,u$̟냞"Jj9PO|NK5C&?k Y#(b_-\?I@24/~ݟ6{Z HGu5:̀D&aoʸ.Q/`Ox0*='mZ8u K?FCѫA  ]zQļzE1Ϗ~,Ԃ%}'b]!E6$֐Lry"HxMfTcpi(BE t|NNρ$uHn]z\@n=af51oSֺc@ "b6ɏ$ʭXgz2-ps&vAoa /T@$@iF 6AU1mTԤ05^U9) ǃTLaݥ{TB3kRDIrchӚ$Ņt'\~tv⴪16!`7Һffp8wY%Bz2XRC9Fa-g<30/GlJģE=KͧӔT1Vr,BAtYXKI[ i9<>G,ʠ8qUi^AJ KKR,Yid,{ hEet2L88iFHT|Eku첼nYBB ~7a{? ҫP8zj޶_^B `Q/XjfCc~~/ c+=J\@ݲ9U[lO)7z2CD$}ǧF$*E2dwH'}kʆN8p50 LE$_ telεO_l@蓡JP҂$X7k%=O`-a`^e}w:q7"&>Dtu9jpFչ ? Gy%c&2r4 aw~6nW N5^jX~1PTSRʎTwNg!ذ@ܘ} -R3̑䤈1<ӜT܋"tSq 0 ~fUOKjy HcpdLv#nKwa@#~o %YzE36ҵOG@w}uC,ѵ mP|`[=. h*51,wBki1vJ&{ pR֥Way2uMIwb عQny Gh"yHكsQNKg/ ~6=Ŭ\B9}xa4aoby-X0}'=fjuGfxXcJ Q}k]PMcތ3Å $f6[dKFE[S o)-i6\2#߾PLJ(g?°#Dۜё@eVVo 0Vq.=-6x;>uິc=D (h1VMN|.& NB[S \.VwPh7׺v"l鍲x._"NgbiElK,cт(]֏/[/W jMTq\@+SТ+:ҕH&23Jb5܃{9jBb$G>eHrH7]` j$6Pq){YK՚3WUl2M%+\ "wnBXXq M$F]D kCr5ՌyRߪ Xyޤ+ 9vT( g$Bz{k 0ޕ/Ly0nѸgB6;Z.aU14R/vjxNhv6~W{č$zqqY Tn$AX WJΫ O.GsrM\q#: `DNzr2$|F 16l^QɉHƩ;<\Ut7ၚ`ocBCS,[O f _1xDx 4S,h*Zo< c9 #fmx1HGtPiBoT&u]xn^yB8J9;ZC(no{/-d{Za6ϿM鉛֛s ,NM&ú=a _>AG5D{GJ /Le {/,#ԧ:~RZOi-+y\F55? 5V(}ceE!X$r;2R+K[N\}aƉ U)BbL[QnaC٠C)~.R6D^ ُ*1+877DFV;)C=+R ^Uyq}{'ֿЁ U&"=PPH`g?6)PEi}k,. T-xa}H~-kBM>ke:5 8%QSi> #2(K&^ً$ali'+eY#rߺ=u?P VֆL t90 /!3du6Òvנ'Ef,xsQ+F,k13C &o}UJa> ;01m CĆ[mR &B`(*YE◯٬ ?9s|5Wƙp_O.sߜ[&$ܖ91Jiu)@5S1S´!H^jOw)xm`=;<@mŧKl`jBmnM[zv;o A5it!¸rI9mCrk&e{̟ITwlU,\!;/ٴ/B 8oP O]6ͼl?ka7Wֆ#OF [J`7v鸴-QbZ80r\O_p; 08_)ntJ2kJѥ"6-HZa)p=I}7vp4)@k~ݵ1QF\a.EXQ]п!ю+my_i$> +p2j V90B6[GCdHg9PTpoS7Z!B~ I˗q|31'4)e\9**zu}-"JbO@j1i,`f1PfDN qħj \ּޯa^d,++Fj-*Fg,A.FPAIoI = CCi Y3tW4PT2v;,$4_0Xuܔ& 5y!6f.RltTQ* Dr1u |s6G"gܚ/:JYȸL[ݷwm-^ZZ kAQAKVڟXHknN>H!<#OHᣛb:E8>Ⱦ. Oc1:ޜci$U]=uG8{%oƌJ}\<2wz@ٖuEo4EE-)&'0~&+˟0?{g Ђp6ko*ݜV:=WQHٛU W)hO[Aڹ eF* gC Y{$T39~?}a[ .yZzxD?f+ G&D H!6:d.~Ҥ]DZ|hTBc57U1-+=R$ծn?$RlIzv}kgg[mJ쉶O:)Yuiė{=/ɍ&"@U#4 :{ht-ʕ|{l*FH#fk!"ɻ3O|_rx6q?eGqJ9!HПPuy0 tU9 +šF,@ #c=z5pbkJv$uVvJc2~ĵk (y,\J951+ !\rWQ Qw@ֿJ (@mTuCZWZL<rb@dZJ : |ޗ }vJJe|5 B čb4Rʽ0#/ɥ) [lt9ATGS<0<\ϭ`[d&. q]8F6𱚯9&tѳ莅%A,A]W%0`Y;=zƒWSP]-pC.qVwMS z#1Xf5/.W R:DuwζL!-y.2eNp}6Pc?CXRky޹15ZQ.qyC'c$oLR؋>ܡ.sf wmnCf4U:].4Kaah<-iHA;s9AP@|I4JI#g,Y>VǦOr)t*kvyފOwԹN4Q.J'Z="k;iϡ?df/lT2W:R-U4J_p\+f lH4bvJG8Fh/]\R<1z*STn/ \_*]$w&ÈNVVfSb9wxd +D2Ҋ:Y/h('@^p{tJGrїRM8i$=Jn)1orϠ7Gæ|j0TGipu?i#D־ItSS KHO."̛I;*<6F:a.S#OPW}\X(('g)M ia2&ElLX'rU[B4iL PUC.æ !:c/ň4tCz\2{(6;yV"ǔl7E˵ Awӆ~(`w0zCYl9rr19wbk 6D)p \&DF./ )9qIaٱ&fhεj~HbCսb?-W`Z4Wh~LW~hF,\P8\g_ZxxݩzJ])H5] "5*niUy߭{ HN1<{3Ϟr@M+ t:jrEdDtMVZ.V"Z#aAǵ 6Lo؄bAj0 an,gCzDef @EBl܁u;ݡNIXbwPg[ ;!\^5o5בv1a;r^K8}ow&AEbHbDN-?S<&Zpek6gވv vd=s4Me4B M^4Um KA!W`o_XTS$--xc`,OhAmG3R:Q!j'쫲,nr83vhn~1xr]el >3ť%Up-=;`I9).ҏ0R"%ecTW6QK{3+ Vǹ'eш#ob@7o1#`E(7֡ƥM誚q\Za45x 8z74$QMRK.< k9o:z̼=֤Veٹ`NZq㚰R$$qL ƕد軰a!FtP Q,ŗ0Erg Zo<3EgNghZ : .91ٍog*($=]Vk4ɋ^QHZbi SB)bg?]O 3@mϓ *T9X Gr8UH;u"BQG٢cǕ)wW 3)~,㚲ߕ` )l0F1UAguUnmFu'N%f2\fLNYd}9cgh1G?4_ (zn"& d0*8c ݁«벸V;s89%(3LšG/k`ih)=`ox 7omlE;!AWW *G]Y.fYQ|@;xP>c{F â˽ z&RyIz 9#p]/#pz 6h@@d*C4|Ř咕6R X+q Hf>ԍ1q'9^ b.#8\W9p: dQɥBe󱺻H=:}=dؤJph4ϩJթ o~W}(}@z[l󏚑|>Xz'M+T`C%R2H]fN96۔Ix X@hUJZuR TguE"rp4/'#28fx7iKI({5靼Y]ZTX` ϝG73" k@vuj8.B} J+ 5r7D2`2o)0HT:) ۜCf{zv_PRr@{ ]i5"_Vu\b#%iv^ʣ `![$%#[Uw([ݖCRZC먰 ߜ^D@ͱ/.yV=DAF[q{ӯߦۋr頻ă> M\FH2M[˩Q}4q<>|RmEF Muq.4#'ZQtY] G+x p/qY\/- }xLQrX(38jEME huTH4;T0QSIMlòJ}QrΜTDp,D#VzNPȑǓ>\J!=+0%q=RzhU g#ӸʼnxOb[^3c&T2fn[<{]!/E'崶G֐ @@0(YhF諵[w0E7|w4^z*PM@LPA ̅xG} DpS1M[˴tG&*ٶ^֬S UdQx7.6]V ; W[IubE3L!L+~=5ghJ_HlEv-~!;#2;Ro{QvoAPH!nϱ0[̅wg+Jd\ l}W?!w%>F6-tP|W s$y@M~ j]K"eeMhr@?ozk17(<éjaFNqiNCI8溙R_aoP#E+Fr;碉@u¬F亦o(r:Z^:uO6R/:+#tpn96d=90΅pO$8b*{܋rJ!+ Qc}zԿFa#fЗ7HaY<Φel9| B$N$xA2FG)և ,˻9%qZU~MR6ޠ~m?8T$/}7<D0BS =ss vl!Sy|ʯ8> :Tt4+-aM/F2@ *0]֙+$)rlE똵(^ RZ*c.=fwX | xc˦)$FÄwRrj_^eVTˀR;Rr'e;IAu{~e,WPQp^\d׻Rc"gO!M_n̄ɢus[hoLj1`Qn` ̓Zm/BPye3zЗ ujٲ>rSGzE~`Q:Zd>z-L8LIa>/pMꂦp gKc8l];N]ML~M$ra22ݮ̤d"aEp(iOIݫMN,`j?~DJVQ7uv{ڗ<ϟN$;O +2FUgq"*|6ހ$Qkۺ=ԅ'et\Ekp4X?O]a Ywe F;y1wfh(e|kqz|AىTF*2@ع~E *@U4S(f p'k~M5AE*K Tb9qKhbG1_UVHHg)3 #|6h'"&zBriD`f?Lc_JޡPtFCqX7a XHkBwMK/d.q\86=0~S4ܝoP_!>.-b)Dk'IA` o.fdB!i1Q8r V\"%aa+`}`gҥ } +MZf.v@5vuuNRA  Sf.W V %my0ĀrжLCS:O!t =𤋽R đ_[&*7dĤ&K`&˒ݬ~{O@nsR[jRlVZ豇Z/$]zim*(&Y͉1'&?|ۣ SȐMmx#PA[5,b$<'(X~ OPC*1p#?t8y~rDeH egVe !^crHP#ae+vy*DTF㴹"+IyWnrSvI;.JUtߗՁz~zj$r]#X'QL(?QwDV2䦊pmPǷO8xd@(#O.xUoQpܺH\Qf Xu ,6-̜ ^w'uUQ~\:wJVc ]<~<*8m:)B{%gZ&,11`)XzŐ"Wix- |P&Z<_v_|38 ~]hϬ-R YIXoThbic,悮1 ]BVe3CIg΂Ir]8,i6hjQC=AywS)p5]{zi]N>t_&kˊU[Q:"0- I/"e yzЫ7)sѶOɜډ=I@^]ٔ4~@ VY282Uv_* 2 H YQ!6+E &OW+!Zqְ8O?: ]{lL-c.A8Ο 3> |r??Z)uUB]:Ɓ4HiS>Ű?FTMڰdJ@,:P+V2KgD?6iIXx[%:3F}m+DQ9Ut5<`̲)$Hp/n6%&@o_yO_1[EŠ.s>Jrr3Q0REAubc=RlF) F\•p)RS>FdO( ,~%pgIр2E*(5ϺZ(pT*N[{!.@Z4"} 5u渦H0 u?%MQW(H8n>s75gl%[YOG\ri,+0<FBP$)=v\$|JFªv'iš$D!cJT!!`In8":1 4>|ݙ׹n PܼlYs ˘?5H9\'=_EMi:zQXSoiᒺ ؗ&eHtAd7El& ~RJ~i*(/#)er( \Z~2v2zz!m1q7o =4"&.{k{^Q\="Fɔnz[VJUɀ0J.m-JճAY6X[ pO}`.)ݪkctdKJX1t=Jqϻ;ry#Vaj(7n13i)fSnL5-|  1op{r"hŝtBLA5_,(kJEn|G8!{X)K /u+yb`,&T*~?-K>(i v6Q1J]@4I#̺(]A%jກKB6tz{%~oc譖)W f᷊:Dc_&VߵLo[4Fhi|hYC_qw+@VgAJ>`J7ǩ6UZ zC/)-/'P|٨5B|}q`B$ͥ=ѝW[SH蒗i\`:3Otg d;< 1݅;yZnAw6u먰(2Qϲʾ}Svh7[T`UNm PU$űpMOk t.Si:\S2)1%OX/ խ$8YYP۞')asl&'"bې}'a'"tyT)HXLQ"^˼ >2Ȗ,0Ħp>TMpÿy8U ۝>%.IOܫJ2髬k7} > qG֔A͵&WUtMZv+ \q&!&";BZ{fg2Ig}4I:ٶ ܓmb/X@34vW*Mc!rU95RX+)K1n\AS<6q[J)1{ēv`%Y=;. Ԝ֑mCOfv 0\7,ALev2rJ=<璣ŝ~ doź<PRNhv#b{1EMzEzOڳp<ݨ P}ԝ>?{ 髯a1,$átȷ7=02crTp~ƣ" v.l]ub!!GQ=Mhvs΋%P {}E 3#"4|T\T>5TeP1ևZ`8Z}H+Q yrIyQfs{>V >M闻9B6 ='AƒBs+n3U곍x$" j[+s70 )| p$,[5ZL+T/]WwU*^2?> RKgo5@M>y 3Y j~TsgœM@!}cm3сCa&H7PіG}-pF=#ϿW!߮<t}1hzq ]v%#Q,%EJ{Tߣl>^"$;f>^C!Jq;#<@/h H+k:כgeK81a$4RN+qnxxn"E3*lMTR*fNYUb %$D:ԲzH xp`qʻ9,/\6cnE>Dm;!N$y3*F]mM0F:xퟸOMXt%&N>?kI~An|Y_AY]q߀NK2l.eʭ絰0q\4*N]ZX]F-,*?!-”gLYb9Mr3xQVݓ#=}!4S+k}ae\Eܸ@9b[f_T& )tƻz١uB2o}h#([~X?ˋR7l͍/=޵mn%Ƴ_:~C)һTZ~QwlzN bqWPsg-9ȑ(rd }Nv d$xMzǺ ?/fP!ٺtCwK|'ϝAm9'@nl<_L"K!ɡJbV"K SGͤw%uxRj¾}nۛpDn˾6 Vd:6tjRWx[{iNIFʇQ톭Iqc|s˔G1}/M}*~I*aެ$Q- s5F^!nԋQ@7a`?ORZG_pv<ҍNW2-8u^4v#C|ĢeY0SԸZ[?֩ viZߜ\CTF$g42t@_!+[ l4CPZdŬ d7F8Z "hV,D*GzV̓TIǭMӎ)J`33&G&/aYu)D!g`",R}IWvNEeR>`іRFۣRzݪkaꘛ%Yv{*u.`'?_ rǙ.#S%8lj##W?q2Įvw bT0OgI&Lׁ&(] NM9%vY)ـO5BOVK G> -aQ{#0e2JT5$z\ IS> 6$(y-JDR9B!G{u>y TR1cks >4nϾ` .[j|/5to1k䙛%BuF͞iN)KY 8J'Z ]ǼDu=ZA/q^PA~ Y<:4Үy*1l6_+X(Jum⒕6owQۯDECNi1*(%DIs"2bu`Q'P~?Z@\YD~^ߎ&XF+XuZd,qYEsp[]R6_q)4X PqCZ|ܠmC!pLI[ S[ZCssBgc9k4ׁp':ΧK贙N!yZUAkdm>V6Icl0ٍ]-,l{W{8iLoW֛L'{)ʷ04ʺ\ʵ%?xZ(4|SU;"Ok<[,P>J;+VrfpwĬ5M:$}[]b֚ts`&FbK,5ͽ\+`~C2D 13dS:VAjdDl3rgBPw$`RQOP!> XGҡл%jl` R0=NR@9p3Z)e$gZ|XIgİ9v,'A"6z;!hh4}>>kw/NI?|O&*ɃDq8LxA0Nڔ6Mυ(.-u ޖ &rWf<wܢZ V!"Ł.'3:aKu.}r!pnLH̱-5;F[xmG l`bb#x,*8gEEO֜c1NYvW$? _ ufMOaoOLpd뇬 \4Lwa3` QHkl@Q~>1חXΙ=68 $_&n^S|v64;}_-Z~Ă4_naDd!Aը^^…$ _LyZHQc ,`oœ;ߖar;FPSujF% RS}{XFsiG2V⊝.>cpߋX9=Y!zF j~K-n:烤 JyqOj1<:ŅD=$iwV7Ņc{s2%8oLb® 粪(a']uS2ǐ|ثZGŽvףɎQEH9y/C%lL=[, "^A0U\೓R\h$,zPj8KXX\WD1B~m64uf;zBC)w7N]6j}M Idb k0p öĽ< eVoc$0P".JUiowEcZLrF7<.ps]Ζ ))ٴ?n8. Ꜻ 'o9(tn=l-5 lVrX)R^UYS Ǚ'6/u?X$@,x0 G֡; 8̰.^k*]^5!'Jb>,. TXi_SV=`f{uð)WZaUP?߰HIO(b$:(~Uəf9ޒ/y(Yٷ*ߤ \c.LLVTur5 ]_I\⃢XM e{Z@S3/:%0D< Ա+/piTȱ77dEKXk=(S"م0C,aT;1ca,oWw7P"AS]Faj-peח(fdIVtIV^b`c^3k?EIyCqڗe2Ym0 ;PtV.5HŸYQ#_߅ݕ}#c5tBߺäa ы7C1an[% r9X4Cq#Zt=-C޳ hw {;^#2SGݶy;Ku^ n<ѺgjsF6>+V CO<~'oFF:H Ӭߔ~f3OΈ{訒fGͪm >Eڵ{V8PCk}\ ,~6 u!dSLHR= ڸO!zq Z@tda#qMnӆ#Y;VfoCEDpi,R̈Y3ȡ6: Vj -3[柃S(:  y$["g7͢!P(ȟV5@ #&L"l` &9ѡߓ;nnFxbg]x(k-qa؝2&^CJ#P'o撼;dO J]rIcحƬ#AQXk<ҁ^}>gdC@57x{HdBА 9= : j[+!?@odj ,5R S]SVx:akQ}>i]TbѭSv=^/U9Ga= JZc2tذ@Hq>";VoB6%DG- "گa}o9z)p _n`O<ՎRfVr}GI3;ԅt-hq/[5~9u\WH3o`d8AK'_.:0[v(g͢$r?ݞ|A 8U:鋨kl;I!/iB@`::kX~Ķro焯cE_PH0G8p3 :{ЇJ &]To}_E rihv,ox轻 `=@P֠_%RXB%9I^oYcMډYGB.O.1\gpPE=dWv)t^)fFfEJ5de!evSB1wk!.W~BSN}yO"N:/;3`1]f/W<L2fo&pWAn9 !)zRS5ۭzÍjCl>NkbK&&s6P*lq*2fn#Q|efIV7 *A| AC)Op QZ@r3s1 ( r'3V0u!Fj;,oFrӓ@MRmIl|3;/ L=#0fInJvYyզr;% =Wm ><,R ܻ0*߿=s>$f26 84dx5~x2TY5:p>z}.XV(]OD~ ! ]`-b@Kv[`>2v͈I(3%_a=z4-%Msy9)K$UqH<25{DL6؎=G_[,yҡk3׋Ge *#??FcՊY-%.HʼVxK ~0U) Z$t9KJ$dtJ} D%@S 92q,c Rc4$[[.8-@Tzk@07f1"g f/{O'&s[TX~8-1Mv-c,Уocd Bm")\bGyWt@@H!ՃBώ@݈1%A}h9$?Ez J1wxe wi6[r3nWv.LBcO TnrZEef4Sk_#1q 9hh}팟T?SM(s^ ~ѱW(oWӪ1Oa$>Rlm}TR.1\h_S; GY"֟$ vN&lC ZhAϵ 9OAϟaNqƻ2"0K*p(OWbr5TT |囵y4 a2*>WuN.5焦6+;9JX}PB`*:qS7{Dܿ<=wZil͍-q]NB]!ͽ{kbDAY4[Xc}t +^iw) *NDI&)p_@M{熏*r{Bm2ʝ\%Ye2#2QT+GD 9 &?o ׄ΄Ə^c‘PBC.`A2|-Vќ|B" p@H+<`ю33uM:(<ҏeLA~]/v$"s_(f6ɴ\X>^I;^(?-2&zmdD yG^0n#+ ~z}Q4r ثv5:rY7☰H9JCFʳ8p 5]KPS >qt(:Uu[_clGpD=kE0// M`}1[dnqH˕}̥rcSAhu&_ltTc鲴O\~!AWpߕ? ٚӫeO5(sn_3+ ڼhEӦez[ܿS r/0gIݨ;\.aDZB Y%SNxaK$!%-N6yOxCPn.J>Č嗳$vн gXp O{DE9?%WulߘՒef7XU/ΑJad4PI.޵K>5[eD햒9,\<3V"|< E@vByDb Zɨ]A?N˘Nq8TnTT0zթvlwenݧCH:Zn+V[ + t47MN8}ONMV5;N3ofD}|ZC!ru5F?0wkP)dU[5 WӉĒҸ+.?.+`oa gR}#Q#C5sXl~ĩf|g2Y-g0i+TeV_?m׷WDt[R-.6]fqh= -[=7C9D@PZ7k5x=JN[լ،HI,+鄑n[ր{cW); (:ڐ^{Ϫc"(#׽ -@甏oYڈB1>Z}x^fЍE1hkfoP>Ob9m졣X vZ}I@xC:,XƖs}M4Q#ݥg!YNGCm N=^5Or@SHY`rv^0KYgNS N]u ST4dH'D?ZE~&~-QtևM<f0bCIAiP؃Gȍ䉽9h8 zw,mŠ={%|38[ٻ;߻o\1j2xV+y~}T: ]LnWY"iXs$!ŮwU>,⻥A\HKMzD/{evBZ8j dŴ}TPߢ2/v%̎ԤM4ۏwZ)*XyL% MAyM[{1Xuli3N~\LM+(}E?yv Px' Ax?)Q3p^`Й2P0Mš U4aSI;sh֕=uR()Fb2)vOyQ_Nכ߄G M2m>^laGA?FL oTxt3۶ & \ ^Gs+521˶7pȣ}1D5lrdvYQaF"\RKI[:ON5JƲ m0>guWYw с9e_yf^K+6F^^|8CO:͊gus'%minYq˵1BqS? ooQK A'cිywtv:N4o)9Ni25W3﫤 +S( 4N$;89}ؾaav㍣11t!|XryTBv\O#Yfo"UȔh-B\3>uM|WAAkBoڒ굽uM8 )}S ohi?03Tv {l">mb1W)ߕOa}ؙ0=]$R:;?A'=>D\}vI+1o~bJD=%>>LϵwJݡ r`EBnS X0rÒL vm'Ò f3ԱSby bAIҟ=;"S hep(V*ҩ=NԼ2v`f`70MSOԿb L ,oXs6aSowKeD!ۓ<[b1YE[m..ViHЬ*:/5*j/|MIK:0\tI^&FV@=&FKf`B'Z[q, @@%dExa|("4twTv[卞0"q1lH,s8nǶUUzl}Ԩ*riInZۚB>~7fxAlym[dPpKAu|P&VdmU,TBJaLP -)'e ? -2L\^Ҡ~ǣfg%rG,eX rP^fϠ6-XA~wlt'!t1K 0c3O#cb*}2( j=LC5uF,% eQͣA)yMLWM/e%bñg? y Yd'_M7_׸[>PRj]אW9BiAg{>(݇3wKZG4?'tL!=a>?mIŁi€Wx.m#t#L ^jPh:xP ^D~P ]b_"gNp/]SjuIiyErW vhA7#LbFu*y} ֕>O .,H1)>HX&E4wP.*}O]#UbM62RAL05wrWH}ljqY%Ǹ@1$O +6 kYkTex80Y=WT!V\aOM˿XŇ(#wd_w#9HhaBwxjgMXY6#!XoR΢-j:^J[X=9QaiV' DZr~szN:WWpa۠U\ y[!#=0t]Ʃ-XW0:w8@orYVA|/?ĮPS D0팹ruYk2Ʀ(E 85Esɮqe[<y#졯Lhd36/IDg5x #S\RX31"j7Zr)╳drvsP\@$'pb\@-=6aɣbyCةFU Ws_յLͅXfꚈ闚mDӓ;Y2(ؚx v[ܧU,M}{X98ZR++dxiy30QrY L0ͅtFq$StԄh!mv1 X;Q!Iϧ,&ǒ,Bu!=fff/ޱƁgjUaVm.p F @#py h*>Ky}wXs؋P ИŮUPz4Nil^I5+.YFk܂3ļ]F p4+ ;GknI@Qz,gr\?h-&{\dN[WWXN+Uٗ_THИlK2 D,/_:$pfbc0gKF4BIgȃJxfS/L:R!D q<,q(wͥ}t\FB(ڸj2JSb? pٴ8BsԓeǸIs{2#/5xW% o p4AEwM2-jʺ VsIʈ *jn,LǏ s"OؾFTOxAA950irbO5A`k(iG`]rPiXq]Lv/c;2=yޞFr5pw:8 wa̰yeL,.SM&2F2^KAXPȷ/~20P}~&Tɰ=ډ5?0{RG|VӎA@OkP[D#Ͼ3 B E-k+`F;>i'\^g|k {m8-YTgE=գVR)Pޥ32؜tMh/D@iҎ?ǬO{bΕrN#%q p泆1{^V<cH4ebL~8sy@dn۲ G/^w6%5dSN(DK7 ñ1쬇 +XDˆ՗w2iq5hEx]d ⠤i_u霱"IwdM8jk2U?MM(Ki\8Z9"؍U` RiUa/ xڤ<utݐؗ,롐B7خ½,*@x"tf9b#U[m,@CnJyCJ6<BBRK.c>>\:Bdz* l")J 1= HWe]v׆ W;( Y+_W'pY n'[>iK2MTВKs4 ׇMn_{!zv̵2 jYE+IJd#od㾵.|ęFq' .y)yaNGr}j[*K;DXugs9 qZ7Mtc(囲}*EkajTK`Jb1&bx}<HJ#aA 8y@~8%͜_ RR}CfVdb;4Bt@9?S{!'-׮`3ںLU ڰ?X+ #nSC$PW@Xr57u}u&]dr.}P~fT&}%K,# `ǠzjSYS _8E]=&LQ T ,0dlD VK3,ÙV#^،}P?淋 ,Oz9Jif txC β35]y-ņPS-E#B6Ұ9y:~&s؞R)l6~aHI+ځsR!bZtߤK#,{fe~iPBBluUmEp8]r pL j xx+)e f\*?\ O1wc!8˶?q3r,]$88qn B}TT:6;iI{C]:h{Jm 7O<]_iKvK:,fkTX-?(3[ȦOc[!%\|[[NOĸJ`W6]޳R׫˴yHbP>Zca m( EL"'~AB\oA;xQ>] g5_&k(y?:8ga6$Fie) ָl͆5W,16xE6!#ur:KѐWbאgNz+KEc"VuD쁌ѩ\}!'KZpNϓ!ϿZ#* _ HwEPi˽S쟵eeIeaߞwf߻#`cLAaw !si8q0Kkgik~Cufȑʽ.\M&{uwr#NCk+6ܔ`D&Ǫh\BE^=8%n(20g:(/U74]O2rr0X: lq5-R=UQ)X4O鴞(Fk!sm-Ǘճ[ aR- 0vrJuCB]6'Xwf0ZEDHG^rӢ>R>.u[w`n hUX=sYǮtX-I<& ~Wdpgr\4(}ORi1㪎S$u+ pD3d>?)\!Y}7۹ާ20H9V76w=_}vV`.슶{κ&c6BJ}ˊ$"9 W>dp_DELx!A [ WMVf|>gN1TY,SU?fȐ @! ׁ)ZXDu eQ1&$f5K )Bmi „k겄CWG:2<*+n9 sa & RoazS &Gma4(?|? B}PI4^G*w ȃF6!r UBe\O b -;ܘZXb{2z3*¯9Gu;`*ᯍlME?6ϭA[r}P8rӖZjg?*лBzVkU;$Vfaq6d~C3$g t >uL P% C8:yc;MZ;H3"aWCDb|Rۋ} 'Z;/Ia͖ː~|)V!Oݸp3@|4{2Cїeʜ.'0wXqgv^0; uCJ@Xhڃqu/IDN"2#ӿ_8KlrHzw_o@5Z,hE gܨvAt4N㵛ym? khjdZDc鸞kSUܵ^7Deה >MD e+n; He`UsP/ٗH5J5ѥǒnkNf.+Xn߄3eubXz ԥ[i]EarJ'ᇑMT2 $"x˞Фۇ,w ɱք 7`}sEO_uW5ΕnbAZl.Z2/S Ծ}$DmC&z䝷+:Qc2mT?  4S?>ggZ/vYگ՟ C$y /7iPoHL mB=/)ɜQQ.rStFhXԐ͐Y PtX.Q.m.>J $߸3La+ħ) ?ta RK\"QT%ӑ"tɖ+.:E PZʼA|' A<~|YEF=z·{I('Kv*#'ۃmOHo8Cb4Ch[@5HL6 /xբ`RiŽ~ZQi5D/cUp5,z1̠?EɘT#v$+52<ӠYM\oz |\tMᣱ/%ףU d;Pour@ Ld }c4C_~dpqrH>,MqWqkU1(z3OX3u rEͰͪӟmk,9?]@AZ?9_}j̲ lF`rPg`*N7.AcCrMìA%Y.M%< _KJlK$9K<'Tt = w8808χHC/l(M3^&eF[A?Hi) Ϡ1#+2`q֍GI%r̕9"PC%mCLL(#jJڐJpZiV ^J#B]Ϯ;jz]_D`7-N p ?@ S/u@ê.߇ihJ`O?# Pz$7=_T9)stBzU?:lkbу۱= 7:ox&GEhND`JdA (4_lŔhwvlctVׂdj"^GÎKm.&WR?!C#Q03 `5Uy ڄШ,=C+ 8`<# *uSjUkYgI뾤CMHR!>Ha@qT5Ks!hM%r2.ww#n>w)C^:I: 'T竎 brnedfq&Jds{٭В*ٷDz&AHw7QF0pK#r`k!Qh/Tj([SklD|Ъ/%5&Zڠs{t]}_Ҏ Xv94Ed,XN*f3Kc4L+;;bGѣJ+f/cھVGYTY:*6/TXPR-ZUXˇ8f}sgp؍pIZ:r#3jѐ*MO)~Yއ8)ee%%B_m›7i*8Cv4E4Лw+hHjP޳ex f#I@PN؎@dُ</y%[kj[ml:IKsoۍKtW'wXsT|7a)o J/>9H;wc:я$S`Pv+,vU =i-H0C>ޗ,cOtS?KEUNgN,JUcyF!~4UuUAE>"~Ή}:zYɪ"R/Qm ?+z3echkTNѬMCd&d+SOckVj}Mۨ3BY']pPh^@Q7LFnE l{sdxi! 7H!0PS]֯/TH$;\Hu]6$]S?Zv!݂ۑܸ8\${IřȄ~EQ 9`|9ϟ@zBmfTWIv_ޫKk2q$w8h PK4 hn|]ȸ/YACXhcq=lUCߚԧ]%uIBТ\qFݨ$=%jC*R4WCvɃha({f7YXw q_x4/US NF*c w$o.(KYza)ht%į;]z}sȴی ʢxL~j0xؗ Z A\ Xq8.m4>\!o4H#ٹvM*+4lyyg0IJ-BVqe͚~z,|2uEW'TNbe^} cz&πn1$Oz 1K3Y5*S^ dxyƲ`{gx>qCMO& IWf¸5$@S=wGsC'z= s1S۞# SުRlن{([&)`t#U3SP}({fJ?l _*+oGSIK[+F誒򆘌ht%Yo+4dK\+,5T'%̐0<r* X@P pfv𔦺> ,!b1%b{VDe̚x2+?['K[3'PiӅό5'ۏʄD M{ e?B5i09EdP5MFݝ -h7d6W;FR~ΆC2ۊ Z]7,oxĩ&+\U^#XWf64$k)*UsVJM-YP>pkt^w+?H ?M$H~r{G9u#Z~H{aZKe :{Xt}5@1K o1@&9a%?$ Ɛ%T^#)A8<~Nمb.0s}{?\BxSć|ԩ# A齚K#T~z3nlxI.1I^Flm\GE` C/qka.|vK\{S+d0s(P@;S@zS RP> a(]JM!m`s̤_9X[ׂ jɷ)#+812NHF=Ҡua‰U1ŦKO)FoOcҪP @G{ oΚ23ۨy7 \12A ^ &-<m+0^$Ƨ`/"p&yW%NEmꩤԶWG 뿇@G^# _(Py|VBXn/բe`81?JNw>90EG>ըyry8Qݎ~jB$|vAjL苤C'$X;2D*8nn^VQ#`sK)?}Is3ߧ*`c/o+8Ӎ$tr5#{rAE9t7Eb)灈%-]Z*7ka?]*Qqkh}w}~N.˳=I]Xg!^{~/Sh7 hl]J|2 Rdž`q 9١I< &w[spjxB"SL%V8U-չ:OG~@Wq ~BY2iNjx;?0QIWn'eBb9͸n3@dDC$n-lIg~nO?wLK8QDIJȪ;[@!}A>[̓3Ęglhs$K7q<]wDwMMMDUdMMh&2{lѣ*8pM吻`eGe%Ϲw8³HA.1sbH2Nx7E8~ȩ[$K9 8?Soʩَ7JA~|?ĆG cHO󁶑^@/x{a ZfwM|Z!.X]:4C>ag|݂T7GL2|2" soĜ)ox4OJ]z.]lN3crs}7rpd7ሯ&ƍ&ڔY]K0^x7.ƠpgPשv8 Ó'%W{F$V{bպײǣ0CkWV+7^b&=,ZQd&&O`8 줇PKRLlVZ{DUA7PB=z2<"pX#O &sl.)3;u\oWs~#3<JQE޾{.as28cjD:Ǭ/5CyUޖ- L WI.3aul15WsH?JZj 7o4tj=#k{KKlkc䷟N+gК1Ddk T +.F갍Fr8hf,g;:wllQg e]8ef5%"%bJ"8uċ=Kg,CĆnڣu0۫`2 $ß/4 PO%EiO}bE UuM#'XÀk^ Hl\GF!^R0lmλܣO!Ufײj@z{E5չL#X*BL8<ߊeє1$(vsa6V]y-gW(N,7'Ž1~]Ǜv^AR _ȬJ.ȫYLFKN" ";[XųۃU| 8?&siANŜ _µjqwQ 6Ҙrqd m!g(M7K#˱| ?<L0@Mc&FĈaSO :E3r@q m58\U& @'tҏ n{ ե %3PYa8GA×vGu-<-gfTwJ%E lLEOJUA V[ՍNwo$͗cˈdCpV9}vGFȗzPW6'ċ# R( G(iDz5G8\gqFѣl+O }t抱r° %ӓV8N D(=)z-d8+?;,z,bkK.@r_r3wUⱔ&xIKя:@Ujְ@^CT#*^|7?#{ .0 !GxP-hr[oA.Z ^ZKsNVv ч2,$} < ̆Ɩ.;t\Eϋ([Npg%v L@$:Av: k;ĪLl s=Y%h.B(w:;{ $5z"ak(d@EJUYm-W1U`H!'K?sZ,HʡĮ z/q㛔l)<}NgA%d:8]`yGEd뇽'*H,.ZE^0>{>ڠhw_]ϓ}"צYy0*u˨~BhC9Vo@DUVͻr"ʧjDT%rA}LȖ,BC:l<J%S}R)!0$Tؚ8K EGEKjVا:#JXS}gNF'n *u@*H$1j*HC[kvv8/'w)E~-=q3HpaBr.(S2P$ROIIb ;^)',WZjݚC"E*bIpaβYbgLé@ͮ7 鳬E0gϺZ֮tf*3}ƆWdK!@חRޡ'z)Tc{_}z<{+`A 6j eA nw2XqSb eqQg Fv O&@~:~mn| f)fBXO /vg|{C|;^\Ъ9L~ )#9C}S]EZILQ8OP(I$qd=[筕xNۅ ,kF4WFb38mEG3_$~Li pJN瘀YOᱸYxB  ~ls*h_<0ѦWpIV=ӏ":@n#4NO*Ë,@AlG ^Y!}SJ%ܣr-AzJ$=`K2 (DL2}kUb-A'3Bm\4Vd!υ zc{_0Ai^(T^މ`\l8?Aruۚ_-ﯨd?6̠aɚܰ  'cIq&w[g/ 숕y*xf&>M%0 Q]}@}P;$4<*9kGEW7@剶hTU/Ik6 FsNBcXųd3X+'+rSq ȹHoxµYp =}vtOXԩjmfh_4wSՊDSJlXT%P'z I{յu$[f+l>? 4KH$Hrr yK߸=t"~ z ޒ8}wHmɐ,?W >bІ3VϠ+k\iAΏt#I*־5Ӳxa}lNnBCF,}Ҙyvi/ =o(iɹl\&|R}weNG`9>ŧ853s1 9gMeQ1=e#fĺ&_U 9Ռ⹻d[SJeQhfIj=zM,(IhNt*4 h/,߈7R@n*.WCɻfJT28V*'F UɐErE )0D涣fDhh3mOetwCΜ{')Bo$az㵷}+^f |覥i\֌SxM[ц]V!nu/]N("QA޻Y.]m5˜ZoPJ0*/B p2a7_4M7XQQWؙUqKgw(uf7lbbYXD0":6&w@jn<02.!z-1Ia@)8q8xjSe\~:J'߂`Y"~ "~Dg{]]cfzKиx0LM]<9ގR~Z.Six6PGuqzk''p]+60ݼ(an0,Y1YySh=5x, rYG$2<; Ԣ*u< 7> ?<-vvtE>5,?qRZ/ulf_6m4;~ra/m >%LnV`8j8+G YIk NnkCw<]` 8zHzA/a9_@=NQ&f\R5>00 )ohj/ɤ#Vc_K%.`I" A Ap|.`iiR=$>Π_'MBI&t=g0eޠNԙ >j\Wv f&ܠPYe:0g fGnRXOù7 ɄW>4^12 ~YLF*#f0b@3X;[đ} @Zt{ܶ[-4 [1:ʭ*\WpA%B+ KaV=8:e [Q[Zh/s?ܱ;=8EK6"88shDPh̸  da{ vf(!$'m}iGpߛzOQk.5IXŜ4 I*ijT#,j`nY ma.I& L@Ynt!7g_e|>`l)Mzw[,dN8)~ݮ;jQ) mn]Y5@=nܚ /j^O[ՌOPΒ`]P#˒pN;щ}3TGWL1+ƇPcC fjlN?bhLJъӔ^pLwaW2DG$'4^">d߅y'99Pq0[?H=,2!F<[s>p1+xAjrZn-gu5BVC] +bQ<"Afb , tgC܇n`y{;x0v[[{V{L"3 tgug ]# U%!0Ĵ#y fI>ec+9 =t @l ^w F{S%Q7öU|w Ҥ,Hf51]V0JZGg9؁=Ay=Y<:B u~7G$ ~xXQ 3)|GR+ jDjВq( y3 )a4yT:SV2`%p~J]}9q)tve- 4c"+>vL $nG~% >$F<ЄaiQm^)YlØ 2*Z:/B$r[/+3Wf@ڃz杋>8dA'"#~v^+YK%UؐkhJ^#yr GR/"/Ę϶Ak{> 8vO^W wlІpDڋ.)x]EU> Kx h x$Bk@ھL~f'zYRɕXc/%u1dG3?JLc+vgUэgWXWDA8ZOw,*&L<+ԩ*w[ q[Z{**9 "Lcp,6} ӒGnF7E(Fjh2[ )zCL5z93cHmRt^ؼeXKV#,*/~g'bF<;qZ*h , x6ݮ܌9rF\?vgg}Upl1|E+x5tvXJ1J+~` KDMCV FnTst:0o Ĭ`wjnx/H46CDP=Ȁ'%kP.Sb?a^P۴,taX·,wyP3#T%; şGr$k(kM rŘu.Ͼeb! wF9)%I:^JJY:24M96`!2 Џ n$"dw$;7aօiE4؂nW"na<[p'B4:!ĝgIce1l~Ys5p/x=d`xB$'H="y.?G~r_@csXh 3M8vfX'~S|Y;-6"@bGiWGF?ƧVuݜ@ֲg;ZMUOHMj,2cQ! Y%Y7޾*D\nZ3LIjaa7LqGj!u]r';~=Tp} ۄbBh乾5v?[t=l޸lf %]{%Qd]u/+mY P8])ۿ[e2`&+6 Y_o(.Yp&eDэ9Wqy87F{ݩenˢHH>|Fi3ru]̤SM\m>k8ge&ʼܸϿj)sFT' U06_0`0& LPvv 'J y$SN ~q7HmށQvqt5x'~ĊzrJEk! pD 9sD7lY'm[o1PyqivGgg;r;JKTr VؽB{> v;GZ+$NKo6;N0.-m0[UH}p R|/q2 I1i}tJKCK<ەy{͔Ս\e^}޾le߯eX FkTh"L:/1Xg"ѓ74eHp+}}_[n=P2G["pqяk."֢R[Sx!$b<>5I$SD NVzPGz#!Wk=fIYm!ݐ۝cm0]D 4W(WX M~:*{'6(\8rN˂U#uzx+-o[-d3 Æt n%lRk/y^[*Cuf1.KcS%qG]Ys+ңF߸5?a߁@tﴴ; '?6aj&+79fz2?ˈNxJP"ُߧd~Sjv:#P7dZ瀁ԭ>^}ݵ ] IYxz*5gh%^ {&nԤ/ȴmyR)VϠwOt{TwFb"W\`.ذѵG"swU(K4b`Ч` ЅٰҹǷ%X6,%]1QSxx=#A0|{e0kZ"ўPyUAúξ##q'\W `4ꄨqfi7u=a 0M AGJ檸Nn"JĬ*z*2>z z}B%:_qUXigJT>Z`l+Jٴzs~|[v;׮5Lj W]8ygi\S61`HQ@GjCkY2骆ozfSOY  v=O w rxۗl8XLwuC3Pc?> Tk$qי1񩺰(ʱQVHǂHS[*0 ;@pВ1gkx\\x5G.igWйt \Zx={oWgHG3elN{cef Y)hR;=@e5ԞZ:LhgsWzD=& Y ͧl+'нgBn8pJ$؜Fz Ox(PFά>^]@@^{bs'ӵhE$D.S,_!"9\R퐪=pMN c&bp_*I~AWPxlkbCz(_71ѵ@A3[[k7B!yn~<"T ~kjj.RJNuu%?MX> ]Tx0 db2^@Gs{C69=E ~$"|""ՒG8~'jtsC|F $`m_YD߯og֋L $9oHzkqR%jǦ)8Q ڪqLOHp%? ?]Tߞu!BꨓGMt r ^zqPa(B1|mA }b8ƧmqDظJDl[ض2Y`L&sj[]y*1Ŗ6K9#yǙbm,ZMJ}~,]~-%Cekw38z a'Ɵ{=I%D ygl\!fܷ:C+1񞅎Xma p" (_E^1 J 7BJ[sRq>;_.)m4~:nGQ "+[('1z:Lpg ;LÚj/W&lDpNAI%K8xHв=o=[fHLdžeFޏKڋ|q޺Φjqje:0H\ 5g#B1`[ܖV'UhJ[:/g$wTd8a[ `Qy6";]J!?D=.Jgj䲄JnWV` J/}OUǂ+1`(J 7;TͲ:76L'D$dO'[0N: +V(\x90D%%/`4*Zi'u{ĺ+I[= ye9C{׆Ow0~%wzf'T9=&ecjXВBh(iJw\AhXmXi1?!%}_eN59 ȘG*>>+{hUw>jR:멍ȱ< =U0W.|,L4ƌlD]Ug(c!sTqI#gJotc*.X }GيbG@xE%lP>:@[׻x6Z1nOݝvŝ+B@,.So´ee[KLIz>MrA74SD`y-M8ԕ,*iXְnطN \ǫI>h n͇/R?0pm]TLG`GĎ'$3ZMA] qGb^e=*P.&3}hpoIdAȖK.q淪'6W%COa@D2W%|F$, !:D,O7r2lF ﲭ8]kHQp`Z;s]/iBH kdBg+Ib'MB7 $o{jM<׼݆e&Wh<\6 /L&xFٍ}7|aR2ф6Xekܾ ,>@wP;jcbN5WBX?(¨Vggňv ny,` f55u2(:?z;2t׉ ¼a}*4W 쫩'#x~H@Az]3S9ͺ 퉄.e;fF{U06AɉPODt֏ŌsoRy=['J *VU 3[;,r3m3ˬ"c=o>Vf(Kkx#Ayh'i~E^(82$8ᵚH(KnK/ M(]Euɚ _!L^fEӈ)O~qta8N^xKd>){4I ޑֆShgwfQ)0[("8j$.2%'e0aALxw:/%$nnG~(7NA: nV/ kU@gk k< vũB`(5sdݒ+]HՈ8@|ţ햂v$ p-쮄VS|Re4ݐ8p[śe5hNJ2)sC&oK&EG@Ʌ/%3WS* ͲOu<4V3 >1lӂWehxFk'הA|t P Ii|6e=Tx3 P#L -no1u ޚ}9u\ʲȕE қK6އ]*-Kp f8R5f]ԃ5amZ `-ɿyP:Ǧ(Yćf+BP`d P^Aw^6#RLхsS-mθZ`bX|hwrZ9>$> Wc?k hƛ ?"5 ʅb,ўH fלM^-lX&! ';Q I )UYKn+k4&5GDo[R1}H=Qz!`rQ qǞ5MAE . =F[P^zW ݂fbKh TTPzIsmpq՛)pIymܿ=`/q 0-/֌7-CRf2J}(^Dݢ^slJ, N䤼'ce")A 3WcUUihrL<ǤFdijLͬK6s`Z c8FYEՇ#{Af]WKR1Ѝɜ6somA9?cCPNf/7~H"X:l&9fAMg!18jg8]{0#$hٗȡ!tqX8cP_ &ѳ]/a)@v0S ,.7SY=KzJ[]ziyeA!`?DchTZ6_ujdl]-Y p'M}c>i=>|f@䚽wU'9x],>kifZ.e,c:VWV\<|4)>kVUk~?hXZF;Q>M4}Kc5OzBG( n]Doui2H%H!/7Ӱ؜,#Qd 7S֌8-Oa̠^C>!WFF,,j:߹o a9'#{.F ~ ^%5MAߕ43R =ORt")7-Oo7{6fVq&у&`bF!#[|JU#e\ =2Z Mϩ6#&|@dgR9\L6D\2<;f\jX*8fÈmK[> Z.rLV!>餖$΃>h- v ٌ [YPx):Fa2tfˆzSo M#}LL `FnSt@tymq}٣}0ȔFUD5ڏBq[DZE`h WiwVy5.0t\~􌞜R#*E$x褳7̆V~~{Z6.O\=)Zg*@0`[ʦҘ MtO8u.fEzuI( FqpPB ~]_ D i8i}9 >xǶ5Z<2w.RQO$qJ: [cD*nI0e-h|W04Ucr@07i`FJD@),VO, Zf`^( > 4a76JJ >ΙrѤZF0)KP`$*%42~] {.l\w"/` z)j2%䶰qu~:5~?iG '?̤Hw$ !n:؋#Cnpru%hHC2l4dH|\) yl/EVsQـxѐ؋'Tz&µi@R/8lhkG*!\cr-'cv͖;]!AG(JL3{GȂNY&Ҳįb8 P [2͆AfK6Kt@6^l屖=Ab 4Ɩ<d8*vt^t;dD7ﭦnKNcqP{Q8S7y(9t΅xR1csu_O$î z:e820+\L0}logX5 +0  2Y0 4r,$kv "@w</LP>6 rㆮZo2 ^_5GF2_]G7?4fuP)胮i/櫑WfyxTjO"*(ת}/~,\g?2;ʶ{qQ0tmKB#n*lGKGtTZ$Z͇lZ oo+xy)M;Ϛmnlr)d3~LoΞ4w?M !>a2zCl@٣z:ɆusG H!kX؞xaO2$.n/b [ɂȘaiꟹ,*%,O%˅̪x hqv 7TA7Q5;*dTO#aXt򃙁Җ bOq(ZC8aHX)PXԩ%Tq" bmU)#5'tx~-tb/dc4,k##GYxs+mάY 渰3܂ L h)]Cm57"a\?>xX7YnFHU^+I6A{/{|ޮh) 8G^YˤTɡV#и*n ́e^PƎi]%t IX8"k^*$Сºrd9:ǛI1NE0+"n{F؏@==P+Bl o/ߗxzCXU B5vD !>XLoRo(9.m%B@dW2PTb2i@Q毎ecl\aG ֳڣ]/5yՠg`ImGsmOʝMҗn_e}a&NϨ)394b9vvbX `zևgkpT*H-^{(,$D&Oyd0. ۿ=5y\jHa[+X"p# HEI]_9F>6C m\wr-Է DOz3J8 F4wRp͌0-M-z^/mQE8\5|.KcB[*L5=Ҩ):]j9`}&EOp+rnܒO&ǔRF FtbQo[Hh]|bM 2Ozdfñ|籥Щr L`mVtr{\G OdKp©JS_⼝HHfvHy0b(͙0x݄1h&*5)>cǑC$eH( )N!1.c7$_0ԓwv'544ۓ'#7 ]Ld\7 *Ca3/2vUz6@ृ]=@DC%Wt M!Մ˥ZlpHa!k+,*U} EsNCTK?gB /k{J@6.iILŔ-23!ߒd+!S+8a va`^0; |0(=)@@Dp9B)b N4CfDǺ~Zold!x'*n:ELtDWy6i 7?c0i3a`EW0)/ةcxɆ?cFAi`)(Ю[r.,T%<߾Ӎ%'?&{G-ҧ+s+O $7#q0xfx 2?!̴M Z>68sPKx5=B(\dĨ Ǽuqtí}}ԧ]^70_7B#-ШyέQ& >)N)'qR`sȠJjSTIY!L"q氏"&W;GX0a!7_8*Y9:&wkG^0{d,3ݯ&\{=B I_dQQ=f#>bL:>4 Az{S~;U㘜MK@͕.\\y2{xƽ xM3Rfx\^0'g~0n;qsC5vu}NJ]ޙ@؛9a oZkt3BT,7m"t#VثwZ"o3*$ z 9=h xS49uFM]GZkgYD2EBxIV?Vy~d\+D=rV9lw?C̘]i)A8.g}d׏VJ-7|Q>Od ?Ip`V% zۖGnQ VtM \RR>5݃֔~tV)d,)IuY^mKW?fml8dvmZ73w*Y%c:zjtmUw\O|7l; U1ui87ɼЁx^d7;KN$N[;$z]E*b. f o,Mn 0QP, d h:4pq?vpĻLTc /?*efz2Py7R0SmQk.&UA:< Y;}IqC-&[.S0?ٌSTxcevOW4_3bZYN>AFbFh\~0`AбDw:R5U&2WRx_tM8?n/ًhiZgU[Zk{R?'6܂h dHE+>مb^GR$.T=@5t>qp(/q)iFnX&7?ȝB!7]=v[x6//V@ɫ Gj |Mn @J"?͝: YùГp@wWSPf3 ۗAǍ's~$lg5Ft#52On uY^g{ V"/?<=Z5ۥY/BB B2Y(r-Uqin؀9C5gƐK3Țu@\~&O98P gߌlRc3yY G?L>eF7!_O]O5>ύO~nNl?~ TO:a,melJh1CQ &&d .Ϣc>tH˃X726Vڏ-k@y(˃+j3,2c D)PS3 mEoaH| 0T0zͨjNn]TϛI]i _ԡ5\P7;s;\;]eO82[y/s~͙m @6ag&:@P0uqH.dF,Ípd@Zszkچpk>YXB{wrJWX M ӛ0>cuw>a'xGmګ->K瑽K`kqf8*ϛ?)&Qx^"mf:Ն6vk4J&j6c n!82ZHc `9o8NIk \5)H62+ OO?G;6zTr` {JSp՚|n+|"qK'E۱w"GqT6N޸ҬV[z77av"'u*qY~ <3-4'NpD*قV]r,[J+R< :0"V" ͨ]"L{:DeG6gɐ,~(£?+LJ XHfͧ59C"5v4I]-O4=pw8= }`NmHѵӿoNB[̰y"֐SEZN鸕+6la$#OSg8]‚}9$&㐥ؘ%Ţ@\=<,[N>Ә?O j"iaMOY)< 2I-&2ij瑅?0k3) 5xj6nOO0}XT;hiL_%%2bLl'M(l MF%(?DKlo2&>G z&Rβ~QP:Ec VDS0;$[,npu21u.c)™6@GҜqSF6 #"DTHբW2>f%QX `-C!v\Mkمo$>eK!) e;J~Ԭ Œ}WI-6Ü{EmϷxKΖĸ{PՖJG: ,xY-X]%!NC5eGDcoh2z@X{|F]z o) M&#tgMzu'`0Rubh3hdʺb|Lcj2vg-2JXz'FOz C:J-2IMm0b(Ҕ/"So7Su?)䓿MqZE VL|t(Én|x6@` % V,@07&SΘYUd(ŷ:\$/Å"m6vb~#ߝjLϛ"L2/xLos]٬n/V .$6RA wp \f+~ 'h+w>Lp #/i*+|VHr9UYHC}zMz$Ǝ== N/C#; `oP>PU Is"hcY1DBҷʤ`lnMp?Q?7,wtGjOv{EO9>6 5;YQu=MYaYwJv;%;L緞XHGcmDs*ZSI7'muHdM<'JkѨOJtpkj Y~A$R({Bǘ_1v돥jm>|yȮ:A> ~y.'/ !X"k#Q΅iɼD~k1Q? *bj`yYkA/=RJ|zĶًd"/V;ke,)y#Y"k<]*ڦxSydTx(!Z{С,!R*85P;{ZJ4j}* l

y &6h1}qHx49ʊ&tv.^4kxMREx5S>}@NڐˆAP!GMkKd7DA8wYқ>8^o˪Olw.T9 Q ;#`$v>|m?1Zdg; &vx/x‹/Ipn ݛZG>yUD?Czq21g|*/vpYfjZ&M=םMYG(yEꈖ (M$ee9$}t@:A΍Qxl[ |*/z|hNJPh2'6L=i}c%3߰]8J8 #DCejq)S3&RkoȕCf:͌Ed~6w Qt =s?rϓt#qV-!뗛V clɞR[ W^DDeP(! `^idOVӀ\bP+0zBӊP?$ /0K~Ųkʸϕ )ʻ9A@&8:GZkD}V9;;%P gRz3ippڢ{p]Bʭ&g_Wi|ˀ bո% #,cj{- \ CFN0C]jL%!܇TJxx6)| Oob]0h:FוtEP)+CO TQȣq}{ڔ]8~"ZPGȂx]K^@Y](ce 1L`Yi|aD ZPf9(%7rNv4mEM`CdObZʙiZRf8*#rRqus~͕dO:qq/T 3;1∙`;AT'=Y@P&~_U|+hR{OO(^ (3R ADkB'[3;!A!YRM9{w1XƏ{&wp>ZҾ(aK.h0 dߘ6J"¡N&%.ĉOryӎO*GzMUEi̵>U~ ;|E 76<\6ɞPCa0YCI~Ia(vr=]=>|K7ߴhiNJ$eB)>4/&Nq|Hs@3;{OK5JP.F"*iLJ2hm `n$]rITENġFGuT0ªxԋȒf A4񆼝!H4.84 iBXsԻ,XEHZ8P 6/f!=Ȥwա KV$),p: ͔(_FйoSoN?:ŕ]>8&`Smg2F.V!}Nݙֲd,+Ѣ}y ? Ң:r7ZuӃ""s-*/sDl+ep9k{d(0?EDv >] ZB 䓦`ҍZtoy enQgE`M+P<-BhkYTCF]M'8~K;SfeKllK{ȫWNF>PpXj7wWݗs C|=/"}4C1`8%ǰ@"HA꒻|w*^'w?a~Xn|c`H8L^(~xhD7P3K/Y ]`vxOJ)s}#݋zd%bxȽ"L Č[@@g*{m@)QT&`K>jW^\#u3%q@!SYK0%<͙QȪpUyOL^a^Y\z)=Wgs).;.i#Pv)eH :[L(ؗH+yffE#Qy&t@JXD͇oZ)47B(w<|ZŇG|6iT,z` Q[Wg]6%㞥ke޿٬BqUnBq:E4`w#ZUOdHnJį '\KC“f) (  G^:큥^OIJ܄C0:6"2 -:C *&%.|BoQ($s$'p#5:SmM%9?b+d+FM&vD7#Ik{{ a>l]>huLOsiK$j{[U:jH{Ԫ*r%iE$#q%${b#7o֌&#:($յ#'(^%" S$\o-$*BNRnNlhSܡfrVL Z]1[ z}q($Zq ^NRK.m(~ff#QGT"+_*Ï` "]ts&VeCu1.ۥIE, &6 Tj鈙Uys%ٔ:|k*cߌ" |j5(6y{P`61v MAGq] 8c_Zuu%9$e om6\Xju*T ( ^"X A:x$鍫1ѐ{Wv F_3h.5x_?ܳ&2f&qZ®$6}=t'Mu+7l'joo / \)PYv8"4.fDÚ&+]9K7!nu72"A[O04{wt^z%=q'sRƱMa{'nq[f`PZ bu8zhXٕSd=8'K)(7G*]*: B.6>IT;wܲKBߚ߆˹`ZU/& qW6X` v-(|{Ci2/ 4 'n\B. tĽ\fuP(,hߧUVKʍ [.|rxa5bkžЊG`>-kєz"Mf?6J A@PUTҦFƛ[T!r 44d[=}/i&=in91dZ*Nh^Ԏu')_.]cń}6/d8r; ԧrJ)#pg9+hYUpعt c`Yi4T{K@M'Ît)>3ҡ*dV0-?̝Mm7Dz6wNA%UpČ&[o^uVILST=\*GI&Vh8.JP}2!G3I(B-F_}{.u|L1.&w ;95 'S6$Z92xY4 ӘM"%J} 6*2Lt f6Lđh{Š ܅Y >n#1L $8t"f$neRF!joU? FX)˼-W_e AP +j~^i'4 Qy yzNv![Ӛ`ecfpo3V2,* ̇i[sZGTRԝ܌*LU~x Z3B^hU:c/ Sgܛ*yY|q- MoYa` w Eo\mOm1Ϣծ2΅l6]DS=_t==c$uq.Kxq@LVa}$eAt}@< c`>F\vv'*CW5\j4sMUvJt{hnEQm$Yd@߈ysMT߱[P[ݛ_C):xC(lD`ۙ$-xE ? Ⱦ`)p!dESF9,An2߶ ]Co@1@qޣ᠋RMGJoz_P-Rڠsm{az?_ x'>/u \9:؆Dbc$(u4$(ʉ6m'(/>݃S)h{jq &Kj-a(.cfwoF<\fh%5p2,!wƹEbpi/Q!$wث^*WܷY7޽rwX|}: 45;)77W鸕[Fb gs+Ĉ bNU۔PCҼ d)cyLwpu5 IoRƵփ (@ۓO@ёR@Oj㞌YfA+ w\%..Ruc5-EvJ=.K@uC_:b"8)tlmƭyE#a42 B7QuLBL6^{&4/g B$UUwDg*E㰆@a8w}itRD~OR 9`NLc_Abtrފ}fdڇΤ "Ncfxr` A,$5@IC*j2QO:"]}yք‰+is)[,E4<[>6Gӈ~U?cWN*ЪV8, (+3ՒtDkXÉc:^> (_$r]#npQ]wt\(\ ^Z|aKbax Dq |Hct>Lځ1fyh5AP$:0uZͦ)88@$3pĿ ³\7/5^zZ .{(]hiOz,ów7gV:#L}CɸBqΡi|ݜ/gc&}p3<4f`)5xĒ" $w~إbfTL<͵8a8$їSwZu+~2'ɏrn+ 8:|ؿ4UilJby)LmaLӥPn.tF 1$H'XV DUcStdȻ](I /\@R:'1Dtf?t/xBv>"4M#|.vkɡ!Rڔ892EVo7~P0z뚢9 hq&2pXY&ٹ(1 )0߁Â0۰<ɱ*ӳ.$A;7<aR,|W"km)N?JG,IiX81! $H\]c(xjKC%SGkn6?}q$_+ҮxCE_`8v{kI ^̽ P6jm2OF|FĊg{ŀ +@[6*_2_+!5 ~+ G өj2dk:4b 5(p`2Wl9Zxa&NNC|RRqΐ ?nT%BƴIx0s͟-wCy&nԚ9G 4*E:v00Oj%3AY}OK;kuEG]EX֧AqPĶn=A%+򯀻%}Bl+WWH /H&2"={@Ġ !m5 yH#^k{B#4Õ"C\MqrU,I7F`[(m#'Po ZɭFe҉B.V]o\9Un t?=pD4$ajMӅ:bc3 ;e*ߥ.{r'u9tp8R JwL,( x6sq:H-+coخL# >jF,(ڹVeE^mrIg` 1$pO-5G_ur*KT "^@7_q'bƷpoxypV\bsp<s'xmykLWޣ"w.6tFĤMKp֚z@^I_ ºOB:;֘V˩&УL?:p9 N.Dn@VS1pJ:ld NqgD~t&gO;lfZCKR0@6),hTWWPf+9 w.\"B?֔BZjR}"@0 @Iӓ Glp9=~͞X^q".ER.DmL>ڀ[J ϶/?tU!`⠃^Ք3k\g}%Uzowrִ,K{ߕrO(Pp,NbG %o,m%+hCFvr96o`C6yBntcKOgsVߊMU1cxMAih@7{jYztnwo&F}}̯AUԶ ,f@Qɱ0 aG30YThSH?WHZ^)2z I5HP B6xy$?RgXoO9zZ(lj֜d;/Yg0"WEšh&i3˾'.ru(2hK_jF:gw38 ~tv2V{}7BǠg)!=:vI8*;֔h= ~-[zbMR'kf&,(WQ䑖TY>ёmݭ㍆##wSY).U)n_ir]Q KFk=&ʲ#/ KB連vk;@ݸyc6a?Lnwm;>XHxKgȥ#;K"0["/~nI} =%%J8؎DO܍}oDw&'*Eq8h=u`=N)أT9$[/ldV!QZoAO`SeV& p PVq0]F.Nn6zZ:KXt׊I!9@mtMFǹѦwꑈ鯽p.Ƀe-zmD (ǎ!)7I *q6y8,r U\b!ndjӠ|b2jXrRA3ȗ2/]71tBO!gO2 Xmtr֟5n事9{V&+A+j4a~ʏS;><}kGmdz}Gz'RlbC#껷k/:7hwvVX] Xw*Ͽ;z o}Y:6 Fd[,ȵ~[l6 hYh:R _:BbQ#^kI_N/S׊dJ]8]gX"!k ;o{NkQј%/o 7bT)}K7;h'Cn?d]@hS}Rq; HLrqaOEb˄7PKqV r'~ʠ##uY7FZHUܫL<4 O-`FTሒT>u!Jcb >{' HgpK>eZUROwЛ9ύ @Jbgj4gfj}9s7N 0ƮwQUŮc.}+ +nyeH *츒pN̓v ,/񝪅,X 1 F>IًKX@!KܑҨ7E/_OۗLuy6b"o`ԫ47tZu؃^qm"}- [NJrˉ2)zLdvxW%@GrXVTn0 ԔMBKRGM|IӋި!9x]|V&Ӊׅ \G^H2-ά)ge~Zt6nh&++GX"ϑw+L@l F˓_mrX ApXiy6Q^= 0F>39#r :-29^ Nz8_ԜlJgzǫҨC7Mt{9BF=I6|4R)o.xŮps] {XSL3ڋ&sym,p%Wj\4Aj FH#CVm[z_t&c PE]89(dQW|*o\r:sۻV.<j鲿!AyˈM?<цWp`YŚ')T@M4IbT័PfSSPx++O~# \TA^k5GAD/DI8rr9+lF;s,Eœ꒜Ρ%iaH_eW>uOeM|y u!U.œޘɳ_㚱k J\q$C/X,~ҌB 2+R^&9(4\St/JZ1}*Ii )),7dQw>amq%$-76N03g'ʀR-D (H+$}kNEjzc g3sMU-"0QOTf2Efcw5&Vq'ioVU͖m8dAT}?8T=r-*(tvo ;#9%y>p cqMtVNYzk7?Gs.!5"%##/uߥIzz{>k9E)F1;4ʝ1Z"b y,tjC4q9 =P@'mH=Scዅ> -!/8c@YV n45BWO-h{*a[Aau sّr c1FlDm) _niZg؄;IoW؛"UԷZy9]˯< F_^{ӞX^9[kBtgŽQr@GQjj ?T_WPM4d}m|ɛCU@F bs'6]kwro0:5bq0[ XCx 3U?K =ԩ7WHV{?1rn3 ;BМVw6]Zr}ŻHJ:MAV AJԡ#ןBU.c`Er,{i&|w81!“ ++~3 \NO o\^~R%qN:Ak:9f~˞U DŎ!JIOY7+ˆ ~^\DHefHioT83C(WWj~X[!|VezVխD)cb %3/0c HՃeiIQڸ|a6<\ph<%<9|<5ṰB= ByVW !$lc‽O>Yo"~<6-X b>Z_hP!]dS !RxQ5WeNjgS㸽=hHy3˖M_݉ʶTz9#oq=^[` a{ ҅0.SN6ǼQIZDN2GP!bSbTڄ9} ,ZM *>߈OSt:TVh+NM3^nn㳊b-n0d] U5!`| _0hXyg rljxsT?~,k͔<EU63T"OL cf3by,)]0:b~̒ /rU,$D1n ;+ga (Pc~Tk ov6~fD%d /Y>rX6?3qDv g{f@b H\waT9.kU+jv@=+"+EP3F\'εa`]f(>׻DHw+gL$({d CzgtF^2psZ#hPm4y6^d2YDVɖ#E 3sJM:UFK84#.nPg+jZszKjth2>Ztk2*e 5S ğF]杬Idy'0>$ +];+ӈF-gl#,ʂau2z(DHqb|F,7&toaAnZT9C,pJգE9^~v-X؆k^aޥad/@ z,xwݶ@U]'<_R{} Jݕ\약H|nLԺiPxOv lQ؇𤎁i# ^Qq扐=ʣmv]hʐcWeykD7QaKri.ިCpfZFl^flsdͪkkZ? J`r=يa.J4JA4xͲTy̧ϯYe#'I-4]TZBD%u8mW)x0O|w R}B*^W sq!oݦ)2˝0~ʤ_=yE@0$N|%E{g̪M\: O#dE+"IXl.[83r*NJąE%&JӼrrbtuܸUI~qH o.M$]d0ЈQn3(gE`^KQy1n33 QF>uMod'ALyӓa,w}DZj8a'`RP@q{QИe3ĔFU+2 ǭ V@"lV#C&x$[YҰg1F=IlWQ5`U,ƿS~ۢ)`܌\*=v&_'"rnG-b6PbRлuBuebս_U^1}p_VV_(.Ԍwڔ+I1k;u ,8׾oOkt!ro6'򨝸2m۴0RVv[d>^aZOE26@ Gh1!mNW7*\kn:yH?<2M4H\p6!o.5k%)j1}8u=&v@bO\!ZNs5-(,a5%E=H#L@_K(ap1&4}s-Ռ{ J"j=G'~Ef&+RD~覒8?@3\Y>'UK6#5N_t.` fF@e1Bv iњQpLz!ҳ 5+׀5a˥B91Fq;L5&o~C;YPoRS0Wl64(c{#i,5D#1P0ip6V&MuCZ; 5 [ߤ[M BB% 0dU ЧM!)Nm.ڻMïfׄ[#8c4vu٥vtyt< K b9Tðx%)-ٮ9)mO lWEQj;B0忍yfn\ PE:D_+;X{_o9]4YATPӦ}:yF < \dZH>8o^W:$ +ġŬ>:I]wG i\rU_j]UQ*¸q)UG&pp6DQR( }]y/X,qak}iyw8ٛN͵dtǢcRg*3K>bv6@{ `dNC~WG؄QA7(_=Dm#b'[Iƅ뗵sz . YeL$rQ%O_nnQ~Ī.@ÜÖɳba&!V &"څa\VcP W$hG\3mi?!&Ar'm Tj>(|PDÓCkC7bRfOR7I D =Bɤ2vst&!|dn}[R#jVVo+8PtnĕE1sű7X-Ih}+}=9cqg;nN\HP'NLˍs[>+&!?ãJ}*ų&Dt-k@p'ٖT{ˁssJH;$$T&Kuh7g PXB$Os}XB6c[c1%{F˷VlQPL/hԵY'P*ZgjښOп*,͓gBW c$R!6_;JcY"^SrEM^rM3 н ʲb6+ $Q?@N&6+s6L4` w0_\(kk.ť7bcܫ͋F,!F G"I ؚp`W''zY }<6I}O0d$}[1v&!Vqb`s|v-ܕT5;%33C@vAf#[ʉ" Q[AWx8⤋P>`AN:&xai3sk`pr2-Y>[-ke&}ڌ70ar(7T(7Ľ9{OAUgӧQd@2jyN%U%c.@!eL(n K7pI~Œ- IDGܘ"N݋^:8S\|pj1Ng"Ji< q9׎Zzr߽<&М+=+W7&>`{U(f 鞳(z[MD{3\lo؆s"K;9Ck5%}H>&Y[,aC6ByKC`Tiqdat"R|pл~fDhOI!$; nuH-`AC(9D,rN'dX(k\$tLd3#^NS7[oj'#頡HbNeBu? ADK΄_`Thi|Nvd~I0|D6 c<:D(laX.-qFԤbS?Sh!.0SL[k t` ,s ,8JNex{ G[>m4[ǀX?uRncph^."6PBmy5+oǫ~P O?r pN@{fݼ,'0 /v= V_#?M6ŞxF4IF>\FkInrd.Ct?B ?K51cwl2Y!hL%epl38_jm#/_G?T?ӷ̔hD1γYrDD'g3.X ̼(gv-kBQ eG倫]Y*xK5;,k; pslk?`ܥmꎾW*a'N2OmKVg;LX͠0aUw&  ]ޱj1^&{ 'VUM}\M5(,FmqNZc|gԥz1vMYz,9MvV  yԭ@sL(eSÞQV~uy8Z:'Z(ے&?L ixA2 hCl@)O&89 6K aҋpaH /٭GrXn@~7=ʼn7a6 BXPi}ԉB]i WV!A!%^*7/._I\31 ȷ~(ndL4ӾM]r >CpjX>dZĊsT{6ȑhȊga=>wuSogR6Ll`9MNEW0qi$;؂1gf͜Q5c~ev0EVe;CDsΜW[:B+)S;~ isUU?5='3}KtrAY E hk^htW7T9FBf/ǞqLӌ*]pB+͟GU&}ZɎj (BT6~ &@|@_=Hߟ`vʕ=]ZMӨhkkeeIފ{I`^DԈ/>ihffedB/iP=zE h]l"8qP 11g2}xd΍(e s|M/ﮮ o(}C+H4Ǻeԓ>g>*8%*[XdQYX y;+N0J HfBZ[ CGW1RċX%w&F~3r&VReU2?DX0X ;x|6=oD0Q[>}1Ðan!Čg|=,KM RƢL>-uRo`Fķ2B}Zxף_E!^p%< 8 U|QEZWYN ;H|-k)I%Cl򜻲[I&]%ѣb|`nz*;;d&VzT=UK̰8>||1٪g{6 +{PԌ=X#P0߷d'E3wc!66CXN3 qX jP?!+0JryNwBp$8ܡv^D}; qĭ%9pu s  a,I`:nAG+ 6 GJ:]1gy6K`Wri4Aff*5.gGZwc9\0Td9:)KrWsC# D KhIsO;W!cؙ+M_? g4Wږ넕vԥ|<ϴ.Hak'f'zc&#/$ipC >K=UpPP-_1C槏ƤF!S\M}y;bvdRcڴ[qxx`Cй#K k4swGg  ۈ W^efIM12޿QE;r#erWѨecAѲW=Ia# ^R4 /rѥϡN{V~ C.Gzc-=W7<$uu |s2;5йO"7X2qԙ87܎QTJ )-:jI1hЂ\TQލDK<6s-0ڙ\ۧRvM05ȀjeÌ0F5h_T`PsƂi^[t/3W6LgLBT,'}-{]"<]@g̐9ۨY&Zk? x:.Y ~_Ϸ* MIeaq~U+lb5/<%"t"Ad:u1!HCn Fa]+5LիwXQ Nw)?O'aJ82r*e8$2 Vg3`eoV`^C^VN➾ON2RFɱT,>']N4TnwoB. Eh,m),C/@o*T </YOԣaWXnt,wyjփa.!*wUow!_ e`~ԷNzw虉ވs/Q &t4`#?a8**{ԣ!7 TZ[?A<'("]E&ElMzBTP:7cX3{x0833U78rI]ML1KV;=A/xfD$7R|Mǩ2۳c(THZUOqC3⎤R*)݁9GѾ2g^DUWQ޴F]\fSUzϺ_jHmCm&K{YdўA1L&?et*ßcy?4dקFCm&|72UU@sWİbݨ dN^4*5@^U`/ak ]{]E5L&SčIBu&XzqĤ xH0RƵ ]#W8I(ӡ{'7X9+Xz\?"d&,ڝ`- Rݤ+>߉E:Dm 9ND+&Ynj5q1?R^@57QG٣TϻhSZ$ x)fK80ekL9sHq>nBi>B"*쟗r3BVX|H\+ZQHf? *2gV.-M-ѹ0<P׷ MH3nCs1dwfC(>T!?(%UVdxt.}ru3}c_1P:U##LX-jUдmVJ& U͟ SP9$-ok~~.2&N:=8U}8D9?&Oތ5&n xtS ծ9;gJ|/%z_HIHEc${D~#,꧷`̲Q4]E4]BhEº^%쫦E`+xoX@X@ WR$BF`TN7jkq>Ulsp G[9Of#S x;D0M Ab>:b/vୃlȖ|]ip#Vg/&Fb+ _OUOJP(% Vo+ljjvSx>a(yܒtE"utzruWKϬy*Ի-9T,4suFc].p8,} %ֻUp/\@aiIJc,쉴w d\귄ž#U*u\]YC^Pm԰j8=䑄0Mڜ]kh0`^˹U*?S+vm|хT $Hq1ՑۣkM)[$o'Z(;ɄW ӷz-g?4&(ڙ(@':ZR*? /"oV5VrNL"Ѱa[9`t!@t0MH:2&Y(^T+ }v}ץ eչUbV[ʒA|uP'4@cp<#n"O οʇ83{l2@ÎՔ^eƶ"$BxAE5ʜ(z(8|^H'S'mBcT-M(A9d/1Oj3*RR)&&ۓi>AC$EDYSDW߻{!ÖMAh䧃7 u? jS+QA{׬C+_aN /5  o9o^7LWX5m/U-lt9\aRSRcP]'r wa@X/DV6eJi Ep"c+o.;$"9PPn]Q3xdS=wZۼC]*Ae8X֡ LP LAg|UXk9kEKM zN6 #<}tEP4lMV(^ͦkys} $4mF5$Li] / 1Rjw\3a^ll/<:BQY?o 8n[ !l#hfTHŧgss٘~0K9j} +f36$ ΃)b4~7nv >^ /K$UB/;hD=l8K6u+D[=#ȄD)FdeTT/_~cõ a*LԹۀS-˯~0wu?%ӎHJb[ێlӷُɱNEz,XmnR+8.g2`2Ng$TP|oKo˂ THSk[A89]#3r-FI~kFzqv/S YG_(g"dN gXapbk@6nl܌ o~R"71dJQ1tYoZ$6 m8xbu}so>t( C9&<<ʾ#Cu|:vx`eu ;Jd .:+*vȏvFmJ|dbR&{6Rx~D[H#71+7ĺؓ! f goBw asHOXAQݓ`=]k5 GGJ{0*, ƹ w(mW2O -քhiR@j]0O( w1_g Ҁ%=ͷVwbC F駅;$A~67IcV7PNД։uh W sVXAVjB8? y:}'̙Pɰ'@r|/V-FSZK{Qr+*D$ӵ,IIBCVwpx'v|K͚pWwr<htR)nZkQG$eđ8'!OޒM|U2)%eb5PTyʯ1^` aP!C4A3*v`(z8 fW bzIQ&{9$<ͷ1e!ʬ!Y^z61b;ZO0J'l \ol YmVhe˪4XN%9dIB ">;ّ<$$N3_R4R\+X) LO8!TM =_T_LFΏ.PA5-bu%':bxGOGI+fx;ruZQТ[* t*62} NfL"qa][s =a<|ԲƇg=5p%!7n_}m֒}\G^[S¡ lC<{MY<ahj(1ʘg+\p2ys4y]ɺ1;T!~]Kt+/ &dÕ^K,} KDj:={$cOLzjWˆt+izm1nTz}mw+a dc]-3 _'gp>1"Bl'Dqq@{o֣*O$cOJ ߓ?pu_.HEjsڠrt|R*9!MNAݲNamEwRzg22:\({-AۚO32N_|(?j2tk܂[\i_ QFu_u2J5-GQ+ʥV>L{~E@Cըj95|y"_Ę~Op~2 >7UE/3i$x4:O2X5qH^͎4~ea!4QQJ"G/( 7 XsfֶS̾5Tb%d05 ? H ):>ƥk*{Gmy8،1 tX\2RIROeP`,g)/-?P~N_DS4*H(b۷6mxl쫏O8'ajQ J.i|9zCO3bkĜh;2g)r=YTqfBv X4f:k2eJ܇l^5MWDB_EVi EmIҒ j3\=+@Zȴr+94=//*ff U5\AjhNlԎF y':G/DoҬeO$Q-+X|bpc8h #k#,?N% 򟡃p1UU;jlxZ[ caHT^W`N"RWAƠkvzFث6ΡqhK)xQ&x^#fsy!޶x|NV$Q XX{0M$ rTEm&s8)TÔ5U$ ;).#H+Lɞ1ނݛ $}9VxDv[ B9im޿Q ^lSҢI3&; NG Kݚ5 T{ j:Pc7 ;FaS:&{"E3)k:޳]q붓$t&Er ˂j ? 609-;~ۼI0jD~.{ۚA;g@׫~((x!tdzt6f&'jXWtl.ɬ!*t]LqWqe\{7zβÊvϪe}o֭z.O"0uҌ1R [KN)=^U0.|C9g@9aϸ Y#v4WL"%lkuaE !Sa=7Ϊ0t0bQwT.1ǀ"?OSFHŀS fPҋ:M%2QNgtYzj%D g+2:IM Rz?uYƇ21d-ded h@H eR'U/c"5!(eLS೛=!3͕[@ќ&SbgNj[WKPhIyMW:,>ʨPӝ+dw0 Eg?0еղ:7ixP*!o4c]7NOT'1|eחǏr;\70"4%ʌ:z4Jf REES5dT<v,-ٹp2<ϧLElxJ硉s*[3Q^[fTA_;JEiRkCljV'Gs*g ΤyZp>`W xҸq6@;[|I:6YZɟnc|Y.F\-_"2nQĦ2c<ze/>(B0I,3R[oo^A Ζ9 @y}ɥCiPͥ0 !&Ʀbz߰1 Np2aOᒘBg56Q{[*:ʮvI|#vIksp`8mTI7&,p}}ѧ-ZP=Q7.g=;[rUPb Mz3QGYMm|(voߡ"2QRItsT_ < Ywo>g+bĠ"e^.L\QAd&඿Cc;iuF1fS¥G_MOQn,&N*LSG aɪگJα)? [Nkg <;hHb0ܵxWt#$\PR,nypزrVRty%̏3{ɶV1zVuC 6^# $v Y% U_AR qцNİ";,F](Ճ]lJ~ Ukqr=YKQ]1دʲ|?Tx9%G36q~<]bͻ8U}B۾DAjWiD~|:l6 v}\CA`U?L<;S͞u}W96ͼBotb-]u&D|8u=9Qj'dnM֚ţB6$?C>\rg̸fl# f/bD,c|%Hz*q< Uh jf"O#`$Pُ.U<B2?łԚ2(ɥLyLz͏,D9k*Y[G^@oýzń~^Ƒцik>4" MB7,Sajdˆ |p6Diڴ Me Z;aj߇{"(3PSB k_I 7d!ZſB09!y%Gp3S sJ~|e;1ym>7I*`n#=R(D^?QKKx7r˓ e;*6ʤxX 4` jf}Z3R$\*.!ƾ d."bQJɁv&B98Ej}C7NQ*MjTP֢z|MzLmAcaʧEwD&O/!(,$ݛ/RL鸖@wiv( T64 l,:Gb7=4CtwIJ[ë\,MEq &.?1流 (**pZ7/$QFZZuR19mL +x{[|kź@z`~1 3u4 QQPnJQ 4gEPέݎ:r!Wsk!Kk!_Y9rzn3|`4ЧIvBtdt~0EE9NgBMER( c޳Gm6ӹiT<#)Yږ`ƾ'ѤyƘљU;(Z!xu|-,+.rJPsڬv"M21.!cba L~lJ=6<`^ oW9?̇\0%:G8 $9ϛ ҊaRon? B`.lfLA08@F!E9@jNqj~wEݦA6g?+<3e%㬴~.y*(uI}yɋfY_*8f+%> EsTB䲓ӏMD5a)SVvx#ጻ:[Oug݄d/ffƹ@6$$'|u|ʣjwB7$c shKO` YKֺ"*< tx.d,i0b!lA|h,|JYXzn Q86vˋ2qi7l qCZed"dpۑ U矯 z?34M|3ȂJ`3v17wf |K:Vl=*Ow`YqNf3}w:M{U4Ne7\P4Ʋ^رcfkk x}>h6D|| $yVؒ`_3c6H4zA'p;JPk)kLvoɎH:ˑr<Үc!*s`f;, Oy/ D-\EHY/GlB8jC(X?"0gD) 9,ȳxW^FZ~\r(2uρ(S_¬leXKBn-xeDJ8()il[_o|N.0HCL I %.Lj Ϙ:9G))!vނyOLq(¨:CY ]F)r!DnzdЂ5NK eQuG^Iy1aQb c/e[u[mxpM¢z9;##<>x^V׻JGIGPM D `[g]nLG<,ܖ;CoE_כbD jEZ2M?)mdoa0f_Dqܝ / 3 GҘD**f4b.1}禄¿4Z/vz/=s[p5oܚ#|WO1!ƀ߀wvP~@Sjx mɿe9_~@8;dp$Q/V}^-pVZ@lF{~ p$3@|oٲ!3d~4̇t .t7hus@YfnҰ.a[x9Ꝛ8scS5ms8< i9U?Z(I"4$ %Pnj[L7%.W>ufHSxzu7m4E|K/v-AXpR(ӳ@q B3B^h^[#c2t ~ k32uGd 䏓7|P\8 ]]al%twSgli@(R c1ޱ'\5ܝ]-~{rpAIf$;lzփ>- tx"n5nǟ'< [AKQ> nSM/1M;v,Ax~ZoǭmHó~8SkHJC(2#2#wrk4ɏItuG3L=^Q4iwU (A"Gy oYmQN[)t1"]-MgQv?\p'4(qDz )ډNxé8>橓Nc0RP[^z: p􆨐ym΢s R&͔&}y{?b,LnWȊv#dIbx8TdR'o, *|Ʒ9șY#٢C&2敟cۡxfތZÛa37HItk{kW.u5+2|wPV= 1/ &)/-`Di@_I[Q>#LO?a]x1XW:'XSJh{̭18S98H|@ G/dH"I{~Zx{aSJ?>Mv(K;<\>Ǡ=kĘ[\x(lJ%܌s- S m{2;2 ~]˦lq>Juy#h[ѕϜ#ccUNizDhK|x .v5y_kcJUφ"Bm w*OmTzKx„*-=S+^Dڎ *o`H]G,c,px{Lj,O`e+ 5E/4 I+H)PޑY̱hy3R57'UB:pa ԋ*.wI[ <?fhnq+p5L8kgj5cbow%2vޱd 3b=LjTcZFUփ2 M'꒸g,npifne W۞kmJ  c.Gix fQ˓D!Y!оO?[5{yP~+U- )aHC䱵 ֜p;Ya[낺L;kTe\ۺQR U6\H+ Ofg:w]Jmsk<@6_8X,-[>/?GPq9ՉHU bf¨Bn}B2B+"F$H *EE6܏Ҭy";dP3S eKCc0qQ>i?ذghͦV!"sk {M( < U+fHρchi U3駙,.g4s-ulXW"nxR 5yFA?-3=&K`2@[2)?EJgTDKCU\Pc}&}wxѡ~n3f^HG{W m]g˝-% L.{X{o&ZַK -IlmGlḆY^-䢣eR#8*I%f0 ٮ,h+/͕eZf^,Dz$8 b)V&0I:!&[%ug{ҌtkNh>GH5*_s='Qiy:.06>m@x:Sw)J%Zd;@U0 ˵-(RDjsy\c4'Ojr&Ǡjd8 9FH䂀ʖYb؍5SEy!7Fߢ/,:ozA/s&L/P~!*rKQSWzWF;,qYmZ ң--&Z5J~_Ҍ7eYW:Qb:`q&>tPU} SD|v )mcdzKViR |hg|bʣ!CZX$f(׋X~w1Kqq߄ ~0^FIAmw2E } cH{K6kQd*Eqn٪E'_CU3k*ZiV׼>>g,S ĕE73xF%L3x{ME*D_ˁmb1\ BP*lw?c}T3@mRnԼqĜ%£p.gͱ>(9o*- :N!{%o " D] %6Y^},FyzN1 "*p .5,TA3A삅orQN-`~ɣH҄n/Y6I2CK6|Q>t3en&UY\?|р3a%N7;M/Q3߲j3HME5m7sf9H)#?Ѳp/M>$d]¼_>.QYvdO7Y6Nk!{9P+̾:ν @ذ=)’6MQ4?~-XW(^@yO׬¶r w Ԟ72nGJzEʹ__Q|[+c;݅P|~5x2BhE#Ekrl;'zV.s*nXzatxM3CY\E\+_ Fa{M(O,?7rFRM?k;n9)}:@.U* [z怎FZ .,2mo)⥛/W=mail)<)RXm港ZqQc0w Q<+4R$,`h.-*D:^<]v3咪fNj*y\A9B/- [a?ȥDTLA ].Gb;I*J +qDRڥG!T(7H T$#Gz1F# N;`o5xj32ZM)JU`5U jtb0@CFT+G~лrj/ 2[6G{Bmy:{;E[.vݰX'wHϔ0dܒ5qs8 o+o5Oe::S q:VQzjDb 7, %20R;վmnlYO;s.(}y a\7Ӈ=@ǃ.H&|kR%jnϰ^؆CnĥX"8G2DO<= ]?̟l B[E;' AY-8)oQ݋83U)W=|oQ28(}Ǥ #L2*%U Xk&kk|nU "Wd` `)\q2ZÍXc3@*o},C<;g8C؇\H0ࡡHo*qtjѢX0њ&5k{I5Z}=aV~pُ92]DKuZTO!VXA]5mB>%1@ي'eՅ:.>ii V|LhϠ:6!~v{%{\.cq0*<< xZ@oOX>iHYC+t\rABy)ubևVa1A\MjeQͱWn1E \ әI.m%7΂,;3$qo[?%Z+c^+?j`jsV7hdDxҡ-;6]hfB$oZU{-%uQÜ jZ,N7M)orSrp=#ql1KK`;fCqC\4A~~7Q3vZ*Z b(Q_=R]Ŀ<)j@y]%plN.q~E:-)C:LKR$]l5|MDGX(:klMguA 6jMn;17}*۬Lz+Z(ڜ PziTzӭu|o0):0wfũk "Uz?lY3tHA-V^Ul %R,靼#B(q# _-4"A>Qkj?}ãe?bS{֯sn~3h1[*Y.=0w7Rԅ6n:3g8ʵp'a?i7# d)1?yWx:`]0ЈkvilOc'/ k ,yetsߘN]IZEv͎ G:'PR 6~:k\1a&s19Hkt( ̛peۗD3|2u5ǦY3:!8GyVzuy/˲/WccEdLD& @/QԞ ̵0Ͽ#E~!Cq]${* G cK z(I.:vjV!G&eW;Ӄז\&߹N71)V' E酜A1c28JYMT2om 7&or HIKfIK}L Wą=$wrVEP8ƀ~IȺPA}Z|bQpW(7â xl?M h2] (^ {-?w{Fsi⬪]N=2)qy8/$C1ĥ_wF$MW..PKW2H] 0aNAٗ;bn1`fCu`l"$uSGlΚZ{=Ƚ7ѺD,qwwK|"Geh`.f~MN9옺rCrH*SmxM®Bi:em3Xz5̺ٞIg)A$mrͮnU@9)qlKL& |H縫aY8f2*u:xG8='c{{ Jg}g۸nznĨt;{Hn Ff ,”PN2mL)vD%[C#IMda{fSyhC# 6vіf@Jk#~K'I\֒T*XzB2ᚥh?zTe'0Upv[!:'teӆ4@ђ"S<{.Äc+M( ^TQ?Z1Tt,B(c0g|=#{/ZF~2:?Oj j(vO@DBy&i#D\A&HY+%y#Yh)D'h@7PRܥg= s3Û)z~l~2e%CZBtj379d59 QpaH.QR쩇+03MXS y4`m-ano.^sKA /lP c%&f ƃ#$0Eз3Px6kL8&suD+[4!L 2BW'B!EeOO4jRMeWZI!uQzxDZ\P\ {A:&D܄=T5-K{h<R9^ߕMG~C. 4,$ s ]z3 a2Zh2pߓF;{1<ږU,!H:AkpYG5zJ2 >L"if1`TsQmrN%w样>.G߫s.}[ 6Vɐ GL<0"0K9񼿽;@_Z qA]J2_DCY󹵪>b jrefǐЎ(ןfogI4b4\V۝L~VğKTnV'>-gs߽}+Zм%@.ú -a9%Q^6mВy""N]wNg !=\!l,^clu-8=Rk|iS&MiVe  :Loubl V24 A2h"oB(ǨWF~͵~Pp$1lbՈW8_CMXۧ48_ęe?3&Lit6 /:3$7j^J2ͦrMS 2 ޱk{Ccˉ@J*F kwYؔs'[J^$\Px#ф{YEɊ=˱̉S]L2t3;Wxfަ߹Ŝx(3M JeRX)xG؁KćT.S>M6DV,kyl'.O"3x^;%2<*y'|F$̴:G|lȷtMR,m%w~ CeKj.-Sx_-]A!.>6%Z0^-9VG)Y^.뢡XwTj52@6tx 훥}̤Vn;ӌ 3 ( i*]&bT/^Yx3GvIy]%ߡv}Gs 2 J>wݘ!G2 0eZ FR#T !4l!މȠm>ZEg GEUuOQl<&u?/~v${kvCKBƱ ܘB~c"/1|z1݄P852j" 9Jr1IIhx쇑0`I9lZAB3tR! ~_/*yӤ0\C\r[*o:ZX"k 0 ;ةMj _< t5#Ƀ(D{n& *:|7tz//4OQ}Pߡu (1A :z'UStP@\#?ۅKy̶I 9TU#{yaiPHr{,Ymث[o.<(DnxY=2g-.;.GN,U% jFJ_3kotum5VOĆÑ/p:"/'> Q YEonV8)}$Y o'nsA8ZRC[|u5_C6Y<ꎾ|n$n2 cpAlpY 0V /BԲ"3!"¯=?Sgj!ZDD`&UftDj@9F;G!mu(4sm0hp8@b_۳9u!6 ȧo`cSA7 1zn f0zfG=Hٖχ@;V)>E|Z"]Q,Mϻh4% 싀c'J`VsoӓQ^ fmh&nLZ@ =mIVSB~-Scǜ)\7?x-#GsӚ*/XN fI;(#覺4*yLQ+|d鑜9rlPWWX{H K$ { ΍:aJĭ s?H%Lǂ_yKL|BAdƟB Xǫr;G)37$% \}~Y4hN4@Uʹj~gU]C؊h/{R2Eq ǩ V^}#IAWE61_v ,d ;|ۛe Kz{ /n-X=l a u<Sd20t149`3ZЌzt3AY}: Ε9ML%HL#TE[ʺ[Z1= i'|-%or!GiP-<)Xxed:ac)r% [D-,^{_9*"ՎUK"7֑% Pz}Q:Em^OQqpWf쟧{qIֽ24-!+'Wt4E 3Z\Y tj۔Ze-Ɔ;󇲷0 TAP'NS_)#il%acg'_WtR 4 eAz 8✭ 0U4O"*l23ÏJCTYƈƢX 4uA\,`"n.x-F[`]Yp;˸bP' bV{!T@']B즴{7{pigj28jc- mb> )K{BFkODFU_y QC_;S0nZBVZ>g5e>+i~#p.$[F'ֵw. d-GY8*FxQdUA s刮,)ٌ}zh%+IeUa-vŦ.^0B6֩MkoesE(ܳˏg81B0Pgf)rݎNڙzDs8)8}SzT}s%+Ϥ*<0yXCj}`Ջy}6DGfoiO03"AmǥQiW \8UCgğR)M [deͳf)udw}q1^/kklZ⶘ -uc65!֡X!MS"Vk5 @~c! F /[xE+J~(} H/3ggt;EŷˋCeX oK9^~ǚR:"?;۪ʶm> xI_^x[j797Р"ŠPm[o hWtgbNrpD%\~ۥn":^y+>ijjs@f()_:8qhM.F1:SC6խR @10Z%pڌM-_XC%J3NGr!(wDYKS΁)kz2Gyg_ A(B4Xk&^ꑦbT0I(2"@H$vF+݉xb:wYAt{iVXvG?J%Svpo* ϺSܘ2ΪxyW_BVS`t0(hP ~`+} 4;p,˧7u*T _yA`j.Ͻ0lD%uqC$1@(/۾R{ ,wCy=t|T:%LO2VCxB-":d"5&usx|)tа &avISGx{A&:,7y9sPE٤ww__jL$$e׋j͓ӎQ HQ:[?AQ0ނXUs=RRԓȼ;YBA\"J{nK}U?OԹ~`5RH'0\ȵ )Xє(ov\2ͳ|/_}<S_rgl3S\9l@ZA.m(G ؠD[뱤imv5OT 6xv`q/tyI;Y/KȽͶ1,Mmć1~ZNaG[.EV}i:KwY!Z*rKx_S$IU [ժkwWazӶRZ)0'frz1tD ːg@اJuY[|.کSE6`_TAAOe{f o+@9&fIP؋>l] W;/%}ݤqpo7*,1{ gX-oGaԅfNz3ⲗƆ@@_TO"L;%P҉LmAo E{| #u(m$eKzY֚{Q Jˁc\3p5.0D+6Րd|zOZ]V[M!lJ-I?tf@p\\ '̅.{b^`鰿O(MɧF(c|do x!M>cdb!(кA I{I(z5h$t\QU kK X.|2Ւ \*‰*QDVQQ¯hh}-<31|YX(PciSw 5=-.=p7z?*zqLm'/7#ҙEdIMl:n32ȵBֈ9f /WucI.C A홛t SWba&oFkIbGgPU|TH-[('䆚X'M?qGpa}ӓkc( o7|Qpblb4\I Ŷ~^8LZ\F2k+Ɗڬ1u70wM,S_O4y"Ꝯ:*nEo[$M DžDžKa q d.)o"0][f HMU HO_?5;}Tb ,L< mdGEaV^zힳx Zm 0jc2L AB 4ڷǧ4^q %A[5`iLm_E+ q=< 272w_NmƳYJ#]$X}2d~3!r?sD_d?ɨ^|R%+# H3U9hB8;vSBKh]KK =`{E;]gyJ M4v]0㌼e 4ўZ`==˛G#^04UxO^]l >Xf90u_l8⎄_T#XşEO!Y(B)V 8c~e*/p!` xZȽ aƺPXhWOod *J SnɑlzOz ް& 씁 wyT7(kd\9gRTw,yLG@I6bs,2+'>;He$ -PgcĊ:$5Rɣ[\I+ne7zp|d1֡ɢ`:[ymKYv͎aYG$.jC%c_M`.jX`tpP\ E|j2!d*+`Qg\}&;&u^5(NS(2@%U1miMJ+ل)wyiQ]~?H9N2a]LW Y{ÁJz fo3Ù_:<@$4bSh>!9הIrN]˩|PMfwb :'7 _d%#\Dx.h`[LP6H@w_4FN%B T]ºsa{S~YOئKz'"o̴!%m_g=-5␂ aMgVtdx3 [$kIh{| GRll9#ﱉ@$iFY&y~##ED6EZfp r:Bӥׄ3_ٝI6E+ h-DG Dj*T}o7'M19NX|Z3Q@0 ^ҋHyr %^)}VpטDg iy|e]>n6NCp c&i:4㙤7i >4PFe ;>IA~4_\yú>0LބMӏS"]چ9MbK3 _;]!/ yQMj}G~F{p=n>v1cV~/?`Dp|Q,I o7YR@qŠ@u:+YY=5={P4dfNJaom]5hU*9LyZjbWUa/k[FIQtl$obah7l*H֠Q I'w;UvPYW>k(ݔ@8MQdsinmBԧeo5ɖyW<ԫG(Gғ&2+ע:e'wvaqg a"?VJpGAPK.,纋 gwne *3{7QSՒi*(VG@k{;;#b-Yŕ"b"Pݾ6kjt2./&78K/Rq;oiz%$1ތS\ Mk44. k)Ea silRMPo3}ʔ.p C?jM{PB6 z=#vT'N$`G!iӷ'y\~v%q4Sh2oͬ;4*yqiVa5jmO v 6$eɦLŶa$pmHޥ5u׮ʢV(ޯLO^!Ρl^-OQ I0] B8gg޹ge:G[ BTfȍci1Tsj3SN3BO(HNRB߬fςtG6%_K$T^V$1T i0-cVipt4 5o 2jF~Y[H`Ȗٽe2I:ٶ7Ba[Cg#xTM )=KG;i7=CO6+%.hMxVtUʘFU.N$ixԂbDd>gOsRX:Nj]6 ),*,ܬKZmOH+nBqXȥP:dlXl旾WG.teit!hKp\u'b{b3)5zU=Ej,tA=K|Ï&5++*4td1XCH\>| &W@.ᔄn7ֶECqFߑB99a\^ce[jAuih_Q3c~8aI/{|~Q݃q#azڡkO Vo#w_DcO,Cn=" &lAese>%A+R9Fא(+f1+cSBn{59>W+>b%&!̧{B`k1Y?fm=%`t5ÅBҡ7,g ;a&(n aFDxQNz*3F c(hTʓ"rz#ifʝ\F>UbqpafV”G'т>~]i%)CyU(X)\Ϳen3rs+faDgx3/(wtEf&^ ĕmgP$Ÿ~h~1pB]ݶ~BMUToyʲN|kN1H;T![zw4rI3N;ii >=Q=d1=ÕXo ߴeGH^h T3]ɐi\Ar!*~>NQ"}>c&y ,  ވ0Sن/]KPuJEcS03 INZv n$4PqCpPֹaz`;7(8 bA;wJBV$vD_ZPw$[w$gp^‚%̓P59OtG&MdŌVP뫟4Gh*T 䃰 _K?h (hSP\e$B0ȗ<;ҨTs0 ~Zuo]%~7Ct)9&D'S%r2ҷclD,t*s9nQ;Kkr"~ag'p!zmc'0bӑyґTlgOs Vq]w^uRv!>E4  q kDgt,Q$'݌G:dM?=@0y@h;j@\EID &(sIkYh&lgڍJ떽NְBv,Gs0eZtZ#Yn0hp3c%Z-QD{R5!Jr,Ƭ )fè"1'?qGShF Pa2)c!"?=O S6]ګE~p-+rXw"f OfʹJ%^nI,* `>&Tm*,$t}_LŴl8#\ɵutpu8zWSCw}Hd2๕. 8+Ik[^_)}LW-O5%1q z{e`EݸI|# $2lprS] yRQ`*@E m=4Wan}#u1gigu7(]@!ykzIStVk*寕w+62L,dʶn`IfbrR#!j[ ^:cP~)H=s5p OEsr57EEp+ZUuW 5l`̓k֪tp_V #= V',qACuϭB@z ?jn㡨(B9 Me2\*딃UNw2Z uuK.u'b?QyNe3Y~l XT6b6&!W4+(lO1soYB.F8LVEMW=O[t0=%Y+٩CҞBO+w ċ>y(>Ȥ[, _hwgQ^v#!k^533 șv5H|PHRi}b"̗hOd7lhXwO"]$>F\A h*>C`ݑQ҇RL k =K갵9i⽁ NzMkfA dnߥ?_чXu4d9U:c.y [qyZ@ynކ=cBP_DXh4G![L2eĿus- ?#CbA]їBpG?TT LYL0uKWcgAKrimxre#@M+^B2 5yQR/!) a "d=f𞸸r7J>pR#AGV^س R]VZCzㅭv>-OGM3&{,!cv)/PY@êKưG"MQ> FHL{m> 'rJV,r1΀,/?{[W:CO|猴z[Vt0\ 0nc]i$q #tGL~D.@K~*?(w1#"ec W: F;I= fq.Bh~`]Mz_qD wdB C+PG[WHu2(>Z'dn;hU|<%m:ZdDQUS=`,VS!tR*| ^$1ߤFO2I6Q9 k!.>PhWqG9yM26#(qL5gp]A{ ]1 Iߗs7G%p-U.sϱSDVؠғ*0R~ t NR%PA}!/2_q3diͫ[ 6e0h㓐bE$U(x%Gڟ:z2Ge @7ay5-qTj( 6V[, <鬰}f x`VbD׉Zƌ'~@sWze2 +bA[̍9(_IFSiJa zFjv9£Z[jE˟GIX_%4(RyvlKp;ýT715I.w`5ieXueԗ$U,wdnIo_YIZ Be p7= "@4mNOXIJOיu5'* * mw|| *$y͉k[{^Yp3u(o@ļF0; :# o 7b3h sn_#Yʦoʽuj{L2e?N6ðy#)V˞q:0`|/vR4pLָ4=2P/~GBFc?[(qKeR*3`sT.By=D tp9gCZ8k n*(jly4rJYq~|B2YV5u4lRf,Fࡴ-?b7Ŗ.+/sa j70H_M(`-\zO ܈W2T*V=J*{n{Lk6ƝO$7zO"g! 7'w֫C(NDtY^8Fgaڂ$u9݋ c%ߋ`܀ {/?WՐh,b}йQCu2O:2/_v $b! yPD#iEWLG]6"oW7)ZP;T8gQWn> Rd5DkMn^?(JOޔOS QX[aLe!Ԧ"\]VULQݒ~ йQ7FIvJ,fe@ACI `D \/&Y 9߿Ĭڗz;~|L+qJpn%p<`}[] wu<\]&Fy5bJ: nƠ5%btɲ0vD5R.d%6u9\\Uam+*ԱP+Ԣ* 5ӱƾ[ax67&YA QvYTH! 1ZEPsseXXi5*:zevO8'W5u?BҎ^; VNZhR|إ8{,S01\!TyyXJ:T} mC`t sq'bJz_n4Zyhnԭ\RF;g(lt9ԚFǙsәF.{2Bph9mЌ?d VJ⁡M"B0ϝU.u wa=q%u믒e3@g Ux qU9˜gNq2N1'kK WZCDTP+CJNb>M) =HIG Ι*&!8;["a@m"}! v9o)aɃ-i@~IN=ϡ3s_󄨈yL6X}nΏ-֧݅:D3Xb\44EQJC .瓜뷵B2%4J.SϤ.zKN.8h!m͛k1ܠ Q`!8wwz-.tN#˨ӣ s!XKR#g*+XPUE8Ng!PV0zge/޲aQP/TZL%C8_NࡗE[y]8MȒ˭uϑ.]qU9=5:Fo;5d7İ:ke: C8a.<&X[3s)l7q5ah޸A$,X-WMX J5k!zM&We0cs$[zmjxVmiwʔTsR}! >L 0ɫ FY:@{+mebtzcJM_>TNr}f 1!]HFsuG*~MؔX6X]$:EJc= ?Ta\+^J+Au3.lM!3z ;qmYH|YJXh$,_6n4?C5`!o R !/TqtH+Q%nz Qff8*O ך9XAUTn{nBi( 4#ã2}adWs$x6<Tuk"p. I#KD8&?mZ VKߚV9ÕܙC4@A,|iuYO)f}]ͧsϔFy6f[tרFlV뷱Hd5-5db'uAɹ.0`uQҀ=jp_0w XT5&^)9vm]zW>~bŴ~,#Mrlwx*=лo[>Ư_t`6_7HAэ3Iӭ"(g\5D$,9B aїic!ϧ& *"Np@_?Yp`<@y}ġ䀹 mx ӭ*oN;.[`%\{Fk5N{a"uKZXfWϥ~Y+n+G#ϵ[ C8]1\:+N7eYר~!Jsli2~mDO4eyH!Æ| "JI؞RBʇ4+14m D߹ R0) Yݑ~Ik}'tDpdfqƍ^lrj][z,b[ `He>~gRv1]1dx K,xf+<2OUH9~r:o[fvp}?l:aeՎۻrƷ}*\'qU#a5j4ekm tHN 67^l8*>6SnFFLo\Gմ %=W YVzrUdEר*D亻S r^h: =GwK %N 49;_4BÑsI[S$q, ցp c4BRkkGOHab >pFdAh?]ަ;"jjjyqBC8{V J?}*8sU uspyB_~ bLC3Rouݕ}d.dKqV/ڲ^hml.YKnZQ7@qS: wsMP[ٙLsh]Yo!*hbGFnLWϫŒhť(BeNkUzb^bU] 6<8 4+@ "I:F>!<ߐo-Id`@B}ߡ dՖ(9U" ZuĐf9hDj!HüeI"<;Um=B(m\OK˔vΚrj?{vLT`eZ)ԩ&FNa*%-).Dɶ y[iY"oK;ALtu%Q_.AŖf#DdnԧD% W!7s(E`ЃVM0*},l i۵:nd]eTf[ OKG799g6PJg{Äs+}W6,dL$ "K JvG]t}G#s+睜6*5^Z&ѢWީ6)(4du͐M~yR-l#PН}T36 :֯ H+c/xfɩkQë6`\~y044,5N`v4e i߿>e)]PeCMmeNL/fw[%U\WUEHnԬ- CLtLh$s{b_-cwK3:q&Bidf0 BbNFYIΩ3ŀW,Q- T>+'݅=pA xLVrF,u^G,ѹO$1F_/İP$W1Y\PMfif"__S>*) 6QiI6@ U !} { wj ԝ*Ra$xä 7FWYuXB#5!d}O/|[Y+`[[WZrI6KBs,ëSCq&K}P<>]+;crM'*22&@{=6c 3`27dk#.Nxi\zUԂ=sCjia'{W$TgҎx;ޝ-VÉ4uY{BSL\Qh JshybZ8Usjr |u:L&Vtw< Une8,ADbePY?!ؽ}wrO,⪟PVAEק ~P};Խ^+ `L*X 3c 9Ed> bq,ɂo%v'"vUˋ::lP{{Brqc E1̫;1+Yz =Y ) O1l3$vRɣb}&c3o\^3mpå\P{2kDAPFg+mt߁)CJY7i.(ӭ`ʀ׽Gsyq:6j FDxgEJf b.(TJ 0˩Qltx/rƹiwN= ssHP?Lz촧ɧ:[O U`w4$!5aD z-E/P~FTp= 4NEdžy<Rѧr%x:NiO%@gbr$ -GPvf:ǧr6KTfyF ep|&~Bvk^~z19%!V<Ѳʞ9-ՄS逊cr͆ _H]h( A ٯfQcq]8a N[;R apq`Ė &fp32]z%~.7겄pB4Qvy7%O[mwc4u<|{|RZBڟ (zo'PHLZKjlКh#[5]"MQ-E"IS-$tOêտȼ)VO+;OUP-iX8_>jR{H]cfh*dA٩sf[n|?w ҭUhȃFY [!-!:VCf\gko*疾n4kZNjvc֖7ʤpPK J\d5T5gʋzBmz F24kz9>;$V5%:5?:{ZH 80|ܼ%se B[m3ܜ$ҾXxF`ԎGKE-sv*S#fxVaJaxObM:#dQnw(öuΧ,mIq'H Pi6N#l1Z6bPl^M;ʂ:x>ZVp*"\ ASK0R*rC ;!Twu іLa> U$_whX}(O _ {4l6PÎR'<:nnwcU(vJ n7ͲX|3gz$[Ub[`Cr-SVib rvhPՒEAjlWde`gx,MS5%,_Vz$ ^Fa:Z ҭ˷7?*5G}>_mgp6DYO.Qi)x!1u!Az0?'_Aqy{4 MNNy0WkR)c3diA`_nB;:ojG Ff7A#qΉؐ5nU%yO K\sѐ(,x.\!9ޔC+66To"HkT6J&*[ӕڑndyp,CQUtg]~J_UR`,c5!{`tRWT&%20e&IfIJE|[}*ՙ _42ʥ&|<]> ҋ1_Ct^>#fkYEH+"$L5?luanJ7•6j]j搜[ rU`BoOth\i)#N˘foT|l.b c| f*{YJpEYz4s Ffp~ t<϶3uW`MFz/nިIA쎬͹Ycp+p34v%Gu8c{iUXvFЉi'b5U)ޘ블dJG8k2Jk q4/(bSfiX?_0Ӛ1wd2)"/AA 1Z#-<7WDuLGz0ui齊 3Ki*́.Ť:X-:UxH8q]n#|C8})<.o=Yץ[%x5ldg _%hX1B<6bI0W$&!a1M0*ZWH#"ӡvUJa555xF,(1b9_U uM% L !g.2eǂ;.5ꃶWhNxٓ?}j<>e{ o[;:*pMiClsry3RGbrq9bO=B#JTcTk}1i0+%y6D hy(H,X垄&Wæ{u$-uo(X!dLj%WNE|P2@+ȱ)^I,%,yr[΢HȤS#ڐ_ .ZD3vt{:V5 \(*Wg,C/KcZo~2P& Z_6R\B7^dyP ax?F-{fH*+$jKz'O{Ly7UxcR\ud]C$o|ү);jS]M6+zQHe2$G4ߓ&D|Jk^ǃt*wN6ۖ&̚_f$,Ԍ+U*=~3p'^mlDn2^Ii'Q-,q@BM Ë5O F[R1]j6*k]VZ+G]$Bֆ /yȎ,9|6!iU7Y9!l\M_;0b̀NZ]u:{p`{؏/Ǖ\TrIOzp9ii=wsC"hMrJ̨u̚;DNCwqB#d|򧋳q0.Zal.IDJJ`G !#DBo0FFTg\55iev B,WI22b]kGl*"oǺ-XapxqSs$B*9xk|irJ;m:WI~ڞulq+C\yS}ڴ23)U՜Ȝ+^%< %a. t[xm(gqR; <EKH8$FV~^6*^VB0_F#*i5ӝxL=r vƥydji 1gOXMb vF⢦-/y~+a|dO wߧ1FV <DGEi-R*qacJBMCUrXQ9,[SV/K>'@f棡9['7ﴅf56j t4ڬ+!$VSi\bZg`@qUaݰIM21KJz /6F.M#7AEvA*)h_V\9eaU vx!XQS $?]sͅuVν<+կǷJvFsŲ"p*bU4\a!j'+O2vE@ٌB?6C4.fN}Yci2U- M9jVKe]v8HXDxNRTάrŤĎ`:=,Yk"pTX 6׶I$&LL_ym^y1ϯ;*>"k՚>t>4)&sh~A`WLfT7aNf;B 'P&<4Srfeqg%8iv!ݚ 6y.-L1w6B @[ͫMLSwӮhC ׉fA@_4P180B'K9X?)ӕA.u/Ľb t {YX]H_b,hWA/m6n҃-b3+øanls$@r ]Bg[uJ;nwd'u=qѬ7[5+wZ^$ӎ@Yt8ߙ!u:[:!5io&Z{vzb)77͎NSW%2h2㩥B;={췁XK<SS9o3K IZB1Q*QX4&AGgY$ГDlބ?-SQm,Z[Eaol][G+]u̠qm_c9%4,'>;#?0}X0*kz{-ӓ5[O it%G?, 5ԤXz(oTvB uoi&m܁i{R(C`ӡߵ ̑s`%cJSN^rhza->I,{p8:sC.Q./Pbߣ I!2.]B;)Q;i{^/Xʔ *l娏x-r3Fp~8նVrߣ)@+++% .kȆyPYHdOEg!|in.[bRD\IX퓓 #UhrSv Y)7`&R =CkЍؐ^/D|O*68ac:~'ulo%˳~FzA}| 8lSSV7çet6&\ 1mHZk] Bo?Bxic4+ϣHҀJ%) 6"lgЬ:f&Q 3~k#AUvt] ЌCECy8_1\8TkZ,NVV,Wx Rʅ,c~j_9 ,R`;t[4085g~P(wyN'%fا8LR=Gс|֠TV;fV2AoKv,Q{&p&JyԑLh"e0hmu+^P$ӧw&0zuk~10ۑ $yׅUPPCu%*nmx>V[?Q '-C $©8>U"N6W^k[;Op6Ӛ's*{f[JhU2 7PX5-%24nqOyG! ޴cZiUJYL@ٲ![bA > A7D!ZT|]!!#你VAw:cnodvu < ޚ3TVV-=R "ZK UtRE(r'V;|pO${G}9āx&Q@)k:/Y$11d\<bsp}kVX5 [ċK0P;Kܻ&]pp4b7Xϣ+kCLYm%6;J#x3BA5u/f`Ol(әGTefc}|gOYu A W5ı];)(N2NgG4h2vN II#Ow|"mIjd+'+b]{_K"i]?|tỲj`O`rv8X|?w6Yg=N衯K .d_阑4a7lƹm w,8hw$gؚ!L4"hMkLJhKtpd |{oೃ%Ll#m==:*%T>I!.=opoEo_G~j=)(@ 5KhW֕(zaHJ؀9I:9Y¡;^^<[P},߅JpG> J 1`3]j9_[Z~E AT[|娕7,,¢g({c^1Z\=SpHb,A?YxLȴ=uRƨĶ "S Vga^0&!;Nrܢ~'A9V^~]صy7^m Mq\wU:`<9\l2i_++e&C&imc?n*.;׼GQ8Us_4hÓ"g'|엹nT/6@ w07:_vpliكIN"v7KzAKYHH}D.kw:Qa3|Z˫M|"F(p,-oZ/0/YKj"0KL48j^/O<"Mˣ5~em[U,eh!w~T&M̯݃ML0jP#+%F@I)Ut%2\0CpM@HVh㗻<ۘ-/MoT̤L UIх "ܛıoP9%#8J*6G wSmЩALZلI 7`>P֡6dj0/tUWc!s:=?Wl)WleU9W5r1ph&umdۙ'HUEZ[@]*W?%ܚض%+ W]q 8wLPg7ydqt bp3v+2g;|r:{Ac(@hgʵ(r @B8P*kz|MяV)i>N^-u$ſCF gtſ$}*Bka Ҙ} lf)DtZiCB0d4pdv?nieW?^V}4B*{(C4A0yExG!+mc׾y ߊPQbe_ZjKVe|n5M @z뛀d1Ο:^pGeRӚ6,/2M``>$OT_er:M ^p'G|@ׂg#ֿB735~~w&Q<[,-<@]V$z.Jtu:Z4W dO Yعgo?Tmha Gċ(nvWĂ+%&lrƮ{WL(f7sp] }罴Ͱg'-_ɶ@tmUP+z?~]6E E UM:"e;{хk^]Эx\Vngt2 7PhYRPLHځ@4ؘ z/SH6A®Z3.!_?@S'P*9,wry ߮ZtDdM DqLr`hY)LpQ7a`/m?e#!"{ 6Eܑ Di\ͱ'w{ \>[vuJ1B _RGdCiɽ6&D}XVc5l !U؎<ȐG7jbn14-~d9P V JlOC9n\GEg1!ƚ1neb63HH4[+U3U<vjAj`VuT."|^ tx$Ty#hV +YwM95^xt Oӿ1KLj[;Oq!Q;V/akIê( a?Ŋ8;vmS踕{HG}i$ YIGuNpӎzxmO8.Gh̋TE݂eI\PE@@Bܰ#)1E `R'(n W jWLg}W7 k{* &4DkM_OUz P<ƌ9eCƬH$_]-Ø:|.-͇m;h-BP/)ci`13]Sh&;kM@ |F.z]ӂ{Gv y(BB3An/ΤL|m;y˸|gøP-:ԀZ'ql?ȃgY@e8} $˱\_ȚJcz|#|πGPv K浽wG)A|,f;fxmi攂j&OIdL(:eI[*Iӟg~=_$CdJkH #Iu]9-9[3o.omMU^p8͡]L5hiH ᜙mUx@,߶+~A0Ǭֹx!ʵbS'`F0i\ UY{͡F9`ۋ5WR΋TIGdvzQU>}.Ʈw6o)ǼduL-yg~eG09āx[7c'Mâ+Yv  n(i`6BdB%$ `>`-5+(5 kyq~lx?Sυ| I6*"LyY$,]ACBZg6ׁx)7 N>|G@8N(^Ɇ3Xd6 %/ﱿ VN^Ųu82FCI{S1G 1]}JrzzF[Oև[rs}t6kKQSc,UIb{ 7MšntUY>dO*' N,)$s@ K;9(d*i;R_v`2Ԃl }u[M^dIf fU(OGI0H-ïnxi o8I|徏\<,؅ϾI E>:1D;)0Gd=cMwۻLx2ɩ 3>B@х)MS{*F,f ǒ) S̊} B8r#lO i8G:]Iu ՛mRo 8K4&tZ4=o[Qm W̷ceeJo TBa`>1`5)hzU>Sw`9RQ3ȋf WBm+F&e'[p,}4ٹxg&f .enu "cw"no᪞G&jG^nOfrּ\2F ӌ_l' .:e<,|w bm`Ԧ%!YKnJs6u>Zy.X"Fg.B~&̖Gp껐sZ6`NLjCCbi>r2PŅ-js #2ZHIl2=Zv(4 1 W|qG,Z%YWiw輳vcL/\CtȘ; />BrYge j%<+55Kvusׄ^IY /R~/sڙ91pxCgsN$8BGnHVSEƑ$*:Q3>i`{׬y:b0k;WچQNghT{sbԍ>T;qb @f2%Pёq?DRxyJ2̳ʤ}d# >۵Ttt애lrl*7<=Իޅ#1 G ss"?>G߆2Gm:.;f<~ҳ.K/$q璪)³A^^F%_lj Z?nxʠ-'C3$<ϑӖ C1ນ:`pnait}R_S,fx4[ aBqPYF͸ھJnU ,;ldh1pcD vE %^ʁ):Q?Ka'fo Zi<Гlwmhcs'g67B4|j#:a0c27ừ!taoWV}*th=[]cooou($+YsK@X w>pɄ!ώ!JKqlhpXacJ`TӱI]U&1e6dTL迺YWvJtwis2ӘV|lIL; ľ j AK0QD73u:~m8S@bk# q-d(0?szT_S&;L U #)t RU@_%GrUFIٓI YWAbV0"Mt(y]Y-ED _wP~2B&@J2@!I l9nxzc HGwJ䢺N{:%\8+C$$g;TtP1Dԭ*zJs'预^V$bfn؝D$zR.u܄m[H}},J:Oi؄K: g3!mjy~:_@d{t.;1+ bD(g-Ƞ)*j tGwQ1AmТ7޼¯MwRWU&1S@۔DںT˥@0{}vQ2w&kYnofA#T}Ƕ JoXe,b1 \zED]{_n` m6DRٴ*RmuZ@VJq썘/9C]Sb$F? 8v~t=%(dpGXiVvkEpuwnᬔm%|Pyz%?Y+X nKNGe?7$3T`랃 Hx##%p™WRO'O7UOᵿAQ3 %9sTbՐL,qYOSC$ZG1~Oуt G@Ttќ4V!?]>ɡvFd I{xwA`Xe#Y^j(1Kk,]`7<>e3';᳖8Ky "=AF<88=P,`ƍ0tWW26m_[%kwک5k h5 23րyH|FG('vZo޹}yeGAX<[K3 6Jа ѼRC'.b'm#&31YIHN1B K57Kۄ!(%vE0RmJg{p€)UIPW0DGClPrP^wP'/Gݱդ7sV Z귂Ѳ!_MgTlftى";논-ˠKjR$X5aɅ `cspSb1UYI! "h#,Lp`=;S v[-{-MOȗsN\Å5f7!)C<&atO'a`) nD9JR;׾,ӉQ'hKHa6e7lJM-D%+D`]ޝ8uv tO7z@iw6MŬ! `? X/`]ʗFp_ LD V)z1[XD_zxCR5eHA9ceǕJ7mw9HcǺpţ|D<% VSw rWi]hě $ׄ,ӴH@B~!8\ЅwtAYo ;y5 ykNq7AYD(QЫx6GJ'aF\7z H=\o<) rr>8Hfm45XY߻3V?V4lEZrK^@=Eɺ;i:CF'\S6TBAjBUΜ̿q"Ӭ|xc@Thծv1cÜXe)Ɩ Y6 b&3"gC"T+g|nPʱb^iT/:_ R@ 7ڲ^ ~CFK1A=c~j`tI&|DhwBeqbo(Lzx*ؽډa?5sNܢ!$Wd͚zta&ed)wxZ>.,n`Uc`P 6f-J 뿅xx.J$yT?~,k Zwv.r rr<ǻ)d|to2E4iVt$pQ</e/딭xB.# (WPuq w?!y4n{CPʮ:gEFgD+%G0A2($o.L^gZuơ"1s) 92j`C1cbЄjxsFAcE$v(EW?Jh QCea}ޞ.(jqm8S!-QrdS0oU}ϑcYr!bÙ4 `Swa:ΈxmF\ni 1 ͋:B ,'2J(plz4SUR~ƴg6y7R8) Iީv =#_}_:sw`n; Aacm{{\H. ͮR_<@k5ZаTR4(ǝ4/a07 U`g`X+MyyXOٸP+}렢>$С38 dED!E**@LBTL@D,H-R5)*6F8qwK 1& ̤=]F--TQqh | /ZKrԢ ee)RqM%?bJ2Ӟ|gs?!#7^m?42?Yy~>"HPoveT9@rCƋ?Y+.|}T tn  uVqc*'Ҳ`Ulf!tZ_9T2lԲCDs "rjda!NaIT "<me N] :sw6ϖ2W3[BL t05߷.SOٿo`y_dz<0GR~3& ~]`MQPv%yoCUK /ۦ̜T{xmE6\Z)ѓHJ ?H(ِc(EG: Θ3Dh'X ÇnƙQdmUc|\t GTwH_{j9Zܩy7{uh0mG,Ӧ A4RNq] "覊v`xx]_pʰGj}(8rB0&ş<l#aT(i$gXρ^|0oG<El8c /+@m/9~N}DI3/Ii"0!) <>~yytww FKf>9Q| 08$ 4%>,:pGMV1|RCKq C|&Ag,)ii{|dgcVzg )˩ØϵS6reye9"bv.4;2)Y'jpP~ 0"=Ӽrdc ;ijq_GkWhY#gY-('l+Y7%W6<%uvLB3U V5ZfMz6̵C 䞣lzJNjF72w3/Cnqа;Äej#O֌1] ˫B[DAɹ,WmtEحqUNt6aE|Ou+(Tӝ$Y(nZa (պ9X_[i<(ʝJ_<%`OLj-s 07k,X&X^6d:8Ю 1.ita4ua=$%H[{QԡY/FJ-9.Lk?ыB~HWA8r`Fc+G¹s@#;zJsF0$av)^E^3EWkE&A֩M,d#vXiprrYSN$;4MBR&XՀWc?4~[MTnbkU,+ԇz|ёWNr˯8='C.nLq XJ{ -߽"y.G 900Aa XTY7LnrNUIEiJKBE<DTxn:lXЮ $PbX8Ҍ*}yAPf).DGT :^n*I&A8E $`LT/T Ush9x L{91XM0Qda\[:pVl̟6pa.9;,[ = )L2VZdmJ rҽ]^}5UWyQ!b51llOq3&oa۱@a'fJ[ z=m4 ^ 0?'CBRPu L< S!~M̼\pR02dz-sN2cCpLҝ`0s6I܈N[_ e5!;0@Jn,! 4VHU3MS~XdbW <[mѐ oBL.nAL^V0]LI FʕSpl[O|u*o ({ʺ\v Ex`FM(HsϓNdBdwF8~[)u& "av*E )r.oE1؄"CHv M @R&_З#K4:(uQ6[R/͔,%; -%k/K$|)T$0v ^z_YT" +=6 !o \1ްMiUj4 $R}xMM/Xߓ@'TAe,S~Xl=#GIE%'TB س7GNusS|K׏qDJ _:Cs\e_gsN4҉NRhNg.ZDp [-FxT~3Q&JO";]=K@)k13Bb,xDµtse ~$=ʻ=R~y? {%/{tKy[\ԔZ=-{ƷdbLf>d:yM5پ !9DB'bzI!J/Rӕj/LoR@L0fՊadQ(DC.?&X+}QaZg [oOؼ>V?NW[U.8{#׭ !5c:G!R[{E;{r#,}R|LЭ쫄SlCs'wa90)ȚpH![_9bi3P.L=HQ3Tu.~G_TS;X||v9}i'}#5!_s`u;FIn>G뺡&ADPq"w?="ui$O}ek<=Ӄl|?v lލl LZYƘ`pr]Dp(*7Y&oC tDa_W?fM+׈\q&W)`|[zj|}X'af)ڙUי;`4RG9#RJAT]tSQ5+.Xb _R0[1aWkqBآJi t+;3W>`iٻ;{p岸z6gd ?\CmEj9CĨKU֌'3c5Uu}GVg_ {#Y%Ťhrx!^h׌ͮWC9K .̈́*|F})$%G!, K]t4+ʆ2WSү_ O] Mj2lIs:0 ^`Pܷk tX`ZsRp!q],=84އ O/;y$ou'f4` [j>SVrdo﹋m8ql%ڞ8OdH@SI'Xv; kMU7|Y}$_5;+1O9\ m`ĥx+֎r\E6M,^da |3 q4̓o 5Y8>j=n"Eq.;IX>#p(jt`zysPA`$"+v\uwxtɏkDL ;;2_1J^tV?q{[A\< \!.-|]XaOVn<%CVg*)$; "9?myRAp"oI!šc>,nD.4G }S0^dЭ}H{eݢՏΠl(nr$f!`F2#OqeBq\y?8H 񢡚w()>kVt啬8"Q_U*L7'h4M=dF Ј^B92BI-L t0rcR$0]p˛Կo%^3s~0G0}vfF3)b3{I`o[rtD̕85|X4f/i_@ @=x >"6%O$~-77i"IK ÷ꩣO9&}F%Ϙ(w'*wOyn޻ ;3HE_̛耈w;wq.oVNloڛb{_N 'XvYz#i3eЀvjX}@[y^>L5+~ylfh`Bh'a3p60X08Ց?l֟CDb8.V݁;zr@KzdcLCSμS=2}f|./[i2`9P* -;Hq !ʖ =|=rm-L(0zisc5HɡhcUt~M6)3Ay5-}/b+0Ǒ]QN;C4^kѯ 󩕐;@*mAM]E>dn?9[JǤj%[kcB P@1:IcN4j*GZx$|J h¹.C/Ch˶h~CߟS]~N/4ak+ '״Y̞èF NkjY9S2,Qs>!f~'e8ܽ_K_'Z=JW64M?q`Pz=k_xY'))o-&j"[,EDޓYgX9sKW2o#k'0i˼&_ϕإ-_@ $pr>`?]nl.T51M}@Djv}KVHO>+:]$;8Bg YFv"g33!{Yz UoBߞ9 'ww`' )%;E:v>s!J_)$U apxz HqnmЯskZbK8txXM?~Hrё> jAx>B-wKh55IJ+_Sʴ|E xG-K|"3A8ߏޗ!0ilo)hH^[D: %fW A\,py ]#K:[W; zcu&M=0_:4 ,[Ǝ0;FwѨFDl`7Ԫ5pwjRT9VW$|/ w/:2swD9`vG*!gfyL:cUˣjH2X gjI+ױ^ Kma6 OF]oCoea2ﺃqc_T= N cX{M˨LDJ_}j][|\{f} G4ҕ4B,p4$쌝k.'*aB(ў70aOSϖ>R'"AX ݡorDV&+s_h$[:9m5É3R3\0.jLxH. 톗n]qYT<9V//DCRPB/#-f ԍ1=` >sL 3_&>XD('U"`qU=Ofq73LJ?v>x0 :~]z NFV0D+XТvmt_4jR@agxS? W4/ .=[R%2YJժ?R7=ԪT3F p1#A W!-uftهҷu$;lOPřغIwxg.C0Un{w ey9ɷTjRky/[쩫g҈0Mw~%loB˲U:~t`^ M x[rcI"Hud'o{`kG}fcz]&I*χS,+QzW6BSfw[0&7u(mѭNa ];0Y(3g^Cm'Ox!'։+|(XSa"z<<=g|#0462\Mz'ˣWK+Kmbv"SZ3+疷(y0rЁfQAvMѓ-ΧUWt& lי ZSpr~knmo\4=;?Q02z3CTD_iPm`Qd73a]}v1.p$ jo*G+UvU vpxBư\707%O͇mӻ֍~ s"R= ,N@+&akյ c.t{1 YjC/"P,|%Istcm"AȉS&!f"oK7" )]/Oxu$y!;_;!POqGFxK9;5UkX:?]#A21^&A3^Rϲ6એ'ns¤b{4Qe.V2@K"L4NҖUKRݶxV#kٍK@ ~NW-69?4)!NxhR]!|@$%_/'I+-˚{a3McP촠JItf$Krc0Ef(Gcr > ]1Qíi=֗i)`PB v;^ځhd=oɑ#cM6q(KqvyNQBBr"2?u],1(o0CeA-=,E@ڽ\$*LG).޲a<߀iB\Z=[c$ z[F\DhG!cOJ$yXvsU=4b]r7c Or7ѐ&#Nytxj27WZ nHN:8K D = È#ZP#`LXm3wV::˺El, VaI&~P88R:WK*$% ly$@i7"gRoJx7 !e53MoI7qZLP"b!#O$@?az9´~̫JQzѷs"H_NIg6SQL?1\'aj:b$r(ɯvLW(F:\hFJH{n!8&*0Fm^&dĚN )_~JC7n~܅3G38_I;7 = |}ddÀԵZH&j(bW\l)k@KbOOv:mN ه2b+C֌}+A0xJ>~ta2]좆1f;$Ŋ{ C_rXEf>G{*!\TBS2WVS J <0flVA1;;^&<7Ci8X 坣-oiD0 Apu|*W/46U!5Jk>:phը=[jU xdOfX#@3gB9dV G 0pajbUrùxۨ` 6U .`ֵHF-B=o U"KRt՝!5%7+K$#>s/w2T';VCT ] iSl˴AV.[J20rAδsfث2NzpkvI.`[t z-ښO}T؁SSNLLXU:M${[ ƂusY͜@K~vw(1KLK5,`ۼ1XJdX*eY_M[aA8UΞv/lgQH9e2=ŝ⯌@ j I<=e=)y z~5d!z\7OvJj5Vo moV"j 07%v%D\K&(!G_XLR$Jʼn9[[G|03xDi#aYkW"T3 xuaZ#5y']t>j;_Gh 愊D~{eNr L[|EZ8[I+Ы2Oq&R+>+F)wݱ҈{m}^;ۢÚm,tK,jLuYFGжOvB`cg7-cidOd7ͥ{ ǺPx]w]5zZ@C_r@ܶ2}ϗ]oL >$g̽NYdKJ+јjv4Ƞ\Y-oidQm^P2۔Z-rwKf/X"i2с,>X4/*/7R1ʦiAK@PB.yY<6\?zxt$JH`Ȗ p%$ 5qC\bϬVcoo cBg8b%zH΄3>g4.g#Yfl!NTKILwR7 ^]ifQ=Jڑ9$.6:3K5 d0&9 5='>u۱xYI#Y\^V d% [!@e13)=%<qIԐ2T4C%G*ZvCMA PE/^N ,1,q_ӊUM=(А--QtP?X*"X_(>iU >D2-f=KI&r(P 8pJ:{._ ۸=bn% 駦 D _UءpQ6uяD}4\݋5btopQQ\8Zj^E<}ZL% N3콜D$0LZ6#WkNSjf -#o!B:k]`G$SE}hNJ36vNd$0oBw ܯUy0hd +vE$lrLw5kPdb90bGeM5 zt4Tζxyy\$M.Q:"CvKbřz* k 3>{EG~Q8SaOӯ*ӣ4 kz2JA k.BGx_|)upaߔ~Vff 86B/dq y(IL[*n!,<@ȪuP=Mi?$ x8@xhYv|jŷs$+}:Ҋfx}ޭ3ʨH7^t,oHuTA+~A3M_g'4F'y,Z \ -R.a_nzŷ}8/HIV.)o6JJq}t߇d[N<&ֈec9an I˪aaG),,o}Jܿ䢆g(FnJg?7d(͞*/q:-@2%M4tC2"#H+(Aǭs\'e0<;S()Õ*wքKp i8Ss7$S,8N@TݓwF ͏.N0Bp*vYfHӽ1IA1#ar1^X/c*yH,0D7|/?AC=]\^6V3r|O%4{wmfUa S3\e)y˜D>)s6ʛ->* ]#c9 ͹nO5?I1a-JgEԅJ>{Z9HrܚR\y'9'=h+M;sÁTvS O73@/ڇ|{JM [KNk*9[lhkP䙸BbM"%G^*' 'pwű/L/n糧l,^cMZC9bDImw1[j X/T5zb>ЃBSnXYmjr*o;M#'&r~-p 'd?ד J-VkҸq*z}" f3F_N"F}X@E{Y+|7p^z|zA埡VTWǢdoksp~V;\h䀺3\:R`"ƇE޿qE~/Hwfb Q񸸽n9K{垸a!/M܁nqJ͠i*-bvF+> ZgI:ʮβBݪyUNɍ'#lOK+ Rҵ&klufA5MbBmuɢFX{P)| ?Zp$[o. IQUٜzTuZvb]fK=4G$"/va^]DA#l޻äByoyKQ/.ʼwPUU`,z!$'Z1}#jaqIv偯c;D= '>v ](uςɻĄ9ƓD8zU40_ƻJ`d] XX8E^Q;F@IS^xfkN;WFR"E_zi}28,0ؚ\+&14 ^6o"vt*>tw BTC6fٺG?,G)&WtĮdޠwW۝:_zAt Uܠ}-  y_׹ZCoC4+kwk.wvds$41B0Vkzz']۷-cS;% *_띢kOF'ˋr=B3\|ﱄRM=F$L,qN=n bu6զk 9@ r&pд:`<}~K.9 J>si A;>>2-& __ gY0IA`@+2ah~\8,ZmgX$cд}hUnFU(9".&Q]Z8j蜚*apl]eԦ+c纆SP"q Y.V5h.\tv=_)Et5 S# e˟0/J+$b"pDnnY@gf .u<2y]viQB = ь D% ΋甧ނ%L1˳r,!;`XBW`D80]rlEO?۟&];MlS=; Fف֗1|CîG(0G7(M@?GJǤ?S}I Y3G$Ѝ3e 7G8 yx.-d"SℙWO!. (iMSQy7+x+ہIK\^eT{6~& _[FJ(1@ d<$̰*#+:2'*tNJZ)J*~9lMgMHF4 ˖!xR) \@vx=K>n3O7ڬ=ԤL! Qr-@QCo׌=z:v1Ѧ` x=g^$;Z DN@3V^-쫭=We7ybY$vπm"EFpZ!{4+,ӌM1KoǗc7548l̇=\a&j&&774ؕ6,I@3]IMzז'R?7k ̨sBJa +bwTu8o ^Ɯ&D smدj|/sְ~]`ɓ(k7=6e_UxCK_u<Wg8/XfSO69#9aorr51K\j{gi0N(o\(4OߴBOdpG蓮Ldrpe5{JetNCI?ֺ=x.7d׉nZs ,dГ?`a}c/ݶ/tk!ƎrwۯS_LJ q OjlfERh<{~]"ZJ☙:F@j0pc6L>,_J.+PV-2.e+,OsFZ)BHЉIXfб2j=xjefz7G?7"X )jReڕQiEyjU=JGKfd_!p!ʏOÓ_.Ue5v}K`/} 7Rb u8ewxStt3!3bVs"&(܀~Tͼ@}j3I,Vm^ F 0ZBjۼ cDvښ ݱ|z'P5]QhMO|: nwcˍwv kG>}_!x5.=Vom N.^8b b{W'S# 2j/Kgt!1GS /)V g7)sə40:3SlF#(BD/|`,X2%P$f{e zmE,>S(dBRn<^- h&Ϧ'e3^[CА&p9@[b *wR UaY:WmK_ &gG7&)&.(AsۇEI:? Z(8 Ȃ4S|~j.-L|Sp|=jוÙٱHWg̪+$g9 ޶hR N(j1MOIo=UUB|uŇ!>O!掊Xz_I;JR*r8K~ehXY.3;)2j,&5qOBLEPRψv G7i%3uHDM#c#*BerxO5XX!kJX:;'IsR"όbw+ڲvǽe2Z/x$k8F`Z{KPBL9OZ) #덐mH)CR#$P\X>aFr~ hQa~BrvV3 n<..CD h|"]$f] }3Rc~ǨT4 5@7D9ҷ:8w&0LMg)d:o fӟaÚi(5}N.UF{N sL7v9:h vEs}JHi|e-$=IIQoT:6U Z߮ը › {+U ? ֡0:@eI^{M<8iף>_" wOfnBcmd<ԐdHmhvV9-#=_o vrsӰH4 -x"dU곶Rr fW "1ZSZi~GprN#ڝFKҫ1d4=\vh MTי:]DyAǷЗ0Tqtvˢ@h i"O9cMm|xM;!;iq-!5yM<+ï  B_P$>=? \*nC1GcPOL#+lP !Q ͶdP@>Wh]T6Tr7l3=m`vທ?2p)>WؓT#^V2>əLalFYTD*moD{ #AUrw_Qi Đwl[,X ewJ[g+IRp,6lHW?Kf+0ߒeltӻ>Sfs ]B}O >$NMgKJ> @Bx" '8<؝fj¯:RTA rA]{tC;=onH|7WD+upoG;l+:mKSU;Li1-x^Zb0:ӲPH. 4\,[~/=y902V(4~!ax~[`rNB?$ըe]\ iK<"ͥyʡP=J J2+kc^VғDR\n[5W5 Orr+͇GS et5i"mϗNh$~v(z)[e֐{[O[IӂHx#KOh9r4)Yƈn*J!e;HwMى[ <. 9l`d^3|JrQGw{/CwN0S/0' w$,cp9 "5umZS4CaBw%g@, e aYslۏSݒ'- q%Bckc9a 5Id{D$CPwkK$Il-RnYZjoFX06FOUVbU02`Y' OI@q_IĊPC>y'2ްpjHAx&ULgAA5U- p|@"6eKf44x7V?ar&ϾG"ui8'(PmYXunp~2󟐥֪E2Hy[ɘ']B,5V;u:37;iDzL0kmydQ_Aclhu{˪"|#{{! f|D[Ndq辭Чu{a|wd1%Dy*c x-ӽWrt1x|=&k_tÞ]k;*.SY6~/'c^38:do2}5|G<AA-ffo|h0Dl՝RMC?H=V}Fь{bmG ^yi:[dYMY5!URo}jsJL?z8'xGM><s4Gn!>$QURP *V-bNK.۝SCWro'ЛG)WBԪ&E9#L2Ye .8q_]Jߤqy Ύm5k5{g~U&T;[;it/v)MP)N 3?1TQu @ Hȩ _g ܴ}/>y`5CL SeـÈ5*=0|t]]^`;pPzULp{"@ IOΌ,.liR;E!Ng'lwB,ռ 2)+qC i˲ aB7ErMd6g6Wo ; W^l$8/5k3x 2nR!6'S[s%E \hKv"-)9=vjL_g9Zpaudb+5USGmdQ)S.EDcaZ02~Y"Ht/ Y{N׍)KZdh{N'A~ym@jLBߊ L9۸CBćپ*jbCBgYFJ<ׇkz+?q#1ɔNݤ3=s"e-V/  QZ|o&\-$22Bk{xivmP=9 .Kѫ@˕G|ZΙji׽*Yɓ6THDy.cKcZb}0~`;WvIs@>%,Vuֻ5z8R-4QfxAڤ DnxkΎ'D[ә=|]s%yQr}l  gܤo"{ٯ4a '$$rB 20ѫE61: 7wOtq}=e  iLxzVT_rc%Rҟ gG#DA+yF| '79[y2K݀m+H7oOf(fGaۇlk,*ڐb>_49X<m1az< IEK?(hn,13]UфIǯw{ Gʯy2C2T.u*6qz  vη( W ֫ ОGȔ2,HbhTSN¶uy;g15n4YQ+aYa@ojVեl8H@"1T7vfÅE'|2')=C`tZQ!%'hhJz.gmgzH=8Z"_-7es bə !2+0V(ruDnv~ WC`|^J+460Ɲ*XyD+~w Vo@¨o~g}(ԛzxx, zxpi|?G*Y)Bg䉅Sq2 ?Iră}| ㊸Fі˞%bޘ|)$CIvU9UUM`%۫5 D44>lrloxI::s2V$=jP`--R)*?2[W g "Iibn~t~|KMqx1*_c;;2r9C{M؀PWWA}cV]B:ĩҀn \ЛԵ&5yda[#N-7z>:N䚲^ zLj"FBF>_$0SE*GGL0np\^Y}Tφk`b 3j0ffz2noF%7 #p]H xb*jйʉIz"6X qaޛ\st><6.hQ4m]]xINkY'v Ll*3~&qi47 lϔ0hJKh)-"Ƨ/^-T`8Pn瓚WA-Y,@Կ}h $20e}ֆ4!smS?nN߮ZuO:g ,^'񫕠m_eI ~dn1xJ\Ăwf΄6 h~WHstG%KQH @6 1tUJ# Ny9wJ5tFnbvLMV ," `۩J׆p^ sh{ӞT:dBMnL~hhSN&oKPz/a9J\&C!OPP ^ᴍaeU ܶE]>ӜUY~38Okt+x'?^R L̉FR#|덖 z . %zc|˾ aP2kHurmf'ݼ3هLRsZ`؇r̎,I b2R`پAu,K4c w&h }gwnjnwY Fc~5<"ؘq2l_ 0۶N>=S܆Һ]-1x(RTU']*6r l~?+|i@LؘL[=$emCAv(=ٵ O `1v SHr1=d9iޔ3H(|MǻZWJreҕJHn>o*fc\ ֬qֵl1Oc. 3-A1HUUYyMdX7=B$:G#`C$w~aH@".1QOkO8Q$sʼpbִnio$zz,_=pz5Hwfa&bW9`JJbgBARkrsʂC ̾uGd磂P]~${VZz`n!?[ŰDPhH뱍VmI(D`FG)q)oSN,u "OhS{(x#3S7! -ԆH,JG4?KR2Rr;36[VXHu,z` )C@}Yp/㲴2ӜҙLH(B/M2Q92%2hWضGՓ.B8S#fԂ% P.^.H5"'D8 (@<Wd^D$垂ۭ{&I֌?Av2-DMqRQ60;(xw&5 4sZ<-I8藉h Fȱ'CY5wcٟg-b;zj/gx=IKOO>Sw\FΉw>LwU >ZvmY i mIٝ3D Nlsyylk#z\΋gtpRop#4j/4|6O#`O4E]5\X JX }4i tD޵e~؝%J 9κ'~H2UZ^x*l(ϤQab76N{QU .0i|)tT37$mVϫmH{oW#E3Ua;kIpV]gM]= lmb?=ZD#q~CH!9${`w Ni~SS=ij2nL;)6oEqH{l};ums5V"EyS60(_m˭ 0ԹЖJIxn,>BhJk5!3"QS#ЍvU咘զH.x/7BA~ro: mڶ`[ мOM)ǷXȥ瓦hip͛>Ԉ%a" ?LA_nfy¬4!ӟ8It6";du~+3}I3%w䈛2L~gnt6Lm]P'WK}xIc214yTC#՜Drmbbx.u~wE+OL&G>w&Y2%=72=*ipRT%'8@p&iKP 9? )=7jZ{h8ȁ۵<-{}]{A|o:-PãLuuJwu4Al;??$J B ͵. o2]}Ivw.P]6l1UvPBw?,+ [TL25 =`i,EbD W>0ek)JA2uLj;]&^0ٍ!׶栿+n?~Yj?s I zt%"z=A4tpeh0BvqV ֹtVN 6*1X؉ '۫$֛JmAf%[R* sqJ;IIMaN9MNk'"s_C#(B#hCT8Qho@"<\ggiRx=d}a5MLm`V&u`E;uoՌ,?02]XT'uUOOK׉*Ls^e>Uѕ*C~6ٺ|Fe48ń4nṆw5y-r22b^ I#.m}8gr/j^.9bwOLĶNas*dę%NRZ=v_6HӚu7 (ycr+Z?o\Bvi5m`]5)qMx 4}&Sq>Y2eIQ U}n3a%sj[݄D\Lxnht(s8qKvsGɵrIxwR+XZvl6X0%ZI/-nْTܩ KݴKKI&N\-ǂw/X$ ۦ@+jO,.)nHDl" SL&\6=?o6K1/ݍ"RFpimrokHA2Uϫ@-J~oA!1~>N]:v%,{>3[ƱW I,*1h #Aa,QRFUeuߦ)fTKU%m!]FPaoq4ƓV5=urYZ_q td;Yi"%9 \t [v Z7+Iؠu [ RP2N f;/T.ڭ>883jBi>HETVZ2y `ﲀS Hbs5]<څgT&܈Ka34 ѿe< 2FU1At6E*_s8 Fà4Bx;Ёa0W),E|XPdO(y ),pBƖ~mhAnmb5@ϊl' 0点Aa_&+ѡsy+Tř[2T$풞HA]^Jp.F5^"-u8FyE90 ƍ1a|;BIDr0͸;3Ogk8;Wq!IaZՀ-h^iJ4Cl|JǕ/aO?kZ&G=N!X<&{ 3H\0+N m %{k$w`vabMIZJSd)ijAh1u{< ؅guo'(4ٿ~]6ph:<6 Jt6W&|l,$/_]爺0TO#ksm&Lz%cDeU!Vy}k&bE}K0ϊ"AT316^b_!͌ß%yƿPȌ%c8 jR Y|Ü(hPdvh6PL_XR~`= A=Ub{B~d?\ܒšnbe_׾ l~NUL[!OHeC=(mUY7v%yɖEO+h6 03S"V t=xktbV:حjXitW$o=m#ح-+dcL^Vu0GLmV /N@iY҇zX%k6H$X}ړJo=]Kh`%lBeIc6Pp$*'A\_]'t]~ ?)z?dlr ^Qo* ։O쭝Xuу_ūƒMswPhzG*M,E%?BҾꄸrشsitQ8m6wȨ}GӌMXoox,@ԀՖf _l HB)ܗZ;&p+ĽktFE,8| A;WtO!hx"= `Ped5̚hB`AzQ2w ao㉘<oܾtn@/K*#;8m /3gl}.7w$ܝ F HՆu(bv6^05ޡ.ɉ/u_-,vhI| mSQ|s~(ZvGyc7>D]ľRdݸ+xҦKX/Q }O$b^VBݠq]4wLdZbp3ο! [8x{~C-*EGJ_}7qI#>tr%A~W <Ԑ=ޒL/X^+Wq ;vhӿ̱Gz?OL#J;HCxxWx7b|0<6ğr'߹ebʀw!TȜKk2Iu|}r)>=\3jIC=LJON<˽,M{3t DiAf@?,%])AN k%_ NuQU#$827j&(6gqqP3,Ю3t;%,Y';+/Q," s(nrŽlw- hUn4 pT_5Lޕܢ6~m9Usaq |$ExԨ xk3b!B7xPר a{צ/%z+eBŭ9$2qìi]!8)35:>.f^ݛ%06mvF}L Duřv1W኉OҚp( &ĕȈ&rD;Oޏ&J2]?i/UKB]i"z>O&er:(drYrCyCA%7m|/|wc+MH O䤛ƽN[+;m86y%єsףyu9uM!ϑB6fx4MeU~1uhDw"w O7;tTa2:ΝQ3$ŤV.fG *tPoՊf;9(϶TE*A؞TA#VL 0vFhOſA?*}59Vk pHK v<22,-wc Yb4PPlZ09z@:sY'oߣޣuK&ODc`^i"HKp%xgIQNs ы+hI9FQfг.*w%&7%28^ub*?6{Y`2/6ԴD,;P0ʷ:mUr;L.tZ,-Ocr: "/?)A TsWL;⿚=TJߡ܁[۽3`Nyc4Vn&vfIvt=b90̈́Q :u6^]28"s!cCL0ù'-6Ī:UczJ 8/n.]" 1&=w.<W h@;'36~Xצvlmom?U o Se{>DH{+Fڟsu!mÚ 0àq)wDYڍg=`xː\,+ѐFYVn7!/S'f\QF QM`TA+Jކ]Vdu.zx'xZ@\sw6e.)t7 (oSl'G%mr0XIP

A^q"<'+%5]SEAxڭUft>$` zžAr<|X-UOk䖰ۙi3L r`Y$Dt݃K_%FѸNC^<tpIPP./ 44ж(|? \&M#\ngxsd ^ry93wsU#WoA@ަbI^Q#c1 3bh $nuB|U#QV!7T߹hX%؟aEmog;m ~ dÞ%VzALF4G"D@)߉F"87iy$\5d6'޺# ZdT7@yvd] M; 97?~J]kB-g]+N9,9!xcJ%ɴ&HB i/CW܀F::c[5PpU#HuЁX}!}rYu֙q!w;2%<>574,kfyt $mmoy7]}[P=sp'&P%S'ΔN% 5wK'vm^n90J'ju WM5p8[ d ~0PL Z04NÙ[{hRP"Cd LXI(;J1@rD믓jZPlA[f J)P+7diE3@{g=%+kڰݚIKt,@lr|̫~Bu2E| կjWcPdBuwϘ%,L& 2aot<]Q`&`66&# JWxFK# _?Fy|R#ZEcDd0]VfiGѺ>}$58Iʘ6(4ُrcn8əHlnT +|5l/<[(+]}#2\ӣ-^'x.F6!flEM'cEeK7w-(2P1[lRŚ} NlYv!y)Ӥ$ޢ(Eݼ %PxU5&{\ L1\2l9z? z1 +|xo)^`Q9D/٨> f^v{,v'R-WunQ]014a$,h?;X. Le z)e|+c=tShVF8Hc[z㶯sj۶vv*Ciȁ^3HmGVC]hn+$nV=0SD>R7TVKX޲$KK;rqgO: z\ <C7,{闊V󀜵Bw6om?q*Q|CxmZNע h3J(`^amgSX,i3\a,p o8;IGs^z4um=q '&ǶnAVD >/G*iv87]0Aʍkh+ 724 ˛(vDHN&(pd#w9&<3Gǫ!aphm_8I(A\e\Ǒ?oT]EjWYh E5Fe{F8ь`fH7~zM ^ }q@ IVަҪmNλa @8!&edBpY1ȳx2/Ҏ)H}a*mM!Elpi:Ux f|-CJ"Aۜ%9`Qr%Y}0Ƃ-RkZk*moчhA&j "e2DZ HִW>pLy&l?tޠDF\s`1)Dv"0)} e0e: BvdjjR3tq!Cԅ j &,Pt#]FZ))b豊-1(#3Hw(]` +Wd,ՙ")1; 2;'#N2>>:9k[ \U$)#;~K5 w=ˢ"BƔ4J82VԵrftXUk;KluD9(nh]T-4A倿CiػtTt4Z)pyjh=#}N){xaBF5Ȗ؆ArϨhu*O"{sz"1|#sژEQ("9tBő="lV(}*h6nUKy,>+ƻ圲*[jomʚs{eNmbi2W.ЏS=n(-gMz?8YtqAoJQD uǟ (k R.T0&6uKR0~rtd/F ŽPCq )}o`g(#`PT?^ZnᩤbFGzt]viF,pRRiPkISC+]pb)LGr TA6_ Ω+8罤B]5 B* xʽ!ξd؇<=B7%"̈D^ͨ-j ɰˀ)*Aň/BRw~nvdKM,04T2_Vma0q$V+? 42s%`בֈfI+7Tɺ'<䒗1fv:F$~xμ1E՘@geErQ\B {S!t" iH˗7Kr;&˟;5DmܴÛ3^5pd^)MA6X49]e=GD?ll)"+uSfOױB.zMĬ6|Xeh]e݃RR8ه}+KOuZD+6ѻm7vZ`-8BQ='LiF xDH>Ј lg"8hl(Ca}>XaKịFu FTwAlL%KK5VSjzç=>P{qQϟgV"KAR8晔x\_69 3ZIq$ރHx,BTL)6#ɠ#5zhuHYtXX*}iQ-l tiˬ^UږFINrk73{cZ 1MJqG7HtV*܂$Y\O av>kջ8|i. |K;$l Q6 g.fAԙGj\Glu>ud&ɎN _+f\L*|b]@S xb;N\hbx;p/`@xP }TK`ầ|э]V1亟 ^8rkX2V( ?o&z7P{v&h#g0'QknŒO i*7oHeo<@[%uێq{zF׉VٕJmrE ƺe>ə.Vz>15؇<po>5zh9wde<$hMEDu)ejE*p+6iP1'+_|Fe+Ibkigh 2#_F5xDJI׿Cߤ ݝ3: ZQ}.a6 쟔Q N0=*Kiҳ]7ueϒ_QU~c. / q[>=zj%Ku4w^N"&]*Z9B2%F8 ϢrTY ocda8uDI ~ʽOaf\6;ڤ6-Fbb}댚Vo8Ϭ6 ?ASs6i̎~At|(ن=I*QIZo {^q_KrƏLo$o{O`0eHFjh'cmHN FH.u<2^E05(Dۏh>XۛJ_b2Ql n2.&%czffM /w5N8d3ٓf!%սxXu^Xvδ_&&.-B^gs)Su{ܮ*&9ʺ=`&*.}K^{8!ܦGmF|6eoleʬSV@ 7*]y8~pA^d\&o9皋 ?ee:QKwPLz=509>ӥlr^W ┩Y {.[+b o|,Q5^-@[> zH)cR?S۵I*Ӟ-]cyβ\[jE@Ac@1mVGC=Y!a4`)פ;BA=܉4ƴd6z[ן`If2\,*DQ#1'T׏<[4/EyDxԵh: b&ClsCk?*}W`E)ႱMލ֩ caw/!$\0cai9|LވMUTrÅi*!jЬ&Cgk ; Z@~-I|WCo3sPysO#iCFwOH1[jJ̊_ 3nH傡8*5n"6H~ڛcSae<Q-+[K,DhRQ'{.xiS&c9.gp|eu70B; %C@B@oq8,BA5[`'2%Ԅ>ުЌ!C^ Cmt-MXU#e͑s3'X+&]ɜ`A@a7gO5:9ivX q𱔧0{jG#>ն8E"gwy8*%r1!b.jA[]'}L#vʼN[^Zٗ}H\}bJDˋ,DUXLOSR޽~ uݓzTUJ(K|c2`yEY/D\l^Kɏ]Q|0:]PjR>Ԑ5G/=gF, '5z&R>*o$>PAcԦJAjw>B6jMKHʕ͇JlV$h? ]@|QbuT.BK0cc-ڳ:/%Z[ͶrYX)$-϶p-p{dwe5Q݊mWM؉H̓-Ҙ߫6 ;v6nGz3f{_ S/je%TAsѺ>6A ӰG>"X\-:?1 #R{l5_¯8 ]DJ֨OA4dO~>楄=LU% s GDlmxCDxD);Z;!oYMӹ(4T]N\޵͜嫃mJ9>7pό6G~M^0&w 7f%t^c#d@w],UTQnuu<{U4k9NB-0o)ylS|`qV0$ǤI]gaC^<1{Oє3_RJ(ǔ{L`%ΰk_S3*%,-W.w\04tSZu16$z_ % ZkC m/ (voL 1n>d8Jjp ' \!p$ޓH.,?CP)@W`c0cٮ. fOq8T?0lGv힖]G[K_R4M޼"NTPoK#S|Ll0_ɚKR1*P/ =]W2|sS07 @ewg&.Q?ڀg KYT*ˉU'd!mlr'E%+,9PhP!3㟵@8XRR|~+Kˢ">R6ܓ| |灶F VtthZ $w4!z㟝 t y\CjAy5o5ׯ؂Gw.Vq\׆.M=5nP w Pd[㔷|Εhhq%b5eac$ۧ!! E%;L,F[n Pnq$j KN"|KAT"h6rȷ*aV(T~,) Q_582~(Ld tNFnqOVz 'vq>'\37&dN!'ۂU<ʾ€ 佖Z(?O#KGrXlZ٥mj' _bՇN vRA_1Qc5[Fxu B_6*NDO)M9bYz6U=+A{̇eߠ=GA+7/5>֙9͵KD }4 A\d G)5v܇?v?H8 s2ύE66p1hu~J20L} \r}Ц84^l 7 s!;JFs0Iϝ|qrO [/w 8K|+CߨKD .#gqMA`(&+%ܾIP9Tr|}N9~801[L铥8mGOwMXbop)}5O 0 Ř=d?r(Dp]l >ͮ䴈l7SU y K΢i=z`{Jlݚ EPRG|ᔲʼn Δf,cΉo;Q' m{odFs:FuNГC[3Dpo߲k+m8+dCeFF鿻!GH]DyQ'h`Pז| g-f^.CHg`2 -Pn˫1:Sț Lzzx3.*v=eXX Ș_{o(]r @m}#' i50{& $ܼ W5>ɢa wu gB؆pCT )H;$-ґLCZbӴMSd:y{ʡKHDCpg˃rs)D 태TS^ɱxnĆ>dc(H6DLk_)cEscCj:3j m)ģS[^zb%CblRFXBU|@"{9ɪg@OU6A׈F]DY60iXNqy@S}#! Q\~]*>BW^=v]5&lބy 7ᙁ1 D&,dwŪ:~:e*;񰸮m"vUyvJXKc9v;m:ӄ+{c=ozjJ5O׾ud6" W &LN-&yǾ[vE3\{"Hv\WfиwI|B ~ 5`$ CosH]ap,s%U$T|%>/UaESdzb =Qeyy?)?g~|j(EWU? 4:W<i1,SбЈ&tTֲdce4hs]kA[`bC~=>Q(yA8#rtkaQ&{{  eOwduNTm4")Dak8Bod&nVI}0G0)}۝Mlb.*ͬHm"P#^|Cw^ܽNo$e ,cچ]!K#<6>ѽ&,˫7J5~ +ZbVY0 ]%I;e"l@.Yg ꃆWZ MV=E:YyD̢5AQ7 Gkr6P#(RƆV(OpӦ#,O48,USj±Txrnj Kt_54R;K] "RF.kʉZ$( dyZkYp~VÇ/W~R:,wPOy][SA|a iJ*Y;[cB&7 "* p` ܒ&Ƽ #(_R h9D:cJ0YѪwbXwx[d~tT?mG͋Q>k ?%߯ZL$gҌHsmJ6mFK؎Pv.,@\Fy}~bDXuQ4~4]j_c0U7Bz"J]A{!fԴddX[9nJs!j9R.GcBq ߽>Hzu+6=T/y(WUM[IHtн}{hֱe5t`r9tЖUV|E ù^ӿꗖ=,jo`'zܪt2<hیT qʈk#~]S$ dͥu_H.SFRbNǴKڎ݅`` m9 Ar*嗄gSf z]Ǐӭz Um+ [(~Of068͝ [< [OyZCل7\#'p EC``9"FI>iK*&D!Ftk=Q1-Axo$F : je9)V<2dc ^}v'/yݪ[Է&qV >Gxrx&v|?\չ^)d𗭄ᚷ󺇃 q#XmJH^λre}uGr2mԶͫ)oHۻ{:P;04VD ίzCfK+WkAAkF(;p7-ac75,%`%)m* D>(<׬kWÊ" )K8^&rTwc?(r=O DF?L{:w?D2BF@1v,is[7jpd/EkՂ/VMnoR"%Ű1$#GzJs?Ўeی _B`RE }!aiUAa{18$fk|3KzF>b*cjU?Kl+I+ xNtYne8gum26oՂSJ?C;A%;g.(Yf\@&BH#yTl],];O"?BÑfMG(֞G4h薳pohi.¾h[Lp-P(Sx[M'@ҸQA1qOܼc# r0ƽP;5id.@2-ZYܤ`);l@$n 7F%NvL&o.<q]s!ƨx/C3אqXv1jQU08EQt2#V/C/KST{ Jq}Y ѯo~ze9 yޝfڌ:*ѓQJ.?:dԡSd}Av r_J.M2Z{ Z7/ w]~MѺPv7 |$L6N20l ^))XQbpO@cZ{_uKiw(g;_:e5Ի8$9H#1ұ{UٛSXɅѿ\ln)FZ ߠc)fhBRTPF헋ݖЊķb{H0JfRUL>v:a='vZw!qy59c{ ~8avY XS%QV8Ab"&G( <'HO o/t.D5ZKK>Br?vMP{PiP esorp k9"E9۟Q9űڥTzJ:#/Y>d vS?8V|  }i kZͻpm?OfWSvجI >2((i0L~MG8FS0E5*jp333nUk3gQ!uaKF5,g$Ad|GA٣}V~|ӥqVF b˲B~!ڋ2^F^EaMgAU쐥=_Ѥogĸld-|#wV'nCjyqTO 2Xg u!L-]%戉?u?qpǞKL5IxW=I[9TyR2( W>՜5ão|@?ł3Lr~B<*>sxv"FZk|AJ;B(VpԆomG c࢔HsriKF6rSLlExR6uqrz-!@}0A?@KpzϾA gH3qXFV+ I?2j8>"OȔ tY) L >0DJS)цE/_F:+0YYឣ_EgroP ,fh WI{bK,  &vr1os![Ez!&,-(𼅌RC̮'Tnhζ)JDcq*!6ݏ"Y/Vt& Ge]lGNe4scg]/5 iƜܤ?u-|S2FlaQ%y q-; hޞkP,cK5W%Nk!%نTGgtMjG@LWslpsɵsQmjUt@PE`рުQcZҺr7j (x#Tw?$iυ_q)j88ʁ9s]G ~S5= ꂢD~O0̤'قFuravH%ȂSֱ@|7WEa' (ny#kr$ fͧjpRt+0I.7ԟπG҈.G:ȋEH}_Hm*op3Ys;u'u! FXDMY]'j(C@w疺#CZ̿Div'*mш WIEDftYi}Ey<;ðjZ911e[~V\djAlGE_{TeKZ5&3tKF)@1Xq"ppG@aajJ:"\ f 'C(u]ZŠCL7m;@m#K *37'Ht`+uVz7EIAn!e;Q_$Hbih:b9Sw0XщB}W|TÂqy<ѽ)yU@'y1&M8zBC&Ib>&Ƃ4©dÍ^W3`Rz$pŸ,6Oc51e1"%)*g GZVxc!ޡ3]'BkdmakVfF4"A'©13`1A9]6hgDfY=AnLJByy L$bwFT+s0Ƴ:ҿ2;7ݡB4_E ÇI}A`(b˔E/>Ȟ1r8p Ei6J -vuur4xۧ&HrDvD7;6|@ƠR =tes9edfZA8tʂJ($O524q#p ;ZeriQQgHi!1<6HXz Rr]׹Vz| 7ElMVNfYt/7ȩTV}p~ *  K!DO\)ѕ/'qN9@ڸ2!ҔNF<`4C raYM^JE]i  [ӥy?ZeҿHм0y Aвd_a#fLR¬C4#=ԏq,6G?cWL uw!/kL_LX.\JJxҬCdDNJ 4aqC&\¨jL6?^6#Yi FlVx`Z# yBՇ ͇sCڻk,HE{R̐RGi@@m(o-mVae 0^bT.$`r#eGygV~[$~xl k#(e>w %'K?( tgx8}M+\4%. 7LE ov*n ry#Z"Jjc-cc'p:V.fIXTkmLt{U=qI쒀^R&فu-{ &;RE^w_X༜obPӤU+[l@ɤYMɻxf=#p|I;-6"~8zk7>oٞVKvŷqoJ7ջuJ&¯v=( %4uY5>A囔o-t{'=  VCҺO% OXt9SXʿr7ŕ Gь;zf|,7j  dLqn6Gw`FHI+|yl[جXTe Meu\PΚgFV!g|*Z p|*pXLu8|-Eq$>9{:KozkX4N)´Xϐ6FTr/2,*&՞8-֡7}C.ܬ2~w6e3FwF)* L4KÛ*Le(I'xfcf֘\5EڥHx1Q?\7i34c GjD=[ Ǜ)5dgn*w_buT¥ЛROfI:B=qw Yg`eW?>}EPˆ' f:n'?zL L(3yTg6zzH|0`wDN~)nGwͅWl93i[oI xeS:d_i`R(F/2\d]f,B,!&&p(-/NK%A\En|eSxlIFW=:7>;Ͻ.}+5gԐbV`UW\F`46ک> t--%L Zpҹ%AB^?[={`[;rF\66Ijcڨ:?0='~1<{'^kD7=L6̲zšوep"(\vQ[m窄VsIwitHۯFcQ@&N?R\*xA0 '<)čX&ds+eV @ē2/^AGOnfqtcd\֪lqG?1FO-aZ7~5`jx7!zbZUޅ#ʧ%XKGe#"[CT"f@i b9AK ao7hiLR =RPM"ٕ|=EW:CSО~uO|k&(jw̝H. ZqLi80 Ɖf[NH33z!HY7b\s2!j6f_peIN7vEci+DVSY͢0cwj!<w9ʠBHbvV|cn 5cnI|*⑆v6_-rrI;0lMxY60OjfOWU5^}xpu GއaOn4p8:Ȉف@Rn Rn0p\ Jmsj&UOzQՏVj{\Oٯ슾hGDH7YD-o*U's-ieuFh+=7@_ɨrz7Fd*Ƴ}z,8$$0tEB}IG*hE{2 Ϫ8=}?; FzLq5";Ϩ(ZwS)B$?TQ:S=??6[*txBLͪ )K(zX(~9'/7Mܷ"@j,R%N3xV5ƗaR+!ϕ蘜VZ,== I ¨)]%p}ڙJh8֥8Rۦ.ВHU[%9vj13l=zҁh7 V~L 4ߜ zJRn;|5U1 4"()jLƦrʭB'^c?7v!\QqQ\AM(h[`Yoy-[@}7 1r6ήT<9>RɎ<ϫS+o*PeFXxo^b .Ѡ_5(l ds@볢*|ŬO5L5PPE$t\hY_㯲'ġ4Wl!(7wNgw:n+D |o+Dzi54vL&<um4z.44 8QRUVVwWLn 2H@\)=NP߉<]湤dbLdǼF1&sXAa'9,a9T\Ѓ}`7Xko'Snu;IC(̪F4v}߇e*]\O2@xPoش-x`t=e [bFbz%TxkS$|U; u&8 Jb/SR̯ rsWjszGfazo ,gTyB?XT\(i]Ycv8hָ4IAؚ+ )͖xEND0g6ib\Ϛz|Ndzi%Z޽(/=Mga?3¹|*.AL?.|9ܽgjV) ) YtƹX(eIW2"yӌӶbπMRntatf̯~] KGKYYQW _HfK սO1i}~G||sVu fYzAKvzѠ5R# G2SXޔ]P9::U/,v8F[2[ZzgaobRn5ҁ؀xNo[5OaiYG :=DIy0|w cb8qY}Ko.u?ZbF٦TyIRwr)_o8=q\;5Ki5b%CZ)B,"B (sq=Qؑ:f$XLڠ-g)S}eo$3C)ʱJU xߥZ5YB3nQ~|xV3zEY L79Z=x׮#eDǴhwC_D{"w,.o&wx_3sbR_SCRiP5ToRwd?eNKity7|c `$ZlÔtrMJcZ1g~|+/oy(of%hNͮp!R@Όnkà#zk*&eXU6;$BB #r2 TB8()_ALZ6!:X>4@{G&f PJ58,ΞZ)-ޞ8ҳŖ9:k"뮆[}xX9lU@!s;$"p<Cmʋ;Z'3[Vtlp0SaS\5@ Kɚk1}+VÉ1u 0x ǵp1_KZ,ODsK:y1#7Hߦ l&:DVm 5,9b=Ȋ7ϓۭKF0߂B~}HP6$]5̟n8/zpGTK(nZKlLo *_kӪjk`ٲeG6n-"*LzAb,~.P¯/Na^4RϗOItt2ʠ?%؋׵Z =!Tei]/$vC48yD\Rݴb]gH1'?oRz8~ʅLP(XDgl+q@F4iD;}\?nqHNh.|^X۵ |.jS,ͥʹǿ~z9?!Etz eG ~tʓhA|(kFZ J-u,_}K`ӡo`_&\"HOl!3w۶aC.aFy*Cu i3Og{pJKzxQ RA{~V]OTxvYFx@gG3TABoݳV@DP\G6ǺpA)t .WFvI|3p Rw1&W,Wo旰 V,"s6FnD$eDDH3{Ft@CF]ߖeźvηɯ3+:ƖCUx d[KK,8.wX.h6Gl"zSOGEtBQCG xv>DŸo UqfJY~Hwφ:gioB%uA\.az:VߧM x)t<ߦR$)+O@ l `7BaW=D$=K;@\3G"n&)/=ɀbn'iMUNNae]DqZ u;ǰ<;(p(zFZ9SVGRw{ ڞNh'&d`kYsv|~g(DMb"!+oVLM {㝹[fn`lǍނIý͆' %^sV>8 y*n[BϦpXA+v!%NOiGڿ(ݙiY=-Άna)\tXrԾpvW SYo*IX!+QKjD{K|ac`s H}ˏSJ wl8Gb;lXu 7!g.|2ADz)#"ڒ5*UeJxfϏ# (-hdm*we}n9d^ b\cN(9DTba+dӳRx)®h/_[*7uv\gsV8Ӂ}^ _RwL31۵'rd>f*[9֎e&ti,5k/6cBKp2RQሇ?ok nYPl!@al7~\ Ѹ3|We$Xݏڈ8Hmj4\Rä׏XX*ծd|1WWiX$En/Lؾ$xr|ejta:~dGH(i/$$Z?GH^bF{ES%%nj6\qIw6% Y̤a9 155.޽'v-u~q~|j,i"(u Cb8](N|D]1u{7e!wQ 90:=" D5I3{iZd^6!qzgw&cW/tiS$9O EQ1t8&ޢZ$+h򂵍KGXi=d0%ɝZE'z.\8\"/S2\op|R005OVe&]:yg <0X hXswP?2ƣdY]xL⍃]i"oUSZMuY e6 bϱJ [Fh]0on niv6" vBiQY)1zvePL Q,4$xV) G/E]T^4f 1l#6BO !RaHtVBiNkbM\KH&CS& 6Q= RE-2azlGRY냴J3hIP0Ֆ̱1=4z]T40+ށT P 9}6yAz2OB bʛP1a<,W=iw߹n!DsI}Sΰ]y9')(dʐO]ы2uAͳiBw &En m8Wi}dw kp?=xXM]~dGdpBK]w4-&D*72eKceobtm)j~s-ЕRk< K*912n,}W 4岯6Z{w}>^,/s?0!D~BrѲI]~Y130}Dsƻ0mK'oc)MHle[hk[&p1 ͋vM/| T Q4@M6ydV']Jqb~~ֽJg`>րnGd_NTjV:zdl8OFzJd 5 Wfέ,38ҵ^RD fU?4ڪ2ڧQKb<#}.;P0jP;r̡3$kT774U0Wg.|Tl@d=kI  mPL4usiቐ(b~ljD|羃TKz7V,EM"C_i287u"i|"z>b;xZH#_oG [s[ƇF9lC硰áMC ]d˕7`fv뼶%>z9Jä2lB'U!_L^i>nDYЏ^8}[nʵmI1Oo}?͓0 NB\-WbeQޗmd/ƴxqL&Ԙpyw++w3aC[֢´"Қv=6te\b| Q@t=qcRvR//90Rr(( ܂7Bo7#mObGJǏLmP|ċK(y%6:jJS kIF+!4-y a"]LOWuYz)ivRK4Q/##3@CƢ֬rfX"FIE%VAeJپ ={Z>)w?FQ~%a]pZ!"5и/z}랎4Jֽ}y($d YvX0 hٹɂ%Y hƑ̵ycmksVĒd`gB2͔&Z{B2ظ 1^]zOufV+J/I4_:PyLǸ "bm" o0ڗhƉ&! Sïw:νCyn4P+ҹx'3}:GB4890?RXù T5܉g8jzR]/`J/!² 5$φa9Γ1_XRtޞ&B"t38NΔHRz1N\ 4Wy I':wuzFƳ!Gevذ Q0kk3dX5;]uB-ILV6Vt4]V"`W\iz{ Yi~6~W.loʼ;ecwK]c =\ύ $H"(W jMmҫY$u#0vL4M 4ELZ'< @Zcu"<𐚊?& ]FbՃjl^7, (RHM)deUE?y kI _Sm$xx/WC7'hxx0̑7NeME0Dzփz؄ eD2IV5Hʮv.]n1YԤ鉬S] t-٣L߯,T,oUrgqd<#xzMS-ZY]4`$ŝ((Je4Ꮫ[Y ߉VJrONS{ ymGoӷ=:K3ndn>Bׇ2М'^K卜,ikSCtjUPa@^mR4RS)| wVO7Oӎ=~ :.oW 8p%uSf6on1y9Ȅa а<2ąĵ%׏q,/ӹGzm+OiQJOp3'0oC|Tѳ$i"f$@Ȑu&)W622 S oo!}EjԁG#t0z_!dGȅUDqDjxy0qwPm @X&B,[:on+Sl0[*a0K='$/P/iӳo9sƑ`(q8AT}}}x>iT{(|T6=h8.#ĸ8pv#(] iR+D;P NŜY:LtyJՎt_fէ+sXj?t, k!ѓ1^W՞9ٮJ JYXV񫄄 #{bK쨁<b@53M~ q-DƸn{o[k6['Ӿsv Lms7Ot; iDnV߰g>%kP+.2p'J5+tǒ΋|u1ܼO'˜0.TpF tYhRg6Td۵=OMF?3h q0 Sf1#sI[OVJ)5") cȀC W `(oYq5\s }ę@uQfW#P% PwQ-[oa\s[fsFքmI ̌(RُתcLmmn4zMIg[@J Q6nowbY\1PC+qcø?ɇuS+S"b9Nj5[u@mQ$֤:ق5\_Ϡd<o7`g&)/hi"w Q}c!љglWRoZQɾ~0xi wt oqb-od\:4[K`Gߚ)Ce7*yFv {O|n05JPpv5 AFXlȪzj"82H)I14axiJÄ`1N jL7mW'VBԟ*Z]} |'`g lv,[+"ljm.E_\)S({ϱXwɺ"y6j/P1J|85ԕ,S?3q`T&)~61Eno-g^UBTws[*Ym4}XK$_>e3;`y|c=CX U0,PyU(KOZ{3G<'u;sK1'AjG]4a yf`c8>t.d U!Pu oWơ/LA,.8`zE;CDc8}Ϸ8}{TC>b1vm.8mыqT8>{ g;r2E"A T7[c1;!aX0ُiQ;hZi6!" 8{utB}v[ܴţŷC\aKH{ćRf}:C{#+60IG5{8lP-ǧO$+8)n dh;X"i}D+pԇQR;ݽK=$Ģ_ aq3C> ,/9YX9%9@(JX`,*[Ѕ%Ӻ9h3r$[h/[-]r/km!ْ }NY-|y'o7 B3jcNU'vn qs<99¾ylYg y '+CCv ;ݣ HƸN?2Nz۸asM9|s{]nI((6CdeeT+oB ^¦+c)I,D&_Y /{>jz׸ u='坞5 )apfZXs7$$eH,L:P| /IYc4!k{ѹE) }J˔]S_fCM:LI epyZn/?cDA VtXft%k6 ^*ȺROp;δU GIKV*C" L+fr7Q ׷emgL(@X D 5]ˮ+]:%yp?ܜC DbT _IgвbmXǔ\U7ҨvEC vл%te/KȌDd,'"Km趬b!NuH4Ã#̥Zjt<GeVXC`@ W ; 1ƞHL+cj E%sRg jey\H{';ڶ /IFDG*/ a}g)/rCgeכyZ}[O혔wt=*a>'}Ҍ-gk~2LؤEe}sf5Z34YKM{C@3}˾ {PѤ 5x/{ҽ ׶K+9wir<5<ht[t %ؼfR:*9w!GǰuA[Sݐ eyW;@2y> E#%CVXk*v)’R˳=`ޘZkJH`јɯ`$B]̆N{[a۳d,\%yB^rQ[AsJ!B@~<@L)qb acB޶Ph Z`[E0.(&4QzرfH)ԁ_h@SEKp4冽qRaOP`gitH/١(0w2Pw3eQ vdu89Yۃ.lx ,S^sO:3쿒zze*Ki ?|ΌIڅj(Tk {q*rpܥ-WS'=7{ 5 N65'VSEi_fg8+'-8xp=153+&x_/8ei&׆+UE5{B6iPIEkh|Ej=:TY#ب.@♡ғ9&7A(9!W=>I=?ΠI*[DWr.{g.Pqf!Ж$NҶZEe;X$0&Z6JK8}G`.2p(o_$2rVd;m}r~6!옊NDKg?پ&#`g͇aOvkg>GuoF)Uhĸc-3U `hp mqSONEd= WiޡѱIQ0Fj ߘ Te|c[ht^k\vC[:wFy+G՚A6a߁/dnZvj;jyBAZr;E REu#tkwZ˪ٓ,[wD7HO}͐pR;܋6߷9؄A9e=LpO [-A7K氀ʧT< H\X>ҍV]G$n';l=s˩> k%XhS Hqx_P(LeTydھz1YN"ĔQLYF!Ok./XFo"=_ݓFxR  +6|^/K3q/zğfVIK$pǓ0T7$ɷ&5p=d =B7TIsS*&,{\8l$v3Cwu٫֧ko1˿"gB_}}@Ո[h|xC}a]"_ju<܆VEa  |59d1ݑFBfgo=Mj= *E=goP dFOz]`d%&ѓU"- \R4Ǐ=v7# &)Ϫrރ]' nnZPCUOB ɜ"c0 SD@%3ߪL̩RzJk e.fz5[DJJ^{r(,$dfSfe7uIbA[ AЏXm~B%k󟽉P;dx/r[h&z 2NIxsUc'T"Ob?+jH.ߜ{2~訹C4dڮ /~2H|^Bb%P2M?'|挮xl)%U2!!uB͚MIγC{G=Hͣuޔe2V dCs%KGN ҾKYy' ϐ&zOjy\@pdfuv*5 h,ْ'Gp|RW)g3J548UN;kmbqƱ{#C!XW7#.!M熟(QExo}ОzDё#+Z D)G0PWBw7tل@YΞAA[C4kh7NlP]5xYon2j5sx>zQa}?\?f;|6N7q{ jEE.Hͥ{J ,\|N%3͙&N]` @`nf51rp-I>ZINiwf׵p@JS(E:󀘇34J]rHwk>f ew`զ~OMz7^d ˾U,*DPVfoNsv;2B g^РhYEy٠7ת I)7uQaUtqtJV<HkĀ|wo ~E\?Ho9ດ 8SeEcQ礒ۭN;hD@E%7Ŷ !:CH ^seOh6cR[Дx]V8$i"_FkGעo ˸Gp= :XGG4Xbu-+t+įj҆(rg޳*z'b0Pr :@g[Ǚ<NO?a^!5P}An5&@Qrރo 9%`,\\ZPJ\\< `!KT ZNIE82:ۈW]oN _ڎ{+&[h  O5㕍-n Lp=۰0.~aYD>iD?R 51,Sk&ox5!׸Xhd% t$`ݮ֪Z$-S-~j!v.Ǒ7 E3"a9$ 8<% U]̊C Lc?bW:gOF=L_܂{~6K TNs@Fd !v=ܥ#lCU E!o>'rx;֊\H| yDžULܖ~$2ϳ րFajx d t3aDtXk ` E]NYU.s$#R-Jv7wY55LN\ Ǜ++-%E!E? =c647u1G%ȺX7{ }w09swn=jϿבDiQՠ.vНY4`tr Fv $ | PC3:10tb6i;36{4wI}A%ޖ#i@Ҭd} R쁮/ð\u__V=ڽgP_XLo' Q. y9͏:n[T~$6L+_ޱd/%E~h>4@4'o:xDF&gAE8㦭<ZzK{JF'<V ̀9)_\Xm2RCˍwWߝwdUA_, n ,]0]4 t=nwF=3̄Dk:LşVVgC>axq9Q32<|P Df gOsYf9u9="iO;v-н;-?I>3/PH V=kW(H= ;s惟F +A~c6PQQC ,DY)kBBW- q4!E2ŕCq\/>I<"ڗ/^ZƀGf$FAϿW9z!Cy+/opPv#Ј%{!I8Vu $eyW{[`m䛜~ nNJC{zkљzŞ Kf:"|lStfE 73Pdau#%%Z5r?2 9MGnSa,)z4,ep6Gچ肋;eO^ܺ)![\\Et%Ht*pzZ_T~ f2[Y3=W& qnhDR(񵀪ٺSa~T>+7r?38a%@œ 9@ڙW'" "lyŠy/0k{*֠tq;P y zop]i1xj~SHȔ|Qp?5Q];,/˵8s|,Wd#8YR2o2iJEQtrKw{3 nNYz|s%$Us7ƌf~2dp0P?Ʋdjs&J^.GcrI1nخ㬧c#;y/=mKGdSͺTAu8Z~pQkU/&G ]hXٳ`17(~'np+)P곿}Hl X)NOS-uBPa6XjdR( >3L^S  sFY *I@? ;F%0rt?i8Tef ."U,ܦ{$'3N#8gqa꽹{N) & \$]|'^<BJ*BA`6LٚwSLG/K ΅AHpͬ!(v0#ֶ'$2'VvxS-_PF&n]v$َy=hiՂɱ邭F55we{X2?&š&?(x46+*L@Vl'V-JKC`Zp |73 bf&Z[1ȹfQt\'e+Ij)Csͧ5Nt=k.NJ$nolYlwZQ8L>E(M'8}˝UcҊ_v.nU ˬTPrTGZI0)5}W| ^{Y߄w;uрR(jln,#XFo6e+Ԓ8Rwӗ8+p`@?P CjjAӜFh2(i %47Ezk`^'ه*u׼Ѹ_|eRrVub{ -Z`6]`(&I{Ue [|h>B}rUĠN;4 p5K\- 5@h%_l< vHV?[5-+ֲU}-^) 'Q6ܢd=ºϢ?ƎZ ^§cNe Ǖ z {NN&y _]Npҍk k0ח"Lq@Oͨa%q̛ճ%L$U7 ytCCWDܫ.ԟvOO!I7/դV+蝋ej817{:цqe}=D2課^>{ hOAHQzM)@s6d;#@IGPJ7Mft/ˁT p1y?wP<tSw8  ]Uw GQUT)xp1NIA0Cpɑ[o`x| 䞾FK̴Yh)n?< ׺Tɭ[Ӧλb"Ż-qjErd P)|Ӏ*t:<ѣf/"%no Cꃜ#/R|i#V'wսѸ+{K7nBS_GNOf] |dWeŦذ%p]O##1W7 l-hXfx([b듌TTPmcOLz._WX&mR~ʑ Kar'm.@Ū%8_*:Y1D?qU^ؒ鼇jG7[HY_|xtd_oְE DZ5WMM-[PYzJƶ0QOA>w<Ə.>@$g+ ,k?;<T2񝒄,{#@%c/I/3WsOV{# BJvd{Ҍ_r. +74w$ǩgBf_?DRcP8.:_c?qI*](%)I ?:oӞ8K!Bs0N"Ih h(KP {AzА:z4 "< ЗBz\ԏͯ &;hܴ8#D"TJwl0-w:CJ;ZBOC3x&7v$ѵ0Tt*!+2w0 [hQ mB=:* ɮ2\* qdK7W%{wLݷXbU?}]G̐< r_:vH@ >J="z/俪0M9b(ui|2e4K/%D~b|4Y]57A7tXk;?ThXì T28Xq9&fiTu%s v!)3ɘnQXDjOXOƊa*{*yL ?{D07n2S{nt3?7,oV\*] ;^JB'-\['LysF CD[=c.9r[Gݴ,ћ 'C/x66o$$e-d PА8wK~e[FASشAKm5~ZVYZ pP`@hyq|)L!XCS+5:) $ jɦԙ,o=tOv&is}06u#W0 pe6 $I$6n-Vu˳}dɊ*4@D6ksZR 'MNwrV yW/h-KaScm; OcbpΑoXʈVfY*\p5P_ݠ 1sX}; @3:f $l*%+v҅vus5NS!s\[A"$˛"YT&1)׹t=m$?-An Pi vMKP&?KSFf:VSIӆLm"24ٱqx08wh1&b5'$`O!2%% nbs]و ;[xSҮ\n4E߮:(dGb;R}rU AGE…;Rz]3oos ĤG.iF˄ArFhY=$|9}cP7AsÌKjzqvKR4'5Pi:5Csܨ-͉QʬS2*_̟tOk7DLnW6C+81 )Omeo \C > K>"~[5vdX)C\L*u)7{:b(^'|` 4{ui<(%crƠME>u6q)˴"m kرi+kb35^`j\HAwΕvnfcgTbظ`!>2-ֳ>{Jc[`I`A6#6{Ov:^Eq4nu;a_ݖ|:i"XZ ac4 ['|Ɣ-<`ON2I\rYa2 *ֆ#~}3* EityLbaw8-)k}KG%Q(o+rEǢl/{jk&6j~N^k#b~Sϋ-W,˃`ˇufP҉xC͑CP/ڥ,=CME<̕濑TjB/]0Oawdby6/qO#,-&airx5f^_AM|8lqݒ녠U[SCzٛ7̳tAYVWdOeCJDcFM$,IglF xAVr5Խ(\tq;\8 Y$"`xYB%9{?caPM(u}Tܒ#K+OvmZCQk{>y=ꠍOgw|xHM4@\z?_Օ=e8@kY>*!4GDb{=}ƏwLeSD?<֢OT?#]<{a!=+E%< ೀ,s{mKl-}A+g<#|1;xI;zQuA5@"%n?Cle`ڂVWE: u{e@ igAdF%Gr3*:YP*NI(z9FZ|]NyW*i!Y:wYBN&2"F n SY6 ֔B9J-a|s"qd4tU7`1j'`d)\ !=7OHEh8ԿV[\x΢JwD1AV`f{>r=} u}Jrrޱ4HBlxEynq TmBFk~}`N]=Ds +Ӆ%uޥO_0CP`L&<+ò:HbHi'$ä2d=,F!Alp.hZM'rLf9;ܮeg6pZ-!I쪚lwc_g/{<l"g) 0uG Kd,ptUD ~@KN^.bql}M%겟Qh tqb]YLg N 77]gVV}a`'߲.0wGM&9M8qp2Ĝ 24Mш.9l$n~)+VQTxţKv$OOFyo:9<—sx1|йI+l5x0$ll|DrHj4\_϶[PL&N|lDA3hiJm\]3N^PZբ祡*=X ۲*ޜ>$$QR3 43Ұe5lnphgv|9F+wT 3G:uBf&q,G6BGxݫ ?)Beh?׉s;xXAMwHڭPTTR>Da&"_a_qWC;1i \euCDA ķb O5/_@Cʏ"qw{u`7ǾTdBG(JۖۃBi1|R| U 6L #Մ[s'.AHY7O%S|I& rBP{uS 8A+m'dUvKPlyj6ZDk rx8&֢Pp^!Q# g^*,Crw0 g]1hstAO J„v zKS:;B:}zB5} 3lHzV\FB[>| C;g1`=XN&ꋅPDR báw]>) 2WX;G$^ ?<95ɝa%CU7 la\}.1rM:#[,^t47/EsMF_5n I YLC7 >:$4BRμb.]nW5ŕZt`,Q]goģ4NPP)X l+/,j@&jfH@QEU8z*R'WԌU ˅qGJGEWl _|]vAΙNNc x*D$nG| PbY`MV=k9s[džv+~^tB}@jMZ~JpEp4G~fm!)8 IaCRfz%é_NLU N^ K_&i"qJ! Q15&Z V`y ,q'Wi@Oc}5b\DPAǦSAsset3l c)-!ٯ^S mVThlbP7[* o(2芁W75Ī:9 RU5<^l )z?%d $5̳>sxߚlD(`J}1t8~RYk&u_y_-NFs~ ArLkmDŽ,3 i 7K0_|8-;ϿrٸGCzg3t0֙r h,ȈL]מ%&듛vR,[Q8B5zD␹lOvᵵ:cBj5?'v˜Kꌰ9bRfm]n{,f-@PzU ]]g(\5bk]F3,1#$/d̯'ϋnȳo?ovqk{Zړ8*vؽI(UëC%NKk*bT)dҎ´椳{M]H|͑8$ Da g[g]!5@"Wp\Ɛ#3LQoL/i=Awa9/Gzo<3w?O窪 +|8Wa"W@! t*p1~K&~'93ϸohn8Cg]ZZ= t8 K/n0` \p*^չ/j %MȚXis~i+^w9j@'>3Hdx/]V(0ޅ('11|vOaꕫ`ܽVp+-TYMTfE^އJ0ᥑ)+P㈦1($Y61TP1 c /8u3 Q†Y˨v; Kg vB"/~3Bݣe}%`6n8g<ϱ lq>+eq1~Oq |jNa hbUL/^nF)ZJWliüUkkw±GO%p(cI?W6B]Ќt:4MDcJDOrvOk݊B֜:C+eYXʸJ?7-2d8L1V,"_ MxA5Տ:p"ٞ/A.wRg%- f^(棦QI5˻=Glg,,.&aߐ2yӓGgL-+N=ˢa8d Ė|\Hz^H Xi5F Ad B&lx+U4֞MQa=pvԄ)qcP&zt)UXrcL&N4ls)4=GMv@S+^8Cн*1 ~.kʳNC]ѓ [N3 vA 'LE0xzss*|1S-fjA9_gɥv0T2?VGumN]Ąt4U3ڲf8e;OkbNrwv0wjd"x1nhJ"鎷޲K^2ZzɑVM}~VSe0Ӝfi y9 R18\-7@p"T/]xo?fr %nR֕K9n^REpCftzϭ7S|Ӻ;  3" 6B2I&sKzv)e2P VgfnsuSCPzxƧ8bj,yIF/}t#QEz"??X)ˤ3I>{jl n/܏RCW6,&`G5!5~UiU(fP;kzbpB |$!Wr f;PI =Zph4\,ƊdEj27:qcj_Pi:بzVVQ}bILM#}ۭJ~ۙ֯Gu c5p_iP9 hG02ձ {/?W@*u_rB< efL:DcDxa;h嬇3txipׇ;̴ЛN{XgV xKQTɡ,EbS̞TozPuN\tŲZ{.)JHOFj̴>E7up`(@OE瞏H6+oKXSWBmct}3~3 Ug 1BU|^>Wj:IARXbAHtNzbʂ %x1w.]vA*Ϳdv$G©E 翵ģΩ08@ V J"j^_ Pb7 YӑēUAXڛz(vଐz8Ǝ=WքGF>֟x$6c!{ckӤ (^gp4GE'tI΄J&"7H)0B?H|jHM?H ]N]hM^ e$\@0QX,b&4pf4VCc gkahfgSkI v,y>;%8Dby -vtDWQ!ߧ/ʚkzH!=D8ͷ#3}ب|Ha&X+bM|Z?"%8`]Yc)L^#|bӻb:\tl=_}n t@0~lPv{3T.dGih26J"E (dA-S%D@n0N mgyEc>RiՔݩPHf)HΜaF~JӓQ}cl˘Y"$5KSlz]),D_P bGuM#ŋ.ܷk`Np 9Ek@ސ@. Pjw#gD$Y 3|d$+}#|RbKol=ECE"VޓKYE4`COGĊͽ:Jwa:L)Q)R&9q89 `(7Mue4v"q->bؠV)jQ\~/:XNqKx8cW }$ˌJ.9~% <DX-_PF\԰;"Fj*-F\ ByhNnLBF=sBoa͑͝-B('ERtXf& x ϲ.H \zJ'Swĉ{jy^=+3H{/oQ+i bClz +%YN%ny&Ih;yߵ|B)2wc{./7+2,_#K-/Ww\zlΪ*ԏ2IǨS;uqN-bP#jqqQjR1V's61Zd:ЍfK'̱%—0:DX|_+*CM}maz=V*%ziS7(#ѡ~ZR10Md|8͠;+ݼ ,0R`IKi*UUfp*j*RKA >iMl/7y{M˲iW+I_&8wuǺv/X7+Z^KGZm[O8&Z '&>Fm'!alCi $yd2$ڋM:;(3X|;P6#HWR<,OLhE3P۪j(i}vVO@o{e6sMŗ~H4IO@v~MWzv_Z-E Iា'T ;*0oFX71WZQC35&usy.3O褢2 1~P|zV![:Ie Tͥ%k}o]`̃6~i𼽐9} dގ" $e?1~+BrρHw(38S.q('4v30l^L*HB'^O2PiR2ǨhܑV8/0U@WHom||:^1 N)%Kjp|]W)jy^ >'zB hn@g5)f| ÍHXZf~2 e~1櫵.kdBEBwtM$$Hpئ,5v҈llԠ\vГ yy]l>V( KTd1kea m|ZlWm{..w/!Wh{?%Wzf &btZ<K)W O_Dԟл˂sU#7EkyY`I圛߯^.N? +U o'wZ 4Kj*ey]bȑl$<''B//9lD! 3܉krdc2#Nߪ!xg7`ahqKy.2()eYw|1IbcAض6sx3^mi5M n.Q%''5CvݪT+v ` +$X3FgcF3.smv݋9Dt͎c,ݼQDdM&kFKf0 m1_'GKYNxwYAQ%wGTV? OQOv NՁ-ˈenrׂ_ݾIFYOm$6Sk(mZ92zA qbf)6A:j+aNEcqn $8M<-4XE 02ha @Pg[ F"Бh9v=0ZszoT7fOJ)F@rBou5E(/pMSɟ36T/7Wk SΨubk9Vs{ uici  r; ;H }}Ӝ^>GE:NjajAh"tur06%B0:; zcM Xtt|Xx= 'EJPΡ c5Fݷ0+G"(?҂Б3MIVR1k &_Jİ덦~ .W*N?5s$]$?Y'"aOFqٚUt;7iQ;ܡ;Aٗs/Nd ȡ3ka`+FPvE!Wb0>0SsQ@"Sb:@a1:t'>ԧjq7\om_72b~Lv|Fn{eX!{o,Pn~l]Bi3!O*n,ߞO%\W6f\Put$5N[^.}4OK(]T԰ +QL 3rf׭qWJC c'fW]7|ؔ;b; )e"C]J0SDlwB: u$#"n["#Vٛ%tZ+~w)(a̺ml@޿w= 9A_mqPn* Ph!(i8㹽OnO't]jsi;oȎ-JD)ݡeTi|[NC5ϢH $7ٜ5c=y#%䌬0)춈 T0Pa>C"%@VN O|giޞ:{_b2I#!Y#л⡵%8㙤(ʠ>\zU[#0 v>/4:2E&I?*AQDS,cw?l0O`}8 RjSl#H@Kv<tE7Ϋ^e*R3ϼguO1z/x=wt%Itl\m4\"]B4œ |F@Q)` 1V.hE|hq|€!lQkAn`33:@a>]n &k+(;qm %]. dYŰ6I%L*{V>: VF['G<( |W1Qj$?dtp9$–Ѷ|دg:pMEk^}"!; c+9`]pIg1Tyʝz7; c?o /i FTxyWc"e٪eo&~ODD^#1]8 XV|<&Xl0xHӍAqgniBy?K`M$R GpWm?8l<~䥪! ):ڳz͐n:<'#mmŏ^G:  MgGߑmU\b"}J,ߞ`tc0&dvB.KRL?x{\X+~5\T5Y1jFbe#"<;$?z# stÌ挏n_lW8qd8|+ׇ䍻٫{J$觭 Bΐ@C;F-­¯QuWCM. @OgSʒبGM5 F%׻.S1A<.yǢ# p#r@я*`SX\Tp.$\`XЪ֜5dׇ3v*]:|B9IPegc. I`4 v&LL#kH\y֌aD]RO/=[V⑉[g'rGH,hqG)7Y-/< q2?)[_kg=paW<|8I8,#%שWNh8UƦL= =؀=t Wu91qÌGS惾\*pZ OUެzIЦH4DZC ل~W U`LNᢚ`~Bpd^=if% $h2{"nJT.dG'$Rfܭ v&Vlր'LĂhV|x.w]( @ $u6&%aF~PFeL,LWg oq; 21l 0\=m.`]@$܄9}@B+$?Nr,Ģ%RxAOEY_ckUXBup,ԌcZPx/`ncͅƥRh 8úJf8gk:t#Cȏ7ܫW€)]iNCwSkb^.R-&'b-i"Kr ˡvHe0PN.F/ۂ&y$\Ѡ ~Z⓮Z:ŏU-m.o/[,f]RW'c:BV^)kLd?v>fK'rx} %apꄹSc/镍åۘ!̈́zkG8920}`/;/{AAP95>o8 1N/vbY0*a)([+8<Ъ!u*1݉#.A`$vߥK@1>7y tŘܳ_KuלujU|Ĉ'pm0lߴ /~r@R5`q7Y.NQ#< JZF LtC)<|B9#&4&[d(g ~U0Ŵ dbZsҟf…5mү_*<C}T`GgգcLW>VEԈer]UL$>!bT/+A#1[7 DܶX-SA^D(tPڵN1b;x7ɍΔ)If BbP/e1<լk}LC WS:5r@LG*Njl0؊@S1(BTo$[)a"`ϕ} [oTd^ z\ ^r ND}iөR%8hUxFN>)oн'R\ H܆#R_tҋl\B~o Oi{5؈`On;r}')WDWC 2;7X m(i>r2)xw_er5b143/N;gAWk8X`n)0-5]yiWUck]Dlqzr}F3V?T Dpa넥r}4w9U Nգf! 6-43JpK}Mcg/ 㴴+4 R#ԍ:j>FM13%F6SKFHwv6 |4`Q5Qa,.!7ZH#J L暑 oƐi]FHIVVa{\#dLm &t8fc˳?uɶ܈l<ؠl"KҖ|5@_(߻m й`}Mv*xSC>x0m=6P[vOYE Hc`8Xj42#{;3FɂߛEmg AGCLFzEfZ )qK0nsL*ש+ːo Vs+ (oW) ׅLJz9( zMӲk`JK~>&E)kHΈR6GMrcT|Dd ~^lzW B#iv@"˶Zޛ (T1曖a8ك01xj6ZW^5<0pNrظ%$]Nu*qs򭮳 i4Ce 򋾘2C&J\bf lEJ \#c^%dnfQm%E3IѾv%0J9:/z5'O$\h)9&KS#vR)=\W!rbݚ0kFD a_x4a].BEck[Q|ؿ(+Tv 585.o8p2VPiq-J֥8c4):nV`8!492-RMi}Dm0bQcFЉ!PhUOzo? e?r#ю'$ЂO%5zCԳq r_0ҨR tO7W!7`Hh ,~;q7Sj<!zFgȬy q;(>epS%;@Qbpqw1Q,XV\u-4QNh,DO ߫ `wY'&C.oQ=[7r>5_07y"#hf$?6JK7>mhCܒ2^€a^ݢ-bZ[ ~lpqӛx[4 5^R/JLPct-rs jT);ǔ͵v]Vuh5۳ :I(tzF.|0]V4d &cx6dh(^qOP%WR Thp0G8@Ѯ9G2T+RnSV% OfT݇Q)w5*&' TǢ"`VjF."}uBŽuh2m.1MvE .bKm\őq$ǩWHt| 8em5fc$(K)7MQbRC5XJ{q]#!i3~qA͵?gcֵV%歶0V49hf]e{sxQTfQ>0LhMcc^9ˡ:7#m+X4pf >8g~`V}Y<'i|-ثAt1ڝ/qѡf[Ŕ@QHSY^@AOX!03L| Zc`Pb $B(kIGhChO kI^Mg3cTD^e ,O`l)-iJ#>H\u@R#P eր0usb5l:H K-`xo&oӺ]-|S7pR?*wrWhvlXL);kYXTB@~ 桭"ZKY Nqt8C-goyuQ$ru 1fRs 2l4SZQb/sD c3 %EzPw)i{eB:6_ p_V=dTL؎" dZ5-?!j٦yt] |Z\i{3KEy7e=> sgQXQU%:9gc,ھ8biU󯕑Gʬ)"Hy, =W086S+a N:6(iϙ/CH >z:dG^!ˤ[]74j_c b8b%mqxXbXW6 `a•xY7uN9zpD7ڑH0A$2i!$}9{s]dd 9 z'e5[ivlְK_g~٤, 椚b1".U* V!tu6>U)(!C()#; gh2M\{ȋc7D) |`3lJ[MY!پ(׃=Fs7 Z;mͻ3+IG5>)M_L|Jo Efag dqK%fʿ|'̈!]l0j\sPXNx Wi_#p6ލf66sAExp<Ƀyʡ&9%}q++è2c#8GӔE3)Cc|#E{',[@_oAZ|yZCa%Fkbسo~&)Ï;ӊw:i3זǎ/1JhBEc(Hӹ:LG(B)"A<,HnT6≈۲?nMBoPرi4kV(ԁ,9 6>jy v!#J~nxR%5wW=Nb(Á-7˻Ւ/c(_%wgbplSOp'3eV @:?VM {S0|h;OI 9&K\zͽnD؋flh?sz ȗuLckB_,g򼈗= `-.OAV$1ܰ0L`$߽H*Ii˞H))Tlȱq^4)b$-YAn,QgUJ3#ɬ&?= +m6)5aS"'sb]Xco9-,ԒW-N!'c>X[>ۿ Ez;GO\B'+dpa5 U7B}\hgSw2)){>m0{c=|۝JTce,-ސbͩcK8-eL$L'$ӞfR00WA__X7);Q+P%t=[#n%|g Pv!?Px+%uc5`[gۅ'#8}al9g/Ov^CYp) (/|L# >chr>OB-Zr427N9JBᶿjk8\,4prob8Mq)HODxܪ&kx9xƉv~Pՙ y` uU7ȫ5PK @ŦRi<[Q?־"yd6;`JZoڶ4NYCu{2-ŀ H 6"Pѣd*'Q `fBk[M6?d! u; 4!=oNݮ-]f[yܿloFxJeiG3pHD];1hysYY]/4V %:C0CiI/hN@ldNm"n8b}65x.T8i+[M;WcvcQp[&I)1j<5p|Qglb /-hP.w&D9RxVB'gw̒c|UD.P& 8|tHmAZ/D\ͩSR\ O|E@XbͼFFɉzC^ ^Υ- 9wgr ́p|fD5IW=%z\[8ο\_znΐ:'oO3=` '5=L_`~820l \LMw69 ƙ78 t,fꃡ >FUKkJ'^#9L ⯔ P-dSV7)P+d? շP[6m+kN+wj t|bF) "+nR`)R@ 8:\D9w.o@!_:O,F&@m (s5F;*Da <΁7A9ztPU!4rʕ2cvu6glI@𤃥 ͏if:m`;D<-/f tRG[DCPNC1Y!5s1r%Aם> yy_n6~r<-7`7۵aHH~ދ2TTv>wtCm9,+g2;I ls=)aOZCaNqTHժ=/vw4Ǹ+oK̛)/4,Wϥ`{pA[w( Eٱ*SDj?Ls>/NQ9~p֮2E WuP Fx&vZ;zG.\ wE@qbo+J'ymb#q]ͥS5GA(vnh@TvoO(C\1Xڕ饋 佨cV";pa#bJ H<]^ư$5#B|2?VLA -۪4MoGƬ!sf_g8ՔlЎy g0sZGv%_$8@`|B ior}?=E/r،Jbkj>RKp$mzLݸ ,(>r XkGN< PWhOJck/SG&7hJ? :@Q=9FZ_UF-_&$b[ -\H z潧PM%۬B U<ܙ$M'V+QS;4*n fݴ( Ev xa*#N' Reض|Kզ}w:a#^xA,)2?Ҽ46_yF`L~6XAW`L#:6&O$Y727,sDx/dŚtjFO] wb@TҤ%*fka;:0pNz6ޜRqrhҽJWVQ1ӧ#'@hZŜhܫm{{~[m"2i Q{|TV.f$MRHF/;8ܗ*D_)cvԦ/v+F%Cɢ@1! M$89pU0 _i~=s-Z${M{wC~~W 1j?1t^FxƨG>#@"9IUi@F`EI=x&+GoVDv,rv\.$FѪ5W,V9 M5i'Ø/2\*ba@|@شE}WyMpA&Jcl ?%J`)J,p691c;[>UVIpR0Ajgt`l20׮;Xeݑ@^6ZpbB"xB>{jf{ӲR\JMDĽ3UFPaˡfI"@k8[:U}jY{]wұ!hȜp8n>: ԙ~dM# 3;i]M1Wvfܦ$"'I_r\ N:>\ZV F xBkҧs?M ڨ.zyJ:`˩;&{ӡBQK1Ԑ/% ;tzU#K1@@tc[yi ̞R1~;ߴc臑ӻ]^/kZ5+JhN(Z/Bw&gydg'n%:OKS+V\' I G).>C^ ռvIg,[5,q? /'΄HnYmfݨȒmy# HhEa:krXk+],gX_i68'an&Ub uq榯dQ^נ. "XySwl/8gkGL:#R g<|Jޓo`ΑQ ;h L/CSg}~(yg[kD̩rPh~IEy2yckSql3edhAJ7±Doٸ8-~]f؊[ FdQkwLL.!hh\x}vNW|>fi*+P6j* ~ah̠Nw~*NoI(ՏHhҹZ.VqSQBZ^iݶܜZ ܩʙׇTU*2WG<2$` ?r"o=tO]Qo{N 6//%NXV*\_~\\nwiVt8tQ $|2S !Qu^–\2gkcLg OB^Z+K\4ԕZtX9@ $%˅p20#솗j,:ŘaĘcOQQ=ztG\ܢ»bTefyMQoGݵi J$`.Ϫv̖2VfhKyėA&IbTŤBuZph`/)} 7~*\z]D ,с̖iί ND嗤/&$K7k!naH^B=׈SgtďqG#K:Qq+Gtr4L4PT}Hq y6ks` U;)w$-w{A@ ٞhΤڎU8/;l]܇c.0D&l׿ܹ|,G4͗cMb:}}s5&tlE9mŋ] Ͻx? AD7?-N\EÚPMu+ *wY\+QN' >z`i\ni@nkm-#9؄v:zhH&`mlȰ8"0F (4P|Wq>/ 0TYǞ͸TF?^ŗB'ku\RyV،*JRAK׮ E!Z͌ғ)cԧ ݸtEyN_p;S:z{Q6>fqr%~+H1ׂm(Î1"<Ƛ#(Wt&v#Qp\i`3_;<׎|C,41&Tw_)J^;jsׅ\ͺBWkb]aMঈg iq$BrYy (O(dh[\ !Ⓞ?1mfd\KX[.0mMY4=\!ybZr@f 8X#-5,#d)8og1Syj^#SN*MkrAP?o;Ό5FMca7cmvK3Վ, ~|BΓ0_3#`X!J,% fІ ѱG|~a9/kqb?)G(GzKiaz!c0F9ρ^D 3l Ll:Yj}ԧ>+YfNۀH *`))C=P6aP`x?G\ rtd_"wd&iZl !y.%7.pKXaWDQ"3fȠNAZ$nrZi2 aVrqJ aSDOĵUI8x*}B?_kQGM"$nAen>#)8z$}!@n,ͨ܆|v|LLjQ/vHSo֬0 ygLS5TEL*@^#?I\ein6Rq6@7+vH*%15[PH3e9, Elxx>{/mc_~R?9yRW`6gӣ|q94վ6teXWFI -4hN3Op]M@iAzY/@آ;Pr客qH+A4C1a\AA ]Q81nB5; u߫odQ~`]\: ~.tLa3%$L9x^}Hk+4]=0Nz-PcMZKg&9xx{f!F,[B̴ͺ?qE3x\HƧ<(A}n5%fvݳ.4^媈nîxSq=ꜫ&{ù4ANkCo}a$N?a:,V(C-=*%@0mKW)'NjA6?`: A:4FEOH0x/Cjד|Y2c. KpW>]k{]e;}gNq x=](;=KțiSnqu1$DZ!ᜋ_0zofD=,6׿ VML9ɑ)dgbB?|Y |{YwyWw[^k- iKo R2O<;{3Ư֟EI}|!TI!CE1UBtO`<4XEQneX.$5"p,  *U 9BjI+^HۓV Lp oJΊ%5`J?"4Axzh &GyWQ"ؼ־3%V3ЭʝOTۼ#]37bʨbP'Cu!LXW~UEW|2[?-U~VԂGDDL~( ϶{c>╴bc_34FJ@V⽍0VP+Sb<6@L&,] 8ŕh*Q9nIvfm5- D2`Atsܼ.r%01sʂ+z&Ve~4ڔjϛ\>$ _7t74~Yыy3!fmtH/#=6-(>+F}e`XC mX) PdS($XG2;ݏidy=7 2/lβ8rxH]GL߬p m`ǃmOreo%;0ZXZ݁")[q hgUnEpMXy=*e$J]T"\ͅD7YTߓ n&2.Y?z*S*F)'+Mf-Gp˦fȐEtexٺŪ9 c8伃KYlSQAqMtXc(ƒ;!FM#6Djql˽:|6΍~(lX|TkqGKrnJP6Lۂk5-}2tI׾St^SCMp W.@(HG9c5'n$ $,rY}Z?#=0ے&Ee?7,kze NUbt=Px&o#'n)3NQcv}'Be8ߖct5tNɅ!i~8r21b(PR?+b`ϡ@}~̽o*`[ϑ wc<.Wߟ灙Jbxܮ͎I`\pIG%4jSp|a /} 8- x`\[Wк"zxQCzT"y<aOOY`+^u16zӒL&#[`hjkT._ѬVj/N (H \&kMRN2`l}0y_qHdjd|X&Z L9YA'YV .hR4wJvA31-¡_cj5 -t>І?N)"2= Iy.QU,层E+*%ikd^\'Ցů A6}*iN0t1_+5(uϊ9]yp:j!uN[*H&ZJ:={=|B礑ӈ zdԵ ̆f|r pQF-؆" DƑon޺ d @ 궊a W%67`*»y:hr#B'<٣lfw#ȝGD]r "/ T 3GvvZʅi0#ֳvkۥzV]+YfXt3pnMBG&) Qp"{tNpomH;*KT#W !NAV#X}!"Ç1pZ>8'xZ@0h #Aqb\@Ze{-QNW$N,>>ũ) VDj PD/- `Ur9Y{Dny/5m=J;.b$E\t#%rDZF5lotF ~YEI7Xi\ȳ4"PzV-k57"8AsTήՃ5j֬C`x{3dx[OSmHV}jBbiu)1u)UsyaFɹlwf,ôa9WLbzPdEr`u!³8lB.aNx]BX=X[.&(B̛ںa TS:* f>& ;/܎ =z(cCF;"Lќ˧t3Bb/d7@P;v> Xkk$z(%rOln!j2^)EigLGJ+ʐ2x+g8"igUl> zKgxkq|6yb7xeڤ Ãt|&;?wBbF JZb󨮇aDzAp/ G# t/kdH-IP`;KxlUy<{"ى8j C!F]'U G]MEX"įg7d!kE񂑴ZeDLP`MR q =8]cp;YҸ̎XMOq:P:3-&TkrC#a!B|qm<͹fan[a{)JXs@od'9WbSMzKy7ŶvRP-pHss{wo_cHqûbtMe` r `q¬ ^`8j=cV bj/8Ϋb)]#Am"YSH8OH 6DOdt /Z2kI[9$D&ÐpCaTҡԪG _'݂3ǙqƼn$]x(E2(H 0w@bpw7Hm޴ `J[jdo0̑f6xEmvD9x%Nq?}Wdެ fPebBe6Ӈ7;srQ0Z NZ-=CW-p0$2f=tZxtBs%bV%ݿBՅ(a6F{8&Y>e-§{R kPF|{A?-P) VB/6cC.hӮ%;O_VV>OKB It05Fq3҂G;n?6/؞j>4Kxo3Ҭmͨnqp0F)a8-@ꐟ"8KpF>/y}JF ZMXERqHtdh$ip8CA .$wW}}a. Q6,Xp($j$pcQț?R:s1(|FrYDoAD{3/,(G6BR"$|.:kq#9"mdmoieܼ@ѫ gn-N6F49 D@,z30ɬ3Ͱ4a(Nqz@J$vH16P ͊PԀQ4@JJ`}PYH.4a(f5mbIa/49.MTџ]kIH&<8@CjQm U:ŽoڒnLQu-_YZ5ɵ-OʁN.b=5U\;_Da# AF.C#7ױ)D{-jɢ$^e(:ߴo+Gwv pF/qtTKwTed;< =#`+ha.OR˿pzǔynFW/WJ,EDx HJ3 @&–̷W-XA0 ʙٵ'=gi#+W{G >$Kjg'W ;'B h^yCw@~O5/_ vAGɨK{pѐOdIP-?Ʉ4i&yb'Û msɩ$n6GH}J˘wWDki 5>M$&VHXy}sMp743ibT5v!jiPS3Y} x1Y)ȽyYP$3l A1uǐ iIo [.+[oykt5rn3=j@֍O쟭siQZTztZҔ׶nӁmxbY |N^JmU w5Lsuڙ `kNHqe !_-Mˋ 44G1>ޟ=6֠BskېiM񮦊zr1l5(rYJ&N2\t<17tHqiTA׳4Fwg{ 9CHv8{҆m& ::f7Y i2kO/zk3Gz x~`%JZłX ׃E09x]8m,2FK[Bv>.&&Gl f7*顎 V03hZqN(ú0In9UZl|쩞YZLjoG| V>z3'/!_)qMB=D Y,UXRb*`0dFM@ms!Y^G4KU9%c1VA MQy/,+ ;oHɷy>r6TLRne*}I@/ep?UMH צ_xw=H/3٦N}|lQAin͜(=Vd td2p@h0!a_L.Cvgԛb) <*ʉWW@2ay +cٍօd5dxK x< '{z舛A$BmZsIŰ-b &n[2!@O0i@'_7b#XT1#]/J DjM+t?3az~leƵ @|BQ6״9Վ_/w^8cR^t8ss'?RE@zdP>K恉f(HAP[::Ek''h{ - T7= YX.sisZ/u񣪹M_\} Fݿ]+q[ZAT!5ߤK倞A^/3?8ip 8;sln<`}zV;U#tDp^)@K5iklzKFR\@glCg;u,=P5È]v4YS |>d:OzQ/0yatu`dm2'aؘ#?>Rt;ل6& T"s !? \ y}J[ ߪVqm ?ՊVWB1]DQ .Z,0@*GB+%9)8J="u4n(KpGE&W4~G"n`r4[-.cU鞳s*$D;t_ꅔ;Kl7=1u#SBnfb6Xѯ^Rk!'19I 5&5kX$B$n{֟Tl:w bp6]2 rCOds7$}j`~]*ӁlYgm]i/GRLZ|@{KxYjZSÿ<|4+vQVK!Ywܗ#)7 $lXDsn 2):1HLD:/M:(] WaUE0`5Am?+<ORאnSPy?ɐ0Im4nS՜va=`=DžH7HU`x۷+*IkTB{:4pM,0FG=- jw HApèngJrI$hX?L馂)LfjTB\lE:Ϡٺw86L4(!H*ЬEQҬB;w!ARdufc&];:[x}Nz q#ui/N)7qbƅ񽓘{#r+#^lfv|D,jlH >zSBxZjp 6*B>|_ܼ}=J9ÚOB0V=z!5 avD SV .9JJ$,GAcD\)~ot@ V[#lSf*~yڛ$*!%ɣ}Uv.+q)Ke~o;W.PD=e|ޒ(;,Nb/~+M/;AbADG';,3x<ԛ!S:~s*:>ta/W:P ?Jj}oREVQkzu)^;BTvsUdj 9G9ՓFBXʞg_.+Uosujr̜!q'# '8qSDػ@dm'AꎋyJ~'s֣:x̂4g>k5=UCލi?A↯jj<Is=H5%ght+:;%JFf\\N-n\ gC_Mjs^g?F",f1IѮ  TZJ~|I=}G1 [ن7?CSGz tf Me) 5[^jp2iqUd >ge w0u}&AX8/rJ14ZDeRb]ؽBSB jn:\LCb25~'F2Oiӹ9 CZ|g%TE (3Aӎ##n2 "c evr%d35,X+c=&&_Jv+ 13iIwjUqy">1}"S'e+_hp䴩9ɢAS)A,) W9n;1-FbGZc&}%#H{[5JTp*dN{/%8+ X/rp­5ݮn@ƵJf!bf"De!Lo}'[$` og췛Ըx6(:ĀBΆ 18[8\l_*'ǷƯӦtFVb Z[uR~<*nTTHRA+Me95aU0Ӷ d6 :/YDP6-gJI:ߑ0࿯J>4AC"e猻R/@jjbң%qRNDYՎ3[lJaF)Sgk WldžR 0 toD*EiO tA|=X*.y}ߕYG|5O^Q  Ct RQHBmj%^䑀~b$!< ^|Y#XS_/*~jB[g]~zS40: 0HdΖ߬%Mc~Q%Փ>ZN S-綵e+0[#!,N&"H#u]>I,̧V0w3yC.d4[*ZoƅQ*?i5WOg 'n4>)TxAԻb6i5u>]*X h5Sb.t4bWy,FWCPO49f4" Ybw&/I+BnkQK!^!-Ps,ViB;L@Nrlvss lT6b6U ͐!)va1!^#I'ͼUv%S0v;B4 r/Kd#ݡ[@DrDKth7})u5@(w brFXBklo ,Aq MO ܬ-_|8_7 9 O b|*NJ`~\ԆN?(+p Bg["ơun_ziHE40B !<.GlW3п^齪< ntb$joffe$>tDsάNx|]8 @DS%3]WmلL.ltp/G$&SGMRܺ}ܲE=dS9-X({@ߤi;Le6>{M@Ng6m9WUqHQI]LPڎƬ$ސ_7GKW׍%s&H_v|Qkfwk\hv"fnƷCLYHY|cq0DrnmU$>Aδp~Dq"Pب .{ K|0uuRߏW \p4~jtXU^`H=0@nᘒZ28kt< u?ܳ;r{=.ŽmA^3!뇣ц|=1&m;қ?HG7AIo=TJ:%~nJm4 QxuiJA'sg Y)7Ta -[gE<id6DQ^>S?KBb8(oa&+@U(]HgrZx~u97ƾB6R.61uWRŞNW{m~ӏ5wZJDQ2g4U^m|QW{d-y_Ud 7"2[q_Nt jgc{=awYNʜv7FnJ0x9ZO`PiohLtP[q$*r9Ta&ї!8L7jc'R`ԟ2d%u {,GUQ767Gk+keO-Z+lAM7˜ KWP9TwLA{4|Q䍳Q`%tTΩܝG (l)&pqfX'29,'vҺ% ӏ9AϨ"lWRdWɒ(,aeDOT* i X#~,gb}a!(ҥ A?A3O:B2f^Pwr^M¨aQ,3'Oz$ 3 qēpP)75s&tLg-Y 8v0>,3OCZ[3gT_2)6Ze3*WYD3aTH~ <Ɉ_&yI9$HLD4am=f:_O,ih@.@6>6%F.RlkuP!އ`*6x~A{٢!cowa岜t۵#p1PęCZ?z *H%bx—p%tG0^5Ugv"H{PCAԼ ͯw?:8G9'9i<|?<ںf xձCAt tjL9+X['F~CL%$q݇J-5_,&NhrJGq؂d[h9q kBѫɣ8G8, K='eoE!zK}1F:\,{Üf^L=&V87T& NzZrmS<`Vh,r(CU!Aswҍ"}b.r= &To cm0'{'o=+caa-{o6ҜH#)6y]N w Nq45[1~Re?c6S*kqha*_*wm 痟#Ε-1׸:ټJ>/se5qm_UI:;<-p0x/CN;ZAyu%f 1>D_*c﫫tt8ru:^3&Ʉna}$#,2l6GrUIh-y Gu˓ IΎHI/+51ӂksWZi0J: jaeME AgWr& VR+7:z7q q˦T[Ũ\}!W+ bI+ܙWfJ]{4HQ4.?+mŃuޱKo"`;fmZ:42ZUE{nâ=*8r a‘VD6O kP" Ȓi_6S 8%R=Uy;R;?IWaNy}^銪/xKC"I5E޽,/s+ᠡ)$_VVJ4EWQu8N!n=A/N FNS9(6-k%td :{b*&Fә?sKY)b,Ȧ9QEOh*Ga[N|j9CzI"A 0\~]eC5W>c~_Yڄ59lTa5: -oFus5@.b7+'Nxu AlpQ\08>Of2K[84WqGFW'ެfw@+>Έa*%ȱh>B&,8~L ~qLeCPB.5eM*'0R\OI][! Dʞ*Rz=2͚hDxzk6El8+IO񆙐gQ$yOb lN"Cjxi^ܚ5h]X`p^e:h}(6z: s8:H; &(˦Rplj9[  mv?IR_FYhzvrzp?ާ}2`៵p(6AeUh?/f~?C Ҝ6zoYaH2ֺ/|"f?bbk `G Æ ;pP!jq^o;7$,p>h>b$;H qaWeǑhEa @6g{०B_5эM`&LM›Gc_ZL9&KƱn1hݲ68t{8[Żima?g3f\/Q] KTzFxY]h[w27} AgkPKt3KAI.ֿSgS'U-ZwK<~/ ΰh?~^ISy*w T^4Ij"Ïĵ d O(E5 w"hঀZ rGt; bul͚4pr=8ii]Bӫմ{"ʙ5Za jjYOld0 ^Ffe Mk #l|ss9 fJOgϺBCUr0+"EbaL6 7oE7 ̷}'-©I:웢g܍ZeOm1Q4 ` ~2J*5P]a9Ri{Gr\g]mĜo^SVWO{m? đ-SE$>qHAV* G:'rL0˅~g=]שA"p7ܑ4M))oiS?МAi{阓Z+kk`x/_5_P6,XTtQ\)$p'=YiS'V<+>TO)spP$\YHQJ>eF47:5v=50RVi:R6lW!zd4gT- *k iNuZEeZS_v90)هJoAv\R%Cn?l#0PJXαjLw ږ"Y^</;$n]r]>Exۂ4u|EK4 sfGEVjK[C}oҼِSaQ5MU/YﴄYY9rW^QㆎD҈Lcvjfgdvx)>Na*A-Y܅ eT  .3 M3ej1O%Z8O~;+Kh^2$m8.Ъ47dĎY;}/r+'%?aoU߹L8ԣLfC EWXGr~KZMcz&ڝzV^9bywoɃNoFR_g!?w(OPQ-9îDg ,<箬:x&lfΝհmJgb+IU\5<7NJSw۔L0̧A֚qJxdҙ"5z>k %*fǧ†pŧ-.¥240c*EAvMKPcs3?SsދhGB1"-Є.I)"}g.g6veI;uR9eh9%L$jfLLUe&NFB撪F!PThrD2PtDmSȽrސz Da#Vj؏l ^ /-:Ngn ܊T2WJi$Mox*0CX&?G"Ȏw6rmeH qY,nX^ BQꉼ6&^ɸPT]\O'zr3ARDi ?H'͢(rtKF`9ʤQA𚬲B@ob3ɢ@i^'u:>y7jSϵDD3̑j>¦&rKMEפL==/R0/#:rk#6$YVxv??Rg avƺ7`(Z-ҐWmO")[ K%Y"Tژ!F3@d;!V@~ZlWiEg & :rJ-/*B̘z5>Ru6̨}St)WH nz1;U.y{]$Gww= $5)Y:ͶWR]R 'Ħ,*uFɟieTفUXݜ`eka8UreN矎TUǯc"ULOG>.64̻yC\bR}p(NkZ͇UkvL5@ASCuc;j`55pxs\-tʰ0WDtc3monSW%ϓuhhd )&  $d~AJCNqû.I1;յ^rk뎩 (:ZFOe$.f4U#hA<~t'= _fak2@&ӑP 4!Q4>=~~faՔ1Rk ||5?Bi\ h;ϧuij sf0)dp_@z1MY5 '{t@_ ^pۊbQ#Q/KaȂ@RuBao, ?:Zz:6z ֻ.=8C+#JL1d,{=U0LCX(d<f׻# wM!X!a =Gu< }de'5-% HyDBIcаېsٗk)&v&bZ3үftЫ^<$}[|OZq:72pݲ[RA"86EJk.&$Z f.cڐ*5D_IGƊiCO̞ELs+FO桵n]`]ǁs-NFqZnMW7"Kj˘|qZ_OtJ?^L( n<D++N:?Zf x$QS wG"tyGcwѕsq񥵞FɬXC'fy0 fWje93P׽U S&ǂ@: Dz $rNRyMEV%[Ml 6v i;B]'|^{?L/Dl~cV5툂y dR?3 m~$8p7jqՅ79|6eaq0RMwFu0%tct437"Z͞UuLƬMu"U4]{Dg0 U w7t|;T׋崸?]0b*p޴I}Yz!33]s^[^oa`5:g+*Mq<&CO~j] i?Td \^˜{@WWGsDΠmJkB+QWмvLj91M=l?:KLPT^4QB){/7=`m%t͹_WF~ n)t$A%5Ĭ_/ @1w=G^/l"yL,b:Ygb6ce h2IZ}z qF|@¸Yj%o^)@ݲ6;*ͶnXc݄PmE)SkW`L~XalL#>eUisnخU}\a3ZJ !x~;/Dˁ_f>\gœVvpw;cL.YH( 8e1l #~}kj1KJd׆3)טVU{XptN'mwOБX×kD6:ilR [hc+D,PWl7e&)z J\0jT!0H,=p?!xy<; =`Vw0v5P>,WZ%{7ޚ^EN.2}z@cvBNnrj:ȚC?9# *%DI7`> !|DBލP EDDfb{!MW^R"SU;V-="S["|ge3#3 u=lظD)YtRjDb0"BGGZկ%*%24X05*^H&+/)Qls~_`{5ՈCu::tfu:zwoP (z2J7s‘+ Įׁ 4T@cmO4RG Uߋ}%T#ZaH~nPLp~ܭdfҽєZlj{}Sz]JbE/@)Vg6۟Jo։-7 įPAip3Sk(s 8D ꫀwR :3m~q vOSQz-)ɫ1|J->S|S] ٧/mu.I3g—D?`DϔK'#mY|%Z u1I1ֻ~"dg6!]Ʋs 4w* 2MT;1e;`,fHZRBD:qAY? 3KZw+JlB'"sFz_sbg۪127d+L^7SxSAA! pO4{~_{>K̞giZ؆2 0 TApA=LHS 7za;C[ۿFEWҵ;y*dn%s,۷v3t,S<;.Ic7۬>nɈG4rxCیf%"'g#'iB#0{11H doQSrN aAԩS̆fDHEk@i680R_8-˦??0R6}oIu&-h 4SSOO.cxyo"։=a)uHO .i Qyh݁\fyyE?& rܘ9~wW6ǬVYp3)'IV92<4E{ \@z !zL&-t,rݖ'x!e93ba XSy/Db}a^@q2]Am3 sI0pBeVkbeyf>CJٲVNĪ` =o+s}Lah n7\1BW0iX~C $g ٻKqӤ;ơ#ޛ!$p6śOC];{;cbÜu=kxܪ?h8|eWxϢ+C[=oSsQ1ZɔWmZg}̶dDیʞ"#V{hsL$ҝ4*i1D^m` =0uVYRQU +!T~׊:'R)D"lGMaC] {)A'|[+0 IkH;n)+mrg"{y^s3fi9Zn3Q8HDN lEǍ -#u /.[EUoFI8jmfؓP?ݡ2$f"~t} YOQ?"wIMyf|HmY!AQ]Au=@^k< ?2vǷJv Sb-OLMngk$!*Uia[{]逍)ŝ}b }&:RKr t߇oěN{@Jtd޻N70[.)ن'ڙD r<v#|VDZ@%wB-omTv5(fY KǡsM Iʜ`#2Ƒw+cFenO(uQL |{뺎klUE5$U ĠWnm{&Мn*_>V@ -2=TXDq-l͎1'tGϛLpeEeh;Gr\_xS2ㅪeJP"^u:A-3I H <*B<s$)qJ$d*^~'Xft/ -F׋y4C3Zy7X D򯞸S./f1nbKJ r-Y9X;qpʗZ =/ 9o8@Bl>$ mFBR@=mH>KFrhy;K$=&B+W*e%q )k Ep/&>bLpV^3iS0zH]I5zws~7ہn{A ~&$\;XE> !q @.fR-<{̾^z/,;gjT Pnonv>:Sߊ#= w}? 2"ȹ7JN M].-F8/!tM俹^CA q}]o veg_D# 7v7 b"#^Lq9\;ly|WV'8`04^;?l~'`2@6uvK}?]S*+A(φ^hSvFD{|fs~cl&x)/Ý$ߖr+ȬO{ % >@o*8&3^ƋX/c1,=V K+l7 Q9|of ƆLSAtGR;([ +m[>^'UelZgŚ7m44%/*uB +~+u նMjU6/d޲WbqKB*/F1hy2EoA=4 ZFݥN:h֎[L_?j@n8/!roRܒ_M+~Gat(O`]ZeM$۵{O 4(Tl2yҶ1Ȥl B,j]8תi]1p"]kN^Z@ F5Ćߣмz֍@#,vuZxeq{ig,a1LHSӟGB}XFvB5;AtNQG/Xm0L:6u&Yvs~#uֳn*:,Ӆ/=GɇQc̡or"ٮGi5_`E8))cWBXzmBm $pk;I)E D]xe(頳&Һ 8弩֮ZFf6K]b籉uC‚'454mؤUJXNn4 |(>]|ꎾ~\lQ,<.}M$%Fomb!ge|v'ϓ^?tbsyDzBz}>0)zlSs47l <{璟IN~<,8X f%ǵ':HkA=452F lGLHoQeߏj>xwX!0O2gԕR,:JuW< y~)S:Η6!%If{]rgw~1őUyyT"VUvJdUdZM菛ww5@yj>YUD$uOAc+mG~sFġвP*o ݏ>T0HH4_{k3He}trG_ȉ~Z3kp+=8A) Bck #*Ou5zk3gIo_d97vKL ," '͘N_>UjRԴ /*68LbξoלNcx7*3hzY.Fj%9prȟmspn%{J(DbĢ<Edi4vF: udnsڒ`.]憠{l+6ĊXZuz8^ Ԥބ[?fi1޼:ʼn-d.zfJ%ʩ)fjȾM"{9)i,dg4BI2lZ,YΧ)E~8*3N89Vw!`8D"v 46||k4ܙ]B²t2H|p7.$!d\ktz1)p#gd;!<6#R:|uoH.Q,6ΥP C<%{ !ۤ乓*#Տ8 mV5Bi#H̘d8;I\:E%1M#_"1`t޾=_>]iL}Jx[:OWO%B" ᮕmBTfS{[ וI`f1*[eמ=Xb|.JG:73ܾ U+ ©7mqݧڧix{w-N^vq+{M,Yq g$ݲ4ɴJ+9 +w2mq+]5/?yB@]ݤI$> zBqNipTAz$_vFSh'jk4}ıJJAQ,VHi(Yf(Aj*8,I& r['97? 8NRr$;ڀ_*O0yOx o+Hl(rcҏFz>>R]kv=7(EO+ə=7p˼63ş$/LEP$"" ƍe/(贞Zx a>){h#"zpa F3ځ9wMqS}m1p%P}YMf{Z9Gc]**"H m8}Q)PgC1FxS辪 q/(.$&5A~6N}}|60#c|a8דA%! xpev^"E|R$(F(\$~QWOojqaK. yrW dI3sYA~ ^9$Wq}rxIrzQH%.vѸXzCtZ% 9xU6/,UP*pٻe%6>V;mDmGvS Kntu2jOCo2'#bSrP(YLF*Qy$q [W*+Á/DDUC ̍T(/x 5%HcYW^A(u-ۡ@Op2ˇh~Ud@֫#z-uR r%cׄ&[<Y {ʽqSE^46 Ln37O zV)c^0<.Dn8 ]w\AFj\UB҈p03]265"H좄NanW!p7eR'UzfXv=ɡNWCѶsL8>F\1Mʨ}HwǙE$NV^1.XOOGT,͗?%+Tdwlk"@zn)&=W=@hҬ!4k6;okUx9#V\՞ ˋ˙1`[]@k >=ƺ,S[Ҹn?OD^%"2\պf{?@l":"QdS^+"l*prڀwR.*\Af+pW~;f I?:> >dյ\H(IfSS!NФɎѫ)*~ U='FD03JqIn;l (gwǢd/8P^?`3V‰GꮸUtLRHݑ9MCgy f6|v?Kە%ѽ_ E/<&E{NXSq!Al7fDJ Gv2E7 16#![F?5Iqa ;W1U,_Z{ c%6,i~3t=6xS1) " !,A/#+$4-EFR!oTj*fd V3h6Ξ><7.KբA<͔r5V!p6)P7̭,Ѝ 2O2Ra!Ҫ w4!r":+S Ozy.HfcءFw9"A2 "{1ƾyr!/Hil0uٍXFo`~nn|"V(#eG>T) Nь88-;L4낮!cywz&h_ ou[Z^1CҐa4)^#iY(XZvixqfӣ󺾮 (6:o-}+Ir$D{Uvt[0a0#YV';2Kx!bc # =|:3.# t/gXyMuC6+`&bSTuv'KALB68 o{)K:(rErgs2)8@[HV|hV|{/ nw_UqyY)yLL"2/&8rQsN_8E9A25gM!EL>(Ӝ/̵my3ݽG?ٹ~جoQ0p! _!VUǏφB&LH}[C{1ʭd#տ/^wˬ <dӾ&iקk瀙uhD1vX%~W~Xscg$"G+Fk[XkJ.Ge(5A2 EC3VvA.ur 74Րu&\U'SvOq=9_Cg{x퀽Tn'e^h!o~xm%ќRɟyesbɧ)M0"g 4VZQJՌ@YN7\oL2v|px,>Y~TGP#+:-C_+#j[L*m"8UD7G~䕏AOzטz#>ހvɆO#9xR%SU RQ`DdYܾdqfHͬ(bL!YW./ӯa s Y2'ø; \0yɯ oGH<%P\ DG4U̥ߪúvA(=k.VΑYfI/lդK76u xJ]CؾEQA~5$V3)Yխ,TrWiqH=9NpD R| %]-jZE9f6{֝,J~(,xbuu; J\I JCAn<wi0Y!QdZbX9ۚ`{!H#5ݱWX ٴuCeɫHJ8_@Oa3qkBu˳V?][Ʋx4$"7sۤ'pA^N"d,ur'8 )&ׅqD0r!˘rXXABJLЂC `ר 4lU(icзy|}}.rq$ S!a :’z'֗K  k# y Lܸ| ֞dA1 AQ݉3Ъ+Vwcgvˇ =ڼ~dJuX8Om@JO(8fK0jbga |vN>J EHd.0F`CkW O. <2(Vf$.Jsx'8uٙ-v{`+v-jP㵗,AV㋵%35n~>3u'*|P{7xf172,gzrddAc~64sc"\)7\JuuByZhz]k}_@fz(4fos_+ɦ~.18]^bNg^c :4EqN*ς\|FXkڬ.YT[:Au Ö) !l/2mΟ :H,nO?%  ]%%jڋكu[bn}Hqũzi $\|6/D"1hҸC^l U;` :5c5J-mkBX8\Ib| fGI'7OlbIld[IS?Vd6]D t3EXvz/\5,` Ӈc1?@e6XL*T*}JP`,ۙ鐇f-Gx4bI TsvX=J初9sœ!! Zt:DYHxē.Q#;.k+^Ӄ^ϢU=t\IΦ Wx7o띤J2Ps׆a%ts@}Z%wkNoظZ*HxXxҢOfGci~ m/r"y[Z0F!t ^bΛ:Fx!Z$RW%T |66 yVKa;r'hfChS~KMvvͧD|iG SsS$6ei ɇ|'^y kj邝+_E[j2ӋCյ )םv^`#}G31,ELPge:*) l/Di(- nQ3'ܤ+tEOb1#Ts^! ԧ JXF0:_-Cs/ܶ9^mtEO]3F(s"Φfؙڠ?9OLɏo3.@.;D@!Pq iDSȟ@I l5x#nA RL ԧ۴ޝVw˹(bZj|^fnIK_t3CΫ\řKl4m~b[Đ΍9z](u#=)Xt!0'z7KhdO{{)E-}Nff[2lpgF{EZ\fTic&VϓxMALVv{ii$3z}E[AZ8YO~5\3 aUȭc1X#ZĴӐkl CEbtjwNCc9+久T)aҚޢ4ܥlj]CO(6_I6rhkbwP.YC "U!vI%!Fv6 o|߸eܞB(/!eg+Tɺ1,K18Lv sK{54[J1mx]AҤKt^[WXh!7=L*Ɣ'&`ug`D&)CH)"~?i~Veϵk ^T8IJH/vvk: _̍/\/i <_?t>4YQER2-7{ɖi2׊rxS+n,Q1?#NVb2g*&{-thnox/<ߧR_7CA*H \?Qd4n|\K39uV~;77ɉl0!6TMwWUOyr]њwu _EU1~uj ORdI%6'3e둸IzV0ЫU4:A͓Ws7:4̻Ezܗ<3 ȸSL($@( lW1gX0^x{&v e "uzWUKrGhwg.,@N*}\wqVς.>8UBQ_ʶt7+ :Spg2iRBefU,~ hYq[ )F`e{fs3a (+^XY<s1]Pumem$iTvG n>bj/ 7՘a[!gkCGƊe7[+աl5fF`Ny| #,*kA rjFt^E? S0E;&]^ht֤ɬOwHZBgj>q}ĻDO+@raoꬤv2 "7 ƊHVBHl%ho5I @/v= m2[R o0ǡ.Cb3<1~EDTdز''SPn#oz %eOi[Q.cA JvKh/ƉtBP½jx )YI=7i-ر9ۀ[wqdn\fy@{jWsx,B[^UdKi&Qʼn@ֶzϮ*CQsq| kkn{V|fKIMJglTN-QJ?@.\֥0BcbԖNU,q xg(E_ENK@~pbռVC!#q%9R x<8 A'LZN t~񔢱}:槐P*ת !xi2͔N$V/b9PCiѴ'w3T6ИF[4Qv(DQ⑀X @@ {.4%SýNd˛73?#tt_aZ >d`[LuҼ|ު>5VPXFS5S $oQjUz1b8ZRГRG=̫;DtH %hߺI%cl % E$>$*gS,_ ^P=00a`ׁM(%e}iMWdQHxoB]N#d-_(}6~&whNFp.D8>|=Re*0gKRKOIbGZCx<\ȝNrb2 AFM aUomAi"̘D"ӓ˼k`:lr\ )=$^b͇누x=(ڱ g9S]*7R>KP%K׬'mÎ?(^i巰aLpՏ8eƺ`*Dz-lH0,C8C.*-q,ɊdkpbS^aNcjg0bV=e! R d.axYl+BlF2g] W%RF%g% Fy"^W =CsυVEᨋ:\|aU)y/-^2Z?!o{e~q):^m<%9yv]7 Z0xpQYD }q)O0&*@9Ȳ'n4l5D7?ƿ,?$7ii [e/SRxݿqA H f>JAyhhGLAV~@E/Ն8]qyX)[Qr *iozh I0p- vE(zǪg#H6}%܅J @5!.HaANߥcTVdb |l\w;X߾ñ2 aQ{ēW2p{!i|)b72ʟ~KI]>Oֿ)LbevGe'59A#]ʟO:p$אzH !iU@ 3&R~V|&'O1Zen >py ǯrTPɴAުݷs^;?wM7ia&[ IDq=mI,i8@}ggA"D&)tq\x6' PpNQp O- (gmz'O0q9eFЇ;C[1>Ĵ\~/| aW,.v1Ԁ[n; 7խ}a3:|OR}ws$˭<9nR~胋%]Nc@$cLYT!58Ѐ旉iZ 2њ۱+L&2é11V]UzxFI ֟ \RSI*85_ (|ly'#R;G?` >[q!&s&yu$h2q{٧N#.!37j8 j@qWHE`_Q!f =AZyi?M ˑo{\m(B*+P lR==% ݸ:e9wy47k׆UtڙaY&ުR1.yq6]Jjx(՘FM%ʛpBWO#AnX  D-?-+g!E 2{FpVg>(!b'ǖoHّ4R43aXRDԆ|(ј 0mw$y[&wI K"Ь8h%Y(iߎ?oN |Sk3{yUR|+/B3IKY=d('0XّꓱÚB*ᓅ&SJQWߓJZGN-H+ 9ĸ9 ҩ;tVRo <-jtZϰE2_).Ӗf K7%j)ku$yf2t0L@u9B([8h"̊t߸ yRJ$uxr2a@8nIXpj@#6Pu XL4z`?LXf03/j` 0#C qcC`z8>VAo`lUe`DpYxwIGn["uceJFH%/{I;z{yxs.X8c 7Cy* ⬤wwlN>_IP̷kĉU"B,2iazF|Xҁ^4 R Cj&dt1FW5eCYt1YA <  i]?t6O7YFb-<|(u fBPqHGOxޘ25Y箐I?2? aڑ/wCX ?[gbAW -U{γURשE!t";ϩiDž֘&GDӮWj.m÷pselQ^xۭ6|_؄pQ=9ݚ;m8[,wIŸJc4J6+p{l0 lTݛ ģyeJ&jŖjMmvUAVOJ_)l(+i_n:hf;1fؼ)!W-rs}C*@HmZM[xWU$Kb5ap5,Fx[iد;+@g al3vEk`76/ &KcZlFr:Å*H$'W5 _ M\Px{ZY׏=H rGpH3$a'N B/v4Q}vP"D#CհފN3B(ݧ|ig]I+ HiTQ%F ^UU:N1MEAQRKxX\&~p)z6,F{ |ņ3:=p"` ߁XoU#஖2*0`6PVFB,T]RNX6jd-;A&u̟<6%;KD}M Fj˶ Lh +6$!50RyCY uu?* pU& ;^ |hZQBJO|, 󤖚2"MSk'< @սW95%e|CCĎgtġzILd{3Ff& I}+Jז/2y}֦RB7ңա Jg R;=K[ 2L]HY-U*.Vw /ClM@qS8 Ecf K "cIEu [ H2Sob37pFVf}S^ % (s7mfEϼOȿdDvװld˯O0T)+ #4qk=_3;`uK-| ۸H#~SjnfÞ)vAddBZA,KG@Ӻ59Cب&QR$ia Q5bFGDu$w )#2t? uznHM,GM{e^X!䤌Af 嘜̶e}V9n(#$3%}@+27*ݮpe <7%8oQ L;H^9U60*3xhzC#MU=h[2bH1*NFc9;'5iVcM`!no(ǻ1e9 tD㱦N:>T$+u)B|uZh$ɨBy]K)7_n?,B .&P:e&0wp\v"J~TR- Ӫ@WdU߂ )_wJ, t v:*VYܚwq#۟%l*,GGaBU|;S&r ZPcհ1He I]UOLUÑq"rU#oRQ`nZ7faSWxbTQ•1ΰ8[$;YIO1NIX%i1MZsBD4\Qd51.`SCsŀ(G#"Xt7qge>370WِÌ{@d7cͤ?Ï= xEY_2 ~Ƅj^S32^W@'}*j\C2~po.RO{s>mIIiv20&HR]ieZW4|UlkqecKBtPbVMT^_;512Y~hM۾W:`ϥG;\QFi0QU1DwŜߎbi~b* 2 ~O?rm˚f [V23= 9+\w`JFqɴr%}ƨBh3R?yfg;H=s 'StJ $Jp)aMi%8'1F",}dx09R#aM?|XHv)wA(R+5z+둸)*6GER-5h*@ 2@D)dkYU8\5@22ۍQ0}GYacǫu\Q"!421N<[^`IQ H /FaN)3 ӍL H22I?*:t锍rYnttq]}p({ޞ0t@/~O2ظ5"\XXla2ceT|g-.H|Mpl4 i {+vZ~uL<b# ]6'|Y"VB%&+= R1$MeSU f'sa9@J&jpKoi+؜J+_zA4s9<:Yv#P=&Ł jZ2Zt&c?sO u3b 4x5\h1 FN\P!"9H擹ohFEPzP+V#׭``蠩ٮ'#KJ7DB ˫_S`8i0i8ւ$'/"qFPYKA5|Sw0쌾3Tlkeu@8hn:RL%U41 -$8pn`U|KB%;(Rdo{iˏ.HG 7EOqO'@z/-1QZ5:ݑ|/+#HޙrbnhM'A0 Lн:W#k*  j¾$fsT&*rbsZ}Kz˜>v?]yK[/dcb.]o#vp^eɭB &2k(ntU'??gTs bӆV 8>Xl/=, u @ʰKo"cVtT ^gbd=_uz7C,X[pQ!?bO5kElm$A eeQ^rsϓDMGLWS?ӈX_y#ZU#݉uh<3a7aȘ*pBU&d32-}jڸ6_1 &yk>$N(}'lU<()-aخTJ׏5xъJ/1Eh8Rov-ݦ_W4 [l@f LH KcmI61[G0ހ9fZ]>tgdG~0Rx#j^[^%@z>]S'~B9J+'m_PH5.I<aܹy-gn(FxF8>K}$GZp@[6m_ZLWFz<#(ork#ۗ4MN'g0sG9P| o,`hR[r:IB}W*K3_1C<(/3{D>yJ:r\6IO70>Θi5=NUCqF8_(=kZq"nE۪i8ж%:!| (]wN|%*J+A| A/Yxbvl<;'Γc#KY8"1uQ% гr91(!nO %<#OqPz 71h||oLw(|\ožwdQ ۡ*(^4`Wα|MͱIkQYi˼hL`$.||g/Hp9Ը%YÅC{aO$xh\f?iSb-Q-2r9T2Uݝ ]i\.* a[ D刄k)P[:XEӍQvF:ōEM|{N1k5zK' ; .l#}`+-T4&B֟U =suX~+HV6Y]CS3.L7O^u F)T-R+A28??>Ȏ3^W}0Fng(0}>=UO"\5zjӎwce<'Wմ{덼IWIJ`@PABm6={$;#0\9^sE 4%2aф>@>jGԁ:тX$M.ҟX  4zDX,Ǝ.CUw}>MdL;y(&Aw2$W5Ԗy^Ţzhvx #Nd0X`?C=ώrݮV3o`nz^9[}IF4ԙDgWdkA\&ʒg6U28Ǡux,4/*04h arC˞Uۺc5ÀŽxsleb"@a"IE Mx%/姙+HLqWEd,+PCiLT^5б_}2NSS"V"H֬ᘪ)~K7RϾ4LC'0UfB_A0a7rb3RR-Z۱adFz2}mt-z< g<U \z<儾`cs-1҉QU"t }kC+=Bve&ea*`EOg|p45m&$4䘮VL3x`BͬזFFq=2˟N!KRӂ3ג/}rTA+٫1o7pcp8tu7!q9hw?Q  PPᥔjZԏ;6>@#E#2<26.@$\3`܌ API'c [x $2.2'1b7p$xZp!D\|W:z8Ȱ-Xw :$rG ?L 3̓l"+6Q!WFi'͖6g!ln;ӳI`<:˽,B$227.詹">ZFGcYZLGA)KT\=fN8o% #'l㧐x O+O/Po%y>,6V1^P'[b9ԼOr\5l}+ *q`  Ba5k*"c~Ik(w?gqx$dlV bg8VF}995Β]3 y0}8tGI{s̨K,8N"μ-`~ lIBI/MĴULe,&grCZx{Bb{ҥk70@UX9R/CKX"8X) u]Lt-ݴZj\,&@7JZcg$wS, D7jAG? njR8{6^$fMVɥ\d?"˱obYUw%9 [nV/uTP$TUfAKcz:IklGb4uA#BQY1CTۭ 煍8qfo](DUi7t\v URFU^feyB#6 ᲱZi <ϓWFyA`4fe람(@FrթB6?_ĵrd *B&.y$]Qgl=W4;٪LF"0u?W:2R5T`U9Y+XnTG8gp'VM%eW*Xyb%#ARKV(" 'kCQ|ڌ+]aȂ1A /e6-]hVmulףgռeLyQcNЕǡ96S|/$({Kh#225<$8O !z&a0TTE2s?SZ>6]lB O$"| aӄrA +DbʫnWsAׁ?h,8CG *[|[.yXc<&ޝX5Hq4;rAkzfrpt$H:bU3)y1'6v0;߬] eL]?`MJNtKCmS"2E6ɷ$`[@LʔrA4ˌ˕p,F**0&q U4& #HG{ ʧQF`)k wΏ^{xS :)F_SEaT]jQ#?w_}/zpרbݻ'f/vMD_YDR&bhMHsOQv.3ea uXf߄3l^4)jMk"8dNIvzuE͵?#I,MH8eɄ`2nNh<'IV5^EͲn%j\F# ț,@t}FӞeͧq7-yfgKAb_G74qC%Q&8P5:i Y53R5WHG5{-f f WۖZp1f?XXPJEŽ?XwEgYMrr䧇dlîOvRPq+JDދgY̋z;x{SZӅe.I%IQ[1k;05@ܷP1]]} iі{G,b$8iVe|kam!\{:!qt¹SRCsqO\9__-J2G`L~qa ݢ=:]r ],$ԧM{TޖʩQB~E6xG(+7γ~D1)[ L0۴>wUg Q^zi~S#Y/4 N+Y}߭ۏΠSU(PAoR_5| CZF| n%B 9a15dbȣQ؃3;Wcвe$> '*!r +. !so-pXވhmY҂uPCQses  V|`Nr)R1[BQdE~/i8Ki݄\4(3k\q ލF_^{='UuN`n5BΠD32T\t_^(&f TM$4,&͹kߩ[KāM*'p⠵J.v;WX̰SxBSTٿ<8|j]/uU>qx@XVT]zwIcq0ڐ >N Up z!9N6R;@x^H S8Gߊ=F2XIus4e+ ;DX @\6TBn|ߝ닂zϥ(zys8Y۷FU$Մ6XɨTL F"c& ;XTD\#ȰJ+|[y9(Jfog$*4.\Lv3UG`&y 5]j9=Ct·<ğڜ:YhcUpC*&*|~َ.zqr9u|$N!K!-D})&GbH lS$+:_s* `7<*bN:حGo!]s7䴯2XTD.bbM]HvdٗGUcsW"bCQY a)s1\̸O2Z] bzÞ'QwGTP/  XK>4;Np-нOCIh=Yj=^N@ڦ}.UOO'0%lQ-hdgTT)䭛 1(' !Ѩך>-sl UH5ɮO30T Ȥy^$1y 5;X5'-u(Ub5D%uUnjGo[)OZ{`RMSmӟHMkؙzSDGJx Bbw [>Ȍ}_ pj٫X+v0cX @u91*0).Og݉7,A0bZٓ)κG,BgEDEKǒ7._PQ=BmJ]V0[{FR.OHx'R`RO.ƢVst2cilJ 4xm`<:"IӇ'oCVR@Qߥ+ccH6QvAs9Vp]4  + 8 5ѳNkxuw79V54&&ה}>GEbZ\T؉gf+N 0 0i [N}*\D] ]zuY %_+ ~W_35yb}q`U*TyQlMs\w˗05mHK~IHRXfKx}~<4jCvO܄ީ_Iey *٧!g:$=ί~[Y!!2r=&~yedM^UOx4Zu)f,=4t0*>!~UA# o DsQW39yb8Q-%n'0?ۺC:|hItn˖ss2L,3:M<߆L`Srd'U}Srx ^Bo%Jvi#N|nnBw8}W⋆[;ot2xɀ9i J% Zp!eďlN)>Lc@\ ѹLlalIB51/T@twgmvuՠBoW2eӴt%agy+㺓Z势O >ϣ&BOMLY"U"Dxhdkm+]{ŌD2jƦ-sZX+X'bu%ܚ1EBFpWF\`Bz Ǹ X !S_c*~y~.\Xm+L&8$ v1 'Ca {w x눋 l&'_BUr6&𮤁_?T= Fmn m6SǬWh¸HRf¸<=6TWIRz(1GԖAX x-ۗys*.yg<'F 'zG⎹#/B!@`zO9h3--`=Vcg)h47xK_G,(T/2^6>_*=(2κ(wf8ԈOPcCL [gB##ݕc3ř6ّ,R]t[1E IFf..n4&g;4 v3>ujcAR;}p`+ѻoK_@"h&02fn,'0՗bڳ.wG< :{g$SIӠ^:VT s~*8-hDvtͰj!N1ƨI_w iosǤd? =^k(<\jxicwȪ>i͢͹.5 [{!P^83ձarhv4V?Guz (nLko?~WArYA86v7%U1Rp ?v^9Jb0wЇiҨ=D=<&<#y3]Rd<KW(^PL;8g[<?㴐 @6Up0)h©!2dG&Ag+,_cIF~; ?"%( ;xta!Y!9To0}a8;F01(~qTiEXiF$9qo.w@iB5yM-F0u%@&6+)լk50`O(;4xEwf켲=iC yr-[o6)-y'˒XrVoQiج?Tj}`y'|h*R{<#PG݌h8ѕSU BMR}o^]h݈C}atolkB}.8k셆< 2UtϺ@jڞBFÇ2hc B%g- fsu<ոYƮNW}RKGnljwJ[ u`N4[:g@(#_ˢ@*}PH6\%<ﻢC]<t мя8/sGMfb}(ݹvNWz40-ѫrH_0aѝ󿹐Pד`k/{ XWC.~0YzUnW´77dҩ ˲Atk*yF [)ۧ1 (fmt^{K v<CPg5v@2/)N:"C'3W`_u,/v *j 6q-D(1""̗{KҔЖ>?lXQJ;ZB`2-av{ =rE]0{ $G m&:F9u 1~#YZVy}ڕ|kll_ KT&IYE&:)K} cKCyYK!+ltm/x 7uj>7?otl+o!^e)0mU{ SAKj#-8ԅ"9ɒF5Y]y4 WuuGGlVC Pp3$x!C)=Y[4%'@V$zB_ zY=PX;w)`iL5O^+Jj0s۽GzڠuXW/ . U-7RF]R{L#b֣Ecmo!I E֕SućΘA`Fgj:(y4r?KgRMs-xE^j|F]ۮF.h l#1;̐Be\sQqZxB>&3H5m5$m?/πd%wp}b'h@/_ MI3rDu<~Y8!>铰6tulr^uQr%^r="7*UVdV:ZF{lFMP\̃6/|jJ` -K\eeg;|? $s+d/ Ce@j݀͡@w+p3XߘHPA5o|.1ͣn9oF߻ϬJTU˾Y{XE.`'ؗ5{LD=B`& `R AL`YSb $`/.Cp:zv̡*57I=9#Ut3 ;]*;qcz# Mwnuݛ3A@)HÄ\7^ׇI${` Lg`QTlfQ.-qV'FqC)23lW%\tG?:Mea̡n[M?EТҝp:$]N]NIh΀w{_Z[8iy"΅JnBm8*x(I3\IdF"7glrS<^+J!XNf n+64NEO!L|PR)s! f,-fS1gǼ@U~׾'/bIm}='yr7v љ߭eC#:xp$WNg\f}UmZ{뇃=4;᩶D<<ʁc4YtoM6;z ;&8簬jdt^dh#F 2J)CL!BaB8;3rc"TՒ7xsPN}50aKYjovbkl8I &O_ŏjSWje\eiO*PW A1atWܬw&" 뮘,?xXo^8 $IJ4zw)ߠ a_ &hÖ+Cg(775a<̳Y$UPwA.NSg@_*ӚlKPx;UAtx.F|ֱqUUxtbZC|6BLa4_;e%>ʭ1ߕËed;a\ן G(`oS>M.ɸTT4 _PaG ~yfw#~BAB\[! qGhm#Gҙ g=\Nشev߯ES]"L+"'wתLjEL")8Gm {I! ݲ` eskwx)f%oXL$Kf l*ӚpvTtK$(*٩R\q6 ͐D|[ C|azc"%(!Ge*(gĪBELDÐMn`5{&Rgګ6h7m&YT+㜚􁵭IJuHVԟM˙%ݙNY'tC#$ː/;s@&I)n0ް 0%"{.3׉k'󅋖J誳 JdUWY1͊(k:FCSq<ϮX q@EJ?Sjb_ALˊ fD"~0j+a5em>킞t bQ7GC:ꗞΤ9~4FtC+NDVFs5` 9&IoS(k0&R+Dž8N_@sp UjD4K}&<*y^fmMiFKR 9EKy8]5JC0.z]h.^-y^d.LD<)ܱM ]xhQ,v =1`z;5U.+aF/Gj ~6M ?Vk  .TE~HuS&l4S[ 2ͿB:i Վ1Jgu6cBt~9̜<򺞍KAoq,\\>`[W2 B)@^Mmn~NBX _SRQM9vl%b{BIo8v- % T Pȕ5AF[E% ?6GrL󶟇0Hdi3-绋}dYv U]rV8 =  ?nm$Ӝo% T7,'ە9` mvdMOmh؇X"E"dXc E":= r>" GZL^LgB1SOCL){iWf>!;dqcXV_}}&JV(x :[j@y* qx'Rx4hRUS2}o i)׷ so|oWnT:<\P-Lp'CUSzC)k̰E}.D.|tgY ELl00sL7QnrA ՗p]"oaRG2Q\X%N~oC'"!m[  D}UK/5d>nZzsDSm"5'҆EeZ 뷷[e9@OzݣJ7ʔ4]5ooNKM)R?f@`Zts?؂7sYnz@2bӊwb]vÚA8fjCW++ hɼ*!CAA-:&2f <r*O"jA8Y̦iX\\B}N=^`p725$t;̳أ04mVwF%Ux`=%OL֚F}}>}U?Yqũ):󭢿?D+U z:U>~2QG-ӲM_$jOz@}u޸6 @씋 Kfi8']X#j.%ej6plW dpZK2Ϣ)Rst;^K)JGꅗL6{r'QzxzZ&eM_%h¨v}_-sIEys,2 ?- b h)a&Yh|0"4e2&Qyl`i30jb_ O>|Gl;&fӅYU$qY[ !t?tu'jas{8fJS+KD;pk+NB##ށrB%(cn#[t0V.2* A8]ɞ{P0/`88u0\6dskI2!Px5^yFΟU( -\<{4)a kwB!Vm6xj rQ3D-Eod=03/dwg!eyl3o 7,U ,<,2C‡snS{|{3e㝕[^_Biu>"زrFj"Wo=DB%Y{,A= Io{Юa|OA\Yfud ֈQN:<7墊_e^չeIP8p0r| )?U-<煍k\>\ ĺm4i_l[h1ME6dAkS9+ىМs(d/ o'Ɵ@u3![3JIC@}߂8}^q8gP~/!UK1:nJuJN7gY0YMW2B9[fTN3V>8gf~l1dm>/҇)zu[r܉D[ SHP t]3|&}'3?ۉWat^ϵXXZ',-"l[C{X+15S %5&|+;f/Ŷ0Cz[VX$KqU@QyЂC Ly2 (CjϭNX1tq8EE's :U42L楼­,1[(:[g8N8qq &, c[q=zm9p$%ٚ:f̺{Ώ8A۬ zt{~=Guyuܵʌ^f5r)M9c./P *dKy'DafV*2I%1JUdjNCs{j:^(sٙU@; v/ؾSNLp$i_%0mLD=- 2eC`zga "zoPqAͦ:ot)UפT6dph!%h -3Zg8ȂI I}Z uk4a;x1{1Bxcos׈"^az6{av|%4n?tv?>5>!KPUdPQQd!(]Ho[!:MNguN.E&RyC W0^W~f7dD,/BRmMS|}z11pYwrIU1em2ؼ}mD N_4m؄/2 ׈$a7&$-A$ΤbzQJ_1*J)Dw ;m~'*; ܄i՜3FG W0 L͠~&TUVöx ]|@:gH/!d*hf#_=pN놌+|#fF$fp$Y7u饂phK1AIU넥'tk@[r&jXj#$-b`tκCw|*Xxp/YEb@uxے?mlnJ\T$zcn.~q3 mH͓̅6p?<^vfkRFdbQ@#WEcoQ2UG `wfȥR"a4B{wNHh9pܽg~͔]$wgt;6VldKs[ ϟFH'㕕p0 d2>1dc$ %y)lи> =RTܬON}kGl|# nd"?9(1\:@F!KUs5Ganb ץװJ ;n yU;  ]H 0N\>4c:p^S U8+-ܹY%nޭ>d\޴VWV(6 z脹zZbF:S^ D=49 ܆+2@IJG"P9׮ IԴp,pV._u|fz|u.s#3ݔ~ fV밬c5^q>S,P1Y[!8;j DPدeymV%^P%w$ D:ngc`h.)fy`/#uzV.c=GJA4^ {/x]G8ܛmts簢|Dë49{3ʈǁX$bgjAqW.lCyXHeP l7f1K!;KjZ3Oq^&9RTPS2 B`m YL/}O oE姎wR`ND8:t 2`i/_Gّ͓AOޟ;=Y $V1q@]TVxDb9:,H  VɒZc҉u&cq虪>]TN R̖i[ +Pr1h mR )}\oCnSUjnR*py5_?nAW浝ZxmbI<5_ E4-Ng)b[Iڎ玒\tJr@9xn%C-QȒJI/~9M^u.exNKҹ2? "UYUYtAq ;s.2JF% @$EcWt H.<^flUPKM6z1>Hw9GRDx>9yC:>d nLJP2u5+E6}GEݻ8# aF_Nxt٘d|( ECkʛ`Du,0IP)6qx;g3po{!\jyK&L%)i>d)ҏ<8؁ߓaCKeX{4}uQ}~S v*< cY ݍ_$9"DXdTʙfhKo]yѨH"fVa4#{GIOAgWѾ?! EΛ&4V *FRטHz8$b@+S/jfĴ OP"-[޷AT*S% 0fL+ {^sd\@~cB8q(Z|6EuWT/NO []!N+gbP8k Ch#QQXNڹ׮3hLgBp c?>T˛|f886a1vbs惯PIHGjnd&8 `4u&J3>Zi]\yv\1#(s۪C 3޼F4lfvor<{G -*LA*akI$XgCa!(&wߩ™).ELIByAu>&hPXB@jM+T3X? 0ohx9Z(JLZl8T@ɠqkMT h7+AZ'iװz+l ,6K4$nқx. v>)l^ag٘o]/v_OFYiy }H5N* U\qu-GJ7SER QËs9 ŚaGp"/(ʞ^Yssϔ3r@²O-P.\qG=zmW]7Vs'rȊ=UY=*ְ\\Д_0=& yFe(6x^65Lk99sǚSI%b ?`Se < BPՙC4 WW jyw W!5ϊ^RrҢVdcܐX ۞JalsM-&O&e.1Sp"+`SxF~ Z}J\K_U?AUƲ+ڊ֣;R ia놧k_+bƏ&)D@7; F+f![y_>ScY ֨*ZTbXlm?ɠqDFw؎ +\e%'/#MR+^5srtV9JM&h5zq\[l7FC!վǔYvFVЉ]uS\OEwv '6=Qp8*8}jv<!ctg1ySWW=M |SBa9,C  gC)ZP(7/ICK7g*lȟެ([e}#]wΔ\=-M9jt}ױWeE᫙e[Rnomɂ0?~KGXAVOmuGa+V8g7LqK|7IJ0 CٛˌfUJq[c+Zv2M5a)FJ54פ*9PƩo(؇,!Gsʗ9#u o`9tzh):Ll-Ҝ9χ% S5L VȺkV(GRNy-fplVI o`jT tEV-HsN - coZ@HEjcj qZ qUw+KQI,60dd0pt, Ǒpl#aj,GeWqk Ǥ #iE,zC24-v4q){|gRoog;K䐞]X&A̔T&,7(J Z/:fct(ߞA{Lz1*bԚa ͑&:>={=7*io7=Կ݁1Ov.֫-8)JT=_P;7BW#UhINӣ -S1R 2őYVےӫ)}+<e)1kΩ ALx R1o0TfEY딛NPڂ2f1)C}/r1pР lIBmɀuh& 4QoVmd*~b ) e[?ojk:kʔ4|HX=Xx_VԌjBl^?~цe႑A2g3Vyw)T8|6>uu|ª'nI8l ۻKt|lݽ93i>$ij`#2%|"b[$wZՙi>(l#B@y(|jIoۦS{zfn%DN,C'+h8`-` dȠ#te4ncXyӷR oyG`''+UOW_p)-[ۙfÛ>.95YVb}9 ktK\Gm^fÈ#E|n"/&}JAeuj`cpNF\k)iS̗E5(]X?5VWZrMh de\hs.-#'\5z@zVznE^Oq;1&-] G"槣/5 j-Uޒqجԃk'dNC8\nK L=smqSWI@&}G>JU=qNAfE^I+Ls &-Famq7Q dy2.Fl*.mXn_E{V(ƌF8L9Phꞌ#nއ\6wF,X8I"*qbVW;pD4qf:i&ƕǥa eG^|.HސRFa pс a?PpK}z$,t1vvxK2k Y r׊TD)"HTo~VtSԠ'bgz㜃`8qItњܒM(@}0+x8_gZr4/$]I?w\B20UطA=ŨD]s]jlKXrؗ`ᐒ}NjH*@gA~!utbV eωi<'" g>] # 7NMjQљ` (t<[Pjcm"|iB܏Ckq,㾠Pp#td F2퐚|=6;9wbr<0JpSQ-h XWżݶ8VG\3"-zGjrݣn0$OM mwjo&Vزo ߖ`:_jӳ-܋$*DށB$|}m„Rb rYy 0aZfh|4űQA 3],&y pw7>򝶕;\!fVY"HYَ$ feH]D| 2U7A$A6?2& >eOy5SκLcwٶ}9x $>z!WK:SG*8 @+!P(5F( qA-pP@#mt~ OZjD"k\.}J22TQivHÚ^@Ahg Gvb < y5!jXDt.<9Vވ4O&9jbyՠC'h]ªӂl]s9ZzZ_Z)m5yƜ՞E 3tDwkLd/% 8Kcp,o-*CzrR3HcCC{v*ͺk'0 ڪ DXA6^oJRU.œZ5)ٟb.Cн6P)e% a(^d0G;j-!x#܀>˜mWŃoF/͌{}_=dUl\HY=?4T* q`k%ae OrCStb3#ǯ˙:crFr<NJb] 8~ͣp1>Kt=pс<д Oe?`U:1dZ3Az0/t]|$EҬ ú ˈ_vB{%^uсCՌMIOK  n=lSSEf-M $F-fyyMmIj^irO'Z U]\1FNBup o|V;wkG/;÷^ cl֒թKr0Y'l&cbV(~ M@,[I@"_BYg eŧ@l)~Է=F*Vxu-u(e|\GDS".tUf_g$"$\terC":@ƒצ(imHYa憋qj$_쯓1f\P0t}R/%w{"1J$؏m<cUkWd1T_k//)"r5elI3ЫɥQu5IJZ%G6Uh5B:`;=,xZ"d?UJwӘ@{"əހ͞%]fOY]~əa Ubn ]rq-UՍP8b' 8Yk7Y~c QAӪpvcom %(o$/M$[窩QRM7sf_V聎]SXnnemPHsW-d!><@7%֡:8oxCq^_>_68 oH wjC/YXGt.vQ>#5\_9מfg Hu 2BB UEN/]Bܼmǿ&qT~Vwu }tн7->Dž}$Ax&ND,j/[كxƗezv$kWF@{9gG('s3U*# Ú"a'ccMÿnS?5jT BԬ m884Qԉ垔#Vb~R(몛Dr}v oG#H\?(l\( g$cNݿN=&e!V%Rk ܌aIz6nhO9*Ṿ ?O"94I*eRʎ'kc3VFO?rrUM>iטm%M깜O[/`QWF0FQ,Co/)uN;~'@H,dNok-(DZoll Ù&MmטzV NU%6ZقGK)ff30W˖L㻐jy@Ĥw?s̶\#i"\y 9P{g3v8&z>v"J{C ! :+TyɞtGJyؤv+q[MO1,*rs7!xn.d>(z+ӟmTW 'Z]W1ùoR,nJuSFEw}p=Bpt"sM┃ jv[c?Z*e ֒p:6Q.[z4&QM[h RJtbڿ|wO^TF/|^3\[`CW?z@9WnmM ZySc+Kƹ{Yz/hI$vfao53k"/9 )+̀[VBK6[i9ת@gP̸4- 3+=5mѼ*N3'nk>!C@s~.)6J.WKzan.qJ1R#I.Ͷ_0AÈ-DU[M!YQ0\ȗi#i㪺~+x׎fjL 4y"qj)r:x!~Cӷ5>SFAHDrEl/7W+ݠ ;7pbY&h%5XѤc?fOx&wJRt0Q J&8 A%q"[.)ZǸɉdP~l}%Fr5 O0 kSPhkȏ7BbC*PDuae$n}l eÞ/9!HgX gH6`_㥟ک!nWXgcm . ^5&XhvsO-t9{(?[w)-߄;`B|ǞNiÎWM^+XK?X a%ul~|m#'qK+I*󓨌"NywPcV Ǜ6mҜ;?*tKri3PySѓO-05>x&㮭F$~;!*8˾_]<DF=BFf%K}b:Pd+?tl;ă+gC9m;b-W0hR7 O\&X$3 " YN Pd;1ݧF@u 頞_z|$!bzq@47+&Qq6sK4Ts՚*Gl':E붛*BJ I,r]dpb \hȽ# @Wt"ÜqpQ dz[+'ACOa B(֐=sCUJ#ٙFd/KAzP qhǍ,JI#{n>Uz~qLq ulfK,l^ҒX[o8jΠp"#{CK@O幤kP&Xj< T9wɵTCkS%qDbQU|7T%2X %y>o%b̔ #675Q}ޚMu{2Ïw0G&Ȝcn:G:0[)/eSdgQ)}&Ák|l.ɍ`ރВ*ArvtS,%wG-ēW)Bj'dr3Ku# ."G"<ՂGK7쥎'";$8x2V%S+@TQi<'. /b޳N7Ina⋭,թْJ_4Q xʶQ91*!Zm#@ drD]xok;LR,6ҭ)rjA"Fc3P{rь_h?}Lkb+d;we"ٜ$Rѹf:j+d`W*Lmw*9(͏bp&DW~溽4EBEJ?鄈֓@7}+w[A~y^D_,5V1u[a7e<*9ڈQ?m$5 |b; #4}s#g> 2,fJqU3<͟f+ū‚K wYk>?=lM'P׾7Cog{%]lh8A}zxU6b>4&F$AF헪$>7|ʣ㱻;mU 87Kc|+4+Ur75WWH8*f@#9W;ZWcWJB,_2R:YeժpBmx&_9wxR/' ƙGIMpWµƌT,>W/]aC,mjRq 6 pwġz pA5o6ioٸY@weO] q=O%Ijl_(UAj8p1q.`,.w}z+o+5-D"7[?o%dFeA5Tg˛@kFDFeƴ~E%a1İ7y>DB% PM5F АC)DMTuSETlHCs?cY*0 ڟ#ցQe$(Kj&6U\CܔuWu0ο@8xYM 1?DWXȦ6@\U9`@ٹ] ƝGj7bb P%pVr`/o ,ޞxxF2E >HSՑ1-JXBD'-OiR \:'a7K=YP,R2=I>Ҡߑy&υrEsq0|8 G*a6C! ="_zyuE9Zg_k8E@^1v j]joe=HyNCws*}v&[4xr8x`HXj"c([r63$O~{YFm~]Rw{卍QM-pS  `o²㺎*t\?C0]"Y%ph؅pf=# NjD; ~$FJX+:oaS#{N?U }B!3-mq9}"5U脣ס$k0h&t('W",v%g!O-Hq|MWJՖO(kWڮiOSJu>a6N-I2j{Q ~E**QxC-ZIF}!ꂻtd|+2xXKz^`S>v:Cv &P*TΟxGbAm+3n4K,rF3+sCڵa4A'DXM^ig_?xfm['dΪ@9lٚPiTV X-Ћxś*HC$_>J銦ֆ1+E|Hn:Y4p &  MhVL:7%u$bMk&vSAۤ%0Tfw E]M0a׸_.&{t YHjO9pUбB7'$]{5,>Г1@0*G$YمLMb0)B _K~NT^v!}?Kdp`.Vr{O3tTd XAj׋o̬q ׇjAo{i~[(*#Ef4 \$s}|_1OpG_!;6cZ-*x[Ҝ ۚKyOj s$t,pJz 9bv1P܈vzg4o]Hɳk? _|׬E.?ў6@hxҭ,KaAr͔Qr)f1>I]?hPoy!%& k=G犥P7lܨ LXi=g5mm,٩;/ď{q1}fHQ(׶>; Nj/Ҙ#g H+#KI?AT&  Ug`Tâ"yhXB^-ZaM:&ҙ߂a0B2WY(I\M`9+Vh4U=c̫hs霿 Q h9~y q~x[1&xh9` ̷:!*(>)fuf#Y2ߛx^Oj5 y 6aPjd)|G/zN_h5[˃jRYk`7E"} n sɳ3 [@~, 7n^X80>n$ɷ/´~a.X A}8|Ů?i8L?(L$;$=7Z_&+ @Vz;.B,m>Qʑf}d#\ v ZX{@>CJ.D 17c-RU&NMHbsҐVJ#ܹPThSS> O-t+[컣Fa>>sS?JBcكAwTTwθ=0X/$oslD ]۾F;'Qz! z؟m' U nQْ~`6#M. r?a"tC8O6Z33Œڝ[w&El7. Ci!v]ybzM2@Q~jfYSC,0 F2v҃=t!~mU`s6zAJ7U)c4D}';L'ޭla ґIbmb(*?g.fQ?(!ZKCة3eɒyv@g^ElΥpGnpWY/ԗgV ʖN+R"?Mm9<܏HFfOMbߋNzVbbm޸kk».)mW gj^N6D}9hy<njNΠz/ reyo<hLAX %/[ͤ.'CoĐNuH=%΃ٸXA\Dk<JA;{r>]leQ\5MbUn `7(AWMԺ=^9iV[cp8==nyElva"P\ aa6=z6L}TSs J~J{q"&zaTxNWOz$J]H=[YrlUd)BmA\<5wp)aU}2ObRzHa`܋ bdMl4 >.֞RI4&$(OT=\Yp9ii24% '$XSjI^e mv)υ``. J9omP)OR,~zit'\W/8 qC7IA 2!cC 4AWoLѺ+a E='ӣ (Fn'O1^"9KM$1[?v:w'"ͼ)ޑpoZ:lI\'?@IC%PyUߓk6*g̼R pSr1dixFݩ\!DQ7.>{Q5dYZ^,PSDL+pom;ݶp b_7]s / Ϯm,-;#YkakU!U@\;fXplԡ 79?]EY+2o\ #!q(!!V4/]r\Q-{)WںX4tlaD6gtU)bdFR5Qta"ݷ[?fy̓s(nޓbXXYx:0_k[2ݼ0 mOJS52D*BC𕹰mYC 9onE@GDސ@O{TbS AA=0LVBJ}hoƞftH7R[ԑ #9ؠAQyQUc6=jՌ[ѹD,F,ߧ6o[3ɎbhPf W_Z WH0!O!p(<~*j#e&1p MJ AYVy;xfJ}[&:( zp6wbu|-.CY8.27{)*IzG@1m, f)m^A!4sjp#$ 3AC!f?rT˾?p<+`cX&rTNcvNTN.Zte|ˮ6 uE!n>•(]zڪ>8BM~RbiF,.$_b_t]p 6m1Z<ȆN)|sOR+vP GK豚ǐ[~30FP${&-HColSDLҭJ(o`t'T4 Hd܃\Fk"V*QyLyG5{$E$ZGô{@g}'DpK_~gֺGܯmE# !̥e`5$0W.e䒷Kc V+D<ی-U<5s.Oi [AR k>5^l# ):-љc)ƨ/26Řӹde1Fu'"l/Ks݊{δ9!H#JBS}~XФʰ }8O"s0]JJqb_¨(QO;r겓RJEe('&L{&tV,[҃+&iVL_\vՐ}~h.? JG*"6bF`6rwLn=\Ou.ܖ E1sQ;K+z$yu),p#MYCAQ}H/5"Ϟ5?WUf屌> ;hc;aC6XJȲ<4M]܆; ҰA2,7)Ep#AfXX!!;E_79XYt؞⫰^_:zbi"5 ʯ8t]>iDG"EgU`bߌtNV3K+PChbo-pqz/M.DbycV6:ZY) |p"ph|w:Bf/2&Y \gqD"wB%cZAA!'* 2 @$*TS QdEԱd8W%bix֕>o[ }-DH1q;NqKHw KGވP\;U Xt4 T>R[\dT xl>i?@9k>V]1LrA$RGx~ 'W]o;JnTT[Up$'2|U3%iPo1q52Ph{F[Hm'.MO=%5 C{(W^FB݀ԼsyFKCpN4SCz_ơdLBPq/mu< >OJ0 Ę`{KĥաNLd*{Yjİȃ!Ua#RR|$\'Wc=BfͲeRO|\oVٱ/9z4?8zƹS=XJc/e6?/aQi,m5he Hp*,I-CRAip߸jel.Z3i=7 Ϥ"KIM&,;9T Pai`W Oe]:&}!ͽ@ETL, W̸u ŀI&b*? mtP^5lDԲD5rY3L[l>܋bhl>C)'Yrh5dhcïC | L-ȆkF! y]Ǥ9Όp5\ztֆ.h|t5+a!ח~=V`ל p1tDS?$t81SHH|meVu5i##a0!/{FĔCDI`# ?Mt-oqXO1%n>9τqSm },Sj z8cp[^b߿qN] 08l&s.s#/$[2ف#+ۮQoKm=&Зy>rQ͏31VGO^􅒤+00_F5Us*}S>qˇ`o_% 'PBx%Do<̙m_[wn܍:Oo5\^lWSG !ҽ*xP7N/D>i}ugN@adI|^`[s⸇zGϘRtƑif.\isI3L_$*ײ4g4.M%Z2n+Y ܎!ѕgdeYz#QX$;dv5QNגjfȑLBX hKD Y)rq¬.IZt!Ƣ.i_#Rӳa&C}Y"t>"AUʸHa.d6S:u940h!~ ڸCAZ4eLaX`6Q5 >VӻK\" 紷)g&>炙d00q')@ՀsAu7|*#Iy+7/eGqYʉ=pH,D6I-Hu5Ct/g.ҩ\Ud,&RkJ+^{幀>}U p͋nvUgB|REj҉_hML4-gpÁv-o}5ӳ1!yeײ6("KS+ugvɍ#M'Cs:g*&OE r6d,-(<@CjHcm?q]`H#,Ret<JK ORqK~MEB!o<]V=leb$&*d8h: ý= jSʋFJӡeex=\erxJ5N{zyՆxbE@ʣ5YE*;DPP ;s+r&ZBcۊ+va~dd y@e#8:V1pp Xiu==v( rzz6Ǩ53ɳš@̡5dC1CT|w1n$v'!ȽkNi尅Ƽ)3., XMj vBŧ C&r ; tXDH"-aeNF.րW܀t`%c  D)_ c&d Yg[FSF;$׭Udlɲ%0gnɺ)aEt>j4:>Sý7π&^E*YEtx8)27\y7HT՛MxP.ƕe%(=MxOX ݅)G< K`ev>֮^i03 5mke-wpfwKB191dQrfЎzI?la+弸3`|(fdQcJ eWDIX&:|>oBb0*5 Iϛ@ދѧ= ;J WmQMQp5T1`c-pN|KX=4¼jSa +ncU;*0El6YRXLkT!DOHl.Ar\nۜ=ukL7}vkʫ?^1!TFAu2ͭzw'#WXͥ+yStdQщCTYWz棷E R3<7Է+p@O):G}Uh{{*o1nGJ|0Y\h#Y+8J+J)fĹ$i괪Y\`R‹q S)- 1* 4/Kv1qP x^pZ<6`:kG1b-Kr%yŵ{+-Mor犓$ :NT!>`B7[T`@*'x9w]k70*eZTp,TN.b-t>$>DXOuBPU7f?E[8fa Cb% ߯Q?K̑=gO%ZpKW$6Ex0Qc7f!`ZI YY1ΞmV$[[ҿoƝb^>z.Exhr(r')x~K>5f7’sNd5KK8wv#Up%/DJ QKpBk$NCZ )7?KXұI_ϥ 3s6f]%LtuvQ5mWڱ(Ɋ.C@'nZS4>w3aPj\#j ~8/|; )ɽ82sײ/`@Ye2>{=ZLv:yư;`Gq(>1wV&}GNeLSb*cV9"-CbN+'"vi^ Mz\Ӛ:q~G~ ׯÄEq5lӢDg1]v5t'YkLgQevQB=v 4-Q5o]͢f+'ʆ߼3{ˌD9t31\`@pO AU(h/2ň3(D 2&΋ԣidcS3I:L74#Dp3)8QXt* NhMV1O}lQac7gAZ|~ljtj w19^Q$"IC,3q} Up>; quxw(PG*6"0rWP`|fW)$TU#k$IG>o(hq~ɡL1TUn ?Ȥ4Jt#a->jih(3RԨjNVNeIUHdd56|}~ۍr`iW>H}԰0?hrVYһ39| nTQ G+8*$tҏ*Ak 2u~l|qK#\ DwQAOK 2]Jh4X\jHX{q@MaHJ<˜(oCk$N~H1vC`r~gˢ,J2T(MMg鴣BK&'$N8_Un2 Jg|=y3ݸVK@Rr52>Rٲl-o͛TeӦ̍SRLqI#P6p'&r'Zkv?㓌 PX5҈Y$=щKuO+^piqhVmKlBs5XDͿjH)voe.c8eY')tdG2 O-(R+CqO dm2'i=6l[f5hGyh40;a03֜%<#o muGo$0BI3f؅F?؈|{}4| aӺqnHM*dIkH3h.Oe*`Cfo4cŻ%)d_-Z#WRM)0;VM#[ni˵+n^qkb B[N27AN Ψwp꺭jKXg:i@m" Mm>aއ vewZGEۗiVBв{pnyH\x~A 'wo(Z,"}w׮iz94%/J*SS~ᅣ& 3 R]7MZS4/֨ A> A^^##9G!Dׯ.ڳUg"E&_L벇>e}qnR4ŽM2 w\Ðlc ɳ,>-}tKcTjmYvIz 2S9I <`_ܩ -Z/#͡uFi KP,A|qiJrDpw}4C{{;o Jps [c[v_9,Z)niårĀ"YD>0WPd\:ux"ؿ~vLN7;x EyRb{>Q36pU.K(|6? ha)c΀P>%?XS4+vRvZiq+MiF;y0In2$j@ҒmgX <<^b=k~DC*ZKƻ:$8W)7s KzFI* ԫt恦c@`'vS&˗! U4[p7elbf1xX} P[EʄvP:ܙP!fHQpӠgq*&^E nieD@:Xxi @c=!zXviA ݸrwwEk*hF$inQ,iF9h>!_J{#@]޸ē+|iNÕD⺃Keaq]՝FGYd:'Y5[ &9ANjNG8Muȥn'?AyU?ߛȈ:[5!";@EZ3 ν$ܮ%m؂u%<]g,TIHґU~Cj q24kUu5<"vV7^"@8(r<3[H* VbԡM ѳ{^,Z?F &hno1q)=R7'TKKknbiqȴyf4Zפ,qDUcq!E[xݒ-YyfPMUt԰ȳ1 N6ݵ#g!\ud՚Id5-]Nw;H`$J؄&ՁD! ͟y%h.^ĺOyjU9QYWiX[`NS&[]}͔;`6]26F}D9DҗK];f)tO-; @g[COIWΞE8#]W˜L/r?UV%ƤVZ֒zfSu<HE}~ ,Ivc/J94+fpPX''H0)^G=:,x #'*XYPer}uΊ7ٸmrr؛T>r_IdC'6`ڞ :ثwCⴴܯ jaOm 01Cއ*9Iџ# (f1ڭ2W PR(. {Sլ)7:tdfK}UҮڶuHnf$a1;ܗ2 `:m^r> TOQ u.۱qArb]]F ; x/JшJq 0H*cr ƮQaW |-Ց;[*\)qjBJ+D8 7tXh! TfwwW36W꧒R/i,s"p%R?uOsi'$8W;lB~]HfsIs-#N`l6A% Z'\ ,ҷgq7\mg+JQo3YMfkJTC<ףd 4K/w׀eS-JҬ5N"mr|иU/ϢOWݹjᑟyMFqQH.;*>eJt^`# ߒ||;I->Vﯱ8.6IH (4Βbtj25؅PI.y ku\gȇ E9e"iq褱:6@\vZDV [xBjGhzCgY*)Pv|ADfjeeXRH4_ăv ?m+qE߱B0uso&j ժ[ :ƭ|㷔^s*;\Z2:6 J!vrr@dtgW1)i 8KyG`d$EhЮ` j΅1rQB+]VM-;00n*6ae9WC !psIYi@o*TpA4q>LbFEXGu; Gxlj~ ʿf brG~Y8Ŋ$e{|_&&(B@d0=^C<å͖HO㕹L5R>ۓsFR }PHfݹ@r w b]o \t;1/ Ǻ[]b-a"2I^c];[e2k,!ͪk~җ:p)_uZF&]@q'wZ)Xr=%& 0ڃ[ŧk, C̍F㧡#9j~g\û_QFţqwz_.RK9,;x$T3UcaX7U% 2{{Dm]tM ,jQ ghZfYFD*2l3K4c#(L~VZ b\ETb ʘ" ɇp(=,X*47$  Q}Sqփê7MYCS-GXI(Mópn_5F}_kL}}q[$1Ulz0O_x=6#Af`y4bh>ߏ!@3|ldH< >d9Q:pM=Г9 +HvΙҪH;o#=׵)5]ż@n9;ޕ hYDl!=->zA2>.nL2w%PormqJ<־v@<ԏ1W8$mh [ B&eO*J)3k +p*!ffзpL?b9 }W8U^2|T\ixd9XS~3\]G5'L2S]_`yk7=Ap" \L۬R#E+ L!tP}t8AD%X&?Bj`aP̪fi};3XVƜ-Cv^YۢR*6G%+ NS783ū M^bjKT 8x1FijFMDæod $_%w+CS{Z.^+gx5=*D%a@R&άm{Yzg `rݪSCLR0{Wbٿ1RlvJ  ]@Kz6lm޸zJRMd,#?kщtÑl +0 BZZZ.b zm%+nIT9@Og> v޶r7qYŗ]t_%1} u{n`lN as(,9ţk1M:߭` ED Y^ */3l<;9c~/g6Ѝ[q7R+};]Qn?IX8-~B;~-͎] ٻkSnvA{I`vDgJ6Mk5sMOۑUG]Mԯedcl9\ZUF0tAiprМ;ϵR-r B!(l"#?51hB|ո{ `~i`0m=E%6W"߽"'QsNt/a<|UZuVQɢdGxȟ*' I:N6/0DΟ]2uhuX?Ny| `YT.7e[k<> 2ٳ2T#}85WwBJC˨d.!W]Àƛ:lVx̂&ctmK sH,&lB MfbqE:mʖQݹTkۯU~OF( jW)j@fzp Tcؕ^Dat`,D)Ngv~͵,_v~7WtQ㺱|Xfeot ? B7MY:HDO}p4 }&JW|ׇ)-ðeſtїVz=ş .m $q)ǯ :gKO?RO-q":iw66ьsCȹE0ʬ8tTBFG R0<@BRBN'O*AyiNL>J˜*1 jkP{I1 .^KV9 `b1`<*kLrm,_mo]gX9xk@r!,po5'WrkY%ӹM*B} u_}ݸi;` )?#'†&ɮ7?"o1[/ ĉBQ{Hd۸}^$37&2 Q4295rX yGik?ɖ>ੈ1< Gq]@>` UM /*,svmsq ;U8.cWL_UQ!/ |v ,/B!ECGką)ӐY7p,{-ցJW{aAKIl-h4J x XE:3Y"/$y6éÄ{rG3mJM靇"4 Χ;*AOS*\oV%AtÐ~] ^Lo(:#JQ Njc@ p<x8|CwΕdJX(CpQ_!TkL_ڛLvNJ1cbF!}F%0ҲQz nH CH]G:юVaC`"Io)97˘MIs-H4Lδ+`4+!#2?u} c3-k1>jխofPr×P7&$HEI"3q~71G۱Aڳ7#`CKMMBJPlcjsm(>ǰA.ƣmP W8`z; rj.w^1$ҩHV~a3KmwbM6*HLh<'ݨl(iҠm[Hݍ|؞TŶֱ;`U=`ʊ_ < %ɴ$Ұkb=!KDFF=Nhp++W&Ij?"P*vqOhtj_#6xQЇ B.fa3%wRW5M1EOs@h_;%Wapá! 'q-Nl9gtw-;GL*N[=thtƁ]I]Ms%:J$|<]@oƃQhroqj#gyZQ<Ы6M U0];aF!hN3<~29xU>N9h}DU`ks:!b_(ұӏ]Bkƛ`Z]Ilix_-W6Rfֱ[y8<O A3Z{,UV*ٻ[mm'p E^Ļn+2X]q1뭀\jp!--_6pII>*6|~ͩ[:X*]N=pyFtta\m[g\Cՠ|-X]f|:%QS2}RIwu.u]>} (Xtzʒɵұ%␌wV4فS$NtCb-InHfs/jn_tAFt-a Z76 V7R1ߕtЦ(09Ls0^;t;t3wQ@qb5]gg}NQWFO>{>g٘|Ptf'pBke$UDPzY|=2UF,0?Ffp 7HxW5u/,drn;\FG>f2Ũ՘{/t9e?jbzU>#;=n\֑#8q{jZcꃱ~ya>:HFh?8|X ٹİ]d*n_(rIb7<ԡ7]um߸?z *d60/ߩI[QgT%YjNx+kq*Y C~"2`ԩ?Ak)E #`?7Pkkby)?z14mA?!?U `G1/qt\(DlLbRźG  >"5![Z6l\zơ(o0D7yԻ^ =z3m FBݺvz:,-X&Åc BEAKt9Q-|)SC+<$3Qg7㋐˜3+$їF5R]% 5舻0LCflk]#z򫫜c!>4ocLNrsC_|3Bͤn.cwyr|=~n"/yr"Gthm9+>@U((@bg1?tadFN [#u14 DG'- G00l="#P~8MS"E*AU# 똞E:->[ uTrb|vxqƫbiR~C+xa8؟Z01l,]Guj~ Ec~Eg)t k 2'h ɯ@Iu_ptuGT&x ڑH:Tb=:Key![/lOp3d*< 뢚4CGj3^-hi⿄UM[L)d<.%/UZmo< +q#}&K>/X~!**vR4ȺZb♢ԏSyҫ!AȰ-yá]cKU$kBCv)4njb:؏ܨ$bnsWY,T0C  j"kN;>~qDJy5+WpH7sCbʋR"˵t iNͲ _m)rwX߂F;zCkhqЯ0dEi ߗn{ꫂ~"<f`Uqp̢)1D IؤT=T7a8吡d־(le#Y`F#ѷ{lSb%$N6w upw Q~ JRybA{lOfzɋQpz2i;=(rOx#U-gštcC?ɑxH*, [Bxe@B:w  ]'H |jw{W(sC%y u}&x 64$i: #Ώll]{2GM5m3Hk8]UmE!"WG<.OdU[q̱ȿ9*!]`4(1kcW`Xڒ 7P$kYXs\-xv"  ˩ζ|H2gJWviMP WnUNRO3cLyoQ߯]!LfiqKH$STǕ_)4^3lTK>kGĴڟ;5ijClƝ{'-uAA jzz`r A j8ӆWx?컩QoDt_\[ V%9JR{$'ܔK<52ӈT_p 7yEk('_&8QHoӅڍ©dJ]}nR 7!׉!MkY3=?n+ҤM0 ^gO+E[r&9m;h9zw|׼C+anVM::ΏI;R UnIx@@1zscGgd`^H}F>"w;[ iw\&]?1큈ysen-b{ѹ~EK_N0z{y*.. v3O IGʟ>? $cVZ>G!HAl*L@Xiy+=;$*W`6TAhlef{]²qub#cYN(>jٚĴ0t)DQ7jrM\r4ma&igryY8!%rP_YEIn6=Xk3Op,0 g ee>4Ff.OuXq3ۊen*L½>kyAPoJ=&AhE跭cƞH)#uEUoQO+" gU{ b@H0@8*atgâ&Hޮs4oW!XSs,z8&֋聐Cz5Ȃt3u.$H.z;.*L~f֩./,^Ԫx5`SĘEBS χ~__4k}y c:vm-2GEʊKJis  .WL˷42瀯Zoh7>rϦq+zȑ:0sc*V8x П L9 -PK*}@DAɑr26ǟ..K 6Xmaw،iϦ(<˟Ĩ{##J2YՄ5i/Rm)[G<%G3qͳ=Of!yXгmG,>~Zp(}EkG =r<$w`Z ("PМ -VO0ߞcO``RFn2IEYb j)U%a0Ƈ .-;hML\k$F*QWl7h tsS25ht<7 HG\9O逍ɝcrK$=8q%h!i.]y.K|ˢ(yIS|z_n|vA5<(A3iעfB3Mj@`)JvY!NivI(ba% *X2a|3LeT^}&jJB ʭ`har?cꙀɤИn ukܐ',&SݟԺ«!V{5io.$߁P; CͲx5̝!C9OXQ=T}c IpP6匉j$*K?x'DA9­k"^1jCa-zRYєyR֙*wv-5S^~`] uEћu |`۷Y"/6([ƣNS(( /I 鲎A]ҁ,mv7~h-㯜^-h.Q;<?ȓ]J t8VMA6)^yss E؀0H;G3ZZBtkdZzEUKZ]үMc%&ߵv@;%[,6" a6B )ɇt4~[,HG{?8FtmDU메O%hFe}(;& lF(Q\GF>0R0` z1@@i^%wgN* ȝ$b$[$/e^6@,a*^zıJK'r|!Q{>2A$8;Qu阚|)vF,FSqT:p[_0p^V625kfy/F6\z]T|߿|.Voi4WMWN & zK"5F 帢~d?J1SJX{[,T8y ,!lqgJ!bNAEVdꈝ ֱiY{Ľ9Ɍb @.1̋vթ HZ_E5NĵI!K$LšHṳ̈̄my+LdrŜ| κ\kN{qN5-x7h6.!;}Epʘ@3 T] r{?(k2ͳI"0,?қ)bu4d,W 8R:F7p U~Աqjz7PYk4jHv4)'iQ2(? .p;L4N|0K+m7ƺ]N>x#OoNsSsb=FkM&.ky} {:T1yb|@d>'8tv&uk06m0$!]"kL^;\=. >3[D`KVrޚN*:`gڮOlbjjkOOLWISHEDj )ʘAxM~!pJXס.Nz dE$AD7GtZve'v˅k29_!,P$w*1.PXٟ>e(|5sA7Bqhx;\ Q[k;t_x tnM;(+3cZT\F_ON6+D|Q*tB`fvCn&`bV 9/p^(JY`.nw` ^F@zrp{VY}Pba%?`#&x֠}5>lAɉ9LC3Iބs4-# SN 0xn= KAdT։#Ԧ.Q b>"B~[&GF?@ /NuĎOs*gQּQ?Uԁx3ﺟN맖-|H_|*S֞ lO o)p <:+y>,mi+ȓ"xLw]jWd äU]$"3[_84&A~Dނ]wbʹR`h#H?:JL c~:"D[d*,n0`6T/3\w-v @\0)q {oSb$b1+35y^ KkOY Kkb&~,,TSP>2ʍ?WZ8lݣp' Nj' I"<6LufʠHazCϭT5JPkMyKx_%t,T)JQ9)7]mtQah$S'ʻ^5) U GR7q~6ĥvpY4O0ůPh6_p=ݲ :St\b" ,'ǣNThNJm2dib8q{6o8x[+(G=hhUc[੹L *Ğ'pճN^ۑ],61,} 1mwF0 Dk_o&'+7.d)X4(U(#RkId%1@s# 6G7YuOִVFSnpn0:m*2?(~:"˼/ {L0 .XKBX9JA4ߏ'KJrg+@s+`oJGQV4vDܧmր0f%.% x";@>\(B,CøE]!JG@7Aׯo\?͟B\G>{ ym"k%?ӗEC\|7Rm"R"L,a;lg0j$|'_nE ]jx'@=i*l>lpȦӡn)GI&lWK6@=W8E٫r;ICe>oM0 ٽ]#8d=bNyAvE3Ή ޥ>`ۜh#,`[W@PHn%]'gO)'ճ`%@t,f-A䴗c^] Q`OG866\CGe4W(F2PBȼh..!0kW-  ތ _ûV6*9+Ed] -gdeuljBq腒@*,2FxsuL A+]5fRABYB+2-3#[Zf4@ܟ=zaT BuM֋՝>AyφK Fj ZnnƆv }{@-^Ufy1!`B\FG oQ F{|wCq;Nk҅' zg9,MӅ.\ 1j^Cf0.NV|.{eXMk:Ұ uC`[g^t&fӈ4RoYZ2Gҁhn3ޯ.>3)9hJ@O:}ݏS0z_V)1౳V{/:oH;HY[nv(Dwrx$>ͮ8% G 0,-Y ΢P;0 D%3EUNVh KS bhԓ'a%#",07xo0H'L1;WkcvԜ@5qD"=tV 3RXo@^|!]ɴ]Q@Cv_VT !\oy xCSLoV)`QUo0m@7 rS!joR-`4\fEp[`*u*RRUa6UC̅+jX 0Obv/XD g Oٻvw& Jd۾EʳLJ:ߵ -lM􇜀 3k Li] ܳ5Dyɂ\ztȴrc;7 }G#p.^vVಸ5 yf,5SI8'Q1(ymGojG@ dG~4zC;W (FEO!S{7Eqe`>ڗ4QP@x`S>ylG^p#R*l;=>?GgJHXO7(@fEKSJ|\o#@PLM1:^Jm@2o;M6(KϞ̔XςhgA4~Q7Gټ6pԑS& ]p s!7i!W5 %ܾ}?'(EpԊӹn1Eʲ$ |3]m S=92٠ ]?gEIBnTeO[`N|<>$~b \vu>vo1I kpxՄ~? 7|ݖ!x)ZE3h=dQv6Pڰ$ vL) 872Ş_}x6xxGߤH|Wzw4'RT o: AHVMS}2ųN\VS};(.}3p,ns?cAxz4WvrH|ЙN`16g"ȃr:pQpF!qgL|\V^'ϥ47:o]} 9o~iybIh[ R0!œn5q2M_G"ALqԌ0T-d_'J \~tE7V9&wOڒAx_83P%04q]nbBuor;SnД6 f.!bՃȉyT|y*k52e424`בX%5ӄ)5 970+ǃ ,MŶU_X`OJ JL_=#IB2:+7̥_XH Yb:YDt{Tm?a"$r ]=\gRوcs ?`'CpM|1G˗mmj"U@K|6$,){Z1im(ѓH[ ~ᶹs}.19,4H1]9@o- D2H;lRɸ $- DT T{'59ڈr e]߳e\6 s3ìn7Rs]UO ,CXΏ3-奲x@/2߳dc&խ 0̡uMO}BƔ rrR6xѐۼ “::~nL{H+fk|b} 5ٮ\{t}qpʊ7ᴘڲ,ߔTpur}ѕ lVvwI;J1dmTB|,R+V͎5p@l H  T328G-w1+J<@ #%#7N8,뇊$dTQ z8czjӿY3*|w~q7HMm) rPɱ[ϫS;|&=l{,Ffܸmɚޛ7pG/ Еo\ D=]I7 yN8y-%KqE9XW/D<=6|+E17~\.Rwւw0-msyV36eQKNPs{VN)'#bolXcl[hQW9{hy4byf%P%T苫>YS$`6 leTs U#"s)'Q 3V j^bH&ù80g(M, ԅ>rjۈx)U9(W=Srv9!YUye\;A/(]*}ݺ|L@J7D.+ԻM_pYz) ςLvl' _ .;@.X!7`'S"d} ? ֥SasDo!o.Cx`8zI;XU; A[Je:YTڄx/ѓ;$q@=H%&* 11?L}ZäCU&SlKH:~Q PV$ژޞE4 6 @LK+s3jEV{ў`d(㲡lT~#yrΰl HbOϦ v6^  ]bpk ².uI6 7BѓfR\OR&+HBP |khcdu;"p  \VF8ܞmDIGp Hgh+ڱ17g ma6Yg!د$1@"X(yԑU赍r L??+kL1}d0@\Q@a<k?ƵZ]/^h&^DŖ>pg sV]p Z|(& w?,wF3}j=r oE=.X:uokfz3 2B@v< TFIRqZD68%'Z4Pi UMbb-8vgX\M-IKr{/g!SfM,FkC:6<^>oMMVO+:18:6D7|ɼJ3Zzv*C:@ BELልvsJ7`+ra%FA A]Jfxvy^S= l|FRIlȕs9B;HBQֱbُTPCR0ʍAcP+GLhcs>TpS~FY*fo myp DDeAw$q  ~[k( =,n-cH3]lT(߯Jk\X*An+JwDq9 [I^A0e̿%!8eHTvq+E&'@U oq%0UtI}`> .%G-ȿ&A>.dq#a/F|%#m63^v44D cQwڿ1=~9Q_Qtv:Yrt[-7e:c]u_\zGlR@0.}jL•_zc=\lkgtc̝C\r-䍍]W R+kSFq;NPkP3'mHE1G:y|KD}M%gz3p~Q龏 aqX*8K3h#Q젩Y)8ꗴ7 $=3xWK%og??Mq4q r"8PϹ:{FJ-q֩q.#&15eJin .o D3\bJSxDgIGx4EmŋT=U\ьD,s)@UP{>w87ec<ΨKpĻOP@ku(H"'N ZtXq,U!upn- nwo=X~+UGt`mE[byl{K@+ف'"jߌ]HS:=IM]XPT*S"b0ih5eҟ԰ p{42~-$\J>×#}0Snl5ĪF}]uʎoL)H5ZڳI~~=d_Pg*- +s8;8G "M6N\ 8"ucuǔ z֛Pelv|I'c)[?=G2CP(T5S#*/S9èYԻdɿ ENoK[MmWU3apabG\TpGp`Cq|-c5]= OD#`Ŏq$s΄=ޣbKL#a} WNJǂ!1i<,Bڄ&ͨEEyMtk gdtXc'I8ވ%)XX Y9ӗĄ!FyWK)*~ h9Kn-OdFz` _ 0~H=*t@4 t83e4-&pKB6)|Q{tӗa㌭0L$X+Q٨ªEoruCYMa\]|aţ#Q u k p5",JPQ Lu+}cDHwn= >yhxq' n8`龪xtdVu/tX1lg7EEOZGq4q!,Zo"[o,ly7t}b_9^D3hȰDڈxg:t@]6yb]W\)wueРy@v U}N=` .(b Y+"@BPH!->)`+ v/\Ec07\ IǕMl-%S?4:qh?8"'(3:EG60K^߯lݰv(^r7xQ |8me/#2yw2ɟ8r~9Yws9t?uv׀(Յ B(_+GdgϠ* ke Wx4CZO _gpnzm$ C"pb­Az87wHfO9* y7CӡmdH!cղrE ?r)zla^#476uLO8yVVc`P=Nf!b;uXqnQ;f^XM,?rw=ʹMu|oxO*_nZZ=DRaSƬܰnk38 jrل`-+إ]vڮ)Mf|cq_y#8r.ZٱE`bN$\|3Ev4TEgL|0smHaLB Z-[ޫVu-f3cRؿBpդ? M/d5ov9CYOACr/E$nLؚgRy> W#ODs|tv!XR>{tQ4=syQQ9,5bBns%NýM xڳ.z 6jU=]SPM!QgW7 NJdn@~wު lZ< CbÖ>ES騨X{UAdZ^V C .wGP+fsQ]|H|q/l9Gh&JR mimM4GvgaRp[$#3`A?an=|aáz` >_'CJuvY,.pIM O-V lNQFȶH%Roڨ&OhN1Fgj١LXpYlfneD~%P*Q`~elhC'=ۈSe0#dɼoJNFпUR k!%'LSVIJZn ,Vh/*.o:eQy4c@e`l^.NF` ahe 9=Lsh1hĄYd?Hl|9:}QrT]:"*ԷLEv9q?Qx5AFϰĦR=,$.U Q* PA5L<`fF(tRD؟ nPKB7=[e*}/vNYg?0:h-\Ł T3>&v=xGY[ac_ūxwac'h*;zaRP>~eK&"^ZJ&*+o/7pM!tD9%5:1>@%J=1SiQUWhl,+ V2kȂ/EL4jB0f29=!3&"*/bU;b.jf$<^öuUHY7ר=1ROq 9sLt5MH&` *F:IhvJ9([+V?RAP mEmO.?Q`GH`_{o5dbV)-=Țw` ##%m]6P֭ aÊK\3N߈j/O_ !!|4LWώv`4TQ$7IAD,A"۵VM>!q^4+e  hv?FLS!#Ыl bb;aTs04TY`B#TUSO*Kkx.ٌ<#-  S_nD(K椪2IGBwUFoNAՏ4=Pe|O_hA7<Ƿt^{MbG&Aky: ӑ[)h" f-upqؘVn?o$:{CS`-S#H9??Gũ7Dh[7ajժ1y#mNq6mŃ[UAZkli[sIdxO.Xu$:%8ejKUЃVϴ7զѵNpV3z0 W'Zbx#"qC_Bq$WqEߗʰb;:{?&n!G0VJ챎Lg$:}]:[ѼX>]j |2FRo>O7-z*^DE'~&j.{;[tV|˪uq6U Zц|ܢ)vM>J-wqGS3]qj÷lh]+EWx(NM|a^WL|hJ-BaDx`E<͊._t:.$W-/<C)*6u{rd~]M8?5&ǕD?N%Tbߨ nt2VC!V2 In#?jq$N^^a1;;lBb½b D=#?mcO 7^:A,!0N"[`^?cFNL-C5nhCFbBkHu ߋ" ZY:>!O}M{HILx㒆R? a+KDe mzC)6GaFe1pT|#F{ĩ7ЫX%vɶNp^7]m~Oj}beC#wxruS:W&3@Iodqi OvO8c\ڀ+/gǛAe*'XcR;Ҫs'] ץ}*ư6e`j&8 |~ox5=Ͷ=<￱ֈ=f6nKpmHGҮ"Mofig 92GR6MS낻r*٬=baffX4povaQ P*„t." x'=q ]Nu>|#طRI[b:OA#br_wja,d,D]Y:tmExѥȳj(:XI[Wtgn))۱+?VeJGb@sXxb^,6!~ԉvJUYb b1nO5ڼ9 )9pQHi2Ɍbi@vӿ\ޭd"1ur4LVrY3Fe& ̯z. 0*kkW7@7=6|5? cђc(EVˮPߗtgUwJ¾5a6 S@Ll :;ا,Xd`$A/AJ)eYÚ `MeP(!>%7YK]{{?D!\ 0:!s+o=od}ω ;FcthcwD&LZ/̎*|2%Z@n s=6$֪b]nurBob~InXr9ise>bǨ>\#dDsIwQo& JAlp20ӝ.(@aal~N`YG=E|di"IJ0eݸ&Z HS#"Ǩg ~-@ WǸL6khE Q})f)<3]*Ѕ LlC8x(j𯏾Cz${p݁*Q4N NoA?Թu|!՝PA{ŧ;ę#mlPH&$95Rխ ΄RL"PGM04;nJcnpEN@{u` K) '334f,SGĿ1 g'@6_V C3`Fbb6!m\Tr sYZrz tV^^!GWSDJ &jϪ E~t>A&*" gvkPWx'f(q(;uf cyoB-_3*UJ4bٟCЫw (7` T%[.kNQgy>TP?hz؀pwNbz/0+L@~4cڬ16B:Z8IW @^~Х2:bIkN&-eBo99,Lp AzsۺXJkCF:->T 9)/j`ٻ5F&Cq2=KAN:/CX,Q3p*/O$0#u#V;*}y=_*\FljfRA x|/!؂ݳ{k&tպVOCHP :C.L.)5]n4Lb3 تc 2gAC24~g\Y; ǜ_sy~fr/ěE hŔ&oiU.Uu;@ ˭P`es8`^S`b"t:K$v̉>0 {p4<6cKzFy%?9,Ƥ FX8/~#4,T|7"FTTxn9}]zlۋrZΠ2\ >u p vb x ĕΈn}lA3I';~R}AI)d"J8ðEA=U-!'S\\å3YYd>}VwI%zg0C GNKQK6 XgvO ҢF]0w"s7ΙA+vO!$1Ulkho]936omPc޺d#m&@Vv"$H3樴Bԫ$ 4r{?J[VG %j?s7;avW:P(\]jPW} fS'[ ۠$59JE Mq 4 dH}3.;p97ڽ1PKW]^z۞qc砢 "qv045M UJ$ƹqJq`J=wɭ`ؿ~9mUr>wXWtn ҈E?:.ȠmXԓҝGhxL.'?*jpS1Y}k0X>V^+g3doQ:UQAEϮ9.GKg/!.+^4m#… 9gc[]=r~crIlGOvhW',skJD}~,^vS,Cb}oMtox"$% Hsi700ScM1T4;y$.ϗ2jҙ̲mbp,@+j+nؿw`Lw$C[!ъr6Gq薮=*pj`ᵼ6 oh-GA̳uvawNel{ovUJQ ]iq-$Ԭ|*]VE=\lI#8D׍StYn{RӰ@,_h1pցb|+.j4C\k(/٨ZeNmCd(ψ]=QoR&} Hx9@4; ݚ>f@Bſ{Qj0UP yl9yESOQ lw9(H#U4RI[AsqHQXrʟ(p}61S=;.{aH:eADX݄x׊s2Ŏ@,pO~+;^&}0)\ 7&1_"ww#GFML&윮D?vom1tZmNжXP"od'=U0^w[%=;h%0_O#w.n)Yw(z$cTU| ЊwANfKaF101/HpЀ̟p3dR7"[}&8Z5Қ7K@F/,*%uyOL)^ūYNfb-WTIm~w kHMv#K@uVo_.J2_5-`U"oZ3g$lyPM;0@Sƿ$ƍ҈p988%j`УSQ5}?EfRg u"\c]O5P!yuFu~6G:ol<_^JV%A]}MR~h:%:z. ">"]# 2-MEz$@t k< o6Ȝ;Њ*T+ͪ+`%Z35k~TlUI H*wK4)u;yK/;ןaaaF8r{U 㽡'+WE&3v|463@ɫ=(ɿ՛kE TnIx[s?.%&wTsϸCilV5=ֱO/V+M 1YldVʫ rbV'F(:I\Nt HTFsHT3Kɹr! .Js}XWE[A BSo7+X6f=5q!(lք y]~L6fAL J+RiJ֚hP g( Tft0gt} -513o_TȩW.nnu2}3r Z%z.KYbk'@uh{ϣ1 % 0p$U<%L1\z+P!G|G` uS]*ME㴤ԨEƞ/ G MP40@q }>E9Q`+I˵'L q$L@̜[2c*" VH՚.O,?ƝR,ۜ-v˗i뗅rGl}3#;t>䕒y`T>Uڔ)Eyq6 ZjpH ]" CО^+i`jǁBGK% уtLF <'xʦ'{)$+.u\:wq']ZH1d3Cd uIAXz d~Ko_nO\ϙ9iЉbɄJh }JU4uɇuVlچ;ѢGz C:2a!}SYBĒo-{,qOž;Ȗxm-OP чTB{ z=Y9lå'S}vu.8)K85/Oi7}(P={dÍ'%F&VmDog=aS%\;L(Dg]iZzԳê%yB;J|iZ $P~޵e@>f9_GI4-- yli8,P` SjqE_ʴe-heǶuyZ;;:Q`p?~U9H謁ÊJ20-~-GEiw"s^~L{]MF0LNk@o/I0jBAD  5* &]pPAja8%7I ]n6m# R}sp@Ʒ~g jkR!c^JnaϼКʨ*Y\kFĻ\?g kJ>lv~^ 2*]XR!#5[w6c~y}. ,o0x=J?<(˜?7olբBH+v׍LI; ӊ0pDx[dߗ_Y_ _1=cqt9GGVR%C`kBq/r e+Cϋҟ?KÂ{ȤPE5Gi /3K¸fp^&D ^c4(-g%ocAesT)yf89*,-wy mD]-tXhag:} 2&-ja¾ix}ʜÒ-BTZqKT _a&FK8揃A[XHzHz++4yk*ucjR}5@rdj۶-x MBgc̖v8sKCvjE6-@aU -'ר*3/@$z[0:i "Bz4AGEJ=z}+a]`Y^ߘp#r"DQ/p'xh0] .^ 4?s'oFKD%L`' %y>B_4nW\OL1,Pnt%u9,}tF./Ik~֒X DFD˻tT3LO vut8Vofܒ }e?Yld'|?, w}5LjlbiG +$CKȬ'߀ @-mU8Y1HI]Pl6fpITR 97?+ '@{tMX2䦬L@^:kl.M|Ɔ Y~EyuMoS 4v;lA$v1WzʸQ` Ap.XSX؊@EM; .Aa-mx;0w E?vգ^Z!NO7uyYWSM|֕A/q4LGf\9#6]8"9bXrª;-6Uq A>`SJn'k*+7w.؄T^ 1 $!Xw;1TIH*|sɀyɜekB]Փ8sA+-n5xժ}JQ쟧8CNsy9nQ9ѣc, $>a>Sr  L&0#D(+'k"m8U$"[X-P fF[{Fvy"[l NV(ꄥE6!;xQ"[s^*PA FEZb{~B$\P(1)+VyѪC^^jorvDuٶX)'BD[|̎{5U&.ԹԷ^ ܎Q{2ĮhUM%UaLF3MLc\iH [=(NB|3!]x]3i+xW5\!nE=1k T/ "w!\G=!0@x^gY^ivBLdȲu<#M>цV3E :AWF֧#r?sc:Le<` -x[;FUvFs uEy$M)Şl܍Y}4ctN񸇖 vfR` +v&L8> P2|dJc(nR$ـ[DmHY}fz1c.i/q)l#P8+.'s;(B/f]WQܚ`Rhc=t!5$N,vmKǠ>Ȏ~\ 4N[,CNԝO/K]kn:o sF\A)sOvS478%fかMܢꅜ >-y-[U.84IJZSBV DDbrG~S DURZų"4gLV7k~uaTotȚmOb_V"oyS{F̣n bzF]SߐE~ R^.Rm\ H>{mhW( $%Z!\mӘ>F!E˙,Z+r,AlA (Z*:2G;Ȩ `ҝo0Y/ 61D ʭ7_ :u > CEvCЯ6u?љ ܰz6 NH}k ''H+z{1`H8 کX6mFNqX2PV #F(^=̰@Rk* IG6'c.Dʼn |9z\;<%=F.+ؼb|[ X)+kgb];/1zn:Y׫3~ \ZJ?TXqX~2.sw-DXĞ6oш0 _|bL̮TtR.lG\g="_:̷}u ~p'6Xroѧi؆:%o#Z,L4yI? `\|61wv'BJ):A1dShNDu íz-ՆASAh^S3zqTIWX% ܡ{))0CM~03]λlY.,?Kkzd,*A}c.yB\$d%a6_RCbT#D۫~S-Jh>Jiuj6C[6TGDL8t 6)AvOvr{{~]~䤥R=? (OUoO[$|ܛ+ZGL"PpBO}p IHą 2>vQCDg4t}:U E8CuNh'¤ҫnޣ h&|1.oAo :{Q7$i 'EgC sʹՉK!Io l>+ɠavzf9@dDզYCrʼ ?CԐNa|lt0'Q- BCƓCcf]z$hX ;-qA{CKM"?\IyUoʹўe y )Lxfp9['iNjRUܥfA JMD ~d0өS[&TdrMz\Bjr[Jmd+.6 !%gnZVBcgZ^S@-x` Ʃ;7x& ޜ=Lw(ߴY c7DQ(6e8[LU7En[>kZU ~Ė`-̓'ģi|0)ȶjWXgbλN̎+QOee׊LunEsAP9BQWnÃk4rp fTū7  'tJ@ͪ³օYqƥԹSCm~ 2JgWd*@(]@OE»@ߥ2[IXt Hģ46;'"΂q<OYz'ӆ[1tJ oS\OgUJZ55/lG`ZHFjS@MD]NhQ4\ 'qQr>f\b Do"i%yѧ¶ܑ+$iU="D[H5{"%]$BkU+q5}hN) $vRRhA!o+y݉eH/V6 7h51R~$ѮHXW+SӞ[7{(}LEt KuDl b@ ]R}IkV.X)oHHj::~摻GzP^.@; Y Tth4TI 7ܻMbܿ5ᆂ_?c4D7A dBJ9_ d/0bӓ7W(ܿ.yܛmܭ I[#7@Nlg0.ߋ-610%d~}6"^W> G RfcQ Y\}< 9:.VEњ)8cjI\.KL}i{;\[$@AG/ZL|9]FuGW&Tqκ'"]R}NYFD!0? :`|$&)zIZ\}us)O#bGDL`2G5_$69B-=J @Aݾㄲӂ|^}Z[;#6t/ LJ_A,$6$- iEb% 9ޣt;>g06вAI)7leo@J Cۑ\9!*yvxDK76P? gW>_^<#v|gqrW @CHG$ԫ Yj tnʇHK GG#:Uz ~:]1o{>N#NE2Im28"E%1}gs yɓ1=73Kv2jnSs׌E93XtqOPo`P.q2TaHis -csAOBC!hm 4n#;u李]Uh/9\C""u`#`%fwhtdfcqQr xxRn*9Ć+:7T\-\3r<&{c& x0#KK^r"FfZ!Et, xӐTrԙ6tU[Aw&B}|A __悼å1 (Q 24I!Xe s.GL#c,DjwE9Rl|i4Mዴ$B5S hсsL,S¯㓅S<+Xd\m'P6q z¦]FI{u~uÛ#b~zsaT]%J(0'U"޾8Ԧ`#rR'a,M !q @8oyToB3$Y_4 ݡ$Zp, VrVv<\Sl摬*)0%En*( Rd2uO0[ "{s2wjo2-S=4S,C̄Y }4cgԲаFN<0rH.yi ]qEE Y$4)ԿPP3ܪB5zYj07nJ nIb C vGkІޥNlJ>5'l{@+l{42;RnoWW=qڃ, ]>{ +D^яc<cKD016hZvFj5pfzI!~ %HP Z Ҫa]MFIbg\]Brj:&UZw.%?UfӯII [W39 i[3 B8eĉsaKΊv _˚dZmͦX{Q8K8߀!O҆J3(L^d) s yw"$fT_ v8PBXGo5_}-ݖ̔)|ԮPŁ[a,`/K,{!JKq/Vxj $!eWGUNĂyt%})=>B9I'MI[.>PQYזm}Ajw^V^R.R|p<DZ2ݲYap*9vÒke^: a.MBs^py;0~j]vRre(%4ף({0 J<@~2h9کmnkCwR(PN<;XxRTgxUl2MtW*x&pl%Y%+QVG%]=\^Q6W%-lͼ֢VȫX租\-iUg$~83!VV?3x=r$cx40*FgcD_q+PPl~F5\) OOz\/cPHKM;Kȋv%R- LN}=Ӂ/n-1VjP&-]8!L4,?LIF&) My@2.7j&8j59o֍lBn[Jq't# V4:DmgXQ/x㘲WM4Ɛz!~`@LjE3+NV\go=_5"j㐕~4K,ґ²2>f= ѭ~sqlg@N|w-*Ag:(H7S$ ; ]Lip5/;⑲ɑ;CE07Y|Rd9+%r#v4†0P"mj̱591nunj)4Z^ih/z]ga1^f$CZ>{j$guSa @s(V`E\'*XJQ ;j fȈYlPa y!V冕a4Y"o.`Cd#>!~)2[%э[ng{Ai`$Z#ptq*fў:,b'O G|MpV7˧1٫RmB=c6 V.Q Zp T:ڔW&)NwEҼ-\G7#tǙΛ?tl;wx8+9&-#$_0q߯@Kp䷛!j|grY89Z%c;JT|z'#i 9R0~Q/$FWϮ(↽?S[ CX}lY|3z-ȣ~ϡMh~Mr<+h@_,r* 2yH7!|wVQf[x~/˯dwY֝#@o%u`*Ԕ0TvL8UuzHgGǎ9;m@:/4GZ,`upPbd%| r+FCf<ঞeޓΗV"~!hȷ 0j"anu zȆN387tKۛev;)KWX9%HHAyu c,S)ikS-9%#GEdYNr?F~G{L: 9pxHC+oP j1ziQO.l+ H0l"]Lu%*^zYc S }5Am}JVm5$#]Wq/gL\w]}_Id͏KA{<2U.TLкw@IBLIP%Gn4BB:dh 1 6tk4o&&0iqNCQ>ؘZ F&ӷtt!Iq-@㈹q@iwk(YRU8}"<_{s!MW^;h8((\IKL g,$p 'wwP!CsgP!lCg}FPYYܰcR眳 l esdp*U GsHk Tsudo(-gg?ElJʰvr%(ސnZRjvh(5#Mr<0nGF򤮝Pe/QxJ5cR ?3LwIj۟{ E4ɢ;u ◎؍7ݷkē[j2?$پ}u,kzH0'uJy)rzRL2)N]$5VRsۿ٭fshD{;GZcMȫcŤHm@qm09:ވT=a.븾|jt!YE+`ݏv%| EDkMDV04>cykpbEz ZT&(̒~ "7U{Bƹ9a_rCpoc6H-uMNEzzrL|tVQWzی+W [1 ād/A,̵k@& |4IJm-ѵ1OCfj=v^ qf9{ZXȪ6܀?=yԲڼm Ebv4µ\ ~nF+^d ZȁX1:CưKaɓ`B03Qg*=vKKR#\G*J fEe=$;@C q}xo^ @ao(-&xh9 sPlL`HUf~7̀u 8Ewdzo7vy3I鍈̮ɊۙFҸoو{n 75UoVp}g€1>Nd*@^Be|@,;T/nV þqlpIPGN;)Bt[Z/'fh!4_Q cLN^0B$3 F]g?y hL8֠G*л˸ o7gl׈347S&/5^*52l`Ҹm?-y ǭXio.f+.t˹r( ^Ȝ@Ben: ' aa}C4!p%z.t8ü*)NX.Df&(yK-j.3B (*=$hYm ?#.Ks.>g3Р -K ɻϲC02Z`jwA]c؝V+8ɔD/j 3;*ϼP`5uPW/%8uE:۟p){XNmf}`w,eǷ}ֺo(`ᙥRtPw.}aFϭFv&En9L5g)?mfɸm3ض%8 DNTijz8Hu$Mϛ{95ûZ@iDqB{_LT*]sE8Aoή Og_H#KP۴ڍlC]Q.tE<>-x:0naUd\ZAaׂqA%Uo (zb>̍" JC#RGAKD. jgbO*݇*I(ZǠ>Wrz^@cjV{ o;a~??1BK_xJ@'W2-yʮd7dP:0rv!]q,fSXp= ;8_ߖcg [V{}$(PGn`کA """1kKeL4Z#` {l#s$W%~d:ƆOn)^2~ Q ͬgJMs/ތ*82n&ÂUKG3ʠOnI$nl[@ D%@s+pMI,jW.OZ 'NW6pa<~Ҽf6f9^7&!~!2kF\Zb i0L^?5pjUnMm KCĽ-i&|tyIOCf kՋ@gr^&ÒEn.n9$L;747s5/8?efф  Ak@~ _vH]7]/)R gu*A΄I̿#(IBL)_G 0}c-ExSι|D/sf'Gl r%>hrI'?*#%N'@7f%l40<9=ͅb d #=~/rDGzZ|5^j7f:ֻ{PRLHFy|ᵢgٚB@J8%i>fӢiWΗfT.k픱4] dT͝am~ s2`zJžW,YQb @Γ#7DyDL_T_V&q`tCJ퓞Ô#ҾfAZ >us)ӵښwJ ?ݛM:/@kK` yp 4H] iKh_;:-;ްaSjaK._LI"$b1N?`9q8&5Z-7 ꃤvdJa<]Fϱ6)%Ϩ`(YŐh$AhI1$+ 7e#3v;OO&]- Ed`4!_^Ap/=8|װ7rI̍9` Zl+nI.fZ?XfO] 7DV13Ac DV%=8aR"r5~Z_ Ç1xH3![cf@}Xsb_;t86K܏0$Ǿ^K9n4' BiU R' ΰ@y[oY\z5`WDjTLeC]8΁*9zpkRSUܔ;@*q^xB LM؍mJaח*LR->kA &7RuBgtMhG6`"L /`boRs{@Z]>' fkswhkiΊ|J5g+"ջl7e XG [7g9^PɉaSwEi:jle=|:5-pdPM-: urՖUL#\?LGD+Tv@J +-liC)ߋxG{;S#FTY̍K>`] Q$6haX} ?rYғ$lB5#f#}䲜w|C88̡NeL/cL /%N'͡FՖa̡JB57c*C%3&}fYxh ʉfj"h|aDp;|\RD3u6D‰&Nⲩ/)[A¿hޗ z_AtBG "͢Cvhp9u/l\qA64֪x4gP= j"7P=Qn%y1j_{M,?&yz5H Xwԃ/$b2lG^MEsDEI-gDv }S}^4+tu3 + 2^EPt0]T1ϩ7~bM'R1Y#ࠟ, &[ |a7Tg#; pK{UW&V{7}D)wД~^tҚru3*TTt *b;Ũ1Kqټ(P4/.%݉ωH 9AAzv\\L;G:E%i5/cRE]sq!.#\'~F,2I+ϲd,Kw" ~gN/ס^5X<}2 ""׺v)x0<p|$dH♺댗07餰,`mbq͚e;gh'!b~Tl2\X]X kL_OL< GТ(0fcsꚛ7O0k& )7Apvf6E(${B 'TŹn]m b\yۼEBMT m4鍾̓&h K3M Έ$` -n2pcW=ORiNM(< ;3ߠr"%"$IaX SFH,G ِjtƓ81RIXƀ 1n;(,+\N {DQ q侚_ Op%s[1{e%?=ll\Ш`e٩H؂曙s=c:Onp+BP%L"^Ό .X{,ZQ1<_r9~=i28ghMj'e!x#>j2b,>i.J'+g?xCb"9dm+rxq'z vf}Q-+vl5\r3l3;5O߱XUl,Dzm-%VXbKɨ:*CS[>#R6Fgc5˟e.p`FqmyYJ7̔PvHV=4j2<-p :~J u`5< rn,@Yp +AېYJ-(+{ xM*UГJdռvf VYl.[" Q4Yo@O6& @u-\s$[/"VԪZ4$DvÿrM`|EǨv2YjM QP9wjx.o>KM?ء< tBȎ}\ }V$k?y6d>CXH*+OOΨ)T7n<~D7D#l;ժ " TJHTĔdΤC6:^F-?ul/hTb;P kg^ --bM E{ˍ!E>;dt<ߧS|nP8gP#vqwPW Z $(E ͜}˖1X.:*36i% ^K_kqV,j-oJNn^\6t̓&Z9bR S?bp(/9+h?Y:>d@tzQF@댡\xPE8$Θ (|edvO씾*&kY 磛wc/a)Q^kH`@}zklcur,;?6= 5&㨦h0ރyBіq0`F`4^Gй} "U]4j(ֺ$u s9@MMڳxC<4J%gC8%=#:+2G/&*ADAC22d-a|%śńuv]| 4$( ߝ~.BUvw!ꓤI-iڑq" 4tq6Ko+q6𣿈g&l;}'mnRH$zX{S&a[ Bȡ4E bPۜBBy) Ifd'e'؏{ яGnb!:X=#TCX=4D$bwЄu翥C>C=' )u%zt@7Kԕ"O*ǐDcn--8ݩ + $]/3JZ/(4ҁ vn,\ a P"] ^Q6gc1Po!,p߰m&cPEP"C^&j/hեuWk>y㊶^,)_(9=`:V_eg6kQ~ (5ͪ[PTf0U@HT rе;onn,$Cw˝, 3+tK<^yD^6x8FOD'~ʞ`[̈́rڻ7r3E8>oڑizWq wZ@1'\2s})U 砏l!hq±Jeee6\'1 232xԀD Iwolަ/#HIQ YK#M@AmS05(Z|s 릎ñ2~p.]JrC՘˿O%fccbԫSAlߩNu:>g;TމK.GgQ&mʚ99&tl” Bd(gP؎C4 Zx(HY="~{+CJ63rcNOaA9p8EL>30k|xfq>1H"o k/Bc1ò߸vM}o7yM,fB$-RFUjf~_xGZCTе E!o]YRWALqPMn?v}+ ţG#-u T>ȱo:1X˿7-nF)#i]IK_+Ḡ xc}ɬ!Z٠HX)j5e (,78LNoz|t!H7G6 ϞzA< bտFg8|< *PJnm?F7Ta˾aCt> Z$9_,&z uCQ>ȡsK8)^cPP:=چgt;~C(i*XK(ƃG`>l$"@?Ėez_ӈ69`Cx3z0`aMq6B.ME ڔF!YE;,]TAX,EwNGww6;{]b"FzI1_^sתtFcRܛ|+ фJ1v#ax|Nw*X>+/Wm;/ĖGlF\ds{8g snW[ δhHq`;R"xGme^pY.5a jff)cU{ٱ㶝%E!1@X#ƣƺxzq83Q<,k=Ga,hn=F@>[F0~1.8)lC π<2,w*+)@5!Y\fԻZ%>Vdoݾ̞)=NLi݊gxobt{|`xF h͢6z$QPaktw+Yh:87ɽEhdXYuž`K6ƑS )(FWаk;8#y,\~ EO?#fPuyD .k AOb%١?zp:HЗ[OAo.J;lk˞ +Kk$>&dm*NTk}+{ݔ%wqMdFiZy/ 2ǀQ9 T/^oܮ폽ueg$wtg:u<'Ot&ad+R2\ᭃ z[aRZ,Rtz)Tum3au|I??a55ߑ,`JTty׽Tp}n1*0} "&m7 $l e : g4r \`ηs88l݀r-4IC2dC픁<ًu{kB>w @L%dh%| #&O14Uq'l1h:(8jgHF| fC=x }$WcV;`_Q)OYqWIZ(_ #u&+Yn'~duxm;| Dwf2oQ}lթ_N{qA 䑪2w_;riAn7dg,XRW avbB9^qΓ̘y2a$u)tԢ:oP*iQ)K90 @| 7ˋD!yC9B~X. :%?Uʌ{x35ͻy7$r4p; "C\x9)6iccľ 4K(zz'5lzI8NϠv`X:%0WȎv͋8 ކcx12I:$t%ZhvLIމqg|`QCrG:ܘ=fLPPQV9tDh ~Cb5Ǿ:Zb{꽾a֢<čmJxG*N}"PUsC1`| a>epqdӲSſ&KڕȲ%q 0K|1]+Xfsj4h@]7, wP,N $ #a[Y-bBA8Ka÷4 ( sNj $Wg"21",s l)u'ZaaqʱuDen%)~W;Aae|@huy #B{AЫ|eFILϳ>r.t? !+k2^/,=^h4(2]S\Z+дjel%HB͈+ yy1Hl7*;Ah{ i"i:wA#gS4w\FL±οR#>"Ȭx|A [@{i^uybշCr!O; d7 rJ˪ja.'IPm1||w3u,{aҫ/hC:pTl}v™CUV~v26X)N>aK290VǹvM9"47gvV`ctM2A_\Q?]qkF!;>IK6-}pWCRY_&A`%#Ny$s4q"\٫3 w -Y7H KHSu[4Tt A~sMqopp6IKDE"נ0<+4+;Uws3$?n;d["T>N0'윪8axG5] #1'_ < PW<,4.`˶Jjv0(5vBP!K65qK2.qfDָ-PH nd]' ^9 s`/PwԉH b7HQ^v/V/5p]?)|lU"Z=խ.";7Hl=d|%3]╠C Dm&5)m;gl)_iW]Yf~7KȵZONtXDC R)" U4HZ/Iv;j^"(9eFh8J)E>\n ߓi#3^;Kˌ"wW٤uhis'&D*3ՐS(ƈ"䎌8pWt"F鑇+\5 @ط6WbpV.P4Uǎ )°ĞKe-j7#?b$;V/ǤT]1| RשK3W+b`[B QB!a6 te$y("Vqh4BJ.5,`b32vbd?CGjȥ4yEP޵* EwzKj1^NևkՀeyJl4a',ه\5u=KBFe 6R.wlNI *Aۭ 0OԂ"|S UP-9Ӌ8tJ:]uV]vn U|nceX4 gv-Up X\K; rd8p2 ܰ6= t6! f-hQD\;3S@)T?bR\f,qF^g`҅J@xAQ)%~BY\뢲˓.usyi]p}|6!(hò2CP$Ufɺ-:d-O(!Ԑ</!&RhިPk #5{)!D3V'u>qwh"^m_ߋ3TEhc_:.am+s 8-7SUL eAIRhĻ:lH ޅ؜D.4'! 8D퐕N, 25/6TlfinHPL)R90ޏS[7TXĕ< 6c(I=|>H84Y X__kk`` E%=pyw`$h\E|NI%y/2u5Vg5ҵi1@ vDj 1Oh}=ߛ8|)3@›D;Dg0ǝyQ>50=l2f,SbI&ejϩ/y ;5 :f\n;Ψ"H|jغT]! puo(xlcmctגu D;ׂ4f8g؞VL'x^k`u[fDn&㬌WX.N\qZ1VԧUPk/h3y:=hUjY.aֲڢ~V[tovtw3UEjI6d׈ͬ]Y S=B:{jI?2-[À&J~6MgLSmxmQOMe^1B`(֘6C:l^d+ث*"TkGX~μٰ\Bˊ2/"a]Z>͸Bi(~ɩh%7tˑJ#cÍ=]HR;Yq~ VQR<0u^"rNIuwg(;U%R9 Lu$~KCzWsܭn;84iOnP⮈U<ޘZګ9ەgdeɪT S,A`-`o)eMw^JՈ*Kazy{x;/c$Ѩx^j1C{9e>nG hK.,!26%|X4ע6i/eXdGZI!SQs-Urj%Bj@3fVR5fnK6c` 4b Vw1mSX ѮF!X!ofL>*pM [yc`NS1Q?yN! :H tb/.PlmU0OZJ:O5D>bJP-{{; >*?< ι P۸řR`!I9d;@ !\iHu=1DpL}|C;rYY\㬕%y_"%bEer5Sr  %7"qY$5;+)ho-󨻾ݷ5A9^?5L σNWʟ:p;G9D7F ǯ|$ ~@UC㼲Vw( yGn7諾+6mlru1/R! NV̩TO†k3t}Xy3K@,Ì c\ 윘0$sbxO+ul,pwIB}bF:sOO:lOl`f#6iq5zHOTU#({x""3$ {S:/KW-,7lI?5x,̰wAT=Dbcӭ(8IkRq8r_ [4gQ ^{N6ԊAԹC1:`3MbiRX=Ũ"(s9œg{;TIDA aH]}), Y$zHj:Fwl/e$rH`0r:C56%F(\/":hRhTSua^8 qٗ''fPhoYjw*c ƈ@~dzmucqe\4hGDb0q=r1eBNCtLSu(kJ6 D m>OʠîaEweѭXcwCXGLyO8(u3wЎRڟwE,>K6WWI:|]Di dt"ީyPg\;$ g!D(u3:vh. o0V?aʾTEύDZqc`bM O˝ajb_!V[\>/Q?DfîTM2HL-/C kZV!ul>*I$f|^cfkL`w5ϜՎiuA O$($f;_ŦN"7AEitwk pZUEEGPXܫpKug=\"{m y`6÷>#fKa~ ӏZ}[v=6^H. O d7LjlXNhIt\eJ3e|=^8\؂nոV Žu9K{S^30+Ÿ΋>ig`Dy{ 9RV`M$mts^ȁ@cu6K8KT"p{ٝk4^,{Ţ qFBUuƇ݊#ZA%(f㳳@iv\kf43D_(4,ìg/pqc.xދsa.\_8L=q'eZC]P=5/F8 B%[Oe9?+k-'4yŦDcDݣ6Z>g';K+%b[D%<Û? M$D᪺R?z%Ö*TO%BF#ЯAE 7 (FO7ِ.@n?VwKC$ۊ*gLdVM~k7G/Zp hUp+)$x< 1 ֤Ѩ{yn0_^Okڏ_Ȉ9.xOF ξs Q- #:_qb'Cn\D9PƅA(p5U 'FHh'CJ3Vu+k(oe+:H#Ȏgqз65䔩kD*<4?JCQBV=`nu=}!Q{?" JUj$ =Cބ?S&K1/:R},垽X zq t]&V dܻۢc*{N|p͜}ڏGH]T} D¬¹zs$kѳUMCt< teq| ETmelCٽt+XfS`gz2Do2f6EMK7% GRX Rچ[)У* !Jz Ld]3gTD+pC2!Z#S&`q u^Gh ձM!a4tNSG RQx6 w)Il`i3MQK,ݬȰڮCT0jiI.i6˘,6a Z?HܿuQkVf|*ڧ"} ޓAJp@*8"fa^pVzv8e;BٸDo kj@VC8馼,K A_T5 f1CEAeLd*UAՅ'/'9jKE=uR=;Tα\P+dx^.{O$k~G0ˇp i9d6)\ Lgũ"%J&B0jVkS Clfw,ds\ lz[jʃ3"Y^?DUqzr {AjE /ȡe>i{8kW0_WNJ;dbyR7Dr}ˑu9 !}Mh$$3?>O U[CJbZu59}ZU7q$@cb] e }yz RȝFg|E9c``|9%ީPJrxP+1JƝh!tǷ Flvغ,og^ΩP9 5st 66&GxY3H6,\׊A./уKGL;u4_~C ^9̷TP5鵭9Dz7|@w zAIooW197YQU |IեvDKraϗ2=;a'+\*%(0 Lhc<4TeVcS!ތ{~G[Df]%I~O*K^d돑Ta! Z{^@ CX;u3mgP .)Oc}ީWpe{K󉾑m_K$8#m-pY,,Y|"rQ gxH[Rck0ĻvIIaYsȦ'IF Fd=;-A'~:hdX_OHZ)z1_!Fۜ3ZBјy9J\hWԲs؂tq[BDcOf*#mIfV6&995yk={E:[+06.V RLj,0,(U>3JY/IAgEa=$P \\tO_p%:94-릕?H#_+ B^ǜԢo༜>jqƢ6(!i7 bS;^cgHU=Sˁ*XklnUqxҠġz%naIu6$NVoK|WV~K9%)P!&O}gZ'@x2xD_"N .qlz]Y@L8y4UQU&8r -}tebeAK;싀$LEqwq^R{vG =c,2ہ^_vnf[, ۥ8M[ԧ<;bW`Lwn(%^'={1לu=6&cwdu0fPg` # uqHO!JRN*Cq??X_Y}CK7L}]T T{,(3 "Q(v,\wTC\__)SLv7Q9Qs%VCβjO [ENt!ЍCyR)GXn!?*ƺ_g`oLn$s]a2>d$Mm@@?}f{=ahf.Rrub!sLhnqce-Ѱy]u0*Jk7kHMS$ar¦>qѫ 3ICfP/QHwm_ȻTR*o0y7zP8P:%y*`gEv!vEkbD2wnKWRmtJ:~  =:_ܜ69[*>!>)C3dc~.ԗV{$_ӧHqLL_Yd|!t>xmeeZ˯ Izگ62 ﲦȖWSp3ؐzPz*9[9?磢wۏYD]37oBgN^uY%uI,r"83%u)/~~[rSsM h i9v4lGMA8[ (sI7cZ*}p2×"o?s3hz}FJ^5xh ̋#8H Մ}||Vvʴ:.ʙm7@"UiGƗ ^,S-A U4ei˂qop2ʓF໾ɜC]<ƣy1#0mj yk`㾶7J+HXe$^z¼a zpV452S|_D3!B47-?J0\@$ԁ;( ݈o69)| [}`5\N ?}჉sB;/EU&>0ʏSD #X-]G: Jh6ۉiDY }$i>6bYJS ,t<]!fÐ!ILbO:j`<'P!IM"[_&˾.Ce}v 18N>Kka-/U9~E'꽆HuHH-,u0.1S \ yۥ9{(Ōlh^a|"kU=Ұ3]-†x6Ĺa~ًN3]%!?v2:Z]eu~R QJ !H^L,GTy@P+%cAaڕYp.Ƅj.Ar?%!]QٛTBMZ#şa+;ZZjT-fƎC^ŲR*O>g`2iU6%?VY$h(,QO*$x̤AxZ~ '7ftz .v{4g^JѹƚxO 3J U` v!4oJ O z4Oc|l W=#SO6i/3Շ_+?킌WqٸPώ,qDE$ Y,嶞-jR(яG(hL)cΌǎrzƽk$Ot̉0aԫEV?pzJ $ 7w CY0͓|6uG d'1r>*t|Bi%΢L%͊r0Dd*'[ (x6ܾ8TC%@Y S e<->&DV'EBU Of*!u?+3~ʲӰ5cue| __왻yx$8,S ?( rxKFآ !; lK<IL ԻG>.Uho`;'iTZN%xGw$`YqMh(tk*C1Ʃ1Uj+?Dv9v;:u`O2o^;0 !ϫG/ "7ؔ ^¢,y YͿEÇuϹThŮ:(Ns%鬊p3>hc?9k4*QC酎i.zeM '֡iqݲ.?{YyV#H~/@-]VP4]mN݀Cv S0eЙ:/7A .b}0u$v?hֲ<&A*9 @[~ݡɱ;8Ϭ-2$fb-&ҿpHt痞"]@lm-?%r,t4S%?|+`'}nETB`FjLWQ?k1ZVMwN &ZhK_M6kXWpSx"zW[W_VR_[z!`, }mT Ӡv@pT()Pٍ۫ɩ6RKg`P++1! -U[w7s X cc{.ˆYL,jHYns2])* rH1gDc:0Zd+2RjTP^Eorx+l..T6@X2%yUbqzX_wX pNyl$Dg42噏Bz'޴̘IuFP:J%B*Xﶹ#ofm8+Nո` ; ۡ3 cRAN%@e[y &|.3cnyoωu-ӑ{oR)'vJp!CF =.8y9p_+n80pwwψaUOv[Tr"jwnm)dz؊kĚYV%”ΘH׬2+E8E;"a`:hj/da=\M%G"|t^ygB'dȰuk3N֓wjEʰ4RS[o&ήV ∯m3nqV=}q=x;p? # !F;{T<e(m;s Vx4L,N#,FRUU@y35_frzNR~YJ(zf ;/* Fw^7X"{@63ms {:A b6qJG ȇ84qp`Y?s]士7O-(&̱MnVGɲ^S o%&Und;P^UʠMa/]1:pbVSN}{zre_p~OЁECkryx P}TbJ8j.kC!L ZX &adDw wo~9 .ߐ6_/3608 xW3ob71*$8 ZP_x\Gb&vJ -H )Jե4r1X9ؽ9U2MS[(7H!W.?]nF2> T0?cgg;Rĩ,Yv{.CTХUh-9Ͳ~= IY!+gdq= P/%[bnM_w29iUd,*upB^9}ݭ)y=3H'ڍmWށdԚKFV ?֥Xm 4ʐeიqgZDEeO']8 rLd[纷dw"JI{ 6Ȫԉw}huySa@>mNQ٫9.-۲-SB6P,h*L]Y?F@ |F0ZH_ w&`*85\=DH'Ν R}ߢ1 ? ގ }"޶OjIjݹz,e e31s*^@  0s`Ҥ;ÍؕqQYl8lq1nD9a PڭoPt6/7J6ᡱ9%ioj 텳IK)e)=ˢSiH[7a|tiCM%x,m.rZB((^-;EvZ:0oM3Ak~,M)Io)^$i+²X@v)iZ<ѧ@C{$^qYyQ}|n07Dseqbδo^X] }`a"&l!Ըni=OmXToCfdXQ2ΜX+APPO'懱} 2>r"Tw UIReC]KtBHPd]Bݢ/4*7ʶ9FrcQnisdUr{2AG+zauƒ5q urY]w"+!.oxv+$'KY_>YzF+q˽}dJ꧘d60ri@'akU2WKڕq^n7bRPPB8h+k k:U@(UA\v=~J*b'Fp0Κ324ָjL#ZC陸L$GŴ!ZN,"RSvU:N4Dݹs?gRпZ}8ֵ&X'nH@p59՚LlK~|QCel%xELħ6.pB10P?!ߵ0sU_{qˎw;`JyZvuqmtf"_ᳲYIf!hIYhRzϝΈ<KRO2 02 "_?MƟ4JI%1ݕNSZfDIBI+KuuF&+n$Z=3Tt\Ak&0vh'i$IH]U<\Ɣob*0 =Ea, T؅Q3U ?91> ? /;btH{kjRoLF|U!63OIGB1;BvNWgB-Hd%Czĕ+1q<`a/djD$;d[CCh]0f?sD@dnsn) }pDH t1Z1LEI:vlS5Co7hG11/h[{5xBxpohb?`YRkI2x$ 4.tD0OMnNɸ˕HVYZrżHq|1ѱ 4ɷd\Z;iV&2ۗɱ"qё>@X[?#개oj_RFy͗sd,!U+W :y}$3D I(lrcKL۫s7oTy9nChC}WnwW|G%` L_!%ĕ$V+r ρL[*9;%~Bd(Fl@(*pp*^`ÝR}䙺Q.ʿܛNs1 Q{B\ܰ'9cIwPxǻpjlB(r݂@rz>l3#yG *~V ET(6ٱ.r]٫SX 1"ߎׅ8fulYc.`ڬމKXH'Qزr mp"4]%t9fI^}_S:`D mLn;1኿!`XAӎR1·Z:@uy Dɯ~HapRWkdt%b-g5ԸN9"z۷lbR(&X,0 hIDh{[@0uWҽo+=Mߩ0io]eA6w v;uY^Atk0qҞ_Nkj0ھ{kG' 䑧>pr@U)qxڱL+Ze*po'u7ƫ2@r/eֳ?MaV>n@Zic[0[|(ϊN(:ï`+Ɓ>U޶?oͥo@x؁_zosH55-?G=G_ctpm"AMw$2vZ%|] ׇ:"AMyR=1p>ZR+fB0^ã­~gm\b {q^ 7*»/dzhoH=iGC'Hapqm^yBcA15 r[H>;IB"KvK3 Ș18CUr4Btozyc,KDJPcQ[q2dխ0%reG9'igR]vS̫mnjojZOf67O7D@4ѿ S喺<bB@ 14!:lxֶ6M\TI#tp&ĺ9A~ mPKtՒXC~ QH? wkEv('AXMwv/Zfh?\V/0n?̕8Zzpe~8|~`SaJ ~ 3My\ Ё=!F赙 )Xwy E%!kdڠwHRз4Q~0GKc7C4Q1RǤndt4Φ OոHFZGY{' @D,R; Z8R o7@x`yj t n5juKO딷/8~{IʗJ(lےKxqT޶&ɐ־ڻʕ̒ tK'D1Am8ԶUS>VTOƫ+r5\5ȯE/|l[9G@?Ew^OUjz K%qMWk?_Q cSqL-^rzX hQmi `;QAمRnh 8mB[f TˬdY%L^0$=P [X!8(f\y5dBnw/[P^#qr %ˇvQFP2z+xiFa+R`̣R) 츂 ޭ;dZ\\_[ϰ bc>Ebg$ԇ{RڭE/xȚ/Rv󫱙s̡H"'b VR4yyv(p| p԰Fm}8ԪcO|ryd[5\b V3+_5`\=ݰha@^diE/aSÄ߱8!BLg?cc1ޡR2cssFCeeEG4,ׯf4kR۳f$%g2[}T.=WO1~sh*MzPnW H2 P\BoWA:gGCёD4-mMr5V,)}Uw{ŅHQaǦBc+]$V0tzXv6y]V +qL^x}g<0UAZd>nWow\LyɏUgrjNsP^۪*Daz0^K(bP3{@&cA"j]VgJՖ6`*5 e8>Kr{[]M.J_QD =Xġ෇ck,^Rspi`IYj%~MOy fɩ㭙Üx}b5('l:SEI5 |ucV1j?k"GZXDtPG4}]3NȬgF'*{nZ6t`,`DI5y(נ:>ReD=rN/-3mmZ< S40 F5$O~ o6=~$C>@T0(VS ?yC}GqvϘ:yElS`mM%$suemO (~B3fKuӓ0|KĬ;KF0v).>oPՈ~Ѣ [՝}ݗ.фZ}y;bqQhI/)0`O7i}Gi1;NmIaK+7m%A%>Uqe9M&7a\TG^~Qk/жgA58mɷnҞxcU<CT!ly bBdUovrWCԪv6T^bN1̡ 9o ^xW#`aQb:g:>/npz`jW:jс}.<"e]+ۢYW  K%-̀6 o=dR? Q1qSeAlC7)a (8M퉠߄c !l+4uX\CH&{ӥ^ G/4v{Fz z|(klF}r/Xsl=~mX(!5^v۠cȕ>OJŏpuZC(10<þǭZ9CHH܂{:4ȗ Lho Ɋnv8TV(_ԴWf;(14+ m@N(i݋~Y)QFe S$D͏il 9`O;.@wj~xfzgqs=\<%(`3;ߡnYH?=d{(ɆkQ]zqp ѫn߲Q/B\0܉Յ"q^WchZH4f[x5Jjy>M2H8b>IX^GHh֮]% lQwEDN3b TXT| xAہ>ж vg&?V~8WH-%B8\b v&X??C[ /=er&zBJ0D4N|8!sLZ4j֭Ӷ)Yhn!72Ve*t=uj}2"[RHIȠ)' 9w$f"Դ 0u'N}U\SHSlBLjR /~<S0cבINX;~F.iDRِ@ i䴁\:"eNӧz[/ x"j8;5vm] GU?3uWI-)V7t`EL8;)C l>ΗIp|85Qc +06:3cue[v&Q#tWjTPj.@DK:CmDzU KH̴8FlB6"0 }?E ,ekVPЖ !!'=rف: !UOlK1Pm* e?AEN|Mi*l?ރ@DoYCD׷%z1١=`nڒK}5٣8|r(zL@e(:o2DKaP5[:'$ƣ15'HnS !0X(؞)UA%R3Kdlj):_Я9a|l[fh3W݈<`LCd{]b6w6wTu'^@]3]4*jVèasvynv%Ebe͂='6y,3[,хFw#C>3*0i LSƦ4ń x?Azy;v=&zbzl'S=>#ӈ=QIG$2bVd~?<sdB S>a:oNK{~z֗I(iԨdJ]i3PAftSC)$R.TkaN$^-;}v*;Bu+U/: Ʀ~J^:}Υe (׻PfnP){09կ;E{׳%׸ %*RܠHS9DQ$f0jōq QT;"e`p8ckܵR04͏zX@s-mטANg6^ dXg~_.+x835c?iu<A02Byd6.Toco{ӭX.qZ^0 ;ִ U|Kll" ZnOƫ,ZNs,Eźԝsf bʃT028\_I\n0v57&GIVJIB̩!/WĘL)nK@Q1$RƺY_{܏bӼL9C"˦^I7E0IA4`& y/T|=;?J0 B=\d+ؽLK U壯M'΁iqv7Q-X/sXI m3{E#D1vc3z2[ucy_9iz ;̜u B`5k~;SpBm4N8F_ jƋV7咽ͻI)ԀW;PvH,>Wz /)ndŎChŧc͍ńX-$ջ> 1ݯS]h ߧ sgqdz;C_OwL>y[-ye]259ڼEt;LЇvL lChlإ6cD+>; 9% ;G ΰXrH-⬄t(_ea < _)[%Ž)F!nݟ>_?UaǴWi,bm|7) {_v%y >WTJwv(RbאA!z5qH ;t&UQmh]+EՐxx. |TamXAY\'k!>#!(}5Z.3gL$`֜nrb=8q{Hݪ$5xr43 L>6mYGa51װ~gDV_g;Dj%&s/mЉQ,e?Ao`@/x4- +E=z(ctQ%aί邴)NT̬I([@\6t!D"{? ǚ-,U"V\gҍ.D.t;2U9wPœ6f$K"΅zRfwo4*ZO|kV,?(Ef(9i_Y:Հ+s͈'̥gsse3a$A2  ڬtF%q6n/M9O W$G4=I'B飰9F+o~$żL@0z&J~[Zcpͳ-YE싌cRtץ\)% T}vcO!bzGiꣴ$t"I;bs!YMP<Evv=ݽB4ʔ t|~bji]j9]EQUU-ۙJ(73BuPu^2eֿ<\^ѰT5"pgfضKw;\MiǎC?0#^϶ ڧEЋ?g.WG0q<uuY0ǫ&CC[C//hv=D}嶆`7w(\FdC1+sZuFCZA1/3dJq V) +d1x{hUK(}Z&$ ҹ `0S Ov׏†a0lKZҐ":U8^ycˎpIt8Zo[R"7B#NW%v5yBnT Gnvfҹ$ ad d,MeE9 ~j#o8I6\oOu3~3Ͱ?F6G7gS%-ʺHT2wsK_xUfm^qֽ iĺʒ  ^'V$}AB2A)e\{K @(DXB# 1)&Ճc F# yX2/ D)0Š9kQ)uݶr| 1tUhB2-M"?`p`T9v fGq=0 ȼg ~p|]'1TVrri[|+,]Ĩ5ffzB3ӋFCz&U2"vZVvwң N?V󍳿ʘYSZ\ev/}Y+MH-VEgSʈQ 9D>LPD+3"FZ|7|ގG|y8է{ϙ v?j')7%w d1׳;wr [+=OAj4cWG~m@gU@ӰDEx3'Qlv[q~@B7Zfa&|b3L|'b3P5FNp`|O MVQ"Uވ̘쵥ɂ30GekKܝ+M_=a- kJ9R%eZV i Il`tXu,qS8sri770]2e^FeRcP\?O K W3k#y~3K7OT H|S0퐫6,#[97WyvWpc/zu~6($Fi'_35SM)&˝;Y5t 瘚+wb56Xa +Υ|+%ktw3zբǂJBf!DbEo/4/wWsaB?\A #"M3B+C=$ywW&};ul`RvIK!b0" {HV'=dxh> biY(osѝJ:95mT g?ɼ\Z@Zlz wa*4v,mRN5EB-\fux#PGi!U{2Y:-X 0.(-$.iapo0Phf`l-zk±Z(n'PfziLkUwr$jOy@E&c+햓bΚLc̴|gWV@y03lo^y2Τ x"9.!԰`mf14G- MO}4#g pe=\d<1̗f jWNj ?Q þȕm ʻ|c q'2װ^{AWs=5x8#/e Hp FZۈ o0=PVn lvKv:F"e K@fIh uђa,i>xntimɈe $[Ĺs55:XEC2faHY "fm ]ecym G^/۔SRWI4$Juz_ayxD>)Vy1!HʓD@y=W*RO.6 >OWHό8Ke3RË79N1x~nUkJ?P1u=ŀ hVg-$:Tј`Qm׽N V 7YTq/aTvGXXU2? ˙4u] +=`N?sDHmqZ >% 7IIO?86+pt Ƨ7yI4B?ƶ:ȸ<+p:wW>6 CRw^uRF{.Y ytg CrIN,RmhaKi c'~i&R &X_xlRn34P% E/dOs`"-HrZEs^=88.q!. ꦿ~1R0K|Rc4;,dYP xN!I<$GS]4 KZȭw/5\o߿+[ OD^V[-(ẖg8ETMQ h3H#|+i5UnTgo B`IO6a&}G_3c&Lgo4bMcA}4c;8{ha?cOW됔T_ATڈP\g8-l5T {ERzg϶;.Ctv=Xb:/S!wdU:Nꤛ/PLszf s>2POWE` Hēwt6)&UEVI,ddNd{6F{%yg9CwKYլ-=)YL|Ӊk2HJ>]di*w%s8QZQe-vE7s,뷙zq}j Qoސ]cryBshV (Va/hqb@U6RqГ>|l"lH֘#Hٺ e檂e}("ٮ;B#;|r~@K>3$+_f*:c/#vtKGD88z# Lu][5 7rJN.tԡ(fv+|I!ZsҗwQaXQu#1SL`" K,p]+%dr XhJ=C. ݬ`0ZQ4@6J#TcxD5?PRGD|TEQ0F>gT ];:{ޑ,C&3l [A>~8Zsn&_5وamNߔ-HSm!6P* Oʓ~R}^X~Zr*-ܤ [Pz|X̢~?rUʒc) ˬ wO]SEކY3}zw AQ SP*TV7 *v6=@òo,[ W2{+V`1=SQg-E-@V%*D TDda5qbrBˢ|학t#R(9-&"?im!9s8O'#=٤FGiaԦ=/rEa"YrC%s|MʬD/[˭bϏ%0SpsmDJh/[:^cgRk*p+I)+X%NxCUz_Sw/kA Z?=G2iI$]rOx$,^Ġo)<,F(]Zsn|w_h9製}&SG$ Du>|t MD c$̓PE5nfaJ\b&Hv@>+mD i"P# ӮI$ne*ɉ'1fO 5mr-ןl  б=ˁ mQ {1DD1: r9d*x =LDbפJ@Hmwt[gMe۩o_-WC̘M#RGͨDF]V[GeQ5XZ <;r Auj͙$A~`v;RU TȽС>4ن20Ck$w,Qd.30Νn+3fejY LC_Ԕ]5ϛ^y0:ogM]q$QD`oe3%mbs!8p]x9RK'{z9hH\5Crk5 3z?W@D&gwڼH9@>c P9v, #R1$<͗땬46]4-1]S93-ex=OFeƹ6,zjVvl Dž7_7^U7ثE05&01 #F|#ןF[آKcI{#4 aX+b_C "]E#jZ+[Ie0> /P)QPjzx˱2Zo%j$^ FCEr Y(#gĔ6!ۖ.rFF{63D&?jv'!иQL ~zbPy# ym2c,˔J5[eDQ't7Q^,nR Df878iPE,\GAtɜſѤRzd2yEQ S(SxdɔiD֓yR$J9{ԬuVmـ4s.d2šeaC'@fYo=\6x).̾ k‡)؂9} M9/P3RVHgST 3+,y}T*bo6E_f;Ж)}F"v6xX O, L#ӫKWYG-iyr]f}{M*ކ*``kQ#2T+{vz%5zl2Y|Mwȝ|XA;mP#G0F"puPC˧Ҽ 6d af% 99nOJ`۸r__\NF0kF)<{=|xR]^c*z KpIf^kɊb -CMj]koQM'g W9g%YJM[L-uʷHB~ZZk")tkKEAd)+2h}2z&*Xf͜JnzU'&* XnpGOY\WٹGU6UICd=[)S4Ab"`3؟aT)oM~R<"wOs`釹m3K;O4qsNYCHN7zmA ZOC |;ˀJE_.ʔ.ޥ{N"04|IؾE#ڛ0{,$7F&LQHI3h؋+n"f~v㬡RV9I[{xJ!/~X |l(5˟΍NR&@5|u=!Ѡc#!dF(-TݸT !GftVG%a@D*`duD bEՂ|#цh;I@W_8!^uyezJdDM;9lE(:`[REҷ>?{5(yw$?7i)gꠓ~i 6*?%{p%[;,ADS,Llw jSA h`mw˲a7XE":J9~mP8F'50%#ş 7;-j[%/xRUt `JMzIrDA%_k/+ mtx/IÏ'LZnN *LTI3}C (iE4}CD Ilt1{lI@AK׸!~!rJ~)i^ҜZDu vr)|neEѧԗy0ՍpRA+kaByϟ7[WWf4%̼t|[:ydLtVPfGD*S%<;#?R%l:5;/rEsӚz?/}F 4/Ճ7~9Ќ3CA9ZzRmDtr@^al[T?ȯ.jdl&h}PXKpP)-N !l]"bWu17"rH7!FJNj20WՏ~A^,UlX{9ٚB:1uQ:1$m(!xDqd&HF2kF ܾazudE7Xn"}pf ϔ[.wC]bugsfy 5F n }c!&xP&@,JM({tQAO+GpA˯(ZApU}C=N:`r:<pv[&0]b56.QVi /rxCcÝT;AR<}Bݯ.Ȅ@B)9rw_d]Y6h 80[ʚ֦ڇC~JFՅn ͊[A<ܾHJP/GilLҞ̏R_0|KB( ,cl2BmZTH4V8H+%z+缂`(#xeA [x8c* :1κ[3F #Wɥ6I3J퓎 U_z)cĹؿ+h#ISg-ƻS8-8':`.nG"7t|6/?ɑ%9\r\(@SHg'jP@ՍU>`RSh6rJZ%ѧ `ITz<Ќ0 K۹qy/v[]<` H`Q,,T  @bm4\L>"YX_* !B)ū;)¾v2e 2FkF׿jZ]<u~ Gu= #`ޘ|2 1C Shp2XݐѷiZ iLM+hZSeˡMFܛMY[Q <ӳ.6'e>w\~J@R:~j? _DXpk @& hqآD%H?/M4pj|C+ve0:8@QXD[_Z8NAjϊW4^sMۄlMv?GB:I H Sa:)JTaU0aDnV=4"wфT>&H4F^@Nٕ'.K$Joe1`wzY1D$D \V c4φĨQCSWD!\^Kg/қ `} `Q)"ƤH^[=ҿvKoD^12FJ\~SR%0y7E ඟ%}=-3gX >Q)؝XW ]?kxNIVT=i\tEt*,:)NnNeDȒػ5-3|׸m؀OA:;`ĠHHQ j4w;~P}_Zgsۀh*0~K߳tnGmm-`UMdO= 2:2 ](ugs,RR?(@_n+y ]BŊj`)&;M G2w-xC+|z9t45ڙuڛNs Ӵdgu#θ%KHPXylu&U^/M:3@D]lpi0j?T"*@jN> &Zj+jUCLԴWd>Ud"Q,8wGZy¢A߰ӣqW;  "qoCzXE^ !1逕6TxW`~,50ٜiG3Z㞰pKjT,?O/#ݳ[i> 'Vt2 \& uǓRȐUGۧ_*R `wmz7w0_z:ֽ9L_F72&TJh+3鉑F9@+Wf/鸘]^Mz bbQٳ9sބ<UmnzDuڬ޳lt홎DfKej0)(/nkFHVG)YTI:F>+ hΧ& rLՄEqi=oU. Mx5P%DP! `N!#vDmyz@gJCt1׃Q窅YʼOӶv*0"׋ꪧֆu b+ ^S,:A8KHmQ1ѵ*RU}BJ`WX['36ܣHIU2 Kf$33O=+މ~<1Ẉ#IKVv٬A<'->}n$gfx^[#N$*ao{%ۥmo9rXbǰ@lOlѝ8^揠&$QJ|$QWgJsAYZ2.Ĉ喻,bV$Uwbl(DZMu!; RGϸ8;@4+PՎVLެTkj xtI**!~StY?,E@QP -Dn8<`վ%)sZ]Bݘ=g> d3ti}wXKǺiS;`l'gtݴvp`B2$zJxaJJPB:Nr[_P@'ӄ%Ib ݉Vѫa 8q0A>d. I[m,d@[>`k۟$p]`֒z/d@C =5 h i肌+nEf . Ns=~:3e/HkG'SUX"T*r{.Wo -f۝B.zvŌG-WDLzQ=zdODpˊžXwiENJ˹j5;ό@C8b(?C]}l7gs#fY0`I@5VZD*rJ4U%BDCƮ|;]L^?$^{/v2_}q  5=P0ѓ*g2iM]q> d7%e:3 cUg4rlD/sLoCKr7"7Gc|R/7,ܓ.j(!6Q:"#å3%b@HU+ 4p_H!A-G ~q^X(GH1כoK[{ps])8/x7ZrfP{u' OLIPvoa\$:@ZeBltIeILd`<+|މx!2m(kǞV"B$amXdö)/6+q6LҀy;V@=Ur{&;5{fQ@1*o@3 0K4δCp; wRv΋){VM^1dÉq滊ܫ[gV7ROԜ( ٚW _裙L+xt|Aӵt[uOx }Y{>B_8\a!}JNxfJlCCIVkXɫe|3y=wN+LZa'81F7Ϩnjo[CmXV )M^$s Q%}Ʊde싁*|#+; /V '%߅%C Ґݞ *{e.GӁ%8;z6m7T`x ;K|ZLfq~#v%`:9ʉEb5Ѯ#mkʉU2ri'x10i܍jW_Xq j幚O̷W`N!zWDLGiۆ:CDPʧyѤO͡Q!#dnusr KJMhBQ«ꝕr|;ŀ6=CsNRNKZJZyDaVcǍ2U.rkb@"t$#@?XP ǨW֩/"ɯ;d,>J+:ۏwQKrt+@7(Ĩ l[e6SxJ)F-ٿ9!dV։xaqWPҰϳv(Yrc.~ZwtlSw~B٭B7>MOIyo҄ )<0iWNH \\8yB[K0r<ޜɿm 2jg&b|-*e1Qiyޛi$o4$:e[~/9M ̼${ J|N])6 s- L@e@#rt-2a9U؊Bh7A`(Apq KG*pb+FrHz7G]D25㦮}J:}\=b.%HV?A.j<=A-4SOn  _ӻV@~Lͱ@Ț:KLAm!ZP_!AXٵ):ݭ"#AȪx#pYRk_/LnIEE Ɖ5=f qLsOЌitRެĸ]E=V kCd(bxf>Tj@eTЀ>eLnԱ,Te;hl{܁ ޿X mʓԴ,&%5"HuBv p`.nΚDuc_t[YݶEƝnL ^HY 88* z@0t!ÀOR4d /_D'ֆ\$L5g@p#:h|VW 8&[0gGR@1ݘd3o6B2hFL%.Sӿ3TTY1r_Ghܛ7xҼ+Np[>e^Fv{!y˲o_ %`}OVVS|4QXJ*ã%8d0"I+9Exz, ge%W AVM]Z dLM2lT=.?+ȯ9 #6V9<d I&8Z J¹+5lB(fK@9-j^qT&De ( J9 lQDJ4h5dbQ lIb| A#ZLb`eT;.^;Q)(o8D'թxϐm f׮hZ7ǝ^ Ԣ 쪽0gVRxr'uƹ 5hז?r=NN]# ·) ՊP6_Sn&\\~ ~ӫ% K~ ZZi@L5#lP%Կ Y(->Ӓ. +rpȸ:/4Z(>O; ֑9 `͊BhB;P뚟]]Blf_*/ TNAI?ru6Y\Ѡ"C Krҋ}M"ѧT!M:w Xi`.L1.gbX²^]]fR@)7&zm"/*'O&~`RY%a fbB?wcj!&h52و`}K`F7v ?˧\[=)2 ^0!ՠesD&c &>r4J +=G;Zr% Ts]3 ekA|v2 XÂ9MvXt(bJ qvj aV۝8rexsMS䯏/:yd@5޵tBZ*[w,rF^x1hpW Bng:2YA88TփIV26Jr&LhU˧.ɷoֵ*J'uq=:4z_K`wcQw< he^uP ֡l?>Hq\OO;#X`6Cd*hEx`;f9%zzWx^ |R9|966MSSSFSYpςx^&_?]f 7*w@ MU}Ǔ8q98B[scZbx 6:ey>2% ̇<d6bNGvD24?m2p>۩&|R92^jEZ@4`҃\s9MSeiVӁW%jд-ަ'Zj3N#UxD3`]r:W YFFN@#"~75eke Fjn/E,<ipn o1K'3ps`.֚اM"&N8J5Ma$e/$;H7 CI`mSޥyto{R:o j%!I9N73IsV? 0_<{`òˊ_k꽺W5؏ +!SdAՆ}k\5% {mq}|yS3i=G VF{lSIF2e$CzG3c ['ՒľKE~-ICSP9:Q$VFf@uX&/LGwг( Eɇw 26_O˥sQP6E=KSu@11-CIRRҫ8ߏDJYMCQjK6ѷv:}_YK@2 ԢoCBu4 U-fao3sCKdDŽN2*F*;7g[2@/OkxyS!wp= +om|ǺvNl$HnТ7V$t~:Gqr!d$tZ%Zb1UKk2VsjbAm?@OtV\c 9z~p±V\|.2. B7W}nI1D5f$1|N!0a##"]mhŚqOrE@5#3a] 5^Cdj ]7\IЗ'>ki\_ǗPB';2R?wY jWOUah Hy)d̞oVjNq^&" 2Ao7JBJƋi4lQ|鿾hho=n\ڀڸM|]6gcЀ ޝ  RN$B*DVw{+~r@po V[$80>۱;b42FFɫڎӡ->E9d_(nĵlgUtz2tئ/bj*\G6d߯\h^zI.a;$g-o-i*Atm^j.@c-A(MF,?F""wv-123tET!Tr)jBeԫ}ulu_&r6PfZPk- [w[%20+[ꪔ)-gt, _ϧ$M Mf" tL'_rDF7B~#:`tּ'YCϽT%sr|!ENh2 aK8QqdU>2}|6X\wI2O0wQp <^d +xqC&Q3DH%rI;No:M*\4i8+zdX,to{o i' TfX R{-lΖMza&j"=]6jLi7jmG<7 V&':« S _?Lݐur[)^lQ-s)Z>HБ:@Y7Cңɹ#%Â-x #,:Kc4^|FymYм8Ymy0,:3zבL:o|%7]h=Ѽ7Z`pb8 ;0` FFx粒 {0/Yb m%j؇-Eh$P(Qձ 鶒ϙZ?>[ sۊ;Ŭz# ;7Z ]m9?W2O?@=vfo͸)~ڃ W.iٙi?{=D-}2#'2J[eG/fOdU;XhTdp<SSp3[G-L^c4lI[q BJf٧Af42g/ÑymϨDJbv bDz <^,#?*R*'uwN}fiM7.dz <ȌJ0(".+"X*~OuϏ FV)e@W[jAwK8S+"Hرv++PGA1յCFKWD0tKu&X!Vگ* W"/N>)#acDGyxEkN0fΗ4jh4M9̈B6=g`SBraݢh\,td{K?g ؐyb컬S]_a/}+TgZ5du^^ٽЌ)*bd"l{?WQ`Xɧik")]q5Seǽ)1bvWigp,/`9#O IЋ_{'&66AݕSCt&b>rb~ S~~*[(it%ptORyp\y ep!?WY@.&GҁuP4.x`ngCDZMś êt[uBcld)拫h5f)?ͳzFz`p<*=3ʳݻf"66X bAtdw{DmosCdǓv=pkI.qD| j穒F`@e@τ+'@XS 0jso,DPhH Ҁ!k"Hd=~߬P\PNΡA9[9#h: B% /#zjl4BMD冬y&hOi9 (()%5ZRQwu$4̋29f}MVgg4]>VM ;NRQ{7՛_=^eLxl05;nS0((gZV&ݐҌ9WKJJM[Hs M9` ^D[b]J,{*m i@MnU2\gd`i ץ{>rbaE7%SSҌ0E)Y+Rm>CN㫑An +wIQI,HTB0;t+V`xl(Ie4nisSa'Z2FlhK܌V)`c *r;T}2#gjP+j\Lb _7wёH$T>u$+EF(gٛ2# wCiU;@ۍ! vf$`8V.9ЇS/8;:>(T*~d)y9=E U־O"8` Bº+F ʈּaG/˪)9#D|!K`^Kl>ygh߷겠_oZ`1$-Yo{D]rP*J6)r–ϫ0Mvr^èx)8|n ((T9 y{~]![0huni.Ne!!pO&4A.7;{ʕY\Қ;S|Z7>`#5߅}n|?]]|#90Bf@蕿g&0FznVDֱ7ڨ@sTђr晅-&Ayl{J,c8̉A:]}IcZUvA ]cf MKDt2D }R{nYo3xtW{I%/|ˣgۗ&s=>>FHWӉB~C,mj_շ1$~xD78KBօE!jJe/ F(%8?5d$3Y%"%~1Eftlɧ@3{UL?n֭&7k䍫 rga*mCq?f/9+T0925=-xII/>37Ĉ-U:PGNdɷ:yNPOr$lU4eLr*k\Yˍ4<_1@8eđ"h 3k3V;=;b=Smb|]G%E ?O]b7 XQ|\HP]FjÕ0 Άe -L ,abT_R&ȓlQ`Xtԉyu=t8+.&W8)եkPGg)Z Gr@lQoT3KG+[U'SpLAMyrf6LHu;iܜT0yttǿ_`@V~"<aR8ı?W~u_byIc3Pq0rVm{T;X2f3$"Yǃ8- _gČ;0*`:.˴FAb3Mqp՟y9!4mC* DaꝨ>, g {IP'6e1. :~2I2Q=NvPΣĶ-tkecaPDqtU I-T%ʅ0\#J:־SG{ipsw.>/eFBńg^}E'VzX[̮5K7Z/~@ʍ3;=k9ݰ)Y4ֹ qK[aA^5 !dD>y8o!Y| ztθ3 1ܢS0 7QbgsSY# uh6Pnvѣq &MհcD."JeY2>K (lh{QP+>B"P]" kzǏEp,Ǚ돚#"YBE|ˁ6>p}Zܳn[M>$HEd/%ZwҔ0Ukxyy_Yԓ^ mZ%'39QvPOqMԏ'AuiQj^?\3c<$p&P3yP,*}&O Z.z4(``a>@b3 c$-n]>:Hl*5j5n#:]M zD}WʳWC꩘lrS8o#OSlz*ΰ2=́SZ\C4Jfp@&jaRPE9I6ن rOu LN8o}B-ܙ'd|ѫ]筐F^HIo/<%?g&&\]΃=$W:2Dʆd~5<^Hb&5y1ER#)oѬ|)/O[a0PW|e]\|,̺ap. ;Ȍa<0v_9(uʜŽ:p&C|l`ټ&g1 : +^Qz1pvpXi`UEv;%x(_~P=gm<.352 `wi}g6oCHhKR U.L2ΣW"!h' nza VK 9Y<ݝmK'uv@0=pTV||׌b>8M@K{}t3\DT>Ȅ8$cowwH:UOOM9|\e^FkV=[H[;urywG IY/ *X@yn^ a1;ORy 8+4pmM|\04I Eb|xTro5$̱WMTAZnL܎ۖL*TJ$0y1xDZ z "q6䣢6{)b|oIߢH)v\vh 9A; -хJYzSktŊ JhmS[9=< LOr'ZB.zã";,os8Q8L gf:s^hq&83X}s(u)3X׋ ^j6ikacG"lDHA'f>UQ9K@ZJUT=ۮιlӮ}!?B:ØM#٢Gį{S+IQeZyy:3c */dP0* nj].G5;:"~\|/So8PE㓿5z2@l!-JggƏ O4LW|[bs}F.~2M_62,Hpmȶ#OԚ9J]Ք>P ~xNu"bRug=_=Ts' סW^+aF$~r"GJ%@sᩗ^ē;Bs8v}F)r_6@w9Nga-6G${%ӊcASP2Z\ K r1A%l3-I6ng Xku@oe3qb@>]Ͽ7оakH<+iԇjx YnvE?bvbHjFQvVۅ\C]'Tٞ̓{`_"2UAC ˺P,o5̭ >f;t_t\xE|"|=FmKm:2-~J< ES1fe]HhpyWv F(% R7JPu_fa|۪s}-> >9ŋmO"څ Ps7 Ŗ-H9'TabM^AC64:8[Ne 2י> U1sH)Ng?ᯥ( 5apw!׸Y+ʪ Q D]zW~2L9fKj.b>=uN[;>KF^3wѦLHOUNzlqȕ=قDw*WlWCT]f/^M^g`TXҊb 8{F$ta2Q Q$kS4e!ys|Tm=n0/2fQ.;T!ؘ[x[[6wjM>Ď]QOdq9]v#pGEhDn|xinY10CMg]ۉ#T09:Uy{PH_+NvE7K#bξw.0FLEmi#3>Q2IT(ܙ: t wCb__&*OcbQeSKxPƂz{_qѴSd@Q.Ƞ$GA[6eʥC?J1~ 7㳾SI5c_Pwީ228b@aGC=~Xǽc\Ylz-zI)QZĦ\4̑B7X]XP(G^±pe 4N!V1GmfM5JxcTE7wCt3俍i$z LkV3{JC%(,s~bq`̘LUG<\rMb}>P[Į[qNr`lm pXwǪ]mdc4it OS ~#hJ3䇘)c]0y Fh X!uJM%H6m=HrFBX};>fImBu|)7Pt`Bt/|wmf6iT;QY^m~o ._?rrC"}Y,5?XSn:W˅VqʗwS\wzE\~a$*+,a:DGX?.>Y)e &jm{`Jnškfa٪<6!2_[aQQISVkSj'eիI K1]kY9SP[`>wb/~zs^#մ8$`P DѢa=zOcwӃe`9Xر.H|'"?EDqMYIr9Iaۣ`mGNUiif~e("Q֏:^=DwG]$ e-*w1>'n"Hw&G o ~SPIFɕ~,,r߸(wN-|7Zά#ZUFPӞ:FX.HUBSUqwؕut#I'ѯ\v(닰#g6VNFmaߛ'˷]w*%"ϏBzA d4N6xޏ3;~ nL Ʀh.{?O\>|iG Pթ0{Klues'ho }d$N쨋'2*+he"Q1w{\1 u/3bDYH l{jgЧrsB[ #FgM~"% kQ8T=""-E4.@EZ]A;>: 1#A0M?J tdyACF, Ўhww*s>GcooT!) e,.3v4Qx |̃qz~>܀01kQ|+bLqt?@,cC$N.EySEon3B#quFuV G f8u )!mǡ(Ŏxu:2\A Aa~ե\8@ƒ)|sPTΫhXs&ky5K 9oCC9,>B1zd( f.^2}4' A)],#VA-z+LIƱu ?st~v$|1$ՁK3ʅ~t ?l;u$w{7?^S"fTn2`pFU}(U@,~#/;owœۚRQqMĴ`&Q}Rǭ+~M)`TzGEunZ:~W)`-A JC.Aq(ྶAeRh䧻ݘUz=Rm3 515n%b-.v6Xgب6/~rɆ Mn$DŴ3ɖFK64V1+f[ 078{+P/>okC0Í4'-'W?OC|AWxhG#y!,۟)S^n)ɅdFXMD6Eo E]qϟn&Y:J{&ϕ$4u9CPڡ)z#mb)TSrPDf9/l.|p 4ն7hš5NHˑϐnd㷜?,&8I ƅYNJԺ,9x5j@\BLDՃcPYQy6ڔhrzd*M,g]YT.-, #F<Qr6BvMAg351f4fԧIEA@<\)!t nRy-%F4[VJ1?fVy hӠpg\i$P)+z*S%zP(n14p lc X",o]2m2+NZ"ctAh#mD7 ,7_ l)Du%:߇ۡ搸MYB1}, *}`'z_}j6J;Fqʞ a[\vnW8(2S|k~BG`mr##hꃄn3e*zKnsɰt٠8?%dAeJz<մTiH|{ w"fj| /R1H+o BdRsfc[ ,'Ol\3׭JsBJsA5.xXC Oȇm*($ et*L$L'1sv|xYA8iLuНc?h A(P͢)uRjs4h1L:' ^{UmޝG#Ybi )ڞ"ƑľBiB}^^|*YSoS0+Iq4 ʼuڣ@5$d4tLj.@s8(frF!Al d!+YNJ^|*Kg%d]$LߵH%kk7lkZ EJ 3ʡ1`S^KRف|e7"G;*Y\9Q6>$g*RxvJbID@aK,[wK*ENV2-L.E$iVbk[@cYWM$1ZMhsJ 5{r'JssJ/c8$O\fH* iv {㐖{ ]Ď6K7~zύq-1֎߷W%xiQ)錗] 6Ab-Gn7 \˓T_yeL3]CxRҮPgee;d-9>Ĉ1a,IL1CiQ vΩ#dVgt#gWK@d$?Xc_ј VчE݀ו{zYBVA8 ?+? r> R7HPguE Oz} ݵ_mѹq`ߪҺ~|<|D\y8Y^&&Ax!cAuC3%1e$hĴ[[2 Wx~Nׯ{.aXU_Vqh+Zކ9uE ҹS-6\}Sޏ2f zʹs)6|?c^EE]6w:pk2q'`&3<(̹YSs3%-OyGPw,AȤF:{ (D4H\71jl 0(X4x7sPAcR-(=|ꋴ*>pJe5Ӕ5Ū;)(bicV`5]g{qP9e,ipBrk0~ws# ~~T(gtuQn》qKVdrjs&/`? ]8!g=] gj[]C[M- N5gߖ2d$%iP%';4V⑵'/ fd2$"Zjh3)^eZZNmr̄uDѣ j"[ |DTRMN_sg-x?ZT!j:kNZ0gIUCrƨ'!2gM!-tQr3wt_ϡV&3/h.e Fƌ#@ QbpΑC{3hiK&zv0[j9ܘXWKY M^6kaBU9)[յUm>2zp[}>rKz{oTjﹶ:LC@);G_՚!Ywp!B܁# s.%ڕ;d\2`EW7VQdxYioA{O6?5)jKSWlgS״wn liϛ V x n}d wNiS̓퀘((P m<F/.i滾69mPX՞yWKDt0_l4 d4DX'd+{Q[zc_lr'yۤT4_϶͐A9xaw6#BGі=H)g~_ڍih=v6܍һq?vbpc/vԜIsE@ J %8Ī_B%DUfs+ oԈ:YQ|JDCyҋkdez3kMrxuAXf6>1b5~׭&<;/2;fjQvb2%2;lɉG_@ה.Yq&u.}QV; KS+=ݫ ;3P>ܥb>̞¤67'X ) -%1ҽM_Iڟ@>?䒔9Udd^G<̘rLg6~z,e`OBגMЫ핯U W)| :fцIJ޷B NyuFv傏A!KVfXdQuM3-)-'Ɓ-5ig,f 7 HTIpJȣqk╷dalB~#I͟4 D7G)wm싑y wDlJWI%.JtGQ~X^bp~f‡Lr"q%[fOD%źB ;0:{n>-DŽ|foRІ ։޼f .tuv`򊈻ԝ_^&ޱjLyfAV~!yݧ4P^jd _6 ]1G.$e-æ Q6C(kD>kRJGL J rópA7q-vb TOЃ]]&G<7/1;i*5e-2\׎<J:Fa-x*I\1bZBAbĤ>y;KTT"6Ʈ{/G:-1BR L<_6.22"YcLn3QSJێ Ntqɘխ5_/BDg3'tE0SHD@ޝ )xLW~x:x-*x%yr @N%ArVyá~6w!jT,n:ڒkT wz&+` #}QCpjJm-1]$h `e+fz:wj蒔36 INdUBrx /D6ŹǛ1/GCr/&LRdߤ5 zdSAeDH4G1ǠiEW{m A a Pƒ7+ֈ'3bAQ{S'+ThӖ4H_~O ݍjeCEڌBټI|p1p%A…CC#FG9?XX{ dx"l #CvFɪ gb48˘S&S 3_R3giEՏ3Uwe'CԆ b<*iJhYviG''ƖHs MX5˿`j~3|rФzvZ7s Q) XR?>b''D8ztJ:Y#)FOo.dxdfڊwPd1OWO1lͽrK \ lD8 -*gZN(G[BMAA1mWXb +ɨy WT ?3cQH%}2nb䢣k:{n0`'`3t)C:AdXlPߚ  ,>'4j QW;t}UWϾkAM*kkS&9\8QP-31Cۼi]&\>{lq![SüV@)%M<|mI'vROC(<8s>5UBc~(1~HeߥVNza0ՉS2N !!$aFxt~-/VstqO4CsS`Źɚ0E:G k"3H^k\zrmgſ&"JyRrۮXTxT^0w:핤Ǫ5ep8ɵ`L_ 5 ;hXZkr7%TRʗ"s-lTSw6X2HmUAƕ~;n|Q |NjDn|`C[ט.o zV|"쎼k5̀ <+ !zC d2> UsX&:GYeveWWiYx>W57C (E^#{% ALOps`>*I^0WusUmY̲]YWzjb+U=?gp nƻ ]},,ދM+<n6 s 2V|.Ϣ˱Z32c*t2D Tx1rrU?n!snEeXCtDM2ayG^W5U93Y:b;=l*XK)@_MdN׌)8j SA[?HCCx$1J{l\#ZQXs%|CYKNHk E.in@ xJv%JsacC[o~l l2v\ð:g^+05ZW)^ӮhvuŘki$S |[Ŗ}9&ÖWV&h'/Vz۱[ͼ6q< &')6Xʛ-`}9GѨ-Nfk"@1'v '$ޤL%ӣހݰĖ^HX:S;YX:"6Jv S!D + 2<;7ibWSaӴ@T}wDGKsCP]k\;<#q!"'L|BNn{!2=R\kʫKYH[x[%+Ⱥ~eX^ &Wl!8`/Uw@eTة!M@X[g6Vk5t)/Ń=2=Һ h%\SSGCKxB&iH8pZ  Q\pސ}w@d]ݡv#%d=U#IGXV鐉Maqe[,M x|\<9PE|;gu8C9!{~bo(,zq5bC7mh?wO @-MDBY9Wr>o2տ\]ؐ [&z2^5QJXI{mX Vsh6$ ]~L7/-sQ`}q]>4nJ%7= :d1Nסp!oGO^xҪ: M_,|-sxJho -(Oz{pޜ$q)E|I 7Y_;GC{y)W֏2nH9ae!ofD/G&n~Pڂ J1~|\i7 "8xORO}G =p0¡2M>CsTǓ+5~p.rr ZޱY\a0UZ;z.cŷUu gCP &XW;Ьwp.rͥ j/(ݜ  }_2:r5x0:/,x{bɆ;(}ӛ;7 F(UG@K2/6z|1~6%{6,B2w / QH)K0_j*&@fDz(,Ԫo?` xe!293,0+7ˈ9[s^?>\ީR&P~D&nA=ùW}2$ ;|ֳm KٸeKu L^QI+z+(2Ad,}䮿d;2}8͆ e8-!Uppdjݲ1h孔*':ĺ.N Vgj;xey6Nra` HePVD\=`kwpXH]+ulqF8}oha+=yILGyT\|B .|&S [zm[lOuv{8?ł{@w{Α)m<~^v1qR^>hB( ƞ~V3T /$eؖ>2[o {KxB)U!N`_[̺Ae=K-z~'w̰?J}:˦a<F<9>}9/5~jFZ`ƥIOdRxK 5K岿E5qH阰\HG=/܎ӸjaS&D+^cODKB,R#x٪J  ?s99IIjú0~5KDU|e&t+ 7A"}t%2 8[;yΩ>* LXH/cM`5]j<:׾Dքg(;[(Bv[Z 5BGt,B#Z*:Ա,@Rzv{+0_6Q'/29##!_^ӑf=W TJ>j38x74؅M{+0f` =Nt UypUJG.iSMH2k @JYQW,P orѥ^l{NLDA( (Af[I=p`o>s)\QN?쯲(9)5ުǿ +IGZ"trˠ jQ0!˂=?6e\#ۮl͓ϖN"^7[ (xnoMa ZseN*![A[s{){fDD*ebK&̩[*ŕYI/;?Mw,=9 s-p42VA_VV/}A],bѿtWV[5qQ܁GeEI-g#T3v8uLe[II]\)t܅*), 1nS.^4bR@nrr$؜JoDV ->2 LJϐ"#X,I|Nly^]'$(9&*A-719Fτ_,Q11nXgYGt92C$XR"}FCg0%WZFos XSfa&c7Z3"!vZrc>b~$'Z8E +/f˩_|Ed~2kIlZ@ԧ(*|T37uz$Gʅ-~;9KY>W\0 s6 JέSZ5w ΙĻU1gduQ (=94cZ̦̿2 >3d| _)'_1p,machtPr)Γ35JPZK8WZTe8ר+_+w.t9T Iʳ}Ft / kҋq֩ig6tӗw<7DӆCᶷUi@0=` n\H& 5&i/ވ}=@]zvg~i V=3oip JP4S#[}=+ kh6LgV>J0aGT=u4N47=/%D><,$#\j]7ll @nQA4бasVCRm"_,`VQAsW.|&.̍[]f@<ښuN|ې0QXϸ+KBƳۑK6K1#6e5ns@E|ܚ2^qXOM, 틠AXsY=Q ⏩"ot,Xo[x*Hk^0jfMVt|%Bg443_ND)yU^jT_ʫ[ˀ^h/(Xǡ ۈY [J/wQo\V(TzLr']ńy 0ly/UW:{U3*#LaH %C9YuF6)ۂL0=WbW^ Y-jНЮ:x\C[ /X5JTSBϱYS%R0iѸhj)h7/ w0lg~~du06.zc.~$*Bk0&{tCS~ b{(X/Exb"R-,4y u&,.qm" &ujAO Z/(!K >Q'dž-A|0Xpu[ .[q+2,I{xKP;nyMȵ Φv9GBkЄ@_f"4޻FFZjYx]M[!1 z:O闘0%v+n0Ћclp0eeAn9Imtt!i2&0E5O.'oPio#B3gh(-LFo= Y62teEWnpBN }ʸ_Ao#\?RљehpF4 \ڍHDb!\0D)~A ;-2uE6(+Ef#@Q s6=|0M7//e.+u_okSqФhpS΋caXtQ@TlJeT=ʙ"oOhd;Ć ɂS/Sy[/c_:MFLJh0ԣ[.[wP*-qJ xϾd>9TQ`cMplDwխvT~妥qȻ)q/#H_ͭ)_jw- TJף-rL{Jw/uF 25/ZgZJӍb>'n,(ض[n1˾+q*e̱A'Bj7{=O_Fv1lN@Lz]WS9 uȢ]P{9ŠoCVM{_^V2_@xۃ ${X ̼]tHLԊ@xG  Q|V_PTa>(Z%w ژ_ݣM]?ӵ;oHB i,4}kXx. pudgQt|nS|NrʘԂc7~W*E/r-ˑ0+eewqՠȠb5y9vjv!zaK#F5=E/ mhIZ +< I`pc/۔Эұ>jc~w7Ȅˢp~ռ*ԙ3 #I^PZs"/V0 1 I%\?.p7?acL,IYNUs⧖[j~B"VIzmԶ3^c7T'8!l1tw>eAt=xtB[HGOab)>ҠM&h{~deLp"t+IѿJDțbU%G __~q8֙P~ixH{eHQnNP23GҸ SF| /&|DWkujsvK+ԎIM>tZk_!@DliK6ׇ 1p'1OH@ 3s!m?TSٽ3H7v=Ā84พ up:{螓{ЧCm 'f.k7n'uJ }xL1zklgZըË WCHmt8t)$^z)ƓΖz8k҂*Yy`4 ˈj @lOT jJ#HƖd.dVxnBve5@?잾Ti>B"t 37mS@S="D gkQ6--jù1Ѹ,_A= b5|z֯%#Ddm1Yj u[0FN?ƻ@H-RKe QRK{QnDAp2]OUJb<<-NvE| eفEgJ )f4J:q N@WRfLnsOvFwX5°E)KA^~ Em0j“@":D`dp~Td1䢂ComwGur/$C;J*Ps}zXknO9 oEDyI }lk? >9S̏ P(o>j)vgƫy0O:z Nd'nOXfisg)^SJ\+9r kClH{A ·{e2]±?1;?{;k Dө6R;2|6b;MJ:-ck}ڻW&'͹$ @`]i I)׾]sW(-ұ%I&K\U3q LmY 4[[elŒy5#rHK5$ϻS=X1*_ߋjMk;ɆuX5+~J:a^f*%P ] WfSRo.xvɱ1G~A\\y@H*N>hJ-Gõ]K`Ϯ_ڜY 3v=h~{ -WW`73{TT6cQwN80w*Hat0x<Un0oeq)Y]ӻyexG_5\rH&[pa,5wf ]Y m`Tqxhl[C#Ɍ#9, /+(DN3l!| ߷Ƚp}7w )SQ?FޑRiR#l|ɻ@On;hPn`1x+FW$ioĘ; gCK*3.q&G^U:4bJ:^C'.v?!LXNTU(ss)$`nvn2*霈F< box4GyԮ0"MF苆)ĴHnZWJgz ω ieı,HIrf^[a@sx˟v|?m?ŗq!-O.)n3Ћ[?^Hy*c5eNE@ʰC*b-g!{ c Fc&w5 [EDqՔ0}| 8׮+ aa 6iOXCCm~ȬYڨxDb*ܶk&z!41btmj kS-2ٞeo/n"cJJ\/pVEӐB fscAvM9s'!$ʮ*Νo7!fх '_&% .}BWe:t]=̆#vt 6?)uGxKJ5+bDx[껇nΨ0?s2,Uedh4uǟ釡o?Ju1h's|Sn[c|c NZ !rL nNk Lhȁ %y!P4kޮ<[@RY^e([3^oM\^0F e֔%(2(vs)"˒g(G!"A_v%j݆7>5KƕQzBR#F$pn-&D%V<եc30Ȳ90Z49<8/ owMUWb\hya> D,qZ.dZf ©7%K8(ooeBx,8 ~I1FeB3O믇K&}2휦܂r|Nz Nj#8\EW 6^g\~W9*@GdGj '#5vt0&g:0`Kge'NYNʵ6b%iB|GZ' Ym@dw1: )I1KGg k_xS!1-ᶖT5e-h #( tTv\/.@roh{>w2ɨGy /8>hN~]X=+Ru}f!bv^$$g=}.S6)al:Qruߟ+q!O8ޜnUjKlko'Kiׇ½ ԻYTe6}y5m]p@';?4U'_`YvgfK0GcЫƴZdXa,H6`${4 '4? kٓڔKS'_J4 kF+Xܑ(1zTuA#^ 'sQрrNWZ ,s\%?I*8yYOE{sniZvw]'1pS}PÅ$ ݔFڬvJh"eΈ.RhT6AT{dz@#S( U݃Y!-rL4BmKWԴM ͜|Vd\Px"ٓ;]Mg}TqgecOA1Ksѯ7Yzh a [q]lGɖ zBec]]Ob +tS:зX\k}vb+E Q]`꼣r0=2Dn]Ր^KN*Ɍ` pdFɬC V#AzNFv!Dİ?Ņ,Ozn\P=, 4nG}cY +޹>3e_@ og|Ĝ/U|/ M#0@Kӕ6lTu;#SqD(hPΛu03zx&mBAZSagh^㫓?&Jݹs08F#cϯ5ˉ/tQLפlYTS2L~߽95mgٔtHE0dE> ь *箦07Y;`{IT%rKl)P*4>1XXJ{ 6JC%&퍓ᾛnv\Su؈#Psmr),3WC:wDK4S_/︹x#mD &H}M]#K "?ߑAaf~8xuBeh+H=0 =x@RG=$8lÓ2NaC`ykR@[?,u@C=P_-"P#VO9U:J1sa[[X`$ (9JOQ3Ȱzp<.@)n[R /,nQ BeYVۘ\\o\ NV[a ulؚՠhTq*)|z~Pr Sݍ&[)]ig˶򈥖LXw dP4]$>4r-M4j(A:}zm ˓",[Q K!T fji`G5޷RqZQTFl6XدR@~nzf͐t{oئJ]S<)2՚_R{q3EՊJVS>5.-g/z_p1},z%1mYn7ؠv*dJUfxyH.SiIwt[˸eg-)$\yor ^ˈ"HgŰs,\`vO2/>c"~^!Է|bզFE%cݔM[:cφQNԴ׼Tp{RXb%MS@TjF-,힡{o?l_Q\7#C-(cRHC<$[uwbeO<"ÃĴk:ҙ 7i=?lb&Kau ]53mc}%P<㵓ް簇QMUGoi9(5(/ӾϽǙRs< 8`J#xK&T TyTQFM{ºxFkiJ mRUXKӊ^H={svJ)d- $xb'Ht0qGvɦ4'I*w_:?( _oGEpE.6Y$ă9Žx2ߢ68Ŷa2@q9fMoHfڋ|jib2!B^S oO ȨLL&(ۻIѷGLͣ[?;o@X܏7 ~$[ן 맂h>[j]go?Q &ƙَ]L)-Hf,'7Xy:;wJuqA "9Ww'bt%->n5; K_jt wT.]!tp2CKp:\8)mX _b6%`t1!EY(N. 8*kk8oJB3~kh?RZZlĨ!сAn"ĈYX J] j78p"ծF4A1u)h^՚ G;,~|{86(Նr#Ge{37/ P|Y]^N~ED,073a*U {#ZGÕ_Њ9[+؇tG^ <+urg+LKZقj<tN$iu>EC7ŪyNHQ2wrELVFE9</# mfih@e/˺shqϐRQ&CՒ‹VifJ9ȍ<8b|ODLn ZD>:3ң GԚG2)B\}Vo&13PNcMtLxnm 'H FWY ~`UnNl{\mR;-fmD|aٺ8<5r 3bL"nn11d~xq+ wj'26:Ȯׄ:mu5ZaPHn8Ɂ͏=KEe; GOT,=f6:kdޚ8sD'G>qdU[G6ӻw} vx-KA!DfNl ua)t+:ɍb{8SP 'Ŏb򃖪~2,*'+k9[ ؽ7/7Z2w\ƭ_9 F5s~ǵg6QPҽzBYkFlF'!GQ4g9La@H9X}E?7bb4lv.2zt25c򓏫&,<n] ٫5/7򶸱8gJ,+D[%k}):%9yiߨ~+D{ٗCs0NP+5a6˸a0;n@Z$ks 3WGIzE mjw-BX)#+z )T kٖ 1FϬĬnC'Ѩ#t_7b(xuɌd:\ [#QL326tB/ Dm)럗ogх(uS4߮r093ڵYJË|fUǽ"]{ILC$Ҧ7d} wռ{beZRF֞u 1ahwk20'c+1JX-'zc3Z,)0v2j&Eۙ@ȄYhb:;-K95# 3Hb%O0:#Nwbz|T+L@(\uuC HѮڢq!|]uDت5շQ`蹥^R2*\W`Z Y_>B 5b>ɧO6Ǫ ytubqn݃^l“Q.r!wYv>6{S+Q`_Ϧ6ߖNoSSLd|}lPd/+=r#Y I?,ǸŦ}ܸKB3V ^,cg(yK&-Z"A[`eD.Պo5PW"@!ͺeo&5tc8=j>E튿gv;܁2g3_;-CMoZNZLu@Nc'G僡OYNO_6$zB"^B9PKE& pdD~hbIOFhHĬuzBYşiro])`C03φBkvwo``.I'n;tO% 870ts:XYS3[]g5z s;B3 k"p|ҙ~ZԷv$hr7uy-(9c_sV樈7+T}kfäm#)@kq~Ɵf'؇[ u5ek\DjNy~K8>y"o`ifTUHÔcE>RfB+֔?7pa(a(Uq*gH~TbU1 `c&=zƀcsiT#V7?FTy1ۀ Fhg^"6!NxGPO9\{N)@,UsT@:IAe3Bk\ىP S{n~ˑ'G"0k f<#ip{ V#_T0ppv@^N&i*Y5y%V#03krM9&ۮ7"V׺>W]rޛj(.qRuEtY\ZT| rڄO<7ܜѠ@f\죺Ǧz.xZ` [<6=Oس/d"ҤHkn_gV^5G"', EA. Fwykpn6#w{;},tW'9//RQ+`4Y;KX澲5A,ᐄX\1h  >aC~>gÏ-rX MVZ%gC&cD*,KOjM#*Ղf*yI:U&Bzy;z%osH2 KQs'4F[Vnl' JGZ֝I&AslAlڟDd?|; ޙzms8`ڍ!i/,8C`( x;;*uql"VG/r` |ip'O !i"jRɄRs;} &ϕ@ڋKUl[ѽ6\>.O=vvEh2R[Ķx+<"tJzSfCX(o Z\SYhe1F#RO f}ˑ@uNTN[ 1SfH #6:_dX!eb"5r8l|C|Eept Z9¥5h.^֕FŻ)=NJnwBX_ _OC bUa5}x`d;eڀS y*ї|@mBx}i [,'v;Sd+x572/y5UXd{ɔ&Q_>NX`ۡ$5㣂2 X.I"r_0P SˡȄavR%=aAj\w_L-&|ࡠ4iFpⰘ+NGR iw "o"pn <ᩬ)b Ť}Lwcx5& _!0 c K?" C ̐F*Z+$uI~GM_(bB(m)B/3ZX^oHH#=Vǔ%YP`h;mJed)vc۠<֛|\|m/w,8+@֕( *}\Zܮաۆ޴P'dxy&7WkC=!ZD~n|0U`'&\dfuK$=ǭ*k&NxGjjv ):X@~7q5t@Ɉ<x FpӐm˲]( q}.}.@j0h]ohf0TFGQڰQ QXUtyi.1c9Q X akE -';8)ngSq?49۸>IU1j{HRvUNHm 훇y?>/ܭ_b\L;6w mq.~:;evr\}ӾB^tF8/P۪. 4ˠT'*6W"2`iUzUH*&bqd2xc$ "М8xS|A}XD Y:jHa`;R6B p:Oϫn["< `ӛk{2-RJ}N.|kFw. ((QovRM IX2>}xxC:ڷ1 8JOjaVWHBUۨ((P|jokf0cnteۊtLOQfbW¤8~~8+ᗯy+媽ĉ z\̜!pNaRۃ&P[i+Wt&X`eݦzxҢ&ʃc>VZF6A0Vgiuޢ\!+ aG4@&IK׺1 BOD87.qB%hSx KtҾ+YRs`Mt`1I?:o@rMImX_`Ǫ8R%R:ZHaA%(\vHzџHM1\7"#{+[ ƻd&}U|ΰC&0̩2aNW8DjA"AAl"7\T1L0z㠾6x^p88raWcs,947[R)>etlUbghGdͬ Rs?kN1MaE[6/,G?_Scbr^*ĵ:E"-k44RoLw+>H)rG#O0w`dMoOxI 2Igcn.r2_K?TՌ ]k2G]nO6-uO];i9f`R?C&'!U mo}QϺyE IH7z7\B G *D%Heَ]!C(ؐ|"5F3~d7}ųoSG(k}rAL6җj4hbt]Ii72ޚ? %PVM ?3X|21域_N&> lx2ʅ7[ 5dHF6RށeVr VM)^xvKt6IA4ˤRڥդŸL4!#-"*v @ r+z; kd7}QrrlVw. ,f|ZuCmG z]em$Y[.Ay{͙R6YDOwDm tq`xbɏ5WJM"2~s10mQiX^=$HMu|ZZ2VJ>}WqT+h/˕w`G*`Y Yhq4(DOԜ"X,\0WlRNH|.:RvV.7ƬؽH 8}wL=T8 . r$$cN-Қ}zzw¼^e;XpNk އ2|x:):U/pÌFԠ):N(CY&хjObpѸ"aw>Jekao- ީ6ɃxWYA.8Q1xDQL~{/z3UnB IOJ$.U"ސԖj9a{:kHSGW| ]h ܁`~} ΝN8v_{pBݠc/1B)xIXzi9;r+ԄYŅH -/{yԠ]쉤!oUe;-H:gp X=| ! ͓) ZSH T2mgaB&2ĘZ:RX*`X J.@¢< ;um( )h@'j뱶^mMEaQΥeuSiGIevr+LV[u)`gï˝;*ivW"QvoFviO䗈A,Eob.#8Jlv&"l(;I&qWK sn +M (N]ǾgQ2VLZ|ۘ#5GNQLt.{}&e'mSWM K1)Il7/[f͎)n<~cF¶ ÇS+ܴX|,\;pFͫV,fԁZ\mj >6|nw9ݴ1SbTfwe>e'{<iK7Y-'%̮i{jadOd6R|s&KL]V]jw~phOi m 1Qi )sRz'ahބՠZM)N&4WW֢;!i"O\ީ}&3w~)ʒ(wl9ـ}LNX߈D9q{˙rrb3g9>1ܦ_WDƅ35!T<b"M QHĜԅ9H\X/Uִ_>A z0háٚ!p{)396T cb\G95] [a-þOAHQ|V*:7w&P0(ᬑjS>!0Xc>gԺ4./ 4"q$ks*4AڬbjuftHe/U*]a8Gs6&jWzc5daɖ&o .ጾKʚOI;Ej;I [:+TJ&-"9Cl2i4#'VZjpX>>pg7.$rq,m4XvcN304i>My%׿\xA '}FP;g{gK)Rģ@j}k8Y'C+"TL.퓴\lV۟Ri*bM@|&'לOu2F&l`덥fgمqmLQ0C$ݶ:jߔ`Ghkcl@׎LvUʮ:UdԸT!nR"ֈa E1zTKSfh֠1ӷAڜC{9}KW،;5B]hnUg3rSõn9#ܬ i >1Y;=3-%!BUժ̋U˙,"Y])NCa!E,͠.:[e ; ԦI| ksx-c-|L'$Խqu˂KY,\b4 A*lF4@odC:.e֞}I. lñ ',7Уi=oծ@.0g%. oT}T]W[#V f\x6戯6M9b{erO(BvM9e$-P|Jz:M9MCZh)LB,,PM&fV|-m)_qcfr]PB/r Qe5'UWt&󌲈)𓄟wץ:) ʼnΙ}_QL>;uA r3qKW1f12 h<(`8nenvGͳxS;NW.$+ Jv$ӌU,/!n\XQh%#?p_͆ppґiFOH;Ym>sk!<&:b%s<_x@Ī)K\X܍ 0.py/T"U1q"[[6084ӣ;@3،Nate%|2)oy_ $HBO?H񓈌nj@ 'yG͢ReC(-۱ `.'7y\ЉAه\[`ʉҎTxBMo3=PɰaU-}UϠJAxHD!bEj kpעZ; C1Y"{sq1LjaO [ Lݿ\2gQf/ EFbބVp#Zv}:Сd_7Oit .n@(l[aؙ$u`qгm` Gf㿄y /TAfCeS%j: %B-9%P1b!;f*EdVNn7GKlPP=s9  Vr2}b%.qZ/m kIa3?&S0;R_$x74eUNTh{m.X_ЗK>cQ(ߐ~:0Օ-t D}ùLeRt/,\& @{F }O^QriX/Zs.tt_,@ņOu`\*nz^bYu&7ť*'= cOq2 S^TܜO5ÓCod:w!]< ۢ3. !&[D|onW#VZý3SR7NJx %O@ho(  e18̰DڔqBQCIPQU?Fo?mu7I Yls&ř /ôhri$Οn9zTJ## .1ؚGL8[)I!.\l'#̱h'\ *V"\^BtyQ {)eIKCd.دdDeE'd3iV7oFn$%u¨$Vض^l>_`ׁB\ūB~LdZy\W:Y'ΗJ!R[==EM +~/;5J+ 724h~'~a#b<57LH:+N< 4*CE5^E`BdfY<)tkOĽza&50rMmoGx-ym)n-BEv,{xǻ^Nl:+~1T~5̀.rJ_csH* l}]CXШ3,-\ l|ᔢ3?0.U}hI?W%lrgƅuN 4#'T łRʾp3!*@Q6lޒ/EZg,0Pny$q4\-}!`L@~g7$[D1NLp7!E0!Cz}%6ǡACsH1SИg|V[qG ’6k]#UjN-T8pB>Ő7ʦB7[z$耤S\z# #ë0U;-K2X|ֺ SX' 2D쭋"Cz!$JZLg@'YKcQ~ynz2"X[amCe xT,DbXb՘|ȷ'zDS \AbmX\L]ѡOiNr nR$ʹԓr+0@0i0#hD z$Bţ ;Q}v(m9ڕ[of|981\(8zQb Bh=<jc "6pTY*sB}#z-'SgoϽS8sphQQW;1 YWХN*E-JŬn:G;zοc%VOk-N .%vTq4䌷?z14y:dcn-`.z⢿ ڥn'ĩ0$`urH\ a:u~>R![(zG Qyt| l~trclsy|;$_h&P:Fo` Bj|)xOqrӚy~YpmT9s_hf]#$''H+'Nfo L.3ኙ‰˱oCƍx֙T)L$1 cM/$`uCtS B(̕oNx1[(cH/uhW*WHHjEdVȧ*ϥ!_+X" .?M,9&I bgّcDّ SkcrưWUí#M`ا$?ܝP3(fC=:έV3!3޶4 R`#Pդ|:!&#NA`1_3tCVLyq[(v>ngNƛjnGH*i+$;R苉*k:>fڍ',vfH&Zjl+{N\%)v1Gn^CKW>:m b}=Ž3%5 `/c`͎B.w|;/rƸsdm{gTd2y{hTH`to`Cu>90Qu .*2Y4Mo vIokt e?K.d~4x:] ?Y %t DԠ:X) ?-Je{bl{L;2w#jErK֙]\a+,{.m=`|I12FJsQ2䮶םjx^"G-icYaVH{ɲ%DCI+lJI9tKvy 䲃y,㧐nβS/`7+=eG+zt0e dcn_[{&FtV +骁Ό%k.c3Aa8̆0 tDU$BB|{#:$ Lh,a&-l{@DxT:hhOh#/1ԩ$_tva#ѽH߭SWDeW!iatkԐ<#$ChrڀP*JzkK>!#$ǔؙ f8x\So y>tS(~s-8Sfj5EH/yNm6|iFwF_%%}VP/G@hv5D%=!M5_M=xoB~gH|pN1E7\zA{PSWR9Imɒߩc Xv xۓSh;'e4ćPNRۋ9 iYpZw"SHKد08h;crC=$ y.7-GwnYtϢrR(t}Gr>]=h V %; afs!(zЛ QQӓc`GaǷR@W+ ^IH*}y{ojs4\KG7Wn"9$?/|u!b C;>x&'~jy'PUqԨ^-A-#V| +~aO3ٰ LZiBtxh $JLdybR3xJ)+Pi*;,~^ B k(rC]MGJׂ|h?Z!W-oê̜K%zzc!CM wκ&yڑ;~ A.d-C"`SAhD s0AKLr1Qʬ!V*r gL{;lI; p=R!KvEVE~bKp5m!b0װ''~}"QMZu%ājg3~ԅJݑh7R`10ȶ|^ÈpH<,/<9.'+(d;/jd$R7[dث :>TӵDxIR!rs[ vd#NJ\f18ah T UԻ@L"RHHHPѯ h!3R`@WzEo˞&=e8V9 Y}3l0YJwNeND7[QZ@/fq*#[tS>^6J3x җޠxL0꘎NtwI.e*$q\2x;^B%u=< 7pvk RǧKu1r sZ6Y-mCQZ8-̙نTh2Qo|8%jZj*Z= >yG6*Rt* 6UyG\fޢ۔hfdm1EwjNRD讛8G LЈWKV;\f2tHEpca4ߟrۢ4;/v5DGt`j۸0 Ba[ws,'1s+8;|Ƶ;O,,CwAn 9Ύaސ62$)RQ{ R(F 3 C0@ǟI8OhT D6B~Bn}O2_eQ$(I 5ӳH+Lrꯆ'd@= 'QG**|LW,b]nry-T*q߲V>Il;x^l-e(,RiLYڢ: C*#2m W0R,-UJk:IhbUMR ڙ4c;Ά1]*8d?k]f~IգoĺtI,d^Ɩ yemxs ]PUڟVZ -x2npeĦN։L160Jwd@O9Wךh`~lFLFB~sҦ>#Pby4EtM#&BG3VCzaAӗ4CI̊>Y*S ̯~)[b^g :8\l`IsowT(/>'w@M~tƢ_8C{ Aq$kEV_"$:235]ɼNBvܘ>)%>ԢON` _Q1Gb-{9 feӘl"㻫PqR`S,lMopX`r\DݜŁt s[<ӛ{+<`a J|#V7{}Ǝnvqߊ2na:l%:Н‘;o(iե/v\0/MR~?C\4;E Ӝfӵtm,%#B_ d,b 9܄ھ&bAoSam>ZmVMF`d q{̬dpĮO>pdrFi֋qwgWHq*,٘ى䃿^/ىр)2q6՜ZbgD`HTOha&gt#Tf*kh'#3zV2Csrs,)11klTXm60W߸_İ߫  1$u:ݔ:K.>DX[?=P\E#"d2`~Ӎz~mCE*BV5cK w|%1 ɤUt:edq/ʟxo'̲ h=LRBKPXtD[# ghF ї2[[4c?G -`t_f ,;CMyM"hx _QGʆ'ʴOOaw>1R8zNh*e |NY oQgIǰ FCZ,#s}38upDbG^`aªHuk ! B8cr˨)W);MaTؿ? Py82rLTf|Ā&@Yg, `j&OHsH~~[^@iv7bAFx:ĉY.Z4&}4&yQ#D<tgĞnwUN"}%=0c`sc8{|+ӚP7ݱxvP<ڨHaDXPioD=xa$Z\.Tױd8먫ĩj3ٹe kaS0NDP(!`̵], 5fk7 \(c.HaܵryFF+.`jG//`iuYC"W45ҭp9iRq?gmc6?"~ΊDFdXIds?_W|u_cHAIݵ'zs(`c4(p(DwRJ^i]8DgF[AlV>%I)% hT, Dyž1ݺ\K\t Kņ#gQ,b׾#zk@8FKP =C!dS o-MOhwm˿SfFI%-< 9]A9tO#0@` twt|. 9gM$ FHQ͐spy1>8`a/𴘎P|ttX?C b&Vd۳ `羁JWASRL{0~TW7GԟGD1s7-dO0~- JҜY5;A EZ;i19"8߇mUXК΋>V,vDD-2 \D|.2}FYa\q& $sj/ G=ӿc7pyE#Wwߞ',(x1;̝;yQ SBΛ;-b6)R|q>&"0ahc&3FFMt>(|MmNl{46p8`"I.6է}[BmkXpJ,wp)l} Z'Ű/' B)RV2c/ѳd>>et):LGϺamDcLCxKXDθvܒj?Ts]WWQp@@[X1 C;Wy5TiXǓ1桍 yrvkR-$N\Iu \s/9O|g9 q>Xp0eK8.JW-lκ <2ix#Q%%n|j+()O#w ݛ9Uȡ=70{J,c󹷜T7De>fν@+ u,hK*mLNWۜ;-_0hcΘ@b/yܢ Sa3ۖSܿL6~0WnП= D$J _%&`\/An)kI.KeW޼Ns%%]gvL澞M 00r})q0eǪO0,@p7%j)\Ӛen \},GkyMc4  n" tRMyO(^nK;Bފ6_-F:HeIZ<=Î'P8 ¬qPJfE :~@mEMt91*ot"6N9nˇ$;Ç={ !J3P~ ,:P\V@gd%Էyy[uJڦebc~2ŁVH!XӋ T& n6ʼNfq) nq@A]t +)| diȡFLLshD(Bs?F^eQT eA7 Q'.$ Y`3/mcQ~gВFb2E*Y]sd/(AŋAm&ݒ4-_jcHusukW Rb1<'>M`lje6Zu6 '0n MUm-:'ϷKO#E ¼" {a2s}c]EňeI헌4T=X? ^ƨPs}Ϫwt&==@hZ!RQl.-/ȹ~$/EEzAzTԉ;0J#7nL hA1kxVڑlH] E1ڥ3@t^)#TdLP~E(8/,-TT*j_W4Iݯ&71d.-myV=n|8Ip٪7S럶rJi_5'v,ͧh`G{fyѡ3\YGحxa@1U&ryP])F| M^Oݪld]uMUTU{#z.>2ZB+@ݧ_Xj_+Y-EB&p"[!޵LTaB#PJ @A8 ͐!8.Er!',\x.2WzKxZy !PGsP8g4NVwT%CŵQO( \яOSfe&<ؑ-,dxDW*ٸiO 7MnBFcmU]BRy"c70%E4mjkiڙQA7~$ƶNiϳݳPUWţ ;3Lr֡{y[!j[ ЕsQ-aS$UOPc6ljqHK`P^]r_9lGvU;5කEc29 ,/E%եJ3gMaW: cY[әJg "1R+=2JS{0HԐkHٙywog||e,Ŗ5yMw|ɈԈfcq9G5pS_FC* RX/lƮMscbeۀ)ި ag'Ŝea w#@yTԯ)H>0c`1&@o>!'~#cxJLJ6*** M"[̝ )H]g5^Tá'XGǿȮERTc~4Bco{|2A.WZ< Ivǭ<wpc6Y kx5Țiq7=rK)ћEHA g @HxtO;Bb.i17{ :Bz  C1\c\coG"&G7falaTzuel'ZD []He^%*2ނx<Ϥ|# H1:#BIQEy8f:yMZCZrv$ G/6럻˞&Q'Himڐ%b[v̔U\J:˽aHNc|Y*Usw%$, @fXeᜌ NYU⾫P7p̝76VZPڵzKM#屎 4AGdbPR?9pb_ldfMx{ *^o-5W&Ջ ! N)JH !Nה *yVku (1 QqC 953ato̊P/8i-`A[iX8(40PCX8IZʜ^V񨼻Xl1_Ą؂[>,3} hhg1O)Į$މy4%erS@aF;%5-!N[uf5-T!բҥ(`-۰Vqg-dFUInCso4f陟,p/E vDHH;>젱7Q:M'pJkt/^M~^`\h604\ :ԎgltX838 >O,wX ڗgbLjseXւ vDi6P۬C`E" M {p⠰r/ILa ^Mc#_nMi_6qD6s'.+1!ceSJ\\@{;{ ,ދc BJ(-<`Ј`:-2PT.K%09 "+PM'QR W6qy+/(y oK{atڪ|ԧ'2,LCP oj˰ǯ;6Q02W'RC4SB6Dʃc^F> !Կ_tR]A!Ƙ%IDz$H]=@WSݨ֣7'q4@i [ҙ0<͠F#m4Ɛk0{i`ozԄ$)7E sެ^A{jZQUy݈ ٖwq\ NP(h?g*s,PS[U*'|/D[F2Xja)" Z{A k}1-u(,f PۄcQ&gA5aM(i5(gHȒk*USrBBNcqlNSo "Kȸ|]OH{:5Vк*bjC~}D5̸ֵʱk k%܁2ZӁ 'Rڹrq5]dpAك;2S+oQ7r8#c{> Z+2ZqFD3Ii[ė4x&XL!?~# <8|/)[ Њ9ˣvB A-CZp1g@U4"k:L*x{k'ɃWNƵ64sVX`iiKա㜺E]sR[6^&1ݼih@mg!te}eGCK**}1 చ!M\z{2+Dً;[%  ɴkӂբ#R:,>:uVYKFij m!OzOJח`*D͇GY+;'cPO-gv? XJ'W`ʩ+^ne^9Mc1p2W3Tʳ";3Dbek߲%\)E薁: lŐ5mL=a{ݶ yk;Ҹ Њ^54Fd\'֐mLћ3 `݂R@EQ>-(-`'pDnd{IDB%z iC_.]3wQ/2BEZP >\;[x)!mC%bYA@J*j,eyz[NIJ-$nԗH שat@cBJwN_@2…sn,c [.̢LNul葌D'6Zϭ*X?SIn;L!dU⿾mv0u,\:Tq*YaH<, )Z(>~;ZBiY!WXb%pKW}t%N!z_-\rNF4\H]Տ#/1?h:I2բ,yKÓ9~ZvdV[ U/EBaJMHl+.>hcABp geX4ʵh{IE=r6uٵeUVt8v4 mB6MH2[-, =ՏfqYkZsНiQUKe^hpvצPYB% )^E Z砮P{n!0`5a, JR < 8$]"a=Ȅin}$>g!u!P2hTUU|ڤK" ⇎ e'E0 G/zFccz29G>" j@@mdžjRމBZ?v71r% @!9B :(|]I\5 ~iE-9 WFpGS\PթE縂d.XAhiRjNbNW3)PGrGN Rp@R,A̭9NW3VFQKNB/촸ެApi Cn};]!aZ4բxJS 9KحǡⷂA2=9,{:0^D^>^bzJAKn;lpmyhVgǩ M8Gb)_ oIE]ۈKm58`(r1˱wA Vh~Ń6hʛ { BBdp?;L9[u82Ȉ/O۵BӢ4FWU&3>!o7<;cN%6%j]O`M -_Q.\hGxƱQ~˻'P`!|{DO|zk]$|v S[h^@2=fS Ml=DH#Qߪ",4v/v5@fT8G֑6bVU;r@pؚ^%ּ4`8ʘ2+eґKUh7TPk'sO/A,NuEsρxIsn!mV4(`\3.uS A\Kn7Q/v JqV-[[-{cUWc$P#3J9Lk + +|pY/h0lʣ+)U˄@+A} # 57ɫ{J-| ъ%ז>{wz)W{JfGH0ZL^ԡٷ- FvhCf@3Њ99%u=p_.ZQjV#ՓXz+dh́&b3T߄/7!ڧCo1w5?ڤ/1`2Y[$JK\A eC:tNVDI9v5x=/ i7 ΋sm^pjPą~CaM  hQM'B^B%82 1zg'xG ӄtS %8}b>i~9oq-ь]? G~9xv{lwXRP B$|Em⚱ o1hrTvRȻ.ݽ#ie4{6bWw܃t|yRPͺ#?9ƒ+pU Wp7o[I)j"r#{y d|Z“뵿N ʊ,zpGbSe38oYҭ1 +f|b7qS%F/RtJNkRx19 7wvc%<6`><^Vq|Vs8osLuA4K̿" $OAD+CCdz1Uվ#%so[tPգWB=y܀ND,LB"b5&s6V!|vYhxضͧ$Gyi˙x{DѬ'L#a[LtO#Zȋ (F26yXkF)ru!(϶e.b+jme`y'B1m*\HTS"a2cß& 3l&qRRry9 \xvte(f,~Ry_hhiHY8kIP@u? !RJW沁jPQC1{U}E+JbzEx{+j 's ĸcCq#7}=4yVfI5[OՅ2)ub34-Ɖ⯄H.v"mQ2\g eD)gsCki 81b8$[`;"e=4,q|:ZPt B2pOh٧NV_E B?Y8 'J,RTy39lYvRݵ`4U'9.|k*wY<#Iqgad6"י?}VyR}Fiˤ=EC; .ed9ķɌw? }G^^3>wIpPDkVw*hY3n+옂-JЭOb_魞_0xDlᦰͯ+!ɴ'ކ؇dBF^vH`߳İJ+?")EZsBtUr_v䆦LIJ#/kʺ`X$5(#Ӏ\,< 3sNp9' ,%[0h3c54w1gΓ& h rW"rxBq|*#0BczZsoT !nC 2)DHb[+;INJMI ŧݞ  ;>&N<vkPuݿY"'n%nF$Oi+H4N"vD.0!\~Y,L{Ն K;}~@ʹ;g\Q%JRFm_?]jP6z.jlg.fe[Klh"ˮ+SH%wgh!*aD[/Rd2}[EJ} 7xK;REe@wևqTҗՅ<*KY(AHPOU k _\ogsy7!tekѪ<IMlQ+Ey\β2:E^IEbwt|tpc~D)jI2A-~i'НνsIHfZ+$ͤ-HC!o;?{k[(lPtHDщE[ _+UUt*~*8-7MaHdPMq4zV8 @ާ'ӗW nb9BU=NʋB, h,Lh1 *+>qwR]T4; S, d 鄦7y\[wq5hJm2%Xn:tI`PQ־U`[:K[>jsu.@z+ȵ9~2q8S!mhڔ)\ UMGdhjXRץUF.Z1VyȚs(;w}yk#!* v Cf&~C7F & y~ vp)7s9u³0 L w\OuC Bߊ2+4t1<0;K}~yQz'w7^f>sl+?+іz \hRE2l'+H펵36OP;6iW~Q[-sA#M4v4r.-h⮍{UMJ+<7ًXNY'z)2CnnM~X^_6-IsK2q}2^+^PވnW?^S`t D7Ƣ7)WP'Cby%#8DY*] ωن0~b/`QAWHq_눩 h'^v=*֩[x2@_5{qF-aJe0@],>zdgУ Zx;kh'zKf2"&F 6 SizZF/YD>QC{-m/v'6Ary9L~?8/~J^V DEۚ^v|]@J̴J_H N,sY]Y(b^\)=Xx17\ bJX3a@ /`j'|%3j V=$CXZɸ2@6D1.tS(GhDŻ_,@]kIkVu7#xvUm hhsϤJypЙmw .{]z_<J`Y wEi>V* ;@έJ*=494gzv zg_}݌#l벓 8huEV=NoxݏatZy,ųu/kg+lѻ9cy2?>{$.fD;5k07 na>}+2Ƙ'V)zCH,* HA lqdqy B(Ng3({]t,E .?Z;U/ Rx{KkVxC CF@ ?Ԧ7Hl>e?H?TL^0ޛ˸^gQ7kG8YV[M k4&h6Ҽ)<$ gy+szLec|T\~Kq2m~ t  ۼS % f"Eh)7PBO& NG'QA&'QBaIEqoJۻ 70h3HSx.N44&K-eHc{&6;Y`E]<DPlx !0 pȾkOƔrpa LH WW~HT.`(FdhI)ă&V+bt6PV| 6G%̦F 30z$ lB7|]!>NSeٗg~ Mf(I"A-{KPVfKgޮ-FaaKYiJ66Q{%D..䠋 tndBB5( o*35;4:+<>9@bpWȿDžhX?)-6Y"3*M@A 5r.`}kyRTgf0jTcCcSƘxxSBgg&pbҟ|"#&>(h?Fc=k 00Db~(~;/m<oPn#e7sB+]„P"d *.0aƙըmlhj:F聫 "nJ ,2"$~9x##2:D~ _#z1LI\9`)eƝD'|l{wqsAW<:*h%5htemI1v/$0˿m0c>ϏS k6ܐޮdqGB=e&s~j)* {mlq>>!9VT7." 7r͒(b*0,Ȩ3;,|LM~,M]5"k8G!-{>/4`"Ej6be؊tY"CoLU E3ꉺ,~ 9pT8)Z7XI/ Ge~-z-Uk.]awE|*wu4v7X1<s˺NH֨"Qq*Vѥxg5JcL(cC8 (pn: ޒ1FVnMZ.8ҺU͡P_׆ڧnh y{\ :1F2Ǩ3T 0`+$Ezz3C5F+]WFԾ8L$/9H[c Us'\8DrL!f ̐03c\{*xh4ceRG4qAi|N[?%lp=A( 2W,UJld+y֟y%4Ź9Lߕ&&<0^ZS0_+ قG ]:(1AW1e2p&cs m򜼟.= #''ӵyڠ(TVx@ J`5k?^:!1Wχ qHNv"{uXsK5Az!@ &1\`x?woD&{A t>,<=&XR BO05RW^bd c.3Yx_9]4z`rۼGl[~Jc釚EYF7=d;iV%Тlk'(\ʹOli=8+Bʑaر@ضf4N~QtR̯R2OLM6C B꯬eWRH>B5LXXNm=q|*ҽ!W W'iwOQ,qC`DU&lR $z!;8v|sXkpN.]K,ɡ9y+5-Y?`&&wb].V6K$a_bYZG!h]|N\rRg o!n@/WhHoquK*Q0_Y< $v Fb-ilÜs g2`ʛt&`Nh9(zyXb}JpE>)Os?Yv:Mmxna5*/h {7ʣ0AB_T7`j;I $Uii*MܹB1*E{R*$*B[hG96@I"VWe+,'SɾJ^vIq_*%l7z f'@{ 2R^NZ_-6~NiV*᫺%׹d;ٴ;UR2n+awƑSLpТbw2T>&q~yI$měon;&zi,^)2@Q&QPxkg!„?}YiÀb2vFx}W!Hv #0 IEғZOL ЌոƶvT(?O&f_HDV̮@>PhDY~^M[xYm"SɝnӀ)\))=xLn6 3t*"Y77J˸9&Z4V0CU Ko @쭖o~g6/~.hlrz1UHz~OuhTxܷ|Cꆩum:= Tr+hCjU5PYB ŝn" u>UqGFo./9CyHŚˋ =^⠑ %t,|)ԧ*Ҷ+,4#?`lQ4aClPo@,ozabB?&kYN啴ToM: و<ߓ7B6 $s(a:r >Y(K}ă~@.L&Yo/gFg.1vG_~-Z@Z 7lgV0눞칕ھ,s(-&k7h|%31NѼӤ쪜ГsXvk"|͊z``Ц $K_Y Q]"ExktRg~GPZ뚗}[hy*WJQ UKZs7mƭ0o%;nS|%LKTW!qKŔf*OPV@N2["WbX<&DFrw 9|2 6,5/{tΙ(2]Mˣ#W6Em秭x`ԓ\{ʕk r`4xHtq#̋ 쏖m* u,#򼔑 tRW3|{p7DЅ{MiP7kXKvHGLwn OeO)  T: trRE|~w<l7m.F":SeӜfy:!G-ۮ_7O-oYPo>1r.s_  <3ҟ vSVE5DkRlafioKM\x*]6/$Bn+ȖƝ(|,Aߣ S5d𼖵>ONloZ0+3g  ,1Tbݚ\P+t>/ce@G[F Kuh'[4rz_Sd? L !dxGBōV-IPbQ\8 nZcx<à\ER[MpGS{6mi҆  tv+8?_߼UV{^Fڜ hxt 1%}3k Xmο` 嗚89$[m⭣@B$}UēK"U\uht^ uurOQXS+#3TTVEܹ ?ÔL0ϕ:6yVY^w#uְGZKItgoLJXiE$O^85c}&P쀼Du/P7d9eDR3 @jZ-59WvVZZƛ΢Kna.'&/8PhҁLX2.s''1 }ywO5ȥLhO=&6 oz19ыu z/6i$xl?1zraqȶ J;T\W=8'S˩]Nl׎aLƔzJ:Rk%yU C&r)A6?\z* Zb![S74 |Xj ̈́\Fd<(`;l (Qg/*}ɻ@&n83(vF&&;ܮRޥVݓ@|~2`U٬SrisFՉ!%|.{,TT c {*dcx{>%Z㫌*@߱Z߱T@B(jCzAmD(6 wtmj #p[Š}t وH2(etGSS`$xh,PPP2ǮqwogW7u\"\ߊArSϜsM(3`3)b>Z;Ցdž \3#!`[ի~JϤ~{`Z8f,{#珙٪euX2`Gq QȆ#,:9}fqC'"֤ N]$;R?D^i8pI:bm~WԂ2})=^_Abq43Xճb@ɚ't1w3":E#s4]ƶ+FX1RЌ׻m6%ÒS!ҼqcaX\V ';D-̄S&kC67Lyi6T<Бqr:Vy>9MisA0thhH薢US'Ky(7|Ka>&D'U`?lWybv'oy`%,߄^$x0AA ٰ <T0' N?/cuUxX'IYJbXP*8s.>+s%+hNU.^i@~P>WҸ|γ?[2=1i+v\*u2=7E4V¼>ܙ?XLwbeHQ.g'ƥ7i h g~uH8),3'tDȂ<5Y(HaOBs窐&*~+ 'Wp2_/=|>H\ օJZ7*1ئf!5Zg*&1O/-`%%}(#)=klN+0}l(îʣL=6 XhO#2aBHk;t^Ci;-u@qx9|}jk_^#`έ.9_kh/H✽MdG;&Hc;>sɧ tP>Zu|7U9r.c-oLyРM %Ob7H I5Ο&'X{z}%_Kwۼ5/P[c 1ǍOkm,4]Oˀ{ ֎tw3>봬n8~j4M fA]FXe^ 9~ja8JиǓ"ؗ4{ .NWZ*C} ؽ |#{EPքFl 7lo98MgUhMɦ.|I\%[w&'jrhܟXA}6m8_8~tG$PZCa-/E{Mqڤ 9>-ho+/Oz8}b gR,S7Uus/ 4EDY1gǽhkkr+AL奵:@ϑfGI3414!agY%BO.$.U>Rs$B=Y@ LEgls6^s&L1 g!]q)S~2Cwk?*K+|=ю~l Nĺ%ǬB{sgUxA$F @aMd9Rs@ -Wz(ѼDU mk2k<,?vzVF~jRYo=ݚ]n e0& MLzڟTzGj-f(2RUKx6~d=Zl[Q} G8B)SR@{K#xMv94TynÉ*6?>!N—ݾyQF?o=Q# P9s,Ն"q!y *F!']"WgQlNe.`2⪽^nF G09% !ԚCGX?힜8uR%TSۢU rǻU,>L[WXAX4NxQsIHD12fA@{mSKn*{|_`R1OUthA6`U':Ŧ9MgVkxkHy't>.`(%w˨e7:*W'b!S?&;$?i9^7,̽&2ԅRC,t{xL ;h5{ceY4ӦC ҷx=3՛Z^%&6eEwOeśĥ6Zϊ>S dFSm~JٟbAJinTs HF6 \0@jX\]iY )wϢ`l(9LDN^'~J&Tmu7z̈[F/V`h@菫[#V˰O uRPuQu\d@ Tg*[j5sn(Tt $]o,cY pz!t)DܘoLz6 F^FÊnkxVڇA:FO kTA+’fxY49U&"dm;a*&%r!IK̟ktUa+N{J2]ս9=a&]] firlʘm[`ϦvN ^ 9 ;=CHDIrXy=l,IPYK+[,薌OgPbFpPVbXea f?oWa1!)~.Di<QS`RKwEUSdw#5S2+=g=i A1yvɦG1wfP`^) еsW %ʤD!RSNNiYx:>iJ;ː 41{gZEX0~ː&SZFK7gYm C(@OhR)zWu=6l"˻շޠ$kktlosl/f0#^!i "}\Dr׃NJ8 q"dH9u2lTY%/o iPEfRʍ sT Y&-J"jzMkw&^+\]\#߰`0{B|15`^u"4էw =B!3`=gz旨[6;N!?ӆ I۔`ZNU y+Ly5 +zz+ Rd|&;jr!eY[L6ؘl1ka|d=#pWH ?*.*z&&Yެ;zX9>:%%ړb3M.rݛ ggW[7v?-Zko/|1 >wZ} 8ƸH(@xZ i>/a͌>_=4s}/g 7J^AJcch:][[V_ap)1Džo>Z|[:?He^q8ߠqgD$q RY=!pޭ(y&'@Meuq]E''ѝb6FD2A~$2a_/0{_"d$@khXF%>}XKQ [qι)ER!@ruTsg^q96?\w0踞iV]L6-Dp'Oҥ%rA9'*x?:)W&p&V̈́{O)Ht]ӸV7D$STc7ǢPJ'`È:yVnY͆Klp~|wo<(Ao}v_BRz=|ǻ8 x:?>^qܠTrc<!t;,\y'~"cp̅Paeum ʻT֏HiX =KGu )VB8~?'/ʫ@b,ij* 8T@ |@/Vᩀ| em2Ln/.SJVBˆw].> /FٶM*XDĄ竵-}݇:7:CXt_bMH` 1̦ q?.յɈx_ Z>q֏TqK`Y#4AOo9߈ʅFLqc 䙅)o%[$A>eзəF+ X"&-a2L-z<6cYME83D̳ |:8륙H*ef[ZQ;׉{SS*K9Pu-Ɯ ;刀8.jUxsX[U=>J{+@Z(hlo 9)SK>O:Ul޼tK:2q!ŀ鿟,{ӊB[̙V\뎓PvP~<M!R\rhӼ]hdjS0 I&aLF-Bh5ҠӜTeV&ާ0I !yWfaՀg<sN]s_K HB| [Sdj 6O\jIG DV0`oZf4K3 q۵!4( GH]<^"@Y8괤;DC`:6%*4ֽ@P3vIIteϾ,$Y3NnX}&~Zᤰ?]qA^;X v#eZ|o_ (d)]f =U}S& ?N I;-Y:(FHr$?tg~no/~nF{c8nۖ&1JRG Գn^ɮE;-:7@(IST] 87AX#$!QݢX#[w>x@6ූe 9Gc{]o.C>?}quFݶ%MM3_D9#ߝ|.P;kHLC'{bR`nu5H{y ]P4"Nc ر)} w~\Rm #_ĵdȹtT/6dvbG&[(N%+`xx͡Ok'C-}?[֚ꇨgH *UlEBI @\<N(3quDfMgL]0OO~M 髠+jS CL6; GmNDaq:8u*hҶSjŪg/NEY[`֝ɵm[w*ES&}޵cɼLNo\&`[L'fn5Pːq &s<5%2N|Bql9҅rahcjT3[`|B#i=[N/[eqB r{CGV<9Уu1)2]m/(>|VٳGb 'nX. |9%MtFL_W>J'qT?e tfo8kj ok050J"bF  ЏQh܋| 5O =PbץlQ" nFN+ f#I2*jjֹK!6c^2mF;+>W %iLLiDe5S?U^D3|.j 3E4·ѻlXɍ `I-ѽϐ7(HmmMϧ]_fŎ 7zUߓA-en̯ K0. P Qv)+<7S/WS>mʍ< ǵ G\fŅ' F&({Ff,syAS{^2蘔DB*{Q"ىuZm ( Uh6V`8"R UGۓ̊w"AФ{sCxHљ鎾:*(2i81+O_9A'Tq:K(: VX}_% 3Xߙ Y-RL${3 Uڪ9(H7ޯQb_U%swtj;>3A\q0ڱ =]b 7p[U_ ΀*ke%ኯbt Nl\e9Y BdAS{פ5t)dY uMl"c~}zJq^;z鬷88nt,${ nOEvK2θt=n{\5KSYhʏ<'3ś7-E;^ZRcHQ$a9J S>6&YAcޜpZ,ѲRejHfG?rzQ,o1d%&jqG̿&H=O  ŹJ뇖ުf䆨xf Ju= JݙlPu T VQfڤA֫؂~?ʧ][5T~E2A[eHF+T)-EWQ{e?AQ@gب~ #}OEIufڢƊ`p[i`y!Sw}sv숙h B_ƙaeL,"(C n]{eB͵PN)nLr rFܢ|eJ+-RC+an,s7VoCBZIc_sS (z /7b*"!u @4/ ZnG+IQ"l ٌ֪s;&- BM[<=aU*Lቸ[aqaMg>C]YLMךr:{f T0S"rsr:q~f G{pG ($O𺴧4FVD]]P/:\L,{kAŪ4vSpQ Q:S(>1s+]PɫN_c3 i90xzڄ7w4? b'Tq!C7$R̎¤1JLZ9sی-gE25N3!,1' tr1PDńAbAr0msμ0B ʅc\~)L7t xZ}f\'@rTl{pƱS)/Z3*x)TݧKy֜bO_6pnĿҶ,0!k]ʢl_@QzU䘨ipPI65awL՟_pS3^~[| 1(8OK92yEОE^ee2Vǖ'J&y!nA;HݏK%%s/e|X +UZ#bZYjj O6 +[_*Tcc  ܥ^Dxߌd::N܊#_{r HwO(uU'l [ pL7VUNw:Hۑ9='z34fn`߄hU3sqpƻL71J̳eHi{AH;{ lԘ<baJ]H1" vG6>6 L2PWFI<0(u2ܰpXjKݡr3HK1TF/D-Y *XνN͑EFOӐ]prXS*=d[>M/s6n\[yN%ˡ>>TnkXm4Tki9oi&,7A\ik\4J _:+èoS}4 '٭+=8*X:UfKQe ذHvѲBuoGGٔ>`}('^S"=ֲ'Ta>bӳ )<ŒjEӧ~{\-z^&{SϮo޽xaJIXB F7id 0 wiu[ K;mS@- /ZA.17F` (BCX{(9|ؘ=W9]ߛ1Q]qLƥ.;,/P @ X%Hsr?i@K$~LANdmWؿ.)ϴ|J L. ned"]԰K۾>>{ni-O-;½tIPoM_OE!cp|pf`D.%KCw{Lho?*<(d:y Mv?R ҧʩ\w:Qtw7$l^Z,꫶v:`a N A]ݣuzIIa a1c4`&U)*אsk+ۃ |k(}ʏK;_p &W$>m5 6J$Y;˩`7LY[dE-Ʒ{̹U^Pr_ $Y;X`Pbw+zp}>:]%Fy:kv;z7wυgS&Er|9g]8Ycbd3ǸN f.0>'#111ZQ_v6dUπN[z\T\'O9Żs !WGh?Þ8m{8[)MTĕ_mFӿ Ywv鱏~qj6oiYè3-,kI1OUiS ^P;bRzFR;#KO4J|+sH8sIMU$-xZI ju۩̕LhsbRI Q8oe;mKMS.++Rsr <`Ăֈ=dNs})>cn( Cc j~E' 4yR ؚr?<(hzOZYMEΐE6~?3yx]u=s TATˁRcLcj"\ȫ0AY1B1yNғS|MԐ#="$ԻK? Z8GĀ!h?A&_;*kAY>0:9/x|C:͆)᱋%#&|.A\G\FC6YAUI$-%L-d2X 8r(RqP[t`.wb1n6K& 2 s>'xp;Xz3f)fNB3>|4`剶dWR] HEJyEb*ddGÕ%Tb,8=YV %8i5^ 5LpQ,Cbo0BlHL:cXsz=H=N6$׬sv&ȉ3q|\~N7+B|jr7\Hل%%aPW3TB~ 4fwok=(Iw۫*㳇"7KЬZ{3Nrg/<뜇i l=[ OE>_11 P|Oj][j#FzurK:.#4*fp:EHXU% @cZlǻ|M,SÈfNCM6:>X^SròUWz1gwD2 T$;g3!NVӄV5g6 l?M#NHō4c 0J-a@4HV)?v-vXMEˮG24\/*^%})2cǠr-76,3!0 :ɲa@w밎9Pf07ײZ?*S̐m$?f*gF=4.EU)iEW,oE[BiV5ZoO }E-'۠DmAK^rܷ.J1ԑro΃9૟ ۜ{H)-HK-,w;w"t+JK :8ɿby[ _lC*po{2h汑ҝ$FTiC& Vf%8s6 ”MZbzpkXf:(5G7x$`C3nt|S.FoK9i29ӟj+@tpHM2ѐ=GWmhΣ/TEz4G,ʐ0[^)o#% dEqooo^)FYBIOIjY0PzWvAɟO툟elYY89%ol31ᗦm$9 EL dy4 2.kRx=ͮ3AeQ#)A~R 'Pwx\G爕Vű\фkn؂B-7<B|hT9vj$m3D PH*ugXm) 8T =|SGb3= N;I5gж`kRCB 蝡kMhQ| b5 sKj( &!?'(1|]-y{X ?iV|\j)9d$;G[lǨ".T/gUsqq !nXͶ)D؞|tJΰ Tq4dpC#|ϞRplXXTOC9eԎ@~ {ʪdaɨ sA"P+骶%>J"Ms0U(r-aмsV{3a t pA,خcq8-, 6*vgEulL}0{YWC<! 7_))Wb g[=C9L^]@JVbTѦ<$P_p{PSlnFys:t)VBXMk9SlI2۷@{7 L/@AP.%-ƦpfySEx[ZV#FlOw `^QĐISi[[WIU6m]u3zlqqYڐ6ix8%JHb(ɗamMCD jE=^+*[ܯ1{c*BIY2Z>`%pʟp3jƢ&S-4*G$4WntU0NHUY⃍ QP"d3 N̜U&XnCh4ض`4-ߛR:2Ҥxs7s5+Ti%ûРS kI3w HGrfmݱNTF$DBB. ;|,ьϾKK rYJ U[^hs*%8+QA^q,EGEmLNvS^UˣݞyQ=YYݾxR$:4?C\Y.-E2_-!8*2 =H6rwP8IW?L/cM!L_$HT#DutiHúڶak ^_XA~N06++Kx23k J"಺eZ O\U-zF% 7bȺמ5J!zYI$7t=g]PheɹBMT5rrp1)Ch9q{}.|l| `[[}SncDU #Fy.$M)wS6q_oz'2.rրN<23-PCJ*w_q2t--d*16#$k%*Hd׹% %<u#;뀰Ibݘf:R}>np⍤ĺҼxf;Sߛwk#$QDg|)`YQ_$JlNrBq_LSD! MsFqX1WTv*;1ܴiZ ̕j:Xo PM2[o*35ùw)>O9=6FeOY1tmWȵj2G-E}?=eN܌~b7M%>?B]6r@զSAm 6g ̡RN 8#h턁*mi=:\ >'=yS"%{,&Z"P/tP%"}eѭ53jW--i ķ89ך Z q#|k(b_sǐt]__, :@ufMӆdgm:r➵0A /p׿}ƯkH̯%Q)-q4h1gbhkvy}@]|=L)E8bZ\)S]x*-2[̷{88[8i,fL& |76*hgg0_Ϣ_XD1;f#txڣ nG~+! ; F<C)P#lǂS '͖_ цӥ`f:Rt[OPD稧q4\Z4߼Ìd. n೑qƁ0/;\Q<$::0w_'5JJTk9s8)T}7?M;@N\je6м}ڃEx2cz!,1FepdA'!zmYPqݧ3;n A,a;ȍԹlɒjo/U sd3qҰaP꣜|Jmf^@ӯ7?e"YGdz0R?yKI*&kS$r(cvK)(h *E} < Gŭoh%9ϡaS #.6Qه2 TQ$Yc9w5\;sԐz |~{jRt5./$^1*+)"w "-ӑ4qVJd<H}2+=muX!bHh~L|圗IDaVQ%@C9&BPUdxq'+%+5 ?V=8~Gæ ~aԖ#0i03ԆϕZh'%N)T.H;y-w Ov d`7{j9(O&g(iPPOH nP9e6zwAC(z6%'jD3ߵ [ωF(]X=ZP#jm\!dxWlx{YFN])5b CEhGʒ%8̧+媟-mLL-FS Q,_ۢiо lM9>{NP`u@S-UHs0ALMk6:J;$RJ=nj8m<hwu-|jEh,e j i_=ʣVq 9˜Ȗ.h~5NySӇMP/7}#8qQ' G0@;ܲ3:wae$E7 V/ý!hMۖY& ] OG9aFIώ\eDA"^C]F kå?*,J |ռ7P9=s^C$4hboB^܏}m}W4 F!<'E(BT`6͆>板  O-5(,D#OeXvJG:reÈ5іvswv:zҪsٵ1 "K|EH|O}Dpp'vq7ח˃ 4i($!꒕4T@{Z.;`0+?L1fCam B3NdOe+FiUID T95[i:}!ϳo1PS"הrct3@])Z8ln/ʱI6Pu+X9NL8| G.ܞ# u|Pr{X^r{ذe&!$fa% 1c1y+deEK <+$>2&:~+d~Ϗ.دt93 ӫp!#z+x,'V4Ch58"AAw$.\:cdɓl0{L(qY ;gpyyѬq I_WQn[m;g)KfC\ЫVUi}ǒbfA˦|ZrfZTzu 0/嵍ba$%oMBX%T XGQO^OP7 |7cp-(xcF! p B,$7c7)QC?oSYK^о'U]!U7AUZl8$e7׎ڜ̰\Jʂ.'R#$o:P+:;BD~A-Mچ/[T5?oA?u2u^ݷ_:ݸ|2.=ut Fî;j NAQ~)+1 -i$kE,gd&Ez6dTpDa磋|&4,X2G/5P2G?2I&Ó-:hT bcYMD]Ɣڗz+N@4 arxZ'5y!z +-˲yMP]zPE',+f%}q{tӝ=[J9Lq5 ]tKV1%U[a 2*Q7` ic6vy,WٗVŜf;Zne 1q͜)V`^۩3C*eXԚom$8Ak+;%:1c|+>sBP`tq<$a7cTN3J[??Oc%[V6 8j/iPY'ϋ~)#3Z8Yf1K&#zeaăF NHjy2Ah l)1棃': 2ewJԊGF`7\ !G?@+Wd5" j;6`> ~QTiVdTmmhVL#/`Yxf6o5m"NcܽE1x=1`2@oȲw9p2(4 E4b_+xkT#GOtjOiF1G,ooBnï^,/ɠY5d!!f)BBi=]M6p, 8uT˯z(OLڒ~kRfd4ʣW71JoO!m5\J|Ɣ,C MΣޣ+P =G-ej}WV[g9u8Rkg>|3a E;UBvi;1Kj|krCu02cX;wo*?>vz?+P9Z\tb(>όgBXmd.Q1UtTa-R\j\o]Wl kU;c_jI#)}5sdc_R pd9sI%]aeSMZ F :J!l@}K,?qPO=>͗?wG+d?|}[9t'W ~V,_lL9M[(X/({X^וSlQX9W=Û w`pЗg/MP4&SYXyӉ'Z9gJ,)5V\nT+?隌"uN_ظef^<Ǵ' J_!l 83b( T73˜a"ߤ9F1OO kZoi Q1N1pʹqqnSׄD1. nWlI)\BHDBĂ vꖡ)Iio r Z:H̿; j'veUZ:$v2a /(|0 S9CMR1R@X?6!;K#'F@7@. P|>һxhO[nZ7w[[Lrc?p&+_elM5NU9)S\ap@i=f2tA@R@9Wι5+pzB /XDa+waX)* FOxOڨ_IAsxuSW O\Dg|JW6;ڢǾBEJxMzi٫եF[Y&ʺ6yoXOGR*ՀTc3a}-ןxh3|MZjf7NjR%nB abԦx̀jN Ӂ%"BK7e9o[ H_I#3~GƄGH`ۮx1.(R rP&XF{J~1|6Uku αP;yŽlL 7x[5#Զޑ*A[ pAλ{?cgdVOSjLMq~̇Aewo(Ik9l'R쮈z+Kj9ɩİKš) FN'r}o ˳}Oa>U㧖'ϰVieQ6=IbeR*z`KF M5+"Wxu.xZ:  ԚzicC\9aOfsk?čGŮ[١7)[̆g/3󛻅HYI0,S׻:kW$]־X0'nT fu;mWRbt*^F[5D3->E. LMm0m\?[U_ SVWĢNBL:H{܏1wY5 \Ԑ#)=(HqؿXSpW>6(Z, AEXMR5v!&,S9 s%F-, z᷁͋?)XHqJd6 AdCx 0R[6|{ yu9MWRjglɵSM+֢5áLd*K٪%v, 2XTJƪpkqy{Ҳ'X]֎}bczO L.9mOi*C,w#E#":@z< rM] ;"Zz,c*l=I|:ʎzwozj}sR <9RأD%y僈]5oba(6qukh!2C RHF٧d"zZhA "Ll՜>Nrمćr4 +@^vd gW([s.e_,xovˎ*z1=H:ݓ\9gYg{,mHRp*B+ LqܴPhA\Wuyb k˿@8!!"҄m7W 1`[UIl1 ? }uܴ,`񗟰$ !⾨O8D)fQX*o8O!#K܃VWuyaf+u+:-wx]˹H I;lo([s ;(}}8,$v8l{Id'k-Uq[1ARq/aI@P.o]u~bRzq)t94f] !(µy, ?" e &f\Kb[p2nB&`aP*r P/pMJZߛ^τ[Pc_*- "_ bÜsxuRLfUr[pC=2/rٛm:#YNəJ(~5nFugprR01|a*ܓ)ELݺ][X9$ qܔumBdJKBt҅rʒF906xK6Q!qKE鵡 q:FXgAv՜AZpn}1TA5UJ=lb>5k%bS唅RPfVXNd/.Kld;lhYvq/hi{;{?AT"LdINV(?aM `?IaεAV)\ԔI35WXCD_Ѧ?vP%}^µ/YYt=ܲX)4OIӐ1{7ԸiygsD'FaH1 rhg R(1tZ1;q2Px?UNX پ`n.A#K[z4gg+Q!9+Pk 9ikTmEIl (X!rL1TbYVi6gkݛBru4noxLN*l֦x2?e L-υOͥ*g3š~I\+|n8nҽyhc< Iw lܿ+շ"֢$2I *d:0xYZ3[N&}.6ٕ,Z-ߘP=&eHyMp} gj%i=[x"7Nߛ;qQ$Ԉ=9΂oH?=ͱJR8II\\6aUN^{`[ݷL:O(H_.IBy݄nO/R,M"'YS m) eG45y%'2/εdXS<6o\8+P!YGZș/Cck#_TL=_FΎB'6I arm@9^ HY&gRMg[Akr.'eXXQsOЫj3Oԭd7!>+^B?VE懦kw&(^sHdoq\ Y0'0zեHޕSP}&Xk4dp [J nN WxOٻi&l+MjnO!Xa`5~͟Oo*{+*K wc=.K1Sk@Q~A_u_ 'l%,߉X%#kF+u'U(a~[}nsvV[pfGNS ůD ('NhOa:_6@T?\ldKru#S`( &ž|)X3>q~9gH3?Zi\\kO YO?+@j[do^25gENQce2'5kEr=*E?,}4$;|HhFjQDPQ\ׯZcbQ~Uw̺,/E@4xl{98rIӅ茶>4^{۲潣_w`b݀ ۵hݵGsAIoz$Y+& ]m aϚWy(_Rf5nޕg{zĕV)s6y#je+պ8(+~8׏fbA3&&sX~U;L(9XA-Lb_N{60PhJ6L'sg "n,j]]Z Ja0D[ FPHzv%&%קsTY@am[ԚXQy 1-:2יK AݱYZ';>ws` ?jth݌ [V@%sE鲗?aq(\ݽŞ~GSoEIYِ8H U0iN ;!& Nէ+꥟Nv3 hO2:\Z&VXR\{LݜtN1 ;m,Z24/<,~9Vp212Пkhɿ ԑa7@)4]φK[|TQi)ʳN67eRyBdU"F m~@j^YڸHf$D$ Kv9#enH*OGԵx"`Pw\c֮雯5eȚ7 d|[ -OLz>f5CE]ϢIIIFG3['щ7X΃ >E4 ֺp2%gY2*#u5w=a5؇Aw4.RoI([ F- N @JdD LLͩ ebPX.ƫ7xYPm^c Q^}ɖz39^Aw ;v o@l0.oYVr4=ǰ us"CZ9_կfWIΜ 0bcbWG5 ߑ9J( 9"Qg3![TMObb׶u؉#i bЀ|Jr/\#X?5=7[>BX:foo%F.֗a[%w˾dmd9W3-dz/wl`_t̉t}kV%$Yk`^SVK"|Qh夣AM>6Iu1e;p'|rDžj`[(Wݶvq5Ϡe!i 1] ֞ (*ʪj6?഍<: P KBp,fr]g:m FevT`)XRFmq8{bUg+Eg5 򚏙(hyi"j/kܶY:Hw־ F`1 ȡZFމ!8/ 6RrO~<[ޟy`Fm@wMz aҎKKKIфvHT~"'!TAVWqI@~+\k>V|T/N35kF8MA v>X^#P3[aDjGiWJmP3ƀDr@6 Т5k{PQ -U'I|^~Zh>}V^>8ru_jK=; AC} ȣb|d3pyHӠ[WA|ptDV. ([n5!ϵAгW֐"Wr1IÏa!Ӓp2DI:.`Cun WP Sԉ*AI]%!J]ÿ}.#7׭B1>_>nH2"xiقv8NCVhjƖS QtS ."՝#?0~ǹUv-ځYeaIaM⤦ ŃmFvu 'TҌPPn2(QF7+)ppO*&% [-wb)`a]dy2몽,'q#G'#w,i\3A7f^jJX $(-"?eqUquLTr$ϱ~>{Lqf2{hN򑶷P=O.-Է#8JT`*gv`a;Mך͈\q|[JVďUR5 "h+8p۟7Q{)aO\MJ"U-$EK40QOh݅'Dk`.ut[%l4c_3'c;hb,{3H8F Jj,|I-":Z"`I\|?H\}P)gYQkvrhj}b# œ4yeާjOѢt~ADS*FwXaS_()@ b|m6 bZhMdp!5f" *t<,BE+c! Ks*vVd|WGI D#0DQ *?lIr>Dݰn*U@w򋶎!tWN?+exV=~hO~&/)&0AĔ؆}oK4srE,YS.&eQ%#;,\Jߥj@P${GJ~ɺx,8U8 -{*˸E'|Z;礪 @P/Ps /e*ܡY߰-αu%{)g G l~0, A9~Cs4t-jzv$m|yԬhر:ݹ` @p[>ˎ؃78Cv} 6E`<|w`4u@r3{ I^^H:\c,I? hs v`0@cp/ms"laBN)xv@~[RյۋŎIӳa55-m[I|`Z"k蜣A9.f'L {* (hA0.. JtADVިZݓhP YEtݏl]X_^ в?A׏u/g뵧K:vbi1$4jq<8p!QHWQN>:srz,& UheBѥRt 2 e͘rLb)!z2T)-υNXQ5z?8b.k\Xe KI\Ǭ#ڼ62$dtoOxߢevA|m'1PR OF`7 %-{S_ok޸aQԶ/#y :E8PUF\.Xs/)NƔ<ΨRGEDGqμ{: "sE}!j Ȏ#"4|߇u>M!=D#o`;^#v[BŇz}t'M8O\`]@zʤ>Wd%mť>TfT>R,lΙn,1O*{yS3L(e2ų}WzpЊ /o_/_ ,(A4{[+bum4,M8!*j>Ut) ;\?J#O"wa[qȃC\ ,pTY%>!^?u Kym#(θharGNK1?!Kߖm:+Iy7,<p :#7XY3 \!W s gocN!tڃxlX&oۉYS.& AkͭnqPÊ3 p*T7Bwc"u&tq N-/*8E9iÈy J+pHÏ~Ӡ-IC7(a:m @{ej)M0Yxτz%j8$(j)<=0a)b$6YD,gۑ `J s">zVe|=u{-J9Zҙ[Bd䐷ۯZm"h Aߎe"ۢ&C y?AE1cSݦ|Bo.\:)Hz?jn FM^gq p9 -~\yEZ'D=]!J5zæ٦v ˃'Qc:Œ>m!3$C7#]L_>(fŒH0 \(Dysw=΁z0:tz%Ζul&>X  Cs7[J<*ErJE9%%d8ZV3x4[d#)rRoMY1PA)n\ṜiTVJL]2J4XYL|& ) 53?W0j,8^eI/Pc,չEUO\bQ9{It':|z;F{dZrUAJ?i"Pu.D!ν5Ngho-j2H}.2|cVDܫpr`5&#J LrLtw(O+zm7XB;J#.tvuV>R:!cق99AhSO DX%^-D62\^THWc! 8K"""6.ܽPl~wE3=ցWϱJˑ֧w`Pi`*c6׎6Ֆ1FGG;H@QM7l". ٱ^$>. MVrzvnKrɗMtf$Ɛ?Ĭ7ܧhj 4Cθu\Z9J9.5ۚ;rC:p ^ T\ % IvHPr%?oě6_HT$t'-U@)r1إaVHzƻ̃90|) elSݳ|W׊N?|UP[|GϵLV>6Ym9x;- ߰[#PQgL'iJ"ΞMϘp¨.hB*JnpPcBRXqB2ά$'GSOnE2kʝiz:aWQ 99"J|B{'?XMjExR__r@*BY2J}DwC)]/y`aW<8B`~ldr2p߁G@.H2=\2ͭṈMKUÖt0X"h4IUG|NdBph' q#A,`Sى<3!c+-oHo0 yƅe/+};P T78*EnO{OxnV0 Y_vPH/q O_N9u,) 1EK}nm8`o&hDM.A ٞt跘YEJ>듁xm'Fbt}D_ui8,D׍p߳|D`i{rV]1<"tvZ,/zUDq2٤GxPmKG U`0 w…fH~xQ`O)o!c[JQS&s?O8< ļ5T Av{?QUtڶhPwth gna9;p3Oi3vJ]υzbG@]~NjHŽMw\MwcmqMo~@x%m8:qu ßGIJT9' û"H!+x+sXֆo, 9}Bu,OX0]F_Ҧ,6-vթ*nҳܚVnǑZ>DT9.B IdPK V C*)8#y'Q\Z ֺMT;(L%-7uO wU}4k!~<9A"XNF։Ɲ[pPH?glZ,0 9%8a ёL~B$K'cw^YGw2Z)e%"zg7c#Mv tL1&7rzycvIiYnM"op;MgC} әoX%w&`M4ɻNqVTA/xq~ v^ELglH)sט#d \ 6@WyelИq 6&m9ndOr[]7 EʆYbE(8%Hܪ:9Oo,N)邭 35@AZ"uചFjiBE&>W}FP x;vp6L` Vx7Z}}!9Fカ$TYmz){3-A-L -JG7UxVR붇jߕƧIyۃݒ^*9}YPrr|xkp*cQf}rdMJ৴ZJqG }H~]2'6=^O1d~(S5xM6q,xyߩTg("L7hh/1iRg;-•[C}twڋ\g~[x7*8Ǣ;u :i|*^K/x-0Ez3 U;e䏫<="Fa(^nx]:|GىWf޲L6S>kb<[eڤīVZarhi-ZiKfCG٪ңtxQU`Sj%7^}|Zڹ[ైKD]׸Nh2]9<@Wr3=KmkR?IX/nĸo4`ҘSĂ6z`_xmȪ)fQ4liZ1 :SZۑnppe^m0ӸC0ȼeaNuDے[Ue{ G~ୠIrp\aRcm-oг;*{.st"Q.jiC0,(NP # EY{:@.|`,b̄jjIkS^W!.Y=HVLW)Nfb 0:fwq$}Wn-RZ9d u Pt]-UH/]ƒZ$ Ds›7=TY k*C!tYOd^4y?kh B-or2\^ptKA\:>qM٩B+-8v41+" nG;ܭqzd]GTq6 {*pOs< ]ԧuLq7iSt"i[!*[f'b?R??U<^ԕ.Mӂ7NWNX W<0rB6/SԸ*~ sEȯ:/v1.Eyٞ)AP`GL3Ϡ(AŅo-IH*|7 5!g["0A.\MA0~Lla:U#8J:f(6l.m㡡;c5;Ysd<Ȫ##㍴84hWܞұ{PPQe'œ*D!Ƹ#Ke 7^][tiքblZt;Bq8yĠHYñmS4)GӮNn<2r3,,4vFdh<fH걊nt! \*)%~^P+)^/g\K8KR ] q>Ud7r꩓ 1 Bm^>8@(*b#` 9 hc!<}q {@(~ˍ:0̌PM낻wcq ڱ!F}Oxh>aPd +G?Ղw jK' M)j-3'q s|w|̳1R w`^`qHRLu`WU*F@e<:_ XTTʆe eif+LGM9Khrk3!ds5o5pp0x~Yo$:~Y|@Zvh:(==5T,=ښ4L|4^C݉J8v (38NtSPMqw`Ы+Ktzߨ0Y:>~LJI1K4w%t: 78C. 7}(_MmUIЈsfHrY('mÑ#xFMr:F*tW(F q'l\S=e{OSf md*}d%NU(P6d¶ YԹa5/*Z~S uF)Ż;%fm\:]S/,Ϋ9KCQYrcBB]EXуD/pX*CUVZ5gwU ݣgb?  =Y+bqvz,l*g]Lrd)%jޜ:mI[Dkc>x%*xB1c[ڲiqKF˭ܿriWE>^wX=\m%.y0M$ s򬈨ҡ@ʧWb0s 93fm! xOAD |+(׌&GLt`je6uOu<:D2۸'zbAoLq#Nh H\b/}(&HZsm@u㪉ZSr;^a JYcQKN @~?7a-gu+\zI/{:B__1㍧>(d9BLz)NnrZHʓ9L PKmO-r[ȆY  KԬ}s,]`7] Zфj}ERuEqnr2'J/G+9~L a%,A!NPI$} Etڇ~ۨ@ gR,FRɜ8N'L34o-ý<Y[$tҩ8$ K,+DH+vQ @f3I!x{_T\@ΡRZSP*8digSS[$ axl:nyQXhHł(ڜxP_=;l\7i1Q26.cHbPwOo) [w,yB^֟|!ʦ\^Fxpg}cG:@ͳ]!FTF546"|>g]15 6,I:U$tߗʼkݴQ)`ZyD|^zy9Y?u^^t-yoMP5E>Knz-֗֗:!?T4pM%-PEqNJ3K|`ThdP0WB4;Ob!w$Pi+ =v, {XQ+}n'$! ,]ԛScDQe_9A>(+VtafnZKtCg ܙ`[˸Om̞jt%]@(@*^ kI~D#]egp=ѩS?@K+^Gnb̫ .5#)sv=~jp8N)dnv&'>L+7 YcȼAXL4XiI'~?2iӄ$f<5P m ਸ^\rȸVliM]-,p{[Fh]|xswԬŗS aKJUJ h% p<+L{Ȓf,҉SJR|vtؖHiMP]o.Dטgb紒dQ?+OCg{]}:d4/8ʋ7-u8Ӓ[{5V:x%ذ5i=A]OWq#ÓM   3Qb*Jܲ|ĉ+eꆀؖBL v@|ZHjğvSxo8֤|e4y ZyNxNjRKE͂Z06.P VO󁶑Y  Rɝ}|vjEgc(h,'F/ř?0f0PlK\2M٣#xv9B*oplV[HNI+9 <=:>=:ٿO oѝ"&?;n}CzeD/B e~{>7O_rVU) r0Pz@av,Fo | pzvHCo o? >WѲ;I;cS`4et^͊i4N rNǿtzp#Du 퐟a*<;IcqRDV33 E?.Z*h< GMʈ@iPtC>G: v95$F ]\3߉16q|?fZ22TxRp7g<["{Ve9@m %aΙG Z[iIUDž!c8MP.@H LtI׍䑍 my5`o$ΚoNߘkKD1ﮐM:3L猛1hlhqQxJ"Rv&\埆z-"'y6N5x";z#ǚD$-ߗ6ɣU0LT`c$$W$\Z98AXkXtuR+X>nzqM 'nJB{,s[cN1@> U ?%H`OΩul{ǒOFF>ІJaf|2{:/9!xMY{ >v<~$/ yn^ 9U*6I}f:AjtׁpKYw:ZW 'ԠGE̷4q20% əYpMα/XJ)|lvB @UD_vswTlS"{6?xL!jU:;|aU^A, W/}+I7 gTG֛OO>`߶2Gj i πjfedV䏸ǡ`;w%$hG 1Z\Mzj/+ǗN|reX@*rhδ=H ll(<|@h8bŀwCo\Q ܽ-1u[MXH-cMN%0U1^~WJJNVZ7F iG_,I#ðh7f[))K0=yCO ^[UױjD<\\[(^e"q&e6 ̝اS$+=cK*f$cd">`puԆ/vD-A|&N_ǔ#d6餙h8J0hTTb Ỵ#b̝GP oeJ#=Rj,ɤiitM]^w7%Z^r@=ǥsǮ2>A _{:;i :_ݩ퍭5, pnѤ7=ؠ갳Uqq<,AيyO%~?;ârj4 5!s>ڊ;gcTRdES0bʼn&B[7ҋBZ#tqԇI7,iBF6ڋo[-U% H=5frځ;lGZ&h 0t]3 rY6;L>I?1ϠH=J[x2TUG#!DF>0]9Aj9ⳇaƻڜL'~Kƿ"A z[xf(YiǬ<<%D73X쥥t[+u*xiZn?WIRVn_I>R,(QZ>c_ju)Q/:|4R]Ĺ#Ue=g B ' C+[Mrs]=g_?LThP)l519[gy'W2bRGYjcI;Ab^-n4<0 ӝ-[0emti^2E\-VNe몬ͮ/-v4F E[=:/nXCqxc1bj$IYNѝ)Ĵ_± Ya#=D}C>8 `ÝJHv(΋+F?;n9 iL7]Ws߹䟳1ŷKD :a,_AAm~X<)69v)(UczwdX$OG\}w.. zTIg{^l7Fq4kaN%~Fް=$(h8cM[OJ8v F_!6VBՖjc*E;PO I(.0r6#Tʝp S^܊#ydP5d-DMAYq1VYE9C@4Kqm;{>3Ѭ1hm#K]5_bf7d]H<GkA,Gm >}=7Eɓ^x8/Eq¢PĴDBۥ\S칝mrlZ|kD7IZczmmT!)13[b^8Νm͂]h`:P1B-B/;Ѡ$9`ݔ1ُPJq{ i n fl^t&OX?) rvIQ<}6jKMBNgnIZF 4}`GT@$'QXC2}!p˿VI}Q!yZo+#BK6"tx9 k=M$sq[u>duInvX<\o9IԐf v_z6ܙĸ ߷J KH4)#ZG$(6}*Z%J8@V $1&PՉ&ޥs.yɀcx4. t!k|a&ZAW+/VG[> 1Mhԓ]yDMjaE-,{3]iM&\9 WVJ~D L\;|3?)Fuf(ba5I 1S,MpwBW{(OzNG/*Ae{RQd[-3fX 2h'7Nņu7!ls(zj`pu>C_OSd2۵@dp^#P43;jTM磧cvoFV4J ^Q+Z_ ƨH󫋿T aӢMҠza\I(/s@hCG֍Gp{ȣ`ŝG ִy$Tu1"opMB[Bڄ(Kx}YwjɞA'ȯJZoN)|`>Ժ- jo q ~+*OL?(ؤJŦ}~ܤBuT-Oڨxp1d0{Yy:FTfy^[ܗ侵0r'4f?2\2/BЪ$԰soլG2P3K#Fa~`MYNQK4l3`c4Cp6r \cnX>P>b> QXP ѹ6RGGca!UL1H X ["&X13bcE=)Z7%V<-phrw2ƑN!nB#L`~Ah-WF7!`o9(q+息Fjƾv ? 8{rCP(Ɉ㤄2r:iI*ܜBFPI/+mSoJz "蘫gС0hk&ϸfw3zr3:f|RXW2{-j ɴp[f"~쾼.,T% ;Wa(2mPAY"`2mb6 CLqaΪ=L."8)Rt2FyD,`6OV8^ܰ"h ݺJ1FLBij% XF[3_eAbmK ZfSڢahAj |oJc4kz\23Tb, =}> xFEKŹ8pfg*D1Ж3L>&&:N_(`-0aM俘&3q@l 9HoP5CIk8ݑR /(4N)Rm rF[boc0/lWXxDžrgVWmC V+KÂ}ǘ+L@.AJ"] ؚUE k.x-+ac&D6ADĆ4sR̪CË*J(PX|6xmpOVL c SXTÂclЏo_m)Z% [E)ILDJ d >%}Wz l:י%D)hs$Z;ʶ*KM_ 𲩍#k _0X*S?c2X 4ʎ70"V+omg7 Db<8n@A#Dܭ2 ڀ #qvݻ嵨.`"i,s9EH>SWCUNF#nc~bk+QQm}WVIr8}PpԤMzϵ\9I&00*@v\ QU%3ϕZ:&jHڸx.o_yRK(P-SAEosRF^A8M.̾I?(ku;pMT:E1@궙 ARsXd/黠aSi&enO1x8VWl3+O~,: GA+-t"N+{Ҁ Æ]Q-3 <_Dӽ @{Cu9Lz<\w!Utr'HB5՘2ɧeEbʽ?q\"|dLT<&x(nS+f<{_+VPefQ1߼]ĘQ7O}[Ⱥ}\U=L9;5{+*PEotC1%[P$}7nX15 $2$ Ť~YŐ}?θ GZ(#ѫl%7B?i{ێ?06; wǎ-3Գ Hbد5H}~7}gp˾:X󉷦&ѩHl Pz&[4w7PQi&ћu8_oS8*,Wjje% 6x e(,Bۦ\w"4VY=K~́V7ADADtcfYl7Y#$=[hOGV7n,ۢ"z($v0<7R,>JѭTqCfc߈ɷ󬒔8QNlj[( iC&ޜ o!4;Iʼn)?rY{@X%t #/3x}Sh[t/1C2d؜RUpQ"o%AxG>g@dww9C ${dD|WPZҵya7ޕ.nè:҂4bXp Պ f%3 pqI.cq}.SkL]()gsda DFF9k`-.2)a7Es!)@)~;MMj2{P>MR=w*% I@kt(]ɩ  ö~w]pEHҢ m!$>}/ZR+󏔦J]/)5k vh(<2t?gin@;=^qz=BPj))hgV:30~.5PyVd%X&e@#Fz|BGK@t}D܈мlbV8Y {snW\@td'B>iT2٥n{^|ܭ?afcDmNz n!~0^/5d!n[#c"uP=hShL\?=oV sD66W/ L !!=Y"-鋉osfcdj}(dLr ԏZ֔`f[>FJÌQ {=Z35I$jJz?ɾt;R*越NS{g /ަMdBL\+1ĨW:7A%Y &jBZ::(Ox 8rA(E])Zoe`OIRtퟥʣD{aej3D€1evU/([ZfFl.:CO$B1rE 1 cZB8eTugDNEB}hT%|6ؼO5]KS-osCRXK! vڷT.*;DQ|I: ֛n<¹/ ^fXIlHwߴ9PТU4iFc~9_GZEwaaVwdKuiqZAjd$׫<]$chEFe{ ht1~dzluŮX2Fx*@W),`M}mL(s@ 7-[jmAKdm`X&QgD+ 4Ы[,~@.PȳH0OsI 4Ivz.k!(xg^flg6 F̞pqPwLuKԃYWڸEU eU V17Dep`+َcB4?3Q(%dZ\Kmiu9]=i|&v{-_5 ,Kߜ->1e9T~[{/ZC<;nU}mu,٬;cds ]&Z8.@&"dk d-ͯ˟K7y&s4P^!瀕 ?:D5'g&6Q8% tJ{^mAP Ec;SDy9 |Qg )?"W+fťh>("3 [dɯ}' 5Ԁ7b)2?/=mtϳ%nIa!p6~3Нl,ך~[ 7-GP.6=d(i/X\/DRY+^*L ĿM:m/p2Ad%y<&M^z9X8]hq+P{֪I[m "y)*9 V\LABq@Z&!7woV$f ) [%cYw/܀r'Ìj()?4a;aNR&oHK~w0 ?.2"h~`z7B9$!IZ~ITf y@Qp(ѺRwb 0d(? Rlnixr;~~rGF';,BPI}ɓ{{MR5QžIS敔J Ccq\zQ]qI ^ r'm\u"Xk P?fuE"a$~@.cg%۱mNb NׇZ+lL:qhp-QЬ2߭) 9uDn.Ų6Y*G <>)nzlsq(L1r$XxRp fM=V[w>qj_O@A c&$Dcy+ N6u@h?If.RIzC$2?W 鴲+~lɿÔ .Y.@V_0MQFT$x?+S.P㷡 QaR6(=ْ3Wq>˓Ks$N XőNWCÉ[ƶIlaʵ_6 = e%VNЎ_Ex@ݳ+M7I6MD+|a\P}N&חYAAܶq*{Ʌyr  c'joWۖVmFO;G^flՀ*6Yyr?;^n4u!5?w7 ~UQz{JvR 9QGfKHGG-0k_Cb)CsCȮ{6`"Vi^-K50 Nx z=jXbe|J<$m#1Z#JfX>OٯˢOP{:[j%w轥Êʊ$||P ű7S[ +̵2rsX 8s"Z\*spo>c !?dZ6Ռ-wmו>H=R6&7ޓlm7qPt 9yvɃ3}% ɷ.x9j:1ホ: ^DYYw: `&ϡHxAz O$sxjʓ*_|HNXߠLG4&!CJ؇.gSWr Enu%lH5<#|D3UGZ%VK?qC p\->,M~Ҁ:}Js tC~p #dk!U, o^Y7dw5&5*7U`<#'|nV5`LQtCF`4jX'SjI'!C!gBa(E*dt%r!pUJ˝tPU b<=T ZxMcn\{-=uR:/VGo!'d 6NԨk70[#/yJ/7J- ճs>/Tou'PNPl/w8]ToEpx;ʎ.^ҵf;f\PS$bY r;J@xsIG 6J %70:msZ'G=!1 5|T݄;4r)A8cJrogD"ata9}~x%4Y)}\y'&ĄK$`G@$ ˃&v.E6&ԼA*gdXOqnu)SuBnViU4hyTbi˾h%5ax -,)9u>A ,jW/{ Mܟ Z)AGٴ˾_/ϗsA>yA7"}I(gR\9pX"&"?=DF Xe\X͔/Qf%Egs T%]=ݥyK\6_1~!k8Q%BK͚ox<;I3nQ)EAy?YM7WUhrİR@ǥ F3GU#߻BWzdLa,1:gr]NT(͋r]Uog12Y,27"D`7O/^rQ&WBpr-%rԍ:2:Ծ`9ca&/'q:[6 M4`z~*xmO~} ݋$-\c mĊX~~uwIhcMg7G8_,!2Knp?Cn+3C>tƑRvEQitrmKL!hneyze f[OJ_p}]bYfk_Ȱl#u Lygt'17!{Kr.7cۊXW+(#:0;@q]t^B>i߫=-S.׻G]yuK$6}Qc9@P cЬ/ql rw;X%V#>I1t+C6o̧n>a׌ ޙ*A Τau iqY-yI4"bGRlFdK'ؔPä -Eh4Z?.#}6DA' t(_j`5f^H}JMJzodp_b$M46l=9<_#*jIxn(|xX*FxV^#Ta=Y2%|$*;`$5Gq_:|zuFjV{)C(<H`ߋC|(caq ,k*Hm߄JTυ˩D ,dL 7:x3,𧙅Ofz,#To vE+(a]~uAR֏A8aU.%A۷^}F§JA}@ PH: D3IoeeTia$ vC^tbIH%H}oD6>:⢈gOhH8G~O5R%ӛf]8_ŒVsB7oן{ ;iʉ!E99V4+d/'=+rRֈ7CY,0{癋AH]EP9Aq;^2= 3LHKYIҌBlohjc"G߁B!D8f;zԫ{?^;ƥINj a*sh"\!AFX蚵sASx3W~$u^xDXi؂q^b$&̄I  ;E4[=yЁKrh/^fxK$Qep9J'K4Sbkb Ap[WZX`ֳ6ZY fB~M2yGJs  ϩ{珐;'v)#G1I`it*EDf_k_#|\k㭱۹ aV@@ChRje IBcJ'I͸ –]H gռUYsп<+׊%VIDTgOܯRnxJ vg:#>%yl-_ޅSy>arGxzK@ٴX$@h$]]H DCX^E <!r'#uBQ;m՛?|bpi͆P9RlϖXRz{@TY4;Կ4wq'cliW FRpa)_ͽmgI)?ޣЌC 7Dִ`!\R3  |lDoW[X ϕU.s xHS >!oSՄ!k[t[^2Z_ jA-77\x"=^8챸}7>I G=vн-~($ g!tnjv9aY\sw?+EyN*ܜZ\2Yn]&1B=ݕ+ ![H[b]ILiuoJW"_Ly23<]<- y?[W7-^fS̲8:+~BrW#ЯJ*ĸ"Rj֍ە62_U#mlHPw-#G4&shT[ P+NN%!O|{*9yf=Iv@m Kl[G[7L;9AXwVFGZ=\.6K"m5G#I*4rdW$Aɦa DB'"&ywIhW;৊mqreC=&*|i_!& /(~Z랖|$ЕREt$?6p]]`g6WU!-17}D E=cլtVc<5Έ2Eü^<"Z2/E\GKhF0$) 5N0}H1'5챫a4Du HZN,uO=::GO2'KO`/W)ȐDL\ @y BHڒ `6kI0j7g։Bn jN$Z2"#!,C&O<'LudvP#yva~TX/TȝQ,h2.*QJxƔ `(u`."uoV ]  ߋG){B*FPt>,!>DƁe{\1tR rBhgAZ]~ª52D,.?rG{&"u &'4.'k툅 g$~A]@[qDF@tZ0#]F-]EW8gXF9҈蛔lzFG<ʟbQ9Fd5An1V~)Y0dT2FJ tc,~}I0O#TCE}R/3'#K8ٺFv@SX-e$%90O[q^.r0_2ka7e3HfJcn#k[gwNs*h\burJ0NČecoDRY.CR.P8D =+E\y{e7) `t#CBȟX?t7'{ i U}H . JvF/y($g[ճU?MbJ阫rs dy&?RW:*8O*B?:b#?&~)RQ̈́s*Tf{ych5DI^ffзÕZ4,Xj(fSTM@N :U K-LJĮ2>:2_ѣ#Y| R""d\Ed2Xsٗ0U~U%L^΄QRϻd9X%!ʏ -le!M'7980iN9X!FtQ"c}v]t`+rpröy>Lhȼ =s5TJҸ[OEsgUoj]j6P!ycyu%>w;\xoDyކ\KpNMwDUy~ÑSz,H0FP6nPv= %g^ÝV|Nۜ zV]ԍ1 ոWG ]LD7X{nLº0+f7κL&r!*~R4 Io˧h&Z-:K`@4L{m%J'Q<'.I]M#daC%]Iv%wQ &A?Do5-tp)˚^=KGo]NG(ˤjrJh9|j[0%[ v~ɺZ7"ΩE4/ϷiIU _o*C6Ao}Q=O':fh=Kizߴ3 ws9qxٳcI`"o-jOS^Ě$3+tmtS5~ 2 r!hI6 ؅g59Zx-Q>ӧO*G8#Lګ#wHh6яja5~jdctʒTK#@gk-Q#jo)mz$ jS^eu|+VԺt1Yf:+%.*x{[}邎 nDU%ӷveeƑ a]l>V(Gp`'=k-L$6 ߛdh$k|nk?~ff nVhPaYތ4.j"k *4Uӭb3߈F_^DioK88V?!'9C\Y߳&\{ap#]i+H=-4l߼,s:AN!JuFP/ZP#'T[15[*Ϙ_]b*ZRUiy~!; .uTGJ͙F -bLA8C8S!8NxR%aB(( o~K$rqo`jh?/~w QYxJ_iy[r&hV# `d1DWQJ>!mg`\N<[+@N1|i(.C*34%:M?SfR?VS9䮷k:[D;+B:^S-\; VK W0$^3rE er- L;\இLjWB 9 D!,azԹd}.L*G=ATCu;Od. ] r)NE:#}b_ta42T:P=>ቿ . kk=]!*Wzk .}©{CT? TpTA1>@ɹܢN0jqAۢ_Λ rCBPɂ ml<j#q,~Wb/>:"Ց y%;zvMնeS` gQ}~ xEhC0\\S NMY`сY8PlvҴOsyY`e=O`Su{&'=p?%#\դԭRElAB>),H] zf=.Au^0@a=2 Rqm❘0yԒ=K39S9jaHi\F| #h.ar>i'\Ly |jm}؈xnp2vș}( ccVrt9r O|aG MxG'<LT /("vAOA{@Bv ODŰdjHvk""lz [y:¼ВlÌVi0C0j[ݥ#[;_3}[fHxJq6v;jCgހ9 ÄZn$y7i9 ~HZ`Pͣ8+ˑkۣIk^Kf" fF"U XO ,9epr<9c6ęG*vw:Q#4d)LEi9x)O ]G KmMUwOkq/6>=ț9 :PHQħo}x;kD86ii'{0a*܆M!P̿e8kv NQU6ͺ{ݳ`ur:ƹ ,ŢmD_v$_q=8Ů4+rdXh|YsqGgeY,S_+*5%}'ٔv0)Ȥ7!]J$e&`սE[ɑqN43}|l6MINNM36dֶMBp ޚ0>K~UږJ _ \+Y2gS $0j?ܽ0է ,E?,H޷(p)OJJ~Ls0x;AϬP˸`ŚƘ$͍>2)=:1h3 hu!IM^-Vb=U 6D:䍅A]D\&t؟[^*XUI'a6q1:` +OySZdK YA7eG& K-v᳌#$7X q@~X|ub`&Cvùawj L/囝T;>i wglH;YK?M6 bvI-o T+x7 /V:~KNc\9F8e9j@p`O{# 9W-9&wb~J],$l7jtmWx% !$D1)pA/"a"܇ m;P8_hْ;yk4`Tfz/(KCce;'B+\a8/y[ dd8L|uiP蹆Q8AO/L 64OYG<u#Agg,9nS%k0V? #22 -@~l}_'B4dq6Y) @ؚ' x4/ ѹKJbEr4LIޤsUNPNO!8~<>9;ϗ:1C\#%7: ~Ev_R #eHߣF라s8o0nt 34po6K& dOʬ ;(ōB zw"Ro|)12%ׯ˟p) r7y4~^4@N%㪘)0n8!wt1}M6;Aӧ<(\SD注w4hn\H'h f![x8N[Vv|Ǵik蛙lzlMQT{2ꐂkpLWPC߱<7YLac<#c=;B >PlIv(7̦¶j Z ^![@2,r3/t|>MSy+=hCQMu1oOGonŹ=y'^09SƆTB)4367ʀ,)'Oq(|c8>i޴d`Oh1Cܒ0u 'D[Ȇ:-c~'#E%iGFfǻnM*t@D>/8B9bZIj9Jw<4H ZNSqp_I>e=By|Zl*m\Z"=N)k65ݳr(]F#[|lby2&C5Ju'*i5UBtX'r{膟|SF4$2/+ޚɒ]V'{u)4_!GMiZȊ&멂X;A!m44MN5X=Nrz|}EmxsΟ1(+r_Re Z?nD2/N @ɀ`vjv405Z(h35waƯnfck ^ciZ&9#PhEN9lڌZRIn`A<`UC?XeȚ"<Jv=KzOn.w+1%HTΉI!఑.XonJk/f &]Ffyp-;ܕhe__X-%Y"+Ч߬+7>wgb$ PA=RX36ug@P7\-F'C5E/NZ4ȣ\+60˓K} ؗNj48HճXd~z_vO]!`xc rzw00ĝQb1rqku|Pye,G|Nˬ4*Vd> y:'rhڭחZ2.tOȰl|J&- caJxqy1Jݐ9ӹmL05AʡYmBCڽX.tag eP GR4U2ۇ ["1l$pԺd+-k0-#4'N[(jXrF/@&/VHDC7E:&Z{xr&%]q/q {x R{_I ܇ LD<}# qZmjvl9o E$5;X!/uPJ 0YxWx('ۯVj}!_j j.@2Clt?W F._/)4td5XT9xïTthf&J"ΐ4ɤnl,ݹnXxoY`J-&GBޤhn$~Ά.p| cZ33sw9Dihaۆe1̒h|JlWNs;'ZaaQM@4CCw_JN:ّ騠nkXupF},Bmi0F:f/Yd~/QWS)듖yfH!V"%◅[a4V| `UzϏ d } ;GoޛGu].X`i:6keoqpu^#ᱡQ4sT|hN3NT49A>-^c3 &b'KMi6PdN@"Dgbl+lN-:@sܸF Ze^ɄQv\# ˞F݌gyG_<+bW'P'$һTyLgO3' j#}!b)S罤M9:L p'Ӝ3'VX,4yE,yN,ZaޗKA.N_/ @^߃t?xc3mSR5_+40c9LEɩn\)ژeHJ4J /X;x֓צ^@ .˘è%ğLN֒Iaw8 }n.2ܘqBgQYYL|)<>9IMm8{;Sr%\9"N8 A-3 dU zm/ⲥt) N W(/ mq^Ņ}xgr@hOdHW;")\XRm$*v1j5>~21q+駞Fgu>֟n{H*H,P>x*k^X*9 V8zUBw0UA+o8eC k%IzᦰY6ÏP0m{C+i$ gIŊXOhǙnaר.%!ArY;@4Rqx1;!uS2\I=N^QRn+bbnH cB/XEdfQd[& ;Fzy65WP_̩u9+a,pQUy\ת9_O&O7S ء|QvR7Ss2tr,PK; >˶/vY57L׵1=dV f;ZI6C'yS$M'rPwDŰV5ZB2{GDWH`w6Uڅ9 XrߌI|TWwZt!-_L,X 4ЎaEwPԛO@Iٯsdi3Ŝ}u.?kPhѹZ%c?_O`ؿ:A6B-+o?_oƁm+1OYw&CB'c*.vR]Pb;Su=FT?xlV3i=h% .mFS~9gpVPZYS2A1-;~+{U )mQ,&M kƽ٬B (#!ib5V:^E?1Lхkʒ7 sf!E`g|zl`훞1GǦ{rF;.8 &T%#:wSWo;{ {$E F@ I]M7-I;#0U~kJ"^V8ĉ<dmt&!pYA z3S09f-(^m1>%4NKa8œf_| {XeP/DW#THdzzVO}`mr-nVj:DϽE3TQT;, MI88BfHL5ZcBݔ:b H~;AlHa2Ä?i=51e|A&bG1x'W`ueX(InץɑK+9oTyG s; 8lתe]?Pe"ISWD jh&T@8i4rOO"0J q2B4p67?;1))Vg \1(pYF^$d4dpF6Sġ{BIz")B]{gⱓBafws'wjyc|a5wEI/mHJEQ ("'-~=`31`˦yzvQ&+ˢ[S1K=f (ts7r5\IEy6̆Q孴9wI~-;ms64q= #d%-lֈ|)YCwhc':aa;9_k=ksk>߈si)GF-G?Ӈ~6lT!K<_\ߌ`-KF"0p W~?WJϘMP40+)djrw\K[<G AAr-!xi̤W9 -k|3zZ7>jvùKg^FnGCX֒dtNHa^>~AOiz}2MշJ&P?ܥ,CI3kՎ/9Dcc!3o310n ?m]j%4x~:ʨy3t< ]Y-qd$h] 2 -Vu٠"xSgj yBP2UJFPHy [ .N|GK 853p͆sgvQPP A*5ۅ,kGRXg/MzԕgҠ1B3?(T X$*6ַ ?@zmI84 0+5·MKfI8E`e,FV/#NƗ'^-8 D{ְ OFB|?mgH"nRTh◠i^" 8黏w /\0o/D$ G9ecOR} ޶\%N(z0P];gu,Íh74 eખ /SS3K\)od ˚FZ0cqN ⍖L 7> pgZVGӨDL5o)LxȾ(DV cq7Ё1& 7vrHnP +n= FQ#ml*-BGt;LKC'yWY1>ʹ`00~nmX;ͧQX'nI8spz@V=spgmwi!w&{gU?hOSwǷ @$-,ԕm@A>U#F-KqZaeԊ1AVNK䠕VhzSuN!{6?uQ'5껬VN:#:9|!]D ?4xE Ҳf(BPyC QU`c>ţ.IޒEּ=]5IG+Z4ΒOSzƓkA UŨWE :ijJ_t 3^v%0ā\{qa+[ k˅[aofVo;ǺTc7(Oyt!Cx3]y4"ccH+zw ].&ɖ2i Z~8n3W@vR$t{vO =McX?Qi*Zr?50Q622𽑉uA%~g*^ϵ[荈f1t40PPH.[vIքkI?NWL>$PH܂{_HG]mzURɗ3Y`=$ǻJdbQd hq8سP Zos=ꏶ." V#Y8zDNߪ|kc=I՞CGii@F#RH*֩sfZl|җ% ƒT%UuM{l'&oӓ7ej FZݵJGlwU{yQ zc<N;^OCwXwT@'5ɼG2]D^K[|bȭx+MHg *׮+1݁'VV򝨟))eapW#bH`󱟀:"J,͗ ~rA95S߯oֹJbQ"gڍTG`<ƅ0]@IR8g)pI ىU"[׾T+cm5\ؠ<.#}l3wzb?b ;E14T<}hy9D_D >+ e2v:9ɥiiBE*_\Iٕ,atc)Jg/t1P #+)^1O4ō+ e/vF"{r3D.p/qΕ~V[Ҡ/UA{1ΚQ%^K bn."Oeb̦6<%C.FZSvˆV& ߹>66&Ӱa ]^N/k_q)F;H:2m=/2f,ZA/fp{_}B8ʞksںK^3\I:ip #{_(k|7eO᜚p`.qW9Yd69KL6V:>X ;kQmϞmmr/ԃa6i]0bD<5i)w6ƻ:1P~* JśFag1g?.%UN˵;`jݙ*]K3Qz>۵F$nT:k>DvuD @u=jdI&v=v6&LJXH&!B X=[Q߷xXnCV|goO!45ͻ]tpyސun1\A#u~G"a{1tVX]E# /ˍ% 6NHcrh*=?$a|AUm]_rl0ފ?QnY˝O9hX6kD$,c(_wλ訢j-TDnkbvC80lkJJAHV 0ԻK ӯjVn.(;+m- )YP|WcXz`T\4pȐ/>:~ 2E*~d8ģT([R=5lAnJV!) ojIk"O-{Qk?OqBs"⦕73ԌY{MN(n;4`ͱ·fZ{Vr% 22Vx!o+&L@)wx^O{ʰlk%4w%QNG`4ή >&3ЦPy̛<=(YM\`L ޶@yx;(5#UV*ОX<gkv2Y[}F`'~)"x;'?L.S$u L}ϞGBiSaܕdV{nPk_Ș~u ɣ3RϱLO u`CΦ'E>CXA#ڀ>|k%%XOSW4a?Dr3Nnow#v"vT%ggysцmUh -d }bV@NЌ $RxԈB!L~6|SרKnC3bHR-Af ת;o{֣34<İ~Wމau%I6e7u7v5tCdh@}۽Mjl5Z&<KǚrnO(׮z`ԨM"7D~8v鶐|ِz;X^FJj-|dJ{W':Hu֩|ۊ]^|/`LݸWJXԌO԰~K5YV%O4qj_ kB46H\cn)OݠOStk/_w4Ɏ: Z뱸~daچBY̕wu7a(-|EF Fxara\+ש{\OtS,M8f^C95L͝9i~)5:YZc3_sr4HQ7K=MH?#C5g I!RB("53hcl*gȮK>>!ydu{BAOn7 5y{Ox]3dfY{CxjFMk<{%εrޢ4Ĭ9l^3Ɣ*~کdxOd:C ɭBk gT(k{JMUL}B|gk>* ُ ʓ2% # *q{նjr fiDL $g#"K?ˈI4,|vk00ƔIDX|T)en~8vPnul`t''4lBPe8 %J Sɿr n ÖXT$UW٧/|`n.}Tdx#NWW;nyG[oJPp(Yv?ʹ3Be'kAQbvz'sGXœ~?'ES̽פtqCϛ2ihW Rsk}yc|Mj&eKC>׌D^lT1 嵅( 7B! j?HQ{gc>|7egs}(hEJ^ȿx)^BK5)@IitzjSi\!8Sĭ+"e}v>q ͼjUX}k/@ E<}XZ#zYÜfxNgffZaVtaCˬ9;`C3ǾC %kj[~Din/teD/z8P yVvZ^*E-՘9sިUeVVϽßOb#mm‘h2xRgC46~e?-&S>N+nv^xe=`qsi.ew$k8{?A6|Tήr/`hnr!W B!aLV"L~`z[MM)?2L#a$Pі/74:4Y@XY`5E)3ddw*jOC-$K<\e'q,BB@r#Z!B2j^ {|:Mbl.p+~JW=o{tH}qkԨ ȱ$>kUUbE:|Ń`W< Rq4ۉk^#ΫCكzNs<jGfug9]ՐҒ`#v|%@@0sT5! gȽk)[>K Y4/`S@ٷz+.㱃zZ8}Q >hHA6tSz,2\ N2*첦>pI1R%%27pŶ֮1]vx%8.w]&/ҩ6o3y-Vr@;+{QW7P "L2M~ߗuQ,&yl(K̒>uiW}W~rY:`2$zÖ&i9!eKuOhk+: 4Cˇr/I:h>x5|?+"?c[HopbB7bVMhqYkxc0p22hʮbtVL8ݬZ+ VL wiA*%e,"AZqtnkh:(pt>O}FxM ={-^>t(ܣk)$o( &Ik0׊qvu֊muv.'R-;I4gK6 WÎf#T0޷WcfD90tk8"byQ)<Z>u~ KHNdhٖ{r 1ǻqZ!-'\R ]69Ĕɑ䫻q5 ̛}Uxږ<&ZG3"%BlD*kn_#vrV6:||9?Fvp?ncy.{sЬP`sr+6}KYjGAC2iD[.ks9l@*J) *e}"/f*`wRQ4[.찅@#=ReP).#h{!kzH3}rD(ƱLrʩ-R|i/EJCndړY`2AGнsd|7:8*$bEA/ڀǙstݛxq#'߄"Pil!JBcʷ {`bD;FU֩61H)9křIN L.Xg_A3ÔYd9P<#T2xH#e\ȶFmT(ʑm^އ ć/w8F:sLLgXA%Az&H5M pDT)_vN cxX J_2`c ۮ(Ь6Dz"(Jr$1'ԛ+LtDQF k%>Ў}m&=Iú3q׳ay\Δ/~KxDz*E 9%Wtfx6@ET 45(Lr!9b댆p$Z(#I)܃58z(#HV#{7]P{ԻXQ:wn"GhuhPSr&AFL ho$.ͿleZţ_Bx=={Ar?\OrOHq   h;IV~b]c[B08 z46!C(%8MWd~@m,nMH??ܱ[(̛#c}uV|_QGuNli ?\‰+%{/_.Of̼ʡN@sDPzNpɧ Fr@e@pJ[ jg5!0]-DI8(HɊL^Ln;bom|xOI%jӤ95ȹnHHr艬{a쩵;;w{ /f!ʎJCJf9jF1H־B#oOw*aJ'cR>2T:EOiqI4 G@c%e oRڿw4Ϊd*)DYr*IXZ.FU?bcIѸHSتXQec(S4N* VPK<gZ|\L!>"Ji " nsh5Q`)kyHLlt}IJS+##ԁmQ9{ mCY $!lS5E 𰡇Ps/",1YKf2yFHy`kdi*&a$"sv6(!53H2zUUFNZCi=yEE1%<:CvNFJ .QbR QN_S}ϗ @?ST͜|!#XN3=](V)bMAAT !465"]K"l~kYiБ]\.JyWڐK>imAɅPZq˽Q{\a܅, c o^hUJ/^ȩ(Ƿl=|wC!2X7֊(򓻻NzkW"g cI0$܍ŧQaݐ1}IF>O&]*??wIKLQeykWHXi!sGpSE44-70v]og5/!AV-l%:+Bw dA6cy?7FZw!n-b j_ EjL--SaF"9VuϵWw/tz 6#{?J/LvSxNd/ǚ *X8CVDR gF'I-"$?~㣺tYhP4`xpSᴁmy%ֈXG/B}fY҉х_1FJe:(c8#o K(e9pbCC0|C +]unPF/pM^C5ov(K҇L(;W3nh["x l479LBişI 8#"$>|Y [s-d%:Ul2(J1ɚNCԸZ9\.ɀ1R]X&䣘To)lx3nfw- 7n'SP, 5f|P4l6B(ssz:~]Sz?0:Be׀)&JSV d'z,ʓcd8rU8Krӆ֠3]^`1@tweOMδR̽1&*`"K6ۗC|\2 %NT]Un)f펾M݃ddxh<:]htFv (I4\4ovaĊto<6pd`fٶF=K'|$hWKT5$B]?nRWNvj%+`Qn18,-zt&W݅'0+8HYYǹ aѼ=";a5(arVz$és98Znʠ}v _BkeBr =ުтKM&'y."~*LKL DZN>KeP!" oTؖ-Zmf l tD*^-ac𧕚cV{JAʃz#B$r1eA/S 5){*"jsA-=(i2fg5|^q$ByiwH-e*g\_)b_E)v (518Ghl)e(Za THay=ez}ӏ>n45p!Y;HHPƗSQ 9+oY@]Vvbvv;Gg'.z/ZT'.>00KkZfLCuI=@duNk.=&DKs6]T+zV ;4"pԈAz"Hp7jK R +E 4-`k g|nk-=;u䆗A^> Dž3ypwO%Cq㡷;unvAXScfÇk$d&@f4)TDU|AOJn\b}'1CLu' e?x= ?0'r A˨cΙo(W_Eý ؟g]305\'z[ ߦjс#)&Tlr^bΗe?1\x#l]ߋ|qU3}W[!;vhMt^PYSo@4-rUΤԢmxq0R s ]q&)_L8dc{*D} a@9N=q)*Z}) UǃwsSEP dP*nO71آuOvz@_|9pT);J1R_m+(읧U~N}L}685emEGmvM4=G '%yܛiz,L z8čV8 n_V#~xc#:*rbcqU.@HC#Zz:HhA3w0"EƔ޹\Ǹ/clMfz?FR4іO"x5+(@_]{gT:EŞ2[ %fMU+cwF(Plc)s=8>ԟsuI@#w&%EHwNx!B^+6ۃ5jݾͿ{_^wQ9:i3: A/M.{^P-Hߪ7#yc\e[-1ڏQuQ*l:A8TR6&͇1e DŽM{Ӻ!yđ٪' y/*x3+Kiւc{{:\;ɖ8*_V>##xPBQ D ~VҖzrX^[9FQFlTԩn97ݗ<[Rwkɬ(H}3ÚShtoRp#* ӰgL -~5tu/Ts`QK?P =ܕ"`2Ɣ1э1>嶔1u@d {,4s OtI >{qÝ|aGvVvglcK׿>(F+xT#$:*~1:v.//&~ 2',s"1>j07i{T^5MԿs: w2tћdf Լtk$(̙koӫQW<`U=Hتבy l ,?diC|9~hGY= 5TFh3ǽ{!6::Wf7k]IZ |~GU_ 85*Na\.&ASxEt^ͷNoﻛtq_/Fp-Q(J!D3ST);:ޣۛ`žmu,I2(Xx{J&g aъZofYmjdό;0x16C 0)LCV/d ː W2BXxcˢ0*fa`'(KHVzzEsd$N!t97 3O$1rv-h [T̃S^e~RZSq\ Iv'96'3hJѺ`hI3T1&Sä/%p@g  ^va׳;^5fDNuR@+ιTk76)}A?Z!.} ǼvB#w{toѨi#TׯS8ɪ}꽞h RBnza-1 l"KL~9Q{%]X?r7!Z cG.;ssŠQoQn֖*]@"qv~J퓌)Ix< "g.Hݭ &61x˦( 4$u΂~/ RIҙCpG%bt7Essk|se5^;!:ww8;[ Y\j_e7mQQ]-}Ǝ,y\*-bK\?q4sgg^3 " |HG[0>z ٓ}Lⶈ+pGb:)1& c4~ctS5!QsUuNoN GKe!b;&;?rb;أND?W^"Pn`=R>ZNz ( %ɴ6>cΠH?:bE\HIWvEP!oK n!Xw JHm*ut" y߀Oҙ~|yiD$Mu]sUm[obo;#&R23_56YmC$-叺`4X`DVZ,b4lG=r zQ[UZsq [E!\;} n /=* X@-MȏD!L6f~Lsc>~fWX#:]Nڒ<$9+CU;u[#k|4:s:*%:Wg |s;L)FBA!vq#$Y{Lngy0+*8XcOȜ) ȥ˯ߧgm/ Lk`Rj M+]h)S)$({.!#d ۝& ޥ~ASJxgNK H‚G\иʛTy@_ѽt}SƱXo Iv3]M4]+Dl"xcp9Tޢfj*xc+8T)RtCvl'bځ9"٪m1-ab/OpC1h 66%їN׺&2NU{C^@;N6.Bmϥ=& .m6 f$ADZ޴&Qrkс icq~va K;Yhc?íVާA:s<ы"Lrz= uҿ(@N56}K7vٳoPXzw$@١zدI:CFʍ'z㝳#)a%s=$ሷJ m^ Cc5;6% lsv86"yW)s=;,O)zѳT10h}E$ܦpl+؏gdՅ:A*ZDžǝJPz{])qx`+ETˤk^W %lv'+6htse$SqSͫlZUy0oE#QƬ&IoBnd2~/ dQ#Vixi---!>7D~?NT G#FwcLyV# >җe@Ko[X"<.qቑ᪥P_C? Ev5h2ѣ9=x?{~'97}\9+|y\o)w /7[oϣ64TQXn2_81h!xpSNw4e÷CF4_pAvcVI X:e'Kj1R#gؐ)3;a t9૬{j]vI-m>5)f;ݐBl%y(ЏRRct? iJN|Qˮ;$06%`f BuUi4Q{y(1y"D!cRs˲+Y ӕB35@eItԌvt_>H0^n(3tμC[F \3r8z-gQyW%{8t`C%dž0AIm[|pZ@"O(Jh^v}'TEq Znƴq)Nj=:6~Έ*Ųxz GUTSSޞa1pA!3d Q\ I)S;=[Bj<琨ݕі:c=;eC+9VhVXp1}4]qKܑ^횕K2#Iz]D8g%%DIgl oLXw HO^[97(< e1/SL %y(bZ.?gсB<Ҭ@# ̽DJj!K3C;3j~_Z/7WmǠ G c& =zO1((? oadH_xJu KpxUn^Y ʲU}ȩtg Q8ABڪw4ʶ nV0Zgw6 b%LsJ!,Ē2KҌ)ɹ ":b3⫍<0+=ݾ &?O7yGFvں.@&iJh7L'X3~Y <-MEsen>wVoIxG z Gdsg"fW!R+?n`)F.WYA0ZUɮ1`P]ۆذb}snU1GG-X_hH|;vPjNpǚkQR>E E[ .T.kHk?ӹ_ 8(`PȽl{-3p(XV,Ď%{`/p=@F|u$@0٪6wŷ:4g ?v@& K|@ ʯWm/$'_O "i6O"6~7_*3{TfONq|AM9CɌ =4UJ^kW~9KXZ@V.`98Nj׿M 2ٝMM.zWRa[1'k r' *k7ۺ갲}vІ!l;Tì ӈ};?,b(;Ix5 uW^;nYJQ DrYPt3\.#qf> H3Vo5KmvRًhqPQURFw МK[wo*E/C34AkhÔ[xH%g\y`ut|s6']{kpDcy3 JNq<< J$߱qRez%P9/$]y!CTq=^&>mYsշԼm&IX年0zOL < ;LeTʹM4wA`U" .AIjZP,ROEr:jR7D$Ɵ`xFV̼F5rh؅2X ^Q0?=!R'(zʙ_[q$P_6n-Gc z[ޯ#ybh"%s mTdZyKc# \jWzϰ3'6Z NT bQ@Du׺eMҝ1;b́%AEvqzAytݘ)ǘθ_FpxnhFASI#e9>{YMR|-W>=1(+ODz2U-7 v_AH,&%;IʛHo7+lG RT~vVr9Ab-e(bƔP?bg8(n_̐ ȯ\ b-vkTYmA*ϸ7R[O8d\adnr\hԱxtv[;[Ul} gco @F/ cN\;0.kWaU3U\74}Jf= dO;CҒ*CnQD[ˆ%n$,T(ZP"' 'Dɿ[r$ky0߆}WLws[_0syĂl&?,ΪD?z~BQM4'imWX,=D%aVtՠ%uFdiA4I6*e zQo ~u+- KTUDdyQJ ȿJ[={3KTKƴ) QVooxF"eo*6v5<2<x&u<"tKNY\1#gDÇهktMucADT=qIe`"xI֍6/VZÂ&s5aeM29tY-\Jpm {۶</%] %Fyƅd[Msv1kʂf:Yc3o0-fyߙx0M`{K"f`'5ú pݷwnlyYSɑ>t#RO#$T<`I%8Я_ ZN85{1Ufe&zh)ig߉lVԳ~o OeCC-tzy.`Np|n)#7)Cz] s:.' _E4L=BLhjm;ivhwO^b{SbقHy.p#%_jn1\p&]]ުօPHŴݥ1@)ă>@iLc>RyB'GmVah3UKA|Di_o_C]jE ,764(~>u{O8ͯkZ{qjvVn%*``IXT5YBIM*a"R5Pmiғ0:X/I,!gvECGkwi 9pyD.a-YhLzu 1]^,/嗊"Q  +Hڎ$5.z}KGi Q!v˔2/Ea[C Ԟ13JcѷRIQ `9WՉ9KQ(ʿ{?Rx< aKMWKw;]b#/ 鄏b%T/N!XRTܣٔ2-˰בc5}F-Pj|p`xѮ :OVe3sVIdC܃fE+# :T3t/w垶*GAJR`lBW8H dNPrnz1ޮP-YQ"JdY~>o'U]N@Pڶei!$Z|_l9m[qF p/ղy40eL}OZbV dE]kD~|`(/B9̑ڊ MD ˧ -=$Gf]0lk+}ծ<t;bgsƂCX0GLpKs߾YH wC,$"FDU7^/ |TM=jڨrk:ĎI t7&LW%_ C#O\Mmʽ/dBOS c.Pu;;Xv]D%|ۑ/-_v,*K ~YV_ H[?T@LK;0p)L!.^N-,|JT' u'͖$|[cĥc|̵AEQR%Mhq+s2ew wbk(C|%EnG~ {`(jh-mB& %VxٟXbC;oc{c7TpRYBUm/bՎn>}D~AQIr2܁z7;+t䦨?)G\}7*rWoŚKvhk" ML@Gj|K̐e8z#n{Ȣm z8ly\cg@KϬ#<0䛾N\=]l&@:{ DS RLMgZH |H!WIE}|jblRad|F| 6LqDW(oF[.0@Y4P"Yli !(Tjfrوyqhm6*[nW7YP^ o;i{,ap'ȍE 5Vvg^brg^ka2AB**dG $72JẸ)o]f/,jЌ0uB/\EjE=B@H7&`R"Bq=Y &Rve׾v:fN?D?_\{o<q }&M@^U{It$;I zk b]f#6 30?!{h~zxБmOՑW*m  qTEHuosoפ:v8[oy'R0zWpV% YNU[D 6KߣD5z iEpI,RJ\^|Gԛm&.tH9WVCymb/]cWRjDEJP__8D5A]HXr*m"zB\AKߏ=9xpIwzM'!w @nT䗔WE;ȡlYGsjcҨ1IG;e'~G:jp|sXYђ"J yrǑX:a.jBeضZv&YM!9sPqVHKϫ3k|۫^E&p+ Ɩ(Fx {T ^S`;CI#x(d\N^/Zf;{ TʅU 8,,_n^4ؔ}?%\jK~I6 E;j#'׻ i8ngÏ/B8iHcqekoAGw,0%W|"eLx)|IF=-&=o|quU. [}ihXnm6R QXå';3BQײ e u`!Tĺo(ZکPQ9³ Ljʯ.BN v2Zh;M 9GBJf\zziq)XeJ8Jo[R${˃xP+C=<#|˗bF1piL-D%w=6עWŪ"oKIA#vʺ68Cr#ȘvIւ~ SG&%JpY-L4x:89`eC}:mL)ܶʚ) QBf {+4\}J c00 1 0.0 0.0 0.0 1 0.0 0.0 0.0 1 0.0 0.0 0.0 0.0 -0.93996834754943848 0.63994002342224121 -0.35202819108963013 0.13592743873596191 -0.029452448710799217 0.0031686816364526749 -0.00013184738054405898 65538 high 6743.63623046875 0.0 0.0 0.0 6743.63623046875 0.0 2043.969970703125 1467.5894775390625 1 2033.9371337890625 3024 True 1465.7552490234375 0.0 0.93933063745498657 -0.64132952690124512 0.35344576835632324 -0.13537980616092682 0.028993129730224609 -0.0030822225380688906 0.00012678984785452485 0.001000 4032 relative 255 2.685547 0 1751411059 0.057129 1278226488 disparity 4.500000 UkVORAEAAAAwAAAAAgAAAJqZmT4K1yM8F0iSOTVeuj0zM7M/DdXOOwAAAD+amRk+ libvips-8.9.1/test/test-suite/images/ISO_12233-reschart.pdf000066400000000000000000002714201361153320700232320ustar00rootroot00000000000000%PDF-1.3 % 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1 >> endobj 3 0 obj << /Type /Page /MediaBox [ 0 -680.31445 1133.8584 0 ] /Parent 2 0 R /Rotate 0 /PieceInfo << /Illustrator 6 0 R >> /LastModified (D:20030612105332-04'00') /ArtBox [ 6.29297 -697.5 1127.56641 0 ] /Contents 13 0 R /Resources << /ExtGState << /R1 4 0 R >> /Font << /F1 9 0 R /F2 11 0 R >> /ProcSet [ /PDF /Text ] >> >> endobj 4 0 obj << /SA false /OP false /op false /AIS false /ca 1 /CA 1 /BM /Normal /HT /Default >> endobj 5 0 obj << /CreationDate (D:20030612105332-04'00') /Creator (Adobe Illustrator 9.0) /Producer (Adobe PDF library 4.800) /Title (ISO_12233-reschart.pdf) >> endobj 6 0 obj << /Private 7 0 R /LastModified (D:20030612105332-04'00') >> endobj 7 0 obj << /CreatorVersion 9 /ContainerVersion 9 /AIMetaData 8 0 R >> endobj 8 0 obj << /Length 1513 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (PCG ) (Cornell University) %%Title: (C:\\westin\\archive\\ISO_12233-reschart.ai) %%CreationDate: 6/12/2003 10:53 AM %%BoundingBox: 6 -698 1128 0 %%HiResBoundingBox: 6.293 -697.5 1127.5664 0 %%DocumentProcessColors: Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 5.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKProcessColor: 1 1 1 1 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 1 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 567.5 -340.5 567.5 -340.5 %AI3_TileBox: -27.8809 -794.0674 558.1191 128.9326 %AI3_DocumentPreview: None %AI5_ArtSize: 1133.8583 680.3149 %AI5_RulerUnits: 4 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 21 %AI9_OpenToView: -280 603 0.5 919 629 18 1 1 127 241 0 0 1 1 1 0 %AI5_OpenViewLayers: 733333333337333333333 %%PageOrigin:-27.8809 -794.0674 %%AI3_PaperRect:-13 936 599 0 %%AI3_Margin:13 -13 -13 0 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 0 %%EndComments endstream endobj 9 0 obj << /Type /Font /Subtype /TrueType /BaseFont /MZKUOV+Arial /FirstChar 0 /LastChar 255 /Encoding /WinAnsiEncoding /FontDescriptor 10 0 R /Widths [ 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 750 556 750 222 556 333 1000 556 556 333 1000 667 333 1000 750 611 750 750 222 222 333 333 350 556 1000 333 1000 500 333 944 750 500 667 278 333 556 556 556 556 260 556 333 737 370 556 584 333 737 552 400 549 333 333 333 576 537 278 333 333 365 556 834 834 834 611 667 667 667 667 667 667 1000 722 667 667 667 667 278 278 278 278 722 722 778 778 778 778 778 584 778 722 722 722 722 667 667 611 556 556 556 556 556 556 889 500 556 556 556 556 278 278 278 278 556 556 556 556 556 556 556 549 611 556 556 556 556 500 556 500 ] >> endobj 10 0 obj << /Type /FontDescriptor /FontName /MZKUOV+Arial /FontBBox [ -665 -325 2028 1037 ] /Flags 32 /CapHeight 715 /Ascent 1037 /Descent -325 /StemV 96 /ItalicAngle 0 /XHeight 518 /FontFile2 17 0 R >> endobj 11 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MZKUOV+Myriad-Roman /FirstChar 0 /LastChar 255 /Encoding /WinAnsiEncoding /FontDescriptor 12 0 R /Widths [ 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 212 230 337 497 513 792 605 188 284 284 415 596 207 307 207 343 513 513 513 513 513 513 513 513 513 513 207 207 596 596 596 406 737 612 542 580 666 492 487 646 652 239 370 542 472 804 658 689 532 689 538 493 497 647 558 846 571 541 553 284 346 284 596 500 300 482 569 448 564 501 292 559 555 234 243 469 234 834 555 549 569 563 327 396 331 551 481 736 463 471 428 284 239 284 596 212 212 212 207 513 356 1000 500 500 300 1156 493 255 894 212 553 212 212 207 207 354 354 282 500 1000 300 802 396 255 863 212 428 541 212 230 513 513 513 513 239 519 300 677 346 419 596 307 510 300 318 596 351 340 300 551 512 207 300 319 355 419 759 759 759 406 612 612 612 612 612 612 788 585 492 492 492 492 239 239 239 239 671 658 689 689 689 689 689 596 689 647 647 647 647 541 531 548 482 482 482 482 482 482 773 447 501 501 501 501 234 234 234 234 541 555 549 549 549 549 549 596 549 551 551 551 551 471 569 471 ] >> endobj 12 0 obj << /Type /FontDescriptor /FontName /MZKUOV+Myriad-Roman /FontBBox [ -46 -250 1126 831 ] /Flags 32 /CapHeight 674 /Ascent 831 /Descent -250 /StemV 88 /ItalicAngle 0 /XHeight 484 /FontFile3 15 0 R >> endobj 13 0 obj << /Filter /FlateDecode /Length 14 0 R >> stream HWnF"Oz~ dfc'=]0Ԉ@h~B6ۈ<<쪮>u9?.fi~ڛvS;XK]ub$TY_5]ZA+m)L?WѢݭ^~.U=mKw}S/S<ħWƗοm7*=okxζmWJ UqʹϯWǐ.zsw[wf1lF+Ǫf ض]7]V] /XusW1|(euҟz=ӄ;!P5Xf׳ 5%wm7W:yo yJ ~/8lLiwH`|̬*Uo g]}N}g*œA(FN8A e|DD  d#ؗF0ps 8"9tp>5rd} F iLN$$%LṼ߁>n@3:Ma| kHmɨs3۫_ 419V Yrt 1]wFAuHj>2JipFo*@KV-X )%~/N^2ܳ"1j'sYn^WFFe|Fs#~ 7_6DsV+&O4Q7A"i@ڇe6r/w8,+xDMH&M9]@+l2SŎܷ:)m 4`>f"XBO8a4HI=VuS>ReɄQ%v5ճ\HL!Դ"=ߤ"BtDWL+I܅kҥԮs]%paݡ("_8-W.}de}=eYPt,{F.dӹ;.m긨^tOإPHiLNN6菓V{<dzG?Yydz/dLvwII1^/xA쉀'&&G_qrR1U0:E褄ܱҒ'9L+zMR1_/Ǧݭُ\vTz[z_ LiMwqBܰ`[%UNfP8ܪP >閳 04$`bBPԂ!Թ}Z@?+",J;IvB Ay`=pcJ"9s:"F-u7epJBU bc 0AE4cƂ( E 'NK3^ffw} -c]O<$xo6Ni=4:|0{DH UOAzpR9@PVF *ƃ$@ ~A/a -*2C*r i1,@%쓧:A:3](.&žܕA^Bs_z)km)PSjoyx1(2Ƌ$ ,VNoz"S! *w 7Ц%Yj[Ir\h /-:H  (G#G ،,aE4(NF}kc6 L4_NjZ(%9#ZyhxpCH9B6 sNIPx72\eŰи}Uk gi30 CJy,Vc )fA)n0 1(b Ė|CXnG'U)6Z:a"B d'WЋ2wG f~$2YɌĢKq|\Y>_0 ("7D';:/qa]fРDS G$eSAX x/_'Fo`Ԑh(Z[B 2oګm7~a-~ y!YÆZٛ,Ia|}NUL̮B$at)2a] >Hi lsKF`> !E AXu3@)sDIsQg#K6[BwAA!9e ]-V449 BI+DWu̦L)-j1](EyUsh&pÈӈoͳ*16M6Q)A s1`+aLU^Dʼn%A4ռt( <Ԩ+YeAC#y#艉x- jR]bkO5x  ؉3Y ViHOOHv))Sd>Gz$f3<k U%#D! >WH!Y52~Ѿd #%v0[,4YLØax,T,(ܞntHU:rl :A !Aì2 eYP~qE6qBDʆm!d ;mGxG!Y}P;^0'A:AB[Kn."P0[vqT%DK"Z\к2γH.ޱs!+\?b#DS\}4Rd=9[tr;H+s7eH2S@?(\ޔ 4VS0ɧ&l R@$$']Z-lI:BW`U}RMlO5BrHNŞ25"# ؘG=uG.|;<X9cå\/{= Rs"ñ(JL{F,вISQ neieP"OgXf%+2DGsT+%9"ȮjH'e(2 JN(8B,j$2I=J-S_KQ2V3D91!e֫䰯|A#T] EC1O|ªZ$}z)m|WUӚXq$4@O$>>U4E\Z>GK)D1fdb}\Pdsa SjԺHØavW6wZ-Ty]g2pGt ĉFIhzh''aƴQjB!uYX;1E ,<բG0 *ʲNO u^CHq̼7A:YQ2 VdmPDm<,21,h17MmPFy92C##Y_] **#D !90n$GZ74)$:+ 3ls8~%q੻S9Azf:`0saЖ'P-fr|ֵDr`ɵ}R)@j$wTDYDjaބ(oZxx"2)85UokI:H޽/׻~;xjx}e{u9nׇz˟vwpn{O~񯻛ShV0$gׇݗa{sa?0y uScVrr#BC2鷒',I_R[Q/ŵ ٵrBT ꖂg'_..Tvv)W҄Qf~,ZLs1e'՘'u7D1 bW?k?t\}\,}jT69>C-?I-P-)'.т98ϛ_W9$;7KٚXW>^kBrxr'w\%_ӣ9RUTL ʘT YmSZ5SO`1u&Wj>wvxkj͗Wn dVgvbˆl,ؙG2Mr>,6kf"0,HYb=^omiw_??lt.|g`~?G~?n^M247C̲q{ݽ2G\qa>q8he0eBb Ȥܠ #Fqunlz0sC9ۂ;r֐Tċ1bB,O@.n) `dA!#lM^6.qƊr|a"+ RiĉqZ[2HWq+>?_wۇ=~1>G$G1F'd:z~ ',X&5BQ[ oT] `57,:p`z ZsX5J2 50HJYZ ~Co><&./r5ZcK 3m0jG%ht.>[v(NT z%!9ԯk_dk큂QN 7!(1 & ]33FA>P$ myi0kP j:|k!*THPCb! qm i5B/ tJFrm5j;L(K͹N葳=rGǰ&=^OvjO rQ"pD5Z2IrR J vfS,=Z rb\#2!jPh&;5b3Xr2gahNj&'"pᚓ1k1r*FNVɪ9Ù>5)k6޼}ܼ\c sHBAWD鏙p\8Ľ%Zl9p 6u@MpN@z7sK-TMBh3|=޾qʤc< {CKc 8V@ծBO.Y#5C+`]i X6?퀰1J~=PД*#ͨBGMY ҏ 7BĸƼbu12$Z6G DJN+Һ` N&Ƶ&sxeWkörRf@ н.k୦0%6k-c%zkL4lekPY/]:Pnu~7?f6h1ؘ񤟏uM[ 'Q 6SḽLYX&WOxqN.Gs5SsI ͷZ hJ+NjF쎯Ƿۇ×oSMGʇ&Y#5h} Iibb>s9yϖUb7HxΜyC;xq}ƝG4JcfA ^+SP0"e=&^ b>sXu"k1̽]C=r; V06[X;.urjEq8=0\9r;=F0Hnw{:<׃p|8'k*x)H:,&AblmS0I k9"SPŞsӃm+Y/P䯞n`cAr܎3z29\uϹ9bҮ{g 7엂5ɨX_;XYM~r'wc͍8w֜sW8sH{:@ho/k9'k*x)H:,&Š5mn$?#Y$W1 \Ԡ84y =g'Fr#;k7wF(4J=g 5r9"{ލQ<s-F; #jƊK}.qcEcj2BpXaeNn韧 b>s]Oj8Rdr }$b\&=gW͈2$n9jFj :RόՍC "d$ 9YϙŦq'o5gU*NT3FՌKYfR:]?W}9 $ orKb΂S?~s\rQbP~c,1B5gjފ.7:'VĜJ,^1b0zåFiݶ#

'i;pahwe{{ls~XleэFsmϽ zkPtK|8!;/:]raC{Y}ζMn (ϝ_e>TG:C Sv[ M[ &s@A gjt=1%}b{ }S[)}%_چE8"dCDYW[ X0Vk]8sl/Ks:`L :-Z[Pl}1+p~qΧn}8vwǻp㷫éʝÿ)Lt?34>mmNͧ˫Q>v+Wm_SAkA_eb^$X+P'Y4rQTgS"/䝷_uW ~~ܝw`ݜ"]lD [{\$)q`N\F_\rvY9f]@ .Nt+.aa'N/2tMxtڅހ?.s  6g.\ 1KnKvڑpc~s++{9o-u}|8߷C%O\q'ݜO?lgb_ ^P8,GfϹ^~|p:lo< ~vw`wifH/Wf;_u+<]PC2_>_^sꚃʁ/`va0"H><#j_O$O6>׈A\djRL6"DފȈ<#zSDQADe32">t5T5M/8H#]f*toQFhk"n[QD!2!bk!Fq );X`8)gb /-{[ M}:D9zs(a0ؿ8O< %#֑^GE fRm)'j*tNICՓDV=QL2 N=$pc!9kHj+Q34{Cj"{bMh8 U SWj[Ɂ. ɹ6',7e cjEXUF!к,Bu<HjE-'C &6Ʒsj=/cF.z4* 8xE_Ni\tBE)k6.7iBt*9UP:+Ӽ1&u24!P,/To"d^?SNJ-1%РԶbaIxcjESHAQ.AI=KWJ))9c 4*3Km+4k 2?kN143oB+Nr^yO^ G04"Mh!tLHxl)Ng$*IMSmQ丆EOA-BI)@ U6d`*&"4(#PLJENk jdu8%<5,$lHAM㳉HGQքkuHbK2nEON7' ՜,L̚$!!$s_Jz-9M.i I3JmD`JEyi2Y4 F`p)*Cy&s\c:M'<$ԡl 烩TQә|T$o~Ba (zr;#4"z%vb;Rf*EIsRۙŒrr"e:$KoA~3(e>ES0Vd`%ԪosdWMBRCԍȘrՓ @z֙JEcDyސm%yn>aҤֿK 0Iyq$/?>caX=|0l@Xރ !#jmFTuWg6]̈Ȯ{SԲE UY3F [+:VHnъAժ^1/*em,3,~Yjgە-k< ʥntAǯQB+Z):`6 yTAϓ{0%viy,a$.7ft$񬓧m>j&T݌IL-LE"7H>r,gHj@،]$x Ol2L O+Ǔ!d0r2<bE'EI4OAe{dԬ#OS V$p䯵$WMw\X9Ф܃vc(9V;}f1?aʹ{ _B0?Hv @KݸĘYJPTڋ'1N)Jj%E6k9jhqRҗang3ln&/R 7InQ>* IălhEkZ$WazI yEU}1CS3It IJ;PhEJ{z#\{6jAA0rX%UE5܆AY6cY`%y)eA\(,aksf԰b'(;H&\! )c`HNm)7.hBM?[gE!VAEbQ Ij7IʎDh^dCCJx J{|Po t!h&jEYua :}'gQ6icꤤ5A Йo)*EP^vDbЏ}Yqܿ`hM1hsk%6/!gS U ~{.go/b.mq*Ik(ĽQxE04k c(MA{$A6Cp 1}O4uW0C>GO+@p M p~}I`g\=,o-ūc4) .%J#=`:BD7H'EՒ){$PPC0ۚG$.p!h < Hb̝NRZ@x-2똠6ƃЀ=MA,QvۨEYMQ봦m؁ CF7N #5.A8h!5Z;㚵jАgʧx^E*բ궧JfV?FvpE A)ͪ h lO`1EnQU4䚃usĭ:D\ndFd?5<3zaPhe"P}!1xm@Ѣx8o. r}d;V k0j\>4Nۓh ;üny嫨^aQ1./sսSPv +bh_3j$ H_^,Fog jͳ UfݱF Ȇ-K E(R P8swM-W6,LWM;ܼy<><~ߗb.S/Po~p^qx˛[Ο͛o^;>Ǟ?~E__O'gy)EaqPyRޞ>zwniN1ˇ+u [Q0L 0*@mk!OAR/@4Y,]l[BJ0v] R3?dmfWR'!}!щ:z]k2;OCHDs'+T$ s6lx-Hx.Y-yF:ǻs#'Wނj4"_Tq5ؕڂ..-qj@Ci !IrF$bXk,ʧ [[0¦U{ďW֊9Iq4 6kHxKH3&]\Ș )l%ι$1J$^b{\.ӎn%D V2/纗O܊^AX,7W mj5jAh>D$.SGDW0!>[ spî@`R'ăpsp~EiAɷ&9ہEkk6QA5t<}\P *uxJ?] F)Q{*q׽ŻȮ;*,5W"0XJ.Qm3)MCeȦ@$Ш?ղZ׵&k`E|$d[VK`֑S$؊1m,}#n`ߍ-B0iCb1dchvC5ŵ_}8۰3ĩ*KڜUTޯ:q3%##ؽ 6 K8'`nHPhp4\ ;W%Usa;BJ3`VR1IPA#(@h9Fz܊[YukB pZK;e'?24VuQ2''☼jsFOY:"S2e_/UssҞiWeP5bq^< ~s-% BDA3bPI|ȣӴїU+)=þChIK8%E`1(HJGZnO VMO ΣQ^|NI/q5ṿeIS_.7?÷oo>?}v_+\F<7>|}~]oz|tr{wqO pxAwt!x.ONA 䴒&)MH5I$qNA&jHI0.7&ϛ|$MTpfaB*YvT`X"QbrYtAks(b{ABe)STK1hDA9oiL|laծ 2*h| 8@P&_WA̼&B@bW C PķhHkܐx}uF5vm{72sDwfES}&]A09 .o; +C#^!0mB K5oq=F@(C/SL;5C. 7KCR!,dg! Ɉ2 \95-(s =[ q0ku-~au&1f+!&Y *Z/vlihRt`aP`79@HX NEDO4rn9A$nC|(R(bYwϩP_ zL|)qLrm!>4 s.a!`u MeDƢC'9"1t),ZiF@(:z}X~]ڽ�dn^Rx&%`.*/{C0SZGM@SC/4  fnЅ؆F+s6Ņ($\ ӎ޲rl&$VK9I'<\d"4f|VL)2+M=<h?RBL8Ϟ rUc Deۇ30 1MPiV>XQocbtޜ/.α0iEZ _Y%L3v ubi`=`ѹM*QNh͋&8%yV=VH)7ȚiFYY-Ƥk@c[cggs K3p%tdmy^$H ,cNT&)$]2&~ F̵xBiS p( ^Վڐdhxù~[V-"{2XCld]kK40 ݖ<~&aZqBXp?T7t+eh`p #yb=t1.`#8P0/ &9 :.zz*^nߛ)K ٢&S`}Mlq<8=+uIB b> H AB,VH>y(I_fo>mk6`wi/x8&+d:CF XA1}5m9A 8݌l 'V[z!<]>h~{篏߮] ZׇϏ~ݻOϟ_n._ l=Cˇ|[ό1xC '藫 IW%INI@I"* '~CI4p<@& w| *ìדYe%V,sE%SXy^~~2fUOpߡb4UB|x1{ , ƃ\NSE|+?gDN@YBvPiBIMj1HN眺tadJNGAb0(,jPvxg򌑰-K1QĦiⲪ)WCagirQǡ=&w TNPCߎoZᢳḳƓ:+hǓ INV%qQoZE>Ta 4DHL8Ic5n'[`BГRQUoiia#QV.(a+ ^U 0y 7;ՕñJD")LcFd~i %aLon84<~:spe\-\̲{-3w,6,k"S"80k5zgHmX>RcGxb:d]c^qȈ:pG"GKcm7rC,.*DeXbp1M):/M҈X.I+(n <癚 \زI$@L@W<VݒDBC ll~bN zyb:):ѐl<1m7~+n$:4VCnlkK&EwXУ2!.] -+eJ@@짢H`BSOv~q % `O"ҕ&̌$_C.CV(Floog589Se5pSP ni6n=A:į-/0]f"(M *h3Tft4ZFaصMKYݕoա+\ÑX)`#iZl;ʁK 1`q^,,؛ŶGt$QPt>^>P]v#dsS }do2z2c5m~T?8g˚9, (/skR5 dK)1D'Ĉ)tA6`2۔f,r0˕ClJ RӀmЄ<.{3Tq\?yD؃/vu?8<劜x20\hn=tL3e,2u4PaiR: |;2Lc MJ.CڔX͖N \l2.Bpqǵ.\>@LO>LS1Fo("0V\ٯɅRn`q!ÀqT{fl:GHQP>S| X25{9.-E?{B[x} @lQP | rPr/fy"ԍg(s3 M 90q2"rX*ztEz>‹HA,4OXE=L2H[d4iyRTΊh_Z5r_q#y@oȡuK,V[ٕV ئm\4Ƣxoׂɒ$hꉂPUCHNp?KU=qy8,j\JbC-;k pL,dOθiW'>*>,QMqUH\]GssXisGР@ 7>&J%"䐵QW,]FL!aMd(;$'!F"\ۊ#5Y{"H>H%Ψ)}1I Cid1f,䍊7F&FdHbW󖋳0,r-2ᠣz.EdWN,-@-Ҫc]pl W-΢K\D<,bQ(;n髽Zt#3"7wD#2Cbˁ whR-]Ƶ׆.c',fһ-rZȩ҄7ݷ+_˥ů`,/x)0XdA6J46(ϯQH1]{o=9uJ[ ع1LCSr<{J3_0{#+&B}! I &6 Gɸ,lf%1?x0jxRi0|7# :$D!!&*.g8}#!Sk2cT{ȦH_t;,ͶqU~1-0v>5@O|WO@ 4b4Zo1?ptbTe- MT ~k *J˛mԎKTv, g֛LtM<~aN9GěFG L^:UFzr6w:f?uGH'Gb:`y M!-tC6OhI0i,R]A FVPTKM?D)I03w* VS`3W`+ǂܹ4it$U3,uma$ -1dc h$Eb=\,ӽll(VUYPT1zp2`)~hqIJ ˧TQj{Tm0Fg Wo䯲S-*#W]>N$Q 9#*uL6*#*VR5Mn^bq;{K A 3k4f傜/XC0`ea cVf(=%cRq Vs)LАg1hƼmB‹k=WӨ+OIHZ=a,z U,hI譢sPEe71?'؊){%}:.uXɕs}n]i)yMW@8g<>EWΡf\ 1?W’'gS0ί\6֜$sD3=F_64[mVT"F LM|ǭ&C3g7Y Cg!Xo-rXjWwFkaДh=6vfB2_ ZC ! ql6^dp Z6i%M뢨B7bLӘQc<oqW_OGۯo>=>߁^z??O~q?WNc 1%o@ߓ M^7 fЇ_ IM…xs|o[H${,.-)n,2ALg ˷H58a"',OLJXیfA/Pk1CELaM9ʓ$.XA.>fޣ(E‹]~\ZKijdVIC\K}RǖwD[#8W R@i#lĻ4k,<%=^0D|v)[l: ҕ`HnZ͌eKƹ# (xXq1W"+6sYk}zYwi2AY\\.J4N~&t=f-hmWsLvnxlY p]fkl,\+:SJX9by.aa"VMҔ&pTإs/H!"eۻc,U1:ƠVcd_<) @؞5~NzA Ffu MnN M:hE'CBrɗ+;NK#XJm8^2 OP.P| Bp>rO3]Gd)ME9|HftU} K 1⿂N26Xp!AuAFZd{`KZɒ6>.mojn>l E΋˔% k +wô|lo1>J*%؍G^63W9%eOSb@r9]bHeo0JݲMACcOQ+   Y  `ցHp9tTb_h2"v;A_xHXu#7=L < t,8|0 Ź_LgŬP״h'QO;OMXO8HL[d)p ~]PXq֤"ijv8rA] KOYq5b.Gl^HUf1b-4έ"p/:A@pZ+/.f&.{, 2  _5J4rGb˜5y FkV?UeR7SS=U2 hb1`RPPs۠QfojZ 4`Ȇ⢄B,D6tX0v w^t:Y,V@lAb,)̠OlQ(:v/uG 02~J8>]w|sJȦtZR/>G1]/V?ViM t]A!Mj .z-G YY(e  ˾(Yfp}z4ܵ4D+dsnn3:y8X& !ǪuQz580Pt '48Lz:%^q{!OdnC!,zoDC8IƏy ) c ksKB.oĔUGvr<ڨkv8U(T3̲:iv |ǯo޼~(v]Kn#NhfDJ yp 6]Mrb0-!?7y9'} PV^_O?Ooy}[旟_~77ƿ *?>oi%a H "(+^_tӗC[~"~!V?h>q1N)!9{mgX6%X`hK~Lм%Ws^`] :*T('hMcHMpQ7H. Mc1uQ|-D܆@$ T7..V{CV Z÷Bk_+yס_p?!Vp6wC@u{IaNnE8kZ;LOya$Xz2jvaX%ǁbR_u!knGB/}h:QS`D"'Vuw͡M0AmZc>FCp2[GҞxC܈Ѹgܠ5 \wP5HV׎Ύ0 i_sՔۤW!^ޣxss ̇U;kIC\WC⥡5hے6IcR ihS^£v{j޳yzGgFs}E`Yug/>R;uSQToh~iqBєR9h6(R5쨓zrXQ|WTjM6:DU cR3 ,g Xd] fċb'?N-͑0F"K9w拘b;0v0NSn ޮY;No F(Ka&3=^ %YuYed8+%=T4gxhs/+*)}%Qt1HŘNäc*VzxWEdlOġQ;"Zm\/ZY}{2jID%E`D9RF~,ZDqKHOߌH1B_tdK6)bi3 " F)Т' -ϳa;&|0S 2Mj ,El BPFc=͂_n)pSqv K^ +Pւ5Bvuv#P􌫸f9=@br c2%ϱyiB:L,4p)H2 3E/Gr\5,*#WwࡩICC.Ů[[Bn$@D'Y.'l5Ɣ|0\RCiq mt(pgb1gP`ᲜQ-:1}s4m bOf] eFQP;|J C{rl5bǽqȘ*V΢A8{OшA8ks:zsLB:sHC*Fm3Mg7#cc4{!ʊ)X^C@ш"3ᗀPqCl6'fD]u&g >:֛ %+Vka_\0IIms 1!*V{=Xy$4Uq+(hq/^m[>Z j& [a&G "JJ'6ՋQL0S1): mk٤6ڭb]WHifՔdLb^h,vv˭=XRBhC.90W7j ƥ=`PwsF/C44cAʂI6\_B;tQ[5Ғ3)XB9b͕# /\Dʈ{@As#^``0a?fw4h|cK]G +smT6uV2 45q]ky4_()ZB2AZZBF:@sunKhq`^h h9E UFػ$=2kFȴ^nACqOxx*Z-6 X  Ƙ!l<ц* jm72:ɨ 8\@Z[%$VxM\:RF|+e+E"7`YyȆ,z()SΣgUMqC|",%Qmטn1Y:8ihFM}._C|wkNC-u5n!#I+^jf MLQ3*le6y(9XM>/)u~|+YF{;Hw&A94c&iek< 6W~aʎ,aXv颎86$egjgK /K֊:m8H D = 4 +pj%D5";v78F;dOx:qR{-_YGizq:jg5ltzщΌwˤN&,ŒvU>Oo3hrR59HWHL/{@4w RىDEAWHg)i=Y<(ֺ0`z@a9V5Ԏ؏. (4a,UZrjȆL՚?8+˺tm4>@Ǜ\ mMcN0GZ_Z$4 է2VL{YJjg蔧!oy+7לVv1i@. ):d9dpdlSxߛ ):;.s*i`&=.4 sO"bqҏU @:c GWS;^h:fjn,W'^gڊiIA+EoJa^AiK500~Gf5pI_VRǼ[S8HY5H) st"P$sڄtG"KQm2]}/E'XR^Rڇ 0PӽFKA <6K |D-bj`Z>D'M#!0rJu,XW[BH(} 6@]$%_s:Bh Ʒ!~-AK>D(Nr]|/\1W:8 {@߭;\MFNAn0!y:^+f QLޜVmMS/$4IP/Yz$Xg Yml?9ȑk.JG}@wRδo(83FT Z![nnb (.h(&bp(wSIb:HQ(f,|p8Q,}[(Zd`Z1T|F9E9>bPp˺sÁZ@3|,p#^ٮKD`{!oZAGn?,eT`D7v=1 ̠cXO:SC^5IW"9#XiGril3MvQ4NoEP/|*̈${{рPC8bE(u{o$P8@hw=;C!&9dPO9>S%6 ӵf\r ^їu&9WWSY;зζcNStqڟ>b",Sa<ۓJAۅnE`EM>@֗u51{l$ÿ''piZ2,?ͅp6[,JA֤ CQ)jz E,[`.ڞAђ>\`3.6 |Ź :53f4 [URtYjX47hO1i {88M>EK/׏aEό=^f\GAqR>'܉`ꙶb}Y. 1abR!bAj`0W+4W"OK_VRƈ UU)AtsK?$p?׎C^N뗱su) 0P Rxا=.3j&YtQ,ͽy$42w(ձ`a=/ a6уО"A@`b5\BGOdDK;]ށLaC Ժk p"옯|IIVi a: w+&n0r r{If:,`Ui 6{ Iz{$=ÏՌXnĺ?SkOrd'/ oiL;)gڌ?căR;X9j F =^&bQۛo=58Zp(ڂuQEz$1HQ(f, эdI/X:cAzO3z)ρmׇ7Ho1ZURjeݹ;_!hΘOPo:КQ\ eKZ^gfa2^̈H;O wKPP&ʹ݀Q]iRFע/&_q87ᚵ Pzr`|' d*|GBzff-I%:Owd5QWSݹļ iC/vfWն8MM0 ȚVeP3f[gb3jq*t{38Q.|AJRsMr1Y4kŔ >qMɍU chk`7W sn8=>ó&ߵ+T: %/n+6d~wӷ^}x}gӝ憗 ~<>>~|՛X_^]x_ߡw[a9!v_{{{0t6?' * &s1] 7b.@m׷{;Cl$1ߧ=K`Mv$4`;m+L3Ťm %_ m|p1-1cCvv0[+\N{ !Q0pKw%Ĉ6b_@m/!Bz11^NHc[bbDQ4Вt(J l\";7MstNse AdHt!GXG*ƶ.gh FHMМ17qջ{wtߎn{:=~OO+OW?<s:woNwwe'g(&HP竏7OmǛy<򇬃;"$D*ۃbi9+%V0x~dqoOҴ,IېDrm Ifsh20z kU"ۃh{j/O?J;scI$6MDq9yJ&JGd(@k\4Um` orV6Z CgD4+9$k%9oԪofkKb DK!!o?j{.Cm|i3:QKZ64AzF.!WU_;6?Y[tjla zèu1;NWgf֘^Q971""&c<9Օ=2!^*I.gIX%Is\=p#.(sDn 9 #vi^s|Fyz}5sݙ"eq$7բיhنmHZHI kmDX΋""pN q)'H`` 9kgmP>]\ʱBnh)(l+i0sHvP,[BZDŽtfhBԅA'yՈ^ղƭĒYG%f97jpn`Jmtڅi^AQrќ6ƍ95M(nCgC]Њ]JKlTZ)9/tWH@d+ m6V 0W9DݔgAnԾXf4,u()uPm[ SmqυF4>c]eBz(8`pz$h[{9 g]g3^J &Ht)Yu*v*O*B*JYDפ0y jae3qT>8qvSXuK|X`m?Vr-QiX9뾁CgEŎITm|3(9k (u1AJ%ˆqvHh|@ 3qjT5Am.iB OP|jK7?AqrLm`] ]9Y lFE <C-0D2A!'$- [bZVj1sXV29VބL `^YѰڬc,Zb[VsEKR{hiP%Plٷp/+M{Y(61-@t~h|ig/L8.6ruAO8ͩ47,I.3060\6,[#};\n}@rEn))ɪF=D ;.](X]RD}OE ZFG+FI `MUQlQBʼnSVY _1ඐ-|TdfgvQJo8͊ ?lz!,"eM($t"Ys\Ph9лqCf!3dyu-qPgRSt!:OtQߵCsi0%Tԛ…dGH$/6ۗ= AҊ"Ǧ`'MnLc'T rQJ6ȩ5ݹ TsqSnnc{3;Z,&^;@dvE~73tXkb9l jLjl _ ꖏd֙? L@)\.4Ezn5j 7+ho/샱83d 1[dEa6ij$$~[HWY'b}^Fҷ狪,̈́dͺϻT[ 69 /iuYEt%[jwKvb(j;jvO/>}ϟyv?Z.}/{O??=~z}z_0 8/b}x}?^OD` )R[/v>uE(j}Ww@oУ!^ MGۣr?<ꍵ4\$GcJo) aBz#XGkGo]A7yd $K:̰W =.X3LܓO<JQOǏA?Up_̸ơ=nD[ d޸7Bzз8>B3hO5܍Sh)gzu8J.+ =|4irݭhh =y@QQ=O1m6Xhm5W 0(A}~҅N Dp(m i3 -Iݖ,Xq/=Ϥ_a0Pq?36V2FQR+Hx*ͩ%ͷHKhu|$O1 jE^Ehj#˷x  '3Ԣ1$:QHq4aH撓5"u؋n6H MFEt fT-Ĭ;F 1Rl5M8='&Hik /M,a/ &Wf=0ݬ fH.%xsnv1\bC5e#;˩ 9v%+YmrwzW2T!VDNEqO% P`zW/f|Q\cbk)^tMaEc$ %I_;SiWq/$v]u- n. ˕~+=ϯyI<j 6AXV?9y"SۻTFF2_pL:HssA_<JˏhPwHC1>a𹤑_Tr6YkISHOG9;r{1.^/ `2@#m#̽\z>Rj)]PE{H]"l͐6ɻ"̪7Me Z lJFT!kLB=h=cB0?U0BN1*ڜz1'axpmrZEDi\j%}:QR=2T^l肯AQEeAUivfG=GgB. YN"vH/בf~ddžܬ&wc@{V yiwk9>ؚ1aXkFyZ2akΛ-i^mFm~w7蚭lVʰbPVH*躸!}:P&ʦTnR*N)AФwǗ$Gs"i/_`Dc[6x@^0d{eѱ-HjTyzm "{\%RŜe_TYVTtK0GmGGBh=Z eFj3{ 111pQn9cpVR X# aWH9n[nPdi6k S-Y<*Xnݶ?%B.lR(*WWuXTH`RJe1AjjHo2PtUy>)i[NH+^؞ 8kqCF%c,Xx(Vqk]|K1TJeUr47G;@Pq*/Pg;7lLgaRhSK "_4IX n'% 7oP~h* 0ڻW>&` RԌ̋) $"C,[4Y<|ZJ!0%%#>Q `lA*bX ю{L^ PL#e &RnQS1k+Kd*} i߸ej/*J2o[ 3+hZ,_\c6f4x PvKU3 MKVJT:)YmI++W3jkcQ϶5 ޴^=p֔E²X4qe$شJjCsMqrwch;G<@ @yOV»vv۞p5Эìaak-0vىuxtwǝW{괷iaA`-R >L[,sY"Y3rZUƒ]ToҲ pGAԒg[DqfYĮl!|&ɏ:[͋rT}d^#~- ЎŊf 3p*ֳy WU ) A]9(*1CA>ܩkié=@!V h;^-zj ӕ#ۂ?\,!,C7q ccźѲ c[P]q'ewJl{lʅcaL(| H3qa#uxY@DPL si:'ְ+66p%lM+iBh)I"xϠ4 _=@Ps )߁ɵDpL3UVT!?٠~o?=><?~{z]}|~J9Uû<}{<.9)W@f]9$PDe@?{ګ݃B)Z2P ^uXc2+t.UzUVk{_` ^*&+ex}YdzYWefX}m*y;HV,nPyKWbB}*~~cHwa"k?\ArqWP0xĂ?\OO?X~~=N(?/ˋdž&:1p#XxqcR?'!FPLnqUߢÍÎu𲎴 /^%F6{ 8^PdFT#¸a6ah7b L$oNVC1LIG)RwQ:U.* bSG*cѬ1 52}'<ZtL`mbx6l3?nS"K-ָn--dٹ'`L :Zd2ޘPuԏӲwF B*gcb6Y1 Kr|6鹻 -٧ѱwj*!Y]❹Cy lX)e-n`rQ|g)F="$=xncٌ 3eA0@ #fk+jhNs]!WveZ!soEê#QZzO9nK?aRHP pM1V7ƙf桋`%:..S SU"h<:WroV3xgKRwP) '<VKej׊ <8R"ף Ar<*]#gk ܐz9INAM?Xd;wDwؕK(!/MF8&폀˵pl5p.,9Enר\$$c3K8r2UUϻ+F R`2 =\H VTJ2*_HPѴIp&O`SF1 1iD\eS"r}lJxm(|" H5E% x_J-P&yՕHˑ6f8n|Ɖ!H觑O;sJ/G;yM,JQG:N"'8ja#IGlџuˡT$WKֽlnlBr/lF_O8ȠoX:;/jkBo0:ք &xaȣiE;u[< rcf J6R](#>>u:kG:ף+q J%*ZqEE_WA ^L^bT:q-#jB/zLOwL΢EE*s]6M06z˔O`CG2*}Y [a(:֠Ah*0rb( 8{eF v@|${OL.vOwfN1hK fzU:Te7Jlew6\&ܶL0AJ^mG:])Zf  N iW&Q&e((ز[B sUIaeǥj6U,v9 ςbKg@jai:"fk&t£H#u'Pu?.(j,f;ۋ|$%?bͰI\Y[ I\&"MԞE<^'xz ꡵r߲N[Qv}HƠ(6v ΃5 1L6DJwԽqD ǜ&"Xjr+q4g_.)%;h\L_AW(/yN[1+؞A_W'Ktv UIX|#~QLDf.8mbLSNlgoEx@1?j*J+-v^["pF?|7|sasor嫲bOw "aO]#Rh' ־2v7S^/ |ˏ~O`,T=Gcf9qcuɤp A21$`=ñ0+v >=9Lc=tc! Q%?3lNƚR/,ŢDyaZeXҡs#x]_1=fP`_B@wTRQSdf֙]Bz.M}DC1\vX|]XBϟNhT[o ♲rp7x6dFm0ދ %4>&^Lմ*$C;fIU 6GJОM"iΐ{J.v|Dt"q{X"LvL}g֍\or>|< G6`ys GJ1AYRwh:3AzgJD;=ڭ^I/f2#w"<8DIW $N"P"J;CRY~܇'j yL_nYN<##;yZ ]{tk ѶRa4Yw Ay姎9`WYv9m<՟ڌv EHprDG + ;'j&Q| `U7 56k ρcwt<; Ѣ=,vqXz802jϿ`tշaB9A!*#BX;8"v2TBoꪕjepV^Z59LAzascQaѨN7_6\X#цk2xݭPoخnYrz?mY~N>C/'N"N]럿*JοheoW4􇢙>@q5溯H s:4/ &t ` } A3?8.~m[Do~D{We8ĩ"zqe,[ '^?f}UpMG ߋܪHuhŸriG:H(>Iѹ@V^6ԑݔd\:яLvf~=Q+Lj4mʾ+L^`ly|XxPsҷW!2@R+q}$E.O._vB!_w:R~a]]+W{D_a?1!)‡s"ɤ_Q X:dnru!+dglci-֝r{SkB\G9кrnRg~nQz߭-~gp{4͸,tC/ը;8s0k\ًDbE7Rplq@1"?0`H`]M V88[MCX}|^V֍YE"p,*pDۉ3L>wuU-_Wj9k``Ezu\D 0 < 6lX͏y4pp)4]1+3ҩ'u[rBU[ڼ|aNrH_e5r0qn42 w5zкG$;u[`S˄p7B̈́Lm,!k+[c]B6cOwϏ ,so i<f#2ѣ}mxm,@UAE LGwY[赌]x`vsڼJ||=<^])0LS͢L<pN%BВc6dO2^P3i|qlX;\((Ʈ)uZ(~/C[ r{0F(.B nS#}ّuP9R-ZxNn ڐ]mFo_`)#ڎeAX'=!WyoJ t{;T 'IkqOY s{!Ry=3>>|2s^lR.1%+L;6=&~ :^S7uČLnG&vkr'ȝιGfV)vDE(7@I](|]Oꅟ 5?ߔ%$17#_kN֍R>WQifxp޽0THNA'=l`qmPDd{-tO cU^bZqKSc|D?W!D2wm %F7aO7VqA kvױDqА۲uԧ´!m 1gFdQbUIM^<\Ɛ'#Mj !I\c`M׵~1Pw}gKnmXs]!tm% pv!qxX4FdpzmZLD B`4m #Z}4f`, :Jqٰ_o_cA/B|AG@a_҈`.Ұ5p|񸤂b0Sq۵tB}`*HA4([xx*57v:@4k-uO@|~m^:2e4IΆk~n@1$X2Q+~ۤad5~񰍷5ыuD7ZEwGnJ j:_b8F B(D:Ή]X0+QOÈKD൒z9A}:} 7ls7p^څdUYcp+klfpǃWL VxQf_J|"J 15lpcÌ.'#ly,0vY,mYlPH~Agzh pON 4jIdưdY;ALXmU+ u?q] UКVKx\Yf }~`ցʂs6E*PChƯ`I뜁qY5xi8PCy7-@$6LysɅ-cׁU[N{2")*tfpT빜1G{1eZɛ 7b-upRSEɫ^8m>PIP-%&֎e0HO'Jdi"UK^α'|qE:qPsD>tt~$FчV"{t/H .$"lee U]XN|V&?LK%;^UX)y=aF nAV!)></+~~&~c>b6bM]G P?-Zׄ-׵දcgŬh/3<)'Tos2IWz,g#ӵ[Г IdB#h߽UKa(G5>5Jٽ`n׽rR#ro@eylhnSDWnDt*D#xKz˰ 6LDK 6C[a]^X`Ĭ+։ԏ@ _Sɷ2ZӃuԶ\+ik= ˶1$>c5s0{ bIwJIlkޮ a#?ntk,WkZa%+e',6tO|o|#"=Mul5T*,~BZMJ-թP[)le9lq]RhciVm 6Wt(J LJ|Ao]H8(IY,N4|dϘB;^ }^TK˫oĸ#Iw藌nP1wl,X/`d|HTS DfUuǘz]x8t];̯u}aeT<ŭXیX<.L$Ys>p+qd&f{镯 6+ʢa}/0wy :hoְ~E: ;'xԉbT\,12HM/kH}ٜ*̋W :BRGQg@]<ݫ^Fw<X.2b6 x_גx 49iCkEK39fmw'ǿ?^D@)b݊}B|ϼl_Z!=ѳJ1,x$R} t*6PNvδ_y>N?4 e"e85n a?'o.گ0{oj(.q>]JOQG,u]);ŕ03 D+HCK's;Sݒ3?Sǭ?E6. 88@|qD9~$sҾHFMw P9g_LΪpPafF RJFos/h }N>{8\>Ӱ 5o洉ĝ Ϟa uJ˜qo\L~(dpQ<µERsQ- @1gfqƺ1{?oe WϛN1˾2L6"Y8h)3l;`b@4.a]'E'epKM .5 mV_7;x0#7nn֠G#8D%%ԿH cxÁ`õd&Zqp oj3&vM  cmϡ= \j_ {2Gvlsdc5;~pwo,G\cd8` \> ^̒H~$H.ŕI᪹PtY?>> =Hihitb_㴼Yx+|= ~~yLM$}Z]d`v2a9pC7aEZʸHKk)M[Lz%÷~[[Ԩ-9?8mL.@y5_7GcԼ6M-. ;>`M1YgF̋|>u9m8uy;mkˠ:)6zY zeɥxE2u~#4Xh `ႊѧ oV|G Wdh/*!A :[FE3AL!T]Y)~YRɟxl`Iy;@P[HXن 6J"1A b4^τ.^cAm/n'm%h] $hIhľ<xxEvs+ ǥp0OmCHxz%ṣ BUxί&oyANgTs ZAZNs x6ׯ0;BʣC3"~AX!_n/~í{P]<ࡵS຋H?V׆c.q&:Ii*@x|dJ#EZIm`;Lnm8MУHY6%X  Zt{L6}z~lx73]$,DolD$( Vڐ.݃ ۴i"0y4 86q` @fq+qB!-L7䷠sV q ׊ZPPz<hǁ0bn.PsݬIgǓ5gj.܏{m Dq~9-7>׫Z;y<.w,MWmLRia[nRɇ4 晊>f'N%nsi.b$Úm7 @!=i;UxTѿkbt'YF'q5R6Dɺg [|.hk1v8d uDZ}ܱbCĚĕeʡW1LM|R& Ulk|M(o RnT`I}چgud~Xfk;|م~v"d9\ -^9e%uGO%?ګeG~AC,CB,f@ E{gD>͌FsB*DFF86/b/{)H#y!Ȝ+-G#4_XUcWوz\ ? ."Y5+4j؅bI蠕m]FfZ/ YBM{PA( E#ql;7!/=BЦ®p,C$#u,7}a aW-(qF agKE&8`w%Bm.`!4Ϳ f`:\pz}@/ߠ~Ξ,>ǎZo1_bh}A:"bP ,^I)H+T[?aݒj<9ctp0jCM> գG?f!ȒHcCPCȚޅ14ȡql/ ׇ?.O|?/{|/=<O}};~|?W?].?o>>wwODlw.on9/.?*ZǓXdҝ}[OoٺÿޜTF")Ct'. :7:K$q9ip= u.z ^h-CMzxVmp_φ$saɶq=ޮ|/xJh\^`5M&MYS!@/E7:cy+U;>߰{2#t h7\/=Bg\;ip=Qw@\o9?(8`Y /j o12䳁HVKa`7<ڍ%qrYȰ,$f /kNDZ7\6,6lsͰP)00m͖gK"i=65JZH!tit~ gˀfCd7R% -^qUUϪXp٤IUŪA9ŪB ``~۰g}v:Dz$Z/1؋Yj>v#z"I*XmSql B 7d|/ߐWYqm\̣83¡F'W(ͪ \QEʼI)ZM&L@쳂y :sCIhtdžf8w$ ÄWLYumrٰ@QAXER0g&X?CZB~f 4{CQ`}60 |,t:ࠈVc"9ˎg o=ĦtͼZɯ|>ۢ)"f 8!&dk&ؐ@jγ[Cp h-iV#vNM~ g,a7v%`d|Cg]*.aSyDb^0u쳁h+4{3\ːK`}60I#+FxȗeWg8{lP +Cd.1BK g m:"L#GP>gsHd9Xæj2\7H>[Adje plp}sra~1\TP8l`*{'=F&2Lml`.a210LRd0]b |IG)&8njÆD4r1$40)t(OL>+س)00ϒ_%;bzm$$rTl.9#a>MTY"wƻu:ibt+p>CG)M P^ 2㛏teDSib0}pbSM#*"Z:0pcœ:[\O;a(u1I Cm-te"axZmq8vb )mNIӥ\^W :1^GNki5T}N/+R(0Ȍװu`Z;`VA,pv18/0ԁl 9̚GN;ސl4ӕ&:p_ik 6 0gPg \ ^Z#5N6{(9M d4꿣=&W ޮ̉+9M ~4՜en)"JoxCf{EP IX4-lrb3$lyC &XK|Qd;ܡ׮cSQQZi Z!,8 T MXF=#ےg9t"m\QMX\-)9M\jTK,tdwBk HiZx+ӑZh \ 91" ,zZ@X:2d[02B)ibI%S{A(4[^}NK9M甙6qw=Lrxa Zl|?+Oy9M ^-*6zoDYj9M fݏ7\᮷Ҥ^֢P,ZGkv`4k?끋,Z]lF!-뮶a̗coH|9x^ze413/ ¥OM -t i^,epWہӽ T ʗ R FJj.@͍.pWۉN-LcLz;0p6̖[GG ,epWہ`dՐ4:7 R@iZXz8ep)o4[rL}Rw8oaDk^zNÒV,joTN,pXMzXKK a XOO!1*v܁zZ'5H$;0p~pAF䋗 ibD]ǎ |;aT _X xi?b%vљ5 Mib0Jh $Va pbZ$P؇tI80p@_g6X{L& [Lbs=&ib/Fb1 N[Ϛco=&WTYY$~ib~{L‰Nk d14g{L{ m9_ 8N{VJ*}w`4-!s4a!'Cb:_4?)=Ycw >B e;V7SX3JݴY؝Ncz7S &OaQBOF|&3I:Yb\+C(/?Uztb-P? > {Pg6xb:NaX㐄DpVN3pWurZ 8@y/%4m"i&[R˃^ 'f%pbԠ"Nx hw~FSx9<2ndZ &HJӒ6I(ibEC >pX|p e7[n/p&kxwU80pƈ*R8^ ލPMr/ 6o 8M +^Ӝ)ӂ3ަhE(&Rʨ=^ k5p`41Obk:1]s4_%VWit`18S+eZ/y߰8Ml%}I ^H̾t#U (\u/y߰81,E plu K/ FNHjIea; OBffNɀ?rX<;LK Ψq/xP~בO+Ym֣5'CL;\_]Y!՚*daIK$z":} >G+hڜY ݆o %8ab6c2!*7 >V8pf1GH^?#FXgOR@bg//8=;6g3 9&>=!=(7!c,bKj P`ٔI +/}2Z J͙:Pd):LWm1KWqi[(AռߜY 3=iS$^{h(c Ilq]@s({ ÝA3}bhRPxFi9{^wPo,S,), )V3[IL`b"d0-L4eHŕ~f%|OJx.1^szޜY ݲnlN١pv`E7gC"hvF~ׅ_`iY5S .*u0 ":W#%lrp1/1Po,"Mys*VǍΞĩ9,Q/os eAB[˙ŕ\Spf6ڛ0+aqޏliP\8A9|7tJؤp2qsfC 3yEO)bi>W68q2cVĪKR"FZԃ7e2t'Zy@S j gC=XPuc-,N=cEP2W. ,SޜIO.T42yNV9Q[!}D[P_Y VM Kͽ[7 zsf1yYʍ {/BVS=w{n™#og/Y c-*x}_8x斔ׅ_8~P~TI{/Y F%}7\~bXC87_ gRޓ! pf1_Eo `2ka6\73u,F xOp3)`Cم~=ugƬTax99Zo'n™`)9tdoR]_ҨV `]3g`J: gGPW(•sʬpB^+ g vsٿ g ##:7\}LbVx@1$7\~bsqQS|/™`7S]1KbmB`]3ulG g7}z|o'XQ-,4WfpXOp]3S{fؼўغ cUבG0Aoc@Z3dEo?Q]ݵDh 2""3߫LLz ihgZ2桔N9܎n% c`l慎p<2nŤNgyIY6,ۓ4w_ON'!hf YBIY LnOBͬ0ClrE/pc,/db# As7 m\̺b= As7Dw6xkIYfn%qϕ }p^e^kLL'!hצ | ưnOB1C('I'aa3!) As7Uwu5:IYlSj4|"ݞa^ȅͰƖfb= As7+x LL7ǐQz6$̶h5s?nOBZ@a3,1HB>7VdNBNsc"x-hHWL'!hfxÆ fSLL'!hnfEGfV'o :H^ye%LIIKk&USܝ}H״X r,zQ1o0]rJ;~_^[K%f@ &Lla*It%473Wo(8U ?v5s auzjCbk N/RͰYT0$fS/Ee,nZObV3_;ߑCbk <񬹙y!SU_v54w3q KZؐ^As7 8=X~;$f@H+Idb'`՛_;C$f4N%gBd`ܭ˩\'5$w/10P C]4pH`E-!)d ^*+Nutk+CpςS?%ƢS>zޢVrRhf^lKŨlV+Gu,d"eܦ+Fu,i!dTa*ʑXBH4w3rH Bf31+hfE#KA47h:dYy͔jL Y.l& r]W -:Lr]Wpf:E2#n0e4fAmA Klr5õ]zMOvݔ:Z+473N0a YV-鞟\aef3Kzu+473U: f'W\YaUM/>}wO~0nvZЍO?߿;xËo^Bo/{yFOczsN/̗w[6+,q .r 5A#mʳR {?#)rU'Sm 0BDab3ݽB_UQayvPbHPPb L|~O7D&6gEBb3n[۰mQN'31:\D'Us taqQ t c~~fjLE:@+ƆW7)X?ֶ6. tDS&t;:@g \A Uݳc8n#Qh]@jcP5)2^y5;`S vn>~=<;xen_vx<_~'АYR裝@bCM pe)+r&RN/8X_()V l5gfuX`eVeUY9K}}eN#8]ɕ1*19 8 R{Q.aOcD"PLjsKkU|6H,4Hˆ{C\Y$V/8U5`k#K!8Hܺ3RLSJ8@ba6nhK!Vp;㨐hw:{ X޵c;oy XΟYQDP H,l ŋ $$n~:.4M .,{P΅O".q' Rjsc:[dn^=N1j7H/Kr# ?AC-Ǜl~B ,(1^4vЦmø>2O*4TBExCp+Cւde‘>HZ%hrHkC#'ZӉ ņlE"sِ>aߐ-pѨe~ׂd4߯uW蚕n܌6&#dYZ-Qځ YU]ݤkO-kT0Z,-?I [ÊpAb:e!kAd-HVBXBoȖ!]2Y l_3!K6V(K4dl-H)/pA BGcC0 =,Ez׆l N,AfSZ-U*-ȒUU.:]Cdd `ɑַ!YͺctGٲ9aޢ~lYyt|7$V;M4&~Ղl@$KE*[ vʣڐh 9ŊJJېo* 'VS dhLƎNV![:}4h YٱQ; *v0`(oVRL 6xC|{h,ȖhPߵ [,9ld܀Mւle2TV7dK,?$q!Y?ʅCl`j镏lgahIEWiClц8}nxW;-2ë [.2f~يZuj~[E ![^#1"U ![~0"lmr#s _-*D.׆lyՑ+bC }\6mC"†dVoG B ҂,ǍǸѮ eg Y eNBhF;ArJf1Tdd [)NւlY܆H Y }f0Rڐ-!fs -ZƆlcb e |ĨJւd%Z(DpC<1YX#dJi'ȒcLB [\ ٪n!qc"'C YH`0M&-ȒtCyuܩc8,H4;I UfoC YؔGiC_߾ϟs?yNf;rDϟo>>???)<y~G?~$WW^O?<i+83r޺dQ*-"ee$&݋(-]uDNh,lUdۻ#]ɈAF-I.dxBpyU_bi+ʳ:|H%~Mܤ?I>P--Q.\Э9 17rBRj(›<[" BR{!Х[R% SxBrp]݊p JݒR|41̑V#;m(nUڠP~(eAg&t ׂ-\I DFў-.S)_5K )z |'t>PVz3wjWՉno*Gm ⚝ЬT{tv`H|'tl*&' O jkЭȍ#ԝ(N+AW6xBFZ,}iTKiOs't+5J5Y -}%N `x&t|*.jY% |z?[U]h2>YukZ_vyBp (NhTI/) ~IB$]4UE@jdrT&fbR*Q")M{jwHjJ+MU3F Kq|H kK1HBHJ fr3.һ JHJUrw%(e"08/eL\] ]9S$4<ܜP&Д.RJVJc")eNL/]4~dИ|ZERIO~a*q2D<.Hn#EJnֲ{ȥ0O9Q$]^t tMODz.zC'.rûfQWJee":Fg9xwa'm0Maqj{yz<~yf介'gf9g_cgg-?1'E K R3pO/N "}|,D91l~F\` D~dMmr]>{0"rzjU=fxٟD>Ζr; iA8x*9w/%|}; jy{?>< xc9~e={m=__5۫'?{26?߿^7ov7WG0_ ?S_b_]|n"e%Oכ1=7 &lWC B 7v[Wa a^H︪Sƛ=QƑ5;[t-D~7DaZ]&U}o[Z |boqx__0z_G1քdýBaKa,P?  endstream endobj 14 0 obj 62665 endobj 15 0 obj << /Filter /FlateDecode /Length 16 0 R /Length1 4085 /Subtype /Type1C >> stream H|T PYNHlĴvGp,AԀ0(ꠜ 9\C9⸈ Z3+Ȣr)Bc/@(QjQǿa6ZSU[կ_}8&0pa{*exe¤ݖq46`;}0)ipw-1+/ׯILccR K\]o'=)rDuRZ NF%##isrU\)OQ+#"Ĩ$Wgh-yx:EcSժUx*1!O%~c?Tl)6ñE&#}aZ  P S [-ǶagT\_60(!o%p0Kt'!kafQS|P)GL0=jZafkLsS^HOk Y/Mʮ]nfu>fȐ€٤R1Yd>`c*;-#rj֧قcaꊯWݢ rpe9ad5tdйNKܠ_o3wɲf럐(5HC>"<UT!tp*4Uf߷ fh7Oqbt"5ed}O%#̘xGnӢc\s1"e^!cwzR% ,<((Z"}H4=p|x˵Uy?U^77le=f-A A#Lyxё? sZHF|fjvz j dڟyHޞ@ m|6|ag!\3%@(35)*Ich\?LpCޘ`M0\߁xk?bOu~EHdlP R 2JVDF;w 6N[KejasM/DxL!@Qk2F_sy4\fg Z˨v䥲dvCrΚBA 3ga@ I(OAw>: zQqU^dڸ>"ɛ Ҹ>6PXE43ܳkW\蕐rEzRzVPv\{x{h,~~љLC#ҶmE Y#9Ea`X:(4f /yZ莤a%)|'ڡ  #cԏX4,T 4"-?TWkTSW&{ʤKnܮ{ZEj"`Dy4Nyy&rIL-* eu"8kѢu09]:kooi| /}tm{3*dBWpl x&vkȲ8ŌalD;aql܅??GeQؙ֫+nWȆ5НwVS#DcwUwKXԅ"J(#7g10GĎwAfm Ij2',S8ۯgL4vu@ɱi |K;mu3~i"n󅮱!"hUZqVKaML/|fLV"8Xth^kQ0i+ώ ᖵ}`hQwT2Ht49Ypamǵ}/z~fyJ(@t([Ԗ.TΕJEXd(r`ɯSƮ2Fqb ǟ\`\`\iTͺ:@Vi uB@-[!?4)WXAa&X 2||Fl͚FnVȞ<=6h,)6P[ةS( 5{j]csqĂC%\JĂ]Lw&tp76Hέ \i彇ފOr2/-IߪF_:cx|*W+S1tBS qNZХP1vWFfA4Ѱَ)\V$ˤ29,79pH%0!؉yhrLps%'d5dп(pu\ pb9W^%m^s(mM6tv֘`v́vMYm2ךȉ4MNI%H7qa ZQz{׊<,:Rda/yl}MGhl=%w`Lq3ccH%WpBƧVl^v9O=?_ _ @ r: vP6]?f/}O#?Q%3X^dz'puezm5E,o EnRMbRW8Pۚ鈳G:y.- U?3:S鯳|~_WAq`c[sD45;?o{+>-(&Iq5pٛu0lYt80T,}r2cT}<ܩ> stream Hy\T瞙7Dyㆊ|XjcS[kʢ1nK4JP+\bo{fAM7zg'Ik?zsΛ@c&>Gm w~ĵAt.6ސG͝SK3q\0/ nyn;G{c~6`&;z"I>/b3iGJ;dT„ܓ8BQ_ؤh =x;S}''7x)N)t,LN`B^%M~m\ hX6DGys%I? #'F>6~d4B=hFT"K=Vn]8B^+x M%}|I | 6ȭ-w `'w\?Ka*P8?s88WZ[9NŻ9Q3| ..|r?r~ɕl<v&ğ,Tf@Goy/c~/u9 c)5,,e]uzC?y^˪'F!"Krʢt*EtQ)ErJu&256c2w/8Y^ʰ˩,xfp6S[Arv4ZrZ'9m wJNluFx8zNZY)><̤AK_OS40zJN3ݜjnOK嫛J[Dh 7Wzi2E#(2 >ciؘa\J_4KʒwR*7M)RRX8pJQТͅ Z<=k}iz]!~g3is:xx(uqG92cc#asX*}5|вѲʲҲ²ܲ̒i9mfɶtW)= *7qV~b^Ѹ?O~El)r7 4 ?4DJT4jlRGO?>)Q]Fa`ܡS%OexX98 'a5)"mc 'q瑏8K؎x\(hc 0B!>L$b2b i 30]~} l/eRd"3tIh9@I! yV*ZMk侒M !5"oZKP6FDi m)v/h}J4i7o5jL{)5%_Ԝi>t:J-%v`':F)u  T5d%StP>yjC!3]KT@ r-]5&.\-zDeX2O)=rzA/*#dPUS< Hv,L,a^hHD#-^E# _LQg\S -DKJ@$~yFUulq|>"EbJF$bEE Fň((6 n4J,1ފou֙;wΜ={֖u4EG _YW֓l J)COow|*|)_V65B`3x#o͜[x+ox'93xgrgn=~>#|q>'{>ŧ>g98  |/eW_#ą\7;3_ɿr1?\O7s~/tʐ eQ6wieqNG(^uV]T7UUwՃ{0OBȍ$B(ƉŨ߈#Dx1<GUT3y,YTX3*XUT*UUaTV:&W7hݨq>͚آem>oخ}PpHi]uޣg}?`` g|=t/1rT1_7>v&M2u3g͎37a -NfeSV\zo}~MSlݦHiNؕ;g}"gP Sp}oS[!'3iWQERxH$UȢe*FVkB_a. R.1R8,=1'DjYf8Fբ jsAhzK5X̚B8l]ZA/!G򢏱L4K[xLR+2`9R|k"U݌'duCvT~Y\m:F9!^̑rMVxcS`x.-셠D6_j[nq"5ReqGJ%ȶAp(w -4"=Dd<o)x VQ079ZK*+ʗ^*O\!GFbUj,Kb'd?hZ-Uۦ-UVduo -dcIdX2[Tg/8V?6 睌IPqp_tga"F“3Q6= #W\f;t͍dsNv Cd\$d,_)#WIUWꯆ,y[=So`:[3;{r\v` <ېcxboj 37.4f/ZEDW n*H_vy2<PHb$2e]-Fr-FOEw&PǨcoy9`+&[$['TTg*F^G7XnV]_ 'TDY2|qg\!| E-~9L ((_ YPa0TPNUE&IނݵB%VZ5)I>[Sڎ4%Z7 O Z8Q(M>TӲ{@DN'EObl98ޠXez* P7QE#$8̘Jwi!YSu9"[&kL~|z*aiB>J+ԝK l t'P_Bݥ0Z:t=D~(L߬; kֿ.P 2zȯMV-[4oӴIF^ wW\vN5WZʕ*XW24VRW[HifwK BǠtDM yY6F👢ɏLn&sn)G G;1ȭ\\-k/*kۡLA&4CE'GatnX{{Q 6hF {Q֐%YaQ?&3;ɲ-w>Kf 6`Ud; J`% 50$4qf ftbL4B;aN+L:fH(- I043Ua2~+ӛ}}~~ @%0`cFuu2GNi+ G8;E|(6_9[6JI3m6v #NאðnQx7$1zcfާW窴0z,}ؼVȁx`IjBIk=-aVh$ƫh^Tާ;!})/;+9Þ;6Ʀ^N[kf,DCCR@:bS һj`|q ͆9ԥ7)W'ftLA+D'3Pty(D(d\NM&)PP+ض#̯] Cp IQN4gfzR$"x"a $j^jޔ7՚W)zrʶmf72\#S-c\e`JlgA1%4R۹2nQsRj6%4<^6%Mg@`e[ b5:ؙAHɑ>#&\9ko :]oҔ&=w&{;5E!2JFmi&}Fӡ8ت/-a6DZ1H8/ȑ q8,;sㄹB0,ݮ[%ݪkCЖARU9+Œ܋p.R\Ѻ/XAwy#k",GZ:.9`-$+=Q_Yz]{'C_C? %9W-w%kť!_p,b_ssVl:oߩSO[ 18ǙL3$7ogJ` Q(WO]#ny9b?Z&>Iޔ? Jy%ɿ[)^JJY+`c|,+QH{6y]A-U (~$x.Y,vT-d  td<շqt/lٻU/{܎JaEk;-/M^0lr֌9tM`cA0gL2MKN;c:KyWˡ܀HJ s4?7eme^ pHTjjk(h@@Qd.:RF'>Łb~P+^ aɬ;,qԇG\HQ/ Kɐ<@dT= E 󥃄zNcT щّ"En'-Kܿ3?y$;_x~D?ۋ^pf骺MO悝=f>K?/3L6 gs sfǛKp{n].qKJulvbNrcilIbF~$l6+[x_b=(m}~e7˒F Ñ`h@x1A- Y|GU@mACȁ脕D|4 y|*CeѤbM 15r Aʅ4*T/Po.rn-IKɚZ繅1~;[^:1[W?>v\~a}l`{?;}]R_|sV);[VGol]jMiW?{|4q.$G=9,çqߨ#•4>r rcr5ORW\I]%){{TCֳaf0[Jwo,8 LDk2fwc|P}L#^Q~^W"iU=I2|p7}7ȳ<ͰvL%PtU)Nn~H<#Cl1Xopz/jטu yu@ӂ,IHU%|Z]rX]nP<OcI2D#41%I)ҋ~->ni5:]i>2rcmG*$ePAw"Jb\z'lɤ LL:{trw-6 E1ME)MM9}?#v4@]U} LΙBS"[ThXhItAlf lX31pIp K0aX1:cz(Ȗ.+^CEP' .[I'LWXidk~T 8od #?|xf-K'@̶RTl`>v#?͇r_Q^0]J-C;("tcz{=NK@>iY ʏr7O.HZyT C(H(0 F, #&<#ZI# &)HJpU:F6Tv#b:mup=ra >Ofsv8ٽl2]l{Pre%<w9NWb>N~MH,ay`# ԺQm>u)g@}&i=!PLeQ7:B{i69P#&r Ygh 7;%8:'cq{ `zp)~d#͞x2/MZ@Y6]gh85p;eBmT7j%wapsa ;٧|@XC7B[E0;̙pyDD#}}I%6xQ0 ]v1np1>D3,y/X5Xo2*Qiam Z4eG SG\l,ҏX)9_TJ}'c oMz>#IяϘ8ظna~)X_8ɑ$ceT nƱPuD>wY8 r[MVp; ⺗G>ߥ^={)v|Uh/݋99P[ vWwrϷ`בiyd=){|dȽ w,wQ |/HtWEhU;U9eht;0.a=y+Y#.CJ0y /&lWT\H ~0fנޏj/TE$d/8i=с' 5*̥cd}|U37U3@y,g^'V%N%B}ur~$1nfflMnjXW0Orލ[dz νҷH2F(F[P6;[`MD5f }a0&f ygB sĸ; R iwPu3ju,Ul&)ioR7`(YXjg |'#1CUʳih  UPlNMOiK[#v6^>N$S4zm|ۚML00h'4OaTÍI=ϒUԯ vd >Ly@~dvRG~F\}4No\\~q:)Ķ>rB{40ܕ(GejSGGk>8u(Z2j>\u(GZu(k飬G}:}Է飾˴NeQz+{ғd-+=Y7(=Uޘ!YKAQݪ[JOW+WnmCK p-J!)KAQaȡnD Y&@/2>瞪~CɲӬu瞺}뗜/ǿqkFd6 o)8>xsN7紵~~1cc4VQhi7~(8*&Ho5ԘPɰs럩iLEXɢq;oo'zh3rv;2?Þ|h ~utg o{#IuMv/zE@<؍`M~Xq͡Hvax ^ vsӱV,ބWw 132u{I gYL4ߔ3HΊu]m*كjX.Ԑ/03Z.L2=ޚUDֆNcrQmJ%I}EQGFJ˩UyEߒlЮ>%d}qџxCESU~ *>#ƾo {1Z\A} Ac*IC썖Ѹwp׹[ϣGkXc\?]5?u WW=2m4d?7 p.z6n":Hncu+x7?[c'ڷӿ5tUzQeQ6Re]nlY*'nm2u^f8uT`γgۛx<,Sgv6NgKVggffqRٽWvbd8q]rܧxS:1_rAUm56j zq^FScu:O.e2g)&&[.j]QkBZ@T8-3Vs bLOEcr^) @sgq!-6*ms]}1ЅJⷀB&6Ε0'ioT٠Jo I C^1nH P]7,MX^M./M6ɱ$vbLgj0o C y #HZ0T׬23FBĊs[P._Cq C>ՋR֗)0W* R4 +l q]U0y`rbsN&:r&"13u4oZq5/24" 49@Fz5 -4'U^ ]t :Q,U]%MҦ$e6y7VD&?rd5rr:=zqt?=:=Q/7G'jÓ;wLSڡ&KN("h G%JVv6si r/_q&NԷؖjР13Υ qFM s8%),"Lq{gmpĉ/9"PmRgaځ!uQ. *譕LlQt#W@ dN++kV2][kNe6PnY֯')r2R]DHUR|Nכ8A݋M]7]ZY3tiҗE4P k 9tz~Zo>(>>OW;O7mo߾}5&wv=s]yϩa!%/yҔm]|?lsArI-[[o~/J:½E7euW| b693J^:i44]ЎmCc\Wήglm>kIVl$5ٽ5>@ZBi-٘kto q hͫaԵҟosz942%y sby&Ԍ(/_}-ReEvm`&"'{}•}bs<[zy8WAí1N 460^`NUKxE" aEAiR4l lc]JG  6(Ji {/sf >}K攙sfgRyxڑݙ"fӭ>چѯ{:nV*hQi=t!E{|٪-޶ީ"wl(tfmﳖɻi#ݶi[]~;va:C#6K-͉4ϱZnlZ!Yc8Վzv Zf؛u}R DSCѻy v6J#6KRtDX0E.b$<αv%x,S_WT]1]w7Ew0,'[Ϥilry'5z47'ou$ltR.ldX?zdvb`6 Gsv7Ö5h YyΦG|2TvuC=IQ2$ztLgާȲ:rGg*Ҕ7#gKМ6sL.c:]˰ NifERyK3oꡀ ɽ ѕ_ 1@N黚|Z9ͨZgoeF6&2ߎ:U.bh 'E3=,y&?'>;6^>eK9<u7h93dcJ D9щ֞V9KDsP6QLg)m<'[<dH: H8$&*3NI >UnK5Ga1֠>5Z;d9|w3#狀2bk.}zLlV:10IZ:EbjZY1r[9]ʏ*#A:4 ֭P}sŢ;2k72-><͍={W +=!V$Ilu߽e뿠u ѵWUf8x̗괞kȝs(`ذ= N\NNyo`jfkEͷ+zf}o 7_va7^9]3cdN \>]_ܱ<{Na|LUW/}\&ys. OJ'{ۧe/$N%99%NϹj2S .%8),Hx\$ōWKHI)%)#eR)'2\*HEBJrABeZHU jHMdm: fdP॑"*Ma Sfj֦2ikA_xC4JIw!wFGzIo#}MUtfVAo4X ]n։NהcP6xl 2B򀌒<$cd2A&$,#L2Mc2Cf"NY2e̕y@@g9y^^HY*%yY+򪬐uY)dEdl7eldlM+).-{d#XaDQrBN)9-g|*|)_|+(?*)9.DQE(Q%Q q ʠ,.E9ePWJTUGe\*kp-:j&C-F.z܀7f4-h&M -qZ5ڠ-nG;GtD'tw FO܃^>{q|HI  cRtd Fa0`(a8F~xa bc&b&a8Gpp'ppgp3|/%;|#~7?'9 AX/dQE,΋Y%Yy ˰,/Xy/gVxYW 㼆ײk:bm& y!of#l[ٔ؜-ؒ[ vc{v`Gvbg;y+;{n=þDُ) ?0iLg39Y 1lpsrsH>Qp,q<'p"'q2#|S8INc|OpgI\S|Y>rs _R.K| _ ׹ksFn[-mη{|prC~ďy (8O$O4-tv.K LĀ&C U kE{{%{ޞ}1̝se2KQ*eHY,Q*˔ eJYQ*~"$*B%Pb3l-%b;l`숝3v c쉽7?uG hqqEb#0-h(8cІ800p48hDfB 9c2a\xA/bDq Ni8gLqy8B\q .eWJ\q u7F܄q nmwN܅q}A<cxOI< sx/ExU[x]>GS|W[|~OW__,<,",,2, *:FC 2$+b%X܄r3n-%܆r;nqv܉;sݸ;܋{s8sc=l f#ȃćc|OI>ŧ s|/E|U[|]?GS~W[~OW__,<."..2. *:W7R &ԤZJ/gL,hvnlzW^|͞m%-c[fl(٬&:m#Z&+g;IL hDVpМ|92QFk Ch9hѾG1rڔ0FZ!ڲruʊYb;I{[x9PўY0 7"vi憠vߤzA(yJ&I'OuV(hj{^uU3yM Ւ膯蹂WP5l_<%f 0-;Q/l5D W syWNf^SNͧ"Y]bl7fTW*1{4C-5fVNhiq Xn_@j#2DcRtLc2$&b28& I:uEC\#uM]0J$^S_"T:vQ[r+šKƱr:']+VNJ t‘W4LwU3$nwj&!.kjdIֵWhG)Jdt;cntCƜC-#SD(GA:E93שZ2Uω[SRUV׶w+2Ҕ֥jҍ1khw|p}!-6J(LI&jXW2ԪaǜdsBHL4*(B`s`'jdRLid`󛊑qElMlMKf37VW7"lbѣXZe,ȭQ%V*SWn2Y=S1:6b2&&fDl \- ȊjY!TqBrnv;džL#"Ʉ;( ee|b~9MA}K_Kclj MrkOi5%&ЏWy7J Y]ѝTojxN_)[Cҵ)_HOV?_ܩ{b^Jf|$2KdȬY!Bf8888884848484848   >cF)fbFUdВAK2gȜ!s92Xo98rp#G8 p(QupAHݍJR (kNxm 3*V]C:ʓYuڜu3 e}1l؁;fw7t\G|2*Ox0}0)/ʓbu6߭mf ڋeN"::yWUy5xY^ӈμhN/$2 ʅ&$=LiD T&ɪ8NegZ59tBx]ʩ9&}]O6 r:#w:n^z?u vk]h0\޳!;u "6nL54Iy^_ kz\ dI@a碴GuNMæ''à Qn&mWf'd Niz͛JLKbYh>6ӏzZ]n#i|\OIy|ۢycL&ɴu9 @nNϫ 4Pe@Jc(V NNHYh QXӒıN_s Q n+\JbK@XG2xan^a'Neb9 e@sq>+ϔ@,8~EIs݊rxFq |)8Vxz 9kv_<swŰj1>_.y\!oS޵{yReTZrǵ]ĵ{toknbua?w\صa׿JR c}$xTߌY{ߢ7;_$qT3!sxo{mˢW,!?C: NZ*3>k@ !p XV"E h-/e}9b2<8%z3hɠ祖 eJ3"||H-g-Pc/%8r|$r[`EAq J V𯀂Jq#k,3nV8bo1υ/{qm[A3O<~#,|voXw7\"~%{0w{~(SЬJWMv|L\N}{/7`(a"I%*=foVN,H_}{`J}( RS*pJ Nd RS*pJN)8<c*T RS*pJN)8$g ҁS:p ;LGyҁS:pJN)8;1tҁS:pJN)8Np D 4Pe@988888888888$8$8$8$8$8p>St̿F*zp0n.ևnM|ǩ2SQ=y^5WEl*e*acS%0v^ΩG>5j>/G3C$Ҧ2"!L(LUTV!iTHN/+'q;gUbt=f~T5/L*iؤaMA21Q%*iTɑi(oh%ݝ򸝜UXuw@0.*aH%;沁w^;7c;G1nV[šdY n[]n7ϜeϦ[[4Z -^-wm-^-w7cçp)\> ;X\z8XY6/ۼ8XY/[Ǘ8lڨE-ܲQjngϺ_ǵmVi's~>]+\+]\]6umܵkw\ص;mGJ{HP#PyEeŎ3ʧTPy_գRgۼLDz{<~ٵOv~  q~]{OnwލJwNR_ߢoAȣ|Oz-~p7#30n-6w\2hk `RYI(Z6z{e$VaRqù5C?iJI> qj0tɈJ"K\W6iKq:U˿)e!]P~Q7)?#sjT,P.482g4BUaW)u Gs^.rSBaK-çl: /!*Fc*QyZ*˱ce1i( |)o}] zoڻ@|i4W$䖘DN?[~$רȋ~•b8MHWl9tN{N(NIuUz7=e{^Ng)=d"kJ:jb}zPZ`5g4MRU'Zh._|1SdUH\cIOkL3e׮v]G21Fp1cfz7] L9tށ'IrQ@w ?|u\+)!a r_6SLdgJ2“Y3'JL T=v2,YX"" L 懖1>O٭YO-x{u4}]P'zl^U.o;׭O}mzLB,Jv]F"d4%C[HKۊ#sx0׊ [j<>Ws-b."x[:+#t.kOuЌWw7[=$'InBq ॥1^g#+6bɏty(N J(ep!507z.Ԓ5 $e׷tE?f6WZt eHI끑\II?XS`jɘ.;`*ijvus{Șx ifv lR Y >  ]2B0 endstream endobj 18 0 obj 22321 endobj xref 0 19 0000000000 65535 f 0000000016 00000 n 0000000069 00000 n 0000000133 00000 n 0000000473 00000 n 0000000582 00000 n 0000000746 00000 n 0000000825 00000 n 0000000907 00000 n 0000002473 00000 n 0000003694 00000 n 0000003917 00000 n 0000005139 00000 n 0000005366 00000 n 0000068109 00000 n 0000068132 00000 n 0000072070 00000 n 0000072092 00000 n 0000094506 00000 n trailer << /Size 19 /Info 5 0 R /Root 1 0 R >> startxref 94529 %%EOF libvips-8.9.1/test/test-suite/images/MARBLES.BMP000066400000000000000000202105741361153320700211740ustar00rootroot00000000000000BM|A6( . . gnnnǼjwe.~̻̽̽ɻɽɼǵĵǵ±´}wo|eps]hoPckAQYI:AH:AH2=I=1>.84B/=,=4=.=,6.=.=,=4=.=,9.=.=,9.=.9764B.9,6.=.9"946.6,6.=.6"946.6,246.9"646.6,642.6".,.".".42424.72424.724642767676A6&E6~_vTE=&.*4, ""         " .".24&.*6=23>&6B$/=6=/>,9.=.=,9.=.="946.=,9,9.9"946,=,646.9,646.6"6,9.6"649.6,646.6"6,6,6".,6,6"6,6.6"6,.". *,..2,.4..2,242424.427242=6&E6¿¾yhTV64224*, "       "    "," &..&7*2=26=.AE2AI2JQBTQBPEBPQIJIITTQ]YQ_\Vhc\opfwp_}pk}pfoc\sh_oh\ohkym}pko\\h_Tm\VTEIP\Khc\eYT_cYhf\mffmf\TEI242672..4&,"" "" "=2&..&.&,     " , 24*64.2A.->$7A!4>1>$7=1>,=.B.= "9.=.9 "9.=.9 "9.=49"9,9 ,9"9,6.9 "64949 "6,9,9 "9,9 ,9"6 .6,6 ". .9 "2 .,. ,2 ".,6"2 "."6 ,. ".,....*,*.*,.42.24.724272=6A9¼¾¿}\k<==<4*" "        ""..24*67*2.22.*24&2.*<=.<=66=2AA9P\Ke_Tmc\of\_QT__Vm\V]QQ]\Q__V]QQ]YK]QKP79AE.AAB<=9<=24B4B*=3>->"= 49,= "9.= .9 "949,9"6,9,9 "9 .9,9"6,6,9 "6 .6,9 "9,9,9 "6 "6 ,6 6 "9 ,6 . .6"2."2 ".. ". ".2 ".". *,*,. "*.*"*"*4...,242727.=2=6}{»½½¾pTEI<=94  ,            "   " ,","&4,46=2AA9EA9EEB<79<=2AAB<4267267.2426726726=2A462.*&,*&4,".,."""               " ""42=*6Q9PhQwsxsmf\_YY____fY____kkmooovxvvxxvvxxxx{{{{xv{{{‡…‡{{{xvoossv‘“őÒÒőÒÐŒőÑœœœǖǗǘǘŖő‘xvvomkffff\}Y}YwYwYwVhVmTmQ_I]Q]wTTpY_s_esf_skhykhmoxsºŽ׿ԽԽϻϻ̶ɴ±«}ssPf6T&I2I=47 7=A7.. .44.,..72IA77=. 4 4 47=7AI&A&I&E7A&E2E&IA&E2I6Q2I2I6Q2I2Q2IA&I6I/=#=-=,= "9.=,="9.=,= "9.=,= "949,= "6 .9,9 "9,6,=6,9,9 "6 .9 ,62 .6 ,62 "6 "2. "*"22 ". "2...". .".". "*"* "* *,*..,.4.724.=2=9B¹¼ǿſ¾¾wT\TI924*" ,     "  ""  .  &4&..,.&,4&"4&..4&.&.&.,"&,,." " "  "    "    " " ,"2=6E2A_I]yYxomf____\_Y_o\\___kkoovovssxxxvx{xvxx{{{xv{{{{‡Š‰‰‰‡‰……………‡{{x{vo{sos{xÒœœƖŖƖƖƖƖŖƖƖǗǗǖœŒ‘‹svvsmkf_f}\_w\s\s\oVoToVmT_QeIeQ]Q]QTwTTwVes_ewkep_ewfemhso{ÿ¼ǿֿԾѽϺ̶̹Ǵ¯«msEY2T6TA7===&A7,..,= 4 .7 7EJ\2IA&I&E2E7 74=AE&I&I&I2T&I=IA&E2I=A&I2I2E2I6Q6IAY2I7=6I2E2IET-=6>1A,:.A-A,:-=.A ,=.= ,= ,=.=,= .9,=.="9.=,="= "9,= "9 .9 "9"9 .6 "9 "6,9 .9 6 .6 "22,6"6."2 .2"2 ".2 "*".. ".". "* ". "* "& "* ". *.*.24.=2=2 ¿¿w_kPA=.. "    " " "" " "   "    "              .44*6E2E\Be|_xxom__k\__f___oof__fkosvvsvvvsxxvxvvxx{{{…ËŋÐŐŐƐŐÐŐőŐŋŊ‡Ňɇ‰‡É…‰ÇÉʼnŠŠ{xxvomokmoxx‹ƓǓǖɚǚǘǘǗǗǖŒőőÊxxommkf__\\YYYwVwTwToQeK_Q_Q]K]KPIJwIPwKTwQTpYes_hsk_skhwfhwmh|ooos¿½ǾٽԾԽѽҹϹ̶ɴijmsJ__hJ_ATET7.4,",=7 4===2IAYAI&I<\EQ7 74EA&7&E&IA2I2IA&Q&IA2I&EI&Q&EA2E2I&E6Q2E=&I&E&A2T1C.A"=.B.B,B.B.B ,=.B .B"B ,= .B"B 4=.B"B 4B.B"9 .9 ,9"9 "9 ,="9,9 "66 .6 "6222."2"2."22."2 ..".&& "&&,& ,*,&4*7*¿̾¿¿seAQAE2."                ",.&7*6A2AT=TsT}v{ommkm___fkf__km_ffkmovxvoox{xxxxvvx{{‰‡‹ÊŊŋŊŐŋŐŐŐŐǑǑŐŐǐǒʒǓǒɓǑƐŊŋŠÉ……LJ‰‡ÉÉÉɇŋ‰‰{vosssmmssvx‹{oovvsosm_k_\\\VYVQTQwKwVwKoBoBhI_B_BTy=Es=JpBJpKThY_s__sf_pkewkhskewkhskmohvo{¿¼ǽʿ̿ؿԿԽӼϻϺ̵ǵĴ®swThATA=7 . 4",=7= 7AAT2E476YAT2I7 4 4 4,7=&A6Q2I&A2Q2Q&I&I2Q&A&Q2Q&I6T6T2I2I2I2EAY2I&E&I=&E2IJf]f]cETlBkAnAmAo=m =mAoAm =mAo =m7m =o =o.s 7o.m.f.k.f.\ 7f=_ 7fAkAk=_EkE_=_AkA_E\A_A\A_I_E_=\=\=Y7T=V=T4T=K7Q 4B 7B.B,B 49,9"9 .9 .9"2 4642~2A=2=92E=2==2==6A=6QImAmAo =mAm Ao=mAo =o =o =o =s 7o =o 7s.m.m,k,_ .f 7_=kAkAfA_AkAkA_AkEfE\E_I_AkTkAfE\E_E\ 7V=V=V7T7Q7Q=I=K 4B ,=.B .B"9 .9 ,6.649 46/7='7=2=9&=B&7=2==2A=&==2E=6II6EQ/2Q9PcKmpfsss}ys}|v}wv}|v}|v}wvx|x}|x|x}x}|x|x{{x{|xmmkkmsosvsxxxx{{vxv{œɜˡ̤ФѫҬӫӫҬ֫Ԯִװس۴۵۹۽ظڵ۹ܼ޽޺޺޿߿߽߼ߺݽ߽߽߽޿ݿݿ޽ۺܸ۸ڸٴڴس׳׵׵ӰҮҩҭҭҭШХ̣ˣˣǠvooVKQKQY\msxomosxxsx{vxsssmkkk__fY\\oVmT_yKTpKPcKAYB2Q=6QIlBoAoAoAo =o =oAoAo7s =oAo7m =o 7s.m 7o .m"f.f4f7\AmAf=kAkEkAkAkAfA_ImA_E\E_EfAk&I_A_=\=Y=Y7Q=V7T4Q=Q4B 4B.B.B"= ,= ,9"6 49 46-<='8=&==2==&7=&7=&7=&7=&=B&A=&=B2E=2IB2QKBT9T\Tmskssoswswys}yv}wvw|swyvwys}|v}yx}wvx}|x}|xxxxxxx{{{{{omffmsvvvsxvxv{{x{{x{{‰ŐǜˠΤШѬѩҩѩԩ֮԰ׯٰ۴۵۸ܺٸ۵ݺݽ߼߽߿߿ݺ߽߽߿߿߿߽߼ܽݼۺ۸۸ٵ״װ׳״ӮҬԬӬҫҫШФ̢ͣʠǚxoomYTTVYYfovvkmms{{vxxssssskkofkmkff_oTeV]wKJfIEfIAT=6I=6Q=6II2E=6QKmAoAm =mIoAo =oAoAs7sAo =s7sAs =x7s 7o 4m.k,k,k .f=_Ak=kAkEkAk&EfEfA_AkEfAkIkEfA_Im&Ef=\A_A\7VEY=T4Q=Q 4Q 4B 7B.B ,= 4= 4=.9 49 46}{.=C(8=&==&=94=&==&==&=6&==&=9==&==&==&7=2E=2AB&EB2I=2II2IQ6TQfj_ohkswsswsosvsyswwvoyvsyswwvowvwys}yvwys}vwv}wvvx}|xxx}|xxx|x{{x{{sokfkovsvsxxx{x{x‹ÑƓʚ̢ХѨѩШԩԮ֮ׯڳܴ۵۶۹ٴܸۺݹ߿߿߽߿߿޿߿߿߽߿߽޽޽ۺۺ۹۹۹ڹ׵ش׳ԯԮԮ԰ӭҬѬХ̣̥ˢŜxvk_\TYY_fssokfmmsxxxxssssommkkmkkmkffoVeQ]wIJ_9E_=6Q=2E=6Q=6I=&EB6QI6QB6A=2=9&=9&4=&==&79&7=&==&=976&==&7=&462==&79&4=&==&==&7B2=92AB2=92E=6EB2==6II6II6AK6TQ6QQ6IK6TK6QQ6IQ6TQ6QQRQJ^VCc_Ool]{{es®ůdzʵʶ϶ϹѺҼԽ־׿׾׽ԼԺҺӻѻѹ϶϶̵ǵǴűij¯Į®¨we\JT{=x .o,s,v .x7x ,xo"smm.s ,vmfmo"s,s"s,s"vs"ssosssoooomo"vomos"svoo"s"ss"s"v,v .s,xv,v"ss"somm"om ,ommomoommmkmmssokkmommkmomo.v,vs"okmsvmffff,o.s 4x 7{4A&IE__p}wwv__\AIKAA=&72"&.&, " "        "      , " ,"."".,.&4*4.726=96Q=6H=2E=6QI6IB6A=6QK6II6I=TO>KN=JQGXXAYRA\YEc\Oqo]hw®¯ǯǯǴɴ̶̶ѻӼӼԽԾֿؿؿؿֿԿԽԽӼҼѺѶϹ϶̶ʶʴɴdzų®®}wshEQ4x 4s.s .x4x.{ooo"m"m"mmmkmfsv"ssm"mokmss"sooomo"sooo"s"svom"oss"s"v,s,s.xvv"sv,sommommkfmmmmmmmmom"o"{skkmmmmkkmoomm"m.m"os"vo_fmo.o.s4v=A&E6TJcew}e_kT\VEQI2=6&42.* ,,  "       "  "  ", ,"""&".""&4&4*,*&A2=1EE2C=(EA1E=2A=&=B6A=2IB&=B6IK2I=2==6AI6EK6A=6QK6IK6AI6IQPGARNAQQ:QUE\TA\YAcfPss]hs®¬Į®ůDZDZɴʴ̵϶ϺѺҼԼԼԻԾ׽ԿؿؿֿԾҾԽӽѽѼѹϺ̶̶̶ʴʴɴdzǮ®of6E{&=x 4s 7s67 .xmmm"sssmmkkmmoosoooo"soo"vss"s"oossosss"sso"m"so.v 4{,x ,ovsv"oosommommfkmmmommo"vx,x ,{smffmfffkfmmmmk"o4s,v"v"vsmo"oo .s.v 4x=2E6JA9PC6AO=HC=OE8HJAQQATQH=HABAI=BAIAK=IEQ=KAKAKAKAKAV&AV&AQ6TV6QV2EV2T_6\m2Ys6h{AsJ_mw}ssso|w|w|}|}|}|}|}}|}wy}}}}}}y}}}}}}y}}}y}}}w|}}wy}}|}}}|}}|}}wy}}|wyw|}|w|w|w|wy}}|wyw|wywy}|w|wywywwmfh_AI{4m .m"kffffffkmmfm,o"s.s .s 4x4x.o"s,s 4x x ,o,oo"ssommmmmmmmmmmkfkffffmffmfffkffkmmkfmkk_f_ffmmmmkom"kom.m,m.v={2E6QEYTfo|ymfkTYYTYTAIK679&=64."&.&, ",, "       " "  ,""..&4.4*&4*4.&=2&=62796A=*/4)29&28/74'B,#46&7.4&,".&.".""",4&,"&7."424.64&6=.6E2A\KT\_PTV]fYhhmm_mmff]YYT\_PTVEAK<==AY=P__]cYhhkmcf_Y_mckm\\_EKeA9P.*646.2"  " ,42649<7=<==<==<==[=\ =_ 7_Ak A_ AkQmQoQoQsQsQx2Yx&YxTx2Yx&YQx\T{QxTxTT{T{TQ{\YY&Y&YT&\&YT&YYTx&Y\Q&\YT\Y\&\&\T_YT{QQxAvT{ Ix AsIxI{IxIxQv IxIxIv Ex IxI{Ax IsEx ExT{Qx Ix Ix Ex Ax IxIvAvIsIsAmIo=f 7f7_ =\.V 4V,K"9"6". * "* ,& &"* *"&.2"6 ,= ,B 4B=K7Q7V=Y=Y=YA_Af=kAk=m7o=o7o 4s 7x 7.=777747=.=A=AEAA74= =7==7BA>BJEIAA E QITT2_fAkEf=kImEmIoQsQvIxTsYxQx&\xYTx\TT{TY{Tx&YYT\YTYYT\YTYYT\\Y&YYTYYYYY\\\T&\YT\&\TYTT{T{Es AsIx ExAv IsEv As Is EsAv Ix Ix AsT{Q{ IxT{Q{ I{TxQx ExIx IvEsQoEoAmAoAk =f =_ 7Y.T4T,I92"* *,* ".&.22"9 .= ,=4B7K4T=Q7V7YE\=_=_AmAm=m7m=o 7o 7s=v 7 774 774777A=7A == EA7==7E=7974R D=B=7AAAII ITY I\\\__f2f6p2h2sAsEy]moosss}wswshe]TyTT|PyTwPwJpJpPyJhJsEh<\{6Yx&\mI_&YfQ_}{ "                     "4*27=Uk3]k6Ym6\o6cvBABAHABEBAB=B&EB&EI=B&EK&AIAB&EKAKAK&EKEKAK&EK=K=IEI=K=I=K=I=KAK=I=I=I7B4B=B4B4==B4=.===76,94=46,64646,64279&7=BA"=>)A=:B======4====B==AB=B==ABAB=B=BAB4=AB=B4B=B7B4=4B7B.==B7B4=4=49494=4=494=764276464672=6762=96=BB7=79====79==7=76AB7=4=A=7=4====979====4===4=46==7979=676467676,6=67646=6&79&4=6==PA2N=2Q=6T=2I=6Y=6Q=2Q=6Y=6YI6Y=MC6Q=:Q=6TA2Q=6Y=6Y=6Y=T-B -B"B"="I"IH"H"I*MH"J,T4V7_=_ =f =_4_4Y4\,Y4Y4_4\A_ 7f4_=Y 7\.T,I"B662*."6.94B4V,T 7V 4\.YA_Ak7mEoEs AsIv Q{T{YYY&_&c\\\Y QA7{7{7==4x,o.m7o7v=x7o,k4fAoQ\\ Y \\ \ \TT \ YYYYYYTQTQEQIETQAIEAEA====A=7=AAI={7sAv=xA{TYQ\YTx2\Av 7k 7f.\.\=_7f,_4_7f4f7f._4\4f7m=mEo=o7mEk=_.Y4T.T4K =T4I.979==2E66E62A6&==6E62A62A62E96A96A96Q=6A92A66I96E92E96I92I=6E62E96I92E96A96I92E96I92I92E92I96I=&E=6I=2E=2E96Q=6Q=2I9NAHQ8>K!4K.I,IB"B,BB"I"III"IT.T7Y=_Ak=k =k=_7_.\4\._4\7f 7f7f 7f 4Y4\4V,I962..,94Q 4T=_ =f =f=\4Y=Y7_=fEoAvEsY{ Y Q\\&_&f&f____fTAA==A=.x.o,k7sA{=v7v4m=mI{\\ Y \ \ \ _ _ \ \ \Y\\TcYTTTTTYITQEIIAE=7AA=AAAIAAIAAITT\YT&\&TTxTAs7k 7f =k=f =k =k=m=mAm7o=m4f._7f7f7f=f=f=_=Y4V4T4V=Q=Q =T.I4979=6A26E22A2&A66E62A6&A26E62A6&A26E62E2&A66E62E6&A66E62E9&A66E62E92E62I96I92E6&Q=2I92Q66Q92Q=6Y=<_=AfBAfIJsKJyQJ|QPTPVJTT\]\T\]f_f]fe__k]___]\]Y_\efhfmksmoo}owosvws}ssv}vsxovmhxeseoho_oexhvmshvem]f_mhoemhoek]mekhmhkhke___]fT\TTPTPyTApTEpQA_KC9#)3,""" " "            &&.**..222"992"999"=99"9626.&.9296299926296999999="BBB"III"IIB"I"II"I"IB"I"II"IIBBB=992"62 "6.=.9,94B 4\7vAAI\\Yc_chfhhhpwswsw|swswssspppphsh_cf___YYYQQQAEQI_\\fhfcYTYTQYYTYYT__\_c\__Ycc\fc__YTY\T\YTTQIYQITTQYTTYYTYTQTTQYTQTQQQQIQIEIE=IA=EEAQQQY _fEysmmo¾¾¾º¿¿¿s|mwxhsx_ho]fmeho]_mPQ_ATY2Q_&A_&TfIfEk&Tf&To&To2Ys&Yv&TsTsTvQxTvQsImIoEo AmIs IsEsTxExA{I{QIT{ QE{ Q IA{ I I{A{ I E{A{A{Ax=xAx=x=xAxAx=x ExA{=xAxA{=xAxA{A{ I EAI IEQIAIEA{IEA T IITEIT QQ T Y Q T Q I T I{AxAv=m7fEkAf7f Af 7Y=Y =Y7Y4T =VA\Q_2TfEfsmy{|]csJ\m6Qf&A\&Q\&E\A\&Q\2I\&A\6Q\6E\2E_26E2.A62B62E62E6&=26E62A6&A66E62E6A66E62I62E62E92I=2E92E92I92Q96\96*B47J83E4.B36E61E22=.6E22E2&A26E22E6&A22E62I6A26Q62I96E66T66Q=6Y=Af=EwKJ|TJQPVJYPYTTPY]Y__ekemeseohseohsoss{sxmsosmv]kPf]k_seomsmxsxsv}}v}swo}ss}v}{}vsxsshmoo{woswwsxmsmsooovoveshohoeohoek_f_k_kTf]fT_T_]\T\J\JYPVJTJTJVEyTJ|QEhK2\K<_K6TB6Q=8!>6-C2.O:6G8*C46E6&E2A22E22E62E66E62E6A66Q62I92E62Q92I=2E66Y9f IoAmQsQvQoIsIo AmIoIv&Tx6Y{A_{AYE_PcTc]s_s_wmyewehswswsmeP|PPyJyTPP|]]T_eT]PJ|Ay2p&f2c&f&c2f&_IQ&\_2c2_QT2c6pAyAyEC:C>7HD?INJ?<966234,&.*64*4.,*&...*.&44&..4"&.,.,*,*,*24.242242<7.A=9<==AAIEEIAAIPQKEAIA.9&.9 &&*.222222.."29"9,B,II4K.K"Q4Q.T,Q.T.T,T.T.V,T.T"TI,I"KI"I"II"I"IB"I==92Q,Q"TQ.T"QT.T,T"V,Y,V"V.Y.\,\.\.\,\._,\"Y"Y"T"T,Q"T"T,Q,TT,T"V.T,TTV,Q"T"T,T"T"T,Q"QQ"Q"TTT"VV,Y"YV,V!TTT!TY-l4{7EE=QTQ\_Y__\cc_fc_fc_c_\c\Q\\YYTITQEIIAQTTY_\c\YYYTTYT\\\_\Tc\TTQIYQETQIQEEIIATTITQETQETQQTTQQIEIIITIIQIEIE=AA=IA=EAAIEEIIQ _&sT|sw½½¿}ymsv_ffP_f]c_]__]_\T__]__TY__c_]ckTY_]__PT_22G26E6&A26Q66E6&E=2Q96I62E66Y6,R4Y7_ AmQsQxQv&TxQvAoAmEoAo&Tx6Yxm Bl Al=m An AmEm As IsEs IsEvAvIv EvAv AsEsEmEv Ev Es EsEs=sAoAoEmEmAm=o As Ao=k Qs Em=k Am =m AkIm Af=_ =f 7\4Y =_ 7\=Y=\=\ 7V=V&EYl AmAk=k AmAm=m AmAm=k Am Ak=mEmAm=mEkAm=s Am Am=mEm Eo=m Am Em=m ImEoEmIo Ak=f Af =f4_A_7\.\4_7_=Y =_ A\ 7_=YAV=VfHlAk =f Am Am Ak Am Em=kIm Em=fAmAm=k Im =m=k AkAk =kEf=k7f=fAfA_ =f =f=f AkA_=\ =Y =Y=V =V=T7Q&AQ6ETAITPTVJTVJT\PYYTT\TY_]YY]Y\T\__c_]\_T___c_]__]__ecf_cf]_kecf_ckecfeckhfke_khhmmfmhcmmhmmhsmhompoopompoosvosvososssswvspvwwswsxws{}wx}y{wsv}|x}yx}wx}|{}y{}w}||y||||y||||||||||||y|{}w{|}yws{wpvmcmJQYY=Y =Y=VE_ =\=_ E_ A_A_=f AfA_Ef =f=_ Af Af=Y=fA\=_ E_A_A\ =YAY=\EY =V4T AT7T=B=K&AK6AQK29KU=KUCDW>:QIB29B8AO4=P_ 7\7U=_EmIsEsIvY\cc&f&cc_c \IIEATIAAA7AAAIEAIII QQAEA{Ax I{T T_ Y T Y TQTQETQEIA=A==AEAAAAIT T\_\c_c\Y{Tx IxEv=mEmAf=_EfAf4Y=Y7T4T=Q=Q7QAQ ET II TQcI&fK6wQEVJVT_]m_vm{ow}ww}˜˜Ú—ws}ws}w}}wws}smvwsoxmvs}ssww{}{xxvsv}owosmmseshs_oes_x_s]m_s_s]s_v_o]s_k]kTf]fTkTm]mPfP_PfJfP_TfJfJ_JfJfJmPf6yf&c\&__c_Y_Y_\kYkcoco_s2fx2p&h6s6w2pM29Q2>K'7K'4B27B27I48A6>?27B'7K2EK2=Q2=K'4B2=>&=I24=2=I2=I27K2=K6AK27K27=24=6==27B27=2=K2=K27I6AQ6=I2=IwAuW}G| HyEtBpBoAvI{ Qx Tx\_&\&__Y\\ITE7AEAAA7A==AEAIIEIQIIE={Ax E{AvY{ QI T TQQIAIEAIA=A=4x===A=7A{II\YY{\\\\Y{IsTx EsEoEkAm=f=f=_4Y=Y=V7QIQIVEV IQTQYI&pQA|TEYJ\P_Tmevmsw}w}os–œ——}—sxmvmvژwwwsoxsmxhxoxs{w}wss}}wwww}}wms}}ww{oxho_s]sTo_s]oTmTo]o]m]m_m_k]m]mTf]mTkJmJfPkJfPfJfAfA|\&f\\V_Y\\Q\Y_YfYmco_v_xc{&ff&hhh2s&p&p2w<|<|EEEEPT]_]T_]_e_]_]________eee_heeee__hms}whhsw}}wossoooosomosoomhe_]]PJJEAJEAAAAAA*EE&>EEEI&IAQIEI&I&EII&I&I&T&E&IIE&I&Q&&T*6Y.6Y22T.6Y.6\.6Y26Y22T*2T*2T.2T&&I6Y*<\.2Y2E_.<\*<\2Ef9h|IoY}\fkssmosossmfwfs\kvvvvv{{{xx{vvv{svsossxxxxxs{xsosv{{{smf]fTE_9A_2g|||}||}||||||||||||}y|}|}|}}|}|yscxJQfKTCUYAQXMW:HWAOWCT[KWe^`nQcl\ooo{½ǿ¿ǽýºowhs{]fvP_mP_sP\oP_mTcoTcsJ_mTcoPcoP_s]fo]csP_sTfsP\mJTmJ_mP_oJ_mPfs_ĻɽɽŶ¶¶}}msvP\fEQT&76,.242679<7=A7BJ=BP=IP=QTEQTAV_IT_IY_IVeI\hQYmIfmTkmQkhEfhIfhIf_A_hQk}\sYs\xcv\xYsoTmoYfcxcxh{ssswwfshfphhppccffhfchhcfhfpppsww||y||wy|y||sy||yyy|yyyppsppfff_\\YTYYT}Tx}Tx}T_hcshhsf_fp{chh_f{_v_vcvfxcxh{cx_vcx_v\s\s_o\m_o\m}YkT_}YfwQ\oQ\mIYeAT_ATJ7KJ7KPAITAQP=BP==E=9AA=EE9AA9AA9EA9EE=AA9EE9EE9EA9EE9EE9AA=EI9EE9AA=EI9EE=EA9EI9EE9AA=EI9EE=EA9EI9EE9AA9EI9EE9EA9ET9EE9AA=EI9EE9AA=AQ=EE=AA=AQ=EI=MV>JXBVYIX^J\_Pfk_yvſ¿Ǿޏ|ep{PcsPfvPcmJYmPcsP_oJYmTfoT_oT\oTcsTcsPcmT\oTcsT\oP_mP_mJ\mP_kJ\mP\kPcs]{¹ǼɿʹĴ±wosvTYkJQT&764.2=6679<7=E7BJ=IP=QTEQTEQ]EQ_QVeIVhEVhEYmQ\hI\sT_mTkhIkhTfeIk_I_hTm}_s\s\scv\v}\xoTm}\kfxf{fpphwwhshfhhhshffhfhfhhhchhpsypy|y|y||y||y|y|yy|||y|yywppsphhff_Y\\T_T}IxwQx}Yx_hhhshhppfxchhhhfc{f_fc{_vc{_v\s_s_s\oco\s\mco_m}Yk\_}TfoI\oQYmIYeAT_ETP7KJ7IP=QTAKP7BP=BE=9<=9AA=EE9<=9EA9EA9AA9EE9EA9EA6EI9EE9AA=EI9AE9AA=EI9EE=AA9EI9EE9EE9EI9EI9AA9EI9EE9EA6EI9EE=AA9EI9EA9AA=EE9AI=(I>*fA?TQ_ol˜œ˜Ø×Øŗŗʘʟˠˠ΢΢΢ΣТѥѥΤѣѣХѤɟ˟ʘѤөԩҥѤңңѣңҤҤӥӨҥ֥ש֩֨׬׭ٮدحۮٮٮۯٯجگۯڮۯۯۯݮۯܭۮڮ٭٭ۭ٬׬׫ר׫ר֩רץԣԤ֥Ԥ֤֩ҨӨҥТ΢̡ʜǘƘŚƚŗœŗ––Řǘʟʟˡˡ̣ͥ˥ˣˣʢʣʣǣǡơƠǡơàŠœ——{}{moJ\P\EhT97 /. . 7jwAQV46A74>7)7/24/7& .= 7 7= 7, 44 . 4,,.,, 4,,.. ,",",",",,,,",",",,,".,. 44 4 A A=A =. 74 ,.. ,.& ,& ,.&.,4&4&&7B4B&7B&7B4B7K&7B4B=I7B4B=B&7B4B&7B7I.B=I7I.K4Q7V4Y7k4m.k=o 7o 4s 7s=v4v Ax 7x4x A{ =x4x 7x ={4{ A747=47=7=7777774.74.74,..".,"{,{.{"x.v4v.s7s7o7m =o7m 7k=k 7k4m7m7s7sA{Ax={={4v"f,Y,T,Y4m4o,o.f4f7m=m=m7k =k EmAv Ix QQ T T Q T Q=IAA{A{A{={AxAxAvA{A{7vAxA{7s=s7o7m7m7k4m=m7m4f7k7k4k=mAmEmQo IvAvTsQsAoQoIoAmYoTo2To6coEhv_ywxwØƜɠʣͥШѩҫԫ֭֫Ԩש׫׬حححح٭حخۭۯۯܴݰ޴޴ߴߴߵܵޯ޳ݰܯݳ޴߹߹߹޹ܸװԮͣ˘ΖМҡӣԨӥΠКѠңңҡҤӤҥӨҥФѤΥѤΥШЬЭѮЮѮͭʬʩǤƥŤ¢ssw}whvTskJhf2QT=B =B .Q,Y4k7v =EA AII&I2T6Y76=63>62912>/&4.4&44 .=77 = 74 44,,,, 4,,.,.",",",".",",",",. ,,.., 44 4 = A= A=77 . " ,. , .,,., ,..& ,74&}{7I4B&7B&7B4B7I&7B.==K=I4B7I&7B4B&7B7K.I7Q4V4\7_=m7k7o 7o 7o=x 7s 4x 7s 7v4x 7{ ={4{A =4{ A{={7 A=7A7==7==74A77A74A7474.74.4.,..,.,.{.v.x.v7v7o4s7m7k4k 7k7m4m=s7s7sAx=x4s4m,_,V4_7s4s7o4m.m=m=o7f =k =k Am IsI{T T Q Q TQEIA=xAxAx=xAx=x={AxAv=sAvAv7o7o7m4k=m=k4f=f7m7f7f7f4_7f=fEmQoQsAoQoToQmToTs2Qo6\oEcvThxhy{{}ŚŜẠ̇̄ΤФҩԬԭ֬ԩ֫ש׭׬ح׭׫۬٭ڭګ٭ۯܰݰ޴ܳߴ޴ߵ߶ߴߴݵ٭ܫޯܯݮݯ޴ܵ޹޸ݶ۵֯ҫ͗͜КҠԣԥҨΡ̜͚ПѣӢҢҢңңӤѤУѢХФͥШЩЭЮЮЯͬ˩˩Ǩťţ¢}os}w{sx_sPhfAY\AK 4=.B,V_.v 7=&IEEQ&QI2\<_A\A_PcPf_s]h_p]yhwmwos}ww}howooso|Pc78H97,<2'42'4.4*&7*4*.7 4 7= = = = 7 . 44 . 4. ,. ,,.".",",",",,,.,,., 44 ,4 7 4 = AA A = . 7 ." , , " ,, ,., " . , ,.&,,74B&7B&7B&7B7I4B7I7B4B=B7I4B=B&7I4K7Q7T4V._7k7k=o7o 7oAs=v 7sAx =x 7{ 7{ 7{4{A{=7{ ==7==7==7=A7==7=A=EA7==7==7==7A77A7474.44,..,7{4{.v=v7s7s=m 7m .k=m7k.m=s7s7v7v4m,_4_7k7s=v4s4m7m=m7k Am 7f Ak AmIx T{ Q T T T QA IA{AxAxAv=vAxAv=vAvAv7sAv=s7o7o7f4f7f7f4_7f7f4_7f7_4\=_AfToIoQmQmToQs2Qk6\mAcoJhv]s{s—ŚƜʣ̤ХѩҨԬԬ֩׫׬׫ج׭د׭ج٬٫٬٭ۯܯܯݰݰ߰ݶ޶߸߶߹߸߶߳߰߸޴ܰݳۯ׬ڬݯݰܯݴܵڴׯ۶۶ٴԮШΜПҢҢӣԤѣРѠџПҡҢңҢѣѢҢТТУХХФЩЫЮЬЮЮ̫˥ʥǥŨä¡woso{hv]wm<_\6TV7I4I,Q,_.s4{AA&TIEQ&Q2Q<_<\A_JcPhPh]p]p]yhyh|hsw}}mw]|som_owmwTmososmeeeeh]sJy]]yTsTwPwPsTwTsJhJhAf26H66A9*?6&9-&=/'7.4*7.4*.&44&.7 4.= = 7 A A= = 7. 44 ,..,..,. . ,. .,..,..,44.= 7= = = = A A 7= 7 . 7 ." . , " , ,, ,, , . , ". ,".. ,.&7&&7B4B=B4B4B7I&7B4B7I4I.B=K4T .T7Y7_ .k=m 7m 7o =o 7s 4s Ax 4{4x 7{7 7{777{7=7==7=77==7====AAE=AEE=EA=EA=E==A====4A7474.4.,...74{7v7v7v7s =m 7m7kAm=o7m =o7s.m7k7f7oEs=s7m7s7s7s=m =kAkAk EoAv IQ IQIE IA{=vAxAv=sAvAs=sEsAv7s=o=s7o7m7_4_=_7f4\=f7f4\A_7_=Y =_ A_AkIk&Qk&Tk6Yo<_sAfsTsvhy}|×Řǡˡ̣ШѥҨԫӫ֫׬׬׭׬׭׭خح٭׫׬ۭگۯݮܰ۰ްܴݰ߰޴ܴ޴޴޴ߴ߶ߴ߸޸ߵ޴ްޯݰܰۯۮ٬֫٩ۭۮۯۮۯֳӨذװװШ΢ΜҡҢҤңѠҢѣҢѡПѠҢҢѢѣТУ΢Т΢̣У̥ΥΫЭЬ̬ͮ˩ƥǨƥå£sms}}}hv_|sJhf6TYAV4B,I,Y,k.{=EI2QEQ&T&Q6Q<_A_A_EcPhTh_p]seyhwh|msw]peyPfAssw}wsmosmmmm_m_hhPhAs]yTwPpTwPsJsPsJsJhJsA_<_&19-.3..4"  "  " " " ""    " ."," " " " 4&4.&,.&.*&46=2TYQh_Yyky{sssfmsfmof__T\]QIPQIEA9TYIJQTTYTep_hpmhhkmsmosmmhkmpmhffmhmhc_e_YTQIJTBEQKJ\TJ\YEY\ATYJc_TckEY\EY\EY\J\Y]_\J\YAQYATQP\YAIQJ\QAIQ6A=EQKAQVAEQETITYT]\VTYYPTV]_Ympm]\\TYVwwowpvmh{swowoww|ehD./1*,1!-"34&.4"   " "   ""  " " "&72=.2A2AEB679EA9EA9<=9AA=62=26=66>264*2A2272&.*4*" "  , ,""" 44" .&4PI6e\Qe\K_\Ke\K_YI__QefT]YKETBET9JQBJIKEI9JTBJIIJYIPTKJTIJTKJTKETIP_KTYQJTQT\Q]fToyfmsk__YTYTT_YTYVJTTTYQPYTPTTPTTJQQPQKJTKEA9<=96=92A=&=Q&AT2ET2AQ6AQ&AT&A\2IV2E\2AQ6EQ6EQ6AIG=9KQY™_™mžo›m›kŸs vÞváxßxßsŸxŸs™o™k\s62**.6=9BKQ\s¥¨èŪǫǫǪŬŬìŮìê¬ì¬¬®¬®¯¬¯®¯±¯¯vmkfmosssvv{––‘“’’‘’“’—Ò“ØŘŚŚŘ×ט،Ŝר׺‘“МŗŘŗ’{vvsm}msko_hY_|VEfIEfIAY=AT=A_=A\=AT=AY=AY=AT=AT={:8A=|6==IIKIQQQQB296'.}'ty)-9CABI’Q“Y_žm›kžsŸsÞváxßxßxţ{ǡ{şváxÛsÚo˜kQ..*.29B=IKTk¦¨êūǪŪǬǪǫǮǮŮŮìŮů¯ï°ª¯¯±ð±±®xmsmmovvvx{“––“’’’’Ó“—’“’—˜ŘŘŜŚŗŖŗØ˜ŚŚşŗÚ˜Ř‘Óґ‘őÓŗ–’‘’Ò‘‘{xxvmmskofo\eTTpKEfIA\=T 7VI\Qf&E_2Qk&IkIk2QkIkAkImEkAkImAk=k=_A_=k =k Af=_=_A_ =fI_&Ik2I_WGY!H]G_2Qk2Qm&If2Qk&QmEm2Qo&QkAkImEfAkEmEkAmAkAf 7_ =_ A_ 7_A_ A_A_A_E_A_6Q\6Qf6QfAT_AQ__#&T_6Tm6\v6_x6Yx6\x6Yx2Yv&TvTsQsTs2YsIsTv&QsIo&YoIsEoToQoAoQmAo =kAkAm=fAmAk=_A_=_ =_=\=Y=\A\&E_2=_6If2E_2=_]dQUXT`_Q__Vg\UhdV__QTYT_\Q__V]_QefT_cT__VecVhcYecVmfYmfYhcVmfYhf\hc\mhYmc\hf\hf\mh\hf\mhYmh\mf\opfop_mf\opfop_mh\op\op\mh\op\mh\mh\opfop_mh\opYop_mh\opfos_mp\sp\op\mh\ssfos\ohYowfop\opYop\op\mhYow\osYopYowYosYopYsyYhTeQhQmTmVoVoVmVwYs\s\s\sYmVsVoVs\w\o_hVeV_QeVs\wfmVo\o\mVwYsYoVoVeIe|IeBeIeKoVmThQoQoQoQsTsToQoQsToTsVsVoToQmKh|ImBoIsIwK}QQY_mvx¹½ýޏµ{ssok_\_YYsToTmThVhQmQs\ms{vssvssxx©ªêūìǯǯɬɮɰ̴̴̴̵̴̱ʹ͵ϴѴҸҸҹҽԾ׾׾¤¤éŨŬǬƭʰʳ̵ʴʮ̴͸θ͹͸̼͸ѸѶѸԸҹԺԹӹҺҹӸҴҴͶ̬̭ͮ˯̬˩ƫǬƨ⹟ถߵߴ൘ߴ߸ߺߺ޷ܸٸٽ¥Ťťʳʹ̺μ̿̽̿˽̿ο̿˿ɹƶð­ҿҿѾϽͽͺ̷̺̺̹̽˹ɵɸ˸ʸǸǵǴŵ´±´yxmso_hkehkehk]fmepk_hk_fk_hkehk_fkcpfcsjgosdhf[fl]hm_hk_hm]fo_fk_pm_fk_hk_hm]cm_pm_hm]fmepkehk_fk]hmehk_fk]hm_fmeffepk_hm]cmhpo_hmeffhpo_pm_hkepk_hk_pkepkepkepfepkepm]hmepf_hmepfepkesf_hkepfesk_fkhpkepkeffepkepk_p_esfepf_p_epfesk_p_esfepk_p_esfhyfh_sfov–““––ŗŖÖÓǘǚŘŗŖŚÚŘŜŚƜɡɣɣɚɜˢʣʣɤǥǣˡˢͤΣ̟΢ѣΩ̥ͥǡŗ—Ŗ–‘ʗҢԫڮܳ޹޺߼ߺ߽߼߼޹߿޽޿ݺٵ۴׮׭ح׬׮֭֮ԬԬӫҩѥѥͤШΥͥХ̨̣ˣ̤˥ʤǤŢ堟œšs_kmossm}_PpKA_B]pVh|\smxõŶŵǺƺʽʿǽǼù||yx}sxwsvshompoohmmfme_kehohfoecsmhxhf{hcxmp{spspww}yy|||&=K&7B2EK2AQ&7K2AQ2=Q&=Q6AQ&=Q7K2AQ&AT7Q7Q7K4Q=VEYA\&Tf&E_&E_2Qf2Tk&Ik2Qk&Yo6Yo<_sTRGUXKVYKTYQ]_QT\TTTQT\QT\TTTT]_Q]\QTYQ__Q__V_\QefTe_Y__VefTecTe_VefTecY__YefVhfYecVhfVhfYefVmfYhfYhf\mhYmhYhf\mhYmhYhfVopYmh\hf\mhYop\hfVmhYmhYhf\opYmh\mfYopYmh\mhYopYopYmfVop\mhYhfVopYmpYmhVopYmpVmhYopYopYohYopYopYepTeyQ_QeKmToThIhVmVmVs\oYm\wYoYeQ_TmVmVmT]T]Q]Q_KhYhVeVhQhVmVhVoToT_I]KeIeIeQhTeQmTmQeKmQhK_B_I]BTy9]|9]9J|BJw9Js9Jp2Js2Jp6Ep9Jp6Jp9Js2Py9]y9Ts2Tw6]s6]s9m|BoI}T\o{{{sso_\\\}YwYsTmVsVoVsY}f{{osvsvxxª©ŪëŬǮǮǮǯʯ˰̴̴̴̳̳̳̳ѵѵѷҸҹӾֿֿ־ֽ־׿ٿ£ããţƫƩʭʴ˴˳˰͵еҳӶҸджѼҵҶҵҵҵЯʹͯˬɳˮ˫ǩǫǤƣƤ㿤൚൘ߵߴݳܴܵܵݴܷٸۿťũäãƬʴɵͼ̿˸ʵ̼̽̿Ϳ˿˽ɹŵǵð­­ҾѿϽͺͽ̹̺̽˹˹˸˸˸˽˺ǷǸǵŴŴ´±yxmsoehk_fk_fk_fk]ck_fk_fk]fk]fm]cf]ck_o_\hh[ch\fk\ekTff]fk]fkT_k]ck]fk]c_]f_]c_P\f]ck]hkPffThk]f_]c_]f_]cf]c__f__ff]ck]fk]fkTfk_pkTfkTff]f__hkTfk_fkThkTff_pk]hf]c__fk_hf]f_]pk_hf]c_]pk]h_]fk_p__hk]f__p__hf_f__hk_hf]f__p__hf_fkepf_p__fk_pk_hf_p__p__pf]wkhfwksxҖ“–ŗÖ×ÖŗƖŘŗŗŘØØşŠǢǤɩʫʟǠˡɣɣɡʢɣˢ̠ˢ͢˜ʓ̜΢ΥУˢʜɚ“NJ̘Пӡԣڭ۵۳ܴ۵ܳ׮׫٭۴۴ڰܴ۴ݶݹ۴ٮ׭֬֬ѫЫЯЭԩԫӨҥҥҥФѨФΥѥΤ̢̤̣ɤʣˤɣƢɢǤɢƢǡǢǡ¡Š ŠŸœœœš{ofksssswf_pK<_=E_I]hV_yYhfv³õŶöǹƼǽ˿ǽǿż¶|x{}xxǼ2AK&=B&EB2AB7I2EK2=K7K2AQAQ&=T&=QAQAVAVEY=\AYAY=YI_I_&I_2Tk6Qk&If&I_&Q_I_2\k<\s<_v(&.3&#"&.&"&.&,."" ,,"","&.,"&46=*EI2TT9h_IocKshVsfQsfTscK}pQsV|_ox{vvs|owks_TJ7.&74.&7*&7&.4*4&"&.&,&""  "  "  "  "  "  "  "  "  "  """"..&4.." "" " ,..&76=&A=*EI.JE*A=*EE*A=*<=&EE*AA*<7.AE2AA6AA9EE9EE9AA9EI9JI9EI9ET9JQBEE9JTIJTBEIBPYIPTITQBP\KTYIPTKTYQTYKPTKTYITYKTTITYQTYK]YIT\Q]\KTYIT\Q]YITYIT\Q]\ITTI]\K]\QTYI]_K]_Q]YI_\I]_KT\Q]\K]\K]YI]_K_cK_\I_fQ__K]\K_fV_cQ]_K_fK_cQ]\QefKecQ__QhfQhhQefQhfThhT_fVmhVhpTefVmhVmhVhpThhVhpQ]sI_Ie|K_I_|BTy9T|9_BeI_B_BTITy9]B]BPy9]I]BT|9TBP|9Jw6P|9Ew9Ep2Ep2Eh2Ep2Ep2Ap6Tw9Jp6Pp2Jw6Pw9Jp6Ty9PyBJw6Py9Js9Ew9Jw6Pw9Es2Es9Es6Eh.Es9Eh2Ap6Jp9Ep6Ec2Eh.Eh2Ah6As6Aw9Es9Es2Ah26c.6c.6c.2\*6f.<_.2\*6\*2\2\2_*6\&&\2_*2_&Y6\*2\&Y2_*2\&&T*2_*2\&&\6\.6\.&\*6f2Ap9Ah6Ep2Ep9Ep2Es9JsBJwITwK]yK]yThTmYs\kov{xosssxxx{xv£¨¨ŪŪǨǪǫɮʰ̯ʰ̰̱ͯͳϴѴѵѵҵҷҷҷҴӷҸԸԸԵַָָָֹ׸ַָյִִմմմԴֳֳճֱԮӫӫ{ӫӫԬӫҨvҦsѥoѠmѥoѣfѡmϡoџf̙\̚Q̔T˓K˔Q̓KɑBʓBɘQǙVɚfɞkɞkǡoǠoɡv˪̴̰ϴѵҷҺѹϷѸѷϹϹѺϹϽѺϺϺϽͺͺϽ̹̹̺̽;Ͽ;̺̹ʵɹɸǴǵǵŴõôympoP__P__Tc_P\_P__P_fJY_J\_J\_JY_P\_P\_JY_Jc_J\_EY_J\\E\\EY\J\_EY_AY\EY_E\__j9esB_hB_hIhpBepB]p9]s9Ts9Eh2Pp2Jp2Jp2Jp2Jh2Ep2Jp2Eh2Ah2Jp2Ef2Ac6Ef9Ef2A_2Eh2Eh9Af9Es9Eh9Eh2Eh2Af6,?:Y=h{\ª¨ª«««««¬¬ĬůǮǦŦ¦ıǯ̬ʫɮʴ̵ϴѴѴѵӺԽԹԶѶֹرԳӱԳ׶׽Կҿѽѻ̶̻̹Ǵǯ¨nnn<DCEBCEINOOIJA&PQPQPI]T&PQ&PQ]Y&]T&]I&]Y&]Y&]Y&]\*_Y*_\*e_.e_2e_.ec2hc.ec2mh6mh=opBwwK}|_|msx¸úǽǾɿ´ŴƵǵɶǹʼ̼̿οǿʹ¿¿¨¨¬¬ǯŮűɳʱʯ̯̱ϴԶۺ޽ۼ߼߼smswossmhA]ms_ee_PTJee_]_]]PEP_PJEAJA<8&7*,.&4*..,,,,4&4&....24*," "   "      ""     "4&7.E=2&7*4&.4&4..&.&,,.&..&44&424*."" "          "  ,7*A6&IBjj>vsKh¹ǽɾúÿø¶źɺɽ˽̽̿ſ¿»º¼»»»żżɼżǻɹʺʺ̻ɹ̶̶ϴϳϳϳѳѳѴӳҴӳӱ֯Ԫפؠٖ܌ڊې܌ߌwh]TJ<26A< |wwwsssswsssshshfhf_hc___\_\Y\YT\TQTII YVV:P[CW]AMW:QUATYATY7949 .949 46 .6 .6 ,6"2 ". ".. ". ,&.". ,& "& "*"* ",&"*&,& "*"& ,&,&"& "* ,&,&,&& " ,&"& "*"*"& "*"*6IK2AQ6IQ6QT6TV6YY )&/."4Ax6QvJj6Ep9Eh9A_9Ac=EYBET9EYBJYKJTIP\IJTBJTIP\IJ\IJYIPYIPYIJYIP\IP\IEYITYIPYKPYIPYIJYIET9P\KPYKETBP\IJYIJYIETBJTBEI9ETBEQ9AQ=ET9EI=AA9AQ=GfBE_=EY9J\IJTKPTIPYIJYIETBPYIJYIJTBPYBP\IJTIPYIPYIJYITTIPYIPTIJYIPYIETIPYIEY9EI9JYBJTBETBEY9JQBEE9EI9EE=AA=EI9AQ=Jj9Ef=AY9EY9JTBET9PYIETBET9JYIETBET9PYIJYBJTBPYIEYBET9PYIEYBETBJYBJTBETBEYBJY9EI9PTBEQ9EI9ET9EI9AA=AQ=EI9AA9AQ=AI=AE2Ef=E_=Ec=JYIEI9JYIJQ=EI9EYIJT9EI9JYIJTBETIJYBEQ=EI9PTKET=EI9EYBETBEI9JTIET=EI9ETBEI=AQ=EI9EE=AA9EI9AI=AI9AQ=AA96A9"(,* ,* !*,.,. ".".". *"..ԾҽѻϺ̹϶ɵŵų¯¿woe{PmJfj[R~o]y`s}}e<_T&\K6pT]vw}ho}´¶ǹɻʽߺߴۮت֫׮ӴԴҴүϮϬϮ̬ʬɬɮɬɮɮǯ®ŮĬªĨ¦e>fRMye]ve~p}Pwv<\Q&YITB2cKTohemĶǶǻ̽̾ܯ۱۵عضشִԵԶԺӺֹغԺԶӹӶӺӹӶϴϴ̴ʳɱɮǫª¦s]hwwooey]s{AA=:A8CDDAC66=2:=2Ny=Is7Gs9]ImT}Y____ksv{{xvɭ˴ζҺҹҶѰгҭڼ۽ݿ߿޿ܺݶ߼߿޼޼޸޺޺ݹֳܺ԰ҫӫШФ̤ʡʡʠǟǟƠƘş˜“x{xssmff}_o\mVmQe|I]yIPp966A967692=9&A66E62A9&=62E92E9&=62A66A92A62E96A=&A66=92==2=96A92A92796A92A9&=66A=6A96==6A=6=92792E96A=2792E96A=2=96A96==2=92E=6A=2=96=96A=2=66A96==2=96A96==2796A=6A=6=99&A66D76>9'>62E92A7&=6&A62A6&=62E92=6&=66A92A9&=62=92A92796=66=92=96A96A92=66A96A62=66A96A92796A=2E92=62=96=92792E92E92=66=92=92796==6==2796A96A92796A=2A92=92E92A=&A66A=6==6==22A6,B6:&=63=9&=6&=6&A62A9&=62=9&=9&462=92A9&=62=92A8&=62A6279&=66A92=92A62=96=6&=22=96A9&=66A=6A9&=62E92=6&=62E92=9&=66=96A92=66A96=9&=66A92A9&=66=96A92=62=92A6&=66A96A92=9>3A9&=66=92>6&462A62=9&=62=9&=6&46&A66=9'=62A72=8&=62E92=6&=66=96A92=62E96=92=62=92A92=66A=6=92792=92=6&=62=92=92796=66A92466=92=92792=92=92792E96=92=62=96=92=62=92=92796A=2A92=66=96=92=96A96=92796=96=96=62=92=92=96A96=92793K92A>&7:6A=2A9&==2E92A=&A62E92E9&==2E92A9&=62E=2A92=96A=6A92=92E92E9&==2E96A=2=92E=2A=2==2E=2A=2=92E=6A=2=96A=2E=2=92=92A92=96A=2E92=92E96A=2E96A=6E=2=92E96A=6A=6A=6A=2=96A=6A=2==6A=6A=2E=6A=6E=2E=6I=6E=2E=&B62E=&E=&==2E=2A=&==2E=2I=2=96B=2H=&C92E:2D=.C96B=2E=2=92E=2A=&==6A=2A9&==6A=2A92=96I=2A=&=B6A=6E=2=96A=2E=2==2E=2A=2=96A=6EB2=96I=6A=2==6A=6E=6A=6I=6E=2=96A=2A=&==XT\6co2\o6co?XPH?rsĿjt#K!y?1wA ?[?-$n?G>?@Z>Lme.ܿ?TX%Jf2?qz?R>F ~:ri?8^h?"3?Ⱦ)%?H~|?QD?5s;Rؾk?ۂF?Ao#fW>9YѼ?LÌat龖cT]@\%R'ſ̹?N?SJbu?,?[B8?4Aj3D?X?3G2?6??O:վD!w?4m3t?8dM5znk:?:/?ZH?V?0Va琿t?rc~?u?^ֺ_F?rq3J?Ƅ >-P?eJ@:<6;)D?iHa="?\?-#\Q؈V־p_Twj??m6kZݎ?2?Rlȿ7"mƾd[ž&ۉ?WXƿ?E?Ig^?Hs?18?C0?YE|ʾn̾|WUf?Xs?J4?jf?|7?FfKU>?P߼V?b9?ܶ?KuUI:? ?Y_(+?L[?Y~?`?3Q@fֽu/@f?[@0?Vi[?"?BE8?:Ѭz'~ ??K?Pj?@[ܾ/Z?!Zy=.?e?@Z?B4?4b&?:?Y迋GƾemYQhU9ӤMz;?COӾ?6 ~iʾz=?Js?OG?v??N޾wۿ?Ήȟ ǿO?IVHƾRwP?C?vG b?S0۹@i?=>ɿ؋v?8 ?"?15?S^?+}M|OU?' 7?:{?0s?q?.`:D?E}?2 t?D @?BK?Gܾ.?5!?C1Dc=?Xp`?5r~>!H .?#|5?NUg|?Bjn!?dLD3 KBxV?Lϗ?k$R!F?.>?<̉ ?(oV;z?\|+wK?6غa?-)mlmE?7l?^]\?-?`հonEq4x?Enྣ7j?cU?2+o?;?5v?0eszw?0WU?""??>Yڼ'?IE0?3? ?`^C$?Zq4锾)T,?I#6@co?L?dp?I }?`_@ۿܯ?}?F?6Olc?;W?V?5G%{?,|?g[ʇھai@9 dYQx ? ?/X?3-Y 44־eV6?Blv?/Z\l?2-2&???V}LYe>?Vx_c?+;zoY?,`X(?Bn̾g^?u,^-B_?=? `PO?o?XqϾR?Dᖽj]?wz?Z8P>?m BV޿qa%/?rD?iʾc?@a??h?ى]>x?Q@U?_?Ń?4`xe?CE?7?q5\+PG?+=ؽ>J?BL°8o`N8ҽ{?PN @?#⾎pῑ@,L?M~޾Hp5h.?Wr?5$u|j?6Wl:+?P??1)?Kat?mھ^\b?= KP1 ;鿈 ?6뿘j]n1TɟsuD?=QlY?S!,[< 0?W"4oS?61?GS?d (?R?K$?Er?^?84?L󳿓ba,?:\?AB_ە?BXھt?8 ݥ?Ct.h?i+?LkĈ?N辜m ?;?=?7c<>?{s=g3Br1xl?@?9ۂ?7^*?JM~:?'?-X??3-?~DV?6e?E?;bBB?,\f:?@ؾm1?*L>]F7Yʾ| fE?2Hk7 nAlH&aſe@El`T??LVԿ?KT'G,??^:0h-<񿭉bB;ο?ZBVK.?!\Mþ'Ծ۶/?Vs O ??BοpQ?4Ta?ns?JGӽsR2$?8c\ab?7?=?7_?6zd???<?j ~{ ?B\?Fu{:?rgM1:rz?MLf?U\?RZI+YV<{Y]X-q*;ݠ?O B?+s6?C3ʿʹ~#Vx?8Z?=P7?1or?r*@2?Lm?##ҽ hT?=:*?b0 ?g-?3e?X5뿅=:?;FX?)yN?R?:zD??Go_?70ݚ3#?H[ @?"c?V?1:??2?"O?RQp=Q ?Dվ ?_a?[?`RX8~_nWĿ꾙#ھ"R?5 AtJ[%?<?-n 澋?C1?0J{I߼|?Ċ?zKmpd?p俕邾OGhǾJe?BȽȍ?G>{?apп% A?Xۿv?]@?8E&?RA?5:{?PVIY?_?S%I/rx]vM?Fo=M޿swH?G?Sr?6m|?>WYy??>?3 ?>!?C6&8 Mg,|_??E>?aľֿx⾐<6_?DQK׿d!5e?B?:l׿mоB?f5?d^j?Һ1QC?C䛿kVվs]?E޾&?jpj6???b\? ?Tuz{ؾ3%?/n?:6?9d?E>?ؽ?I:f?x n?kհ?n?W(??Y?5RIqa+?=?⓿? ?<?M A1+eƾrY??'e'?D8,?a?t_?6K?^%p?:S|C\S] Ľ?Fhe<ϼV7 f?EeA}?@HEHb˰g_?N?%A齬 ?PH?H ?Nǎ?5?Eg?Kн?D?p-x>fS?Sz 4 yP9B)?LI?H)^k@?T^,?+(i6?+mN???X?/?ٓ8a@?A?T!;x ?ةie?fԃ]?Cۋl|?]f&?=QX>44俐4#F%>?-w?Gw?O2*?P?U?H>?J?4p὾*1()W`??FP?HT?8>p"݇{?G2 ̾wZz$!?/;?=e.15|mZX??)q (?5?\|Բ<$ſ潜7P?a*?|+?H@U'Ay?=E|GZ,\<0?R?Gƾ/c?E2/?J2 1?9Pjv46#SR2뭚XcCi?>=ʺV? %?iPa7?S҂ i?#껾P6Ӽp`?]B5俌:?WI콐d?Y޾:W뎽>Fھt:?FؿO۾XwDؾ @-!Lʾ]R?N2?0"?<&N侇J~?rcOBuS[8 l?b3 {U?06HՈ?EȄ?)+ ھӟ)..?7t.(о??뇾ῠxwO˿i/myڿ>RᅫJqs^^?Eþsm>[P?Ew&?6s,hq>1I?<?߿y? N?$‾r>?["?C?+1̾M?3 {fW?+K|+že ?A/TH{? h ?WM?+1i?9y?JB?L?Z#?,DvƾNs`ݿH\g?@>e?B ?)yt?^޾SžV>.⶿ݱ:? t&?L?9=x?M`?AT+?1uV,?eo??GsĿ+:½#0 D?l4?Af?eB?I8?XvM?Bq|?7 Ԃ?S}?6?/K3[ǟ?_,?S ־Tj16X[m?T:85"; ?W?_<&̾8?wf䳿.?Є?J%?tK侏.zw`b?6)N_?@>.?=c"x?nrU??$zO?/?WԽ %dX{&?۾(?;?ZO{?^?>b7ֻ=񻾍w?hU6??Z4?Nr?"^b?PyK?Tqb@?Qة?[=D?7?E+pJ+$.?1*?q&ξm?ֱr[VvLd?S?ƴm=By!Ԣq4?"ta8˺'=o?Ӿ67m徏>?̾z:DTDoQFCLA1}F?i?Qd)?L?:K"?M?N= 010[ ?{EZe?;ljۿ+c?PrпH鸾욿ꈂόg?P@@MȾpDǿh>=Q&j2ZP?H?F տ'F?g,Dܫz?4ȾvV?gɔяy) k2d^?Ep?4;? ?E{L?(,?8?f4?// ?#!?8,?@?5 Gc{?'s?ey#?6mxG?c?T־gs?/zB~$??m龬>@᤿U! 'ֿ?B3q?,hB?<;&g Z?"(?,8? $f?B@Fy??Sľ[ƿ6?6&F_n ?C/.?VH\--I*?3BC?;;>?Jx?BD?>H kn?Mп?qyݿsf2?5?K^?X2?.?EQ?ӽ̶?E࠽Gj?H.]?Z%%&?=,e@B?@~}?[m4XB?3j@?Ί73T>pݾ17aTh9?% ?0 5M>H 辕*ΌBWX%Zy#|D?[uJLx^x0$;(?g?>P?o-z5?LֶoB CC cA/@+o&YHU`g̾nNQq_~=?M? xC?H[&ubؾ?BH?XX?dEH?TR,?-LD?EJ}?@/?"?G-?E?'-IQ5?)xྠWPJz3a??]?S?6\?2ȿXv?S?/p7h?BIo?8N[r?8d>Ϡn?4G޿ FH%(YN#¿bDFo v?K?H?TP ?A:?am3+ͽ Q>r?-:X#о4,cD6`?@~4V?/??\0?Iw&(, ?;?T`$\?L( rZM)?Gi?FC?^%ɽGn?$ļȿZq̾WiR?;o?BE?S!Ӿ?GFuv?7?G(?M?7 rd?PkW+?4mz??Y*#?\M?0ԿAA? # roJ?D>hx?@(?F^?D 쿊*O%ƿJ?#q?8@ j?8Ѿд?Zv?]@?c\s ?/?doƾ:?P$ $?]tJ?@}k _TȿF?Q<0#7?X^ߓ=ܿ?(:?li?\i_?y'zuH??z 5@a?U?zvF?`e7.?D'z龁n'?4FYq]TK*?s&?Wk?@V?OؿnA?v. տvϿO?LC>\]V%pXA NFY@VZri?+KB?d?%RTj?2XiJ\(9?DZ?% p?5ֽԾho?`??DY,,m\?>Jwy%m=[?> f>?4??K]??:(ξr' ?ZO?Pп.??5 ET{?4Nh'ſsdf?* ?N#ľyZ B?I ?:j?'?G? G?g?+nzyAa?Xcq?3Pf??3+?I/0?6?[徱ؾPտ*h?PUJh>X(j?"?C?8J2?n?A?IV?IO>XD?i뾕?-?0򾼱پr>6m,`ܽDn?6?IZ?1_??P3''?O?zp?X?fH=⾓hO?}#?CFF⿖7|O޿]@J.,~?j/P?Y`3Nt&t?LS?g?Gf"V??k|ybzd+ǿ|?C+_ r @2 ks{?1R?QG'?.\?xTUɾ2!j?&9?{?kc9?}'?C R%WJ([ǽ~8?P4QkGiU?.#׀&?4?~?.U 6?[`?D2?-ń^?W>žTr;Q?S5ܕ)Hg?Fd,?z >h =X?2! wH??Nྐྵ ?ۮ?D?f@bK?V򾄜?["?@?TsU?++ .ž һ?GzbfG?뭾b,Gxڬ9|?3-|~?_?E?8g?㫱??/MXcf?; =qF?-y?>'<@0*?T̾F?B޾K?!ݨ5`?L0?L/gDO˾ľ?Z?$k"6?A*ҿ`?iHۂ"V>G?;*2 ;þt=`?,Ҿ _ҾSA?<7gb¾L?[t(pX;?9[!L?LAhֿ/?*?%?1:Kȿ|pNlt^?OM?V+:`srF?^n!6?EQ??A @?g?NR?_?D4?c[?T#Ͽ}῁nlIy?]Y?^^RG3*^Q?ƾ" =?]IR?о_,U=*迉? )?=$?Kd9?aӾ???/n?`g\ׂx2 u?=i?U\?WO?;#?C3#p>U:(?N KQ ?]Dv ?iiq?&e?D|6׆>PӾ}Ž?V?D߂??q:@gt> u?Fܱ?$N?U|u].?A$??MM?7? TPvI?;(?=-?D>s?&?N}?+?=Z;?Pf?h4]?.f??5?$:B?3@޾ؽ@%?3d?;Nm:!?$LB C?@Vxs?Yg!5":Y? yE?KB0m?FsJgt'?Re:*v?<#>C?<\ھ)&?.~O?^RKf?'lɾj`=(?@?'?H~yb?%a?AP?@?p?k ])p?q?9w㾎eҿmPO6?OؾIǕ?YP?\T?￈t?XPVG%B/4O&v?-^?8ZR?#Z=>͎?px?UjC{N?v}jڽ]C?>?`wh?;?WF?;l8ʾvL?C _;60p;˾@:l?X$?, v04-O?Y[tv|8ǽ\OZC2?L?F!˓??Q?+'6&?:v,Ia?7p?/u(?fվ?BSǾ?:h?35?B%F־{ ~?N)@?O.zpx$h_Z6пj}?]X`:?Pb?5`%c?>O?`j?;L?KV;>?$W?.?׆fWo,AN>!H@|b?Cؽ?[bEB?X),HOjPl?EZ ;{f?7?G> v\l?Fۚ?6??NT?Kw?X*?[$q2dU߰?>0P7?>*'A^B@<?%긿?.4?E?6HvDR?qcy?7B¾&̠ 3-?1`"?Ԕgվ?I[St,d@?n&}*"?4[澨^f,l?;ƽo*(??Hb6J?VN4?l"\̽q ¾N?]>d?DlY?[m''?Dl?2^x?NA@Xd+?d?P@?L4?>M翖:?Bh8ȾN?[uެqھ?w?IZ}?bqh(8?Eh ?\ƿ ?PuRK?SߧDgL?bo]?J8I^=fP?]˪?L?6iLl2"s??/,H?&R{?>;sI?Xs8?}/tO10$CK)w?a[x?xj?N~ƿ8($?H?pоb'?,M?p?!2P4Vp!ƾ/>:??Lϣ=qS׽L|zؿ??5?Z8[3HӾq^]D?¿x?q/B7?9L0? @=Z`8$2?,)zA?!D?-?]̾;?Af?߮?3}bjn?O?'ݾG@8?W88?'|?84v2̽`a?GV?B?Y;>$2?7??1{4??_&?M@S#7J?Y(V?ȉ qb?74 >?FUC}R?4ɛ>ҫտ-?LC?4`ӡ.?,nu8%?<-ϾD) Ѕ7„X/hɾ+ 2X3?=?:Kq?5;f?ku?NYd?7h? ?6?To?MNվwʾR*?]daV.kPI9@??+|N9&I? ,?0?0?m?J?3|?5y=ž9ϳ?D&?)j?~G?O?0E?2V?C[?,ń?C[ jCMؾ(޿uOmQACt@?3B\Uk\g?3^iʽAL?W?勬i?8;~lϽ"YJd3H?M˽-Q??S{?IY?94V<3?rH:ƿc-ƿ|? ?1Ԥ?g5g?C?@?^ʂ?:AH?.̾FI?H?(O??TY񄦾4&B뿐 ?N7?<R?>?dh?) 󃾃*uD?=F?L{QSX?|??6q?4ۄ?1g'^l?-T?QCuѾƿ\?=YD?w?-e¾d?BF?8 ʾ;E\|?34X?D͋Ѿh/?뤞eF?俚 cy?^`2h 5]?J!!??L?Kf?8Y0?5D?K ?T־<?r酾VDA ?sdi6^l?.~hOe?X3ܾM@5D? Z)?0N ?=?1Nʿl$?`#?:l`?#?-?|lQƾD>3P?6Ih^ھ(?.?뿟v D?B%@+?|>l?S?>7?<D?Le?J@?L#Wʽ?x?D?e?KpI`?J?`v?־K:`4=A >?8垾侕7Z\r?Xƾ=Q&P?G} ,4?OK"( ?GĿоppP?GOKCk-<[9?:U׾F?H ;8?j,9?`qj!d ?I??f.?h?O5"k;?>/-m@jVk?)?l+?@"?L??:R*?V6?aL?2|#b(?(6c-??94'2ҾJ>ƒ2?90-y%R7 84?8.Kx SE?z@WI?žB??KV?U?/&~?2¾?g ?5ٴ? v?)E0?A2N6ҿU?-?rF?Gdy@?oգ?IwоRQY?^ <Ⱦ/D' a`?<8?L}r 7?7Zٿ x??^?R?G?Kž ?Bi?!`?FþGcxF?6ݾb־z̴C9??\2&l꾧;:Ⱦ'(,+@w?S^俚¿?;>!KԾ_?29־3K1,TWzn?;E?^T?K6Y캞V;۾l)?E{?K@+ Z?K`{?j%@s?4}"?=1?y*W?`>b~m:⿰$1$7?8s|w":澀kU?b?9:>b?㕾?Ⱦ;65?Mf?Kmwd>?߬AL\(q}W?Hv@>H?8(+?,kK ľO.?A \>G0:: ?n?8v?:mpU?7?LQ>??D ?P'h_?C1?F՛?T"y8i?6\'~ȿ?S?F >m?C?DVT???6xڱG-[;_?TS@ؾ ?Xmet?f꿉t??/L?!A?MImA?.kP:?+ ?^swr?/Ҿu>??z. ?=ο?G?uZ?D2=CоHU?\](?dL|w ?=3?FVyHB>]b?nzɾ??A?f :?Y&||+?Kab?,I?L俾/{3?==?"X?H[(۽n??P?Su~m M dKKA?qj?P??4H>ߚ|`,I?5lxK?4 8ھѾ 8?6??.?d8"?`=?MO?8?A#?&Н?=|?9Q?_+zO0ղh?P8?7H@[?`ھKO?V?k?'`Ĝ|J\r?A25?2gο_?v?@?;'?،?=/?A依񿠞OO[O??#>˾i;?,?=Pf?Lf"?4 W??<[?IV?T;? %(?75!?8Uf?AD}>Hi\:?F9ܿ*@窿5yv~c c?RҋT?K߽tqt??{ݤ6?g]?Q~?E1)?G? 3?w쿕 CK?ýɶ?p?H#:|?Yn ޸?Q u?U9cL ).yv?Ijbz ԾN a?RPX&=??h??;u2 ZoF?46m$?`?Q2?kXNa/?9i*?S'ʾ$ ҿ?Bu?e?EuCʂ@G?*2?r?dp]?(%Z?=?׈F`,S?H8近j?2V?M@U?'r?)x!JxM?B?,޾C EؿU?\;;Z:?_Tb?.Hsusre*'R?ԩl?3??ʥ?Rg*P࿚?x?X8?AL+;?A} 6p`"=3?`hB?Q=2?Hr?D?+R:Qv?=r?K015ga?5?"?2ג?94z=-[O+?5 ̿MTN3=d=@B@?u[}wݾ}6?[Հ?ipM)U?W&;?nf?MJ;`?YlM?ڥ#2EbX/NE< (?Xw?J1?i*EB?N()v?}SBqĽ?LѾOx#?S6?(g\"࿧{?OD ?>Q@?;O8e%|{?&= !Ŗ#ɾaX??LBN; ?_%> *7V?/ t?@ ʌ?HMj05?Ȳ%V?K ʾk(E!W澁??/k ?> ׿i?XǾ*=\'?E%?J?^?80?R^?2?IG(?D^@7N:N>?+)nr?GھX?g Q?@?G4#?e?c@yk? @οQ?҉sDBsn?2,?W/Q:?/ݾsP`J*ȾX?`N>a ?@??GڽW?5B?fJlӽT[ֿO?2)ؾ91征Tž.(?AqMU;'O<[PkGk?O?"9?$\xǽ-A(?`¾ |>$¾5 @RʾCAE?F SnؾA?4O]?l$ETǾ?ڽ"LZA+wf"AG$Bh6?;t>Nl?Mv?@n?}'W??N)?O??(L?F>6??=||?C `?%b~ƾ俜?X ο(N?C\` ?BO忑ޙ?1U@?A] +?O;ʽ7?L?eɾh?Unо*?=` U?S2|?9B?=7?A?:Ș?D33?R?q:` ??QOq9T쾚ASQB/?L= )Oɮ?@C]|l*O?@?~ĽF4 ?GiiLX ?In'?D>eD? ?'򾗁?T-?Z]?O~-?KD$?"5;i;J?2lC?RR?Qn?e?\p?(?6-zK?K < ?>?dE?9%o6sv?dRξCo򈒿I?hq׾ܶ>?bW%?VJFmyx@deK, [RlW?XXʾ J+?V=1係+?KGY?DQSW{,|뾌r22ھ*F?VοDSp|X=b?k}?:3 &`ο & ?DOF?̾?E??Kf?UVy¾<ɾ?PE?xH?? w;?ip??%Q?D?0Q?8 ?LL2 )Z10L<3D"e?C(ѽn@Ϳ?Q 3?0hpqJ) ?Rr?Q$^d?ٿ?# hU`?x?;H ns'r?7Z'?=Gܾ'|4?O??q3=?#M>n?+?BZ^)S?(?^ov?5@Ķ[ET?k\?0®?bG?vþLm?LT?:3dfui5rQ?6t/-0?9R*K޽͘?p$?B&l%@,j=cp??mQ#?v6?5?TrQcK?1w>&鐽ҁ^C?Xq߿=' 3,L?F$j?M,^澞ނ8?E^?V9T2d/,LP?K߽2b?6|B?2?}?6bF_ݾ[N?QjG?;KԾ-پI?`$@prBp?Om?8B lྠ?7ӾȐ?bMmnx&?\и;?,V$>g*7O?2|R?+"?Mq?F޾Y? l?:|??=?(?Q>u7?!%%7>䂿?:?=U?ʆ?'?f?w}?1g띞Ƈ?G}?ҾgmjW?Y޾3žG`?TnᾆaU* ?4]?%6?&?G?}UU",?1:v?Akk k?7?)hBMI=.B)  ? 0??"g?>&?DlRԾCg?0™?,㿡(?3.4?+?#2O?꾠?j?Me?9MU濛{IH7?Zz3ߣ?7@?5F?_>Ҽ?^ 7F?dv?c?~A"ni࿓tk:K?7C0I@w2*ȈP괾/潘WD%?ToF|uC?A,?v ?Q@Q?T佤s@?ns}j?v?\-G?b?Yx?:w(?඾_?J_?r;$?YK?X?@uѾr?Uؾ8D8.=ڃ?=ѽ"X?)! ?^l?A?q;?YL-?Z?]E\?A7fOH ?c<ԾS8?7?=Tf׽ "?="?`㥾7-"?B:F#ʒB?1`y?PžM# ?U׽L|;?"߂/\? ?@о࿒{Oi#?_GK,.?L?Uxl>`t܋?[剾?DXy???_?$Ђ?Qj? ?JFD%?)w 5?5ھ%?>?+?1v?\ ?QC+P?/e_>ҾL(?,i1 e?Nj?T1?f[?4p'־/h=l?Os/9?8ؿ`?CQN^?0^z?@Y=r H,2M2?W=l?$8?W9vgpZ ?O^3?=;?8?Bٍ?>Ⱦ??\?bp?C?;}F?8?h2?A?6#"?&qj?SN?b?l?g?fdF=U !*5WE?f"o??ꪽ?ĿCC?K#?=(gC?a| ?2/?9Wzk?5H@;/Oؾ */L?S27.?K4?R21־&?&RP?TH.?W}?e?/8ꃾb?R?A?(`;?Qz???ԾF? 2\迎#6yjDj?y?U @E?C"7麾>?0#?ڣ?^ ?^7L@?BοCr&?Pоq&?=v> S&O?U?At?pWo;?1_Gt(p;San?b ޿U ?Kzv(S&}N:w?JURxKr?EŸ;?1?<žDl?9?Kr9hG3T?U0?R2?粗?`>qeQf?_{byIn?0]?F ?2V-ѾM{?ܦ?Y8?8>;L,a.0&L?%+>Y ?9+㕾R¾L|4?99p?XXQ=[@*1?[ߐ'βg8T?'?Em{W?]TԾ"?Y ?V8?V?[[Sk?1,2\?A?1chI&Ț?pb#?TvH?lGϽ?^r?D"?W.(ٿ_?c?Ez?P?N{s<El?f㿗WNA &?Q>owA5Ҿ?WH?Z2f|&?Ho?L?r?âfOݾP꨽Z@??N|eğ?F?Lc?1.*Ns\1?6?B]?v~ K?!a?>?=?J:B??BAb?;nM?4ta;?@X?};햿ۿv~B;?RYՏ?I߾gƿ}?We*N`j?֟⾑?օ ?G`q b?Ny?izx>¿8_mjվZ?A?C3(@?JL?T?KAC?4?ז?I?K?l?Lサᙞ?ؽ?;ua4?CA!Iߋ?m:ƿ~G&b\)?kF?9۾!GҾNڿ?U2*a?"ni? 8=?K/u?{5޾Pr%?dh?@IIj?3AE???9+!J?3?O+3?"?!F?ZN?C%? 7㾑Ud?[?2(Tf?)0C?, ;x+24K V8z?*?Oܾ?_5e?5˾B? Eep??E@?85?ƿ aV>XHa?SԾM,?Css_yO?r+e?/`?OF?S41?C%ԽT>?qҾ?t4lſ4M?3x?Ejc%* ?u?>?<&1[?AS1n XC@W?9P(C?Oa6>?,Sݾ?6aL~>;1?b>Ŀ?P@?dW0P?u?FE?G`-4A?eB ?ob?~ B%?ݾ.?cʾ[}wWp?[# ?Wľ$_?# ps??<6l!A5hNpͯUT?^K?V[??,j":1?&?M1?Om4˽QZHB}[?Mf WP?8-{ =ξ࿒uC?<1ʾ}yߜ?E@׾|K,z>徢( ?QlT?4>h0&^2!F'l ǾJ2?0`3 ?羟?\a3q?Xtc>ાzտ*sTJQ?\ЦO?8(l#<P(L(&ٿF*u?P>:?7ཀྵN ?E3ڿh?:ݙ\ԭ?,޿*?7ƾ_?9?I[@?7%ܾ)V?}辿8?h!-zu5vs?"?=0&Y31?MV\?oHB?YH_@?6wܾnol?D<@i@B΀?+O?T⿕?aZ?J'ȿF?I!Ľ?h8?b,EAIх?j_?F*j?A?C=˾4h?((ҼmV~?"W]C?E?Ө?Oq?$ x,Wdzv?+fھ)Ix.?Z?4o'q?DD?^U^?R5< ?]&XrTc?Q2?ASI?El-"C?62}־Dп!־𿒶/[?PbjO@q?b"!4AGSlu?? ?<(?kL0]?77_?hے?;ھphƾ:ꩿڣ?K*?IU=oeCkľ 6?2}l2e_?)QD?¾Bl?nĿ?@D9z?u5ۿ?$4?*A?%.3D_bB ?'G?,¾!?UAXܿ,o6M྄S뿒z<m?O*q6̽wh>!T6"Jjшd\F?+jD6Ͽx 9>'BUA?ICZɾ5u?"*鈿<|?4p # z ?&v?|1?<?JE$`~ ?:a1옾ſV1.-(?G򼎊P? #O? @Q&?,qd^UѿywW.BT|@JN?E0?j].?柲V?@j|cSz9?`lg?De?j-??uF9ʾW,Ϻd?fI*?8jG?FR ?UB?[4D> 2]fj?S9?FO29?4?S6?FpITȾ?9Vb2?I ?,Y?.`j$?H>?;w%?r1|?G?J.?DI^?B?Ҿ3 ^bhv?Tt޿t?F\*?;?NS轿? hl?AcO?~H? ؿ^ľw/: J?P ?Z?Mҿ@4Gn羝쾏.z?Y?料?fݷ??u?BϤ`?P=?G?B(?I[ ?cؾX ?PN?\?e?$?<_ؿ2Ҿ4a?>~Ww?IR{tJ侫?a0?/ ?6|:d~?☊>?=!]6?cFS ?{?7~`?gƿ??P?>EA@7?w7a?νLL\g6c">??7Z`?J?f+?,(Ͼش?Q-~!t?ժ? {>.>ߩd?H]x #Qſ量>ކ?"- ?('@?T?:_*v?_qm5^{b?M?O쓾vݠٿ(>'AοKgQȋR@*/+(?[ ?8k: .?BЪ?O`?4C?+,?>?eD6B?= ?#ZvY&?8gI?T??ZO?<?u֬HA?FWO?o\?JC>n?7n"_?Iv?:1?Y?#?A"|]l9i?h?FA$@>n.?_*?F쓽mo듾5vH}O?~#?8"?HbQN?VL\?McNhX a!JV%.?c!tw?S?<:?^fE־M`?r C4v̾Bx?L(M?-H俥BB?c:[2%&?AРI?zq/?FcU?+8(?,)GX?J ??AԾخѽwȜg CY+4H?6?=t?NC ,$5?Pf2>$?R2?sM>8ڸE?`qJ?YTH7Gf](v?B$Asu?>>"Z?hp?ym@?o? pg ?p8Pt?D\bqt9?E?Y?O߿b?P9?X%?=`)ܾhF!׾W^`9nݾ|?9M4w?@%?E ;?<48Z?[:A?;@C?Hw9V?X?Nn?;߾EdzF??X?>h?̿?J,J%?Q< T t?QS?M?EEBȿ&?A;?8`z?[>a[?( |(6$?4{n ?O?"ۙ?Y;&i}?!W\?Z?I" ?%*w3Eѽ;\z!ss].C¾E`߄ 8j?4Zt㘾)Q?D[?X*1ʶ+H?[5PR?*+"޾m3rV?*~hvkd1X_Pl?Xm:y>7y?QD|Vľ^:B?[OHԾ?][?sthmS}YY;6g7\]0؊>J?gK?ZҺ?Q8?IO+?Ѿ/ ׀?.lF|HǼx?^^qt)?:d羁s<$`l>aL?7{Q̘?4?ZN?K꿜Lv5?A3yJa?Y_f?[.SAzツ ?F?U}?I?w?5b꾯_h`1s?B?,(???&~0?(X?'V˾ ?+@Mp]?G2?^?k iD?Ǿ6?J?0?9]N1?r{zaNR2M%w[?*>?Dn?ex)m;w `o\?H?U\v࿎ ,coO?n?p"z?=?T ?T#5/в޾.)G`:H?Lu/^?q(R?\R?n?I_?NB`?@:?a?Ye ?;?/OX'G?<4?OILY{?K?Ild:?IA?Q[$?K-l?|C?5iֿKۮbϐ?dJx@ʿ~F?*(i}?0t3IV?=M{࿝˾5Cȿ?@X ?:Iwgٽx?O?s?S?<ڽ񢿥f??7???FX?V]?ty?6a&ξn90 "ɾNCZN?'s̾TnK?澪"?XҐ6?97?Sƿ;io?RJ?־w |?6g3? v? k?CC3R?M?3l̿D?B~dn޿O.lh"ʛ?V?P>fBK&!,7,?BMz:?aW?8=Y:=(T "¥V/c?\1jW?@x0?۹?-ֲ?7R&7?FV7v{5,4?Q6?E"9\?XE?5鿘E??+z>^s?+?e)ia9> C.?G?bF^UHt*ӽ?GU..F?iٽ1,~?/*ڣ?AR ?y4?:]3?A?Qy?^%?b-ۉ\bl3p1?Yio(u?N?tL?a&T?Aq??Cv?6`?I?,Z|0?'Bϼݝ??6!@O?Tn? ?:ȿ~ T;?:Y?,YhYݡ?+Q"M?H|?HF8?nJ^8??H~K?H~?,a!?`6?7?OyB r9en?9޾"$9?蒿>=?S-k?Y(AB@:ѽƚؿF?H氾cȯ?]S`7?9RB0Tyw)E#??Ex~?@?ȾԽCϸ?-?D?Q&?8Y\KF?+ ?'dRwzYjܿ,wXXμI࿚vCYݼ?a?;AoQ(?7º?<|?deܾ2Ҿو?/D?9@?O?6?D'@?GV8?Cu?%Ռ?Er??~4?]"ƾҾI = ?>r?kIBcDvAmgR? ?Ad?R?:n:?U?T3LqE|s)x?UR`>?1^?hSs?;9'?6I m?\n>f?T?ýL^?գPAԇA!/?//?]Y@BH?:ԁ??e袾o?+RsFGmU?<4!Uvw)q1k 4?6bnr̙?\?8W?\v ?0Ps?':*ʾ$?4,?ND?[Z6J?`þ#g?0D?Wl?m?(?i?Y þ`O?=9b?&TS$??.?H?-4n?ac?L|?)?R T?q?9xDGm؍V?OO?%|?LᴿpL8kޠREC?!н?J@dA@>Q?4?!Cњ۽5fd?*tu@K?OQ?B;?NVݾb ?Yi?@ֽkվ9?4w.J@?B;o$쿘g??:?[ſmPg?:?GϾ`^ȿ#?: -Hvȃƾ-h?G?G"ʾA uuw̥0&ܿښ? q?S?H߂?Bʼn̐VXj5c6?Lľ- sŐ%(١?#t?5?9Sެ???}`v)2n?dr!8ƾ&b?K@>2?6t(~U?e?58h݌?4B*J׾g=D?!AJy0xf{ ț!=?#?mw?16?j?;^?^ v??~?./?2tjA?04/rg6m?%↽dXz?J1AI־ۋo,"2?We\nRyW?U'6?@-ZR :%ξ.#"?üʭ?*&8?O?KrV>X:K>ľF>pdz2/i|jvmV"?GkL>??O.?0e?Kv=_$?N?=$&?0ÓB?L4 ޶{\ffBD?[[?I?`2@4XUqw?w2PyP?3H@&??W?Ffɿֶ?A$?0?6P=4@?Ͼ?H$?SȐ?,A}6D?%1D?5/?bJ?ܾ{9ڿ]>B@?|ľɷϿHa?FоĆ+'\V4&'_/=?,:ȿbAR?;~?-?1 ]P?$yBz2Bd??7?8zW_Q?R>?(Ѽ"?D?@?r?KUȾ!^?E_,1?@{l?մ`Nl?h?ɸ?/`,X8PѾzДͿ ?!h W(#\?I0ᾗ9L?%6i?69k5;r@W@?m``-pvtB,L?DRԾI?Qɳ?:ܾՆw?꺾?1"?B~  d?9ΊA??=|??JX31~?EΜF???0hW?0*?$(LOV>,?B?ٿ??. ?CǿO?:Pxҭn?SF?2›9o?(h?Trrw(ز}?2t)lc?0 ?? ?B&?Th?К?ρBk>? ?+f|sb˾??]?Q ..?A??ev?6n?xFcӿCqᾀhl~?1Y?6w?XLx?"?_?()0?M?9Ll?(hpML4tH ,T?[n?TjAY;j?G?U??a?Y Ui'Am?P/#4?@~?-۾澙j?;2h???Hˊy?aw?Zp f?(?\?F07&QYr@???Ssӽ-P`I?V%;?SGO?:BDd}>owj%?MؾUR߾&;'??_̾WÉ?Vh?gL?76>Gؾ?ޤqi?L`?R\k?Lh{?E<}e-?k?2N?}4߾?I?3|oZݽ?J?~4?0? 7?O Ծ^2?KFEm?Sr?]5?F}?PA?IA2$>~x?.5?brf?侃qdRz ?):ƾZ?IŒC:ii?Ct}dV",W?F掾?^:C?b?FBK>?gҾj?퟼?2?8hA8AK?Č??s?1FH?0 v꿥׿?FX9+?P1?'?)?QW ,?'B?Ev^?6'q?/?֨?PmO?5?'Us?b?C쾅7'cǾL?IF ~?/a8?^Z?:haNC?;V꾺?a|X?QJ? ?.|?fU?7PL?mW"zsV/[,D!?dv?J?\y6?A'5Hg?uEp T?m$?:?N[?8%?Z?Vc?C7*?3ܾaP3?SP?@E`#%krf8Z>yt?S5-L?R=Q$3Kk?=+>Hž?/yT?ۿ0J?S?Y?>X?+G_?J?YhBx>>&??I?CKD+?E?=ht=C[?)"6%ؾW{?(d松#'Nt~?H o\0?3\ξ~ !??dB6C?z@8?Q7?Gsv?C5U e?/y?NK?D5?6??H?V&8f[vW^.^?0?3-G!-98(-?BƾS?d>C?/?x?#? FGxV%x?$?bYw?R?h\?7?)ZN?H?U ?S~Mn?;߾W Kn?D ̾?,ھ`?Hؾ<ž)op:NtQc^i ?:?3d?/辿 weD*<<@?I?TԆ$t?Rq^|f?;Z?Jh4Ž x?2>#X?7?Es??[:ĸOl?Yh?[?Q?W&?@EҾɁ?dn?1v?L^8vI?u̿!?72ο?bYTOdN?SPG+?:Y?(նC|[QN?pM? ~yX?$Vu?atD?!?VK,hF{ Ǽ??NQRPKnv6b?M73?>?SS X<>ڿ[$49??)TƋL?THoN۾@|?Y?~̾&v?Kjx @oM>FܾSL?6D\]SGFogJ?>1*?h ?1TϿQG $?4V툾w.?i??I%6F?,?I?/ߘ~0v-I?>%G.?5N??,0N?7!? *?9cx ?'d?G`KND-%ȩ`eM?8OԿ(!UO?*l??T?:t˿,~׿`x6'?ARn3JUN?g_F?, ???-8?<-?'hܖ?@?BP?*W{?BA?jm ?f u?k(hZ\`ڏ=%% ?O  ?DiiFw?32R?5nھuc?Rep.\u?S '?5u?nu?g8a4־h?C/\i3z?81վTܽ&t A ?3?- ?<+?)?O`$߿!W ?xʾk:??7.?9 O"񪾕-Ծ ?5^z?Bo7vx?Tn?X?j??۾_?3>rgd?P8?Hz?4??Z2?A:¾0lD3"?7!?O tc?¿)?;!.U4z?l42,do$ٰ?KԾ:E?3$qʾ8xE?!?2=?]9 5#s?ZJZܽ@S?0@~?6`?ῒ%?.NƾKn?B#?JnN?\͞#ӄ?1?50Vðv ?N(fL?ཚ6?)i?Ra?!ͤ!ξW`?/ ?*?)9;O?Ehѽ*?=e4"?9/?^?E.0?oD?%ž6.?I?[N%?e?[%:?-% ?H =?9Lw?EQ?m(-꾁Ե/?q,#?oh6?ox?d?<?dР?^?3Ӿj'H?Q@sf?6h?[nRȾ6?3H ?Zݿ?# zs?6/%A?,uሂ?K&R}M?9 jF进`u?aԿ?D]S¾*;n6;н"?WB?T ktǚ}8 ;Ǡ??≴ʏ&ZDmS |8?p?Mp?ƽཷ'O{^?2?D!d?G?\?H?L?h?Q:a?="?BB?b?XZu?,5g?Aͨ?' ?%`{4ʦ俚!/?2?ܧeȋ?$񙾍?3f㿓<6.?-ksk?22nZIJ?:?4'Sy(?5(E ?]?D,񊾛:?D}x?mM"R? ?Vm?ޟ[y??͘-L?dK Z8,?IH|-L?Z 2PtsZm迍#= 鿗l`I?c?=6y̾Xz?Z9zɾ:ᅪص?dt?ciq?[?c5?8p?5?߰@NB.6)]?"?98?c#???R?]$?P?<(?QX?1JH?EX!Nb?J$?1T?M?AjB$,aorɜ+i?8']?9| A?J,]T(ݘ⿎=e?Vdlj:?<;aM>?޾U A)&-?G_xf?[q1?Qܡ?B.%c?>̱Ie? -?5ラ[>?b9OJ]X ?!?5O?S_O?@?Jžf庾>?)>2?=d?;\Ao?I&@?$-}$?2G?GG?$RqxH?)4?62&-%1?Ih~kU?fnn>b?4"?E`45Wn?R!E8?+?A;?Ͼ?`Vpp{.h?T?V<0.P&|fDvS?MT3\S?L⿂ k,E4?=J?Mb?Nӽ_Ҿk ?Q&w[̮hEa q?ei?7?MH?R?Jn ۾(2?cN?>z $?,෾IicERB?bmF1?D%?J-+?ufC?gey?3LDF9!?(?Aˢd.x̬:l!?0@ѡ?"yW?]8(M ?E?"2?MCz,1c?AL?ID~?Bqx?Bz?/y a@>߿Rs?,󢾑(?9U>c̾Q4?>s ?O)H#?S{y8h+h?)pɨL??7uU%׿?lV?6J?Rn?c^bȾ:Mi?=&ݖ¾ ]X &?2⿚Z0@r?>ߞ?Q!?3Y?Zw:?+0?H _'?Suؾr u?j?BBWzr(Z?7l?oz$:bDDO*y?b?l c?]?E,?B_]?<4?\2\z,2оҿ48h?,F?LH?U A?744)Vx,x??Ǜ5b&Yj !Oe?G?G׿I)+?]B?:?A>UL?JmO^?JZ?_[Mؿ߽`?% 3E?;0?>R&Vؾp⿛uw?(Ԡ?\~n?M޽( [_ þFOԒOJQ@ U?,'  >xP=g8ۥ?<!k rW3оF?9&?Av?(GN?ް?mɾj6d6nMnts?kA3?& @o?oѾ1^.l?Qݍ?+<8SؽR? +?n9?R%"?S퐾I>D$"־"?}#>:?A7k?),~俠hsX?%??ƾo՝?/vNv]0@t?'??,R}5-?j?6?4(?Nr?E=k}?ZF?(?>ᾁ8?9z?.0J'?81N?C!? @H?jR?)Z1"?%.v?5L&?MT߾r?`2Ⱦ12cC679Y;a>l?S0_?"?\?K4D?j8?H*툽{d2xv?ؾG?R/?ZTP?+$붾2M?29,ž?0ZCǾ! ΍p~$>4lVyt?<-=?!TR?8?V_o?W?S1?)?n??xQĽkrY8ҿw?=1Oj?]j[4俇Ԓ7e?0{?fE?[ȩ|t[Z h ? `^"ga?V ~$\۽B?LE?1X(v{?MX?X"d$=Lp? u&?Mv?7.?R?9$ rDBN?H3?|XA?1,~T?;j\̡?)οzl?JO<ľG濓>?VXy=BB?:?9jÐ?*?"]`J5?@A8?Dh쾶ɾ{ᅴ)?TS|nj?/ ?2վK?c?.lJ?(Dľh?V?K<?-L?Y?0r?51$H?c?F ?: 3?/ ^쿓{?I̿N:?8侀jWgr2e {?x^)f2Wn?Hb?G^\0=?9z/a#jxA? nzʾdW?N?I?Zb?ZNdi_].?O;|}.?OL)?: Y?]-8$?+x?Nd?6c`Ѿ.s?Ql?#0L-9IX0ډ6,?(ez/?>?"]&?W???T)s->?'y?DEվ)睾4r?9??6?g?(rN삾裾sq.?o0d?F,Y%n~G4W,C?ZԾq$?D'ZItZhULNt|z?Ѿ:@?Ge?E?7FB?,ͽ5b?XM!?J,{ ѝ'fֆPt;z??L.0L?Bn)?NA>?BD?%"??8̰?dʿZf> ؾH^c=F?Fv?9å?ѿ+(z$_rNC@C?EN?)??#ο?^?nP?A "`q$?Ca?$`M4KUSf?7[4f,쥾޻|ڸ?B`.1?Կ;(=rG.?nf̽tl󚜾OYj?cffsLdǣ+s%j?4r@hW3M ?_y$̿?YȽ???FC5G2Pސ8G 6?}?&C%^elp6=Ꞿx>x\N꾠?Be?D}?/c .忝?/U>_8>ZrʾsVȿEbxk?^ͿCrJj`?S<0?澱 ?9hEo?0 k?9z?*J|?!hN?7`6ڿ?<l@D53?X)?Vz?U?H{pG?A׊;㿭a?>?E?>,?D?U ?YX?9?)㰾!?*ҳ2J+?E?%?GϬ&u@6?2L$?>|?&?!` )-?I1t?]8c?њ?[~Y?&{E?v?/ڼ?{?YS>?aSQ?9/?3JtfV?E^従^ξ`?IkY4?S"܎^ LTp<0NM¾7s?%X?4 ?Us?Z޾(@?o??GZ?K`4{O־ 5®h1?2Խl?JkB0?i,Z?#?6ҹ?Yf@?!j?(; ?I*?9>?*_q?4e?CQd&ƾu??@| ?6(Ye?^.?9޾?,fN?7=?.?*g?Eqӿ[ȿb?Cھ+? @1?V@?AG&?0i?Hi^?8TW?UH?j+?9?c?;?* ʾe UqB̾ub?8ھ?)F&:E?_? 6?A?6Z]Ř?;|?Odn@w?,ҽ?w?Ap%% #?.&K?ZH?6?@AտTyg {zV?+J6都RvVM~&j?@k7?Q?X?n,Z4?V1S}9N?_`R?@kx^hʺ?cp?Qb?<Կ20)@To?7(<𾌏@?`̌?=x^S.1.?m쿾9Rú?+ W^_at[Ľ>CI?6W?Ǿe C?M?G7>?.^ nfvHW?EP(??CX׎N?z?7f x?N??G?%7* 7]?B*fa?>?5w⾐e?NP'?fi,K{?,'4?Ȋ𝿕ٰ?k?9He?4m?]?H#g쾄¾p4@?G?8`?2?=c*>o?L(¾L?Pz??XN8ֿB?9 Z?G%,Cw?,uZ'i?$iܾߤwLy?42?B5>3 <pJi?Yf?4Ͼ poVN?OfZYxJZ}yD?,t?2jr?DN?'p4?'*?NjUF?98?n|ľ0Q?ia\HϋS?_p;Uπ^A=|už@{?S;>оٸ?Zz }?8FZV"?WJ҇fþBu?Cxv?E?h]?Lt(?Ȃi?|OD?D<?Kx'yRCdZQk?󗲾=?\ ?9 O[?Q^??GavM2?$j>O?Z,vPʾ10?L`پԾCn?vϾIΝ?2x?Dp?E6Nwaо9 ?+8?Z:n3T?*V?Asv֡?){?'俿`B??B̬>*??N=˾Xо?.Dq?$7p?K5i?K?'4_L*V?N.;{?@`;a˾R>?6?A?@_3 ¼9W$?#q%οSi?25B?lFҿ)?@?J_H??u|?0X?&ӆU(u?UXU@ؿ?O3*>(?Im?X ?IBvǐ>\%+Gt~B]?/r?;}l?H⾇'?/[ V\?[?DV?"E?E鿲?FeZ`r}??zA?S? G? +.?L'^?ER%š$[Nž.v?n?1?[R8`m?iq?1y.u\IH?' ?ht?6n{ :`${-2?D&k2\b2~d?10|?\lZ?iB?+D0?FVy?EbWm*d?ET⼾q=?Q?0d?In9hg1 Vc_?8Oʿi>ο#?%"hHOA?e;(A>3`?+?;q?ذO|\f/&x?J6P?M#^(?6{?#?BKfh>ʱ7=P#8"ʽi0?gm?PP*?`MR?4?Y.y?!dþт?2.ؾEm6=?D@_?G?\ϞlslJTi?H^?!7$:V`o:5澳'?#g?`pT+;B?8?Nk,V2?㾢?3܏$?Ba?7 ^J7\!?PdW#h_I;Ix ?.~?+d*?>fo$`fv?hg5E?'h?'TrC?%/q%(#y ?>+?93̾Xo}\1;?^?~?G ?RR-I2@p?\?BM2?+ 3 ۿԾ<?+E?SyL?L4@?F̿¾|,?oH?9?۸?YU?+ӾoV ? .8?'?K?GT?g5(?$?E5B.?w:Z?>&7uL<)??DDnk?q|?6 ?4vQY?&?&V?9?:3|\? U?H}z5V;濕FD??FH?fu?I VV+ b?b?Z?alNsQg?Io>J"?P7?/??k+Y?VMпX'Me ?F?vнl?Bоfs?\fF)n2%?5?-7P?/\5?.wEER?9V_) }?I/??$\ԾV)i?I ȾBrxܻ?+޾ta?ބk ?,?@?A1f?*?I.??G{R4庾xX7:?L8;.c\?Lj#?mٽ8i?@?Jҹ?+`1s=?Ѿ5 I=5s|FO?AG?jޱy{@Q?!X?.(F^?H~?(?%?S,?x;||Jn?3I?#;6̒?[ _yU?8P?Ujg˽?E^$.zEh?Sܾt#OAƴyyI?[⿑nywtNog$⾮Q?x7?`r?C~c?FTl?V%?O?$^^?84mg???{kq^Yj?R? (?@ü=1[6TR4?[6 xоMLW ?>|T?;am~B?OdV@?--?D(?LQ §Zb,?.ƿ?$Kd?$ؾpP0C??[?=.!?^d#?AC?,骾fD_D?۬AXW?S?"? `[?+F?G'?8~? ?Civt?Neþl?AԾ>?;Tok羈?7|?1æ Ӿ)TW¾Gd?C y= ?2>?,?=T]?V&¿?f`?^?B+Hl4`4?!T??C b?=l?6{᳾O?)H?60]0?H>?:?:ѿ*?܅ǾYpM.@?#}X? ?;f?<3u1?[w?5&:?>?+W?щR?ƿ-L?AoX?ߓ?:àsRBc?uxf= [?ً͢x?,Y󲽀4mIyfŽ4? ?aQ?Y?jy?f0 wy=[?J|M@>˼6Y?]oZ?T).?h7 LG?Q &K?F?|I𿇄\E?voI!;RPxT[?Dֿ[?WЗ?c?, (JF ?9y?J?DuB ZS?Hy?LXc#?EL$;˾T?VQBQ/?>n~?Iʳ?Gx*?A0?Q%B|ҿx;s?˩eB,F}?7̿?_J?X?E;S8/?8O[,~?G?&k)Pz)X|ncإ?i`?#DЪiB??;1?;'m?K6?Kf?'?Lomt?,?Xt?Ta.5UP?+?V?:?:ܾJ?P|?R&6i?>7~Tn\?|:<8?@s8x)mBӾy?@0Nt譆?Cc@qľg8&mu+Fˀ?N螾G %0?a(]?y=꿝,&?J2Pcz?@fN=\J.{?`+&ξ|'ArRtF >Y?E־?8$?B:?,?6/Fl?[d?eU? 6NZ:gd?S&?I?P?DCo? P?K:C>3&x?GG?{??&t濙Wm?@U?@\2Kf?aD?.r(v?N?jҾkmξ2[~?No?4?4CQA)e?\4i?1{ |?K[I?Xy1 b?,k?%R?Tlھ?;?8f@?T%L?ɲ$n?6?F,9H?f ?8Fx8oڲe?A! )K_OWF@t?kS?+ƾƾvK:?>4 ?ZKO>E?9n?@n`?5J,?C>?W?5x?3cfn 69+>b>.T*@ +:$>?XԾD?+15[F?꾤 N7@?O?L?C8Ou?2ò fEGHT޿տC?aDUp??/"V?L?*PL?)CaCz?B!Bƌ+ȾQ=|د?Ah?&D f?gAt?FKv? ?E??K8vf>2H_2%p27?3?fdT?>?Zs??M?V>?ݨ?Ow?0;[(}?w?$?Oj?8i)2:-?̴^C\?C'rv?E2!?4۪?(g?0<ƾC5?(n8}??T?n@?%[gBXLڙ?BE ?$?#Q3?-?S?9P@f?> =?$Z?,9VΪ>0?&h?2-B?k <&X?'tKk?XWM4?M?B>??4꿖?I#|-|?/y^_Bh Cea?T|?Rr?P`?Z?ʾ/>My]?E\d?KM;X?cоl?JN?FgQ?HFchuK?@޾N?*?F}ѾG?4:$ ?KbJ? ??.?q; n??'6x?-@S"0? 4eT?,?/@4.d?݊$?Ei?1?16CCs@39*?2{*?7Q?N| #?ws<2h?t[V??ۆ?a"9`?_FVz?"|?7?:?W;?:*5@?).2?gB?/P`y?>@; -?W?Qo-W?nҾ0꿑?Un?N&?7s??IĐwҿҳA(>?I$оv9>ړIff?D?,%j,?"(?J9ʾqi@?B ?YFwV~쾯?,οՐG/L?T1q& ?J?)O?)P|~?/ ??)?NJ?G 6ھUlZvʾм?7cKXX@?^j?Wx??:?. ?!ɂ?+ԾZ? YR龏(?!e4?1_n?-@9B?!? 츾Ӿ),??oྈ?7Z?8Eu(za}?![?T¾? p$?0Rq>il??G)??wG?7Ⱥ?;u?!f?L|^ ?#Aa??R>㿣b?'n?H?>5?^]?Z꘿x?fH ?eپqQ5?Fgվ?A0)MDܿ?hY?S^#E!t?i?cʞ- Uk?,6?jbt><ڬ"ƿCI ?8/L"eJt;?mK?Q?b?1b?T ?-V?MT?:CW{K?-^I?1RF?;j?,?T!n[?0"??!9?9c?-8?.$?M,\iGA@>I@M @C?0F?RPX{!."-b?,%?U ?K?Sj?r?w pg?"ȾvF?&N{n?F$d?P?:H??:?!i?!?P;g?&I[?XS@[K'R6Oɥ[?0yDN>0?="B01?_?2kľe m%?odM?;n{Z8n?/:?M?>?B=?/4?!2&?/???H[J&9.?:^?YI;>Їd?>?Fɾ`DоM!;zpп?.D7ĺ?YCu7?\`cξT_H?ݹ8?tw?C~4(??T?Tl- ٿL9?Z{n|s;#+?}t9?YX e?NDν򿉻l%N? q9y?Pt&_?=?u?D?"->D? G.?d 2qI?R 4?V?U뾊/6`ľTK?Wbn?;nй^O?bd^鿙?8(?JF?|j%?@6$[!?5T5[?9k%ILM>?Jٿ#?!߾UI7I@??:#B7CpA?WEx=?OZ?<⣾egLmV?sݾ#0?[n?:A@?=V)?XOR}?&>uLz?D4?PK}?ru?BҾM??Pn&8?3L昿+2O?I!~?D: ?AX˾K[C?%˾ͦG&A?@V}U?g涿3?fi;?x?S_qI@?{`"?Ul?a?Z;?z^>uaB6?S ?8׽?R,Z?6B?jnwj.?mi7^?B?;ب?@|?/?씈^P?WU?>?NŨ@(~?#ؿ} !?MU?]?b`?Eh?V9g?++Ȝ{??VpB?lGp?b?&|?Y0??l?J? E?:?.?ƾ?:?Jgd?IkB=e?d?B1?9=޿^7о1?7CjW@?<r?:yM?=CNNB2DK B1?$o?FK?9DB?EɾB.S?# /\_?^騿mch Pn-ɻ>UA2?%a?2~?_?c% )?I]??J?O8?1?7?A:zߺ?6l\[B?<?%Ē?GR?f?AI'etC?Vn?Lgʾe@ܿX?WL?9㾊7@?6l ?<|<@;qV?V7?!K%N? ?H*%?,8?,wWlD?7$mý~?ڛt0???Xо#n}?Xvl ?5ѿ>?`!`,/t?cܽ+X?B ?W.?;R?I|?Vk??J?ODp? [~s?q7D?.>?F(?C,?K?9 l?O7b󿍢X Կgþ.JD?G?bRp?eW?.?N龘ȿz ?~?31?| ?<<2N?Ik?9FzMJ孾#?fjD?2޿u?L9SJ8?@?N>ƾ0?B⾖k<`.++6??(97?k"?'7Ծ@?Q0ҿ?.\Z@p?g?&? :k?c ?͓a"h?'JҾIEW&?)L#ž8$޾C)fr,辬 ғ"?FH"4?)|$?bi?] KN>?"q?ZA?Vp?Uz?,Cx?1??&ξ?: 1?)Yg뿚 ?+)?*5?-˾A?u?o?(?߾?ٯ?J3?"?ك˔>)?Z?V?P 6i ?7~?8)?G^?T(4`Z?MtBq>?翊??fރ?UfξF`?+ؾ?f1k?)|?L ᅳO??2p?"'(=r?2~?.?9?LZ?=Qν˺V#a?H/?5+L8?A5?5fiJb6>]=rp?:9?5` V"r_ .?D&qPT ?2־ տK:?If?:?%.?#Zc?C? T1}>@X?IXi?f/>?k?>?&H?0?D}V`?@??%0?/?=?>G-@?t?C*0#?WW?7?2p?^^> oD?90Zvƣ?.L?@S#*?D2R?<ý? Bb?I\q8B>3:X???A??5%@U9?Va|Ѣ"?Fd󿎺ӿt?2 ?"?/e?O?h?R? f6@q?n.9?#̾,Pg]3QEb*` ?[??Q? sX?*Ĝ?$H^H?bq>߅r?%qvҷ [0m??XL<>rp?_k}JAh{?/7?=?h&8㒿@?B?'z?F?V?AHI???Q?2?d?_d?1Wڿ8`?<@ Ma?.!tu{PkӨ?T jPϾ?F9xѽξ?k?J蕾d]|5,e>єV?+rjvB?:/2ᾨQ?4]?V?5v? j?耂?96?B@]H(Q?0dB?O쿈?wb< J.0? x Oy.β$(HJ?b?C?9c6?GS?k .u?WT*gNb"?O/x?g,?+'?8}?._?릾?Tx?M5j?Rbu?;;㾐? Pܳ,9"?(}?>?>پU?B?|?~*Ѿeпx??2 `3?? V?_9|=Mew*y1Pr?2?i]?嚴? ?2?,G2վI b\UɶtPβ?(HЮu?1VU˿}x?tk(U=Pd߾˾]?l?B L?8s?Aӿ?n?* ->?r=`?H}E?Vx?U??axT?bF濄?!Fr?fRYn}?BϿ8QtO{[|^.{?սr?V?D44Rֿ`q״?}S,D,J,R ?!:?7!2+y?^?OpLݾٹ?Axf?ZG2???Vv?@H/?nlGn*p?H??@'?Hv?^]L ?5追z?T?E?7c依=?.8}sƽ4,??9t\?fuma??!:c?<[+s?8)ZYÀ?;hh??Y?CH*?-?5̦b?)2ĩ?:RM5ek{$lپ0˾uC?7?3_ѾZ?N@y?19%?? b?1U?Q@?>L,?8(xz;?-ǘq?Pu'?4r?eמ<}~俞K?T:?5?=Q?%'?bp?`4+)?ިp12x𾍭T:?6 6?e&RE?6c$y?/3?N8^(?&٤?2?O񽺔?U?SнT?KsϾ hC}y?5?Q{P-iп=UG?KH?߃?P.?]9?Lچ?}?S10?UB?Tb` ?EP@Tl"?P>kϾtq >?'6?.b?/h`$,X ?gJG?6^?T ?uyt?i? M?Bev??zP?=$O^aa|sᅯ:ؾap8J? Sʾq?;_^4?*Q5[?2Nl?0 ľrt?݈?(?D@)?"쿙E d?ئ\SBP?7о;H4 ?eа?.heϮhܹ?OΆ?3 ?=I򾒝$E?9*?V?as?W?B1?+l?X|Sʾu?T!dPP ?5?t?b?VQH%CU( N'JC>Pi^9 ߸?S?4tgؿܾyT҆?9ĺ?;B?16?꾆澚8ؾDe??i>>?;]۾'?4۷?-R ξBm|H?>ԾW.?+a?-wѾNB?B`?aTlྠ?8O Fx?%2?68:^yR?1~?%^ ?*?=e?82q濃'N4^'n?HVlLP?͖= )?XwMH4TXtqҿ?Ozrv`ۘ?> ?)|^m?Ҭ5?Lv? &>?d ?@R?J.??O/?,bپ1?DQ~?;G?"TExEt,uTup\'L"1?)R?7?0A[?A+?Q*?85W?1?@C?Ů?3+?Iɼ) hWȉ-eȿN⾝xÁ?:?Fn??^?>??Eľ?#྄PοU? ?4R0?J?*?{?S׾h0Ծ]26?ؿ'Ҿ?1qӊ?B Vuo>ܘоi/ D?F`r?޹?4]?<~NB(?T*_?A?P?^?r8{?< ?Fb@ ?)"?.iʾSܽ&꿦WGY?B'?w?//?:ڙ?X?7ƾyij?\?7;Ręվib+$^?: KP?@m H?6{>Ծ?חy?A%~>Ӿ`?F(?5cF@뉾1?}ȿ=K>?Ei?aNTeʾ 8 ?HkbE?Zz?<υ?0?/6hlݾ:?JnE?,+?D ?P=?FH ?<(' ?d~ǿaֽ%V??rc?9|B࿈*f?VAD \?7"?5(4?4j;?6$p$%ɋ>)Vkm?H(O9¾3/$8Gǁ?5!%P]1}:.?N?$?8 h?o俎?D?8tz5!?)?L6?'?R?=)\?E̽?Mܸv}dS(Tqbfd⿗F?s?Ev ?XW? ? wP?(1q?!ӾsQ?!Lh? ?|?Gce?h߷y!w?}7-놾x?%5?bs.BO?!:&`?&M>ڌ?4氿V-??z^K?72+Y2w?*y3V'v?5 h?~ ?5Iho?5HD?c*K?&? .2?5񺾕x2?=nUT?"3?)?v&+?DL\P%3G*?5쾒?;?KҲy?*ԾVÕR?=?ߴ?Y?.?C?+?9 ?r?9?$FލlB?䝿sZ?(ÿ>dk?B ?14ɾ!i&}&ϾoFzD?G?*~T7 )v?tuͿ)?"lo?V?Ԇn?!?M q?\Mq:>RR6n,?/>z7  ?q??D?Xx?Օi?7Ky?J3߅!hFVֿ{?Ff?@{?A1?K2\;}u?TP?D?l?'Jzɾ]>L?HͿ*憾 :?Tɹ?/ʿ?9z?3ȿ@v6fp@?s)1? =??GI?UuK1?. ?c<ʿS?E#x?>/Cؾmf?4g?-|@1*D? >o?,?bA6?OAľ[p?4-:?Ab?; I?z(?@ ?h?q̱T?N\'?89$wW-?4?#Xپr ?%7w??Q#R?[j?/n?1l?,"^ _ؽA?>J u8@.?i^ɾ?D>žs]⾎s?3z6ȾE?*>t>E܆!0Fz %ԾYt?#\Ⱦ>(K?2x?:O|l]hVXnI?1.?7I?43+?'Ѐ?00^πpJ?&&>van?!!?Vh?[?7h k%>TQ?63>椾w(?B.d@??Ծw??h9^ 鿋%Pc4Sq?Iql.˿%J?G?^i[?a(?3]̿(Q y, ?,@? F?V?BK ýP?OS?P8?>")us־Uzfi?@?>[M8v{9?$??1,+ F :?7@?ZLPV~?&?Ke?6J?:w¾%?7G`ھ ^s??;y?9*̄5ʾ3e?m:ިz?"Ø?M?Ih5z?:e? >֮鿞g?5R?ߧXAbA,tA1@?>?7A.?(?9 o?>{? 2<0&?82K>? ?gMT.^Ie?`K־1/?YUµ&~}Zz??7鏿aVԾucǘ ;ԾTtLJ#0?,vBj?9JdY#߾t ?m"?H%S?# mv?,?D1?D?W(~zld:?! =o?Y 8?aDZHmy?+?U՚??3=?@?"D?>?VܴM@kx?b?5Jy?g?3d?uH;vlZ6maE?S?Oz,"?If$1 dD,?7cKW錾|H???w9?;lb鈿?E@d ??)J͇缾˸>??[=|+?Uh (,l>N?vؙ?@?Q&HT?3]<?6YH??8?${?F.ͿBB4BBA9@? K?.ÁYPWR?7*Ǿ%Pa?3Ǿv?.C(Q?2?2?+.?(HE{9ne쾭f ?E4?3?Y?L?0/ա?>_>Ɉ3T?GU? i/rlr¾gs6þKuY?F?u??Ot?+4?:ph?ܾQپK?ސ2?4?=?,&FQ?G5jf{T,H ?:??8V? ?WF"=՘?<ƽR?TiQLhth;Ŀuپ௿?Xe?0?B4hc!8P?W~xKھh|+Nŵ_[ \^?m?EN?%˾&/?Ib?!b?>?ab8?X)?I0?8B+?-y$?|+?;*v@vq?@XԾݢ?3>My?.t?<)?0x[?"75?0^([ǿzr?Ծ_x*@?2^ht?v?=F&K 7?YK >uL?:=j?!cV!?W?g.b;ھEpA AO8>V?C?*$媾X i?9?; LO򿐆?KBJŜ@?f?>tFhgt?3?J?(AV?85?+|JB ÊBۥBwB6n@N@?q?%"~>_ƿG? N?C?69Ҿe?E2?M^]?!侈?2ggzf0q'Ⱦ'=l?Fmpz?s?;r?0ؾ6?,ɿX?.|Zd?䷿U?"i?tЬBM<}^?BV?JبWy ?ILN=h/6]ھw?%!>( 0??8:$>D?3τR?o>߾s*?+Z?*/?[?vh?>R2&!dD?-*;Ⱦ 'k{4?c]D n%?1Պ?Ec⾎ P|<Ї\fr?|xYí*< ?7{?Q??jS4ؿF$־M-?:='s3@9R_?Kz?j?' 꿶?2ã?9"'+n͌*{?t? 7aMLLaX?$j?Hྯ[?(,ec?6 ?>~}~R?濭`/?Yp?)?xrB|?-y?-ؿ꿗p?UQ w{?FIlоYZAD>4? @???:T?!-`?$jN؁>?Î?c־ ?{wྊz?-=?E;^?2d z2~S;4kľ%>[vMt ?VYx8%?th?qcV?\ ];K?;T?UZ?Aľ)6?վ?1?H ?#s޾F=$?>d?=?I.yl?g? |?W_Ľsn\>N,LSvؽ?[?N$s?MK}?J?M?$?ZxC?F>?^?Or%J?M"?+6?&??JA\V??꿓 ?{ͿG?EĿy?39?/MHM7 v`:+?nX9?=ٝk??=?'¾?3 D?FlmW?*R7Rq?O澢@?^ݿ?7즾տvSV?[1iQ> "Dq6#?>'?I?np? o?FT`r!$ܾ`ϙ?>>Hȿz8 r᜾=f?2?Fܠ?1CR.fWZb>02p?=?1OX?6?E?0?/㩾?<`?)|??bL&>eǿwN?N+?<(M?ؿi?Kez_?I+*>?A +BK?S4?+?DgY~?2Ͼ?=?Y?C͸f?߾sH ݊T?FZ?w?[)tk'@9? ?Df0? l> @*?BONܿ?4?A ?1?=L?&5Y?j'?Ϋ?O?Vk?r7gFF?SW}̾F?Cw7?h?C^?47PKK>?)ʯ?B4往:?@?<{*?V5Sb8'-PῑH?1iuxJ6bV:`"Χ#$?S=?4P(?(Efsmo?ߟ?&.?L@?.? ޏ???]4Z:%g?;N?FPZ=۾2?;?>q@>~Q?H#F?M_*\l?S`xf@?0 ?^PԿy5?N^?EF Uq?Y;a-+?%?;b8ѢqPT?AY?SfX?q?Aÿhp?$?'+ e'B?Pjjé3?QւԾNJf2?AJ9=.8'?.Y4?L?:b?>q?APĿE?Jɾ!??gMѾ6V+?~#]H?T7?;"CDWkn)?Eqqc##7?E遾?C]?,liD?~(?Hǰ%?醾@Q?1?He蟐1?@1h:y?俘Ћq$?䞾x?-¿4jYVR[^X?6 GJk?D ?L޾pD>?#\?O?K*[A?d?)1e@LO?R۾?B?&)⿖ཱྀ?ž?౳p?,d?B h<ynG?CM,xa= ?N?K=Z)ѓ?˾` K?>{ȧ?ce?4zȈwD?&函D?h暾q~?78?acy\^.E8]$?Mj?A0;R 񾿩d꿖?a@B?&9?SLZv2޾r<'? .^bȪ?F,?:O?OP!?3q@?>?C=3$ W<?-o/j?E?L +U߿KwN?;ƾGu?%ʾ???6&Ҿ m`Pv`G޾,? ?m?.?⾂Oy?!?=0o࿤32?U%$?%Ϲ?#̤޾?0?:?+x:§l!R?><??K?S?]?&0;H\%?:r?@0?Pw?2?K??I~?1"Xj?'x6?$Zj?*=?7ܾc]>(?(r?]N6,単i?Wս/\?YO?\+2?(\?C[9ս4yTiԾitJE2 yԺ?/Naܔ?A,?61վ]?QZoZ;#j?4z20Z0?Aܺ?QBTRBBMB B5j@r?1g͆?1g) ?,|?ah?=`Ҿ܈~/:p?Ŷd#Q?]J5^?!??P?@;? $T?-ӿ??<:\?1ON??.1? mD 1pA??"ӰLҐf?&OHI'j?L:!B?*?Lξ?=OcsƞOIy^{gwb>jQ?7h??)rZ%/? ?=*? 92?@p1Z_٭1d|J}@@?Yx?)tȾ>t x߰?3j@?0o]?.?51?$H f??)vNn?R?fj??j U?P?3?+ľhdʾ?Ts?v2^t?o. ?mj$`?iqÎk ?L?HR-)2!H?K_k>[>-:?)dz?Ѥ}?VB?8[Zq2/+Ѿߞ۾^ݿ(潪I6?`?-Z-}@5з??4-qR5=XV]?XX?/]U|qܬ4` c ?"-?/>?%2=! >"A"(ABPA?c5?8RCϾjΰ?3t_ӿÿ$?Yvfs,?/Z1A:`?I-ʾ)/?.)?28ZjY>j?:;?-?,(?#a%ᅯMJ f1?kYRžWD! aIyNN忣 NE`@?"o?D~?+辯@r?%;J8? ?P:?غF e2P?I??blо] Pm?٭?OʾY)>}S澭(?7?ˠbؾcھpVǾ쾚㺿? Xiz?܌?`h˾@;K?ʛ0-砾L_??I?Gо1)?,?BTxO??P?h?3ǓGzZ?WD7PӾ 9B`?ȾA ?c ?D̿?#kyĿVM?MξX&Juiо?.1h?f?C? X?h?>F\G ?V`Ńr?!`7hR*>"_D@Ͼ4x?' V?.3&b255 ݾ?p ƿZ`?*?8׾??(?>Y??5?NT?;hwi߾WIKо|>?H?J3?ѣ?0tN3'?)?; ~!?о(3?P'"?A@H>7t?&??*T˾[ Yls?8'?Vly?'l/Aq??p?'?P,rMT?0Q㿞M?dF?l?rCL?2O!S?c3;?!nu(?H ;y >4D?Hf?a{?M?=L %?'??Z?6?kn?C<_qEӵ?*,?s>qAuy?) A?4?E :B?A{1??ڽ?8W??R$^0Ƚ?P֍ ?Vo-?p?JE׾44?U^%齲섾\ܽ$!?1ˢA?ꌻ9+?0f𾘦\?~H,? [u?TL`Px?M?V?Cm?&?t??/f? L?&,?5Ծ?j?D?9?sH??F2?88?..?0g?A6i=?ٰ𾇩놾.E_J;n~ ?%޾{ܾ Y9N5R(`?mf>y?C/t?X?3d5#Z6@8??Q71?߯@h@-@~?ÿ?'3&? ?I}R?S BBw?啻?7?7D`?AFl?Qy?ھT?272P?;?A]?`:d?8?+9-?A?(?AɁ[_}%?Ix?E$ny _?"⎽0?&?񚿋?7%Ծ5׸? ?Z?Id>?.z >3(𮿛?!+BeerB޾}?!-?@24?blT?<r??^N |r?\!?J1 ͈}?]:q?QA#?9 :u/?=l?/_?;ο~ª?K־<>;{f?mkolOGCiR3)?Mp?Q.?T7axk0翗|?J?Kxy?;V?崗I^R{jQf=<>Y?ҿ^¾?34?3F1ȹ@?p@77P.?.?SE?ICF+Z7kF%? p#㾽,?A?D +쉿6uC)1f86w? ྔ\U$d !? ?' As3^T?,PF)t?@f @jABBBCC1'BB+~?"?Sо@j+B|?7?Ӝ(>̾ܳW(xk?- `?NNHԽՒa?T ?Ynb>R9?N>{,H? @rgʿ?f?ʾ?+-v L9j6-FK ?7Kƿ]??5xۘ?!~E?7?ξ?4Ku?3?!Y^hrg6O?n? HK+?+He(dʽ#Rlt>B#>%{fzKB>սv;J"?.?]L#Z?s?g I>gT?B&ey'edbZؾ⨾aN翈b?`q?]U萾O?ot )8?Xx&s?F^?Q}?')?k#Ϳ6A?R?0@@AnA<@z{?M? Ⱦmվdi辗<+?=?>(v?7ii?&?A$خՆ?2@C?@?B ?E!?=ȰLK MMde?+|N?-p|^?ѫaSf ? H?M?? U>?] ?)?[U?U?ًiB@N?b|B(lX$D>ʊ娦?QdnҾS?(/??8?Ṽ?S?V?p?hHu8?G ?ݰcr$ro2+e̾: ?86D?T_쯾s4!??dAPp?GpOS 1iU?/ ?k `~1+?EȾwEgԿ2Gg쾭gؾHC_61̿R?4?e@|$??>L7E?!?"/?Vu,?)7kޥܿ7EY?k޿ ?9M W_P?KZ6*Hɾogp ^?/sVN?7 ?@jB?|?N ~>|u/jם?cþZPYþ?er?.?5v?낾yEFizv?T &?-??c?*?&.?o ?G=?is?r)hj?99 "?24?Gz|?1N|`,?W?&>7ػT 8?mu?KL?FL6?rN꾾?g82?G߾Xp[0|S#P5ӾR?> ?6Xv <=?m\ 19^|?dHܾ\ PP8?CH7?:о- 8̾N#L?(hgl׾?灾3\! 2kQ?I??Ѷ?-T??SӁ?z?g9Uƾ@"P?1(FM?۠?N]Qۙ?AǍ ⾯ƾu玿M&>f ?/ExEf?3yտ?0KjƋ? >2;g?Ic? ^Nw?H75?5d,kp?,gK?2Bœ w .z ?R?洂? P*?,J ??%/?Nhv? \_?IO?4ib?# p>`?M?3tE2*T?cP?$俟>X?B?*T? Q/ηx?U?Sd6?=vZ{R?>J?]о bQݮ? {r?"l¾&?*"L?!'??8?D̾9.?%b?H‡?@ 8䬉c0(ͳLdff?%&4x!,0A);?)hC(:3?[4?BV%߈?}Uo$ ?7M+?DU?QtV??YLһ(?D?VҾ'be?9Arlx?CdK?E?GED?!C6/$?Q35/?b;G5?U*?6F΂?ؿϞ>Ҿþ_'An?8Yth?8LT羫`?jX?eKr2?k;&?B&o >qn??,l?k?ĿO?׿_8?Ҽ?2@txQL|?"O𿓤?'1I?1e}p?70~q5?:b#l.'6I?6?3?2?;bŘ1?$I+?A?7(eڒ?߶!?g<TO_?a?*D?5n?݀Lr?8vVʾ봾l??:k^F ?2_J$trr־?5?0 q?CS?.,׾F`?#?=D}?!g&>޿>?&Ă.++w?5??>?t?TZ?F?Fb.򄰾0USB ?a&?=/n??ݾ{O?*н LD辄4%?\ ?NGz??kҿSῌɾ3?b$QxTyn_͟:?Gw.?:e2?8濅$SA辱+j?舾Sl?/>?cmϾ`<|}U ?Ht\E?A?b?R'?B?Ur?< |<3?]?>H ?EJξ?("S?hT?)IX?Y ?|? '%[._gL?(x?B]ٿXdIW\xDzd>Z~3?SľLxs4? X?;b܏?n&oj:bQ,?>??b>?*Ym~@6B@7& ->t?(R?M2d?V1BپHz64 ? :0WKק54%?4V)0?񆾅M?+Re=ֿ?Y~o??J|j,5s?/|?f>+8NE#Ü?%U:??)?gڿ?+@ uN־^?Z??=:+X?"u??=?fԾJe%ؿ?U~?[l? ȏ6Ҿ5 2߿sI??+@?&/6?m?ME:q*>#?٭?HT]@? B>F˾DoH?WZWxԪj*{4^?)z?&{(?{tߺ?y2ξ>Dr?1$?ꨐM?4NnRKQ?KX iоEq?4?Oi?K ?* d*>6?74???/,>{&$K?..բ?܀cМq l5rV?9\1 d\a#?ߍ?Ϗc?֎,p!Kj?'l ?!l;Lоmc?sAK?| |?69>dbL.?&O.3>?=fi?Jo?Ny?t?S~CKC%A@;J?_?܂?N^A?1p7?)y?<3? ,ݽ?BB?Dv6ٿ"S?(~cp{?! T?@z?+T_P?rMup7?E#?SV>ċM~? f`1?1BO?4=GN`aX޾2J9\?HP?WT犿R?L|l?H~v?$^W?6)?~d]iۂ?Q"!4ϩ?+`r?Z?:TzFH+d)Al\??X?+J0Q>S{|dq ?#@1VT?A?qN?0>$?%a?I؀"J?/.?:R^n?7c"Z?5y??a̢ʤ0?8?-?.o ?0MR?l?7oz?'Wľ813BPVB ba@;.xU5?{@0?A ?Dǘ?0?7??\9?,sH?oYP1X%}?%?,??,Z궈r?#?aX?ܾ1? ľ`*E&H?ob??ș[?},1ٰ/mhO`j?>?dc}?^??&מ+m=p'?>ƾE`:mdJ?bvt0?9v%B\?6lÚ?,?S;?-.?^2uHfJQ?]n$?tx<Ǖ5L$?W[>d? b?/z?Q3 ?d&CG.?A2llM¾!ОLr/c?Q]?:C̾=9?$&lH? ?/G˦?Hc???<ɛJ[Z)NG?H'?j#?MT?-tmX?L*8?TXx"[t?ոf+?6?پD?& ?N־?0?4?$h[=i?=![3ppƾ??7?'v;(NЧX}?/ai4P?q?,M`?/d?EK?G?,y޾*9M@?)?-v?Jg??ؾ?piܾѭ?<9?%?8_? y?D]QW|U?:n?6mnn>?9mE?N}eKo?PM?) "?Fܾ ?%׷R,?)[VWQ,hs?Td'š?m?B?N'@y?@?>W?Swy. Y? '?Q??7;?*}?OI?uh?1zv?-&J?VĘ?p'?'ξ9}?v0{z@M ?-&?X?J¾A恿@?,Y??Cԭ$?$5**ݾLEO?630!?Lv??4?10q???\?$FH ؿ2?!b>#V?8SҾ?྆9?Y?/s?OF?RYw???[oľ?'4?Oޖ>G?+?-wǾ?2Y澉9Bʋ>h|?;$}ua.?)W9RLݦ=?"z?*n?%??H=Qb8DU?XfD?3Z>z?? V?/lL\N*b>{+ܾ?5Ӫ3R?H)?J/ qV?V/%?YM4"?T@?~?J;8?HǾgCCn?RX.c9}??=A8 t?9x?ؾ{'8`?Dq8# ?5쉾A41\|̓?̿R{j 5?R.&A,]u?:?MV8?D^ d.?-V?nf?(r؁ɲ!ZY?*ވE{v?4P?FBM?/nM?:l?X VY3*TL? `?!k?ƾWnW넾*?9x$?$a?#tA?yYmGh?D$1xl?dU?I? .?ʚ?.׾׸.־n,?7?0?Qڞ?J#?EG8?f+?@y?K?翝K/?Ojګ?70򾭐?$>>?`=]?5ξ3+?#>ș?SG $?D?<i[?9LIQG?Ejr6?uJ?H|Fؾ=]k^¾TϿ?U;?*X*?J?TRW|??L-;LPS1?Krx?0S-e) CP^ ~ _0]k{? )V G?>DA?6}jW4?C˾24 >#?׾͔cOO?PT\Ѥͨ?F*J$Oƾ+b?-[~?pT[?о?˖ho?+ʿ?:ձ ""?NH?LܾGvu-(~V?3?.0/Ͽ L;)?^b??+Xi?=Q1?`࿴W&?ǾE?Кy!oWPn,Qݾ}+j>?KE?8V?0?J?Q!¾?X)?;U#?CBRZz?&l^J?ړg?Kg"P??&6?@>8?6jL$Yr?C?,i?8?(D4&?,U?Sp?Pĸ=*쾒@8?%?m侕ysꈽ2g·?v?/Lm?-3 Vp';toŠ)?<tY ?1A?lQ¾*a#?=v?.L'>Ȍ=q8?b m? e5BރpUs?P?=f_?F?¿阾d䖾2(迶]?NLK&zpd{8Z?Q̮ؽx?=:.VDhVP 4?BT?6?G,ZJ 꺾?H?. ?i&п#1?9$?/о\`P5>1?o*\?&?lҌ\ H:d?{(Χ}?E,tC>@Wi?KA&YK?T?3]| ?Jl?>?aܾgY*V?:(?P̊kiM,A?3"#|?'<]/6?/Ծa,:4&d?#_?\-E?LJ.?aƼَ?s?fP ?^F?WVpt?࿝?;fP^?U.>9L?,? O־n)q?F8&}ܾ.?^A?t?>?=y? lz?'𭾍Qg?*{*>?E ?Ü?rZ-?t?k9l>M?TzVwy.i?RXj??Y?U]?E2:?X\p.s㬾`ؾ2o ?=?04p?cA-?=ۿA'?a?W$?7a? "bý|?:P?8޾I<\?@+?V?Jh?Ot *?4 >=?&yξҖ.?9\?pr0DQ?De? e9g-?OK?ZTo,?-5}5M?fؾAgA?<?W?\OV?,kEs?(®۾ծi0>??x?)a`,8?I컾vZ z? ৿~>k{6?Q뾧O?3ʾ]lBwj%?rˋ ?B?.!hB? ?0?FR?$Ế?D*?,?꿣ƿP?> @l ?þ?6V?Z05?<&?ZM["r?B> ?3>?:ʰ??*r; ?=? L6,?6f?0ӋaZs?N𣿣q?w>?4?F@վMپϿվ ?O?Tl?iムŰ?[*M?\7?GVA?.v޾̓濗 ?H?C98e2?ABU?OJ=x3`A2$_=NgP8(Y~??4z?\Z3?L˒?3 I̿?b;?"x?`jqĉlt5?R?e&??4ѾEn"68;??>*n~?)#?H?B?J뿚"=lྫ?SS'?W2<8޾`13sC?3PH H?7궾ۿ ?5\8?J&?,T<޾?-$?K$J?C??8?Ѝyzy?? x?$6?FԾO8'ۿ2`l?Ni?3l?U^_?I@}?9?2??s?!Tx?:>?>>@?A8-?RO,5U?[X۾ù?%z'ާ/.?ZI^MC ?>;g?k???BZ?B~?m?k?XC?V# ?K忑uL~?4LhxC^?_Î탾 ??辡??;UA`?.ᚿBl?ֱ?\>?3aھ:ttDľ_ľi?5YY?a쾑 ?.?>0W7gR`?nQq7?(s?JAӾ?Eb?>E?J?Sj:?`rs?2#զv P?<??W?*fDھG<{cʾdH?򢿩zyFÒ ?.p?C?LAe?G1pj??;*x?7?# #A g??D?ry?2)`jٽRUP-C课[?-d+WܾFY"?Ӿo;? ?1F3޾f?A7?j??Ǿ9O?Cg?KS:־#z ܾb.? i ?::V}˽?}ս¾S@e]i?;pSNJ??7 ?Q8?:?N?]%X?!C?J?߿H 8?4?'v?d?6gϾR꾂9ڿG!dItbYp.?2T@>?2a?Jw?"A/xDUJ\?LpŒN%l v]j?'?3쾆P ?;(? NZM?!J?*ľz K.̿ľ`p8׾@ƾJ?%bX yVa?0?@? :@ERre?BҾXw}7?+?_>_?1"n,̾;n?7?-!Wa,m?*(?1Fa"?*I>ʾÒ/?! ?l?2c_?J?-Q?< ?$*{{B?3|-,491 ?s'v6ٖ?7`MҨ?/V?Zwr{W?CzK06?P0\6?H-];Y?T\?:}k*?=HrE'?K0w|0?<42=?SQ&?(3¾oPQ50% ǘ?ֿ>.P@+x9Ss޾|x?HM0?Nst;-?HY5<`.UfRo? sA!?3⊾C?\SR?G~9X?މ¾b>N~?9,?8pȝ?2sz? W?l|vP X?$_?$v(>wowOH웯?Z]?v`g%?(?+Ys謄?\?/\w?3?.6<8?2?[_.ld?6??-V?_5?.?3(>?B?"w*^ĿI?Ej^?Zn?V[8I ro?[k?*Vuy?;|g(ž*f$?/:徊־?낾@?A! >(־V=>yo@1k=w?̧#!C k`?S0?5eZ>2y?='O|?|? ~[?= ?>?dP??3OC?)ؿ5THdվ?]?x?)?.K?+ҽֿؘob?.}zǽ@?* @#t?.'bq=-?P'!?=l?O?RGuh?:3 $O?8?H ?ɶ(9wEꄾ1d>,?~?sh>\=??ieO翤"?@?CIj徔x3O?" ҾOp /^f?ToS?nY-￘?)bnhrQ¿?V( ?$?0ܺajA?]?VD?5?e0ʾX龚ȧ?*?G&1?@J?9Ta=b9^ξk>L??;펾vPr/m?ľF?R0`?4<]?Lm?⚾J迚 ?0\?i:?̍V˾?jɿ,u?4?3k?:TW|?H?Pz?77?? tb}%?*C?9?' g_T?0Ml?= ܾs?D6?Jʾ6FdBV>eŻ?*⾢(>TLzǾb2>Hu?Hvx3??%]h!v?'Y辅wyԬ; 7bfH1Bv!㘾޿8?U8W?XD?Di&@H2?1.м,d ?5یT*]??bR?zo`lV?REbϿpYjƾ']z&V񺾝#t}ƾB_8ؿJf h?-?DT_@(O>?F01?[{޾WѲ?EB۾(T]?;ڒ?S냿?bW?`X8TL4nƾkK: ;?_ľۛxbg? Ќ? ?E??CB?$VplV?1Ne*̾{?N>>)?/V?Mp^?8'A@Bcl?S]ko?1i}7ƾv]?@_?G>(?#?7˿?1Y?-:?%2H ?̻ f?Ԑ|`8?7 ?I?l"?l; ??վ? ,̾gZlt|k?"=?1?K3?%?1X!(yKA"<"㿛:!ܭ/?2?G¾"?c,|?<ú?lQ? tgbZ?@4<.??pʿLǥ?:qㄾP?Wپ|p?1_ct5?%!Z?;:?H]4B?&*X?[*Y?2y\S Zwp|#Uyƾ-䡿?0D|0ƿu}Z?5O52`u > ?Xf?)0:?/s)0JĿYT%?N'?"? {D?J7v?1B?@򯾓9V@C@hBZVs[?K*?_?.꾍_?FϾcmFOxP1E?6;s1?BҾBYu1GJqFְy\?>o8Zb^?2??F*?aTOnzDZ???KH?E;n?+gҾaW?K,X3־nRRsg e=}2r?$\zlz]~V?4L?󛿇X¾?*w ?l<!?^7#?T:by?:GV??X/?3`?#?ح?5brG?E̢=K0~?0`?+|Xwsƾ7[l,^kܾn3?B?R?Gھ ?i?U? WhZ-\o Լ?/u '*?B?I?5?A?- ]m?8 ⿕Ybs4=`ƨ?Mr,sfo?ogjt:ؾj?HpS?CN}*??Eh?@R{X\?'pGxD~; ?IC<?=e?4r?UISk?O о?+Ԉ?E?k8Q񿠤 ?X?6ɾYQU?rc?:fy,:bW㷵w?MF??>?)b?bYڴ?z\<\־@%?+\>?EI_?@]N2?'B?4½?2ql'd?'?^,?4";Q[mD?CPŒ#{?8JF??L H?8{Z?2俏j]w?UL*߅?' hV?1ɲa5+jt2,?F!7??4?2~>G?9U?B !?D?5j?*lZ?/%WjD_O?ft{:2ž 1оG?.P?'ln'iYo gM/o 5閽0t=6?]b; `K?SU@gIp?4¿G?:F?IT?G

[R?Gq?2\B?8ul?c!!A? t/̿PJ? K! !~+?J|@"c?,w$?NJ ?)/,辡)|o:?Cž)7-ࡿ [.?=?Tt*Wz~??8 1 ?1??2c? a侘R??tX?&2?D?*EN`x\gp-ǿ䊾?C꿐?$B??%8T>?Ⱦ3?)S2?0JN8O"?#f꿒?O*w쾧 ?* ?ݧ!9?B?9kypYe待4}s?'>[?CO?+θ?5n?m?o.!>? WbE@K>?-1?7?S?}b>{V"?A;?в?O>*?04K%?7?!(?*t|>,7ir?{?E>8@?!Nf7{+{6~H?Tþ~ՔQ!4mJPgw?9e?Q4Gοè ' /"?Bҽֆ½ ^?S j9?U=R@`B .AZ?Ѿ\?E ?J?Qo=?ZN;(/}7>@]Vv<վқ;j(?^??[ٔ?l?R86搽ݩпx?%D% ?DN?;?9I/?3/JIFB bľGhA'@?H-q?;?Ot?NIp?;פ>?#?O5? ?4'Hn[J?Iag60?+gFpݿV;/?&_ѿv?*b3n |,?쿭]i'?p(?Lv1]>?ؾrS}oȆ?2:d?Ipb?ww?7x?"tz?/|?'?#?&.l~>|? E?B?-?)1gcg$S7ɹJ`Ȩ cs>I_yKMzN?!ҾN$?"Ta>V? 0[<_ ?Ezž;sn,3M(호?W1B&[*?#Wx,?*=w7Na w]E?"=HM?2J?ؾ .>B?1ܲ?^)?cJOD`?(8?FՉ/M?Mp#w?K@Sg ?P½?5_ 26?_{?V?N??E`_>or?(\N@|?Iĥ.`y랾5o!?b?(nv:?G6=?>?O?5c=l?7C?= h??Q?6=,?B#?9@'?/⾊V}?;H?V?4j#?)B̿Ⱦ_}?w ?2Ӿqbn?Kx?8-a>?Ev?)X"T-pv?Goǯ־ X?'ܾF@ཱྀjx$?ɸ$K7?&?;h:?Wɾu6?47?׼CN΃@Ө?B ??Tν9z|?<־B?Hc?WV?޾9пw#?(?)-Y58I#GK#uH 5vA?:?Yv?<⿞R=?[?67"?:w^X#YX|loZP$ >?r?O)''7"?7 $d?6Z?VDѾ3?G/D?Rt^LOE?IZ߽߿ʾ3fM?G(Ҿ?+޾.|νc¿ο6s{!?MbJu?H?D?_i7,?@2><?6ACӾ;щ -&ý1*?+S= n)pLw?K4?0~q2?D JE v>?]0J ?gap(TwݟZPhoT? 7dQ >?0l?5ڀ \??l{?1C?;?3>s??3@A ۾#?G?Rqp?'G,BI?⦉?a?!HvU*?hAo?PTu?XA&@s?M?^G?'^ʟ# J?!( :?ѩF󾀃d ?60tPt@Κ?*wM?>?'\?(?V)?Ed?FE TNڵ$ю]?fQ ?MR?(Ө$=?e?楑)?Mf?;"lQl>?;`{ -?L?N?_pM: bxz???@[Rw¿>?"g¾vp?(1d@?-`EF?Ag\0,wU?+<(C`e%վY?% (?H8%?1>}!J˲w5?nHV(? ?|[R?#TN?;Ǿt?<69?&ľ[-Jؠs?Jum"i%?Cpିyd?rᾎʾ B?I?:Ll0?=$E :?;%?=q[?;]{*,{B?E⾨4?!?4?V?91~?=Y?M?}g`P?Eg>R3C^n?*]P?0ؾ~>E?)Q ? ?ay+p?H9^|?d?,(޾ 4?'V?&u?6?4?=n? \{?(rj p?HPj?6,aH?#R? 鿖Wnоͺ?CM?Q? J6XO?_>ؾ]|z?4@?" 1?HOD?GHľ)ƿ0?=q? ?̚g%bkn7 f>⾅Z? ཱྀF?MT ?7enj?PcLW?BY?4?&y?#???>?5?̾R+?$j,տ[?F9)4G/0Ⱦi˾0?lP\N7{Wv?$3?7?8ƾ8ksF 5?] ?;bf?$?7?K"?~𤾀C?C?X?BK]f?b?쾁/"꿡| ?!?L)]?҆Í2?*V?3?T?)r?2=7j?f'?θ^H >?*adS]?6Hj?,O?@ɾS?&?D?%h^@?@(I?2q?Do@ž@q?MkUiYr?=sp"??G? ]?G r#v?C?B8?=?l_?Xp?"?;*M>ÿO?$]D?%궾ܾw?O?>羖G߿~ֿ?Eؿ~?.싾O?K+Fc?=?6x=0[;M>(Ze?H?ڔ?&Or}Ѿo?9o?1 ?64|?bI?7AT>(?%?*̾4v?-ʾ}c"؊?C릿;??F?*Z'?V?5O? (??91\بSտ֎?@?4P?:?1/ ?AU8?Xƿjn?dھ?\?PԽֽT?O'D?P?Hv k4s?^?J?b?a0b?G:zS?X`?I}{边.l2?OSҾWB?(?3z0?0"Hm>q~|?޾q?#?>]A߿K~??Fp?A?fA>~?9u?.C ^输о+,?,o:پf>"?8 ??lsoLJ>XG??%?C?h0?/Mྱ뛿 [?t?<?T>?$X?j#,}~1?Bޓ>~>?ӾxKY?9^?P?%?S3?1̿p?d?^J!>_ucM g?==b׾?)wm?6?@}?ݭ?-?-ݿh4W?&p?ݧ?A?^2 C?οW?U$<テ?R x?i-ӿ ?YnJ?m"?7 f ?v;??B\?"rV?@p7V^M?MP`?Q?=]?Sh?JݢQ~`?Pt0?Bam??ҹ6z?7r ϾLR>Ҏ2?2?m?8 ϯDr?SH"7?G?Q+P?ϕ(=8^ͨ?@:?H?CQC6.lVʿvR?/- ?T݈?R4&q<?1Q?+x̽Eƿ֌>fsտy;?2??(|?)#>??SZ?l?2L6sX??\?ґ?NVP5M?'֪?bžtjľC0?G?0e?* BN>h?*zV\TC[LS翨?y4hF,+n?Ճ?3 ,>?RN{:?rB6iL\{a s?:'^?#?F;gi9?Z9?,N?+S??xξ/%n?+?<Ќ?0:T?9qr?!(? p?=|E?:^?2⾭?@Id/[9??.>?Yۈ?䒾:?mƽ?GC~P=i>9Rk/U?V ?^y?[!?`?0`ZP?= ?^+ʾZ(|#K?Nqrb?(?F3;?"wa?]ֿט?KYҾg?F!?=[fHD0/?S?J?=RZ?@qp86S~QU=3?;?x.?!V:?'?9ھ?Bxz?U¾0b?'!Z?+K?HrJtAUS?:$?Wj?Bj? |?D?@hP?IپYꝾGb^, ?.YcW1?:Do?pTDI?*M?<^G?q?anmR?-I?E??GD8"_$?"?Ckq6u?߽(? |H?#6翆dX?4?5?Q6<7TLEоG?V*[?AÂ&y?$?n>?>^C?K54?32ξ?iv@ B?9h?mM?]>jL d@p'=ʽ ?N?I?.X?^?'p.1?G?Q?A-.n׹/\?g̾a|?FZ=.@\?w\ P?DVZ?SB?H4Ⱦ ?B\悽q?I!?޿P?Mi?f?l?9ڼQPv ?In?ῤQJ#3N,?E;?'"fۊ?轞p>Q%;? `?.?=ɾa1;]?>?LkI7]㊿о?M\??$\?:?>V`?cv۾T)D?M]`? ͳ *?!Z!?"пo ?[뿝z}dA> oj签w:{2?!&1 ǿۏ꫾t?2Ѧ^`Kg0?3?)> ;e P?z?+\?_?,E? l?6$?*侷2? M&.\vI?rt?ESuMI?ź?Xlowm?v?0ۿf^ (B?(S'?B?V2N? hAf?!{? ?3i@Z?EQqdu?=8?1?EfEN.?rw?2Kޚ>"܊>;?DǙ?|?:voL"?\xBY¿jҽ?fa?G1 FܾC/翉X:#3}?D⨿~?\j@NpM ?c􆾖->Ѐ?<Ƚ?9Y0K_> ?p?AOpP?Vڿs?R?;$r?3YlȲC˾"1z澝TBbckA?i?0?U*t{?,l(?E?(;?J3?2n?ℛbu?: ?G?Im澈ᦾ1iӾPs?+3?1b??AD?{ӾI7?3&i\Z?A~? ?H|?8O'?Qbv?5?u$?*?q+?8?-?O8 wbٙ|h\fMcnYҾe?.?(g.???I?-09>?Q~i?)QI"پP??DN"?ME{FvJ?.IyBE?3\?*?%#,Ĭ?(%ai*?䪀?.+0QC\3ūL~tH Pl?2wƾ=$ʾG?0gC?8[??ֿ?A8m9biT?D*[߿[<࿥h7?bz$jq?νni? L?mn?!?;n?v??4)??a r?&kk?H>N?!Dhj ?gDIоk  $?>Rjl|G?. %8&f^̾?8GؾD?+.¾O2kʾ[?*XϾdȾ.No/?8y)?"?!dq?C쿣ikT5ھ#F/?8 {?fR"RA?5 ? _?&?O?'G׾XS{?zF??1\?L¾ѧcN?-Spþ1Q?Dڎ?Z?q96"?42-x?A?U7bՂQd45?7*0x x/??BZhN?U?D¸?:fˇ?$E?׎W?@y?"=9?=P?O `iv2?@s?McȾTH?F4l>y"?Ly?h?QQPd?#?K8L?,B?K??HVl?!V>?Q?@nN}?&⾹?D|?;?UUH?.&W]ЦXYhx?Y?ʾx̰4?9,ھ֑?+ξp̂j;??ҥ?%Bk=!?A濑߾ ?<9 ?N Hr?.?|澍 ?B'`Q澚:m?J?@Ŀ?;(꾑%?+'H]=?Oo?>?PV>ν=-$>TzB4>7/?e ⽕@2l?#@f= .Rν̾$8վ'L=4n׾ ?L1(?0<"dS3?$[ R࿏#D ? D J?7=Eq{?! gO?-X?g?H?Nf?6?D(dL?<>+?lT?=P?%T7ř?Gll?>#ȿe?6xPl?~H?8,?.d?Q1?3P?+ԿTi?ٔ&ԾoK?ޭ?,p?(`'?>ȿv,?Jr?1?6 ?h|]6g??3V?޾?8a{| x?NFuxHup?? VN辅i?Ӹ?-J\d?ƾɬk?4D?8?꼵?R?8?X1&?bؾsJ#? ?Gd57N?8ڜC??&C0?~?>[n? >v0,?ѷ.?.^] Z?e?h?9g)@Bk2?NoQ?&AlI=lDtď|k?R?P ;l9 ?퓢EW7?SM>?<#!X>S쿄:C?G3 /?:rRf"u .?&AW.3?9\ښNؾ=?< ?\ PξU濙luw5g>^1?OS?w=[8yD?{?EtJD?Bjf?ʾ%2>w6ԝ?`1?:Ls ,Z V?#__<#j?Tc7W?W?K(?* @2?N\쿋3𾴭?D_4?H쾩Ɓ?3P6O&Gh\@##ʽ׾?=Dƿ`;0N澚2;??!?qھM࿡L3D??J(t3?0F̾xھl?#:6?=h }?EYL?Kf?5`޾?h?2ԿR+>?־Ⱦ*"~־{u?Q뿓S>z5yo??J?;??c9?bӽ־5?/3X|?Ӟ>?k?!n?,>ܟɾ_B?RAϛ?G?^?8z}V=Ykx*p(?LK7.4q?/j?:󿿘(/ڰ?OB E;?Ks?3ش84y<A;)B @v o}A62:>Ž8bafx?:? *?O?"NZ6?$ -zӹ?Th>?&)o? j?ꫧy^,?J?1% \ >8ܾ^>?L: ?2X*0)?$ ]^O+r??޾m??2fȾ/?"S?<@:2þU+꾵iξ1j$K?*r?$І??Ϙ?6?E?.^?? w?("??;]q ?j*l? ?9 ¾GO,I@杊^࿜[?P<MW4?gL6+?/{? s$.O?42־,?6g?+&½s`?/~H?2r?<nEXP?B2ǐ?7=ξ)? <꿲Ԩz:=2:?B |H7k?nξh-?L?]S>?b?u?%gRu6?h??Mc[Ƶ !?]yξ0&߾?N#?J?%ZÑ\!N䉾࿷0?9@B}>%wk AIaB@&?%?#E?;h? k?T3z?2_)}V?*JBA6?;L-?' z]~F?,܀R྇Q9 ;p? Zh? ?_ľ㿍? `itU??Ծo?;lApe?aW?X?5K?< Ϳ)?/?:?&AW?+图6>Hj?oڽ|-?ݞ?\w?&VI?*9@bCfKOKw>Hc?74v?)m?.?߯8츾s뾥x󬾶\?0?#|;?/޾I?O"?K|⿵a^@?!꿝N?ڠV?2]G?ٗ?; ?jѿw?JѾR?\pg?*?6~?z|n?OiDVv=ҰB?7*Q+ =jr?4?AQ?F?JBmT?I?bz0?]?^a?l⃾ľ?`?9q?ye?DZ?UYj?k?"?:L뚾⿛R?-"?9(mҿ}ܾ?H '?&ڿ?hž;oQԫ|o~?Lƿ'n?_?ܡ;w (?Is^>O%j?05% б@.k?8F2A}n?봿n(?#پ:K?Sn Y?X$?&. ?k?CB?196I?B?@N|ȿ+r\6,ys K$RSdrƾq4?I/Ծn`Ӿ?ܸ?5<-sXea s"?QDVo'z?߇{?|?2??BV?Z 5>3F?,f?Ntk>>+[>ܾ['C4|?Z>C>>` ? ?4Z?!;: X?GDD?2?$K羠.6?YH{"%w0~, ~徐!ޚ69оО꽎r,t\?=r?:X?A*?K|8?> E?8>ʿ 6 |?de?۔S־3OP?!~b?I7?&~*ܫd?AV?>C?3]F?MБ)"?3g?!Xƾ| U?8@?0C ⳾?4?3}5ƾs^9U?.g? ̾[3?KzRA#tv?"\?(n?>Fj?1zw/.-?@l?:?82?̾&ȃR? rڿL?Q?7Q9P? oBm?Ⱦj X|g&s?2D^z? ? Ivj?7"߾[Mz\i?;fH?%zH6??h8Ӿ*>r?r̿zM?۔? ",? 2b?8?5й? lmS?R8? ڇj\Gf?Ol>g*?F?O3avag K ?st^ 5R_L?g) S{OM?Lx?U?LTj,Fs0+?T;iz?>bu$?ZT?GN?W 7?@R{ S JmU\8s9־Gվs?R?3y>v ׾=?)ڪȾWzhؿg? ?ڿd? 6?BP?lξD&D:L@-J?+pɾ?-l?&鿆?ߪL/ݿrj5uZ!"*?Hu.pt?+_?S@jl| <"X? ;?%?+ꖾ&?"{Y?5]_?,.bzf??XHtѩ ?_`",a?L8~W?.oB?O>{?$?dMR`?=?K>J?¾pDZkz쿨?N+>"F?ԾSX?1s>" p.>??%7<o=Qd^Ծfy?8>?g>b?D-?a@%?r=U?I0>2?>T?;Ŕ? 2?&ڦ)?:[@(?F٠~^Λ?r?t?$ݐA?WwHb?ؿW]?@\^?g$O?bd ?d)gA?%GJ7@埾zտqkV88C#5???{0Ap⨾8?8??>ֲ?U}޾sL?iDr?#?e SU|?QZ?8Ʉ?9 q'}y?=¾YjO羝]?L??tv.rA[꾅p|?4z?9&C$Ⱦmv??Fľ͉?9H5ム,{B|#5??L ?*?;`<3e?L?%?4,Ej?2?&X?ET)?ߦ?+tǟ?'6(B?A???tc6?&g ?8bF6i#RqPHAĿ9bN?K7 ?m$^,B?%%?'Ю?@U_?Ef:׊>?:a޾=?,򈾡h r?8y?65CՄ? ںuXHn?A?1zz?>v?5? c%&?*JZA&K?8{-pl?++?3?-U?uԾܼ? l?>!Pþ?R?3$?a'P?(?3}t? )t? ?Fy?$о55{ wz?0"p?HȾZ?D7H?%?tI`?GP?4[-?C6?9ƾþ#k@cb?R@l ?H?="o@?Jp? uֈ)#D?<I?G%T9~4N?FC?.(I'L?eM{ꤾ9A?Sz-I A۽N0?{|HA?DB[ܿ€69L?T87+M)lB?Jy]?JA?P?ᾭ~I̾y(˲E?5˥?ɬ;)/&!uXh|d[Pͬ?1m?¾D,?O3>ޘ?(?P+p\'?Qy?XNg ?PMD?9fP?]??!?9ӈ?3V07,??8ͦgٿE"?K񵾓>:?! Ti!b?*(>?4B$?(`Ê]?&@"j?3B턿g?fտD?ߦ??(n?Tz;'_T֞X>H|rz?!rf*ؙ4u?Q ?;?ErY.C쾂# +|N ??T;? 8.Ͽ ?XKZ?c>$Jj㒿}־l䈿D?FGپ>S侙@ֶ?>X ?m'6?Dᄆ<)?,C?JoK>4t?8 b>?<?=ٜ??῾M??־l]?)c#\rBF ⾨ ?C4(VhbTb?W_៻󔾘O? }x+E?EMѾxP? R@&\u?c?o?*&l?>?6@?)]{M?+>5z04 j?#>"ʾqO¾>|޴?-ܾ;?hiῩ0?ԇD?r?K?0A?6?:\D\t]?5fҾZ[Ķ'tX?' ?8Vc׾',? u?␾Y?Cr? = t?SkЧfJ꾋01B?/Ff?/,?JlF?FV ?8?"6BŒ??M$ʾh?қ?8M?+ ?ttjNa?'?+k?#?.?1u^? 3?EUZ@̜@rD?k>9bh?Vq?Ms?q7"F?hZ|4?Lkh?'B޿ыļ(u qhc9XT@?Qo.@ P ?Tl?[\]T]o mf.E1?@0?L?9N?ixMK?xy1?5]?HE?Kk?п?'?S9K??G?L)I7rCa{R?4?M9?:-?8bua ׾C"gͶ=} ?GS>Es?T|\ڿ6˾4~?9?7Ҿ̿,?#ाŀ?mxBt?йP089ب?$f(^ ?؛𸾀<l?Ap8?Gps9??QBZ[?*I:?#F:Sq?4?5/z?"?*u?'?FvB?D ƾ~W7f?6F?!-0?3{?Mj? }p䡾h?0?H?5꿞Ȩ?A[ ˠ ?Hn#?GFk?{߾m5<,Z#?>?/q",q3E~?>r?Fl?A?$RX砾c%?:od^Կ)d?8r? u:?/?Diٿk]ֿgѿ?aD?&x4ҿ@ъk a^@˳h= \??iݰy_?@?@[Y{i?WĦGl&?T<?+I}?G?6Oƾ۾~ H{>?=pu:/ɃGn?Vؽs?_d㴾?F9a?oQ?$P:?=v?^Xi?D4B鿎?l?k̾+ ?'@5A^@<#@e@ʸa.?kT˶EeU?&?qg L?^Z?3Iu?߬}WP]?Dz&@?1&4 8>[p?>e?@e?l/*t1l? ?6?9,Xk3 ?H?8]?^?RʦS9 cmȾߺ?T?0h?je??ό?;PľJ>Ī?r?9R?'?(vF?4]?7Ծhp?vi񾇡a:0}o?X?@?A5~OyGb?@mF4A?3Y? {E ?4icGj>N?8|Ѿ >;?Lp?-4^E?'>^\?_Ծ[ 'K?L7?Yo?; ?տU^?ʾ!?`E~r?67??o?>⿪(?8rs?.?>$겾m?D5?AE/?d]˽#̾9R?Pl&пtx??70?;ha] M[Ⱦj3?LY?B>t?KT壿?JW*phRa?,?B6?&xoṾɾ Ҿf).?W%>da\z?f~*7?A ?Pv?$n_- 1 ?7xj@u־(^z?*k0!BA{?R ? BoA pvf??/yd澇XZ9뾴P0F?ߥRv^*&]z?2,}?EUtbJJ?A?Ҿot{X?o?Uߌb#^|.¾Ctj}dx.?N;gQlN3?+5%?I?3?0YT??˃|?:?mD?.I?侖h[1u\tN?F?%?ڴ~?6?=Wi?:̾^x:X?>f?/7?,m?⎲?焿C˿Y?>?' ?8?'>J?`ħUK2z??(?A(f h?=*?=,?Yvl?(efZ)Mnk?&?* ξL 2rI?<;k?0+n?Lpb}aAAӧ Q?M Zc?:?s?!,G;Q?p<hf=֊?aBϾg,?A%?1Т?[lܿ+?E5^;@??V?*j:g,?$?žb[?Rr?2Ⱦw׵?)??*^쿧M<_$?HiUJ@Bm?(?C?;D?@6ؾ D?0?/?Ų?ᾔ3?w?$b?68?K{ྣd澊fU?0&x?>4⿝zjt?]þ6j: +}MA?I&7?#2?ꤾ"i qV?'tpTu?-<澤?b??V?I~Ú[_6\9?EP?K?2tƾG?'*??鼾cj?I۾;\w.?}@{o?5.ľn?bm?Xdޛ? 6`Kk/?4? ?ބھ/S?)? "Rd?ѾF:5?=^޾Y &?2{ulr鿒?[>?W7%E?,Pd:?&?A%>3t#Q?Qg:73?6 XĿ?4[ݙ??:AUp?F?N?27?)Z?9žZ?".b\0?3g?&)^Wαm?5㾟٬mK?-鿿.{ܾ^K&?,#??C?5?/zH?J?Pb?J>҆27AE￰nDľ?2?6g)Zr??Ltp?$?־?Fn?<Ͽs>X?DU?@Ϯ?Q?}Lw¾^(!b\\?-޲_Kwbξ&]𾧕;?%3H[?*F?8BоЧ?W ?)?EC?9uy?(K?4pbfXCB d? /?F>Ͼ?@??%? ?J4?߀{Q򖾟>c'?2⾛??ξൾz?GF?žT"?:q#yv#5Ih^? ^6}G|?Gj?EM?!4?`ۨh?d?=?3?B?O޾g}7?>R?Z4oV\x6?H0;T@7=;??4?*??o 1 齾u ?C$@C?\ij?')l?G?2u^]U柏K8 Sjؾnw_?>~?C뾢;E?>h?&R/_?e?pP{eK?>?%f?8:ʾ?1X$@Ӻ?Dp_6:ԽAv?b ſݿW?s»cW?e?U0A?k]?AJ3?&&6W6?7Յ?,Ƞ?A#d?*?hOCLo@?HIC?M0?DR?KA?*?G=?U=?UV,M?Lξkotӫ?ED%?G?\?6о?dh*zmX?2(迖Xƽ}?S¾R|`?;_a]t^WA?]ڗ ?FnA@þ߿+?.>R?߾ }4?$派J ?^L=?=ݸ?4ް? ,?ؾ8?0a?/.jоpゾUz?EY?2^lG.? 2}?@㾡Rw?Ehz {-k0b?C?"PjپUR?Q5TtFN?+Lv?$ERѾYJNB"@7Q e?Bs?:gej? 4?ݔ| ?5s:?Hdb?:>?=0r7?.?'=@?5?|޿1:hH?@@#@>EYz?d .I[?(ŕa|AP1/'v?6?Iɾ hxCVPfl?>ɾ޾HdͿ?7 QԾ]bAt|?&䊾d.l?H ?x?I_?2]A?Fb?Cb?.|i>s?.g?XK?Dsv>>t?-?[>Ǿ?3!??Zn?%hQǿ?4?l?C?t%{&?3 ?!?68&M,Z߾ ]v?1?Q8%P 5쿗IAP?S?#?%o?K{8Y5UQ2?y?@?UH+H{?%xbuXҾ&?07迖B? %?2Yr?!ns׾?2Ⱦk\U^žU6ƶ?Fz?7>?%\I徎?c7FCξ?W ?6?4>?о?>v?$-}jP4rj?? >;c?Jпr?1A?@7?WR?.h?.?[l?2% D>^G?%99D??.?&CԿwzW_8)vϾTGG??Q'G@~Rx?/?[V??q? ?7Ⱦ.M0?.N ?4cdZ[{?/8ڂ Qd n8Y?]ʾ ?h?EWĿR8̽?OD<)3?ۜOE?+⊿ þ2۾ھ.{p4>T?(Y'?'v6ky h,6?(&Vl?: ?]Q_(脾5W>T?@?]վ2m㿌 0na0u5ֿ>?ޖ_?,r/zm ?,?Xe>?F8vt?&\?.@"4?t݁٠?6L?Af⨸oWྀpU|??/U?TJľ[?ݾu?UN܃k?U@4+?FŊ7g?j?NeMN8?;qn?19v?px ?H-Jo?<?$taz?Ϋ?=U>qo ?h}nf?Hlz?1)7adr?j q?i3>gBZȾeT"d?B?T?RJkdvֿ$LbeqzY?7V2М?n(?VARan-?>E\?Uq?I0?|žJD?#?ܩ&3ؾa,?4?R׾ȿ)q@ qiC?@S?ʂ?JjJSbj(z&濓)?:4ʽ?A wפľ|W?Aq&86Z?2򿙿6 ?+ {??DM ?-z?UJ۾˾(?t ?1K辻f?<<8ld?G3?4ľtF?HmJ'D?'?>K$R?3v?пS.?fV bܳ>>;?}?0#?%پ_`?!x:6@? yD?dȾ۾⾒8I>|Ɓ?GvJ?M6wv>[>><܃6>ؚ}?;N?<< C?(Er?.@>}P@H?@?dY?# !v?9r0p9ӮU?$54?GB?>d@꿁ؾ|?Q(f??N?S?Xu(g?*?P.?tXgXÿx?8V@?6?L0Y >C4r)?X5IT?r@f!)?W\?E'+>.{)6̾;?DhR\?O I|S5h>s?B˾4?y?^FWؿTþfA?+8hA{Y>Q=?*n?`(?xҿ:O?°?ܠ?IH?Wf?̾v>?WbgV#*?Dcu?-uоKA?Sz??5c`ھ H?%ȟ=]lZ¾JxX?:YCX?( ??2?7M7g?*?*ʾv4?6 ?$E?3Lj?I=vԾk6?"U?20tu? ?580s? 䖾 ˿ڑq?$t.TB)Ŀᙾ?.`2?"{IпP?9(.N\?' w=3-r?[zQH@D?#F?)nT?Q?;Z孾œ~?8M?}连 !ؾ 8?j?:NޘͿdiz??.@?cY?B>'\#9?Y?flZ?H;'?KAǾ[mS\?ճپ/U3ѾN%þvR ԯ1?!!?L??:;vj?2F?N4#~?``?H}Ծk:?;\X 俿5p>&ݴOa쿡\?M5>?-ѹ ?+O,?Fn%F#l?,׾Ұ#?0v辐7?E?(쾨?8྆C? mT#s%^?'?E陾^ֿݾ?p?1r?F)?$?+Xǻ>JV93D>ճ-Arkr?o?3Q.bK? I"]o?j? ꂾ6?;%I?FNwm:{n?2?✾g4 ?'??K? ? fz?(4?Ҫ?NоgbL?% X2XȾaZ>L̽7羵?/vL@3Ψ?,2ȾiDx?!E5d?n^y?ճ|nm?v?W쾒V>Ux?"b?CV? ֯?kjNX? ^?#E?_? ?Vq?)p?8J-ᾔGο??EJ?@@/>?-C?Fb?bQ ?P(>qÊ?](?'>\?S^N?HLDɪ?O1?dB?F6?"Io?G6^DZ?fLRھ`r"UB)clԾd4ֿ:?:?P|'C1c߾A!ҿ3?TX?@v?KT?Y7I?XmB?Tnr!?:;?'?98?Bo.ԾȜ@0oԾI?[?g^?U/0? ??(FU%^Z0nS?=,Hkd2pʫO~{z/|? :4@uK*?3`@>?1'xϾ_O??(&? Z@ybA?׸޿?=En1p⾉d ?.GV|DS>嗒?%X<>?#(%?0J@4xYѽ󊾬.?9zQ?C??/#D? ??(38/3ξy?9p?G,?)-xtCOd)~"?GCr?+bu?G?B~L?&/t?=?뎾4'Lv>1<+A@?~?IB?(Xx\n'@?NjB7- 5Q "cM4Rl?W߾H{^巿 c?8)T?>v?[d?@rF5#bp?$?9-/?Be?Ly?D?F)F?KgkZeA? i?A(?9->?Mi)?! 佽賲_zľ)Y[H{?6 U?zr?ؿh9?OTƵ^?2*sпh?t 3վ&g?翺ekO?J?<-j?SA泬CAB|f;H⿥ξ#{?1x>ۧ?( ?/Ob?b?LG?Pc習?-L?D0?IiCeU?[Y0آN1?#w?M?l/*?$<1 @ղ>3(dE?꿍kھftv0( 応u?0r?!X-c_qH?cھvP?@L?/x9.e?\\4P?׾9?1?$FI࿟,S?Aý$<& U?92?UL?We?Mb!տki,[i0ֳH2c?j?'?EN?>Q6>1iAEke?2:ZƮi j;X?S ,?S[PF2?xkvꚊ?e?Ƚ|JV?7C٦M?G`??p?G?/3a?[??:uuDm怯徬t?]|%$tL?#q:wP?P?@q 龨4KQ9 ?6j?&?t? iޫ?\=_j¾dX?RP$?s{€?Nf_z?0?~.?Z?0'f ?7b ǿٿ98?=@?u{`?.ho??U?'鯿X<꿡j(?M ?-J߾o?3ѯAARBXBWK??Zz?G(??:?3 ?Ř/߾\0j됿()?܈ݾ0>'>2?9Ҿ;?"?6k?,`ԿjN'7?CS kC?Qd*?On!N?P鿪"&7?r?-?FŰ?&w?a澤?,4r?5T?-xž@0?]?a???)Bξ>e?#?/hP?0`x?p([v.?9߾ψ2Ώ?>Կnӭ?MRH?;ﹽ ?V`?ޞ *?;G?l573?۾l?Qަx?C\?Z?Q^?Ti*?* }I??}(?A~S? ٿI?:?W>F)S !$Ҿ&?iQξHDW0?Z!$?:{Cp6.M5?+? 5徱F߾\?'n\n?@?PB?侺8?-YS?% ?ES?M͆RԾU?B}mR0Xذ 0?7B͝M9L?=XeT8_[?&,>D?4;?Iz="yH?'i%倾 C|?KzH?!%?漿:|cF?H򂾖`{?\?x?+ԝ?BY`??$0>5f?(?砽ĸ?>5q?8H?O^X2\HuZlE?>?;rĝ;?!ƾD?%+l?"ټ?݂;БO?SK?&??)drn(辫tGN}? ٓ;?f゙L? -?,`?>?8d[?5>fq?NtqK4.nM}*?Pr?N+K7ujx"xL<?9QKX:ڣN 9SC?c(?N?@#X?A\^?H&;Mc?c?i+ ?SF#I?M~4?G: ?Bp?Abؾ׽=z5ֿm?u>-?B1^Ftcq|#4#9?T-X N?ƴ?- K`Կ*[  wŽ$y50?Pc?<.+?1׾x ?=^?4 x`WonTL?&\B??2 *?s?A!?f7 x?D'?q\U? {"C)%?F!?*?Y?#ʿl辝? Ug t?5J?.Nz B?7uݿ7?I{?B?**@<?.ހ? E?͢?+.?8?&gd?TE q?T?1? ?6u.A`??㮿B9?+?J'?>?.?g/?#&?<?7AEI>_`e?d޾F!˜mڬ>O ?0?lu ־ Ⱦ T?"A-Bz?ҋǷ?:2?4-p?=L;_?C[Kg?6?Qym濻p?WsQ%CzUȅ^rr)?Y7R?P+s󚿏W¾*E\ ?`?R)U>?K6t߾R&v?6Z?_4?`Y?ꕔ?A?,tE3.wdp\a'ux`ƾ~/+|t?&Y?CNA뽯h#>6ƾ so}4?\ٿp?=~?Ւ?F?1u?޾?K̵F;??տ4?J$?,?Ͼo!N+?_pr>V?@?$v?n,ۿq4?Hdw0?N~ ?M>M?l?si?:!RBڿc5\ؿ?Br?5*?VJнK)V?#h;?$sU@_?-1z??71 \/tV.hp?`ZȿB aCԿŽzܿ=]?<@?5y#&$5O[ƾ0j=tKF^qs(~G@V?-YȾkye>܏E?Bk[n׾?0t?2b{O"?>̆~?I9;p?S^ Ae??P?"DW?lڿwBv s>B?&?8vTL?3T?پ:?^ ?.T?^Jr<㾉?MA?, ? 7GL0yk?Kt)?ѾQ^?9?e?c??2F?J?Eƾ1D?*]PO?99) yPIR7Rv fbՁ㾃Iþݯ?&?|CG ?6?'K>Lj? $?S?&?^t-?Gj?Nt?*>n@<*@=L?K,?S?߿%?@?%uZ?*?K[v?Ӈg?"?@E 迄-c>?_f?=Qkо1?@䑿?J#ŹŴ?F?M7Cξ|?OXo?.YJ?\Jľ|?CV?0622?-L?,.?B^?7Y6?..?3^?&z?\R6|d7j?= -P*[TސV?6M?@\?KL쿔f?0 ?UCȾgV?DV?e?#_n5L ? x???6 ?GW?](C%Z?Uþ]7 @OsBg$?F˅?,.?D hMS6|??@>o.`FkM?Qp1?%o(??Z?" t6?F-?5S) ?5?,?)???8 GJT]?AxR?n?*?+J?pC pq0J!{.h??!?0?0?UzKɾv?i?lh?.d?&c\?!gei|l?$꾆>?[?No8p^z>~U?EQ9?6?3{?YMڿA X?7#=쿏?7g?L?K\ ?"Z?s?eY?x0A?6:t MپF?;+"?B]=C"?3i\8ʚ?aj~?(q{Ԭ?/ȾI"?1?Nj?1R?B?Dp?Bp?AK*?0V?BX?J?G;ܿ?&p'a?ϼ?UG`!-A?'VR?,*Jm?&Wð˶?.=?F<4;"Ѵ?p1( ]e7Cƾ?<(@ Ⱦ%o?Uv3e!so2|"?1Ҧ ??;?">'?ȕ?)2?J?'lĿʒ?*R>} ?6>ꩰǷ?1\"+ տJ`м?#>Ap01ـ}?7?`?Ӿ]X?g__Tr?7/)?@R?/f-?(?z D??:ӾP׀z?XA?K"?d?ڰ$?FKz濒moklrþU03As?BQ;?$1P=>u?i@?f6?\?/Mw?/n(?U1&a?,n5SF)d˺?74?# ?0xpEp#?Ăo?BC>о-sDW5ᆿ^8=?)C?%fR ?2 @}@>֌?_(?D>3?<?H?pľb0͒cZ? ?4HԿ)_6?TK?0(0?.TZ?Ir?#P~,?)?6x?@0??e&?%6??Y;ჾ־?-,?.:?+6Z/?Q{>c??7a?*bn p?'쾐y5v'6-x?X6uVZ?nؾ.?4mk-?YG(?Xg\࿖gٿ?"4xfܾ.멾~s?UH_a?(r?>DU[&?NL,?Drh?7 ?XjB?VvT ؽr?2N?0@l?@~+t0I%Fw?ŘӾ̻JX3:6 7e|a:=R߾mr,???6F@?b¾׾KC¾[?0좾Ӡ,?8??8)?5!?7qͽ2R,Bvھs?Tܽ [ ?R?S?7žYN?%?.q?T?dR?;0?5?t?Lu?U?D V? 1P?Cͽy?1쾌;>g?0?,4A? +&c?B?0?A????d6?d{?9?ڴX?UD;??űF?C¾d?$^{?&?Y]Z^?E6q?1@<0 @ AL@2 ?ξ 4?{Ҿp?ODn̾ż?*?4-:zZ.?^r?#?@H?r˘l,4A?K?p%)sG?>#?EގP`?KI -?3?'otxW{?H~ۿľ&%󹾆}" )긾3Pg?{/?PD?+R? &?-ĿRҀI?9!!?jUzN|aツQ]2?H3#?-U?# ?= ?Qf缿x{3?vE?G֢? .f@?,O󿪌*?_湧?SyԾڹt徿社pS? ƾ-f? hv?)[>?X?w?o?):?+.a?)2Nw?jG?%\^?$?&^zW? r?6?Tct0?ߔ辏p?.?$f Q28PxZ?BM q?(GRp??/|^5?2|?o$k,oHj?)JOr^6??!ھ?G/?'R?] 2/l-cG?H뿏?E?.ݾ?+=5*?3?6*&'?C;L?+/oҾ?-?EɾV¾qn^"^k?TӾWܿPS?1ZL6 ?x \Yں?,?c>6B$?]}Vੰ>[{g?Ei?V?߈"ܾH?ҳm?:Dʨ?*d>žM?# ؿo>?ʗ?"4ڿ?rԾ?$:Vst?Pľ@@#?1@+@$?A?&&?5 F.Ƒ?\X? qr?-J?-mB?7?/V K?6^ۿ> ??*Op?+xd1r^g?Ff/S?2?ۦV/yv#n?hY?n7?W6?&'r?=H?;0 1-?!UؾSaZ??JD"?TFW?G;&|f 4?_?hR?@uU5D?>^ξh#j/xSؿBqLͿK?6^?T?1?(??88?0?F?=">'?(jH6ٽ|w?*>?6B)W(?뢱?"PV?نo?@a?4\?~MO̿iD?9.b/{6p3EfJ?ҍ]?0SM?,i ミ9<ނa?)?;5?RRv?)?=yѾmP?*ݿQ?JmF1?6? ?6?6j?7"xT hy?'~?Qv~u?\?? ;ƾY,C?#??Rڿr\v>+:? 3JI=I?0V??2p?9?鷢?Bx=('?2?[,?>A?]\? ,?˖?&X?,e?EV=~辻Jjl*ھd>>׋?IR+?D.7"z0?;}?/n?[ ?̽??I?8~9?/ɾ6?=[vĀW? 2H>fo]?D&B`|?+?;df89ר?K.jEǽhN ?L?dҿIG?R9?P[?d\?PY?3V(?61?Fn?7cL@M?M\?8?OU?;z?2(?Pf?EK!پQ1?B+ؾM+f?GKX?F;Qi*?%?b?J34?u?P$?Oݍ6?3n?8߾?7꿩J?JN?2uޠ/g?~D?S0*'Խ@?'s?A&v?%?4?B?ZՃɾ4?+(?Z?/TiD??PL?6辝MU$0?/~\8?Jz?R^?)Z?0IǾ:?V?sþ?'ʌ?%?@6lC?/d ? =PЖᅥ۾s&>6?Gbmɒ ?3?2A迫{??Ӓdma6p.M`?g?ؾ~E?H~?>KM?(e?,i?5{?,俭 SlPCW>?@ ?5 پ?辤T2?An? ? }?W?E5?>n?р$Ĺ?R??ɗ?8_w>? ?LNɿ#B{?M?1'ھܾ(A?)Lc7H =? J{ֿZe3^S?-t? O?p?@ԿikE?1r:??h>Uk??A?2h9?} r?\^?,6=O?dK?]`?Q/OǾa?>u_nX?R?zߣG٧5bؾTWr⿈?D?Fa=v|C?RUB(T?Q?DHؾn7?V?NY?*??N d?<b *`\?;^?BU?8 ?X?|?=\ܾg؝ P?bN?[ >G?U־!Hm?R?&?@Id? >\g?1T`?"Y6??#N>UZᾇs?1L>n?=/?BO?ZjsKizDڿK+?Z? Y?:6?+?W8/нgI򐔾7xq 8?/D?)"X ? ? (sNZ?>ᄚamj<2?"P?+̾.?{ ]7u?ZB)t?6? қ5O??$4>yS`IV q v?C`>NVѾ]?P/꿜?ⶾyt.?VP>CV?&$?߾|S>dfm~H? ?j?*L?+\G?1?!?5]Lur?7?1׍?=nДv,~g= ?Y5 R?[F@A?P??Hyh?M s ?`F{1w?;h2m >֑]^?A(?[ ?=TUWt dLb?>s(?.?`qtX?z*Ϸ8v?K ʾ0?@?9!R?7vo1;9q/Aè?fA?3ſuuc"?ֵ$B ԾRR?@2*h1 6b?X?C?K⿋N0?BW?F? KĿ+d? HW>Sa<???I?+??׿X?DN?-u'+?/)D?=䢾(L޾>> >߰*?AG~?j6پJ?$e?ʟJ?A"??>e?*B?T?ÛL??)?$pְX?,?ӯybKb{`Ńu>t̾?!V?2?_4Ӿ:տ?2оqW?9њM? ʚ|Ⱦ)&5G۸?" ?>b,?'T ?2?%?+㢾t>̮J?"?h?#?Gvl?1Rj?[?+h?Cʸ<T`?P t3=mû6 Q> ]?eN?VO7w?A;)Mdڽ*?P-g?1eM% Bhb?HaȾ e?Ch?L?k-?/ پdj?H:)p? ?CȾ]]O?'d? ?V?^9Ly=?9?BnNBf{~J=-H%cپ~?Be@??T jQa?+ XH7E#?g&WQ~?1?) ? ?6X?22?Be?&rr&Rs? \??ZE?%V?!侮$x$ѽ8 >D/A?<?%?M_gh@ќA-h?ALS?7]z?S?6?6Hx??FXzgQ>[?'sX?M;& V9h(?0?9r?,?)J?< f?.IAD?"?6R?~ȾU?2?4j+=8!=dȀRʯܿt7??/;nب?F?R?, Z?A??SZn??#t&Qn?(/4?*,I?17rY?,L?U?=u?9E1? ;?j 6?Q{ Fȱf?t?Hg|?n[?5ÿP?a?Z?La\ȾI2ٯxȾIĿy*R?Q2X{#D?_QHؿ|?3ֿ ЀP?R$ax?EA/?A/Φ׾V=?Oz*R?ZQM?>xQp?L?+?L| CԿ+Ծ??1<5M]8?B:{?E⓿ͺ W?䩾3q?cqZ?&Uد{nxgH? p.Ru\f?QC]'T?2aw+J?,?#?6쾊?&?FDFO(xU ?6Ig?w{?PBNΪiTQJб?=?~fB?@L?:J?']?/fWA@?S?Ǿξ,?2A218?L??GH_?C?>d?:+R=R?4 4?"?7aX?Ul~꾙(w? H%(?+:wt8DZ?*JŲ?)!x? ooOB)_(?4~D@?ľt?nh?㣄pY辈*[?*X0Ծʾj? ?X??c%?@7``?JKE?B?J쾡?*>Rk?Z O^5|E,٣?)7@?C"?L?5M-?1>@*@2&>cVTo+a?=?.Ps?=4̿|_<վNʾ~K?5vYd'O?m2??Bw#_0?Sz V`?I0s).x8x?8pB@??R{1̾!]f??9ҾfȾw?>m?U@?-4?>"?+s:?1C?8羖ſh?!{|Nt? "b0?$?΃濤b쾫Y??7%Ҿ?DΨ0oBF%?=c?*־]`A62u?6PE-?Ծr\>U?EU?? 8!a ?֬O?5ľ5ƾwBˢ?,.貿?=?(?Ե6>f?LJY1??2]4=tP?ebC?]%?/^un?輿~'??>sֿϷ>v?'Jٿ?ޙ`>"?-ミrIb B>?r@꿘>?cs?ξl?3.>'?G???9i? 8?߾?84>-?Cg֚?U?,@V>‰@ζBK7B?ۛ?A?$xz>?EoaqQ+?2 ?D?.p>?D?~]??Ep?KS'?LRg`?Nsʿ?]?Z+?;I?0?6mܾpSRĘƖȽ>,?J ?:KLȝG?򁁾x?7L?gE%?9i??f,-D䱪?Q Ǿ;~7B~i?VS?&;,?ZEJ? &ᬾ\뾴I ${w|?&2?⨾fvƾ*Kw?EAC/86?OȾVro rK?/ ?J?;G?Pj?0[?SO?*?72?-?7(+jϾ ?>s>LMi?'Q?#?0@ھ3@l?(:f?A5KC?i?ATf*?H04?ЃdMX??&Dk?)*rX\?Jyξ?? %?!R?R?F, > y?;q?۰qv?( ,?ɉ?D!?꽜\'? ?C7?;%BE?%$l[GhQ.:?Bnr?UO?R?ZF?WԲt ?zR>Ѭ#X>?8!~1@޿=pfZr?56cz5?LJ :$ cwľM@?5ȾG8 帴wHgt?9ſل?K-?Pؽ+ZZ࿊>?[J ?=G@?9rDU?^*򾋵!lֿy8~:?Dlm?CP?Q`GB?WN8 #N??Pˡξ[k?Bx\M2om?PK?t??-ؾ8-1? ׿r?$,칿VXuھTDV?SS/oT98hj=%6輾?;J%?H*5K?e'?Fr8/;> *?%K?&BD?]辈㴾:]m?Imm?(Sz?3?=L_?"Tھq 3ӿ'?1??O ܾy@~??m??3?8o@Ѿ]½dEr?: ?< !D޿~\?&m? l?:f?>(t?Q<n^?%?E"?3m9оuL??0C9P?#R.?9X2?6g?N- :yB?ݪ!+?!?<濕c2kR?/m? $ ?l?63 $ ?Ȯpƾÿu *ᗿm"}ru>0]?쾇oO?3i?)߿@=?jT#?!?>Co&Y7>3g?!&?8!?'G?4~^?BRʿ7?Qy?!jP?7f?3`Jvpb^? o8_~?/ƪ?<9?.? Cv?$Y?%Z??|6q?Fq?Cs?@"O?I?%b>">T?@?BY>su…GQ?ާmr?-d^"?#V4g4.^^?80?6I?4⪾Kѿ3~؜{ ?7U#?ͪ?J\?6 ?1ھ?I?@? Qzjؿľ)?"y?-^پq>B*?%?!bF|*><"?6澡۾?4?F?&I??3:?!Hh?~]28 =;'MC>t?]8#?-rT?$XDZ?O72-4} ???ϼ?Dr??蠨@;=Y?1T ?!x?- ?< n.?|X?CJ?JlC/7'?$ᾈ?J6?8I f??^뿍f{?ݓ־Oݽ3:_@9K=Xv?Tp?9@Q-?KڽN6?D9ScZm?{3ڡ?Qh:?MD޾ ?Y\?]ܾ5?A?bx?(??5eca? q徍O?"2y?!?/a?SHSP?L?H?=,?*0r?+0?D翾ZT?7׫jb?"1z?>6 4?8澀7n瘾,FzEP? ?M?'iA=? X?65 `F|FK&վY@R"? Fu˿ ˾4tNnv&Y8 ?%GľL?;,ך?4m?M 2?@D?J6z?)󦿡bt-?'h?LD&?-?BQ;?*?7꾰#Nm2>3?:B??%|؍)쾒\>?9?I4X?^.?%į#C?9xȾO^?D俠OB?3uAX?K<?^?E56V@f4?TJ?ZU?O>?~v?lоܝ)c.:?(XҾPl>[?CTG \TopgC\?"`9WE?Z"oQcX@澋MN ?^??59?S?>?@˾5[?8W?=+?H&꿎fP?R^Tcm| ?G?ӛD3¾tp&?@P?,? ?8OԾ̀??̾2"?HA?E’ta?F~?ʾ]־&㿞O?#{l}'zll\??F$UJ^־4=?o?(1?1cd?4v?@? ݮ  NCe6?<:?*@?$W꾰S4? P0pQÈ?[?$G?rȿ?b?/6?>?-C"< ??'{?;>AC?ޚO.|?"&?IkܾQ?BAؾB?=(??>ľOݾJ>̉?C?b?@3  ?5 Q?Cb>!D?<$?̾?/?'>r5HV^?Vw q~ѽW?/[Kb?(?\]Y1;D@B|Xj?8?) Tk ?NH龍pS3?7?Ol%?f?C*1h?44? | l?N'?/Ml4jYf??MM\?:#?RH#?c[F?FоBz?DUL%2lϾXb"T?)_?Pj?7%?RApNG_oNwMsnFN~?T5\4ԾZyr?R5q*?',[߿DP瞾[?%*?8ƾR,?@޾rlоbjZ]?(?J?c?Aa?1$BkC?4o?%nR?Z !?+ ?Z+FV?$)0ֿ8?-:ݿƮ>m>˲ѐ??,/?`{?PMdX>f?B)Ⱦ5{K=ᆴd>?nV?2J?/B]!IV?@WfKjN?[k<^?jz?,`?A?A?"\ZbBs?|ʀ??]?3 ž6PAž@C?M?Ҵh?Bf?l.?Ζ?G?6g!ݿi?Z? 8?KoXg)?'M~Gъ)6=?n 3ힼ^տ^?ÖK'@㾙ؿ??A+?^mP">՛P?H0?8i?G ?Ts^9m%H?:'E?%{T?8atixþ{R?13?bAоg_=?a?l2<:ľ?N,о̏?3 ?P?,Q`>?0q{*vUJuƾHQ9c)spz{I?,S俬>a?&H?0Ͼ7?P?c?=4?|&c2?1yM}'?c ?Smd4?(PCqV>$T{Ec̿zy4?O:?!?GW< )?1b>*o_e\E?8NקO?Hپ(u?>M?_YV?1d?O?3/?ҿ:?(?#??V8̶&?Uk?BZ,?VԽ??ܡ?0?+?ꈾ?? \|N ?)?@B??"J?1m?񇆽.?#r?.`?)L}#!X4wN?X#K m?4N(?7?િm@ T?r?5JoI ?#I2!?T־U??TqINfPj־iW3]?7ҮB֌u꿗LH?W?~T?HؾR@9 L?@?(?p?/PvIG?PR(`??1.Q.?BJs?2Pؾ0Ky?:e?.,|Վqľ?=^{~>~yyP?_?UI?$|'[0?3R0#?-}t0N?53}[3 ~ >+?]?u6?B)"7oS ??<$?E?F?@ھ??Y?%6'dP?!J?C$Gpఽ%sY?]t?H,?Fx?V ?PE?=ʿ6&7?=C?Tﻭ@K}{??;H?JE?cD ܿ?"þ4޾U?+=?+(?+ ?A`󪾤`?:Ye ᢾ) G?`mii?. w`Y?8ܖA?D4?F"׾K?4`T~-?H2n?䲩?Bk I7?"F?+1Exth?FN\s?=o,>5?8?QC@?v?#?*J?9sQ??.? ݾv?]?/澯}(?d?h8?M)?#澴G?#޿x?&ξ0a+Ⱦs?B8 ? Vr(ھ_?&L?>H>0?T?9m??ra?!e( PӐxh?(?/???$?X?J8iv?+E?PM?*& dgA=?à+l1a]`?!H?ދֿĹ?%6?C ?$֨?ST=w?cl>-| r?nl@?]&?~?W?&/?]!+=ۿW۾쾲I?-?8@?Rھ>^??۾Yiྦ>gc?5&?6&?JР?gD?F0C ?EepAw?CU?t@?A3??9>?JajecTp̌~?4!Ot?;Vt?F·>?2?Bf?!kX&?"Fƾ?a+?8K *k7?K?_)?W?+꿦ā?9?-JC"3NvƾG1꿾y^?!Q?5vb?%o,?ҿTgW4?Ы7*?̾5NvOY慿w`?)?6N?Y"?9P ?.'t?0@ZZ2˦۾R?V#wb? @@'0Â?"?? J,AiT?4v=\LXE?Q; ? ?+?\ä{y?)r~r?)Nx?) @OTᆱ:\*zf?+D??>@?4YE?8?;?$?hO$I8>k+? z?>~vp3x?:㢿S#n? *EA??Ŧ?9??H?&sa>).&?,'??'?- TL;@= ]B?2?mhc z!}'^)?=gپe?/[uX?Dz?Db?N?e+K=?]Կ%prYڹ??nӾF־nV} fD$?" L?'Wd?s`p#H\@;}?28?U*z0?/.$bx?1?OxNW?($>? > XC~0?ϾQ?|?8⾟PR(?=@?kVl7}4P+ڼٿ`s1R?HaJ\边'\>܎>]?s?:kǻ?zX^%?4?@>?,?=ξ̊о]E`?0`M?9?h?&$ui9+p˾5Ӿp'??5̸`A>&[?ѨϾ\?"Ʋ?"ё??0K?$T-;?>]nԿ? H??-h򷃾GW辳U(P\?\2禾kiѿOF?Z @9LLnY/?%:˾A?>̿Z?#i(B[,v??0|־m)196?K<ԾoTz7?]⾱Dv< ?-?gYPK?.>a$機?@FBܾY.0?S7 |Vp񘾂BF?Qxl"z?SQuz6?Q?"vX cQ?ɴ.L?/BD?ݛc:d?anT>S?27SI8οy?( ?9?ԮNi?.þ ?:F?蛰?!b#R-Q??6?7tl꾁qng?sd ??<~?20[ϟq?+T3? ;??辈e?~?(W?( (hO?/_?y@9 0D٢?3]?<?rМ?Jvt?/C4\.?6fʿ4^V.T Ǿ7U?1(?>(0?2'a?f?@s?=E ?Bh?S$?N࿔13Z?q/?(3?Hg?_/?GT?$~B'sڪ`阾ټ?W?2.?W ;l5bϬȿ?qbqՈa)O?Oΐ?HV?:g?8Q?2f?Ri;[rQ?MMxJu?G貾!ǾZ "lm x %?.%t?;?3JK3羝i?J_gb?8OؾV?<_ᾣ>!ĖhV?D 94?EtAؿǂs ?F½aZga&S@?.,?崾O444[m!_sLhƿ.7?-fxN:@X>֋?=k`Op^?^V?2־}M?(VX1+?+ ?K?Kʽ{żφX?)^Er,"?+kqg?>Ⱦ xw?2UPA?46Ͻc(Ü?侽᧾ ?PV?P1>W? r>>]~P?2?85?7_,[o@=%y$*`?'p| `?@}J?!?HJ꾃I@d޾P쾟=?J\J|*?<0z?[ :a?2х?'-?!K&Ծӝ?5ȿQV?g@?CKo?/Bz?Yʞc%%2?ɩH? 4?*';r:ʾ$?B\@O8?K3ńq>J:U?O˰辤 ?`ͺ?=#pE?L*?E(?~݇/J?(ξ_?@?"^R%𾯵_?7a ?'?줾`V*]p ?|O?ӏa]r?|[{?.Tvӿ?C$4?Lt7}??"}8IJ?Dy$n?"?#?ؓ⾑WF?u(`Jm?9?4`?+оK?E?-^?-@?ȑd?c?hԾ[?I'n`P{?d???3?*sտve{?,?&,4?-?A?3xK2i{??+2T?S␾G"?ʿ;H?D?8?ns24? ?&H>?J? aؾ皾nmLտþM경>?龐? >ꓶ?F \l?Ymw(2?@6??U?L-?<@rEb?C%_?`{h ??L8ܾ8q8o`?_ 辣x(?xi?VoK>?MQΰe(a ?KF^>xA? ;۾VA&B~a?M_쾽l>a?BQ?[%jɪu㾊̳5?b?#xt־p?2+RQ翚ɾzrY,p?"H5Ѿ:iB@?R?g྆o侫%Rq?뾕?5??0?3-@INѾX&heXd?;? ? IԿݿH|?%]ξb.jksH?%?YB?(?$֢?n侮?5<0`ړ>S?6Sm??F?/**hfP?HZz??I`jľys;?!LF@??0? GwW?D~ *?ྏZVE8~Vk?N'?Bz*ӎ? zA?1cT?>*?8t*?!wP?Ye? 3?>->glPq?96 ? }?}B˿X侦J*6?Fny񾳉<>㋣?f뾎6E,{=gzxZqR~TH`?b ?~?Sn =L +Ӿe6p0|ȉ ?Į+{,F,?CĿjc?LPҿ(o?\ؿuFk_>*?EY׾>Z_?LO'߾?J?c?Q9߾*` s?Qw?V]ξeL?PR?=o?z? v u4 $. <T槾 _Bќ^'?$B>?K}@??;?(@t?5D?=4P?Fh?5*ɘ-?/ #j??)俉H?N@- U?]U᏾'_?Fčރ?Jņ?@{?3*?z;?7{P?#П??4?-K?(ਿ]n}?9&\|?8R?%X;Ym?4y#?(ƾl>?#|Wrԧ̾$a͏?O˾_L?u\x`w?4hw?6| ?2BV )9>¿3?L<̾"2Q|?*?]a?B?$UNwJa??cȿ1ξD?Ny* ǿ<?U?) ܴ_꾉A?Z0?PϽ}ʿ⾝>?B?!?2Kel ( ۱?(9> %쾽3ܾ?"?BbJ?I[˾j$lg+T ž,[XP?7HORm+!?QGb5+?Aw@)I?JQ?2ߠ?BI?[ r?R?̄H$8?+?J?2sF?a?,'׾8;ῧ;?YP?,ʿs¾>?侍7?3о\>N?=`0Z?A0?H??@ ?5y?.$w 5?Yx` lD5vr2h?"j?/ѾBa{.?=@~ݴ?A ?;⾎{K?qK?C?MY??-?;T@?B\8ؾ_?Y?nj!is3Ǿ Qʾ8_? SL?.O?T?4f?0ELؾu֎?GT??4B\}?خ?~A7? zr??F~Ҿ?dqRƾh&?E[NcD?Hr(5ʾѿ?1R?h%ƾm6?95_˾?HBB=>0~q#ڽW2?=3)AH8"?q漿hI?5rCY0u?Ng4?;$a?a?;SH?"y ?̾M?-jInο?W?$+Ҿܿ?9?. ?3?$*?Y?A4N_Z?@>wi}?:?5?;3 ?Q0R?6оnf?!?9Jz?0ĿG?%w}_ξ?]亾 27?6v??}Z?@K?>1q`?]?1>)?ؒؿf?T ?$?޾_gFx?˾T ?=PÿԾz3Zڿ뾇x?/???/V?(D侬r?3 |?" ?F4?࿤9\X?$P6K|? $@h?F,0aI?*;̗= o7?K)?//GZ?0Isᅭ?V@6?5>Cྡྷ7n? "FO? _??j۾|&=?'>?>?>?$ ҋܾaP.p侑idz?Wz?Q?$ο4f?@,/?8?B%?`{`TNPaw,:6E?9$J@!޿Rfz?7񏾱lþGP?PZ?s7???N?v?w6 ?U?ʙ_?CL׾0?UpK j‘N?@?g%9c? ?xݾ?H]ǒ۾tܾ)䐾j? ??[Pn{>3?7f~?DMϿ?)|?+)?5y #ƾ5/-?B?[E?⌜LOu#?>>?)?ۿ}F? \RhEr?/T?⾞'?[$>%?V?W?u^l?G{쀾]G? @?{&ľ~2?"?ѿrx?+p?4Q? ,D8ɤ?JgRaX!5?*x6?5ǿD?5=K>4?* |u?Ⱦ ?-v?>, ?)ƿо?ʳJ!7?elꚾP!?Aͬ?Um?Ӛ?6?(( ?96s΂ <?;?;i:?BcB?RN@@al6 I[?,qm?MzV?8u?JR?>??.?Y1|?Y??LmUx'?q?W? ML&XA@پtS`?.>?Q;ɾNt?hb?X ?U*?3C_?*=X*cW?nM}@?-Mb?$#?M0?C~?7o"? rܾ”1?Ц?n??VUߵ? ?%c.?+P&.wz[? -V>,=O?ϣ!HԿタu4WI?q?+?'vZfn d?%P?]Ͼ?0P?C?V?A J?ü%?7?a:?Os(8?D4g7aӋؾu$*?$"lAPB@C1NuC6s?M⵾w 2? |@6'?*ܿ)#?:??˾ʾM+?*+?)>۾Z|w.a8s?+E??! vȆ? FL?ӌ㒾?0RZ?D՘y>0P?9&?Ut?8? w ?" Jӊ9t|o?Rt?'迫w??C?4[V+ f7?W?bQ~?,fdˬ8%,WXIC?T((?"R R,^꿗z ۓ]?+ r[,?-?TR?36>b?P?B?C?'?A2j_^?3է:u޾Z-TT̾/?8Q?,Ϋָh|?*7(H? eP4t4N>Pr? ƾP?n?C4?5zپfLȾ%wξbrڿ-?^ΐN?࠾i?fq؉ǿPF;?]㾍?D0ϻ֫sv?2?_?H}T?CW>0?0Xf?}a?F ?E̾]]^5l?S:?|Ѿd$B?5ֿ9?*j~e>T9l?D;?꒾>?_tުx"L@?JNھʾ?1h%?/=#xlMNk? 5b)mz??(X?e@8EC>X98ȳj? ھԪ?Ҿ Ծ*?-?Fp͗Z^?BO4\O?YdR( ?Q$i=׿;(_4L̾Q?MO?Y?:?hC?CUƾ z$?󶥿($#J?8Q#$?x. >?"j2?p?3R6?B'r?+ӘV?e`!Z@T??P׾7ִ?E{JɆ?<]j?:]D?Bp?2Ï?,^?_)$ɾI+Uq1(?6 !?5?d?O(= Hn;Pڿ(O?SF?ޛ꽒2&{S?#@Wڌ̾z?M ?ID;?:'?F=.>1hH?(5?5@;?<2?)W[??.w?~X?;?-,Ծ*&?+ &Ҿ?&?h*?v^yR?aS?`?!^潺LkD?U?89 ?P?@"I&?:w?SL ?8Q ̿J?ME[fоLٿռ`5 )*6p}?Y @ӾI+?&;Z}?MfnD?M~@i??޾9 }b^?;/8?ZR`^! 0xY?/K侜?*?2fh?*@?!6+?⾒ԾL|^?C?EsǑ 8_?j k`N?A٥?598?n/ofc2q|1ܾm?AJTY !9ˌ?S2꾉hF?-7ǀ? ?=?)j򿬫?2]5??U7 _>:qm?@fN?A?%?AZ?( P?stnf?Bվ( ?on?8j=x?z@:XH?g_5ȾR%?]¾l?1m?A^? .dX?F?Xa?0|?7҉`J?MR̾{vxZ?+DL2zOb>?0̿1Ko?VW0Q$yiVfc澌Spd7)$?`Q˿6+4yȽ][T꿗6N?X=ھ?8\@uAz?MF ?.ZXhF`?V̾W aq?#N ?UcRP>?2?2迅F?T<( 8%?9?GzVZH㌾?XBѽ@ ^uؾT>v?1U`?B~E8]I|#?N\?,?Pg?/6(~?N/o?>V0ƾ4Q-yLy?EU|^å?7?|?HD?H?&?0?? ?1w@?*ھr6?؏|?D{ 。6?3Ծ?ԅB ǂRc?='H?.L?LrÌrX nu*?+߉>g?!bL?''ͿKm{?twcoe4:-ȭ?'Ru?$5BA rL??&Z?8?<=?&C*أ$?z:?.xľL?>羒5ξwfd.?f嫿}?@?-b??}$h?IQ?#iW=.?\?:iqr?1Bf?;c?ޅ?Pҭ?? n^? X0EC??oȿ`n)HO^O5,?d"F?H?oL?vlgX.yNO?3 Dq?1?e+g?SٮGASB?+?Y?0f>ދv&|vѬ?C쾀俠f? #$`>?H?Ci?DDj??` 뽎y?@\Cv@?s#?H?$p?4 ?>sZ?IR@IW?DnB?HϷ뤿yh?Q?`80y}ÿ& y7?}^оI|oB?Ufn??/?"ZF Ͼ!p:> 3x +;?:?@j-˾q?~?`?4Fb?p>4'?BNֿ?'ְ?G?25.?)?0"R?'?.о1>G? ؿ+?89?"A\C>B@2=?0I?4\?  k4i?>ā0?0)I??}¹?./*DԕU?ԂZ>|>MX[?깾?;񿉤1,? ſa+?!$&(??܍{۱fH?5q?'^?Y~?Q-I2!`? n?28@Wѿnb8?c?$*8-ϼߵ?W ?; ^3?t ?tE*?ak?xA?LTF6?2qf ھ->?AOΊ?NSEj?]A?[W?gH@U|?@ u?XH7:?7?K:z:?L?7}{=z?=.m2?WJBǾ(?2?NοxCR%D6(XQj?؜&?VAQ?A"`F$?5俘P?Zג T g?T/e2?J⨾"BR@h֐ v- D?6Z(?;'Z?#?Dx}uC?Cʾ!???~q{?.hD|=rbM?M 6Kho?.x?[bt? ?1DSJT[?VFGH?9Ǎ?a?; O?:?3[?HZ\/?9X?)l6;ľ]Bx?Tq??B? yrr,?G |tʾytuѾD|?𽿌DŽ,|k?م?R?azP_࿟:WBbd?E ?l$T?-d?VU?M=?R+?L?g?FlԾb?,|?.L*n ?-_ pR^?7'?kq cUbrn~?1+ݽo?/ u>j?e?,WMmӾye?icolq>?AGP?8;Zk{¾"%X?6WԾ] ?Wƾr*C7?˴<0?N<@>J7g?N0MܾppT2۾?0ҋq?6fqD?C"?9ſ?Ya6*?9K"kD3,?A'?*m?H?(Ef?8 ?A??J :.?.Y'?BU|' ?2#?L?aA7.LCb,AI%?i2q?;țѾVf?*y6c?(>,zb]?L??ր:Ѿ=L?N'Z?t(i6>@9P>sr?\+?AKBǝV?lK?Ljc?]YPo t?@dn\?ܴ,>wU?F-?I\/@ry3@ IYa\_{׾z;c?,dfW㾡O?nw?St?]?b?_R>*h`?"DM0')?/ҾҊ8O࿣u?]=plcDu 8˾s>4H?-/p\'j?<վiM.ḾLÞ>׽ɿp8˾a?>T4ABPR?RX?(D~?W4ht%S?5TG0>gz?L8Qx?4T?5/ef?Bw=྘ JG_T%?/?A?T(;ga6?6W?2?5}񓿬e?H'ミh 2#? -?5!?:h|¾n_JPb>?_YBq?7M?(;cn$?Dϸ?&#蕾"?#վ ?Ͷ?P7 ~>XѵvZ?$޾hJC?4Cyx ?6x ?/ߌ?=)t?ֶ?о6vZ?K?JTCS??{b?1BU\vnj^ T'EM/΅ƿ?M?@Y?5S?Kي{n6˽G?W8?>,As[TH#T?[Ψj?% ?Q(?F| 1᫾1if,?P2?Kv?Me d?ؗ%H?қ~B<ϴ?Hyr#芾uaww?DWB)о7>~Rz>aξ?E,ؾ&j$?B#i?9a^ ? |P?Zn?9Gs~E ?3s?Ye?V^쾗?r;$?El?޿徆??Ff??d?G 8Il?2{p4E:?,-y?CA"]?5w?Do?UB%RA聾8v?NxӠ ɽ<#w^!?Zھ?Bʛ?W??Q?\?6}fK=?J?DЙ9 ?,(B?;)\Nk잾j[p?յCʾ)Sh?s?[ޱ>iM({@9>ײ?$aE{+J?.3?H>{x?^.X?B?G 꾘O?&j4l?JL?$S׾Ծ?p^?2Gg3r/?TS?H+F?4T?,OѾ ( D ?rY?:ǾMT9ľ̿B?+tn?(׽َI琿B<?ES"f?'C?9 ?{E?7u?cGn?8)^@v?hۿ ?[8†?7?O?7ZSf@R?W. Rƾξ.{Ի),qz 迦 &??C??ƿ~\/?=h?hĄ'?Rk?LV GG 6yĥ_%b㦾c^ 6??bo8?7?xYk0nX/lR?_ZpICmyZp6?|2*? !g?A?O:g,dxhۿ+?P{uj́(9? ?75I?nE ʾ3~?Q?K?&ݾ뛚]N{M?DPrݤ|X%(ܾ!OXA[?L?Vտid?k*-?)P?Nf@Dp:CC@3~?.?4?a~$3 ?XeJ>T?8?oHRt~y?o1=`?BT;\hu s?T׾:mu?Y֊?:4?\P~?,ϾZ?\.?Ҿ!9ƟQ<-⾯a#?6ԔrJ?5[U<-MS¾2F ? saX?A^(x9܁?߱X?K\ž?R@^i\?G?AJ/MFࢿAF?e"VwD@^pēƿwuо|⾱yt?A濠g|Ҿ@?'Lj?a@?L'?"y<ϧ3D? 3k4?& s/f]4d:_?/ni6?RB?a?18"ل?6?77[[?fݿe>?Kΰ?<ڨf?!¿.r*?B&?JETc"?:g?97?̾x)g?X|?J8,?2ت9?>y?q?`{6\N&nn?"f21_9O?:i?80mZK?4q?D?n¾P$?.?7M?ƹ?M?⾡G=<}?F@?L<о\sLv}Z?i?ҎꖾA?m3VΓ|}U?F#R?O`}?dK꾰c}?:?2q??ž?4YA?!, ־¾8?Sо5*4?@SNJx;?);?;Ȫ+?˯W#q8?3?C:)plM?P꾓Z?Z]?bn?6*[?_|R?9ޘ?N?Yo?,:YS?69@Kmh(L?./2(n&r?Z ?8?8F??%]?Ug?]?5cl?M >?z ?;?>~ ?3˾q7?z(Ⱦe?BR!B?R\F?: Ip>fBiK|]оM> ?'?4ؾ^? sIڿ?uf˪g5;wj$?:p ?:(t\?4l|mqbZ ?tuk>ƾ??@>? ?A]ᾜ'?#,6}7ott8X?$"Q< Y,\ ?Bذ?^biƾz5#W??:b;vX?X}@,~?2Su>I?#?#F8?SW?@ߦ?7Vm?J UzsľNL?*f?඾h?8Rپɾz侘z? cEPR?$:?]6gyS~g徎b-?'?;ﰾ{Zp?>8*Ab?Do~ƾ' ?ih?',?-X?WIY??;j?[f9bљ?W?+?1zi?% ?I澥 \?;yؾ^辿?= s?Ve>:?}?<GT?b>KA C͎@g( ?Z rZvz?f[T.Q?3tshF0?Gg,e̿?Wj<9%rOZX?17?=r?+8P?bN`?ޤ.?B -_?m}ھ>uj}l?@Z?R2P:!ھVԙ?'9`>?>u?M?2%yz???Z+*Rm[`dLR׾ܾ?+m?/l?@?FEHT!?2;>ɮ?K+oj3?X?悬 ?=?vz>D澟,i@m`J?JԿ {?TM?<ڢgL̾&9n7JY ?C)h?0Z,1fξeƾ6FM?#?Je¾=?P??CU࿝&|,?Umd?:T?Uy;1Ü?1.?};V@ÐX?!﷾M!8?R;j%?I! :S?,[lqp>?;?U`>HT?0?W?,h?hν8rF{+z?V1?Hv.0z?tz?Q=QUpN?k`V?6dA7?UEH?=Tv?48?*Ⱦcy!?*7E?)Gcۖ?Gjx?O侸?sx?Y|@(c97?9?UI?:V-?(m"?BiZ+7.ĿLW?4?9i6=󤾖?VW\X/Ҿ`?;r?n'}>K-~?ށ^?Zeؾ>ڴ݋쾿:V辔~?aZƾ2pƾ"?R@0Gz?nϾA.V?8|b??T>6?,)?!ې?!t8>4y i#?G?2z/:\v"?T3\mu?IFg0?Q6/?4)h?cJ"쾃˾D>>mľpC|8??'6?[¾]ɌF?ѹ?P?Bŋ?:.?R; ?<?i?/A(uBY@ +Q?NR?<O>ˡ?5: ? ?Z"$?2n{ʾ@?/ZWyg?վd6?'/~?S??|n?.U/?])%]N?d?:x׋?AW'Jv$4e,'?;\?1F#⁾v?4Fmb-ھm?6>?.L?3-1?ξ?e?9`R'9jt\o?-%~?1KQZN2\Fց?>G?.Lh?=!:wH(P ?9Z?.?Qz?LWP?6?SLtDʾT?@xA'?V?@S?QZv!@:D;u?Ou?*"r?ϓ\uþL?D?Z/ԾLJ@~?4H??G?7?N#.x?GOg1?nҾ˾_ҿ?%qD{ )'-?KP>v>^0ʮ?"??aBヤ,V4CIƫ?վ]擔п?#V bKK? ľ`ƾ&B8@?6v`?4A)?6``꿜[߾ ?824Gb9b??.#pqޫľ?X=*>Vmf(Jv¾;bNZI+Iur߾Df ž ?7?6ps??u:̾~:)?EY?7^?˨?0r?8\-D?..?Xg>݀?D]r YZ}(;?V羬Ԧ?&6\?2վI0? cT?2␾~spo?G1v%?+ P?ZZվ'n>"BR*=֛x? Ӿ "?)?;Z?H݊?7E[?'[1?D?`?I?^_,~Ɂf\+?gy?,I?N>qؾ[?P?)ҿ@{dOР?6ᄚ,V򾐊E/?6\XԾFh ?Cؘ?(t|?dQj ?9 >?AR|FyؾK?&x?Ci¿.n>4?-q~s?@oe?3?楾Nz?ˋY?.\_?0?6ݰdcM̤iʙ_ڿ?>2?L#]  ?Nwھ8gW?Ғø?̾c>(O?Mg?3-?]B?EIN?U*x?b+?`g?D)\) ?D?\ҾT'>N?,?=2^?D?ҿѵg׾SWh&hN?;~:?:"?L>b?Zݱ,abZGD> \ܾH:?T??*ѿN?B?9E 褾W\?Z?G*?-qM?4:?.ſyi?@|o$?5?H?\8?R_ ?aba?{?I?E꡾$?C`{??pϾ*( 1vrW3?Et(Z!f?p^R?>U+?F$gڍ"?_软q뾼/Y2侑VRmza^?= Bj?^,{??7$?.G? sOտ~ Zf~پq?5Pkc]࿃ke{9?s־Jd̾ڐ?hW@0@ϾI>q˾tj? Q?@ľ.-?=ZG?QUR?!(ھ?DkZ?a?&*wr8a??AGLk?Bx,"Q5n?C)?L-p?l?N 2`ϡH?>R?5r?&u&R4?5a'@?I&?`ƀh0:xbGB?/Ƹ ?(@VU:H?3݀?=z?*_?-{?Gfyu^ce'|O~hY!N?﴾!?P#??󿖱>ӣҾ ?=ȿI ?@ؾ2T?=Tؾ?M?o@"o?^CԾ?1̾ʓ?EG ?ߕצ?xhU?sswa@pHBA6?B+L??ľ/Pg?*x?_t?&9g?8C;þUf](vemL?3V?'?4R࠾EI7__'?/?nF=?xиۍ?CZԾ\6ha@nl?co_OIȽ^>T?aA⾁0?L_I%?]d>?Tᅵ?/r g#?>ZzS1?BF?6d?]g?:nU:?9DFp%.?-mӶ< >ྔSwmB ?>> ?!5پ?6.׾ Bv?)H>?׾O侭ԘyI?xj?-0|?b/?8J p.?=ԑ'O῎񂾤ڿ@?`X?[ȿ3'zVӾ\{Z<@BE ?W>2?ܞy?LZ=x@ ?JC>ھ꼾Oo?(v?5@?9?Glܾ;?/5c?N򾠴=ȾG|?Я?$e_l@?V>M?MC???U^^iY?V˾| L:-?Oק?::L6`ĿţT,(??d~?;ӓ?2?w?<Ս?4⾰ ?WZ_վ=UT/cn?6s>>4;7?=pX?, S<@$Ӏ?G@m?ݑ?P޾\z?-eȾ5n?Tֿ(3W&̾ n*?)4BQM꿠]H;?(w?C&)?A?0_>"Lr`s?$0?M>>Dƾl9_?2YhKAzl\ Lr'5|9?G?Iء?D? ;?9rξȾuz?) ??3ha?0оN?^yR? ?Į6|C?EP? ?Fm|?Z񺾋?S(?H?=`Vp8?;?02^?5`Z֭̚퍡iT{(]?چ?[?֤?cz?4~yY?WZ]??5{? &OdE?1+yR~?G?[B3?\!F?:~&⿩Ŵ?Nw{t㾒?VX6#\j?+N72?:r?NMro?#i?9hƾ4Й?6?K?,E?(j׾ 2>d?5?^:~R?ٵ&W.ܾB,ҾX_1??8;=I ˾ >?G̿ XjAh~7g?I*K?F>?. ?] ?f?0]~?R 俖s=,?yp :O?  Yʿ&?&kRMJ?F0?# ??迫Ta D(?]Q¾T>W?=ٿ]&7fF?B?꾒 ??.t?TSZlZd?.4?Fɰ? ?]ܿ;HB?0s?Hb?5?G-?Et9f3?+͉<6y`LP?@?@?]S ?Lk?A}QB '0k^ʾC?&徿??"l]~?Nƿ6?BjI?GN ?ENjz[?E h?U乾a(?<ԉ>o[֩?>??I?CZGP޿v0?$?)?jMꀿs?YSH?/ ?H(4^?,3~Ҿ`?&>>?v?\KC{&O?JWr?Y?%WC`?!NpRJ?3c?G:?B+Z?8 K?PW"Ii?/?Kg@.[T5>Lj޾wޢ8?X?r@?F0>_N?UR~e+?7!?5={;_9?A?BӾ;&?:b'?A\,0侎r"N7}z*0Z??a.?HHm?-3? Hhw侗* Aӿ澶0?E0?U?Kj>t&>^2?Mr?*Nؾ¢7{?:EbľәuHE?61?yĿ?,n>}PNaP?2rK ?@dq~?%Ѵf?g`.?܆>>yb?A?_&?9??H~{ nb?.׾}Ԓ ?1X?+D2*odmg9u{hK?;"ϾfT?5,>I?TAuWSb2ch?OV?ԢGܴ.C?]k??k>\Ff&?EenN־8?x,>澽?:XS?M?3M?Ex?.,ASԕ?7=%?Fhh% O(?&(Vs'&?8"btn?"Ϸ'J?-b>?>eOI=?7?Dg!vWKS>'?M^ ?/>?Jcnr>D@?3_N?)H ?tHվ=?7 ?6vM?XW3Bb5?[=?PkmP?1DHtv%P׾̘L?2 _1cP ? s?y?x&?P<?!?X?JԿ!?"0x?-cL?Tr?2Z94{?Dl?/? g@c2>?*?/|hR?(M?Ƞf?A-j= *_?;P?M.?G<8o?辧M[?Tت?O?ܾ?1z?5ˊ?2?N9"?F_*5??+2/Mz}v?Xu?SȚ?I28?GpHK=н!>?/x1^?'b̾C?B=9ڶ`x,h?5?A1 ?9ᅵ{?3?%->e9?IT¾vԾ&~?O?J?A mBc>?=޾jS~?5n3@3:-F"z?]$Vuh?O뿦۾S0?:?ES?"e;?w־qþoKk辤?Ce?(0>%>?7cteпs?^n?j?oZA?E?SRN>?RSݾ#>|~?>+3Q4z 㼾ܝRv?.w0h?K??n:?eqvL|?9;?9.~?u(zc:PM6?N1ž&?\?A?#NcD<?(KxQVܾa'?>Sf?GdH?A]{v,lǾwF9 D?T?[d-ؓ?$?#O?r? i?-5lVaa\|?0"?0?NN|QR?'2??ھ7u?5$?"?$?DQ?%7?:dx"꿞Z?iwоT?;R7+?oMx]?3V?Jj?<| ?>6?q?,?e?&?*W?"?+I*J^&?i$?}p?ru=ҿb+%+?zпk?:%?;UR?"־R|wi2f1T?$P?JbM?9?7,?7?X? n?_F&k0?o?\Vhr8/?㏫GϾdIA?U:?hB6q? C!?R1?nu?T?%48-?[ʌxbcy?(.?jƾ :Q?V?Q?6*꾿|?CZ ?Af?JBS?sF??ʾB? ?J-k?7Ügjl?g?/&?<:ھV?š?D?Ⱦ??c?R2?1МTX,*?gާ?0?=)*b<?&>?3 VeZ?E>Uھ2*!B*?@B?I=?l??WXv?_m]?Js?+?Ara~о\? |l^Ts?MbJ"!g?Tz?Bwʨ?E l?p޿ 6ѣ?l?&I?5?5L?Pg忣&l?O0^?If??*]͚?(?2̹wa?K:?U >d?0:-4?-v?3[?q?tn??8'&ln?SGk{xPþ4?9㾁%Tw"H0mQ?>j?;d7?OQr|(]U?,Θ?!{gyw>og7؉X?EiB˵ o?Z_K3?BQKa?C(οkʚԇE?HMѿ`?J?A)?5;qH?=Iw?^?GsHξցv'= B>IB?ygtwF?%`V?LHr?>?R^?ټ<z?* ϚxT?D?Cc"?.M?ھ?<0vZ?H鿠Bn־ͮE?* @?]l?sZоsͳ?C7?C:S?@_?>>?H.꾕6࿪>z?1S?6?>澃Y?!?.Z?L?5?‰xi앾\?" tH j6L* ?5 ?,ܾvV@*B?3f?? 1ڿN?DZ?%Yu?5+?G©?d b?M;gɿ*O5b?*$r%Ͼ̭?n3[̦?1_#?D#?JwzGs?QHN?-þ?Ncľ^{?,Ծ:lFy?.?rʾO2/?;*7?þ2??:w޾&"L\h>[? ܤ:Y??0$2l9|vE?*?4>@?lh?E|Wsf?.r?vX?6r?` ;t?$?q?? qD˘|~@?kS?$m#メ?=ܹ?PMJB7X?K?,ܿ?:?@<ӄP=?;Yq?B课W.4 ׾t?D?ʾ6Gxwghž OhzE7EX?;Yg-O?2ܿm!? ̿|>nXyx?4*?#0?4?)f?ZLt?@6?ɾl~?zW?* klQٻ󿢐?fC;_p?ߦqW?*nZnǿD?- `A'?8>?B?_?P~?DVNoˀ?:?<=W?iD?+l]?Q뾈?WH?]du@re4?Ai?e?:,0@_?zr?'U k}*aH?d?*=?S`*?;?^?@S> ?3־&>Z핿?G.$DnH >7g?% ?/8?<=?H22/(?0?:K?1ƻ ?GyQ4($?%L>?fVy?"?Rl?+ZD?UbWx?.KLF?Ko3V?/e_ ?30|zž?N?FU?2&m?L?>1?+1+t?$">齾LW?'t{?1F߾ss?r?ن?CJG?3tž˩kR?ZꜾL{V?,`\H?2žktXi)x?W\>VV?͹濧=?7f$? -?R@?L?E`k? -ń6>4?<>?"r?-Hٿgtyr?;nؽR?Fk5¿?\Ц=6?:? aj{?2j?)? zb?B%4-+/MHCހQ7?`4 ?7j?w?0j?5u0~h?C?@?HMyMz?e 2m?M?l#?K,?lῠ?"?+?^m%?<ཾ;6S?=삾mƖn>VwA`.9?u9 !?93xܾL{4f}z }ZL63 d!b?R~CǐzDo?@'?+6l?dҾu?/b>eq?{_ek?$ӟ?UF俜&?*P?RĜ\:?=Dz0^?.rF?͋?a]俤L]hH@?֕n?9?=!? ?! ҿξ樿75%Ns2 }S??Az?[ ܾ=b?BB?H6?-rd?A@;`?˾?5 ,iO\񭾈{?n?3W?:1~o?]FJnR?M?4^?H7Њmx~?RU?ۏZ?H<2ѧ? D?@ Yn?~???`Z?[l?k?dޒ?!:?ʾB?2%Z?2? c?$\$\?ؾq‾(.?<]N?1n濥>?/:fk$?IH?4FtܿdP:aӿ?-MeK×h?,?l:2y?]qI0m,>:'i ģPt?#=??sB@4۪뾖c>]۾Eo?OB?4*Ծ?Ƌm T.X6ҾsGv᱿z㾪br?)*J*?ғ?8cbh?@D?K=n 3@? oCn&lQJտ8c@԰?/M?9?]ȾSҾ{~o|?:)?%y?=lk?F-??5ٽ`??Y?"?26. ?YhH7]Ծ2MWj@09 F?7BJ?LDҾ!?R(?Oݿпľ~bʾ/.b?[!?_6?#&U?4ľFʾl@k?I0p?=9#?A߾38? <̖?H&Iþ?E`T?J|ڌ?`&?\2s?NR?#}h4uJip?F.xdĺB?QٔՐ?gڹ5Xa?3Z?f?:״#A辺?&0?=s?\?`@%\AZޚBfr@-?񨿐N8% 牾|?>?]D%ƿ=?Kȷ?BS'LY!ݾ?.gQ}?-𾾄~2GL?&?@"7ͮD?=riUse?)|j?.\u%l߅?.?ò?)~???Ҍ?FC?;(d}]5L?%@?@־?&T?:;:k?<Ǝ?P)@=B@?={?Qg!d)?c2H(ѿ*D?iי?Y"0??#?NP:q>$с)&[?]ϕF?4Od? Z5?9?7q2?UB~6?P#O?>t?5H?9?Z?+ql ?,?=?;? ??#3?:?/M0@i/?&%I8%>?R/?7'?=Tpn?$pƿ6k?ZWS@-a?6 ?2܉]ˈ>Τ6N?Cܩ Lo߾Ɨj?>1?Tb?WF?&͉?Gj _\R?$eI<:?)]YuJv~ܾ?1{?)Dֿ?az?0]=`?澛п=?I?%Q?ٶ~?`!?2վĕ?55F?o} ?C?Lm?U?(?8z!;?;% 'D,Y6ƿ?2L?䛀vb>J+?&ξRzK %?.*!?=??|70?㾛 ?۾_]&po?Ռ:ڦ@ԋ?Oi>;>靾#ID?"A'ADz(?3Jc%jLTln?#e޿N?DR5?8⾗h b?D*<$??H.t?X0 ??b?/O?J8?<@; (we>&?1b>X?\?n?*ȶa@ @"L[?o"#c?@v<1?9>37'??Dྦྷcc޻?K/?(%?6ʾ4T?2nxDٽT?F?[bdμGHK?I׽9?=J:?IzT?A(8;←??.Mr?o?ReM?@̾Kz@?7, B3?1G?ӡ?-n?ʇ cm̾?G@/\?$?1D[y, U)?B?/7$?:м8?5p?ݍ޾|?Mu@?/u@,.J?Z'?;V? ߸?? > Vf5 QrNuVc>}t?`jU*?3=?0V?#l?._>r? }?PX?KH?ʎw^?0"|G?ŏоھ3Z?@S@,/Dx+-g?Ab?8? ?Bi?&ھv-cDat?Weɾ09꾽C=?M?+z?_?1߾W.F.$>վt~qx ?B±hu}>?%H9b?(}?IUfKL?e*?\=Vx:?P`޾6J:<?'?% ?Y!](??Ft0O !?:i0?qx[.tH?(ס?8R?ľ?:Rf?M?;Eɘ&?PC܈p?RjkϘ?:(x?A'W?8?>9[??F?-` ?-v?';쾥TDz?6eM]?*ڨ}?7J?C??*v@NGWUN@- Bh&|?-w?"?7|b.Q:׾d8?:t?4Z?H >ddP!>~^)d+пMq^辐?1Out?EԽs+?,.N??rپvoc78WLпe|?H}JwᄒҾ+v3}?쿩쾇Q?Ŵ_оAp[>򯾏@# Hz6ݾ`$wT쿎P?q?6}->8A+A%C?ξtiep?Rj?7?>qMH?@Z?;x?/T[?ƾN?RH?C~y?JzǾ&t@A(t?.?W3 4?U?ٌ?6Ixm?HL3zh?A[atm3yF?Lؐ?%?&ھ=Dʚ?h?Ri4?6jľ7G.iYjj#?C?6澷:Z7?D?YU??48V?iBL'??J8&MپP?DPU{?A4mk־ӾS㾔7ニZ?,_ÿNbSR?ľ;EH2Yk^XHľT?;C/=ݾb?74'Yžf;?6+ ‚?9 $ ?:j5?A?(qٶȲ?G?*& ?2;⿝?7>?N^?7/߾@h?Ә?Fd? $V?F#?܊?9K?0̾.1l@`ۙl@v?ׄ2(ɸt۾R#ȫϠ?t2?0?F>ɿ73R?F"?R;?I.z>1显N,O?L ?>?P?({/P[ |?-~'?M>=fk线bQVr?EH?I@ɾρҾYY@<~,???ܾf-?\~5H?P@YҾM?_iZwt`hr:?< z)?d}>ʾUJfQ㾚.|>AgAZ5.?F0]dX\~?+?3h?*8?=wIW:u}?9iD?=4?c^o;]?%?2@ @j>?ZYa?K;? rվ`%ye?@Do޽??4L?:eX?1\L?T#?@4-?:P;V?xKƾC? p?Kھ7 ?I6?Pö?134?PoK?-%ܿ־?%@?8J Mh?MR 侜?-R:?>;?.澔?ڿ,?I x p_?4E\\P?O~?gDš?-?,Pm?m&ׯ ?D#?3a?N[6fľK@f^9A>$N? q)L.?1\?.?3E3?0D>?M4?:wm$?c`"?Ux?F?N? tJƮd?Rr?/?6J?ܾl&?6@&?Q? '~?Ef?F#F;r?U@h+?Q?I1D?8{`?O?1T*P,??XNNvpoD?2.p?_ـ?9G?6ʀ?)B?'QuԾL?"vc꾯 ?gQ"?7՝?P?0f? 3p?h H?H"?(?!B7wT?ϑ!Ajw?;q" ?$jҿ9?Dqtр?/%?4w.:8?`[?>?wI?*tcr?$.9?C/1?ga?Nʾ C ?6)?>[&pľ_Q֢ؖ`?AͲ澶x`P?^?Lr?ذv ??, 4W?HUO?3&ξoRx'W?: ?;v;¾??Zi[?8L|qŝ?S;?3l?#?%,п5e?B`?J&!(?<'M?O%?SK?EvlM5?ض<+RnTR?B??)Ú m2?HD0q?,ƾYX?@cھ#?/HU@?.?DlEؾH;$v:?*B?Ǿƾ*d?!˾?2??O ?rٓ>l?+3:?-?S?V?+꾟ݤ?!?:UuT?)5?Uv ?#?C?L㸾?' !(Ҿw?#HA?%l"N7?G?-dZ@J?A(Z7Lpb?' (alt>E"Ov? f>p?6O?B2>N?:Kݦs?X濘?+2?W8?,q?9K?J+Z?OU?5w?ȓKt̾R?$?:(?Mf?4?Jz;#2?Y^迚Gu/*???*dr??0,*>՛'H?m?."f?/3?Ԝ?J?qоWP?a?(~{v#2?+?L׃u8 ?my?"oôI?CGX= S5Ŀ!?ֿ}?t!?4M?ʾ{ݾl?-aLJ5?$O?C?7{ ~?:?+Ҿhr?$X?z۾/yX?&?-l?%&6??A?%hcw[?.A?ѵv?1X^e_bE,>l ?D[?Ad(P~rl|QF?@DOH%?ZK/??)*?A }Rk?F?RS)?!w?M3Ҿ?3۾FjX?ߛ:P>0?Dj?͉? ?(i*?+?DѾPؽθľ N?پϾ ?njcHU`"iwVn2#꾝&?=+c@྇RӾp?4H?3J?:u.8??v<о=?.W`NH[۾d$~?^| ?>Z?0?Kuɻ-?L΄?=zAF?AQ1?*ӿ?|d*4[4̿2d |?#!??'?A㔾V|?9!wU(ue?3T??e?Fl{?,u̾^y??C ?-|?)?72uھ_?0E}{?=jW?*+?2!0ӐREJ=3?-?MD/:DP?`п<ւO?-P?hɵ?#iɸ2ANy?%$?DdMF%?*u?%L&?~qtsʾž4%?%{?H?:?O ?9?4yM?&u `?G@)k??-?9D&Lǿ?&⿢c?VJx?»?Kg\fӾ!yǾk``@s?AV.v??'辯l?U 8Hƌ?3u?,澮cMY*lC?M X?RB?<=?:?`??\pAT??S)3?,avvU<-?3?w@,迦q#?%o?]3?[=ݾ}t4? 5?XP?B J?;C?">?5Ӫ?ȺsT??ݍ[?4 ?!>?5Y9? ?;l{i30?:d?$r?mH!/'?-ۘbd?ߢ?C?? ?-:?B .B?7nlT?١Ob?FYC?4^Ru$kZ?eGRa]s`ѿ@?N;N?L⾽¾?d?܈?%ظmi?<=; yO hG?Cz?;=3O1ľf?&MS2?@ξ=ʴ?^?]!Bj>n3?+1?6+< U?m>#пsr,w?I?+kO?Ylo?9=WT8T8)?K ?U:>?ݬz?N-A?2\3F@v?K(f־Gb?HVƿ?$I?:NΨ?%?6?(?3?'iT+F?Ab?2??=^(?`??J? ?I@ R?-?(|^Y?: VF?/@?Zr?F_Pܜ?(V?5?I_B,?o?CD?jd?4ؾI0ִ?s@PM?Tk^?+-ξMӤo Й`B?3Ogپ%? )zT\?;6,?@-?ʞ?5Ge?1׫k迟p>V?Q%}?(^28`mN?-)?dt?FM?%^?'{>gM>?/2?]7?@m^???.bS?*9?? 6y w? ҾMv?,~oy?36ھL?>€??I?B?Lؾs?U(򾑋R?GۭB) 0p??Lsa'?Ae?H턾[^A?>U? Vt?M"Ѿz̤t =?Je?u?I挾 ?Jp` md^?Iw?s??5 ^S@d(?Bn 0(?ڡ"=K'?Pƾ?;ޗ?4d?|݇sQC\ƾW+>GN>?U/?Aw?Bnas€?-_n?)?B.뾉j,? }?]lTԿ/gLV:)3ͿLjY[ɾs ?6em_?2I/!?K?PZ?&?3T(?.x?6S?AlZ?ʾ?Lhf!?U?%վ?E!5TĔͽvͣ?He.Ӟ?? ?c\?YW4ƾi%?5 ?/xÝLa@꾙3d>a??1!4z?ڏ{H?RL?y?6?%4`?@v??8??$?-d?2R8>?:0?*u?1R?]?3g[ƾ/4?+޿j?ә?@U/S !?Ŀ?Z???򻿚?K iM?cie 3 | Hžt {ƾYlsk̹[e=?;׉ Z?IrEh?IO?YfC&um?W3?O?q?,o)&?9?G?Vf?2?`+?9d?2hZm?B("?Pzn?)g/iR?1:??wھ?TZ~{tJ&Q 쾰Rc?-dc?h?I??1:?%|K?7˾Ps_A<9$N??+?2H?>?*};$?q*hR ?Ѿchč?:A)+̫?,?;.+?C?A?Wu4?&dt࿭HZ?6?V>t>?y1?.?l8PD?<l(.>W`?RU??{B?Ci~?OX?@G侚?F ,w?3l?)vr?hE?) ?;AO?.B?5^7? ?;-?T=?k7 W?F?-)/׼ ?.oǾ%ѐ?' '?DV?:Yv?2L4]?/ c?9 þdn[;g?'<?S?=?3?@o~?<>w{nt e5?՟??C?II?O??Lv&P[蘾G;?;Ru?C?JB?uwF?5?LESaTo?TC[?8T?^?:;u?B#?WS/>?9A?Ԟ}^?5?&ӛmD?7K5?N꾿a2h5?W2?Ⱦc2?-(j?2?*CjXK8› &?j?5?C?G?N? r?k?4jBE?Jp?DǾ?D:GlJQ?C? d?=5u?.?,k?MfW?*a?NɄ :"?bd+?I5U?O÷?5?Dޚ ?Ю>玿;_?&Ls?2{x?B=QFb?4*?8Ma?88`?=?DE>澫̾$?HOL?O3?CG?0t8?R/۴?Ae]x[?C⾕?I?763 ܿ92?7ϰտ? ?/?J9!?-(u?Vz?0|?W?_?:>RVKUF84?008*b?s?+ƙD???@`?+価e&2?& ?@by+C@*"+ ?F&?J?B?4.$ssCI?Ӑ`.:ϋDB?؎?/^>lhI?X(u?$Z'I? ^?&?@ ƕ?3[?8c? *𾜓h?"e>R?*srg?5ξd6?BS4>?3&xƾ(?? ??=?0$?3b$A ?=o?8V:YH?ZO:8? MQ뿠Wwkg?NcR?[b?bJ?>?o&?Kx?Vp>e?'\D?? &bQ>?%>-?7{??7X?-;$??Ge7?C?)?~$`2w??γ*# t?9n?PȺ<`>?C3D?=A?+;㾚Vrп[0 5jxZQ&?9Y?IWF>(M,?$gex?4@<XBf?/v־? ?!w?ANܾENR\-?=T,n?4پq?\f$?G8w?V˱?G̳?6^?" ?K-Z_?5 ?Z?%>jV?JZ'?>0? z?#/.?ЖC _@jѾBb-}?"V?o Y:y??ճ<@$~?-l?O?¢?DrL?FL?B:0Ͽ^?9b?(,Jvz]?¾%?=p?;?L$oҽm:k??^?,/?? {?(gVE?W?)g鴾Wux?l?E?f?A?+???Bٿ#CB?)Y?-?ߟ|N?=3 ?4K?1Xc?322BZ?Knd??nL?PhHQۣ?R?11?_/?En@YBr?@(r=f"پW?@Ҿ;?4?l?617p?Zgq?C?(b?{? Q&krg?.w?窎@'aC?lz??j, R?@ ?An=@?"?Լ?۾!?U?-l?쿮:Ⱦߋ?3L?V?0߾i$L(?=?!;ֹ澤?<?$b??[Ҿ?Pkz$fྩ }X@?'Ŷ4hH>ɬӾ]pO?<*?H~qBL]??վӾX&? )?$Z?Tgj?6ƉϾq*,7ܽ:Ԙ?vay־|\¾y*KX?(,?8yn~?,E??Zƾ[2V?LR?/¾8?A?C|?>%+?S[Po ?%w?$"CVd+")?*=yj-,wֽb>?[??Rr?4,t+?'Ҿ^?30v\?>d?/?{?( oҴվYn|nnG?0z5?B\ǾN?'?mv5?N??P?.[?޼Fs @=8@4?`?ƾ, ?E?9+>?(l˫$?v??-\?Hu&?9B`?k[?)2?%M?ADͥC]ԆA >Z?w⾪?۾9??2u*?W?!???"Xl?:?S޿?3⾏^??X(?H ? 577?D?\ ?6?0ruWt?:Uw?8eF#/?$:ֿ5>?]>?};K}aᵾ?N澹t?M*?> ?L?80Ɔ?B=\KD?E d>p#VVӿ|~ǿ0!(?4{a辞ѷ?JP?;߷?"?=?@`V? _?Ue?>N??/?:H?5Ay3rDS?;?.O?=VaaD3??̳P?t?WtfSk?96ȿb?SV?7?>ݾ9r?N"-?b@S?3q? r?8?:?0:'?@Bk\%i?İ򾂭a?V.a:?Jj?`%"?5:۾^m > (?l#`S?w?R?(վھWC ?%?&Xn9=?T?- ??~?IuZS?4?G c_½>?YqL󾮆n>ǵ?JJ$?ל?1@%пοit$$?Qj0P޾⾯ @@CYCHBRM@% ??Ei?7qR?sPХ?IBL+ w6f?w?1F?MԳT\?,?%]?Dh?Cm7?#nR?"?J>r@~źy6@?:H0B}su?_zhо#K}ZKms?4poнg?T?ii Ǿ{?QYD_?1?<\eNo?7:% ?/V?$ `?5BwF>(Ϡ???;0?/?ў2 C ?OQ!Hi?"v?+"?"H?^H˾^$?rQ?3@?G>N?1' ̋?پ׊VW?%-w :?A? o?Z3h?@ Zg0.?ؿ H>Ƶm??Fs? {?@"z}>E2?R5??H?o?~-zҾȁ@?п$?=d?"a?J!?'W?;1D:_?վ? ?ȾβpQz޾4?vU侖p?9վ?h'X??5?Xz=?sؾes?K$8\;پ?@ླf?2i?U T?&J@6?W;?!Ƅ?^A?5F@A̤@rӸ?5&?@- ?!^?Fj?"?&m쾤X>L9K?h+?*@B? Ržl]?2?5(?) ~?)?\c #?W>?8c?/b?+6zlbƍo?0K?GlO?=2?ʸݕ?>-.}&R?D&z?ScIgQK%d.rr^?4zk?@:f׿Mmk?E?,y?:!V㾆|㾂Tc?7?\RX.?bP2=? ;?%1?Z oJ@?k;R[@! aȆF?:Ӿ4?!P?(mʂ?0?P$&?S>Ef?B??)?Sp?*[žI9?G??4>j?.&*?:?6)xPԠ*?6ȾJ?9%TNl?0h?7?L]?v?/@Zj\˾⿟X4M-?l?:c9?䰲?Pqۿ+?%?&@?(K6v?1~^??$???Et?,tq1ArBAe~@Τ?T{v>,??0?Haj?69f?->?<|U‹??!?A?(j ?dE~:?^?'>/^hܾ:侂ؿ읾TY ?4?!#?"\?۸>Ҿ>;ؿAY>A?j?f?,L7i?&e?S=v?%`?¾ϚKTk$t?' ?8Se/?U?M|?H@?5K8wf}?-??ƾ͋?Yذ辜?42srA?ճ>)W|վKg?#of俥s?BBGd(?9ݎ?5[? q^?$?JE?>t=:R:?WY?TݫJ>Ծ7'I^?;?Hw?ݡ@R@? ^k???ھfxef?(z?+>^?@^hAоF 1ttD?Eh"?5W??W?|p?@]5 Ȑ?3uD.?9$?=?4]#z>X??NEE?5$_??Y㠾?I9?0:!?0@? \|?Cv?7>?|?A?:n?AQ<ƈ?6d?=??M3?Vt?/g/xwϾ1?=쾯/tc쾋^ܾ;>?1;?vz"?M!?Ӗb?|վC??BR?4s+q?Zq᭐Q̿Y?,J8?YБ}sR^?~ƾξľy"?+w25p?$?<98>h? Ф??ҍ""R?AK2?H>?Lᮖ ??M+p?y?@:m?8<?(?99?)?;RJ|&/?3v4T:(?6ה?_Qjc?Q]DvxB?SV?wVĬp'?K?6(?dC~ ?]> ? &??Dz⵴#a?"`N1;x?O ܛؾܾ?ZA'C}?BAZ?l>?? ?84?=x?3?3y활?Itf?E?n?H?,?F1iH?Խ?.wFs׽?0n%?>ArYlh?2:\?O)?mBоҽ??6??@u@ֿ?1Eq?]?8#?Xf?z6mDd?5ö•t?1ѩ?S%?7??i)-?8 @"D?/n? '=Կ{֕r?) ?*3ib@>?8?AW?G}"?'&_󲾟P㾕wp?C㚾 c>}Hߐ?N"?N;S?I?)?b?1$ ?.^?EjO־?Ff?B?c?+`?<-?(?-?Aɸ>㿼? ?RN"?m?@N?=۾ƭIJ{?V?*.N?PUP?A/t?6?2R??k?G?J? xqо^*?AoNJ?ҩ?=A?,?:>M?R5L?A8=?9ʾ2ܣ?& Ib???J?j?ͯ?'x? Ӝ;A?U?#Ֆ?*|'A$BQBj@?FC"N?>ľ]+?57?+?BV?a?OEb?R0ay~?@tO?VI?i?3N>z e?-?%/F)쾿ʢ?*B?;Mf?J ""?- q3?=z?G??HձľWW?8ZD ?*k+?a޿Oz?ߌG?ߟ? ?ǎď zľjj?' H?$̾6?k"?B??DC?(_>ۀ?;-})|(i׾LGţ?P?@lt?#4ڽ=A`c%*m?s'P#?=Q3|=E?olył?$y߾Ģ?p'Y[?'?E4@?T?;ݨ??2u?M:?⌾z?A~k2?N?:O*?h$ʿ?J]R?Iľ[h?6۠:М?0 ,?2'?qX2?^ŋ?$?}F?R`?.T_?0^?ApϾz11̾JnO R*??ߟ?4վN??&)R "??j?#?.!ڽ(42s?zo?'b2?X?a?=-?-wTYQy^pᾼi*>?. ?Nk̾+x?I]?'*$ _d?3v5pj9?3wq@BqBAG?oN5-?0:B?Q?4e?*Z?g0?F? ?HN?ʾ?$?A־վ/??FgR? sM ,?2?# ׺~풎a辕?9?*S~꿔R???~?Mj?I ^h?8y VM?#?=rʾ?/$3= ?>V?C?=3DT^@?b?*?%zؾ6 -gw ?Ƈ9.X?2?RC=0Gh !봻@z?FE`>GsE?0_?%u?.B$??=@Af>C^? B᧾zN??*ھ?)e^?I?8]b8*?-a?)+mp4Ⱦ~@?J`'? ??3x?yo?6-i?f?% =?,tN øYT~0?9"8?VBU+?B =???AsP?EFv?uſHZ ?,0Nؿ??>G?M3?3Hy?>ʾJ?tngL?O# >.?A? x?Asw?B=\?2aL_?-F?vI#\և<@v?Rc}?<>U?Mrj?)h,?I\žD9j/V ?s<?V? P?8; z/<q$?QTn?!D?*????'?5M wz?P?M-%?*u+Gh?4?g?+?.g? dL?k?\=f?_??澎\{ ?4оUS?2XVf?E?(?;6L??J9?Of?Y?V/^^?^^i? 8?.?*#R4? ?;4?_۾?+m+? xƾ[m̭k?$?I^?P?3ռ?D~ƾd&xy6B?,@XB=X@?Q?Γ?(?,Ҏ?<^@?AvA@ͩW?+2w?1*pF O/?.P6F?1?,1$?  ??;qǿ՞>ה+i?M:?* uP?,?)Zs?LPT?HV<@?<,$??*95]>x?HwcVھ&̾뾙As*?HW7?k.2gFG,X?M?6Y?4lk?KK?# ?9;pb?V?Dr?>{ ?%\ҿ<?/?h?c?VR?!3߿?%}ϾV??W?$?9?26+U9?/Gla?ӣbmp?8?Qd5?;^jj?? y~?.q?FZ?e?&e_ľgq\r!T? ?Ծ???P#gd?M?:?R=f?% ۲?/~q@ S%C {@s35Q ?(?8DҿO?O?:@$@?+?+k!MUEOT[q?f ^>7gHVK?8R7?ۍV?B?<>҄>z@gϿ_?2W & E?2X?0? ?9vlΚ*\;?@D?+c뿟J ?"+r?G?ٙ(?8H?4CO? ?$?z|??8ƿw0??s ?.7?&xƾ'?Gc=>?ukYg?:GX? [?4Pp?C?Qu?Qu[~?C??ofLmF?QhD\Z`?iC6߿r?CĒ|@"?*c?O( o&s?o;?1־ͽ?5:#N>o`)?戶?侲W!^?U?4*?:&?ؾz?2|?0%'?8?/̾2龖S쿥nڿ (?Ȏ?*L?'nݾ;?UK?X ?1???޾ G5B?9?;卑H@?:~D?7?-|dV.?;#?=?5_?&)-#?.@ƾu4?K:T>x/T??I$o?4?ؼ@%} ??3'G\?;8?#ONf㜿?.W{@WqTJx?L?+^cf?%X?8di޿ H?;|Az?]?%?-Ԭ?J3Ᾱ؃?3~?Ӳt?9Ӿ >CľPgMVly?4?Hy>*(w1 ?aп6 yWY?jډ= ?.:2yĴ?4?@ d?"?R!ü89?O\x w?Lľt:f?>?1mr?Xvb?=?N?=ݒ"?@ؾt?EUAR?7? 2?If n?в}٦sc<˾Rbh҇?۝3?BcBvEH]c?#X?w? $YĬ$ ;&?FS2U?W?\9?, o[G`?P5&l?2݀Z?dObd?Mrwa꾲v8{f?,¾6nyg?)?? O6R>?Ԗ? 0?8i?$"?Y\AϾ?&?'Ldz?Z%,?)?6W?L?Rkwbᾠ?@ ?ib?2(}L?@ od?-);0Jo?F͠i?I[P?4߽?᜾j'4?F%c?9y0?|ާ?l?P迗ФFon?+vs!ξ#?lMԿ w?n ?RK?2頾CԾ3?15sl???E`/x?5[?("?Bt8u?؀V~?:M?Bk?GU~?תj־r?<3?(9?9\rʃ2x?䊂_EAB?0A?5.w(ؠ??˜ؾl_?=B>ˣݾ$??`?P99b,u}?[yCy-i?"?@Dn?KȾMO?? ־u?A8?Y?? ?m?.?̾&"?@Uh4m?Qg?=hY>1ɾ`?!?A'^g?" $?3vV??&Jw _þHO|PF?FJ\,4@lA %?? ~ľ0?? ?9̾Ύ?=Q~?b񴾓s?C?3wHi𿔠?S&ȃH?:徂sƾkWd?k6?+?缸?>p?=?~h0V? M? Ңd??g???d?Xʙ#?4াP$?5F?=R?f?E㪾ť?Xb&|ҿ?K??.B Br???$?#ȾԿw?--P>D0?8o?Bny?0,x+52{?5Ny< ?)?J,о͏G7e?'^?6?+Yr?2꾔-?D`H"?8?ܖ?o??;?_?B ?C ʐS?C,!0?g?R?=0?J ~l?LIਢ?C@?85^"侰0?7u[V`3'忕=?ā2?f9E5?8HDľR?B[=H? M? 뾛QClH J>?9&aſ/?Ud?-^?O?\?cuɾv? ں?Am0B~AH?TO?&/L>-Zܾ?6u~?"CQ?-ښ<}f񾂱??6 e??o?1dqF?#Q?)e?Ta?M&?MP?+ϙǻ3?D>k? |F?Et/x4\t?9 ?&žf??7f?/R?,?=.? ?9g¦u?5?‡?95ݾ;b俗?Gt?@]y?䠾:;?E?Q&?CnzC?wX?4ƿް?;0?8h0p>`?9l3 ɨ?r6?Ga־,?Jr;%eJq̾"?0ݿ?SL?/>$?6ɦ6&?F\z3?-uvy0 zgR?Nf`# "{]?i?Fq.?8$?E!?Mdbp?)(K?&?Ce?2-󾂑ƾ?;"Vd?;;?Qa"k'?ӌgt?S K̻!$?xT??Tr뾇?I<kr?3>iN"?%I?@N6A/?BݑB"|??O[ރJXkK?ɮ?*??KE?Hyh?7?оeNO?#?8վ:w?P?Fm&?#?;g(=5d|G\ؾ-?c`?4<"?Kg1ھ-?AI?A f*_s ?<k??0?"ȾH?=?7B?Ϋ?C??o?IQUJ?'*T_¾?7 ޿qUɽ_qT?,{|mU_ECUAk8Cu7?<ؾR6?._f?UR)Z*??ݾЈ?גҾ3 ?4hؿ煾!bfEi_x& s̾SՌ辢h?B_ξޤz?6xGOҾa(&ɾxzV?yS?=?MT?G0x?-䵿 ?0u?L5#焾Wp?"ٞ7?+Zn]Ӿw>?*̾[f?䊐?_2?4?˿1?c}??$ ?EEf??G?+BN?P?l?;>D???9 r??Hԥ?ݮٿ ??*b?vE>%%倿%{?G,?vξXC,?<\]ے??&k?y%?CI̾2?/0ھɰ&?p0z(?6B?Zw?:P<_T$ھ` j?2rcؾ1P'<@)D? ?#n?y?"I&)?β?Us?-D@(>=|3*4羳l|?E@p?&nn舿~W?k?@,,ZUME㾃M?*ߊCb?Los@߾`ؾ̾i4?-5b?' ??߳῜cPreE?I?k㯾Dz?J / B^ۿ8xhľPtt?EN!N?E/KS?ƞj?IX}?#{aj*??uwz?뾋yEᬾ0?#J`-?;f?/l? v?,ڵ?y9c5>;\ v/Ҿم)?Oz(?13?28dv7L?Z?F(?:dS?0?5[??q?+)Ǿ#?(??$?dH޾nݩ?4Ҿ!?N m?8z?'6ɿt?G"/?2?18b)VA?d?T?7,c??iAUp?FB?D+xʾu?J?M~?R?]?8p?Ij+?K?8h ^AY2=?#hű?*?L?,9?:;?SSҴ??2N?B?'L?1_?=ibr?2?(ԃ3?ZD?p?&?<?.?'E>b ?L?? F?؉?ظD?47z?1f?Ee?4??ο4?%NyD?3T?Lɾ ?A|o,Cf?ީ?)0ؐerԾ 6?*¤EXWV?QYm?5M?K?h;5z&T?Dz@Li?"zrl8?W.<`$?A?JfH?Gg?9AM>3侭!??K?4RnpSe?Jݾ,*?Oq ?qb0d?Ks?*=3?X~j?2U2?%U?4'?=V4\Pۿ7?/?99sL.j?.?,?%N?\ U& 7,xDGqp ?0m(S ?@??↾T @,s?A?KN?_eNľ?D?F{?@X?G8 ?W|?FE?=E?Q?]h*YZ4?I:?Y>?>?(Gݿ{?C?S3?7gX go?' gh?2K?*ſ ?*=b0??.Ҿ?1&%?N\?0i?)y?, ?S뾘k8? z?໧?"%%t?9]?1?8B¿rb؄?>?,7?'Ac?GҜ?? ;O?駲?7Ȭ#?"̓?2~W0|zip?DX#? ?ya(3,# b?5Ff?ӌ:>^?#/x?Խ?I?d?t?TcY>_j?>x9??aHVS,?"D?KA龑 ?SD?Y?9vӾ??* [Xk+?(B?\$?y@?Jp&oi?-fԬ8h?6C?5h濮ڗ?,'D5B?. S̾:?O뾓Yn?BZ9?3H`?$?t\? 9$?+?D(l^?/V@ 0dd?\ ?= ?ҹ{$>x?D>; L>4?%Xj?!y྆2?4rM5D@@Qv?L@?6s?yu?8?z?BʾK?E:,?Q]U+?^ZpND?j.ZkJ?-j~ݾ ?XDvXxXY\C?@)/B?H楾QH?81?J [>'q>?IaS?I}!?3f?/$?%?R?Ⱥ? {ؾRR?$w?u*?e6?4λ>?<*.?w?"?+HF7ӝ?T?K(:?W?@D4?ƛH8sd"H$$Y(U 3b~f):Ԍ+??оmV1?= ,!0l,?F(3lNξS)?K;'&?=Ҿ>P?^??)5C͜?[R?d?OD5D־M%@H4?N+d1ӝ?E?]x2Nt/YþoD?8L?=*s?Dn~?S9/Ӿrt?-?4? L?'Vj?O۾UX<|?._#ɾnM?б5=VwO/?,4?=cɠ?GY@'O? `侠SK?F ?7t1?@z? ߾=Y?*,?0';?^>96?HM?9[?B2, ?",6|W6?D*?7mF?)G?ROA?/Yl徲2A?2??͍0o?45?bk?0?L?c*l?8;l,9т?9yJ?J1?/4T?Тb=%?4z۾n?Ƒ1-?71b?7wmBvпeixo8?bNj??1,l?,/0^?'|?YD?7(~@ۀ%Tݾ-?62(@?;=?X?(S?'?8|?) n?A>AHAGX @?%=?f?+*?/P?K??'U?))0?w?8s#?+u?=?G^?9?=Bо?G?>TRn?ۂ?K?&|?( N?9g?>?Ne`迗\?v?FIӾ?KR2Fe??1?CJ=?6:=?=پJm? p:?&Lz~O?4X~? >Բm>?=C澐=?Jq&X?L\ )D?6?$??M֔?-Ve9Rh?!;?"@#-?ۤB.?xվ徤2hþ?W#G?X׾t.?Z{JѺ)?Y?$?!ƾF?1?Cҽ.Fh?.8iD־]k?/PKN8=?+{-?V 텾 u|>m`=濥$?<?ۊ[?:пܾ?2̃?qK~>^=e@XTh?V;D$@p6H $J&??'?K:?=?.?C, Qn?,v3_ ?Hu?? ?1^žg??QX-뾖?7ww?&c?;GӾ]?eY??µk!H?$~?B% CYžt⳿x?Tg4@T}?:vb?;?[c5?;#rn | "|?=-V?fye?F??u?AeP?B?k?Oo?-w;-F?Y3eO=`־_]徺?9?(?ʾ ?G?5#̾PYN?9 >&P־Wata_־T?j8õ?0|ԾR#{|?6N \?Wu˷? [r+ ?=?Nl?U@Sy?2??D龳 ?2p?Cx?3\[?̈?Y?1>L?־%*>G!?P?R?:8G??F@@#lnY?K?U{i? CȂiN͋?M ?-??l?Eb?9R?%׾k?( q?#E?9$t?<\?G2+ ? Jb(9@ˣ@-x?1ԩ?. >jR?=þ? D?4Ն?.}'ڒe?@6]=.?-ZM?Ky?^"?%5?+}?)n?W?3x\?;c⧾R ?::xچrP?-T?.԰.?ޯ?Jb i??3T?.h?JƄ.?@}޾2x3{]ƾ? ?8ÂM?4Y?P >?=[?=v?&'?7zK}6b?0?3Ir?*?l徧 ?@d&??4m?q?i?=bfIS~D?r?.m\_t>aqܾyr?p?:T?D]'?<\E??JY?7{?:4"i>5 @C?MԦؾ?|ؾ_?D?.j%yQe-?Njuؾ@?5bp??UϾj1jf-{ڿ&wo?8bz?<3ȼľ?V˾d?d?g %?8;?c?%x.v?C&?J ?:'?,S?{?5U?44?!?Fx?! J?-p?+?*dK6?U?":Ȏ>ؚ?g??D/ܾ?n\?冿?/\?WWոg?/;?>6龮򾪔FG4=?V甎?F?%~?4Н?+?1c?2;?=?N?=1?)L?Qƾ?46?ғ_?JY?̒?+P3?A?r?b?B?K?Jr?$ET?ξP? Xk D?-'?1^wB?9ヌ@"ۑ? ?x?!2-?Ef?/UVJG?CA?6E?p6?:?D?૨?'&>$Xn? *?mx?&^G1O?)6>k??-&?'?.޾L?_?K?'Ǻ?+B?J&? ?7yݾ>?@5Hw_vw?dA#-?@^ɒl;w ?Gv?bu?𶾲5F?D$wzU%?4m?9lPH#v?,d{nT7Le?*??Dfѽ;N?7&f?:T|?+*c6(?3Ծ[)aV?񣾭?0M? ~Kޛ?;3@Z?<]ꔾ&?ɺ?TA? A>㼾-gP2 v?9?3;?1^?4?.k?;Az@.U?2?̾?4 \l?ڀ0?/v?2`V?&|qb?-?$ƙZ?vbо>??$ꔾ?'?$z?SX?-??ۙLtJ?(I7?& ?9(7Dh5?5?;G>|s?@Cm??WX?~?a/ʾnп?:? ?3>?'?0?ξ?>9^??E?W??5<8haSA?1\|m???^"mPpy#i?0ξ˼?@?I?8?P? lw?6U濎?D^ſ?JY?:f?'xVBP*پ]g" ?NW=?4夾2=*?KkV3\?2Xe?%X ? %d"?Lf?<}Ⱦ=nvؾ쾮R?+?C1?A@}n[^0?.T?D??;?-?_Ԯط.>:2?J'?S?;?R?/?Qq"?3 qrRH?'B@&`4?fp9Ą?A>?/'?I?ݛ?Kf˾ҾMk\*[o?#f?""Z5? 뾃-?"1HW??3"?8@#W ?? Ml?s ?h%4,@%P?0j?02:xg!]w :?Dt?CW㎾&?Y?7\??D?>VنپP@?2-h?4x??;|?c?/cAI?:Өt?*e@+|??`?:p쿝p?9?OؾŨ[e?/?CNY?=?e%bھ~d޾J?O `|?3p?8\?%??%Ծ#)?(H ?X ?J?⾏?)dO'?"8;Q?L4 ?.R?H" d=ҩ`h?+ھ)Ikʾ'[g[ׂ Q?M5?#?B?4eg?0(r ?ci$-6?AEk-*?;#̾.ھ(?;U?NR?9:*?̌s?0?;?\Hھ̋?)?ٖOᾖQ?՚m\?4?8]K?I龾A??D7?%?P?O?? [.? ?_?#w? _?*??`?=E澑.uDL??7lh?$ľqi?<?>1=},gj?Uy*?I=HB‹4?A??$Rnn$1?9z۾Dxˠ'??pmc~??=2h? 侂ˉ? \8?H?@~ ?P@z^A?K?1 c?>?? t?ɛP?:D?+Aj?2 S7?#?2?6!?528?0? FT}?B?9:H?' H?V)A?r?> 8?9?9b?$?C,-G?;r(|?9s?i{ߣ?-?+/:?Eھ 3W?) :?@g?Aؾ&?\ 鰻[?9t? 2j?cV4򟾏F?9=?8??LL[u?!3?N?[1>A?3?$YbX?$3{8?Oྮ({?* ?=E?֦?4?0?'?>A!;?2We?(?#?I1ֿ?HY^?%Tp@Cw??4??R?6?C84?"?"y=?E ;ղ/$߾?#8?D(x?!?&ƅ|5w?6?EElW?%?ʼn@g"?6Ѿ4M?!"?-/hWk>nz?%`>?F>n?01?,?Ͼ?ȯJ? 1u?. 'gU+4?0C?pT˹?0gj?6h?;e?W񿱇?!;?ݜ?i>"/ ??.׾hՋ?C?"?0㊾8n??[<+z? ?G?UXؾ?;937#lf?)ϾD\?>sx྇?bmb?EU?JxܿM?IwV?Nש$۾h=w&Y?!"ݿ?,|?AU?H<?LdRd?y/??@iNtGК?Tk m?Ԉ-(8)?+̶?=j?33>[?Zh?EIeF? D3?1?<2e%??9RnI:?/:KT ? J?#?F?F?G3?:V?(,8?D?.?U.>jG_?B|6?ELͿ¾?2?4?.6?σ?=?ե@?Y?о`?!.? jUNgT>??2`=0`?#hd???ij@":>㾐d? ۾N?*RT?A-~⥾C@@*?E7?LXO?)vԾa?AA?+W??6JFM[ ?<?w}Frj/<=>ެ?zV\?@?J?):?&aAG\C_@f/?3T?Je?6,??;y$d?I~?J?F;x?+DҾx0p?*FIY?!t?8?ſ?@$!?:s@?)?Y 1?C?1L?3Pc?V?8F?! v?@f?حƷ?2?-Z?9![?Һ?>X쾂Z?U,?>?CBCL?{g퀾]?LT ^z?4zC?*\D?|5?K?"?ՎFK]?eѾλ\P?C?-E: >h?S?Am?4?>A? 羶Bп?达v>Qô:?"@$ǂAECd?(6?I?Bjx)p?N/?2@[1?,.?+"?ݝ?N?(<錄"fiUH/?O<>0W.#@>6?.j%JIY}6QCQ:3??@׊"?9u? Y?AY?Ǧھt?B ?h?;L?**Yd򆾟K{?cC?ՎK?&]l??@ؿ|?؍?%'??޾:j?= 'n?4 T? K 'Da?*(?4^ ?@*??$]?Ëb#?Fh`??3g1 O'֯(Ay%iA$?%js}??784@?"/,B?8?-oԾ@ȑ?F' b$п?=lƟ?/d?G?4??a?H\?B?0X?u?Z`>,|i?2𨾡0?a5F?MT:ھM&In?K?)Qzac [?-?G{?E9\?8S?g\$?*7??!yĪhҾHX澾kL?iʾQGnjT?ZCxnmbn?.&v0? ?.Ծ?+n?eM?OgNW^.?Trj}ί?%??NĿ&T`4?Evx?ڛo?xS?0,e?7?2}?c??<^?j?Cl?8޲?,?9V?S?U۟ h?"7? ??M-?jY{?;60ꄽČ?@?=խ?;㾎d?[?Ex?4H?c!? E?-a ?`q?Q ?ӞJ?T? iBqBM?ӫ b??6E ?h[?,lgy?FҾ?)|?>?&[?ք~(þh@+〾]ֿ?,ϿI?JǦ{((Gt?B|g?C?i4`?K?L1?;p`۾?6?C , o$K &ľ|A?Fu?P?/?u?HEj̿?fпϿf2?(3?5?V;??ƾZ@ Ysx徹7>?8?Ck}$=?5?Q:?.T8? ?;?6xFm/uZv?q? i`¾)??lR??:ھk+ ?BV?;`?!ɾ ヌ񾋸?{?:'f?n?!J ⿴y?>cM?*Z?+@w?,?0?;W?64?q?q?: `>q Gw?>D?Ū?J? ? |?IxϢp3?DP9?7tX$2?)~cdG?*P?w1@HBJ?$tžzLr ?.2.?Ƕ??.J?It7K?4v?--NסH ?ͤ{?Ȥp?@?6?d?8\NN?2x?C2W>j?#?D?B #־, ?7߿84?#X+.?&x=?7P'?:þ;?BpZ?1A6>#0i?N?˾`?.?%?E?w?R_!ba?8$BpC?7$~n15?i?u?YH?$17Q?6j?;8ھg##G b?RH?>/~Y?\SϿ?SF򟿢?6=%m)3"?'?@K?578Ͽȴ?N n?1B?`?-ie?Je ??1>i?$n?&?,?:h??ߞ6?z澞?2b&R?/}?&?0A?Iq[?:M??<?X?9レ m.I?1ۺjL?)?9#u?='?$mV?*?*7?.?,"g?"ľH???D#t>ۄf?:lf?A|F?106r?+??V?!??-m>?C>pL3\P?:Ҿ?A!>MоwB?A?Zp2?0ʾc*??^?E˩?@>P?: ?0S;? ,? ξ?:,ƾu?c?.m"?-?I??Bd?@[Bf$?K?Ce*D?6?8y3V澊d?5Q?Y&??E?!2"z?A=x>7uҾLd?оK*?LL>љ?8A?-? &?J?)q9? #?w? ?FMpm?&K?&j{$2?@ԾVclƾnk6?+uqX9?D6EWb?AZtBVFM?`q0z?=??q?H?u^?E~#? n˾x#k+r?LZ:l?A"GB?jD?y?쀾?T!?G侫^U?ϟ?H̾O?COiI?>B|?&?O .Y@#>?,."6?">L?C1 { 4?'4h?fI?W?CS?"1nƾ|?#mɾc]?ɇ}? z`?J??&?rߙ?0QR?ɩ?23@?/?;Oh?H|־y?3D?fp? (/<$G?"r?N辚+mhھF\?9z>T^?;w?-DX? ى?.O?ˊ??7?y?ƤI?E+?/J8?G2S??%??7+X?-Z辇P}D?^󾲚?Am?DM?5j~?6߾lm?k? #&??6?)r@/?,u?Cfܿ?@ӯ?7M?8k?o? u?$|=Uq??8?½?ͭ?90?$J42P?&)x?#t?OH?-Cq?@Q?a}??k0apH?]??OqL?0i ?F? k*`?K?+#%Km`a?(:?0vȾb`\Z?@8?4!q-0?[,WHU@?^-Wξ*0?BF^Z{?0?𔾉Ѿwi ?D?>*?7f{?RӾΐ?3i?4yž j?#<Ŕ?.2_Ҿ?<&>RТ 2?ҟ>*Hq:?/R? x? 9s?G)?%gKw?ݾpvF??;x?@^?w񒿞 ?4D^@?B,?)ʾcXjhBT o3?B࿛7{?H?D?@9>S̾  ?UQ?҆??1OSOr7?͵W?(K?"?x>r?*UImb4@V?(?9>wN?*?+@&_ᄌ?Ů?`V?s[Fq?G?Am@#ķ?B?)n?$q ?4x?o?D\?>{?1 ?::dpqUbǐAJ?UZ>?M1?Vbz?ۂx??&?=`?M}v%?Q܂?2b?'ä?77Iÿ޾?59?Fup?z ־oG? dľ,_\t?р????5?L?(xL@#JᆪXV?tv?E#?/X꾒>Ȉ?5پri}?7S(k?7z?\8ӈD?X[%?%?.ˀ?/Oо:w+y?E >|4Pv%hlj?+{3?5Iǹ? 1?/fha⾛9!?3?Ҿ$P_ؾ.??:?C ?E'?B+u6b?2NZD?.?VxnA?:Nf?Q@?(>?$??Qc?$.d?Aľ%"65 ?2?ד?._žgx?]־}~W?E?0?1?Cv?](?_f`sȇLz?B? R? \6?^qJ0Gʊ?D?8 T?࿚[u%?4k?@>?&CJ?hK?.?%}Ǘ?OԾ?Ra?Lh?'?E?!?G*?侅2???Jˌ?-|??DH?XdG?(e]@a?(mEzt?ɀ?7% N}?1e ?8R??37F8? d?)hh??3`?&>z?(?(/?;6Y'e?DEh_>293??D? ??Oa?'g˿?Lb#tްTbx>&0?-?8P?';4?2"U%/k5XA?ID??T?ʾڧ?3? zп??0 n#ҿ+oO?>rFs&]?$晾 AK?@Ҿ?*78?(׬*?9㵾γV[?s^Au&? .?Pk???) ?`??>?Yd?y?ҫ;i?辜vǔdui?_F?k?P1??񺿴w?8dyd>vP?Q ?/?M"vϘ^?YP?J?AmL?&?)?ͼ??F*?C?&?$#)?,?I?*p?,0x{=.? ľT??MUA^?2t`?Y?/?+|?yh?JH@?YI?Z?B>U+W?*??:)?/Ӿ˙-?9Ct?( @,^?-?Q? -?8Kb?VW?1E?wi?:Xjx?f?X 8*m ?D8ʾJ?Nn?.N?%??|t?K|+t(.??ؾ@z??׾{W9?Qhl }^ts?.?־X6c?(H&:?FA?Ax?_?3";jzϾ?cucp 0?\?+? w>Ӆ?1T?{J?)dr?I2?OX"?۾???~?%.&6?-?Կ(?#y?ItfX*?CfD?g?k~???4?^^Ǿ֎I??1r)Ad׽?V/?;?LE? t?R?;V??+M??ӾB?oG?,?Q ?٧W?[+3?)h _?4j=D L?!?3h?xSJ4?Pi?"$?k?9b?y? WUP? i?xqTF??*g\?U??O?6֛?#4?G?> 6?;?)ge(gIe?b?Oh:?Ӡ澞?W?֗ľ?Я.?5?&?D>?3G?-G?Y?G>s?"R?4ϥ>>?u?*&?Tp?.Akm͌?7?EO@%ھ~?X4A?$?,x+?բ@?¾?,ٿ?*?R?)?+0?ԾqQk?Sm?"cz -qF?0?0|?W?e%?A,?uЗƇMj$~? ? jBBG?9?-?prZb?$?,7sU?1h?ר ?>Ll?%2=Z?C{?Ri'8?9辤>蘾G, #t?"0?PJ@?Y??쾳P?;֋Ͼfao?b?z侬x??A?:ݾ0?2V?F&v?4v]?ɾ}?O2;?#>)? &?vd?.C Kal?ݎ?4J?7[h?Tҿod?BcU?19??5w:bg?3S@+?Ą?!^?'?B?B?U?#?-OT>6~?-???,?Y~?!,?88|$?- ??&w?:-hp??'p:|?-7?5J?%;?9f?љ-?F1Ijp??!?AZ8?9?U9@IT?]+dɾz?R?]?ֆ?:??=r40?<^7?:?+9H0b?6ɲD?hG1\=<릿E|?_?=?/ay?Vt_?D?꿑j$t?Pvkm?M뾽PYJp?)B?GuF?fq?"E㾒v?D?SSݏ?,;Y?+hF`c{?ַI?DEeN?1C??OJ?>?VUvg&?+4G?!"?Qh?"!?B?%y?;ζ?0?Άfv?0S?8l[?f:zY? o?Yp>7I?+[^@.50|ľ?6)z?GTP|s??L?Z?.u ɂ?T?x ƴ??3ݠ?9pc6?&m?TƐIR?'㾚쾤<4??4ǾI? h>?2?'b ?6?,K? e^?*]?+]!?/_?o&?'/@)?9?k޾ Z_|j?30?4|ȾgJ?.`?پ?%?L4??O? ?*B?,*=??3?JR?@0,2?%i~?BorpKaͿ#G?1?ݍ?N?ӄBrCr?#*#?>1?F>>?'侟2?">!n2?:?-Zpл?8n궾e8Ծ|Zz?Xg辐?_,#?Mt>g&?͛h?JI?YxPvo-?O?~D?k rHo;!?NW?D ?Gj{?+͌b*e`?.N>!@?A̾¤p |s6?S޿6?:`]? ,?,Ǩc*?:D׾?9K?<l@I?׎?<n5?1Y?Hؾ#:e?A?>?{iH??B c9?"c7.?֕ ?Q~_?!/?|D?@\?.to?bw1B?3;?$?[ ?&>߂??,?Y澋LT?.U?:q1 ?c3|?b?$ X?- ?8PV?*o?Z`?A 6̹A"9?^#>?* AA?J(>ݿ ?/?S>A?2 𿞁c*?\J=>?;?8^;b?,?6>\¾Aо ?G:?d9?0>a`^?K??-H??\0?.T?T?Us?@?-=?-2CN?=/ ?K$?Tx*!?!BX?:%|O`?P1־7ecKԚ"\?8H?7[ˠ?N1?Huvi?V7?HB%T?M?D1^?Lx*?<^?+*?)?ʢ3[L CKFIjn?Z?-ǘ??"vT?4?(m?a;?/SU?鿾]??:?BU?6ԓ?H?0?M?/1?>?.?쾋HmT?E}?.c־_Ϳ]?Nt?5̂?Fm?ĺ zr?9.;?3N?2 ?Fq;?.w?D6?,Z?@6??|??M/??[?;o?F?@/0?G?;4??U_?A4?j?::&?$r<' ?8DY?Y?E??/ܾ?͡#侤?8?߄@k7E/?ʜ?r6?Ij|?E>m?]?m?5ֿf۾UO?5 ^8?ԾKپ?53~ [xk?ݟ`?%:?HdXz̾DŽ>b?iy 'k?/7T-x? ?$?4?(*߾?(?S t?C߿uԾ|?> ?@}?g ?*>?UM?­?JP#L?'J?6\oqd?0(?:X ?-?9K~?)UI?V2E?6?<\s?n?Q5?>?SP?6B⾴0`&?D3?;.ݾt8CW辋UB?C$?ҽR?9?Y\x4x?f=e6? T? Qr?6\ʾU݅R?2/??1@S?8$?;d?>>?cU𾐜?ݴө?=?("v?h?+?:s?9?"۾-~?J?~оk ?@x? ,?\?GDo-?Db?Ѡ?32??7 IVb??#4?͵Y? ?7r`r'?0C?8^?#?"H ?K`R?39?4?޸?7Ҥi:? E??Ab?2< @?@~D@ ?CviYCQ?'_&?-c2? `bse#H?5R?G“?ld?DeO6?7S?Lgd)?&8ݾ4O? ƾ7?+H!%?"Xg?G?*7?3?HK?A}?O ?5_Ȥ=*6p?0?:Y?:?"2i?ވ?N ?;S>IV龻>zm(<4࿚^?GJ? ?=)&?-¿Ҿ\a?Iߍ?6!Ѿ(?) ޾B,?0?19D{zPv?@-$M?+A?9Hr?"H䚾G?Qi\? $EBo>AQ8+j.;?lz?+4A (?C-~̾n?D꾪7?1f?`?cm?@j?$;3?æqHve?>?%F꾨?,}x?#㒾ݱ?7N?6?:D? p?@?K"]?dX?$<.Ć?츾Z?X?'?̵ܾ О?2 ?ho&??!g? ???Vٵ뾕{N?%^*=؜?=2TW?&f??G^?F?7 ?DnL?Yz? s('V?/U?~?!?:?+>| fD?),? )aq/>$>Y׾'F?DhP?, `c[F?Ymd>?,r?0M^?*?&?J?=?3C?%P@(h?e>ΐ?A l ?n7?\r@-|/C?!q5?Lׄt?C|?1E±?-??"4U5ʾʰ|? |?$/8?N}? ?>{?I2?jM?)X?6nJ)@?IC??R?Am?? ?Q? ʾv5? ԾVj?Ӵ̾c?9,?؃?Ͳ3??%־|?(r?G?>'L?G ?&[?H?*`Y\D?=hN#*־e+c?gM?Ek?1KB?IF?#\2쾏G?=F?̔+?2kH?5! R!? 1ϿLF?\?P>Uf?:Lp?Dij7?8Roz瘾P0i?7ξ}?<;?<;> >6#?.o ^?3J?42?JT־?xǾ-\_i濣HKm?ľl[r4iI?-?@mu]?3\I@?9?K4N> ???3vHcc?`?E?!待3; ?GI?!=?ߍ=?-j㾍Կ?'\-?7(?Z\?V*?7?%<Ƽ@n?Bu׮LHtt򾃬m9?HN?Bi?7û?9M?.B?PE t@?=4v?7?0f]F?I?9?C ?"e0f谾>Փ?M?0Ѭ?Z;p u3?hR'"?"?/z?"?3'? ?'x[?9w?g?~>h??)N?S(п??&?x8?U7?2 .?(?l?T?5?8?C?O?7`N?JϾtP?5p#?;Shf?*?R>C@ܾvIq鶾v"}R?+?̢2?@ۜ՝Vpf?,i`?c?'o?3W?ܕ@% +?)p?Mo?򯿟עH?&X {^YY>d?uA?(?ʐ?(e?8~l8E[?AX?. >?:Lw??2?1g?wH?0a&?(i?*???4Cgže}c?5=T?;al@U?LP@?9Jw)??/,?ԟ>G ?:{?3>s?{;?-fҾIX?;>?:~?J0N+lz?7>v?B ?4?d?B&?@?д/?4D ?4?48?=?Gտ/V?ĴU?[/?0sʾ+?t?co?X?Sh?4?f> >ۛH?L?ⷾ 8?*ZIv?H?I?t?%@?1pv?$? ?1?%M?0?b\?*jzྵ̮|¿XI02?T0?6?&M0Ȝ_?`$>J)H? 4?D?޲?Rw? ᾘ6?12?,> N??.`>??AOo̾ي9^W\?+gr\?6¾l??{?C)+sξ?K|Xٌnz п;&? xwf+׾H?9:?*?٦?._k?5?7MiP?@dfժ?e?(xw(E?2?$n?8?6?;u辇fx??2H?6}?碾?#8?7οK ?;?o?6Ivgb ??뾀?*3?5쾥?5QR4?:JA#@j\?sx?$?n`ʟ>?5:?3D? n?l? 𡿭3o?ItGz?J?4ƾ>J?C]ֱ?)} ?'H?6?*?"A?9{;>88?3S#?4V?"?J"??"U ?8L?G?R??flo?.e?4|? s?'jξOlt? 93z8G񿏁Z'ǖ뾲4?D?)?J9?('jξ_?3?+|(?f?߾pzvD?.V(l?*($??YfT:?B[y9D>Qg2?P"?/$ ?ݙ@ 6?%i?D?μ@"?3?8И<ؾbZ?WHd\B?6?*.Ҿ;sKo >j>3;l?GVvcf0sxrb?L]8H>쿬V?pF??1Eˀ`,??J:?8w?AhB?η?)`|?G?F4?$?10M?ǙO?/~?G??4L?"?#!?.i[?OԾZ?޵??ɘ??@ܕ@&\]5@!>>=?=?Nf#zc?7Ԇ?0匾?JLvX˾T-}GӾog?վ?y???&v?+???>I?ߨ?0T?!d?3-?FX?>I`޾Y??+?D>K?5n>ݔt? @?"ᾔU|?? ?7?, v?3?4uFx?)A?}忉?4?!1?"?)=rнW+X?6"yoVA- ?gʿr2U3?1{;XҾ?[?b?5n?+G??&>A0C#B澍lW_x ]@nݰ?;?1?:P&ξM/V}4앾Tcmsq?<?)|?:a?? |?_?Hjx)R/?@՚@[ ?;Y?߃EA?I?4Z??b$?923?0mp?=Rda՝?ЌF?(?3d ?^zs?֢?0m?N4L@ {?2? 0?r?#v?t1?6 ? ]?+Q?:9?+A'D@жv۾<ʊ?+?=@&>?B޾ 꾠r?<Tq??̞?up>?0?%?Fg#|?@?6?Ŷ;?51?F m?;Eラ6?\?Mn?z˾/V?#v?͌'?J@"ӿ?Q?,(#{le?7sо#?Ɂm?A?׎?C쾗?Zf?0?Yw{?0F?W뿜u!{? ?Á?%#??LS4?^?-~Y?6[V8?έH~?/DF?!F??O??-?}?1e޾ J? "e?+?Ҫq?ՙ>?N?Z?%$fDvR?(:w?_t?z9DT&澀0[FZ]a$?C.(WҪSJ?* ?0x'>?ؾYB??w&x#VѮ?JW??.?A=?0qw?;оg5w?ΤM^Z?迾 ?Z?ѳ,?<6?#zx?ڭx?Q?+?4CH@&cM?#L?4X(?Bq>fD?ɉL?`"9$?0r?0H?(dpH?x'?X?(gY$>?β?6XX??,?/?K? O?-N>?F$&?S~?8?3?-z?A>H?N0f?G'@P%?1Ӽ?ͯ?f??,?ڎfR R7?b?`0{?ۖ?A??7Sa.?L: ?.W4ަ+?4?IRnl?:? 4X?ơ?)VDi?"j?*(V?(<Qbn}ھt,i[T_z޾ R? ?wr?e|?=I?ƾ@Ǿ,?}R?:T +`?5?۔ʾ?澩? ?s¿[?>D8?%?ؼx?W?Ȯ@!o>Ⱦj%?&12e?8^?!?#;?J{?}?C=iK0?7& h?EMƄF?_?Y?3G b??Rw?֠Q/?%?dn?[z?V ? ?c?߾??f^?*7?5R%*P?V@-N?ݥ ?/8?' ?fݿ]]4?l?O\Y??.TY˾~X2P>?յ?P ?,kLR?&5?*NS,?@⼾haFzeW?Oʿ?7?>?P?%#?1T?B&8?%.uҾCD$?8> lNH4?"?Az?,r?^p>%.? 5>5?܂koO?6B?)Jg ?ӹPp?Z!\?P?>ľL>z?#?迨l?Ap?(Q?xˏ^&? ?G@"D?.Y?.X;?0? !? 9?4.@ X?#*m-P>?4Ѿ,?>?/)ԓ?J7?%e4Ȼ?X&濟Ik?(a_'?g֦?.9?)yP\?|$?K*Xb?5H?@?P4?L¾*?U#K?ƫ?!?OEp?Z?8 0?p ?j??1pL @?5B. ?Ҍ?x??#?;.O?~.@@%8?$վFF?)%?)?$q?7?ˡI??0??8?'w?9>%?9]Ͽ?KPF`?@{ʾ&19?`b?0?*?#6~?KBSaT>?Uڿþr2t8侜K!bҾvd?X?44N۩Jȅ?;TTT#ѯ?I`?֍JQ?1I?G@ID?81<_@-?*0?,X?$!??+Q?3)?9?'?V??"l?:Ot ?M??^XĿ ??:-k?Mо ?ɆsT?@?1m?>vR׾??Ç.? L?X`B?z?9?*E?0^?ݖ?%8?;?< ?/~D3?[?>qҾ"4?&M݁?,@??]>+?Jt?̿?_idn?;f?j?6?)t?85QXF??-CƔ?ԘăuY?7?F? [nZݲ?t@5 V??*Y?JV?(m̀?0?bN?(?BX?1?`'$?&[?1??n?/?Wq??p?A?>?@?1'?7'GYG?.F7?՜?9">k ?_??#l/\?\@ۛ?<?ݹ ?1 ?+?/?7?*???-l>n2kV?[?4˾]O?-xa!?J0tԐ?t&bܾLMMsH|g?D=sà?G?a,b?&qONJr俣ľp?&i?(?3ݰ! ??U$+?A?vuԔ?Ԁ?_d?-?#I?ذ?/0e ?A? 7?Z?,ޘ?$ f?2>?1#>=x???9-?$?+ZZ@6????? ?$8?SS˾-/?$y?%??1X?'uâT?6?3(>??2? ?=TG.sCw? >l@?Cv? a?پ9y;??ը?d[?)x?<~?a?P?ܙ? K52?&(S?5]0?C?" ~v[?&.N?<۾_MbO2?H?پzaּ?7s*\ᓾ6c?BRI/?O?7l? ?V4?D3oo.GR,?"ʆ;RK?E?q?01,ľ2?l?4?߳$>?ƫ⾊¥?5%:O?U?>/?Es?,?6?,bC?-A>A:?״?iCK?N?b,?7???9?}?0N?J??&tF2޿5????1R@'79@T?.F?O[@2???+?@ n?,(?,N?Et0?ܚKƓ?>*4??L?$?#0?=_> ?.?Q6?Dr龧eU?'sY?, ??T(? 2?#Y ׾ԾQ?p?x>C``n?3?DJpw5?F;%5?0"T:x?"D?=.?.?τ!%6;OX?u=\/?(slVQ3pȓ|?l(xw7??!}߯?UN?,? 3߾4??:J j?7$?R?B7?xő(3>Ě?? ?Pd3? ,?;S4a2V?Gu?Cp? R?Oq6?AӾ?$j?H]')?ƾq?n?81 ?>?$N?R违F?)?Gi?P>??ʧ?2@?!?J@(??+T?Hi?? ڌ?)^D?6U?9ʾo0CvO?6ol?1G?!?44J%6?hØ?<7}?l?#  ?>`{?%?Au?"B#e?Z@$5о?;,?J۾I4?QN?=9m?cGͪ?M?s?Y ?.G$'?pz?(*?K'?6 TH?08??6?B?.+]k?,?MD'J?$^?Bt?R?SY?l?DQ?4A@ɾFfF0?5?$l0 ?!=+u?9&?\ھ|0p -?AҾS-,?9 qAxľI\$?8Q?3Ɔ?;6ц޾Q0̾P􂾶CξۂK?1D6L:KAc{n?)+?|Zh[6>?';?қ?p&?E? l@&?R0? .@ϰt?5L?IUO?,\.ei+P?H꾌v>U!,߷??@i? r?-c7Q? 0ͷ;?:?cF?F|?+D?Q@?,{Ѿ:)?ἆ?^M?!L#?TI?" ? @?ղ9?/"?־پ(d?-? ?+`!G@?ޓ>оm?ι?R? ?־|P?+S?US?]}?XcW)J/:Ⱦ6Ӫ?}-7?CnVEvԧ)?ն?ʟtо(??y~?U3?wަ?v? ?;h?<Hɍ?0 ?< ?+z??!V?1h?"?H0?ĺX?+8> h?2GoJ?PN>)V?<?Is??3!,S??aQ?=׾?b4?Brv?a{b:LA?G#?:Go>Vھy`,KPx?tq32?M[?[R?J?6[@(h?JV?!? hD~?2/+-E???_e?p?҅I?8?dM]?1c 6?Nj? 8?,m8??+@%N?EJ?+-C?#G?,Aj_l^^?%"?¿Q?.EE?O@o忯#P2>?$‚?ӯ? Z??Ҧ@?@yz?*I?H1?'?@@+?v??4v?az?A?Y?u?1?E?)??b'?3*?15V?dx ?/? ?7?]%kt4ַܾ'9?25`*?L?77?P??*%?%?#8?S?vTdž?S~K(??3?ܾ??K3I2?%־??%~?&?ҥ?9yg? ? 9?9?LT?EB">ߑ?濱[eMM?:/j?!d?BF?45?O?0G< ?يA?!?5n??G?L>:?=?i?E5?,)&U6ion7X?ÁXʾr qS?r-pϿt{>?"5+|p=?@ǿ?3پ"u?c& ;TGR۾O/f??;&?D\! =7t?@Ⱦ+L(?2X'g"$$????&ľ?⑾r>ߙ?%: P^??۾X̾QF??ow?20?97?5>??I>i??,Z?1"?'i?^???Ⱦ s?+m:^ ?)s?=w?0G?I?!?St?A?vlY?d(?4^???m?MRf?)?:?nGr6?0^?Nyj?V?hU?Kд? ?A?؁?2t?<??t? 1=񤨾?_?1־ؾ?4Tl@?n?v?M?t?1Bp`-?Qn?V'??3w?#U ?("MB?N?T$8H)84X?R2?J+d?Kzپ?Y?6tp=H%(.?6C6Ծmp?@s{C:?i@ @9`9?l?P{6?E?u.?7sMn?F-;]}?e2?^z? = ?0m?G?RJ?2@?&> {?'0-?/?VW?`?̓o?a?/?۶?HE?????62ѰE?Ds.??׼?Fdz?/?ҳ??,?Ԛ?Q@&/hþr?B^?AQ(?>?U?ϵ2?-Jm2?6`{r?K P_?8?m ?;:?70T?޾_"? ?)?L?h?/?̾I6?& ? {??:"/?f2?0?&^?HH5Ճ?.?;oDZœ?'?8?2R?1?ڿ?& $.z?.ò;濢&XwH{?81?G_R?8+,@g?ھ >=m?)qXn?3];?F.?;/?G &?.5z|?a V?'({PR @yF׿??+8 ƎC?2?+?--?%X?Em_?0Q `K.??w,g"j?# 䜾~9c?ħ<ܵ? ʿ?/㲾|N-?;^?|@"??a|iSɛ?'P? X?%?Np| Wp?L]a?,~??J?!e?B84Ļvnw?q(?l?#Di?0D??)'AIBخ?΂? 2|?4׾؇>C?W4?r̾.?=% @ ¾G?d?=DT?$?+El kZ??4?+ɾěN]???+WS?4q??0?)?;֪(h?5VE??,?) f?G3q ?-ľ?q~? X??+v4>?ZWh?+ ?澦>ؔ/?;?C@?F?SA???.\?bm?7?i?)>#d?H}ֿL?>?a-?׾,~?#?(eW7`P?%*bd?RO?Hәls?U?3= *徜# ?6R[ҚX? N25?E#"?ྐ?.΋?HJ׾Tm$?Ҥ|?)Ha~?&S<|)?GJ9?9 ?^?/|?)k?$b??;S??'??5Utr'?u?)|*@?R?zޭӿ*? @(C?;Ѿ?K?@$?5]???4Ⱦ?v?,u?#yk?r"f?+?F_?υP? +??=0?6թ?6$?S'?(-Xu??Q v?S>?S?ƿD?"X*?-L?q?7?3@n $>Ʌ?`JŽ?@w<{n?:UT;???Am?B˪?;.-ܿHw? |¾?%?!!˜>9$?0G>;W?)J?ڛr:4uu!0Z?)~?Fƈ?Pw>z?@?F$ji-?:?/ ;[.?1?9+]?4>2?.f?Br??` ?3ai?D"? J?16?#-R?J)ї? m?P5@)?8`"?C@TmC?@3??,?"?՝@)?0T>j?+??Pj?_?ͷ?!,?>ݸ6¾~ ?Ծq&K@?f?RľV?(?*?.R?y?澲y?Db?3,?LZ?$ @*ej?P?o>,?#;p?&>jžf?J8;$?r?*ؾ(.lPjԿH־J?:Kb^{& "np??8?DyF ?tT?,fƾwĿR?.?6%޾i徰A@J?azo?> ?vH?ۻ:?h v)>RO?G?櫹?Ҿ5?DD?-?J84??<ݿ}>Ë?-?36龃a?52?Q?>1X1r}Si"^@)?.???hL^L㾄^bv?4?#˾?ߡ?B:?B?4?ݱ6x?Z3?=},b?0k?Ŭ@/<8Qi?#E2?^ ?>?.00瞾?ςg?.??4??,4t$v?I}?AU?5b4?/@־?b??BB?a *@XB@!{?G:?WԿn?;L@#~???t!4?EOgL2?.x/@%?'/>$?h̾>>񿧼??7Wp?<&q3?(&׾v?3Z^?:y??Z?MI?6??[1@'?)Pd`??>\X_kvЊW!'l龥!?->(IㅾmUgf/ÿ~I?ߠ ?AvVy!~?I? i7+x?#~if(羧I0o?4ȿkCd3b˕Fc?<"ξ&X?-{.P?& ?F?(hh<.?ځ~?8R?9Xɠzf?;߮4??R_?$\4,? #?K澇1Md|?>#Q@?Z@%B6@?D~e?Ь?A?>KGo?)?/T8@#?1?Y?a|?3Ί0B?T|?&澉?Ѣj?@ $?ޝ?RG߆ ?;?"~.?6?:z:6?Є?+?Z?:?H^?5@(ɾzn?Hp圶?l?5ɐ?;^?-h?*?@?KS?8ftf(Ź?>?= U羙ia3zsO?0Pjl /?I,?~E?4C̪?j6?H?3ʿT|?+mϾN?)k?44oz-.ܿ)=Hf8 ?*?7B?=^vhg?2>?="?>x?P?4?,TľJ^?x?QVub?,t@T?ت8?u?K9x?Nm>.KK?62w\z ?JC?F?_#@?`AB>EAp@?@ (]?N?3?¾4~?U? ?I&>a?6:? ?2?ξO=~?,?@%@ @$?ZLjq?;V?,l>?٤R?/6G;t? q|P)?8Φ?,eT?7?'=?׾{ ?EP>L??;T?7?R(=I?y@?'*Ay=?9?C? LXzv?0?ܿ7?ڬ?h?Cپ| @o\?^?#?8?Ծ-|?3?-Z?HU,N?>O{?rAtωhܾ@) dȲ?zG?x?!/?Gj? d?(pM?ؘ?Jt?.a?.?+)?.lV$??;j>'|>Y7¾SUQV?5?/?:-h?>lƾ俥,迖2 Xir-zj]>lsr?Cj??W#?@ r?蛚0?W v??/D t>NԾq?B?-]k?܀?&$>?Vmǿ྘{Z?H`?+>W{??CO?-myP? \?f?8H?)2ʾکԪ?/0Zq??!(?I&? ?JEM9?Ks??l?7śV?;?H?'C@.5eZ@*B?ȣX?3??Iz?-n"?uMi?/5??vY@?-D`?IG?E??p>?-D?Gd49`w?0G?)"?ȏ?/Lþz?,5>{M?KP$?+?@e?\?6(?>C?,?,Wz?FU?K?&h6T??=B&3??2j?'x?CI ?3AJ?@@%6z?Z?RȒ?'ONx?1n?)?5Њ?N kp"?M9?h?A? ?3?`>K?=?%?H?0K?,?2?>?ү?f??#J$?CEp&?|?̾ྡྷr?ԫ?hؿ!?@ھخ?Pj?>naq8G?}?F?QhϾ$HHQ%\a?SB?2Bm?=?8`?%EB0f>?1n\?ESi?1)JPx?"cn?F|?`²?:?X?,.Կؿ(?#q?%~?r?龀h?+2?+,QV[6D?5=?@Vs< P?N!?N ;usоYg?@>AB???٠>6 ?X>@? `?毾Kf?1M?Ǎ4?$0?ء?̪!?hV0?u"?'?@?x;|s?|?탾,???1Fz?"~?>?a?=\&c?;`kM?Q?'g̾%D?%Ⱦ)>y@'?{r?,? 4?Pώ???^?¿0^?#Cg?'뢾r ?V+ĿƬv?վLr? lO?&?T?=,?ی<?9'?VX??g?.^r?B?N4f??83A?ӥ?T? R? *L?˄뾺lH}?%Z?ZY?2Tc?d?#fؾ?>n?G$?4ƾB>A?bh??ҹ$?Ͻ ?3?6?ȸ?!Z?3v?O?7w?I:?`?!M?η3??-o5?+)? ]fu3H F?9?r ?!gXI?xZ`?3v\V4j?*FYg>ma?6:i.?hƾڽ%?A>W??nL'x[1;9?:XWཱྀEg?o%?=i?6?7?gȾ/}k%5WtE쾮`zʰեz?,?F~?)r?.]???)??1M~Bi?mt?K6?,ƾ9@V??f?:|*?'V?9@1I??*5T?'?&?$?u9CNP?ۊ?@C??[?]?S?2?/>?"r9U$?'ξΪ?*?|fC?[?-? \n?/@t?+E??d0?9?0??2k6?e־T&y?Kt!>{@" ?N@ }b?T0?-?C綾ԣ?33>q?4pؾ1\>?$cnx@"?)?-?W??%?p? ??9?-ehn @7Q?/@ݬ=x!٣}"DԾˋ+N?2ݾlt8eP?m?aU߾:?=?.+?-?H `?4w>r?Fs?'GK4?OZ&?Gń?b?aסP?8?!>?BT%? ?;A?X?,ar? I?\^$&?T޾-?,?8֢?>Qy@+PwBA%Ծ,fȨ?DD?,G۾?=rOj?6h?׉)?-Ī??U?!?PN ?JamH;KP?K?Ȋ?׵?2ݶ? @%|?8И??H羥">q??#,?6վi٥?A?K*T?Q ?Pٰ?H?0ž~?&1K?Frz?Mq?I?=k>#?tV?.?+?vk~?w?-:?8)?@0?7ܾ];T?,>?g[?*@?NB@'A>$E??ߊ? ?Bd?+A{ ?*?ַh?f??2ܿ!.~t@'q?<ƛ?U?֘p??Vh??_;WPN?K?Bx?L?:(?]?IgᾜS޾t?>>"!?ҍ}QŶ?3ru??߾F#?2=?đN0?8j*m?j?#$N# ???&|Ԫ?C Qᄉ?J}?4Hz?5I?C?3 4gy?L?"?z)1?B?Tyj!?˥?F R56w^?B3?@m>>?5 ?R?4/6L?9y?2??% Bj?M95?a@?!?d#?2?,?E܅>NhP?ҿ?6?ʄz?55?LO达??)-?04?_?BpҼ?MkrX???H?6?6龁Z?B?&/о?Hz?W?d?p?4'H?D?<>!A?4\@?F̉7?#gҾ7~?ѶP?%x?#N?٪?7 ?FM?Ё?M/?:Z?D־Z>XPйѾw^?@B?>4@%!u{?Ӑ?A @/h?҂?K:?5?!z?.ip??ZG?mvt???0X?6P?;?]pX?$b\o??4 ޾R{?k?D?Ccu+?Տ??H辷2셿3?CV?G>?B?ܿ}?E/k?\?ajr?):"?BDsC? t?۶4?-DVY7?3?@?))>%&^?;?9 zhK?>S?=Ӿ{࿰ɉ0?++~?Ah;? ,?.T?[|̆? .*?؎M?LGJ ?1"?@tx?4D}jj?¾n?Y?9?E>?1>J>?"y9E?Sf?E wT?,8 >?dtu`ϗ?(?H???[?I羼~??,/?+?Nu7?vr?DE?0?w?M!Y?񄾤s?~?F ?9s.Fѩ?7K?+?3U?HE?= ?$'?G?XW?3ߐAFZ?&H`?Q?cװ@+-a??->f@G@?B?/?:.?;?*%Ͽž?%l?C?;龘q?&?8>?6T?˺? ?τ?O? y?%?=?J'??H(l?`?%Y?AX?%)??F5^I?6Q@$.?'-ѿ24?h??xvԉ?:T? y? e?7?>T h<;?Ϝ?>8Kٺzb-:*Va|*RM`?!j,?;7?6r?И]d?Df?MڿԿn?5Z?>`^/"?NP?>A?1 ??9Ҧ?<.v?:?5(?+?N?0#  ?w?+ђ 쾝S?8Ϣq? 13\?9?*?>?@&l?:?F?ա?d4?J8?A?௾ ?U?5#?8?4QJ??l??B#?+e{A~?؄?0? Qk>Msz?0<>xP???A?Cl?BP?`?6@ ?Vw? ?(?*m? oWt$n,?4) >?Ez??@?$?1?Œů?73n?N@޳"?@%׻??(??AS?'?>w??_ P?-?(L?ܻ,>;>.\??7 ?Z\G|?ր?&?#?-r?y?m@,w?Z?3FH?1n?"F mJ@$(*5?? ?[x?< v`?ْ?׾?]?1ق[?T9``V&?,?&>龦Jl?~ѾK?_?=9k?/"?%?ݐh?2H?hOHҾ?'h?G˱?62Sj@X)?:ӾUQ³X?$q?PLX~ʿE?O־]A}?>$?U) =T?Lྸr?KS?7>?3{is?Wb?3 ?A???"ΰ?C2?26?45?ۢ?34?u?%&?1W$?6?%?"̥=?Ն?0?$pr6B?d'?u?:?:D?(?l?EYY?4y?,pD?;/F?Ծ}?8e?0i?C^L?86ɾ0?̑B?2g?;̃?4e?ۀ??P?5޿F0?34i?T ?0Teş( j?5#w?3 5?MK@'ː@'??M?E?߾u?H6?Hq?:?E?#?-ވ??ܦ??;rG?K?W,N?%?.?Bl? ލ>T&?Ko?,_?+?K?&?x3@AJ??U?-8? -???ҿۃ?7,l ?v7?JkA6?/7???ӛp?4ߘ?gwN?Z?l>?P<>&?D>f~?,?P)HРT۾?T?X2BluD??V?]%1?)?Bj?8>#U?;}.WjQ?B !Ҿh?<?Hȃ?Gl?j\f?䟝?8llH>?݁?ߣ02?31>?mBz?Yj@( ?n+? fDr?L?X>zgҸ?$:?:?5`?#$2?5?4R?x?G;0M?ažJ?Tx?M濓ǚ?-?έ>2?X"?L?f?a?>WMg?%$?jj?;T?7R86?q ???2>?/?ྞNV$/?@?n?ΐj?J?8'?] ?-`?/?+{??2?w5O0ƾ?.;}~(@dӳ¾??r?3?5@?`?$??"+&@/s?I-?3?=@&Y7?9Ud$v?PA@??G?Þ*?,W?%l?8?a׾%供6?8l:?^?#?|ˍ?/y?-?92?[?ϙ?3&,3?<`>ΠnI1Y?ah$?#Ą>A ?(A̾Wv?~C?ڝZ?&I?&LN}?V @%¯?;? u?Etm?*?E}5|y+?oTc<> ľ j*4?F?R/?)F?1;?9n?\I7?%rZ?D!?֜t?̙;QT?ɐC"?dn}?.>jyR??忤r?5?S?Cu[?P^^v ?9i0?I&???U?O?n)?Pc?1G-?6m[ 澨J ?;A?$\l?,?Y??p?;o??C?=r?!ZB?+ ? @?$g^?*B?3? X?[?=??-4xy?'U?q?ׄ?)? ?Hh??7|d?L/kX$.??6a?1|??AH?%@%-?=ξ޽Ө4?1H|d?[ř?KpBZ?6?Д?.l޾ }?(˵??'j̾Pr?f?1H?,BC?F?4}?? ?c`U?y?߳b @ @ع0??W?@W?4hF?$Hy?*?6 +&4X?TþfϾs?.ބk)?H-տcs tr?(]x?A>?0?Jh?,?3??"1?C,2?>U?:/f? 3cW?,>֕ ?Z?@O?Au1?`MQ?*I?7Ӟ?1>Ӏe?\tVc??F)?.xY?$h.O ?>?"r?I?&?$Xm?~?Dw?/FKk?Sj?G?B?-ヌ""? ?zN;#?YL+RX?S@b&?Ag@)l?9??$Q?m?Ͼ봞?g?;p>!?0> Gq^ y1?y?7>??(?BH?Ρ?Áj?1ٳ?A?*?J ?R?g?[ d?2 (?D.?,h?$?(x? r$? ?.,?-??>?5|n?3N?کP?BN?4"3 H?:GyRW̾h?KZ??z?J˸_?x?W?WUK?E(??j$@I ?L?@8ǾEL?pV>^PuStx?I hUR?,#?#?!,ʄ?PʾRھ8+?/S?ͺ?:!?0\?<쾍 T?'Yl?'{P ?-?55%?b?weDŽ?>0Aþ ?5N>?(h? N@)z?t?(o??*D/?[\?/e?/?۲?n!ξsb @.?@5t=?]㾭E?&O?Z??Zň?+]f?>?@S?W ?_p?GH.??s?5?Dw?}>@?+/#?R???Eh'!?nA??x?v)m?:|? ?6_?$?L= ?74?e\?T?B2f?ˎo?*?ӹD?L7?< ?(?OH@"W? t?Z?9? xv?"3>?>U??0?=*>?'g?2c?O/?%{cJ?BZ?->ɾl-/?2䦾>ӆtj?,w>&)?Y3??5? -?<]5?6'??;N?3?? Pؾ}zK?'??ԫJ?ֺ[T?>?* ?%ƾ\ y?*>Ud?pN?2쾮u@? k?:e?X >&'^?-?2eV?%oN?ۘ?, gbp?PS?ݪ??Э?<48D~辿?$?<&S(}`}y?iH?Tb?+C?0M6?'$?N?=?%?4׬?>Ⱦ?#_g@?.! ?˩\??4 ?kF?ș4?5u;?;z?Fn?&࿡?4֜빐?ݾ>\R?M?:ǐ?R?ͮ?(.?/,a=?'?܈E?2r@'g?>C2?M /?8? ? ?܎>^Ht?5˔?G?1\t[?"j?4?4hh?-?2a?20?Rc? 澹??%G?~e>.?C??`v?v:?:ӾA??TP_?;m(;H?_yJwNʓο /<#???VwF㗿H?7]P8|?&\s?$׾x⾑?*O$X?0&?d?Uj薾>?=ى6Mb?R>P`c̾\%?,Ljf0k?w???־J6?(0I?^?ӺTx݋?OZ?;?2j?Cz?}&??ޅ?5ܾt@1??KG?@K?:??!?#O??}Ⱦ??Fjƿf?t]?Ɋk? ?"?3U?t?!Z?/X?4dd?_??@L?.?T{c ?JZv?CS?2FH? q? M@(v?V־Uh?@/[?0{? ?EG?/?5)?&??̂?>C?)pZ??:?'?>?3#?/ʹ?$?ǭ؁^?Df?4P? _?O5??.]?M~?@OȪ>r\ǾN?C^rd#u~?-; h?T?$kH1 ?`~`%?2^eZo̻?;,??;N?͖?b:b?V?Qi?@: ?STAwM>$?ލ"?;6hH?Q?+?Jɳ?.iw]*:?Qh???0?%?Ey?)B3ⶾ9x?ܿR*<dž ?6)`?JX?0?΄e?ʩc?$t?;x?F2?چ?C^? ?(p?Є?K?#.?CI?v^?:?+Hp?C:?;36ȹ2>@.nm?0#?F$?Cz?S?O?sn}y!+:?[Rm?/z?( p@-xp."6~D?˶?Gd?xp?Wo|7L?H?e?R?K?@wW?G6ݿ辢N?G.W?aΈ'~?7Ū(?{Y=rf?*^?AS?\׿I?Q޾A?x? x?1'ۿ?.?ތw? 2$?9'aj?7o?4?&d?N1X?9?!L?N?9A*?.?<\T=uX?Q?:ξn~?E0@׾C:r7o۽]}?%?J?:MÝ?C"?G?P>+?.#?#?t ?9羉ѿ?,?|?!?"y?'`x?ñ`@%:>ta?ZM?9?78@ Z?:?86n?L?#|?>`&>%?BL?.?6Ő?z?OOk ?K?Ѵ(@ ?5;P?3?Rھku ?$"?д?&@'jj?>!?8m?3wG (AY??6v?ߜ?5Ԓ?۳?0cy??+ԾW?z?):f nF?fCֻ?oy"?3n?5[?ݸf^Yt):~#??>wLt3/?618>?9"P⤾^(?, ?-?WGp?⾩$B?2d'{?Ov9D?1򒾔f? ?!{Ⱦ Q?3Byͱ·?0ʾ??Hξ?3_?.t?!?ja?6݈?b<\?!O*`?(ྚB?=?#'l[?'AG?3`???gN?0>c?%?.q?&bK?q8?F-?濡;?'?|y?$P?%?8@???*ȸ?;9u?2?N獿/J>ҿT??>6a?%i?`8U>Q???C|?3H??f?z?#?!D?Gq?f ?W40??-ͨ?1?ؿ]?ۘ??8/ ? rֻ?! ?%E?$>??@a?F?^?j?*Z?4>Aj ?۾+w?.>??W?ҷж??J>x?/fN? ?=]???q?6J?ӎ?}?2.???B?2>V??+t?4L?CJ?@6?ݬ?j?\@ 18?7?7?݃?&?./?9]?,??ĥN?X8??()?-4?>'8mmݾX?侦b?;$?=W?/W凾H}n?>S?D;E?OZ|?[k?Pf?.(?NdTc!z=K~4rƿ9??+oOʒ>/c"Ӊh_h?!5?'?/ ?7JH￟&??6CxngM ۾x侶f ?J ?6??>ݾ?%nI?A/?׾ᄍ\? =>V?:h*?X?,x'?>?#qʎ?g?H??eq"@w??Ql)?2?; >"?N֖?(#?՗@ ?:Y>qqF>?ܦ?%{?,2N?7O?"ʾ:?yJQ?ܲ?6=??٦?*G?>?4?0?-4?Z?N?/ ?2p|?&U?7D?e?A2>d^?kt?$ɑ?܂?F????U?'??:F?5s=?\`?L )8?P@eƆ?` ?*;?%?m?K@*?f?ɪw?~?V? ]?Ό?G<7?E.?La&Ф?GF9Ѿt?c1{?I?*\9?n? h ?D?5?1?@?5?R6k@?Nz@?2u>?4e[?Ҟ?zk?$3? dp1 ?& ?h>꾐W⾽?AnB?32&yοF!?*s?8辇?0r$?24?%hJ nw u?;l/ڿ??ߎվ@^t`i?(A ?-?3LO)N?"*?/?'(??,G?(l\?8~I?y@(?>u?*sQ0W?).J:D,?$?BrǾ{@F?, ?>?a?6?;(@1?B@I ?*1?Gig?j >PP?+> 3?FR?.O8?b?(@&>?HA?[?3_F?F@"?ٸ?&*?[B?3+x?}?.}?%?Eb㭾ȾK߾,b޾u?GتmCp=f`Jr|?H?WrD?3P`?S8?Io^iX?L䬾<]bLY?3\C l`ł??S?8?Ex,Z?*=?@G?AzL{?WȠt@&kQYʾDO?^?uXkP?2p?״?@? ?#?qf3?RX?B?_?ϕwՙy.BH?K ʾ'cA?Yw?~G?,;?- ?y???:!P?s?)? v?FxXBL?B?/轾Y=$?\?:ҾF?VEH?s?C?&lbUs?1?-^L\?ϳ?0?$J?.ھK,Š.V`>lž?he? %?e? ^?HQm?A?4OS!?C?,;m?O?G?Tc?#?VsG WTEZkj?`??"??4f>?;W^@#=P?ҋG?#8?@@&?ö?VH? +i?-?,(5?:eB?C.?$[?C?+? #N@%?6C `?P=Ok?e"@(D??"?0)?޾ş?A?&(?V?L3?l?^]?(B?GM?ޥ?FJ?z?گ?W@(c?$$ӾI?&?,L?{?#r8?Fh?'?r?z|j?$?(?^ݿ䨾?4N8Gp?14SqN?P忟??=lj?N%Xic>{Y Wƾ޲?#I?Yg?;,r¾k?⅚=Dۅ_ }m޾?:F?<䢾[¾fH=?ʸ>D1?Y?+h*?u?Pdt?E?9J?˴pa?U?,?? 7h?;,?;;??I3? 9?7?J?{B?"K?.?bUO?7h-?M>?9Pj?HmP_?"Ԭ?zj?D??Q?"?Ն?%?# ?(?Bk??A?0?4?(?M'?P?=?w,7c.X?3Y?-?|>?i?1|O?l ??2D??Gp?q?9)>M?6=H?]8?_?`i72?6 ?~?>?@@ξj?5c?4?֙*?_?)??v??<$@c$PN?&3?s?%!~\q?I%?-?K??i;?!=@?M?6T`?Iw??x?1?/??n?302z?7Q? x??0G?t?Pd1 ?8?Bxh?Dg>???O?%9Ҳ?m@?%q?O??Rؾ ?ԥp!ھm,?4QqPԿkoͿy?=ۧliw C(?LR>\?8龩4?*c: ?*NjP4^^?@j?:3:nCϾ ^tP}4??`R?3~vx?=7&?"[??(u?⾍"?#?HR4?0?=Px?n?)7??{@+T?%ތ?5뾆;?%[?Edt?KO?Ѥf?Q>?)?@?'?:e?7n?Cm?I侹 ?+;?:T?;8?8r|?"O8?U?8|??%?WpL?Jrb??q?z>?M&@$?ʵ9?-Í?Y?EH?>?C"?(?KL?>/wrqu??T?5%?* ?-?YV?6˅?ª?W?w?Y?>aF^?UG?Gt?5 ?+Dct>|@$Y@gކ? S?x?5D?'cD@+\?I?C'?6E0:?C??5KK?X@0?*?!o?)۵??? *?L?| ?m?,?v9?t(ܜ?.N?#?%>[t?*~?%Ij?*PL@!βF?*`?$u!??=~?#?" ? x@(U??$0&??;S` ?3c_Bғj|꿘S_8?[ g4?)*?(󳾯S?\IT>]?,٧)?'_\?& ?Кq:%? Փ?˚?cbkd?('?U??9?/?0oF?۾ )4?z?:?g)??3f?ˑp?˾? ?ܨ??!"?z??(|? ???t?1i?% ?pB??bf??]?,? ]?t?H?v-?(;ȾPt?Dx?Ey?y?1?A@?J?~? ?*??)L`?ٌq?/0?*B?Ŷ?Y?=f@$;Fl?&?)@ ?>R?ׁ?(?9C?^? ??ӌ?D?:?ȩ@,|^?HQ?(\?ٰb?Յ?%?h?9??F?(T?Nþw?/`?Kt?.S???E,y??P?\?6,?._? ??HJ@?>???L?(2g?64?G?B(?O?4P?Z|~?1?Br?06H??G뒾, e!'?D$?W02?N7`IGQ)?L?}K?A꿒!~?[u?'DxM?Rd n] V?<5Ծkn;SB\?ҡ?Iƿl?D9jb*GL(|=k*?3:?Np?#%?1z4?C?>>zO>:'?y,?*i?2)`?gR7?8?* ?X⿦hV?-??R|?~t?4;i?G]?՝?ݱe@,=?La?,?7k?2P?}A; b?=N2X?ؑ*0?%b?Z?6?Tn)?(¾?h?tK@(i?Ղ>穼?+??z?@*6?$?/μj?VȾ/?????gJ?!K?'?Kr?N#? ?+8|?Ȳ?OP?????~?Gx/?Jz?+?K?.,?yh?8s?T?ߟ?ֱd??"]`?ԛ? ?q?/c?պ?P?x>D-?=b??(???L'?H'V?){? @(Ŀ辤>mD ?1?*?*F?Ŵ?4?2[f?("?(I?Xꈿ ?-?L#c?8 #?LI?-H㾅ph<$+`{:?Fd+?MɾByX,=?>]Q?ko$ӾnW.?U|_? ?YG|J?ȿ ྪq??u?Ф?+#6)?3H?D"ڿLɽ?C?@'?,9?M*I=%N{'?@e?5,W?// ?oV\p?l#0)?ͦ?߶C?H ?4O hYj$ⴾ*:?L71?,?۪?N}?)A?#8J?/5?I~?( ?:┾?{?-?B?ƾ̞?I?(6?9?օ?~?EV?߹?džS@"{??!,?@l?f?=\?޻?$?ጃ>q?A>J~?Ww?)??Jz?F@)|?\RM??&?:d쾗2hy?0Ʀ?+?e?$~?*b?5??Qnz=t?A(?c?@?Q?.}j@"?EL?ۂ?h?E?F?.?$^?v+?̧m?ϕ5ɐ?1?,N@!?-6?%Z??1Źw?7O@"?#?@h?ř?F??9V?g?$?FྡR?y=?-L??A'V@%??J̇p?7B?(4?h? ?c?=?0Y?3?P?ڛM$?]??&r? L?}?B? R?Z-O?م޴4=F?Impr?3j?/ľ?z?,?1Ҿ@M Bqo0K?IfWP?AM?ETق24c?υ^?!оgi&?BF?.{? X?:?A&b>r?ђ/?0&?6L^R??4?D !?͗rU-?8?++ w?a?/ ? ?x?,-оK?Q?Ք=?ʣ?Bc@#\T?d?=擾/^?9?Aɩ?^%7?8?̛?I>R?9`?@?\r?(?84@*3@-I?J$? H?ӢHgb?/6~?D?۪???'?؉S? !?@#R??b ?C?Պ??0?&D?J?6n4?P?Iu?.?c?bd?&?8?>6?H~? 4?,??/o??M'?J8H?%B\?чQ?[?%&?%\Z%Y?0?K*@dw?6U??{Q?@?J??/@ Q?D1?ŀ>'?(|?R@$?9Q@(MF?Hھc/8~~?0@ ?>ܼ?6¸?p?+i$?%Q?MT?,EW?4i?޾ٯ8`x?PuXl?t.]?MB?@J?=Y侊 X%5?"B6?d僾{?>oX ~?B0gnr$>P?=m_ֿe?(5?/.?,%龅.?S?/?>;?v?-!A??Ae?ch?J?tF?Z?Z=?Jtju?5Cd??K?,c?:?rDRT?C??w?9>e̿ U@(?*&C ?'Mi`?0?&ڿ:?%2?$?A{> DN)>U??2.?q)??M?ZU?4"??6?%+?D4?~hE?? ?3?n?tXcL~ҧ0?,a6?0r@(s??)?4f.?8ޝ?1l@#6?ռ?/?6Rbwy?5B&?кL??? 87@/@!^?ڻ0?~`T?PZ?[?;5x;?0;?SNj/$?#?A6?3F?v4?*@4??x@%??.?Fv@\V?6?"pr>6?z?޸?/??`?2"Z?4?@C?$?,#?Z?Ɏ?;?z?֜(?/ק?dA?# ?Aĉ?T0?.r?7L?=?#xl?Ft?;ھR?C`?/&??2*R? ?8?W5D?:?8:?Ȣ6?1p\5Q?R%)?- ?Aѽ J ~G3J?" א?CF2\? }󞾴¾?'?|?(Ȋ?E?_@G>T>A?&?X?'3[@Qk*>($ |?ʿ?"dr?S?Z!=?]9?I??5Z?f??*0?2t@*?79D@?;Bݞ?- ?@2?U?ذ??@ƾŰ?j?,q+?l?>@ H?Hي?]?S? Ҿ?9U?κ}?ڋ6?mW?5Y?˫S*>?<.?1@# ?8?Oz?)?8?*$?6?-?-R>=?ѫw@% |?ϮBw? TF?׋@?7rJ?C?"O?F9?{?d?^K> ݾŶZ?&1?2&PHe?Ce?U̹CK;_?Ϳ!C?Aȿ.?Q?4h?!(1?Cؾa>i0mФ?d?5VF.x%?@ϙ?CtH۲?hDE?%?K¾^?$pͧ?@qJ? &?!tf~j!1ɇ?BXz?&$&?#g?(4?L$q|N?!V)?e?jz9&?I>?E$+?!?.?Q?\?(?(c?#龙Vs`_T??J?;'ђ?ؽ?!d?Y?h?m??$??I}?6j?8)S}ԝ ?ψ>1C?״J?ٿſ???6???,Y?6x+t?T@?蠖?ɯzzHN?"t?%,?WK?#f?*?>&?؄?HK?&ƹ?{u?]?$.?]e-ÖR?R}?ʵR?t?d@"R?@%D?y>??#?_?O?/O??bD@??5;@'i?6?4?9XV?N??(H?rf?NDr ?jN?M?bd?2?f?)??ܑ?NP?+Ign#@?>̘?5i?D ?6?$9? YTt?9ા6ZR?l?Vd?Iʽ x_&[d>}DA𾷅?6?T4?3l?76T *'?L V?3־(??8? b`?CG?/!?[c?=!?O7Z?3Q2?E?4?*Mf?7-.?0JľW"?/h?(B&?Te?"3ľh?t4?֭?>ۊhI?QMCr y?Lf?D¾/ ?*M?0/B?\_?n?;?վ ?->-Ӓ?k6@&I?F?P?(?ԉ?߽?/?:?C?m?۳ ?.Fp?W)?Ӿ'Ⱦ?8?)?\J?x?p?8&?ڏ@+a?]Ӿ?3\?Z?//ȑ?"?$??6?5OU?"?w??Ϸw?Ӳ?3pZ?>?l??I?׮ ?o? .?k ?_?J?+?,?x??2?J@$e?=9e?|l?c?K?>B?'[Yi>˲N??2???5?՛?12>EO?%?2?(tǒ$?M?H?&Wq DrT|U0?b-@$վlބ?CižMϾ\Y$E?(c}oM>)Kj?E;E7sg?H߾Dv*?-9sv?LI?;@o?KN׾:먾[?Lb?'R?8B<5,? #M? ~?;?6?2M!?(5l@R0.U?6?JMy?4?*t?U~@.-?:?8 ?5t5p?%?3"?ѣpm? ?Բ ?u9?К?J5?}W???D$??-a?NgM?l@%?5ዾǾP??X?>?O?@??M?6G-?1?&+%?Ծ˥?/?;v?ٽ?+i?)?4?J8????w?1j?3 o?6X?6?&M?A.@W^???M?9a?DF]b?h@#s?Q_g}?ڝ?&8?/R?Ӽ?A?dH?6?̭A?$$? ??&#D '?6??@+?PX?;?\?k3?d@$Lu?:? Q?-5@?@ Gl?X???4?ִ??6?_B΋h? žؾz"?n?3?CT?[?M?VM??"@>z -d?@;?->5?I?6?*2x?8׿:?92?S?9Pm?I>1???H䀾[ؾ Iłq?gƾIZ=˾G쿤4Q?%5?6}?;3N7?o >N,q ?(*?S羛 ?!03(] ??E?'|? ?ɶ?!^?;"ྵ+3?SʾEd@,0El?%?qT?C1?7??CK2$u?D?S4ӿ?q(>?>?(@ ?j{!??D!?-?ʫi?)?.?)?LeC@$9?']P?APn?Ai%]?C? ??!?]%쿳+?9?˔\?A^\N@ ?-F@%?%!UMo?,Vv?y?"* K?7mľW?(W?6V??}???(?E?ϿU?z^4?3r?/@l? '?,?Ӈ?)@,l9? X@-r?tľW?ڴ8?95?ï`?׿?1 ?ܗľ)y#@"?X?8a?@?3Ƕ?%4*@%ھ?/k??߶4>Ј!L?G5?ӎ?"i?/x??4??*?J,?o?Q1@#/8?Ğm???6ҵ?FC?B h??݌?1:,?S?>?!@ba?.q?B?n?徕4?B[??ޠ??&g?9j?&R?ߕ>־ǰf@'x? ?WMH9?#a~?@,?]?g>ZNb?]b?M9?ɾg?i?8?ȉ?a;?V?=϶?"e?&DH? ?V  H?3Pi?F[t@+bn??6|o? ?)3??͐?w>a?ɝ?-*?A?R@^?ȑ1?4n?ȝ??-j?B@^O@&?8?ЃRh?4?H#@%Ö?5K?j')?-?3Z?8Z?;?"վ(?"?$J?$? ?&?*? 8F?'8?RU??GY@NlG?0?:9?/ɟ?6?Oz?A?J?0?I?9 Z۾)I_t?.ʾM?>F?+.d8;M?^8-{?>$3v?Զ?wG>mہ?;?8x774d`?7X? !ľ̆od?5Ǘ?NMp~ROL?,>?,M~?9?=?'2H?&?7 ~)*v?e??酨?]Ô?'罪?2$@$(?%y?#?+?0~s? ?l?$?kl?$?A @7u ? M@% j?х?3@?A?+ϴ? 8qg?Ҵ? t?;@/?ƴ?|?ʟ?/@$q?QZ?@#??D@$?1?9? ?֛q>h?~?}?B?@??0S?GH?T?M?ٸ@( ֐/??@J?ܵ?o?@$o??)???G???0d??x?i܀?1d?+<"N?8&5V?ii?@Xx?HJ/,?@TP*GÐ?=n?W?Ð?B (_ݾIx,?N?>?28P?R?HmgN?4ھ?S;Bo?3?!c?$*?1?C-@m媾p@!<~@ P??I @$p?2/@!D?K?=snA@M?#@@*?# ?R?%;v?ۺ?!,@Cc6?0n@#?ӯ?(Q@s?Q? ??3!? u)?* ?(ž ?"?H?"??@?X? ?<?9,??']@\p6BD?Jak[?5oq_ 4]ac?Df?Od>0-0?;"?E?A(?(}?;&$?Hd?CaUJ??$??? @ц?%(?$??>>fw?ƾ?^??"?!Ҩ@' ?n[:?ª;?%?/?ۘ?g?ٞ??䦘*)?:ƿ8?R@(??G?8?Q??ͦ?ۘm?q?ՎJ??*@~?x?R?ؾv?f?+S?>@ @"CY??H?p?Ȕ??*X?3@+C>]@#??U@-z??2?'G?,?w?ڄ @֊?@?)=?R7?șN?60j?O+?&R?ٝ?#p?PC@*? ?1?;2?Ї?A?؂?2??!?ԓ ?;ަ?׾^?3?f?ٮ?(?.-@#1!?TR>?/?.?ɂ?$Bô?F`?Ԟ?B?άT??%@7 A?K-?$???T/\?=:?5ސK5?;[ᾢ?5aG?ATy3?nD"?1?DJ5% {?=?2P>SO򌾏΀)?>$}u]?+?kd}zP ?近 Q??Oi$=?Z?H ?6c?DS?*B?:G?' 2?3)G?7F?@' ?*׿??=?B>Q?#50? ?3>MN?2?/??#($?/?87?y?/!@.P?I ?J?FO?'8?@%c?t?&+M?ؘ?χ@+b?g-?0#? K?K^>o?)`?o?3v1?p?Ț?t?/u@(Ş?l?'@'HPr@(H?-?LO?ʈ?!^@)@*?@'!??I?աj?Z?.?Ew?ބ? ?.?K{ʅK??x?o?jj? g?k@#27|?7L?һ>6?҄U?*?A¾.?3c8?-?2Me@ٲ?YߠArJ?1F?3N龒?9jbnҾeIf^3?G),ھ}ea?HZ#p爾*?F?V,iXþ@z?4WZ>O?R?IxG?٠?8u?#/澨?m?'.}?U!?ă ??輾f?A NV?|k?#`??Q>?>P?GT??@找Tt?)?ۅ?l CZ?ת?/*h?#):?0#?;w|?$?? ѵ?$?9?7(0?P?Gp?<?\>0? {?Vy?,8>?oN@!?:?-b?@?D ? o@?<?/F?ĥ@.)?DJp?@$޵?\?-;?α7?݉6?X?0%?8f?2? >2?ҹ@)]??>h>Ŀ~?iVF?:? I?!W??ג?@%?s?P?C5??8?5"j?%x>Ì?A?v?fm?J?+8? ???b.?3Ho?"5? ??'??16o ?̎v.r?) ?D94yז?$Z )x?-??9P?*@@0~?xB?ǀF?B?܏fG~?? ]'?&d?"ڰ?ڦ辨/¾PvT@)?"?j"?U??ن?o?S?@k:"??8?P? ?߶@&1? @(?1?@&!8@*?K?!@!-t"?-?(??'궰? D?:a?\@'Q?0 rdT@.|徚 ?#?:ؾ,?4?b0=?(@#@_????&n@(|?M??)%־9>? 4? 3N?-?8?-X x?(?%T?ڮ?4?r?#f?F??_@+tȆQO?Hu?5%>?<_?:?6?Ef?zBξ}$m?.O??Co:/lb?UӁ?#?Wz4l?0w?LJr?M?`-?K7?8O?c|?;3E?e1?G$??=?s $85@?90澌M鿠a?5оո?6;:'?"Qo?D͘Z5J p?9?:;?XU>|OE ?9Fr?8?L=o?!?Bdt?*u"?+f?F>R';?zH?@ܺ,f?;?3ݾ o?Ԁ?,?0R??BwM@?@,?h?I7?J?3??U@'@?&??0?88 ?&c?c?G? G?DuP??dy?H?٤P@.1?駻?.W?8o^?A,??:? d?&?MF??17K??ݕn?U@+ݸ*?b?L>j9?9o@"?7$J?%f?.>T?EV? i"?ۑ?%?%?7x8?a\?o@!?4@%3N?*?̙@a:??t?0W?@P|?? @^V?Z?5?S?.@|?? P??ə?2??0?h-?@K?֋?O? @%4? ?1|ᄏ?ڳ=?!nZ?I??\?/A>?¾|?2@k?Ҡ?@?༾[:?"?YU?(Z?'CѾ(\?)$=CQ;?-8֞?D3rbھM8kV=r?Sgվ]߇?Do,?S#s?KƾԾn?QcrMFK?.}?NQ qb2?CP;bAZ?_|???|?\T?5"?Bо:?fdU? ޾x[yo?HOz?Fc?6?嵾 ;?!U?W ?&x?Ӭ?&rx?, ?(?Fo5?>=m?ڡ?J爾 &?5o(Z~ AP?DSq?F|xm#оw?%?ji??>rWƾB >X>ٮ^0b???7?0 ?EB?Nྋ@?"@'Y?q4?冉?lw????,&.>;? ?s\?:)V#,?v:w(k?-?J)Z?˦v?"9+hB?K5?X?*P?`?T?B?9T@"?J?*ȴ?2˾?@(f?I?@@%@@CB?Q ? )?E?T?d?Jc?V@&?Ed?9@^?Ѕ5?%?A?u?@,?Dx?*V"??6?Os@?x ?J@)@"?b? ??6?e"? ?RI?P?C@c?|?ܨl?*?O??̡?2@j?T?σdn?,*F?@?ՈV^?9 ??.)N?!iN?F̾ȵ?N@/m?<?M?\?]x?/?T/]?7Y?/?e??ABQ"Y?K?<˾l ? ?ݙ#V.zde?0X?P?FB?@V8?\̾ ƾ.KM?:L_?ru?2ke?; VA?eM?$O?Bv^?'p?F?,P?|.?*?X-?>L?ȕ?,llS?=? a?#3?8?f?n?Ծ|]縨?7?J?9iӾ6?u?d?@#i@$c?N?5%3?޾+ ?҅?>?@ ?A@*)?+?-X?[N?M>x?C?w@/F?x@%iJ?+L?+V?4PF?#T?%#?Ao?)G??I@d?✡@j?أ?ق?"ze??!*?&?%u?#V@#ޙ@N@"??Dp1@%1?DB?$?{@) ?Õ6??.??3<@)??'U}?e@&8? ?-"N?@::@1i?Y@+@e[@l?zd?ۃ?ex@!@?3 ?-@+v?>V@$? f?$????;@'kk@"u??nI>RX8?$m?4¾b?B?N?3?'>0Z???f?N?O?q?)r ?W?!??`o?&ݖ?/f?,i@??7X@{Ⱦ~?I? ?,2@vMоi:>X\0?:Ψ?d?Dɾ7v=1?'4?@OͿ?Gؐ?AbkaI;?Ζ?/ ?O`E? )wƾm?=K`0d~ҾzlQ?C?N8U_ ?D?^,j?aF?/0?"?8R7?>Xo?MdaU@&?ˁ?u????'??/}>x3?ׅӾ^,?4쾨hp?!?얾`'?`? ?́?ۣJ?(uP]g?@܏?!?J?!??,?fP?N&?e?F @$n?4oJ?.۾?(?lZ? x??-n3?Le>j?Bd?`?Rr?I?*Z?z@e?q?]q?{?Z?e@?@@#@*@?&]?@#5X?%??֛?@&&?7?6?Aj@AFY@'@/@) p?3?F?'2?@+@&@.V?&@?%?t?p?{ͅ?t&??27?]鿧k.FB ?7v?H ھeZ?8n?!]Xh?$HH@z@)df?L<ƛ辇?0?:ƾ?v?i?0&@3BmB>#S?/?$?L ?Jtn?0o膾 j?*3?^p?.?#?8?4Ӿ_)z$?{@iЅ?:1?A?>_?;;?9?̉x?BJT?齾?AH?2 @@"˩@,?ɿ?4m7+?Ȅ?G@%j?@'?Y?;I\?y?H;?"d?@"w?7"?-Z?NI4ܺT@'??@%j쾐BC? $?.;?rU@%q=?9?(?xe?1d?@#ԧ?DJ?=>?>L?'A?< ?[?!פ(:?)M?%5?=쌿?9?Y??s-?( S@(F?h?F/?#0jj?->~ol%?Ng?W?PI_?3P?8~}?6q?*>?N??.HhQ??:]?#?4p?6?T?sf?he@(-2?=ƚkA?]+z?׊|f??JX?4?5?DJW?~?-?D?*}N?Ս?FC~?Dl*?Y?Nt@)??(y?+M?$g?9:^?9p?R@##3 $?.T?/嗅>f?/cs@'y@*zF?%~0?# @Ms?WN?Z? C?@BضBjAF@!0 @*]?S??g@?-o?ٙ??1N??ΰ@@??8?r@%~x?O'?؄5@*b?-?؂?D@#HJ? (u@$r?*@&y? ? @o5?ܨ??(??6$?@'l?&>B?t@gݑ@\"?k??3O@)?E?D?M?U> ?GlI?CK?6m@,??=A?3?9$?6w?փ][^Z=Y!?>?ϩ?@.cA?DL¾s?(CO?G!?^ԾZ+?!9zҾȺ"#{ȾV: ?7Eh?FRF?ʾq7?4.?-?]A?Ƞ?<:PZ?5Ҿ?)m?1s?C,??Ch8߃wG@?Ny?R ?(?+þfl7?N?:?!i??:ܾC,??G$? -?+?`?-4.+?6@$?b(Wj?6t?жT?:k?5w?M?t}?eY?&??1]?xd?"?8?3o?֙?֏y?6?'v?)dV? ??9@/̬>"9| ?2?04;?#?, @i?Ba'?X?҇@n%h??"@%辵?3P?ߢK1?߽?VJ?΂?9?@$?iBBC/đANf???~?13@!?-j@)`?o?3@*3@U ?@B?ф%?@b ?9?AX@&@)4h? @`h@a?!D@'x?`@.?K?8?/?A՗?'?В:_T@)@"/2?5P`?1?Q? ?Fz ?!0?4'?FS?Qf7*I>F?H?Gb #T,@%H_?P3 t?JS; ?J?BM?0t࿩ V- *o?~n)v<̾dS8?C^ ?KV?:?A1辪VnNt|1/ o?B+>.ȿVؾ }k?WG<u1ٶf?B?E?5?C|U?Nw$Z]??E?)??'?"҉?C?7?9E0m?>1?" ?NW?*<7侫o???).?2V?74Mؾh??GDQ?ML? ?3Jl?V@$Br?1gN?F@%9p?? Q?>?z3/?? -??ٟ?ݗ?@? (?!?ƳW?>Y?Q@"?\?L?ع_?HPj??fu??/?#@0&B@NQ@gi?@*J?7@+h? V?}?@ |?>?OT??%k@)S?E}J@( ?v??1 ??=D?I4]@%7@.!'@.@.~?#_?Z?f??{]@)hg@,?`@,?k{@ ?+`,@,VD?"e?-T?@l 7?*.?n???E?F?>?[z?3@F?"?6t?K`7?KX?צ?ўþ+?5?9?4s?-?T?3?.?+?#+?=s?J??ܳ? @*m?",? ?;?]B?,9?)?,em?6$?uCj~UlᾯD?RM?](E"L8sQ?=?;h?Je,?(ŸJܾ͸?Vˀ]1B)vJ?G;E` ?2s?9v?,)UG?X?en? t?=:?q 'k2۾5?,q龅82w?1d9񧾞C?4Ⱦ?ߠ?>T?s?@# @(;?ϩ? ?h?G@(Y?f??x@&?s?ur?[r??Ո?L@$F@%j@l?i?ȼ?ҷm@)If?I?D/?ʶj?a@'?),?y?S??) ?=}F?֑??Dp?'r@.?5M?&r?@'ť?ۇ??] 1?˶P?{?5]-?j?ľ?̟?-??@ޅ?7?;?*?.q?-L?zᄊ?]~:?>JE-?2' !?O?? ?>?lT;M=BC뿙:1`F?Zwv?˴?-B}??s~?P"?0Rw?I ?2ql_B?'e?#?4[s?&,(S??X-DG5?D[!7?Ik?E亿]"?5EhH2? 6?.F?L?A@ɡV??Ǣ?Z?U?8G?0`?ҫ?FO?D\?@?P??˅?Ta?JH?+D?;~?6?OI$?X?]? ?LO??h?@1?Ԡ?;Lh?a8?K@$?T?~? ?Ru?;S?p*?M3?l@"@+{@lI@$?%)@&b?y?ז@)?̓`?b?܂??ӑ?0?E@'@,?ح?5V?F?@gz?@-?@)@b!?%fp@d?@?]?ع?|@!? H? . @+?@!Z?H?'?Ӛ?fG?X?>9@?+ϐΰ@0Y@P?)?#]?Lz@V? ?$?u@(~|?1dP?E??-?1?H~@-8?x?FV?!??ܣ?!BrVP?0?2J?6??*?60>xxl"?H[l????b?SN@ ?=B޾pq!т?0X?-?,?|.@޾;u? N>"ꉾDi!j?Qȿ8?I[y|)很8ϾEFIH׿ 0 ?*NT?I~-f@;s?Ӆgbk?7ap;?F ?t??J>n?ː@)?6?>?,?85w?F:?Ɉ ?Bd?$Z?@)?C?"?/?{??I@%N@ m? ?FHh>w]? |?]?H??u??6B?=?i?@e?ܦ>?"_a@.{e?@G%?޽?? ?ݷ@(:@,@#?@,!?%x?D@i@B@gE@'S@/$ ?p;@aU?@*@gU?A??!@&e??߀U?R:?cQ@(ק@)?B@m{N?<&?U?ֈM?B@'?NLg?@+@%@(?"f?-L?,@?y?*?p?2F?8?ן=??% ?,?ޗ?Фo? (?զ?O:T?zB?Fb?q?$H?Խ?f?(>1??d뾫?_]m? \Л?<"t?(𺿹짾)ۮ?n?9h?&߿?ԾQ? ᾍI &X??JF+5n?H ?.p4d&,?/@T\V϶?3,WyL?R;s1 Rm?%9Ӑ?C?/4b?I氾ܾ$Ҿ6?3[rח@Ծ.(N?BR?2K?n9Ӿ?l?X?1dOc,?s?|@!:6?3B? /q?2?aQ?K<?;?e&?BR`|=>?*̆?5}Іb?O?# ?+?1ߐQy^?9g@#$C?)S*?[\v?Ƽa?݉@J??۫A?N=@f?H(?:? @ @*(@-V?s?Й@)zg?,@*%j?˙??lT?^?ë@o9?$?ۙ@!ю???D?ץt?B?39?W@'J?;>C@? ]?B?Î@c{@ku@(?y@[.}?ځ@li?<1?fY@'(,?մ ?&n@'e@,DP@+ss? ?5&6@*$??@ia??Zw?j@?@)M?A?}@)a?2n@ h? d?S'H?/l@)??c2Ґ>t?R??Z?M=]? ?7B۲?26?:? *q* sо>D kpO?/B?tf?@qA?=ȾP i/8(Dعx/T,Xؾa#?+`0Zpc$9?'kʿ?ޑ"h迟?)?B W?@r>xqs@$mn?&''n)`?. #?hJM?'2?$'??]?FJn?LdJ?D7?^*?(d@/?3X? ({?N?ǚ? \?\?+|?2F>^1?V?0.?ģ]V?_~S?;Ȑ?K? @?8??˞??$@3?P4?#Z?`?]?.@ 0?Lv???9?w?D?(`?R`?`@)z?ޘ?D@#l?9?L?q@S!6Wy???#"??$@!=gg?:@"q?ASD?BL?2@)a@*w@.@*f@fl?Ɩ-?٤?@$Eg@(?<$@Zy?!@&?5@797?FH?'?0d{@!?;h@%E? ?@+:>G? L7X?-s?<?PDi@!~@'7w??R?.c ?.Æ?,?L?@,4?-=?A?T?IH?&?s??'?;??t(kF3?ў??3??w?冾 ?B?<{_?3?}??=sbjv?+89zq?U0?F(ؾ.L6?;(<}?)5o?=Ծ?6?"W?OD?,MS)?ɀ?C?QF/Є?;t?EH4?$guzk?*Ⱦɾ3dc??*< 6&??Ҵ:?VpþEG?Ls?9+?*E0?/?"#0?U꾊{?צ?Ĉ?B?-?=YN?!rV?,]?A?8?Wl?%[?;_&?83M?/;Ҿ?1@%?/\?O$?(3?2*?Ę?.d?3?2?ڊ@(??F?jJ?FL?+?&A?ՠ_?]p?&:_p??-ÞCAR?Р ?X?4??ɘ?<??ʔX??Z?ٳ7j2??Ԭash?@boD?(,׾s?#ݎ|&?cmM?T[䢾 D8HqM?Q?RK?Jl^z?Fm>?~I?W?PՈ?GSp?:s?BM BuϦ ?M7\d?݄?ץ?+? @'CZB i?>?*a?D`?-.?8?ˀx?6>锝?^??Hn?3.$?I;@.V@??֘(?T?ye@nϝ?ԇ?X?K?M?>뀾D?g@d-@aM??H[1?m?iP? u?Y?ٰa@%@?@i@kY@&p@52?t-@m@!@kl?2@x@^@*@k@01R@' ?,@)ť?*??о@( @ ?b?4?-?(־=?E?ϋb@'?/A?Ɩ?8?ǐ?ݒ?+n@?鯐?ž@c?- ??0?+?^n?`??(Ŏ?Ŝ?ۭ0WRwa@&?r?N?2p?c?K?=N3??.? ?h?)Q??R\?F]?zb?sCR2 ! ?JoMPs/忰?ܽ]j?6 _$ؾp?Oy"K?,6%y?X?7;꾃?seԾ^Dkf>0&X|B?LQpva~??A2f?oqrhh࿡]پs?u J?p`?6;tj??:޾N|?:j@(G?3 ?2r@*kH>R?ĺ?}A??H4@(@'d5?d@5@$sm@!@$?ұ???C@$?&@i)?%!??]@gG@%sO?/@c(@t?1@@$1j@f{?0@h ?$@Л?@!@*CQ@)@.y@f@l?@ מ@-@#@bj?b@(b?Ь?@@eO?$?-:f@'J5@`o@2~?Э@?jw@$?./t?I?e?ˌn?lb@(?? ?-m??͞?#? ?@(;?R?Ȁ?1??.оL?%?Fh? ?El?j?-?7 >ʾw>Yb?5f? ?b?4YԼ@-g4? ߢI?C] ?AhW?J?94˾Z⾯IuWN?QY?IMJ`+?2!о?KlH%\?B@9?&[V6־UjiM[v!?L ߾K?c?/mھ˔{ʼn]?ȻX{쾠?Rp ??t?Qv*}?(Y6?[?0?5}?" U?tq@,Sr?Q?(?6?Q>?d?I/?tM@H?!Mh??=!?׹??%2_?@''?ZB m~?jt?,Bw{*???I0~?/v?MO?>p ?d?#0?l?v?x?0?؎@(?.@&? ?7@Y@k:?ʵ?%f?D[@m7'?@ @`5s@0?D~@(S@@,@^@%@h.@=>?3=@e`@cw%@qIn@%{@ޣ@$??U.@n@i@g@28@*<@E@d@l@XV?؂@dw@6@ZL@^,;@@Y ?@:2@`?&J@$hT@H/@8@kU@'G@f@!9?7)??|L?Ы@&3?&?ѱ?(?ݠ?R?=@?.*?2?4p?O? 辕0Z??@(Q?P@?^@CE?/?C?3?*?@8|?Ͻ?׼}?5@)d+?6 ??5?\4?$71?;􆾮?O?D:(l#P|0u?$چJX]?͏þؾ꾷?,d?:?;ɬ?4县!Y> >ʾ?.ྯ?!Sk(ܾY?<˼?#VÿW鱿󾟛_Е6Xs?>8>xg_?-?3:?IE?ò?;D?,? F?XL?9?3?76|?D??>J$?Y??8@V?9?P?N5?.W?(r?k8?8{?F?V?v?ϐ?ե=Ì@-G??عp??=.?+?i?Dn?y?۱P??k@#@z@&M?@_;??'T?P:@@"e?=?E38?,>@"G@ 5?ʜ?Ι?lj@,>@,@a@-@dl@e@a@08@%?*y@bl@cL?Ț@hП@#S@@$@l@l@j @U@eR@߬@d1@_t@$@_w@gy@!D<@d@+3@du?:@#-@@@+D@ @',\?`?-]@"d@i@_?}@#.?܄?՝?JH??e?w?7ȾO-%L?ߎQ@/ ?t?9E?ު?s?ѡ뾷??d?%?B ?? ?Ӕ??K7?S)?>*`?By>&??K?+!?_?Pt?(O4?1 lk,Y[%#ᾨ"\P%U4f?YaT ?2꿦5?/?)7ͻ=?*mxUJ9S;Z #[1k!Gq*̿:*??ɹx??GZ?J?/? ?;VJ?0,2?6t?0AO\As? ?.[?ԃ?/LA?Ըf?9wܾ?8>7?&+?eϾcY?H?Թ>bD?NF?*9?r?Z/cR?'?)[?׷?M?LV?_T?GQ?GQ? ?}7?2)?ԉ#?"?!}&?{@_?8Q? ?דh?/f?N?1@-"@(̫@&"@h?@$?1@+:@"@(2?3O@&l?NT@'&@@d?L@Zs@[@@B@!f@U-?K@)^?O?h"@a+@m?@@b9@_@h@&@jL@)@=@b*@A @-^?@W@Y@@б@j?"x@-h@lo?et>m@+@d4%?4?O?t??I@@'?6{?ߠ?%?ɿ~@&^?#?#?@?)?;ԃ?հ?Q@.e?5,?f?ٿ/?@ߥ?+;̣?"1?%a???%D%b?̈?\>??(?"9ώ>*?@ =??%6վ78jBZ7 >b|?@9qa>t?@9jr̿_?@EIA?#Kw?3F?"ԒEA?NY?JuLS3?@K?/3?%A?M?(?!?$LƾwB?T|?U? ?-?ǯq*?ǾGp?d8?9'?>7??/?,A?? пG??_ ?& ?W&t(???Aǔ?/=?T]?2?!h.?>;?F?Z?ݰn@'?ժ?6?1???`?s?F];@&Px?-/_>k? '5??J?@ K?5@O\@z}@'?b@Z??Dr@e!@f^@h@J%@j#@d@e@-A@e{w@j@Q?̬-@a@g@\|@3^B_@X@N@q@7@'@p@$}s@f6@@@!@n@@g<@]ދ@O@p@<^@i@d+@p!@ w@a$?N@&?*+?ڟ@'?@*"@31@-<?e?O???#e=@+x? [?CL?z?W?٢V?'`?_?ѕ?0? ⾻!@ ???;Y? _?0dR?5?O@(+@??|?p8Z?D¾m?b?66?^ ?%馾^q=Zg@. 0?f9ҿIǿK?3dz8EX?C?5j'?!ĿҿL?2J?C8?㺀??H?Mv?AQ?m?I\?L?Ϩ?F@.ز?B?>?;$?1?2$?CA?~?ڏ@l@?"@?%k?*w?$N?3M?Gk?2D>| ?5D?C@/?ľ̍V?;?( ?#??6s??@ͿW?@ ?F?8n?q?"þР?@?V?7? Sl_𾖍޾r?S 3O6|?f0w?|?0@?Se׾I˪4B?:3ވ"d?*I?&??B"4#?NР?TF@?H.?A8?.?6{`?(:?vJ??̓ Y ?DϾ?:&J^:?1[?0?C$?9?@4R?CZC?2?a?=?k?7?0?"?W?[3?J?Iپ?_4d?4B?Y?~>w?>iD@mBAiѾ?M0?}~?ʩ2?n?|?3]?8k?&?N@*p??#?j?(@]^?rm?@&??\@"?:ӄ???@f?!q?z@fO]@lQ@iA @?خ>?u@+?(@eR@e ?ۚ@`@@(YN@]D@[Y@>r@j@ŽA~Bv Ax@/s?5k^=?P?оoxsh{Aѽ#?D:&ˬ?]?.BN?D˾ž(#^?>yj2?2"?$%O?&Q.AF}?L>꾃濶?⿬r?S?$M?o|r?x?4`־RQ?O^I!gm ?O?Tv?;?3%??9iđb?.62/S?ٮȾe??1ξ?J#?D,?fԾک?9?3g?a?M?+,r??2j@?0 *@$YBCf ?V?^?;?L??d&@fGv?tJ?ْ?R v??ީ`?i?bE?,?%?ѭ@e"@f?c?ը@%@%@1e?@$@.y?]@%OA@k4@#]?R @T@cx@(@$I@hR@r~@ov@@ѻB@4@`@e@+@ @@@H@!/@@xj@@@F@ahA'@_HAkAk@Ԡ/@Ӷ@쪜Aa@@8@@k@!@i1 @hh@#Ig?œl?@۾?6,?g ?m?A待Ĩ`Xt†?a?iZB?8b@?!=k?CJ7?Dr?9?-vcq6۾19?*wA"?- ?*P]f9??+??VL7EdΟA?7qޥ?“~_Ǿv?(z"??/?0?՜O?B?JF? >}r?+^?RwF?;?F@'??ՙ%?؂3?W@!@@?%%@t}?(@c1@@&R~@MLAe@:@]@&"@@cq@L?@( @_@w@/@@kD@~@/@*@r@_E@m @ҩu@@+ AA' AA%A5AhAWAA&=AѳA'9[@@P~A&D@@@@g@*@mv@ .@v?S?n?i'?&@" ,@K?P?R?)V?>L?->B?/?ݥ?]??-(??'Gy?3?c?'z>-˾`?!{~?=9?!O?3?S[v?M)֗??FP?n?;?[?DUb>?,?Q+'Yx??VN?[Y?.kU<YCa`?5pT?BzggpuyaRR}8(/ܾ*GپR? u?1ϿI߿FZ?;L>8KXV?8O?+'n?"?!? ˄?(E?T7?jjE~?3*?17?%?|J@, ʾ9?Q?Bmcy|?6z?t?DH?$t?#Y?#h@%;??/¢??(?||?5#"??ߒC?Gվ;!> ?l?a?ڭ@!?3]@?>A??@ W?/a@]?3@)-@#@;@)4s??5?a@hI`@@aD@ @cj@r?٦g@_o@@Qe@mB@G@"AxA~@, @q@d@^@@@_RAHAA&*A57AHRSAӨAVAxAqAaA6:@o*@ٴ@p.@,@np@@)@ah@8@h>9@iP@f1,@# @_@cj?d@I^?@'ٻ?<Ʃ??־/\?7s?]?K?9 w>?vg? ?F#?Ix킾h?2B??榾b?5俒UJ@?Qx?Ͽh? Bp?)C J3PO?A?MV?VQ?eh3$a?B?VUǾͨ?E/ )U0?E*}WE?+.̾P?0{FNݾ_$?3lk0?"ܾ)?8 zSj?>Vᔾ$?D`?/>?\*?O~*>5V?܋?(?0?2v?h@)>?)7b$?J:?=پӒ>?,?QA7?8?x?SB?7μ?.4?%?$\@%#?NX??ST?Q@hH?D(+? N?Bv?л^??Y6@a&?@gF@/(G?A@iD?ϻ[@h@d3@"H@ju?׾@a@D@ A@@q@@#@B@6N@h@^@݆AR@cAsAq*ACA@@[A*AAYAZpcA`+A:AZAAAA]A9dA&\d@^@@}@!@Z0@@jp@@o@@/@)F-?+4 ?Е@eb?ę?&'?\@-?؞@"D4?ٛ?M?#"?P?"`[l`?!?'q_?zz?. ?1?a}?b?6F??07+KL?h?/?>H徴ݲ?f?@r@W?J7?,;?Z?"?(?A`?d?Һ? MTn ]4h1?#0?M̿ua&?(lP?@z}?L8\FQ ?7X?MuZ?B?!~$g,!|¾L?1[2?`ǴԿo?oD྇QX?@Fc>տvQ_\?*?i0?k?8ᅳp4?`UL?3e?+?Xa?(z2??C ?(u??Zǚ?Ͼ?\?ش%?5p??/?ͯ{с?ı?Bz>?.?@'j??X?K@%/@( ?~V?`????-9?׭>ZH?/? ??$?*K?k @)8@&B?P@{@]@*4@c ?t?~@ri@Y?@!GO@d1@@@ "@H @K@v2@+@fv@fZ@m[@@_AA}@@LAAARA NA(XA\]AYAjAA&lAYUAjtAZ@A>A%A4ALU@@@ @@!_@@}@/A@e@1@ip@*@'pX@&o?՝?چ?M?ӯ~?CN@&.?8(@{?#g?Ͱ!QA?\?Db@">q ?2X?Ѣ?k??`4??B?#D?@?LC?L?6X?? ? ?ƍ?"?*2??t?(\e?2:S?#V?:KN?>샢?F9{@8~Of,Jޯ?S,.?_zوtL( ɾZSx0?9Z?j??*&?ѾY?.u?ac?=>V`? 7ھd8o?/??';?=Aj??E<6g?P?"?*ޯa?*.<̾~F?u?c꿞1?aַL@'|?']Z M?>_ת???p?08x?Iz#??ױh?@?2t?@0h??v@+jR? X?ή;@??P?*?&o?ʅ@+k)?;;?Ĥ>-@@@B?ב@0K?ak@,x?ǒp@]@@@G:@@DAv@ӿ@z@q@_@v@AУA&w @\X@@A gAʼA}2AY݁A{AilA ALAnAFAGSA\Am80AAX@@̛@@@\@n s@*@dTk@e%@Xn@eii@"Y@@-:@)_@)[@0@D?Έ@#=?Bv?=[? Á?T?Ġ?)_{(?;z?О ?Ӿm\?J6?ж%?A>s?4*??J&@!?U_? ?7@?C?,4@j?*?֭AL@*u2?8w?*U.R4?T?&̾M~?&f?:[Y)?ֲcj?!p-zؾZ?9?+!⿧X?EYJ?"tz?,ʲr?Ά9?0=}?dh? v?=]@?U?-(?[?y@,}?! ?Ƈk?6??? =?Vp~?U?E8ƴ?4?g>?'@f,?5|?sb?ԟ?j@1y ?NT@`0 ?R@)@"k?0'?Q?$[@`W@@0^?@W@A@@g@\p@'AA&'A @[@?@ҏ@%@A$VA6AZA8AM_AZAGAJAAyߴA AmAWAjmA4d6AhAAVAS@q@@@@@ @or@f@@g@}UK@5+@.@]m??@b?c?ه@eJ?ld?@&@%?٘i%V@X?@&#?9D.0Nz?* K?ѾP?%ZN?8侢??ຈ?2?֑?-Ow?V4,?Ҹ?v?*\??B?;|?T??_ԾG? JX?U\?7?F???á?̠k@*'@h??ӂ@(6w@f@d@]@>@3:@z@`"@@М@A5AEAAYArA6AA8"AwrAZAWAuAI6ADA A2AiA^Aه5Aa A¸A/mAk=AAI2AUA@y@K@@f(@ @>@1&@o@`@)Ln@@}z@c_@(Q@`,?x?=7? ?K@A?ph?(V?m?J?Dp+??'?  ? ߾?ۓ?4:?=8?$?٘?"?C?!)?(̾rgJy?կ%? ?C2? ?>ɭ?f?|@)ʹ?$>>s+@"H?-\?$?wy?=v|.?c ?f꾔RXj;V)?Hs6T?)z\fS?X=N?ٲݾ55?5L? gy[+?B2?J=?MO?29*?*?\ .ư?+?,?@{?Hjk(T?G0B?F?q>N¿ž?i[-??U![M?9?N ?M5O?R_v?6?oP? ?.*?(n?Z3>O?Ɲ??%?U?E}??݉@^CuY?v???Rf@-?WE>ھl?a2??̓\??P?R@+y@';?d??@$k?ʾS?$?Ή?{V?9?ʵ@'d@*ܰ?OZ@%@)@#|@G@g@og@~@@@/@@Ս@A'rAG$ANAAVAGIAjAkwAFJ\AYs/AAAAxeB5B>/BN B9BA@ASPAGB )AAA5@0 @@@ @@cb @]1@l y@)eO@+?e@I?@jo?11?ӵ@*@-Zgq?o?@?y? )?@)ڭ?`?;0?[?źp??;nX?/a>5??n?G?Чu? .??/ ?hy?.h4c?WG??'I9~ᄎR?/(?*$?9?FP?9#?߅]?'? Lfr?Ltuр>7`?$;m#{ݾ^S?Vx?!ӾXlA:K$A>4?+־#pξj???.Dı?4?5?[wj?=4|? \??0>/2پ$4hey?U -???x5?`?fo?)?|o ?(N?Y?X@BΆRA g@{@,WȾ?%ը?JY?#9?:??`?ެ`?̰?5?b?s@#3?$v?K?n?.{?~?@1N$.@._B?ٴ@,@?򾺓q?@g@f@,m?N@,J?҆?=)?@d ?(@7(@cc@`@D@gz7@̛X@@@qA(TAG4AB iBetACAG'SAjAA^AAʈBA̒ABYB1aBYءB% AyB|BBxB1^GB;AA5A@ҵR@k@j@{@͍t@.|@c2@-@"M@mgm?ׇ9@/?%@i_@?9@i+h?$?p???./?H?9?0f?*?ٹ??+?\?"|? ζ?T?V?4?.. @,H ?$??B?$?";?Ly?Ԃ3/*? 6r?¶?-?@+@*?H?[,H?ΖJ̿:ԾWSƿ,Pv?P V>X?=]ؾ?*i(@ ?8f?Ѿ:?=[;?⾫?)p? FC.?mC^?G0>R?0pEg?6q?6?'?=-?(;M ?@P.kbӾAK???27c=?$*?B?>?/#??RB13BtBpB,Ax"@-?Bmf?Y? =@+-? ?*?@?z?#O?)?>??+@)?\?,x@af@Y@#ǎ@$@&@ds@#?̛A@aǿ@Nid@@k@)@:@AVA@ЁEAA3JA|vAAA}AjAwuAAhBܟAѧBBMB7cB,B"RB)9B:B B YfBB>BnBFBeA@A8&@@B@@@vK@@&?.a@h?@-D?4@,Ų?@pk@)?۾@d4?Ю8@,b?/I???8?9%p?ؖ^?մv_?F7?[?C ?D.Ծ'@/?n=?v>C??? '5(D?4?i.x>ھg?j?#@?BP`]ۿ ?.44/?AS>rF4Rx}?X?=(@A?@˾#ƾx l銾[?6?0̾Av?5.?B?e#F??D;?&5p?ӡ ?:3?>6?Rl?G=?3 qe??W??Q?*@mA6ƀBiAf@\F+[?]x??VS?ȧ?sd;߾@*q@&?p?m?Ba?۰\@)ע@)Z? \??ּ?ӱ?ru?9&@1?α@jW?ʏ|?@?`?@n&d?؟?tP?yj@b/@ @m@>7@t@%@@@@M@@A&AG AkAwB2 B3ByBBUBNB]B&;B!ƙ?.2`d??,??,+?X)\?`L?B{91?XxgD>?4 hM7t?թ?J%;?,$ؾ(alHmF䮾 ?AptT@2)?6?4^4\?,O!?,@2j?Ϛ>;T?).?'Yn?ʾ澢|?^?^A?:8?f?@k?JǾ?IV<|c?CƯ??8$?=?ݲ?<4[??2|?d@*?֔?^4???¼?g3?CP?v@0?5o?Ĝ?(}?y?\@ =@#?? ?0?v?S9?l>@(6@'?g??K?@g?ѣ?o?y @*#$?@+4?">@y@^,@$(@@b!@dU@@,@@όx@=@R @MA7}5A&:A7`AW*@AyBBRSB)Bf'BMBpBBBưBBBBiQBRB|Bq}BMBtA IAxAF[@D@}}@@fC@uM@l?@co(@h?f@+@)*U?ˈ?1@Y?@d@*c??ЕR@ }@<@?D?W^?X?B,?<@*j??/.?>4?~_?,=?:@,9??.@/?1?OF?3?̪?7 ??@?ɑVB +z?X?%?C*?ʊ8?ÖQ?&EM<?_Z:/sv ?i}6g.??/v꾖C^e迮J?aB־?P|?N :5,`''І x>^I>?G.c?v??W ?_)??I^?.?){?gp!?6?;?.H?XMľ??-??Y?҉?ֆ?z\?[оA?4f?Ͽ5 @P+?"ھZ ?:sq??2?\?J?E?#쾔;?%?u@,a?Я+s? E\?E?K^?jg?T?T!ݑ@&3?ܨN؊?wn?x? ڿpq?*,:J˰ K?O??9s?8?A*8_lZ?(T6<>? ?+?N? Vn?#QdQ?-R?ږ?.I?ڏ.R+F?3ɾ:t?1nľ? ?Ԯ?H?@?&о!ǁn?0?f@34h?;u??v?3?FV?/??.?F?K/.?@?"?Wsx?)1J>?j+y0? ?'E?8(C@,??=3?0?#?Ń?@/?%?4*^?#?H?Ɍ?F?q@@&۩@%??E@)@(X@$@:$?5@\S}@k N@/mB4@{[@(@@S@7@Vw@Ҷ@(\A% A7lA%AX==AF~PA{/wA`iA]BBBC6CD5{8CC=C.ȤBB_B%B>ABAA@:A{AZA6Ի@@+@ t@(@@^x@\;,@O@@c@!@eG@j׻@aRM?V(@.!g@dע@.3l?R@'ҵ?2L@+p?ۅ?&?PI?P ?Йr?㾌?,"?ܭ3?;?F걾c?ƴ?,U@*v?a?Ԩ??',??)⾲Ҿ?*?-&?? >i>?>I?:(޾˟?iq? g`?+>3@z"?)TM/?JV2,Z/dWJF^(???>Ҡv3'?1?9־A?,<?O<^hy?8?9D?(wf.8_gھxVh?=T?'i?I,C?*1?:U?6˚྄.&?/}???ͽ?{e?Q`ľƻ?7?J??I?jt0J>fE?O'ģ?*?q@/?ں??MȾ`?v?#?8?>@,A0?C?H@' y?䁄?5?3m ?pP??ɟ#?A?j@ !??j?@j;???V@?̞@i@d?;@Ae@ɲ@t@S_@$@MjA @˻@ĦA%\AG#AHLQA6AZ ?AA.A2BuBCclD 4EiďEiƚDCLC_ClWB\BavBn B:BA+AQAk!AyaA-@%@+H@@<@r@as`@f@P5@lQ@j @@0b@,@?ҦE@&@+:h@%?@լ@jI@(n?h(@lf?Ec?*Ł?5N8?=?.&??jF@(?ǥ?5P2S?+j#Vy?A?v?Tȧ>|㿪#Fy?+Hɏ@h'eL?6k- ?%͔?l@?; ,?1zhz+C?dS?'u)??7dP?'6xr5I?*(ʿ(G,?2?00k ?5g?TG?5ž[G?GÉ?Ar?!?YDz?;?=? 2?%>S `?۳Z?3?.? ?Z?Զ?7?'"硾K?2 ?ZԾesX?`?֨@+o?'I??$?1?BP@0@iQ?,?`?I@Z@(.>@&@%@#K@g02@e@gx@ +@]@`'@=<@@@/@m@A ~AXk??ע???lI ? ?">ߋc@?4&AK辷%XI?A͂R?)\1`%@.z?7H>?Ae?~yfnq?>&Y?4?55?N?@'?$?!p?1+,?#ћ? ??:?_???:e?4? ?)yC+6?6r?(?&?"a?x?Q`j\G?/p? ?<|b?.Y?p쾳%?+s?5gNב6?"@%?1M??ߖ?CB;??#? @( ??h@ @"e@&?@#@"4,@$@n@&@#8@(c@#@]_@@c@y^@&As@@(@A)AiAz DAvA|WAlARDA BFQBBS}BwfCV\D۞EiǜEi5D(zCnC BžBKB-B)B w;BZeARAOJAAWAr@)@@(/@2@b@h@z@j/@Me@p@)x@g8?´:?ĥ?j}@^^?@-g@$M/?5Z@@ S?ƶ?dX@h @!?3@-j?ͯ]??;4U?ʬ2?=v?̦??.?Ǥ1?ٵ?S5?g?:?|?Cm?-?(٬?K?Z?<?@?{?/ [?ɝ???$d?&Ekr> x> '>&aaB=(>|?{?>bM>8>L=Z<و>)w?'AmA0?EH2?Z>Rfh> ?_?"K>3l>,v<{PFH7L=F=Arx\>)=M>+w=J=Z=s?#6=>=bx"Rr=d@?:>CE?C>,I\?[>_#{=;V`_>9ֿvnr?i>?]C=hl>ѿZohZ=Z>S=f}?pt?䐽Μ=DZXpվhv4"뛿ChH=Ǭf??svO/!W">;HB>"n5=Wl?Ħk=r?a>m 2S~;h>Be? =y?J R>J?Rj?`}6V =!?D?{>>}=7X鮺=i(>}]P=}=`>4fD=jj&ä<_?yA>>r?>U@/=}T>9ZY?ۿ _=\>Iiv?iPC)'<ո=l?u>qK/>"UA?otB=*=􆾜>?g>4jg~??.T;>w6=>4h?v>'dD+_JZ>4|==9Dc?=޿N>g_e;@=?# ?E;>.Ls,?B@<=<_hX7dzF?f>m}?SSjA>g>ij>)_e>7Qgil>]5a?'sN@K>>#춿]T>i)ؿLk?E>wV=t_?&5=Bx=_0m >-9?At?j> ?^[?ݓ<?>o_?\\f>8Ͽj ?/8? 9#="<=HaT=È?|kk6?~LP`1=x?XNV=5|>-8QUtH=nt=C;Ǡ=G?t1?i@L|>n?un?e=??=&>4=.?gxv=м;R=;=t &=T?X}?L>2y=U=BHL=;?*=ܼ;t:a`Wx? 0>1cD>N>8 {?'>2d=f`=@R>.=.N⠿`8= 8.z|W@=d=v2.?ff>)H4m?<H ۀ;<5@?2=zgܿgRaY @`s?M6:w:?.|+((<"܀sD[t<֓X^?褿u ܿX7>#N?^]K=Gs?\?s&p)>mVGe^^EA>P(>yR=VA???־kF䬱<ЃHC綹??{aPo?p>GÆDULY+>>?«=H= =?*BoVS4> l=u>+8>8A\:=.Y>l?9 ?=ȼ=xPוhmu>HJ>5ή?>"b8> u=zh=ˁ?hſYs=G=Kp=f?v>) ?Ss=Z?aZH?{Sl?\?zrK_V lR?Gf$࿎xh?Jƾh< =&?zi=aK4=RļE@Pk.tW>gr4>ݿ[N=J U]zP?r=^=?VŤ??^8=k kr+=bNeC>݇`=!t=s] dc*@#g՞;;@`ҿeD?p>ý?r=Qtx?|۵@g@ 迂 >#J>=/^ d>s< ?Z >p<;:쿋3v>uu->> kN>=T+Τr`P?]k?X=+T>  ?u*C'Hyؾ ࿌(~ f?3v o.ub(==fn 何3$>z]>L e>C$1g= >wbd>R>n,?>#>V&;>&?x>F `hdTq)Msy?qA*=Ȟ>>h>Gv ?d{$3>E2?tF>+J_F>s?k>(Q7=B>@ѿx:>Z-?G~4?%i=Z>U=' >/=r>V>S^=a`=r<Z???Y>>ȿih=%2>=W=[e<>z?=:>IY Bˍ=]d?lQ>6@?v>>j?=vSpf%o.?t*oT=ƙ> ^v=yƼ+8 l> 1=? T= ž0EZ^?r??+J@׿X`U;@J?=>0c?I76>>P0=ֺ==BlM=$E#;ǩ`>=TDN>*U>@t?/X%(j eS?xοOc=F X>B/?;{=N>x?r{ S=V?rĿ+`"^a,?W=4V4? Cl$*>;X4=콦? v=?az^a iͷ|Nш=Ws>=͚>t+>ϿJX=qbpVաiJn;;4>wָW4={w2>-=?>$?Wٮ=?wrt8>Q?⽟0,|i>S?j=!jZu=>]l[_>bYB>4Tu춿i&f?Ŀp}g^*>0'~>am>6 w=>-p?Y?|mpM?%=`?-ڿ_?>*a=x=ݝrV]=e0?V?E>pU>r;P'>|>XRĿneO=J=*͐MۿZoO>#>߸?hKT =#G&Jz?*>^8>H=ȶd罿^ZJ?=Qx=t>B7Z?_=>R?²>}˿=V=jg0=0?<}?B?㜿>>V Yd? U>Zrs=z?x> 7X=d<J g=:`?j=/>t_x%>o1srM$BV>cZڼ`=I=x@6mAy^wu= POi?X=⢎=Xl:>=>$v~> ?D=’_=5tP=RH??=Jm4>$v@dJP]G= UVrۨ#?}s"i?{Fd?7пu*[H¿aQ,"Oߦt ;;C=ym3j>=JZ>{=h>)>c㿀[a>Qh=>>?>VߴMv|>2?W8=jn?οMB=bYTlH=2,~Ru]ӹ]> gl=?@DA̿_FV=JY_i?QGR>?ſKgz=ſ> U^>@фRF?=}yF?>=a;t@=<>=+vo~=.T?s<ǀ҈kw^>5I @ʹ>CC?F$0>\thKT>1@>*RdĻ# <=PԼG >dĿZ|=ؿms?R|/~>K5S?p??7=MId=?z>=$x\S?gL=> =BlU?b_?,=οcM>C\} v;?H>/]`b=뫨rb=dqPuf+,}?Egz=7b f$>ِ>DY6ؿt=2m=~=?+?Cg;`?;~?ܿzԾ?uqk<>T{x4v>=o-Y>օ?쐌>8ca>1>=6A>wj>G}=f<?^y@$?$?_1>yl>>c< ޻?1\>]'l=P0=S?r?X@-?]T=/>,Y>>Tvcq=΄>^6>u>`j?oV?.?n?}#x򂿄>Ev[=)rL> ql1>JCW>op=<0j=?8嫿w4~?\-R=֜?>>½mBb?=/ݺ?}=(?U =@L>-+=apcxn?n?:?t^.?^=9l=vf35?y?m ->?z "=a[=hN|>)=$=4h *p>yUF=ױF,x=9ɼ?|{@?4-,{X7`=T?.0 0>H2?U=?`>;?s>Y83J⽆Ud<<)-UJo??b>8qN}8j5T\=ꤿS=F?Sh<0[<_9a?ݰ/(F?liQ?>xGd? @@B¿q6=DUݍ=Hc>Y>Depr>< = |=x>8>CI>>n?> ?>\>wxP>*8=(iA6W=>>0Ư?bп=\\x>" >#=03c[=0%> `=a>2vN.ꞡ8)M8@>!$K>Z=P>l<>;??p,FL>s>.=>L=>Da\^b=LAf>,s%AԿh=?&?jdZ?O?%SJ<6P=gVV4=>>ʰ=g!u^=sP>F =Y(>4Md>?>hl?|<1?^>=6> g; >>WC* ?n{z=пʿgw> V?Va[>`Hs>'P=8?ο^Aed3=Dbm<@=L ] = ;m=Z̜rWa/gT?z)=/7=@=,>[i>foF>:>j?7~>n< =^?[)@=lt?US)=@>KߚR;Y}s=G v=n>UÓ=F?eM,?j܌>L>t@&<( }=1l=0>O?(4=~ȸ@[n?|w =/PXB; ?gU>SgHmX?UW Xl=f, пG[=`rj2<P?u>h_a>P0>Ę?4>C.?>>}.yOh>EE=E?p\D>4?=nY=+>*?g=>J=<п]=շIV>D`>>U?i|S>Nm??>|u<20P?=?%<>zC>>=>I_>euWZe==,hk>Vbyb=?؅?K?.?ВĿws=>Y=K>C>n!?+q.>1ZY>J >Q>8ø~CH?<>&m?`=r>C>q=\ܿi<Ĉ@>@-@==޾>8[ƚ=seXz=}Z@B?ff]?y hxͿS2=<~>p p@UDP>}^L>_?7H=|}== 8 T=T86T>T <=@V?;_=$=Jڽp=n2>(=񕨿a?)==}^?tHfh=tK=?(e<˿@i>?>@N?c?PTA?=b>w=?h=P>~q> <}0U [&j==p%>U>|>U̾ZD|<' >=r= =C?>]:t=ி׿z}%?t >c4X?n??>JL{oſQdP>CH뿪0̿>&:jN?"Rw 1?w?kY=?Qy= k>>{lпZW?~TP1?5o>.'oH?=z[ V@> Z->X??g)?DWHg?O2>@&>k=!==Ax> T =4=+(?z>>>f jUJ>6=x=?f->3[,nlRfPҊP>II=D?Gcx~>-ҰQO xh>=I*?n5?l>L?\ƿ k?`as> u価?^.> ey?iG;?o!>(=kؼ>ǎ>NB??BeY]Sa*:h->I&WkR==Yp=?7?c?&D>'=4R<>3?sl>=7Je?(X? :=? Miʠ?i?[V`>ubY0oj=?t>Yv=T$H՟ 0=p=>{*<8? ]?B>4IL>=ϵ0dժ?<8({>L>8lc;pn=ךuvq"t>7Ix$t=קQ?>Q?w-hoX>CZ?˾a=>|M? bWHLxH/cqj"f]=ft=q>?=P? S=??|Ӽ?/?Ő=&?Xiн4ٽi P>^5r{5??>7>C?bK=9ؼ >i!<$X =X"w=ʿn?p;7? G4=m?>+v?a=R?Vx ?Y[G?=>"Hοa}~>lLsKU=*?rf= CRm==+ =0=x?p=?L=z=">:@}q\<ؤ?cpp7/="U<=-}ƣzbϼ>>'z|>_K|?X>PaafGyE=w>A9=hR{>$LA==d࿃p>ւP?X=S>Uhi>Eȼæ=qYbw>|3J#>l:k>Xahb=̼?>(e=v(pH )-g>/DTb zr>)>X\?=Z\>!^>\C=%=ot=r>=.=gu+=\;~~hMa=֫r?C?k&i= ?U>P=[?k\>&kΪ>O=M[ܽ@ ]tg=0>0$p]%@HA?p=\ш>^> Ծ{Nο^F>)?Q>ͪ>7Y>'(? ><> ?72?^<<>|>9XO=>][x@?w ?!?j|? =[\vkU]d=wn=?\Pj= AQ$T/h=A=[?^LL>7ʸ?C?=&)> <P= 6Ŀx9=߿> ,Ŀw>+`=*8 ?մxJs?? >Rѿ? =Z;6>H>@pVܿ~>F=ӝ<ː>S<|0~ =%H?ke1==7pz7̻ wv}> =6PerY'=eϼ?Xp =b~=<>3q=* hN#Q;рmO?P"?n7<@?t5+h~!?|/.,?b] >D=_J>5(>9>,5R=w=?z{??;<#<><-~?=>mq>Yn==?5/lȿeߨZ~>'D> }=o il,d0>Z=e=6q?c?lY>9.3?{7=;o{ܾFY@=jB<2A!d>R=aZ<B$V?=Z6he@ k?O=X >Pl=gʄ= >X=O>=>!ǿpn<`lQV0?=Ģ=;>$C)B b@f˿]CFwD>p?xNt>1H?d@?UF TfPM=zc>A/ =X?}_ph?l<@>K=9n?T2(=o\<0?q=l^j?uo?6!2Y?w9T:=ޘ=`?~1?'=>i~d?[R>k> .,?>!`i^='c>j*=<0?t?hߔ=;ɢ>)?`Icx=>A?{ =' ?X}!<0;Q怽>R\=jh=q=B;?۽_>2pF #?L/[>]E=`=л:= =Hؾ???S=9>hӼ=c">ka>H=:~>4>=Ў>9 ?HAq(>HԋY^?z?5>+>h>PB =?=Ә?|qM_D> g>R&=Hca]>$axQX?S==p?%YZE&=O=`>F>31?'Og"hR>i>B?!@X? 9J> =`>Qz_<0;'&B/A ?uZO=p> dȿȼl=N?}=>>=x>K]EW;@=7,fҞ=,0=Ҿ>}OI]k8>?*ӟs.&k@=޿A˪Bc?I==^b<(b]ـ? ">0A>Kn=Z>H>?<[:>U:$Jl?>B?zm???\k?y%wfOG3gl==)Z o>e~0Gk=ZV=^<~t=?C=6=Rt-ӄ?eh><ۿ"8?=/M`>&=(fM =ώ=ᒿg=O0&l?]?9p=mP= n>h<"w= X=^?zuj=bb?ʿy=ZH;d3vJ?C=Phؿci=L=͇N>/x1ì>p6?r> &?6QC&K@Uc`컫?f>>r ?^1{G?7ſXnD??~?tXxN>3鐿nS=-=E?{??T?}`><،>%(?P>l_>ye?F>%>a '=ϰ@w~=L?}},n#^e?0>>)>%[>b1>s,?}:>j>j~kt=8=ڥ2:ނ>R=K=irT>zT<='`P??10_@~#ua{=:?=>\\d>"r}⼉O{=ڣpp۷`|8GV?n?v8`=u(>yz=>Bl>[?Q==w)\[Ch*̿EBP>* l 2=.%> ѿH]@?mZ=rj?\o.?~C6?c!Ur?u2G=G$>{?7=>?|X=z>Ogf? >[=w>=M*tU?X>8??hnRJ=]~==X?w?z"?=\d^xdRlJ=^ xӺ>>=e=ZX>=XpN&?=+?=T=D+Tr=ÏN@!daf=h0?ά?h>~Y=l+n?\qT@[d=E=@! `>X>?xtW>*=޿r=j> oPB\c>T?rS?Gw=G=}DgP=@?pF>>2D\N >Kpn?Y>no><<= $>l?paM>3#ڛ;&>%?^=s8rf=f;mMS&kW=&hH=P >?wsa=愾:09? -;俕?U=ǎ}N>/K =q=@?sufc忛 ᥕTl?M=j=WywOp>t"t>=Ľ

e¿[{*?O,?wLέ?]l?q>q>LL>n=v(y,<0 ?q?&Z?1H=Ȑ=pX;lBM?gifm{>p&V?1=*df>C >AR?E*@7?$P| |I?~bKb>U}>>VHI>SxԿ}K@V>G%l`>:Y?t>$RjX?Qr.\<=h?N>ҿM*?^&v.A>;x~^X̿?A,pib5E>&8Կ_̈?f#?^\w 7=h0c>`ض==d>a=Cڼ@?ⷿb>?Dn뢾#D>^>m==ߢ>(;>f*>$?@@z@Pg?*>,!=B=J??@>?:=M= -#ŕ+[i?;e>5[>]O< ]?x?>iDhjIEؿno1=?;=4==}=H,<=oP>.OD?ڿZ>j?ԿZӼ>E=h6=>?H=Ne=.<?%=b<?pba=O?m>?>5=Ŀ~ ?B=D.,?s?~tvH;%!=Ϯ,=ӂ06?ǣ>!R?h*?|h>*ʗ?nxa^I?y30> %2>0=_\>7ɻc?`ʀ=˚> _>Qw=&D>J8D>#t?uk;1DW?tY +pk_X?kE??{Rm?w=fؿz{kd?F?6=E|Ocm?$!r?Iz9z(]<=B??l;?*u5?TNd@>{$ '?<i|dp>=>@ nFk.@} >F^?&>JZ?zL>n&UX?7 U|2=ݗ=yDD?g=9,?x=K? v=.kݿB?[`E%bKa;vP۔H?'ciU?sN=>Nvbk?yr==$`L??$7|Zr>Y6+< XϿ==;'H>Z?%>%}=L>H>P=U?q uRo2=sdHo>x>*&=-8>6 j">-6>L?.ހ><<2O?Y<#kPX\?dE0?|G?hLf>Uq=L=,Z>.?a?ӿ|пh=Gp<+??{k#5Z]"e<@<"?H??:?Q?uN??{_U+r,57V>gw :?O8=4X?󊼃={?X>=*vH?,`AT??3!' ?2{=ˬN?XW>h?pO?f~g?4?w=oAm=3載C@=p?u L>0ֺ>Q=B?u?u=6=kȻɠ?ͱ>T , u?p؂??(gR?>>&>k= ¿G[P>`>C?:>o{=X=A?˪>0>M"={,>?}>^ҽ4=/8?:`>sr>=4> ><>vbݖ? @>=}+$=j@N?Ɂ=UL=k?UJ>?1&=thD+2=]p=(>sn`?e}< _R>2=ɾ=/8=ad>4==cj=d>ǿ=UĿl 0˾5_Q??o濂r2S=kҿW迄>Tȿ_4?¸=ʾ>>k?<<+= =u?if);π=~=\kLD==i m?rq\=ꌪuYpvi>s(%`v>2u[?\?^=y?BE=>vjޏi?kzoM>uf?#> BiU>%mxNs-#8=?a=7W?*?3C]J^I>MMx8?~pg@ =c^m:>wr[j>S0?v.= =6aȭ>B? =0ipbHf]oMpsXYc=2<mпRR> )?ǽwh?P=Uzߋ>Ӯum>l==ΖfW>A>+Y>n]b?> =v?0V\> >Ln>V`?Ad=U>ec2 >@=?>P]9>.> P%Pt&> o^?=l =Ȼ(?>k=0};I۝bp?%>@z=ĺ=Tx=U;`>sos=e?=>trFs=쪌= l> &=tnR=f=~>?5?ic?rBy|_>-Qi2>whʿ_M=$>`\=)z; &P-;Y@=f<>/β=,89z`|߿f"h>{=>6<5?=K^:Yb3yT>Rȏl>[=NQ= >sHa=?n=0> ?}C?->5 6O=âX>2e&?%?N̪=\O=a8=wh>Ly=fjP9R?Xd>4yҿ8U;>_?=sQ#&B =yd=:zb?]R?u,=$iy<+R?7H@v^;==]Կ\bW-0;?sz;`?>gg?p=\?2X.?x%>p?i`|ſ5>Ob=v_sh?=SU=Q4=| a>Wz>>S=."b?,IĿ?8?}Bp`_?=tfn?;;<)>=Rv?=@>CB@{Q<0=> ]@= ">_IP=x=M>Z~?ƾ;z> >=]X(?gr'=q^v=6nal==4?pha 6پ6>c~>-XnN?|C?@P>ӣ=5<>8?vO1>Y?M>1`; p?rD?sz=P^>U]?7<=-c~h>p۔>=m4W?U==?`?=;f>+^=Z?4-H>y=D_>?X>n =J<\@> h?AAod?N=9wJ>sb?pV+ =?Bj#vrZ ?~?r?N=R>=I(=?{D?>I.oXq7?>.[iο>J>L}v<7='>@=?El==z?]=6u\=#1=> v[MR?Qq={$վ4=Z>*?m==J i xv[P8P=l>) !?<=y(> ?p?8=lp(,`Vb =ެdG>k9>A}c ?]=>o``>F> .>=l\>`>^> }>yV??=rop>7]>+zAC E@]6>4=%?xO»?<%=$= =J< Q?.t\>9̼G%<`:A°@?%=|yP?Ui=( u=$=m =j?jQNb_`;*=D?5>g=M:==m>v̿URۗ=!L4P]ϿpRg}?7}=U^Tx=S?}!?g@D@>?m?w=N<*p?O=cD>=?u?Tv]Q@N=ְ6y(l>)=>;?6<}sN8=_> #3@F@=X w?cuH=?qt=?~'?x[<n ?\?4=,?w:ݽ? #@@bwi??Z=[ids@>?4?~1;?=c)伨=0R{c'&?>C>##s,uy<4 >/? =u=zOО=zp_<ѝ7tQz>d>U>`p=8>X^?.>~ >I>Z>DZd>@ ƿl=s<0?[0=|=tx=G _S>!=c =WPgr*h?U=Ǵ@di"<#X= '=`ex?4>?/ku%A@?> },6>78=H`if*=֟l?6?'XRvN?@=?Pq龿ov?m]=%?l>=Jk >.i_sa??|vN=|=W0==mo> ?Ps%J|%?K?l $=R?!=P&??l??M]??YP?KR>`=*== ?vy\?d>B7?X><>?0>n?F=r~?le?=?xeV|}?=x? =z?l^+@@>|tX@?w?=p=-d;@?u=1x?X"AL@ν}aȿrR=ֿM-c=aT?iÍ=?];^>P\;K!@=5!=@8x=K?$Yek=?HZu:>5ut!LA??u{H?uQ=>=z?vfԿtEjxҿ{>=.>?>`AlO>e= ֿR+=Ǚ8>+X1=`Q:>i=nH<=U?0=>?lNox=gc>,?>)|>H(?3c:M?D?=Y?hJ<2=֘R>mZ=6=<&?Z>s>W=j=:p?|>^(~<0?,D<94[yiR<;>>aq?/? <\H>&24:l?Z@jewG,=p?O=N>2<}V eFaƼpIߪ=U;l>5>+AP/mAnd=|?= ??76'_??nGU=k80?嬿MV>e->Ϳ> ʐv?ڗqY=oZBp=M0V8ML! _=;?o?>*>j_[F??c=?=>3u[t1izJ5j*?G?}kb?lP^5za>8y=֣p6?>0R=?ݿ?jsA_?j1ÿ?m>=?fy.(8qr?^µ?k?] ;?f}?$>7|lu?=?=xu>==j?f=>.S>u>\"HW?Cg?l>˰>Dw:E=V>_'?9?>h?=ѐf?L>_V1SBt'?|fkB_F?Wq?I1`> $?5,?zp>ܢ>5>;k5/=>B)A=YĿw߉6Y>"=?f<+X>o7?.B XdtP^|?>:=G>>??>Sky=-<#ـtd>Y`?py={Y>%䠽9>+þ?0 o+?[Dc>DVjQy>HL?οjJ=*?n9yaн=^=iR:=Yd?oPrD?=?o(Lhǀ8?z =Ƣs4hLl|w r[e?=BD\t\?v={f$9==O>{Z?E=o\>.K==R$Ƚ׃,q7?~=W=-t<@[??cĿ]> Y>;@=/<ؿfH_lA?vZ=?j?=H?xŴ??|+> >{s`<=_r=6[>|ziaTr?|=α>Xοp?9?Y^?ɮ>6?`>(ݯ<8>H>jD?> 9ޠ=?>6ɽ\#7> ?wA=9w7v@>ĿiVe?>!4?`>Q?|5x=ڴ?7h?Ը?n==̚=.4X?[7<ë>Pt td?pCO W{ ?>&j?o?|=>9n_#Ϫ=Ɵ=)t>=߁p,~ޥ<=>Me>=a=6?@ >I> }tG> T=W=T>0^ĉ=c')!?=?kÿU5>9zA_^E==PZ= ?'Nvfq=V> Wc?>! ˿{R=X/>l>CY?_贼$>o}#=r>I?{y5>=֡d~bY?#>Lq=M`@?.[_?/̿i$=>a=C=X ?¿P6LT}ƿ=1$j>_+UK!?zA?~@X?{1?Ge4 ==E=ζT޿.?v> ?v=F@[=q?q:6KYiV < V@n>)>\$YR]=>>񠽦=Sc^?6=PsyE:sa>ҿfؿZh3g?{?RkI>?Y+P6=T=Ю? ?1H?Y??q2]i?lI(=N@^V ?8>+>'>1߿^I?wuQ6>Q~@>1_|< ?=dI`v?m)?=*=B?X?y>'"=5:p=;fid?=qfr]u}⿂ >2= =l=ܔ6.=[Z?i>*T=!=?>0o?+ÿvd r>n2<Ͼq\yReԽY`Cn\?IH=dȿdj=PNt$??Ob"?Za>9r@?m>7?~[?*=(?uuo핿2`>x?h=YT >\Q3h>%ԺOTx=ORl?>i<Ǡ?P=ew<>?Aa't==fp> h?~ ?=zj|?x>?1?a`[ B=>[>,?m^>Ǧ=a>?=*=;b=Կb>=¸q>?%{== =D=_>4>=QN=E?@=苖>XtǠ?\v?zkyz?::='bXs?=z>g%F=L<6?rs>V=7%wܿmRH=˂=Th>xKCO=>)V?v@=h? t=?r>x < h><`Wc=?P=||B?v_ʿw࿿[޿JW==iI7X?v=2c =?Y&P^=6ܼ?BY[>f?j7{\&=T8=H@?%?i=p&#G8|?~z=$.?L@ۿ]?o_0kJ/d=1H/ ?<όjac ?i\C=H={ `LO=tؽ-r=־W s<0=[?L=l??ʄ?{?TxS> 8?l-=(N? bP?q#a?zj8>=zþпpN=ҲQ=flmS<0<^t^<)x=;?ry?a8vu2?<?ty?"_>Ͽ/8>=(P?{ֱ=m0>hFlS? ?s,>|3*H{=.?I?5"?j`=@?vt2 <=*Z?F>r=e=8+H=L=.?U?TOѿy>'??A=@=Nl?o$0H?naB?=^O0?>rD=޲[ yE>"v=T?]ѿfXTU;σ=B>y?k&=۲>` f[?,-#=fR=p޿c{?|w*?|i+ q>#>c?V:=d0? s?{4?=# =ο[g?L=bn=v=5=Tl=f5T>?3?`=j d?~=dq> ?c =8d`S ɿ i##>"۰=dw=l)^s= m>}g5 ?ռw?Y@9>moS=nls<ŽX=,Z>9{=nlZ`=ML=TL>'1>?+>eнs8>Sn5?u<j{$>;=:?@"S¾"Ŭ?4>D-Ā=u~lt[=3o">^a=0.;pH<'8=r\ V=D?q>s =$hz=JTj<6>XMPX> K?7832 o(=ߨLqڽ<*)A?=\`>&r=>Lt>.m=o`?+o?:>4yt>Z={>`|=>#֗??G׿sFF=:M:%c?=5A>q>'\?m,G=J@p=mHo$?xٿ^>.(=ֿzم8k?=r>/r=\?=:b<80/x@=D==sD,^=\? =m"2 lو? <0z:ak<>=ڼʘ?`;==vQ?=K=U= |>P{? x@=@ztX?>UB⿅7.>a=ܐ=X=8<2?AOaMh?<;S=EL<@(7+=ٶt=?#==<=x=\#>B?x!` x=#@=Qȿs5L۳??g(A #?|N?n?sh >OE`=&8=mP/<=[ઽ⣿t\??tW<\=A>C֨?՚G<>>>=Fh>?Y=@s=x^`=y>Tj=>X?ȾKD>OJ?U`w>d?>n=@J>-m?˗>]-?{Ĺ?,<==rp@>13I >rH=>̠r?3ZDa=۾4@t7;w?L?6s\hܺM=Ϫ>P?$>KH>=A=]0k>(B=2A`?aM>hؼ=t==>p?w}ͧ>(_Zd濅 8?c{?uT^?my8W^?~*=8?XSqZ>R>v>Zj?ЙU??g"?dr=p]{w@^eNt( ?~ĈwĿaF=>5k0l?Zuhݿ_)?U =[gLg9[?4x>&X>+^>>P=NmX?$->M>PshQx?=1ʀ=\< =p=J=| ?R(?J8> ?La?q~Yn>=g>1X)= =ֿKHa?zۥ=*?=J_$5;6,@?G?a\=?vκ=$?wO=\;oEJo>\(>+=O濟?=UШ>N?=(Q<`?bwzZi>VoT'??xla=FvrxbN=S?r<=DDu=n8tÿ9"2Sq>^>6yQ>3q>Nig>)d?w=NԿ]=rjY(푐>Z:e:yS??_=F>*Z=p?;B?|?I ?H>AL>uR?Sy@R?B==8?>C1[s=6=r>ED?z<h=>vd?ZῈ@?g+L==ca?=,?m=| ? &N=l?|z?.> WWcbw> #Z?TaF?~h.!d?r0?m<ć𽩜Lx?y>P@srxjv?p >#FhL??Q1?qb=#=渿u>rɿn>R=X?K> =?icH_>0EQB?>i??}@bOK =8=L-?eB=ˤ8U^q?JcY!0I?1T?M,G =>^`,}=0z= S>tl>i=P~;7=2>2SZwT=_>e>>2mx1=>F?>5??y>!nSic==?Yy>GjYSrEw"=h=+=3 pע:?r>F=z#=$?i0?l?_>?.y?^:=-lps'~=JPX>Ҟ=L>U>N'i<(=8D==RL>1X<=?o;@@7I(_[n=Bw?/=л[>&o>s&\K?%=?e|>0>WahR=bؿ_=J?F=|:`=T>j?HVڽq+??"?v)C+?Oښ覠S,rq?ΌaG=Cg==)m$>>ʒ=}0<8?Z?{??ht?x.=2=\H>/?'= 1?꿁8ӿ?0?Zh<>SN?t>@x?]?n.OD>A?~Hm۽eL?_~Z獿v\2?l(`O?u-?g<E|*l>}=P);㊠` =((j=T<=넿pl~?o{?"~?xd@=a 0j`/> 93t`?<پ.4>4?lE =mfu%?q?gQ}=xܾ>(D[+xj\?+P;Ah:X#i v?#>:D=xLRmR Ao>=[yhT]"r=I ?̾M>I?=F$=Ȃ_oG?>> e>1ۇ>a?3?ǫ?iI?|= l=??ldHW>3=R=%3Tc?1WZ=Z=Vuƶ=v<>=v6&\:va=0x=ڠ<:> T,|,> ,>=8 >!= `?TO2:st=g==Z>z=.>5> G>Gr?t=ɶ??{B=N><0?I=&¿q=_>?U<7HP<װ==}?t!>HW𼃖p=Q*$vڍjξ!>@?X@^0a k֮>2q? }?})xȽax= Ŀg"q>"nw>ܺ?G=?n7`˿^F|S[6DT="4lCjT?Z=\*p? t=Z0zP?fvk)=2=hG5,^ zV/pF?I⾽=j=-z7X:?|4DVI=??|GC=rHS=8~>1z?8`\wl?\b?R?t> bFy> a >5>R(=fh>Ta=3|?>CK?jS?"&p={u.yώ$3==;?xR>i_Y=>>9i>R-I=X?}n!~-=`? =? RBjP;C?;>7J?L?=;:>j6?~ =5?ovpj8?Ҝq?r dr=̿kw2?{>#?=ke?\8kL=9?Tz=E"?0?>*9f >?h<pxO׿uF?5$>[x=ްt=9=п|Cqtv??ſ>)n=6=|?D .wh$H>L8qNa@+8y>ܿ伩[?l=z?w.?p!u|[=^zh@lr=Vo=o+=۾10<)uY ?K3@Yu쾻=sP?͠[{sڽ~@?~\H{ js?|֌=>`qa> v=2J?f v?0oP=d<?mH=_a==?8=r}u28?jy=(!b?X<8?u0ȵ?f?(==|C&@yA@<ը=G?/=ݔ?}tzտ =]LƬ>oAk&=%YlX= ¿Is >_->,q?\KH>0n>r>g>Dȿp gJ>@> 䐿mo<8>}oDf^A>3Pd꽡?oH>ц}fM=h:A?B |j:F?nl>[?Ba*?u: pZ>.=@H?$ɿZN>11?=z=V?~+=74X̂??>07y?Q?x{j|r?q;gG?I=C过ÿTfE}uH?`8?v]_:hp}6>L`<=+@0Q< ==:o=*Z`1E>`t?Q?t>Löm:=;=wLjὊtnힿn$ Y=~?q|>AJVrCRi =? ׿w7;[T=X==TEM;k=HE;H?qX0><>ؿS?p=L??kJ?=.=¿P=ֿfy¿J#6?oHCD@?HlP??8U=Pj.ֿi='^ =>16cի{d3??dq>7Y?vgfؿ$?>U0< =:= =>xp.e|aB㾢lK=\>+䠿[?LʋU㜻u >~=!=|톪=̘ ?=/d?g<ћXk;?O?=5`%=Ŀ <cA5 H3?=}?@<>"m[?k=̾[^xVb=^t=q(==ahqiB?\>"/^>e=L=3J=$?=h=j?l'@q̿lrLܿl:ͽĿTu?iv?=F>M=&|?xo>-/r??ue-z?s?rT>t+=?>)>?49?Zɾ׶={Ht>EþNA?qp?7h1e{ivά?=(=?\ѿ>-R=z<x=V?{p=S8?M:=(h>r%=T$??5W?m^Wq=(?2="^,=n?Mg?=^=V=R>N8?X|>;?m>j= #(q=X=O">˅v4=?Ȳ_>.[x=A¿==R?j>ܿn]?6㼚V=?R>#>.+\>@L&Z=¬H#=~c俘(0>[>7>`=UfK_? ^>}=`Ŀ^_4?[IQ>?:=.t*~ϿQȽjܿjo"N= rh?Y?U?&wD>#|>9?W@=B@ ??|by{w> p=qH8=,_O&K?z 0U^S 8j&H6eRQ\H=Ql?W ?=6D>_L?.k=e>/=?Uu@%l>O^>qLl?z+(ֿ[H}= ?gD<"пw8R>6`>*>V?vg激̬R?=Z? <7?X,yeջHuf7 }P|?jEL2=Lȿ `=z?}v>.9O?R׿?Hww?)?QDi>}B;P?p=Hkm=n<ue Q??}J?l?Ǩ<??b?OɈL$?= N?b2=/N?)s8> N?~> dC=L=>0az[5F=>4;?P>+*=| E?rQ?Y?<;=g<%`?tW~E==cf?jHw'e=x?ّ>.J=bĘ`==YWD>QN= RX<|g?O== =>$:X=YYl=nT>;@@=<ꌈ=<(N032=b6< ?4$?=P`=>=rr爿? 8?qv=ͺ"?%?=w<@{'= |=t?XN=V<?+=¼=X;?_3?Z>$mXd?>W!@վM,> @lu w>F꼀;M&@?{?jv5 ??S=#`p(@;{<<`мp?b?E= Nx=?wHW?}S`2c==m`L=XB?f?7˿f<8=p@~+l! ?x -q?vs=@Jp<40.ҿy=o(x"s~=-?v/m`=ɕf?{G?S?4 @>=`<=·?/Ͽ~=H=n>X =?S~0= >w?_I?%R>ҋc\uA¿Hw=\}>Wq(=^>=<?*>5>>C꿛;=?qx??>W=X>CS ?r>%U_ =oho=&a> ?h=1a;QK_=РY>; =$KC6ȏ@1=/#Ľ! >U?]=޿b}ӿYQaݺ}'dj>?v?n`=.࿆:Z^c8l0p<§?kMd=y?.?> GI6俅 ݐ=~n_ ?l\=rhwn?wa=~X>^?&> w?!> < pu=r=N=enpvs?qN>b ,=G/h?$>98=\t>*E@= ?=3?`= ?fS?z=`qS=='>1[*?? >Av=3=pv>&[&緄@BN`@>G<{?]=ܛXu?Tb?_0= => ?}L<м:s)A?R<|??I?= \@?<x=hn? >*a=/Yت?c*< }:=:>MH?3@"2?>?Us?k??{+[?~?=?;>rS~h9>C> kT>"O?fVb>V> !">E>4NB> :fv?&hlgoO5!?~?x_7sFg=Q>4>W>K>-wiҾ6[v=0=hd=>j>??!=j=1X`|h&>=$WTa>*@pX?=?=Jex?>=D?|j?d)R?(kJ(?s>1Q?ӈ??`jv=q׿v󁽆>?AP=?_e?z"c>SR_> 3=d=@Y=}"l؋c<-q>Dw^=L?@?;<!<{?{>)SY>-KO~m`A=dC@}j"zfs=njfR9>޿o0wpS< ?j=S?]n+XH={4>gA> ?+?w.>ס=>p>I=7J?*ؿv=T?=r?t_> FҾp; k;G@=] ^c=m>ku=D>T> G=_pl>r7>dY<Ś> lY5h; >J?(w >DeuPe0l>'>vy`;ŀ?*?J=v=B?ؾ?-_͹>8+>6h}wT:U,?@~#=fz=R>4?> 4usl@L>@=ךn<, v>eֹ>}ջ=4=7Р>1r=YJ>kyۿ~=vN> ^=>>Ŀr?mD<9|3?@3['>8?T=diI>OIh>nP?D??x">=P>B>B`=(>:>3L>:ٿe?^?n>9Y*!V==k?S>ƕ"= fW=>x=?=̊_==MWȿQ? ?1>zx==i>*= ?ɼI?SKg>Zipzm> i=vX?g==#Լ@)=¢>!ʿ>Ex?A.?D"}W\<==F=wKW;>> t00{g>@?TZ=5?Ÿ?s?F?u=y>ut?r?**=,?6*r*<@=M{h?<֨<1?fҵ=XDp<2=n=`x>e>n޿ZȿRy =6?x&=?&>9?>"2?~_׾[j>8>"CŠ> ,rbel=@[D)E=_D>-3W>/_T=,=}x=.;ȑ=̽'Ŀ(i<- tzx<b.q? ?p> O=jy>٘=> dg5>T]K%y?|HnT`4=>q?=x?@?{0=Z?V;݅?qhSR=?M=={==ʤ^>t@B=ջn}tlsd<(!h¼ `#?ƿ=#I?zL?8+=;*`=?rX;>?iY>,\A=z<ȿvI?i>b?WؽgļA=D=L?-7ȺE?rt@=I(<Ϙ=?u?v kL?>'L\^=%H?_o^?l?~M?0==+tP=)>=W?s=0=uU$?> %s>pRf?w"Ud?}(?{Q|=쿇?yT=h23)?N俏`=I8<#(> L=b`,G=0g>)b>BXM>}J>R -\=y =$f,>>[$ǿp>%>TZ ?U?n׌<譸=?=[tK=,?QJ~> o=8T_L>D@<@>$F%|f=D?(WU-`%==0?v=8=T?u??Y?=y tʶ:??{=^(y3=4=:?u<>W<8=]g=h<@?y?=ܽʾ侃Q<𐿂ԑ> 4PԿcA!P[x=rkK̖=n?v6?l?j?>M|>hZ?;("?v?ؼ=*=?=@=5H? ?`tq?x^L@_;>K G=>=z`?sѮ>F{y?wx=/d?dӾq<-<@ >,=v$=*H=>po>-uE?(<?ֿn\?7(>O>/,!P=J?iɾп=?@?\=z?e?=n~?% o=y?lG,?=[~^O=RBh=?R=+JrS>l@?,?-¿_qܿr>=mD< Es <!=?)VY?=l=矰>gz>-yhv&?>Vz=[tOH?<=a4=خxë=\e=:<9Z>-IYƿh>蔧?z >(LW>!5(=*>5伊TOd?=^n?2?.?~?<=_ȼ%yl?)p3?n6<ɇXPb=x= 4?pM@`_9?x?姜=j=|= b8uCR<ꀿrߙ?wNC{(m?m>??qҿ7?|@? >%m?{?45j> 3?kU*@> ?FB-?\% BѰ?A"<ϵh(khd1l>5=(?zx?{K`=Z TLCa`YĜ=9@?0kȿx}?vxƿp?ebL=+==lTvbW>^?t=wn\?PN?5=?Gk.0=zi\?y#qP=&=4CR=Rz }Kd@;?zW ?t8>>~>0,>%~}U*-hs>U6+=`?>e=6$>~Z=P4?bL=.>B?> >>$==FVƴ>"J=۬=W4YL=?ݿe|-?ڄ=%J?l0r-x=0Vs|#D?_ ?>?>K==1޿q ?{6=v?^= ܼXt;@Q? ?_MZ=r??t?у=}>2ǫ{&p?,;=J=:6=TtX?B`?l=[=d ?Bh?v77{a=Pؠ??Dz?&|nl>S?幔?cf=q?(~"?)96?MԼ,?}?{?X?<="j]bY=? ѽJ?]pz0?O==; =u,? @z?>>WJ=y==`4?o3?0gi?>I4=N<$?{[?!?lsH=Ud`a?z*wgU=e+x==?sqsE[bA:ׇu׽\?=/{b=C>5/I<@`?߱?s_DH?m}<,`z3Xn\=0?qh \^?=(lJO=?l =u?i@?M==ؽh?dd?Y!?II6Opw@5=Z1ܓ?i,=6ڱqL`=+L> =YT ܿ\on)r;hU>R?c?'??Z٥=n%u]UH,> .<?u >n>J+l<>ik<+!> Ծmxf"?nkX=>X=ƿg=^ZsS>FM?;c>y?yx6Zd*?hd8?\=ޗ?6>7 ??Ǐ>c><=,p?gĿm??m= =,X=˾=z?iix>IGC< =.>l.U?@.?lA?话2մzL?Rx_u< =1ֿ\.=mf<1@>hB>q?q!?~?]6==߆?vq޼)?u@?D?v?x>3e?St?=?l> =t?Xw?Uן?0<@=Xn,k?lN}=p6=X_? ?.?uy?c?? > T@#!\?üP?Dl=̹=?=\|>ӿ:Q?gâ?J?K8eqh=#/=B>6PY *eHʻ@?<#??@Ћg>N=>ff>Jz?{ ??H>d==>? >'#=< >H\r? =#X=}:==Tlh ?=׊^ >J]=iPiʽWD?b&=N>В=ۨh/@?cmn>>0<?khؿSֿ4I>a=r#uȿo<@=Ә~1=W$%0`>@?z>0?=C==N~x&Qt<: ?M#E>+}?n=੄geZ8?ڔai?s&u?^=O?l<¯=bݿ'@?="J?_zU=R{T? a?~?+:<@?L޿w׷=>!n=6?h[l:?$`,>!)5r}2t>'nN=M?D=.>3?=Vs?]s?=a>3FkB ?>?^^@<8=a>?r=Fa<-?9 >?? ~^??rz>8>>M0 >H@u?LQ@;>]:WAK7Rp=Ut`?rFL?=to?z?@ k?<=I =?8&qrZ:=^=0ߨ= =?xH?\Kr{ `=E=?ٿn:N<?Qtl í>BLo>Rm?7?ɻv>XMq==|*0[b?{ۿ8r>^}e(>RNV?`?@tv@s=T?w(=r/ieWnN&@G ?>&*o>9M=5$=L=K?}?wƿWH;_K ==ql?j[;p ?'\?O2,i?WL{f+tI=v=~<{0==>[r <"?P?+=a*JX8?]Ș?,|>HX>PI @ j*?1p?dȽoԿ{m>~?߅?Pm9b~@J?s?)?L=?s5?|$?z&==>K|>I=Q࿌۽>ڷF; =;=I8ݘY?g&VH<ʱ:Կc-aM?9?r? ?+x=j=3r?o>T?k!>C͐_?}?,=?~3^?ſwS??q^f>jQ*?T=\"?Կ}=g.k?qf= = {4=Z?>'uwտ=pL,?$n?r?E8=+(AyT=ga>?qb?aV?}A߿Lv>1=f<=^0>d.h\?E`н?=0 @O Ɇ=O=Ji<@>5^~Y}>EdT= =(F׽=b $)2#}vi< <<`?b㿄N?n)=R?:P{@GA`@?.*?v>@< P?}~)?\N?tk%=<=:㘾?,?u>%?q*M=?\?)(?^:>6 Ӊr ;@B0>+;f?%?az==YE=)|sHAP#?XO3>T? -*?J =c2?k?a|c?T>?&k=̤<ۀ=[?}?K=y?<-mj??u?D=S?cgb?I<?}up?o?I?5?g?qV?t?ȱ ?yТcPX?j??hp6?! ?p.ip?Y?u?^?4`?|0?oO=žAuF?w=-\=]̿L"J`u=2?X=6?|=>3B ?nS?p>/-hoڢXM? > ??e=== ?[$>m_q>Gh>G? O\> ?> ݿ[-9?~=ow#9>/'??_d?_}>+?|"=h$O;aj.??t󒔿pK)=% @G |>*~??Q ?}l4>Q?0f;?=>0??>_?xA>'?|FZT;`?|IVMN?z ˿r?{t=T<0?mEZ>O l>=k?bfW% @ ^X:3<ɠ?Uw?w ?u#???$?V?l>'0=ƽVԄ@i6;.?y\AvM?]`?A??* Hj?w~?P?^?z`=ŀ̽B{>0s>%8??LuXKG=Fz=_>H?碾ժ?kij>:iPPGC>ӿE&?O˿_{V=|>4>t#Ŀ6>?y>` )>?{Y=Ȧ >8>>R?ۨ?_g>V>A>\@aX@??><1?x!?92G @?~=DĿq?hZ>=><ؾY#>!=U??y> ?=?z=>7q"\=e=Uj?%Lĸ]𷿆|??qE?=.(=?'?tw0=(?h?]??:>Q&d?fJ==0aY?{xK=m8=Zs=ax =?;=?]>iTX+?V?'H= ?XGn=Bd^*?| K?;=(>9 ο96ܿZ?ugڜ?jz?l>=P;ـ?w(`\??z<{+P?i\S?<peO~TnՎ?o((|\%_^=WPtuQHw>F}u54оR#?E?s?ݣ1?[W?^@z=l̽?i$?Wo?oT?x=q*?|3=ʧ@fl=&$=??+S8 w>CŔ|=ܗ>&e1sQm W`>:f蒻2@<=I= JP>@0=#Y=&?(;`=PH?}F?.?+?63?RܟPD?ֶ(wF[4gIHަ!иZiT?>bU.;Z\v?{= A{1?MM!>fH"p=H?=zg+tt1@p?+y?> 2W|ei=Fx?z3(W)>=>?;=1T`?2?F麽\kA i¿f@pj?t=b3=B??Fs=->t=ք>  =Ľjv!׾W?=>=$?8=u ?[,bh> ?|0?? =z)fB?0=> hj3 :3@^x>.@=DX?r~=tZ??oH>,>? ֿy=H?e[?[<p[t?L=R־ڶ?pս6P<?[|<>=U?Ju;` = PfN?6=s= &?7G=St 5>?wһ1=YbHp4??Vl?k]>#.o=?V<ָ?X.`@R? nJ.>=Xh[>F=3<}C=6?vSP\>A=¼==О@P>[=D?7>yx>uRVnYQ8<@>j;W>AuXK;?h=B= >V_:y t-?za?w9 >?C^>/exsD](=`?d?C?==8@?l=zt_8;@qpk4c?㈿N ?rcـ|r?Rd<7?Zu?1?Ұbi&\"?V#2>>\[0<=ސ=M?_[<>?qd>'ٰ_hhj?D0??yֽ?S??y;࠽Z8?:?}ܽۨ=UDt=.l?n=l=8>=3>_hܼ'=#켞w=|=j??}?ʢZHH?Pܿv=??X4uiw?d>m^>*U>jG=>x??P=9?s?1Q>!~EjGP.?:@,?= ?y4="=0=b$jp`}T?0c߾ ? ?v?Rؖ??%?enT=->4?Zf?qdпjI4?s!=m0?jBῃ=P?x~=ܰ== ?R`l=,/?cy>`?f>Ysοy h??y>8Fc=(@?l> <\H?>=f>efF=.}B @0 ?h?.=TGt?x<мؿ<Ů=N:U rؿ6Y? f6?}?=?IH>bZF>C H?ɚ?vD_>by[[c=^?=!1?J<=ol@;B#q"@}Xd`;e@>*?st=J8{H1|#p?u@f?dVT=؄u&޽5_=]X">?|??Pk?l =R?fN?=n=2?e2=9?}?_?nV ?@~}i=<=5?{X7=CzvLv~=̞""?}=~=L0?r~i?hZʾ"0s='4?q?m{#?p=@@J/?>!?KǍ?s~VY=M|?h?翋 =Π?#@<?~=9d=g?d=ݒ?87=)H?Z?\'?M쫽f{t,? ?3j=o#4?l=@.?>j>([)>?/=>oL>>)=d J8F?~BTm==C(=m_?}R=8?`vѿ=ܻ< >5?s.lhC+t>a>@uI彲;<> JEc==P(tx?W?> ?==TԿcю=BI`?(;Z=?`= LP}?WZ>==TD=?i?j>:9/~=x=@x?ڴf=CܿVYFRb?ڙ?z8X@]D8=uh0???b?!?l=:n^: ?J?<O?:h?|c6?J? ?#n?p+=8q<@Ɣ?Ii?{? ? `?u?wXx?n:߀@S!!A_C='m@>M&?x<1=?{&?pk? mon4;F<͢0??0>?:=1?Ghf yo[l= ?dP?=zLXP}ʈ?oH?uL4?~>ƽ5+NCk >0>?h>EV=Δ4>gp?)==n/xZQ~Q=l\tR?R=2<(>z~?5=?Pg=??wPp L?M޿Mo>D?~8g>~<ֻ=/;?`W?>:_U?U~=?l.?D? =s?jo>#p??r?}>>]y?c>:>(v~^`>$]?}>B=:=3 $y% Y=-T<ݶ< ?U=`_?п=M?].j?Q=4gԘ? L6ٽz?0>:?k`={䖿,U>ϻL?0p}a<؆=vr@ȾI='??W_ֿn]?M?vn /=2\!G<?T<@9=d=?}ӗ?=e0=y$?fz?0 ?f]?r]>? Y<-`=Lhh|?x?al?q?V*? ?yA ?=?g6@"V?F>05?򎊼r\?a?X[+ ?d=HD=d?q>/3׿NE> =HޜpZ>R >>HQ=5]>a?}0>C=P=?T>I z`?f>>y=Zu->V? |>,6L@l6⽛r,?x??(??=-?~>=e>Mr#?t? Լ=Xac?S5P1ɿF>#-cyb{pݪ?A7{aa L8q"=^="=e??=¿?zi>xڽӘ=D{H9=@ >Rx>ٮ?@.½"P=6b=='n?|uG?<wϺ>7>=6m>1K> r??AX>s:Ң?|LH=נ̚?g=?u^??f?xF$<\|~>P??*?!?T"Bxб= W?qB;q?a=J%P?U??zJ"?>1?s?6.>=<{@>Y?z?\R@-?&?uo>$?@H=FH@Tr?s$)?x?+ؽ4{?w;@)ǿ@??p?Rn޽tb={=SX?<;濅[?g>@tLox>Q=^VGf?ו> dvX;BL@=Y6=\>nG">)>V>A>Rc\;14HnJ>-@b]{?8l=骿*>]}%= $?{}޶>bnOv=iXkz??.=Z<Fp>md= >N"?O?n7ɽ?hj:>:e= GZ?v9}?|N*P@s鸿?l䶶?S3<=?y֌? ?yo?kp??<Zd2?x>?jgڽ/B>=T&?zvZ?u=?l.z?K ?w=/|?d!?#=W=$?C?t<@?-x?p+=:?ru?===|?\>%O>08i2?|2X=>n >BΤh>E>Sf==> Žl=¾=5?R?3==|=6R?{xp=Tؐ=*<|0U >"t=L=R"=؇>%?wz1=Z<ߔ S*L[>B>GN,w޾v?;?}'>M'=o=hg:?}?=RLnwM=ȼ u=hD=r%Z}?>@?u <0[п}35rފ"L>򡿒Ŵm?_=w?=|L5?tZ> <ƢH!T?e[O3=g0`;?o?Y;s@?q5>% ?.<9H?sb ?-?ؘ?IP=<>V4%b=Ic ?=s?ov>$t@ϿѴ@o?kg4?XI?}$=i<>=iܽ㗔?nC?U?)k?T? :=Ts)m'Dڿa0>To7s⾢>.|]=u:=b#T=C$dS=rV??$>=?=&?^Xv?g?{1?sio>t>hd>IW4=0>6x?=;,>Q:=hk?u?Y=?U=Kf?ڽI?4fn-C??/>>k׻5`}`ML?L=<>hп#?dֿ]>x.UD ?RUyx>I >)?z!̿l> (??eo_;\P@=c>+Cya?f(@IHv󶡿s =_=h=Ol?W?r lyn?g>I!l(Ύ?0??1L:!6~? <?D?}Fx==VX=?vE >쿆m=r,?TD?s?~ ? ?2?8X?t]#?;Π?tŽ]ػG`?gȻԘ@<.?q?|I{*=V ? ?TȾ?C=!ఽX-?~=]><#xlh; ??a? &H?ƽ\?xa?0?< =ZDe?t=Ἶ*Q2@B?č? l%p=2h<}|`9hc>oek?K>U>?;bV>HWZ=,d$=ȤAsPwhc*\ )=l=#{>#Sw>>&~g=٠8=4=4=d>(ٿl<ܞȿ[ֿFr=:?y?gfA?{*?ؿWm|?W="?b> GZ?M??r?pR&?Ձ?_@??Y=VƼ=7$@=%?`?)X̿VYe??~=Mh?:?h:^qoh{?ؓɸ?վ {=$?bsw?\=v?o=S.<>`e'=pz?{&~S<30|@U|)t?QD=s=>E@?s?jj=tCoj[?]38? &u?&?eP9?ah|?t;=_V辺c= ?whS?L’w?~?|FKxit?c=?@H?|?؊?p@8J??e>,?gA;j@R?hzo ڼi@>KK>Q>f? =>h=>]Ŀe>ዿzsK>=rti\?>q>Y?ܿDw>> =>(H=H=e@=l[j?~&>gb=Q;=6`8>PܫZ)?1?:[? 0<@?p=w> GUX??je =GX9f<> +?Q?hF&?w=b> 2?>"u?;S мH@ =Fv$vA?s?} >0~ ?ˋ?b?]>==ƙ? @> V=u*>KUfI??֟d]_`?8?N ?G?|˾q><=G@`g3d;d@=ȸ=N??o#?{M?v)=??Yds@y?k?3Z="> $r?eo{q <=^=<ӨlC]?=5T;@?7`>A(p?1<ŋ?y=1::',=ƻ >?X>#=}fL@V;}=sVH?n|~=?b?=1S$>?a?P?>&$hi?,r=&?<0X?U=<`?yP=T&h?нU?o?|z?q?aJ;a?T?i[d<'a@f[g#*p?b>oN>Ry>}= = eJ]=~<@<]p<䠿SZ?k?>]/>(0.n^c?[]ph5>N>c?g?$=c> s?C?\ܽ0=[b\?jZ> ?x'm=D=d6=U<>*5>@0?V?{տ=> 6=%t>gH-=Jix,=J?gX?=:`=/>\lH?giMl??vI =2?US%o??T2=/>Y=~=>??}&==J8?h?#?󧿃"="MI1?<f>5=א=-x?~`?j ?F?Y>w? >p> [?$q= F\?WۿP>T2s?sf)>?OB>!?wl^?t=:?ŗڽ01>x|X:=vN?9\>=?[?݅?=bEf<[Ԑ?Qn?}^k@F}?r?{t?E?!ݿZY?R?;?B*=E'?%~=>>1:ԅ;??@ E;~@? 7D?S<0?n`= \?zw>.!==27\ <KL?y=Y,QC$q?{."?>?Un8?u˿m|콨ؾq0?u=ƞM> MocL? =<?|*=G?q?J.> m"=ހ?B> )hp=7=>3轏\_葽x?hjd=ݝ@5g>\?)>`==4<[g@''.l<H= 'x=?k?e<$PwUN?b=Stj1`n='?>:!Y? >R=̮=?H?n>$?׿^p^?S?x6JlS(?b<… =,??z?W68vV>+RJ>P=d"?|6j^Q~G?e}Ŕ>?=??њH?t(i??lK0=y0?8?W?E?w x`>}?k#?r_-=S?s=[輱'=?c(>}:R?~u>~>GQ=L=a?zڧ?@?=-eX>F??wV_=G逼P?Tʐ?񿟽?L࿃t?d5=?~l=Xu=ɀ?}0 ?>ss q%B;!@7*Ô?pR?s4@:oZW?u?`>pNLLƼ?m׿tw=i 8> ξ}>q>> Wƿ]+M= \>C> i=r>$pR y=|h:=n?>')>?aj>CXf=x=.=kp*xQ?H>Eh=H<޲x=,풸>G?G?w/,x?s=@ ?}=/"нND=߲C?u{U=i: Z`>m?t4?pq?:?n?t?qj?i|?tls=_?lA>)B=n0?V>VYp@?0g0-$?p?| >^=;Z@?Xt?kh?Y$k5=7?I|o?`8?y ?m*R=4l==Ҙ;`׽yF=`x?op?Qul?r??z/"??v?f_=A?u2=L,<_`??*?U?$`?X]0?x

&?Gp>[h3}?rf?f?i~4=?n?p0=P>H=vr<~=J4$,?tt?a)?%???#"=m=+?y?G߈qM?t=s>\R[_>>:+xaveGlޑ=QĿ;>%Te=C@~c= >C>?O]>>us=0>=*l>~y]+; ?qiD`>#Ix=Y=>1s==T(=:(?1k8=oh?׍< 8<ƨ>C?bhh'<(?l0@]v=ϣ?L{?s =`|t?]$HjA Adb@Rw=(~ٿr-?`?l|??hҼ,>%#bj>ȿ=X>oO>϶?~?ղ?1^?w=?}b =qpOĿln=" = ?mN=Bn頿l{{?=0?6=Ƚffd>𩿀po?qt>??t?QT?wp.?G&==p?OfּS9<D?=Ll=RR;iʽ)l,=,?*??>$fyVp9?tsd=k0?j?ݾb@,妽\??r?j?#Z5p?T?3?m?]⽥`?=$(l=*??>?,p?$dה> F>:/ =t =8>u>? d[^/T=?+Ds =*>> x>$=>v`=\|=??b8f>[??>%ʿzl+Tت=)J?b,Q)>F?aV>5=&b|=|?d=u:<;p??;<ѷx=n>C?%޽? ?_ Ƚ8=>=nL>ּ?pr=X >P-?gC?4/=nʽGz伔AoBѸL@S=]<B`sl? !=c<)p@P=O ÿWz>9 >ؿK8һ?%h?s?v߿|?P y,tE@o?vs=?=1?LX>Pk;@?y?o~D?C??^=H?&?Z~?t>oAS{=肿lT\?C{B_#??1dLC?>sm[==d:=`?~b:=@ynZ=MaoOhE?GRݟH?4=SD>@qCP]=ؤ? Lɼ9f]?)?l_?_e=rʼ<0?>}wiR?RY???.@>?Kr{޿=t=?=<5@ ?{>V}'R:\do?o˓!k?po?^C@=o'hA?\?%@t~>,8??'o?Jq>>5 ?g,G?2=*??~V=}p@SxXEw?)=A?>A2? b?{ ?e@2?opD? m1; |?>_8?MJ?>?l=C<?>;X?Ha?ah̿M'?^9=㋸p?v?^m!?si?x?ѹ@==f4v?HjyF<<=?k?>q輔\?i ?l?whLwӵ>4?d=?1?o)R<"G࿌zk=O?T?4?X ?h?[=@=ٵ^m;eO?y[? ?q =.@>a6?~n?::>|y=U5d>¿^Hv"=>?|%l>fH!<8 \d?r>9?;@=饮=@;k=>1.l> =U}f=m=VF>>^޽v=*=u?~Z n=%:[&=d@=«j=?6<н(h>^:??=(?i??SEK>.Tl??>%!Nx?k??PӎV?:<& ==ׄ=T=vV׵?8f=:=rg@?x ?|;b=}=T?f?)3sd?=s?V"?T옽}4d~H===?d1}nh>GI@!?V$?L?Y)\zOԿ?z?,~? ?nʽ?>?uv.=j`?|;࿂?=_4j8<>)=׵ ?f9<0 ?{I=?F=2??s^.==0j=;?vr?w?A WǤ?V/??`?J#>??"=CL=Lf?z<?S~( p1=(J\;/?X࿅Ε>{q!> = ?R&=пb#o>v+?c?U3=ɪ>-=>)ʿk=8?{< =@^W]?4uy}*u;e=B=SO@"oý6>:7=JZ> 4Y?J?6w>Nj\?Igg;+?Z8ĿmsS=Ir@S3?{L??>:=V>Bmm=ǡ=^x?~ɋ?eS< > = ?}=2:D>EC&?^?ʥ=lN#@>Yzed{\}F=޴=N>?Xh>>5[zy*jL=u(?G@o?f1L?zh=5?$yLSeB=5?{n#>]`J= пa@:H?tFP=?6@6ּӐ=ڞ?U;s?LտpG?Dl=???=G ?SH<Ž࿆?ѽh[?l+f?롽³=+?ʡ0;nJT=;H=5|2=?h|Ԯ?c??sr@??9<=?K>H&=հ??|<=P?_?N=,iV_jH="?=g{?O==r?G<60?%<6뀽@?1=@b>=b>Vp>xֽŘ=> E<1?<> J;?1?]kR> xC>P<ـ? 5vpr?{UfU> PO?{%=.>W?W现l5??y;=@*?;=пA=lEj??}>,<۾?a=Q<"ཬ >7=9T0?oYC?庿 ?f$j?{@??0$TT?e92?F(=ke?T,T??<<Ě?=? r?Z<?WeR=żzZ?|?'qK="g[?byݾ?~P?;aJ=>]v=5=n3yZv?z=ο?h]D?O?`)?v?a=v5T=OL?~z?ٛ^?,l={q迥|Խ>?rH?̇?r~S? ?nu?|= b?w??~TkP?m4iܽ="?-7?xƸ?|6 ?½wtݴ_=Ľ <5???|?>@;h?{h?=Ho1h?K&=d>5Sh%]x 奘t>>8B]?sa=MпMNl(_d1kM=0=eN>gu>nq~k>ِ?v??j|>\K >JW>9?>~vQV=hvn~>L0qz@>>?d?*?@y=.=o?[?|F;~=w&P@l?=<͐?y=~>!'= =d >Dw|0?(?X0?<}'=|?(>ON?m|?U~⽥8?ldUFE"p2WȽW@=@H== ? t?:v=&?u/??q x=>==Ov>=S:=`?医@z6=?´?B<8r`?eĿɥ?Oo=[?~b>t?=`=E ?==)<`'x\b-?^S5È?9?glH@Bd?v<`?rӾ P>Ʉ?.9|?m0=U0?H+ =< VP>,dT=<=T?y ?}-?}/:u?Zl=:w\0>m?\M|?_?t?}@@.ȼ?}:?h輚0a?~;V=Z=T>>-c>_]q=_пSg mg?3> m?|xo=Yx~p?\?ꑿ{Ӗ> Z5qD?ݼn=8K?=>9>2)B^?u_\=ۨ>c=Y=,@`?]?dN/<$=Z?v>KL=[c?t@ > ܻx@> ^?jnN+ >!΁=eSʿݿ>EO>.=]:D=S if=P5?k?g*??H@[XF> d=b|? +?TJ8?ؖ|?Ow%>Hg=@;|G@?޿q?:.y,?7?pT@`?CX꿇/F==-:?x??-9??eY>9t|:k`8;`^l ?>?}%?r?y:z?l?">:p?r;?_l?n?oZ?6=;-;ݾ ==Ԭ>7?=p>P~j?>,<5(?{k>:ЪSp=y^>Q1=[Zc5=s?Sh@zz7AƵ> D?pO}c?lY= @=c=<Ű?sƿ淫?s<B0?T|7=ш?}6=p=j=À濄:?wH=o=+>l0" ?h =?X=?unqH?k?lw?̦?b\?Q?н$>o4?x4?N)??i?ؼK̰=?{<=ɪ?vٞ=?2= }=?t=F@/?P,iX>< ??x@>w~=v=t0?͙<}=X`?Ot ?}?Â?V> U> ܼ,X=5=9^seb?B^;.?<(?&S?|Uo3 ]w]Y_@O>C=:>$^? =d=Q@nW>8M?2?/?M+?zG=޽=H&O=묿E?e6οT&X>?7C?}mm=(#h>L?($SX=Jdyh6?Az$<{#8@?ݼཌྷ&B? O%?ts.?N=ֿeX=Е?I-퟿=vD{J=Z= h?y龻<@N=<׍?u&=/=p$=<> \<%=q^s:?lij?a>)eGg@?^?z=v;o`+?^H>%?g)@,;?6v=W;e~I=V̽ t⋠@?w1򽑠U|=@L=X?y=$(h??L?Tz)w`?tP=u$=.<= iRy=VXh?wer>?k $_%Rb=pIP? ?XX ![=޾O? ?|St T"\Hi=%\=J&=x=+f<``sE\?dN?~烻_o;}@?h=K&}B:?3=l??)?g_?Td=^?P?#OJ@2h=4r>OV[=`JSF?WtYh]p?$,nx/v=?΂=тk<è=aĿv*q?6=)TD}?'=Gb?=g>Q> z9=_n=&iԽ'8?tc;N{=O>*?*d?b4=ۘ?l ?_F=?Fr?>aGp>/?p?}=iw ))l ?=>d>> ]^H=j0(? H`?{!?w?;o ?bj]?~ Cwn?L4d =W?eB=?`z80?=Hn ?)=&ٔ?s0?1?yC?Af< ?,qi=?di u??&d=ڂ?6;ـ==+O?zޞe(?P[@?aM?f( ??}\?bC==\?4?OV?r˜?uG ?{?&BRJ`(?=nx?q:???X?w?֩]?f@.e~(y?t??WTYN>?Kxk@h?}$W=b?P>?x>=@L=p]q=}?.>"h=pf@S=٭+[ =6v|? >J}>y>(N(=T???v>, ?z!=n\eR>7=O?\`>l̮p?S?f橿]}l>(&tתPl`uxX=(?2=d8ؽ ?`No?#?Cw?<~=5y?@;=L8wJK<=G(ؽf`?_9?igzw4>5Ӑ? >?nS?|]?}?u=R?L= ?eh> J~ }dn??Fq70?l?y˘z)7y0=˪?u=B??<ʵ=|6?OmC?v2#?BqH?MyiE Oۿq?='o\t4= V=b>cm\=Y3=ݝ>%>a?ej?\<+fШ?2oJ<Ұ~>U<ggO?8>f Oпm=>lTǿn\@MĽ¿{?7=R?q6d;q ?> Z==h¿u?*>ຼ萿7?}=I>?NW<=ؽ٨?Y?I=Zi^z@?tL N='F==0=i?w*p:aj>FO?Z(BmAO#(d=?><4=.?->!?qz;ѽ$?=F?KR>=#D?ih=zN?l?z<@t=*Hl=2Q8=&?_:=? o?T?v>>]Ͽ=l?=kFD= ^$=;8?>է?Ⱦ ijC:?i - ?9ǽ?o^ɏzlTW)t RqTc??z?ޑ?G?GQ`=<0=bZ:acP<@=@p?a?_?뼝x>t?cd?#=4?u@iE?=: ?d)=i?m?9?Y?x.h>@V=~J=h\<>.¿> m?5+@`G>|>*?POR=@{t=N l>V4>:]=="?vuy>Ox?͊wYk60= 6="=z=띤=D?t??k2d===e=?~4l=2=quih=oa0?,c?#?x`=4 ^Yt?⺿Q,I̿T=st?7۽Ķ<5_P=G=ǀ=4t?rV7b>)>??ey=[00?v% @S?i?d ,0?;*]ll?lÂ!>E=Le?ϕ==?=$2?wz=z9x=;"?]? lJ=$<[@=k< =|@BE8?g@=4?Hx=$= ?g@o@;T~!4>A#<8(=?o@ؽ<k?jP =@'>17Y ??,?o=y?T$t?o ?nlQtEa?]?xt潼ؽ@ =ճv?0?o>#=8 Ow>k="Ojq%@(q&? <?F?*ܿ$=g6=*Y`]56>56?<=9>j>i~}j?Aj?/W>$h =c>Y=y,? > 3=Δ@ ?kм=*LU?=< 0v=c=?<ǀ=nNq>p=?w>l?#].0о('p? ;g=~vH l?h?a:j,b @K&?xJ?]?A?fcp(p>(r?7y?{<BBZd@5i?5:r=<ΐ?s6??{z=;>M?ٳ?iD?}Z<@p PW@b=yP?JiŸm?aQh?q_?T"?͚=ڌ ?X-?d&?i?xa (8?mv?c"@E?s?p$.?rt=<?r?o?K4??o3y"?zJ?.ɿ*2>bA?n>A:j=Gk_kf?=h?F=HH?c>_U=V?=d˷=?Wx@<=}l?,R? 0?t/=ɖir?x?gK=FU?Ĕ?7=)=s?}?==Na؍qm2hAm4N&?}^+^?dih?5=ސv콨M=y?:ـ??ll?mq?(UN>9 7P#? ==t=VIT?@LC?~?S???8E?f?JR?'C?pQ?X?t*%?p?kx?P#hQ??{i?+?<ԖP?Pd?k^=c(O=HxX}?3B?q??D>?X>v>wC=(?J~=>n[[=d>aQ ?2?sJ?? >DS=<'>d:|:R?wڿw>S>}-tGDn=x? YЃ>)S?A>*w?qJ?}?K~,?= 0?~x?>MZ+? >=v =Nm;{jԿiy=_=.>2ʮ=0<P#<,o?ۅy=4 |?Z?t=0`p=:; ?~"h =?*>*.iР> Bb:?Q8;=.FP´?q$:=0L??z%=5?kE@?م; ?vJ?=d^=1E?gi=BY0ȷ?m ;yc=0=Rȴ={x=ė+(Ƚ%?ug=?:-@??C>J9>Hp>Ԃ?#>8]CPovj<,v1OxR?!>?$Mg>">ې=RI=rx#=B>\VR $HU>6W>opi&>H=8 ??5>-LO?`%,]=$?bE],B8|p>=!p??S{>m=(L?|7q>$?Uo?t틿e?=lztZrf=6@?gv;=yt=Ice~=?e?z?5>E{?r?B;?eh> ?V?_58 ?U fx?zB=i]????SS>?ww$?{rU>k?~-?~l=?ݴ;J>9D?UE?l=r?(=a b>q6+zS+?,?UPZD8?HZ=ج?}r?yF?&$?R3=K\?^?U0K=D?Mwp:?Wؿ_??v/?n??iu?^?㴿|?~޾2)?j=t Q9>alؿ??jq?Y*?n3>4v=R=;^p?:?Q?X=ҽc??-[=w% ????xf|>x?,h?r$?Y<~v3=O>`>;7?/P?FO ?u$?>?<. <7=[=J爿y#>đ>>VD>+T=ф>tf=>.s\;M>Awc"տd ?(? <~-?d]L>e?V==[?H=W; ?b>\}c8>=P~Bd:?=f.0?<1sP;@?.? dyQ^?{?I/@?TX;&@=!rd;t<<_^U?YJ=)?zW= >|u¿w-UDZ3?XpF$>Dh@??d} ??J?w=WPX?u=?tp;``Qmt ?(?/S?*d:>d&<0>y?\>o?v_/@jl`8"=M [LA>IN;?=O̼ i?۲=/^HH5f(P?j ?~ؐ?=:?j??%<%`?RM%=/Ŀg7W?h_=J;@=(X?qS?@C?C| 0?p?8>zY?b H;_ ==Wr?s=-= _ =?d0=d>8YOsv=޿u`=F>'\>p=Xޔ?Wv?~t=Ʉ^=8=ڌ?o?뫿[>)q>2 P!?=;&>5=L);?1>)a޿0>ya<4@?HO>ա??=J>Q=S?5JM?Q>=[?G?_=eX?>?i/?T@?`>ܾo?~g/Bg>lR?r߾]p=2? qam1Th =|S=ƶ=dڢ@=b>>3(<zbL>?^; `?P>f=K=\?a$~׉=8<7?l#=}`?tpH|Z8?@??nI5ژIuAŪ=ѣ=߈0?j=̊xN"g(|??x?][%`?='ȿ X=ICӿg󲽢=x'?L=̿6z?eJ:9?{Q?D.SF9`? m@?lJ=%l9Ii!=p?kq??=(,J?U?g?|??_(= o,[?{>`0?i>D ?sr(?$=rqq>2Zt0x?,\R> h ?fs>===R$nKT>=kx9Fi<0v???MHh3?˻FZ. ??@>z9>Y>/?^N?_Y?p=>vþ.0&{=4=6?8=&Ľ~u=j 4?cÇ?Z<@i?Z=So=fp?@V=cH ?E[fhx?mJ;?ث?w@N Zp?w6@0?6<ժ?}@?gVϮ̽ N4=J@?b4?@鉛=l7=F >jt.5?Awt>?ps5h??w?4W=n?f>*~wq=>V=kz>+? l@>[hL= 3 >v=IP>*?w;?{H`=> c?1qtyyB?M.*?v=?ZE?Ci?ٽP?,p2v>=T?o?{#pc?c} =ǡ=?wT?l=&y?<(??NP?&?t^=Ǝ?D??w=(?}V>ZHPh?l$TȽ= >m?Y`ŻnV`i =b>?o=0=Q??x=w=挽V˨]=?p&=K>=,= d&pp?2?k?b=<>$߽H= - ?fm=ך?L ?e?=q(,r ?{p?g=$?D; ?0̻?Y7p?[L?I2?o[%;5@?(4<&€?'3lzҽ`?s/l0;hڀ?i= x.0=㿖=y\;H?]??Y"?d?dT?U:AWS?>&fW|=Y$l>>==>G0?>G⊅?;^z R?|=ʿO8F=$?>UQ<>gy)=R=k|???ʁ0Ƽ>$=5u$?}=7=>VS&>ujn@8}=>?c?y=l!< =h= =Ń>=d)1H" <}?; l><,?/?S8*> :_>2M?=s,xd>=㼔`g?=Zj?X>4g==?4 .?>l?Zu?zac?>]*=D1;@ 0=\?`?DR=3m=1t^lH?-2X?h7>41?`ؼ:h=N?ul}%?~X=z ?c\:?I@FO3>z@Z=@?Kv?J=*?t2)??{rY=q??Tt=l?}ry~?yD?L?[?#X`?C\Dbо_<!?kU?-̿~H?J`$?i=p(G =SĜ=Ǯ2>>d2to:=0(<>W>0:? *8@?B?_WȾ0>Z>_nL><ۿaO?X=<>k?=>5&?x?nxB |A7ӿx=,>?KZj@^??= <=f?"?]|?o =?^?*?ng>.>*]<Ù`=$?%a?CpK?Zm=/Dl)<> rK>I0??eͽ^>E?K?R?,? ?mp?? ?'?=G h??|' d?b? ?_??Hxu2??H?c=ɡ;?i6;T@H?f)K=?X?Ϟ=ؾV?(a=ҝ"}?}=)Tȼ?r[0eD#0 jȽK?w= p?s\TtBLпAz}>&7.??|?1\?.==ԣ==>oD=\< (M^+=,x=\A[A>^G=A"(>"+?=r̤==ܭ~=??=>@=&mWheS>3WMݐ=|̿~?/ҿ_31@F??^=\=r6?w:>Xt>o?[=%T=d?8>p(>R ?2u; >>[=)Hp>O?\>砽9Ԑ=ؿN`?qGBgb>fu>G>B> E?[K?{`H^3?{2ZքB:==a?sCp?[X??q<Ͽ%R=&"> s?^O6Ā! Ż@pd=u?=K?=1T?o9;?D\?>%PX?;Tq?V?H?0>U?z p`Qn?}(j併~V({=TY =ū=_J< =(V<6TPVj<^U? C>0> ޼4`=f,>?zd!^??6?x,bAB[7?65B>=P0P=?2|zn>`#!:<=@=,`=T*=LpN>ʬ=?~>Kۿg,Uh?z2 ?_D=?pu^?XB>Wo=_:[?j|Җ=<ؿr>&j?n]2?%`nU=P<0=½C_=|==GĻ?N?D>JK8?qeQn?*;y@OBjB簦>-ө?mt?p}=, y*xv> EJ?Ͻ+t>;x?}8v˓=ek=+&ފ?vQ=R?Y?vP\@?t'?v=An?8ѽ/ Xl?^m??d> ռ> %: ?b?4?|bT?f4,?x?uڹĸ=t);?Z<6?iͽ=j6?<]X>=\?K UT;4`=et>a_;@=<z|?h>{?m?on?z=N? S.>Fm<Ɯ?z?egs*=$a?F=}Ŀ==l>!= v>1z#@J8<(༿=^P> [\<>G|=zA?Ph<<=c"L?@?? ? ?- ?= ش?N?`?=T?p#½ج= D?-8bؼMΠr5?{j~>`̘?ɻ?M#?zTrB?gNvP?Z<= PI?nQ<@X<?_?é"w9?|ohՀ?CeP?q6p?_l` Ƚ?CVd.0/8:.o-?|ʽ^P?H?ny< @ ?NC=‡]e<;=ؿr"|?zd??Vν?a=@!?mLk?:PX?K|S?rhBA5=#4M =͚(?$w+&>9 ]?ؿgiY{3?/iC> (>wa?[?@>_ ?w?/ZyF=-ȿhT<8P?>d>%=Ն<:=;(kZ?;?f?չ>d=.=\>&?.?ʽ^>3M?&?ݱ?w=="=([VY>A&R?wN= /X=H==4<̃=Hv1mp{~>.wV<=>~)?(XyU=$?x ?Oػx=RP?x <?<=ǢL%\n*2;c`=3=\'=Ľy3t?>/iD=c=Šd=d ?Y;=YP?cGBIxp>D= (~?=F_?m=?};Ǡ?~=??b1 ü"}?t?e?`G$?hn,9?s> à?\Yv= ڠ?|(q>e??_n?n?⤽\@?=ANPju?{4<0d==&q(?r'?>9? =`'|pqu?s1}>?nۿ<޿tΠ=d?F;}L?x?/ҽ?r~mq,X?.?tkt<>|p0=c;8BXsu?05=M>T-llZ>t\>)?f>A=Og?j3Kz=>>P|=펽p,Cewf[ :m>"?ƿw]Ʃ>ckzIgh7{տ]=j>0=U=z>">=kv =ҿha==>=?BV?cs ?֭=C=(?eq=Q> >Zvz?6=z>f^B= qnj{=F4?9?iӖ=)?p\*=Af?p/پ!p>D>ɕ̽M==?>02?@f;?IfؿI'w> _\>2P=Dx?k =P< p{8= ?W?g\OT=?[]?u+~\=: ?%=bn2=:w|?ou<$x?4:? =薨=Qfzɽ}r=d?nq?\=~t?g =T?Q?hQ=kP |?mg|Tj?}o@;H@?2<=?SO?8?|?t=f[T?Y?u:TR4lZ@2後l=<0 U?{d=XB JO=j>?qT`@k4#=ň?F==t=>'Vѻ)H¨> 1:/)?t>sf?ZnO=?1X=箽͡=-t=@>3?{;k@=ļ@^^PoE=*Lg;³ oS2?yM>Xn?xill=f'?T=m?;??v\R?Y??z?fh> %.jBc?B qۿ#j> <&<>!0 J?)>#[?Bƿ\_H 0?y5@:BACB뺟Bt'A?m?lP?6?ҷ=1?x׼ \ ;5>S=?V?AN^=,~d u:?\??P?; nTdq ?UG=`q?9Lԁ=6BX?]>C=*~p?i=x<=a??WΜ?Ҿ`==DՄ=@+0=R1p?L=E}T?`M{7?;l?l<@?<*=ЪA >%?bT=jB?]l_Ϳ8;@?g>J c|>+Ͽ{9XL˿)[<Àbk>? =sV'ڽ/RbNP=R*P^D=*mDk?~$l"=C\M??j8?='#O.?X?nL?==!?zcj= d~f=.>t =^>=?Wp7?vp;@ 7CuDpoAN?H>2hv<&@?1?;=4N?۾ ?Yh='<`J e^??Cc?E?~n8?DƐ?"p_tJ??j8뿁_ C?}?j??rP=f ?=Q?"vs`?@?z.}h? <= n?ٛ?u`?l=>(B!׷?i&*?e ?@9=٪?aпu'= нQt@=;RCA4 3 ?h ===MrF{0>_\vh==ķ`==?h+@=d|L=84=<.]?q!A=h>Y!?6:=1 @s2Ohh=ذ?k~=*.==m?`?̝=#?hYtMRp09*?t=F???P;>Q;c>\- ?}>V?tp=9``>@?F?xeL0L@??{y)h?}Jyeؽ,lh?wb#T?w?A?xO?A4B @1??-l.׽?.G>=f?m.݅=ڼhU񰿙(?i<н*Ŀ}=ƪ?s/X??շgۀf?@5=j=v?r f?s=h?j+ ?$?g,=sZ#v?z@>Q=\?Y=t1?cX>+GtͿ>X=<=KT>"'=w0?6`.=եX?\X>i?J;?>'==w x5?̴?hǵ?"?OyR?f=]kj?Q#H>Otl<߉c9νO?|?\ ?-;=뷼B?w ?vF ?n8='ʔ=Qk??YZIJh.S?.Jؿg=9=kSN=,x=_;S>#?fY_/|<pbqanA?^g?\><0?jj@@HI?ž@?\l?嬲=[$?>u??ݳ?=W(uqF4D?f}ɽ=Ŷ?r>}?=(Իέst=;0.L?V<@6?t?Y?aKs?^B_???f/?R ?l@9`?b:D?I7<ޓ`X^̜>8=Κ?>f+> ~=I?w=3???=2=E}?Rqm>Xp?#>(r= Cx?iK>7b9}+?*=}?d;u*=m=hl9>zE>œ?v=ʅP=X?PྙSn{=d="0?vrj=S V?>Ǽ:G=|wa^~8^nT?P5?p\+"l8ᔿ]=^=70=}Ep=2̿|?CB?[Yr :?pLg^T?'??L?@=T?þy{?aT@ f?s<~л?=<ت=?^r?$?e@?_?bY3L??of?QI?Ƚ(??>ƽ5@|_J9?xi`>';4?'+?1 9L?~ ]= ߿=Ԏ?|?߶W\jӴ?yB=ÊYY@3?yN=*?\W?m??dF!"e>?Lyz佪@@6>ted >Teb#>%wڿa> =|>_?=s1ۨ?g=yf='M?Ъc?mοtp0vH0?=Uk?S>%\j?"pG!wb>)Z=S"p>,=KHPW @F7= 0 "p8tK|D?qt?nd[h?Z//\?Y3Կ?{?zQ g??Y?܏>=XL={D=TR|&ؼ<:J&?A6Vx= H@>*+j?J?-ZԀ? >C?}z?|X=ο:!=~.= >*S="d?kv[i>N=l|?etU?)=(?d`8={$cc%?zQ5=7}6?kԽS @Ӿ?;*Gu?fT=Lp?m?r =H?俁Ou=,}r=Հs:ȿb?hFؼ Р?; ?% @?}_g7a=Ax=CD@ܽU_?\?B B<Q<͸?c ??m6|?ȼ>WbAȼнuU?vĽּܿf=h?t?H?f=4=zv ּI?qeI@4?&_j|?Z.@?<=S> ?@=-0>*G=k^> ?>M|xO}*?M ?p=PX?u?9V=V=>4R>S@~¼ >r?彇P ?ך==^u!f>t>MQ_oxTU=???r{=?y@<1?z?x=?39;sbp^> ?=6J={<`=57?Q"?vnW&?x=҄_1@=|C`Pa?uͿYľ<@`x꿀^?r~@cԿuG;?6}?y~h<𿟡>l =a9=~R=:<2 B==?C>.>@=T^=/ Y?}t=4(?P欽 B<$?;`?U#\ =LCXN?׽? @ 4?uJ>E>vUb<<(=Cl>_&\o?b?W>e?zV?f+l=?,hL>/FmJ=P@>`~?~?D]?wa@J=hmh\>w^<ؽ?;?}>TkKy6<{$tg?.=X??fNܚ@t??ck?=qP?f@?=?7= T4nؼ&p=Z=%?p?C=* =j=x(ֆ4=0h?s!A?T=V☿x??p?#=W?;u9?~0>{?O^<>7=ƅP?8? =ͦ??`=3?n@S>Kq^?߸@8?YJ??dz?$~MP?}V<3;0?aA=o?rE_?R?Q=`֘/ =}6?=<<ق0<>P|쿆$uގ>a- ^'?2 =vX<0?|"*?ݚ?rp=WOH? >?E=5$k>L@ O>R)>m?i_D>qog'-=oP_=`頿{T??u.>=W\=s|>A=l?n??%\u ܿQ$>?F>26UNl0v=Ǭ?㝿M<.>s7=8?)?xe??tT~?=Qi=E=ҍ@b =t =L m0 R? dT?R<}ɵ?#V=?}h`?r=2-=PĽkz72 ?C@?VϿ?wp;ä?L><>f?ꟿt?C< '?q-?w>M>1>l?c])(?S?"=`> <@8=Uʼ?&@5>5?q?tnR?j}=֌?e?y ?q?/=#bIڽH@lD=X ?/c:?=ׇb?C^=e>2`_z?r{?O}K+c?ڎ>46-=&k[Y~?q]?e.phVg =VQL=WD??1:?=O ?t?h=-F=A>Ø=F?BL?~p?k@ϩL=$=6=o=p6x8*?[U>?i࿃_>c iP}˽R=x#?Gcl==?juD͋?}x 2>\>\L?.z<>"ng]?h6% ?rz?z|`? k5 ?}L9ݡ=^͝?ca#PR?yf=<ؽ?{b?r?P;=4$`g,pkl`q\=>ON; >Mq>=;v>D{l>he>(#N==x܌>N ;n @=%>kϽ\=GK?mȼW i,?u>a.a =&?r> =Ŏ?p΂~[S?#dP#=rx?U $?C=0iq=>-m=,Ț`??Ñ?b?>6j>$$?q2=l=Eg$?u^?a_`= \b=/ ?1?>?g`u=D3ôl\=ӇL=?!9RO1O ?|\= >@??u=YB?I|u!=k+>ս8;PB<À0=qP=o?:\༧ ;B?iBQt\`?,1x?tu=yK̚?d?d@~>"xkI%[?>v?%#>6w0BG?ֿhіV?x= =<9`e=>g ?w = Ŀ?s?d?=ظ +. ,?<( ࿉oH~==]>>>H?w7cx==FH?] =4(??=\>^oF=>V?~[UZ?+?d%/?pw?p;@?^y?~`=*ݔ=D< oH=y꾧x?C˽??xdv콣p=Y I.)*?wP%?t?z?m+j? 澑J?p>?qlC?h] ???bz1U+<Ű{+hu&Z?}=P=j?u?ԏ=K<>=0ߕl=Kp=2?xV??r e=U?T?%=+=h?>==᭽Ө?,@y?=@=*=?h>Ø?=`~?k<# >;@X2V>>KS0d>2TR~_ft?> |A?xIμ7@it=UL>^`?=5 =3ܿY >mK==cȿo(2?w+?o?)=լ??m.H輛qP=>=.?F?lX=Q; "?һifch?Ȳv?o^<H?_?b?{Ys=Th(R?zpvT8gA?=ƽ{"ngJ"=\:=yԐj}?ʿ4??(Ԡh3?_KzH=Ŀob=?bM? ?Fp?=N,A?=?mĂ?T{9T?W? 8[z?P?P:нrH?`|Ŀr?^^|?v; iR?v=ȼl0C:l=0=$?r?M6!?1俁? ?r? ?f*ᆼX=tZ?mSPX俅?NU=gF3V?r?f< @?&o/+?v?y4н= Ƚ ?=$?0?rdR(=5>+=1 =.2==v>~??|?e?>'VKT>=J>||>>'?e=$>4_<ݣ?xx2?i?C? |P>(?>6=?=(@i=H=`> P> O ?PF 0 ?=-rs?+&? i?|^?z?x#=XkBH?>4~-\>zἿTV?`JO9<S=ެ+?r=TEh0 !f?{G?x:> /?k.nb?B;?2q2?Z?t??zt500?ZVO?NP?h=a=:?n5k'[>tR>_c?yDZ8ѿWP=r&>2=Ò =)=};f<޿K?==0,x=0?z,iZ> V> >k> 뾒>??yk=ĿNм@Z ͼO>>>2HϠ?j=V??\#@BQ??>?ic]=񸿥!~6=@ 0?i`J@>Z&@?{p>(mO?s?j5?VwvRE{z0{=.=dxp;N`8e=@?c?ӽG,V=ެ?o ̬uR潾c\g}^?Pz?k =h?=<#(151?ᬼs࿑|?xk5Πn?p{j?c\=T?\n?[?tj)CnV?c l<RD@&}?9轲n?L~4vNHZ>'?r <= q\=OԿk~?y$?xȼ=?3z.<2P|[?Th=H=؊=RU4 ?UJ @ zbq =l>1[?[⿆п|߽$p?7 = =_AY=z?x=n Oj>%Y2S:4=e=BCP?v~>mq?X=gT?q#*ͽ7<|:@b ><_&b=?H<@`?<|?{O?o=A=}>^Cm?_><*dm?uҰ#<@>YW?S=ц;E?C1t>(U8?+C=L>GY?B-w]=1?==q7=N?0һshߢ8?kb|=п`m? (pP8ռj`==?Tz??nljk'?vh> -4|@??}[)>K@k>>b+=?uv? ?WmD=ȿpRQgn>1`@'m=ѝLv`?[,-M8=n?nKgx?c=ɬVg?x/=AQxʠO&?p.5BU> w=oM?C==̻?录Z '$=#?5?QY =.𿍜? l=<?S?0"aR<=pE@p@??V(`/H?þ ڪ3c`&? @޼(?m?q~9P?必?1oQ?U")~_>d=3 =lF?>=8>$x=?-<`,0"ʈؿv =¼Ώؾ]>M޿W&?{?tL?(R>мɀ࿛Վ?>?^R?I~>>fd ??@ٿ. ?˺6d?d’?ȿOD+>*=Re@©?= K?vL,?ih4Xg??}?u_o?{uK;d?w$?[?*?ry?lwy?v]ui?aмF??=7BD=n?q-̿`m&?k}=h>iH=,=Ad=#l?~rB=?Jd?>7?pZ?[?1?=6"/7 p?wJ߿?`J=v?\=f?[ȶľ+U)@?kM?d92?u`9>L?z?t ?w 4?vn¿ܿi?vz;`?1? Θ9r?t򝽕t<4Ƞ?mp?;C?#?S{.`He@2l?{MԿ[dpB#f=?LW<;ܔH?=Mȿ}p=٘=>B+Y=x=Rt=8c=r33h=p?>Z.>SL=2??⿆0=k?u>5Ek?XwdU=u<=AL?=C8=)xl2?h?v!?|zD=v?e=J???m(<=eYڣ:D; ?.Ѹ> ۿyL??̥=R1=S\=7?}=:p=0 <*@ Hxݴ =>,D[>H> };PR?dk@zfB/WA?r?OQuϴ?PX|Ԟf@@~=*?\z1ǽX8?Y?{E ?moΡU?c`2Z=s&r??oHsO?s>/҅?g?qP@H|stR@ ?: ?l{>> MO fkC>?`?X^> }>n\SĿz?!?_̿vBT =,n>9=:{8??f۾4ʿ{???=\=B_>=e?}F'2mtb==Th?Eo>B< Y=G=e?yIu=m?&P< @?-&?zj?Z?wD2tD @=M?f2?Ox?~;=v?w=bCԿ?yM@"=b> ? "> --i)?tX?r2f8E0󀿄FK??7h?b?}H=<~мtP?!s?S:=j=? [?C?Q?s"~( ?D>?(*-C1@n`c -==T>=-8ڃm~'l=K=(t=0/tS>sd=;}RD|ټw( =Jb =74==?Wc?|?"~2!E=?n{>O?x+2`?"!~d[zl_пuD n ?A7?=W?C>W(X?v ;z?<`=b_ <]P@ֿcb!?ʿoa= f?~?1xkf/?v#Oq?^?dof?w?j|=d-x<C83oܾ$h??i}}vG=h.?DF̾'J4?z)?ܿD?i?|%?}?=?>>1?_lR?!?|W &<pcj>w?w =X*=Uq?-0n ʽ?Qҿs?t(?Kg?R?ic7tȾ?r#?my?M%BwC=F^m>7- =V>Y?>?Ed;Er?Nb>?M=?͐> \XT|>8>$qg+X??=(?wc>>W6rZrǿA$>O;G=հ>ъ?9~|?Y;>+I&N?k`L=?=^? zܼ0=?/=KNb?M)? h@?}}=2S=d>M@ kHj`͒> = ?=~nh?X?s/X^ԿqdG軽@> 9DŽ]"L<j?x?A0p?@<%=Qdq9>#&?~C=|?p>7D?-}?u=]=^G0="h A>:5?fbZ>?a*@_s2齙{?im??x'= p<@??k?kF<=[Z?L\58?<<٘E8>w?g>!By= 0s1?h{=@<R[ ]HF?t+TD@?Ma?<\<.?Tt8?ta??пsm?srX @2X>о@4?MhP=5~=R =o?\;= ݽf?i?{=(<̒p>u1=|=?T?l|B⾯e?z>U4?+>%G=<7>by>VU>Ԯ?t<@?j.xA?{^??pHP.=KP=?$le%=tB?i ?ab==yV?^6?ue ?00kҿ[s-_?}hUaP=i0?f?9;=(H?=r?y\D?@>3>Nu*M̾1<??{fe>=z?=z,??[\<?u?}=ڽSY/0?{0?p> ?(?j;xwl,v!zZ?t+Gh ?sDgp?> x?bг> b?_=~T^l;@w@??<?Ii\?%4?B> pv[;Mqp>*4?jo_*=A?:s=>QL=3?AP<>?L[="ȅqL=d.x?cP⣘ >dؾ+?T??ſt?[=:?o½|X@C"w=js?u< =3G=zD].ҽ? L?i?s&??lK޽=6Y=sP=f3y<~@BE?~SJ?z>==TAz=eFiC[~==HuKQ\ -aZJ?¼&(J==JR.<?L?x`=ȽOՠ; 昆UR>V=>3qs<=kFp?z>dp__V? -?r= =?g%]j:m$$??v?Ű?(!Ue?w{B=KN?J HrX?D?U?}6-ޤ=O?:bHH⠿ſy>d<z?L?g?h$%u+x< w?o=2><mZ|=JNk c}<,A<ְ ?u?c~?P6tYV:b?; =M8\=LnԻt=!B =+=9z?ܽ=Sؼ((>&S g>?fg?lĽ>/M=C^R<@?v?:#? x½)?꿇KC??Ș.uy=Hu㿏8<n'==?a伛=(8=mx`S^f?Q=]=6y,?eN.8== 0ȿoxM=1\?jQ< xJ =c(?@>#dɫ?w?w?Ŀz?}6=?H?bG?jˍ?/<=(?q$d?T @B?i=c=Ծh?~1->;=YT>ki ]!?uP=?h4B=,?^C?qL^C?t?@d?r??u?>;͠`gF=X?Gg:S??u*p%?P#?Eb&?p:Eژ!``;g,@rP?cvlj>T?3k>Ƀ8X ,L<`;$?pu?n6tG,;,?j@"?ZOX]<?o<?@Ѫ?_z=,s==?_gBYc'^C= ?m>?~ڪ`?kg>a zxĿwV?[?dӿO[>S?=fu@=>=<,>h =L<0qvg*c? >=xy,r>G>j=txl> x>5? :6?iëxX==<=w> ?*{>~.Qοp]>9?w?>c> Q??"r?~I?1?rJ=#vgs?jmS~I>=?Y?}==G??h~?t==?.ֿ^NX='u=fpvr1=݂?Lz3i`?Xqq?`h?='F?>5=-?`>NЀ?<{?dKYxP?` ?m,<=*\sL?_;TN@?zZU34?s\#@0?~7m'u?b=Z(i; ^|?>\ ?ob?tfh?uጽ%!=1I>"pOejD?aޚ=BhWNp=*=5\?P $?|(a0J?\rL<%H'T`4-5q?wD?&ɿv,Ƚh=Fn??euUH8?io<)?yаhmn= x,P3X?}ū<;`?O1=o?t}l?Fʽ{?hJ?t&u>1?}sV\?GZ?Hm>73? ?OVCོ|DB݂?^> G <<=|B>ɱ|M4Me?we8=-D=,?#o?P$rTv=@=Г?Msc?:Y@Ӏ>7>MV?7¿iY?0=B?~ =펆k->$=Sd0>+" ?4RyK=~.=Ŀcl?m?v;QEпhP?8$=PP=Z ?`>J˾C?"=@|==XuH(h<뱰?/e>?Sݠ>:F:.f=UJ V>Iֻ0P?f==꽩l>{u?~y6?2?=P= >>t[%t?Ud:</=l=#uܽ9 .'-?uj;tO?|@ t<#(?|=F=_];?qm^sD[¼K0?i';zԽǴp&>A>y}>(>E=4?dΓ>Ş>%L?,~:=H?Z[=Z*Hfo?z>3Z=Eʾ<<`;f࿏UnN࿇ڿyJ{MT>!_!;`== п<~?I="$ ">so{%X?>=[aпmEa0[>I =l\?xB=񧰿t ȿcC>%h?mؿ` ?A=z0_?wcuſii,=JD= 4; ?E?<=gfT@~g2Kpq=,?|J(b?r答<=l=`u??? ?|ԅWR??=|3e=8 ?l;@u_ =릿=fq> >,?Q8?qG=+X=$=X@?ktr@`<3(@ƞ?W=S?w.* Ͽ#k?U}9]شĽI,ǯT Mu?`9@ ==*ܽqԿ?j!?N-?TF?d%dY?r hAg=\=m? V̐b?= >W=?sĿ0(j/?>BhXj>3<>x!e=V<@?~Jt€xNo=|MrFuf= } >Qt>dvB;o`?HgFTh?ck??FJ%=,?s>?>A]<<3?aξPUDοC@<]; >z>-0p|>z?ax%^x@?f=;_@=C?(=FY(?me=U>?_?=z.?rs>]a<x?h\Kz`??p~ ^n?\f?rA?j/܈?~H?3`?IG}࿀/[h?k@T?g-?P<Ɣ ?Hu:/> ܿn=?^Cq?_'?lG?pſ@>?]ԛ?"??Z?l98s9?kƔ:;?qy_ =ѐ?Yp?7?SI?[z3޽?ft?Wn=ީ,?ty%?MR0`!'uh=j?+?m$?w)i?lkf{(6^?x(&Ƚ4:ܸ?;V@A@>[?=Ŀm-0=h?#K??3@>Ǯ>0?ܕY= =ǖ==\=В?b=mФ؉;ݪ>7"ÿ@?S?>_\d?J ; i?nؾ Ơ?|p}?=>=οp(XB; ^of;?=ĔE?R=>*0?0=<-\:> cD?d`IwVFwm?$<%9?y?n/=^p=Pp? 0[16H ??w=(?]?tT<&@?hה?fh<{p??绻|=H?/!4@3 v??7^|?aF2%@?߽;0q޼uqxe:yQ\>?"?o?r5>/X$Ľ]Ƹ_?'}h?p@WH<@p;=_Dx?Y=势l;=<>Q??=P_DW&Ŀmt>r=U?|>"|>p%?K콀P?d7c5?b= <м=Zh?iv>3!F?F?o{yJ? հ?P/?_ؿjV=Fz {?ļt?e}d <0 5(p(ٿ{}l?;x?z =W=^?a| &??>Xz7?j?*?Hg?E9}?{~ FA?ccP?R}Dj`h=%p? Dg(3;D>?$HļS>Bd?vZ{h?_o ?bi=orA<+j0?P >=n??ei:`c2PlM?BkLSBs>O?e~?K$?n)=n?w ?@?j*?ڲYy2u?|<-{!?rᅭ*=?hwIs0?Rvy?rء?Nk"?q7`?t4h=<.8~̿e=4>Zk1\?hVUZKL?t%H=lX>:>m>FD=>QJ>h@~|A,#@pc4=^/DgJ=x?Xe ={,`>$=>AdH>>N~?@2>qZ̿prhA4C$@/tj ?e7>K%ǽpMWԿҹ =1y\?=Rhd=@T,`>Ŕ?u=*ĸ= 8I?">Q=@?"?w@=4?F?347@^mؿ|;yF”?v1?N=,G8?mn`@l?vQy>tf+t?=?w9>[>\&>tL?M=?Hgp(4kjL<<8?`x?h`y(??# 𿅚?S>K=-?Np?y0=qP^?Y8,?y19=_D B0CI?mY='g>zZ?uFm|Y=EL&?G=-=Ď?>U# =f <`&s=^>@?lhĿOݜ>!X*>Xn=Z?uV<@?q+McԿb%=d=m$?} =ƪf ?tU$?;`?m=<<+e=)=$t=-"?<޿<[?傿/@@+@!|@>Z"=4?{D*?3c=W*Hd?Wçr9-vp??D=0 uO?|U}zp?q?`H_=;̽ph:1džn^H%O?g>t[zIT?e?}'?R?=?5оi=nLu[R?<)<?j?ڞu~?aDͿk?N? ?=;d?aL=Ց" K> ?{Q=o=?y?O?[(o=X޼s0ͤ`g@㽵p=x?>\?&ؽP=JD<ސ`?8?c?#bF f@?iTuCL,?= >;?='??E>hj?_???*\;)?m<=H=o$?Y=d0??7<h?q{?^J?k{?eFp?YFpdDv<2<?뽦=_>03c̾Q錼P>b?kf=Q;ͅ?>?^m򭿆u?<4tt)铿tW.K# ?vh?n&> ?>=wƿ?*=?zb?=;%=f4?j82C=?Dd@Ji$X_?i6?g4 ,D ܽu=&|=pt_?iQ?.s=?r?+?6i>X?a,x=b!=wP?vpUȿm?j7>~T3ܿ[j =~ >?I>4pxea?ݿ\\wYh=Ȉ>)׽8x>1{=k?sY==v>/@==f?`?slT>(h?j@=ws?>~@=l%=T 8pfUW>8?=?X?uE?\L?=t<軺?V}n=?l>05z?~q0ra:`?ڿ?^ܷo=r,>;7l=?=M?`H=i9Zd[0??y$?iþ?p5< ?i=(w?p=3&l?q?e?WXe?q߾6ؿw?0?VKºǹ?g=\;5?B??{%н]9=L?=T?ü3B@X!?v(?r$V@@2?57` ='4`=?hl~䔿X. <}p:??k?4P?;c="u(=o>>hMrx>!j0>> CiZ-z=24q.==ehE'|\=`>V9@m??(`]\>l?5@^=?\m?C?wc==ip|yv<> _+>Gu.x==al?m^Yi=s?N?xvU=7\=Tx>JE@$=L?mj:}> >=ێ / ?=?juPmFY=mؾTܾ!?R@WA W?uD>Y?n;Lx͊?JM?e6=^Vᅤ E?}=?{?t"'0!6u|D?av?8l?Nu?}t?8s\aԺb?T&cD=*=V<-hx7hSp=(?n@=ZD?f??M c- t>+3<=J>K>ZPhiT = =d?(f1>{>&<='?ޥv =#=Xֿ=Vo2>=],`=UD=6/? f@ye?0=ZP==f9=b~(-!P==1=~F8{=i䐿u^=?e=s> )q3~=wֱ?n>=1=??{0K?x??t=&H=&?ҽ?5=c>G?u5?>2 ?maYb:?q'1?cj$z?s6?+? ABg?=N,wm?v?u p`?^?ENʐ=o&пL?2?n=?#WN?ah?j?hh?O=c&Z?{?Y5~i?`?tмq(98?,w0 (ϊBz;5?zܿ}/=Ŝ"m,?y?w~?f{p?P?anpV?<н88s> r?v?d?jz=ks?Xx0|P?h%?Zk@?p"@;b?iYK5.et=>?xd8=Wb?='+?Sd??=wػ4=쿆?ju=*Dk@=W:=??s}^P5> K=Zh6 ?YοhrsJ?_?.b?Ind?k:><Ԅp??-o ?l>?eh4?U[?ڜ?,=P Thh<\>=8=D?eN={Y?m P;2 ?5=_Ŀ_1LtDE?e&g?A=A=;w>]~> >^)<֖ PS?fX{ 3`@w>(%U;@?zNB?yYg@==߭$'Ƚ {,?y?m?q_l̿Ҥ4?$?%8 ?{ ?d.<Ҁ?8ub]?pd x@@>j޿!oпZ_\=/}@aer >TV= } ?]?1F=(W??.,H?oB=lھ ?{O鿃#;@?v=T?|?r%dpX?I=@B?{=.uet='(`2 ='Ƚ?8?rgMX?m;L?n61X=`?-@=k\P?R=T??e $Œ(=ٸ?7?i-ni??Z=~>?E?d=+ U6@ a>)ɀ?L|?MO?xJ]1m= @>!&Λ?hDy8|A0?uP?f}м 0l?N?=G =4=;>59D@=}Ƽf=$=$hҿ=7=ŀh[\>,F==?Ay?oqU8=2??V?=s%?/z*??x떽#?)T>?=T=G0ֿI=z=<?u~?g,< ?4?y)T?v|? f};"<, $bƿu.h=.=5h2Sv༶p>f=L?J<<࿃L(?qށT?j>[=5<н Q/=Shw쿂eC>_=\s=n?)|\y=W>MB?9J`?͕=\9?p =5 X3??w`?_[K0B{R@ 4=L> ?vD?.?um뽤MvܿjBm'$??\ ?l==Ȍ y(>/¾н($=I?h=F&x?ȼL ?a<[?_M~ ?5~?n@*?zֽId+轌qp;?f<9`?/?oɘ<``?zN?Q<Zsx=L>`e?l0W?ts*;L@?t?v߶?n_`?a =Q?rik?T0[߿=Ә?u=.Upt`==vm??6>&=(?Eg>@?c=>= =Ř=? ?$2I?|?cr=XT>Y$?~Y@+izT?=><=aXD%??2u=ɚ?#{?>??rǖ=3ɶhě =nm^=̽=U= x,uF=:?>?N4t@E_u=JFh?><"ps?~?~MÈ =`p>AZv@">h˿cL=Jd?ʿhl?=Ŀl=\" x4?s[?}_~=&H@=t >H=STl?|=\?p=\=8|>@s1?F־c=@=ƿuGR=i ==L?v@W?}޿j'n< ,@??=ɡĽpd>>4g?f=wf8kV-=_<==>/$yh|a&唿h) ?c}@B@B$o==?SkK=,=3N=s6}Sn<̧>jռ$p>@?h|=5|?Կw?Tb%S0?&?Z/?(? Z=~@+H>6n?$>x=&U?SK˛>#|=%V?2 ?wB= =j>bx?U@@D=οL=J?x`=՚t=Ծ=Sx>Am9x?`?M6J^=?wd?d{"4P?^?vo>^?S@=Ŭ?ae?||>MRQZ?k=b[`=Ŀk=O>_Hc?w_?o7<`=B3Lb-? G^?v=?%V=;޼DA$w(]>*c_==s?z?H?=?xf?u9=<> xR\<|j.?z??)u?dZ?=]?UZ=RbPZ=V~`l?D?h?r]=J? )@\>> ?V+_?Db}=?yj?k?T&ѢT?Ky.D-?p<Ⱦ65t??\\k?pȿ~Ol?vѢ?kl=ψ?t?G?62?2;><|=Pt><'=>k?=>&ؗ>B>=ɑ>oj@:T9CAA=^=Vl`R=U>7j?=y{?~?qN=+?qb?5A?C0?>=.=*!p=KLW|?:j?I@h?f>=q3=]?!8V?4<=P>e0hȿp<࿀/?t,-<ݰ<=2? 5 r?qddWx=<(@%kt?z1ʄݞT?oaJres轃 h? ?t7T0?V==Z?;=>xb?[=D?qjJ-?w/V;܈?^?I=?5=k[8?6{¿la?}?v>?vj=W@yn;7={,;=?] ¾нӀ=٤4?Z=$(p>G=} ?q`]?Gh~=? ȿa%> APB@~b!DLJ::^?A8qgi^rz>쿀p\Ck(fsZ'pB?g=0dr?VN.8=? vT+=Zr=d|z=-t?vQ>@?=<;TpE;=F<F=xc ? ڿ`:=?w뿑><{Yv»逿<7xX<?AɽxZ ??;=V?AԽA<=m>%=7`?rA?i??YA佬2uH?k+z;L`i]?ori?q%l=%/`γ<#оcu ֬?kR?l82>N#> (2^H?@H KڽW ?nw\;9@=b,r`@4?zӿ?|? Ƭlr X:X+$=8=y=Lm?i؂?= r۰6??b?&Πp?.=O0Ai=xg=̡佂l=|TY?π?=?,+!?;nlԽO?wƿRKux?=XQ{Zw"~;|<?xE.=xr 8px#Ȼ9@s<p?g=&нsKȾ>s꿌ҙr?"=H=Ir|$YGT?^M ===fP?w>Exwp@U<ї?p󽤟?h?oc= ?(!࿌^ݬ;Om<}>'JBa;=!P?e!g?!=e=r}4=W?Cn S=?2=2d=?Xq=>=5,=p=ljt>+Ď?ͼL@hT`?#u@M8~?т=??5({=!=L ?~r?lJJ-w=\==0=r?:dG=N<=* 3@>n-5==? <8=?^g=m?Sm6=ǔ?<'P?m?h=5PH=b="8>w?8/?ݏ)t?R =住Wfqʽ^\;$?r?]=cdH9 ?釾n=2?tV?)h?|=`2}_?$OL?'ŽٿuK ?_?PF?{R= zI?(?~~?s=?MMorƼ0?j6?fbV<?d??C?oa?bq?i4s|> E>5>LC@?=9V$v?T5\P>Vp=6N"m=t>pɿi.=H= I(=[Ƞ>:6t[>J+ ?s~V?s<Հ=X>oӒ={ =@:tl:=ih8g}_X?׿q'?>eg>9#-r??i?c>P ?`<>?~r>\x`<{D-tݽ_W?cV̔?nk8+?6?A<=NjHc= ?k:;@~XRH`>= ?w$f0=6W?|K=0P?|4?r"?=S?ij??V?GwZH?,߿xW?'gā;V̀Խ%H?A\?3UXnƻW@~?q?Jn? =[6?3)iu=p 1h)w8Xj g^e`=s9 =YsI?:y+G=νex?f5.j?HGH <$ ?p?v?k /?ߒ??>$ܼi?>9=d>k>&0/>g=b=+<a@?~?Dr\=?rBh)7?4O`>G{=:U;Hm'`n=Z$? ?F=1{+18=$\?=ZX?5 ?l?}1Q=Gh /A=࿏e+?}(m?w{?~ I*= ? M?t?s?rh?o(> |$ޤw&.Aƿˡ<4X=ԦL꽳L?5?}Zǰ=1:?p?yi\x/<?2= l=W Qi^1=h?q.?k?w5?ySL=|Qop5p^=D;H=}tr*=%|=޽2T?v<ܡIngp=.Pu>?7=LH>T?s2?{7!??=6s?T? VsY+;?$>>y;?S?p.Ů=L?\=Ė꨽/쿕ٿr?wzU?p =G@?Uǖxr;S?M"Iz=94?J~ZOaD=n@7gHW?>?=/mUD?{\>2WEA?@ȿd=J=[8?r=X?}=\??}=""=4>==>=»?~=6<S=;ZXwexh?cg'?k]==u>Ϣ??լ=V <ཀ|f?qW?gwz=пo~V^=r?~&?0=@ePt7}@$&?yG4@h7AU}?zU7QX=x+ =,J<|?o?{?;;V??Qp?zi6?x%V?zN??Z?f<ؐkg>>̽=ʥ,? =FX=b躡]<? ">?H?{.K:;@C["J{~?Y?KWuq2?dzcK=++=x@\x<?n`d?F\KҼ~|!;`==ƿZZ> $Z=u(=l?{r>oe=flk=#̿cmTT=j<?sV?nj=|=gjm)B?qeJY?<5J?A|8==`P?s=>ZuA=!v=4??|}=@P?H ¿{I)H]-==| Zٽl=ő& ?h?stځ4 ?ս~!?j=9A=,;=)hnѿa ?=Hv p1M?mJ=Y,=K(?B߽<ү`D?X?M? ?yc=QU?ult?A[0@}}?t"? <>4=Cx?ƿv `?hCn?n?\2?lCh?G?gMȾо2<~`?OJż>h?d@Rtp>`̿^-w?)5>N`?lʿI!=d@~^Sм x?=tv?4>K8= 8MTY='Đ=XKHпQ>=Z=Vp=f=XD>=>@6ν p|?\~oֽ>o>(6j=!=>yq ?{TZ=unq~?p =J @=#==޻*==6>2&c `?Ho ?E(;Q??S3=%֘ U @qJмD<>*l>|<ph;`W<oYLuqy̿e|?t} `?6=e8=Q8?NZ=g**kO[u=M (>?eSп=ꌿ[mC=)5y\=V,=bvZ?{8*??MhF=J`pF?l'=C@?m?~@0XfBיA?a?D2= N?Z"?=>E=,?P5*>\͕? P?I?Qƾ*>ؽ&t?Z?[ ?Iʿ?n?BZ^Pk@?uv?P\>HvR\=H>@Zh>&><=ݖʿV>. X bpXH?vfO g?e?qa=>W=RT>gL<}>2ۯ=]:?_f>R>y=Jm0?f~; (==5v =h?[ "=п'5x?j=a?;?=P?_2=(=p=$=8>W?}!~Zo?pv=޼^k ˜,\?K䠽,=q"=N~ ?fƿzx>yo=Std|?\=>@-90ZUc=ο~ƀ(b?}?gOļ =,<ߗp?xJ?< Ru?x,~ԼмWztx.HX`?&d7=N[8=[=?c:=k=P?l+R=WOHv,=@?[]?P?@?vہ==:=.a~" b>[?id?_SBh躽X 0Q  ?^Ie̾/^L?n^~L6=ȿ";tnӅ<ɿ]⼿ ?JF@}(5<?{t==_f>;8m?\P =u>h\==s=/(=% <30\?d=?>(=H?=<^?#I>F=g{(i-=?xA<jSLTzw?Gw=Z'h> vb?J=1=zTO>Hl>4q{?W9$sYq?ywH=ҡb^E=$?r%=⽔=X??q*?=?{Z>Ɨ?? =Θ=?yk=8?SNQ=?YCz=ȝ=?wj`d??Ӽ|JkԿ?f?b|er>ֽĉ@: >?i2?W?|P=8ް#&{,???}v,?^a?y=JR!B?8K/=^k?pi=TX3nǸx-=|ȾY?L:qfg?d)a?[@?i+2?aŌ!(de>f=xR<=jH<@x?Dr@MN?=H?T =v@\#=t;t;-?O<^v>#a>dX=h>=@??p}?<l=BWZ?Sj>i>!-־;($?a*U>-y|i>ѻ0m=/?>Ikb0 =p=DDн9??'D<2P?\=p?+|5(C4=?hq۪{Y?hZ=q&پ= * ?tXDw>91ͽ?`dmYiս?ze?@FFvSj5=zJXXۈlܾr=(&?Eo?[Z?*%?&?{D=6֘=H>7WFS?E@>%f=1> <>==VP<=?ּAPL[?=?hsz^?l|?:>(?f4?nN=L6=?v>8?=_?T= dJ0?Hr"@?}>=ܽе>3( 2? Q?w?v=?=f?@W <{?o%Ec:оBx>=8@5zD/?bL=?d^Ӥ>vXPE?l8?q8E<=F+={H?xH6?sZn?lϰrA )J?z9T?l~̽[](?_zk=8w?W^=?dž@>"&,P>?:z=?x=Ƚ8ٿ?[@=h8?Atq!?f?6vb?I>Կi(V,>9K>?\=cH?#0=hH=ڜ?Իga`??==ݤ?n=.?m=;+=朿gs==30=̀==?E dbR. =d`?пP?;??rB?o?!d_RP ?޿t6?ua= ?h?5TS =vzP?½Вp=NI@4=%l>1JR?\& z^Ծɷ0?qˣ?=x=]ؿOZ>a?t??j?mjc밾N?Q6 ?r=B?iR$=H?lUz?'j?x8j?X+= ? c;E?:F?DJ=;\V>u>0>>m?z?vOd>`< >)azf=EZ=2=zs?<°?:j&? ^e0>=n=N=s?d׿=6=NomF>"[h?ea=$俫 =b8>PҔuE=eƿ0.itu(?~V?vW7=C?Xf?MAy?jԿo Hpֈ?x􃿀D*>^?a?a=[p=]=^=m?jU?^lrA]o{>6=W<=ۭy3L2p?X5࿗긿pKM<3`=apsl8>⼺ 2?5=lhg>=N=+.?{-=l5JY[?q>+?bi2Z=~N=VkP=]x?c?f==X?M¼Ѱ`b ?®=&=@2=0q4?ߍ? ſk|<`?)܀K ?\~s~?XĽ~i`?^L??Կnc?{??]V=&"ƿC?] <9:+Ko v?{=6t=цvFp+,0>p= ?tz=d) >r?S??2>XqhV\d>=;9=G9a??ON|3?rlZ=rtU8?m`?pU?|IN&?#lԻ~?z<q''=C(?no?s'`> 1`r?\y<=0??ʝ?s?p??}͖= |>a?S?|Fւ@=(8<\?Y q |8 6< ?=`=X]V3?ZIwU?t$__y8T2=$)(?YrP?^pz `>wؿQ0ܿ8?꓿ :C?u?V??j|&P𽷀ʄVV!?P.?u?c fIȼ|=4Y?w=vB+пJ??b(*?PݿFȽZ?_GD`〿F>i=x;OT@:gA?d?{r?~얽:? =E{<8 ?@8WA=i\嗸?z9G0<?py?UJJXPJ[=<=൮?:=)~?s=,>0&l>Fh/&?i?4N>?z-?:gҰc=>>M:em ??s+?=lԻ>??=x`|fؿ "> X?_t|@ȿrp=⿁?`޼9= ? ?[~a=6?H)9?_2<@@=?|L?Bx'0B&?ɬ?g+u?db?^B>{;A{6?hs?F?v[?k=t2?zZ?G@g=,idDY*?+`AA`> oA=e@??Z5'=,}:&e`?zlqJd,?i<ڐ?RjsfBi?Ht?I>H0u>C? =Up<0?sh֣??R??~~`?K?TX^,(SH>s1O<\X? =TԿ-<%&ѽO`>?r} =*?z{l=7*?g.?x>i?o{Լ0?|=dh?zXc!?aU<¼;V?98p=tUܼ>5JC=6-?,|;>w9G4<`<> ?zqN=$??T`D=MfVQ&?̰S?mHb==[=?=?$-=пmྎ?>J D?kkzXlx?1>y@wA a?n x[?X_0=?dc@ֻ`π=;J\+2?y?|>H>րH?.A=/: <&O1uHg|v`b^? >=ez=H{XB?NJ?m@雽6񰿊?}v==;G<*`mkZ=ç?K\?=Tw>t?dν ?umvM?n??mn=,?ti޽7`/6z Q?Yg?I`N? ?rnx?4b@1[^?czk߅?C˾|jw潧PU??Z!G=1>8tmn[?A? ?p?Od ?ԱB=(K@=dvh?`nHlA=DR==@>O?yW=3h?>E?2jF=I(>&s=x&=mh:

"z1>ڿ?ؿ=(?^ D>`=?sP= ?"?{Ly?ս-ڨ?؎?%}7n?jd?KN0x?oR?[Lüx>ej ØqT?d0Ts==}\񫸿*̄?;㽓i?e?̋?Oe.5?<#p (Wp?==z?a\*]ǝϼP?O:锽d 64=,4?tՀ?x=?Yo=T{POf>)X Pz??T;=⿎)?eּȝ1X=??6O*??p.J( o D1@ePȀP7= r?_@< t=9Xb?C?=?i2y?T?2d? ݾf?ͽD?/*?Xtn?ތ뚿4J?U-H?cAU=8Ӑ>>"=M[>0?Ϳwكjr?8?=Th==Pzk|e^Rj<h?=M>WWYi<󧸿w>s)==TAlbųB=]!R?osK?*=~?m==1> Wp=<TjW\(S`?OX>*F= >1Yz?DsO=3l?mW꠽͑&=VZa ;b>_(==L+&?(?2X?f&+;?=\?[< ?o?X$h?:l= g ?e?']p?u:&L켥δML.?Dn?S??yX2?Kk? =pl??mX'(zLCi`?q?a0?N=~L=?m>s>modoq;^> g?uIDt.^>t?nR?>JD=ϴ>~x#@X->G>/^x@n?kt_=IVT=zX[SY=f=f,=>gb2=1={>!;=*v?z;_ < +?}?%?俊Ee?=`=Ώ=$=:zlID??|q<P?6=D6:;&=:P=o?n?]Y%?{[(> B? '?ڿHXJ??o=~?}`x?rB=B=l|پxp>3{+w=H=?.5Ę@H=?SAٽ!p? Yq4?{*uF=DdyX?zK 쿞]<_˸gƼ0?!Zj.<2ҿzڿq;??Ts?rX)@6??v8l?lľ"V?o(R?n =x?N?l$?(?p >4>?=2B=={ؿh#?Soϫ=PڿmR=L>$q=z=OD%9pZm=@=F>2:cra??M= 0? @=5pV/8?8*=BԽ0PpI`=]6,=י? M@=~zNҿ??[־ݚT?A=Z?i蔽~лKH?=H`$01?| ?rSe@d?a?wzp:<={v?Twy|^N@L??fk??f <p<80?=\==<=öfsппb?o罱?fyaC0?h!+<.t`:l?`?t;C@ ?0>/Ǽn`oQئsWb<@=)ؽK0=.@ \, @m7=(IapJ=۬V= |?5c@ si??&>,j?mه?kiinP$P<-`Np:?v = d<90?jk=ܾI\>?|=(D$`ClI?wu^=Dx \B.=!i kaP>>Z=`=CD'?m?Tj\؄?n??<}xnR=?=6>?;?0c@<j1>5Y\~>Eҽٜ=B?p|- ; =%l?>O?=ׄ>&5??~<@HM?"˵?t?[>=z[6ϩ7f 车n? V?o?;40?{?L f?dx?2=Jr`H=T==S|= `<]2=#?`_E-r.W+\𿇋e<:l=<1t=ς?Gr?|?ܿv}?=?5?~`>_7 ?ۆ?{N?wݼ P?n?7>n<7 +xu<#@%t?䙯kf??}s?ggT="=TFM=??\L=lp#C?|>ntuя?A@vAAAv@[tqm<Mtw_n8>E?rR:ňiʿv>08= ;>c}dܼq?U>:O7;Wy=NgHl@r?>P@=oTT?F= O=Mn?0$}?lR==%Y? >TJR;?@:{?h̾ZR=%Pt~?fxn=Y0?eF?AH?| Ao9B}p$=h?3b?h<0?a|<?f^?K<`=?n8v>:4^*Fƾ5?jﰽZ?/<`?y<شh="Va?F׽Ix?v34_?n?^Gf-?o=9B-K`}=C?hkXe?vA @ ?[RWd@ߎ?n\D=I?ꢿ%$z==˨?[iY?n>=>G*XbŇ ?y=[U==^=y[Dua?6crRm>.sfÿv?0sr?TοVGu5V?hMa,>p~=L=Ŀ?p?f?d=>v@N>u4?f^gsi?VH?zD?=<{֐=8@@"?Bn?|<,@v?~ud@+?vJAX|J?l*?@wQY\?Fȿxe?[Rwb*>>&P= <\TC>cd~>?^0<ؿZ?/wv? ʽ0R??{>yhVs=M?yz==j@a=|?H&=DG{>*=`YdR>t.4t>QI==N?~~??^>>=ڼۀ?~hi=?|?ogsA=z;PP=EQp~8k +.9 lp@1?7=7B?u><>H?yu3!?½(?\R?䛿iٻ =V(?q_?c=?g⿊>y5=Qh< ;T>GIC(?g,uv`!޿ߦ=Nr@=Lg~[rhi=ޘ?E?qo?ڃ?҅?},>ky4F;l@==h? <݈=7x?)?=?v%=^=<>=x=<=6? =$=ڦ?:<`=\'Ҽ6"`a#==>._~ S>!F?d>@ 0<>ep?nĴ>$f?dyf?Z>@?W+%gn<?t'u@= >=M{=5L>)?7z> kҽi@`?{?ie==jnO+4=^x=p?GH=4;\ꀽb?b7=.ꈽ=`t8?Cz> !ֿy?? =x&(8Oÿ}{==M?d=~(?b/@h6W߿}??RQ? =f*J=fQP?>.z/>!5> >Yx=Ӣ*?= Zx?|K=ѐ^!*ؿqlVŜ??rd=`4X<@*n |@ x@?y==DA?thѿh7'd?l=X\9ƽL1PӽD??=x=@?iHr= H=^?^O@ =мRh=Ti>0LTϾ{Ш?҂?j=*?GY=}=,?սb=Z?J>3{?.=@kHc`=I]j?="^`v?]6G0@l=b?dڶ^係e,@"{+@o?^/h<@k`_-Nt8?m?ȁ<Ҁ?8?xva?o=0tx:`Y?H ==?t=<\?LPJ+F??l= \?s=`=<<>$I>FY?24+?wjF??b/?6?v*?ֽD` 1w ֻ=G|zs+3?ǥ@ebj?q#<<=lhh?@~??_*%@^?Qlv=4>J?zG= Vo= P=\P:=/?Rrc?*T` =X=|>H;f<=u?*+?|poP@= 0??*AD?`?Y=>rF=SH?>Yj>o?3=T?|"?$V)x/%'?-Q*$=wƼw??}?}}1=j!L8?n_?OrF?x¿wd/??ZvS N̿\$P?e¾x?N?r?U(=γ=z0B.0n2?a:>?m?i2}?>nd=򠿑x@<ؾEbSuezsj??[0<20=̌?l(RT=2p?{@S?b\=5:7Ќ?q\F? %C|?d-MwzSP=:=\?w)JD~[= `=t?ۗI&@iCh ޿(i"Hˆ[?L.=FI4>?wV-L=x>"sp>X=>g+ ? i>g˿nvJA*?x>,tpK`= U=c?j> ͜=˔?z:3\;&=}迗J#=E=?|6-s@: =!?_hS4=tQ *VH?65a p>E=@ؾP@N?[)t>W=zF;?$>bVH\?~?t"lC<0?hH`P=Jnz?gW="=nq??P?a^=HE\<צ8?|Pr><Ź ࿁1<`޼?zEν?5z=s;l< X?]̽οQ>櫽դ=XX?^EdC=nX5?v^C?=xi?fM2?<4p=ܽxؼ;<;:@=7=2@?пýN?hG_݄?Sƽkl?m?z<[,h=?pRvȠ='{(*^k kԻľ5;NO@=?/ܽNv??$???v?r,>rd*:OP>!m]wN>Ufj{ r>"Yo?b02?>`i?Uu[=z>S_d(?b?^ft@I^$?oň<а۴?nlO%qH?ZԼ?l>/#Qn=LlDJ?!<?=hڿf?:9?02??p=n?|?psd?sTK=R`?@?f}׀yy>@>ޔ=@o#{?y=}(8=Nƿ[>=[d]=v?|1?Ai?N>3?e|rsʿex==?d_=.= ?z?~[R$d?<5?`aJ=@l=Zv4Ϝ=??xQQyzF=Id=,M?s*>?|>eռyugFJ?(Kh?B=߄?Yfw1?wi8H=x=WTWbp><흽?a=:Rn6^2?P0k!N?5^?߿"?nuVQ?Fz?~ hw쿁բ?[=۶?p< =NR?0=K4<| ?sO.?|y?sy)?q{Z??hw?g`>uԿ0]>2Y`<3?|e?kӮkfbȿVq?;e??r${2>, '.8=QV,i?C=#=.D?Ew|+l?"< ?5?8?H?`?w?=j=l*B|<LXʑ?X>\N?ƾ-@ ??c?y<(>b?|j?GB/=VP= H=z?6?pcT?{y/?S&<D^ =޶܆x?_~Q?t3=h?h2귈890(?oj$=8޲?lF`?|?R?(9y謿}~?g@.?d=x?v> 4s~ UP? =`=5JDw?$:?cDӆT?z8+H2=j?c>%[KT?`~¼h?)=~?uB*?Bif̲?ݽ/)(@ pתw=.P@5<5q>?p?P?!<;`gA?Xy =͞?_GVr?ʽ??_S=m)~A,?ɿct=|= n=F΄?Vnyc{.=WW=7z?d>n=/Q= JN=S> > `-?q?x`>fG}|?c%?{m^?d?\*K=ߪ?Y<=7f ½Կ??IXX16=O̽>?w?Oo(=H?J69{/;-|?~'D&?IkD?n?pH=3?6G?|=L>@V?cG=L@/R>4a>)D>$?ػrC??=B?U.>H=Lyd]jhq>/,ǿ~ѿ}X=W>'@?wEIL<:.>==b =h f;/Y?t=?x=i2p=FZнnrAylX7`@= ;;{ =޼h=vM=-j=m8?Od ?M~JXо?V (ҋ*|p/ȿM,.=v6Z=J%_=Jl?K޿5D)İ!Ou=?1O*?dC׌?]?MO?l*==轒R?x?b?e=˸;J$@kd 6?f?y?aa_y?ӃjW,?A?߬*B(?FinB@e?=:V?[{=<5R ?S|?D|>k/=+࿪%_?^=۳?rq==Szm=7X=y=.=H,;y.*>#l?~}bH I;=ݨ?tA]@ ==|;?Z?oK?e?zX=?{?z˖= vh~H>ulw ?oZSG}f?2мbOB|. ɶ?d?5?|3DoLb=i$?a1=ޜ<ן?=/0?wLf=)5࿎q?C پ=ĿUi]hH?S>?f3<?x?F,?/yYs <=p>:j?x?Nz=q?l^b??ru?vXګ=(`?JUxa?XM<?V<0=?]@|?=w=嚪@0x?R=GJ?&<8ldh ?glF3؈=$P?}/{)??'ݰQv+?9νA?)cbi?cAc?ݿix ?d=OS<nhp?f2b?̽,1Z@ A*`>|8ta=Nl=?T1?o>Aj_?w?=m:>cp=t@=b?]=ELu<цh>= >$>b=?Z_p>#97hH?熻l>~>C#<2l}=ll?3|?C>Eh>}[b4=b1d?2zwi?vV>8p>5k;@<=;e̽mx>=0r8?{>nJ? ?zh >̢j =2?i\rO=l??sϧ==D?=,q?L>9E=K>=#?!?v< ?h?wk?A=`yV?^P?sT<=?r?s=ۮ=F?p|?t;Y`>܈;@L@>0=""=x軾yZ6=f=&@̽gQ?j?wq>+.IО??~?M?/m?]PF?W=b>ί?q?ewc`wlT hTPo{BV?w?oP?_;e6=p?=ʽ~> ۞>,"?T*|>-N>a8=9A A:c}=|=|?U?>!,}o@>S?c=&H== iL<Ѕ;| ?l>!OCf?oL?=K$U?O͸>$v=GP==)$?/>V? r=\=e^PI`>=tK o=hYXS=Ll=v?9J?2wـb3iogg:j/H??b)=Ih[?~(l>&480#_>;ĿgxнH?|,hհ?d? RDŽ|V@=v8?~c?x`?9Fp„?rt5LR?տp?jz;Mq?h>?`?R0^#X +@X=a>eI<֨?W=2?JAQtB)Wοl 3=6?^?h?y=>:sH?hg? >i%=r$?;op>=A[Ŀz`?<\N ?vf?L?Cט?k?6?nXf(H?hQν5a|=|=u\ HltR,x?b[H I?˖=A? ?|$?Ug?kiOg?|hmm<0?tM࿂?d=DD}`->ڽ9W?6?_пy?m=Ԁ=W^?k8lP=h*4@2< =X2Ͽ^Ŀ,?g?n h?5?_ 8?G2$?YK=)`; @|?iO,s<Ӷ<Ӳ?D0?f?y=?>Ը?N_?H@;9W=^?O=t?wM<.wyk@j>;r_<.>mɿ>lq=3>|{?kv9f?}A}MB eCZC@:?z>;C>G>h=?Zaմ=QN?|>.=Ƚxg(ֵ?i?zs?H?\xjps?A}?%ÿd.F=3?^?p%@Kd>u=?t?bf?y=qr6@3;O@rD,6?re?y2(XAZb?~^=@s=?=?{s:0=/6+?J `';|=>4R\ =~;)HX@3Mgp(?{?D?To? =J??^މ6`<`??Y[?Vƭ?˿?iP: ?y-迓\4hܿD?mLP?hUd?65Zȿ0 e, ?7?We??yv?a?|Z=[@f@\=*n>.<48 ?^8?sj*?g1@M0?}LSpXztH?R)6RoQ?@>~AeB[>^n6=xxS=HĽ"=x Lp?`E=?ҽ3^=P>w>8><*|h=\?r1?ʔ<9 =>¼LpTḧ~+?|d=&=X7RX?K9H?@̨ҽ8=J4Wy?g?v1-Et xW?Vn],<{R=d>΢=ؿv..ڽi<&;$?\!a?#Ȁ+A >;>|P?kҽY?h3=f`>0{e?>bտU=RW=k?@> ,?)&@> < 0v Z=K?hx<=x?-?~@?>E<-=#->ġ?EK|R<{h5?gi?a=8?{@>t?{Q?T=?|?V=5ȿR{?Eh@ m=?/;p=f@X(>Ƚx9%?lX?bk<= E+Pi<=04 ?]8ĻՀ ?z0Ga:_x@z;QX?E<+p?\k?z`=;L?L?X={ ?DRXΖ$>=?Z]?};Tu">BU=ѾT=\9{̿=.?m=?Od?;tKy%=¿}$н<@?i̿\ż<p?w=8|D=l%?~=@XIO =8=.0~/R?_F?r)x=:.̬<Q=?1?p#.WqV>;=H?w ཮z $=7h??=="CXD?aM޺*?L ?|0??|8=82`?x@W B=[k=댽U[>gʼ6ʠ???\m>Hl=o?Hh]^&<0Zٔ.?Eg >nz=`qn<@ng̽>gB=ݰ_ =B}(AFb=A]f>C5y??f==?=*?Z>??~?qg=Vdx?nV>@=̮P=A"<`w`1?fټՅ3?sP=#h =?̿w+>=|PYvFp?sٽWP*h>Y?~: ∾.f?md@P==@?_GCH?QMs' ?x:?L?[i?f;=?>;?p#==͙?t(?V?}n@:B'N?q ?5:[=W %?p?t?X?f\;""V<<࠿߽ =뻘2)X+I=Ⱦ?-r?vؽ!y?wu=D?*52M;?;>e?rM?0eQ?dW=E=p?DN?a~?mD=;~ҋh ~=L=h?~~K?=Z=.?G?.`70?xD= i?~d?l?4)Y==Z̿s_7C=\?z*z=?P?? Q!Ut]=f?W xh| ?U r?]P޽迆h=v!?cPoP?vBB_wW@;91?>E?w?}Ơ&ֽ\R^ﴽ\R=/06Xt?8Ŀ=rH?}^‰?_7P=` `Ԥx#JL;{@?q7_^+,?#t?SKP=1?`5??C??W$< [p?Px H?3DU|<_<;=tAlo5?d^M>-輰) |L`S? ?8Q=?&d?`%?t=$ Cr?vD?? .?=u?y7H (y?-<|yp8?'̻@dܽE=8>Ad<=K?g>^MCd =< =ֿԅt>cu?+?s > >zB=vLKJ<א=Qvp;kst8 ?~?`b?p=H?@?o憿?i}.?$9?e]ȿ?SZ?ol^l@==P"Q(&9=U=">=xϿZ<?#=,<@2A՗-@y?A==YU@tJ<==0f?% /?%j\=1_8> +>0R>Z5 f??<`>;B1pNZV>bm~#~Vs< <@2=a=q>lؼG=#<@,c}?ja_n]d?w ;BT\e\?ht= =QkqA߿=Dōz`b6=6R4CiX-?lE@?Qn>]+<x?<0?|_Y=?o< bB?J;=P?-$??I?H]G`?n$vwg%?Y =i;@?vX?u'c==?>C?fPT14L:fJ?@`b+/od].?i?u?Z?iG?f0鿉?х?\zƾA?_VPؽ$%H?T}YcT5?OIE=пx"3?Z}Ծ3h4Q?~YJN4p0=be=j=g@?}e=8{???f_>C>ff4<7Zy>R??e"=8¿qn>C>'m=\{dkY?zM>?2:-=<=?z=u D]o=@z>25?+? ȿ $ qe޿gN=r?r7>jq=2~a?}Zp?lD?~J>(1>> >vOXnf=gTl%b#?hxs=b?z-r2!`d5=(>;0ze{ =jHDh_=T=Y^?'iJ ;2?9M=L8?=$=Yx=m4?~?uTܿhཚGh$ n|*?w]"?'d?wp"?% ?궿ަ?῾.j.?W5U?ih?=<`?yn=tD [ =/>+=s>.C`BLbCwJ=T% <{]?om?{=3VaƲ=c=P?xD]0H콐8>M>*>T:> g?e=$PsW2|u~|<=pBt=԰Yw6=70?{ =J?zh=J?=*3?v|[=Գ??gClr=?uk=;?Ѧ?s]uo[CHz\?C?$?W<=z^ܿ>((L?e@=֖?}R>?a^P?V?=A=?\L?Eо St<?ql_?՗?B1d=3B?|?k?}]6`B=b\?p T:?=>sa.i]b(=':ͳ=Gؿqn=\P~;> =J?|?nI dqj= DI8=(?fX=ڽX=N?X>,5軽[m>W-NZl>$窾t8vj~cX#R係2??{Y|?Ksz=?E=]=I?l?jFG?wM?l<? =8=9P?xfBwP4Y  H &;?QhսнмȾ =H6?_a+?\;=?9,J?gE?N<'thTh:-+BB*-?vV&Lp?q"qP<=?H>Oi=<=0=z0lP?ip>`<=o?!L >+h?2?gkh?|L>?=?B>fo=m)@<Ԑ<==h?a==ld>;?v?(.> $>Fs<0( r>B?>!H? UH=Ep=B==w?,]??>!Y?> ) >=E]m> ˿a3zf L=={hX7Zl+=9:$=`]ȿejB=ɺ=h ?V>7|2>׿Ws>_p9"?'<0=t??p==ֽ=G0C0 =1F@<;@?+?&?h= dCD?El-vev?mY߿y5Nh=UX/h @6?9;dH@=2x@;pd7?}v?F=нT=56K=<P>!ٶ;q>E=`=Cp,yc?w)=k?t>9]S>N:<20="mV)f=S!=?Uf|cW?*dې~ ?=z?t?=á*r2lɰ=y .k`?n\B= ?}$>p奄g^DB?w{= =Uv^EL>-?b,Rƥ?J>>?Wؖ?ȿvKM=I@@`,?E4?tn?o# <#?QOj%l 4< wg?}%?X⚿th=t=-HO*v- ?9A>X*8A?ul?q=nx?f22 =$=N?O" Ƚ-umZ=Aܿ_ 0:?_?]bxN?P?%U?8=鼤?q/ks?rb?b$(?~ ̼ "?6< Xnv=j<?J׽]?g$?cg樿mܾ<p?o B?e$P?r?F=jXg@t^?=BqAIT< ?=[DA>\ vm>3#O?#= 0=޸>1.=J?*>\=>=^s=آj=HYrF>#;@=m=\? > +!?2@=ؿtSZO0>@>oM'%=ԏ=z>P|=P{cmt\\?od ?խ=;=I-cL<4=/l?h>[ H=b$?="Aߒ&"=* ??pi1`=ZL<8=R R?=Uؽ=ڂ?+d?RP<e?}rp?=fH@%Dz=?h?Ƚ=M>"Ž/ŀ^>k=*Ǭ}?d:转~lJ,=@P?5??;"=.DHV p=+?r?_%0=}?x=,:9!=܀s?l??&?ij/ =?N[?qB.T?q%?e=#|{!?渿=6#DWm=M`?v(??tY9y?`~E? a;?s?99J> ?bEWjm`}v &=2=)Xx??h@4?=hl7{r=͐=м `?+(ӤL?J?[9%?{ ?p `?轇w( z|?=?W;?N$?iG?yy;?eX==||b>a?'J=R>>Q=`¿_E =[P=He?r=ffH:>8t=b>?H5=>5g`=<?> 0bYf$%V==ϊ=S#,}<<7P?y3=Yp=U=P=)7dqL ?7??u h?9>?$??rRL<"?.==bb2L==xs??{s=zsp?Wd?n=^DSrr??9?ez=( =u2?` -?N}k=S?w=?b?]h= z+kO?Sy?wXr?O0?|9.D iP@e?kyR߼?<*?T=ڶ?I4/N?p??ܿ֍T?6h?nĽvGؽK?Z?A@,]5=1x?ff??⿉_rzQ?u\:Hch?t<ߧzCˬ?~-t?t_0@Kt?XJuI?DrQKBξAH<ؿn?h ==*9?Vf=K`<<=Ɗɼ>O=ҹ>7*K=L;K?Yr'?V5D>#zԿ=u?~j>?J?y?|Ž?z%?nz=}Pƽfd= ?SLP*VpT~ 0B]}?NCνпqX=6.B >S?龡4?>S'?aN?Qn ?"y?ySνkhx`H%>0Z?tW<`= ؿXս=?_?4R= Ș?8۾4j?0- =?|⿄4ȿ|>"=<о64RLY?l9<Y@?~?_wrd{S== B]=ěf=7 ȿI=L?^t/ȼ?k% 3E?}Fn`(?i??z?l?k??}<пj稾,аV 䶴g̿]*&?uB?`?O⽺@m ?nC?~Ӆ|=?vz?> cR?;%ܔ;$`=L?[$6>M>!uT(i<=R<@>L 8Tk>VC>&d? mn>8[pC >s=>/z?>F뽞?x7j="0нb>d=bR??= \["v?°=; h?v>i>)?d>{] <.=X=$0< ?ox=J?m> >>Jh?=k1Qpcx??Md?T?L<о ?{F=K=|^ྜྷ??sí?V߿*Qn<ՠ=y> V\?֍?~]?jVm';?o޽V=I'`?o82: ?5`?g`s@?=<@~$=VP>?q>?c?|=ڼ/?Joh?s?Y?hqֿ|8ɽ(TjB/ ?G@IP_(g=ʈ(<0dֿp7A=u&=F?J5=߆diKZ=]`=g=PUC =0TQ?]֘={lY,ֿ]ֱ?tןE(e<=?#D=UL?t!2=t<.?nXrL\=!?<~=H?}9}/zG?{= ` 2lļlJZ?^(0A?g[;o;qh?|jO?.(2Ľ{?G=Pད?cpU?g==yt?q6=ND>!7[6<㛰?Ŀz2M?>&?_x)k?0?}OE?|ϒ_>Z9E?Ԩ0lm`iL?x" =m-??𖪿?q(?38Ęȏ]D?yK66f?u)?c)@PkQ?h?\6?༂<߳?H05=͞ ?v+3J??hRd ~?aڤ=(?>I?`?h=JpuP?Zp@?h?SM?dG?eYwh"=d?TξW|= X&>H??i=e|X=]j?PHUm p8J갿_B??t>?vj>Iu=[0?#%(jjf?!4a=N<4ȿ%o?/a=8?9.V>"C@?{>n}==0ZJ?v&?̽y%=*q%b?q?tY=}hyx?v;`}?R(D0?nN=P:Z6?^Np"=;}`@6: |=)?<6 0\Bm?=/?x?E;U> gT?k?pP_?kA3Au=Q?q~7d轫hFC?k?]??h> _-:Z`Sp=޿7mM47<=vl=̿}?~⿇<*5?|bpr?d=D! ?Bp????H@?dys< ?0?ZjO8;@=- nY<3*.9!O>s?j>O-x?c9?Tʿn?&7C?928?~=1T?S$U,n?WN͓?=.=C&?"?O?;y@?W󽡌ȿr⾎j?y|?F[:-=uԽN=W԰?Rz?5_9v`>>o\sXܽv< ?xF?j?[;>b&ب=/bxqݻ`x>=NR9v f迄<|?0`!+`V!y<K?R@?\@l_1.BnC&^Aν?Uɫ?c|L? =ب?~C==q =pԽWM[xF?mH?~,\)?Z ?n*?bXKk?`|j+춐4<~运"QH?frN?|ExW\?|z _ y?%E¾?pʽ5X?~?q ?]?J5?ʏ=6ƼP?x6<?;??n?]cW;+='d>D =(??~>Pd=f[]q>F?x3=G==!t4?tV?Xrє?tZ@A?偬??=}z=Fl??oGی?W=%}z,?v?u+ {?==U;`?_a2=lo`jh;(?|=ʜ?G?sjcBy#?=)l1(WV翌3x? Zpgd?pR?x?qѹ?VQ鼱 ݿI,?c^>e?o v>d?_D?Y˽Q L=x:A?̯_xp<?;t?S6 ?PmJφ`=}skĿ ~ӄ.¾M#+ژ~?S @?)dl?Q?/3޿{U?h==p;cʰ% ' ??tIW? ~ƽ~ ?Hlȿ% t?0x=l?_οxľNbl7Dh $ dp{F=?s?UPy?9etx*<,(;?:p? ?sȾwVl= H-?QοY`:lKKؾ0 ?j~J=?AQ,k M.G?L<(?`Ā?i5Bnwv UbΦ?oоtoތ ?1(c?͆<ߞI?2|?iŻlc̓W,8?O-$0X0?c6Dш|=B@E=l俉 |??iO=n4G?~큿B}4t(%p? loȿ?O;W?a?'/?6>?`F/ilԽ?<> ?jD??y?OE0?YվIw¼@?b?Eҿ??[c?8=?h=д:v?cڽ3R?s ?N- >@E?N^?>b?M7 %=?q?H&?`׿WF{p?L˿Kw + ཌX?`| |=|~?J(.lڿ|`v?Q:kg|?5=Vt?Vr??_?Wqn?^"vBI ?E ؽȽ"\=8 U"؜X,q߻]߀?1꿜$1yMJ?LZ?g>0cؾ"=.b4=/<>%*/(~4Ἵ@=ۦ?=?_aV9w?qi轲= t?M}?{b?O'`运?Pyыr?(x?V}Ќ1}X'=F½b?zTN9oM`ZDh?n:lM_x?bP[ԽVzYfpe;~?9Q}?p=?\p Xn^?JTԽ}gru9dP.z?i \=֨R~?\?8a<ܿ?-$x>9~,v=|?>׽3v4' ?d[<=Cdphwbc?Y?=rv?w#S\0"o4L^??{O?b.?/Ҿ.~}<;F'Ax?o*\ wܼS!`1EEx?2p?ng^HF?Qb{%?B_'?ER?A#?I޿'{26Vɴ?_נ?d;¯?U?E!]t ;8?ٲjN?`?bPUB.?_4?0?`ַ(?a?u/?f?n8c?Jժ YՔȽ?=Sn&FA?{K#͆ ?#'X?k~@?l=ʽT~i?B3=_;o?N==U׿kxHQ?s77< =Q콍nc̿T?!⿅y=1?YZ=%@?%="%=~w Ͻ?4J]?tԾ.?Sx=yp?kP@[=?tl?@?^ ?c?lھh?mX?٢m4?]=[ =H?_+[=-r4?AŌ?nDƽ?=bz~u '"r?y.~?i w?GEV?ckzf?:KZ?R|0?\dI4 yV:q=s׸?p-S?$; ?Y?c3=v[=[ʾ$OB*X:(Xn?PG8]0[b?+Nt쿀u?#;ڽ41?cftd?d?(Ϻ9EV9;Ұ?N楼ܽ0 rԇf?yf?[`G>ԾD~IH=Et;s2_;Ҡ@=ɠ8V`J?Dm0?l =ʾ$=W- =?6b?΍2yL?>]=[5=={F2!ھg{?ܱThz?;T.ۀ?`h=?VwԾ?f?޾vwc:?m>m?OAbz?MdJ=?Gϻ݀=ȽL|fe6?g?'=]4F=_⿆3;??Lχ_=A80-hd?e ?f?|使yt $?X+?yBBs@s?VXP9p?pQX=ea3οbt.?M*]< =??ubl?iw?t)?PἌTU {پ| T?QM >^ZJ~?T0mGn0?n*L+?b\nc?U$Y f:?^/\?vw~g;?9-bP'?O?u< ?~4Ĭ<@?6e7%¾#X=S?ܘn?n?A伬"$P׽,DDX_=o[sw?\|@L?Z?BM>?Tf\?=huPoؽ!}']u??m_d'ɿ$>T+?yn?ot?=?t?: d=BŢfj+#?R4x?TZ[V001?i/먽Jz?= Կ(/?OǫyfD`:R=xQ,kƿ50=-@?UW<;F?oe?J.?Bha ?J|Ҿ~\?ᒨ?u!%iV?ly?bPiVLt.?7-?W6?Ǻۀ?[.?]o>h*TM!=`{?4i.[ԿMY?C? ?pͿPD&??Gp=_R?_rv>, lݿY?-J?~X=Š?QCcWJ?a?|yM=Mx>ӽ?F>1G>@ݾ,L?vȿAr>:?D@;U|b}$H?N:=D輇X?#Q??3?V䢽̢Z$r80#":o8?Qo?VNqRƄX^?Esx_C~lROv@о/l?~߽e@?*x><>`߾hp(־ru~=ڿOϽ18)?4;c40?vۤ^AJ")?l&8=' <Bv5F<0?K $><&P?Hy<=I&=eA ?r|=a?jʈ=ug=u?^=#"v<=!H>݀ ?]?y=/A?k  44xm?YO?c;T?-[?pu;?/F> P?0?w|>ut?~"?UQ=d,?Vٽ u?A=bjvåݾ?^D:zK$?QA??aҿ{<pLּ?Tu>py7Ï?5H?K  п-U؀hdT?-䀼(=$fNԼ?M(?`?c [?]&F? U"?fRdV?g<Ȼ4$;Ð=Z>.c.Z>?\?odD?Z~=?g= >?0=f 5?$t *@?<+h?S?*rz?6?bo =_Kv(Pc?ej}<06Oq?o??vAY?wgѾpeG/?Nc?bu ACɳe?E> <0??=?¾:_=~h?[2 ?Z:OMh?TʽrWXHd @?A?j?p?w?q q=x@"?l?8? *q?Zf=g⦾:x??M=f0s=ITF Ǖ?SaybWL?ljD?AӔ?rV?Pi[? 1;律kp=w?UB>/`?*D?a@b=aT=w`쿙=c?Jl?=&H.wԾ`O<ԑ?}?0kӼ 0Z?q?CaK?Z?X#i|2rcܿt2ԠZܸgB?@Z?G_??.7j<8xO?os=b(t?Mߦᜈ{r?{?O|ؿ"kqFq?K&?gwCھ2?'T8R:7 m=ö?ؿl ܿ?,?%׊??2==38wJϾ+n!Ծu+?xkUR?M=6^?c>A?^\K=Pi}6uOܿ=ڔhY?ef?A" ?e=1g?Y/¾|=?P?MR=$=SL;k?ؼ*?ܒaHc#=V$T?e$?G_?%f=׮?4q#MH?Du#?>'dqzkn sD>3# ?fk?HþÒ*F5ؾ"\$ڃtz>BW^- @l?R<+@ߟk%?c$羭?Z7>DŽ?8`?or^4j}NfӾ#)?HM?JΞF:-L(?Qr?D`\9'j H=5DR8?-?M87?F@9`?0$p?V?+  o?4(?O򽋁?p'X c?az?I^GU<?/vп{L?+C_?ؗ>.?Y`I꿀DV~t?@r=v 3d|x?=`g[?t=8nT?͝=,?tz nsA?^?a?`'4^AS\6?^a?sS=, ?M?ƾ.1 f̝4?T[?iLfI}+ ?CJ# H(z?/?,t?sA=LE?Kn?*s?F?2׿o? d zWXL9!'F@2?'0:9Ru|<>@?,y?p۾c^u<=%ƿ!?iѱп ÿ? _C,?B?_D=$ؿ}z?iUi=z=p?rf?]c?4u̿=Em8?uQ?JZ^P?J?a=I?4S`0?H~44?d2Qk>?{+h?憾S|>7=)?}DR?Y$?~^q?ɾJ̙y$8{G?Uo< Nd?1\4<~נ?c gq>忞+x8ZS׿Q?^TlB[ait鿃MU }?wi۾ã?>J]?|;\h?p?=ľ~Hg?_h?,ImNYHc@ ?Rl=O?e?*p־"o??"<迄?&vKbt?@WuuھxY*@N?Nq+RZ0o]x^P?if?Sb,Z=?F bʐ?9?&8;E?G-i>?F?#kۨ0?_UFĽD$?ڐ[>Wq|?0s ?/?1Tp?FO?q*M ?A"_ʚz?K=;h?^21X?.%(:0?E0?E??I?IP=?|=nO7ļ֐'?󒿅B>I?$޾=R瞚>S}J J?ȿ?-t?k(?}`2?YZjd=RD?~~?wcC@j?8}I44b.sgz=={?lƺ?p=8=>^^L8?=ĽᘿgнY?vz#@qGw 0=F%@>gu𿎂60Q?h"bs=>aR/?hؑCB]|c1?Jy=Z?=+j[V?n:*=F?yn=/??eϿte?)L2ic0?=?Sy?n/??f6w>=mT?ZОZ,?4$\$\y1 [T?3 O?Ǿ3۾b=,A49?=ֽG鈾Pmƾ%m<=q\=Ŗʽ?kW&?5<0?JZaW ??V9?qo?=?CHt!nxDFo?d?gp?D?i Z??k*h?~F5j==Fb??+￞Js~V@?*I?e?.%?NLjˁؾ5?c1iT¾.ſ@?TR=#̽r?r} ?_Ϳ .=_>ן={4 ?f0cbzܽd=ۑhaE ?l?^0BnB8N>XCjxkY?5`?8p?v_x?DI?*?J\?{u߾" (drȽ?r?Xcp>&Կz$R<84?!=Q=Y8=D#o=86?Y@?2 W\wRsڿLX?ll?`R?Nqv?y?*h|E??F:L >pF?xP2?M=Z_0i!nDJ?Z+q|9ͽ6>݊z??7?PR51 ?Sr̾NŽ㲾j/?-ӽ'!*<E?=kҿݾO!1;I?sb؂P?N>؍=&01j?NT?C?~;޻:˼==t=Q?5Lpu 9t:?A?j߈?PcOu?R?n/f?ȳ4c?/5\;h>yneb?lЁ÷uP?C^>|:=u?b}ھ>0bj̿eżQ\h?FCV?xs?L\To;6ؿu<@|Z=Ƽf^?i郾LC< mŔ?K*?qo`kts=J?s_~$24&[BP?$= ??07 ?w޿i:@?AX@| AN?i1$s?g$?M=ƽ;α@Q A.A͚Ϯףܽn?Op?ik?LC]?c,V=O8?,¿z?:j?T{忋uK??'?!?T.?x?X ?YQ1"1?|?Hx(;}?E?KF?G?e{=@?A pƠ`w?-_>t}?)>Mr5޽@\dȼq>S?26?e9?`?d46w?+-?RM?]߬?j8e?I(g/t`=2,=94?}<8\y^ߖ?j;?^U=ܢX?I?DI?mW?nur0=3l?2<.?{b?F =俖C4]?C?W5X=2=_8?SEs?E =?QM=L?Wⴾ]A< ?C3 hZ@?Z=Ǝ?BV<Rm@z?X/? lhl="ĺ?,C=\f?΁A>ՠ^I??n<?nK?Nff??<FV?HJ?>QVHO >?Hē?P?A?|75?%\1?&>VBe B<?fz=A t =UC̾ ~?Qv=̾H7j d?xKٿ?<TШ?rL?:R=ԼD=wcɶ:?kϷ8'r? vxdsM?p M,e }C/0?n=фi M?\yW ~>$AW+v|?P,> HV D=J?T?oP?d?i);e׿fֽ?ܾdi> aҬ=Ծ?xxiνNEpޥ= ?=ukʽAu:?=84[tD2`@?K?jlE?|4lJ?YiֿFGģ>1?Z?\!Z?zʄ=:D?Nw_?x?FAw\g><(?Uӿx?7kl?Y(=V?);?mFᅥ\l(=yz?rրaֿ}нɌLK?=4L?dkǿ/l?f7?T 0=?f?`K5K⿝J+?nq aD?t (?Ajbh?av=O?a?E>?Ombuh-?D&X=̃>ZP?&|?^ތAP8??M?:$=t(ԽLd9L'O=8?dbn.?7J?7{r cCJ;?|6s9|c 8?XX?h~?F~C俈}u.Ȏ?<6H?Uξ ㊽R?[k=mEGf?l=i$?uo?yuƾ?31;?=츿Dn{>O?nLxPr2?.$q^?z2:?xu| ?9v K?(or>j`> 8>,\?x?bQJc#uWiw=Rڿ?=~>$㘿ҿk>u<&v@<z@s#=y.~??AB?ki9k0??rx\ӳq"?Rѿo=NL-pP?Th0<>pHp?|ÉyBcdh ZT@ye&=y 6}t?o?dԽ5=o8?U?^Ț0?j;``i)m=SbxEd -3?t&r?GB?SyQ?FY\?A=Y(=AT3\?IGF;澓@;"oG4G?9BDh?΁GAFA26?HlB?=tch⛼td?,*R=ܿ~?aNq?VwHG@#Xx$9v?BŮl?Nz?Py=D?S>wIj1$?Iflp$\CN?l?_8?>?_C-'5-?Y6rľwz 6?V(y<شG8G~P?y3?gT5l?EU(=.&0' '̾@пC?-ֿ~1 ?;[g?taDؿ|νz@?[o?j2b=0r=޽n?wg?Y?}j7?cҖpEPAP?UȾ,@=8uoC^;̾WNڬH$3;7X?K-F\;^?N?~7?)bX?N?u7̾2{?5D?X?6Xd/p?D<ɺt> ѽsy,r81?N󿉦|?k#?вo꿌}?-NTb?n+B C&i@>( ۿ~=+?^1߽b*?_?}G?}>'ъ=w3?p=NP?wUp?Z5?D˼I@?$:?.?9&?K?]Ҋdb7&ߐ?|/?!c=D?L?fKqz>Y?*ܼ<??8 We?Ai&?Uþ :{?Hm\0Ls L?Q~N;迅K?``|=UP?ZI=쿔# O?V?S;v?D?6?bj|X '؝?R?yr??b;;@S?X?qbWH?Dw-ќ?j@꽚r?`?7?jt?/Fϙ>yc ?F-<*?\?~@=H2t?EL=?n?W9^@G2?N(?tܾg&?N/z=VL?T=3k ?e0?e>?Hu?Ѫ?>Y 1~ 8 ?%?F<,?v?UD~||X 3oܽ-?Z ?[\h?Y>,?ORL&Ծj?\9?Mu/;<@?S;?EAp?r ?T8?m;徟SU?0g?4&)O?EW=5D>1Dx=: y?;?@^?$x?_>N{?(@6G]ʽ?%xu@ #6Z_?Y!MdW?=t?F?rM?)?iB?H|oL?U?m?h D8hT?0T ?n誾@S?Mx?hjܽ9=鐽.ZzdW/̻?UVsd?a 0;UD?d`X?0=?p }{= Xs,?s׾Z,a?]`pF?Q$nE?Q?YM?k{?nV翓u?biT_޾ ?Fjy? ?Ag=DJ\, c*5ս D?jHؾQ?Iu?H(q ʽn’鹾/2H?oP?4A?tM;?a= {?%W??&?0пE뤾1MMC?LJ?w ?9w/Yt?jK? x?Me?|r齖?cT>.B?Z_y;B+J[GTs8<( #;o`?KCҾ”"L7]@?.4Ƚevp/=g?=xx=<< ?: `?C⥾ 1?h?F# (?78yO@2=<,?s;E`횿q7W.?X?z#~=YoIJ@?S:>NY,b?m sa.?T/?f?`l!?s`]@mP?DV=4}?8҆HX^d=hl?vuy>:?`?D:C>VA2%+Wt `f=?)ᗿ{06,ƾS9?= a(忉];`?MMU=c8ܾcY7J?U:T?鿎t?L/*P?5?LHļV_CMy@+-,:Q<'(8ľh['0ؿ?d>0=EKؾ@4 þ ,C)}x?{W>J,`iZ1?\&L?@_?U;d?#У(g3:VD@46 ==,?SM?:|%`???9M=俓&>*?' ?{x>Tj?Ua?zȿHg=Gϩ oDS?Q=?`?\=ý =h?f'yD?PDOžT6=2?O?7?FʽԿ}?1r@?q\w~ ?Jÿj\; q( `?8e=δ?Lc;~񄾁jk¾5L?lY;gJLi= 举?=.S?\FP?Af?K?j<;@G=q?R?Q%q9P=! |?,|xn?JӾ{1 Y*>oj?u5R]= 9`?Ry?f2k{?]{$]%?MտqFi ?T| u=l 񿑍޿h[&R?ca*?m7z?"z潛Dkw?g?xXs?j?MޘV䌾)kڕ?ǽ ZT>PQ^콈޾$=?ƪOg?rHt{x6<i`U`??`i-?G?yt=fȾHX?gq}? #?M?aJu] h!ľjs?aڽ?<&?yؿ2X?T=d?YIM[x0Wl=lP?8&?t=XVн?xEX?x1yо=Z?1J?p&=п 5=0~ZʘLkp?b;߽r>9ȿ Y =c?O*.QG[?Ywiz?Y?d?¿y.'cZߋ?l^p(>=z>a>8_ Lb!P?sU)?xs?R пi+m=?jF;>7b?O rܾ>6=v]T?/?<0?cS?+mP }mc|+;U@4'QW?xd=85\]vl2.\Z=nLnh?92U==[V"?E?'"?4 ?F?#B?f:?.ʿ\1࿔&?[X?;ɾ* ?]=?W!g=_ɓP?D$bװ?]?=f?'4>b~𗐿S? * ?:6?M;Р?4 ;΀?E7?3VXaݼ?RQ<rz~?'|O??g7?2?4]㿎OӾ^PU;kӵ?C?dP0)㠾]J??I6?[NN ?9=s?/J?zL^@i;?C!?EK?ԽQ=yyo=)>C m<7??L<޸xd?)??f?>C?q o=J涼`v?񨿽F~u2=?t?qFu|1HWb[Hؼ< x)Pt "iR?Yժ<Z~)?V&?g|?t¾\M?%7?v=G a?U+@1?V5CW?YLƿ;ǿ?}eAξB VI鿄L7q\ҽ?H( A{=?Uɿj?=/n|4ǀ\ 8=_tP=MCI}?=貾τ=;3e?\z?D?:tȾot!?Hh~?pQ{p?T뿀?,!"?7D?rkv1ܚ )?g9Q䩽&DǾDDz?7#k,-S=@P?瀽N<^lZ=\L$Pо6Xz(?3n0{?Nx?hп,!W?!NjC? xіh?;F ݬ>L2%.iޥ?o&; ASh=ge? ?o 0?C2~`?y?UrF?Rw?L=?DܼrQ?acPY e^-{\?r?Q?c?>D5R;ʪCsM?F<]?%xN6B?7Wrz?fhӿ?`!W?V0} ?YPgBE?V̿K˾W?Y,?j)^ftf?NX+S݄Խq?Yھ?7]Vn?i6Kcj?i╾8k`I?\㘿b?h?0$>3)傼sP?(p?U?00쿶gOl]h`?BY?oH?7寲?HG?W˾sg=P?7?xrʿ^0܃=5\xdɿ>VV={ܿQy=$?R?e"z]?Z޿`V6?DB*W|l>)NqMh?xb=HFq=m(PkK._!d?7鴿t|i?S =7?eO$?Mtz?'6o0? -HP;@?j.y)C?Ry>=Wn=n?Uz=mO鿂fe c(<0r|?o:=t!r0l>!<U?p?S=?vS ?ൻĀk潤F=E3=zT?M?IY,;y>?B$?NZH=sF ?e>tz?+0p8ؼD?k#u<]l>4ې?`xܿu5?fD?O? ࿑6=?iS/#yMbe~1Cؖ@?2Խ$>`r?ui*fկ޽G =P?@O佴hq?W:*!0uNJ<|8?I޹??`F?a<k?NB?2ò=4?a?L*.,?:ͭ\ t0?M`= ??]D?0Y?Y뽸"?e{?4 ^'b?8 @L[2Q?J;=?b?qR?WF jJF]忀t?De-T= |tv@<7@P94羁͂6?B:1db鰿%B='T>*8 =_&?zN9@.CȾFf? :b?O7l?tc??P)>78B?DW"#~ϾP(=ʽڿzG-,V˾v{-'oV_?c!5Y?I翁盽}=Fh?CNvr4 ?d?P M>VtQ黦?@i˾+ؿ.o<@n"' H?>=<3_վOqؿY7o @u;4m?0<4?L̽ J?&?}(Y@<%p?)SԾ9j^?eC!$!W5 9=,bL񝿂z\I[E*?kZ}ھ5o?~P'}z,Z콝$?j=־s0Z^w轖v`?, 8?hu5;@J>?KkϽƱt3K?h|PT?]= /:h=B^? v C?2v)?WY@?1;Hp^T?#<?U?gM%:M|cL+?t˿qC<?C?2Wj?<?M^>P?o6?E?^jľ&jZRƽU*?:hS"?\02lI0p"!9S?N?P`[?Tda?举!BJAۿeRB??L#;`qm{V?$?Zy?6Vxvx?UQr?u ?5?%&F?5cHs0?Ok̾WseX?ov&M$nתF ѿr n?@?]c?MĽ.=4=,yO|?*.?ݾeI q?BAR <r?w9`o`>%9ٕ8"k(qt?n?>N58(?0ֽ`7<|Z?E8!KI>E0?V?L?qrt9<1?_a+j.R2dv?꽉`j?;?:wh쾂E2}?Kn7[? >x?V=̍^Q|z?T{뽫'Ҿ2>?]?d=⬌?R.?9-+V{Dq9?y8[1?=> b~Y=过I ?UԲ=Wؽ <"о쉕r?e?g#nyD,Hܸ<8=XO?tJ?rA?D?kZ^Rh?8]<?wt@ {i?l&%,?,H<PUhJ=3`!ѿd-=6?mU?k#оVP[(h@^?`t ?gRq|Bܨ?Ly{?e?gAY70?/3h<%G࿇LI4\'?am?Qx￀?[#7=6?U=| ?>,ڿUO?jrxRN!D?Aӽ}< O?v(H ~?Iy R¾ 8=X?8?qAf???iPN o=&L?]W@?Mg/?6-?< )?3??Q5eT漀?v}?1#>?IK?7L:/ݪ!y?*kۿo?Vv2?wR?R?G=T?MEnJv6?4?E=? Dbc.:?&= he?]^U;7?X?R=z=xEص=??EB>ÿ?Th2ֿ0v?v~?}f?qO?k?oՌmQ?gnNi?Uk?uN><(<о8> X=?C?%?&D=袾e<(h?b?0E?c?4B?*|@EùS4@)r?x1?Y̞m/ ?l?u7D @%tF8 O>k?H:m濈eWGo`< 0yS?-V=UCP?J=='I?6b?^?wj<%v`X,??\dpkD?lP?ZP@[?SMl?0?ma8?i"?Ϻ `?? ?j?<"?jԿhJ?Ñ(5f?3?W֪=W?m%?x2?Hƪ~H?*b?dվ}r-=kM?o7DHǼ&x?.7?bV?=H]`?DbB:?Ie[2߽??#@>BĮ?ф =-?[[C=u`뮽X˼=t?N ?eaHzl|*@8N?E?qV5Rms?j9?W4?I~=?n?L*zZ?!?u`S?JM>?)%*@࿍,K\'@?SMF=pn=VھvIRTP+)u;K@?< Ơ0=lŽ5 =V9=P?oDսqxF꿋?l=n?Y?=Խ45dȾ+" .A@B#@*?rܾ#8^?MEtQ?u\?Pq 9?;~<숿.?axh?v> 6?=/T{v #i:?O?o.V?f2Yu M ?a-K?9%?d ?5^vmo?T: A?P2?;w;Ŧ@ʳ?Ts⿆`0?9/AA5?S PƘ?jGSVC?(O%p6տpf=_?`|VҦֽ_N?i`;p?%TԮ?: ɾTP1XpىྒྷfZ?Z?c z?PND?͢忄\6+8_>Ȫ==6=d=9 ὊFn۠@3=^¾W7̿|B?b?ljS?^|k*Y;M`GF=N?-f1.?q'ƶ`3?$k߀=V?p[(?ȥ?]!?k ?<*?q ~t7n`?Tx,9?t?E?C4Nb7޾:%p?)9pt M@0|&?;?R]; 0T=|Ua;,Ⱦ$<P=Y\6?VX=!g@?0X?ip' Tj?r?AeyvL?E7-V UFbpdIX9?P/|?L^3G:?9 <Jb꿎lmؿ&S@?gH?Ke&=Xz=|*NuD Rm4D*?ӿvD?8???3 Qݴ?vO3#W=?0N?MN[?W`q@2L=gx?$Bp?D5??qL6}?:?T)8?+?UP NpsDAXl?z-v(뭾>?R <47>6?/"?|?Cgc v\f?Iþ= B?nvz=pLljkQ H?SY˽@@? $&??4=?CB?޾awJ6&P=U=>=4,?X(`hެ?T2>Կv?Dkx%Ϳy!ֽNd$@?W=/>?qR6?S'=.=-z-?.]M:ٿ672;{L?mQ nAb˾N?Ne|p>?o'0Nz`uc}?@(Y-갾"D2?Pm"?Z,  ?Ế%;QP̽bM `:@0&BU.?bUG?5 ?2X"?P\D>4< XR(8d?MۜM?оfG?9?L 6%Y+O ?J*>?mֿ s?~߽,=r?:j$`?<h=??F ^n>[NЮCPK?QĽy返Zx*t?m5i|?Ic;-ɿ:W?:b?a2?]?iq?Fqɼ6>2?6My= m8𿆹UcxN>Ztg/?Oxrw_s6=jI?uZ~=31P?Qm:#?6?Tf?LY?fwv? ot?^d?Xi@$?U.?9<?Ƴ j?U>o={P8?5#򽞇8 4R 0 =ԋ8?dP: s46?a}q?YL]ȿ #궿n?x+?f?Z>%8?v,ͮ]lv?:>=>?JC쿏B^<=?xNxɐ?^2y.}?|fm?UaQ= f<8?T낿p㾾r);;J  ?FH?9.)(H?y^Ҽ> ?N)H?Y=pmu?8󰾭?ue?U2X8.D ʿ]VBsL?eꀾ!;^u0\`Xdƿks\X; ?T?T2?3C?O?:?>?c&=-4 ?CC?t`e\e.?OlV>#a?-i?3ݾ?sݗ4~?`?G?;νm;?!Ǭ b];],V#?^L/ά?*pd-㼻2p??*?z |{4`pCy?3 >]V|>"m̿oB?\ >3@}3&˿m48e4?S^j~s - x5;le1ؾ('q?+C?oֿQ?_=/?P Ľ&6࿳H?B??_Ewt?vԊ?Bн.n;9?^{+=ֿ8 4׋Nhп{Q'?KeM?PkD?I3zۂ?g⿊T?|;b<0=6hGmSQ?Uˏ?L?귴?V4ޝ)lؿiݿ=V?.ƽ짜rb@c?T?xҾ7?Rvs8!:?_y>; ?KJg{~o$ؾ(3h?)j`l?]Ϳ.?~?-pw ?l ?3Fl뾋>z=.d?qglA=|B5Խ&;d?>F?eY;A 辢ӟ5?`ھ*F?8$a½+mm{Q(,3?|?RF@]R,@BKU?4MV=R?)jݾ?\󼣘?hdH?L>" %J??ў{{Ct?"'p?H3i?p1!&꾈x»?:1޽?$ Q?tl?E9~$R@CU(?>usƮ?O~?E~?Z (V"?5ʾ EپRr??Z@r1nx?[R?0?e ?x7y[?^by=tX$ʿh?Q?G? 򀿆p꾊j>1.<$6$:?Wr:?[T?%7`?aV)}n??sg?_{v~6M ?I_nV~Pr?6deS$濇Of?W4H?`{]>Z?$J@:eAqS@? q?_8o?aw?M?Y?á?r?4?faD?E>q\tŔu8?4 ?LXj?* ฽v?ߕ~>0\侘ZHRվ @3gIݽZ?;?t?^4h6?L bH֬kV?O@_=?a=B?E(?d}?rr6?āƾS=?h>A:K(d\d?oWm?1=?xR<6ݾ帽?x^1?4x=G?_7(?}C?C.> ?Hh;a??: T֨`J_=(@3ǻ8:*,?jc?%qs=|g=w07?o0?duZ'{<È=Tc`<s0?ԧ?boZ?G^w2?"VZ?eN?P2)n2ӍNc4#@;`tArvu?½ R?Iݿ?\$?Ef%3xpľ_?Q?I ?¾4A?m,IlVN;]>;=0zxX?<֒ȿ^T?)?KdD?k?r?#v=w(,{_8?Kнh?ڟ<=^^=?Ƚ޶oV=PTrwՁo¼@?TF?yp¾B v ?o.@޿r?>p}=?Nv=ഽN~?оTT0B׾̾#?Y6>?p?^ܿ|c.j?mQA|??m+Fx ?+D?ґ?R8p؞?B?e~w`J?*qAqB,B,\@el{?P?f?_=?3f>%﴾))騾h?\[M>?3=?rܿv=P;e$}?5B澏?믃:]"?UG?L1Pg%\ ?=\*+DԺ??m4at!??.:K?A8uA?<οGd|??DXd{)@.o,`kew\?F/"?Kl#?`B6U?zDR7<0_c*s8HC;(?_N=?n?N-O)| N7K)F<϶ 4dYt.Ф?ff;?Nj4/V"VP4:RO= ;<ؿn?v&=HƿL??h?bU2?c8OL=Pﺿn8?(}hZ4MB?YZ?:Kʽ`IQ=GH?HJ@}?|ix? qt׿/[`w@?(+A@Co&Bw@vB}+U?.?ifX?X?@?>]{BO1MM?[v=?^6?S?lпZkOϰc5ܽ-?WY@Bc8 ?DӾx?X(PW=O@>T?lzy j=;8?3*?OF??"{95?5`s(ىJ#@`b_L?[qb7B@@$gp?fO? X??h$ B?E&=n,=J?=bt<܈pam9?}x?<^?.>``f?,`?_c2z}|;P Đ?Q?N2J*=WD?U1Ҽ>"}(?oz?9?0 }\/0?a5?|Ľ!i?ukԧw;?(%wx娿G_f?:о_9SbȿR?\y[g=0H?E󿚝m~?ۿ*?.?NH?Zr@!?cw_cn?[oJ"G? ,2t?9V[h1HQ}xҿ^Fbdqt??9&>NX?o.4=c"H?2l$?O~:r=zAܾW?L{s ??6鿌Bl?EhC?:*C%?dl>\?Rj?d&@?5?fI#<#!?@Z?b9ƽ޽sؿ⓿hI?c3?{Z$?bϾ F?tA촽&= Y嵿 =(?)?}ýn=~PY>(p>p݆>y?h,?lC(?pm?M\0?LBܿyf ?Xr?N>>?k~I?R`4}I2<?Cצ?V?QwL`R?8 Bd?Fh=D?Aoо߻Ԯ}h=ǖg);@?C?T:=D6=2???B{U?s'ݨWp?Fʾ?,5?Jؾ V?gɿc=?:ξ?SHi?zꚿ?^,N?<ʾ>?Pڤ}Q?BTkW&Ӥ?m.X6?7?+`'=%CJ?] xY?^?2ȪlF?W[;?9OΛ}h;\3KW)P?0?Fx (?H6F?zϿKu۬nw`?d?H?(ᾩ5i?s8ԽR?DlW??"տ=?/=?4?|cAb=ZW>6s?~o2$2 X#j?\Õ$?'?"1i?il?d5gs5u&?+,>ߜ\?R?zLo=|?Foku/1?v?T=l?l~?iN ?m?Yg q]mk0??{o?D=8?dnU/O?^?:I?0'(?1-ܪY٦`p?[؞~?r??IHQ3=h5?=;q?3"D/e #R?7@:qW?%┿w?ߍ?.)? <?#q¿b!?A촽̽inM𿧜K?90&6?M?,+Z;ܾ%^* ?JY<}pu_]???[=ZP?,ܣ*jocؽ#?Oᾂ\7?1r?a龼|%?mMO??|V@H.?H)tǽ?П(?g,)ɗK ps=X7?$z?ly?;?IJ?9l*< ?NH6,"Ŀ8$?Wwھ1XU?ds>? ?F$?\EwujS.;@vx?mI?x-?2m*z?z>u;aT-b6Ŀ*rAl#޿hft=L,?{(rg=&U"пdP~[?r/o=)v6?Tf@6|?z5ph <2i0v?{\ʽFZ?>?;l^s@}??]I ؽ5T?9D̽KZW?oq?;q}U?p 㿐r=?,?d?%]츎?33aо%Pa?~#;O=$&T1?E?T|o˝H󗿖?D_?oҙ=uuPs@¾)wJCPS?X =m?D?{Z?QeLۿAw?b?i<\=?FHMȾR=?[#n῏&]?NvN?Nin@G??L?g?]K?+`=KL?dI6-?i.?]}> +X"X?BN?"m=4L?r|Z*L:{$ ^Bj?tRNֿ|>TO?e?F@Tx2*S54j>?BP64<[>d=\TU?w'?674??#E6d?66?cR???S?1vО?I2Ol,X?? ! /?sXP=.Vl}FlR?Hq95u >ʠ\,?UJ?Q< AP*(z2?BE?c JĽl&9 ҽ4XӞ8 paaF{ =mK~?ld?!mtL-Cu= p@-K3@L!ʵt-?7CнX|9=%쿗k؃lJ+?nvzE??'wzZ~ :?q ?L?B s(?Ѿ;Êtq?N8?&??}&>6?Z?I~2*FT?BR@n; @ ?Y"׽?}IX5? qq?Q Ud:E?D"+?b ww?G?z5[޿?wjgGb?Zf?J?K?;D?CQg? zBE ?fLNE?kz?=?iQgڠ(?9&ؾ6m?Td?[@A>BG@?k?O廽?; X?2?Q[Խ?ec?* 2?9)$W=:H; ?z+?f ?\M?҈?X %6^ ~L?T :?E|>侸?fbQ?g+?#_ AG~?\.Z?_!o?L?Z? hN  =1b?R2? 6-!2(6OQWt8 Eg=A LB@+?F ?#?G}ɿ^xmdj?IYz?W?`5޾r`㿅lD?G0ؾmh?n.?UG&9*?¿6wھm}=n?9?Q:?=&?+G\?82I^?p-39? ??0 /ڽv1d?`M䲾?[T=:޺<:{Hо 7?X暾e@+oZ?{0c98K "?;\x?#k<{fj??8l?g?EO?N8s?3px2?Aw>9'џ2P q?U6|owRBؾݐp?DB/Bog?K=fR?\=VE3?4ᒾ$.D@*ԽҖ"?E?H+B?[Lή?4?(oDæ?2tp WU#=P4>[~?0)#H==\Ծ2'z ӽFF%p?x?0 y-H#&=`@?O<?Wzڿ"\m?= Z=?>&B)=}k/@>m/?|YSa?n㼽~?ce?K͎{g[?tx`'<9?]fkw-;)?g?S&?pؾQ Խ6?7V=W@]>?=?>?SsZ.?HBN?羆վ澳SP]85:?,~|l?{L1-m ?PVC9r?v?]?$]R?1о3? ?l7Jd<$?)8?S\l?Vr?Q/?@D=tDXd?ZW?Mh/-?A(AカP_?1?"P޽P;r??=F?jKH [S@y?5|>4,W#L?+=?a*_y>vy\RjD@;@?M8?]?_?y@ܖ>9` =s?<ݶhՌ,>RujRD?#+ؿh?@Sm?EX@6js=4??*6?A?3?j?N[<ڠ~ Zs;?ij?GI-о1?Vk?t?f䜿m6Ip8|?o?e<*"e?F?~#@=i?I"6?? ?jLt(?5a=!+?Z?Tr:NnY~5٘kQ?Y ?G ?T5ܽGܾ?vcV`7?.Ƚ心yuM?5?{LZ3gF LH4o~h߼"$?KpV?\Td?c?'.P?d)?3 k_%IseϿ9aX-7?Q}풀3 ãSt*&7?H"<`BcdC1?LeڔIٽ 8#1(ͬ?K)տiJ0?xB?<0>=q?D?FiϽ~ ;r*?Vye[,Ͼ>美ي??:Ӓ>LT"w!?fN-= (kK?1ƽc?_`T?0>%?k:?BqR@?SN(?WmqȽt8?3?v4%?Gxo?,?)N?esFhpdM?u(?~ hx?lw?Q.v/?'?a5O*< ްfV?Q F?/?Mah?r?".w?e2B<􄀽;n?f?b?bl?/̲?U|澐?|'?^#3]oL?-0?Fs?L}?F&ѿGt=1?\祾! z侧)'?`8 ?2M?eM| Ҿ;`$qR<?Pl;q??bd4+u ]< ?A9?H;@Mw?bl˿@3S?h??hQT{?QGӿh9?6S?:ڿ{оCý8`? )|@1?$?<8?1= R/b?J}E??7zb޽R?\?O?.T ?n? &?5 -?&d=ʨ?LCR1?Gnp/?g|{@h?Vt?}2N?n/?(hI?DJx޿?[,\?/?lPk?7e<?O}?XBǞ@v?3=9$,hB?ކ?<8?Q#s߽׭l=ckο?4X=Ν0%G ??a'?jI@h?H,v|<>?QcN?y&|0Z?C~H?88è H ?v 6'=B?`V?@?7.M4?Wy?r?M=hre8=TB9V ?Nr?[/Ƚ=Z ="`?G2s=췽'hn=c e,=Ap<Xf?tJ= Yx?[?jTq?FKƿ ?E?r@W?.7;H?P0 ׾?j?_FfBWBo@VmV?1Qc?F?о`䕾??z_?:A~-2?Eپ?-?<<6?]d?A*$?<\?(6 $j?A?>Q<^YL`Ng 0oG ?7 ɾ ?xD =x俓ڽwZQ$?j@vdj8gCp a?f;o?[2GUf0[,sD?hP6|#(al-?f;+=>z>??9}PsӏU?_@h< ?4XM ?\vg?-n?+:?^)?70?|b?B%P=`i$8ʿ_?#V ?CY?]?F0=Ґؽ?YX?O<*~?UL ENrHz>{i?-g &T%6i0ktw?Nf{}@*ؿ1l:Լ0

p?0?Fp8S? ?Gg]qM8?( ? \G*?H H|?3i?eDZ?R4?2V=ܽg?Rە+?5?^Xp ?j] ?*u?9<.0 ;=T'df?"s?;2?+G?]+7Կ4?&R ޾g#x@?8]"??1bASC>tA0z?e{?.h :,=?VGK?[@.?gx?M}nuҿ?F7꽫<2;pteGU8?$+W?P!E2վ\P?f?9dw? q^=@:?*> o? f:?y?`YP@v?l^ս) =ؾX?XC?Znf-k?9 @G޿ֻa?^id?/~,|H'=,ӤϾpFk?h4<ѫp<.@@:?d}?CQ~ˠ*?Hm+=Q0?L?:>3uHȾh?=|aĽ?_ >K9t?K?Es?|T1}?eKaWf=z?|?Ո?b?J܂5~U*?;#?4տ?<#?9笿VAw ?(?edc-?i?"w`?22?@pPU?i??DQG?G9?!z?Z{J?-j99.ktN|y10> =<B#?Ep?@U3?Ux?ᒾꐽ"!!9nx?BC-V$?տ^)m h?%V?Sg?W v2c?c?З?3(@o7A.j\,&ā?p?{bWn!d7B?d}?a?9>m6"<%н ?nwx?3+@3pD=lؘH>ޖ۾q}?A n?eZRM:?N>hj??뷾Y ?D?%z> H#?;.T*?AP`?BY1yu?E/?C+>*;?_0 n.x?kɾ?Tc=~?br6=X!;?h6.?WQ5Td=lR*?W =Ȏ?:~?z;쐾f<?A !+/J??q罨3t?"}?ܹtip?)Z?Lk?لG?0mDHd?k&?m4?SJh╾ E ԰콮zh?Y?G?x|?T+?woi?Rҿ;0?O׸0???dI/ț$ ^?9!o?ڔ?b&?li?Cн/\?4#dv? x?7=˾-?ƽ^?Q(I-<M:<T?WTԿ(Lik4GUA?O7v} ??d6P?#?'F P?dv2G:65?\,;ֿ͞?Zl>(?9T?>=H 꿖vXq=vI?\!&?#??4ƿvcit@Sɽj?ln<<5F,r?y #?;߆?/N^=@Cm?wӖ?ꤼX?,<)Q8yYpC<=8KRU?*پ#Ep̾Jɽb.?:ۿ!{1=!ľ76=,?AȦڰv?`f=]?J=X`?? B?CDq?'Ϳ=9B`z!֑?iM?Cʰ hh?=I M<,1&?BGn़g<h# ?8.i?aa(f?T?O;?JĿ5r?B l ?^?n?\yuY=J?qb<ԿE<Σ ?N*R=B+ܾD嗽 `>ÿs?A3?f2ڽ0,?V,?Z?n?1i-?*UH>)?;6#??;OJ H6@EL/~/*?P_n=V?<꼿U\#0?c?!$~* ?&q?J5?,A >M)d^uZ?X(?[F-uA?I.?mp??F;I?,mD]l?mb,쐾?S1?4?k"n }r?.?$?"}&;=>fT&u?vV+ ?sWO?j$;1x?R?z}>p<`?`J?*?Ns?"NhHcE缿~?׸i?C?P?Týgl:?8z,?G>=H㠾Zn?eH?mR?-<=[^Ŀx@?"?DAioq=.&Ck4nF?mQ9=s?8lq6?=)r!?Z$O4Bs?CF,?f*=:7(x?j&?)Z&_?V ?@Q[?WM?r?K-?jC ?D> > k٠?u4=.3Z?]C?P*?Xऽ?ܽ:T0d/UACsBb?4| )?]?p_%xy8<ߦX? >V?EE p?]<ȿݾU(?]?Or?yοuv;{;^v6:ypd?8ƼŇx?32;x?5SŌIt /@[U?B`?'`(ÿuq7^;>ƽuu?)e?_ <%xXz%a?NN>Sy?< 6?tnI}z8u2rѽ%ϾT]a?Fؕn;}?zuȾ"?[(|A`*EȾE@[o?/;?rpdҽ>?EE?{ܾWU ?Z*뿍m?J=3$?=!?4X?Gȥp???4k眽dnLG?BV?7T^t@^݆]Ec%Az ?.˦?H½K?=??K?`BA@pf?dB%?M/8XCÿhW?_F+?!U?QX?=侖G+?A|B?+?8?g\?؊E;f?Wbf?"q%{?D}L?FjxKj>?!,?Jٿ4d*?7?3:V?N6|?\?FڽtHо: '?=*8?ˏ?ic07?k¿ˬ??Z,=а=mz?: hB = ?4W?Q'h?cBlC:?P4?l/ը?!LEq<@?:z ?:f=R`?DL?TB?PF;L:?g?I||d?]?V.佭7޽s?(x=?9PI?;7 W(?]״ ?+J?8bhdؽF0?W%=װ?ؽ6@D?*ZU?pK?Z a?lfھBqM=P?7r?= ?hø?$=d@?Ft?Wj&?_?,RK[$?'BǾx?/hFAHD?hD?Q!?Euֿ_#?8=gso?HݛVBc?YG?2?Z-?\R?Vݾ~?n\w׾;@?9\?'U?>6?z?NN?PȾ0X?6hƩ?DD@pщApm?:=D2~Փ*?f2??n+?O=?[8+n?4 п VH?pA?V{ȿvƿEM @7Y?aڿ:ڽ+H=T싾+ҿV?.ڿƽ熴e?!!$98?bb?7?JO>q g(½niR>([??('9|?@+:Ě?]:8+?Lf?=z濘7?6.нT>y`{,Aq?o ?yw2?Lqվ5YѴ?<}#?)Խ.r%U?6ciཪv?ӝ?0Czry?CR?m辻?R?%O?> 4CZoC]]_ܾMq&}tY 1vc?qB }=3@P?-'cn?RT*?b?+/?8{h6q޽pR?-~ɄY?e\X`T?S8?=F?콹5%?TKs [㿓[8=Ӕj:{?J?:A@sT?yf?_F"?L?oz/?Q&t_[ᘿw(p ?Gֽ0T?Ft?T)'?4=;:C?SG ?0̖" ?T%?"J#Ŀ`!?b@x%s?PHZ,8zLh~?@?K ?!ؾ{ZV$?ڿ?`$b̾'?;uؿ'?9:?f Q3tP{N<;?L?%?\{ '?q]?"=?ؘ?CdAO 43_?;뾟?Z m(?(?n⿍T/?]?ƞ3?%` T?Z7??&to=<%bֽެpn1Ź? ?jοV?TfyspҌ?aG?8[_;h?ee:+U3NG?)߻WCB?:^Ew2H?( P?4]T?S6 1@>o'<9 ѽ?0zŭ?M!4,uc?@z?(麾WEbk@4?ؖ?S?4?I2R?&4.u?ݾY4࿍? A?Z`w?"Yzнn,ɿ]@;]$B?OC?DR?:2(Z0lP0CRv=+_?r?yCmV>ؿiTDD=h?[[B꿖 ?k(.?ܴ ?^]L<{ t_h?|QX?.'=Ab/'?XnW|Qw: U@?A=f:?*xep?NC`?-Ʋt7?Mx޽W"??V=?]g۽d?L?XK?<|X/% n?U?:C?tkoD-dc-?J~?ZNw*Ծ6Qg=>mk.W8pHؿb?:?3o?Z|cm0?Q2?Mؾy޽I>?g4-k?[S<RDq` *?^t: `?*q:c[Mտ ; Qf XClg?E+d?E~CX?e)X?>'??]Jpy~0?U>eqk@?cD?;;?p>ڽn?'?A8Ƚk??5Nn?P>?|?ArEh:m?jX?8;b?1VM=T?R<^X@+SCnHUώ?+2 ?S j?T8E?yJd)zZӌ?v[f>^>K@aPp!Y(=,K?|ڽ,6?#%J⿅g%?F?"<;ZuܾH?}1E=?Aؾ#'!?)OG?^w$pg?m.[>n~?7==v??ײ?,?G?qS=3QU p4AJ@+ A{@뿂SI?a}3?GA?C.Lb\ ?LĿ%)X|7\Ǿ&Sh?:b?>Ƌ,*?q?q?7;dVG?4B?c6lw-)??5rCD\0@^?tPc?Jj?U5?Ds>?X$0~r?.m?v6G?: ?#8<P`v?D?=Jq?edӽ;?z(4ྫྷν4p?1=I=?#@ܽ??I?F3Ok|J?_?[i\=XdrνŤ'~?zQ??q?K?c?9t ?W]U?8Ͽ?ܡF=V? ?:?e֎|W?ɵ?f ?6[?M,>X?K1p?tv?A[eNƾr*?M: <<򐼍c f?>=!?"?J>?_ ?[x?Z?k4?:?x:b` Sܾ)rܔ?@5>?ҔG?sj?eյտ{?8p>zx о- Km((?T옾eHgMU>B ?D?H?Y3[?ydsYq??9sUB`f?I͟t?yQ>w?P@'ܽ?@?=a=7?I?2'? ~v?Z+"~;J_?rɷ?+aYfv=Ep2.?Fi?<]?(p9 X?- 1㙿fbן?ǽfz=N!qB;@1 ˼P?b?j󶾣hh6+?:wU=|#{輿@̔p;` bb?v=Rͤ?+<4 ?1հ?cGBUH/PO?B7jt??N)N?\˘W{]@K\&?.nb?;es?]\?FQe7{ʿ@9=D8Ma6m྽?bau?D?#gx?T\?M(??W>t1?о>?_nx}??,P?,C?Tox?-3O5Y?m࿍A/n>?C?&z?=>>42ynx?uNVK?UԾf6?T?'?]?Ps+8{(^X?5ARAP>Mi?<ـ?_8?:j:?ܫ]D6?b;n\?3?IhWH;?VD?l1b:(6Wgx?F?MJk?-4??z*[l{ЂgGF)?A?(1: m?`?T\?*b??GgQp?ZZ?cFl?$?>vھ'=vqsy3=?=>! );@M{4=(Ծ;IԿ6?Az%f?F=_nt?oݽ?D=-go= +?>8}?e;?X ?B Ȏ0 W=VA:>??T=b }?5 @?TȿɽiпӊJ[?o=?=ͼP 0?1L?Ns>P敦?t@l-(CUC@?F=^x?F(!?uտW?NAϨ{p l?6QؿV>Sq:=\˂rx? ?;-?EU?i17?E:x?(Ty?¾ `?K?n"%3?A۬??]#? B4nê~?!hl?q? k?P4=?hZbb?0?s a랾iyPCMnf?X4k@vᦽu ?E?*<?`+?&)?tNx?E歿yPu_?NdC$?]M>?M>T?FR?[{( ?7!ѽ7?>ľwڙ +?UK?H(Ľ#?7:ɉ?c,^U?X_@f&&޾aX?䃋,mBuYh?4?M ,NLN?'H?C{?YAݼп~HnR?d\嬻&dh?eҽc =Vi$?AzMa?Nl"`= C\O"d?xB?Q?BŚφo lȇ`?_L?W]V|< ?)?Q?4?FEӾI}<ǧ!7z˾=Q?AFB\??B$pnƽ\v,ѾA8D=wa?Mp?ssLҿ?6e?QA4>D9C?>R .?`=ah?8lhZ?U] ?:4R}@?UE?E]?RnL?R~¿Ϳ #?\3?gn?H ?!t?D?,έz?7brzxz -pdCkw ?a(B=HRq?Q?< ?䚫?C?I0&\e>X?FP?R-=ygp𿓟+?>?S?R=}B??=! O?\Z?G~?>T?V?NF?a(?C^?]L z>(h?(HD?$-?i[U*<\R?l?!U?WL?280ܫ?sZM|.?3k?M[?@(*pMv>𩢾\>8?b(\04?84 ?ZHG^06?l>*Ύ?`+R=-=??Vr ?3ý?I?Z?1@{/Ҿ;?g:W~T࿚ҽeO,?2?_Q?,ܿ?2ZZ࿛A:lW,4?Aa_e?Qجv@:'KA?f=>791o>r>}lX `~RoҾ=T?bwr?v˹?l}?U=jju?@;ȽȽƵpyBi=Ux?6p7=.=~ 杺$=ƽ FQ?T3`=7,пѹ2{@?D;Dw?DvE 佂DrS>0N?;cнB?IZQO?OA"?OFΘȾ6΀\V?bק]G?>*읿#?W,C\ξP7?WYͽ$T?`?"0u?1c̿J<?B=0ҿ!?S\?k9V?@a?>7822?0^1˽Ɗ?5vV?I~o?V:?0?=?94/_u8?PC?^b?޸9?DZ̝?d ??) ??'?&nj?Q;mUw9x?S?Gf?3(?8@GT۾q?IٮM20?R$!?!^?eE?:*p?C?\J@ ?.{¿L{Jp?̊ۘ6b D?R? ?_=迗w?[*p?Ki=>x?kŢ<Ȑjp?Kz?K6?_vnnԐk ?1j5x&_?/?9N}?bp,☿\?X꿅+~?1>+&?W?=?Z&P?a¾?ms?[-o?T8WUp; >?Gr?9X?Mc'9T8$(v%?E_? ?S.q?HලD?.q^)F~Z2?CL? Ђ?B?P?m$TLX?Gn?BWŁ Q=?BtJ=H?-b>= 3 bpξǫ(B O.?Z?Lʿ?O?gv+,??x?z96?O+$> ~11?F=v!?VWaǛ?QX?"pmL?P L1Untz?-1?6Xg? C[I樾D>?X:?4>쿝){+p??uϷ;=;vt? 8/k?¾Sѥ?K$?c[3ݼ^)'\xSѾs +V?GM"?-@0ؿ?jQ?`B?' ?=?K ?:?1?UJ?*?Tp0?EL0S??K[ c0$e;?$-d ?]?@]&?W =XT!ٿ⤿?g}?Ny9?wd?A>?o^>\?K$D/?.?B]ȽGA;!wj=P8#̽1?w*)-x ?q?PS8C?J:=vxo8@6c?Qt?<ν4$۾.?^4PN?l~x?G?Au7Zpo?S?0HH|?k/?9*j̾!A>Ǜ?=?j??{TJ?? Z:澁6>aX?*@?AaD?V?ZˆβEQ=EؾV?O]5?:.?S\5?7?ZB?&S?ff2J?{ب?*t)ͨ?0R?.o-ű?j?T?2KT@?n:O,a?8(N$$?k@qZ?r?>z͚ a?L?N2澎?Gm?Ps?E,?j_?C ̾]J?>< ?0?1?)?2p?His?N\hӾ3i?.O 1?^Bؾ;Jg̾Ҿ?E?D/h:߄q?B>SrVkٿ;r>뿛D?{P?,fܽ81i?Qof>*?=xȽ@D?tFƾ}+?p/?;$?alǀ?J ?>8\,:'e@?.<:t(r; Y?LS9=n?I9r pbH?Mp<*L>?RpоCLOq&>c!φE_h?4xݾY.q<?;{ῄ%<:?C?o?6bʉhetR,?Ѿ?опpؾAW<Ӣ "?ؓ?u9{?OƿH;?:ľ*?H> =M<?CVYh@?k?C=^0i?9۾?w?Tɢ??UNS<0ྪy@t6?I?cI?,k],?U??Aӿҥ?I?4cD?Z%4~?rnT=\Z?\oyRc[?H ?6#?;;X^?PQ?$?_8G??;Ľ?\r?,k?S?:E-?Ko`pm]?闁Zk^?8MоRDSp65??'`,Wľ1PN?K*??߿?SWL?Jvʿn;P@@?0=.!G?)<'7?4 v?* оŞ?)?j>彠޽2?^w?:I;?Q?TcĹ?G0?(g@?1e R?B B?m?d?Mڿ#2(iP)dCB,zNcQ?0n=pΠ?:~a?p.nH(?,yЖ¾RH~pb?8>,?[LV E?d_?Dy? A<~2?n98?eؽD5\H/2Zp?0齻o&7:?RI(?6z?Bbn?/z[d?'c?KI?6#pKAp?9O/ 9aPx0 ^?'<0?8Kū?O?Y?"2|{?Dhs]ӭj?tPpp?R(X?B?E-$Y?X=vrty?W靽D?( ?LU㿌xYTR׾Ux?=+侸z?m?#?mw430&?`@+;?-FW?㽖.?BX?b,ҹ?l?8.(u?hVv顿'H? g=ῖ:?= v nz?y! ?C2 ?f*^ #!}Nl?NZ%$D>?8?!?x,쾅ĮD?/p̼*ZwA\~7?kI?U[=6,?q#?(?E2*'#a?Yѿ|Q?h?ZwA@zBB?S'S?3$A%CLq=¿y?tw ;@=0C,`@=}m??#:񪚽5?= oJG2?K?2|Q*?@b?^]P0d?P='?U="?yLc?gؾ+df?瘿)h^[;?޶W~O?F\<TpJ,=W!Cc<~4c?/ X?M?9???Y}4?>xs?)ƽ?;&?Q  !8о#b(?Rj?Wh/? `F̾g?7?i ʽh~?tgh{𿈽̾:4i$ElX1ۿrg 2!b?@?0?}?Nٞ$5v6?cV^?ADN nW?F@?"H?N׽_}?gWӿue?|V{ؿY< 8r ?@q߽5)y!(e ;?lL?JWLԽ ʽאv?.<)=^$W^?N!?;?A";1-P?\J?2(?b~TcD?3(?>?vZ?Wq?1?Lv?Lj?E8?־HJXVƽזԾ^Q¿?A<]>7?>ZtP?\ l?7\Wv?|@?!J?=m*?Oj5QOx l?`@WT?F1׾MXz z??󸿋[?T%?O g(?$ֿտzco ?4"|پI[?:Ž<-$pC?0P?S'$<X^? پ?s?Pń] T?F ?[x?N ?6 ?;?E?.t?>?W?N{?!&|ȝ&eCR?N\;?Z[?6U?C%?P?o?'Y%?r>N(V?Z]=b?9f?v2z!'pb㿄޻T?Lx?@A@Bŧ?D|M`M3_Ln@?EJڽsP?M>mϿ࿃aD?l ?;/㿃\۾ǾK.I=r? aOu?KF(?\<|z<p?UMP?M=?b=:?cO?0Li6?Dd*?Rl'>k6?%~<<??*?|w>Ky_?8:F?IЦ?nd?Rs?g?%?o?1k6H?Y~5[?_n?[|C|?f>`?I()@3뚼,(XP?-{?Bh<?Q=C6vziX@WBAB[zH?m4{|?tj#D?P?.>?XVB!B@fUaAş̿R2K?p?/ž @)2?Ƹ?aȨ?KϿx^LÈ?6?LvgmLlf??>c.\Fƀ?Lr?`5̾&;ľms?[ٽqì?A85Nоgf?),s??h?tC@'?Cf?1? ?b,?9>?=!T?2D*?D&r?F7ⱾT9yI߾bp;[}?VVl>TU"?8嗾uF?Ev鮼6|W+h3J; @?O&?T?HrX9\>K?H!T`0?g^Zcp ; l?Oyz3?G?84?X?MӾ8&&?'OK ?I[7?@v?3zi9 ?IBX2uV$?[-ph?G~?RXߤFl?̈_?۴Xz,.?6`?k$Fv?lnnYi=ڿ2H3>ޏt?4?erؿ=rؿ#]hxg?/?P$ܿ};?9?`N9R?`u??Q&j%_?)~?=Prl?L彈H?_^l?z!?<50۾YqF?R?t]?ܽ?&z?dtBzAgxAxR?sZ^?Ii<0X?X6O?i2?6I >?B?V?,T?J?MznuxOJ=s{c?B?{l ?Qz?+=澩? $j:?L7$?߱3?Q?]=`@2'l?4'`2jz |R?Y;*#|{?!%jhW!?hq?TW? 2O?/k?QYq?ž!ڽp?ۘ?5ܾOt?8aRŽ$z>U???9X?lV?Q}?MdlL?ic ?i}?7|,CuAnZB>6L¾$?Fs?ocp?OVHx8=p?DA@C7BGN_Wp=?2P?hSj.tN?7sھ#e?\0?[/?Qdi['?@־-?oR?H#+;fq?7?dhH0N?P'>AA5Je?#L?Q?%y?j^?6}?Q?s?e ?C,N?ȴ1?4A3Bf ?Jr?;m?e/ؿ?Y.O@qx&-?c|1?8?K5?D-+*D"پ-?s"???!Z ?9K Ar}?UfB'ſr?8_?,"??;?>"L?Z!ٽy`'? A&Acbb?c~IZ?׾lҎT[?.+`?D?J?.dr"l?,_'?@su%?g?O ?)ܽȿ?L17XfV?6lD_?"?BKwh?Fv?E5M?Ktv xK S wƢ??T??Ģ?4R~@=!ueо*tݾR?;JA?M,V|'? Ͼ` ξUlj>ԗ&?sY?D?<"?d4]v?ܴ?G,+0?"JE#?W``>6?_y8D*u-J R+?7k?R?=+@\B?dArj\@S}p׾N/ ?8d{ ?"^JVB*B !@e?:?[O@$Hm?O?]1?H+=?Uʬn>[?%%u)j?Qd4d;&9 ~?nf9X+|E$?[At?+L_?H5~:1`d<5 ?/.?d-?ftb/B?> 5?{QP|\'ؒc6?K@?> ?p?Ma⫿f?P࿒HjX?@MTb|\xwZn?5~ a8??:?>5p3?sN}q`N?M=k? @ ?V#?|/~ ?Cv?`?O?XCAB 6Rj ?LX=ݶ&<"P|i׻րh*ͧ@MYh?;?o SAeB%@zss?U8?gƜx㓿| ?[?Kpg?tǁ?@=80p?LY"OM=3P?TT⾜5=?Pw?Gw^g|?\T>?KJU?&f?g??i;L@v."lܴ?4xV.?.3C s@Tv?O6PA*¾ ݢ?XJyP?\$?6?O*?5wzcj?x>ʋ#X?.澌0\?B?Nt?\ϡ?Pܿv,?,?(q?)["?0н?,v?.f~?ov?vӽx0>i?fQǿe1F@wnYCGA>j{?m?_ <:z?,X/ O?B?wZ؛G?cB?nBA?:jh?Jm? n?ZJ~?< >W=wD]ݿk?@@c>b?'ᚿwZ?|vP&??+dFfYVWϾ>D?wr??oFH[@= "?Ҽ'4?`Lt?^p '?$O+;x*<(??6@05?:a?(xe$A?<\ƾm8?D?}?v?a\26?' ?O3QQ?HaS  "?%h{z?8R$DP"Q?X)i&a2}bW޾@?I?0žͫ5*pw?Cֿ?5ܧp8}?,@b[?];,?lݾA?[n`?9н ?TツX59"Q?H? I?L]?_bg:x?,S2!DaP?' ?_T?}oz:u6?D?P?>)l7l5?62N?M0?&A;\t?BP?2 ?I0ɾ(G?SC?GTWn?Pп0 B?S!?&R ԤB?%?NS*?'ls?I@t?I?@%?ss$u?]?&?F?1y3/20?GU?!˾c5[jFӽ qf?m84?{?ؾ@>M?iH?b6?4WP;s`?Jb{?>.ms?+;2{A?`:F?Z\CW̬Rt&53s?E˼hE<(?%[ad\[w掽\N?թ,>&} ;C (࿇@^?>?g?H;`?E8?\gy?[K:uB?KYNA@C,@r? ɿV꽃Puq,uy ᾐ~t`S?8ҌHPdG?@3?M>=0=,/?.(v]^?RVU忏`-!`M?"%Hu?M.+?Iab[-??XN?%JP>Ji|M~RZ?(f2?a?(a?\JS?%潽5$mo?[)?J{?ąvn?g+?5?ST?% !gd?Y?c?|E-o3?^?.!#&8? t?H?=`'X}i2?_O?!>_?^a??N(?M>w2?1d&@O`*?!?y?XH-d>??TʿNՊ?v񿌶Կ5ɼP?ݪ?c*B C{OAK?zZ?S*cɽ~?OU(uȽ?d??n?b?ָ߽?n&T?c%&?@)w?m?Og,#\=0?,b@?JtӾtCo?|?5(?PK=?T_̽?g?4n&j?IW)v'??>=NcJ@?rf?Oå{?4,?M㿜/?Ne?Ҕu?M?S:?!;L .־pL?Q (?PV?<,F>3p7?;5y?3>,?4?\|վ1T?!6꽵x@(6C?;۸9щ?{=5?:ۿ>0WX? ?9?1p?Lc޾;Ę?3N&?+Խl?\Y?"?3A޼?,?OKɾ>H?|k+8?`>#?k?dkԽXC=AM|?w?[O@I;F@?jc90kD(AB͖+@|Z=[*=.? w0?0f>JYl?1Ѿh?o(??$=P?.K?i)C?@O2=JJu?U?Z ?A?k?!/TA{?Eh::/پoy<7ټ9H?tVvq=3H?E?S=D%2;w6?}fm@T?\=7@7A??qG2_BP?-A(!k40>cB1n x?'1?'-?=?DDA ?E?#K?+s&D?ҿ5i+ ?!f??6KQ?]?GH?GvB_?3?ľ&G^?Qct0?@ƾT?M?˝Th60ؿԽ?E?qS?Xh?d̿SS ??2鷾M7?S7}6ο!I#?vľ(wf?L?4 2??]` 8'r?^r{ ?ZzA?]B<*tC[xB~Aa(BW@;þ<0?WU.F7<?٥ȿ?ZS5=>S J?vP?9]w"#=?8+^k5歽_ޔ?B?&L>־IzD>|?bB,><?u:|-?O?s*E"y!?h~?af?GxоP^? 0?TkX= ?TL:n?<H:n?i%?a©=&ؿ5e?XvNȿm@;?C0=zZClp?_?N)>̎?3qɿ?6n rHk?(?ZQ^?wƾ+ "-6(TX?3C8z?R!=伂\?'K?sBH=ɢ35;PF98>@(TAGyB+@{?B :qBz?X?vo;@?U}ܘ?*UG?.=ʽ?GQ|a?zDzs?),j8pb?[V?]&a?4im徝!@8@@;+vHuICgK'?c͢?&9@=o]?dӽd?@?J?0 A?Wؾ4y&XE?:?3&<Ky?RMɬȾB7%?] ?Na{k89<8Z5?AH?R<?KC쾇޺?#xk??p6<\e ?QFb?牾WXJmP?[3??!?Vw?8$(Qq`޾’?bP?p<0>͂?QM?S@hGG?VվJ=8?F8>t=]\AAr@6?S)?p-ھ!5tY<;?,B?hjɓڢ!nB9?W?QZ?Fl?{\8=X?{?O ?HR>?1V?dɿA<X=`byw®?di>v-K?1˒?]jMIL?O?uO?!L?)P)ܿxK?tD?<,{2Ƚ?Eq?أM'Խ?b{?57 ?tsü&h??پ) ?0y ?S뗾!ݾ/ྊ]; ?<&e¼9?'9ѿ?SN?BS?K17j-?A?Wf?T?($?:?ξ`x?xD?_ߣ<?7ھ?6*.?e?d0%ϭ;?")"<\?V> .m??+V?OBf?^ {ˍ?8Y??! 74A+ AK??&wfg1j?UHU+s}^֊?+80K??uּ?SyfE?O=Z? ?iN9zν=g?3 A ~@-??>?5ƿ!7??#|?O(%n?ˍ ?{&膊,h?BY?a˽BP?̿˹<??WXD<?8|Ծ?/?:޾$ꪾLB=p=t?;?+D?LƉ?CO?e3Td*ٽn]?AɎV 8?.??zO?׌{?D7?3?v?@"p?5?l?>ެ:?2kE(n?: ??R6; v?V?gWr?&OA!E>?5?^>κ ׾W? Mhm -6@]X?%y;?A??ۜ?`sf ?bؾ8WЎɾMď3_?T?1? AK?HqAPBI?b)<.8?J=3ȽhYٽ/7`t=߬8=&J?g4?4Ľ:zH8I3?e?Fu:^2;D^^@1!?eg?=U?^;K+^oӾvXP; ?[C>Dt.,?K;=`i]콇c?Co\?-x?;?%ԾI/s?Ot ?i}?Wz־Eo5:d4?g^vE_Ð>Ǿ,?c,?7ɾ"_9~o8?J\8ý?XG?ת(S*'?ԔA7@󯽥S p̾\ ?&,Iv?^]Y\r#?@R ?:k?8;y (?9^?1la)e\Z?$t?^E?Bv?_Ng?jfBE ۿe?=k"?a*n@D@??? ?)c ھyI!?[8?)^kӺ?,6?K+k>C?C?:V1?T.?`d?jTv&j(?HQ4r&?H?;h '?R.?\ȽZZ? e=?h޽ȭ??QiM ?qyg ʽފ>V ?B鿏U?sE*NGL?ok2< }{= 4?)diP֖?Ec?]%V> 9m?Ca`wn?́*|?qV? Q?u<7=pjMg(=?w?^?_M?L ?-hS?^X=;4?+t8Јwȿp׾1[T9?y!ohn?Q?Nl?;u?RȾ "p^Q0?U`>D(?clx~?k?t?W;ü> nH.pBB?N ;?/U -/D?`羠9~-?`?>+?L.[?TP@LGpRum0̾Cw?g=ٽLq&?+@EȽ!"z?b9 ŋ,D?$%=?.?L?.f0?J_8@ Qfݾ`J@ xT?K3 VfŚ>QԾL%D?@<޵?+?2u ?j[&?Ɀ,?10iX?2k?'q %0$h=4@?3 >˽?>!fDHc?Daă?ᡨ5@?Hu+:^?L`BGھF?cDrqu?]4Z֕{Լ?@F?=&j?Ι?7. ƾXQag¼T?)Q?!P+2?T(v?`JJXdH7⿖ߛ;L`^[nQ@?&LkԵ)?NP۝?mWD7C<m?]:?=_9鲿W x?W?Kl`=U1꿅cR\@O¼sW?.x?Y^|s>+J+5Ծu<<}?=43h *?GN?%?O˿V&\?Xp<%?q=<3ؾ3@:eJԀ?H㤼ȺbU??x?&?.ˬ?92-W*W?I?d}⏀`< lV@T?@?u"!C󼮔/1<|}#+M: ?.?0]'4?2h@7@+4?Q;Ӣ`?5?6:?+݆?gu?ؾB a俕@gub=]]X?! |$I?,c 8/F)?JdLQAzq\&}>(J?T˽R$0N*0@? ̿?: CNf0,|? ٿ?@?P?Ǿ@WȾHV?X0^z膾Z?E? i ?:ξ0#?"?2e?cb:i?.C?H z ܾ iOdd?-޿ gx;L?B@_V@5|%l8?eᨼd=?Sվz??nx?5i?|pW);,|V?Xؽhhvt8?P!Pq?L ~&tP?EZ?R?UtY >e@?oߙ\kD?/& ѽ%?9$?ZYo҈OF d'?X?@`&?6@d)0ξ̾)?@l?\R?`Fl\|Zi8mJ `?Wf2?1Ŵ?Uw!N1"[.?9?˾!祿D '(> *?/J?JX ś"/?OK?,S9*?-E?H4??;l?F? *!6?'?L=&dh?L;?JA*?M-^н[? ~%'I@>l=?9\﮾̖?/ᦽ>*^zE?6?UN?8=-S@:\$>fs'P Z?¶?vU?\Wd(z@o?;?{۽y=0 ?pY.?F/ ?P5?QW .v?:8?mվ' ?ejz?bV?Jv, [" ?{.;w??ɠ?0 ?6AlXyxPKR?蠿xq?6gK<d,GFҥې45?A604\r7?-P49$?FyKNR@+U:E?Iҽ$_?d? Hh ?"]ynr@(ھ?P?vB L,ֿ{O?Ј =+@?&cþ v@,h)Zt`M?"p2?W8C{):?YFX7Ì?,w#aS2.bpV!?^Ⱦ5?L+Ș?<:?-S?CT~?7[|?g?AL?<s}?W(}?X'4?3)" ?(T|*Pְҿ辏@ᅤ?5Y˿ľ?G K~=x`,hw/ls&^L"/?,=݆?N>H=0k?g:?6D?#?Lpl=4WT;;忒>?L1?v*K)Hnv?'fa=>tF{?Կam?Y0W{?_?@W?.%&hC+?S2^?X>XAb?@j.8?XGr&?)0?(;?OWO vg4Ljgei> ?@27?OAp?=ݭ{(d~u;?zMkHҿx^?7*Ơ?H?Aο{Հ?Xf?>?U ̽DX ?JsF?%ľ8Լö?U0ν[E&AGN?".?gҿr?-r ?faEK!?\BٽMн:RJm?$ }Ծ?z^ASB?3?a<@0?<x?/Hx-4l?Ga?pqbѵ?U{l?7]vپ ?)-?F?C?c+2D;澢L?#0?6OJ6*jS(P???Vu~v?7fX?E*-ct!^kxby?! Sj?S?!AfþL(?>{̾?U>뭿cwɔAa$? *?Z>y0y͊?V =?ý6$Nw߾|Ծ¾Bm??dLpR!?^sT?@?RT=J8@?;ͽ1?"`n?eL n= >Tn??Df?9??ZP??a? k?;r?EW;?e2?6 P??Oc*T*?D)Ao2?:?f5?-aJw1l迤N|`I,xo/4?P2VB?7?_@,6?8N,?L<-嚾 b{ c?Enq?ef?7 ?/>ܱP?G ?J.?4>Ҏ?FX?G=5?F-u> ?NMx2?Id/?dZ?W?o>b潑 '?KJ?<T?Vm?|?ptyz@\?@'gt?&v) A?0C9e Ƶ.^r,?$#fN}?F0?I!@+ƿ?b8?-, +?cl\ W?DtJ쾩J,9Yz/ܤD[?-c?E?;W?&Z?$?kCl\??gaX ,ף?8csJ0>p=5>9ʀ A=`phr??@'n?]P?Sx?Z<֎n?=3K?APm?c`-?+B?7?@??K{+ p>§.?$]=%T?o;W?`8?7"Կv >+?w?>W?Rj^?y?9פ@?=?E?կ@3?>|??=S?[ݿ,b?P?0sP5&鿘4R?+?(?Utbo?t⿖=kX?(R?)r?\?m)?U.0D?K>?6颾?*{?MC2ȹ?@ѽ??M@? &\E>Ծch?KGʿ{Rs?nf/YCD]&Hjۆ迚xxC-.?YԾyxȜL~W޿Ċ?ڏ?\un?c.2k? S^?Q?=.?`ae{?7ힿM?,N$0? vd? U?>?-R;྘h?ج???ED&wg?+^8?XĽI?>O"|Q?N0j?c?u~7gH?O=[;`7bX?2:>EɔP^8?Dsi?\`Ծ ?n?PƔ? x쿃ݾ©VpuO|?Ӎ\?)T?D(x ?F?[@T/PP?SC)LzDY?#>?# >-?t?(k:@?Q4?Pk?UJ?P?8?vhPھx?_-?Ո?Dн1m?/s?K:? %?нx+澰?bt1?5y?Z#],?=j?Q== ?7XbLʾ5ؽT?%7rO̽g?+hF?9ؽ,؜?*>C̾pjI?zNň?0?\JX򚾍b?QN@.Y?[,,$V?O?5mcq?+m?Pw?G@?T0'~;>_?8?)?/DLE~?c\xpw"錾BQ\nl羒k_Sƺ=bwp>R(P!Ͽ?N蛿2MƀJ¿xW RMt=T@I<?BϜ^t=|fǜ` ?Dnȿ?_Hh1"?7?k˙e]VR$?N,Vo> ?c?FoԿۗl}=?cҾ?I? 4$_<$??q?9?.kk"|?>Ι?L?o @_?:=m0?P%@?YmSRLDl>?Hq?J>6.?a%?H!?NTھ?:)?Vo?C"?BuǾ 6?%1νr?4?|?jȤ?V?lq⿛FN?܀?X BAKQ?J?;?ȸ?(?F?:޾0q?1ƘZ?~??2+?WU=gDŽ=7[qB=$?Z0??^? ^߲H#^&w̿Y)?)(n>^}?W'L>hc?UR?%н̾>?`Vþ.;2 (1?0z?9oվIm?66XGA?/:x?56??rw" ?;翐unG?IAi\W?RM?*՟?-?d &??;O?S`?1qǒ?1?RPhk?IZ<Ï?VjHPd?Pc??U,\t?Ayw~pd?fk@1T?X0WD˾z?aȧ?9b]M?1#?TdS%?J;c?2@?k=\Rl?H;{?,?Ǘ5@}kY;@[?R26 `>inT) ?鿘3oA?9?0?dJ&?EX?0%|TD*:ϥ?Z?u!?RBtD?29?idvO="39??濖4z.Y6?ဿf?]??W4۾4 =?R@? ῌa?R?5?}??zd?.s?9"N$L? ZcwY?fAGz<'062?(#"?&r?Of?d@?J߿⮿m?5+cB,TyԾz?뿜?Q?)m ?HT?;3tD$?q?5?n`?2 F@>?&?A?k??0#%迈nthő?"?=yP?\H?J?bz?D z?S ?MK?G?1t?琮?~D?H ?N?k̾@ a?T?4?^U"<࿍ h{?(?I`L?.M,]HÔ?z?yq>V̿r\N?2̋@L>(? 8O?I?-依2~罌Ct78yC6-?HT22 v) ƿl8޿ )r@W?e!?p?<<P>ռ,ҿn?T?꿏<8佮d?=7?\OY?nHhZ15$Dɤ?Fp?:.xu /Lߞ#PcɱLjbh*׽@T?WϽDjl[`?IqоY?u *?TW:GW?R?A!޽w8?H۽cu?:x ?=2N?JT=oTgg?p[Z?G ?`3?*;>?V+5dY4C:?ĿƽB p?F=͔";[t8[n?;Q?#7ܿ~oZ?@?_F?2D?$?te.ν覰E8?7M?=1?Ho⿌햾f.9?4l?'?XK?ܲٿ&uv޾/]^P?)u?B2?@*@5L?+ݾ徖,ol}0n?ۭf?ֿ}? &V?G?8žg v/?t?`F?I@ .?Z?"ྱ*vտRu.;x`?V -?\M!Z?z[?Y[A=tҾǞJӐƾhuEY?]N˵"@0+rȾ d7=tCh#|!=-?!.t`g?MDYW?uؾFzM.`uAfA?E&B?K,M?~?P _oGBDT? bQa޾A m?7?.l?]jP?`RY?xa?Ί?@B?Ffᾢ8.??*3g?tN⹽P(Y+?6 ?Lj?5FŘG8ES?G3?+?B(W)>?)R&0ʾZf?p?[b^ t쿥 ?I?z?NT??|R?;N?Q(<ft:%>$5VHp@?<о?Dl?>?N ?>0 L ۩nwfO}?^f(;㾑!?/z7!l?)p5龀,X d?J?Ih?QCc U9þs0x,v?;ˣ?N dU @ʽX?JJ?Y?S?X䰾RtCzΈ?FXלDft }<`CȽK?]k=lֿ<_?H)hS ?,꿒Qy?7s&?N1 CQІ 0?7$fP XjC ?*n?Wɽcsw+`?/v=`览/?K"@͇?⽸*?D߾G &T=d`?>CB?,位I?&[;P"?gpLe|?dE}?#czw 4wY ould*x?_=oT,ܐ2?JJ?Fn?۪/,?!r?z?0vz?DA@--F[?V?AhU?4Nx?cu:̾N?lr@?O=-럾 ?-̿}VA?^I?)Y0`?;S$~?KψY?Fqޒ=߽?\?=?VR?9ӽ6(?*p,ZP?'/?ti?6e1DD; l=[~{>3f?(`R0bRyfJv?K}?QOT%?h?[i?vI?˿i󢽉g*`3;=2?-Iu?OF?Z?>_^ľ"?F&??f'?+*?nDr?J?eQk4>ܽ?0D?C6Ŏ~?֦ϾJ?ZSjƿ-}^Yn??ѿ\=7?k?}b?E0JV?u#?Y?G?JQ|? }>?'v,{f?׭?M{?L,R8v9vpy˼>ѽ?&<&,b?:V: =],?9z?Jk<@8"J?~d-y?KF6侎?n ⊾?@=z(P=?/y?XBB4Z?^;=_^?+?]>!H?ha?[K)?0 ?@Y=?I i< ?K*A|V?Z~p?Mdk5ܽB?9Y9??#j?]ā?\߾6VpWPʽ+c}XV?Ѷ俊 ?:??L\?]AUv@sC h?UԿQ?-iT=2O?W ?b@Apr?: y?S?t?[?9?-?SG?^^!W|@:@'$jC2XB?\߾!b?#M[9ߍ;4@R8=?>iR`S:2f-uדUe?K?q@QF.g?@*J?!-! J:?+L9?zMa1Pe2???3@?+F#ֽ f ҽw#h M?_IB?S;?: Ȫn?B9?]>?]?a1?8⽣?@r?5?j3?Gx4R䎽@ؾV?%C%A?d= 潷 ??? ?ٖ佇:\?]+#?:;?dTH$yonՋ{??eX6?]~?;?p&?=aHNO?zh]־'?G5?^QB?? I@*ȫDB?*?>Ի6f?? ~4Q|?9?>Nʀ?r\ 6?(]?E_?qK?~ˬ?N*d?}?y_?^e2?C>u"McA?Mbjrܾ}V? 忄ܾP?a|:ƽh_ξ}vve??Ml/K"?X|JV?)s?'8K?X:q?*a?R?mkTz?]Scv?c½BGpQ2?4%e?eq?J-uu?C cAPj?`c &?a?U4?KsO0¬o@uH'M?N(?ݰ?Vd}ҽ?ܙFdegИ?=}=AK>?6i?h}?/]?ވ? ׿Ȓ?r?1i>XA=?Edռ3?s<85<@ =, ?X=^)?R6#=0a< )?5?@?4w?gdQte%j=?O;-/?]X?'}H?`h?]NXD?N@ھ'??mepqbv}Vt-=?C?x?%I>DwÒ@-@q2?HݾU*l?O/"O>BHt?LD?nsM`=?JtU*?2Wo?<?Pd?l?X>μ%?E7<2v@?8?:|U>+ ?7?/E?F0%U뿚!??"29οX?:Dܾh$!>=ƿA{YCL@*m?!Z?v?10#T1?ԚUNd*?Δ?XW ؽ??ڱ?\ƿ] ?"?(Ο?Y?Wf#1"kX?D]Tf?E侚?@8k!=B ?:8IzY(\G?Qm}Mܽ$?BV?޴2?R¿ D?c翃p|J?Fп ?7#(R ,KJMZ?Q,< UÐĿ?jW?2y?.Ŀ? ?U/&?kǿ]FS?MW.>J>?+'P2?U>=z Q?{ i?I`Dhŀ???Mt?I?9 <*'06 dL0; ?M~?Tc<~8@ ⽈?^r<:byHzd?5@?hOQF+^p<`Op?|?A*?9GqD?M?>=t`?2-?gr?H?\?E?^oܿL?J? *?\DL~?%6?e#F>ɿ`j6?yF?N>νnhRR??Mr4 ?H?A0?)Y=zI?H}z)@,ڸB"A}"?0?# 0ghOl~$p??L5@+G?<Ť]0~vj9F ?<۬o\L@f?G?,?K#.s0?Ym?&?A#?4Vھ???"sο?HI(S p_>ʍ?Ǟy*ɾe?U?4!=?Q𬿎7ƾ~g?nV~\.㿄 W=1t;f@ȼ[-刿DK]d?8=Kڼ4p%ftgh!w q㥾@z5?<?x?5>G?%B;=@/?QFB?+D?fU?&1w?JJ5?<*?{t]?Z?2@g_)t4??&?(q_?qH# F?bP~?4?hf_}? 7N5\6|5?X=͢?/=0|ᾟľln۾U&Z?^V?Lֽ$ l z~.?GB3M6A?B侗jD?F:7 ?Bƙ?Uun0^t5?@%T?%,?l>u?((r?C ?>¾?a?M忆5!W޽(PӅIjP< H?`B]?(-?\zH?@(j?4%?,&_8B?![t?^?U ?7۾qZZ?8*?#>?`D&l?^efMF~w:?kQ?Q:W R"H>gMy{?Swq3pt%?cP<= h_p Mdn?(u<,ĨuЉ?a?O$?xHFf1轏+qfJsܽ&Ҩ?&?/,`4IZ?Z龐vȌX^?tP-nhlQ־fi?C0Ծ47 ? ? ?Z-2?<9࿖:=ƍD>,u=^??D(5̽ܙreӲ?IZ5Ӕ?-5? Y퍾ξĵW?;7?> J?DN9 ?0CF?𛾉C"t?BT;J y??\1~?3&:4 ȿZ?U$?,U?Tl#Jq@?I& /?1TiO ? ?/jb@?#?ڋ>x0>A}=q0z|ɾM|tI?jSKe?+?*L??St?E=?=!b?I2?\(=tRCz?NGֽ@ڿwDx=ؾŽܽrc#/]_N> 1޾5BR?I7 V ?r??y$?:xj?t3?M8nh*7`S!?VLd ?9[?/ ?^aP?` ?dp H?r,)><= ^l1c꿕ymʾl83?//?4?4ܿJq(?gDRPs ?[Y ?6;?,K?Hǽ@y⽕? u=lqX?#%:?8ż@?< Է>0Gg?+M[\?2w "ֶ{?B=b?b.?l?y dFJ7YB?RIp=޺s?h;?sܞ@@%#T?h޿e??b?=:o{ҽ%n?S_" ?B(Y)̿\Z?YW8{:?N߾~)i=KxF<?ߟ? <͝?OG&I$33?,b?:ݏ?O%?F]Ƚ迁e?0?S?N?D!?K?n?-G?LS6?NX:,a@*?4?$?ƽ??%|dϽP̾)߿}`~?Q?ԥSbF?FTw?Oʬ?KEJL`?2$?{?0?W'0?^YS@ѽ&"?$&~~?5Ľr??@V?.T?J?1p>Ih?Ps^Q?(K)?QʾWξQ۵?2?!(?F1ܿV@?G/R\bl?G?$6MHSֿ j,B{Uqݾ??M\'o%?Pg|OAd?]l?̾g??q.f?B?J X?rc꾆Ľrv%45?ٽ?8wl?Z!$ 8&%ԯ0?++;?{5K=?c׽ ?Ћ辈%~?8a߾]tat0?:?g?Sc2?"}?ʾr4<5hCl,p?ѾF?`z Ya?迈Iᙽl?]?3u? bU ?.KU?.??J9=Fc8? ew>B?0F8l-(?4@.?@>|`žj0齪{وԾ ?k+U 1?5ξvp=l?>T?E(~?bh?Yh> p˙-+%f^2_ ?}(Yҳ<0?-?\Q ?WV?]z?y/? k8)E@,?N?'H-m*>-4d?hߤ*RF?N?>`< ?E͎F,+P?*[Ǿ ?@!wܞl?dx|AB??B$?aqQ?Ʈ*O=gV5SvF1?E0{s(B?+?^ݗCFiJ ?UA(ľJ?L~nny?Eп?>Ȭľys\BU?0׫?꽆}>?J_>G>q:?-Nq~n?'^0h?:翁Bi վO޾þS޿? k?02r?1zyf?_FоW迖>=c*?D#hB.?!hBfE ?ۮ ?wW~,u=pxb0C M?T?QBR>i|=Y ?,F?W^g7A?|1iYܾFa?꽠3\=S4cu<'m0b?c~޾r{bu远v?ڿ. ~?FоF%aȾlɝ?Lj ?yI@(b=L?Z9@Y^s$?>A,{܃;?9O7?=5`]?C"쾎?]\]5XG>mLAO3?B1Sõྜ'k8+w:?ؖF=.?LhI?NOGrIj޻`>?_ *~2?A`Y(+Ľv?μ8>?\`X?O?H 'f?Gz?6SV?<\ټ{M?b@?'&=N?W??-X*?S6Dཥ*8i>D)R-13&X>?-҇?;%?v lO?S?3;2G,T?2?Q-p?Gd?CXG)gH4v?%2x?kn?R?B?Na?PJ?ꭒ?d?%?]꿋bG=q`?0w,?3X?c,?p+ ?U=޾!h?e8?[?E?'nXDGɾ{L?~U? ڴҿ!?n(qp@(3d?H=lhͿ]?`OFnG?eQ?>J !?o??M;rX?EvZ?;Zu擾*H?Jd/?!x;E ?Dd\,!ڼŌнk|?_??):O>Ac<"o=⌚?Ok?D?H?I?zɾA}y?`tÿ?m'7Ee?Y$? W?h e'^*1?cL?>ҿs%o?]Ѿ-?/]G?xാhIx??w.<A.ʣ?A?Į1?"ٿz?C , ?ڵ}?S?~F?H&=Å?8O?s]Zr?@MH?p;>%Ҽ\?+PVH7?8Y(?JmRa*F؉~?/p?Bb?0*?b? JGi|?;:@?z~?-1t`?N!?%a:8n9FP[?KG$?2k_?3k?+8h}8X/i?:?8ݠ>D&\?9'>H?Ԣ?Y!?̈́?H&?!?+!?i -E?6͹?F??I;?1 ĽJpV?K?h[ǽajzf6^L4?F??7Fʾ+0ɸ?2Z)D^ ?Z%t? @?7G?ϴ?bl?MEY\|$ ~?c?@Tƿ.?W ?fٿ\5?;B?mn#=.vT6?F?qg^?ThlҌ1M z-77?`켱8=(?HEu?,fw`?a+K?\S i[08?WF?>@/Z оa9?o]C?H"Fmd#?<?<)?r?Ok?ۏo?D?q0?EH?.ԾA?JĔ!d?{S7J?8C?]p?=s?j?ؾ??^ ?FSx>&?[?D"k ?,g?6d?-xɽ"HB?` p?3?L'?NM?Y?8V?Wۚ?AK?z-L ??ȿؾ\06?ndt@:㾘A콤2!hwFY_nX[?MD?<8@:xy<85><2³B?‚hR<H?&O ?h]3=I?[n־Q0?1C}L?d\z ?8t?Fп}:.H?9?bR DR6/f(2?a+?pq o?e?9 쪾8?cf?1M ?`]4?CPMY;'F4?:5??,/5R?,̿kO?If?(Akl?2?.B?53ž[-Z@?BDX ?;6?>|"x?Tbξ?$p@kYr??a?4X??\r?8UF? :4??O>q?c9/B>@q$==%',A|Oɔ9<ꭿv&@ AJ ?8_܄9?ahA>2~<&@<>`?(H ʿ?j\4ApiN~?sJ$8?9&TWj: ?vf~;a?IdU:=.@V70>$F'? Cx ?(=?9D0f?S"?{Kf1vȿX2> ?I_>qW?`fu Y?)Y?Llp5X?kE<sw"?0t?H=j?){c(|_?Q?Op?Aذ?Rw?q ?C[BfE7Ҿ/辁A9n?*s_1`rx?9v @o[\Nrrƿ?9 ?;'M:u?zRhb>?0T?Tak?sBY*?/v% @/4?W?$ǽ&,0.8[+= ȿ]=tBK?1%BKMŸ?<%H@-NѤj`?.?0?u_xy|`?وBh怾ZK?I߾= yFQ?Z?0Q?FrO\i4)&N̾Gs?,8zH<7c?e ?);>? qLz̾H ܾfh(?%?E]F?e?="C<@XE?+P?!` ?N_濇 Fߴx?16$?8濏D?$?{"?dY.?a%οT?~.ƿ?drp?H8)p?ϾJ4.?l8Q@־~bmZ?='?[YY,?1X3Hw3>\K\?8ܿ+zӾ μym=s|"m +J?.9h`|H?S?gD8J? ߾V?e߶ھ<?w ;?WB?|OED?Rkݾ85-˰?Y2?u@?8?KMοpͤ= ?"Ṩ<8]v?>޾6L?'P?@qv?ྕ>|?F7?yPX0k?kC?>=14?BHԾh#?f ?8O%?FO? ?2?Р1v?%˾`>-??Ⱦn'̾?IuD/*8?+}L,?a/B ?'>a\ժ?D.,ξVv#?)3?Bm{ƽ?C?lA?/$@1(=?-H).Y[ i%w^(?Fc7?Z)VC$sﰿ¢?G`?It?`}0?IN&Q+p?hȤEy4*~F?uf^ɾW̽r?F WX?RY?>3 ?iJ R?X:3@G1I?c< ?sa/3Wl)7X'\ϝ׾往?:(8?"L@?*Ҿ:1΁?+&t_j?{h q[?F?Mr??\T?=~?)d޸?(D?YDf?ӟ?De: 1.?ྊ$0t> ?rľܼ??^?[Mþ7.=̾~?Q\?EP>.N'?GFL??N+K=2?x޿uM}?VS=9 l"?@y?Dʾ? ?nȾx+?SS?-?HJ!)u?j?,=ⴠ?5?\FĿj޾?1Ƚ?KT?P~D}&?AB\?JN?٪? hR?=?>V?;|俩%!m.?555|-t?;0? >UhY?j ?žg?Նw͕{0d)gοvP?d"_lԫw?Ic   ?HBh?Yx<&` ?? =*F:?d/e?L?.a:*{l6?{ÿνF.p?Em?H^Ȭ5[?QVJ?)뽿?4%?El \~_1꾀<)&'?vl?]$?f?P־n?ּ?`翧?qzAv08z?2u?=(Aд* o0J>md??KM'ހ?GrDQmþx?#p!t$OG?84?BM\#%]!h??K?M,HrvξTU5ſ?M??L?*J?f?!dH}\t ?0T6'/׾uB?R0?㈿v@?7@ĿY?C!t?euHQNxV?8mKR?/D?=?/0XZl?4?Q=|y?l?х?d4b?B':tg?K[0?+,N=?.?Re@ ? ^q?TÉ?fb?^9??H?F@z/6?P* ?3,mOܾ?>?aMV?5D??$Œ?Oc ?*N>k8|-?J-?*L?Lr?&{!?J5?7?ArqP?i tWҾ>N??Nlv=P?T|?[` ou? ܾ_@ܾ!8?L\?'Z轗濕 ?OZPJ?K^\ D?;侄% YT]`\? yh$?h?x?@ X::?ڌܾ!?6./l?AX,{Vq[?Ov>ٜ?FU"? ?̾-.?G^78R| 6ǖ?HƼJ8?9䀽2@t>? tMM`?Wϥ&?.8$-C?舽>\E?>I^?dੀ?L?2T[⿎>_?^ʿ~lI۽[(?}u P0KS_⿟{4ƽ|N@} ?9̿y?BYr"᜾a[s?y?GFN]H?Lf@ֿ4ٽuT?rGн°?@?Yt.?g?eń ?k?TqL?.z:*,?^{?X{Y?a6z6x?"?>?VDyCľT[e?^WjƤ?- =Ӡ??GGleW? _P˳ l?<оيA?'2Dd Z?%F<,?^&d?8<%4?!߽hcؽ>e^ \OV$?G?SDL?MξlLx;?LR?G6U?8>FOܾ` =`CAcPa?;wUFP? "佱?tƽlre ?'?Sq +þ1?;*[)Ⱦ/J?o݈WB?[RW?R-])|m!T6wN'0Կ)===q?H6>(.5l, ?ZC׾xѽ֠ʩ?[aq?87v.ྂjP?/.?C<??ou:?1]- Z?`!B q̽࿙ ۊ@ý^Ӝ@?AT?+V?N%?5V?Ji?N?Irz)yNV_ľ>?p~?VD?AjN@+*?J6ex }{?B-?Ҿ|^@350Gi\??[?/(?R?M?YN>?9wT?$ZEAd@,?REY˘P+?(uxe`?S͔ Fq??򿘪`Bn?<ڐ? ?E?1%>(h?濝+?^ÿGs?P/?O?5.ln?W  ?q? X0xR<ͫw?$ɿdϽN?n??H4l?' ?1?V~?AJ>fT2mVH?y*(ռ .?DŲ?N7bOFN@;R,?/L-:"?@#d¼v?<"k +缿4.H?.º?#Z?T'Lnڿ?E?>!}p]k0|%6J`? ?O?Ͻ꽌I?C:?Acpf?yA?4Bb?Z7qV޾ҳ?;Y=F?UĐh?Q e?;?b*?ȾFT?@ s`.v?fW۾*6:|?뛛[?u]<^C¿ ̽S?E©;UN<>^??FDMp?V@?Cs P?;+ ?]Y辅:Z?ij&; ?TJwIT?E_?TS?,T%̽QM??Q&z<?v+}:?q(vؿy?mfoR?c}#|?>h=cھVQL?Y-?L ?B?\c??g1M?L"?L Ohr.?Hs=?SDuy?Al0?Rf?g,)???Y쿯Ng?g>Jh ؽh4>[=qX?"qj@!D?=}]В?;&!ϾPr큠4, ?V=nC?L, UMڠތ Mz?\;,>hb?%-*?St#?+ƾZ澐|?KeT]?OM?nlܾgS%?=#_SX|?L?nzn?ǽ(N|>UR?u?J>?ƾ(E?j{+?D4:? d%az?'ؽ J?=m4m¾?4q?18L?.^4xoQ?XZgę?:?V1پV?PLz?`?>f ?Tb5d0wM1K=?%NAlyb?OY?Z6̿yQj?I0;6俢tyX%xJh|<2`?R=dq?l; ta6?l?:?=*?D?,T?F?Iҽ-7?-2?^<+B?=? $/?[r?^k`'?L?К5nB?^O_Ǿ\?E[2>#?]?PYcՊ?5 8?Q?i?!YAf@ 8.??v?諽p/?*̿{,]XԾ^L?Y1?B?t w?Ey?]Q?V06?@V?Zla?; u94~YH? 3.m$bJAC6k?֚vZLοt z?I?fڽ7tAпtl߿ @kr?E?*W?1kp4뾫/-H5o=ZPx?l<,sl?ZfӽDi p1ο?C!?N?f9?kQ?Zl;?/?q,!?p :J?%~b8?+ꁿp;{pr1?ߣ:b,._)>=zK8.< P?Y?/Ei?/u??܌p?Y\Y?½$ܽʀJ?q/r?(?j1:8|"/A?';? <?ZX?F1î~th+*D?\s?g?1+ D?C?X?H?"=!=$ X ?|+?0J>R#i?<5?GsR ) ?B+⿋??Y~l䄽"?4s'+ҶճsNd?d?}?a?2=,?3qV,@Z??־sq?t`,~x9x3KH?Ɇ?4U?fӿ>ythm<@?bƾ ^AQͿe@2Ⱦuj{Ly?Zʼ?3C쾊> ɽ璾2(?݋ACAN?J;)?U?Kn?2?]Fޞ`eb?O/Ͼx-?O̜3F GU]?+Y'Cw l"d?1P? ѽ?\~Y]俟?޿?I%|N?E4^?d첾?J??ep?`޽CҴc^?J-QĽ_?aRWzؾ~3>d|m)d ?HӾ ]DQ?9s?B+G?if?Uؾ{n?2kt(D?|)N?>GNf{?Cor?MT8ݽ]?$?jl?X.?vzz?X!?R&F.&?P(?-,@ /w? 0?y@?Oܶ?V\"?3_8FN?G?Q_?&:?{F?ֿE?ƾʿsA$?,?);.-eR0?'?|x?S/Ѿ'X?h8{I?@?+:D.Ŀeq~ <ؾ*н*?iK(0l),:?TI?~?L{s`tsX ,Pս ˠ/9d'YxS[ NA%?^bx! }̽ wT?|?f9}uȿ`?UgEu.Ҿ<ѕ?V?J$辰)Ӵ&Ǒ?)*D?TR>r? gD@[ <<(Խ(?澷B>-?)t?] R/ i?@Au:0l?)Fn4x .z>?Q"q\??>;$4?+f?P@?8p51̾݇ۗDg?%(?CR~޾q[?3v#/") "?;##PJ@?/6H_u%?"F?Cǿ F?Ctm??C5|\?9.q?;V ux?gXt(?45F>=O^[M?&} 5r?,?Ҿ?~m?gdƾC]Z?i U?@2?LH(?_?2sR?qBTܰۗ#;,5v?T=+(?Gv"> f?+?Fl=2оgd.鼽Pv?=۔h?H*?:nY?K{/?O?v??hǿ?l@i7@rp=? =<?A?=H?U?Q??Wd?3>A?\l0??.C5#MܽNl'EJ?e?RNP:?B/@sO7-u]t¾ ^:?QY{W$]+?;f-u?F޾.bI?L?IھS>&?E ?9V?#-_?QYr|?g?P?W褼%?o?q` 4 ?^:?,9Gα} ?#_ ?<?/Y0?AS?߾b:?I?58?Q 4=?ƉJ\пc* ?!fd?P?Pf?Lӿ?'Qξ>u?,?@?HO S26?.e>Ⱦ? 7)(rcʿZֿ ?H`Ő>?"l iem?O?/@5Fྌ ?3H?¡k?@У-RY?+`N,:g7R?H<3?8J<Ƚd=w? 8;!Ts}>%~y%ھ-j=qm?:"+>-?HF߼8ZץE;>?;bZ:;4JL?O+?H?BJy?A ?Ph7:?F׳:w$aPĘع(?d} <!?Z? ?wZ@?=il?r?R ʾ{P߽?*&l ?mi?x*Xy^?;0{\A꿉?{技?3?8m>?Ii2g&>v?JN@0: i(L8xvI>Z2:=,?<?ֿ?L0?m7?fzX?Uh?m?`ʽSvw8?4䊽n ?% ?0!.?ÉEse?;-r?s5a?"?IO<0q?m6Dݸ?::H?AD~?4y4 Jk?0,f?7?]-$?gx`>>?G?W?R?=Q$?Y%?0 "WV? ?^Pb.z?Xߢ?H4?7쾣JսCnۿ꾋@oBn?9ؽV??־@?Y hD?r?C?6?|?2:.Q)M?]?'j6?-?DD9Py.L?er]}>idN?`?' p:>?gܾ͈[?Fr?#4?[?%'bR"(?d?t??l???-`st?c?&B9x+A2׿}{T?ο^|?|ER[?-}ܓ?[y? nPT\|?X6"?M䬾cވ?x$RnB8(DZvz?E 39@ ps3.?ZVWO;U?S lG?=?Mt6J??о$2Ek?f`F??m."?KD?CW?FFbّ֧ixž"ʾ)y3?S⿔?X?@Nl?>N?>|޽X?8'?®?NZ2?,_쿋Z?&f?G߽b4wWХ>̢?Qx޾|0rͳb :?2?4n_<>?E,ci?Nk?l@_6o?UaPz>5yq+뿋+?LI-?Zؿ,ý {̾:?HL??&>'/S*wO(T?$C.AN@#?;?c?"F=@2A?dǿ?W?Ev<?Ր?6eFuG^?J=7>,! z?.p$!놾-1"Ŀ??4ֽ*ED4:?p:Iի?%z :?z?9>zs?=gr?LX?L?Bg|H?˿J?CI?2޾?T&?/Q:оOe?I]sfqrp??Uz8?BYcVh^_= ?w5?8?Vs5t]TDgH?[(>?'IV&?]?Y;*`bGw?Hؾn"`9M-6)<*P(_#2?`Y>>a?C*?갼,`?CT|O?[Ծ/?\6s }?fJL(K>m?0?jj,?^Je5[-[?yh`9,U?3U??NZj?;վ^?)?NA?JצD?5L ?(d6?!{><?MM> h}OR?_?<|?<V}4?G?</ؾx?B>?)[Yr?S HSkü 5?1.I?cn;䣾>?3?9i|i?JʾLo?7 xv?=&?:а6h?Lr޿Jl?G?-Wھ.H?4X(ɾK_? ?a'?O7?(d?f^?2<*?0@@?=vP?ҽJ= ?I,?оBm<Զ?<֘5<&7P ?jTa?8=ķ@= ?CkA?q-A3?jqax?gxf?a~@?|V?zr?HQd0*hp< ߢ-?H#u9-?J?I=?5?VQh8ҾR?($*?Eߋǽ$%A C f?vB?Tfҿ@? &rf?:[?bE'?8^!T?,r=PXsv ox?O?"'0(|jX???"d??A?iTY5lɄB(BbCB8?C)߽B?Hn?g]ǾAt?h?Pȫ 7?G%ӽW"?R8"?%ھm1'ޒ=?*?9Y?؛>ֿv?c|nտ?%B?Ɯg]d9TL?=M?&叾d#ƾu-UI? 0?J;?>#??A+=[.?0?Ω?L?9sd͞?;w4d->?C0ץ?5G[w"p?.?A\:?NC?dp0nPCP)>K?D޿d??9z?xO:!lL?ە>jH g?!?'Ba0?7?~?RZ?Џn?j??$&?HE*6>xj*$UN?EMÿ&-bS<@?=6?6*?RW?HrQa6NM09:Y$v$>Wn> n*-?B?bV$0w?>?C-?ڿVw?ݗ?L?-?φ?70=Lоsɿ?Iȿƙ?S:?K3Ѿf]?P4?Őo )\8?8^|?YK?R6Ym:?iZ4־s>߾?3ɾ*?a~?P>uɼXr>A{l?Ar*?ׂ?N?b z?U7t>y?F)о5(?P^?AE?H @V?L3۾^+R?1?ּ(0?Ӿ09el|%Pǜםiwi=澄D+;7t"e Gfo i=ξF?`>?# -8?G ؀ľW8y?T??Eybh?2?~?t5kB?q,?)??Aap?S?-?E~ Qgh>t 4?dх?fモ;ɾ( k{d?1??G&,+ ࿀>f$?%2?L?jP ׻?3?}?Bq <@?=k?mk?^l5& ic$?p:!tf?km?A;b?`B=PNVٿ?[q,y4*5+{G?OZob,?K=,?H8rwƽf ԩ?{*?Z?aԙ;5$x?XU-YxMh7?'FֽrR?].?ſ8tf6Z>?2vsG>M?;?(?F?M"?D^+d߾lY?f,?K:S?%{OF??PL?gRz?78?ɾ>wx?F ?)Ux?'L?A? оpzH?aR2?QQ?M?6о?8(3?`?MA}?T@*{>?Bi?N3R"9F?19n?-?;/9A}?>H?O+ վ<XT?Q^2?AJ/a龷וh?+H?Rz?GL?3#?Q޽b?;?9 }?!/?Juz{8?cnM?KjrY?43ޗ??ɲ?4 ?Xe?,S\?mʠ?-(UE?TǸ?$)fV?jLmE6\k;aU?؞x{V^?Q/?cMk=5ބ!a?VFgujB?qJ:Y=3*Ċ>⯾dQ4?j|J@n#?jVB6LTyxä̯d;??i\??ѐ?}?W2?8o?QM?CҿQ?Od LuY?A7d>?hu|Jl ?CYw+{Bi]R>&T~ɒ?BA?B? (Z?%Nꚾ?k]?7PP2h>M ?Mj?8֖e󿞳vPZ~<?4+j?X?0mVvto?s? (h?&i?~r=Z?=ZL??v?ԚP$bƲ??Hʿ{栾?hq?BU?(⾺0ܽ]??Tn?3ζ;6q?B~?(TL?%?R(3?4&࿕i{#H?C6?h?9ä?BG?&9??7/?Bn:4.\?L9l?6?F?ʿ? N@l?| X^?\ vRB?S=꺿?bDj==j?81ٮH?#F %?a^8?nbA? e\%r ;#uƼF\L\0?K1iL}f(E!?S,J?Z ޾l?j*?.$x+??9Ve?V=;T?7 ~u?FvI?A*󾖁;?,9"'?H~{$?:b6?O;?SCʾ}Q?Eb_cʿm/?Ihd Ը7/&??Zǝsn .'ݰ?B'6D?[:?:A-K?;?T GZkvdkg?&?B&Ծp?8?,NwLB?i9k?hp;ijwΠےbSYc=>?C\?Y޽8?"?R˰?;h!e]ྥq?`P`ξ*v?/LfǾRO\F?ar?%꽨>?Uk?1ؾ%t?@ѽX^@?P?)"$y8?,m?Go?7M2l̕?QtXxҿ?19M?B= ?L)dB/T P??IVeܾ`8?KUnp6h?G?fI^Xm6?а?Ds?^p_H,`"`?5?Occ7?$ʖϿ\B%1KK0?-.?h?5f>xu?l=c pU<є=xsZbV?XU'"=B>M>B?G?:zkxuC)&ZD`лN՘Ѿ*R:-?u?R?X 3Vh?El?Uxott%H=r?Vz?{^/?J ?ERϽG@?Z"xgid\J;{]?a%x?ӿv?,?fs.Z?UF(mF?DY?O?@yP=[@ǹ?W.⿚;?/O?(ߖ}3?m'?Fhc)E?qf޾j@ ҽέ4?@TQ>?%?/s=?"2?<~?H [€@s$6WH틽Z"?@*?}<++?N㼽T?/?؟ʾt [?萴?-Ѡ?![T??!p*?I5 #p?H꿈Hx?]?RKl|/!?&zA2}M"1?ϗoI쿿_2?X nK'?+־d?0ɜ?;$r3?5v?;Dm?:HE._ͦ +>g?Nཌ|?,]?):m\8+?@u??;Iz21|7?O\?,T4?7[@ ]ɾ}=-D?X?=$¼?LK8?f z>fp5t?+?oG+?y> ?d:k&>PٿV?h/?`W م ?_K-?$q?f%?l}^?6?&oQ@7p?., ?xbn <=QtؾV9?éy3-?<k&?2?KX޾?D?@?W??f nݯ?3?u`?e}?9 0|ZRsN?S(]*w4?1r<ӂ?L[!?jŽ3̾{?.ud?9,?W?#cͽN C>?gZb.?M?1<:DY\ H?3p?&?]U|?8r-B<1? ֮?L9g>#?BM+?\x?l?h ? 6=m$?]? Im=hb\WyO?FRHr?I?9y&XĽ{L?҃?Ok?ӣ'ͫ?#>^ʿ5:70='N=F?8K?7+o)?ccTQ4{j3@?vr8?i:$?[6ҿHl\(莽x?={ѽXwN?U}TɤM{?\F?-?V6$?g?/L?3>="F?-ϝ5]Ǿ?8v?k婿nu?{?>5R^?鼝?#z ?Qꢾ&h?/?GJ)K?7B=?#?Uv>?Md?.׽Y?jξRV ?8 Xi7>.U^`输{?D?.?{;3(?BA?TZý@uNǾ Z[?GY@(鿍h?42 ??2?a|?#e?[?Z?ڕ?߿)C?AӾ lj9\?`Y7¾A?Q?'u`?ɷ˻S?$U!K㾠[{ ?[:I?m?9h?3 7 þ:?@?(?h?T}` "?Lr]u?TSd?dʾgD?9HyR?`Q ?'辌m lyW?-Y?MXdk?B+?7侲|?հ;?^Os? GB4?5־)?.}D0?-K?? E`?H9:?0(ھ!6?452s%N?)QU?q?'lU?&OhȾ龆N־3?8׾H~?^?);־1??/{?Bܾ?1h?+>ײG܀?+Z?|?@ʾ2sj/@BfH2X&J(?ؼ?<6`P%5bFf?&'@?>]h?=XNϿ(?t7tE?GLUf̿gG?/.0?`aΒ?W6& C6\?Wz ? Y?=H?BA?]?:?COB}?IN?ab?`. ɀ?[𽿐Vc:z?m$?5?Uо*|3:qkO?vb⾎H=8?>7?U6?;==j*N!?$:lc?\|v? ?V-R ?Z=Cļ ?Q/fsV?0o?`@?F~nM<~`?=qd%?eGϢP?Z~̿¿?Z?O=5⿖$?6 }2˿ ?=1N?#zA?mE _?ʾ&Bʿ?oazn?/?R?PM?K?K.a@ǘ?=?7#i?G_?6 ?a? sx?m?? k?Ds]?<?_?M5=?0:R?@G?'%?˽=$@0abK?R@(xa|?7? +?K0us&rG? &??^Hɾ|'ܾɤ?.$[J@ Nx࿇(aLS?.?,ET?bZ[=-?t?2+\ε?"Bl:B)?)@nݾ?^پlרX<5?2 x4?7x?(ڿs|?NԾk^\,?>־Þ ip?/?KP2[?C?d2=^P>=8?c;H?=g<(`xԼ8x-8"?k`Wn* Mj`-R^LBgT`E( Z?c2@5>^?Q?޴=y,pI]?i?Z?Ox8?B@'H?ˢSY^?WhΔrriz?)9???'v _ls0cS}x?_kpX??"4?2?&';Yڼ?QY ?&XV>ꯦ?1 $߭hN?1?' B?-?KW?Qῗ?^VJ\?D?m{??S>ʾ{?j?2ϖC1z&??=ʼEp?)p?+@AEBw?&$ZϾZDxC뻆2n>\?1P?`R:?*n`P<0?Kɽrx?i:9?K~?q?1;/?AȾ?HF p?(?GeN?eTп?6?с?M>\?GRҾ?b~,4?Amxz@&0u@TP>?8'VpV?>p?E&?>c>Pdƛ ?.v?J( TĽ@?9޾W'Ⱦ@<^b=9 ?g?>Հ=VTN:8?k>.?^g\M?d2nì?ZT?״T'ni/w4y?9Oٿ ?BV=I.Hz+7'?\D_CЬ? 4?z[ힾī9?az0k6=R8?>YbzO$!?Qzb(?L?d?ٮ<-B?Iɰ?Nz??Qf5gh?L[?"rpD?G?(? 9?JA? _ ?6?U?e ҾL[?$e?& ?_L??\i'dq,c?D>?P?+?@wb?IU?q[?5?7.?H#X?B۾'%ǽݿvR?/F? 3"Rh ?S1?B?5?B ywۊ3`(?>aְ?rgDz9?VfV?2Ʒ7wIܿ_cc]lDO(^>B?Sſu߂$`?q (<ɨ?Dt?n鿏(u?p?4uBL:?w?-?w徃dh[7?>z?\h?E{d)Yu?[X*,?5Tq?*6?{S ?F ]钽@@B@MB꾸&o?Ne?V{?-d۾-[Pa? i=P"P<<6vy " ?\3p?յ!? ?/??S?PKK?IGE4)?'޾s?A,?+R?\o?fZ?8+?JfMȼ6?5Ǿ\zIvEΌ?r?(Ծ:)I?Cf?`.U?0ǏNc?G|-?b$?$?EѨ$?R?PB?<`?0/'S?$>?- 1?*?&Wm@~/6ۏ?ǁ?:?Y7??=ǀ?UZ>?P>??Ie?u5qz?8n?̊?DO?Ykn?E"k,{s)9 k6?ffO?Eլmr1XI1={ؿ M?Rޯ?IB⿗qbҿÜF?C ?A|! ?JMKĽk(?Rb?(5Ev夿^?PB?/o?Jv#z?kCx?py?V\P\'=qjOn?T㲿?1;ž:C<0?<HX1??0?fY?ѠW? > ?k?:Ν~*Ѹ?;?@۾8#?23UP?|4?4?V?W}#8?*%/P>濃X*?!m" .?o^?K;?:1?\rxj>V(^?$FuM}o??r?g`Ԧ?{.?P@*;B+r(4?+?7ʦ@ $c?AN?;2k?^/l ?a0ʾDLn3?/WI?,?8{,)wP?&q(˓mz?E]f:D_&b j¾_?@?@ҽI??>ֽꞿ 6?hc4?O ?Wz?xtU?RѾ Bпf;?rڽ뚼k?`f?>忔>???(7?jaܾ1B)?@?B-?4P}?!?M޽j?U1?:Լҏ@:G[T.t6?[?O崾"?92>G?*#ȿ ?S?Q)?Bs>L-?S`?*@?U?*?A\>A=f=`?418?!4?{hOq忉k¾?S?g?,ؿѫϾLdN'p>B,g~4"?ɾտ*Mx=]1?"T egR?3?L.~?8*?gܿ{P?/;ỴP??LoU4bǾy]^LH9s?My0?42񽩄~?3? ;ǵX?墽?-yT>HD?,N"?[?W.??M.E?Ž:u(p-B24M??pC?B\H-º#"]f?R?dE<1?L?EǗ =?M?lW~|Nξ'?DT?;J?BA[W?־R8r?񂿏/<|?N^S@ҽ緎>ǐ^(ƾp4>_h[2?ʞ@L>߸?4⽞ Y?\*?1lο?L H?,Z罕p k翓37o5?FC?O?3.>N:?O=?=D{?<ԾC݆?vʄ]V3mN?_)?5fžݾN\?dX0?66|}-."?X̛Aw?G6h?SzTd?VNz?8?FR?;Bdm,?r?OᅡGq~8V/tʾ?8p>:?T?X>?p;?-s*. ?@ ?>y? ?72Gf?:2zٔR+?EHW~9#r9>?Cc? #I??7?2:?tg~?"+Z?=($?0@۾ud!G?-'?=|Ti7&ݾvX?>~Ýӕܾvw%?/t?g\H;PDv/?2A?\Pº??Wa<.?>AX?q>?6ؿCXƦ|T?W_u3i kY?v? 0&Ht?I?+?7(-h?2ib?K쾕I?C92/АOzظ?'1&=p8섽(@!?zӾ*'?ROEuR?i[?CQ__ zB?AD4e?_ž,Tr?#C?&븾~?5Uw?8J-Կ48?ON]򿆃@?(|=$?3޾$V?3Ml"ܽ?nL?ؖ־??!V?EAwY?F"O?l)?HC?d,?B?(dL?Fy?!wL[?. YF}%? ?`?*H?,?\7?::n&¾p?v^?;޿.?(L?ef?M+=Dh6C??/:?8z:t?B ~?a"?,?:{?=) ?RuоǼq>=8?;?f<NtȀA?5<?+?Z)h?Tgdwg}$m?at9ަg2h?TL7h?E?-?0jb?[ d?a??R͒?M= ?fEHE6=t?9?·|?dz1O@pn=z?KeC ?XԾz9$?(׿H?+4`pL`?PX?>k(p޿i6?;lL?Y?}fj Eؾt?~d`0?\+/?JW7Bwʀ?,G#??[HqhB4??JȽxJR,?320 >? };?=, 7'Dq\hǾ?/ܿ)Ō>?c4?U ?N MDULgx :hv` %!\V3?#z??μ螸\^?lr|"?m?3r)@.?ep?ۮ?T?k*?(нhl>aۂ?BjH?:? ?ދ?z\En?<;?T;>??`?D俣 ?\l?1򊿏ᾌ (?d:?6~%8?''꿗j?-m?R;?F_Np$Tw6?CLٽi?HU?ARվƖbf?GLe??x?#F3&?A ?lڽҾ[&77Ƹ?,kξξt?I[򿓚?JMKZ+?M.? ?߉X}7~lryZ-վNسE˿c?idڴxR@VDfGpt ?t?h!G-?W@OϾPz?:k?*ј@,1@J?%,?H?-bG0?;p?[?, ( ?A? ?3]?f(>?*F?>O\R?e{wS?Rbҽ"4 (?Il?1?Y:?:j?^XF?5O ?^W?5:VPo9>h??_:7?>?4'?dc?ľtE?HВ?@G?q%οj?V?Z?"?!?Z-;0d&DA$?UJ? Կ49s?0\?H~?)y^;ق{v|Nq` ?*:؀*b?}1٢~?}ᮾ(?,ͪ~T0p\?O?6D?~꿕!?D5HL@@&2+迍&w*l?9?,z@?3:7l ?;憽@?>YLֽ!;?(m>Mtƻ?K>{?J.l(P`>i?4ξ'Bj2?*o?H^|\?ӻ?&t?j/Q>?^?ϻ?] LԽ[>ko~?%?FP5 ?$?FM4JCL? ~Zz׾Q?-'<[@??罬>??F z? n`a?GϿӾY?#4@?{ $0Ū^t?SpN?[LJ?=N?Tz?DA B?m֍?V?!?ʞ < >"{?:O??@B{Y<.t^=˾=Z&s(?<\~(& o?x?X?Y??I#X@?e?f!?N?)?硱^{Ͽp?GB?4}?QB\^?.ގ?AK<q?:?[\͵?88F2(N???-MKBYfI?38[e@?#{?^-?3켿 ?h?4E;>W4?FpN%<{r?j斾*?΋?ZLUSH?&%lHօBj#X??o>?6I ?:>,x¿Љx?qwE?MͿ??3? ھ6ᴾܦ?`a῍|Du|\#=<?)gJ?/7! Jw=q?=+)?bӠ~ ?pLGx?e>۟O$)i) <&`>ރ?\E ߿7"x?=TA?^Ҿ$=꽟p?.?jZ%)(rHD?qs>n?n?FX??aX?;FH?XHԾS =l? [*!Ml?`?ʊ.? 1d?Mܠ?C]?_B?SA?L~?ܴ?51'?G x>O?CbԾ?8m?ܖ>A??5N?Vֈ8Nց??~Uڿ we?e7?#9Z?.R-6?$S|?1D?CsFX?0aA?.?]?輶迚6 ,Mޯ0Ӕj|;?ZG!? V?RӼD ?w O?Q0־/K̾R 9tgҾ9z*$Q/?XF?W?6?a;?B̶=󤾽h8?h긾?9/@+>zBk .]?U?BK%q?+%?CJ]>ſB?=1?S/b;`!9?`v?YM?Bp@?]$xN}^kf#?O*/Q?QܿBӿ̿Ծwj?N3\?*&+??^2g&Pz?3=N?4?]A*1?4A-x>¿U?1(x?4B>;|?=SqOP?Tm:3?UzR 0?Vg1?ֿ>澦m r0;\(i @?;?p!?"?8h?:/?J̐V;ȀΣ?'B?hkZ?;ݿ!<(?jOB?4;?0sҶ?8Qs!?2py"D? m ˸ྊPd?(/޾' HsWLv;gO_(ƾaTMl?s@.v?+s?+@?L?V}dM ?;ߺ?@C.zG7?R{g?#XjԔ3,?61MI$|[~z0?/R[?Bf ̾Ȍ?WR?~?Xп"=?.Ͳ?%'33־/N^ZGRҐ??TO8Y?UjA?ls0sJ??<4jl \?:@YX*>?L+?6bO`?N_ˠ_: b?{Կc?RN;cM?<l?S !?5?B?L@h?Rv ?DW%?fn%"S_Ms?176.?':Sn?ߔ?%Wxȿ?2?j7OнMuʽiڽ6?$g?]>e?6D!GVל?R?wz`⾹ӀM=< P?H/?T,ʾ?|❾;6?PuGt½ n?O>ɠ?a(yH%JA?e?-=2?iuǽ^?o־\BA>^BgCLB3U?D?^&? o=Y_?]8X̾W ?h~YH?DN?Zj?KqPࢽ?y?9zȼ?-꿡m7a?P%]"D=k9V2,?@?`\򿶢F?kj]?%?EFXt=#D?3?7_t:7?)Xr?5_`bcdE6#?:?`?AF?g5tg?8F<ǃ?*X{l?:PUʽϪ4dƾ5L?9?_^r?hd?e?0B?L0?<>?C.>?p?v^>`O۾GYؾB4oH?az?+vXF.p?WD#n2_?ݤ?T?9?Dy_?;֌4?X?/1?Ss {;97Sqľ%UBʽ41%2 B3l?7^ڿz?k*?.T?h4?9 ~?/KV?*B?'R*.C%?˰?!_*"?P?"ҽcT? ~?8?1?E*?J>?NHz?m?c?꾰+RL?/0=Œ=J|X?֬G>W?9$>?K@/9|T>?3B?<~?T 92@0A6|BgM?蛽EAx?c?BY'?Ur ?Wx?OBQ?Ff?k"9?G&?\o?6=.Pn&S .}ڒ?M9.s?V9?I?c]J߶u @ھbϺ?NPL \ J? Z?5)3?]?I+?yrOV"ڰTo?d ?=Q8?(!8?1?4?ۡ(?7SN˾<8?cj?'s>8?T ?L /B'pka?&n?A]j?ި@Qӿql8?! ?:8оGƿ?M7}Sb?G\%?ǥ?I$?$Sk?L{[B!HA?K4???ބ|vz??"?1rV? HBߒ?5>g{?F')@..)Z[ݾᎾ ӛ>p?JSh?'?Wʾoѓ\?Q`?̾ Q¢?Iac-߃*[WI?O>?>DZ? ?$K?Z?Aó+龿?b?g{*$? ?G?H ?Cz?${%ԾT$"?&n|3?PF@n6R?4?U9?D,K>ڿʿ~C̽ rxQJ;?6?i?aZmI?eÔj켽)=!?UV?lx?S?v-=D~;tT@?ioѽ̈́ 0?YP]?Hi`?t(<4q?fjzG?n}?I0y?^?FJ^?3b-;?)ҧ?G4?H6?.o?&; 9XDM>IL?T?'WԾ?X&4?oC?T$Kxý? ?qbvg;a-^"?: Dʽ= `.=O?ֶ@/`?lƾk?ϖ?565^z`ir?BlI(?m?W?Gf{?o<̾O@ 6|rh? C;V@1ssl??)Ig{:? ?$?TVU?>^?HZ(G?.꽝!c_?j?' ?3&?~bs&4b4I?Z,ӽ*޾X;ڣ4?n(>NJ?Q .t F?6wX?Z~C1#o?N4c?m0vb??Ad?2@6 0?$Y@G⿉xp?Rнyl>?XԿo l==@? Ħ?G<+PԾW0 N?Q>ľJJ,?.~tۼ?S?Fcֻ7ۀpi?AVI'=x&(!;&?B.?]:F,짿˾T0 SPоX?iKcG2yb罵;?]=^+\d?3??:۾R/;F?Mt>"?2DoP?x?R?d#.pR?P?.T~R?{a??8=3\ (?fxybRN$?H{9?4X?3ă+n?'T?O(-o?թwY^]?@n?<%>5?81^,Ⱦ^k?>?cip :B?>Jk?˃?0[?Qub97 S'uC@1|?\@:و?\+?t?BDup(feU)?9?C?Ŀ6'?iBᅳ]?Y&v_?<u?aZ侯qr?>ױ4?2?dξڽaIbKN?2?NAΨ?ox'I?/"9UL?A)%k?P!tMqQ2??lz?Z8,m?U?6au/4侒@L8ƾ?N;h?fل?,7ҼP?Hg*o?::>hOzLĮ~CоrN?A32=9T޽вOߙ9?־:;?T`3I̘x?m?Ɂ[?SG?JұT?9 ;aϽ?߼?o ?,ܾ7?p>nQ?1Կ2t?'EM?ViD?d?޿P_m?7<"?򾃴&i?E?HVZdz$P?co?b55rܾD?EimzxI[o?]վ"?̮? RM?==*D;"?D3­%=ꀽ:*JX?Du￟XIK?A˒?fT?e~. ȸ_6¿/L?9<`M@?aԾPjz?-??g?7o?;L?Ir%.T?Hq?'?kR?3Eݒd?$5??Ԯ˾8W?;zF)(?FrE?^ Tܾ쾇_Ҿdg?O1B>Z?h +mUy? ž(L?1ܾq߫K!2w< @ϩn>գԾႾa(?L?2p?C k?B濕L?l4?0?9?*K?%??G6?3l^?B8?@Mŀ?L? l@U?60?3;?$??N?4 h+rJ?Sdi6?Al?S`꾌|Nf>??>t?K(r|L?8-]Sp?rT_H??#?&TI_lMU?ٗ?'2V?ބ޿ ?8*? Aa4?9Q<:qH㿃 ?HX?NTh|?i̷<'q6;q?A=Nl=?_>? ?=>H?inP?t@(?e?\?WV=g<;04<{Đ>?zʾT]? ?mA?d< =[z-X?kRo(?}z?ڸYg0?S,<2?b#AnBC?P3?Yn0?*?B)> ?}P?C^5?T֑?jR!?[?DSL ?U6Q(;oN?Zx?oLv"?+o?s̿?$=&p?A uD?Nc|?K:?G?T _/Jk2?Cs?FϾ*qȿ?2%x[d@-Bp V_?F•?`l?A?N @^NtC>?ͳ?7DмpR?+bɽȣx?2?Tqʽ?"љn_r?@۾Ӛ۫?=|?"(?>ge?L^H00QD1v$>"Z?>0&?D&].?p* ?J?nd{-TY<ޔ?eIe>?O˿?|p++`?l% ?em #=?6>w?R8_d@?pQV=?8Pu?g?Lb+dSp?-tq@? ?s?2LX?]lw?V!@?k]N97?^9?Bt?\tK.,?J뾅Z־Ƚ4 GyF?X[CԘB?@o??E=|s!x?/:?m޾ic^{h_T?Pb?*/?l?-r?Nv(?J4Ӌ?X8KH?]e? oD<ЍD!>Sc= ?R?h%?7`L?>J^\?=~?ß?y!1?~@ANaOoyۤ.#?O +]_@? e?Y8Q[XP?Luc?F龛fnwp?M?6.2~@H7?m. `tcV<\?^0j},?A lx {]? '?EڈRUdP4 ?I`? ?@h'\`=ǡ?E]K?Cؾx?G짾J8ݿt1?^!\졽^`?7RĿpت?HkC?,?NO?)MA?@uD?>r?P ,k2MB?30,?0ܿ5|?L_Ѿ\@lh|?#/ ?zQ?1p:-m#+?;:l>ؿnTI =B`2?GB̿վ:?j?"[8?D|,rÈc(?٦?Axc=LM A?` :-?Y5<7?5<`?(=\`?X Rw,Yп_Q.?1?jX߾J/> h?5AK?2Tn +~=?5I?E6LؽO,Tr?Mj?,> ?:@BJNA?I?*ҽ~?,Ł?U#?jfZu:$j?=%;lM<辠]?gy ^E>dT?4Tƪ @/ ?.?VcorX??Ewc6??P?.Rh `?5f ?Uپv?-াLk?b2;?}>Z?kx9?+F?Jv䨨<(?B,?:>a9/Ǿ$@$?=Z?YԿ?$?6<˫!Wϐ?!K?N;ޫgT=ܩ>P?p?Vڨ.oP5?%>?Y<?Cy*dF?B8?IB?}?ꩫ?Z??] MOά?uJ+P?̛?P4?VU:&??`ZĽN?l?+ KQ?Dd;2N??A9%^{TĽ2P?r?ZUоu@?8-?- GO$?W؇c9?x ?_+P?sT,C@?R "=`?I2l=[2&WȻ?*?T&?@ۿw-=?ܵ< ?ڿ%`BW\Ph<=y྅Z=?sV q?m>?%@?H?:?g'?1C?$W?l?0`?JV.? ,D?BE6oCf՜C A,?? U?NϚ?Y??<-?(xk?`_c<|3̗ν"(Ⱦ%7\?%|H0J( ?1dT4 MW?dtO?0^B?[?(sr.۬s)o?2AH?쾉F?裮#?R?+?AU??.係Jz׽?;f?3jqxUh?tIҏ MH?:Ӿy?GiM@)j?&V>h".?<%?KU?- ?-Zܾ??H^D?//p.b@?4mվ9 ?4j?a(?l?-Yx:?/?1tb=?T?-?X@??Dx<o{L?N ?e?9QJ? 2(?Up==v?AP?xH ?ܾ?QǾlhI?fm`?T!?G?F|?63?A(?:?O<,k?.c?J}@F@?H3? }ꄾN.JZ,-?ZK7?:?i刿?MI?=B?7 @2:n M$$?M?=dD)^(ξ6< .?P,?.|l$̽ҽk?59T>ve?;*L?<D;V?F?=?IZl?,?DyI&,:G`*`?3?Q^yɽ(?R\:k&?);?-.?JgQL??X?*0?̑h?K?4aR?1?-ҾòO?)T܎+W f ؾ ʾX:4<? ?SN@?係nQu`?pP?\ ?.ڱ?K?1TXRtGF`2?T?3MތB2jl9j?'2+?Q?zp?cWv?Aſ4sǐ=sQ?GؽԾ]IO$? (!??߿k'?d~v?;Fv?!Ƚ??J۽?9h= 8?gtά?Pkt?M?>uO?6jg@?f"B?H?/̊?,%bp??2k?V?^;ԿX,/ڊ??L7.?KCh?+?Pv{WD͜?@־=<\H=; (>@?:0迅˾ѻwℽ!THJzXi=𫸾GJ,KVɿ ][?L.,˼x|L?,2deо\?=0c;uـ ?SY?I?ratz,-^?&?ME?9*gD?R,??E?X"!$Eʾówj.:ITHxw4??Iv#@5 ?Y?2=He}?N0r?]h ' t5>zʻL?ɗ𿃏&?\?Pt/[";P?_Xg9?.BAƿxy=l0U@=j?4e?q[;?]?ZRD>?D\?]t?P 8?EH̨$?(k$?s&>;?J~0s? ?WP ?i >g=q&l?0b?@^?`?ZG>iz?qɾr?d?:|??W\ټ@*ފ?_ 08Su'e?*?Dأ?k?@I?+/?Xm?DrýD?BP?RFF?mZ1<>„9Y|mԽV?,.N rEBr@jDKVcB @v?Jv-.?%<4?i?MzZb?E?aRվX@k)3K<'D?`?Tlfi ?twF wO`?'?4OhXf?SpL*??Z8(?FFX?SHe?T)n?:F ]ܬ= Z?w?볬=?Tڭ????m?M0~?Ufx?tE?Vǭ59?9Ⱦimc iK?Ё52Q&?Cb?jR?at 㤿\n 4?fm?@f?J?C)n?:^n?Fo辖vpq>n?M\_ ?<"?1yݑH?9cfE|%=ʤ?%p^o8?2~I#@?FhGJzgI5?dD?)?,V?N?ٔT?򟿁N;\$?T ]?_d ?A]?\!?:.?1G?gFra(>? y?F?0+q?I?;SnԾOKп}?; iԾ%A(&w?=HLkV?XRA `Ծe?*??i޾₩?T?7?M1x? >?bž| ?SؾTֽiS?fz?(߻[aAH@C+AϪ?VKT8x4߿*?[L? ?q?zBA'>X@?MB޾ 44?qjξv?;j|齭uF?`m=Fc\4.Հ?^?&??5W?`?I6?UX?P?DR=s?N"?"vȾnѾS}wFg?tӾ ?e?/?B;\?8)Ҿ=pJ>6?D^?et?$f<%~C?p?J5+"?܎tY9LD?b`L?CТy?9LWx?@o?g?%Ol?F 7 W,lgJ5Jk?L3 E6/1?1᤿?7,¾ 7r3?ek\t?;,?W"뿘\tB$'?Ჿ?Vl~k<?ds>!;u`g侒܎?g8n\?;?X `q?Gk??0\v?,A?]<5Z2弾!??Dx?R#B9?D?̒ξb?#>M4kg$?ؾD?.q.@'$A!k=X?:HUVd6ZIj?YD?p ?IK| 6=zꍾY?t%teA2ZJ|?k>_`?L{;\kXV?SwU?Vֿq>?QYT?Xؽ6ܿ?ZALR6xnF?2?ٜ?06?T =ۢa?Af?m:뽳2u?"!`I|gj@)cs?@Tv7TS[P<?>ML?5[ ܿ d?x?Z~ ?nV?ms???+ij~V3OV??YT@(\kԾa A?I[?b?a3G?J?@TTv,M6FP`:DpUsf?dB~?U 8~kt?j輾DY?RiؾCL,x>?4?DR `?L?D0?_@rj?\?L=# >?)?T?Q1þt PlнϞ@/-Av?*6? \{??-?N?ݶƿp~ Ѿ-x?0?3T?BG ?HXTENSION= 'TABLE ' / Ascii table extension BITPIX = 8 / 8-bits per 'pixels' NAXIS = 2 / Simple 2-D matrix NAXIS1 = 796 / Number of characters per row NAXIS2 = 4 / The number of rows PCOUNT = 0 / No 'random' parameters GCOUNT = 1 / Only one group TFIELDS = 49 / Number of fields per row EXTNAME = 'u5780205r_cvt.c0h.tab' / Name of table TTYPE1 = 'CRVAL1 ' / TBCOL1 = 1 / TFORM1 = 'D25.17 ' / TUNIT1 = ' ' / TDISP1 = 'G25.16 ' / %25.16g TTYPE2 = 'CRVAL2 ' / TBCOL2 = 27 / TFORM2 = 'D25.17 ' / TUNIT2 = ' ' / TDISP2 = 'G25.16 ' / %25.16g TTYPE3 = 'CRPIX1 ' / TBCOL3 = 53 / TFORM3 = 'E15.7 ' / TUNIT3 = ' ' / TDISP3 = 'G15.7 ' / %15.7g TTYPE4 = 'CRPIX2 ' / TBCOL4 = 69 / TFORM4 = 'E15.7 ' / TUNIT4 = ' ' / TDISP4 = 'G15.7 ' / %15.7g TTYPE5 = 'CD1_1 ' / TBCOL5 = 85 / TFORM5 = 'E15.7 ' / TUNIT5 = ' ' / TDISP5 = 'G15.7 ' / %15.7g TTYPE6 = 'CD1_2 ' / TBCOL6 = 101 / TFORM6 = 'E15.7 ' / TUNIT6 = ' ' / TDISP6 = 'G15.7 ' / %15.7g TTYPE7 = 'CD2_1 ' / TBCOL7 = 117 / TFORM7 = 'E15.7 ' / TUNIT7 = ' ' / TDISP7 = 'G15.7 ' / %15.7g TTYPE8 = 'CD2_2 ' / TBCOL8 = 133 / TFORM8 = 'E15.7 ' / TUNIT8 = ' ' / TDISP8 = 'G15.7 ' / %15.7g TTYPE9 = 'DATAMIN ' / TBCOL9 = 149 / TFORM9 = 'E15.7 ' / TUNIT9 = ' ' / TDISP9 = 'G15.7 ' / %15.7g TTYPE10 = 'DATAMAX ' / TBCOL10 = 165 / TFORM10 = 'E15.7 ' / TUNIT10 = ' ' / TDISP10 = 'G15.7 ' / %15.7g TTYPE11 = 'MIR_REVR' / TBCOL11 = 181 / TFORM11 = 'A1 ' / TUNIT11 = 'LOGICAL-' / TDISP11 = 'L1 ' / %1b TTYPE12 = 'ORIENTAT' / TBCOL12 = 183 / TFORM12 = 'E15.7 ' / TUNIT12 = ' ' / TDISP12 = 'G15.7 ' / %15.7g TTYPE13 = 'FILLCNT ' / TBCOL13 = 199 / TFORM13 = 'I12 ' / TUNIT13 = ' ' / TDISP13 = 'I11 ' / %11d TTYPE14 = 'ERRCNT ' / TBCOL14 = 212 / TFORM14 = 'I12 ' / TUNIT14 = ' ' / TDISP14 = 'I11 ' / %11d TTYPE15 = 'FPKTTIME' / TBCOL15 = 225 / TFORM15 = 'D25.17 ' / TUNIT15 = ' ' / TDISP15 = 'G25.16 ' / %25.16g TTYPE16 = 'LPKTTIME' / TBCOL16 = 251 / TFORM16 = 'D25.17 ' / TUNIT16 = ' ' / TDISP16 = 'G25.16 ' / %25.16g TTYPE17 = 'CTYPE1 ' / TBCOL17 = 277 / TFORM17 = 'A8 ' / TUNIT17 = 'CHARACTER*8' / TDISP17 = 'A8 ' / %-8s TTYPE18 = 'CTYPE2 ' / TBCOL18 = 286 / TFORM18 = 'A8 ' / TUNIT18 = 'CHARACTER*8' / TDISP18 = 'A8 ' / %-8s TTYPE19 = 'DETECTOR' / TBCOL19 = 295 / TFORM19 = 'I12 ' / TUNIT19 = ' ' / TDISP19 = 'I11 ' / %11d TTYPE20 = 'DEZERO ' / TBCOL20 = 308 / TFORM20 = 'E15.7 ' / TUNIT20 = ' ' / TDISP20 = 'G15.7 ' / %15.7g TTYPE21 = 'BIASEVEN' / TBCOL21 = 324 / TFORM21 = 'E15.7 ' / TUNIT21 = ' ' / TDISP21 = 'G15.7 ' / %15.7g TTYPE22 = 'BIASODD ' / TBCOL22 = 340 / TFORM22 = 'E15.7 ' / TUNIT22 = ' ' / TDISP22 = 'G15.7 ' / %15.7g TTYPE23 = 'GOODMIN ' / TBCOL23 = 356 / TFORM23 = 'E15.7 ' / TUNIT23 = ' ' / TDISP23 = 'G15.7 ' / %15.7g TTYPE24 = 'GOODMAX ' / TBCOL24 = 372 / TFORM24 = 'E15.7 ' / TUNIT24 = ' ' / TDISP24 = 'G15.7 ' / %15.7g TTYPE25 = 'DATAMEAN' / TBCOL25 = 388 / TFORM25 = 'E15.7 ' / TUNIT25 = ' ' / TDISP25 = 'G15.7 ' / %15.7g TTYPE26 = 'GPIXELS ' / TBCOL26 = 404 / TFORM26 = 'I12 ' / TUNIT26 = ' ' / TDISP26 = 'I11 ' / %11d TTYPE27 = 'SOFTERRS' / TBCOL27 = 417 / TFORM27 = 'I12 ' / TUNIT27 = ' ' / TDISP27 = 'I11 ' / %11d TTYPE28 = 'CALIBDEF' / TBCOL28 = 430 / TFORM28 = 'I12 ' / TUNIT28 = ' ' / TDISP28 = 'I11 ' / %11d TTYPE29 = 'STATICD ' / TBCOL29 = 443 / TFORM29 = 'I12 ' / TUNIT29 = ' ' / TDISP29 = 'I11 ' / %11d TTYPE30 = 'ATODSAT ' / TBCOL30 = 456 / TFORM30 = 'I12 ' / TUNIT30 = ' ' / TDISP30 = 'I11 ' / %11d TTYPE31 = 'DATALOST' / TBCOL31 = 469 / TFORM31 = 'I12 ' / TUNIT31 = ' ' / TDISP31 = 'I11 ' / %11d TTYPE32 = 'BADPIXEL' / TBCOL32 = 482 / TFORM32 = 'I12 ' / TUNIT32 = ' ' / TDISP32 = 'I11 ' / %11d TTYPE33 = 'OVERLAP ' / TBCOL33 = 495 / TFORM33 = 'I12 ' / TUNIT33 = ' ' / TDISP33 = 'I11 ' / %11d TTYPE34 = 'PHOTMODE' / TBCOL34 = 508 / TFORM34 = 'A48 ' / TUNIT34 = 'CHARACTER*48' / TDISP34 = 'A48 ' / %-48s TTYPE35 = 'PHOTFLAM' / TBCOL35 = 557 / TFORM35 = 'E15.7 ' / TUNIT35 = ' ' / TDISP35 = 'G15.7 ' / %15.7g TTYPE36 = 'PHOTZPT ' / TBCOL36 = 573 / TFORM36 = 'E15.7 ' / TUNIT36 = ' ' / TDISP36 = 'G15.7 ' / %15.7g TTYPE37 = 'PHOTPLAM' / TBCOL37 = 589 / TFORM37 = 'E15.7 ' / TUNIT37 = ' ' / TDISP37 = 'G15.7 ' / %15.7g TTYPE38 = 'PHOTBW ' / TBCOL38 = 605 / TFORM38 = 'E15.7 ' / TUNIT38 = ' ' / TDISP38 = 'G15.7 ' / %15.7g TTYPE39 = 'MEDIAN ' / TBCOL39 = 621 / TFORM39 = 'E15.7 ' / TUNIT39 = ' ' / TDISP39 = 'G15.7 ' / %15.7g TTYPE40 = 'MEDSHADO' / TBCOL40 = 637 / TFORM40 = 'E15.7 ' / TUNIT40 = ' ' / TDISP40 = 'G15.7 ' / %15.7g TTYPE41 = 'HISTWIDE' / TBCOL41 = 653 / TFORM41 = 'E15.7 ' / TUNIT41 = ' ' / TDISP41 = 'G15.7 ' / %15.7g TTYPE42 = 'SKEWNESS' / TBCOL42 = 669 / TFORM42 = 'E15.7 ' / TUNIT42 = ' ' / TDISP42 = 'G15.7 ' / %15.7g TTYPE43 = 'MEANC10 ' / TBCOL43 = 685 / TFORM43 = 'E15.7 ' / TUNIT43 = ' ' / TDISP43 = 'G15.7 ' / %15.7g TTYPE44 = 'MEANC25 ' / TBCOL44 = 701 / TFORM44 = 'E15.7 ' / TUNIT44 = ' ' / TDISP44 = 'G15.7 ' / %15.7g TTYPE45 = 'MEANC50 ' / TBCOL45 = 717 / TFORM45 = 'E15.7 ' / TUNIT45 = ' ' / TDISP45 = 'G15.7 ' / %15.7g TTYPE46 = 'MEANC100' / TBCOL46 = 733 / TFORM46 = 'E15.7 ' / TUNIT46 = ' ' / TDISP46 = 'G15.7 ' / %15.7g TTYPE47 = 'MEANC200' / TBCOL47 = 749 / TFORM47 = 'E15.7 ' / TUNIT47 = ' ' / TDISP47 = 'G15.7 ' / %15.7g TTYPE48 = 'MEANC300' / TBCOL48 = 765 / TFORM48 = 'E15.7 ' / TUNIT48 = ' ' / TDISP48 = 'G15.7 ' / %15.7g TTYPE49 = 'BACKGRND' / TBCOL49 = 781 / TFORM49 = 'E15.7 ' / TUNIT49 = ' ' / TDISP49 = 'G15.7 ' / %15.7g CRVAL1 = 'right ascension of reference pixel (deg)' / CRVAL2 = 'declination of reference pixel (deg)' / CRPIX1 = 'x-coordinate of reference pixel' / CRPIX2 = 'y-coordinate of reference pixel' / CD1_1 = 'partial of the right ascension w.r.t. x' / CD1_2 = 'partial of the right ascension w.r.t. y' / CD2_1 = 'partial of the declination w.r.t. x' / CD2_2 = 'partial of the declination w.r.t. y' / DATAMIN = 'minimum value of the data' / DATAMAX = 'maximum value of the data' / MIR_REVR= 'is the image mirror reversed?' / ORIENTAT= 'orientation of the image (deg)' / FILLCNT = 'number of segments containing fill' / ERRCNT = 'number of segments containing errors' / FPKTTIME= 'time of the first packet (Modified Julian Date)' / LPKTTIME= 'time of the last packet (Modified Julian Date)' / CTYPE1 = 'first coordinate type' / CTYPE2 = 'second coordinate type' / DETECTOR= 'CCD detector: PC 1, WFC 2-4' / DEZERO = 'mean bias level from EED extended register' / BIASEVEN= 'bias level for even-numbered columns' / BIASODD = 'bias level for odd-numbered columns' / GOODMIN = 'minimum value of the "good" pixels' / GOODMAX = 'maximum value of the "good" pixels' / DATAMEAN= 'mean value of the "good" pixels' / GPIXELS = 'number of "good" pixels (DQF = 0)' / SOFTERRS= 'number of "soft error" pixels (DQF = 1)' / CALIBDEF= 'number of "calibration defect" pixels (DQF = 2)' / STATICD = 'number of "static defect" pixels (DQF = 4)' / ATODSAT = 'number of "AtoD saturated" pixels (DQF = 8)' / DATALOST= 'number of "data lost" pixels (DQF = 16)' / BADPIXEL= 'number of "generic bad" pixels (DQF = 32)' / OVERLAP = 'number of "image overlap" pixels (DQF = 64)' / PHOTMODE= 'Photometry mode' / PHOTFLAM= 'Inverse Sensitivity' / PHOTZPT = 'Zero point' / PHOTPLAM= 'Pivot wavelength' / PHOTBW = 'RMS bandwidth of the filter' / MEDIAN = 'middle data value when good qual pixels sorted' / MEDSHADO= 'median pixel value in shadow of pyramid edge' / HISTWIDE= 'width of the histogram' / SKEWNESS= 'skewness of the histogram' / MEANC10 = 'mean of a 10x10 region at center of chip' / MEANC25 = 'mean of a 25x25 region at center of chip' / MEANC50 = 'mean of a 50x50 region at center of chip' / MEANC100= 'mean of a 100x100 region at center of chip' / MEANC200= 'mean of a 200x200 region at center of chip' / MEANC300= 'mean of a 300x300 region at center of chip' / BACKGRND= 'estimated background level' / END 1.8263118863080002E2 3.9396336734110001E1 4.200000E2 4.245000E2 -1.067040E-6 -1.259580E-5 -1.260160E-5 1.066550E-6 -7.319537E1 3.777701E3 T -8.516000E1 0 0 5.1229798573999989E4 5.1229798742000003E4 RA---TAN DEC--TAN 1 3.166452E2 3.166715E2 3.166189E2 -5.064006E0 2.552170E3 4.182382E-1 632387 0 1466 0 16 0 0 0 WFPC2,1,A2D7,LRF#4877.0,,CAL 3.447460E-16 -2.110000E1 4.884258E3 2.020996E1 -1.756510E-1 -1.216810E-1 1.033711E0 -1.983727E0 1.295800E-1 3.129676E-1 4.577668E-1 3.916293E-1 3.115222E-1 3.295493E-1 -3.676353E-1 1.8262552336340000E2 3.9412143138150002E1 4.235000E2 4.140000E2 -2.756050E-5 2.082210E-6 2.080210E-6 2.758710E-5 -1.995751E1 3.740623E3 T 4.316380E0 0 0 5.1229798742000003E4 5.1229798910000017E4 RA---TAN DEC--TAN 2 3.540573E2 3.540761E2 3.540386E2 -3.379329E0 3.720573E3 6.385469E-1 631340 0 2072 0 25 0 0 0 WFPC2,2,A2D7,LRF#4877.0,,CAL 3.382652E-16 -2.110000E1 4.884261E3 2.020992E1 -1.896807E-1 -1.899146E-1 1.053666E0 -1.947547E0 2.564496E-1 1.057321E-1 9.952926E-1 8.409855E-1 6.534808E-1 5.836062E-1 2.101429E-1 1.8265237923050001E2 3.9410944281389994E1 4.360000E2 4.245000E2 2.239130E-6 2.754260E-5 2.756840E-5 -2.237040E-6 -5.853249E1 3.282136E3 T 9.464340E1 0 0 5.1229798910000017E4 5.1229799077999995E4 RA---TAN DEC--TAN 3 3.066676E2 3.066541E2 3.066810E2 -3.713645E0 3.282136E3 5.217843E-1 633259 0 1551 0 7 0 0 0 WFPC2,3,A2D7,LRF#4877.0,,CAL 3.372288E-16 -2.110000E1 4.884255E3 2.021006E1 1.109185E-2 6.184989E-2 1.003236E0 2.821703E1 1.669304E0 3.472891E-1 3.272150E-1 6.145074E-1 7.027547E-1 5.681439E-1 4.761558E-1 1.8265002235500000E2 3.9389460441680004E1 4.230000E2 4.210000E2 2.753580E-5 -2.509310E-6 -2.506890E-6 -2.756240E-5 -7.241166E1 3.420240E3 T -1.747980E2 0 0 5.1229799078999995E4 5.1229799245999991E4 RA---TAN DEC--TAN 4 3.117072E2 3.117648E2 3.116496E2 -3.289304E0 3.420240E3 7.084697E-1 628289 0 1816 0 57 0 0 0 WFPC2,4,A2D7,LRF#4877.0,,CAL 3.464660E-16 -2.110000E1 4.884256E3 2.020999E1 -6.813275E-2 -3.253493E-2 9.846212E-1 -4.591252E0 1.359666E-1 4.015671E-2 1.129934E-1 1.897491E0 9.687142E-1 1.053770E0 3.466465E-1 libvips-8.9.1/test/test-suite/images/avg152T1_LR_nifti.nii.gz000066400000000000000000020163271361153320700236670ustar00rootroot00000000000000_ ]Bavg152T1_LR_nifti.nii{ɺ}`vwbf-Yd-flY% 2IN4zt9kZ{χzv}qN[{?w/_n|o~,Z swI#2Eݲ^:N/Ww}o~G޳gyyyygB~-(((/SQQQqqI)x"7˨2jiEb*)++(//+)-G䋊 3J{^MHgWTVVUWMu'(4 QݻG+).-/@UWWBTUUKJ4BLG[E[\\ tkA7WSsSS#xr?.L؂۠yyWaD[IYEeUM- UP_[]UQC) [}vi3|S Dw`hxdtxpxxxhppCmoQN c$HK*P-]CSs KKŹ驱*R]M `C].F{pdv Jiu:N!Vg:AA"VXPXx07H A\q.D7 L,LHm7*DZ[.NtVUG3̸݈C{pb)4:jYNYzݦN\nk.G6"y ҝ?dTTT5v/ْ  ^_4٭F_ko/MI.a^n!f%%UiKeuh4'x4'{xeK+3ͨvaVΌLaU׵v-j7%wbѝh,<;<8#spzy:ݍ?FFDOK}U9 Ny+iW1am.yr(uhN< ɃOFf/ h/(%umstً'7{@$PȌa^B]lm4\tHj;fwtw'vz@"D# VAf}V A` V%E X'KV^` ًA ƅl6ӶzkS7ك Rѐ/spB~,(3u `~^>XHW7t-oÉh" {np FCQKP2:P.lN Ձ0PW򺤪u v8 1r Gbh4`3,`(]rwmyŕիܲX)T6B.qRP4 F žWOGeI{A~!gwJ7MYiFj4/w޵ &١?է <*66֠;YYi G!d"˷˯o䡦<.m%;o~gG10̈́imEշ ,s;`ضy#]ip}pW!_H!Bu׵䮍`0L:&o~TY_^Z]PRзy_\'C`[i8Cu.u NbkQϮSp9}oUVp@{V۷w#-4ڷ @;ms\h|7?Y9RS ť,˯zv QɑC;ԡM M4W@[S'L:}0ڕ|$_}oަ`# z0䳟yz.#M NEZ,й񦂍sDĎ>WζוA9ѧa DWΦαYR\s*35Dߊ]z)2s s8"k))7AuLo~&3K|󡇿0^_?EVh<cUƺY&<mJq==  5pg_# ed?x]+*+jچ)dŢD|Dg ؆W6O?=I\?k}l?]B~_;u_NL <)BeHye՝'{`|tڲ{J^yt?_C ^"S$et>IŌwJKaGy;Oك{14CA#5S|O:r_5Z]3>qD<6e3ɋu%%E%%]KC~>m"x{}*h ޼|x+@&tʁr /q6k8_oMX#K?|#[hsx܈F}VhؖMѰՕu3 h2\J\l)+'#xFv3`}yirTޏl"^<~* dW}uU% O"%<euqvި.-nYeI7-UEYix}F;q«quՕMg4D$I\&vi~ VU4M {'I09EvIEcn#~W'^[nGjA^׏ήB%ĥҲ5ܶw# { 4-I#ͮnbWWO^95FTMUe!*bOYZ먭DuvL.[ӫO]rx?5#>6æsk=zxV Vgۛk'fVنJ-Hّe;:ztuUa+J vEc>׭Y%,-̎v4 xRjKu`{K&0x㩫ԑOEj}#GNaH"c(uq6Lvalox"P3W&ttJ>8=ڱcm5 yiwť5M}K-gh'oEѡIDRn%- 3><4Kd :#{:9bX[-4Xu!).meH}{iQ+u Ut|C#N ܟFwwQY@Ֆa绅E5cXLB>f6tC:DbX2vصr.a*:x~^V:0[zD.&{]R(-BfpՎH<쵃]N .nnD,yFNxK+QMKx2KU[шmC$ؐK6@nwB^',Mu5AX\!8@dH(G?UƶѩEWl%B 4.Zd\m=;1T49#|tZg]>)"j2"ݣHFG<)˳͍%3KAdp⩮E5wvLm^!:&z͢չ 1 Viu~/WYY]Soh#5zTtL\ ‚mm@V<((Ȼ}%_^qO1'D-+ZUS?KkuRgIMv?fs[R\T{GKn̴9ڄp2X 9yRVBUƒ4FD2yYiviaMF Wfzˊ 3, TyΒND)1 W)uCcsx-OZn)/D8l8WV97闑/ȿ#i Ζot&a$93|LV3ݑ;eOUoVR:42EZ9L\l)+uOBI5 U>;M`lrUuƓ)T:b2LB"bf'Fڛj cV8Tᤂ4ISk P5 oxzʍ Ʀzk d".BXhvWTF2Ir$fE񵆶i4%6fjq^f: =3XWU / 933Z-T}ꚺ&IJF&1yq4C fÍ UyY|PRQQ7(큽#?899KēAإfL7*K#-od iUgnb' D!v| FR$ilfا*i:y| <>>?~8w 3m `C4\D"cO\u|<{ty~z|0uˤC:] YLcTS^dL\|^"H$d, B/\j80ذaHkVx>~px`( \wx$7/^]YūS-+ ?(i4'UTԷ -2^xzqG"~x=d O~gaǻA@kh@ӶC={z GAF#ԣ?^r' œO vih\z*(%rd?볽H 2f0?ݫGOt69(ķ(UV7८Ǐ_$bs;M_>7xn1ٹzz߱AmF!0XgW CG^t8@Tz8=>gWMw5B׀4 9%~~x(pNb2v| v6{pp7 $J&3$aN5nzvyu9.nlfniجn/hfٝN?$Oj,0${BZ]Z^]г7D;{Dq;\Nl5hͶQ7VmVluˏ?{7Hcmuՠ "X#$/ vFi75*L"ruF`r:|>7HXަ"B| > FvHm7LV VÖREB>͗MlHYhܯFP`miHesUm$Yb#`0sZ ȇv'5:'IDr׶l[lv MJBw}5XRe8dW7.7]`<9p(4D|&à x,JcrklhGm m%p5w0fo:A+\.]^Z\Xי 'x &e%ȑH򊺎i`r\#ѵ4nl!Ʀ0`ч^ZZ!?7TUA"ꯨ^ I5Ie̜qȸ%#'QWˋUOkc-uc^Aie o"2h6TY\->8 ,BJ|:~y O)ZkLPL- u@z]P 9YF*|pq9ᲩKl+j::ۚiBDWs1&wB ))puHy GqԱ_v^]n{;[j ;&zzItiqa;t@ul6 Q>ElǏD׬^k˨:muq``fjmt@-ktm[R T<:c1#+c h"29bfF:Lw; ,S^^J`ftx|^=kybtbi#/,)ɕU4^r1S،aU, F&fg ؂CI^[0b:TD844&2Xt<ǒ(,g R+KxJ% Kج9DgVqh,\ v! Ƣ,u!SbS%ØA| D2_Y9if+xȮS["*~N'ZFVH 6ɒ4^~;)GY#4:!PId1u&N4䶀75R0hkY4a*g[eP rkL>b2aV=J4|6N_h,Eu-IL@iŌ';ކC*U(Tr! :'m,m0pیbm8R]\]5BaJ Dw5DB&nu:Vv$$XC!n*~ϢF[k J{LbSoRWn7jtFlTVy;G=|abzieuTwCeI~qyMM5[6bCD|.+XجmrtLI=Qo1No봃pV;k V4 nlmF0iTmۖAiT#xo 򵙞҂{-$/\0W<= l<,A_} o L c';FJ_])BƵMm{CaQ (?%/lrq{Y% XnǃFUvg|38Pk;fyRݨށ٭ 갃LV<$r6ͽ{Gϣ[&Tt#OqmװȘw3*X֙]w5;&峷kM Zk^o?o?w: ;51lLkn>\Z]R1E}I2`7/-bD6zu() c8J3hXH̎ LQ]t{bG}-ֿuɷ?[\e_~tqS}mókJfT0?mOzd$"O?;pk]3G~M>%D7uM ) dr1q j\`\$zog>?ת[9_}$n5n%o+zT:TuM0-V,HÍVVVֶ ^?3 @G_|{c]//2f%MC?{0]h>Bc"]*a ʺH\m5Mck$lF>|&UHcrTvO9ˣ秺ŶzTD"Ŧ0E\HsMyӱ9ݝPW3{V1'ɹ:|ß?O0sU k"18չ xLX0y_\o@n U0"#,Ϯf]3RSeyiYYYUS*[_,munlSUǂo> ]\V^ߋ=qͳr9;{v,̓]c)xJ@/1"P(dVj140Vi7/!A̠'CѫςAꮇg@1:@R } E%%0"]S8rðb k5 FJNt5j*+@@G9"\*ɸɡJ-R^QQ X8xq@+pH]]L@[c\ 2JcRqӃ-UqM}k&w/?8r'Z*m`8:7لPe[>{?7 ĩ{x P;O.>˲8iⲺ)zpxl)C==55XD&4J%znjԦŁKk./́U6.pM~̾-ab'GzF |R5Ieb! 3;5<3D+a4aW҈RZ:qI E%1Y%bb&z[zbR7+eJ9=;;>dz/e+#-eZy2+vS"[fc֪ nvo,R4:FL tNI\Z |k+Ϝ4̮ Tր vc[J>BXHUb[W<)o[zd-ci,UaYQYucz'7f~[D L&VR(]aTa4_ioki6Ak/TFZ;G$N.Ubvd<XAV r6 'e>? Z M^טVboG;=YRQ\!kx c`}%hmDZ|/hIV g!(DaXpPlB Ak +ޔnA+i0sս>2fᘃL=$H(0Y4"RD@Ud,r;80.?k徲/XmK,nXj޽t7ޒ`YZ+C#Z!ܣ-S"~[bZ+Wy`6 (Y' }+X+3`PrZ|,Öe ,UX2:a~$K\NK˻ˆ Дw*{fqT:~qBHdl:eb}/6"wS5Ba*-M]?Gɰ9q_' F&|-¬Y.͘Z3vn*S^̠K:LmAky̎r$3!Zmm= jPv X)j!r4cv1KSE@AU74B斦zT-h%4k"xw;]g2~D Y[{ggWwwWWwWg't_kp\}(G: .kZ5mi`_owG T`ԋ3n1)|Wu:Bq'Cx~^qG/<: _+niŒ`o"s^|Ӄ$ȵX har7'o<9 lP;v$ї3n ʜGO_~|syEࣼ}-{xu}u PX bD^7/}dh5VY! :I1q|峇gH4zH$O=A2 W$O?}ȭZVeYqq10_yU}Ǿ㛫X0 I0!ĢWyJ%㱰 B'1оs`kڍ3+LCU9!ɝH8[,_0=L]?p? @g//fz&3fӘ_ oN?yx? ɃǏq~7=|pssgZQUˑq^R^U2z=>ߏ&gp8\w30㡠plyǗ.rdWS-{ lf6 .9=qa?i%@0 }ɃiDDaAihV:JՆ//OMld)o4,vnw\ D̿Mi K} f,uMbgx/dحVN7Z-fh06m?:ƚҴEt),M}0a.hVm(*z[MBk,V7.'D%ؓi5{TNbM'zfZ,ۛb˗2B.su`i5 ԭm͆Rm9>O(6hSuG,}:稛PxL^٨љ r6@d J%b`S-\5[AB3P_X-Cp,p`h{<6bWL&Fd _#MAC| eud[BzGXLu* f+Օ<]Zo}_+w$:n6gk[!dB|A&av'𵑖Z|`eBomp."$J&0h,Sx{v+{U8ɕ*1K$|vM( +qi*jh(-^qeck[Sc2C,Sw`mWVu6ۥE4ttwv i<vYi̐8V-./I$OBwC---#3#cqa|hx&kNvG~XJϱ?aGQsKU"njg8# խ\ ϰ^bJ*͖Ѹ!`;fdd_s"25>D:;M2*DF>HșASeި=-=0=%gF qqz MX[Jk ;ҫDðh|>i~Y G05\o+㴘 ZVJp.o4Whblf~[)t<&jzEǿ/8U tnQF* m|}v>VrN`&@|jp؝:` 0張>QͤE`wV1UR;Y󓽐eT(?$m].5G=>=z,:)Du̓y!P3Փ'';N*E2vA.+GkGc`mtї8x7ی沂5] /?9I8-2;5J6XܷY"6  Zm ?ǒɦʢ{u݋ϼ%\{R*)[۶[.vg`7J <̞hҵ u2`թYﺨ<X+@0{LsER# m)Ͱo_|7h3jwI3(52g}pD<&,)_wpbV6A}O`a|zyia)Nѐa:ÑOm*XT:f㫣 XoF?ç6Cw?Jm֖A|{˿iZ_sst`${߿=u֔_PX^߷J}8q{]wk=tU¡H$y2;<_?'ڪJ/DHOOwucHw[K?N!ph<~pOo/>?f 9ĭ12FNQ*ːU>~0}S f +|z1nş~O(+-)'* iU(]/.$Y|x}F_[2ߧ}rZx7JHH#QWmU{k[̏trNmLO HN5u Ϣj[ʛl$2f9=; 9tupw{{#chd%(75"ۻtꉝ^; w0Dkk;>˶l"DBV' 9ԅšچE[e ' P^R8}p A4{w`mSc퍵cdL(7e[jBlfk"G|z v9'Kk;J=<[{BGW\ֆrcS%Xd ]*~L̬6j C#-#ެ!ѭ?߭[ikdnd rCΦ2X d-@k6*X#[H᭍ҝTsHzZ@Hr+bQ4te*_%`'jx݁ҡFc;8:9L`&X!W)H,Sl 6};V`)[!ԹK3-$Xֺen2KG2Էah @틙RIƘ˧4V\\uֺkVg)tFȯն-1U23JUMbSmyqpOY+?S.ݝHFȆVTO`9R276h:ݶw(q[g ufB*\BUܖ+_˻C1qO1;URV|-eÝ~4O9/,htK!*Kw=n9kY,[0T 7ɞ-R9.ku6[rx=cxzĠL45T'_]_eHAg1@+oߔdz7TrhY9,!Y!j:>:9K.O#61ya9ƥ㝟_ b9Au/Ç]Nyɋ{Mf3V ]xU5/Ϟ>yyo(=?:?>=={㈎jFҌYAk,jh^bnn?~hwlb'wS{d2/YS!\Rv\*AVյ ӷ©'^<:܍Hd'w|:E Tׯ__ ̥̗3Ci:|ի'{1? ݣԃq|4; ^7~x˘8Ɛi5Hf4C=IT|0 ! EGn<<ߍƂvϟzqQfZ2Za. 9i0qwd/>> ҽ? AS^\Z֍{}HӠ.n#Zi:q>y!.U$v/^ o<opG1a&]縰_˔wmꚡw/nnn.Y"@V$Ġv`\^_Ӌ4 efc7Uu!4_[$L .7ts='ٞfT*O/J*PMhC,鱃;6Y.dI{٣G{)a Iq,@ ,K10冷.1>n1趷j͖lmMNhu: x a;=Ń<Ԋ~6h6D@뛇a4u<jڔKbbC @VȕrRjA$]Ns`|-?mdVY[9ǷaȘLV~kScҙtWv"5@^'nn}ٖZX<Oh(iFհ 2nRS880S?I&:;;[:'gF呾ь4bp(K>9Ҩ?f@kڻwv^Xfc`1YŃCim}L.mun}dH̍M-,O ,`Iy;?:'|\Ν.$ҍ;>)HB:W ;Ǘd lZ P"!HwJxT,<.)≄ 31G1|Tel'{zgWl2I$dk $cѤ5g 37rY[|ٹ nfgBEBc5xc8@aR`$SfXJ\1K sK6YcBᦇPMCxGuEt.`fgg&f0kqRHV [*.&mH5k J&dLcq" 37=83>DHs Fͼгš)4n'[&d[|M,h+sK8VWyn5^qK§ƺ뫊JP x KZpl-K_./ %Iffv -: ;?1PQRPTQ?N g[~]ͣQX9;8 =#9삧㽢Ҫ)ǗjmߕNnVdR>J$"F*!NkmIVIXh ]A~iUS2[m٨V~ :N6X(5, nǟLցOl5Y-zdguQ%-ck*VDu7̻^`& |n6,@irٱ߶!f[F'&R(]>Ŷ]&^Vf7:'әFcζxw/t%t*W1wO$ԱƲ{]s7'}CUdbCg9y Djë940ƛEދ}$?" ujjC8reSQ{4N@&1EZO"_\:8 KP]O˷qVΦ}mC.Wjݕ#p$^K<`C F,`[2D9q;n/r65=Zm )YYY^ZzCІ<:|˿۔ ~~ayO6Oq cp_~y+X5 ,7Ó;N11J>/q@{}_[^˟}tv!.ᮮi>8y<~bw_$_k攇}IFDN¯Wdh߼XJ蝞E55`5Z7O?XðxtIaͷ-VסUlZ tÝEx(F*L./)uME#/1*E-'{;HPjazi*l4=V)`/ؖRx2 esű6A->+}>Gʀj(+BO 6H4?G3hR)ٻ=?1 vb}_N ww PDPr?ؠ{/>;XE5 ]XY< ۖ=bÛːOƬmZW)1wh3ogOY` H.7ÃU?uW)"g>1@ay.Z}ԫ~Ϟ@*vO+\#RȘ:>r~k݄// ^Ti} P}8'=ICg5dܺjB)XI$F^';uZiI9#} n7R!8U̷WPg$-n>L᏾}ueԗrOгpb:Sַ:{SڎIؠr8&C'5V"j[X[Ν: tkux(bѓĞ|ֈ%J&io@J劭mN(s -cv+*o]rD Rܔ Yd`_EPƎ Ob\cQV&z' lq X |L@c#T@LrX<@^JϦQI)0 d6Ab^Dpb0vk&0$*d L2.JաEΗKWrC&зeevl ںe=Yii)4& Oe$M_"n.9O-Bc13c}$|rPQ58<17LK76xBX>ErݬӉS}]MJ?lu?r5tv,`[ B8ȅje3#@.M!M[d1ipH54Nb Jj{nTcp%9k֣ 6 sr|nIt3e|m4RV\R N M "kY,.ˎL А2LU5H*R &ShEzT6p̹}]Bib;hjT겲Ң!SOCaoӰ/u˪B6I>nQaΡ*̠Iwr-Όyx)QM Y/pb@qa!5IiwAZqI#wH{ϗ5:4]^+d2OsMA,1kKZ,J 6זf zf,d[xK-!g9ߠt;GHl4P]E!3lo!:c19/lRK# (X;ϻmGVf:w+fKqf5ᨊsR-wXg.'[4m ͽa}-{ʿ5R.HbJ0(+5)ҲX0g떟l쬚r^fpL%ZT]]-אpvC"3ܿ 3MU ku ]kF:0AN4V\T nSVĠ K3wwtu#[GkaqcĽy nɧk|Z@_Og+⾆dN9*.?̠k_2fY,YZ\XĂ霟gie ?6#ltj[}5vif|פ V)-qֳD"Pʨ%:WP4mޠRkT F\ܚ4'E3Y)Jc2X\ЍV8VV%eгCm 5Ue%#,vA,)Lq jZG|ECh8Rwh0ؤ6hZCi,?謥T,9OX<Y$>]ZPUHU߼4Aoq-W6uQDz1;>{b_ڵU9<03skdF|cًW7S8$x2MšpbNaU^ZTR<9opA:F|x|q|7Nh"k`tG8.X4B$oF,i]"۴gWǻQɰ,f( Fɳ=D$Q-oѫOBXrIz5XK,MW U y}n? #>㑀x|g, ץ.V&J =IL<|q^ш^b$n/_=z`uC3عz(PQ&2h2&s"'ANp:{.H` :N"a7z\N G)>X'!vԥѸ;k>csfڻxi}@l4tz=tC 3 X1 =xrp2~`)Al]]]vb^?`e llnz`jMnF Vsݻ' e1C~^v>m{_B:VikS.X(dML& D2Z 6F'd8 x)w[>OKWյPuӓd YLFV%r4&6ei,HvfR_3Rit]hTC/FM%A|rƆˢDJ]Q(u@$qD)IrJ7$L7HuՕppMJ˫ڧh 02hL3i@weŢx< K>2G0\/ '؋[DKZ HC*6cxr'zFWpe`1ŅťE,Nchɦr uQZoi}`}.Ö沙4HW0<~^^_@c3 +JH[f4ƚ$X8Z<ގfVJ9tD¯`qX"F%X!gf 5 D&4R %Z8&Z!‘MfgF@t*eT\.]B"3?ƭ~Q0UX~a4eIUF A%T:B%R|R§W46FZAcF[k*{E`XU4cmmj6Ţ@ Qi0_2udBOk^Rt"21g-hBi5b2TR͗o(%? 6TYae m͍Mӫ\`@$d,ɴ5Xi/U2D,*Tw+W =R_]Q~m}kG[{[,΢`g斳^Rh[2R٢wY9P[78;:OX__Hc 4Z*Iu\\SΎTQ2:7= *~J^\]8L৤#=ݭU KS+~+U?yǧBm?#SS} +ĕ% 8V⨦\B}tɕh_+` 2;;Y_j90fGil:i c:kk8ʭ2&<׃ e~R$KmUM`H$XpUl_s}իd-)&J&N Pˁ`2O&PLDG,H%C[CDjR4",liH)wWj~[c0Yil>>0^W~gCf ˫k~z?Gw fsd*HPD[a ylL]]kiX!HK$Sqټa}mav J<&k@,`2UrY^pR075mwOO/p`zcg;2c7?7,M-s1KgxbՆRJ̎L-L4Wf'4LTf[eA^_®꒪r:R֖R& -O C极i4'I|>7 ت/Q톔M]grXh7LD7YR?:!ZK Z $LNLN2s;:R5lMnCgGaqa`#`]~YB pS38pagQ\^٠7_kD7j`G E>xZ.-x?`Ϳ'^8Hȫe-j?.FϾ?ߗuV!Z)gYs'~9g#2~yzwa BU3 V9)??$\HȪ6GvF/?yKAƬyo^^Nf9"@['7=Ylx,qS fUϾ~yK gy<1JZm{\@4h7bc3ao|ﶹA.%l}gn =N {Zu1[:쫗vw-@$ 'a׶ #/Ncҵi,/PYgp{q; Lǔd/^X&߶epQ8ֈYJɱE<Ϥ< ]RlzϞ S4nc_~z߭y1_f œɃ]p `)k$~q~E*aNO x2M aQK~|W,HТ!擏RM;2ӳ]Lg2^*f/,}@oi ƣ6H%oԋ #/Z+c(rEPZlomǀu!Q"%P{sCc[ EE]Fާ}+n/}ӨYeUdڦ]|wbL] D 4M;'}Ob\F> GR! CcH[b]œx j:G䵕UA.Ow**P]lYD/I9o>keBXhzӐѼ7?4+Zu*kTL -@6NMac?O6۫K,-(>:>O?EP0XU.8uo sPy:8ENCno*k.4=O>{,ht_?ydgkTV2crx:^Y%7k%g;[_zX-/̙ u'jܻ~ͳU`&esy,|WM)r&q6zp'fgœ,l~ձ7ՎJ{KŬl.)%0wFC}!Ty|D:} Kg5 SM'=yufT/lh{rjYZ^93 .2V )3K`}{q;-+~v̉#O?yTlv 9] bRY1䰨*xY^9r:y5kiiţrK@[&z[y,I!6s4 6*eee ms+docSmy~}Ϸq_C @OsGg`"㭭q84hllX^1JݖXҖfۛz lцQRll-a؁*C@z)L 8URJJĦГm-+t9K06)no­rj^n2 %MWj X^>AKrXxtPgs(&-شBMY]$0j-*M 4 4sBm`׷@xLw2}a&zzE K egCfIJJ.=:v(rLwEmK,|B)sޑY!z|&)WO|\TH<\ڶ+q1nE>NE^Y@|"~],ʥ"E!7UCw|-䶎R U=826!"Mfyc(sdunS!aHřގڪҢ/Z+?ׂq~hbf<>!SQ6⫋SC]¦+9wݺe nhVU44ut,DrL!fɠL Yh烜rfY((}V#++!{=IbKj5ء6cu(2,\X-wz=݉up894z*]D4*Ba\ ;Pqf9߮L@2L_ }2PYyU}436c9& !mʪ&Tj$4H,>N3wz1/n3ɸ!`G=DETxW#tT ,(̹)yS͑[C)WIuK$f!^\tqC<ݲ@ f Uobi3R<տueks;Ke=A'!qH}wl*ʹZ9,"ZA r+r?k5NB4V`iqQq t-pj"jQ KfVe`PX 2fY,)S: kVF#[,0SE1I3ojlNlM{  Ґe}qi0m~15v(]]CskK[GgggW'ڏX[,4v nceXDohtt|lbj F{:Z0igLAt2bɬ\#{ǦVV8<A/-M 7"a)&YV+%g2腛hKW~-JGgxz@狕[d`0~{sC&Vѳci\֜g\yl=Z{0k|ֈ)<.Xy\6Q+Rq#=m !.Ƚ њwly]6zx,ǣ@ K&ww1Ϡ⯭L t5C_ź ?"2˫j;W{ ~xxGwwbX"pp }O!:;Z A“2`N7^14-;9;HÉӋ󳽰CI[m83~>rpDq [9Lr{gGg׏/#:6n?6sɗZs8zË㓣d ϯ7{'0@w<>zv'jo/ Vn l[ԋ7ON 9//Hl/Gc18b bv⩛O0:.q{'O_^;x+-Tjװ8p]8Ysh n W Z C^ >n\n;ypȜSzņ$_lupEx~D"Aj vjvXf5MX+mwB-TwSMyYZ;/\郇7a*R5AfQO?:K}[_+HkTţ!i"OX LD2Nљl6gZu`[^p~J'_O_OS^j5mk7eB6oB1).F[[gy ^E䩞ڴY&CCЛoػ<=-B"Te@"("@YP<~k[`ڶzde6;i5BƕUd1oA3y,P&VVа\7zqaqqvnyiailt Nu*N4 VFwq;ɀk,a& g y2$XL2H0i_RVjYU;;צ 6q9,]^FMc% Dc[T)ЛHܿ͞i{Id {iEmKyT u%B1MQH$*vii O |B@ f LXkm%-o}elUgIvFʡ X.I<.=`X I2E' Jӛvc2`Tcl,VΘ9!ەJX(AXg D|>Ha|8fxUHWT pzD&_,Uȥ"iJcq8L:%O5MD _no?+.AOxVj&.KK5&u[` ,~a{$P`4d- yH-%۶\У-uUxoic`gfs;gҔRgrzYj iX7[ZA]SgwO{ILOM;2u [i5:)i`W[sK]M~s$F̶D"nl/ZY{ őمɱ,nollȶO ׭YX5i2$f:j{82<3oF5dqxJ֛ɣ7R,FONM-Sk+*z `ѷdDJjK<{1Ґ) gG{ /֩d4z_FӸ 27.5V,-*38Fti233333,"db[fTIiڽ 3y:/#+Nҩo-g}?볾ߛZ,ʊ|0 :og ݣtN&Y|U$*$vVUdBhw89vLl+Bhd/vJ+[,J#L: CY8Rj3`2(I>떌ј``X؞ښA ,aQ]h MšDHmP[&'ɥ(Ba )˄k GWch"<1؊R0 \B5th^G%D$jLf, Mk2`lj{{zBs-%FFĠ1yRɡh$8 &-07\]\9a)IwRqc&Ɖ̬ͬX^05Z-X2.y$~QIe]SkgMY&ub ^C I\Q1$jP ̓I˴(3(0j*s wxluS66e6F*r@Y\X p{~Yͦ0#P"-kdq10O 8@'EI$6z76V,I3rOn(x>)r^MmI[NI4>E@[gV̜EF*~nay˸ĺ[LOw+J4?7g׀mc9<'Its34 O28<`p};`f6C_ҲVp~0łrNQ2HJWU ,.xyLSs0tHE;޼œDhޤ93D*JƑ%\33Œ^eeiO"Ï< ZqÏAĦphAZѢkqɳ$4ܹoţ%r۰_ן: )u:e9^%_YpڍZij.v`Z-XWl,Y&ew:|V۔6>Fwejm}i?xxC,(kAݤ71KZl0[Y2Ͻkַ?t)YY4??L񝴖Qj1DA/(3ӿjUU^n~q}3v;VQ[η >PoO.9E(}/'z]fzghj-;G|+%PBC61y?df޴󝡡X0^>/2(эWjM1\Vv-PǨDػjl-oQH<qև?|hx/DSFƄlhdz"kC|wK?$T`pRĞ~͆Ϸ )פY#Z.-\*T_\Kl\}_?t22ZAi}?/`4BI:QZbHtc}umo925=ū/?>ϻ@KAi4~V.zAՈ?H8z-Nǟ]DӾp~_;==Zw/ϩ~R--Z -#Q/ uhc } O>2,.ی7u~q`u lj kU,2&Uƙ>;r_KW lӨjج vPo$D69W*394 MHT$WВC5E_?{j5(c^V?$?KDg|Btcp/P&F&tM5BM&|Rx#]vm Qjl1zJM=$ʼ'vn$˧_~rM1R_Rz,<3E9}rP,}?xu6Wmc %%T"TB)0ZYZXP xNgG[?z & ɲћׇ~]po&7 b BfEMd\ JvR!cZ* U8-v|~{͓].CVa~b[{ю1XQZZ OZdL&K,A1?JD.K@j}G} @|iEk)/++))lQEX*]UŐj()oİƻGkfT+얏PwW77_dPKtu*m0ӂJ)HlloM9TҨjlG1d u/fC7Eѷc9v.N}Z T T——SWU^V^=<3yz6v}l@7Ay[ v˨tqoggcjPÑ% `(_1iP'ãږqKznnh+juV(A0(5VAP+kIշr.,M"j\ʧ t46Yni;\x!aZ>$ !. = ;04W"!E!M u7tc2PNiR<; +I-Yţ)N'Y6ڭZh0-X2.3C$ äP)䉡!̑fk٩)㘔T2JkMC4jy5gJkH/L8jV$OXRun͚'!ǙhD;YT@6f4@@3*ֺ׊4ryl CF̼sn֦j|X[UYa~V"V+ l"VkXSz맗R# d&F.fӰ`-8Df5r` vE] JF7h|jU YшXP7OAyt $`O#Ԁ`w( S\V18ҘBT*hu"eS ,Tq8 Wm4:\*P6rK MXqkFD/(TjCEj"UJZ@f)TV*eҚC*Z:{d@ WlZ\\MD2\8i2712TS^ZOf21'MRlQ\Z^Y72 iHhCr9%w(6wa`OjJHPMi׼ {+6ՌH\jzF@\h.,=.bH4@[smuF!-3҃[֌YZ}kC`(@(KE"+~ϼE#G{jqhr`i,U(8׷jQX u@gDR onfu+HY  jk"s{bU;;{G'OXQZT+7% 7 k/onm@3ャӓӃം>Z fO/)ǘ?_e5M(va}S`wksmcg|V2]BWÄghM!faf yP͞ ?~< vvv666wv|@[]EQ#Ͻ=8*z<[tw77&ϐHm%=~rZjˋ2sj y?:T6tOmӧ_^GC`8]ţk[:Tk_>;ۚ402=RXZV9ε.~~ D"H L6H"@0}~Y!4(3ir2 iaZO?x<\] ++nolnnB0h.N._>ٰ =uNjgd)B$2r:H3D^9_ JxvhZlmc57+Ayeٳ˸7 e:Aɹi5A[K/^\A0Ғwi9^_ -/%/yV/^=:[dk٘b{_<y,CL.Wj:+:]9*IJ!w?@zteɥJޠ*@pjhdO$D*#)j~@2N+{'ɸro$/rRMDp/\E|8iZf%Cbqh8Ci,Rg2'urTy/uUa^t"1[lRgκg,zI#X4O ,rf 9?k(HUM%YM$++j\ לEL0Ythu.]I 4f7F EOkUuTrKVGcI0YtZ\&|P29`RR_ kU#lU/ijڽ Gd2XL"ͬ7/|i^ӨD I A('iK+e(DLnml"H4 q({y5Mu`1 ZTť%$/LuF5(3+JrR榖!NIMSӎٌ[_2曞,.`wF?IxoKcMUi֞.;:ӡ4-[%[_f̆;[^s` Q[AUQG{_omE=hCS'zzۛ Q8ac;@QI\Ɏ{ HChᮚ~ͺգyl`kBK$q1Ḥ)<eTl6}KF$kWOnn>9UJIL@u6@oҊ!D*, O"gcʊJҡϺ,Ξ>yzwZ*b>T"Jli,. 4HH1L0 "r6R$S^^FMPŤRx24@Št6nƑHx8$sqp;p#)wwN _cփFv֕V5a >UBƎ4C(O%`ŖQdzvɻDR&PiigM*>fxp7:֥>4Mq-wĪl WMϣz -4ZZ:0tA- tvtwԖִ644brCeTŷrpXL Mz'U\@W[[(ƕkL\{ckgSUi~Y]s]m]CcY ;|MH fK?3=q\ŏ?'s˛SG/z|+h )zr=s _^u)Ƭ mo?:Le\;JVoPʍ٬6眛v،:47/$ 55_]:rfϺN:g33ib4B??x5PkS.ZyyL 5saNM,k'01?զӤUjߩ6O)-*]Zf>߿Q;+aJW?wO:J.92A IW+Pr|(Nf׿GF\t|WTCu=/ħF]}|4(Ślx< ᄄs>=_mx ˜UuOW!갾MU>W"fF}|(`K__>_S4?x>RZ>k][b*-/VV`xei?壐hw?e\,8=KwuHNO(,q/,p<]{g~~/T{>Vş}ױnadR(8t-\wcbvk_xl `j%P>*!!Ғ97o;!U@|0DX7OL@8CF>w.0Duv6>d6++kewٷOo.G/t4Df 9ܱXB5GoV@=x=O:]#nj]f]+[~gN!! Q.v)\Z=<<iB4⟟Y{t=_+hn~s7! o^\n.A-rPP#rfvFx4ͯy7<pI1fe?Z qX2XK/M*U :H_Tld<Ec\lx{w5]q[bg{{;zSZiucosۋ|9>;܏ەΞ>+dJ#R{Ϸ-% 4ɣG?;Zʋk7_;WeTll/y\1}u5CXǕy?WU4v͝D5)>< } X}I!bï^"v;~;/tVW5"B6W:v4 sø{JoEeK9/^?Yv)˫%J4+URf8%؎Rxw[ͣգO~42fD^quɼק+խJp-NeXL˄R3XZTxu1,̓ubpsgu}oxkD$1J|'O Z=;}xhh_ %qH6!/! t6~ވ%ٹ;桵}9^Rabtv%%VT4Ѻ#ǧx(9&\R Tzk6Zݫ$gZ•7B!_"% 鐒ʦmƖC~ {k ΗA@O^'e]NhC'2DȤ;vMIIUc7^13/̸߼:_5ktlP/nV'2P. 2-PDB= |,_e:fg.^Ou_KC|>MurYEjkB_=kjI󫃕Iejp˧A5"$XCRM<$BVFf&`ZTT 3RGjki' ̞ç/Ncs:Y N*Fߪ<.h{1hg>8[_0 YHWG/V\O@a"ceuRoFVwmiNhkvs^mm%NVeSQXP.UO[Jl( %zo<6m43->$vII}7Yj4 Z"4k($"N+3FB*eD)UhfhfJkԬ [Z+!J8zYR8qD#UgLZDe2\vϷsZt:\@hS)n*S^AQy]*(uS%7HoAl lBr.R I*>;r;gZCg;4mCf3>o*b6(z4pR!ITid:K w5C44!o'R-Q%P LJs*3(L\!QC=mЕ)/7-7vkwk$X ~DՉTCVιx!*T' }WaQ0#}吸˽s'?M`P\)|U.+f |yT`O{]9Dw rR\V^]30j}@,Q`kTbR74@OgGk-"3%M1ZGVeU -m( rRdW+Dp_w{3̠V^J>)g5M sUD* ]KG? OV3HȬLٴ"f̈́;N^myKKkT),q DhmвQcព xѿQ2]V+c5 RZwPF3WZQLjLEfHkxfɸ49FRnu)"- SnPJwN r`k] 2+Hɯe{~F+^V/:ŸW f=c0#P_LMNIƥ,ߘvri!MA;"DǑ+6eHƻniVm,C;4JnJb)4a*H"6J.λF١鐷)1<-A`z5L:^[ZTR`i|-5`wiehT)e*ҌYL5ͯ6~/3o;X OnQeK NႼ?eZ.'f&+pWKHan4Eoki}>bRjfYQDI0uƏIJ8*z;%߿ަ'.-7%iI"HAdT })2ZέyhnnWnKfTecm5fDZUEEeUM8h_XD G H"9mcm Օie[V.Ì 5 e!^:J%WW[;;{;$gcXe2w ,)n" ͝ݝ-Hm&OO‹R޶ +/!i rvFvONOO/N@c탽Óӫ(H]muyA&t:r^j)6}\jb}kf"7TI3AF}-k6bG7[;;[[[._>|d}NFnG;Bd_V7aεӧ>yLomskwg"gvU0vyQˎ/)쏢ʆ>xaG/@0 Fbh,[%VW! ^O^|qsSQDmgBLΰGJ+qG_n/CAעu8Sd\pl'}ȣ$ԔdZdNJu% IKSj>E*EV|ZN#apD #Op$X0 trXX;k| Q_CϢ6 (PY|M2剭C}ɭxxyѡWJtHu%xh7f\dcviaaCzziZfN`]u\F 1 d[XmlnE<vD4[ eU]A,J9xyeu{dwĂ>Uɓ[杞}ww7VfQ8!۝9eyZ NU 13f> ý_6* uDϼ()@ȸ\UN&g-b!›`S|I#fF657u  7YWU[SQs?5 cÌ& <$aq8JV3N"wwtvv x,n.D@Ջ֞ 2IYTr9BX|3Hg߆?8ѹt"~|byEU-##}}(5@`n4eFķInRI'p<E84zBqPU.pRqfɻNlA| Q_+(k;+)FRLe Db@(Ys J1)3՝ˇsbZք3m˿tͪJewV)@%՘l JF5Jw_WsN0߃Nt'ؤ"XPLVjlMF UkjD*1,|S2fŵ}o5_(;TԨj9>73mM*RH3ſ:\XS߻֐>ۚWI@ -]ft&9Ӥ0NNo|~F5B,8ׯlJa H"Bn{~vn󮹙Yt?ˆSim?X4Sw=F)-QgbNz[ FVs~~ 9`}j0n}ՊE?^S}M̦|D T^?wzyŹyhijG+SŕJ]䲉x<;]s P0[ߌǟsfv@Їn@~?et#߇+" cdMV"ͳBFk/}f1G42}bhnk9#+n`YàE3$"}hYXF'߼ژV;BqcYMGWOW^WǍtf"9`ld'^C~f|}'1{yŠ~7IY_6jfbuÓuw:H48X ֢ɩ9_  GW|3Snbɿ!^_( c!%>YS|l({tyitlLpI$"UYB9;K,Ͼ#/ սy%u/?9 l:89?Zz{Qh  q&uv h9P֣aET>~z'|k9ZUW_<.yLBlr}AIiW \H{jpB[xgg-6I׏6O͗[ZT#iMN?I~iɒPSYQQ>LfP&h() X+qMkˣ×ي(/}_=͋d|3`^ٺx~`W0]#Xtx{=KJ+zhF9e]'ON?ibG%4ElrJ:I7}| {}7NRȯt,/a3Y tW_XR<&^Mx'/~(r_RyT~K<TwS,_̡s(!\Kp=*(/> /HA%Y3'Ɏ\lnFҒMa8<9Τʋ,w5;LBwmk ; ?э::9N쮅|J.oPL@bZvuL Gë[[Qг׏A7b ;G̦Y2l 4TUTc L2ɘҲڶjrw5XLϺ6?x\5OB6HˇRՑKo09#B57t b(<&[!XthGC]-(1F'[yżh}U]&R']d]xgcm6? noӸLRYֶ!4M6~Gfuz~bA6 f(OqaꃛyVphX456B.*QtvJ鰛Ҫ]yymhRV6|P8ʽ+S^龍Һ8GK8I:fTxL[=:M,!-6$5t2fl( VvH8Vֶ $#UrB&py_5ib.njw5VcwBa[5Եt0x*K*`j!U('*CŽt7@F0/#yt1kiCR\*P:!]%V[MRubx.8Of#20n՗W56v N9bR*J$gFAڪ* f2jtVUv}Oˠ]U]cs0%R+feOʚh6zPE)Mܽ elmC|gh|c !MߜQS3P=M 'GY{J{ef4OҊEEQtOduNI Qf#k,A4@Lt) 0J8)x)pSw:f2BE@"2Jʦ,f;VSҡK[ޱ<͎{erS)"fP$ ,&1QWQTuʯe$㲸Vz͙؈^$%^,[2I-UlAI+ fidHլ -BW\:@`9Vf<$<i4oz 3ztp6"$fjݚɘi 2z[TQ z fyYoK?Ɣd+J6Lۓ"L w\ZײoG0[0,N)!l_V=}/#!kS).-+E6U|DAr[ u.ZRJKˡJ"V] Q03er3~)'}wxR~Ei.~A ښ*p _yg[5QBں&nֶ֖FV^ n4U_lYM)%Pв#c  תJK2kwoڭ5v c$El6Ag(P~mf[ [Nor $Ǜ@Q&1RV7`A%сΖ pdS.!r2.#FW\ }g&܂s<{ʞLi%"zײC0XvHZ ҫ%R mnšV" xfmjed75)׼;NVgRi>}@흭MHolģnGnLJgU%;=FY[GP&mokk=Ol$ϓGݸoZ@@4Ͱ8l,*.mCsuKhg=:c|gJGbP26->Nl'/^?zxvz|||zz:>A~dVE|-?'m|\3qzp{}csc-ZHFbwᓫ%u;-)fSjNZ yo޼|r7FЄ3؎cW4=z `dvC2~kFSq}$H  Dx4I8㑰 ד7/ͬʔq,Nn,@ƈ*ćh'P0šg( t4 oڽ|"nՔfD3{q% =XًG;ˁrxI@_.mFfPlfnWA=3=r.'/n=bnLq91=MA~ǧAœì*d"DP[FAUdrXgf=񳧏fy5%1KkXG¼RFR"rP M.Je2J%S(:>_<~0% 6;ᵊJE';+g% Wˋv=V֏3ủ(J&ͳ&"fscF&lԼ٩ "h wnlƳ8gVp#N"2oh`G"oy4Uw,9֊rLqE(0)9:;99:LD@lm}g{l`qZ>>KiiYM7AlvDt@W 4<FCޅGN)[RQ]U8H4<"5|YkWw|V| ku.P^>z0y ZhoYGq %W6ttv1}.#%>0n,b 98%ZKBlo-/m&tq$RnI/Q'[k :G4/VVC" Bhg$g{Il,3T4)P2@QQNr-V'{ɓhd8_cDIfrJPX 3mN__U"6~?ZF2mDJ'լVx(&7N>zxuU|ʞI:t`) UB~` BDӘ]0ե NȌ`IL'>ccKÍ5Ae²hq(d&u{MEj9mJ -:x㧏rAVʬ`:.` $ ?;ƒ5"|Mn#ՓˇWW;.1%-$,Pw[C-<*nEq)9BM uW7ttv%:9,w $l!qxkrviNi-,mho+: < ;IaIre̔|R_k[KM):֙'޶ƪܢꊚƮq\Ƙm˨ nc`Q$lRiSVV^1DDZPɗυr -X&<쎖8<eMHDBe m<:T -"BdŃ|X~65OQ]p;< 7p@) &Y jƦƺ:gpd5X\׵vvtt_\65!TDξQ@oo{=|glxpxxhMPok% `,' S ϡz SXR׍Щx 9$IV1t: g[-\B"lV. $j.^NayO3%RV! -ur6b"Hc+"i2ZarŤaݳZZVьV-f-Y'JT4.`)$2в"=*"(Pxmw7da6ehSps']2ȅY)9d:Ȭ9-3Y{Y/8,&/9 9PcQ{K WGeA2fxh{1oZY jx\^;V_}AJǴ>~h=`S 9wk|H"r, zMTPRѹ럾:UZ]7&O|ӯ?:^6 ;ߕ/b> 4ȕ(jT2៾?w!Y^Q8w&A_ |.vB$qLtϓ6^ߟY]@#BLEb 6+,XRЋ?fBKy+߿2J}gheY$H`% &/׻t3©VuS箾_-Xw[?PjNZDx>O(ǚY{7.G*ӨU FO%4iiZwNs_a *`! Xyvٛ9dycģ0rIlwyVVY_u%cVP2azѬB7[8?Ne0@ msXZlu=u%^|뮁6/)O(yTo2'c05d~n\XA-."8^+(şJΫp,8Bу= Bn!.Tdu۵yJgUa.bYT/=ҧ5yOKR #hMT݋~xj#Om,/x?ԁok gM}ԤtX Vj"]\p=Z = Ұ1+󑱕e% jŵݕg-ЅU٫_L;kKj,lloxB+6>ݎ#>]/&Ox =BaU*c~=8^]wVvͳ߿k뚼҆1'_>D.":q1Ofd?:?R84*HP,J#Shb~j&\GBnVzѳ~|cvU!k)|mmm]<=0seP윜Ŵޡ *D,;? z, jo^_^}s4v?!?W>u!#w45v $.&RP!wwbeB`7O^|W{F~_~ݛ"7wz\@FW^:0N d ueeUm c`c#!t]bC^N:4ךg_~Z<VGe9JhCtkJXYM:ƣkӛ_s/k tJ"8o(w{z4T@1Q,! tGmhtiEc&z|ډ"~цP24ci E㏞.;{%c֮(ƒbU=M奥xenb;.6{s.G^#Cj۾x4j07v_|Gzb_kcC]}S"Z("9wl?Fp㘛y04j(TIBQEo Ew_|߽ٚbF{:AL+i$Wj#왕@]7~1C}63 U+㛛ǤΆN1iDJӆsmh|mYZIǛo{dxFUi?{qRwŏaa$z\.q:{V‡g{kZ>ޚ2p҃49TP\3NɧUݨNN›9%!^2Q1P8*4Hk5B AܔxNAQE}!2..X' zɹ_] "Ť I/3Ѐ4ء&f"UwG BI5#ToiA"䉌LMnf;,6Y!@ /R||yi{)(|URQ7FfrZ; UI\V\#̈́njkaj1uBhrQZ"-㡇L[:HjU6ILHML f2P6y < x&Zef%e-d58:Si\Kjɨ͡Ɍ&^.T2VRC^f#]JvTյt0xԅ BHm=xZJ%Rph4"2BfݿO{"h<G"Լ+y:Oâz{;yho%i9tÑ2kKI*k::ZkW~Ɔ3˶r!Ć [UM:6fR&t77@#ZA]| wWl,E┑`iyUmc'(t9xMN@o#+J‚lwko`w*r(솀2%P멢EU)F$Rii[Twd23j]9Ѵy(M١^4T:I?6XUz %ސ rI(|[܏狍&M');"iddu>oiZU0'7(!|4 S.)  U%ܷIƲJ!4Bi}(/),W~ڂ0-ϗmuӺ$sӢVtS$Tosu 셂SZ+͘8Sy/Xw' ӇPs`hnkÿ2o9LA`Wo/m[K}UySa`4H:bALMYh2#aSR 4+<%BehԐwCӊnwh\Gά*IQ+jesn\'3.i(.+D-0,!3)=_ fPF[+=JRHK* A| R'zN6.eaҾ)t\A5z݊ ny)l-kdl7mJ74ut[[Z5P䤃Ö=}R|HӺkiȬYP;zP艱ᡁ^R{"%M9kgPA(T zdKИ\r 2>2R_]^^{mqzaIS;VMch2G(S F˔|aR+q`wnm. DH=4RƳk啵л‘鬳^ǻ_3G U; bV"-;[@N*@;J ˡz4%6vw7eC/ATbYZj܊yY_+*U@;_݅i;[kgw(ytppzH/'i;!9i򚖞qz&%N/NNwwI|=qqCH0MS8|D}u/0N'gWɣ4<>:ȩ#]bvLiPHWpxgskmuu 뇧K Fx49մ}(\):'/65(X[__VcO<: x ve_˺fp ִ ь'ϟ^cd2&Q,F1Ȋ]=]/6cfYXpGo^>޲3G۠1i@w)u8Mnhɽa_jX,zZǼZzHlN\˪[/^n}RKੇD*י,ZyRT(bLP &cv!s2&6BłL_`d}r'8o75r2@L*2 T*U(T:ݺyv,tV9Ĝ4R+,*!Mml\6Z*d6Tc2ldy"BӂI. R{`j*+L9!>pcM۸,| rf{9g3* xHJ"Q< ܌Qg3%ZMBOIKwhteS?˵( mFu8/Ndl% ѱA{YҌC ՖչO+/U_CB`_Ėz!w-8 Ec0^eu5\2qH,Z;qpFL_#RjghrS{[[ Ob4Ѥ+[\ y"z֎N"b#`=HkEu]TS ꟟H1$vI!@ٕm%loZ!68|x_Tfd~}+3IDutzvvv~F۫~K%4Z܃1!GkȖHo=ĞRnu}tC0Ϙ$4 7zpz~y~qqmoE]&Ì/tOgcYH#}.c!}tw,eF(ء@+8[zp,&'LJ~ o7\fzKs`a[ي♝6X#wF@^_]gɣÍE||k{f)58r R˔ȸ]_^\f'/A7c _cD"WRQ[]4PX$TO[sc8_@|4yvY^?{| R 3W777wa 5g&݁v~v2݂$/kpG(߯hh#qd|"j2zO'W`dg~]/ZrXOgGmEI^c@Y,aAR[R ~n0kH~)4P]7N!2)m<ڢL740w: lbh.ybxt|Р1PҫLhts`Vy.yzx'~QN%xx0[He 4e9_,}K^o]\l42ɦMb9LS#M i͋m壇`oڧY|m$ >D^'L6jQXda+dPa]t?zMFI.2HBr} i4&auh=K&=d#Llrކϝ>zG*QxJ@u7T"EU©9I!ƺI/DW- LdXv/++RZҊ("60vhjhnifjMFrhw\Z'0$Upl g1;͂bhWcM R Kk;*njYlm(*k#t:m lИ;n÷Vc+мˆ *b=)>ҊʺT)m486JML&-ΒqLqhk#K5r6rKk{ ~52 H :x`VZ\TVY5Na2C{{s3<fPo{[c%; "P\@ģnTq򲊺qf|@!N iC}m1)d23!R4:41q0/w`h@ ו"k` zm|M 4 y#љd2%ey>!|Pw(D$R (o_R݃a 20Ico1f,L£S$ H&px?"X),R\*ULz{9,ʵ+uZ F~;4_,sdXuK0{z<6:3DE"E=Q_kF@A儞 KƁ/)L:A8<YNuk̇l,P>i_ nElWØ~eoo'PtY)&A)v "xtDcZX?<>?ۘ@͸Q~mSx, t|FSL&՝vN0.Ic$5B+Go?;O-R Ja aBenF2o$r1Iӫg/<߷za IbaMbzƠ0-m}x:+"–xXȝcV3( ; {GhDRd/˘:zpd66'1~ӛcb y+@Q)  D0-٭37%)d\S4@68;ÖkMwkAʡ.2@>_>.u`}I޽b ƺf68k}cnkm2ʔID᰹|n.E\G7E5%9)|k~z,rˋ ?JȮjZ*I &Wˋ G_? zsYAiJn& D'_ #d6:;Xۍ|LIðbz4A|6bfW>n8f<@8+'A|_ˠݵY}(qG{;{{q hLX=In~ `Pح.aba>~皇ښZӌ5820=@287W+kGfLXBS}E(,Dւ~ߒ?,/-gf2bx`Mb9.K]W\3/o.n>MXci^<gׯ7&USp, X(X6 vEl%O0B+hdy~jzoVECu|O_^|S)VtO/{)|~P䷿~]퍝"# m"m{b3>9LHօh<EËf}~@TP\Ms=_g_?rp~p# 6յtc(d ? ꆎYIģ9Xw?807%%m?oBRT'W'E SlBL RVUڍ̄6wףy~͟?_D5Eia!QwO_~x>ev7[K&HcuEIiE]J2&0=-եP&vw6u<ٗ?_>3b /!›.$?/%nKMꮩjC|#UWT4F\6a|d ..-)$;px%Xg_+˂`PƬo^l>䜿gd aQ}MU%eUMl哳x|#9P^pAx%]>}( 7ן/oox cLJkˑqʣO?{~ _X55 vM78yO_zVg`&FzA6];2?9 7h]lJ$ 90QZ~z0 T@[g+"`Zڻ dW??GnD-){eT +[Qfrvog~H7I14'%a1=}(fʬXç_tI/р tG1{ǘkljkS7GqRa 8. ld=0xw/|ݛ^&x筂wS:OueFA.uo>Wonfz~+Gc8"]bЉq4˶4f}W|<4-`}ya[w>Ĩ/*zog{yNn\~xI(4K3TͫC2N{OZVh,BLo%'UE(G6{zRet=zhUfXlZb<ٳ&\9{{)Ak,Ͻ`xC`̮pm*"v&~fg28ZcXɳg[3FRYࢊjH|bc'谿K{P4n*bzǦlPQ4 6/fjD-,J& ;j@a P jQ+5 &>JNaҹ'H;Ü{w (S5)_WD/#7k!]U-}PTj.>ɒZ DUL{ՠh4*GCr24߭5d^`Ecd4;6N*L&E"KL.2'ϡO V##:!eUֵaI4Pj ^å)AƢ0f8TE<kA`Oѩ3FapmC*(S2(JjsXV-@ANt6C޷ݶ:'#ۅĆl5m`B|X$Lmb:al,%}%r't:nZ .mhimkokkYVf0O\Dk+)-D}?Ew?efd_A񵲪0bJZ6PWv(G);=f4K*򊪺>,CBI#T[ſ>)(m]{ .I)DJJ[ |L2tw=K :Leֺe U)Ҕq`aQU]"4TRvcMiaAaqF+-{1{!Q2d\C!+(FS*\@·i~ jei[ɷ|H!$~_ b#i֬bim`[}EQF(c yvC˭]NF(,1 .P M]-uyi4p˯eײX|-M!NՐ`gzosCUYiAI3C"l龾c8iY @az,LӃ㹜^akTr2K&*L3ň 쥌-Q`gCQۯy pR!)y is2w{hb(Lve𫪪4e=\XUT'땙™ST\ADJA%8զ~UUWW% ?EmdŸ+2"Y="h/pqյu M_klhtksC]MueX %G1Y w%e`YYo8z=11>>:45y霓/AezaTZUMS[#)t |.äQcC}5e[~iu˘¾m8h6Yl}|LE lvOr3J1mL;Ψm@ kѿp0 'H˄4<(yˍ>+6$Hdxw)z:s/͘LhWs]e1 M;Xj Ak:G(b+`ۛ뛻Gɓ㓣UFEՃyk9),!rRڵEPנ/o^^\ėB(Ԯ-,H͜ cvח4mZ"#?R[d_\fF⫻А$8ݍ-虨^$v~M`{&`~ l[u4W݃ݝ͍-Hm@4dkgogr/d`K 2XsmN뼌';Ӈ燉X,EckX,Ae;{tuFm*͐Z2.3 :F8Ջ'.++eaE p4 ![%qSo*ҥHz\e\TV65'+?Jz h =%/} P bgP[N5ZPXZ:ę]~{a8Isvf1r睳pb/\g)Jvrrnm5nz^tɳ5jBu&lM WZ#rϟ8ken 7 +ͳMEB'"ڠV«7bPpBRc;N<-5)4V+,iB/n )R*d [8lP* EbTx.zc!|ds>T33FYQ٣gzJ-Ih)%\6 6/*|_-F^GԄ4}!.,k?yrsYub>[L;}gI4Bй6;???%<[VO- 0i8=BRhaIMNvduqJay_B%]'X2.`0shX$@9ںxtha&r9YExդiD;|xXjG7ZtyѪc'px[mu &V#D͋;c bo՚YDnmt+0S cx||xx BO &Oy,<^P8CƥZ qv`nO"Hg»'m:MngTH{{pq=9݈{4,U &̔2Xm&WTYǚ^; 9M"i$.. tri9$6wAhx,E nx.ь7dHcUޝUYBऋ'ֺ<vkiL\tg` ۘ#({=4nl!X#9<ޠ/ޅe%ˏ6 K;)4gHˇ7h^d>:54 [{\ZWWiCH=LkɽsydcP~eSwOGU,YZQv;9;2o.ݫpHa{*{GFǙr9}2 DBwwll{w8%77P[?F&M 5E%i${t\'bPPgrY\%cUeequ}K0 G%.AjFg2BeF*.[I.0Nc 4V_# 4bb=z- IE}╫wW5".|'/2NhTwK7 ,"m*rp]+Ǟ}ѺCHg)f"nsZβ9<6Oh]4a*8"͸w>oZq Jg,}ç{flK }'K8H[/lᑑ,-GQ"bq8' 2fPl d}E`x767x<C 4"S G?ьC?9IdcM?]C&ƆGh< $>['TcHs 3_|3)JTr靡;z9f2E[PކwLm6K$[ۻ# /]}d,(mY}e58~߼]{CccCd\o}|jE3$t3t}vפ*AH,n){~3H/i Z)tmC}h6T"<]K_Ƿ>]YvlUo}M_(,O X_ x55? ݩrXa^ &%_|ҹEՏbu,5<P[YY]BqҠSP|5~z^Q_݃xm7'o_%^+Ҍf,SzT"Ɔʺ'Z,cqeu-rן_Y-1 ig7/mڭh4]pgg]36oJhm Mm4qO[l H, ^}w?֣dD|I+Z3W>f.Yn,R6яyplyq~q5 Dacß~_%uD_4_}xAjX Ȋk.nd;v䁡ѡ1۳.-V"ѐft}??_YBRPR?(\OFO|}}}5:uQzolt56Bie0:_?^/"DC_N'rgxc{ggs}ivJŞhmGqq@cuu]h<4)U?8X\ Ӂ1}O_rKͽмAmkk9CtW4u 5g|m5tNMZ~ë ݥAawo㟾ymS*K+jZAEA\ZR^ЁZ"3F͑;}:t~I]zOɪ_=<>ZSAM\VRVe*h^G5-hV(/̅?_^nF_/l-?v0l\G'15/nGS9ޖ66tr~XY%n/>NgUa^N!VZC>wQ0J:a ް"CB $bIZ h?W, "}qMHO&4u6lҕ'ca|-@407tzBC>&I8LZ@c1ZF^8/;*wHU|O! `X\FO529CF⥿Py7,+hI)++ 0>x U"rhF8 "0hY-UCHQ!jiy9Z \JIFs<>5(R2 T Cw/BwDq1!Fb=e*Br@CQazWB=5Q/tp:#ވ1_].]A5xz(L([%䠿, }/rkEFAtDZanT(r KEygL 4a6 kN_C`TW` `l㡱`SۋZGN"Bh"'9 H%K%^rF" PPDC2\@]B@ fg0KӨdRJ[F |00p +lY71L Ny%ɨdBeQSSZ axC>#"/D e F3ZF!%90a2"-P(fTlR %+Ykۡ=RjooijUZl ⺋܁F ,HDb 1Ii@!MO''@41D#Z[^FDPT*יk[:=K{'{6Vv l݈.ja |Qٵف:^Vju:R!B Z!CQꚻN IՊe|@;,~پ&Q5ՠVJ")&[f1O6:\}Gn`yG4mjp֨C[sG'xjMR" Ebq7ԘUDWַ||2[/.L "॰l,6X>ݙk ĺ6wxԾz\crj[KϠYBI'U {E5xROML,UKY"ck~iy (5pfl&gg'v[456zT@H k8<6sN4k.L{k =5U$̨ ~NԍnnLi Yrp9 MSP(9W%4}&V%W];\) :~2jy'k{W&=e[H 04 L/67a-).L99$lBl42zڱ.l;>>:VX[2⶷m,2~`ҔQv7Jnqnɻst|rtrzxr|t dq`7[:Aݽ}hu3Ɓ> '4CnsaS)5NnBAONN\!`gۜM]ÓsK\ mi^QV46+xؗV_Ǧ)[]5\Z:]սupxzr}NN@N)_w{|fquukwJd0J-aJv+/$mFwMPC"# իWOanKýóEuw(}DUK 5h5KHKm6QI:|PZP?Z70؂kFNv*6Ǧe:9=3%}|vzvrx|5;צǖ6wvBXjŴdlLde3 Z#7;@HA=(1_;ZY/9dO/Y2 MABC(˾Nh׳qVs2SqjnIYJaI GI+DCqN7'ӗ1w VyEy)qPͫhlVa^R|,7/qSŅ/vX̊2z^Sb&'`Ywp~e}{ L{63_i."T" ]m]RHIh^_ Ӿ_kC[VsNYOBcgpjBW{}tZ08pd,$ŴvbSNɪ8<]CGALsm|9{t{x|hGCiUY~&9B{ۡ˥fe&*hkC{Is}X$gdSIDp BycoE E$RN1<60-!6,V%6G*סdw̬@?j(3KbpzQV^Eh ٩L'ąT"s$ճG;G'&̽2*8Lj!-&%bpZ(9L]_ٞpJya5|Z2Kāb&rE"PQD) Hsѱ 4.Lg<&!/Ld99>6M( }7pjBH-j4=)%.p|NUnn 9VSHPal^mF5B1#P%:RʡgT UBeu٦ wPhJEd DD'dUjJ.+נ)Wq%jlePBCQ lY[ɥJZR,2ZZSUZ2B%A U4ZJ33/)%Q|\VYd[*hg3)9,_ɥ". kB"6%= '#JiֱhK{"*=jJ@/xN5(QUJ1[UY%:&> |R.l{7;g`(.;67ԋY,4i;UQ*"21.hPpi``u+8OG] )+J,DEo^.)C?r%aZYY,4u*\* o8[hdg`a8)=ڜpD2t̂e275TRVhGhk߸yguq\^=_+**Ӌ,q8Ŭs9H*˥}~{kuidd,.[=sV1*|s;h//,;'j:Rpy"bH^$HUɵv9fVXr9vd\ FK?g&)_",S>w۳(Nd]G?Zkir/'$'%PǠQ-f##o<|89D`97v>MJEC+мeU!ҬojkwIcLڷy6=_?1 GJRY`W߸#@I ך7t 87uB">nDaV0Ś!N[߸;EĴdsoe<|-^hV&FYW ܸqouOktK~645D|%kZ!p {;o^H@}-4佷߼`wo!)>!FV9;}G?Q'}9:)O3GW{F:j-jf6KQ@%a1ڂO"^-P199xOnfR UЬ-{o<91<>RX[[kXzGT"` $-U;2h4뜵ͭ]S#޽~V*R#Y.uΏxPtښkMܬ*9Z^IdZ&%vt mhnhMNzچoѯ~_"Tb( [o~>{[PogG{Ggd˟|lMLk$J&p6(({޴"\q~_Wc_Y<,H\ǿo>xTmpzf']5%#3OH*旗ӒxhTUv LNNVo}ϿF&9>Jc&i?>~yP75i2 JIX >-; Z hD)y.nntNOCapv%Z (;o?}?P0025ۤ PRUYFĀKiEʎ^ČlԵϿ7vܢ,X} hlno}ُlLyW7sS]rZ $ZNA O,- X Z.MO M w?[sԄ+!2JdTJ>߾4>246;yrlLe@''(-ɦubJvqP7?z< ;Z~~k[>}֋S#cУyw* s)15#s2>@dֽّ~Kƃwwe$ pf"mkɉ>O^ Ԋ,R1UdSR]6m~}{{eoj(4PDb6zt.=l-~懯tv 3= B,YDBj^c2v^O?xlwGkۿ1$lIgT,oOx-vK|ُ޾3=g&3lvI^9)9[45޻q[7N,ΞĐD a%H;]-Fy;|'gglDJ̡se%iMKo,N}[ozm&CAu56SuNQnƣaO=77_*199oY޽q lqqёWi58'%j;8Z_6{܂JM/a^ƻu:FW۪ 6U^QJΉi|VS76tZMs+*=*_VAJzliRMvT?1X^ ]@!bq\h6^{WPVV%U|wֻ-rD4t |zFR˜ r;3oC+e̞BА'JEZ ዥu`fq[YUkRv]м44ʤLciѰ c](3plވKy*NRZ]u[XIC%qojjΤ l5) (y "r,[,葁[Z\}V*oi FNHdL st5YDZM,@?NoV66|J]M5&Fh2nE hsYV$9 'l@ Uh[M"B+<ɦS~G"3~h ,+'Qsl.*SW*uFؓڡʁQF/b2* 3 !*\JJU!:&L-,.))σj"A?\kokXh+((φ L .`ϺE{)̌TR*Pj+42MKA;V*B~2a+CDWPX XHTTe׵;h$aDJ8a5ā5X 8]'38FkjhUP&u 95{@X 8]McRD&XYI+ &h>5BSh FЋs3IA=QXZ@e ɉ!8X +ttybp͡DW&ą8bFOJhX9|&2˜] bY d?bBv_[brfIԋSCB&q^tЋ8| :fT,hvЈ&efP!3 kˁڥϴyJ`6 tt<ƇCC'aI5 8:bddb!"TQP_c1 1%eCV +uAABԮBm! YaJX,᭢.ka3XBi&Uؐ}ЈFZ!| $M zX- #i "o,9XR 'W<^aP89-P+sȸ͊Z D ť@#IhDG' ;-$o D哖HR)\ g^#Q9[|~bJZzVAqiy%KNeyidPdX!42(SD80&<-3%4FlYFF)re9iId"w`8D$bLzA5P+2}RgՈYed"$Kd uXd| 9#5ջz}SSS33ivff~nrtPEiպr,3JD-YQT:ڇ&뛁ťյ@`ij]o秓 B dܹfhA2U`X]O/窝`pen^ͥgK>$v#^Eؠ0.oX^ n5&g'V,`ll.Nt*TDx( [Ln)Yŭz X^gVVWvw]&N15{׾UfXOe\S[{;;svr? )?Tw7jᜠP hh㔚Se]:89\F|#þQ߀wp}þ탽14# אERDaȖӓ~onwOw|eh"+;1uHBڤfUUoMx;['ihlir:jk.7{t0"%r!~ qվ+WKS^-J6,ɢӪ5jRRl5m=GW|<Rt[ˌC7}n֢VH%Jpv!roK 8r\W_;9;$|L 5HݾqlU*%( IɬUeJ&zj1*DPhǫY 64^y&tL,&%GܹzpyUcVJd:Tk%b QGKä 25yu_f@Kh k NpU-*LcC]6[:agX_gEa ՖftMN'c-O/J2rp1V-+À]^Zv5*Ꟙtyey?iа|ead_@¢#.]bRd㝱R5M-7hw˗9wwF]VF_z`;wXk-ckkR 9.pH)5 -/ [%ⶉ#@BQ[kn36?}4ۙ9e]Ċ 8XATcr%S#n^PiZ?<9:>:<HꤧY7:2g;k3ne~V9>6W͎ Aw9EӳWo;ZۻFgֶGG;+ R=ꭓX,:=-ZAaz]=<>zճ#4548=]=?: =]|ZF)o50޻|wl5o[;:zkWwW}pnokmiaVN*d;\ղBS r$P_K[:&T"g7o޸~vvrz|\_AF qv|I_eډ8"BUldQR)(sxzڭ[7]~<>VI^;8:~f䁩~q TrP+)%% P| 5k_;<\_\kRL\JēbA p諧 0v\_4A?| ό 3rs yI*KDIP(4]>RZ+$|-%Ąp927♘[jt_Z(*KK-q*kMK)Aу[{;>w5v-,~[ȭ,HsTrH]T-ēJ$eCOM,g,t}Y ʲS10eZs{ K,jt9%X\:"ͽ 7͏LRNEA:bhvhI2U!r-zr|tу gqhg6;>oGI.ɧR^eq )J+xFRdv_Q^Y'eTj hHˣGVU@Efq,̘EE& >$r]^Tc0f-Sn>::Zta2.'  _åJj ,*!J6a_K=oWw;;f0=PcBrd3 K(el|uJJ_Wm1YЦ52!Xj V䑰U\}lz75_D&wTifQNC1iBc]_kLPq{*aX}-JBk XR^Wi[d {r%2Q[ J}6va2X|DhjllnipRz&>!.aK KWZ>G`섊 ]B%>#D</J:d (p䔴*1zO״<.τKeRqBVEi8^EӋKr2*ņ:7T9/XZqYE%1i5*Dīd"KpAJ&rUeE >o`g`#/8X Όe _a>Lee2cTa|Mʡed2r1JmZ=ڛk<ߕ|]5 h-(zEi)^Q%P6O9rF)0eob|@,G /7IeLXAbzqQaKfF.SiŒ;}W- :-: L5ʘ)@`g'T9:Lq"+:)!ʒ>oUlh>|%3'-qcPT*~ɍU{9)>jl{jN-ӟAg&JTUVWLW_H]'14˷WGu&QisB%$ J,2\[chl*S(4sK[s}fvsCq lii7xe uǨohv-EPK~7nUsCGHd{j }x8)cr:xQ`}i<WBJjor-fLo`T@Ydt"ݱo<<ݘo~,4÷SvQIkw_Fטm;~7nl vhI#r9lkrcVٰ}6G{cy |JXvZM:9aٓWѧ?,!x?|v{64b+@׊-KO{#"'abéx\8*A-rd#4S?O>y鐫aU%fUF}Qrb||"0$[4RG^T0QW^ S%dI~g[W}#VdXj}2 >3 Dizgӟ>檳>4ݩFgaשCBH 8 ~]V3_יM]сξ~{cR M!W`X,ѸO?o?yiY5nw55m. B%jEI%$-f{&Fڛ|?bl$qRKs/W_~^76 U}͍ bQ:93b FKumK[j2q9[_ǿ>A&~wl鹅ZQ^Ӳ 8 !'67<ݽnOlfR| Xh _>~dn[9tb"TҲ rD\"WҶ{:GSNg銓cClK)ԏG/ny[|3#N3'7 I$2 F\n$LHL$P2Xt@2-!i8ۘ t߻5[SrZƎo_[ {g&g/}[VQ u4J!WJaiElc/Ox|k7?|/cDtLBJm[/όl=/~rk&d-m)P<@x8Y>|{oɸ!~Òr_PW߷?wg%RyVI6-K1o\ں;';3Vw~7 Oy⺶X3r7_}xkynOvJ<.,7兵/>yzm`h:4\ 3fp|ơ*w8ڜ7MK()B*)Yw43^99\4dFhVa˨Q+j<Oimedu}n<7yytYA+xngNlZQ͢aC`ܕ0Ss8bt[u*:u㵇KX99|`ЩV&[ghfViH:kؔJjHAֿ~΍~vnaO rk(mt>..]LI k}G{NʃeӁœ B%dX?6P,Hem4y%l :lAgb22skE#+jzf'DNϭp쯏.(͵QfrB?էLj7.Ei^)_T2[R>I:=u I݈FʩRh5r Krc`j_]W—*x̼~XWA*2`13p1az ڹXKd`iM5=ZN],摩7гV:*2qQò]WP  ;7|/OU X0|B.Z5e[ mo FGGoƇ'wV[b$jkEbZ>>yz\  y:zzz[s -z=w`Mi|N`@GUu{CSVO:\ݝ=JElW 0\^pOƨh4Zhz=4:Fmgkgxjx<5E^[‰$gLa4SHI*R)D\@59;Ǜ]R*>!&L]Z@`:nvtr)Zp/rPC/K&{KZ8 w݅A4kt+ xj kdwcs}uyf*k[$,.-e+j}GܜPH_.o 8UlS2+P1;8ZlҋٚƙFO _*,J+m% U.`M&{@ƵrJ:b0?Ez [sCsc_5u2qy-6n'IEκ})ydK< mVİͩ2q|ljw7*1])+چa>!&KB ]="%AApkxw?LƍzZaeA&) { 7ZiB$76IH $ڊl-zPǰ`èB]-UC Zap5R)8ZT j<wV`l7oA)(Bx pbFQ_OL-eTrT: '?%G1\ 2rH[+*Ym749Lj \y%lsBm9Cw,`$? B8EE<]-wbWޕ%=->pْݍ5Zݟ:/';';+c|Sc}muQeQQ[U7~p}>6i_YY,md36#\uOn߹T]b4XkMYY< LPej'z *g&[,b;~E{ 1 Mv=y|>8m3RRRC8?1`ɕޟ.L{H4:z6m;U")(< _oS!lX|  yxp}FA, 0xRtƷ??C3>;33hmkVJ[D-iCm=<55ms}w/ldsqI̦W~?>otî'%$HԜ,r .!X(x^WsDSGޝ1%;E|0y?po=6[f17&s*x4J Ictsہi_ugoE+Sy|?:5>:ۺvQ"&b Id:+AELѵthbݳ|_朣 }RHƌVb?|ޏ޽8:u)4D *ť׿pw@oO= _ Q@cx.=zδohd7=~}le9T,Q{ß孱;2>[;ZSq ւ_kzVn CBͷ_cineLV$=MW~ ߺh]D:w;_H}-):8u]7_ggw51)8˗8{OkM ݣ;].>.:"=lw`Х3Wv-=w7zofP=iilRIx'Fgne-OF׾1æj[jUJMu{_;'C/#( qdw?}np{-_p.lm1R1!!3k$Wb͕ើ}u'H|,LȨ߼Fz{74?֤Ju-+EkEr*RmlW6m?~|jMdqe9TRW`nw5u4-*I=XD RÑrXvXrBkn8q|S3rRF1.?xxǡQ*fTI+X8rA8TcS)t8".+̮ČP!OJl6W4vu64rv!lrCckhKyLQUڼ&UR<7vtAeUUR-LǢJfšq8LrO_R@:mY;efj=#py.s]œZZ2 !L BN#MJfX\6xF%Yl[N-k Le<6hO0: I$Bv!69zQp6h8*h=C RR(v%WdTDZD/ʬ9ٙ%ZYei3s s23s K5? q^: mCEcO@ O$2iԴZed" HRh4 )K繆ݮ\ocAJMM! ,icStձIxh!VD"6^FB!|3:@_6 dY_[rJ8 ,藱 pBP(dL K'a` &`)L$*#˿M) Һvȡر@ CSJbQBƄX=-Vh+QKQ+pG80 d<>>$WGdfS;2 5~|zY%]Ŭ,+ϢC(4I d0(Ѱ#3L.(*4^SW_଩*1QMI"$?YApN|Z|Jj5zb7>2 (!r/v#m럘[^^ZX˫jC t1pF`bjF U7흭U(Nps?Q2S '~xD,cE1-lnmmnVgf6vz¸Z(PȰ*FBf7w6667>Fpo{owooci@ssH|. LݳkKs3ot?==;;;1?Ҥ(Iŝ!د|XIkOށAooWopp`ph:ڌG!PKW<#G"qn`nlu1NW[K]uMSGGGWή%* E: JrtPHZ8>ޚyz:;[jl6Vms8l& 4Aᬯomo UW%c1:F" |ktunRE@( DRL.h?/dnh_?0BFh{!@*0<^򸧵֢DBBID|6W,WHP&|6# 5M!c% h_E8 "G &)Ӵpm3@\dCIKbL k֩$\k;G5\86̩^Fp(tfxs*qyR΢ |%fQe02kFZ0'M)5OuPִLNOrojtAĐ  % ݿ{uQ CRlbr{xWWHɹXwU::GVY_Wm:<1W쟇V<Ư_9Jig|~V7 MYvֵ/nyTT\hBrbbIɍQR.kάDrV0@0&u%|{d_ *m*.4 ,lZkoggk}qIoÓcσkPlCy~ VO<kcz}+.bzO`'lmN*qx(.XqˋӰ>aoeuAR[i{go޸ >څ&խ(2`Ύ7 fnvvu20^ HhhK8}Yt`sk۷n8;9Z $v|z굫W.=`+ȫvL̹O5YYڀZ}rƍN+KSnI.-t rS@a| ǧ|-jf>%W1 -,'WoӍG[33مݣoݹ ✯Jɯ2tC<FaQ8lJ=ئaPt?N[|sKڰ;z֝n_;>,-.NuIhUf.JJ@h5$J! Ԅrx Bٍ dܜ{|n?M)-I*j$'P͸ŕ nz`yb&T.(- 6^Ǥ$hYwphtbjO# <3\SԖF++ th?~p||smזQ'`cI!ffbձ1IʖNTJ[(+h 9V=<Y1(Ia2<lep0AI#'o>&Z,2Ylz2qJt\RPm6URV- }^TQ6C;ӣu]nuvf#}nJv\[_gTTceTmipeUdL_k g~-8֬R3G*|7e^wCK)׵ u @>Ƭ,-*kj=#S1 frDp7h*$^'7l8HV@㞱S VVXe> 8q%>`I%Q/f2WpJRoR>UʒܜljR!X\ZrRlr;1a`d%RϔBT(I%.[ڭQ)E$j}tmobnp50?X+c:]W]f0XlFOq>ns֘dTJ.3{欤$pR !S9l70 h s2YRSOOM u4桵Zzj<"񙒁ÓqO_4<'ta~QA~~!]dk3fKK~.(.d(z)N6ftwEY+dZyȡhZ`mmi!(T4\'ŅZIz=YnPW:FRhٜ0X_\[T^T] Cwщ4K jasHTJf2Lmn!앹6]S]7o[b#A0T7^kPTC Z.LM> c@f~'Gc.sL_?a͸ioPITmG|~pDfR+6?Ya5pE{TnzGW` 7 0CW47fJeF[?{Y1 Vb[~'_}oeȐX`crt޾FZ*Cqt뛿o?8d쫠NJM?{wg[]:LS?84iw4KHIl,vǦ߲iU Dچс߿ &F¡ r??䉿֠V.WiR,l(Zhw)zݾ߼ Ahå󻯿?/XLfatΎ˒](4^r{"hD HUdLbRߵ콓پɅƾջr8V+'`0I$M m[O^jz~y{ij|4T]q4e~ّD_G:` 4 6IE|[3ށ>/= \_[ Zœ'o35<.{'&LyD .9(^y:qcvzrBH}-TE(GFz7~k%) ,cɬ~q~W^{魣աZس8i+q<ŤjڜJ_=9=^{73R0Ñ'끭hZml&&2dK@MbɅBS?5=΋Ae:ˑAU>uwwuuJB4sȘ8a 얖/ҘbaYj}/ZKNeYbr̻k&`4(- "#Z'CiH% uRӋrF^:)Mqzrke*%BchuJNPr<u܉çq4fQ `,@bl]ܺ=RAN)+xEi4fj1(%|+*P`mmQ*+*+c"p}BcJ rVہZd0U\V-$e ' v^-c1LW/^erYR)tteV1*DWkh餸gH0X򓭩ʸ,6(jz YLOI+h9>UL6ɍum5J*7v{B38R(0Xr>Bλv<.Mˬ 8yd2m`(08|H(jk Llt BA/d\(6Խ)tF/DrFP[}࠺^dg Wn/jzLivPpζ\$㐓 @#LͥW@]ͨ(//5 vqey!()***-ߪTB1,OQYh*DSd _DCc6WBqa4uSEY/8^|D3Μ![O8>`]T~-|>P *vnsh6{|% ¯TORj*q4CuqP<) k}{ $"b=gP.#.f( ƈgZpS-`̓RSH! ǡ328 UP*5br_XXT̟2idR2 XD'Ia<x;\R2TWqBD& <.YQZM#ssEk#B)Tн r#V5u --M5v^!`eHP!T1+A%ye<OMLOLN''&|^wsQ.̓E*qD`iW鈄8l %\jjM/-+++ +[s]^Y.-sN_e"NqIiYt lwk+sKK[c Z15==9u9J:uzN1}_Q+3PdE/X=յ!wStfW?\YuשYE"յNi! ܌`t5:&1H;qʊFlXnVfGjꖁͭ`pks}mqz)/ۇ7Ofɉ!|!4p$f]^ej^?88 딶͝Ã= 8S-+Վ*i qH;21Zl˷ LOOO710s͍`p;w޹qxgmqivrbjnqy-xxz[ϲX^^D9|cd FCIujixΧ;7wwݼswnCrw޺~MKˋCR*P\?kUDlaD5|2 Sݹ8 ,--/̭l\u;C}$2%II/v[4,@5Tnem?}LO-.N-\}G@+,-FWwt+C0VlaIYJ)-|/ P{77gэ4wCZ9lgR Nk%hƁSvDFNyW^zɋ\^]@_9}G|õlN!ə|YCJ"Zg7?zW^y4啅kw?z5Lڥx 1V,k1h }Uh;gf7N~". c#R^O$Z­_~_[Y^ڹeVGA&ə%eLFeK^yF424468d\SNXQbWqՎnZ".E8(\G]ntK5ZM"9>!SE6kEr2CۛSS{_ uإL.(#)_k)1QAC K}}=> }n҈ܴBb[]Bl<)4ϽM -[{{a|mjdVs(D(p[kJ>8@`6Z¤L #C&p==ECzښjruFT~MGàs陹L]2%8h׎E׌GPch9CC՚2=3 H'C8Zk*R JFoU&w*a|{<գhUʣ7:Y=?3t]>o5 (W.U:!r#\zڭphFazj I mb DV" 1IRO,U+9Q}$Zi8;9:k71B"4.*tKBAOeWr$d M8otkZ~Q^ACg):YlB0*s#b0LD[qᄜG[g@>6R 2b6#REJfÒqhtp$f"=99b_C߂DX 72*CH+T) aE&\0lzn>4y2ֿoLm Dl؍&Q*U- ?hIAi ]Mcc_MH r{P>:9;w_r%`lc"OBDT_im'%&pgBzIII3n.C39IM¯A1 pYXwkr)'cĔgB+*JxW7:6iÌYqEYEQ.Fx|713Qڡ] ㈔ bT:a3aG342>](H§(z1061:$䱤>Gx䩔jJkR+*2.O6H.u rQ[Rql%<ު-Ϥ+E_ py2$;<2>55:n51s2貆彽@ C#٪ap)dX; 4S`0U|"N.,C~qojz\td*)|]!^VVZVVYdz`uck}}e[˧'n-BiQtqӠ-׹y.TՄA͍v`ԴO.ݿsuHzܾ6T/?'! fdШisXms *v7V]f66}˷IHӧ\۞ksuϥ(4rFюކ\[mUqe-[7^zEI!/2:yk/lsC'L岃[[s#MRwo},EkNq_w^k<p"!)BZ+|lnnV|N<|gLEДW.Ap\{o?=w+ .J'S s:WbQ?g>b'EُsceA<HV0t7x:1r_~\F>+A_8U'f1I^0J㫷>;l\t2!.O5Ѩ`+FL,N v(5knQ&6*\Rڧ{}}e- ^!_QHosVe}a'3O>G-]&8_XZZ]ؐMx}~q_gI0,|O}oM|3"*)n5CkUON GXcA_h> ~׿՚x_tCko{\=4 /ccF[]GȈOKni&..2Ӥl~՗y792tF?~QXEN6*ia  ]'oꃗΎ͇㎒(+Vգ{7G{;<WOˏ>~KIu[Z\ޏ~w.vtGr2&*H O̬m}og{`fw'?yP \Y)IH*O?O?xt>8Z|_jĔL~=E;6=~7xڻ?ư!$ 6M1}W^y{SjoymLN@k> RSRمݽ'd#$qed,.>xnoooMXZ]N*놴:V5Z(Cc=[g~s[%/߻x{]RLdQ!Rٮ–\j2ͣwv*eEf*>1wpn֚Z!8,lLȨ @K :Z(bHoZ[۹.!%ӊyN* δP$QjZ[jMF^Z kQ1&2ԉxl%gR+*n>-9|ΌK/4@nnjeIq%BFYZG.YE'6MWd12Q>^wz]ܝ-6%8"]έ!#1)yBGKWUȨt/|$ib/Qw*g"m}i$Fu}`  ,8;ڬb&b8s[̼Ғ2UQ#r6Evin)1&q-D" 冐v;URzn!p4-1 =mZ6S*s 򋊋JrS BBBCp4JF&IRȴ<ӢWviiT 5FIKMI !"s5pʋ#ݒG)ttwtMTPY$`9jt848qX".7v5xcEaKhϽ2CUC4.bCm0@ ZJ'C"TH/]^>ǵ.k0$AƁee4a!Jk.t(4 )ńH'X#-:6-S W kHK*x!4IB0L 3pJ>-e^YT&̀W€#T0 bC^ 5 KB^p/] 3`DE,!va 4>(,N!Ts ITc`|-&C I">0ؐ_+A w7 [!>ad+"Ę-DآP.#a.؜B7^_ <9!\ U1XF>TRr K f_D}PP"WXDJfdB L N/),̠^?dq؊@5R2+X\T&STjL,V1Kr))P/A NH\/`ŸD1St֎n`7i\=/=Cwa;X,C8pF^PhOLOzmjhIȄ~\l92a#O1d6:P3ZYZY\;;{{;Kf#?=2DD.HwAsu9\Llm``a?3?=;9:>Qy6z̢#/vNĦd;GGg{;͵ͭ=<2 JI8X2E CZN{fswo{kkea?6<4_Y^&u&Uen*.1EQGDҥcIoxwsu쨯oxz=##S3Ý^ >P̙H5]K{;CW{KKssaPC@Gm]CSsK['uSR"^:9\_vw4:FV4r#TJ*NW׷~?*-"$_H4GFqdDoGä6ɀ ͬlʵub(҅bf>&2ٖaBX|T"9LO"|TxJT6=YtI H 8RӍ,gUzQc7UR!(:g}ݬpKJYSgbd1!ʅ`I`R㍉f[Yʒ-}=]5P {`hddZ--,f;&Lb%-QUAd&Df\htGKɱ5!wO,-cmvyea]k?2hxX}-.x<>];VU5 WI6(Kk$?jK0׾z9,(![''Ҽ; &w1 6jTb MP@h?U+G+-@"' ޭ&IYnk(C<2ii{;[)oN8XYt(G6.o.e9t p:z\sZ|Kk'',mgks}u?20rs>u)mQ.ӑ覉>mev~`fu}k{(]~rM@snonG:ueY9LQ<|/%Z^2syiwO]yó@gl7XY+2ٕtٞ谠`jeX-?/?;:_w:]].m^vՓu,.6prhŊ9ëWatd&aaz}z-܆;ݻ{psyyqvfnaiego\xDpcuueeqTB{>0p@æ1cmJz2P=xoo-./-l7apc}mmmiUepK@h%=tJu&"BٸyO>~Yj]`ueaaiܻ}p7 ؐDf zxY:)̩FERA23\\ Ñ'm-.3gwO0X^l㦓r-P>Zlrj:ɿE>:z/+P׷fWVggw}'_wpwgk}maPDJ!(;լ "vnQJm(Jr0rz/ ~铇I2|4KH@ T6㓳D -"q ޸u˯O_ >~p |ʫ̂G_y9Y$(vԕx<>ZXetup*S'/(47:R|!g$CT$4y|[{(:P/MOOBϏ`W BE˪d* &XfGWo>x';4iW!sQ! @YQd Un; ;3 {]9 P.mwc<ϹW^ *,N,nhQ[N*mk&8tE-޼y|bbbj~oXYFWc]2!.@ `w^+JsCM-8|⏓1h܂8ɥiI-t+fB|'0Ġc9qQtnI0|Zo RDDGQ E.H,nlg!J_ =;=:>=}o=GHp: jk*FGD'dյx"1[`prg7=!  G#3m-YIaE }_/_kXzWC)MKAA eXΊ1M$:O_t+|=欇>hszl=fagR`\"b+0kaщmtP" b%|BtyES?qPANO]!; 6!REhdtDKaQaV-*D"P4sUD٦ ڞz|9^),7BcS!Լ_aXT|>N[~Dvm]eiE![1in':jkjs;E*Zu&oevo/ڎ K; :*'Ɔig'9,tjj)0x٪ɾ#^!HЫضgŘ2,ugaD3i3N&uZRB)(leL;wMH8M5nwV*H]$ۇ#}k5?`>>[2pVfRay5Rǧ_̴v8h8l6褣jYpbWc L=9+Y]x @QCK9lYmna\ձ[5 2-_ڻyf, /hqVWT4Btvݸ{1*PA,gfރ]r="‚z8ĩ:=M"p<#tQ[^(OdV+\&ꋠ;efW!|z=^ո1#aO;νmfyR }-.]~o=ӏ 4^g*:Q;r) Wv]4w?N/K:2.]޺Po8ΏNхN^^%DA [~CpG; Z^ù$㠳a3+i]d_C=(1F Ezg_~ؽ,&1_tAN,Wr4[a7-I=//,(t᪌W㌆G_BwFjղ5[s?տ#a| DjtsUÿ 錀DM Awa3mI9:{OM-6/>-C׾`Q%d}*"#MQi _l*%g_cEG.|Pe{r[DJqs\$ C+FdXUi3h(M.(ieH>9)|ݫ;K6ǿD-N0lakefB:Bɏc [8[IYl8@'gZO_~pPsoWVBV.$z~qF!*<tnMNBƃ\a쬄OE< !QLMe37׿t;Nk#}Oz.dC46W:* fu|Dtl|2:55(`s3aJ kg'Ǖo#h[62K~4_;?gGS\naqVesil򒖐ZͣMMWg$29$ZXUJ&/ªE1Nj_7Bܚ~^cD~TTDl,8C4P45![?ŭ% TG#K}_?kD[)!=gRpILN5zwl2+Rc0I,g,ŗo''f7a.?}i(>&6><XJrӇr&M^iW?{խɉB$ILgsi~zvqV>*V?_qLMk:.6.1w'7ߜif'gw}}-ׂYT|F)iviavzN36>6xWgC-,!]^Hi^x|o޿53mE|o<2]Y4ye}}ѳ{GqshX2k1X ɈW@0PdZ1Nьx"Ws6M|~׼D̊G4ud''I WǸcdAKꑮNDLŠH#v )'ZwoĤ?S':fON 뗁glrF74AƤBpOD% E ]u6݃Gg3# M5 N_>!'n@kpD" b׋vxsNW4e)Ifls* ݿp?b{Tި18"4FÁ%4fP]TyX8'u47 M7_WS3+ڱ-h~ڑIFlmjO~"&fb .U1fQ ! 4774udonաQւL7|KC}mM B"U U̮Z1M$BlojnY>{{.=109|ԣlol\]S'QՈGp5@Z@ׯxEĢ;U vW#H%ojjY<~c.5!&/ ;|ȥ @UcSScK7YS!쯭O &&xMNq啦䴲촴mSIY]% Px><4?xNn |JoWwCWYoޚJFec*32g/WӍkYDA#RLB)LHTނc r$ mD"d!]?x)C`ZmK[lpXC|զͶ!ddVDs-Fe s\F]2r1 0vN6)4g;ʗ7&}EyYU=trjqnrB824bkr¯ZZ j. =<JdQ;<\V[P;bb 2,;)*%VO-3 wA"H$Cao}IQ#{qa+ A\d%wU29V+ڞgVg76ֵ2Jaocm'S>)%R] ʒt<}^{)']$ 2sbaQQaQaq}߰L#rZkUQ^N6[ss3IK0Z(񥫭LBgdfdedd7xrؘJ`gpA4Q]I X-HHLNNMY)Y%mQĸߐ݉I-`v]%~7w=l,3Le*/-q3< %ZCZ+tw#,hІGe66VdlB)!.0CZ`@R1Y~&-ڟzŸ1@.rL`͂ Nz bd,g4L>E5L85 4 >]eB]x]Юk-`X捡ވi^,.2Wh\~PJ_  baE֏ȸzفn)$$11>گE)Ġߕ>'س5$@a2`Шd gp箐qI*Di0 K0I)hLVnaIYyeeuMMMeyyiQ4+hC/+ ґFbOtF^IU]KGO?@x$bow{SmeQn:1Z}n\nU]TM JFh*Tĥ;sӓudj~OJ@qBRznYC7[o [;ƝEK67ƃWexR@F\":y`De{6f4lvNϞwm/(}Mi#п7 r^L,# wouY kӳKk; v-.83%v/-l!Ss+E&of6/N)cr;سkyiIska,d+vZ반wVuZ\22<̗)ʖɶwp5)MEIvbj :`c2+p5Ͱ<= FEa "dBmZYj-L۝I87&.%:i߷o/MDŽa6ARȸζvl?H"Ә,h\>7z]kҁʬĘWBC#:.%>3B6lMIcد7vtҡ@ls"j؍]PKmzO\|:RmlnhhohiminnhdzCnOde/cE&4|Ge`WsmUmsGOlmvuIV_^RC*v-frdtbV-cwhR{˫AT*q(2"#<&!U}~0?L拈Tf|;vceIE ʛL-N*vP<Ӗ|zO]IaY ?g=)|p?t8$uO94im% rFcϫ$.@e4wA4P+ ku^K^bl({j gD$")]jY5j,Tu4u{Y8 p:l杍PZP[j!z- [>$4 \6$z^e{aBmNvVLm//׽V%boq~Z18tN1 [H~kh{`iYS3EŽPb5nɇ;r8<,gjr;ǭ%NSAA3s|nlZyttrlNG;]AvX-;,vHw\ӴXn ^Ź4f۝.<9ufee @ڬd\ӎfWe_y*xƏeF@p@cVfKf]xa^l6Hl1Yuٙui"#ρMO#pdf o}kTY0v=̇'n߹ug\[Y^]߶|XM \izn3gy[CإtJ ~0ˬ(!hlNgowptzq{w<&l۷.@Zޮwx Yi]z(j=UjWm& rO.`у b2&Hw@l.ݴ(Bgb+Z ؂vtQAݲ [^01:@OoB/?~[62f$}}s&~&5<5).L5.idL;TdfW,[]{'g'O>}w;Fܽ{*Ӳ&su2jm:e#b@`|JܘI߀T8'O=}ㇷf1l}7#P{/ec3o/p2Qq =gZ\bSS3*(#^{c>ln.wU42\):.?>ZA[ ]1sO_mv>{g6ƭm_0vzX " ]CSҫ)9 =fÎźMO~w@vDDrZ{Aگ@n4WWw_SqYȰTL~Q]Є-#]CiC8;>3 i) >|#yrL&bA^ikJ7 _chv`#hpvvv Jfp<|'&:.9!kRfTv٬bU82"_el0;>}1tfd`R R.Xq-"&oH<>>JoD#Ske8΂wZMr s3RRRRȔLVj3#^ FU:hIH),-}1+)*n|E#T3YXSYVVYUVY-,NjsTFZJUEgYYqUmQbvB;HϮkg3, iJ#ugw77W5ވЛz}vA+uf\׈UK K3 .9ȴS3ZFRɆQX9M3Z kqvü3.+}M0F!& ^Z__YYC }hr3OJSSDtjgת 6Wĺx<dB(`6X69 ޼`SvfCWD&S~wHήnhRAi-hﴙ6t-3s=,2rpzd_cttqV_ ut61(mw\ Jikh$ْ.D"sgvotuVVKcCCcSKC|{^Hd.ִ{-py2 E"sz'sH$‹KK˪c׷>v!'X;쎉U%-0>BZ(% Ezch0_}&1R+3KѤ!8·>`CcQt81`61q7S/-h"rC/toto\ k-Mw<ݜ w/̪bG ;m^?KB_nnM{^fE4:Jn8?B(w7ܝ@f n?g$/%!L8pAu% 7dO$ Ƣkmow>u̍Y/2iQ2Y6tpӧ\_~#"U6ۮip;L [ D#RrCj2nh+7њ}nDD~߿Ӎӈ@+L q챳:;MM>ܒƴ\Dͩ1(o=мon,&u8TJZ'4{_{:4"tKќ}UxBHs mZVE,FDEA/'Fӫй}}^ͣHդjo˿MJ̘uh+*oל ` fy}Q+U)yQg_JLH9<ʼG!҄)j?rIR1{l7l~*TlR:Tq1 f2toɉƐ`bRI՚yR$K%&% bzZ8<"M+'VC1;?-7>8Si6WaXEF$g ʑU88H2xynO-j4lE#3jy׾r4+hKj.g>Ȕ-N tRV~FTZ>t2=8ؖITlZU)W'` kPE6&ō9zb,*cR*4XnzϤ᳨,ҼZzz;ޞCQϾUNom.OG>}rbcE.:~gi.![)ՖgO6vEc7~٫yby{cJ}/Bkߪ! EW$"ӰC_}}j-.Ͼ߾U`A0]NRymƋ7j[-$ٓ^<9:.0L{Ͼ۶I>T8;fW+P jW@&8orײ877-߽=ւEgV#cE׫o};Z|\=9s{ML ^pAhkvF4'?/??}Ge' _^S@0ųO~[N2:ֻ6(ʼnp/S̠U%]ڲI%BՆ?|vqWO~^߽Wx|ӻsƞuzf J:Dkϟd\JIc}un22fwg ˮo׾57!i6+.2<$`U74]2t&* ?{ 1UR__ܨ{rnvan~vl;QNEQ{/&z~ xHrFf@VHy~<2{CEi]ZVJ@u?~I2\|lCP!|?4K-ƍ 鸐E"+w1UJL+klOI@}o>oSz=x S$ѡnjy#`'Z2wL)$ut[shTFykWK~jRW|Z*?$U r,GD'1ylHokn]8v7QCȹ Cx@'&ܾںћ$ k̮FihRex3?撛 ܅&Xr[jj[%_LJH+Ad]O/Y0S؊Ǫ<|UbčK|퇡\5$LHM-Ч0apWU*()-D%ewV]u--m#)ڒZ <|j|\:9s}YMj<*++/7G1;G7ϔjRzG"M^a` $p,ޱu-7ddT}'(TD3#/^4e SO |>;2ٽ4tZzAw,),/ƸԨ+KlMɯgsy\X,PMiGY]i(4&yXX__<_cvF\[tP'YJAU D BʅV]Hd F>.# =6 uSE"sJk:d sLWW5Y"1APh4:28\FW=BvtdX)c2KZ;0Ga Gi]uUdD:< "O[[[[ZjJ3c|C!fQ1Y <"%U*͵e0(RJڣad̮NSWH+(,eH1LPZ r@hizZJ<k!2άZBD Z 7p@9WG;.fBa Ǖō-qp|6̊i!V_`o@AxhF)V0o;Nfmy~F3I$2'ԺyulMs2b``W:%7 +'gRT;]R"r `w{SKg?LvM;{J/ SNE/Sk**:1Ж!P]+tWLxJk1@$|OGKKkKG x T]RPϛYuWAT08VMu@*WiTc|@[]M?֪c%RUW܈i]* 2PrO~7:蘄ZުRQPT58<]YYYZZ{YbfscmyqZ#BrȮŕ˥ L -oՖTf yΎ3zX3+F@cI^Q3Um=*J ť:,Rܣd8]Y X1fv6 QFWE~~ i6g7hB KtBvz`.-iNlVxv;kJ&C].j3mo,59igR2CmANfz \EVIryls6 zMby NK59eYS Rw n v 2}Xj :bfz.jZyZnM p`ANmYԮZ].AkgE^3}޽=hj6, ft )JMz\t2ʢm]ܒYERY7 `Ciizza}/@ni1.[ӊͱd k K5cl{S,[AR&$ -H훇usxrvz|xAz<.0CƤWgMYH0ޯkt%cikXIZ0{v@͛n߽-`Zv]ܼyѽմ6ѕ0(Kz8vVuy ][wܽ×={0lT@/?| [;u,Vlrݾw{wo߼uqqvqYk\tzanab4N5u;9s# }=qfɭ; ޝ;z]9vYŜѰ2Qa=_Dt,bP;íHK+OBA{>~/? c{,;˲vhO :Cgyh^##7o޾s.T|ba-&T)&TҴ4_{ Z;>m@gny{e0٬_nLDDA]$,*6]ChȥaePx<ַДf>|m GGE#Q!x_N2, 88m2ӸmX[]2ο_Sՙ)B-jQXҐ~9-o-Mf7S6n)NKBFfW6&8e6Z_񭇏/܂vL>i]]P1BABR~ t_sޣ[W,bɚ=^4\Z.mnkz3Ȝξ9dvx/_JC~h{ܾڪ\T|q]oOO ۆAW F ¢3h4vɘ}'/7g[qS "}ӳ kw|`#b}mG"tluA& fbB)^YZXK2EGW KCάZwOCdekY+b7g&#b!;&S$cקT*-"%D_ HzɁe5@%tgXJ2RpZjq]\S *:b#Ä R[gG𪵷px|^R@)bql$)LarUy? ]v|qv5lzz Im %24": XX݄1I Ya;5H?=8`_k6aӸsH<RPYYɉY]<٘Aj+J|)<D` 2 S\VYzp =Ɛg\/3̦ȃD i08EQb ڜ8>g(o%8sַ ţU0+)PꦵjZVɄ޴kKaXTbQn5E-lB"zȼPAIe];7_{[zRamy˲P%LIh&qhAִֻ}pa0!K?Hk_{(_"TY ꫛ̠Zj m%_v7ߛ>f@Kt=>;X ^$]PRT[֎ѝ{v]._}}rGӓIôV,jO~ٲFH" _hTJrFEwUjntt"wzuSy{o6R|~|Gs- f2$rkӻuLx@.~?|6acGC&?62񯷈ܦ8'* w]nacI#"x꩕>P~3@o~G.-}wvY7洓r0q?5FoBd;SJ K4߱v=.ֲFRx2hJ\!.oaA'XZOI HïKbd +n^#v)2 lRLj',mnCQb7~~(12 EW OͯtD l +S nzr8J1AQ1|\# dٹ)Jk5J[ԧh:HXl,ULX~O#)y O187)SL/ #UszdD$brZ#oEq7^2#s:T{~mJ"ta[EFE&$CYyO'QȃtrvaJ9?20+Sbٵ0XQ5=o}۩ꗦTB98w,Uqɨ$dtdTRyus;#i r~iirBmyw "ÂSUDX8|z2'YXQ ṛYq'cЙxH7Z=zy^HGKO_K |A阤qdz|]rlfu{mZ/3m1шdLVzRtTl.~Q^-= Zb hdZmyV[^W~_7>-t".'/;%6&C<9^3EU; ^!,.ǎtto??w>~rԍI(.Ofy?ydL>5Vy WK)>p./-,-*5?||/-..%<7!Ƿ??ïݛHUӳw޿eʄcZnVlbv#}غ4;-2^G瞧?yv2.49Y {gOؖgrˏl3_ IEš eV֔F%j__w۲߱f#k˓˔}vw~+'X U-ڎ=KtxG5$ #HLC(fҤGO[[rc$ĥ57uU%Lӟ1/nw3ÊDz?'>*~:CJ@0E2 $܆cZ8'碒$$<5>e޻?ɉ^7=_\Q e")KzOFGġ T6”V. sn}児t]Kw[):1e鏿x<124+ @'USq01 XvT1*2&r!A& zEYJʨjm/MML鴼{`_*$lX`"qfb;Gý=# @OW{G7=|Wu蔌v\s :m[Ύ^EV)1]< >@VyB]aۚں "W_Ӕ$eRm#b;{\FH}1~kAGA"<2>1*"rGsC}cCcksʼnMudT7vO4tTRDBm-6/+4RWSCC}}S[m;x$*0;5ݵ.Ios}C}CCs'~D331&eeF !ᒌ͎DqV4jlif/]<;)O+HIF,߾m 5644tRS @I\x @*j!\%,^qp=Rd%'M&ٽm]Q+5a7BO~>$,؂vR!*DCdΝ{*tb< UؼeH"SIBLiDeqA{##شQD Ʀ {n-/5RRҪ(-{g^!%rbLDnFT˥4O!2ʻXbHyLfWN~_ )@.bL,;ksT"8f-K XHh/uaxT:>^Z[[TڂԌ°D=5< )K%"C魃f?SH!ܻ9s64Fe27<<<))$\P6MeaqɵAv(8OE#SsJZA*J%Tm FXD<@ {P>@n B4[TVUى%2ap$|݊ 2c"/1"9C&-$3/*.iHR9%T@Yji $Kg T5v TJL2Dh(LOE%*DMBZ ^vvKHLASS2 ډlP,Tb0i8pLʍ ?H|S,,S3!~TUF%'"-(8;39.kw8Т'W+[\VVZdF <L~-CkaA+ B; [?$?wU+%M9 0?t%w80)Xٵgd 6udq=k?ID kѰ\Z4~UƍUBXȾ*65t芆Mț\kW $pD0 #Eﵤd3p 2O!S;?phtDF>qkc223srrs23~ȡKG@Kh VovOhĖfچ掎ҢtTR< /]:Q0),kC#|H$qY4<0y0>fn2vV@8NW4rOSy~V*xqպeWZ3L1$\Mv,6l׶Mftv7"jWMA& dk6CZkzU!ŵƵ9r{wNZ e }!pd "Sl;lb$Iذ5%*^+q&Q1qE,awh׶2Ӫe.@$1RFm JK1&16:2hwԻ0dUx|]J.lgkk{W/Ie-ϲ$Ue%!Sx$naD\G5fY˦;ۚꪡe ӇR݊mع١˞r JNCB-^ʪJhijpD%ϱ0ԘBYWɸZ1&]=f<<+E BWcuYqIB nmmi*((--)o' ^В'` D=6&lG>Nb܋ KngGkscc[$XSQVTT5ZP\$;a?Y EeT&gxEl!.72Dk-//ih GG$ ;alXU%K,> ²*WL*G !zjfJQ(%TɺϧjN2@`NnlM~^iS?S_֯|!WO76VfB07']=,Pj0qpb f昭Eu}LnnyӰm;K~X1j4wv6VFgYnnysL"0{|eQeęVsAvi+MYZ2(l/ѩ"`[mV Bm^vqϘ>>8y~S _oYǧӓ#ߞnޜe* zQgNiuܵMuO([{GG締[Խn=؜$nԫi䩍)jM*"2<,T>,#5pz|*ܻsώ`6{Oor 4j3, 2PUCŽ\RkFVYZ͛gP1>xݛ^e֝۷.u{P RIZJvlIMHn0=-_iqO ݺ{wo4<~;o8-;styvߒ kaJ$:]Oܲ:wܻuIܽy~[L[K H& Sc`jQfV F}Ów?zp4B6cwrqޝ;7O _#tjL85Dx@5m巳)>,>J))i 龂tt0e{^+!T栓V47Jv7a}L 6x_;9S\RquZLO\YiDהw \aa8FE2;W=;{6OBP lVW]OcJ¯Z=T:^`rsLz+c:bMq1 RWVO 9u]Q>?#8pGq8}tJf1IyU-T.#*>3נUf̠u#7bתbz\LT,rh֒H&Oa b{Tts Z]W zFL4t~M arD'UC[]`cLLF{ȥٙ˂Bgd2!NC'%s&(-:,*!KY-7;;5ju EEiitLnaqq~F\vsIZ̍~:/&eT%6\qÞqGGg7$ZX]Y]S\_:8Ħ"Zf\VGxrY+A8;dم+(MƌLL[[T#͌2RE";cj͜] 2EϑQ:T3_0<)h*FU)79]}= :4<),*= ;ãc;9;[~S^iFfKK:~ocgrŸ ,d\TJ ]c0l.*9U8 Ɇ^rdhFZkFikc外~հoKxF$4MJvk Cu4 4%1۱;;F;xnZSڨ5ˁe]ki͒M8)µ34Kƿ"}2fhL >ddr6+Xެuh"$F|-U9u.(͝?0P50͓Ki{tz|q 4 W$2#ooYCz sD82m \ݿp*("޻䖁YK߈Dwk|/=6rTw䔐͗)Cw<섭 Sg;(HŦwL£2SS*P kys'9ޒn "ZZ˨WyWU‹ "SR._j5zClʙM+skR'cS'oۘ`Mpdr Up)ޝ=hA6.il럿w΅nGVl 㼀B]|!;ٍb܄G0w6 p>8Wvrg>0OJ9 (/2YY='d;#iK1N*W;d*;80Ce)%U'}0l-˩dv׿-h#OɌR3_+̀ qI98ڵ7ln죿uHSXԡYrjmgeII/A1n~C?1Ie!STkw5H]Zl,}Xevo?M Gg洣 :[0&JTCH12*2&gWL>DHtnnV71}g6) z 2 ^>_ X8% CqhU"!M$*e歍ύbj攪G_><ˏK_Me':~Jd~o`&1:>wtDgj>1@58-q/?6VLm&T "NKG 6n>r{7ǡˢZZ].?}z{R [|"Xx糏M)7WC??=tD<:+''/ ǐzq֯7d+' p`I8=6-(,oxp']q٥%i94w_9}TřEه_|xH] B<{`_^X\DSg?{|ZwFBR~Ck}[}fbJ!k|ş}rW-o]֕rI,$ݺp,-.hǦm/_||x/31ߖRƳO>|7矿~1M/͇O^ݛ$^ `Eš;M?7)i7n~_=́D,'3U9|o~vͩ'[Oנ~ 4 lZ`Xh=d$5ꗯ{ƳzpXx 2I] kb21:w7 {7ļ.j[zBj sW4|&iDeԦ1 tHw7CX[L(gOm ?19OlLOLi[Qꙥ96'f#vko)5TJN[S17rYLx䧠 p̤Ʃ_~Յ&SZRTöqӲa&Qe[Ͼz׈Uaf_鏎tē\h2djnwztx| kvd|vkL窵"r_W{[{gs' &Tƹ'mm-=x Z(8 vɘG'cCajڍ-;)%\y齭mTVcKdíik_ و8L#uT"'͍M-fšLTBR;g3^:$-s?TAިL(-M݃R[LŒJ=P/kuJnB&e4\=oGܨjhLH=Xܰz;3JONNNLbm rogggaH0?H 8~{f6RE)OF&u/71>>>,wCv˚N"#bN-/ !w!,*uL&'e X4]sx[iHd|bB|BRVМmߜKbL=5.MyRD+9$,PB-Qjl^:f''Wrf-jBP*N?0vbcG`/*!lB`ƒJE0^Z]]@WO*]!*J*Pئ䏊GRR)l`{uq: Sсs Ht\}a2~ަ*N$dv f1HT`_Syqai}71ĤS&Ag˲c"_k(MD4[T؆~0$848ep F@#I̼֖.,%x#\xlL8D'`gqK: %2s +kcR%&4BWS]uiAnn6&5 $d+}.`/'2r j:pxT '-L190.د 9oC㐉)ܢr0JǶTeaR&-~Lcju)MSdBb$]PRQS[]^A$%82 9Cn\)v(B Iu#LPAB~r` -9A˴X מ@ׂݍ[h[yC^;a!Z2 gj2ePEE]|7TۼCۋ#>Z1F-y@W Zj@ȭv}>ƜfLȡ{ۚʁ?X}sg #Vm:|'k\T\t&$.TxTQ;yx߹KdaUuВ}pk~*z e@^kkV )JJ **/.//..,..m$ |uqG!=$s2Lzـ~|`]5W偅DC3XkKK ++DwqUV/"DtwMUW7tvc;ZZ:Ey%8js".JE~G_$BKty@CyQnqM{\R_ԉh4֖gPzi( }A3EJ,W8qi9uQvfnnJ3.t66`1x+R[ϛ?ڑ$0i!s;T2O>9k* &΃GAT+dg n 7e'.=>iYM|ӱW*j" mqMox$2Oa1 ۆ͍W\>.j0qpV+XjmW 4<"I*ʰ쉅-ؕYP e1:/1L?-!7f47j|i?<4,HLR!arpVYIjVR?&vVCU XJA qs΁Qڑn_tA9m5NMvfilvzvKt].\܂dm`b!%)/#{ܺȬ#>F[s3Jf{owz{%|Vcl0g\%6Sد84 ~_7iz{Fe\]^\8ݞ]ovwvVBsy~2ZzeT22mNuȩ=~Yis?w=.ΒuQ?t 昤"eSZBlY]2@~ٞuk}m`= ;yMYD_a"$׃.inmH۲QݽwNjB=ukzm_]ه*b1n%i^PCZ,lkE (56 >H۷\[ [b;DfZBR'z {E!%Cՙvp{@ 5wxv7&hr=.qƭ5l2kϸxWAZFY߲8\B;yw:(ۓp6;/)IG.vI^fTfb:pAz @ ޹8.ŭ۷.Nwi͍y %Q'^ fb9]%YwnZ~s<`#ce!cpA;wnSDψ2HMVF9I~Ygw{N}^7`S][w޾"|my-'!k7"cS JB>: jgw|e4Yfa˺{|k:tsV\nP4LBUZXQ fdff cS*FFXLA1,/$eF! Jc[32sK 0ȴ&x;SʪyB>4!)}@Q%l+//*mli)JO!e䜊nH<ƪKM/mno+|Mh;qS` PAp$ Ga 2ȣJ R*mraGVVu78ޡӓ#4 2=Cr8R}=2m3RpyިL:j'*vfZkg榕RSy7_3qkQaI=LB7UTssWC[9&0w~~$+k+Сݸ'M-N`+Ңnwd +Zns9a|ve91\ܾc 0*(m6moZ]. oe ..&4HzkWWxj .xMP$Ͳ̞]oL|ȴhv&EAnb!NcY[j[^^_XCF;dv]yQ<0 ]qY~x#".3v֕ʺ]$px\Jv]1ȴ4 hUcREDjQ|ta}"| h۳w|q|oiޚ3ϙ{ ]QU,m]^HuwuaTHPmh/އ6@i]˖nYkjl8oJ,]z5Ǟ\~ |a(ӽp7v֝evrPx3Ti˚ջn։GT/xV!Mp$4` ?Nܻsvwftj호0AJX>z`^' J^@9UUU XZ_y.?%&Y={vGѱ,2|w/:ki0C`SQԴ^zPzzxrg7״AڽO?{ΫK Z~ 1!-"67qȤPsxk5/40Bfc.QK(u+ Sr?Q_Mav]w+l{^icfWM/^Y,K 0fQL˨?KxڎuW4rG,LLbzy/eX8&T3k&4͏cŏùPVf,z쓏.BDnZR+:(3'#SzyQO4[4'DJ\*@VflJ1y?z)G)h|v}gg{uV.LLlYaEj\76,iG(LZtշo{$M7ɳ~UDqkI+ԛfx5(DLlx!HLM.-8C"ظnI|_] Z3qƏ?}j S2K%dwYg&Ă"bdznպk`h4 8469?T엟K@§, D籶}{ҌM ,|g۴:\LHIKKIE%U׽ΌdDcJu߇~ONA$"&p`ݏ>5!]^gPͯ<6QyRbZvn^VN^Vj"Qe72Aj 1 dq@TfV>MOlC{>ɹ.=%439k~W_<1+4̪~A7mů>>Y#pHYx7 Z4.?t|홶ltQcw[m[gm.:o޽??~E +S짯27.#b|xkaji{Uho>x\wNza'׆#6cJW=wGEEa)W緎 FYJt}VJ<;,/,oKxJ{Mha :ٴ> !'7?僭Qw^6:3swR:<&1m|zܡ_\Y𕦧/oO3ZYl/ 8# iU9 |k|_W~MTfWGnncZ XL)Y+}?zxUCҬ&'{|c3T |5bx"ڶ juk;~?=K-IϪ& Pz1iu[7{6#um^Ԙ~#K֊ӫ [eڶֶ= |H߃.àE;ŕ5ټh5%>.][yXPn.ρԡ㝯l77- ;@w`R*EO~gY.*u3!^ǩMAA38o(']mtʼL HUx7O=Y蜊NV\g6ƙdɕ(ffe>rr/fb'GU0RT- CynLjVi pl|< &g&DJM I/]1ij8.z8ݛHGa j,TR!qRO[kk'M)W-͉ 5 Pw]Ё-U܁g̝~lA5T椥$7=v65aINKuPvU:,;&$cR7±޻i}zJjZV^A:9>!?-ͭlJ=.J]7nl<ߥmWD\V K"Uc<6 ud`o8dl [4Q+r@927^zk=G &"0OwOJLHOX^U 8 &;cڔ .I )e8\ BВY4ۓ C"Hh#\6Y K:T,5r)v1 R-AÙ 1q|w'OU0;4x#2&11 B"Iľƶ>"NI$ J!u5g$D\Jog/inx i۸WX^[PIM,Ș] y`9! ``얖o#[fׯf}` `G}lYqW8t]ϣ Owd,`sk@H6`x#]yA mc|62ׯ߸wf <_ \?Zڸz ~3p p8n * 9a~ ;<خ %σP^|RJZFFVNn~AaQaaAA~v&& zuL 4DB9txxX|3cd++.ih|*K v 8!ۮPc8̒B=.!9=GeF J1I6WeAK!,kbIi }4ڪ~skǰ_Ў2pe 'v-B Xk,tNy+Y]޶yV~c>չQZ[UnM>aLA !A xd&m}ո8a3<ѸvNeyz9"7,'NI6%a}r\ȡp}=}D2="Sϭ $Ï]Lɪ.f䄐C샦Ҋzh7}4#Ǣ&]nZfHD|j~ gvr5ECЎ(3S̖T?7#DtdLwlw̏hVֵt^-IC+/0E&b*cE!Ֆ‚ҚfS>7*av('=ֆA nˁHo&EZo0[m6bƍE !\1Vc2sRjsnzF%enoo^ .:2.,p#cRh=@ &rPegU;ܖlnl K B:eMmk J2t{= 5ݴW5bPYmR+ԮtDR[H,%-;}m{wx䃔},/.@lwBMxvw=^lҫiiJUW1 "UjWXZ\azF gj ȸÃ]֚~=n lA梬.6?^.fe$zJy{;[f;`8a}Nؚ mXu`.)Bf tTVhqbw`[#h[vwn i@jvWV͍ *=9Ef -K2.<*6݈[6ۜn#/2CT=@|jw;;RhN-Kn42U9˪H/̬l@pyCg7/N9;9򁯵,f3ԹMy -*2\`xhDLb1iiy=7#uXi ;j;a㳳cp SHzg}Y'&gr=j(DZpuR@׮nLvf.O.n^yOo޼8.j1M퍕q."=6G+k@L+2GoͪIt#߾sH]Gͳ=w0>S VuisCaB?yyS`98['/V4\h\z ](fux 8>;u{RY*2: 2˱&Ljad, M]/IUUJ̯lnaEF&ҳ4e6텬zh@gC  ZkGƆ{*s1XP8 |fEڶѵ bR kyBOVx,2Dj,LIaJԜƖE$DF"QyAieT`ݵ ]4(qh"t\tlJ=Sm5=q) 2(sm}eAjP}]]MYȴ6jm̌Il`&+RʛN%<=.]эrU[Hj̾TD|AS?M e6$fַv=y3`v,.#OށqUY RX)sQȬn*W*ufŧն,F;.΁+' 5vK٤nl?ʢ2 PC59q 0%Oe&ع>/i|Bġ dW(1p [HͯA$xY)|nHgvzJ3& 24fGU*!Vَc nSN (vp0w~vgBҜV;VQ:س#r/mŰevAO<ŅE$ŋs*f}xvp{ΊZ}qq JC;@`;#)C^ԓkK.xy|;$.ߡxAi崚G^c[7wgymIׯG&TQVmr<ᙒ$onmv֧!4XnRjN/nac/GdtʌVâ;<m_DbD"`V偖 hZ&.0! ŠFvm뚑^?ۃ(Ai;9ўn\WiMǑsZʮ}{V׶v^$چCI.ݗ_~ppaY'LO4] //CqҠze"ߋ!2.8'ƀ{{)k/|pp^WE<^y;;8vdίNɸ́m Z2$$^KnR1D`ҳO_{ۧЉuSQoo?>FFF[5޿8ڜS[/2_( xr_}t,sk| 2{1x$0W# Ԑs|Dm]3Y^񍷣cQ Eڧ'Yd:E%% =DRh=Ρ3qTK50f7Lkw:/-%952_yl9*-pF"ǯqHcEfbtb\\BRN=M\qE)7$-\'D1{zX$:;gJ/S6f{cuwؚx!+ؔW*6^hh]$nr·=X/L 2f1<׳'Ƥ<&Ht:-7 <yb̚0i}R;ix.]9CFO£S*~356:ƑmöSebаݙNLN@&$2+؜!:We-ڤ40T.ٻ "캟YN,\'[Q8Hk۫SqT, TfebPYu,O sER҂VBr㟼aեƆƢXћ_|4V7[ga<}ύ3L 0!.}i4+)D?͛<æ">^ȃo.rv6·_~䭴ЧY,Uq\d9Oޝ9J|ǿo\ɡS3PˡC6斱owo ) ~W~u!fu*ɹE ry/wѩ]A;^;}/w~۸ULg133g$?&/lq[ga}/oa{q. <ϡ9GzY}Lk*69my]j1O_嚻=4y9Dl oY. $:83Hʩe4evt(0͒$SV<$2|?'Sk82ٳnT"'љl(*s=YVy] Y f '(OIh{PKǪsg"!;("Mn0w D0:˘=a!mlKDlm"~ 6wάo4*x!BVwDFM&U֗ ^Uw%lr>~@]~8on^mm\^ HK+p@!!|LCZJ*qd`X&KAln)nka>3rcHY\Vw٫}R64 t t(#`0$uye۝5u uښ q($ KbytS<f&YD/$Ed6gJ:XfVWehVS]YQV8/52A&\O f-4='yk%GP2Ϥ18|vik]fiiEEyEYE4K"JWO2sW@sLi"R*2K Ue)B.O,_=v: 2 )ï4er̂qa 3Nw[UwGI姥HS<ld2D\ΞL iAԭ(K;ǐR_"]&:4W,)=١i6ȸ, E`)hk M5銧UmbyY$9ESЛ 4_knk^=] U*2eƕX}UN>|o{@H`AA ;# @ ,3o\jťU}Kc -T*Z 9=0z hx'ϸKU^o, W׶t,È, ;wB~]##7&{[j+!? f8%Ս]X:9IFaD!IJܜm./)Lkٚ='Ƅ Lc$;~qb& QG8}ѳ3XYU)ɔ1`KQ%e-8" XLJ; 3SS3PRs6^SVTu(>F]7__YARDՙC+/zfY|-G Jec՘$s v𣣣wptfa1y}Y6 ;Da`ۋc}MMK(QnH_WY)cniAߛnn_؄'VGmC_'nP$pG CMsc*.vQnTLXli^`"Fըe~ow%QUj`)&'06v?asݳ 453\]=Mͽx\k,VIU pS1nhɎm:&-Ngeh,!Ȓ7v|WC&6;\^r9" :u\DA:\nh`Fl i"j[b.| $]#X4>UFB@ކmAFk)OBPtiyu7T6/K$b``cQqxDkv zv`[kWu)|-/YC *{ɰ~{a:=6C^HrT.1 Ji++]u C o;/S{cK[>>YgP,5S ~,9YQ߳Kܓ8A|<>- 5`Fkˊ"Nv[O4mᨙD M$ɔwO*@{ǿ(ZRU5 Sѽ5=0<=˘@Z4gQ]^J:SXV쯯m}A["9P`!%5c!yo~c|qe b촕.ZҀ7{Xa(gGMRXcR]iiVHwvִMl9Ң։5qVZ"=I'!q%czGDeBO(Lk-/BG=Uͣ|:waI@GF>_(OlbOuy1C]l.Z"(BbidMFI@2=93]S9%OL,o<iJ!K$rq8 0ٶΉ,[ĥ.64G(pۇTwj03W(S*> Z[CBf{hg~w{ 1|&ͤKZa7ȉ"@:Ff :зi?w)sq& f]"v+ Ǘwqlh|PC{{HY?v,wjI+PBmv嗴AE2 i~!0T_S0f0&E=^@0?䵻B'gHߜGj.as4ytɒ)圍# Q-ѐ[MB/@P.y] "~/ yml:A׋ e5KpΠa67ѨNvK_.p. BWHF}җJZRI#,cvD& d7-PvO=+ (k0&Āx&[Y~~)k(%|Phr{]V9{(xM޾}N=;A}4-ϩfmH@鿄lͤsx\A.<޼U2A|e~q]N_2vu[ۻnnԑÇ~囋D<2lc @šI#1;_^[ZXXsdo~/.GEFӘdª%PFW9ow߽:KF#"ӌYYϡ$0:w8),][bs/iIӇob"W%PE,@"H`;hbNP?#p< H=~} Uo^/nNOl2_c =T _}_]& "N:{ZdHz4$ı4teȝ]lV ȯ7W'x%P5W0*c!BjF>)}LĢ[ǯA'3G7fm1Ǜs?? 46{ŗhȥ:Bo22i=HõM9OLpOW&T<7Xȭ9zk Xy׮ÕG#B0 =-C;Lj%+-w:%Zǻ_bƪ_| KZg_?z)#&;jo[!8YiD_&1b Ɛ"_K轴#XAq<û\H'l 6o,ln{ -JvqeX,U^ު6; R 0szd7!D2A;>Z=`+C}#kX< ]z[` jѮݹ,>flPa d} F$@Wpحmfqezi,~2J^e1P*GLAlh<[[ޅ [ŭ}8ly~aCӘ ?@4Z)Pƾ_.dUvnyۄW D0aK S/Z,"*Fn2^.1￉ZJ3[-EUӯ~wHJYFYAR!CI|֡d ݀t>hMz~}nA,TXSG2ٯ瘃:Gl@;v8l(!˜kϳS~QE2;cH;,\}N\:?sPϱRTB)WnҡlK?xy9 A.N kwnKx|X$A#Pnxzs仿¸: rKY~6EyU ?zhtI[O1v\c f/a3Z,o4G{L[+z&?}zf 2CG/"VM>??+Ea2.rd4~tLv_+_>ZRX2u64xh(?&fCTJZ5L!D/B?3#z0T= ꇐS'ֳo~3Q6De4bCdo|'}uS<1%XlJ'f3~]1ϴŒn!KQ:w6Pqb ~)[a.fLWy"*TU/()\ \ӸS%k `VQ$:p[SH%6Wz^! qk8kUHK XjcvZH%d3pH$1fs|~?_8<ԻjGk" >p=CP s"W)Sֱ86 08l`KH @DSMCcCmu]mc}MEUX:Fpid2B1lbkyfOn`La-(4TWUt`gYU6UbN ]>/,o5xajѦʊT~hT6{@dR!Nc@y0ci`Q}* 8O!h\Ve1Kwփ*(.+fL1B.eaViދ',M= +[!xHpyl>;XkSHGm}"2 + yDlWUQΌOY _h_<X'US? E`T&ȵ6w/3<ߋ tr} OcqX `z#vg'Aށm C L&X=I1f9 vWR1 ZÑ x lǂՍ(c 0X㞀 E53˻0O$1GG#4#P)d{nLW^䠪,t3G\$]\^3:)4*sx<6A%aч0"550=><ۑRMQf9c,K8f^9sWPp7wvvwtu Iӱy/>LGfi4UUZ^QQYY]UY]S] T* >9,~<~ϙ6Lj)CP,įWӧ߁y .EuєZM:Ck/Ӂ/y.;j*xE)õ+Zq_J?ϒYӝ/Y:=%,fݠXL*A]}"r Xy} @ȬwpxttltxښڲҒZ~68?HP-/ 0oxfi}ws|O 7p\qQ.5mI7C_K5]~>H܁Z: Cf *ΤיFʡ wz[THan8YWY'["0⳹gjCkd<>_*ݹA`uC8-?p:wf!eV 4:+ f! _hƅO/_ϗy)nB]+fRssK[0-6ӈo*-.N̘nY,q嵭[LS"ى^`]X:fC;kAr^/Sfʆcm6R7';[Z[Z[;:Gwx͕_[hȸek Y|Yiu.ux鐑aS vttK_[k[W~p5W?|>e =9+iIuJ{TG{;ѶwkSc#CT}w15r8~fT]M_9ޟ;{G&ǧff&'&&&FGZf!Lé?Q,5/ߘunLt.1\7>1z~t&_]])dbqjHx{iwV=a[+/{`\ \>xgsK:qD@6槦&fXJc{ۚWN]m,09YXѾ ߞp}MM탳kX |P$cWWwL>_(1zkob}{c'u~ ~{Hjg;D-$'WV%P1( #:N퉮c3ݒ8V>i=ޝië(Hgvb*c<#h Fl1 !й^$5lxh^.5} k xk}Q3;<8lFѸbۜ.b)- 8ER..x }D.wnN/I@yΔ.? C!ˬ18 G:^\vVDnXy|Y?t~]29m]3HzH*3w$t1M<@ NNBl\/͸*/j#멗Q1dw Z۪P 9 |qM+n 4HONP$PE$ԷL"2Á ?;rH8<~?>nъ ˽ CH]\jJ[Ri7f5$z9E|W0 zɚ"}~?Wi6 Bwmޖ'Xv+`+zaR׿MvPP^( f]6l97^8z>V׹% i~q;:V@Ib!v<~lq*fTі^2 LէMdh( 7ըƖGGN]FK&b ERU-v{]ìW򉛣͍c_]NL!% l:4e 1hd$ zс-\qsbP ڶE 8?\ TsGkv7nR2u@=9OAڅg'X4hvl6^%PKHQv_<Վx[1W& 7bx2榞]]P$ X4l&6 [ JkD]޲,v{"L-N/M;]\\B@#G A(bk6Y?43%="y@y0 ']^EPDr㟼ZVZ{[cW߾Jĕ#=].`<E C jKpXإK$v(Œ Бa" w{{~W57QWR%-hڮE,+;j@O#Gno.KpW _;XKmeyk꺦PaoEu<)H >(I(;;FVNp^_P6LHW[J+ZfQn] }פdGmEeaCck&E))mi >MS$^ӽu%M]C{,%y+$XJE4CK]h/nZqeXQ&*M!Okcj@Wci!VZ\ջMgJ q}(ƳwѨXSLhPpK]%cgojmdf 3ZJGa,yNh4'e%)cn?I$Jl2[tQvkF6b}u|uc+CZqBUv.^$&b:IMՖl2l>Vìf*\Xogu cWCh2!N:ϰI]4hzb .kՙv z]ݲ@m[p$MDW6N"ڬV<=7:8 ;9Zr-V3zPC:Y""C{ZJkPXJL.oVvS`By(7j'pmuxQl{C$'R5r\\.MitӠ(\R'ϳWA`_;tCP@ܝ+sdBJ$Z`pa 3vxs +‰D$`$".qwk|F=Dٝe86<݁#mt O/'T-SbaZޣƒ-3<$*&̷ sw&7e\p$ίKKXpryghlS$bg lp} 8X5 }x p=:*Rъh[#e%M pL /RD 0Z=3X,A {\~xsJ k8*# ԗT!Dj#4縏]ޜY$p!/oӜp>NF.Ocax2ؔ9*/mM3{|OhO.NH ~u{\D,ݞAxn:^WJpct?R+%|. 4H~\t8HY+5qJW08.)ϭ!嗟{{yYp1+vZJ;Q-arg8q),:=8?tl4zO~본@oUqȘy==8Q :0yI_}/o[y{7T&<>8'?_G7WWYx:~e)B;?~:cVܴ#I$r㟶H[[ZYY;/Ͽ4L 9tTV&"d,AfxSPJp폿y2 0vc8_wu)trsiek})=|oy<~3 KԸbo-e2Uܯ"8f'VW6 pF|ӇNCBM'ܕb;A<0rז斑4:n7g4Boo[(v$29xk2pmB+@)Ok{sh =J:W,w{d.яc8AmInu. PLlW&QGf_o:iL_;/ %MKͩ]!ﭡ$~DD r,H9iPN}AtưSyJj0Pkg0U K"ЈGR% 67dZ~Iuaɤmei4Pn8t XԽ዆=&%-K4 Pشc!ƕ),"P*|zb "*=.|cvwf6 AO5;p+C!S..EjBa"\H,br/C麢tVfhֹ8!h"YFD$(Z-juĬ5Jc*UB>N H}_y4R:ǘ,s*6Wjkk{ a0T$۟?㯷4_Tӿo_ƕl. =CwwXm1f̣wzMB&iGhM Η^l_$|unf%`cuiyiuu <<<@v9W~;h =4;`zZf{7j:.,k |} t''V 8 rعI}1 Cb,|mvtdjn2*VmuS'So!AWCjU֧FiB>Db r_i\xk)x"I?ޜY%-O̙mp!_W-q7ߜJMu4?<0q3,*Nq1tn:]𩓇3TTnN .fu{+0㾖ƞ Kw=p"CLBsfI+|וSb)m#ic|x2w|HSPUζs}wjmR8$"jlA{j/PDIeB&_zPbVF&=巗ΣEvelv ~.ܙZ=v<\;1c >7\gfc'$J>_\wa r~0ڽ7_ɖAp2'`* /p.;[GS qRKg  9lgt77NP>yLY{{(3T>KDxaI0Ҙu[#!d\ ]k 깎U/KjRsүp<-OR2K}5{]ٹ󞝺Ung.ҩ|[DSc;4 [qǻ=4AF߁hJIEq,%[YeO&qp8-F$2vmr;1~$Hi`TZADQ>{8vu&GA,!ylj_@K>ci %Cl(Y}'. Ɇ`t.}:"c,v54u6mb)>ǡG0&;@=Wu)(m:d :&Sd)]@DrN` ZmIK+*++( #J́ϙ TG0rE t*z{qP,C*+ac r>P[M|bq S.x]1 !r%JM&X02 L0ihZ08,̕*|$4xN/*o^EyRǦZ0wt~gGb !~1ZU }N}=ᗂ򺮉MhID,NuutN,mAWc:X}ek٘z]Z;%8Lmm,MOOMMM/llI#@وg$XʁO$ѥcLQ!#`1FR &+rS1S,.*mG &NL&t"Mwyiş8d\8$Sѡ ;p@ҙLt LU8ts.ˀiy[̰__Ș}IU5w/;[+s#}@T4ӣ~ {"Ry`rhu}sGWo__@__Owgkc=HNS6$ȵ)312ӬH Q*-yuuuMm-+ޠlQsTx{B_)x+?}5[='g䍖ZA&:4mV:WFrGR>yiШZqQ*2X@~-B^e'DvO>rCs69Y|-[SW,M`~(=3ؓiW=y!^=#Rvc)dSK[GO8ϧ&ƆzZj*JA, >crIs`OW +KS(t4tMLplbl _ KsC] }iZ$Nfz/seAw[?w:Z{Gg7!퍵񉩅eࠀD{k #4MSFeD/ZXӳ-%uƶ]H&ే pB 567wFo5eaۗ)Uݛ}Pjmhڀ(X, # EfqRtTOk} V}s`uWNىEnQM)-o"HsC*QQ'@1 XVk :F)1Cmuk/y T)ټ \2C=Fd"_ҙEn6* d:dZF#쌷׷!g6LKiSvn~UPP\?zlM{R5pvN%4PmݟɤW iЉqTϥpf?fQUDml_0@#*à$"S8٭fŠ1;j&q֋p*cҗ5K`kؙx~pShVc<-.q9,VQ0&k[)+m0e fҐYQsd-5x pP 2NNC12v{=ne[k)}s83 2ΤY 6;j:W1RgcX$u&t^.;p}z;R"⭞vҦA8ֵIr}~l-v6F-\naXLZ998rO) >k8xd 0X1ڀ!r(؀Zo~i65J xm}<}^Z%!;gitΗA;)1ef])eAmM0ы] ]낀T\N{W n~W}:/+ Ȃ .y]|0 x~aZǥ#gZVe6۸iA0ǚZg\Hf̫ T WPK$w96VslDc$a53E0M4rE2ju9Hb/r{C`) Gjԩ:h l0K~w׷5m &N.N~_0qqy%e:Y,CU@EU)vyҬ Yt %E2>Nkk:aRF*WrM{2ف^vsq'WW' ն2K*;fp&s5gE`ϯ.>e{au^Eum*"]i,YL53^+FO: &jJKZǷhUqe߁Ě 0=ψH#_^)K-5UEͭ]C{BvPfIRmr<#gUza47O.cݓLZdR%Q9_­Ά5RQٵ:}Y8n֪+{DDvz#9S&^`]O()+mU#Gj>pX:>C3kaB7CDC^Ic xr}@@2}>WY;r$+ǖT%caHǂg6Zq# / j[_niR {&L6MaR`gkU`Tmެ 0饾iȠvŵl^iXJĐ.eu(wGڪFHR@Hp֠Udѓ'q~~ffߢx(i237{WR%}ogʄIZEAQ&~v~yyj98) 0jDB ro80Zʪf\Lh]i2> OQG핛C%#g7zGR9}os|ʕ{@#Q?)S$7y{}y{w{pf\"H$Y3h\L۟n*[C%8FaBEZ2}Q` &iLTȄTT_KQU #ӈvj?gQ&sn@ܨ}D9mZ%Ltսh\@dj9bvkQ-7o޺sz.z,dNJn-/(nA Uj5vBG/ޞ[$0 `؏wc%c_! Yic4ajo,m+ i` _a̦ggV)Oҁo~DʃMdT(]1xl "ġM|4cF/?7`Z'lm! UAI&p)"pvIӗg_C˝ XU }" E lebQzuo,*xÇYC9I'"7 8"j.͇_[Cpޫ$7үkfA= \O`CCw6sL8vrqy p2k&\o)HV]gArݟH$!p13ڜ=yylJ1E㜅T g _@/#}?%-R &Ty2śM-i[nCڢ4c_PֵN]mĔPXMEV>CG./|JuK7v m܀mJq)p4_3؁ L87b c D.Ӕ؛ 3 wK8ōKuB%baW??"* A1bNtYbO6%qe퐯R~q,b'ɡC]ܡ-d |*Md4zޠ7huJ3&sKJ94 .U&^9@T|c0yzq@{= #T[MFFm[ ySpNͨ,Zjau%oc4cN='J [!+nݤKU T|.5ԉ 8pcJEL"Q$t\_8렎MF‹'gVFBͭ6PUL:aR/,ɑ٥-<7F8h$Ug)m_~{lOk=ToLJ'g! 2D͙m*:n,L  Vw(})|[Ѻ y3iih``df 8,EY\קzἼ X,M &)[ ,x$ o8sv-ioxjG#$1A໊ۜWz湾x!76Yzy՗ BcI}-c|mqor$0dϓxHB7j"AI1hsjppe4"\;҃I*(m=^=w:^d:O꒧[t()$@LN vr3W5vM&VQbUf2Yb)S3y\;i8RHR }1_0Յy/_<5ö]9wؕ#js "@gA?i湮 (7iL*Sm}y6,Zm)IS/>,t*4[OϼznT\&1L=4fwG;p" zY@'Qzɱ'e܋3DKGP$`Њ)x!Ѹ0 wMV>Oi LgIX>g$Ĕ)`ExOiD\ty=7sxDCLpzNCJC/g"1,ߥB/21YT0ZX7SԬPcEPXLܽu%shm JHYBхF3 aYM'#ߘJ-o( ֡HSD$+PʨKhUg7 kgoq<* & <3(d1RԻ~`//BrTH;a<>fe*4j2\hd.@b^ǭo$btsZ^Zf0:+=XITF':ڦȕBBcX;v`.`^= :<&-KG,2;42TPԿ#}ɑIUyOIyFkNcpXbн4hVTWY^Q]W[S]3 9@|BBZ}vPuuq8tB#~ f(Gʲi'G^= CY\ZU;<"6et*rEl)ՠS̹Bd~yfArX3؅e 탓 mC ;;3#=-‚Wϳd\q`068ڍ v4U9nSqٕtQ>X#XU5е,,^\\c@4ןgU654٫T|h>Hd( ˲?,Cf,2Ka[Kd]t&mcF(Tg R^V,#`-euRKzl˹yU5 ͭ Ӝ׀u$m{5r则WW407+4 ?2>370739:PW]br|yϾS Hu{׀204Ncp@EΎ6T 3yOkep)@-J+ 30 0q{[t&vwa}u^S'>X0>vHX4t *Z!~ktH{ >Cf J*u_0^ljai](ho_Z][_[^GPGcck q&* ƽ:/,IvgbdqL2fw~cx  㼼LqSmU|wr AK`%-Ge*J#3`KC8Rvr<#3E}+ow}|Ib JJ)9T"Of% h4j1x{i*$Ļ5EEZ^+ڒ'\͞'Q(Z>ŪC$R%ŘI/rmVC}S,Ie˼؝8jd1۬fJa _ :P.} JBqrMTߝ_0ijtdkJGO7rki9i]AQl_8 2dٜN~f{@5.NQ*$>3<1Gj2ONoB&TS8)KJ ( f9$[8Ԩrf6`  .}E5$K^߷DB$н?DB` ƹ^yl(2`2{v>f0yJeC0+4@ Vs] VAD.<I=n[]4c#CR? g LY^С"PYV  Ue1$2`b3Lv_m˦*/2u3<_׶Dql@(Uj-NP&LY|4[m.?@SAQ%J\.aj+au~WZ<=- V< A͔2Xqڶ}~\TAϸtqFlQL5HT@ﰻ 9޿NHwE_+(maxL#AֶK[=i1~&N ?|S݉), ^Wvl%&RIu @|-)BprOXڜ^i,/} Rz *rdaP0ZhJ3,>@QwjG4ܨA,ȁ渥 ʽѾͣ5eaNgp;!_9h 084!Fh,jۥi[M!?#}>sZ~1lޜX\R>`R&jCbow}iaT|Dƻ&z >6#6*N89˕h$q-0 B1y'aWʀ,uNЌD'e? 宓DX*xC$8 c8 W7`ml Bkm)\<:4fgQg길<:K^^]\%$9W( 4h=NDԞPO77uLIR25K3UY>x2ys}y}~r}u}s$`$p}LFjR';K:F7pRʶU> >CF:v]]_'onoDOd\4^K8@U8vOvw,* }kE:9xws{{Ișx$WonNbq*8{S]umX$-Y|>u1}wfeRpoۇǷ\N~ PΠf5W5u:`$cӏI?or y}w{ZOqj{UWMG*I[|H#x+~׶^UGi]_u[[;k{G(,g(s~<p\/bD7/ꖸCz:OEWWwM1OݯO_:Od ;K@,zi9Tm-2+3:5;?;ETs}_}8?y6[_ZAt)}e07ϿoOONN G5AB)| -ƒC'~]X]$HrooQ,`"x@ON1f [%A]qQfe~qa J27w7wM{W8n`e~_k\eu]5a"9,~v}qotCu4gY3H%Srfcn _>\'aH}o4zw2cDG2vbӧ3Ni\Dm0|緗р$Gɍwd@ BoU4Lc=#q}X-(Eg\I㵅yQvBuEAOL*r4`Il%z :_g9@:EZ8t pϥhUIJNaX]b _$}f!r~'U;/ފ,cVPܸGB VGDg&)7i#Lä < +͕i?7fKh #O c G$@"wV Kqjp:XܶCX7Glwu,ŠQ0R#WŸ )#gVճ=Zcwi~u dz .pE#Z1j\ϨWkR`u~ff k䆓w!"8FvAyH=dB^^ۀ V5onܶěo>{{oNR!9&Mc(wlʂِEy#j֤,O/l\P9nݶ7=r. 1F!{;+;\I =~8fEսzҬeMήn@qd*Gr$ݹQ-z! }6+#ĶdP޾'^zTcGj9 s͝yqGVH#wV7Vf&}R{S^LH r7FqLUǀ\OϾcBj0ْ_֜#XX柼 frp19yHXwN"wvwV&' vًEZi(y.f[Ms4N8D!z6 ch[_Bm71rsI~.26fݕbB6D1sL"wՉa %X"<<";K8uչx40]ŝ!dvh,KaLMvnBOxJb:\ilǷ1ZSq~[+;j`_ހSB. $Awrېa3Gh$0,twLu y@ YC1Y 1Hvy/5тT*h_"n9 1RAB s_]!%| cC&8t yDEf?D#v7|95 j笤P}HHFnCgF{;'WvzZ{&gz[[:zW6 =U`;+.?qO? *&,I8lnlnό76uWյuu57uM/.&i'ߧԥ*}JE4<:=R_UU[__[S^RZfzFfVXP-.}]^d)]ʄ`>o9@*47pKe ,%g[Z+cUR1Vn.jXw+[=~kc]Ckvra:k] y9),^;:XWscK[goX_{c]Sysb47o!ͥC"fЅipcg?uAaIx@[fȦȽ#2K Wj??8D ҌcBՍc͗W~VOC}:uLch0M6Zv٤ᑠ= [=T R`cxu墯."h թj%h`q%r`NըV r82*RTwvP[GvJG}Vj TB&* @.iwlVk/Ŷ26M|W>vg]"^*znNYtP"Vn)M5Pq"i>+NaiǗ{iP k Uj`F)*JgJjuج״[FZƄ *O hX+/;enc%-xt4^8:ClYar_?lXA+)!iaOK-)<@62#{6Lk#J@wXV;p`VI- 4&ɠIYĊIOd\aiǮ6v4@h"DfBtyܠ՝6 4Z!1g[zVd Lfn: \HPk0;^GuMF`:3 #Cz0U=MAKƽ2e{8<~ E2ZKw Be> bf7 riu:B&䑶Fr4??/G!L.Rk}ML; >PƧn3z*|2IENincd.^mi?X4$!HOܟל^"v +;vT\muǮ̖ 9x@|-I&BI8x @|!A꯬$`tjՕF'p O~_ N[y%3T~ak gHervch"̝ P崙5qу5e/n]ԣ.qGѰ,OO!'D]z6]aF=xO`" ~t }ڼksrpkӢ:ٖ@.6tYAf`u;<ްzT7wvMݖ؝ cg4*z꿊LFDosMQ&,hkiTR8l %pia0:\H8Vb vFaZS Nmbm98Gr$^ng 6Ֆ4jH%ϮyD\*Ξ8;;gQ>"i"qKf :P[ܻOTT18*FYEE./dO3`>{puGjCmAGJ`D`:_XP }~ryy~#"1fhonΒ0Uб2𖖠RiGg(Ofy'e=+'WWt 'g|~ c@3s#e-JCE]tT3躻6'g'W;Ж)`oJ:hkCIM80nZ+zeO{/nnȱ@\}8;I]hB[kKrv'sOѻSQpx}}sԞ>|?㗏6.X$ޚ҂V@dmiACo1KJJ?<y4xl޽Α`?ǟ~{sq[8.\i)eq0)0+H^><5H[Jͽ ⋻PNh_˯/eHG lv'o zq:`IûI(wsarV17'!H i| M 7_H1{N&kZK_ݛDPk=!'i t_/iޓ{\F. ]iPh{c}k>kw7*!)_Ċ(WׄEpѺ: ֱ"NFỷ7W@Xp0»J> jgMv -/}sG\\}O?wܞ˓_sBaV[˔tth ;,S8| /.-r򋯾z&bxoqyH#4a}+GkůoN|˷a0hS|?E U}^5n>VX5 U=Dn I&Q+ӐC|87SA8̼*jX`zN!y}z#ˬ9z:g9L8F1TXA$pdF7mNRg̫>:S ,wq3B{a/4eb8.z0s2ikT4+xLHz\&/μ&K$4Ӑ迾>ՠ&UEߞ]%+e<]_*C-ҹƬ<4h&R$x2e9g^_;LD(zz?"S(":lePb.0 'iU>qb1S*W:+|r‰uvQJt3%x{gɰ n`}+P"7X(x-^\ޡr}D^t:xSZ;th;2 y}~ȇ3<:{zn6xroMSSȍeXV:.W9 ;ړkTsS(순CՇx0HuLjM?#6yDUWǏf}@~yJhr46}Ĕ<8pEn:G ed˻t6C9ܘ;[<}>/>^R1 $$yn/ͅ+6`Ï._=ļvjЉl*:?jۤt8͘&修V_܆4JƳ"ʠA/~kW7~L~QͬxlMBo-f{ U=RlOMZY_:eB+Lv_/o&>H_~UeP2eяx`O>^m~g0du]"R@ivοzp 7__~Ǣr($dЏvsw42A%ci6+P(@"GDHet$}8xws|6bHy !Qɸ=jrz* i>0٪® * &P<]H4~xw+F G8I2PUV+:S]P),9&Pm[-_曤I̠C lΣʂ'z9ή}Vq}zb(yϯ#:w":& ݜټ JsL=3!cUHԵ}8 =D!aWy&%~{>, 'WfmNk !ҕ//.(W^984 D!Qȃ#,Mm3@p\1 ߇ !QddC@">F} j,ij !1G$8|K,N|&$!0wx=#{;_UDV_!^!C`-n/O/p$d.`gigplvq}muq)39Ւ pLkeͣ?޲=$t,fffffffJfffFlP}#$W+].䙑3fZchM8mohn,+olHOH/($E55MxTs[$|ctz^m,LNHJNMOOMMJM6IٹE xCV\wG^Kʅj=I+D{K2R!.>483cxaC-%E7}n M)Z:&0S}5%yٹUTRZ?X/Mw>h/*T_,m^B` 0z{:plfi &QM%Y QٽM.: M,m: ww667wv(rgn(+IDAf{-HrD&fw On"Ljչ'an)?q!I/oAE:1 97T_[SS_3|HT"RGYz\D[%My卼vْF%6Lf 1RU ̌ TJ~yS O ܆^5cܽrW' BfO{(TҜԤ$P'Y9ٙii))i9e3H,GdF]jύ40Ng =)%%=+/rfť%٩IEsx]( f^]AP.$"XlwP`+*+ojm/NNH)*pYRd(3 X'ILG[m)JIM+kVGW[CmmK[Ox[qzrbFV0RR#@v=JfQɵK C,KKJͯnY^]]X=‘"jc(=)kOzfc/֥{ c{J H[ZY]3;HC!&vXO~g1?9!c2"FxtcpxRǩeoLHo= it:B"ַOTP^LOLo\f,z HPXBab.ԥ'fVmbiLD,@$QD"z8ݐRhpBssA!LX6 BX͠ dB"PXŃ ҕ'+9+lZNx͈G08:d2pWғ z6t&qPF"Z'8< E{Q& XΜuU. ֞G-%7كM=y<Za56>>Fa4@"n$>Ֆղw*#=~.1ߚܸ4:3vTeP{h$H c$RD琖Rrzv%fVcg:qFd'funLZ> ~rO:Ăb!DiM'I>S䞞ܶn>VM+ILk\Œ,6ԡF:cԾ@`qLn~|b8N>͊tM0׏ܓUPh|ͦDENM.EIH(pXl x5]@a1厜ĴyVV2&u'čEU洤<^pt:]YAF CP; 2l( ȡF>]um2X͙̍O[<0\0kʅ. # "_THIt* *2qYL*1S_(m'+E=P`{IL.O$)O,.T Icht(>G #2lD uML)Q$||Q"^.HHZ3=7F21Mڐ|0ph )Կ`|蠀n2.,m_H=fzJ (foH,˔rDk5b*1#3@Ǖ,ӄ2/x * PT\**H( 2F C&r+q) JE\J2J& _0s"~z޴- $Nj/Z!2.J8-&ΗE? kיr=1JypM A]Nb>%*$qXDdjYWI H7adάȨ}*3p(QXРT 6!HQ|hpH\rJ^;[V܇X-&>2Jaid&W}ٜȐ#3)-Tiuބl^ECCIE"ǿ{[j 4*RP4C58GIZ2fVyAE"x:˧cfM Vk0jW\B 3XL݋IQ+[ k$.z8IDrN.B*!@7]&A:jڨ7[,fּO}M4&7gVoSʔذ}8Q>K*Tztw+Mf`0Y&3ӧA֘lV_̠0ؘ'I٥t*in*V &/*x֦iAg>@쎛7_>&<F2ѲиvFZlޠ**#e븲-& ȵrԋjyW( f3T +M hGiym!kgk:r}yn,f;dJ"3X/˛3YP~LH`Г}T3}r$=;O-MyvRd*W~}C[ *rt3D9tD* ˻BslI8;;=.s痗gF_] ?SkiȑM*_Ɉ) 4|a,Q*q~=\`qŗTl/_=pZZ.K$t=Ht EOJ+5ҁnY^\h|׷WNŨaoOݖ șJXĹ!,THZ+D0:*CO/m&AI_ڸ g(N!p3ˣC}Hjݳw>j6EIYcPBR".mo E/e[:^}wwNNoiqP rDAmjB_<S¿mx[Xi4Z2Uqan CQ衉j:/:Q\$Z ڒCG`ZHr]x7 ̠O<7 y3ŌաE _!^ 3RewƢ3!7pD&fg7ٝ :Y83*b!;6jxsEP} Z$wKԣi4|6퇡Ш7kv"=by_@H|.]Z1`4KE hzQ%fl ۝q\eI=G;:H&2}=nۢeJDsR _{ hJheIal-[KsTQ#e,w6!<|:.?0"k`5TU4bvÓʶ%Y@ G.[7pB8PM/Bb֦(">8xBo/LZ;P޿O"*u\Ћ04r< 1PѵE |NDYC)}sjkyj"U!>XV7&4JlwF1Opl2KE9>+Eb6fku}Mbz*c )ic V+$-1;G$G\j*X*H.m8A/p.碏 M=;d.A<&>SQw61\K.OfMPD _S?$ZreB #pMD#Q̶)h9C`1El֪b.A#WFjxFß. KjCHTt r{zqjmǥSĖ;<<*2jY VV.dfW08,Ǡ ^D! K-"ZNH\duhr51$0\+Fc-5;Xhi<$aݖtDqc,7\W2|Jͨ՟?U Ϭ":(0\K YlZD,tUv8$߯K ՃU'H2fnx*њ`VhϟŶ;% u7 L"|R -WQIx,Z,I'BPöJ/PH;=M6W)ڋW6QQggWwWzH,WkU"62H$EKȍWCwg: G":TPrBN/fB_X*p ְB`ْqǾٽxC$2NZGI,.W KPtgZ1@n޾zI%9l&`0m[$c4JVbA)[*Ba`{0t G(U-O߿~T+biB۷?\T2Jð݉ % v/cZ._ZóB%PoWZ1Ko޾¨e!ј љPoDMb6cV WIH%C1̢''<Ȟ=5tm6#*EFpd_"3=^LݧA[Ϣ`J:YGxZќn_sݕ~ʹu 9*58*Wɾ6)[tO.& yD&rEv gܹ8&FvwvLk#U|p*9$HK Z$CQ̖#F6uln.9 ǫ7.R:]{7v% 471\ߵOص̩h#cKY臚ji[\XXZY\F1%׷& ~Brgv,/Lw4"* {T"ӛ*)jgxznn~D< ׯ΍"EwK=1?3?=93;=?Q(#Q>C8) $` {{ 6>4g/_8 b,Yss}1735>21>?:4ǔ VyB̠e&398ⲅ]XXY<Tgwpʛ'ooRhPOdWpܕY:ĵ(?<<13yH) g6dg1&䃥ɱ1 ;YяCFO#= t_>thHVZ&^nܢSoh/lV# t[mCS+$BV+9N-1ӽmm=-+xngNKOl9dpdN:152GdB.qwcӰK#5 -u̓DA_q\Ir,$'zjkkJ*;GN0ȍݝꚎm<`2)<{X$n⩘šʊܜ⊆ѡ¦c2y{6-Z{C8, =kH qg4?3##=#+'7(+1:1#77'#%>1195+etl VgGO3t#R ZÕҼȃ$%$EG%$&&&$$&dW4/+{Hx$G$ԍnݩʂԤxHA'6.FNȯl &R]dNrs ]n}f(7-mvk M=ӻ8:[1<}؍6n67[;[c=MU9YY9Ee5=#s du05&"ܣbV0|Lc}`uut1:)'kcřqQaA{=n"]PXē⦡]4 6{[`M;DpHSqV|tDH<^VlbQX3:D {k =1I;WRZ7 IH)kd{[jSb"\|^^+ 0$4""*%.|(wn|&Ǽ(XPp_ ғP}-:2"<4ħDWq |ydsC0XC Yq[?OGQǽ/{zĹE~=^ YHhG;~^޸>6Ǎsy$܌_skOjLK*|mz 0s:.1HE@5)%-=3;'{ِ_Ky5>sI;^.m#Q lJFvQymSGwOXd[k sҒc]G>8pz*7-P)9խC+!`cLIq|[T^t^amP< zFc}œjVh2oIp#^TyxDnXtBFIY)$<*`gsuy}mkG ra:7I {H{BE@gT ۓ= 奥%%M+L#gl+>248>n^}-٥7\жD`KUqn|WW9̜βjT[Q;88^Y; թ`y x wo3K,˹;V_1<wsh,ޟk+LKL*ٓ:l z ּ;vrr*:fw1>dq<p09!am9leG?0kuxq@`UZXKO+AP8176'x:O ǴEԪ9)ȁ==ɢ[0"yKgSh|Hd2u@ItH,U=Z࢖ & Zt-,^{WA "2Y\ܱdre3i*Dl;4jV!&$NvsFxWeϋzQh|2ǦN$WRy2 @pGat BAqO˒f{>%4 .{LϠ yR2KX))Ux[I'Al.*z޼3LBR 1Q0fUT@$ bQ'X2-P4NSE u+ 3;AamGw1#t + J\.SB.A\rPjs{ܟٴζI\2fIc ["2KrrLBRtJ&2#<$rD.UjJZ%m4v- #:IAbF/@iU2 #ˢbwa8!P5 )5VPwGݡ{ƠЄ}:YR:a 'VJh&ǤNw 2sz%Q{sRˇIZVSr[#x[[II# D"@: M`1(1MAERJ)iE>VĭeCZ 9=3>n AjjڱX,:E:)HJGseA|%w9S9 kDQR0]yL K@q0 *t"J(Oِ Rl5k=jPdKmNI*A1b:R!0b#>thj ?YKV+98/HI #ZB\ּ{nzFE&!H">"w4_k}\C|!c%M^oL٨ȅ,*bAQ&^b.ɠQɔ5%*g8OHi>(&V)b3h_ LPJ |v@,4l#XɋϝK^,lklGKl `_;PqG"cЉ|@bB&Ckby^ TT 2(wִPT{?H#kcjk B {LH@;Bw3UM)?CIYjרlvlZT@mp9oC)=YM!}*=yN"Â,f]m oIp@@c/)e/}ܓ=N nO>זꤰ')IGb ] Ʒ7L'!{;8 7fX14Ѕۍ1QY5QK|K!>Ń6p+s( m8Y,SZT,!ZKX DcRG꼊`{[:bׇTN@-:RL/KQQk<17jp#/ϮPEq0COdSٕbԪe9 5U޺+d`AhRuۜD4jNհ|Pnr:/޼Z%o|Ǐ&'dUv tL[8Q V$'Hj}|e4"ɬ]\VNoZ zNhY t^v"a;KH3{C_>Õ]b1hL2Hgw>xyn3 Z q!ÃSBZq1ZguZ) :Pg#݇iuֳ󛗟~zu?P6C@۩Fe+z5Rج.|fzJ0/?~u崚j r) O&DetXG5R_dGrunL=h;T"to^\=>űOR;pB:e,/-fAXf\*Xhx_߿|vyjkD1,G@6I]:r1c2GKQ-~`**|˛ ՠ!(cp$`16Yr.#*EϜv͊ZՂ2>=Aw<篟^_`Ɩ(Ba =a1\.s}!C5IT?8u:TL2b/_]"],=_Pt&K:Z!ik]^Ƀm[K/)RYn͕b e) [ YءI@_V5TlwͲf/ϥ/NM`h̵#]BeN\t?#SB3õCR'xgv-E*!~f#PVʢ!6(+[t~@NЇ#Rۧ6Ur6bt$R0f yc#>=eۏ!ѩ7ͳkZsvmSdJFBZ`JP gl[@ RL5"xC_låS#I rt/'2h"nmC{`S42CJIZΕ d$H@[ҭ lW`xI&whtƏA0CLO&St6eF;^ 1),%D:hjg[V`[b wNhq'SMmKh G:Vq>eRy8Zj 8g d޴PȘA1k!V7cHV5=9^Zy>p75"buʔIZ c[UQp5-3G`X>$ FPŢNs[n͚ۧ 7c5F1șmҏF :Cˤ274X\8ht HETgJ_@hrJFcV;J mj1ߧ WlZF^m,lY%J`NDd1#C폖 EYB1{DSLH@ͯ32>zHPȰin4'[?:^i)j^" \!K˫S.I s(,yш-$%5.`>2f.5ЏTy|0ZV1Kbۇ%خx YFZquN9S|ҦRI<yPCUp< o2u)>Blt5Ll#h$Oa0RS!KP1 |ݙQ|uw4(DB$wVqxT˚*rK%6z 03 U{(#,/dBㅖ;!sgZӗ7hevꘄ夁c% D*kF7N<؄Yׯo5J絁OyʳKvvq~j\Rwey'mp,bGRYj,"0ZvxT+H\ӧ fՙE+ᐏڊ+FDR/K"'7Rы)(<頷bAH7/z "U <+z]ҙvB"`cItU̖T{ +X!Ӱ8 jaǖ+59|V@e|k$W?}( 4A o>1QѾAZ 7'ܣcKW4őr x:vs,kl3U o6*_}˭EJQBUP.n{FubdsRh`Dg JXAZR' hUb6BoZt"Rh4Y.W,ܭvZɵ29B#m*^)Ib0N_}{30q?~~ԫd"I@;(cPܒqn(S%ɻdΠW\D j ϟ9b6&_oC)lT.PwG0t\'ݫ:|z@ȴGDPj`˗eW *" Vr!y}tԌ#Pi/M:BZ>_,O(UhN x]hcZ$L x2"p4' \HߥJTg~ͩQ`6o3g*=2%s\GY"s"G qx"WNC/?kN)`C $+`uUX4`U2w8^Nii8Xt:] >}yԈ4ٗ?~,LfDDcI`4' |$ja[2V+xu]`œ(Ы#UIL )$ rsu)}F6틕C4βEJoN"Ano2AШT]dx?HF:z'7UޝY(dh{iT&{I{FH&3={!hy:O˛9"m{o|vaφOCtdtj[kklkhlۤжZ3"`C 52eokprCJv{' tdO{S]umMMev ]Z Af!Q9-$xWUEeeM]mK1L詺c"s97XVZV^]UV>sDgyLIߩToل做ڶɅ핉ɉ’e4=P=Gk= B :,X[EQANVVVnaqYu]}mYzlZQUEyQNzz I-m&ppeI>Nn<ĜZo,/ˆ22r2cSғӲzT:r8 "wYZD>HPa C[X&yw,?'#:AD;LYĝƂ 9" Z@&(4&maoLv7f$$%䔴ܒ-,qY'BGI9E'eW .S͙<̬‚mq_̾+o숸c 0՝#< 6 c#C\yܣZ!Q配;_;@0$PcQz|tK#c9yl_hF"b3 jzF6Q'( FcX{uA*,r]<`̓EFǧ״vOLNMMLNO v6Ue= o||Oz-OnQ1)yEUeP(?;=9.&:"Q_#wn/ЈȨ'1P|-! B訨pq=fnz~D0.;RІ`(=z5<ދ^Ӿ yhX@OT7tknI٥B̍AظXYpDOߋl=<*cT Q#aS3rrrs3 @`3O&yB2čKJ-kji*q)FF\Ig|zn/_ gbz^ycGW: w8QS*;:Kº;ڍxS 2uI*iZBPR)602!t8]M8gk Ϗ# Uٽd*?:Z[[X*@v RcC2cl8=d, FgT =/8)*KJK૸c|(֨y 9 Q`3c纏y蔒MҢNtf@f-;'󥥧eUsu!b:=*Dz=ޫB\(Xx\^Yiq 2_PTR\TXZVZV㴴ȏweWnj 躹𖠐c.>KI*;*05U5g,P:xEG!+f,Ut4Ӑ]טƚŝ㭙΢Ĥ#񙝳ܔ|Ho zu)>*JK)ZZFtICU_x8FdthN䴒]T7=Cp$ E&h6YJt]Z|ЉΩ:ɏW~#>vv f )f'7ᣂr=1h2[Fژ;x"u*:#|W"͕۫8TI9dRgN])E|&O f5̝挄a!h(yA0o?U-KnfȠӪ C($\'&O$-lړHp5b3%3p Lkvd6A$MpT&_,+S4R?Il^eE;i'Ac + N*R?>C,腨+AALFZD[Iiߑ%O/ vT S*(%mig§a;h%2׃RJyℤ.Zۙw Lc\ՁzFA3>C'cNO] tDZLHNL)`k3|IG 9)56n*Ph./F&L*A.1>_ VZ.֛Ӫ0ږFLsܸ W1 BqY,&8F\v0I*l\erbv?H+V~jhBZWu@)uFj1Zw|xDHT*Egl6zB̥!Fr+͆d5!#F*pf\j +Ui V+3id">ND##1BP +Q#ݖ5cs"yتU Q?Jj-&#19@,6uTM\1H&=!99,&ՠ5}M%2D2MM Ơ2t&@$TFeV'iRH"`e&͊-! q)ENy"_ << Y; 24WJxR ̘ɠQ@P1R0"=;t()œxnXvfTpt*͆<.J1(d ΗZЈg<nH:V2S+7Y2ֲ9NVbX@,ލ$&m'}8KK ^Fy|&\X*f3Ŀרz|5nj<4bE \IXeH*٩ìST\He|>I[|M#$D`B֟և*4^|qz~qqjT (aEcQ~U3Z5Sq@Hl0]+X3Վ a Da.tCwҚπ37n/tvquyxiɅ <(s IxOaQM2TZJ?6m^Dit b`.tٖ\4]8,26/%$P$ZChn^=PNHD $#_+Z)j/TkB6 ygϮ<]_8P>A }gŷY95<( *1rNC'6@;C>d̐s3c+#X P>yzfT+"t~4Y|_&VJMݥޖN<:76 ͓Z>{vk)i ;\| cTe%j !6><ج/Xf}W&J٪,&HHcIX9Q;Ekॵ? [ p$#>3:zOoAA0ﰾl$OE$bd㺢EXl6/u4332C>fh_޽xW6hD93[$"4.(f"*XJrqT75KV 6VʤOM3߾yאHq !k4.L(|뻛sop݇lgI࣠M8_<}]lvHu{e;Nmfyjy /n.Nm!BLad〰.MFTZO O?= Ӥv;K__~|yy같=>ኙ?-gۑ0Xj;i]xCՎ~~iaF B u,;?Cb.cq`~dd2G;A0p͝8Cq^Ϧp>~av*Ug-sT?_1?Mno=$X?W؅c08pKB]#fSڷ\kF/2$Z{I X? ZGPRLOzuf$$u*]!ܩS0<{""bFJˇ?RL)<{CKԓmT⢧*)tw80~!)=h Yo_).B1Se1}<hmn QJ;38|+/{&mb =M޷aQ;[i "C =77Nm{{P\wWj&8KۻSaP'õmyй" ݫ_ڍחjȕ;ݾӠt,s]" |p|G@@ЫMݫhPp F>:K>Mɬ/޼9XFEDTN)$\lK $w& 1$`ia&I Yήo޾rGJ />}ӛK YhPd2m݃`HˋYrG={qwsuv㷏ߝtk,Wh􎧟~W6EʤSH\қbj Y>N]ҀG&Bn3E`gϿ/J K4_ǧAL"j`+L38r} ׏C8RȠ,nQzݤ)uzj|_eC(4`+4$a4$ _`DZDɧtNc/8U` W?F'0bՅYP)jPAz%dcQsg>w^Zeg9VIȞyH rҺ4/nbm*Q?ߞAA˔\!S:[WB є׺gv(NBޤK`_ 6pR>BDۢHS0 ~YQˤ|n_m!KAHw=ec&8j9ef%R|ZݷϷfJlo58bI1V_=i.R&0"aO`V#iB|f\[W~yaUD? 2jo5pgɠs][1w /POIןfMF,Եw`tr82P]C}2Ijy~gzf }ٹͨt]ܵ5ޫ4D_z>鮾%$U}řQ').fL>`y(& B,LJzC56, TV+8$i3lMq+=u u]B|y\=tPl9ƕ9}͕}S'DJ70J0D%\ZJ!'zꪪdzzMw`Xr2j..m<L1 ;ehNCmΏv4T 1;홑--ׂ"Vx[IIe]c[:„*B>ymhթꊊҢi כěhG'մBS+J+jQ֪ؓ‚Š"S}B)7T_PXR^102לWR_YXW\?K B̠OGn1$6v<-.+$1 ?7+=9%%--+{ b!g }ޡ~^4OFie}8i{0?'##=33;+#-%>)-=##%%99%=}z"l WgDžφ7y5x&4:9y~ uԖfgxIɉI)i)))Y`fҎfKӞ swlxC#{AVpyYٙY9yE%# &x2'1*4gw[)"f1ə5Ov{z:!?8:9"Ӊx_>==CSkwD"Bm@ FY0 S_[ Dqs+G6(  99[_j.K\\_裏sTEǦfwNBtmt||ltx 3 `y4FnRイEFE%gdWIi1,ǔ'nP7vd<Ќq>? (88,<"2ILl8k_{ nP>I"c7s^33^{t|&^+H  ^1ccKuFw9^@ޫECAH rC~>P/]T"Oċˉ OJM΅Wyy9Yɉq1ёa.u2nw>HBy{1(gDTlBJfvAymsg8ѡœX@'Xw/{hu>@UrF!6zJsS}~|d̼^8;_"bSr;7tRg4 5b9*А+ in|͕n_>3Mʭ:M8^[!'Uɘm^8{%|ȄqMfNǻJ ᫨wҊsI.,skyY_WžU suf9es4/,.YY9y9nҢ-*Ngdž?LxW" ;YF^_T yfeo6Q_q<߃ǹz񽰛4B"*0jYYPV[W[_W[[Y7450S[^5R8ڴ(7v-&<#3W8`<39yxz~vnlkpri#qܔ5Tݙ$sյG[%BduK܍C,2q*{rr(R氛q˥ƒ5zvFm77>@vnB@vlFu!v';1c[]ӡD$ 4X'jGg:T~Gˇx#04e[bzr\(Ya#:V)R4D2L&ð[j!n$/!XP< wk5<4TT0jMf -L+wS U `2mfpJ?؅ )|؍P+hfr) aD:3hة n9"&HKl 76c33hcCD.8."1*RSۏjyv~2j.30D:W$ hAlw&9r g/kJICeFF}zR Se4gNtJv!xBV`-v(S& RkinksD.,"of$:H<[:A%bH"-+ZFA*A[F\Fê.q\낪PJ/;!~vfY74Gl#It6_"S.=f >N^JLjǎ# G1Xڌ xڴ`".ۍ':TNR%Q(5n;ϝ6BahH/',PO/άPN&yYv5}kL59-~!I  gPD'riJ/*N$x_Nf"bZf@vdY֊IP^;/@2N [0'lXOrѾN6S$+څQ1[|׆qvyun [E!.\p\6Nd6GD]%:oD'Rd>s^-C| =yt|l&f+ ^Vr[xtQ>׊ݺPas|1ŘټH՛$ 2$勗ww_^)Sgr jtk*R!"j;1Bp%wW&W6|7`/^~ݫS$YkSd5'+"QDBV=BݫH%:S]^ rcA؛Z ߼-]*w2o E=H(héYeyX|>Gޛ+J5!:7?zQC$Qř*|XIR1JK6xc#15(*r/_>rZtjभx$̖< ɘ;|⼼~kGXO魆aPmNZ*)NQD¥ذayPQSN3^KٛZU,FLvay@$1맷w7NA#!WLŢذȸn85Սz@uG>1nKCULp4!QhL(GF6*gXqI` @Q/ 5+]B[eZShTGF5ub`8.4U;|<={Vũ >}n}Ƭqɣe)PAȀZܰIH6 k[ljCwJw/zk E2վ@H]_{Q1[\KkHfm -ӋO?9n0TDZXc$G AH33F|>ʤє7>oo2ҡIbE[OH8Iwl8l#5NJ[سS_|~dNA.J$bNJ$/^Kk:1 h-&ӫs_ۧb2g93+"m07xR6G#|\pDnJHHiQ|>}e-azӠ87Fox $A䉄!zztGm"hY"-FД/g*g(LFAd<&xeGChMJ C`*ڜS@ | ^);K8~3VVqY!F/6֯,)+#˘Ɣ/3بᢒ]"zyLbrRwOoN08V3[81dE$ćMY$بqHrSAqHwne Gsۏ__$,F-M4׮1g*&)փapGemk{h"8x9W|y{J`9ʋW~͕GRT* w5U^ TId'!kR`7[KzX*8"r{ytmB:+)RLw.6ҁSx~ga6Es#8Iom2G+M~ۛws溊MWT-d2]U_s!'@ *{9*Hܾ{ZY§R)W}s0 055mRd =:E?`b "k5f9|xjpZyf^3rNK.rw],Ձi|PJY`u:&YO_|׿~~DT>}s4j FnTz,߁js:,Z1u}Vǻ8\7Ój|uESbt]?_]""oŅlYtRaoU&g=FQdcRgo>|SJ#tg~˻ۋs0X2fq-+wݓq+_䈏z*Kf0|!/_XB,Qfz7ϯϜgvV"ʫWx#T Ki>3fkKZp|9|>@uqKF'̷_\&F!Zk rfd@yx{T)+\DNf3N] +O)aCX!wTv!왒4MP5EE3T@tj EA[$(`wmHKYiu^R-YЄ: 9ܐW8&rh?tb4Nau2X̣lMՔU ٢=*RL' FgwнG(˥̝]Pձ¦)<ݙ3{fJID[,+(*mRUR3322j1\DSARThf՟Z/88<6{bkˋ whfBAqi(?Q=&{H} G&>7=27829 ؝žʜ'aA^<_'>yxrS;"$srtwp|U4Dd^o"s;$<26%ihn}?xY͕鞺nB57$13t|zjbbrll$75!&2,}GGn~UrqwA.Ĕb***,LMw^{`{ \y2" p!~jf 0|ϟyP{N;{Hbڣa'/N5ǚ=sT?tmrkIˆCC#Zl I\<_sz8֤>~͇y$a."cS2or2g|<:inwmv^qeCKPo[(tˌ-n p-FZHDTlrVQM6@q><ڞn)/L62>_Ҡ )i-U3;vzZou*fƚK3=^掠zO>@]$4Ok%(ĵF&d7N#r7XYZR\~Vlz9y$%:̣v/{Z>2V=LLGeQVF4+(((vfFFNY.S,U8 `qRk6y6LY|={ S;pbrHw[ғ{:q Xȃ \p,vfՊSUI5B4YwPºv:wvi)che51$:tZxo WR]^8.sZxjǮLJZHuf;89ll+,+VP)a?=;uzV$5n܈ ψIEuMKX*aۜggvfL26 ZmEf;=?ȬJ2;d6N+2fаBOJf%a0p؝WNWR-fVB!;b1: y4?Ha/3i[Tcґ9BiSe)كX~zq`VAdh<\@H~gvI/Aw%`&h~T_{Z|BZIIkřdZ%Cb RhAhŹlT7*+)&~GC|3EGOqtynr%sFg0B5H坂Z1n8'>j^h,TƺʇTT{F|F'Z Љ& -BMedJQ`q@ xWvsj\z݁Ҁ͌X?xG ̩%hu{ܓFcM@#vtLVi!edª7%.V'gM¹1 4SU&dvc%Zto8?P1t ,b;;;H"S4pŠS)„ B\XtdʌMk`6 ZB#6614**^19w@T)cv%wL'.|'l`HBˮRW?Mj zZ)pcWH2ุPB@\JI,Ҩ]VFfČ\ pLzL*1' ;[xJb .XPotB6f01}i& Fv-`1RQMBJ6]Ti˫3 ">=>G {H4#J]@B#x<6ć&w!줢i@͎+I -y ,  M L^>FJ\$ (K)32nkJ=7[{xPM7.><5erEDp2J%0h (nB&Qo:-ZRIEfdUl rT;rrad"ۥ4ʃr!s%OܹKACiYCDҋ]^ZZEH&f(4Ȃh_u#7Ӟ&Woq>ۗN#teLY,6FƣPFR3ܖ5[RJNZ_]]pl.ND=G^ޛX/J< WZU2ȋ84 IQGi&|$o+GǷjUݫWWf4L1Bw3M4:4fW"\M'5Dm/t@2I]'hQЍS1GW"RU_{֪|]p z˷ʥP S[IL;jW"kȘ#bח׊ÆPBcKeғ,/77f'FVv7CW޼}ݛg`*e9ОSHDr;\xX>An̷>718110II/^ۻ d)їSHTF3V-_f+^8si*xcOnfz?9ԪE 9;ZNQ_m0}R*8C-`x*ZC~a3iURBG(I)) |հ *ODPܫc*`fKcVбbP1Opӧ{5P47+FgM 6@ X#pub9v{M.V}եb4 4al)SlU9Uq:qPtRg0i$6g+vD:O_>ݞZSSqC+,x?2&J.' ZPgSؼ:>q/nzت5JvnE? NK8N@vjw,J,7>s}}f>oW>ʬը \G6p"H%\Bg#Sȡwz58Z\mɩlN@F|0߽2.I0)4Qȏ?( #㓆b{| -&|Jwo?z|fB6,n H,s03܅ E_1̿.bYN{` T" +Dؕ >#vbZmc;M|qy}+᧺y} NR*inx2[k;6?b1`{ .RF%8 M\[R_ɜ٨eL@KeѰƳ/| hԦ |i/-DCkȐA8\0U)"O*$# JS' xQ@N uƷ,Jm*=ibW|O izɓakѕ[|}lt? |Pk<E)tv\"wqKb+3h!!KZp,GH &Qn5DrsQ7#lVC| nC3(| n|.P9Rg0۝b7"E'c LRXblQגQq.uʓyZUjŧ*x{ZAm)]gpĔ`TAwN 0eL"Sj}C&#*NJ^*|-(E:AU維9EԃNN_ 4F֧&uZj)*œRB_\aROpû>I4PifZ_簙m޷di$pUA6%^t8~S46s2]]4q8l]__ꘘ5Wϗ^~ug1D<^V>%Qx'~=7L< SZ9 &G~q^ݙ/}A@!H<}0PSڱC&Q%针м"ͣ,P{?~ ~?H`fG4$ߟ Oy&#w BR.:>o1 __  2nyИ[D"DGrW 1r\(,CZb6y~/_nb,_o~fJ:BH\koۡө"ZZlDZ,&%_~_>^iE E={79>a5 ^{Q1f"CWY 2XƐ pNyo/o !Gkl/~_~x:sz+0L WOkАá&yeWϞ>qw_?<_]VK+熓\$z@qiP_gs]?{ N՛*J`H5Ƌ^\8Vvz~4(y豦E+"{5F;EVݤ3X7o׿oS8T,S; fйp3ZmY'tt?8:glCh]zz}wwis._~_E)fS Bc}ϯCg͙I-8nۥq4C.A\+gOL?ΪhwbӨbvw!Y|1e"'_s'/8`&q~vwsjs^<{;F.cB|?suu<8 f&aAkwSN:}4/nFwAyL9w ho?_,r!Ny|aуeU t:.|PI Yճۗ~eSH%Dc?/_=}zsfHH3l%7a]>TYԴN`?{;0?Ω$~ËXZ5J6>3زys)טϯnnn^Ӎ^CwKP`TJ8Đ{{{a7ܼgLWz;<_>{Jl'5<* v)`` T侌_zH0KeȁQSn@ޮ"HrۗgS h"pEnE5Y< >AO'\@EN.IE_&8^^ w6hSIxTJe^I!Va_}'Pm;-Z:"|(-@: VOTI??XW1 6~eze0PPT="JVRrvÉt29^W_8E֛SÒ*BjgYqIeS \&vnTT_]Y~aai*S\nLy)4?X[ZPR^U?8؜ϪXZn(/((wwX@`hDBzY"dQk#]ݽCӠSqT63Qvw~-U1$Þ ( Lg)õxN_ԵF- ϵp|X+.*ɓx_|ll\+3$8F`#/ȣ'Wp>5oJl~#twnP7~x9?c斸zn`]n󅀯 餹{D|U.W7 @?%$_TTTP$+. "rS.AE&e6vNNu7זg&=pq>܊`{N⨸= D\:^]1Rww$7Bg@*bRk)j6!&WHrJIeYO¼$ 9/$e.l"j{ynrlxwxrAjBJ_eV|d!{2,|֡|F&9TUV\_\Q߷FpȄxj7Nm=0[LY:%v3:'=+LU]3$MCLq>4uڰH39殡榖ŭc؜l.LMjYe۝`oü*ҍDevJ ̵씌U9YYD"R.`s -v06$E|) >]j#%%$N흍Mʖ(ͪ!k33eT 1s|w!O ǰ-'%y$[~ tT43ͨ`$T NLebXO;ǝ1&٪KK*EMs8 ytsBdCf2Ԥ%1[m{{kkE`vv]jjAfXեӬW&@ djt&k)-tag*B|ކӝUS^LSCeWh#؞*D4*%VsXf-5%tkP&Jb=rk{b)=a2ٝNH@)4I-bCfSSֹv=f0?mиIQ9[)8q dTriTTmӆy~qu۬f-o&%iC`WteY-OHpt"ݬ$-0T ~y Y+Qy |6Xݱ'K!M|> Y#D'3nъtt8'Յf3ʉ =J}}kCf|yrF'}uyM\Y*+Hnw_\l&ّXG0k5602clW&Umt(gYJI-q X3Y)5^X.MH.Z Uq^T: 4DEeRxjwXßV&f I\DL漸9?=Ld 7.rWnF dE\ӽy=Tw [lg(vPV>):W7]iҪ.Q<_أ'ZNEbLt8/ABLor)tm?w0'S̘e13bF33ɂMU^1@bpR.U:3ҫRmx-RLqqv|-"G.aKjaiuum ԟKRB ^JUfPL*fc4`kH7ᴀ.Ȧh]]X_1^Rbtϒ|D "XeZX1kl\~iK|Ͷ7ވi(rqi}k}}ɠVI%2X tt Lji ^3p`؆Uh[]nzW:Z8Fモ_1nn_W!H$XXJB"hvLjhϡVMxCt?xJj J$zusg )E)5RDn$&? j(8y3@? Dbh.kZY3%T.QQSSs(,zvlzE L VnY!t_Bbm|c_sas// k( ]HĈ48?33b0C r1|' j-w|HѬRwk+ L>1yڡ.s}+LfO0Nս]D%̣0D"ENXaHABAnـl87ub _)D&b0Ӹ׆$/k(0k:aùs|BwƸ8=5uC^5#}mۮfh:-|W/C,\7."OP 8"nWTT+Aq-trřyvnCʸ7f2 BCCg'r{ޱtSMJz2v+[\EځH.dep_Z|;S1SEFPT9 -O _@:^UT6uM;i-Dzp|tz~z 1^Pޔ;Ô('vgu3j.-nsDbi^35 w.7WFݼX9}0!u @g[ZCM Q5u<#a'Fd)UN˞ɕ`r^!XHIGvvrzv Z\H*\rzw+ Zgt8|\ӯ)I#ݎ0ͳ㽭%ebUl9F,L}ft_F)@UZӨčך^ńyBiwZr5Cq :f܅Q|3 }yzǸ>uݯz(Rgh[qxzz ?VB>WWE#Y`V+ŗFZ^g`Cr*&*x6Ē^WnĴ EyD*(L+D&!MzGm܁ flFGq`(c^Ĵs,w npZFE5r|HپbPB!FӞ0x:RRekzueyYAZNwL}xɢDЛz!>Tm*8]ݽeD UK"x`wES G/HI9I7eIz JJ шgjޞBMLcSGbzw _ BsɳE:{B#E4yswٍFK!k-$Ǘ-ЄfF32UrV4 =g@,40JjFP[b*}wrFXTBwVR 'B''aFPVrIe=4o0k<4L'>{OʯCTs%*Ӓˀxy]vΰsNR65!ؔ:W+Pv5'฼a&;(rVE7$V-R8vPE:ՒU2FI~QDRֺE TjkyLj &GƮx{1}l87]_ڳQFxc' $VKx,:~bf$5#/%ҠS݌^zzYl^mx_k4EFJ$Rs=<Kb[{zk'p$ UMdT]ZW]}mx `7WI= ?5XurnɺmEXd27evF KgtgqRHDͣ Rsk{f$2wV׬Zʶb7ãǃ"uvfrtQڣN,7}%ol֥͢X<,bB4۸{|[Dž$ 5Yr#s# a%m$"z};( $/mp BϏNxgFX`#y|i,)~rlnNVt%EF c @AiJE2ᛏ>\{w,!/[.ޟnPI$W';S" ^1] .bq3/F ՛6|wX%Eb>8>p"N7$kk8fЉX\C9D5,oln?ojE94Stӧϟ?=X]ZR:DgW:5x܉%p漪 yek/_>y`I3b//VjQK\l{nDc tB6=i*fQ[Wwv|Uñ%7_dws}muckcE;*gHd*e:[m}M%1=EU(B{xŲ~puB. 7O *߿9^].omb-nLLe4<|nThdPq,G7~ۻ 9My°ǏOV!Ŧ,^=?aISeGֲqptwo_/duE#2?lk}}sowͨDXe=$Se3Z5\7XTVP_>:|j4 'MP抈=NRؼ{N3'h ەS<@ڥ㣣ӷ@B>ZT ? 蔦}p~rcsIp+S*0x `~IE^鯱p&<8xs~/_?Z7er8??;;Y5%ROX)8ڕW| 4ɡ F`9}@5:XǷo.j9U_8A׮;*xv+'t%ס*e͇O_}:^R l/Ro/N:۔P3Ɍ󆹴nT_?<5MGub¸_ߝl-kbJߣ>Sz!"4ˍR<՘$Ňvub>cGg߿8>ڂ[^vMޑw쁼9\cc.WwO߾;Zoh{scmuidsP -X}9/A652͕(P)h^88;YWyk+*H*2bR+Ea kD^7,0˓R[P  δ~paq1n[ &^VlRm #TƁ^XdYJtz+ ^Z3+ys-8nso /`ƚrbƹv?9!zKj&2S+,')V^ŝ~(//THgPÍ/cSf8v]AJ mȋKxT>8#bdF* PmUObr@R:CwN0ξLy$7cxgI)م#s82 wG7?k'8l37P$$\sLCrI)=HfǪ22WoO(l~]qf|LlBV$;WxÁU9~s7Y{$ QsEYIII ^Uȉ{^\T83%!6661ͦ$^wSç#6:NTn'f俨j@臷cí՗.~ "wB6at"jjeQqiyMS{4F>{rc̅!2 eEuMMuUuUEEIAnZBL7A*'Dfs;࿠CZDttL\`  wk6p?9ҮrwڃݽwMkzCE?8_@5(Qs%`~kHzd< aP&cw):B`8-ڥé]k܅ڃݹC!B6<\_s(>N|-$<Ĥ(ݻs˥y^IW'fLNoGn{UkKkK3}֪wn@!Kʁ=ى/'/T,I~T36иpy: =Xp1wjRl۽SxTVi2L@+D,ADlсw%v\T#!L'dʇ; cJ.6(+)zQTm͒HYQ|1\vn/T .0'- 11qP3 E |F̋ Jroգ舨h0BgrJjJRLDDx\N8O)c 'vu=vmImiBW~YAqE]ScŋYĬ$4޶'Řy^ufJx_иկ^7ֽ|Ǣ'K²Z*pE]?w͌mʀ}1dD`^gEՌ(TfUs%Q@@qBP`LѤpIXlr2U'N\͜҂̼L ήaʵpFG)\\1it`pN7s@~puXWN}$5UfADc42.] BF&=UbXe{;ꎯ]|$-jԺyd.>AfӳXWHUFulkzqԖLc\;}o.vTk]YZY5AI'>YbL3/X&ZJ( Hh ֌~L`q}9}oDUTh]Y^Y5kCLZV@lVD6 w}\ +9!!O2d!VfN+шD:rzybjrfI5_p8$/rW~S7@ %P(Y-VxV$ /hѕ7}. Nz+W1^4AEn`{IVTZR2?; TAZv׍*L\bCbHʄߖᦾ:ńG勠ڸw|e(UjF0c3cC3D@ЂᬲllY0P( #"kB'?cTHYZ=28>[V-W6v5r )b_'tꘛW/[s7G( z68Ó \"+$< JTj0>! jQk*\>e敤v@ty%^W5RVD"=12:e5y٥}3C:R0Aė ^ksSӋX4j~|l zreu/l7Z#c[n:f''[mC'18<R4-喏}6/JIELT@ON7`:t j~aB~blx _};-I A R'wrzHy.i%a|ѸGII2q3S33 ;濲kW˥ %ļ ]xY}ho J+:JF /IuFfل!&nq7g?Ij€L}+kJNj^Y3Г_S0FaY)A|mI3Y%9U'Od6=Dģ⹼tb?GL!6/z%_T735.UPf&PG`2m?%d7ѹ|\Zsܲ&F4 )<;EV,/䈀Yikax&e hQԴ"2ʥΎ.V FG2xO@ZЂecgӉT)r.yo4bbkzL j_D ז_ʔ_q`OU7Vq*Mꛠ+M:9QJq@/FrBω.`e_3f29GWhQ& %=s͆/BO$@b"t׶6*ߜU4Kf14jH б uՠN5J3FKÌb3[P!I1~P ( f2Q`}TVU";;850ќC3ȯ9%|ΓQuF)k9in{`t"3AtkW!9HΣ:w1${k\mЊy"?%B&riٝ<=]h84 ʔi"'ˍjAf)q zֺF0IC}yED,՟{͆?KZD/t=JywxbfjGe|Ū" 9efAiR)gBNqixM1n_)/MʬzHT#2읟oufrgљ.w:axn~qj~?@d-VGyx\p^EŢĴq"c)T:'2pɼuz#NNV|xozla-7xJ !oScq؎HPt2 r|'+r B:ߓX@&Ri9PΩy-41p~]Z JT"2}id" *ầ]~ LF Z~d.}뇋Z~x_|!Tfr>Q/` <Yl׍ST~qQ?^?>;7{50맷G;V<(m!<h#X7^\Ƿ'&ˢaH[~x2bMF#A+nLCo"0SE$Bk<~Ż~K,Qf_/߿{{qi(p~F/ιku=dS8fiG04U  {_zL]r,&yy <|nǿ&]mLm86r'rBv;Y%E#uxk8뾯^^^ RM~iϟ|C -ѱ_/ǯ`n/RBeBn?Er꥟ꭘ:"*.5N ט֏߼'0gmc{,o޿y{qfܖ[6cڇC{ϣ D<I]PE.1P TO0Ύvs0.'X, D%y# Ý-O~9FTݝu0+>~:_Qx6 W0d{scssݬU  ' f'3"+Pgq]KiY䈕>ZefRDlNJk"3VU͝_@0WI+*5ӷJ>my+5~pjtNzJϠܘrD\׵p֞,!R5(d*ɦ^ʚyɸ7k  u?+#{$;0s \EVie9th!FZ.mQ|NAK]h}P4#N&ug*܉o3g+"3k0TP7ALgZZ6(S"uuI+|7[R+~څ%4覬Ăy2[(g*2H_id6xUф瓚SD\9/U|'/rObS6`)L8v2O qig}Dd)] DFm_5ɢWe'$ִt-bgŽs3-UEyIq SLXeCq\;`Wމy|[IvRRJz޳ڦqa *k*ʞ'%f`Įqܲq՝{r|<=nFd3_INHLL IJMNNI-\0'kr"mWnm|ߍE*u4zᡡ!IYϪ{Ŷ} 9k/('e"r+14*j /+559!:22*..)-Yi}8ECg߿Y77Z3ǵ}$*0?eQQqUmk"$tgD?sG$|n T6:8,jG Ș1wn@Y~%Gg[NlQ)ںF'A)p7mޡ\ cθE B(0,*.5;*ˊe$Fݿ{)xBk7o߹ 鵰woݺf߿%ɓy4߸u{AzΝ[n޼YK.'B.5w;fRsK˯]^kI߿~ї!./)5]_z8N^hrIBr_v}4SuyM4/ܮ>r#لlZpMZ+n߄nv8+tH#^yaXt"U[Z_5Ԕ>JOLooF9536g W D*/Jeb!CzKs#s9,HH-'<$rVU‹Q!G$Ml.ʈ sܓ3edw^Nѥ*9mk%%_TcHd|PUVt-oo72zŅT.(;y+0yPfͶ=NaR;nYjRj"C5Jژ=V{:6kw#te&9"7!*""bIIiia1i9\x2.,xEC~8/7'qAaQeCkgk}ؐqIIl}vۡHF'lͰ=t7\[\WVPT\V1R$lwyzd@pZ#ZcM@Oɬ]p^ e" U a0}}DP:Ї#<W >/!ٝYY4^aN"iabjjAW\``F;ͤ'd^sІѱw0J 7/2(v-[FB fdN7 p6=4 [wd]0;yIz^qљՆ դsd,D/ F(AfJ(ݏ*z #7Az [yޙK-֕UAY <Hjyiyj62Xaø@o s.'̍ޝl.VV!4WɄl"HeeJqi}ee YܙjHyB;#{_+f9RhĹl:9J"1X|Z A+*qfʢ-.鶯CڱL# Foo-/S Y<"bKPgj})ϖF"ke7.;؅dx(20!Qiex EJ1@V@ju}kkks}li !YL7?˙+FTF![(yJψV77֠:KX48 @G~r'26[|䏈ZclmllVk!^jk[ۻ+fPI͉TY o*h_}n6QԜԠg|޸777VAhHFź 42LIؗ$3 tAaaY98:؂*iV3JCQ9b, `[VwRcۄv 'EFL=QOx0'Vn@QeXQ"G,MEմfҩ Q'uf>}f;3O"PZpi6"]e]>%ȄN@p, 2>06ZDХ)E)}+!O24w,ЗفLLMMQu#i|ģ_ﭤvd.-C*vv~ U3 ?02:3g%WP U2~gT Czɘjun*X흝=QpΝ G%AN -D $r97}N% !EpOC";ڛ5\g%UN8NbC?đ9fңB9ݩJ*^,'ō#DG7"rvvzv ml~kd׮) )S`51{wt'=yTP3Bsܴ#Dl`.D욨kWVBа{c-p$ddphƽ;O=~7OO6LTDc 7q-G>򠆞1BޜrloUI}ciqCSy٫)oP{''K 23W%#ocy rKD)/"xFGZ*;#5.7Ux(u 0ҟuwB9UD#â̍1?da"xSM u * B*9dzRXJn@?'&c M5"šAlC-5Dķlb} H6{NJ)h. ǕtrEѫN'wP$dE7\WZ`%Y_^Q>򒭵=l0\Ȗ#<|ClSB ؽg XU@mYh[)w@]ԖՍm'f։ib5J3_Y8*B}V$~6LD/ZP91fjZ`kz\*f7<]O䰉ͱ}4!<%4cD*Zp8u2f`qH 4Ӣ㻶ZLCO{;P)Y_?pR-r :?]w ͦ)RX(_{ `y}<šb[bFkfiw9eT :7Ћ(5j)w:6D_k7djC"b D@iVjENMc )I/IdV/_X5Zlˊ)h@-3D:K 9GI%dO3x*)ryhI|Nuпk3%aW'AnyZ4I"p1~NE;94j53ub]J2X v)T&IE ?9:151Pъ&S <4EcGնMM6Zo1Ʉ|N05&Q-%L"&Ƨ;3TP'cCP9=mdA-`(l!"o,-[5XnR8 hw7t2!htgeVZ<O%w@'y̒qXl~ⳎNCH|x TᲘ7X2難%)M'c0d2 29O"ѵQv|~}7EJb L_f9xtE!o-K\žAj<,fD<]BXT:~:Ƒktewo?}~'Q|o_?|˻VG'ByzJ >n:E!↟?aK5zŇ/| I4Oqk߾~zwvrb1T2ˬVU_.zOQ eOziBwxvgk}YM8rAwo.NvSIɂ>5Yj5&]5re|?9)%<-o\|_˧]I)9`uf:ky4 9 G2}?B7EɵK{ |d 4toY( Sap(cֈgp:[Aoo7U.& d*_u5JF [,Pڕn끏XDn} 4Y${pi*dLCR(r`nЅF|bF7Y(WV߀LWb2;NJdJO7{&L~fg߻d}.yKZ? wC΍,fI :y`||=[I0C?_?\+%\TulJ^@x~A.[x6"2(+^\ Fi LPoN/ޜ52;;`J@\~v/Нbּu3ݎ^"`SgYBzLJí%0E1h M}\ТyTalt6\T޷ִV2/:w߬kDl+ĄO}>YEl1T+- /A񦟸Ýű?,g$6Uȕ P׏.NVDNnR5Nl"Ӑ|֚%ޤAC,T>77Q$5$sN)Ko?S杸YI\\j~e >EI, 2f0+.*>3U<ˆ~bq &c2=.1)ox%ө=/_Idd_S9.{8壘ޓKfD~;*MOHH~V\^TRTX]$+)>69<`˥dlഺ*Z8?7=.$42.%3= kyk"==;!QK5Ob-O2c%dxhHXXXHxxT\r^Q ͚kΏ~x`?#U6p (^ 13=u%Or3"#bR3[fHlb狤>?ّk717 2s MgFzZk_4(Ly(%M?o.堈jv} J/y50Y h,K$,LtT>Mxp 2s4o0kupeqم&&GFGFjcC߾Lj+S^_߼ 8"6)=ًҗ/ʊ S"޽5h龨z8~ _{޾yjkMvj9P^6̛7oݼsJ٥׮%3z-!%8ߝbjWhgDO;u{o.א L]6oU(5m"2v?7CA50_$G$=x;:RY c*2RPJd4\#ā݊*՘¶H$Q{ۆQ L!xdc{;2otfV͢|I8<&$#ҘG#NN\\7#63L&Z[V5onbtkߝz hH %Y+aSٙE×i 6#Bn H,@\UkaATAo\ D X'&Yjz㰇q/1%fwy)a{+fAeu>d)mڒYX ""2Ѳb 4ܱ03:rȸ?\d9ޕl!V!68<`Rh]_[^Z@U.xW)-Y|]>#^]^[u J09")TF:VNr+A1->_s2f-:00RpbEMxD \X3.mnBl@ʣSI:tyMontH>wڈZ@ܓB[V6֗A% ,,@,+k[{;V K$,8? ](͗DvGG{[[VJ#8"1N뛻{{{;^}QZlbw>x<גkF7jbY;:Xrǂdo5ZJLhJzqRDVs:_ z> ^!<CFA** vY7N.Ύ6WW 3PGXLݣ%hX3' QO_v&ĖZT0o6c9P R@@1R5Fd]=8X2@Г0 VMkLc 3z0-(,[,}Z}~r fW׬f=E@5:j1tYj u݈r 𚗫^^ԌȠO((@}(yYRJHXC]=huex U|px{AbmMAHr;G9U5m՛p!8I0eJ5o~t|pYQ#fġX0低 *g DPKm:>sr]*26F*Y@=x=*I<.seTd@;<Y^zT-UyA! 5n±n#w* 373gBXPg4[Vw ZJ)\Ts˱z#}1/":tTbT_xoW?(Zd'2[)Nc6Bw JjYPՅA/͵ 6!F0105KtzW8Sh,LJp9/qkGgg{+_:z':lj?E#6꺧_Z#{i"!vvdseusݦF'zGlk iGmoVQ⟇NC3X i+rʦf:LZ+<AHڸluA:;ۚ&q ]7^/O(9]i#t!"wTSUnk' 3}?<+ jUȋEhP\B.ެrhb72yIM$WWoKIx݊oHpOB"R ܈G~u鋢'.T5f!߯xgcLv=ӡ]{ ?-{\z Hlc:FUIzrI?lAKbCu>Ã0Dlg=*ld9CA5F2)!ٵ6|'tG/p%RŽo1Ry'RE55xǬQ&!">6+Nt-KEk(pBD,x릑+~^X9G7"ӳMR>Sn⛅ JSx9'bs";k^576h9;==^HE<9ב1?7D r}h+S;sɎ鉎AKutvBk" 0l879&x\.F̠Xy*q2F)hۚ" 0bDKI!@׫k+4+"Nk@Vo xq0qbdʼ+C(5!e,fmrZŝHtѝZ X1)" .4#n54:Ꜽ)Xӏ7 up`5j`قJD6sIb9,wrV_Wi s4۶0x@F[P 1uF R탓;T_V Zo8ec6άWBT؛r2N[' 9<^__[4rA[Umk+f! 76`!Pb5ڕ=|_RdJd3I s[hSI'ӥju:iыY|ymj2P0m!e4D]~9^gL+?me^gH'E)[3*ز)&Bǭ9]^09uoC2Q.d)@aď)07MX@>j9gIp-Z,z%n9ĆaRo29ÿG׈9jP:C"WVBLJ ' ӏ>clbg|B'M(%Yj aTJ&dbǦ*|\TMdB;]vh,pfdZk/3dUmZ?tqGZJ-?fנyU8eYILJ 5+ -P1h\! H]a)Bb}$urޓYe"2&R_?sI:KE҅R AEUh…`y,2%1_`rx sISdEh/H,{^6/E"gN0/{3U{ΉW+q=9yd/ͅU(ˆ4M s4Ɓ1u45>%YQA=G3p uqqx*W.͡]DWK9d@pcűMx [?ѿΓ3XLwVX~,BU1҇S:gE%b1sh"Lw&<'3_<4ÏEՎGA v7\ H$IY; H$ UjbQ?C58f;ɍNI E CM.HkVfw ,ZqP<"n,Ʌ2?C#L2 >M'ظp?wn( mLͨjp “hwwquULrb_",*fa|PE25†o'qӔW3fyp>3hZ)!2oY77L*Zā ~O Xy6|NyULMjvM,I4)K۠WK\~cռfAsxkHdՒ@2'z{8|$xlʜ|_>͖(eRlbӧ #:x|oei`'P4ieB,OR!+/>}~kbHv}z{4l]|'lfCxB1")dbkZ0ĵ^9|qɇ>g)e BdRܸ˗,hҕ_?Y?pQ(21bsI2>2؎9To7RIhִl2߾~89ђ:CSm_?=܂:ɨVMiųdsN`~p=<-K['o?A _~8V8z߾|۳ý%FԦ,R뗸j <0n}*f߿}|oI^_lُ?{~ J;8 GcO`BfTA,레e`>!am^FMr'$| F5;H3:.+v[7xW7L,ԤW̲E2x/?~_ Ʒ;FTB2'>=ބМ|TtTs[8"C6Ǐ`1TkyKɦ6VPwl s&ؤ'U \D2쿅f)I#OR2ǟ>߾_1jHJ%qp.5:k6:"u˻g>ӡE!Hȕ滿}tu$P^d<ۗqseA؛Q6޲qx}|A 4@~p~YTP;h藹nET`X/"1E(:8>><<٪N&Pg{ (uNVLԓ7d%v`nI>wӻ椐'LDgO_ni|&i"2ʺE&c*|+4\T8śx]緡Ă޸~Qg&;ԹzݟO6Ff?_5#TDTO[ӽoԓCIB%8@2|cP}Ma=b˪תt~aI dvg-7aX, J*J!`;xa뭷?Yϔ*P-҆'.&r^W~v?(g(*`!=%'iv/yFOix>#6RU4GF=+nV6˘,x6cyBx`X99ZY7G6C_JY.:o?4lnQ(ly\DN"OI:u}cYP^fj*e`%-6fF$T-1C.Ďy9DקG%4vi|B6M1i~.A 1|Ilxk`:s ׎܊.d{bTuMb!և(`M}]ҎUrK'aG[_f'F?d&Kco|劋{rqvFdA?Srچ"NGeĒTpG]aZ\LlvՓmvnzn 1c`ZYޒU݃-/Rӊ_uv5$dW QYa7}<&Z$a Sٓԧ5x>i81ຏS2\;BR}^D~ 5ȃuϲRcbccb#""Lٌ{6쪇σUW_B|V`Rq @7We'EGFD&f7L`m. .Վ b޸V>H=me嵯Px*mx|IM͡ |o?HyZ52FcX b3/sBqH$qq1ml܍3ֵu  7UA {|<==d{݀Ԝ%UY^fRLxUvs^P~02""lX_'_]j+㾾ׯCZΝܾuל?79%zkr:AݜA?~;+W]?h%6hKtgq9F_;F}\;Ey86XcJw;o^9M6A_RPG"7lQo{1Ĩ8c#B`O^M*ICZNByk{񲪮UKƺg9n]w y8力ve߸{dOe ""txO4 {׮©~*'&ߙ>/AUO7Ӂ މh5ٖ'`ɎZ X [f8J9m*+5GcIq!U;/ϵ;hQM*ʈi,%&geffg%EDD22˔!?\3+H]#2 ^=yeCg_OsٓЄaANnqםvm-78[H~ModHyV>8>:PYV^0x|6q,#20(fNaOs9bstĶͨqUK M)D3% ) pERɠUCŸZ<.HO/gs;X<%R,.̓lܓb6r`QB@@j#htd|NkHOgV|o%֡5&fw^X`z8++KFA-.\XcѨS 1RWFVWNvpi!:V [uh֑ 5d^YZ J1Ia(,Q%AשЇ/1j3;79Svˎy} jYZ)">B *I*QW-")Ⴐ1/Qr33/ۙˁs#|Fcve=! o7*G%<\0/A3%8dNĽD)L֬y$^pdyimkww h)FaĠOڲIRsBeL@P|ۉƹ t x2=!rμpdPe| ְ j6K%BU%Vt6q;ɭd` <$o*Qi YR8$+u楍=Qթ e uTxIK2}/Y(犣ҺJgC}ý- u;8i6ꕼ)rK}h6 YORŃ:Z ݃=HY7aPΘT12ezyz߈'x)ehJkѱw|r|lcDCYЁb?>9:j^DT:2mk~վ>x4WM?VÓݭe(*.c,0cFVŌ6zk6!3 6a+2S;GoޜZ Ja DPd6NG J&R棔vC" >"ш@=P8͓kʱyp#B!)[XBwAG쬙u5W*TOCVnY+"&tR hy Ǜsu0חt*1sfAgQȘY6NNmBx5U?\SCbDn]@o 8׭:0ڋf 5,ӓUJ.E\:1) S*~xf4ʈn2@jhE{&I\(#eidwl rPNGqU7}VrG5] ĈTi<8?;MCĬAËtLyɲyx| "JAlbgfhJؖ~8}>W#C<@,M'o.Ύ`%Q'tvwM|趪3Yk'k`R11c JztY~CEbH?..A?UU˜mlFAh5m1ZO6 :P# d ޶*i݌^)Zė#[ۀJ!~56ʺiMVӿk] I%C̫h/B.dq^w77b4r1]2uyŮ&cNv4wt5\k(=>C}^ް\OB_lk]##W*Aێ~`S_Ɔ1e&㭐ݭMC(/)$N?u3+M~ zKrCjjk_ 1+!h)^W.5;*c+Mڍ)^yIrf5X;^2B C]og:\wH+([+tҐ\:q2782ܓfP*sqoZ';\[ _? B1u 5OAaY#r\ZK,St+Wg/^`#Rq _m婨exO~]ZXT][VPھpK) W b|6!+F2oA|-[&W s2fn 啍j^O3| 91f&- y|&@)R9: @Fz8~ē\ ةM>>A7V?JSyhʀLB aΠnpc٠ #-xPͨ]N@`7DTihNȻǍ>DF *s|k gڛ)~#ŋͽ#f82,> . HR 1s,ӽN KZ6u46ɝ̿׮xuaKZPF88VgPHa{b) `-{hZ:0$~wkqD,z<:EʳY:v yx`ضf[(B!BaƝ742zwGwdzuA&RX|"ė7⡗u3DSN~E(tp YLjGIǏ/NO|xfL}~~2VD9)D*{ ތ$l~4<e 8HDROҍw>9Z:y˛%ڇ,(uHhdw"9=n(z"n@iVAo޺ _>oz˷o/>}v|Ѹj:k0ラ3 b}KXc\m]|珟||a C_loޞlnX_R[3IxfyK_|8\2hәzxj#>WҤJOP?|aA}g(ĬI,Gfw{zdń'd.<㧄uVt-nN룊$Jyu͗?~}b|$)V[vAזo-I}DA\˸D%hM̌Bq:e?hK 8#OR-TEV!sŸL3y]FK jv 2I/YڼV7|oLE odo۪:,eWpqO*Fx3$"/(M˛ۻ[`>/>6?'6>:~)C][˦OLJ>c:պ~˛ -T_A3q۟Vֵ%Z[%t=]ȕ)uZIә6|o ؔvW,SlˤҘ?JBmBD [ź׍))8$+jx[>I2?4|޲^&J=#4FkI%w'R,老1!9CT\*Wȡ/ﷴbyy/Ӭ]|&DjR4{(K!opAI^? 4H0֎}8ZVIcM|imA dBJςC'I/1Lqd6ߣU:4U[^.J!ͦ/? +_Εt<ڎ^^#YY (<-TZNLn-[{[R#f2jQ7~IphzZ<\lHHx3I`B} $@Dc* %^-qIcZI܉@" DZ)O L>7b)gui;i(><]l,ȝ;bf Ɔ\{MbLU&?@V3PM3)y.5/ ~qMq]`ϵY&8-66%E}KP{iZ|fiSgow[]㴘Q*w&= 풨ڽ~,_ 񵂂GOg%'Ĥ֍ľ̙,vx^8M|<' OR3G.-춟3q65(w+ $čw=JO1i9+ZH4qQk~^n:W57r)OK(itD'*k{FQ$07X8.访 olt5o=KzR?%c( zaz('6u?/mǐcfڝiEm]= 2"u#>rNtߺEQQqыgyYqѡAl`tA/;Ӯ< #*""<<832s#?@Zuy[wܽcn_'~67'j59o??P^kv7; 㒌ulY9p9 ?~w?'AxCGR7n޺}ށ֡.̖K9EjW_%THp0]6fJz_ |5\kP~bqM[CcTT64456W,~tuz$;Gsdq' ?"5*OqnMNPBAIVIّꊗ/+!͗+x>N=v~^`M}WоjE]ϲScע Q:SJhY}ST]#1)eq`OHͶŦrpir 7pzuli@xyIq'EM}}ݯ򒣂CK8Z9=9c{`!w?򨝬q BT u.}=&6q(-2(8f^N$5Q^boQkCC-$2%$*ѨS }e#{Y5!큣ݮra kK[edytPӖڴl5( 5rl@)JOa@n˴p6R JkUf`~äiLoYY]2($*HdF7_X1]9AnkN*T0z‚2[Rټ ! 58+kUbBKfh@\)Viaw]v WMV|լ@ A B_Z;h!xF -W/=< H_/ #Pʺux|a+ROd"h>8:^CPkЫċ呁Th _pZCB=9L9. Q̺ h}Ofs*ɴ|~vbR!cvFB9>=?=[ |KCZ(;|#(Y1ZhRxwv~xj]YY^78 3R b65җdwfݳC>sYB3.m_=?_,A;@VFBn>>;?]5k.g.a\P=]5甁O7FT0ۋeyu}բU8S4H&A QT-tUJXȥ > yW[RozfϽ~f8-8>8) ֍gKՍ5Q)aN9Mjc_'wBJQ*VMT@V/I #q}eZhAІDV(VlU* S%E =:VC{xJhh&3C3D&( Vzib֩D12W ZQXNOR!YQ5kPgNgEGf0WAL `SrB&r} ^x * _<85l2:RžxطH"D"T w}`#7d^M/J5RjJM[g "K?WiFkqM \*t?kqE$-uQ׽쾤>renH>9*],AlBohnݩmN㞾!h-EY9ʼnbjQ t"HKUU]M} N}ܣ>6m|tZk"sqO̎1˚yYRZR5C[)H-y<DT:ip-*|^P:EK+tΌV5xEZI2C|Xn^B7=/~Q<͒Jm `_H]mcO›bHHțw۸fWҲtx +%=Zu'sT*O`ңq>`qѺ) Bv\;DygzBI?<]ЈFb'ؐ1ʝ։^@؞ڗUtDP`S<DQkP-%^ڬ#g7. %;T^^SU^iCsކ`GzL$1{Z 8K9̷ʒIWzn(%BaEX#&$b8ZZSp1'lSY V*"s<fNO +HĽ?[685CNI`*BVd߁kr*к2!FCwuXEyc]Q M}pmA貐'l"Mح_)ňX$r.kB7T6X } ieXzqer嘍܋ARH"!RJƒ^)kJPt;Bm5֍eP&hr4HnnV\JRon,# %ֽI+L|6sh<Kb<<; >4^ϊ`n|D;M5H Y{$H2nB,Y(a4GdM4ɺ9>8PTBfG#U ՚Nfa]X 2H  iJWUϕ0#yH Ev7A%I% 2(y\QHXxB 5gh\@.F8(x3([ۦ6"dKBL 5`8C]-c@-i;e ETkr>'=@|we룒{R9Xqb ]Y VQ<,glZ%CM+8tZ-b&1$:a;3CO҄(v|`M- iruȉ S0PU %65p5ɥbTסf$ѡS3nrMD . d8&v.;(ӒEfp|VS{1$f.!}/6X,2Gk[+*oG! T({P8"T@Efb ~`qt0sϣ 14lHX+_:<;ԃe{F"螤!bH% 2gY .9 P>%x:y a0o"teSoʔ,]\*\*j;VGl18(p~d3b>wt1銈nG|6@` t;7kbnrrtq~~@i"/ݜm*`G)#Xc,k5F$PdeR!Fs[矯#뛛˓5FgEE"y"D7haL4FL`|Yl 2|USn]|&j@ܫϟ/w]r6w:*5U>Gak"=Z\vSδO$Xv,`{*~>?8<:ˑcvZW$ee4`I7&|ͦjO ͝ե߾|rP-^~ ˝ea~uc -I]x*;ݨeq57ANĽG# 1H@)?ۗ_\lkPhz{pLe@hP{|%|+GRכEnx,\;wfv`%28Z1Alx<]Q+UZFQ"Czؓ>V45#xkh_ %"zxAe`j'lz__b%|\CBPt_ns,jLqoRA 4ri ̠J._3AKN~$Pk,AZ8܆؁`*Ii&L }ށ|_4l|9ЋXqHvzoI#B6?dޓfgLRRNn>/(#oB>MbZA:&X|kUctz`N'c#2r=0R*'dqDpJY4  nycsA#~b5;;T 3vu`Srt |Gx^:BR/,Rꖖy~mFx`jڙdlŶ,z󽀬653<$6C!bO)n@1Tg'[3bâ^SiMY!Ξ> hibXX\vY G¬-:Jo.I Hf+|=C[kƹ?K|?J&uN,hi(JI-ilk-N I?Da %<ٌwQ䫖9:mFLdL|rܼ籡!19/#s񌹖GVͿK}R6A@JYt/H 3I!)4@1eڤ~0ŽE8̮Cر֏os2@ش-3x"1=䙻h4pƙ<~GcޖҲ #Kі>wIky>G ]? ~m`bB͌ NMG{?'>ĝ-7C`lgWTCOEY Drv4ky2#1&",6¤?Bf6.h;S_@H6>{f91Aynzj\=79"hknY+bąى K-%sT PT",t_un|c+ 4K*;vwċB)G{:Z*+޽űDBl{qJ=ݙQ{|U\&8Ӱ`סT!wy)QQP-4,*>ͧ)!%դy6kmUr?tL:/쥊 zK|DP C>^Qesj S/Jm6i,mb*fEod @!ʼJpQJfJJsQ!L |r/xXg&Tڅ%ytHXX^[i*oIx3!Pҽl҅ZF^#`QZ3CRj*^sx<F1[k5 K}Q8!k;FR%~9=#+80 ͇W7W67V zG' ֶ6V zB&FކؓRG5[Ww}Om*Z<_ZcA"\_1lno,`A4]U4-5L|`.c+2@vOb'Ux|u^!D6sH78J8E!ޑjvKc2|0;d ~~u`{E+y\,pRvZ-B!=B}]͖t0qXTG3E9WVIrv~yshs^)Bx6׹bL:wű:*I !@hbqgx)JW0e2m.@j*x9MO|2ÝM12!!'ZFl̖lPvWJ!|C \,Q4AD2).6r``@hmotG6Qd3q&4ϰw2jEWhQ$+@vzr8/3AɄw|:C|zv2& 4߀R׬_K G[=9?=RI zL*LR@**RCqr unǜ =J 99,+JӃD=KE1*'DR0ehFCA( ]͛QR+K֛_: F\7NNN6U"ְ!0\D H|΢F&B}:'E"&5krP66սEP: Ch& wxw b|>K* Χ2vQtH_G/I*hmPTjBDk /mhdR cZR'nOg/`W#t>LT^?==XHV(ԃcbO*KLJ rea︊<_w'; /6㔨 X."ACh" uDGmo"Q4axڢ^ &CDäV+̯t P"L6C-("S(4"%?rp.>'TbN a!vOd:d!lEh(_9D*/+7GGD5U1f|l=Gb3_#S5j7qX,5cQQZi n!rV*0},'`?c׈ߗ!U}C.llHst;#N29;;45O ~]ыs1+E Urp~1(崅$y@oc̚_K뷥95f|͌4ʭ>c-tsY7ﺈ[Nx+t'>4kut6;d0bCJ*zHB+s|Ĉ=LDI x|Kr;ZSS[Y׍J&C3myP-]~ C;?}9 FFP0ApljD:S4g6N42f9鼀 Rh|btq: >bno AK b9GV|ryՅ{B,#Ih{>mtdXɹFAt}jjjlhl[I"Nc%|-T{gϲm-]E3I*>To 0:,P{K!٘5&՜iIݣyjrkT!U4@ܛN\J$R֘WJlb7(:/6hЫR7#q" ԧp1WI\pma~0[|quAPVH(~KӡGlP@.͙AVݏW_ػq ,i!,0K`7 !+=06"BGID)-!̫R>,ycY iӪs9>B ]SSGx h*9*JMD9rx-Gh*X%I$jB?0O={>iV {[ ׫E.n,Oe,OӨflV Md1ތV\7S)BÕ}ݨ: ñ^RsdB%Q#RVe+5VHƋZ\" E6Rk# :5E»3/i.$;a8B-bg2*2[9EdyAƧb|X"@8>/\|u/ͽ1@IhG!fb Joӌ[Yq阑Q)-39G-stF$ G藭dʼIC(<.+ CI(Pgޥ7a rE]婃1ח[:E "dbuwuqcwC'E8Ė_B GA$lL[XDL>$͡ŶII2s$<)^?ݞWUU<\Q؂xOpYLLtLCnb$0%܂+진cd*Dd<&2\eo,sc+V.쟟ix, {XdWuϿ\n)Y+kBTE\jf15UIҰWcL.KU}ri|tyuuu~*kQؒ2Ht^wTKEw/F4fG#Se>tt=CTEbbWۋyĢLF3Erϐ2׫=7F\jdRU"먷g.68(t?-̗(Kۇ_~U?L@ky#cܜ[fQ"9Km8]&w2}Q T6,o| 2w_η0:e5K{6)}>݅LȚxM`21w6FؐKH2윁ž3H DƲٟа7ߖvIo~`g\u1"ތRxBJ;q|y+uX J?dge^-qcuX8;b}eXb#-T |McR >,5Wg[nL*#tlӓ.s#BsBTwxxtBwFvlDݸG[KPrҗUf=j13Ko3-$r/,ol\}уif?'vxm=y3S twn&rjxby~˗e%XIc?MVoBRgFh<>′.OS[hiTDj5*raծFcSƚDr_K*Jӌ3&4(u5JUk&4w1JMh)A i֏A\:aABoP my:Y+b{P~lGDfyv{kp/m=<)9(#_ u~לPa-sd:nz 'ş_t2QXb[S;6YWO~)5sx2#*kKr>qz!TBB.Sc*L[Y$' ?>2 M$Xy=76T|@0 Q-l,B&auL@BҖnV;=lيJ |<Lid<\nYLXVQl0UOÃM%)mUىQa1TGv*w&RRjsTK4G%uG<{<64<,6eVzJBdHdbn(1SV=J=nĎ7EGFGGDT\x_O]zts8"n$'=9!:2,4"*1=e`@&tO zhёs:i_j#0;9X]yMs, YuDlݹ{KjQr03"ήDe~;2 g&GF&'dž{ZsBzn@oä:1Jq{, 4.#SMyAfRd#? fW!R;U d? |<3)&<=)]Àn2S;y/ m&w0#oVdzFheZڬBoèʲVʡ<Dp{ΡF۵`sk/sif1s>~[28 ]mΤVqdfL ǽ|"b_.|[TT\07+%!*4둧x;vd/2ۇy]\3<>Hd2þE|XN3Sa>va܅}WU]xGPj`SÝ]cmb89Y@r[׌vYXNK*ph֖ڪچ&>$d&FFDEFGF%|>Aݍh܏Eʦm~)Ct]~.Zr~DB;qDA7EN }<;cqVrtO@bWŝp*fߌ*$,rJ \} Ďv|xqFw=rh/܀~/hJ.%'8ÖH8thog{)+A!} }Jb b,|F^nV4SPKzMEO۠rVU)B /ZNJrF Ad)^!? 'PV7FD L>tsёm)؆TwK`h z/hDzR4Qh K 8BZw1}4;UӼT"'t+dQSx#A( )k:;pF7>s3;eݬHqBY!LZ5mm.-UpE4rec}y"L?1[6."/j)U@2!'s2ư/@%" Ɣ1F|*!~slJ-mS-4" SKk&5R*BXÅ>ogᢐ{fqv2Z.Qr`Not/ý5Ls)8"/JUW bG$0_zG5FѸ6avv|5(& C|Tcp{Y).fp>"SCrp{ESI2?+V=r1'Mt}WhW*U(4= Rf4.*Ý%Z R@MM !Pe5E3RnK1:"zP㣭%& EesY YU'[+"B*x)^`B%peCA^)}t>_;>=k XXDBs,@"f4g L@Fl(ِ*X谒Y"+ JnyP/Tf"g,6'K9t)4*e"#7 {JFmH1k&N$#z=MNOVE\ ܹ)*2*>)F)|jҡgh4Y,YB'Q(+g{JWժb?3AgB Tcd)u,HTwLdsWwOΎw\'Gi, H !86BwrDXhf/&&v{=!g|\ ɞH H^"r7,$ zd[Hv֦n4l@l6(xo}I˥B0v5h ? 0'/r, +Haȣ 5-X O$9\&gZtiK; /ѫQ$6Ϣs|P} p2FL^F 3JΝ,ft>Ɓ'B$?9%a_3ܥv MxPh lMR7R}E4Bg+%TzwǙ HTh< v1SK艉MXPAd%2 c"#IO|B]8ČР8a)'؆J`K$"\kߖxowÛzG4_"VS\;^KH#Ux&OhJD@m+J2Ltq+Dڑ| E4w^9T}?5RcW-ֺ>Zkt`3`nW엋KzS:q#&zNO|͠#,rwh:&5oXY]j2kJ1;-wGT@A)ʝJekXV$ˊD @"  [LHL.ɞ1/ l΃;Ʒ{ۉs|IU 2O0Tʕ0/iobao*sn}O ZXA}m,ȔV_R  ZD  t;HОhtfu#\t6cfT_[id1[KàlA5[M"-93ŴnB-vdBmm,8G%Ql7(h+UH,R:b>pwɷ,u~U 9A!0/tK#62;75EXBM5WE*vI>JB0P3Δ #/Y]56y 27f5(#od|L@Ls8 Om])s`߭dƢOQ FCgfM1s^Nnޅ!p_ZR`xm1)SxLЈӵo0\f|—Mc4j UaZf-# _#N@}I]CjhlbmXx,31}W:f 6ivOQHDӗDarݍY_)M~3v]_N4~~ykZgL.Ag3UuZ4_eq8GPȄ<&y!?8lH9EK!x"B.1=2p#ɇRD W />01+C*FUʌ{׋q`1R "*Z:]+::6+^zbޥtH|oggL}ׁeB+;L"(|V*Ɗk; _VL22CYBT"sX„2 `-r-JbL"Pdzzb5O̵iWZ*֜Y)V;C&%TA|D.@NbtQʧ:2%}f˛?VI8*eR1kN’2pyң>fQ(M-Faʶ.nx`CCW7e8ؒDBr>1Hf>sfK&'J 7R:˅Uغڤ_\^]jͲ/Rxwa^*cRtv{G))tj˟a'B f f<ظHt_7#hxz v3/Wj@_ZYY82[3Nb>;؝;)Ԇ%(| {7';_~=_V_9Zͯll-A;G "F k98<8W[R*ׯ_/vvWgaWbt#h m|J ۅ󋫫߿}|y"c?H}!Us"R{ |Y_y[$OҠ""}}~Ϸ/G:.,/ WPIk 0iapSg{2~ x3͚LiĂ@YX:ڷo߿\m,i؞q]|o(6W J ԦFUϱI5aV|7+8IKz3DˁR{T,,ɆV&džplj~']dg&> ,գHA#~iz1a'q,Px߿\,tT̝K,fӫ9$mx5 ]ɸL&81ܰ{eݾ\_o,!BxSd>5ݵb{L2W2D[><9|UaRر^ +j6㣽ExM5[ s*Y`1ЬN2_(QV6/B.I#F:L0k7?χk[[k !fGcI\l;YuyJ*aj!tK,*nB-W Z3Yɜ1pޱ!F#t\܄ah g_*\&iF_wר PI@hJ(>?p|VB#?=4({$Ž/׻z Ek}^vRJ0BCO0:L4]U)7tt].)!udIg'%84yƈXo= m_j\M~|x*.ftAG'g)`+C;}tci CIk*N +>Bu>khxwtvP>A(Oz:"R :i}^I$Nb Rc£'FLЄ tkyʹ*0M?[QX8#97"S;^E&W bfG2ՆrxdҼȨ𨘄⚎Y<8U blcԋw3x"==\_Y^^]7:1!M7 }t|Vn׆~]<DhDafLJ{ƦF{[!#w_Pd۽~!1iy>wwvw4ԔL{Ѿ"tg%l?(4*.%377;;iA^ d2Rvv_F57٤ݜaשmKo f3E?tv ݹcbs0a/wS?l؞F>nFP'f4je#5=}hflŻ6?Ξ>uҒ2I , juC{wKj)J 7RCE_s2AqRa!30}i)zMASYPLEM3ztE3;|Zp'{!{ZXAj8[_XK%&Nojrx5#'1}렶ֵE l Z^߫yiyeA+84%BPK%;¼bޡuJLC6C˻V̈ /bư9!%vQ]X][7kbxiOdZC43OG`1rB|_ӥJ˲4qIK.,,.tZB6$xGL)sU>[]w&hAVoN_T/Si5 k;k:@@ηf<U(=;R0\ 7 YHD bD(D+#+Y&L5Kh:3š>PlQ`q}pg}^& : %%W6W :jOwt-O,;i0V%֒hLD*-,l,*DB˧L'yx|q*Hmir2mGHiK"FlymhkY+B>}͆k|B{|z:R&1Arb]<@Y 3*McC*q\! K['Nj2Ze|X$֏N7 org$8Zk)l`VW(K$zX[2 2x|\T ]sr~v7B}?e(PG7SJz9\H6H;??#BR.A3A0!"^>4 ͫ%u8ps3::=Lh`*K&cXux~z!GJR*( B÷GJ!_szv z1g+|cDoy]?`V{'y'A] K$ $bN 4@WON D$p#yAAT{5kN4X_p ez!' /H;J4W(#ӓؚ|.В?`4'=rs4{eF|_k yKds@qǫ`Opy\aO&Th'0lDm$4kЎAeh\wx5}A̯*aqD P#pWkז9#5t0# "1Y|dK%W9 .BQZ:gpx,HS'8U.jO.F +oRMш[A}H$R!7T_2 qA_kLY} OxVRt3^LRwI@L|(o'Pi _i C958ϲ3g](2A !//"׺6| fba-z ,cwRVqĕ*1Fc/8W:*R4G$`fmj"Hsٛ}Djoz\I}arX҈kU}lUjJY:Ņd6-Y`-=5:<҂ "{"ۯU}IKpzfG@G(tB#+U*QD &BU"N KK2n0\"SuqA)Zo,"8"cP2LVUA,ZXZ^Ъ2*ϯB|-aT dF0fF5dO_wGwƵ|Z%zFЯ^cĢ['9Z S(YȾC~v̲`;`VB})Q(䂹W7w#Z*JW֜@R VTRMh,~E &ɕj5h5F"K~CG Rri.,_S|xST1@dڅφڤRhjڻ+$C2=|Μ(ՠ?bdku^%ظ沲fx,v>!WhT`EDXd{㥢d#YϕR|ƹ29m n->P=NaZF8b "&FӼ+Ha%)'$ rbw֗t*1M&1aa1ph, Tp\bWoY B;ɨ-AQTT&ro2!P\[!2S\^ asXr%6Pe0w( ctGUbyP'F_[X`_G iCЉ)`@0. !}Of8ߢ *kj3$`KlSۜqYd"IaHEp9݇!0fC|M"`xdLk-^ġ΍Mc E"QgӼBT3?~gbs|SZQ0/3ɵZ;2nK˥fgd"RxB O0n'ݣZY,BL uQ3\A_Q03sT6JYИ+kOg%u ȵ&Au rDDq|A f0 z<&$eE;)rW\!/]'iHlvۚIshT&9 bOvprCv5>Eq)m3$v$6,nZM-cA-2-/')||Q^:&$z90j*tpe6dx4Wt /&| 2f1m<*"l` ͒vTlƠ s("w8U~,[ S24Vk%,,̖ R! eٌp7fv/LqR3VCYZAH>=32&p1"Uw:=z>!*’g\ޯ,k)= Ge^y91^1EƶVV_KʯIHUVE&Gh w٤I]$:{kf5B# eGv謟3"%cZ G"# 6.gd6E{ -\ |M-/:BA6B%|i>;|$ r:=g1) d:W ׂ$d(-\'RJk33x"+F 1EJD6e*#@_=s{ygt+~vFQXT2[wpy~ k-zQЉIU &–J£O%9FʂU҈^GizJʥQ٪Ex>5c(=UEX=%ԇ\"MfK\D;X:ɿ|\a7//3l6>|?|%e1hWN1BjM'P8OWJ,dJ%UZWU -tsնJ T/As 1@~HvP)JBݳ%~B_]]|9[d/^/j[}B0.,cW{Z' ],Tqp8-nnnm_|><8YZ=8/g{[{ ހќi`S#fusȘ ObHu⭽S|zs} zmQy߿Tk0,&\]a+!Ó*`?JxaK}?@owV*3]EϽsZ?G5L諰*/o||>;qd?!f!C~?F%?6N1k0h<_M*#jXH.|0;0Jh7O|E }ןׇ [quIae$jMc^b'N.RZ!LDVV$\&7ԅw| ް6ЫД!gvDVʘAj"u͗ ufoHQ`2.$#UiљUscYAD$k ,_}9Xԉi"|gknR yhB}Cg+jؘWZ;#?(8L*UO?=[U ,h8'1|GT*KW!Cgn?VrvABSX8+&՗M5BՏR^,V$r)oƒR(ANf_^D&/)Tˋ=aJ4WMEtCNZC )Lu_i, I:_`#ͯ"zHU ri| >10^6|HȧO֕6XB 4}ޤD%OJ@cf>q}U2LL ~^20!TtgY~YBόvվNՂD>v"?k[u;> }E D佫i{WT[]=F!6>pF]h[eCE:\Ș/s^GF%gd$DG6`~d-soV.[}Oߘ73xXH?*244224$$842!m4n΋~|زva8:? (o SeSb"AħfkSm)ܜĝin nʚqT23TYQQ?65á'ߦ=pqU?aolW&,_dj~ESznvbdo`hl|rrr}nbг{V[bcL0ǽ>io׶twvuvt4UH }|jݵ@kWjç )/srҒ}<4yގ~˴c{w< zZZBq*C?~'>-a(3vlhQ! H@5ʰY(~~kMGMՃ Ռ0hw,k&PPj"QLOwbnwt..nn5 ?fdjp،wnD3!.FOВϼ}G<\\,nk*kw-ĭ8SsnF%ex"'eVFjbLD߳G`s:5L?nQa۱81yYT-Cߨ]8'*JB) 9?UR{&HƮHfL(U4T [;e"$с<ǥ? xaFl<ս2N7i-Sf;^g$'D?/n!!BxhV̊>{\=oEԲ`EE7$aOl":5gY|,O~I)I )YY/ _eE)}o|>}(:ij&>!;*'xXt lU3wS];9Yy^צ%IT Z& HP\={$]lR[@wijdc}|# aiYs)Y,/k :Z& v Oų8ǻw~Yn'C#)M z\caQ8B)+zd٪߸ N>G]{4S. Jo U 3ըD<#WW zF!py^ 92Y̪e}'7m4oUoOhRY\Xi|*KK zL HGD*]LLRRwm, sJnqc{kymyA/2)k+KzB*_73 hi}K߳)9->>e^b + #\TPԯllooAU#؈jezbՂBp]gϰ7#Bhawa2`_;^_iJdPMER_yG3Դ4c7qrS|^t0ԨHyI*ֲf0 0^m*  3;~b|uzWk!a@}x|WLRV6vWX }'W~6P {PPԛEIraqysdcQH13#=^[A3>cuw|P4X`r4Q-;2!vuwYa^-Axl>Fa|j4P!M$|И'*yq|!{5Jy`AH`=0l Y?\zxvvzUɥ{}_L@:dk)9CwT-T2;8?it*c9L$*Z:9?;asyX%:՗Ѭ@1P$U6/1fX\&VjuʕCSh%Gm},𽓋Oި[J!B0>ޚka.?Oe2h (jZ9 P㐇 hZPOu #]EL *a@,,G+v^˚hǒAr`skNOvF 48d$A@U?}2{,@D{v~f0̡)LR BA1ư )! H,tk)/i1Y=oe,:'"Hbz'O`lB`15 xM御uXA~pvV*90D,8R߇(4&" _ikC8Dl*3[gz Bop( "u򥝡l>)wzv(iF͢V40"n5-B_hi^h[c}tv~(MLjbꉃ{HE;U@b%=?͠m2P#w/["K QUa]dcݝȄ1|a}B׆x:Lx >qmDrK}~G[hR[S7ZC:~gCg،A  (Z]'/Dv3PS4~yJ _ˇ3Uf3t:fjYl~ym*@~Dm440{Ct4u|'OU bZ..HյUkk6hgs}eyiTCL-ψ=əR"hLVӋK[x&2/%YBo.-1F3}?5AP @;K-5"`PKXkUBfTXwFxS/|jF %PA3Zby2ª| Ie )ƠQh;+JD" )ҧb7ܻ BWӖi |J[Bzc3s鱱9JoC^(;-Zr} qr=({h-sV4U,3:Mh3mik`P,Am^`墮{ kd+)U)\l-ZvnA#0j޾}_=A劬 \ r͠ H:# a}:D~aÉ *YMF: 1DRGo!#.zP}5%|1l&WJq#V-%Ay AB!XA m ^KP%K cQbŠUmS+a$R!ʥg<,D;>ED.76xAȯ@0M NHN-d 0#t[wErQ=j'2TPWJ\-/dʤ;&=Je qIuS$:G$߯suxЕuFa/[>ʔWA-YF<3,OcZl_jT+,\^-|tua(SqAY?T]LS/D08#ņ<ރBwԌf] ػ.K*[u0-$Z4=V&]\ ; {g;bO嗫=X_Z_$;# K?lwZNf;⢫LiX\]X_[7^}GP4A.6E%1ϯon.J3>EzI98LBv~uswoowgg󗫣y%gۻG0N̕'yؒ7,4ΏZ8Wy|%݃㓳/_>_]__쯨_/|?8?Z[8/_MR4xu^P 5!4&V6wW?<"ٽR^߾>\n$IC+j]_{كZc#>yaau=;c,6'yf"IFWQ)/:I\D(S6o@_G021T߷Wz\*["R{iNֳ]󱪃aTDa6t{ݐ=4_ ܀~8\_"DI\T!7]h;kQ5YMdžp`V6@U Π'P< JB_m-1ИHXlIm=v`gDB`{˗ %J&z0uQq]mkT2?/6"k5fZ~VZ3xTT 1H Yt td@n?WV7VA++b¢?pB99܂,G`HSF"r`jU%hxQhN4 ~Ͽ- ZTDΚLOzQi O*M6zӿ:d52C 5f&Qa!aQI%M#*!'≛Cn+YXgG%$*qvӇXP7ͽxT2F@Y,Zƻ½#RKGHd51RS];21"5IA/,O}CrƦ0XP_o jr(+>qUzG[lG ;02E~O E9!>:"4}# fZ;y)CjϭM]P\}Z%c)6ή)<<ݭk։_? x~7YG͌$YLYB~~_Rp^j5svv1>FP+hm?Ljo&-?݌ֹH=y3g^Oe!kV@3F; ;! $G(K$rR3J}?i,Xw-6qn|3߷M؈X :B Ik.J}`mj mt0WAH! WfLjjJRrj=3 !SiP#F<_+㰗5#,S2:>.&:"<4? 82%`jSvHY|nյ}ԊBώ <)iY!ׂpy^i*[frSka9ԚWZZ6}󮩳4'>7LV&sLY(]X㸲7R0M5~jŐ<{T>%[_<`I69[+jV xلb2 43444a@phl̍ jh],V5G &7 z%.-j52.?5 $R<&+3ӛ9d,[E LTgD:^[T fa^kT-OSb:qȾd-8'lyqaT$\+"r`,1jS*Lɂ\!&vJr;yg45_cu+N@h"S)\ $P|ᔢwQ\,ubZ+ir-N.{R7)͝yتS"~u}cu +Ts"'sV 'rbʧeⱢpP,dӫ[kNAb,L}o;ӑl1f,z/* xю &<ΖTX*-OZ[6rX#6DUqTd4* 2-mrf>Y@v/ /ja佝eʔiSw\P<.}1S1'g7&Dzykoos=S(P&WW7VJ'"!SrR13;- wP xFi G;B,0g1L/n/jH,dMz*5naR燉D0;ˤPnmhgkY-",@CeXd y>IBQ+(gA܂Eg `=뗷OOV@ęaP/Lyt||Qs񾁅h(w4d`臉 LT^Wj/#wrv~WJ\.3 @ ӳ5B-`u ~p߱RvuoYS}tv~qN!Exl.ePȰ5 _kK*$ UѦ|'989=e'_ @S]|Ϸvqq ƴF"|b#"9~Aώ@ ϔYي0^ 7n<hDa16' S]9>X`q3$v|f3YAE 5]<W :"jat :V%A8l{Ol_ZX]???\ЩBgkǴOF;U#A'齈9;l:Ɨ* ڼJ. 9t S,Ƙ›{߁UlVz`,t$k/9C|϶J!ce(fesBT>f|~l' 08<~5Z #Ь[9:qz=%|l%8n=:Lֶ5t#Ƅ#Fhljh J}0c3xn  _RJӞЎM im A0;@i ,$ՍM,r ewFӠg<~R@95*yC_3f`vK`g@%S[&DPџ\1t,ʯ s,U.ack{s}cckcZKZ0{5Z^Dd*>y`tHhp'K,Wjt_ +kk+Z\%޺DPWK k$ͯ| ]P[Ko9C[I_G-=]U!\. H)c%$-.k!ڦI"D,ii4m.k$631(T ާݹ}/bYRBa5 -BXή!aByLe dc8FZcQ{p5CϨdb©"/A4ZW}ac2\20:ˣTָ{qaj=4_[*,tsץͳTتfyJYFc D%=Bw 7* .Qlw<`aG`*@ H Hx *x~wp MQ-0'3dʭdK6Wk@q+X`1sX`187QWK`s ,T[Z_[_ҫRcn)VbIDâPHcX OT5$WBP2COHo2N!ڛgN[WsɘO$H p_`]C N^)C8m3#5t;l\mv ),DHw[Ize*SY}hL&L} @y2-_R>79'Be&H;{ި3 XR*4#I҅][h7SGCh.FZ viAyCH~YkZ1eۢF9 aUJXCفeruwL0QS;\ DZ {Ykh5L$5Z!v$aXG&N&_WfJ? ݏ*LeiF2:%Pm *"ⵃ=K^>s?d&!k1|:XR)g$4b[ל`̐QP$%Pؘ\6'PZɖ-o5 бa9tČ2Gx}tt_ϫII 9Wp{%FKSC:zDu鸆f j5 tujjV`r [{[ 0ݐJdz;-O]+i>/(*I$,$6e,yBƂF4Gb2Lf]7L|48QߋL} 2fmU= zB|lasg{}T͏,>VO:: +[;jzhdԙWŅcT#Eڕ]h(ل8oL{N :31vJՆ孭U\6' !U2U*G)%T;OA%%eZ,iP,.CEzbSwM2U;KR`S sђB:7dY2Vmv4O_La,(qbЭ]\+Lު Ռ^|}3nl,"H^x$7ʘT}L̇Д.P^\UyrP֏N@Rvv̙!._~9Z=<::X)Čތh7ݨFg } YƨzXY\?8=<Ń Pmf뗋㽃X%BDhj"0ia6 B'>Yc;1VCΣӳ_oϯ@7oܜ}`gseADfK)lFme@8|k'7~xQš#4;W_~d>__U˘}~t~o#of3Z)BF */ֺ:ppS4њ߾|>?Y9\L°lw]&w ѡeBͯ^}k_|>?ܚGd ߮6W PI{EEFdB0K8:{Gs_?>NH&"ӛ?̧"Z5pŨ hC'^<2l%孃 ws1yjo_OV$ CQquDh=fĢTGwIfxc7QfdϠ)/6` N7Ro__?_*d".'/:{r`पiP_Z]=8>rCat 4[7'pácjY}ژE=%}MZ _^o&Eѹ|v>nmno@PBȗFK}'w,'Nny̏1qQ`RAM#F;\̰o[+ j3^L. st~Y1;<,"υפu`'a1chG(_<ߟzҢz6&GcH/j޵ƘxBPZӨ5;_ >4> u9Vi GI ve>s]{a7?+ -0@drf5Kk%o(.D =l̝BA#˧grC*ǨlkACD Jx(ܺDH,޹a&:KBKQ Hd }[4 yM {02r%X J.ѭB'\KɎ }&sgP~݁x?u/y0&$2y C\Z+:B^#XT𧢔بZ,+?Cq0ALr<]S=EPl׾k#q: 3=y\\V=QrYJm~R Qy5m=CssS %&&GOZtLRzY?%]ػ[P{~(D踌?Օdde(/}^<˘c~v[k ַWB0\*!*,<*6)5-)1&*"<:15%16&:&eE$[7Z/t5U#_OQӝr###GƀDe旷 iGfP+DR[N]ƽ4NdQ#5e2]rFvQ4Lύbgj{E۽xX80A"ɱں ȍxd;AHݱ6H̸ {sxi"8f̿mb~{<M-~_Z_S:+9:Cw[ EY_`f P+|£SRScC|=i0Db2-0*qqsgϼg8e6w&67{{n..ǠwLkLjJYh{,ǟ= _cC~Ʊl^?}?:m6۝ lڱض&;f7C 7>o`3$45l<{}O :P6v995;?ڃGC"ZךM}X`6 h]k 9%嵍:::?5TgGN% D"eRf{rB;[ m}l6qv|^:IyκK@e֋9o>˧ON 1*Y$qLܓٖ*0 }'Z,O7N  @p˪=ӜD:NOb:0")mbt7NNLOK3k~D {E7''[u:B6 v {G<235ywUuE9~>~ e\e$f mYaDL N*lk~_򦸦cӰ Aށuxh!=-[Ia_&n؉ jrQS2*W⻌znfW!XfiyoTakUJJFxb{L`_n9Xn2T5 gV)0`Q7Α a̡LZ3zhBeyy515vH斄Wj-F#Amz"$T3EJP8à@?RQW@b E+-x`Qs Pg)5ht";(¼A'Α82ARٖb+jd4-_һN.>dH_wC$B_jK+KZ1$*=@y/Sކ{Ƽ#iF7Kh@2>'4CPal3D&׬llm,.T xt"?aey9O_ŕu-3%ăkH $ <5W{Ӹ%$3{LjYݙ=d2 P}c0eH .() P l W׷w77Z9OF$mpkgkôbPЀ VjlG'$9c`z7)uk:[a%r*$H[.Dh)7j|b?H9AmK`(ڍ݃ýu=hly_ѯmnV %p+^H&YTKo)q XrG(k`5a1Y^[TF^F1s`n׌3~R-AJz4|#vt>؄Ny JXe"vd x}$}x?p_SPDPLFI#({zO3QXЬB2p4seX@J@0fD܃^ Iao]^B!}8R(}x-O7:ܞܷ\T]\%Ѥz,Zo@?u^ Cq$l3m^]o%E(3dܧ 8&" N9,kwBcAr՝㋫mJ&/҉YAae {s۶k..ޑ‹cT|(VvdQR)|ƓT&tm O!9,&e::(cF5,qz@97}F@hҰwvyu~ɤqt@'J"RhT:*m\]meҗCB?h`]y^S˂B>LRT=u5IäS=mTD!92ؙ..NWUUrYt\m| _qRߋobhSzV65FC  44*Dʵ`|Ty2~]pH<n__ionjk= _͟V,Lvõ-]h$T1$>vw6^!512¸˫q,:Z1@i6.{ &|^gn,! V}]& h^C qs&D!=o!4s)3Bg ,o N_R? uslA͒,iEܡ/Wd]G,|7 Av}B;PU{&+1nmcΖ@Zڢb:Ok>I]56v8 ݽM5&6vU IVB596- ݃t&ѯj:ې|msog{gooC@Mُ 䮄ЏL҇`/I\<+ɹ=>Wk kz A9BEGN&kIUNvIJiMQf2S]1c9h})$.zOsBBX`)$W3靡BZ!J65&LIT*r{UƘN mA៩zYQ#01<[XXffp6q$$H !XAXcRI1[?NcCq5%hj^ؤQfZ!`'.%_Q! N9(ud2mJRXӁG?ז;>OE&L\\\^Y^DtS\H%Q{ZE0#`z"0X"Qq=ů)<1v/./,,, ??VXG fN Y7B&@?k`ãL6}vL!l_,[DRBrV@gGJ([]`K@1lM$0\ k)D4WM",*A @|MH#"R8ǯ0r ,eR7g#1;|О1-<.?u%=OQ}nƕv4DX@l=Trd%3:|Y*UkHϠl!aiFkWM`RȑiJphM!tx- wA 4k.aVb^%RZ#ۨ\fuyjlT+)zxvٮ5z"4@F! !)tmن^9Z2E,M+Ij#QFTWJcE3L|cW Wr/\xKGE =4&'QU ark4 !7-"Nb~eEoњ4)(*խAUB."7EG5N4=&vEU-p.nH)dA0PC#$Bż> Qb[>.Z@cfD3_R4!#G O*{LXo"^LQBֺv/}Eb!lLy=cZi9>]UevNώF]e ļ#oܠX 5HvBX2b>9=އٚBXjT&_wrJ+khCWS+XlKLlh?ml^\\*~Gk::/_.77NO@j0-5&Y\:B;{-qV2+nO/o~9V&&2f}/߿^m(BK\JU|=_DNE2~cׯ':*Qq|~~rzv~~h`-n^]\o 1sEx;]3DMe2ik$zY}Jw۷ xyq:ڝav'A|fnf@*Ԧ=ݡ׋3P!+߾^|:4r>>6iC:|/ˡǓarGRXP1m܂׷_\]\̹Eb[3iu =4M=SSzɼgWk5:SA#lZLwO~onHYvgn6I -i遅L3D䀯yMf߅6.I[!鞞<>E@_@rP,VFF.! 1s"ąkt\m:ߡκ^D't~3j >JϏH릡=PBA; :ތc2>Yhɴ|=]/ lYFD 6on~zixW[[&B]M+&j9`v1WNJkbXl('m4};_@ϑ9* NCUsӂ5}_A\D7v{LYe]\#ތ_EE%αVUtPkfWc4D%{chFĚ_A{kudbPzxtK*T۹$SgHwlCT($ ߔbf!顇z"a!yM!/Y捳PX;~r)sLl~8Wrsq}9.v,C OC :0O$3]Ey $Juηr tyA靋$wqlj3FhYD];>^pI-SlvQ-蠤ũ3'[Ne(Cل!/&$yy)zl)F)˯"AFRH' zN+#ֲ6bkf~Oஓm$ݠ6luJdLRq^"!8,y?W,))6)MwӮ&5 [7mC2dїiav”ԴAB}]+i B[?gUrqir}l/}o|bmnR|RZId60/;A,lSqRLlLrWo+>.|m]dQܼĿ]4͈IHHJINOLNNK(1^D=Z15 Nrh!6^r202fXh|>O{VZ5gޥN1l {Yv4zf> /4`'?-HYV52H{+b%h >?^ QPOkk[Gw֕y䞧kvm.c6݆ݹ!@2s5gGcO=1q^wO>y}n6ͮkM,)*6.. %!A~O޻bS't?@VvE"Ka}Ĥd.PU]X_WmavJlX{^6ֶkwȝ ұ:_xBNIu2bB顎79 }̮?YX?gmw敵 HPRGx<.àSiL6IYnzh*s30b'n<>w4훷>v@mA\CowGQ-kp/|q(Ej_e%Aj-2 a!!qYo;8(qc~&e*nkBԂH{?xi&6ĄEFǦgg%FEMpЇV4Ξm,pt1O0~i+BǜpԴhMIQnJLXPX^Uk4r48ucerTx/y,OHJ{UP]ًҺΑ鹩OeyqaA~1/JTUJ=.V|tDDUj@@PdVnDOv6w,|Kʍ MWZC}~0Tco%~f+%~!i$N{Z$'!wuybaG{ tL4挜lBbZg~v|-ռV\6I E2q`M eA w,3( 4ʖ!xq]Kq |EL+f2dv^\#C=yƲkнTJNcFږXlNqd;-k=JÃʠMX; 9[WK((|X#@w\PS|akמ! Dql__mчg<@";Pv2"&MQ1lzG *O_pZZ0zק9#bQ}`d#fBCqokgۆ?׎QͿlQ%5Փ2@0P5Q("cVVϔ{8f~:5hbc )$ 4N3%Ɲ jYGk3De&B__ݜ:@fBPX;:y:9ǂ^P6;7#iܰ}pޯF5ψZ7cɇXo/v7\Դ &aS=R`TA[f!YO+ x}IYYy~uqz 6d]LV/S_ztlH~DѨޡukנptW/g{1,h3!ޱѽcj钐Le=89V߾^F\7]L!SYXs`k!5£ΰ}q zY~:[gYҭ77_۷߿ݜD+ro"*i](EnM .TcZ=b\k$Uw-Є:dWG(F$3R{GnζccQ+pn@Z*5:.ڷ/_.BE{v נFoҤ |!rIkVN]<CX`ͣoVt(&N`t~_(`*) _Oy`'{qDVsBp~//lsp~,jLB "Q|(s-3A fW(Q6w.|n_N>%\tР \똘Df>wiZׁgBfumkr`߾쫹,68?OŚC cUR*`3S?i \-T>bBzNRd׷O/nn^&FXdr!.j9J,y>}D6Sg<,&2}$D֭n~SaUnF=[\G]çt/ܙWp]IjL_zxTv DC2މc T_A D,!sQs-O<+Rw;q tpB-oNV%H s:UHM!.˽H+LI}Q549 @%-L|Y3NeT΢X4j6UMy}{@o{۷%m}o RS3ڗqOlXac ~f>'6*{(7=+'##Yvz"̊?M2]~*e;|xG_.HOHMNL)(#3@sē윪.̷^Hڻe6uMNR\tLllTl\<_>xsˑ^Zטۯ\ЬĕEa6˴HE9:? a3}Zj? ?| _dl$N6 fAHۯ_0A7Lw@@`6ms7ץY.Dops?`A0{gX4mwи<  h1m~lpX2]\-6a6 IyVT\dĆ>fo b3suϣ=ã K%2G19C^xfKx{!bh %en>OrZljL.Nhk7La0J2"YI^V7Ug+e{[wE<1%yIq M:2*222&>epOﺻ8CPvu]ѵ#UYaA! P2)!6"$(((<pp]9ZC;9@0;hfߴs%7 A~AѱII)99Ϟd$ņ'"3r#{b؝v4e` mxe1ŬИܢ<05n~lԊ8&+]>Y{aEmB`޶Ə5#$$Nu> xFR#,؝utk[ bJz2t<1 0~y\:qqftdl⋥ ]<*?8 [s*ڐ*0t`GdRbV# 2KPUJB! Dż(!w;K@A»aDF }yPj:J)2&i<\ 8T= CԮ>Z`<ߏ+APe=֌zN-EbVo:Hh?ЌNTE*2{ ZioD %)O6LzêFH_tkkR* Px]Z@@Hj;WNjY;!ϻR⧴ lolmni%"G1mjU $|Bg~h@pgr>呇[c ?e`߈$_:6RX_]__7j2 EbrOaD``ΐH?y/)Jvmhg] Y33tuڰj22!oNz1#udA;K1sFy+\TkI gf+&(ƪV!̻Ƞl"򁛙1K+aYJ, a3*ӳ-R12;M %Bm<8>نj2Lkܰq+ BqoA9+(8 hpkݴ[r1ofRQ(*u /CK[;#Z|]=7g}*;bY** āʰrz~cԁNR4 UGkǠ6#UE) ʜ1;2{Z8 4'jM ,g<>,.H˚ҡWJ{g'zlbkJPD=h$odgĻEuD` Ұu|qyyKrag *Bomb!0%A:rc {#OpyBTmɆR B'N9Kdd4''95(M!·204̵[Pᬌ!+T&>{i ~$mYkkקZ3RH#A}h/J^lU7llvg;kfm~ƓMhqeM5K 6b=:=۵((Vmg/뱛%מAo׾IDņ524KrxEFmhڡquݽ2IZ0H99,6At|CtX=M\;nO_*Q`A];kUd*<-1IIŶ2H 1l.#-N HՒ"̚q%K*nD@9ZKSenFlx_j ͣAlb3tǨ:1 k~/"ldi*k[r4CZ/Le&MVGՑ颊vl|jlqy\ SCLfyL3 Bݿ @@Gd >a Pǻ[FȔd 磒T &yP`>><@ q/Y|1H$RqŅ% S0IT,P8.(Ԅ5ߗ*t$ zeckk 6~jthnf77Ġ;Dues컠_+`Z .S,ck)gev 77[ k΃B" Cb2sGU'&'Sd{{kj!?9_Z&RRb2TZx}IcƸ'P}'G[|l-JrՏh) <:70g: U`^?u'y`[ygwd ng$;Z;X {(NN2_ fWwpl$}rug>f74JF&FW*Ò8O\̂wZ yJJܴ>6p{m|)ь*)wEy7yx6˯sGP~3;9h!UX[ի`j<l֌svĺ.X| 9dJ}q^g5UV2]nY& ^@Хk#oN1.Ϗt`; 5U) }1Ǽ1>c<3t'S(?Ʋ₷C4nB~xgU%CyPܫ)6c'|B "A$?>ޗu0ڤʧGV-rk0gX!@>..\\wm1޺F&;UrSRBi#&[璺Rbjh?CZ¢KcG;1/_n.@Ec<.6CA9\xA2x+Bu md4Xzɝ|զcaνT2nBe/_o|=5 Vh-=>99\-/~@v7쎵Ԓ]cs;b.dt!!ouk ۳ ppr|NU<ۯחg` k("BmBbaևyלA||%vƼf ˭t<5mbo!u}~zųDfQ mif~r':b51%<=9xTuysuz!dvui+dܗjM7C36"W 2]ֺi}˷[oLϣM[W Н/~<^-RЊYAwpS_0ވr"W zP.P^ d *}n/!%왒tz IkM ,GdoZ[=-(űIL#.aoj !;?}t&?Zք1;d;X,U6! B&9ef 6m}Pl6ԵxbuTЛy!vJj!

_7K5FD^2\}3x7QP~X'?>ldʌ0mI h]0T_9ݾ}=_E㒦Pn:Czf[xe$E揢U>.]+˘z[2J2ȁ\cᰈS8*鎾߿\N.y <ڝ'C>'5 86C\5m]^~e_4dድ۫ ЪW 3_½Z2*-0}4 p`t0;s^/3ڳXl0 {;NLqZg;߾x`E_fRɷ?~03..23}umQ§nG iV7Z^aIx6'5Ƿ Ӛ BzSft%R}#̴cgP~/*6<+iPܸ}bChNŗm\ͶѠ  L\b"ӺHm4tg.OLdADTR}ڸwՖeSq,D&xd|BSFTt f>9|Z}B^}/pxBX"N|z]lb5eAD|R~tXf xNlEڵ9# HT J{dUqlf̘iz G&5̼жsqM+ O*Y ӫu)02˖O}902{yuLHl'qL3npn+n(7,2C?nAGja+N.O*8%1aQmف^' q]C١a)oiӓVW|`,Gvm*!82)$j,ǚh;iaF"eEDÑ@"JUjGl`LpvTwU^RXB"HH!KB~]r|~ܟ]6U/r:k)R 492;T\4D:;ng*(CE qqIus4&&O5UQxy,3!)6@+֓N;(iO.r>%%k-.uTWVwd'&%~&SD>r'K% E)qqqɹ/ljmkX}Ou_'$&W 3]EƲX0KZDh[f5JK)x_ճ̙m 挍C6&5KxeUO1"bb!]]s9.BfNv 뎿ګh%.nw_6̰Ѯ%y)11q1 Iy%u9]f{жRP磰׭+4OŅ/iL@UA|}w9`cybVgJ,w}#WuO-I+e2iy47.l=3h иɉёɩʗ9]jt[w4@e&/~qi/^.+{yayؘ-B k}Vj?{Gŀ䡏mq(Tlkv, sGᤷ^sڜ#aXb1+5rվӟ^CGFş~?ڏC>OپyA|JmV6v&)_Υ,_mE.g kj,vncIv;NC0#>>}辏7h~`#Ìlc֪g/^>/IO |qC|Ԯ}7$&ƶѱёڲgi1!~z[\0+;d=00&slv`et}䞧ż,)v ({h> p3sS#C$*2S䮇s l0 pVidŢGZ_JOB IiW HË6oEۧy&i%"ܕw9 !A!1q pLtddhpPPXRQlcPd[]]~Ldß"|sAhn!QqIY9ٹY9IaQye]z3bQ=n>I~׵$୴G&fde>{Y풢@g-rtEc?`pu ȩgɘob|7u5}𾬴wm.L L(˩|ܰv쇪u }Ѻ(s'-өHKytp`?_f=1ߎ9D"^~&SIх $X!"/VLZoz ^(.4dܵZR W9{e_HjY?+Ӏ\GhY2GOf5*)&7=9|5!,dx;$yirfp_I&|°fԩ*1gib.UD<a:'? 2H*[jcfJ4) 70m]7 ZA! /3%ZquUVH$Bg OlxfyT o&a5cTj2U" G3ujX,A>d]zh޸T<[K\kFKXsC|CۗX(b-!fmcskS/dJY{##?%oHxhc-v}H|C_yRB,u Zʞ]BMv9PR{)%?sP~l\"K&Ŭ(eqcho޿g̳:6ؤ+F lza+ bKKm=~M< LDZ ѨQ*LJ{;5ӓtTVtk;qhqxP\G4.#tĔʄwPjK׭AA{Z!C&<ڵ}pymäQB;UJ{FhH9㉇5֫\@NH~2uƵݣӃUѠKE *aA,J}|m1v\dEL`tW2Qjm||+&&(eERq}cD>1ACPHy<Ac '[?8>:ހ桰؄мY%=ڏŁ'\QOfHX eZR$ J#a 3Z -'8fxYkE)4?MMWN/vu"_(qYlZL_sr~vz <6}e(,Ŋf)>||q -]}^98R(h,daЙ So@ -,5뉥椠o Qj5q ,#Q/Ar̔˘!qQhB:(vyS@9:d&^Gc+qC`Q543O,`d ]ʄ\&Ft''7!wO ̚0Bƹ>G/&h _?qQ4vZWBX"H4?'.j^. n\acqV 5T"a7-12Z|ލn3|svl \B93Vh# tT7_Uћb|\,vy>(P|AWkh@/Ol( <؄cݿ׺ތnjNyIhcq./0"'-Q({nd=Urcvry}usa EŔE.h/YkNʑ78 UYC;0w2TA0-b^Ie\>Ii7z{$Ѭ` +|-{DL5gϠ% &8f6= e0nckΚA &v!Z?2BԂf|+bM v|rҕj9>Y׀W(q9,&PY&xavI, `bsCN/BCa Ĵk`6D<c"Xӊ*g_y}I|*wt__cAe@N6_,ZȸGBdb@[ѭ#/B醃=0d^ ]0" 8EDG6Ѵ듢id,.=8>.`*#uBB>b&h t]o'79h(ڿtur^Q[[&%s-My" xy<¢} oha{GYL>>^0RmnӟJBKP6*> DR>Zi |5IѨ =hCի-+| V ,LedhCE bc !2t8:p|J|9߾~_۵(X_VTÄ>y6)N`Loea.uTV}3,i5xEHw60lZxoHs};&M%Bƌͅ,?އ˟k?41) 55SR "h4A{X@ +K>h>96́r7\3GF?}SF+ʫ?`]CJir8_13Ag%ɋEORRrBPVZCø'/V׷w7M`D˜35O, 9Zqv/[2SFQ%~llEnFMS===:LK D*C̄1+4)Sȵ}r3R_`$% ֨^'F"(`7!T}eܴ (6H  p,=y%vܐ9ZUii<[K<;9>D~`!$X7u,mP0"W)ZᛊR L&A'%T- 9-f \ɐ@kg T4,ro7 ZJT,ff(= QuRSX-uWiY-دݎLH(f}ݬ]}xɜyo5TcN_^ikSp$"v2f-bId(Gv? -7mDn xפ'Ӻ3j^g]!GP9 %}KLFџk{*H ,e񵅆x˨9?.ѺSc*f?Vwvt9,4L5D_%?^bA"I}]: d=3'WF{Ctv"Ih9<MWц+N7Mz-Tg7|\m1ؑG@٢X;CGRyu} Z_?G{~IbHt{{g7oooA׍*O)Mi' ٠;gy>wj"v o(Ya%gPEbEjݛ[4II!О,uZ90rFٴ(| 6#سEq[`o_^ Wm_}3qaz ∐wK‰Walar "2r-4|C) c_[=(+08 -=$hI0wNV:x ]iAPXP V ͽS~rp&iGaqo_fJ9:6ujh)vJrqTTA)5:1@c2~u~o_OOOƤĦȤF*SC ۂ8d!zSrtʇ)l~}{f_c1W C2p`z'MF\gV>riv(&:c+)k[[[ !+$N.s@1|͍]|>.֥E&V5Lci}QlfSк|z,qz`ke"_Eѻs}=GքXϤ]}*&gcCU9Xu:ٚe1xSnǗ]FoXIQ +3e\1iZb[rxB~2ʭiU*{!N18B?sVi:Z Cb &W>=6?Nr1 wCzK#_ RQToe(25 GѪRRJܝұ_mu-!3YqU#yQILxE&)ۧhuPΠ)1&>"z~2 a- 7Y:R#c?́H(+tk_oLb:Ѿ;_P@N.iMtHD]Zm'PXRo.\h<[b<~{cKu1=20Efli|NL.bߍʣâZ MH]la6Ͽo*)9WFʢ"vmqRgbb >,@(W5|PKqraP*#35Ola'f\n`vq<05B2(5Ѓ)Kȧ-~OkHyXqG[]DǥnZrP'MA. 5Mr4&L\&q(9.2Ԝts%Z03{!wI1I9坓*.@}dR.@6a4+1!`NhƐ;+swC`]0=%xɈK.=4:HIK#+[&(//LKIK(e/> Dvi!:9"f. ; gq1E> w5TVT w5W$$eUL3ZevUۇ';rZоĜʉN*|[Q]SUoʫJ 2vpf>ea-."^fsN<eMuyQqiiI )iiIq1qZ،)6CcrJaUқ"8>'9&:6&*:!> 56>!>mc,<,EEO6o?Z',ǑDu~]~zJb|\|BrJZ֋;q:Yvˆ#I<Wϐ POK͇yƦ̴Ɉ|ed Yfܽǥ7O.+cÃc$d{yaR١twXd+ 0".羡ޡW9A}ޡ?PUv!1F?4*>%+—E/f$Ą>2;8: Ykc'|G<  W!O@kHWl~ɆT,cMrX s:NZTliv#؜b?֟-V̰fy՜TlE0?_ڿ,#fq FCX`t Z˰j\06;foƤ b!0v73V| WRoh0 G}Юm ::y|ڶ?$<*> YqOއp?fɶ anfiU~liPyz\Xu^Cb<<= y[5<9D$QPEJ%,NuՕdDž=tx!L ð>J4"u} Ġ4:FV2eecaJD}w5[KmG<ϓ肊I"(tos/?{cd@>eDY!UND eV:~QP5Gc{>D4&  L}Y7bˈx̦#Vd7OL>ZZH@@dfY/Ax, |3gl6y!`LUGD&@Cgi^ Nua4pU9w&}_p YOe=/,yW򹫣YrDXVT/;Ad˾NCJ+ K+;>9163>Oiİ@?߀WC|y]/RtyM# ʨ#POkF5–iFAWI$|'ӧk"Ԭ`/0gF 2x=ϼ i[@B׭nk{E緶nZ7*%.e v|E(/;$ #(Tҭlm«itSը4-#ؤkWWRK+ H?%a~H⊣G JJg>7 ŞbD6nnJɤ<<8G$-6O fRO =F Z^ԮnC{Rʙs( 5ڰM)!JB L+ [Ѽ'VL:a`CR =5NeLE}3fvCp3o:E` N JiaɎA&HdeNPX4 \.tC934咒؜ѝ#- )=T{r~dR\9{f:ƽÃã-R* m268K*ä`cV<#cL#F5IMtx^PX<ɂηg* =kz O9'1l@B|.I_ JQ!=Y` _0"Sl/VN..Ϗו"@;G#P dƝZfX rT9Sb3u*')Ex&z0A5L @$#sDT(HHe? '$wAGw&X(+J rɸˋuT"Xm+. BSP`(类M=hV^B\\_]m_`'c U:o5f4ѝ\F YT]}d|:iַ_[RR|,WP x7Fx6l pHßE};ŌA3rqepl 䀯5-ͿO<ͥ&jH/h\cK94 r e°{{euNZxv%Ү -gt*߅~&Շ[|IݞJ=QDr A13CNLjm З%) 14[OQѓ=^. jCM<(dȦB4hw3QCP%Eb!Ƙ]tM-, ad>ʁvJX#/i\KC( ̝EW1;t Ri<>: pX,<*P>)tSnz1'plyigo{M)*ղ XيV|g@X.& sKM;ۛ-X%lɰUTHDT >|Udt3S5>Ќ=,&P& TkabkZJT% ">f,D7tr ٴ\>z΅Z}At[:{[hJ.J!Xlf*Bxp=ryN'Hn 1TPTbW)R}Lx+]6qD2re0pמyoIRAڨS3(d\B/Vz@2Y+`3f\y^5DLF9k0zc8r'2jC?Ը Os t*pA20u$S ՜79{&Ѹj45ZB"jB{Q%]aX:l E@_m)YD.},~f }366-(1$/y.It)?><3 IRc4/z14iU23*=rk>| >I+0 s ? +UE9 'FtSR&RDWl3[Jxp/k?ICqD0ZQQc6wOΡ#ݪV%=)4:R4QWD40xS ^a<ᡙ:=6Z4i2vxO+pR}a!o,/=@m˫mX*³*^%8>}P%Ğ~"~S2HЗpfR?{&d?Ɛ-N$H_dgT~x f;r18 ?&'#c̋'Vnj?ZE5 BOK/Soq%nBX5!f7ӌ BLɩ%EXB$ d E (Yp[㽭U CpJ?A?gdZ@ś ˄"J`'/cwŅEpe-%x )".U3 m@SȵF+5%7 qBO":槡׷MdS#;ݺR/ ES,iP+E ^r`tY5nnh9#XmV/Dž -A})0|##.2% y? v\G;:8fQ}s~eqB35aeDzci%B򧄄" =ۅZZ&Bn 棁#5s)4P8{BzOzL _R8BlvN>ޚN.!0I#^ b\&t/ iP_=>=xr&dt' PB{ni3b;iN'Xrf@h%A#4m\\|lG'.#M0aW.w*f!CNks'E3BBCb܇+B o|Ng&>cn&ټ+/_!cvsqObKzě+y挡n`݇:# `+driA;ˋS6;A櫙zqaԪGYCt^o0*2{ $er@E:w}u~jgGIkV׫#xR!شٚV1fP$+ .P-XoC;'*0Io6G(ooNw@ G}q7]a /ۃV:6:` JTխS}9^UPgB:43ff (=-(jOzh14&wD77qDָru}>329G\yߠK842<.24@8Aiv7mUPqCgH0|C/%&/6аG;&^)bz2C?P"ͬiaA@|*u!i- N՛Ϯaۯ'Xq4G=dw$wF#LW$!UV.L?<r2jq,]ήj&*#X‹jasw Q:A왣yRȘ~{qwf7.):1[~ϑ1xfb"9VW_t<F3Qx_lnnmotjґ Omxj1ZtTrVFoS` L͓/_Ob OxhX]_7-5QN}j!lV|wVL\gO,Ӂe^Yݽv!e6Oھn`҃)YI)^Lk2 $PPJcԃվf˷=a{,~QUz0H嶂ȌnBϳ+gFKz\NFǦVAW F%T{ 'krM^`p%wɤjZ!%F,N~oG~ŰLswOߌĨE_2a=t.~oP,r*^̷e<;|݋()-Xb$1GW_b.yk#~ٶ^&H1w9;*&gU]G,xP95^_҃gr2 ދMJlW}_I" LW>?Hm^`q:'.MsCQoz4% %26o/MxY-t O8?)k9YDz?c33""M<›qd_# 6ϳgjP}se(6$jn Nb Ė7%-Sx:/)Uv "@Wyt"eqy|Xt<8GLV4|Ģ)"g"x_^+kbmkM%y"+!"m}#WL^ˎؐ*svMgtdDG6-CS|B_Kf*D(FZnxǘHzilU1I}"cb_.}SXً/r2S?( O=0 f勉9[Nƽ&1pIQQqIIiIظ伲*0j8lٯAՑ4# ^"kX)11 qr3kꛢi#3ﻻ8YlT39%I*P2?'59)9539MKc:N6qqqwu~ZXۇF4>SSGLgЦ?'pņ:kd&GZjfo<|'f4-,/NL/q+_>xZʘ?2킩@LqpTBZO;{{[f&G43[NN%؝_~0ظ,{( ,*61-#;+'';=%162<]t A$CN$g,i>=yEm"g{9B>xY"eZ]v &Jc9A6ru5knv[C[vyѳ4^]Ǣ9i f߿,ʲپa_5l* fquP[~_GjBIsqքZ9 f- ]Bz5zywh|fz^pbClmvrsѓఈhe<ia G[3sO@OB8/~!^-ooh|(75&4}mZ{ e}ixRťe ~i ƞ֚79}@pcg1.@>a`|^٧>0ta4@ (+S}%Y1Oyڠ>⠾ }?0U] F^ƍu6T/𾢶orB!T$vjd)2Crjou|ӧѱIٙ)q~Zbϻ{?a-]f^QTqW, x =q32srx9 !~ {9JdCn}w]8k."$}ߊ3SDJaecKKksC]]MmcDW)A`^N^;"x8dف{wzV5ʔ_EGm]$(ScCCDE:~ӛ̘`?>8& `װQ7۲|}C^5RB"`f'qTD !4;6K7Ĕ*R{ȠD%2Vˇ5!ilkf@ԲNjJQJ ST) Rq @yjP|5I f.ANQJ$_0.6?y$+T*@ZAQzX <,2 i-k\ǔD,U {vhz^}Y8@"DL%#Ӫd׬.ꦋAu3t@7H~mk{èSVf2 J6.&?] 5$=rGwplXR@qJisk{ks gL-p=@uT. ޅ`R3b\ǽk9RL"֭mlnln̩yXVCUH Tjj{S;s<-#,ƘzMT̘BٴngXHk:)_%mdIg> )lZwvQ'xeF "@CjՆ}Z,+B>srʤ1Xl64i5r~ L#XV#Bv}r`d"a}mU<<֊ |LN&Bبbcgsմc($BМVJQ,>ps!0RXWc4_[X7mox\ˢ39G4ԯ>vvv=h\̮IHkYa!\sr~&rlǨ|.Zk{GG,C R-TGsqh3 <8<:;?0@X汧|@M~k'''g;k:%.a*#2&U43g ;|J &sP^"#,8|?ODBftwU-*D\.4]/LycНGd鲄XZli-r@(Q(\7Xn@k77ږN)XHU=LX=??=P } p/i'&8kY8h9J1զ],]I.W#>vsK{,%EH+s}|PG{&Mt6>5eB2*"?3Ba7i}<|N  0L"PA%`4 #m"^k* r kI/±Qvs PPnc{cU+);2c&FC`1:- pyc"TycmIV7MF,<:Ќd&&1V ho Nq|JSPҘX>yǴ3dϞPHC#:u >C8_^Cp,/e"Gi79GDMIz|'O֐2٧iDsW˲0+ hQ꓃ V%Vd}OOuP`RWzJ7cb7jR\np#UFf||Lv pZ eI j!U;Ato%/4k+_çOfD0ʄr2_qM/ Ut`,/kÒFxY\VT<nY KVmt]) |v Rܹ€g3"~O]MŁclUւ}$m|uՉAw\a1c 9^lpBBlAJ Mdݭ5-g @uh:2[ibRymabJn#j5ժ5gLf 1ӪAt:):8++usdaeBZsPwwׄӘg30e*PwER 狂OÙkRmb # 92ϣ|!`xkBL- Xogؘ{pAH(J餉!h[FixOUHքfRi9~\4-6'|\A?״Bܰ{z`}#`6i呙}?qu*Aݗjb74v4Bmacxj6c(xS ن3ĝx>G0wxq~~&b-2k` BoZ00 M7dV͡Hx_.U&&Վn % n_^__^1t W_yc{(C_|B{b>a0!Rb_,P(]*gW7_ 6g&1{`L,cvJDw? ̸ލm#r[p4Ol\qp~+ -%kf92P|oMul(<ې^h{zsafja,/Gvd9'8~q\}jYq~iy_i/BH[` Ŋ[3R*!s&60sRy 2|=n z\M 'T? NUQАRwԸ?HiZ\. Za"h| 3x?b4~o_$JjЩ%칏Iq B}C7#UVWX(=1(5 ㉁bɓ}ir[h9;+z0J/bB 8/mivF)mEP7w.A>h :4?GRɷۘÃ5h":DŽG"`_jKFiXav:>69 :q@ 9T;{D{3N?LlzѸ)Rg4[_YLyot&uPHsi156N3SyԸ>Tiθ{rKɾ_oW&r=0rkN|l3zjlf,Gn+_ƥTLR`R*0^i:iF?njU`ׂ^N*NI# |of!566WJV/oe+6њVv6`%fN~H+XozC߱)qA\Yl\‹N*;b~ՎJȡMwϳ`M#Hd 7fǤw.y`"U?z?J.;D "P,n^~92%HoШ["$In|#\ѭBg X<>kԐfߥGD C^B쬅̺݀E\YLdtNe"HrҸmӇfm;Ux LwYzdxq.,T5۽v;} bHa\ӉMj}o['3#ͯR"[\^]k5\Ao=8B!MѸk͹?jݣd(<]xF-QA%׮Mёwc OqجͣK,!`RFamYR!K_OeҺcB;-7@ ügx,6{z% ZBigZAYm{Ncs;OKt>s>w*æ_Ycy^fnZsqwk.93Ar  Ky~pf/ uu N,Yٮi5TZуf_BsQ O)j]]ZYl. =C:f]醔eF'J+5445ֽ{U$i>(NZ|g"ABapĔdM ܾ{DIGO&]7 4 s㰰Ǐ bqnv5q .˃s)ݹ+PIg v$ɇBnFh |B88q~*~l?kDx5^C?#?a&`s:ܺyC C}Dy"< {~Fr6#F{GDabcccbc0Qa oo. P֙0P #+)ˊr310q81ͷ*(n@ݰ8bCc3ӳScC}m U٤u1SN]j~n||@yCʯlꝜ[]8\4:yeae.ݠZN{yg yS08M0Ņɱ}SsKB]Y :iɁ:A7k :eqTI"O*i_aY |PzUwS & %II 1Qlֳy><- v&\Rp?QrE$%HLl"f ĘaѸI>\kQ.Io 0DڊâPS055#+;7I~^n!!:񣈤e_2tյBte#bX>˗QʓǓrAB|Ύ7E)QZG3Ք uFe:7>e\4Wg|z$GO_O_N^lx JȖ;K O;7CTciRdXxBƋ */rWg''gVYb\,V;' K5侲`'zҖ\:ɄHjB\^IR1s)y:z_iC&Ԛz#]ǩ}"ZZUR MV%N ٌ&Pz1.j+~w,Zcjtxtzu2GRzl1he>XkuFA |>:V)Q:#\bwh5[RQS#NgЛ767,&%w,g-Ѡx|B]lɎJ5WoȘ-C)uB:ŠXo2[l$\,S;OCy]{/f^!Ax3Β+RLmnllmnڴ%R7l[vF*A`0."颖=PCn{TOPAd86<4G+T:ⶻmڱi3)LֆN.jfJ^.HzR?Yj/oVbERxQ٠d#D@76 [$Q(eJmnTBU%qV;#R%P!W2R"bJRdTɕzhaZz"E }ˬ)M,7Fǔ,hPFd\_TQ/W9.R6AQJ(r VՠҘ7˪\.ξIJkm2dV^`IMkBzM'HJe2 wr R ~),FѾk7U )$&*gDG80WJҎW\\m77LFYz"!wv /TXfA 3ճ5 >.$"_*( mulO/xl._ğXa=8>؄ ċ،I c#7*r:pH$iL OnX b߼yxv6'Ό3"HIUÃÃM/+ 䏩wb G Peq'"3li%2!#tTBӓӳ-V) E"\el\޼Nrl8QN@֙FAhپwv~q~uub)CQgV;dѦI D&̌·Ic%t?Q]1tk;g.?]:tj|E U!cupz3|E>!M>;&j4;NCuvή?}i& 83]k\mi9 iqy9B w}~5Ю%N2+_(@X+jHG9[䗧 H+3[I-0,# ȏ;a4%xZ/?Ez\(9ӲնiРg6oQ11187Pn|mm+Q&wՂNӮK+ !LW_ 副gAj 4SO8!!I Lʓ'Sr keiϢgEr0Cp|>6i|vpr%tժP'M[~#WN=Fޡɽ\jqDan8 lǤP`px>}:;݄"rO$u4 A~)?hLv>hxۨJ.omD_Ou s/nvn֐аU$2Wh=Ay`ۨ1<`ojjJJ]}'{ ;9e3\<;2uMj4id5JoDO68BmZMzَvu mX~63l #:#dA#e[z;Щ_mњkPlXϊ(_RV," `*#02A{ $\"&zźg! ni1;L@ 馔b݌hP(d! *6vPJjne"jS,~@,ww;> 9b`̈NώOjJL "A4ڣ<4kLgΎlfNEyg5% iaamDPl?'lPR;da\-oѨ\.51~+AɄJ܆!t`e$4cYk`N M&TFl+G"|˥} &im٬6]jh6}q`Ӄ;I~zCw0]N)Qioڍz2$юDHZ%&{R&Ou>Yo׊"E2)ȑ_޲I&Z݌L-V!S#.x@/ Yx6"/ަf>߅%SKUS9C>(ⓚ2" iz g׾\mnP~M/}#t |]ZHTK}C:ۯ8yct^CVfꋨQl4瞏SZ;ɓMŔU˯/Nthr`5bNF=C*Uu>\oWuG0eƽ30&XАYUsޯșu |bNFO7Sd:3g_i?pF&)H RYg(s'wDH|( Wfٲ+¯hBqC|p}t;&=rٌ=]ʞ=^VH!ǥ/w$;BCa&vU2WAH^3:EF@0E{"ܢ=(|6cm&P,#D3aZ?OP,W;k;rFË믮<hBlǧn|K Hr8mY–5[ BԾ)|̟v/|'Vb&p!=9u;(fE_nd惑 :Z7hM'Dϙ\WX7?C|?zijtr!k}jFLz{Q<.IU:mz|~ΆYŘ_jԺ+hf2 ^k cGYߝk-4FMbdN*Bgψ/&JB]D2d|:IUR"{hb1%n#AT7w(D}\BZ(ըѥ⑊H>ìn\Qt\(^}&r9:/1" ؟߿  J(QIu (aH'UOkR:s,yoH- QH\79Hv#Ua=l U!~_lR.MX?Am\oQZ2+֘-;7W5VOCP߾{߾^U66m85WG`x w<5)=4.= ޕ,*TAeó3ۗj!C[b 亝׳M F!\IW,7=ڣ IX|I"czb6MЮ}ɷȖȴ{:<65"JwQ2!:PkQdbN ڰ8*!׹T!}"rۗ2p)&|+'=1EetS4j=ZN _N6g iNEbp n\d ROJmsT q2){' /air۵I~r.yBZ Z:ұl^ٮ *=~j6 xҲ2\D(h9|1(AJni>9ݰ2M'/6 ihhkYU_ Ji"g¨׈cqrg{^B#L>f3Wu{/$(N&$RzFV4PCm29Z<@sM`nUlb ;oRDlZӪាښw-=}_ o.'2y k"eZ]OJҲ^zY^򟤥† g]fD B10a `̬s纟IX19===# +##-55@ f6ؽA. W!k}>WHcU\+ [$8<1%m$Y(+"< A8o >*Ml{SJ"AuSdZgsEȨ^]5Pg&Xma{*>{Q]59JcrC O󰏂,BȾi-G];E&ӡ`_:6Z] v]'=@0q[lldxd|b|b2?y@UdsLRCF&S3K>ŋ%٩\| uНqk(0  82:!! N̬pmAq݁wWn&~.u[F^aʼoe9ܙpP#)nۃFسN>1E_+ܟv IӉ 95?.%MtEA}IQ6J9D~f.X/D~W(Rlȟ[._Zonotoovt  |~,h;Vė9V AAsaȯGA4mKSuE  026@L/xBL~LG!f[jȃXBfaEM]kGw`_OOGK Be?_ϖ+PfAwƒ ^7t .i &C+KsS= /a4{/ꛜ_E|CO^6άR,IR(T(m9L^gzg`75"m G$vN4`WJ 4|_0(o (]]8PǤgu=4.see. ă+.&:***61u ˚}_ qzk(Q}/og̶"£04K&؄ HⓚA3&#枃v.t:q>N~q#LfDž?z &40IOM&1"2 sT2#Kr-<;9ud)}ѣԌ‚'E%_(KI|Y3P TGxrOS:ÖP: E&fmlooio?>51:< T6벜؝kv*ݹzxXw˻ŢwQaGήh_#cÓL>f,T!&":ݪF0ߒq?݄W%g3T$i+SK,>@.q*rph)r5 鼋7!dVI"fa\DdlӦqPTC3N6=:.TU0X+BeuUFbLTBLԔzޠ~#$,eF`p% c\J`&R41DŽ~tNl6cW&vfFG}5p7Mvvw^o*#c h )+ V^ a?W!οEſhmM33 -R7[6rR!e3#Z,RgڀEEױ/cltLBobXR2cTIR@6:&[";_V$EvSpb߱[=Z}8|of $b\oٲٶ6-&TFJ0OԎ~n>+#~'t۲m!gFP>NT7vwwv!%x+x E.gmWKJQ&<25ٶON*D*˕…af1uttc+%BH,/^֭7x>3:YL ~ ԥDC]Xt ::`@SmN:YKHzG^()&E3.|^ :-:t7+V766{>ݤ`|Y5m\%mol6=ѹ(g6=}=ȓJW轳O?:;ږY)bMumo5x [AZg Ve4&sDCA3L6_n[Pz%E=y>u3Y9<̅\~Vן\( 1ݲ m⣡ԆP/σ>f/1Xӭk߆W38w#KfUx\ԇj*Lʚm#Y߅GKA_R:(E^9ʑE #=ӵ.̛ UA@Zr'8S"R/߾@|Ej>DT=V!SwCc?)=E k;C]$OPq]j<8A3 :G,T HO=+Y2S;p!DJфM Ghx$X)-Х Br?,`BI &6e#)ڟ<2 h*֑mw6LzI9oUbΠN: ɸLlX7q+1 w{D>?k#LelSϢׂW[~֧P C*$4џG6~|~yk3VǙj5 ŢL㕷)=BH?? Ҩ9>⾅#:۱腫lq(ot}y jD^M*ǟ>WhrװZt#Q9:?:96DIʰqt|+p`>V-S>Jֺ3D-0|ͽmV>ɐlG(wد'`|iT!^z]U!0pW pуVd.Rwzގ%c~I=ȧKXW|H/RmoQ\q^DIjFXB˰ZVȇsDD'z:GSi2E`ǻFh:ҭ>.e*F):?;56:%oa*mnY0RH1SJIo6"[O70=J* 40"ۖM46mjG/_?샚qJ`*2o^%LEWaY|0}v~EFpm4mZW%4 mP+#Vuf,HbA2ʃsG uU ԃFXY x^2Dypjd_Xg۶*Q)OB>_l٬f^oK2b(_7!6/D-o4,ǞUfzN'`G>`RD5N|_7aFW7A2цΡ*VӰFe'0] $S^V"T{v|0?N&-X6eQEJn78jQ *N"PvmrwhpnւQD8yMVQ/[`tFukb´}xzLJ{Y1q-,BԷ|Kj .nힾ\n֖ݤN*ơ7-;8K$9Z7<k83G/.* {B!7ѕK%1CtrCqG%Pot'0 4|zBb/ܡ!PI|Fi tZ{lJRJ|=Lu(Ÿrz޷fR* mScSVnf?ݘC,jX|`GO{0E{fJ! LD~c:lt>A k|bV+r8.B{;ld~njT^NK|9.\nA,|?^ſ螧Rk4/ߡۗɠd- 21x~ZŜ0/RCUbc Tmض/>C}>2}g- MgD5趻f6Z3۔IcEY>A ox,\m06ϯ>io*K]d9"_. wm("deRt ,uo;oB'C,F C5g8AK|.uKP/pe5j 'Pkא6Pb,26:s]] 5TļB1T<-^`` ͚Nܡv; tܙ}1ƔAMv)ɦ-2-޸|zti5LI .&7Mϗǥ7/eþ 3H]ˢNRvym0Uy/pM7{>7qځ#)!Xlʽ ~ fK[ݶ --Ŕ֬IzGncq8 j{|7˖t&lnlBGfM[?.^,6,LH qnyZށ} uU 頣/VCYe?nhl֩y35ħS+mTn2ྡSOIi/"Jh.w".e"G\YMp2jZk>վ8T{ l_j&3N2R ׀Iʧ\H:WN"$W֓S9ɹlp D0CKeJ߿l4Pjxi׬ѨT {!{#fڀOz?5^B[p5&Wݓ_/0t׊ڴ X*׉w\\,pԉwp䓶l,Pڷz)DmۧWZh2_uogkT("Bk~v1q Uv=w9O~ZO JTZP''p"_՞ J%Lk>fr49)>$Lԑ@AuQ8|Tx6:/4~0 ):ZJL>9$\QZt 8"iymbCgٳ(#"ɁIibЇ'Ą Tm:\](χnb(kIuC t GM6 B[wvl9ުbRB(cͱM&-<+-U^XR^,2Q' N L6A!s+Sݕ8.wCk+ u<GP̅yC.j_4M.QtDfG[ƙj^g-֗q!㳸~ZPa7yoÂ4wxjhS}\M+ )elj{s1m=&SZSM}S=uE 2g/n^v7Qʻa>kE*#痿on} I\JAۊ-|(]=j#6Sb BZN^a~^EmEQaA^VDĦԍKIPOG5{5 |%=k_3z*HXlD"ge xRu]aKoDu3={>4*/E' 8")=q`,DL< 3W/$n^HlbqC]X0'3==-=3mltOp=XvUq/~LJi:1\qdvi`W撢B< 3/R:ov>!cHyOgVWfGFǧ&zqwWq۞஗/b||~-%iu]kWWWGWOgkKT||XhMAbc7B{y``06z?<&_ 3/3- UyFNKbƍp-o?;GF@GC2UQ͎j<<{}@xh_Fo:|zHzOHCEGx m5n|C;ȣs -ϰ;gDDKes!욓?sqߥ[/?_hr뷿oUsi^ӄXZl!D| 6O-6ʯm4rEI}aNP`s- CW000ݻd36 LX[ҕGhf!<' d0 q1A#P3=7 r z{,t IJ)AlI[>{8'nn6C[9y؈ݝ8R~EMswPo\B\ă@?w7ڮ<OJY݋$>y;6Je1lɠk /p;0~f40|/6SL*yqntڷ s4DWmijܣ_Wv Q.'R@|7.o`,Mu>K!p)s+0}B#޴ -g(bb"###K%s]IoҦe6Z < ҁE.1.:,QdbfEY"^͉uƹkw7LǤʞY=\HP^|ZfFFzFVVv^~nV:1!:"",<6Nt%">!ᙵ#Rtu*&,,,*>%U۷5ռ~W\WY ͬQ(W^B#n'8&rVwQbDx$&1E]`p:mmyz ֣#"%]<m&A]yIߐx}ZLDsb ى5[$9Չ1q#w&R'^ AOh<Ϳ&FEb*;ftj:=>̒ɕ*L.ז&{j115*D5顃uy< i_"2*ڦJk482ܯ< =_ΊiMdP w@2#Н\ E$QP(3mn&E7Pqϩ&=_`2iұJoݶv6*)TPgG\*ٶmolZ XĝMDp䔴di)2PWvtǤ+ZF4?LAHiswqGG&B*p)tr-Ȣi)&.E^|FDI 4k_xɪQ\o<256#r! q:kId+y2K*xBf5./rjLj'u}\0!'b롮ԟ#5׾ _*uynjZE\ [,C@߾{>RGHkBJUZeX̏yL <5L-\݂: _dga7K׎T *'cQfE_ mt[\ƬU+XQ5jCb7KpBl'&6PPx#mK=Te Dkf~RRTY\A EBGI=\)? }qm-SV=A0H=lmuoy|ޘJНbkta4.(;Ɏ4HSNrtЮmB|e|Bܟ{k^A k: U:Cg˓]`y dPTs*>O") खu#xV0Ѷ8Lڡ%&=x>)W$.Z{rYL8B;FCc?=Gk m$5{YâldBwh= >2 Vj >}m0Jk>x!"mg)%Q|9==4Fꍽݙj))u@",p%L%!zk5Ȑ*T+4C[:JcbڐJWpB7ОGA18X./6wF]c;>rG._OP -\W "bP5#e)4M|bj?9!} "QUy*^{*m YsDfٳRwւq`Y…AƲwoG3N1Z!+.YRAVF% LdW&U'Zai`zDBϠnEQ }<"i 樥3jI3˔`Z|mȢV Ƹ-beo,=VxzACK2YOBB tM?׬Sm9CB1Ԩ5_(iGhkrfjVQR{gO X+JH _S צjۡ#.!R5z&wNDĵozYDH%WZ"M@e+mG%D;HjB!Ή~c܆{|Fͭ;>~= fcwCI}vrxiʕrf'>ZvI-[0o%`k>E{>pAk3;T_M&  WG- Se?; Ukٷ77 >J;Hd`B3]5__^cj..QloèjFUHW3񁎩;BW/ vx1~ f؁ݨ\kԬzvuk~餔[GLx*Rki*XܡwCV"V/'f|gs'4#ʌ++Պ_k(_\i;SW:"A,8@0eS#Eج^D*EIGC0 ؎!y,M_JQR?$c-rZ2T3`<*^Y7ퟢkpl(D\6I]"d"к;(dfzԿN\awvq-ȯI,\oH F8&E S+\1 e“ȵP ]0P'{Yl@?ho0k΋Mk#:2N/GhP# @ԛ7vZ]Y읣|w?]&Z-aLa y oC.8; l:b*cmcs,ϯ%aQ&{g,|}?A5]k7?ƿ, rG=5/.u `܁n>C|MrS}stHq߿^:;ݶ[ 9oJ_zOp:Z:vIb?%דoJmnطvO?}zeW 8LXj>ʸ8;=ٴouj)m0>pS8p֌7afHAl쓎U0.(ŗ4BBVM2$& ))nm伉HO0(l bF?cϦM ?:ڂO[67lf\@e0zBѝ[LzeL7L1:R̡7mɾaج&>a?U9J-]3uy]>q#T.{&01 &_.NIN_}xeyye҇4R9XPUp2e?(ƺՖ^ZFyBJ~:ОDi-te-UL7wϿ~=9xq-=yo3܎q!n>ĹӴ1}KdԖ.7"x[n>?_O7p.bc6~n X}u74Z}j2!b [ϟvuBp"_yog\ E cC86j'+S 䗃LJ C2Ծ(`ɄO 8|y?}{h|  mY~FӪV|R\ؤԑg!}911Iy6in(;qO{SX6+K'ִhWGc^*%,tGy26)Bn+!R [5F-HLhZf B%ZD֣MJ~,$%4Q w( OAL`XJs$7) V\?@5.1>'lu2@ȧ-& GղŧXrx< f(WY8.ʛxky8Uж/$љu&_$av4Rj :?5U]'2N4WmQjt/4̟*O&Y޷u ϬPf(ѮW<߾&n̆rc7yo;1E <> K(n{7\ULR_2s9!~NlE>=;['e6,M*߼ŹiD6iɋB"5*r<1JӈXOLN)(JO!BQU2+"ŪP1ghntȯ }҈Ixt MLLLM $ uvّ&oOgg]H@x|Fnokjkk޽}SQ$ sE<3 j{%&eCm>lB@g]xQn` 9Y'(r=.ὐs4:{reJy;/(/2Eqןۿ;kyyR;'A.$ %<q.@]>R;բ#.hԑ7̐Lx0??~zC}=p!A~r</4PrAlNcQvQ kQ͉9@wƙ;>>qL]|[/F   BݼݝgSAơÌ'd~T\04ElIbcc0M:{G ~h.DȯE㒳 +^|In:.q>vڳM87G)|3021919>2<\, 04zⳞo01hLJѩ4&F^__]]O 8#;,‰\"[Q=Ha2Y 4U]YPV&k'F wCtG T<7UyA~VfFZZzfV^IeM Zk{ E8KrnX{la,-NFEa0q񱘘Ȉ8b}\>mUV _"{^޾o@U6&2"<< K"X\R|&*q$]2ǗP&;*H!~.|U7p/ixY <%`EDbbb,'9%59%%%I)_IV?dc؝g"(|E,KLJ MWT\ZY`@ $v3bhq9F=N~5,UC,*&)M}ޏ]=?v~l)Ja#2)sϠm78g |Z=BK15yevdltjlrLg1+ ksSc0!r֣l4>Sj Z{nlDt9W"+|+ lH@]."%`trg wʅiH耇L91 ˯ꙥeI*5<j1I' =Evue1渵~wLZcfTD|iO5:^!&N*Zm0t PW^A;ޜnf $|VC,Kh jcjt$q˔Pl۴ STuF٤$"P̚HJ5_w`T~뚜ٔAx޷@4Ɔպi4 FA#R%k$ո;NYDb=L1aXz՘[6l4 :HP" joa|t܋- 켋C c1a1| ʵVYVEB_b%"F%8 =GԜȥf'}";U/)C$Wh4jBo0M9LB9<.OBbRL̉(!zN@+JQ)mN) bkje1h)% b%셦䘘% 7?<Ig1%CiNtd^U!Fhj\.Wy@6jRo:j:LĜy6e3:Р>RWϓWba*N&rAp&R1YZfJkm7fL$MYaR#ooLXԖg Drt6*T҅;>ƔɤR2:!ء;E+y+щ,»,Ks7nMT)aֺeVRTTA\wBZ6w7@JdbQ5;"~QCBA3!2"d ekwwӾ}xzmxv.BS͝}c3(wcF @1 1C+$P.]*Mx1˃.֓h^䉼žtppxB (J˛גSBg>;3z始 ;\trDJ6Ԓ;9 Cl G֢c+ żVjY :<:=9;|y,۵[Mjl*G UvN.~j/MndF"7vqqkٌ wuJ '|\}7*4&ƾ\HյӈSMr5dseʳ8b7CtU)>F">ٲbym⣡)W@ZO&Ȉ͛v1fHBfV2i_5+4&:5BQ.zdŹvG2gl}Te}ng}w@Y9:1 ڡ+OPƣ|'߆nI95r$.sFP]EJ$b9Z?תɗwxe_xU2b:_QQWΡ"=IzN.!ÜAz -,;玼aTs?RD`̵+pΏv!+FtkV6%U mlC{VM]꧊=ϟ!泷e*eRdybA  ѕs*Y6*')P="D"ߐH 5 ,T™~?u#НW`l_="` d.t̲{t!>#W!'_'e=9dᾎϟ26;[jr?U 7d}}u~vxh}R֠TܛFEBP!wq4ߧ]=oe:>;skPJ&ݴ5JZ]RVן:!׭c `pykWWgFM}|~+`n342 (דρ Փ-1s|9~_;?8蚽SNŸ?_Boo@iZmRְߝTw`U-"ɜ@sq 4Cwrz׮a~ F%q:f먼!(!&\`ndΦܥؼy5557:AutnoP-):93MGR|uzxm4|sOKUfbm.OI* Et~qu~ mzprrx讐#0%ٰ@3;\}k~U渤NX&W c$L͚H~o(APԒ^G\LPb3]=Y Q)_`"b>?9v,xTHt etΌ۝P]J#pe$GBl[& (J<)%+U0.L7|ei??s|==>Y(=q\X?「a9!zU(E #8|pq]X` !N88.| %tV [|ma=d6;{;PM0]=dvv!c͋j"׌8vz*d8P MIϊ*UsA`ko4O-,#(v ^IVIhNGU,3BB5YMuaʴ[`IbI6&] ) uI}d eSꗌd~f=<=@]+toTJE`̔ q (&+Y"W 놽cwh0VI i z\;3b%.+|M4?Dll{hnZ `j!3b|p:pC`OL5/C-ZlCv4CbW-rbv7KПuz -!)'%~b| 2T@&&s2+}im|XDiąI~;+/JI{5 dd9|ɄK,;u=)ԫO|Q kY2itV ׾~yW)p{iL_w?1t-ԫBLK^bZ ;aye$JԤ@; 4}~-rYi %0]|`p{b*%Rܓ^PoR#Ӵެ2JkA3ۧ-9\Ygd|r}}uvru,.b_HWc25|fgWR9lt7T}Sm~ˋxx aA ܐy)^L1ķ \7Y0)6X6ri=,Ts;Xep4- $saBn܎١Tq{{`g 8ɾUXa׋}XSWҡ!K7[56_ägI`>=Z"קxR/g;h(E>rPN2Jk=ߞ{Ҽ(l6˗sZ^'d?>ڲoC`&^'*?>szv&zF"cdJ|~ޭ_vu̗W@kHbF%XhI{KCQNe/tgdVrX%PŅM$?Wft9cizjJD-鞟kJOH|ܫ̴9PtNgڽ(Q{WR9TZjZJ*Z# 8'QJPaZjZqW 9k:"RF+|?"VUܙ9Ĕƥj?TQUڷؐgH qt®0&o bsfj-݀I}|ҫԴ>2/bAo9i[%vTvk(jT^.!KVzƇ#߾xELV8Լ }>4 ZCY|M{@{te=ఌoHr\uf 7/J6/*F%ᬎ$%_/0&$?DQh/PLADLHz:DBԸi0Z}J"Y˃ D܋iBC6k!WxBKMLĦ}!3y<_i4*mbU%2iٞ\BtRT~sdICZuhnBerJO8[S+K <Ŭp,6t3.3oCa.% OS Z(leo+`LuEᱩggՁDNw>~ ټ{HR{$l򓗵3s# 3s= J2A`\rn"{%7ON_䷃lt<"{Y/jZ?4Կ}QI"ఄd19:*:~Wu=&=OŁ@H+**{VUV\5DRg¥g{XtTz+of;_$8)9%%# 3-5'⓳*:&ibpMI]-BZ^ f[_j#\ R!GHN+}?J +rnuLnhMz':M]]m.JKmZ֓u9#76}УK &uial훪w l` t/I*ɩ '|1J^ZX\YhyK{VLoܑ@@ȣ8BfꆖbR ?8H0FHÄc .%#gOK r GP{! iSa DsqtAyr>N+o(:1ͺFO>^+ݽxĞѳsCx{yV{BK]MzߒjǍ!??8 n|Sz 1:ƣN(vChNj{F } u!u)lA=zF95~$`;rAИߥjn~(οoy&~(KzawI4Qv=~ÒR2rrss2SxLtûA.|jA'oz/,WVcOww{SW%yؘGNe7g}~|\mY`Pљ5 ym}ymiaanz b#;l2B9.O>˳Cn8>kdv`u*yB[|4 ē0CpTy3\5 me~CmWo*jںfVLX"ntBwN21$@Ј<83%).&&66.6>>.mhɥN~("F u٫\u0 Ֆ&DDDED&`GɅl!s]^v\ gL 4445ֵ7{^N%EGƑzHcnt>zvF9iT(#ݒ4oWhߐe 4!C(x3ϐjFh5i!pwcgZ&y\D}.66 bL.K{t瞆F,qisTTe0[&ˆU pJjdrX$r?*fբ*]5d|V;#EՎR8bcZLf9" eRBjeHPyWĄ(ܛu=Y\*r嵣˦J X"LJ Jl65J:2n]42!_$S5r1k6-Ccr_R/Om-![}Q*TrXm4, qJmx9WZ#t&aM%O*}e`g6t<LtFO҂otMZ R's&Y\#jE!r1me"&-Uܜ1;Fu̼r;%1i5sl(`2 }ǮB~/LMs%|@ԛ &-VI(Cq~p2616r ſja,\ggJNM Q&'82H$WmF }@6e #3&骚ܖSEŸtSùјQVHYRe*5jT*J &nb1w-ChK*Am{y 7N O,L[[vh::2jF+b*tzμwt-ۛ J,CEyzk}?$dn?#vBfJپan#hfЙ捽ýMͶe+2ҜMJˣn|-0rVJL)GHPngw\gG[6PHh#UҚ7wvw!'HD5R1qfݴ6h0Ch$ #:<<ٶjlO4B}ß0>i}R^o×Ա.k1\sѶUsgɠON.~&z Z'W&Y(Qɝ}(!354l%Vn>|Mֈ}g9݄Ռ;8:>A#R"`L7.3Y\wӓ !_TɔR[+\ tjv`"6ް`_juױc.a7Ul~|[v-TNDr C^X~ qnwS:ħև;26ѰBR_h8^6)a:Bi#HPa7^gxj&3F~e죔ߛCx`^.+i )C#3# prGNZT}wk`feI #7XL{DcL}rgh$c- R$}rҧO{fZ_Jʟ3 Z jyJRmrUЗe5ATg^BGLGE *!g'Ֆk>=;)2׈l,:RZLFYTr0./NOܕbp{3)VFN|2-8KjQíJ!#$8F{p&f)2˸zs2dn9'|j&02_tLt,JbVu`$XT* Dtuӓ 8ݰ}[}!H^ b]B dn=,(;@'Wr4VaA o70@~V_ч[(9=?/{*fj<x\X:^>!z"9ռPRi~`qdtea=89?r`Z%WD"ɴY̎,gvPohOz [fĻ\Jʋi)#5ԱzeEgslQ GXَN݌5$㶬&3"NE:\ SJaU .MÓhWBz2fgP:V"Ŀf++`{E2is"YjPɖ`=|pmk-btaK>4K(L,c~HGi֣sC( &1#r0GfOi&f*bcKTcvy VQf4t73 ̰ `dz'GYZ/'6Qסi棓Swhh\ѨpMcSqqohʄ/ fU1=BS`y"U;6VT( Y~Cj'aU;'ޡ}\Y[jbW%/vݴ֖ըR~IiSA9'mm&r8?1*S07YnlH Ș /&U<ZHGT*-pĿsdNDpL"*2jIUlE j/A>M'HkoU hosُOЁׯ<<5Kc[ :SIâb;Pd {ݵ2]<ˑվ z Ci:W߿K0=<Z_lH#_YiH{w!FBj_HctrI]x\՞.ms%>w 2ӄؼ>ze\xB@" {0 +d@$RվQP&?p .;|@`À66rq!3,H5rar,!.8C"C̶ z/Nr!2Kv0f|>4uzZJ(OMBuqÅȢi|nn fv5>޷&PܵXmv34U8˧3*G|$rvjKï*Y͓߮ubm]o_ldz#B,:^q-2k%=9%$C `Z֚}>2J̉UD?N&d2u:WN$VLe.C"ݤϒ fY`"ׯ>ѿ“ˡݨS鍠P+8Ui'C>Cݜ̔ҮeD֐vYMpèU zJ[KMM{;7!pD8/oЄ)V B D*!-2='P/վYR:-&uE9)"gqAw?8qb$55%](K`Sv>_hŴen_Ϡ_p>'St qxH>sUҮܔdBv/b(^^$%=NRH&fW9 3YJylՌepܪ%P*ZP/^o?_`m+8lZJoi ƹCkѲ! %漅bj `!̊g05dB>su:6j: I0T{i\AB>m* bȘ*FZyYVvIW Tp8BvU+Eb9Զ,:;AK9+ex,0^ tX=ʘ{F%2+'W\6-Xlj@lpK'r8ž<"> ǠvCMouӬ$,.C:)hnF_d-)E|M@*L.S8DHy 梵ܛ^pbURnKA!w޻ A\wN|^AG)4~EnrðȘx0<61@Е"%v$,bf0§޽]MUtB|tOzxGkC$4]"8pDZ̢5 cS33SS`@nEL@h)\oy,bx|/lLc2i*BYSi䕥9n:(iQ!D$(A\wmkTA^_7Xi*M{#;F2=$(q\5>;UY^FZ )9%-3um{$ɦ5H$&_`hTƛY&6(-)NHZ1q"8?C: @$71gfEDGL\b\\l\\ &"<<2Yv%}ȋqzTJ!zt~+;EAɑ,׼{hdF@Jn~?;&&)%+ˊʊg/_z^FŃQ8XaI!}vA~!u2s&TAr~ή-m}C##]ĸ؄C|Z>"z7'̡, =?>2:VZ=HRWdž'&GGF֨LD_sUq&>+hiiUHl@!Sb]&26)nd+r:;911@f \+bⳛizp避7::T]a+NM+{? gkzVΥN PyaR!JE,pK !H7_a[1@zR5,֐[ Z# Z˜c ]!_^|h`iq!.E/)׾w/(bI,/uzd0RR W,KqD(bLC.6׬!&7I:cJ>%ɑQzxgtFŨU2(drR[.>˦kI\54+6EG$bUJ@,G[>ʄC,&˃Ŗ ERRQ+eg3j J<ތ }y(R(Kk|lhRP b1}|dsBR2 Hy+Iquz[nX뙪H+.-$eA]> TiJ|=5PwidZ.t6W*AjTjCm JLcKRP cON|bUB.&d/̫"|\ளGYȘ~P67igIR)R`r-E ł<1әLfŨ3E5&Gky dm;NM;hu{FNonحJ" ׺0 ohwIw|<Lb9bqذmyMɤS fi25Hmjٷ='-7Sp{b1\n#!:BkmlmoomowOwl7MKTݣ--ǙjT"X͉%S=}BHbLy _;<-솯_N$@Ct|{{'D>QD39H-$8B=I;SpիB x戠] }1(sk v m7ܑylt e8|kb^o#f*p*wG xuZ聯l}(R>#%^pog fr¥c玬Vn2+h]$hǾ ڞ%| >}gtsc9/  +#-VY<ʈAMΖ BzOb]1.6e|=iIub%/:l3je||S0XgGk޴21tAАCoXHA"4QJKGw莼c5(uTo E[ۡ阘_+Ӯ4B~RI+1RH] 65O6 ]An,ZΙ|/ג!lJ)jƧp yTYY\j6 N}<=#ifBz縒9K-SRq}R KVݑ?;JкW[Vb jp)hT! +D,KLgB]_eswKZȭvF<;0A2K˗eKI!tR*O$|d:_OW'8FS6Jw@AAjУ$<]-OGEcBeKOwSJ aF4FSm.MCemC^QIbfV+tm1}3U[(RL@tb1qǨ ^wgȎEe0ɤԤwlī(D"Ͻza/&h˫Ξ5h^_쀚W M-ʅ x|P<\!+g0\\+vugRC4>!{'В~MBJדשcа^͏~2Z1ShVԨr?S5)dqj|DW-*Xi20'cm@ -7twz IN=S*|9W~OձI kRX[ F)흭=|}yr %Ҵ'Y| {_(iIļ^Eʯȸ (Űs1(F%Y5%cő>ΩϝjY8–(6wvvQ:Bz LeuZp>$we=pHA)z>7:,ٵ ` ϧOHſMU;֍9KKO3KuiG!cs4]!13|X}Arf*c^8┆zeIm#3*',\kzPj[;LvቯY-zGtwsG'(3+%i8\j f< r׫YZo߿~%Nw`WIrLNqu{a*5-stv~vuK^b /PlLU$=[RҘsrP;XIO~=JB0b+S_ӃԥMu-D߮yown3cؼ.xK,0w3=!m##βstȬXl#N_nʈowxz9y>1O*M:usww˾wԦq)]k|rմMFVBz!{^%›w ݾ]7אI*j_8b۠0mM>q|4677V#Nפ=5q1ZJm]JܺIUq-=#5sZC->ٳSXbh*UZR!5楧UL6? ל 9HW${T32aO;us_B 7#`YZ3[z~<:Ύ?IOKM3BZ.)t_>FCZhv|iԫrV]-OMMk^Mn޾w^/g%k&\1W>J(]+PlUq>BSw]67'j㴆ɥw$Bn(#H%b\g?:H]b};h"DZx'[y98 Q5:]EL&95kP,)Uc6Ա"\ltJP$`,8RL]?Z_ѧSxB^+RЮ Kmg{F0w Yԅ7,>Q\9ʠM $b޻EI`~|dS$2 {ey*l0zxmFmx>"n9B~mv ݮf;:g$㰸F {m@G6/1UwB $B֑2NJJoԶeqW*3Vz9]=9b܍-!UP10:= rgOSV>"c3鼹'`TA 7>G{%U`%4š8,xv*$ii|Z~q=TK-U1<9?33 $ Atɛo.wJwy}u_C|e7DLmdi.|=1q8fhff;ffYY%F3;=3*N~NbKEgGhoWW[]1H 3ymk*ZOY}>TykIHX̪!RҝOa:9g6P"-AאL#,NhĽRy˴@)qX-eyp\ B-XHj $&'8lu`â3ʚ"!gsizgri[(QʶfzIp ^ hpF+k[⬬,2X;9G`''ȗi>~-(nn'g&= i E:@S`d~FW5466VeQ1)q^0l1$UD&xLj1vMm,0w?#j<~aFЍcgg^~v˘,OA(EQA$z"?Ny z?HQ|Ѹ &M._ $( Fy Ff{<ѳa6y6moplBx|H}I6~^16}}LLOz6`LۿDH=4GCt<ϡyﭿ#T Rlw')5WRa}f7)68?ѵ3U+)y8KI5`C8zo H!>b?|yBb2HIJxqܽ(ON4 oʴJhS53g@-!91!)!h &gj;7?PU冈K.^ԫ K5-= ɀo?ΈtkvR5_қAޙ%Ѵٙ%Rٹy9yY4  R */؁,q$+&&%`M-/^ttu4P )))!S"I}=P#bVI-ibfX͍u`[M!935%9ʱG3#,~P4͇4s5 XzEܖPQeեU\RDuOKL!Բ-ҴP@vЊW7'0('0 Y݋dq8fdŜ[XkɠJU*P* Q1)2(GSbw]Nǚ\u@d2uJl{#XYW{G܇xCG'nAɢTj809{@n6VǦ7*F ^o9eԌ%a0 ]е>gY=:h09>k៵w6dToMJ`:xfJz q˥IE,FYJ,-!= Zŵ FA˝[ؑIJj6ϙ,FnZhIv?ya.#>-o`GuzѡLt-T4zi2,.[j2 N7%cd 3eRszd4ZwNit:Ҳ{ڝnn6 e˗ȩivv/G+tlfK0S?;sX,8J6[a 6 u9wVHάǥeHl[^_R Dj'Gkvvɾhӱj8fb]s-zliz mҠkH Cc Z\ds2`p%=wOV_Ԍ(ܷppRbJT?:>hg_:;rhsrݵ{xD><:!f>8&GbcRrF~vrrttp|ۗ'njyZW_/9$iEsie+@Lؓ1noրt[ O_>}yhEe/Na5zAf,!du>-@D@ͱfV/ :O\]޶meƆF!qAn1+pO# _|ok0A Y*i&%C@G'o>|׎6Uj__3"ѱ1$2I唦{՛_xלH:5V+@2uX$a *{ /k,)![}fa]hQ/oMǿVAHB^ $-\Wehaioִe.KMJ4 \~GVIk۱,&D8Xb4-[Ӛ-QGhlg[PjLzH={; p/bzw=G/"+^;{Kq^|-?;ߵ4jFP8 8zIfGGv|mc/Jk]rb5ytjLϮI ȸ8ژɬ\ Q fLrֆyJŁ2FЫ ?RbҔ }3,00Ŏ1;:t[t (Rhv:ww;mzxg\mK!i ]hqPaI`@)vv}z{e@l,ҩbm--sC3u1RID5CNۤ UB!Oo m|y==YG A؇6i3axn,xְbU5,k3\V ?^BAdChA+rϡ Ԛf*pU"M>˴/a35JxqfN=ԻZx"cYr'<\ߔD]hxH9o=+iwiਤkFږ܆7"o 2^R-]$Y٬_ 07P(DMDn_Ư^_u`=s'[yc?O= B8‘ȵ3p\np!XW\ؠX:x^UT>c}N4 ^{?7Ķ>XSzyq tTW%=w֍P6c 8j[x }?Cty19O>?~+֋s^;mfV#-fy?"IIbőz֖1CGN>M':ɤALcDZz:ʙ.bjfA߆2w.~KA+^jM/]Nf\1<EOc^OO#O p1'۠ƹӹz~=%o7dG'/C*ֺ6&$ Tvۿx`֊ƹZ?]cγR33ʖ9Ϣг;a)ˋX"g]Y# -?X"Ok=z;-@-XODF<eS=4Z>̑CF: Oti|<;p; RWLgO"}@Z 5Q5 ;a2Gʥ-l?ovUs䒑M7fC rtI%cky:9af^l`ŧ?݃$up;t bsrӽ=C[U^ow3Tr Tg8yFn 0lpFP8eC=:@3"ynJ#J&t~ f!j>#\_a [ I+g9>0"ӫxT"ױ,P>}<7KgƹO_ߝAjZ%ߞm I@~bTB-|K™B K*X+4 ՛ |nt|>8hL dJFc;;qHg7&N#ٚ.1X-zOP}62R vZ*a8F0#m&2]TbDc.$7p[)1a~#ZhCB#S-6R1ZpeZ[: 5]E&lk*~8U勄Ǝ~Bm^RIrL,1|~UIW;gZ'dpzZ0Q}_b߹sNyxTbeJf9+}Cɶ2?!TzÈP`q Zhp<S)[ná1-ghoh`d:B p9zg8_ $f ȡR[x%3$-C  @%ݛ*HqTh+ME1iXxL<~Z^.cAePE9q8zq[.VGȍ!P8;!H )=PH&y$9@{'PsWEZT[ ! 8]_zɯʅ\N!)tJ-Ȕ*\WuVrA_^ v?\<) j {g73]y#P.飞Kj9<wc5?3=3\JDۋíy$DM[kGh,i9g|83] \㘰k\\` "Q (K)ino.!'<R)c-6z~_H{O2¢l 6-0އ4KdORR>"~f`hl)xh`y޽(VlW&7!-T% jHF/ hN]"?]F4 K 7Qz9Bd`PUp7p7W}^5|oD RPO?_ i'<OA{~ȣvۨL_~ Uj/ݶP͇EoXl(;ʭݹ&pl>k*lkTnc6_R_B{Y&aan{kTCnY@M oV콸?}ɓGDFC^"]ܡ{`hd̽O2qJRȸ䄧bP1@:Q~@lksQ|STU8tWRqiO>i(wקc*Z<_}I-jd.om,/1gF{+(OEGvאPf1J{Ǚ;|~ȄB|!sח&{Jh:4ZToF𵻾y}I?#7-mK2\ZgNM-lDR.#qh=gIIJg®o|Bmg [̈́Uduz=:ćZoC&VT6'ii} `"=6|? 9a1! WԷ,8ځlԪ$k2B1 lZ 3,Z@~BT02HHŤM I;19\5ә4ٱ6z`)55P)Ul0ZUEشy(<-5E-B[m6T&atZ<[T aXb[4ܡB\ZF]=_~ïtGh^R&H 2n3!`LZ^']d+tzw&hlE3Xkڄù"r(] JDB-Sb? nt-I04w:65kI 8ݣ#l:PY蠟gslBPbDV.Ḥ)t{N]6SpjW/1}tvqow⶚mD3.أ4bBa׻޻cخHKv8!8"?zx.9m*2.^ﻜnG@'-H+`[cQ32m:=<>{go?|||iU/OF/O8wxxvYFf-.֚3#+8j7OQV(p_~ӛzL5X/޼*'C`ɖpy  qx(O,U!`./߿}~g3X#bѼw'pZ ƧSjXN)8i[H ۪JNZ^y?NF)sP̮w_~zw݉}5RNQSGz$wxCOVSi __S;VKpxRٲFؔ[Ud嫏PbPi ˿Kcߒ48&VipЧGد>ז: <=B&n[d'8$1&W pK2=twzwx*yRɕtf_V+C} {^Ҋ1Ďm5JDRv׎B'/5ЬGepMeجiބ|n۹w uoJ/mruRO'>_ƗdnwBfzt++u~_ktAzas~Ŷڌjƹ,6xY@i-a5m'i$Ϋ^|-"}|_[#ۍztTM\p;7Iu1|(̣ڸii3$ "09{mFH+[㗟N<5t(ٍTƀB5[$:ɵs*pR0# P‚GZh tnMX`z Q띐{^mDv:@,P(tw2bWa[[.fc ;ʰԲބ!t;L)d)H跗Gnlx0àIuxleTdcga v;rz !9ć>{yvNi)mB-yܧJY[zMHvnl 3/] G@'7٨l%Ū%i,aXd]JZQ9@?~q(٬^iJ^j4gʞ{L,gVh:A}[% *΢HQJ%(n :Bu&e,*xi2wc2:.~IZSk߾rS!j-ir)BFAp[)<1gJ2 (x "%{JmR=3jjsQ% 592vuh(i:yՊMќB-?]ZpWmD:LAwpRc3z5BF+&wX9/=NrnHT;KBV0pe56~ }VS"qqT2_IIѵ:Kөu֋z ^.YA* "X\ʦ'y*H:r&x#}iDclI='mOщmAQruV5H.NFɸo> H@rlcJFQǘI ۨOK+g [59\Cq%>|ѡ^WfU+WSj=&6jh-51np I3[W܅{yJ@FZk5j }~{urx] Sr~:1 Bt̒6,| qCk_[*]`˓]xĵMM8Օ\H O#U/iYm"ii' H"uh"ߡ,Ev*p$ >G}{mTZCZhW l&sIfD{e/m$Rݾs£J3+gANcpxԴ_/R+'vnHׄb(z [xZVuzt>0OE4ZQkV|medS"WϾx̷r eկg[֕Mn[BB%.m˓}`؞e*f-Jq>wrTǒ+z~"~k"O YwF@M\G;TB֭*˓3;IwA-h竁y?|oҪ <5dȷ(Y4m9n> 2`ȃy2o[P)qlײ'Woχx{h*D˓jKxyhe7JE|foAy2_:=Cn-7W?ñR&Ny#dvvr #7LvG?(< u1_~uvx|l:5Ԛ/0D3jbc4A1I3]tL~(|{6j$ql?|>lTotSRʗ`;LZ^,H!MFyp w&tRĎ8??ƇG@ פ珗'2N#͸`#1&jri]iLVx~\,z {|G 2zB #>N]_ ӱ5d;}: *V+cfa1P4_} )U"Jc]x= J??MV''ɗ (xB<{4ʷeai,fJf,ѩmiNWhTBtM n^HtJh6NjS3 Gɮ\Urg$"xj>;ZI{b*H*]t=d.6};+t35R .WetrFHD<͗4ry͍q->\f\1]O'b MC4<$6h=CaEm\7X-ӗ.9zBŁ** IntҟEj7@0gF`= \ >Oa4ٮR !Kِl$Gy롃CD=Ʒ62ӫJgwfM'R&\o'3e os/ўCܽ,}MJa3qUPa;MUC'`OwWE 6F7O+Q :hLL&>wt%QUsRQ_i($aq -2)O"`55=kgYܳ)~ ԼXmL 3ET8m9ϢQ{H$kNFO)]Q '+ _SuÓc}C=  Ǔ *1%/1:,$n5 ؿFNq%= Rg.)šɁƪ,Hs TKNbLX[ C\g<uI*ژo&i%-{Qʠp!KkJ& 44.zf k28W_`USy!5`cڮclٳ@?dCD7Or4U @׼σgg|5zkͯv]_kǼ~ݯȆl7~z5ފڎ'jwDKͯM;~|_1DQ}<m'}_XG-8Deq~ ^v@FFyBrJZZFzFZZr"7Fzk`8i76o>ib-*(gp}?Ogġ/GD~-O/lgeB:.=1BC.oc@ u&Vvx|T*Bog8ZS@N0:kxkP'rxdxRqCܪ@RR"D*sXyć>Y|PUBJ!2'TkCsKGP.o- D@bJI;,2 klaKU6Z*)ԔT SZ>\4I !ާ(<@DOmQc lg?iBb<\2i$b 5PIv4݀ bg6:f_)1۩ixzYdܞjzK~Wb뇗F=pDZv0/*cЩtIKMRJ:V6,aD@9 y"?!5On-ҩrBJbrURP_[7P򢹾AĦaRze |/chSr,נg'%K{&ffgGfJP_{G:8|lHtfՠVS+[VҪ]lj:vb,H yv'ZLxrkT̔' z862:s|t~'*u:2H%Գm&vwVBG%%4&hdS(JMHԌtP919illE V.\/'B7xba~45)dFNgtmZ5d0hT B~)3zSHBK T%b:Ak }f2tYD Fh6u3녳uTZȋZdtL L܆L8rTጐoV(gogvA3i1iS5ii (,x/czNIJH^S ;><gyf5t2  ?NW32jVҤ@Td:46nQaKJXll!:vώ\.MRX=f?~NTH=2822.YWSIwîpZgWW 2>:;;r;xtY&jxZ͛4URt,aI! ;pY;.^{}ujV:udr8vw]vI/]maxnϼ 4ooX*L,NW?}uV&:rpޮhpޅ5If7DcVU̔~bu_>9w[mI`;|!} w$7[eh8znGY" +/׸; wrqqo_ޟͪqzo/O~hC(E 7!F"W}{k7*B-dr5v-Y+cvA\kx$GBCΉbٌjFޔV0Ee4mYxɁr$fjs\iT D(x/m5;M8wtymUg?rcۓBF)닣]k?AVVKxE3;7m;EQ/_Q :ɨޚjTr_꧵16lVEZKc EO|V4cXJߨK\3BB,ࡡ?AGWɌa-upTFQP͛[ HǏw6D+7g P Ds \OV+< Ζs&!dNF0ʱ3R+񵏻*\QpfyrX,A+;<P=\ Z8&.o~%>" 4ڸ5otJd*&Z*PvvSsGspEK܍L^6hɃ\V} eJ-Yh{҉m[r/M2˓.R8ըվܴ`6-&~!G3J86 _~eQHrW e-X x%_4JfE!q!ENm_kN^×Q-C|woqb2yo(toY6s)*Ƞ5&72TiE>:?;==pڤ#c>ڣZpTBURk %;RxaGO޼zyy~_EJ=S#F|,:S \>vdM [\'!d}+5h߾~Ȟ#Rk4i~,gLa'Q{vJgy B2fo_{Y !z*uʠ̋#x!p\RNiUk_p2OƽyO^ N@.x胣,RLf͜|6k>j!sZUKLXUk#V+1vϥmD?Cp'bLQzȀUAh\(4@3շ8{|["Wڧ'.hR0S&q?I }5B>Tǔ^J=Α(Ԧ#?t^ZL#_j! EV`ؑ5 jnX<)2GAO_]S?/D TrDf-ɿ54ktS+^=יRzEl|qA!]k5slGρ/t^jR>^CW+V^a&$AAQ Ţ'*z?ə':YB|^B_}'&J86؎??_P|8b3i89Xr7Y7nCbJ%Gk-уwrn k_WG'g·N4SM^nqAG'n0y]pFܮ+xw˟_\J0':߇W^BZJNOZZ0f "O2f4bԎg=V8G.'׈tzȭwg֪Z%`[Y"v|8qK#uppZ2,^ {L^ffKz Juǟπ0Gm~}2p?0KmٙԁY8a/JƁCbRjz"rxSݻ6x8z폯WNpz|??;Ik b%|ֽX#xgfէ1Mm͑2\{p4".opm6#. =qP,ǥUMRȔYhFcݷozt.wV`7K42mG g6 sNQ- BXLvѫ_Sw߿=q`KMgQ͙{a]oCq* B`:2Z{o?}wu}8L&K;2G߿tF,_?_8mA#X zb'v.:'w,pRp읿rGW^;,6N!XxJÚ`';q;iDŽf+H _L,s`CٺwzώWؚ(2qhxOt7ѱ"]#IxbvuPAmlvk=;5 Dc6*eZ ?VpUɰؤ-Z0?SJZ"b7I׍%aVp,P1',>D$〮@j0W@cgk;GVbQ9=+6ZFY&rV*[iNC4XDUhCL0OJbra}ʎpg{xU"Yj,x,K7:c}6 J1臸Qrk #dfh/FfF^'dK+]3t#6#;*YÒh9e ]] y4+F BGYpD iw|JIwXBজ1XJ f$JvqELWu$"ԲNB.,M##u = z-d˅;K@N:H˯i.9eLF1ښz?[wywIFn$_0dF~U?SRziq^):NBݽ*RF>H-Dٮ, ʠSi5D!Xj)W/Iȵ]ϑd(л疷DmX]n-> ` FJQ'|L+1los63Kk;\-N50q7%Rߨ|!aaQSY2ZZ^^^lG <RdM$įzS|RhhXԃD )*KF<jA|^tZdd)OB SP@"-"*Ĕ􌴔'G!HP@2] B]KFDޏ^}?+kAD09!G(DŽL?ڏyb'7 t70fA(G _2VEBp9kw){';Fh"$Ol󿈰ls U6vKǵ/_@h?PQ5w_?|(?>(ۑxϱz-_-c|H ݿ{| _Ï!m7Rg] ^CQ_ubEC"vh>/j7vEh/\i~!8  >=xϟ>~^ R3 3dBQ4hgBcdeë-"6#%#Q1?sY ρ=x |!={Q:^7rGgV7679kˬڢ,Bj`A m ._y@̯n\e R!WH%"T,$"giPc#nM(Ru7؏'y ^:0IVLO,d `K1)qL8"0FԞȑ5c-Zgf5ٌܼꦮ5 FKq7#: QfiŽRZʲ@9N6L,KLhi5/w.O`fD>6mk<"6)111)5%)YBBbJr TMKъj{RQ0Sl~Wk릭⃰'9CBLN*Ś'Wo>}waVgt]|ë|=w}2!U*aS2#ACk.Q/Pjt惷_[O.A{wCQ:ꥢ Zf\@Շ^|MW{*ư5n'ɓ߭aO~"lQ\^<8}AQ2V7_,{nt4nZT8uXJÊvc5/t4Ѳ{d#VKH ]* 2h6݁Bfb@ הff Bfٴa&y@˝\\UhhM-hP"Il9p^X* =&Qg3Xe hЯWj}\ dԩ$\P|j3CF{InY}B_?[H+kN=@*d'S{h˘&Gj{QVn65'(kDӪ2Յ$6U*jO! RQv3΀Y]Bofz~`ZϢ73g^; m0uZ O(ttfdl2Fղ~E$d]4 ڎ:"6*LP_uXMl6p4$Dž{KT2H_i\ J ȤR4(W.zyMpM`(gB@*c/\ f ʘ-U.qL,PKeFY+)Cô@NPDR5 {A` p!?*wbV1#x"(0  PpPB>=u RʗM}8oBʙZ]ԵΟ_NpFd /VAݣ= Ak+;uj~1 {V<:w;fT1,STaP4]8!}ۺ3G|-}al"?)GdHi`4ŷp.nd*wv|IY򂔞Ri NieVK؊i:hi#Uj-'(>܅J o)Tz<˸8)~˳ Z.M*YÂC#$6eI5K z̮ˀR<=ܵJjEήw.i_x,Q 1GFK_{t(N:v`$K7-Q8;-YYu#^HTq u޽:I[S٤F+Q@c3xCy9e>[ klGkvT_VA1\BV3]fY1Fk'q|w'{{oaP Gzel"}k;io"n.k$bp] ձ{?\:!pzl[et}?]<;sڴjBf\ &.ԻMNMaz&.mQ8_^ǯxu#\}?=;>=;k5<Ñ_P2+=ٵsG6reFtd[e܇gpcfԈfW@\><8:<<8pdl}f\owIwHtJ 1-<#w'x ; ʺν=U3VKN\Yv$NzaO,f9&_͖ @f9ut2H9r?Qϯ&zZ"}d}õQ!)Փ+LJTkSbu]9s<=k4LR(,a'} ki%7&fx]H4ݿu\|wh6&jo71U =tLJhD-iLd 2m{~{_W_/l&zO1.SF|d]QpczrL`0l6ˏ_}??ٵtfE//ˢ(Ui}TĤVUi4za++Wѽ7?Z3;ӏ>\82e :P4 ? |}D#ꋅ"ڑuZb?.?}|ug5HJ!to#YN[Y`iZQ¶D2~+lnd|^r*Lm2#ݏ {Y5YSHdJuXcW/wU#<ˏolT+x}4@_&DH?O-@k^च-W{Q͙ˤӪe;smE @r&3b.Иe1L$b ]bZĭS*el"#͋y/wY!~ZЦUCq8J%_,\f`$q9 O("Q=P_L8OTMq &S4#K*E͚i)"ƌP>-u<:U zD+(hC-eo w{G6e-Ps)pt s?ܯ(|wp1OS\j#bqxzI]p_ki2ĬfX_ӵAwvUX=eD#%deIZ{F&:j<lJd+=5fQ)<9n+f#`j_Q11XKI,1qFzkuh0&n@}šϨUg.@2-EgM>Z^ІL3[{yM/3 b<#t,J[+c Yp)XAH¦uB2Y0Z} $j`O95Cb\_m,t:BʯY+$zZ\fD>qOAh\oiQT_gOTTwNnK%LoS!6!."e~".*Os'O={$b#a.f^ȨhDZ:CXA|j$u-&Bʡ|ĎPt Z?KF"hϬF}\J ~ UR#f~/6ZȠGhwz92 uM=B l1wЏ |UTChvP3?7~͏k7O?k'Ɇj^ w?"?l~?~ۏzP}/Q6Y^"P7_q{{+?`髸nU!`,8!տh#_chtL̽][4)W$銼cL/~ܣϓRR331i) ݏe>>Zg >% ܣ<9@/./&1)(~bïEFE{վ[`13#]-%dL򳇱>P E}Sd!#"c$;Q$xBgg55^_D$>;#GF8Se=LPѪTrT,EBH&b{^DhVOJ:ArVu†XW+ՅYƖ@ՊG;)| w8 }N_ʵh(2Ӂ2Zz&_V>8V!j1il VjB 6Q=չdLJgϞ?OOHLL j;FWdF5HKz #]d gVͮkZDc HMIINMLHOMM Wefg3/ADȵtj /6F+4Gвss,OT.3- C,6Z%G(fا5YҒ#rk*k*+*K rd<\2Ce>I_m{mĦ-Y4ROMJˤ׶u  Ͱ&ۻz{:<6CZ22}[Q'ƩmNOONӊk͕ř {fEE6 A*ٲև}7{ẋn6 /p$*D$sVY 3[puD{e6زz򒁰[ȵ~?|t[fS3mZUF!XcN3׷JRRR!geAX6ڳ\nVh3&6Z-+ OkC7R^Qi4pdJkrK5\; G~JrznGe2!=duwŦ`<܌:8Fw11SbSσ]Uod G< yYͳ|b@{xtt|t4lsbAfRK؝Lbʋ$wxK)V+SBj6S{ϩZ@fZF ̺[*h93Ϋ?l$R$Om aힿ|eSZ˶{xq Nd6:_jܠ햢R祚4|Wm;lF}mw//V-{Rb/_]_Rh2-fݬ)d2knPjϦr׻8 e'{>{uqi'$FW{.b <,ef{hUC"K$qzw0OpסYLw߿<=B?_p`zزg`=<>{Ӫ[jt@}wWkć5*,oBʠo./|i1XBZc>|Wxa|o*vHdz [oʧ8pz4 AX᫵:ۿk@FZsGXؐ#CO!(^k n'<[>ayP2.@5^'Bf`k|M<<<#Xf~Iie|%|K:WIŵniX|n#j? -_*u/CJ1DjH$d6^#cdJ_Wj BǗLk]tZ-K8A((ҪRgD=! Xau[Õ9eGÇG5[i]S"@]7V)/e*= ':@S5\ :h;:ċ>42h}K,sb$.0}6t 3=\\x\jt"d30&F\>8<:ɨXl)aX$#ƐH;UH/ZP| ::xBM 01 v{}Gؘ녓>j&sg\9\ZJ/G狕lN\Bzz%=64tOFlZKf! X(B!_BGx9=szr.73Ԭ{^鿻aOF$I |~zf{7T8=>d38mJr/xʅ`mrQvNf!oן_lj!kXnf IT\żLohЏ__B2DVQɳ㽽]@seTzB@0ߺu@da'jzlT8tߺ@,PZtn8 \nw=̖&Dnn03g#Y}oLj˔:Z]`q:}שa f5SƒcclƋuHVAnc׭!?~CJ*- áUF7Jk]M4&<gޞ *R6f%t*}<6X6=O M:[FԛmjѸ)\7*OOyl ЖD^o.M dM-w( KhUGiRì!yAXW[n3UG6E2ohn1pO"_j&aZ4t=\Ϻy#G)韢k$ \H9<=I4WYўy8>y(*,ނTAؖ\6H `&h>W/l5<l 4;iŜRJ06pBRTZG'1u; >:ԭV͗b6@mgت -! kdSP['GE`s׻؀ p؊9^uBk9Frqv|tv;mYEn*yMaL;*fQ%򆸷3f̑MJg;!gphϰfbVaaO'wmmE~kűmۗp}8Q #x(/)YqĞUT\3%5Bgt:f83j2kSt|ɂL}[Ť2%TjQ-:f F7ЮK7W' [(sU9_#Y8wm-4ndS7DCysyz w#Z|bN_,84ع*fdT ކfG߆=ՠʦ+M^̏G'Wq :~+#[j|uqKEY Xyrϕǿ1VCʫysI'Z  6ړϮM=l\術J{$:cxnۿWf8p|_.(or[5ܱ L ay'5 Ւ {Di]bפd/#c^?>9Mݟ|nm3ȩ!PnB${F*X] 5w+A(TWw+' }n'Q$M0W>?4&7xy0ifI5PEצ+R:fHCG I-a3*!蘽,6}%\ݍ:Q+[/ˢHvqv<\) hyytC273]|ӱ4TJp8J$q6&RbCG-fbG'{4ܭsBJË7.r yi[D`pYćnS^>VNogQJ^*_F[17̷\=߷ۭzp}J$M;k !i2zp]jhdr^"2_vAN6Qxo(2=G0 &eFȖ` N"O.z1K=xjptks93%T+ƸhT^w(x7кƳiP7#$~ ]3#ј#}jAŜj#DE.L)ؗ'8zauk}csuyuiq49VK~ԊQJ[zwNL/ ɑ.}ZеB#M 3ȱt4@-jnjo."'>sh@l+I `WD #;/??/Ne$P7?FrTD fqORSR?yx/#4~%7U @B"ެ*"H CC !-ſv5IUphC둆ZnE~3fEպ]?3cg֓@:Ә2Vo< .֐댏{kA?.׊w(z #7k~>~{/k qׇ|-k~?~Bl^>N |y _Qb k݆wT5%(E j> { |ׁ7/G} e'|Ezpw_kHG&(|jN-h#SBlS'|`O]RH[t콸~(gO?@_ 8 pqS2x2-++7'NGD7P /( SHsp<_kno++"aRE{U9d!D\;da)MCs,&gsssmuq~,LOP ts;Q }h E"L&zڪOGP/Q+|1RۆfVy2 |łu6O(KjJ:5ZFI}̋|&~ %{DZmsC3imTJ8 \) ĄaN߾\L#8$"1vcqFbkKIOL,1)w-h,zs5?QW׼2O(C eT2R.\RRR3-Yϝ-=CqNe l072.6,7[d̎3edfdDl&&#=(kmz+!pܮi֢\åf¢ҲFVN^an6LĤeeLݸ>LMF3oݕB"R{yF?VDLINˤU765t4756UPXL&1nk2oOD|}H0)=BfI)[X^lΣX {]oM5Q{`t9_ MbJMB8gᬰVV;;[5xw]!`C6DqxZ^Hh3zۂ,.LN+ᵹDPɥ­%&W$R2PH!`Fβ3\*hcB((Hɤ6 *J7J&kvl'V(J^?r{}:ͤ5ƍkd] n^9ULec*ΠךUB6=.hji L6RHam;F}';AZwht|^Z3[iߒ5j~E1^33A!wϤwj}uw7G<-ʡ4|~6-izv9$kb3AZْ x,cPa &D`LDIyT\V@ :Ⱦpd Ty)dNs!SF'`pPC"{6Az:.eA=Gǧ'{Nhw@zHLf-]D%Zwґ>&,6f^[(43E:Y3M`yz~qvkװ'Ei5zh6A-NW_PY[B~NbZLz[]˫ vl0ul"f_3ؘ*T=AAv3V۹wzW.veTh0Z/eZ flVR Af9~hp  e,6919xsqvj:eͻGǿ`|ɝ J)a$ ElphvN>uvV9oDOBZ7ez/szeX/8bRoE_kJfUZ Rఇ.|VзCfЩbTE*b2Cz\KqAӺz D:8۲Wc;e_k?^#S-$t|wx| Z[dN1$鯣4FpZL,gӉkʵCd鯣6z#^{fJ0ӻ%h x`0S]lDnW ^գXlZ66_Kmk=;ruv>R˽불nUQ|>gYmkM| ~|څ'YPjŁ5՛ <}D)-Iw=I!qmF~qIk!Uڃ3}2f/v^]YMlw(h]3q%2- [ܔ!9 ']vݢ 㰵;v2ґƨZSJ I#; 'A=x"6;8bT\kyC=AcLb݂얙ƹ - upxp Yr1>MD쇄Qz vW4!uƷZEp}k+ZQ;OV1lZْkˀRvZ!X!X'TbGƗd,sEsKhx2 (k ﹜6r=GJ& Ӣ<{LhFΘ͍nBNE+& .]ggȖH!d8Ga0/PZѾvCdr͆laϿ!8*t˭P[nOض2bcy "v{.OG2=7|> zU]F=_ :p;lBx#YWO\f3S8U@)-\o{͟Ӄ=I_B'-jqm(X4Y5܆mOn!4ʴ M.@q ,uPcrV-76|?=lQO@k8ʍ,bJ3R +ǦUq&録|{kfdzGT} : Ŏ"vik4^w|[Du$Z~Ъr-6ZuU%܅|FCOΎl*DճAkAi N\@/x1Zwg'~|pjg֔ݫozv]GGpqe2t?D@ϚX<`i#սi.;U>}4ؓթqw}w+_`KƖfsS}R^W}tA5@V*RVkvZ}ywOOFxym3Rh= ݔ'AE2zN ZY$ kJx(첅mϟ^̐F %tP\(On!vrSJD<)S()Ԑg~]:3c: B  G(^cGl| Ǥ9t1BelŅdzujL1`Y-= *׿6QoZxs-grlz~xN«3tnL`w:ocA#W6Y̻hC ؝ *Fk]+Futyd 엯Nw}(YmΧRxZZ_^Bt(z nP$rNui[gnˆzvktpmH"j1qAHLƬwuUCPDzq*W ilN0rze͹J ބf#id0ZhO>s_ \HM#-;-MY,Sqx"X:d'jcLzF>+#Tu/mIu&Hlo͍uWgF, d̐R#y퀆0!(e9<P ʚֶ9kK s̕m:kpY܄|q>Y dG=J'4t../Y%k93 7GLc` Կyi-3`^ddq*WZ;4:66>6:Y_MLOxS!>zJdTTVWVo{]皡%z}IG*#\Wbŧep_HMx(.:܎=" A~߯[=|'=@=} 5$A>,B Լm(<"222  Mx/w A0jvb{pRԠ_Q!W(ǃC?Ï zXA7صk5W$ ZA}I ~u]_W=CwK2"huNxܯvk`֟A?o_k~E/7^ioDf(Լ8 ?ۿ90!Aw~{=J"7vM3WB % |ϟf;˲IOG=|h-$p( ˚&9}[Xwe8J"8"[R;SC&w~0=O5䧄s )eh0|JzrbbBO=xZa}jgkI =Ѽ_$:,qzQ8oғSRSRS3S3p⦁.\rXkN *H u{Lsٖ"a'g|oFt|?|1?<2ǥL27OϯކΫ$L{N~KȀ5"$KޱGtCN#|ukXkqxBW?)#ZKȩҙȔ\b5bw/~/NyR#3:܎=dbsØ7G&+x=ӛ = :VM>l]}DM;7z{,ZeaC㍱ o\NӔm|':4`lM.h9zO.wtۭn)8 P>b3[.ǡd[;\ tȘHlzrf'w󄰖VZxmB@0PLY-@1^[5soicZS7,3y`ZciɞȄ@3YWov>s CwRϩ1`v` [f$3f3B'K 4Q/e_sM{Nkb[UVI yT>isYT ]ur( TE ݴkA0,mWzfHթ 8}b'ӮI)/#״l>a0z+vr[{+JDP۫˳(V:X2x2TkZ3O-|QӅn;\W!Hũa3[*+PcK̭_1UF`Qw?twh-{{ra߸ ׍n왣'D C30GM_]}ۻsU5VAgEiqH.\ ԎeC[ݱG >fyen[N8 uznnϜ>&rѴ^1}FVY_ {p\k\$Yno!naDGs~(.YjYxVJ-010|wZ4 TG?}=?9XP:w0ȁ@rRՄaH TcXLo['7Qo/N|dDZ|LKʞ.OxUo[]Rd!E65ןW@o{;km2{`=!e0-N~YL`EDf}}8dR̰3Y2O+땚ˉ#H~g ى߮;>*eqs{rjhQ|MkQ'g]06J$,5| _r絖%Ҵ-ꭞ'^ÍN2ߝBİ3Ґ & ;Vo3Bk]_]_Bz@j*{h9?ӵZs}Amr0Y'^9}m`p$-TcXiK= qȻg'ת[masډ& >8$]Q,Ψ޿Q1QG%6l{h/#M|Fz1R3O-,k;誠05KiH5Jk%aȵTfEc53ccճh[Y$N3}فEfΩ} _S N/A;-3sJXfᶠ~p=ͯYQoo$\F¸anVj)ksA]Hc|upK2FU|D_.{?w7lǢT/7{(NCT#U:ªn_R%;W_󷻀c}Blpͩ{oK%oҠ(vdIܡKP?>O+̾'^o0Joyʩ:RgJ.&ty ew%em[ Kʴ?]MJ*-mIcsH8|rvXTTTZ=u B>wzӅ{eJa;y?~r,R)3[W(58!Jn>aJyn?_x4뷏V Aninqh!Y,`*ٗ&L ;s&@_~t]8?ˠh51?  ^&9yAY.0 ejZOn_; Ai`~kRRX޷5_15#s7Croc[wdqξQu xGڍzjYIY#_*/h`A  ƿ$tVJeϒDc ^p:i~Xz]zI.+K+sRcXN3wPSr*DŽ9. m3=.s?ޜd AgyF"60Pkg6+FoEHg6c_{" DwUIl*O\^rƠٍc;;1 0M RNȖ%``->1ťTI*J%kz$#}~}r6^]aLW5.ʫdBZ9FTN$_"X'ݥ 4hSʄ5TB 5,*U1ɂ$dFEYLZZL%D"gjuS}hsUc@8\ (uJ'-yGu00!@n/_D'P(DepV kc }ty"M|31CuPXP*_խ d HbֶNnMM̎A*6m2ٶW-vP3^Ԙm~a,nH吀7M 8#s cýU,*D!SzZ1cyɕ cl$z~hC# DHqk[G3-,:Pf"4!UW&B1K|Q૴* $eHTfulW-oYLqr ^ 6{Xj.8'=/Yh\j9=GfT6T@a:祻;fn:x cM|B(tZLO L(++'@C&ѹ9j~%DP?+#c2 *Z2VǦSti\k֧_FZPQ&PL(xZeT(#m MC3J6f]:%++=_jZFVZB"-n*^Otq  Ucp&8 v#ZZ]20#2X,K`ij\ uFOpO۳rfU}pE,H廢݁:%z+^ׅ 7T&z E( a` B6\$2H TR*DBb vCx<2>T~ohAZwx?`!'CD|ؐ#~ :4"A7_Y-Dڏќ:K`3ʍpq> kȠx_ &:aP, ˺[r20ӧɉ '43Gʇ.s?ci2^dfeyuVK0t xv '9C:qa~-4+X3Y,&F!Sgiɉqo> *ZxS@U4v MLOM 5U1ɥo^fk8<a8ԂeisJ(MCӋ-Jh4jR!,Nv6V߼LhdEea qXAKY{F0j>>6#\4%9ǣ( %$t$A.ISZoȮoYnMLLOO8 *VݿqȧK! V?͢v\ݹ0?Rś"L.H%PK5 9]+>|YBrlX𸤗%Ӯe.hv FގL(JvgG [TB9u `kH y`Yݮd]]ᲘM .tJtKSZVau2D!#ԲRr2 PfFq 1$Rγ(5Am?].HmY{֚1MzI2RuX{hv=0Mdȱ2ٽ(%L**v;4\h!¶ WR Io6@  ^\Wuv'pzVtJXc%D̒$IY ü#Tc<;;9=8 V]~ nf6lo5s$`.?! ^ҾqPuJȵ| 0.;n̜r~}q3n,9} npnsˠ4 6 h JLL+ͺ1F n`Cy`9+pyyu}sm닳Ӏ=>@9Rϥ4Σ(tq\>0]_޽yw,ݳo\UpёNWˤ,l~e>B'fhLn2&<@?gykJgun?~>; }9|rȏP 6QxhX"28_~F=GXt䡻EK!C!0bs{|-3F矾1^&d\8ޓ]g\Q2bZ0U_~V݁ q`Jv0^33f6 (!xHksxWߕHkRw1f 60f=JXM{(x8JOx]?ao 'WwhÍ^nϩ7I\*8V ؍P@iyϯ1G fwgz 5q~V'{qFk;\Sydҷ5QWxhF섗 rCȴ{zs:lrhHyt;&xlPL5pdaD$ T7ɏ`Z+Pr3:HB[0@`})nj2'YYI0߼qmX4X.?" -ne6jKM+F7)wԲnj}E9AT+y &Rly/Qӷmb:Kk T0L? ɬ^fe rz1y8?]zvb0鼹@PXU?Z3*Y1_T8XVLHj뫋Sa?Ryݕ8<8.9H۩U| a2}SWzTV(_Zo}uݬqwD"v3G&Y w]m _SI8 }Bh30ֹiЬv9zk!SԭԊe96u/oB֭{ ˛Se{ݸb/7  CSF];1';z?:IFvw?!o.9Ծ¥5l5 i>ACa4OHk ţ:{D߿tjy,zԠZcK)i)c('P>p\ݢy"rn**GkQ^&ccb"scRnʑqJۢ~ǟϟqsB ]ܡ|? ӫKX1'pzU3g[6`%0"=M:@-!{;]n߼$W.֛ #zi1I^GV reG|>łFJNs;|T/?VF $."b\a6v3f6`EK}LAw:l[faw鵧뻦1 )8|ċ6tv k!۶ S'vډa4U=m\aȼYc,Az គg˼XG#VmjUfn> Z"= ~18@<=;? v|Lm2" s`m]d"iҮ_16Io›I5;t21E0P"Moܢާ'ۢ\9 FiWL{u21} h%Xy `DGg"Dc=KY;t+u pϮ_OG`Bl+Iye(jx” \۪mb93隼Ȏ?1I,UXՏUvv\r_ #P IzQp,j6(,pBK}.]]AKwҡ|lʨx˨Ӈa=UI9ȢVͫḑp/27ؗ.|Fmڞ:cԹ+7Uk@%' DW tP_//0Wnaluip7+94L2Y}9>ַ)rDa,%oϜ{cŧ͙@8̥y+2A71, (O/nZ kiY<;z\N7t?s>4~㏟n\ͪ&J9_9[ n *:rE#RBE_k2v>^Vg, 6jYQ".';qJ[V6j yv?r8_~L˻s˰M-)oeƢq(5|Ć`OkXN?ågwmZ/n/>`msDҜ?P2#6ҶeZC^n1u^qhXAӋ_yW?&[i7CUʄD4} =R('lؓ2VۢBdӋok:Onũ*VHEy"ZOH)gpiPUZZFtΊ#^ߞo,߀Cz/ S _Q-l֐`kDqVt& ߞ6u@.c?ޘn)%rj[qFbLC`gż-tJyC b 0^f^y?\ϦӉ~|s#BQBIpEi` l/.9̺D3[Ere°.La"q"fDBށ89,Oi\ja8ӬTѨT2ڶ H|| ;:|Q8tH4*n[(5cϩ['S79] ܲTn 3rS8ZC0ŎMʢv,)TvL%鼞ETwl=Oۛ3M,2L!ʭrM `!lN\JR$NCĊXJjPK%LHJ\f"Aw7ZH8%NZaZ"#-C3K  +mt ٹّ/wQ`(惉"ar[7Ϊm]n`Q$* 5^fv Ș=AAo:%%(⫴& (d*cxauIJe7Mlt>NnZD! χXnpMUuU<CaTNWh2p3oYߚKG4P-)Drk4׻$Wo˦Z+r"mhePɀX՝Sݝ~v31k?§H_qҪ9v[9 z)/-#PXHySCry,1l9"v8~^n]hJtgZN5ޤ'aW]0TN\\BZMHը$+mMu5evoG8]Y< `a_q )DN}HQ+bڦbG-]_=EưOLD+Zph)y!k|EPʥrD"zfi3vv,ZmUiU@KQ Mt}sd3tj`yE#[64xuimP̦Un(:W64岛 ;p (8ڴhpCQnhO˭R:l~z)Y. ڴ 2в8 4Ҳbﭷ^@0,ڴ:wD=@ >0ZY͆m|oCLr C:L/l^sWC9NN=%mv޶teFf i}fI/U<WٌF8,3lVD/.N݇9<9 >۬`pxkwiЌV?Kz匆1>9?ρCc Ep{Zf.&ZdX&fh, wY7n}"fvn͙ |84Юp."aA (*Md07<{Iк5cxB]}`|$݄xxF8,ڢ` b[P4`Xr5HĦ 4:d`|pЋSU8{wⴈv+R bԴ7XAKm{ x$d_{ED=ȹhnM;E9v,N!w[g쑰x .4qmpY `-2of{ OjF1鑪mL][߭:6l*͈p8sB{oEL.恚ֺf]r&(G&e,5ra;;tvIjTFlGXok7ɘqq)EmcHUmӘ2mclu*GV$4vw5ɶƅ\dا:x3 ȴ;,{#D9o/B^tx-nMw=Kttpї1}:a\j&oo|n\ " -./B>մXiq{4q01v(l8\`BL sىpCf^@΀JQkl 0sP0t L]G{K>2?UxSf]BBg!Inl$P/R\Ըt\ >F-?Wi ^ <=?vӵ܁md*))=qpK^M 0ۧs֠MWxLfpp5+41*euq/~a@PIM? tXk\`L_]_\]_L*nԮA0@<":1zf5yN=9??ϷgN0^\垮/sz+Qt.pH:.brH@b5Lh7:??*YwnO-:ЍQ(^)Vl ~??_={T}:䵛\cGZ?-l^/Hڿ>ߝx6jӥ?~|swMڕ69ouf$14zNcت73okg͙-ۛzۚg[ȌY+Ľ` ۭ$*uqsn~Ah[Ϧ[3ۅ;#dy12ΰo]1 ,Sn0([hTʰvWV ơ'.odr K{ՇZ:&jdng88IIvߣ?b>I7*zrE;vd2QZkuv=}b$:f:$BH?ͯ^fhjgF(vvx쇒:5PWH\  צǮ{//@qf;E !맑n&uC) ѿTAeFJk]MkYhgQi JyᏜ7yY|Fnn/C.bIi5in1bpYMr(7?g ܢ=;7uFeyWEҍN#N3XƦ2FƂ8֊%ft7 `Zr>;f<l1K*SH Iq/K;ZKğmȶ3 2fCSm{Lޒ.V|)rOzB~ lO>ˇ 7+́Ͽc WDES\ ȉY+jm=3cv~`}(:..`#-O5L-/m/wdc@q wMkrT]ݵ`m~y?,v4>%ޘNAA0\ԓL`_Z7,39]v<&`X~snwVSԲU<: 3$tV0'/%#3(ί߾꽷pwu6Z$7 ݚbNGOVkR]@⍉wM&g'7WY[P]0[]7!x[h17y%IT{`q. (VȱpQ( 8̷>xv$' $G4ۍ{FbPEXG 3! HF#p1Q šJhZ jĄq}a]jp0qHcvMIMMM Ob<Zt!U'[Cل$hjZ/3^|&%!crD[ 1c to.ۥe<),!(4:40/;  "W#W1Cpln^/x=cÃ=:(K:p% KwH-"}h\V63c<6! H5M1ETg4M&bX-faO#^n`fHfe| ^ @ OWw- &\Y&bqvF*޼E}vX Y@ Xș%ܮ-͑vU|{mHX#U !U. /N3r(Km$`ڕ-wԲt Umkb;wEsCgq cG`#eaePc^߼uw ʩ#[Z';/R82 ˘gFה]6XO++,((*,*}&8\5W}͹ފIp NpZ@eN*m,Aj_5Bgh4: MiRYYIq 66횕ʢ(8L% O3˛gnI:XM*))#Q\nUm-íTc^rV>KXLz#e2׻B.G'ggF{;z[*L @Սk~N^z1QA4y(x%csgP wnC}}eyq]ş[Zm΍Ur2wIkDptUR&Hf]D)dBDwTcJ&  :SNLݍcOAwf]Y7@aմ ̋4{G&ٸ-Cx|ߖnհd"uagVזUOc1Zĥ5 vC웬Ur{}Ec:z _{iEb`ANKʰ̸;YÀLY?K_; [cZ9 cq 1&fW.%ml3mqCήF _K/iհ_(m jvi8K O^ІG*Hi4zG&)/baT0>T-XSb,;^lUd? 鸧B 3f9k=&<ƼH,HGr(iL[6d̎FV],0e 쬮kT`6 Pr:l.ّdAdӠfcmMu5*e2F(Uڽ*^i0$K ^\xlcj@j1ơOkX۝U7vC8Nt;V":fGjLOSKdUVIC5.!Mt=YY_߻B3y*BghK`= ymFhChٞoI '? (}br[[?Sn 3coMj ^ݾ$xzvpY 򵞦fMؒNZY<̩nK`Mb \HgiG8-D"&6i㟿}%&/H$trvrn 75pZ6lp\_GaFe?6x%6kח@OoCZNqg_GXvsFX3A@uLJ_nB&~+uy~~~:;ȇyNQ3ߐaaYg>a{ήZyh@m \ݹS5XUӵ9qcO#ul ZUn4|=ն;z}WneO9>O_?E .y}pm\ڋb>~ϿxsjlAhNs'p}X́xƓkQ=ś?eв>ms"?|p{pC~z^- J2.$ŝJ;)aE4?_?ݝzƷ-w?||{|NJ*I[lk|j^$$*c[ggBkbxݝbEw5TFe:Q7m|*hڜ}w?#U}L60ݎ L(na{ >[z-ugQ-r䚍&C| YaŎ X*8c6);r; x=TNTj݄p(_T-JT3ǐ*ĖzRf4n q+(ۊ9^^z}D )"(?Qٱ S `1k;,jp[4|ok2JZrQߣqF$GΓiYT: 3Fꕶ"Jέlͳ)^O1SeȺ'ajV7ASD82 =-o[vje& joT-Ui[ʵ ("xS,~nscG}gaRn_ z:qYdδL4MZtkƐPzǷgvj ,N.$ "4.znc3J[W7ˉ~ 2ۏ.]{jݧ[z}6pVNc!5mpGYj12!5v9U_ywg?ߝ6vMs}a̢C_ۖ%N׼rlZl.Pzwoof5+Zhq`)/#:Oe|`}[^ջVv/ ׾v l}fÑA/_hd4 %TpEO / %yܞeξ OB7ׁ=O/OOOv^-j価HD CΫo,sr}K] { ,xuYг)&d&FO_I&eaC0H/UuN;vLg6xN(-hlm.TơxXm)-,.gT4,Iw-vg t ^vihЈf:+Ēyxe2VP~ niN Z+-&RL^ߜH;vz`k3ղ6.B()NlɄL()A*:c޷5W]FRhX?\fq4 p#NGĒE^D[A5xUJ2ۆՁ|52UʼnZ&J!{6R~S<Q&`lKBP9RQNfШʆFXv*L#8j(;/-.aA'? 츧o蝋 P%L)Uز`}vC#Q$RŠPܜ)ʈ0f&kpp 4Mh0@%XM3 ,4fdC5X$ІNhJ@?r`Q*5ЈJ̮m_6Ol37 \%+3JH8 fpY,q@D&ӹ5MC5L39/֨f{iyHL1 1X8P;$V<:QhFF!_ v3pvH182fu}RJ>YM ں s6Zazc> Dd&>vFeՐ zj1FPo|PU@Z }'MԂװ77D_Aİa__GhX5b+Aڣ &$Ĭ!P7Ӕ";N#F 2o(@coa~ S]?>L2ч׏_x$k0I.מ{:TVj+9L 'Ho|RND@a^5]SK+kkk+K s=m 7(#F9 -1`8iZFV!wtnE$w CV%Lu6pIRhՃ5FO0'f4.>!)%MruS7ZvmvYM]`nQ:#5M|~F"f;F7d&vX G{GG& q3M" X0#>KLȣ5.Nߩv-Y[)V1i79pzO;m$̒9 ҕ&XZXTXXFC3SXaGu7ё}tbkB0ph~^9Df]Hgs%R2g~F>+vʩ.[R^R [XV\_XTRlvg{ΐ]<\[ ?bވbpKL˦tIa>>2쩷V[* G ;@+@qcfBa:FVzñNNB~qguVg\'f16;i?+jZ;wiTv]\sh{Cg''WA}}zN/BPHpQEzZ81"YBW,),._,6`\^}-4p85kg27fBX1~6>amϾ=FD;&'x~uqq~u{Mr`|:h!&J f!!bY|''!ۻo*L1|i,Yĥ,X5CP$xgAg8QcoQO;ZZdS(6./iޜ߶588C{LH;Z|Gw Bwf7tz!k};V.FyIqcpgvDC,>B;VG&مV吸JSmܮ-nZ`2[=0t>P%ZkoUlY4u9i l J;T sx,r9G!$,S fJ+8?@ ڠH1\ 3ftuW@qcn ;&zw09)uisԮp\^#9g'S@X_ٰd[, #U0W397BkCj?y!B`o?V4qy#08~ UOx CQ71"|H^O Y `Q! + gwE^4!Zb \h]i,kU.EH#Q8ӢNF55jϿ0%1>@wW硓 zWYr|,$.";7;w1+Ө;cӕpO wzv\y 5FZe8|R^͌ sxw??ߜJkψstCu q:)RbmH>/i[ Ua|Mq9t`b<2ijEb `t)y-rǕ&_wz˝LPꎋdX5ǔ&{$neҨRSD) k8t e6'm|;KcJ= l:`-̙WH ţG?B AI9Qh1|mwyRm ~L'!IZA%7m6FYY)jւՍ͇D niZc;!ZֲHqp$8bci5_//.)85s-\r9oTH{ QI[㯷5==fw8rL BI)//IT<&xMA _J,$I4nЂP?X%#kfL4YˠˋK%RlE$ka59.53,ܘo,+%TvC\:40U[kӃMM!*6Wɸ4fbs>*yIĺdsG @5ͽ |R4=<<K<6B%գJ)IAa%8,6 #%g[g|#HRJ^Kxok LH R>V >*4r` dv-e[ "F5=c=-uL J#꧶ԲɺFJ*ҮMl<.!-b`I$/D*B$3Ms ]ͼjl-p_YF1C 1b=.1^,Ԑƪ뜚8 |'}r?N~Y%b" X  S/H XH D2Uc@ČHh+NP+& !c<&o^KdbYi9PJ6P7Jקh N \1+^`Qee$`TVNT?Km7 QA8pGUYEL f*T"B8Ս]JV-k$g?K&q 'XY  Ș1D RXio57w Ί=tevʕU#g8Ap,D酴5RR6g&g斅rZv,3kѾEظ7 ^ĺLRi LP>?UC4*\H( ;FČw,%R\*IR`qj^&= ^{Xha0S||bʫb:=:5879TE/AX %F q Ii$feMCKGwOwwGs]U/NWu"Hhśr2bT`{<- Jj'hq_kHp1Jl|BbYor r_gHPq@Ӹ<2BlT1K[)c2Q7c $?Etr#YCơ'G2ξdE;TA|,-(`ܐ:e i}S+".vqYfL03UK YLA5ǁé/)uJ&oɕcMzDW 1yxYKm<\/Kvmð-^ik[:zbvV+8-i,1p_ <%4KХX>Y"ˋ JzE}ȜPeyCnluiVZb,F[RrD"~xMgIk^$'<<yݰ3t͈@ sz~:KC nWlt5ԲYm&>=ؤLƱ]Fr^keLbؽj*HoU2W[!='_kuyy}syVG8{}xHInJwoY=iL @|"7Fef?=,{͚a2x3YCj_|_KT$l_cUyIw0tz~t?N%!нukGN #:)Mv]ϓ0-ШY rFM0ׄZWOQ2.ܪkfqw-O1i.Z<ײSi5n6xO0e\UM6w5PF4ԉ/H}c4=]10t.i?+AoyɄR-q1Q1T]8힀|q{]|by 4ݴ`4/|4zN{$mBX Z}zzz'uAm֋g̒qVfjd Cw)E˻QG0x Jd׺U43ՠXoi.\BzyꞞvQmO庼{wL|^`s}mԶY>U G"d.C`Ю7V4¦}h s~Ooρ~x:w}Djk'-Гg.c!Ƹ?tbXNngA_4hݞm1s iJ'X/g|v˯_}J[;;ڪiI>[L@ZR(ff%̩8zooϟR]y[j+kv$U-8Bc MYYp^޾_,a5x'<{oY;cIA8xjI^EgUwGk7o?|;mA 5}}:&e}gj R^=Gu3]U yO.u}Dn///B|b(vWK#2Ǒ&h;1="Wΰ?O??A&?<ۻQaGw YIxnIhW4/_˯`\k?ZH;*&rASsӢU\lzY+,O~|SwYajpcekr?8/;u,1-fYdr?/o(˕ȸycRg \D,^v(tV%#e>RԠElja͂\xFHo^a DU-7d$Bts1,QFrO1%p f=,uLB5yEw=zxN^—IGi-ҵNP8L*wA-_. =1W͊d[M)smRnJ"U~ՠXfPM`~΅`vbe`C"76n|MdA᣾pjHѸ-)O'mwڙtjJZ<>+DLGlΔhX5Զ{xz.ƸA'b g6Ï_W[(rwV*YDLCELc*\ތ@PryM\Cx i!10_)[Z>$-4Mgg^h4hSU䒼7obj9+UN#hۯZf Y9y̦%~op on+cmo}"p2/< Lp'|xeaNA U3)S*wƾr-, p)ĢܜUj{dLcL-8~j]<*(,#UcK+ ^8\I#5/JPA BNT_S7Dk̢"Ĩl[T[2)iN%M|mD"C/bh?BkX-QY{Ǩgn@k_@2#'pW(S b#t,2 tkTxnH#3HͰDX݀<>L!:ɃL YaB얔4)ՍÔqz-/vS"nor9o@v-=lCH#d, =&`WTVUWrXuFa!0 '&7x<1`<+©mjU #p8P0Ѝ FP#,H - 'SY;OpXR\\XT:+3+̮n<'vT 5BEZ ˄;j|" u52TPWZ^R[\B 3j{7wLMzj*:-'?/o}ǒjy@ &͠RKIeű7dη_Bz"cZ3K"(LNW[[]S+gD.Q1H tU/eB脴7Ε,lHobniq~zbnyero`hxa)Q1ɧk#d4`¶㟾",nP-Dk[RR!毮K"pGSuN֍|+/=c8wN(RFHBgWg6=PM(Snnl:V0R[fШܾ=sLuH i6a2no' -vM6l:˄R$AޘUU!1`?b(RNzAh^ֶֺM 4qcơjsc/֙Njk-U:nDŃdTE/%@ʉ-W5̢M?}߾+Y_YӁn=WG[jk*I߹X<y: 4>@;W\+4:}T8`|42*5Gv^eO6P[7MF6(n2f\f#mC+  }3X8!-/SgOD"/J;(spUgq>7NN~udkdy=kbqɯYb]^R k'>?";Z@;Z,ĉ%cw 2-Ҙ@׀O AryC9:>eRL(9~ d?a9#KMb)̻00xC`( f.k #_|J>o^kiDnbDat)4~p(} M*h`ZͥC4_^#9g~h5ԍʥg'R9$6V`| +7v[hXDn8 7ԍ(lK]"9qPMH 5pF O.sCH>XWW;,w{i!g`^ҀMR[[96,#0E~~z{Mz/}Iw7g^df1:-<9c2b:*5$0O?Ժ9㹸:wק^֪x4pi3}m5|TGO΃Fj{=9&ĘڜcLbQx`ek21iNhh4 z@5j 'G_nŔX&xT[hc|ǘ6vsmlOٚ@k1R2=laOGm '?x\ehm#3Mz8qI"^$QyI|o#ä,uq^@ 捃i6{B$>^$@oAi҉fL:_ژFP:UYhq|mj2w7H9Ƞ+>d<\'ȯ 2fK;*:&RlNLUAjOk"ѣ҄0}s`:|[IW)x '_7/ 1 SZ2+ׁA"6(D Ő0S11>|-p:wJϩN6s(D\,ef`lC(6:mtsG){:j^>L L Q-JbBuV^ i`vM)UvCCk;Gx{ 0usbS"-Ұ ΃FDl,BkA#Ҵ79hH$8u=#ӓcӃc &XVJ`n3I(Hy`=r\H*t O/ vrt0";&l.ޤ i# ( rrkUD8D-#RU=0? TL"kFAj,k |44&4 2B1+j{&'{ L'D2de[(A1zLB.cPۦ6j@,'Q ^wo0 ܊BI"0ELTjL8ڦ׶@9BYY914M!Aƌ0T*6F_l, HCMgJ3=<@q4"ĬP%f֑Ɓχ;2 -c+R?UˤTP7ʮ[Wnk…a^ifjR[bЙ NUcLQK3pCYPK|V@*T<52j5͕WHL;"{ 6!brܖ%1Ș[HjUّfQ50= h:cc:v5]=.*rB Yg )7#9f 2G'=/q{T&bfbh7^:1 Q]ױ82̗'R2YΡ5x_{-<7#%1L1p =Lw^0cVƨmjhJs_QX<#$ۅP!=,+*4bI`BJ*W·ljIc +_e:"7 &.6P~A+A;X`Q-=Pw}̐["?sOXN0WhuAViڮ1M-4B#֣@A0(Uh#Qzi([i|0m[mCD#zB4X}Ȼƺ )`4mF4xI*D)hR%?m/4QSPki38#k/Bk߇@SS@P`!+F{gQ*kQ/& k_iEG-z@~ UfVd6i@ṃh.$)Bw_{!kOG 5M@()µE|5\TύZDm 4$H0 Sbu>zP>{=¹=x0eTa~}8xE (܄GS+v  N߇91X "[a _aUո8Xb ! }+ xVv3>xRS&%$@@=0J j>3OV>{uv~IY)u^nIpa 6 II! ]83\P٭45Uq⼰j|J>.CTX^$jY4ncʺpcc}uynfI*)Iqqp‡yO49eN1ojQ:bcuz <Õ|00Cn`9Ev)wzMYv(o5n5¬l0YU6I,7 -#:ͦ#pyvNQ_0X?%$?%/6 Қ@8NN}=X$3=1$|)sz_qlꍙֺ*ds*뚻D}4ho ԑ;Hk8!NB꫒,xG XV^ZT&Ha۽y;'iyIqp,c>HHH,XUCj ZQnnNvffvNAaqi'.l#7C b$<0 )J74v,0D".'<jmߡl,uC#*uE3D`sٜJ.I"dŠ̆U4¢m:b9)w}pjW*($2ɭolkniyu5@f|cyӸ"oq$md) &@po[#IY7x$.z@HGG*1+bӼ7I&*ojeS,o-UUP83]_f1謆@8IG 561fBle#t*iwt]D 4ZV!\hr4FèЭbᾎ͛^)YuǡkbR-ѱbi\o0ZG{.^%Mg4L*~rݡ#m:)~^aZ ixMkr8>sօc ے~^MM>pR0J:y6؜3{m[VvѰ+^n`Vv/l۳UEiq0·pxMj80X^Q< Xuޱ9D;b4pq)Yad{fats): )hrC>1| &"'63dEguv+Ҩf_|_ /YyY޳h 37yp闇G ؈t,θh!c|M8 :{V 2(6ڬNwM' AYpEv0`00YMNCqؤp"C>im^Vv<$5,vljǯM?txQq)yՓj4c{X0y v(k-|-5,#ҋQ{3]tu}PA'!Njܓ/t74׶ۥyHG&<'t7`氡/B'!Ɛ{#in6 uu:j0 WJ٭ v~q./P2 x;Q}{y$ ' J~ݺ%80 ̪ښQŁ^0B}F_M-W6¥Fjn](8== jn͔P6@zђB_W$/^:&[ rr [uy6/Ay݃drjuz= ݝ^nnXU-4]&u܉n^%@0ǟ~ί>\},7)lVۖN/IOWQ5|24`~ (zy#=2VzG'N /c|`=ʵ,>|S64`l$voOOwfff 2ʖ%Ydf&j{"2Rkwr,<:O€ǯ/[P_[+q4b )zp5{"z?㏟Ϝ?Y=_1'F>NƢjDkLޠiy ¬ra^ aoϡ=˰TuVc✤(03r&ZiJ|j޸~ <^[e 2#6*U|1x2fO6T94PC-^75{=MwԦ }_靍W#$m浀uTǃE6.9܎w$_f)nxV:KS!B:>_4aw9ߧlx@~JT ׬3h"bLFe\y_}_(uE"Aqgw42H:6m|+$V< [ S4c;.7b;5mXغ8Y뇰XMkd%pYפij^ڪ˘fׯ`wh:$Z~-Z*OaӢLlyRliX7v篏дM7 x\ y) Rz73NpG8ꦺ6Ͼ[Ai*$ƷV{ R4y 9> ]Bv݀njCm+[~~&"I΍J+i6Z,# ob9>99;{NnO-ļ2ˋ; lYt&ɪi*6uMh݃qUh72ݣՔv@ 60NnLzIˌfT ˎՍc̘i`k{cս2)*.ȗh<^˜ %(Dȩn7hMʼZYv7Sui^hՌ9|VC4ItsQاrr KE9cUYjVeVv#UIb*f v⠴N mh[ąkkJKk4v:%+Ny`s:MSm2~UeuMP$Vme1HBK-sǍJL.}vߢ*㋤RQ]uUU-O3=a96s0ƌ(C\.9pFuX^Y]+`fټ8(Nj=\bM:z<*'\t̀8#K@UI, oF\k\]cyjUZϵ2+-Y"Q# 5P$=sfǻ[tSCCcSFZc]$Ej1"" 9wdTBNml>ÂUGO`cm#shƚSQ` US?"9iw`qp-vd:'9._Y8j-*65mǤMX뫍˳̤@<\C؍ٕBeKϨZz+rqƌ&G|!L +%Vemݽã#CR~E~zBCԍb1c͡\j,>%N(UTJ_SQN`¼fD3xt\rFN^aII Θeg&d+V@dDŽq@9  pBƅN[ kS t~G qFEEr``Li),JFu*%`A{ Ft{I6ha*=R!#~b1!*84v,zvx^R[D^wL2r=BAi7 SF? 7krqwrOt &`#ҝ'nqq8GgUѣ"g0e.I22ssrpYԔD]1ԝ~C,-HMu"0*45A%&TԉUccÃ}*ImEqnVZ $6H.XD"wIY|EKԬvł<{].Ű98bo2?))Jr3۵2KFebŹv|Nf\,ݧOnV-s)r LNrȘĬrIƾvrrwԩ:2P"UZ{FFݗ~_QGq!hHc_b+Cz^ȭVj*+ K+kItpaa)xu$t?&1J5a >Z*3fN>F' {uummc3 Szp/vR,({eI212>u}v6۫pndFgq:e'`- ƕў%Vڧ?XY#ms ݻՅ^H QO֚b ;v:uKR!WU]KEF4bdn8_aa}^()ۆ;-;9ZwY~; 8]M*\ o<' (% 5qZu 5`5mpɱsxztY̾ӣ-eA%FWC[tZZ M`D1h_?:<EԶͣݟiP[eBd5 -{O/r\4m_߾o T^.ejֶwz> BZaRd䀍˖νiw|_4ZCx$NƐ={q`[˫˻o~eT޶qx>qB7q--|- ]Ș~q`2>DrZ>>\'VCOOl7tŕ9{V*ȮCP GGv іç@I.tyy[hoijݼ1ԦSWtt|\<6 q~9/i79[46 3!ӀR\4is)b~ſ_??Covk[ZޫxhגSLrEf`]MG/?}tQ04jDM')EףNqZuba~uյZ, g ;֫'7C>D:fT"jYnJ A1#^Ѻr%ӫW/_M; D qoUS&%I*i-,/?} M;*xՠ]X NE+`\vm|_ݸO4lYiN˚4& ٍ{<lqi{jdRxPk*j \nXƖ{{ö-u%%uNS?Uav@P[-SLFy˜j[l,+* f/MLΘ>ż0)(*/k3\٦"|BT6,3O؇m嗔TIzG&865=\lW+\.& X(1# lֲmۘ5m݀(7Z(oN.Lk=-r^eQ~nNhҁkh'JJK" bt rJ+]C㓚EnXP[U^["֊X-@я1Blß-.,.I =CKSC]Rߨ,/) \..71~D $6΍ˬjR-nAyiyUM5O$St w4)SyiYuätǤ´-LqW^[Q^]S ]*1NUUUfi/sx 'u^j[cٌځ~UE5n\ j 0õUUy0δUgcFQHsLZdwXJºꪪjhuMsuIQ 7$ZD5x"O/W ,.yW% ZEBc{=.^.'e>%#;0ϕf$ s&8\xLg%3&$$% +s (!$.bbbp!HR╛ wG4}#E1f\2yQ0Č|&9`Zc;7B #nT)`H_ρ >C^&n [#TvC4Lߺ0 &a Hc 1cN(?*ڍ >WXC__IײbfU^ FOE X# #a0ek4ުaэ~trt"NGCǰfC?6= Er0Bk Ȫ0;}G+(cjk E^hDFWw[b?l'FlF_zz#x/p|mIFj`܏`f@}nkZěAZ5FP|:V MPJ1kh,2_6gн24qO@&LsOWlTԟl+DktB8l p衇)>dcR-\99p1*ъ`ic)d$ QL\TT4.Eq6v垀O.gW\Q#J^q̴(^MCES 3Q:iCkиzzn~~anfz|QZWQ ;pvHK/)زVW^ì[lg%GG܆qGc3 ʅϪVSnBM-3vTs˅- &bs}s =<>\nKuE <\za# PpEkt}x|z9tҍw*%d4Cr`$Ah-crĝ3FǬLMMj6/[pc]aj|{ rLRNl@:{|XlTJԞQܲkQ!(J'86P5PƑɹQͧ7юz!/VN[G?]m9zEq`SNʩQMX֎o<ځ&(/7;Z زznϫr*Z#cE'fUOO/u:¬WTWUVWWI'/G.^ jB^1oߟ8gzd_$HPJxPXWW+PX^<RYR$w1)Xdmm RP ϓwN=?:g3bϴ"$zܨ욮%M`T=0>9{z;rPٻ}| HЮ{qawp~2iàp)K0jڡ>8OG3?<&i%(Cu߬iuS+''g߈ݑ'5EN)k]RPhL9:CNW뫫oHdLzua|S#{m'gw7[ N[秳)L ]>y3$I7ŔiB-ӥuv $-w6᫭{n+kSda"'&ys ꝁMs~'ȇM͍jšsV 6h'6sMHU/O\Ϗ,89 f:ۦhAqOش2h/?/_9OOv΅֩١K\V343n=eKw˟| xӝ}^8zֵ&ǂY^h*"t?ϟ>ACgABRU<8`^'ʧ\$ָ`a:5R?BR]9;JU{2Fd77A __>.|_-UTmlgIl?ō4wO/ϟ~?㏇f o^?7UsbbGV4v¤B~®iUyo M^MJLaj4GQŪ {_~iCM_2\1 3l6`.&抇,y/__yC{Vz 4mxp{;PKè>4LimʼnVH—M6A^V"uk,'2H>k4֚W|^Rp͵ZǁQt&DcM̩0k|T/`:! k5lHx##&e=3`jk 55Պ9oYN"Fik-*nJh) C uu+eJYB3UAȘY٩{ܧw'5U Ϫ[׃`^A)HCI 䂚ʪ6XFEȢ3!ܺwfܸ{:żrѨ- Db41Eo/$ 0-l{=TJ8lPO"s&oms8=nm{LL9|N0ݣeNlퟚ]vzj9M:pnem)`O$"Q8fΪ*ʪlQ355Y SK&pWWV\Rx|F;tqpܸ)bGg槧5ꩅFQUEq^A`wYM| 8iJ-U t²zl|^T[Y\S\7hl˽xd&mAq՘d5Ϸeg׈ }cKFImUYqa~^vVƤDiXs6}vdO~TE򦎁zWSU^R_Yvr\"f ofJȍI)ϛlFCTVMdoTw*"^mM5 NöUH4##I Őj5;UeU5e!vA"mK6.N4TdK.?͍K-MmnOaL4(eإjV~E3PU2skyِ,`r$(6hnq4CCc:oc5qI@ v){0" (,&ƁX~ >nW^,ɉ׌ RWvno }^7x]&xAdbG7k-3z$rixXDcj>#*ab;lXiVO!11M#gH4OłYjaH7:9;7Yof$Ž)Q?p,`C81 EycGOP_wR\]B#0"# ?QPVU+KdR16()JIOBlU"""Dt9RZqIiٹyA([,p$K=G $bo`3᱆*U0i ( B,F2cC" UY4sf ? Q448`l6"v(ސc!k%?"o X6rp3m_{D ,$+v'P9CpGhA<1̆d 8jL#xæ!lFaDE"|`, "4/XDECBc`Fc Ոͦ>zoFjbp껑 ^$ hc'/?hse#߂?S 0iGO!i^͞8lfL޺XtYl;H']t(0Lql8ޠվ{}Vx2U迓wEA}Oql? 5Lkx|PjWJDs g߾hˤ@k?NZL#E ۇ(#GK!45O)VREp (2G%8 بĤ[EGt ZA!"lތ ? jkf|#l`btfNN#j!ʤ+;W2jasa(|Rq$yq)TBHFO$?I D4 >"G^. X\tTL,>&4.T N! `QbS\*i\B|bR26 |Sp6.OCP f+2%$bS{aiyEe5"Ru6(gTiR.n%U¼Z傺B")i\t-AtB?R4Fdꚪ¼܂:ICؒmKhǣDS}\_Cz/ Kh8Ѧ֑VUUVTT;)oÁG^͡U : TcӊCqIE\& ߓ582H,W5v N/ wwwuwv4(2_ѽٻy0%FG B܀\(5n|tMv)bT=]\\XX[fzznffjdYU/=Ǘ |CYz4hv@ K޳[&mVk flЛknl\okP)eBEߢn:,O5iR,Fe"YC~Yw &u,d3Ϩ\pLQBjen/Ԛͭ5T>pE:1O8AƖY'k;c^v7$fwi98s b~ysewaأi,y#2WЈA_\nPkSscWR 3yCJ$4kOtׯw0aiho_nmhhl]8abHbD0ȸep2Ox_ˆ|fv湁feWIi#10=N;{mɸUlJPly18ԡ$1Ӣ+| }巿?ѓ-BJPoy1\iEg z k[𵇗O_~x\[?~ٞk[&QJ[v= ;֊ͬvZq˯C`qF>ri:"ce`˩%ǀPqSeZ;L%Cw<.?;bp6&J=5?'1j"8Q)jv=<>?W5_W cM"L1 tUf%D=ݩI˗?zۯ_! 2Yzmo˻\K" dkA&v{+R[ן^yTҴĒl(F1  fĨ^ luݸ4Vda}=>6&@Xl/?=CvBM6;k^MSIZ<-ӸUͨ}6TT(7M7I ^&:yNlZŸu"twi>H 6V=jĬ D[O*Z1u#eF[gPd΍c$YKe{3 _B _^FY1;Чf1ŊF- |M"a\_s-" H))MԼVNZ!^e)YK(n U#\SWO;6Pw0T]QU? "CwBQ\fpfgfWNA LWVAYR "<(9#+تk~A/9TQ۪zz(d1"H]Ҩ֛Mڒg`lf~V~prŔﶨKSNk߸^`5 I+ pxdlrI?=:6$T ^]ǥN}o֛, MW̦NQIA~qEUDQ;5 u6Uy%n0 X:Y#y3FɪVʆ&(?7cq:q}i(1i%ɼnfVEF}tuTC`x@h |(!~LoXmҊZI&()...uilNmeLQI49GFbT~uUeYiiywtLSYl`?s")uΙmqJJ+奥e† vZfy9I1\]5 r$=nZjhYEE WS٭Y<T _ZrY1ႎ BW%br,کVX xֱ%؍=lh5SaL!pv(1Z;ov~E?=9^fcNtG݀:M"6|? T%H5$xև !R轐{XPwCkU[nkFkbkǿϑ4|B}O&+$= ʹ16tFk@k m?P\JQCIIQT[XQ)UlHh2ѷDw>D}SF^P"Y(SC aڛP`@3#:LP^5iY$![/ yl΀=;P_+[ Ҳ遐5R[Ա vOfl,q|z!a8  =caz@^_E%elY_4⠶[1WD EZGyrRqI6,0Yq8?#M9 *;P6Rҳr?07 p4FؠtԐ7ҩRdf81%#/V4w v7˅5%y)qQ" (18ŕ|iSVb2~Y3;߮ՔeQOG!fCpeq 7V5ۺQt7 +3iNK `qX$*{Z{mc`kYkgnL%]p,!J=mzNnooCWMhmod'Ǒ*fqh4R^ܿ|xy9;Y k['WOϷgu:/5֣8{BbS!7quUg[Pc]AzC (F؍DFѶqxաlmWZ:G&fVO_V~az|WLEsRv|pɵ}0hkQɅʊʪZH3<<{|>+J`M8U){X\Lu7uNjIQIa~!m-O40>uͶntArIm-W3J:C\O_j+1ecu]P<_/26׽96wȅx2UD2u%xgWX'_wt(uGV@abs*[7kVH˥+U-]2P"*/mSO^.׌}uɑ tAƟȸbqv}iU"I%ʆΎ!z^! xȧ<+U qjõM݃S3j5֗،c#CmXUTE n:"(L"1MlqiJpӡJ#S ٠ӯxܼf^=&tEvщٵ=QJEc([O7,75DypcdSFH;Q vW=v'hiM. | fKlN2C GmpGUɽj]2W7A#U<oT([Ɩg LYoo0ͦ@06,:H>yy }`2]+:Wpij OI,6mo2аH(hY.[͘p8^/;ƴv ʒTA_G{'F̀{R5LCG%.p~ + brrgimЧϷ[% $-BÍ FUGq(34Tq*3i>Z)ӯ_L OPH3VLL|UC@! B_<X8^ ղ4YAnģm%C5>j{utc?=|rk!l|q n{wCg]gi*Rll A?:>[ؿ:ˏ_n?ufQRN}n\"!3&2^Ͽ=.o>5, rBٹuy3ts`#G: A+ӡۇOSPϟi3L.w,#Tqy~4M[>>~:ϝ[;Bv<6^t9~:`'p`?o} ?'X}AP$Qtx 4YuV_~BULCw\ Mό 5HMn_0lήO!ς/?HS'Op>*$jy'qJ u:< ?u-xͳm2^`X,* H:*@:bYb>8=`!|+X {H4hG&bvu1dGWO_~ן.,Ӯ'T-bM.-Eqi-7GݾnҾrOs2XlM@7*IGaU{0~zs M7Er" -Xb\7ydc ՚59'21=|mfA;]^_B4` ݋}l/< 81o/$fggui(b,؃DcI2mǒ^OUmS`g3lc6שeŇ9HGulNlzbhb6ajDj[ZVtw}&oiVPŵʇ(Zn'gUw̮l]ҪZHܣl5U%e%i%Flp3EfTU Dn*))/u8}.n@VH:Ħ,YQh7δKr ˪J(\*79vDcy"d S: xܺ)b5vɪssr J˪pڮBܩ1\v|G]N")exK͍O/wϛfiGYSV_e55%EuEizD)\F?xOfsI]TRVb@cXfI5UVTWԊ[ƗnۦQ/"bQcb UË6jNv*UU8WY+i79].miXY !i %q%6qljwZmFϯi[Nj[E—ż%a[VG:[:z8-ƊX/:+UEv$6K(7 kVc˳㣓j ~iaP[$T{Cnj)Qo5a_wf5Lfӻ~EY6e96h4(UNjn?S]R2="7Ɠc k#q$X83)^kFndlJ~obn`\vn4ŒXHD`T!pɁ[{ǦKգ͢$> 2U2ɵ -2 +殾FQuafR ?E Z"bΉM*:lWYWJ Rx- Sɴn y!WTB(Ta}ufJ^{U4z¤Xb?.15#++;+;;+359>uF7:"*"mDf6SZR!q,m0̄9(2cwx;^sP: C+aGikF:G7M#p rԍiK@Po "}I4cr0lTn 4e7f,:,p=6\8L||7~E f$`}G2x"wR=G,6Z6h`VdP)PMV(ݓWÙp EJZߑE%cVza!0=F$c#Op[U-Ukf |%7<|U!ND@ ҖlQ6:(ThT -t RF^77qǯZj j(~"loHQ ūx{_ga794(FE~FoY CZɆ#P)ZQ"mmtR'HyI I56id6|-E]^%a9 _ot*Q`.<t.`L념%9Zn$C" 7z$d[9:&& DBE' pݧT!i[샌jʠ;2FO~ศZ0BL .i>(kNG #ZuCg6M%(a78|FwJ)I2c~}DR4:eARRrbb|EGFҟ"c r `!wѱ)i9y9Y)ɸjP:e(0HhT jI)'%e"X,UW`˥D}jkRxSP%ON.,ۺzFFz;BzeBTH##9 6U.w L-&fV pW?\[[ om^?<ߜoznyU>{7cJ&ǻ˽̀ì`\?~y;v- 擏9siZ6K~ؤ2qekenb{`xj` \rs76n ĚF*&)Lܷؾ|y?th2σP][&맟NW- y)Q4\.d'akŢE͗}*F mQ/ZVO_/7c>꩞<265_Хq~z8[Ӎ*>_WWC쨖Ub?kDM}ٺqDRJf 50LIU-ۗfQ"DRL.Hb~֙{VI[GW/']k:f -98)TXfhvsվl}4ir} b}}Csmk{M0 &o/jhSa6]&uufPjˢT)26L9 PAmVVmN 7Wwe!(4EudlZeȷRշҖll\\=й:zEӴGJRcprIJQs̪Nmz]߆k?=mZ֭:ggBYܟxbM;:!*eվUg%wna@zRatpsu E\|L̡s\_]A|mY*R)SJW9.R&$TNAr'4v ]==<9Ǜ+ȇ7$y}qԫMG DEnzVN_?|t\=>?ޠrxpquesU𚶼spusǢ 7nf2UзVF""m a@OSˢOwi ${8- )!Gή??6/O|D|~$xrQUĜʨjk탳ۇOGfP=?BO%*m\D2Q)8J(w=д`=j4%J$-͓J_Mv"D΂860ms<<}z7ΛwaP'H;ŖRu\($f:Q1's7/o7g4 >N6P10.<<,z.h*@O6}:^Ýcp$8|255g8<9!@ iVwם "~u7LvK)S`{p!ǗwIq~2LItG̨ ίCkL+CB>nU +8P/x4k͌\ `ǫ-os Eqe,,P?Y鉩I#\ 6į X6=aAv"F'3r* ffo؞_zn@jx-3}< "hRRl{zG G%'Lv*amcz1!6aLkyiEiFоUCȱ)k V{N=]i-qauճ2,LfkTZwe[C3٩!F+wvզGۋqJ} =oDgZ7ΌNN鷐dê$SE˰X[ kjp_Z\kALg]F|#'Hclanj'z:`nCTbr>?)b@,ohP4(|`Z,S58DOH.iG[1Z^yIqaie _$Uuu5*$2pKc[GAX2JZb זVr)˲0R=gz |fch:DgS66aE%xǺ>U5j-6լV+KK+˫IMUDc>N"U,76spGƧZƗmvbijjkjjxyr:S-yPƌy8hkg[ǖ-jLt7׫hzyhL(>*GZ[n1T(ۉ91aw:m&p̒Nv_@ЄԐ(K+!I,~MLJ%D>6jj2l6a;&)/khlUKScQ3ƙC;mB$-:.%/ DX[QC<6I9(oDZ'̜ҒL Azh$I z<KNMOHOKPc Jr4/I| ]*y+.,ǂA~jd-^ut3o#>F,ԁ49a'Nwlȼ@qkgiJΗTjF…`% ==%=A 3}E;3$.3Taa!l:ܥe{m`og]RJ 25Ӵ`!\Hx،*iZom_^_^^]\p5.fk椂0dS8烆<Ȣշ{p{wu~rxw|r~:p&eN6a7%u˭+ˇ bZ1˷ypz|y () &j%QܝÃ}C#sfΗ]|Tndt<ev^! I2U}sGļѳq9ʉGlaզy>6`A Qqy:p4׬yrcIqIYE-'5uϭxo^^n}K’xqd3ī1IYS8Px^iWIx|^MuݕWTVUW {&[ϡ|k]`]f@ ӋzՖ}I& B!!WYVZW}ۤ<cu!ȑ#769Cڻ}ٱLt7He\R64644D*D ݋ǗuC(-%2|AmTBu0xl- 2RjlhnniW1)ȡ9M܅ΝS] TVjmQMj {GYP' V=(3MrBPkCc㓳zA=4 | l" X@-:12lK1$ZX,?:,+޽5(d=(%X, MBQ<*JE[~z:|FB2v;u4צ;,ZW.#T0׎./ilʣ˛b PO44^B2 =ܝo,9bZ$[f]][ kQ*D:O0iˡѪlnЦEbIڃ^iȤL ڐy7Pdþb,/IԞ#0 F;IB N]\]ltfOh "P$mI}n|zy,_ -]td׳] ]]lP(n]#hɍI-VNX:<B`#0091:nkQä{wc]ٮEzrN{F2]sh 4CE9O+6=ٮ-LOLMb7}8\?)>7sŽk@QԎ v@K2U( Bf{1[d]%qntttVjnjJD iAvcWc#Cݠzg]k~Y~b }XC굹472 &Q}p5hhLå I# ʋDgztiibQgh5}X$ ٥8LEua+=^ 0mF0 GGT텄HlKuv6SCR'`s'k)0:ʲt152QIdb-r̮-8ԭ()*ŒWUWbJ 4N;zO(renMu)JJqJA=vX{E1wؘ,i߼jږgzUŅ%ŅE%ve]&@0!F^h[8s- BXTSzǛ&I aI5 $3 ǖLvf\i kkxbeqv^!k163 i*tLj-nԩ{s`Vkvx<nCX <clccBnk[ٜ6iivbx,NBabcʮѹed1&ѰQwȫ 2bl@HSt- $c~vqqqa~zr^PÅ @aeMעyƎѱёzIUavJB4@޼,PՄÍK[[UAuI.В03 NkC iu< '=%!J ;Cfܨ YAY_&7$-)Ǐ Sl0c1n|_ -3)vI8^Zc\GfQl5I~ tu /)/h|&,뻂 rJ ui>Mz "ЯuFi$$jGc>LS 64)xj ~ ͈osmz@0cb;%Q4.Cet=._xQÖJl^px3KaR][edd O%ιlj<*pxO[BrjFfN> WZRRXGYgl"ɀ$80M %gW2J!JEڪҢDCXW`ZÁqL|Jf~I_V7<61995>6 ,Ƭ'ޑp;c4dTd=CSs:.so1 鉑V0;=ԌMXUXWv-X݁jw[ x6UquqNZBltÿf9>5N9dr7vvwv֥ɾ&qEAfuM6v!ܨ؄ Qآɳyt]]^]_\/Ov剎z^qp…&2*61F7on><]__vO.o/WmM8R %Q{Yԁ4 n~dپvtpkq:v/sxvSw;>x,;)6 i5c:ӧΪC4=9>VOqͧϡU݆FsB8QRUcAdckkiT)Je}S[Wޱvx|wflZY6=Eg}7A@J?^YQ^^ %ygl2^_҃ ]Ж K3ت dUxZP;um^?ݝ J+8lo p|_eڶyvwwnQ4MNaWUdsB;05t4%o עFn.6z1"ji2Dȫ:Q;5 :XE&S8͎yM%!A.Ib]|+CddƷ)#ӀcxGX$ZSSKW`WkR.FEH5" 9t_X$ JgpT?hm|Mk TsIvCVDYhbfɨ6cF,$K<{S)@Icdži -JBw abhI!A-/>Ĥz2flGZah`Eh]U6}ҭ8nҲV7i ɉOTlJ1E[z`Dɽ16SPnE%?_/b3ey 3!yurscQKԌ8QApN y=zjfӨv1U_Ezm$5=RlL`G{.wնl 1yиsym,KrX4T3]Mni'ǻN+` 4-zܚ8^# 5 EyppZ>@ٱys/5UdSfn/O0L#o{o3v8fXҮͳо{3ͅa!`RxM ݁51Z]fBivbϥi.#DYt&A0jˌ(l1ot'u2Pm-'kQk fz~fy`"v7!~n2uMF""))"*q) f9=~iafZX^XZs xQnЪ&KJ 7Y:lC|~ڷ5M S̡`א+2>`flbٺ0_LÀt{ka~6^cY'ARIE3195ƭ;>\[E:^?P5Ѵ01>:>> cݹp.KtM&(6ܸLW#Ct)wץ'FG?GD~2Y4#==^ty )P0 IВMnM c=]m&eK8ѓd>thil4.ԗbNXuVl><]3m20hL@6&FD@ 2}jb~0 =KC p'l2=Dįdԭu9D_>35X\W-gJ csZTlWjF-^HTTcW ԏ7VNCI2 GSD~uYQaaYYiQAaQie02t S(.H꼑HD&:fnՌ׋*J _RVY'4.K3q Ia5jw='69D;bXfXo_[YYQZ-IҖY[t5ɢr,"im yCF-b>[= T'[q(p״p;:1etlڜfpo[sc}CS[؜\eu8QS^X&als:&0LVl.lhg%%Y?Z 'y1ns9Q_JNqԽҊ(j:䡰\^s\̜avl:8쒔G'åj_GdLZo%BFAu)`S_ˉr.MWEC.$Πx6jIt%+g/a#AEavzr|L$ Uk6* 2 D<3-/p,J1ưQ2D7qҌMHNKLOKdDP/Z}5L;RQ1qxD\mbF&RG;9LTT~l`a2fJuOżp)^?H!b^ɘ=&Z4BQpw^(@l*U2Fl:S` 0'F!jPXP& tA"@}g!P I̡a"蠿*h(~60*'4  C}"zvH^cl$R BZ 9[~U=ߪ5S{̰5Fwtioo]6xF5v-0{I#i Вe~m'W|`n`C?p" ٴay2tv$Fw;0YnX 9 '=[6l=@wʂE!itA:ذrPm_|@(=&&xNw@F2ww4nL1̗}߾ūۻoZg훪k?g%8_3@/JoL3le#?%k$4&>uJ|b1l0a6yc|UAۢ(7@oz- CFupAG',d:4tXmv 3ѩ2  <7'4^E[ymب 8Ł~]hz̓ө`0L?R({BW_4GrT(\s-**+ >'^nH6668:<<:>>9ߞo ڂDF'v -@Չ,WJ̾ˣm"OϷ{ptvvws:;Xj 鐰@dDêF{ֶv|hgkk-.VLϤw\UTrt I,Eu1%vh7w;nYENFM9a}"pZ&m؇fJ$xT*oh_0.nv< ґ@Ӱ#M&gUF㫛 hg\ȫ$besZ:zx<4jhCOF/nN} Y|[ 9CM:N7?TS <<lmumM]mM[]ѺTOkLKb@}_cSaDP=ݥU-5DZDBUs4E(1JZщ]7=16L77֜<tYT 95uSbfBsnoy YFT&5'lXD#挖%,н]_n (V Vvd{efWnhھM7{Tѵ`N\sλ]SсfHkMi|h\Pl`O{K C yWNnpv3ណF L{B@ЫkI)"7G{ 7+"[ ]HFA5j`R*%BA]M BA?6o–I ZI ~]ƬV(k,bc>Q!|4urGCQY0f,-.).-օAyyF}VZQZ\TTR^c\kC!"6L `Ao{JlS]ub(GgPwJT`i[D_R,ZWTd'LLU5 8 +nlJvkZgl.vjA!ɤʦ)pᆚOG0_E%W&'F[kG`w\v_IQD65}ŠD-23 kf &氛uqFoYnXbb3mGƥdgf=j5Z݉SUǵrRc鬓I_c]};:>-D247n[mV\j ZYV!Y' sl|d$f䖉p+X-6ݎZa/Lt+v* 4K57&13485fy553=5:j%T4S x+\مes;]f<d()An_=gqǀLR/., Z4?;m<ɔ[8_hVӪǼ@KFyWP\VYjQ^v8eG# AS=^82rr2`1 סĪw.Rx =-X2{ 2I }A K d;9݂(whP"?䩈 Z̻k&%1ȳW5ShLa #;k"1Aeď t}#@#D2-M "1I{q4sDՉhl(,T MArE<jmt:=ƴF e>MH"54n7w3>*g|/2Y~^Zbxϫٖ0Skkl~-Ry( 6tPTx1ZedQ.RԄ֢ "ȑl[S]JD8uF'P7, h13O$j3u\Rk1|,aE@P`ԦʊN%{TN =!>Z#iuܻJEB]iEJ D'E0x E?ak0;wBG`cZ}I)y̪_1'12^[t> %^NyE3?^3֢ kǯOt%A®EB  p0/iXK )9kK(eWeG*c%QAX`vP.B^1k~Y 89yHp#np3_T1>vxˇn6_[c_s !>#Y0Mx()6]VEJh3/cZJa uɨ "i%?ÀhJ) ;W&vTAn SհE[&>q0[RrfqQ#"e ʠYbb gddJ<$%Ԕ\CPt I jvnAaqqIiIqQaȦ*O!hmP"RׇY\BRj2d6[-&(7+#5%1oZ`FHI8B T-q]^[kc(/+-%!i\],_rWZejv O/,-,/-/NۻZK ӒmVqTDD-F9!1-DonwU>'ى>k4/mb\/¶V#̇lڸoחg痗_O7f{[tEY߰1ZDjku[Yt-zN?}0_}Ki1Jf ^e3ރۧg5_OOC?OζZ2cz`!oR -/gZ2Օ<Xp7 N=yYj9 7Cz O>QErb|E3VGkpxdbeksvDX IѦK3>ؚh}AnO}ܜݔټ %Ɉh磲b-6{g`xz}[z㻼8>&h)|j8csYΌ 6vw{kG' &C%ZZ:;ّg/-ow7_>uƩr,ъMH5ciwg6@tu'dKYJI v`:\ǘUMNH 9%{ՃNh$A:t^-6Ic'ѳz2CEՖw8WK5 [cptjyu~lgŢG}g.>mLwt c|Ȅ=[X8ٿvygF͌.P2 "֢>4֌[+vqW:8^k/K(8DGB]}ΎF[kpk^"WLb-h-9zm-fBk﬎2i5RckAR 33EasK Ρ- (-Fg:_ZcYaIQ.OTI~X7THχi05)g Djh)JXY骈և{Cm:9N/3fBrUTUee ;ƻj iFjcƌxhXQY!I4!ߴ<;`L ixHdi#oaj(x)fDʘQ$X;z>q4ڂa50!Z/U'.j밻n(Kr[tSێ?"nVg&].s`djmփ$#3LI9q)0:;X[_~Ǘ4O&!ZUQg-et =k^]֔Jĵ8`![RIz]oq olnmmoK-";;;![my>,߂j?e%gs>wk`|NSԗ2ۚ"G >i)n]\Xy}^o}m}myfm+/x[H45α`L[lh_^][Y[]]YOS#vSy~ߞGbQT* eKK64gFV U,c lyE#SΞv8/#%>bD)4d`#q搅,%#`^pt@¬ MKQĩ![ hSEe'e>,M͍ u5yScf74iOx[PTV:0,KIUabDk"YioN.3;<\X`Z6XD%aedeeyIa%V>TڅǻSR_*W8e!d`" 3Њh'JdcB198FkOX7GHQ*5"u-y;_( W D^#^.]݁ŽDq_sU2&BgLsI&RJe'ATs/SQx-('__k2lHM'&l_*j/bp&SBAk1]CEcdN@j13 }Z RՆ>Co_nN˗/^LP̨Ɂ`7+|H"kbFXEŢ7V{obb_~-*8j2SbIh& D@wYSܧ0F&K3FrO*1OeOH401zG"]T}1rQ 'jȔ+C1CMaj,foLA0 [|"s4j RF9fk#ݕ@%|We/*RG!iX$b80Ba- "4?z*AVִZ\#hBw1o*2pi$$#q_@'$&A5vװ\fSRߥedfHw`רq"X\%eAka>[MTgA㊋ 3@D:DzS 䀍Tah7.>\g1Lz]yIa4AxM$>dB)مU0n67ue9^IIII|iE5ٹ b(HMza(i(fg lv-}Ar~eݷ^޵AR]B2Pf=du Nx~=;?zw}nf6drxM46.oryVOey|>Q^GTjոY5ɜmy}ÓT.ɎoT+5̲K?.\@8:ItNPx{c5UKB1 ؗ 5{gogǟ>O!EO[miVj"6uSAKKEor/]܇~x8../,-mzwO?ߟ.[EhBqK۳ NN-ova%!&}ǷOЄfq/_C?IF.ők:XWYZ{~H BJ>?>>^~ހ1Bz= * 5k5j+aGn>ocDWa.C4N>4[tee%eʪ_ƶVDSgw;:7)h5ADAqD_N6Ʃ`Cڨj|$-}` 1vD4HUM 2cin@|J46477X&E |_l sR@LI iVrsamnIE5j5潍#Qֱ̐x8"}s{u@E74:{Gyp, O/DoplbbvwCPWg'^, j h0:MZ*[R1d-MMvIdɇŁXu>0wB4ܙ J❝]=d' Zp@Jp`B2qh)9?29=5:݅ rB y'bS@HsD];N] z]חs=^.-|FC*hRr0K$Z=tw̛nKjǗ;IVX6*L:VHdW.7 }2'SH^T^P8ک=<Đ>IO?\ UgC.h|^& %Uw, 颻{;x;^>>moI^V0C(ǡZzODfG:;Z{pr~$A̘ml]:UMZlNttN_^!)nG"eχ>YZnW?]C և52S{fZ.U@냃We^A9ز[Z[-h$PR=" vh-~K, uz܈t|}PN '#`,MJ.41aǀTJZK@5l23&'M*ʑՏ_֧!MP$1%}ɖv!DJѺX{/oe7Dux5֔{Ÿ3`U HVSwtv uUEnP q}&U0#+ f4vJl1SX}B3Cw'kjޤНik y X=|OqiyYyYiqqQEBweL&X^~Aa!5%y-H@ݓ- 'M.4,jD1jro ~r7"]I)$CpN1ORr t'f)dk1@weAB?J:32b-84&)fṷrKۄ]Y9n+6;K5-鲎 TPd, cGnv @ Q4Te)K T=g4{`\ lj34]Ds 'b`R+.$mZ4I}EzcHښ r>D3S+aNH3f1,3UPM̧FYM~2|V…]9RETҌYߊ؏Н,2 kn~ v8ӭnoZĈ'kf1j_wM4?س`'  4gmm"4+兔xK.fNHR XIR5_?9vHz-E5J:MokTuk!ɹ.q8ijwL ]S#fu]q?n__޳G#],D8F [X"h߿qqo a}BƉq-(mvO>}B<;999Lͷļ]ZGs(V]HsD~~97R]p IHw Z^(kiNsxK fL>DэysPD8׾f]x4ƚAї7I^k+Bk]L5}hጄHjG ]ِ5ԇfB{١xDt$YwU/VgC.Y^R kZk.3 %kƒ2qW)DaT‘`(ItC'bhLfuG3GjO[;z ܽ6oYrONb;)E;>+^Mjs>6"Z K%Z*dh1B1iԢgܟkapOM"QO5dՍ=*X]o$F]Jk;DoomloJu4PZZ'm]1*@^ Z cOUHC)M!čB`لwn AL:฽*Df85eeS"bndMtym3}H\2ϙ@zSv`w'>ZxH` 3#@]ǝP(?i#&+WTZYhI`fnѣ' vj+<ЈJs)V"]ãc#=ѦJO>qg3ɤI ȤNk#_ݓlkʋܮ,&Қ&uzdrXgfqH|*K"yWk 0Ɋ>z;3݅%ep}9yj*ˊQrOG'ZD&s=ʪꚚ"wnV&)R )GYY) CԖcfXIW^ٝ,*"[9q`-D{&\4 GV3a+s5i+ H.Q;dYn9bQ "*pt', K`"e/5gt '!J^1(Ye{!+08t4ZzҢRS@dSұQ/&bP9y =<47]# G\X!edl`oÍEkؐ\()i!]}A]@<6Q*7!MLYÁ FѨn0hjbl H!UWz f. "w8mMfL.jg)ES!i ;Yfp/bA;(1Y R)US̪EoZ :6i]DK[Q|0K >x~Y/Rn# mHqCk64TR]M.P ~Wv3*.gSmCaFA0hh!)h:3Tk:Y3 Pfi4/&6G{EoɲRirů555Yj)53f5G8u KPi R5[ gV o3F~^y4 lMTz 61T7o*M#&"ЛhP,!t wKK tЖki]CIy53]"l<@#87}Mc j6>}q_FD AR kt !ɸ9"ԛrNe8p\`$y=$A:'Mtdd,I4R12%P%"h\@- _rYbi.U+FSkpZPQ"d\DTXX_>2ESi/K4)I)-('Oz r]Y,o uȬ8O5vU5656yƺJݑxtYJ8:(W*#]2wyEe$Ok9NRO~.PwB5;|!rSEu&OyT#-H{#CDsW_UZD5a٬ 2ywKv=hk_|^XY~<;l,!TXgMqPĒ\%ցo~"nd$ CIrN*A da޽]}*|S>s闯?˝6 u;O)$,B`ߝ`}G_/zٗ;fy!;G"M \'g߾]^~.6F:*U6:l'm=y?~?/ߗht^gP XIuO]~?]ˣkP3HUh9~_ӕS1 &|w?AFPhnvjjvgoi8踴TO_84?0zwrjqmS"-wt܋ã FUni_ZZq0WOΙtS}]Mm}Kgw_KR3Y=7Rͭ] Fl 2DF5TN6 }zXY2Fn\-Ҳ+;lCHy wRbŭtչxH0|mbܑNeufN:t#'ymC$vcҤ25T]) VcZo)IcY`XHGZmt}p]][>x4x33!mvUit{m շnr,+klýޚww E!ǃֺ`HEEU}f{e<'-)jF 񖉯>zDdmjCJRqQɀ4O^t9R_W-X-=`/奄q=9ѻɢ0=.r$8Uom)hs ;59޳,t{/@P{KcCcK[w("UKS=5)x6STR=ݽCw&Azn%lҋI*B|>)h;/@.kk"0ɉS5KK7N^,pD,>^^CZ+X(y3@Ga}FTAkt< !k~a󭭝]d 1:50JIi0'-ZYM l>/ ~hicV|>|*foZˁz-nd2ܖE8&Ry[e\a#lX|XX#=+Q-:QlϨp@Zq\ǡtF߉V% Yqk_oo@?^Ӊ_* +W{~ʦ]T|k$tN5ELX-<񚉲v?~ZjҢt@k1v/b41_QRjL5FIQęϐdI࢖5IE8,3>/7Ջ@ÿ<+ {@|joDA#;^'`.ōOwXFv <a.jSᣗM8"8 ݘӘ &M;|'ÒEsGHMs8 L>raƭ8BL 0Hu|-ŵZM#PT]s,=w8̙ref{:zrƘq% Z͌c6;@s `BHy:]'fz/ȭ$(H;ƱKHqr;$i)@X[2r4.--=zԴDNչZ0T|KSgdfsl1'D2g>mnil~QqiiIIi͛7 s2U)s؍y݌:.Ѹ QkuMmmXUY(.HӔzEUNh zNa X;0+vuk(wœFWu|zga:Iqƶޡ33SWWL_ M5jC ]gdZM/h mhemLz%劚[o<:9>>:>/wV6OҒh<.V%/C!f[t||rz|T޿\)_@N2!JkZV_| ~9?8׳O/kJgc{ǰ`S_8? _}! Z7 {ݻOǧ *m۬IZ*P9dw%2{*i#s bXyɨScw,,ŠU)FY80Nahf`݉Z/ b@KŠ畾=`& twv O=x;KS e:% EȞUDm#$=5:z] bhwyɿtjs}zvHogSsccs[,H/ 5rEV'' 2v pwxb W''ġi 2: n{ÃÃ[OƇz:ڻGƦ$LrllM',FN-پ;Y_se} 5I;⳴xG "kMO ޝ|[TYTbF_ЌL?khvE^z[ bр'.TRMe7ķ8 Crk2sOյ=i6C־!n|gkKќǡ$ۻU^l?y"I:FtE/Ktl EPʭI񵭭MDezE,g4s蒸ssjPm<"4W<}Z 9ϧҏ=~pvaRpeΧގMMOOOxj-K%CX--T1}N NsQuZq[Rj2=]S?Lȇ[,x>(tW<%U~4)1/L&vH ,YS$Xf3@Vy[=v>~a c)l˯ƉUM2)  |tZV*fa Ԗq=a ̘hiF6inT-31PgR1 ig.#aBDr~*=]4o[$zh696T'Yf0{%~yj70ZXlvE%PE׍- Y ;!&>݄.FTmG*M1K1r"Jh)<`䮭grbIp"' .a';LJ6t7N5f/4l9\_1f6 tҷ, "&kVLLa}hO]aah͊B(ܰEEAWCRTFYmK2 8؊ֲy8fIlU0rl*NBπ\( 7V6jC,W<X0cw6XxMN?8&q5oNRk"koؿ<#i*~E pS_`kQ`/R,- ?toGz?-Hӻ[*_/97uEJǟc͓lu?0ik:S_bma?3şk*Ś\k[Cu n"6,^Su쟖R" XOׄ僋5=gS 8h?Ծ.#8+HyS<RN8kľ.ӡIL9Q&Wc}f 5!@Hft d@ 7DŽ}-t1`fx'\V`+jH1$S(,N+m ~GR'Pf<y4pU1 Xgu|_oʳ݁8%^'$$,NM5Q7BV#`2k\b`E::h#`>k?ZlDJOHJJIIKI%%|wc|cxDF;> ݴ+YYYוpVrDo8PeE%&ed/,,(egPEqsXc#blqK #S"]PT(+//(// ,R]"k>\}6 csparťbϮ-M"QQ+8аKJ,wwrJjF^QYU]S[WP_OWks}ue@AwCBU!ʚᱩLؚȶ5|) (-TD'e==aW%`9V|jjμc/ w$5|^+fj@X7zG/]ܻjlmy3ߺ:>:78jI.&W#2Gcl/rL2{7&*2>lJʄ kl2d})Y(n/3O /Ԯ.d@:2tnIk{{{_vC5H $`M=×nauϹHy3X_B,TfoW4v|FZ&-;z I"ν*ԝ O:,+IC[X RF';k>_q-YzX-X}Hy7X[\x;?f~S, 61) j!n \TV3^s.aWsoǒdHaW xC3˗rkMݾtFd֒`yBIk{;ʻ7/_̾~a6z=ﹲz.䎽{oz93;76)S!Vv0Bze3[>|J]ni2iG#&WVy#&e8R'WwM|-*nno2ŅׯEXgULݔڐ[1+ l"d~aqi-_G{[¬d0^FZ[sTLν{~slqxi'K+ܸqAT''pn腳ّ1pnhϐC, ==]'(([̲7]ݽ"e|+2`KvCSsk[=vD=H:nbF0L26] (H6121D!:ćR_aAE"Ejv /0W nSPL"Iaxk3E}8:_^n Nm4 Sews9P\Br&Mն˦!Tk= ƼI܆;{T.9r5E? dpNܘ_fʺHgZ&ԇJG5؎ ׾tlf? i} h V[|yk|ef ~A_TZ\:b߰Y؆ kS,BmON֔ t Et8f\ymRé9 of|2V9_[`,Fv4'0yzJ9Cl6sh ؎Fxj&n -;hIXjI鉦fibeZ\ E |y-cUV`g[S4r]lTsdpL |% r&,G{*s`>YhA8!ۈtH(=R2 iX!66i4 !:cyrJk4'35'ÿk0ڱk> 迕ƿ v̳Ev# H pS׎NvV޺JXqJV`?|pLj8ꑲԫV0ZN@:%`#Mp:2jF ӲD1Cdn!( zR2ƙeOj09p#b!iQS.1B^qk ]ÌqsI '*Z>>9,sJ>nhljxƆ0YFpFOdkw]7D;O6F[t jv)8 +9rds"b}}=]-M:nc*s٬F#cpFue!HKȹGGύ F[eSS3dBjm7]|s#w%sZˡ/!ѵt4qm>ɛL\02&; ~ցFcKG/N~9?sc`k45Q][ _KK߽}9ͱLZ6:)嵵d2Hl~fP| *-1DMWo=F*ͤ3q,K t|(JA:UVִ6"*3x])mmnmnr+|{@xJ_>{lmo GkξF}ZNK׷t9w7~;[Gq6C!yYnx|9*krҡqZ134"+tF5uyABiWSw6JG=/=mOZDzH%fqtIDSs,7z/_P'}V{&5Y͌EDifpBOS@N^mf_"ׅЉZai%-[[\27CFzZ('W^XM t:n 56"k1f,,u {=ɸhc6JJ,Uo?zj<1ulP(`F6O0oKmd̘_}R,He&h\ Q\I:)S%Ĺt*N3 n^m__߈ox2X(g>CVt6b'( \똍ȱLLT^YY]^Y^knlEZ wJ/˧fRVԖ~ǥͿ};;=Ku&bF*H=afg_L?z,G6_B4wMM={MLRJa>2߿{kUn7Js7WvcC "x9ef:!ѱΏ z rC8#I}h5p ]z`vؐ)ʬ]L%&v@K-na M+.7FF uO?k]Ɔz,_pp~M̂ʢˢg8$6ZtEoZb“szBBk>C/F[,T#Up&qOR~-T^ٶm7EOY>mqԆ= El#C0m3E26պYwz5M!͏n ԧX-;fhL}zuó `б1bf&_w@S)ml$ۖO Y1b-Ao0d\0 ]aD~_Ɣ )fB'4b`}6AhѧMj`m=\c>z6xCMD5:8JӢfvbgب$c!U0B6 ɯ1-$=Ĺ'ч160hchO,U#M๪8ҳJ%e7~CJEV GC!u@[_ò4OW ~$i 2ĵ&I! aM/du$Y!J]Bs yh) @q@NB# &48`!('_C,oF!ၡmBR:ǢQOQ,gÏO?9u*s: G-^K ө\[7$T:_dPDTy v 5׎7J;b18&%Ѵ{T(ӛ~Dq8gDn&I]TkXTCk'Nv07Od@;YSef|*̼4IqN-wՋ(:u =]m3ҵɟ`(7|&&>Ccz6'skkպ_8-u}C_{>3377;g#|u=]ϙ@Q޽[Xxܫ?TVhAŘq c⻷sӇI`uv٬gHGgH9Ņ֝OUтppKG/"Llc}e5qn5 m]LT2ǖ~ _Ӆ)nRdl.NgSq~W*\1fK^H$R! )NIV#i'I\!g6:MȯCkBdV73w$sBqS|:1 ٸ>ä坭bP$cاt-֓|Q)s} "m"OJkqy͸ɧӘ9]&qvw%b4lyGk3 q%e[QUwO=q`&M]^݈ӹB駒k\t F..])?z~yU5NgZ!5P;@cJM|Oaױޮ4u2XFJ0˷?]XZ$TO 'V` {6=aɛWDL6܆dlK$@HB h)  K7 {?o$=<{d2c>>:e陣K]9"yH.ox{_|23܃pڪdݳ__~f;EhUrlQoo%dz]3 `_ۋϞ|%湵=0 tj?{,= F7}BO~R5ɓ'_};NOb*wG_;sc^aiC9-p-Gan/Y{# /.9#ĻU׮GZZ8KAd̰{{Ξ>}BYRcѠtĵN䴖*{⺘*SakVY(P\-Rқ['67She[➜uqxZV ĺD|6FZuشS8Դ*Wb[1ZqyچR קҏո1YP5'ʝP}$Fo2BZN >/ϑ.÷G(d00L;al'x/"rq(D< [MJDG)?h'-r jň+J=ZX^PDN< @]%Ml[tduG J,#_9PXo$DIRDt1a8IJEuJ6Ad<#UE!e|wtN#I6?&,y k =\l i҅ 0oD[k#YZ^2%-ˀ7L%?GSr5?ˉda6|Y{Ý<w1c=9љ`o>ː2}̻m 9XIwd]:WsA&0 x~S<ү^~, Q&L}I\YcEE'+U9+#'Ӌ%x4bkG1ϡct6(]dY<%)$h' [hR%.`kJr6CNX\4m kId-#fѸܥe`#GDX{G^|GC.] ׯsݝYZ 4C.cu#N\N{[_rq&FEi.:}l(=Hs̞lmxǟ}ݳzO\e!TΉ;QHo8u͏>o~xӧ=BZKw1Fc8ln]}'5m|&XL!|>z_~٧y*q5Duwx!G?|pQi0gIXfnx;o^$Ԩ%TyOW[0\͛7s.H({|[PP+\rҹ3\!DX!GGfI]*o_bZnsE'Y44z ⮕|0X"-9pH{XQʴTdkzܥrk0q½9]|$J_!L(0(o:䌓 Hw8N%l]wN<,m dQh7tC V 4 ff~9pBJGg.I!ک Kd5\ v8[{dYm_ӹn`<`Jh9fE:"a:C}`"Q͢CeU`z݋̍v2]6+]97ʓ|8}8GQs:IOr+І^`"'ǭy&ݢ7:U;{;Uβf nt3j{-U6>`>Xx>&moRF@ݸ}NV8H`0xcΧkQ~} |Bpѵr ,' >i1s]ph!W4Cw1L Sllm#Y: 89 =ha5L$'#d&[GQ'xm|Ak^1ŖeDXmmUgjODN6XmTJ->g[XiWcv-F#oFq]R΀\kr58fhKר Un5FЋfרٶн7y[>˽.6}{p)=v5NVu_>&0ygzhJΧ1Ƒ;d]b#%z`x8ExFQaKGDE{BTbx#H`qj/~6I6Cy#m4xŏ= “J|R e|Cc48Y <I.ANtΧ ҄OYHe`bt/f,*X#_krt\*E,pJ떊+LPa^j7x?eD}׹Mirz 78_Z6WNzG=EL&;RE8z KR]lCƔF㘿1Nښi@:imb(K'!G%N bw\R5QwlD/yfjT-aw!]E 4%"Ӊ?Nˮ[; ,k zTG}<!BO9[k;߽55GS޽sS#dL%Y&AwR;Npwݟ;+AIxR|b^B O&[;yT?wֻ =GѭL5'w/^}֝;~[ܸiTR6x_kƘ]]9w7?nn\|NL"rã^Y>skwƍ׮\PI"܉sg_[Y]:qjwׯ{彳Um;/T;g/]rϞ>i*nҍ)\1/Fߝ]8wmf'^K1]r/E( cv&=m*ƌCt@Ι3O>q|Mf0| D qMeBeYiIїa:ڊ_PZK* e_XSgc0˩F2`2I@8\sdΦv-ׂj )6Tszyc\tb&%0fk5m9Ņ7%luol Ô4ep,@4{-ẉ~:x#qkhj4鏦v!-"BHYƆDOVمc[G$|MY))beZH .c0@\bK 6-z _\+WWq)U46FL0p(PckM\+dPQ؆0dѻM~,κ¤}c[eDsst54ڜ9Go &LH59`=k1yA6uMW{ahDeBxq6[mQY> l# !5s TBhk_K mi+%S֚Q} X" $W$Ƭ2v[^`8= 05Nz73l&q2P8;s55ybbFutMC884ˌ A@3 tkVqex^&^i>C@& `LV@;iC2Aѝ~1]H/9UQ}Atx>ySYL2@9آ&$5,kpVG0#cExfUŸy GLQAE6'kSDZ{Ry0X %R%'hBYVl;f̈́G=$Pu?8mQ/Qw 5 9i:o)_bPrKK*TN >DK؂`Fs Lni'.dXZN?:U=IKud65( 2>Q`A,8^DِC/ CZj:w X* G;NDo |vKq"&Eo-.-; _&$)( {ZvqQpՕae$|ѹ=J1=Lvr'Ie40߽{E%mό9sj~bscx >c3`tOm_I'FSUy>4udΟ={mYjLtvͽ8U>s B©ٖj)z"7t~eK/^; )w˶םic {/_|ݝ 4.Tj"W._r޹RZg]0墐H_>{T9H_0,c{v@Si)_[=/?a>4Lp&i֩i]t9pgvj}p-(pGvO4B$Z'pM d!`'wvϝ=ݩ2I0Fa]IT'&G[:yٳS eZ -c|Z9=vO2:'=M͓&qn#=^ k 1#d%5amًS9ydq4\ۊ,`CV{*v{.!MžT S,FW5"%&tkBn-[株CT/C鮫Zm+˳r➺RHi5@edfD ̗ytQ`GDti`uzh-=s'1SIV:3G%C 3ȱ`[]:[&CJvI ڭXn-R j:% TVͮP{5FX5Ҕ œj)^x[Ѳ'ݠ&;wp25z>UTyt[KTF1 +w%Inf5MFh((qH^0&/uIG0[lQ̱E vhQ߆6 *Кk6 wkM6Lٖ_kبdnjSt4PS+ -yws/ JtAчUy>$篴.N5:}H`qˆ4~85= P4cl2a:#+JRB4Xs<sMs$8Y={kS*"$Gq=0ӏ1!s^*rĒ^#=9`5+g3CV s ͖Jjj(^xE'7 OƐ R_d,#`1cG@RVT&}mQUFx_LGk2Q9SϯtZ[V.DuI3yn$δN4th'q%*Ճs)mW%Me0i2̹/?rxaECnPqa_v&{䁸VY,2ku*EҸBjkH)|lWN%NNI Kkx >|h}1ZJ|rAP0_q*irzDL0,+Np@|:õjvaeY,@7U4^*7 #q:gDimPZ6摽C㓴DMVeB SI_A0hbI 5|n;& I  0izb蓿[3#F,G @jU,Meo Ϫ k3ԠJU0LUV#<"5;fR? ҭ|:dFOnb?#B/ӡxL­%8ɺ g`gkgۈ83eU%V˔ʒ$gZ[^ܯ2/;ikْuTJF-`>|oviVᤌw6  rٮYi2K:7Zp{Zg:נՍ*vmk5,x`:j|pOm-u:&c fk F//ϴb\o5",ucmho@֔ +N9$'Y(({V78PhUC2}I`ņ $WK Me2RE4zP+HU @8LuM}a3ʙo?j$3ZU4h*VkÄe`C8С|D}/OS}~NW[a <* zbEIs(FŘYke0,k=ej; _iZ"D6HO#OdQ0;sPSi Ce(JX woލs"nYvdzLVP-47iřל H9VS[$B!U:ЂZҊe^7BZL|\zOmQYQU WE _A bT2LJ$D zRq=w'-V..Aj,n@Df8&VrX72(HYpOS-dZK8U^5!}(␌bTS1pZŨUXIi'-r)xy_6!yLO>1fTmVVZ"ޔ8PkюG8)%. qLX 'e%>\"-1a lyinFs?N4Yy.kJ"ҳ8M[>&m!m!{QdPۤ3nЕo`A:إxqJ P* 1kr@;`d8.Jo*\1n&ؙNc-cvHfTRoZOtN\bu-|niEf5֚Jƭ%p4Ɔa" cV <'3ߓzL#oF@bd1k 4ٛZM{ (aa%Ehl5ZS iJs5gר2_ L±q=Wf*[gyɂIGRlDLBV{iC4^ hdZ. YPyqq/` _pq,bZX)8#~鉥&12_cE8J^ѕ/:DCS(҆9Z 2ictLC#hoW 6}BZb>cׯdY1. ,JNN݇\v1:I9ApM ^Fcʞ dҎ]K2jKw}DbvHfQr|l58INH:~ʩVA7&O"|c2fI-OrZ1;H;Z\QT8}p@ZKvkZuj!eu|g~>ZwfzpDsnK!-F ;Ɗs&QYT1 "]yDH6#0Rn-(XtG_ jLP"UN)z߽m1HH/F%U8+5i!5KO&-1ݕ{ 4JW2UBhV3NS}^u 'x^7  T:7d_ʜ]P*#W>[KGg[[=U'6X8!]~Vs]ӯi[A2ǔ~+5S*m/+ b!.*2mt@P+- T(c S2Uj2C&O˯ J`b#0Yd5Dudp`&{’O qCF3Z pЕ;mk13'u(£۴ ^H@/jj@0 >H=SRRN}Q8CԲV ' IԨh@y/Ezd[ Ybe|}1 OQSM"^0#9GwF/ì䩋C=F#xiflH)HHI(9X2Z/mO`Ltg#cfJ^ x`("Ue,V3g1rrp MB,FS`قڴ+!3>8&%Th- 9[AwV⠶79@ =\7[5w haĵ~*uN *ALSF=FE libvips-8.9.1/test/test-suite/images/blankpage.pdf000066400000000000000000000005551361153320700221600ustar00rootroot00000000000000%PDF-1.1 % 1 0 obj << /Pages 2 0 R /Type /Catalog >> endobj 2 0 obj << /MediaBox [0 0 595 842] /Kids [3 0 R] /Count 1 /Type /Pages >> endobj 3 0 obj << /Parent 2 0 R /MediaBox [0 0 595 842] /Type /Page >> endobj xref 0 4 0000000000 65535 f 0000000015 00000 n 0000000066 00000 n 0000000149 00000 n trailer << /Root 1 0 R /Size 4 >> startxref 221 %%EOF libvips-8.9.1/test/test-suite/images/blankpage.pdf.png000066400000000000000000000073231361153320700227430ustar00rootroot00000000000000PNG  IHDRSJ pHYs  IDATx !CC ?3pdx@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S xIENDB`libvips-8.9.1/test/test-suite/images/blankpage.svg000066400000000000000000000032221361153320700222000ustar00rootroot00000000000000 image/svg+xml libvips-8.9.1/test/test-suite/images/blankpage.svg.png000066400000000000000000000065211361153320700227700ustar00rootroot00000000000000PNG  IHDRSJ pHYs   IDATxIPQA$a=v{<۾O\/^mxLf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0S@`3)Lf 0Sn۾'n=k/1IENDB`libvips-8.9.1/test/test-suite/images/cmyktest.pdf000066400000000000000000055000041361153320700220760ustar00rootroot00000000000000%PDF-1.5 % 1 0 obj <>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream application/pdf cmyktest2 2016-02-09T17:29:32+01:00 2016-02-09T17:29:32+01:00 2016-02-09T17:29:32+01:00 Adobe Illustrator CC 2015 (Macintosh) 208 256 JPEG /9j/4AAQSkZJRgABAgEAtAC0AAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAAtAAAAAEA AQC0AAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADQAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8ACZ6G+POxV2KuxV9PeUP+ UT0T/mAtf+TK5wms/vp/1j976r2d/i2P+pH7gm2Y7mOxV8befP8AlOPMX/bTvP8AqIfNzi+ke59n 7L/xXF/wuH+5CRZNz3Yq7FX1R+RX/ks9M/17n/qIfNVqfrL5T7Uf49P/ADf9yGfZQ8+7FWM65/x0 X+S/qzx72y/x+X9WP3O30f8AdhAZyrlOxV2Kp95c/uJv9cfqz1H2D/xfJ/X/AEOs131BN87pwXYq +WP+cxv+Ug8uf8wk/wDycXAr55xV2KuxV75/zh7/AMpnrf8A2zh/yfTEKsz0R8edirsVdir6e8of 8onon/MBa/8AJlc4TWf30/6x+99V7O/xbH/Uj9wTbMdzHYq+NvPn/KceYv8Atp3n/UQ+bnF9I9z7 P2X/AIri/wCFw/3ISLJue7FXYq+qPyK/8lnpn+vc/wDUQ+arU/WXyn2o/wAen/m/7kM+yh592KsZ 1z/jov8AJf1Z497Zf4/L+rH7nb6P+7CAzlXKdirsVT7y5/cTf64/VnqPsH/i+T+v+h1mu+oJvndO C7FXyx/zmN/ykHlz/mEn/wCTi4FfPOKuxV2KvfP+cPf+Uz1v/tnD/k+mIVZnoj487FXYq7FX095Q /wCUT0T/AJgLX/kyucJrP76f9Y/e+q9nf4tj/qR+4JtmO5jsVfG3nz/lOPMX/bTvP+oh83OL6R7n 2fsv/FcX/C4f7kJFk3PdirsVfVH5Ff8Aks9M/wBe5/6iHzVan6y+U+1H+PT/AM3/AHIZ9lDz7sVY zrn/AB0X+S/qzx72y/x+X9WP3O30f92EBnKuU7FXYqn3lz+4m/1x+rPUfYP/ABfJ/X/Q6zXfUE3z unBdir5Y/wCcxv8AlIPLn/MJP/ycXAr55xV2KuxV75/zh7/ymet/9s4f8n0xCrM9EfHnYq7FXYq+ nvKH/KJ6J/zAWv8AyZXOE1n99P8ArH731Xs7/Fsf9SP3BNsx3Mdir428+f8AKceYv+2nef8AUQ+b nF9I9z7P2X/iuL/hcP8AchIsm57sVdir6o/Ir/yWemf69z/1EPmq1P1l8p9qP8en/m/7kM+yh592 KsZ1z/jov8l/Vnj3tl/j8v6sfudvo/7sIDOVcp2KuxVPvLn9xN/rj9Weo+wf+L5P6/6HWa76gm+d 04LsVfLH/OY3/KQeXP8AmEn/AOTi4FfPOKuxV2KvfP8AnD3/AJTPW/8AtnD/AJPpiFfTf+EPKf8A 1ZLD/pFh/wCacyfzmb+fL5lw/wCTtN/qcP8ASj9Tv8IeU/8AqyWH/SLD/wA04/nM38+XzK/ydpv9 Th/pR+p3+EPKf/VksP8ApFh/5px/OZv58vmV/k7Tf6nD/Sj9Tv8ACHlP/qyWH/SLD/zTj+czfz5f Mr/J2m/1OH+lH6k0hhhghSGFFihiUJHGgCqqqKBVA2AAygkk2eblRiIgACgF2Bk7FUmn8l+TrieS 4uNB06aeZmkmmktIGd3Y1ZmYoSSSaknJjJLvLmw7S1MQAMkwB/Sl+tZ/gPyP/wBS7pn/AEh2/wDz Rh8WXeWX8qar/Vcn+nl+t3+A/I//AFLumf8ASHb/APNGPiy7yv8AKmq/1XJ/p5frd/gPyP8A9S7p n/SHb/8ANGPiy7yv8qar/Vcn+nl+tNLDT7DT7ZbWwtorS1SpSCBFijUsamioABUmuQJJ5uJlzTyS 4pkyl3k2URga3YqpyWttI3KSFHY9WZQT+OYebs7TZZcWTHCUu8xBP2hmMkhsCVv1Gy/5Z4/+AX+m VfyPo/8AUcX+kj+pPjT7z83fUbL/AJZ4/wDgF/pj/I+j/wBRxf6SP6l8afefm76jZf8ALPH/AMAv 9Mf5H0f+o4v9JH9S+NPvPzXxwwxAiJFQHqFAH6sysGlxYRWOMYA/zQB9zGUieZtfl7F2KpVrPlTy trckcmtaNY6nJCCsL3ltDcMik1IUyK1AfbFUv/5Vj+Wv/Up6N/3D7X/qnirv+VY/lr/1Kejf9w+1 /wCqeKu/5Vj+Wv8A1Kejf9w+1/6p4qj9H8o+VNEmefRtFsNMnlXhJLZ20Nu7JWvFmjVSRUdMVTbF XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+dv+hlvNH/Vqsf8Akt/zXmr/ ADmTy/HxfRv9BmD+fP7P1O/6GW80f9Wqx/5Lf814/nMnl+Piv+gzB/Pn9n6nf9DLeaP+rVY/8lv+ a8fzmTy/HxX/AEGYP58/s/U7/oZbzR/1arH/AJLf814/nMnl+Piv+gzB/Pn9n6nvHlvU5dV8u6Xq kyLHLf2kFzIiV4q00SuQtd6AtmxhK4g+TwWswjFmnjHKMpD5GkxybjOxV4h5h/PfzJpmv6npsNhZ vFZXc9tG7iXkVikZAWo4FSFzGlnINPLajt3LDJKIjH0yI69D70v/AOhiPNP/AFbrH7pv+qmR8ctX +iHL/Nj9v63f9DEeaf8Aq3WP3Tf9VMfHK/6Icv8ANj9v63f9DEeaf+rdY/dN/wBVMfHK/wCiHL/N j9v63rn5e+ZrvzL5WttXu4o4Z52lVo4uXAenIUFORY9B45kY5cQt6Ls/UnNhEzsTf3sjybmOxV4X +aX5+eZvKPnS90Gw0+yntrZIWSWcSmQmWJZDXhIo6t4ZtdLoIZICRJQTTE/+hqvOv/Vq03/gZ/8A qrmR/JcO8o4nf9DVedf+rVpv/Az/APVXH+S4d5Xid/0NV51/6tWm/wDAz/8AVXH+S4d5Xies/kt+ Zmr+fNN1K61O1t7Z7KaOKMWwcAh1LHlzZ/DNfrdNHEQB1SC9HzCS7FXhX/OQn5+eaPy11/S9O0ew sruK+tWuJXu1lZgwkKUX05IxSgwq8p/6HW/MX/qy6R/wF1/1XxV3/Q635i/9WXSP+Auv+q+Ku/6H W/MX/qy6R/wF1/1XxV6j/wA4/f8AOQPmr8yPNWoaRq+n2NpBaWLXccloswcuJo46H1JJBSkh7Yq8 QzQPuzsVdirsVfZnkL/lBvLv/bMsv+odM3WL6B7g+Mdq/wCNZf8Ahk/90U9yxwHYq+RfO/8Aymmv /wDbSu/+T75gT+ovnet/v5/15fekmQcV2KuxV9Nfkj/5LrT/APjJcf8AJ5szcP0vc9i/4tH4/eWd 5a7V2Kvj3/nIj/ya+q/8Y7X/AKho86Ps/wDuR8fvYSebZmsXYq7FX0r/AM4of8cLX/8AmKh/5NnN L2r9UWceT3bNSydir49/5zZ/5TPy9/2zn/5PthV844q7FXYq+hf+cKf/ACYutf8AbIf/AKioMVSH NA+7OxV2KuxV9meQv+UG8u/9syy/6h0zdYvoHuD4x2r/AI1l/wCGT/3RT3LHAdir5F87/wDKaa// ANtK7/5PvmBP6i+d63+/n/Xl96SZBxXYq7FX01+SP/kutP8A+Mlx/wAnmzNw/S9z2L/i0fj95Z3l rtXYq+Pf+ciP/Jr6r/xjtf8AqGjzo+z/AO5Hx+9hJ5tmaxdirsVfSv8Azih/xwtf/wCYqH/k2c0v av1RZx5Pds1LJ2Kvj3/nNn/lM/L3/bOf/k+2FXzjirsVdir6F/5wp/8AJi61/wBsh/8AqKgxVIc0 D7s7FXYq7FX2Z5C/5Qby7/2zLL/qHTN1i+ge4PjHav8AjWX/AIZP/dFPcscB2KvkXzv/AMppr/8A 20rv/k++YE/qL53rf7+f9eX3pJkHFdirsVfTX5I/+S60/wD4yXH/ACebM3D9L3PYv+LR+P3lneWu 1dir49/5yI/8mvqv/GO1/wCoaPOj7P8A7kfH72Enm2ZrF2KuxV9K/wDOKH/HC1//AJiof+TZzS9q /VFnHk92zUsnYq+Pf+c2f+Uz8vf9s5/+T7YVfOOKuxV2KvoX/nCn/wAmLrX/AGyH/wCoqDFXqH/Q sd5/1MEf/SK3/VXNb+Sl3vff6NY/6kf9N+x3/Qsd5/1MEf8A0it/1Vx/JS71/wBGsf8AUj/pv2O/ 6FjvP+pgj/6RW/6q4/kpd6/6NY/6kf8ATfsd/wBCx3n/AFMEf/SK3/VXH8lLvX/RrH/Uj/pv2PbP L+ltpOg6bpbSCZrC1gtTKBxDmGNY+VKmleNcz4RqIDxOrz+LlnkquORPzNo/JOO7FXjuu/kHdapr mo6musxxLfXM1yIjAWKiaQvxr6grTlmNLASbt5zP2CcmSUuP6iTy7/igf+hcbz/q+x/9I7f9VMH5 c97V/ocP8/7P2u/6FxvP+r7H/wBI7f8AVTH8ue9f9Dh/n/Z+13/QuN5/1fY/+kdv+qmP5c96/wCh w/z/ALP2vUfIvld/LHlu30Z7gXTQNIxmVeAPqOX+yS3Svjl+OPCKd7otN4GIQu6T/JuW7FXjH5k/ 84/XvnDzfd6/FrUdmlysSi3aBpCvpRLH9oOvXjXpmz02vGOAjVoIti//AEKbqX/Uxw/9Iz/9VMv/ AJVH81HC7/oU3Uv+pjh/6Rn/AOqmP8qj+avC7/oU3Uv+pjh/6Rn/AOqmP8qj+avC9Q/KH8sLjyDp +oWs2oJfm+lSUMkZi48FK0oWavXMHV6oZSCBVJAZ/mGl2KvFvz2/5x/1D8zdb03UrXWItNWxtmtm jlhaUsTIX5Aqy064q8y/6Eh1z/qarX/pFk/6qYq7/oSHXP8AqarX/pFk/wCqmKu/6Eh1z/qarX/p Fk/6qYq9I/Iv/nHnUfy08y32sXWtQ6kl3ZNZrDFC0RUtLHJyJZm/33TFXt2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV8X+UjPqGtJcQt6lzLWSOdpJUYSR8pPWkkUSspR/jBIpTYjjXIRH qW9noU2sQaysmheaYhDeXUEsl6ohWXkxVGWayZG5s3NOa0HJKU348lvBvYtfuUvyz1u81TR10m/h Mt9pM9x6oiPqrFRyfhUc+f7yMtxCk04sCNqmErFLIdVfzN5j1FfN/ly/hhVRAJkkvZQywJHPWKNm ZqUoQXqRvRq9DVMqIUDZifm5YfMHmqPUJnN1ZX0UqyW6xmHZIQhkSOVkqzBmKNy2LVLAnISG7OKW eU/MVtNo6Q+qrNI7QmSZPiedQDCGjVm5sqqOPWvQddhGXRL0271qLSLZEljuf0ewiBtJiI5BwC8Q 01xHGjKzBqcmUV+HoKNeTTW8/wBItm+tX8MOoQ2mmxTSLDbu0jL6LMitCjyLAzoAArDiKciTSpyg HozS7y7o1tLZal6arFPavdRtcqok5XEcPpji7BDTdmX4h2pvtkUqQmlmjglnWZ711R0uQHSaFjKC fQA6+mA6hKUbw+0MVZN5R1K8by7LcRJG1paTNa3OpllkDcWZKrycj9knn6h2bYk7mUQglmOtW85a F9NhmtrMz1ueHpLJwdWlciNIwsblVJIBZq/ZUb5ZJiGOec/KEup+X9W1TTeKz6UI71bmVw8hito2 nlX1Pj51FWkWrH1ONSaNkSAQVumS6Xrmk61o+nwToi2ssMUEnqgKoEsfOUyF1k48pCqbrvXb/KQb AUvMvNlrCv5q6VYxmPSri0FvbPJbQpbrGXujKkhjKcOckUwd0ZHpy3/lEZUCoYZ5oubiw/MSa5Fz Hem3kgmhuZBEgkQxpKpYWwiUEhtygr9OMuagsv1bU9XvHhn1OC48vafqDx2skdgwmaWCnOT1miaS SQp8QVPQXjy3bxKXr2iXH5af4O1GHSbuNoteQ2lxKqE+o9woillM8tZXI9Uu3qSEr9nbLIyALAh8 1+TLq10nU9G1W5VpRZX73F5CoBZoLdElKLUgVYcwKnK4mknkzjzXpxT8qbC1uS0Fy2sJNqESinqv c2TXElw3InkR8KgV6DxNcN2CfNerMdF1KfTPL2m28Eht5pLN7t3LKJDHb83VuPxAU9c8RQcqDcfa AF0GRIVfLd/rN1Y3FxpFlBdQ3Lyx3OpajIBYxFWAdIxHSS64/aBQ+mwFA5NcsgCGEjbGfMOgyPZ3 t1cX73jw6fcLa2lkv1aEIhLyVWOrMI0IYCVmqP2uwjaUyudI0Yf4e0y2tYI7ax8tt5j1KRY4qTXE 0RihMjoK8lZ2oa13FOgycTsAwtMY/qfmK5FxfJFM+s3LGKARn1IbaMevbuwcyxtPPGiqQ6uxQIP2 OOR57n8BPJ6r+XmgadpGrfVLe3aCe0sTE68lI4vMDVhG7qSXQkV3G/i2M6rZlA7vmbyabbTbpZ7g /UuIcCVljcAEbARvRTQ7mhr0+nHHNtpmEF9pwsLuxuFN7aORO2375ZqmjK9GZOIO/SnKm4amSval pBeXNTj0vzkqH0ILPUYpTbzdnnjZWHIQMfTkIAjcg7BefickDRQU884sl75citLqRLK5ivWuWh4s skkTmRJGKuxDv6kzn4twOXE/aqZy2QBupeaxLPouh+YbOUXd3BI0txbQrWZFYsJYAq+oHY8uJYAD 4R+zwpKW4tA5sF8iXcc99qC2EJSMXyzotF4CJnpGWQkAgA8mANaVoRscrBpkHq99ftqsi3OoKY4k atlA0EzFgqgpISwk5GTnyPJaVNeVaBZk9WIDF7yRE10pYs7Q3FGINVPqem4KHn8VPsin2vDs2V3v bNKtFa3t7PXBK6GJru8k5O6NIiBRIUQNuWHA0UhTt0G+NoROjW/12xhhkZY7Uq0jOtUk+EHonLhs ZD15bdR3wMk00jRrDRpNa076ygN7JJeW8UTgytBI4iDcaBfgaEsKKOXKlfCYLCmeXaA6DLYaYUWd rK4lV0iqADRBIORL81tvh2avI/FuTk+JjSA0y00qXTtRWKMTW97MYNQiBVS1vOkZm9GVqoKEoB7V 3pRxGJTJi/5c6gJPy8ELwx3DWxlhRquZDHbKJUYeijvH9WdneOQfEHZRVd1LEoLEfzP0yfT77y7q L3cTXlw0xktUUxm3kin5mPnsTwkk48CeScePxUrgyDa1BYwJU178zXe6Q30T3FtBMkSekzpCqQsi Ab/ZTiD36nfIk8lD2nzKdOtLCGaPUIJmjmtrq1kDwiBYomUmRI2HEoEZlRFPTflu3KZNBICVarpu n6Rd2EtsstJGWPSNQT/eqG5epjjHOsbRSUbjGf3aUAJoVpDiZU8U0GJ7rUksFf1HdpyGA6t6MgNO goSuSYBnX5q6zJaW/wCgIliWG6vUvi8SnaT0jEUkJIAeLoeAp8qYSdlKf+UY086S6dbSRsujaDAs upOCWF2qokpR2atUieEKFJ4c22HwnkAbIC09l0+7srnSEjuEEOoNFHDHA3No5WK8A8Dk7IX5NXYm gYgd7bYU8u/Mix9LVtRCzFXurDkGVX5FnJRomWZpW/uWHxBqcTTptlcju2AbMZ8kXCt5FudTnMiX mqX8Ol6j6TcF/RNrZK0mxDKeUVvJGTTlVq133IO32MCGa2XmLVJL6LjakXGn2kMbqlCxT0QjssfK JY/WQrT4q0UdxTHjIpPCzv8AK68gvfM088UIiH1WdTLRS0p9aEkl1JB4nY7nev0gm2QFPm7yfawa jygvwHqvqBJQeJRFJeoAAPIpxrvvTam2UnmzDMZPLumxXBbToUtDbL8Fu4b0C8nJmopIZSrKdkKc unbCUhAT22pSWd3AsRa7WI3MsMoDRXHEAgxykRFyq/upDInKj0qOSsVSo2uo622h3xgWa/0uS3nR LOUo10EmjU2pVn581/fV4qA+xpy5UyQO1IKceR/MGn6np8llHzWKznjmN7bvuEnRpZQykkkrOGJL U+HbagrKJ23Y3uxTQrNfL3mHUNMBEwcRGHg4rKsgEgADfyo/DjxrWtCcgWQekwatDcJGLikluoHp LvIvpr8JPqNy6D4fhb2r1xtKQeZo57S1tbi2CCS0n5s87UHpFWVkLEF92CFzy7DbYZG0FjFnKLzQ dcXT4ZJrmW9ZyjJ9o3DktRUYN/d/CPb55JCdaRJZIkcSuzwXBWscylWXgpqhrUDk9uT+0N6EVJxv dKe3F1Zwtp99dOrLyng+srWsfqT+pEPVBooZ4gKmh+yvdqpNKyDVNRvFtpYpoRUxsiTcXMpEiLGg 5uv2mdq0ND9stXlhJ2RW6W2lyltpyRW6JKXHGJg0e8bpUgpx24RxhKBa/a7VwXstJD5cGox6prmm uoWV5EmEqqywiFfUd1bkU5DiqIR9mm3LAFSb812luI7C4kZ7lTcqrRScjL6gDN6isDxaqUR+q/Z4 13OSLEsX8iWFteecmRZmtrORpZJbiq1iVI2lZiSOAUMKVJp40rgrkgPb5Z7y5lEOocZXvIkhMZKt WOJ15wtEwNOZ+I70J34im8rtmAxvSdBW51TU9N1WeObSYUitoJTtLHak+sRWUEDgpALcSfgDfCwF Y8O6vMXhvdF8+3KCLleWstzKCBwDxyRNLGRHvw+B6kcj1++ZHNh1TX845BFd6NaBFNy8ct1dyx0C SNNIBQDlzPxRH7Qp047YOiZM78j2FulskVhILMWlvGedUQSSCSZzJyfl+7PESfCRXt8NARHcp6PS dI/R8MSWElYEdmDXEyq5SVUYtN048uQXrUdR3ywdzEsF/M3VbmJ9ZnnEbXV27h+NSkbzWCWihahT R3hLIa7cancGhJUBg3kGC5ls7Jku1t4LUunoNzo8s1PVcp8aSL9WcQ7rX94wApQ5VaQGTR3C2cLR wwtCLkgc4yOcvqM5RuANKhWAK/qpsmTIPQ/yOhvU1/UGvZjJI1r+5UPyUL6ql9j/AJR2pQda1rsA U08E/LURSxzvAsqXVujCWZmADK60AVdlHvUk91IOxibBRFnmm3VvCtwyH0g4hMiAmgADJuFJ7bb7 /wAXdks1SoskLACSImaKUhT6fJSkpZf3vJRCzDgR9x3CrH49W1WC9u7GWSF3hufWiiCshdZXLpNE eLvUSB/3b9OKUfj8TIW0DF+i5tZF6Ve0lvovUMy1UgAMjCjfDyEgK7jb7JqK1kxSxYNQ07ztpsU1 w2oC5X6tDJKgX4GdhwFCaOpO5qDQjEr1ZvKs8asyRCFnq3oOU4MxKq/FOS/E1S1aUNenQgMlmqK0 +nXMMahDNE9tIzVUiMrxMirN6f2GkIJ2A2wILzvSFuopTDKzRi4vRzkLMrOoDKVXiaEfvPH8aZM8 mAelW6QadPpzPA0YEEjTEgLxkPFnryA683psdxlZkGwBMbFv0lo81vOu13GStDXkJkaoUOyvxo3w 02+mhw0i0BFrk91YTWV66w3vrcuZKqeQCkiU8N/VMXM/FVV4+G4tAKxXdZltpp3e1Z+Agen92AAG Hxt2HPtvv1rhShdRlaw8zW2rCNvqVzxt7po0jKAqp4vxIPJuJHHxIpgVT/MzVdDmtYdI+N71rtL2 SN3c8FRZFRWLdWKyVJr9OWgMSs8ueTa3w1mxLwQ3C+pPaW7sWZ+NfhlYB4iaj4viBrtxoDkTTIRQ F7+YI0+7k02xtHt5jcr9aiuJmnkE6MFqZnMjNx4KPt9NqUxpCc+WPN8OtXl9JeMyXkXwEoVRSAp9 FzRDvHKW6dVoPfG6TzY5r17N/wArKvLtbs+vdrMk5CmOMRSWcaqPhLclIbcfa+dcN2wpS1ZW1Hzb psxRXi06CMPQVrJCxkdeZUGnI0Ct03qNiMiDskjdnnkpI4Jr27tw6LPcgpcOxXkqNI5j4kk0pJSg 3+44QUp5qGrrMZUDIAXL2z8GLKDVA60UEMoCiopT7W2HjXhYX+ZeoC48sXH1iRm1GzmJimZm5usk 7ITJzO9Ueikd1PGm4wiVsSKCH0UXltboqn05dOtxH8HQl60JWq1dHDDlWlAu1MgzRFlf3Ul9ZXSb tHC5dWKcY2Mao67cD0HLf8emNLb1H8j5IpPM+oemwIS0IavXkZIyQPkeu2MVLxz8stImisZ3MvGe SJTIgVqIrAyKHqFCmijxPh2wdViyf0zFNdNInFljUxggBdjIYwnLkOoHYCnbCSypWmaKV4jcXCxS NGSoYcNmUMwR1Fe9G7H/AGQXI2hhMi28Fzb6mv7yWBjHd8G5MFHKVHkNWY8ZY4iDvszeNAQgrba5 sjqSrbqeLu3C1m40QMrORxAK05M0n2uRLEAChYyQ7WLPVU856DOJo5dMlvoVS3j/AN1ysyLJyqWP 7xVqKGnX6RWxW9wzfTHuIbJZT6U0F+6NCFNXYUVuL0A5H4lAp1J8MQWSFu4ZHMlpKsrvKwkkbgg9 F0AWWRN0q/GRSh8Qflih59oEJN7fSTzesGluEhZ+TOJqkBglSA7EClGPQ9cMjswHN6Hrlg8mnwyv IUvp5HtSkbkKsciuAGUCStNuTA/aA6LlQpmVcuNPRI4ypWL045WjQgOhWg+ID4uIb/MnJgqWPxGW 41iN2cwW3L0JyVAZrmIluSqoJ5gIwZ2qCvFPEKliGQJpNsqxW1uAn1hCiLGSjiWY+lEyipPJhyLl tqA79ysm9e06wbSJNILrWaRBztz60ijl6jBNm+0EqS+1DUkA4VeOa4t5baqHmYvd27iGVJSH3h/d UY9GBVB88nyDB65+X0Fv6du4vHjidCzMhInDSITRNqVH7I9splMOVigbBebfmbp0kHmS91C3txBZ mRV9OOvpoyr8IWu9TGqOSfHLWiXNfq92vlm5t9QgLf7nbV2mjcDYvCrLJH/s5eVfGoyA3SdkTp13 H5gu47t7UJeBuMPpMzCSNyI25pw5UHHjyrtv4YbrZHNG+XbhJdVubhOBuI55oeERUuAhjCKVAr0T qdvlXAQgMq0q/MiTWhJWG0/fGXYREceYIBb7S0+13HtTFkibevrS3cRaRpviMc1KKGIYR07U2q29 TQDYYoYf53ul9DS7OaFJWvJw45cqsjKahiOLD4pFbqdwMPRBR1tNbQ/WoJzyYwwrMwJYlkLpyVdi 3Xqx606Vx6p6IiJZtN+opbg28V1J6UrTqtGURO270ZhxFOPf78eaKepfkNHx16+ZWWSP6owWQKUJ AmQfZI2Hw0H6sISXnHkuT6vYXEzOq2z+kvqOeKn0wQ1TToOR3/rlYWPJG3Gohbi4eUFgsEbdR8Zb nwIUgilEPU0HfvhkyCB1+YHgrt8CwxeojbAM8aEb1BqOORUpQ1tcX0l7p9tJWSeBx6zB2VfrAMPh yZlMXuafLJAoISGyluo/q7Sqtvq1vdRW86Hly9QTAEgryXiQu7Dx2yY5sGX+Z7GCyuPK83ERyPq1 usjUFfhLliWWgYgmuwpvtkejIqPkS9bUfLUDEeoVVbaV2BX+7RVEVUZT+zWvf6MNKE9LkV5SxcXh djGJKMSDzKsvKgDMARQ18cCWGeSbWA30lzcIzJHdypK5INHkDsshIA/3ZH8S8agb+NDI7MIjdmV6 7G5sZjOR8Uk10iA+mJYVVODUNVPJytBseJrldM0u1rzBBHH9WtoS95KkjI/V1IX4iUIFDVOIO3cr WmSAYSLHYdQ1DT9MjvowwEdwjSuu59Nn5Px6kH042NevfCaLGLMLLlMfrs05njPJrSE+mOTIgMJr XalONC/xddq7lsDtc1WWzaW8EZu3tbdmjthRBFPIWEb0IdiAsTqyrTkKV36GKyLwW4u7t7r1VYmU sWIb4qk9ag9fpyUt2INPRvyt1573zLbW927Wd/AJGjahZZmUENGFNPSZRyboa79DTIQwgnm3S1BA 5J/+ZUdtFb6k87qkF8vFS4Yj11jrGAFrT4Yz9NMsyx3tqhLZjWsXukzPomn6/GHsFsYnUqhdx6JK BVaN42UN6b8iH3+7KopkWCeU9Xm07UkZZWRZSEmIkMf7sMGI5VHh3NMnIMQXpXlSC4W51HVDB6cs l5P9VV6UCHjKooeaj7a0IXauApTTyuL2W1JnuUZ5viYAspVopJCybKRxYANQ+NMgoT+W4VUnkMiq z0SKSOi71AY/EdqD4qU+g7YlLCPMKi782aDZAm54RNcRGMVYoy0QAV4kr6PUbZLog82Q6ZFafXrh 2CkM8SOhKALxL1HXcKXGz9tz3yNsl2oGSbVrNatLNayc+R4iIq0UnKtf5eQrv3p8pBBelfkRY/U9 YniWrKLAB2qSvIPGPhJ7Hc07YYqXluksE0f0SFS3niiKQ0NSqqq16bM3ME9euVhMV1oYvrsnouIk lht6xAV5FWmK0+242B9hTetNpUqca7YWV7bPG3GVSqiRhUAGKNVb7BWpBU9qYOFneyVWmlwX9q7m NJY2iTgIjRpnRmZ/gHYs3BelfiHTBTG7YpqUWoKsOuEG2gvo4YpbpqJExjiHoSkR02LoyuTWgK7E 5O6LCmTec5Ha90m/mb1LH9KWUqu1TGqwySBkav7X74E9qdaVFYgbJkxv8u764tJtS024dfX0xlUJ ISW4xMyPQDeid/oyaAWSeYdYSCyvZy61Zhb2cc3Enky7+kFG47ciB37bAcypLHvISS3Vpb24VZHO pNO8zt8LBLafYnfrUkV2wz5IhuydtSVnLwyKpKLBaW4+GSZpWLvxVuoowNR8NASdhkaTaWXUcmna lBLLOJZZJUa5/el+DS81fsvwgDjVaVP2hXCWBO6yWzESH1I3l09lYXFArOyuApCknaqykUwBQnPl GeN9NtLYtHP9Ub6rzO6s0YBWQ78vjR1aldqfcWyJ2Tf6xDDqN1NEDIkjIjhaygKUjKqyK1VZZGdg Nuvvj0V4Dr2nnTdcu7K0dgLSZhbuT8ahW+AlhT4qUJyVMGb6XqMVrLo/myRFMd06C4uFIBt7lHEF ykoANUmQmRf5WbsuOOVSZSFh6HrqQalaRyzRmSKOaK5KdCwibnTfpypl+UWGuBp5n5pe0TzZZ3fp rJpIaP4d6hTKWnR99nBkbv3B6EZjxjszkd2J6jpT6d5iltS4uOEqssgFQ4ejglSVIqG3Fckh7DFG E8rRsCisFMnJBxrI5QVFWYhfgA+1/DMYZv3nB5W3GHp4nWEUP+FWvp4hatfGOSf0jzYorqI+HJjR 0CgmvVstAa0BDK76NNHcSsb4vS9Qq4K+mhnUqTQmgVH+EAUPc9VUm05EHm25lu6xLYWVvGgqCyl4 QxWlQKirV323w9Agc04srdrrW9Rt5RRJJE9So4mrxRoRQAU261pkSyC7WL24fU7C3tgwjSKUxO6g uxjWOMueO32Se344RyKl67+S1yX84ahbowaKDTwGru4kMwNDT4QKdKE+OMFLxnTNQE0umQcgFhCS l5BzX4V5sGVWHJE7gkeHw9cgDVsb3RNjYW82q6nFBqUq21s0Ki4lgZzKxM7t8PJSvFZD7b1wmXJk E7aW1Ny1ncXwRFkEtfSPxBixdacyV4uBWi06bk/ZeJks8oW0Eeq6kDOWZZ7lbTixqzTxW7ROqk0H p8eQoa/F7YmVbpFVXVj3mWLUtR8rXbqivHHPNdW6OftWqcJgU+LkAY5gBtUANvvkra0smmDeSdPe vE2l3CxiRaLxLqOT7ijj4VIpT3yJlvSTySm4eTTfPlzJA6vFdSSmJZAQkkUzNzWgI+H1FPfLI8mB 5pnFdSXFhdXVwPrDQQ3UcTMQQgCCXmAehcsA1ADQKMeqeiYflYttJpHIRrPeJqP909RRBCyE8qr1 9XpXBNcaZppEdn5p1ScCMtCluQ5CluU9xIr8QaqNxVht4mpAxtaQ2ovAplkLg3izMSDvsVkkVSQu /Ekb12OQJtiSh9L8xWiQwrEVkKmNUhkoIwsSoxbu3F2Ryd8lyY2nvlyHRrjzARBMEgR7BL9v3itz kkFsWj9+Kqp6dCT7kM4c03m01pRaTWkgm+uXN9dtbmRATE8ziBwNyq8aId+9BWhw2yAeK3upMPNZ v2iljk+teosXH4jxfw5K1e2SPJiOaM1+CSbULnTNPSRo9curSW0tCjRmRnaRHZUbjwrKg69dsjAW QynKgSzaM+c5bdleW0ijXkKO0clUqacfTlb4qdunvmafNw9yxbUfLNzqGroP0la/WFjVpo4xdqqq WpWRfQePq1PtZQeENgEz3fL9q+98saveecJ0NrBc30Rjd4Y7kekwWNQq8eJkXZOjU+7I0KRPLKG5 3D0PXryx1Hy/Y21panRb06qLC8tQookVrbzXAoRQ8JWMb0/bFOqimVRxxGTil3ObLIJwuHK0kuLa 7tvLq6fOjJLb23o3JVGAfhCVfirKrKCd6EfETuB0wk0aagdkht9cnhkuriehL2FJGc1aSWJvTJFa fEdl+VOtMSLRaH8p6jJI2t315CJPr7hJ5acuHqFqhQf9fbwpglFYllWkvZzx6rdREmY6hHFuCx4C SIuwNDsFJXp2yqVim0UkXmjUr19QsYtPFHkF0I2biQ6S+hU026FCvTtXqcJJ4SzwGAyDi+l7H/zj +jP5y1q6IJSS24Qsf5EaEHpTq3f2yyPNpeNeXIL4XRnnjeB7Vncco2rI0at+7A+EnkVdWrtTkTSh zHnIdGBej6JbyL+kJzKn1y5mia9WkjcZIoAHVfTcfEpaje69O+Y2Se1I6Jzq8Et7c6dcNUSWVZdk dizCOWCjEE02kJyMsgSWPiDUbCTW4bGSSa+miN9EiQSBjLN6qoWFXFKxAAmlaU8cnxAgXyv9SLIV W8qcLCa1JuAbqG2gM0VpIGEdssaGGQAjmsgj8BQVAyf5jmnieb+WruX/AJVV5gsbhipiurcNFwqT zmjFAwqy0b2Jy7IblFd6VPO+jpptn5a1xXeNqCC7nU1KlyZ4THstSjeoxY9TTDiy3Ix7lJ3Zxd+u LDzbq80hNvr9rPdgBo5JAhtmj5HfrxkbYDp3qMx/F3Eet/pQZIP8tvysjms7bVrbXFP15BcCH6qW WORgQyFhKvLgSV+yP4Zdl1Ij0REm3pUHlKFU1B5Z0aW4YMA0VeHAcgKFjy+Ms3+yyg6rfk2GTBv+ VdafrPmWe0N69ku7KFX1d0PJeDNxZRyatAcunlAgJNIlcqYJrGhvpXmObS/TNrZaXKiahdmZfUko PhlCMV9MEAuEHSu5YcclHJfNKceS4VHmaA2EzNCYpmlEzem1IieJYFa0rMN6dcckyIlMOez0Kz0g 2otBbxxTvZgRWstxIeSopJ4qeDhgvQV2zDlqJFkJF5f5zU6V+Y8M96gtWvoo5rmO25TRNIxZGPHh HUFlI+x9G+Z2CRnBlEm90w11tOg/NXQm1SRYtOfR7lZJJKIv72G9jSlRtUsoGx+XXL8Br5s5REjR 5PRfKfkny3eeXihuhqUkqH1bqImLnQUYRiBwV6U+1Wu1cz9ujQIjkQ8O89/l/J5e8w3EEQaWycfW rOXmpYwyE8A5KqeSlSrbdQcgYdQ42SJjKkht9S1nT9Xj1OG7mN/EBxmLl5eK7AEtzDBUps3YUymW MFHFe0tw9atrVPNXl3Sr7WIZ9SjpPLGEWVkUfWZIKgQuka1EI7dq1zX6rNKFAFuxwERUeSd3FrrU kLRQwqzFeCvKJVNGrzBo0hPbc5hfmd9y2iUlC60PW7+5iubmO3+sWwKqxiunj4s4LKqGVF+L01PI b9sfzFDb8fYtyQHkvyXqGh2l3bXUa3S3hDsQsoY0qAAGWgNDXfoflluXViXLZla+18j2SQi3Kusg uJbiqmSnCSFo1iXkKjjRdzU/D45D82eqOJAarY3dtNPZNeeta3Ebx3Nl6g9Qh7tZbZki9SP4l5uP iJUU+WXRzA/D8FPE9L/IrRlsvNGoubs3UqWRDFYhHGUmuaoVO3xAxMGFMycWTiSDbwq6muLiOKzs IxYr68s10zTLt6k1FVQvAAKOwp2p2yqIA35tJZboOqaZZ29ZkuSjj4Z1dWYgEOSxYoeUjVP2R2yn JRNFF7p2PMGhIpf6vdyyULLErIVNRUdW4Dc/h8spoI4g59c8rRXKzfUbqJmosjIIt1Viy/t7qC7N T50x57WvE3H5q8pNHJ68UwTk6EsIfskAAsS/X4um/StfAiAWwxXzUfKk+mtYeXrVo7lriF7hYoR8 KRvvI3pqx60+0O2XYibsnZsiWWtZ6BJpsNld6W98sUcAvHkjQLyCAhh6hBYdKlOnTtkJECRNolzQ si+VqzafbaJKsU0ckUoYenxEikkIGDq3T9k9/ahTMc7YNflPBfSeXjEmpz2T6VdyWc1oFgk+LZ2f 44eSDmz/AA8v45dnlHr1ZB6DFo3K4khudSvZfXDEyJIsR+JqigRB9kfD7jrvvmCcke5lW7EPOPl2 DTJ7a4tri9jAlQSzrdzrK1G5EF1I2ZQVNOx233zJwZRKwR8GEvSwT80NEt7DXtIjW+neGeAPNqd4 xlnbiBGVldEDSNRAB3oRXpXLsMuIclNJv5Z1fQdI02W5lCx1lZLRnjKM0fBBy+yWrIUqR0r475DJ GRO3xQJJ8vmzydGIkN2IfUp6kzRyUqxqaCOORaAEmh9++UDCSU8QYB+Yt/ZweeNNuLdlkgtYYJGZ OLgj1GelKAMKMPn9IzP00DGJBFNsD1ZD+YGiWGsalb34mlJt9KthAka/uXLXMokq5FFpzSgrv26H JgHhbzXELd+Xl/rOg6ja3nq/7jHKrdxswKqxf4XFTTfZf9rJ4chBpsniFJv+cuj32paDb+ZtAlW5 aBGS8slT1QturtJ66fFUpEZgrcVPHlUkb5mxyVsObh6nET6q2js+fjLJPOguJERXZSSvKnFdzQ1Y 126Eb5WCb3cU1Rp775Tvraz8n+XpJ7h47mfT3L+kwTkv165ZeRQcjQn5fTmr149Q9zZilQV/8Sxt MDBftxYEsGSd+/SmwBH0ZgcA7mwSUj5rWGqNdl/VYgu44AV9+RYU9hg8M9AniVpfNlxxAW8iowAQ UV+9AASQd6Y8HkvEion82yTxKbmKGA058xICoUdKcJGJ8N9/bMmGjkelJ3ZRaPp8AUy3DXEik/GV kCkgk1KlG+4scyoaKA52WXJmvkbUpZ7yW2/dLCkRdUjCqQSwBPFUQZkiAjyCQXy3a3uiW/qTGxie KWRtjKQmzkg14lyenRgpzXSEqG7VIpxF5p0Yxn04rOCn+60IrSnLsSetNq/dlEscvNhxOfXbFeNL XT7hfsMklxGop8m5fDt2H9pGMjv+SnZuPU9EgBmNrYRzEhfTWYcgWB6OI6fM1PvgMZHvYuh1nS45 UpYWwZfhEiXQLAgmjbKNxXDwHzTaNi8zKrIsSWrcaUb6yDsABRCakNvXI8H4pPE2fNDXCOqrA0bH 94oliYVJ60IBqSK/FkfDXiWTa5dxQsBGJCePJYZ0L8mAYMEX4h4HfwwjGEEpb5c1XU9I1vXFt621 vqYhvpizRAlCzCv70MP74vUht60zKlvjvuNMgdk6fzP5rd/3sxR7biQsM0EJK/aoeTOPiUjfkMxR CP4tHEUg8xX2tahH9auTd8WiVwi3TTW5BVz6gpIV5V4igYUy7Fwx5V8t14ix3RkvUtrXVIogbpkU 8pWpQRiSJyQ3wUkdXBqN6EftZnTmYS2KZbsttbd9Pkb6t6LcjWNVeH92vKnpoo5FBWQbd9q9Mwcs rJB5WxINppHb3szsjelJQjiJLiIN4lOIFNvDauUEgFUim8p2aXMmqvJbgLxkt41kVWRVlMjMqqam tPDp88zceYmUY7t0DuAF/mbzs1za3WqW8sSX1zBAJJ1YOXjtkWJTuKKeK09z4Zstox25ubDg4xx8 kj8qvqDtZav9eh03T1n9H1PhJLn4t1l5LUt8NT0rWhWuYsb5/S7DJ4Q2iDkPMfgbpx5N8+XOgfmN NcXt8t6J6wi+Mh4bOr8QasApVSgAPHeg7YcZ9e5tnrf8XERHhF3Xzb8//lppks0fmXyZ6cUaMZr/ AEZnX9wlQfVg5fajFCXUmq/sjjsudIPNyxnegy/WIptDs9G062vk0yGysUjWGOVAj8JpaueYDBpD u3epzW9oRHGNuiwGy200XzdPCl0FjvIX5COZYJZB8IKkgpUFQx3+HrmPDCJcm0Yym8PkaB4/U1e5 k9Qirx21hclQVrSkrJU1Ff2FOXw0u92ogOqb6X5fi04OumTXcIcku31Bg7AmtC0lqW4/M7ZlCMR0 DIR7ke+leYphxhvpuXU84YkHXccXiQV3w2E0VCbSvMEDf6TqKIo/mFinXvVo2rhsLRZF+Xl7/ueu bCS+t7icWxlMEXoc0UOg5OIQKV5CnLE+5AePLK8n7mSxhMv2mRIoyvwjaokTr9BzQWeYLj239ds0 AkOhRGZGYIywRhiWI60AanwipNf6niPekKEv6MuJEE+kB5nqUjWBUQyAVLVANanqT1xBl3oRdhDa PCq/oo26qxQjgDs1OXYGladR+GRMje6QUT+hbAMEt4UWaWtZWjDD4viPKhXqW7DDxFVsvl63eRkn tLMJMV6ByzMoKowTgpr8z074fEI5WtKA8peXEjJmSkcgo59Liq0Gwoq8u/cfPvj4p23RQVX8uaAs nEW+nrE9SsjwhnJpXk+x2r4N0ofHAcsjyKSB3JB5q0/TtA1fT9Ukt1utPukkstWitbdSGWonhKxV ccg8ZDE706VOZenyGUZRvnyTQYxF+YHleJi1z5TjeQU9Qc1jXlSlSptm6g5f4I7z808KIf8ANnyu YBajy4iwb0gM0XAEihoDantkvAHmjh8kdo/5k+XrwLpFtpAtGuVFrahHiYepPLxH2YY6DlKzn+2u WRiRW5/HxSA9HvvMmk2jpFZRT3AB4CJ0BEhBpRGRUJ5duuY+LJknZ2EfMlOzHPNnmu51ayaLR7ax tmSWO2uLa7t3NzE87iNCZRIjp1BNVO2+A8QlubG/Ly+H6UlR1LTrLTvL/r31lb+vaJGjTQKGZlGz mSQrG3xVPIDxry65XhyXlv37Jx/V3MH1S7OqeWptetxBBc2E6QTW0AaMJbSfuYfh+IVrsOPEcaim 2buErF9WjPG9r2Si70jWdOMUQs7eSS44i3SKKNy/qmiEKB1J2ApUHKZSiTw1uXOx6bUww+LGZ4B0 s2gg989ktzcafCYH4vA7IsXqKWeMlKlOY5RsDTuDh4Yw3IYYzqdQKjP7v0gst8lfmHJHcW2lRaJa T39zJwt7uYMXgSJSxdavx/dirgHvXxyOXIDCwGjHhywyiJlyO/N9JS+VtBuh9Yv7OK4vZ0+PhM4j RZv3jLGq81oeW1KnwOUiBIBn9TkERBPDybh8t6UrK6Wzs4QIGa8uQ3AGgUbZYZFFBWXR9PoD+j4J iuwMlzKRudzUxsR+OPEe9eENtp1pJzja0to1IFY0vJk3B6VSJTja0qR+WPLpJ4eoD/NFe3q9/D1E A6YTM/gI4ULdeQtLmgnWO+1C0kk+Fbq3vrkSKOW/H1XkQ16br8seP3fJeFr8ufyw0fyz5kvdbg1L UdQ1G9tjBcSX86XHIF0flyWONuQ4qu58cAK08SutYIKrGzyRk14cG9QLx5VDKvZd+uaPgvm4pKLt rydJaym4RYqNwG1UUB1D8AW3jceB9q4TGmVJfJ5ztTPKHeZEGzEI6HgUpsxLDenYHJDCeiCVlt55 0iWkdw7yHltIodnAryXbiKmtBtkjgkvG1P5xsrESJOl2tUVvTICitEKBR2oD+0D/AFAwE9yDKkHP 5n0Z4pJrfVZbCb7JZY1k9WhJpx+2uz7VNNskMRuiLTxojTfM+kC3hsxql5O0e0c31Zjz5n9hamhT 6QcZ4iegUFHWlvdxSr9X16QuY2ZoJYwXCCoqeDDif8k7/PIHv4UiBUbq+/R86I/ma3jM9WAdSygr XduvhTfDGPF/CpiQ3b6L5puJbsRzpNZ6osR1Ga1b03iUKYZGjLqas0Sqv2f2elTXM7SacTo0fT+P sVGaDbWWkWMlhpSkxWqM0qSRiNmQk/E8j1qzce9KeAFMdVpJcxuWQJSq/wDL+rDzPpmuaPaPdzXU n1e84iaWJXkV7WGZyBH8KGqk1XtkMOMkGMgfkyCZebteuNB1SysBGIrkvHCFJUO7l/3sxIfaPoPs Hp88tlgMgI/wj72J3K/yfqWjeYNdk1G9uTZaklbe9ZEDRsIpf3YmgVAZCXeMqykEd6gUFn5eIhwg swLVfzHF1aeWNTs7uxe3u0WOsjKy0UyJ4jurHb3+jNfp8ZjkAKHnXlDStS1Ty15nsNNt3u7sixm+ qRiryLbymVlUUJJorbLuc3eIWCwJ3F7spu/JXmnVPL8toNK1FpWhP6PMtrOjq4YN6bLJ6dFfiyjl 8KluQHc40IG9w77PqYnERCYFjkxfQ/y489wPLPceV9QDLyj4zafPKoAAJcVQxnaoDGo8PHLSa3qy 6/QitjLhB/HkyDyP5anutSikjsStjp97bR3cvH0lSSTkfjagL0j51WuzFa02rGGMysS5N+syY4j0 7yvn+17pYQXMNjCi2zSoqn95JJFI5UcqFmkiLtt1Y5OdcnXwC24+uK4pYuoB3McsXKlACSAo6fPI pUxf6mjNG8V1VaU9OaEkHpvzkUnbbp199sPCFtV/TGoq3wreggdxaMK1p+1LjwhFlEQatrKx8pWA BG3rW6FjXt+7nwEBItXbzLdxtxYsxFKhbWWniNgJe3h7e2DhC2U48la4NQ1KeF7b0JYoS3IrKjFe agCjxxjYU+WPDSbfN9oZVjAN0HZnokbp6lFKmoYfCf26kfT0zTkeTVwEKMunT3B+ralqlxIjVYxQ cIWaLlxK0Yiq06Ddf1ZKM6PJFHkl7eVZJIZFt2kuHhiAgN6rhBwYHgvE0YceVdvuocmMx6o8Moc6 TdcJHSaFrmJW5fVQ0KxNIW2BCcj8X7NB3pTrkxkF1TIY+9bb6Gbhm+t288stQspnZlK1P2q0Rqbb +1PpiZyYnEncGh2dlK5i0yC4UliGm5yqgPQ/Z4H4jReQr9AyrxJEc1pL9S8y6nYv9Vg0aOiEqjPE PTDmo+GhFd0PEd/fLIYRLmUWR0SO91nXLxXkGnQ20UnH1Xt7YLypU8qnk30jLYxiOrGyk4tb29m5 LE0krk1dturU3Z/Fj3y3jARuzvyX+koG/QqyyiRg0mqV5KIYiCIVi4mrSOPirIKAADffM3BMGApm A9K0A6dokUkdkhWVGBndjV2G2xYb0oAforkuJnTIz51u0aQxuFafqKVAO/2R22w8QWnmnmbyhB5g 1w63eF3kkRea/CGqhNG5D4x1338MhM2kBV8leQb79FTR2NoZVDNSW9bi3qMfskqaNx4r32HTfKTI tsRSffnMbe08g3lxqEdsdSu5IIkMUYZ/UDqxCSc+W6RsT8OCEep5rkNvLvyl1Ge2GrXERaCcS2iK 5PEComc8iP2eMZ5ZdG6LR1D2P8zvPms+WPLkGsafp9nLK9zHHPHNby+gsUsbnl8LpQhwq9T1yH45 txOyT/lf+cWqebNRu7LUrGytpY40ktls45Q7LUq7UZpVPFmTao696YCa/tRGVs41y71BrMPI96ba 2hmcrOXCl0CleYpxPU08KDLYFjJa2j6MSGaxLMSamWzgkLEct6mOpb5k5DjPf97LhHcq22i6M4o9 hHQUIJs4Bvv0+ECnzOPGe/714Quk0fRAWY2cK8ftM9rBQdzsadjjxHv+1eEKElhoCCohsonBqXe1 T4qfaA4n9X6seIp4Q0ulaMWraS6UHPUGH09q+Ibf6MeM+aOEK8eksyMiXtkyRr8QW5nj3A7+m+xp vv8AxwcSeFPvy/0ue3u7i6kljcyRBWWO4uJiu4ZVYSsybDuO9ceK14aeFv8AUI4n+sWKzKrN6E8k kaKrVFB6jceLc6qCB4b98wg5F+SNTSnmiS5jHEyseSHiSGqKMCFIblui7typ9BiYg80cNoNdGvp5 0aO9WWOVjxlqHoygioSNR79K/iBgpjw2sn0lnmIdjqEdsxVkdk+GROcgCQwoz7huXHmacT3pjLfY JkL2tWvNNSGQSGVIorh2VDd+lC3HggKhJlHLiFPY132rTIeHItU4nnarJYXcJElI2gdOUczcajkG 3ahdd0/aVl3+iojisKMVqMOnfWvtMJo5QyhEb1EcR/aBrypuNqFhXCMe+zIYlGfS5YJQq6erFgWa dnKUZSBXl9qndmYj5VxOLi6oOJNLOwsQVgazKzxqrN+0xD8XXkUddmX4lJ6jvTKxiPJEcfRo2Gn2 moXV5CojnmMYuJK9TGoCChNKAdhm5xw4YgNSVaXeXV75nNo862MAPpzXLHkqhWoXIqK/KuO97Mtq TzUbTUYQrw3dleRDkzyxXMQYKNiPTcqxqenEHBUu5Oyqt7bosNvOSs84ARQeNakCrOfhUU6scJQy Wx84RaTBDZW0NrcqjOTM2o6fDViTuAZZSKdB8XTCMN87+S+JX9qQfmX58tr7yZf6fqVnaeldj07V 11K0mdJxV4npDyfipXfp4HriMQB5/YUGdj9rDPJmo2ej6OBLpkZ1NkjnjiRVdJxC4C1m+FgzK7vU EHjVa/FTACBserKOImPFtt+n+xmHnvVdKn8jVigi0O8u44RBrM6tDaiUSAurelHIvI+mykAN89t2 PLmiXueYaBrN3pOoxX1x5s0eaKI/vVt0leV0OxCsILeTv2b55Ie/8fJg9cf8zfKus6dcwWbXIMtn dlJJUkkEhjjMqpFI5ZuRaHiQBTsd6Y2I8y2wxyndD6d2RRfmBqpsbK6i8u3dybmJpZgRKnpOJZE9 NqQV5cUB3p8srhAHqiU66IST8z7yBw0vlyePlSlWIoWoF4/ugTyO36sl4I70eKe5sfmaS4a80e8t VFAwjQyNSpBrX0hQg98PgDvC+L5F3/K1NGDiKW3uo2P2TKkZoaUNeLFqe9MHgnvC+KO5kGn6vp2p 2izxQ+tDMSY2kiCChfjWmzELuAe9OuVSFGmwG1kuo6E+sx6MIIJLrgJ/T4vXiu6/EI0QEla0LE+I +IYaNWu10n/lyWwj157S3URTm0MtzCgoB+8UIW992p7YxKkPmh/KPnCVHjkuoCrDjx9fjyVNwp+E fzfLCY7/AEsCSeqDTyn5sFm0D3E8YDrHbosvqIVKMGDEPJwArT7NCCenRoy25RXfv+1JYPLOtSys n1KWGgLH1g6LyUdK8aVIO3b6csO3QsVlvoOvkuz2dxVfgqUcjiOhqQPh+nCBSBG1STy7qrGqadPI 4b7AVVapG1Ap5b7/ACyEppMD0CYpf+YobMxwzXyR1MVxCC3HhQVVvib4TWnbD6SejIcQ71tn5o81 zcba3vjJHC4At2kT4aADblRht+yp/E4PDBPJAylFRyecrSNoxqX6PEvIu8YUTOzDcgqGdm3+eT/L 30QcxGwKPtrrULG3Ie+ufTkYmf1JFWJmoFEnpp8dSFUfE4JHWuWR08WHiy71moX6CWRTKCHqGUUq w/ylIbY5YI97GRQVrq9pa3ErcWIlpIW9FZKN4cHFMFUVO4RkfmiUlebRrGx4nnbwpUEn9oIrA7/P JmkBX1nzE1td6ZdzqJIoSA6lX4tUhiDSmzUyghstPrTz/oLhpZbARyNUqYxzUAkEfCzQ+4pTb3x8 I96fECUahqXl+9PqtaRMpNS02lwyuRSgrJ9YU4DA/gpEgpReY4bVlFsYUhgT9yBHxKvHLKdhzPp/ BxFN6Co/aqKzyLIc041KPy76bWl9aJe3KGeGKWW3dEBed5FAceo1F9Qio69dsYxNc1kQTySa98qa bOB6Gj2kAL8i0f1+JTQjgw9NI6GvQn7sNBC/TbR9PtxBp9sII7H6zBJFGZXC+usUnLlLV6Cjk8qH fw6NC02ejMbDzBq0VpAiPIsckUcyqkTSKyyRhia0/wAo7b4xiCpKJj17WI0TlE0ca8fT525IXltQ kDuWpt45LhCOIqsfmLVGpzuJloVBj9N1CE0ABoCOrUH4e7wheIoq2v8AUmUPLczQ9WoauRTwDBeo yNBlaInubVoVF5el3kIVYmHCrha8I+T0b7JO498G6ojSNO0+KF7pJYoryGLlPcoaN0qRX0weII2+ LYfLImR5FIiEz/LHWbm91+9Sa1lt5ngMt0JVKnmGjWOm9N4yK/DvTr1Ahj5s5cmGWw0KI0Fo5Apy UIwNT9FOmZO/e0bIoXPlp3CizUuKbSca0I7Vp9ONHvTYTCC30KeYhkMKVpREgZRQ+3M1yNlNBHR2 WiJHSOzVwoNPhTkAB1CqrdOvfBxHvTQUXh8rtGomsXovxJVXoD41KECnyx3XZDXei+WblCwlkBNV 4iR0DE9jwFaYbKKCXweVfL9vMjnT4A0dSs5L3B+fxP8AfUYFVH8s6De3AnSyt7iR6lpIy1aGld2k 2yQkR3oIBXx+UtH5h59LqAdwJgR3oKl/oxOSXevAO5aPI3lT4pDpZCMSwZ5Jq7n+VK7DsK/PBxy7 0mIcvlLyLxlT6pEjMDuw6MBQjkTyU7eGDikvDFBf8qt8nSMW+tOeIJBBhooA3p8BPT3yRylHhhQk /Kny1zYx3F2WIqGPFkAGwXjRd/cYPEK8AUl/LbQUnjR5ZpiQTxCcQKbfa4sP1YfFKPDCaN5F0Y26 iHSbT93uqsKDpsDIyFqsdqnIcZ72fAEJ/wAq90QzuV0a2HOgIVQ6V7/CehPc03xWk0byK0sGz3UR UfFFHcSEKANhT1KVpg4qXhQTfllcorpHqmo2/I1AjnYAb1qaV+/JcfuRwJI/5b39qLtjq2owW94x e64zh2YKpUtJzFfiT7Q/pgsLRZHYy3UVjBZWcMc0doqRRqf3knCNQgYiq0qF8cREBPEURaXGqMnK K09G1erK6InxE/tfCWqPA0++uHZG6sLqYV5wsioWUs8UvxVpVqhFGxG2/wDDAl1pJc3Uo+q3VqVW nBSauXBZWU8nJ2piqvbSa5dXvKO5ta28jRLE3pyc2oAXUq3JSPiQdP2tiKHBsqC866zaW1nCk1xH Y6rbNIkrVCh1biQh2AZXA5ddqU6VpVkNM4oX8hNYfUPNGoF7z60TZu4ABVVX1o+AoT4GtKbVyOI+ piZW/wD/2Q== uuid:2f435ec3-8984-6043-9af4-de358871dfb5 xmp.did:ed957888-9c42-442d-949b-0026a95e10ab uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf xmp.iid:ded3124d-6f30-4f6b-bcd6-1cbcd9f742d6 xmp.did:ded3124d-6f30-4f6b-bcd6-1cbcd9f742d6 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf saved xmp.iid:ecd1c7cf-5fef-4044-9bf4-bd5fd9d680ec 2016-02-09T15:33:39+01:00 Adobe Illustrator CC 2015 (Macintosh) / saved xmp.iid:ed957888-9c42-442d-949b-0026a95e10ab 2016-02-09T17:29:24+01:00 Adobe Illustrator CC 2015 (Macintosh) / EmbedByReference /Users/felix/tmp/pdf/Channel_digital_image_CMYK_color.jpg uuid:02279014F8C3D911B37E9CCEB7A92F18 uuid:03279014F8C3D911B37E9CCEB7A92F18 /Users/felix/tmp/pdf/Channel_digital_image_CMYK_color.jpg uuid:02279014F8C3D911B37E9CCEB7A92F18 uuid:03279014F8C3D911B37E9CCEB7A92F18 Print False False 1 210.001556 297.000083 Millimeters Cyan Magenta Yellow Black Standard-Farbfeldgruppe 0 Weiß CMYK PROCESS 0.000000 0.000000 0.000000 0.000000 Schwarz CMYK PROCESS 0.000000 0.000000 0.000000 100.000000 CMYK Rot CMYK PROCESS 0.000000 100.000000 100.000000 0.000000 CMYK Gelb CMYK PROCESS 0.000000 0.000000 100.000000 0.000000 CMYK Grün CMYK PROCESS 100.000000 0.000000 100.000000 0.000000 CMYK Cyan CMYK PROCESS 100.000000 0.000000 0.000000 0.000000 CMYK Blau CMYK PROCESS 100.000000 100.000000 0.000000 0.000000 CMYK Magenta CMYK PROCESS 0.000000 100.000000 0.000000 0.000000 C=15 M=100 Y=90 K=10 CMYK PROCESS 14.843750 100.000000 89.843750 9.765625 C=0 M=90 Y=85 K=0 CMYK PROCESS 0.000000 89.843750 84.765625 0.000000 C=0 M=80 Y=95 K=0 CMYK PROCESS 0.000000 79.687500 94.921875 0.000000 C=0 M=50 Y=100 K=0 CMYK PROCESS 0.000000 50.000000 100.000000 0.000000 C=0 M=35 Y=85 K=0 CMYK PROCESS 0.000000 34.765625 84.765625 0.000000 C=5 M=0 Y=90 K=0 CMYK PROCESS 4.687500 0.000000 89.843750 0.000000 C=20 M=0 Y=100 K=0 CMYK PROCESS 19.921875 0.000000 100.000000 0.000000 C=50 M=0 Y=100 K=0 CMYK PROCESS 50.000000 0.000000 100.000000 0.000000 C=75 M=0 Y=100 K=0 CMYK PROCESS 75.000000 0.000000 100.000000 0.000000 C=85 M=10 Y=100 K=10 CMYK PROCESS 84.765625 9.765625 100.000000 9.765625 C=90 M=30 Y=95 K=30 CMYK PROCESS 89.843750 29.687500 94.921875 29.687500 C=75 M=0 Y=75 K=0 CMYK PROCESS 75.000000 0.000000 75.000000 0.000000 C=80 M=10 Y=45 K=0 CMYK PROCESS 79.687500 9.765625 44.921875 0.000000 C=70 M=15 Y=0 K=0 CMYK PROCESS 69.921875 14.843750 0.000000 0.000000 C=85 M=50 Y=0 K=0 CMYK PROCESS 84.765625 50.000000 0.000000 0.000000 C=100 M=95 Y=5 K=0 CMYK PROCESS 100.000000 94.921875 4.687500 0.000000 C=100 M=100 Y=25 K=25 CMYK PROCESS 100.000000 100.000000 25.000000 25.000000 C=75 M=100 Y=0 K=0 CMYK PROCESS 75.000000 100.000000 0.000000 0.000000 C=50 M=100 Y=0 K=0 CMYK PROCESS 50.000000 100.000000 0.000000 0.000000 C=35 M=100 Y=35 K=10 CMYK PROCESS 34.765625 100.000000 34.765625 9.765625 C=10 M=100 Y=50 K=0 CMYK PROCESS 9.765625 100.000000 50.000000 0.000000 C=0 M=95 Y=20 K=0 CMYK PROCESS 0.000000 94.921875 19.921875 0.000000 C=25 M=25 Y=40 K=0 CMYK PROCESS 25.000000 25.000000 39.843750 0.000000 C=40 M=45 Y=50 K=5 CMYK PROCESS 39.843750 44.921875 50.000000 4.687500 C=50 M=50 Y=60 K=25 CMYK PROCESS 50.000000 50.000000 59.765625 25.000000 C=55 M=60 Y=65 K=40 CMYK PROCESS 54.687500 59.765625 64.843750 39.843750 C=25 M=40 Y=65 K=0 CMYK PROCESS 25.000000 39.843750 64.843750 0.000000 C=30 M=50 Y=75 K=10 CMYK PROCESS 29.687500 50.000000 75.000000 9.765625 C=35 M=60 Y=80 K=25 CMYK PROCESS 34.765625 59.765625 79.687500 25.000000 C=40 M=65 Y=90 K=35 CMYK PROCESS 39.843750 64.843750 89.843750 34.765625 C=40 M=70 Y=100 K=50 CMYK PROCESS 39.843750 69.921875 100.000000 50.000000 C=50 M=70 Y=80 K=70 CMYK PROCESS 50.000000 69.921875 79.687500 69.921875 Graustufen 1 C=0 M=0 Y=0 K=100 CMYK PROCESS 0.000000 0.000000 0.000000 100.000000 C=0 M=0 Y=0 K=90 CMYK PROCESS 0.000000 0.000000 0.000000 89.843750 C=0 M=0 Y=0 K=80 CMYK PROCESS 0.000000 0.000000 0.000000 79.687500 C=0 M=0 Y=0 K=70 CMYK PROCESS 0.000000 0.000000 0.000000 69.921875 C=0 M=0 Y=0 K=60 CMYK PROCESS 0.000000 0.000000 0.000000 59.765625 C=0 M=0 Y=0 K=50 CMYK PROCESS 0.000000 0.000000 0.000000 50.000000 C=0 M=0 Y=0 K=40 CMYK PROCESS 0.000000 0.000000 0.000000 39.843750 C=0 M=0 Y=0 K=30 CMYK PROCESS 0.000000 0.000000 0.000000 29.687500 C=0 M=0 Y=0 K=20 CMYK PROCESS 0.000000 0.000000 0.000000 19.921875 C=0 M=0 Y=0 K=10 CMYK PROCESS 0.000000 0.000000 0.000000 9.765625 C=0 M=0 Y=0 K=5 CMYK PROCESS 0.000000 0.000000 0.000000 4.687500 Strahlende Farben 1 C=0 M=100 Y=100 K=0 CMYK PROCESS 0.000000 100.000000 100.000000 0.000000 C=0 M=75 Y=100 K=0 CMYK PROCESS 0.000000 75.000000 100.000000 0.000000 C=0 M=10 Y=95 K=0 CMYK PROCESS 0.000000 9.765625 94.921875 0.000000 C=85 M=10 Y=100 K=0 CMYK PROCESS 84.765625 9.765625 100.000000 0.000000 C=100 M=90 Y=0 K=0 CMYK PROCESS 100.000000 89.843750 0.000000 0.000000 C=60 M=90 Y=0 K=0 CMYK PROCESS 59.765625 89.843750 0.000000 0.000000 Adobe PDF library 15.00 endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/ProcSet[/PDF/ImageC]/Properties<>/XObject<>>>/Thumb 12 0 R/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 8 0 obj <>stream HKJ1}.`uR#bu1̈z0ҍt,a@ib|$d# śT3qپ^ e`R˿z *;ZF_fo^{zgtw0ՖLٗ6C͚ww &AiV,ՂmTxmn>`ѩ #Rkp]D{w|@pa<| O#}7f endstream endobj 12 0 obj <>stream 8;Z]"]l)mh'SW+#%hQV_!k@%Nc4nbl74N/lX2<:`Uf575_G\(,]as$nFQIQ0-N*uM ]Wb]ikE#ck.9Pt\aiq!#1Q0kKI02JZc^V"sm`gSs1 0ijPlcS*RHPLAjIB@`mN24(d&I@'2&/k;aA=:7g5,c*.:6N&X99QZDa1=9$0atCB? ]Hb&[lr7HjS=TLpRJu;HG,[HFs7#8248!)W>Q!hIguQ?Gfrqrj^#/5OXJs[*jKbe- oB5(p2(AKi92]MF8Y*'c5-VbVl&7JUIGD0CS`t+'H":2n3W[W"@:ao>VgWaR*DDOI WHG'Kfr;G:SRn_Oc7Zec.D'[]X>b600!a^bK%Tj:L[ ;aLc+PE3u-,.#0SU/WI^VtWgA!`N(c;a:7\:t#-S";Q,ifKi3i*'/b9&d/87OFYWt .*To_-cc,FRE'Hu16Wc-(-Y_bM^Ep1rB=>P!+`3V=ICW6,F/amJ>8"b=E6u`S4\]$ "f8s?/.cWpA!)_V;E3R-H9oZZM[%K^f#.DN0[lTfhSfAUBYf@U=no<'K.pIh;gA#] 1)ohLJX>FB^Z2Z=KGj=tj(Ae"Pg`.omIX.5?LSs$QNUK&!g5u+$(6I)K%u?I(pbZ^3-:_'d9QfB?ogWApWWHO$f[*to;$BDS?Ks&EL?\^=VL;\dCY@7@s O/g5".M:b[4^Zfp(:ZpWf*_(YMA!)%.QEj0I&b/1N$C1eY(gRm%O>A.(pS9'97&;r dbNAF-H>X2XXgBkj@Km2YFOY+D)P+&dg?TA+^7[DAh)"F[kG/taKYGC(N9FL2V@SX AUkG=M9dnR=`Nl69mU]Di-P`UDWmZ2\8,(%&"pM2;nVIkbloE=(>i*U*(jqa@GpC@ c2b+0^.(b](RQb,RUT/-/-"!P=Y$VG,Bken$n!LD$Z8*&Ec7.f`O i&LJ[5X.5ELj*j]F-T1d@1tiE-GB3*Q+#=SM_2Bi@Z)hHfOBbJr&"Hpb?ni~> endstream endobj 13 0 obj [/Indexed/DeviceRGB 255 14 0 R] endobj 14 0 obj <>stream 8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn 6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 11 0 obj <>/Filter/FlateDecode/Height 333/Intent/RelativeColorimetric/Length 638079/Name/X/Subtype/Image/Type/XObject/Width 500>>stream HW/Mb"&f4cMDԉX&ƊXQ " A`XsLN23g>هݗݧ}p=wBCU (O^UvcH#_vc]3IBF>oDf(Ľa%)pGX$B 26s2,98Ѣw;ӣ$,V+Wg-L ;_vYT-ޮ-aJg6*/  XK|?TywTGbL|%xfkOc߭+`(N gH(J 2('܇Gw2#0_L "XŹNn-–mG«lB0@b(}*^ׯZSc82#{%-=e]X|0 }pjt=qgǤx˟y֏8+ƾCRTa=3R xlg~LiYY"gyq*o}~Wo5Ƈ23bPq}$DO#N*”DhH#:l? eUhTsߙ.2nVp"eجUى!oq4j *Ѥ:.zӵYiJ"q8i^ЛЅQVv)6["UhpvUNmxMzGhVG'z1xKynIo47UN'euO.RKAmL;$K&jQ9癛<8nT g`hpSڶ>hahEaSפjxҌ1̤1ũ5=:'/äGP5d(%CJ :)>,j2R|581|;%"7 g`=̮VZu*Q2!3?m\PN4VivtkFVT&ΖH]fsdf_OSi. %Yx"<+`R!Lun6 sY`e'ӎ\h=&mYꕱd̖ހ2Pa߭gË3Õ·~h7 -zAqf #njXu؁I(:ԛ目KʺzRcd}93my n϶Ľl,!潢$?X^FՒe[l gVoFǸV;ϝZIį! h`?9 ˚ʶ:*ܭwVH!66 Xfk_w ̊/=!Im9]*[TV؝bl$bSǚ$^cb#ng|"`Y헼?!r>TdYz8 SC&{p46zcju12<8E @ԤY栗 ЛpdOȾy:.UǞkl;p4YOEgoywG>Uz{Z{}4@y]mnu}N{*ﯘW- -Q5ql ÷jNGrzowG{z-bb}HT-! 8XݬX•o4vm.VYs*Ӟ/7e #,  }|̾^8EQTCfjc 5S4)AHd2G15Uu>k{|H(΁WIC<>@qW*#l+uSf^ (ۉF$,*{bGg˩^[A7S1h~`JHr&{ii(%?<ι[pnpę fE;SߡNU.L+l#o8/-6mLU ShkEFheW(1#T"}4 )"Z%7 R@;nj;sg6԰1ϚiNύ-%_mqٹhr@Z<%DXh%V ܮzZy.(܄ |XoQ\>杯ͯ_m_o˃ݳˎyl3klm91qςC,@ Oؿo`tHyPfb9Cƺque1]]v_Xɩ7߬ں=F|Ew gF`"Ys/0{Vs>ږ+5߶w.wW~=@ 'CmI69D?Y?RfQw5cwUjg!MϠ:';V0%M4-{jvɴ(9RFͅd8su x>u}89)ݨZPl'PKrǴ"P/>NxwgG3t=;&dYOkIGI)0VR-vչDA))뫠>? zk 17N`c1LO 7yS(|ܒ6-N mP荦;%tsЦ]a_jl˗QiFP %c28݀VJw`gm՞ 2@##tU5ǁҲƶ|z^fiRR={lҙO#F6)6T%E$N=w94G=9Ͱ§@N@[ۭm:7޷/& ҹe>n:4,۫k{bЎpL:!CeK訨 MSJi"sZ rl^|$*6@{! 7[-0Z;5]ɱxr;4H/&*П+x D3y!3 6+vq5_k57V͡~S~o+VUnV8M*Y"HO j\y!B ?ܚ/[WrwMߜ-(M{4#).<O8Wή5˯mK2jf9Ki+Mlj7y 慷Br|; |{C$xb]@aRD!& -aow z\{VQ23$JY_|4riu.0{/0R0opmV\F 'Z#G$HP d5*h9 nG^9_/jKGT/,i8SF5 g)"Z\ѣx>X;1ǶVsruZF~t31 R2D'#w@(a/_iV#>j)q1A)9"δUeN,vGq{2_]~̷.֜͢^V'Tb>]vWrIXJM NQe鬃c̏݃(|p?w>с"1w . 0!D ECoC&h"5iН{6"8?;*Z%; EئI^/MC_7ux詮Y P O! S>A  D lp7:kL;jmt:mMa?&F )(1\OmmwWfl0bM4ӫ tDBh#@ z*P $o&$YeE&3sW9Raikˡ=kvҮ~q(Sy+C!j\2ZłIv|[^༡ՍaZA:q$n͑BP vhkWhyÌ6⺫R__)El(j /t1l^t$ 66ܻ(Ki$Ϯ4 ++w[jĚoDij;&灬K~lⳊ53ϵ뙻hRΐlU*b3 ܡ׫>ӗ\lِv2ۨ8V{v>pm;w2N %oxwy-ig7u|%:n͌s8ɛ!VjS\Vٕ#|ylb&[SPWF{ܤ+_/^Z-p^LN]XZgz.s2dyb87<`ntwm$ZįP)ىh#֗(9RLS;J6(7'Vϟ ~[S~.ؒg ܆뫯:47 "%0Fƍ~et iY0>УŌ1r>x!3u܅κ [u^. *֩Bg15㞪*35ޅ x_tc2ʬ8ɉ~Z0@B:P4<Κ\4 6dGwKͨzx Rnި  wA]gڽ]Cfs>6t,MqھJY&AOm*h_0 O,ji8^i.{Ƥ:P;u¡?JH|,75LF45ݐ)*3[ۘ9R[ "vN !ZZ*-ZãQf~W:B%0~(X^x[-#ɤ(@ߕ;|G~H\I߿_|nVwSj~?(s$Zkt?-:'j'GИ^%[hL_4G^|ȗTc|0_ŢTg&Z/ fӕ^Yk<6[Ͽ/GR@.o4[儆\xS5`gX`;)Ŏ4`T?BzQ"ByZ(,ޤl~/Bmo,VdЅ!voY!-u)!М>qA*c= IaH 9!)|fpX_YyA,jmj3NlφO JVqO¼VɹrƠ{k?g=?Jy|]gs .yA); 1hPw(~B) $VTte|Mgk҈Sl䮎vi/|1n8L'TEC˧0Ԓ@Gj 1 E@ar0֤Bv(O֒,H@Ȋ Ba;@ tIL -W:q(S:4;H($?_$!a(`lԆ"X \D 흌/lcB.ǫ Y&tNFFDa\8(ln*}͵6& Tؘ J$?V=+Ƭ< S\^_iYGMI,-ލǂޢQTDAD)KDϜ2\̚v֚?aZy~~׎WRD0. 4.xx% '$/ 1AP A.$$ɁpS DPC5N24ݗPHAl]bȪPhzcwkW24z˒Qx4VȫqK[JS.18R>,({ x&pCQrfR.իgg6*?EnmX;ȏ̫-n[)*N2x_C^PX@|U2 r/q)/ʊ≌A3?l^j պHףTFZ w{,. žQ|r>pOvҧ{i3dso\^nLxQ~c]bkq>)>9$yCsQWtLjvFmӉkz˩H诋%{C `- {'*rXX}/3zT}]7`ƲlGfYmk;elKm4U2XDwb,Z mWC{U )yP㯗zMin/ʳ7gDiٕ;Exa\̶յ/w2^˧!tJ"?| ΛL qOt0ӥnd(oMdG]6:вx:66x%.DyW1("jseb™k:&b_ʋ` -b75[OWS od i*o!'17zV.1hRԳf ũq[9ml-Z>).vն핍zԌ݃wN3Ki%FƒBC| /*}ŽVjIb(%= ɎF_xa+7q(Z W~.Ԃ0hN[٪DeZŸ:;(u!õU<%nHKa*<Ų˞=5H;'0e3`˨XcA0ҩdtڜ$G'5δ0 0&ME<ɀg=/;\tl<|y񚉿T4Us`EN쨏MzQ5'uo#if~[?RVGw3&qI[6"uq(Y8&$0c<|ܭ67ž'# r`]<0>X@>YݮXA V;(C~]N$xH Nb,xBJ:+ʉ>hk1/g?'!iaFU%o[nlxsjR}XlfqWc_e>l]^,W[w6DґAT"&(DJ0 FB:BAA^g;[Y9gXļJ|6BuNnrY"+ZVpi]3hz|^h{;AD)yM]e`ynuMod c8}nP4nM&DI;xOE4ƪh-Xŧ+9v[{36S2ɏ䄎7S[=eQ[i.73&DCޖ%)AcWP> #'RkMչOaъjj0;aחbC8\Z4qjj&򚖁A~l"  ɧn/ޙjAr&QIrbvt:o칖|/II鑷P}̥Ȍ˳Ҡ8# uM20i86?B治-7aD"9Q%"Q]5|d={>[m'&Sхu|!qy\OBwj_"4q%,qlnýZܮcƅg׉mȾq6״E!pHďD-!tj ԽH7%YZa\It5  gNʪcqn]_2~;2OLev] }f@%%٥rB :}3h[@ &Q ؿnɟ./ʆދ?>]ϝ^}յ}aY.zFͣ;w*=ʅkDq$_ 3C5\\[K"R,1p.ВC"akrd3䶝9?X7vw͎^ZR]l?}(#]5ԙ>9#,'>0yE0ʍix |lm~f:Im4F֒$ݜ ͼbX=w!!S_aga E"5W~2Z\00rr_u*iiXh輊t0y!91{>}ob{+Z)د^xpfo., [;O2q(N7l (߄%+}eh_cTB|Zs̗WAkLG±!YpCY&e~^s]eo~eEn lބfŝ6tokUg.ğJ71Qx<< !7 -K3QI-&jtLkٛ%*U>4= wǺLb8zP>K̋0ĥ--mYkj1NUOGJ} 5AFE@}a2.#IHH,y[+"$߂ (H#< Bgk;?ljKbfKԈgұɮHs}a,`$Pi`=5J3# %̧ȎU!=A,5)O`tF䙧ea(8BuBFͿA-6"Е~XeTzǽ ܷ, je#b>\[U[ţ-ކ: w]oJ,K+fzZʝ|<7<.*eJڳD7,rYxt")L|rmh bXek>86A+һ:+PEIn).Ϧ4< xK0&K%FƊ1"{CPX@ް  vs1ggvf_Oo}_l4Ρ U~d _헸uL` YfrF[H6'<YHY)KKGKfPPH+ FZʜfܧMl\DAm/FC4e39 |Ë͹z_nA1¯B6]09ab8[@.L.'R4d&.Lj2PHP_Ā}'o:̍p흝_lxitKݓ3ũoaNHԳH@by@h#K(G!:p e,JW] 8ŽT;\Ow[?74ˁƳ<7\|غ|ݲ]h*3-)kOSQ"^a}䏃?-7?yY/43~rOwl9fiO>c-UjY5VB S m%yHef20iH8(ʳ,I 0ބzKhcv˰}EwZ?3nM7&;QX@ &A'8=3<u@$uX-) PDR,z su&Rjy0/8ޜ@ *@SvţQ Evoε.T !W{]H8DP kϣ!-8K=N|IHU"P x%$|Gy,Ihc !388oq.rDSRr~oL "eξn>0jfc[i[s&0q+; bPp@pAZr07(3 ix/%Co-{?B 7.80x IA:8NQ%VmM=N#Fz9o dz"p/Ȉ_WȡE:JYtjWmʯfjLKccO~N/"?f{ZYQHrC8ŋHA* }8ihf 4J&Mwxur ׃S]e$ZnSm*vd+{=Gj;ɯyo{F P55[$+&*3Ӊ^iIayaTjTZD""-ސK$C/E>vkwugY(2YcvõX\]aP2U r!`sKZY%-N\;8mzFbgzܘ) >͌UZũFJSqJX^p [ 5RAٮX΂-<:r(1ypsM3YtTf",?eER?]ڤD5 {ĒXCBK$$"B6"R5Z~g\\s\w\|yxY70P[C5||o]cI429iR'ya(P`C-*ik`B=æ@-(K,n]|e咰YT`&l`7]:n>;?|;flj{Ynd%4HЂ|* Sm詤m,LdzhPzS0"@xp&VZD RB9 -Nͷ_?m_<1nMȌypW)T(ʁE6^kO~n{uarڱnïs7;ͅɲwl\3XKNDzC,x /`C ^Rqah+h'ZֻeIw,~ɍ'Aϛ (}dDA>Xק&zr߯gՎӃaȲe7ʹh_yO6B,dAez[r7x z'n_o.[lxN"?'x[5#=cnboaxeLy9[c RROBY~#M#@:yCB,ʼ2pUx S6Bk~ GZfl"d[YQ{f J!cOiΒьS }U\\ +OBma[Mq&p nL4Z*3I x"T`$H "<&2S!%g<$ G1e`LZ,nPy0k|s"Ax@bc#$3UBXw=G$lRjeƜMN/=t3rΌD4W6c$X?شm=?;:Wۇ߼~/!DʺsSBasz6]3ZkU3.>T[0QhWxG3'A(DULk1,L9DN  yO5"#jfɲ28gvtQ)E 1֞@rx"JyoCboio㍵]Աi:0yc[Z]ZFmI-<3ʇEyQ172(cPCEi̲k, ciAڵ$02 6nE\X&yj'TNV*K5vybV,s-.<>~nnk49=0̘ky0N auS&vboc.elsHXEՅQHYZj C1OBƲ3a2)3qkl~ d\Z82TPOgb< s0:(smdǬ4emT@3Ə [R\]i%Z11&Fc؈&V[HP RE@5hbΚ[f~r {3zczNvQfc,LDTQTHt r4ӠK]ZJ` -,Dy#(#4wì`qh 7tS;:#lCu`#IۖF 0J-@"0Fj%f'j^>lqײqc:ym8hR_P+ Һȣwք.3^e rg<4.̖K̼wu]ݾ_T+qUR}T*YYN1]F΂D-M)HEcbCo'9 \`w"M A۳ʳͺ}[ln/+ʾ`iz*:Վ1aX )v;.qEN ;AŽ~H.նCld x&}b=tSR %QA h&dTXmgzUuwmX;Gۧ;e'C227"~THNȈyud`H~KH~G cѹLq\DNsg"K3ٳ f * \&3n[a QS}a֍,YzR]*G@K+*T/jmfo%>;\_sWLČE[&dL%x?p"&} 1-h?ؕJ&]E!H@DCP}v$ yJt "i~@KbAc吺K2`bM {2N #rvxB_}&AP/P@ qGRHb Áݜ קBCz,vqWX):B=Z4=ºkommOSW2fM)"MheR"z{5dc柧Z+P3\x&WQpG)"-5y{ZxPwM< wȉOlkӼ ¦ph2FNQd|/

-Ƣ ]5g=̋կ0MʑeG/-B)+E .`mtq>%Irk2XQ8@I֪B֖$U{Mʅ|U=U)Lmy *P_R ZYYqƊƕ ɟ{lÑת( zjDw.61gU Ms# .#0_lʓPDl*J0sBwʑ'A].Ƿi PωU99 ҈j:^ENަ{D<$DEj}o׼Sz̋I /pzʹȍ%M1e[s[6|1}er2qI&fD|YeVl+%M"ޘge*aǣ/ꕸvB 5dPyM3 -L*Ɋ &$>I@#LiN %YW#CbD |7X]Dy P:9ǀ7e%;`R&:5D0{ʬ8IVwW mF4|ްm[[qoұ s=|:wPBBK ^Ut0ԢEX?nٜ[7?\{Ν ryj?e了DMl9*SsʁBsZc8k*f , 1yI@@ܚsêV>>>y\t R>?88NotS0Y\rAU;X^exPcdQ<#fbcC|82.>"@Q z@Dd̯Ab 魈awÇ˕Îܶz~㮼:G|e18?#5?B@=2sߩǜM6/Q!&BuT}k?\xGfdz%M]z}e]"PXiQ 8d'@ɽ@m%B N.D,NҹtgHk}ח#љLٵUVl>KwY*tI;P mEyIf9Rkv/ot?T<ОZ${[|:}k36`7Xʛ=5b Pv\xىMDxd3MZ Po(=ӻ 0H,v+.MO杽AǞ} -tKtL[C+Cٷy.^>u2Wӕe%a+odw=b70_b`eq0[]ȼîMӉjp9pmJHl)1EٱИ,0kċhH~,Ӡ:'0 Sq hMO0}DQ'פ#fES0w"IFnV+-b]і{ۧ0PT<24(ps 7̊ H8DDd2cLndWzbƲTi^ؕ rƝ/bn7.dsW܏ݪSZ!鬐/N8vwP3Bp wPVXJMZ*Iٿ,BߠN24⨍yGIu 7?N>v>nk^3K'QG{B':kaI A$(N@4=_[#+̳&'#bCʱW2./geb,|~xYcӓ#Qsԗ l;>A wvK^;vvW-+ͫu+,p ]UYʕBbv_EȄ d_ `9{W]ǧ#/յn\GѮldqMв!.BeWk0WeZ2gS0_N&IfwQQ`ƽZN=o|ܼiK 42*Dzd5( %0!DVs` 0T_oפ!Qhd4AWc4|/nYv2&Q8j.;UD'Qt'w )m E&גT4{cU03PّXx櫎,ז{ՎԪrj2縌}Fm})ˎna{PGK&!Eg,ŎtB[Y qXB<nW.i_1IFCf] ,TtJg.chtJm5,WCrL !i|AqygMN oV~2~:nxa}كQn,Ѧ"*Dk_bf*PSwN;3]DxNy-4`Ԛ"kt1c=>&pFy#TŃx{G.~/~np4:ts.4- #s `&mй>Y߱ K&poxt7Oh㍿/j($d FlG.iDq, ͻQ7=\u@YASr x›ThK( F/߀'xLG =C cCq qP*MYj|uRr -Adv6ZFtژrթx{T%WԽJ`c,29e*siF-gF/:kEʵy5yuN^QKБ^we(tqdL' Ľ]另{ER$֔fY疣ҹ:&?1.Aԡ%.;6nn/riKsh.Lc1B&B{3<@-9ZqnK#EUՙơ,-VF7cDU<QJd[ ԒoIe30ʤ˾Q0hSf\0[C eGYnXq8v7<¸g;FnwR5͘%b "Wx z(5(UnGGri7:k`m\0tƸĸ;.﻾LCtn@YM"ZhhKTTF'Zy5ze>P|B8gμK]]?-"Qj38H6ƻ(**Ch~fdwuD3g/v#DðɵFJɖNgr|ӠyD/H0>1?-]*\9J)cG0<+ũhr}mˠYblPoSBJ`E9y77:~[[6V֕[+\*POtBa7Pb 6jB' m,A8pȌ &R&{k&پeە-[v0>kͥN[ZȚ ]7{~#G1 e^p}rǕuz>:7FSejˍrYhcQ28N"sAo}ɍnO 1p,) rF@z, %byJt!ztgEAvt0L(B^$ JOnU;'&W`?:T`m(jN%2-?e?VmEIW<)Q3-4)SGPS 1ITĜs:Vgu^ݻ}sskk}^y>Ϫb]ζ c;>ڰz}JO#*ӧc ˹6l(I"KC9;P2<عz|tq?ԭ0#+vh>k1W'aJF,u,4i"/hX69Ҷ<b;i`YBm_h0Mna+>Qx7&[ͣxW<\ϮCWM0_/]OTMV!NOBOav2^M`K##sWxO-ݘ^*y2=Q,=׻zOB<.ED$$`BwaK?f_;Sͭ `Y7Ƣ++iS=Qd|:ZnH7luc@* y%)14&$߽|f@hShQ6=d}cO}o @e*c߉/a+FB6TxH`hO4.]uOۤv梣)K-wJ]L-z% vLG3*¼PYpV4<q)zEڳ%Ʈ 1@P_8Ć )?ۈ£H"3fg sA)hBtV7wVi4APWK4P;-}"bS5sؑ-D z߇^GEoHt+]jpڪT"W{QQrL_a=qn'S+RNLě$xpjs@+a7(}c666okClC*.ijemO?p[wG&d[w :L[2Q XG>/O H&V#H@wT%]n,/L@,s(B6 Iʲ- :1ZgCRϊ2xb2T5DIo&?3JaKx[.pHj^j UR j+Dx1_@ 7؄澧El{W&Z],.RMgH'yQPG7K&H/R)^Y"o<0{G^u>f5Qjb;^Yu9}-{KT9Mo䢧HV )ңټħtGi&h{9P_3".~ ._5~ }HL@ ;+awD ^iƌF%ºgz V*NLCVmCy<<$NP{GEm410ԍKC c|NZ"b*LĀ8DLyvgǷ1 EyٟĥޤVw锝﹏KVx3lOJ/ߩ42w ?7@} m-G0rQt ̢~w:\ߝ_?\C{l C=]Px<''N-?3a>wZ~q9L<^7$\V6lfׂ[mQy^R3:%o1輄۠$="r\K {?l=$XHnETͺ pP p묗֭o;|廾pΝQ.e\9д9eZ49ц eUuX. I MwޟUvZ]04uS4,yk"k/1O  ?EX zjkм3489~$C]o}*} a?eڕfeq1K;.QFŀʪ(]Fe=ښL?9s·:9깫6| ڦcܾƚ@UOAN:fmJ5z6Z;ܔ nX}FJ*a9&&rwج;G7N٥yVhXBϣf^!%>?3@}cHKGvЇ|^DFi 'L S:k%H_ I{yF=n\ǻpk]UɳmPUs`4,~6gvWw=u[YL{ yY D$qr(=/y4='  I芅Xs \ͻ3?ER5PŇS Z|BKn+ (aH_m>RMɰr/Zz%KEaηY;1oZ2]ŋB[NM6˶Mw}`r*RBC():a[ A+[H>]L2wkյjEV& k+|UCP?%yOe i<y ׍/zMˢ `90ё2TکQb}iF@VB8tՔiT,5)C-1P~4h++@3@2"` nߟJz 6Uzk߱&P-|LMFJ9V;2|W3FSO0 |-5]CY6~vuG.q٢Myo8ן޹ Rxt-{Ûi0MiT]lZT覲l ;80>7?APCVXe3 ޏx _U饽LI*gɏ!q< !NfvLέӶ ۜlK%[kT4%tQBaZJV=))eһ_ G~&G~]X!gәȧn~h *Ud݄;\JF9T.g(L{}Á@3PeY#{) d\B){.ֱ{ֱvcw_oޞSޑyvl?VN ޙUeef~r0yu*I~jf;Ŀu߷߿8-翭Y./NɪsN*U|81‑KG~ VUǬ5Aa35/ Q"hCɌy-Ovvȑ8Rͼ⯛Ztr\}q\_97o/SǗzPqh0yol5_?6 {ruc7~jW'> zՒٛP{b8 $<) As2\wdcmߨRkGZ`_Ա66{לq'窱DEDNI A qxUdy9zR¯PtXmn&OfՊÇ]$:`Jij*]&Gw;U`};ճVCcŸ?=Q6QA,$Q 7dekVdY/cAlBm* m.tF, ?>W66) A)k0G=337H_כbj]s"6楠=0dH Y $_ž) "%A9q7`gs>"eY],-Om-EgJkZ}NKo~K`΋=$@Xj+ɣL U^/ ^ Bq?fv&(zޅ&|@>,_\bZ%7.'@JT$z )d`lLH69Toon٩W3FlEɖYl/!$ U<G ^l_=Ռ/E 4"P9]N ke)_R ș8w ]:m;:sOclYLR =E\8/| )ZdÙn*&$+N5??hW7;wm>Îsyyl.J*&Œ[=f`˶9 u~{Coᛷy}ucy(@P:OS P:|2Gං?<bčt3ѥ(zkP4 U/ʴD@LFL3G,@s SOB 3A[u_AIdޜD۵c>%WHӌq]JާJw'c4" l+rAW8E""$RQ(V&#]::,:N:/'["'+p(rK2Ǩv4y;cYanmlN6kslYqg' c/^QzvNIгnt?} ,F:_]&ٕķj+Pw'KR Rp0X~^I` _<eC Sf% )80E [TovR^*J&AZxl0IF JaXwύWUu%9 P* hvhPۑug zK*f+ a2:T<>;vym?4/Q5P&ԔAhQ^5aODz-T xW3>?5Av )[]EޙO%##,8/&p_;֮>=#woXZ6g;I%{eL9\ YǙ ו>ߗs|eb<:=myfwie`yuz0V'-cq\VO 9צGTGNQ7*^G92*|Sڷ s~pƯrHMFŽο sRi`S& {Y7 Zf^f- `C핅az`U7C}JWtצIpm|읟~qn}p.D"jp,~6/UB>0_}q,_>9ʪCB6 CVI(J@f\/rQEOAOssL<|m=uSV8W^Uu95ED ė"CDVE)shZ+qa{`gvmG&aɊI"EQ ӯ ʳn dCmV 0S -f3QdB^"/b0A.'٘6kr =^"lL~RC*ǀ^ݦӓm*#׏toڈbuS%Zuҥ-a)VddP˯aYDZyyc* %=j#S+YnY'[tbm^jl0 nr+NFRoR1F ~'z8ZN0/=؝* 2b^5Wr}ZdBlP[ Ume1`eN%CP+ EC4==<:;Zf]Wpn5@,Q7Év9G|._PM<% X }h1wUk`N(-5yv6sj.{}eQ '3܎yn_HA*uk]3j_7ZB^3DbDLNŢruIk/w?#NKn><ݏJChH7~*q2ۢb/&7^~J] tVRI*G^%w`U0.mNߥ8Z+" nGi!VcЪw- 43Ar\,H `c<^xBΡްڭrYzRG6/I3dPfi(~R)-> "Cp:Y^ɁzB>KSTȰ}v?_8BG;{_];L"5!f|ml:hM eKhî=ovl # yY^M5;wG 7ʆT"c,н%3 Κ|o7\=Ӂѣu)m^Nx,N{Jr@ӽ$0CٵMa|k-$!ew8 ֒PW]g7@"?[$ 9>| <<6 u@56^^C9٠ 9QWp^F/:9Eo" aw}XK6> tvKQ*^5݋ǒbԥo l>X7;*·`hgT0 ?Ѱr`o`a(*xc5[bK[XPc0*c(` HQ*HE-ɦs3wfgvgvyEmy։RK#90Ab9t"qX *.1Hٙ5]tn|xo7yZ/Hf9]%n/Y&nt6ݪٛV$xd@H{e&?P lxm@:Թa2 u3%+ƴJgFiIQrAP@LEsdWoNdD(iZ|ˎCMv,40DBY2.;؉:詆G^/*@Řx$a^P r'F}wKHT5W2{>&v&.HTp& hVLdPơtTDJ;ޑrDSscYUeq}/F2{}[Zqm\y38M.w=FQexZ6LUk,[)Ztzf^WLEkxF^lRH< Խ >ʡcIqNaV߾Dkb> ; QۧӑvaS }|lekFzjAY\{Jڭ2@\ 6%ٺU *j׉_J-Ex$o.E͟MM'd ;xpve3_Z*S>ONrCgrÁNit2M.'sG\a@-2\Aή\DWH'YEݘ]`^W5x~j6wY%6#EF?OqXE0ZW df:8!L0G)ѫ|Rz;2<?B/ϑ dB* 0G{ܧW ޕ7 $mt.-RT- j bĒD!%"D6"Znz{̇s|g&x?<缿ҏ+.wm[D3JKf_yz wZŕdvTLlt`c}hۛ0OpI4B!ziPz(+@Ab?rJT5?MwK|#sϢes(%!YwX LFOD1 L_i>1;~vvom8jCnvXƓ҉ETktf|hXËt@eo F%WaICXn)̓tH$$ĪhUQ)|3cX9M6|1{mB6ZzNWնiHpف`$ +ޥ?Z%_Α. <:ţG]5k{iup|X?8_Ok+mSʢV-b&' "Yݷ{MB4YMLŴ)ǀ,O>Q0 (\ 䒧h-A k]9ޙ,y$l29 SqVGhlS.qƩ2* L'l^hMdfFY:.;{LD9YjyfjꞒN֮>q9܇v4MVfF c84f:AFW#N,&&mnG/ˑON߷z0U2ȟblz-_ҡ\(Ssd2b)77R/b'cW,\k7rsg˶d*[5By,s ~Fގ{P3CM~6XӏtNQ0{ThM7]x]C@S0oRk[Wj(@pi*%O_zPLֽLr謪)jfJ㞣䶫pz+5Q4 H,i0׋,HI7"0(;AAh7W /9#wl^uAZd?#2;EP0h(!G$?6~@wQbmPHE"A+%vx݂{:,}Kac,z9]O_Q\,_N&R[ڀO.I)eޥ- گKK/W֗gy;z}[ߜ?rUɊ͋Fh{}(̵Iz-pHGTY'MqOC=:b~Iqvyya=gpv0s/F kMV*(ucůE9KlatF0 ݘ¡9mdv.lܲ~Ӻ-Ή NR}>Ώ k^Ȥ|qL3> x4fLGEeHevfkj> }N!\~'捀eSe֞?Xj#.ZB  n7) o?}x33nIX8܉v!:z>-o>58?X..E~ nGܽIhiɿ }eOXoDS1[Kpi/5Ӈ>#V6θzGCc7G5AN底6)f|t>F6J6VK )Μd.LJATdDuؕ׶+m: X,f?4.; ET, Aеȏ绚,hazZ֮T#%S*:>i X8F5ȸS4ONNW5#z+߄͐ЩW<-~oQ H *_trxD^gOͥ˫RpKR훽Z{n#i.E\ZD^~bz!?07עlNO'P b>$5qL)KM,0ɑ!Z).o6=:ǬmT[RTJ URJP3 9DIFy2T޶ga{ֺ#s{o>/% m.(״a1[;3:6#eܘC3xs'|fԵXx*&zP_t4ѵq"(Fpa(Nh,܁J0h} և7(=Qu+Aw]xKתAgE.[_wa7\ى3H )nu(!C71# }zܾlkUpjc&r}þmk: <2zV$+6֪Zg.^2´NsIZ)I)|$7<<|KtKyvT Q_;TYTg~{ *TǣM@gkY] . ?EI`95/MqXJf@Jc}SmuPÐ3ͱEcT*7/=TR%j %g$0L6̰ofOZ/tyd1f@O|}SѦGZp2~ H-pxlntba e43!Tͱ)] `d oI4[qlnV$Ъs&CMcq!8=x#ë|l}>8?]<_Y ~.]/ΝK|p޹tϿk"aKg#Z ފFx$f`sV v\뼐myf# iB  V ] ϰ'8Yۏ=?OIH} Ity„$Q6ƹ1C$eb}qZ0q)HOĎ'wj5:O!Nѥ7xyی\![{{zp5N̻uC*XҤx9Aa[4Ll. V,$⡺Nmwpf!TJ@\ИG,AUgŷn"`# S?Ժηq^J,L#e9TEw"":Z߃P)\Y{wayL魻ћLb#9]83+d<;}@[wY|a;N5G5P8FBE:ª2 vN# o8/v.A׋p$ڼ P iqܱ-EA8bO Y ch45] Ue L!k`(B77xW@T(G+dVVl_A (vN}ܑxp7XpRU|f#z8?½kSX_]PaAm|Y joC= PU 9ImEb55fv & &`dӛNܪQa>[:5Pq&T܄ek0DR|%Me7=-bFo3s %M% c]D@/;%Ue"8q{V KB jlosj2kx8@j@MtFqG`x4I/fB_rg3; _f/lȵCģ55tݬʽ6- '[^ŖwiS)ϵ+NֻhӮ_'dik~1Y ui1;9|b0&d i7M%3,%#^{pIAYp97zș#"V}h')^7=`G܇ݭȊ\soǬ}!6/3fàphއ[azFv'Mb- 쬈IUDn}ފ9.}B]a(sѐ.0 %9( ;5{qӥI9&?z?}u''zAx6 ]E7~E?]yovT5hOX6bݒ1q分gEmK6wx A{?~ƼoПW7ɵgs̻wϮG6Ve dк]\,dAp\1 vug.t uU}DL]s4qXG7 +lSO_t0.F]sǡ*ꞙJUWrc)hPZ {}W?y+}y<!4ѰIEk.lfvYS7eg mw-ߞ54٢-fqcю[›\05فG1Z*׼B}:nG8ttZ-ճr*-&.U֦a!.Z^AhD/)u &pO$N:.; d|\,h3]{|[]vJgdAvcT lcyi0_h|

3M,њ_'mƩtۼ42Sjmb,4.@)FnV<JSA#=̶׀Ij9d2#: Nw֑돫Ч 9;8vRX?*s_n-EXd(zv|E,'h} =Db悢|]P #gyrcU f4ۉ< *al}z0 E^ q4g~d_NNէ9094ww/l_WuYKN%ꤼ!R@8BFOtƨDPlAٸۺxW%U#uEKE*:XO4/1S <>\dJ<ʰ}հ~ >4èprm!iÞc^02IJkQEM[ؕJ(QBB$&HBI$b*՞s'r]w=l?+-22h65zT {n%g9T,0E#É^nf<;1mqㆆnW"e~&Bsǣ]] le/Z ע^=x,džb$h,y@F׾CPط5e0>N<;s֧ RQ㩙۴\-ᄉJL_&'CvN#ٽ3XBp/:ba?l qP0bfgӶ=hUyl6zsa-{k}BNXMnp8,ͪwDNʕ'ǽYdfb*V:821M(XnTv (mhe;FLͳD].Hi`}6}vXuwhJycA:5`mn.(5Z/øKֲİ<|74؍LDMjXxT&:&"? i7.Lxz\TVT v͕ ,2H4%;˲(% T^LwWNYX2kJB(ICe@Uv243 :O͹bs֞(y Zy8-DS-hÚue`!CeDx![ ɘis-y: ew1|7?8S /h {"vw1v=w_mߜUqo,gvέ45>2FMRa6%dz~^[<.]_:zϯ{Ծ9|ZdgjtwpvdŻ74GPK{ZUPa&/zcoc;G𨥜$xka}ttsY 0vվTD/+ 9}cMnM+J|PUZAѱIc|uڮ~z>qfsY$d|_Z:~ӽ8BD[d֫?iTTcYȹ tڶ̥Ȫ4~M,PzvjU_׽;ڵسU疢׾a",t0BHOXVU'2iblI\3LZ~7aJٶcS̾̅ɶx\Ej |^(}/ORSM~tqZ/. B\)&` RR1QF1Z O7KreXG?n{eIkbP%$uZt]<*뢾E})ݙ wƓ;}u5lҸါyj@uHvDe`O2P%QIB^8l{&0I(B$xG ղb`#T̀`}q<@i<`%P- Qjp4+zoa>R3Υӣ!nl!=zrypU떉鑟H݈Wu^v\hҹTh, $K2GWF&jTS՟j8VdHQPU/uSyR T`_^kD5ᅰD%Oh,A=ݨwװvm?izRYr668[BvJ%UW27 VS!1ԒPhGd( - pL~2.ЮK̀P}? jTGwErd!.N;,Zv "ט*+MܧhNRJ`.Viɭ5t<j'?%Vwjy.y iGgLJ|wۭ^Fɰ?'ɏPTZRgaSIB "uH6 I"g" H$BsWg/={ͬ5g_0y]籯[{TBA`R0q&$(XYS :4r0ôrPG&҄["C2h-CsI*Z&Gq?4]( 풼a}{ Azkg6 =!;cBQH(F%¡pa^yVVb% GxYb\ DюD﯉JiN@HJg., FD ʵF[lj'j~0'o`[NYߒK̩&LLEiؔ{HD2tTK5q?Mߚ\W^ISh&2;ԂrzَqG>ޖ]X;6G' 1w3q^<0/w?|_ߜWY2w6w;'7ƿ=I_+SCe#RٱghXVi;KğCqphǣ8P;}F ~f/~' Ewf؎?L@d:SbC5g4,3& I(. *36f1Dd81lRdGnoy7NěiAʡQv[!2Sf795:mZ sT+x/ݱbD$c{*93&C !CuCڿ k6@]+d55auţCPoSB圩[1fԎl5sV lJ1(tt8&)8| R pAXNBPz~ICB26@a;Z3VyͭU5M3pȾ(Z "p薘T_ wz[0΍1\ 9j}NעR[t0KebiyQ{F϶ή.eY>PVS4>Q/̦궗CAG{ޏ 7)Yq&; #qɱ蹾x]@iA̺̲0qʨQEq qRĨA1*QPDQE1Je%]Uݝ^G۳9;vߵk\ ™%@MfbkDXuU57& ,'wvW%XT8k$ H5T 6%c5E$DQbR|Ze7_̊gg۽lhyKq 5%a4{CE1~Aik0]4ͩO G,̐68imZYfx)T|cG+M[|fN,ȱPb|6'I;_7?~kkEsDh*aaIx#Fp<ve7e~2V3KG>"iF-LmfB, l^3J}+| i`߲JA:4a_dUC5<>TF4~cqj4JHz,@W5$3 i.bjp^R 17^v]m[:c{|:4wmL>||72ձ`. 9i1`-?߿mm~8m}vڷ'k3{͙cpbےZ~:FXr2)RT B34=hG5%EA4QċXKs:"(" 4Q*ns1|~5[~jIܶ"ummΩ˿|޲H!x%* =m.=[_럮>88~mzөH[\kJ(P%)R>/V齴Ґ]lE6/6w"YyC;"Ϳ4LH .ajuYc~!-tks\_Iok$fRjiieCd8#ᔂ *"" 328=΋;wg^k|\}1ĶmoZՐ<3wij.QsH< lkab6ifRp"Z~ 9QM1H$>;^^'^묪Ja`QƹXg ;(#J/0G{q f&|*<ũ n2FR2gbRV{{cמkS w/1_kO\9o6.ݮأ;󗭝>?gmC7fFR"&3+@-Pxet?db^6(<(P7]/C5xhFs{]Hy.j4~N+5s`W:%lJVT+':[Qyȹ | {B@~WLƋ '_mxR2ތB[G^w@{U۽JC (#T)j-ܭ`7u~h5V-,Pk#*U#|X?AFd0:jIM #dyJ5LE##tZwb6?ͧ A~ZIյ~ot`Gy>t%.EX.fCzy11ܰ{(N&_/39ݐK'Z%*{}5_>?ZQM>} &g8C@×-+Zzd\2V$YvٳWF o}R+ۏŝax_ԈW^ԃMV02у|V ]Wl*F'JmGe{'f]Y>#0?(xB~>>1h$R}n<Q. ^ S" "HG+$<7" &幩riV<'+P!He#<FPNj9=7wU;\XAK/jp@*9xX B Ⱦdx= 0HD$h+Gft™c%M><ߟdf%߭~˽fٺU%ܶ0-.WutxOѩpYaxRbvƽ?M_[fi;{lg;nHyɥ6͜j",Jq.10dȤ=ZHXPBNLۛo-O^>\JtˀفRFmµ/۩Me˰EP|9.$(Du)iʼn[wxP'/ 7W;K٭vru\=+DìΡ].q~骂ti\6v5R]xhGqB gw?jA HtvSͥ^|*EÝkҭ]zin7}mdeOsrSPCH>3 a!7 [\onWl\^;/l'뢓3;:-y* 6UA{s9GIFՠcpd6''} Ȝ& .Dȃ@xjr7d@KI.tV@9*)HP ^Ւ;N+2qvΩB뺪ҰdS kx(7|[]s4w?)4#~h>Xu;98^Zd hw'fZsMmײsۡX3%iMoiHb!" |׍XF _E.BgŃz3-}5G{$ԇP]A!\Pudȋţj"l"!/&s{nss,/m:W\+Ns_5Wզ8U lTI 2B*Jx"K7"HE|Y؜@ ctl˧AjMiR}=P7@[OK+ȸűpݴ,W3.y.筥mȈ?T"] BwMht|XiEA+`" ScȕoJ$ʻ WEHE%P<F(o.G"reJ{ CH 򒰨dlJ6ƭ=~QgawQ3seWZK򱔊 ʓQJzqzwfOMc U޵g9S #d+OjY[,1!\QL(J6( nbO)<^lƶ!xdD@IJ,*/:bAUZC}>tyQVOmZC1EY6,g(P-ЪTx UY1hJu.pzCF"\èœǺ,ْpc>dBmEB QA81Rvo]cI֌IF`׃zr>]Ƴ}T4V *ҮF_o[2 /VHsSg-`&9>'XT1&)c;hjqo)s (\3Nb2eup>>q1-Ee ^ ok|2Qd")ޚh)NxA Eo)1uyyIP_D2oJi%$$ƕĸ](&*/A@QPTPeQdQ}LMO2=S]{9) i SR=u U]g[\9쿫Z+TJ#Gnh( o!alX t0D#'oc` m/vW'>k1T\FQtl¼}~ysA@X |&[xnY8yi::Q_ڸox.ϴ_Ou^wѾfk6W {1ң"IźUkutr\;pܡsc|p/4ϖmHKSHc\ =7'm{{;kЌeccgzXx+,/̬h tvJ]Hdq0xGk03tgry!ů,eNu9ٌz2FJH^&zvNwY7wa=mۯ=׿auswcW4BcV[븽;9ëVUc?lGl+\mJl"z' 2\ĦީP-$TfpmTH1^{nK6*O7jyI[dD<ѩe`QrR#ړxLGI9Άձ+qjw~oul[֖U:L{[(O!yXJ\6I=PCj$нLԕcZC{,=X9PDB14"K @4ڣLnmWٕNuy2QNo[,j)a^<ǗVƣY?_wK>]l_7<} bW0NǪMz`{,ޭ᧩Ӥqqob-&j2H8( $#b,Es.+S +,"h\ 4&c $y"$-[EFjSɭx N]c3'g>82sE&ҡ>9P}Zv ؘ-ĈzE4b P 2MvZE],kҩf.獅͏J#`,n&j^c*sEyێb^.IKTbkiTz2.VgflXw+a4ufe;+lʤ,a7JR 5 !VNNF. >Gޕ O NM#KYRq(JJh?>sucCgUYi}um{X#!$<80Z 󷏬:d '&-ױrliFָA.tsW,3[O-_ݎ l[V ‚H,%)s|Aʫi +$O67r|гiGR,)9 `67$3[sjP4DD~[S@sq6\1OraO)EH¤ BMZ:WvJS0Xu2axos92^G9uAcd@c x׵gSߩ=ݷhu\Tl?h:vTˬ_Q礿/eڐd- S32JӴB#1r7XDE ^eQ@AEDKzS۴f~yfuq I' H̊84) &jX.2C94 |4ң9YTLURbq+?z_udž.Ͻ`.pqIIHݘ(ߧоi;Z>61v.p%zPU%D,H=[ԯ`h 1Bh7%dLWM1ۺ/p]]n:m?޻B'\%38v߯փ]{_[O#*H 1((BR],kt"UQj'}ԁ>6a<f݅ݫ{Aevڹwxd T>X+E v}AGf5u`NFm]? Ի3"[KkEzwcH\F$"P^>JBz"dDbEh(JJh3# @HW"^0-IIH+Ĩ݉'vCꌩ~OeMg},vs f[3SWψyUAqN7wv'f7vۖv9bԕsUO&b S89 bUB'kF|קf_ bcȩ)Pʇ޿*DXNT.>Rx fh(,t_ -RA:Dh,# )iT)zo'ÞWZv׼ k:7Ӧ\,:"g]6ιhIC</aL3I}ej,W)7a,za$a4QI01‹&bT^_=h 5`[tg5 ZAr"D4S hh=Ǎ3 cS^޷X/n/Lq`oskmsY߳yWM՚)ik'fMq#F4@DLo"[ d!}~f2sK@¡w OD=p1էẴV~0Z"U;+՚:d[fzW]G amཫư`sABd΅6Mqu'Ñ[b۝|N}c~pzL[6;ה*gqBrx2Fz{p^FF6]U3ZP *0LV0-c2sj_|6]3;ٷ]gHN(n[ 7a6T{ u fx)+-$3^<W 7Ul$"k¯HO[ {oY5AkGMbbw2~f7ĉF#qE%CQ[ft6ހE6Ir[ZM^VULbq\jVإ)O0Ywv50__}8|fM|l_\};_E`{˥S󻻢.b[_VVABr\` Rn9ӊ.րx4JrXF\$I\t(y=uTnb4<<~ω 'p"q=$e<\a3fR4eC4‹T`5a <.dEqfѷ\XIe~rv*y oG@6̸aO&lʥf*R$ /'awu*l|5 [A{Zq.߅ >Upevi9V}_ӓߡ+ב_˫-lhlIhb4nlXbWG1TDAPlب"" "(w Q#є1sf烜žZ{gWz*K~m)J UkSLӞmWo)x}]]:? `uGvx÷sn_!gCN4/ Yt { /,W@2XUguEL v!:qX/0KGi>o^4)z.IV ]XLa A>2;Ł6O@S@ Geēm`v>ԍ4[ߌV^A=fp}fzTc3\XCͷ%*Iyn=iN|CkPi& #~Uي9Ms3n4>Rn.t{+%|>[ +3ҋ+ /S,/y Yz|* >_ub m?nEY|<"D7IN#[S^6KEkk=,ϘAV\xp,~'|'IP#"{/ &{;,] m)PU=`s~2tVGW[ݩCn*r,VX)^$e9QmoAj*5TGϑc{֮ 1~'í椹5KB-c3R:ǜScRvFE"ey"n 5cWLYX\\Ly%2̮͑;tmYFx-G6769\&'M} .MN F톺AW`w;$k,ƻ/͐iq*<=ŒWir>!Xzp4.(TSH5GmX]  ̾j@c!NkA!DР7kx\1vF!,?2Uu˶ ,RMFM)18H_/'s{U:>:a9UQX1Prj~LSV!T/QV^K^GdkDǮ@jU$;H6ͻY:m;.a{+l)4?fm/rR8R(5܊ʥ<(]6k;3Cp.s0@ 5Vz]S r OJ` t!$bgU~ cQa4"xBftX4,;Q/dYR %ϦG#i]vvCKYݻнYTPo\&#\j*RHaG>3ӄ̈$8hy>jTnU/K_HkkڎHb8U} _ɊogVy tZB_Bk6gs6p$d@7LNrGM}~ n=U!{XJ{hz,nskw^mɛRY݉ yk1n\zO^c`B_zA{[jl̼ !T/% 誮D Q\߈/|ʐe.fb0%VZR!E*$K)Jleƌg=y?ۧ$‡w (t_?&b.M5ARvqk QaL f aS|kh2S z74Wu`!8uth{,85Ysf]+{zc˵wgaw9{}O/-?xN2vG;ݺ91j GϣJSb2#c ]5my\ͳLFδ^n,(n\Kent]utO/ƍT4=>>~`m.U+{881j%2?Ԭ6(ތ;|5]GqZ]}~1 麌dH (iNe)Gx OJ/z.*cԭewykQ>$hQI$">POK욥 Gv^섄4~?97:%P,6j}a궮۵3dar흹<YZ6&C|ӤgQgu5 y5kikQHcWTC ::Dg@wRTճXLLPG,VZ,(bJUS eizj6\{LgbݺQ[ð46V?,NϦtl]QOfVKOm\ݷ^z+Y(hX$ 3l.X:+DqҨ%+`l֮+gYh(`vDicm2 lfZ, ͩ>&:DMl4q+жh"4cG ^U>NkZ;`jnv%!rOCAP˄u4 եHD421m0mD(#U< 7ez 4& qσ1~Rd :0$ "33 s;SIuLʞ)NI2tR1IQJjRIhTqz>5)G@`@bG7'`b~pde~??NvgZ}mb>eks_S@­O!.&G~K׆hed4.)9z9&E@ybFB4:6 @+{ϖï֝o7?n/Wv.<$xJ{aq\JVdxF@cg`sR:M {ɤ/L6|g9(H!!,GtЄfC _ΥknG~ ɧ -dA+5_~,vKnHG+r!45Dw\@DDQQ6ApAYԲLs{μ9g^19~>O3' ݇،+*i'ڽyɺ0 ul.ol׎ۍ5efk.>_V7LD(O3\  5uN~w,=EYǧÕ Kc+Mtbj"kjBQ@u?;ί[s޾F0DՃ2ՙ2+VP%QؑrfGf}COrAP܇xxa>h3_=}@NM;@?'CO9 *bPϽ~"1 rzq2([qiY6n~r"I'Qeh6PNS/}߲{u|i>j\Z}>-ο=Mw > #_%(KI`hIJĽ~Q91x3j'!HڻK#wFdA ?69Kŝ$2%)i  P4}ymug9Y 2;)W5R訪g0T(. ƈ{ fecO}ͼ}7n:NeM`i7;ʭ&ӬrU<,C*2aˍ)@J*͗U߆MJ;0̏-JF/HDeьExD2Z@;#*,ʀ1 ՠo \1_94v?[kTiPBu!>e^dDBz"-2BmZYɦ] ; VY&?;r/7e廝";t::5T}cf౥xNj6c*EYϡR# !.A dQʸ_h@!ېꏝ z<`=yoٛջ:􉠙A~"!Hy.#(+cYuֱE^I% n`V%C)t]C UP1 ޸k'SH8y61x{l:b¿f~yY-Xh+t#xn=Bsh>?l?UBP*؏p0U[ :1NM϶w[kn']yieܸ28xnp6?6gnb$|qzҩZZ2UN8.Ϯ%؍I4ko{Ye5V  J * JQb/k1{rOsv̛9yy .ڜ~kɱKM+J5ocbry={wG|y=0Xw{WER$ !ps_ͭ6*+S/VUb@\XY9O$`UؕZgJ gBbp(MN,4BEF>}gx/W/;PQ῱X|I,c֣@$9/á<){±IƳٮ~h*+DU2D:v_k?w7~v|3^o(SJ 7 84@}n˱cӹ޽pʩ)(E|U`LMJ,0Eׁ- >2k'dCᬷI ) xȇe +|EɌETf,ʙ:8fAb`vW_dl..H-(ϲ=46n֓\vk{kXm\I34a]k;֎LB 9#=hܡPs#GM2hA4FzJ1*U4/S6Q,Lc=f ŏ '2a:-LR8YU~On e[/7;I?CT oqXGH&vRZ;5B.eb>Xc4l W@<`o(Ă)(E1p)>yzRSF': 1 8?!A*Qlr#Dxe|kɽ:\ť#'ݞEi\~#źrJq%V:4,3urnzA!vitzY a~9T/DM[u~6Qm!Bh 3G#u!i P_Cm@Q2 !7q2.dq+"g9$&qO0,$YpS>kIr6+ WS|fS8. a-8' &SXTʢPlgtjMM&H#SI2뒖lT 0ueeQr(RjRBe֢h>A-Xghh9HT @ϱ:JȠsDGkY@s#$%30X21DN(Fs=Eirc)UQBֳ0h,+@2b" $"u9 a #hG֔@ka.y; Z <-T+L8:MoL,DŅ a!@.UC`k0L'XH[_WXٵ(_ҮOMMjs:iDa^z>P2AL0K'҅vKAVY,0j'HBH$D0$!~źA8~mlzP}i]6.>7!2]PJ G~:~u8/ͳsکt'?TkultcJyGP~ i|D({ uAPFL4 Buf:pI@ߒfX3H*\jsahg@m"5bXBb 3(%j ޞq#N^8LmF20YEma{A{~q{nuynlV܎mI.8yf?xMWݶ?Gkn<|n-F&( re8ʌ<wbQvJޡjxۃ}{}zy~y?sT{oŦ*\۵?m;(.4,GQa D=`416+`A H&ElAE@Q{јsd͚5 s/^{st=>UB\~Nԫؔ0 ) S@Kp`Q 1$qtrbh( P x#88DR%9DC 110 PUl*p4 []![4@PDo z+ v~˹{}qp5TUHBIPdǁ-S~좝V@3':GDegDpE٩e:C˛z2NccJ/ ,6߭6usr\B4|A Nɡԁ1F;RCk)^9O6c`˹e[t :ZUb<- uY礮WKͲD,bs Qc ȱnV 0Q&NLɇE%T'D:|| h6)5*Ӥ92jҽq4{a%sʴ Nd"x` >߹l͐"Gm_.Iכ?7.=nn#F"kͰҰ4;Wv A>0;v:\n#;҆BXz~\c)b7n&_Дe LZd+(GbDi15Zm ^]Ie@eNjb̊dm0~U1C2UY3i#ϸ?XDXX:샴ãfY_5{-5Ha4c01A7CiFsit g8 -+M·⒬ZZyMhΫT˳.I~s齏9/nT4uu ^H a@XX@}Wr9`}NGYV+^ :^1QCy ⁰X5lj&,T"&ŀ"0Ջ(Lz| xP hjPU9EP>&Z 'ʼn(G'S~JGVfӬU+:^Վ Eƃ$|"q >-Ÿ` ͝ Kal4dӨe~_wć .}NVssQ)h*}EaRði+RMRiJ!)xA x=kۣk$ 1z B Wp[W[},_nW?npmh 딥~(ྯuq>{w9m~;_5.nTGK~{xib*,5C 1P:! ΊäEcA}K\NB='FrAft$QQR0Pݎ|}ۆ<)bZ}lUPY3 @()9tflvH%wzx^N v!W3Cq}zy;ŵoھökZY}vi1-]yy&ũx=Qmo{Avj+VkPﵳnc˵/Ggno3QwvzfUV.֥.t|<ڳȗޏHVai.^HE""O((#+C Z#K).;0 (1,t( V{5ƂQ&hbE,ET:6DAE)JS!XML3I欳\\0OD$"4~62UO E8oea0J{̈ 9 s:;%<ΰd찯XFA|0="Al~!ͳ%\9]'Ƌea{B&;k!p^i:}'~fc ΰmK6 V~(WwkҼ3RFĭr4̤% &cPzo/!0*hxb"ke[D|zЁP^96jG*.k-JL\՘ J27C#Ͱ* ™xȦY1ovݩe_nuwg#UJ9HD,.ImeANZ!15mH2Y p-հ`)M|myz+LM%-$5VVpDlH wڝ(㠘WG$DFLR`U#B@sݷi\Kϱ}ctY|}wx滼v.&ڞJG-#;2UϤ0,qYec9GRTk-kzFj[¯;46x45//kK%(6~`\1"}0Z2 7uC '%EMÐs4lfx&gc}EYi]٠.iWvse,cf^&Aە脢-F-ؑR7V'زK֭L t`{lFXOc3 G#t7\ݱPcNnD.+s];{}]ʥB6 M` 8I-V(sq W1 60 -f2e&\XI֣qr"*H\>Z/f梆Z[Q&}+_!cZ!|ga#\ZU>%PmN]]g `!\+" ,ld—ciI]r@E~1ȎGV? ZHʽZR+{0 | $dVt8H@;m>Tg3{h_Z4fH>Xy(dsq~xeCА_ɴ7:*#T>1rc]W`oM K3A^b(ȸ b`3&%zm_]Y/8W6߿?^zdGV搟-6ϩ$뛐")WKO?63qz$v\kG4H5dU~H C@Q=ɟXR=IJyp;3YS]!d% A<+ MТ]a[;BqA?i~K`/Kʑ#mpgO‡vfы|Ȯ4u-I ) a_B~vf?f?{yub~4\_[/ݵMqRΝwҶjFQ< XB$*aBޘtw6'C;?|Gn}/7ÿ 'ԧ<\t9mD{13~zq2({:][?ݻunxS;-/Aos0T( [;w 0uʌw85:JޱM9U4Z  |jU(Pm<&!ǠaE#a铓wc#􅎷/$-?fr qOeQ-#,u ݩuc`pZU#nq8vyxhs3GW=(ۍJ_a>PI5JhYAX7ךQWT*D"pi-CYKhfF'H,ّ$W&IcnSL`,Gj ^țZ]]}1u juϧ`mX`v$MFlƒbsĤ$,TŠ<6~iir`Ql +YfHٴ{C0TK2Js -FsKܤe+ E㫠~I-jH% +y]6~ ]&5N]Ǘgǃ9q{*3|`-oĩ5d ݇;=?gxßw<{{'~v]Yl1p#"Qªd"`ᆰ`}fk5ֵ &:4+Vl2FaMNHTnDgY~<.Ix)9~1L08ߜп7um׷㛯;Wg@XT\(|Kte)fE8[OS MP\:2h-@kM*w1FYj+muհڦјcک[f9s40=2X 6=6CwwA4t}G#jHs[TSKpf]z12CHcӴH&Ƣ4X[߻oݡ~=.oW׮З?O_=;ЅC'׬\i\bUPŀum[=t3 GTǭ'cboEL~}lRU6ӏ͕+xq u87|.w!_:v?O`$J7%ƂnKyzv;6~M5d _duƚAL6ĵ|ˣ֩x!F 9RU J\G+(L }xx@CQ6ta`͐ʈ…G\*M9z3X_XN3 [ XR&] '[vnnܾ+?4^Bbd~asCС4a_7Spز`3 zrs\lk"!TQbphERF YlلlD6_V!D,A2m^j^A'yyB}tZ flqg^ۻ YU0cuV:r HhfS#WWTr1KgMҠ$TlnܚPi3e&δZ  qѢRD9(W7ӕ;mBb<^5#HTbqR$sƣFl3B%ZyJ!LrGa8T*Sh`198 O5T\/MFgLX9 s7+&uѲy6Ϭz[6pl ascIVdl{pz{☧\{W^#gIkV'kÌ_ըut [ lF`E_44*xq'K[o R4/h85QFaG<v 2;e!" U"&Pq@?>R{pβs~ky|=>\ߜ ~epSNHa"`#d*Q[ M^676@x0WJAYN h U$^-rdwCc@wB 7MΎP6rY1M l }0c?^9TL4enD]V4-|V(|+򞋘#(\iܻ:\Ix*EjY$ux.D`|Q 6 zk}SsD>}1k,_R곜sRX2vR+B?`#h,unb%1Dxن'H6m[pQ*b,36XJsd=6E+*4Zh'l[zT"@@`MB9X~iE1[ jc5ѡ80HfT`A%$8>TYǢeoY@@C{aS͊LbLJҲ1:)d@}a8`S/BZIF+Y[pf>6k ,c e,# M DPfS6.)9f+h r^SvT&q "ԻACa:P{EjNJ۳9K}}e۞ w擡]uWE1wM~]">l'Oo]-Yl>NkG)PyN)@a lY DFB(,w(+>#`R9~d/K~RW D0H&cϖ$q4O;+,S4-#R=j,R@ᑴnP M](\^1R0C};Y~Q?JԣFtoMmjT2 [?9s o>݃qwǡgpfcYeıhh8P[ uֲ|dgM!D *2@n,`1\ܮDi\ (LGgod[ɀ1FnE5bA6Q$ \z[Ԩ. ,geU.+冉&2UֆEںc z=~ѿ{s/Oy9zEEuQЋ;z4>/E(oս=/c鈲HGiR7.W'$Q:UŷΚ*kC{ȀC!!L1P,72Ϩ$bW{L(~-̺Y8g!W p@LdyQ˴!}?ZY޿BSDRБ[[ NhTɥ<Ւͼ4$b7F]պr6.;RsJ^2'd,Xv?.foDˏWECY"[Zj5V뵭P; 9)TfU<چEk]Y(K`6k||e6?khV{3Xf`fYo[wiVAuP)g(d~uxmw5VQd!.H&~t$eM'Ѫ#^<:ŔX9$NRhqz\Ԧ7IFXx<үOsoA{ fq4-1A|b`.;m@<.0).sDN8xVe,6w2-`H%S-uM+zNX#q~AӳRl-3I~Z i2x/îRײ[iz]Hـوn| ?C=LIwӁI71Bu/ȶKOZ!'@R̛J2iSj1uE75\B J73Kk )>x=ţ@T:w7y<xC/=ff5b2rm5Uxm)Ӵ0zG̡Z+_x[4i*o[&U3C'L03:7 :VoGK*|zr䆷O/m.=\jd.1\7vΐ·j7ىcн>tL;'m g~TPդ|cԼ0WlS,!!{0LCkҌph(/ Ql: g05E^ dJ!> Li IJd6AKy vίZ*^q{U^'s7.܅{_]nƏ/ ~<Ϯ୳pDž?|#2_mo|}rYD:;VW㛔k2* * ~W*(diN0(J>:aMyxܳ{q^\c\F"~ی~<8vFGI U|+a"ѣkR-kxtiM\y#LA!zOf}qE>*7@$Sp]0*e'DT]Q.x]@D.ξ&EoF2plH6ZVL/ P;9*fa󳙫yVSӃ&sƛ?=4eSFe+&(GبA]љhN=o{ " Yb^hnRN1 ;ΠY6 #ܘkN4%g8 NBmO <W7y`юu,I ` S͆fdFa|;MZ-I=oSa(:6x\ ~m,i 82B5ɔvWƯ6zT땻3?+ n !4Msies)*`(Ȕ(2  2 bej':b߿kg]j=v/*%fq@J3p%OxMΙ͕q JEH(|ܡ3 3t5{V"gQ|:]l|p~*5\["G]HoSqC) .uu(:h_sv5x )2-r+=FMoE;3ʑFĶhFGkAV2l4kE6Ēl[f1vPnŽJ!v<lB;;" "QH셎wCu\> RSvæ~my/-˰:3vwۛe!H44Q Rysd^bZŀc[Darl0y yPlK;r6Y?d 骫1džxbz` >243f4ݼ`MqzժĀp-p6E[umhUOM3 ĭdѓ;"w3UMkl0<3}\WM/+xe˩9&Vǟ,l25:gɈj-VAUX"Qf۸I)T|YdçҧFSgGr/:\2-I\"l E?CBqdǒNupjtdF'eЍ2Fa! ʂQ6l#2AC#vVT)q^vM^h(rJ"# 'Cyqx/8S9+k Th068P[:* p#8XlFtau/|q|u ۏ{9?sEVcnKaaZ0=[ ~_=qm} 0;/LҤIgI6%["7(^vgE7dۋMQ4 c8V4|I56>S{էO`@,\Yv>Z.KDž{+k :?8j&+;d}c-hz P͠>s% "#Ya#+o=ft.6ow~|zO?mO7ckQڎ-fG3w̷upFL..,[8 k t3%e<`EϘ# 885<h(̫f1 UL=(ә"LqWƐFP !wA2P{u*M]"$iM좪Ė2{2k:[fM#v-'yt܌PԼ/{qTJ`x4SﯘKN_hNd [ u#׭T=LӔo؅,,4܁-qA'j;3" Lᣝ(BC kj߄ b-NX}ƵNX:0 5[4fd9VZ>Iq-rFq&[}orYݺEh7m|:8B>z;B᏶#xD$5+CLq+MԆm{ȸN,,Vf7ly<]B $ȴk2O!%>n_O7K}>( \ cހ W{@<>8e]K0Ԝi*88H (( SYukuW~ΗZ{g^_?Nm4ZWIJ>5B6'7u 51 FE@=HBAl q:ÿ0ù@/G3:1803{VI5ky}O`u#3pO21o_| D_@B[χ7`Diȃu26jZJsR@ލ8pl\i>qrn ZS˝G[-B8>Ý~P$/pD|*=O_g*3}QCtTW-y>4e&dшC] Ԇ.20GF{1n@Ņ78/dpn2Y]pSc'!,9R{evT/𭥋#H=ErYI̎;{W>oO:'@ m^[ȗ(HQx,<-awkSɿ1`}u͇ î62UJݢMfMߨ- iФ.eo0Q:ϋ-Ȟ60Iw{ZE\]J3!B`F^+nph5yl[$=9w.2|O Gc@Wwk`l~Qx|,+` c J2@oÒTFS#_gZLI6aT,aJe0ԗE޴w=[zkȂ$@7릂{t=|xyzW/Զ"t6Ix1w`]&z>%|%컱p@_ʧeQeh?4T#DˬG($\"hΕ(}Ң[ l3² ]{N~]86>lVO6-ipq|rnv'[p{:Y:$)&E\ڝ[yR (x)|HNBgěB>̳y7F$d}Qh/i4ܜ( H{4@ŐۊjPUJs r%: NJ@?=g,Wi"+ 4!*-aoϨBu`'t\_[gݝCî޽薊)T$-Cm CpqA}L91 !> Ĩ:Щ&N,^YAIxג{`{7"Z?[Bw0aJ:xubjBU|^F*U% "I@!arqUoeuaVۀ=;IGhűlZeuٰL8qhQ Jtm͑x[s7[s;M؎i_s;һu`l9r\ yL嗺)mт@6B7\gLj0gBo>66f5|qZ(E-C&L'ң˜L¤*ݾ>p-_f;wZ`|5F syHş}0_~ٷmjKcM"Gӈ mІNT~_sѣkGUg#$Lr4 PhP+} zOe<_ctm];vv~K@`>ԃ{PDsY>DUfN|JFn Ԏd q}X;3l[7=F#;:8?=u _P'RG$-9 !08p3HΚ$ pTYɀAw]@~` Pǡ6HafdyLL!Q:b 1Ƨ3YZiX$p* ݧTO á=ۢMC)#Tof%Vlv&E@Ji&Ady,-Ϸ>}mt*lө:L#R*eî2z$RƾٌxL&LCv$h\jKWռj!.gtiF, dD$>%Zt+{JbzYMI Ʊ xL#c<ٶخ׍%bdY.r)fˊ"TL^ ?|ar;Xsi |Gcb,G{bp G@DF}zG Ii)o^AMjUp-t4}1N'E! }}ǐAuQdlh߻TlY~ Ma֧;.Ɔ7$%S's 82\`րWuedOe QpI9yQkiEXU~!x ņ ȧ9 Z2kKVX[n^ >^_OW.|K?k=u|2S\Ͽ~]؃?ܻޟWqpSV9$~gဴ9 mgG1>_Q7?R@UAx(2"AefrUleỊ ~<Ȋ-o(jsLdb4vl/% C!x ̠ȱ~<O)MSCe =c<[/]߶޵$ƈ`k|ٶ{wuu9uzw\=]5ѿXw{0ǐPT4#i } ;ӃcN[dڼze&%c}?ks|vY<W?nCy-?][݁DΜW pg%vnln7Ip t(4YLOop'&BEvyfvDg Lf,)6.VMu$y$"L_7 EiBzXIV26'LĭT&-v93NY)-h-cab*:HHk{ wIބZ踒%I(,}Aj)QDyڥn[ϥ/ptl+OX+՘9S+ts*̪0T)yܫUO=cxNCȟ{bɞiM&F'P`GxHŽ^rv!k=4W$V GY3O?୯u}`XSq, 9\LXdqc~3z|D^y]~ߍq}{yreuƧCa ĭ^W~s;g +Ͼ/㍯«L_@_?D[<yS вKsAŃ|HGe) 烢\hKq! sՁVye9r&; ! !5l2#ǫ3c :K:,xcs6"%D/O>GJd[Su}Ʈl]e{IUKWg| ~smG޹sϾwgWbgM8E +ݫWng$=#>͂c)~Y[Yi@M[{4ބϼG:v"KW{G_QO~)fw aˑ. 3}i ( ㏑Ogף`Os_o-E SW ),>L{ <+ {L $ABr0+;(&Ȃ@!PEB;i'i`&90Wd?otW™R3FRHɭ/s'Z= Z[n~\ybny`) %\6UGQȫ*)3O4s] CI+OU:y`R%Ε%}GiZTXeRniyR,|=쩪I{X0a$m]"cUTaRl b6l)5m˻%M!AFt0w6Q7` 3*ӽ|}^4ؼ3+m*~#!Ks{Z(k6bO|ރ]31qChޚ_W>0,oR:oIrzڬX+T[zJ;k&mVz&e YLH.09SQUJ.fy"]cBw4[j{V^:tONOqW"eѰ0ܾ,?[&brLqyvVu ȁQ )Nryh9TߺWF쮾:w/&W)i)9% ;laAqi;2<ѨlG4 +'뢶!&ryv~x;|JFX/折9C(YLTRrmryStuS8 y@×T-ORq PJtQaH|{utoii ݤ(cp 8d0HǺ-?Z@е\ suv#`qtF0=G]nZ6?ٴ'[JT$+]b Z=ƼXi=(%}bh0 e\`P O~ML(L! L$/H]o 25kC ]f-y^Žv:Càusۤ J@,̈4R?Q& _lEI['eUݼ ((PM0[:fThy#wTdײvלcwYh@K-m=3 ͊5_w"w3_|SO3mWdyZSWkؓcv6գ++@YV Cʢ[LL/=44G H{kƗc@1xGe0 }36t퉠Ga&GY#,ARL,J*^X0 p}7h]a*Yѯ70陪؎xöZ<|-~ o$A7<'ݾmL8>yIn|(]jQB&`h GATlpb}`Uah-u%ю[ d14fƨH8']D~K7{u5 c`Z?Ϛې7\`ZceYSEڐҽ6~phH>a<ǭ_Fg=Y?md}Ǜp%f4[X{œ*NZk5|@볘iR)Z7ܝd<~L0f>8x  *$ ,tꚌY8'3LiqjEfQ>։Wu8*hyd٘t[iQnf*(r r% "r)GaZ;4?}<^[Z$Q>kl@;$x6y˼7VQήԫؒB-O{=P q4Sb̔;B#vEB1enVZs͔K.Ⳅ#rzR'Ligڷ` .(Ϝk˻cZ{1/1]S8ìYҿޑN0Q| fJs. |g  mPWSK.q{!5MH*=D5)vI:uAgװ&ĭ˅>>s+WOW!lKKz`NX  ~%WT᫪xo .D鯘« ,r]D}|n7QJmn#*J@t޽q@i6Yפ^h̥ wHauMҐ~6NsyM~lyMl,%7 DT& KD@X T-#kZ@QX3؇_??~ fO>R{vj,c6a~ |?<9-k8Sp` c^C¸5`↑o@4ܨ]nTjx_U CSC@ǜ2 MfL΅{Xoij=̇ü|Ruw83'-F0MSH!Q$0@WA}iVߞq2d!0ta=+'ɭɣf`QYf4{c(~rNOh[z=Zf׳L7D+JWSy,-&~G]0#5:ݣ~߽%'/ğ_"og't~-_©̪'$l<ar:hE;eiɆnW6.|\Ur޲x~ 7h>x_cS>MQB5bG!&PoXCPOc=tj)h}pܽ /PHN9߀9R*Q j A)dӋ!Voey\oWgC?TA!Qwk6*"TO6VyxG|ս޽Cn"LzX=4'k{%OԜ (UM+M;ASM5б['%{ǎ*eSt6RJ&"Vf?F|+MAaW,+Y*d1g0eZpd֩1?X:{7< aARiEfc?Y'#ɕj&#Kqz*sJwVc X_xV'Mϲs]#c%W֠k1?6 aKb n1܉:7XV,s@b-aڕl%,l/|/oO<`b=JdTg+j+B?܋>CM3H}x`ӚF2߷= MRNJ\zӈkuӿztGuMӴbrTZC)&b!0' ϞFܾR72ވ h LV9ZPa@Ŷ:rAOSD|}eK1hcYĶޚtB?FߏݓٞǧHy\Lo[ :JQnrH*}|Ƃ3d6Yk"$q.,}O106~px8.g)b)UN@r cp X,pJs}Iu%Yq/Q\V*>6ߺ8,H6vϜLC9%b fnlirdoCѝ).󧴓47g$ǘѸ1јq&q\ r) - "r! xƘI*ݙڭ?tUU[ow?'t K⟹yRՔ\(12f$$wѫNj]B7-6jE :kji]o}iZ:')_@JE$>'S)ݱ8(O _ ч[1]o;Hʱ4 iB\ AeKF]T)ʩ}sc#_=-ߐÝ-0k|\ߐ= gd1l0nO{lfU%WY%SZw@Ԯ{]_eoˬ*/oϐu5<2['^ZM E ۊ0{Pq5[[q0Lm+.dޗ4|;&aJ*GppB^ç:["" B5M^*HKCݶ3rN(b駝6ދĆXzj'};=t:ɗH9N#/j5X:0~Rl blPHԕ\S[PՕ-UA}y>7G'"u%8j" `ՏfscY6<|.EvRe-]' +o- K1CqkgL&ai00$VZ2s_ds(z~ ?`؋쏹/{B?dj k8|…jBccG uǨhM2 b;}w6ep ~8غϾ%I:z;;?w"gN#~H4u5M[)5{FbXMDLNH7U`G۞ǑS#j'j'g_G!׻Ae| lwnnX:1kU:lZRVZ5^. ꉁ++7ío)45  hwb :* l G>8YP^aiYI :=Ja9V^}=}>xt}{a8f>VxN? ʫk5L1n=E o|{}{J嫄<@X4?ӳd4,bbf ScU鞺F߳q sjܯؓ 1kWv%h^o&cP5V%.L#Mf]o4M&YI Ϡ*e-Vr%6w5wRy8v H:9wD0ዊƍ%FUXyAL&.FbE{7^Iд9>J}؍Ǭ~|mQ\S܊ݐmTeJ W]IZ@ ,,/[J2K:aWI[&V" .&l,.ec׽/<>8|~_pDifA4U҈ y$:4+u56úN.W8<,`q?mϔe)'&l&3 WOO29M~zUO j)գw~_|.>E<,|.|qm9>6'ԚnRYbO r$nL\e`s/e1Lc[@Mm_[ m,,8uư=3Ry#h>_ GV} }D6^OJ2cˢ65SAgS?#@Ɣ]QorQc†,ƄG`OW{;z(~%{Imvۡw6C")_G4eQxD&"t2d[իjq a2l; dTZF@.8%'Q7 kOVǑ-AxEG8~"(<i^>1s+Nf'UZ[ LE]Q)X~$֔1'`WmrX/a=M0l3PWQݪM5ՠt8T JFWO@>t.}.j;\cҫ&0tBNـ %6喞(`^߫dmo{ʯ[oo컋~0<sFjch>/z6^SHH9A0C}`kf!V$!+)DD ($]&-X"(KZ>[m fZm M[K[ǛѬT{1W=`rwFdT_hJ\d3y(mI-(d|m6\cEi"8 b.d ?,K{X8X @lj6=5Rbj+Q,:ub)ÿ",b2t,s^1V= &ktTWѠ>{q8;3:Xbծ/QELϙ?OWRݞKs vAdrj5I+r,iOx*5LSx" "Q@§ ,hrM I /b̉& _EzcP x)pxE7OR^WҘy(+ƀ8#yFSк:B/4wƬ[Q[J&DB!ļbpX]L(Y6;_*YnkAg0 ̮'z}!fod듻N 8鸳Ws ɞw_Pk+-"e)j|*&9@**-HURg'P:>K$8d96%VVxFR*ӈ7'# Q3NE[~`H.d_S\oiYDqdM&1&nԉ1EbJG;*7"dvff?p>s>G1=nlGjںa:32 3ܡFH3pW89*=/Bk@Ƃ7̪FU"LWHBW?<|CósYڥO[Ҏ5]ȳf\e p]naWj sr#=:)T%B"uG47'dI~ub[8 3:l6]Zǻʻijv0gǑ'ͺ:1K ??,[bjoRɾm:XM.&)9s%kpfMx i1SH+p:mEc=` h{^ yp c,31 gO C %譯>%{/8r5k8A~ ;_ǻhfӻ^xܨ#D [z`/F,9痚B鹳;gߟN"c+its"W&um+\*坴76v9>LlQ\ײTPeT6?4rx6Jvuu_g#oos2} 텗1dvxd*ʚ*bAMZfKa.:EA|`!뫠 $R ^AOp8 (}<*ϱ$Ŵai R/",WI_2T v19{+!1 ]%Ma@oJ |WljrÃn2 1qo  ~pSfjV/d~&ԚbgY%f=nWۡDSzq@J%b$dBN_ t@m*S2%sJ6G^-uMFԫʘCʦ6M$R>SNhwzoe,zĬP@tغOv2HT8!w$6 Iw\}| )!fvhpX6C8l^r^-͸<NÂy[^5kLD" +߱ȅJGQ!̢i͚BE2@S)Ɲ5lnLBt:20IS]0JG!`|FqpH{_IbK&(pi 3( D<*ם\9ZCWәg&]Y,uE9,$e38;FY喺/v[aKSe(Keh#ُ=_?\y \.)wNGi}3\fDdRF0 %9<l,R2Ÿ͠L (VS@]+bq,%b'h$rXc,u`bkO)y m:Poe#B^"$#œm Kiˊ!c9O]$ca\"״G-)5㪐/YjgʫWY DeG53dLORfYcRn ( ;l. nɺss˙g~>M45p݀9˛\Ag^z#oZ )3Րt6fwѹi¦ĢQum-ԭ虌kM8D76ϧ_k%M;s9mjr"%L(RB.p[ݸsGD֒z" `b$3AQCMj9o?vϿ|~=v|?%͏#ۿ4rF.>NY"iG&Aiz[2%};!(bG/#g. sdh;Fz^¾G4?Nj`lSw/,() ڪŹlVQs5}ky o%Ocʁ9=gT2|z)GOD}'uq HxOÜMRmbGF21ԶR [,ޜ0=G@,aTN+#a_v]䫽W;^qgڒoEȗ%Yr k RUڻ@Su5xïVtqK_!RxgϺG_?'=U07Q0 xV<^etޘ1?F_uB e#@ma.i~>~+X> oDxM*ݲzXuxS p:iF@DBuxP* L :}~+acw֝WgO{?q鉻ڭyK]v?'N>Gγ)Ďf/{v(Ox=Vl~X ]pXE ء/ȣS^`I~ulH!a%5Z9L,+^`e˨BAܧK/SɊ<(vtUZ)?F# %67P eI1}щ+uWy)GZQ 'NEn 6YcQ#{|-wIJK id M%,6KBS8+VzMih`Β3xbV $` JSZj+ꅒ?V"G %YTzJ*WŷlUaxj%F]HL9A[zi:GI; ţɠצWhj8QE;c5o Oy7l&ķܨC@{Բj+ps{vlt>kLU&}ױgq#iIZb?8{afsm BYE#ޏ5V󘼰E:ثs!;OE$nսKX!6i8BɢP(,Sx7|>V'ъ2&_e)\Yd(Y Z᳨)n`p$L*n1t&De()K0<)RLn$EÏw_ {̛D ךjB@tϫ66ƭ>پ۶k;vYH9"4$|2YޓoS[0l !)OBdLV£JgI`Jk M5KYww73y3p\_Rcm]0}KŐI׵<^8wƁDslOCcǞ][,p  (LL& 3 SqE7.l"!<] oGU jֵQieUEE`f%* JnUv zenM~xrxp?&v)ڒ u؎>刯BBM!?MMSi%2@AAb--OvI˓_)zd9JB2F@6źsE:T_]3s:#d|uzf`%p2j[J2 3V ')UDk`cq0 f!wS,-N o 25_Zbbբك9ˬmnMotgyZ@zYDF4[ÝPܳ<GH"DJ7ZŞ{`g!55]W@A"ic7V V4eAܛP;hӛ ndNӫA\I!}(O!8§7YrOvKÒߴ)̵Ԡ..PeWB [\f |-DGa~O xo g0#D9H(S(.a-g/4*!U̟d2%Y*$J(N0J:;f6-!ʚ{ueǟY 綃1ͼRɭeKxU{6XŬ>&KaEu\D 8Dn*si_=ylg,Άb1^՞nװf yL{V|K &DLij=W_ak~ԛ}ZSH} H\;ʩK]WK;w Z1CYd:89/T19^ϻb@iJbK.P8&0׷QmUuoXb6>fBPдY +Nu۳3K H\&TvZ7s,WT, ka pFQ !M9l) 7#AE8`^n̍ŊV}T}8#:wU/4w&4$<͗J<){UȀ<#OOz<:ǻ#m:MĢe?[:EyIj!{۾0;Mw] k϶vCNʂᩜ.-ѳqKfh` }SbS_G!ݎ;[[Y8}5H|Ob;lj!Bj#hg`{":׫o':8 lmOQo6ML k6KQ6dI{0- ,=kK+UzEnl6U4ǒ8-5fR+PM/ߜg l~ҏa2\ ==<M(B6y ER3fÝKgdE,2#}Ggd R6B])Ê]otw52aSLp'Ag@Vj>V6\+ Zg%V_Q)1鹳ԩ`Zr!P]zH&A,ēolI]V;Fl8nJSے38$ *#!O "Eu---`,eVc`9ރ@Owxd#!Y(vr>}>? ȮՔ&2ҞmK*]1bDt̟;~\^ V>xO[wg9aNmMW9 0blRq<ļ"2F_"atc7uc/Ķ&0^_u*BƚDɘڿxNs75 S1ji5Q#. ( . ʪ,]iIw̜g;VZsTH(*$ht ddL tZm i!Xgy*~-Uho`;΍bP VX1@,D<< f V<[ x#.v6P G3`5Qi1  hVxˀJFW;o.OUt̵WYL#1j!Ϝ'wu.I c`!3jPYj*n͓ӂdm018_ghs/bPV+~q)UMngBNfD*|fZ|S˗iflQ\4^l~:X'A=jMiJ '#\Qy0rޕFVܸ9<{tC'-ՎܣN{5z ,g*lMQSsxx2P DU 9JȤ &&Kgߴ5J5JVi *C]o)K4"I3[JgXr/ xu &(X:"LJ4sq4~* U3ɁȴU7+g'~~c"JR]k){cW3rI٢I t |f/_|y=8xHXR4ͽ~8˸&2yx>\Q]_`/x,OddYB*'K,j3i#/L$RŸά5ܣOL`(Byڽf{HPwEctwZֲ'nZ7lTk, @5=w˦W!?9IZkO'1/Md*#i̇`-)3y G1U~? TEQ/r7yg@eR9VfEAAHQ i`p'pYm-E-!W LuΫ+p}c`[ZB 0'ѩjnTC pkόc~qC1h}i.HLHr7G{р3L(}]kCHUb eSsn^7@ }]p P1tX:A1)Ө7YCxH߃^Xbo \\_dQvcdP9|vM:kZ*_Ֆ0L eW#M{ue7V 2:7W2ɞ! ^6vpG_Jyk}sr|;:8JA<{Mw!?9Z[5||Wi}9rN7v"64V H` V$Db? F}5 rŹCO8:JT bDtC?0 G`I{ZIfJEr} e)^etwў(E/lzQ%HHIOiK?etW6jll)ˎO(l ˗YD@EDUQ@@]Plqt]gw?<|>].:\}cd89cI m%|+mOlvY(8 DK$nzJki_sa`wS KA|?%9y`__'D(nH](Z,eH\C\ "e`,n^I"5Ǖ@NGҫ+pUM @iT >|"< s@: @!lxg%yꁸ',]]wLC?뛑.RP^P Bdf*-Z'M7)saء8Y |yON+qLV^ סs}l}J{ݒ MQ0Ef-s&(MQS+3r_͒R%U?ޟ&=-$R4fWaxisЬTnėōd&9:P2.QYB:r'??. zĔZw+֜QfpwmuҜf=(]O&g잶Cvo^l:g/Spy 0'9CqA4台D9R¢Ɋey.rKPؙ*C5LϤ:e61%9,<+s8%4]\F/Ὠ8ߢU)= T]dCb;m#FSsGVM5yT7-dlB@h1J<׬02-5݉;Wѵo=vWW5[m N`Ѽ )SqDư9F7^L>ZpfkOB<0?]ǁL|Vf3gL2uJ{KV ^UؚǠ{ 툐գ_q<ǍoivLQv>\MܓP-:8_Bg(ټYG`fkZS貄ƅSv?=¥ӖH0߹CBB$K  TPΩ8l W+ :Hh⨀A"H+)MazCyµ\[8lʖ&htfl.%vj0 ^;P]R-O\dVhoT0|5_MTȩ3<96Q7%)`8%G](g) iGszuO\nN z1+cәv@\f 0 I, sw#}b.<7Œ,_4|S n12IB!eU+h4|ӆ,^_VYz AȦUڟ}\0B8)\F8<TQ^`q[ۄvewָhGԥ^-PÆr /[QP/Ec:_[sSz%һ4I8v(7LR&ݛOߙ݂l4*+Ӆ$R]gQ\GAڑ~"e 2_MuJ}=>zGGw;5p%=k]Ϻuc6<\9&ORUnlH+e/k{f۰}?-GidHtsؿzX;l,qͳPd]k u@B&dNB"7 @Ns_p ;Gqy?q Xc\ָfn$$QFA@PDzWTRA) "* ֬&fMs;?y?_ |n~JL mn;)-çtj ;)/NGg0J;$Nn >lwQL.qNw6(}o΢6A8ܱgݠ @>p3z+(灪1)@@sإ( bj?jg1VnUTBH=C*_6.Y833 Sa$vIϯݛo ]B&Pr_{;>Ik ǐ@Ñ0>;vj%tCDġ<ȋ9F&.&,%H;0/q5JIqU(EI=u"ջT{6ᎆdDS7}FO MK32*_̘(L2h!󧜻^ҳۣ+.nhC [n9ny nyzZMjy$V?%2>$(\޶M4=P_HOC:sj:9wz' ,  s!( ,s.=z?\tALdAlJqWcj::;+-p&`bGzfN8Nn{V5'׏߭w-]MFé/d$*;7Okʛ7X 5]faj&5_D|x^ Bǎ@Xu]ϿG#i(Kli$$yr]8>n./jϫ#bwU̕pZY'8T${$ę\ Z@ߓh?et/KffNd9i:cKj d_D6e\Y 1IM[M=sϹ<<:tRt9ܯ/+{à7069 ȩxxx0rWxXVHCAO7/ŒPr/_OtL$,|,i){&`AN9΂}8d=[uqʶO>FV<ܷx89oa1PCr~]`jJm|{aăE>A%@7 ;[9fwHm2Xn6l̚BV gTEJ~*֕ZRj"rJ'P  D}Wx!cNJ&t%f>߳)Sװ\Nƒ+ Zr:6ɀ>Nv{l˩u&H46!L_^2ڴS["*/O)P0PLmE@Wfj1`a\ sIt0NXoc`9@!M!dsx6¦%yx!(ٖz8˚~y,R/ )T]l+8¦Ib{k9x|^銹8 ĺ,zMa 3YdHy$R]WNWȨ YǗܴ_/‡; uoϮ -iu,OfrζH$E%iGuf]6>Ѱ9ጐԥ>J#>k %#qpn9v˚wQ">6V.eQdMnnZιYX f*hei}Kc.ʴ|y-*0s4,#qN3E9cL˝`dBDB)\pgf cy蛀e(l%Kq:JD&.O!ޚ^n귭l9uNiӣ2u]RDW'اpCg g6\NWezPF@>X4n}oJ1IΝ&+η5RϼB{;kjG:4mKSϺbJgr|50GȨlU0Xׇڟi2sòTAM`^:2z3~/O"fLӭݕ{}·M;Ulsui8XB2kyh RH 5 znOc,/l݋rS,KrU$f.)WEga?I|0ӌJe!`KKElPrz.TB#4!BFdW<$)! ]JcKԽ<&d`vŭZh0E1>Mu>]=]:IV k:KIFBFR8*MH'=ƼsUS h UI7=z}CF-kZr|^_c'O`5-j=9_MV/oޛBUƛ՝OgCSr-s {\]OX흶 Ws-k;V(mW8Ծ9zb᭕~'hrww%!^Ѝp2#y-` R= tT7].~F"nkOqyvmqPƒ&df273j5v R|D&Jo"UT2wݹo'>^{^>v*FgE@Y>*%1Xۊ!4M@ fOIșu+[lRWMYǭ>_ţJásݟ0EQG$~mZ&RX6h`qA-yj+N5WjAFi H~am,X{lqM2__ Y:-٧4>,An@oo, |YGmm\kULHyӄ|*Ƴ$,~l\yGL&Y y*9v9Y=BݥbRDБgmٯlo4exn"L`ܙz&K hdݔqwҜt'`_/(DC:zbFhýX=MΗggmeL+36"bSŋ:cM#:Q#uUFל "ȜDC"R~ CS 9Y$"#$Ș8xmsW_ȭnP|a6xsɡ{ckyIJ*-UNBC^M'zL&yFid8=g;m=`ȩ[ue|DnZȶTâ^ʩu{rw#d Þȣ #EdI@f47vVBk*$P޳(`6azA+br3HJO!)Ph gL qRؤ ,L3%9,"ǒUM>ws%%hD^b* ZTkٹo{̷lr7l:'.yZI*VMa'^/} (-W^Jdk MerzcN'.kw&W/0Yi6by$z#R9w*Ֆ40/ۃ%j̎$Zg((n;%NoyvߡXLWyCn B T1c(6qw*[P=.Ej}MgS^K!Ykpd\)L{)&VmoJft"K50a(KQxÌVr|hh""SRm::n-/].v#ὰ)F=20 _WnMlk?fTkF}`U?U>RR>[tZ=;$NǢ'ݫ}We5hu8EOױPpZErr;֊%#GyVix _$E|^ZZ ?Z_w~|=r *lxKqc vxX/ȾSn-x X܅1z1r3AAg3 ff5=/<oXgbX}DЊVhAx[8< w/2WW J / JrPO s%~HjyԶn Eyǚթl)uOJQ0Tp v~_G^.o_UϱWWW}*\6l\ @ۧPI@Bb0s=ˏ̝s@pM3ֿL~Yh){2kzXZkeQʹ6iWvW!.eq*:). UJH9CQj.C4^)DcK y jc0+QAQR z3 T23LG腺.U15fF%VYTje ʦVϘO}9&1L"(R D nyCG[="uŒ[;oM'}+hK$1 (]Y,vx4_cZ"byu"(:v!^ 4y1zNOaO,!#A]")7Y^MEBr] ejch4$fV5_>],?'(=J #i.:%.B :0 b `.R2%eH[ r#% 06'%]gh+2 q~V?LEpl.Q)ƈ(B'IAG(r8>A2gAh(6-ӀԜt;]GBK6,dFaqjB͓i|$:SvU.ᓸY[1dB~٣q5iݿMe&$3MׇftYכ ?:! vDmo7Aj[ pq``SV<~ڞ=mNZ7?GR_u~\9,m>/b3jMJt<Y:&|sIahz&бlZk3$PޣNⳅ^ps{?cOڗgւSd| cK뾤s[0"<'K:¸^55 .o !)/~>pS~..,)\(}M/7 xW4ͿE`9'faCt/7Aí+#p("+s,eN񲁏0KvBN"%@ٺSVN@ >'tV\ *QIeUKSk|xej;[\IsS]'hsq~f׾,O9SOmI/Yb]V*cH-2U*:zgl?@T$Wy⪈}Vjщ_ 9|ݭ5MۮEp%g]~(sR٘xxT ( 4ߏuo۟߿ލ4;g'2yՆmZdo8 ö5r\P@:!jB9uXI㎈(Qf?oә#5z:es6Y_j] G!FX8?=ôUxdV-2@/Uh~"Vwȵfꌜ HLU!p+ N91ڇ00BS{OcP0l"#a},^h盪r\ϪNwwk3~[n\9هiBZ6'76>6wI꬯ߥ֜h/,'4? F>4k٪]Z&̞!&+(}הiYǔ0 RhxgrrqY]9qFG>{CAa)7L@h{}r!QX__8t^tE'b5K|BϖRX( o)wu}I| nL-ylڛ(v"Qzy{bad{sAtws7>s eRNBZoWgSWwQ)<@1{ȈP@c'"zfɴKRp)MaUb,&M©IxS+54>٦ drR;`GN! L{e7_kWn}9~}=HL5~Vl3;c!咛o?Lyԫyv9;ݍ%j&,HiĶvpVJpg]}^=#ڻtn,xq֌}*(Rx@ =Xni4gܐvBnŝA|z2B6xoJn?\BMӌ)NE x .pBk H $v,P2(u~c.ˇ7[nb"閸w_y@B2ʠ" (*$JBByTRtH%ĄH#jDqgwv>;yE쾁ǽ~9 ǎlѰ2.OL_#VRz[Cm"RIC=,1RFʾŧug$,)Jp$qtuK(x-2kڦ`֣VHXT4-R߆z& {i. 3"Q`Q=Gru5kKوg0Vyѩ=VvtYvȘ9 '<%3fe'@ -]Du\b*Ȱ܍fBHG.蒼)@ŖORX9tL"p4[+a :Nh}pѲ7Z$+2gE4wҙ*(F:J@*kJEˡlB!n*Ƞp><}p}7lz n%K˿>Q/t|S~ # uh/{!rp>"N3s/n,җVQwC/h"o \m@ X|E|E~aqLf,%=>y$^R24-*TLs*gn2O*RuR\_Mdi!nkM7 * jBN* *IU }! I $숲m8g)?sh xNJ򸖯+V F"}!,Y/_'+Jx(EO#H`sŦ e P$v XH^jjχC-_lGCMaf7gz.ipM)Ô|*3a CU1IGJ1Z!eɳs!Fx;F(-Ce\-.1ԅ\_}6PH`;mVp|@8?Y'~rz4<ʹq۹a4>%<^ .Is|v!d|9; ^ t0b4Ό [w/Ë3*XdǼ>:1w Ԇ[*5M;&ܬ*qH9&CN5YCFkiTu,|:7z;̧=@̐Vy6["T4OG¨#(aYC>в LTLy+ˮd#>.}lτ/ݛM%< 7mY<ܿ+M՗AgCx8M}\&X4 c*Ȩr첎)he [:^$(zPi9G4`Я e-Iϫpb'I'&|F p,['WKHzVW;{Aѕw.ҟ_}}KMlΧq$IjZ$kVªiso~rNjOql7 \^Ʉm.j{|@>m&uZoTAZRG-ƚkp3 I s !p{nW^ U@e6 0xRaWy. R%rYcbjigTspk1y 'a2*Kn,.DQ;MqFxP]mfRC႑?\$':Co8@)QЄ9'T@/ai% D?iLr< hM*&\n ["M1GK@ٚNŪ2K }ް@_Ac8l% !?:|=“VR MapeՉ[7plPxߵܼDN*!B?G$A{o wv#9^S6#3jk}>Wʙd Qы qܚ5 y5OazůOധ]>[$\x%~ZPk~M]>e{:[K!˫!7")f,W~!'moE-Q aA hުd$f/9>H(,"|-!JH Ӳr _S&N9SAQy.{z,-[ 'Y`< ,\usO;WJ4l}t.<L ɣ7@LJw'YXBQCll/n;_#{}M~XZ#cV:DUAy'Y BBM7 QGKo|͸CuoGW#X1,b51uvwWZƏAcbdb4'e4&1TTD49 ; GHQiI2k3{{:Z(VEZHvSBaf\d%w~ֲizj4}Z}QCd[sxvW/UN)\Ẁ~i3eUԑ1L@hK[ׯLؖ'PpmC~ 3VnNb U1LPNEK_#G>oPU5{# 'kO 7 ?ogK/Wسi\±^~I{[Lv0t݋&'/YP7k=!(㭽+R.Wl@Ƕצ{ݥ4Ӻ1b~*6o)=YcE<<@ó9e   Z˖qy,,-ɞLlPlY< frD4v esn )hŸq#dι r *3Rl3\j2*91gnÃ4v%||؟n}g׈xq&;OB*ܿ khCyľs)OhW! PW%Ng]HAs@H@!L\I!#W;x&qjˇުcח,%Ksbƻk[6fU%Hx8-5n픱r^fjs5]wA-ԍ[TnG`Iʥ 04fيJ\/C礆gcc1$8܊5C  "̟J&-`/h.+pۭRf MaA*tgOb'D*yY "-o*ČӞxf~;M.d#AVd^ӛgeV9>dZZC^p8׸B^Z>ƒh%20V,"R&뒘,"1y9&V*eEaj&$a*. iR).EZ vK bN6qcvFpy>QKN%踞gF#qH+j dlm1&*6`MLcEmZ1g-[d5KJp tJw|*h` h-+&fۗBwCTүq<,r_):7ٺcvdb3Xu6\ӏltI,vs1TV) 3tUq=XԪ&DZ+"\ !crJ)/y˳+4 &qt8G'I21cd'ucŊ( {^@@+EEP5%ٔ3gws?r羯c74N~e.-Ļ_WҥTI$߳ 5*5GV- NF+h iWhhR麈D. 21FH(1qp: ^3KqOlw)}W[.#HS;.ǰCaqB'kajnC/j.Myt΁rN,ɟ!ɨ|Cxc,#wڥZmrlNLn 4=7<H|0-EX H` `@U2x$uIXD 2<#R=,Ǿr^ q(fҧ99q^[`=Oub {!5y;vcEeWb \MyZ{0BTsǝ!( %!Q<={AKLU3i{9qn!cl]mhӸ9|]]'s'Rn&ݕ#[DGC`d3/qȶ_H{wn_jWƧyQY$Q1M@dł{ { u/ZO#9 dG[iׁ%kVt"eϾw'_G_}٫@6uz ]-UmSV3a7 f3lɸ=oN#ϻ_4x$p|quk!s;(Sp~@(jiEHԜu5}xgI֎'$I?8lɦrJmGtCzTJbv>a2ǥԸ4Eaߛ̃GIe%xQWHz?Ƿ2yv"Nn s< |L uh"16D^JҰ% VװХ? Y½N 1x.z,jvа(OPf؂B WZ([ OswI$5/|oI*bOO#W͓?lld{?I(9>wM-%̬1"0׳(A53Bm*I\LC)3v\~ߢhfN Qw2:Ϛ"2ƉH!%0$~{Ǚerd -1UYʘ R@gKnoX€Xܘ`Q/9g?;L^L~"RsoyQl'W2hQZ<H8!$~.s v`Kf, #!ګt\ # h\^IX[]I?uQ{22P|%|{4 CSd*?ߌZXs #ǫƃ9 uel.Ud g U{!ЖkF!}JB|E#+-RC%1Wp,FZQO6p枃LA2 K#iŐLs_(KTj)Lm)M|mT_o~RNRs c[?˻t)HQtu],twBH H#R~)4BB *^wܙ}G7޳1ZR{6Y~c{-/G|zW(? $ n"1o~I鲻&b)AtɝԆt- &V)ɜ[F6K<)\q)Ei*wx&85)fjR ;cDMC32 Z |PU :?'&`C08^3φ7{qͯflc +& 'Z0&]#`,jN΁t.~*KݚJG57y o^U</Sx~\=pn:6) [VNe(O?Vӟ˿'}Wkxa<[9b}$nH6UɥNrioE6wф+jcV5Гz_P`c1=EvԧW0jjp%R5M`  aiASkM`ADĠr,%(4CH u Tj82TP&Cu]a@eу+nM5:IgAY= [l?ϼA%kmU#zi!ۤBS݀@2 J?*9 ? &fՐt+/p|/oĎ=oᛷPP$~ 23E*Zdh_8ʒԄG.:lBt~m5%J>#ULu.i_:ק |}5)>`@գ'cPW^mk @}sϤ !iUD_ZQ!nh*<2J8Eʢۀ^܅T!9Qr`ȷE+oI8͸de12}չ"%\B,4ZPRbttĭAG kɴ^3Dj攪>EMمw mW5<+-sURP3+C>.wW`yѭ@P੍'&Se3 x'3σgo PE܀_ "U{vX9ر06u}I/K3Kc ZoQO4\s[!-gA=H?OZg]bM%*}>:6n^f]ox<~-Ԅ׃]6c6& 8Ջ@0q܋r2mE"|V~~v"HËDM͞bƯXPÀE$ꤒbQ~]!L+v,ßΕPו\-z "4pQ !hҕj:ez>5@FX%*ҿO(XJ: ( Af _&;/owG0iKG@,]B?˛((}_u싸1fK,Ĥ^SihR*癆s\oii>HTƚh:jbMbE9A ( Z1Lg0As:Twfn~&yZ{=XSpEʵ$Пq( & :UGGU>/S {U2q@"{ (Gz O0Hinrw oG ;e}>D%S[- (hG YJ3v@X#$#{]0%ڢ\hTOGwöۀl]v|`MJ]j=Y e ]JS+.C}[)\Ǖ/ã7#'Eߎ`ɹD݊G-WwWq-hɭ74@z:PM~ 0qrD 8-xjY$&^įdH.9k O$nZX/kó.F818 0GYa[f1,pG1V1%{56M3EQqfɧYS?HÊ@?Q0=]խO!FB'`k} hjq-"b?wC۝@O pL1v$[\$ytHGu=_V%X 2XF+ۀV3t\DM>D@xs795,!c6bg)a";\*-˒+KQMG9C@̡TsbM0k݌i-Cv!p,{c ;hy676|`x}a6F$}E{q/K|߅ [zG{5vJ: <%9E_kdkSۯ' 1_'^P*ۚ<:U'^3X5ӓShy{j x2NÖ\u"J̇ۿ,3ciMc*QGʫ7uK:)~9l@A#(oZE8ĝP;H`^iV&f#y\Zr7U}4{w) #iu'R,J;XY=xd3 rNk[7+ty/Z,n(5_K_z.U [pmp0ƨw'dv(ByT՜yd$|ڧ]JuM~]nhRUJ֭v^6 MI:`JCs :S7X)Ky:|7,@\yIvtÿbX>ɭ}L.O'-z[~'^p$ŃBQX!}@\pIC%Z@dAC"MMbɕ'>w $8x)1U3 G014OUx kx sFV)̾ȶ0^F$6246m[! sT 2'LHH Af.W׽ݫsy8;콿3!ir55렒;γYrPx%ErY|d["=ȴs=7͡wsH^9fg$H6S@'_u`z@Z2ZN?/<ؚ3[K]`k }!e5 ( 56Xm3;jLWoӅ,eM'e 3}9.n>z. tq hWY^(MVh!aٴ̾]1"W#$,!@N}]z IwWgIfYO-cKzn_+ {<5sɳrMxIpϧvT{U;(_[,MQG'F9i=/H(Y0gnHl_ J6W`Hd^fEu{b_hJJr,KcޭƎ߭x bn] M6~)ax&iŪݲ+U-3e:L18y2(|lb3uu%] `CkfnIF+F\(3?f|D[&fɸKZFC-Pݜg@ /M ӣ#Q@aRŕO}񉢵~䏄/e\x\XK]/K!Pm,.&]>Yybڠ+Q)Crx:֪Iz ߻5ebItH*65(,5.|ѣ4Dg.ZBupTkbɳI'~?\Q8i<Ƣ+R}~ uFo|ы=Xu=H=ntٰJ0'l\YW%)܈E9ۄ?_E> V %L `0clIQ.QNK0 kSL+g.r,Cg<)pڷo]h!nNO_ޯN'/T$2t C5fvVE6Ӷ?dXq8uzy:ZhZEL3Tn#%C+ӻny |U9}0 o`h̆=_Z'a'⹫d/ T_,$%B:;58)05Ӫ|FB7p<#uAl?Y|em6Nޞ0Lu)+(`?5é0}Tl?eV+.AM\Ӧ&jh$qvȪ.ppٷ e %QcL&JWOWͿ48ΧS֩:}¥k塤;/|}{_5THo(hLdAB5VWƞ|*q0/Z)rmM^/gBCD@^5K"RgѬ(_4.ˁfZL+BP.1CچPҶ\÷1͡$1\ѬdZA 5)e|my=xH u#@lۀ__``di {~a 6׈my|$1-och?__~KF־%/O;ʺ-:HN7腢*0RR :{~U$!4>NX`\%2㢬 )*0RDu^Kempk8jor( ZDzlk~67DBBr_ӽuh2;hřj>%GƠ]hJ,ճG6.`? -TtSN!-Wk|IƭQ[ K4my5߱I$;0}2tctFE+xSwE3i?6e/_cOkbHbhyx%1Yz$i˕1I:l^kBϥ4&jl= ĆJpsy}"(~k@sm:ZWAPiW`~p}&0Ғ鬅1glΐQiy} e24G"Pf3WQ.%T{Wwc;TYb.ם w6OJiE{sϾwPmwξGOD]7j"HZM恩#3Y %6/ ӢLHf?qq Uq?E9iky]%UQVwLo:7F4 %9DLP2t"u|%7,:$MR\Ղڅ0FBed.+%h$|4=G?~ds%0A^+U|ܩ4:L15 E! s9~Nd._ƌO ^InsIp7*`хJ Dww 1WMS[dۜɹ4dJ?r5,h 5~9:'Ϥ ghT_8C=^#\%nȏZio#?$>'‰*wf%by XPA :\Q%er*H+D=ͳ3ry&ţ o mުi{ >FB?s NX 6p/#lwQey`] W][^ƻ{u}$H4vT|ZOw݇{kov^xܒq7  uB(.-H2'Q ?(8k)Zj7s,,ξ3l(ukvv㡞- }5WV! 3.%* y"򧙗l CZ(r=SÃE~ڍ8ؾ$8}|}(?Ǒ3"~=8=}5$[[Kێ:+>4=+S0#.0!:Xk+@(׮?=fRLeg[>HeY`YxmsWN%S%@U5PD@ed/zߺ8yҞ9?:5624rElҿ~m^QF)oۼi PqWZk/3t|D KrSCYPGjtjdqFJʫ6ܯ{2_ܭvh9o㈷Gܷd4Ȧ0VY*"\vQF7&ʙ0QJu?╄EFFFPT!,"5@B =T%쐐]Q֞0̇swmߋI@N)v7}nk{ó%XCo@xiG\?z <}u`Q+% vON|o{'Ns&ս /qW%e/l/Y*jen!h*bU  ޫd"r=cUkw`v*e+u9Aq}.h(b fqr!ut/g*y*XVcWh.9zJ2"m ՝x^w#Veݱdr hgvC{qΛTVmmƩQ@͑{X%OyA,qϯxR#+jŪAW(=T^_߆w^mza,;V>}˯|K-劋V6tĐpoڵcBStA"ϩ<ŭ_+GnkfBx~(.ϹV<6E4>/ R A>gr5buJ(bTj5 |lKIa 34h+N2[0{Fqw//}m<bsZ89QL&+r4 H3}RTɳU8Tf:&1uy|?$2G_㹭_G[ oM;ӳrz#iJU2'!, i-j M+aCF[2c֞aC? <@QEM H7R "hC1?;B:ϕw=ij[Se@ Pj )ES\2Y7uXWE?$~0uw?d$snDR I܅bmt4sX_:54_̛ӗ/gAj9A-? I ;Kp ֝D"XJ!Y KTY&"=@.`Y rQ ,̰$sS*\:9a Zcb w Zs\<NR.lOȊ,"ˏ~}|9|to?dߢ{{-sHXr): Gogזk*l7nF"Plq)jJveiy{S2uc KFgk̆`ݨż+e?W,OJc/en"~)w2_&w~dև/{';L*&W3B YMW |Šq/dq<7*m-"W4;AE^kTLAyQYU>X{+u=5#H#nӺo(݄:/t:(0ZWg9: i6 SO%<1qC`?tMǹt2:[nlP1g_GT2~Kw oŜ0h;<\ORK\U--]dNϏ3.=ھΛͧwֿ؊JXcl0_KL6z4iͨR2DZ<_o%{pvpVF"o$hu:A֌7 -zv_aE#anղ֪'d4 P3T޻ nM#&Az zsqopt  ]ijpA[%!I95xzD3:ѯ?2w1]~ư+V=a_cټ>5^HY՞ۂ7>@q_ Zny [y,56vfEZ:`ۣ L<1(89'yy! 0R+:oNCci-J(r=W*4*j-[v$P4]۩R9sNÔb#a{ Ujj1U T7¹§;b!r9-l}?dc.KG+=Q8/܊Vrw;O ـgvI,i2 *Tw٫5?,#33t߭U }Q(ҙvFg6XHxmko8@ p+j`E Ω?P3 z[Ԁ% VQ]H`maQ9?9D@!څr<#C!姼bYޚZD6{Ϯ+gSHwp 7$S DnL+*e$2M Cyۘzo͋wcE֯eI*s2;-͊pE~)W0xVQBT0&h8]Yo踶Y%霨B9/2e S+L7b0ѥZ}J7-1oV `7G/% N=]#o-%tkF_ >˦{Ks3zq `AfR6~N[sSACNz7q/ᅞ%0!YYxS/T$4EZ<7? 2{k"p%8 ¸o( D"$d%kT"R=o`n鋹s&}]|w<tR":Z/AP|NqDͬ׌r4ϑU*L)t o,\g7BK&D>cf'EF/ٌu\FnpZ9YsPk]iP ]ʜ& &K&ɬajm囤I|`AwMcp } Df\~YڣzXak1<9X|ͧ܈:8ΦP|&輏c'1MV}iT+BۊFəQ&׵ܗ_3/Jo|MQ<ۏ&{/.ۗ^3jS-rGoBZ~x0UG@kg*$4nr6(SeHS#$ʓ祳Н'+tRiˢ@*W@eLA5ʕVLypϡ,q=H^JذCy;8SN}B-!Br-pJ\&ɜ *٪ҝU' 6I MOqddޗXa8Clg~TYc/\ t=ˉzqeX'8.".*z,*E!ouX6tXP1em1hpiNxi/j7p㳸y/ =yn4A l.y0kWHzN"#,TY:E9xYfo! p]0mCƟYQ|{0Q\[Yq_D £\!C)ǫiRFHZmS:~t5t%f/Sq&}HfC2tXpr)T⁵E]+v|^Spj\JC*!R&0l3%Ek;6j3'/Yefe-E; luḓ9^/{_s?^Ҝr1Oq6)Qn fOq"ŴZv{q7a,xІ&QN*R^v!m.ƚ"֮2w߫Ǫv5 Q ke@3`)ڴRuA6!켆 UAң1s#IuŸ6Ѿ-X~XfD^\: RX&/:9pfOE7&Jf hv~{V-u!iVD?S~"hMCrوk4 26=hwV~ b&bK+ۤ952a<7NpvQk4;G#V@>$bt¿Wl&7\De"g0,{E2`à)f8ɲrԒZj[VVK$++LحڋAͩs95H}+MuW9 HpHsewbrn_+Gh LaaoIFC.oe)I0J&OF͞_Vv?|[(Ebh&YBEz(.Ynca:TF]G4q}2գw{{`jO)FPt5Ji:Gʚ`61Z!z3v=\~M?*}Yz\zϰxZQg(V͐vCe&Ǧ\q 蹲 l8^TG%2JRTAn>WTiQi1&לа$tlEXNy-bx! v rU՞.޸Bz"n[dJ:6S\0_Q|ڷϙUOVW^T ,%TYSIY !X*9LTxAb6]&:cCmkJ.,vYh4XY0&$R&خV:kRF[9OULU=Z4ceʬv_Q*8`ֳm.5qd٣< RN;4Cbs,}P9qw>ŠMũ1c1haWptIB^-u1snWi?2MBuvX)r/RGrECN] vvɴ֦AR _6 էŴh= Χ{\n.+~{x}]sr{{j`#^NBAO#TaD}:ӕL i.? N`?/ rrko]#>Bv > v޶Ɠ9~5¥1`u]( )鐊sZ(kO,㻑Bs>Aǻ a!_> G.dV2˞'su3it7VQIob=Q5ܗ4@7yn$ަ YȬ4tqf 4^!b$tJ/#͹uf, VXHtZQ]x.QT%{XZU?&+fybᙏU<إjvU^ԦW ;vq@*h[@Z `h/N'.H5UȹlrDRǧ ϒ;7Q\23j(+Q`9"| r0\ĕ;VPXV@>rc?X6hNj@NC@|qsde쬁Ŭ3Tf"G=d8K<0)\eAw]EXҒ$L2dˤd J"x]../=;{||G~+m|=EяP(9:Fu/xYEb`*7aqtS1u㋡ÅHъsm=eb t{Pi'='W<!u_BU.~R-PݡLϲ&s#_H2LbzbZ&҆ThcSgTf!n "91Zə!eNnzWLx!T4tg롘1|ӮbQQ'8B͔ʹjt$=y 7?JDWTq']J-"͢tlNHr57*#l+-|"uw"Xad  6ڞ8!ӽ4=]$O^~Κm"^hѹFӣsiD`Zš>:Ԋ)Vb? E/12YO i7ʡ?QOФ'eLNTbI;V\&x*]v*&A74g?ЫXZ7*#ϐdJ sl$34 u:=-Txtge x^&P >dmU#ҮӂUocR%1 p/aϺ?Bޱ8/he{v-?'aV8զvPCLi Oc،h1pUc Bأqa0=ݎCQ.r(±jLD4ik`+6t^4dĞ~vx),<5؜29sΥEЬ=BEŸ%f~k*axJZR 9,4v@%k:ODۆ!.+]Mڜ}K>װM)J]3( )9J=70+K+Ag(0[#Ʀ[\{5+Gp7M+~ 9C/};z=˨Teur֤JkuH~: ~ehHx`F۵T%-PŬ_{HBU[ev _q:.i-G}MZD3Su22VJ:!xA˃@\mo/ о]Cz:ȵur`[jxa[ڕdkmR͂XDs]ɿsHQ`n=}E _n \s^0t-zr An=,Q?LZO^mr%C\IE 7'Jī bEc;Y{dt;)B%W|Suˢ!J[q$HYЋW$/SčU ÓOIOxGI&)JCڷ~j+ߊ3; m#j߈Ek'9d1<k \TOMZP"R56f5CIzQڮX~뷂+nPBp 0' k+0f|>sSZ6`: J2(3O #kq;4ŽT&no'7ɬiU2uJA4Ϭd͕*Ղ!76U^eAN1PܵBSDvX(PIi R])x"2y4IE^{y1@d Xt`O߽o9y Wd@ WRwc阕TSͩfRSP"e#7Mـ fyɜY뜵w{sKaH:HW/a͚k|?q?|@ /d{#I8sCB Hwfz5mDIuѕ~RΗ&D 9bwRMWRp~xV܊W7> ^.N[ o7`̭pI*B,; ґzR % [rԪtt޳a,tC3mxī2*EaQ`XpGc &06#jEhVf8 ,T>j!k_VN5ѣѤc3Y\e}XluqQ H \l׋e`%/r0ֺ4-hR7JC_6鈙5 钱*ٸ,ؖM6xy{ty" H{#c?$sd͢Aϥ]0AU6Ni!J U-mkaQT 7!M/?1"ЇnZO6:JYbݿ_0pխ?dى7,7u1 Ws}Ok]<}?gXTBޚuo}l?eKvHb+m.y6|r-ļ~g7\ȥA&'RRXrn.[+_lәՅ$Zb$#btg;df?]Wrkߐ e_+cXMGD SpIQyksYT55bKYӴ'%FlO:|Y/}(?},y2Tm*Yth*Us[wss{{wr,ZI/^JeQƝb8w@.)zt5I]fD_!MOd#ے/:2Y:nDe#uK4[f[:pHxjS(T ܬNq'^WFp^)Z,%0OUnPvUN _A1͝P 1D`Rh;gciQATq9U^Bu;:{WKtQϥ׊vT{%l|3[l1#}g6ؿOR){ rЋmvE '^j~~_WIYaQK=9uI鿚c<ݫA*VCQ{;wqQU7fCDq>f݋lC%=We=V_Ґ_-C>o&rDqy;,MaG1"@Ma-.niᘭW'B9vaC 735Z$J2*Ԫj߲9 OeI Lg+@DZIdYfeaɳ`< `׌E4lIhFŸ9P#&ҸgIi+fuXRl Y<8,wR,1]zFnn5X f?|:€+5Vx,ߥYXfN_gPP¡4. "]CʆPEje,հѴ |^j3W+>lcIbdI,(q;$gɬ=yss3bz$jn^"yʳVzTF\ mmC%1v'@~~C7izF7*@ĐBnAbGY}"]n^eqGZUAh?oG¾U0e:!ܖp;$C.8.h=!:ypD}z~X f lFJL)vc=T[mK Z08hKJ"DUo~}z3:\eMN#2?^$8YWtK.pc.2_n.r3^ _C񕸟-9ـkg]3#vԗ/6}`mҹY @8Q <19Bh#\1>Sŝ)`%m?\//w>^aÇt~1J;ʧBB򼸷/Z"ᾐiNi>x&DB)_$ה?7 1[Qob"9DfT 'M^/ԝ8#UjO1kZ$'^eM{wH䏎K )  -1x ȳԂ3Lbn4p&)gwOY6'߬{ˎ]m)+ vjyuyn/Y"]'6`&lgaޟt_Du3-qM=$hzZ=: @|jfxx f ktn“D: 2)`ϝ0J]o_^%cA^v̬N =~?MgFi49#2<W n%LH0" *0:̈:zUx ;;sӡӹsKEݪگlχ[U~+1MShthFT#(JV _rby#RSw=VMO&Ql2Yo%\;`W gmNBG'PKYZ=_r̥wQ7bs*R05K>X6 ]ѣ5Mo.Kc,'.k&v!lzsvXlNm|ͯ#%S>O'sE^_d} F#4*ē*kFlSg0h0K`Uیԉ5q`t^ΖW|}1bZ۪*Za e:M2.#גh1oDoڵ bqްCvqPkHtqqPZћN4Hyؕo ݾ~p<:˔4ԹE%nb'?g<rikUbH^Mp@΅׃~.{qϫ;G@Kkzhտ)AтaɟTndݾ~x{]*).An' h/zDjZ+}E QvC+K=$n9&SdV;J蔄6t1u @e?BmTelܬSFh,~"յn;uŜߣ@/,I[Q[ņO*0t˷K5͈T 0XU #Uknb #c<$;\t+KK?-f61z ٍ AOK8s;䬟4~M2Y(7 lMJAEe8NTi(`H'ĺ8tE% u9 ?:os4+.asպS.ua!mRQyRŭ T;juodf M<ʡƹ51N]-z9 M+Ё-_ 0ܛ.IWE*g3VǬG4,u=<ց\SM_վ56 v4 d[ۙ4z&j?@O?W䍘y q!mx5r},SDyJFϗ58pO9-l7ItkoEXZâ8-' q@{uQ]zԡ0P ur&d6Q$l1b@Kb^TP=ZBGˡ؇O5O U3ق>KTϛ1G$uYU껳$L})q9W K;9ra''?deX\X*/>V6WEo0 xAB T)l@nP{KRP+me*9_A7Eo# 9Pb<)7yf+;IHr rQGNFU *Ƕk둢biRVv[}g'coFӾ23ƟjfMxՉ ".:+. XZ1kpЧ_a Kr(I;MF,ēy{6 mAᐸ;&c5jyCwo҆<^O>}S'xŬMĪLۢiۭs7,wH ~4LнFG3`Jla5"E~eMԡT7ƁjEWPUУm!HS4n{zuN~b#9KТ +&g 1V3>YP`hXI)vM 2oj"Mppa\Qgw(-d)e-}>C(n\w":6σ0f9q #lYS M#M<޵*uqN;#q"bp <ȍTSZ zP)έJ?%߲sGv@-'/<W{/(P2T<^cI\f^jU=zb[.Z g] 4 [BB\86âEɁ,qUe5PŐϊ2|3팍[}#q]>jN+[ "gS/BPަbqD̙Z$Mٌɮ &0v0bsoEr/k'}\(q%l5'c+RpY IvG!wo[Dl}^uT#CV+/n䪄2_Yv?/MXQnŭo(5p}!TwNr[G͓Z W(od#oO-0y E+^ m9a=_PojV"]:U<9 b5@h:x^~Ь-~!6.L12/MhS8Zo/4= OT`0!-:ބyjYvEF#9.0!Mʛ1jvNpѩ efџR3:Ks&T5)dmiG'A}![d׊s4-n&Aq7Vtg\BMqy8驰#qQ@,Hջa$Ij1|*EÂ곟}|0ݴWr͔Bh_ +ӈpáQ_!Z5C?ϬUݳgF^sg榸u3ӼZja15#Ly>kL|T犧9<+|ac?/S<_=,vrK;GF|%Fr2rVyHIW)(_=X^^[l[lZzk<7a%a)|Zg?t<ȅFK apǦohqvފnGvi>u9Y\ab^JxM&¢'1]0gL|ht$d\1o6^2T\uX#" ͈ӀrO#6;LYv :3@ƞ~ę^w&'|}4 UO<_킐>:pBrhUQ\+[ٯ)8 :;QfR6+9KKZ uT[ST5R<\xͩFoVIo+W&y ٥OSn1rHj I5}9Zޭ3[3oc^:W.RDLݗ-ƙu K"("Su\Y M7hx6v]+P4/7.TW2~\G̶'>j Xş\hb ޴?|Y9KX.ʏtwh:9DY+2JvLp"LNl'޾OZC0~HEr~^q#}|3oqp/nQ+k%g,s%mޓSkC`liO@⠇/9mX/??C*ɋvEnn*Iv .Q+B|S1+9[v:!g?⥔#2;'==nAW⍲tͦ zyI@: ù峼&!f79T"Zl8@g{rEQSi>nF#L@녓VG{x1LU}ETj–1/^܌[$H0氍idLiр=zhνc2 N}lpsf''O1f2y60jZHMEd]fDA1st{o eRnFOrNfkXO &טdSn 2@% j*ң >f(` ZU\EzV7HQSM^ڊKЎ?sf`V 6p\ǃZ9cuKcG_贎';ZEӋ5@{f#)aTq'ֱ Xo'_߫mm:O I7rm:2MlH-^P.xMw`"Շ˭d^Aw<CCqK`0'AV*v6z ] _u ]~E>(]/FwB A;D-DZ[>TTfΦwbr(n& MS0)bҗF{ -QVh7!A{t|eN t!x׋^zͪGqy~5q<(D"(Ub/{]E,X"B )02$LғI sŽҝ}~:BiT,iQp)v-za f^iGuF6U#z}bV٦C ?N&5Q> Cl^sh=ĨԊ>Gjt1,cVhKveD[GOٕv7Wi-vݣtUn[rs+ؤv8SCJ9_-U bfWϟϘ j[1<*,xWABu9r*NA ܱЎB \EVFy fXفT 5+\^V" Rrz 4ɜq+Z-|}9/6oaHDLFqnTs'e 1-'_R/7ȐDZMb]:8c(bS pgt5:*sV"[ƒ1v!H'2% +~'n1|?/>3et НZ&1%u/v;a3 e_J[rx^ R\w#3 :X$e;wzQm7b:!D* ~5ݧR((tR9RBq~{1ڏd>ίgc+~iP} }BxQWCv!{_K)BåR { X's'#CnN,d&ۉ' Wxf#l7:ˌ  Rj!J8G'J yﴧ/zi7)}DE ҃ԗv*YLtK"gw(b>^(2;ZΓ]qJx8e/fV&Dbc/-3tjk7]8XP7>*uC<],[uB)"a v#T.d|IDl<#)[a.X`Q~Z@֖rP\#<+܏&H\:=a/mw2 , ,z;K gL 9k/td29g or{O{PcnMuŜ;;T{It=G&Qӌ#M`$3 <h7oiqjq(zaA ghd)`T䵳S@^/`Sm$ՎXۊ 9:~Nq+(NʘZ5_Z8JٍV9z ቎DITdRTCj sKN 6tJe7#Fiܟ?+vVʘ2yxR¸GcR[]0G&A6|\4%$iT~ $!Q51Cٓ{4n $ͱW˻_ -N])\h'ʓz255=J%긓0}\2]踱abԭdm<^&* [73O8ajC6 ``\YjY2Iz{@k)>#E9oc?*!0q+hr|'f#Tt^9] m2YH4x^%}-*tFߗUQWX QNIjq;,h,pF{EV ӧt6<3sd_0 mT0)Iړ4r+Cᇘqڎ=E/` oӥ4,x309l JۣQOJ~-_~7G)K4FEbu%a^KR>ZH}'|=•I$v/_61;ܙc6,KʖOLV~|.@O5>M;B%wWͯ{v, _s88 r_s 6s||kHgWW7y{A]SazeNld* "v\JxeB`hE5%y8%:aIa"inH~/sřY؏}=+}O$2.H``jI>Zƕ[I8$#=:u;޴0%Ysٍ@!:LɿG *6l]rtU%tAmϏ$)/8yλacmNh9 'k@6jcnVډ+mAMbUL0jrٜFsvƯLqjA}zJmi-LH;ߠ׉z=xc@"ieR?/.52l-gl jA7/mdU gu oYnQ:鴒V UTge 8rfd9:01S M5'9qyM\G$Stkx9S\-b(!5A}JY! V7f.'ysҧDB3}Nr|Izf!U c 뭴Y 8?<×D頎#RU2D tB餒ܔz 7 @ gGg}/{y>Ow)1.cܹ@ĄL90J&1LxPFo:R5L҆JTN_wIÒ_6 _OӹB ~5($IjD !a:SIT %MJ>&XdԉhZ\6q`ax EHNmFPѢZ\q D]}5 ,OA实^57Dd:A5Y2: ҊfCR&f)kTr"q(sZ m uŶ?}N:w| i$iD-f ]J볐.|g*; :ZS˜հ!u_f:$N/f)_B[v5fؓ<ާ5. < ϳmx<èPoM *4aWm Rm+Zi9ZlAJkb1-p\{0[u絭6\{ $!d1ƏhܰOModKQ)\% p#TD^ `4h+irJ sh֣v>YZDv39 ftդ6ZۏA.oȒFp~aUfӄ^y5r ?˨)JB50G̞^,Tfds~E/"捧*/"HShPQE m4e')_}*O?R;gP,Hd'WCa'X IIb8h8Z 6ҙjt+f= H/kDP F'*Kqhx)[-y- V)T:U|LzS>34R>30QØ`ed\'F?Vp^]NXoxõv&Cip'i47 "o0mȊ :aWOYSCf^A¸+J})|ڋ ;FDiKҺ\F%h*2j}\ɷF ҇>V3N ,:furk?3ƁemLj˪u 5PyC/4^Ss] Y(ٚF EѢZ̾H8YFYDPZEѡ[v\ZEe,d_*UI*TRIe Id$ s̜3Ly|w僒wհfEl<  So8Pi]e]N,7ST`j]'(n`b&'jRywpb?1VJD RII.5WX:Ňl -}RsTYs_Z^%`#=&i ;kDBvg-oo~v,H>Y(or Ed:׹@(6/bOtиC~ҟt&5Qu50goV3f8wݩr^"oH;Ҁ1"` [X/ԞekDKIqBM|lzD tkNC2PçD5jy;.\Qy-%e`Et vk6R8L01|=(~1.Qm~._=0f{[MX9|×3b)c>yңqXk`nRڴbUT֩1ز8ɩzTgޯ~ LRc)z2}~y+Y>،l$6v,!WxΖn&[L6ް@!:s3Lqw-wxsV>Oߧ7?ne(b]n֮|fj۸ӂV3@YP,MfuɊzdIebm.Hs>cѣL1JlTzH:qGŔDypYht_\*7Wc^|ٹJT@Z+n-t5te joY WTGJsJ?y~O$gh}tc{_lJyef,7$=!]ɡkhSzevE =_r({0r i^W%*)O;s.нS<+ik 9YQAKi 81~pW̋*1PrxYfp_X?:ԪAY1:o%ՂP]iB`2"YTUDD3c /w5:`>4?@rw&g)1]Rǣ h_>VrܷJ֛yOGvRJdW:{P. d G[\~~..U&5JѪ z ~侙s^剸v7Y/ߠq$ςV3עǪWq'HlV,lT8V3k®`2s1dz(v#X B1K)yk! (Re+S (Wl$ԁ\aU^8>F |Y.?rNr_`, xfEei9#3DZ=sQh@e $R,dI4 [qMs=$CHrg1οۤ6A>?aQl_=oVV&VwMFV7⾙Bo7O KJDk5{1|Hfƶ+Y?ț`Og{52[OgZQCLewG+r\?ik]Y* ၩ;?l<@&>R~yª[coMYϖpgfY~8˫Q$8p'O%n7 [=Gӵ.]j[s y%Q#W=u!#d݇ߗr̸'3>tdVPk6u0aMɷ=QA MVft-EN62*=]vrvG,94z'8 &ynl.k`C'W;[aM8ìX֞tw6R]aL-(muExZnX!UfBj:C*{:T>g淋@ Lcvs 鸟"SyO^;ұv8z͆ ˡ]7彈]ZU-v|i;"aݿLj4YFҶG ;,=*=t谜ڮV2{'7RU(2h&.;9&?etX'鍰wM M:Y|.=t{}8?Ff=E?ˢ s/`mja2\%5 u(+~n41O|D7_ ,jKR=ys`j#u*]wȲmʛqIDswN{>TI3"Dl 1"  r,3,6gR~"9N{LTiT-vX? -$s0Ws$My5=jB~ Q:+b9M;Gwrs^|Qnx8Gxڕ3k8K i X+]&$|lpk#i[b$$.Y& 4jVڡeN^it!HKї/JBd#:69EoH1jJt=vk ?,e;!A{Ty4Wt^Ta,x1Q0G Zug=ӑ~zX5'X pW+|.aܛ_{QC!L pћ~y4p>LfRêJ=Ncq8>\,oʁr O|#vZ-h>kBEPk"U.]mB *T+a?{@9:* &Q8\D˦rEy.;áMXalYfJ^w6p(LSjU :1nŅ #yKx~"DI*;uIXYulߍY6~3RDGcvঃ\?4kQ,й镲t rW"mWTtN'xM,@Mr/Az&6L{uEr}'[?% ZE<*:˲ \|x{?d GLP>QM?x̗ҕwTHϫglPۨE&Vymz. Uvc ' i@Zeu Oоln罘;ο\dŊ>/NӧOӔw̦Pr"ؠT\ $RZ6Y5j?˩*9R$_|ӿI}fvVSy[9ˈ:ꀂ.ʨ̢8X"jrwwҹt:ENr `8٭rjwޯ/yI"Ȋ^xJ!0?;bbx>ݩ~%U\e^r-)3\M[k9 ,M)j2 WmdE+dTVTzU%v)]*I_}1T!0+kPktEH006qg7 q//olWVpҺ~[sgq0b"8Zn}Z‡i8X}YmJE6dR\(@,M/(zӪ/]2o=yM=)IR`U2x;aaɭC\Sf+oAURIaaINފSrl2K^z:Mn}-$6 ۱L>^[cGna1O9Q޺l1) G^tv")en,xgMkIY(Az+ IhDDnZzpmNR҆>cggHi[͐m6F- nD[z %֑e(CF¹K jk"V5K,j4c JMG!6!ePU̚t4x_qHupƚ+g] 0^ꭄ5Pbyԕnpϣ2߰!.nEgR}^hq#wX }N\Ln+)$=Oy=@*;fjE$J׻s84͇3BF/`\ ɔ2Xī߀p(ԊҔ\PzL D;ܸQg:MsV)\Q gfT`ϮYwj`'Mq~r6wN"^ .k(Km.[|v Tbk<'zjjp9cC%={]d~.`wkvŢ{'zFh׼;q]~^I~Dxwid@ͥxx3$+@F [[+ qf mV|{6PˎG&|Yvv ٳZs?[tRELXD>p{^wbJlc_Y an3'|ZxJc^Rqb?\lDV)˙ԫv}p*=c7١̶)XM9wں 9d,3u8 1AM&D|]oj˫ N#ܙY `JE}4f3D%ź툡 VP+5H%تFNC@ WQE""BYޗe\a~tkW)G38UBc2:LQPjA,E@C _xh<"$+tNQBpSvMɔRMSX|bLE< "M|FyV/V!C!_dC/|o`)C m w&3$DžX ד랏&̫rk#/m/jT#)rLKobENGT).=@pfQUVåhs&}/wJc’3 T*X*A&Mr9>%Jqv"7t³t"]2q*a^~FN933l:Y`p V]!UNHtjfWbX(z{MR!AffCmt#drx웓7k\6-Za3wS&5Mr4:ͧ넬2ձ xvT6`ߌ|ЯZurw! >Xny4_ .q֫WifZާVkݟZL؏v oP<Dv+7e ij!|F26R*d@ o%Fɧ@tQ aBd˦鼁Zv@WZH2tZ98*&`ޝGvxG?J 0KX3 !E3(@˺#eN㧣@(~x' \YBق:p4jTNݘh MF`uf+`:իz*v/4&"GApdT\fk.HN|kT[$Em~2KRiwoV)+ԝJyoy%N e V, -RqޏP/eDђEYUd[Vmm{D7Zd$@NRTeJ/}%d# UVaTfΙ3g|{s{(#V{:"c'h-':[֭~`oŞ'M.n讯:ڠ(`tx@: )f%WùrLbY?07Y-W`Mh[huWLWM  |ݷ[8!8j,bc7, c)^˩29 Fzr ̫l ?l[3j.ZSD.Ƃ5*ۀ[GM@*(D4^ 4P{,ia \ù2#2Wæ;y#o]c,蒔CTn? RIA!LGB) ]]jsSohTWrk8p]R,je쏫¢ZʼhIӰym`"b =EY ~ˮ>t(>#Gßu _ͯeٽL_G! ΁#basruu# %2Dڽ\?utjiv2&&'Y1n[Mgۓ^$3 G/L$>8^.D=L}qUZÈ[\8S@OpwGhh83!: aU^5 8%a0]m1K|gi8`S.nˁId5 &Ѡh\M-30'VFd]xT:*C!cNi9T\I')b/9~N]$$cVޒzMƞN/[SLyY-_ Q^Ed+KdSQ\]M$X, "(B2b=G\@%,H*dOTRI%%Ke!Hˢ=sN̏r>bg j@G;|NW6!|ry"le腺WU ՜W`WLgҵFur2\x_:1;RKB#P6O 8{ւ1P0;~/,Dotro#ni=X~8e>n|7XHM\|њ B+]vq9xn{CÿYaXjYʑ"WRT2S{c qC[3V΀*c-h ?(8 9k1pаՁ:t 0dsu;_xQ^# W]WDȜw Sk ")ULefq% jyEtqإ$^'i[mœ@[CZ$:ZLچy{_ Z@swx)6IZema禑ajj'DSAwNвfK/VI`'dXq7Dnx.{wOH&KDS2ḢF:.،e[ٷ"ѸT05c[2l1`D4$-3BEd#QfpiNqɪuH%.wy")lg,mD3؇XP=*Xrd*V6t,A9|Sbl2Ll)d o}pƧm|]S ~Im S6 TM|M3!\POO;bPJE,~0 | yv|p@jyMV5_Zgh2fyez!\C]N.Y6-e<)`@X2Nލ ?˴4 %0₠ bgܰQAL! dOeT*TYW*34g~Tzps_$Sg$Kd U=%t+nnTXҾ=Nz`ےu"/Z(t~3&v^V ^6Ri?"(GswR`Ŝ$ޡ:lsӸ>M7^#BV"&O R ȋ{+޼Yq䷛@ϫ v+j kF.jf ܂m%\nzruk=^-־Ovm>|['V3EgNAOXf}K}wLoxLZ׾6ӥRƝ Ç0qᘥ𚀒w}~L8Rmsn @hV k7j x #{>hr[WM2(RA9Y4έ{:h3+g8I`%wU`r_sWl* +-$j/U9B J%L^jEcj%GPP#m LB&`B^<=:>@fEhVȥD7t}0%AF¶0rqFο#PhhTfN3>e5"8[;*_?FPSii Й0pI:wvhJ .Cǧ+̙CXoï;msAn:/jo" =Hg8z`~}_yV; V%m^ɔL`%NX0<_m;!(s߰)g 2Z ` Ajf'_!yT|C)}Uzv/IyclAq(&ݣ[-jEf0DGO'⧤li1}t#0Fbȭ\JSnX!Q5`2[Ԫ·-?92Ǚ:D_C_T,ɡc$eT_ |Cv e ޹>+Z%4 C72݈}A/4{ǘbؕ34ŦqUJ^/3ГR&IAayN%rR6ʅMׁsWܨAm1d՟r~ModsX!-}I/ 聑im+=o|ZUmtq G An5-fz8iS^>ְ2Qi F3N3Gz+רFmE$fp3̡8R.6юo Ҟ%K@A T1 6N9u$r#![dh}96;x%Nm<1)<] 8?2fCrh-xxmv.(p;#Ӥ;d9/EsAfOhӟJ>fJ@F8&ӶʙhLD}50 8!{]nƥI27ӳ4f%{qP=3p?{{rymvZ<Ĥ>IwTΨUw[i#o<>xn:UD`|h: B_{0 ;d~-n~bbSz Gݢ`U|% ]Ф抛 u:3Bp&gkf>aPm&jSJW[%` ꩗ |R{Bʮ42XN0E[Ś& X+n"t2COmu)tWBUfil aO@/n;&~U/+z|m9g,0҆U_hka9J*{B!dLW1SEblOSS98c/ݰk8x빘=4 IiZl?[pUb @+FT׊rχJ.C{yeMQlrqwbz B}(d4<Q}l@kv$xtZȟ}?++@X[XVG^ynq"<Ƌh/LNW>bH5f|K(;DJQfU)_`UQ5Ȱ6`nק#YѤd.A63;:]9Ԭ0v4Fkkx=cpnAQcEdt?GqPbpqi-83캩j\}AyqЧn%Ԏf`!#)Rz_'сE3fke̹sNç7jEɸ%R JST>7( PjU,yj \Hrqa [٠g7bz?( a|1wX{{im3Bƽ}zs\KSF}9:k*~EĂ# mawt*5HH#夜䜓Fzogl.<'>Jg?rFtK)Q!RlZhmoiATU]<\F@֙ arkN)u3XAo~kyyk=OYESB)^NlsۑN,7rKլ@Wg =(1os^R9k};CqO)PIo)9)+JByN}ՉĶ Ev^0%|Y3` g1]2vإ̰Ktb qdQqUmUpT4U XS!It TƦDX堧̐bſ8_z"AԠUBYGټS^ G3T?K?lT# /jkR [ۯĆ^pr?!bv)WbeÐR(z^ZVEW*VL8zdJm0zMWqWngKtaozȸ&ѢYB1rݭ\ Tǜc,^e X(h7ԗU,ɵ\*cƑ+;$fJNa,vĬIo7Hu76r^ͯXFoBy)5_Wv EPr&l>LX 5⒖BsC({VIZ0%@!5Zy'r?Tvk7)մGR5/LQG! 1%J/[o.n*/_ S5<bc7L4PĒԉnA y1jFޮdq4ʡB{ "IVqL:m0`i:숩5˪zkˡx) |a~$)^k0%m ß1QƄ ݞ{:XNehIz" uoל+Jkzyb#=VGRL~[L(yRCacI ?U1J*;vAPO~FNsVK}59)Bۗq8~M85[_wKSl"SϋyE-iΦƌ'- ?I|"(H`T_'UN,6tcU;ul`(u3t"-MNQ֪Yz7_i5c hN"1^ChI xUM ֊#)rL֊Fk,@u"5o?؈\8u"qIc7_GHٽOwwMg)Tte)6~Vo+G<歐߉/9LN*sPy˩ܿv_X.aI{ (9I5 )` }PHYźٙ骑G{_?:gnjy'^WJ}Ty+i=V 4}SķvDn)rJ60j+8'h gS?Oq}~5-PtDTı(Ƞ<]6tTtp%PB )7zsoM{zw>go+ͬ{YUˆ6Kl,_Ζ +>fs;^6zϮ-',oH>3s-.DrU<%nIa, 뽷#Pp+n w.{9Hrt IAfMP¤_ť\Y$v}*1Ge> T^HY`is)ls)LW]XnGDF=mRC":6rLAS_NL|ˮ:V?_\X/shޑ)g.P&o]!5qj,Lcz9]bhN&dث!#z?ZIy_ǙһԈȪcZlWqMin;|O#[kOu" 70V#[Ep]/2lzIb98z~B%$1>Ωz?y@ ,#)V39=OSKdNfS*4u| wJJ)mN5U-b14n_׾K;?WwɽpQXrWѿUYxE@G >/3m49DU䎃FkF*N"~|U`>%߅fܻf$56 Hj̫\4\ H*JU4qȬs zk_5N1-lfD\Yf獞)]uGw-^ l~(ރ{Y0%j"aYj @CWUSiQ6"Z[Ƌ`W Þ&mws"9Ou*obГn_¬ƬO1*r T d)(QsmN2b`ZDk*%@ze;0y}1VeH3V|ތQs7u̧3эlvv&Lao#UHc7F Y}P|A+3M@Ҫ) O$Uz_w{*{ttn~$T@.yh^kA\AJ|fe+]_lX& [BNYcTi;KE:4ŖvHR.>Uy\4T Iw_ʕ^~Z#zPZfcNfp;u3/m&F2XOb242Z\*!֛I}3 ϙV߁FߘpQ#*x!yA09!aBECHh.|ͤ[^;{fM2]:27jie K|%tF!/Q^JLʘ)~HZ/C@#(5ȡj&֒"Ϻ@tZ]S}ŕ}χ(mlo c/I bg{+"V}@j"O8A j)=)>F'ʦŜ1)SZJtBi7-JKsƛ2%^ҦGPUH](5-g\;%ZCYK n/ "M k0sgV1vHm:Z?418odV|YV!􋼸M~"J%fk~J_ MPנd!N1FqqgpB[6, +iN7+H(]% $4e\6FcNJrV A:WŭodtCO ģ Mk8I[ +s=S,.mҞv*9_:L/-&?/d?ֿfC$ *P#t>Kۆ9|r9{+֏;?k;ɥNrys?[\akcv5y6F2͝d6)6,0F=DYĒzaS ⶏʭA< Aujf_G.rZ\sf惺ċi 6[e1&]us{#Ow,7yUֻ>v%{"ӭ$zD#/̨,r뭰>4?eFRkL\'.՘dNtNz:nh@) ؋}=K>3T?އp~[XXUJ|5[V1u$v3 u]Y~p @, .R}Y`Z#69o.{_7K-c?"m]#Pvݍ#C:^2ۉS(99ìj\њT|Ů2w6dVRgkidwXSm챫TvD-\omݘdYW6!΍hJz[d.\s%jYL Zo\6g{_;;d݀ ;oz,Hb|.c6bㄺ-7.4xՆ8.c.(NEv9CS#(:dWHK& OMb茼Y@eV|?Xi\iˡ(a8ԥc2Oۖ&M43EP>7ւcsw33 sv v@M4 E(`џ0Űv@glEq#o ]]Ϭ WzZ/Bj!ewx6 9;% P9QҜw_& yda2? R2ug}P7\80OR~\!bL;98 ܹz*v x}!y es+ē ~@7e 6X{ s"&^gh[_Wb:.hL)Ƿvqa6>/g'r1/F>-J(-;8b:-%J DsT8 +[PU$!0x8DHF~YvVP~~WNBģ{M *0pژǘ |tN?' {A:ErG8e܁BxkD8t]5(,5)}[}6@, l%܉:J9'?KG͝Fx3X풙;.&VW9Kʛiz@_ɂZ͛/ ɭ=3oGJ]ҹd^Pʯ~)lw^,d,[WXn i/ Tbor| {ޥ<؛tek‚Xg8kQp%,6 jOzow`MhP oO:-|B|q $e QSEX-r T4zT֮S\_MkQB"kAwmյ...b -d2d&̤CD(QP@xs}ѝy{ag *x R׽BB53͐/I6(@) yvJsƗTio-T,Vsr č1Lhj.v"Æ!tߣ_qb y.)@VsE :0#;oz~l5cÑ;Y:MO2#m5S ꤞ>|L0Bx&C:V89ʥw9;o͜va].%-UZD b{^4xE+@O$lY  xN:NJ{ t&E'wln_Z߽t61r7)j0Fj6!9֥@hF~/+!>)c[@&7˜RrT-i >**O2^II= gri,jVKՌ&lyNZ>Ӊs ]ܒ~H9Z$k)Ծ&Kwr(Z8JߋEZջ_ywHHܻGVm|l'_\.ڢEQz1ͤ| cYlb Ír0Yo-"^C5S|&i bǟ找\s'U*k_3Ź;BO%T1{잒ˣdR d%K˿ 11LU v9 2 xྀ ^  ],ܬ˩zk64ppهE9G"@zF@:• @g덛2d-^PͯǑk#ޓEf87eǔ{V~ p"K؊:Zk3)@x+@CZ9%VpZ2;&yocxBBḟCH鏥fAh-ILH9/9M@(B$ݍ"l\Dž6PʗPm_}38 [l*|Xk;T\=, /XW U6ƘaSZbHѳ.vy1yvPbS:Gw'm|Ji" sdNj,}+kMIiC]Ywb:N9|ʵIGz \Np5}$&mW 6[5|!+b>#|)%n߷)5jUw1F^^>79)s.΂7bZ" elڷd6 f.~#S-WD%\K.VjynLxp@Ci1$vwBl`+MTXM LaOdJ@7uFh:d(tyqNΟ'sB(%?|UV/~̖>|Z(>{s+~$ܮ_s`sw8h㍒lG|TGo5`g27?۹Mv}#uNq?ۅnn}s;)׶ ]ooVUOY=Y^֛JI3*Nd,s߽󠡛"(Wps: x>HtLJg+1Sq̢p] ~LYf8guC0Hh*sPPNxCv6nΎԀGNcOIJ(7U'0>x(Kf R&L1DbTSsV/YwY1qV#PA]ZIB7PmNw#Hxڃnũ[&r'4tsYއX, 'n( Ѡ:'4mfȴ(U' 1j 8w8|R ws0ˈp&p=x<>gW01 "V Yigaag+簼ǚq0&07$k .\E 8!ާ+?)ŐE TEsUA>$l~phA3*!{~k;uT†R#WgdpJl<)lM:Ąf`9ϠG)٪ T;2oq{]30fZtc 9Z-^>.BUbZ]ZM*- h>Յ,N#NٖbAd!ArZ_pZDg*){ 7el=,ˮߌKIiD{`X˲\+K-J%l9+#_ٛaw!s/WT YgNF]Ry|lXWknfT<T~ MV(&CVm%e~DS7rAi K:6qXL8ISFJ,*V1Z8נGujМD7Z`f6kt]( PME4e4K_~Ń[n8ouj6R:A|aX;C5 g2҉5\v}ZJ;j ~]mmxnc`YD1BW|:Lo#PDT2 ۹an07Ax|QjփK;h(,)W89F`:&# (׶X`|LFeQ݋b[yJ RQ2壓!v/Exж4Yk,Z,t+gx3?L#I}ZhBV'ܝϚ,sdyxey ]z2{et.Nuqctb5aţҶ3-ޮW[W3tcs9[>jf9+lÉR [VY۪/(VP1Gd:]Vy56΢uRÃGـwJV?'b<< ?.i3=+ if9[CoOVH̲:@[z }G,^ᡝh1_yX) N7rόN~F*H駐=DԚb3lw'p_Svn6u+|q7Eg&iw)|.F2=ť]Oڕ%IQJ9Sz2]ZO"1'5cl j{ ].T]i5;3h֠%?D_.2 n.|pRKqxhp` kN_aU.kf yolm=82WƼWaN`) ^2N%)CV7j=5M7('UuhVd zoD&ULH{ҩYݳ;Oep5O}V/65DV0W6RiׄHFlD;}'3c$SrܭQ[Jd?6v? BȚo)ZL^*=CiAɛ>IK]O8(*bh,W|IM L$.x/HbHOk~>+Gq}5`qP@plq- "!}UJRT6Tv@4""=g濙t=h*xz/Lh/s$q~[ŗ,DP'"w:EqJ 5<7yEr$G r"E:f|o94fxYY |޷["/g'tZfx0@dR rn3P;?)Ls*!" S]ͦia>vNڵEle"҂#Ka=~YPhe<Ya!񵇗e"xٟ[pvuܴsfLwPG֛:D"ֶm9Ro[ ARQUaK(N,BN#SAN=z W/$WăhiqqڧFo$k(?G|סz YYis`Tv{W#iowlře"H[  ݨf Z,bӱ7Fiڗ$7p/*?d+nMl'gbF#ڇ2_rGzJlHm\:Cgb`jN(P" X=e6uQ;o6t@I<KT JA5R^*L@{>[i-zH(;MկZT nB_ 8ygLZ+~s#n^~,(ZbQv,R@f$r|  bG/m'?@(O{d *)sOJg*Xhn5R0j&IY%.ŌV2)+an^ހ-FW2FRDI ?45-N;8n8+\mEDmn=jŴ[{ r',װ~۬U)&:3rZ w2%r21\ [gVgO Gcӕ*6OIqf^dX.} *XϹ5 іRf>)g{[`zh15b:B6ɨ B(Pϳ[?b!ʬ`Fn9gYO^Wۤ\nFv 8rK H7#4 >&\x.I-tl5Yl˯^/VߦKT>t7 ;3{=ڧtſW-eD :͐_dL63\a] 001Yy{x 9U!dLTcRT-Cx1[ SUNgM_؉Nrmr`+&GJ_wSOۙ`++?/.H7$e9jLllwwr5 YLmJ.t=ůD5nF.z'\C_؄ g{iݗ>_{7BIs^ޙ9SmeTj#3zaAw*-kOO=aݱi].yѬ4w۵n*gY=h2T{@>X9)*+z Sr^-l2gƪ9fkLE2)dqk(hp:?"ח,rجP~\lx6A1<Ȯ}*-S>KwhAN|15KZoK 1;>GѾ%}G{7 = ?KcagKfJ0 mM]T0i7ZΤ#] v~6 j/d.7Ue9 +:P,CN1\_MdY wQ@L#=gQnGTeJR UٷJB B¾ >=~s̟3>νwVM=ܰnk^Gs*~#nܚ;Ck™E Bt1oYz~OW]gP*!2hvt|",̮/ZxtY3W &܂눿4vӌ@iW*tV%qEԽKXPk:g>|5q.3Ӿ'@:Bw켁iOd4]n O{⓵߁[0~%f[9CQ)/!JsKV,coelklsah7p:6ijsf;UAd'CmbjvhWy=k\my;a7MN p*ĮlSfnRQ~ kt{1[$+SPX? WF9:PLWƦ!֤+)NhBVd[.cBɩ 23'<%nYt@Q~n9FB{Y2!\2 *g74Fm[Pvkau2k?@pڲ.%oaPxpBE*γy.x4QKtЬ07Ϗ˦ ]z.hZK-Š.fQ1pnxPL+]S퇹Ts"#a5EWxϦ˅#"SuZ<9S肤G!ǴrY>e]+Aɸm2a;NG+N:?vv#~x5uJcC'FfdLAd/|+|7x*{<\Jnh⊊L3»?L29m@D ˲!Q֏;nX)oפ@LYKqYԈdx0 r3^4)]Zp*Bfl=@X*fʴEUǬqz{Fy/`!\ʸ񿞭X)}&cO OͪZ|V{,MP[sDN(LZ.R$?0oc٠*(a:@*y EXhTO8ԛfG'mx朌@!UP`Q~rA'RshFl MmmGr+?rDXϩ;!7ym[C mZ׿.7&'1L5 ַ\[=_t}xkd>1^ kTJf4R) }a8бWxT7R1uMr*\B5iA9lvhmj.܂ƣ)qoWnsX{c}ǫ^gpӷ5 mB߸ρ⍕`/LGC\Ge =.irI{z_LΈbkdl٬c?G@)c4z0澈eu1fgYaV+W "]pO,B٬5Lg}!!j}|sx{O6P'O^Y<;>S%Tzukt::0T9Ms+/8$0i/ kmVgd*m RK|b9ju%a3KyN牍l~i{-ߎ"%PBQ|Cʜu3vSi'#Eh>(6tDnkvu йu8p p'{3))EYga 17笇԰v1"Έ#2ɆKؔHd[|Cu;i3]L5O+r,#_Z\|-)˅KscqI[ׇ?J̫ppFY`lߧ .9$u֎ Wc?9%~J ],jH#{\'V4٥p|%-yvg]6 7 Y\9Ѷ#j 4ͩa6tK2 50 I)Ah3%,,m6{f!B*=m%?oPP g0/jh.#&2 XSʬA:%Q$nL8|4qAV&jFXmU,iC1d[k˞~6o <9:}}ޛet AVƘJ4uМ\8[D0CffD}Rp^4K?qx1Jf}Gtv5"AN8`ꤳFkCF!RaDl;,S$eJ1\e]M$XdMdQmieѦvF[[Y%$HRIeT*dT@%  Ӎnyz9߽[ ffC6k!E՜$PSBb;0L2䝜"5ՅگZ 4x+AIG bIvݫǻS` :%4H$8xgwQ[v(t-Sd &-cY٫8/cŬdd^:y; Q7KK1sx"[۰|-\W}ps0ͩr]Rx#gdףNhFPHW; 1N梫M`@zғ )P&Y~L2hl!=ЭïX- m0+4M0N ")Up t:iaZr_Qn/z hBGQL!UI)AbTx,h셶rg|7݀gq[{}N^/a)|"jQ/c_:"eQmGrɴ alaR(N8sV65 _+ f;xx*G3Iq?"9 0هDۢb?FÅz Uk-6!]X`9zcN [Y5?yJҶKgkJ،_A\mVϷ/hniFh&704k~4z (]\[EcIU$s{f8+rK ln"p~k, I*I1 n&z E4f^/tFڍ ߬=uX6N`ȃh1zD3 EJ^P wOYscʗ9#?H]ћ@eae S2o>#jlƓ;o\{0y mO 7B&Jl>Iiڬ]%]2ڌtB:~}Kg>mWRFAmHX0Z?)fKJ q˩u]_nGsduc͟{; mͥos'e/Azn"w'2fr٭wkYqY@hJV dPYy#^J;chhi+V.Sd0e1}ҺDL&|P\u *Xe@첫َEzlﺨMA]Y:{J T ~&=tO,UKR\jjHN i4V%TQFh!2 iM`Ba T P]n8wv3cO6-2&l| J|/?2GѵO©wat#_:GP~өҴn $ <\H}U6Tu6^ȲǮ$nE.>~gh [|dy<(Է#\Sz|oٵ;7Yײ/ʞ6&l?z:Uq}kU˾s;IdѼ/F[@l<6k_X9acFA]C\=6iу.r qte̮' + } c0\Xqoc#܊V./-qُaԪb(iP_lK+qj5״b*ZD׀drJn*$W¨"39v+^wdLrq^=*O[m6L9)o<0CЀ I4AKn>/xɖbF'׼5g+۝y3~8]η< !J_2a>Gq4g-jLP"!5R-#iS%{Y=P[rBR/4`Mg U26X`i+d!G%u.(t.]OWPCf9pdu""%t {ŞgԋHx`'E42CC0ꨁ"R:7  Ҙ]俈B[%PV>| vU"l`iزC:TQF=_A0 UW j[ b\hO~ Yirl O0''&Ok&G*-2)*SuK> {F<"4(Z?9HL mL55qV.$g|fys&&_}&/etb{9ߞOK7Ծ#ڸ/Jc}8.eVR52<}(<= Tw^Pk^~ twwC=N:Za_7ON$d[EB#o D'wxlG@y ^V~J&÷i#h-)b9xE!"_[qOr(匳f q)|\ZZe}J_)g'[VLٍm$ l?on++6ݞmog>[kBr,|׍0v!Idb0w`>̮|~?_u;<6\-W IsjrWJdS/'ӽj!s]m:z"&"yOpʃ7`lNŖ*Y2^T35qL5iX&j?'zY"Ya9TL-b;hM;|it7.EJxbvݫ3uȵYom8& P4F!Abl3H-6< GQYO`@u0dAtR܈Nb:@8#t@6)P8SI3t NhٺÆ)i؜/|ҡҽ sثnz% <`ʚ\YLT\YSF=lݑ-{b/p+&g9n\- p;$okAM {T#:cUjX=GU\Ikl3>ZUQVm2H';bMrNXS^+@B6JxFhLyPN S3$ȫuJ7C!yEP Nt7hǡ_>M^@쩗"?JM8Uor 8j ݅h&֨b36x-kP.mm;y_cyxR[_IRXX eDV =)ӧ&<-9tTb-G)uFDT%@Br$՝stw$$$ IC(̸nN틭ڪK6~^ܻB)Y!5ί2s?ԇrȫwS7e7aֶrc%\4Le]2ge'@Iʀi >ƭUq-.v*ݞΘĎSOH&ǢiL1W0 Ϛ_ӋM݌qJpW0 6ΎQtbU!7*Y&ޘ P\)!Grc$&uYr7 odtKO h)7㕈\uOk=WPPj']2 Bhm5ݝV[a QkxYb*{'{\!!3+YqPbW{<"Qg vX!@U?|VCr*tQ(x>> wԇ[M Ӂ9d%V 353U j^5ow|q˖2ld}/*Rrm6j7ϥ/_x(pw1R>}XLer64tgl9>=~,#.=t?` s7L!6])[du6頸j+~*lCn˛>l0^^˟vRo2k|YnjT|V-s" N' b[AWdXwλrkP.ױn[ ."Sxy Pc=).3/^glr7([ ;/B _jDn W+ ޑy4rGJȊ ړj)Bed[eF 9΃TiU6Tx-PE$9CVQԗMo3EXnna*9NS8fn#+@ 9Qۻqc^!}1SbkRm)mh[4z>t֭1D;q)e*So̺x#j L{tasAdF.x+~Ogl_|,KW}Pr1]cݨP29kpyc2#dPĝ`TkS?z#e`m%u^)[r,)$. ]4[DX_x:'@*fj@HRkeSG9ICfX# )#(GۥLimyF&v͋+. /c߲!!GZL씜hN!,@'tASmt@e9 7ʹ|vlScFߢ~mF.\wiCK5AA⃰5v+ΊR<7^}[ѵDl.&)ig4k ԉ - U͊pyӇJu4'EG麼^{15"*+z jz@os=N8BJɵw{Ċm~ !a&T MҤ` d`{Iv2_1kD@wOžK?& D<ቓU"'S\MM$hn%X(άZ(: p whrw;w !! o-Cq\w\fkk,ٞo_o<||/n,34z(iWm>Σjp1zRԱG&IIV5w L MBғ@v!`,44֫E̓[5"-aV%tQjB@)L5Āꙃ3}cz1ܻ-J)ͷoݽPHW\ :)%ow1^:2` w QMT]D{HEXJH50XJwh-q4t]ղ_`ló)mjb/ǩ` HIY=8&撹\2hS9̬"T 7)Ӝ~e0L~?mq\;*_sͅ8X0.M;3G[C)x2w.?5o8jߐWKލ36>q~mVΝNټ? ֿ Ǧ+@?zj:mN}!C;] m'HzΕ7bkG_*3 FxI mjn܅~>(mIwLԒ=x έQIc̦sw;£%HP+U}2Z ]Ujcl8R$r UG79&C2=i{B30[Tϵ]s)`5m#V˽L03!YI ͟7`n\2'R*KW sdzե>L;SŕϫLN9nt>7CẎ1 #nNHϽ )[>neQv7٭ORk-% .>Ub?{6񗑭fh}k5MW߆"hJ k6=)ol"py9(/uOܔwK9bZK!7wLɩE]f"_Y*_Lb [v)E IM춉geJ}D>|^yZ(7,*[s/jMHq֩2^ۈ׋\Y$*е+V`+Nv\w܏F{(5&ӈ-sTF]"I.Gm ʛqnRnQ!v+j&r,_p3 bZIZ3:K=l*p ([e]R %_1dJxaУ&.ZɡLHc(nъ &Lr91YP;%GTsQ+["}Dφ*dZ `#*,)٢mq$K3sL8B)E߶ClY1'؏vC "t\tb;]^fk#olI@cZ,dV.H9)(lE@]r(suC\~?L/EۥpRh)G`$n=ICe]_:xn(-SHo _!]u8E/Ow!Yn=Dkd eE뽃K_KZD5sHkiZf"n< Z^=qWf\L6h8&%&%=:Jd__^̑F~,uHAǛ쐐K|({&]NP|wXH! gPl]aI l֭|KH㋄kF]-C5\9Y>mnR\gQ ~7t2%'və+^fp7ۈ'skOxNцtR̶L;vס|^D>ʽ.%`ˡQWO.~^,|l~~\|8][{af?ޥq-|*$^֛|2uD=q&?c{k,lYiO;co2ju0 eV0TNp_@?DN9?o-U߲:fNLj>hu Ǎ{Q&_u8#VOA5"ӷ \)& Jbsѿ; nqw Bs|JQgWd3MRW!:A͔Uk؆3 7LxՌ: !2J5K0'qv n[H{~0 #:A\Q`=31 Pf_)|f Bq$]4ı7k6W/b{lKiid|q*7_Op6Bܙub ~dkkI\A1]m6 5~!gku;CQ]/QMoT3Rը7<Z=JmPPatfLA3|tcޮ`BP% Kt~o=69P3]+m}$4eƵ>P%KH X8:WLiqǥbF4)Δr)єu]4L?bSں2#\@*5RTg {|9%SsxEԎ{#qsswߚwiy;u|YX0`D(CMGAV =/(>;3](vedH(`Tazh>:Y:16Y1]9%B<8^>G&13vglwm3tl3&.2P4'gigD;t' Zgg{Z1Kl&vn19.}^~LgZ~b;Wk)[0S:2^[v=6 z~.e(ģ{%OYBzU*<._Tq;\-*qY4h =l|W y -֗2b>]Odl[!v/Aa`aMtFAҦ9q=e?G|M'e,w)LJֲ_ws/۩tTX@q'&bWJlp\X *9X,MPdF&* FX~v%{y^k5I>rŽ҇}b*\f!ȇE{߮;L2uW "7f=7"SL70%m8GlqGD.^fV] ^XY9oJ PM P%MVL:)quDΘsW(O뤪@w jm*U5i'd~CWƀPuڅ"M{LnշlՄvaĠ|?Zyn۴-pĘ]诨tA-PdS$G PͦK!Y>;X̰ri\jglQS2GaU6OoY=}@@3*Xeµ}\^K&b+g,pdB`k775Uӝ2FymKBVˮ 'DĨaC7U|%~U:Hӌ|랶Xhdј%Q*au>T 6֌C%[n AjXV ^ItHܷBX:@9;+lPP7|))iRy5ll%9B6+ 1C̥k9n)ȷR]jVzx-w Be=?䩏xVh[CMw,Jc hwX~il?ba‚jxۢ{B]@D~8U*fiNXZEK`*zKQ\f_M$Xʎ4Hc+̈ݴi[GBL I [UJR٪*[U$=AĨ=9=g̜_s}݁cZM6o[촅|86Go,WA0SDS:cFGLIVtJ'0[DTQ-a2 v5KU+A,ڴ%;O 4e9#[f;9eeT{^Lz&t܀ϯ4uD q<82lc?ݫȳw8v]=4`[řkk!x#@_D0ݨ)z Uc E <} 2 QpDUr*jiʥ\Yglr(e~Y0+Lr:za{dSo)$ss/ȅ ˩rv7xL yE;w-E'veBaMzӹue;\ɥc cB\(8jCN3Z0:\JY١X^.յ`|kWl`k>z%?n~~^>~~?{wfs~IgHK˾\0|3F w`GcC.]0(kt ^3w7PzI c;1|a"w6wz4 5WrD0J/3 =9WH2Dt+mXA2VtGgKd/-/S1-|8[!W:CzPGފIl8L *"]1?N0Kg0||Z@B3:T!1|t`~~QyML'9 U녪O/pY"׃~K5-&+|̬1Ħ|ui"TgB׭k!錪ÙYuTSS~b\,EeD)HbV[-ܱه* SVk@tH@U6 P%6K&ᤠjfxeD΂ xcˮ31x "(GH }t:tt:\CNB C\Ԯ55UVmm=?O|{f;D`hFâ!"aX2uCf^edm3.\$/gG2s`B z0(ex1>U[یYjԈȠz!dp:ь.dL;0W3ڻ !;c~ fwY"&rf*A67lF.˽}˿/>RlL闕*A_s#]e+Nz?_,_8ʾr;xc`6 /U;IvL~=lMJM>B<|fӛ(|ιQgjLF|SLQ;wuƖcDO䔳F>6N9QVE};02F×C"WSӅj@> uaQfѵVda[Xhjg>O$LnxW Oݤ[j%WTBcF ;>"grk@du&,fI"n:v+Pg7©TQj҄ÊSjMF+$lk9q1%<-lcmF >$%zUz9&rUX֬? By{)4u&8PE=igP9],bN7hknaogʵŵ0/} `^E36b $tk[Utkݣ!%;&dl@W̑)KW%grN/26*TC}>u^@N"X=a~ \F䶓f-Y{}­RNRLUEqs U|mセ  i1 BN& #Gj@cG|YQQoT榸/U5LR!7YωUnJM"'1ĉ2Ya#]T-5nX-kI' e}]w؂CjAu3n܎͈;f٭D,J≗TPH}0.do Bn]ZX]{yq3vos_g|[|f5$w&:ME!,Zf,C6d )C"<"wgK z=FzM]O0U^·:20N݋EIZᮧ˛3T̂K&s g46OG p/$ NJ.޾JoS3 9W5NkBOtAdK!S_Fw'C2Hb͝J>sz Wl(GqT568pٵnbždY m eLbiӉ mD+уzQ{gؾ8p@W-fKL; fyŮ29PMH2$j/de`8"Clv0ņ'5ngeQ gQl G} G zX]J5bI9OT#":cFa ^Pj.\> eKO];;Hr+$I)wLS-;[AIwSS{+ܯ.)`:2,6@^ŊjO!l:l/I šIsD'sMbދx &^=lH .g}6N/1x 6ׄu9TH;h.V^'W~H>3kxa#sg8>̯vJ=e%d\!^ifšsN7<DVŲFsdդG&eBL|mk9J|42߆777Kp"Dί&+eP@ISC - (RHUjAQʘr'am;ʗG8\+Tqo@飕\4gpSi!F{k@*Tϣ+#P*(7<:)͝_gͽiɺT򇅕B|yNP0 &zX]*G: r0Y<<Q;oxdn?lX0)gx˺!&^ƣy'7_sӟrMp;ޟ%ѩ!ZPe/m6ǖwNLUA#Sdhh[]2d|yޥbѝD4_$7V**_݈g73wf6a36oDVZ^G1Ÿ[̿?ǒLȭ}:]|!6bJ.$@T99{˧:I$sC~f5XHW1'"Yd?4YT3,Y{HՁLSsiW|F3~\X+f Y_Âcxiwkkak|sB )c/Ddk5BvjQsK-v {{Kv>!>olxb*i3TLg>_&>/_#r^E"~H޿J, :åеwHґo w7lԌwMP@duo9߰1uNg}~z8/ע3WpFo5QYhnsŽ!Nd i 2eԀzbT_zLhPI+\jDr䐖n2:iə'&IzHńIxBx' CHE&*-tLNU(6U/< ntXng7)oWSyע9jN>G,+Lk_HUb Ad0 `T sdu]i*7xT(*.(*,XLy4IPqPR*N"L$ΤYPnƎjZ\ZwVI79S:@XPjl2q+r[д&EYXq?SF1=vQ⸤ᛏ["\8v-\"*׷ '2I0=A0=`Nh~}0q#] eX/_r? зԟr_3[ϤG}VN3&A#IqD|1ْH=?6^GWHwʓb UŸdƑ̬c0d61vj0Lj'JpVéjx.X qIy:!p9ZW8ZHC~硂lAXC&tQcRGWIJ'䷍d>u-%wǵDz|n}#L$J$xlk5XbSn= SϢ4xQ nnPneJ r:Y8<|чP{(ypôwz.H۲Xtŝ!,. |OhLNXfrYlIhWq'NnAƒPq ,Y84TԎۺaVAsPP:؄Se@TNGLHJ^\SӀ#r:vxPpLZX,tڞ]|$ͤ [3ٷTڕBNx`aÇRSGkJm5F;C6y fJ=HՀgA׋m̠)ssF\c5 [udxC>\3JFZ-m\eۯk]9$M*P~9#ڱvb)LR1u(k6Viք9E6~ 4Tc7,*Q5@k(xn?Lٙ-:S^IgBզߡ"9wKƪo wQz8&q+&crD:Wќw*:֨}4d"ϤiUdGM{ &]5JT̓$_=' f hCdWrR-丈ލdf .)S`,(s3ޚ7N\K/2h.Fً$Fl[,;c>h^pPG_{哎n^e1)wѣp`TRTB*&ZO%—-*|҈;k#ܚ.ֱu68`ҸqOLm˖$[勔ywI,"lx䦿{\8s3c =Og ꥄmޟCsiV(iٷ䔠wi$sNp5CnVDes!l'%n"; ~,*`V*Pɔ. iСQ+a*P>*KR@ZigrE>ku+5We̽(uz|ts%v-Of(:2@$S⋫z,]Bs|(YȅH]>c%b7?N>f'_~YML&UKm& <`ИPAfqczЖsOhv7(-nUJT@9;jh5KtVXZbwpK%)^\%2dSKQVGSnASw"4gT\99* 4Q D.xR v?P*Y7gdTa%S| ]2 E=)PsMu}9eޫR<*/qʴ iRI8#r$,޾X~e/ v#KkLڔ]9EwzZaE9C~ >m&=uui\̊Hj3r &mmŜki*"Z89 #qQRwj$|"U+ң>QlncR:Z~a~qy*|z[Q:['WXeu([rۊSfi!YGn%ǚ~mM& BO&9 EdEkeTa ă;Г<-Ua Q.WGYCr1]SLq)N)UuD'q]OCx w]s ޛV^' ufNJW\O{Qw5 m]3Z&KܞD _ܚPu <] ܗy8q^Mc<{S |pZ=E0_KhwcGT$1-\G)G}\}'LNIO53dOŭ' bS'Isv/z Hh+=4@Z0g@TnG*TI}FJDA; 4S`_Lnh) #LK۞- -K?݈~MQ?/M/S4ů3uآ*T$Ў# a i,b^ I# R<U WA٣j5,1A֞U2551H Hj CjJDEjx 3,!6*E.8v&v+Z\Ki~ƭf'#p}Oy°ޅ2S#^Ϻ~WXD+EVzOyRxABmWerw m։gx#O_/]yНӱ\ߺtXMꆊS1g\ZP i}UqN j7-1Ҫi^Y74y˜WzRpXo)M] q3EFPO_j[cibe3zOXVB6)qıY t/5u$XA!_:1L:&K$VLc3X+$j "ˁ*$ SJxtx_@Lb ̭+(#d5ҁ`#<0!%f<_훡X`#FU!^.$|)W "7˵LX U7 _{c+k;S-9yq8=8u%u|\R{\|o=_MXd-R)TUgRby馯8-sG_y'%C(Vx{I|e w&c -"<=jpM=XHygYM#+g^yqj#2K鲖i$ >AfYg9fGEgO3p 2h=?,2Zaς5/0(N (JCΈ)5edu'LS4$IۉρOF~- ѲEz'A~]m+.=$}뒇Lky6枨9Jp+\V?c*?GKWY8ZBw-dp E$ɯ I[&YМE,x>h%4g>Ji2W۪+6l*ˢݷu}Vg/jٺn,°)?t` 6|˺ Y~VL[;y}a6ċť_ؔ(/ 鐥UBuy43sJ7pF/:,٨Di@їy*F6 s"r{Lq )KJ?0yq,?.ڤT%F/0JtY n*Ap"~%k ϛ!냐EU\evy EڕQ R0u[. F3vT{\K&2^v9җz<ĈN|k yQzN-|0|X_s/ǝvˎ$4gI=|xw6 #T9*V(^.P۫TUm/NqV颱2'D OǛ8f]lGɵOG͝Hr)GũZbGq-Z˲1sZ *"LU.-_Д \#Daar &Pcə vT~uc#X89C-0*-[DlUSkNN3+`,ijX[NC}rsz9QzK{6׀Q& ^:q7{FS]~N40 MxDp!}ࡎdcIeF %h;g@wUE/.x>0+%KQr:xu8o#QPIΟ {NJk[eU7M2]E wTPjr??E[r6(w k(R6!g!7okUOְ<^%;%[j>a.Z/`'0)B#-J@&$ћE.遊u*IbȐ m0WuCE&"| af,1=8gH`"gˮn3 2xW Tqs'qlD*X,ҥjpmf;‡j"n7=s{T}5V{Np+Lʝ?7~@Ig6xf)hJ:j؄ Ol>H<}WI⦢Ĉt𱼽QL>)"A {X eT*h#L V>qhjQ@R4S^Pr/ W&*2Qpj.Q%$AKQҝ|Q|w2 kj-c_05䮛nHvmwla'oүIGʖg\/!iY \E$HL Tg=:=Ps.7] eMA3og;K#Y.SE Mص1;ɯSpz[=(gKO0q:0JǁN~QAVڸn.)]s|V-`KT%aUC=00߿;g{UuԱmt44V1 te R6/s kdm/=dj/Lw-뎜a>E*1~hV['$f^ksfj!b0~KNCJpUř;/`_Hmz?g4G~k1w]ߨeY(aGpE"im)q(*֫AEs뛴W'0NcS.ܛʕ) rԒ~faEsX6Yf67GDwYaSp˲q (#Dt&Փ#*q?nXXAw+{+]+F:S=V鼘Xr ysyga^ g+Xd>lŬۯZr!6U2Z5rFcjWz0#TLV 4@bj&z)D'yB4)Yrw=Yk&Ʒ& `P$)U4`g_5 rK6Ӣ ϙj񴈢l<~@"WR5ND\ 1UGa~?!֡,OΦ^I˄/ qQt]Stgۭu[,# >3# xàk?dp}:/97";c wv.[7} LIkh" 1KbShLuhNۄOYnYs1~d!0sWUU_yK3ZJ AcQ}K.QOLa}FE_xZM͖1$!PѤ-:GcY4I l4sfECL^PۻSvj=/+E2b8R Plq˗)f Q %KDPbf8f#G˛J(?2VJ)L}ލ.GJV!\ ,m p,oO+&ȝmko';|=*#U |O3PoN4h+jdz>hQ &TIf1O!$۪]xzo0'ԍ<sH$VWw7vr0TS=9u,yb n[藷Dϭxk9~ `s!Zfbt+i^ݲ$d$[VdlYMq3 Ln?μ~=6zFV]Am88yY@u?`u)C947uڃ/v"y,pB\Uψ^Cڭuߦ*HIxߞ'؇%T~|I9 4J!N2Lv$]2.LqK㇖FD&q _YA#B*G l/G3``lհLf)2tt [}̕Jl\uIֹ&s+]#jQC>!UpBH5y? g#d?J1wB|7]/)7 Ue>,-a֋yA+4 v(يӼ9V0_V;xToTqJB Ŷ#z~ N2ۡ)npFzC^ĻI 1 Ng4QD`*b[ ^̋:PW3ܣ mn/k(y.2BYNn=4K%(#<56<!8i (IT}|:5K;L'i-fYJbXmxdh gFGC "kFXJT3y-lgJưK`{Lد$vշ;L 7l'->J^#pqvo!C7E Q9?t%V5pTLir('1b)j1S΄ srՇuj##nSvЪ )f[O͍z̠T͔"jro{м~*ˁBՓλ r,q?w+|es$[5X~?_*L}CV 1s}҃/!}!c 5ޗ.u;젽oDҳWź:6kʪ# Ir?4A"12(Ύ׺3N9(΂"WNI "$rΖ[?FbNL*~ &w^0Jm=ZS5()]$)֪:;(qNm-2&1]4t:(Ռ1V*mrZHg pu 2MV8ʺtRm7Ȕ4A1TbM /-Dm .l{-JEÜq aukDU-–CvȅZ=4׍=:ީ¯tk~Gl$hKr,+NAx-$ͯ3qWZ|/p_wChvŋH*'^c 3QCDaSjY6g﫸!>)KmR6bBd>I}NYRynEȻB3܋erg:e`LT "OfMT< QI NMڕ д-nRK6J`8ؘLsA T.yWGR{X0 Cs Z6:T whP nT2D7 _Y3u p f U=j8DҞNV,"Tj!7f!,f`#- 1%aw+b>(Fp[~Ė[!eᨀT8/ lLjkY!T"&i ȄճG)d*4b[)^=H@4Q#5d,Bsm 5\{$~1U~oJ",~G]tkKĢ{'-cOX n.m\*W~4DJ$IDһDUʡBno/˱V*T6lroz.$e˿nWw[hM"CpTfH~oOFuNGx-wcy.A ݪ;L=RQPZx!3=ͥk˂?HRL\جx m&p{&YնKt^ v}ns;JI)C9#]NP:s?Q}Ke^\I6Iދf{_m?Z&Z|&i'Z+2+Yw 1z˫[PέwV_f7f# 68B* &`LP7ASF tjYDPd=[ҜzeutI?}旅uMzğ=""i\二g2Y/ByLdQPUԟY$!k$|]Lf\! Rs ~LI'enRK 1`(.ӯ&4D JwxDfc*Р$RTRIZ=!}߀Vi=N9CS~xϽ={{NlEF%KӀNK{kuނܝ3S 3tL_KnE{}!KlscID}5|Q€N lFjg ^QxdW1e /,'4n_ӤrS'].٪&O4q@0*:MJ jMr]E+`uQsvo[3BYdrBR4'PpsU4Ia5g]Lp+أS1J9bU*3Z@ci %]\ /fYщ[I85(@:4-1DU t O}߈ R^ֈgZdX˒qkiR(L**)c($*"-I_yoxTI`< Oj/ACH r{='c\YclqH&ţH%<*:5}sO6@`5SEV33;x;oSziJ;,r$|QY,wJ_CE;,U;dq9$*.HC>G4U8dws^ !F`)tX`W5tI=kQ&J\5Tq): 5*SmhƦty&"8{eu"HW#U}|e#HbGRL3%, ŭ3IVجJPRD*., hfw#،V$ͼ/o^ g>lF`ew=+F,S(D'MWWsFesKlv8^(R$[dW=v0֡W ?% z:z||Jzzx@: :s~TA:b!r)yL«Z0\IJIWܼ+E?~̮jͨrxX؜`7ͭmom))n{Ċ dm.7/}2}j{t۩ؗR۸/|yOތēڭv)e';o{M]JEOPzFI.Ele k3gAAÂ/4^e@}5y(ry{ޅq>$g PẆ8qpLp A5:&[@95j9/X#BB9Mjhu._ k&eK4o* dȈ]tWz\0SQnY̊S&Q.wm_rs]~] O>7ǡJ>s> qGxt1Y,%dhcwZViQmAi[DȾJU%UY섰8Žϙss|}=PMMd>ЗvG=S8ocV : 2]ˑQ_,zPI{Rp*8 (:{ii(̞WnGd?_Bf0:Js"UcHh*2*PYF|CGA[\)'ٛUMMWHYj(~Z2>o9 EgΔӇG.t|f0\2ȅ$S<'ekDe1NbFQ#`*p5q;1Eg"bM%ny: dq*vmŷi` X ׋׵bVlߤ`gViy9S_?(iP:=TFtknS@2JbzšsUf{@Uk r=UCuxybit ٺos\F=&x0uٗiuxרV;MbBlplRϛ%[uA$ NVPs ~yFF_84fwVW@O#N a\L0{;ծw﻾ܧAR'icM~V~f$fcۉzFfVŚ*>ͧǧJH~.L(k"D@Ҍda,m&{WQV/a,9z)82:TFVقsQSnZ,5Jv{N4Zy~+Y&a n25J,jzYֽ{(}]:? \rp.Jᨰ¢G1iH3DpbEإ1:2{k#7 "}3.%u!>w c9ͨ"v677)"F.eu,&\7&>B(>z]&s s;&9DC#MAe(àHPSi ek`=Heʵl пbOaB0T~ ETw e+P^<.٤fR=nypI S# f ycSiᙱ0@䋑Ռ"Δ[ȷv rL_zzshBQ$dF))\i=)VCB4Q^Jxh7u7ygihZ9)v7kLkrx$%bV[Lomnr;~,Q$'#5H6Z9@=m60VT-`q۩ku?ҡS}%jepër)#3-) =*|\_ ,kאS"!°_BU{u}?Ndzk?[ދ/nėO2;9{H_~d#wOڷ^^>L~:N{/v4G1^:A6ALfbXxajh;H3Gԍ:_Jrׯa?'{(!y aQεy6/ǮUD]ѳeY{`ģ>4Iѯ3; `i@+U OH?{$؟6hA}.M_t唴ZAשR4W6A,YYa g =Y.~_8ƭBh=AlkZ~;n V=i'B5> dM lаdM~s6uH^0S d~3l}Ql!Z.bPqM9]| z8zy˅HGM̐|+ӥUvĄ[3{oX`BQZ%nrE+~ YPQXfmMiMDZU@DQivuƥQ[ADńȾ'UI%*{*+Ba Ҷ:8N0nGÛ^ 6ۣY/FmSXG$\kF^U;*yCCtN4 ntgSņ~j ^ $AQp2"ty1. _mֻjHsfPraXΚDw9xa2 G_><2 ]qeↃ R 5BQ Bي6mC8Aꁼ=] 7>,93BuvۤvPvZ/@u30ΩP qA)kTsfH}?^D !/ 1aJH9kL&XÏ_IoAQCe|0 D-W$uj>098Z&"lS>;Z - |f[]O76Rdvw3+&KNO_ VוXa?ZvEj$ J>Z"tb=If6vōHlq ͯE {~;J ',Z%6ʪ<vZ\3VhɡsФQ94)@uTliD5 wkk nN?gqf]iul#ʥF<e\SCTy} !7\Q˿J@ԙegp X3V!׽2 \Vťr*>[[cA(tRq"&Zݿ>3_u'u~A3@퓐CrFսnJOI’2úpf=/c][/v㥝|v'獌 lݙ}%i4i f Ggbn-x0OV(lWoaz' ~ U+%CoIZ&֙`= IJ'dTet5yZ&&ϙa9hu= aZ0{om}˾i5 65c - .Am H XD{@OhOlk[,0bW,4 ;ӽ6[s>ȺSO+PCfq܎s5\)R73fXy\4b")ծT708.U92D(eV0G()B v(eF ' .p7^cQ۳N {(=$ '/IbU,#0{!> .ϯnFωPf?>KLgbR2e)47a-"^~vf>7lo[◭|>of7Of!ao&]&J[T`oԥ1^ Y}b=$15hb`k;j+L4L+7v%b'2Х@(&&Q 미 S^Y,"xPBFE'G=!q{'sm1Kb{r: _tD_X`*$إ6` k4|Q="ْ =tAZ3mUYPW+]m-裸[k[3ۉF E̵ӐT~J/  |m5CD8~]zP/s3Tia/S:6lJM hy)&-rRW rrLUd"xB]c{ |T iք˦5llHsUHvC 1v X/,ufS`\/Qeԗ>0oBI[Ƀ]/^?!jLkQAPה}em EpSu"~gkP+&D]4 AE1\oI%j?nTj9vlƬ9LM:& (p;(J`eugO{O/O~OP(%%)_yKSG56tu DlD+8+`s.Ȍ B[xt +C*aIvHe+s3bV7Ն{ EI|8Qx(13Ńj}J#Z/gP#^}[#* f 7>]|BWdm\z^:k?a6J '_kW{s<= t[ p3}08Wg%r6ҒvƖҦ߆p鷂kgs?K%}.J(BfO>|1rYA]`"kb/ m9~V4X|ݎʯiEj Ů`4z=kzGx>rhQ>;8VN0vb90ad`.qm˥wт*oX^5qc#U夹Ͼ+x3;E_4Zen%}ˣU=ܡǁÅ9Oƞ%xqќ`NUG,`g4l% 19dǔ r̩99D.+li5qX/J"v4k%MYa0gf .ʮ3^2B޻3&9}\9;{Z)ӽa%ˈ ;(w-lgDz(}C%$1뫌<8{X^0pZ Sҫqҫ6=Qv-ksǹy{B#`5gQ!NɘV憎/k'NVrZpvy /Fi,F|spzbbiogr@ŁJHa3dܦ/x JƷ-*mdk\~'n/;(D3o bx~8}doh^<%OLEªh$iMx|\"2aބj3nE«N4@*e߇YkQ .OZr-1pGx`j_!${*0pU@ EDfxg&OvK8k\麈oA;.k%yzNAf%W_$>~ Ec[Ժ?tM(|ϼލ|XI~WrۇX~ JK1\?b %.*Db4]F61{ ^ -!~P Kr}_oMN'XuχԹJ%}Q4ԒGS fGTO<P x %NGmWnܒ>!ĎD :00õ3V-+ hGθ'#kx  C`ŘF{˝q iP*t%iX~eʐa(ҩR] ܋西^]FrC@b7NS:aJ2bFXqMN"Xv*V6 P'2jxzEFVI24Amam5CvhzKĚ*HqEP]OKƔ' <ՏS5`Qqu+y -$Hc2cN k2^Ln7mJt`";īDPAFW0& G($MqO#Ԓ?-.Vr9 k^Sۆ48qz1tBO1?_>7T13gj issB!T7ꅶ^Ul"t/}5GPvZ/Ksf5B}zҪ%дj)YZ*}%=:]\H峡z:Ƨ N WwV/=V;XQSiAE PQ[QU{q]ftA3@;!Iwtҹ: o "1kmTA3?U/[z|?S9f±bM2-دjΩV=@&6OW:j$Bi Ѭ.z [`:XNM35=pi=i>̋B 7pX T91vЀ؀WZY"=%& /L@Ћxyךꭻ0扻eg]k=~x Hy#qN/?,ё.ҥ.eC(^5zI9Q_\Y不],'~: B~M~%i+!q vC _ e d-8I,n=LPLM1i`%p/ Gq pt 1HZUL=d V,cɈ(!!XZg/{=n%x=R|hoYgN]mӪa m[Xq''G$(m0S*mT(eK *RAMבqVIENyA(Di1U^gnHgu=7Ƈ>1(fɨ] `uw¦K|`cg{CgZyss@'Ye6ݶF:AwѶ`OZof_[RHm>ƌ^Uqipb ]+7ģ#af gQJ+KuUs (JᄠO:KC좞.@ 3n(۟MS"&Kͮ`R;U Edksh9T^pUK"_3H(2Ļ?eһ[sWecY f&㤢(R'D+S ſB[Qv# d(g)fS>]> q%)QB\3ON]kO.3iLsQvop}7c ?wPވR)P  (2loIl&NX7-ǡ_Z\e.I&+@ZŔdJ^Q2uЄʫ@*T#g"u*>R\wxH(FM%8v;PQ'PM vQ!UzH I k/|v}E,m u=\@e:T>JNDS$rw9Az5.5Ě&'jk jȒjexFEj>ErEatR$ʱN xZ[Ca)h@*oQբ:-O;Z$ij^ЩPu@JmuQ+d\mB#PѮw>3E,άn JJVj]v5cdd?+DhM<=%̬甋OJx| OBnKhp3xha(5BEW*uml4Iny5BL=UJk٥ߏ}]&#'! >h:"mۜڙvmQPBl%GGs"s\ UK|:̋-ghe 1WԺд'tO#@Lm1Ob}!1UA *>#y'jѐt^Alnd{?k|*G:8/0ovLYr2+xcr.U TқE{N8'Jj*];xqX'ţ's,r564efJqkыAo^VɡR+CT:_! ݥ[r·WQ!WlG{%D0M9Lߋy6z$\U6gHqmXvqn^6;a#&Hr'~XgM)2փK%/SR鳿RT u\rz|R7RG(SO A5^7d^÷Z}V ڨϢ b׍rr)d}'dX}_A01JųBTk8"S$6ޤVG/Go(9 ?+_̧ǣT^jyw+2he!l"Gv?i:$[$cG( q " CVoAash㙊?;+qv4򕭢1gZii!IVLe&(`@} sd :t]^9R-!'K?à떒s)iu/y@M-KbttJϕb;f{HOwYo] * uiXH}i͈sf3y6z&~wŶ -2ʖ%oZj_jl7]*yWvAE @-ѹhWy]V= -_4Y_x+s 0wkbt^aY~M >3Y. kDډAE8!2lܢ>? `rQQ\dOg0Pg\Ipp 1`@B ݕސj(|$sN_oR՘02Ka_ÌSϫ##UHc֡l~Ft`Vmʛ¸PǯSG)UA֋[й5'\ycp؅دfgYGdt-)'Hnov>z:Qtz-b~3o@;#B0 Fk9=fȧ&>- v }77Jx3@=lVr&v@ Yq,bk)!yo3ay1iJ4}D)nؽ: C%Kvŷ>\4Dߥt9؁ I> qWXWʼ(hsԂ.>QqY'?; &gQs@{]v/Ng-i[ ^g#Vl⧒?܏Tye O*w ݋)S_!$Mǹ'%LAV6$' |zbAЋ!^beԺ嚫YyOY:.t^lJ45LU/WUoziU5N/oPd;Y*}L?lzdi{#[MNj?[mJHnmn:Kd./klX@6Hq9Ꮃwrf"IE'X{y=A4%"PJ_52_P^PPK"8Z8UL_N5]e|^MJ."5<6*e )K(ҷӮu_MG%|a3(o& %G\٘]Ņ8Ma^\Xg7KLh_0Di;?N-|N.W|gK;b59i[q2e)qSf)u1A \Ƹ&DfNr_Y1 i:vۣ?\t~YzJj |F qa#6#?" yWR`),F[+&Q =ٯSQ'ܱuI[t״\M}mn n+v3+f3~UETΊ܂YLoр_+Fk0ՈYtT =]5gbg>lǨ1(_QL.`c"}4F3hn@{ 5.b,tuB#Z7ܳY(`d>N:tvhZ8)iOH("`iZoۀanHœf1)pY M_sVTEL.KəJ0kM7&|(GvQ!PA,Y7k`ZpA*]epGlPiAT_$8 fTN.um;"U@UN3iQ3kaA#T7RDiR{r9L! ?1uW<_;r/幠ֆ~'膆2C6{Zdr4ŝAnޟw m(j"e\}3+D㨙4ecͲMӌսM4սYiN˦DED8pu> Mu}5e~ؿa>l}bW:P.N .h2x+TZ1]sf }]:C@Ï)ȳd oPtbT=9@Q^JKu_+|jQG GW\A> gƕgtU4 @}\_J4DRa+m{ÁϾdha0V>!d⫛6K5o<&哽K/˟OE-?/8yt'Z;Z .CD`rNz/rF kM*KW-]@ݳJhQ \ѧ[aџRxkv+\UiX{T> q=-MkyFS250RA"NWĚ!I6 0X%eaƾ`K+CtG6垒䖛J-ѫmCa?;lx +#AUt@^bx ÓXՉ,>jEoE]F㌲t! `3 2#E:˩p tk#N!3lWf7m2[sS PٍÄsL&zԠgtiK:F0Cƒ}Xӕqe6LrcN`hMMvY6l5wQ+) TH&x-3em>*c:Ex#M=,䀤(/i$vDdE&ɌC6\y0EȌV#5vBƄD<^ .y03s z0:`eNE6U]\wÂbSEwmŻ3rEVFkj.kjT9*HߎJ, - c1fY{b2z2h635$iQ%,2^5^^#r8S-䈫K8hS%܄rw'ma!wRߌpDcas5{_˝kЧMғ傤'lpҹ&8%s/>[??LyOB5W0ȥkPj@،e|pܧ X6߿d:Y:xN./~QpiZ!||-)+ĝA gR`RQ`k_PWj8R"s9MVA{[PѾp1{>{z҅nQP4CNItYn TTt{+@0,oJ%[\^K'"[(Wl~+D!l _%<ʖւ/[·~*{X*ndn2e7^߶R\%Kт+ Lv\ FbP06=AI4)85R5r0.LsEMIϛ)6\0fDڲ@+Q _C?RF>Pc:J'uȴ`Z|*cPNޙP/DkZʠ21,V6BcNczVy~OWuC#Q͕y/|KeO\- !vډBJ*KVpiPrR='B9#ѲguގV=xnZT*Ɣ/õ!N7BLu wmxV\|ul1Oԍ<u!ٟO؉5%FTL3kwK$󋫉R4M49GN.VJ9Scw5?ORp.~ݎnJrѭ)[rt3@P ڷ}!Ppast?XP,7wrŃ2m+f62(B"r(#ͲG{jnZw;l4tʕ7V hb 1Z//z)b 5_$L[+9d@I( mT%NΕ6;5D(|*)X eXTI_l%뇙L~7Tx%}.u98Q1hK?ajo_FiRÇc>H0A Z\Wvmk/ҒR d&d2)4R b@={{·=y&Vz1SPrgR}^jhK")gUcDY_0K8d)ċ[e̡ PM!k*]+m$Pa|`J)&$G`W=Yck= |E@WGb=4벁X;—+Y G\;P*"ham 7g$??+k/ݍ y~\)B:!6<7ol9Xsbe.)"( ۼo73MX6ݞÿq4'h8]\ VFO%K qI䐆zY~^=-Q>,S>9d0|P5JBv]~S @NNjeP8_ə0KbyXYI,o$_v rJnHl'Tf6N|%݈&,uln-&|sbhT(a2փ|tu{):J#0z%wHoA3' 7[=[頪xӯUwTOdqeoMbcqk?&KBSn I(i%c*v]ɺC}.ᦨMfH$՘&D(j3~.UlRļ9D$F6ߡS{hب~/? A/fIkD N)Kǀ:JwԷYdims(V^KV?}auow3и19tׯwC3%FྀJef|p&eDЙQȆNSF>a{NxMnl~,S!|@Z8N0u[/TM 옜Ijf0n ]=0F8bX՜&Z;c<ŌүZո :]zǏ0mEf2 VLif|[dRpZ#N`baVLXZBvר9X=<=M` mLDLVN?MsՈ@֬_}˫Dϳk{-O0>oҟ hCπ%ҟB,cZ>dg3!pWjԿWyTy.`ܡMaWjn {uqO4HT] iuaS5p 11oړ>BśjM˕6kcB*8p2Y`2Y7Ϭqanȣ.{%x~3},/۩ŽRWRɳK[sŝwx|sEsע\u>FȖLԻcR9*T" RȽ:F$GMxNS]>RT/U)FT+kǵj>ɏjP.ɫx+>Gm=}ꁧt'1h$~w$x 4N~N2dzŕprey.܌##x`T169iO`Y -ތ.O-c|ڛLۛ&*m&ٵDn(Žr:_Ieo$K@`!f}^1=:s?c,)v5=QQ'FQ4>6`*׮9_x~)Ǭ wӷf$bprB|BAP#FpCw%7Ul@;aMMS8Yg䩘n`jOZAZLq/!je}y W4Q0*i3V?ow#skbi=/!YԌ?HY#:%GZQޤ[-1e=yYmVX]E-Q,@A[A1fT=~Z54j÷#hTbf' f7.^ quȬhxpٷ4&~QN~?\CV )dfR_͸gi1@ WxG,ЊvYv) ]CoJ@Ь] [}LET|])Ӝ$vvA-՞S}$-=91%!/11`= [ w^'{,f Gު͈ $cpRZ_$i3sBt@f8:(IH/"MNfD.H"VH4:o[.krSb*82M-0;H;IA>9K <26W?bO$^@q'Q(jQF'@lkw+j5eP^]HsK$rk~),r+!WP/*'M$Q5cz/`io8Uʋ}whRz#Ou,'yvp,gF]j8gÈWܴχvb)ͽ{וol"t̸kz a儤aR7^[#il%'Ćl\֨/|EISf9 /q5*O S$c@H-BÉ^ZSj֩rɬ~XS.[\b uN9}]e{E$ kݘ,C0 ڝ cH+`$d,=a ["#m<+ܽ㸼J0~Edž:8:8PwFւBHHHޛB{ @B;?QfeR뛙vf^ܮ$?ǖ>WWd _;%~(oxkcŷdT>2>9z{Н~'^FCmU20&-pA^%#6F,l橮e[ӠW&W 7nU?fXx-!{^iHǫC(BE-z/A>48( 9j圠81baynaEjot= *B] 4,0]S bS"i!CԪ*S00Wѥ"$SKzB\qmsp@z:-2m72xiĺN!PYq}@I B1D1Bt 8P'JocMLil0E 6\{ɄoC%+假e4^4-ubBΜ ®Rc̨p$_%T,e"0<XD )-r2zTj \ (n居﾿MBUc] )wy߼=\ezN 73BYqa۵&Q8%C)11kge;>ocU( { (z{[VhJ, 3 Er fb^-F[dXN)rgDʴ7ZnW)|)Ry ar־|fH;BG:䤝?ӓQyj0% fAϳ%ȇޜK4c>x+GLlTe^O)`:wb䆜4bB9]8}GS<+7YZ`# ǖ'wLB89Up!M59JLkyfⲆ//eD ⁀"(#88Zc9(rs;9t:7/IKq٪6j7y~\pE5ѩW??-&1YuA_2y7'U| 78Vno4fDVMKl6}R8I+eQlj7En|H-o'ɍd"I&w ۱t~'ݙvTf O?'2Gܟ26[_$pNr E&[CD>܎.oϯ_mZsr![#u3c%ʱ'EB_#'ҟK_ేEȣ- 3]eYaSή3 kj=bVȥLp>B&a2rQjqe'Zފ&S兣 Ov~? B-j0Kw+F>ߟ/ $~H IV2\9_NΙ]z`Uo`R^Tpz;10jfSM1Sn`KF䥸H682DP}g`ncŻpᇸ`] R3*sd BjPM@g԰gmzYWA Ӽ(Im9!5bev?B<|3V\]8OWg<*n$mY옞L Uj^%ᷯa$? /[j”V{SnD\i1dUrR͠C'įXAK 7Nvc5]?Et 3錣-Q$U}y3"O5vKCt(qB;l>,jaTjZ5 %L )鿵)MjP$W K~3dM&&Y`8 drEwe/UZ;pJ72iR)OPID*!ՀZnxJR[4XwaVo3h[9 e,Ny G#nL Ro&v2GY{;6h'~ٹ1xBQ)U%la u,8lm5occ+_9w$`u^#Aim/UQ/@l\NeTẃOr |fc9 /߅I{ WoF;Lro>Wn4ݹd0\iʓiP~ޥBEBHZB8O=Rv|\S#`#न W#:K9n?s]$#p˓~Logg]~j+v~qnJF>39k3_'FeFqU/5[!U0D0 !9BVyX%PӤh0 45HFZ<$Xf9UR5zvƚ/u;#9*|3F|<͈ pm^WZ>{sw`X5`HbU`S$hCfgm,Õ8q {CU$b2|΢%!žEcN0 KtD'[Cq`-@1=$7>on&%*===V4^bjM%t&Ţ `Wr/nA:+(d CϺ(:O]f9Ԯ`pPOpJ\ F;NCH'(WRIop)?eT؂8v̈:=Z.Ӹ,@s$'IB@YvY5-!fjrO=USއ8}6a=L=:GPO#QqA LS U'5*pnfb4f#b2\zt朷mZ|S;3}9OKăܲ*ˡg,Dx"H}8ĒrTAEӟ|>Е"mocXaC rtHVC }"9Ԏ?x.O(;GIa랏~b?lFo7=1u/>Z1Fm{ޒD&޺%Kt>{,6آ6>!Ļ.@{1M(Y h.s$7'լM3us]:&fٲfᬸQOHg@wV)VXw}á7ˌ]f@*m7̗S20-L t ~!K %DWrPSAjpZBtn^'(%="`Q|P)f)iUpEvJsNg)ǨcZ#iseھ3wGxq ZUȐ2]˅IN`ͼRgAX5DRu> K}Zݍ;!A.ҍ:4M/ɪQѢ\."һ`:G3nzpPx-ivӻO#_o3_!Sa[N?HX樕pvjd@D7ܧB%{d*oo62$fXVꐐi Q I hqFbsu*<.+iz7լW:C >774 VWkJ"]*GrR^kvci En.\;idx0Xg)ΨxpGgE(7JUjԪg_di%lYλ;|176 I9eZƎVH:Pӭ}nkճ$+W{SŐnm@V#R%=[݄ʢm3GfXky#&+hu+OUHA#(Edz2|jkriblj?='x4+) (gjǦ1]VΊ-(RQdqy,qE],j*^L[E˅pTʬ-a=4hKte M2{vX wAy%Jםd.RVҭwI5n W .hcxo6u!= 6q ؈2Ҩz ui$!LKDK=9=yݷyw܇w;V"һ.\@v RPf K,$ft*9Hv>?TlpCf@|'&>N)(iD<$7XsA,zhٔ3^8iGt۫,EU4[[)ġ\Dd(ZG+t2sJRqjy,Р!fz9uQEw_ޮ$ V?V~}Y9)Ghps#̑8?6vҙFQWt"Qp NhW?W3c3_f7lADbॴy#zɁ<$)*oeQ_z>< CwN|i̋7Փ & u.pg5{:4s=Z_L FN8k&$rUǢ_\wCpHf/ ŝ7F_G6s(_%7X8+n9.}ƶ&vI=Z6j7Z{Ihf: gYqWb5wf0e[RK{8ky.I| Ÿk9$4WGDU |I,tf<;l0WwK`cr+|mB"p. JwOP*a N ?̃A,7R [ubsu_b$Q$, iF*S{xku |_gCƫyӬ%W217x6l͸*H/#,\ V2 6I 9cr햫0G8/! :Cl:>dsa/^X݋g7RcQy7T[hfF1Ne>gw0FbLA6Z<-pt$gG{GqTtPܶ_XI响?+Km"iO +3-g#k#3oS#r^|%ufmDj3x-XQf&"*Y.6,`q8epu'0AXPjIZVVNHdcvjj?Yjn[Wp;lD%8wM"(#=oF|X,%E "M$%gJwF,"6A&0:(޽[ŝffXLIMm$s~Ͳ%ʮ/`?&AY tsZ1wS/Ʌ^r`5o:C928c"pnq4a$zCJ}ٙ…z6+[.M͡aNfS%b0>PH~fS1 &_ojsވΫx3!Nfq½LrA8)d6QB6#T݀<3N gu&VXweLʼJ٥K;vtzyx§\|Xq$\dvtI[kXaBh|O@m3cֲavlq\G\vULnynFAs>C/z) jƮq95ZPsmt G=uJn84ڻ(4s~3 J*"B>y jUUi.yF(|O%g @G\QpYzEla#: r:ūh*5F74vж!?J=W {iTymk[H7cZ>'p(B*m?o1)}$% 7M)\0n6`"̮V'.x쬌r+m5[W37:/LSiXbNS!$6JB Jջםebp Ih.PJ=O*ۃ)߼ފά$wt顗LY亳c7=V$KMƲo܊ (r;"*d \u|V@X`TsjR7Y$B̈^5qȢ\2\"G@\SoLwZ#<Z:]DZQ "U\0rFHdz 緒Xvs|r{=)q:}g;Sbdrdz2=_b/¿SoYzJ&#lj}"x2=s3̟,u~MF Ƥ?z%/XY=&i)O* poaL+utrqn\!7j-&7ƈw*G AM t/ߍ{oULLwSٝD|ͬSJThR>kǵfLlqXfMi%h,FI4h^ؙN'LO,QM@Tv @\Fٺk/2WU}af0c)NjfvוSE;)JF9Jg;W1gMއYjbS*l~P~[QG~kWF^QɉRzJwbv.#~aRA5i f6H8*aO$<:o⎳j)?Vv@ jݫidNcyS,\!S8$A%]NVyӅ0&31!JMOWB(FdI T+⫃TaU,beQGys=FϺyA@gxnړv*!w*v@Y^Fd:3s̚w4[blWßn |m%X(?ZD :#bq<zU.$%ˏDN}ɃT挓B&q=O}<iJ.uB3ug#:1pےVQ%gUmA*5< QD);^0E YS*Z"ؠ޲pF %6eN$7(ֱ'UcͰ:дd'tz;P<,^n"X&mFF 3*>Qۚ =HWr&]x#웷h`?~9IG$ƬxOvݕڎ՗L֩-bUc+Jlmxdbh%r+;DnNm|Ɗdq{/] yG@QJkї^<\nB-#\;m,U<LiG"MyeGjhJ3 \CWv-9S[1umଜ!S0&T۳.72>ҭ+,0YNdpaVS ǵ])~TΈ}aIQ*~jLrr8%݋CwCtvv|:yK^jG*]%vKȌcB ~$`6qM֑%yxec\)6B.Lx.ׂq~z>UGc .:%hrWHZ4t\O3$\eLBo=92EYxΌ;2ji6Py,Դ+N9xe-C N8NǃL ay6Vzie\i˖F^*(_%bkXM9T6;\3B]Z( 2@F:(tv R!^fWYM~]Ow @hgAUGU@2\jeJhb4;gOĢOBp)(-h Z$ kLJ|â\@<\Nﲁ?'S[!pO̫?v\\݉7;L栔b˽4YF/D\H?NlBr~ý.| h˩StVݳ@ߍO=> gW H#AXQQqU$B !!Nz}>W,58{wؗ }{㾴_Nf9$Y}bݣ vYDz=KnZMWpa41ӿ&88ļ@L=ę;"#GkҦtW>u|U@5Ƹ@ l|ύ@XZ&} <˵yh“EOp45.\)pF0pLD5H"ӑl2E`Rh"Dp=S{7=:v* Uv`*)V"z& &((!)!+ټ3ĩGǞ#o)T|Q0b.Y`h-1wpW4  ա^L5Pldzn{KJe[,Kjx/ R_j #>)Ԛ!l"U. bCʘ&Ԃkͫ;#ee~DH@Z2d ]N4]O6~K~ F7?e{_fq]jL#!"'솷*:+5CЩÞ_3``n7sbեTÙ^fyo3l㕿"@D{´ߢ9pǛX?f?NJp:.J 2 G v ANfk"|_qsØQr=9PD.¤#έԺ K, א\ϖtLgh:W JN_0E:&#pZiF|6E@ސ |Tfՙ!;X3'I6;k-(6 e1íR?.-d_f饷YҀYu|8 ,ȏ;Z$pM0NMy[T/ Twy+$_YUOT+pec\][ Sl>PDfSǒ[Tdqa!GA_EDN+ AkSD'tTqru2or#R흐D}d %k S3uw2,TigWQ *;'dFdp$O_M/.rj"S]'6Ht}7 y|q7,o'x^Newa1j,Z(*ϞGG!pUu.|.μ.%vՔײj+1c΋&=ajf^3=RǠ4HrjQ]Q}ӠļnHN ]>aoDՃKfآ5SvDE WJTvs0.䧂M13~CrsuNrM^3puW]BGއ=߭EV6uMv3Z:QKkHM p Yx0ZYh?ťюN!$ c#/_|}d%'bۓ-[ű[^]seGb6s : Ok\<8@ξlP8* y#P3\^_M%x "" QY]۪8:"G] (5MM 7톐B g9{a}r}|cVSI}F钮#LC^x6&7ƞ1Й3.mc `0^ ؜2p _Q*n=#'C ]IJ(b l%cL4agE9ͪ,r־f[T;w.>'mq"3l&zkTʏ1q:6t*Euv(R%v{L ! Y$oCŨQ{_4#hw?;VBi`K8h(dy'NEm&"a924IY#21\l2Qֲ'P Ggf39i/鄢 GP[d0esp6ieƯOsw9Ns2DHv,XRV2[&+J5PF&Ҳ3f }I&}o⳺uȠ++Z =qb9k; ޘ+ڈrPjC]Y6D#8JRgֶ¹:1+$^y" YzMYF 6<[8MlM=}?$'S&"vd;Z8R#|q/hͭ!j<̮nReʕh]%\(U D8zB0/V{$+s*UFU lɭTB[{phhߛm?hyJKLm [\Ծz#Y<^;1X3 ۡ=N`N9N=N33&ٳ-n+SHO5(esd |"-Pu>1A_ nwޣ%}]$4_6h Q$h /{kv᎖#mr=~t=p ~W6Ry=7' JprJ9|$B{nvݟ\\Z߭G9j*j=S* hjf9@ s:DX͊R#]˸Xf+y&^LqMửă \gË0 +FG`K=p+?ZѠf˪==mvzӒ _9Ȉ݀xq<]-bks ̈́v59 l(_~LxF3F0Q-bg9okX_Wfl ʠf Wڃ/s)z0݉Cbvs6Japl^X>f6 >NM\E'ITFMs A%ZV]𬋴nO/ߊe05L0ڮprLp'^-˽_S|$~º+$bmE%/%# ܈L4uce րlˁr7hM4DFgo@e}͡W|.0:jߣUgk1x j/J8$`0&9aW2= c] t պb Ls4*,ci;RPQ pVNyg)n-j-\e|wNNr~~;B?Ps;yR͖W6&q,t>@򞷆$0;UWT)1ྙF~l}W_=yJSʣvk]ROC|YFS7tnًڟ5s ukXZ=N\g-0 t~N:e㨧(U ҟ5&:Rt uP6{v2>1P 2y"J$VɅwQ*QHbq#4%'2&h7Vgˑs',9oL0$>y98ˬ7bȃ{kSa&52¿6H)ú>ֺ(Ћ~[5ԲXb8OJEwM_{]{]: 2eBӛ5z^/~3:Șf6X:hF-e1#550"ܶO)vԙ&6Wk>[Sj>$EspoLN ImSɭB,[Q k[t@6Iro1/F6P)J&}x_G|Oпߌn>W2^f?>yV2-JtWp{\tήb'$PwNJ DMI> -ǻFh: _Z-rO;jYX(9_iƋ梮mHc cdOhvZjILm-`bPE؄9 :V%?SiNOvhG(o<\d|*>݌ũHby#@{ˮ0I%  WcȈ= ]>"|(.ӯ4#lˠUeʀԎu\jGA77 7ͅff !avzNϙOK'm忑sZs# iӟWܩ_{(`R5' VַF :r|q e͒)aumۜ \u8-:"X™рj Kaz{.|TMC%.G cV0}Q݀L8Za_AjUH)nq{. Gdu>a6ޯRѣkeFYfUvܢR;ƨ0ӲIy=‘,q5eΤMSP I/ ;+ԼtTGL)į$Y$R# A Ut{++i@yR)SzF1[P˞d1y'zmlGIdV ;0Rx&`>>3hOb༂Akf5R&298Q&1[4Gҧaq|*EkSFOI0|L kްBP;bM 8]2C.GWP!C̉D碘lU7J7 z[7!VٛgN|Y8J>$4Ikݧ=]&!3dV &ڴ|MSLqģED D&NdޖK.cN$" .O5GDTI}}_˿K~.tG½19GbBlLG=zCn&C!nj/O:m7ٯɡ%ytY[+/˱**3I_͸I(5SZ{alUoy&wr˝`z}(q"O q?F_fӏqcO[ ^m_M9] V~Teg'Mvn狱f?W"qG"^%pNkcٛx|zp4("QԯCLI~<2kKGUNdӭwi;]6#3*eUh iIh :+~E%L|Y&%sDvN5tN32j*ۉtc@4ƪ z^,hڏ;r nMypJ@"uS 2uIjzpLGv%vn#U$ $,6}K!]`}L=tiwޛA2ϥ<,lyhtxg,IKZ)-m+߀ԇ C:HFp%0y5ܬц^0$l6_h  74-quIەF8#9w'W  5.;@UyU 6⦩`v!G,ѩRuG旖鷙l~%GQrWM_Hb(cn*z^2:aH!'UY.6?Mnm.ϵAo}DN6;2[ZKb"Fyyicp 5BA^ft3M Op|Dvep>KG WDvqW"% ,qubX]'fP19;\ Sա2aXvPkTlM%U]Q,CAQ~Ut 2Tq!4GYV>q#OV1T{n*i b]WIc4٦`ktٷTxqq(l%Kɉ*Y^|Rpj—% >ǼOǪiCl[l-f1Ԡ7MA>l]Ѳ',l,7u\c ;t|O_빏0[ لZt6kY/ գu^y)KnH8ɢ4ع3A8|?T|S1 [,0Xu;-1s;/$|Îdcο:d .ujUŢZlB y ^IY$33/13~?\32VY9kF}C " >ғ<|\㵇4$Y߭;U'_d=s =NnZj.SM\Nx^Hs 1SE̻myhDg}5{RAq&:˜ ,v 4S|\J7~VJP18@iW S ;{Nke[-/\1&(?57{DW*ԟD[j䈄oY^])2}ƾ ^=뇓&cuIάBdBCb5if,mܬ*ίQ>גp*^6(1:HKNeꒄȷxnT¹mhi-oݐ@5qG|:Fd 'b<Oy(PǨ5 nE[F5gozZ(TM.@vat={¯{W\@vIfx% Y9mBR,AQCaN5WF4[GX=lu4^C*B¸8k%[ƪ`Kx+mUR }Х,S!N-0FJ8kLwCui!B(?Bf8) (6rfj=i{̆>4>QmHn3LtQ-UnaODl佾 [IRpT>#WgZj]o LqP L7':%Mg]d,pgARZWw㩵$ 9e+(;6=)h׏Ұ:B MeZK m v j>  bz<Ո|hp92y'p}_M+!8]I,+|_*^I+JMlUvΗPBxK# >w /Y,vzR6?e{ySݏ55Q1]\DݢIp)D݀*3EJ ˡUFppB7mr倆=F|]"xDVs0 cr|);təD4-XJh YǑuL*>Dlm>%4AO?l8%H*j_?K9A//}Hd~Zϣٵxak5E5n14Gg\9Ռ䍢c3_nPp1.MmrK8h& ʚESIWq4AW\ӄGD!-wj\@46F08'~+.6/z.(Y+F|ӥ|d|2YX=7,,e%rQJמw@ bV"[wYk VN6{Ds@wozBGX̺H0@FDE[m7lmAAEd$=JT֪ bo*ꜞ\Ŝ0`/<@ e:S\h@||yj*uw$TAo>tםU&W1[`Tj[+wzG9d*40Uh4<.xW|fR>cd"O1g_/Y-2q*#9z%̬A7  e,W( J]J؃kARG")YSrkړGvr!3I V>54|Qag$=+S*@ &HZݳ>O(W0ĵ7AFa|0rSd]cہdf;gӎ.vXَ[L]G4p38;;VBc >",+]ƗϳF +֟ pJy$&jơۏoG`4O?ao%o~pO1eOMI5: HՔ2C^cLΖ5h9 g K$-'u< 4S_*tKk3ܶ2;t.{Ƴ@`k èL'Q蚆+ w; ӂNUzG& Db$2"wt8絗|AƁyOE"E:%lFRwGB bh^8GCyij,P )mm{ Y˷aOm:`;;ĭ('~Ky ~v ]mb*setPQ%5a(yZ]dӷ(L9W5p?MWlP_vԓ>.s?O)h7O%h7Y2@=07E\~_SŬQU.(_Rznp2f+E[w?u!BHuxO, ~'\y>&Ta=Ox>JVC(ʑYf]jꝈ,- \rNOoE"9bٽ݉,-S.K3*͏ -vI&)C`yee_װB/[ +ˡl-L hˆII7/?wٽ =(tUORa'Pf.h @{/=)ԓ~;H,2EVu97U타S(=JKiI%-.9]@-1sG]Hs7x߻a˺2K^O؇tUYŲJdd~b(;;X.X6ߊv7p:،401.¬򧘓ysOzt])~{yD_%O?VI%tUJ: *yQG4Z(?;U~@@k2ǻ-)YĮCXѾ~Zdxư8mt SS  K#, Ŷ(RiJ'$K^KH!%y!49O;wv;ϗ?@VoU/ꂅKzvե>rmC R[)Z{!N,`'˧_RB En5BE-iZۅy'c$?؝U5xz-&vPzTX)GTʸ/*Є3WwRAoHұ٬/F<#LѰǩ`CӴrAڻdH*I#6P'C1n8lZfRR9iڄB@N^ } > ~}:|5vs[H0}pfUY' 0وʕ]&Si%+$5k馐Vg8>S;,Lޑ\K{73}8 ۷Ҟ5C+;w;;H=Jie82[W07&,2It|VDO pe1 ]H{OMڼ s-ls'>Yٺ&_a2Gˤ8E0 U0\6?%KU٢Negl"pld[e5L)gg#pWC?+nffȶy`Z@[|"?~žt\Yiꮆ 1 X;#|r +Qg|)oDU!'M7:`P@z8ڵ$J89eMh!n$FȈdy35dpdqM]ˇ}7c:n-V(.AF+suLZNaٵDz/szbYc(Z7J >+͒! +9A;c/` 빠cmЙַۗq[./@DBJf^ L 1K:Cvy7d=vȘR QjIfmǢ?mR_/{3*:OGEAQ?w0*q:J]vb+؂+6c{Χ،{Tl#,EI#eJPeS|\Vǻ ꖀ?%`{ &!ɮ,-?}C0_C}1`*^:':g4~N(4μ{9 ׷w9{7}̅sph=P6@wrf}/ee΢'?یQ-)~L+}_k@ 2nw~Nhwfp)ħΠ*qM uě#VqR6W*1lE,qLB]% 2N abAЅw S&Ta'2ܪ9nZ\gb4Sns-q ʜQMq*$lύ.>\{ zbMW2[*L"4iW5G}2Ƹ,O0"!s #Rď$^J*naG!E{:-?Fp1ӽozxԡnD0 J&q;+,MW+mhVwv!C|s<Jң #!gL^~RBk$3Ph:.ɑ40'!TEM3!"ݸ8CW9> Ȋ{~J55VN6z kE5}#xW׮cÅCg0a4!*Pken$ 3p2Y>Cx5&cHk]@6/jF/x_h%" |kϓg> jQ^MU-o}kO_[^ۯћo9j,B.Pj1(8%Bmw>B/#G*Xf!'6(il*1@Q 5N3`ΐy{ |T //yWޣB'pɍj9.~]b:30;J9͐I0)3J#%ܹXz@̇z[V;jI}doUvLHAV'䗄dX5/76W7r6,/h-u=>w\ *'e_$m&bׁu$gݸ'!& E5EzHr܏Z 6 ML"sd0zE4֯ɜ' KUGBDcТ3x5RE`y[x|r`k}ii˙v\Aϖ!A $H>\goaKۮu<$p_RBotB.̊m\E;:n02/˵d9TgNsTmkn)YG$qR~0,sluC@huqICb%t4K'䧤#pbS -K6d(#1]2V;iV,z;P2w" ߧw K͐ݵnSB)ʳ]wrmMI]쾆|s PӖz' SƫKVfx?,"vOM</Kڔ1ّMj?$ld( :o^jf&oiQqỏ ^aQ[׸OgY3_ReU ~5F,LLwKUlvFayAɝ;&7:ϯf }\K<ʰEԊ\4 9A!*^vEkhZ |~}y_=臵vԂ9e\w=qq()v+§%/eϼG55϶/71. &Ө {έ N98n5UeNUfcUY0n=;[kKy)/e[9uAcFIwb&-sُ_ , . [{6x־.x#H8K{1]NBSb XA|SUw@5?g}wPn;}[Rpn4:5A I3[kE@[ݝj+4 @<{OW/ 3KTڰU$PH4ca)4rћX߈Ғ?t<F&axU"ՆW!$ft&=njF`Si=5I\]lb9 Oa!B qiRnƦ[R+ֹc|rFM.޲#†R%{m=Y Ι9k#S!@Sf,69!>hXv.tj]n>3M(5r'hL"7Oq]qmgm 8OU{T{TI28>禌ܥ 1Vl( Qa,jbm 8Ldr%NF^ @AA*RL"VuV./3P榆[ņ~5Q[D!mIkcܰ&s*>~QcE m :JCs1qf@EIE&d<{sYҝ tiz0'|2) JX`Jl~9a`/c GA pU,-YPbzlsb"L#tȖ9bi6a2 01{|T@A Ysx-C&#թߤg3#ɑF2{"#kKWsXl _G} +r?de?܎wa4?4qn tW07 })KꈡR?QpC6BGL *2l:!}azkC,N|e!iI7-WOU]b2+W2*22vmhXgdQtޞ1!'lwB/X^3. tahgE%Ϙ&T+Ͼp|/GIjDշ8t~YoQ;Q A;\ws) ]Fy7k èL /cˈua~@*'uvԶ_zE-8v7|%mq x?2ue^HGAvP5p9f&qOmb*[?EF[%W)ٹ0 =7 vrÅ5in ɨC5;kj.Vծ?[RI{'lzy# [fOۢwTFA{3ܪd ҺMvgȾE+!bre~MeYy0&Gda$69Þ0doc&L/lKBVq.d7kRw"&CW0DPAX&N$+DpyE} pcS+7H~C]Z qr@]C/:^/zqkt"S6},{7+^Mf3UjF +De~ '۩{?D]oT.eu涧zCS9d{Y=/`Q4kB3k^xke_ i:T$.Rv~Rn#-IyU{Iy JjM}%)Tyֶ3YTQH- a[4f,Q秚N,ҙcCr#{:]jsҸ~fzZ[}`9-7i=6[%" h87v0׭][@@n7<1_L),iQ;xI+V"Y.!C+*v7!zUu @?2SDo$=Nq٥2f;xOїsf\dz*!m(t:hd.](glCRwz&F]-n`w~jg?EW۴d%/|pMVP[MC61'tr=A_=ҫsݖsPf9Y1?oiL奆F-]".tߖ)c.xIa҈K4;I(Bth~┆*pOzGxGRkHm i7,պ3 ng1$ͼ)Qي L착zܸVd#ݠ4/{&n Ž6l 8-BIcU.kq4(ew;B%GVKQKrAփ Q%D@w=h>T*% kpokc:P}X"C9&MUu m@=cP )H"~q5Kϟ'UxOU%}RY#zPùu!aN܆iR.2E2-Vq5owGĬ"h?s`Ä f>\ ܻ??eTb'HǮUxP]₮B $^.c8٩)l W`P^1-K㹧ˡēEdaq,63 L./y8ی6QJ45RJ̖d$fC_g#ٿBvCˢpGcC< |q?:wXf'Y:^y γQFE>}GS"(<%k*0,ZN"WeP%Xi^ SnKf*ΤmP"fc3Ppsָ~LֻZT4reQ[-?1T8 Y&&Ē/Ys Cot|ҎԭDu,>XRj-rHυKL:, eUba50 $~nu=D>g!}()niມ{ko ysVI[wù^c:xKzGRΔ[BԖ,.bS\zb/2r~̹<8aw?B?$?,%**aP{"hp9nȁUR3 38~]BkX'ϣ|}F<̈3>MrSQ^ⓐh)(/9AA3RtޚO; |g4;f3Rڋ m][Lo7 눭m s=@G=2\xBca,tQVHEbto`-XU,vĝL2cn0;U&dj4 79kuT𘅉VM˴QQlnɍ>ib1|Dbދؼw1VW\][}w;X[$ޖ+7鈬 _!cX%aTAJ1 ܝR$!Iu#,R["[iZ'sܣ43uZIieВR{"kevutHrO<2wMczQZsdd%zdPGln~n`꒟ad{})f WwVPz 躅˙<p!HG/ |s,Cdz L)ڌok^tfw'8`٧RQ[˪2˳lDq)jJ3Զ\' lQb =CvIiU>7 .-ka;%u )m@x~awd, ׏}Zݥ,rkg1 H 9nf?EqrěI$t&GI[nBuK]P_# ǐ.&:+_ؼЇqpj=mLtFDv}$_WA̻0<>Hۓ&l?л96dL=k8kzNBt~s|-[6^oz4L2Sk`80k# 5Bwx7_w@ff [?&M{4Q/yڃl>Tq,s_<@.> d~q(8Yz=7l{߳韓0mN%a=)= A?"J+2)e*\.Egw2q[YlkbZC 4Y\ EXljt<)aqF71,.h|ZE ټiOעKq vX.buLP6 bڔ*λ4&WPr!OzF35nuL1D^RT"ᘔ$OBqP72Y11pHV(g'҆yC G֔.0ono G`EZgeݩ">~2fl@(DghByco􀅐r u-(]Y/KӺg|2tTJ~bhOˇ9}UP'̳QW4{'UƓ)_U(GLgcǾ_ԉRyZ2(Z,s.#L7RAl>P4Ve_(t}HHDK Rz3ژ}Cwͥ@ԬП~ 4W7)˸]n\h[[k?v6ဵ(t,lЖt[mz"ٳT9~T֟QMJFCMb^Up.سIcS(vѻ_)mߗ˾Y\;[Q]n] d7wV8O}D`jh˨7Uї װ,.QX{lsUƈvEˑi.J--e6plg-v Y0>w4eD{FVS)3K7_Cϖ퉅9T8"K ! ]C sLS4z"b.#"+҆>dڊh1^: j"A8^3謊8:*:*:x( "w@I @.Br_;t:gw9IBB@QLjVmm[{ESdx=YLA5at-Qc㜅Cؒ+BSi<e{] Ȥu+%7`!ﲆ#9gIFT]$_^OVښZFiUC@CE}vA7D9>.fev젴ovEiz!.27YWlYT]`kjqgLo`lY:cʾEri$ۯvG(6Utf ̷E~AzV怒(ݯhwbT.B*+8{ƜI\M~$ H&7aɴ^I}~܇3w<[UBa}c6*R2ݛJjmONRhox% 2%$ UA.-m%8Xʮ#)@GIŕ@ɫمE@E`b q{|j0sWcji{̝Bg2 Ϫ:G&gQ38q{X,vS)6]!>{IGDF qcD5G%Bˀ=.UOdm~Ieoc~!gdZ }‰ 5gW%pu߽ 3b䳂3{$7{+n탸q#9*F/Ok qse ¼xjHS_9 ^h ޺a{̊c=~'f~I/Ckxey^Mk9O6oZMߌ388 >b3DӗOfA#:XJgQ*)*rv .ܝ@ַYTqj/+Fu~%8AJ&+I/cvҾոͅTYD 9vMI1(eC'p\Q NCqQ[W91ōH)#jIw!iv,9n*@Be[J1,H*E d3w8|zّ͹Xp L f\k/XSOkQ7t(irH T*e_Ty9v6r}MrC[_No^n>nqMW)pG=lu<µADjxwCiӨYȞLOoE Է_H-pYr|?is=}ME|B&QRQ J~P?xGsMMwGѺ -Z!Ǯc#S% keOq6PZ&t on&f,$G]M-2)~TgGεsntÄRƇ@%T e!Jrk򶬲˥@uЦƪ>`mmO(VR\WNJ@Ch"c=ƶ~f;h,ˆ̜T_"쇡`PJ/\ 1[J)Yw.6em@k5>gMCٝ[$cG]I\"2wKs!C+$n"Trj3f9 , Ks. gwJ78E_;E,!]wJ}$'| {[;hmGi_,z[IwhuEKxlyfa!O-x˙@$^mI f "0t8#6^ m_l} d77=ԾC?-_\O1u Pw|2JYL,W{I]&] *ӆɲrx{ =ƥ9 48h|Ѧpu5*=ȿ~/yOq ZqB>NY\ahsoa {d^gJ̀&(]cԳnZ}v^W5^INֶEܐ<&a-@ }QA?UV_r ssؒ2lޥBL'ioPG+ jH'o0oOTV֍Y RuH h"REJlnZOD U~ʃX9Hg?0T;\ݵVg Ot.VښUY($t `J5~an d d]~8f[ٹmWp~cƗ8-hȤOmnfT+`BKW9RIuUɼ".8Wy{Mܞ/X$,oSQ,J)OS#͏G0x-wWs=PFuB&A gV7;oU,((=A [l+קPg_m;cbWe%YR t98px5H;鹥A"KXaG^uDXs\X26/f,H6(1FFg"U5]%6#.ư*\ks wi0@1yzݞp&:;142m>0-O-l GYcxk{kKC-(rE\ZA3-Sc/)ym5#y͏sqΆ͟sUvo-ǫް厄< @{ZB>KbF@Aw QY/m)AfζHӲQm-ݷQ8l=ZK9Ƅ$u~_3,) YHQ9~Sd}aՓ1ˁc@SM D ꙴ7Qy__:_ziFYrzHTQW<hiFOֆV@Kc/n?G563zkK0F̱ɓJIzFscIzerۈ# {t'}JӁy;˚'q }^}l[vu+;qq.*XS٤,v!Džplͥ R\w0i WúowW`Ff{nkdJbl=/9@~tL! vI3ڎC'G YG6 t^*Zx^FުznFjY!*~ Y C pZ 6`0+e<+X4EbkOP|s_ ^ ]5c7S7?=N}oV:Ե@ 4/*lmE5&GP weWTW%:Ρʆ*O%̬N"0 *77X!L` n.rPhqeDU)SWC -85dDNeHBn+ѤIMU)K LYaLACR$TiV+4{~m6B̚;Xs©-?$7U{xf~#ҽr 5v{Z0n$,w5uM4R^ ml6d4Vv.:aފ tǮcZ1ItIhO\V0-^Eخ&eUfghZP)P`/h+c}77AX~AA0cc 2Ez^3=!$ϫ9G&Yl4s༉mcSsmf8$'b4*ZЖ_u3uf@D2bia$3.kI)oUǸ]ޒ }sx٦ pO{Kpgqo9cm&z ;I- N<|4kpE}3<˗/|XôƼNƿJFOYET)tfSG('xAW@1 IʰE߭)h^فlp%b| )Fq)<~-:;AB~Wr aY?S,)NҊa[v@g"cZC$-SG eK/0V\ڰw]'ۖMEګYbbK; U:Z_B@*JX}Z{-ާRM_Xm̛/&dgrDI׺myC[Ll=∅JpB︃s!gx)piAE1!(O[Y j-.`.A9l;X{F.璚^L=rE-dMimK-+=vwe_wi m‹p+O/ЈDC[@P瞶7n3jdUŢ v)3z{e.āPRgt ]mmj˴×EqADʢ8"€ÎasBVC&7{H A,3sڞC9gʏxyZ3XV.ŜFf5jpqsviBW4**s%6NǼC+E[xaǂB51v1 _xIu:`Am%uʮ(0&WEY`ÔY]|ҒG\[+}bJ6qp*9X1~~-ȧ(J/M3 #Y.(F7VNV~5pNCNME ƐKיZΣ1O~ LteQgz [z };w`roӹyǡ8y8Lz>Ny<CؑJ;hBڅpQr[VaWf|kWPk#?At> mmO(?'{3Bo{3?S_;,M\7wWFE낮Ngv"7N[O2,, [ak:$/OG&6@>*fg4ZNYo.dW6ԃ6qeETw-$)9o â+&@.w3&^j*N5/F;s**" ]o3e$>Yp8elJ`}G/_/۳/X49 xKKʺ geGQ 3[&.>,6F3޷-d=DqA.`6UY֗Qx?V"̋{R7Ar!Ӑ(E|kr2Q^-BKNа4M)XP1zft-1sxYO Jm6䥑Tծtn!ƣZSDDIG{)>DCB{+,C`Cdžu PpXK;؁ssodc)t9F%ydd k\q Џ4'k\6!WkI8^ II>y+,{~g4lص gQqH/԰0o!=kۍ/eCOLOdP[JXc;KI2L 7VNCAVW/Z82v@x 7^';u_#;WVOD ]ILX]T*&.p;E}D۱nvUB! qZ==-`xxA+y c w.zɁEA%a ʘ6"Lo Ƙ?k\mMWl$17x?d"{٤>v.oZ~=-^qhe1 wS^lE)R:^s}1q+BGJMm\lsV1Ѵ“w9/3<;iS(jᴭtUzhC/!xYK9w^"n"A>@I(HljOӖM,u? ڙhָv|2}l8k~T[DҝT+=|| nl>1-dϩ$Ӑ!T4ôǤa3L^U% Rgr98Y`^ƂU9S) rwR/ܛ|H'Įi?4$ʸ2l(1|8w*zòa}C:íp|#ݻ ,ZIx[9<}Єf|Xz.}%Qc`%&XPͤWyTA)yH&TU=69oR̓}s:=0&8(&Ro(Xz5OT<1UJ6}su)yt oi"캉 6, 6^ϻ OWD扱<"U?<;27&-+銕h~⽏3\]Q4kWr"UA@""X Q`C0;LezN/ L={j>$,9zegU3k{Y-bbz$`1jrZNs=ORU"'㰊w#0d@kwfurzdn;m| P9tP$Ζ'%3Pjl\lvbw\/Xgiff[Nz 6 Y9Ӆ2L#} `£֊[*&{[l `^#0]w-@2ʼ6rI]ȷ2jrosYKZa;pI\yllzC-bu)j( ezu[Hs_K/y?WиGܲFׂ"89= i{xapU_Y:|5B}tȱ;3Nh ]F>OW^k#oe/rjUqc~F,3W#YE\+ifh'M q6mi!eȷ}{j]2ZmyCȘEm B43{,^/zP2BCsu]];tE×ڳۦ5 $M*# Z9!oG yX%"gJ2_+|*g98cҤ[N~^q3!8C|NQj}806Z>1GJ1^v/͉ܚǭqHTC VBh,+HPgjk):sShndGS,id5n !1BOO *徔,L)X"irB'::g Z1_UR;S:O_TtW*,NdMf-(4`am3Z! p544([Uݠ!h>>N|b71Q ʅP]_Lt$@ D.isn%{u:uQ R]f-.IoAK BFNv$'DϺzVD_671KJ S+MŽ/.q3"0]#%5hi8 YUJν>hoזѝ}Wx>:}ûU ɔCzѮ~Yw\uO՜-M8Ay&'Ի*^@NTtKd~4xf_Q.*K}@pz=!)׬f9Ѫq8XE VDt01rY=*ͣ, Îr%057V nkpPCp`N:I[ W}ۈ/K!*ee2oRq 6'8M6N!R5jVסC8ڭX}oZ_N00h-2"DFDh(O"9 A.Ϯ& Uԣ+^Qc.R.RDaRBMIOH̐II&a %$-gs|x<Ϧ:$D &`jeJOV>,\u\ק`utgz xًM7%=%6Y}}s$sD,Qg ? |x0N 8,U 5Ԫys=fuL{ ZTRVT F掜F?3;(,xB;b*]v}ۛ#xY~'a##=?Hz z}'0'V>|5Tgd3)_(WHfLM"ѵM|-ϣ&a*Xw1s %[@A~K-@7ǧ*Yku)`>̾Oa<U"8*fW5x[V1EN K.UYo%em)'DػC -g"+korR82 ;k23rhG<%ZGñ +6:|`ͭ+}7^?wW{Յ2UK^g1J&Bܘ:ktW'7g#.mچ޻F brA'ٵе ZSZͦ찢H^zz]fxqlIY(-v%UȜ?F .,v6㘛fNn"D D<n9 !Lc&BV`:ym ͬ $Qiˏ0tT%c?@$2.e>wy!c<_z7!-a_G ,!Y 1٧R6?R;:f⏁LR6Q+ jl9jvyZ1*W.1cbHeqo+4y x#v%\'Ԕb`b:kmXA"wd G{a|ٔXÚCog ) V[7iɎdT\eEyVUu4,"kCJ&$yj2"u4c`Ֆ` OG=qjgÈ=@d3)>Ye`/j*HEË4 $Qe4iUF}wmJyzf /IH1_Ќ?8z%K]V\1%*Z =>opik|Ћ]&Q*@RIBWfLOTخt< "s ,7As&|) zfrb6a -NX ){j~ T1Sw!]G e#d,? m"œя ;ii:)D1;ʺ f 3E;0=Juމi3e~ym.O=,4yaq5ykw3kqr&U.r#uĕcsC=3F'P+BWGLIC"I6p{8e1צ%M$Ҥ=#9v;DW8nj@.11w6 qb;&܆IL1c @zZ]UY$$~%w3UbS\eG+SuD8B:s_pB|w<8Z݋fF'55}8XfhNh ҁ.܋j>Žon+vo -H`k/MKKJo :IF xQ/@ҳS#pGRW(·Гo[Vxd3?g2ny0쥙U&gʪYuEIZ9t&"'߳c,ɕ̡JD{'[a +u̾fz8#e^|JpKy20{es}4xnyH.oIo2?{qՅu¦gd7ϿH8~B7Uopg#8[%II;v Gwy<0O4^LõC+u:._c8J(]oι;͌.ϼl,IMP$م@Ps zjy^+%~dZdI1@319̛H&/z5. 5P/vݡ{ƾ~N9akwFp0p@< $}ڑ/{uG1<*[Ô?0 V]ȯJcG# X"Z`&y-;~o ًhx G#ǔ_r_gUI~yʑD%QvK4G\C!bm!A^G(^M\.9STb4dlgC"1hZ㫖V[E^I|e8Ė ۪!a߆ͼ6HDbgkwqS tŐvQjt~yQN"͡(k6#'mMcޑ:q0}d?LGj}@@ɲ4և*z$rbR/+dC =#=1./R*6ޮ!E_H^&.$2*+\:9(65lCb3p3 *I؜SK;(&甓6FHH%Q7n U)j" ѯxAԋXM#!=F^2E~v!ZBɞ_ X#RAЩ2q^}@QKQq0plÕލ#[18-Lc]ot 2y NM|']t=V4gޔ\I8*?T`%`B%ZА泀Y͞4o!?@0b#ot\AG!-&GHLVQ:z0v4*>[RBYK5ںkͪt̺7D6Y>>>텃X8tXj1Id Mi83}5֬bnR4~ 7nxGQ_snPŨ󿧥A}y|?2TJ:9pŽliQudDI[=P*Dsam?()'/)$ W Vk'm۬lc"+ Uvj0. M?֓GTؔuWYܒfvY1(#-E29qnH?Θ"1o!Y[\/kR"lHʋO  &p}+xpowsP5RR^2}j"Ax#:. x(⁌΀r##DB9 9ѹN;!}kuO[[_j 6^?{ óu#19wps-~ ?FޅF8EB1{ Xev~m$TWFLCgZj䪤>qc.p59/N~ֱqrh%j\lvW^  AVhIдfa)i{f!yncf;S1*yjjJdi-MR"&86?H( yY&~rF6a6(T-fļ.DǯĀ}fv]+7?W4WH.l_2*IWOZ }eJ'W 3L"YpCa 6jXvrx's'w"Vp6d}zXOtQ$qmʼra4冶=alrUJKlڊ+i`>"Ž)əԷ'y.,FB 悼&3wXKow)K\OxVza͎-f.Қ2D`Y0.kĤΡL3kBxFWG6?K}AMZETjU!^3; S& !MTJߴѰAx9|f\#5pe'S RF=eEybJZsp@xDy(˪$5U$>K6>Y&$$NZ{* )Dt3gWn_XB]Y^M*=aZTL*alx+˪ v1̥ĺB#:> znBDc# umz4\~CKY̭ʡWYKgd`wXb.;)ϮW ReQQ2⌋`jB)@zr{OnzBMOIHPG=N7{Ξ/X^<. KGΗMj A]cSfl6Ie>fxeZT TjJlxY%3O ȠJ[[gexФPv|yQewnӞ},я:0 TW\)QڍLqf\ӦW5ulW6V RwQV+W\[f7wMŷY1F뾚xaOVßQmB&,nqrSNoX$Wȿ2?^5Fyq߰S<}ǁpz,ܚ ~"%@V&3lVF.J)iߊkCs_K'ƀ}j9WzBl'L Þ]%;zm"n8Ă|f qWyI, J*#2ҤnXT: -] W-yvmژW9A찠5xu1LW70f5uLdtd ~޲3:ɧ3HU󮈣IG,cqޑǟ9vOܡ3OAaW[BdCp)uxYWˬC)CZP/8;n8v$y68pFa6P0 FBrMWk& `%+i"# gUtQesKOkW۳b =@mql&,9- )Z-fII@DZRcg@CD9*J[)2#t:Ǹh՝!<&g㚢)eA~Yh$(QY `q=(baJq O M\a;G^kȆ>o|+j? \{C +Qf]ȸxt[iJ=b^I0Zd/J/f:԰:=Z1Sup`G1UvTxA[[%p,N|/I zfru횧U̵'4QȽiY $^h! i[ouiɷ+Y¨؀LXvNumG2!Zi/ku`P:}}',(1H\E:r$EO(bLGCLdǙ^i$},1m.ҟ d=915;W2 ߅jqջ@wï(qm8P 欑ax]ָ蚐ȿ#"qqueue]Wf*"!P+4ֹC7"-w:aE]9wN9|)C,k4CIj›ao,uˆ_lB_Y͞|LivzHZ2Z- b\[~Z{1. Wpc,iqJ0%..97L"};|iX/t,[9AI;kyKtz늿KM} C(1gف#sχw֣I$yVhkOaLskZ5|i6ǾFg0zY Gp=L0ܕMx l` :gLd䪍Kwx_EU镼D0\ɠ5ΛAopg+`oq\媙y1sF+eb=5rdx|zz xtȩ@c$"z6XݿPAK)9qW+5[x"81u~y0Ʌ0# )C Qc DmꞖ*o~ؗѐLcnP@9t'@?v s$rF[J0cE+'#:VzT (_C{VT9-OzJvlG +j^LaQĘd۲Co>8NnWx)sq:vh,p\ E` +9=01R {y]Qj;A-{JGhH>C/hhc:Ԥl'_܁?oO>~&.]D+OQň2['<{u6ual1`+z̗PTf-ASQS}zwv8SQֈKlSz{L[5Yy0m]dS'z祐NS0#!؟.'g<1DkR`Z$Ʒq@G.qLi`*}c⫩XWJ ՘;pBX6;1 3]MdcVUYu9>i566$͝C.W0鴖d1o3頦M6ҳc9j<\h2{zu+(+(?+뀊{J$ĵAb\v4%H+ba#wNeG46s=m7hV;6܈FGDu:*(z"KVL@@$2 I;lV bk^{wox׬]mk-k0о{vǧ1]\Pљ%(HbbktR➟).&>2דWM6R>MP+j⥨$h);==D_}%}2ѿB *o2_&Ee1E{¿"ߝXt_!sN]~ox,RuL'f$6~$a;N,潵_hupdxa~g3FnkXbtqlpG8?&r0c@78>ON~$\z"L"\tM~79 wx?(=BfiN}gXV]hR@:wkAInpP{EG[S=3hY4Jra)VLԦڬlK#b"+f0SNՋY: @Ac7>_P² ?%/dT1 OYkΨ"{$- EvKCM:)alK]vUGOF ĩ4{=.ZaKt]_Kr2#v7$χeAB0p zq٣#\ʸRjzntCxj3G;/ oaƔRS@t_3a %s(=SL6@QX}@.{k6OdК%\Ř2ݠ%C g` V*[ Qc[W[5vM ,rYI A]&5$>\AR\Wѫ:q`7O[\-aʯĆ3s2$p9mm}zWoĤ}weɀx~:Kg?4w((:3vT_$j80?﷕0gv۵8}+AoWLM<<[Es5zsӖ.]TȎ~mLu-Ae1TuΡr]]n9mFzcꥀ%s BF)m#vT|jn R !NZ=xkPUo8ߔifwٱg6zBpXt 4C%]IC3(Z*3qҚAGH\Nɿ3sƈO\-] Z+?FfXŝ`1bhJXhQ~s҈02k2-MfgLn-x0#l8*'qaJ{jBͶj=nf)YtPEf[aо<4G Cʇ}Kt۔jX< ߸k& Q.L>4uE`x9䣨[Ӛ$nJYY#ІSWvQ4d7=>H:gb)GHui>M"$(.T@"e/OLg7t!9/()הw{+◘3kfp]P9e/ 8U{ߩG:K"K't|& ̠`aj*rj@ ϼ kU3u7?ڌ߭o]^K4Ӣa 7AN j>O_AMUEro~s;+"Mk=I(;k}#1h7`kx?6'PH2(I|09 ɜqpP=ǩm3R{ӯwX4UWF[ѿ ‡SwWꤱGTA泻=,`3#uFm_԰fv =5CT!q$Hz%[4HcE%Ƌ L &"eP h|lh"P8W5 FZةλcă ?]vB3}I&t [{ӯ=/-_`UZs_lm+ae٫۞ 0Q}Ӡ-B I[~m)TL:'%mg Yc>྘;]2>}Pt>7UǧƒE'+>f=.M'"tvɦ;. 4`:|,7FuLy[PIs$.<ΎඡM&'8໇\sMeDg&\$d b}1?o?dpxKqF͙3lee7o4TDDExxEPP4Ξgk^L=/l|}e=Z/#jv /]>Po˰Ha18,'-7R Ցj#H;?`H92]Tb6i,Szf[t5p3 j8] _9;v#:4Pp&T)c̓q5`C8~ OUFgV8;$@'Y|Ue7MFػ8,ΠO=/FwdžKZG&3jٷv F4m('_:EǼhR8KdﮥE1.ƍT"I3@S7a=VF~:s,O 3Qc$s_u;žA;z>o`f%SwVCzʌ W0bX1؀/ ѽOq, 3Edp5szV:1X]LMҤ쁩Q><\`|dC=ENA]JRT4hNN2l=ijFƆs SnT ,z!Q`=Ũ  ñqVJPIdzI# 4)O_dV@-cB#~-.g6Uvkt6qa'Ԍrr^Ea66&3n&}E՚PF"U%o1;o,ʈ,8rs 'xMJ'+?UoqwS-g;cJ)Ka$bMQY6܋ Jk_>!)9}݉3aC嘅߲lB !b>y$蹫ن9f-UCd'Jp8 IJ0\aFCu¥<7HQ'b"~sۍy+ʯwliM$/sȸnN@:}J{$$\J-Ý9ΟtH;$ɨ'ős˼ 2ȷPnZg@Y uJs 4Q @"ңO{q%Lhkd[j{Ԉi6jpsɻe|u&,ZBFfh]θDO5 hunTk1 @1a ~Ptݎ?9z+_~5Z w/_ +4g+I'_鎖QڨT?0I~?zW?6(*Ԫ(Z+슲 H !HB[|7VәSuڗyw?pϹwo*aZ?0"J6~蝛}ʷJ7} ?k(B!xA |_UvmC_eQv6^@bx& Of0P}ړ6y8|;.cy8dIb/L@B'TT@& 8bӚ#u!Cbv+iJi=0NES;D;Ͳ%pVS/v[O#O %6M&J J>NY]7L,'c˯8Xfum_ s+ $j紙ǻ8QQcu]:- /;$NS295\8AChW3"ǞL# 2pUPj/CDE ~oMFӰ~\BvL̈́r~dFu2u;8ܳYLbitI8vٺ[hzrjzs:N(iUɄބm?inN鏣\s&]$U;8l47gm;#cƟ25M\;SC{ώJ=ơCWXI:I⥓;Łɓ7^Y{[@{6rF/gWva(>FW娾B˗|7Jb`ώ3R%7|3|lowSV@@]_6]yL!anqU<( $q'W9vlEk'1߱H (uvdI^ r3!g)[mJik7{h#?Ft(LY NrOLVmBUh5u4?C#ٝJ.lZ8L֞: '&>m 2ZofuϚT'Sjt`wEt;׹PkVPP3f d"x10Aiсh58ݛBӿ@AE2/Em-l67DcJG1s T=P`4pp{0 @ٜ8I4o-Noq+ .{L }}ͮO'*ohrU5M~&[}6"*Tkkoz?hwJ#h=Un{V ʅZ _q;0# 3 UY*7D`Ò ^@ >jϜ=G9T~½3Q5GiyЙ~DPo tWj?t_u^I~M["LXl _C}ʍos&(͔ārS™޽s-?r#)Bɬ|<ȝsʵgY''uI"V9]l!s+_r/C;>[R˩4$гՠ|4d(3g6!] *B(#*3YZq "b_}U"9ڙi]C:;Z02L)Ԥ^2%=W rNvnWo"q> BhevEB>+> >x0€qC jܑcYT+Q/c0A?4Sj.AFB 9>Ơs%Fj_4/ңi(6Az݁ M*+;R)Hu~QaKS/Fo9mTD2~2#{}҃$2 bQ+`EAk4tWƨ/ܦ6{:КJR:@v@;GU˻'Z4k -q]XL Rou PI#"`gIJ]sDE&V-y˱޿ԽB&OOɖl;QbeRvQ/-g{%puWIu؄۹MqҤs l %+21# GkKͨniu'!w-[DM*CF"+0SAP+G+BI+ҏ:vSpPVsy9ި!2Jh-kʦw7fϻ5=5>خFȆۼ1YXk|օ:O(٦YV*/QF9:F/:`qݧB$M]PDތj)?f9y wm FVഅ5,D+SnPaxrt|}t^Ao2SiNNhkJYu;-A/72Ixb>^;6B.mȣj/9@QyH'\{gڔee&oA݁N&rm78[K;˻pRJ)$Bz U$=7%wEPoWvgaO(aW a7~&6=O`hQlBzш,}D{?Y pjs^"SڨEn|bQ֢L鶅GAҕQO3\_M'XIE,:"D"(C D0BI&!$!GHB )㞝]猻[Ɲb~~?=s,fI_q|8Ƽ$DsY^[Gѳ6VC9ސD'ZjH%4=e 3rc+n:Ƙ1JRf{SױKz O@e=Z#h ¹ex0-V9#alE\-IQ6i !ȘOWfњ[Sp7zrՏdƶ$YNRw&Lc=&s@ڿs>εѯ3Ì%_“0i5M'zqJTI9HVoNk _2tg'=K/f| 6ARߛ՝6gIopGG1P>ri\"wVƲ61SqQACgyKᰩl*Mr\B-Q7&-ՍꖄFzC7<`Y5V]fҴr5u?mC{:ra`8$k-3k-QY2>%|`26n[}Lm'ԝܗSCWFI *Pg/^j?Zaf(QL,v&c7޹z]"S'ܓ.eM6ҼŸ׶g/;2ܽQ|P>"RCkS"Rlk[:T3ؙݒyų'LdyOLlLNi {x zo_{Nsթ}g),_=jL rUd?.wםeS!ɘSEHI$/ۊ;r yډ ^mFC䋕=|A^+nn ^oN;+԰6dB~HtG3qvvg2qn@>MI'U05*зRn@AN!pM%D<{z߶m&סJ3:4J /RO1%,o Wc(}&P΄dѱNҤp}N7u[glR|$Kkw͹on7!8|N/ F.!B,\ND*$@e>Téotz~Do+E?IFgTr:>H2Ŝs? 3_U<ʯi4Ӭ|Zo|EwY`P?䒏rdRe #FE>Ήk|y݊s,KTJ!EۜHY=MEKCN.N/LBcx_Whb;Yԕ!b5ZC&{){Nr|<wWSi7$`1 P:(]JEzhBB'HH$&!p!.]:Yk?y~{ݑ60) Jp3ք%߲_oI~~j"W?ak?I[vOԃ]_a?ÿ |q+n7F)Z3-aDžj3oJ3frgdOFZʿ,>psf8y'`6פ.rhI)6ꔅN6FO: ΰ'4zϞ(eUl4n /!'Ik!`JiH>f1fFMÁziO(>T;@M: `CA.p3}jlS1kY2%0nIBqpCfkU$m \=ݹ[2Kyinjc6nñ;.+/ 0I嶂߃c(t'LBZYJTtf4ݑnES!G^k;՗spb,4ܜ?~K[S׏~|˩~}̼JpzôF0e9]U 7o57G[VYl`¾HYV_|tu_3g[8 K=Y‚Pֲ%b#4P0g*ږӦc9>ѥ1ǃ8U\i+ZXrSUd XlNm2m/ BƼATBA@J 1{ē&[i%OZ19hs*Mp A͓{uA{kZjQ8vY-}^ԛ_ںڰ0ω`T0U%2\fgYQ cm 6b;6X3QBNW ߑuIcޣ= - fGgh|K:xH2Cʹ(^'jL ~?J&įZțT$ \u#OzN"Ҵ{<x\*sUyi4U*nq*ZJ. @ۃ5DoFC.-)dXxrt\T?n)S,i^UlnUG;gLT0yMT*;ů<^/B xrFNQZH񡀲P ;ՆH5h-;; akКdi`nX[ DV (xQ*祽ȴ.mr@ʣެ Zwq:߰b\|BoRX4~(Q*bz7ּUۘC5e]TLMG09MYdj|,V8;.1p\U%3xY3n"T|$<9b?1z_<-}qYR v.>~ .: Wބvvڹc/ _J#Ň+&MM?h4xR$aqb%(QE@AHQbǂ51e3I5LI2ٜ3<|>ܗp}[史ͦ2I>'OGLV3M\6Mf5YEK^_[wھ ^0%'/5gə5uI><*fL# f=lBW-s 7/t{6Ǜ!H{k'is$td]7>ɗ6OfkuR)Y@;}+Ri=ybabQ78nTg = oN޻e̱)Y:)^.wHXzA;.3p BKv~nD6#^yOJc쾡W_42Yx;+gsgj%Ʈ>J#s X 3y(uOi˜@2.INY4D&[M6j^'[/zcu5W[kՑ-3Vso/O,Ͷ)h΄LqkMI2a0-͌51-k 3rGuN :bmN~NZZ!xВzl324 }n JSAI}>B2դ=5"|Fe G̀X;= xPM {W?,fMװW:UDĝ'3nQ%wqU4_TxjDTĨw[ڨ'xBovDY<b\D-hsmY&\4l|ux*|&n8d[jƪ:oV}\(QgCx1Sf8>"edHF Jϳ[!%þI\U3aԝ:k?z뺙5mcYa/&dh<*?FV/UO{9iy䐆8ܭIbUcr΋q8.>Hr G+TMbAҒ#坧eBt–E:uf7VC-.u)ʸJA5S h͎}<Ɩt45|1H;]CA\nġ:I$AcB· ?X!XLTUiMB;(=$ПUڗ^ P<9$M"h; TH.\xˁK{4d _6ċjlq- vK G"|:j{owSr N10u}xyތ2I5DN3ekFBw~uv+xvytᾌ0PM`b9dz)@RnV̟Y2yap8{?^ojڇy5#z6Y}J[#\ۓf=Xo:;3s3_A3wy+^M|g&6PLg@ďKZΦ PZa}Tu\4[FW'd !.)5N/Z^TRY("20.bǔjbkcZcCkoTfyD Zjjk u@i'@FTSǸ+}T8I 0 B/E`e@\?Zۻv$w"yAO2v'dGTA-zq=TU ֈ%?)BS>iDc_U_urÞRjy'j? x(uѹv\%ސXk)ɢhJi嚩>CY`1 !߫AgQ7|}7MXIsLA>-S1j WǺR6=睚//bBBo$^\:/}r#y'OYC u0U íin>{;vڧ扪cŻɊkT﮽Kt9D]NN}&uD}qnJ;A>ivFc X(`nP,. ("   F]6ɦ.{{>yi4ru+2md[-O%Q Fgucꈣ-Ïc7cס1EKz"~(cێw`i<3Mu7F0X.j|TPUilpZ`om`@^"[P㤖 yjqzGu<*駰/.{1WJ֜jC3͒8tޗXg-z̴/7g/]j*vyȶ,|7xF1*:*/tW91Kzy]U6&dZP(R45#_DzOݷ֨aGiWEWMjXmedS.hmr -V!]&K\ۺq(=Xyuts29\j!(p;j94E ű aqpRх?""I(=J0W]ϰ4)!_Bkj*PACStOAYTzxTLI05x~Ν+GWJ#9JNbv'] Ci3:1o; Ů8ߋA4Uԓ*-]p I^_,; */ !F3/ ewJ|\/6}yAQt)ۿg߉JFz/bAlE^_Ht; DJ)Ecw)|InBY(*A+ .ҽޝ1+]ݚoK+T8$A1u=!z]ykF &qDɞz59Os|{M OQwƐM,ٛd^C9'䭲Wx FkT BA縔b\ B9$C"c%jA<%cQF Q1PH)$Y6B3LE%9As?HOУigLK^R$'Jk!#*rv?5!d/&*pe (B ƚkQ }ZUuKqzu}{Lf&gZ mhг.Ϫ44d5jhcxᶢf#v"G}} vFw۶zI&tM$J=aj2|6BTеQ2p)x2W팂[N> À[sOU@yEPǣoM{oOoٶO|l/#j#OaL+*޿ ŝ_st/gI狊_KS<{$'>)'76s)%6f[~CQXEkq٥%ytg<5ZUpP*ZsS}BD˩ѽͱ@U~<B|3n!b~߈DV}yJGYܿ\'VS8)6ޏX'Hv5e^[GdF@eϴO u\)ê6bf8;5kM߳ufʳa\}q0ed'V2"/l'J=-[ -&ڲ#4Y nݮcg%;.gyIp EIiKXX̺.IJ,{ʦ,+i:bq0EJ 1]C0B2H+@ (Ogٚr(pW@'2NX UM c5?X}֕ܝh- _ge SJUZ7Zt9Hs=E/) (}4Ј{`@ƠGP8X#hSضnFa*6:5[{nrS]q۩6F3Qcã 0w:2'r~{ssL1 ;+ƅt)Qy=cH J'dD!.$.*o_y!y ų8cٴ.xo_:M<`0ȥ~ :&z>_/q;^xXv,Q >(odr/_cY9.=~P[qp{j/毓mʏƎF'j7aP"k:LsQM(dlt͈?JV||i,An> DG2;Ⱥ*˘99mݑ\a@3))Cʓ夦lS7?,?n=I= $ok$4D({(nyItLG[oɕz`A0:ى2ϵe8Tr( TCWT[? UWiT! \\)"D:% $JHH#BЫ4^8epƗyy÷^v4Ej, A['+ݳoR\Z)rܼ'c̙U6wUjZ([5l}R/O߄eЀK9 |- Dr7AwΉ+ +LT1m^6fjjv[t?ZFg 冥>͐ѣf q=F)@TH,GwIntEj^9^|bܽku M{%| {."S/&kv2\hlo~e_k2(\g%Z+Yig˕!f^f;H!nߍI"'Y+iQHyV\(j(t.:L@ IGRf#E!+W $DUbrb؄OO-&n'H%^8xmm7w{K#*/-c[ ոKP<aN\k]O,Jf%ѾQFѫ,4 f6L%K\8sjUhէܭ7#-~[5$Z #]RI;wl|~=[temZOw,z~ݸR2-%P /B$Hm`wKr8%eoT;K4[-ę NZIsNy5AI=! | D\ >F s]m4EXBu't 7n <7Qy@x 4p-BKPW@yz،9&.3}Po6We[cBlbT`vCb` y`-1r $\zqozkcsqlE6۵;`u<߱PE)[YѨ \kڃdxBdI_eIڤ mM.wG",BCeSeIB(F,qA$9h!g%diS4d;*!^)g|NJ1>'\x"OS9ZR?蚩Rډe).ӧ&,7y VhD@A6 DP6APd'J!& $$$a!-qu춵{F=Usֹ{pYGZ- /ұ4ss`Qrs ֜?Q|!M i' +6+]f:?o7ynHIQB7) $@7CQ6}܊h]UdvKHBhPpYI3I"FJ&IBJuبAF{^űh  ZE(=7/vׂwM,&^m0݆g_ࡃr_=TmcځH}u'|E$1s>Z|V/u'{Ik)ϸւg^%< F&J-mfXm7I-a}q@(% T#Dj 2)|S>^~bnK;7ՠgy/ܮ,J{ /j 썼)bצfݡ-0_>gͪǻD!=dHs%ǵ7QͷΜ3 )sȩ;o0e~s?5"x|X/Jog 疏%\ ͣގwݾ 4BUPIGbB%ų3&s#bOU` !ҡzɍ*o28GfB1UX FqmL_ށ bIM :<QRm[\+M{!|Ԁ'v/B1EMFG2,U}6ldz#ƞUpsz{Qg 엷޴3-kFs;{4R:gϘjjseKQZDʘb樲<j,suұ> Q;Qhwa}Ƨ^(yxA:eN`n=9c8w#n']щ)l4~$(BlaL I)NC4usvy|nv"M7f5Llw,aY;0:28k]ZjfgUu3jni3Q&.A.7Yy+f<;F=qI| Od| .= 2S19&!D!-W >ӃNP7kOxbrpƁs/;(\:g$ \l%6x냴ᶲi[?I/^WT՚ V!8|߯i(~Q&mU)E> TJe]IwN.!|~70[iSytbެ˹X'P Q,[tG}>&d|Hb~s|T,_EW8K[ΠCkyggMܷk<.u輺ca!6K&7pVaK伋*\yyKۖyMrMj \J?p@#A _-U]ZGؗMzƾm]ԞUy֫˫dnّa򘬸 +QN afRy28`)5 F+h\EYPX&Wn%hmTE.B֐jjĊ /K;@kɏ1:omX껌ifw)r"诬xzc '|ަ#;~x1u /XO j?^Һ6`O2ZiV> =_j>u6[ OmnGc+[ee*ı.OQ^8t?o.; z˴ƭzK?y_`~ۯR3k}c5-s;}fD4kV$;nCegC3>ZA=H%5)BcP$t)r}=/q~."J-5}_Nq.-ӢL:*q*v]=V ␄DBC Ii"$mUі]ٝݙ5k֜nf⿞ynߟМ-PhzVڐoQWIk3!nGT*12o豍fǶm4 +i@*5`_0؎ʪ% =yT{*!h i Yscֈ.mJJ/?Ss< 6E !  a33T3#S"vр}C$q([OYiNQ]?/hgDBI0%H~[*G~¦ aIvFR[SqJ2Xo߯-n˔/sr[K!E]*lƊ+fV=s~БF #&P(5%z smb^*/,fbe2ŪmjzeuoY2c|Z(dzub#֫}ovd> pA ,d*mq\P|RNxZNx^mB<fŷ̧c- a k* 90,v3>P'n@~8I(~(swm%[GVȹVV9?,?Y笳7hb}o^,Q,oɜk7J/ 'ϫګ竒sb< 2݆@ R-S@2 (!59 ) nu RA-{ipwz=-]lP== mz ׄ1Z|UOo<>!LYl0*7MW&&MfҴ4124-뫚χ)ܮ6wӱ%wj0Ey(F>qM<>oX[WTsƎf4z= y,G(79ENЭdzI"@%XL+st a r!p9b|G\|t{* +b%א%MyGR>u⭰hPx<:tHD}z I};5(= J*z+~idLy1խIfM#uMWs|3`VV2~\|R5Ww.絩o#B??!ገ=9?_Q~+?x?K:>՗2]%>{#vҡ=5S{O,"c|c}d-yܑcC \DSbq+).܀Gm)͉{u[V  Do5[jP96x]mڲdM5Өj-lFape.>bu(Fό6c!ft U =ht`kMD[qcaꃶ?3uM/ waB_<',;SaF~>4ſ)/j z3^0yUǩ*+*BR%&D \v|RufR*b!ij]zWwyxE+*wGرh&U e/w^ނ[g`a5m9oKG*>rs,zENo$Ό\y ]=iٳ&5I2f87mIkx"UnTqGb3ĚKpBl9OBv~ƭHkCHM9b?&;И[|4Ģ 6Gzl$ʲы7삈oCPSZ z1$Xmέc+kCKJŦ|pV5*T{7f$#D<~XaVavjDžĘ\BlDBWj??QɦXdz /^yTlpX RKI_CJgkNE L!""| ˑfӿp~$)fX ?Cu D )o}$mOsO])VorOqڔ= ɇކ}vae'x[Zy(,q;eo2âOٹH{o d_s踚+NQufC [k%^{fWQsRm!=aGFҸcGO..>7ON. j)?d|Ь>Ҩ9X{D%U<"YH+j3b)mP@!駚M~}Tz\ȠXwɅh_OF_hh$fM1aEQM&0E3| BF>QO[0v43mghP澥YܽP"L8]br3"wcWm\I9g{h;E{Of o('m }WrחP`BxfVfWUqYp/;R~͵;"c2^%Nvr.pR BU`~p~`} SE纚Y ƌ˸v&mωSرmyvՇ*.$ G«-7{KX5.]i_OT, %cEG{N5!+&T猅%'HrǽMRBR<4.s' 6)FClJQ Ш+UHChkfS <6/dM(t ]ё"") EJ)Q= H! - ؀Qƺκ3 {νys|om: E|}ikYM4Ju{ zF>t#Urf?\)Irtz r@$5_tk J?X7n\o= ,ǟnJB̓pKE 4>}.ܐ,D[;cr_91JWQץxJ'PM!md@[>2H> X@`Ae'M%{mk]ճg΍ɑI@g5q`xrp wBs`"s b@2gBq mcYӇnY 6m OXkɁXty|;\ EV16hiTL#["AȵATx @s$X`<_:!Jm?."\kmQFn|l.X&$ Z!i0j$ҤѸOڪQ5Rcr/Reg(ky+ַlf-xTi9ghi(˵ʻsYs{ISYS rulRL˪5:߆^wQNHq)Ð3ԠQp5Py A}@O1לz مÐ43lHi, ٵ {!0dBڔJofWIZ6k\]\ky+(7%b(|h=i>XW+G O*.ɍ˔Zq]N}?gMFuOİ[S%!,/$9_it caL8 ` ^W)|MĺQsKۦ#7 "Lb~|{9Zun~fNʯ~qR~AN=T-H-@^7= oHG;^7Fm]\5kaޤ*t t_}чgUxiṆ7n۾N33'J$E褼ro:К2O]X .Lʦui׊pyJ?"?f f=ew$)REH-;f]#7~ҢWy Xw\/-0 Г/P_)>'ZeBZS#UbU S>lV <4͑P0DBn{B/PFˆ1)4a]=Y1f'Dlv'[s (tG>Bnٮ,YXn8 "#{cSВ84W$A4ٖ$۵@5gYOHa|_9dz&.\ ;tB3Ifb,la!ɶ4HhŃk,' lh >dٴC+Лo ʪD+{#3dceS11!v'ז: mŕ*D&+׋6WuBJ? fU5X<]+ %^OC\!WiPSiAPDT&"(BEjX$ {Bdy@aeO Ѝ(vWWtMuޏ[sεqky{F<5lhVַ5a݂zjVF׏5ox]/¯ ;.O!~ rST ˼`ڰX́*D/q])ܵYASGXEǹOrjDXbi'+cW:@!BiCi%WNSjq%x_<DzoՆ\7lКe3ez7 o|v 4AƢK8vpۡ2ڠ[ J{c~vaytE?\]HbwbqljQR*<-ZaytvOE[\2޲\+T/DS .ӐpBGX *,αQ#sN~Ӫ!V1v-h[6+1ӡX'x#,ԡ A/t%yHg14ѺӪewrXYQAZPhZ'r) Kjrӊ D$p> $SuM~hv-9D;ͨٯ.E.kثqd_sp7|>?;BeIy\#XG ps6H={ QGsW3\N9Hϙp7+Mi+Qz?tş2-ު0Szy?]ES,4~O]F8Ra&@CWEW.e×.EӗƯ*e{{O/%#?*[? tw]9L*jl@mfzdm;@NEin#(/q$1Ԉc6BSNL`DYs]|ϭ}Eg<6 e+X"%sLЕA* 90Qj[c+B;"\ =KCny!uQSHJΙQJ%s0xB5)D}a\ a#<\'D­(Y DΙueꮄKFX x.,.N2z}X3 \1|8z qѴF"hHYoo'ΙNr N%ڒaq(O5.pѴ Y Cw! uă7mDحMf2t&#w|j"-=NUb$vZQ5%Yߝ뜙oZX\T<W Iݡ</DJ-fNfdY7!o 2u`n{UͥdI+*TΤS./q\)71`~/WL#F\kcoQt 3? n=iUœKi~|j)T,ѵg;OC~ʢE"=P^H]gPK&% @:HUKh. $@:!PB["emg,{qs̜_Emč6EEF5t:O>$# ǹp PzAxC#vzF2EiN4|>7[> VJߗɒ[4OҿsĬ>휤oEe<7*Y再\uAh+}z/SU~J\Pwu:ozUu+6Ds)+O7SU鿍10sފ}!Ėt1,dg rxQ9H?52I+w@ ˋݶ!J v]ws9c$" G#t?s,y\fb@-H$m@:k{f:~!v v!f X>FrлftB}B[+!^EHUSMioV4B@b ,DEh=XpHG \fុc `9KR if!r M%梃t*X[S3i*:M'`ͥ,sQ⓬嘻M [pvr| HEB0 6Z(=K x ~OUme(/ztusV! 2HJy1:e=D]4:濪V?7qſiCܯگUmb7= ;B<;vh94;KT i5Hv򦽈< _z(WE ٍѾl1VQy߁RK+uGjCf _ ݷ._js nhW4gkWK ڲՐ0Y 9t jӌxfQ{^_/zu~:"^13-l֤1dۘwpun\7=;Ęp|w!yqFM )dќ!M(p2 \ǠBj\1Yy80O+/J<<3xWx%6@UZ14 [zϕgKŹ%nY=&]RIjEl㺔;V̚E Bj8#s ~l|K˭ NtFn _l%ӸO]Ao lG'$+$#AT%̈Me nK{a3y9^įvI|EQNkMԷ6=ω^;UpM^r7{5#ښ7*HY9xc]!ç{*I1r  qpzQ7<ӁjGa3qV;5FZD+rep߀oKAQ.!"t>\mg+BK]G 79&[L¨fP).x6='j"BUV*!DjIP$ ʭu .oU-]t2K~W9ȟK-fvJwʒ:%cjLLk%_tuYr^뵺UjEZ-cԙCn fArC_>|sNyY=:36/!ml渍z+'"5+'%gwt&*6`z{͵%HۣE|Zѫa\m_WA%ž 2UbEz~MA`Z\&DӐxt)\¹0 @AU:֯T &2|@t@`UHEjVZ#ᖌ:}mMTQ'B+(SOw "#ADQ$a"g> O899  LwSɖAqvxRRqq'PU TG $>BUcߋYU$pjbxCe78 ;[#F~wAɮczzǐ9W@bH, iy*0IoEƏ[)*M τbUA!Lf.&ȰL^(q0(o5lk4(*KAt2= 3.-,Љ~kEP껠.ҷQ)Xx^wDżOqW;2M#_ z6];xŞ̝o,oYkUcNLߗdD#A,PA! B (*!K•\$䂀!&FAeQDFGqvkvvBZ|sXᓬ(UMl\ nK{uyƪiIp5<9!P1N8O/ 6M~?8H}v.9h\ⵂoG]Ha,2*!tW#Oj9.lݰo֨6Ho\7a.ԇW)]$rftKD3b_'rrnג\ؼ,32vV+5sjޙ"[ٵ2R NАXs4, |P6Y] . $*E{E-H r/dv77]3J"dTfgA0BKpD}11#.q 0υB\dXJ2E# Mw6Ymr +}~zjT )@F!Z>H<@?>ל9BZ @BwF Ř*=;=f֩pT[$@w@k?6&dg #bG%bvњ Vllcݐx:V Ҝ4Al|#sj4A[4' XsQ IpJNr<;GIR\AHC9x[!Eon/Cұ{ At~$$dHSK!494c{\̣HH,rW=C3dB6:a F^%jnlDShj^+_I05kl}J0H|JTf$˳T Eo+ghKk3 dژ޼ o-} kXj*].Vf̑[ {3z$-Ƕu晎RTo~?kYU+t sAm=^:| c_ 3^q^7;m>l;6 w<'qqF%q@LnZKiv\\) D)() YڔSMӭS3g:gs_9nyz{{>o 5#-떰M-խ8h G GO!aZ4A<._V'Ɔ7rgU)}tv0y9NT^ҀκT'_ +!g !@3Ilktf_1e 3|\ʙ'U\@22-p&%G"a?Pč#t3!! l`p _; wG$#A>,;YgZL'DANdORw7(sEhsϗK[v^?/`w8QNZ'N^WEo˗_ۿyEⱑc#G8D oIv o#kwxߛ!1sJ57:8AhxYZEu&b&E"x-ɩ5mͮ>jQDO9TjBl 5Q:TeNZ\Rj_|ׇugL0 *}f@N k@E, AE^ D.F aՀ3 8wRJ,wJ "V)OXUR\X]joWQIf2bӌ7#NHb C4-!#4p:1 U)\ HaC3 Zm[JɆ8(<%`K|=)8 sPIde 0= /Ae:d5(%X.(8ɱdAPJq Uql( 54p>xxDb{AnqYc]a4mW2sߧ%%.  ǧ%)g~#W7'*6beNڧURH1n+D#kME"Ζ5& Kxq.BT:?c'dԆ"8 _1!v0屮M{a݁}Ks>0ƽc0AV}a*56͡SPGNމq`DL2#mYx#Ȋ!Q:Dӡ^;؏7rS<GUֿ˔,SY%;7C{/cqv])ϝ~hͭQ,Rc}BC1D vlKE2L%Oz܏j{A`cWZ?VX+ϝ --آ1MmsL3mujjnTWVʞy}Y_&OQ;ŻlĈs7.h>FU3׉Ϝ¥U%MDxD `2Pi X?salNna&`‘B`f*:lU Z0*CHQ 8$NبC"aǑUXh/:bL6=+kl#,$(r(ʄU)_i$~NAKÕEM2\QI{lJfn-NfiJᒕˤ'*)d ,** 0YMj̹s_wsy}>ϱ"UAA-w\JC]'>Jz`ʼ!iD3C2#gFf*xP%2ȔxO̟hL+$|YPpnLʇ8QipPJ=#x9[xna)$:`oRn;d 78(> L)g>N>lc͹`v|ItbşOr<_ #~Wu'틼{q{JvU\c_mߟ3 Y_E_# GxG™ײB.ꎒLw9"۪f)V.C+z !)mI]tSŕ' J?űܪZL4 FܦM[R6OĨD1\p (jA \2y2HW o멀´0%H jePBXU=}QEG\|B5|Iyb=([MT{oNԏ^`iA|(9jPm[.f_CTe!(W 8(/X5DX\xȵ8C]aۚmK Ѣ= <Be)tYE!%8-TlĴ^1owj!:RpLuU< R}Bt Ё+>s<=W [*YT1^@AlN*~EyO:*d+ Lxu> /!<<>Wŋ9Wvh5z#Մo.6|4v?V-H̸ጝs}UWQsb #ড~1v.tLuiKU5irAD3hނgNZ1F޾Č6:Q#V,?7NM98O;їo7©-VaƚYQ/lzvOm{ v':nd__MX$ٰb 莰ET5Q*E4+'yL^l G5 !Ioͺiɘ$N&kH{O? ?r`]}g }c|&8F\7A{Xfqj]UpM|e1"6]&Ld;PƿAnr$zI8p+: VD̗n5WNe q$'i֦+zšj a=~)vJ nad󘉽62bF@g=s:uA)adžSmp $ز@=Ar2]@GCTyYQÖP1&lsS@2"ՈUG3qӑsaw&DJy5M{8]q9Wu%Y^.C^>S^!WsK6WFxGӤͳ>sV. 3 wO:<#mf%,W_ە4rMK E](_y2vlϮt}YzYgGB^rVBjbft-e,k\uczJ>iُ RV̮< @O2ëPCe0=B S[Spy4(QSjw &@jEŃ j:n\A3—x L P!ij!t IgZܺU]~&YkB%NH"1J& tmB4itF-52;4vQYw+|d ܈υbb!<Ϧbbbzw{bvgQ(V*F pnx/ISoT,,}_66YB l""{@X* [ HI]EAFiCaqyýVFGII<:5 '&f&Gkz*YɐY^KȭinN(]D r KWX+e !=r}? `S~Tu6|/Mt(w|gNhw<$3(o}[h*>ڻOqhK}hوLzs۬e-ءkε]J_3Oݞ>8IwI>pH:}H^'ֆ):\E(%+hD, QQX8wuhA"Rn"u:6lҪ1%'jϼ4@̡- PA_ ]=TPH3`աfm7~E-R>cMsÙT-ЌKXr"Y$E$8 !<6xCJFb͓smGJHnbtAYՐ糊1U(5`Ua;h > Vq@?"4:$RZȦj\:wͦ-/"emRMIIr.Z f`c 6Vy;'s+K0'Z%^_[+{ps۬o{x+}zZRTX#ȝG=@sg i:Ս v|]_k1U;v\]ce[6c6<:Ѵe5n>2e2%Gj2RC*}t#!ŐjbC n4Xη]k&Rΐe@JIT C*bfCuXTZ-&yy)vU!.(rBj}鯠 3XŗXu =phO uBCPǚz?#TQ׀Bjr&s4(`%58j8t-]x?| D6}xdwi3oX07@5jfSE䶨S|c'H^qyaCfuW4R>tAc3: 0Kj 6Ke2DkZ4-efM1r;r =_m}sAeޑ0덗qϱSy?EhXS5geeRK +=JQ5A-C^.Zɏ_uO~MtK}(r`朻tWZ@HB< oL)ʊTqnj0ߖ7)ϙ ݓ:Xl{BTž\j<kTOӥʪDI,ijjMv}gyr"eNizUal=l:{:;{/=/iށ6w%WW#q E bJoՌܵBCr6@J؍^7kLq2hr=f 1v1&|YJݲ`i*'d~/ aq2PDA]!e}6rB } xU27 ]E $XCh+9k1Lktn_>5)\[TGFj!!)>R&c 7 +$-إ 6?6+N+ǛEzjE<)ҏbW,D=O'QMPEܘh8 6"#̈UP+&vSM3XMܺSeא1юrmMCb'P诂j"Z?EAjǭ!$+֜в9( A*(sa (#G,!(+(؊P#lhMEmH36rH'a4ީ.ԕ܍ޖڜ1B=فqwRIoK&|@NlHc+'j*ZC*oP|y- `RF~vB{)|<I?8F/7Ys^z"\:㇇/\֫VCyߪq UmҮJMbq&iSoY[w=&BCnjд޳1ޱ_T*7Go d]$l*J,UyS:SW]wmӅwf% ړHݩRw.ϜЕnxWvFĵۉg@ꃴ e p-UC}_!^3 P P|F%Ѓ=~lAZ7VOhO@[b̗y&y`H BHX {m$Ryy"BYQ+M'FŒ1=laP@(i!&5JZ\uLYf'N:p('${ÝrmdGc h/,'z„fX  ;7ECG3$R j\k@ DaI29AN'Kz̎aMJoV4SPsYu HO-qsNx>\3ED8a8%`;z\a =2se6RnyΔS tMKm,5K=evn`_e/>:ȕčo ir6UQAݷ޹λ׳{jI6.IF(ӥQC@MТ9-[77Q) b'ɜ įJG,pqr*OA5: vDk_;;nQqb:¿;,җs[6&kJ5 #W\*sm[:G]=dl{j&xlڹmoV[6Ɗf/ i~kDZ|F l?nztlPr -PJC P e ʃPD9"+n\+ԘdVEbcڬ#ULޔJh ²U sU*dƁ\m[Z5Lyꆓ󫰻y5ȭJȽVi) |.]DhL wf&gLEÂ̬O9"]${妡!= tVJV?$Y3~y?7'}JEbdhrjwJWW/e# zjAe I !"(TED-[$a_$} !Bؒ,*Z[֙Μλyq{<[rtצfo9)~ѵvԭzռ}Fp]%'z〬!mS;Py މˣ?$ObN2Ճ0|ÃgGOIc 'Hkc~ 6_9ZKc]Hy%dp 3}A#ͩ7'}yzTMlʼn^0a_ɒp:4܌$ eLU[{5?2REW]* OX pd/A\'V-D"994wTZ'ֲ6 /VW0b=<)F؇DH@}9O~? ~޼֋⸿)OCy"ؔ 1VEv#ˣKЭp'BhPvt_rX>HH! $ʢ2YTAO@PIapNñI 64P'wsCsZVkYlqJey-uc8f5s—sU7\W-Om#]^Tս$57<]R6N]ŦsCVlf,]2ɍWq4ކcرx;^qDKN )HƔ5[3v|w/Ϛ4Rw!q UmGĬ:3^ib:Jt NFҶ Qs6?9c S=:T_H]| J#"C{|,ċB܋S$v-cE0/_M}SO[@HPy!";0B G@ùv4\[utul,FOǰ-L:&3yÜaoewW#DQWsi %#$MBsύiCz4怐K.8*ҎC|V_Zp3m ڨYݣ ^B}"RFC2܁B,܈ 6mG[a>s7t Yrirͣ1?.Us~Քy-DD܋@^iʸ!dENAQrȱ1]UVC?vteil?1juFgLcc*\}DH(Cg!X%*9y|ztI۰wrԵU纔Y=}nc45I{;ĽLv6qRm\i}jhetkral4M\ 4 ^; 8GBN"#(pS ? #DT p68\M`˙a[v 1(le^^3=/VqaiɏçLuWt_[Mf`w">U^Y~2[^[7f2nph!i;X sGmBu?zgMAYs:ŵXa,~jܗ'ۯAseI JFP<ƒCySffE8Ԅ[`$tV894nEl0lu;i}GSW‰ҒΩ5狢ؿ8:u$;)k5yU}l@`H?uҎb?:63Ō 3 gYWcҞ(ȍOw;IGgn%S,Lp1潽\ӭ~vbJr/GwgWo_}ٿ|XS>^kOݺ,gtmfue{ve&x8W@lEr J`x(EdC! QAH|x`Q!fX0K HFA@|Ј^82bzH#+!d9j{JQWwFEI?HXmսmߜQL[VS|K=aTjM6UBLsԅ䉋amp5h\1+,MZ3&;A}1AUE-BzgSODU" *d '1 x4Gۈf1"¶l1 Uk+2P* O!#~D b@Usr-%NPKXE C9 Mt!*tjK5Dzƨ(ck#kC#æ1fcX6O0<ܠWtwv =y\|vB ?Ę4Lxϴ>n+^-F)ܚnoS9MB1L9F F͋*v'+F dTIMgtmjfrpR(mx?dKKBܲ(ቐl@_x@@twq=@Myf?w{$P|Μ5cf{F}cW?ڶW3Lgo5o ;]t5=|uk8V;x3|~51vwjx@m>Rs7e{_7ݠR=Hўh mFV)UiŪZF}{%(e.2_8Y+Νdm^iO3_ܾ%o_RY_}U>YM;?NA5;ȩˮ+cIXw-ωțʎc'E|;'g{IYPS Ͻ7eQDY ّ5!-l7в 5B@ $$"n4[[{ԞYj^j^:?5GlmOh[M]a[O _o.4ZO|~Cۄ~ 6AḮ_&Xr2osDqw<&R)J;/mg_M'mǀ쏁өt Po=쏾{)?{)9(T)d]wUx/_PWƚ#g腟p\Fo79C@4QX 4 8Á 1_vӡ 0Hs2YQ fd8F;>2b``<yTKIU+?&ZhM9ߙ+%ޜy,>jdcC[W8[GG5v̴/urrN.T'"<:,\Մ T S-*{-.0& Åk_5/BJ$Pb/ ǑBD  C>"T0 b[h1u&cC< ȲBVLvH?ކH(DRO(E\lRAu0Oۦrl8D! G ՞*B+v87ƙuB݆L-q!xthFYXQd/@ŷHy%jWwaULjaS&*!y)Rʼ2o ZB+<@{걕%݉UɚdQ-&tIBPcN1&JTX58 \q4ͪH]:"1y԰)B];!γ.45*u>d"%^P+CJDP1k!ٶXmP1c$* Bly2h QS NnXs{49|#=\ṈBkpG FX{ַ:ٵX?>-غP_ظx0GfFǣkK˯FHZIΊ쎏yXEKKP?b%R1:."2$_&ubY`|>x1`C:"e8Cq,>GR kP UKm h%&Z.A;!Qdx_GqXVЫ ڶՙiҤ `]QUuk3+ґZHșRBZmGxؘ ,tRSP+ E"wzlM,ϊ.#~{J/,4/%[SKN[-݊ځUŬ !]̀FNP@,hnȄ PS a > Le0N_4uV7ׅo?-=~17r~Zsjʜ~w^mtw zbY'[y+Yzx\+(g7UsOe͗2y=kr6;$$ORM,UÊt&d`Ac9Oz+q9_V)" (tpTR!xx(rÖ; bFq@Q1sR~z6s,H8AE}'%?L{IgsSfOV|`5mȸ/aWVCa+}ƀghk.3zǼ;~H[]譣q[fMafㅕT$y?ǒj)J`#故(c&!z atdaEI`BHH07fTB &d:w93g{Ν3igcjy*峋"whxșH& Ď)qsb3fUTF[Sh}JJ)2(TT)yPy$-Է Y5 ׯ%Q(c*<ơСtlC8^# 1w!ZsSF` - 'fHr* wp)&,v|bu[mރ;ˠ qu9= hFB:m&`jʼVE(jXfPBkuupZ9_$0ZaV JL HDN$֑v.Hj3-pP vjPJ!R1㓬dקֈ-놅<`EJel qe^MJN+dr\ á{ j ٴA8C}a'M7Imߔ"D3}P!Rj6yወPFaM~|wkhK.,Bl1օarXBx/p-7x#i0!.\#Kbo3 9NJ(v\>\maFdlFQ-) *zf~[334 ۽Zx-Vvˊ&:ȭ2; ޱ@"GCTD2<{$?ZQt*uءhn\!:}Zeru2fp%?8jUmr'xMK[{zx _IFWD#CU9}׫(a>ucbxhC\sRE˧=|uWQL^ ExO\?-9\J}04= CAؖAWְ7SnEzUiO r/^4M7i;{N|Y_"D9$kci8 \(9g1Cjo\_1ny# ;0ETqj+9A}P|m82HB?3_yvDt2Vŷh v'>J{\y6]>Pe+x5wtc><`!lu,k˹:RBH-olүYPP$QQPI ,6Yd'a [`HY$[dA+ S305Usۤ d6p%އ6D*"R,vF;L] ${{!٥¥e\ ,r\hk-iς"KV>b=1-݋˅{o ˤdj#\ Vŭ۩?;0&dWe?+vk-t χń[YTܫ5u ڷCM#,z3IL@3BؙF<_ i+N(ndGpqvRm`@}ȸ#[m5\!x)D$(m7pΩ!^FibZI6}y!gm1gC͙qYf{'c/iqgx02/A]lڼo~NvthDq|!zrj=eEZCZƤԧVu^AnIj[sS5uA_MF+< 4|Ks3_qR ĘWs!*[Z B*e.¤_S&Ch[k3qGs~Ror$Z*+Hsƪud^lT'1+ϧcGu/43ӳfEX'RMiU^Nt%#@O; bӐ퍁{Y H%!;J/#9fzpԐ!ܩܔJ&]w ]Rs2L;h.R,[˟p;T.l@5֭o{eAK,nldJ5\k(7!pXv3VZ#5jp]:Nk8<1>>-rnlO]f}G5޶7;*k~^xE?uN6?E;^\&zV1C=ၪNGTz*Jo-VJABz& _C X/7C3cˤi/n[BbTf)enۈ"Ib$k޷ln[-*W WCn<ד Ar8ȸT*IRpH w3d`BjDwgBB|C@zʈ 0ȋE~ jX + O"R@![(uDD& %@=B -!AAuq<:;gu_6{#3sPN^n>j?̮&˥eKS􅖝╶UNV{gMSqeRQb=qݼ@-)z2V4$) .gEݑKSɟ셡=Y5AeS5Ǎ[5mQs Ǿc 7imڰy@E.q1CeJrR .&OMZpj G=ȳz/-ʏ}gwxwpM^k\-`ʋ[UKam*;EX5=1_Wb4+Aѧ :3g\8z No;2q%r$a2w6l"EREˍe(-t+4*`mU P9lB z>Jj(m'M2ʝo- {MM <QՃjÜd^~, Qá4aG?1n6k#k FyVZ.dN䌸0psr_ư] > ^ Y6U`^ЂrbMے0Hld ZH>OQ?>Y^Ww[5؛mk5uv.C;CS?-ڀj܂@ڠGB~ c0v6FzlHk'Đv^ #uz&BԂO V t !}gGGᆥnq^rh0Mf]gf̺d^KW;Pd_rum#I?# eLBW4?]J9oT{g/d{#&-CuGYs:]ޙ/msN?,\,{Gݴ.qS} [CZ=UaWC j 2N]Uח1,-\qvjd+c ]F1]h,l"Wcl#Su:n4ɕc|^Ƚ.+$(Wڐ(BD^-M\Q4hejM0\'ER(On) ټX\苭lϹ]D-+ |Sq4|}U1[Yarr0& X1 F]=aUҘr*Q^49BMyhA36'ND!SW?Y347)MJ4&mSY}dK[xpG@m<1svC+>W6|I߅_IJ˨XY M~Ӝ;۱cqɎpH'O9֜3DoR'w#y 5Hu=y ) Ic )&(* {B>@X%^1ְ^Z湄-u_@ H;oվVNQG =OYj\gqIk]Ǥ1[4135w }ŝSIELMSqIsdQqC4wp_J&r>M˧:g̹=\y>Oc \ s$g ;3d /}HیRYJߏ#+w"Ⓓ$lTN~TP?&N%>N"$Buļ=??K 4̪}o\zoןcS܅W? ln}&o|;i*گ0LuJ2wL0O;HM; mvmdW^// Q6p)e &,ѿe>WO뻑]WV 9YFN'}'&I%geI<&} N|K7ΏsC&^+-nت8n޺'E垎я `0eBcR0s%j [UO f$5,ւYPc~'"Zy Q5KGJ=ź͗MUa ۱y׆3G}%) NYn?U3?i̮#?nŎ8ۥVY7c?aq9y 7ruAVQ->  s HvJŠhddfy jR,U3D88 ['Z3 ŬP̛bUA?U/b / •ѫ D5ɦmjt"Bj. FrR8ѬWZ%]6  Pc 0B&=p^i1:,#Q8fZ/?o͋5k!JYRb*Ј?@X<{,OCJz^z-Tmrk&u}irug ]=`%>]Ll/9sd,SW%Ӟ=ŮJ=^>Rgbc{A|1Ph!.tĽi 1jB>a\sHdz#M{ ia? W8wn|1 8N \.3i^0rM"@@CM]Θ֎2D(uLqZ9IhT%i\K SzZ X{W4CBAބpܱQ0 RfA ͆+LĞ)f7r;)ej9$8We4;^X, 0Y.6Q/7q7vQd_R|Z>I+2 K4$7M 0h.tv ?F661h KE;56 [9x-DVvG>]}PP(oExUgUW.TBWk#>h/ùw)O*AJGRraa"a3miRYziI]YVBgw\챬C?[黆(R]Qi`p I8usaM[s+*.ڸ 彅`l>7QL=PHyOlKzC$EZ:Ɏ=jOjW}q _fT뵯L<*y mJDpD쁢&UxR8}2KH6#;UaPEhQ8ХӀH˹3{JwKdN"K$f~RO[NoLkSWR<'y(e?t<{*_fXoZvppyusjf^LjZcSlUmlkidCdC`@`JaEcMrfbHeEX9]5_@^3\+Y)^9Y5Z)_9`-d>_v; W(a7\uKb)MO}v%ukq` aYurM V%HN]*WxOvCIKJz<G_+K LS"ROTY-S.R-\N_@MRHz2DNI#UU(J8PǡʁŘzʕxΌu=L#yDqG\[$p[~d!dd VTKA~B;7:ALWea[SJD @>.,26107: EGJOXf&u5? TT#Y%XRLB r3o$`I ? zPyLi'qiƍƪ}ˆ_7DW&^)W!wlȄœtinKzdP <CLB<q!z's/n"M ]5R(O[QHG<{5Uq_CJw6l)y6x:e-kc-^i/xl-S,hIkJ|d-m1_h#7 ~N=gbuQRkOFeDAJ96P1-MDYr9Xp4CY"3,28 52-"&# =(״A ʄ^ᥗܖݔ✛襙楖䜚ߗᚚ⛜ߚ᜞ՙםڣި֞ךؕxAݘ変ݟv]觊裗蟚ퟤt9sCA"*VSKI@D EE FJMH@ ;CHNJ ? AA E}: w6}>HNMI{> ~B G HFC ~> z8 w6v6w9y<z?y?w>w?{;z;FJu8y;A QBN"V%N RW"R3Z:jGdCZ6_P,hC%R7?)-&-).!/"&&(/&+&"'!"""%!&%(+"$% $%" !!'##"$`0nLrSĪd5SoO}evT`9[(_RY/PoRjPh9[(oF{ge;vajKE O*V1R+Z6X2\,Q$bAwliobUcCV<`CN(X2f=Z9F^2d=eI[F_QaN]BR%T8Z3Q1[FkSO1O%NK)U,\4]@V7YI,KQ Z1OF>IG JV&Z*[7O SILOV3i9R%a1k;X\ |˻8rf bOo_U~}SV-; Dd"pOxX9smGpp9@ Ro9na-pI!IBMNK&S.Q9M1Z1^ViRQ-P%Q"EMC 4 < BLJe6Ė˹̀ɛ}˕ɉvLFz=LWzYc dd VTB DF =8<AL Wec\QLJG A4.13./58 DFIMT`"o0y:SS#Y)[%W#S K{=y+dJLX%K}h(yȄӫyruuywdzύ}xȄ~rp}`j=[2Y3NM\%BJ"^>^-`,N\2nQ_@Cw.|5Vs= g5Rg/=;ET$c'd~SM&yR V+~R!]%a#e!n%~3Z§Eid}MMlUHhMGPE>Y<5UC8MtNūw};{PQm7xa rp+ F C~9 K> GMW,V*LKHO!NI? z@yDvD QQzNrMxeHWXD=\M<bWC]S?[JAXH@YKD\NIdUQaOLR=;T=:K7/[GATA>O=;M<;H96I<7E82LD>B:3A93=5.@81D<591+80)8//:22;228/07./:12<34<33?036'*7'+A15JS7mNĆp,_4wlyl{UnGf0a9N#IqGzJg%f:zuhzaq[ZAO"JFIP2R.[;]GV8X;T4I$T-`9P6DC @BJL$N)U.Q(U/[7Y;S2T.S.KV(\+F?GEP+Z2I%S'S.O&O"^?U8[3X5Y)W*U+\6]1T;S(W2U0S/Q[9V3FQ,R#`5/I?V'`D^F_U3U8` 7236527A BIKMT] i+x9NWU#VX"V!Nz;t,b!PFe&?BT$hMőĊ̉˛zvpryʃՄňxxDžwDžΈʀquoyrvkqkbOmNNA i0rU`=mDlKhDV.aDqi`G]<`7SP#k?nPjTgQw\ujÂ|ǃxx|}xtp_fAlNrYif-`v=xEd7tK_ɪȧåctjsXVbSGiWOfQJcGCJJ=VLϹEqOCoA-N|x+|r t+v~)x=x?vLGI(FHKJLQ"S)RU*]5gV`EY7Q+T)U*T)c2]JfMhRgDg9b<`=eEY3Y/Y&VNR(Y.Q'N S!W0T*R#MM X&`AiG]5P JKQ$GDIG y< AGBGJLMLIIN"T&DG?H T}RuQjKiMCnQHsWMw[Qy\Sx\RvZPsWMn[SjWOiVNkXPjWOfRKcPHdQIiWJvcWq^RnYMq[Pt]Rx`Vt\Rx^V}c[|bZrXPmSKqWOqWOkQI^HAYC<T>7U?9[E>\F?U?8M70UF?O?:P@?I9;a9c:nUԈţ~n{y~ymz`|suKf0c?rmБxd]$_0wp}zxnSeHZ:N#CIS&Y J%^EhMjE^=X.`7k[pirnthsmwvsxz`?whēۻڙi47EGj)Ju{D$oaWk%D" [I+TgS s;sNo<~z`Jamk6qҔ;TE;Ϥv u RڷfuoQYv4.mх|~7{;jws+aӣq^WV ,!KPBH;t`eݬHSf]_Ȇ粛2mUa4aJ XL9Ò2%1ZԄx3ŕ4#!R\nA=XlVt7@i{|]L)5@hi{`+5 ƀT-~WPkJY۵@M2!zQU6.[i+[4.*!7J(Tv>ugZG[*6$kB@$YndPvAYk;Z9F6+3>Gώ_[I"{H"Tmi(VJ]>/^7/5 Q[Bޜ%o%)NҨ/~]d1I`Bhe沄Mѿ_7m]BA( ]* [\"9t*?!?D2֣X mï=싷4j+/~ _wa5[4,Wkg Z*SQȼ`+ī̸wV4lQC~2G*o%zو=i4H8!8#ܜ y+ a %{:[ = >. !3pz:CHOH<I FBR])~]m $@"Xp@ `@zD "Xp?~ )Rc&8w`|h{{ i"{'r$r ǽ;n4,?1/IŎSf<Ϙ"'1b²'|QJubgMTzmj;Pk:;'/f[37BʏEJqe T~mǫpQ\0!O :1l[%Sےg oKʈ;'^8ۄh h(|16;;-yۧ}~;;{wQI[ AKA8/lIq&l^j'}颫zE5Oaآ,nѫ;n#}hI_-.«|Kp "t+.~J?apAFpΛ!qºj11HIOI{?)f$cx&K΄=a@AY2G++_N1r{&֤]Ѡ_D+)ȃ>.qb9NNLWn敾 v [AElfR U6|5BEPf?4$xdTQa#ᾒM !rrˍrb $@p(5  X[𩐊?tyTs%QLY Kll*U}L0n>G,wi!oxofxDJP0WF† =RhH+n)w/3=ћ䡤N 9}Ʊ7!v ~XĈI)/f7o<K٤~Ic?'8p6ZYxG P d=|yC/G_/(a O4r-n(ė*ة :M8\p>m2NO oD󧫱 "Z%e'gȺVmQ6'pnl ))| JO%=qn/[ՑLo+g[)F2iFAR"&JWBsm-d|ΐﻣ{àc0p,Հ?' //[w"+7,lǶ~u^H~bd"c,Y󞊨ބބeZw #걯"z vm]ڎG)¶,gX úO7 '6U% YNR=e{*.ׄ[;حP cŷ2ZAj- Ѐim"cTh 1b؎!& wŨ :0 H^P b#bdQqsxu 7UBQd; UV8cm!<`g ۚo C4#@ n6]y=\+Law?GFM]KkO˯LGRF) Gn YĤ2v>4g,c9U7$߷`.3\ۨSuۼ';++諅we'L+!?h٠!l(fК([36;i;>' !֟C/ =zQwN Mmo:z~f!kN5Ĥg;}/ލո d9xs9VNRD=|2>9E}u|9Txܙԗ2+v-b+aLX'Ұ8l?dM^ک[|_;{_I3Y8)ʞ-K8L3-(lI~ Q$ _w2su63,sNAYt%*)g;Qb֭Ij ge zoW-'P l:?ޗc7a3:)c1o5'.t ̺磩(zj9fA;P꣞ C lpWq(`H8 )S'Lo#/Y/@拚gUd)j*/}-~Zx?̛̟,/i)mIPf>/eK Zh"@ ,BLHd_J K  "AU@gv|?>sΜ{瞹3g=BlT :/L@ȉZh ˀ52p}_5>$8XG D a'?h~%:Yp@?"` ` (P \+z ^Bx y%2j;(vKv|Ay6^d"H;$_\u{4~Lk3|ip8^ M)*-H}7m;ȝ>MuNb.OA)ze.߷쎙 'Lǒfh)%s9 u*N1bnSQС<1NJcb_Nl 1xt}U|gێr9Cr|[wuC8>}agkheO1Rfۯ} 3rL j@(ojn JƊ!QcPKc-#FiwK"ov2+.: LĹ%D$@LEr5DXuXnZu =ղHP)5sq;œU]oT\fYBSFiṨ4C|"[I,־sn# vR‘Č ho(?RLA#R4{5vW51t> @Wp\ o[nT5+BmB QnI%5u%/DfᥲoC>xAzӷR3ە7e"'YUf}Y;yS:zMqde=v'AvP?}l?{}IvW}ks[YԎ:7ֿoª)E;9eu -%b߆2?Uw>7N*ZHiGm)Ϯ\ϝ̚mi=' {rAF~BϢaCwg[_7$RE9eZw̲pTZJ]τsNJ]QS>N4lݥ~C+qolZߟ2i l }R~ V'[ɏ|~-ј7aSI'B;)opW~ìQ'N?5a8a#^J@<4vYJX4SD|vjLްncy1ћ.jW/uλ""e_gpw9KS܍ٔUt'qFpF\)A?:Ƶɻ:ϻIFcQ.;ߖ_}{ wVcP/ j9c;uˢ0Z\5>&y֚i |9?㰰7~qYȴZ.rXK1n|ʰON2ܯMK=}dދL6#Y6#!H]Fjs͇@?4z6ZOٶ+z6~ w:m3!rQYV{ӭioiX,L7O,hʦxü(6yL<Lk@PErNT2p Uy >,G x+f(Q@!Ƞ VGS jN)p*W >pD^pA :?, M K N RZe#z.HW ]-_/a0].Lq8h1m3s9|D{Z_/q@Ŋv^d>wHvU|q!čh|Sy`uqtykvhr焭qi{s|‰€Æ~ŀ~čsVlJc?S#I; ;U(Y5EHA @D C:= G9 JU*`ZcR[8^Da4R6kQgYh]xal;rs$xWjqEw|rFTQ,0% 9?8]bq#=p+z^|erhQBY;zT5`xe"GzRtTqcqtqpn\kBpBm:j.a^xxu}${9k2yS uf@la;kbAcY@bTGmYWs\a\YEP2O,%Z}; W߀%G+6)&լ /  p2u[٥tߩ٢ћ٢֕ޞߤۨԦϣСќИْs1юk꩙ᡐࡖ۞ٞwX<6!6pDh1j.s7t8t0 n+y9NSPPQR"U*iDjC],\/bElZiGd5f6mElK`:PGW.\._-^6iPgHS$YHR&Q)X-X7MNO]-X'[.[)V$X+]._5Y2\7h:b0Y2`8c0a2b5i5mEd)mLM4Z=+<<.1?29\PPuh^ {n\ }mZ {hZr]WpXX x^Wx_Wt[SnUNmSLoUNnTMjQIv][sYWmTRjQNjPNkQOkQOiPMYGFhVUgUTgTTjUUgRReOP_HI_JG^JF^IF^IF^JF]IE[FCZEBVC>R?;R>:UA=UB=P=9M:5L95jRNpXWgNPaHMqhzbzɢwN{ႾΚ~hyhq[g=lLw}ϊr_rRpOpYygxqrag<[4bFbCX6X:Y6W0M+ANQ"KJIT2[9S&RZ4U2B E^BW4^BZ9S.R&T"]2kFÁzt|x}gK_Ankopuoprz{o^n^pxp`X0dSgEUQ.UU"^$[:cCkNk^`IS-W7e`aRa4W)^5iQY0R%W+EF z=LWG~<> :H2.4 BDR/Uy3> < = p+ah0GG<9 k&n(go%36n#r'9XPO D C:}/D?A6 *{'.067-2B; 6{'y's%y,_:ÙƒdžƚʔłÌuFy 4j?6 SDT^$d#a `!]a[UNG BD JQV[\ZWQJ<;99;=AELT VWZ]d!o,@ X&f7kCkBoGvWrR|Q}]vu{ȀxSzbgPy" "EPi BB @B}ބuqUbE"HE..:xs\3O~<3pǽіӽZJW[~Ə K@YTL0]zD1X:xѹ/F4EkM{PU䵣/ OΟU.E_صQv27NȪY#[}ܰG߭Z_M[< z}.{2=(yb%5OnOUqˤw$g:wM7,q'DmqgJ QQl]VYbAk8 SurE .4gWZnVq!-\RF P]YYJyuNCqEђ[zbos UYqWLDN*hXY4TUM,' &za3IXvT ǡA/v %-W7ޞ{aGiEt)dm~` p`1&t?f[Pxoy.հi2vY-/d[s  clYڱ#WW6>YI%d_ x-i}A=tBv}U#)X v9a#UڊaQ `'nJ9Df \F.!@((զ7tp:U14aVȚe}2w4bJ#5)+(isl}Ԥ #vȺ2a洓:eYOВU;>wj5uՑNe.O/3g܅qnʘ0s]*r֢~؈f/YXqb07ʛ! 1wdC~Sr_#u[z)Ky9gE⚧4rʼn ^)0IOQW]t _pC9SUI{쑦RJiB+>O}g'| k<^gH^ԒScئ Π%,#R†DuE=P/'d`C[zҖMϨuBFvR:╵ %lZ{hY;LŪFGCgab,=ڠXF+t0*N2KCbCޢ>|Py D ^9P)q]q_Һ<)y^3.Pp|X#׺ VY0dlYBXׇ~/ OA%i&\Ll۸U &ʐԮY}mFKUʴ:6/6-'勜3̹Zv. <;#@ܑB5 lu-"l\ypAD Ay P8uCa ;~&ai(gl%2̘NaD2~.zʌ0\U46x}@dP(m=,vۇd]6A_=8wÎ]>vaZT4kH1vGN?z JgE6"U %nmed!/+I¦*g5'o-K_#˳VͧwGrF%a"Jh:*n+* Xjb5e[+`*Т:*iijcN9f95SΜ=˽˧k]DxӠg /3mJSFa: r΢x _BW!*"\ 5䑥W!et5hK j^P$%A~@Tܓ[GntJCsr*.-iHt@c0\m+(#\:&ؗarbOJ\MS?^4-vYpޥ-Y9Yߖ}73WmJG)_LVOYՙV+>),PEX9m}I4<0 6 4]YH;3DO=yWd(? gmF%jT*mm[|6t _+;^v֕S6czjMxo*}bEX?{$7?mּnS}SK]((X Fά0rQ?7܅+ 3~5eG5L²w`%Tm 3EgC2*<0,x!zh umΜ+GG\&@n,([1Z\!i!܀nH.E+b {1x}&%lIKsޭG]%ڶ{WgjίDi~|<;NWgNrTZOh7Oߕ87מ>BgКгgB\l>=h , $%!Cٗ$ 0fD0b8" {?M@wn>pX l쁇+1;౞nhk<]8zW{qx?o \3d ?5(ؠ-0 I z@OtKtkLESQJ"MI?<[p/Ƿ}*UT> S}ZOSB;S>PNەF-u3eʹ"aUZSE!|␁{PY -"MSW똯WLj9k^FFjzWC]b'+Y'[E[Y⚗0b .o7PYג6L- ojyZEykKC&bެ3~ -ڶ=5!l:9_[٫hA"\c䉿70m8I}ccXG9zFyiNF2I]{ P i=7cpqC}끿]d+| &@yj+ްen[FoƘ8?8"t*c hKƘHsULX6 9 m|q'BU#B2ädKӰ<Gَ<¢In Kg:\ ~-aL^Y^ðS=7zXSi,*b>D[kث(ID9^OD=2) YEobjYz9X/QuoZr_@pst`]Kjm7!4,pp<Etngܛ\j9Hsz] ɦ h!pĈKa"gr:4|ղ(BȧMfE f|c3>kɲi>K~j*v呒*]CXNLB>F95'*?>E_X-QG:3 nVԁ_ٞՑڜؓ癟㤗䩢ޫҥʠ˟ѡԢ՝ޟw3磕姟ןh7%23 S,<UNJJJ[(z>v: HKGC };GE z? r6}>E= >E~; @MLC z9o0z7q/~= ADBz9NIU(KMI> MTHNPO`4d5ONR`+h4XqI}O4W %, /+"+'("' +"'-#.,1)1,$%*#$)"$!*'(421''$$% >37?48A7;A7;>48;04;04<151/5.,1(&,'%+-+14271/5)'-$#$)'("!# "&!$" '!$,%)%!*51:1,6"'!&"'#(*&/ " !(#*(#* " !"($-'#/HIQ"uwX`sqYy_{lypmXR&8{2Ht\)u>~@ ; |2|/@ :p)n$r(x-v+o#x)y.i$m1t?r>{C HE; CIMJLr9w?~46~7n)g%q1x:C 2:5<@D 40-s t"4|/t)}2v*r'5: H570; 8@= FFQ]1vxi7Z'?B JH?VPW!Rs? QHp5? 9 ;}2i"m)}:? p*|6> = q)m&:}9 r?q6}7 02z-u,]w1l$}196n#}0@ W*Io%s$A u3q6r8 ~54 .4 ,44|3? HKJ%ID?EŘɑˇɝƀțďpf2n5lEY]h%t2t2 |:@B @ < JNY'Q%T,b?^D[9W1^;U,U+JV%S)R)Y"c8sVz{xopku኿ʒėz~tdngM J qUИΤǧníǮk`ÂȈ|qoQY6R$q]lҚg`oI;[kh;bLkd}n~uo]b.NCH@ >NIS|1IN?= N _6^9O%EJT%yBY#`8Q$C?HW%Y.LCPvLyCs5NqũÊT~;N#ؖqr)m1x$j|'l >& ~Xt;l"ey sWOK<4E8.cH3f9CN_-\:q`ՌԜhvww|}_lBroHvffprrscrpcQƅH{?oOlWY>I9GKLC03,?=%_J5VW;Q;,* EԊ}}ۘߙ⩪߬߮Μܬ٪ΞϛљࢡwKцg󳈣{ԵzW+)0 c3Gc,Q$LT$HJHA ? CCDJ~H s;{@ n1t9q8j6uECw9r8~F G JRA@ CC PJD A QU KHN!CCV+T*ABJHGD}> K |TqM O0T71-")5%0@1?VAMS>IQ{6t0v5t5w8y.}2z/~3{1> 7t*06@B 3s)w-t)q'|1y-4 v(53:7FLM; =BLl=Xx< x3? <IE yB [%i0Fr7z<~>|< w1l(t3n1h,v9}@B x0z2~59 r,n*|9y8 ^+m3~< ;GDB |:> }2:>7n"r&|-UR CDJ:J Qd?_5SOE> 5A IV,S"R,Q&LS(W-{ѡ˘‡ʼn•S^(p5E Q \(_,]?GU!MJT0fMl]nTi:\8X,V FB MfJ}ԝnjŷƍwŏoURQ'lStxŗĞʡ~ZkɤЬφzg|}dbV*R]2zt~|t[rx0fM UYMW(g[pxpskPeEc2T!NX2SIE>X*@P!Y4]7eL_:]5aC`BX.Q"P&W)\/X4N&C;@ O Y-W)LO~T~@n"Kwn7BA~;zcku/o-},zwA\C) r$`};k|o_WkS3JE#MQ+om<JU^0jAoSiӐyҕ.ѓВ̕ɘvgfžmu̠~uڥt糜ięiܓb^QKjObOYLTLY=[K`SR?A;AIRD@87E#0 VA,ZZ>YC31 ?& U{}ݡ䦨ڦ鴧ϝܨɓП߰Ӟԛ䧣ԉ`◗vlǕi.d'&&1 d6Bq?mWfShNcJV+T%MIF= }:B ~@ w6:z2? }; l0g/w=t<vA QWV#Rx= CHGU(R$I; EJIKY$KEU$_/MNPIII zG S \^iblY sU vS kKeJ~aKpU uX xZvWsQrN sN tO TTTR~PPPQVY[YUSUXjf{aw_vatb p` m^ ycPt^KycOydPzeQycPnYEmWDoVDlSBoVDnUCfM;`G5\C1U<*cNIWC>L84H41F10B-->()<'(7'/2",,)((NFx1P[bdZ#mYvp~{t\W&? |7 |8 [(b-d-[ a#o.k&g!h&g#9 GB: {2|1<E|={>@;?: 9658|6<y6y7|07A = : < x4t1w2p+o+w2p+> B {7AIMA7 5y/t)|36|2> 8B > Bv+< GEn/t7w; t9REf$q*6ft-t/I Y{b#|:k(m(|6 @ GnMxn8v=n4r7q6y== 769y4x5~>w8^*u<DDR$JC J<38=> 9 BGQ+Q"GD?w.}9 < [,Z/WLBB 5< FV$KG@9 IJU6ōгƖƒ{W#QY(\?aJ^7R T$_-V#I< 99 z0@ K SR%L%S']5iTj`mjbG\5JC? 4{1x/}5~3;Y'xx}◸uitn~Vsk_@bJproKēʿɢɠßQaAs]{a{fv׎ta^3ANlI~ĄuaQs=}v0cZYmP{y{xogfEaH^>N"FP-Q(W5P)Jb8O(U(W,[*p\fF\7W6T/OHC@HJIMO!MKMU%NI\&Sf{LvugL {5DCvXvz2lu ukLaE>")$ yy]Lxg'qiRrr@t4r}:{OX[(hSrmwzouݏrrώrnYur;m:p?j7^.{r8{fo㸓WÝRҎWPxNrB`DeAO;1<(=!75#>1GHKL@2B@>KPGDA94eB, O7%]Z?eP>?'  1 C wQɁ٨ۮxأ՟ۤҙɔڨМԚ⥜Ջvڐ{ΎxCeD}J1 J#!j,oQbN^BdKncpcp]o[fOV)QZ"\0U,R#K[(X,PHwFwFq?uC~JOL u>;GGTT#L?LBC@T"HByCQ_3`.]%TT[} _k kj r[ z^vTxRzTuVw_ vcrR{Z`]~ZZZYt[tZtZv[w[uX pS lN mV lU lU mV oX r[t]u_{cx`u_vcyhxjtgobwU|Zdb`c`c`!]\ZWXZXl}asWoQ mN kKhGfE}aSuYMmPHiLGZ5V"MkOr4`"Ld8Y2R&I; {4v2l+](e/w@|C x<r3o-z6y7u2CG}8~9EQ AJ~; ~:> = D: C= ;>> C A >> ; < 67; ~4z0=q.m+z8r/|:>~<; > :{,~2>8 8 |3w-t*; 6~3v,4y2: z8u5g(t5x:x9C? x0 <Iv+z09C t/~6 @ |24ADsBf1s7AA=}5}7ND: ~5z3=FB p4{>C DL? u5H FBDD@ AIKI"F69IKPR!QHU%PEJ= 8 7 E> 7x,t'5 7 B|ѓʠƿ{gK#i"~38 @;. 7 CP!KHQT!O _BlYn[hS^@V(JB? EO%H@ R-bLU/?x-< :=W.mc]?MZ@uьiFc6b8m[r[ƣʥˬ~.[{_zy~~zynYO;\<ȁɅҢ{сkCdZ~rizu u=uzhca4S/R#R+W0U2P#V2b?N)U0R#R+AMG; MU'U(IA? ; 33: <= ENKB >EEC`.U`vHnR? ; HV)vWqy)i}jkoYM[<C`?ATB5;*rpLk#xpD wt:69K`]2^Bvqv툁guaᭂnŽr}kIlkw\~g0|t@_ٷvayWpHdGdLgIaGZQaV``ܿ\bخ\arYGl>[OLO\I^CXHNMWGOCK\w>4%Q8(^X>oZGR<0     A%y\0q5}{渚٣Εԛء۩֚⤘щWncs@*k;L+/[k^$T(P"Y*ZCaOiWo`n[g?mD~oqcq_mYfdtrsqtcnYoUmDZ+IGH{C t=x:HIVZ7S AIWP< KIPrIzXyVxV kLyZ?ZW?I^IAfS>o^BrQNvVPnPGiLBdHA^CA`DJ\@JTA>[HE`MJaNJdRMhVQfTOaNIR=HT?JWBLZEOZEMU@GM8?G29R3:Q19R2:Y8@dBKoLTuQZwS\xUHzVJ{WLzWMwSKsOHpKFnIDvSAyVD~[IuR?qM;wSAxUC~ZHz]PwYMuXKvYL{^QfY na reoUsWz\addbbj&p*p(h!{<A R1tt2l*\,Q@y5{0~1;C? G}ERV"MDFX%SJU(S,B@ HOSV(EDGLW!GJJKMOKF>JGH A?B>?< ~8{5B @ C = > : @ A46=;F H=4:~1x+v(49;y1x2u/9;E8114G8 }/828GMG? BCH> <G=-;MI> ;:9< @D :{5=GJ? z6 L@ EKKA AB?O"T&P'R'SNF>Ht1CLJI> = B LRNGHR!W&U/z{ŜýJl3dHK<547 M\.eElRofxpsggEd=c9S4E=; >?EINB4B T)Q'KG? >=Q)`GIA`EuYiCmodMpWύę˪ɨҴx0]zvzzށyrmU_6]4t}闷lb^AY0[:q^ex-w>nWV9V5N-S.R(Q#S1F>MHS%O#B;JE6 ? LT#PKJE=<9 : >?> < 9 B@EHe,wA]nIvxYNJDLQ#iGVv!jmxyahrRq|[yc tuTig6xr7wp/6*ELY Y3dGuq枅_ݩ~\ߋZXt]ohpmxb|SvJqGnFeLiOyMwIhDcXiM-ZnbkpZ qy3kϢiaὊi՚i_MJwShPdF`@hxǡQ[XIaF8bY@t_JbO>2, 5+8)*/3 \܋ݯҘܤݥњΞٙ妙ْȄTmer?-tAnL16((5 xZ_ V]&^2*\"PT(W,Z1\1](jDÀdYiTmRkb|xzuzdrWpfyitgh\h]hSa1_ l@nT`1c+gCkGa7iClaqMd3k=b0c;gNhS{VE[_Oa]NYXIMUGEQC>M?8K=5H7<O?BN?@O@@L=>H:=J;BB4<F4;L:BP>FQ?GR@HSAJQ>HL:DF58J:<P@BTDEVEFVFEVFDVFDQD?SE@UFAUEAUD@XFC^LHcQMwaTwaTv`Tt^Ss]Rs]Su_UwaWtXYpTUpTUlPQqUVz^_uYZqUV^HO^GN[EKZCJYCJV@GQ;BO9?O47WgLbBKF X/X,MM#EQV%R RP%O"T$U-JJN*W3b6W-V"Z(V'S&V*KIFLQ \/W(PNKP#8ECHJL: 4=HO+ID?:BCB>=9 =A GL$MCE? <7DP&?;2EC7 : ?ACFD5@MB3&< E: CEC8 ; @>:; HH? ISMG = N9@GLEN$R#Q)HS']0V'9:GIJ=HMX)[1U)UQ!R%Y3U'KHIL$V+pa’§ĿwbZN.OoHX(]0\BdWqnvuxbyTfGjK`A`7V)Q!O"L^9O&KKP#OR)N+U)S(IKKDJ!S#Z)X2O&V+a6O$M$o_mbfXhLW)gO|։Ǧն}6Wh`oKlgmrljnarLvuqwcC[.X)\8}偲ow0o@hAT-]D[>\?U4L M D9HG IM$JQ#X4S"ON!O"Q&P&KGJO!FFJJHJL"I"T(LN#R#l@q:] e?w~jqۺfդQߜR^YvPoKzװruguXLl^GxcLlZEOG5B' 3'=2D8G41C,;9$,+* ; ֆۦԞެΝǙՑٙۗѐvti~M8RoGO8E.F/rWbnK_!_&vRUY!X%U(Q$LNX4V1U&[%\(oHpQlNfF]@cFeG`8iDt[uY:|Zxk|irNnMdFe5_/dDÉό}uWdQF7]+2,4:3;6.66,57,75(76';7'=01D67I;>H9=A27<,3<-4?08;/.<0/=1/<0-:/+<0+@4/C82=87=87>77>77@78B99E;<G=>M?AK=?J<=K=>M?@N@@M>?K<=S@CS@C\IL`MPgTWlY\cPS_LOfRKhTMhTMjVOnZSlXQfRKdPI\IQ_LT_KRWDJP=AM;>O<>P>@P==O;=G39?+3{hj[]?kYp}\mKiQlPh@_D]Ca>gUmar_eE^3RNU"NDQ/N(W/[9[6\3V4X2V/\7V,Q#T-X4^6`7T+a8]1W'_+NM!O)N'S"^2^8[>[BW9]AcLqZjXgTe[fOS2L#S-`=eQeEcG^9\AY[@Z4W2R/S%oWn4^"_/etaY/U=W/MV"S7gD}3pl$r%u)q"uWMSTT![$m%JQ`_|h&oٔ__~XxTpRiOhLiLfRgZr`|WzTqWmYnOuYɁj~Ykw~,ooimt o|mv}jl sa^mgk`hǑVޠ[ha[Ys۳z'eZvfO~iQo_G_VAZ:0LBP<5N2@8A)H3("_M tRÈӡӢȝĜҋpŃ{Sٖ|۞tb#~N3U{GX4R.N, zVp vJ WzOtI x\cd,a6b;^2X%Y$Y0QWxP `"b#`/f;k;^/U&JQ`+d+l4k>oHpAtLkMpOjFf>k%r[zQCZ-(7 !%##$("$(),,!'iTwGox:㨣"- ;-$H ! فvVeB0B)"R jdQJQЂf3}As`q z&B03AA(,L !+Sc28 M>}谞!dilv  /Z{o \p "$ ^O' Dř ԛ}!xL p # BBj$P 1Il<7S}( IIp6> zA{ ݉Pyt C=BP&UδWTd*OkF٪Q6T+ iO D '|MYL=OWI 'I5nuk\VI5a#?`RM]Elf??C2W,K-BɨuE#RCRɀGAHEWTJ iBxޫU^N\=}GF1.a8~1oͧQQ̥Ky;-TZʘ35ژs+b_#^7q7olBlTN5f'_ 8Wd2 lvDJ35aK.5)%K~/6sםரS?8n`s _ T3ƣ敔ߍ/֣9:JK{wT6\xd˳"l5bQXD]Ng {py%zv ?1j*}u+]b#624M}j>A[plL;4rtFIkLzܖ<)F0Vod߭gSU*޸:f_ӑ3P[`y]CmV`m0ҍ%71mɏc4z@Ɂ3cqI3]/SfOK9}S݌]-UܤcUn-1FEܢU|5}Jٰkbm`~j8: nzgl=oI+W@ղpuIǛ!UiQАYYȐY-ehҥUg"~rRqhM%Z#) NMaϞlw%=S,[ -)A QUk֜ʬ:Ogzy@ɞAU=ˣ<ԜlYTgtT(Xtޥ̼8˳Y1 3 ~5.؂r~vpWN9jPbؗ%)lx!Y`}+%.KSxtrn-2D>@[L|m}R~35hal = bZ=1ARbeH3H؝,T|ݚ)g%sb_O\-VVNjxo]Mg]p:'6&W BbwLw: y"E`N]oovmvj(~B򨼷~mʪΉ_RݦKʾ]Vg?.\C|N(0Ц|9^Uy:yoKkzaoL;@:}_nذa~*w}kV5W؏̋iǧ J ȮGk%4˜lyоha6턌Rԙe?:ٕ{*Fz9 `?v ޿27-vCvanj  X#a!@; cx agi9{m ox,Gg܀yفqr(nȎg6` (㸺ÚNz{+J $ 4 H@BQ,**厪{7e-kAPTQʉ<7|1ϼă,Ov\O4C_B1hx' &Dj(P.oo{N"f3a,,8$! :<<CDX(OOJSh $_X.ϦjQ[W&6SK3 B9LK'Z"GFsmYjhNRI>к>:#>j^B%k͂UvWZ&Z9PXBLQЕFW'vVBe) ҂q=cYfqq9)UsBoZ?sқ>QcGQ3G%}:5>vzFxN<ܐwG,{b^JTYND+"O,`%&3?5r+L5ԅzއ~/Q~uIC?C?݊ueG'vZXc`>KqwsAB+썞s$xΑ+J"$3Mmo*c #jSKTߑo7ZyZ~.@UEhd"?0juܗm5"Q)к ԊU|5#KGǦיSe3vP^ϛv(M"Z^m;bрcmܔyOծq߸/l$zE yVo ](_3;Ö%;1MԬO:/e7*4zKA=.Q͵2uꎋݹiyԒrgɠЧa Ǣ07f5w-U֢Ch}T=,[ JBFdc^ɪo3wQ%~>C͸F.0bNuuV6ȇu.wu5j̿F8v+b(mn 78l+(oLxzi/!dLv͋協o,Px 9^N G2T3'O$Oh{S&NjM=3=p~P9c F24 Y91¨JVG=km3Sg]мdYy!]=yTC_vh ʸZFCgͩ/Xhg;L+Y6,EX W5GNk-YU%)\zWE-g.W.mκIثV٬N<*B ?obھB/eQޚa 8]㩨ie< u%t~.g饚pM}Yu~W)ygjDSNܝ_oy<a~qaE>^6{};J}u|'~,'q2B4DS l ̓A )6d٨mgeOFAH-#M^76NJ}~xZXo;R{IW[zՐS{pv ~Xl? t (x wcooHAQ}Ԛ7/}xk2޹XD2* V͝s)cY_lpl%IF9n"[׊&139oΥ?\ܥT7THFiQ&3օE:crH[B>5ͣh 4!lQF=ajc2V;ٽ~uu'QUIw'\'`/_W2-+#uID53]l_vJI|g*xmq#;]_6n`55pڳI0Qś@33BF.]~j~'  lUV@o\ "sx_+SeaZސs5籽B4B9gm hf*r@WJ[" {^NVL~dQϛpm/zvI?l^oקaݲw.ٛNS:|vo Sn{'/_yvi d=F4N)X'^xn}pf\,;*wjq_r|쓰O_7[g W/v)'y(Y"Nɹ}Ή{ΪRo$v:p;ݣwR:ǩudkwh5 9ߤUӗ+3rIH;нc3;s zV;FTigbCe\4BnY/'4D 4>(?|LحSq7w-[Szcʎe'Ė]ϛ4rNմAfޤ] OwYdCȄK`ҭ>dt?Df4*=vi,d3ZCfnH `_5!+&uq uHQ 늩%3FUԷ575:XYF>WV] :[S_}r7;>9uyMg؊MN5<{Ad-0̉u?=}¹(pâbAa uKnU)ΙXVE$'T/778$<")-bklz.s|ԗ\8Ư ZPċ?MhpNN=:aиg}RGJNI s`$D쓰DdkcBٰ &,1/ބ;^2}Q~?,zAa3-E2X:@-%WHH2?H+1Kl ,/ rB?8`8n03@ ^#^[;TPux&8cG$yqΫSh1]00:B?K\x0!Lܺ,izn2I1R{I\'Ym M^/_P\}]9QZ? M;!H&\HhCDjZiH,%U[ĕ]F,4 p;';G= nf 575m҅Ao, 6p7F[C=S`w03M'+K bil L@!p%xؙ{Ksdm?;g'̵rV꿱/$`4XoG{7 @:7< ^H@ţXDO@@CH( qP: { 4Ow(HS>  @^x< 1x@O @{ ,F¢/ |(m?e@9ݾcn_"jR(/5\.HQ!DW(Q/E?4Edb~vҟMŸ~_Ŀ8.h?_ӨY*eblc&˜ &[ү,Qdf^'O{Igyy$HЏ}?9s?Ϲ]ߩ"6w8b k}]gJ]U%w<1OqګZ쾱Ea_/|O. j2G sNՂER`J@{×p AS ޟ|3D \vf8 \OkTQ6bGs QHEٳzesrYtJiN{mHwz~hLðy! RA7mvނYSB9'Z% qgR} HG060ݜY6qVYs"{^5~$/Yu?: ;6KBGNGIS(T%PZ'UKIA? M@>DEILEEE}2FB:<F957 9s1BNV,OaOfSdSeQ^>W2Z7Q.O'BS&ɢţӵj-mKq}G? : 6;@ >? ?|7x/<R'P<@ : |,~/B< u+x0-|&|$0>A2ip+:O%cEkVcPbHm_jV_9`=W:V*ueɵƘǡÚtd J):\b*hZY1W#Z(aDc`X;F85h=~=`|s=y/y,v/o)y3|6o)q+V%UD ~+9X2T+CF}179x$-)u#{0m)[s!mhn%j!fZp&f{.}-~:sGdg.U`gj$a]k't(hb){`mh#n4oE~WiPy%gcfm)r6r6S]QF@W͵o}ùwֺzȹiGxMu_7xT\vl_ taxk {ie qABqgDluPlƠQgxi rBGs8>mCAiNF]TFYcOu:_oHiHfHbJfYu\eֿͧɑ~=e}ZxY x[xbnX x^EjN3hK.nQ1mO-cE"dAN-&:"=2=4 -G2p5汔vόh|3i93b=jEs8A+! (iHsuH~JKzG xDo: q: s:}BJ? {:r3~A yA ~MyO mKnQ]DlqU jR^Jfram|ktqagvgd}obrk un~phrcZiYPiYOp_Uwf[uV@hSmX r] ~i }hr\u`mOrUrT rU |^eef~_|]y[}_cvZpUx\qdvgZ{m`}naqbUm_QtfYqbUkZYl\Zl[ZeTS^ML`ON^NLUDCNAANABG::B55C668++)$#%#%   !  " $% "!'*/"YG.m%nYocq^ʎ:|pvgpSsTtboblYlNlKjXgHhMkJrbnSkRm^`FeOq{ohkZlbp\mf[6K!`GhdeAdB^;WXd9g2Y'P!X:T5L)Y(^2ZSa>y!c"Wu~rڀVn /[mb"wtFm{prL{"gѱĶo~&_,^\ xkdX\K~_#ás:UdZ%NvRuQ=qn ]<̞rgU=g=~ncz-ok_h  7q ӫm62M#l9% eT5|4~rQyT d ȳ5+}oI-5ǘn4uLҺF{TӚFMLu} C'kj8\j8JH:r/Gb?[΀ L~e[뽝b&y3 JLT<6uԸؓm50G+;sqSj*Cr">-r9V<пX5:a?;Ͳ^B3_,/"N;"+(Z+u' nq&ƒ#K%=)3ɒ茇B/f HL'A}sŲම4n75{˨U_ѹfs@7,ۛLQt(2VH,F@w F݈n(F Ȳy$cZFBwHejp؛Htr8ۏEz҃ʣuc[R1Sc\xOh k` 7a Wٛ7HVh hGN xyo`(aN@ >9PV?e|l?7$Р  K= q2 Hdi/R1QȓtDf0&a:B$HDBqtt^րv,&|ݱXTҟ)_H6sk/n˔e AGޤY<`0~#{)K~?1*˞+^P!GM!X0`J`KX7IKGDJQ Z:eJhRhQaIaKiJb@S0OR P!M JOD7EP)L= 18|5 9EJ"JL<|7:NT"|B IMAj+i)|8 := /u+N"Ĺˤ׷d:aLPl?vGBA GJ!> }=? |89>7 @`6P&S$JA<> GGIT3Q+O/IN&X(I"9q(m%8A }2}/A u4n)|12<hGÝּıpQ`B>sIfmLpoi]H8?I"[5eE^6V*o[i(^]6P#< 24 4 {"3 23: 193 8 B 9 }2[i!z*w$-6= |(d79 x,{-9|+46z2Yg&r/Y tL{Q|<8.6A7p(p(|2?c "abu8XyțDŽOB_mPSVzȲ̃ii֍qTkfr\S |`T~gV q]Lo_FahG[UXTߺKJڶ9Nv[NpUHv[MdV~aR|]NbRhWwbs]v`xbycv`t^mi inp$pm^o7s6k;m7ÛsAsx}틨|vv|bq[mJo[mdhIgSpt}׍ӏۋʁݔz؀{݉zuyz~{}x{{y}zxutorp}vvusy点yu{yӇuwrioakruutwrބvx}p{soyr{t|nfs\ravooernnqolkbohlkqdjYtwztusrqktvt}܅ncrwoqqnlgmlsvnhnlpqlgnbnej^kVl\iajZcPi[rvoqm`nilojcfKgWjdleqspqg`fNkSgO`>bDf^hgjaojm=mhijppxptfZ^/U,X5_B`NcF^AU6^>p^fSUGJ'OU/^2l]eUcPjQ_HT0KZ2aKX0QSMIX,`=Z;MBt-x:֪ǞѮȨkMkYN~SxkQj^fLgKhW[?JRE ; KW=_Kp`W5b>a:]+S+JQ"S$Q0];`=onqte``9L@@96 ?HKP HHP,S0[3u^}ϳ~uWSd:Rr9z}s~]jDgGY0J`5lOiEV0N)T&hCd?W)BH~5A `U&V1Y?Y=K%B[6RF CY+U3M%CH~FJM pLv6VO"IP(FP&]-]0O$I^3x%o\g+Wʨƚ|F|AX{v}iVKkѦܨ̒͞фȼsΦcɠ`ϥlzylqf_tkbydSyT>~k&poNp\\OkBO@HANFeO{Q؀NyJqMqWzXTW^ޜ`ўiūv޺˩Uv.j*f[|VY{Q }k@ta6?k{hlj^gXLVD9B9 :ACkf_M}HpL+Z1r?h<Z3(M.F&U/+h"e5jKlOb9nBiMhPpcvfrbiHa*i+q6~g3`N :-U)   "65<#%"'))*' # &"'(!! #$1))0''*""-$$5,,3**'! $#%% "" % '$,#"!#)!"& '! " $!&#($(!)"%%+#(!'$!&%"()&+404>9>?:>N<;P><WED\JHcQOdRQcQPq_^qWHnTEiN?bG6hL6eHoJi;vTȪa~Y Zlcur|؏tLnzxJmH[4]7ZCT3U.b;si~qxpoptsvnoojqyӄĂގĀߗ~|{}蓽tss{stobnbqdpsprtsyցshystyptzpwqtuvwyz{~鏾rz}xy˅y~qjydyԄw؋n`wuf牶uqfBfKq_]9]>jbu|hXfSmtnirwormtv~iGjPyjxvsrmYfReJfQfRgKeJ]?mP]AcBrxllfFlmrv~ucunpqi_nftsptqoxsxxqgodszq~kxnpopvorostzoifOiTsdprlfmjifjhm\jdpjurumwrshmopvn|}݉}͂u$y<ǟMDWʒ3#KHh%/Q6-7-Jn[?>s:yޟCK?H U9…2UP%#ŸQ#7ј9i^y]sVzX.,nnST ױBAn >+/z9)Z%#~C5|{*\o̗]$ #>I̜r^c{ԇZqS~2䩒|Y컜trOsoR/:Ӏw R0B &׉7 #+·(>RIr.DUX^Õn+aZCK'kǞɘ/ V~k!L T9[/eUп85mLS:3;KWwf7,W+<+SUs"~1?~C0B(]'y=(}yvł隝`9ufvwulmzyswqjZnjgm`1Z3Y(C5HMCZD\HV8^Iu|ޏuxvx̛ѩܹ~q'jAAdm{UdCSZ9I_>PhFZqOfuSluRm}[v^ ch h(j*m'j!dwl']"cxJz2o~|T6ilh^wjorq{yzkvk6}%}t0OZc#ZGxW?|\v5xJhV}\ޡ|xޗ|Nxe"ugՇzFᲗʮΫӑ΀Ƕw½uɲvͫWb̏bɆWzTzWUՇQUUwPpUpWoTqXsVuWwX~WxTtUm[^Zטk՜rϚ^ȤzѧnעwӸ۠𵁑q}Zo;~Q XtNgĎvzSt&z v-t4w8n/HbX!E@0VO$5!D2|M.}C<o6GVD(I2#b@XnCJ}Fc#v?yJ`'XsNe+v;v4|(eVG@2#7(D6'@1#<.WI:xi[rf_nb\j]XQD@M@<NA>6)(4&%D2'F4)G4)G4)J8,O=1Q>3O<1T8!fI4\>-Z<.vXJ{]LmP;sW?sW>vZBqT=^B,dG2qT@dG4]?,eMLgON^FEQ87P77V>=P76A)(=22:./, 6*(F87G86J;8K<9R@4P>1Q?2UC5WE6TB2Q@/Q@.\I?TA:@,(@+,P;BE.:1*50620/*)*%%,%(/&,.%,/$.1&08*97)87)8B4C?1?H:HB4B:,;=^1U.R0lRc@L]1c5njkdhTeKhWlgiMe6W)P(LJX/nfqxji]j]_Ildk_bGmcrywsՍuΕ|ύҀԈ{څt{qlefYrk{{tb]>fSfVX*bJouopy̙ºЪnjycO\8?`!jWkVjbi[s}⏻xmk\x~qnvxyyĀ~c:T~ۏtyeZ]{]A_v>vO~LnğϚfؒ|TۍtMېyM֏}H~o'k]騖`ګųǮϕǶ˶tзs׻q´tʢrʜg依a麥dʞbtXRD_JgHtM|MK{MyI}LwJrHnHuLuP{PM\֞jҡZΦlڦYeȕФ񥊡޹״Է˴g*t(a*\,̐x\wmv(a}uz-B8 0ZW0JH&eC7\NyNAv]FfGAJ!Fc/q8xA }Jm=`BrT}_gp is^VbMl>|N aj+f*^VR_!i,z7l*bdz]h[^]XTVZ\Rc^Z[W~LWWSVO}LR}O~P~LX]XTU_$ǟm.e)i(`'a%b"[ ]_p)k*f&da[YYa`yUwV~a rW `H bK tYJnSEjN@jM@jL?iJ>jK?mMA_E8^D7^D7iOB`F:_E9Z@4^D8Q<&\F8S=4K7)J9#L='F5,*&"),.57 v*l%n/r9Rm/@ 3y= ~>}7IB4: G<IJM'Q%JJ Q)= JDMW$LFDFH}/3> :>3BD ? B |; @ y9u657: KKAFDA @= LLJ|8 < IHGOJ:FIADID: 9>B@C9L'N!=E$B NM Z1Y5Y-]5W%_9Z?\7]?Z4T]9ryyaYU6M![<]8KS-V-Y9_DkdrohgVOS-Z-\0^:eIfF_8DIK#y6CY)V,`8ÅҴ͢޿m\=@OMQ,W2Z1nggFZ*E_,V0dHgtjWLR gGO"T!K!BBBIU-V5X2U+=T"MGC > BD4SSJD}GtB j9j;Bw@c4|O%_U*gl>tBl7~d3wi9yo?{qB{pAxn?xn>{o?}N z;khtTqo@{s?vo?ph=tg݉n:ޑr8ߘyCُr8πc$oetk)Ƅ|Lǚy}ִzպy¼rῶh绤eƍY_C4GBR]SpSxR{RyVxQzRpRcQfQrRxVo_zk\ڜn؟`՚eMz\|ï꟟輦詏ڣtȚr4ẏdЮptKĴ[|+{$:I@w(/?XO )RS$FX$>+;ue qG ]J|TVc2ch/ t:o= i@sN i`xl#x vyi_ fMpG yE Ƒh-Ďf$WuLrJ jAkC}T{S sLzStNqLwSqNtQxP|S|TyQxP|SWXxR \ uU tWsVg^}Wa^c_yZbd|_sVuW tWvXy[wZz]f&~W^ZWU|RVXZ!T~PQRSUX[#Z!SQUURVe!]VTTRPO]ZTY}M xG vE RUf$d`WZ efPPH?qmexyr{~x!U¡Ţ=q/` b!g$dk"m#~)u#z-q&hw,i l%k)h$\v,r(ecYPaa$V<up-8js-s1n2k3OZp/y4i,c%Zs,k!m!q%{/9? @FKGHQ :6 5 B= CWGx+9u*r'8 DC2: = = B z9 ? ? A AEAIA7 LSSC@ C~DG|: 8F?{; ?As3}= ~?<; KK? BD>BT!AA OS%V,EF=NP&QR$E Q+T/PN%Y2Y"Y+eY_@N'FC N[#MM~D b'q5|<<y1q%u%w%7< ?A G31/f-u1E CO|̟Դ~EeJ>pDjw:=A > Q~E v< h,@ADHX,O LX'P ~5 MK; h$h#t/;> FB l(C }>q6m6g/g)l*_d+h0e0e2m=sDyJ Ty<wA i:T*sV+vc6e4i6m?k>h;c7`3~^2~_2`3m0{o8jzkGyX&w\$t^*tY*{U$vS"rQ!ogP ǟ}T"TBH!P ]BB H Z"EDAAĂEu\ݹqonƹOo_ ^e#joUh6 IJh%C/9S yeAv *HgR4`v!t;>)aB! >IA] */<ԸZFw5ۺO02fNQAüE)݂r{JW$}R{5 T@[Z䋥x@%#ЁXTB*hNO "hX-wTJI)D*T$ptYƶkf ]X]PeζDdHЭH%|ZS<ҜkM|_YNlg ,L՝Lj ǥP ʸ,O$'sC!) $E"1*H?&1O0*F,dpA l@ByQl1"dF`":l$J<1 _M/*$6곒qh]f0ӌWM*U;4 fӂ ;&a|h׊uj#u 1v;L;YH 9xB(Ѳ0gBsh < 3B$ɳMP`2Vj/:3 2 TBv`=MA-xqRH+tڦ Ԑ R}rH[;pЃD& 4d/r 2j/ YB–`!$a'@  Vk5K’a(% ,".uꌎuZ;iiϙ3g~M<ڜPJHa9HB t8Rl&9METr̉),!m/\u8wvђO[_"G6]cn]fb.?aĸAYSgBcqD +\Mn?}+M/N>vnCԐ)ݡ?`E BCG~KF 5u!7 /|tVE^YYZޒKVxrF6z5m]dhڿT/Ѡ]oi m[/ 헲w;'mWs. :W*rZ !e1:`<XI :ء`aBp?`7- -] iĬFj ~X4J2#!M" M+&k ;e#t4 d;T 0ty!&Xxep =|}GC}BQ 8~0v@[1yG"T!^r|CqWw8qAP:zws<@>88{ Pg"@Yݧɶ5eQO$f4iٮcٜ/ "_W4i[\aۚ6M3]?653a^ܺ4y7'>4!:uRs |sU`LNJW)::zg~n:FQO8~įU#xt !Op-VH  'WC$/ry*D3:h ;n`U!hЌ?3yM"%Wl u 5?~DxIG #t"]#6z.E C?o \ {xm=T/yk ~@\tӄ_*P껀 ,Cx }WBֈotVq$C.7]W߬aHޓ_@1 k%[h%,Cpi?ƬTY87 MٸWd2uuFsImjx)DCp91:VoQ_Bb.cM)|̟7'r1(s+Kt6uI5z0PvQOm$;oé?pZ"_ڶʟmfϬM1\w;''[> Z)֢|oݛ?wm`Ep:QGh ܴmr}=1+NrA;߬+?xp wlV+c#9>Hܵ ^%tʷȭS{R:M]k;D=0D=Ӆcz[3^ke ߳2DҦvъbj2yRF 6k]T'ƪqqeZj"?za *3K1\k1MB%VPM%V( 2BRW+KqIJ'Ei#<Y%$) )™L?B$x A(B?PĻ]d9BNi;瑣s8 k% {뽣'J. 4 wsHwW`ӠX݄tej2TRIoBR$4#茢i !@ $!-PXQGgeQbY3s\ι8W^[kw_šb gub4R4\}nR/c 6[Tl{%kmGѥFVݖh,ka|7?{ȇ='u>2T.uv?͆mWw-olkBoSGv4e}<ؚxjoξ[%CZRvXN-\ {<~S)z.=Qk.:@yo|zu$a_*\%0w8APA |-BDCx^AB/?BN Ah< Tp(Adc7aܕz{5D9 @&u&CwwNDK<.W,p$ {W7"x\ 湣X <PB``c~6GT qe"}ss!IaȻ.9-bѨ|L7)L1ȠoqgCxgw7ݦҿ9SvYړUf\}%ۡQ7qD|6D_éFQ( N>1E( <ڰK7DJ`XU1)_Շb-лU+;#_DG;PQdb C?-~aBoMIoioM/'K3l)(_Úy [}X1p*1AtbZە+ςt[ܬkIh?%'"π!>)#Ll@kQ`Zh}τcۗ={S^?-tp[A캨̺yr}11+iӶȬx̰m|N2Ϻ_sM>ǬLr#ű"(4zlL@Ɵ!D&煞兞1oOghǿ#vYԳ飠-%'%i?+559#ɖBzqęˋWÓ jP*!jyOh9lqO ] Q!/ZT$|`sMqr yfȋpd-(JTՄ#Le%+f.X`V$;\It}EehNI5F7$$9utQ%Ϛv߰$a8ǜ2ƪA-#PSl4buO2uZr8I|Tf$m7idCɥ7G6DɢU}_¨˰RlMSn0Ы3+;4<|0.+2 ݉dDvCSux:r(4 >(2Zm4f"nXv+D1N@, =EsFH䝆($0FPdtQx)k{S?OZR{yGtNXFqG^A4k ȗ_"~,&xUbФ6xاJ-V͚Uɱb& %'l:h5_7qj'8&ApAБIU@(qHGN_Τb )˖yO) '' Ʊ?PsBc'D2]E 'Ng0\di'M0*8%4ܷ,8GLG(+il@Pw\=c ' | A!\\@ pb@ؐC! "D— bO8l %,6B0Xd_y=q`̓"| ` mq4J`Ƞ9eOvcQro<խSW*5eZU;^i~ۡ#[ύ^ih89`\=68!=cCOkgh4Kpȑv3B]bܧ[E1`dG%Y}ig#T)ڠDm,1JQ)B JCR=(ikǾ~i$kII HHŠ 11g,;!jI%j/hki-!!m"Gxk ' cXvEw Iq rVJ#B)*誀iR4U-G0_DxsxB=zT'Y$6w6]Gȓ~G9s_&&ɞ )YoQz87?q*|uhe,JmM= Y>K/(aQ6_QԊ𭦖D^+ G)j}L7~Zd[Hz+|ZN/7mz[Tm 1~pzM~)2`].+NMq=:.NJV \3Y&;%F+F-ƣ .D߿&s (xЛ P_ S m2`zl)7D+Ӄ=l9AA"zò0 5 i:]lqk@fd?Q}{;tu7mowi|tܭ]gFv Sb [X5V<)wRVr%~:cK{\Q8kչ}gcc&sW5UC g.kwVN, m$ܯjϺWVK9ewW|POfݚgUtGC}zIӜ73,SU:CvմvP;U̷ZZ:͓-֩vk6sLꬭmcMw[ssQe76C;B]i|SXQMdYoU* BBH ,BX=fIC+-B+."K$1@@ ;*K 6Ң3aL;eχ{NW{jǻYfԥbi 5ŲҰrg;Kl.P`u!2v24ZiPZR)]ALDP Uɒ r;Y2Pib0Cph γkQsFʲt"5HbU6g2Ť"$>'m5f@`OZhGal& % 1`a#J%]=FO0%mFC aE(Eo#|nj8e2E RD(vb/A *@$q:CLvK #\f A(pǑfڡda ygq+8l`~yY,i>H$k " sXq ` F+/P@q# Ϗ+$  bp s5@!?fcBNBS,Χ@.6&vQ}Ukpx L8eg/t>ψBq.^4Aw3!U|m)zӬ4lg{+L|of|NnZLEݲ>>{ z Gh Ħߜ[3A͵̎(]ieͱ e*p)C[֭p{> !-!oAc4]MCQj9L~(ߧ'^*᪀1,w98| ɳH)rU)X5{sVFN}0>ʲ/v'#?[~L] .hG;t <6Kf&.ʳVBJV5c<ö=,Oxn]S)}?> O,7*rVݦd0:a iڶ%νa[\e&`l:Yk!S ARѐqA**($ $VJ8BDdDC(!C#(Ft4 E_!{`O>l^Re⤉'H-گafnBi\# ;$,HpqHt759,˂Y ltٍ^O_5\PrbDʭpFďRBCt ςV-E &jy|#Z,$⢥*2eH %/ECH0@ RR%5F?s)tWJζ1ytwXqnGמ2N]9u{ӵg5=ʪ؋f,;$b[P3EߡWN4a%! QȔQ4eZ(GW﷭)t[zLڒ>`/h0LÝ 5.߮BGQڳ"+Myf.*{r5?G^7 U?5fj^6vTR[?njZ>:ZpecOVJcjȢzC>8g85=32}eO_;Nw-O[: jk[:Q_l۷7Mm7ƒ]S끿Ե?fl8;]ο7fRWBt'q] wtA^}C:!bO:KP2_9uXb>PlI, PnRO{R ݉ qY[>p:7ի=,O|WQbXq Ƭ^U'>-<SV6 a'ȣRtsa4A]5[rYո!hꐕF2 ]NGfhڍ3:+ʖ[hz:S~' #`#'G10~:Eͺ#F(y#n9~_:xR!E{˫^_31i#DZW&ɅK%ƠQp(l3Z՚6fE  KzҘqzxto-dw/hc_VMSO-E3V,/ |S㪀TDOЪcܚ9$9K=emSS✼jD٦KCoy?,6x`M kP_|>E+<|R3n4/̲[E 'Mf!HM߫{{ɨ]Fǟ^0.}G}|҉a ,5^.fBr%}>ԒoQSτy?[޸G)f]ܴnkqAC/|Xua) 3 :,?M5dyuS!j☛±kO/J|6Z&98 !{f4V1lʾ[x'WfU; ۾yrǽڿj_黚_;/}S5֦:SJ{avV &tv⵱SC8k5Y}yygkiyd27wN4ڟw?oiMm/+-7em~g2@s4A"p Og@A>~ @䀜L(Z{I,6bPM#֢, CO I1P]aIϤ;&8 &$ wH0Eu |b\l&xN<$ʑF,(T!Yn@v' ?=u 3̸&;r"INTrK.!s30carIIRH(r׮~{wN<}:K]߻{[` F1H$栃7FK(`i3;02 s=ӿL)@1"{4ǾX6otUb{=vΚh9@C@541 J@EdKČ*c?1:wד-{_ȏmT~^X` y/ @D/X+/)-3fmIC?R呿H# ß/ L;9ׄ&KW ko *Np/%BZnKlN5TD"ƏX  |F<&>Y\Щ0y p 2i Gm |mڱ_7SHy#Zp}K>YxK}+|Z16ZzKA#6)SWgVmD_l7&w_-kuuԩlniǙ5<|ZXq>oXSafpuW7Ͻ_MĞ)bhjI3zH~;8pYzϼ[a}_2}gK//d8Ϲ xj'!R`.D9q"ϬwWU/֫%TbN\[=WJ*+R3#Fe Q}JnN|mṠn[='<+jmRw.Vʖgժ qK״g典'A%(h(T/V]^Me$̊TiqpNX3I yqBȋʈe|iIͪo,ř6)#2kր}evsZAN##5cOG}4jd:6C=AslrNqu0Owuf@7ć a>`lo 1>q;V66vFBJL8$CV! ]Pp, SE$/9fD ǓX"2#Yۘh^f-~X45 f%̭Lv6n_\$c{s3n y \-L5CĖLk VC3 .c a! P032 Ȧ>! &Dcc"XZ"4 Șa@01 ۫984*0[lc<ff4-_w}pk?dR\eY{[@1PtP" D   PC興"XXu- r-swO?3sfyg9<=n}lݤSLY'lWݦnb'ݬ^asZʐ ?Mľ$A"Z>Gן\G=[*uPż_ƀV7\_,/"?W2 hKݗq-䯆r_k>m)R5W3m`{;*fʎ<RV$ KI o}WG $Szaix>_ 6Q wHwKsLJKϴ%s{[fPI=;@(H N`PbdFkT1 a YJӾqsRG|4ȱD2Ѓ+@^Re7b8k>4j8uҸE#;NVm`Z㲪v7A-f< 1,{ ifP?vI@e5ؙ?4j(i(tb\0YfӈLq(żjۭqߏA/&@A WΆd7".2mIAِfQ"-J_2LA (|S7DݬD$Ht!y3GCGYw0 ufdOշv ;{IaXaO8--pC1Ƙ7Ta3dV4X^Y罕NNџS)ƬH+XM2ӅD3Es♢L$g8[uC1sgڐbP~>Vs'n~ _4@ o pTAxPli|9(,M=™~ sL<͜}[1|eXvz]TtTfW%m*O1{^ UK uZ#" u%APP.mZ@筍tʝʊr;'* 3 )#jOGS@r$\W!p'4[#/ڍ"* u+]Ƕ]Oi>/r|y:kLZu3u0F@Vھ;T=@ߢy}Ȓ]ٵ MǿGOy\\DkGV%..+-c9K.YE5UkªF^5I ֶz Eq7gHF@ H'[ȏn\]2NrSvl"j%I MSq@7|e_ܬJiGT$_mRkZKl1[&}˖ygfG0h^u Q3/UHp^WY/XbֳI2[R#.{BYÄH0.mP,Ue+rFٓ&ރ ٓҖkK劚ڶ^nH`|2LI(7$(b,@ %y)T*"3C9dV, %\842c x@#6v=q `,X++@$_7717f{7[dev:gG[4 v޺9t:B}; C To((J DPأPf\Tr*N#.LwE  48AwaW9JAxG"@.L ;]mE _'s.Xdȇ0DbiD  Ekžw3`cpX"̍҈NEJʠ6`v7/hKylZާXǴM{"ոxW[giAk5C]W愗(%ƄK3uդ1Ⳮ$#.)?YS"z$ PSYFBB HiN@Îl@ "Ep4dB 6"– N(L5']:ֻݪW;O/kRzwV˚qYzf[~ޯ9Mp+G{Tך_FmA_,~2ulS%Ju {zpf(wuڋdliBR]I;zgvLty,jq4kZ@גE; i!}m*p!^z ,吹F##MHhSQ1-|g?>ǥiہ;ЏuӇ ^|d:!,+)0/+AG-*09j>]湠9vRA b+å*P+ nRM zRK/X 92jmTnVJ$PcIaȴ&7!T+!y]#΢>BAW5t yk|&y}j'7b;yRRny)Eop|tX.֊MI3<7~%9?CB4^8'?p=!ecEZxѸXW<2"(&cݍo^VjJT2Mkg$ X$}O4Tx?x~=Y9Z2k_2şdrQ(x--sƖ"iO}msM3o=9Wj{PHzn d:E}W+WnTW5_nU4k}:y|P#{[>:.oLKBfF,]?P7!Q<nůLj}W:q@DgʭXkl`olt7 0;pF<ѻZ&+|c5lf$1f$b@#ؘ[ T40C3! D]SL1C  `hh XaAFShh5" $0o c4.(Fc $bDCc"x`D F[ab =11!Ya*3C-1;0/?m'mh vBZh$`!,@ ;@'R!>zp@=XKe1QW ?,M~]$cr8/zfImケI SU!$qo5'/V|Lc2/E;1[meά}CW$&_N7|N(IVVNe]GWW6ln0h Gt?1lqQ Qf!,jszI2@"@}븝؋~=a:iQ%0r!ʱg/ ξCKĈ:!q{I<`ލR Q 7v`d;8?${=߳Or<&z`A̅0de{*Xq;&w<.Ҷ e vMg- ^\]}ŽInHH NQk.$ߎ\7.l2"_fc$JlKփ\rj}A:쵠l)]74w姭͚;)QZH`Phedu_ƌ~Ɯ7c^}/}+m_엯 ȟ/5C5ò?PSeLoMiꁴ K/l?s871K/7K1 N N>P&JFSfU2T%&LH8"|fT6_="]֍H&ٔڔ:2$/c&O6Uڝ^cKR};鹳(+TB(Ёkcx2QLg=t4[ .ңəOo~O0\7j,g(nsY>㚳Zv9Y۴S֩ar9yCKV#BnjLl+Dss`IʷIA-7){p^"=jy;zHRF뜠fN֡.5{ ;I;*eHJqfelҺmFS.}Fol ̝o˱1!^ȏG=|Pbz3/>KX̯]k1OUj*֌ʤ$=Ƒ۫~_~⠏9k?ܜ1>8XпXR^)oj-nYTƚՊ檹*Rj割kդjh/+P^zV{y1ygͧC҅QtI>6|i<}ɔg3No3L>Z6+ 5MyKmM~clcuOJ;\%|6nX\9~[puCv @u сǶ.O2 1,* #8:yNG];ۉ<=H ]CG '1me|t߈mybڹ?,4GpDd/;6:"tO耐LĊLAl6´ $B(|a+"C!B(d!`Bs+ B# 04:e*$4=,,P!@DDb46Fcc  gIF(XX@%RQF+ X!tAe"l:a38cX@& d]H1 \-Bx(OgpB:vvI,&Tt-ao+|F/>$h=,քY~,7 e௼=kTGy]L|U89k>yNct .{.m+= 3[=9@Hp^rl07< gpH'5ĸ܁8Q?$A0cD[67&F`nw .\nqս g"y6Qle䕆%$a',@耂,m[DeeEADbA}a5 ! LXB bLzsv%P!o:EуZ蔇 uDM(5ZwV &?=:}V=64lϪ.|I9.I3oҍQ~\/ҏ 5 4zXcёqVxO7$ W'ۃ5U*Mŏ7 K{KztWGڹ[ rVynPX6CVCɲlxI:r5:]vt⚾xI_dj.o-nj+k+}$h#*t5&T Q1qc hB4?\)w%Jvyϔ%K_{w(׌ ]H܆r{dUHeki wK?s_3̕ζZD)jlW*rpX=Pj$*IWEc*?7PH'C@:: D);:WB%\mNa7xs781Sz@w+a6 ,.^,o8e]8DsӘgY w|^ "1B"A'K%8GQ#-o52}ZՁ[ |$,xFT [=l^r}9m<8MGd{ 3sd۲EAɲ2xSJ+Zs,k/YOz7aSl{(PA&u,( . Ye}GLUKFIatP AD\AŷA RꭅJրxQ2nYVF2j¦PI$@Hvd+X ŽENP"UA!HBv#Emt d}sh_CUojSjlWلMZ;GkꖎZ:&alpV5Go tfpxLS`) m\}1C;`XT~EnnQ8jojfki8]nQ U|54inWNjJgj- gТn#FA44lA6Ѝ*}M:; MFAinQFV\wuT9BP6(4Mɑ|%SYܥ2_Tsd̥zխ&pߔԫuspϱ]ɂO:k / :svHMplLkM ^+:9r8G%me(]qlTƌөc.jʔi[|--).i0^*#-WM;U,t*j2㕠l#4-(@ꛞyauWz%E%mu]*nWH,Չ:f~gHGsufVS/<]|dG*vW:(QO4ڷj퉪6>:<6?5W;s@Qm\ܳ(^>y=MH|"qج?ng}3qIH̞wv炈~-}#!=$|})Yቘ'31$)m__z|)VS~Cv?__uEϧ*MorV,^}}xMšmFd,Rg^xl#yw >(wsxN@-sG  2  p])Q2/ć HbcA5`?  H$H"%Ap !`  CB _8{@&XZ$d4'*%<"0n4@ ^ u0Md1  PB @pT"*?!k1~TpPxo ֥􎰐(zR9  &R*1x!PDo'-Y xqכ0YZ,`awl9DТzz`jE GQhJ ѫ@ !Zhw4t+`iՏ3%4gg/xul{Nxܸgg ߑ9{7g{LhN{J$}Б\г!}nsSb$oBwNxL#ws1O_bc9?nZ h7cn],oHM[kXNBp=v=$߁GsgM['(Wg}{v{pݚcNĊAqp5}*n|I}ۭ6/>Sn5:2{u9`s*Ycrȱ$ ~t_?.YcqȜp w]Rn8UYgWuI+kUt?ư>ݐw!uµ2VnH( !7lQP@P0PZQNq^J388:ctJsgrҌS]Bܴi_˶_']Fɐ);UIs.)FP4\~TI4EH-( qyWf֯_i=myYʳe׽noneq7Z]B&>CJ~WO_.Y9z1f-x6gn\$_ɰce)_L.*:π+E(r&hD|/r:Z gLL6qCޣwL݂q:)YGEbUl2 yF=_iӎ:z k5 ZfXz9nl5Xp١kvE۰C͟2+X 2B50& KuC;T]vE̬l r!ׇzRk BEVYx iPSYO! $F! j4j;-"("*A@B0 d$B#J.CtYcTtWν}i@S-S˄RC =bN^7U6(F*dS1mL?T5Q)6Q>D))Ohd1e}GɩOyDщM/4^'w\%Y靻QAZvҞWm;,}rÞzդ{{[CRqrKY|׊L׸é1P+[bqs^'e娢cf\dO26"[qiT ̪܌kډ!-I;t|lK2qSS^U]n [tP,K:Gł'yCNKGGEUiyfI\'\VuDIGt+1-Z'o {A mÃߥ}A1~y`TCmqBArC!n/^|(hyQIs{gA.L8(nySSۘ#ւgˆFX-3 ]r/g" .(|Ë'ܺܚWuꗂVճֶnɏ͢eRD;&VaN%>i "X]P \黇9L.v!ߩ{܁'ޚswA4:R`1 ǽd>ePɮ%$IqALtw>4*b|ܠ z@pd{WICWT0; xyt' G~4m1 p:Lް':V!w vCmw=- YYKXk v֐VxK`ajl!saَv\@D2j]a<:ΎH0[ z w!÷B|7AcL9ccp֐6րHN -@NU= Jу ;nЏw£$zTTZt)kUz4*YCgT$ά0h9|n#/.-T{ [ޢ"gMl)YqiTI|↼Ŕ~0+ٷ+ %W}kaQG١s9aU>\qziwo3@dOp~]FI"`6&B$R@9g [? ajLR Pb㳀]ͮyDs$1q} n23E/,%:ѽ d35FLÞ6.Y0Xl֬ '|x%{7#:ǀLMc{>.D6EaOw֞I\G!h.9/G~!ly#62Py}-'811Y#^lI$G0< "%F;gJ7qm+_|ْz-'ζN*Fr3m5IQ2߭S*j5H]ϭk&d5^i7X&|/6vq5a%Plh 5ZZ'TrوW ƚ4c xbfDS)&;eAP12,VIFU^J5 nnPT t*0ڢTV<҉4&V50?" 3qG.<4_x508jĆs>rU᪮Gte,Jd{ތ% QcȑnS8F[{J_քa:/pAKjw/Yr-0V}sMEzEu}M]$A~/:0דs3TOݟFG"y+//*;r-O}?Lug^e)XiW4mM[]M?)n65mtNu>iz[)ɩF#j1="ǽgC,@ģQ{1v<- 9 9G% < t;[`oeGqQO H=d;G IT9lOe<'`v;F|"Yj4GaW5m;ֆ1 o wS`39 [ <dW3yhN0AM,ހͅp/. *ltel }ubx3 av=hL{;ثBdC.T=#m6tW: ; {}=6`;!wn/ @¹LH#νp9~>^2|%\` Wu՞߽[2 p5[˃^X_% b,QpHH@J8+*oqQR2.p3g@ }x_[H&$|| 㯘"W/bYti֮?Vo+-ܧ:4LI)I!PE@Ԯ: H"ɬDʟ#X7ЗPy,}40Ո. ^LG]'[f7Y11JM`$ 25D>cD>pa] ߏ;=@%Nc/r' 'UT %yN=l (`pwJYwe,>kKGO_3l>%_x?HT8,KCa$?I` ^<%L:}4RZ zT~ ӏ\,x JA)J fj,,bH]$i+B%D+ >'S@) zkYU1b-$|R5K><<}{]ܢsgy o_x=`üDF(>8ogx@*jHNELȋ TDNi0Ҡ1lqbQ1#w1fL4R>AuT uפBlT̷ ܙhQi mZm|U=jjkj}|4>>B ;)m:tڭuo['rKƝ;eTATB LcCwî6ޮ ׻|o߿>TYH۠~>;, ~s\QM]yARAB'FSZ Zi-( !DD@XPv¾ (řvFgq:{޻w߻|ouuOJj+,3 [o[ - űeh/mxOϋ'~|,Ƕ$~7ϝ Mh,{:Гy# ڿiKk𢤣垺VčZSKD;oş&.vFK@OI4G`Sӕ4[ ʳR6b'p4xQCG,gxoPh kVz/xՎkՆXr3r xE^ N;Zw; (lrʢζ.h|k(_nmFگp{GA݃`v4BNbd6N&@`:1qhtk>^F9АЀ\ޛB ~T> BH<F0z#0y(ngl`x3Mؼj%7y o7>i~ 4~$X99;I*p8gq*l%5W &IJ,!|9O8Eb8vS=12ĤtIs $/r,圛f2ޏ xF>gnCA$ lg~^|D- HY1eѦ֚Mv M8Ξ'3nc!k{*l)OYcp_w, [ 0 a3!ɳ5i޲P3z|s\0IRmp/CjȨCMO6%N(xxp,B_Y<#LS9f.̅UIbp!OeJx^j^jHb%<"٤PG }2S9߀<NHz-ygGo<׽Rk$ZGXÐ"KI҃pAsdɶ4襕BtοnZ+CFL̚r8j(ܻټYq sȽq'ϱ  }"* OV=XDD%opN+ {gUL$Apk &§0GО(f9ۘX`"8GV?\ xxk,~u+4֘𚰩~|O'& yʽOe.wXv>}}tudKPHW 4OfB*k.$G[4f_)mXvD̷OwT^4 4Vte3v? $(c!&Y2&{u>\;_]isY;*m\qʈGVc}=5zClP_٩ꔹ򹸶̞]•]eXyhs#T;e=l{"arvlJTm!^=^PlX!2?x i ŸujlS6Ĺp ڦ4;pQj=+z]*:2?YNT /\o9Y#+ă2 2a?.EHewk"ٖJ튂Xҷ[EYɥ-66m(k.jԤjk076Զ6i*[;KtW47 T6U^]Js{ %o/۟n>jR_(~Ss8?"X!Bb CQ?ͤXW2~oxS?UIO/N5Ou3'겇'/.jW]Y[ZmTv _ְϚ/N~XȎbN?doӿ|:3's~.;ysCcDpwW?'/]Z9%mβ\7Q򰨤6sg'\#T6ɺ\}Jć3t-L'gx@Dt6lDl*"E|(m6A8Qƕkl `! .4' `>To2E<qeUZ_;4$! BEJB*I ==YOt-"%A*"RTzS+RI] ;n;fn'ϼlZ _?d~s_( oj!D@=427>uu/F9!#LոNg\yüybD+1J/RS%d5M:K.g2Oy_'iFI.AHr%$ i.ZM9z%Bdg׻dSN3R 1Y1J)zKϕZڀxI/5֭tТι.*VM2R㽑}DOQ) !r9WJ+Ԭ1 5sARV֮9_{isN6LUM߉|͖ ӽ .+%ub;Jq;29S=Gѩңj$ !ߛgOE%+VQKVai5Kpk;k_|*'Kf)kCPNx>6QPAUjIدfpSAiv5ECڱXfxBXO8WoRi&&HhV s/WQ| q,a;Ӓ|y9K8@83O,GN͖2D/TI7FJu!~2%F68Rr/)gWCsJ__28Xe!ΣZ.>wi.lD^AWOR͘f(ɒGFQo\ ?tԢtgw{ƛG۫ <4ȋ5K|S4l0FD̃vn2Q҄F}rq{ ^ye=[`tctc`ݢʸՉ:w-oH>4n$&S֒RhYό3WO\<mU4)NÓ aG0T$|mQ+,jrI$}KH,zL??:ނ/ "yAD[ PNyWGzGǺ:oTױ#5%ZQa 4)y3w+Q'Jhiҧ$ 9o #` L?2iaE-m]6=[]zPRW7T~nezKS_ySMe ;UVw<)YcuHF 3\ ?.>k7(2xlYOaaw3Ь*Cs5/Ӽ߯Pic3hTQG]rc>.KN* $^as^c7q2ΖqA-!Is_ _e-= >'s Dw _"3$;ո{QОc%x)3&eyaY;j F2dvfL,u]YGJpr>IK8Or:SJdyM3Jg"=E컄fR5l%l6o6~)]$f4ҽYTMJ%VnWlٔߛD)>H+[5Jo,f,T  ,8LwbLs;w4P[QSRx^&NJp"2NH?;H`cӼљ*XizMډG5by>o IWe)$` `ClqLm㖍 ҺShadfݨVhQL`osTM}dm;Uwi hO$7Rqռ٭u'2siZ .ZPˇ&[,*yD}#"5!>+t$h.T߫hl5Z;eQ)O񣬿Oի.-|Ry c/OշKյMKe ]#A1°3j0zIDލ7J ]'t):}G~n=uzo7wT˚ݣ ӲźαY⁺B\ [z*;,}?WJ0?McVkIBxŴXQ\jkj^gKPZPPuiBĎ/#} ELer{o>,;8Q%+bf}2hpd6!tn)l84O x.n 84<ޏ [Hg_6u8c> q߂ R B: @("@t|wPG @ 0=dС5 S-^*pS-p܇9GGYY搧&{>yq&03vcz`/r.nl1CS M,wYjn gBLكSvpt0<'K50zIynyc N!BC-: 05;cw' wFcj !Á>׆c˜]|KqS==lk?B_<Ӗ2}6u[C~m[Bl @K6/M,`"< A߂~8>;B̓օ=ஓB~V elr8op/Si3l4M/GFS"/5Nyuض5F%㸼Z~` ! P@ B")HqESD)$@ЃHQGDDQi6c9owg gͽs~w / ⲘccSӘ*i J{N[̟7,O')fT\ཉOcVZ#{IAG㿀l.߲|1~$t VXy~`E[ jU>l k*)k775fSrjnu`_`1i:h-xbP6oR]&O6t8[ l:kRK{gݩ_cz7[O.s|V0{P7ٱS]q iRE##bkk_1`CI>+mG;tD,;G,q'z۫mo7Ǭ&&׸"r7bgn%F#M-'`z/佥Gư, "1ѸD VMeա+T1kJ6sH[=KrF'9dx,R\F;0C{wB&._̆#y1=Q$ ]wro*rתr@(YȪM=+l-n,Sc*nlE•-J j!n %[SIDIi~)D RoDrP3!F RsO&|hxjO\<)htVKZJ;kZk*|D \ŗgj}5Ӄ[t. ypbť"uz#J~|ϴֽJnѧlXf5p̨‰ {OC%HYGI}ndݶ?SJj8m?vB3T.O. qҩKۨ 9&JMJe`d013 Z#}$C3W?쑜iw섷 xnp!up.Qu+yy@peg 4;`ۂ:A"3=ks!.H/ Xvnk4K`O;p[ScTpo `A! Bpx]`bHE8MBxM@ح_wNDr=ú\"> Z:wŃ62KW4𠪦DV4}5dF wvw֔U4`/Z #9xd dSP>QF+yI zc$gy6mr/~APy_;n<~'d,![ec 3cc,c,%B•z)DEAf,2KkB"nTTVnuz}_sաm.݌ܴi{zt.8FoI`v.QH\/~/_N{*wr}~guWcVxs/*jo&voK2ʵEK&C*uO&8oSSr.BT|W稳F.04ʃ&j9:+5_]2sz`ltMnc 87e7KNZdTʉ|-Z|}?=cQ~I0x\3|s3ax=%/:.n^_ߗ0)e!V? + 6;9Oj<Ęv#^--JδHJEhwA7)&#qk SvV&I=R1z"PX|d l%a|h0oTWq ܆AZxUj~g_oq'ٹ%Gu;XJ$zBƜrQppSq>NQp2\h  }<'kh;=҆*C^r:--ڊB$t_ŗJ?OŹ{NX[k[*:Wt o8}+5 gUMK[-C{);d@!X~܋PX;{ҧKCq~:1S8)miZSEfIHӝ!9 -EXA:Lw f`ij.V6@'bnT P, @ƙ>袁5;2,D ƀߊ&&`fdܵ;T !70!|=0CnVs38D]= 7[6܉dp%X"L' " p3BiN~*y 7Dx@ Y mxdD2`$?g{wq) Z@G+K`83TdG"x [f80h=05`18c!#a1h"Lݣ}=#Fvʷv!WDSMx]WSPV%G"ғQPw#BG:"U=SI!n 4*kpX+@5V냦+=|>hUzx}A2/%ӟj6zTjhKjPL\QtP-?RbLU~|19]k-!aָ%=dݶ?ߌx1Sw1= ֯!n * d:ޔ={ RMZü_\+pSd{<,ݣwKIx8ijBi8gPh7 MPjh^H(B$$#@((AAJA:4 rT,gO?F|ݙ}c~٪bt|9?]lXwUHyy'jY+b&Yn_3 QQ %f >7 xfW ܪ"e-6/F 0v7@6CrhYxjfzRT0UY;"nm,m_4Q;yU%oV%nL ]@Yz sWg?lp>he2i\=RZx%`nF D ŽU JDwK;oh{T咎Du5Z[2L?u+ C>@$ ɟR8Og]K=5urfne*N=QMz?rA;'I$&Tw& to`CU~Ûmy\Nx]C GxdD`dV C.{Y>?*T̈ K&!2bpjlfL sG$QdT,!L mAgz#"h+$A4'܁fV@ނ'8)xt1T' & [Yv~xd|rp"T2g1U^MpE07vd4,c'p A>m+2 4/l7H.@rƃ/dNigx]xq@`M 2VcmWrK {n'X)k$gk[1Az2p95Vf2btuF& U:uK3#bl}m7@Zz}s0=S򾡔C֬f7 ml{)MA=Qu3C^˶U#1qUtkcee S:5E7r֊Mc[vΚCE+NG>w5zGؿ> A_D4y]C'0;QMC&y;IY/ |_TR>H/s yąBtU\$pqSQԨ(hLƪUƧ5k-R4G}wL*&: BuL¤\2햂ZWH}>ݭr{@G nzyfv_q\ڌA%lŖoJ3jKKVOVB8hF/e@DCD{V@-ZLPJ s{jGǔ1kkеw%cCo҇O5}G<<;rIabɅYޤ{'jviw9ZV0 sIͪΰC_tЩ\ĜGgӤ E-N!bg*n-m"`&gLϼqoNO'<κ~kЧոn?.Wbv{xClK̪w{ IsE禨\KԢ{s={߾ݫz;oɵZ/]pkywjSv7qQvG|wTgE> @! a J $$MBb 8P ,B{D(*[A,E?P8[g=×_!^=1s}Vy@gY_kIGݍzYoMRqq`c Ϣݑ1p(t@1|5H V)@%a,1 $96VP_6yiT궮Ϙߑǚ.}oG]6WhKrB+3C󴳏]ˈA_Hj*S-VQ.N:XQb|ة`c tE~`s4#lL*bnu(@>f|7&p̳@CR6x`t@,/V֍ߨ+o-R3X'i.US c@)m{sN1_ w6ŏoWFC n;5clQKpw9hL:<6zA* DL/CzsrÚK7$Me򲦥rQMc󂤶a`sJJ @9_Ļ4E>ؚ3O\ <~;70tjhP\%ȬLptLxj*0lJv(lpQ?EE qHdؓd 5Ǝւ7r`NZY. Q_q`'pdgy ! N@|6 6yP\  yn@siUd PޟN|3;A<pNH/ r+Z9iT:kL7gU.z7tKXSp }r4>YW 6mrzElO3ež?9v͕ jΐ~Sͳ˱}N==?]Ydw4;.1u2=&Q}ɸ.D wUR\ zE)#'ފ Vxp{sѿGM {0tc䭈/-`#urk9\gN>z ݊z7|etϱux s7y Vh3efo+-^__^6o6مJcnO#rG-rն&1O@g&ؔ$_oJhzW%Z9K>EJk W[#[#LADEDBw09 5A C =@MDJcHƿʶƲsTvy?zCTdtW|hRTjUGO9*B "mHHWvA t(u&g{3;ED: 48FV#i&p+~)xkmcmgrlg]u`bkn 9]6ouCk.z49 >6k#p0i0e0R$K }P%R$d3W'HK_/ęÓ¡o\lPdN[LbDf-幡ΗоynVԮMSΧIṾH^͢BaǝCaFe>m=Z:^?`ĕA],Xl&JFI"ʕݞՙќؘឣآ˟Ϟ՘⓰ۂݑ֪|V?_$t\t}~ގț{_kŎZiȓYc˘W^̜U^ΟVbСYfϡ^h͞alϤ`^͛\Y؟\]fW^jҒrp XF;XG= N=61-I-oN8Z6>''4!#,"'%!" +&&#.   "   !#"&# ,#6&-'%0$5$*7&,0$)+'-""://6++,!!$'5**8-->,2?-1P>BL:<F45P>>N=<M<;Q9>P8=O6;S;>U=?^FGhPQ]EFZA=aHD[B=aHBcKDgOGhPFgOEgMEv\Tlc|`Vx[P}_SsTIvVJsUFtVHpRCkM>iK<jL=hI;aC4P>?E34F55D22>,-<**6$$6%%';10=32," %+" ,"!&"!' $6/;5.;!&"'(!A8<@8;8056054.4'"(*%+*+7 ,#"{HyH[%U|< KC ? N.AFJ!S%W6N)Jn2w7O: <MV&_3LFKX)L$E"z,R,Z&> = D Jv9 r4v4HMFKLU)R2R&Q$?N!a8T/^1S; ~=x7|8GKHQ!S"Y#H@ 922={?H }B {>OO}67H{4~4G < <B m/j1U\/Fr/7CC Ep*{3 FM%H:|/:z7 Cx5n*ET(eOdFwzxzpZn[p`yr|~e2Z-jLU&A9|8GJMN a7Z/ENU!KOa?a 鄢bkc^LP.M_]~zvݕ8tFSk9A _Ru`rkL95M8<ޔ`^Zǔ(%Wt!x*eHNA<N˗] oJd|5l9T.mV2dP"؅1n#B1#PWv=3P{̔BCL]gstSG]Apsnay[ݖn\KیO/RQ%јđq-ēDfkC,M]ϚHyv'EG#[Bn݊b";Y6b0x]=}-y}3<;Ӳyt8'ǣIOZ-mv{m`(P5ۿR F b=|0-DPnGbWRedRxA3(.I8+S.gA/zli4>լ?P1Iat=@n k̶[J%Ie˘t T.>\eZ.$n(Qf/E>jp_cMnWLo!GWH1kiiɃP:X0h7sg_ݨ߃oM dB }On}nR\WN~0{k>ydq{c;rOa_b.~Nnǘ?6?'qsf礅kߴM]\6|e3iڭ/2Rʡ+6'ۊF8 Τ#lk CV=Н k&HS9RhXt_ <`tuвvW2):o wTsy$wt+ Sٴ lnZuJ Tx-):vН[n6vO 5͇k+RoVUK%yi`ѱF # 5\i=m_^ n5U5dcq{fΒ,|{Q})VC.0|&*?#:'A/sA#s[鿡Wi"L@DyU# rW'{>^C/aJgV7 Nj5J~[kfs\ 6 x M-wk_wox;ޒ~ʾz-Z]wI9.1'pW4%sy.j-*Yؠo: ;ox Y43Rkbݗ["f>f&2wЖ~BsYŕ{Uٰ\tyk*^Uz_&߆e:L.yFDFYdJgIl:yL=_pYf!sk$El:DF!jR8J=4Uv,AjOYqϚՒgԧ3iqvNy=X=:wc`u\.P/Bz/0, 1^%Do'(3,N%LTF* I%`}x*C}hX~ewAp r94$̅Ue|1N,*EÆeAm$^: >{k,gwBA{ڱ'ۭ7F&':g%ł$]O`JIzeZTʙZ 5I`s/ftD4xv髡7c5Jo4ݨQ%ﮑj/$ngU\{Qͺ󼆜}uY奎ҜtBaz^N),.*{@ź1; X? 8Y*UYq]ժGQoL*<64Qc\">|r{yWuC4u=+A-q5{2wb/zO"gj!s2.C~ e1a;xw3 RHE·ā=Ko=MǮs|)=5j}vp>8T3??. Q!cː2+gT[tkxe\*$Iʝeu]IS&K|c&+Ym + YB5?h|UV{xNݱhCi]޿6 \poJ{N{IIM%f|Щyp_$}\3oQ؝ɹ.yu3dK\ 𶭺Im[&M[Jglj+kݼd>@Pe 5rQu}dG&m$ Ǭy .i9c ܀QIoFq]s;:9n ѯ{ح:zMfǪn#RY|@hX ]@U#Ht'ƴ&n} ު:3m2rP< 7 Jܟvl=cA3{) ݬ&hH~*9h?} YA2_W||.a>:5$dVgT@wrXDET~Jg?AjH񨌞 DT (b ^y vעќױUP{jpp"4>qvսvɱݥ*3n箫 %[1s0c> I8#Ө蕤d Ith_;a~n@ b > M'õN'qwdA 2G18cfp)PIānhD`WxD?qsa@Z?GcfXD h`Qx[)p(kig XC8Ks= A@AX󽐋ŷ`k(s`1\,Ζg{W#3ypG,wE .N8r{g hAؚ{ KvGbn xO{x7대 4d"};HQh@$14/pT!ǤH.NA^81^Qq~S}pm[Xԯ_2Ձ?VVm߬Z?|]iP +w/#XnF4J?K%~Cz5 -L&{ 6oN VKIz=']tmm9峑s-]R֦u+g]Asߔꔑ/l ۵ESEoce[ ufrVHM%3Iк`ԟOw%pVV.ӟZׇ\ {a*Ŧ[a߲Nq icDy@l،jGoy俱& Om//tW/1Pq5n'!?FҶX i=2^nw װI[~C[.+~˨16MZ6,QK2fFRP:~Yw1u%Y!iqG ٤8#8wLlX~<ΠL7% 5.U[~0$`n`t/t rs=U) 0=[@SH? rV1:sGKϏ5Uߔ%cץʎIykۄSuu]2!U(g3Fiuil"1ʠv"c8ujhNr~ё9iF̼L5nSR5ݟܝYWƝQFCB׻™=t&u%S*X-v+5UbПYdџY]ҢXWةTVްRVLT]P̘JPp{xK٤`>ՙ]8h>*K# 3jG,_D}X>e:#g:$Q/ uU1qNoMjFpJsJoC}QzN oDkAnEmEmFtMkKlL mL lJ uR devQtH uI rF |O ~R yM {O tG xQ mF {T }W pJ nG pI wP oM vT uR xU wT rO sP oL xVlLeFeHbHaJaKzWBnUrX~cJv\BeIrUuXhJ~gR}fRjSAR;+v]Qg^kRJcJD\G<YE;TB9M>6B50<1.6-+&4*/=38/%**%$!/%*)$( )!$'4*,/%'/$&!*'$!-(%1$"-$!-" +#(!+( + %$)$*&!'1-4 %  &()-"#2&'=MEDFAJH/ LQ+:DW7PP*\6Z;[9FIP.Z5YLU&iOQv+J^AT"B 8E BDI7%%V7U,T.Z,dFfZY&J(\2_B]DZ@^@bL[KN(RU1\8`6[7R.P&S/X6]CU=I"X,Y0FK![<@@Q N$J.U1^Be@^Ge8gIhj\=fJk`rnqibT&V:hhkhrvqypg\3S$cUcI[6dNkWeO[:S+[/X1= r0k,FU/Y(];W8O!T%eOOFV2hTi[cYaDX"C8L!T&^?T%MDRO3 ?> 45= :l*e)n1{9; y)9 r'7 |5bb m,v6o3c(`&i/f*j,v8m0m,GE<q*ad%VV+j7y:v*+G 74ApGHd9q2tvfc1nc|UNwOIqKB|VFrZ }_WLvLoXk^[]|L VZ,JDA Oe7]/H!f=n?|F J Di*b&N = >P&ÌѳürvcfkXZ]IJ='R6mkrAf>k^r`e?_/nEuĞѦӪЪɧ|y2nq~0R~ʭ~v{c!tXYde ªgűexd~el cLZrae`TP L:;nIt;G JP'F~HV"V}GLTr3C f™|!{^C}Z1g@V%vI c0٪wlшlʔ}ONCI(Ta"I͗#U'_$]7T:Mԡ*Hٗ,DԊ&;^.j.d+鹧ⱤʤȤӪѥ؝כʿ̗y_uJS}buƑh_՘ZHIGHULW߳MNޱPOޯOTۯT[խV^ЩX_ӧW[ڧQRߣPIPNެTc˨Gftv4Șz-Қ_/٩a/T_<;8fNEL4*]@0cA'd?@.%M;2XF?R?;1K86H45L8:bNQm[W^KGK94VD?O<8P=9YFB\IE_NRWFJZHJ]JK`MLaNJ]IDaMGmUNeMFkSKqYQmULu]Rk`mblMMnOKmODoQBwWI{ZP}ZW]^]HcMmW kjpWmSpV vVz[|\ wX rSqQpQoP u`kQiHmFnFrMuV rV yR yR vO rKwP~W{T pI oQjLjMiLeHcDbAdBv]@x_DmU<dL6XA/N7)R;/R;1H92@/(]JBjTKV>3N3'M/"K,J+*A#"I.-I00<&';')D25TCFC068&,8',9).?/4@262$((("+?8@[S[=5<3*0D:@?4:@84>61<5-81'-E ><84DCAPY*T4X2iPoaqefV[4WA^HnNgEkXlWd=kP`-Y,h;X7AAMGO'X+R%Q!V-T)`j\lfnjh\ojpst{xuze]gmtswv|v|mpkhs}qohaibuukigc\JS,Q"HA W!hNmtkjomlci`pzyzmbharx|}xvkk\dB^Bk[l`n\gPhHP&G!O#LL< ;H> <z9FKD GD R$w) s&6~2u)y-8n4c+[$_&_#g*|?C? S)E;8}6 >|7 Z-i8w> w5|3F~8};y/Z#{oyKb@vM>vK:V8`EbK{VAvQ>^HoRyUuLa!h)`!uN`>{VFXrPK v;y= GX/dD`<]9X&X/R&IJ: x%08 z/{5wtϸȹx!q^cs`cK73<&mNGd [ V$^6nSiTc8p > T"FHY*Nw6y:H z7OfÚRrX zV.kD}R"^3kD ]!\}řñÝU[C?GF̜Mğ(P&K0F̩.Iר$QԞ3W˓6bϚ4Ep_q}.Yܙ۞ȗȤ͟ʟͰćiaeTn`rsosƝ`WکOPLPOKߺN[YZۻVYٯUXإQWסTV֤\V֪[W֯VbĘDd9m-ȺVϤj78 @TZ;%61 T;1=#R3#\8!f>#A.'9& 9&"7$!7##5!"4 #B.1B/,A.*>+'I63B.+G40L85O<9B.1M9<]HJWBBL75K51N83ZC>T;6M50P71K3,<gXYa]uq* ="i&R) Ej(RDA@(;HdvfY'~?<=rr3fCBI(-n{ vG[d c0/ a8XrTrEB\Pb`& %;!!$G]O+YDx b8I>@B2TGdH=<ɣBu:@9JkzbL!+pԽ vuffX&vt'@/>gykURv`f W,oV?B_򧈾yR> ?}#E̐o.ķ5粰9V֯-zrV* NY,doY5.\tHu7QԢ9s=ÒJ[Y#鯄Mq!zJ_|To"W-ڔ^hK$/rFҞIe7ɓ:HWC R^'LqéOxci+q#ƅ[郧86҅eٌ`s<`=kJV8+[}}CJt+wRp™5tfV˅_34_;PYKf!?`oF~\O-z]MZz޸|yLhL^2X\l~49[QHHNJKI@p e]XfbVZnO bgrp2{۲]wy<2*e-:O[[i\ŸwH`1 O7q2-_oX7C|t;H"5;RQGA[ܽuV7tṙѪҐCp8w Lq7bI" D9@{(`, ,fhV.oX5)wn9C}%FJ3,K5$5C*=;/C#p&i;֩;T En\$?8To@6Wl(e/1*Y6jRxӴ$zg}J6kV??r{RajLsjynݚ=eMBTO𤪪)Gf_"L<ېvC) ⳍ=!.6A%qӍ"hbZە// =sGІmߊM>n0߫WݿK1К܈+{lPyY9pm}Lځꡆ+7|iT6udPhG _X> GW3[V6 O^z|Zݝ̶b^DWx?qlh?~T aqM+\d+4qIzJK3S>k蟺ޥ'˭mZz.O[ő-3b-E©ڒrQ-eRRAy;l ];a&"m.R:(o[/U=-"kmg[) z,{3ׯAۚQxK$8 "dOꈅph`넸ۢQT'g =]0Bv[[cn95hG@s"E'& BRtgv5Dsq'(nx1hEoPXc$B|vM6 d!^7dy7`R͝<dT\!$@HB4)D JZBU) !4e"*o;7;̝;Nu@X^pNkGGw4!>vr>48#PB]rHAֈVΏ$ǤŏB@*8NT8BY?(Ġg;`3N~D!a4$f |ߓx[MY+$HJEjwus8ZߵFu6eV軯,E,!/ Qy M  "P8Ts T,dzin3׆W c_-w "w}p~cXNEs ~MlX 3Yuʃc ͱMF'_iat.vLwRsʍ7&#Çx_ |̹#z;ve,dFibwo"ǹLF_oXc/'7$5D(aLh^OɲYf| [өϋ%{Ig҄IsY,iTiҳw2᧲œV(o)eF>pgc?|pegS^ߏ" ^$͋]M{yu6iBVBp.}ҙRw*n/*sh2?>wˤ/esi/.ΤN \/[H(IxZ4#M{U3~>}tu9biҀ$SvKM6O.[K9;Z]DPѺj/8@`<^syqK~G+;ŕc m}ζΖ+]ڶکk;c7֖̋T#BR74SD94zxHJtexqqbq[W&/&]gNh+:8Y0V.Јy>xgTvNjKЦ0VΩiCS="Ki+U6n,/T .6T,O^bWgJKW;Jr4\ȍzT*c}v;$j-0Suwݖ]3s*{">4QvO`5 j> Ѭd ̍ppc $ Bۡԃ#ڠbƌAOK,M`c:Gt{ `9Zs6E_i FZ D ̈[`$P&`AG|pV337#[`47k#3 dpF{TR8ڐ3D#.m+s4c473-Qp`gމX`=E1c# وgT[JSFjPB% ҤWQiA   JU:FTH%zUt8z]ks^uz⹓ Nh^72=|8nZ=/IMʎUUIXݢBKnzvjݩНͧvuūbRoE7rj 7{S^]Izr1hz,փz=/rƸ%ͤ?CǾ %^?=:bZ\Vrd̗L&rBT#N( 7e5+f͹Υ-,Ch/?P.]f׉jܶir;9zyKa U//_XQ׏fK0[mλ辜k鴑Gs?p& ''^OR9+P3^\1L:?_!,y?c|}.Z ~\*[͢hf*5rqW+gPdC԰E_SlM 台ìOqgMq?eNrsf%D܍g/K[3܍ҹm7]O 2%S3tAقS )V_UtJ`nQbj|sµ9zlf\QD),,lE'[?O ʹxup{,iy1S+kC7Op<eA=^=H:r3c+7_!ݩ'.QcK)?֑Mפt=A?r&`E*mZvUGj[rO0ߜqSE wÅƄ_?E'lDS;"6|0{IZ6SG3|(CE!jQvh"}3ɘvd 9wj2-gdbfGa45LWg bJBݙ3b1 !G#°sF)bi@B,1 -tW%1clwP ]QD\=߉{L't`b>p@<)t'jE0= <(vu%ݑѨ87&jsAx@ ps Y=c0@#c} #ؘ۠戇-G#QwX[*X'S}s܈IdD4GL s2Az:ł?6`E$ HkSlb71G(p!;6xO-j ANDyyG`x` z*: r" ^/j*]{DH@RHBI$$B *6 Ho""RC"*".g3{;^ѹTLyW$]?ǹgs>V<*ܬ{[z*‘![%j@d́Y Ҡo]k'"䄎Ë#%Éݮ%|#ičQ܂]CzoR KoNϪMcdmI֝wS ˮt5VzdO.^^wluvӁkG﷏̍UxKvp@HWSq^Bn$BrLq@܋CfPIm1Bni.-XhnYr0//8-óAϡĉi4KaJDgGDgo~+ }9v4O& d~.E(zWJ'NsJJ\sB^G-hȖx L8dSwNƧ+yѣ%Vt7-Nyj?>XJ\C\S:]s_8dA[+_-6;;7P5-l-o^~"ި=eUW JVZXJ05{v'y>Ωe;W9/Mj JZfx(X0鯘s,eme>T.|,_LqD]VZ%ح[,D x hkAki[z_@2 S}1qE{Etbixlx[vK;(5D\ otr`RIEo[dە[7 w4& g%JٛP?؃ַO;Ǵwgb\gF[b4;/ i(6/yW1yT5ykVM3m=3=GeҙށѡfJ= nO1 Lqs C#@~41- p;<0ıW{}"OƛхL+^6hՇF(1t#zNl,Ցc5hgdS,ဣ)آ>a2q0Wxu (JO(=1:kV}D * m, @H|^u6T`a56y຀l+⹀(wXF1nDqn8q6GArO9A &Aa4̓'`v [);K} "ٰ4f`K|8olI<WQV=]HǕN"ّn0D;"E iXA,)vh xPTa)`mNH 41D{ar˜H&IPi_2 uA'$yhW9n "\1\(0 L\';B#`1{l`ȍ PKb,2Hd97GgC\l4"Hd+| YD ȴ^[Q0N4:v@ Ǵx14o\P_R`tp0@h@T 8FT=8ȈQ q$cIhNs $20H'bO y-|M;7&u?te_L8w 1 ҬZH:_qSmX Xn*ZJ߆V-;F !i=oP3Vujڴ1Ra5&n׊٢FyFdmxU(M&ֆׇ7k u;O UiS{…3BV()$jeʺeFheYnQqIV\%.Le? N›/ة]٭XۭUj2% !!()wT=zW Q $F({]R H;#yc=oofvyf-owb[dׯL8- ~NA6l'V3mgqҹѴԙcc(hﲗIGƷU>o"mVƻMa uu*倳NWk-uN`^z_%RNn^ϟLsTO2RK_eͤ 矤Qr|-<8YreO>Ш3Wģޘou>{j?\ɩU}Rv{&ĕ֒]}!N{HQ,).yڥ=_:-劲{ļ$?$v_FL<.).˙\=\/_(-MΖƪfU k{ơٲ¾ɚ,,jOُmͲFho`yioE%7cNU(HrŴܔJ )ޘ/,*tJⵤ9DuQ|8XN8~J|fb3㪲KoEiԧ)2or5;DiȢ;N TFtPdxa,]yNtVfRCGW!*ORȿuDA +D vүBknm( 1. 23YE[K7 i} 9ncr11 N֖HW+p8'c8Ww@0C:XC`_uᒢ`z JzJEWJigK͠K2/c>JC49AZ;ɟ{Ps#!ECNg>D(pdQ;G(}Q:+%^J~ym2}/M9͆~R~XJ3YRȲ)yµo'ػysWeQ:c͜lWs&s6&rI> e0Zz[11ON|Q3ڡO_ޱ}RRn}Jk meC=EzM&?Q^3i{Y1mNe=g/0KhEEKe /S?md~mZqXP|;:ګSsV["\:j^ثX2j"Ma8DEAXE;QNEp&HA"B$HNBD)(" %x8*#3Z⺳nlvG]US}>g~f>ZT^8]Uhft?dL'c(_a-`܎؅?|6t(U6{gY:೾2mtK(cs~*[d{ܚ{kŠmncO/yEEpU5yֳ1k*X Tzxd) $q_nIE*f ׺{Jrc|J~khZrwzGYT(E*٤H8#VN態Œ1ْxX6'>(l(Znn5<4X"@w|<@{K ҾYd|iPnL4 <24]$V>'6HV̈QO ;pl}qM$@WBL7&+JWz%ovv/tJTEsީɮgHSǛ;;zdMs7d+}+}-=e|2Fܮ,LX`Q# Pt])/񬩬py_[ʹ:j ѻ+/t5I+LeqBR A}B)ѤVN6+REsmO1){toL6xnTsWl{5G2Ey5gS/!0{GcG \jR)N0)1pLirH-InveZ勡Z5YRF F.c4P4%aLF;GɦzxzEU`0(`|GlÏ50fd|b]sVlFsU(D,WD{8|o'/PGm:^jt/Z"pjA5R=a1 b,#st)s8WgMWp%A:HŽpo?5yo\[P[JZkuoU2`Q&c#0v]k'iɺOmkFCKz{ dnGV!\R6b!7$?rd$伫,XBY6-|V>'bN h,^w=mJ!?5ehV3[`xyz勜u 9wd/ rܳ^sSf~ey0Zξ 5xMKډ ~b8m;N_"F_rTWUs_ >VN_UN =eoJ\弸<_N xOӜytOXf"^l/}b/>޴ueѸz%wz`(k!n}Rw™T9_O 叹^J_ے.rU,p=HQ4%J V=9ZO}c[A\7S-z(.䟱'Vҏw` CcM̯eĿI?/:uZ*<%uRd*" 8Gu+:#Lܮ0/  3ATdLdFDA&! c!H uz0$! E*K@j[{{W[Zm?޳_-dEwse$g?XfڱEF[=Ғk{uS fx%[fMZ>7$z0$=9xQE⨢E5"=ʆM~o`=٤ju(w&U "t: ]4.u)t:1ZsϢ}.hV;$8g fK*R-<3kcWw[Í d8gӾq$A;G$pxoDz <`cL^dm8lA.fpF\:XX`&اm9i ` @1j !Y@N-ay8׻{v _N/Kzz how2G/ǧ4 R]{wURj|컻כB99%N{sDo[PǍRe &l .e]5OJOo0q=t:NOJAJ|PrJb#ZJ=TYQo̼j RXӷ4pO48ڢ6/HERŭ[KSS2 SKC)X%p U9DQu9/?-m 蚂)-܈ f&9ь kG cP D+;!Dœ[#dHD Ũ-Shn֖@2ElQ#Y:4=Qjt;{8}]ݱ9J[C`8lA1cwFң=d?\͍>DyRHl?#ʒ#Bh(xa=p"ܬm'"r#S:I,8YQڙ{32BEwlEBm͈/MM]LI1A'f)`2 +1II@ŽQL =lOG,(`fhDùq(?/ ѮHǟ]PBΈqšU rʌ(k Ĝ"REj!I( Q!P~6- M^f4!obj6$: 3E4|WQNWq쬮AeEj%hݾR&*I'21;/ ]őZ T%ʠYaq𜨖FkƝZ3i<1둙_ܟ5bVe|/{6CY}jθ5x'~˺!Di$`+L|GL, v17=q[3y?I>Gz \3Ak'rẢ'௣@ݯjR[UԾ޸rfzn,q\ECYSzW/WX/XU@Uסn e 6C]z^fTYQsdM"@U;k|iY)dxpMSV? )u<(}j5۲_ 7XYXEیY^8YE/ Ѯ zB*VSU˚ Ö`GJƮ#7tڠ2tլX6G 5/u· bvNh7^Yt+|k~+xn\vʎ?l NՇ7o~"X7ʍ;6͑3-%ɯYAse/8V+r_Ux7-ݛJAUB( "e 倪Y=j|y[UۿZZV<4O[A-.`](QA -- i "7 p* f83d?67o{}>O3ά̚~zY3:Ss!:ڐAK{ un.Lo*Jݢvik HJ8 }+|hLG* 9垦q}ϹmicwDu{\o04uzGF;=5ia" t]ͱE֡SΖ` ڎA ッ ne녰\LkS@zpd=4GaI< D Xwpq%}ɶgg ֍yueDSH,JޝT/@rFeÃ,'a(?q(&: <<(VK}6Uy6UQ8 ijht=7Ä6#5}ނy(1W B_0D0I!QL=C ȉ( H!?aȓA9 6*vg7_5&ښd)DD.Y m8c{"[mN)6e GSog:==iߓ#9|쟱9d~{X{OGzc[ٖmf6Op{s>^M]f]L·X .ԑ/[6n%\{1 ȹWs[U6?9g(S{}׀/2+޷Uu.h:+W,oN/+?4fB)bl@s/m_Wl\-_\k-^|zٯ#f ?fq|<){\h?t-sU8px-/o.;=-rݘ=:P0R8xҮL~Y?ZG>_:'Fn._Q,׎)k5ek%[m״bY3&Y1ZTS^5-UිOQ1q7XϕSe?,;-o}/.Wo K {=?b՝ |, qNr> dV'q[EĄJ:i_Hlw>[lS rc 1cT Ѣ|dw,Z,o.U._0V͞Y-gULu/݋ Ӭnvg/կt_>ԉ_)WR5[';TCy Rp!A5qFEfUeMfh$u'Hnz')֏ial3E dМ6]l?f%y0ObTeF*RbL A*A~i}x n|J: * b5q/ x%$B+; CeFl!QMqG{"Ј$`3N!PmJY <'i*b1b}y _Eg_8˥C){;`CH|1"Oe:l!sD ⹂#hd&89@RcX ͑`E"%Ɇ C#Sl(D:ѹHK9!s9T;p(H'YPh,"r ("Q\p " tG{ :!,  Ӱ{vq pH֝/I i'!K= x"ӑvcKIRX$61$(b%bsw{M#!;"a8y~\^tf]um& ~~  01|9a?> ܐr=SpZɕΤy 137^(ey&Hҟx6~W8Yzn\ۚӚBN1LzN~bӯ˞~=pSBjcǢW'_k7vΫW ֊UT-e}3QIAfgؒΞoϕz ^>t)OGN >^`L2VN+_[P{]k{Z~yVܠx+T03Uv<#I]pUm4ո߹k)aWW=4Kpߥi*AlZ[-Yh7+ gy禥J8E< q\㝵KxFr Fuw6gY4̑c(U7T!6%>%ˢmUf9_y `uqYucIg/gnfq.xź$hB}4:rMŸ ųkUo-ڵ?TW) ʹGo-?|uâ]ӢF#&fXRo>],]jAqXci鷽˥KV{KvL. Ζ}7VܳP5R[;5KCڸɬsR\*6fVbIٶ+܉ ZXNn)HˉѬ8Z.ے凑Bnt K} •g;`]pԟ)R!$^i.d[`Zまg PpG`!B4te@^&Dy1@*a~x2mf b ;@B_HB#$HB01(A q?}sf~LkWuu8Z0ԘstCC^YYV7흚껼|ԭ}MUxlN:>3J f9dA 4@V\J,*KH„M2jJ{Z.BHB|!,!a A0TvABKp h13s*E{;83t̙k|۽rC`i-88\\(@Ѐ}v)o80#^xwqbhr|q܈~a==M@wjWkvu-EJ:5fiS{ ] -;^#TW`jWX՝\Rg2 "F+iܾ}:^ .=`r || u-Q4' Qa>@wg}~XdH)42ZfHl WB\?ȼ)`̅J-eC~\:QZt&i( _dk!-\ [# YY Z ;c#& `$o8d>:R"(-z&ChdBHW-1HB`)J!ekÑ>*% PJqX׎ sӒ4Ci:JD_^.yu͸0Z`2;8hxxp/'ʞ7N?k+_?ofw7tnrR&>dMp;~}fɫk{3^8Rxʱw=:V0T>\<Қ{-d{wmC:5/ȱ SO:ƙÎc'ޑ{oԦR+{qPK_wvHɱ?K482ih+OkTNJyo3r/)5͢ޖOƹu'a9֠Y}< Pܳ'6Zu*gw{[ .ͪŵ-WkZ^/ľ*fhI fܦsWNj~֮|==jx+iK]HGmIso^w?riM85hNnՖ>N1LKK\ifϦ0'yّޗNҗLuxa뭃/: * UӍ _͔/4LWQCX<^M ?f/nW~~2ߩ|:_ Zۢ$YjlW `?E8}v1_w@+e@60!g~z/HD$gy$*") J|7.uGz:/47dk^i9{dS#&VU+6W[TyvjxZ}Oϟ]c&UsE1De1|WʊL`gR !$HL{Dޑ]"%dEp6"TH(SJ2Q IKpg~#m9B,'!<^~h@~Q.D|{&i'92H[N!`y@PH!OSr+cFyVJ-Xyo2ix@e)"l+`tdVbE bTYл%(dz^$ Ex)V*h<̨B~|$LƐ0Af2ieFr"!k32`TP"R,.n@5p14,G# RVulD@%  ,I\@As'dL*Hid4ox$-0q$БA`"p!q#'ߏKA* J"XL&!J(v(4->i~ I!?$_D|>& eC(%>"B0v'N3HdDÖ ۗR>$O/pwq_En۟nߥvdNFss&&6tHVH枯-vK eѬ;v>~ѩꡢ .xgRc񊅶q#7,?N2]KtٿM}hT5aԭOw:B y=[&I2 ^fо:3ϴ_?Q>=zmKO)y8dz19;dz<\qϨw׊^u]7/MZ_޵[n\4S=R:WMKEo˯6\o>Y3ii;=tJ^x"1N3!4Z+֎Y\)}UM?wO1?/jh7^ӠA̸'Hp['g=MsXMM5Qëk̑g\̬/~hW?s>,,[w9C:Ѯ{&[wnU?O(>$dW4h5T=漚^vJ떻^ː/ W Ο7Ϲ/'6ܒ\̻v1xΥYDقe$}Duc7|k[hlxluuS{uw>lBیY ˃S7','JM-4MX^uNZ쓖)']7˟̘w2w2?͘,>9SqfC#˞4Z5MT훬x7Ng˞ɮ,ɱ C]v q+lŚg;s֜g*լ&lإ.Ю(,qȖ,lE ]̓H.hK4LH#C*9)d о@@qGb9$eR4R44" \'`kH\@8b E-" d2 ; @&+C:j2^פ\??eTs[JCk[ww.o2볳ef9-pn)$9pHWnrzt#aw,O!Č( "l˖GA :ˌB"ajfc{TXRʸXg*%59:7hXnb>VhnZܛC`{zȎ-Ws\+V>G,mo}{5+qy˴3iR]NO9՛nEdЯu,]~e\[frr~t\T=MÚ \.Z<\ ,WU=jl?QcK0 t]Q3ɥɆ?ouƪj{U{֍/l)U@z:5r0=#_ ]q=}ܟ3TWtԡ&uZ7}?m{ǎ55nKȱY0lM"[ع7,Чǟ$vSӣ5sb޵EЩ|A>^ Լ ;Fпu&.^J~'Ԭ .;jxo|n8iTɒiETlTd\tҹ٢gw _5^T}V9^VιC?{KU^mki޿ﰱ`n6XRM0ٔ ?Il0쎷ڛd*:CJƎVM}KcSvAvn'L\*TrRÏB|1Nʷ a1 h\=X<~rasGk-=F̃c-g{ZzGۆ ;{<8pmoX E$!l_<ײ!+qӑ\)3o[h7^V']{jCJՂ*2U\bv>>8 &A{]Vȃ:g{PP]ǽmCw4;ڊUYGSh.&_2%uӤL:wR|(Nȧ\ <Fvo'"l]l7o6GpI?' gpb -~9<;V 6nASL;`M`5 }"ېɎ N;`l?wI{? .>Ct }u?;>v@p^w ՇvtF5 |Q]]=0/wܓD)?ț:3 D\7w &^hvBq5q*^ rAHW8@ 08B$rx +]׫Rڝr}Ƿ{߮ݟO )p?6y; خTLHeaLw7A>twz{@V|$ɖİKʼnپXn JSEPKY@ y([nXI|68q(N!AUjND(kqCdiCxRp6>2yˏ !_B|"#GbpUL. @H1AXN8훎}cxaT%ʄdpq&.5T0A?Wkڼ˴ҮS<($s+N'vƝ ڞ-p{3xݢ .ZbǬv%8Ip)wۂOc&)z>! {Al b=hruaMEaRpF>QKW5f4)u\ ou'>-ڝڿ3uvB2E|ϽM|a[o׼~2tORo7~vHC{jCab(N)fTjmؑs\5<2Tz2Z~pG@k//`և=/IN+j0cDg+>X1g$Q$]ɝ[w<&k-nId3}N{?W;&r$S-OOs*`8磰O1/ޔ!g#_{8B'qd-@UјEs6MVjz|z#͍';YsgѡkيM/]/{ba /v_Y5WcBtʗ&o5^Qr֋ȥf6?^{5[H;W7Q϶LnRG\3YvBm\y3=8t~kvfVy}p3 x5Mv-TUܔe/x!L$wV5<8ߴg\[&h.h*/I AI YR +L>8B&<^`*H,?+d@Gr9 q+ .$sw@ bb5؎@\!Ζ!s0r`'BRȘ(yPǪ𵙉d yYƻ+mvۛj|Mʒ*S%?(ȯ4k.Fn.b_W*SnX\FVVMT7RJeU㭕b( ж](0A&Y-!'mQdp }98%Є8>\?ƠbQ!ǁ0 m#wn;tH먶gK79|^{|p|EMu}mg&;Lv)ť (u |}e%%P(\goC * tG6(a_뢑hcKc% 4$*‡ѭٴi3bΐVks |xT`֥ҹ}C%*F > .e-5\۽Ts%mIt1e)d{w[ϧ#Muu%@G3ʘ /};O ֱe gDGnUKeSC-N[#So2?e^՛7(^u)K`ogބ/>'ws"ߜ&;Ϟ_|D_%Of]ΛʝH>:ih=dL{ 31oIBMSźytQ>n&m7͓ƤѽjF ƥ'~E6wN٠¹G'̷M4Iݚe ?R(!zUa|rQn$ߢ._fYK,N.4n'(A4)E$1퇒DՕ{ef]k2p2BEviyf)a_~REN%,^SXBRMdjf'Wu+);%6m:DWK #R56IfGm-03ˆ$`3t@Ō#rGTݪ+c]}-'.\Qh:3|Mpto_k>չWsUG/^k幈MU{cRE"q'k˴hOakJvi3NXLuنsk6؈z 8z4{-[U4Նx~Ҁ€~)uU4QAqI妶mgg^32|TǁqFD$yQ9AqNؓ5 $30'Z+[mm-5G'50vؾP,cb)DCl m5HS˶eqN"4l=b%q}w+z9MLPL@`O16T"X:%Ӭ(&f[`g-h6@XT?iFl\Ă@3<Vk}m ^f׆`3#= T9C>`[lf` +r!:mz׍6t/gp8-.<6# 1 ^ Gy(/eERB! [xy@]f?5cWHVd>5(xy4!|烆/@c"%/V{ҳj25y|#M;qr]gD_Ν$T=t_7S}[c9NgGKVNGۨ/ -F W\lf{?oL}Z UA"hDJobiZkjw t-Zk+R[k3Υts{f?O~rSkb;}"i>Y#5a[Kc'3{9jyȜe{,Y5}Oam=it~=1Zw-niɫwA8ໄR>NB(I8;Y;=Y5D43?7}eR4W0}s1o}9kg&cC4ߪ|~sw[{/Zm p/pwDpy*y'2K'3WOWgߥ-/g?_(c|t6퇲kkSW{ϫ'};rk&p>gI̵ssyZfW񗿙/7lܙʛ 7͊g`+K= 9 OU% YIg-@7ts$E;ۛ@צHw;TWilOE'$DBl_S=`OR~f4$eqCblAbY`kȤs<z@ua DZX#d m{x;}Ds sA[P].K{샙B$99QQ2ّQGSCSd_8+#8ry bQR.:?.C9;:U9tIʋV*J)&^*-IWf5s:J)_x:+D='\oyv-/^re.Fe]H=b% 8 ++HAVI 0Jx,@"Sj=PV>,5Է:(li>mx<`sP}C \Dk#$BSh`wp`p4-.:s%Qt$;U 8U@!P& `ƺ$`FуD"h!uFFtaf{#4bKTE t.P$4(H:web((K}:`PP648MF$2O>팍J4`fHFd0 iU8 xo%1 3(=}@'S]="@G*pe${ޠ ӽLIV(PXlVQBo}1@ BWe80!5`?m UX@z<zZ 88OTׄ{.07T"i#XHD_@ЇE#Cmt <3Ac3pE>rWU>(]j&6nZZQ͏'jJ1׏]s:U䷈uij:ݤP݂BklMJM御O}'{3ۮ^;6lPgP(hӼw\>njn7([=GW;t^+:IJrn >~$6JK%AL#ZO(7GY9+#,ǡoey)gU2ڢ?o)~&9O+ ktZ]׮W=W"Ɖs|rou ء )7b~ Jӝ֑};gߔz{Sgݾ= wݠfYrMFjO;t 'Y,JLAH B ŀR*m#XB(K(KbQ,YR&"]3;Ύ3=ݹ~Gxt6NOdAޜ?77/k|sV~_ьO(})k^Y7>g N| U|E/zH,^:T5E1gA"RW=zzr{rl'g.s%+?JW J+tN5V0UKVR(|ʛbiZxm\}&qR*9u4g}4I\9+)U1ToT p QP`,+=v-fJXtQXfjVyzFvve)Jl.<;<7O__}nXXhGWS[Hj>]i¨xmcZTo0yu9E[/h5ݦXW(9ɱJ+ !I=ÀHF! ΈؽlmN$vDp;%aG}Uic-KGn pUr|\xW5qqhjG4y{X~HxO'':'~PFp4d;5"s~q1/-,(Jv8b/x;c\Ьgcd1;,1N dgoH`b]-tsh׽}wtܘ>08*HMqm񏣢{~фH=1}qF37{Y9^};cE 7W=i%ﱅPWW'49^8Bb=J2L &sTK"nĄXoƢoь uGk$gL+Χ"FAe4K4 aN{Y~?a^^_"  \]}} #U4ć~~N@Ak~ø#4|o@bd?;:-8"qrVf"70 V u6mEDafV`nd =<QM`'Hۑl]mޤvȯa6.3kޖĜd﹜iߦ4ɮsS]'gw1xq\8qVultzh5J_LJKSCۏՒż[fQ+K!hiO#kAܩ:DW{G)pV'q(fċ|IRsTFfRȌ o[fqy/}zt'Yf-&g >g `+aYtT&qx\0)RqƮ+nۮݛj=*ce/T/3mSe39SZQ/)+jd #YNu[^nSZk/6?=|Q/)]:/-^iQYkP3>pkB>UEXm~Ȝo}3'΃ʲ8FUdivH–@BXEDְQQ@VeUE"6Up@{vjt{ƹ0Un[~lsj{F/K7E [MJe)>eP͠Ro*, >|:wO'5)<\s\ditL*_6OgJpPUćKbyeqp(tA _:;,w >4H FF3>)>WJ b2L@R3<_]#7;o/OLJHǧ;4 M;9db!_Hd| >@p10[0:-ht+yCT_{kpG; aa5QXL>@SU2VGw ꎱ]Q18:A2 fnc vE'|4 A@ r9mMrAy_{{ smdl&F`il4:3Q6qg[hh/x٠>dP2w/|T2B{9R(]Y(KZYk'},m h;(`gf ǐ憦@2"" P0#x}P?zh4D6k*kHP5俪7+"54@򂦶!(6!g@Kt,@π: :&~ 9LPPCJAZ^A^Q5Qi|`nN%%C%hbr4@ hTi9UUM5JάZeNCMG/pWM#x#MFަf{7Eo|"?}x]6sekgj02khZG ^{ޯ߈C߈Y;93:oPߙ-mfގAgi_G^pğф_"SNAҗ_#\r=/p458zsu+tݔg>nhW/j#xR)zؑ/å􆽱hzBnGzs1~ؑ1PZv[DwZjoRZ8XuEI[?7VOj:SY+zs.LMGcp|#y۴ˑo^uFl؋%."ywG;~/Q6T^۴ns?:l?jg=3Ēh5{7w>g1!q!/eIYdh^fnhFܽR{Qr~kqskUwΕ>m\ܾR#){ִ\mj s}EZQəĵ/Fg7&VݫZ:;W![vbpk%qj/ sK%mE{mE?u>)Թ^y^#)~]utN\~IwIRERڻP6 .iyPVNHX؁]h3ߥelM/Qn-Ϝ^*6]d~J o.ɨ<v;q=ql\>=rL(`㋢E1l^TLYqHf@.e ᎝*EQ<|/Ir2X>d6?ӂ φ ΖʏH关pa㹼L8{JQZ:!$ Ezi ҥ(HYJh]NWוuwgwonffSy:|_,τ 泠HW+O;XR/T-Krχ`h-:؞r ,//]AkWVyDUx65PcobOuVgeoce,aUn%*T/2)Z.;tP%3Rں DDH4 1C-#G9L6YLB27K[pvQrDﬥ3F#P>z|nF>6'y;<#]^.~4=4=6MtCbߐb3; =m{-g,7&$%Ԇ=.bAr?n8H3!@8`6(b^AA 'O3Z#ʀ^5E)Ot:X507'`^>: (Vt!/w|5l[֝g=c#}S/LJ/}#xorx/E1I\ !'4r/rw`xA,/`@(L?"OPYMWau4~αT#8Y& bL$$ٰןB =dNۖ 4+TkGz;x!ك^;ȖbT"Y4t{%ޔ6Fla5ZB6gss{p4%;@C^ľNz #߃XLW7r!{+`O`;x9_>{h.@spwtߴu/P=$@8b=y_]8bEuj m8~,HA3A%.a~1hkQwc|s5_}xxF{AgJ}chh@I]p2F$! 4fdd&A==Ǒ/G\i@gF> 7..Z_]TFN+8w̪,*yk [fpL'żwO] {@bl3/-oڸ[rX0k[eUjYzzPz$xOil[x;jcd!K)(d2g7s$OV:Y`ӷA( ^ŗ1^4 vHMO̟"3L76ƨC_ɞ'ʙtxmGRv]~?l[Kiج¦;e3<#[0ff_nWyISxWWTu^nbY΀}ksےgnf%}qMԺt*j 72ϖmf'ݶי7mlg( 6:"6-v|uqm:[hO !_gV49a*SlV͆9܇ trjQCWlհoI?T/濻T}ꥭcǢs˒7J_^/~|uPspQ4Y9/}޾RՒ:%od fBiM^^-{Qo]k_;ҰV󵕒O]KNm#f_ ~9]f2i>ތ@xA5;c8HZ,nȩ;uE ՏJn YyQ"@D3eRVD0x UKS5 c F$ԊUr\"@)%cl:4X$T-DqY\V> 8X8aHEE`ip\/B#'d38t\&GpLEyJf~ O)}/TXI~i̓~ "|:+cټP, X%ɹ$$ bcaS}AZASUn4-|Frd܁j8Y87stV5ś3S=ꛁ9 cDLN_#bk^>3{Llq t xÚji(>ߞ134/X*fo Mu#ݝ M&ryG5gqpN@iґ !-=B !QR+ÈX(+%YqEzA=.3ݱe8qap{~wZYiZZl\^\՘LJ@2&$N'/_(:MiСP;ΖH"hh#ct@R (ɢ8A4 eb\ U8#Tw{f;fg;̵L̷aydtYXU=jh06e}ud}u~}d 0Xlb@bCR&$ (\ِ"APri4P!B"bbl{}LA'a `YA>Gî$20Q/eq .ED',2PG2`7("b> b@}aSA2ۻ' NPpCGq=ۍGHo#Dy;"Fڀy{񛊾uv^P!i^vqHVGmd}a=sQ]aܧ{1;/`4_uF5Wkk xat|| {CvB T_ݺP^kK #=^^`Ά`B0s# "[!S+07#}3= fj8 bh 0 u@@C`zag= 03 K[3fjj @@`@R:)zʤU纴U!gkO=U%l5>~ĪIƩSɣWCP'~X)>TkyؼZ%}m) q6I߹]l94HׅE?T0onwI֌r e1u/ ՌFXY3څsĚ⮌Soe8QŽK֪_W>S_&%72oᣪV_ :~ݫBaV)xEv {cVJL4?W?>\Q7 H&^S uRx/qf?w!YY+aGa)}U9g +2T%%%sd"{r&>O)=\ eJ*')00tcJ?&g{,k3gTJLĉ"{~0t6؈q{a "B؎A s >ZqĶ@%AXncURx| @>sH E t 0qxE$< Q4Pe%0 Zx+@A #Sc1'dq 3QAHCkY;} >zߎChh)@4+X~4@oP|@:$B~z8 λcA''pqD\w"~[g4"G@Tc gp7GpFwك  {an[8 yOz ΂5Fg.Ӓ@617P&b8G@_czjWϕ=5Oh %33%?S^_t떼[5;rp٩rISݛ1kҭl~Zv>xxY1C0؛;vn" \S\yR_}a5g.5𩗅U[)]e[Ao*4|8^<I.ݖu+=\wX5;4L7-mN݂`q+L%gï=Wl\ԌsW~,G-ۭ7K; -s*meVӤ٥_ nRm'My8گSp_mwҼW#9FjI{O vWvs/3~hI|؛.;uPC._$ܱ;yjcިaSܭ^QmxV0MWc?ߨ5u2}gM%o'̯,~l}4[扂=WD3mGvE-‰KNj_+,%Zj.|f{[ˉ4.װRfi|>n{uvSk?XNkU׍ߥ&Xa':<5~\8_:v{mµ&WzFVztiÁ偯X/_Y046j:yoģc& P(ɯ{'uS}cgrܮl[ 'B,"PH!%b|k0C1^0D`pٹL=f7w}={##+W/]YxqCCWW/\a>MVP $*26>a\zSP r0"it {Z0h(#0 Hd`!UoT$@#с>xj@0QH: P jb…D ^$8)(b@ȧqrP5QH_H id8ȣ@RDr kBNP-y\LI0yD&GRl@,4>Γm%8Q0!P.ߡDڐk6.6<8ȉ!XDĀ:}=n8m@0 >DG A(D";#@v(n$΁p7yhԭuY ͍s:N`Ѧ߅? ?UiX֛xfuv,L+/[amdLj"<}jwEsm2nVkm iʿ_49q*rAхg)|_;gSy NG36;އ\ռw,y_g;qXJ:xyc֥Sv陮QIs.f]m6wL%R5i VDMB1qI""ݮf#Y_H wQUdll?M+S$Q>1`V%J&9̮F%1)RzrB7iemTj\:Ɯe{BkW[Tؔ%5ɸ<W"VjZ =SR⍲$K8L+&`%R VnIjWJ$|q4 () $bX3k4x&ƤV_h}NP+] đ t@2$3h(LBwF,@E RA񲲂,/`@o :n 1A.\,W{N-lZ\X<лvZڕ]kݗ;{z6,XƆ_}jܣQhLtQɮlfMj)Kh:M=;TUSٰ\ I,`aLxsWm^L |@!q}+ K饅兾KYtB񅞩/'VƇ._Y413qmoo;MDHtLLı(@qDD\Qrf+"5O Iבv!kAlt=ݝ@M⹀js.19FBkxO2ʉN.@8p1֐ Bbl7 L/tC@5Ob'x<@t뵭Ivvʥ[@2P.Hawk:a/DajT|Ih#GY e[(и0\_&D9 CXB~$pA, |>b}8|p8 ֶ8xΏrS1;;*O2%XVbA#J(IS@Q HBDxXؕ!~::^Y!A&rph\\-Nk$q8 x/Ⲑװh6 cC CB \` EEsƀȹ?eKeYZQI_6J7V koĜh o<5]?4+7 PlBX7P &$@Ȃ d! Bؑ"K- 1( ڊ,EDԑڱ:3cOt/Ϲvs}_tWQmXŽ? tQhzuAӳP_ 2FC u-G W5bz[b7UW x̫6Ucu2GI4eVH6]wY^^db[[0Gݠ_ өF|t=s e4ƼvEq[cQCΊ}cM[9mϯ*Yq ~xCmh-] ]"LE= ^%t+Uczwy' )_MF_i7֌SBo".gğOCH7i(Ix>-wgƲ߸Ozs^]-άmU_YHsiИY*xU*>j}+݊SO\r弤$OoO\̘%WmY?7sEX(SN͗^6`\(Y2RP[~͋S/u'p%on#ԡBF?ErOsJ~u;}&se~cW{ydgȭU+l)y^Cl 3u2>n<F1$V`$\2+0eZj£H\9~hd{Ng"".ҐI!D5@sx(CN6bQ!0:H *>OV,'HjT5A.u3)|みb9 (K?`wO !B@+2y yʆ{d_S/ZF;G:7'F'm7ՋCGg6mW\kމ[ۓ#7㊎SA1;,_o..|D5d"ܶjcBT^<\P $2> GD#"aQHoPd0=n\3N]㳻q½q+cKV'/O^_7~u~udbfed|vuq5|uZU N 3p8N#'t(@CCF@i`4 + @>GA4 %z`TVI>XDtx"4&1UA87`_x$ )4n|8B8̏!G:D8d<΍9Maϑd D[cq=d&P8 k~]P¢Xc M߭~h HH =!QB߄s 2?-{a9#GXHE08@'& L46xT:a#,69z3/,IJTd?^'Ma X)@NuZ829#n2d&Y-oC_wh9-[ 3;9ƙC̍>7?J8{IҘnk[ 쮻VS؏^o?1ߘ'ML䅺ݴI5uAMe KoԬzßPxFIy:_'.=%gD[n/emF|c;EѿVxI{CL_m|1ܛ|˥-͘pջVtwqa.o_Z34 m:<6Y$ۺBQ60`Zmr>NF;Ѥxժ= z♺*겣R.䵚BY ͂LlCn N{\j M\Ĩ<\KȪQ, T1ĺQ*9- /ӕ)lʢ#|\(.b\{JSRm(Z5+me%o ) s1J* 0 xB3RU9Ӽl΄UX7ѺEzZ+,ĥA+`&('`A`@8pB3h"<팧yTp“ݕn.4pt?8{af#;@Çl u@paQ"۸}!4(؞T.? nܨ{d}1E'#@sS  28i>t/#~A^AB" 'a1pq >4cɜ!'>2c / dKBqN.Ȳ1KEqq=X(ȋ7Q 0j+H<塱9h?!ԴC S 8I!@;ƄYiW634ln62Ȩ9kUZn-u5x{-зxj|bhpi:2p%Y]sWYX=m ~ CynflaïdSSuk$6NML7o4 poTت˄ /}l/G^]Dous }9rG@僈=Ix󍤮hڥLlSOݔMGՃjKHJA"鰑HzlkjY=SKc#M&ƱGNLǼ/}Ԣ>| ֦o(6zTғ?$eM+lړWN]7YN݀;z^LIɏ=vm%L{MC3i\ YO)gsO_zKnD7h5p6p 3ҿG|gEoYS߱ak|A+?dv @Br% `("DT+ I  $Br (\Tdg]q-^^mG:u[qθqӱ'NsΜs3}~Y)=,-WT0f{ǖJX?N}5p=wddu-U}?zJ_0~|U'ɳd5/3+ .e,k?.(~.Θ*x_(N_H] Kr+~fOUp@ ^~:G uYśDGĹge?tٚu c5~&z.N,Y|pq# Pq$fmF19ZZue{T!Zb^jw']\(x[32f1`zLvF5Kx5eVy1pH 2p\Qh(l<֪QNPn1;k;Z1͕*SDyLJIB6jH^XL-ơ \j1ڮ "DѨ"l21iWjT *G֖IBX:ܡ5Am XrS3A<=` &F # }1)1 a k|`.$$ * )E}x A"1P4&dȍ ~|HԴ7'zFo/; g͞lk3[1V5ݞ9͍ ٖ"!r1Twdm'AC"ӪBri@_"C+fCeDQ]ڢ!;h譖atjAm!z(])Ay B@DK$RTXRh*.D5"[E-:\"x$: 8 /$ cQ@RHK bIHX*8 I9 <0K;>%A(T!"}7 ) ج8f-' pX }2G>`GX@c Jܸ p #4y6 ̏h'R AńOd"" 4; @B3! )pL @9yML|D1"p뽢- zN| .@|o)p-2t/zX`3!"(`Ϯ Dw`EsQL 'B%y!c IпA/.v}BqaP4J\+8W$2`Ob "=ボ=YP sd  G4j/e/` A^F\@O@vBF{~nYM񶯤79)zcg?=MrȦ0SMhM}xKujϒ,ߵeð@qSkC8P7IhiZqϳݍo)V[r횠_s>x+"J?#xDw*nquyvrdt%ܥވ|2t#{e[8`}%g~kߤc`$g wA4y΄VƜfvaڨ & Q{;=tZ6uY"7' Mu"oF/̌~و7#79ϸ.Y1̲Y|Fr`vh|"=ۤ1e۬/7 @ڙQ!1}P%e@%=Cu\I,Ap , ,$vC+CCgAxsnM?gM:wBI W1hx{N6~'ik΂n>=qj!Wuگ7h|ȟs+ZҜhY Y7'V}>˜6=;({= ]r|*]'9Ur?*ĝ1nIV:/ }IkIԟ(-|/<3g\k쩾;l:k}3g}APSB; ֱ֌ Tx 7߸{k|py@˵AHkQW j1fB>0M ժc]k i`Z\Am]WO KHbMlc Ih_@MB$VaX1l%:N'qLit&3Nکg{w߽w~h2% dK#莅`n,[Mx[R倰'ی@X4QM4VΧ"^lv␣HN+ 8NGH :,^ yI~-NtD M 8~TU`ކZQukq&[`" 8, Q.?Is6lMҔVa 2h|R T.7>"!|`7xŀMlt`6h:)<3UR)Lx}&qL 0+竗"/ǾXŗ}ٍˡUIWԕpb_*=k$D]HGb(ŧGVQ[W[Qo?ڣnĤ`T'`J y|T5(A݀L#R)uJ:X>.2X<;P9ۈG\ⳡV>' pL$V 6sԸ^Y =lfN?!٠(2%ڎ?`lDTmH"AҌS 31' tW/\B$(MV+mR:Cd<\[h wk7m3rhf}WsdLrµSUoW?J5GEOs-_fϷ=+m[|tbۄb(ՎӞ?мΘ^+ܯ}vL1~-7ر.s)v03/ݧ'{~S> c-i=1\Sߋjq̜>5&cYK eh[7߹}E/o ?*NX˚}+1_e<$ky"9ۻ7E[ŕO޳;^:V+K =d[R1+|mAsyuBcgie#ee}:6t{U|EGψ~M{(5S kȕ p9j3O@m&CbMK/&En{(N P$GSOpvTl\$Z$2hthdCm<[;ژs>yŃ/F6nბޣ6ן}ګ۝nMMּblrqL"蒒ȆQAIj<%ǀVIS `Wx7˃ ".THP:& .$Cv8jS +.@\cmJA;qWܯyOsFKve>!r( FkHfc.بKmcg"[1\Ēx$R@Ef!ӉP;Ğd | EG⢓IR$Bo} pt=RB38_y!@I?FOyIb_R=6',Rf#KjbT,r˴m$u:&VBq,,l&Jve*eWMFjbiBvX\o߰?( T-V9zc%v}mS꺣!-v$+F 8 NbFNJ~81s \1#RܙˎNJ'mˮly_% uW;ˊ+C]ᵢчc/cݨ}Ka~RR_9/5f2SD?\ OkMdv\;3 ވ5{im\޼iUY?KY3c$Ь ?̩T.|;{׺!6)lOn4ۗFR˺\>UIT8Q9#7$0[d\Mv٠DԞ' K?yN~bPhOF5?w?/g~p]!~}dO(=3W VǬuYN=?#m;sJ~]>^6K_K^wֱ^ vw̾ų[MZә=#UozfIZ/X-"mڢiדj .U^IE8ۆC.7;YОu^cV?^}Zɡ l& Ek6iie6]MTcA6Yɴ2j2ɦ"58:*Y]6԰zj+m5:z_mCom5}}wq?n#rM>F~]@CY]mצ;m[imqMfgѬ-ij;Jt69b:TZ`m*)uT1:k+˙++B\߭7:wKjQ{l=SqigƮi眞3 sonn{{7?ɶ[1e80Ri!׃cˑ d|nJEJ"Ũ~p@AFC]f/qm ufxCY9+ʔqjC r/(mB?fr3N众O}nO\ѿs'}oe|4|PFZ{mw% - fFUtefxݳ4zԛEH]ʝ3;M#wÿq}/]bD}oY]_R:?aT\a}P8BμMw炖[A=iքn{9tk"w}L8S:Fk=`4W9,3yn5SYs\F[Iz)Md9.4&@}% " ,%!(!@$%!..Rv :jӣNeWW;50]5os᫺[=c|a̐ GA yB) : yb? 3Ob5E4pX`w!8șx>9*RY27Io(sڏ_ֻ/(ggcdD[p~d%lOnxw-@6{*M3sVK%\3jş k|zċw'f ѫMEdudKLիſ ?JNI7Xv#<%OE¿q{!n-zgњw.}pSٔj_ae+M 7vUo/ئ>TwT]kW&ov;rȼ^f:oRNj^t >(g&9ㆿ3@ w_YÙo_o?=9`.G'ՕܗOz4r_}9&ѕG@}5?}K:󞰻 ߰FsԺܞoG $~2Ҩ$D=] !!2S`|a8Pbs@qdŗ^\\][v_ǣ;}1Syu1VkE e eAL3LX”oˍ$c$,V&O*q,|ve8 *pE1F!) bHQ$/bCW ]o/Ͽ{zyk/6v6R!>F Y'p<_ D·Pbe"hbW->;c%gcK%+Jgdί—@Czg̭[ nxj Fӻ+ ; :J>]̮;J6pW%V+}'tFuoTC=YoCno:f^:bZ"{Jqu}bo]Ѡd'\{u佨)jHgjQW]5-Ad_0QA5;Y]pەIJ| l߾!8ϼ#v:S7g]/\?v'=#~ 2 ,y֘q'_Mub3BϵBOe1ѫ/@Ӊ l>⃹֣/'4ކb_SEР>kTyN\[4\]i:AhR}꠶$!Z}4䶒\T}kRRDwZ.etS1V`Ƃ\,DId*Q* p,pٻo]xxg77.۹qkgoik?>[XioaukWV7.|p|/}X\|Ï}IH@x,%LD"q@Ɔ|9VP +ᅅ9O} |RuDt Q`8Cj՟,M8JJ-F RQyL*  ?6 l&%L`\}'/0xh--fluhuG eP"WW8mA{)k5OSmG.sRJj-5jıpmB_trOfЎ;v1.FwNSzbĻ躦p̋ˢ ysBY轣9Ho_m&7|]GP?PlH}[r'zϰ-uo\U['roߑ(-SSY,H%HD¢aBH’a &Ġ v;":3CTWM|C[ssO!!xYH~l'іKP}yQyZEc$tn/k?rFc3]_mlIwjg+r&?O50@7D߮3}o}eattw1sо4,3:U':W#L]3C{%@bv,ky^Som ٣y@w7ݚ ߶3Y:7[!m/Yǜkr1#FKЦ'%o3؞o`!7lm{/}&_9v_5 [ω)hBg}_{$˅'J3<`-%Pi*^ioT/cl.blLg=6ѝKƵ3呑sK^O/7C,1s߲ٹ }j3GtIs[ԂwyC&}l_3wQ\^Ŵ{$u{D9'eN;{Gꠡ-_#4kHZ*Øy^1^+˱r՟<_t*Ns%\hZwknXwY@F"AL 0N0 ĐXrCG*c$@b8*Gt:#BYCBf$bC)DXd2HA'$\>\P+S?Mver΂ 81tĴvw"ק-Ck9W %X* Y ܅ Vd|zQ뮹qו FU.cܔ,M#i!)(WLƗi2㒱i<)s7Zb>̼ |go^}o;V__[ۿ:|L;p5{pm?^=58+q-E]q")*j.c/\Asa!E"`i@Ũˠ %F ,(-,:8[9AA r)' <&#! DBb6xt: #`ұB% Y@Ģ~L`C8B4eH-uUQ<"D sPoH)Xrs g~%6MQ]4K2@*> l)!$ТX!GsB^HE $1e-6S&M8I4#ObtyDNe!ra-}73SOBkx x L$ 8؛ iLHOJDl"ȇD ('O/)Oql!|<7"B E?B$@ϸ$NB 2I-)";=)Yaxvc]lzǺ̊vxftNmAg%?V \uzGy-Ʈp]%"wj$sbhSxH`@m9|UZRSk@1Za迓5ƘqN6wMp[BwϬ圑:,SBqj,U í}!7ׯ3uӤKX:uVEm#Tbk mXa;޳]x_d˿R{_c?Nymtto%sܠI溻 O/X oxŮ_;ຶK6bUȷꎔ~g9s [pёo8= !v:qipu+n[c+zF>UmBSхNJ[:tDQ,nw(wO:(J٠- :s@ۥxKq8Amn4kg ܒ77x y_7xtw_|xy;/^~ao/tO٭7V~}s~}﯇Git}9cnUZS2AZbLu \ /7~OIpV. b|k#)9ASW8;uV,ZU΍-5du]=╠qV$E\3 57Q`w e^]-Dy>7}+6o}=ܬyU*Uz22ծ1Epq* n6m=Z8NGd\.y~Q3UG3sjM"(+I-oU/˕O!SoV/6ffZYa<ϙ8O,Of}^J݊6[dK,n5yڶ2sicp}9!GFz$3`ĵpdߨ6!:E'A7c&۹FCۻHomC.u?ԣ~`3U d.O.̡g[_;vY<}3'%).RQ&lnhl8 ?Qqrvf_Q}5op)^[ ћ[`zo6S$UBXBJ*$L 0286qvٜlYx/S33|s$}/(fO$V0,Ez`9RoDi|Ƞa81sS#(+o㔰pd30(&"dE6퐊W3JEwvQ}B=OmIN<҃opķ;~xܶ\{b6ߞ7TRcQjG NG ’֜3Ysr˻7z׋O_և Lq:d6 #k̐'^n{/=-3tOtNDҚj/i"͹zs:4  1ʁ5^ǣ?/>$볋\??._難GB>rscdi2O>jI,{ R!5U` /-r~h&8"#*O@?U:PQJC1&l'% 6YQ.J^! Ckls =]Wv;ⳬ%ѫ'z|][ SJfBɅ6}Ρ<^|tU~cg#IY)9zpƍJٽ~rHu& "t;TFxiGo'hXP7ҍCMP8-c'F_&(y>ZLWM%_.O:wڴ“y$rk+eb|`0bձKa4I ٓĂ%iEfѪhxNPOPU]ڣ(ܼD ?-^:){OG )0u-{!oNiZVLOQ2FI(V5;+77Ϛ` ߓ`߰O.es,DM9B 62#0a'0JȱGgI׊᲌b-B)f%1Cz[R0|ww^)@;hmإ~1~xofM /OdJd'rף]~׾]"Wϒ%0ndjWrn&e!, ǔl-'N~ȈSdr((؅vx#jAʊ&#xt\<<:U<k[Kuhs8Z N;+5~;to|j3 $! 1`8elaSB@z&3 Ĕ3wq2q/.3$sM^%7/v~;;ovTl{(M aFb0T-p&@!j@a.GZ)hrRT(ҝę_GיGxxI"ܹQCF%nͬ#%,J乆0(q *0v bizas// Q 9+G< 17\/9MZ7 4U?uGTu96?_&էI۳Y|zԤ+N7RP3鐆NzTWn'ayY>z@u'h~W@92,SQAY@.0ьxTՅ5Šzhģji-y\"v!~)-B ҁR+ *!M6{P)7ͧAm둄-+f~?6, 6 S)̢ chPm5,]$fFAvL̙-A mmU/-DE*N4MA}7Ͻ,SNw9k#Kʶf[dnf A$cT^]ǏjA}P9J.`zA2)5\kvV:SAzT v;fvWW/M܆lgI-ϳCkٳh~rr ~=hGS MdY9[;֣z#9B=bA %z"+ -> l[t;O6Ĉ'8h7GNDs?cy^M(=..F7'+Tõ_783D6I")?Qq8D2mu׻G[%rΞBHNŲSj1fHΤq7:nһF#9 /ܷn*dxe'>Ikj\~=9]Xx9rĖ7SNCxYyKq>\)g? 2Tr*VlF|n4oCPLDH£Gxt@#h%hZk!5(s}j)=+Fܨ@ذK>{~>zJvyeTjTr+%>Y?HEzHWqh4x "hPIY7TUݟE!^x~8 o|ھiUy0NV_{SpZx0[ԥEEުYCԅ ˲\VcV9.,~(J!{41&K4؃"]6^kb%*1Xc;[fwfw߰݇|y83ᣝ2:,@D< a YRP;s(p&U_xhQ9&$Rvt@bglԇ S}| r1#}0qq07ż{cxyiUTSre}W0N礹ay͂y3nYW!28Dg}y%Je\y GP.b'|S"͝8soՏ!7uw;[?n}ltKmzZDLT?hZ޼V'w5qE{%s4:ϱv0U2f!qŰ'U6N+(%= FɝR-V| U{3^ X q5SgsoHF\:т|$Ժv2# 0C\=9H J SF):BM:(16v@T<č&TlĆU$Ʉ q&&ZR˹ȴ2EhE/l?E.ً 77?Ñ yf6v3 WwSWMd=\PC}t C M7bs-߬r|,p]: Yꑥ<DRERGA5295SI4X%wƄ ٯꂀv %Ƨc"[)@{Tb\pJILSg*gt(0 6cA4(4t8ZRė{ :wJ߻P~{^Ifófȣ?D%@L N/jH\ TJ*ɢ=AZkz5I&WL&MK5b,e T1i 7U̺y=*8%8Hx\ yr̮knKVг^)n eǪ(VAo$'PXk~y=TV5O7 6`l6a I1Vwx+cm0 !$$M:fZMLmF~Ӌyk[ACM+jBoF6u [zm}VGhU?f0,d.df vR)ƺiqCDڴ ɷKrڏڦOym<&}eBj=aY&#潠]sisz\%_tu"g.yFrٺu{.Ҽ ^lעp۶.fMwzn :Ħ<Ob݇NdWޟ˙/6yԣ'ĽPgږ-eujkfՌ9p'n^skv>j{+oM~o?8./v:iϟ֟N &'㞋 ׾OGַO{!aHnꙫ4аñvkr]89@J"puơofo|U}5: WAA*u+7=q\1%cBWjNVN.1a!v##;rQOHz/.(.F0a KR8;LL&b9B02blj\&YM1l53LcBL7l;yz-|0 &>4F.I>[U|6=cjl ]rݧEql{ jN-@ԇ+ ]/S4'jI9ć8Hm~r }yP6ϼâI4̅5¤J+ȱբ U?aȚ0fUNn_+;h- 1$JEo$((nI$)\aQ׳ߑI{k?Dl+s[BZsTE BRWX ."rA n c ÄW1HO/. DeKH됱<:6]ެ/p_o4qy=QTBT@tL5`cp桃$zA BB*`a& fެ+$Yn;'ً͟<3xˇ/bw~:vӻDx9'OOrr߿<]zK;^~˯zǓ?o߭Dy:oDNM]f'*>0ZW 2Ν`J5PY!D=]'~ҟcb7-M-s/m8] cGzl?,<=*wB}g$L},8HySLqϦ^鉏M:tH`wn.8ik'~}KOq@rQYUDV|fOں-=+s q6~۷v,}p`mkt<):&D!Ӄ;{ 읕Ƨy3-( Z_eHGp*ŷ@, %ے eiv<;2x8L= oN}1xvm'ih :^_oXݑ,nu-4ܛ;冡Tf\#h79Y *n`DOi}. YMe >$ʀ04'2P5[Z:>#ӄmF/#hl1bT(Ԗ2n p 5Ynj2sX)=d]s^0]/"hk9J,ǵ"YZDhNҪXH֎#E"+L^|(>ӑR,UkBDy1lY*1[bU>G j3ѠxL i~816:Qǻ!m$[coRm-\)Rl֭+x8x$`f4]< JΤY 8*nrXGI^t-B:D2Kvpgt/`V-ﳭllbRfAxީ++:1n@=WP}u t A[ j*BYP^V]Qو4t9#UB%5P!ALFda‹@f j fF&Ls(XG[D0x ">)%DĀJYK!wz8p33:/tnyΩKJ:pV.3^枅I:sSׇyFnʩS~g>촘3I&j9 abƑ}0ݛy`hK 7AQѹ8qO4ҙx@֩tb'g?zdiYn~'[FZNԌ=cqOO8ӈGƁCYiH!Mg.iK'?uIr¬cL:LIGw3̰F2Bg*K*хy7@a~1:?Tܬ-w&7V@eV#Ǜڮ%堸a{i5*Š:;9{蕷1sHf̋Ź>zS`VJUAlT&RCJA޵JPV~އJ~UrZJn@ePE˯ (fLT}ozܓTXS|^ ;$ Wʛ)r&lIq CfMGE*6R D#n2v\ V 5XaƶKr:<%lXaOBKE6-hZԽJptے,C5&r|B"iGH#CWstAwtǀ N`iƶ ϔOy_m?oX' Z8y3zVᶚOЂ0$gR͝گK)AC"G:s-tR\OAhf~t?N #3Cdٵ-=4-ԌpU=蠟iTmXZ$P&Ap&K x)4e@ <]hŖBJ8zm&d7w jצκkY7"JK ,7(u| of 0GQ\3_Q=AV (1u߅ذzzBJl Lj_E3fb~lj9k5|ܗI1 #obU/*V{] Kxu.Dώ X:ǂaWdJOHdHyx>a=0{9=/gad0b, gwm33JV v gRs*AҪf2'%t((6 ;wB\VIW,@ًS~_׶Rj^D5 :Qvq7*(Kڍ2!@BܳD F[ܯAUC}-U<-j QJ,^oLFiTiaI ṚIF3Y8#5W&I^M\]+6}{[!Of$Kc3caz7,U[ p&2ՁYbG6CiNY)vȚP( :Hע@k a֢jr =eHW| P ^ЊS,ץgdz~Ѽb{^z$RBjI#%m97yֺ^v<m4O{> ֝)s^:LkF_\e~bEA;UY4.InA)0!b|~tyt_/l|:ݺ<.}O'eOovBobɋ#o#׫E4y=2.$(5t[=WڹSV޴c9sf,DڞVn;-AU~ W3  ٧zOU"mO`cjY6fD=wgMOTw rk<*|F#\nBX<+F@]Hm u$$ 1ie樨У:z1S}^z0H^0+/ͧb%-OU'ާfD@gvI,h-hؙAN_Cܤ!^Q䃘اf^ZŬ9Y BVa_JN(;!#jpi`G!cep666dZS U}s5婪JPCH^ s{)|P]O %m 7aևiIk4%oRod=U22"7[8x-ɹ rjFȿQ0) ';ܼq\)<ϻU .?| F-glkJ4f펑v'}Ԩsoұ7#ҳ@ZfX 6.\}v=$|p-6-.2>pVQlm=ܝĢQ4ؼ^ն6D2P4Wnkby"CPbp;hb46J  Ms\uTzuLRwĖ#L(PU *SGQX I>DT5ɁX5Ի3@#?,jU3qR=q_1:  ],u+lRx&],R|܉E6J4B1 N_|To{ng˺f5@(U !8*‘نYSz:TS%+'<%r;TP$^k$DR)>$BCkLnb#4Ԩo;!^sUS3Hpt22^S.Luv2nYGBO[¬9&XN]0YuKc}j>8&HA6`?*]rZ|ok))GMs` WĸeM]_]EyWzĢ$!gIy%ՏGz (/3B;"EIPv \A%ɵJZ=LIݍ5\ig` 2qݒc6& fKʾYr!p^N6۹F ֜%FO7 Ԍyj{wKt=oWO橙'7 ̏.z8N᥽eg0} t[_K:Y}ex5,]}qI fD|G/*0{z[ d-tU^jIzh~lVƻMIl ex0,&e:tֽR '=(8PqV `{ ^o\|zw/7|9|Oο}rz4ʇ7烀զ٧WB?_^M8p|yqy8|1,//'YNzd94[òQ⮕>?ǿ&x1qhkwX+[WyƿD,؉'k6FS4b *H`5{^Qɤ陝͞=f}̫{9ST+9^+#R;άi +5 /6 FM8\CT@5; >aYշ%y?Bup3\/eT*`=|MlQցv &06ң'<EfTÃ*DRPWZwa;e0Fyhxx4fvz LXOu5č,3SGHarVtbNKETmQC}^-=j%d36&'䳠痒6;I!_WƊ=y'z+~% nA_ˏf߫KRÇ pZU#捻 ?;i)S]3(qJ (;rRD!8X7۱nIر8Eێ0u 7<3 Hi9TM@pY[DUZrTޣ:yPY7BqYQԊ),xӀ'8N)n+Cԏhz$J3֎3-s&Sܥj?}G϶uqq8CHVdGW?/֢\?lMpZ~&L5IrE}$ $qE]<|Q?k:|!<yzj{ -[tfS8ڢzSx“lN+N]6jivQV[S:aոk&)t7ẹG46h:YaD܀Zzwi"])ZޭrZ<1De)ut}>)˓+ѣ=ZV~/a:&`PXt MYW"7N.O["Kg'DwBQ'V. &vl=|K&y =kdz-dX& wMe%V <JMq=z]iQB/uyX%k^O׬4xAuwkȺ,5 uj)ױ#l)'AG"d?Ѻ3\UDv){N2/JO]gK?ǁyIC~4p6 jجEPJȎщH L‡U1(fFȸc:o}AW΋rJ8H 2A̔i:+NEH U Ȁ(UF а:>Q26^> : syc9 FmcO\)Ռ⧋iyڹwjgNlsW#-D(/0tfa8 vngFpj"9so҄NcDjZj2F%6$]ZV~9v_V]^|I>uB@ .&_m/_\|髷g/__y:٧oVOOmnHU*.e0b>h-MD;/O&?L 1Z[.ԯOAi~)SUc֡JKYIBD6A&0L(G$'fd@:}J3|_ .AdqKZhm&.A DEQ6QEEPQQP5*IؙLOWMejjjyg>/}6'$,逎2W&;AȄslvK,8SRs A 1 04ǥA4R&; 70P3LLj(+eE\Pt䰲AZ* 6-bQMglVEa:,(LT_ +cV]/.ydO6cGEq3v%"i,F!QWPU#̆&>  S(F2t`s0, * AŃEy#q.&n:dU7ݕXs Y1YJ)Xpn 3<'2x(/ҶG: Bu{.?i4/F έV{Bѝ :GStA%t|:7٠̦IM1EoF>t~>- OT{y9 k4ŴwrVjyp++ZA}Pɦn-[/+vZvxX2xz=|`דԘ}Ѣ C\*uLVʨs$g/f}!^dezzoυzh KHSIݛ[gg-'cXD~8mL,7] pCXvhg>][w} S!`҈h/4+ܚ=^ oygG?|/7#QÁk疎M10Z* n`S%Shf"I&Jq(ak+#~lVA!dccJ:PZ"*_d:R;gchRwejwJDjqRioX#S+W+ :d G$aMcFpXA Uqu:d#U\!AޫT W*,x,Ҥq~]򽯪m7*Uݲpa;5[cx6=G5 H]SQ5ܘI ~(x?gjRڑvwml0v][pf:OJ땘Au5'l[ DkZtu8xkcK2vdÆN88Ö93+p][K%҈F;eqNEҌE)ps5%Ц81%cX{T9Q޾X/~q|/6F|_`|w}Zz0kpvѥ4̲&Ԉ\{u9y\:I\ۏ7ArO,-g6CۙgLU 0WŌ]YV9uCwJQl*X#합._|^|mgo_.nm۷h_D^DO~lzwlA\{Vgǯ= ߭?_>];zu'''?>=9yyqyshn{ܥ2b=]*LxMOg.l[ƅDnjCM5 qJ*.M@PT30 n*% ݾ aTYܿ29ـLA%e(B0b:%&A=x̭J!Yl6 6ZfHe!،\(iDS(`"WPIJe| iKMeX K}π.&wA9.󧴒- LE (nhI]pc7TEPUAE\AEEM$&N\˼jj^{ޭé:}~@ggBɉ 9\H dG. Z^ &ȠA\ fA pD<H&4ė ecA6tQ+_:z- rA9 ဆVdC]LTˠ*z \]1J+*&@ p!. JE8$ݣZ~PA blDގ !><'!pqX )!L%\Brd\tS1U/@8|29y\(S,<l&\$RsFNF"JHATDh2j3fwr~d+{xqol^z[ʅ*\T0D,>gE3Q݆n#겆Fű'S?Km+ke^Vޭv~ֶia޿:М:]åsq!5}Z}wQsw%g閭oqc_+;uyn^M_oO${s'/7ksXkYv5sf\_[Wm=rv/Il/&/&gUw:XZܼOO~^X0LD>ÉsͶL˒Ur.Q|ݥEL[ 3[pu^ K Q[ .JeKIiJbQd)F)Ԧe5PvqB(<ޏ.Vzb.EIUYZĀ*FwU,HcVT4qNG](w5jf(v*ٮ$H={ejBT-^+p5Xr8 E)gh ?Ѳ"ό#MkȎ1dg5ŠX3#\ V]x^>nƹM(ek-1)rV5JX_I U2hvx(Y6 ZaS(=YP"gCaG rفN.Չy(6yfAomHcƑQįqQ v,ni wʎX#AZQe 9QRmq:wDމdn}||;>{={ݻ}.I-l*đNĮYL a5+ZgW-'ށ`qo_`E@L< oۼ/8h`UjjXu~[sX~~Os}[?Luۿl\ ]tQ55W@1ih~[( ״EWV<%"}- zHN(HM4Tf|*M$TRx_ u X P|SzYPh 8U\@ Xu\0?2(" XK&g$R>9ѭ8O@JKϢP@%ASM CAB(H,NK"q) r4"09(ا1P),9P.Eɧ3ARr:HƥCXgԳ6s1_M;vŶS{귍y>M|1}:pmu?-B`Pcguɥ;s.|t}o}yw:\v[s x}=n`{{lk{˥y~8=ox}[؉Wzxd3}Ѥ h0Bƌr8|= -tw@': GmViT轧6f|yho4|DĎi~`0z02&--H,Ft)L.jRbej4>U)ٰv]ǿ9WC37;bfk42A&A  "h)@8l~ nj1# S?NbeGXwځxQ&/ɔ Ι*ITroI:풊|Sq{ at_ks7zGjQ+io+?;`ϳ[Vs@0ΖxgYS恎0=b qC=8Ew 5ǸgLGO[kd FU(&LÆڹ!r^@ *zeA"@glR;Bӆ<^i hc )G[Xj`7tݭ"4%Gn<Ż"<6bѡ) tY8N uBoc= kvMv ]7+sy!Ү0p \? 锫zcKMY"'zuʴ9uցmvv/|>7`nyۻ~98|y{~t3hJ {4^:2t,L'PPC s6N!j~&D7Dq0& w/{lC:crbZO"jlTfk F+͍O@̭ǏvB02$#J)\ΣtWKQ6{Uf@qV! +h]-,`VT57rKTspݎ*o9PW^E*Qܐ9DTNbrPL̆22[P) ="!/3/Hth%PSZT*Peq94XV%Qma ՘|TICTR V$\PM^ 1r:-xcCwuEtڡƅj qf&Z۠b`2UW mL:TAb=TFQ4YM6A!EPn"o*"ȝMDnx,ԩt^ݜߵϳ|>߻w /O P7 aiZ+_ t{[I/*UNZlJj%Q#mςhˆAw.XW2({5?85%p;ǎu:^MSieuF2 VN֋xx&=d7ph?mݙ+1yyIYN&.#CߩCt޿>\ ˓uE2;,ofζ'dHH}[Ԗp7T48 G%PBw~.o}Lʯ//3'{=w[<[s PG[?SG|d6 YVMGw붞c,= DI޵$@GO]tuU17|Xۜ9D;i4NI }I:X`GXǡY2P'|ĺYs< Vm0j!mݛa^ډ{+VrN^$vwUv\3 |?(K3Tkw&w'g܏UjoFΝ^T,,5 9 94a|P(Ê xSv֮:.]׎>ƻy|px8nqwtg%"yfwUY5ʃĈڒzۘ0ʶT]xW{ͯr;fzolsdO;yFu;v6g{T㷂jYvhͰ9+:͈+:~V2Yq8{۬!:}}AY e[.jy'n%iSLJK+TV R:Fu0H#0bj%"TPč0d!ccB®΃|C|fRtdاziM yxM'*툜Z "6.6?6V̍*d*[j~8Lߞݟ‚TS*e.-Un 6 ?=&"ʠY &L-a~$֍_A&B)_ 9ܾ`]ъz:qչپL Bu7hݵXYcE$PcgJbMfC$&qN7[};AB>RI%XLnX1`IZVKkופ "^ ?%HΝ\G@$"z)1B/BqY~!B+@ "2Vc!zMBjyc%+m|uh,h(/N=:M̂6DL69\ \N:RP-dn 4UWCCe) Ќզ*j(cT奸nlB4qyig^} I'x24`{4"`f5ʻ=-O+S GVZ0%@/֮Z0H_bQ999ܓB"!q ?>nOxU(PM=@mMT:j~ bd8] k"=H<,JL9ICzKZI[xĵ-$v"?6=qe,]J+i\Xb=%9lvbł(BPKQQWU)L֚19{1sgثe$3߆ľ;WM'cGL/h+o1{j!Mo'A+Z詰M|YWĚwebNbȊGɈa<3~صuTP.()RQmeԡ8Zq e__%3sC3Q<ȡb4*f\;BjGz3W&3+3.:9׫n[wȽ՘Z)R/ ַ^@mYf{at@2htl_ BlF@"ICCrs I]5~jJ`hG2ڱ  vu&?eO*@s<ag)'%cf <,:|̦6 FpRX6y{ ЁU:6Ԃ{w1ak;EBLWcHgn*'re,N 7AeŒA!(:`Ұӧqb(gǁd > POeG2t~ː2|AB03J4wVޘ]RYs7Dm'=QOR<%,%uӜ[m LrX8dHz"&9|5|:ϵx38\f{nNy-u!1UEO &wbۚX8Ƕ!WfaWmLz"Wj0@F62܅WUrekAg]5設0K x@5x E,G:H_ (k(wJ*诀w!b#T3]S3p5fT6#kjŌS̩. c8 /6d!9YJɚtmM uw:NDӰu1OC΁tHO~^*Rܳ)I|)Y)෤kƄ#pn)ۦt(ȿs\Oiei?\pIgT&gYѨ1j# \&&&(B +,nLVEd Ǥg>f>fbz]Y@>)b/;Yۯ雌M2ŒOg {IcaLBup j[z&> {Tћ:Meκ_̱>lCX5Gs8?>Evj9Q?:s}=K5W\%1]/[~os=c߹%ٍY帜֜TRgghY=bHMm/Wcf{}ޫ_M1k1dwX1: N㽊o17PNUսeP#۷:k/l{WeG ωfS>]ûZrs~,ZnjùV-e_g;?G:zIQެ71yirYZS/1~Mlvi8fė<:yIBs$q a`M0kL6fKzI~eoml%DIN襱ccpEN~:PWSӞe! cF@aGz\=n9s :[;0ݝ`~xv7|({X f`\hoV hFS$T^L Us4bI04`L&Fnt7-˭A Jm竇9^Pύ68fOfkQ&i>8Оؽ~(<{wasрH! SL!11i(qKUR KcT,y%Cl"esR +b ),4b)R# @Db%TaiTr^8ճ INJl9xɪ^/c, ^Dz Y|9䓍MmυWyw2$f!_`O8v]`116 2r hGEk0LE ̢!8V !%cTX%s ց`ǟ@R(fS0L@HC@JFjP^9T4ϒE0hXT[/ļ&UN8 Tt P V3(=iYThN1HIL"4=AJT_9v+7/`4N @:& 2׵CbZp!)л42FJ&bc_?-(8G׳`=ԣ ޾Q!OCzX6ynp3wІH 0C1( $Dԁa@{<c^hv<ۇUJgq4GL-@TP0-tǯ9I{G}r +q\KR؊c~>iQNI>!=L&ER)̙{qk50brkw-ΊD]bKðZ%TTOm;wj胳yo>;lrʩue9U'|ܩhP>Z(n%TVvsiPײa]9蔔A~ї\{o|Ni?%IbYV n ~Y#7=À{ᓖaYiˆǗx-|EZ7^{Bzaȇ]rrZZ7c^e!:EU\}J4FgZ^XK/{hK\ˮ*Jy1kU#*:V8դ[J2}J+!Ѵb65ӕI&=]NQhbԈ7Q@DAdQ@,c߄H4QQE$,i^é{nto31R^]XοGbn7NU!btWyꆇNuəGϮ: n'S7ѿ6rjö|_!!LEM\¬%lèw}c$x$s<`_N**e\!ݿ7v'gÙ?O)kpo:s;MX]Q?^׊FT#7צt[ɬHY);*:nGE]K3+ZjMrQH]Y]4rx]ñs;ȼ~RS8drYTg-b^,].qd"d^ xW#^Mtavº$0w'\dQji5㷴NՀq>I*jsrJIU;vՀYaѩ|  v6c$0611ǹ[mWv-aJ|28nɏ6gVٳ # sed׸YM?/[}Lڝ{[\nFy?{ b3ET'M3ױ8F/s ('9U턤0!kWQ?5>g#0IH~w6BEf~:CO (+Kax<%qDž.tF"<_|׷=D#Rs;jl -h?6{ m }zOܹ ܯb *,#O |(hbۚI ^*:pM"^!ş[1}H΄Wud*"#3 ^ K#œ xQ6}Զu&g9۵)OU~;yk~8Hʩef"[+;.VFJX}J.=mzy=IIg'`wQ N/t)eJ'?iz'Kê ;FsQ$b柬Y17냹v}Z~PG FFf>U|3~0ng"Kywbw?^oK}O1BaG5oM]ےsKXxfrpLg,,Vu,x~Pa!e3e൰Ͻ6g?˴), cfihNt̘,&nmP *"h@@QUYe}eq ( J|0eSVs?ܪ{sÊr2f-qs>~;Pq1+7pV-N~E4%߲)yԿVK_;ڬoŶ[~+j` OϬ1N̼]#ncSJrs\a$]/8GnbK_-97('n&X\YBg3z==$Ԇ~:mm̋Y |? /W݂ߊNC}mŢro}枔]7ݎh-J_bVY|*;匬 j]frnĪ5ZXgߚ6 ڵYj,v@;H>[-b*ZˮYWa;ƩdW7]F zV¬Y1|c QQﳾL 2w춶Mu8~'Ԛ-ʎKp=Pز _ D#ܚY=7x툷Z7~>+`VoW G{qM˧CxpT6yXNJsLcC]ߖG ^Wzu5sL犼RҾ48+YRtfQ}[tt-e#xUbBβi*hLnYG3{6מn "~e ^#feL@`-CKR*DC$^% w dN]O_"`F'·[Z4V OyU#$2!*ƨ* |vw]h^R⇻ddNWNXf}}HϦPimS:e뼐 el4_v>>Q;?Qy@1A0hJwQZioŴR5 ѪfJcfjf75%jM@OqZRLBDPĉ/+R)X?v!<#b30zF#cb*cpO&%N;&DFzOz( io'lA1۟ |raBRk✖;Nx%HlG{aRJNFix$W*5Z!8&xfU*Tw &Xt b`MGRAzX!ǣ}8>"ٍP_/z(jgڂ"47}t7=ƧhaрR5=M t=h;A h>l{q >G\ y-d1_"bCtA12_ àT*E?|bq^G'?JKKv!<=9d r.B`} ڶZi#DP^X a$r@iiة'ҊKnk,D3Iݺpޘ cռa?jW,{1PҋQ6`fVfodCP>,./pv( -8Ÿ.#wYw}07yWb٘;pml=[JUps qGѝPl!A|Y\QVTGcs`o䂖HLR))'g~ dp9At~p 䓓{dH>F>LSR}xP&.x鈎7Rw66^@smo@]`=jسf"J&`$ĴxYi KKt9M|){Θbe[-eURV|js.zוØ[|e:Q7NQnqa(}݊^5dx(K䲩|*f]JXsH.C)$K8)rhm /#~Ӓe]FV䜐10сa҉%%f %;?|]Pq8%c-6ũ iOq=>DMb\hgltgdtF}A@@TP6AvdU4"INOOWM3\uι8嵅 #ZE{>}+ghd_my~Hn5[ :TcވmXSKvwuHohl 3s]GXjwmz{vVf6=I[oEIv_NNP..kk]Dk4;R; {nFGIrΒreܶq:7͌'4Oj'CIh7~AA/&'T a<$ ARA bpT>ؽot:Pyը"^IMjhinlm^0olꇫs煠"nRpr}&㬙ےU=[NlM5=iwwg4 Q$uo^ߗ.l8ǯ~09ex.,xKr`B"m]JSra[}!Bcp kpǨbp[Q3’i(*Â4 Ny XP78~mdS?T 5xENax p{_ NW{m7}0]If'UҪ;1bHyS@u#_Yiު,>$ZQ~A_N. >#ie!a.>!6ZtO"=vۋӀgsYH H$p+EQ:܏yyAn70Gڝ_$곥Xk~÷UfQ1ԳQaQޜ ӜPO*)(:'݄OVz܆Uvgѣ;G} kʩdѯ:ɺTQ\II,$37rL9ٟOKˡ‡ųؚ`n[egs[ּ@ddD1(W>n=| I3Qa2;LF$Yr%a CpUvhVI8dgSPGY}",Mxt_%_Bl'N6JX31{sW)k/N #\,@mwvSĉy#D163XwiAe!is.)J?:-7̑b9ZRAᇴ *+>[QACڏT9ĵ[!⼍ :hT|foyy͸v!g)폞|wN:K'xWҷ!V#m5vjGRo x Sj*pQ5zr?LV2$X2`j2p Yj\#6>Iq~%7!j jIN2u?kQ=7W-T6fLsɄnFXqM|ӆx)'H-LÚq!?Mh^b.p.nw_ q\fMigi?,tL6Iۮݦөξ&1jp_ ","ȾȢl*&Q5{2ꮩ/b.v鋧NuNS}~ϫnZDͲQ v zrPhȚcTÜCMY 6wCMOi 3?)f$մ,05G+ыzzɮR~6_}w?yw\>j7 |E# #׌y!ja2& 뤨􂍞x>-|Oؤj5.SYү+IWCӃy!-wn*qY\3 M0XGr$XUmjTz Mi ?UMWfPSтl$1dNL6B l \54k D%ĽZRU=qUf4uU(wu΄Oҵq7$*ё`I,[wzL\mapʢVO+d9ct[@WS+p})̓ 1z!3ˊƴ (j>ϴEkSAE7^uh/jiHF< NF$?+_WռۙTﺇQ"啪%`% VA%ܰ.֍f}hu VfD%[nc1Lo8=mRba 8S7zjYҁ^0mQ0p R{j6)g_/Z.= zKCL0p  yOkykP TThPP{` "*tEHio`SNI(X߄K)$ 9[DΞvB C@ v#Sl ROEY$HDKC, )k܍`ehmkBlmu54z T?B]7>z!h@DEz]D?A^?M(tkaaum-XMPVh"jG# RY[\nAûLh{hx /jUv7 te-o *AD4(Ȝ,2KՠOpA "nF\ڣW{Ocm2#Ccgb kڣFg\+6V`lK3sԑLg$<}"2/SF~sg㴄rÜ)6(h&_%s4i}VQ;^}4q>FKT`{4zK\PSɒUy~ɘ_]+<:fΎ3} Bn~j[GOt> G;ok%{-%KO"jHm !`}ZZ?s/ Y5`<.v?Oh枾1gǩ?a7Ǥ91IǕ#'&mω;}o&TӈqM780Ie+3mW˦7H1G»T&gGo1KL첌wK`مd(KX(,ⴉs}8x-M[:bG a U[fڄ[SaUDWTk+iyuvN5rI|u,K;f:t/4m%-dKO*6PJw  ok@-RQJuupEC/i~?U֒G4Mļl\D1+bXDD ,e no&I{S2Sa~]}_3q+ߤZD?DKN &KuKx4}y1bj=M답I˨^rVџQn_}e߂eKNAimWZ (hN)$|25UE5hđ0dVGs E|2KăV< CUrM% gWK)_ 8 /;Tۉ( 44'OdWfkGcU]B0K+Ts 㦢T w\d@=99j̄MyMFT}#iuYMĊFІRZZkh5#m$ۇFcvcŶgǿnۭvcz˪l۶]3AF$=A8tBDF|i#!( XG; g!Ux}׶w_Ruzdʯ \mPr[$"?}D{CL(1!?Mx%S=~uOcR6B+I\~ģ4``V0}AN d hMaH;@i6꺹Xm''IJRsIڮ 'EQwqT6Vb` :QY@Hh @j(;ZIɡ끘ڊaҁF`B"tJDxJI3)>Iv._ k>1*d>j=Ԣ-:[i`3hXڇ%WTLP/>l*<y(@kG @'x^R?acS63oCxa=O÷SWwhۇ͉h_wb'œv-\-'e{%pQxW괷驞}ӬgAfm񠕱1GwZNuG"NuL]#ڛvM_o3uiԪ;_t㐎:<'8H՚1w=0;ha5+61-|Tr|E%߉(חK2Qs*Eu5]˵ ֍={KxǢuE}Gl5=/mEùЖQO◳.:Ō$CYq^Pÿ0vٳػs&ֽκcF3q`ޣ$f5Ӎ1]DP4JJoXjĂXٓ澸{9߹}93j>oh˅g3ˮqߧ,F'{pF p75s4|CRyāɁ6L[l F[{==.moj} *=VVS &\>""z 㜳|c*C6w> ȣYnI/P$i  &!f`1IH01/0X)m9kNP)V>"r4frؙr:=MDLaTZDI'%ОHJRLRUdZBONdJJMЩF#:) -sb[?%\+AgnqȤXhkp\x܊#2=+ڿۍ… ]l˪L J1 buADZPQ8c>cx4 {]d$B<`pv1(wd0 {gP}hj'xP킑{`D(2ptS3} 1YfBLB"Į^mm:ZaDD'>Gl)==0rL"ڣ'ۣ&z:U d&8G\Dd_? t8y|uv.vacºՁ ~7B^: k_Ǡap/)=g9i٠ 8 @3`ţԔ) uY V9[rm)J|T&P_I[oʂ*1]o]WUŵkM}s"%͊w0>>AYnTf9FH0x̟ gW#IP -ˆNvomس.^mm fEيی~һݖm { 9{slu7~X =_???<)E,~V\X"wgn>sEVMq 64Ɛue졝AУ8uGeE}Z"W |ZN"|b9?j.=gM=w͜n˧FMxH ԡ"^AO2uUf[[}]5#+jKxae0%R5xR!K̢Rpۓh;$ιT][d@6(}dʑyGC2g_ Ȑw` W U#5wCZt _''UԒi-=(QED$l f6aݡWuly<ږvՄS+މyJe}k0_mGVs+Nrџxn܌S3d[rBJuv2Kͱp'T id8J~PO}g5[& "h1v-iwI6d=he"lwv8K i! HG(?֏W@^sXaU 7jյR}"U]ҐxoC)#d ␙])[:u dȪ9//E NvG ɴ16XYI6ΎV)J2}Kr[BֶeiY*vMMEq@@FUDFdx_0R4@}>WW/89ߵz>=Y{qp'2(Oܸk[FTm>^=!,E}@!1NmÈ:Ӭ1AU4ijj⏃W7[17<7[,T 怒FId #VtJK#$iHɳ|z݋BIsmt)dYâ;@$2eX~j򔀕23ܟ:!c$ @Bmb ȭ@@jt\2?7˳h0Лz{߂:yPJO@{H$4 GF?4V3S8Oځb𠷡IrA qz@jjDQq/6 I$ /P/_‡V@Ƶo@SOP,5rPU/u c+Auq%>ƂU INA9x d|,=(.wsTUR; ОEgNh9pxK-iŧRRU)BV?K R-[΄RԔ3ri+41<2>)}٠Z͙NyͶUej [\]/g6mU3nֻS? 5%/Rb^[:v&YQݴzWzˣvo,-7z&;̲t o}wOԿ0݅ ;O!?8 80:MbN,O`3c3Or4٧Zc{&:af3?z2O(YQ+3H'~mm]7+<)z҉ҧ3BD֦{jbDMܘ33V]x1;苕SxfG`NbY00~ OبKۜA#-i?뷭cd}=yzuM1%#YKXq ~T_MhuPމs_\3`|L-*;{qygDCU̦*(.Q\W5T^V^Hڑ/(ti;aY5 /mKƯSo~uÜ[Ijq6X4n-Y~XaZ|0" v#5K H6vu*zwsez6bEܴ%\DǍI*:NXy?Zu݄}eМlUdӁ˥콐Ut>lʮEջ ;0>/X{K˂߽qgoBfy"9j=T>?sώ|"f9Y#mڽ㴌Fu֦ݫ:w3=tG(9O^ҝ;)2(r)t)rBiA?GA\^8ऍ+Q{{c}_ 2wB~z`Fl6l@om]ֈ%($9/eqb~@P%sIZUX9VUPJrɊLIW๵YBrpiHnw=iz]u;12*(']HQQ5 ľo7VGy/zFT>NJbъy5Vr9̵2oZX7QE _qٓ?Ⲷ%U>9 K| E$m??W/mh6^\t35cY-2}H_ ~ͼH wsԓq,e=K__ۆLL@avIt$hM^.VuXzu'u夎SUٵ*b_ karL-Z }tO3Qۃ[Mmǩ0CV^&jfơLD(6ɯZ1qVfUgG/!nұ1AQdw3~ɽWθ95O=B̉O"_֚H.8M8unzh83ƌ|$-٠%tA0u(od[vz%jfn{'OX8R{^Xgno,hZ&If,lLguw~ǪhUpkvKD2Ɛ QϙK~/rAɮ,RP; .%"٤P]/yV),\]Ik~(lN[i9 j ( 22ϼL2 2N3j>::^YHfxl˛郀]predu#W^/7X|1 *N)aprXj g+T'B;DUS"ɜT oe1Ճ}-}InÄuaxfBL1u H^,툓.`zewi>ZeZFW6L%3ZU>dLhӆFI5$Gr ?N Knֲ_Hv c"H_MVl@by;p۞&ٲn.#n[~p;d$le_^#ӏl}ƟZ˦tG_]r6DUP[hg"Q_-+-TL5[t/ 5? 4s5tr5L](߼ aY躾Оfy]M1{8$@}[[l^8&o kDO!V>_s|6Z?^q2q'  zI9;zR~(N}` ;JnDFn&iWwJzn\͸} 3"['.Kjj4?a[$;i;a&q"'xyW__`nݧϮ;מy^y矟ؕ~_F Q% $ J"VH8w+!go[E 0d^HƢ'q?ۥ'Q7,bC~W/\c1U|⢕zfˏtaV)>uKvtc⋗_zU_x } },9v[;:vPrPvա]y8S~,޴~ |>a[,)Jmk V]lx(oB=jίرI[˶̊z,.Ƞ"~qZL5#W>ހ*&iٚMUes+ºC!i:rH2̑]vaXY^QJ,5y}4 Jc^qX. EGF d&.iq({~v@Ny%S7|JVGA&إsbYOn9##T%bfqp-÷ yy;, E7\wCl(]e;hS[d3 B;?<a(muAQDP 5B 7'7Ă:X"E*ݿh}9wϷ*$ǣr:|;EKhnV? He-cfw\J=0Q1^#"edGi0VSk6(\%WoD@X)W4TDLEEy: B%DHGKH U UJNkXl +IhgbjiWje.Cc䤙D8ѥ@܄.O? 0WL" \f%b1x> Ч*f E9vn3}^s^8vMB2vh3E7A8KpC0c=,1,ɾ;@W 8[׶ݗoWvp`0eJ)^k5ICM:Y2gnDO FVH2H@T6rTiR1a&@H;QƜ&Ѱ"ly ]ǯA9?VZXSppp39 ଀_dJT!%/+W)Ez\N!UhWyz¡RөHQXAFהDrA7Nŭ>dM^kiUU)GYg_Zt1r&ل1U F-5ay0 &|7uy{Ph:7@İ.[XOY.g~H(Zk\uNWx2OēobhwZh^iqu54橫2 J5]VnUtH֙Fc:H gyv.XB#A̳o"u$cY Lg`|zJ=%@>h.2FԪ,,bA? o=X1hP95|;{®~:@dw+3jl[W"g+_X?uڎcޓiϼGMpɾMN`V/hGazB~ H^:~w,\b[R]?ʳ{uذ NﬓP9`Kn2ZwM^GJlNQB~u\)XKb_$'Y_>S`?%s‘qZ4-͜- և+c ~Xi36旌M5cמd6x'u- kRpWu[Z?3s9?걓bKB2r[B:--3]P|ʫΤVԖ҉Z޹q'$Ȱ`&qS'ӎ_syy IT*tK; 0g QQhoһM_~*GQ/G18 N؏/wp`oAa~X<+#Ay +{A?/ (NXW^Ž9@0A'18ѵni } 0 h;\ёl OOG] "078 xQ UրVҜ υUƨz%$fyGF'ұti9*5FT^_#jZS jCs8gb+@+׺%kNl 9,(Ed|W ;Y{35;nTEuRtb|e7 9`Jv৫͠ԞN<jݛ-p:;g0MU x`4艑xM|zY0_i+Sn1aSRwbWhvl`QLB.00KZzmn( ol`H䬬DpVN;οM!xe NknQ;v.2"uQ xm +yk9|EMr6D 7*c 1@6J2?A%G6+#Z 4x>(R/0J kGG=z꯶ڂgYV*l'd" Oz?DT S*$R3cpl#PD(>IXg=F?^7~2$sRmv,hDJNA)6G!T[AkYh] .C]L+=D2^Ek}[N2d SΑH]$yBZU=f$o<ʳKƎևSYAۺ1\xҜJl9e[Ϊ30+9|nVxv/.nNuâᒮjUF]~_s]z6#Cĝw[;K֋nPv:mx12tseC=X9K~3[,"?.YZ;[y9~eo_]w9y9Y_Qh*z; 鑖9(h9Lʺ[?'fYgAk)̚~wHg,mD~ xL*jZusCռP>oו`RfnXS1GhKF 3G+6'OkS\ɯ_qcskwi):0aiϦG~[ YgQ}0gjKw3k{9J!/W )a~>aƯ̙I#̢ r81]N@G6'- KD׶bkDVK|y7t}+<\X^6d};E.%XL=Ȅf7|($lǹ{hI[#wu=ȴή!lHi4cvs$Ub0WHyЄ-Xل;y,\#5IUCratJCTtT)\9:> dihC*n( -W*5=Oy9a8 bNg3`evMONκqKۨgUZSVy?t5<u+aX1XɉL;p1-b呻S(b &F)PL\)"`)^!0`M)Dǧ<>傯^xǧDLĝ$릸`32Tχ&2GTB,;r0 G#5BڰZ *>1Y.Cfqd' $}WVeC2j31Bz@%`LӘ?, "&3jU!d_ {HBHB@ @H;h#2J9_͓s[{ԭo̤Bq hXމelTGnL'ܺz|7L!`!><8lp@A:Xq]uۄ!CɆaܭb[AmR1]H f,J>%]@@oz[B"ܿjnAmO L+*&*ԡm~Ո;~ ٓWۓBCovhu8uyC&KD׍E:L V,: MOO驉hh;Pr.o'g4&ֱPyjxQ*Q="L[i_ӧ4qywEtgzZ.LG5sq@NKxUxk%)8)*t4`ihNFܤ₟R奜 б7 Anj/+~¿"o4`q=a^ي^Ed/!_8aaVDVWn+*cʭr#*ڌk>"\sc7sӺey5\3̩VNvffMv!zp:\\OO_Wz;"B~a |?gy54M+ᖏs^^O9^ ?/Dž`\/q7$|sy_AG'7fO2ϓYo^ӺwĽ\|/ICl ERtn8pw;4\8eSNIq֯X8B֫sAPO€ƫQoltu\y0?4<][\?]+̟,'M(aq.5QJ?dO:ʻڎΦ+|O#N O`Ap?X=ޛ7<ޙ1<=m{=fհVzs3bN붆}y1r,p-y.a169Ժ9;&XKb~ c-;o*IlĖ6K9F6}ldoӂqD6i[]e-&"@k/VJCiP(ӾHm⩈Y<.唿@ne(rg9{w9=ޘu0-^h}%C D\b 1`d1]0 AAXQp.F, FXa .tBtVƆ)ܦmt`m]Lbub#A.6a<:5I]ɷNnW;\`y{kw^TJev MSs֨QTu:0ӰوNÿT* MgභDjkxD dDLa*((WM|u|!H :@D%b\T;-%1اU6NtGT*Bo|x/Lx4:(;pKe5Y8x}%~i,Q݉dK`.qPjOG 2:_,0DW炖O)2Q[aQQ*zJx3"aa=B Xq=X`Dh9xfކ-#Ųi.ӧ4{YM23ΤIٌAEP}EAQYdSVWhulML&tM柚U{[{KQ~@)Qw˳baP g{?Rzu{k%sB=6TzKʒVI9(+/i^ ||hѮ-jEEh$@.&c!=8HY{sgoB1wۣҌ]ZGYh+6u@|CLvH ]wաQ]^oĥ[&p{q 3 m쌈7M%Âd+)}=&-˯ 0ۜtӓ>§y㋴:2Tul!G!᚟w O3/{S?OoGg٠_K{)'(`V\ex2B߷W?3𼌃qp7FgkNnʥszw.,㤙yjel\ѐ[t6\,;I􄕔KXɹtA}Z0 'Nz@e#5|FFd/1ɂu8g4oۜX5Ogiʭ.[h+Ͱftr{Vw5硾{(\ԏKaQ2*>Y*ORaqrsxy'<st.gUVm\Ҙ[1>̤zbqKu5}i}].V-kƯ/d]߳. g=|WU'+ Yj3B隃ip>lֳ>w$̒A͌}|owyٹڙ}|ߛߵn$!ffވyX[LdazǤnoMɶ9NeX8%j\ĀLVЎ1=逺I 1; 㣣 „'d5n==~sՈzеHAW8-!bП =OW)43&NF`ߍ͙iI6Y~ZfXL!@Dg. $:*@;P) Vbi+?04RpN$Ӟ!\yzADZp? p,rrƦ3'MG jaz S/3J LY LboT5 < #)z|ˆw Nr-Ov8˘6THD3v{ҧ+s L\K{Zol:oE:YofBڛiMu-bhub\`1 A=6r0A= 3aAryK򵠖FA@FLLX/ܺ+Q<ϼtnDQˊfͅS ~,Ƈp?n:֯ebZ&3׳{?Q _Bƺ [>6aZr8`q2fED~V mr'ԕ Q'v.yt`,BE*:|0|u::xwثSbMVNlKf ,*M^;`4$;}3v_=LyRk] Ѧ|#* ߯ڛӼ\3.kފ)G}eکJuu\SJ! TӉaC q.IMXN1u7lyY#oχW-&u;mpUʓnqš⪝fg>v.& x;~|9iL;7=_5X{i2e{ŵ]_ϻ>Sڮ~ȚہNL_~~Cݙtςa'EAzg[Q9/-~sqVj9 o"nѻ͢Kf6t+U\xNggʳ~9UL=0LYse3؋O:QK r7wh鼓ua"n|Yok=taBÒ]~)|Eژc[[[Lc#-8b>{8|17RgYGSQ>9GU9ZL8oglP'eN? 6QĒjLH T}G-=[ιH[i؝aC;|}@룾K6&USѧ6vZM{ ߞ8M'>fʿ-}]|^tJ>#02?a;Z_Z>~d͓9+^uG>dzCOۓ'Rx;u\jQ: j^5b A.Tƕ0$Ի4`P/㽭eʘFja.Ѥst )}-):I!2hPH !nQ2E.A) f\vZxy~;Wwή=58?}]X GA1U@($,* <͍#FNޞfk~cpQ),`^l(20qJGt͂L2V'UZ5 DU y fC)2Tb ԪڭINwt+gbB 7%4:fTFhGbι=w*m!TsQJ y4@,61GPDBLC$pD򀕝|_]": Uzȧ8% Gc;7T:-r /#rnf@dv q3ro <; 97Dr:~bhD͆?^x_dY1wodA-2P%3 @'!rs@-`ǭK2 8;U;0y-^^G0H]qq;V^ /Ma|x[9uSߋ˨x1hPĢ 1!*.T%kxh^e<1ĠJKY!wȎ" *A LUIxPI]CTCڷJlZw=6e{ 2K\v9Z&zݯW+u)_u<%aw WE=.. \FN~{qNmK{g,l]ֆF)Q^÷{6]![~=e@?P~0\y5DL1[A[~-c烽AU⡷,|;>şN<L1?ζΟ;d6}r[W{*}sBqoGƓa[œ5ْuXn-}=֕t R{<|c#Xvٔ3|ICP'!źǒrP}cԳ̓6x3da‘!p{4fJ& [k⏆q'dw<՜u6ߞ[@)8]3;S~بTy-B& n4iXkaǕ'Kkۧ&>u}^s/zfg,t+K^=vŋ5Ww#d+`f3 אR\'*7xgqNӍF߽NMDyAy&0oD;q{k7y C-?TכBr}e)֬sۉMfG-q 0Xoܝ&vgW .?1vw)%dYn Y$ȱB9L-AGf &ֵ3V[qyI'e# tH f &A*bi!#"6Gepȹٸ'+I X|4 2VAF0j+HlDI#W)ȟ9M1]u.<.ZeA L^:3Y f00Y 堽ˈE8R/]|/ BZ"99m:P+ @Aұ X4:p;coP 6" qx_u,$ "9p"{'HO^&AxHDM Oa@A^DqEJ6xoP#SRӰ̇Zn 1R\(gi^I2эk[O< YOhQy퉥J[-{2˨ wxJr^F1qAWrQX[K;jbV_l*X(-tPP"Y`Z!RfW:hKjRK~`FcR*9lj9*n<fb*)֠-Ĵ)&Ey#"B~IN9;  @) f3yb2A3pEdL%Hty|\A*KaD>4)ei.tFlza l4o4V[Bf\eiiߞhn?Jƭ6ޜ( ћcu9bo7m5x#ۋCUtqH.:k HbO2k~RF`7UR!}"~6V`J,rU$N +TJ=nm {6. }곥A콡uWEjgaZ:hWs۠ ;OM鬝i:"cњ.cxLhm#tAMvCo+/fy-nPC`C, *j4i"j\[̚͞=$?|33;y=<*yv*M9_a/r\:~eL=_>%)Q[wj՚v&^`Or_ztUۤkU1r {,Qy"J;_K?]`sTƙC2`p,tN]°{n&ˎ#TC^.!x^U />9aHN=uF]Q(.؇|jOGNS]W]yء-viIw^=랉9*ѩثo[yvסŖ<;+a~ յ蛡|*zG nCSqՖXt*\Ɖ{͙;g_9 -~ Û!݅oSqh=Zs1mCGs-:Gns!s2N&Ϫ*QG/NZ=]%.}h:SnȆ,Qo|Sz4uw> 5'/ojޙ_BFʹ̴oŚw?[כpJ4`,{ ģ }MZ͹ Zw\ѝ7F͗u6ֲa.'j!12{ܖ[\6f%h@ T@%d:HP_^bA1&BBt} 8ulCe#)4T#dyJ*PWR @)%B&V{h9ddg6Z(D.7]x5tyʫ63t 4@@" ؿr3DЙfխL& `zMQ)¾4ed?lA̟m\+!KE ? ;'л4V-TɀX!Pyy ft^V Y9P$3#l1)8 @JJHMAȳd,JŁ| \34,VHg`ڨ\0%3&N;NĐ >1=/-Cc'߰`ϞQŭܠPF:,Cq}s.pjQك1)~D z~@Ut"]܀1w & *awf0 < ,h2\#FPpYWhĝY 1U zT 6A4pA7\WQ=Yhe"-5 R4P e*:ل{ORA3xd ցF ^t"zqGҐ8oP&/@6?y3zP'6tE=IFئECbܱU?]<*%\_M][fZ].dh1@HB#I$$  AFQDf`_o(@`mKm[W]ޓs9whin%Vr-ViƬ83gyɂfٹ?]3gF'[c{7[iQ&{n8ɌN6p|mheR`%Vur==;l#\+oD*,GI xOzٹT;%FM29 679LZ }.d {s鮶p9 3GC=̱8s:*`.LFF//| Ɏo?{ugzN18=oOQ7IXK?c#E0&"cĕ wf'+2fW9L_M>zѭShs@|O1D #aF 7TFnuf̧;C? tﷇ߿~1旅{>p1W~;ӗߜ}== ;ts?;d,|[ç9vwFݛg?Xv0*MD/7?F% _U@B1ZEף% Q"VޤPNڜB V;UZ0K")>' ,{,MqmbT|A591UUC- ,D%AV>lOJVR(/-ʲR`UAEi xUU~ &_|QN(fpB`]L3K# f2$qO ,W.vL]=`6{H,\z dlfFU8D?B"`ހzғd@o6@ =b@Afgf&Y:>ŢB~,BAVM  ՙp\ f\Q"o"P|%T tB b㋈Q(%.$4uyNf-D  Fd )G 2-q=YZЉ[F!.jP\@*Ne:|_r/UJ0:M*9XԸ^X,iSj/ ҙ>鷙(UF"8*p4ȬjʉyZo1<#HQ "󣝭>֥BI[ICk8:'i3]Nt:ܤ:r:$ۣ$E̾H'-1&G{?u=@ .b)Mmeh万*L@TQ]h2zQDdUK8"b6S!frJyaBKNry5Jp%IQR(/c~0OD 2E.‹ђW7*ɨ|C.H5;ɀN7@ ]zx;s7xv,XnklF5Xk$ bWÐOf472 {P|V/(es d @4(!dR݁s'z.XNwu.vwQz`!Xvio|ydw.TNpnpdw>\[NW**Wsì)qfSބymj1~,_2{sk$'-WFk8+c')4`o)Xͭk69oYGxi%o&z~+6Z{S37洅+L4Js)ĭ!{#Y(H#OMigu&\D#4S:3x ' n\Іg m&/-S O']'q+eDso)gM]! koBH" * . B0Aqaq\y㛪WwNt*}9$0w]A lk PdkӅJ._-. 0OgU\`f#7kqNY݋!5o^N>s`K[w.1j͝vn|;\uw8y|🥋a\ßF- vD<\<򫏏zۛ?m;[~ɜr^r?geꇕ۷Z]^xǷqܩemlnbMZ4f!mgB JDe35gĎ, B.qjQ; xE#xP!} B]H -X]Ղ^$:r4*C ~ނ\;lrtE!ΰ;v5xqѩAkikث5eUG/gDϦ/}D/"PS%T@'e$J2` + SPNDvŕD^ޠEX#:<-Z3 xf fE{D̃Iv6?l`D@13a[A z_ؔrC\ RK`(QH)" },&SKE,z-Z55UȨJZ}? &`ݗ˵ Y2䫊z9-aQM&dnú'a3Xf?:QFHcjy۽ŚBFت%V*e&(}g~QbR7!tDIDƁ=2-9"UPP=`S.>-㨵B =Ful>I&-JcDюyɨN~ykٚ&7uL[zLe&y\v(xi?>߻zux˞udF:ɥSɃ͉SIū̘ԈzcLT?t{k-֮δNȴ\$ 3IF&UTadzFCzh}"Yy(zC]=4s?\o⻛;glN}S[_>\F5Z!h8m hŁDXCN$Cp<!m M4`7sNlyr4RDSr[SUc~@ bNZ!RS*U uKZl$Z'FwB DἘ$}Q8V=Fr"@_gd4?%9ے~w|1rwtϱo3=;9з^>W69xӄz.]~钇kWT>a^bݞ|Xuo*n:n~"y=\ݺ8siּzc.w2'>g޿66}9tO>/O}ZW_~<8btthřMY!6ƐI*\.lZ8uV ȝ윔e5قubf9jARe$~HBv>BfbEomZX#k}qwh`ԚDGmB[uN;۰P7>G_+-%;:~/zj XdFb`G[^d|V C wzi2Wcq8N A3U%tj']ER(YNtǣ?n?ڙS_YiZ(kVfܺ߯<{y{Ryp6S7>W>8ύ|4scynʆjEb<fwҨc|>&#O)l[L‰&(02!3O{`vB!NM&M z6!t~p#LXSBOظaM1WF]3eʅ㔋$)MQ.l bu{ 9F0zQښbCu-x> ֎C/BKx>&#+L`p d5Y& 8 ,)pU8:,= %4((z t/ΊAFX`F& XiyDkGrqM :\Zh8h|cœ惥brAXwoexiܕ>;R|yTV[>-OVħ҆YyS|-l%۽rۏ{ۭovK+[-ʛ/˛M?lغ.>x^l<ۼpm+.pgX_).^*,4lL%5ORA ="v"_id}KґQD:Ě8/K1 aF)/c>㵙`.M =qS)kA+ԬE<3HL$FhYeE;3suksk[6&5|Lr(OLjKMS՚Q/܇ ,MS4Q8fhm|V4qO ϟOJ[-ۅ隭l4߼tYzQ)7x=G偟nH^.tۿh}/oES/m/._OF}`|}XxIBv1=P.aȥIލSngbD(Ga)ĚD"N '(JhX̱gk Ӣih:I06*K0]OP1B4A' `~;MLܽ^40v+݊{mWQA)ThHqxlFʸm!EIxDȧP 0>"F>ك;F)>$tK Qy#b3gʍ^3>˄ : ,Y7dg52R&I$|jQSST=}$O/NzoIaϭr7 .|)Yo_߹\gp.л>ʅcSwEcKX_[ucл>>g* >pVy'dGv"?[`ĀGa[5^8 cFyHű02,"ٜXG;`_K~TWh*2#RC>-a80,^o,Ap0 ]ҪG˥Rg:ZUߖyG:SxON )<[G2joP{^jN\&j^77P]M#uPLC.ut%2RKdRɢg2b]Ug<h GAM9x^7ZP7eDzf0dlcl˶le-VonuK}vyƀg L$J1EJ.rA%WTr1!UWyIqq嶖>iJIvT/Ǔ6{|[`:۩fuF=C&Q#/خ]DRN.x^5Jm[lsҤQ':GVb$Iy/6E*ߤ/H5/*E!@Bo[QQn/\xpHb;晸]V1kAn~y V)90!Wp/;>˕rSe{'r>w_y@W `ȑSCQMО$DUؑareJE <* $ux1350U]&t P) u–?g {LW ;U h6<9[\Dnm3Y޾ҞRΝUvYZ^F pꢂyOTં hd~pBGݭhiP04Y=OÁgKqs E zf:WtB7i٠u 2rRG&_AF)6)t1|ۛW4jÂU65\e*;oO͙;~>ξ?{_Ͻ>|ʹswrܿbԿb2ʗΥrMjIEGSԩW 0lZ59c\6d:mzVtPsI݀\ y&sx9WMC=q?s1h8Oj:71d6,\_ݼĵ$åpk>BI`'w9)TEou$̺`nGS=;Z٦&0wtiѓKt-A]ecS wk{KWTnh(Vat6-ٸhqJQC8"j* sPQLJ.KT }tP䨋+eb3nة&'"'cT@WYݢ.tn. iܞ^:?~z7?_=j^|uŵ7߼t}*7W?ÓwS÷o/Wx?4SА2llm)lP>&p ʆB,v##=KX_ǹ5pfbucDG܍m{Ñ{|:&ۘP gOa8N_pMayA98iͩ`z3|>{q·U*׭uXLMZ]pO>C]9 "Iu/C~ۅZ%W8綯õJnڎ"-ھLudMJO:\܍9c7Ԅ.D~{`"N;i : ,оZـTs'Y{WMfr.{k]zܩ^~>|{q_2m㼢f%^b˵dYbIWQ$%e";EI\D-Y+K8uu) Eh ?ghbf(7;ۍ_luwZ:sv*GkE{LrL[Kɬв*`w3)$y by^9h3`ڮz<ȗR_5"sV2h2རSV?{x%?pPJR!֊h uxp5x))DN'Asa\t2cܾDY}) q832CA'Th%$QpB624/y=^qگRvJY.RZuۮ ޟFg +"矟R}~zgG{̅gw^lӻ~tSۭ%Y; xпU󭷐Q=O75t]8B/ hrDrl]y4pOorx?}~sW/6xn~?-蟑If yKVNJ:-pBFMcOoE<[IK˿he>ed^yÌ;&+9I$'dZ"S) 5Bsf44G&3 ńL5/hȦ` 59 zrlK wqZh0._ӵ+tmhGhz| v3;r&iɈ2S qF6В O'7ifbo #+u1OghzLp}lFh<=j,'W9xb ց,% kkb$UjD|T ٹZ\dyRD̋(;lrw֛EEyK3xl@'xc 8Q.d+؋veȕNyȕʘel[\q_ƒ>o ~ }@y늗{,7ʦ[~(ܦޗrjgfI7;ux/zCUAݬ@& 9 `A XR$My< m3: zF10af7q„b" z63Am5ImMs/d-/_p6\8w&̡D2 BS%IGfڲ|(T{]sw:kr//\8Y>)*|XI;D1 R R1rm9Y-YA/.D.,t+GI餢,χ`*`r]3<%`OAhdpToqXRyVz^nEp i LPP%9%lG )R zڌ%JQ{^v ~P*wX+߮d+yvSKҴhbaIĩJP'V<&YͫbVCu{ 9e&U몽roF%rU_ wf0'b0Yrr Okߜ]~1hs}zqݮUh#x~c߀vEje ʂ8F~B/d?"^(ʱkx (\[I/x|Nt11io:Ԛ}dJ2#'´z?ݬ}qvt:xȫx d5TŬKFhR[ DžyViYq{,)ѯ!bhtd.BC_%5j޸+V:|~vcO7i{ʷ/_ׇuo~<_E/K w"Nn9lU?Ly<8+Oc>\=;N`3ҒR^@~@@!@A VP|qQ%{ȓu9xYyH'@3f]d%-|} 3L#sM&i)4S̢>o_FCkyF b#Q #i'xTIs%W.+N;n,Y  p',Y$˳S^tj/2l\K*^f:&I%Y@xHi+k񜥥%l#}%5)xB,fU&qF"VvPO C݆yw"seh]/R0"}v;-'UA0A !˯2 ޹@_CUZ:Ѵ]\#%$z9ƩbUij235F$k)/IdJƪV.IYr~>PEj$29D43 β"?aMDpA|[e ̃ʼxR9w|dLb$9 ~L0sq~O?" z|,n 88.D~Xs`wgNynv&8NSxL+8l9xA y<$!rxcqx?R9䇤/FIo+$e7lJSWFmL$uZvtxN!<fZ\Ηt<jI>;o^߾͗GKۣa=imq,6Plq׶j [?Uj5@FZJA¬{#a谺G ȡIت|CD^r( &QQ9*&}=R=WV)3砇wS)Y[cFFaFZfz:kQk \ 16\f0tهo~xWOCd>=_sʑ.=a۴M5LX k&,M2 pBkj|3xƳ|1^ثS]W£Z+측eIC@+CeUUX(e؁cj1ܸty6؎zah!\( _=jwA s藡p|0 nf(~iu6319j}l攩 oW*TBv7Ǐn+ГwYb#xY?/1d6]p7EĸN.'ruUcֽ؏=2ϸz.C]|Ë́Nсr2bs)xI")ayCз ,t,%9~G m-9C:4\1Y|:33o-g@Uhy>>CF%_-OYmT⬗x7{| cS|o&f&u$8=hkEi@Ke&:rF5H\liH 43D|ż>|s(^E2 u$p~.(p!_ިVm˳ywb籡CLZOOo}qѢ}CӅר" FGӹt<&&zt cQ?/乭 '9qi*!pI<<Ƨy%Y ٖlvڱ3U!]EY (PVlkũWҽ|Bvqɪ-"`B S*<;g8_ڛ_?{y묿{iF[ Wlب u񤻮>ܙb<s;Qi '33yn_ҵrXd55 TvAFktsU8۬͒b{ooŋtD\qYR^  Ñ2RUKUxF!fc:%a:=/u˓ӏ:-BHDHa Lkԯ˵19OgsބIb[o9eQ{;,%qƪO ܷ&!aJ$) =1V)' "xBxy7w*a d|9➈^Uw߽2NTWDCLAIUf3sk'j̆/>y|}_GU=d0xxrpw}|3oNe~Ϳ޽,s"퍯jy7O"=gٸb*aZ,bJ*ivPNOQ%Æ$˫lbVlH"1q UpLh!^6/FV^7TχP!/h8'iTKZ[y:BiT ^jhL٫J<}u_B d6,NeZB| `L wk':GɐV4S22NL( )nT] |1/.D' VB~tL@{Cj'2$π thdLɄ6! EF |%O܆y= Y/#-}ݽ=Kwfb0m"l M@e F%TO^2A:X)V=8II` 5< c )ϪvELL֢4m2 X#y𜥽:Zze-#4,̐J9앍n# LACߐ `Z t0E5Y<_vڠ`1ɿl}#.K˓rf; p~_$)3p- G ޻,ݹ=pZ16{Z4b0s ^ =sp?\p`6ے'i} 4)}Ƽ6;hb/љ2eꖫԂULV /z-6$b _=;y|ϼ2ɔ! $=0 D8AᏒֵ#I>BȼQLe/<'>?Ooc  2TQMq3d|~GTb1d],zM藐JYpb:语rU|(2v7q+lWj >1 s/[i^P6ө GrHĿ_:Gzܼjf_1&0)i"xites]IIR$m5D}'oS-zu=d;xԬas/kYJk,x2kgl3T~y+f|?.cmĂNοv;u)kh;aXɲB^< /.qmLXz &v2uc:KYws|pq܋yStk d= p-M8ÿwPpΚyQ8VAxڭ/{A}rTևVU?(A!it"A6AGj1TBSpFkj)fv}Fo)(5@iwQ=0.j?ҤS$L:qMCWTA xU!3yJ*1{|1C\4|k 3CpL7MOZ`ТxMt٤G*ΤO;tԭjWs?g̡F8W0WZPHHM_7 FSؗ4+ER8ȐI}ExʮFIH'4Qw.&b\cQ6jy"E9jYpT1'V(љ{*L ,̄Z<K— ?k?s]Jȗ x#F&QA_,U ܂\W |ǾUoxYA ep zU˗$FUզP+V=6xyY OŬdd-LX׺`F˺Vu%ZF^p8M =ܕߚ"4`a9"3 mov/g,ŠkNwwG=֫![3EASYd)LK,b8f^ј$!3&5jbAmaTia&l@u[htǂ=ژ/ <]9^h6i^6_~pr鳇W^ޟο<7ή~텯?^/u}ruӛ8|/݋s᳓k:~4؃ ` ]ȑxmzONMud[O)1+mFRfl,ґ5OWNp5ld#gr]0 4CLKeSq%2,uMfr<kD SNq٧\}=>]UhuaWC%!q.b4"c1I y/#g#] 7H_\dg6n07g3)aK6vPjG=vФ>-$n/<>Oַݿ͠y̋'w/s[M{-|"|gѳQ(`΄ ;Gd \,3E >,|-,$FׂJ75N)b>% )7MU0T FO=տAz?Np{%Ij5N@NK'S GGi<-_["Ež&P '䘠W~AgJi^T k7,SYnFT|)_ք2V3;tpgGw'U_ߦ~)'JРl31[*fϫ\dXc-dz҉%#ߕ `.Z}הU ے݄ϻV- LɹV1C:fX щx#QxnpQ4 tN#7O :<* 8yjۍ5TƐTSTŨL{STWVvKI~8h/EƉܟ,'iTNՏ.n;U.rFӝ凝܅4G%An5マ螢9kFS77!#A'f2}la\LsMY8A6x58 vTVV% 8 z^92B&ø٣ԉ`^:4:Ġ!0k1ˀ1̸OO}#400HQ u믽pj1,Х@\ȟxV68 S[ﭵ>ڃ7ʣo7;_O~Uu fyQ9]9Y9+yV4mD^3Q+sX}X v>@[~3tj&'<)?A*FC-hĉ6#|7#X๝z?r/<P2#NQ#88LHâ$w ]}FEt,w3Y. 8@VP(Ʉjѯȼ< 7_MV$ : n?fHCI~s@эy a ( /w~/|lj S9%R)r2Fi5BQ[s>x VSȸAwCvthܬnpcjٴF:NnrN2e)1w[Q Aˇ~:BQ Y>@Ν2w;buRzI1?(;G/>s0s91?/`f$wV_o=],ɗLiބG₝1^=oą&fQs^ۍpa_pޭnTH ;ݝru^x<.gc`wC6\=jU|"ݐP8v&}=m " _W՟ еQ kI#zr@1Yՠ9 YmL'Y' vLbWN*9i\ O$I莐%<b7iJQ1lXO/ׇ:E1hwh,r4>^=*8L9=b0(-# Df?W y~^rMEDY" ĸ|B'8Xյן4rx[K [/\˝%n5/|zo X$g#X3YQ%+]JK?9FyfAv)h{r{unR㍂l(;(^t|^/}~Σ,XN%D;1f6$YxUt@3~NSyOҾY}Q垗!hpZi5ֳIm=VyK%b#z${M?%Ɍ0t4O0;`wth|Ɨ.4b/q|l 37U|7؁I׆B/k'&e~YCO#)k`G=W*Լ.lkν ЕEvr6`M9I?Ԫv̡脤3:BU<b.$bt 8' s9JՖc; <s /-Vx^a&W4Ehd -I+W.zh\|PLmryvv:*'Y.u(s9⭉1Сh>،L-N*2xK0/(wT?:J7d~3 iK m ,q>ӓxI.18n:ʼnvFͲ$"zC/z_ʫMBy)۔fλ8,c;=gwe: J?ENԥiB-ՈCԭ=`CߐubuY8Xޢ^Lc49yYDFj= Wt<غKOnm|vodجK"w.ihF.3/g"fmO#>8fTP 9tؙ5⟘0\v Tf蛱Wn߹!īcq5;۶JU_z~o0e;XWO;_5?}wvt_~?|ɟ?_?ڿ}_rO?\ 9;+G>8;mYc^V M9kմNUXo[MaO/~t}w_ݽo~z޿/=ؾӾU۳Î탃aSׯjG )VV䭍-{ǻ/<>^r]a4mo(!8[؊]TڽlAqt: 6'#OOG;jdW꼾 ں%^OVz[33Z*Ԓ>?*ꚑ$5cܪl E[&{]49"9nfpQePHS`T6D- ]; nka 2Fxas1zK!on-a& r.AG 鿣VIigjVU*%rY~?D։"ZCJ̵bYKUfh V-O2 Ks^-ifa~&A|ZBgt{޺o. ɨO N~cR^ILvu\}uL+ rcJ&^729)?L&~ @sN*NL; ڳbW?u?v8nU>笾)5+tڶFC{zw򽭞<=Nwl[դ)M?/1"N Wvڛ63 `W!n g_&\Һ85[ZWVVA@DP+UWfzm6M%eYVɺWke{%[vkw7{`{f/s8=|J5 kRsýuUFSw VǹC]=L~YYx.5wkA*#}nJ4-lDb*ûwWμzZ&d~5;] B"RaVd$yy-ji0zӇ|XQ|e=p~DHd7x=\"@#M>@Npd : Vro4JEfG~dczd19 wf6#X[]@v' jlEl<y DTt R؏@^M(dА82UE0M*N3Tc|'P>逇D(%a('aV8L@t L1OYG9NA,2؍,ʃu{\5uL7ZdVMgsQft:{ֆV:wnkG>UxXLr&]2Ze_{t3r{ |n8Hʳ]$4;tJ1S}g -th 5ÍZ?ZD;ofxc As`%~<ϊzQQ4XجáG1ZzD@XH\> 9(hu`OdCGz_?~ g_rh}dm]^|y\58Tl} 졶taKI-R ]Jx :lb! 2S6yTrqV`+fk)Q}0 pq_]N,aV%/K`'ey2wxn\xr48<QeC[#6+7 Ton_Owow;_.|ソwx w=|</|<3i endstream endobj 5 0 obj <> endobj 15 0 obj [/View/Design] endobj 16 0 obj <>>> endobj 10 0 obj <> endobj 9 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <>stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 19.0.1 %%For: (Felix B\637nemann) () %%Title: (cmyktest2.pdf) %%CreationDate: 09.02.16 17:29 %%Canvassize: 16383 %%BoundingBox: 120 -526 475 -81 %%HiResBoundingBox: 120.459767708002 -525.158701373139 474.820232292001 -81.6511627906975 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentFiles:/Users/felix/tmp/pdf/Channel_digital_image_CMYK_color.jpg %AI5_FileFormat 13.0 %AI12_BuildNumber: 54 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKProcessColor: 1 1 1 1 ([Passermarken]) %AI3_Cropmarks: 0 -841.889999999999 595.280000000001 0 %AI3_TemplateBox: 298.5 -421.5 298.5 -421.5 %AI3_TileBox: 18.1400000000003 -800.945 577.139999999999 -17.9449999999997 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 1 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:17 1 %AI9_OpenToView: -156.333333333328 -171.999999999992 1.5 1317 754 18 0 0 78 133 0 0 0 1 1 0 1 1 0 0 %AI17_Alternate_Content %AI9_OpenToView: -156.333333333328 -171.999999999992 1.5 1317 754 18 0 0 78 133 0 0 0 1 1 0 1 1 0 0 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %%PageOrigin:-8 -817 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 19 0 obj <>stream %%BoundingBox: 120 -526 475 -81 %%HiResBoundingBox: 120.459767708002 -525.158701373139 474.820232292001 -81.6511627906975 %AI7_Thumbnail: 104 128 8 %%BeginData: 21300 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C451B1415141B1415141B1415141B1415148BFD0BFFCA8EB28EB28EB2 %8EB28EB28EB28EB28EB7CBFD0BFFCCFEC6FEFEFEC6FEFEFEC6FEFEFEC6FE %CDFD0BFFA827F8272627F8272627F8272627F82726A8FF14151414141514 %14141514141415141460FD0BFFA1B28EB28EB28EB28EB28EB28EB28EB28E %FD0CFFCDC6FEC6FEC6FEC6FEC6FEC6FEC6FEC6CDFD0BFFA8F827F827F827 %F827F827F827F827F8277DFF15141B1415141B1415141B1415141B1485FD %0BFFC48EB28EB28EB28EB28EB28EB28EB28EB2CAFD0BFFC7FEFEFEC6FEFE %FEC6FEFEFEC6FEFEFEC8FD0BFFA827F827F827F827F827F827F827F827F8 %A8FF1414141514141415141414151414141560FD0BFFA18F8EB28E8F8EB2 %8E8F8EB28E8F8EB28ECBFD0BFFCCC6FEC6FEC6FEC6FEC6FEC6FEC6FEC6CD %FD0BFFA8F827F827F827F827F827F827F827F8277DFF15141B1415141B14 %15141B1415141B1485FD0BFFC48EB28EB28EB28EB28EB28EB28EB28EB2CB %FD0BFFCCFEFEFEC6FEFEFEC6FEFEFEC6FEFEFECDFD0BFFA8272627F82726 %27F8272627F8272627F8A8FF1414141514141415141414151414141560FD %0BFFA2B28EB28EB28EB28EB28EB28EB28EB28EFD0CFFCCC6FEC6FEC6FEC6 %FEC6FEC6FEC6FEC6CDFD0BFFA8F827F827F827F827F827F827F827F8277D %FF1B1415141B1415141B1415141B14151485FD0BFFCA8EB28EB28EB28EB2 %8EB28EB28EB28EB7CBFD0BFFCCFEC6FEFEFEC6FEFEFEC6FEFEFEC6FECDFD %0BFFA827F827F827F827F827F827F827F827F8A8FF141514141415141414 %1514141415141460FD0BFFA1B28E8F8EB28E8F8EB28E8F8EB28E8F8EFD0B %FFCFCDC6FEC6FEC6FEC6FEC6FEC6FEC6FEC6CDFD0BFFA8F827F827F827F8 %27F827F827F827F8277DFF1B1415141B1415141B1415141B1415148BFD0B %FFCA8EB28EB28EB28EB28EB28EB28EB28EB7CBFD0BFFCCFEC6FEFEFEC6FE %FEFEC6FEFEFEC6FECDFD0BFFA827F8272627F8272627F8272627F82726A8 %FF1415141414151414141514141415141460FD0BFFA1B28EB28EB28EB28E %B28EB28EB28EB28EFD0CFFCDC6FEC6FEC6FEC6FEC6FEC6FEC6FEC6CDFD0B %FFA8F827F827F827F827F827F827F827F8277DFF15141B1415141B141514 %1B1415141B1485FD0BFFC48EB28EB28EB28EB28EB28EB28EB28EB2CAFD0B %FFC7FEFEFEC6FEFEFEC6FEFEFEC6FEFEFEC8FD0BFFA827F827F827F827F8 %27F827F827F827F8A8FF1414141514141415141414151414141560FD0BFF %A18F8EB28E8F8EB28E8F8EB28E8F8EB28ECBFD0BFFCCC6FEC6FEC6FEC6FE %C6FEC6FEC6FEC6CDFD0BFFA8F827F827F827F827F827F827F827F8277DFF %15141B1415141B1415141B1415141B1485FD0BFFC48EB28EB28EB28EB28E %B28EB28EB28EB2CBFD0BFFCCFEFEFEC6FEFEFEC6FEFEFEC6FEFEFECDFD0B %FFA8272627F8272627F8272627F8272627F8A8FF14141415141414151414 %14151414141560FD0BFFA2B28EB28EB28EB28EB28EB28EB28EB28EFD0CFF %CCC6FEC6FEC6FEC6FEC6FEC6FEC6FEC6CDFD0BFFA8F827F827F827F827F8 %27F827F827F8277DFF1B1415141B1415141B1415141B14151485FD0BFFCA %8EB28EB28EB28EB28EB28EB28EB28EB7CBFD0BFFCCFEC6FEFEFEC6FEFEFE %C6FEFEFEC6FECDFD0BFFA827F827F827F827F827F827F827F827F8A8FF14 %1514141415141414151414141514145AFD0BFF9BB28E8F8EB28E8F8EB28E %8F8EB28E8F8EFD0BFFCFCCC6FEC6FEC6FEC6FEC6FEC6FEC6FEC6CDFD0BFF %A8F827F827F827F827F827F827F827F8277DFF8B8585618B8585618B8585 %618B858561AFFD0CFFC4C4C4CAC4C4C4CAC4C4C4CAC4C4C4CAFD0CFFCECE %CECFCECECECFCECECECFFD04CECFFD0BFFA87D7DA87D7D7DA87D7D7DA87D %7D7DA87DFDFCFFFDFCFFFDFCFFFDFCFFFDF2FFC3C9A1C9C3C9A1C9C3C9A1 %C9C3C9A1C9CAFD0BFFA88383A8838483A8838483A8838483A883FD0CFFA8 %7EA27E7E7EA27E7E7EA27E7E7EA27EA8FD0BFFA8527D527D527D527D527D %527D527D5253A8FFB58DB58CB58DB58CB58DB58CB58DB58CC3FD0BFF8311 %121112111211121112111211121112AEFD0BFF2929282928292829282928 %29282928294DFD0BFF7DFD10F87DFF8CB08C8D8CB08C8D8CB08C8D8CB08C %8DA0FD0BFF591111110B1111110B1111110B1111110BFD0BFFA84D222901 %29222901292229012922290153FD0BFF7DFD10F852FFB58DB58CB58DB58C %B58DB58CB58DB58CC3FD0BFF8311121112111211121112111211121112AE %FD0BFF2929282928292829282928292829282953FD0BFF7DF8F827F8F8F8 %27F8F8F827F8F8F827F87DFF8CB58C8D8CB58C8D8CB58C8D8CB58C8DA0FD %0BFF5912111111121111111211111112111111FD0CFF5328292229282922 %292829222928292253FD0BFF7DFD10F852FFB58CB58DB58CB58DB58CB58D %B58CB58DC3FD0BFF8311121112111211121112111211121112A8FD0BFF29 %2928292829282928292829282928294DFD0BFF7DFD10F87DFF8C8D8CB08C %8D8CB08C8D8CB08C8D8CB0A0FD0BFF5F110B1111110B1111110B1111110B %1111AEFD0BFF4D01292229012922290129222901292253FD0BFF7DFD10F8 %52FFB58CB58DB58CB58DB58CB58DB58CB58DC3FD0BFF8311121112111211 %121112111211121112AEFD0BFF2929282928292829282928292829282953 %FD0BFF7DFD04F827F8F8F827F8F8F827F8F8F87DFF8C8D8CB58C8D8CB58C %8D8CB58C8D8CB5A0FD0BFF8311111211111112111111121111111211AEFD %0BFF4D22292829222928292229282922292853FD0BFF7DFD10F852FFB58D %B58CB58DB58CB58DB58CB58DB58CC3FD0BFF831112111211121112111211 %1211121112AEFD0BFF2929282928292829282928292829282953FD0BFF7D %FD10F87DFF8CB08C8D8CB08C8D8CB08C8D8CB08C8DA0FD0BFF591111110B %1111110B1111110B1111110BFD0BFFA84D22290129222901292229012922 %290153FD0BFF7DFD10F852FFB58DB58CB58DB58CB58DB58CB58DB58CC3FD %0BFF8311121112111211121112111211121112AEFD0BFF29292829282928 %29282928292829282953FD0BFF7DF8F827F8F8F827F8F8F827F8F8F827F8 %7DFF8CB58C8D8CB58C8D8CB58C8D8CB58C8DA0FD0BFF5912111111121111 %111211111112111111FD0CFF5328292229282922292829222928292253FD %0BFF7DFD10F852FFB58CB58DB58CB58DB58CB58DB58CB58DC3FD0BFF8311 %121112111211121112111211121112A8FD0BFF2929282928292829282928 %29282928294DFD0BFF7DFD10F87DFF8C8D8CB08C8D8CB08C8D8CB08C8D8C %B0A0FD0BFF5F110B1111110B1111110B1111110B1111AEFD0BFF4D012922 %29012922290129222901292253FD0BFF7DFD10F852FFB58CB58DB58CB58D %B58CB58DB58CB58DC3FD0BFF8311121112111211121112111211121112A8 %FD0BFF292928292829282928292829282928294DFD0BFF7DFD10F87DFF8C %8D8CB58C8D8CB58C8D8CB58C8D8CB5A0FD0BFF8311111211111112111111 %121111111211AEFD0BFF4D22292829222928292229282922292853FD0BFF %7DFD10F852FFFFCACFCAFFCACFCAFFCACFCAFFCACFCAFD0DFFAEFFA8FFAE %FFA8FFAEFFA8FFAEFFA8FD0DFFA9CBA8FFA9CBA8FFA9CBA8FFA9CBA8FFA9 %FD0CFFFD10A8FD56FFA9FDFCFFFDFCFFFDFCFFFDFCFFFD9DFFA8FFFFFFA8 %FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FD05FFA8FFA8FFA8FFA8FFFFFFA8 %FFFFFFA8FFA8FFA8FFFFFFA8FFFFFFA8FFA8FFA8FFCAFFA8FD05FFA8A8A8 %FFA8FFA8FFA8FFAFFFA8FFAFFFFFFFA8FFA8FFFFFFA8A9A8FFFFFFA8FFA8 %FFFFFF7C27527DAF7EA8527DA8A87EFF7E53A9FF525227525384767D84AF %7D52527D7D522776527D525252767DA87D7E7DA87D7D525227A8A8A87D7D %5227527D272752A8777D525252FF592727277D527D7DF8527DA8A87D52A9 %A87E525227527D5352A9527D52587DA8FF2751515252A87D7D277E7EA87E %A8277D7E52277D277752FD047DA9522727522752525227525252277D527D %8484527D7D7D52277DA87DA87E52F8522827F8527D52272E7EA8A984F827 %F85328A8282751A87C7D527D7D7D2827285252A9277E59527D7D7EA8A8FF %5227FD04527E8427527E7EA87D27538453FD04527D527E7E7D537D517D7D %52517DFD07527D53A87D7D59A87DA8277C7D7EA88452277DA804FD042752 %52AFAFFF7EFD0427528459277C7D7D597D5252527E7D7E277D7D527E527D %7D7DA884FFFF0452277E7D52277D27277DA87D7D5252527D5253F8512752 %7D7EFD05527D27527D5227522752F8527E527DA87D7D527DA852277D527D %842704525327F827527D2727277D537DF8272727527D5227527D527D2759 %84A8597DFD05527D277D5284A87DA8FF272752FD047D5252277DA8A8A87D %27A87D525252277D53FFA87D537D527D5952527D52527D7D522727A8527E %A8A97D7D52AF52527DA87D7D522727A82727277E7D7DFD0552272728277D %7D7D057D7E5227A8A8AF84A8527D2E5227A852847E7DA8A87DA8FF275252 %7D527D7D7D5252527E7DA852515384275227275253FD057D52527D27527D %76277D527D27527D7D7DA8847D767E7E7E277DA87E5252F8275227F8527D %7D7D527D7D7D52F8272752527D2E275284277DA8FFA8A87D7D522EF8527D %527D7E537D7D847EFF2727767D7D527D767D27527E7D7DA8527DA97D2727 %2752527D52A87DA852527652527D5252527D7D7D52A87DA8A8A87D7D7DA8 %7D2E52A8527DA8272752F82752A9848452A87D527D270427527E52270452 %277DA87DA8FFA8A9527D5205527D527D527D527D52A8FF2752275227FD05 %52277D7D7D525252847D52F827527D537D527D5252277D27525252277D52 %7D7D5252FD047DA8527D7D7D27527D7D7D84F82727F804527D7E52527CA8 %27522705F87C7D52F82704277DA87D847DA8A87D5252F87D59FD04527D52 %7D7DFF522752275227525276527D51527DA852527D7D7D27277D76FD057D %76527D52277D2752527D527D52527DA884A87D587DA87D5251A87DA87D52 %2727F85152A87DA7527C7C7D5252F8277D7D52270527527D7D7D84A9A8FF %53A8522752527D5952A87D7D52A8FF2727517C7D7D4B524B764B52272752 %7D277D7D7D2727527D7D7D7CA1527D27522752522D5252527D527D52FD05 %7D527D7D7D272D7D7D7D52272D270527527D7D7DA25227527D2727055252 %7DF827527D527D7DA8A8A87D7D7D522752277D527D527D5252A8FF272776 %527D527D5252527D2752525227522D7D7D7D2752527D7CFD047D52275252 %7D27FD04527D7D52FD047D527D7D7D527627FD047D2D04522727FD067D27 %7DA8530427277D5227F87C52A77DA884A8A8A87D7D27272E7D7D7D527D52 %7D52CAFF2627517D5276767DFD045227527D52F827527D52272752527D52 %7D527D52520427525227524B52527D52527D7D5852527D527D5251527D52 %7D2727F827277D7D7D527D7D527D7D532705527D52F82727527DA87DA87D %A8847D52270452527D527D5252527DA1FF2727527D7D52FD047D52527D7C %7D767D275252522727527D527D527D527D51272752515252527D7D7DA752 %7D7D7D527D7C7D527D27527D7D7D522752F8FD0452A87DA8527D7DA82752 %527D52272752277D7DA87EA87DA87D52275252527D7D76527D7D52A8FFF8 %FD04527C7C7D527D7C52275251FD055204272752527C5252527D5252F827 %2727527D527D527D7D7C517D7DFD04527D7C52277D7DA85227522E277C7D %7D5252527C7C7D522727525252F8525252FD067D52A852272776FD045251 %7D527C7DFF27277C527C527D7C7D527D52522776275251527D7D2727527C %527D527C527D5227272E277D76527C52527D7D52527D7C7C527D7C7D522D %52A17D522752527D7C522727272D277D7D7D2727527C27275276527D7D7D %767D7D7D527D2752527DFD05527D52A8FFF827527D52525276527D527652 %272752275227525252F852767C527DFD045227272752527D5152527D527D %5252517C5252527D527D27517D520027517D7DA82727F8272727517D5227 %F85251272752277C7D7D767D527D52522E27FD04522752527D52527DFF27 %277D7D7D527D7D7D7C7D5252275152522752527C5227527D52A27D7D527D %52522752527D5258527CFD047D52585252527D52527D7D27522727275252 %7DA17D27272752F876767D2727525227527C7CFD047D527D7D7D76522752 %517D5252527D7D5252A8FFF827527D5252527D527D527D5152277C525227 %7C5227F85252527D7D525276522727277C527D5252527D527D5252277C52 %7D527D527D7D522727F827275252A17D27F8275127275227522752272751 %7C527C527D5252527D527D272D5252527C527C275252527DFF27527D7D7D %527D52FD047D52525227FD04527D5227277D527D527D7C5252522752527C %7D7D527D7C7D525951527CFD047DA77D7D52522727F8527C7DA77D2727F8 %5276FD04275252522752527D527D7C7D7D7D527D5227277C5276527C5252 %527D52A8FF27527C7D527D5276527D527C27525227272D2752527D275252 %7D527D5276527D27272752527D52527C7C525227525152527D527D7D7D52 %7D52FD04277C76A1525227F8277CF8F8F827277C272751525152527C517D %527D527DF82752525152527D2752517CA8FF5252A17DA77C7D527D7C7C52 %52527D2D522752527D522D277C7C7D527D7C7D7C52275252A77C7C527D7D %7D5252527C527D527C76A77D7D7D52272727764B52A1A8527C04527D52F8 %27F852525227527D7C527D527D7C7D527D5227277D517C527D7DFD0452A8 %FF27527C7D527D527D527C52524B52522705522727527D2727277D767D52 %7D527D272E527D527D2D7C767D7D52275227FD04527D7676527D0027F827 %20524B7D7D52522727762752F827F8522727525227FD04527D7C7C525204 %FD04527D527D2752527DA8FF52517D7D7D527D527D5276527C5152522727 %52277D7D522727527D767D527D7C2727527C7D7D7C7C7D5252272D525227 %7D52A17C7D7C7D2727F827F827F8537E84527C27524B2D5227F8FD04277D %5252527D7D7D527D527D5227527C527D7C7D5252527D52A8FF27527676FD %06525152514B517D272727527DA12727F852527D527D527D27275276527D %527C5252275227525227277D527D7C525252F827F827F8F8F87E7D7D2727 %5152F827F8F8F8272752527C2752527D527DFD0452F87C5252527C52522D %7D527CA1FF5252A1527C517D527D767C2776527C517D275252A77D522727 %517D7D7D527D5227287C527D527D7D5227FD04527D2752FD047D527D7D27 %F827275227277D847D59277CFD0427F82727527C7D5252517D527C527D51 %5227277C7D277D527C7D52527D7CCFFF5152527C5252517C7C7D52525276 %527652522752765227522727527D76525252F85252527C52527C27522752 %52522752277D527D7D52527D2704F8F8272727597D7D527D7C27F8522704 %F8274B7D5252517D5252275252525127277D522D51525276275252527DFF %52527D527D527C52A17D7D527D527D52525227277D7C52272D057D527D52 %7D27272752527D527D527D52522E7DFD05527D7D7D527D7D52F827F82752 %27527E7D7D527D27272758F82727527C7D522D7D7D52527C7D5152275252 %7C27527C7D522E517D52A8FF277CFD05527C527D7676277D7D7C277D5127 %527D272D27055252527C2727F852527D275227527C522752517C52522752 %527D527D527C5227F827F87D2727527D5953275205275227F827277C7552 %277D765227525252512727525251527D5252275252527DFF527C52525227 %52527D7C7D525251FD047D7C04527D522752F828525852522727277C767D %27527C7D52522D52527D5252277D7C7D527D527D272752522752F87D7D7E %53582727277D2727277D7C7C27527D7D277D277C7C52057C5252277C527D %5252527D27A8FF277C2D5251522752527C527D275176A827525227277D27 %275127005227525252F8527C7D5227527C525251512DFD06527D527D527D %2E27F85252FD04272E272E2727F8272727054CA1CA5228277D522E27522D %520527527C515276525252274B512DA7FF522D52527D277D7D7D527D7D7C %27A77D52527D27275252277CF8FD0427522705527D527D277D5258527C2D %5252522E7D52FD057D5227F82727762727052E27522E532E525252272E2D %52A17D5252527D5252275227272752525251A1527C27274A5227A8FF272D %277C2D27527C5252277C5252527D51525252265251275127F852272D522E %F827527D7DFD05522752272727522727527D527D527D2727F8272751F82E %5359537D5228277C7D282E832E764BFD055227522727F82752522751FD04 %52275251527DFF522752587D27A77CA883527C7C51A77C7C527D522752A7 %27522727527D27A8522727527C7D52A77D7C2752272D27522752277C7D58 %7D7DA7A1272E52A752275353527E2E270527052E052759847D52277D7C7D %7CA75852522727A7522D27FD04527D525251A8FF272D275252527C7C7DA7 %517C51527C5251587D52F8527C27517CF85258277C58F827277C7C7C7D83 %7C52275251520452512D277D587C7C827C2DF8767D52F87D287EA2A82805 %05270505F8272759517C587C585851582D5204277C82517C517C5152277C %27527DFF27275251587C837CA77D7C7C83527D2D7D7C7D7C2727A7277C82 %27277C5283515283FD04A7AEA7835983A77C2727527C52527CA77C7C587C %2D2752A75227A2A8A9AFA8A92827052E052705527D7C577C58585158577C %5758527C58FD057C5852517D58A8FF2751515851FD047C837C7C7C52527C %7C83587CF8275827528227F851827C2D27A783FD05A77C5958AD832D512D %272D51A77C837CA78252F8277D52F85252A8A8A8A27D282805270505057D %587C57827C827C827C827C827C827C7C7C827C5851525752A7FF5251582D %52527C5882587C7C83527C7C837C8358525158277C7C7C2752517C2D277C %8383A77CA77C7C5252517C2D2D2752517D7C827C837CA7522752CA522727 %5252A8A9FF7D2F2E2E0527052E7D827CA77CA77CA77CA77CA782A77CA782 %A77CA77C8283A8A8FFFF2D7C27272D7C7C7D7C837C837CA77C837C837CA7 %7CA7512752A77D837D837D7C2758527C527D7D837C835252527C04272D58 %7C827CA77C7C7C52F852A7522751274B4BA8A8A205270027F8050583587C %587C517C517C7C7C577C577C5158515858A783A87EA8A8FF51272D2D5251 %7C587C587D587C587C587C587D7C837C52277D7C7C587D5858582752AE83 %AD83A7A7AD827D58AD58275252518358837C8383A72D2727A8767D525151 %527DA8A959F827F827052E83827C7C587C7C7C577C587C577C577C51587D %A87EA8A8A87DFFFF2727275227512D512D512D512D512D512D2D2D512D2D %2752FD04585151517C272D83A782A77CADA7A758587C7C042D27582D2D2D %51272D522DF827767C2E764B7676777DA8A1520005F827278351582D512D %5851512D5151512D587C7D7DA8FD067DA8FF512758517C577C5858577C58 %58515857585158527C57827C827C837C7C7C827C5205A883A782827CA752 %522D52275252522D58587C577C5152272751CA527D53524B767DA169A1AF %2E00272752837C7C7C587C7C7C5158515252FD07A8A2A8A1A8A8FFFF5152 %517C7C7C577C577C577C5858577C577C587C577C587C587C577C5158517C %5127515851582D585751272D272D27522D2D51585157517C51272D527D7D %524B4B4B44764B4A6FA9A82EF827597D2D522D525158515852FD077D597D %537D537D7D7DA8FF5251512D585158515851512D5857582D582D51515851 %5751585158515851582D58275251582D582D522D5127272D2D277C57582D %585158577C587C52775377456F4B767D7D444B7DA8A95205847D7C587C52 %7C527DFD06A87DA8A8A87DA87DA87DA8A8FFFF27512727262D272D27512D %2D2D512D2D2D512D512D512D5127512D512D51FD042D2E512D5151512D58 %2D2DF8522D52525851585158577C517C575227522727F876526F4B4B204C %527D7D537E83515152A87DA87DA87D7D7D7E7DA87DA8A8CFA8CAA8A8A87D %7DFF7C587C517C5258587C51522D58587C51585158577C51582D522D522D %585158517C2752515851512D587C7C51527D7D527D7D847DA883A7525857 %52527D522E062E4B524B6F4B4B2753537DA1A9597C527D7D847DA8A8A884 %A8A8A87DA87D7E7D7E7D7D5352F87DFF577C587C58837C827C827C825782 %7C7C58827C58577C587C577C587C7C7C7B7C57582783587D7C837D837D7D %7C837D7D7DA77CA7A7A751272D827C7D52532705050C05270528060C0559 %847DA1FD08A8CAA8CFA8CAA8A8A8CAA8A87DA8A87D52527DFF58577C5758 %517C5158517C5157517C7C83FD047C577C7C827C82828358827CA77C2D2E %FD06272D2727275252A77C7D52587C522758588352275259052E274B0505 %0427272705274BC9A8FFA8A8A8CAFD09A8FFA8FFCFFFA8FFFFFFCFFFFF57 %57517C5158515851582D7C5158577C587C57827C827C827C7C577C7C8257 %7C7C822D2726270427F804F827F826F85258582E59515251527C7C5751F8 %2D5305529A6828052E4B452005F87CFD07A8CFA8A8A8CFA8A8A8CFA8A8A8 %CFA8FFA8CFA8A8A8FF7C5882577C587C7C827C82FD047C587C57827C7C51 %7C5858587C5758517C7C7C57827C7C27A62D2751837C7C26277C7C7D7D7C %A727527C827C822727277E277676942727274B4C4B4B52527EFD0DA8CAA8 %FFA8FFA8FFA8FFCAFFA8FFFF575851585157517C5857517C517C587C5758 %577C577C2D2D275851582D2D27512D2D2D512D272D52527C577C5851F852 %7C7D2D58527D527D7C837C27042752274B767627040527524B6F4B7D7DA8 %7DA8A8A87DA87DA87DA87EA87DA87DA87DA8A8A8A7FD04A8FF7C57572D58 %517C5758515851585158515851582D58577C517C517C577C7C7C57827C7C %587C512E537E597C517C7C27277E5851275252A8A87C577C2727277E0570 %6F9A2705274B456F4B5259A884A87DA87D7E7DA87D7E7DA87D847DA87DA8 %7DA884A87DA87DFFFF2D572D5151585757272D272D0427272D2D2D042704 %2D26270427262D5152517C5158262D517D7D7E5252537D527D527D8358F8 %282727527DA77C5127F8277D7D28A17D7E5277777D4B527E7E7DA87DA87D %A87D7E7D7EFD077DA87D7E7DA8FD047DA8FF585158577C5852272D2D2D27 %522D2D2D52272D272D27515158587C587C51582D522727042D5284535252 %A8A8AFA8FFAFA928FD04277D76FFA7A72727277DA8FFA8FFAEFFFFFFA8AF %A8A87EA87D7E7DA87DA87DA87D847DA87DA87DA87DA87DA8A8A87DA87DFF %FF27515151262D2751272D2D2D272D2727042D2D515151577C515851512D %51272704270427F8522E5252A87D8484A884847D52275227527D7C7CA8A8 %27F827537DA8CA7D52527DA7A87DA87D847DA8A8A8A1FD0BA87DA87D7E7D %A87D847D7DA8FF58517C5158517C585851582D5151522D2D2D5151585152 %515127270527042727270427272D522E7D7E7DA87D7E7D84FD057D7C527D %7CA1A8A82727047D52A8A852F827F87DA8A87DA87DFD1AA8FFFF51522D52 %51512D585151517C51515152515151585158517C512D272D262D272D0427 %265151272E7D59FD057D527D537D7D7D527DFD04A85227F82752597DA852 %2704272DA8A1A87E7D7DA87DA87DA87DFD05A87DA87DA87DA87DA8A1A8A8 %A8A1A8A8FF7C767C527C527C587C527C527C5276517C517C527C587C7C7C %517C5158517C5158517C587C277D7D7D52FD087D847D7DA8FFA8FFCAA827 %2D2E7E7DA87DA85252527DA8A8A8FF7DCFA8FFCFFFA8FFCAFFA8FFA8CFA8 %FFFD08A87DA87DFFFF527C7DA17676527C515251525252517C5252515852 %58517C5158517C527C527C57FD047C7D537D5252277D527D527D59FD047D %A8A8CFA8A8A852277D7D7EA7FFA827F827F859A8AE8484A1CAA8FFA8A8A8 %CFA8A8A8CFA8CAA8CFA8A8A8CFA8CFA8CFA8A8A8FF7D527C527C7C7D7CA1 %7C7C7CA17C7C527D7C7C7C7D767C767D767D767D525251FD047C83FD047D %27527DA87D7C52FD047DA87D7D597D7D7D282752A12E7D7E7E5252525353 %847DA87D767D53525953595359537D7D7E7D7E7DFD04A8FFA8A8A8CFA8CA %FF527C525252A17C7D527D767D767C7C7C527D52527CA77C7D517D76A17C %7C767D7C7C7CA1597D597D5252527D7D7E7D7D537D527D7D7D537D537D28 %2728524B5252A85227272E2727002E4B7652A87D7D537D5253537D535352 %532E5352A8A7A8A85952CAA87DA7FF7C5276275252522752275227522752 %2E5227272752527D527C7D7D7C7C76A17658527D7C7D527D5253527D537D %597D59847D527DA8FD047D535227FD067D52275227282727527D7DA8A8CF %FD05A8FFFD04A8A1A8A1A8A8A87DA27D7EA8CA7DFFFF272E272727282727 %272EFD0527282752272D2752272E272E2752272E272727522E5352532E53 %2E5252592E535253527D277D7DA8A7A87D7D527D5253527D527D7D7D597D %5252527D525952FD107DA87DA77DA8A7A87DA7A8FF5251585252277C5128 %2752512727522752272D272E2E52272E27522752275252535259537D5253 %52532E5252522E53527D52525253527D597D527D527D5253527D7D7D5359 %525952525259527D537D7D7D53FD047D7E7D7D7DA87DA8A8A8A1A8A8CFA8 %7C52A8FF7D7D7D7E7D7D527D5252527DFD0852515251522727275252532E %5352532E5252522852282E272E272E272E52532727272E282E282E275227 %5227FD045259527D7C7D52527D7C527D527D537D597D7D7D53FD067DA853 %7D7D7DA8A87C7CA7FF7D597E7D7E7D847DA87DA87D847EA87EA87D847DA8 %7D7D5252527D7D845259537D537D535352535259527D52532E522E522852 %2E522E532E53527D52522752527D7D7D5259527D5252277D527CFD05A8CA %A8A8A7FD0AA8CFA8A87DA776A8FF7DA87DA8A8A8A1A8A8A87DFD08A8CAA8 %A87DA87DA87DA87DA87DA87DA87DA8A7A87DA8A7A8A8A8FD047D597D537D %527D537D7DA87DA87D7D7DA8FD047D52535253525228527DA87DA87D7D7D %A87DA87DA87D7D7DA87D7D52A8A8FF7D7D51527DFFA87D7E7DA87DA87DFD %07A87DFD04A8CBA8CAA8A87DA8A2A8A8A87DA87DA87DA8A8A8A7FD04A8CF %A8CFA8CFFD06A8A1A8A7A87DA87DA87DA8A8A8A1FD05A87DA87DA87D7D7D %7E7D7D7DA87DA87DA87DA87DA87DA87DA8A8A87C7C51A8FF537D597D537D %59FD047DA87DA87DA87DA87D7D7DA87DA87DA87D7E7DA87DA87DA8A1A87D %A8A8A87D847DA87DA8A1A87DA87DA87DA87DA87DA8A8A87DA87DFD09A8A1 %A8FD057DA87DA87DA8FD047D597D7DA87DA7A8A8A87D525227517DFF %%EndData endstream endobj 20 0 obj <>stream Hl9% DW=#&Z AIn%dfix8-Ci}jcqμ-FkƒNulՒ.ub]\s9>~bų^?;~gzХ8yFe9Sw,.3+~c9J!kYyYV|jg,#zup%u )+Ƣ>T)s=ȭ[|l7:ETϿ;IJ&s'-Պ >EQHjU88tRyV22<+TL3i[D16Boۋ<)度_\kI& @զd`T;ߜ Ф:~RUpXؤ59k+^M܎2*(:=fT-fS:,r`I*2}hM`ՠҲʞĿ[$Gc: ۜ Q̩A.,bW3Y_*EM,R~le1t@84 /!z*P0#@^a!OT fNx=mPnS4U06nэ;[ *w.X8]Tn} u{_cQrz{4at25֡gx,N>3I(Er^q+!&PmުySi^ 0t z,PH2Rh9;l8DЅ 3@3lڞZɆuGc3zmuw ,MadכzމJb"o}Cm853JBB8X_, GQg (+u+xiYѐ0ma۲ؽ-u~CmBQڌ8 +Ecp\q_B-7չv܎|lL]R.Jk+gت`euH8F%h-܋kahXg S2O j㬶zQkhʁS Fl)L TS&MU0Zr(.֛bhp,+ʁK^R\Vz=k 3-EC[Ȃ&,v\;XDO0La!ʼn0%k! nmp ԡjӵ9c3;:(PajZ`09_8m9!4M#2,zff{&H,nnUeiKu-C)R[R f&VӰq#Z)[#!%!؈(VIQX @ղWY&#)mj6Ȱ&ՠ:&M:[?b=,!`>+mBu4%/ԙRUHP8J~[ r Ms9GPDY:)<" PJJܨSN 1}8ڊ=(ۏX>b<(aju/wr` &D,f]p<r*8e[rB}o]X5Ve{!&٣(`e*PNGämTz䒝#[ԩ-luj_nH!W8mX )l7U$,MԀXN:UBkOtΏ['#Wēbbi;s 2!Ԏz7+]}4XH0Se7DA)3=I.lw`+2Nܩa=0Bʹ+24bRO]v_ /Z sp#&0ґ`rWj-Qvh6c 82"G'CPˌ09H9ct3-bwduKodWIFRU#:vCF=hYzOMt02!7nׯ)MD|>!Tu6L# zRt)|c0zApvOyndFrgި8g׀(} U8Ye!Dh,H\ϺdDlYj{'R -!4/;?ԓa vKA`P&='읎Lk{Gc@Ǵ&=`d!Y) 'm^ҞZԶ5d6R"9.x2ބ]|Tw:_%.F1$Yl>f@x# 8Qz5`!5qQjfr18sޒ_ak ^v;a6JDpd$-TuF>jOhPwG\Q"Tb, mMDʳ yΩė%J(Fpƺ#61v.N NV"dt")ͻw@u Q&dX46z6]BvCYq(^~X1M{dC$.BW}  t8m^94rtƔdS1LEl<ٝ;- !^>e'Pr>@ƁeUb:9`ŭӶ)D2SvT_ބֆȻ͍W"aYbmtӅw"e!މQQmGUQPM6UۛAfBD AB}D^E.pZ.mڢ*[Lknr¿I=<Ψ>#;UBQ-HRmD:8ϗ3_7bSK}ɪG>kD2D0{{cF"=@(: 0sR_y`Bŀvy%1i(lO!{Pڛ[FP :vNj_,7S=i0jCxmyD>rtco [~l$K_7/F'@-N-NK 0M 4^&Ʃ]P,$h|y#,2toIk:2%`l`Mdn"2MVZ16Z"'65ђPPF 5CF+ggl(M΋:8豇G CXBչ`ƴ9zܭAcع SC*0X;GEi.|G)˩<SQZA%B .̯h: 0mV"7*l"Q.xdrE sqkVF,q&jbOeș6AD1 >j FEn x =JY);U~~O?| =M ܵ?>w~_>~GW?-Tί_~__-$>Sz]k<~c6۠(Ms 88zb%z=Œ-OQ5@"D CXv4Vr Fdm:d"1 Vfv"6fƉj*X3bDSIDU_:|qԽFK@.1]!XAP m;1N˺pV-|#5IЃAuJvKCӍ/T}3LfYXg˻kJXiYzGuVlxmN 1]1~ =Or%(vq  vV j)^'0~_YEP3pbJkEC=v2g3_LC-M խ:DKGOFF>lp<#RӾC!}(kӢ%)i@@^Za,*NTUP( Kc@XO  §MT*Pމ2{v@d:JA0ѹ2q'fV ŽCBYwCDUr#y!2ԶJrCPPί9CgTzW;tU7 եp"SN Lɛ '(:V%OD|\owx ? ehsC{/ed~-#Jn[x˳/VNWTU5gOWu 'O|Y]X HAݰ;aEOP̓|N 3-xF򗆞ۛ>V!"G3!3)ݸ%.GaA$xfOߝ>PdcVSnEh`7Hq2?ٮG(hx'}dz2(m!% h9crAG=7#| 嬶_?[אHw"4w:z~C@P!F?IMuAR)gU+!+DƁоjl*+ddcVi$5F|\k GDJ7y0CD3{Q)Xל]WmjI.SX׃3hBEG R@F,~owz#Uy41"F ĮחJkb1G4S[;q3Ǥ ҡa<z$t$݅go#u8`%=ahqѰdbfO^oa~ʞ |:îÌ=Zu('Qz]dkSgtDD!I@b y;]5W55_=N- ћo&T*!ܰXsP@ ZqƠ\'}?j2BNA݀vca':jL:}E-Za8E Dbzz6{R%xބ૬$*3NÖeH Aͽ'4 r¹)W貴!`G_,5Vw' [Ь0o;jY!58:0ׇSfO" a@eӳA:/4FsLզ'g_EG0mEM@Q2aKG Q+5P:ʄ:.x']zƹ(ącS:EY1Aјhǃb$7#::D>u#nĝ+Ϡ+_,KxeUCaԢ -S=^]G&_/2Pt`B3~.Ms+(hdN\DӟDHȖ+HоNﲞL9 !g  h{Ln;~"r|7 QK>Ҫ0֬qQTo2^yP' 7Wխ-lǜeENCв &Hu&Cؼ;HR|`w '}WEVaP0ϰ{(d-/,>kqi|C!ܣ{R a/IT=8@aΉ!jCjT ,XFN%/@Ÿr%E.lgF>'l y)dh@q'?m.`DOm2(o(duNt1uF\t5d<ex#'h aIW}uJ0Лe3 Ꮿ M3瘆azy=ҸNQ8 D`1!#{O~Aۇ=(EM4MW&roϗzp;QO0%>؀1Jf CF ^1r#FMayot:ETey$M(W<$L<,L4Aj"*sF#{:mGsB\D8 @a'}]e4AH"#ʠܞ~FiA| % 9t^Q -B1#ZOBf75:fSp >Khis(Ƥ,͚i, p3TzN'[qptI4QՓ'NeYKnM9tEx,ba 3nor[g? fyŽuY8K˵7BpMjb $k EZQVN>gxt PD؇ڡ93L~ o' cܑ6bZ 1$]vCG! 9U.ϙW7#* iJm<30V mL4u C6tF3@Ŵq0X@&y퉠:i#Kb> X"ZL\ 5A x󠪙%-'>9@eJ80X>,;J0w7-13#I)3 e+(2>m̴.sQT ~80%ZSm% ǜR$Qڎ}xsm j2np6Q,6ϪQcĮس)R雰(\'! etﰳp;6^5k]F41uSbɔ@=fd[ݸyD'S@{Vp465a6]_AHZؤ_IcϋrD*veiX@!Pٖb6%vʎ|IP_7y'ծf{`':bmxm) @ A"G <õJhPP-G`T*jM>.StcqEm+k9mQS xS (2/; d{^C\m/bfbRHöi pECƉ&NTUu$roqoAћ~Z(Ju"A: ,"{Lg9֒sd˂}4v>GI|Bʸgjpx# =`i' V&izҰγQv]Nt)N VkJsr5oޝ/?fa"% RVb kcnk ^ ZK'2a1DpF^4x쭪8Vo>Rcg"5‚C-bЍា'uPe%)&?4q@IMpWL! IE{<a`.uЃ( @mSe_R܂&!aJ|[>\7Hjg]DQ' )rZԱZF+L}\afELgCpZ -Mؚ,*O?zo}[=d.)(L9M >GK|Pl#uY[qbONǭ݆¶p|^b'xY`V{V⛝LNTəl)$zC)\JLDҔ6vۃ(' |f& B*\ƀ7&>iW2Ӣ `i{x5Y me'1̟Hqj `!Y$&jg,?d,EjȎ~gN^PVo4D:sI:3*O=B]zisriEcᕡXbD'ⵔbWg8Y΃-('BD_'s*g;z>,dž9I9jJB=azEn<v߶E#剌!7; 9*wm^PWOt@7,FaKX!!_'f=l݆ ֐޶VgP OW$4jt*@1V/>\g'G04JAnG/%bd}j؀9<HtZQr4o|Iś'3)< `,' K A UCz8FYGˏ0-e+ -X&C:vGp_ E%Lc]qt>6CY|ت%/@H%7=s/1]:A#GG1慺`(>amI#yT{ȕ^5#\CW1 Uw(/R8F}EDșf_dWM1^ mH3#ho;p~STΙ!-F-oʘ'!pͩ;I F<Z7G} TS>%AOiN`ڈj&x??}o?Ab߿^v-vG+Q6a}t' !`AX0<‘Y+iթꏪ{ի?w<imK֗[~WW?o/^~7><ÛoYzoo~?/o_?rz|?zswcCMScvǰΟ D lp8An[F#1 Ѐ(P# Tz<)Eu*`6PYEϷT5̠EE`A)Tn̈:4vi\ *^Wka}p"^peTœ@k kZk4XvD<^j\&_ H$Jvؔa\1|Vd;}ٮ 8džhMo`ۂ `kSTVn|p0Z .=۶c1j+ (hsӬL!e4c"q4 Th&,B7f`BV-Լv\9{2IAa*W$F R*]Gy$"gXe7$r|\m)hX $nV%v ,P{KnǍh;fM0W  }1zAKgmkvG*bhxPe Ts ˬ+&Ðj;hR'*9MѬ5=:LeC#CKؽ/N$P'9gNSQf"L3c2raxzQ@$E~jpoh % A?G 7GZ#x<F 3v45*:urp{@[%" JnA sݨ#dIٻlH Pa`(fG)8XzrR-o:pE,28 ݦHK2N3i 3P2z\<j''QdOjٍ]_OGX~b# 0;!!W`lrFGA>$đcil>Ն S$^sQ"q{X1X0o%Lۮ2.Py (ISi@Pkઆ\Ube;Q;xƓ,u2rQ:}w٤Oq5"]:wU9dkNhxCt dHߜJ\.DQped@?W@_z5 -R%*ա !hu SQҲ7bT货/4Eԡ%ڍ _ ׈PF@TpDgwdYdB3ɍp*kAx1ӡ@d/"brN=xy<MC @ɾC9C3zEw49Ř^g}zON8 ?L^sXf0/2ųǁ$[[kl%PkK -k0~ȝ=Z _ sEcJ(kbǔXTy > 1uA*fdTX P 2<)_'dtD\^exuhuC]R'<gWPJN\)(X> =TzX,#f; P֮/QL54 ζ ȸ]:gA#]Eu0EؾɋonHXxdl/IA.7]`sGc[TKF<}UXd"~Η,׿}*[.UVѦ͈w&"9 [==#Ihr : "28ET,?5W)57ߠ0Cuء ]Ax`ψ= M,+Εd)[N@qg@HT`@l ncOG`!c;1% ho~2LCtA,WXl3 ڶGN̅)֒c`70߯x*P$K 1enD2"Vx䶝omoEc%4Bba<@G/U jqn?FOҾKIzhJXiږ"F~ULL$wk{ҝ9d8A\ \]`f,Xhsa]I=;,+YH?oH231SA`;΂ BL4 A5dqCƘV~`^N.c3Vh ;mbqwr:r&vY]%<݅nȸz?!f]Kyf쐬x3>sFtCFMRXhI#ֵgh50uՀ$ AĐM._}]J~e}!W>Bur[; TFjI{u@Jr! !*Q5BN] ۻ21\2<5&:cƘ6ALgg¹;KN};ԉmt1{XӁA% EU@Z9qP1}p$7G#ĕPYn^^l5/("82"hE{ቖ#M \>6(Q{]=]@{ZFt$r+Rhr},"ڧMoЄ<4f{O7Eו-a9J%T֥;kjr&,An5VnR݈CIbDr" huGQ} %o jF6zg*"FC*||@FHb~_Q\m4 kJZ\GbGCV4e3R"!HٖѡU+@Lا]QKݐ7QMB)7Lax?]8FFTR*[)JO At??E1A A&gD_j2/z3r[UD˭6Q!u0{l3L}i8*hܙ;  7UCmƏ]f(}Ltr{ M4jhׇ8Aa$0f]>}$`1P]I_"`me9w(ѯy 0^OpBW@p3G=j:#JNh6J >33"fN52_2"Ȉ%Th#՘J:"ol͌@gDH"GɈWT,ԔB}6Z~T_ٌMïJJ_"Eb+E  AiZ`5᳇Z8RȐCt@ 2(AP2܀Lզg˵N_Iϗ?ƟIϟ {? %~{xas:"j.K=Yb9"6M5@847Ebm@q M Ɯ ihS );5Ox$i4M·۫I3A,Qw|Tcx}3"FufacTH5Q"Q!I\ R"&mŒ2%x:mR2%. EiP3]8 C9UD0_4-e@6'"c݈}уH3q)+P,|ƻ8fVht\b@B藺%Cn|1Z3N]~xK}>/b\&,0J'&#X\)CsT"6ڍyb<"(FUotI`dɫ ]!myy<X MmLL=!|7C/XM h"js@S;3Q$7L8n A_m"6}&AމBkhAr+Eɐ0Co7(wFԉ)o b0^, q+B:>oXTHk̶"3+YSD!tI4 <(4LA5c"P։`sD$֓`I"a$.܍k죬4qN<˗Kүb6b_'}0Nܩئ6<ϣ9U/^iKWi|\`KQW2lC#6pU_D!${R6"*gI+)Mھ<]5i'4[Aƕh\q.!;O u(qsD79x u$Ř1vb^z/((:)W *% 7kݺ1H $xbl b6VAAFQlT нlJwQ}>=l2 sP\-h:D 7wȆuun]"@D[}R1i{ìKjE `y1ܨ)ǎjROu+?#7`3܌g$3a F0+ǩ pʷI( @͖ys졫UJ d -TN}z-AGLĆ _7~z~O7쫯oǿk"! r%Wh^f$2=20ePE*,<esg[!iD.^,?."(,ֽT6;daͩɉNH҈Й> BQu]E;d&]9x,lSssG!9"!ZZ%|S9\?OrP/~Z1>-j4]`wDM+ ^+j^#\'*E[LǢDQIGzDE'"D0:'#2z?KDz&r2B/> 肠Pߗnno`@}ףVȺyn^SB'(+!ˡ¢2*uYXD8j fqqnt,IՊ0b7;F<c5ϸBPahDEm L'_0&O&Füb; svQYltxf=ܧ @# _ l {0{/'h'%@4})1(2;JUY#6hFWD"ޓЕAp*׳-Fq䕻 p֎|].vi]iw.mU|@Xψi@ {cvqNm~r)ㅮ KCu#B+ɲ/?%etpzMBRXd+J&vZn=Z`20Mߒ_V@IM .EFסV&4fH\9b4nA0\_"t3Ide?͂(O j%r)*PU9-ڠ ӌ/Уg|z·aYA r}M at6'0i?wFu1k]&bq'^+6eY$u -TW*9-ٍNr=8ޯ@,RU ,`;aTb Ğw\klo P#b;FuN#q;mҼ\7 fkI(ƍ $>Q2c*euGbtJ(ʹ:(/J;Ȋ.)4nuzTp/P : =ؤwkzi1IGe(ax/ڈ,7зc;qsZ6unͭĤW*>SQNd$\9Ir_l TTʼ#GnH"_F6l%X/AO䄬W2)&$ET]żRnk|nBEiOv,Rsq5b3 keO+HvsEIҗL`t%_pbDjf%儿9CiX3JDbPY)c p(Dh Hkf4L5 n%kTmavæ f(&nX<I V~SO>B<ra S{| :F2)L,Ao3 ^>|ω>ĘBk)EQͧ\uDjRXXb特\ ǛfRcT1`XTv=$"~^0?3C^3!AdL5 1mEG cUB$P rcB= rQw *2s Ι~}[鱂uW>)|+a{@c\E,asbQ)QPf,뾫Lc`bo |hc"NAh? +(bsy͈ώXW}WiJ]ՄVei#}ZN653?RٕC"+6rE,`ieS"d fa( cCԠ]Z c_,Б9Iwņv3;UːrF?r/=z6ZX/]ˊ#I{D3Ȗ%{J*Y K׊8Y╌>Ff)dP(rT`y#=\Ƞj= khPh!!͸AY^}RsY FbMo+ .SV³wc7v?yN B'PT 'yJ^5I/Q[;@ќJ,zDQb#0Oq:'V4s2Q$n~Bmo Xi1V: ^ aF4) נ` NRpQшۉ ~xA˄vm\naѕsCӾf9 |͜bc#|FDa*!퓧]RH0o!RI5yaaIBq3Xm:gEmHhK{?Aϣ H=.?#447Ŭ-ֱa5u3(泐 $P^t̕* v --PkR[D¦3iHۼjE1ߎy"I` = Z?W {A D/u%Jtґ&j״܂'5`5d+w؄sJ}Vve6N]˚E^jM4fVW{orϏ:xn9慨W/q\wva,D &vBoQ59Zt9BpҜxnFN&??g6r1Mɲ3KsF jݪcX`lWQA'u W+F<e雑FQi=Uv-?+LCļre3@6`{>{`(ц32\IWQ=ADeD&CRStTlQ<3_$:q©zTvM Zaf  M0' b:`1X=2  "n/du^oPcOaA?. Dn C<~x'vjC>;|.X. EltHxvho[6V<=_oѵ5j9҇ŴE$l:;T"T|;TXcv-l[A{]eu' Q3p!;ɨ=O^/~w7??} Rh>>ˇ'_~Żw?}>|#@?_oO򿿎_PFQK6{/x.cw7(7߀t6a=[xPg*g=QXbט&yz1:"^G SXQ@s Wc8a#r'}MIJRsrKvTdr?edgT/"-r!; RN:uؗ ߷ߧ:O"6A4 Ѡ?5oii,H p'2rI3{ѱ/'FRUh  WJC[Dd`l>"GA>8_XQL;f}z$Aս[ >zKk5<%C$ RRRy~E"Q^v csղ%-{ԧcup#t 9U MvbY"Yd C܀tʛp{+P v f.Dϊ -tQFzXOz\## u,#K:ywNEi5h7X{ys$~#2!R 7PY˼XAapuA碍Ę&{Ѧ0(E#D1]3 \I4)s8 wMΔ^<5)-eN; bɪ~<[Z7tH$[Xj! Nl& Q[{-[ͅ EE)[j8l}y]5R)lU) M?k|,_sV@Z3Eq$zk5ؒb9`5=nFsX+ٟTؼr?/rKft|4 ꬱfNIZ/Ât1StǐQB40L۵5Bʈ@PcC$d3&{?P~qj@9iiB8J:  8 2ưB5|ލ~"*B-н"lӫ͍( jQ5ޫ"~M-[CE8ɢϳ_3Q6w8+j'p3,WlW""WK D1#>tn!}p1gy-7iXP 646-uS0[P`y!:~T^-"фi֙gt5'CULhCN83_-ar9v(sD~{O^!Svx10;;I1 YbA:d'2'2PdEGGj,YxY:xm.=ʌI?Ұq'&i+pil@fi=ma 9H劐8:rjTR bzhH(lNaWZwIʔ,MYS B (<H+d90Y,="3kvtic@LX_A*-SA5yaHV֏`B eK+Q{tΗ -Qc.EN,kdZ-ZWSt8(F#?Vt yx#kCڗL6>\@g@ Nx܂,6 uZjn;kh2Si:=a8;K*kg@ź821'AGe)#p@Ր* ~SbLdM%Cty(?/. qmO 9K]0.gG-ngf'2Gܣ)|_)w0`íLڹlj`Q@Kz/GG8߶l:T;R;#3?r؉{R0„Us I[Tb0Ʊ KQRۄxSv){@Lh<Ug0fV1 j II@7DDVwh_y$ Mܦv~h0n"74`Ae3ltX7r9#lt:#J-MixeSed\ Lot-p_k z\Ą6g? Ұ*9,ziUp1Ũ2wFΠg-qEr MpQ X~;fo'm e&#: \7ӏ4rQ!?VJUs dtG*0}I@ᑞ8dh$SxI$[3C?/]/'BR{:;}q ~Rdf|e#fTH.i;63R\ se+wo3_Pè]4=qw\ V䦱O2b˩UA* ę0mnr3l@FE) \4Fqޫ>(6j ;oh- ?,s+1E؀[!}&lշo%P9]'K!4ԺgK2KJ'xwsAA:(!M8C8a]NQȿ^}3s8qՑ#d#3S8JzGchE^4LN U1 όobPC|/qChgPgH?J:ABdl54.]˦-X<\ǥ8&FC]ڵ*l y#`\2ҟJ<]Y#bXb,HZaptAy&Ǡ<QO IЁcAWr-BqHjwR{'>MB,de'ag}֝ .2`H2Xp/+$;u3cjgflYGNHz8Ph)ZuHe[TN&SF67R,8'=I& 0U/-vbOUu`Zm:UX[<ˊ,@]o)Pݺ52uq+k t=Dp2<ၣ\tVr"4(qD"sfj *r*D#*MX;.A%yw qF냇S G? endstream endobj 21 0 obj <>stream H[T_,AU2ћilNT+Sxù܃T2%Zݭf[RU>ﱵ$k$[pi ,.xAT :FoT*lq3"XZ4QM< dUrQ*٧˘`=* pjo?IֺUTUCT:"NnFm'>J/4F \/hlUQBn7H%yrC\? v6>@\E3g mmkTS@ J8xӒՎƤPL1 \r3@' 6Q8 tb&iҔя[tf3l^Cj:T rMђĪܓ7N'(OG-t V?|*Y܁Ng0pLɄ[RH7IGn,.C %hN׹ vA|@s2SMvAaHiIT |ȃ?GF, 5IF5<(YVI6])"]u ~/i=)%XP /J%SP(Rtf2!@pS;bSGeEqn@hյ/&RL\PN& q]V:;hO:Mbe%靮IqѢ ` oLgۮTAIO_y@bU17JsR GDZ'pʭi;ћWFz0?8;$ٮ1=hWgu yqif+McZY팝)DIR<}B<`!~h Qax0+?*"gX't0|b8MLTzIDi.b &1:$mwM:nw;ABpG@!yP)*7yi:;} jUۗ~% BxtڠDID>22B,zu:X]enwhV:@TT0*4&;tsNZ 4Fkbkd|+BOޡO(+җ'(giJ&:k$BOULg=7mPCCPW4FTFB[rYz%U=xfS ⷉ;>kNPLPgetzO҂ dkH>oq"46%3J:D "DHL[7~|nZEC.&޴PAyHH #tm?+%ru0Fv)#.>Kِ>K0 |`Ml:1`5QYqF&+trgrsRt?+.UH{Ӄ!JnHsĤڕ]15o/(ʙ]$*> j!עZ2`LF4A$"Ӓ見,ϝD?C3IѧRzkLL E S<#u5<9puy__|OwҊmpsufsѣ??\{o{7? Jlzi~ټ|?˟}X}8^m0:OWW?+ozP 22<] lqn>j MWWu_wG᧻ׇ-C3r]y o9.eKM_g V:>~nE?o_?h BwqN6 LGK;t*@&l>۽ ַU= 6OH#^lZ:m0Y^b`"≱*,eۥ_p:FJUÈWC*a|k햖&9y&DO.,P4*s" *"\Z"E0;=q]ZlC=ؒJΒyށ u75ڞ%a~҃m84~|r̀]*hNudÙDQ~?_z6\o 2ui^y6#RΓ{85nK}6Îs.;=~PCj`@B6L6U g]NJ;^{)O3S ɆXvlR1)H=e&zO6h"sMy]hGԃ6J#֪l`VN$Vy֜r|t_ci4,Df/#Q3wµ1F/J5Ȫ5?s* d^jĕERfx'%D=RV]: &Sch=n7LEq[K*ï'|{:ctTsŤ<6ҥݔj!q0[icweOJdu j&s ZCpi ZZR!UbHhMJ>S&gT5xc\KG醆8*YY ͨѦz *M,9#>{Sr9P)@+)gVZ?ipO-rE"j5rqŬ w+[^#E'}o׊k?lq[tQ#8 yb{̩uVT.d4FZ|?ڞW3mvs}.v&aŻ[L '*j&Xs Nrzzs0Ux< Z<!Jw Nr5c*>Pl@U*擝O2^EO5r]r4/ӭ1|*#a9L@$魃FI;%op ,K"ɟC+Y"$ɰQěXVJD2sȔky҆ylN0j=k״vML3bXē¬ɗ|sJ#LĢiwp {Rd\3ԉ@ L"B#COgb 2DfR3d+?XuUΣ8ţ\WQj4%Ge_6칾%j LX4} iH+۠hȜ8c-r[nU&Uc>,N"Xz'ԡɠE?סjη.imib<rĖG '<;شZTNKg7_QiHC=&OOWNS߲A↶w}VxXn6zYn }btF4њzQ/O3@M)d'wl((;Av {'l<SطX{d鵽CӀvx5x !/pȹ2./Z ٮgjZO6x'ewcX8p0C٘6GR.|.c@{NrB;\* 5nbC08%}{\ҥ66QlI+oЭhK*53د6:qcTN'[%Cf g*M]x=(C~lcvi5p\- &)kJ&#nBs es}mws˵QO/g45tw]vMv僃U 5DM)u':bgmC4+Z<e,| zNQXo+2brZʸYh 4V#8S'O %+6LrzCGwus!t'\f,xXS#Qhc8Vl98|缛bJDk-iqȰ|ҤF++kAkp;ɊI|W9%9;ܡ챴Z̉v-:,s?``y!QJ+ds 0C*s QIyfϽHO~ aRU^_ 0+ p^~_@auvfF/ntQnH#D^.eޘ?ޫ:;^PӐH'`%Ip9R'l/o^Mc2ZY]^6S۴֭9g쮵9] Hp>bCQ\pZ,v7@ 0]/.UKpagE:rPN/L;Z,BZ;G>z{Mw }L>OsoThMPUw MERض'xB[V#Cx7MdkxZ6N7e7@4Rn sIqU.wʩ~%)NK9u4 /kT3 z[3aa?`o]VZTy%x6Hyݜssl:ˢ-;6*\.-@ sUO<: B̢O F$MKnbEyՅ{ukڮm:?*LĤiӤ@ k?rtR3֖{0Yg7S6VrwYORw(Qo , ҿ<tnSxlepwv\eʀ4i *+y9MBh팱z K}QZ&~sh:Υ} Y mVf.F*˫z-36mnc)C7ǻ.W1q6S)Hqu8R кiF"$c}0=2 .Ij9jj:kmԋS+3dɺd,{cSU^TVDh[vu(Fu[uE̵R uE=mJ~DstJ|:-;̵SjvQuUVYNmd%m6$㎔TJ8@qQp29TW~Ak]*3(<?٪%Sc(aA1Wb nk1gLBuHWءQiP GVq5jAɝ_ >õ4ó9ϒ 2 eGu[XdAGQmcTzX/Y<[Y `_?ws)0 AX۪l{X6:m־Mg9{j ΥhtisgvQK*y?W*9Zϵ4l8-?f5InR`αotT7+fɨ%Z[AurЃGbFAڻM8?lXᏢV f |F ЇgVkth-fnIR x8hZ 2^k GRgplGżx (- Kμم2]т{&56uI kN*X%(Eb@ z6:]km M t>>H3>+C=)#Jx M<@: <){>1/mD)3~j? ~. ,l{8~ZdDm$CNyC `hJ b)G @IhggoW{mw+3&u4TK /U2F DcXB gfK>y/Vb(Wuҕ^v ZLU_;yW}n]7䑮s؎sWȕkU%[Z)A \!A J$q+cm_Bb*pOv}ڦUp>Hh \XFfPOڴF? pThk <+@PV`+ɃD]cs~-ލk(C4)/ MؖҏEA .YhVs{"Ihup)@#`!mj0_4"j|+9a]Yv6+vnMZ-U`NJuߡ\uӊdsչCoI .JE+m`j9\[Vke{egmpj9|Y2@ګ9'iKܯgM:КfnG>.lqt{t5Z;{ jExhvm|1L *`,`dCg ;ˈU{[Z4I#~dٺ!SpMI= ]| n*<, _y5PHt0! xTϯ2ZnOBuڮ!R_2)[6N|}X2:})VYn[;_혱QH⊆H2^@H>Tn!v@-1s*0˧>&74{3 fo !bCrsi98gVOi߁}]*䰿q`v\p0?6%ϐoFDhG 3؞s򍀑YK/'eN`2}1M.z 3$} i|W,9PGCV-ӷo+y.NW!oso$/ x[eL^c< .aQ:I,Y LH_?1n@Y6@ 7c,pz?oΕ-\697b/qViO pڙf5v) Kqy(qJvqM!|?q1(sd6.t<@_T(6D3*ٍC蘼5ǝч&7=2 '/v&ihug{mϑ4?ԻrN*xDE!ʮ2&kͮn1֦ xcOٷc:zc߃:]Q)C꫷w)5QaY ~M#v,=:4`$A`^>:מ}g+ôݫZ3`÷|בk=us~bԼzl3b˟xA }s Zۅ[ h7%a3gWU6z]uha_ w~_Ӗa2AlX YKvT`j-MWx~5u\ՊjpɃm6lyX$8WnՅ':Zi3lkz*iv?m.lƅw fn(Ic.phzHf"N hmH!>ƃ`;N\峳tms1u(>Ajз(fՍA=cc}?$,7h|x7+)HmH@} eAnƋ?(3D{v?f5flPZ:,$Cltc+lA䃿ߵgWl b 2g'r4}4Xe7%E;Ew}ǍKAH5sz 1##w]Z^޶T<Sku]H#]Z !?ʫlDz~A}Aj_-ȃB̰fYQ{˲;NVV.)2~qIhH< j3--FW"*+Iʷ,| MF=(Wm3 ]@ce+w((@nbX?ͦhҲe @ƤkG烣w5 8"m 9]0 leJ/ЇxZf# & YL ʆc:>arݲgz.N$J00}J0"EuHu- [8(Tfޟ)z5,u46$!Pm~m`!:4ӌ `Q,_.ڵ 2 ;tJJemS2<93YbJ*1I0bq(L GN>e)ekkQ l2Hg*e{V6r~ 6L;Z !>(QF^%/43֎,:(ge!ЭY6ǖpt5Sa^^u?4BjŽfWMOEk;&Ԏrl+-{Y? Gق]6 &gmNw"OH{{c9OL(˫cG煦r tڎnU7$ .a Y!bF` 6^ʺVm%z3TʗBmdUoO"Dmp'[ΦݓE,uhk3tX BmZKb PrN5SJJ^Pdʫ'`E- -6$. *V(V"d4 ض6sjgӗGh;O MLiSfSCcTNtgv 6Nx`Y4U0I!}y>["h`Eݥԫ# @Wt0j|4~Ѯ$ ;!{O RgY9 qL5wU"0k_H2ɛծ+l:W7]0re%Xi: sz߽PWvfYM.=kЍ}fRe1`!"²@Kt5l&o)G! O1BeZXOxOSz4+r6&3]֢SLqpquKZ]J_想^Խ_Ɲa9x"ёcif4-E lSbl;&CRQvnh@0 t3a-ٖ@1x4L_֘:3ݣau6̳8;x8kF8NY\J0gQbTQ^);mG iz) tt$n%-shs'ѡeδD /f x^P} t̝S GJvoRnPX1:P 'olLU&DVFQUX%QKmn#I᝺kH'yuzZ6 mq-9Q};&V}Ykw-(ۉ[HPk-xr5Mci[ cX%mēNW&sEh m$-PP׈O90@zޭ9úc pςOhqOk#<',`i::v^d:fpPƭ(:}zU(P'_)EondLk?bY27;,oO/ogzW/?_^r/ O}~_><o?~_ %?9\/~їJ]` ?]àdīaw~1@vb+6֯?>Dw0!R._لdM1~zRLaY֢)QܟT3w]nO vL ˾Řvt5zjUk|.]' >+`~nYD[gx{{X=?:T7"e{AHA<^s2wt9F\Φ oOǃnGIfv'jݎѥb` p)D߲y+dLG%:`t:԰Zx`CٷlbG6 (iTҮM uj &sQ;B?=5 ܑorޜxC - @Mq ^M]WNfd0mwd[%ڞ]l Ф&Ҁ}yz%c [e3CzeB;ι{ss{b,/sU:Vrʲ땱\1^[UTJߪ?UVQ*pIfŷ[@}6.u+o"*ބ˫DSj_VR$*Ʈ*h8JDIz}-NkK5ˊ>ÍRXX󢻏h_8Z/K³m-%Ed/qd_PXeq?]y5շ lW)d}0vϲ^ 9Er }euoܥL#¦Ct.wP6΢6"kJ.+q~ dߢȹ Y<QΌ>,ϭH)NҬL`F*0nN'GkR#ٕ%E 0my{ZՑkE^ѬCBޜCtʻ2JafS\pk7? *yvtĬͣ?ops3e;3s./lf\9aH-2Hv;G A#`M" #bzU+$nI#~5_ĨˆT<}_IE81=TXYHTa [s0y5i컷nSkc=?p15F^^ń/Q!šVD`p)Ȱ_X3i)0'Rv\{2bƽMIsAqK%i-Iڝ_vVFn ӞK6Usa“y X٬DT;JbGLgQ5&QvmϋNn/J볘^5':ZVw^U~%nH;E `iщqHA-Wܼ)}[ѕ |nz =ɭ[fxe~ [a$ Ύ}/!P<I HL[ӮL,@gw8~Q6=pu{4XA f$x՛ߟߐQSଡ0yT' %mد2!ea}bnL@=TY wf )م͠S˦5unIS\@BfӘIN::2qG-zjb$ J|(ϋGTp6_ƿ7¦ޏn2Qi4 wa]!"j-I3(T;SX3 +z0Uz y_'n-^pit6|Pt#ѳK߀5:ho ::9ED Pڳ5jy11[Y_uQaDl)Y%,\d:"s{GmW[{zǶNNҦI44-x&`h^Blcjɉm $`0`]WC^;>Գ<:>{E9^s晃ye'nI#7@%6<\ZLՄQO]cćQjؕ %hը&v0]D)ݖunf8^~0>n QߢFPAR ~(dbRw䰝4DL'}"O3^yXN['} μS8u{1.bՂ.Ey qEE=dHDDn:Yp(н~ѧ&g`y\:n"c:9\IMщϱK @)KܴT_6>n$X@@V9$ﮆ7ϜGσA[&h:W? dy:q?=.8[*15ߦjQ)ATu70;Ps(WW1{sѺt2qoϩ& \)RHãF.{DH`"4|6,R cV;6*PMY-jʠ ::]ZBq*=[ RKZiȔA&=c_mZicN;,12YI ƍ +{Qp .眢Ƣw{4(gbdtRt1hetǶ_я)5l |8W1/#9UQAiGwnM_f:؆~hᆦןqOV;1'>jLz}rT'YT~$ż먇אw|ɻWlG߭QZªzp۩eF 0e)ocvx^M|n.u53+n<^.=IyF+ޑ2t\# lY,ܔ'*ظDF dXgڭn1|l+#|/6uFQ~C="bja?AbW7?]}*x|~,ښ>+-uh>?1<ߟ\>8~_/_mNvNZq!'J ;ѰRi^{iߍ5~eC YVyc5}f.c3{/7Jzaa!:6̋BnsE6f\;fN&eV;Ձ~W}~UX՞9Z:Mz,,Yɺ<Џ:i U7*,|H#$aRÏS~I 0r I+EsG!:yzeqV̓Ð!X0wIR;AFǻ_lP]`bVUޯH̡ E3?mo5Lzd0LIItU۱‚Ŀfjj'lhUIcTϕ3:L@͢Wؘ;|:s0~)t[Wm .7.;t]pۙWζ JaU.BV>e쫤\ ܭ)22qgPgK1`QS+hhb JKH_v~c!LeBv5+0Sܪu~6!ݭתR؁p(Wu8_2jrovf决c3.v9""ZS $r [YXxTN 5򤒾se)iZ*Y6졞Oh cTыC~Лt .g(: av٪]_CEͤ.cǔEI, v0M{} ډHkuE0?ƭjͻܳ=æ0ώ.tǯl'\jǑQY`wYuJǜzicHN\|p$O$ {3˛\MMYte)EǞ1<_H;P&o)졢>;'ނng"v-~eoQKOsHw헒ܔ dmcg 7(违[zlltpn[ d̒V)d7$7)>Ϩ먠k{K?ب]KF*";ٛ'γ8.ӧ&,355U~*kҪ{:5^-a$$tN:+^W˚@}A YI:ɜ|IW=9r/#MSF,̗%CB֣9| i<N ;aSq#)pO9q Ec80Q ;uɏS= xzZd8^'JjIxxC?^ f=E/!gsgO9?͵|]&iݚ~~/Vc`m]O6-pQHc%C`lT%>.q/n:YFZ~2:s^~BYjĔK|Կ~WXPpɷC?l*^ekZ+ ^6{bRqr! Ž=I'0Qc[ƭQvZom 4Z{ v`ՂTT"W i'm)JB!b"Z >I圌_-/FjR}rZij`z2X itƣMVMhLD)ptky i)B+GM X sT, O5NBb4YJ!4Q-=szz~b9p~8Xo _%xs_[8 S}Ԫ^ ]G \:\ࢼ8\EZ.lLv/9^ &ƋF1{l&h̻^qTiu|dޯe݊ެ[eiN/ng{/?Vt%j,-C|#/&Cq:ڼYÆ^H9ڒ_N-mh>iѹH.O:GB@eZ%-h7,C'8DeC=t@_]<ϻR`”o5zzj<^9eY{tǡ䲨al3e3^yPκZ\;;<S!B`ײÏ3v靬eu5ɣ89u ň=8U\g5>+Eq%җs]&ڥPkU;PčT\Gjm6q ~Hv K3\r+SNqs! aFq']mN?P^L6m [g)1rP𩠸%-{v\WXMX)NZaVKڪTSLt&k{5zi|H;]PzyFoVqm z+PԭMl1>-cD:ɸ\ls|'d|iS_9\"괴Kw!de-nap4GN9eܾJUTcv1u,g-0Н(ffА\.+u,dǏOޟ"Ƒ򎡿L ïl~Jڑ6KE`@Qp]< rcT 7gx`ڮqu:Y_ܜ;;[z, M8<0##ĽXn ǕlDrEFO@g\ W1Fj&<.5G5I`UVpZ,)>|5i>Uv;Xu&z!Oz} }Ν#HZ E%&Pcm(=yOG.)G,~u&u fH .nςvUUa*̐U t .H9B?je !{X=mllCqGme܍#, |[WV+CcN{7KO_4y*1TgU:4kg :eU3$j /du>N1[GUc=]_+쬼ztjǵSR̅VX.4VY FvP@=co[+[bʧ.6)2N3^ldf[~&}%21kъySc>:fNI8͠7m;e3pa-G)abN}5jWzVk$M;iwFG莏\NOaqLv mPI8ୂz3o!;JP~'aɣ4aC>6C!r.?8^D4'\X3EMn=jT_X4̆j4ɛkQubZ;_q>oP(`>4 Ei~im[xB5(5t8]p>j!e^0-HNT]Sl0AH7_~Vqȏ`n2}NWL}QL'MܸX$} $aǖDZc]k"XvԖ!X9/a~$yM T=8}(,7[4f,56NANC a//^CeG†Œbϵ Wu禋\ Rh7mDmC 9BЧZ >4ysy,ujl=f,PDmS_Ue!=r͘ `f9F,+q'XeYd 'p&e>.#,&x3NŴK'Cm!жnwu d{A+~%vuQX@v!ijJ~!E446'k}Gk7BV:!%gwsu܏b{kՑ)('|.%},@0Ǩ!Qd"T4(5>y2-^`S uމ ;q_.L+ۡoB?)%2,pϠf@HCBl iPԭXطJ@H&#M )2q3Xzp/>cLa=B&)Z}6 &6Bzg K.Lk/"S\6'Wrh(#8ٻ[-Ucz=Y@-,]?Q|$oNMnРn=O-;Qtxg~YdgqY˳` L`FN^bL}ՈL39|iiåJw_-+;Oۅɹ6mggik\뫧}%1mcssž`VƮQX"pw7cMޭi.$J@DƃL\z(B?93Yfo@)´ L CtSx`pVɰNvsb@V!xE?1~(9ܩ|aNv&0RDE` rUSFpNO8jQ\ubtm"Z>Vz޳hjΔWM [ƞ&*y^ ^̇쮻GS!ZP#:yeeDqZ Ta7ĔfS@:tONhو[G"m_컍V$ |4ȱٯđ&odKy\M|B'q`9R&7߮Z/wQ9h%+y֛צ3oWT8Z [ ?DǥT ʅl9?uގȠ7;Ks'c [BlJe9,y&;[8 9gi~ȑ3ՋrqvI*%H>cL'߭jfѡ)ф{Y)0n\bYG>oכLpϒ>Gjy<1%5Нw/Y~,@t YN 蟗 YX^t;V͠1c)jY9D`{1 T†rHwB[]|G+qk%bhx$'fԼ]V4!m#pX}2fb U5K˱-ZEԍ ̝|RHw_ui6n=&x:9XtD]jٸKH81v(Y[BgZmpadCXW?S[A13wtvLNb-MϜ[ޗ{0#-ylẹ xJ`i'&g Wn\b22.1\R[Ҿ{eu=]2ˇ&ďT! Vs˔40ީB!UafUA f2  rq};wvZtOIىGG 0WS萐i3޹Bª*h|75Vܺ ;)ZEbFC-LٰZ Z9:@+12wZr+Hasqn#<fjIX+a[P;?;qt2v)U6t m{9 $rԓ|NÃ_quHyx ظYN0? .1">aY qCׅL6s2ȐY kTGy>FŸE%% SCrXnն({3T}?2T:3w 7g]? zWS! ޕer#4>bW{/ ;?Q\W M,\˽6bo{3)oHOa"Rx x .Em*ͮ;\ecnoE;/`΋kªrί;wFcoԸ>[ h/]c2N1O?{z.AWB>6>[:G]us2B 3>AR~I_1wOjz^U U#H>/A;İ &S>}HJɮ NdZz|元_71 K/Է""JCA7iyc5|ԝ ) WDzBlΏÆ+BB~5r "h/7afE^%U@(>R "|`)Ũl8RMl`*IacXQ_m*̣)&f%Ѐ3N@.35`]T=Hu2 kB[g<0D&Jjd]9c+æFо<}pgEgo`}9 ޻uC!tR>N>+U)f+/W(m@dχ93q_L6fWN=U`D 4_}0tz#gr~!ir4)q 9_cQ>j,j/u ̼'3ec3e+3͙3?g:mgjj$&FŸ'F" eWP1ɴMsb$&( [T\Q@v%NyἜ>y8eqrPW1⵰S$1rm10Q?˫jyN&,8B>n L3wޒoM30.Ļ]jzn،EZ̆ !wA,&ې{q3T*:a_ϭtAgtӣlgOl c ikyqS/5nz輌]|Z>xУdx5찙UsexYD~[7$Y% r|C %:Q"3;5Dr>cKAnJd[4J#=(zIdQԟZ{Xck|F_af1Cyآ3MH]@ QN z) Yz~RӲpQ3F7[$=3 0O>q0AxIΊQd=p킖Q̋2?n&VES皃v1G?:d5AV7|08Cxwv"1qϤTtW9seb?1 "a6†Aٮ .΋<@YlMob<Qڞdm?>X˝ҚI{>1f=5;d&e ~OOU&hW|D5ң)(`S!Ư5'E/9IinW-rD5_ھE0)F45¯G77/ןń\JFVR{7F(i[ZA@ pW4ȫ:Tr]pWN,‡%=ea<4KM=] |,[cvs81b5q5ӄk~5)ɉc{/ xƒ!'4[i7:SwGh(׎Pe)}2b4Jk2VM<|s|C!;Y]-Wΐ3Z:a `]׊b>&𐪠* htuv5 t{8 i肠>@'ENG]y_ҾwRҝ#ԛi&n7j[8|3מS0IŬ֨IԂMn-2dOV m0@k(9t;b v-􄭇~ WR_}k܏J bahQFv%ˣ/4ڿmhKj:m)uafʫm!|WCA=tMn#rj6`>BѽNP7zݕ? e:w6dIHe1+tM83 0s*n-gan>ҠU蟁r\͡+O:.I70s{eǑ7PWf1)fx]Fگ|j+MvhC%w8)3Н&8GwkzD}tt^$=N1KczVK)fkku_s$P@gig6~}\$g9ё" BEFRwb^a9!{'(yú":Gh\|(j'v93C?xji`՞ucvQGz{ctK[/:l\~Ez03 hؼ9y+5W7/yܒq"@>55s+{g:xe]֖SJߑ\[])ݦhlsrp /m"D@ H_. jx`JNᑖ߰%;1U%dͱJח|>Hz ^1(=s*v0%m׎{.%oP+BRf}40''폳7so;^5+> yAH]$fp_()L0|OA{UhcjTk*5% 2ȈH!bH"f$ ,DC$gݯr/,8SO 4oC}dXg"kV;`b%C69 ]'&/}Ns_ҿ)?4%q \`( dW} U%Nba'Jnu@A7!ЇҲlqmwED}$DD^CEyEYeTY01cHmuS$ǕzDbn9fDEE^6I}2Ry"FqϾ5R5̾3tsw[\С_k;)񦑪C*%Ɖ)1X׋Q7#]vEX_h+g_ϔMLzc%vd~G3m*L9tt`<[s3ͳ'@>ROF5IqQVw״C]yl7T]%2z ~p5#Ǩ@W2zW%vdDN=0 `mOԂ6+l_zX_tg\ߖ_Ռ 3M-X6 hGT#f|6WS~j. 䫲ok [_խ骼Ogsw7g*8}kD4$F}wLu@M.G1/oj~ť?X0Pf>ӉP& mށ GG~o5G)II}g1~W9VܓsM 3hꄺ5e>2"?OrFaaNijS<챴 O MplSIIZe 1K!Af; !}7y'S "}\9DK-pӓة;k$h.yUwpFx٧1In bG:|Kӆi;nxզ:MT':yY?hb'#@ Z=6-3i_\;`N%$G껋CH྄P^m{ABU^+ l+!)vkZd=0Ju@]7 fvwaV_br2WN 680m8\J+,Ѡ"ZZ · qv;JQfLS`}?>$ڙ'frtm} 'uYU\٠L銸e7Il =Fn<[w\';nQxAL ˥z+DFzi &Iq $oFn ?6hEОf1vc]-x6_񖉲׏Ѷ=4,5j1}%a. !%pCgFN4<11dE^z1wS}s|GIk }!wJ=o|SÝg+5)f9IF/I;l\s:?jroVL`\?tS{H˒/1fۦҬr-@7B}+L'9#/1) ? _}".5i/C%!qKC 2boI)kF(gO9x[+rk{7XnW4'F N/1`lFIѪW,;dp#asYÌ-L13a ѢTҢ)Kee[ %Id !af=s=s#'|ђՅdѬV:R'1׀[)N i:znA rX(fXw;E3wH_ôpS?5b}kt,>++.m4gC+T Nh߯ dM^ GOtas]rb]͜JZm(4ְfhЎ_+H u4~0nYȲϲ6UܴzzkY 7XF,4~C T P:JCK:CzP7{!e{,ngi/9|r5Cp  fڮF˄$Kz7WRnQ6WsY|1@=UQͣ݁BRTU!FJ|F*6`EEV:Œ%:oA 휸DziFgp‚>c {Qn*,N=j*)O-hĬ1}Ű;g;`42ϻԋJ&Y|F+j3ЖtBnÎYQ6/٦`ǝO/*EkH^Ez,({3_ph8) o:~]]12ctMDAxeaxtt3fѤc2ƤcLDq7 ( .JpwEdAq߂(I&SS/[uԹ{=]W@j:x{x :yثa()KZT$9$ )ۨޛ 2v}RNx(>΢%ed&j"4Q_\}aTѵ"wF@2GIC԰*e&aѕd<ԝ @/j퍷0U3m1%ᐶNA6iPuG7ZBzPNu)yΏtjJxykE4:-~#Vѥ{43+B{A5LC̉ͅ7R"i䎖"y"פ[ 2Cf)䋵5\_`]qӨm,?7ᑲ25DywjfU>#=E$!3 wN7e1)w/Wǚ@4hL G!B5šTuve$`u} ((5bQ@.pG:L b`GRg~%:E?b#f{m|U !Ӳ콈!|W*jUH9:A+RCΞ\xO8?[X])K Z+|o*I2 M,\@˩:&6noQ*HV4H[|jNᙥ"Ⱁyԅkl])Ȓp0[U-f8:h.pL:98?򎕤S=5 ֎jvoz.zۄs#hCnj㉞pP88О۝jni%QmycG .А'fH-:qhL1yWi=_?Y[8 v@+g ,ѵu7AOCf1mlw&`(2imDvѽ G!bUwOSSqfZ!;SO4Kӫtk`@*2lOM`)$>stream H?5Vjc&J!LIdȰWMQ#xpN 6uieKRB5vC+itUheKQ_eƒ%~<]z2C|1O[+4= d*F\{>>!w:ɡ*~ |4W'+qnq/[!d;Xt2ʻ[j]1JIn+gPtzz0d|MB"N[.㻤 vl(%6RV'-Js}]وu4L `^ϋuרAPs5AkNnqPU[W֡⬽^a0}ۨuIx=/q3/G?a?5*^2tmjЈY_0lwO JX#þbp*4}>,Ao6"6X^ΑE[mѲcqgқZò~=/(ӏPb'TB锨D^g]Lj2e!gdV~I~Q'\\,wkɍO{SfJc#h!\]WyF\xnYz9.#ӢOX7F~/ddz6AM^.Jn+X)~V\w Nprv:=̴aj(%=N`$Xo5nQ݉hGx(;m 5 OWk*Vd›/=xJ|fw|e꿴m}٬L?Lgj{/3e۝ɞsΖ*S5AJFVH?Ee%Ee<$GFCrK+` 5V |8DIgG+, =Fl{FLx=ZCqUPJˊO*;Y!<҄ȱf@٩s4M)>oL:]NR<`q:Ut(0oW>'cD.J"c^f)>Τ8Do&Ύғ ^oA#y #|! <垢&T)ş5f$~FԚ1]kcƹd~r~A"HX 6.=xmk ޸p⟎r0+ĨVˡ^oVOE&^*ԋFyyS29>觑B/gXʤH?/R\cFJfmtPydz-`OW땄1zhKΊ4Cg% *dh l@X;5RTJ,Qs B1GJN7w"ƥ])-I0.k:d%:40RI a洴QY+HN{()5Yc'~~3.eR$Ei{С? ]nJỌ̃̄oYfBS$L>Ʊf1).g/5,S9a˾ٔ՝]2L;_߬p*PC폰qt$BSrGkd8MD=N cd.6r0f :Wk%pOyy͊뽆Z6G)#.qhӯ\h)ByfhHUW  {{w.jY i@%= `*tZ ӵ{B̂|! X 9ہ疏)Q%vv;N\)(!a.\7P}S:$vR5e3 ~<~^2BB?#%vԵA^Dͷ37 ?/m/* <j8!N 2:!28T۹JyʬԴZgwvsq;bݮw;B椃$/iA W7` }r嶼%EքiuI>%$ZE Rn n RP t2" @# o7wpŠ9nkg@П{?{[tV̫؛cʄ{mia<]D!3(wy$ww W@MMΈ2S҄jj6(ZkkVUlICX?$PdkX,!3urX{Cwma2~a|BW~`=gokıYlj@E#3Od#EWDKoߥs0\Ϸ3ah~H@-$Hݺo z)="aLHJpc֐5S{є$ǖj =u7]nޘ|jO -Z Qլt`Q Y1ѐ0񁢄8Ns(UP}]UƆUزlfD*EXtȤBjx$I@BIC:3ڗTootВs'GrNKN<2[zRg5ꐰ7,1⩨e3 >>T@D/*t8X-Ʈ/tv)pvjWC]3."Wo󊜲4H . ל!D'P.O 5|&o+jقѮ9_?̰Bf HC_O^b"2!JO ~JokH_xNZ諣X`@w}?_U?vtOڈ0|uT`4r1UIPFCL"e+C ;?|F gey!i{#䱡||4UfVޛȚn19qG!38_"‘,z?ѐ4J 4e-R91l^VAZٷO+C_l֓Fi`U-t*Ǣ6@ w3P<<@PD˲jY|#t kwbE_4kVc\gmRE45 ;|wiy/"FW[Mu9uWگ^Y͗۶ᓵ!1ʹ[Ԍ^mY,Z[qWQ "KYTTPm[#S{;dND~^7kNw ]Vo|g㑮x+쾪=_pY[Gݸ%&F YheUU8Mk3hWΩ_UuebU|{8)9YvNZMdYUteHnU3qaI%^5%<0(FṶZ!wGA5~knѬLh:NŦ?n0i0(c1R~΢ 꼷&ɗ;}}B>0G{N#Ç* 8j)Oiٳ{__Z{{/V// MWf뉍m^xiT}X-wOĻS c(.ӧ3636mә; 1` 2@HFڗ+jG $!Z7'i?73gyw Aj[7zLFOiJba虍5Sٕ*NG&=vo3qk̾8!)F=^_'YdmSK]O>Ra0CiP,b^,6B5:4c̎`.aqkVڵ|iRi.m,ݣ\ }sy:Q 0wbMdڹ ‹2Kc %6|\f1*G&zȲ-ʒ 4:KٙؔN3'MU#(JeM1hD%K R'vҳT~\7a|ʟ1;5/9GŮu7iQߺm"Bi#!4[@Vp=\M90zH9UGnp/)[tA<Ցv=:3X@~eAKZ~ d0e$<81#yhJٷ2":-R._ f!3Uve[x7o, Z%=<G#L"0 ]tSFAmڵ]U>uf؁bB7-u }·H;؄nVΌSFbVL["!l!:_&]j>9g%>;}=*HV]iD3{Ar\jyXiŅs_1ǖA/Xx52]Dkoi$O\gndͷ,JxU$\챝;D̪O,YI/ [K'zƒMrwƪ '-dv$fp"Pqg^>B˰qZ^z U?cbNmd }Kb/\RsNTB:vf@B+-adTٹ85zc >.ȵX]czȣY;klblf:< /#<ևcP `q>N_</#􅪗>1Go[kءLwQ)gec+&Tf Zi'VB}񻂇a.V+pxe YZPr݋G?=4 v\􅜗G '&VTly0 Lg6i f/brAsWiZ)&N"h< !.3GtgH=y|}F%*RCyG9Q[ axGxYq̚9ޚ}j*n^Y1UqbO\9uIj'o)K]|oGzž>SR^ߵjVZ~y>GsN9ə4V]󺿸4Ͱ|26b_;ƪ.tU!䎙W^+ek!,єB2M1 `DEzYfAc>dk?%AQ3HǴx>u;4V O~ 0nlC?$9$4݊(_٘fHfԱj6Sҝ)i*ÔCz0ފpIDcUK''ܣ)sbI}$\;O uܡxف 7[Kt'vh>S[ſf&3xqI֞:zxlcU.$zD5 ,$$$zC#@pO޹޹ %Ml9©o||(Jٙ 9镀A}},>wǁdTHAOk.-a W2i-Qt+ TjҎ{RqQ %; [rPMXg^X„uĆTVrG@ w&A9q%>a@cD q\ UATGq/t%=XCdHtCЗ#RfpX:߽sFq rM~["%4 &hyTu sVh16^3K6|}քhP'uLeDw- RV1>qI뤑Klܕ*'5}+ޢ{|>Ji=qpژSޒsyPEl&3-O9Ǧ ;-lDH3\b I;<h_V3{z9L6 -HzԳB*jR-wi| tgv'SdPPE~>d _s_6pu2N@Iyq$Vg-|S6HY4i0OJ ‘ XC_3%4鮀+- Ɂ%syRdڵsݻ{-k=m;3{-ˋ˯_L|҈ǀ IJ$SKn:+n_)1SN.)fapPz/wXVQޟѕi'Tta# i z/3R>:c 6"Ed8H"\xFCkIH`?ājzˁW /†Imޛw+w%bW.~uէ="!$ؑUXYӿm{^ `_h/ nLt]uu9{^SꞚ^~}LÆGbd .Y000]ܔ102싼mEʄ;x?x/mSR7KbCB鰄Ԛ4S-P6?Tn~ pOOC?E@mRV&"ogkA%AW(l-':RZ?eVLRt:dҝI5mD }G@d1.1[*,*bDȎ&5Uws.|G!{5lKŀ\P2b6*[lT(GgbVOC*%L:(z* vGH8PQvXY= V<1S[Q eyXE$o;'jU6yO Nf`Qu_OC- Zf녁GJ8! -#t @;?a7YBnv*du6=֕풶~\ܣ8_ub ҝHq]agv+b c ЀP`1xfbEr8$qH[fe70I)JL{.)0(Ve**ts畑J>O-#\%-;׵h(]og~Y cA:X}xU͇A|~@Ux,-B3,Sŷ_Jj:ڱoswSq_wd__}ב^gHEoǖޛ%gE 5ZIk4$dy41%˔U:<*j]D+bfaRB(K迆>TDLq1*21p5x'M *y(^%7>ʵB.q.ag/|[\7?I Cܐn{F,Q">S{APaZsx|< +{!j+j{ARz: sa\IfzbSP.j fA ̹-UUSKH80'mbO-;rcF@`IFc؁h:bYj207T5R60񂻃sp(a|fpRca*??(Qoۧ3ܟja PѦ;b"i>x-oko_WǺ֔m}&:}K:]>3iә,˲\SǴ줹+n(l*"Zfd*"((n []]?9y|^;sM[@/_DDF/Gxfs>%1B|m)ih/fz kh_3/l9:XdP,"؞;j^- @O_x^`Gz0 %ؖoλ6BMNqkٵ~cDG}5S`ZBG/qR[۰"x5Kg-)b\XPwg9X7Ҽ*"~n)d.#D[R|sfhA!{J~5`qlP6լ3*n_ׄ?gԞZ%&=@nȪ6e4C\zi[cBHk]9IfƅIj/)|oZ uKٕRJjUĎM-0R"ǽ6Z>TF/UE/ ohK 5}}z7/=ڙ%lc; 9ūb܋U1o~-"5HI2r~jAV苀4u\BGkȺ8!&5T@`S+0t\EF5l[I)Y؄3kKKʼZnݛ$m|D'+;m$) %xlMvɘ.d{ĜA|LsyXgU¿e>d"´u?\N C#aLwÞIC1[Cn a|.૴πcᦖʰ1Z(QRoVNwZc3N mf4R|0,)ZB6G+"죰 q&أֺʁ_EV{}iD`?Z-jQγFWG*[7Ssoi3O[j]YnR<1rlN` ^j |j՚ mTmU~5^Op`b:FY.QXv'`^}@ϧz8W>4,SBJcy{JR`]9"vGv^:,O{:.qWK)qy=?`&˯ͳȀށæE^IiY(x^5)lx\.g=!?Ӓ.[/+د/L0R/n "NLBpM]FRq;J~OM+Scqso8 yhGXSM–Q**Im %%#g,D9|(@%]WPWə 9Wl⚗LŒTS)p p8$o]ga"_x$hwbGGR 3[Jj񞖉Dm~X%أ6LN0:K0_*]kn[Ӌ°T,TWͧϽ$!b}FLDo9575x249קC3<]F(#` :ۋ|uv{Q~蹅VГ/FSN%~-*{u`,6ߡ5I ŎAY&. UbF<0 ܩޝC>&L0*^2Oq>%PfLzMeZmFVjI4qWpGA@e_|,&qW b4 (ȪA@Qdd^xunի{}9U7A%i{}ҦcYkw7Qt\f>Ӑl5gF٢#]߾|J6 G5a\\|0xX%:ד궢.CڷtbbcF0m`+SQЛ| J=*v}њB{ui]lc`EgWp6ϣq9A}N88ms(a=@Z&vO:i;TzhA>5~< h0">g_ܑa$B"B iƱH-2/~!]YeUƾڟexhA)aZ'KVHI?,{sYθP"ݠ*vO@ , XYlNq6'J_H9v)ši H?70Y*nQ>JQ^Ma%'m4%.s^ݘ\ j%}?URtDZh;5쨅UB)Y0A [61ɞ+'))ER(\~FttPI/n:QLe`$&uyu!{@wTGjw Y蘑mޤ#л8`ݝЫZ:=?aZ9ܘ|a+Ԭ?m}Ҷ:G\kmaã$ĪsGѹ`mjcr,M?Rp0Zwn ҃5!߽Ĩ95bZ~E3*1S| mz.opϽŅQ3)l{9ˎV5攓TBZ^d߯ᒎl`Է {nb t{= jUt-wr.8֙mzk2j.\]>P&}"_TpzPxKDzxlse d(Mp}&:JCZ6}X$Du ŌfE hi-4Yp]ʀh>)ZkE~1OMc Y1l寣piu6A:ңh/1O ` M@.R{>r3 {3Cٵ̣F/]K4hpCQĢ~ 5Ʊ X%%g!.bb;ȿV2j}j@0ʎB4ّ*n{c_`\vhk"!5O|v')xU`ymvk7MU K$_E=5P&*2bfB[/޾3¹Y8tfE L&XGlRa3WS sVdV ֧%-sWVЪnOsڳݤܤFt p2Q~g;sB2گu(BC~3w^p-aOD7~oc5#ot[^.an TEܚCO4~serig譎-vV7jSkVdgbsx³(- l20n |:Q~-W{=64mMIz3z$JF5č!"C62^.' !zqܦ͟r?y|W1C)ğXΡXtߛ# @J"Jbw ٝUn ڟ,trM~s-j#4~3-9yjWѹUh㞁{z +讴j~{ʾa]Tdtt˔u6t~mO[ B=+uR'Fٛ.;;jO ΣwC 7̗_NtkۖA|Q)Ye\Ԯپ"( C˸r<ߐ7ؤ4a~-|gpUTBrX{]%m< jQc&0s=IOÝ;,g o+;jFY+y2dXVwyEl)}W,mo.;:+iSǟ ti Յa {F ̌KIέg'?}Fm'H/1~(a_mjs65Re2 4u:(EuBjPC*a"".߯&WH!UFY$im-ipTuzgfzjB^%Y3+_xf=nZq '{~˻_S?Ow:GJVu΢8(:N*qг7(:yrppIXDX8s'GpM&M<7g(Q &)bn :JM\lwry`wulԑTx5nIokLu{̳*ֈ%5 {nΜĤ]W\A3Wt/K/{G7?W7<9 ¨ mQt\>w ,YER215Z7Qw;{impFŘ1{XGU~m?9U}upRTwƌ"%}x4fmۯ$n0/\z!joS6ߔ4? TYt01Z{s+1>z$ llp\\c":6"; HVTzВsig}z" 7: 񧝎s~ĝnquF'~C4! v %vJ oJ~6 P)CL|*1U|x\ך!}*Mi=bf2qd$#$A^NڇU2t1o} ϴ=pɉXwk@O%vW3 Sk;rd T;;OE(O3̃U-F+38mGڸt_cڅS812VD ԛq 5re|Nd-ݯ&Cҝ3Xoޒ5\4bN]ɰKDIDအO|iY ƌbIDk]uZ+_0қ*"V^Z+}`zM+*1RRCwI!=8 ^ sb t6b{uCa 膤<-"l6Oqy}%p|ݝ&fsic- J"`K]""@P)" ")}/oQUbSw̿u׼qQXÂ$(6-H) , Kb!c{lM~e朣lWIi:oK+؇o8Skc~3{gA- o?ma5:=M /7Ee+1z1/Ůt@2mEƂ:%Zԧ&Z>)jlYOtj@ꩈ*ԱOǠQsL u˘C-x}_tGՔX{7Uw ㈤M\Nj<#5!= |HG)d m*Q'l3{TdW_T8<3Mi Fس!bΥQTm@Tt8^-e2#@۳L}Pv C d–:mzaN g[N*q-qjW:Kɉo`E%{;2һ^uSy!F7䨅ǍlGz;GiY9!,qAkGÂ4<G.?8&$շrd4[ GϪ覴;dcm/~Q`#CNeU4%9G}5yhD7[o?zë$NR7?"lG;)}g] .QAÀҫt -fIױI$Nr I%:;Gq 4\2Vԩ$J2Nsl&q|SמweB*|{W7U-[ 1~hmayU>5"v%J:C+\⑎^RAR$<*p ؍V>p, *j&\iP?=‚z_;_՘j3d>&vVF--IwIe. < o*VEwqLꉑpaXulC8Xj.̣W?&.O9"٫̒zY n%֏|&Ũ9Y\&߲ h?8i qಶ {Ssl"v[Xd4> i3}fea2qU|o1뫹5bO7;먐}eCVMk/2\uR!i;Yb4~QvFl`vfI٧[<ƩE=53Mr_ͮ/J#qx{v_ì=rA3Ϫu<5EmŹլJPޗ,}W rALʥS\ly>mfښNmٮ5v:AT[J)CEADDHPcg~Ϗ:g;dFpYH =T.=rlb!\*B[Ũp2YP\,6΀X:QQ̼h> i"S^_5F˙ޗՂo<#%%סMr驣̒p_xV>OV >5\BUenvQNFOÝA\ @oZ%w?6ꔛw4\4 >\'r2P'ǃdWfȯ;m Q"Sa!/;=j^BKaY_VZϗvz){c^cU+2:F= {&ĮIɯʇmI$%1N,¢M-?y^5ʫ&j)0_ilE|J`>VܷD- OW?9Fx)['Fq}V~Ȉ$7HĤNT GAx4 9*C w0lo*a-?LO'dG2 01q'fD*C`^|ms* `o4 /)Qc}[}c7&~]h~p,rWe k_"h"l])c.H: XV;`yWWK+b1ig[ʀU"uYi`>2,}6 ?/[&ٟBnV dvW#dΙf$xg 2J9E_p!_mtK'ԉKEwb= V i. g`'0C*ړ 6Girh64ᖩ"t}pU)&Z&H%9FrMF/5-աjf8)ȇ!FB)Pt]Okz{0AI,żteн }&ߐS.^ky?1㯚zo/fl*c\} #?;O;?L*̧g|&3rb/ۦXOK|Ʃ)hP ZϏ^B˸9T13dž)o="֫b!;ÈOF`j>ۥBlgDz|4 ⼚:xTO}%?)oI)!#{;d )iߎ2//]:T"6pҀr;vg(Y cħm`^#ؗѭGWoCLjYA#ȤK8HS Kڍ$慰g[CF昸Ib4D-R пOc}okol#݋ ֡Zŋ]M>2jٞ(ޔ^N{#xd~_뱶#YXt[=H=X`n$'\\( F<5U=.wa8fj_a"鉙\~*|Z&ޙY, j<5[_bnGD[01'RZOMwĠ| CsDmgV7˱M㳜*ң9tZs[ϸ[$Az>'n ׋ GAt)_ -=:762zk]vub}.{ã;ћIL', j2 6Dՙ!]᎙:A.܆B;F..$5|\  JkLIYj&Fc5^"(z"bG&րA,( 6b&eO8C.|/+rn&g&ĢVt '?ҽpd:GΒ7Vs ?:-澯%@ 2b7xGAͶ|5ww"=m=] *QjeE$q tؖʟ܀~~q׮, +O?:5_v^o[c@~Zj7\,};c+q2O/T vAMv]Ћ𫭅eq2' zI_W\O>,$3oO2nۤyϗ豷n4ύ蕾Z˩FG~{f--t:r%:&:/Vmm7Ű*B"-zxr^Xn2ܮ"a" zr%QFrơ91rGPrn*!{xr>ͭ2`K`YjW(r߱#i ;=QAL4^@/dZ|*fo$逢rbzlg?+K 7WmqgŮOSBL}ݦ<禇^KNfQ2슲 KHo}U|453/A"=daM͹>[@[ R[c#P`_]Ny6>_yW_ZZu| ,};8[7roU%+ NJ{wm8h^6 ML)p:G0;ZR}(UL~f9 yyJ¡as_a1V4]XiZޯj¹V3t3g*rBB'N}-i = ?z|6‚YZP|q]SoSO*FL|+mpiBǝŬөj!6X bք؋UW\ׄ)'kD<y*ô;vJt>s$)k^]': [&hHr)Y3 9uK^hf>=SakNyER0xBҶ usTvƨi5USB} 8~%-9OB ;>"A?m'Dvb<ʂMM?Qbwt88]#;%}PH84rMmWeT[IfᬐfWq?[*Bҟ/KZ'vƔ4{G,챹mÇoE:Psoгouϴ̝[ oCTR 3ƣYf |"_w}HrimΉ.9E9Fu%9C KU ?j Pnvw4k+.^A1a7&ٔ_޶r4IEUSNM|PJuw =)M#g ⮁n*A?JF QW)Arbg U b=t$Y)򥩣,҅ 90"~],JwSҐ6Y{w{Z򣞹Y$-+ ?,[eoMAQS&ce9eڲ݁ZiwuGsK}H]}NL֣aVዹ+K!DžmP2ͽH% ?}]{'۵\.gؚ9 9^99UR@r69!B%EJ"4\g>~}<=8JJMՄt )VkhUSN{mC]ϩdoHTΒH!\U0Ī|֐WoGG.r{Rr-ͱԀ9~I09MwHGo~AԶi$5/5P}]fF\+ Qj L?F᧎U"ǐ1fIi|*Z|_\yo$'gᏍm5($<ޏ܁|F4|i~Y4W~ڛB&ZN9^`zy6akW]ӠVU{ |*{ݪ/G:.NawZgG0e@PcR'1qsa)yAאs]ܺfawK&[Xճɗ~t-P +%v7X)) Xì:׵iZ%.eLt7ٙ[9+/HJ=rn\ 䡖xva0{*rHm"PYQ~쇞I'zaTî^ &5>ܔTH] ?wu.ƭّ3*&o[*sj /S_/E<+wOsWW6ނ^.b¾J= DmO`!d9ЊؐVn lRt,]h¿j -Pae؅ZkH#3<+|jD=Y59g9eN%:Jz+^-!d_%M~_8qboweW\߼<(&C g;0|澪8S?%;Cj֧8!~ƪQT]ym#7P;X*:CCˈ!S^TMG6E. 侻xt-kѿ07r?1߱aF=O1ۑ|^rɱi[\.{ԟ.I.x.{$7!8jIy $z* 6 !^bGZ2ג؋y{:YL]MwNf +`^J]G˴HA=K-Z?KA;30?M si%146!xsMI0bAvFP+mA:BSxV)3WF]5LNO2D(5O\ùQй+åAZXV]M<ŸE­1b2#$5g2j3=do*ΩjdQp$N5P5AL8K 8Jj.1Ks@#Ot+Z2]e68iu^C bM?h&}QruQ?&bx4@SNyѶU/Tm!v{&nx=R3VG/5QaQҊ0eM7nZ1l̾FH_KO B [^5v z禮cW5\6&:(9!"HLIVm 6W>>J)9tY kg9TA<ġ`꺪_h`fO3*v 3 Ғ;^?]Psu@U,/Q!EC~!<5 *c<}ag%BBIIKZ}0DBeRf^qԤ;3#SDrFVO&?>PjMu8l7fدqr}VX5^0;ͽ(0?dοu]AI5Rݝf8T4AG9;>qs t( 9ױMn {nu] 5XFM{18dGR*8al7*bOFLJT;=P ~bM ~j:]uguǵ 4E鄖PB + B $$J % )r39s* rVݮ'87ȰqHs5E,|V ^峃ZfFU`CmwT?;3 ;P j9 WEC'3P*dK"+GgH5|jxDAU[ΞTylOu[)Nˆh["龎 ?Qa#$@ )*ak%3ٔrb"LGά=\nf>99o] g\_c32F$iD8(2(]1/ZG09:fSxE )k.coE KG뇱cPrlbC:L.^MH%aA6&)Ev)& %my#帇[R IfUPjw%6Wvc[VD -sQtf!%=Iⷧp{ZZu'}4= FH=IA%W`0#s)cƘ b,D'A';.\6ݓWwe[ܒsrLu[ ٚgVE] 1YíI82Rn9<6@{ȗ{*ZO7ގ+ITͱҫ茳RDɶ} )&$;Yz,|x{uAGĬs4NW^X|wq8>Ciκ؟ U z)2U ϯ&&Ho>vfF\=GW$19FqrFqk8?zgvIJU4~$K2eC2p` m5o6f!iQOnGBJDo:fG 4>:+svI*PpY$}OB~hcjZu~ 5 rVH-lqZ5LvUQˮcr;{;Jj>!mH8Zb63 {j0.g]сi{v"<2P BIxIDplA.3˯ 5}i >2:z\}YgfFOV }h.=ГaӐZGzj7+]zF 9tTY ,sk#'[]3\Tq@Qlj?&akRPTqiZk _Mq$מu}K\k_ 'Vqgdkq@gh!1b\sMګfC#&VkHC,W>PU9F[F1 SgōwU{]jMvЊaheXT오Xuף$m(9r h^L[g)Dʩr7%)hkz>w6߅{ف̿T ~ڇxnI#ڇH9 ݾؔcsJB/>21a][d]-<$KЉSEUr˻^5vBl=D,Rv`{%u!^2wS!5ܯ&3Cc6(C6Iz~l l=e,=UbIy_e>[u~Fmt֝MMH?Ƈl,fU4z<rS#P+-̪a J{ѳ3G;h~]!ǢTlG٦'szٚ Rأy̛Yn(z%璥5r \CeT קkwM@hЀjpNy@&t2<.9OWHj'Q]% b,4ЪcaôGK%l vuz).6,?hZ,jiuO"Mg:(tN'$d#H 1!7]]vv16ޡx_+4?3oWWҽ}%(Y}]pPТogg'=-;A}ɕrc?xо + /8nAF.:5M~ /͢|/;'ogy!){ߞ}t,.'Ƈuc$?[ ^M'ƍʼn_;3}O6|"mE&v%'6p靀qP)jyށ!|+QXkKU[zBZƵS+ڠ̦+KEB{ |i]s|{=oed!Y~iX%; ḁ̂~`~ {ND)*nĬd:.7p+ΒT gCZqپ6 R%/8YvIMk7?eZH]lg:X~s)cv-@>DXm'>9Ec\韼$=.Eέx?Z=i$Vp@ ^ΎTH/:FqL[^W|caO2݁CCYh0ov 1͠˻G $Rqi2lڔGY &U2 zNX3C;sE)"/[gы? pIF nLT:ԫjA+f*nV=Pr '+fyT SA~7A?4ቖ[ï9ቦdV@yV1t͈BHzOɎ_> *m.EO3]3D-@֯[^&Yrf{Z~ew[N=h|͕Z7g!ꍏ'Ͻ͹ Mh${)5o5:COmaXPkV@/Z"iP<~| !Cw쮺:NjWK*{~;;i^V켧euas-f*f@B@N+W5VbC`ny6yrJ*dˠy)+26HNomSE'E)_= $@g N\mIR3WVD)!B/E?kD`WplQ#jPu%xӛz=`lG k؊YU oGVc?KFsfuo<6O#C' o&Hފny(gbݎ3nGײ;(RbIHf\K]èP~jWEu_\MwT1$ܫ˭Z ּWE]t9aM:[ީ+qۂ(gޣcy'&lyQQZ̋řU~WlcN=YdSL6S R'GfAw٩++Z8PrD n޳F.CVhs~t`Η)f7Ul 켇YճvBʖI9,♒ןyR/E^.jeQBH贵3{B&]ߦG?7B'E ~'vDpF)}Sݼ(hVQc>(rnqV' hH n!`Emցꏷޝ] j1SD+{" i7;U=ѩjݍ\Խّr@Ahŷ z" NnP!T: tT.cSreY A Ԭ81#c .H!huݘ~#0V}~uFROV ~LD;/U⑔G?vxX.>5# <X"OBXҠ)"y֯!fbF zBKSFFltaJOv]8i#Q|bf߀*z3\̂ze Nn>ؔ2$u /H]-w?k $HLnqD+&I1(ܲ lFN,BѬ{Dkgi4;pUK_;*eM$8:eWwDX4Q V mjY$엕C24H#*Y$d(di-g:K^q]߸gf?Vώ?L*o\O"sĠOۀZ@<`E}鸽@ysjyhdz@ >m%&="Gٿ{¨7B}Ina[ vw128J0K{<-8Ш.Ωe'+k|`>|}s'΅Cbuf73|H2[-=I}C}>ԟa; ya v(\ [w`onaўaEYBoꋓc<ūﺔ澤rA;X& ٔSS\ޭ̰]@DQZvHk^JT&<^KǺhaŝ j1XI |QIM[Vą2܂(nP"8XLE@AHӫu+}}^=O}hl ; I5 7qk.[pU 14"`ɋVmocOv-ȁ,t9j,v6ʧMrC :IKM `B(8%;Zb^,/[4^fwItQ*Nwy, -Z]wjU튧K9%\u5.,idu5r2x3;HI0)f mEc?p h^w0}R;ٮ5=i]X4NÜ̡9LlRScW.UxM x³ gŲrXl+Y7*ku5fne*Mb%,`ĥ4 sTZljX;V-8._ZY3;`x brԝ2Hvcb64 M)BLg5K}m@tˇΝ #.̶Q&_wO sh;1Cj FD#@>HDQAxD6v˞p/*m_ξ=v dzC-oN >o5 qN.6g0Kb+QH,&BRd 6۳ǞJsg##{nllT iw|ޢ|^!* |<>.y 4s^FCұߵ"saRjc¿\5igX=i$Sߔ3`GL/0~G4: ;$C(* րPBz"v^];yuVWc.t~^M+qo+drVX\^!3i -*b=fNv4ךe]9Ku'61&۳ǵ9M"P1!Z^PgX^P& yQ ґa;D-DǼ r@7 =BbP[=OZjp}ehMJm_iڰنTgtA5[tu3vp-! ꃭ8zYQP'P[C z%{Vd *;[y˜cHۉNѻ55#,p˥8M~z~3̼ a6a дlQ@KKȬ]<=qوLIĭr̷ #u#ͽz @zK< ~?.gD&[ܓ`:C`\ $dشʿ=]IɿU:J~I0_u^W"yo&7tIi4) ',h&IYXێ >>+,ِeZg-0,!B%e8MEc֢v_pTbi~B,w@`( aj;mY][ZWGmzy 0A]A; PɳRUꟅ/ɿr F.#Y7zPɽM]uޱ- JŹA*+Ö| ]9BYvtS6wKVӴ]gvŠ٤ߧBj<%hOнSc ۺ%?"5j}$`9HHă yu6^al[:4~A(=J"1-mNTg~qLUI]v$d5 D ߳1ҳ]lږ(<5cB}9 $u tBʤ2Ch֚, Nt@ :H^;MtmEhL|p#B)NX$0!1CFIMݙ&割ZъFݒo"Si,-/iy6. ((m㲐НE7+k|"TLqwv?^ȿPНj*Q#$b@rYð2l/vݨ: 2՛:CWo ߀Bm-mKsc$pWh ^DEa3.ђWnsV vWoaH<ZFMh6V 8X;l03ICLdia.b;*ٍI{ѹ`/} (m$Tܔ_uы(I uh4E=bC!˚9k|` }roIl:J؝h QYqBM!O7ྺ5>_-zO`KtniKٖU 4zT"tD'Zb֫I:)w\JCnU}frؠ3N=W5PLq.ZǮ1t yn% 9MQU Ln>%}:|k lD@^ZORD9'-ED skoinzk *I nzDN] kH':da+5M,y^jNP#:H‡i ?bj~54d3})Z ȧ^Ao.# (rJuR*YLc BCXjWF+`\ 9{]\&ڛg>g/ϗU k_7zԵi4Ⱂ@tFUPZ,%X Ib8܌UdxOI},eA?J5\Hѷ`ѐD7Y3wWx0{Yj1Q21b~4(f)ʢ5>8:`CgDg,6nyxax)ZXd$u:yYUbK9*dmrCJ+gm:fs3%ʺƧBCQ ޚL/uD>C>Tq2\宸k|@) mpvWA&NՋ|ED ـԸW 9$w?,tނkL)m)##ogV4h Yge>/(nS06`죈69f _8+pOԞ}Y!TxשK~%TQۂJ2|4@mˈ*X/68MDlxf +ДR;Z_#ƌ|dDJiM 'I|\F\=wK{YcC<+hG[ƥaNtlf"*pexvZ&y{.ݳs"iOcq# 6|9[A#'-!X7k-=m d.[;wO΁WT sp'a w"Nd]\RT]̛MbCPd-s'1G:tUT{y␯Ѥ`e2c"v}gS^sOrmp.ӫq5u`gvDW[@:5TaA P`^]Y_M߾`W8ߥN=|epr7)>T*[.qgIH}ZM93(ؔ76bz=֒@gs}x! i}1 g$獹sdbJb힒:F>㸈Q8|svɦٙn^+?'ƢwT{-V籜TRS[#2:'A=rof㸔^@>c -'mbL.&mk=eŮ{ᵮGW^6;5d朅p]nL=piKYzZbw½ d̄ l^&!蚸O8N O}S)sIi 32`6.f`BəozP~"ȃ#)a|(cgR[g ZPϯi>,l]?WDuMZsY0RSaLP^lcם-7洞o_DeҾt( xy8!ZYCب8Iǿ[Чi=)gvg 4;w$Bkb_,k-qw˷ Z] Hq55TM|w*2究&*{H).4=g6Ml$*%] (MG$јXJ MĂ A bws2E_{~sGj3U-x=AI>[Ɏv ޲^Ec]RW{曡gmqRCBNMlVg-uw恒w#R# :FUWJ]JVgjg-OW"Yy#]}1ޖ4| ~<-;KpUV? Zb Q 8ȯ>%6u[RB؝wLfSuPOSs0v1&2\>X~4zpb3rK TUUzaW-q?6t EXV*vdԌqB{ ڕSͤCu6R >\3Cl2!$%J Q $.XKl1I桊G}[󁮹p.6*¾se:xUpt=-bSL(_Xk|[ӂF.h7}T}@-qȰ`xe[Qpw¶ˁPP:\Ԝbtڮa譸)$Rls&9&1Nim!ZӅ &ۨQm__/ڑNԢS-rdeԍaḆ?:@NG1Q7P)_[/Ͳ|FZO f%6DhH Գނ_l4 5Ov$t%!ASLN0B?X% ~J 9QM兖[8FQOfp4 F>RaA]'KB{m|_n|:o:Gs,32.[Ddp-f.)9Wڲ k/~7,rLuJz Q02^U9/.T|_-y$\mydSv0fsywu%d^[JGK1N5ecZ(OŠsLjIs|1x(>:R-);5?QC庈8ٜ`# ͵{ub=KH+cg.AS8P9[it<୕hcGؠ;jV zSt%>/RL=R  F>(lWqs3#|UHO*bB죌T]GgԔ]Y]urOu[uxod!mBRG(h;2hWV?McsBg[^mFAquGAzqQZXca%ҿI^dWαK!Lg 6/ӍQ&W^ғH6ӔqMU`gublޝbzܽWʅU2<Ӓ~e>؝쐑!НIJ ׹.I3}gVƧ`4}}nYorMN2^մ9bcU]a@ϩ wIP^&؛!5M cm #bRo5U(I rWUWj){lF?{k T[Ih:s Axo&sp}}ݛ'k|Fl =64{CƦ9Ņ1["tž=Xyc;߇5.Gqqvdf'ac69SuTR訜"犜"jr!gs_{\cK~K7Ʀ,#Cz?]i9#PYV}փԐkӄ% w<=y{k:Ii6d]L)>ow<*C6HA&B=7IXl6zUd,؁}1Cfb'rHx47pbI48.Xg"qwb.ij1^skac.AUqG~3 =%@xY.twcW3m/٩k*c~;]y'*^} Hp/6{1ABrSz Cn sG\m;bv#0JpA=Xqzm95 B~Fޙ*Ot.!DȹVjg \y7GMR!}:FBw\Ɔ]x>Wkn4<<#li`f :Hך+w L~w4-(EEH{CLņ\/Э^xk~&Zef{g4B/^hv3tdB3w{$Vہ Hu!F;~rȱ "{˹16ZB?yV:Ti¬xYm'cT0?XHr) 3Wh3\ZQ'S<5Ǔ%{P ]puQΣ}Ϯƭ|!GF8,C\Gէ!wG_^uD9O<w8zq:o0?Mc()jc E¼8ij9|@Ʃ_e.wý]^#4s+z r.GO0IQS)GJV7yN/, ַ8Mcu*ࡳYFj[> :$Dy߃KQk;IMw"vy@'v"_R}L_OOgk˳*ߗ-w 15bOF%Z!BJsOɕ5BTdF.fa^MF & -$p0GY0MbTYݯYOMY>' t?[S4HOo w] е^YhP#YZdES3s%Бb~dlsߗf<$~ղ}d\:쿆|YƦԙ*%ąoT>)AEI~r̭8!l*!.‹;󕑎 *8a)/G8S`C.BΕB4qn%>=SWnQB6q`a|ZZjrĒXBdED)jZbMH"!"d"H|R7<hE:LF/phP@'èa ^XS%ӄLyf ք:MJJY.5Oɇ#U@&3My%n5T΄Xg/ mu9kU~fEșcl]X.95>UTrK*酿[Fm}YV;I };(d 9\a§yu8pf灠n ɣ7GYU)6X ҽ\踬k=cBH+ XA'I)zSι qGqH\Yj.)Yij 3csEiDyZGzsK\r@ņbnxqQZ 2/I( r=zM3fŞNR=s3 `]t)9껣YrYjw{H=ۃLaCheҗ) $m}.'펡}'saG>3}<7Gˣr2ȣ ǹMAՍUQRA)Vo B ځVUD??#js[}k;/ΖY"س( 2.R+ fPq{y.Voi8!vo򮗙Ӆ9O_(jLr0LK*jbWK[%'s3s5dȕTpg`d *?px9 bRޛ*fyib.CA9 ~i1%=Ǣf!&nzrCOwW9$([GN]O{5U;Eό_a{3Gy0@v '۳$(;[bjSN;簉Wt<`^ iY-- QV1?2!^#xf2T@'߭6LSmt9L{TB~$.y:r'.t<Ȱ/prm3x$J`o]_Yf/j^cTAÿ7vcwqZٲeLG{9's5`}?>mZO0b!?v~_ugZx X;Jc%ePcչ/xw^G1~l8Sa0ElM?N'7Elb\ w[mq+Ide4F[Ow-Ւd yAv)Zb]䅆ܒZnK hek"`Qe uS/Bg5P5#_?Oe’IrԔ;P$RS˙?;qe!"&[F+BtG[e_w,.Uրrk\u j+NBʰ\CI"a0üI"ph>PZl<7NiPs':Bv]˸Xo |f1>4AKR+X]!hiձ"wݩ2R݅];DL 8$.V ~ѝ{4֓=kdV +'19b *J )7ucW2FG-P` <v2&dk؅ 8t h_L&hLS"n Bc\zmƞJ+[}dL&14I$,"H(U3i *H*vA@hLpsZ}kF ¸ jDݿ17 UE*ؚ =ó쒀\>0붦XHua}$X{nwn|$3{SFό.Ja'&g!?Մ+ O:[Ethnы}5}$Ʀ$㢒KA Y2렂퓓2=3ԌK 6@.~k+)c._yh"\g`tceۗZxh 򞱱t,:5&-B +逆S]Q#Fn8.]ou."g.6 慴"D3*=j69Րn7卹H21z[L ͊j:zGFxls?jaM u) W$gi`&qe.4G-p$QīroJ0 /u%2\ӿ 4UDU#/s7T?Ғ>MO}]QlMABB1$!p;I? I wcSV?&x /n U\xkBN @2rF@9Զrʴݲ_*M^ߞ gDܪ%I_#6׃l y,Kpb 0 :Yqns؁:TA )!o?ՅwJ{1AD[_]r{VD&*:FjRAOQ콤TuS= q134v c䕞֗k J$kft,d$*ən9& (?*9J-`Gw5u# 0OcgD!f]0(ji:, Q*hU|):m+# aknν#j)ؐ76b$:KonCZJ~mW N%MG|RDF*җ>0G\X\qdCױt7lx" 99ddUB3 A#'hiKiޢ`!1 &.pO JF!52/m.u4|Y{*v!ػofU>bT[I JQ/VKoFdDlIHVVY/~= &i~e=eeg7@=9),CM=Ω֚ ^! .Wy7C3ёq{뻨:skKtQ 8%:Bzpus&9h-M9-c[ X85%gv23S\y4RGGy&lbwNXN>+"rD4 tky;Vw?j'EtgdgmFwwRIߍmຸEؚd~5ߍ8I>n`el+O𑧝-]-9>X|;{1Ty]Ӓ0+;rǫ-] 9+`fWFзr#k/Yv,d hKGK{9s[{O^b\GʋZhk}tے3g;2, 󷀊Y'\ikRpv=r?ׅG+i2d>")sxGKb {Z|퇳s짻k:f (.ӷ44ՙiLdYLh416 ʾ$&""* H@d]&?d|>9ݷV2!~~X+yHE[[Van5dK:EtY5=e->:=t%&椙 ."z1x^&؜?ƫٟo0aP-d▢w&Yn o ,O V'\z|v]5^ٹ&!_-K;K=,KL֟ BR|^B˨s-:Yաإ&qշcMu\(zp&E = !3מk wܗ4^ 2:eҳ@ .v!e؇f1+MA6D\ܙDe&% l}XO~ +%gVJfmDNHYtO+\< :UGQG*pFpvP/s Mc >5ĻĬyr6|6V̍OtW T Æވ=6PzJS8bK<ʶR{;+{zݽ/NmYu"/H/Yk'faw`ݢ=ֻ@*iM1-ӻ. 92ûϰO\+) 9qhT?:^%SbZjۗ[ܠxȩ5 .Tu #T*\em;^T8*DCa2_!.B.*CLlhke}=k%)ߘ!I/M1ik7-5: A;! h"YB|M P9Q]{gy; 2C u׌\0BKoYi Gaz1IU/eq-ql§mإA|KɇoLpIB4fDɿlpI&7eۣPћ".ܾP7њOwy츑L8w\WQ0O}J@΄j㐴0 ͿPV˦%Tm%RyviO}6]7&Ms-5fdp6꣥u` lj&įdh5)W?_ Vُ CHɎQ2h޳ &qޙ&XoEiĭV*w@qPK[wB>Wы]eʿM܈jyQH@%hv<8%5XXKv+!迌)n|^ybbâ:JH#na:fW>9&+@7SBaQ5by|xW9_]qTZeWXu1h2) v4K֞w>KԇG+@S؅edž.BHM-*09])TB3:ZAȍܲ/ C'Q5tҒ2Aol?G^,ë&$xGQ>e@-)m'*adg7R8o K7)m*;S\Om]gL&MqĮ !^CX#vVІJBց$! $ ׋؍ݴ?ztg9>qFtnɌC)+Tvh$ŗ >.t<:]'_(z*̍Iӑ3m'QY:tJ::vǧ9Y .b FъJQ;'VB!lYMfJo Ol 66t8G72?\ԙ?foqkc W?^ )%q#/ꆍ8dB:rL-H?|3bgmq+ ?K&rܽ}xtomжes0fv pgq9 x6Xu#ӨL2=okvڡ3Up.;u220d_KRpa>812w湵1 ?GG鈈^./0 )AǍtRG<OW=5um xUu90լOe9_pi [17;aO-el?k66欌9_6 *_==I}: ɯ8I37={Sr줅|| uˣ[sOT}(8d"|p J'G'TDuwvr@#)F)-?;6 WgjNxa&e`7} Am)3y!72 =K =(>nr6.%a`#z^뎂U EP(' 0!"6d63JqzYO2R+r}XmR&50o^~gSU1k $L|¶UaY98ƉWҰ;#2*W !h+lBXϨ`VP&&JYLC̋ip?X ;at8fn) {J&WttYw}ub2~ Nm !fs]!5 +k)?^cAfRЊP!Je1%ltxs쑑s}rfTlˆ|0U&]PyBį v;u=m 9Z09-3zCre{G|,Uq5;Yf..D42S[WƟavNM;xM\0v6,@j\.8 1c:5@PIf}v]{5㐲J~h֩:Orn,Y).U950OTAyĵ쎭hM.x-ВtըgHɸup)(ǝ gn_]!VZuy)#2} mȇJńY'BōѸ@m&N[/G#z1)_.aZVvMG]b*4Kw+wuV/:QO.CR۰4:K@/{a!V'Ov_&N+Jʪ!f+ef!.Q97nbzIμus02Ϯ );|EtPH)b ei/bRS8/Zvd.9^ۚVw:Mtu[s N.3ia7elGr:4 ̃s-v?^@ڤMNAmRjps똖p=BXeR@S)e[ʊ.TE:A$1 ȟyŢ׽cj㸼Iwݔpkr1햲 s{ Psť[Y=ؙwB7P]ʨ`Úibj_ ^˸E_QVboEJ]<ۄZZsvۦ>,Fkٚ.Rk*uaMظY ;mhNyǐ/5DZ7&lH՟Oq-mZTKo,;^*#f&:$LU w&äKH++T'a͛mŋ֌8ºRIZ$^ -U]*Uim%Е8VӮɜǣTP3kK>(4Bݟe୐TQ70 ƍw4YL:%ÐTr9 ɤ%ol-W;COִ/SBsӾ_~ P>m i3 5WSH.y>yU#JUp+`< #{gu?aF5?my>؞FW3x4˔(ad#FnG= h~>4?mw `Pi O.eAǖM8)]*JY)<PӾQJt~;iංs͡w=kՐ6Ý9fMx$"e7*%:rI> s}ʍiMӈgw7P41=3F%8Cs[ nS6~}ǎ % 53`OV' wy_Ç.Fq)5v-8DЭجkPZ%uP}PgJxmq3EPB{}w\tgeBP]˅;Xt8RqmˮѦ7.ǗYd6){yj2{sv/v^f%Gb~>;%#D.بb"|uP2qڗZ3sGL?]^4Y>zK:Dd¢W.*")?"ReC.: +Թ5Bg3 $W47|`YDŀue]-z@oxTI&(2ˬC,BTyC,ήwW5{zNSnOmO<bzRSMwSSiojjʮJkڥ-K[Pd,D'd?&+j+-K0 IȞs8|Ź=Ժ?.p"J#"_ϊQ`+;aԇq+-Fi_\+V|ۿ)Y00= 1g'ǤdMjX 'N)?1A؍ٞsSG<"ߏL'g+GSY쩴^tԹ"r=?1gN9;*FCM8nط!b 8|\g-RZ.iSrkcaԽH i9bF=-Xm;pOoYKmJvT ES/'tèyA=5-@DB&Q%B9XXQ@t2fqUDUV<\ ĆR[Z ^[dmRz;1^M%nt 8ތI\;Ӯ٘6)q[9^p+믇.& >9KhbQ ]/D%*ğ7=kp]~uDuHa*m`+/kR?de\bR"kOK3e'D,ؘ-TWHAT:) 5P4,\7 pT/f )= ĜݜE|şW_:%2I9b|TNRrjy翽OiMAX7rr{fqO< _|xkz˯>-jS.;%b5zR5,Srnh|?6$L*FE϶G "\\p:hC/,A,rJBljHi3@hXVQ?^?ǟSk.N?;!<žQ6bZt jQe@}>ӛbXMqwǠ n! BLM=973`ڡqwu&aj)a:FyCU_;*ZS1\(v%c{T@=eʵ߰g͚xp,pFО5+Y =gaz:jwX3G5y]d_lşʹFBϘHQNHλ 6 )"U/bǩ7i6g㊌{z&~J+FSO7r6 +Vy΅:%95TtRG<ǟJoms)2Q?~ p0 Īi; :2Qk8-rWsn)sIZyR ,wƦr'LX$CJ+f̴gR6.Z嬕ܜKyFr?;&f=,̾|*cu_tK U}h>7OA.iY)h3+aFí[x_tW61ЀChP=}p`]<]# =_F{WO 6vaCkQ :fզu5)A1h]H)zشݒ ;`)gF!ߓw% CO`FPg&dC,bɔݺS QA%ɺ8ɵY>m9EiXMkO'v|q0+i`n95%\ȟ֦#$Dsdm)=fks~}D D!8,f;p-zR-I9)5&DYðmz*" #LۙY~!. NW}OQ_{=lJŵёMK$T9&/:9IRƽw gR1i39vkZ.Zw:9|Y^cϻFQ`W=Qvr苘1ܷffzG쵐\uOƍ{e,P #pn}b*eQNAC 7ؒyvYhsjJ[9 x}׿w;b V.L,ߜi6 xӑ[=(u0EHD;v ] ytvWO6SLvIsN~oe \L0[Ŗc~]W,DpJ Nq6Z^c2A) mA2c`5FChJXȈ@~grMVnmC^_Tj(`F,O0+G;oP%:ɭ3;os?K;'9+FYDFƈ~XEI!53aqaSjYM'Rus;@h(5vK#,Tt9 a5^jV[oeT8q t}L 0wQ&jrSWpZZӐx^NK'-50!%m̓X OC_w"*: 7f! SޠL9Vسٰ?O-jBeXOy6^}qJ8iuII/#fsPEɏr.ȫ|XױۢFVl瑲v1HvDZ_4ƌaRRy{;6aQ&>ދl!1#xw)&A ,!V$LĊ&xK wj-#LU~Qmq%oK_F_F տ*DA2/wL֜+ؚmzFLdDʃjbS-8Y02f2vŬ. x9YuG?HGlarf`8.b;r`XXFj\BZv]ؗs9|ISCXSN`YL i߾) |辺*ep4l6aO}`U*vsP-@#EzE?- }=zQL$c%AVNZl L`{ݿYPTsy, fpUB<\&1)el?\izjm^A%tԇ5j36 3f*N܈vu;(.uT lt[N.!f`< `~)!?edeʩnVuEMd'Yț}Y j[v*l$e!J1ssu10EXawRѰ^BĸyO.} TԌ&ů .*Z~gi5B8\fDua5%icfqվj컺341r51f.2uklC1y&07]TI;KhWruMFS"ίHn]\D0q}46&.p_Ʃ7'e欂~ZŬYfUXɬ˘EԔ$'ӽ?GM^iY5&nN܁VKI bit3]@}xNPRRo峢sK*WD|\hZ]y;x耩 jsy;ZY2R$eziE\E;\G'k-#I-xЁVX!U{nV (p#:փUN`/IHP]iK )#jX '㠇!5`\(3}[qi:VSoʟm9V#x֜ߛ2q!%!h/ۙVu,l14RX}ܳ-ej0idw5cbu$BJ&b^itLl-D+9}NvwPnڜ  #*F_fAd6ⴀ^'l(5;aa^/z]D90[TmJ^SXi>r#BK] bJ~[\%&YeZ5kPiߛ΋{N0QFbRLw,q]ϕRDE*x-Q_a=%њ?yvJD y-o!9A {93(E5O$U#vҩK)-ڟ1=DSJUt?=,أƥ0>sBz!!TiuKMn HТS=y^6ǵ#QJ!w?aQ.JIX%1+M8p=xusod{THYL̺QLE48$aA\n'm1ߓ@^W#nM=mwŞ[#F AH,sfR+9ޔ 0~wZX8t p٘ZwETT];.(Z~zp,n:SY逢*O$p7xؼC+ -S-xoh~h>\0 F`A9#+g2fjujR^v>AQ{DTw ʸ گ3if} ]oKkΦWNzw?$h-ۘj-*Jd< :c{>R€RID ,qn@)VgBr65}pyKq,ȹ#TKe'(Ufss.۬t|؜B|  G"zl.q\'< \/Fںk:9Дkɋ/1:a*-nqP[=C3%gYD`(mbF.fd6c)7W{(ϨwiMC2LɧG&+Nd*KV5av۳PEDu6^=17m; 23ŒSY%1?iPGiԑڎ<1⁻ u5 Ō"r$$v#3~~+攋1\~pED=q K`=b1w캠a&EL/rv>6gn\FPBpIʑY% ##cKԫ|~2Sp"%cQ̲C`uxReQ "Ҩ=A5nРF1;,+RkalCQ] A7Uo~]d{V`V|rpVrx{F:q3\[?p:T#adӀU-d6Ѱ>I+[浝\l,(ht~_ooA Bo"x D!7A Bo"x3~ 06# endstream endobj 23 0 obj <>stream Ho [-E$[e#dI6uߡnRX.EvMI4l)NReI&E].)CI>!@~bv3o7w?5|D'68 Nmp"laD'68 Nmp"laD'68 Nmp"laD'68 Nmp"laD'68 Nm9"o±zN ׋kx#)0VZTޣR :j@3TVV~Xx(J~|344*ąEg*.*++K erʊJ e~_σBC(Aկ_O"Vt6EՖ&Z49Z#ˏ*:{JJWEa :/ Ҫ/@GsZHjYʫV47퉹}逺/E{)?K:$>eG: QYė%u+5ff巪n0>]_oQ,ͪڞ|)ߙ%dueY=RN%:hMK&,ePlN{:17z1,~?j&0}m~iuCqb{\!iFОCr*0. S]hs҅6>{$8nULԢ˄p"R5=\\9W>22 KV޴irNgJT3mڟ*]ڞ,afHz2xf[M C㵠I=>FI.l3D3;lޢa06̆'&@=/cÐQ2j1#V{iHp*l݊CVkDhnlȄ]}sd߃owU:K(]ϸe t@DWk{Q:E%Wvd:1R0ɯجtHE'd"61q)i 6rդ+u=6nOMH̃ >l$aK\Vn~[E.2q#겄A_I(& u?5. Ƥ\N*`+7@G-X~b:ܴMQL (B֕J\EYp݁熍ip@ZƨU&]=/W^Gݹ=' KxkV^bIA{AǴd&].>[w4Rv .ep=e|}33a91 ^b޴`IXM;8a3WE8x E0/T?}{{o/1!\ Z*lAUE!_'Hc26Z /66Ai]bYM#ȿTGʟo+Ȋdvu|;5xɧo?$Ԓ.9}Xs_S˸0GX~7GRK{uYpd ^D1n~ad؄\P'708>MOʩ$\υ|DυT]Z:$2^2f%3[dȪMxw B6>߰<7~{~njb0B\Jkdh}J~͢wNگ#hg~Uѝ*{>iނbƫ;X^K> ~?kȀQrƟ53zp=faD!5@! 1 GJrQd6bF,5Ld#F B4aτ-Xmn~hgw>8w+OU:5V[-5ɧE/5ksF rw1Y%pfw^ِGbA­Ʒ" {LU}Oung7>G'F<)AMaXGbKʭGC/!דAjS ǟejp-ffdqAD&Cp$g> (Ը r&VW؇~{|~˒[Yܐ[2벻St+&h;|=s[7q)._:﹄npP9Ȼq hOJ&K1ga^utЏ!􎔉 ԣ"|V]έIn#p؇n|ihy`dVyц̜_e}}q\/=O>eE%n˙OFyG~Q;GoJll5 Ș43-c_Ox5%(i,.+H۲N`m9$LƏ;I:W`~-U( 1IBomTr!5fbF5J> [W#tjl 'u_֝w:7t-&Ԃ.y pCEedHJ{˼PpԏT>]iy97.lXX!:n1\&_щԉAG;qdCXz;U +¶ J1PSz!m3qa/*6yYl4 yw F37+j~%n8_/eމuѦSމy'f95v;+r.nt}>: 0J j- 5C d{aaej^zY N/_9*=?rw( .$kFژWb^؜I_?TЬ[;uՈm 8^;kuiv@OpMUTlDƠd"CCzHfЋ0JP^n ʬLn)#6k)c`U8'-Ms)Q'FzsioW{{+@B~Ф_'o( nMaK-a>UnO5C;tJp3ږu oܒ;7_捬貙9L⪴5ƭ߇|ߝc|kvE0s 2 \;X_6zop.G>ga,G; 1%}f[[Rtw9_eiӢ,nʻ85;?yynǮ?v㢚ߦ6W}VC 2MЙu nm3.)dVT9` aeK%UtB%,ET<" .&6;̎OTCDD}ҩ*[Krit[oI{'"!*Rq=rxj'95Itl&JJEe*d@<ˉG@' f &ʁRP'!:Q%4 [@z]KW]Y&2k@%i+E2:>e{R6۫;q: iUI M|FǦ>ݵ>&gwXbq%16p1!+{ Upow.12E)>5[ M-mרucd{G;BeD˹˞gzbLnV}U_uMͫʫdH[mZ"LO`/W>iEvV^/#mgQNcBMUvW_!fU^NlT]-0h=W]ޚlʓƃzέ?>ԝj rQІ₹ 2["*. =/Ȩ]Јrs)<'^5׹ƯXMLlp|2 ZP5+/ğkTٸAZ:QאZTk 9%F(8aeC'e0rcf] ֨xOC s~-g}^6)lB"c#f}i빒 TN/40 n@LXw)˸\\]2̈z/e'R#|g)A5_āvfTDLupn5wy}`ؙP<F vTZwsQio`-R®_bU_2\q9ɩ|GĭLf^118 m!aֺ`rpM- dm3|xq6`)}xZ^?i[?@7%(xkq.;+ڏ%Y]*:61] r{Ș 7rQ&4qK'm䴅d7Vd1qiOAV3 ikC`^"f r drԁ!~ب2A6t2Ir.- _]+-9LڬzfIp$8XY. qyńQ{o(5˳!uM9~eF+M #m {K[伩#wΦ/[< ovU䜩Mؐnokm<9D=iyrO;:>{3[GsjcR%^pnNqmdL*jj6|nOjР+I9C領5{T1]47KNclwhj8fs.JRALKۺ* t;>EvsD콄_yao *(9ɇW" }[Nkcjh*~hL2*qfPgc>`c33g Ӳӫ/Z2!`.a3Ŭ_\N`c.X}SY;.=^ݤ"V ng]n8Z6rS#.Uב$&$qJ 7K%-FSҲ1`u|sLE!?}n^ץqcG.Ɂ[*^CF߿RiI$\ cINAH`cS 8' nl%úf2מ *.P.6|795&n1xfgzM 0ό ./Г.q@h`R-*-g6>N4џ$_MTRN _v !SKkֆ쀕Mxbe.D G}Yt́2)M{q>5q/7ڭYҪq]qkkO;o;/Rng}绍i?t_ٜir?vGd٠FHk\j. NQtwO(o÷Up[?6fz] Z`tUQ)ޭN]8ʃ39;NdqO]͔WNd5`xa-<~7r r'm'Nv^BI:2'ؤq'U%BcqGB`J@j)DJ'$:.W[TA8yjvL끗LK@LD#/,FJ5B : ;+9q:kJA=JFkgcN| )z4ϟZRDr+&cY-H(<,Ch$1^ٝXi:c-!{AGJL.R&UDmr^%2EHk d=92]Mm (zIs-7}dӡ|]/|h|aoeʎ[&,wr]jT* Qq)bsYɆqhUB:LCf«y魢ߨۘ7an`4f[fAi秗\&잚b 6V8sy73n~:;U Ր>x(sV_>R^)'˭/:.WA5s9yM)i[~\Pa6K>]rN5pQj *>o8WtK[ !*1sihه3CJhŤOy,(սN3* πYeB;.M&l{X ּ_C`tT xeAQZXiEtXUB&*aA?g**&jR!~tLG)H#+Q{6qH4ؖG'zucW,[&4rǶ<?Z|1*qLQMTH~?jeRJA5qڟf N>A* pFDRFՂ_'. tȀ1Q޼"LURP gMpeLh.W Rm7 z#8L9jD-clSq\{@eݢӎ3ޟ/96<WLM/G TFPI>>'CrX)dAP%h.dk%?&~We%~P`[|o+ ==+3Y-4 C]},4]U^>,RaRʮ_ѱ mɼ;Qt%4uiA~o̲9-۶:O&>ϔGrwoqe㷞3` tj-- Yyrt}LŧsGR=b/tL) I[} ȰvX-(~p:!O [W0} O0xGit`n^mo޻y o #~U)^)ķzА{(Dl%jRFwKv& XҏƱq'{"Ew <'7EkM{k692$Sl<6..ϑiӁa`6zQ0(] OMKSsURR\GX ۬`Z $uA"W^qK9ŽbOƞ@ 2u {OScCl PɈ06] A;b7yĦLhq숮bYqec'Чd2ZMYITWd&"}q\Mwysɫd&KBq6^V$)cp8 ظUFV٢Uq/ObI[|OW.쵼v1[jlrX;) UK m ZuXsz[ea z霭4!ӥmrЍ^8NCfwߨ`esjλ8xO4b 5Or6JgZIT f'?R剋m_RHO~]x8E[5L"/?u6#~2y [EVU?9Ŷ?YB)kmb.!܏2 yfcf1t[ELnu$tZ̏AE:2P!R0SkՠY^;~Iia7vuaE2r8B{4XnDJ̩bI‫ k'5eQ2A̧Lr4Ln1iͰ_Gn\s37#\XNGZgy[|Z3Ș92%{Bzahn sQz )IFvsR$?㨙K$~tJOCv YQ >7OE@l f H 8E&YB|Y SӞy6qKƤj fV7b~X%Qisjj%9&㰖qxא˦:IZ]e0VIL4L ^p6+iҮt-.N1[XwGBf~vѾvcCL]]j!<\Bu#Bo\ȣV3NSD"LjawP/3O N80oVڂ82%w1cmvבJ y 3 }J뤤Z~GC1mvŜHS,Fi+IDyT`v6 C{ۚrPzO jG3 z MSf_~[z6rE~K؈Lfn]S\.t`cΆK파V1 fA=zŧa\B{Y+̂:YTZS֩i#}BFuh5 G^ tcSsm xK%Y TX}KXmKBCCHe?M#|z~{}UT&a 8rh87:F]e;FHkTYh*a*f7 i'dI&V-7 Ќ1U?O% AI&ew2JҢR > yrYЋX\;~**ݚ燀u2nNq4N%cm#QER7H-NŻ5VX%qUڒHQ$)?q;/ZU#H85"9X  fkq@ki5+ bl(0 AMyjPg#Z=ǟ6&ېUbxXKJ`,7'Yii#xQ4IZ,xP-aqd#fWwfFՖ}`3iՈ/~X5IIT_UAޚn)/ U{vVG>m.i-'7 G$L܈v =_^- f*/ jR]CyƧªČ|S~3xlگ+:W†Kv܄sf/p1D 4U:택M}:9X'V-6zn*ܺ"6TW,Y 3-l ىXVQ16OPXya\epI v6bg{? {ĔKc%0NHtzKWB>yJpQ29dc=Pj_})C{,A|ĐâtXt{=Go_//W#NJL>j)s溽.vYO^Fw[rE9VUw !,Rf0K=f'}+O:% Q5JyP0 5!w7*ߴ=|I)a)v,jpq9:-C1i3B1l4rj%Vt_6tL)^ʅ+1O3vuӈR %Qc%boXl R5 fڛC{.*fM',}<):r0<6s_#!GFp`z Lp?AXeU136gIx ?- );i5T"cI̡ly1|[KkBǛe{|UM@Ls w.Mѵ$֡o|!3V' bXD_Knwc]֢+A%Go "x6pW.ȅЋ[ȸ,EuA1F7+1L{Ǵ?x2.T}JVrñfx,6IG7!s;b+V6O() Qs 3# RGsk]\ӈb\ jܮ)왳vr5 L[Ʈ'*y Y :#Rʹy8r'~r&#b"ZD =S$ڀ}֣^#V@.Uzbe3GR>|7;||cŧ"&H7Weí'Q^ֿpvW06Q9h%mW򘭫s@R8z,[46Q)5sgb&T@o@#2B긒Y)!6<i)g}R;-AFisytıa+&7qL>xz/>!pK/,c&g+ 60gI]մ} Qf_{j1pWڰ 9 ؐX^D(xgw".^J >ذ7fwU:1cΉM'2JV7\/}܍ֲ 9?  ,[S&81ʧV!CMHI0dj`B؋r!BÆ1`[B/34a!C73n\pM(zgXڪZ :dh ]ϺlzH@a~QEIOəF#Oؘ"_h/>퇌qa|[C:w~E |\{ s󙐞}HC)v׀N&,ß:lrrJ`lcٺU shK7_dS.1FYLΊYiQ$F> 'CRa=~Ku C M߼廥n(m8#F1pl} [AOԝ MTpR>d:0y-%dTwU4L/KUf~QnW6(he_v^Qi6} W݂M׋e1rA<@>͈U<-&Z 7[?sZNɅCȣ:㴪YlD %GJ?_N4ep''hiaE+W Vc\eW gV̭BДK/ _/O7n0,!FiE83o\ Nc%AٸX cDF1keCHkю/o߽- 1S{y~v~X\,x l?^^!=l$}n)G.Y\g[%LiyTpVl| TZA.DYwc̃]\(F#ݵ_?J)l;1U6ui}{5! djғyxGߞDRV/t]d;?%ӄ F# sMmlTsYȜ%Eߋ9t$$ݘ\ߒ6}c2xCI*)k -HGAa<+5SbRd@~trRBk Pƅ4)G YKߧyfa]M}uk w_1"hK)L=x'6$0NsWef~d'1)dk\J!9 n`F։67Wf~Qy{Z ']"R>{a(Г u`8R̀weFAK˺OG?y>Ż-O"W*V^[_==qc@> A|&İr®[=6!!b+ֹxs^Y^)ϗ ^w[\YԞBlp.$`w%?B(1XؐLiu䔐0w[_chYBae㹃%گŸ0~t9uhVUhW^=/Nn'5!E=6dܟc"Nve>x(4r2)wLp.ExG՜m\J#|xld-%0vMc}BLH8vk_ݚq511NN%!1wbnXZq #$1w" j󢋪}WG1KN<$%~2-:ij]ZeN~8pɚ1q&W 銈h{OG{Oߤw^?<{YSN+jC(EGԢC52M m 3#@S SN)lSLu6e%nᵂojwH:tH<"RItS22Vŭz5Py2=bB36qRoJ^ЊϷ|:ɚ-03-aZXψ4ǖF91lP'r*f:2q1 tSCJ>FDV! ֈ >=@UAwČO2&x^!!'aɽH9-֑ bN~G͑[*tMI!~G9Pr t8OʨI:8-A#ewWA1=O7]Y6G`qD7Dl^Aq+1H+ Ʌa ]UftӍO&hW,@59z$-߯kFl!xɧTHK%hگ⮠[t^뙣+Y y5=\tދa;3,fVc9[T&vc0LCM4pVȭ;egR ¥5eV戁 |'@-+{s3}?A7ZNeSN)3f4ykjb>XS^7I) &S4uM(Ȏn¬?\%5Ei:^ҳu9Frj?@| {Ax0I@ zk7aF+Q[2HV^r8(8UY%D>y+0O/rOSF.>|4)=>@Ew|\e q3=6UG7vƻ4|ejj]{v; 4 ,w4.w[w&P գ>YITf3EʋUq=9-4H5ϒ? bTO+ݞ4>jgjeuΒk'3G .˃:.tꑆ"tƗYq3E02!{7G\CjNm(x*93C?xj i`h5f%Cf`doۮ;o뿺|pY{uqAX+hAe9fί߂wS^FrspYduǫ&|(@Y{u_ lV}#g(7>h?{yګZцjGQjh! !R#c !VBb",Z9<_?|+; d+)W]1N" 3게s#r4Cu{2S҅Jdp`&ud%i[.Ni8rED%;ˆ5J{]x]1z:dRWJ^᭦BUK4@6v{ ˂Lي{8NB L^(ag DA]xw>nu򑜓?@ P!5aH߁rM1 (YF_:^[<mYrQmp8b[:St+Uv=ja'{l@S1J&>žJA%QGc1I2Kaz1Wx*/Kr8D~UV)QV8-B׎vYjxyRz*j7qmcCyJ #NJ ]_gJ/4|;RmNzQӝf8h5t8LS rZYZ5d89*#{ޚ&s"'YF~, 8s e%&g%>6PC KڳsO gm{4Q$nc]1n͹/2]qীgJ⎧N5ˈ!FIAN mK٪}[!ΰ{HѢ0]GD^ <c$Sr2/mN0beE8/'a3 X\jw򛆙axrdقr4f:m fwfle+^LR wb[&I>Wl荊t(|1Q9e9O]䕙,(5tKq]~Ƹ Ҡ{FIת f=C{SO3 Xh1Cն<qFNv}E8. .mם.牂hJOq+5x0o8Kۂ:Ю@x֤:LȰ?Y^?Q2"zo]`Mw[%=N}pjNAݴa*?EiAy2掃IGP}oQz mw +(?q֊0e8JC wL-g%ou7Z}:CB\`} Xeu0TV'/ РϽ~z'7lw Ud9+8+LǭVp,]c!;r|%vNRM!L]},yY6h<ߖ1Re |6HS/HQ Kc/(^%4R n"]/4ԕ,N(o)pad09ׄ !A~q V oc{~٦Ddiyۇֵݴ,9fs0N 3;9qk"Zv'{NJl»c_6Wq$7*A= @Y(ϷG~>];T-֦kُxG3ɏMRJ#z+Ol4U)ioW[WUu(rcI>NJo`,}Fz~|7.< O[JK M%-7 QEE \RqIETPDQwqOP5ީyϙs#<}]GK(h?(?p LɁY'+m?ыN2KaE0ЗJd a0bL F̉G1dkR#M9-4 ղaV9ȃl#m|:U3I ;_I!1z챴"v% #^^sW6޹lw*^fSXNEpr Ap='wzɁJ~:]O ZV hU }h]u |:Nq}%bo?Hӵ|TJ-rf|8SV;k\= 83Y5'@8u&漽.. W"ذ;9W3|w[.ԤAz+a9QJi,t]ff$x>Yj+ <ļG?>ą ƑrAOa+&f !"gnQz/ 4`[ gow<^V9NτYUVJ#`ozpnW k{'IqRqZ!bND6 V"ਡ띅K;gG8߫en 9;w8/D4 wcU 1sS y^H+;t SV6:K| z +'8Ojc>COvȿ gӔHY3JbCLv SVe29pYqj?R;NS e o/YN(|a)mxkϗ1Fr;%ͱoU0P˵xEㅚD8|6|v&yiI?t4腊C\f$jZJޜf'HR~&C (jtjYw:RO՘ tE)T!O}=] =8JXAsҀ[ #vЋ1k~euOH` ϩf;Qqqpiԥx83h,hp<-i08JKArVw-xou-q4'@M:\ضROu 5Zf ܡ{Џ悏$c,U{ tP79zL1a:"#^-p'k`m2 Yl-UY SRܷлejpd]Р8/PaN˱жzoul̥v,#nzqk#HD_ J>dz6A!E^n;JI͈7 - Qf cfUMXǹQZ(﵉-l~DhZ컎wO%o4"璗 nÕ49<ߜd)";ؘloe~o6Z!-qr.xHVkcpAU`n/kKL(̧Gx.^߁ANvÿkE[uu>б+5="DŽE]ynabEрf]uKc|m[bN%eI=O&86-nH)f$X%ĽrXr-,6y,}t( 10DX*M;ffr7Z1^))Φ(O"~,?WMs0IS~,Օ] ZR+r3eIRs1$ިQϔԔS\_Iks4mQ)[YY.Ijf侄.eMqA6A%Yj߼-j[(8]p}'-bN7E*"h4hHb|[rԺ6rxvy{SQH)г%bWM:_e nP/׻nZ'9֏1r`u`C;Z8CH9yZ^Y ̧C] 7ylk*:Tv+m)t+?^Ʈ c-²]x9!l%T嵘$>GKwm:dhuTԗ E8Z' GcM)IR(!!(ݲRHewNXB0E枚-;v@dh ]ZDxȊPq ]\z-!ɯ$Ԝw󘄈 oPh}gUS$6\M{3 rjι1@6;yRjGӞ-=_luf܆ 9,f{yA , #Fn%-&*q;[XbM׭~͞ދN8%_x#§=Ԡ iUB]CFHs/uT{V]RS?<9U$D(ur* C.Do^SSmrTd6Rt)᣽J^hCF>jq}s8x' m2z8lJ tworfU 5Miy6* P>a?vcR.lҷM&拉h)y3V;ޫiAZ-VUrx9%7>i R;N S0ރ\ad 54L]m!\~8i& '_TdH݌Ӝwn9 u4'yoUFxp}t!h 8/>Vƚq]kVzcuAΧbW:> ;åb8QW5]a㓝R* YIPO/ j)g0 kE5Z(e6vo4 ɭlMcO>5/z2l]CKF>SSPa= Լ2vRe` raEm>.S5e&$n  2:`SӊmėVqcS hE"ZpjhӼ:[n]<5\Ǝ:y !@&+;Bg%453,}.v4y0Uw<_ho(vk=avW.؏+͞ Z]x2 ۟cdPwָMA0-tmarVQ( y]r~p+|S3]rZ{ s*1*6x *;m譋Mny_B{͈ e8UQ`ٚSg.ꉄ=Xzoy[)"ĤZGH`g)x!,uN`h1t6DVxSӋZ"+-;9ݰU}h vCՆve p5.iguiD)/`jk xdz5<8/ `N (j!>96:9\EVz;g`KZF>"|]ڍ̒S(pFEi&U˧i ҍA:Oo |i9Pt8Ax2SG7%=vFv7΋[މ bV4ao-ⰷZ33b]L]t2hs6Լ3Cyj^LAy餟;1nVwm֊ jfm6r;jNI.QM-~G 12,@>gD F1bpPyQ3c(4ZejD{P[[ؽnA:8WcWd]H8(qJLUSa MW~VԵ_}!:/(h5=z0`E(q9EQz97.<8ZO:fh`̴ F=-4Os9~b-zQD;ᗙѻ]oi)ф"N>y]ƈU4]%t,]2NB]ɻlk:,dUx"_hk׫5UhpNI}3X҄M~(vՊ(oF騴ruLP5TzjJe~Uɖ9N"b"uNl&؇ 4X6:oM݌=0퍐cvi.zF`^5ScFW{ۆP2|`kPVDZIfC%h^;_4Ԋ ZXf`k燐d,i#巾l1fQMϳ >fCE9)FiGH@KO=j޻?>ܞ#]6տ6Շ |M79hN-'N#<{qLR9" e%qǍ /ʮ<׭lNTgM^Ziӧ X WAٙwa>7 xGP#P5.*iT#.Ԁjօ^Zw8z#xzq{*.4,b%/xYdwIIᎅao$褧.3œRFa%C|X7|,)AۣطSgxtq@on~^@AD % Ľ G&]m|\=<[#?e'N$BI[%D "$.KJ;(ez̝v^gy{|wΙ뿼555of[U՘\CfTA l2@,|@2t>XGSOtթۛ,_ n4Y[_&HP $qFhăF 7 lR,`{oJ-8]kǞ/o;`ΰ=[ŪӜ8wIq\*? 4Pĉ> I є@GO`⧔bm k ] ?/W%1^ZS,Z%P')(AcʒG@ ID /럜30ö^~0Ű?:ltמ,Ż3ZMWRm(*OF r""@ @NH(P煅pT*}SFeo;ƾl]nϨڙ:Fc9 BZ8Dl60~x&@ bIA#.L5 5֙s4Igm?;]j2!Yt_}ʚDK#-t`DY`@2Z F &4(MN8خ<򼾚6КplX0gL=wol΂]ɚ5kB' fO$A 1qPAB& A~ $BvdtHn*_LOZOW;p7cOW4M('A+x10Bs& ;*biL#bR(;PBoC~sDseo=kyщے.6-ukO⶧M6i)6ρ(Hx|2{{C "ć2$%ëTo_6Mg+Sҫٞ~={fS-BLեt@ _\&pxGd !@ PwB "haaFBs^t+`Fr-YJ^/Z ]{aJ1.?)tFF _!yHC^x4p,h-U`e}G&xi91i:y4eX=䫑`x\LiI+ Bu >QHK:S}%͝ѳ W]K9qk ΩU+5I=MJҲ}lsYǍίy=q5n^Zx&~0]*c8m23er)\WO0UJ };:mޔ)9YR㶏ξ5WەY3ϔjLSEtNwCclRP;WdDą,)"q[k>;\-h=3|~<{lTSd-mџ8eIpi\`dQE %N-U\u( p;Cmˡ?:=3=+4Blab S 12HD(MktY Dw}3Sgk!œc#ɞ^] jJ|貗H<fD`g&_W-CL/?^8ͬ8vpfx箽lq=$Nnh$\!(kiY>\(f@YVTTgbd~}*9ɴ%3xC~joi㌥)nb.vW2ٜz5G%ΒȰ&mkQ|p$m5;|BVa LalgNXvbujWA]r #348yau*^&Xjɚw`6}éu7c&#-}Xg GfRgӹ14l)juqA  "M2R7d#-~ԙ0FA(S|OV i?`GN[fLfjS"Nj%x|,?Q:k5/9W|{W =4{QkXVٗRPdtk?aWKDA{c;w"bNW/wm\U GqǻQLsXGn*x!z#/O~2~3J=Ra!nܡd##~[ĒKM(S-jKϝη`ԦEsiSp'Ʃiu*%c]pmo꣎o{^ݝv'!mn;g}ٜi=]'?<ڠ&LJ)zb\bgn Osfx%`eWBBU@mϯ]l|Ygfp$iߔBf#䜼G*eP!lѸ|l$5-JGbBk`V4ZsA@g+mBxvn9𩥀T q‰[rԬ#2vdC1DjI @ / /#,rE}rHňh0@6œRL|J6Wp?td̡-}2cV.灗ZXzHհpb_J2N[ԹZ=nD'%vh]+uY5Q։Otػ~Tsħ\|f#b>84k!ĵWsT?ٔzk.Wqp&ޅ % _&6^:t>cLPdA=iGvt\E⒗EM'؅em؞h%[(l%+!HP>6N4}FV*D`@K@J%~_ ІJnrwNzԏ}y9r۸@U*׋FѱZ(Knh6ۙ6R"[6rO;Şrf0Ӟ%ݴ7EL_6Q01e:w!5rPb2眹)iLzrns({oZ#M5 _+:Ŭґ6ԝvH9'g2b` u-bw/Ӕ= m%W a_gɯ&jMJhȈ=Y2ĺ BC>R_fg1i" Ri'N_TVu Y%sToK'\ '16`,kc#Ѳ9)􌞪W-踄S9وK~SO_@ށ)лzq0o49?zBgsNSq)a6DŽhCHR1qi:J?eDjkvt]FkFuEEa@#&r's:APH$\$@9;W"x_}<՛42r6N_+@&>kɦŒO>;cfuMǵx(~[޴O6'+Ap< %Y't]ɺ |QpSk,KD02ϒOLXw=WBa/ NZ>% e`/_&Г$l\.>9z|~#9T{AX]ygwF&^_+"_EIK.:A!e܎w}d`6[:QDOA.kqؓ'qJݙ$\YAsVXqD~\QҶ_OeViSePsR]m%|m< 9zzCFom^hE /;ᆬNPGKݏ]ۛogTC過3m{ԞJz3B\"o+9H)숑]1CTTt@<N\ eyVS`3:% kWIq5G4ʹmD. ^Mt侴]zblpSr+_.d̃OIui$[Ȝ#8@i_WL2NdNjk:* {Z6sbzy(ZDRn ՠf6) =B8uOjbwsvi̡Q0Ѱџܧ 8e_>@: P;WW.⯇טhU8tyDtw{}v:R:Pm`Ӆ= ?$ceX )|Lz[9[No:}ss=`y򉃃 wO/>Trn#,lLeMy2=*q_N8@'\Bֱ_,g͵@l7vsI!momRC1\r30smCFr魴]fBb\\bP0IUgȨ lNnhBsKp˞tw&+ߥMnr{դ{~ue_e҃-FJ|P=!T1gi#{˘ ݿX_R{n- =L^~ww)k=]LJ2{JKxU?TORtzNO`ODI$wqUQT jbܷM(";jRS5<ݗ{=wz42^@o }_oLF7GK^YgY3%b;ҤWa OV9Nj9Qm?-bzaZc\i)ua=Ƨ&IP5Rq]a_|rڼrB[~PѪ6*i|kA:wBmAP*::Q.ɥb"k63g5Ԇ X uidNN͢ul&'kU^% v15N_G$1Ia;Stb4DGMkȴU4cɫ} + 1` y^&\O@I.  Jipg j9%ż9Ak̽~Hn+Rw7%WyՌGHo8.v&׺6:ȶJy氹ǓmҀt#Mk_V*2l η֧G|_j[zQ`ѽ` xX41D6Ӓ5 aQ&lvE T<2vL裛_ sh^ zŚmS?7_8Vzq/-Jg=1#2|8J7_?iΈ9*pӱZ.r0 jMnkR|~4CuY߬Р7;T*xy6[`3%mxIh=1=W@-&ҽ+SRv69+d-s]YBybW@£a5?_6|{Tn_ֱ_jnk0K22 9WwȻ%߆W1PBJGn&}V2:{W{Gm m:Şx2i]~KiA}oO§CjlA\Ou? 7yԮ3r{"ZJkXJ-52.5j ɧ`~ S{c r 6D!S%a|{ Ȩ>9R'|\qh Q %^~u3rd[A A=';Ha=W+BZzs:(t pʘ>,y4s+H+R4e!0&,l ݚ0czF}PM(v,d˾=^@e'y Ǯ9! iWN@KY ΅mt6R0ȧ3z"E瞭v?IixP}#] QeF=rgo5ór8) Rj[J-.t?NN·]혣<=r,4Ek@fG󨬃q$e? Ҧ{;Ct lY }ZB"Ki>µ(;]&\xe䢓iRmDm^w=qm b5-?*6 Kn6йuS٥CTߧ_S6C/vμnnG",6U}VNt,T|;d[|u{WaOA YJaf8 >]WY;a?,JHI-q.9\VO h_ƦwyĄYK WtHY] =>zV`嚭&Vcu sµB)r.រ%3[|?m7CbҶaI,߯6մãfHH /ݫmF{ۗ{աx&f 5ԘXQJk `Kk[p)ӿ$= 3Lq̴Ye٤ [df"""(*.ʢ(ns~{~O8:.%!>^c,rhGY,bSSgU!9SybC+ޖڶb)"A?`geTȕ!rׁI<܍:ceVx%/>Rؙ[TwcqWw_Y=r*7e1"kU &wZd,hƾX~)'iGJjT(O0TGӳ| hj/ TI9~Go 浡 Ccc3M "hEq؃'!)(x96V;`7Ԃ7Jc^yuUKCBWW::c-V v:xW:GؑcFO`F8 nѳwU̲z_J E2y8m-OgPȇ`8\G^ ݰ=}][&'cS TyC H@KYI\swM9(wM2ZRoEٙaa:{aU\xyUQ&&'/!519O5@-@so74&`˶*+Wd$ҫѫN%7O(HJ7%] ,2ta<܎O f8#8%W5S̆ݙ9@ɖYr4t[ZZךsCOԋ||oha LJ"zK#ʢ@okc5V=ԡw{n,u^ ޖr6DT} ePV $q=2ޏ7MdLyG禛^Ԍ2C{f@:LmCa1rxl*>=qd4T5-u*ȹ럑a^ ?]l<0in fhEqb#:W2覹#f _bF]ǺFɩ.1bO7>h/ vW w9Q1Z܁MQSԠrE[R|m*a3蘁CcɃQje4bo%wS#t{ f~^#h1.ayem`ڄk͑ЍxP4-`!RBu8 bDĸ hM[Aؑ"#eahrFކYְ ;jrGMwiQq8$^h=_hE>Ц>gҪWliv?Z>"H?HNQ~؄[Q($RckR/ʀ?,e1`u醄da]%5wWYg-m˸fǟ;Ib*RBKV# m`cW*¶Dd<*dG虓Lk>5њY!zd|Y-j."] GapsmwQOK813>i+>qEmxQ3 #-v ɯ" o`atWIo:^3#U?~N5l T^M k 24<̯a!<1dSf#`dؤ#Fl}. 9&#evZ{dQMpߛ%mOg:dl(~M~(%?_^\T]?ݞbˌƀg^:jbW OZ湙ԔIR9( t3 Xzro)=Ք=PuW5] v[Չnɉ5fo>.Ͳ6`1wp:\"jj_ђe)O\?2>Էgk뺸'L,s7-G󡨕۱D*sj}ߚ>ݛ'WUYK}/2QI,a(bd`t޼Ƒ׉y?_ZP2fQ{oAc#awQԥU'qOA&jB:1ǣn5ܴ 's*`b/{IT@t춭G 7-_c>P5=YA,؞cÏ4˦/@ajUqց]%hO5F4,&lۺ;C .r.mu =+m(Iy꘹G3C3ĈÅW-#q#ːbwE"1kN-83-Paܓɻ vzͱb5T">5k'ݞ^q)i~-ٿA?]ǛSc_/USkuC7\Y=}[A*Q^ns>ޜA³Mأ?61s |a3KߚDM8♣ /B%@.^_^^9\H9T-ѷ@|xH >/hZFߝ5L侺1Lݞ>vM`fڟz&[_(% Ω2J,ȱyB2)mɑ*7עF6-b:謭I TUutS֗VO!3Rjyzߧ'`|m:QU9h>[sk^做pL2ANMwȉA !60Q;|4WA/CU\[H@M|֧{ V^=Gw, 2}+NA~qyI@j ^,Jc k^y#o~QBJʵL+Y紤'0~Bg @)EXy%^!k7DKqΒ^"{@f{e Q=ճ՞f[ttHa}GMp2G&@I,8X8Ix{e@At"3Q jo^:_:ky3t>%0L`kM<֓kg-p ʫY%'82r8q3,W^`(J><\АR<}= n!}WSw5G/4kp7s%G`~G,&ͽczߚ3WH<^蠴T O$ezq5s Y~-@<{q.?i9tW]z 1p)Q9M>QIݝC>p02#zHDˋozu #Q+Bʶг9MCMmo/Nb2g9ć_N&&JAMpV4$xQ03lE<49f3_Js>8Iz¨:sjotWeiٕwmbe-#a,uD'hz(#>ʉe|O . u[k#@Sjz4h-OʱFl#<1zN̠7A_KH/]sħ_G'^ݛn6߲ UTBs꒶>qIa q蛉ۄ!#sdbQv!J 1p Z7kSv)tkP1 2bԹ+YTGh\VnդE nrA5PzG JxBf( 2=3qGO@K{@_M$l. 햓 ӭ"&-i>tw[`;zZByV92b2~}^ > -½tD!{5ΧaG;Rp~|TeBk9t.`an%rUvfǖﶆ~!醪!AӻJ(P7*qIx6ifLY@UyGuK)k콃ۻ',H:_ܮ3oh.yזgjXWd戚O:M:WN-16%ac29Y}/ÿ04ه B(&Ghk7^TƹEb[ra@YS'& aIb‘MLZ8LT1;8iMy_i9\A;'Xrvõ?Wh4J5Sl#U!)L{Ml2qU8 &2m5T#ʿ]t/5fY4p/ǡVX 0mS1-&޿Na~)6e "(02Eo1/Iܐ{:s-Q*{SجIKk݅?G؞.JR6DM~u[c>jă{Qw&.fo /'oc71s>8 y nm+pefG6䧨Y9,oHPY2,Eί} v>:H #M``Ŷ&N]bU¦yլVߺ{z Ԋz[Zs (q}xXh)ED?PjAƄ+:Pk/8vBvG&ztN"o"ၪ.FaWҰ;+ Y*>X%[ow =%eg;sM5T'f/IKoڿ/>Tr-ڌS\^_ik5S3IDM3qb(>D4(EDXA^grf)xoދgg>Q2R9єҴ~0ϙ 4psgopۃjWAA:aWJtqU εؔ]b2e/ݳ 32094B. H9Ewfȕ%>D]ڔ2Bx՝1iA(rAdWNE6EvʱZ`y0\߮E5IϏ:ٳB)vyUr]R= }\S0]@<ߗЊ]6l#w`M j([i_ %s ~}U43 Ǥx$ECvXBg|C?ᑘ w,O7d5DRAUEcWS!k8>0%)iL_.XG[& TצfK-8VN9ȣz1ҚFWӄtS5>30 >yyN d\B,k˺~4L阀b2{u1ń4nsާ}xdtoQV;*߇Kyfͅ5J8BC[T i |ȼ=N٦fSFq8h9@Lߖ2PRWo:Z|z.9`l٦i%ԭxnp`+fTxmUVZW1B) uPQp7O,$!o( X@x6q!3אk 9J- Q*m ɮl*9'-{2V2úeP7~=>g9!B> ;Dq|OB84eg 㵏mUwUmٗeGy5R_FH9sOh0dͳ9bSHE*b~ݳڄ$Ȝcۧ2Cβ&ERPën#i3.oF$d{z:QqO "0OM32njuDجK>-txXG(q9ڗŚ>շPOQ?#8ZۅmuEtx/v%3sW!#a8ijO*܆FwҀ1pU>x*ܥ@~A+@Һ R&j*gq۝5D x  nrhbBGC/skVyM|g}s?!eI윣Qs@gI(ؙc:jg^$ܷ^-Ꙅ9&lh-lʉE[ ԋ:2kW7p{S (jD?` ä|?AL`WlSy`ƫ">PSr\JGKb=pqG+R(\f&!3QK VEEf8kҊ{>\ Pρ_n SGY+ԛ:.|O[O[(ey}lV!raebA|ąIVz7{(k?W]kupS[;DWKKE08@|={HZM?z> j}^ 1+2rf/=CTq*ႤF ЅVDw+}j (l󥘺vDG)ZZd* lu/-T䟛η5AW@ u ]9| kjɽii2uw+TF1##҉y.EG~w?{W@XS3Mvѯ@y84Yl4c57~ڝf/5 !T[lqbeH:I 4QAϕ^0\Z pOHRq*Bh^̣ :5sǠCG6mcw!VlڹDܙ!] mRd YAb2Jb, f9/3I)rhA%!h Н͡y2OϧݪFdfg[hBE?$PPo>l\r3C/+c=6YYUV_;-2ީ[gG:46|]hm57ë jjm $ʅ%K *4ДoN\t_#,#nzG+s\"3̂m>(Q,xUSGYJ,t]s(pz"h izbCN>^jpvЭsCOmBw#'Ź?0^3IӮ/}mC^sb޵u #䷧^55g?]&uPzvL#iA@?p~%w1J,jV,ofOɪ2CFFHP4 QQzg)yYfODWOF!d* >˭ ,DvhF+AtȀMp 㓌;Ƭ2lҵAr-&d| Ȱ.d,6yOIp,IJ 8hluc.ݧ> 웃 Qg?߆3$1a\ܹn4Z[ubJx ypinm5Q710۳~зu6o=|rk`m}tK"3Vt[}e(ZRۃ5/jcTҼ15Hۙbts5ν׆dl8\b} U`7^K~ʢ<5ߧdA,7vJ~mH>o+p~6\4Xu8D#q8j],B^tܥ҈O0Rnz'E&yI`? %\"d߳K'7NEz I#ڄՁF_0חC#z -?5#z>g22xKEMs+_-t;pp2\E saw,@{KAAݞm-xTy5~{ ^J##/۪} 9[LOC<3ˏ x3Ipqz|kQglĔ8>`;15+^\II./ 뿤EI`/̜;K]ig&nk&S)ػI> #N?e2Q UL#JඞU1\6@JqS Cuwl=B*-؊/LrY-}TcZ䷞'Bɬ\1ri%osc~-6 ? *jS#|,аH0mjnY8Vh(-0b"r鑅rkgŕI'V6UlMp Wwp)Km<}f/%3}3QQJb|嚊Æ#e<<麲:msi8.uQMUcv,-G%Ik2~,R6+:6xN>hVsx@û-9,X}g<5ihSRmv: 9#UT} [uYJZ0% d* f[ɧ1d&8G=SweX I*QU% 3IY{ZA0\3ᴨ0@En::) = f]ɼ$r*;\vԁlM g&pS :2xk"ҡ}x3G+9ׁCOq}Z\W];Y3I:0 j$㗸J*lm %9WbU ;%,ޛS ~l$Ƥ/TE[ʣmbHgtdC363%kTH<07rEkў 29oe؄4!ޔ}{Ev`m lsEWy8- -f[.Zyz Y}AUz^^BNtB76u(r4+-66$\8 / 5*B1"鹣udN9I.ʭ6TLgXVj7`8Bɺ[Q:$`4l_O|uä^ d:)?5C+u6WO9I&!ŭUje}߮"nLPߺGc vTv^6(jF0b:\,KP&Nm>U/jA}VmF+[8֬r\Y*~KAb*^0nC Q G-V3Τicڵuf۶viذvhФiRĘY2W [ pQ>aGtNmIrPb#sRpIZ: wJ2Y)}R(yP-kB& Z7vG`(ƟiCƠ^HŞY;հtcҰxϬtYҮrWέkMƢe;f6ȢmEɟf;ղm`ŢgAɥ|hˤͪrYĜa<_:àg<̫qRΫ|imJtMn>k<{_1[(V/ɡ[FʨcIȪmLɬ{dغҳ{qwQ˫ye˪nTҴwmٽ}Զ{uɫoN̯t[ˬ{dģrVĢrUštQo@f6Ϫu`հͪ~pƣ{]Ġv›gwGi4vMoDi<Ơ{Xͧy_˨tV̯}nͱ " endstream endobj 24 0 obj <>stream H [ 7>^nsS6-XĊD@GcEAETbP,4QP@E,Mt`晙wg-#A]JT v.Y=#hY ֧Σan֯U,>w/[ES0Kk̂ -Tػ"J"lCJS1/uv_:BX ȕ^)|YYU [WcK~\ܑ0UklҪ9K[mR7'nv$90$7.[ CUaj968ᱞ[] 2DH^҃MaWDZe [D <dF2rn9@N%mO)J.|;X:P|]v\髋bjx2/a5 ˲sUO4OW~{z秊7B$Ȕo`_8>s|VT>3w>'6?2}ݯ]c5^h?aZF$ȫ({g'ݲwiJJIcSD&;r<(4QզM sw".)YL06y 1o' 46)/lS`[3+>R?3 ynS(-&G'a< U }1Ƨk5Ы&g~}MP2t=-*ji;F&j"d㘤Y&, )AF{z.~sRQTGͷfoԀ|(r1>5LxdaϝݏS`JlW,دCƼ9F[}lЂ+@-2|*"D3zh'%f*/IZg 20 4Ԝ O^b*|n覧:𱫃B!nUY3rԾ1˪"-_;ĥVa7Ƹص>D &fkM3^5o-bN 4c&pdm;wNm9r]On5`s duWy5>ngb\ &vBykjƮr7uՑD{.aS4VbZxo#dX~ dX)Vts}⾁OoCj &{5@LegEL7dOQjb $5OȈշ̍ Z;j^XnܵB~XM?t v6>f*ݘjN߫=Z`V >mY!#ߡ% IP|ڋLu 09U16q2=s 9"_Vvx]VʅE/pOAsP@啁{ 2/nYf~udB*tuC2޹4#bl眝(GE[s "[٦{Wqj{ީ~lw5 'Ǘp%fyCGϲ+`&mȰ En9&=x7a#Z t/P sDEj \ D%ܵ9j` uK?C.0jd7tJ)@_Ǯ2<2vip^ڱ=ևkR6MiؙԽDωZ1NlKxBB|V-ɏ;@SNqلNv:AmHєgdǣ17'@N>3aV[OXa=5KRX]Q!=[5 fx5"l.EE n w]$W욺׸6i[VL-p Fޖs lܵi"l\ vi]!~@-LMQ^mQ~ط^jaFX舁;@$$:f6b&.$ȥRVS*v̆.`N9cIzo1 N|ސlz{WfEOYFZjNHoo2i~FN52J'#UFt5鐒@B%&`mw^1fczb}$_3둎tt~xI=tZ*ZT R~צ>q%+'v食yىzWUVv K^)Ĕ-=H@w;6TIto5S&[n`형^B WRJ9ۼqg S[](?֌񞗻 TxWң?vYu珬aNH9?Z>BjaPZ1z!F3,}LOh8p>f\@HXY {\J/J/& "<\5T|b\'C4DL[rcBUBDA4>RSq_Ĕ`FYҽ<֍!0LN_1߾IbYytlt^ٯSǏDy mAߙt(y!6lL_!A_'7)~cYsW 6"Xhy6#pWkPHD(t 7i=UuIF4zfoFNo6_|\3 ҷq^XW ZKVජbjyi?{DG+n~\As3#0܋i[Q=:XMELN_CK1-0Z4gAU f rf\czHpA5z?^.mFucRn;*aVúWBDUVD%nVHL0[qj´_[J9Dd;wCDH$ZHBiA l>qEna˻i/uBz3.fTBW8@"nD3|ӎFEa^}-@;*XkE냌.xI+{=Iȥ*:Uj|?j~tC =|o̶&S+<`-0QT' Dsq>g\ ًYCp&e=ď3Z]KD$d /2A%^>5+SFBXj8c5ẁ7CK=/eӮem5Yt$%V\tK 3p21ppDkmfש'pų N6&=l0l\Oab>p2#eg%_y#zV+CbZ'*av"Z=歜4Bq2]g$AO6_4#z'VUJK2U_kh^Z@Ub4=~L̩ ~[=·YaS껈hu{e'9.64 r].ɕIs8=}c  u@쮤vWZ]@ $L1Uy./?;ϻSg c8(z^v;VQƹ,3UҀeqv0.B،,$+hdk w v3#}%s7YQNk9*梈p먄%kkH(i\Pd !nwpZMoĥR@5}et ng"T(^dj+3Թ>;IntG-'d k?Q%/A580sA('QӰ>, ץb D- j g;>x8aChʮ&;fa-aI]b#eJ gY yx Ah,y6mnO} W=~O|ѡPkN_.(p-ws^4H-<&Ϡ1Ht"lЅ,BwkBoFo_{Ƥ\!K#Jέ{.3Z_f5D%-ƜnCivP6 HD* ' =ڦ/W\flRښ[ؑ5ѿ/U MS1yʏkŕnE(<,fO%_X \R?wvD?w43=n; Kؒ -Phu^+ڎ)kA^oB$Ef 91$ ɽ7<Ⲍ:H?55mΩƱ-]Ǹ[AEJZ ":v^R+?VA뫲\yv`_IPfzmN]\m6 H{(RL'4`GH{RUfRFَMMlkd};Mwۺ}}_>~|ZWkyPV1lQýҤ^{(^f{ L^Sބ >zlxiw ;ƿ(ƌ1 2͌}e,EB&"-,e+JI%!%YYf1<9usw4lMB(%I9\/rirmsd_flӎiU&gHzc}؋h-z3fB:@ibLa +2AT|ˁ -(T")8:mJw zL`آ FCZ +#k2 Q PZ.*RaQ <k\֗}3x|[J, N|#pElj]}⣴>x\"z lQ8RNO$Wrh1q|뛓GqllZ9nZnOWϞH~P6j}` (=GlzǺ:!k(,HTr˦n[Ak'?v+Ț:ֲQ57F\?$t.[TRAo6g^(D !bTH!N92 o|3 lЭ^&Jfn*RTXAA( C uFiz<5[۽MحW;x&%9%55Uѯ[9(˅\+*<}E04(5B:l c#n"!w|ߛ}ٙٱ+fyS-^Є{;x[ IR{ DpR~67; ɃzŽȾ{?T\PptfƢaw`+g5dI\xf*$5W8>FQ$2J 6 ? W@Hs-Qv?|sC'ĥnq:|Meiƶ{#=Ш748a@(3ƦS}ˍ['cu¬] ǺۧRic6;ic[bzmƘn(x*N#HͺJ_[VS"֯bs1Y˩G?d*GL+ZS*GڠȆiabj՛*6=3s&3N{ffK:iL4Ƙ%j  nhUDYdAvx,xd_T\hIH1_T%Z$X%W~B`oPF\/[1Y6e5g=vHl=#U!U, TA~|oWC?.TEEȕqmp3x~cryTZ(vWPN*2pc7yB!+#m+C'>> }nêFi"CWSwN-0Υꉤ р΅LN.P09 A쯵|U|E ZQS?un%AAZFFEsʬOB `o%gYdgR2v4=Y9%Cg,ob 8_a*E]9DѦoizUi߇׸t@0:dShguL6x}ZiיM>l)mf^<#"bfNzY҃:ƌFm٤{:/=zga 5^OwXŇwp?kN AԿ-?ɹăcwy))6ehiBL՘00'^Q"ۧ_,k5c'n=}Rg.Ͱ޵Z!ҍI'݌ytl^;3#ԯ]j4 V"1DQ+RS#n;귒 8φHm}Q\@.Ϣj[qX:\i7جf'huxL&?'9@F}^ڊ_ۈNoƦѩrm;؟S攲ՄViV]i~`GB(yaH>#H=[4mӋ'cyy?4Fz,*/*Ι݉Ќ8hv'L[ZDҌ#5Se5bSl5ԫ v^(]wUӸ A }-®DT^Axn9Q/jLcy^)$fBk} ֮cuAV6K*j3ٞt1ulkpjbAP% Wڳ"Vq茶Զ4gx?mojѢ}8)=Z 8}>j@:F Ǭjm=Kl]:JE ^1E"{Њv­/Ӻ2NwyW!#4|Hx RX>r Tgf ӢjM{Wy}abm="3ѽc1P5J_.s~Z)x3f׹QQ R R^Zڟ&};\Sx==v`7߈{ N)0vۻ2> 8dz'N@$*zjBF*FC]QfX= Fۛ1kȼZVKq 9uƝ"qsA83.c׏N9؄P 3whzKL$J,rw잃3GCG"nG3Is,OoG۽ʁiv!hZQo1q~{Rwi9~iH1<11~#5N ܆wCqa^q&Dä<ґ+ {610o!-p}_?۞Rc\LD>H91 v0]e]h%b5Y7񠔕 ;ZJm5ȼ[鶢%d**iC YG!A|DC~~q{w(hnȂbj@Cd]>TbgU}gǮ}H'3|nW":?Me J\{ d @NUY RajZcLz `k-- ,HlR6q׉ivLL619if(Z[N Կ)=s 02[,XFlO0M z{\G/;7*jc*xK`@Mb}`W~$b:N`ʹo.>GLԦwm =  PR}Ki+ޢ@ܤVzGC]x♃>v%-3DrdNѵudGA|Jh7߄"%\] g.i㡁 !%l#؛w| |}) ȑB$i$5|J$ְ15 ܟ?v?h%h`ߞ pwPw b 94&e_8To]v\P_>F#\'ǃrfjӱ[?ܝp–lܦ\E暯;~FsN ,d8QXEp yhmksGDky="WRd-?k٠K+˟em6ǚ8\ł,"A4B~б{ eڙ)Jhx=Gˤ@a: a"/ .j櫳Ky̋,o!!o]񼯹6#󛴖 M-%nRO RW-O}q 'a76݇rԽYhsfJSbUZD;~}B-+ׇ;˱NCO/"k=Q5$lRWA:.)KZ#W7<^]ߝ|W@ = a#9;~up MlZ[]2TR_YT,9Y#Y+{(k608^צt]%h$ۨc; y%lvjG҆h>9aHmY=Mvo@.0} 6A w]qm_).4_39MfjMej)nwŕEQ67̅J\rc P"AwD)O3]G{}2c}2J[}ڸ5=)l ʫt-u&rL̙YxdAI8E~m"} =R:T``,̒꘵P%=Fq,q'ڜ)%RAι\*^(I5FP4}gEO`UCBBk\]RZ+<s,̏uK-=LIL2Oleιe_X𵁊GbZI@a ,-^Ձ5\dw(3t)nQ 9&'[l#F1&c䔤)!PZdob@isY6F?VnG#mr |q4 GHI._+!v9;PVfTF*۳k.l(幠^%?3MhӔ=8Ԍl>Tn3ҏ?`9.13-nLW{*ҫ4IRqug`NYҏ`#K}Vi_ ^~U"p*(_+&1᫃E#䤛CU ?V:.>ҭ33]>:8x=7;¡[UI̍|/1)0 @0k@wwjGpNqU:.S֚g\:pG2<03Ɍ6ۊ)oAzG5܇5ġ E˱ھ4_)sƮdFU=r4OJT ovEx9>[S/ яaBm }79:U Uvy eGed3 C+o }[k9БS-ږlq:(;`6zW:*-V$nb-cMJwJjW}# X$/ uUp9VmhnXj"\,qSggJFw<ao.U!䑢\75} 7y3ITR '] >mkݸdE76DՕk}!%thb D Ȁ;ga$B^nv]מI+Ԅk_EEa}(? +uiKMiҗy+[P.pRoeݓ +B$^1) a"Q)9P=􋀖00Tu=5=pCqi">I1S@:6<]׉},#@.U̢sEN?Z܉;et$r7'`d.W:gjMjlT&A_F O2vu?ݕvsv6d2hl1qc`(4Q"6ĖĊ(B@AE@L$g? 7Շ軧E?2zZ]QPb,1 GKҀ̏ z︾R@E~ErVFrI ,!F\+%s")dĤ 9%˶LNC tyoB^nJN}dZݑ<ߜ-ijf9N;H֖;DqčPkU heP۝#0~`UwQXY!?*x#1*&o|wwzqol҆U;mb!Ig)uEfI^suyOfj~q{ko|G\tG{pHb 0uprm2Om2J1uk88v"#?B5}0 ?DŽ<:ch</ RY ; Xcdoj!g".)I)9l Qt!2}.>b]hbjI_iGyz0w /cezmI20ڎR:}9FҐ6MȠI|>2On'$HX<43YV| ZӏEs[u9Zmdt{Ӈ9T}Ni,nR^@dr2[`sq3<(dA alO<[㴬`/#7wMCh?@Ku&xoOq3`y;,Z՗]*䰾h 5?t,y Ɛ>jx,,[NULZXfe&9/ Nuy8Nv*+3O%>X?&@ݕіq>Yv(~|01쫢XfdQOi؋|8&2_ 6┝(6!d蘫?etf.,Ҳr%5MDAee3M+rWD@DW0DD@qS׼9|{?T]صʨԯᔹ)N9kQKHXj8f5yeZRneph}'2kegcM+yى^l+xDya!] ݫoemi 0p驑?'0VJ#ۮ9z !F\YZ.zv؜:HC^\ nũ}s`Aק/v1}ҟh.c}*xo{ p"ZGPɳқc~\930wK}*x`F#TdPr͕)FYP@ΒIfگs‚;ؽvt]#_M A1{+mC<똕cRh<٫NuiT@ɽՏ]/Ĥ.F_T;*;T&='S/. p,@.^_Y %gZzsK<̾YP4xwƹj2büXئ yB.%=iwVb_@7-c̐h}=IL{K 4ԕ ъCi#U<(S6Vh8%ͫ3ش/,f_Imz֏hU9v15ސ WFAp^nz7 _H6ވnpNj<csn|Z~RRQ |Z.ַx_6/}F97SϖU 腄wdP _bjwfEi#O(Qn+%tBc6ޙeTrLjdrXԡU5]He: Y֡X]kq* pބ;+@ o4|6e ag 詐2s& eebO?1qHR}cf繁+㜬yn뇄lT|;FO?w (E@[Iq)BFwYġ %:n:0!X*Nтfw!Oͯ~7|EȻm:Pnى5<̲!C#Σdl~G٥;4vO`l1)1 Abʱ[?Ey==ɇl[MZ/{^N:]*J޹ `7MpMO,OI9{.{ f"-'9eT}f]-7di,qn0Y@(9^< IG)Bn3(G}{۹UcG*=[IA#QnUM'SBhd@#{f^3\~<5aY饖ϸԭ~˕.l}&bT}^{FC+X0!CP#M.#廦O扐KcSAa> ;m]!4pSs?4,?ۺW׿HFEL/ yV]Q:|$dΰ ,=LT}0'%k%#ۆ1$#tZ xZ_/Sn5!%'x([7LJ0iz:S&tb;e4M4wD n Ȫ(*Q3fqTEv0* dS̛|N9=skTM>@+O6 .zUS#4ͷơ9NX}lI~]gWM,?i8 mAC"f6 8IDOCpεB>;OڄBF6ɱ!3,c%I{3|b4 kw-Fš̶0?όĪ;/,)Txo35cUWGtWrC6.ðaYky˷81u bXCD伦H9熑)IiTZLkMG~}XcBCʘٿ…_2=UҸ>ѳO]#=ߜ5Zu_cHETܰNt4hDMY[s_VY  л;jF]B',5<.7fEMOL܏VFr届Xz@7x֘l}4/! l}xCjT mG>^T#_B|G%×8fk[@GT:L=+Я;&wǗdoS /K|S.Я6Rluddю |XA(EV;I[T_S>C"6fbtczelf,8 *_S+ n7K7&L޶L2bFVS,#5)[AdM[7i[Cb_!ݳL,kyCa]'!~֏;Q{SUtmo'>Lsup}Y3;Xl0b"6;Qa6q?H JY1$9JVv8QE Q@FMtW.A_4Ee#%~TE,jzzyHC?z ,=-"n`wr.eh4 $yWp9)tc~g@iRp]'-*,o[S#Χ^4 . uuJ&7L܀ _f]F?p/r"T;dm|Te8[2c G`$m!y#-2|rܽ(W :ZNO4\W' 8Emyasf R<9'BJ0㈛GJ&Ѳڢc3m0 7 .G˒j\ى=љ}^}ߝ@</TPK*^n Ǡ'/$(#3o-O|nJKؿ.p-gEg=._C6q'":FՖ#?9T+\C[d&Gtͷg[w7+a-gһU8RK>a}J . &u{nwsi9ꡦ+ۓ8C;2qh13p:A5]ӭ=)왵1p]įu .=1?94=rb:Z[Uv6Aޡ>Z ɳV=g^uh|*)aP],)Uòdm)ksCTт 219".{OL.H(e1=~"Ř\p%TcCMW_diߙHOt7X^$#@DLBדzJ/E]U%Bށޡ`_WU]4lε9 _ٗd{% eԝ е7do{{vQg:ztuA hHfB$BTHBIt!`ٝw>=ﺐŵ?T`wS16ԐaF]GEɵv!t*a󎈮&tj8"{WC(v+rs, qs G(&Ɨ٨-gmמ V (9&q[`hH靡4Tm] #@P,rukg*i)7K7fUӴIčy$WI, )e1HvQGzM 1I@MzeϽ`=IhUERQXMq`nq@7:._|׫8tK:  g鵶ִyES\Xy:e4lJm\k`,B 7gZaWkcް0RaT^P,jXE/K/wrJZCԾ(;u`HA XRn7'h4?97A1!?eG!lLָ)wIA96+8g(.E/#okpO1w&!xeeFW}߷ǩE:io*iA1vI)+利ѪKU.w, %%E]tϢ2d}_2Yr̲Gu>I+0*yA #UeKMJE~%1Wqou3`-t_NMstG?ʸ3KNyeԒ]fk9iH,e''8E? 7PE'6!iezG 3.ǴBf,d-m̘ sN6{ Z!c_uT]y!5*iҨ=!fKު3)\oWY֤WܴM G\H݂ɨQcPv5<ԞOJ%.%"\ !re=_i~u3ˁo2sPsLnI )|IbmVZaz8)%܎ H.` +1 a'H1!ފWs [GgnЯOΎ1_<(WxVg9#2go?RZ`a*t Hw(74oPWC.Wށ;C$)=nǰ =%7!ºG9ATc@JgDTK؝#E(9_@ȍ=9UYlvdR_nYα G9nMן4MUC;HMHEfkGxhn'wwO+%{z>9b\h.(TZf^'ZK{`WvYLoL0țޠ/e܆"Po(i yrC]Ҵ`.1E]~lRyNۨiL-ߝ<:Xmw~lLP4=̰FNA7I~`BWQwpS ~QuKOR:=M0r)[g8mpY>v.%Uz1wq- 1`BX|{pw%ѐ2RkIX<02r֯.ɛώ}VU?;a-_[>TQFtZȿ(_|fBG}6nOKr}v-m XȈBëVz^ʾy#f]IDχ^@zYgצ|bL'UZ56Ѓ} [vg]ׇYՀpLpcڼ0~;{de&HL 61EI**O{]=S*4 if7~ܟ9g9>T ߜM wΆZ,Zfo3  uQ=^{*|M3Lo11Y+Q0ZeӥӚwLcqjPEl )n 6i#m :k-̾!'4Ԗ o䨖T*'mx J'۾#V#n 61Ҷ5Oiq`4 ٟmDeKa9Lu/WBZ> Q x;v9i@ڱC,Jm=v'qiȚHYO{-SpT13eG1^\DW^MTFU@ 2ޓ-:H l#C<(^);seW<-U@E#sgSI{1eokMǛޫA9&@8O+&]"M9ȸq˧Uye芤?_|SJcK̏UuꞜO|M*o{cl6̒ /:3hdv0-pdONҙw;?!Kf.&ic"iQ؟ 4% tjzFgpӷBu]?o:N( 9vlǕ֤y0ka%:BmL&01&2mSM22GگDU:}x%FΌ ?Bkl<%fLd(f-^F| VEF= : !{"b9/s6+@Y' XHU2P?dm_A/tW,ܹXXd<1HS$gs <>舎3/gv-3L؄\ׇ:H}Q51kC\6!NmDU?w 2(i2wh3-3cÄ;} fGaG uMR@8w8+nPaybCteJS 9psN=byNr!#G:"nPscss_lI>OAIosb+Fl"]~hXAW%ҧ4%d&^le^Kྲྀruۜ}N]hbkiLkx5jyO[s) BN;9 |ϯNүOY؉YR F5n5'PR(h/2L[}y{yhd7zj71{t|x`=qfx!Jpwmk)}<ZD@'J^%R)S!| 8k? 98*鏙d/.ظ+_Q (r@=z^^_LO31[r^18xţ@"ӜUB~8QYJN@LǪۘ6[ "o[2 8nl-:`d 6zSBP(+&vKlY Iv+p.oc$ԔYFJDw|/>O*8{>nC,kׇ0cҲ6A[ Oa<8Tqh ?+8Eļ[2sigbz-p"|&ukZԴqyi՗'2FQ`ܦY ɂ'm7fY[of5!);#:%euJE W Y#ӴքIDHٕ²F5ifMDo}:^ck/9x8=Ix[:mRmLطv=G3k)dY{;x6\YGjAo#=%]JFCHjʋfF?9e̅@szfk.c=ZMů~2և-_X49 v YvCU2:qoxɥƇCUsڿ2{J+Offz{tҝIXݝ61.QKDT (a]b6;ĉPPvd5 r8K:S/Q|3MiNu%T5Ԝt &ciwLRQL`K?^ Ê `!˜voS_ do:v~-&gCAY_vY@?4_'WN0f?~0Y 3wqI36zj痒+S~Y[[?LYFEjK@V%$&첶c@ $Mu@!eWa23! Kp/.D&;GN{*2v wkmzN=rJ),]~:Xiy5Џ.` IXzYy{nF>H%=F@f\70F[5yQ۩=5Oڙ_DfW!QiUJAf;9 uݡ'iI< d91 w)W^\8q1[KX{_W>)Y7!e[ =:>$*Z.ª:[IMZ`FSFCuc{T,n. Ndr5{=72V5dU}tЧ-Y+ț0܇((;!0E<J æ!A901V:7䌬7\6Sw3ޟ-k s,-) t7\dSxI&b4쪸x&k׋0Xl^Bβ_XC*|_;YYRpO/*R>TMJ+SAIY5g+{$%SLJ<01d;ѴK݋, x95 k~BVYv_u}օY! "T= ؞ԅ~e^:% K+^e&%k FiC bAI]۟P5 W%~C#9A~:/X'Ɉ]А\f_I溺Rj180\ 5T.q?+ܧc^^㞅"ؓAUt]gweu)yF(j<U?_E=n5YbB&mw/j⋜+󌋘KQqwrnE,֢da>` zo@!Ask~klt)T5q؝3gqgvGwamx7B7$*U9 {#@hy}ᆵku匑RsqIu|A@3: 1K5yeQ7 ܭ/qyv|률}+c3əU.P첰 WFDW+ct$:5Ou_LA9ba걊I!˹%tE ]yר<bA5>r#slpq6Sv$w=\aK:v)]ӝWr&EɌ]2ºQf"#†Xu9! viz┋KUƟnp74>ćg^dTz]C\-`72dmS |[fA^鞷Vy$[t5ka%lz6-ld PgԣsMgFyRʉkdI#F=ywy7.ig[ɩW": Fu޴n9u#zpZ0g"ٖXw IPG@w#f4D^) m^eDjzcROoȐB|1Ě:\+|rL)i!ƣenhwC ̍ zR2v#vO~}tx< *+UA->h4?N;`2.+nNwHh+a=>ъ[9 =g0!c!"ygKA%x!jLk-)+ I ˀZX%>ZD4d~E{XԤm;u*Oy!#-+֜u gۢшf hPz~YJ7bu"d&n>v_ t qɧ>}u y{G*rccf01Ɩ _Gl*)7ǭ\LBicd`|',|Hj,ʷt8_4k}&uDLCa%M.E,Bv;2(Y3'F+8u`A9;w l$(S+~ƅ{kЋvXBLhSZ'*z֟MLJ87GQqԱ (vH@rޛf!!Vqj$BC lFW=|9Us:֦,(uoeP0r++o|iA{f3̇‹\l@-w *{ w`'g(%^%:$b$4$(!f9G/ʤ %'MBywGļh}`_\ڑx煽[ -1u9\ UIː^Ochz#ěC˜~L-i[~%eoG\%'hԊXYp_C D` jHk-s  YIpa=\b2. Xq `dmv^6_`gK&@o+eyFu|܂2VF;F5pkN?hBp\3n{y1O^ܴdՌ{fRzۦ m=rXnYZM`Tf}YF\vglm@-­i31q%jYu!_aa6>v-<(M94VY8XXxMI/ =~۪1?BRHH҉(NU05h_8yG; ym9WY)G3K,ÝCrҋHOxvokx!LKٳsRsS&/@^kk\K*%uɞpyI)گP\r1xgiwv}+_x ^D# CB(@-mFƽ{SA^*Ǘ Ts:#6dW&ySføߪؒWks$t+o/ˏ*1Qhz}$`fYy̥ݼ=K-ԘGtE<7hd~w9;L9N4`]N)YnbCܷ8X/k,rSa97?Gz>}mpuNRub}U!~vkqwnod(-78V\|4J*R}l|EsOuC"zU+?-ܙaa2+VΥƭK[oFJMȦ,t{O3p:HWnK꤉XKVgP?dVD'J:(b׵IjEF/nN KO&{u?4@e,)HJV=.I putR|_uэQ=MۄG(w>MAE.J[Һ$ȹ}P 9g\\d ̌E-qr.Xד00۶e#ef .Ǜ;[8;$[DW_>M*P,O٭a-{\JYY"ifZXƵhWH蘀᦬eZ [ʠPvE,HAoWMݚeTQl@ݕw^q`u︐rH.P!JXزt0S8iKI bvpGd_Q<(κMW~RP/ w1*u/h?m 3'Iu߶);\fzi@4jut[Ưj[W}YE]7W]Q&~>q[?tiS5F\& ; !!V^N]7ΌpJBJB`0!tV"hWv/;YbV .y[Xq+9JNIIUu9-++.-r+Uele!S\Vr8UX5sʒR&0STs_ zm9)"KjgU=_dj{9NAeP:b pue"&6u0PWo Υbn%{]ZasJ* 'gIS2rvan eaWUrYKdl/hwt@ݛ=iH:>e{ fߣ{>'/*-8 XߦJ/i/v)&VyccUϧļ䂔^֓YC%l1D3V4t={.WM]:_JIvF2dKIbdn/)v$S#:j@skc&dnmkN>c=ږ[XrܢWh6&OafIz ȚHEY/jVg# k3aOq!WgWua]}4|lȦφ|L/&hVQ0̜[AL2jU_TT'V2,L%Mniμ]lp9;BL-cQrE?B݇+̵Yt csF|zsNKcm;ez$8%0ļ4v'I|bbo C%|#OٶHxLaIyL/$7ݙT/k(ڜ>ݥ鱳oEً""`[yyÑ~icl*'CVm*)n~-sam? 66;Ř$=ĢHs#7&ۋsG6yPgg'?g=Hp=腙ku?^m5 sa.>/^6(e5ٰMCL nA:9&%2˙^PW'nWW}KA85/R5?:3.=شT@A,Iap#[6tآ#::qmڄ$HyG$nDz1Z5effpuR6d66jϯ;n|unnfCAGۈR1ig|'8Y d$%{Nگ"hG~Eѕ*{>ɹ9Auk@7?vj I߸v=H-0/ٻz ?X|^9IFi\ޒ ț^_^1L Źc"qf#VAL7ϯ | g#&9TIrc,rLmsDD+ܞ+~>w|}auZrwܻsHڽ_>?S[Ư;䪛ۉ'w7c` `XH!/ص'n28.t ٴM!܋oy=EiIqJZ!2c3 7,taZ"f)Zºwk'VA::v`5{ofw EaQ']%,= S`-հuI2/3#]%خ*;8obVVߡ~YWiEv~Jp{3r,F.ϲ/#k;dRBA xhOE<&1ءFÆaVR R;*&2a]b"-ZX&ƃzȥ7?>4yG>V$ܓZ-hTBn-f8g1dHK,鰁2QqbV|wkLd|JrJ>_92-6ܠZ6QRq08da'\xԩGaг[}km\ΫcaгbH[ ۉ>sZXuÇ|5@7EQJPqǰø=#nL}9?-k~h9VW4w󋲶9IS+o5hX{?3m8xx@v`eUQ .cxtSG`ѭ#!l/C:YyU9صY̧c~xo+_Pw~xj+{v_3/O~/Ɵ5E:20(J~X=鞪}^ߝfy Oq 'ȺClz2ҩq"q!61բY ̒)zk)Q5Avt@k{o cMu/ζ3h  [PV`i DmV#a3N7#5SE۹VDCqTi-1SGYU~>gq!O|aU^7߆ޜqv*/=KvA[ D/sV࣪O=~ZY43}pvӔKʛ@urd6') c)奬Ow\́:2h _$.sĜwzQuoP~MjF?-p0+xy$9Y7?9 y鹞/yU1Zz6DxrFx.9_Dy)џ֟6~zFqy}W CVhbV B˦Nlq9WypYyY aW- zӐY`O=Tvkabda628RF2zYUC׬~Ao:qֶCK ʒU|DXH;J|t;&4 ' 9 Y褴O}3@d`VհkZRي+~a*|qrIlr1 sn}r~Xw^Ud@Q#NY `܀={g)s1gVG q'>tV̈z+8]~G}ŕ"t\#<l DTXi"dkZ8n5u\Y,n}Z ӳ.͇(В,GK/nK=joBz(ܚ[> k9[4^{RYx"9JaŽ 7f%TS擄WTqU3dGbJyX_n iX?}XXϖ~~ACߙ= ;x:MOop?@\-?CzffY!bæ,kW-'j~8"GCKi `#Q\h4p8Cs-6hgJEx^tT>|$>M{M1.3NcqC6-"`-bҸeFFy8 tς|6z9Gݣ&f3_v\.f"8GpIKDhiU';ԴA}B=ixk!@˺}7mȒRҤ*&1 LXƝ}T؊ Q6j7rS7Yi36JKkc!e6 z^ m&X1@4M+~v!O]y>ws vg1_B5V+lv6a{0Uv.ggJG R򭮡FِIjJQ#>9zF:24x55tU  Qv zK2lh)AƯmzE_Lc;"d,"߷~̆,Lj:LZ3'@Mwu{J ^} uF%sN5՜ bA_iMM?j֫c}F ۓ`>DW}9(.߈+ t[genߣ-4p[%_̶~N y}-EQ}2e+j> {*HQJ/Ө15H]ճIHû配Xaqc|3~`EcMSҁ9rk>xzfcG)bXcFI[?KZ)գsu %?k9@$qNI޿(n}ލO.ȷpnxžnl|!bPy"޾QZqhx 'i:6K'P92iX];/4}bFr i5zU;R 2H!BkZ[H9lkPyCβ`T RvbJqǨfp x o^Zx21^&@9KzpE-rKh=2x/}{t m.K+"!S3#~1t zIbZ+0&>u"p&vĐ]۵Ӹfg 46=?/sj endstream endobj 25 0 obj <>stream HSyu6U$%5kf&wq4&N (r=M1qf" 5A.M7M7l>Py-nIiBqE]ɯl/zMI%ٙ{f{耦'Sy~ Y\|˅=(C{o:><4Q e\'!Ibb j-^y7*1vi!IloUR3q@nU4mO?4^X!6 ԿTZYBŢAGܤ.ca)~{Tc$Lt|gc!,0 .wa)hV0Q@RI aҀ$c~ɀW5hlKGm0C0ȋaRxZuߢQ+XMY&aw1w~xR \s)@Nc\PVId\ڠ`3s?ɢ(lBoV/q9B$ a@vmwEv9 tԢ6;Qw280XO:ƭH ̟0ot3iLJ&L:Z!}ۺ[Ziu$s%ccKunaJ|!Yޫ+K?ξ}|ވq(bt{I*˿T]g+B~H4Ka]oX3㳞!r56zo:q|:,+bIVgc>xW3]#60FKm({_ ddL?BMПO;zhOҳ\H/Os"DIn*º~6>D盄hcW%.u2QO|ZE]4(Z9\|'6v%RX&dtnEs(#}w*/v0K5HaS c-f8ⲫЍn-2Cԕg]UA͔EIGg&拞%*jhiqd]>N1-tX"ǜf~~S:rzO&ꙅR̍xPBsIHDۅ{S},[omE}>mpAz?4rzh1n;* .Q9N,8\BS1tM:ᲀt&SK ը]un쩆Pk$M+S{~dc!c10IT!e+mI zUAO!]/GіV^_:urs&log0/cv0uz?GCqFBaJ%k<v&nI$Ao4Ygʘ"pwvՍs$E1/Dnq6EqXzI9Lv~iʤBAy"R?Χ74}W̹,e1J\?B+l rg6}8UP6 j]r.͘g[EA3o+Vnm"[SqUqr#=2iQ3i+0 9t[;dwOŅo[Ub9>ZvD:N/9/dԍVOV}2!!r4iZRuy7Nwz=ֶ6:cbS˛S}Kk_1ۚ!*K!o5"qA;FqHM94U-S9TV̻X`b&nSO}[/$rxD5SS۳ӬBnGg:ٸNRZ<{:Ie[~Ffkz{]z"FgMg]He[}[0ە8j-Z!e">.nST6ѩچ}㈛i /Σ]_y!wVؤ-V]-u n5凍3"'6&fW"gԍqa]!WJxOO3@ZP͌SO2n>2Ng M[!Ii!4`YeYڕ,Kc˲iOIK?Ah4_}s("F6@Ӫ̥f^ЂĐ~H02T69~iøz s_+ti;4⮑86n_y [r;yhz:Eq*Yش!z ukO&9/B4 JøPzJ`^ݎp6ZyRi,prh;%2a;DLbi2[;mಎSZ:V"/JXEi\HE_@v|#q|m ,E煽U8ڦ IrjO^:U_X0cOmxZ!n@*D=xt~L 6a'SR:pOGu qQ{h/AFNRa\n y`?b7ƚ{xvtO 7V')a ZR .Fb&8's`7Jt{닿yS.搩V5ܴ  탹x=Ki?5MtW1_mrΡmMC߹{MDoy:qW&&Q}mR*j柫l3a2Щձ9º>x1B䘔(aʡN | >hPQ6Th/.eW٩"h0(5ÂV|R,[8f-'=ܗD;tlr3ž`vU"DzmLW߭k,dw@Dڃt\ ?+pnq9 3E Zv4I(?JcFӁ]X3*%_[±6L ^ <^>jWB-/#E-jri ށbhA)F+ଚHY/*ki稐i3\RK8N:)uOR^K bgW=Kn.XΡUå5`1֨j٥oCC b\0]0WU_F>V$٦qvCy'T䱜-8'XE`+iGw0v&9wיߊY7ҢzLq9(bsA6xuiΑ5̶<*Djtiw͘V+AC$:)傑v)DvDY_МQXD bS.IlQ!V;b`]G΂W/չe⟗ #y0ac8G[ مVGE8O9o+Є[bY G-W-:4&2-!O֡q73%1vtI .#2T9 !W5P]>}v$9)owBfWiw4ϺOۨZ/ӏ<6)BU\CBeQ.ja n٤uB^:ֈۡۢz:H2Dy3M8"Ro$L1ˢz.֛?N}ZHMҺ MB>͹~:s( |5a@;!׬}u8DٌF' a9.ӯ&4o8sLge{DY$a = !60ݶxU%RvHRI%%<*zIڇL3pqgif:W|SgQ-.6 3wi}A[&1HyՔ6-4?)mϜl7,CuLwn<c nՓQ65e*6##<><%gȓ15ĆÖƍg6L#ÓU~M\Bjat'_x|`s3W]5GoӘyy4S bTD4@m| C}*֋80OO` -\ M[䪮L"ڧK.˫RN䂦z)j1â,hz$ѵe6"d@ |Ώ)$ܗtiZ(Qtmޙ}9ro>eSzMՔrڤ&x#~O<ҴƒX)8dag3n}I&̠}?S @CuIrih$jB~? WU 6>~MkދK9e5ԪA<\ 麲9Spe35Y9?QE9[:$SՐ r5b`#2'#-lHۑ(鰾̻y|]2Y-$}7V%jIJ>n4J鰪5}u+YAY;r5ez&΃4&)4t1~}` `oL̪{Y H`Z&eZ 6`3N>Q(-E1"M /.ƌ"##h˝E+L^՚#kprY Ch:YDŽs,؟V4 Y򘏛Qyl$'k{A]K'ᲮuK,*9r"ה GI$]hXႦSQj酴#L| >ql{1yޏII\υ_{/ltH*QFVN KALT̲2( fDv^H/&[o/e7`be_קڝ8v+aIx%L:h5 sYշ)+>('uw~Q|^ѷ)g\@rnUc g³KԊvާl؛シbzqk)pTW$ r^ (75v̟(tMS݉3tw4fD% o>Y-IY:hb(*DE}y[bfzkUޫ{Y穙>,&'Y%P2»,>]жQckRS҄,qO=Lo,6-eA%%l3ŇJ<Qt`VĀ 1rR*pEǣG6#0OAm'Ƨ7Z&zFWE+g^T37ns)۩?ZjHnЊsC5޳oM&l[IZLsa32cp4!+T#55*1 3P59C3tukl[aԿ=fw`rv_E/t͑]r\g /2.;e/^Q / K虶)r)1ȶ [ $;{n< `UO1q@ŭw)s-St-a-N9#_7Z ?Us.tf^cou Fe|:@+t*IB7 o3 I(>!NT _ډn)53,*X@Ϗ=D4*:x r!&<4K7e2bۨJzbt]W|̱ <Ư|J,< ^0n1 G`ڤ/\mM@9>%TŝnSU<_z:O6xݮNl?S +|딂m]_s˛s2FCDIMvGwQ(/cËbr\܃*> FiiQlQvLS;qOP &j~=`O\`S{dW@{ 9ǣO4zt]A a kIrOUģ6\p3)9E3P}Ww7\x|~P>P< =CߏCU_0 ~W2*zF&Ty$|lrZ&q$X|xrY7Fz=D%XO̓5Vg_n2GZɉJ}^˛*xwS f?-8Ex1fkKMXkh{#=8 |>c,4Gr]HCD-.+J/ S5g& ~Ttm z&A<1 $-0a5 $Z$m5KDx[gg\0e}(ddž0%ćOK6d@FXѮYrKFAa93(͐MNE8a~>Í}{8Ϯ5:+C1$Ԋ3@+<5lOzJ'Pww>`|9P`\F#e٧d5i{:;70qx 2bc?JDh*e].!lD'>ׅvsViJ7#]]uսP7%͏?dmM蒍U.27G[{Y}Upm܋ 2W:>r,3M);؈P}}WFrbvl,Xy5GS7SKE?XkC=si߶iYcclZ-lC 5_t{}kTk1swMOwW- Ѿ*$o QnYS鱆K>䒂k*aBF U8&"$hQ9V.gUa ]0d{ yƛKB C=M׏Շ 7ShDqqlk,kw̶UhI#Wս5W Äɖ7SE)8Hm7YGoׄG J[uXC/Ky.R첶EyUY\wRQК3mFY'Qq=).wD=y1fCa4 X:" R"D*KAV"e YC4 fyϜ_x\|nM3@H>ű?W[eMȘq@"NǩtKv@3e1'kE2Әk}.uC3ܔ/ Kf=D]aV'8=چZ<3x𝾟c( <0r$sii½nb4LR^/"xZhZ3^Zd, bxUxؖF&f ӑiB{pG>v)c~mυ,p6S #f&hc*GHY`TuS2HӖPRNX1/e䍂2NPixW5?ڐކwٞ'Z<q2N?:ȧJ?B| ^Q]`Yh)5˹v*k zd"vgW_1§s9>Dp ZI RbIߚrM"7_qi` UDEQR.B0.O0'v3hjJ}iCϧq>~*+b89ߴ1OI=nZSÆ ", yjGEv iNژ2v4B3ҁz#&!fN)t\o|T_?]íUnGpfK2FT/d(+m+̘an7U=跏g|OC? ӎsjłZ~{C?FCfQF~Sv}W<™ q8Xh- zidC8N$xC|(D*Lq#ag rs0=Te*4Yx6Nw_k:*A._0s95Bޜy4 Y{:08W<jA|lř'A1{RRܷkL) A_b4܂E6`^T\-5 B}eԃBS"͎|^jӂyAMe4%w,e-[V?F 8!`LegYqK,,7XÑlR=\H9FɾG"i$d4\ՒQ |n8hMs QۍLm7%#MY24FY}l`ORepZ4FVyLVSIf܄qZiJ}q6A0KK"tD/]_a| DԈO4IQx9[jߑXـrHu`M@hMݙYA֟m ~r7 l #kަweu V:c<*V+`EYN4!^Prsα?M=~}% mŁKz5Oj†w0Pi;NM]u Ee8&l;/)MoI_4stЌrV+h%LABII0|R.iYۨ!wu!XW]=70(`w{K\/PS<]/y4gN)k( }NʘiWsK+[#)v5-uٖqzxśQ䤕䫃QrH-'?DYmFA<  >S %)VrK gRw|:F}:C-FƻmdYm5f=C>_aa\jVd{VdLBS=9z3YO~R}7?Rb4Fϣfyv&\XY3䔵nD -](yK2os%va t n!.x[d!5C9\(t&F8gߜnk%3"*oңE~c{W*NοuBLDـ?c% C{+ HUm()O%ڎ >TgY5Fq?+imn (!JU/dhl-1+0""stxw:B`';_%WMpo ƥ)Z*7)F8):)jo lU^T?nՍZxt2̾4PN91zbj.Q@աm0'Frmb;f*2>UFKPNumI]v;aoՍ 3wBNd中g{RR:{ 9QnOVe9-2QsSgWANgD?]n?7!|ck'{oF'F) 1WCKma\Ot.2 nv_3D}?HJh$}:Y _?4B٧9{͹g4do*V)ܮ ==_ Q[dМeZk\#PL_C3gΜ[>Q+bjwS?&[Doè&gTѠ]DS_=3a}>uI^kK^pŽ\`hD7B&:l'.USkYpJ:nOϩi||8єi!m!MFhZtSE5GEz?QIgu~9䝥Æ.Z lw0 5F]FEli&4y:|O Df^xw16k^g[ Q*V:z_J'\d `>;ҷo611QBpl".!/3\L'5W(N̚3pk] \ıR;Ӓ;aogʮHFX1H/zwud+O9Ce{f.@زP [C+y zA j_y?;'>j'"]q3@}2ap 7Y~[9~}"lNWdc%|C -gK'?>e@Ekg1,b[ V ;jrjVsd H-Zib{WIO,!7^ īcf!|UxR^ -Diǧ[[[KW"KL\@˩=!lTܑ#ﻔt&T9>=GE>҈Rp8z]v Q %``^hjZaYc ;] yI: "f$AfI5;:.}U!%*Rv1 Bc`Uٟ{ӭ;V#>ّ7?r+[!eZYZ3PKڄ,ѫ!u#8 DW6ŢC mڕ?rOW{hX-`bņg ܏.Yا"SrJOfYiz0 %+27*}9rݓt_,EĠMHw^OsΖ y2qCFzGI.0njZwz4 (šnOp0.\ƥ8'W/mݝc410{cV@j))tHqlƩQB=Q6+oYEU-bԳA3uTBbG ,ag@wS55 'G ͐(tniw4-- fxeVIM0Ǔ4e-(H">L{%j\ETxjYޘ0CKan[ Q?t3u@9%&kgq%T[0s꘹k!ѧk+iEe$%&IhYNEs{8sQ]scrfsMw.nlXĝi"[e ˯,o?l־<[a㾁g >Jwv8)U{; )Q[dFL蘑=f~%DCGu@Ń_u{U6 &ЯQC-o1

ͧnJ:Ao=^9p1RiN?SN- /l[t<&*fەt7ĢP(j|TI=`f״{tB6hnhGZj5u =lJfxs|&lK IB}8>AK%ts!Ibg)oWAX{DAƱFx0-ٛʙ91@}UF"y Rͥ5 =;Yn|d噸-w$@H䬍7asǣ>ιY8>KK/DԼΊ5i[G>kpgEdVFpKsˢE%Vw%^ *vCHEc,kl%6W0hea<]Ykf% U"1(/=~i*^4SWk훊5YnHL?ѽU oU~Yq:,9j{Ѫd)EQZh%J!-li{_m;oʞ P_ȽZ0_OQ1uIHE 9eKW\_`r=Xp jGmy'K"aIH:_Wl>l5I6:z1aMB1/+0?CS{^b;`AFje{նr9)LI.R є`X` 2>w纬*hc-?[wDÄ[iΒףu問DypF ި")Lh0X/G;+4ñ5Ǭv) ?AZ>|7aՎjME@uqޮBl,B942RhaJ4=mg{^bG.*k- `+HyI <glagov61U$Mq&=n[nk,g_4o6?ĴYQ~RPE+r<[ ӭK,B 96RQFpkq\>ԍ I{8S 7DUaY1,=C3 x m@;9[[\7(k [_;B;~w-geP6J,eEQqKBC\y P}=A5 w`0)`}W5 J p-}G=Z˨|؋D bi:9dwf23nG㏢rjvn`jYs͡z5FHʇ&a , 3p %L5=ЯK죉ʰ>h +8D93ܠ^f5(NKKpR=W{Ps4;K p3MWpg"9鿩ia9sJwZ%'QO@f8?[Cؚ[s{4nS&zWeY3?.ܔކ>FjN%lA'HpGO$ttnd ܡ|yaBJiѻF5N&'S={*Ҽ;kL@j p-Mm{àAlX8t c;H" AaPvBt/9IX&_85' 'WFI {J{/ t7cBhá.J8癗 a =* !|ސ/@,E_O8Du$ "@sCw=cN:fNZt~Z7UW أO@ؤTD$]>Pp@\s몯kGZ[zKiAӉ Ni0[(f%ֳG$ofE?-18 oƭ]v̡_B;Awahخiy}Xz4HJ~ c4„TN¸TicME>ө]N_/+.ϩio^9kV%aVߕjfFr=j,*Ubܱl㑐v@<%*P%.IScW)}gN7@&elNwNJJƤ<~,U[Kȹ ӳ@ICw"v#WWEmYwbSп,_sr:'ilGw/:Ê2%Uo3jqQ -6ѳ@ *+-+%„M%ygLK_ktևR|69+u]?2h߻"ǐ8f?n^Ca)<)"zg0A96ݝI9\X?f|r(lJY2Ghd>xA^?s46";}eͥ9w؟-:o{zyQ?xWc~}G߲<GdzړQŁ82>Nu^CHDM_%96wf6}p8]:ɩC?);W?>4SmL)]ysٜڜ7*%de迻, 9箜kG}C#=G: Ț?ڵCP26wOoh5;q{M6|`cfҜKD9ĵm%7ah,>Ph 1K0UI2jhϷ3712:氎 Jp?(M;[%8\*$vwݦB4/+Xhi<ђ!wYJ.g.r/kA^EdʌOi=[cDˑi ȋ({䢒s.g75PPi;ř*yfԹ]rSH8 yڕݜjMnZOLjA~m9dG9ylFf!sVDuXUC^ۜ85Q)쑰^)/NB^"kW9JF愑Ԝ^w(Y;,,W-g`v4Do9Zt_FŲGH:DRPɇW3 Jµp8MZsT BETAx _҈y7M#A0>šlh ,d)?GqHFBĭJ@ogja\K% @-XʺpBpڃp0EtC`nlLɯZ8\'>5_tq; vX)&Փq0k!µWc_z샂Wsq's.)e}zl?ӯ_[KU^2Olr@M6DOj~^IWa27tj`~W!@\ I1#C׋xҥ|J%_ ґ%h'=O>DxSC ȹZ%{h)m3ۿ6LgwI퐇> Ɏ5Vv_aCG=6FD;6򳴙NwZD?\F䒱sfJGƀqjD9!]eݜ/{%W%쒓5Rf̣z*{R9qlႃ5Z; p'. qwNުovgNcw&8 yc/A2"3ƊnpU[3lPL/| Uک=ywPaӉtC W,\-HB\Fo#d.#`SL }C-}1-p㙙K]U5yi{$] }hV(d3UP";)ao񫰞{q9՝xMuM舘w?3U @POV1:c srDMZy ?ud` ώt訬 ν'YlJ=Y΃zX"tm-_fr`'#֜Gʜ+_fvBaN骸hEӔy3i3!OXssѕ\SOy*W}{;m.i`4塀V{jr{Ĥ,"f`{-6]x1\3E"BHiF ڐzAP{7Mi9P3Z;;:&ݢ#JLMՓq3ն [3Oϟ1`$$x8tz~ݚ {AIAԾAHS"f[|T*GMRa'}>+Ƹg9K1A# TDJiY!t19W{ TcZh\Wt]CۡRZ .!G4bDxJ0CCM! aIC< j+ؽlÃYyT13BsFhب,y5z|VS:\}HjIM13!ysQ"V%`\`Fz]B\\iѿ 6h(e&9#*}W^!>8>Vak"۴OM[}靉ɔcV{'{?/{|*nPI#䌜lRj61/cs3;|Z%Y`V"dɒ /Y Y#2T#6׹Hӏ2鴕MN`^R_9=Zs,&NLFGA?p5I-iN^=>XAW}&O9d3QNq3RTp z8Z%<ER tM*J8c$}!%AAm8wjw4b8Ⱥ>ҽuqHwҹc=w0#>y}EbPxT5GORY,fg-BO{hF\ؠ)hk¶KFi㥄>p'IJ!?a5T>9wO/G4Nbe"Rz. GIwZNݷ+CO.&!i‚{ IC]8bJ.3ؿC$:@#)33p0'v/^=5?+{μ;RNq IhSEAXLlCxYm*|l[Y:2j*aeTdhch1b/|yӰz~Eϵ}5}|vEZ R.zrѧlcBI#UTkBoGbk:sݩ΋NY?\oŠԴו'Wbj@t[@Jx¼OTʬKO!.n' $x0Xv )O?E4ƢXg|-(:ż2 pd /':rZSq!01y4A}Q-i`-"׃Mm vSDuNJda1,'_7ͧ YxR8e2F!oFt栖50{NLd':eڡ SV܋IuI -IoC0[@*u9&m0x }=ߠONLeۗ ed!?f@=dglr&3$hYKxTb%DA$URDQA"*bD@"M9OϗsqC5LCB^v[،דP6VW1P]RTl Z/7M>ԧV1,7{6( ?[!Ԛx%ŽԒjlK] ֿtQkmT < 6*O%'׫kYT_< Zn~a 5u։4xކ[9b{kLfH1/"Dj{zTc{ ^ Q#pwInigmu pw1-ы5lX©\ج;udSkY3|S  ~63T4\[,9E#~E Okzn!IuTi }\ wqxS()ܹYzcq*%|"dZqrFce5ݹEx7LZ핑q+^Wq!K3땷dEօ$d]>Y#U빬ah2|kC_WWv6b gH)zXB2 McSƄ9EN_"[mnjyV tD3uFTpYն H]s /"Zҳ bSL*p,bئr>P<``Sb.3AǍ},s@-Q0p{#c>m?˫d@*J< $9 GUwզzAOv O j pRnQ &Vͩq.,|= $T)1Ň"DzMCV0? ,51 \1*Ex^%zf]B*rkg{qit]RG؟LS~ܟmO=ώWь, :MBU>8횼{R G]?Ds._6fN4$JX1 i}~D8eoݒ5'*nݣfZ{'+,2&-]X&]u_nH0o_dĪ;:)ϯ4;̮ÎuVGeAYA2{1C EFARR ! I(!H%@hz<{;/~o9{Ϲ>oJ)?}N+~c̝cձΜol݅oINj\Fæ^K<6SQ;RdJwe}[׺;niiu֡Ĉ_WA#`ߘ61AKtEʬuO;{N3+;U"e IF:8i.l{Qe7:h=7>q/Ot+P\)/7C9u}dmD,`)o:ӋKUͬ#a7TB6hG:꣍K ~ 7OEGe˝y:7_{f#>ĥzm- pJCXsYx|Oɩ(y!mrcGƀoMM%Ѷ%W57Ղ91*lႀV|~sY-+ ©I,!rD▜2p~lRNY;I.pm{aզV&W kc}2Nîshyb}|lploIv5nUk[ʨ<54PA͕kK.)󦄜pPn).9}c^")Q#<%2!,\$=g6Zzˮϵ_=Vwק`K+3UE|? nh98Ry7lV:_ZV[g4b-:1@n8qi26$Q 5!iؖ3"_I)ˈ|\G}\/"o:Q]FH-L^BO孍Tډ hӼfkXW|4Ȯ_eo4[:┴%w e;ȇ{*BWi ۀidq|ŇWy>q}45KXxAU~-ŧf7 7g%x)󼊞?j"stٲxeW\+.L=YdQRT;Ӓ[|KC?ht}oSCF-z~*_¤m _qQ~eyXxU{uj~}l4b); b; &mM2CMwwm99w-&ѭ:&e!슆S]Ü7Bλ$k+i~2I_Ȩ%)'f%P Kѩ]bk~5%B,⎚Z3{w :p6v~mkF3n:uO# ]EW_"]}aQkZ}% ~hyOS-t䢐͵\rb_l<d@MC~h|zĥJ|17VLD4V汥I`iLZ.H̦81,8;M<ޛb@A6ɘUW@.B$;>eC_y+G8@hy3M5 ,~c 8vȣ<O{1;k4^X!;RTFPKdZ[a9l*%6hXǕԚCЛ|j*]s˥Iyh{@UHM8<[qm[Jxu0㸤MSpO59&-|jʣX q30PNkJ3(Nj=MHGUFq$t )uF\}cITЊ2rZve578nWNtm yfMOwLend=/eV7)ӘjI,AWĚ ( U)JS&s{ɽgi]]Kݶ (rsj^ [N^><}3 jYD/ tCoNP쟢嫅+WWJNOێ7tn)yg9)yAi?c ;Q:lʶ9ry5L؀-- ϓ+# )Pw#4رŝ|ƣ(`f <0oa{{n9ɎZcNӞ:7U;p%1s fI}`>):P#<%>0ưYc;Q =Уw<M5tw\.lbm*JMڵo|oC>`fyVY}򺜘mx5V`SصR/t@o{jS>ҋh)61xw]eb`!KvW$ǡ)VBEDy&O}ӴY3#L<>T{+8-Yh l2n͂]cu욹w{έ@ŗA_:؂h厑ƻXW; u~&>9=D5@CƩqeyRPuKY PI1;{o;/l}JvmH/oQJ\# 9Wؙ" δBAB+@:L^]l ֎t+DK~~%gHqjQ`^&Vٸ--w[1&#zH5;z9"64ҍ RKAȈ5YASP lOM-# 5Rx>[N(N W0ح <?!֐A>2Ot]Ao?Y#?52*l W5t:)I Yڅ9Z]Vs}₆[qNK_U= @Sd2r ~\xOqy5}qsZq,z*j*\! @{@!do$2 !$d0NٓQ9yra#1Iq~c3HQ1vjg5K Ұ1 z7aPFF7AU[[p/~lmJalߍid$6O/9jg}ffmD܌ %VG<#gϭS }f2߲Ruͦ1EF]p[], ZgM:] Ix_bvi4M.J?1a-WKrTG/t-`*R<=3D ,҉/J)Lεgd]2XZHz{M|HΜɸ]841Qs;s v\*]6M_f2EXtwcZrULh8doIkoX+Nó ƻENM~x`]=АĪTՐ*TU/$5jOƝ|RVJ}NkCh}62lI{UKwQ';yD{/-p~j2-@hjZMCm0djz65|;K۝C,O$$çXG\|s1y4AC}jOhYWW:RRqA^t)+:63I78ơ'Sd"{~턙dgNiUX>9E|1}ʫJ&Pkܚ_wUz=` !Am>1 [TlK(YS+UKc:&ss*v2;U`55^*y ts&$.HKkn͵gǑi =_&ꐖ 1o| <[SpC#(t8.ƠytTO~[EZAq# FC~ڢ"b`7*3?t5Ot Ga %$y\D'xTy$Cƈ K\QU4/'lK1KP"oX!C͏St9N`YdI־{Si2(I|t d>WjկVF-\lW$1׷eS6蟙 3w6$-N1r1A#(e{5v* [& PJJwy즩&>B~V^,1%P /- GQ(NTȦm♐YқߞEe/@kқ!% ֹTdCnsץ}bU\դMq*iUlA`WtL s~R3ݑ6%kFaU(,ȹcN2Ԍ_iH jdJXNpϨuԉ=4Hn C<@jȺ.-h˃1Lwm/vFdWJjDwS 5Ez-ޫĕL\8V21j6:2#|tK4:w@{MiA5"7hp>|,8ܜ 4@?f񝻛MKbr13XAA@{Pc4;6ETU@@3+/η}kC )3Tz4l8 BʨQ1h࡭/UwKax['4|gRƤl4‚jQuhAf$hn: ;r̂bE*d}7Ji ,5#$= ,|4obov/_ړWx̚GzA!dP7R:Q]OQ s9#76KoME߰sk򏴐eAt,q/BStT[Fu L,S(XڸW bI;sg\T&VUy}k]/~ΫUv4Ow๶IT[I*X_Yip[|H+ s! P֧ȫSK `7Zxmʵ-@"j";:=Hq\cY x #ZjtIrv '9N{4.Ti` E]:r6a_=Qw2*!&ȉ==Z[&UƨEt<2FΰN3N%j]"ר :ݽU '8-lI[1O7KEX<^pT*kq˜WGw;ؑϩ"V:s-7ӥf\\d[iaJLoC"9HnN9Ms#ŧa۫"¾sƯv蹙OXȐCo1Zd*A]4" ?xyهz1Ǵd? sW[޴Þʠ ~%"\C]t SV'k?eBW4[!VX`wا` e;tPpw"W xDmZq^5 ./@׆Qi>!IcY?k2r ίg Z:ݧ[ OiVc!S7!Owq9'"SG%9u(tVpmt Bymٺho{C&6bIhGrۣy4H3-q/_qֳ$h>q z/?eQϿy"g7PJ%?dS%8"ʼcl{=E{,Sz=ƅLNtIr)1#2,aqZNMsW]4>>K+ُʽᢀְy 9NѝI:y9!fɄwҾ=yi$fUk:2FLT4q@2eo8pcT ŁJPI{{z}Ϗ&kB(OLR_\לs[tR~of~[l;4Nc-ߥ8qK]fdH ?L˽}8.tVdtm}-kҢ痜#|34X5Owkn -k`b`7hzP.e* 0<|d!{mp8 .x4յ: &I#,TQH,pb>V>:Q_ߟ]Z¥Vte}iTWA+V~bg#`}B½ ;Zhȍ!kvTYZr|?mݸW28 g;2fxWrvg{:SY/E%UaÅܷA -GLPMl6h֒X'}XCՂ;;Sbļ}5 a:85Z{Iٞ൲̛6&tZ3= L=]ӉM;12;uhg1T~b$Cns:d=zg[h&EEi>:.sV6uCe &x]l, 71Ѯ .+.l\"vhN>X\n%C =ë8VjԔ]d>A]7:')z2+*@ziCm`r(ISĴ}`UPֆh9 QYh $wulO͂ɱq[ c=zjz iF%'CKugl[,!%Hi!EJnOᏝJ $0u1~@zԆ6tcPB%wW͝w,]~c-{22׎KZ&g]x6m^ݿ7%rɑUΏȎga Y.HIloptIܻ=e T&\5C%˥Ԭj, e޴ RDK]3z*䳡uY*;6p9AjWnc%l}'$E5uoɰ~ԇ!t"е)oBbBb.\k)N56eONtin9X;6')35ŧFN@Nskq\I`L}J1;LcjA?vZuOU gIAH ݚfVLj)Gf&ڡ 4I<xma0!Pͧz=+-#_͆s[ ШѪg6 ]myU@YFOcd-n3G Bijqcil@i$^!sNV5J`EZɰ%ˊc3:ޙU"'Z[*<-"Z1*ㆱ0`:9p[Y5'=1{D8R~c #N Ou<'.ӌ1<ïd+3Jʂ-Ȩ~d6kϹ,jtoUoF4wsOpfb~_+g(p:MOՖYdB|"oݵh: oO{wkcU,YvE܋|KuM,yA5!+Z#=:]A9g'bTlONI(L_WWE_7+xAgl})X^ -Oh|WF蘨ob Cc!!yȊ:D|7X TR/3->pݟ$g^γ*4yfi֬ǥ/HĶ&(+o3_}O-9cW[= m%d=vғY: "4Ch(T=&'+4>|AgC \fvǐ+@?ĭ-z >̳pGz&[eK巁כrzuu8 l y_U.4EJ+0IRڮubh|K:xe3Xg= yy*F̪f0g:MlE|e0k/WjV !kO,ۙnT~ shJ\y&qZޛA5RnU(掊ƢpWffK.UFu]%zlcuE e >| ,u0۴zgB!8uBT=zgR/[NZ}I%d{h9b#K'\^2<. Q|,d[d"և{Jb;_߄' 1FƜy:l2Hܛ;4mb冻QC=I eA+=xZQ ̳rUt(`Yk%iQ3푞'aj>_Ⳝzf}*Xm9-RqKlAJ̵[iw 7Ʃ+mAG|2l(ޭbAvhHR!dtJzڏOwYqʬ:Г3(M} QR?%sa!ʆxw-/{Q|jBG" հeg_+UKr|*JպHz` #S=uuMÀ; [ǼP0ȁ)yr&lhXk`h9&4\8Xʘ,S}An2KVh$J d^dZ&:{PV>9P`eҁ));ʚ-7-9]:>iS r4+I{JV"b }M,gޏ VmXPE>˭9~䏷DP*#r.Pd,?ً v) $V !^׏TDܯ:e&p"#{SvcjF9kY`*y:j,qceߘoBM9nҢL2^ntmd(Mʑs ٜ}c EI6EE!|]ANq@F[ {&ܕap}qxRw$LtRN$c1Vlр6 E@/E:vcEAETD, &"(v[sy$n ` hSrU,WC{ vs0' &3HrbLL…[,n'諊92jFTUČ3[C˱aQݛ瓷uuE`Qr`j ,J꽓8OͰu44"BU;2jzx  .aWEAR•A݄:qYEJIL6c").sG7&X5'.~fi;T};!w6xw|Qb^ڥ?zVF]1=>H}q?ӊ& ʧ{hUīr &7iσ_{@FlȑOMyGJ\yyݧCF)PVh>e}&|<$޲ujX ZQ}$q2b|qgUuhH``@Ciy.ȅ̇^m{MR ׆HqZኂ5F̊ Iױ\:ZbxutܑY(8'&>TOLcHt,i-{`?{qF:BUfl'FҚuE &_$EVF8Y͂lrp^Tg=NyC&YCX{«a1`GS[*ߙg`<ښ P1[#Ԍ)1"TJLQyU+[/~!(~oGOoh#gK.Y~ [a~ox=Jk>N+@lh4}N) G+=QJz}5nbʳ}U*V]qaJ;%ZF%*$cCa>2* K̜>U9H)\b`_wbOYG`v;PFqþ.Le 5ǵ:L~h݇gZ .n;LQ"8Y@G1 n*q,bǽUG.{Rv_E S;NV$;OW_M4 "AUН En(~9nU=rG˭iy.lp-$H4H<_ca+1&,?0qkXruⴤ{m -d" 撗>ߛ72]*B T&`Z M5wTt!IzɁf5%ٞ$eutĉf /;DM+"əM=]IqJw Z8gkݸWNEUKsf*MK)۟iy#{+9M۞& #/z}$D@_CL1VqV5 v٢],[ w?1{]!"Y*X+<ȃ3?1I~[`5MM?K?Jĕtw#o'ị]-ik~ozՃK vܭk־r\q:TWiۖi6 {x|SuU]]&d*<=mܗ-3~3 $wT 8T]0 הnawNfgOffKh8ia_z 7'Wϳ*Vn_'&IIH1-="#)9rK4,^yۘ9@&>.QJw*$(팥9].9Z VV瞙P9G֘}=ӎ\C/A_^!j'b{69fG7iU3mE㐪pH.+v7ҨZﻟDzUqLzjN!TFH.6rZOV6*@8rpV.ek;g:)ozTbդZӞ,'CF1 r &u]sn_SO/l T&'"vP'${ټguį@w|Tw)!e{վ:vB¡u0̬փeN訞yBYm #y:s=*B_Gݷp%6N^ƧMQ<e{F@LUVtZN,Mrx{}&̭Lhx>5&d~Y%VذX:C[P+h1 ;虧Uli;z $FX 4>P<֫ZH9s?4"dJDI.7ޘg'5lYr$jeL\<&pM1-h)JBQ`6"!9lt׬5zk)9x+o{dT^ė5 ȅ~^Ly$DP7ߢ:7'洞=՞ޚ!E#@rhg⦮ͩ[n}JF]!Y2)Q 3l1 [AdF`{ CogUw[&B*|1qDdU+lMgS Щ1X}emj}OdU +o~Ofwx1PrQG=!$aEFzq[~dsxY >O-aBDjHE[ehZ1nY "2<֯eMC\":fm&g)vhq6Qxfm'@ƴl\Yr*Їzxg}{?{D=]|aj5y:į` 6JYN'^1OR4gs2佘@Dy7%&l<򮑃`!{pQEA-; à vCAqWXVp*f$A6z3ϴΜX=9.;aXO.2k"z:,{EhZ hx؄~ v1ǧavlo]D-`Sn iŞ\g3,įVB/p zᶒ qҊm4Y幔Z 1˷0-j!B@grKE-&BGA/2i~FNOJmLa2i$!!&` ^cVx_ cczI毙HG::syVX@jS}T&#rjn H(mX@d_^1I''geH엒( eՐx8V-AfRI8ƙo-̅??R%0;^Ӧ;]j)u \)[PP:xǕ?q~Nr U\ǻS̟+Av9ݢr(O[xȽ$7/;;fb$=k¨y}.eݓC1.ݮ`iI豞{A75'Ivkfob~d%sP+tɍшȖj~1`=;ɷj~F\LMظ҃7>n@jNLL!f~P/ k:w,!~Lx{Qp}^bťDubo2qx0}Zj#"Rjv7IOV?ݞv$|w~$`SyۂDZf* G]{a1Ed>B~.2Rn$_Op'fƢFK8ȺV)v>-:z M `qK2 A܂CzYثc̬a~=^%׊u+O6~w:AO'Ts7;#qyaY+niD" 0FfC,i.3fv I'5ZRɻcՐ^佌~ԇ{!8[qpPs-+.]Bֲ=Vkұ:uuُ.h/,wRSp P; i:Asy '~D G/T~d/RR^'n%F\.Eq`6[9~vTUZ4zHCNVyVB8(59n7ݪ R}RE$,)U5/W)U݈\fe=8h &8!i/*ec^,4qic!/%󃟽Gg2=CZ%Y8fKY`ڙkU; 9OMRxYR)e3GjLFLa۲>T &ny 4;4 Qa!k=z5(/ GAMl;JfKN2t;{A3|j]]F~ k`Kyqq{ 7#RZ&/:ayLH"Z gmGFt⼙MIͰ?eav̤N:u츇=]qb8t kw%J}ku tF>t&_~M l=*,x]!MVg} O1N_#!?Hh[~7u5vz;qnd#FR5rASRޖ;Q>42UÌS,z[3Zl5*oE1M faWzv)2A=X ZP2~,`aU-լYO4|J+s'yhmC&t+FI[РQ?bS@-#a_&qA3di^C&<-c8.[AƃZ`V_t"A;&~[ιwbxwM~q^UqYhd4d} ғUnF?nq}7'ͼ,ΣF=KjɓyRӼTE Fs.vf|y"ݖ2": =fT/!> >8oS+1i'FJ$Wس.(z8xyO0H)3naϪU(j#}s(iXn׃N()n$ |J[iꄘX}t'/aMޜ='fdcW03΄3ƐĪpR$o`<2(dws$FNJO 2eюDubK=AP˼C:Zts/fqQon/S5I)(}]XS[--+~2S}>y?"=HiTu0MrD7fW}|en*>Ϊr~'"x\E)v2hu26 0SOׇ P|"ZH''r؝AFp)1c'r8N{}D&׼~"B&p --/_`G3Vmx*z&YVmK.ޣDXsw:  0%%J/.8&+khVIqo0`m壴{' $|RX^@ߛJ-{2u&hne\TK"ZR@+PjSػ%l'`q:HJ\Pd `r C/ihڿ=yOS+WeCTh 4]i3@3D  83VNZr M+ˤFADX㜈 k֭=/t}:3|3ZڎqFUJ#HZdEH|ʅ1$;<(z/ i qy(mo}"|]]j^;ΰKk(qU/!17JYjЂN4HϬru Ws Y8?~7z1a)kZCv_1_d5).Ci6eW:V -`2A;2aVGryW:G7Oun8zږK$gU)NscNӼW?"~׌P4;!bY.pa0rk#gI‡O{/L1te9(_m'{e>!zG}[#@V7؜ 3Úvws~ٛqψD HaͨF؈)D[ %J-L~LkĐ$ܖ,ץ4m/??}fCGfPrզT4f^Q^KEh~])N7QInd$ eVm`[PK?.tl.EBhҴQfC/U+',[j0Cex/2c-3̠3^" Y"-*FBʾ ff1syszs߷`[?UJO&_|G sl\9Z#( 'S[mA)9 &g6GMTN|mG;>c´h/h(V]9*7r]!;~ZTw%ޢd4_RMXxPʈ׋4.\w캭N[97xͮo*GÒ; k`?BCmPuχ2 Dlm 㬼uLUw>dFoc-zqRqP8!9տrJ uZ.P7;8 IʂP\XF|!ɥ(a}umuSޟ̸ql-FՐ~߸GdZK8>w g%\Ѭhw4!^ԕPkyBh2%_W.Ϫm@h^95L&{ @JXpl&F -ڐ:90ѕ Y rR(}uYf6g{;{[L1,#?nV`/BIi,/BJ(:cۿ;9nO/ښu9Ӻp2bZݷ57ā1/ֶo+A$R7 %2p\ @ &UZxR]3gխv<^.[ϹjKst/9}͋g+id|7i,d3K19Hפ2*6l{jwm"%_V?6s_$S:!VF?xLz R |Žױ.}O"!cV&}$a_EZ_~cYM" g1~ĿCn6ڬb,8t uYl"1ƾ6qCl_O+  r(=_AvV!\/C Sjј Ԋӽ)L!oe"eu-G }pUYJI EAP%\xCPUZ0|8Mkςl{c;=~3u+~axȞxV'J3!ʦz8ETT,$;@Dl5&(Dr87sں%mFw̬d"R RyF+'i G"Q PFTJ$ &Jơ}DmyKFhsyץoKk]z'І³Į>wx<#HަwD,$bh!*y _g>7.r|۪-uǽG< 6 3+g*Ȓş1c9X!aT6@}`=m`+4n痔- Ri\S-ŤSU{U?vM'vkY^=pIW-~mM^b{ ̑־UAeEXD yT3Yp NugPv32ܶCklVn&J'C  Fiy1]*wz^͆t77u+WI@sƴsHO_ KBSQ@[)L0BeK9t9ﮉG$gתZt$7e &/;qE ixMmmw&%'Q>j?56J fa0.Z q{xYZ?]6'p'XPlJ#*@YeJO)Bq@s'I/h]D) .Gi4($U4-Qu1) :`b{8k?筄;ɇ?$5ߦ[$\cNd}Bδ&\F?ȼഠfvFk!7qoK5 SPac?efOi$5q2L6Quob8PC<0wWW{c6o&ޥ?q  dld> qsuΝb걉 _r>˨i00fQjB+>%dV],2^eL؉MMo 19;2 {nKQHN㞒 ?Xp~?q~T ciG9U4Lax'\-`~=*9}7{P9$ZTAf>:u L T'nß1a^_aC:uNj,D$B3Hu&B3~'B]Ld.'dInO!CG6Ua=&1/}OQ%+ʴ/d W'D󃱹`ywo71yP9~- =׷];|`{P#8{Rz;:uLtMu9 80=&5솂O7;#fԥt"ePE* e0%eG4?ˁ5fkʂ6eSۆ=ats ^:1uo mσZqY07I#mvg7-QmOIpA0R0Ow}96 $։\gPEL8=lg q3y U:8D(Lx;}BNH͂e.ckS&1@z0 9|I|T}bg6huyCHJ:JRtr"r\O;qՒ 1Pb>%Խ93eƈ=p2PY~b6GĀeT0R+4pTU`N ;#ca5.c j|{-D-@Jo*sE4HbՔ `Cm- & ,hbR5·14:6Q](NG$0`7(Qyp [|`l'6b[ڄmmےZl;2vzX/?P!LXRtĺHM%9pΚi_]|¥̛  Ë3;yBKPS ERSg)s7ID )+=/=2irQt?@i %^8}kԣ">YS|k`\S.(e3+05Qgm;6}d/`CJԃQL|6꿅oSg - >'T\ ;`ߖA} o̽XvipN_ ?o/ ^Vm^u5H,S[%7^Ovʛ G*\O|7S 8o淄 4hvl9~ Y+3m$4É (0Xߵ9;~@v͢'VY jsG=teZO-thwJA30 AG{WlC/ؑC; /Jx%RKs|lP*|Y|P^VK] a_}qgVz5kY3l֜22fgLlNZdc!f}v 3v~oLtH~WϢFh@'x7SRk{G/C@XS➞K`4}5U]ŵc^TEH-Ao9T>y}so=-["֐yl/h\rnWBC.2K:]uTjh6$ WpeEMEQ̅JLscP"e AQ5j?rxsOt$'y3u]e>#GIǓ|]^hb@Rȹۖ .} Tǫ:[01 Q:tDlI˞*_l>6P1xҵ@s/J&Ao=[ ԼlGqOMV%*'󬒳y6T.<2,&ʢ?Gz7EzW΀oVD~l,`1Ҳp*n1L#oS\s-qU43d&w_A˼PSs/es %ժ% egS.D36לe6P[Q bl s-b!%0Oz_̽iQ 9e$-#lcMJ1aA{ S?%vⒸ"s }{-ގhO` poa[FKY|ïڲnDgYZ vuumX„IYpUlK5aUխaIf`M^#}P*J\Sr#m}Y:02ECL su/7Ҝj2̦x+ Z/If!-eCAUTp> ӷ#O'z,,~{cTBNfp[h, <#@G4-rJX-槢C0/0|64_38ukw6EnS-ZιV}o|7pdX0'd+E0|(ߟᒿ9%.#wcN4e֭g-ˆ_x̯F>F2c539vL2RĘ]9>B `']2W>P]`kmM&`,,CLUHеo=(͢4NE =|o!)ҡd;T}t(~|f8TOMXpOs RRTS|iUw վBzS⁼ΰJrm2\`hwOf즃^!~su6[3\+ &''|_jk9ܛ*1/gFAM?ߝ`qr:# u=:΁yBԦSFI#$La7FP,!.]uMh?%f._R6vFf|=PI٠+͈&UVp8]nB=p%.rb6v&Ω%- \&SVb}]Y)&!w$,%mSU q-/W`3#P g"MEMTB5H.*9r`m]]G+ 3]?&z)|v$!& n1Ge^,s8RNZrNנ$yk%ajkڂ4a]F⹖? <;հ gi:H1@EH4IzX^*UZ ߔ !V| go{ą:r +8$ #F 3v+;gi'AVAjl$EzϯbŘG=@9'uiGoHաHKt)&C=7{ruo9K-y$_0>j_AIuOuhk(Qw^='" nbv󃌃`Ce ; Sw<6 @ wy򺌇@7f(9PiB+=0O2lDeK "?ț@>腸}I%^zT^xiVa.k.+\&y 8^*ȪJkbWO\mɏȥ[)bPalm)L2?Rӝ=s\}lsNCcF9 pYJ 7M7x߶/쑴4>OL8S24@iw60a?ɫRw,SO,URhT/~ᾴ2S\x4Y亏Wڒpg;IA]ML;#ej~rKMWMR]FqIԮ#mw~&$2v]VR!\6{gjw9(s pa)zXc##M/n;%a'Rix-$S;1d6C܃{1}1@ l΍^{ 8Vo0?\OUs\(v}G7̈́I>hv_kd7$!j{C~L\fOܳ9J©{8/IRV lv\iI "$;J>K*>V/f{w!JiZnÄ1c\jHim$-GXaq|en#:Zlz$3QтzRc#mc^?M/qq@&p1>z~=?CrJMSDIcqʴ_6+ ϔIGMLYE,#Ş?ߴㅢy,xo `F\(*ct$BQγVWF27`qh{4Z2H>7$􃙲8 >x9Fs-8]?<s,틩k3'Av)zZ_v0Zlq7JVewe8|wqczPTaV fF1G{^l=7O0,@iD(E7;q6!Gi 5^Rne}-hkp'#I"}uE>%xG֍2ځ6 `|vlq4""1πn9k 0m[CdUUTJ»NFtߚ6RyDםjzE[Cwx A|]*,>fo8;@Vvn.UGޱH)%wLKUܩr> 9(LQCjyzRS-" V X#l$^#,AJ ԽĐ1n3.u"YIaJ\.g¾n57\7Nʓ@}Omb[.5=8틨i?j6)whE;ċݙ&>رJCe2~4Tͦ#"Ӎ$'oٯ*VE]N[_S}r@:WѠ%`=6[y%ةLN0~^3әKӪ.Zk)J5ZBEH",Җj{J!5A,$\|?<}nYV'%ioulG\f7t ::Xpw 5  º^S`m…Niyn%%f%؄ dSN{vxz*>K٣d:=\` 4t2rg-&g2rB~P!gj.<0Gu+Y:ͯ#f ".8 \O ]&Cx -g̡gW_Yk⤜{"6[M^kMV 4PJ>ha㱜Jk]'80H 'i8ӟw:GNOS]__5Qpu-8RŁwYE&zTTGM jxf6"!To[m,&9D @@e^k&t浱իd ^FƸ  q*еUtȉW;|ok}cO] 4D.?7[b/B21K:_[tKKFδ׆2St21&ܑj_|r$yghC9:L˿i\BB?;_^|$e~ 8}`#58j6~tb(;wǚ&:5@L14܋aVXddWKp1lOw+.S/@O:7ǚFuBnJu4:쯝憍qB"qy~]x^}>]$O#ͻS "] zw7 ܥ/8ǜ{+Ԫeju,>}7QttaE˄HH1.lUv5"{`k;_rb꾴6as:7pk Ȟ4ϖXw§bP.ʥ#7'H[6!k|Vm#'N%Ԣ׎V>`>%czo qH991HEy0oo!kS/66ZsD,MX!},]M6ޫ%:$UIgsY@ߟeQ!^ ߻A3׳{ڗŒJAJS/eڔVO3]S526[ۉe4M4wE+.(Ȧ B@@dGAB2o9UT} 8p\m|e]h|OZ:"dڗR  +su]|jGn[U9רe> m>Qb Z|Lp~@q57Ӄ1EQCےWE켭=䖓#7M̈M;ȧZ*& ObbA@ar*K A0Q'j lq{s;x=:M*ew_D5ondX]gjknN ki"Fo3Uߴ-40Em:!jp`VvgIO=B >ű/p+YHKB`ㄇՁeja:"4Uǵ Шy婱_1M9 εtFlbCA`1ź؜Q}?s$,{Cm3ǽJ.|T(C: )8/C"Xʉ0$(įԝ20^u'+E?q-nfWBb:,cE},9 z$%;ЙDezj( .cWewI1ؕErA,ݗ w+<`mmS'#g+n8WKm ,fڅyx%U 5_%e;nD&l|4*#gOt rX kG`y]C!le`UlE}RZ>`egk|jIlg ~,~EL,[E }C~gJGXk˵۞7𸵏s.mi_Z>pj~H}6/FfD5Y= HIe_v ^6&Πc DPtW /pB{vhwH&Fl#1cw#F)3c[\}mcyBcc*8x75zٷ~| W,rwOއ]-ێ?~p3fdtz3Xj藒*@e ~IcD &9;HåZC>!lHҮlR޽vq׳tgɝa;HY+ȟoDZ ]1ӫsYկs[ӮlMÚV8FQ#˧sUsJoAyGТoNϟg<ʘ[3͞^@ȝb>|NYɤqSd=QȞ]7ƞV*ˠ\.ˡeC›f>Y&PȥsQǤoMV$U$Z/[7ЩfPڶsiڻ{{ˮjLh>ή|ϭuaԮjPӭjNX-̫aAŢ_6ɤc>ٶsb\)àe@׹ypұnZϨeFřW,P!NʣoNղxʦqVQǞh?ѫoTѫeCߺn^׳tgӲufͬqVĤqTԺoKg6kAZ2̣iNײ{tҳpMi=Ҳ{pҳta^4ǣb?ʧgHѯqX׵qZܽ{|عf>ʧeDݿxuүmRӫlMϩe@ΧhBѭoSϱʭnA`+״thȅ۾zնukڽywӶpbԸsjعxuط_1yKͬkV|z~׻tsͮfM̯mTѶyqػ~۽ԷwnԹraΨoRعѳέ}iϫlIҫe?Чd<ˠd>Ѧb>ɟ[/ΥjHر}oʣi>^*H=ő])ٮu`ݸsfѭfFӱyhάsȤwVR j5<Ȝa=ήn£bƢyUƝuO˜g:\+ș]-ˡ]7ǡgIß}\g¢jơxUŜl=ěj=W-S*ő^-ʕ`/Ța0h6Ƣx[ͫzcˣiA].n?m7ĕM'׵p[ȪrTǤqKϪybΪs[Z&ş[-ǠY-M%ɡY4׳qZг{mnAuWЭΪ|iʦe=ַoYΫkJ^,Y7˥mSĠtNb$ʣrOӯua˥f@ɣb6JGțZ5Эw`sJV+bFխzgț`1{Gp= FHǠhCͫv]]-Y1زsaͦ^7Ho@c6q@Y'ίyeh:sIZ+ѬylֳymضxlѬlS_=ƪhHǭrWͰe? 1 endstream endobj 26 0 obj <>stream H[nٝٙmm6Lm*320SM4 FDT>ӲvfXy} 4Ⱥ*^!*xMDB # 0ja #O.o{"IfKx,0> `Ylͨ1;fvO&| ;ж v*1hs ~'&f:̯=LZYc 3:3뽽A RtVt誐 YtELl;b&$ef"?ZY2 b ,%6u^sLA/)f*r|ޤS&"i$uk-Iם5FFxPj֘uJ%ex`8))u>9Ư-9bb?9'A>r@I{'%>ؗ*䈢 Vly_+_+ 'ۓzU7F[T 09TQp >8tmOr1fdÓv)Q!;%~vQfo 5QcoWPÁf CB)ߖ0kwy>eW؏0 _>K*V8ț=ndB3k\G5Մ?jʱ\9ځ#/Cދ/,XTń? NQQ-**Gq65fqy1[͌U]NՌô ( (*@JJ,7mG]؄@@!=S5V_~u#xBulv 3?Px7t92i\?矸^3f`zqE./zFnK[9W4| v1!asq5QP^pIQ=b|T#gMFbבwǫ0cƭ~o]f+M))8Xݧ]\z2$B(yQ „{xYcuI=6Xq]؝e5bOĪ݁ZVBq@&;I­_:8J@];.zGDI7}U'AUtČEDJŸ-;|(ab q y`.S)Q+5:?PkQq}y.Hu#ʾa| lmRJ SkGjҝ/Vx~>)9=SZ5ɣ._ɡU2E97:L.[ gl̻)>e _+:Н[i%=:>àڙ!TM^{u)2s諏28jdt 9,hڞvWY S9%c{w.E={&u)y);Œ[1ge-Qvs*n=Y?XU*P&ݞ%6.JAXr;oɗbJʣVg2x$Uŀj+D쟃?3IiiMo8X6BҪ ۚ|[}z^wJZF'ץ3m&ͲOD9 JʯʅY/L7 PO ՞|2erN9t%u,\z! //{~Ug-# O2v$mE@@&&b\я~?aMøIՊ;7GnGܻFQwh]z?P#֢6 9@XZ -*n6{s.(`J$mѯ_ =ǟ]x>:9-,ਞ)(S6y'mHL>@~hSdLtއsQ؝IuI鮿G1/$ Sέk^&=2NxR8EBmT{>k%#  e[u憮\ j$6| mCgzD}2:??>5&R3&WZ^Kƌ0˾qͮ}ksTiv)Ҋi¦2j 1:x~,8y_6a8qK̓*9=yP+eoW8o j%?^Kn` QqƪΒ4$-)x@NšOv'Qp[J&a֭R68? >Dz'/B2`gte̎=#5ad4WᣰeyG>%`~*\5'ܮ_w5>_9.6+_uzՙ^481x8  "$@ ҧO+`pm0/hEB .OŹw<ϏwI@9Uۑ*>)j6-H7C;!KY]Q#~%iW&V&}?k!|1ePqvA!ؽ_ccGҚ%QF̘ƅYh69*?e_MtDFLCؓ< 1`3q^L7L)ҳZF@ϑ1 YG>xK%CeL)`TCEu_ȗCjzC}3K 2[7jڝxK:㠪1U9* meփ& =UsCWԛH >U$XaBab*f&Lڍ^Zs%0L=ҕ<<3Epo$ zn[,@ڡcySoEݣ̪t'ys9GCf܌k͉0/^2W7{%'V q. ]rn dy^\Gn؛!ֻxk؏R9RaZ6  ff{VGk˃l{D=Gw!gͯEs lTDl໮󇛪{fnE1 y$ ~ ̠ϙ'ZyG%0Dq٫K> !"VPmDQ-rKvQ)9-sz#g#z惼 "FWx[yXI{z>3RR7x-g tsS<2f+ ՘*;Q -ԜRsM vߓ.GutT&=cUj2ibSm[&gngr5%mVZ tV6g;?[4! 7zN&8eC/L? m2jln*zGYR"'d"ѺL6e7H%Wؒkl1<* 9!"nF{LO԰pEߓA,nt!'5κ9?>ßKã/>)ږRUKฑB/lTDrX?boiA+ aG`d_㐳g~W˨%'h nL)A؂Cؗ0cZw^@#<Ya%u h`iNzca[RAhI*$ ̖|+mp1= *:2;7^Es!9!2yĨI6bQZd Be4 -`2:2B͒}V| c+{ sWYCi})x^nXLByTt*UB6{zQOҩgݏ%I+@{pF] AY#kQAGN舃9RZpz3kU%3j]؝_Yh-y+9c&t 9:.:'5t,dJ'쎫0tg[;ڲ1E=,z]{,-3{YQ{~ߋ%ʑ,کI= SYjj]YGw\gt=FW$& I\8HB! IPpt't.?i*<I1 UN\;ĝtUpp0'k:yk0DfNI.e,žא =̭}J) fƭO)Q FNwGM!Z5}6MɅ אfQ}u9Y W__?ߒJCB进_0YSN *[sc7}h/9$C3fW} *%!odV|=B~Bpi΂` 1D]إSAxd];[̢W->X[H "l,IZq)h9w/H[2.5i?"\쒜KZ.)%(o$kL9TPMA O2o^C5yDL8uGؓ0馗$c&}ZrK6)` 0q}/Hg}?5} xwjؘ]/ZPA ͈+aD:X6gIm|z{-jp9kY7蓾thՎCs1fjP#8:K*M4|145Um3n,=% 4 S Rcȱ9=RCCFٞYWߋӸUH^f|:m!!JfҭgPc|V!hn?~ d` wbfA fgSE5_De؂>\}x&XqQGEK|^֎[]SPE=Wq{h1A]Z IJ+VgG{p$6 Lx_K{Mr@';IFQКr(E* =7{~QpTp7~K* ( ʸIܴ3/1 קNQ~Lع#K:Y k&)GЯQ0'2.h˹XQsCaXӛqu9|ϭYDE Yz&\4O}ᖐ6f9fV #nM՝vL d6(iL:$i+뚿WN }N %Tܮ`VY{tAۓDN2 &1[R@Y)X ZvQS aע֖먩d`,d<49ZyS 0A4)7,Dz(6NTk_=>A&ҶUXq jM|QPK{2H9_ڿ1Vq(DgG>O]vih$ZJzo^y+o/MjO!ôiլ\b$ޘpYy]{$8Ӝ]bO=D>z|->R|zBOܣFsQgeiJi[h _swStB*QX/Ü[5SqynY#/}{ͼ{)BMEIIFIprs#,o)?5]0 ᶘOeVꄑ[Eɵﲈ R˃èS mYekSP&6];K.ߘG.^_QvY嫣W7Q(5,5rigfS\&Lm]gvLȮ jA-:dd5,州|r+%IDJ{UA#aFƌG+L[}lwG̢n iWW=oXmQӐaqf5l'U\,V"%P%(]TӞ٘\#VI%5*B7]sf"hɥ塂f!*朼Q؂]H~ɫa}g0'Jr]֏Wamu\'^mOĪQtB9?f &K٤:&ιƢ6hл(qD^u`FaS0z,cN;+,QKu̮/8%GI;K[!=ahͺD`'2Vl {lҏ#iS>׃~>s X#je pp}q*a pC[Sqt_%{b  -s?Og [e$uJzYy*,bdק%-s&n8DžXKH%wY݅dQޣ"GM-o(aa5u2ЍieI+ |'eX_hK۔ :[T{fU$%>ݶg!-x; ^{n7F  +{u>.-*>PK+R |bFnSM:IG)ψ,l G*Zip^_gMr@O{H&)=I$ 3i_y׍h&nf=JRpˈVzXpBļ[[eCQ{t̤[ f/18"QK3q+Y7Hgtf A`x!$^qq6p$E°q}l/*:1=L阵ϪzRvhx)>qgzre-oAO W!F 8Xf֯#F&/^[dĀZ؝C%C)њU51 |pO[}0`ҨPA}[FOx̔W!΀m)fuwd`ű⎈ZCFa'>..JAa{evS) ~ƫ :@SRD{O,I϶IYޢ\jħmz ?<^| 35b_ɤG8p.QIz JD+huޅ+K?S{MZ/Nk )ֶ+W{Ō[%e՛[Ζ/7<%U1Iz2ioP Vf'Igj,6%?Ϝ_ǀ.C]75:kh ˏM߯:1)87@niG[fm;䂿N jmXZ5{|.yA$oX/+]s`T-%=]EZ5˪כ2Yy|#f↽jgڨV֋ȆIW۳ޛ6 κ xM J U۸f{Eߚ]ݚj:` [K?qݹw-t];iVlZd՛v)#di, x6lp/yK(Ѕh%Ϥu'pyAQxhS6$wz4I#8'`\$`ҭ}0?unʻ]?Qv|, Mhd+VE|_CƳaҫq). /4λ k42r-`Srv%gjh\םw}1B%^K2D%AW,)tgVv4EMЂ=戴}(%_O~?lxs@l{G/>ȨN=.f{84I۰RQ;Qyt4fϋ8*zރ~gPTJƆVa߄}xrѤb}ڊQ T' 0bQp_ً Ae~]Mt)|nűCv5֠Cݸ6ryԪX/֧|jL}5ssc~s/: [6#ܚr`䊑I2vv5n{4kN/>`V 6i|9ߥ~y7ӭ߼TJzYU.ߕ`jgS6ǚ_;taFjSǾP۹fa•!Z1 Vz`΂O 0l2@=r'oN.ś`_uG2oגQB|3#- $H6l @"D` $H6l @"D` $H6l @"D` $H6l @"D` $H6l @"D` $H6l @"D` $H6lԸ򱷄wbbpN*K"gbLp]ĒɹRB>!y:I*O1ΒjD0D%a,vt/AXT`%N3C b$W!X F'H8:F'QT@ұDĒ NS1Q4K  ]$ D#_?Z^47QBkT&+M#^c1 VQ$''}ID7c(%XDD_ kaP)\iD;ra,k6!)LMv*ZN2ᆩR  U#hJ$mʽ7HjqX^hzxX5 `fi=DtBEš+<ܮgR "3*1Z\  Z.f *UVuv"acҦÌu߷drG`I1f<2`J߸en=RSLef0Ϛ 1N$|afZHJTtw449ӸIJ+#JHy ;ߓU"S5JمDz%M;zT: AF%ՐB%(o+-2')/N0q:6FĴj9Q$'¿ŧ*k&:"zt}{R2a/=kz~ac*`QX NJ:5N ӨCEƍd0L"wY]sÀ!C5beW&7gQ^qA ߛq߆Qy+RuT"K7[ߍNwzK8e*Y7|HGtDƀa0JjRKa^awmZ2i z>st9f WɀCL.SaA0p*Vv`ʸ]b-r[X?M.c9bעnB=0uMOZp $n1/:}߳߳y_n/t8[nwL%{OwW[9Q:r#My_9¥ #Uu;\iq&eU8 Kel1\_|o1%<_Et#[sݝ:Z BJyM LA FR?B_m΍x]".ƿş>R<dXuLq~蝾?mԢ6i)b,,~jaK"4zP;(KݘaI/ud҈1sG;Db"KhgD}:t,(<'V#2/]5qS^]7/=|n QDfԮ$+ٿsϽuut֪ (/<2oxoyrncwN}gP@5,nq3HZň p h̪P3)E'RzZP/hnçfUV4 Ϲ=L֪A.lLo=$ӓfSiU9$&|Quͣ;@VpnRI9.ӧ63t:c'Ӥ;NƎqmNc%B꾅B|ص[O !ZI! ZIծ$K?>>);!  :!zF"A G[{s=y.f#\SAu!u͔ ة.gk?]Ϯ[V\bV˥Pe]7Cp)! ~m>pii94nm[֣h|2Lt2l3lF>ߝ^ݚDO!.UhZR~<+xTYT}'6/{}:TX݅{Wɀ*o_waࠂ]P[?YW~Q5+M/KHW4ܤ[=W7'fpYAίo#ozKv_/W~|'ϯ<7~B,i j2ͰBRq<>lO5~KPp#7>M䄐XXlPDŽmBtx2[O5}t 5t <̲!MzCvӠ9Aytj=Oە XY2@B~%ޡWv^A6䀻KL3kV{qbaOqc9:daQ#/b̨) ºAD5i >% y̬*. +LݝI.q a:2!D$&!2!M7Ÿa0EI`m$p18*8[WgUltunҲQ > "-wioL؈Ցܪ}lS] *o-D,Zv>q<_^V4Ubo)㗷@sI-_q=cC+zbqwZTzmMgͿ!h2`Ԝ2d@mzYHm; ;^ށ|Y~sFZq0#{{{o#fm¬*,(S.akޟ7&y_&Mk,f΁d}=e)7R7%w+_[gN#Z_/˸EomQW!mfE9x/O!\goia鈴WeEݒ`1Yt֤GRs$<*{3o)Dx7 ":A¬s?Q A]ntuM?EޫOΉ-馜GqwgIrvY\T\H/d $CλTd1vޣ 2Ӕ_ބ-و̚Ysd-a6F67^ZfBq&vwjOЏE!!iT`rN]O;m_w&%W^]LM۲^}'2vUzkE>jDMQ9{n>aUuie˧^5d%Cf;ɕGu;ρ]%g%~hi=O,Xzs/O5KZG+mHyD596!?%z`,%(~ݹӨ(t%Yk_V.ɵ=߆s/|PsiܹWт/JOrḦ+v^ .=^], g)ZycnxE\ (<ٲI׳;8ٴbf=f˯ۆ7DLR|sItl:L1nc{:F)6͇mf2( t 였P2j>_i;q2Nbi4.`s\iW"Nnv68$еZ`9ѵv4E}?iZ1N`Bfva `G4# +p џ|cLJ9G%>x W["ܗ׌C)Fއ|zq+>_踔^55Y4zDM6*[:ڟ}9ILㄕu#7ݺ %lwRgp^QV3dEb?|NsD6~WBuOAk?yRr*T\J{/3~-rloR̪*`#嗌8YqFf&MRe¤.݄{QKQBNMy/p`t`L(R=+ʯr a%c Q& .f$A0{p%Ep`)<-m;miAKQ] κ1Gks!}p빖ȒR듒>fhK뚸ݑq܈c\j#X䴙MmWn6 \/&~6(=:9:.̛!euyև.ș&d|z|U녤sOX\sj~]NZ#H> yY!9Ũ-(:ӾR/6HH(v=">Gz tIp~Ԛo'~ ݗKhuM 3zg{-_؞UaK_h:]iפI-gοjA[vWeV s]VWsj8q5Qa?Gs9&=,˸Um t}WnĽrObWy^|+з(8*2R+O+!6e=6&谦 ;9U}-TXCm6Os>6#E?hK߯6ץ}ڪ͗ ~#?TѲ+z&hK0Z>a#QjɆjbRW0Q^-_Jax>..iN)i>݅3ԉq`J)9? ǡ] 'R‚5TfYކ,ݻkУA?\̠6^zֵ$X 09D]~  ȃ.mQok\Њ xfkz0XL.t 'ݼܓ6q E",0FK: fńR [u k¿(/̌:NݟCuoAsukR^y8aL %0w4rqO8 >=6"r@?{V u.@hWn],%Rj`+zMqA`vZϼV;\D*Cpۂo(뵨k"}yif3 r֋wlt\y $4L{N|q凙 "5fŢ)r+]3SOˊs[^pkVyvgkR5(E8"eohb𛄌mi8vባ徛T/ U욾[$`滷RDN_y!hCD1hN\g\L, b N6&!O].6i'')ǀuJw~yčJ<W)44 !=fNJ>n*. uJ9U,عG^V"Ltl5Xju UiS%4dH4ҽe5+㲌o]?-}dC\|Ue|wHGT*P)tdV$4%?)tju!pC&m«٭,aпh̬@_Cm>\SZAϩhk9\{e}G0{H))K!]);қx[ނaiGܚ>IGb01Xm:;8>h*(}3a\1"u{KS?o{Ҵ[ >a!}_UҏHV\%ׇ;LhfK*MѺ5;eҮ?!p`]|ssMи»6Dq}l 9!TByê9Ww(uÉ9AS5zY^>{[:.1/C~.n~[G5%:s[r%ntݙ_F^s/?^8^}!G8);[4~;t+cp: b&ݮ֓{h?~JJV-S+b$azmCbEt}i3^Xf\Jv-W.ɭ%6Q3 ;h81Q?9_ZFk>^ʬaèMK5LTc_Y!,jxz/{NT~F_cL)jeI),d #l\Zi%{ >؊[4nH.s9hp=a΋la: $sv KnL$ԽI9G0PmNHFxy6e YS0cRL.IG1baĂ̈A)f- J7Œ虘K ZhϐkƑl 1R:S-um>goJgwf4a3Hn1i`eZ+mϬn>YWUӐyvȡ:X2^u 79cgn[xq*$d6 B?!pocGή/h>Fȁp>I3.y8ݬSّw!<{!4z%I_͗$w+=şM/n}Z)E7ӤO(Yٞ)KMM?ZD<ҶW.tJ&44D9S/Sksm1@SiCWO:U rk EV$Mu\[y.ؖwrayfέu 1Z~ORzN%:I|vBjR =Xड़];@thƥgܸ2F bx/\=)UC z[ RSm׿@DabcoQڃ+,Ս*S2vY P*DB\Y\L.sSt34IɄI'@K xx_mm.]j,[b286[ޫ]oHt-Ko2q0O͌\4tða(VwI"ͭ)/1 3 +BnH0IJAmwWh33y!t3V#jov8x]BnaE̻hZڎ 8;ώw\x̦ iE7U ",r0?qG٤I);K$tSfvd_7\he֞gZ[`3n_yסDm򣐦:~JqAG24 2']20OɖeMzÓ32T O ׫!d Ti-iC~[-mGD)F9-+.Հqu6CO=?_Jr`mnz‹q pl K7EЙ!sK\`"v54 fM7&u= ,lR %'ttvE}_]n_%n*OȽ<8218} ˿wUD¢qH5 ,uh["ه/rn|"h$ldW(lHCUEN@U(f$ib>':D,m52)^-n|ECwiMl'۽Ƣie#ca#3dkveq'sj'瘴VNW-5>CZUCgU:4+hkC3qDNwB402k.ns'I8,\a_on 踪OhkGŨ 9q,q祐~eQB KU!m  Q=j~)ͅ:AXϺjB=AvP!pEp\Zb򘏊3l܉qm6a<ܒ^*5]tԩDl CW%_&!oI`ww{C2m5Rm $PH͔AZ# &p$[=\3m"CGۺrPqyuȗLP?JcfGj`4k8y5z E4ǵ쮦=JDu㏥IxzҤ=2jFP%hq-ŴvM|ĤW~F:ZY.jeU}bZ3BŌtC3[ ڥ1K.W%xI4˹8*g$m6% >CCqƵC#BjY9[&Mjb0AxMz0>'BA3p5&H8\C3kec.:(:YLK-Jnj,0xg_!0SlfH5ԍIM!~97I؄~5Txpk6g[60/w빅'uj#YNMfA;k+ffi [caU~r#ݾiV1) 0 -Zbb2|U>t-"fZ{,5CjG)Y[jL?($:]=>TM(:ncb;3]т7XuLt|i_|7LH=( 䭺O$N8Ҏ8QwI]Lcw,01*7&>/?ڱo&B3,BfvZ.4;PQ7&Vɮ u}oH.sD^ow܄iCkt,=.GMΆVN?kN'iee+gih5&Vp1NV7mSmmGܼTOMP xm.owh{J[v)&\hji}S[uĴɯ?naf>2Q' sv#i t*vWB>ݍiiZ!cVQQ<6ȣH}o)[H.&;'Lߕv:Sh IJ !\ߒ]JZ],  %KeٴƧ] ѯzo<Z$[rRuO=;~iøz Jm:T{ݍs8M?es C{\!\|'o{"=BC&2K=Ne039D.{+i6Ke۴P1 F$a\(=L r?n8y~<r4jD':%2a;Db: 2[;'m - Q+r%R,{b smEqRHEOw|#q|m ,@E끽ͥv#.B{0)irL@_:UoH0Co8Gd{ \nS3Ÿ10~Lsap?o5.{9X:צ].b$!fQ)ːĜc!ŴK__+''ܘʸq1h[9>Zs: f6q3/'N'92Rie|p辐sF8쯾l-w~4Fl"L8Kwݝu5 EgTDof.r] =ClWiViPq|oEݙ]lW0Т ܝ+xft /kg2e=J62}E~nمf2^}>g!k "nJ\ ߄{ Q^,zIe yPLD 4id0 O၅aj?2Z%SdFJBvR >noy gCfr2¥1xSv1]̩"v Y(6 1e)'o㤽"GT+PsAm gE9Ttf,54Q-;u x1W  &S!iO}v:yG~6&IƑ# 1%S4Qm=ٔx"RfοPJT@g }d3.Er9(Ҳ9T{dc{YZjF\6Y{xiw͘BdVrR '2or1pAovu/ΨoV,"n Uw\( _r?>ȑsKr5,U|x$_0 &},􉣽Ļu[[h,qTx|$#܋/=M$pTtgh(_lsȌT?[DDzDۑ%u+SR%dC6P[>svi$1)nwBfSi8 Aw4ϚOuT-K'$"Mpj7/=>2dY>qtK\0 lZGSo iM{l ommQYP "&Rw[nS󆥲1}+L^pAڴ?{Z{8ݥ?B~3G=X56ƆJC`iS^WH+:bne|R*h9ղmöf#;/7;d{)' W[| u'ĭ*6}8/Sp$aR\=l}s2jo7{{}1ˢ:.?N}ZHҚm+B>͹f~2~$P6ja@'k:MLlFy#gUyv!\C. SssH8q~5Q|kǙsf83.("1,},"!E鶵ţ%,ٗJİ@J*- h;I/J[o=__Mu 'Gz(xɦeE?o | T[F|fd9:sm߰1hM y<ܪ'CclߗLPлr,`迃a(OzQI| .aMSrQ]C"m0og>rY^rji/*J.h˯)n0,ʂFI#E:`f' ̊L!E2 k9?`uI/ҶQ~hM׺3^S{ߢ}ʖ%>9uIMF^?),xyڥ(Rp† bL9u'gVY)l?:MA+AʧN]3Ҷ^MIԤ 4\U7^:^Dyn)V Wl0jzT9+[%01Ap9#ϑd=!I-B|`t iV9\Ɔt]Y{˼Glu!5B?p-2Q%dƍ#}YLB/n)n9A F'\\/+mO;|H^f(ri6ǟy1h0x0pUdi>`)ǧ4Y ! CI)j}W|,N~(nPc(CN*icpmW> EeC;fPa=)ڛYAK,yfUӔ^VT'GKo9uj%&] uƣn>tn~j>Ch`*(/VHfr*P4-NjϪ>.Z'|ȽCq+ o!5m'1S2&Qʩiȹum%`{֯8ﹰ\v ie6G,Ֆ*}4nRbcO8Q\V~; ltŘ^̆(>PT0t?qTJIZ֭ld}eCҒ*:0I#%1=0e-$":ug`.J؀l8E Gqn Rګj9vV~Iu1fTa9X'{ȁ )>n(Yt|U9 -u 3Uw^Y܊B<&E!nT~0I?ҕ2l/h(ThtpiuKJܻ5etR:)Iڷ;oh)'ci0TT}:Ƨl}z!A4{¬O>/~-ALcRҭs0wa [o.&J&bQFa ,L.+ѹҋEUEʹ '|ivgΥ,pXcUm_&ڧm\gVsʃya7}j{vUUέnN>Lx3xZQM{w_Lng:ʣj:^TU" r*ٍ.ykyeli|-)jGб^*Bgf>G F>&:Ԝ\ez)N9YY< &9<=Be;zg[BK}rF9c\sccjk9%"՛' Crf~)BŃ5I~}"O (RO!S3lq1;6 1sG y_A/;U[C%yZ^&w ؖSj= $D'8% R8ْ0$!nYk[J+pIiB(8.<?ul8-r@'W5cb3 a cc3${l t!(ak{kOz\e*A>9"i*'ggڞ` аKFLt4i ):5$4`C]5"!-? tܩ*f7I6?~)"e-.Top 9+gVqƒa|10xZOp)'J);ݢ7.S|R}Z쑵z"~[DNs I͗(x{qPdx-CoP`.a[ 䋬%a:٦I~-=?nę' ^IOL*4EIՏ nX'jo>y ,t7[u͞Evyu tܡk#Ӥ4 -)xmE6:%>=2#X󃅧?X&o=Y2L"-Ө81%%@;O+x-]Ny/0g}$ " |= :+Ci1$Ԫ3@+>TL_ zj7Ǒ1ƈwMv?`n~6ɉNg.1 ^0KP}hg~mdU@:e\spoUM8'?qryfS"x?j.ocLPn&A]]iCAθB%-n} !$$me+o@l vȸyr8ګ~qbJ2F;H>^Ȇ[f[vG0;oẁpDF96.k: o놐7y%?HGn#WLƷJkq!BD0[ 7/wBJz>z٥Ęa=>Sӝ_4o~ IäT2-m)?V'[lBhV[nY?( !DwQ{]dTYwGk7~/a~toNֲ00)6FⲦEeUE(< !o2O`bSXfucYOxMH23BKSo;5;b0d) iKwug{xɎ@'XrFA'htB  ZmpXo# ֪Lϓ[um\dp2tn+O!a^Yoo)dVp5EUv|EdAZ]i|>WCV dX+N[C[([Sc}_bh巚áHa0͞0t X] &:fjM)DЏq<!\E937YV89`' ݍtZkJudAE1]!,RF CUli/VTV&NľoF907`MBMqrm?_xܘ+Ǹ)vgT/ P`%h|)gEYZ bN$>MP٬ 8W0|؟ V:ra KM4wKlą1OOx ϕ!w3ϋ(lU LZCh[1j'dіj K%=x,誮I(lڔ<Ãsc'd̄6M%ȄHJ뉘ѷQNpS,3 ` = ?Nƌx"=^#eHgqYHp4\hd|0Jv~fnap6B&K?ϰcoو٨n#z۹z6]?e~(ђpu ֣g- }nf9MsV{U&^YQAьKU)Pw̼>'w{ЙJRb-t#/Yd%)Ho٩ [j9-7Rsr.DԳyB+-IX6%3`ԨvTв(V[޽2eεnSfhE>XC4P?D}׷F߭L=,}ȇ}OIm)dt`qG;+ y-m PymL{eԟN+"4`#tB_s{Y86*ܧ{_Jv́$ϓibc&(6{K[. DFiDW5 jV>vKÍmp1zd=9慢.31ɂgSp'@7Z|RgjkS7r-y lԃS%l47@N9D9we `vOӳQC:RA!s,C{#LF)}|@K40=gu_>qmhuMm}CAu,sm~1)p9ϲX\:Vmc$U>!;Ҏz7BI>uMsuP|0X%@Foʩi9/=C aP^sC萝ϽQĐ_f% ͹lG@5^G;Y/\tβm#,=%Qou_d4͏dN2YFȄs5;l^B 2vU[|C:SZ¹@XQ%~=2Lsz8:U"3A1ǭj)ś=yaQ(#F хoScݟF1#!{σDJO]1B{BW!,-7's8ԅv?:`wx9/"3hGXl-1/'<7u">{|{2L礚_%V`-_8KSSO+@W)&xwkI )]kB ^JMmONЭ>ʋ#dؕS옪 zp햞 0be{y~w\sE>Z̽ v`Õ+M Dr9'lEx0?M Z2;9GH 6?dO~ǬuY=`zwQ2K^ }݇ o#zO/˹B c9j"&//¢.Z4|R6z1Ɋ(&Y`s"Q]oEʙɇ v` FP?H׶b#"d C[[q.֡:! U^TI) mĿ4BYa~غH^Ʈ$y_o+]MLxҾ. *jVƱ,7H>߂]dy؄MSrɧ*rؿA|jS򻒓m)t@dO+#kS=?QqϦkMcNL?Oϵ eeCAAA@%4 :,/2Mw4_$ +ӭSe s 1ok'n ۽/.l zPE "@ِ%<~HUt̮9[Rڃ6ġZt ?ݜƦO#0^/zGѹҿ j (\QX:*d}55+QXte⯓= c/- N3+BQhg=Q~[[ Ac "jC56U./a(\vGX+a^%8aYHJ,pG梸]ʍ[e<~w3iq~0E6ШQ٥^D !ۯcuLx*":U@8S +=ñآx8ExT{]ϊ.pj|o*^r9ƇibZM ?ҴDW xgig13.fM,u2u/ TH|IH Yx؍IҋUŒ.7ut8:h>p0hWx y>@E$d*-Ao3zK#V7jZm Xqbyϩ}C20=G^5YdVv 㢪b$9sjÎn*{4m%1/f&Xo2.=3Gc;e7ewoHup?ڀs'a/I B\@{w4ÁnM1 _9~_)A(<0;처UL ;Dup4dAH訑O)K*bfԌ hp#]k hw'E+]48eYvRw-=JGBNAXONbom᲎RڑWy])Vu&A? ;SC#".l▦7a-.H{? S[K`w~4.E]swg35Eܦ]D -AC K;dܨRcs6W]_b@թK5 0o_ɩNXQXJcmzޯ[:>=£l;u>-`w@NlF.; ԝ;Zc6is +oy5g+r[4JOGЙ{Fj,q\D}Y=;ugkMO^ML8;1;&a㎦pٟ%Lx蚫^D(нW˩{a y^ᾞY77h[eANVlS_k]#ՙF*ܣga̹zHGl|ND߶]g(7JaNeC>0O5 "^631_ŢGra-@ĭ!S7׫#7h *^_4]sZ2"y69cJá.ݮ6on~7GRs8nqu6δn3<(3I߿\sqYOtT'V?r-mͷ@汮y6Z)9C-־sSpB^t8kv:*e-;yϷzC9;~Dg:T縺nԎ=#ԖjHؚ"bJd 0BUhը[Т*FT}'_q=us1Rt"]j.׻(ڗWݰ~{Qr/H2 I>T;kV/^L)jѢǪ;mĭ嶌  uI y95s6Qkt O){*a~@Qpwu:*VxB`ݾTr)o>^ ٚz~St"5e㾪kB暲%Q~'/vzvIlԍT<>cQ?wUUaz[Ľqkp1Ô@5'0TW-k 9k]Q\L+ܤ׳+Qo9g3̫5AͦzLvluMO?9 `C~}x'S/Mx9U# Ј?>AJ Rqw [H5yT;Vx\\;$~j 03}&v-Ik 㼜w^~bϝ?k}>m03\889ʯY)rI51GX^VV ֔dFKfb,^SlO5NYA2gB10 1"J 2- M ) #QS>z뚂:ޖc{ݔ{M4LJ쿒,+yQ^z]]Q@gFQa \VG4Gß~ pnSHG r뢜7ڜPwf3t 5ʪ@Nk9A,jQd[2 rs^H2j'XL [ 8W{ Z*v590˯M ̋k]E4MyC!!Z ̴x`?#>AsF,K62_B3%.Ѱ$fݔz:/8VD-[#D$O9Ş 7J3v~ 顇QkvpVZ{Priܔn =6/5b펴BRl=>t"w6Fws-)Q0jl9#̈́mN|В`#g]0Lr~idJaVRg$jG(Qԝ>~g?T7r!Ki?c 3 =K8霬2Oſ"&t8=@ ?hkSv|_f /|x%. o+*^Yj/L,%ZlȱtnUNsἘ NFKi)|];9#Lzx,lvKYy/#MwߊrVdS>V!,)SӒ`Ah J"@/ :X,&q9.Ufz^(r` V{űj>ϳjNˇ'&H жV౳3HF{pw`giH3nK4^Vx~R#umDLS3,͚l `7 r./u6R>,!F $l8 G`1$`\] 056h?X)9TKH> vۺa\3 cV[D  q %9'D[38P?w:ÇʀE^?Sq:I}D)_kUuK&1 ^OQ@f?;$G-3#w0W5EYLxQq^ƻݑB|Wx4%l53*)t#6`AG P6 8XX1a@)n1xJQm~bC<_3µ>I+ LpԠ@{4AML e,M@#&Ίʽ{>uqH;]vqhnUEMу{qu%B3+;Mr{)%L!{L4ofiy_u_{x~=9u? B=" MAn@\@.C'.ߓWQ?J/p.ҧ5A!-4zR9Ih_a |ϓWU1*r+ugZKj9)P$w!ޮCBJQ`eW"QUn\J>3TX &$8w&@y7$ 58@@kɻN5O&'S={*;kLDjh p-Mm[àAlX8t c;H" AaPv<: tחJF|UtdcaO/ I+$C=!<@fL 0[׮ $HPNxjH!\W|:m s u޷H5ۄ+t HIHp//P|nAy p qnyԕK^^2զA\1bf~I yVerT20y9 ȇB{ *6LS oḠ͘=`(y'ǂdDHH@7 ? yS Q \]O)gNلSn+>84֍EU/붲|I,(A%16 a71iܺktڸV얥RZ9kt9pS0 F:q:(UI!ٛUEOK%Dqkש"9sh/rǠ0jW4״>,ε1F`" 9 WM#%T |_S+'*+#uN<aN_rqkK':Z[6s5hkި+eLAl;JzQ .r(eX 1KSv-Țj%5k&oR3+R9'iA%$;E1§r,3N[ <@g2rݫ )eo}0ܙw/(W+ߛ*ZmA9c+/=ݣ01 @bT"<&qƥL{n(pNr|YbY楙fUg]nV$鳠ƢrX%Ɇ< i7o'z+[¬Eь^rᒴ^8 ?v߇}?tCkRt~uRR2&G+(O:ٵ*YIJrx.3ۍR] ="͂e t;e9I`zoxVx-aj~YKU˅cnGD"9̷6QL֝1?}-[r0JPCueAޥ9yf0Qu|J"Ytwclraɡh)e_TgÒnLJFhGK ۈUחeC7ܩ|Z\n䗯V-r֙SF_Q0] ᒞecpgDNzgQNjOF6 hL8]{E jK#5}Yү+~t$mxOɸᤙ>tsfJ隘̛Q(@ E-kg,.bjPؐ~vT=74cj~FѮeڴOV*hၺ a2-6!/fmTo蕧NhW W/bEr 9e]̷iLŋs'9,5Li12e}'pD=Q6~qmcO5~hn,vл ́W2ߔ9SqF6z4M>6`i B䢷'g i%,cR|uB|:aŸɂK8Q}!k6dII7qKgQXn%R>LjT*yp8wjPN? ɷJ>Ѯm ,/>s!pS>QƠӊCpO/:ݯ9#Ҁ˄\\9;OoMO>~+yFDEl2KG C܎*ZX@؟w9@ya Fֈ ybqޏ9X`qYh6vk 3A {Y'|}s=jjHK.A.!Aq/v>ZܝBM=tB+6\ݒ_4_FHm@A Nm}9vJs=/yx*>>0*Z(8RxͰ~Rws]xwŒ KFkToLWp4ۇKbLc*GuRXSE/kM#Rf;!=STҊ IvlqcqmT*Gzަ56Fp ͨU-z p'mfo2Y)t1̑c:˜l!][$M\ endstream endobj 27 0 obj <>stream HSYNTMM:Sd25IeJ2鶺:1QƬ.Ⱦ,+ FE@vxA@$ȾljdOp{~si35VPu rqwt8%f}qoM׈w]p Mlaae'UvKH/;T 9LePt~mՌԜ4%@.= ɓKQyHq#PKlƭ taW4^:І2{^ӥ8p+%4xLH/BjD|Z Ds\vg}.D}?x}nD|(O8"+]O̖B6Tj_K[iS7د"kXLK~TB*OiA>s3_Bi+U@P)(m) =cjӃTٮl6Iń~1&=-ۄABRk(.-anKY׏ &NTKHL.Bq˻Qh$f꫄_4E蚰~Hh6qT/v&UkT3q%T~};i:msyX*'L܁ uI1k +gMJk)wGN[vJ.`=N#x'U +IP&[e¨OʻeSe9ȸ 1ad@jGd.lQtBTfnF6(K,d|[!pKz̓RL[ri} mB=tDǤi?dvFg `srv⫼9h] ڑIuTK}5^F-dxBnN y UNWrYP.{@,:mŖ˫;J(:XC~FoHg>ẒL9iu1#;Ӳ s =ȸfwytWY$()I5i oR(gl$<=Of2mߜ+Z ؘ `~ h8%&#F.vXwa |f*NFV~_v0ziw"n7H*iUq2@w<:Բq/zmS {/l\@n( );S;&rgh5 *Ln0ZVKb ;^!?Lj*{5iXb"j̃hk#:,+\%D5@O5Xv˧8kSzJKP6r"jzp-×l rsH)3;aTj".3eG&`Xh-| HmRP2nhh\ LI8]@L[*;'Z.n`*zg5MaJ@ OO|v* މ˷sտ{2Sv™0<^<1m6A 7er;| a&[Ż K,>3.%a*brn>dO(8p!Zq7c8n6.%5撇]:XaigF岌ٹF1q8Kdi"d1aG`6.Uo[#枪]+?}HćzjRr@5)P"a #* _mo/EWkiny?]c=cMEUȪfk -7 .g:,̿v=AUCN#eb*e)31g??eV᪾詩&3]$nItH4.QqMP%jbܷMQ}9IM)srun|ʨ]z&Ĵ\jn5c@2{Ԗђ=>&U74dz bqUXy2;}r|Gz%UڌL茝XdžԴƗGCh0,ȚMiXD)臺J3e ê搂\ 2B fX:9 ~ ֧BW1m`Wf8f``4lTx h02pb3ׇ#I2j@}E;'>د'$U23vx*2fяt8 1HG TSփyHDAnz!5xN/8ug]t>c+C֓5]jcldRv4O/]O8~ݾܛU1`"/tOsI *jTI۳bf./aflߓ]u,sv+߰[6iپ<,:#Bxè6gHQRZbgغKЇ\;&Nؐ}aɷ%Rw^aw /l򏰂X1>@WW]T3Bih|ҫ@h}}psU!w{O܈ o# Eoηen>^uCWF)cc5V-T>mٴ?IۉQkTvȹXj5ѓ떴zNq=T_'@#;tg [8 RtWY{sR>ry0j /[rlYug@&1N_x(XGC|JŒ/ł.kܷ9Y>\ GoV.e}u(pa@Y@5"AjLIBO l6lxzϊYQ--<;!\"KƢĬ !tw؄SikTuE0bx{dÍoQERyғ_yRIu) 3P}R!H`znGxis#KmPGxhPEhim (߹/ؤYcD8`S:ԣ rIq/%XHX;/ t(`X&>et$M\R\?V˝9oNyǾU32{^IoAHK_hhP}6)].t!B$‹ ƹ`5l8.+u!kgnpۏ:OBH(徇o9LEZ_.W;n@:Ch;YBMSZј)ieoc-+J92CrjM@FvVw |2R6W:moz[xJzM[-Tap4 yvef$#u(7ԣmѠ(2]zͲ͖~Xj)6]lkQ`z3RW&ƛ Uo/Ks"BܳnR2YB2떳5Jy`}p*>Y>4ٙ}>_# v-ޤ֔:9pǽt7K)y(*Y'U~-%VO_KGL{egREq9F:BWCLk[z S٧#q32sp`OB [q"A'/o ݄.tފo<[FΝkZELݰ{pYZ|w!:uSZ%*b5}a$7W.~>e6F0/ׇk^n qZ&ѣb`$uj6,)jb'heA͝5k,7ϔaԲ6dlJlj%ADϳh{z{ 6^!BF-\ԥ1UjΑR0_{q4!GW_4L'H,O~}ݫa=.Ѣʈг'9Z宼"~{ *.<di`2ZΞQ:Pe5bl#觿L0^J˳ozE )}sL9gQL^Zk:6ѮGAN khL$āq)yr2g;fp |mguB;BULS㪈94>.5;cBԏ 84(.I7-}Y.۪hZRSJvWۀ=U.pKto_!)ؒ,bA'9x]Us 2"­ z rol1z r%bRbwɣҰi}[m5?R2bǼ3?D.F.l:[kӭ"Zף/7_˿x)xGN {Yna^+D?,oz OQ^42cgv@WEĹ[?q l}WN-.5`tmP8/p;[l>4n-aE BƧ8Kq;LQ!(~oKv #x 6s04S=VБ~g>Z*;1a lʮY5 !nHa.R-%F, 56Q2qῌ}_d5zyKXg;㸬}-&kL#&-`s.v0)6aa8pk8ls360]Z6NTjQ2P?ٿ+.S!?7MEyMf{gd V dulg>[J'GtVZLs̻ܣ?[fs=rTz$`ui5I T굼rqZ8#J@_ϰ>sj}:.5BڥPqsy䁚 ؗαLL+EFNQ WM9ȭew5<ҕfҼZtxn2%>|M}@ڥկ-9쌿u|DaD `8SOJkN"c(%^,;1#U6%LQpkT=Uem8f#uxjj>v>W:L+ dlbW+÷ET a,l%db\ S@,CUoPȵɆb2J"0=гNHk9EFo+NΞw(ȹn gl1 %3]xpmR _|~#*e]MRmlG>ą#<*.urGOq>%Pza:]3$5ر6flƘDc\⮠ ʾ<@ Fń(A@QdNgjիU{; :5|,Pl>]2@ϣ%6?oD=%wX9«2:e"cz>9JJwAZlɌx3[DpqN~=P ,X,S،pYu `,8LzH-Yt82u!$t}k5A=Bu~,-Ač=x`죺6pdNv33>i+:ullұdQ3 ;WR7˴Z:uWAk:ҋyļϣڙ;Ӑ1Xq+ tm̯a"8!lQ"f3hdu ,b/o&'8mCIk'މIstR9BTGceӗD?&/sb9'ҫKøg3,!7u x_b=tNalMaH*JkJׇLT }FtPI/q:q3I܋ A4Nxq;? ܰ7RJ֘c۫d#R} Ԛr6nFqݰI0YWv輍iT:DWYm[͏monY$?ǫ:P6=: a=ς4c˦?_8`]žTSBͦAM .Q ^ xVP{HIUg^əbr,<w [,TyWXȃn=Kd؆I[zQŕͱGY{mb>qK{P)1D-t:̱r_Z TJ.nkku_Pzg04SouLS<2PKY:J2)=wϑ Bn<֑K h^56Q{{5ϷBG+ȊDv,9fP`ѕ)[ج1\ϣȔ5>-Z U'Ӵ6HpyT[7q #mMR&Ϣj=`!=3`"KPkPA{?DEWWW!%D?z Q} Qy{ ܆Wu:&S')}l3tK89Q@VQAU)67/ST{RBAh9a10P;s0{fںQ w;kz*\?ZzuOƀЊUAD_Ωh9vzR4hVu==c{v`Y@iR5Ԡg,Bm^oB4p#гHh.ſ2}J+MxLtk][:1tvhLdQqaDv,]\(, "h&Ο27鞪9*OEbP##ffD,8«lx ZUH܋5%u1y*_#5A/..[ĕWCʞ4:&_.!lα4zX d:@G_wH &pTĂ|k0WVT@YOGQXI,ᠻS4{c}߻ۛ=N[l|SaɆ13uoMΞ$=qxVrVjjU c#|^`:Zyc[b|;}y,=#xh{SBzVӰ#FZ^9Z㠴b-Lg1=pn;o^1_~=oM#}kOn|a|tPCꆧ{t:<\m֧}^p[>罍'IDW^uY9L.Gr\0:./iOX { o+;EQd[hA%d$&"j+я9ؤs+7u[ҒQgD̈nqd,|v,}8NzĬ:U5.wUemp+٤ [Dֈ%&K$إi꣯kS}(RjRG}U ܋\\ V-F455'&h`K<5z.,S3-e2+ 񙪻_ǥ/f ;ͷC4eW֢ vz8 ao` ȥ~ sy`wlThl}1nIoilsԽ.,sĢE S0}Zzݡ3a#@jm:jfze^P3j 9)C(25rQ .Vqw ȿ2`c@50P,+w ^U.iN'tbŒ) +Yw3r!wYKunTeL|r2)st""my{eFUH4G4ҩ]ѻtjI~į  C~y9>Hxc x?a? f~ïJ'Be\8'TQ=.Ik>5 D DE \b}JRiLʥ}r,D8Jng?I1Xj؆͵Cly 4ֲA5>/jZIUBcֹIhHʿ~Zo dV:590$li:i}4,mȽd뀹Q}6kJW/UJoOؙ*'Kj5c۔>jă{QԳPA w= w1ᘹm y5S8wޘ$jbu6 D'DDމ[DmɀK">P:1?n%!-(˹yV2<^~竷-h) B١|w)<~J*SyW3ȗǿNz_QʖLmF@M86wm)3&S6 3uu$v4aOqy}a|ݝ̤9iL4hc;( F)tUFcW!(""  (U1S{x~ !x dАQep9> Us̽& m݃iⲸ[z{XpyVQ =ۆH};ӳńk<`K=:x&mOE*v4Txx]wJ>PS]u |P (4̷H,-ʆaS89g鮒V&Bzn*v7s3toԯ#jNakmkP~emRx)7j#3Bv_zDG+<*,5yKg!c .g(6sU 1˝8 F׍y)cBсjH~5 8g'%llV)p ׳OÛ~S9-؞ҿ~pٟpEwҦ $ۘ f]@a\'G,RugJ%|>Akd艓mv51]z~!X{5@Gd؇DLSOKat}ykdCkj GE䤌=:~K@8&~4Hv U>P3{sBƶQ7ٮEvrg\591vZ/4cg4UDlbtr"V+J|Qji"^~GZn-rQ^ s6R?ٵ3 Hڷ mƐ:! y;?k0M'[&5b܁&o?tꄹm[Â|'(ySԍ8 Ꭼk 7K)1K 2)pq@ My%Ac" Rc7hM/x5TLp,抌EZ Ă!mX FNx~n`drԧF^H9m=\OE iШWc=uz*B=ZVFYX?*}Mxbd5G+~~$<?f9I[ܫ3_/t#η+T 1~hf?"!C{5,؁PzT; [BhE$ .s!=Υl+@sȍ6=@p@&b"fl_;\fB\(>5,nޑjDï2rf$] iN[S)R"f o'f Gz2D-Lj)||h[ پy"Pєhx4ORTĎP 9'1rmf#oOsՌ2BwTYVw!)[!V:5hdWǂ{ D~H6BScUa.֥kgK@ !GTD7숹!ιk߸UuU.>jc+Cؔ#Htlo9IpPX*HO7UD6'~WxBYCp2 dB&?gpEq= js2~v{?3:I+y?Cv]__|jd*\mʱnA r0|?vD-|ַܱ=:I+%a-p9gg'\<^`_׵ ܓJK*$]w))Y}cܭ 9ͥdnM":lpA+mwqtꉉвPLxB?\P+HpT3Cl fGQbvTE݄ N9ޏxd(Ѱ. }}~w{8F-'9P^ap3̭!T,`l_o]%k,^ظ7>1 *BG٘l oW]hb#Ǝ {96z @ِjz\,þArNINNW˦e S{@ k#8䄴)ʥZS ݠև-4%2_S\_iY߳g2kqlI4NL21EJQbC" HiN06l (MDDEl4AP3w~{y{?ҵalʚ׋%_0W ~MNԫz £e 2Ύ/[{bw8BPR}aަ !#fo͋W>8.}^ C=Ч&`_G>Զt #h{0n|K $_O( 5M:Z_C)86?ɥ@}nXUI-=5 6R4d[lu~Opd)4-<,bkhzܒ$ɻR*4ݕ/Yg$&.aCCj' h٧c#|&fܛFb^DQI!jwSl%%?$f9pPo>L . ֞h"*/G?MpʿwjwK.77}]hm%bWVi4"f/9m-"&pVPt ݴR^ wT TCb()C<2 Mj9^mߟeo(0%ա;2Q+BFb{V؅xPO~l{ Cz?-m߅/qKǘRg`ώ ҁxfA'~;bjTXHCJA9,#bkC\x6ׅmߞz+mwB, qYKq0Gv * ԡ@R!"0`YW7*f<5BP7K*2ZB#Ⱦb@}2 Kfp9z`d"XC#Z3'u:)"o,cj4\cR 3nڇP)k//D~?D>?t`\}5*oecv lOfGi@ϧ:3:j#dM<׍]kM5?P`O@}1MǮ7mO%t,pu:%Φ|wG>^i~Ϟnz?ۘ vj(1/ qb` LPۡ`WP,}<)#0^gWSNS-"w-ՏE.tʅQdy $j]~K iJY'+U,ȣ'4d6 QbX,-85yAV~I\ yaX}OM):&pn-7'fMiTNg]^y_~5N|Oz.*hT _ҋ{ӴNuce+sdNTQAA=dY9SCTP@8q}>hxdbF8ܪzYTh]삵o8K[eAVlmDŽ6F&dV}B C 2KK5]D) tbغ*CesrLZ&ng p:[.ߌJxvl;Z `˦Q>}ԼC3NwUO<ЭثkԌ}hDD4 -wtll',@Ïd3ыղ<YP-E^7 .fC I^6ćECz6~[CyTcs[%=I"nOǣhdD[/ 0׊&yuL0*zMQv8_$:)| y&y[Ts3!- =k sА\j} Ugwc?4!|1]KkWWYWE'jLsH.Ho8[&@ hi:_~9 Gv.xV&0PJF:fqQ=+a3>kbK 6ď6~`TroMqsn9OiIo/ӳ6jV+^ϧa!oEtA,; ?1=:kM}񖒒RP>Zv`3n`qJf!:Hǁ3 -zq{Z;5N( ֏[/ ^m++ͤ}lnl3^51D+?{x|6eYkh8GХIQ-U}/NvԄcf-7ne|⥂rSV~3*&xBNcyo{/̜aI{"nk腛&\IXpI^3%O?ˎ, BWcsy0z4co &S}t`]YYq𞖅hYkh'4V1-|;ɴvbIv5$';ײHr< 䧞TTE>?1AL 5KMkk+$`xS\r zi@4|t~싫ʤГ)Ulw#BWaOw')6i۶Gm0K/.DNp+).!у|WzMaA^]|.O~N}-j-˼!F\VqRxT1˩B;07}Knv6xjs&|{YҲ؆O;yyjzsl(`QRL/N^NJ`w; 蝦k*fq'lxSYU68rOuU3z_C䄛k8㗲\|j1O1*Bc=)qs>I),|BF sOï"}k?)i 1jm{'97ȿo5/-~, J Ձ\uqMG:pU2Zhk".}|F3G-9Ձ<Ƞ1lGU;Q3A:0kD8 啸+f RjVI y0'G<,y Rim)ֿb&1_ɹ#c( \t@!ܻ)FTK[jBM鷿W$mS aVδ*?g>klڥm+W'F/N كO{hD,t@[Z wS+ƭGlpVq `,v$\[ND] ]*rCǸqAZ2)ar֍~ !:\:#\(:%z>s#fNQgs+k]nF|؋lQ.vM %k:ڭ(uG_!FܴVw&IPuC^7+G<~u#~I'Bގ?tSΗf2ܣ$miIg^88͙n89v63b(  ET*f4QB*wB%EJ ~~~~]Ws8\VJB Kדuau.˫w'01%)&2ɯ3+ô%f\egj{R_lC,s\DcMĦNӊz,ɸُ{8E+yjFއy7Rƭ$IMp B6e`,jUj5/$[Dnm3 ZVKłmHdD .Ö́2+E]ψoJE.><0uCÖo௮ק\QZj' ]`0ůW*aAhfTDlU_41̺c51HCQbLYz}1;p }`jKE+ ?VNr;40%u5 WF8'`"koxWE#- nwTbpqJb{p rOY :St1 0:aWQ :Xzxx#alL^ &P6{ x:{_Cuk5-U.Ŧ`x8Xvj`/3^ (p֡"J*|o^`!pqGF幾PLvEsgvS4_+y$HU9ܒY䁎xeM۟ļ-Yu쁖^]摾쫁?55 BΗE~㉆ Os6۔NsVyuy(2O/U2IP.*Ǿۛ&Cx4va|+mg\cݝV(N51ugKKzK{n36Sr{{OFQn܋9J[`U8bl[m7$=4([j* ־>q:zMm sK׵Qӡװ?O+ǫcCWwEqͰK\*vm1mݓJ8t? &XH&wU7/, 3ۙvt2WѭA|ifV:*&hqo8?v;Uc*1~iu>!D>do+:M9A, b羹|%ٽ+я}Dk>|ޱa &h 637 l$1WN5t=]ם,JhݕOAwͽW.%XFFXM:]g%vF1)A=Wm2և古՞t.i V3n 䅝dz5L ]l&$ 0P͙nf]K3TrZ=_׿ޖa"wQ!LA\fTa$-pgfdSpMm,1W\sH2({pi-駦΁ss蹹SEOE;UfSs$Ȭ,ƃoT_p+l 4AW>6%}oouX5۩fl%H09B}'FP،IBG*vvCdmGKǺyq,҇诌d>RaaZ14$$>O1XkMB˙¢>_Ȑ_Hi1)i7[ e yi(#, rҭ)ZuYCo#E,ܩ!tdBzg?ASAqaXzron!1 ^4lYu d,J'}4wtgܣ# * (%JBH{#H RB  $BIP"ug{s{|z:JYWQM cvb1}W Ϙd)>3]E:¤sClG "g_u`2Yؠ:Viwz@ZW 6mktkOKц^SqnChRA_>g?\D]]#s$ظD  s?;ަ FAvwpO7S 2mtԦP7&.u"Tȧ؅^qߖ%ggRqc,VaWP|pt~Yw],5RaߜBܢwGFz*[*Gǭ5%x%:6{U6椠ίkٻWW|4o"'H);19JHmJ.K.ո=#6I(!:DHۙa#HzdCF\6>C X'9*i9.,.ozxҒ %rK/|VmJBn:Km(vgա9=M &_P =CdG/(!}gQu`P>Y$iVՖAD3J[NWG, ~VlK) %4IQMtv]2Bmc V-~qYtn+#S*Vܼ }Nl:BGxTxp}WzcԽƏmȠvGL]k(4M;#GU9讏[eC1ũ]o;JnDorwOu2Ȩ_Z+ i<_{x_ry5x/8tW+xba6IL yai̯m1G[gԬ ևYFI^d?inq Z%,yo8[eU{0-M}sBwM-gX@\.x|{ k)᪨pc{FZ~̬0N* nKb~]D yׄl/'nV.|roKO8N_ڿ1Zm$#{q1X P4 L͒!wԑ _of%냨eY 0B4<|gC>p]dam޷kӜJ Kٮwv-ljiiea 賙ߝm)HY1pR'*z]v/eSVpԁI$62vM/v ƒ=fG= h7|[j؟6Vل9i`$9=yE?E,zpqJ!|KΧ|cBw%?aB~cK]kπ{yTLKA]0!Y>=-[jeI! BFNÁGpiEk:vOυX9!FPǩ7΁Ԭrc'&OJhE6IVY}5#7rWvwQ֜`:G% b|ȩd9䓕VWC.\ǃ|jjyPElIA /[#GI'KFg5ņ0aс z>>0qb |شiRWM/AwN\bAǔ2O1,]YZ{½^2{j#SRT&JUؕ'^ʌccll06 X2$ ZZ¾HHhGZZ+mqݺUsu?fi<%ʭO=J.^ڧt7|2N&'%v} pCy+5~1|~SVn ~sS70ZĚCBl:Œjf)ѭ%ŗi2 !IEsd v9`en ~Y0ه 5-7etxHfhCMqYSH)~(Y1~܋s ɛL cbUBH=>Ur}UL,YNfW9Lwݲɮp'kԜC6V4 np,T(7m=""iǨd2Nrn'ckSmB_K] YFfkN謡R#=By ܪ[Hތvs"ܻ=;YʡkQؐFɻԬv<>:񤉲ޜ#M_|W_G}0fH|dU=qB\@U` qayTdc*%65YmҺ˄}URrNx$x4[W2BГH3`vOA:Cϼ&eH.Z̺;|^=!<]iTFHλM' LP eZDQ9 }}``QXT j87]Bb.*إzDV=3V}7#VoD2* E O~>s^u[Id4ַ0"ئj(aT ,,\%gL=Vס0F}xHftOBfp՛q.h659)N?ϼ0}VwVCuҾ̺27Z j[҄Pk`j̚_)*+'+sxˬ 봶#A#&:K^1snx6 =""\%%8'=Qѥgq9@y7",!Y{0ݡ=[9+.@e,9&3цgu7Cc{uΑx֪zE5]$ax.Mfq֞EvK²p䋜UH,ˊ!/a|FT0ocSZL-gge`دͬ)s?rl4BF#.B\LܼEd)2#SH=5"JE#g>V9C_5܍'o h+&`Uw3ۗYI$,ި@JxO{luS<_*-(a3һLǬj}RjɧV|֯pIj{8_/ٯ;HsUBo <"QJdIqk^\37B'`oP~9Y{+kI'S6Z=,>O\  vNiK5ߗ%ګ*OS-DU*?U2A'cE˓0ntFBIz.F^ǐF}亾i&+yvaagZfD gI,Z`t( o,f nΉPMzIµƹv k_D e3BV?X:&xUEV1%7j~ HdOLjdE i=9}mjhO7~~:q_XEdX|Bl w#$c"*tpl_h?̚όvf-"3SyKfƒ~iYՖ@T&&951X"6b v;@1*6jYEE@A[4x̜v_J/?ٿ5n?Ppܙ`f_v\INhW(R~?Zg>[3E·1^ֶZKTc<JŒ^cU;qfh%|ibn.,έ.X1,V.PnIWxck׈cՔ=iG҈ %[l]#~m߶x 7xE9 t²)D%^y7{TFOay pti6f071eP&각^r̬$COQ;F/) !`yL S/ ![Zis0}_\pU {2w=FeBykl;BJߍ*>8f:Ĵa=G[GGݨj]*g/a.稬So37 C?;;X{e 6-y8 HvP $*|,mhLVTk̅fRE|~bE*nșŚxtUn'j<4>9]% ]t~ƍXm8ϵ*Υ'5sU-s]o;M1--&_!&tW#c![u@a2Q=<}N OKO 3n?DT3 %OQO_@UO\9x[SD UdeI|K=.mۃTgOg}k=xJ#Zs]YݨG?QwsQﴢ _g4*uelxw"Q 9A#"n{IS;<™n nP{uJH _3j0kQ@ j1ϫ߶TtHς|q޽OFhNpЫv~-Q9'ChnpN|S}r|I-le[BV}J`&XV摰z#'{e|Yp7u,7h0jƔȸJ(ijVĈ& dۘ8\2{COڜAVB+[!vO{S68̓ ˞50}uf,_NZEi pw=jKl"9w8Z{FGy*헤a@Tro SfȯCtH qdi[I DގÔ{P>f'+r&'ћ@wYf6Ī9 \SS`֫}RfvU{g] ;V|9x>I^-/;+ٙ}XI*>qW#l8T3J1T`rP!c5Y\4k `0n\gS\!=eV\y\Kce8n}P #.;D'V5`rTmK9RpxzexEf*U1qA53TfMi X~d*t'=Ĵm21&1Ƹw@YDEd&1 Ⱦ dUdMu2=dx9;'kf4ȹAKmܓB4|}@ݵáGݒrwѮ[5j fv.^*8tYX8ġ /~楢{䑠 INb˹S¤}{Lx<35F!к}LxԄ=A'YhLŶOC2 -ica#U`_FvϏ,3Tt\̬YdM\UFyfSͽݷ+2EyH(QFVbWa_Dˡ{yr™H)]}'Y-Ai6!`]ge;TB5ZG7/,xxKy~EH1Vg~tNh) jHHi,#!)g ȚҙK^̦41nLIh1RGHET{~ t͠J6L{LΚ=%' @&].yyPi3ࠎ3s!w$LM07sL?c}kz&IPEդ8F3f2(yF WJu''$ǿ.XN*4k!Vyc3/x{/ތG=;*=J˯QSy }4GFe: TCH7b*\K`ٚI 2zPu'$?ڂ5eLTh:·EumZ0`[")]FKy{pTJ7RSsFbWVDsD {c%^ &)%,+`sܴlc ֚࣬wH}.)Ƽ+Q-+W"Kܢ[9Yހl([}<ƶ Ď}`;J*AeľT4߼d[tj]BaΚ[ DcJ$th@Ί<5bZZԋV[KpɎͰ.ѣr&Bחeٞ?VMl\z[LF= ȩQ!+zrB*Zozh+' |fn} ݉n+_;6 Unp8ٝz.*egN`wԘb+6M8{ށjcRArkބng/f5i5 V#D>NGcvhq/%&D=:"%߇ڢ7eW@fq{X5}^輞ޚȤ4.?e34m5v7o^)- EeQP6Y\j齙fJ +:b"N3x{|?ch1swdpUʚD BDqlyvរjtzKE{[k07 ,EY?U,0c/wܙ+k9KWяμq2l ?ѶR #+{ғm@CW{h튺/Tw+IvR *tLwW\r&ιX:5ݯ"GsS#}ZNkSogkY!ͷ yllKFbwMFXcL#U(PU/E!e ,_|5;*ʓݟ=C;*gdDgu<]K^yMyx&d9Ԥ箉TSv/M ~# )AǸ'k ϖty ==cwÃT詩rk lWO晹@fȝQJo%F\*]y )&nGKяccsyh4 `{-?20_g2[ B]Y$A} BF!=Gk_7zu~5K*b񞂕nvsqʩI~վJ[ѐgHK$$#g^o)Cyr8MvM1]G:",h|-Q0^YGX7"MsG],0Ȳï.EFk0rF{c-熤6!o)v `SYP0ܟ4T Rn apf>=+ϣmʷ&Ɓ wގm V0])6 @Y]Z55ξ9 \M~f3}&hV2@ANܖmnEE¹ *e] 770w] lGYw4S9[=Z* ̀c}]}6{<>h}XpG%C!}[o?CGi\ D.E^,Inm'daZ!CXj{lu >_kd{KƧ/K<Kݒrf>>[q; en"|:v3Wv񦷈ۓ'u|g{7ȕ>bML"cCRQ =m_UfV]6>[yPT>E K}ڝ!Mַ_hӟZLۍ VV}t\Uߍ:/ gCN u^,|b%>׆Vt r[cwvkH֗:tᣮ5\I|1F<ƀm "=zi!v6qޑ&Z$ z?_]~AEvb#zPxC]ɮK Q |Is] 1cH!6EC;(7ޱ)7^+>2Oy7  =-C4J;k:О\یz6ʅ9 hE|8A32u(h=XjbŌs2@}3eM1!pk*%=}9 ?24u=%qP: C\͕Lu'cB ;ȏ;녙 jGLnTIHAضoc|^^8G)ksL?90vig}s Zl=VqsjoɅ7:$HMQV%󉩗f?yT9=)=jg(?p C޿`ojdåTZd/}'K@>÷ed-֣2Li'.ع$pp(˘?sƯ6$8 wmؘJ0L'LF>з(wWHAgGlkBJ(nqCJ܎y1Q97y0I 1c%UyOwFYI !%VW^RV;B-②ZDp>䒮8(܃oGxuf<ޓ`*ZR7TحŦl)+_Q><|p&&ƿ(p/NtY&!:~u2o&qޚr Qy^βI3Ũ3%-TA"Y; u I;$tp@OAnԥ3e'S/9b㡢/+넹F |։xtܜ ˋ2g=-] -I_"mn+c$"J 3p-r>q Z] xJ%d*_V6ZE\x1v%Tj<ۈ RO/*țRj2udf$`0)`"H:)Gsk8NS~>Wu`"h2=ΈL|Oߞ,ڐTWRߜXy&njV @sW^ʍS3$X\rjTQ??8etS~_8M/gQZ/vJC;$d zc""8eN@Ϡcwr]0͞1b4]3ŧ SJ+x t7;'x5$WG]'O2Ur ɯСbN}=2Jy4M @9U#uo6Ҧ6P"de?4ߵO9˕1\s}Y󯻭if #Jsa r.eԉQ JO5)AsKeuSJL 2?5C3M_,!jvmTY 7)fk^x0]A(1:ȫ547nƜ-&Qk]=ݥe A'FKT5s-xKJr ؖޗxJ+ӐduqS5Bg^mjQ_ߏeɪ uSN4 -}"g(Z ~_,, juW-;FKh=ŭ>^Kd_ثu>ɡc8Lq&ݬiKK,y9Tз&!`y]%D^Ss d)%. 9ŻHc$EZ qY\uk>X=/ՕvFdL&mRDfP0ƮRX0f/*HbAPD&1̚{|ss~osf1jeg {˃޲JpǶ~^հ*N}p\]OmA%|ckK{sP vn* };?9R M@W s`ͤ^6pQqse~Pn.RVYtY"'m+/Js5Ӈ.fw I`Vn#2l}y{ fE1JwdM̎:2`I|~tQ .xP)D'Q 8{տH[%]]) . mAd;&nΒ /E5"lPά (ϣ ji@N, )Ck1E޵YG[L a}45"ҁƅu,5eQ fUo/t"~;rbW&) %:Udڭ0+5]/Q:ÂubcJc@&xKz!#}QY֦8誐S}u)K&@nOq>s-7T_̓u._O)~⿀->g_A*qyhXsPl;:IjFd1oW#GɻOs$Wx_ᛨ;t- TT=,_mȏ"$H@.;P~xjOIy12Ø[K W# fIዙ43^1-n&$ET$2:Pu_wWv9Ty%#VL=JU~9%zվ +O~>?fV"=WSXŨO|TPVK{hM0:o_- .byMyadK# Lhi*:jh)Hjzm؉: ZkIET p=57j=v+3WӞIm&3midFnAA}b51TD@%*(dW fN:{.y"Z}2S2gmYZg_:gwR;Cn@,d%7{hJBtCӖ}z0>92^ioS&"MiwufΞ ~pހQ!^D-k{geveW^ꑶ'LD؉OxGk \±w4I(hmw_,6_A)=qFV%QX  t΋5_bn984Q51`①v&1M'G[J?yxzY nŷ $%{OpV1&TI˽2 0K 1YOw]\/w*c롄 <Ү.tGT:`;5md?MY1 {OJ.|K% 84~r0&6> E7g^^pC)dNRjɒ: 3r:^yO!v1f^vjWu6Ee ^B7uZ2* /!AK-Bm7Crl{Wlo&h8_e=!;/Z.Y_No#@u\ÉEv6+A渙;FG.֍M"QD;@) 5$* -w>[!nEVI=$;%k3:aїd;,\p& +Xyҝ¯袈ߣ5ͭbRN[/x `#A>9#hsFnt }]/,Slx5 *;8q?[1!@ы:CJbey䌄 vr5@0kE) 5&׼Ep̶BԦevas)O9*4FkXG~/ĴF/j|< 9Z~eF_ ʯC aur}jY dm3tՈݚ#HX_%eQ3^J\Cir-mvCÆd}Y*,$efw\CU4% q# A~-@%Tq >cd|5 aU7̿L{x! v&l w"*' ^t5u/@ndp)Mm1 xa-hQ*"jsЃٓ;3)n-ԯ et[Nqi_]6)ef >܏v&%'MmjMjSBHД7,lr\Oos/a&LL'S7?{3)'+J9;/Ͻ;vHhUC@N.?wEețA)4{YYTzK n Y{%f27'T"u-ªAOޏ[n+N\1Ӡﺷ?ذ3#4\ѡ;p9K~YGnBڈG>2 Xr CfG7^ZzU5WSx zèFR)id\,x`666N x1?+3?̙鴝̤i$l&I5Fcc*+ v. fj54Ը n Q4&ә==y<\9FiuD,>xKau}SgU-[[7*"Demƌ zS0; !V?*^7_4*># /[N)65ČBfjۋtҳ σsm7@&jٮosc -UˍQtle3.tm=`[nBi&;LApW0CW=J`hXu[oP9.!^_<^A^L/q Nw'y'nYw'zV]>=Rfz_S' qxC(U{+~|*1󳖸K^d7%RR ;8|1//ўDz!8ea.AĤYjKžfE?2[1P jNS+܂3_ Wv6Ni$;q]\ 3;{IK͹_^}E4(8AMfoYBjw$aGW&gUj,?Z>^8o{\5AثCP 3%/k8ʌ[3A-4n1wTg9evpU-૴Gq=:gTe5˃:ZIPE>w|wW՚]uq6k+%:tH@ۦ ^$ꌛA5hI/ߟ ϒA{޳1./ B:^Λۯ.$ԙu)_;EkR[L9Eju`hߣ rp1P*#k{4fT rz$@|b@* E>A-r1q340 6k6zwuڵ\p%~3-]S}ZskYi'KI`g?f᪄Qʹ5s[$ ƍB<̲L]ѼX%9i(P*zth)ْ g>Trhe6cf=T1+44]eS?-?*KIx!gcw5c#iBJ;?*=UTk*U֭ ^QmOLwsDGaT[]E);sʸ'&jYD{?8}5T["q,c?µAϡ1e;/ vwQ5Nv!}Cu╋:])Y:5$pWu] ~bS]bh9ye4567?)4 0YEIް.O&IuP~8x@:ܲv$ZGĖ<=6C3ƇYApWE9nhwP2l܌-K8o)8{3fqZhQ 5ü0F-Yv%fp6_'/6uŠzSr+2:pꤱ2f)qg}mߥڸx`,9(EH9O. :mM'`73wMw ܆E͎2G-]{5ewOփٴ, \+ 2jɥO!%Jkw;X_Rd *meP'k2J%{7LDD?;YvAmltqXp VޏA'dҪ`_5Van&.Ča==5_1CSԳn^ξŸIrW<92 (?h&Ad]-pl=kq]=q?'7~,)A9 ܾ RӲ?Jf%S `>>q7`T?lkTmJ.[>B^4w>;\WK K00qzZe bFzͼ]r2Iv5ysoU܏ ee,C<Լ 2rgln5--/ɨX7SgOTC/ԄGrdYFx®;}y7D /2Fq&m`ᚔQ e~s$m+:aj٥Rb b6qW)<2f.!bN)9iA9DJ`<ɔk 3 aIѭɻ5Y^}O[r.io&"nF jzYBlFc 2NV ;m׊QE,+ܬ[qc1/D?OQ/6y{KƝ9n * —_}ޏ|:!1m.r6_Ka=4]ĨL ȤyĿӎQ>I]B&hX1urO}R1Gٕcp$61֨ p>>Y􌌡щOG}9B8ŌGA ;6`<(DUA|"O;Q"7GVMwJཔ˸MlnJT_RIRF1-bw4mv}ǔ0@5[Ho (iH9gl ) cRrQHN@XèzU=)Ǜ"_!; ( 5 Xv&u)1s v)؄]99[A'$MZ,' j<&Ci?g`:=csvQ_fC3VD!kcwbZ($VزN7}_yxjqC)x[LO,hJqe }r@U vo1Wb">vk#,b%K_}//-CH؟5sz[pg{1 . /1jꆳ˲ob5y8ZZ I9bv0y縦F~CH;f*i2k_σ\]:Nkrё0swk*E#Nj?D)qA¤-CݣK.B}rI= g"QFF 5^lt&q/= (Obt=QRJ@b*k%]%C#C\ew)Jti,: [HO8U냭G@> هNOlݙ#^iUAT_ bJB?G 2Vdd)9,9&^6H?άB6CKL[_c7$.RQ'p[Ыlwr kb5:yo5E'Y- /*uҮwo F*OR+׸3o0 dϺ&V%'F^H詍q NL_Zƌ f2"9GW.Ybi#:9caeat\brs;Y QkaU/Ec $Y ^l5աNFK\xӱ1IZW2R'iՐ+ӍԊvf)ee޲5qq?[ RhC26ޠ8弈^ܷ nf4$C/9u{n7m>@nj 1封ۖ0qwHEJY?BKF457%W:ۧ;oRv -mKvX_nd4(뽵SՑ*RfRšxψ{oE739V v 1ےFVO=ޒ ~{qIU1 1ɕrT9;l5\a'fm {>8]Ւ]r> ˽9:\ԩR6~ t5޳˖yP"bO P4. )TZe!&z#n1#!&RV0_< )Nc0`EJ߾uy}e:.x!d⾴Ojɵ=+b#+5VϬEu焋#~4XmtxtO5vD{z>ms'GE).Ӯ&49ϩsNh Y6}{BI$utUAA}'+3?u~VpIç ?Cz)a3 1@%u"R\:XKjj}^B덪5a%NjY)=nD. ;L}K ݲܲ˞Y3-op P\Gi )Х[~ &ָY;)dX'&{?oo%a*S*aJɕq w\ kQQ-NXEoMyED[8T1Ӕ[9EͤѝsrI9p0~;r|y>"a_FX"ǔ" fj-qp-f-ϻoNh7%"c< 3gS1k1Ua>cRFo]R|RRP洨3+9ZQG r/s?Ȱ%Q=/f" 4ԊhI B&/ .6\rw8 q{˴۳Kq51k\".ckO/ߐ˒Q$Sv:57+dvT` ݚcG;Rkz\MhmqՅ]4ev؃!= ^:02aװiqh4b6"&%uӞ+߸_5_ Hw>yOOϣ:z_lؙ3RF* 4z太ّuM6&&5&FQ72ffo& Br!fƌHȻ`c7b լfpUHJfasy%@2Jv+u\ʎ78.i#>i&4TTA݇ nsXn9uCY{2\;O1;+̦kXy߫+N\&!щp1ԗ⨪jD++Q9_v>D2 Av.kw!s61'5_xs,)9~$$YR1OMWdZmX)?q?=,Bm:sB:&1%expgDp.ɧ Z0 ޸3!d \:\/]},[UdSDVr$kcݹ6_֟>TVsړ1^PlhY)s%}x5,e0lV0ꓦF"$fE _g7 =2r ϼswX#lŁ`OS;7KM[ ;.nLJFd(byoI^+=秔&}H&>{c) >X!UdCnvwv x_b Rg9H*r)=1|{07tsjI]*%L|x[enG)l q[3۞o_bOCxK(L|t cr&^BkXH5)*}U.{"g^WeUښ˚ZLR^[(JBEA<(b6XZhb>HxSAy_h묝K^=s~?%5)F1=¸2Ytl:2*Sݜ~Y"GGմ 3[N]ݥ\s{UQFD^BZNrS浼mcr![*I\R&,Rn$.MP6)#²"<rg?^s7 L5$YŽN+[Cruqmqʡ#n0DH!kTK 9A"h/?bI!|=윦gf 3Fƕ QR-jnFM&H h񳚻qaKUa"Ub??gk>06 pwµQ>aR! [ x]5aX#7hnm[77a 121.kǹmev.2ڮ{7+3iq,<~CN5]]U7z=%Wz]p1-UL'աL^ޚP6;o5*:-oUD-!cy ԶTXxQ0LpmUz(ўy©7+OT/ؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠؠG4 endstream endobj 28 0 obj <>stream HSw~kfvNI s I > Xkq\7&:!SZ!-ƀ%t%a3?҅4igo;4;Zg~ODSJQiEFQiEFQiEFQiEFQiEFQiEFQiEFQiEFQiEFQiEFQiEFQi~&&()iЌՋa1KxUR+пXms\ F Y5Ҋ*.@ ?.M!LvK p}=O_2v9#ryJ^EuWre<.V3+p*9eJ6x+/T<<˹2.pȒ4NI:mU ?ȕׯQ5tESL:.ֹz[6G8{|GO_ =Į(+gUTџ'}cWѓ,Ϸ}VIֿTTpYB/2~Y]te}Oܣˆ}؋A% ;4GO߿(M6o%CVk^8C_:hS.^iڟ%m؝֧yS2ny"lQdMK&mP|^#xt&9?Ϭ]-iqe =v:rAP%(ޙ?qI(ؓuI/c~u7HԦڞlI{O$\ܭMLP CXЪb6CKRjAFl,J/3a=eN.>Ӓi{/`vCx=*BV{Kv{Μ :Mf*D0N˧yeØ.yC3M)1ܪGaoX8Rk&R" ˨U$_yDHьob-%8ΡT@՚ ;ɘa C4=jRVv1bSQWѴ6B Yp$'ɠEDu_o5_y%D/jaI!Qe9(vmtj,bQҽ-lL)l8oz?t= sa? Q0hsn DHՅyJbBj*:nbS0ĮO̢\#\[ [)Ϗ o>,l:?M~Bm; [Ώq?fPhB,bҖº; x]*ی8jc jQV{YC<$Vd@\Z,dٺzZ p=j4~ 5+-R9)fJ1uQp?PaVQ k,ElPm~y{KO-I龚[cO| Wy@~YIzI%(ĬDFɨIAulrfՑ(,ٛS-H<Xcec>^GaMߋ'؝}?QNĜYk@)a]aDGdW"3WafgoTSOMY2{js/p;Lɘq:06&FAtsu 0`u\19$tn$нv%A??}O|;.lfgw~$V?\ts ݥ# .Ut ОM̔1o>MvЏAGE,̫"6}cI59KOo~ih|a"̬8 G2zbC|Usɟ{>,;k!yu^q.gVn~q+NmDKCF*Jb&z2(7TĬi%n~ҧMȯArvULd9¾"=aϺDwk^~0>Z'At<`Qc X f)o2 ٿmɱ4dL'}!j>^0ix*),s<)+%uzMͭ] KGTHBD}TpʡcsSؒ 2CLbb:9 \IMd^q{KȰEGqdC8*h9r[]aSF=*ؘO-=Ր y!|FD,&輁G2t|?^UK;+_F.NU׃5,˛߿5ԭ{//l$OMM*h%.p5b->7ͱp])S"=^*7Y;גq+6*K! _1cfk{$FI [FqJ: D:wEWLt'fsu[bf 9P J /ۃދ˂z:TOT)f%ӯij6:Ef]pI;*IfVgr`nws_]&HStfg\Y]3ƽȯ=^SuUQS{h27tH~̩: fmͺEr݃%qK/~Z{lÝfAqM֒_|ߛ||kvU40s 2\;_6{or/7Fb~5&9X8vUc*>.1r-piq-<\lEǹݟ:| ]Վk~z4Tی% m#:6d2AL=T̪ݚR/9~wgV>48y[Y[4ڀ{es9u|NymrQy#]'&&nQ~5owZrvoV {!^jrsZCBcRwKOU뿂+sKkŧbO6_+ ~EW\ݚeY7 /%+X9-C5ʂ_1ŨV@`M}稰Yz2m'8n5C`;OTPM,YX߄wY "6=^<޳E}88Z\4u}h#>Fs}6TtlgRy mn ;3zmL\1' jYDnS W #-͇nvȝkw?nNO`6`S?>OϐAꨠIMl[z->1q4O}J!||w qvE2034ܠ1 S/c~fwRz&Hx{v Ye 9 Fm< kQVN.X%1E Y)}૽ie`f$$~F#/Y^$Œ' V_X7\b d{竍)$xˎe* ~,9W5lx%ߙR1!G~"t;oV7WUG4M|)<~1sC@Tp̞W~!FXψzkt^e&bS¹~|^vi /<eذ2}[I#<7 #f% WITlu}1vs(Ӌ)^6ӐIŷHt! XUFbfOKǬآԷV_kA¦G|W4ɰYžZ gSͤRja&"yj L#2dne ";JJv)/+[+= Påؿ~ B& tbbO=V*<)E\O0~q\OMi ovkjwVjfg\qϑ@Q &1tIPGeG$> `8Btwd 7{q .n ^c|C]Yr eW6,mLNR`K6L`  MOd.ۖNƭ~٭l+8Χ_6iMW9Ez ޘnsO֏(6P\\ٚir?t}G;巹FDyk(8{w[Omhwݷ a 3uX5b0V:WVcp'y.xBٰWm'2oKF-m=*̎]tu @ 9q9R>E; S/ $L\ ruOяrq8#V㒲OVITĥ<&&W]uWQA<5haKуeQ HkK+6JZ:W  pAZ+R@Q<ۜܠʞe rsRYFpHX+:sY`2&Wjq=QX'hβ~C-wkQa@-e|T~&p@ƞ3,GuH7VL\[{ʺULv,pGv{}穬Cp \T~$0h5Ivm'r|POv}L@/F ʣl?nKt?oHOzz+zr3`VAUW/iuSx Y&K΋ L!up&ܧ|ҒAY\PhLH"6Rja>5faA ?:6L$9RrDT!cS1.Wlx ʥ^=RU3J&M=&O.T%PrJ WVjTtd=ClR%Tb&ۓW5r]C9TPw[*",{u 81ژ0i%U t&&8u ʊQ%e{+UWS-"z Δ"r<%pu޻#qL-o:1m|#ɉkU ipKڒ]:Ky THƏ=s?W t!{§}>T vzFZz P t<;0;h6~5_bl0A<Ƈ_=J~W ɭ:M d"֛wrh|=.b; ;˨I9$>$'rL|'=Ϲ1;Q|^-9K̰q0׻ɺ ޮs_H{4Bj0a`6Z0V4.0)ɹb0#*Q6?]Х9xսBD8?P~Tl:뀽&)1v.KTXr-'.LWŽMrIrMj0ŽjI-q [h.FK!j} }Jͣ MpU.dòS 4患/7\f, %.[2{n";C^2SRT2 LA1IBX20xx_ڗ־$Y 6^nÀmd-8<ܷ^{9vloSM-\;0sr[ea z휫6!3mrЍ]'/526#cDr~w}£˯uܪays7ㅕlUT?aXu[^s_lu-*v}3\Rt=|}t&& g6fC&LU]]?ΜbN1(Z#.r! iV EHOJ  +a&B 6 ggUƒvK%jWUbN=H^\]X4ů-$ b>ea%uI#mJ=1vꟛj~w|<:>px%DSl*ӚFƌЁ=`{wƁ&0 0GeB4t(2Vv})=W3t5sY2_owyE]2sbxf{R]8.>[v\>/*y͕r}@|=dwc F){y ,dk#>˦}2.ms)S+72CVVI79gzY*1d/)=x!=CàYF bVI)_W*mi:ȎO{*,w3Qѩ&):K[v)8O`TVNlg-7QhoL-+OwgOs)j߃*;OhSxi018}J#i҄vn{i&[?{6t,_I\R'2EmY&QㆦswUz?j7ȚY |aҖFY?1;/f_6~&iQcv-uVt$U3e>g +YIv=Gx nq6w2]ǒ8j4sKܪR6=PqzP9 a%o>ssYǧZ&i`1ٷ͂A Y6I2~#皫g]F춚v"=%!gR ;6zyM8 ta[i Š9*]G*35hR II燵<'CG6wDtTbNS,Fi+ID=x*݀ ޶:3Aau3aUQuSa`iKqoK/F֢ȰOs Q~ LЭ`+lLP7Rzi1H3@[y/dԣ,>5_ڑzngQNfQiMOmZ[qP ׍8jn{G^ tcSmIxK%Y TX}KXm KBCCHe?MGjJn5qg#SɛQ,5*@otҍr)m; FHmTcYX*a*f7 i'xI&V-7 Ќ1U?O%SLdsKEy)6oP|R3ƥ|>%s v#TTT޵56k;&k&N| l[qq/9f3 s2}NWL}QL'x'߱.ۑq_.,pbˎXcUȲu!sYn$$a}|3KA`%*h:A,hOU 14 }" IH>BGL{&]'t?,fc6ug{KwavD}еI6:rןv.9n<5ޒR>iܶp[n9|ߟk뚯+kΡsƫ&kWSt܄ca.11D4U:mU}9h;ČN=6ri\26PW&m6LS|pF׫Ĉ~%H4z"]v9ؘ2>`BtQ|TH95\S;"eWrx+*9g.cyLupI߭id)tT)^J+!O265KzqH)Y'| ;y[=!@.蒄nqT=|0r\ZE2(PCQ ]}/՜_R %Q$46Z166BZi_;K}b!#QT$1&v9;|dlL?+EMn 4`&ikx !S&$, 1,>>yǥM7dܸDl9V_q M\<+ eU4Wj9&n\\wYJՇ1csd? %wc]Bu5 ~MõݥSU?㓄ew門1yL+g)aʮS|rD Ոؤ=a˴D Wj %4*2nVT^UJ8H{81̥S3kZF`ʡcۋ`9׷㇛5bf!g ¼ڮ W Q#!;RiOO&1R >C=_;.|Ԓ3>,M5A଼{e;&y]B,pO0 bXD_.wa֣kV~% @@ڍqtT> o>1j 1/|4qL!S8B5aJzl\Ɍ9ᘜAFyx'&ȅfH`9dVr.RtJ60̆_4 %T|2L=2'^{-uVa60s1kqpygNJIT_Y__1^.l::M/F )SCiS_ccЙ‹SJi$̌'*T衔,5wCr4/#Qws'&]|/B…Tǿ-t;[.m#jSp}bނٶJ)D#R.Ǭ5^xlȵz%oiBGĤ?$BυL>lG$EݥKI%]FJi>*Z% bҸCʎM99^ 'łoZҦʦVΉIêM̰*4P>o#Yu{xp,&gk,7Ým{=if8{$`C>ca! ;1R#1xs< 5CDǠY`j>w-M/kN+it~$+5^ݨ.,h}rek1 B#"ItI)aLbnLyP.HlK`f& 2dfƅKN[c6 Y)GQ|a&ctfmh 4wM3*ߛE헅w0{v~voF ;KCU6񐇛^{W>Üa۸[w^Z;$`{)"ƎjXZTBmG3Nk-fi_eVRsrzzV6Ȇu{&[O c t|خ֑_[Դi._an=R7rIR_=5`:@; 38dvo Qanm⺋lҬS.TJzp 1Cr;~6 $\w0O8yt)-谔3wXpyćm;qHs;l{o7}w@_8W\&oX: Efnl20%eo<b:0y-!dPwUi ,;KUf~QTö(lhev_QR>ZN瀫nf\zrAt90ZcfՀA fE*gj8z^e]$*=r>h8, 6*% %/2 ̓3vذ"gpm7˕+vSը]-DW5Ҫ]riEfe%$6 z gfaIsjrԍ1 lQ1zz K5v7̝bqգzf痱8rmd3uI)|"p:q[+!JLy߭b䣖nХ*N!b:M` WI[B ELJv~6Po$oS@&a.lFWe%t8>*J,!asoѥ?{BHje!Aᵸ+@_&%C``uHM*)s1QHYGZ[躐ɖA66~f?4qZq2K #dZm#Z!:9Ks3s HH0)39-笺y2^Ux'k=)Kj])a3cQ-`m" 6!0u9VZ3 bv{M#0`5\SLj-%?D~ذ8Lb  \}P]%3uzI!@]RQ)&ifэfj쯍mf$D JZu}?Dzj Giݠ0@qEاL~mG?+kȕʚ{e]~ۧ9fh%\tY:(v]ԕ5pi*$<6>HT~ú g98u˕|qEzY*v|awQs γA Jܱ;qyɻ0e#(t[C-lg3ŵSBܤ*mX:^գhY@b}ùҒWb̢:ڡ:썬^եUwjK1w-c]RčoJ1>d)O-lfWNC'rvs3#3s_upNH).W %MrQn MhTɅurizuV"byصJcX7ifEYT=O qb 2|`9Ahl8F!GiGY\+DLmlLspe ɠz60\$O: :X^SekșVQzdHMĔ `Zfdm%g7s6-a%`AΒ"5s\Oiyukک=jv'l&Dc3+6F @͍bMeb&V9A<2;;Ⱦ]TuTwySޖrN?gzWd4!DR['n=x8t}6'V يKigFRޤv_]<<{^rf{]S TB$0w忀-k\Bt ƣ7\Btu+E*lNԬJ)kw{Fvy*ٵ~G u"/p^-6yظYȻ>FHu}$^;9guaI>9fei%=9?d!K}N{'S5I5U:?2P d?THgVTH[37v^x2WT l/:03`Wh'J&.U*%\OCؕљkv;1ͣ,lZ-SPoPPΊ95dzB \UUu""1l7= -P|ʞlL.>um]xWTO#jf73k]7jb.XS^3HIBW8I?ߏ +dWlptG  *v=gVbV x{$|f"fCijHյO&Q#\puO!\, V@AE7ϩ8;y+PWr\Ӵ!IgٸVh!a6 '{wv^}{m]wG|?سDm!;xŻ﻾y{}ee,<6, [e8GM<џ?JZ ?lT|#ef(>lW<]W}W;a;;mG]vJ ّ!B"A5"h; B Es|y4߈vXo+O?/gʒ;X&1'+=D`KܮijSbb ƺ+||N5駺gzAH 0 f5D ު;:.T8 ffn?kiLߋƇ)`$){ ̅z&#BNd$@[h5~EBw#F@X#IY)C b)[t]HWdkPI Ts~jkު~ה_/YpCy.ۂ,Љ_*W p1p4}34]}o$fClPI䑄# y黉&!-T' qҟJ__u3y-$fDMPõ(u>| LT$.53fk`:6 =OE᧒H}ESɷ嶦y"r#A~ G*n.XE7~8):A u}/u qG>\ֵp!ʰJ ϢLc=l0QR|!TjnMVB >۝Njk)م;t>[{<]yilk0M{Ӿ0jƚuYƻñC". u$JUʼy:I>/zezZ>QrYL"tRPz-KO.7ßĂ7ېLmKX 3)㭶㪨ʴdَ~90̓ouD+UKzb;* [jNWux(9i ƙ*R^eSBh%.~1'0.8FOVafY1rq\O0RWy X)?s[[N ݽGDoOd谥ynVJ,R!F̕$TsWsl75Zxc,1 `_H7(mډ E; ~mpƨIgGhߓ)/dA.W!q/_oZg1b;ٕ*({܉ oВwG |8f3m59O) -Ohn6!wᛝu> ʃ9g=VT_lB*݄$i{% #l8RF/ d&i80;JP[̱t؏<#n5<_5WGֵ-|q8Za9n3{<^;PlbZ?'YiQ B mr22AO>J» e}2w{(Q44 Pmgi mE]TM=c: f{"dtEO|j)Nf.Xg@mRMBz`K l;:%MV@uEmx^x9D!VxYO̒H]_0Ճhy | !%bִ͒Lm`V@ Z@[{Е8/vF)&T^(cAp2Ѯ(v_2hVro*e󖲲٠%X46lCogk!}mv~Aÿ06dx\CPrL=_!!,EIQ:Bق#BPQnf!Vw}}}Pc3\e,$!༴(W ? mvYBLCE!nVM0§Zpn(ߔYתF^HSqcqȫRdv}ЃHgT 0dT[ /h*QD|DyDKxi0ퟍ39͡rͱ,7? pQ~Ou>w:^?=%\+5siii-7 QEE \-T\RQAAqM;539g y<ϙMWl~0ky2͌/&5@*T%Ï5V٦'Rz9XLpRr4N8z>G[8vza~smc sl3tg0wI B82n v#^^[3:޺J^%l"7*_9y_dk5{ >Г 8Ł9h\gik +[Ձi_ʬ2f|4W鉶\wfh'"X] @%9mST,BasA_H]|o5BB}WmBʶYI@mvysv!V '|<)DV;q>&R 4*SdmzQho{4HDR.(9 pavga?!px m,2z /nlk+51?,7Kh0o?2\Z w"]Iss2~.8Ng)D׎*"E=7v_ltjVy FJ'%y :C2u4Rr 9Yh6()>ff94O"-P}^F`rRg2:L^x8Vr3~&_VVp 5T^9Vfo->JII<A5Ю~#%!P~v(* U3RoWY.?a^FWEX׌Gޅ{NHi_U\䍒7 Fˢ/UɺIfdy8xZZwQq6V mo:beA =ajύz#1p :Xc ߽ Ps<o}Pl⮖89ӵ0_<ݍ퉊H{Tϝ*t$nUg"MVr/h^J('ͬ`!4!]([-sİ~v?|ve){c\GΦs m)&RoepG|ЈM03(yUɃ[Rύv\+٦h&'8#%"Zs8N? G2\o_K 8eo`XDR,yك,?r)t7MVUSXia-␝|(1*o2Oeq>>H/ 5_ۦ%q9D.@ouŽ$)Nhzi, Q qhJ.7ˍf/͒wg>&F#edzl\cnV;*!7TcWR uN&qEK%;6EYiG=[mE=M0uTi+Mp4y35u_1d-]NO*Jr=sn6mZݲe̚rIS+" JK (<); & Z̙ewOw!> Z,@CVĭd̃1 ( k<4 s OFLV<. i] 58լqfRog$|*:tUVot7k<7{cl' `__%% WLelliW)k>Kqa}VZJozeMnGˢQYET훦 /pBON7^IH?n̿唓_UayDΥ}~ZĠspsCHCc|8L*DϿ;TgW:P׌`ajW? LUDL06W.,)bڒP K7ZR_NIg5K\3:1XqHk xdo` 393gBms(o嶆ޢ{jNϻLhU%"?ֽf:[mձK ܌+Ӑ.e|1+}Ue~}*N ֋#)d)~Ps6>T¼;E&T)dc..K9Y<ʦ|.qivI-h9{ϿL%ٰ^MCvhSMZ+;u9UN_\7.%De^ 2垥!NO'|:wfi=dBkJj 6*`L[e"6Z`Q1j/l2AC ? nٙsW'}|>_iNXh7!My滨m119U|\Hǩ07W;9)սVٕvimWFL9X^Y?5@Gǭq1LyT(.q⫍!lSMTU[uZ mȫ}EGcT,uHRf9Oh+X` zSK v e|nPo_,L@G=>ٟ,׬7[^m:NW@SdXqGιhQTYu)|J{hׄe6rjp^cCn29yއFm~<}@G4H49)V0-H>t01ѭbULd'E,m~SѮ{GksAc1M|"fΎ7C>a(F/ȻԳ >51CJ,k`L䱲ܯ7yrϊ |Ưt׵#z44Xh9)rF$bq8M:'8f{ T:BKN:aV4uTdBvn- m %lbmr0lcVI}S'Bbd!&[i>?YLm/%WE/*VIi@dZz]!pb*hXaP⋍ް($Sp< ߛff0зWx IA -a$@mpN2^0hOVB4Lj6K[70\ F{w*:W&3sJR?j]&&[+nܓQ+=.\X#2)vipTuhSCXJ/;ߌ[aSC3u3|rq:`Z>I<Fh|jkﹺ,z?cd_4qfA^'j2 2qj͂`+9I$ܒ㡚ԃ~V&al<UN;㴢[m}E/SȂ}8[^~n,Ba!(xj.]y^?*|dh{6CEښ.,9h:jT<lv29iy-7A':va Ɖ熆v79>8B(8d(8T`mnjV=xGɎ5tpb(BvS<᦭0fkEհKηVwR.[vG8C0̋׾1.gtF>bo\̰PbyaKBml2tm"Lav;zw<Gĥ~YS̪o}fkGщBy_ف}kA`a'I6tHZC˯˯ ^vV ˆo?XvidWzXG]R/gxear䞲85v?tTd6؛QyZL3>P2e]qZ/>e2 nVD+-rʭ:*4 R|UXSyyVXS|3$>TtP"z W*c7dYZs4\8B\α%WsIsH{C/.ZT#`A$7vѓ?BF8 bޮPڈ(/HMeG˦@:lp:G_~$_mOZ,ؔ].NӒzMtS_'K[OԂ2=]kϯ/?uMgSe  fy,=b G~62{OUŅ"}dvܞ=ր{@5i^ &h"L>ed)!mCvQKK6DM" OCd{ 85;U[ys+>M=` =XC7%4LK^:]NxXNK*cPjBuNH'|B|!JٶzN{S"Z/-|dyCޘX9ZKr%9 KGiU$ke/=&:#`DqMy0B/ֳ.jGs̢Ueۤb\kv4("iEA |ҤG(kb|]Ue4x|OLLg/$$&1&>MqFV Rj>s+|z.'ȀPNS{ ⍳UMrSeU /GȻԖk+k_EK2kxvaJ` "J#㲴: Ahw)PpnHWLwJDDir%,_h wvFq:9SՒ2N|Ԋ(? Zyy79xB'v@A(޸8^_#Wl^$#rI~̫5I<%c꤫%lW Ì.ZRɌ(Oz@J+yo+F'MqdHM;mMP`3%( g/{;3="}<0HGy$Ţe^Xصr07eV.m,(;/u|@+53` ļ i(VasyXO|6B Crqq$v%$j-Ԓ؋R4A " Y,^J;(m}2gz_yqޞ9srR"@jp0 I`G}I#Yv4I;uħvPڄK`K(*5aFOh$8:D!4 L2<}OXȗݔ7=T1xyџhR0e >V eG ^A4="ќ4ȊBdCz1tt(q9}ei915uu'Z~sYR-UR!-2 \p ==!JₙPQO7K洢/Ƴ]{.pNslo{@Z4kRBSy) $PɀB|}`Hd9 DXL}n*aemtϗ#ªoXoMʢ7IE;MII n"2(/oCF}LJA8-hUSLd;NђբQtГ3U!%FC"H`"? "D#/||? i 6# Z r<rRlY]QfѾ㽟\Γ6o#ѶFo[`JM2p T7BH髯%ڻľ!|:S<7X4pWfV;Ȟ{c]U,za('-[J7vZ;[||_9O\'[ʵ9sa-.٩ahzf{i;IZ误#*$SUJ7i=uwOd{Zt~2cxST]]M\yЪ0Dw7ʨ>҂:|zbIh!B1 Nj?[[74^Uain3YHuuPPK e'- 9TQjGMAUκoUzsY߶6?{ΡvԌ֭ k Jɇ $%hӍ2-{iМ6bq.6'ֆÝ;ޯ_ݛΏW}SpԦ*e!?y<.>ƅ<1V]F7 \l[:.6 ߟZMvmOMSOݨ+ ]D`-ytvս:t^\ {^ٝ`BS+I5ϾNoδmP[f =m).37}jϲx%del7C"U@cϯ\l|8X`$aJnsNt#r0ȅI;wDn>1SV=05c_':V9} ڙE9;I|V&< %97b@Ɇc©[rԮrvd519 xWASP8 Ym%"9t3ʷ:td .P&['bazoxز\緪a2!W¢-wsq!Ի޺yߡuLe`D'_8Z'j?9cS1t &8j Lڮ$Va7gɦSu2xpK~)a2~cކO,L 4r/ R%E/35O?pZ>رlxn٪o{[IL[zVp ޜ}abJ.ڛ:wTnjN~^8f{U-uDkPSƑsx-NF!.EڒG+,ݟ ~؜:ave6؝(C >4;Tz;C .`/S]An!K+.0G քeA-=ৌs2vƻ-y9Y'A\]*t%7aO6'Q_^zDuNEKlys:0!m+'ap1ەur0%R ?+ҊHQZ`f _=Z!S\OMi:US55S:SSe:v]\Yd߉ fBv 6B@HFL}ӽu?uzdMl=WPcdLN" FLB;O{%P`r? c/_u0~Uլ;8 9O kK,ٹ|w55րoqN| pYPX}/65|*L,7&QfN_tr iȓΛ!mBE8HLyuŌԜԏr#KzRGoɍbg nf` & ΅](L̮8BV_5pA"J~-n\{M*Ds+hmFDx }4^w5h-;l>3&)F~E]5IF'~Y bSR~Nk p8O!;oCP ޞ2;2` "<_Fם삳yLR/&%OiA"$uiZ;Oyz-~eG"̚#Q$Ձҙ4،U q\ٗ'7h &&Lԧ H}Hx`jª[1=u_{REĜ{J 9k-QzMϏG=גj׸ڼer[̚%;0a-.i 7fM7v[a[$.MW|AI+;i%k(}==SʄO iȤ ͠0j`}N]"޷HO%&ڙe|hLl:P"3W"G%(f;6 dD4Kx~@l)^>6~lAN:eJ~4 l0 m߅QE YOvbkN^a7ьv_KjyϢӨ$j"L愅ܐw XwKe(XCE;ݿr~~OfiE;y"z]{7,j6FjոޓwiYs03&8fTż_䃟D&[rr6 vh&vk|8 ߨ싧2vwΑvM/ \ Y_,Ǟd=TDMμ#Ο ܟZJϥٶs8y-NWJ;/;~=YzJ1V&# fdG'){/l|TGn( )+R;rWhU :J3VKb8Z&IwAXBǿ"*:Pкj.Hh[#"TD|CП3fpTt^1<{MaGְTM89D|sVpږvֳ1 vH5|7yAm'6. :m%7*Փ#ug˄K rʦvFo4_% ɯEKjO{ZqȦpwJZ8f6#vZ+Ě-9&𮗷Y@LmQZ ʹ3QS1u>URp=U{7 yxCaK>R%̍::G,op 6mO]!N.5 at!efw~x+l|&ޖK[AVyjm{I+u.<(x}=})c{xwQ%*f_j{yi񥄆Oq=Qzjj&tW:==I`wDI$((*51[ &hQ}դjy/{Q}_\F Y^igwX}Q+%WaOWy'K]y1-jza]ZSB k)=֯&6HP$uRq]i_zrڽrB[~TѪ36*e|kA:BoJAۭTtuhMx5\KDצlfDh-R J%66E lb_$i^% v3Kl4J"NOPCAĔkpTвh'DSWV*j=G^Ч'$WDT&3g/v?( X]ţn%I-|yZ |<:Q]#$귁Gz՞efIvkWP{C램 dX?B RGnx?ؚ }x+AMwQ ի`r]xTm5t^\StpO܈ m!< gOf[jNO% :VQ@y! -#>w VʝՒ>O4չF.9Cf/\qI=YC&Zo\W 6ĕ'i;6r*UrO@£a?7ɥ>Y_=P7R/x5-%nKF۝B;ݏo"kCOk3?c>+ pϼkvŶquzb_< .?gį{W!5('U@{7pOC[z[GF 5xs8laCp5ɖ&" >g!rbey%*^ZcT~w.2r )6FxAl6?e7›_!JkQaZ{CCeWAfEr` e.޾_Ik8ߠT9!~z: d-#+! 9Jqv8(>[W[;a-šJ?KI-cq.9\O h_fxĤY WtL[I=! zVp 瘨k!Vcu[ \Z8qO̒_쳨gm>MZ6K2a~H?r1ۈ$fC=۠~Pq["jZ"\ $F\)}H<7jLQDG(p`5E@o jeu\-WO f>1e'#;* -tiNq33-eViYM+" ,*ff""(*.ʢ(nuuz_=Wugeб1Td %&1Et|Ctv[IIZ  iȐsmDdh,w=#_LҮA[r9;"G'8xL,r"J,1F)-p,2R :z,d%",¿q'lEo*kνah-k +'N%|UDLZ2m mpqƩ=5eu#-z !A=7uf_]0G,W<3 nY0mGDoLpOhy9t}k$w.tXn99go 6v^ei WOSU)-1wWsA^-{pE c^m Uᒎ5LgւoN)o꩎A| hj/ TgKi917dDoFPn1QkK 8^`t +Ym z2!FD. kMmzhR0W9AiC+晤# GQ3~wivkDd|c rU^}=@E~3`>j5uΒQ>pxkuRaYzm },, mg,̡^wWŮe$>DFPt!Fphͻ&0CqVe}媈dWz5أyZ wLEiiaWdC:1xKؕA@nӓ/Q$li^~S,ٖR:KȪZrnW{m ]dX[U x@]gIi9goni-ԛw{ z R)&,x$icެ _Lw[ ~ALU*Xƒ?%gE^i*zS Ys~Eه œcc&Rbtُ}z6$T5C-Tr7 ¼&l5] ٖOXs_q;~LQ.(~oKv)%$xe1P4?=%Vj~><Dƞkz6eWŬԧ0SE)ږltW[_ KRүqa}_b5xɹKZE;c} &뻅Y5`W_Fg0|}5R9 . fC]S*Q_+?*/QX Pg&^㱉byJzyPGhk_Q:t{*e=-y1ţ+Br>]ҝEyF/$ 0uC4Y{:rҩ#z'kܦ뜆f:5/WltKvMv>:Xd8P1mbBs&í$SDQ;r5=oS(rk]5)ףdȷ?\eWϑ+5Ԫ+C/2QE,[5wbKu#o':rǿ d \ۀGfJ,*˫K 06اf#&h5e۫笍5r '̱+İ?K1YWvIT:@YmOn٤8nz|f&k?Ա[ޯ뢾eUvU"j? 꺘MXwuw_ei*P#.$╓Ϭ=3+8j͸ 4<:\x6Rw*< )w$YF͉[zl:O-\rT@՘\duׅ{ޝ>!b=rB ?X|j͜$I*M4g4hGB&K[)1xGZy#ėjC77?1a~5}KI*V^m೽=ieː*b;'%0 S}K,L~'AtsQTye}W+taR#y7=!Am~5?ӊ<]SkSu!<=Ǫ9 蠶9JX2;TK |ʁ.6pg\Ʊugc62s1s|}ڿ襗auI; . | ]so)}ud/~%leaV_xf(Gf!7j(vƥMfP[l/u"TPKdI82JY)T9<1s(a«hxMrzeHK59u>}$:?y"[f 1/5C z ˨:*+}ll+-ζC<bb"&j]@(ګ]dE<6`##-cm@"<3Q kn_;^:093Tͭ>b>UU;yb"Vjk*WMI O=ql w׹)Βop  Hk˽x [ 4M -@t0^qZkC:im!u=iYARq @vh&>߯9`yo >uu}%'+JY\P!a#5`&\vSp9 A21&ᛓaDϣZ#<,AξkzSjn7 J<3،ibᗻSh虙M~gavxCZ2" (M.U23 /+)rGd ?_ffm*?p]Y:.]~dTb4D]=:F95 #nZ@M.q R{SQwɅԭUfI(Ma q`PzI&vbfǶyQrjZݧ /YSUOݯUٿ#_ M n9ijA%AqZAe\d5uZḛqw읎E#! {lГ)L%1? ^7k(Y Nt蘖 YpPe :ۣ`5,*S{":u7jPC6i( dƱ{: hR0I{G@*ȅG#얌T;+ ߝD?q/b<+}9h>,CQ{#LdPZn끒UrZL#8s jf1=}CeqC%-s镐vֱﶆ~r" A% Y!hoyU]M21H ,ߑuRF=|ٓuX/|:^;ېox.hsL6 0+Cr)OoξSP}Kʷ Iy`iy&n4~x^!>Udþi_o98w@*=xK- :Zmxtj64-`Ҙ;SU@J75Wp?='k1,N!ΡT$?>\ymo bf.`M6>B)ș yUkg ՊhEX /kǡXHAec`ڦco'[lYzxS, (Vh8'I}E[;̽HpaN&.vTR}J>q{pR.nߢ6IuQ41kP|[Лy9axYzۧQw,tH]T1~/U)!؝\#ECf R26L_%ǁoM7S\^_ii3gwg731'͔&1M3q,1VQH&6@hAAD@,i3ٝ?e^ߛ{y>RhyL萑CZ$M~OiH'vR`ۯ<\2{4ߜ_`yUtGA1Dл!Fv/:&ХUa}4 te᪥R4z1A~mW{ n1#IQ(vkۧi 2H]WQMqZPI-2W.1- 0Ij|KR2L.r3G tk+̷g{rZֆ}uJm4̯&OC||M<+B5I܈C R }2&̽#>a^ q. 9#pWC\GXh- Jo5+z 5tGE.i䈡}f芚hA}οތQ >-!34 > ,3oί!m ? jōi^!QFʺ<|{YI}Sߞs`3I+UmЗ\tx],x- ؠӻEGڔ1Vɽ^l3x&lS-R;]si^us9FĥnaR1T6uG@x4 N3eԪ@ >E,y}gk%]"m<‘;2FOr.jV럍⋯OoV:l2vg `)OnUcy"E6M30':yRK"&pĵj=XJt[`N5dK(U3ǀ-'!}:?1}VF==kF<k;ņ1\U@݊?7约p;cuձKN푶[鏮~#rIy{3ԭO8Ѯs;\} e^-7#|A[3<^S@2vSor2 'f;_.q*Z 3aS;@Ð;ʻZ(f,55FȺmK1տcr.Y{9v"z|q@ۗսp&TԩzBh31 CVg{TlU<2^tGN.4iy3FͲb$ڮks_~.v-lo`d]yV6}C%ppoē5(&hiN%4eGN>X@u7Zt&ZU8q>5./{`7ɖ"!n^VO"dL3?SzeWsNq>:&eIbJ056O--0KK* 3OCuíj," ~$krO8^$UZcGǎi,xgRfƉ;%Y WU=nC(Z|ƣa|A %gk )->φ)X;ڬjS;ٯ!J~LQ*s"6V=P˜Ϲk޺'Bx2+RrJn RuA*:眤|PŚf{ .XK-6풨e@!ZZ=}be³JoEX= * :ҏ7Kw6$Q6,iZӃ9b_zcWt6T;QUR\l`>o(w[/$0zu#aӧSk?b1ϹcgImW} A5h)`g >Ybд"\ӌ S/: p0)vi]}%#FNsʱ>gs/IzĤF z>oAmHgeȵN5Cٔ?gѪw'orlᮢPB̼!cW;jOMT|DGY[Z8Ԑ=ODCҳp!m3P^j|n]"ŽNR8p δ&)/ᎁn` *Y+,{LfM32N1ƉI&c2FQ1*Tl(R"N06l (MDDEl(UPdrv!w{s~NVe*pV]ᐝf-ɜMd}.du-ow&AHXlɏD饇zfX8;;bl髊U@rAuJQR)ff7[(0W][^m_AǧuHuB;}PVCDR~m^zk2bv-K+^|AR?]cxb,Z|7ki~5@/l"z`1XW'U$h"X"n6M>uSCH/[y9V z5Qw˯T{*_"ψa/ k]RdOFtM 2K)̼?| x%1ieqkcNu*y.[уtU1S'ŀ-Љ$S_^5=\w@u"GՌrO Q{b[ (#13L~c2,]ŖYZU^`-*b,⨝3$ xV/¡x榯-mAūg!MS}H-n6()rAr2n 7 ΋KiEbMkՊ(yrWIpL7d\JFѮR9LS*cīΊ㵎 |SI+tXH%ZR7]N?^j>YlD1B*vB|7ƚ.%cz3NJ }׋M>;A\Pj'♡\QaA5 PF/ΙK__ےWj9wX()9¿lqIJXNˍd`>-i2@r+%;' u?}T2kѮQ7ÄzU9RoQ0jA "QX7"3ɮJ ~]#1w#leO}4tnݡy->XC}&YXxSOݙe48![nɋD<6T?º)Ljo\SĐw.$Χ.y2OVOkipG;65sObI(l<ҳj*FgUb@<0TG2dimҗp//}*J6>vku֑QAh[r#˫py%a޺>MT:VZ"GD8Eق,Y5+gj t "&tn >|qR֑O|o%;Y!;M{q4(,dMI3Iy Vh*B/ taֆq^8ЕO0 BL[_ml/!I*YުYiE 1M%qoeie1?66l?[Z]HV[Aj~"rOQ !.# | 591@K[Q{Zjn*_ݚk`@z4gW ѿD?gwIKp +ЫGyAZAW睊p1Rfh+~g5 kd@FZ[\Cnȫ"|s,1prb{3A:i{|mЎӳ'y:q*^l*S>ܻVT?ݓ )y MEyk6, ޥuQ-чmya=O'6ơ/5zJ@Ǯ c3j:xߏU)zMTcAZ8H|Ex}A΂pWF9,)Z 3']Vh|CT=;`{>q}t R"陵s ^ rQ^~hM%; JSNyojލ˼&cbML cZ u@%;|G4ڭ:w$9T+{9UT&HFޝjyUĬ3#HWٟɐ96ΣWN fGw`>c#f97M;=S!϶^͈rruiY䥏89q{D]"4ޱ~b]Tmp0Kf.cK85> pԄ?x^~4߈Z~eh#Zw!b}?iȺ - 0?#uEiR'ɺ iI֗dO;J\zV 4(;'תP|䧎WGY?<2w-ݦ%5ef &]]D_X>925j eaUrIg]$;[bc!c .*qIg& Pt8Ǯ902.%)'Q^n(L?b+Rnkҭ% YJv=%f;7foɆ~>耝Zy '>BA&wj,x҉8ظ̣9jϕ&2ΩXq羪&eu6#p oM4nd^!eF^T2JBV?"[ˣ/ Ak.W%'^Ƃ C@~Sq2ۄVRM%cך Au95j^(bᬠ(@AMRozȉ}Ƃq_KGȭthZhEٻ1fWjHH, "HvV?B'; 2vkq)ne}g!mo}h)&5-u~U.t"䤄_ WUzoQ| YBm/&:^ m~F{MѵaC?9Cc ]1\"uo̍ |CB|BQ2~oK&<47Ƙ@1G<>~G-vIܚVzT}y~[ш9Q8r4/Dl$H'- C-1cdQYi6ʩd$9ůRI1&pk4Fξ_q$`,@[s8Iڍ|ujf~kjY>3uD>pTsԋߎv c$n)8jb]rk( "$9/m7CucuD*9Yptg8v6݁mfF!vHH(RRqFR9%r$Hiðϗ:- 4~:< ⽩419 h?b{I(s/aqz&2peyu4&j}$ D[ fEu}<^m-s|x m*}`X!'ӊQd5{1&%Oz0w߸UUY1N ymg(pw\t f[Di쩤{bR`Rl(z ۏK0å1a#Y=eKM!K-yIDWW$slC^|[Zފ˪jaApFD%Dte_41uG|ce϶)w$@=%)+`$KM/I@Ki+;w|_ɏ%u9XT9NeE2l>YuܻyBSHiqaˤ]Um2{$^X:.Z?_3#5x1fή N>?v2T3rw59NQY' @zk*%DŽo#H<*: ,6I̔h[_Yc&fik#ieQ3r=:>ޫ'3s]evhn-̮8i!wi ϋa}im"Ky?n!Y-#``TBWT"b\S`~lYVTmBϪ4G/䖳>~wQ5G{qI!kjwĭ3vff!MfWoČ="|raT 13fJnuS8-=7ޙc2\mhddW$UAmyjmSJWrމ˿hZH{A;:&|u ]PPiC,qg݈x(XvxW=Qz&~p w yN/DE-_!~izv?Zmzy1>5lzoݛ@6<#lZZ1@ҋ;kWvmpw!>fK? ,̱K8q9>eu[Tz79֎tMm=-xw1q :Ͽhn9uSrvte*us +ݨ'~l @09U5!מC+6a^O1˭JQ 0ʬ~%<NMskKOPM;PrCʺ ܨܭbm)!=ǃ ;bW#&- OàX"77Yv{*2@))OM+; ̎>E M#i<֢,(Hσz>g6Y@)A3*>rЫ:I]쁉oL } 2*J?eƕyJ&3$vM⌗ q9v<cl%@B BZ[n-Avц$$V`BgvV݇s=+P" kp/%}[YM>߮ˆ5K,Vn}aj>sv9#@-D(][w0;q|~hu7;85;@9f`\,`0a<:rBrVk/rRj>H%/X=f`PPV~%/JZf?ߓKom=ǖI7k^l95'! ˹uz / |~س8ܐoM=e͐d".a]%E(]i#8? ̻% INnǍӀs*{~-aE ەC>RUB,$$1`=&Nیhg.bO~7<7%;e#}krx[&+e?EԒkm+=Ы L}z$g3UFX%잒uGy" {kqۺ!TQy{7U@;@EBҊ1c0&53@mDb, r^zsjQ%PF,8偑[Faq!PvHpQQZ`Th y/8ތV[ x2ʨh$.|5 SVs,0=)kfuo}L!gQF7CIz8gEutf*5c.L5ڃE6 Ux/5CkAWkh=4N䷁yPLJ̽% ╼=vhE=lF]%ti+nDzZhMљf̪l`_sOؖX֧e>qɗ15\ @_;LHڋNDկ`^YؾUVBĂ;DkKZd q9!No;63Snq铐>viXR?Fԫ}032..'AD%$9|;yY P_v&!tdg2~9Zu\ >= eI">stream HщR44m̤$NL9츇=]۱cL1`00C7ݕҮV] !)L3L/_xdUzգZٴ 6mc^21nnP*Kr~`U36RdV#fQM>AJ련UըkJI-&+C@$9sk˰qܷ Xt| 2SZz&>W$s\='eS$JRfW"K⒖MTpqjvB(4G9. ݬ@l-fwQ@B4bv{ &=OqDN &%y9-Xp%7e⤢%9PwR?o$ݔ:$D͑Yx7 !YZZ?R\+n/x%LW 4g ab7Y$]գ%'1<h2ٟdv$ SʙZX3Z lj>bI?gv-zz0a&k/a |0ca3>d>]A}ܫv.bUOғvGkTP!༠Kd@zƿ@z oz JSI D4З@q̺l`}M r7 [|0IoP25L'ND-emPV=*^T FZ8w}|ZV#?z2V ĺD9&zQEDvMNIo= /BKy:n4~-U4R ˚E؋|{5$K{ O#˥'h1 җ$,Q >!sTlLi̬EzRJ­gsYo'-cnDO'qoX E6{qS`yn3~B?;UYebE>W jʼ.ÁÂ\oB%fv@va+QfY1j'l:;VL/kn8pxĎzU D1nJSZ7@{TUZ 1(L3H:A҉W<88)ɕqv%ىƣ5Kt?+ \1*S0fT$AU.8Oeh.7kĀSш jC%Qߑ͠neOՒ;AauAYTܤFL}MDl~z}P?.[|Do gZg>Pٯx!6LG^a&XIX,K EE-]JP9Xlrݗ鴅i |<_7ۿyKQndz|X65:0Y.*r_3>oć;$:]\؃Fp|ܡ2 Kܗͷq1 j'fd_e mF2;_tD5/^߄Ҝ xۥ `AY2fWkOWF8-8(=fI=9m+YV Ľٸ6tfj#^] g/4S \:;G{8{y=sgtM^YbHIMy ѼX - ! #PFnr1gv蔼ܭ_Ҹ-R">+R&ƒ^WK7ü %LGHJl6Wj7!AH+7\IѭWS}¯qj7_\ey_V9Ceހ/1ĉeFb%QRTR,JfXf1sszGϫ}Nj(޳[3Ӝl@9nTot⟲AޭX1o 5z'DtYbMpFcwq5$(Up9B(5WI, ƩWCܥNƫM aɠժUy#CRJQ|]*zΘt/!iT2 *MUB]5v~5Ƅ=1>q\yvݛf'roXHL ?3Jr;oJK|8f*FĬzC.LI$>)ej2.fD .{˶}yd`tE)NX+ȶnjPť`Lڤ ,Y" ("߷l\(`$'k ',kҝxT{C- I0X6QnZYg)Cd6 5n(cusvG)9[0[q|ZUZŋq]T{Eh-o==0Q엜Eh HKd@ P*XrSt3r8ƪ_f>^-mבӵZ6Fߓ W2x=(HKC),BT^&)<RV\LE٦-нol`{&1,ʹoCwJ=X%e~  TM .@Q@y)c <Ƿ[ȵ}֑{jMF>wH|kc뫫W9sT*R Qlu k֠[ ,(Ujkō YUEHw}o3ѵcUY-z36I e,o}M#4$ J/Ire})#܉OֺLNÁN[i3-yNש;֐E3c)"(} E'փ^) Z@l4vұ M;u@k>m[iŴr<.WHel`;k\L` @ad-ptR.k[Zv{T6b-hỒhm(6g9[|[ֲ A%)QZΜAs$J~Op?CuԁatgN{:V\ e !-P % }Ynron}_HEBE?|qЋʖ 陈;Șq*6g G_g8.b[zeM]sXY REFk&J⨅4:ɪ^ 0 zs-t2b%RIBdAGU?BO_^K{z C;.?B. Cf$Oٺ ډzgBHCQpfr0;VjZlD?:|S l/W6O vh/,r)Nz=@kJ>ʴчYtȷ$7:%O7x;58c3 J:z#ώTd^[+!,_cTnx_I/pi:C{e3HR}8|yZԹE%⾍=d@`tRU55elbhrrxIQd?Q+w#$ fphN:m"I4L56᳼_XЛґw|*<+ (~)T$By*Caz]1vY^uXį9r/>H2F]('&@p-Ōݴdw>Kp;1Jg ]{3Ǟ I#2qi+[jhMud2E=&J1Q~A|_T/3޽PaÐd^/ wHqcḇE>Cg &"7f.˔Y +["2p=$!CtĊRu 0<q:Ӓ]FʓF:ہ{j!ı28XɯmB/a.'`mJbPʪ*u|atTyզt"aG|-v\G%rTC9pသ՜P)a[S 5ɰzjbʌ*l\yjgFEiL3Q|k4pX+NI ;+aTA&e |sT@H *Z]Lzcק;<܅S@Y::Iwr%9/m,䤑{AQ-֐tԆlqÂZI!EokI&ĥ{oXIK%œn)q `@M ,ዎdPL'\YȬp~p;_+ r a ηLz6s I8Q}_KLox+Dқ\RX#4z.b{m\r⋈YL;s~MʳC2;'-< %7(56垘= K؂ 8~#󓛤A:$"'kaSl[S: +EX< ʉǫ,zek}[3:\}>t+J} E:2ap  r\G,ٟG8AOv[Ha|G_c瀞ј6;ڈ ~8Q_XIOrbλTHQE۴ K )nPOW)KY=q3ae^NUg㮈yE+8wuGm3̱@I{ғߩЍC 1B[ nuqzdY\'|d2Z !e{.w@Q2s %1Zi㰝kM nn-D_`f YDO7$z][L&$.4bv DQF>0Q@T~oz3՜/?W7WhoaV16tuEPkޗ6S*j3EMI0u`8̩&H&gTp~l4gj1Y+@#w~n63԰,%#Bݔp78l(׼6'ȥmN\mC^,վKC=pnQj4EM-QO}N_ͬjV́rsz|~4Çe 9Q0 jp.PFnqPo+Z|?YgGN"#:CK=ذ43.FQtA.çL>%@B{7GB eZeL&f!sb;ے6Ʉ\Yy')_exNδ^&hB D[;^7^l o?bU&np^ػg|U'eb!Iw yMl345(C5D#J?3;P.B 0m)B4psxG<">@+)PeStO@7d'#`‡[y"4I0ɦl ʎ *vw ͡#oҊQgu8 Fq w>zy~q*Fcf ,#19x-"kެ.P'KBOd8&{!}.תP?wꪰ'? RVo4-LRUБ+e=*c_(ꊮU4J]!D64QEHO>E a )gyI%D?2AiM؃qJGkM@g*js#k38Qr$R!H sUFFbsU̶Ѧ1z1wFif#vJ\~G rQB 5aw>C=@ 1޷KIdz3Q#tp8FF>;|~#NI jF/wMh ;V;CK".6:ӜNơl]gy<|iuC5ZKHtvrϗ+3w\7mcx%ycSn.Ԭ%q a8˵Q,br\W;d75w.F\. C.$!߶r+KGI!;0m_!h9v9I_ȯAk!Su cr0Ur|U7Wq b(dz=|=~`WK8bUJ˲L Ps1J𾲎*;3l8[$ ?Пmxg[ؖymBZ(%VKu&&C5P>k# &^m4ͷU*oc^COS}UJnlc0,"@pj OYrf~T101qGz]2Y@-2IU3Dd4!}V lz䁐PR3^;#X$Oݓޑv:E8ɆA9.Ӷ54s\ՔآeKj#*"lef +"[7{9y~w?$넄(95v.%쌡]zO+,uTַ׻1Q|{q崷݈y&P*qJ()9ԋ]~f#$^,5S |t0݆ߑJmt8> T=W2BnՁ`uicYXo7j[`wܰӵ17q BxHmwĕ],==O;eD W%!y2~6+-pPW+{!`?5ցNB#.^`J>U6Q̛H9QtҌ8bҽw_ l#蔽Tܑ Y1v^<9Tsnh(h( cWQTC꯳|H'LCI }]vO郍k~CmC8?)SCSKN,zzc3FLܞfO7C9jWCxUiA);h30 dHHW܀rƛh98̫`T u:Nɹ7=ЋUV*!NA;ҿm?l|K{k4-v+1\'!*!t|7Ֆ5[ceW1#UxXh<\clT p!MݟH0uXVfqΉ @@e@|?5=h5tmy< ZDx  q(е/St𑚏ZV7}ȿ Ⱦ6DJN ?RfdJܠ.薹-?ӌYdf'頋e1c31<[N~@=qKq@Ά蹞YVKBJvMb- {{ܟNuwYvpoG Vp[=c{mB;0fց 6r)nE(*h4s |SՄL-#4Jw%zcٱND/%$EFuKrOŸ_%&\ZEW6XEbc>>7inRTQ!6?D9->Crz!΍ʳej,>{(':>!(E6.[ɯ؛$; -OO\G(T'|}i2~*7ɺᕑ^y԰:V^̯;04/dZcmފT`9&:W"vq3,Yc̀ .sgk<@/-3`\ taQ,E&qj徺}eSU/;Ac#xM,ZZ;|&>}W݄]jsZJ{R}SDC;ZWM86!dBK*8W퍓<2Rځgky󫮹+B}[I h%'j3^20 %чy7N[۽πJ~&~;jv4}'{Yٚ.).`"| h(GT2t(+hrsv4s0tW4k_]rRCZ91~GrxOJ 'K,K ;N|P1hBTQ PcaJ%~&kW,>[1!QjQ jFϦFX5P` v9N9)ͭ>]yǴLЋ_)[צn\m*bTc^}FC߳cCVW#;7".7T&f!1(VտwۻCf>%g#k^Ί2n+). Y$_R ~eWfЇ!A NPM7m/fkE.?.bMiѢtٕnUz̶ّȿ=Q :B:>i52Vtue6XYIKk8uzd: KVP`Ev!):yZjqC=Pu1 ƒncPEܱsC;TsJXm7ZF6 W"9md e .p$#G,䉆tv8RG*.h~ˉe èq|WJ؉c8`2K,SU>* < 舐p-v@\ H )!1<5"C> !e7ڳB++ium6֧!|2c}v5z7$cŠaG܃4OQ?:a2RkeDY'oj/|ziZf|ךl_&L]~p۷DW&moR?8^92Uqõ|oefvz5CN[F> ~q/%"*4b4%* @{U&*7]C[.(j4Tʰ>0KUrFP}!ku4ђkNXRLC~_qQ_x2RU`JN4q|Ey~wCC[E3|RJWmRb^蓐_ֱ8u&6 `y _iI? x֐yt ;F7 ڕ}l`՝ tfXFljX&A>e'toV~|6nj:Y+>[[^}_ls_C+'f.ףV;V;KJȻOFZGLnt9DmD\w7^p~5@c6/AeF]? (e_?e&O3'b`]՞UZ8cϝQ}UxB8A:)ahyPpUc< Q]fg΅Χ9Bj4,ỴZi_$dʎ=hХ9!vO1u-Bls_Fy(n[EWš dV@H90"Rs\֐vٴ &#BeJ.['6l%=d4|g\2.J}_j2OeTtynS3soTSwfLml6Q\sYE}=̥QӲDEDTVAIvH[r {>Z X! o u+0񰥮?{!2k a]syt_J(paaEAYv/7ԧXFR,cS2R|?ԟv9u4mMZjULCO5﫚,B3 oO0OKlU&2D(ticUM#|rVšA[Uȹ6"|dbzLj5Pl>#aSq}9"asFa]-D |vi`o\T uJn!&) ? Ƴ^Z&G &+iFߘ'oydǶN!SGV7fb, 5і4 i_4fJyejZOΞ h:Fm[=}3yx%1*bj)!$"䆕--0ga^ FPA-Nv|r &¦_ sN:1}$F Au/Y뇞]Ng)'cж8tȅxWU:Hw 0~)&-%|tAC6@uI;ꜳjynIuc}wY.Y*l)L$3D:xȽVx !:%t<":^~+ENdg$|happONBUݷ4[D_ٛT)>ykeLWr|qegy'l3`n PI259u䂀H"]?:~ُ>ftQrjj1g_oxτ&w ) VTBnģW*wI0Ratd'+'~ ,6dؕP8*t}VbKF{bQZiڈ ĀVⲠ][{/G-LdhahZk o*xgZ(ªzRTkҜ'TV_[Edz{crN=X%/6[ӤnD~z`א:rkoĨT*fo<#.nO7{B=%l".kw'QzXPs "K=r/QY_<'X)z>v]>~%mʱCL&D9QL''Hq=1!->Ԇ)mqA>mf&<%w侓-*Hܞ%QAvcP4dDPzY5Ha]*#geXآ*8fz 먏@MQx:!FBkLQrL{δC<ېV8G Wxaye<7}ݵ٣Q Ϟ:˵oL=PV&#@M1=WP-9M7BZ6iQc&!!x: [}}˴fSOqüZ2! *yF[`\c*2 3;94RI+#Z~᭔ @\dA-Gulgy[]"U˰|* &2!GqPY WUM*!5GԄƔ91/~-Ҁ_1rd9Si!yS; [\r܈o:2qN&&e$wU{ 2$olLib;'6Ωg_3/Ir#oH'_$ ʑG r0'?e)e5`WB'-E4`%xWҾUaW;7:.fOɄ>=iX$–x"oBƽyur`!N"Q'el<ډK$h1 :5- {eG.36!+kX'[ZJȝ -ٯ_/KjIퟷ'E $F;eγy͡@ڐn(M,Ny)0#MsNLMȶYM?+3ȪU,#d;q}qz.rzΙ>=Ig1tV3]エ P)؉&$3M4Fʾ "ZP,t9og_ewN}>sP SV M_-ƒV:`S~;椲1eUS2h׏01[تRe 4[:pVivAJ;aHmQ`.!m{y +Z 4_~z>,Xՠob!$BqE-.Ic&r֜mc_v b\p[|KPlRZ֡dmrjڤxhM WJy%Y(%Df7?NzOMypTWVVr69`gtЋ7R i#ҕ =Ep }r"DCۙy/mV)ew#r1MltBOQtE]1ẢG-gQ+ dq;: gp,, qB u [z+fF·As1)f'?-C@՘z x;\5eG)jjQ2f1IgѥO6`Gm vtfi+8_7dafkdRlQSYVCЅD}9 %gKCCB fw2T_(bRp/9`fguzVSeIwU J.+cw\CU#ܚ}V¨M%Z{}}!fddҚf4i2NfShz94?p- 8jwWG\ $(GՎZ)i`]1šqר> )O&Y%g{I3ᗘbr~H!?R?)>!u¨3$wX j$D)#^D4*);zyGϾnblu3mZBoU1gEzbܚ+^u=<~*%g ڥ:4*zJMJJ|7'LPc WFAkɣ*=3ʕ4j6%OtH?\,$'S߄ZS[z2VZAnaGb. ȇ~X\R`]3_ /ד"ޚN^vHL\Jw;USH-/+IyXׄEރUvOp5+|7ϚD NkNϼݚeޘ^VL/#_ ~WI+kC:%>1m}7{"~x_V_>!C/L 4)ѐMm%eJZ`Uh*+,\|ଃz*$ep=&,޸INJ9;οU֕w`^'ވXMyMeE)p26 Sd% a.a_\Ǯٜ1 "ƯrͧM8a5p;|%W |{>1?PSpG2wjOaDLJa-SWݧFQܖ^ڵ8+3Aoαk$.pCRDGu*J`ZM}PY3IDH;TªV3 :7&T٠֒CMе̼C m60ӌ)>iygn~`UcVƝBS.m@oJ^ 쑮ҊSJCIKjwǦYQxluK=9<㯶7[V.㖳֎Z3!9$&\\0^IH wBB@9:Ipcw]]}|'G䊨>x6N8ٕjxY#V-'nsZӁrod'7gzlڂ3EG-A:/5F0kw]!Fra@6B]BSEs2vzloy %BhdG.{0gOE"ܖ}3ʶOcw!% 2>sÜ}#t~sx~Ve_{|㛏QLGx(anVAeVQ?2O4y7{=&}CAIv~Bix.Z.0賭11$l9)Y6|BLd؇ XZ^k >f}3#P_OYd#ꅽF5uB>̣[Q%zUώ+?VXGuO[8 o q^PQ1g:9w|qk;fqYAJL2MAI@IxhŰZwfy{3AWUIvty3Y3ΣV vN3ZQ0J[6 p;Ks;tk~m o0>cgզ[tP`ȪTP'fAĽ{*p>rؽ%eaT%}>Sw: d${T?;ZAv1SfUz&k 0xlAD1[XK*|_;mYY' )IܝskESA[]> 50]9fA})*V3=RSHJ b[ژ|z*QXڥC͈ܟCJ-J߿"f-cwA~sy[ί_\ܙ!rzIэ@Q]z9Nw^G_s*S61 _Jj86~O%+iuQ#z|]_z>M18nEWR@-*4"#CޙiLj2acv@وU֖q:s%PwSκe=blYSu-_삳&YZ\DF 6N!i8-83x3.kOPi J %JHM% %r JIBzHOB wdK~~y^<,}F& dmc|@rs6np[^9 \m"~yv%cl\\Dw?[=hƆ"Z!xR5..:TҀ80oRf>6}r~9(GX}f>iG l첰 Wf@D_+;֤}l4:LG\q^M鰕9;b[#S%5RCI(qkK?f/.cCY,!ec}CK-M/_w\ܖM24 ú1f<.JYFsBҘSN.9jbvVmj:.u(褑qy= >Y'b]B6+v׎IէJ@H3:<bmOFTq`V ɤcj&%e亃UʀW]'tZ8MGyW=[ޏ`焑:J(IA5=g09 '&LY-'=6 A>=x\c+ LMPKj (M=3,v:F!> BJF_N 뉍Y'VܓykXa=3e j/MZ"F&p!5C;?\,ZXp0vMH8_Q=_{.+1s(O,)z&ӀrVFwFml_4R22d3=)@Wg.5?.v)sh%"ʯ9ĜjcnM\d"a㒈Z&p\v Bͣhz5Ja72ˬS;\E!dCZVg`T& ny9bɜEDɚؽ hηEٸL8/3ԔU5ݶ贊%c;, } K YMr@[GVeSÒ@6BB 1{rI"=5O=x'p/`<أdTpK"A+H܄jfsWIHQJ,^c|LCq9n}<ϒoOE24jܚp1PHj\pdoG.45N?a< !?䪀VSf>)f@ 91ww(7^ e#\VP7΀\SW=eVk E=@Q Jt+/=,pO؝W_4\ UI {k0pw1F΋ZؚY9]aTfZ^W,"✢T2ػؑ{RtvGy˯7^Bh3K#&SƞŞ*v>=,G6'Q~yU 5}*RgyvSSPڛW{lH8UUțfIE>->&<9siVL90[56@(mY72v[[߇[WɥWo43׭W?3vpn#xJnMYamǍP[bu"|]#G;Rכ˾9ݘpPYMMVrO=>VyvgT?bjṠ1 ڟ0W ?x-xs!WQwWĉ xݩe7Dݛ^9vQ3G\(ռkU[-(mRqB?ޞ~us3=CT,R瘆< ԊGSf|VoUȸI5ASھ,i٤؊JvF ܮ0pmy5tGGBa"{G]|*FI$cgWeg,\,22ls<*z_BV)}v^,< QDdxWN‡~uKVo(SOsg5K-^ %ellJ[۾ܠ EiiέgXv)p6fCuY8taTvHQ7&Z.VQ4L;6lZujqy_z1r `zlMlqֻo_=+oη;2{ܮ# ҝ2rRf*a&Ģ *yoH51@ ޻}keY 3HwwD%'~Vp20+ @U^Чd@vI#Zj]ٟOoO]|.L|⎂y{`{^يC)+4^ߒW9u)[ʝoqv/TqY%|23s>,dwmW|{IlȞ(9fAOG)+TR.eO^0+L?`dNr%lAYmrSg_c&nxw[S=+ѓYV1QTo͑Bz!&NkHǨݜ_qO^NۨuUsUR1ڝ46z~)mDӶAar"bf^{?Tk%Wjgnv븚qYdsH6!'* ~7y9eO€1?jpG?;:g "!I%kK e_Mw^Aɼrf%Qf:緍"7NX8VB׿bU i Cֻfw6[*A%ą^ *BCiEj@◠ԖR n}Λx>fޏ_E˅#o o_z3>طEѫ}7|whGΑu˅w鮯hk.x+'N=.9G?^yƕ9y6+jWZ;Ϝb?f/&;>tKEWNzME8-=dJԉņJçƙmԱdZTۖ0RVexXԈIGtJBQ[?Kh6ΌD.oI%25I5RjQf|,K's鴚ldFX&=1eiaJ&& 5mm:)M_gĎĬs exDY:[$-[\cp%֝,ւ,άhq*L;Ǘ:?8FʹШXWejI%>cΘ›_iuhD/ZLZ^bzmUsckcZb);!U .a:hR)ӌ$?Sʗbt?8=xQ3fL| hW5]xzPJͺAjIo"kY)V6CgJ\+ $s|Ð؂A &2bY|_!Rq)_$]> eތϷ҅[ggҶ\.)ib/FݶL clvvS4{2n:tŒ4TF釪gzoüp{@>hׄd7^L"Qd@/" 6 ˑzN]OLۯ:*ڞѼY7|hNa!ܖng&@O9Ae3C vn*Ę -z.wE m9&E+Xxxz_k"P!stnHu> ʪ|0.@5^=K+ YAܕ~"4Q3L)o R.>ru. 8] <%Lr){&يT,bzmYb&&=sB'LʢY^m^d)15#V&.=q~]B'ܠ6$ 0+6NYPa!ܖ&NU=GL6tҮmql00_ o endstream endobj 30 0 obj <>stream HWnF~GX3s)5'vۅHc E 4yfHɊc'r(v4snsnso|ΝѣGy~՝a5>oW'1 Qzn#[mU{SbsO\Sg*[$~|u8ϖnӳd=:)O %TA~j?TMTqñnw,2Jbe|j%?֯6Q"JkbaC&TM(לr vFg2B(Ibeb5.]_tlU6gqj;Uk8kIݸٓ78ɕғ~~/<ɯ'LfZ/!j?kH~[/"8_NyY1>$9el[7;HW4fIzze_k`Wtx k_.{}{dܭ~ųK&K+'- ¬I.(iq!p&b/p#$BRq{$B &dC>/VvX:aնqݛqF竹k`Ts x]u #WͶbvg'P=ܢna~jlϨr׫(Tfhrb`;`ﭦO26Zkg_lӱ~{;!ď./;TN{vj|!џv&5T%c~RZ2fB砂28iX3A %N童Սor>Pj1o׃WAZ_tueF/Ž^4[l=Vy{ӵ/[|n_V Z@uݸ_M^@_`\IUOyҕWjʫ]gw)iܿݝ:!aRs_Br>Us#u3 ?4wf ճa A;[svhѥݣ4~v~gu~{C]u36|eYXjn\;=ƇwbĻC?-߭z΃Y.?./pW8Mq?ʸn8SUeJq!w{[[[½[v"ֽEKo6ܣ^ Mwz+/Y{5nW*({5N/b>q6~qn|4˲<+2$9y.r6O,"/IA Z*ta [EVEQŤ$%-YTRTA-{DÿD4~4:(qgFmaR4K,F6˭,maK;IIJST2UNMj4͢4OL'h2Lf*әlG@dzر :*5pSQ „Wp!JhaDt*A%\ )Z929^I")J)*URM4T3͵R+V:9P!f&I @d@ Xz  X%ʬD)(2ʴD2HPq'PdHIFω2E%`3m(aS[!pl$D&B+RC,A䤀'ëHRKSR9Es.F"J 9C0$Cc`(~fy G+!Pwxж=nśCU,a>ЙBÃԜYJD Pz #==(Gq sD$! N2&% _b X !2z4=!xT4!sizcā|J6R*zנݹYइ$܁ȽdCgd&ΊD.u㳋7UQ#;ɇi$p{]Oy(5+ TB4 n4~?B{ o$eBBQ&Zp-|0CMVK7RL1w,b7:@G #<`F D,\P(іQy fP2@"|Ѐpqf  cF #LcvM"HH lqJ)1pL qc2:\<%Ʋ\gc1il-u+=.0 %922Xnj ؆;+3D $ q7Gׁdk,c+p}zcplZe[ V#A=yb@eS W錣A=C7H a_ :W\M[:AԠ  ̈́;=?@)8c4 }ĝV{W}_/K 7k7Z.EV߁Dl ]QYA^fktܴҝ¨`աM>e^t' T/8if.Wn:tUTp5!d/|G.~_,\(5 .P}B ?( :uo{K;Ihlg #uFra[.w醗w*,[4Ɠ=4,4W ,811jX* 1ƘBۃFZ҈`6B`&e]Yq < == Q}~ k,< 5 - 'r<[6]}T-< 5"9IiYiiyYq OMMKNdx|cqE%tsX*Y#J<}[uYg0 װvkUSxmYez#Iw nKw[Ĭ dKOlɑJq!#@l~%qo%Md2BhEN/2S Jh 8o!_8u{$lIk%iN2Q8W׫-qͨjvy!yd[pu.FdžMWN1{UR:g緟X`(rU.v1رAY,? pWDyW[̀:N nfԏhp8BS#8'dGla72֐' IkJ(IgsZG/?F9Wx\JwYT~O/ _CkU< wk=Sϯ-J*SSZj"+rs~r˖O-UqJZe@h ! L7YI׬t^ξBH7U+#GrߌH_X"k"c``@~a@KC`CӴ@0t1bW50̰IEUmA`(,M]o`GP'Vh"[gQ" ߤ}{5%aޠv֨g[IjYV cQdLzdwcxfG}PsPˆRûx{WIHUFG<8HAQ|% 2 O$.+q W=؈BF$| %rG%g(A\6̥GQIgtQBim\GQjguٰ% o ZuZzh黡vܬF6Nw{B6nf֫tEnݙ:L/h:M:gby?oݛGkwuFguZ<.QUN+sbd Me`^pJ]%ܽr ;n%aJRN\L]ͅڸnk͝խm!M]W^';zm}^G{*X{St,yM4}$?osːx]o~RƞZZLQ[g U{[pBQ_5/BV}/W:c-nIJ:ЧOY.P>\ adGQ0tp q'L)l0:&OՙiYI9ph`XP恶S8E٘L,WƽJ)8HXἡAb‡"B€E DLҐKLTA(=!e (LĕȲ[LK, 6 ԺIC1%F߄eY*$~Rג÷%oK~Ew^pijvveK[Rho3SZ5m)05LDwFrFg;n[sǷѱ͐mvT:5c;TL& +3k%s3S-w 7>>&4/4!Jhc)2*mm4IT_!Yo_0c)EBІ=!UQH}+OYi!z`O-e?>dXUh>}RSO;ԃ I*CVbc#NdHu#u+9mQde5+4-4/,14345FD3\ $BhO (+lu m,{jmZ璷]fgN &L䘐"P" >p`8ܰ\\ ǐa7[UURf,-Թ_?+Tf0у'>6pyTc~?;W}Ss*w +ް޺/Rm\۽6bΒZƚ/ܢ jpWnS1'7/ ^}?^M+\}S5\oNkx.yq #IBY5Ow z^ٖ?';#3C[h=U>]8X{kt5l `#fC ci &̌!g$c0 yL "\c۶в kO^a8Ew2)MFԆSɩ뺂y,W$[ނ4u\P:pĎ_v+7m ]5jo}b2wP{JVvqUM]s`8Or=+)TSw/bLmXws?Օ$9:`NQ-"b"bXLkE 08T2Nf:nhڂ`)hiiέ^׊s?8O Xm!e [EpB aC L`w19uf~} M&JC S "Bgv uTs[U$gVm2hKtvCr]Ȧ p'' Jإî-bPB$UҥZjjIGQDvQ~Yg!,v#dz٬,򒼔6٨FdHyV[<4y؆4l3g+kZzȪ4 ;yhCcK5YVDl+5AQsEbwXW3!lI.:EdF3E DVpQWDDA<2"Z4["  IAK4$ĢdLEs#騤c.bY䘊DeD>%( r$%FNFf IFN'BtPGGԔY@ 0vb@z?hQr'=?&D=i$Ek$5zIHYQj䨧۟,hV?,xce2fCQjCW Cp|<^WȽv^QT"DFI:̨PcۛK䈧Yd@B&N:Jvٍ&8IDP ocMѤh|.>a  WQj;H s^g}Xp^p рK{ 5`8AMC]Hxҧ9 >}2'o*Ʀ2@&25y !M>_>|wƬ.[9vl-,XX >0l{8Rff@=գEr;KP4 D䨎UGuPYZҫQ% 3G(=Trޠ[y/Q9H`A @E_~x ?}*&upNh)+, 5s[EV, :[Mw?{S+}s߸Q3f [Uo0^Ft??ϧP-?m߾}]}|6{x{^øǘ[YoڟM\g~l%GvD ȁ5^&SH[ @@Y䒥3#9uJY& #@FkSkhU5q]̲5? YOjs#L.Fֵ62ZZ,ҰThV08\0- 6&,#jN!˝<vOcqޅQa+GEPc^,l/㞶0o ^sypBLm`9 qnj8p-x `Q #dQ'DZ-ص4pj^uuׅ5N* iO LKܙy)FFre8.8IaƯZ8 0> v ߴ#&۱x G1Q6(!H&ZY[^HlgAx'l.9!)2 8MtJQiWdUk"ERωVm i/xH8lT; 9x$`vVil*(jx; jQ9 ;bONHA" q kQq]ւ"O<k9qExQeW1ɄA2C!#E H|{mHA{lWkW7jDlbR uiH01eM#ALb*З}\KLH,kÄPa_2cFl'$2f_$7Ce8"c0#tYyaZB`1 QCǎHJS]J!yo'9ZDRRIibr\i[릮Hiw h b<3XSA*Eg[odKMKSx-7ӫx#2Iz:T?D`^KL^ϛ|I4,zcR֤%A!#*zJ"=1x*DB*M=r3 (%VSBm[!$4=eKm5OG>ՎDu.wokI͠ d@8uִHI#:[6[VoccUJ}GrXNHZJRͩJJe.g&gRiBJ%Cm]ib(:c끮g2_}<}<<jnlU"X_S{*1c-e<~;X 6<)08ezC=*ルh]0qh0g}" }<|gWɋ,=]2뱭 )Um 91kM@8-:. z)]WќP5l h{D7J7]rw=~s/@|9{qXGB[r7vwDPV9w>,Me|3lBsDy@=\3YwR\&51Xecԋat=%]`_MU [lY Ҁ4oDf-C-f x? @pdWE-3K>=Mߍ:nzХf.RUeRӽdSxv :4ﳣg0KM[Uy3 غSghPMhl9FZV vڂ+j z/e?i`Ptx]3쟳żWYz?U:`͙k|NmmN5VNETUq@顨UrCryY>"dHpzR;ϊ/ϭnxp"Wt CN?ʚ3RKiMc%gLMvV]R]_48~1~еZG3ӮQmԮ긔AXvtxbdU_Ph~F^.iT cJ`yȩmkj%]1zգCpύFV$ X`OȲ0RpT\#SG^`}{TKQZ˳Oݦ#i~yyS )bgFײnځ$z mrJ-I{2|\hCA~e){k}˃ l?61fǖBq[&lP_~ɀ%ٵ+C-4ucESFatq0 ^C"T8tsf9tF 9(؅b.ja 7TuSD~/#q#2t }ٯs ~ݝzdefƄђ3dXq\ǘ+tɛi\{qaeBokBi5 n$|)tONV9쥱w#HQ<b:0{RrQ]E`:u*g-}.}3RaW pY6X.NɌUEcnMTG?K UB5}g- Y/dyC"< ԣ!,l֨16.g$$,]ZGor^5cvҚßQήD^ 0v{.[DDbޡ܀뜉S!{. V Iy~{C6~)W@,Ki@f;_f77X҃Kwmfׂ/ۀʂH0̺A͙LED ؁&5P(&A9̍sf>r@Dz 2'r"{P4=c2Q2>en(KUDٸF#zƦD!]!27 f3~ot`rj7x&d$yJZykv3d Hm`õX殳x̭?_7ǯ!A|6iXHqo`O0j+`AA~88 rp=@XǦXbRHK{ܢz>pVWrƂ + d Q?WڲAu|n$ljߞBss@-@8Z)?P+8e7C#rs;OXo '=dEkNȘ #M G{| jbU݌;)Lv,i|h,u)1#!JNHޘ ^NQsj~@AlTf_* NvƎ||L4NӁc▲܊dxQ -;>\9jDT#%!-t]hv>ìB%c~?AJ?=<(A uB3~`ŎAx?M˷#ۭf _}R斤ɂSOZ$^ͬj` AQ&2b -LF\դ@hAh2g)ޅ XX{0pZb(Z]L K$@dR8c9лsQA4$M!탉;X2H8PY PŘ5.rHf:s%:y#3!YH Au\JTGo0SبvC#Kw0 yWlCȷ"E8lLYFS)UlJH%f ǣUoD$v. ;inګMmuXj~ q S^~>HDW%q۹G7_߉zM\7 ?PB壛,ٻ4M qas1" rIV8^ uq;E!؍as_F&f@2"N:SSŔ;ő2D4E.`ǩg¶N"(w'$ F~ Mwwdԫ3']=Ze9\':O n&GqZ[{`JC}z`^1SNXo0ĕ$we<]`4S k|JtOШZ_wS-']ETpgC?i ƒ'U'"Qjzkm𜌏ɉ yxWH}tkiFg+]]Ƽi gX[.k8mh0O;3`*wW&>t Æzd22o)X+#G!ޫ:!`.bNNq7z{K:G76'le[C}:93o M./{\1Cywv]46]N (AhA}݈?CR3=s:OiǺ7H޹(&mjk9K ?y8?N7w)" sXQBY A){׶ [mAxҬ.mVH0P0+C24bq"auprRS6[gnf@ܨm#ԧdʉxƕά3[>`Mh ܰVTO r {]:91h NcJ& 6vе6{I3F0b_4i.$ރ`s)cÚA4|#b]vP1CDL" д Q;̫C3wr? 0Vryp:8af݄ ^11p԰yj5~!|5ۭ^ !{f`S>pR^Ō@wV(tu5/xV 7(#u/77HmH?FXyT(5=GsFsp㔍 >DGtqw*u,w mugu׻/v:]&|=@miΎy!w!Q MP\IPx+O`PE$Tɵ)Nҍ]]+)b^,F0|,x@{Y:81f%F+2a<`'N\KՉ\$9PL5$* X=e f%U)*=Rs!KzVT>A+!7eGY\X󪾋WPz<,5Ulf.V/Y)]ڠ:uؼ$+Qy H9=ȿUr$ژޑ û X&k'*?םs R2>Hn0XHOL {ǤYyI Z.71_OnoW7n?=.-ޖ\$q._ >K*VnxA7!Ir сNzywR̗x׏?]=|?=}y7E~>Wof ?֏^Q_.~oWכDOꖃzF4bIN$?OW'{(pOr(Ti~8-@+`TE2ŠH|jW^F.Xgpd2 ` :8]czTVx:yϘu ©HTM^TH"X0)FcnEDz +4Lo{Stz\m( mot1az(@.e$R( ųDjNFN"):')V&L}oDēE@+RD(NP:y.*CjxnTS$Z10sArQt8W5aFZSI2%a) "ɜIGYh <+fQaݍ$tp:(ѤfSsX翧d^̯ y#t&4(X/ ھ} E* ?{ endstream endobj 31 0 obj <>stream HWRH/T l'61Llvިv:iw+-bgGm~l%6$ё'n}/s2 O#.Ϋ~e?w:PjR02},?1.Ɩ[L}E :} d)B.40Iq|MEI- {?8i|uڐݤ^,?~e.J˸DibDSvIqD*35\X79 ;{yG&,L|ZpAzlU'Y3mt)`oD~[oߵ 8±pke=kXk=\pϛ.I 4L?g{N3T479 0j*AzZo8_|sӼ$7`C .oϺ UKA{!K.HU;(| x29$Rj@U-@R}nt)`mgk٭F6i 5( > \Ί" 5W8ah|{ D\)n`#H$Ǹ[nib2y  29d2Nk|_zs`]{Na}J8Q%7 k,̌$zaGJL,h~vK%ׇhiI̿eQg1ZahO|m ibertM,eS&Ӥ)IլIR*pM`+nlp9JI2}fKX.|)`\2R`W%W`T\W9,Ha  D|&ARlwK|ׂ0%kshRI4Ė@~![qJh< IXCPBm&Dix3$p"# QS#$uَye04 y=ԄZ"7 Y$6ᓜF(&Gp $~ F{d2N|_z{xЅ 1BO GY-a|WY&[lEtI"V/}ѧ" B7_AP"p}v?0G-yGbpM* P@HĘ F0ACAζ429:&)vDiҔj֤mY~=}E?2=a7Fp9]͉)i4fT}TVsߕ6*KÉp5䐲WQ)GL߱G蓶9=<xE}FP%2H U}|iw>9QߕXx2CϘ01g6\|}fSu_ee*,ϝi靤?4}NotPp`M,G`a•[i+q*=[{XuȱA=Im% lGܽ_; t3/U1I.l۟e$IR*ƌh۩ :Ze#!|5AIt6UIީv [ݰ": n-^$U |ح$x+AHx$iy:(fǣ3ݣ@+~S]Yv&4Qst֖B 4O2(,fKs.#r;a4$#N  3TGw4 vHai"Kd9-WgrEפΔ~9JrI᫤ ~$}fg=no> endstream endobj 32 0 obj <>stream HnH{:Rl $n'i5VpCeU]0WeaLl2h0| K c11u><\诧?p| 49+vj9n <~0 :q#4F8Zc"stQk|ҏ#+&V/ J?o(4ΣYA/~{P&j|xjhScîGۨfx_+v~u= ] Jm>"] 0370/+oMi>xcn3n|k}͵uN"[gdGyY$|IVhbE"{LL擏ۓu4!0D\1A!`z@@Q=R 4ӣuD BDy@ + /z{#.-2X&|>#h$|R*&s3Fc63Ŋ`Hz 4֮SI K1#bX*vݟY$1|Bl|򳞅+\.MgJ~K.#i5kcKߎuz/ëIhb]Jdü{T.>}UE\_H8GqIa0@'/ dS9X0A "1ESg dO{cn3] kP~7s:+K*ȶHdԣֹ"s=)VԚq{r&s~&(u6+>(\`s%G\ISώ%\S_zexֱb1M[D^fZ]'t^4|N)[ΦnQJ 7J9fUF"Ŕ/sX>Tswhlx6]eAhUL V $bjb{u2"S30qP#s(>͎c1j:qe`v ٻcݞ_ݍ!;|mғ!_WUZQ:IA9)j`kŊ`Hz 4֮Si3$q̈%T8^B2bPi"FP S0VdYn[ח; U zC|c\22k`tɨSZx lX{P& eTh먧^>*n Aܡ%'7 ~ ~txۥJPZ +:#XNmc$cFİ0U\MҮ%zEv(Q|tUbr' חq#))MtǸ9=CGh pEXn2_ e"&ʂ ٻS Uzmϗ3?"ھ32ʛ'Yr6ά1NX6: u2MH Kꞗu@ir-{/WÙ rzsK/gH% %~9X'3h[d H=CH"K@!|IVx(uA(e| >9R <'a‰2 ˹XgcBC@Q{:RD8d̙1fM?^8((Bjg[MAep3 ޝYJ_²9DDI|n*5US)'e\8>޺W΀gPk_^d`͑%jNGk9oB46ݍu&9_ e">P>roT%tWAsD8ίCdx"w-t''Ϸ| LAz@p*R!׶X"9X1-SYcMe:a&Wda@w)Ah6!1\D{;%% N8~oK[f*+VBGht<@LG a@vԁՁADo$J`*A4QQ~B/W{O0IHEB黜/aD>F1ycC5Nçcԛz/Ɠy~[AѧVg+Lj规ޣ-FVSV[sAߧwzW(jo֧߯ yy/|_ziCC}ǟ~?? w]zWp4ۊdR]s?Q{=eA"dmH?y}ӯ=/f҂f YRL:IaHz<ۤ8 V, 1ވWrQG6k#vf?bj""4dmi stл+1?DeFi:wHs}Z(Y3&(ϣȟEԄagdQ3C:SL%tB;Y`4r3NVSS% ,Z#RU S {-WFO$bR6 zڮIM6<9nw/|la5 J"C[6VK#~ut%U|ꙚXD>"xB,ҡ(b愖Qz%Ƀ.XꖨgVDhۨWCScXLQ ׈_$Tp0qC 0NESk];#y؉pEװ|nk=i{$sa/j)՟hyܧjt\TׯQ[Êĭ!Sv"`jx}e ksyՇ}&붛k&/%GԐ@Q,>`.).AڋˆC^!-91eV 21J80-{teaNo%S *c 1sS蚴:P~SR^''@5Ec*Z%.(Ȓ[;u_8>O7LHWfҺ93&лjȅ)rRjCt"hU% H5fPU7F/Hj#i=ɿnE:uېZlzUg~GєNGN p& z鎷$;RXrkĢ2N7/Zgk>EQM5=P'( lʫ4nK,.gg{ bkUBعC!AdžDLɁ ^PHOMrS Ad;+6/HpEtz:*{J|˧*\>Nx feP=aY rizμVȪn,NWV&n,upiŽgo[/WlhdRKبp=y}cYLpHZ=2bxnr5|fk2A. BfA%5*@FwԈ fNoՌo8hQcޖ6fPh "vH#3FJ>@JG[< ~i=)vYWwi5mY5@&L+*JWޤ*9^`XN({g. ]FI$Ps֊}G Eb=|Y+E-כ5'z5i*!L "XfO0z,ޚؤo|D zLa lc )Ӣ- ӚgQGn{ZVoag,ֻc3W۹QugV&< a5sݙ5Vu-?3NP1DYRJ*8A4gݲ"[,Hy/sktl*ۈ+*ZccGVV镳j 1*@`5ʍNܽpef+2eʄtVXk˰ oCZ%Ѡur.Gv$^(Ħ$KUV*(:ߘeH2݀\3v&No͌^˝H 5h..Ҋ7uO_bw1qg0JZFT ƓGEME*ÕcxA`M+-ш7-ud+ |D"񀻦B0y0|3$jaa+Uډ.m,wҨ}Jd"ަIүl"ߵ%] pIc+l{_G?g? K\gWgmypy=qoe~{l|qu /7߿?O|v[y_P?ןgs~}˶ϿRo+,x34H o: YSx_bG[{yOr#qRWX41@JJqrN9{rjT|uyN_Gcݒp`ne#n ɑ=t蔘=DwS)z낒} /Ǖ~Rn!\=,tLaKcUY+sER"&)dmmIekFk~IǩDy1)dGmR*֎`rt|jbkZ붦K-QzTΖnoy;:( -HNؤMTKQz+ LWQQھ L7 ={Y3WO( q [&/W!|RYa0D*] gfhO&dD8kRMrm\!kiG砎VMwhlLnzcek \91GX&#^8!6|<s, |&&l˄oϠVO =){)qנKtj-8ss3>?.sra)NrP5 mPJxeHW@'f% gbҔLObdThr֡wWGb4EfHCT”dւ<"תaqO>ƝsE/IQ4.Nػ|pI Iߔ֭,ke/:1Bse;ҟֹx}B#F{eˡsJ}t{O.]7n<'L@ ` FfN-N#l+XĘ>x+~Y!tD1$zc=0\ 1=q!Шę?9Gv+V4I .0v$v~rO'~\DSsfkmMn6قx ]"%!LCFAZ/pg T' Bۏa{k3=ƘG EU DHU!tu"I9T&HDC :JF49! p`Z{'u>xX}ظ΁ \Æy#7wh|HeL^WH)[vO7~7|?$Sy0"Zk{sbkm7ĬduMsJn {$u4OL8@NK=g8{-.{$ -,0u^.K{Yx\m\%[dKjLb,G |fSI(1<g:1n%r L٠Q(غmI׫SSQ?]}Kv0-g ->ڴ7w.YveHėѷ@+l05_^'RpZx?^

[m̝SQZץ(n91mH#G\0\n{La.NoTζLR=DIK4WAvg'^:L"gst䣢 2o2Ixu̹\Y@N>;E>Νǩl=V"/v%_x>hB[{̩3~./#NgQ4ISu"KDsKۡŕͨ@1:Gc[ߩsB&;B^`V1؋$hw0]4v6S5e) 2vl׼9U2?$-)Ȋq LBC=@3rEO[Is**ODX31=bL1>]UvTa'9Z~P>"]qDe JY+NZfqRLQnD9ɿypvƩQ)葪/,9d:fb/>]3zPi@;Uq(>>=i*⤎7iKH.PP%iӑ!l{u32}ޔ5%^a)N2WS<ˍx8=.D̻z+s#Cq >UM2&g*͸YS[`'6 ⁂=`1$ฑA =d/PEV16ծ#g t3+IÉ19oXYʴLBJ Rv5Ֆ= H} -l#lYⶐ@ޙ1Z1*ȏkP*vR@7Yp|~&eG`/2T42T]f-0UKl2uV-t8?P* 0?5PIR1JZv]8iDB2YnϏ>xha-z˥]zC|ݡ*An U6OwhM6ST5@S)%8ҵ=d" t7PX/aL|}%|]74p,әO!]K|ĥ$k+q!l,UtRD '}낤 >~7;5p ؽ">K0̃&1hHQ1ae̖OQEFʺw8AFr~ݱ%0Rؚ6!RwO qˬbyMf:j23/Ҥ44Hkң!$c{I>=rӊú6bG^Vb:=/L#XsK  1߄J:UʼnG$D'DfKv+KWFwhJJVb[bQ!lTm}uG+W,PrɷAC!LHE/+0u e}䆕N|$瘜zsoe >D{_f7ZU&%Pq︃5K݋os&iajF} Ĥ)PJ*?a>?JbC=)[w䔣.BD>f= k;]zg1Gs'ea1HtXQD\Ab\F L-̴'H?)U /b}zv<36!$h2y€!KZLy^AhLJ̸ϧ$hosOxNx NVkU5C#U?Fyꝰur9>E; (څzLʙc:tyz-&N7&:qn'.S&X]`5[$FÇr E m2ϧ!pڒ|Bo{/;EG"&2II# o!ĴLbB4Qv.z xUWc!2$< |v OˇCa;U;Zp0w?Z+bڢ D2^I :#Tn}gwn}GҨ856VٲwqĿ"򢛗"h]z-D^&gSehJ}p0+͞a ~4RB-"tW[^hbDVj,<7¡%Nw WVA\~Ӊ2&l]9 c'owE|*-Q?=_LP˭jg\n%7"m֨d;*^Z}WũFΘsa|oǽS2[-ZP>@p*oqÔU2[\>Z}` QSQQ.~B^CzE$PTR hO4eg)=G05bu1T+@MHI"0}0ria6]<9iT+dbd8u(3ƚaP?F뽟,ć.?UaeSJQԸԽ\^l PU CQk-)PP$2:!l!{o\8H=$L"A5Ye͈ R&=0K%Lp1 1G7މ(\玣 h~akׇOhHZ^$k]k[E7U ։gB46[ +!sw·[[4J`̨ak!5GL<3y#*u?B4ڀ>6ys DFǷn_\[n%SgPA`=NCd6F+LBPޤKmR9ɲa&GQW">BТɉ0&/'6sN=|_M_BA@}Ap [ٔ6B+.n%/89%ʼn4|EXqp#5mVn3  \{ap}}@׷8(tޭ6yOy ˎ_3^h)HaA$Ʋ fO2'%PeM՗Awu'clkxFrQuȭr1ʜ[4iLߏM U_)]mUVt_ u ۂl@x՗ij 1 $+6hn񦯙CwP"q}{J &nۯPo7{=_KQffbQJ4!:b  <( '[Y M_Io2o zk,8W|m(CX9TԤ)WNp6^>o#zt!<e7;Bpl=3fٳ.-wCUgn5Sf(u 8YO\ekPXWȁ]@_@~_ uhU֨-m: Ēg .*HyD.úlk;I?.Z&v!O]ZthN\>stream HWn~} 5L~I[8!@W[EweHk;ٍٙ  4!ixnJϭ99ڒ gbFs!9`SJwd*R)&o!n\{G&;Nb2mOÖs_a^MymOUʹݑJ (iuN*WO3IM-g]ٶX|%{XED]RvDAx ?P? oz)^٢ސP&Y#x:I<#-OtN Ñ9:ZɪvTL:QUA3/pR JYas lO׉hwvXͣU"O (iz*4ɑYJ!۹spR;5зmלV~NܸhTTn@s@G UeJ5XE-2\,peJRK({\a wsrow(&w%C]`B$UbM1-N4OdU@+ ϯI p#"-G%DxJK`1?[z 7TKpJ= `vl7.4"0:֠ߐl edT3|f`Oo,T͋v}y5~zW/^X}/kwqYwae\_-/~?GM~W@igj]UaL/c!z³"h˟ ۏ4zh>1'oórRwW7F9s$Z#40j)㸗o"{Ak*fCZ eOP1xG ¸PL3Y,tx Q3PKu24E`|ce$خJ7U{, P3) Dዉ`,ܖ- ,a$ɉCx>9f%g a&"%G2[#&Y@KHⶣ3l~o~65Aw)&D %Pنoeh3qIg) MroN^#O/e$w7Y^c4Q%{! Ef=HLɳ A^gUJZqFp`;Ë<ðƟY^/$:*K@-W[8E ?Oշ$6SΉ.EO3>9bv-Fy~|yqܮ/Wz C+]n6˻~ay޾Ӭ/߾_P}Yxaf!ky\Y.qMQKiz꧟ofi æ,T4GQ4xY g &;DBØ+cn? l)Te1X$~"Tl cծMQzhӘ (ߥi&'lFv.c e~u/8p^ Au /퓝E  5#Y2d3nrٲ}8Y}={\){#6x/|F)۟=x}w>~Ee݃cJ8avh?og/N_ˮ?пM5i;ӷ/;z5V#wY-M$~קWO#~PL魹j j>Ah nrtOk/$CZoklKbtNbQ]U+%O h[4UՀj'cr27hak *Azi(L`G*1SENCZ\MGbJb6ZF8D2KPU a!M?ICSz- 3zkeI*rSEG̚HrwRCz'tbv'hdL]ԙJQtN_WЪ24VP Nv.hʪpxKW]Y BRi܇zmH2vѠ_zH]5AboG[sۥ`[P%NaА^3mdr ri}z *3ĤZ/m&-i̞Fh\׼JV PẀ 5VF`.k߁c% :CrLƞ2`8\XCa Zڱ4K_對!ɄsE0*&q0grIfqZU5}w`jL%QvlDMRgSah:89LxF2BuЕb oxl^r.&o/ԤP(6}$I>K0(q WTp IӠ1CdkP8 3_kj1Mqg Kgj y)ZxVJ7ǐ67E2XmI!H̙a0-`AVmu D-AOF)5r 3\@>V=t]P]z %UoɉPl@jy!r1B})`7yuxohOJ=I x`GvgxR}T1G7KٔuMP`,"NW/ (S,'P67#\Ո R-| n9@(jeuxф#PL^Z41B|UyŎc;u /HS*Y ғoht=6+'ɲA*DcuPۄ20sk7`ZJK[\^ݏkruL;)l^umg id1JaEl-i(& ʡ7ش! yLEP?!Fem%\iJ>Zko-\  sj J]ʅAE3[P $j [lj"޷U=诚.4uzrA׻f]xBTUI 2NMnjPGѫRlP(w= 8\: G%[wK84vV'ڮ.*3'g';*M8F=(GC- EPR=*6'a\6E0RN~pG\AѵR|N",ƗiqyxrAIEtpNfa0%syz_JT_27:Y'O W ]~ȿO߾|ޥKμ8[lFpr108L@d1&rz GY+1e2ȗEՔ\qpM'pU2e(֢y!c1o7b>XY0d=]ʛc &1wunCؘyAJY)4,! G'#>0ko0=<#@l|W{R[TGzҧ?~}a;oP}qxT'ι1]DڤR۔9`kmh#[X`\юXˆ,fWW?sl}B-D_nF21F f"-,ESEВM 1F3&ѼZnh @hA_AI6zB+WT_.KLJUTAuovE:VwlU6md+Q~Ul]ƣ AnUWW՗5KwOL l#H`s 6͎M(cr 2GW_s\9T]E`}J_ "gp`n`6E)uUB9Ń'BNPT"˔*zx|'Adɫbh9ô/CpUc삹l=5%|2D-e!$UۥC=PjeN: w2I] & &S7.aM,ۛX)Пks:<(Hє!f:!kl*A,(^1gr;r&Wc{pu4=h5MUs`/嬅)! 6[*w3C\]cm+ fObB׳&^7C:ۜyjQ3cRoG l}T_ΎyCzAjZ\CLPw*`;eZS jGR1iq iay ´ m{VgbmhOWf݅ JWE-~`GHqYjc'|愣"1ryYלS!$V)7gnJ }שּ$OORf_DOFOoo~?._}):=~Coq!o[fl ܅P|56(Y'z![6HOVx6eГe>*ʐH#QKY4?KOOn;ئkhDhmpTAlZ9$Ozhz: ܐDQ;N060{w0_R,R^LS'oV4\Ƣ,j'y!6>2`b~rKVj-PK'[⨄Ҟ %2KiBk M|@.jIĀ>MBHB&yf: 1[nRk*uhҪ4W3RO!HI Rt*TB:c=d>!/3sZV94kmo!ySjK2aQ{E b nyCQm\I"v6Af5, Kn>#DLFtR7aY)H߭`-J7HHJtz57_W ;0SiGː[7;+3(E-e.wmn3_mky4.hЈ3f]/a[.0 L6^aA3-?#z7u^~yZ _̛]0Jا@(/ٕ&)rWrOEi7*u\Bxag+t5 w`\$"'FX9M1{,e,Up!6>.`t\m83k. }E{{bv3X N` N,g,7g:d6VK} h'G'#fZ\8FhVkM<چ>EHQgډ'p(,ѵ`jhmΎyC`̠@%G̏Ēo_>Ď6UZţIL<ĕ"7g%9+T'7d3^ޖBc#vC%ٕQGi=3./&}T=_;8_xu2/Řɽ萻AN(br12aKq͉7.$DY_Yn?3%^m"V!gqo_+/I7^~3w .Bbdi"d;d IA,"Q x;'jwOe ] 3E1:*P9 X9NVC\rN2q,w٠}+Xm 2CVRqǭ&n'ژ G'ZQHX(;.J?cM Jqс*kT?H㾭NlU&Wlq >p-k}μΨZX<` PTZ-6.p6Um*[|CGIKQ>ܘ*mkŠ?ZJ0F",شų9:8R_ych)sG x*4@ D^0]qR6.o2'S6a֜F"b<'n(/&=P8z"&t\ ݎG?%Z%\@M{[.!ZgOez%'jMpNAgq٦9Lru &yp|V8Iݫ emG!%>PRzg PKY9²!.A69f[˸]LFF? 1j#*f<7JGs xu>_S&Ê"*'7c,OH`:R&.6h֣*U2~la=`-i~{׻"xzշS8ˌټC#tyĕC0}kr#Nl_.(JO *sO`ZS_[O?UկdW';*%ؿ?>>So_+|^]^~kw5rZ6;bQBal8-FYW[&eZ5! uD (-Vf0 ÃuݔdqvZRz\v_eB;|`Nد#%r6}$OxL,AB RpL&5볪wˉ(Nb5]]Un;\}pӇ`u[S2јPOF1fVoܚx[?YqY| PS >Y7`rfH5CV6>L. "4o n@`I6im721OV0'm@sIeTNL Tb΄yh,}ڙg +U5~u%^ b#(ċȘd+SO. ~-;)G0X6(@*lmYHj 0xmH%#`uqҾPJCS4DDWyt>~S @cJ,9'˺D[sYWntM- lSL mHayfA([G>0x Gu_WB2rԊ516z.뺆 -flV\ޢ*#=Ez*;wzY0k浑<>%FXmSnl *5: ](mzCrrˎe[N HlK}[rBieKr[&1@)(EQXT]E:.-gQc:UmJDHo `Ii!&[i[izb BR 3zƊhm7<5 SF]o;3*}L?8=ÌUJi[!Έ 3 ,PZ)_iFboI]Ͽ!ɽNZq)y;3Ja[&%b=qKۏ6}Ғw ;5;.?K{:޾!;nX)/)Y~)A-ԿEN]\wO&\Dz7wKT1,RNڕsKoC{Ǜ t`Ff;E =$L3#Ny\K044;ZicCGr2vk}YU9Zx ahl Շ2ܣdt]Q5?E ~(G:b-,MDl.SNl^,^&ByFEy3c*"Y kVh߬D-w^(x+ի᭔mm}늛` ԑj|UDl?h7D+nEH7)DrhsKm|y3i7 +3ꆦ>UVs2q5Ŧ4L^w{rZ8bs+~cFXѨbpHL/.//.ί.o|}wۦ`m?'ugq;f~᭜-//pTzrZſݫ/ᐛ<ۋ_;!^wnjx3^/@:Sc '5ƌA-E^{,HIV(0INbmJ{Ki4؁'&h1% M =:!yT^Eh P ,#J|$KGis ,`&hE#@u FM9:DF48X#?gC2jQ!Gt&j~)A (WGE Šŀg͊Nd}v ;]@O Ҏ*a qaght Ռ ZzL*sx 1:Q)ǘX'a@yH3} a5YG1SZ1U@Oc C 63\g*?$4#pq2Y<2bx;{.)W!1dB t&X-BVD=- ʩeJ)p݀>C4f3$#vp _XǁgcBCJo"i؃|cY:3F |A-AQr"}<5$<=ފaYhn 15VOM̓Z!C%),bb;LfȨl0xFΈPΊ(2+p#ڡ G:'y6b߁BQ#$#3@c JsK|){P)ab$r)tkqM.R InG'&\D>` s]8(*i{=>Q gVF)[t-(RogyĢVǠgu{7L%"9V(TWjDj=ujrJBD`X1@jrzsCM8AD: ]ؒ0 ]A6P}D {}: _O  ڬ3jtl }92$sTW)#p tti OuOvPޞj]Bݶ.bP]d}bQx"$tk5vATݶ QcP@Xv6Lt0m}:W^5&z%((}|@z<E%gQ%(D[ I{P!LC~NW "շTU^JAAb֨9Vc'*z׹Nj-='mE}BֱЀ4lj5jb߹:c_\Bk޶) >.t%:m%^ jpmV v]6wU>{t.*EJ$ғ Njv 곍6Gd/WQgOz%)|x=U!w._5Ar]N}FKex։]r|xoí ak^$ +j) ̅0Mt>s3$I6BL ;GW 5r4B p@]!*ˠ/*E1 H:t}ÅLEF,\֖2?5;3 KQ-UJM(wH+3z->rjpXf嫉g m UMdC~O rhJ.QPw|B>5!/X ]hά&ObLZd_P= |sQݚ6kN=Unj`=]&,W(R!OO^Mo =9~|Xfu.q=8`أ*ld6"nqVmՎrnGlh džjP~;k)`& *P*:U,:Kʹs jI}ǀ)SK@xi5mk*.b ,{?qe_aV;}X*.{ Q6O&Zq2H#[ͫm􋱦&Ӫ/Rj6WueߵtkpyP,*1( -Eq= R,dl _5+t*8i9A-yPF& XAAɺ~%<*yeOkm]Rڴ,|Xzot鯉YG!x]NF_()  <̂ }WrfWN(t }(񠽡G1aPl !+BCցΕ nsGj GvP~eByVe2,kiV&Ja8*gd6]g5Sá(/Me8JNXN.%u-pwչb3Z<dI~+rVJvw7 [Nf0nK>,.F8bRmVAD7r)@(]<8q5ᢪ hl|"[zJHCI8&_|(9";0Yh=|U]@KAI:3dH(;E \-374 Syg]Q{ё p, x3"Q+9=\mIFTa@'&fVۏF"M!nۥT6\K:/unU9Ć]{p}v[weqBVY{})Hʄ~'_5>`+"4ØN|-N+IICI_C,+b:82}J5 D}M,؋} jg$s~md';̟Ң8$"7,ibv,Ac EyI_lϹCɒ-NW |܏9*(t= {d#kB9!cBT8S hl+JUrØ/A.G@34[S=pBABT rv ,n^áư7,ٗ7Չ/uc8fCw :"썋 Gb$w $h1v Q`d wr( PJBа#+ԕ Qt'27t-i!زwN N>1v$<*Ŧ ;;Q#a!\KCAၵ0=҇:0 )#G` ?1$cXswX7Ő^fJGb<2Нi\bCNO4;bJQ)xîkR/?req8qBi G%ܕ+]]kQE,G@.B,'b[An18uEC2 c1Prɹ!rĈ`nEhD10,$k`!1q`,`$.aaģPS1@u@F;n,LiߕZQ 'zp1oŤ-*knտ1ዪUWzvS/\ٍͧU:}#ῷcsCxmS{]&M u)d\I{v;*,{{QXG P یFaGxڬ|M {l\*=+=deQ]Qn~\EZ%CzqX= ) ?xo%q_N~_`yj,S*kۨ&Mo}<ʲni1,P2eI7|`W}ޱl!+$| glȊ2Lw;Akbmy;.W+|zwl/iiqڑE)*T^a7ɝͺ[|,iܰ+CVŬ`W{hPe%KQ\[o_E XH TQq1n3XS_eώj'1H~4~W{JXAt<54juS;%rT;;{y8ebfqMUe3x?P5TR2zYZ:Wv(}D@ 87B =÷ΆV`AOi{K+Ph-bM#/HY{[ڹ7|Y+/m1fQ]5!~KAGo҃iVTپɏ÷żw8k/a͋~o>q-ĎtԠ|9?:.kzw )3S~Uw^gS}Hu)9V=$k-U(ڧ8_ѽ{0\_hD=` ̚a_z˗3"Ž;DO i{>՞ Ԡz{|ĭĴ99oj~U7l#X^Vݹc۽;ar^O 4uI+j5mڋS/9DNc7m3A74bd q]l7o߅gclͶCn?4zV|}n۹posbvPv32] ST_ϷU6xY0~djˬjS"XE_<kBu endstream endobj 34 0 obj <>stream HWNHD*xl?J ,UU=I8h|7`sH)mm<;p^$;ABCW $<ήb.M`U.e Bv|zc@da߀(QIfdAQa ^;S E~7jY{ш(}E A1 Ib3Ż!׈K2Fx -'ؓ 8Vli}}O8 4+VX`odH:N#X0W[ ;gDgAa |F>ˆz\avSd(gG<{gF =(2\\0<3tq:=0_;<Q%ѓG Yt}'*,*1sQb#\5DVc2PiMTlQ~q}}Pz~{Xx̬20Q0` 7 К{~Tvі3TdiH ߷>t|t][&A=vM^75ᖟ'pUMUT_UMUUũ*=҃Wb@{3x_]L[A\Vw$$5SVpnp 03X{W-O_Fd=Oԭ;ta/ga͓x2k5c?Y~ǁ X}; mf ]170G`s9\dw0O=5e3 f$Z`Z/NF +g?}u4_p['DGl Gxc|kL1q> 6ϝ5#RS_("8[s(D)&ڊqu0b֙%l&+Z{gF (2\\0<+x ;=e H%ל= =z?ZB$Lf5PK{',f; +BUCd;(c{= >Z>oJD?fqԩ  ܖlY=`c\~{On/l,5 1Um(<_[dA7Eh}n5-*kkMتԷ֒?|7i<ʸU|mV`ILDN6u%jG0a&sp'dH:"-y<,(lR G3 Qb:c&߹oNikhC>Ob;_Q)~#qa-_Gԍ\ª\ bPh2;r|W1f е ڶ 8ضL|`}k$ȗ8II]_mϒoT @蘞zV\0)s]+Y0#+ TyT*Rú_FQ[\yƾiL )*Rz)C`,7 )UfUqh w hXa%֪*.#ɹC*MS͑6,ci–R Z ]U7zPws%44V3E3erغ|=pDH6;}TܕA`hˁx_I}s4nKJɂ ܄NERlE(*ETD=SdaJ^/Ú**uk2]1/¢jx ʂ¦'Y~S蓯@A-'ex"2dK\8tNB6u}f3ɫ(Y)g\ʭ% `pM:|vj`{-r .Mcs ɂ6+Ѳ6?PHŘNaGG$7*Ӛj@ ԁ&VU*8UB^fT͕*XK@aX8h}w :ҼXΦeX1̃5 mnՌS?ڔ}٪F-AP jq(rcW\:MvGiVYs_m8x/w`nUzL~VhN4̔$(dVΓ3r<ʙ͏I4 ` h"҇,h^9pM6&|pF{R%+ŒƯ%~؂t? Iw' ~HV+4m3HxlN Qn_7 lBBTB7sF |;@I48}8(1c[8vX, .Xߍ #dT9hs.YxbKs}] 0([f-g3kh~}4#J034uNΠ{wp|/T8-Due>B\.|MT7R7r֔Dxp_΋rWwX8Y{XU Ǔ2&(߅΃fo:[;A]3I-T!LOʔaNn 1UA;OW3eR5v;V2ilVFj6 Ni'5,kPDzHQtp<Ή#4K*SNB}qvQz%`Ҫ\aԃo1; RO= q%,pa %ᚃ JI/_M.5.&jf.B?];C+PpZ7{%{ WMYn E,T+/.̛]RMtd6m|&.Ȭı$VyhpyVHݭ`r6 -sCyv"e5uzvyNa* Ji"ʃsuWcI&b aMd^\¦ 1vePolNjJUq &Hp|d6r+2129A  _ ^B$(USr`"98jFÄ15 x w?3Hjڦ8Ƭs: K)3emg+l}J- @l4R,)p 'F]^QWQY@/` KNc4WuӅ`B@L㕧LiTmhӃ&$vitJzADGleev#ͯ[ԹPPoP32uVR{ENܲ3S@f7kx f뙩j4qx@*kWQOݷ[D(zŒM:5څAS F7N|(k0h5sH'6?F ^XH?_"?q+ʉVE[i;9ސEJ1Ců`lHK\E[qKvL} ;EFܹ-]vՉ %6L/?]8H~ɱ #}DbJ5XuԵq\7Vv(A?dʰҌ˞9ϔ>)lh&iPN+ׅhyڴ.Eˎ=ԅf݈#lw9ٚ(K7][8h:9[MpW9kb\q=n.+~Y.^si) J,DZwlWwFZQwvJv6CC NwA)}ɂ5vQ\vjU3M("\36i֌?߀5S#qkh(sٺ!OXe̖tpb7 _[()ߓ9jXlg2y1Z41c)ӉZvż^ڴ<$(ܕ$jl5Cf)ot?е.ыO-d'C+{XoXc{-Wq$N]$F'm'4.<;AOr)uət% $tJ FF&^…sT4^S*DʔIogRfn;-8-FfzX2!R q5uop JhLMK %^KY.옭aPpB)y, *SҼsGJُ?zXq {4s52{ .hƲ6]:^5YtTV+eawIgx^8UoH9) 5-C'{RMPu~1oW|d!$|o۩=[Ke2Y+*q%^~Sp fx-TBLuaJᩓb^6 DN^VC|qܽ8ExՎ1ҝ| ҲkVzy` ʕL%G >p\}s"2~n\rDHW7`t[k'T[%ƠN=;&/TiHb:s LC;&-J)T [}{aB[G]WP*p''rb%"6l+ ٔ -WPlqXLoQyC;tá7EJwsO>"N(K̑h%oȏfπ9f|}u/pk}@D.ݏAfidEh,̀y=;UEhsRSO˒J%[*2[[Tg',:'7߬@xs+Z6bsx5/Z SR,'5(˥Q%C,smD1<<÷">EZ7* ,,֊|V!eLô-cݒ.$u'vP]&ּ13:&v:9V23޷mب t;OǢU/r7ẩ--lШ01ر fF24p#Go/^q^A`}7Kөru YX[|upb-`o43~B8eV Up5xE\,N`sGc"r,׊5!."˗6 Ns=xX؃yFI]RAMCޑWi Q)Zɒo:]szJZy98XJtv:CP=д)ظ0,]0Sj[~Gxvu X~&1Q^I"^Iv!ARwD;^*D! K: ޱj|.N*ߐޤdYmK6b4j/ȼCLvٌ2r,,ֺ.hMWah(h SG_ 8]8:>"gFؚ-!6.6¼ NӔ?*s͋T⎰ TJ"(O'V,SMؖ},_2"M.$ӛW%Xq|ou,S`i\!:L浪jrؗn> U"hN;~52;=N2DR1ddEG EП145j3r{G', @h HV~).a+\nur%f?8l Z*"oir͸l1"KsgsW}PP򈋃5ݝ J73do厸DL̾iׯ[_VoܙzA˯K3O%\^!zWClnBz[!ubiB'HӌeDRlUBmaųz#E?;Q*s/J|;bZf9+mmWfh¶QH^Ў:}q o)`4rpo-A{7"@PF]y^+ -$y9@:aU^Bop =K:jO#žzXl) B65T+q)X̎? "ҒyU| 7Mѡ4Z9f10ddE -C(o'6ߥu;Sd^˥zhC|(>M!ѣOnk&AdXc+#d`#Ma+8"% DQr 7#r1AIpɼ Ҫ#OIo9@I 93^ L܆EhTrE^e1&jJd-ʧML-)PΥ+hU BMqؒ:+zfGnjY *$J~x(<5i⏌TCڻ#=ۣiX Š0`XS~+¥4bˆ.Co+}]UY IW GR V7,&+'=(Y2,]b?i,)5=hsUD!-GW8$+.. N-4D<򩎷_˅# -芯x0KRgyu>{6F$v,;49 ҁ/Ф{.P^^[ *K~aA̠"bI81a (Y<)QtpnKYWnձgzܴ)~8l/ZIB:[w'ʖ`uM?՗4WO "h%;0GI9>ogKmɗy+$ ='~A9c}\,wQlS1qyäcԏ)eˍ҉X^1WoA\~9Cb;R{PMЍ\yQr>}s}/+؜)RX\!?(72TZ҅Lob٩^PcH=WL]u9Of FGCӁoLn 4؟Z/WpZlM55WK6Wú=̋Xչϝ{P!Y  D>= "&LF~"G)%/Z{oPnn::I.&oF ?p׼D<b(C"PYcX={X896!@/ ߠdbVu^I0ֆ!-;zM5φ5D(7?k1num^.\uk7έI`j٣ IŬIB7Mwct2ߪmJn|SkӔA kM~500-[wQzRxy-v_LC)Mɳ} #)K^׼n֕pҒ {{&\ml$պ.X'ݚ~hWm] HȽ"/+ؗ>-$H)xEpWn }.^EԐJ=K1/)=# Q~~qi#BRۉ'mPjWm:j-PFj z$EF919rMiʕ.z_ (LM&*"E u>\猚;퓟 kܞ.1HXkI0M\%2 # }q3lrVabKMz}Yа'+ .t+(m,lVd+y{և3𭒛l(P睟83p0 s{lE E!䇛ɇeQ=jpm`(ϵdQ,ƌ񳶛VQ?,8e~M_W Yy9jc6Ln~f.?Ġa8+@Q+LD>P2LKcB^{hؗjk'" mP-mTq2h]MƱTm!:qqb>IGX*Bt`"(`crΆj:5cJ![ӔDw'ڼǹk )&5yǪ/BåI OR5Gm׾#b6>^>l\M;)ALS_q/\=7&m{Gqh^C`CLR"ҍdn7:R}DY`D]|iz̀Jyx MM'~TrfX}pv{5kh=A K 4! Q+-[B‚5<+(.: y1cI'Rk2;/kȢYk|L/Y$€‘YpC=srPB1d(h-4:wЩ:r!m+ w9y@Ɉ}aT"AOT'z;3ZA}tnycVP]at2aG W₲)UY46^ug:lv Ԇil\o'h?٩=6CXA~)P]-*;MkhAE}6ˑ^ hI$[ 5K fC,Ƶ[hK`w<(PRm핌%hB;;|} zc{ݖQ~ &vhS >15s I~ uF^̨{vUj[siAs&Nt 765o`O^5PS=5_Bx֫u!m&>AKrP? T&T}7IIvf̜9vOj?^mwӋ-kŃ*) Y>:ՇF*J7,iMl(6l1 K̭"2p_ UWWN3$vSޕPgŨ~nf#̭!pBJ.3յr5^nCsڴ> suѼ3C_uSjUdGt}Amu!*~wyMnvi\jʘitm~ۈͷ:.EN׶ՍCU7mJp فl9NJiqF .3XBN9C92"LJboikOWF۔93~XwA|(,йk+6uxs)Jd4_PV/ƂdBo4\hE_ IJvn$soT`6b%ѕ"RO!ԣd"ן!Y]4ȂTňl; =i-/䩞`%kOj +@!AAGݕ]|V?oA#g a˚a za9︘114Čl4Z}q}mϱ}+ac:z&2IxlW |m;ԩU6Xcю= ECctХ2@ <.|C!3X $m BQ8&U/wYxVT6@@mitzʉr>uX7`jh']^5LRť O7}8 @dx<(X#|2(fs_Tz]N@滑hy bHKl= 80RNEcMfqTxAYś} (awjev`>'od +ʫ[޳;*!|щLś%7 m#AlY|WάoS;H©#;T (Tޛn;xTqd^ dN`.+eT rң]$S69't }z<2+3m>Z.>rNf >stream HWZ}<@7!!8*g7 8 ('[%; Iwt?=~Yu]Ur\trB3)).cᅭE,3H'Yܨ9iMV=x,^ bs-I40FQ.MJ!& hQ2UO3r&:-g>gU>QtN-`:/^>WO_QNo@,6huk%ʚ(ㄳRIV,AB+X.EZ?:`wDsUѿ5~R-Vy t2MPMM: ) a%SRy1{*l1Ѫ*SL5 PXvU}J;Y_{m 6mjɸAq1Oq!58>*CClZ=(P:NџOLȳM/cJ%h-mV\//mbǰ˥'zA?^+ګ9*DzR_St Ǐp19nAH:A`?xkIPX<󱴒(;"v NC}Ў '˻g-Vo/&rBZK.Epdj(T%d%Y@׷] ~~i⩡ZVjVˌ/Ebd˃l(Upڋ#`,k|YX:c\/?^>.ϵ d6;m0.ΕJ9xgj),?mT FT UM0,~ }#3W.},t|r:J8zU/+/C2oI:ջQ[^krE1#_)F#AEb Ֆ*ݨ~QJQaP?cMp"}FHz1bF/>1+J7MTrӭ ;UW(FcQ=jLK~zUmMhF7Qs#cjZW5r~[o wjL/DF3Ťyݕԕl-?t*rŎO q8MZ*XTt[,F؅ً:m4F}Z=.[שK5ӥ06/Va;j`:GvIBSQ [ݐFUB}uVBﻎ&F+/Yi̷lArI94:Lu-~. #]Rcu2WɒgqG[ 1:Qp,cJhx}c'˘g 2ꢧ_z M\&ɼ.L%;=-L(D=Pg:+ۈ<ث=S; -Rn6@Qo^J8Q!Adh(W #3O:, CMdy`/:DT׭"tV' YRXL=cFFcx7K0c>\z:.cv^ݿ`b-H Eo⹹ddab]oؾxU06XcfqNUc 41xm|Z21bVs:$xc~8ͯ.#eZp)Ͼf1ރKS#-FBށ;\ ]T>~úP7^Sta5I_i)M4Xn m4F } "'{J#<bZ3Ht1pw4 ^nbD P@9A 6QhNEqpțq4Lcv!JC@[+Cٯ)-oj}$$/4Fkޫ Z!{zSѰp5KC["ZbqFs2̗R:]9^˳ɸ}WRvR>f]0tv%CSڕ4ϲvb](ԍ\Ig;/0_}C[Azoj]۾r _jͻhJ5^꾓rXOXC KHGVz³eoMlgw/usv֫t-u>Q̣AEP@p@T#x'G*! I*==?Jh(G%. 8`jPIlj/V^ >RR)Jl}/Hu^mif#K|jCy JB0W.[0}eGryTC_{8h,WOun]+b(t;wvZ"[3xrf\j=%Ø5EUCS36ub8B#F\iQ\pbGuK40 |Su pM_olJJL:bVnCdGBDk^>ٷ|\}|zZ,7uU_d=MIQӓAՒO[ s!*RD [N5}ښ}rc|jo' _#Hc,&;$R! pYl0q≟(/Vݠu(''J2p"$>N1p'~ OߧԜݱL9jP_~GEq! +P̼deq´ZL4l%;U.8CpIfN>Cو=w}Yx& Vj]MsSOn9qJ dhvT evSEUμ\5 2bƀ R*Z)2%IXky]X6,ŷLF|T6)b"a@"AxWJ1 ҩpz5t'94rjǫaaSrkJrsn!DUBsrר=xWVy"?pWƆ%!% ݗAV9qc Dy XS V.&9h z{J EFd0$^R0B\dI{nм»S~<%)% `ef.Mcb9#.-9p$IV1OMײ"cDkwe徆-$fCi{h~s]Yg=q A=dSW3"":*'C,Ƿ4JҒТ{ԢnjhΆ'5]RВj|5k)'1o`Ko`Bb4?@LtxK_#50a5QqrD7Nsx6[[׭ju4vڢ[ބc=V(껒 Nlg;Jk[JIl >a')aI )%-yHnPǬtZF9Ϣ3:o oX  F&p"$2IBDB4/p/X,9g_t,͙GΔ=QИ\pØγоrD֗ W_2ᜲ;hr 9If}sd§߾G6ɲ<=ƨCcy1F"995U[d|!5]i1q(wCJkCJ@Ҏ1dqd?6lRca-߽h`11}- c4k0k왻;J s!'te0qM"rh?ߜoy =7B6tBЀV{CX}I;˲bm$v=y$@܂e^k{|>_^eD ȍx9;RCH!7 pY`n:_L2HxB9^uaI~=qؼo+|q3hܕBK Cˋ0(ɎCJr0IICݣKd!MjWgzq(0ea-qeu0E(IהUqX[7f_WA^,cLB s.bW1lf[eC-fVl3w\^̤ґGdDw$Jbrn~᧮4TMIv{`"\+>?Lh DCEO^4Cp-DA sxAS7B2'P^?{3V]e!:; 6\FxrP30v[p:|8m*{|r, -wz _ 3L%nVJM OQy(jvT$򩮄^5'wO2;ۖRGW{_L~T ^*-/I3e^ʷJ" gg̙9CJՂn-ǰӷh0JՐ1C`-3 vuJwafޚ5,$TdrnxQ*0hS >J\g;ˮl\$ AyAb׍F?ћCv~# ` ߒB@) :&@ʴ;$NWV}K74,ih &Pxn=DBi3I#Ұ甆Vj}> g $Ok:^e;gPg~1ˉF1)ƑV¿@F1gnHie\n -C0姟?HW11fe IcW{ؒNT}$:Ģn"'Z4bv&4`1՛f2K.hu $l I}L/NŐX*s&Q Jp蜲` 7,{ؗ- +t;VXqX.n^9r٤pw~}J"wPcf5ap. CL{iHuOJh@!Nb$FX+( zl.Z$H1`j/-S/Ěh,7C S\:NeRE$C;<5qXXXGa,E,W0}6AMUKGRhSEk`o2&x=l(Y vZC԰FRr|{_SYg|2YL펇LP4'RuMҝ&s.06NoĔ•=׸,{<xjd/ީۺSn]fE=dۨ%&NP{ 3b˟m,.@/ƻWOB[0aj1w{$Mh#C3E16+=|ҐDp܄`i3ж~Ir,'>EYUU{.!b7#'VzZ_g`Y'Z!9X#/fHbߗ= T;B̗(vZ}WsZJzf_l~mfJ,jl_O$X&Â)|Ϩ҉z{p YfOVYDψ(#S<(E(ĚzPsnnP[E6EXrIv{8`AJLH{ʇy^̼E52͆vO +:r^|I%wC1i8/˴RE ]%'U!:m^ĜOO. X0\sg-tzQW@L4nuB,XoƬhg%2[HZEy<./-r+ Agbཬfs)fPν9WUĂmRԑA~{)NbO6S~^)&RKtՎ?廱d+r{u@1L Mǵ-!<]HWJvP17'JS,Z}o"thh&Lm#FV<>yEf\uFCyn.f]8h[ ;=A?>ql|?BGI. ģ@0VWn'e^\5.W} 3.@-J 4Ѡhi8?iiPJ-#_L>;6PNl^ScDguZWNY?7sO|ÊIc$ޟ&)w-ϦiC؟FqG3gg.ęj4}qJ!~3g&~v8@1/| t2JnS|g#AgK:>Y=C?/ߙsxE1%8 2?{qJ,ƺT0R Q*@"0?)a2|em 2Qr]ޣyb@L|#ײ>1%8n'YTA=JNoTҼ v/|xMxg?,k8jYM/nmr+j^Dnb>.ޥ'D)H. "3kޯr]ϳ~U~Bb|pm|^%'ͅUļ#a!tM*u!L|Sq&Hr50 &ќWk0I tGe ?z$ĈL:svFȽs_6y.+ &i< u O/ti hjoz9i]‡kVwlzw5O;AƈKg2N" P+iJQ˨8`{gН`_u'&+x&* Nת.o PtC䂲p'ma,]yŷ;15ra1^"N @yӐ!W!SEyѝ`݉wIf;[YGUWZQU;,lBʆ\OW={n(:4Ng|/Uı1>mѰD.4Cj֏\MwY"P}L@R%n%6$_}.Bu[oX}A Kd⒊0,"ЎRI?n;9<âs{sSn0EZ<\d$Í2~ GpOGU֠\BݲpJ1NnjFf^aU ZM9"X"\6Uw/Eq7plv7AYOpM&Vftv5!h$""6Y uNiBye#9RNZ RÍڪ Q?] Z&QQ[O#yW{-{&gM>֎7R&yowPŲ>Q骳r9=~Ѿ wH3~z.C&4W[jW6 "30S&`(7\KGqYB Xeimw>2@#5j Ē q2krVdx*/K ba#ϭX(>TN>Qϡd9T P zjAGn'%L?i!axL@!' l`ɢ lo+ l5 3h8E*^?.=kQ?-`K⏅ɛ4,TqTB2\/^jkY)bN,W/쑳B3?imQbcY k̖XF%yǖM |8^c.K]Δ$>> 0>F-jJ\YO;4";A`۞3γtBFZkL꯫`%Tf've.pN#'K~yЊ'b gl s' +< B"xec׺:ؚ4dKPizmT;YZ|Iu?56#= `׬tBy<ŭڥ܍r+0`Yc9 &Ƕy SQV8~wkN=5GUPQ:(&A$h% "[9KzFJxi¢CU+`fw|uw")8]}̹FB͊ #G.,hҼtc6 4.Ѕ\ D p(GR>5 v 711QC Z(194`z_"lkU.:sQ!Ha3g6@fkzWkn5<}z| v&Xq >Ԅ N)L]L|,A5x3]uN$α7*/X:؏xGE븼V-vtciƊѨw_ӴU]s-/^a!Fxߥ4;n?JZ'󀭢@j}T߶+Ny6v1}%oL;؍sP/(^ $n?rcotrl-nBbyں'G=NJ7;&vXvrcnx z߳b͆۽_dauT7k M XȯgH|bЕRl-x+[jӀ~iܳN(/= l hK5i3ia',ATjF@sZJVqҖ ~14GّcbzB^*ucnfHs8}^67HWדNRywKs\Qk %nxe249铈#XϞآl -(@?z<50f'/9dk-/f.ba!F̎'ȢbCa݇H=f8/={c(;`?j+GX +}>vB0C?R,o%{?FIJ*]Wb(FkVk-J9_~,K'e5LVh Sc @O[:9٦ Jڲf<}KB?Թ3e771ʑ =dB-3QN:P_/ e[zo%˲p—' o$F^¡4ܗM,P-U$jF.ffqȃ.3QǻY5P~er. p.6\z0(-}21gޯu*f,qdTԿ܇?H2XPAa ي;k38T b>ϟϗr45_&EZJcR Ї G!D!& >Q?` |棆 fC S*DĸdbXTHx2OH$ HAHXTX`(dћZq;(~2F sR~TljJesC7hHD aG!o@^Gݍ{3S̯v)|L_6L_6ڋ>3z9ޏޜ͊1ZJUcIq^*đW^Gïm5,iQae~=Tuu>/,66zCZRD_Ϻ <`AœW^LfaEDPxK(z6>stream HYW?lLP2#2(B r?v2n_eY{WoN3!l=MkO6Sfy8aڢxmM;w,)ZC#fZwdL9;Q(̯Z J0W$(̯Z  e LV;߳' &*{ts5IB\ 0$O_Z|5;{_,rŚu0[\^0toL/MwXۆ̢aV!8 1 4 p<)N ):DgyĒ Q-@X_a_l7Cyvٓq?aџ.WYu&ݙtgĺUX M@A $MBH(b%љtgҝIw&g*p S$ %AIy@ QL3Τ;7H ,0s<څ< R )a9H(DA0<Ӏ)(`(`3 0< ß+Pr̉0vc pA;jGbì5!CQL0p$0 L  Y1?~tF u-g8tڜ[Cޫ'gŗ<9B!W܉sZ~o{ T ݝ"} FTxV+ʔ)̈́iXBa2x/osڎIl,7Syi2`Z_ïgE*-G}:ohӵPaDG`zKgMV/VY{-qiI=TTFzEO9;yPyVxi-86Qsߡx[+6 ] IkeM<D% Re:.DQ|[h=CʛlD: ;9}}ͨ*8C$F6sk&}eJ(} c $T7%yZByUܽq7zU{&DBb$0%֫ba=> ^y(LQ$%FGl%^!m[gMYܭJVNӬؐDi3/ v$DJ]VS# )Sя,rg|3<С0!ʁ^&WF34LGJ0.:kڿ@^9=$imt tlPAM=}=>+jWH9|#.l)Bоf)dg[bMͨ#֧ic4, 4ȫ2@M?zCR_s^j\-'zefHhڵZnPFV˓ЌƼ}o%eZ檡)uY=WuvmMdKeoۛS7eHF|4Pۻ22݈ 2udQȢsJ%/] %%ŠjڲD%9RRH<_]8c)MRYy- *SLwEPilQ˖_[S:(z`:ћ"(+ PDArF#ZV'ƦFVF K7坓87Nϑ{~m\QYUM;k.qL,7O˽!PAǼE%%]>pQl0$d3 R7SڱnrbVҒey<)#_#{V1P}[ݎV)t;}۲]$Ȁ.w0/J\1+;˦ nXDÈA142+e{'ï݅Ouj7J1̭w~AAo"=K9ߎKwςyTVj%D/K>2bИ11Q{.>&|fdCy}|rGZLYTA*JqG[Dr*(+FX Te-CC幞,#k (kJ,}/hL3Y\Rl*Te{:=f:2w6%y'{ t}sXOEKI68~zD (wѹ`&m AQBhޑl2@SEA9UvD)CT1>ĶJ BTV{$}kmD$UaW*`_H*Hiф{Hi {DIH[ɮ6`7c qtgJN)/OW?l`eA.C]Te5 s(|:;Hy-N@x Qd|U=Y /l7 ڍ2V p=.`χ=Sp;K':eo 5o D|QlPJi[!K՟'|$̥H\[}nD[zbuO=e"Wշ-Ny+6$u| ź % sZRBk+]{]??>e썯!&/;>,vm$WUB^Y]SR(BZN9v*#` uo.~`.ͬޕ/Tc(:C[4ŁԜ$ƴh!t<c^))?Oƾm#eWqm@i+^ij/lf)_ [k"Ey+3,*!yn*k ^kަ i!toIx#F*P \Vҍ &w(E-cVJaa4Pl8pઆ* Or/P Nr:6[#ܷX93_`3 iz0idY\<؛'=ƶDlU,5hWwS "A< ^ sش'00@ۂv1=݌+RXؑeg.rueWq(  bT|J:><Ա+]"KZm*iYsvmMSy f8o5+8Xp2@G~iwM& dQ _M\}Gux,Ehw6_0es OM/-VެlAWcN!|w *;.W.{8zCΕ őc[#ZMDnH:$<%J^y x|Rگ^>Eg@x<\y2̉Bc36D73`2?O0^NW?]Em.:TRL꫍U\SFuQ}_:\KФ.{WjY܌;}f6-h\zLO5~e(Iw=u3w˩cuS_uQ@]%Ģr.3Y#ΎEO5~&e~;\j4EF@g=*WĢ?rXq]BڌB]-gĢ7eLO53Y3΍6nϘjvd-(P)cz1WX>stream Hݎ]Gw7H]]p1ʚؓa{$ Ž9jժ9K۞F6G9lĖS>~=s6[iD3ی}~q:r/EK)fs}xi[/D2suzу{1'_e6`X!6R`W<59fck>oo_}R}w/o^޽yBږ?Rs}Eɽ˛w{ONo?{7ooۻo/[={sͫg/+ۜu۽~SзG/> _Yrrf6eTK6w®@R.;6+|gӬ \s[%G> 8jTN RdcX R@,{|9[̭p1t;\8@sz|9Ϭ ICU>PjRYs\DOOwuK/ۅyD{<ϐ &wfIdL3U~ =ubX$R鸬o/z[ 9-fЈhKR gpv8Wx2x()Qj8pDhB Q\ЏNu٩ei.hsf-WN a%|y&9դ. WKW9|'tdD)uT=6\B.S_l8G4^:s;Mzi_)ss6g=媋U:㼳b^y&I΍;F_ܽ^'cp~4?4 PSl4ir4J-t  D MdT"QJ5(amTE2HISImT^/'t T BfV'MGK Pi-:aj%zb ۘ *H{'uEx̀CSᜀ[N/&Wg{NN[:R;)Jsb%\{kE:/v aw&&L>ÿ 4cn-0/m^ ZPatn q"xS`yT᭭(ɩ󦺮Y*%cHNJ\d0L pśiJ+ Mf`RbYvYv HKJ)Six(IJ>Og0 uzgD{ݎ3"IDez^qP.Xb,‚wPˮ^@dU3(SҴK 3r[fЬF.Ҧ$ (L\vއERHf`#0~¤[D44>9K.uAigH_-ES (4=hQrʤ,JtZJ5ھ0fzj^:NҤ L@Z*6FdhBc-/ņqPbI^G%b,e?🴢h! `Q xaFt{A\բ̔* 5Vkdt/eHI>M θȯQi6 5֭!lfφh}r5]AiEF6jHrNM|O[W|q:[m(㽮ibKH;D1tM~mPDbFE"fC`j) gY Q%~^5MW2*]Wh N ISp'yqh+k޳%T805y것/ZpP"7T1~FIamdiut̡4J SBV"G X+,u|`G@2_ɉB=cKG<@P.)Xt}/eAL_w؍r$zy(X:V Bi8ԃ&BmhR0(k|R~R/UFjg,LV*~ .uV*PYiu(+bҍ2+Kdr2J%xCta:{ZD%uL*jR29wzď wxjF PEhzO .0L .V.MPl]c/pP!B-cYzHUP'9F$o{R{eEQĈ2ArBKM"~sUn7]{,T"ĸ Krb,%G ؊rrƺ]Vkd?&w?@[K.2ŎG<9t&zD(M8̀9 IS,7Bĉ0ԙ6;v<3BT43[Q 2tF @S'ëqLq2δε*=Y+0 ! w:iv|I %B^`}(W~wjvϓ6@V.:qjAg9 A _swn20y-Jch-&W5ts+0}fsOzRvH%s,6:V~~rЍ)'4"@̇R1p¾#Cx!{]ħj'`52fC 9Z]uG<Vz3sD!h֠&%:1Q4u 3.=8-N#eйe/#%;A&<=ӕAwXaŽlYF"~.lB0{ `E BȮaF /ϋN`y+ĵu)!(?uM ^:^UvSLB__io'wAr]@K +ko-ˠWczt4ۆOTQ7c3T2mEIʤSy>=NM @8[7rʸhRɴBh ~듫\0zktG8RQlݑgH{ $rqEo7%+a{-{?B1$@^b^q 8n僋A7gĈuw1)VɌL`<`6*e<\%+ *]Q^$y >/>'i;FA: ‹Qu{CHVH߸I]CקDgߙC Ykۿw6%&L߀hΜ).% `Ϡ4[qNrTJ,bJ+'}d#=89|$f:z#Be}=V,Op6N$3)Wz1<8PxI>:͛;1.AZIzR;B(Ty dR^ #]L!U }8CsVmKn[!Q?1 Ӄq| /dE1W  :m<2-R|H|\z0~ ЃK)cnTXO \͢)ٌv?4Ugg&8+L ]S^E|mZڝiW2,1iw[\4ÖtwYǮ#.Ǒ 3Xb=W^K8{%Ĕ͊ԠO=h{X{8qQ!cw.GL6jcr 9ghª#ZHӖ(?n߇ܮڎ}EG,BO_&9:Gv\^;ED65wo"IUX| * B+*czj">\k] \0U}iNu[/xBg:o\Bg iQFCMu5ӻͫnե{$mb >v;nѡ6_Skl@V 6X6ӎ[ WMlCo=a1[K=#oꔗevTiEht -sQj$Q>b" h!n\#Q ފ9q,帥7K>TjKG/I[^-^ c gn:t;)m)C۸2km6E8XX7f6:9|03L(C8LI]:s}nFBvuCʛ%2r/1(%ƮjC?@ĝYzR'dNB?hIc$Or\>E6"}}Z O.1)~񗋩8@Lg;'Չw-/QS !2_\h5$p\R(g-gFl(KER+HOjloћz>'TݯRHFܸơ )ss@sdX78~tSid0Or 9͑Jn-wL%FQc+M Խ9/>J#!ebϟȅP=MzV2¨\|'jadI> @nIE R'(?Jg_cqJQ0LLf T{u( '`+Tx0wlHY;kqm7 n^Pn,Ku9 =oI'g(;Pjha(N<+*X<5XDb.~mta* B+Ҍ33co OR;ın~6g7ynvK;.1CM:VjvUf jQ!ueGdcF֩F6dtJPYrlbP&ngUkSI19 Si]^8N\5V&;dC@`gP]˵qiZaXƾrAXja V74pSugQ 5pxk=@EeaJ AeWza;Ɩ X_aXA0'Q9P`Z VQ蠞o%?FU L8Tu?ݛ"[\P|db':匕w߇|+ĺdMpgggm GPMgs5~>~}ڵTKMo@Hm٨\ ./ HY8Xq>XuD}x\$N*;m+[+Bzݖ]q(P(+VIJNFceT؉-סp^\2 Oul ? #޳b&KGdKF9|VgN5̉W PF=[_d'x/DV/2fX(kY 7=ۮ%6WӖwd1=ӧb0Ol_MF!6,\M=&HҌ]-|mf߃w5'1L㎸#a{,0U&dyŗ6OQdژtpbr$o!1^:[2d_Hu׊y_uͯ ’87Xº[hDEP޾.2 3C݀f`17Dwʹ,GtIPU],cqyu_bY:#Oxsδq'DF(oA ~yJW&t,U$o#䬏{A ?0Ϙ3 %k_N~K0tj1`^^ՋQ6tlpRnG,OPx#loNqB0 _ *iSPcxPDC@p:6ZR.PBL Pzcy7r_ A m#9sp|h~e IBR31|cf86`0-Ֆ@c+\OssK ( DHf cQ&GGЇ}bl}tlsLR9&Zsϻa%l0rnZHVپ7#zCL-n=\8{ʞWx # \vĩ3\~x8y~8gqaS(PBoK_?sATM@:={59NDh8[+0 b Plq:_UG0U߈+ ݞE ݿC291/pn(dp kAn߹8OAo=n1DrQ~)$`ʶM[z={[q9uU"D=K\-b.ji<%"L;U'P#R~g(& Ӌ{ύP?rgubȼ>\r9A+~B{e>POWV+&>8?O!Wnx[ߟ?1p寿r=@đfml`~Z>|$gDC0yu^-&vAM`9.o-hSaҜ5p;"2C-l>,{MN @* 4֦;De~ƻcǻj_1`QpY- WyA#v**vJ2zh^C""5䂠00Ne SJvdfn܊Qgl@fPZnq Zsjwr T`i7YR|RDBSPnEIGY>2i;1Iw&,>jV^U,}%/advnq^H=?ͯ=Vp{N{>ؠ"e:0vО7<FzG3nWD?˭7 e)#N߻'. zHv"?4QHdP@w{)FRLtK:8SCMZ %*F/~u &e/QKrQa58ykr9/;!҉FZ!ƆrJr*$Y(hxad kE:ɲFE!8͋glב=q(L5bOiū81jO 5X0+;8"g nζD`dt@jp@'hyve}yuࠨ =hh i'1H〱A^t$qd0à ɞ s92FOf_O߾}zp{O~xz}x#YV_ßn?ǏW?Lgw?m/_kϯעvۻл?k tjz~ᬎr8D;%# #6a '])kA7)r, Q!6[:梋>dH ;\d&4XWFs,_t q3jZyNJ`~Óg24+keyC>kw @yXJ!871YW^H#E~LL3o'-\k}-[[;6< Cmo:@lwp|8HUr}ׁT=@5lGG) Oö0j!W_\ގX)kVZ:$"8š q'T[kvT 8@i 횘~0 XMN|L3$KVP08;Kڽt4b5C:rA75v~|ugP9cW?#s9{hEls{!$ -/'O^%ET++&ERԃ ĕ]G}ק>,DlӍa:[}i ~ѮCyĵt%|s/Ead$1K9[40e"YPeu"\g܁E r8:g}EHKZT% !"{ĜHl#k ͘RVWpX~b]4~?/iߐ=+Lk8* 5ƋSa~_+Ar#L<_kzs?cKH'gï%?"YDY/YNlRu JX?'59uK=UBB [Cozl XʉV>qЫ0K5QDĕZ#ޑ2Z{UZPIdT )S%-^uփWU2+'&U] L2('tIQΦ=eh2 jQW`.")!=rfHOk-Zͦ[r[iQ=%i9 OtWqƮZ*8_d閗'V CLn XcZj2i~x|~MGΖ!t C2ThDe l,:_'=x\76|k?a`T)2-!4`gU(|zŢE=g,:}nc|Md0Gi&S}c,)CREDNjd÷mXiW,311g"4GFnTJ~Rׇכ!fxJC Rc3䚵a3P{IQ8dAT5Ěu,1fv{ J~7{Fs oYNU#q;bIV jCbطT|ݸvG)eKw" I\JakWo.!CIepIYN fG".)-m"P`[[XvCfMP1箣ՉO/8,g|D`09ar( FcFҲtЙxl *sSm$eY6P CχƟV&l0<= o_Ґ}fmõF֋BȸEQt.;B@Վg gNv}!W˖yw 'y{9l!W<)i#9hՊEIU]aO)XyLbeۇ灗ꏽH\B4 r+K*JQ>5oAliS({~*,|1AOs_aB㲡5`N ̄HW>"<~8xF¢Q1XШ[sgbں$DKW[>åʫUJUcU;IzׯTz>*M.BZme_2)E8? WCg:q}gztFԔ_^x% =kX_7FB[fy-ƴC.DWHwjQɞD^[Me.#Geմb{#6y~w<=7_?SDtc{&CK1J!Ttb'- qi]9jV~{.]3v!Jvp|wSIgC rͰzqb8֚?SJU*zQ#vyQBdee}?R#-FuԵlvm%us%3o=p>'rcIH^ohA#h(Nl7XX?OϐqJ!4^%t: %V%CW|Rl<%{bT=izlHcU.o,}]㷜0*Y&JO-_YFQyȰ=\ [rzRMŐvwb[U=SӼشUVI_WΜZh'b#v&-6 I/3{J v2MWVu]*@Ken]KkA"Q*̻.?z=j}W DWM#$¼=ԅ<XbZtZn(0#oX}f#Z͊U^>ޠ*>'L[X.ۼM'y6m=B%q~ph(RygZzjh~l /:r#nE+xQsocEG=}N(ʅРM 7G׫u:$')'WSboYE^O",Sp᱊i툉ӊ1Rf5"A߲SCї̣plL1+ق</0*dTq.z#T* >Th{Y5 LC\?Ԧ DU[b.;u9()z~&6q Dl hI!Ĭr( fi*pg nUKEM9:hLOUEm!IutU\J =$w} faRFv8;~=cӈhaTqIc f!:cN+=2 I3]>d[nlhS6b_&N` g 1֣[ÂmAK jk[\8L|dM.$|e OW8c}9B !sidn^ (Ac?Vpox61|Nu)dXr<ŪZi@0|#Qd8;iʹ!K7TF쓝[T#$ҍ<v\}YJB ǁ  Ad"iA=wX[#un CXň@Qb ^t:]^tSd*C[KmP%e資`k. HqʑfR*:>\u8n $o#9ahiiaVtE\혆Fw7޶:qKc $Z`^V0z/Ƌ;NUf.>`nѩ Yu=yp(n*x>q MGB֊Y xNʏjOM,h2N/p]<Oo3qӖX Icܜ6J!SUC rd&G2QvqD#XN޵ɾm1wiMS 6 * YgfKGΚ >!OP?]SE3+ܹ ;I<%mg UWst[_|` KyAqHex*bM^)5'rYg-Dʥpba`iHE aZ(HPi; 1E($'-_2g$Fu#pCOBl3GҬ yٓ>#! L= !JB?a~XIw| X˂bhi wq7<=EnZg(7ذߪ4L'3={ĞE2^UX*a / ĩD[}~k*1Ho 4L0aqg0f-hu A,bjn'la16 u؀Cͱ:4V0cZjܕۚͅܓ$jhp<?K&hEhN 1^ *M܃PŘIx rϮ g.?b20Iy Qbgv4.!l;z1[\1FE]\lj3ڼ#HyT ekg~}@~`S+j4|Pi@ybYܱ٠u)^D?7y|&:D*.c& " 4pqw6P 0ǧ?c?H>!S w/$d@#P27U?2l [b@W 8b,b i!$[R0F@c`;#"*Vu0ji5Szw^|j,r%`T9Oy IYϊkgO<ҿ}'1=zqEK2 HVH6AGH}S3jLYq"DUWսuycbFY*(JV,"U>>>4N?zϏwOwVӟnO?.ǧ.V.\7\O7/Nv_ﭫKtq9k DJ(KPŤ Ol'Va^HQ'3@=6Кk=+pf I2@[E{ Cuc[ěeΫ8si#90Lr8QqD @%l0, 5}GUJr)[qd &>mEG$܊(3b,X=TN /]𝑺L&rx2:p:T8+l6h@ՉcX%\MF UT.:$,RJPVx"3.g4 43ikk8Zk-ezP\̅P,S3Yby 8ДX"2Q ##Yi]ɠI1v2@YGgqG:K4è-@G/I2x܄ 9u / H+B7eb#@ d,Xc,d+]ńHN\`[Nދ56 R(g B `WBe/HYiU;s N;{=@ o5q Փ6b2bPMq!4G]gkdD53nLY *dDV Z:FdCDBX9!%~mUS49FGpT0cIı~arzX .~r(,&NIC:@rDC];LMLeFSVU~#'W8L!gSe}~Bi JA1:I0AUsok5HF.> "LF}4?(f~HhA^ε!-Y<(91$<ʠs;9U+lzR$B[`qj 3PH8e?@>}G3{͞-YOE;2Q4'$.lLƐ-nTSj8%{vQ\ŴO]S ^Dv RUp̸ +xׂS 6L=HVÀb 6JVaj3>ê2"E+#&2UT@gV4zrc[3z邧_X' H l(ҲXP7̇j:ά$mEax+b S{C?wvV':>.{2~wO׻2>j?ZU1TϕU.z~YȨuIg.jx骷3r(q)'On?1~]N+&`[/kraj֍fi4 ϛ)nU۩T]وdI(j}%v0fu;'EDv@TC21J>@F'.67iGZ Gֽ@qTPQlþX\ɫ>6>q*=wfLB k[-w~,M7F'ﺄƙS܆yԿU<,F:Awi~},n-Ä+.WXPr*G;}DR7fmfr:Nb\o[pHj %sc]P HS KYy 1IQiSmlش}k_B__6v&guO$z%W8F3<l4"q'ҜZS&!S>2R |Z)?xquRwY/)JdUNrEģQ71;gEYF츦~3zix&do+NY>gawPFxdK(zU?2vOrPYOik&q+o9,ӾbFiY|}\۟4j_r_a5@;x* )e}.D8$,Q8f# RSi2f YGyݝO)SND/Lϓ2ETm^OQr]E*p,Q?YfI$>?E\syE5>rik4syM:"SUDN3ah ǹӞ1(gc9w9sD#?eL\rᔏPwPrE],8o7~2WkKy{M ˌ>ˌrB}> 猚JM?yM{N"l: tbDz;2|p>3EH%C'\R3%,GJL84a]- qT%(|\W?:,˼pCUI|b-`|μcNrs\E m#KDoW+(aI ^ަ [؂Yih LU[XyTQSZ#PE^R{@2.wj1˟ZstJxMأ͝zFx 1Xr&?"[x4,iwDjFǶ? zº[Z2|#tĞAxMy&8RoPXúL9^ }szVNʕIF%QH *UUDN9iH 9"ХM (I=HF!W ftcN W5Y?/oPm%ۄQic}uv]Zf:.܀f'GzBUu󐦋߄0䞽d{v<jIoX|U;-:j1ZN}N>B\Lh'߆y ۜVtTo>^`4y5a9̉Iy%PRGhG^ouLˡIqV;_(u_z2r~GIJq¤p]bs/h=$5uIwZu{[e}M_v]QrN ] C$O\<7-wZWK4K7qeM^{ 6,k!;% Z㔯=Z30ir*ҦBܞc{R:fԎ؞lKwlOF؎/<;l+ѧ 7l?|[YwҲCpKlGq(*ȹMSaYn\¥UФɶwTdh('s!GZ)i==:s=m}\<{&"L&8r 9MXyݩ ?7fx^Ͱ)0&x21ͦ?uk n1˞9K4Cx9-<ݦԘRYÄ[زSu[:+d&GZ;vn\>"E! {WΑ,mECUtjP#xyORG.KZH8P1M}ֈH)Yр( gg7F?}޶vy淒/SiL ڢ!MQIScKSa:R +2`Hiyd"uúA|oNU,54es@evOI d~?O{'}uQ#>(89Cr54a| ~yIWbVo5R'hs>+|d`&BEwh n?#y_RAh(vYFI;.*χkgFe+5돫y uN$o8t/(7T yM9UmD'}KOwBF&,"gîWt#8\ÊZMQte>b`1o=p8Mx @ʜsXdɖA /SM9l;X`F6E즉%;2g>nx*AaY>N"Vo+) aHy_YԉC+P3qݤ}Ri^ "ONODrT|*\sE1ŤCOiW<#qL`t.a$V#w;w1#oX0>'_ 5>K~F@DCU%fFFd4_X(k/(QjZ#zN`2([qnIBΚ\mSk;R` "cR(W0_zꋾ23*p|K_Wgɐ% \ ܼVnRŚmL'qat>in_K C5 >5(^{RH]<꽖62Tg 1΁82;<*a {  |4j `&zŔV&7 4Јٞ@VO T0LqWeՈlrdBɣѶQvtRyvi@bIu,y&Qۈ@ x7b:98)T.Gǜpc8pja&<^#!IJH4n^aNStdefbvYwd]=쑆3a~O`GP9;V-<) endstream endobj 38 0 obj <>stream H; DO;#A :,{_/Y5#mWm"ƙ.'Hڜf-g_эvMY_[X\l9ۛ=wW_wk{܃Oc'jm,b+|y'ZϾv5hÒys`-:{e3zo쯧^{ jzlܭxZ8M1~a5۞6DpHxZ ,- ~X)O!"&^-* $v43([7y~Pq "yXUX%rI*2|-5GҚF5i⁹h`yfEp]\4M;NPimq?D1J@t sh^`*br2> pɑ"CaRR^.md^/ ozɉ+2qgZĴa0ӣpxvE Ym[w/zI!:AWW €}yBHņP 8o ˥L<@CsֹgTSă2TmHB @S V{ A >@GKmC#M*2.<[P ?M5xR'yAآ+PMfy)? <@D bt Y1qBOk {s/hHЖQi MN6=ۮQ.~D+"6 wt,@ޱv,ak&6|XW\  K8:Ni0=jPgj+gL@WX.G encG0O@,)Ě:|JEJ1뀩)/Ғ`4: rLjGN:~a7:{f rJ!׌ϋ`R9`?T'G/!v %]i/ e  /M)ॱ5Qӝ}>{SV_{F+"SbI =0Ю|3KPaALHqQv{\Ho-Vœ$y k6~Ztʥg:|4LaӮ${EH2  X|0$B_X2Iŷ!H"`SCszeIt-{3- o3繣/L/Iph`xU*>u$Tz<ؖjQ gOaPhU{W],ASJ@/@>/q~'|@ߌ&Bz1;khӜԽhg!ZfHU>~2:* ~{H38Di/Rp|_Sڻ!O!{ŋ"="n4eyIXzwz~x[V?[ipP(K*{aAF'Itm4<|$dw(*RXЀ IPz>T`&ܕ&Piq^D@#t(d=R_w сF;5 at]gT{F0ĩ`t-Z0jc*ꆝ(euab$.2*>ITDTNY*Ip$eni̦~ PS: JPFV(i1Cl/38 ܡWY9k"'ȑG&U_D cDDL^+TiP'f}=%:܁H;姧 Gf\gp^COd fZbXikDpLKi4F HQ OE5˯ 4~,M*! 1cgJ MQDa `P6+>h]bZB[Ky`6I}ڳ-IмL(5g!Pۋʥ$$`ZC}S,:0/|ti34KH>lr1 )Q8:=diKsOw XԊzdk`ǧ5X\F Y×g&``y<4d =JW(3# 7ċgH6 53xϑӊ,\,$P;qb%Gn|P#/x`5!Ƞ38g٠{ zkT`4ceFŒF{,w uuїCAW71amZ 0(r=.$ũ?Ɣ,8=d1MWs+B׸VIͬh?9d E//)f6q=^5C-&ٶpsdKƐHJ48WLh7 '"3]F9dKhf6cM67FU)HD8gb4e p̑ѯQ?O= &~:WDmS03Wة-D2X0r^_ǣjƧfy4hhҲ'bW)9=0",y*D> 6~~?ĒZ1ѳԉl'AxSBC+q.t8Ȓ(IUUzfU;|t4%5+z%xZ"]ъvcA㈘B\te5˄Ѩ"T5p>&&[&"f/`JWN\[ǩ&lO&ղ_|GB"_g7) VxZ'(V);PS!&񕻾њ_SHx2O:} *ta L"#q{"0&jY&?9?Niݺ$DPbԣ+ ou}Wd,sƆJ );/}Y WFal.Pe}xb bK#@Y:GUF"@=BEx/V;_LEc4t| lFlq+롬Ƅ2*Od<"']_6bs N/s; 'YfGB?z'te,V$'.xX3&^FR^5'$v _w7=KXeXpÇG[RmaQ_iBnٔxA9ԻLY@A@*F#HK C>i(qp=_P= 5x04po `%t8OwafA𼿻L9R,4](v©m.pyﵼ ˗ߦ7C?^À``ZCn(**57guJLZhsVjoYXVb?cx>Lz&NnWf;4 HŐ(\Ň:{Y5%W,fg;ZvFeL\S^};UFdn<._UI[hymFb"VBq7LfƘ~GB|'U͚(%/q"-v!sOTr݈ TwR˳1tbph@V=R"XUTNzo_+$PB?_X B9Z>?u?0r2`\^&uW+UDHN(+&iG%wn#Ůb a&xH{%M 0 iӟk$Mf@<'|VyNdWt,2I; %2E#p\&ct?[?=@QvͩY~LкGjR$ٌi]Mа"u5:wOlKYGȺHdD0DE~;7;;nF`%#q$USyνc!A_/]$cվ, B\" 1T979DiDhj 1eW tt xivp4Mhzb!]'"x QH {bceG|}}_=x0&c"V2$}QCq57ʊLPaI;bw%Rq\ bKT̙R:rX1 @Xᖱ;۟'nB\*ބ@ڶ}é"3Ј0ZS&/M: cW3?F:(/ i{+^3@CTY:Mmq C8ۃ &/#k,(3k+Rx Y%E.)NT&n2C)ˊ!V0G$LpÁ@"|KD+Fƕ( $lX%6JqS0 DT3$RjB?5ItRCH[hD^Agq *( 6:ܗ6D=e+䡥T.Jv/CCV#2LK@R;(lFX o AÑTA< }0II0jB 6 +e[5i|>FXFd/ر?Ԋ{bK$'贽tlh-F!0Z).G0u"L8,O?Lģ/GFɊzJ`r St7wAa E>./9^'3/$ĵ9N1BTz0Vbabz 7|>1 |C-ACk,v#NGj`a46>N@%ltsď:]`:z__^}姻O7__G<7meɬ:w'X/E?|S)J,]ȸb].>? 7?~e~/or{5i޲Q?_}W}=x{yk˫w׷?||mH 盏עˇiË }Ӫנ,^/5ok- +B8.U3Mh`" k)oB3,GBeתS%Zc0&>'W, x N ]X%ZϽv*#lɲ!ĈBR`bETFL2jJbѼew@̮0L ?;3V"of-/?OAR;Jdaeώ=tpA8/6@!<(*=T=^̦'ACLHMʰDP(oT9+Ct; dq zpnjUxR>f432*l"Ǚ-ggr1 2W<CWP~=VxS3#xH'zRx3#4ADG Jk;Īɔ` ]Qؑ8j$!dNrF?\$c$Hru FCRomNdqJIaxz YTr߭="Prݖ&\ -^v,0Y>*WyXD#JؐNwOzI4ADL_KTudۢ[G}\.5y] pG6$'%zWK6^ZKxGaj\W{Ǿ'[_O,53-"~!{daIw{ 09^Lzu7]}Co, rS`s%Rڎ5, LNxd10쌢MF@+r[+tz\%zT # E'@ຟkeڈwfu-P^vm+@ Չl ܝ=DZkj<方=玏ĥG/ol{ز_k.6i=`E#Ug:g&Y2@"ctB+]\yD3=Jּ3̭)xu>f"Dfg]G. rM,-'=$'[5kd]fF,R˨a`f=l .t%hEyYiQk-'v#ʽ*wG^-/5H K8[LU`sFWQ1Niػi:E-{TRuTJ]{¤XLqX#Ys}h{KYSլ߰:/۳z q_ m#|Wk[@>t{\ڻ2pYL|:R8z2SzN&# +Yt[=} 2` 3ns?AN:(G!ZC*&,$$v DF/֐$0&`~sdu+CwNX)PǼgzͤ TU'mw _(ao7>1QG+q3" )"'h>"# {ٍgܸEƘ %,Eaj⟯??T={xTm`jAȧ ڭelqS 3w.:(+d)Y1K3Syh\Kb- @4 ! ,N(" ivbI~õLW|]Ay L!,_u ]5#pTEYdJH}dr5RF?=g܃ st%P,Db!Z(хLE"%ޓ·6K9sXE- {NocMΘT}dΗ4{i_BxОj/ g)psjbZuko@'cQ!Q:F(/-D͗&`5+aj}ENzŷ2/DbTX~vu~Gz-%uSq쾽$N{T:\߰)8-U{z9D݃c0k~=˺@Hp[kVSuXoܞ0ZSewxcF!ѯIY}"1ms~cܷ3m 8/zHkw?{o=j2ɷsꇏ1>^bgKHMEQ#oA rĕFP)꒫oX^ s4"="rJuCZA~]d:(.j= ~ێ ܾbM(Uց)bQآ7ϣ@ϸz`dOrR:>oT(jdסUqZyTC&*+M8lTiVY=UV0P?L#'2S.b%ڲJք1;qЅȪOR#.= @a]NM.9iyTRpʪŁ6cQ1-G5 i)>2ϖ(`#CܔYBuFb5 { @SmYr7ٕёX#NJ_}ulLGW9X9 |ȃȥӲ%*I8I"A8oh\/uoE{,#R6D79qd"MYQ'ALx3#uXh}V5€A}sc 6MPwb?w 8̦rX=36=z= rKsP`1__(C!LI- $<)_(?HXl㦭!2w' 0@UKﻛQwě 'q;w ޚl,Wb.b+x :^![D!Se?я!tV2?lP9~v\?fI֬qԞp6 Nǖ[o+̫^Pzjv[^2Xu:!j=VT39 g qf?b]n+t[ujbo ʆO}j1W ۠dϨpI uiqRI6Db'jfi+OGH2; H]\ҩ$ZH@ (kF 8&Hs>sI,w&\;2{~UY^juz#GU-oY<)4Eq,uÙ -QJ2ظkTG~Tg;9!fl'AzZ~3W{A|El} _F&u}o@mq>TVڃlJԊ)6~ƪ6ࠞ u_[ooI arZۃ!wG3O]VVC$a{pДp9dH?sPmce1ocPp1Fq<Գ4+7JR4c "m?*(>Ag:+nf0PirqZ+ %e}*j=L9 m{:n vBwQ Fx9NUmd g*-`A8霂b^G*{Azx@ٙV#%HxɕTx̦zI+Pѐд&m{mTwpٟOgI%QI%*pmv%\u`H az'|XV¡dcANmqKWǃe޹o'7"ǜz]3p PB#5 ?wks9Fcjm1 ɱ2T]GջTX9C"](a^hX'L q%t(fWwxn,[lo aw`ҹ ND3d9@k8rIg-A:}*HcG1ws`񕯱BxNEdSD@# 93]ǵQ4?" ֵk=6s0FrI񷢑bs՘N',*AnACY܈@\wxrq|>`vFpsk4ZI*Fݢ0㨛RC݆Rw8([qA&(.(`*p0%ͯğ?8:6 T_m DpeG(>PP>^GW/\!N͖֗f='J$Ӕ=KРmD?s!SF454>HKp?Y4>KY0;~@jAGj_aKdc7X}p%{ E5h!FRY4b&Qc?\lG/jm^zc#q]\HiDڲ''N>uvAҴwcq_5i>jՕ>b= WGFi =F>"I> CI)3TK"l Z{WX$:.sU8.E`(b`д7J`nyQB(o%\ u ٗ!uA?hrF`^03Xv8!}_Enru 񤏵ܔ~iU6\G=$V,2v[ۓojzZAbfB~b ^+(pZD>p? 0QLHҪ$}3ÜOK'HYU,|\vD)"g~Ҭ+ -kٲU~@u緒E/&n2]U=uK]shj|JepL51b3S'}X"1 @\s:#;!X0#DSq I~%QNA6n?:="HcxUA9f>!|Ű:'&i1!G#Ŵ`[yu UŗXе.,Lz9NisFÌE_cy%ER(NFqnlHۂ?:քA ̳ 1  `ab 4/bA֘tƙa-> ܾF.]Ӕ2uEi8f (;>*Kh"St$FZ9w/P`dyJk2:R,q.-Fa9}s}x!Q duqT(Vze7ۈ-H[E]8w$p\K2s\d}M1 E,WmSC\@1g࠲U$R{6?hh t q--Or BgEۤq&ZMUQt*"SKFYD\ϝwdAuHԫL0.NJ뛎UGmnZ=rJԷ⚦cwD':ZDžQZԺs1O J2!Թx@7?p? MioSC M+hO|XeTMQ?w/ڠD T؅qV.o $j81Z;C_GhDc.=6O|yct8hw.B`K.p'Ht!)YJ0D=0at ad a|W`tZn'ր ٩#aF.$7`3?{3Pi ,ݧ.|}07K=ɼ#J2* fJ=1=nŢlgV9~nLL'*ջN3c"R) ۄÒvf~(\"a,fFxcIaw#a0Fʧ 7 {5:@G K$kd2e&/ % *rj1; _0׷OBMQx Fߨف.|zs.<+>3%2DK%o(>WL /C2<ɜ0!ʩ"6*g'AE'#o5#h2MA]-~9p"m ]Eo#ޯg A(vk2Ŀ9db6'T~bMXY/J/h!,ElBRq?j xOqÝ@#.f]Hi (;ysd>JAV@ ޭ2 /` Нw[r.MJ\uVqCnX1 7cz_g#mڏ[ayƘWf%hpt_' ,l Ü1\ ZRqI Mj.5U/ n|uQNDT_ČN2,dx",*¥Yīa#weDZV6xuɽ#ӤgB]woX&ekި_"&Sj{"\Еln+fO|rxp}USH)=`fWA! D (1Tbk*&W>v>ӄĞ|<Ϟ- a\?p{ˇK-hT"K@A|"//×(K.ĪZYFqOjD0*REs!FHTq.@Ԃ%ëzF5ZOe$̴(=fF#vn* ճ!/M#K#{+#|ȁIykJAHJ`6|U:()q%{GscE,~x>4U%cp d*FB?'UB}H2a-tPϤd;zB,1$LSWpE>duO7]IhLx3l*X>CRY?yOŝV \/4Ywу Q9q  i.4߲7<6T&2 ;Nr޺-A^]5eD2(JX]Ywċ&\.@̩ ?oqgl<+~UxC`^{Y.xlӋ{E~qKg_JrUZ],a*4Qbם{|o>˯>u-OҭW`5\_a$;#GC/^W|w㸭(yR.1!dIrD("mm^Ww.Gdȫ;9ftZl/Yo_-Oכ3oFw'?w}=]豹clrqpTrɊ-jMtxP[VݣBkF5xƧ{+>ߐ̘J,\F` Yo2ڤx a%5^N +!xvk\"2EC% (TP]v$}H0G*(П/h`ӮUXE-"0h D!$cL0lґx@)nr*i u}at9M"qA .#FYzxs+qP P +Lٸs] tQ+e$z<MV!WAw VZЂB2VYs y,&GYK ^Dt!jTnxk6& DHɭM>'̔[%Ћhq!svږS 7 7T( R=!,RRM$Aw_zJ#E=^ G2%e]~Vcz+ćp6 6C D Cҕj,IX(ȩ`=i*Mrô؋'3'Σ]܈ޒi~U&!W*dw{ .DߚUֶ'Vg :`6Z-h ,-t DҺ7_!vdE.c[VJ:X1#2SZ!.&Vbd"k_d*%q!JGdqe =2W "5A1H%Bm0h d)fBa%˭Q/p 5zfnSD#iNq08أ(BpfYʞ[}9=qYyB91ڦG%/OJ'DpJȘBޕ:9lI3?v4bcDv wBPDxEc݌H1ÊLz7KjPv _ w:"bͯk7h1󱛷 ٛDC1v"Ok?V6}7@Eܕ !퀝)y{w, L0 Wf9Z\۬3@uX4 g9+`==\AG/O|qajy<.DzCZl]o7JIa~{ (."| 1lK{1uO`߫݇fz}Zbꁎ_/ubv:_i>C31K"K" 7fzc^/vNwEvٮW{OAv/֧\|ܜ">t/~wp4,M/oV7_v^_?nqs&ճfFh=G-cݦf4idk{I}|XIR:λtY{I{jv{|?ONjh5-~+_"[4!]o>fsjZ:,dҨqxPQs Rk"${u;5oꝈ"KًSD i~$KZvb/A;Ā,0>αUbe $ 2 . %E#bSɂ 6DY.E;qZ.-nffaH0Щ' w7N!3Et:XPL):O.=rX=gjZ!ZnP 2VYwzui=D1F^G䩃lh`ѾtU;8yǒuܠ{!乀A{w*Nr=ڗcr`y3-pf~4+"LT Ztc tXŐ*!>Ρ\Q\A#bzY``X3>@Zd" I FH?Z$31gb@|`>xC~>cyI:U"#y)W+\Wža+SWqv"8?.{0H\.w>:VnZ0e%|%_U$MV9gEj['nBiM'iͼlZU WY1W$Ň+h' 9Ŭ6҈rU1V$z;XQVrŌ62Y@b]χv."ҧSө.m攁 ̡uh* ĊIӓV`0ߎJYn X ؾ{O;CIWLFe dƥCڇ`ڐfD݇ .]+p"n(kU5ۮ(4+Pc Ae@Ji|iv}!Hc>4h6kDSh, _ #a&-T=B% iuGeKb?"P$6! Q!lOQ좣(t q:]Y Gһ!15M!~ LMspYGeV_vWIgE 3DO%㹷zo;@ϯ&СO$]VK#<^t!=n&Gc*7$<Eya\q\e0&Gx" ‡MrkI&oOF鉺B > /ՓYAyH 8#[nvvew@K iqb̓"cSA} KO $~Ttf)SmJss ̋?DP)KSj} &zIM"A:K{B֡ BR׮/  @'fمJ ] 6z(`3]^jX DZxU[ #߯Dr9H: qLd7H+kS*>܎W+oŵUIqA,6|>:wVH9Ktlٌ2.o30t7H.zK}/ 4W-#XHo| ULP $&Q) 3:yP.ISWֻdI|_r=?u2Dk8"43M4k@v#Df͋H1WaBa˗s(R:@7؟ :W3[Eysq~UlYE4tv8C߻H's !KLZח.{f=vqBny#WiYU<.cYM,9r @b@}EKyH^O ݍ#:[J6XeK c@cKLS%AFh|G/5QP rV0Q8] ]Oo(wE$8pDЊ9pS}6|㝌.JD` cne:H.y~ H:75n(r! =@W 4y4tkRJ2z;RnN/ˀ@_mL[2dx=tqH_w+ӾG4-1 w!Q(iHgPA1D @2v #kR~`.G53kֿl۱#7 DSQ.r98~F[Wd^` '*L^Ng*Ef"ޘ,/| R ^4b[脮 TzOXĒC*ߨ0x9jAuրN[m_Oԗ}JkބCkKM0&xjƢ|  DZNIWe0yɗF/) Ɍߛo.}6-ʳaN8uϝA@sw*(ͦjb"Lm1HHX L(h ȴm`˅!Țf޽2P2pz!f^9^C0O^7O'ۂ/ep8TpՆfeԜyßQF~F-Gp^igl)Hަ}`n0!&,K,ˆ!$`7.4bӁiy]urlP?% *K}B;ɦ0!sUU\.ZLTI 4ۊe"jNCw(xc2r &NRm)Ж@SJ@[Q0b6c# t5A~1BK*GEl3v1GCT 8cES\lU!g E)ء@v0 4TUd"XC(oDa(܅@7B̎!aBh?9 Ҷ}Owg| b0wg4fGH:1ZtU-Z<<:D]2U-˶BKµ[ՌEZNJxG7"*Y]cSDE%_4RM$L6avp69)Yf7gjw9dst`>qpl#_)bg`:T|`1+"QhcQ,bu(1AX3`"0"3l`G}vyȏX@e){N8LjwC3>stream H͎g7şweWٰǒP4$R4A;ۃ4ݰbzq]lk4sl{Ųc5lk>;0޳=}yokt~7-f[n)~cs&G1i!{vX-D9o, '(k]#V^a5Z 5{FÑog.O|Y|sMD\sW;b>ӧ9 "\A66ם܀۪n*l,Z 3r~a5.6k9lbX%uRr[0ER^ƲG%go"(E"%~s]eMe:˸ j=ӧͷvUN4rI=h6l'59÷Eqϙ@q'/TIK. ~{"?x{Ezr/cgڞԎm6΅?E-B~w*L* E\57w}.k4_#SXXhoYxRl(H>9xp OPVPAh;庹83 AO' FACJ Bw^+Mqƥ`WVBM1tċ_j>bA|ѱbmLO9i*ƜgskqD1>*XG  D1i5M#>:~˿oiW믿2bWu\,Nkd3m*J׸DA`|Ԉ@k3XKߛ eG=)$)3jf W"Tnʑs."]:+ޥJنCy$x, Z<#P~DjU!LÔ|hh. 5OLOBi5 Dp(U!&v9!+;eU:mSWUn9cDT PK\yC0qвܚx':~HY Ѷ.SW',~`v.=$sHlk"8"j5^w#^/A1t ѐ14ex\8|P룼F+feSQHГ~ E}O݇ở~~Gх?y}W_{?;a?~ |%5Pf#\["'}O bs_甌R Kˀ:5N~e F Ut4QL6| *q-d|z\C*a( h OJ89eUYmvH3.PI5MXْird|5м4mtO0nkD :e2C t 0BU2wN&{!Eå3^JH+({R;43(o%NX9 )}oU+G'f.D& 5~҂ Ԩ. ]Qa ||0sRG).f&(|AO[ B pa3K6\x0USR-?6'.szgƊ_d+wK6 AЉ-@jʯ;"̝mTAcr_|+va4 ґux)tg$fE"!䓢JG?P`W3,Pގ{4^5!G?cFY~ڂ^LF3CͽҖFsUAK^JJaÊyk -̟Gi>:-Oїż?CoB(Շw2AL^|Erm<켔0.LS?2S.40[Q=b ÝG#u_&Y1y@ +oX~z&hs{⽛͑ 1% 9f]¡ "Ka$L|:?iFILڼN3p<D՛/תMz/[q䭆Щq}ٍ2KЁk3z5Z_ Ȋڢk1-Tuɚ8}K|64êF$T(%-73$ =]%u5nXPDЇ$lȮ֣2tRWemCkJY&[fGѱBFG냏+(&P 4F$u m<# }y6(G]pR#9 Ԍ 0!$cS#|yNrb+ 6ejX+t|cPw1St[FldUzI C +5 0dqF}*R(7K$K6Xv=3UW**BcByJꐠ[ njdnq;Myy3gw:;L+2`#tx馤jJgW愮#6sbsMn L© 4Yd%$+bs輄2ʜF trJsn /R'i ҁOyhG4ԴD^P\^TiQ\LOgE|*+ֈ >%{( ԝ&@e4I~`ɟCBsCfVCy,{I<^0Jɓ)$-Dj) &ةer *6Ў`<*a#.˕Ir IsDqnTcNAcqbaO1Ow'>X;#8@j3@ʶj@A)uRTOy$βT&Hzd o2絳:p2QƶI HgM0(rP`䟈Cy,*[딙_tyG ?7`M RlP "K&֠]ϳҘ{*z^"S+boNc>A9i}Rl#V9# t\K3HJ 4&cqQQDhq^(Dnu Z^DD%OVQe7v?яͩymvl;[AI#YD8={D|P) T1;\jDndlJ{٧Hb9p,J|z)$,Lة,tW+tze})wh[xa`.8\;YYw 6V0W$UKWʽgubp;"l~5TR&9IjJ@*u({` iS2R{d C{ ТqdJE1Qzxj<٠zxD5Xg c(7cmGĤOjtKZweDT#TAo*IԈtHb\<K{80pwe# 30HOU.?[%Gc%Gd+R*xGA핛ǃ88_# >g'# 5;QdSstrRD,u@ԅĶ?R : `PڛWhqXբrD;ʹFvZY0zwi\vDn@}ɫc4m?(:MI3oj c{b͵[iѕlL@1oc5QR "|46u6 J.>f ŶM6Fpn{~[[T &-ç_ EDu7I̱<0 U4NTI|u8?(&f / n(3Q|G4k+-M!yLIR˩/~2B ^ e: 8 N$w֭hJ lawĘdDH#u/h ȹ숻FN1\ՎbuF:QgL0s~1>(W j!Z@^)\XMֈDpN2皃K@ +CuV✇iB$Z;wCuݥT/n5 o$N"4HcÁk![ u_LvwI?F5u-_r(c@WQRU29f2 hPoN/vc;4ҭ x"@Ja@}PT|vאcQʡw2 ;PK-cBXgy]8jf5mbBKUatdGkvڲ Fαb,M%ZjK}6_^3qi߁} q^1Eƃ5؍j.w|۟}~ǧ~ `~<}Wß~𭱟?!/Z(=_}~o?|믁'" ?:hP^FE4JռDp2<Xr@CFt`147%ݣXI"}iSC~bb ҎYh)C|t0ݭ^ 4?͸ΒkUJw}Ĩ !&LUvl چ6beGAHGzkP?-q}8 CY_x*ACMթ bz i>P WDՐaV 'H>X_k5x9&ǀ(biŽ1jY4)XXHf%fՃ`i"H6&5{׬%.)Df+߄}2/o@"B=j_e Cd0 BIJdV}Å|6iQl&PN@e3Ϸ(:#I Qw@zh6m2 E'Ƴkl2|UK'G c (TռWXx-_`4*S蛢zS,8#&pIj"{!|2Y?ye\xi!x]DUam/$ٵ[+x{=z> VXȋ,؋`ٚ`fĸp$%~'\`WV'2cAt~|-YQs@CB^4 [f+I755'h;>QTa4}C +-t79ﴐ_VQoUuEف:;mo P5}%b<'P3j1K&c:0&I[m Zױj;e9q$t6Sn iƔ'g2'O֓ZOn%z ;"zڶ"Xxq"ܓD=+Pl3D=."zģ%AuK EbFKXYY:  q`'<0*Gm}k !! V>:9I67oR!'\ k#EV}`'*eԩMv`[Z: wFma8Zρʓߣ+g:? >yn yެx/("^!vj^">AV jv*t~1Gip˃ꖏ'!^+D6u;1j D/O {{f[ Io(ha$ ) (Jp!RQc#8=?9V̰(V#aʨeUu$s/"e 9)SCqY䍒Np@tM ]U쉢>bJ ?yB1 #@Ԗ[ؕtk4p]3=g隭2A HK}=H-WƱ`T cDSJڂJu8~Hs\J_*n(l|(cj$2}(iF= O;V1aBL#z15,"voX-c< H"t"#݁j/Wuȑ(h%P4 yRt?ՙbAwnĴŜܰ(`]le4RwoDZDv"tNވ6E9 oG EC@|jfW64"s1n=RPi!пIqt`F:zF'iFRq1Ќc#?gؠ0Dd|J\3Y6#жfBnyvƭע\ּ6ºPxIoxu]\i}gÜP尩C |THl (@'IׇFw?9 8v΅ц!(}+Z_)Na%>4H_9uai[\U΃_: *ƠcAA`rcaF#O>D*B%K$]8`:?"k8yr/91%"0y:cmdhmRtHennNPd|6e[JX4MW4({ċ.b>ogQd@b+`SE Ayp9~A U{}9ONrv6Afp'3=9`ffG!(X00Go <'lu %b"ԍR-i/۹ۼKDMP[B(ohܨlwT5ƍhv8ʹ@o=1)lxČ^v=vE+sD+'A(,vZfT9k;ޝ鮮z?v/#$LmXp5Mbq: Ʀf\; &UzWLV; X4{qǴ;@ts}qlWgetmKe[bJ._ J.&hVWL]ͺ6#fY3 Ъ*FeOb:}&㳜ykؙقdoX戻`:T4_iOTMȫvB tC A066 ҁn??s=j*X~6gwc1R2Plw< ױ!۬VMa Qae9 `*NjɀԡJ!:M# ZPdd8$33c ne/K|i~Iɲ%@@OQDu=NH&P2Rf3U ˭`⥙ $svp%n)JwrjY6('<;$-f il hc1Np˚YdEeIfX{$\͠Ifdh1d 3pc۰x! *oͨᅦ<P,U<;4*EC iD`gjn}8RN')1d525Z^D#>4H4l+k,m+x}#78A_ xlQ9}Efi  B1f=Ȇ `p㢻 "A$Alo0ȎvS<][**PLr }R 4)+`@T'bs{scXMDZ|I9)8Hn=|[AHq`_o;@( j y}rxQMZEa1A=q,FY]JƗdVhC |Im;$K*+ۉ]L1hE#13*}p&;PE(rykw#f !Ad/fNW= j59r,q7K}D>@YPzǜ^_~fMQy$_; d5C`n, hbcY1ZÐ89vаc9èU=9F{8< ˹| Rm|ɞ >ӢIے̨*,Uv\#H\'_"8x@0b|xNs$渮rn nҮ96FPi1 _s(90Ӄr..[wom^\+籔2Êw޵M6-{ &S#)(7Ϗsk'9&3|$ci)Nϯ[r -}#ueSU'q HGdFs *|r 1W4ܼ&ƠZʬs eH5.AMu-9c*ڢMd?Lg5_B)Ϲ(1f^&;=[ J :|^z8b-4 N93'3 p];∘stx5.$X]PczK^I3hҌ܈!4F9w4~Gޔ8s0 UsAn",wTF7,5}PBv + W&;Z,-$7: *&,lydVAD[na%.>?^(vg`!tA6Fsmj޿X}-]e(:0Y&G8)_7dz"z֓ThmQNcEhG2(BnLR%L)>PF$W 5b\݂;.CMa"\`TG9( (I’  `VX]"n9g-r6vZuLΦ~F+*0% Tؔ;xD-E"q0GG)]bUl\1S.&'|÷o_=/ox׀=%>Wy߷g_ի?/_[?BUS/k~۳/?w~ûo޿y ^X|_}^}ksui{>>Oj<2:?";zstQ NP3($ tg2 /b`JF{4@QHBfii- ďd*Bx : Kq+ gQ+2dArE ͪ؄-28H}e2 ~5plF9 G(Z`̐+02&j }Pjd֗?]QȂ':dap? ÓKNYţ3r %b[Yn!Xv&hEMՁCMʑ)t8zk$ǺYCxd9rP*:A=wfJՒٛv ?T*^CR?> )N]XAs BnX>~٦)H IsCȑF!aP$hq/6AE="Kt$m4kt =m]Ίt.9 cal3 hl 9O/O:d;qwwg9mk #%oX' ۙ #'#i ^0-4G^XޗN5&¦\!g *&ć.T$&>Mfh%cqߚ-t"u@NLUdV0"u MĸA_r`⧶>:k`.Z=:|mֲ"9V4&"#d-ެ!?!Η.bG$T Us&` >峊cJ(Cj` ͤ+nÛGhغ)dp1Q03 GՒvJ SiDBtzTDB0+@R`Re!e>i@aZ p@KU^12Y;AEX2Ȩ뜅\f샔|)\z IWa V [V Yᘂgm܆E3,OIbu ʶf> #<|3`"h4ϳ*17Xz(vb0:HM3<Z!i 3Iu- d0 yZ$ufKq27MŤ!Q)$ϼ>-A0bzsJgoNK\k P3x"B8FvGJn7 Uy\PN.x"uzl"PlwOE*!^w*jBhg_1^d~ghG-x yxAM$8? w z?M {} $`㤰gd@F0 _V[y=j; D 2@v]NpE963}ߠרPkrbLNJ>DYlx[pT܄w^Wј ̼&)VDo5I1=9j# #g ϙt&܏bg,v8];WEI 6;:^3CR8/Ob)+z( !@U_ۑEqhuSF,|l̢JET۷KfM\O:Q9o.:ec̳h` `X3@4Tbv l4aE|މ ӣ;%gajE+j3`+Ƈ^?i#YP"t81VAm@"(ż࢐bvA6DD0 A&(GCAOEUvKYuI+3w_NcHCߑ?1b˦Jpb,:EhAA톘ɕ0(VLqqP/ Vd\rN"PS/BNk 1Y% 4x.Jz=&$i1)^<3jX1曟i#Iu]=tL{gȈfz}K|V{b6tEy0ѝ!YEqENѮ-%5W5SOQR%#>|e^)bmߧg/8[5S7gs ׆6"\@ iJ:_~,(:*f )HViQ# E8){wJy `!Q@e0BI۝by=[HH)O3Ua-Anu닕><~glȃ^{ԋV Z[+`k@$PCAY9K9+A)``^[m+\g hA K_2 VsUbXT+8KgW(AŻr 5D[W/]ZY0¤d!Md%gdFT~jnut4\yp;V6(ÞI.-:ochkq _'+}b6?hEې.3p\iҼ%h0t`L3t7 ŢyESZفƆQ"$!$IT# 3L|ԘBn_ft^ FpEmqHyMwYeXDꏝ&NarɈ.@kQRܟBeS7r.0F{%7|H0UԠ>Yc }jGUrp-C0?b.WPB4y[f@9{bhNUq_F`+b#8/ .&L:L x/57>kD:Kɡ{Lte`V r*A#k*L@0d3Rd2Ý5%s;:4ЯB qp&-R,70 rq&kF1$~z*閊M(G9do{m&w$[ZK )y%mb3p,=.>ּ5x gī՘hah}3QXH*k~Sc͠_yo+Ge^whS e&  Bπɸ{0YT"rɾGgٶ܏GJ@9@ooUN2}0#vuG@-Sߥzp0F] ڲ)h$ uuF!@޲ܬ;SDx.i5op5i BM.Et Ώ*SeFcdFmQXu U"AYaBNwP-t^Ōݙ2x.ݲ+d9=dtXqF:Ѥ[2B2zs 0&!ժ[ƈO)Cb&*TLwQvn#!x@0;=7IB3M*53x:=)*UCa2a jAQJK=5gG:%j߆hNB`w:iTŪj@b1qNcN<M(xU6Ƣ06CF6mY7X<0Y| TJj~+6JC2>3TpH@Xs-S3Mտel`GUYp6tN4=ܗ `K" 5ĆZ[c4'v;Iy"]X5 xt3UѴ3bv{lɂK3TM[O2y?d3>ymmK)VPxRjp żHNł־~G1o uPj)uGfq˜I +Ush ˈMauF^Ez0-c tIc#o Z& N HKYUce ZJ3" D#qc$p fuT_ q!!ks fK?s4A"Mk @Aj>N*,XAƍ: Of>+!ε@I5n""*+&-a =D#]`Xj YpڂjrIwlc#!ʽHBq|P.nR}b^Gow  s彡$`R>?,kjЂ#t/T:POO_olW߻-K5$\$w2׿E!c4*7:;8i4iZ^g(]Ů魶"* oFN6>dsWnd%)t})b7MiN`O S cYR#}oDj$c!EYۋZGVyڶPs~"XV &P /qImI }_|F Q6@ ɐX1K,$u؞R=t5i.}^fd@SmW!Z+*(,GX+v#x^5sPr>5hn8'o"oxNjR"y#r!l׭'hp4R|KͣQ& U"E:NIY@Ƣ"3`0drY>D!?KR'+xɴ_c.֠+dmWK\qD?t1 VgY𭃖c1UAd܋-l҆9d(-YBTsw"RlYaG<\fW.'r0( ?cD~b.{1 F_٨FYYDY}498 ȌEe`A/36h$ңfq7lAhD+ԣYz]LLgP:<}":Ih`P1?'y1Lf]tCz!$BS TؓY/9 8_fcfP%C˰ v iqK7~O/?~~L_7_|w~ˏ~ȿ_ȿ& Fʈ8Rܨh͢"LeXg|lL֮c@X;w|YLDO,d̅ca]HُEen i04Ȕ% ![bN3tf(D?}5\,5yyuCU1"fӦރhbEG-y5z^/*Ҙ^ZEz$]@?*6,1.qR*YCفh51q gba*Xhv3<\*c\phK}v2Y[69%&1Q$ET5 U#pR샀!kib^cR%ET*D EQ9sl0^F"Lw\moD LDD询-ק=i bALKyQ4 y x f3ӊ q%}{)~tңx|-2P-Z:rm?Q@2j#2j(E[PȞ}eݞ#Yq0ؿaPIL @#Sp}ޡ9hYS{=y :QQ7 ]<$"!/ Y-E'^O B)-tm)ԌԴD`Hf 5,V9Iw/Gx=*9۔$kru^8I,L,'eiG}Rsk @vS[ p dL>ziJP7HMI F4-!M͈&_"b 9(]~Q0^D-yM/P4{ʜOcD:`vIiX>+1LJ+ЃMMl TC&DJE{- Ň%3F}3#R%D'a,PW13Bcl i}3o/Z?-[Ǒaf\z7H M:#yqT`]y1o"hM5PXSR2u*ǩ >m'7ָr0n^-@Y=QqOx %V#I {QYB Z].jyN"CM)J0"um8i@FPypV2fZBpD?6h \0;GMHk@ꫜT~k,4g:"$2֢}ung@2.,)"zE0+wfh}{ "8 _)x6s6ʝ?& jK,xX]nZ3b9B&,;\ c!8⼃Sn1UjRLjvQ 0xK`@COEjk僻M@Cʗah؟YPX k(6y K e$@vFȜN+ToTV/"Ri[@eh[lH K 2tJmF i3o!b J\M=pZ rfxൔ͍'C >>p+,JvJa]&G6t,8& /ҥ' . -WGF 8_dFpӥ3j4R<. }ڗntCDwmW!!r@6o|yɻAƢn"ͮIYÿp9' ta#4Lz47z@ߖ5(3%q$H[">;yAP|bc扸P cOeYLPEQc4] PY}l}/#jNo0~B @0I:\p.,6 f.a@.UaeY'{bg*CP^ǁ=(GtruV%#B:KS>62V (ea>h }F M|cYJW Hf@;vZNMS]\@)7,nb] Bc,tՅjx^yS KmӘMU JcN:)V*PR]] "p/ /tXVJT%w.eru/i>VFnluz- Vi[baxtCSIǏVl~Xhe Pd65ҵdž`sꯪI]j,>]XӾPD`D)ϋc#=-!uߏ23#%GcJx)c>n}SFC9oi>MJ v xvj*562I 1H3KHY=,hw8 b%jBw+F[-%tE x:K`#ݒ#ϖݑUBA5n}&t|ZlV~+*D mQpHOW/HszI4`tVNdd[~.shu2WrlJ(P ýو&qpR `%?G持+2eݟi˖Wr Oh+'QҬ3hr)f_~9QQvoy3O#k*3D骈g`-I#ϴ )ۺ(E0ʝ"v!8+U4C<#(!SBJvk< {0L5h8"}u *  03 2k]'s5,p\pj0rG-lИ92DY#4| iFD+-= ! h&{Xb0) jI#FhzFip3#2}(~ k3|Z%4db\HUˮsӗvct9F^CK1HaW"<ǼD'uŖY}a6/2B ڜ#j]EB `d=H+LH%8d{i S;=" @<#UƥDž'O;ٲdȶHhĿD `f+22"ޥ9~*ȉԢ:dp`;Db*Yj:Lq4:׌ďM|\6. &U-L5>MfHJU 5wlkF[?VMfdx;O>st6'a U"&)z~>q1`CVy 8Y;v*+CL3xtSP8S9[zjP%ض3z6BV(D-hXDo[ؽJ{EQ- UtHZM1LՎO;&0COƀB(D։eƐ,"6!m{Esmx=3.Ӑ@,#DދA268-)A9KB(q4؟+]ݭڀ}zs*ѠyMLSZG9¨+/)'v i!۴Y5u߆R S?sHi9o4B-|I4)r9Sv9J /v\g_R0/ɭʊkַ8/QÂ҃+$ ;BRY>PAިG0)mԋ!oY*7Uv:)⋂b%,wv,F]m*gǙqvY/s1Ua| -j,lKENa_WxGN!JO\}g{_!O+-??|sˏ(mlP"J:g_Iu ,U XCܵp<Rq ?BqO@gXid/'mHRFǴvF8 -A|ܔ6:w 7-Q-_J'9edP<{jq 'U3 Wpɉs)nݯ+-.{RE@yr@|T;M0X|AplhMC_}+0 ɕ`/we 7 F^YY͹#vN4 0Ej 6"#Hh ̮ :wdФ^3kdѷ9UEG#!3k$= ;tK"|mQMJỤ d+ՙ5H¾3hp\BqL-VYNdycxO f/ظu2-aY:ol$v9;%lV"eYC`F([ peEF[(X;v"-?wcgdS3Tu|q2 DBƄ%)t$sm@HZLGVj:׋NqIŞNS"9l=d0  ]UsW PU5ę}3x3ƼH֚B lUvk֛r:|XB>YGPڜ)ICTqM u^dnF@d.@B<U2d,yh/`ȸγ,X|tn`|*Pb:1o38R^Ɔ%ka/0;q?ŝx~wA vd[B(g R_V>f}vBӬnʫ #8ț+^r /@+Ij@H3R´@/L&R1EP9, aԲb1)+>Qwf{b}!$tZل-mf% b#9F0BY k} #A1<3Gvda=Fܧ^W i()ٔe~Q(oA ~gՑR FfI((sK 3PqI2 GPUp6njLhӰ%@ endstream endobj 40 0 obj <>stream HlMk G9^!742?_ ޳{Bbe˞nv5دk},ՄmB+z s87 b g< uk%_i#"i}(&[bjID_i/,2o19݃\t;m>d,72;vm!٦8CwOZSBYj5Teԫ\ .rBP`!eܴ)P ׆Pt;q>:qB6j !ܖ{[S 5ǾgpFme#ZTLl/USE%7 Pw%᷽6b~35%jy.17MiST: D4&=ce ?[ҵXlN{_R(M#S5Gh|IE+);#N>^b9TAo9SIq{\oN"T]A3pyA E?t)uF^WSz4V>fAvNyߠb}5:I8o 1KV. 6N*oIQ!e`953t;R0ѫWBCPkC藯ghs5 D` \f, AA.f Qj._D̏SX%Y,dSK_ n9z!:Ԥjה{pi5\I \ dfs:hk?ނM ++"$X_- rI!. Bs]`ܙrQ(mhPx#@c1vkd6;BM." Fk1I" F;~!C ?OԦkS$IΥvCi z3Cˡ@y F|: Φv$@FPО#]q%#p3iioY]Tu~+ J5krceUE !-j :oDŔraYR'HwOsm~X?-=a5_M45^NgC*-lSeoI";hC+"b 2 ےBbA( q2Q'ZS}o J& WJ7`Ow1=/MR•D6փf"nœϰ t#)2'I(? 4.ju,IJAoĝ}ddXtqPW/uiBd+_@B&y)!6 }KRS-4YJ%\4PY~G!wZ[>}yY#͋9m륩6yca׻JڔW JV/0 E^PtZ6!D} P*@Zz~6:< M'IXV] j>r! V7r) l ȄB0JP'2%2t@ӏg>9k>OԄJk{z{r`݇j]g?bn5N-BDJpѰsIm!1R|#RTQ'+uf4QM%‧hQEf~Zd,OBݍs:@_eu ׯN«GA H)=*zV20GsD:;8d( dv|E!oq@2\/sȏ9t~[eTVb8ֽeS)Vlά셐CeQH2RmK ^0|e&O}cUfRw/d晀s29D4/}lG"Mz8=qԝԿg]8ͨ$U[$X9 ȝ?_4˫${A|0y$)JiY]4*D$hLx 'yzq#*:U[G\:=}"@AʲYod6H0&ˆ u7"yxlx<,"9yHU}ނdYI7F́x@>T.8SѧӾa]O: txuGsp)c }g¼zCMג! [??&i4:&mLt2s5@ө@Ahv,# ?{Lx[ŜGG~Cіߣc FRUg_!TݾBr6<pX= "HU+YۀbpnNt9AOlQqҗHLV`N:ݖ뾍AjSb2uƒ`ho˫eiy#QbAP= tē_W` \b[ G }E&vjOuY (^'r5f66Dm8zf >\?M9y"k/e.@a@MNk-݄cF$O9$͹8VBwɀ*\n,V|S5a'63](ε 1$I Ҙ1EtZʡچx|-K;„Y-!{<#vR| ^LR'.-Gmx+B ( A<}&`Z>ltS5a 9j|qفEh 8/XT 1U+U2d۫UvpFP/3$^㐬8-t6XO zA)>w_Woaɯ`9=7o=yw7w+foO%zbI{ۓ϶wwܞ<ϯ_{O_ݿ%>=޼}O_w߿ 5ßcC$o4RF[G?@CۏkH>->W7e`C)%LAASS@NhCQf rA"%ۡ@Ј$Z7P_5Hݼ,i_Z y/." /Ư!@BK: >-j!' 9L ^Q(( }H.@b|WA!j 08$JGDGӁl~ x05]VgWT^#sIS"5E,8 ;gITS;>8~&ZDH՘Wu }tBJ=6v­@.֓s*s>&k|¨Ls5s'N.2i$߹=ooZ\ԓ9iB%Ce r3>gS,.n k\PMPUmW^h%ٺ>aƣI9zELJTo+"$&gPX;4t1}@@%kLX8q YcywP>QA8]PĆZ2)=T[Y .D,N`R>u\3QU8`RVCZ=E")cpsjpn2#3fD1u3:ߝviWNf ʧ4}jQf&ϓ*'k`IzJZg."XUkЉfuGQcW }р I[[sq#1bLWPa9r-B \)+ˀ\dځگ[ Hjit5CXà S/}N2֛lo$ u~;uX`X&KWB-`FHlh) TVb:P4҈tͩ[=U)㦒@6T gʏ.Gr^'hh_3;t]@)R%WU 3<-'UlTUAb7E }fkZ͌JE/q22ֲ҉I ,Ξ~]W"P/oʟoZ/wY8Ԙ.gmGG-fd t>`4 ymLT Kl.S-;$ }y}3@&9fP, Q @?+1i:yn䤎0B*%;] v Sa9eXq ,)gLT 146qIk=9~ ߅p}]4Pc iuZMTlQ-Llj tWpVo.M@" zx #|X`% "ɮ)ŠzcY(`Fp10%g]60 [j,ch-a(9\qJq<(~[8C5[K KɁ ^:x<N(379nT1xK7(:򃊠HfNQȺؐ>qaޖ$&40Tu>Nqd!a}&iP;wk'lV߈ҋQ5f ^{GmJ=HS0[ njLo蔕!sT}89܏(֡"\^ {@5ʓt/6Qin7iz,1CJh=7J'y[8XO-0vttS2SIRX2&5mk2Cma]DM˷hP3Q 0Ԟnqbv<;C=x.xax-56NWb0d^x!FQcjUn!$ug&49 `zN(d5`^MPlzs8X2dYi[4Zu1sU*J4ZѪ# )F¨Gj¢4qL#nۀSo Ėp(Eraۘd"oyhBۗO#M@D!QXG8# ~8[M5x|^)^0BVT?rKY^h- ]$FƒISnPF|&{J|V]kGR5 㵃GCti@;3!BŎ1s=frpQYN۔>8ě3$߶fs"ݬspfMw)TcRoCR ?E.be2Ƽ ]7?e@ ~am[޶YHxig-R!t ϾSGfYԔ IP5bKU|fO# qz`K:[AnG"S 2B%8C74o/Α=zL&Inq7/h0֌*1D*.`\#.wx0+L>!)J?h]7_6]4bFTFe)k d BGSa)jHLet" kJQҜRVXV@ +!S͒DL~}ncd!4$YLff4 ]cMҼMՎ \^4.$ 0ƷY[7Qhgu޸3fO(2vlu*̻1{t&N2Ŭ-ݥts`z kK)In|wbߎlF*ST5|ֲm5{Wd1[XI2BH;xMM\՛Mܥ4U" Jk VyUxgm(4 W@0 \Y(o}*Yn#ŻAGG&ln灆3Kn@# lWn$pfRϻ2×OPh1H!EI QVw8Ux]І1'M$Qi4|Ƞ꼺CPF1ć7A^'DƤ L!<,bT`'55CkAM/9+af¿?S^_GJݮDٕs&_26R)J^$$foE[M:M2g,SOf0RfPcmMu;4MH](lr!t%>= ֲ|yDONf!J['mPA1Ud#(-$0if%+0bF A~>ۍo\wȀnWXec$#=BF.z uoo,a8HǡZ` ,VCi1xBS;b]OJpWyYLqѣ'Kb -r5azG@z"q$2J:0 w} "=4o"*үLpp!N,27X@ hi]\ j8u35Y`! nѯKU\)cy*fLx] K՟usP pXuAQ^C*5Gg xfx ke(]L#o&@ls vina$EhP`>z[CJ kB4J~X]`4rp ^~ k@`{aMi- U )A02v(3bɘF~䘡ʝlWwNYΝPӬ)"i0dtfbN`b5>F;QDmwe}3\ϫ7MAGk%4 0f! lN%+ى!;Vo!):y{]]V2{:zu2xc''vloO=c@G=jx_4-]\}bBtBh-ܷKpEoGO#@`F(or$)2ؓ~Bda69Z0eg,&FRYd"4uYd$Ym4=O!+Y({YVV6Ν[$\DN+/D~zQ1597I^jba-+MKdxMKa0s!Rw2ZT 5x[3i us7J=v[0nU l1Ui 0o{ RS~}|C  xwڄ}t*DiJ!>2E2ᝆ Hw@5,(^PN1ȒdTٌ]c7Nf$l<|_wu5!5?Іu{pQF.Mǽf7q+IDAUJFp"{Tfn 4~2=8yQI8!U0ml JtK㐔pyfXy>=C6SW!,V~X`(D QV'#hebnUZh";~4$b +F'7;>Hk]К  K 7Wd~6>Yx7"]qrkYlM)?7aevйgn9hma We"#pr4 oa9Yʼ9C?csSb~36CHrb+wH fGԪ3Ed}](ޔ^rJd@j'NoԤ*0nR,tz}FWOsF.3'b7?Cf㆒6a2u!\کl*.)7ހƁ\ydRW3VM{i=Zl|CoFbCF H~ͣ1Ҍuo0c:HKA$/I KC58wЄ0{?_fxϷkX/mƹ elDpdz&BFcNNɎ7^0A'.RrVW;O(-^癌[xCW$BgW%7b)BCMTS2%595 KW9G1m#?I^q$ V@SJ f6(W Z1h-7Le vC6|DIR_2uJƛ_OSgO'y\lp1>dʘw %{opB78~:H XBKEPF$v:~q)KN/B>3(_3ve VCX`j0.7:s)V~7p17AYkw#t6"J 5Vt dQfp_&շUUysua r 숂F|bp6M[?VXfLU+6t Ls<=;Q*LPbWfҀdF4%\ W;tg /.#!! H"; |MQ¥q*&PRG" OgL؄;*-FiAg"nL@"|}EcWuu`%^gK|'TCۂ[5b^yJLSe&⟢N}Q-!@liuD q}փ& #0F1Mo{CN.t)m-7:+ϊVt1",D\g"=9zGqg"vy65Altܛt.:P҂ >hr˰6)7!&Zި%lRg[~?I;F+bg\N2Zc_:J]FζΈB1KEJX+N?Fa9[Q9P'dqR5r H]T@\-ݛ-3Ug\7_L3F iϞVp>yI^uby19kT"sfhe>i5\2Ť$C4MEá13d*Ox_!b牱:z&7*\~z0PUl^)} Z1S>~84y*jO /tc@&4ed-bϜpU(VIDզ_r#mKv m___ hň 7j7"#{ Z(e*BFP-0(SZàZtRmwxdP-M4+@MWFcx叮~Y BPb,-7-7e>,E"˶$) d5ž o˝rn˛̌VḺPrtQ:ޝ^C{p`N|ouYY3r>LbiyM#&I)ʉ7b T Y%%"40i 玻:JHE}LP47, Aau23˞uֿѼO&3:s KJ! |xz~{|츛eA |FBP0E:N~\hv,HU# q0bϣ5yva1|͋iy77H R7B3qNt2#È8<DŴ̀z忍ظ0 j{"May,}N1$JnB. Gм4VZ zvL2#ԝt5OzT:smO^?@u ?˥e3ӷIVY%,DVHĿ=9!ӗb۱0QǃɔYmWYuh|$Kll RZ' ?4%Jh-{^=&OA;qmS 2T4x@ft ۓ3rN,$) Yg*XMB v@yoԜdgr,[dȥdfdιvR t];8e3mzw_֣~M41d5y y: ?vgn:lѦ5nfIh#Hʇ<;5鱡3*?nP,)VB`һgUVdⶭoK-haơ5d>M6 p^Z =dĬrڳLo T/Ek\MQQBu˒TC3! gcunW&T&F#Ց޵4\55w"x*F[;.H8lEf#A ¥h2c~!J䎑Z1A:=N}2.:XG[ 7h AH A8JhloFABʭ>Ms n 1}bί 6)$]rrmHTrQ'esfgs 3ckkBgRYD牦ݘn4FiyNoT l!)ưlv~8?|2޿{?Ͼ7?~ko=/+-oƿ~/֟?_̟SZL\umYA2KyF*L*.CjrMF2A]Ut'+z< 8@MԨ5|GC+l8Kf/ B&Ua}@vWq([='JԽ) ڭ%n2eU[PL: #~i pC{'H?Cϛ3Z ËthqyAzmo<`jj@]DC]1I`g0ڵCc0|;"~8<<[%}yZ6T~oNB5߿a1=Ʈ@%ϖ XvDwdS쏖4 T\;Y|K@^dDWA(8^%ߺLAt&6JڜG ˡ/3YY\85?iF zd;0ObtpP(S\-ʛ4(Y3iKDn,-&1|^G4 9z89 zr@{[qh5yyVm  hvnL_184Ť7;Z[Vʇ6,mv_NtiiMp!5@?P%4,됚l0ހS4SW 8ڇʱ`&.ZY {~"c U:I VIm*4C@l1&-]ot7Bʲ,̢Kk̒Asd@X1-h]cЏm /;vjʂt`54͠s׬~3}L,*S_TCq ":@Qxd;a#dꕺOjSIn'P-K3A*e0ŰJc;<D btk ]M-#5M8|x< Vs<8>eZ[4RbH6* b06[r(=(8&<7`,pQ$D@f .P! 25V~)A&Gq}Um N1g7j?tK[7P>z0hj[xi U:u V\B/y bD}A3[zNa 5Q^wZw ]5}~{츞okWgy Y: f"`bp{ Sw}M?b0eH7pyn8!uGYeɅJ>Lr)okK!xϯIɤ-[$f!|YO23pn|Wmق6ZU πcJk.y8ۉY+0J%Cf('A֍ -gy9L:R]&(.Zr+X+ hLK0|bY+깗@4yO!t# \K$Ug?0d+W[wwr,v0:̢0ѕ_F-3RR%ZK 7 AVoSGcwR %Zj%AGqVR``N-˛N j,.INszToBq m.k~"+!V(viC3GhG]'(RoY|&MM:usN'9Æa]6:a{9h1#@_UQ fn(p{}NӐբ#K?$*n%ڃhP,'4Ko^S(SJRz % @# bּ  HnÝؗv#=z@`p A-c^ʉ^:AFRSOUU0e Nn wV߰q.`r^KA<_lUs3\|Q2o?ǜeV?0\0 +"PW5̸F*%(J6bi /x ǀ-3~X"!hqn[-zJ `;OK@An&5UY3G@,Elo|ʉҥ)AD 嘢v-Åױls*1^FەV4YR-7q)P\O9Ss3Le{jk=I^nG+]d߅(os #0_RKT%R*ZJ#=)t Q+LoťHq{܉g\4-l\UwA?y` R"Rj&X5e]6w!}i:GIӧ^Z>e@G(< hx ms-z [|KQj\J6i{q[v>l(.c)AYYإ_LAҫ2|Iz 0  ?L b8530q7)YwAhGg0ގ`X?e 5g"EXz A1{),ILvcdk6B@ nWʞG$:{k/=xf4*͝[H#ap:Ƭf);,Bv{ ^C|5Vdn(az:(WΣOx"@Aid ˌY$oU{R~GNEuk!7> >HPRȌG\|]K i ,_Wnd5 ˴ɻ'Z`#,s8@ʹ>QN̹],[Ejy}e\%t6DL#8h%k`=-ghyrd 7B(R iQN>}G`T-Ǯ3!͡k#Q aʼEˮ厴eTcR0.EePL:KʡŶ$Q8Ώyo_ݿ{çW|؍7_'ϟ?{Oݿ }?~?-(Rd1ſ/>OelO^?o=y_߿~o^߿|n~p m𿏟zm?o}]o?n+nEø뭪6NT7Lz.|m ehXqQD+k xwR69t\(GusH,H'\e0H͸ 8Hp!L&PLaTAESe$""zX;Y;98Ȧ1g0| "(H'ߦZ1X;AyP5 AQFZGK-dJf7!7c<@U|hy'7攕4/F>ebG~H\lBe s$Gl1a(H^dN *t %a!zWBBvQƅ*N]:O9ws CdЈ!®%|F(lb&rCa$n$&vh9Dhf9}2 \DAn7 2-ȖR|"i"GsZw I;:nꯣ'*?A3/ !q}D<&d5רqZtu34@&K3/!m44#ANxs-c̃mp `tə(¢$t_^(Թwg.>4""ү<ocAp\,ܰ H5,v%s{ g ˒պyLrvgj& {{mO`sWXof/ǃ*(>[C"xIĿ CbR#I#) (ɢi-tpȃq5z*IfOB':=;3oBU,ـ?{FpyfN#OT|/, >u'*)wwB`jM6 Th] 9<-hÖ"5l,9N؛wFM` N*;vGFPfR_9!z=|d givl9f #V5 LoZp0zH&6B|z5:G i:E` a )Ȱ*/":0((]G8wLqcXzz>lF9 TthZ ;EsԤ3@IA)Vp}9FMoSsD"<,NK`#WX7gfx,<'#'z ;"بwkIUPIm\'g$B <sRR=]zMQȇѫV<qnѵd/n/ZTZgByƊ> m@t#b![]E\a}5;HH,(`auoq=@생G$8k,6N<4N@a{{6Ż:wTwȕn<Qa:ERUT=\l;@<`hqt,ę԰sA)LN7l^L dj -kҿ;uS#(BJ}ӮX ҈;saN-w i;,X{'fɖYZR ';%ؙit&.@$}gr{ncirYై⭑|_4PuT{!hOZVzc 1:!<#C?x}DaFގ -=6h]b/{8m,C4a뒞mH6Kӵ9 -DCoRLO'& ep,(ل j}N9QhKqƪ`wG@Hca Y֞2mp ! ,A&(U84*SPH@Ko1so; nOƏ*w|\Z͎qX=NOHFDXgBVЯ\&Q uD4 'FI遨E D;RufUDEC ^N~ٌ굇st NqbO xHORuL@X`Qh:>AGv "!J XepPA9N h] RW7Z.~w8(Kq 0"²>*sv(&YzcblCLp)ga7A$æ5h-ߧ0 -d18E#,mo}P@=(}`vOH!3D0I#6 zHEevhQ+o\AuɹJ"QWkLM(bD@UJ+Vk_DpOVQ+^_;y.t4i"Q(SJ8lI&pd:.ǣA аh# "[ԏ"v NVIY]~vBNvWA;eP4 ap|Yx?O _yTʳ;Gl,Dlҙ  l&>}Eeꪯ*#ϰqAâg#MWD<3zև(UЉ+]d;-8YAn':hUMι0tO!N0/8&6F")]+mzGNWL @axDp$9Fdz:\>Q̥H/^в;RX8 Ȓz⤝Q\ei0z7y Q(PQ_A 86ȭ}@"4FLmL]dn0#' [ZGPEAcѥx-K>Y+9 QX&:y(E,=滙N̏%Ә қ$gȒ= "  ![+seA:(;z^3qHSQB06يRv4{Xv  : I\BStË8ƀ ٱp_gsTk"HJ$ d-h>Z58Ivh{M3% w)BWcFr5HApyY~]0XiB3+ i:Úr[-3R{qn,Mb(CT$EPͮ3 zv <[= DQj+-QL^lSkU%Hy:61ocb'{%|4 k'usH4A->ZTNʱ@ƌIxBo? R.'AtCΝm{M2 !0ou+b۠mR|{与6jhsq_52 ;ɒ.*?v( e\)q=RM$(noZ̥:6W^8> )4Dѥ-J&g 0Ge G Ep"~ ZT4<MNm${K]"4u`vPz\V db#cbI{HÌ'L%k[Ľ9pO#WdLq0S=xCP',vGtCe5z^Ȩ2CSbp7!zGH[WB`#NQI;Q%?h}j[dn2ᎍ$TzaI l+yѣ\m%ls}WI?g"DE2ɑ<e Z=topE46HvgoSCɷSsz Ւ%%8U ;D|%I(H0H;rG1B0:#vPOܣi2W5áL̾8a8lh\4kN@xE@IP7Q IFĠ:"6J  2BPms(:v MܰzCv "r2KS Ae3#ׂcqICkKPH`@dΏiIFtz866 ɍ^߳'w yFQJNOԯ1 ҃jhmDMB,!T~wD֞s vPgUH"C`2r-TkNtdn2w$9$ |C|S]%654Gs^,הw`~-A}-r8bt ?P$C3^7= GuTڔwrTˑϷbAP̳>hBD7;֗AXgqF*zX6=@1# 1A2z;x,)P&Zn#N4ޓ!1)^Ρ*"=NW0 ltM{/dO8gId<2;v#mִflAU%V;( 6b%R$L؝_.%t i7(+Ro^?/_]^)(ؑlOK_\,mREq,jErW1"@"JQs؈h詃_oeFW mIB9(TXZrl[' ǗZ(&kG*`b f2{ l~6 })DQP˹qkSU3~P(=E(+ςM/s>{^ˣy;lJ/CUXfEncPC5ߍ%+yf\CƔE^:h 6*HuP !ŝ|uC%Lp7# u= ̣: :$LŸJa+;1KwQ##ii\IYI.WW%j伾</ x endstream endobj 41 0 obj <>stream HK&5W{IK щ;0XB%5AT*= 2APd8'sjykw[®wOs;ZP3bf"|T i gd&,@ٽW旓9-Z0nyM!-{.Kƌ{կs=@ k߾V<=m&c< Z7.z΍9۽cMrX8]_Hֈ} $33ʆP&R`IEk "x:"tB݃F}7x}AZIuc~y+~nཌྷsS]qnX{4@X= 1BMݴ设!+;i7&{L'p{E՗;I|.:$19}4 U(y>Є[m@a7\l~4ơvRLgT0+%S8^MO>~JÖw7πTTei47]'^F=L3Ǥs; tHSa3FkF:>~jjI/aϗ|wWI}~}㧏oy?ga?5_+F 2pFiy}(# zb_6$u)S[},uAhC]e$(5f]SMw9mjN ;!bbCdhp_nF35;9McAi:ݎ]uVѺnF=ͺ xhIO!gۓ!(٘d W@} rjH2 i*c76Qr&$TĈiG4azF pLV&]](-Q ٌZ$+*b:'s`2`6LP,4۱[Y4 @ _ܓ^NDBѣܑ8dMHs@*A&){|/ش)7?a 5aP 3x * *-}CÀ@B(BkBeuȿP,`U a&ea"k AMQ֐lZAY#Hs6f5B@ڕʞ7 ZU=gXPOS8 +lOaP Nk0;KmAsZҙ?[qtuv( 4oS(>(*YvlBl4a jD ~״pM*P$P^0"7H"B4+v,:.T\R:-6`Ș?FiaU *U(v:LPƑ "qD=eՀ.:d/Ż 3O \)~o*!b d4spkNIMh r]zK!Ki1l9t ^ȱQX^7X)Dַ!v&9t/D#a ~&e<ۘ"l4_Ͽh ;5uvRzE"8RӥaH AD'Ղ"DəjHwoJ)f J7%Q_B H=@EVC ϳWg/2)YOH4GP%{g zR'd~]f5^er>MB}Ad)Ma`H ,M=c2~t3ȑT/']ohΕ|/g*u$F"&JL兮fT4һB+/:IB=,M;a^H k$h %GIY0՘9J* "hj頖z\=&(@!hi8Qn ]{bsDv=AS19vrb[?L>IĥGhZ Gf[a'gz|@ꥃ;*(@QWJm#':ZONתD=$T=k.³^aHBi2@1aP]V!~ `sڥ&[-VAЊ*hJyMDG0a@ lM@0OOJ{sSToGf4"qF'#zxuM;l=N~s Jԍ'o?B`]Ed%OZ l0UV#1[DҚVf~q?TznFjJza D@6v{=&䧫AiD~WO3ycQSH%VZjEY[-Lx4E56X)2bQO;VNVj/J.E/¥2HGkPB@K@?@ $@J 5aifOf|+L"9pNg^~^V0x֏ٹn -*3-UEk+'ͨE9(EAJF3R`V!*kuiX {:o55T#Z{ $u=#'PJ4UIu)O 6+մ<ѣX !",֏A^ /8KDhŠW7б)#hZ4;È`?y ֞=\Uvq$OݓiF0Eս=:>"y3@$ pX' R,|#x$jkZs?.%(G,7ꓫO /XЕmZsQ}ڜD6;\j~!3Ot((W^5?Gނx f"Z f'*@l-Uu z;VLD@(5`dppoG#vcÝ()pѷ3M leX_v9GmODbP':Ac'oxx-~bdG R"LjUUxҕ1WMk2H*\0\rW2M{qΙl"8Y !I=>,iV)OtD (wu/<$bNiZ=ODDk [nȏ9^WODNȧu͈aȷFKO6Fū} G)ֱݞ@R#;֡ 6>\8@|`^~h$PX jZ\ BXLIkm8Uyi WIĔZXhO(WXG­ uHL,GKqտR)dk!7Dq؎de`呂˚Jb/p [njCYRDcN .VI|*G-vubP*DxZʲ0{(( rl7Om;l2(\jZۮ.G[@LX_FrG! !XrG{T3ur2d b3/Q>L 4VPHrm]$r'OwN߇@tm.Yy.!+lpMSPljӚNmXJ"F{D!=g Xܓ3wР1cӀI>iˍsDtD{;JDȲ5 pǬ믘G+0 /"t]u}[Q̾y:+mSCf;b ; k!2Z^T?FE!hv b@ 0Ay~[ǜ"ՠpj!`q?tWI[.75B8CQ(4GJ7.LuV@VPSՔxJ_/8{r-Ӆ+|W˖si؉ Qp*S4ע)ӥcU:s5Fn_naVcA`"z2@PA{&uB- ЉStYUTp^/nLUDmQ(.;u*>0K&'N "n"rh{ˉ*#Q?+ ؈YNF:{O'#c[BptIl2bc$}u@ ҼQ-/] Ao?z(}-Q4PeY/MnU>ݿ?>g>",C0p@}vD<‰n4!{"EEE.W{h{}b8xwMr1K2"写R R0UǓ-'[Jw 92|ʤs30w1r[ݡլ2!Ll.at ~`-~ƐI >PML ]мq36N+ Ho"Om.%CYP&ns7I6efǫQ[R,輆VOЬW(uvv`rѲOlBs^x dU .(i2I;ω0g^楼)D15%Q*2sDЈ}"ڲܓ?SaL5m D6[{mmɌ|2GT)V%WspHpJ@tJ13E p`ne٥vJlNRPhrhop!#.xK^R;_)e/C#- hav/l4b/Wp_"LߏF%ѳ!|^.ve~=L"8[WW!CF $F %,)o}b ;sju]]HUjN1tR= gF'?F?9'Aav+ȓ$vۀOZvji%aH:ȅi u\c!xR#fkڔx(RPS3G yP УPԂ}z2vᨧ%2*I6N']zy`.CD9ȣPDnaSv5y_ȫ+f<(9'=FU f6emɛR;FS><J I(Ey}/ J(֓FU)/YՀF*"λ۝ZA ψ20OɗY iukQz=K#Bώ0]St(]:z:|QeKi%8ilC 9,M}]BpksF.7۳:6)-\T{%ˋ\$Jz`(+$6SE 5);҅q^}ɒ'm e/_KG23 OП5$doL{R mRl_=EVy+rl"QE^DX A1134^$ .G'kTh߰I "&ÔTJ}ʩ#z C2qc&8`q!ӾQڹ3O"+ ]JsahwǔS.oeũmhBLyޕA=JZC3e g|G^bwh?K)gɔVLH\Sm*lVhċP]8=?C1Ӆ>YMݥ'4;>BVM14xgPz*͔+i',KfNb 23]%kZe"egS)M&*TO 6 >6Z@LFE$u=H-r-Pl腹WM@܆}sg4Fd%Oaϋ:o}ûϏ/~ ۗo޼}wb| o_4Qy+_6_9;ki1Re"ߨM)?A V(gF)Xh`bfZxq=Y^يs=XQBNҗ@!"phMէ؀"4Q&hf+Q{f>J$a)κ (=]eWD$j% I왇<3z3V6K9ƈ" 2YwRxb NILWn{7wD=r@8c; %Dp&-25[xL)*B8hʡ 8 v2 h!kAC0!sDGR_5+QqA2i2@"`ġ܁_]R P :.t! '[ٺU_u#d?W9#PWn1h J CSi P+Z2>O=e2cVf'~ 1 NϜ Z s336LoZ 5vR)H-ˋnnR֙XT9(@*!ެ`fJo3r"ΠjeֱDѭpBX{}Nd2 ."n3-mu UM[orc96k7pby+B(8Ϗ$̑d|"αrM m ƿk&1?|dѡH}DfGĊǀࠝ)8O@N2gPpjpEQc0 vOQ5h0Պm^*;D Bope*I7}>$8?%;fݾCIL җ Y:o9*;F*Y` [f'4d@b]4N 8DE^dQ&v/˄~P:E[%x??`.Z@OB:92 &E| [Fo21Gge2mJ3i7b a)л+gf~도j8#]JxspZqkKŇ!wK gIƟЗ e4UBCp6%43EibKXԶ1gA٘lˆ8oI`)ݐ|wT'{>(ET*;'3ߩD >ye.C&4T!jYJ^H@@ Z{H,QL "B4ۭFY LFfZ '_e8VKzu `qCTq+t \`ԩSe,j';y>ȁҘ\*ԃ zLlD FA(8@rTg#}B}zn> - \s|Mk 4Q{ :W<,ΕdWt,ćM᝾ <18rWR:.Q"#YD뺇tC"5Ԍ,<##]LHT%#PIPb$0EU n$Zmɲ"A֧gS&Q͎5Q:X*No܃Ǐ~GA/}cjC@܊afF8L;~]L/ ]eR^@-sh'c_-1xh.AO6-h}up{)( aqu<b H i=Q 6ח]h\#\zlVy"x^!=Q& G0n@H`^ydq~_VC.ӼϲN^"_t`Z"Q A>to?A)x`(|!,%Df$|' Qs#[.D"o :6Wh kf\x=W̔X_'Ee* zkx%Ey:!= [n c`XP;:񝺝VÂ8ْ?v|RE<){9}ӳ />qr=|_HU#dzM (y҆_g\`SLvc]f ҉-}/x=\*OcA.m~Yb&hυD3i->6Nx/*N(,?4 `mMxt>$Fz~lۯc|LB|@bވoV_+ޛWs6~D+:/)@\A8 Û}k33b ?\aa D]Ҷ`Dszè_dN-T+r)Vؼ"cGR Ju9|(u&ctPb&p!j1Lt#DR8gC5f*+TN2Ʀ.Z#Xu_LEH*SGxV]T Eۙ( XkH1 Jogհ t iF(1vdpnR";0R)o(0lL8V^" sw bXg' lt.`(Ny{SidLDp5N/Nw={Epq{mÄ|Vr'yAH cn8Ԡq#W9|f(\r3B 0 &>fl\&k: <>'N4fHL՝=٩ZQ@]CDn*c*%tBރ7ZXsl\OD\_VoVβjmuzb,WRj AA"Aa9*DWبkr4>v%^( SZoE_JpF>sT6a8%wC~ $J7 %7{Y~6gޗщf`s6cv:~s0 #e#ux V̉R3A )@a?:d tE!_˭G{#W׵ lP$((<,Ac=kolI<w˹8c!z"tvc'=dz+hePTl }NZyاhdɋڿ-@D, -BW͉3ssb+ǙS򚃶D[r5lm ӣbvƊA9`ƹͭ|QTXńT(hq(7JTt.C}ڱuJhReaeY0@ L0E@68眝wbJ(w`Cd`ގUL F270gX6gۼ0#"!6/YPۅF]fKhp H9x@ e\l@DH*ajۍ 4h(̬ϾdgN /V0/1]YۥK=6& 2s(o].aWF",@0UgKur~B |:.?f|=XWm8uh]AB8v$JalDfWjNm%D#\aG-"szJK#xzBzOt#1 'R D=-g$DwcxI`i10q:/@-zT@1#=&"D)9hK3NhQnR$YƢlU[4  B83hN^g4םXzV.n yu Qj}Ş'u6@7& HI?uYR8ŷ(zbћ4ÍuR T&ԳA vR@W"EE yK`4+#QE+qx`r~dE>Bi#8kN%MjT@Mg@9YHc*%j6{$J_@&!y!2E:B,~,Nk}i,s)|Cu!@a,WG|۬j|FoQYўoAjW-Tˤ(fJ[N<}ZDZ]< ut): Ebc N#lIbUzZ{H`pTV% c ge7~TMb];~T?"zY7GDxs($wA@+Vl=cR"ZPwwA>A#w!׬Q3츠:`5rC8;+F-%< ( `IDiywf(c ql!,oT8QةGTvjJiXg1ES#)_]@}O%]gO0ln!Im!n(<6Ab9ԩb8lRtBQ^jH~s‰!h,r;*]jcNzOޗڊ g1m85զд5 fˢ$*i۝ [˯߭߿ mb:~N*m]޾n>4J/Д%?^TX$x8I/xx3!> V#qՔr#[=H a,d1(YmksF{բD2?i] ݿ2;h`(P-0/"|6pAعOs\ 7)@uYL+vvM[2sRx<;3NX"c*rϖFx;Cu o= !)Pk}ycL!±t,| 4,@0F5DEEHQiM{Z6a/])W"eΧʝPA-L[-KgJIO6Ia_;LY1UhJ3KO$c47ũMtI*a*W{ÆA& ^:Oqx/Znިl Qpyy@0Ef"DD@yT(x~fv#9QI֦ܣX:6Jؔr2pp'8&FjIs<4$A!ˣxLiFA@-ݓo:F2#4" # n\ Dh Z,`%YOW\ѱaٚD,D%QnB>fjlA(:?js`#FS(*u'|TcB}=Cj7 k{8kkN$ֱYv؁m%vOUz%/b-jp\ uE!=5݉G 5w$CAh6X2aPƶ]E x5i I֜`ڇe7Sgbaq8)R=6u}<{}YaPPQ ";&BQ-z}Ue$TR<lIS,^DdSKDqs#Ї/7ڊG=-d`Ek6> 1f)pqQRJz :E)dwFmDcq` rua<,5^y 'B)HL/"k~$0U?M1|OwD 9>4ʒeX;cdqQjR_FXZrxRwf&ˉt cik^SWC 4 M 2q\}r# O @F>жC+?l7P1bAjq7Nd63fkÖ&b;´QmhZ;B-ʾƪޕ}FsS i׹$1ДWu24%Ֆrzy8G+D ,bGF()0zVso.b408+Y*rqǠ׳ӔEd:Oжx >b )LtEi<aT'Qhh?MxQ16nf[F)\Т#d<Ŀ?N Y甋.ZDsiAby/6FL_SAŧm$^?V![bsZJQ}Yߞ @+^ {X (B7 㠂S% fEqf߈W-CZWa%W,z}똓{-׬\8չ8 %2$+cA#uKkF5`JEC۵ԥ\v ] Vi@ŧv\"NHDsUu8)4õš`%j6D G "(x{#ƨ:LtBJN@q Ǹt9MQ:7B4Gx_y=[w.z5M*yDow2#V~gno- }Zi3dy\l#3J<ECBhy}C.Doyota<-JbY1Qb8Q;1XCN˟Xwd,ib ɮK.KǠ qJzrbk* \j!4:F.}ױAG| Yʯ)X0֟S<Mkie˯q3fClL[N"gc)]ϴ%DsJu =S F~x:3Z eޱ[T<>{|#GAp(yBK?,G'6"*~k^C Aa:͐ʇmÓdDrEEW0@qAU1ah 礙sp^ֻ ?>/u絈2!ջb$)℧#`/>9H`u1R@;^+-Kh! FD\ )Ɣ^ֹ %ݲJQx3+0xZ9%băiI w( fvPm,NF' hs~ ΅ا"h myNAhc`HWO%R&Щt؆-2Ag|_b~h#Ɯ!Ӎ"jpdQ~?N&~=7E4w2<_zŒ: xēh S@0MdH?dnNkфw7;*Y"$A;e#VFTqst 2M ي0NBe }GtB`( % 5݀1XfFqgJ5Vl.QmF=n.~ws1OĤ"8>?-"<{C4㚾 4Ve 6MDgc=7 [6AXn|#bC> DX B bt _eQ)-- pZy5h(YL0Y Ϯq. =PG`LH#IĪ]{ ^A"r>@xuZOT8TM -؅ U[@Umj:'hɂ0d1> 5GLy_Q@ wewCRΧik n>D1xD98,(։sđ@Qͼu F|{:pYڦK(4OG(瑫x1z8˧g"F CeDTDΡ up[0̑@#p4V&a ^SpN'k+;NwhϘapPp_&<(+\kت<63qy 1Y!QƉXśAJM8(*QGW՜lu%-S#(ر:0='Ajh(5ow 5H)Xg;pk&2FQܜ$zj菽3ZG\Mӫy1Q79Srs7 kIOvPQ0 D(#~قۇn!^)|o$2{ #kF )\7?;fVg5x\I!+ XǸ|?f!^6*ha(Ά?a6%f(qSڛOxdKJEQ+b мnv s"nQ,!a}`e @NW 0xNX bV󣒹4ITv桽Ȝx)NcM_z8tFߠbl@*}[yg]Ņp qDB۽'" ~&hpJ+;R Ӎp7'%/'i;Ic"tfƄ=),(DO 3`R^#7#<1SPUA b,w5k:ICNjB$A_ݡY6sd&c3F $K>'yQ=(ıA+=}i^II׫^qb`jTqnϸn=˭EC9Y{5b{ Mfq&(d:ɩ=vPڢg(h8/#`4=%f` #?Wt)' dѮ7NEAgoGm[ {j&qv-.3`7[4QBv!dgvkF P =j>yaӝ~-^EBx7p:KYCj*[ʘ&$`ިp( W MsFN@\ ĽLV-2D 5ogfIY|Xn)g x VA@d1AkȩoP7,hHm& H(٘zcDwD!5ye/%4J@<I"/awJkɼ7~wH/o޽4&j^%IWD!j1r PH*k̨ Q0UL÷S>,+\R5hE0b&DEĺE.]gI 2P84®45'%" ?cGw(-c-8NUTB""ޯ+(UEዞ88_TҖu]I@X+0\2:;|k |J;/kL #kA=<+@Xa`H! .bS# CVKL1@CNBnWujȾsX  EֆMUQ5 (zӎq%{q8zmUi) w.U{$I)1 r9v .u47jFګ3CtQq{a 6 D0c NeZR?j|^`ϯN 81 `Oo߿˟?Rp$Q)_|Oͻw?O~PP~ǿo/Hr>B$0UtmNE>jxNj-sy=]ğI0Rxլ2!'n@W\ F-,z.P,M/YhU uBxyY o9:X/vS2Lshީ:S)N[B%uJԽ rX Tg d&!zY`P  v7Z-SM fެ3z65!&V&9xɛWf"yl09 cBE ]cNS +9\\Y5Ic8CeBL,L9AĪ^WFgw°'̼9l~f;~E٧ިjQ-3\U f:PX-ԉJg3kީ_D̟q~T"Tm2^\T<-Fle`eR!k<WXA0X긳i/%G@~Ǯ bH(8;cc^޼-;[͖Z1m-{ߘ$Ls2ihd @+b*ٷ6"Mi)@Q= iGw* )7ZD&0D&Zh@Yt^o{ψVŝ* Uפh|Fu7&yqiF\(r) 6v7¯NEDkr/y^ƽRj"{haă &/cd 3%JDfQQTȻ)5.q 8pQf`|pr"멽hpcvRdݬC)@M+y}2Kv b܅PY^&97J#fx^#ȼ%0|0s>]5ձF;V؜Ȉ)xЃ-dLZu'a-X;8"u`:bDHlyNsidHdreN0}S $I),&Ļ[PVɇ7gU6Sc\i;Cy3Y'_|B\h%nY3d:/*Ws/O;ðd!.#P%e`|OV@ąo~\wh;iN3OB^߮Ny{d=P$WO=`Rt0 2!W™t$%4H~_M\-99|pP /;@ QF.w4R9a(!"WV`,L!ZOFE)^E^ W ~Kإv@1@UONDw%6xMzTߛ5c='t^G'n#9ӭmt <$8Qy 6A}$$xG@ , GH:]EǭwJXI{.#vZQ(HY9 x;x.]Iͫ~"# qvh@n>Tmvt7rW'>DQeYSO$ʍdP%@4 lKfΝ?w,2ֈbR8TI I BDӝF{jP. +lfj_%=B) R>#t$.8RR$z6;shOYnoct1)P@#2B-7"S3t.إxONMOgUDn_'[UD-}PqUImߐٟ%&UN";VeR +d>`iX/) LznNHNeg*^OrӨRCp4DaZv%H|SZm/i`03R`F;a5ԢF:t4>eDKCa3T=W6EYZ%zRl+"!pk4Q:: UnAh(H-a1iMrs@@D3a^r V V( S#4IhVNy,\2u$ ^UECoAq(jLh{6f h `9WF5Sz45 S/"@bDj5^{ `w[C AO(vE${&J#XJV/Y`QE+SI2IN|XeoaRp$<"~CѮI9 WN SPF9cUԢj[,AS[(tUyF,R*]QDy >s`VK]FpΥrJݬ IɹHhKlOI8Ř%̌ɇH^WUjlΝSv"Weqy>-ʡk!xCRVƲs c}~NM@CMI(;:\Ē\/-7A#li:nñ4̘ 0ꊠbYH'0~D-Խξ_eBcáa/,x^oAIғY\\Ytc>݊MI&g;D;q/ߌg10ա=4sU 6UZaG!\7!n(ވ $왉)8,wkNO8^Bu`Exnu)=b3Jňb0 !sr.#I&)H"@@z{)!n0񲽾ͥ}E!AQ>W2>tS8M Sg^7uԩq@|> w? v)xO@Zݙc{wX@ziU|b%cbօPwN4CtKSgt3*Nd"m!!lǓI] ,]LEpt劇~SoqLn]2Ӭ ukAdI.ᕡ5u4$F[{*N7zq6I ͻHG.I5{}GmD~|O?W}_/~37?-T~?oϿ_ɟ-?/ojA)OwѦKAB Efq|YɄOڟaoȂE{VM]wa1X^F~fBbdkpڕ"8ew&>Ն*PҦvft>ELک8Ƭ{#@;p#݄,sb=f:,Fb$҂t3n*4T[HalWE1 9^q W>L#kq32Ҳ6gX4<_t7qŁO8či 5h에A4 N$AO 7p{@VA2O2((aV[:Gv_eJ5hJ Q@V\orT Q%qj߄q(Y^0aϲŕ1"{z~YW7uÉ[ ׁ+RrXx;beع(0Wb{ۗ*MdE>|nF;JqnDzHĦJT]DSCn_eZ+Yɪ endstream endobj 42 0 obj <>stream H]\ W=KH?$' Y@`HۀH^,Hj!bs=cc6zvX{~/|՟y㛿=o?|O~ȿ? \uY^4X~T(cҝ}i!lN²cK5Y0zo@cjlR*,/$HM,h|I17%\·J1lY$ E8'@\WdP>< kLXB2Bye((Rb+$a1F $H` S S0Eluk4{bH7XlBRy¡N n($+k VҺڞRgzL5@:ޓ5ŇB5lmuhB8q{D=j]y'QMBkFCVEkN p6uRq2Lii]K4[G$$/q:Q=Dt%rl,<} *ʏ/c>e\K-o4t:\GbZBcPG͗?zuLk]>-kgr NPH>O- !@})MhdHV\Is()0U/Z qB% [W,ݍ3+plxUG$dsQ$89ijB`2[_yՁZ,˨$&IZ!4B1 08>*e$J8PѨN`yyT?Zxf2?)@CG`]x1NwO1,nR8FY9RK\]PV6QQƮq{0PDY:yl3 " *ӱ\QW18񖩜(c?F ]h6վƹdZC);>` 8/RmDSͩ+1r&ʭ*-J0.{@k>mǥU-i.Syu6N@&=Yy7J 7&"Ⴏ1I8"Z§:pX0_CK _zP [L#g0.#:bȮ@C]Y7৓:ZV̀8p_M$X-g@TԳ(E7)ݢ@Nyu7"?⠸DsQψϨY)NM8":^(xr1Lg:E!71i~/loD|g`S^7m&z{'ݓڙC/̶iH-. qkDV|oȵ86CSĿD&A>x͠5!"MUf+ 'Q;IbFƍ@͊2LpW(6.#A0W2q_ցc@\5Jڨ!1QW#%' M(=^ઓy|%b QFA'kCum8 e22x*]WA~g%%QżλI^882d6͏8.ⴏ eiFivGtǑI6tx!*-Jѓj*E nq%rQ<8ȐKsX咊M`w(^9]#AbpC^t//GDTnϭTt}u\r e"7 6D<[)'0wtơ Ġ/|F+/3Oy ,ܭR626oZ'3Xi03 7yHb/ħZ{j#%&ɕq!Hc͙ -{ $7JM K7y&ֲ-Y^2AH35@x \> CmA3dEPY/ 桌GDN葉P~`Zl>E`_>GދlXPsF%IMz"[̚ 20ܾ#b9c9>zeHhl1CmKIԾ͇fD9D:ۥ u0э]İE!EQbY&{QG+f1*y@IDFTȚv8't| @z;ӡxwyn9=aq8OȒmr@-ҾuX/5FgcO i‰\/ŒBUDVt991kzު_Kt54`f PSJKDnƹ{te3}A9uqr B[TctY`)&#,}h,}L2$\L~Y^2c9h(u6$rDu+9U&x=#5ȐH^vɍ% 23 <6T5=RW221#X=מ"V"-=B :q\ҌxV!ǒ/TZWŹhS;3b4v,O(Ίoe"H@u#yCxmtG.bS͇[s wo+/pj_ዕFL=? irCrabYr8[pPSZ-DPI{ވ,}i6{PFšw;n(3xFGnT k>(&k@ 釁B:/8H{ 4z*OW~ذ5x:h1jƴsH\e?>[z!J V$BNEO.l=z&zD愸9Ԩ2X35t|i^ eV?h &`::(}9y]ΡU y;X!7 ރ06v7"E@S2d^9þ옦aԌ~y@ _BsײtF-'l7:ta:$53V5a}#>D1z<Y=F";v 7wsF黔do3Ywbu_^(YMDk#1k~ L [bVQX"Ьĸb@1E!ׁ#NmMF O[g9jA(ؘ6^}iJM|/>?fCϏ:̴͠f;zy,!dEg"6 q6;;7"V^Ϩ<"z4 !KlL@蔛xJҧgz80W҉`=}+;A(a,IFfTϷKۈx㝪>W$Si* ْY]oA2`vI@ǹN_JI1 '[0Lu4HSpc]ާn=!/8-.2KN+A<1 >mZ!N}ݻo>~~çgVA_>˗/޾ۻ7~&7d}e{=9g_lˋn^|7ww?|w^u׷?~O?[tϼo/~O{eX}Z?";1:Dg@5#nn߯ DevLHhwͩ Ο-yMm<vzD}1Ѐ Nz ;hgBe*HY֔1yP6a"  pmkrX#F@`T%8f,9 uʅ+ಲ8 8KFNVD֠EP!VpO l\286aw(ع76$ƃ/?(p {M/%AUbtmD]~BQPC|ʮA@?2eϩ'X|oCYԴvD ArecNU%JR=v.\5z~R 8i*Vhi.F=E &jZ^Uj&уWcK'#8 *b % ėuɈ%`$ Z1n#0V_Ai ~%{v"Hu!zlA KC#)~JJ:^ CI4A &g<Z\2])$/br9$F'DBoHwhc*ݛێOOa/XDEeLaIՖ{*'[-k'Ƥ1D zwZ㩵@AS(qLX1Ũ>_uJ ߳wjb} xPv ]wt;4<`.2־<Su ,kʑGATi{}== [:ĔK:Zl9 nȑ% ` jinEPn5P0IA|D@#MS F 7VcJZ9˒c̀1Fd  ʑ1\@})co+) 0J~|odGFh(H@3r[ =^O>xT{1ɦ1ЦT%~Vۤ0] 0G%x Ӥ M4 b?ir6-y,YaFrh@. R. n`W$5Z'Lpf|hjeQQ$q.M{(ʲ~1#kȠp^3Ci_;9e%! &7L\7 _eD ݗ_=եb2ï!&1۶ AoC:4Q$ _Aw2@;;9pDAF֭1aݔvf#2Fw~(Q1?B뜟ЯQaF|pZ [f !7@b+u}uFpy= "2'TZzˊ!P]ڱpt AQ GSk|r53 ꠯`# |BFc`IZ;iXY-QG\7}_|EHj5L ~dg]wIyɴۤO(9#o}n!σF .h2¢t!,*qf:QwN v>TC 9Ay*Tv H=ub(sLiPI {Fި-NL =8y)n +_@QtM`c5k`ltu pT>Lɛ$N~ *iC@t"j *v'.FnYEʼC\5BfddzDoWTxG9a'ufe[{#/,ˢS֠=wq}^nagoJ[]BirWBS=:,ǁ+ź uW1O)8}t0׶z2O_ފ^QGF`۳v#QcH5;B~z P7 'DD@q2-U"[GPrXm Iy|)cđHЦ0dRF2gSL8>`tbO "Ok0D.PѲ uG^9nQ" 0QyF0l!o,eRC?@5's4CɶI\w Of؈jAZ:]n¥5Jܤ 2tsnK=#N4Ή񌲶f;`a]Z_"(RIlwsu%yEyxBF[q#ꭰqe>wAٗ@m9-N{b|c36v"WL\޻0. P[y)WjA%jɫ\FVe" r2&n`iPcT7vJM)& h$l'G -zDwG{FM([xMD"1p/#ZH•'+@"}cr˵*n 6NGs?ɤ7F1[7ʙ&-cxl4dd ~R}#31rR &y$𚂃qyˡ+XϷoEV1]cx^*9#AkoD5׫&֕@dUmWRFɒ*\/ ‰Qkk<Ɔw@P0_nB5d: @W]O0-| :Jm4 m~Me5ne3UZ.gJrb-]9B6{ %rFGZ62s;:>)挈H_uUajFia- 1@i-@= L;L¡}|A_F-I4E5)^# Բguġ ѐ›X6 oW$`&oTd.0/n G;'""|u}T`ڧ +ݑRK@H)SxAW]63"hWTp}D\<\ƕ⊐o 5h\DPKm>hJuHBF4@$ZZDu~:{ݭ>[:_i79fÍoM8fye "<Ua1b'@>z h ʆ\ƒZ|I,"\\ħ~K1$%0Pvd4)B; pu; /w<=HNlwuE E1\ϯ`7-d0a`;RwԚ' O$`wKU ?U*^`}t*Dy(^[0P{L=>y?T*᭙cg3"+V1h})#f֗}~F鈎qNx Q LD]OBGv>*'d)?vFZ G{xyY/x) kISA4k!Wt^mI2`1*-m ?# Jw(7ssw}dipFV!6.!* DNͨrETnb3# "-#z\VTa!Wm iLtH:hz$1snIDy8K0wA{!nND@IǦcFzy(׎uثpe#Mqz%Fͼ0gį|ȍ>dR3˜-3 ̜F5E7"P~u:8CC\Gs*pLxj,+VJ,4HAg}ubDq0aA"hK{{ޛ*G<:-8ݳBldEw 61u&ȎMЊpFDzUpLFL7OTS;$LLEcLjJ%bw@G_>x(CZrG$IT*|(z-Q1]mF秅Ÿq,<x^i"*xEe>{+ý RcWD͈y!'xS4 Fm\ߩy)… rU6@uI]Iv͡dXÇ^^Y>Tw,m `.-{ZdL ` Ŗa# Ȍ=~#6Jҥ|eQ2r+_wd*==wH"8U" jw:&+v˅R{ fKkIDj<`_@$K\VoeBudF>+AQNxw@4FSԌX|*2׶* Pk@$|)%\V* &CUT^" a8-5!쒀YoŘ*^2ܮRH;)@Lib/3"(4dRV^i> {JϿW}xw_|wb_ڧɗ_~ݏ_DC~uk ;^-r÷D'mf-֢Zt~T] P͙g0v`hCI39p֒,Sx&3* ,#Bz"5Rڈ<Qʊpg&?OJ ^ >ItM.4 ͓dX(+0P h#yWb}T‰7 9!,v73v>S pC/FkLj5eP}Z*FUH6]ݫh \gپΌ}*$f' pD@#*D+B:EMO)}!/ !- mnwm"I<}v?I%gJYL |ԧsڻ^a*R#Dm ,vɥ)̷d,K3_2,Pˆl WB 9an,4C_z76gAAhrw&vu/̉4Mf㒴=5t4@Dۈ*)#g݊G:WhȒ>ot.,nWLՉ踰>.3AYvfLda(\Af̞X?H"_)Oۨ dqG㨀`B#p)<GQu*OQȟ؅19EBhO8,Ukv9ʁ!NɕZoQZW`T0OK+Ʒ¡os^J[G sV2gC!A-Bw ;wsΞɼ3?T)o فS{#mlr{&m1HJo: j0VKx_GT*+6&9V.\iEOy_*7*3 @T*հtq;\VSUsw r_~"{O"[| D k<ֲ 'w,[V[9b:+>~eڰ :bmLB}-жV  ?x9]7:A= ?dv  VIBKX-|Rdʊ@O>lMd9;pU,L 83p Ǯ]tӪ? ~nQdCM,=8ڢpyy;a.ςp+ɍ8 q/0LOu΅deNGsi_Re}w uR*&^^oüKOG1\YͭD'u\|GּDS6 ”g_jqZ#vl1_8 Zt`JS ~iДa`@? j" R6(J(bh݅ UT4  f΀LH8P#<;$I R(oF*M3UEsGÕ[RREwms` N?pUUlY#n ܵ@zd'YmZ`n`+sPĚ* 4fze< GtU59}NZ85ĮeN)}Y]M2'<}g䓇s4xAy}0`N:vصB}SZܨ8W;Ìq\'q|g)Ώ ь"{m|Vߡ;$qk J[N*+8/%%C;aq2z(O3HG0qq 4wmj1:Pj6v̎<k5%Q&<Ŧ'k)XKWC'z<{\h~a W@~d#OcFN*n7{ )q|ɓ;&pjizgcTRãgO\u`ۜJAYѩĀ">6vr^C)oS4UW1=υG6 %bv:"u;:r_1zޱM[r|6l& k?9 u#NXqjV&Sַ*%i]`?CiyA579u]3?'4j⸒ u AtEBsB0NhuD,t#?#{ c!8d+r]Dqu.{Q^CEj܅S h@:_K>=A:l b 0/34|D؈= t^/PsMnmw~OCqv=xCj7T$K|(w\FɔC}~qMKQ$ȓK#ߑP Y%x>}L$|0B2r4[chk)zr-k-N7e eD ҤsX;Oxgr((MD 5 [M?"mQ**<"әrʃ/ (T;sYe1WεJo#YpM y;^^Ynq,# dCl*>U+gSg0~{34"-(PEJ(3!ugq +H7V,ZJ\frvsxX3 Y2oV%[U`.\uT .+檹1?Sa̋ Y% rPDs VkO5KkwwmB,bnw@Є߹IU]x,+݁_E4 U@wɟ}|ƯAHHX4ʿ`xnyU`r\0]F&Drkf\Qh:VϿf$/t;pt!ˤum+pIL=ʞk& 4li A|9/0DhIҕ}`Q$6-sFtt8262ZNd JH@Cp ,@sXLa,NSq$cP[Kh+{B!W> LWԬ*8a~ϗ#x D|%v>҄O{d AC ^d L "$x>DHYDO 0%}Rh.C9"[(.b:Nɻ9A{>T<E[6 o犲m[Wm*IG^f.VA]THXb8I$U1#1&f^'ʶ|6bLz0WjD@7V Y!2jP) sw]%P 0kbs1ѹ,9 n[۠7ev,yy Z܂Jde<(_?"ߐ$D( ;M@˘aD LF -[Y^4=ll]TC=Dz,9ΨŮRfz ek5_@/)p%!8k 7;U!kN\9$ǯK 蕗)-]"TZ!bLRyS2 JYg`6kQ -2 5P_Fy@O7_(x ܹl))[Gj]t K512G4tr[ > p)t$61 )Sӟu CĐŬ UMO Ic:N$@?0SeF|W&Yqu[ڶS_yiQKg@oS\/e+{̵GgW{IVS$!;aVz}CGe+ #nNz рCJUjC8E !}88m~iw+1DÈʼNܚl fu-ŵy8Q]36*Dhs#DlV턐TF˪<ٚFp (5jJIFK$L(5_]"RXW !3_zɻ9GEҨ:5]JX 9ƾH{@1kNU=hJ <~=>q hU 1E9h\*^4gͥ@Y8[8Im:,2T[FQ)0RiJ7N Z03/|v( )y[_C܈/hSSxqVqKKxuIDA+QCۙ": j[4e&yߓ1DֳϨ!+QMNT!H|"eYC>Q2ӣ"TTZv0w@m=d= #Q?<}z6C.7lR«d}$g IF̃5:c #b9 ?A+yK^N^ɝ¿!lj,9vX"UvPLsUFTu:q"ZΠζA2YF~zqhZV ^Jԩriܻ͡ y.Aە`8icڍHSaMB^=oAJhR0NIC锴"Q$H83t;5@*T8@D}v:GwmP;(|Q G—Z{X41>FA(ԲN $4B tJD̻4v"o;ѡ(讨;+:k6+bѴ`FާsuQ87y\8wkٓґP>mL&l.6s+߉>N/ DyOXf~x=Q9347tPO;†#ɴ8m>4,Zn$"rfM5?4AP:v A\mDfx.v2G%(PYݻs+hH< h_f K 㣬pNuiz8K2|\ww BTADUf}B_!B JTBS.[*aρyV>X)/vMGzYdDڸ87jhJۣĥgTzL)t ƈ``ȂZQCK% pN*t:Ns #tj^nh&Oɣ|5hB&$},YI]ҋ]Rg C/[)P?iϿ7~;>K?dc.c/xC Qɒd;0=/Րʔ51GѶ.SŢ}Ma#l - v#xJ F132D1(:]M8oDLXPQANq@S#aYV66f 1btFD !.2aHz* ΈƎ9nw+sƾVjubqإAih/VHo#B I[C*xL:WXjEts٨su$8xgpaR|#ҵ|&yq$ѕ FLμ߫g}K٧k22[!AW?9D>vYfJLk[*_:%hGP!Tgp.Bx r.8>"; vJQx}"+ObU/ƷOE&=gwQ4\=J B)mlok<*Iy.nO,HF"i 鱎WOm0YZUФ :`iU쭊 g"R0kb#`@[;!nܮ^#SΡ"U/ңi}Tܑl8fDέ3$=Ƌ1^zD'b>(a[ۮA J\j dB!yT61~lPII*!z%/4?ͺp~%%.2ͥ}t:r&y8?YK:QQèuʳF,v:g"n1ьu|yyvA8|gCjV_$b[8*_?H r~Ren#\ ̠͐^Ԃ؀{h^UdIl#WHd8/xJmgNΞŗ=;z2TE6Gт=e0k콽K"6Mb^uȴ KD擈tq'^HQ}zk5t-P۳[< SobqT̃Ts{Ag|X9kFFJ 3i=fR 2ƺ8̚fd9f/6C̞_*;F Q@0f<9r"FFRZBq]9 'VBu U =ɻ X>yIZk &< vg0r hȑY~FcGh{4tT|ʺBkg#Ñ f?;qM jA#K@ &l}>W9W 讘 &Sڶ%)) ]@ApBu)C~yw'T<]ZT|8T0YHu#є5f(ڞHj>bAYq! !D1##+B)dߓ˜31@GfyPz΅s]&)0SPH`tkFVDYO-;Sk̊3,hvSZ\Pqh:޿̰*ݵ)Ԇڧ<B㡹D,0E0XU`kc@Hw x1hJp XFiǦ;~it%c%f=nrvzn֊7; ΰf|ިtrɳ.=33Eȁ)Uw3Z2 4MeG+"HÑYsȤd[iiR0krG"*A>Ѓ>Q}cp+Z0f{nLS~nodtg sʺSE4ho"E=?!ޯTC/d*Ъ&ΐ\#cv<"'G\X'CuE3Т)83AXxXjJ/Y屍\e,\ݡrߞ*vߝ\!}KMS\ora)T祡y3J@DmSݳЛC!ldx$h<`r1y(fQth ů64tFS8t|${9H+^ 1%$Ip=Kb-uqUPz`{1߿هaYR/DVXXٔO/%+o~KП% \'87 ARcr.`}\ nl8<ʵ3ƮW~<`R5>p D[~7uQS!@jmt M&~18H =wPyH3Ckb iрHYIOcT<! D2#2>H |)y2^{gDi & fz$ AH(et?o]V[NhhQ߁xfح6 Bb]P8@ rAN#UEp w } Rjާ7j3`qW #_.:mli \7Z8Q; v*"xp\тe<;!1iw=XI$͘e^xІd0sW&;Oށ |CNjmMW!n{HFʟU!*ɟFͿ+XUBʀU$P>ֆ`LF FmB0"e52@M?ay$ q.ũ(4 /kx'?0 A2h*@yA›A$.ISM*WmDL@KO <;,hKcP-BGY쬶EAy B @Wmf8Jf֡Ѩ|A@~E߿S !!Qؤ0@a3,Xtj1 y-W2ց޼e&=GһK+gx@5GX1. #ȹG]̭~Ua]lz7y}eگ, qm:{JQd<, !>kVwѬmZZ:fsjm4ԣ_/p$z{ڀRZ4ZID  kZ :Q?@\f`7; {}("؃Cu{B6=Mu a%@;U3ɪ,(Ynw: ^6=zE+wD0龷?a"@AaeY,'2E=Syqlo:T6 |Mo8 t 1 u1)A۝ [qM;2)~܀gYD5@Ar P>pjl"IʵP˲BR"Ȥh3rNsQ`~e DBcڌFaZP$ \b:2oQ,([.i^Bү,203!Uf.:ˁ:7BSp`krGxz&zs93L=jP*FC*4+q#DHh8I'P}:RGSL! ZB]:+ Fy)ǺE@G* Rw&E _2׉~u.qʈJ8sVzSbQEavQPVS:Ɏ)k⌃_sM,iaVx5̘e2>Q8 D6]뫞"ȓ7|Xfě =1,9vJ,L p.&LQAԙu[M"U+ 4oP] W4q (@B~ Dt3 *{6 ̇( lxP+u@;g$J.=KɏojxH b8&lAzK(^#71 D 4(`\-:i12_sHKi&QaQ:u{aޮm2AԢvqG U"Ea, fbm , ny%>yOt(J+YYӚJE8ؔ/ gf=CuDL2B3UEBf| zm^qKJw (k[AoMzO9fZT y""U8''Fs EYFD4 ]yS& $9Tf`L FfK#WEē.ѧ(r'S`>sTh$ #^Q!C>Z=Qڊ(z!!! Mz`{''eYv͸O8!#X{U 9b+% qf,`ipbh!$Et1jWxiHt?;jZj}QxMs.z2桓dNź~X;9%|&0Z2jPtfI zX0$[OƸڅ$ Yu?…A! WHXEZ #A"uȱ8aGxİ!zN}Sԙȓv;ĉEDgb0KY-L] 지GQvsB/y/y@ ֯Ůqmkљ9JZ7㐓 kuÚ@,ϊS}`ؼE'QN(X8P }7+RDkbE(pk+P(3|"VJe1ݭBs('kH8fLk!}id'k }!4SrܖxJmDF;z.i6K"hy#xc1Mj;bRoRȭ EFҸC D_Yf3s3{ )͂:b@c& Hſq3ٿD96>4 ,bB-E=13s__e4dj6N2ic:c . n*zŴBlF T{SFcIZ'Xfz˗ƚVHuF)7uGib\B #rZzJGpg{cCu&#a9ZP'&1ޢXɳ䍘)q[DT J-Ϭ#vFfv k}W۫|iZ]7}%(lαPwqG&-}s4E\Z8,*3 3϶/NFQB# +4F{N$˰}2M( Nv T ;% 7(x+Ug!,!cweܧ֨كs }iY\eY' wPY6<`0E)aCo}uиci'C` _uKߝRh#eS~赫քiaq4ПB,ݦ:lwym![NA-"~WmYi+ a9XO90$V/phbO8UBuɻcY/repĺ fAi:=?{ዷ>o u:?9>q~_?+75|Z,B=R;~hNjOo7gx˿~xxݫ/7?yWLX[=^ǟ_߽}~㏟?w4YZYn"u]οnQ;+Ylf:̪yQҰùA hj"TDk  #IHY =T 9\Mi_rNnm qxp*#N,肱F ?E!";ai"h5S6lo8^SACD86Ce"8"D`;äT\@px>f' 0l~'#@TK AA?5#Ž j؇7Ř cL"3jsvCЁN0ax5t*B+qv]b(`i݋c~F'UWguYV ӒiɼE%)^)5MNa~ma~w>H =jF19\ qQ]P m26wsu8ܕxx'\{cF9Q~zOmBB[s*.ts"E`VxI!PN#ZOT’j̠V`^y(`]JXpV@oC[cLf[; NYaz3ɯ3euaTɓ+DŽr>ҍG(FlGbj&t~^:$>깭ePEK%^ BjpxCkqhA`@,ADX$k*dNيRV|ca0Q"8 #Echsn_whpArrU$> ߻Dy[-TA|ֱAd~ j: m"@oy. W:hp\8YK @In^DͦFS۳N;P#rǥKc.}ZÅ-t|APF^e#kgZ) sP"fs ^tfPyu!p8XkBQFgo)5=f hEq;Q5@u&AڈeL1 F 8MOx6NJA/FQ ZR6~N טO0wA"ݬxN͠tShR}#ŒQ|ɆE?N&"@dQnr- EÓb ,h\Gu7_stpeSZ%Kd FDAWD3_W6nަ)1U`zwqC}@PRv!uH"`A *h&3v-B"xBh (}u`(\t,|:"w뎶k) d,`kQ"rmgƞ7<)sDzP0D@WE} ':4Nd V /V?PJ{{\X=Lpްs!,s_/LNSgEBK1JcYgވTelFrf V vcCK~5|;Vq'MVsP nw`>pKX:{D6wFL=t77ٶm;Uk2Mp xH3xgX@!4:ƇQCdvrEM1^!M+'dR(ys {,O@`-끲{DA#a>jhz+D&@)82э:҆+Xg V]h(68|nEB3d,PE#e-gdЕʩ!WBM1ez ID )r֢ۼR "pYŔc9JW endstream endobj 43 0 obj <>stream HlA, DO;ۄ(wUߙ0`wFI Wl}4?>eZE@Lb,D3Bmo̬P{TuPֆGmD:!ļr-W#c}Q9P>Psy.Kvm!|]*NѼd Ϟz8;hna$G&qŚ Lse׮9G6y $w HLkkZFt=8뚞&"\vLW;Z 'IsjjAC^kZQBDx jVA.v V8XCZkBh".Sт?{\Oԩ2V9.ϧjTm\ß__: jDi1xN_OtB^Y'QYhؿem@kڕx)rTQMS.F$s19bR+ LJ=XllR>_ThON ~CM۩Vq&= G Sal ue,K2ؼ v}u ` ^CODVo^iBƮJ;mrqPR0 U&;wTStCT{кDڐ$0%ƫIY*R{A|'8~ iH:YWEo-兲!eRlWsAЖMyK1CB _C,9㜳rm|b@g!9DLIߛ  tC!\$a#$/E$$fx):֏{R\Ą"g+DiC=Ut|E !BZoǠA@W ev7JyϬ~B<#!>1T~x|:|\ cd@EHXzWsHfLD"$Om~$< ),'MrHԙ"M aNOZ{8gN*=EHtD-zvWȷ͸ YXf/Y> `Kr0! uXyIK-KF+pRf41lr+ l :2p? 6_un.SgD [Nu[DFcU?j6EAwvSVA6#Xzk uJR4cxdǘva 4)gl-RVs& 8q3&`BS0!\[)KRB"Ă 3 E~ʟh(>Gv0~-`;l&C9\DsoCӠf,$VYT)\(@CoZ|L2>;juZ.pq[uBdX/몄m~zegcj|GiL̛.:ոSy&MyuBm(~J74ZHY4Kr(J j}^/@ai6EP%8Wb/Ҧό@%6'cJ9[DFcYT0tl*@Q60Ys&V(Z'<7$Q+V})2Mt̲] ]R{}?_?b)i i*n!mC0YmJqSO0?fFP= AЅ{rT 딪  Bhj(& a-]7Ux-yTxh191w%V.mcWr-XÖi^@qcSq(ǁqkEeJmGmAŀ:f'n1\i,D]UV~)j sfAqN+X&y1Uq&"f0ψniib6R_LyRVL2־q l95R=B6yEaq sPZB1і*PB(m"N֍@y $eQw@7Vs7Fb0ƻyz_I7!D![1!Kk.|dA-6:%}M<"Q}87 $ #wԀ B@^ȇ)V!8H>dҐP_}[lwak(H|0[2ane_8t=fE;* %}ž?aj2աMRkf"X{&]WM|/0q=Pb-bY49 s"X*QW ,3t(A!BDHH..nYљ[wrJ *c_51qίֱu{`bRL&2wX,:FxcAGtj ry]DYUJ@^b"ӇK)3 Zt.1ݝpƎNU-d?QT *J uk `krZ&{}nu6b5 P`-a~,P6G?/ѯC2/}،vtvg'ǫֽ!| ʰ9O<Hvf0-oq:TmVW˩e"xBw1kTߖAv?TIv9d88% pJ 6pevSZ@" Nz q&o%?p( XN&b+ &q/䳌]Qs+s)Tuc:86c^zjug0D/;έ֏sgUWD;LGi&J wN^8K"VP#\][QN&hT1(l|$oi|ENǎ awzE/8] vW3>meiWt';Ad_F ̈S_R #;ym"zWzoBz0vȀ@f3=˴Lىgp|{.6՜i+5=Ԯ85n|< G ]K)Ȉ"}  $=:ݍAWT)0|tHaK8Y,A3ȖbJ(sgieFO< 1.פ"¿RI=Ǣ]SOYP'BkFƈƩ4ԔӸzvՓq_VWci%9 ؗR8O΄mΎ贰 %{,>11 X9mCa ׁpH 2& դ!?paY_Yc}%~%O~B@UzMH. ?+ UPvl;F}n+L2h*_`2YPjڥJ{ҁЭm;fߏp?H N3p[o+r?Q>N8B +","*ӌXI9;5((X"v.,U8t?|![+)Īzyp[o=G55:)lz7xHjQJ`5ǹ?ui2DկbTl W0B_ sp}Xὸ}MPu T^Qǀ04Ć#MƐjE!-rk7@+Bhj5\CB,6d`ڊ Z0gb'dTkQ%bitg |5MuА+6yPpxGIq( Ьz_Tb-{B"μ;N:H5wkZq0X!&u1yG u\ Q𲿰:juZ,J17Z{DR:H~](ce>{=F♚fA'aԲL֠a2U5[`9 (L*;}F}zc/;JgC\q>|ã-+@c&)-Eak ~`g!|8#& 9kWڦkˍǷ͏Q)Ϸ$[XMљdb޿_Tf Ȧu\ OH ] \jD-!q|yQvaoZ&^DE5cN}v*]" *zif$F9*@tSU&p)?MUy)nvՆkikDBDP.Vq-_|KowyE-P UƾeaiuC_mS09,0E2/^t\ a8 &7\JoKj*RDc9<$Σ1P2ĥьWTl+2kM@+h88`%>TO}|(T_t?@ g了>{BuF=+?@=}?}?ǟO-ST_?Oa\r,:(dno+` !?ز-{ꓕyNϿߌD?],'- pB#kd夓;٥g/ϣtq'ꌺw׋h]^`{Eɗ%iPB:X5qXL@Q\Y|k0FU@Ƅ`oʴr,/ۺ?xx~LUi:Oq4skQɸ{ߔ J3 }zқ+ cbNݾr3c%arPGUr # <]Z"UDz9lCIG;Qh\@tJY:*ω@:p{.=j|}P\NXx}' `م91Y̶(^̓^t["PS~E;v%$5;*&].VҨtD|w,0"N֩ce&r0ݶ腣fu2QF*9re UK:̳vр@"ze`I\YjG&Ʉ7K (dm*]P$H)D' Pb0rU(àaP,~%ƤBF=\vPl|pcVnk|Q_~(^1,}ύ4՜ҧ"`m5D kXJrLC>!:ˈ.ߓA=[YT(H/wawunxӐdXܑwfkUen,BS׾:w g} CYQT :o(=$ |V(:StN7/Td˒c&3}I"5 A0-s,K&.ոN}A ψ{T8AMbBs#Bgwzc,b$7m7:Q FuʫBȡ%JHxJU90tDE)IJX`c>W*s26 S݋Th+$]G޷#?}1~J|]` O k1p/cҧ_TVOF:LRE!˯˖0'M0ojV-/iMjenǣc0 (R 2hA=%v*W*ܝ˂L[vTQ֗(śU [cn!ELGFND[{ _.-_ hʠa`q]:dUnYwXGkی3%H+C3b <ˌ6LV3Z0UZ)A;Qܙvt>3A,RK_)wŨD^ Э+QQ]zTQV:T? xQ@DFP'4N% '*'&jm Yó>7zsV A}CH[Q@1 zx6\xl{k8@ukRa!Dwy}΄nT*}Av q Tu6Is],j-??']|$F`ѲYkjԠNP=)sXtiNzazN Y6\jSDLP]Qm4Sr!X7pǃQEڟE.$-h #2>Y1B ύI)X:}!gUM8)uhLg)±MUJJcG5qSB'zTGo",~eJnI1AĎT" )h {xhSY%,p.QPBh?DA!O$OjXdkk)Qb1?<6x}sLr!&= %biOKgGdoJH QV㹌]znDH(֊\6`S׮1#eeh18UFF٢GɩK|KFwޛNCsUvL+me#:Hrz5$>hzN,Ԯϕ^8<-.)/!mƒfMan"Hn+C /hs)k¦6ЫH#cVc#X#DN0Ԥ.)eeInROzp}DO53O"$l^Rb ΘCJw5oVoR{M/J/ |Յ!\t:#QxF<#@yř*b!0J3$ɛP K'|iŀ5=/'!)/qqs'~oxf ì!zmi&.($eD j'b4cLc;b -` {d2E<4P0Mʈ "HwA1FdGա%7\ h;˛n\.k a+Xb"To[@8XGx0,N:Ym^MJ]A괊1tRqN7TڇI5nBƥ{]+mxY+ &պܩ^0Wսp0$f{GPw;V-jr@g\z]ZmSE5+&}Mi=V68z #„.lJ814GM.<ƫ? .rfG{Z/vzx<ְܱ#eEzw j0GkRYΟ.MS)CAmq(%f Ijc] hhXv7Q/!IIJ3cvBUsq^ 7R%mi݇{s`IŬ.k2|:(MϨ*GzF 04*"vodAG"(\N0{{<4bAqF&> "i _Š:2("=肓C{e]bĬ^D@.oJ0ۢ7@|`KI*4g c\Ě9CKJtQbfԖvs^Nv Cp,*~f>|&4>ƪ|r:,cA|@:*v}Œk>" h@ٮ6P&dc9ԮwdH9q2N׋eaҧ"?Cl:=|T RzCnEsjzXh S\$ˬ} A՛x.=WUA@b1J6xf) xbfZ?e\&u8<(DqɰRt:Lg ^vN &;OtkPTVeJbޫtMDSDϒ"A3۷ ܧ@^_!& ȆދNE5:EN=ybd/*nn:ZxOMs9 'yF'n dX8x؄|2yjwZp]ņ4C:6c?mnLoV%wr[zzuPةKqd흊%+ hu u"5dDJ׾㠶9w%}-j :fr?#?3>3c"SnV5M\\Ax Q4x(5LOĤD1NF$~Q3R|܉ZQ! TĺPꄪxKbUH]a0qxĮn7k"DA!u%2䍛7=/҃rʹ&G淂<@݈bg̑?Rb7'W%yj:)P8l:IX_CDՊ#rV+@(A DPЏ%r[=aOՄ$* u:!{X`;ѥHݍIT^jwc@Kձx*5< 8,<Ϩ%:b*D S)NuF)"fذ;u}s\S6B݈z  ڈUoDZCDyX"[P 3n3>S3Z3mvq ]/V *)Ea5X9ldĺ)6Bm4tV8tJ;7ÑySQ>U0e` ~Cjԕ9 a,id29wG\;NKlNÙ uR4F bq#6FD:djd23"jQc#F\Ea^:u8ȇ(Q?֕쫘FhF\Xmzg-E1aBbXx`<+,k=(nKlSh -?HpC.@ "p61Wܫ!9 ;́ XI_Oc;] cИ[Pfy$ѷWEzj8Q-(#SJT&WG_|Ul|[ٔ]}99Muc:$;&0B܉NwZH?FTUUUZklB<9ُվB@n{*EX`xptmJ_rjmL{6~75-$z'} Zqi~^SۍՉR$bW8~1kn0h kDYV2*7#)9=2B" fUv' ^{4<⯋2F<^ B`'` %15ދ.j -NբxL*U53꫷_~g/;MTo?ᅣq:ma^XqnfЎ(? fK0LS~ge;gץq[Z&Ե`EJy: D(2 %l-|2+Cc8~PP@ 5p Iw 4e_{O1Q7"y!kU0JT 3&b`^W+>RO= ZvI aCRoMm/p)?4%$z#%2TNjLu-LB"' m=. 0i$=1{B* f-n;͇$Dj.B6`/ݠ#8,ڳd% \ZTzPӜw!)rm>"$I\ ] Y{+[V*$]D UG1̠l*LV=jV_|;!!sOS/S:b]nyMvOєr h*y pQKJ1%XH߹ׇr zdָ$:o" "Qճk8_vjyMv}0esbtjNjǢHQO;QIY|0^L74dzdΑ. hEPKκLc-@t5QD4D~:v\*B.}}^Km &փ*eϓ J=%oQg֬ƙh`P?6hj"ci K80Fi7X P^]rb-ez9"/]qUVY_CeTiP~6,L}>5t4icah-yB3mW ecUE#= z-xd^AY_U.f /䦊쐞wKz}[0C}@< pJ xؕv{R[*觊8` у\9=JԌ(E?(lD5I<@ 1^`ޥc:Ws%'&|d+́; y%_8־|y%ʂ8#2Kf+ 5w4JCCP7;#f0TvȠ / OK*5-%M鴾}( 6*-󰥺}˜Md C{Ǟ2Ҭ3|Z{~Ծt ^wپ#'tD'YGlYnd9R'4$(FAI\bqH!^O%Lo0+غ5òoyn_BqwwB` A jZe)ȨIP1Џ;edW + ̣\ ؅tPA0>ċH,+8(:*PMo jGi/5:xqA:kNyiJOEa4FJgr~;qw<;`]l{@˜X{W@ƿbk̩;N% E[p|ڃL5w<ÿ!6{>M7x;hҎ+2Х<.%M.}+;v~i/+^[Jn;C}ߨݒBrNjȠyn0=,s& "~&'9Rks ;4p5h9a h‹7wZؓb $+^LlJ!KT#m"B3#KB!&UHL B"}@> )` fBSۡ%<@%m$5*`c["} U;zvUTOQ]NHD-q5˅=>q_M3u_5| eP#d[`?LnM(Y(|puhE)1@GU(mz{?\ 0iCTqg4/"lTؘLO0;yLkOXy㵴2l'/Oc(LgIUcj櫹.0#0J8Ta{WFA[A'xxm ar~ >rG=/zr#2RN=>p8q"8tJiFIt;C79=ߓvwJ(YP\@}?EQ kD5cO91G"RDk[$.UE'*AF&Pm 9׹f#GA._DKwge*[J-mhjxb0 {daܓP?oJj$1BWbΉ,KMeLkvȆKԴBtP+QPw}*Cx{qz ;jBw$j(PPI'3!Wޥ-YPr߄?w怨(ZYC%sx5#ݪ98w%skyGQ9\*=&~M qpсPMq.BpTݗ lP ΎXOv##˶y?l[xU%.1-=$;jؼlu|I,YH6F`ɏ,-7> >j aPM^C CBGhDgN |cE Zʗu-|kv7!k'1d8CCa.ЯK9ƢBn03: F\[oXIfmv(fiKh˰~КjTҡ1e"dOhYo]f|̽SXdOڏ4jSX91Vdv_k0n'Qp(~$Ɛa1hQO185;?ǻf{p ((2r= ߇#Xzqcw}TIs̵ݭ <.?Wn@QEtfv։rݭz9"7P7sR{(Qs{..@y:9N ԘPp$w֢L%W()X~GuXG';~2hqb"}`2W/":ϏSrҪpH5(ĎV 5(TXy/0MՍ uvRA\gxPkƖ4mw[rQ_P= ~g0'Y`Y(+(2S0LAA>ÈEuj\d# @<@9hwU xiԨ n#j(bU. wj)9 E'UfnPᗞVZxn ۄ9 s#Br!&+GŨDN2ҠVt @Eh5#8 sEJ@ABPUr]&L&Q[ܖt>+ 4g97R6t K% T%펃@X1 [!{Kj l׈5SYF47ơBP?T кDתxO'ׇ\ oɫ2 @UBd8P8E?IK34wG;VQ6h3>>ޱ]<#r[GDٜ6"UW5xo_Wo߿+=%->}ӓϟz/~u_?K'Ryy=9x/Ӌ?Yw>Ne(W&At.DtcSBmW7"sk"XLt&lItH֙fNe^c2oK}E5(T%aXMK!t 5kݓpeHѱMZ/\,ְf))l4>eRfsV'2j8'0ސz|a}S V/xKGT!U- VMװl*,= Fd)w@a\;& [{bP% ABFlrT%R /0x[޽$ٝZvYn,+{ +N6B|agX\/("z$Rc}Slѿq/':r,gI˳`aYRXaA5qS(Jua`0YrԲO}/mB|LGaCnvKv y9c¸NTQr.RCPISdrmP<ڨٕxČ O &`5}:נZvnsDd혇d;`8 &5QlYͬ ``'45@j&@>Z^ȍk"sS֙FFst*䛩!CmUM":CUaU1.C'_#-_:;t! A*Vtֺ}O~e #[=$t%U-T!NmfLKxtrf Dc&Qb ț1Ȕ.I YLsrl[mizG'|s4jɦ'lCӷffEul2ga Dtm*ba bm-ExrP4Qڥx9duox""''ֹ1tw#'v.#+һ\+ 3!B@vZ7-44 3<a [ y$2D Ke&H%h.&Sl;t tX0wך|AX&fc] Py} a n!h)O Z-78237e:oyN0̅ȝcZR%.h1T?@..jr49G/ R(4μ=E8C;Nz  :t=LGE7־ .G 5r$, ML,!}zb؞.@g 0*4n ̰HF- W+[#<'16M 2p:~cyw-~{܁eB-bs aDLWm,#ہ`l?jt@{(-(z ,ngw~zw%NHVwD,m;* BzyӜ(T'QūVQg }zMc~#@C^31}W׌  $~9 ]]UQBD?(ˌ]o[ѱ$ syPjFNU)u6gm>L_?1ي%_h:}ؼ8]dŵi)QmHZb9m*~r_F*nyc6ƽB 9 ˤr7vᥣ.H6N0$U &1cN6-4bC~'6X$@q+ *4~@HE0=Ob(zk 3[:ּ#=,0B]!$mc8 JCw*躏ev .|.7O/vz:Y:1/}:>eUPk<&`u qpҽN)"h5'Pz/PlAwgbqȖ{>"G^55SNN^ xsE%"ATU3% |ڵtKy6onPY!Rw෭P G JG*V } bNӎ' 2$އ9cNF)7jwiin:"#@K=c'" pDxiCxl5-|oehki@c[=P4ј0WgYx;iHF2l f8ڿY3|I1:Č!(2=Qj/;VĉaXRh!VJGaw OCO{Xϑ{Ž[PX0*2}qr2i7xODVl.$e }dyq5C,FlL=Z?\hKAŔ .}ovMqkyE5} (1p@0u5Yw>E6$.m'#(Q1*-4.MqVvo@\L( )P\ꚑ:֨@|U( fį69/ZRTY(. [%݂MaAa1FQkׂYg:/ak|81p3'2;au`dpa lll]>cl_(Oe88m ߏuV.ӡE~MBZ@(WJwƏ^9K~1߈yA_@6i׀䏔+QC&(֘a D,ީxab0wǍZbNh.?4_rdw< #b0;h}ƌMe/2Vo?|ڄu =0^E-/Pm.:Xyzm"0<Q^+| ]\?P+J+g@+w"8 "ND؉KvHvQWږ}1Ȕ+@ ʓ)Cs"zzLխ".egg-guE9$HwwLHPL[Hb E؃0DhX}בG#F߼ T#,%' 341%EB-4Ž H>xT\1/ߣhFVP33yn+Iqe\<1_|F[*`&HJET5Puj aD_9 *6EQvΓ旦!-h ,L_0R:~KC<8<}HpkKfu/[M]\5,kGFSn"mPS:[5Җc Z.}sW *;iOw;͜c'w p}wҹ+*~ T "RD(yLk+U`iU84 x4,LTa"ls1A5#xnb>7ʛbMkBfI;H5EC1f 8eO#_j U6[љ|'E4,(gh@&;Ng6 |K~[y"Y8_'TׂwXYgB> afݨ}P.i . **Ÿ@^YDj*4 ;1?; q$11 hcmWUR_`&{lCΈ&vVҊdq!2vq!S7\*C\F#Gw'"&;ʸ_g'Ět Obyz&x1|\kD YGT 8uj!5@Ƶ=Pf7OUs?߼c8I:(d͗lyD>Mo|sXμC^Bu9)ZJYlO0C]kIc/, y#4`̃2jUϾ"HD axEUDN!YCW@?@D)^<0/BgX!^[U3 -ݭ -@ <yNh ^qO^b۳ 漶{ɿULMNA X02P/~&*|oO6;xKHj];XƦSR6 sd1hL }u@O3w1eTۜiqL>?+c0WT m[ Et MF@NwGRW P$/mth!B,eQx)8 F;k $QϳƴۏX4F'OزK C6"^"Ly~wRC=.Fw;HȄGxo|*-*<'0AO ky_9y\1(zvp7L#'u $ř}R&4= w՟V(ˠ:+Z謆vo2 L aU(jJ11J(٢Ou1<+x)$9)(٦4;sU(]p:=uE n h`Z:L|JIU1YV[c??4")<bkb"*}Ѵ1D!.\:cP4Qu>c"[ v., %@ mČsHR >2A ?dxJ rD`5&/-,Fʷz},6#ę?zQʞqI/yK b@AUy<7yAST[ v!t󏱝d9n((eK1׬)(X >ȧA ,sEo-3:>Zsj2DZ:? `9~C)szV'u7 ,Pa_Tjڋ׌u0(K™1cL|6^4Z4!SW"ʄ Xv)[ TɳhV:b1FaݔI1Ua5U=n_"U؈3ሰ ؜Y #EЉIbChn@+ "zE⇚%͝\qTRnVKui1u0 8 Y,zfvA5)"P KD;9"i)1f/ST6؜_k~s˾2 a]Bܣ[DiUVNQm)ug?SK%B{9p#]r XA`ጄڬgf4[ k9U@Kp?)V2d:kӣn#K!Ѱ+v`i6AQ &S v|,1>|~6SMG]}×?}雿2EM?~˿^>b}7 Gd),$7^9.S$:?z|FQ)T=#<`SJwwk*{F9kRπE;#"aH} _1?12+ov+Rf+e追op1Zx韕&(tCcZO3f;-NG$4(ÑU7?*EN~W6,Hh*tV# jKb_4!2Oh)I_s_2/+"5VjΑwb @ /@hNQ@r~Z; %\C1A#"IteBd* %qRm+҆VfjM]GLbNPHd3feq%Q ([AU 6(ğ(, T)rm"~ΩM0]t[$ f0YPP@^1EP*'@\JτBѥ[g`D܄{Hw%y# %]l~}yQ؇lyvϰuiE xT&XDꡏU=px!)mu$(qyh%jjBd|8@n wJx?`9:0^ys`ք'Z0M $NBnOAMңRAh1L1c;Z<|0)d}1leU#ᔆB݂|uAZUgA܂e!2uZ~YB@!"NC2Ub/!CI =Bx+Q1jyH,BCKR *--VmF1R^mΰnA'ZHiM5 ) !CC"65E Cj؇S Et27pGWQ x=((^rNYPI҉2{ (B%-vEJιv5i'Ѯ'gy*b$_3SszV>Q(RUЄ* 3?\,~Hߣ_v͑ ݀W;\N-W¡~jbȞ{D{>=K$DoޥbWCfo1C]JٟES*v6$,AN$w^n0M.a&0]ʼn*Z`J8aPM]&L0΢tJޤJz0|Ъr!V÷Bw|cQ>UϏU|ѨwfE8A}{ZZs4&̯*uS}s xa "|Z+VzQP·\-Lx1tƑʂ :kqqy5SIZYT1p>JcsSE!&d-ǣ']a̦ [EjqEqHbBGH :_'F&  *w9'rۗ:cc6&ߕ5y&y7n_PȮGb"Px$x8vJa*ϡxW(Gi5y,I,yʛi']H#zp }y>^s[_P`*>3b;t`A endstream endobj 6 0 obj [5 0 R] endobj 44 0 obj <> endobj xref 0 45 0000000000 65535 f 0000000016 00000 n 0000000144 00000 n 0000067082 00000 n 0000000000 00000 f 0000708177 00000 n 0001473298 00000 n 0000067133 00000 n 0000067546 00000 n 0000708476 00000 n 0000708363 00000 n 0000069846 00000 n 0000067827 00000 n 0000069285 00000 n 0000069333 00000 n 0000708247 00000 n 0000708278 00000 n 0000708549 00000 n 0000709299 00000 n 0000710791 00000 n 0000732330 00000 n 0000761645 00000 n 0000798675 00000 n 0000857292 00000 n 0000904249 00000 n 0000946725 00000 n 0001009922 00000 n 0001051596 00000 n 0001104246 00000 n 0001157228 00000 n 0001187784 00000 n 0001207617 00000 n 0001210984 00000 n 0001224108 00000 n 0001243308 00000 n 0001258136 00000 n 0001272157 00000 n 0001276757 00000 n 0001301886 00000 n 0001327596 00000 n 0001357199 00000 n 0001386037 00000 n 0001415546 00000 n 0001444373 00000 n 0001473321 00000 n trailer <<782026944D014C698F0E9E5EE0B87D08>]>> startxref 1473513 %%EOF libvips-8.9.1/test/test-suite/images/cogs.gif000066400000000000000000000053071361153320700211630ustar00rootroot00000000000000GIF89aUM! NETSCAPE2.0! ,UMI8ͻ`(dihlpw G[@@n; *^8ueەӆM]|FmmW{|SgieaslK[{8xuQV^P^|.XM-H|PA _/Hd0:SSѵ[M݀aIVuvj~tw7k59~Zx$8"bҊMA"#w-Z!Jpp!X!6$؀hHjVDXU>GK|LAK(;,Y/CèbP6l rIY JuYnme)[R8 XAR{~ ᴣKIH3f¢7be]|kt=q~cQ~6Cjv>LtzHZRKp~ItRxO^}eHP]< Vf}oyuOfUwAmcmץorrڤ܁Xnh-I*#TG'jq5UР{e=Ա#+`C8)>3s 0Jƾ2.DVBev?Z% H"2%K,|+|B}5cؓ#30|;2 a7ϜUo#pHfl0V_,9b+fj?*ӨD! ,UMI8ͻ`(dihly4Rٍ~pSbHsiN'hTHdWr 0k֍9wbz{Vpda}er8apxkWrrlOw]qqCCh/k6fp]XK=զ0g 7 )E 89SFFT45(05*]EZ6E aD,8l"<4kLj-ZC `-\ ^0m`@ҝZꔯ(ie +@ 4s{؃WedJ)H Dʁ>,݃`YW`U%3F: F`@4O- {tRyMƎ>v,6P0J=rED 2XD\Wglx 48h@:X@:Ht(af8"s >IR=(JO;Hhنe LJsSm5Ѥx$Řg^A~B<3.^2bV!!M@ f@8^AO&$2%<80eؑ`9^-hQUF^IVpʼڮt\NEJa嵀:qo21D :.ŒKʚ:0 li**X& fX^y_>ԛWm4!G4|ld&p=>1d8j @`1O\* DH jx!xTM (dkd?+e)Zܜ{$AY5meo7,q6" ĜL٧v tWO,NXCO" `E7h197zÒt8aWH@w "X @,*,0HaGB=)ֺ279+ 3cN5!NT:tC8 i?9ZUDFr"" [@w9{/ 7,`0ط3m-$:HZCB MvRp!3"MmJFHNFJQp2h@EY3*@"X%1T{#C>6ѓF!`d؆e4G#`D@)uUd&ǶP@n3MhLLA#/X8̊ rr5{ځ*n3)"FF!K!^ 2aP4|4:  @K^b|D-j !YF265!?yX˾I+\xaa#0!VB)L!pM M[0bQQ5]JP,-CۜH'TgxdQ^tc@)BbNXQbQ0@wPK+}A `XKo$#;ӕYkse-sNpD#{| )]#CBFjcaN”(!c֡U:%t+8oHR.5l`QNZ4 RGM#AJ5<(aP0xB5s8=褻LnVI T".Ɛ pzW}(l֦+qu YTѦU@T}Z\6#[Y͎H r \g |P #bNz 3xX{@a߈yVxUYngLE J!B>&M.SL鍊; 9 ~ }0F& q= `R$/Uar} (fRdb`Dyc"_¿3MuH-5N@?`);v84QQW14 '7C!@91.Y q SDRZ@6Li0"T01I$ 8r$2 hh@v8Q5!< mB>NRLQOG3xGH=˃pG rk"?= yVb'PDl /@s] E@v2.CLrDG&=0)&UuLgB[v6ˣ"a!9 p"xwH&02DLpDa'p6rڸp,$r94uXb)桬oݓrCc? v"r B 6Q?# F ,q08^L0Xr,f d&p29s?pS3 9Y q BqI"} P|s{f> ZxEF$" r'eG0o&%L?r^1;Hx x`!(4B5rnOf~H/ǡLPjud!5*W=Q:0 bK d b@Ji v@M:MQ]/g-oq^%e Ep%!҇0 k}p0^NWӒaMBInW3(z|d:[eu :P aPaPQ@x1{v80&:GmP-ʮኳpH,lx6FoA_k\@ pT@fX{h;CQ,kc5+0pUlR=efuFb p{lk)[ <kaۣnmPEAH-'^0LBf49͠vE a5xa#3ǁ86b#rbⷉ@  iiVej\CX+z'Qmg>1`0t(,Ff}'f= z2TN҅e+j0&@!l\h9r5K_, :|q# )g[1ow@!A[G%d 0PUgӍ.ZJPaQtenЫ8)1i# Csl9<, (^T,sTj0pvq  [Q_&Vekl{FGQSs(m!V —P8C}yf/aZZ ,_=ȋ3A'%3&Լ@94ihS# (p5[Q 0E4!Gt9!f0v.\&[J'gOJzQx&^gpyBW4$?c>d8@W`}`P"DGKdeA`#R0 {dg"`XNh-89u9ڨiEWSMeGE`;!D?g qGt:[W`"N[ TjHo6-v(imc'z)@LrE6ʸ-중 $11>79S63DLS3Q^n8{(m^hLσCqL !_81`l@ 3E4&*ұ]jO # bSd19aCkEP{aF/g _ނך16n![S.'NPDrr3%Y&)653#*!I}R7EXX6L"%*8jR$69z6m@)F}מX'S@\hflcYCmC'hjP7sFH<bN]6-r S% Q:"Jo.>ӣfSTq@ w#Cn#KvP^C=l@qw<&@GCl*AБe!BЉ"0L xC"{$Bt"Yqwmirr=0a$6dSdX\9tW=5 ,BCkGKACP05# <#nD })3<:zrUY3i >N8 :S^LB1-Q@&lr cb[(e & ?A_ߑ>HK2as=A^`h8T*=1rI~*BKxIS!*l+-G艉-7BqRWюR[O1i ݃/zE-9#rH 0^!?4ro9L$}{O1_Bq`Q]W8 C)sv4#S&0cs<_4!X ] |]P:v>Q:=6q "6(I*+k{5ipQT"1+XtABcwFH&!x3bTO$ `9qA\@ f!~x!GdRd6O0,8A0PE . &<p|(3)#!FGH%I , D"#e弤5ӛ 13I[!mP"!Zf}DŽ)  !nsBP w"fpPbҬ!8(}14Pmdr1 (,M=h|y   3  h@6# Y͔!㌋ D Ovٳ^ 4) `@('pg$c5`hx|qev 72X}31 Fk.2-abz1܉CZ(/pțe3tUY}l?1WhҰXja$\S!E8KɇOA`R+ m2ppB;dRX `i)„/2%jT@c8 /-Adq@l( 17cJjcB@h!Vb 7@ ,~qězal+2:(xIa ( 'ljG/p!Bި (eWnʲt XFjҎfA@B<-`AKQËE[(7YXpi44 8kF!#￐FSVL`2LHzYH`!G5\ʍI*R!,aX #Pl(U0)xa3;9/_6˗⪯E[, F jXtAiEH0Zˠ6)!|#+QFiꪢ(^#3nH#U8u5vo!~*#N)?n:fc馔2n(ιO֎pOd/X@8Υi c?40/z#5I+#\_>櫱[@4ҽGŵKbowE5ϱi;jghT<ʕDUC"FkFԨNW NVpDF$``eL!8B5H)@]?86"g ys҉3i|@WxfL@E1 MBLx#"i`812!KM;R>\Cb0mK0!mC{[R4Hz _KF6TMY#Sa4)':"& B 7P*3p+~> D8†rt[*琦܀G&//nWƛJX%ZxxH :qu`Z(:Hvj ;J#ly炈FALA1(!7%T,'/q镳PM AoN C‰xFo%I$7PMp8pU#^ƜĽ. (ipGh0)xzE)b{qibG-lg-8R\8dz%k4)n<;ll 8_PipOSȠR%/a ɮ(O8Z7<] p?~Ӂ\) H#JIhUpf` Ix̒StD&P #MDt;R봃]Lj2 V#.1= a1yTq+-۹vg̘ YXq8/l:_eO@O\M(5R b#JŰa6m)m uC,~ <JXr]V!ygEwTE,>!qtTP)-uݵqTA)#b\AvpVhI_;uθ[Ѐ) W#b4JjuC6R rT'a9C${sny3tmIP81Gńs(aYvm=۱Y3dTNJNa=ѣN_GLXP$3 . zG\޿EFWM[i=яW ?7X.@o& $Y;:*!K@sQQțl8ʂkJr@,M K%Iؾ PX&3ȲVڛ˽[j8-QԘ/3-c/bfLzA'C) Yq72;ڛs4h73%B"Wx<ə-n( [j4JmQ:+Xx)ӳڲ91suº 9xåb'#H3A0iIx!\ND I=@7Ć ĥ*:%94|E3/LpR=)(!F*Eu/U2 )/%C^1ن +n@5(7GQ P 7I+p (80:Il4+#&i,M9JB D%"S@qh56<ۚX;ȇX\H2 P8 sE;ZM^m#h[ +hȩ ¨t0y"(Qbܠh8;1Y3&3ʚK5#)QP%kZmǸz)rxeQuI qz9Aq? $o!c b`"= 8sY岆:,)EBTh(0 ))B Y a{ZW\j`pѡHQ"qS0D* ӳͷ.V3jziN08K8/*HY:(Y(e:j#,JQJtL\ӰA J$eWrȉ=[YP!pU3b(р:m0:L գH*'~9s[̀ BEyي>V2Y >@8xyq*#`m1[i{K^4Pp9 ZP ycxdʼnX4؀*C,2O0 D`@S29Q̀C IP9`\PYJx$$0Ks**L`J0J/X뢤!aP%!BӌRJp ڒzHx܋ 2 26uЭZjs`3ʣZIG c"7É)W4ר/Pp+H`xm*Zvz/AlڇWehp%{#V0QrPHݬ I019 pQx]G ܸ7XJ*m EQPP،[i- T#WSֲZH޸r #2F_<G8՜x-I6-(8m*Tb8_`XJ`T0Yh(XȄٖ>:9KH Th`X` 3CvT؂X8G9i$&Lc3P6 T. R<{5 n7T=zUC72 (-3 IsØ;vh!ZCTNLY`PvJԂH68T02éNneXeI\DxCL/ @dqb؋PD0HJM4j`#Kxv? `;G:QZ\X x(Js5$r܈ڛm9HIѿ\YWAP,b1 QXt-EX ^8APӘRT-U~euRޫTIWf00H8rujiîC?xIy sJp_XM#ePep0wQ~2!Iؔ6kx  -Bw8,! $u(0 vA?ʨp,״pPEx% ,i f0 3 9^,E10VcaB1m%jjo E's74+,zgh Iies BF+=js )Ȥ+뙁O #5:`|^5ӪBv=ۮ pdRR4$bJ#?GPX/) eISKQKW+ሑZEPuHx5uŬFvj@pa? (ohrz,io.(sh90B8b|9Y82qExo=PjD Oqp(PxGW]j,s&h;SG1+›.1XPq'zviԤp.] N*,t#`!T*)p7 {xH!K^Eiy }%AMK X(pm,4 T虩ӆ^o VXN!i&`DH?$`#*C[nQkvP(wH*l)M)1kl9X-ـX1!P:PJoXh  7I Yy4(T5#DMT!Q 4p .Ldt .13Q:{expRFZOM`#}[`1]! vM#(ȕNH``mq DKpK3ddy[0k#9q4pX!)#p 2r F `H[nTWׄ "hO{&m=PeWFU #>"KcVt@uʔSeʵ.1f]@ycKA!P*a@*!sj>Edk^f\@ImxpqfŸEh'0QC BD=3@^˲@ r8}QKqR rG ibτ/30rAyj/D[T@{(JR &(|Un'bB'Ĵ' 1@!1 rȀN%Z`Ȍ(<H ¢  &Erdg3 R@cH:Pf++: 0(t%AP(gH*"25b M<ÂWGE$֓fc\.-<*|q ppGQC:|$ ![D @ w8C=cL?U< D ВB&Tl܄a=sZNCE CIRCULAR ECT SingleSPECTTEST1 08-25-04  SPECTTEST10@000Y 0 00 !CE CIRCULAR ECT p3334 atlas-97001  1.2 0CE CIRCULAR ECT P1.000000ADAC_IMG!A 2048\131072 aadac01X1=L?mFPRTV_ h q   RS K'4(6)8V:U<1@0D-HWL*PT_ls|$n+ !"#%&,oT .,/024p6q83:4<5>6@7B8D;H<J=L9N:PAR>h?j@lBnFpICDEGHJrSPECTTEST1 08-25-04SPECTTEST1A-'A-20040825 ufs048p01CE CIRCULAR ECT9 F@y9#q#k#kufsNMTest Lab17:06:55DP00PROJECTIONCEP`?Singleatlas-97001HEPH1.2Tc-99mTc-99m 0SUPINEH?A ?Hu0"+NhNNODEpc_atlas1DOSE1.553000 0.000000HEAD head1HADS head1CALB0.593310 <65.2.840.10008.20.4.56.112.48.49.524320.10342861.526813.461 @65.2.840.10008.20.4.56.112.48.49.48.48.524320.10342861.526813.46 CE CIRCULAR ECT  0 1 (( MONOCHROME2 (4 ( TT TPT(((03.251014\3.251014 (Q UNIF\LIN\COR((((((L(( L222p@@@@@B@C@D20040825@E170655@P20040825@Q171020@R @T@U@0 TTT0(T T122 T149 TD<T4,C-163A8 99SDM Tc-99mT T!T"E0 G RECTANGLE HEPHPARA 20.000000\0.000000\0.000000 761.000000\0.000000\0.000000\0.000000\0.000000\-1.000000(11.460000\1.460000 (20\0 TPTQTRTL@CWC360 D 90.000000 B30000 TST180 TTSTEP AND SH0OTT PROJECTIONTzF-10450 99SDM  RECUMBENT TB:F-10340 99SDM Supine body positionT6.G-519099SDM  Headfirst BJW2E9=2 8 _ *  @F F" #"H]EL]d^L"T  2{! #libvips-8.9.1/test/test-suite/images/favicon.ico000066400000000000000000000163561361153320700216700ustar00rootroot00000000000000h6 00F( |VrW&[w].IJfZ:vMW7v[+X7^>Z:_]>ʿy_/olPrV%ZY9nRbuZ*sX']=x^/˻¶x^.Z;aC [;bC vOX8Y8cE77$  $$  $""-1 ## -;&=33=&; 9.>>*'9 $+)0 ! $$82<%(6/28$,5-4::::::77( @[<zRlPW7X7]>Z:bD kNf9e\<zSpT"dFlA°aB [̽rI|Vz`2cijnR bDj?x^0rJX8Y8aC Z;[;cE˻`A YxqG\=pU#y_0bC v[+irW&ƻ[;{a3yRlO`A tY)W6yY9òwPZ9j=============<<=============================FFFTTFFF===9%g+CC+g%9== ZZZ& ff &ZZZ ==:,jZZZS##SZZZj,:==hDZ80Z$::$Z0"ZDh==fZZZI IZ ?ZZf=<f>'ZZ4Z\JJ\ZYalZ'>f<9U\Z/eZZNNZZ2)1Z\U9mZZ6BMZZ3*ZZm<PZZf^ZZn5(ZZP<=f[ZZ`]@ZZZZd-`kZ[f==7SZ\U99VZZZZ!f9LcZS7==9HZZf#SZZbWiKXZZH9==i; ZZRfQ30 :f_ZZ ;i==AEOfF.fGEA==:f============================<<=============(0` Z:klPmP·̼^?Ǽ]cEpF±gJZ:bD uZ*j˻poEfIgItKY9kNZ9~d7˼zT]>i=bC x^/kN~d8lyR\=]=oS!~XaB sX'fHsJjM[<msesKV5X8{b4Y8|b4xQ\<ĹŹ}W_A tɾzv\,iLza2[;ĸrrqV$`A sW'u[*dFdȸ[;~f9f9ĸ;|V\v[+°bU4W7X7vNhxxh*aaaaa**aaaaa*NJ,,JN3zttt-**-tttz3cBUrrrrrV**Vrrrrr Bce6rrrrr=/rrrrrFe*rrrrrrr|{rrrrrrr** rrrrrrrrrrrrrr *ab)rrr$Grr~cc~rr8Xrr)barrri`rr"DD"rr.Grrrx@ rrrS?IrrrKKrrr'trrr @x*rrruZrrr(&%]rrrJprrr*\}rrrj* rr2442rrrrrr}\cyrrrrR^rrrqqrrr;d rrrc,7CrrrfErrrrrrpsrrrC7,xa:_rrrM&*aOrrrrrr**5rrr_:axrrrwxL}rrrrrr"k*rrrQrrrY[*rrrrrrWa!rrrQ*NPrrrvaAorrrrrrlaH9rrrgN*#rrrI*rrrrrra0rrr#arrrrfrrrr arrrra,Errr *Jrrrr<*nrrrE,,7T||>+*m||m1@*||T7,*a*hxxhlibvips-8.9.1/test/test-suite/images/invisible.ico000066400000000000000000000003061361153320700222130ustar00rootroot00000000000000( libvips-8.9.1/test/test-suite/images/logo.svg000066400000000000000000000111341361153320700212150ustar00rootroot00000000000000 image/svg+xml libvips-8.9.1/test/test-suite/images/logo.svg.gz000066400000000000000000000044301361153320700216350ustar00rootroot00000000000000J]logo.svgzKo[e./$ dM2A IP!Җ=>C8m̮:u?} _6a0 ?>j`~q=ڜi/ER?K_^sxO=|ƈU|^ݽ?}]گ}W&wz_nw) .ݞvǦx8qvr%m޼?£U:<}}*X_f]X)l*?"iJaKF`?l%;u}q0fr5Xv'>7yv|` (Ʌ:Rip~21FT"l Ҡ1:pg,f y'_RHRaqι00l|B lS8 0S 5f3ƻrY\1渙]I2* \jmO߯壝)->YکR2kvPzm-H1%5QqLw.]z\% .RE` )+V5D6bn4Q!+Mڵ5<\BWkl6a}xr ^AC*]E&uy{(eIU8Sye`MNV rɽ!UfVGHW1tmig)q^nM&'Eo;$Ӥ 8hPMmB т0i~Ը\ptCM܎*DjI{Qϼ1^#rHYatpE qnPn0׺[ע:Ƥ#xC8m̮:u?} _6a0 ?>j`~q=ڜi/ER?K_^sxO=|ƈU|^ݽ?}]گ}W&wz_nw) .ݞvǦx8qvr%m޼?£U:<}}*X_f]X)l*?"iJaKF`?l%;u}q0fr5Xv'>7yv|` (Ʌ:Rip~21FT"l Ҡ1:pg,f y'_RHRaqι00l|B lS8 0S 5f3ƻrY\1渙]I2* \jmO߯壝)->YکR2kvPzm-H1%5QqLw.]z\% .RE` )+V5D6bn4Q!+Mڵ5<\BWkl6a}xr ^AC*]E&uy{(eIU8Sye`MNV rɽ!UfVGHW1tmig)q^nM&'Eo;$Ӥ 8hPMmB т0i~Ը\ptCM܎*DjI{Qϼ1^#rHYatpE qnPn0׺[ע:Ƥ#x>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````?%%(m+ +(1+SIImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1+/,.0T2 35y708: ?AzC1DFHVJ KM{O2PRTWVWY|[3\^`Xbce}g4hjlYnoq~s5tvxZz{}6[7\8]9^:_;`Ņ<ʪaц=֫b݇>c?d@eAf   BgC h"#%'D(*,i. /13E468j:!;=?F@BDkF"GOME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````?JVJM1OO(1OSnTImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1OQSaUVXZ=[]_babdf>gikcmnpr?suwdyz|~@eAfBgChDi Ej!ďFɴk"АGյl#ܑHm$In%Jo&Kp '  Lq(Mr!)"$&N()+s-*.02O457t9+:<>P@ACuE,FHJQLMOvQ-RTVRX Y[w].^`bSd egxi/jlOME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444445555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````?ooYqtt(1tSImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1tvnx%y{}Jo&Kp'Lq(Mr)Ns*Ot+ÙPȾu,ϚQԿv-ۛR w.S x/T y0U z1   V {2W| 3!#%X'(*},4-/1Y346~859;=Z?@BD6EGI[KLNP7QSU\WXZ\8]_a]cdfh9ikm^oprt:uwy_{|~;`<aOME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````?U](1eSImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1{2W|3X}4Y~5£Z6Τ[Հ7ڥ\8]9^:_;  `<a= "$b&')+>,.0c2357?8:?AC@DFHeJKMOAPRTfVWY[B\^`gbcegChjlhnoqsDtvxiz {}Ej!Fk"Gl#Hm$In%OME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````?}!(1)SܠImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1?dȉ@ͮeԊAٯfBgChDi E  j !Fk"G!#l%#&(*H+-/m1$246I89;n=%>@BJDEGoI&JLNKPQSpU'VXZL\]_qa(bdfMhikrm)nprNtuwsy*z|~Ot+Pu,Qv-R w.S x/T y0ĞU z1ПV {2OME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````?fݥA(1SdImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1q(Mr)Ns*O t + Pu,Q "v$-%')R+ ,.w0.135S7 8:xc?OME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````?*i(1S &(ImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1 ~ 5 Z6[!#7$&(\*+-/8024]679;9<>@^BCEG:HJL_NOQS;TVX`Z[]_<`bdafgik=lnpbrsuw>xz|c~?d@eAfBgChD²i ɎEγj!ՏFڴk"Gl#Hm$I n %   J  o &   K   p '   L ! " $qOME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444445555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````? & '- ) ,e ,m(1 ,uS JImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1 , .B / 1 3g 5 6 8 :C ; = ?h A B D FD G I Ki M N P RE S U Wj Y! Z \ ^F _ a ck e" f h jG k m ol q# r t vH w y {m }$ ~ I n % J  o & K  p ' L  q ( M  r ) N  s * Ș O  ͽ t + ԙ P  پ u , Q  v - R w . S x /   T  y 0   U   z 1   V ! #{ %2 & ( *W , - /| 13 2 4 6X 8 9 ;} =4 > @ BY D E G~ I5OME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````? K K N Q) Q1(1 Q9S oImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1 QO S T Vt X+ Y [ ]P _ ` bu d, e g iQ k l nv p- q s uR w x zw |. }  S x / T y 0 U z 1 V { 2 W  | 3 X  } 4 Ǣ Y  ~ 5 ӣ Z   6 ߤ [  7 \  8 ]  9   ^   :  _    ;   `  " $< % ' )a + , . 0= 1 3 5b 7 8 : <> = ? Ac C D F H? I K Md O P R T@ U W Ye [ \ ^ `A a c ef g h j lB mOME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````? pv p sQ u u(1 uS tImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1 v w y {8 | ~ ]  9 ^  : _  ; `  < a  = b  > Ƭ c  ͈ ? ҭ d  ى @ ޮ e  A f  B g  C  h   D  i    E   j !  ! #F $ & (k *" + - /G 0 2 4l 6# 7 9 ;H < > @m B$ C E GI I J Ln N% O Q SJ U V Xo Z& [ ] _K a b dp f' g i kL m n pq r( s u wM y z |r ~)  N  s * O  OME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````? : y   (1 S 8ImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1 E j ! F k " G l # H Ŷ m $ ̒ I ѷ n % ؓ J  ݸ o & K  p ' L  q ( M   r )   N  s *   O   t +  "P $ % 'u ), * , .Q 0 1 3v 5- 6 8 :R < = ?w A. B D FS H I Kx M/ N P RT T U Wy Y0 Z \ ^U ` a cz e1 f h jV l m o{ q2 r t vW x y {| }3 ~ X  } 4 Y  ~ 5 Z   6 [  7 \  OME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````?  =  u }(1 SImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1 R w . ˜ S x / ם T y 0 U z 1 V { 2 W |3 X  }4Y~5!Z#$&(6)+-[/0247579\;<>@8ACE]GHJL9MOQ^STVX:Y[]__`bd;egi`klnp<qsuawxz|=}b>c?d@eAfBgŒCDZh΍DӲi ڎEOME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444445555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````?9A(1ISImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1_;`<a=b   >c? d"#%'@(*,e./13A468f:;=?B@BDgFGIKCLNPhRSUWDXZ\i^ _acEdfhjj!kmoFprtkv"wy{G|~l#Hm$In%Jo&Kp'Lq(Mƻr)͗NҼs*٘O޽t+Pu,Qv-R OME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````?a (1 SImageJ= hyperstack=true images=15 channels=3 slices=5 frames=1 #  Hm$In!%"$&J()+o-&.02K457p9':<>L@ACqE(FHJMLMOrQ)RTVNXY[s]*^`bOdegti+jlnPpqsuu,vxzQ|}v-R w.S x/T y0U z1V {2W|3̡X}4آY~5Z6[7\8 ]  9^: "_$%OME Bio-Formats 5.2.2  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#######################################################################################################################################################################################################################################################################################################################################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991urn:uuid:bc26e771-02ad-4473-9f75-ae454861b991libvips-8.9.1/test/test-suite/images/sRGB.icm000066400000000000000000000154121361153320700210260ustar00rootroot00000000000000 lcms0mntrRGB XYZ  acspMSFTlcms-lcms dmndjdeschdmddhwtptPrXYZdbXYZxgXYZrTRC gTRC  bTRC chrm$cprt!desclcms generated descsRGBdescsRGBXYZ =XYZ o8XYZ $XYZ bcurv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Kmcurv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Kmcurv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmchrmT{L&f\textno copyright, use freely libvips-8.9.1/test/test-suite/images/sample.exr000066400000000000000000013433121361153320700215440ustar00rootroot00000000000000v/1channelschlist9BYRYYcompressioncompressiondataWindowbox2iadisplayWindowbox2ialineOrderlineOrderownerstring'Copyright 2006 Industrial Light & MagicpixelAspectRatiofloat?screenWindowCenterv2fscreenWindowWidthfloat?st]|C0*~kqh[z{AEQFaqq  $I$I$I((,,( ,,0 4 4 4 0M4Ӎ4<4Í04M8@<ӏ<< <8<<<4 ?<<{<< E73'Y?wY~"twnnJENܼm8~QIMc}9N޿:ᙽ}̆!+w }5{J}3 ކg¿vv߿s7!5?g;o=_{u]/}o}SߙGw773;~[ۘsw-6C!mwgns >ѽSd{/!ͷ}9/kWa=~;)wg/KnݾuϽ)wWm{ߒamUz]w~-̵`9}7'l[/_?{a{nb<{!do~WM$u@O VvVu>oI^|?ߝw-{3 /msڃtރykR^}(-.oV=~g|~of?r~۾y.߹ݿ}YwRzoᙐ_?.d]4$ [h_x ֛kڱ ek^ҵVzfz=~fۭ O;ߝ/}=;o{ڿݚ??//v}̒0 ܆?>oO~; ڦ6h ` / G`﹗䯫S;뿮9vulw|l^y{5{/|%e~PkW 73o?|6xVw_t~ݬvk헯Gk~A8jjS[שZ]u!8?{u5*\{^l߇=~_#=ܧQARvfmݎB{ t*e~[n^׳iዻgu?s-_~e7_k -~zr^ ́) B(@*3w׾Ϗ߻q}Wڷ蜱:].Es|yv C'dC-gf導}=G;B}3ߚo=wv'_+P+@ }|yA=τ>V;~}|_kc/t϶o۲7^/~W#e*aMf~?G} CЋ{m;}tߏB_lwji֝݋5~fw^ݺg =*i?~>[廯#˾7߶зv{;?cm/k׿My~7ou>~3rεq][˟BAȂ{wW~|Yy ^cۗ||2߻-{ +kvY9nڶg}ᴗVkkel ՛}V~nc<{s'[(KozzYOa{z{/|/r]L\ ~w3r̎ßȿ!|Z}_{n[q{;:CwφM_3sv/h7afg|}C_omμ-ߟ>, P A\$Zڏ_H߲[^rP]~߷cW}l)Ϟf?ݹ.|ގ;]|6)AtVgee h>YJFܽsz΃;/|jjfmoχvs7k]w[N%p&sf;'7?+2>?>>05gx?ǿ7n>/N>8x=h>ϋߜB{xgoeߙ_~_w[) Ya<0@ ˁy:̠8HJds`~*|&=PJ /MP1=[+J{Oz^?2*cO QnʇQ::$ s]PnVbt>Oc1Dݠ%dmPCUfLx>)t>@yurp1T$șpU9TVrBjQxikLOok'3d+W)ckUM^ ~W;ŌRJ@R;ij E*0C١,0CJW /Woe6̦c]߿/uj_ۭ@vN o3v݌:]%.Saѩz̨7y3X DfRU]uy˪eD$i"6B)\suEL6qMK<_ȝSS? ]c/f5W1H#'ԉ\]N*UF j#@`@&u#|3Yn*h2NeS3{ó +΅ZYxru:ǒ(HdVI)S}jRK~p t#@QAAD]-7(ayMuIȹb*H9,3v`LuKfUAX26<(얔/ )F{"iy%(.j4 0`-'%{W7X0 m9v}u 욇.KL8:C2ւ- ĺ= -1-BG&ͥQ@Iݦ(/]AZ!V?6VY(Eumkv%vM><ҭ=ڡ.|\;FQrY1ȊK[fWKHfà ")dC)~qjFB E Ahgc0$A@"V` F ڛ1% vJQ1^y keɊ>W 6%y@3pTHPkL5al ,*x P p`3 ʡg>-1.2EI$m+l*a?e.acw.?+ mkZGWKGgbu^FZ1(8K 5 qpUPM3Y,,)^TL E@(1a$0cγe]0{VZmzXSS18U ` !3RZ1a,K3 Qp'Gf*tYsNݞ9G-&%waM m8XFl+k߮>Ib(WK7-BR[H\C rk-,k*|aDCPcx xX#J,GC!(Jl ):EMmPN8JH^+v"I ;P$x'0@n H,`CW"p BO+ܘ0Qx#H2fpE s!5:CLF϶Pdd/+I\17 E&O6QVtwckf ?J1m\O%?r󔐗1W BJt ջtȠxb:8*"Rt$L5yd  ޗYCQK &S#@)dR! ZkCB"0@1B8Gt7 BT8 Wr%@D0̠gM͹h9FsV0`B |"2oX^麹.T3rNdgvM]:Ѧsr9)6;* wl?!Ba>X;KVq{7hQ`Zr _i=^k٥UĶ1\Ax@Z,oa>I!T0p Ip"H@2(dl7xy-A X<!laPX( -2MHq\.]0.$8 @P*E<6> ̕K72dd AnA(3NRO 'HS)|-lx G3+FW>vzq0o1iUq$aV\錘,B==G 0XvMw:ᐭH2:4p 1$ 򄲨TWެ ,A ΁2`̻*]UlL HP@I?O'Er~ IY0s-k^(9b@DA2M"9@Aha6t1BEy`r0xi5WKs(c Fe'{Z(BSᑆw?q5":VT# 6Y3/8>%BvJu˻5ŨT<̀*+ PA*Yy麦l`4 [*c',TUH#J5mAI!j% n' YgR}@., }a &sDtC`lp4 7(Y-?j)>pyKW ]21A^ڏ+} %9̞?ڣۓݩd`/EG~hѩp=@b^V*3ud{_5>A KD" 4N lS.KX?C^Lw\:j6"h/ cKmb*& t+B$ "p!`zgO/.U@zHTB*i\]xqUP5zo/{ XfNdzC7CF+i?<~ӥ)(&|h? L(|^\JJ[>PR it4Vf=4 &ͩV\!'҄N24\ ϶z%k #(Lj< Z~o6KW p dwG&)hh:6A8.mVm3(Bzwu[;d1ͦ?bO`M/__$wl;eVRL$$Uޮx,+;{~ߺXJSB,N,8D?ŀp#6) <aG>—1r6AoZt@Jw) `$ 8vbk:'F5gUNx . D us Pm>ݛj j'%  R{`{m(e.IJo;C2m!=Nźzìߝ]V\&f/)R;U/ Q\%W "sWwq)y^x'hx M&<+Go ;v *yfPHdmu뫔P8C'^pm(>0% cKF)]&7hGܦm'h[7\V9a۔U__}/\| __n̥ƤD@+ڇJGޓ#90\GN)[v[-*iTb~Vf@%;L<)XX"`b b40l=!BH,*XY&`]ly$xA$ > ǺAX zNa8tRTX VaGhp#sg:US/ƒhCVr5 2J0f glA’ńPkA5<2#G#T5uۉpJ/KDE2&>wVqYuSp>nEb^ewX*Dή]ru )l\pO)iOUmW$$A0JBpAPYD QLG H '/JQ2jMu"l3.Aq6 :b& $>WC*&4ewQBP 3FQMso;(vwWT}0ԩp˩zy$FW*QN\ҕnֳv̺upM2tC'gJN k쬾H(y7zn7ns1c^b#m?\-tmo_{}\ծD1L\B);lYvϝ׺L4MsBs*NS9dҝwMIrG֕rbFDKع|Y>$OHSv,$=N5$Fƹз[lA]H7n=VG,n+iN<^ӒΨ΄Ʌ0%R&su\"I :LSp.' CɇTm,HɆDẋEL3gP" y;nu)27 (&;1VKȰ6pprnfʄ K1ŪZ}S4+%+h#6~t TlGFT6qJϚ!7x9SWj\QtNN=ͬ eI<#$EG *`d8.PQD"``x7bэu: 6~NVC(G e&aG8M78.sW%{ y+8g"$F3BAo#L?ңV QFhVT:8ZccH1j 2o. M)HZcɵOb.^FLj)YfKh67=Lbd-ՏW2 ȖM&&)*e >=>ҔȔ;7U D. #`$ @3o]ό6(Iwg$m,IL#H\2,mLi:DX!d׉wI9˒sOL4#dr&4w֢Q4D:D.ְIF$]xN}m{*):iM`R}U}=pNVV{ q]E6%iblmaW,W$t&Uyߛ)2V]vLJjJC[Z\z6r PF>hD<,awGu y?bVyRZfM;vvP},D(8Civ\XzLzZ) q1zFЕd M,I6,DX\Q&W ᲠdH[G`j.NUb7EJ 6MUv)@ezhR` ȩ҃t ]uv86`p pb`: |,Yh=J)J8T/`9s(|3ITJ#,lfWrI^xԲ2>NeD/A2m'D r$:2t`.TT)UYMYs~qLXP2dE~V,˙OfTCtoCv{ĕeb eR\p՟%u9W_rzup >a S{?g'],q\4*#r]O,w!.T鰛<7T=3?a'w;Q;-/&u,Os?c&=R[1ET=dl4E7:rroƦlWyH[`ĩ;1΂]R[!//Ű Ψƻ/*uxqo&:ՙ;6u,hψELkQ$e(0W7e8|^FUkf(q>ծv L89K˦ FFdG$!ьBKY B2!ОU'@""u1yt&O 1j=&Q p;EɧO6V >tse$ 9;Zv`m2_qIrqdh`3ꅾ6݇:>j!lRUϝp+mRrR1jij'X5@66mɪ ^D3Qǫxӫ] ,ٚwVوBB ʠ d'LFj >^&.J %\%ņjJD!ݡ>AƷyvLo]QܻF9AnPm0`ɇ >UYZ]@/m$#PQn*}.732@<}mg.weBa9/`1ꏋpm$LB+SC@EiV&ABTG=a%DDfId2ٔuf ߭A#z($e;..uI'k$TMb7Vn$:O#tҎ*yK.59"}H4Hpz&ޭ4e"%qbխuSd;UNEu1>en?ѯK7VG)NM×6[b"QhTQٺFDv!E9 wU#ETWTQKkQ1Q0ެ$K &:cVgFq ɹY)khw"#vw/C˘jbvR25%/,'CX)T2jY ܁'> #,9%%Q z))"UsM;rYp*BT2.U&iR8W${ ,93`XY@ bLjI 6(i⠦4#K,0(\ t!6lx;l?# NP>'d军:ap'dasPx29Z1c?ANht*8Ӣ'٣5ăib]zPV Y4$`,C |&>4 Yd|LP`F@1qefϱlę9$d1Hp`voH7^x\:pD($p2ld<ϐB0j#! %q hWSE6ob`)0Ou+%S<`J\czbl&plL\&J6.O`PƇOu\:A>g0ەX純]- (#8V A `:@'Öd2YT™s@8Z b@|Q]*RI!#I  wB& 8"$E8%Rϳȋ:׿g`,$KHuٜg#i^Zs="wzm{ d'WhrGr:ͪ=E(4MuyfjCEIks)QqJ_7pg[r%wYRL8WDDt84+LUq)s^R˻#2j> }}պﴷykqvdGv׭;ǟt>Ʌ`_@phؼrµR;JG!Qnk=2}8~G6Ѫˉk-H*#/XŢ {~VlS%Ѵp=&MkhawPr|(Y pSp5SMFŨ=Q5Ck;e'#q%.e0iF'pĮ* Bc"p cU"fhD(4.9y@2qFxEfP Ȅb Lx.N(Y&[T nEȖ84-%IN#[=-@33E1E;XD^UűOWY쇸?!WFr]C>S\ޚ>\rI:(dB,HeaP5'ƂEb  C #sGZ8?M+>kvR#Dmp%Qw]2V&h6ia`zB@X YC-5 ~"Cن?zmɱ%]ቘ(B҄=} C!c#x"`MAk&TV,V\8],[*:VGV%6gSl ]ΜZ2; FFOQYXFqrsmOJz/-نP/ \Pd4(o!3A>Pd{a,P=l ^>~'@J`X#ܣjBs]Kf9ϕ]3?qfFtҏM8azfGf ]fղP|Ŷ(e2^mi*V,OrRgݽjl$*R̰/+($H)27q#fG4YnuI{N|KcXn62u9F3_VQR.5e"rbbES66벦kOCߑuiqnFqU'vmډPD]XLg%YD2`$B%FQ%̰l[]z7U]6-XŠo ж,r+&Er @C]Cxb6**HXN@/7s7uPp:1yo Ãah<0] h&@ P/@8 tqIHyJZTl"/ j xABl6}μOOD38XLa8!a$}Рadr̾"#C 'hUD>KhMZ:`6f$hBC8~h$6<0!F*hL56@t%f4Z ȹ9[C,`N@GCCfs9dn-"<8)0Q 2J|! ӷKʏ2*]hFmc~D5n\H#cf 5BĢ:B q1bUy.re vk>X*`Z@[[9ZL Ɏi V.sE_VU]xv%53'yPQj뚓\wf}j*W{ԏ'Ŧꙏv8O.oMO?=$rJ:ږ8Cⷙ*p M\ZU?\n+ӴH8PU#~J tm^W 2)DDT__PٳACKSl(F/fXl0""Xd*NzD 1} D!0@؃54'YBtA* 6NBsPQS6;$4m~o Ɋ \brw֩^čIDR)d۷(zfzׁaĵ,V7AamTPP_sFd40рID&dcheD$hPx0Ti)l.k͒.υpQʋ9hMD3Y0Ry:$~ՂDD㻊^c" Fy0#Alq.#Q <0ShPD&0.~&?4&B`B8b$2)&ޡ:dx:ϱURa 2Sɢ=Z.L/,Ͻ峤=gX?+E9׽mj(^MGTFR?sJGS`z\`H%؅16R1ץYbG,$K8@* ]e.^!Ok!o !4eǟ|)·=A/*'Ȑ# 8%}ߐ+}ߤX咧'컟+FЅaogҪIK/4MU^ޓXq$,.hV3ݷ>ܾػ'QGWUksOH,Ѡk(82Mw (UO"DSy&"{oA :ZuII ky[#. \KXg1@j[lZTWnZP8LPk'(  (\m٦uaPnk".@FWay1m+sr<͉ ,S55H21dhC& PP^hPWVzI61#6`#,9T߆8w;MRv1WtCM $햑Qzv2P=Ğ1..JQ1BhB’^ۗl=x4Yܳj5OY݆Th,ol7ET@YbQW3Fk:h\S,/:"C; Tŕ6\݆ɔI@N/'(*JYɡ H6HL6;aadU], ~}>ՁVLP8dj WlMrUNeda4sejx|S +z֌2;$&"cPu,뮿y SY"mVs;_G%{=&mRˈE&gKȴo/ݲϿ7@\5L1ya(\weői'6Un]|adTcxėq$z)j,rPy7bRr**e w&$L ^DH~l\mfVT?[/lC$^UV|v˸n9Z [n/hXvZٰw1kFJlտ[b⏆ӗي/R$xŲpm&1SʼnCL ,XV` T\g1g,j㈞_+.YD+ Q]$Y."JY+= iY |CTt=BHCԂ eaʪ&U B  aZdcD07_'(@$FpeXJGA, T'0Z A%?#*3|QM $2D" nVƋ.bTs܋L9gd(ҫ'8ʙ[tR. &VV uEb`c ~vJU LXm+hy dCERybg(aL[?hIߋH.i Hm'^(DV'+TDq카‘a|EFn%J#,yz@dJn|=7^i,i*N[IJK&5hHBh^"4a6K;NF'V x \&Њ:--Qn]G2:EuG嘂C8Sn .\9r*5~aEM\dT*=3!Ec u3C>i>:5)ýF8ܤ¾ר&(,a2^?@=wTY Jc!" ` ` Iޖ)5w!X2*̅Qi8[qJ"J @Z?"eu[Ep#RvN#D2M# nɯG4gf2\8&6f4 lW6 qC܋ Iv߅z-rrþA~7(~[~?q蝌狺b& g|Sdny} Xkzh79ߚlqVPz/7ú^jvރzvOwMvčbgPS+]\%U2lƑ]!G{E{})8ޛ)ۚ}reaނۯP;|Jz9-ܻOF؆ݾ}d5=~k q gnԾls̛f tӓo[' .JqwaΩB · 9O=[xuC3>봿6+Y3wiYNr?vzYG.WG#,^Ie1^n`pTdFqUXs-S4wr6X&[J sPph}GݗAΗ^薦`DXPfKqx<*&@tS+D`f.tqpF|\xS)+TRvk J WDN-$eVр RKhVtU $.uB& 'xbU%0V=D/B }"**6 6"xleP fTʡ l-4Xx%#@R LKs!){>*՝ px䩉B]4Dr2`ܻ™OWSY1f&(MEIGfä@Uj! *LKs^e3VܺWI* H$0\/Pjap . ƒ`YEa!>*2 Ác"@J-g5]0#tD\"X|-BHjJƀ.}} #SR[E~@駦0Pt!k>Ѯ+ M\\ @#7}&%7e׸:KM7d >Є[jA§7OxDZ%8T;;{0HYS))ӖX/qbQl@2 ,Z^d,M)5QH(t6;optH| A70aV^0Աd<[z 9JQڻ@f#,ץ%'\?Dx}R$nW<>\ӄ|-^9f>Kl+税hk؂ Y3G豝jԫԎ[=hZ|{6fIAm&9Qg6pp*=<$ZiN&omW*%yYxJvK"UQ(LFkƮ1>}6|( D @69Nn@ęu `.$5׺³R*# }q 4>GHMS*MEKf75 d%@^* 40 A8 pq"c(#)*ǖPa .1dF% @XL4dq:hB"?3*L L3~(̋ZvC*En(6y9RM$0}HX(uQdW$s8CPlh$*B1#NZϟ_#4Fsf;swLJSY:IY4߫la)L`pjI67JuJQ4 [6i"TMg䍦Uک[ÐVN|i#55(hy0 dZl8&. ~0PSKF,DAubO$HD=OR&z'^#h%,.ɮb*F$6070@P2Sd,P7I7uҝF*D Wҵ+F:^"lFpGͪmءz)ge~Ϋ?uqYU~ϧ%i>Z_ X y4zH9̃OrA%'nk hGg=!b%9̦b ]YvBhІz D7j/n/Lxsyd?#bׄP%,3=.$y硲 [i^ǻQ?POl`L-QdLچiؼIR1c1>3!BUNbZ`HHo:n$ [@:4*\?+ ˎlRZ2Q @N5JԣH1iٸ3$6(]m u-3gp-)2UcPg |Ezo]6 C&"(\@3Q7MN-.dp|վk$HL Dd!00!9!z &0LTy @M4DfAԬ,F͇7iU^Gtぐ?O 2 UcRuqmVa2Q/k"FQWj.1W4%BqoFhPBUyo-bǜ#6kee5-/ ﷸ/ktoH*-ڜyo[=Ά;)[?ͮU'Oߙ䇊Mhy"D͊,$87iTPBGfK029"jIKIyGⱱ. L@s.9#M'J)KB/5\Zcƚ~+u1g=] eq^GHCғ+S .bAeXy [Sc0bdѰbIG,<5rlLiиH1`@cGAL=LPT+eWZW*&ՙ?"}ɐȝWM]( JT?i_\"6\Œ*$SZ/YM_x In [caAĥBl2FV),?y&E%(!b4ԉSe7a4iUpp k.á%d(_'{ l⮎nTjQ:Y7 i-)Ӎ5[4$l0s`hf"풽%s t 8 E<(y5#VR}H/wz0dkȑ).b[)N|pΆ)UX7VeݲY3ފK%0awX+wTxs?f&{?-&ee EK=R2ݽR thAM9iRTR}7n͋bY^Ē_u#8^2t쾽7OKleeY$ DZL|j#Z/'I|ҪQ H={f^JR nGW/Ur6Q#6sH>dFDI1Ť雏4?ffQ1 s\hAEQaqq  I$I$J(((,,K,, , 80 0L04 84݅|v6]_>s#Х2QyiKkm͔w#%Tܣի(^[ 9l̆b_kާQC~]RU竽6mXow÷i 5|̕M?L#!/21ǡ/S3w[+[svl2C#s_(u[)[>?ËAgـqGoKzV3zvξw~> Zs?s>/>0~ZTe[au:߆l;ZдovF̿v+jeݶ{;#t69/7c~_ nnf[oۻ?_oh1ֺw|-tᛟ_69߻!B1խo~n!Fj]e9\+d?#mV߆ujMu*aGshO}dzrkCcM/)Yy/;O̅?BCюC/mscC?/UR5r{"߷U ݎe6;ߕ헞 ߆9XDz?w'ia߄|23?z~[)+X#Z6.Y+ l~vv_3w37sw%eyMK/{[fǿzQ{?2vCy?kkOC6Ꞧ~- a(OwJp^KF=_cYv_2w߲uz#ųvkٰ[[Z~QfnϔaXýovQy;-d~73i fd68=Ժj>!vA]߿Wv/h*e{CrǮҭNJD݆fN߭7coJ>ogB}gn3s{GzY 糆n/ڴ:9WVoЬ?3B]G;/ g ' f-O2LNbA' 쌧{g) [vQϜ?X;HZ?z5%_Vٗ_i+wwr{ mW|#TWٿOs;: R~vlBZF^ߟv?c})kw~nG#ЌrY,\eVŠfq 7|gvφCcތ: ! Cs/o{S:VR d7c%mx>NG:W#,j1Y%}V2|!~3v[r#FJ}.+u־AC|}je*VzT.z7Fp/l'wYB_oUI=u#.Ux9Kߵ ;e~^mdeuKzHvgYZWv3ޏ+~[O}ކ93>ng%oؒp8xlȚ8C:{!32?!]B^1!ۙ{Gco B[ vC>+ַg~C+i>w732Ճ]}X_ﴥti}[{^VW+-Ids ܄/8?7߇ʹ _ewʰw!ʠGц1X[ ٙ^Pwǿv_=B rVk!O,=/z#Wmӌ-r8븣Bj)l??ۼ 9ٿZH^v0d?7q3 A;ԋ9φr9?/מ^ytr97:C!p=O~k.V Faݞm'|ΎnCs~?)SԶoC6{Ѷwayduwv;;7`Gajxfw>X ,m`69r)Q}Y$*HJ{ ܙ2BBs5߀@ ` ppc@ .^m%e_dN+ūx]rBLQos@%PG`#k`zgO-*l!VzW6fSZxL=on\egMJ[c1& U4~y|o oYks"`-L>#շ*0u #/-g][0}Oszv,lX ?c󀁀 dP6 a۾oC-pp( Gtݤ ݂=}A~ b~idz;Me2mp2Еk2/WhMuڊ%hzw>B^Z7Ӧ--TvFkuGno*, #(VyoBںie<\h״iGDA B` tb*j??Uv>ү}/H'V1 "*w{`f'Ax1a2X-_e_cyWeZl!1[~ ŷ>'k)՜H0YU ުXC#{oqyxYI X( rsj1+Bpb[> V[hRJc;y/OA';!P\.x% k)wS mE,Rl@~c+HShۣ]cH~ݙJR 1 yYoUXW&;ofgIKPixv`eL՘SCqЧ*J)vq.{^k>3?hH/  2Ap P/9d ~px+W_PR,>az^U۪ #@H5L{ 3z[&+qއϺOJ p>1+ƪ;4(`Ww&K끦,*{):$%^y`>P MqT+ C;|=ɠ;@4n:h˯2Q[O-|K䃑KʗRkwO+r1y޵{tiE?56|͏=G>] (̒` p7nWй.oVeBKBш0 @uiǣ7]$pFڃ0  wp /a4; 8Dk l[?9|,kQygp:NxD;_4ѺNOJ[m ܨB?/c^3Czux斬.]UV"tzgjC72~Ĕ#>,w5܈)`JoDMGpFD믠 - ԬbqI?z2w3T\t AktPi! 4@E-fI(H6Ĥ/$z JDW(Fn Ug϶=Ec@𚩅D bDG.pP! $UbdLC 𭢲5Us Tu%-g܉,a%98gQgUi> hr0"$= @][X`,E@F| EsIuܻ۰)A5=YOwcEy=P5lYS&oT4UɰzTp$HNX/0uCvJvi*}^'TDC Iuo5V&q>20edT01h8*p 9$kfO*x6Ntth#8PgT 0, BƤ !JBX])vaIxbА;- C)N[5 YVLSss̮   (@, ]&w+y;Z^mO-m \dzd3?0͘`Ǫbd,tQ"t+),\cJ3&'_b{WjBMdl*չ7eX:jMKXoX^`TҾ 'f׻WbtUW+~/V54a<|~ui 't(?Afp:n v,ۮbfiKvxֱEճ#ƿ~Ous(uVJ3^:_%uڅm?ҒNV<,v{O#г?{W2=Pc{U%&M]lqT/:Zjpֳkb\u^ε8Hq6i覊h~/k[8n%~N(fj%עԡ¢C)@wqJ,iq M$t'ď4Xn1> 肕Ni9%}y #Xyy*_&ȃlSQDۯ1 }d-h 0X8NLiEbںV\"o6jPFtT$}¿nIlP,n,ZYB( uqODV .!(9tz 徆uScfQ̼MךQjJ ܕ"L0XIC,t2Uen˻spiX:3&TӚy]Xq:2¶GGLFQ2`nTBLv%i"iE'B\iM"toDaPx7p^j-Lz|mZn((Nhz, nAUg+2)/%}ԨyZ&-\;WtesO(E盋t{AH3S A$T@NDB K,g0aB0`~s!Y+>Hs0CEd2.YkU^.X3'Y7I"ĩJDcqV/CM]I,;Iyݷ퍺~$\MS } b鴺^T8-ϝZ)җ5 'LQ)6Qrאj26S,.…O, PN.uW.B|Y9H%B `idV._Y{~LkCՉ2CG8;((s6 ӻ-Ŭny˿͋}4Գ”d"C-̽Y"qXHd>J94٦\hO>Abl{077&Tuiv{갟—Z;"i52Xa@%9#U;>Z}w 5F3L(@ XT( )iq@%/c"qhߎ\ܤ*>|6\GB'G")k2olVDCTH8paLvKNR7h#Z97bvFLU1NHD>&I Se{I,q6A07:8>F*NDm/l%wL(N1/[قdxAt6\8mz9l)sdA.$D@" EFdP~ Zbnɞsw[JfM8~OW)SUUM,QAXjן)LՅ]3)ӪKJ@q%Y ֿˊ3DԛP\FlBFЌkjTdA5 kB?! ^R0g\n<7 I$ĵ͏ֲ& AHH85 e!4R1 !tpPlXy=Qq9(-b"@̆0@|g-0o1 DZYyh|7T:LYGB֌RcxM+ݾۤ[湹"'qZJŮo!%[U/׳6vH\\=[/_(H: IhvK`ډ1^lMrSi&dx{Page+1l'A bLMiU\@Bzmks(_^Յ#+]HJ7qL~lQ94noF5mƾ?(:V>'5tXJLh ǁYgU,/w_GZ,rߖz~jNA_1G)LJ4] "dPR7.Ծel=EO9=x(brXҨhC3uǚ!S| ]%TzIIU?zϦAqR2v.9Y*jՂshOAv`LSrjTYI!a Ƽ_wplZQ6}bDkYL<:F k4">Y*&N^Ε..@rlQ#q<:KaTr%INmZGL7lFSw6ڞJ`[!$КF :"Br]Gm-P̯*Ylʾ'VYArOڢi*q eE75 cF)Jm0S/KRVfmDI0EX(!&l'0p%F R rUauzm3]h}t%D<Ŏ3!X]Bc2`b2K剖y*SEgR<+hQ Č$EHSY uEeB ǖ0^10_Ó3'FKyoCĠe%k)NGh67Gօ/ S= {fe,GTk$׷WSu$AR44ӷb60^TTї=5v n\C-m*Y$]^gU~U+vH&SǭdfLbS- P[$ļ;:cPF0iuw˧zUw>WzWg-h'}wyЇ)+c<)()}Q{-Fxfӛs[k tՍ7nIq;9 Z&Ʊ_e#{dנ;yQg.8PVqˇ-^24hhWuR;XqB7b*d[SlSbC5!~0V]?B X,)sPJF)0l$Fp6u ʊaPشddEl*t A N!`LGT}T䡞z ~=fl  EĠX *\"[.z)(kMǂ;?Rr ,'#!ʤ tZp(2/D(A2~K4""XH &HV1Hʄԣ&JXՐi8vH '7 ӛH](tGx$$XD @P '9`~T=e$pѼ6NRldTdNdKv89I13hA|^LhH"S3zAӍN[nv h bP lP) S 38 pI"&CE"DH(fj2 #'&jfU `Ѐl ;Fn`%  tA!0>TtF_\N> / X0E^T &g J͇Wz jRdx= 4ʎ*bA?SzfȖxNrFkV90A T=KҜk9>(R,\J+@$"0gXTtdCBΫBtSb;?u⍭we%~?(Jj:Ui/[rq)C-ccR[=i?OVn9E w - &&X--| %0mX+'i&VNbJ84<# Џ,Tqt2,~uf1,2$,T(1DǬ܍'(zŎXP8GVe mbۅqxuF88F0<.2%d#R>JlI!S7OL'*p%j# O2 ˃J}pf#k%ûT#x(BxC4KX;D=0f8 (4gW9X=Q2wdrPq;9(4Cm+» JQJ>]4eCȴ!bلkhhє#Gߊ0(&i$nOwfj`YZx$:9,u3ua#$#âO:Yey閪T(!^O Br< "sɟ!drgo д_<;XrBaF!nXqw*() GZ).VRE'Ly-68"]KhR͵SծP@lI &)c0btN,>;6!:ZAJ[ә!# QȴWsN+3GAF8ugRtx(%\+(AMOBvhk0U@NZ3 ̱(jn[BK(:GȺi5ed9΍e1{vS9[5Tm)^J?~SF *@R^.a P_HMeERS*xg1X!8 ZWc|U~IZέ8̸-?|^3Za{(QIϭ9gS/ϥzU黶Ϧfxk h M @) @"*~FM2>t?#m9/Uu㾻u<+)ʒ'%, d p\A DwPS#p0U<ɛ*Rd>AS CQrd%4 4 1`hׁ5a.^Fµ#r4('"".w kᲂ4ݧ,דa ~9B`@d&/8v} <+ib< cscc%n $c}eie#1~T^H dFkn]N:b9j}?4,µ٣-cqVi^~啣kϼ7R[%hAOeCV|SEbB#"TPxNf)FAڣ?*f=[g7/{um:RjbqUlz/wl{+nEͯiwk]=:!,ߍ}ʤt UNC#dvYZ.R[ow~yX cq9+,C6r)zJ%+댈y(=1,\_&L$>Є9-Lt'ͧ%n8 C)b <@#`*COYNmo>%PuuPB H[` jhn1xu#`4Â߈t ?($%I5;~'x>(I3eW 0B  :()t \_UY(kő>[{ˇD0ME/jFY!d[hڨЅX?aE߁uaܸڭ<M.#e)Rl!^qYoeDZN!8g$.{sj@TڃMuG̷ޕDvwDV|, X_;y5P4 - 8Z^d+/ng=d?EBX-ݰQIŒFWz6o4m&~i~8FFñ 0γi29޳wE/y7`r <GsQt:It`=KJn&(9jH=$8N-F!8.V_6|UeWq1yvȹQsT9FE]qcDeerD/ Ĥkܻ'eH$B;)zjtl}rpͯd- cשDԔ[e(+J43+ |dY!(_To"Oz<˕/Y% Dbe/lKnUgeȆ&Jg$t(%geo[\UdGiJ4iJc=m|)MܥS%R9 HÛZvwh'0{~^(EW]1joU|<0AC(zbmX;XY$m_$=gM?g2kֱ-Ƣ-^aiՋ5)O6lWg,̇B~,D{.ׄT:/tVNMY?3/V-ef`?f j<'N͋FfUu`Ř:;!Y}'~Ik VZ:m Rr1Ȍ\Dy )^dp>0zt0 $Kq[CA5pDY:wZ 2)#EBؐ а! PSF2!dCHS0n&!yVsTP4/>x% O2mKIEZDһrtѱ1)./^%:!*h^&8]hFtaQ+I]ƘqHT\Z ٷ^2$CQ6])x`27' S/G1:L7-;lj>/8Ubyb钫##9()tZkaxʐN[xϚxfrX^oEEkT|sTvF}3_mfG0'J՜~?VPe%1ȿI?,yl4A(R٤u&і<'!vȘa2A 2/KۣIZ1Ac\6\u!VnfK7sfflc*~hԊ܇uo_}kPVfҁ;+HgEiE9ƠOfcICS}X0jBQ.;3wi"QH#_Ht46bLz0.].y{+׺K" TIp_[aтS 2%-a4li+) Nt@0d" zI PԄiB- CHrc=A\ M6_i)Lb~RjșpinlrC{5hXxeL@qce C̬fD O$RA2#å&iQ>2z`8u[8ʐ'.oH r0p Q5Jw- j@G/)'2] k/NCcIKF/UXHGw6-JAjD)?S㣅EeY!d:*B1JCB4gqJiE;uW黟ҔƠ]Cs[e{[YLV0Lи&AqCbX) Ȇh2VA xz`]0# zV&jtHHPb%8"KLhχ _bAR$04W%f[!8/:n̬N\dCD`o! Όt%3'*8n5w,ª&(/}pʈ7xD=XoEB80rC҈@YР#d|RAW I2N/yD qt-KI"RG áq" *cm:핤6U_ly/fHf 6Ht=$  -aq>mbsa%C xvX^`"d/?4K@:LI3fRTWC@NZ-NuUb7  Fyj#\_T҇`yBDZW |}T܀n.4֪*ϿxU6%L#mQ(އ&)?]T z#7|ކ|%^]]{ee)_3 r&O5CغZc`e^}G|B!% 5 P`rzN<]M:lˮhEɍ8LX5ID Pva$~'mL8p#~ך @9k 4DOM6*cp! 4y=Ό&-Q/@e͢! [&ENCCOؙi ltubCD8ی# 7(2]}:K5fճsA {b UiӺYEQ!6,؈8u ٲQM4M3aOd^DAS+5̢lG BwHnW_hZi[,ԝE)LwwftIbhSJD * '^^$؝QP& 2'Y#ӡUa CߊPN%n,7e)bВ4A)"鐖JԹ*uMTN#xF6ZoY6zw['H[$B,^s!1E c%e))(_XIӾ",'(f. xs$%?LԉB+Ux0®OBd遑ނ.)ӎ=gMDXP`Nax% ;p* b!HNt؎>rZrGGd]2+7E'>nt:d}R'}Ql L:hNz6p9$q=[.xPsǘ21[MU!ўUfvZd sFHʈ?Pvl/M@G9(pS!7 5Hw~@> (ߢDZb(\8F"k}qr:0&D) GLFB@㑥2^jxT`X`-9.h=m00I,{0lIߥ[TQ&iZ(Z"Q؋r`<L$"m@1'f'Z0M4%5#9:=tIJ+XzH8N\ ѓ%h &AGc54lF",j VrՃ!IP5 =1k!%&tALKk^閲b6\q)Pa!7&pDdD:xi_!A܌C|HmReӴ:G4Jl^iRG2ϗ,Z4hjj8T+|>$WcJm+0L|zy9QJRZ v@ =#%QM1E* Nile(FWJ"HNQURA8YxN5(O<ݬN񃲂ؚ d hTbmDR,FCi0XkՉΑTm3:(-EΏU۱>G \nnXҙ|Иxwqm]A[3ޖV8+]%ҫaVQ H(+g8b|aֽmce'q&=elϧUHBZfuuBpAk-}E6O:z_ȿAzcѻNJFg>,]oqgQ!y2 &u)NEg[bn׊@u,@^+AQFaqq  $I$I$$(((,, 0 ,0 0,M0Í0M0 4N8M4ӎ0 [P@b8QnvBc )z|~[nfe+uo\]~UN0xV~oM;۶붦_w7w_oZ;V7?'hu6l9=l~Ͻ{7?#vgn[w?/ESqB%y `3g(9R2]n1_}_~[a~mv?7 ξw/l̺ՑqKg>:/}ϕ]cg,UΌ!w(+r0w6콳^[sz׾k(Uk/q3n 9Jd@_~uw@| m05܋63Pw?'mv/^XkWu_ E sB 1(7 }uZYjfgm粥MɌܶC]Ap̆~?ss>ٝνb_:x]7;_vf_!{e6RjWvz^]&}SL x^}Z^HWZBr}koֿV^p%{eel̆g>sfLww6UKweVXh_m}⣵;ݿK-\Ͼߊ}?o}ss=3ҹ* C`!wy)sڼ\ a;Knj=muiuc_nvnC-N`(0LD*_ S/KVvnUxkcQIVm!xS{"A=_{/}OienAH{>}_+G 3?kD X_yOEH/A#C_mw|nw뷞=keܬ偟d#ۏ?ޫ,ZяjSѶwӽ|Ͼ_+~Yo_޹W>^f܊jTխ#)ڜ @Bdv렺N ` RSZ0_˷zڿ;ӕ,;s7ww>0Dġ>7jOmzWںZcŞ9M @OՙVg~™ ?ow߿oN}Tex^/{o h)E~YݷCߙ 0!TH9"|27W>\e{f>pT|31Y,WnmR; ̿Zߝٹ~ӟ73vP{_~qhh bl+&ϏOm>|}+?[[>ovW~\| W~l·,AH=YŻ)^2~(WU @"`]hD>rVe_{w~ަN؀nRJoxeߜJ_g>>S܇f?p)`#!GWw׿پwwn_6;_ݾ=_ =B͵~umr  $FB@6=GW2۟򗜫[o }VSA Z>o}߯_{1?4~q~_{} %8>1 b_L쯿ml{ջn^L]C-vR7~9}n6a|%&\[knse~mW߾۷ηͣuKd=9"4ΠJtTMZf_-0.h[U*IW/wrֆFud} C\4 (ۻ}߾o߶r~uvON 0}}oq^dz:зe>,Yt]W̟3:S?#~{YFMgh9={;DYjɓejcv@hX'iRo_ֆea|zz>%=;>Хll?A!90*yV&WS2]Kk߷ٝ*lgn܇ٿߐn-|}>ͬ2m" ͣ_1=ߙڻ>Սkߎ)ݹ|g-}z#ByYQ58ջ-ͶF P"oi]<$(@PK"H %HVz4 s)=7bSN6kzPƮ2L)| 㠉Y{Gjl'ÐQH ^@ F+Ea`7~*FH)C T +:v~nb _}a. Lq"h<+p r0TM [(IPW[(=y@, sQB\0¿r/yȋ;}6&ld!Z:L*aLM?Wmbi&( i8y . +.HFkW˅c;^ @)&/-OM=JNt Iq5ik(cAڋџWdeP 0W N[Lʿc/|mw&A4>f.OV˥k_7g}="C^y3a`"aݫ+wT8N6Єw׾v6w5S|c' `t>1x8\)<B-{m7-u˹|we)Xi^^K0kzӠ+8_wbӅb 4i "kg1PX/PoYo?m[MpO> W~jkt"Qй€ e's}+$& zʴzqsfRViV9ϣT|,qJǓF*HI FA`TXHx, ")c{) v0̍3 v,Qz!#S!q2j^=%kS]rO/Vűy;` C/ a0}xdd{c0f S%-c;s`f _`t<@`r+W\:iQچevZw(/ "J0lOޥ~+ h ,߆+ǚxA/4rFϢ>woX4R"FeP_KoMrkvb\3H˅b$[Vj y:Q >^q-?V0U\'S&CDVN&] 6ೊN!"DfYF:/Q0'Al @:SUdSRmŻk'@-=P.(2yW1o& @wb:qYpMev_9bL 'GMbt}}welYd83 MIB5rku{?վE,L( uj:g{f{ز@Pj;ft' Q >58?->Fq,0 Zh*"bA%gLB9v>pF-A3갠Hг0 pJd%`M& )Yſ.|?)KU-/h[Al!vx* IեQc檑xpB<&`;#O>`Fh8i_Z#XnW ^Hq6לs +oY+ѵ@U1~/Fٲa`eT(R9ӼQj:Κ)8݁H"Ĩ 'F7 #:\_*k9z0-;VN1yP&q8]x0 1 K "ÖLxC 8pj=r@2 `܌u;~Qy@0\H lESQxAY#I[hYh Qt?E3w[X=?%nV ]"Q29,%NOD ?&t>W!鞼Pb UCȫ~uH<;086h* elV1wXtX-,$@D=2/69RRT8Q4< `=S bHq1 q}!I e/.fj)U3hZ_`|VdPiWEH7uWzN=f7R$-0$ m~~m[}K^zde7Mjf5Hi dqnzg]WB88Nh:*p6YF9ovq@G w(TyEE }#/}V'|Pܾļx8v ^EgU3[%X5!;j}BKWl>bRPk{j}_}(-xP M$6-Z|&&Wl&qgqY*"Lz<$W\[!'gk',XZאDA*ݑսwQS H@Y@lm8S?j!.adgʃ|5^rP#p.sati҅UDCh*uTf|^Vp3u$nv(}3Z(D^ BA @|0CO+{'֓uu- @%8]EsM0lNW8M=ELW0mO3Zb{- @$,O T:nRm_̈́ țOW /qeB M/q.de Ҷ3ǼޗcEeAG)< aH5T7: p5a}ɽ,?=.|xK qI@ȣp8@;z7ٿlmz=KhVp#`v  J^ 2h,@RiɼQ] 9( \Kp(UMRN봧d6r@B@p. p7h4 aJ#wx)*砏 :]24+e*}p>w3X}&spńtt4; pLV.Z(' ^d$>oϽ~2^' M6xf E+rUx;q;@MtV^ /ú N՜ZZd/Uhiqyx/Ad1$众U a~ͥ]P+" bW˻Phufc]޼5g@Yx+ 0 &hQQ㊦Yל;7]M9@@rٷZ_ewsb!N$@(T<$[k+z[^ vIGwO8!jP?y iL !$"!2_?ڗ\H<PCK a; pJ (}P»}.8 EfѼ?Q &+=->g)iɱ (EBIL~Ƌgm~1WRhM ^Tgpox}c9 @:(mt77so| |Â1jt tkhĈ"kkvVnzB- R%1PI@t>YR9 ZUV߻_$b 0XHTX(GV$H]bv07J8yC$f%XE@VIMpz' mS xF<"P'PCbhF<wo4n Q` %p-HFG)(vnЂ2uʶP pd:X >?>lZ<U]6Pӟ}@< ^%g,t ƃ"h܄ n \]/pO@;nU`PUV& t%h@0WV˕6xsJ[eѹ%&i#DIL  @FjءaZ R,\ 9@w^?.:,p\<G .!,@^4D(4hJ\R|S 2u0J-H8rm%n<yh&MR@eZ FOtx)1Gh0~"Az> 4=(=G(Ոekx} (CC *aQ>T&D_0R"t(Ăei|@& p|peK6 Wc (DwtμW`l\{%-S ܟ3:`Zl7 sZ[ѻJf$N .y+Bxd\L_nAqO Nt.S : (#05D'S؆C'DZm.p)XK#r5)d,3r[k7ޣgl!'#Mq(17hh,ۆ"Kߑ u,2@4Գ*Zg Ԡl‹aQ<[_N}SUR(Oξ~-Hb']>Ѫ__/bm*Q7UiZKszL.9pa`4 'wDLy+`QEaJKŘ]4qEJԥh[r,}xхW| ^ ]S/4$Gf`|Y.>c4 ٜKą ƶB̏4o/0t0*q;ыþfqB"^^_=3Zz2x¨gba>LftQ,O]t:O#jɕP{G'y(ꋅ&sW `bM>dチͱq;8̑8ՌZVnq}K'֫^Ӽ9\'u]>] gcW7;귘cc|V2t&[ES̋9(q@`~(l3@)ٛx] s0^T"Bϔ ,z D Pfn p$ B,.AG'Ϛ=<7 !MF4bE Yƛ'XxUM}:?^DF fBAȸ TMQ:!E橔NCdmN:F\<3Ԑ*~\&HR ˆ'Cؿ51"(MiC 4\qpDN_!8G3O6[4t|p+먜DTܧ?f^*(=Ί#JƴrQ fDGHHS!hulR#TXr%v(N(8L'!:J^br7xp7~Գ}{ĿYO+h[J!U8hCaEGe/%G$d/!u=:[O֕o*?bj<^ѣ V<-yU!fiⵍU-Sg~8xwvEksQj6U,&~⸠,ô7 b~059B/Fٰ5*SjGDDlP#|MOT#_&{<#Y}AS Ue!@HRyki]4n?n%:yf:mWEmqti(NbNvb7ј-jے0>|t^2("HAҹjjGNM̨Ë:]Ѫp-K+*\#lz=y$jåꖑj0׈#J]Φ$ K628yAV  5F7`hiª|u_qRk"HZm&=:Dho6Qx + Ekpj MqUlZ}! FhM$4љݶµ0=!` 21"2iuaK6ۦH4In>í5JScLb{9թrUDNDu[!X4cF nZ*$/Z<d,Nj."9Z3Y٫'eJ[v6Y#.Nyӂ#!l 03Υk|\̊5!-Nq{2{;X*URIZ2R95PU%[yZVKcYO'E_m .ZsqG, >@}qYӘ>aN**vMEğ z:VBz;7vX{uHi^Qä7{X%pFщlH%7ݴV#WZGX0G&/-Z.]vC]6z:U`P'_%lv_,I4Y馣BFFҝ_hXUM3L;R ^)QIx>1uaI4I\Y9Z1Fiu-s-J˘CLиGByi^SZû7|M{vIzܾ#:'Xe(\*^M/+s]!wEZLH9B8#(RʹέǦH5J'œҡ=S1s惱j'0(A8i"DlpH#b%1 DQJHϹD,4x͂ғVBhg9\`)!)ޝCRV?!=Ѻ@ *䨝$DB*-):-NW 4(J

*ycozLֹ#lXFX{Fl1]7eTMƐz䘻+1%'\9ET<ɂ`yl7/H(nZwTjt֚pdUť~n ֭zLMX{woW SktW]auX':밢[؄cElNG{T~_3.S2b'u㯾kuk61c''ty; $LaC[:{8yU+ QK6p dVJ9Ht[*.PL tGbkm,=x8묎alcf"0L2 5y`iR7c; BATNt|+ Pl^9.(B7HW䆁RtDŽh-0ܰJhqs L|^nFњ [8TPAF d=;/`euQϞiKZlDMuQuK6xb_޺,x.}IʍqEQ}SĞT~>$̆Х ''/D\+$Mp4FƈdLJȉuJN/ӊj,ޯb3!1 f V7+12|_gESM3΍RT&-AQj|HVpAL@3"[ˇDfѓ?DPi25!R"icETzה̴9"`fYe,.tfXJ. 2,n6/ -Jwyy%Njn@6glu3Qih^kv 犠z!y9sjZCT1%ZױλSQؖ,%ѣeS/Tnh0 dlqsyhrGxt}gʚ]#tgk7Igˈޛ+CP1b b25P٦crc*=`ӲFLEUwzWUw9>wC,jXu8j[o(R -#﯋]Z:uAF/6l\qȹӬ['gP757qgUvͨ@D~lWm5K0ZhN؊SUOKE2ut(Vdo~S^R[n.m̚>cǽ{:a":b`RV0-ݢ<"zqQ `mY,8_^lؤ;* A<`>X8I-rh0fAmsHU'e~:~C:<Ēw pSFlZh1^ Sv' .DQp1Mt@X:# p~\yوKa PEq8Ѹ>< рVf *dap->ERpv޷G͎K: @+QkVhzV)SO% %f~[O'f݁ dݖjwLj^ I~eca-$ hH@XpFXCVǤ$`4` 6C6z; LיNcTK͙(qj-4wՅP'S'&GFͣ˴`DJȹ8dX`ylhzR/w|4+]]ֈJs)u-,FEG"$V<<дXA2!""HvD呯W]33EPx㸍s葾޹c Q;Dʎq t؊bp>̥*D0Hz i윶dؑ$8nd8ul2NrU9s!P| (*{4D$BP@  6>ģ QObŭj!ZiNL?(`V;LPˎG3 )jU*+]w^L߱JZ]ԪRL0>Y;u=XTc1Ƭfqta|p5ӣ!pnnm87'\)kƕF//NHuT{r|7̲%ª\ne h(|z'm>J?zrytE-ELMȮf)oaGNrұ5,5H2XhDXJ PIn谜6 G%aCawӂ"R2ŮXRjfM-c <9ꨆiFHM5 TP}1B#ZUkG\8pag̮*l;2JlgȁK)" \+DSՏ< MHS"n`H" T+858F{.IcB7=vj)\L*[ L2ic% J2(`it~֯Gb\#',V x'.UgS;L!+qnhhqIƑ > Ԋy%|k}A'5ZÚc(BQk+#-Xb oGXRJ\U5NB0:4uHF\?1[Qp%bZ64V%1X( fVkCQ~7s2@n-]%BgL&B+$ g30*_y(./N)Rc}X,t}s]vqBeƈ UOfљ%UY~u*eGҟ (Xgӂtb%2n*ȸ}K睜URTkv7=luWp'qI"`D= OJ` ӻniV }QD|b7)U%~-j&a!݃Lhǒ Dǯ sJK/D{y{#U[ ʎJm[6ؼs[ko^.lZ VrƫFuj]kg!YO甽5pLQW+u1b}1pq"z959"7tō+Ldo5=_㸕b']WrK}lWVi/rǛCç_$=HWJ;=WvN)t,eH䤎r+ #'eB;$d!I8g#Bֈy VJ^iP74 GG PV(RHn.idFE-/8ĵ5)yv>xt:zvx"M|. 0`gt4evH">/0 -JAL \h:x扄%KڡkKX!D`,Ncٵ̕ZUe8%9ada=DiuRGHPa/"&!Q#-6:  `=p}p*#0H]G, @1UD kvXi(Ra%S}݄Ctґ5rDL!6x@$`* l- Rttn(jI1+f7!V+ &D/ aʽ$^`[ƓE5j=6Yd. YWj_Qj,+ֺ7k.s飆f*y岓R-0~' BeFQCNJ%#"頺>/sBˆcaiyJ!Óe&;`+{<F TʡCy6Xq㙔J[QZAw,3$nSSBᥦ20!A8TcDž1h6gN܆.cmMّu4 Uߘ,ݷuj9I@L&t%[>B;c܋eVMqQ`iYR^]vCθo SZ:k=÷5s`͇E,Z5 pH)d:xkԼ` U蝄γk sbtV(ҰVaX-O[c=vbĭZ[>?`E?O ] A#O{ٺDkI_c755wNԟWu|EDn:Ab,$*Q;uN{;3{0,:.E/:Snū'LF_\+y>-uOλml/b:ױ^i[13hdԱ)whabF֔{)~dA0:!,7V,ɃOT|DzA S8,ӃzUJpYr1Ry ׊NWy)%HE 0n8B F2H zxёeRF PrFL4m"z޻xŀ1KrRX+ +2]Z:3IbB)7pʇpB]d\<O 975E) SφRvqg&} A֊R⋏wxTZCEDņ%':t >f+p[GBU4 Dj22{E/*(paU*i X>J! ”1*#"PʢzĆK݌dB7up`3c?. EqudSʷ`/XGCF,d(- A^;h RH:G_(/GFU,JQ4yP\,Ű<ײU/Or7;mALc~rnڭ =1]j͸xE;|N# c rJ'kz^q|Zmo}I;s԰'6hέ_^υ3* =)f{k{GS ᇡy["4)qJܛ YhYHB,!¯o古'/n]Xڵ]aTA]G1 }VP˚ai8q7oGV|a{ױsR"L = (6ۮeZI+-\wU@ $p~J$"]-8\Ac.R:NN3G^CiD,'/ xSB>&FgEVu2hRp~QCH*1$"GQqqk2{!B`bdtKr󅂤*lT A1 P:0 4۫2*}̜8okNAGĂܣ0hɣ"@QˑDv!/ZN?5$<ۜ!'M=%Pl!Ph$T (/xpq5ąkE֑{"eTrqY_%T@P&3iyuE܅#3NÉQr8[W_;g^1tOD˔LrK'[rxξ"r{6,QCfğCB㨍;rdȱByBϽ? .\@@ŷ*Ik~qiwv%SZAQ ϲ-fńGuDEfٶ[yKK@̕yw'\\$CW0<0$U\k>/UF|1s6b[ ve7sVk8@Yke9@e5ety-hݻk+m{wgmߊOjۻ|D+AE -xYȽ: T~UFcv6\+}]1 IRA&Bi7VbZ}BRL:5 $>jukJ̇S׵ogJMtҚuYAJ6ZۧN,3K>hixUNչT߄WYSn~U| ]8vytB^KZe@O$bۊ\IYٹe6qE B~RpvB`l5ؚJĒqx7x@Ex^"HF3tB(Fb*\:h㢦lѡi葦HPRXgHC[ðYD&-J4d-rdeŢ$Q$7 ˌN19%:& `|`);!aT`zDlfT̈#&6#'Rp ;eJ >42.Z&`q7Of:d\R8KURƉp n$G&VFgqaݘT5Gy [KrQzi^|5婇E,P22lÛl&m%WUM 'XscT/L6<9%8gS+wPyL`m.%,]D:lX$2' t*cvC1uM{X,&x>`E*'pۅ ‰Qq5d:0ѱESB,>qщC.u[ڗF X괒nDm3WQ$S{J%v.Xހ) -ldhʊ 6\S $\˪l3{N, < jjK*s1i,er̳Wb<ú2c)u.n,bo|}k{.vSØD:ߨKhXK)=ndCi:>]0bEN )u]}?n_BEQAy}SիkOZyGxW(09ij$KP+FE)gD˵m )41Xe"Y?>4kn_l^yhb?Ϣb|6YPzpW}UAƴGYb7K lN%`$d011E)Ru!%eƼVD5#Txs x8\L½,傾zh%+`Qe8t}8|VVZ}ٞP)$YNJ<;\ 0I)4qP|R]L^˙[ Zhr,0RUjtX+ ygALE"y?'?0Jp%Vf;{/TVb^O!L t=k=u0FL$|PLקOm\IQppG4I4M\w7gM)MFXTP80TiT5O%C!'Gt!WD兼SUQ[`~]Jxd$n+\LX\QjL.eC3y0wP8lV*)qz[Lm*[&6(Y)g5 L/"lQ j -ѹ"v 7j 75,N7Ӯ`(9و؍_F՟_)&w7/L,Kv`5Y_.- ,&aZ¨Bk5f7+ΩqU|!uQX5Q<-:?g33lHʼK,X􎠁|P8\{ZY2ɪ[zz (Ifni8HRd|XYsJysxrNPRZ+vWsk< KawVìv% p}!ōTFv \#h@>l`[pt[AQFaqq  $I$I$(((,,,,M0 4Ë4 80N44848N84O<448@?O884<<8<8N<<<48<<<;?Ï?ÿ?<?<<^Z[nٷv +QSpt4,s?/\as|C6.h4|yA[`6gMZ FK49*5V}z~(@[󞳮N*( dPPx$+;|;:~QuaC:2>ԉwwVrݻ!C{H96Pɒ<۬+;_wcɯ,uw:vAj(TV]w]^^WtwVr󭼻j[_鹷NO//9׸ҍ}u3/a} Abim~FW3?IgEn;3ivΝ?t|ߏ?~e7#{.9Nwwwv]_~{/:?n `sfv?y}t~3{:e*d.tvo~}ʏ}s{yشa/=-ly)(&Jw{ǹgEw%vs[U+uk[}_l5{q\t<| f4]1i=̾g߶\;y߷׷[ϯ,)B0Mg]W{1J}ۯϕ~~ӾS+\}g]π=,K=!Fstywߛ}W.rEoQ۬6vv}_kS~]|lgIv}36}ʘU5m^FeL;o}Q IWk[:^uE׃rTׯ׭ed;wN'M`M/V '@ Av 1, FnIv7ҹyw{z֦ $: 9un/ކ..7vmzt_r;u_8N>Ykf^dcWJ,I:ns3o鿛jf{a@$Tp <κߞϾs~{_˼m;;y"wW/){z;7U_~W7/?s䷾zYӠk#IX96T}kfh}ozƢ{2+ u?.ses~Ⱦv`@T.X$@d'@ۆAQJ.g}w OȞ0T( ϼyZ^:E޻κu!}|}[ϫuI ?W;rl~]۹SuRAPGν?_&a+ $u ӫmcu{{^˻w;]\-=C߾[t\ iԿY+/>]˟wַ^~fuړH93tk$\k3Јx  :RVުϳ_gNӟy7NuqAw{ug V3/]پwݟO|:v?G3|v!X~_]=Vn_*lo> ^̽Լuoah/{9wy{]w? {B)lHy`l.%.?[ν[STJBu/__;QhW7ktӝ<n?;]]#mWzWڠ;oUǛ'j.,6t玙 {7~3w_wk;,s_@> @Z@OEwYD-;3'#֭<˼5h|ƿW{y7YZ ~|DƕD!%⓺__{]wysyv_m:Ɔ@V @+XY%dž'4e`=`d @,.YKz%X@:)<? O!oǨaƴ)$VNuv`qᕨroͨ o@ &$>_@W]}^(joO!p0 iPj[~ߣ\RCGҦt9v8H3P ɰ=$ނJmyVP CZP0Pr{HǍˣ`/|Pd̘О jhz4/":nA|, D+j{rz4)'X0@9 Za:` 8:lz7rBn[ 객ۋ(ϩMqwcKR|`~e3`~)͓WݠBO o}})-W+HO+@Çjj}y:lz%h"8\o}ʻﷻ>MEƠ @6?w߼\*׫q-%iͷ~xҥ1%4AwEv>*G˫QI} \%?;]N(33'X@\jP4ucE_pxYtKQ+aSS0T3Fu#uP|@l;T$#EYW7QF/0eh#Y|U@(ctJ*'~|.mNPE谸E v`_4umߤ6@5R2 c_ X`E@8 E"?ڱK@^Z | ?Aeo3&|Ѻ:ZdpDh+Dk + ȞVқHKWdcQ{c c!.ww[ۼE qb:޸N~]e*=^gP Alh6-RԵp*҈?:ꍊVj]S)D樭սhĵnDш2~έ|QP(&sٲn'x:M4 8.@$/7xam0 D ` J&`x45q]S(m | b8#A@2 Cw6 :0O+; NR[J\R)_:tGԷ]߹ʳ&9Z޼2 y1T J LL]"c})_k-j׋ۙbI!CyC ,A%TOD`nPw1TiKU@@IK>_/@ڥ+̦S*:!*!;3K *59}VTN8)wݴwyu^Flj0"!#^ LJ򢉚1nnT5xC@\l,X$5LJa2v7"*\|* CB47[`Nv 9H(`X! zO3Ӳn|9Э B0Uu/o?→yt*`!l@v2M/KL!,(2 T9)Ѹe`$(-ĈN4&\eJ#f}Zvutog xUFBZ(6X(0`3NE@A h <`= ġ$uԚZep 4EJ|PLj9Qy>9ꩇ@.{{w>Kw@hmAfSN*iȆo܃Z g RF F!$)!Ma(F#iFfe3ujW'ջi g |j*H (ĚL$&2Hpc."J2xL* kB3}UB%L v5HOFU 젨Lro\[ P$D!X@%,l!.ѳ@Ԟ6"jÃaDG 9bwR4&Et7$N 3*qc'2# ԭcD⁰%ce4l0' `Ե !q8|Z %>rו5ǔ@Ʊcy}oa$qÉL"26I0VlX deLtm@Y]\ 09IVXܢ2E].XA@q 8 i 7b Jc BJXŊ@d,a@51b@ՒA"H00;`0Ka_WzIRiC0By-1Y a|@hTdC%m+@f EM!\DdtP)1S Ʈ jUY%I%N *Xyci!=Q4ݤ_IԺ)g r]{-hbN]}OyUPӅTi/μ_ףؑ,*LD8D]촳w]%.Tç#,RNLE=COZF[4&xx:-UBdwU^EuOSXб Cōa@CtSLչ 6M> B/DU$qH-O0isIn"ўr15qފ11BbXFI%B|O5K\4AKG0-:82Wb6>R=(JJAtȶbH9Ct{5?͗AukAz7\:qRCX&0AA!ݸF;>y)}-[ԉUdf&%c )ZLh]6?hh 8~"p:iРwֺb |T2TP@V߄!\%F8L# K юЗW5]Zu BpRpȨ%4,18Ӑjs\I=Lh/ 11 8bD"BbA 4|IzS1htAJ`3K޽2iQtŋ')TQ6P =PڴQl蒊 2,PGCͬl1Yju_ \V'Yhy-b[F`&fK1,_`9KֽSq0<5E<-7)V 9hxqS l9Uػ!:OcJۖ~ZkboJ} F` m>]Wc/#[MaZtz8V*BK Qޕȡ䥣(*mAq &uLX b 8 0DK^F/7rZ}Lu]ia#pJK)FJp3eo2>#CgQ2׾!֣@8.)h]’"!\"`IÀE_MH1$r^~sa%C #2|3@7 ~"2y@lTˑHCڔb[U=y@ޘW@J'<l`2ib" OSp=!$#, #a!P-B0QH>*4v*^ @%,M0!UT76QLC(X/$jɒVG("b!ꚐgDP9 NOW{'ssל5NmE.9Pf(.Hda1hR`2+;Ds\S@(JޠwF3㭉T?hmi{Rz_H蕛lf%dD`&8PTB>C]~Swl߼͈& D₭Z0ԬU{{BoNfM3.Res48burXh ne{.PftfH&r=5N+ҭ1JMѾ7fF4*jY'dJBl2UU.Q+)hJ\[\VVXl?_j?'Vl4G2o'a5V(bcǠ&ֽ]{%yRFeP-д̓r;gMTݞ1T3PAs՟khh]!6P(˒%m)ilj, ZN/aY,ؿh@$1 KҤe0e`6KD#<^'!0t_Dj 0]Q N<ٓPIfi)ޗy<6Qn䯩mx`nFb,CL^UQ%hT#B3uDl/z Q/NCryF4KYTTe6qqPz|J3>!ENk.?1QDί2 }-y;7P@ڭ%s/XH?$ \zimr,smf&3CF/lDJD5m!,!͸!^ƈ"Aƅ"Hȸ1N/Gy  d9C$twpŵ.Z^  ȜWtUu+WŲuSlz `*P咉Z b\I5%Yx*)Sl*+-w&2DZU-6Z/Lh[Sꔚ(X5 J顯! 89dV3(!r&EI86>!yjmɕ-n-,-n gF"Lq!p><! d32lwę'GR}6)0͠`g*`%%J pܮH'zkNWeX"wBF\A`&Oei*u3`+kJ%!yQI= PyL)Rk'V7^l1"F^޷o2z?֓V)0LżL:̮|)ﺰ*{X&vOyPXY_߽^J'u3SȎ8ֻ絲,nѬV_ wA>OJʍ"kp}vA|Beq:hS>:-oTd`Z`S>}Q. PuQF 9Hp1`4bDFM(mPM5嬤~6vlJ``7 dUjvVAW+2HudX\  SЁ(Bl!b TB:JX/jF4ڧpb y~핝5qy*,!66,6F[O:t8Q9?"0*:rH`;!p{^hǖ_i$IKi  p%"8h6P`٤~0h,Hp #dĄTp Hn6)?Q# A$@#@|h:S+'08tsŐuChTLPN(64ק3bF~0HpQ`F5⧽^mkLy2%lŐasQU4QKa"(*;!.BIpCZ˓Xi~T/Lʙ+X_!C W`<9Z.DŦczŽ65N{ijT >|XpˣossZ=Б 5MņD"qY0Z)L?.w?woYiJl1:Soa"ʖq uTU+Jw\VRN/K\EWFFT-;3-G^pv+jVK]T @!VPi!՛)L鐈Z +MCq.Q+^]=Krn܍#:ةaJ'soQ0ܥlܖҹ֪%@QTe_wo+ cjNUJy.6>d{GulyZ6uDve?I&~LH(V(Ң31*!JDLȇFQG^db~j$[^V0c jZ6˛! XAFG/KhjSodXXk=skaK#dYꦪta72|PDPiĄ#>dl'L"`DLT=P&NsS[sw&h,K! J+ 9M4mRhϦWЇ.Zӣcr7S׌;bJ<XC`" aˠF2ZfTkZ,n2 Jp&.Y| &{$jjH)NBb(2Yc Z08:>1 rB3D̒49%xKHȅ g *p@ⓄE?E+ 2Rjݡz'D"bHf?W8kf>nwF( ͊ gl &8H&(]*fI|\h3*sv:d]E'Se}Ƨ4Lv#=Qs߫)559H3szXVqKhIaP([ &Ń7ؑ^:694ث&غQSk us꾽;m+c,T`Tx&]ZҧSh3I=KpYnumyiȔGrZROy <~{).Iiqˍ{iκAr(aV lէ*(XL#hL}^>l`el#-N[L'w oJ>TmMZdo]>vW؛8}e_(YrڗM׺t*buw'i}ޥg1wZιd궞&2K2pk^> 4挢Bb%"kL'J(B4qY0NLJY,K>76 ^ԼNzud!2-$4%a8G& JdX`9G:tȂD.% |N~y%&DRPC"V`#..xQLҢ@R 6 $IppLj h24vvCaF5ar~ h ;HƂU`L'Nj$.F͠8\&z.hmlVہr֔<2d G'mg9ByNa(SaC`T$W q8T " M$FAD䁤U2q9cNn 12 /`ZMc:q|[BXLb%aH|%4H, rłN0 8YFJȅ . &ENYTڂND3wXΔjX:.3޷ѩRSՓ_M"681%t Ճ4=Z./NfYrw$Mm:pIm q hyzdZA~[ -*QRMKY%ІEZ&L]BfmZpp_VQ㡵H4) *)#ND# ht/ bi6oou]lHaQ?AVibDFItPocK3 >FK7S7ƞxhu٧%R8MW>])v>}_`;4>sf aDՅg}֕Z 4}B@SRZF촭A R#^&eɧnSA;b8E U9 Z?rR{EqMW-?Yj*.cU4ͳi=Gi}ZnuvoG!>i&@9ܪ$a1cc6Xl$F%[mV'\b'##zCB5~u0\ ??ٵ̌apzZl ΄(p9I Fb 'b#k3&JD)D$*[CFDL")J 3H`(lpH΁@Q% E"}#;Lk)uԾlxx8YQN Qw7 fF(ߋH{WۍS?ZM>^JN*eNFjtnV5z#onaӰ5=ɑK6Njwd€xKTJ @`56j ؙ&5%!h8 2k ܾJn iTeڌIJC 6(8AA0dF6JV`YDҦȜMDk>GyB)kgFDaCRy!ԺBuK_*s4LX j;2?Tj$ JU~q7;-/\Mhǩ&BNS0X64ese\ 2SRljFPg\O=ܜ5rS=H [b?.Vt~6[U,&OK8WA-ƪrSu/ӎߍ+iVk*U F߳ZfS݇f84\S.GF,|3 >[oͰK.J[?06<_ 0bܞYMyn1*Ngym*HSya2DFD}MlЬxO5tf , Rpxtz^+z^I%iplf 0M]a+s&$@Kpm!D:ѐ$P64$xJ`nIHg " 9R7Rq]S0Dpyh&N=&b0$(lAt(tX" Ȇ.KL'E%2RғcsR EA*:DPk@Ԛ<|mDVJc3{0? ֥.PXq$&$yeFEK^Ҿ*,EaqZ"(Q9apm PlcrcTUE 4Av/s'!5>#}ⶅ*S|+\;<`* F&%"G..POkIZUZxv!GL*qB @[u_㨾{s"nfqUcT.) 4UFP4CuU>MJ~Da$WVM .TV EՂ}?XXKq_ zYƒM3VC ;HoJfF͜@D!|Sɽy{GFEix*rdW$iO#%/!}OZF5}v>7woוsS6H-D`m!:; =t\AsױZ,,pDn9t_$f,Bf0 @M'f7][M$tPc?wf-MLKJމRZQLu~b ՟CD4Qڷ4Σĕ%^uubVMbإEfDZIm-P@-< hOd!hv-7`5T `^Dr+4kd@\#eB T%lg3 uD֫ eFS*1   ]TL?RUuQjYf?EF hɲ226'ȸU&)U L! ƒR/9ʎAY}XQ߿wwOPdbLf 0 )j'DG:WJVmUeVtNQ>xbCY *o&_*gz1fIJNi(!없tl*d)Z~7j6œpuoqJW-|WߓCBJͣ)988:PT9@ZHҝ(E2AICE:0^Eg@SY<Ù, ߂bJ}_['Ȧ1GY.0 p@!|0 Ȅ!S"=RNԊ4Rdn&LDt P׋ $SF>u7a/ (/:-K&ߛ,oYX/U4$~/cԏ^Gku->ȔЪCA8䩶I&~%:zc^9u<ԺaT:x@`dG Ijl_7!k-|ugkJ,|d[>J{I9v!C>m:Qz3kinnQW~[~,8T^Oy9oIoēKcnb̠-j|޺F~/DuM~>cCl8Vj29Ehhz-qUJ|s\#eD%QXtTZ=|@MiFrA([ExR DVeɞ:ۡvs 1~4& Xe<8Gm,t? a#dK rbyTc% cb A " X@lzR //x~1Yiv@(<@J.<^6JUT}{u9|b1i'Ǒ"ţ"t (:ɵM؄WGkl({ߌ}{iT'Ϻlj& 6G敤uA@fq!q 00X`<FC> lC3-u`@:@b7p !_Qc(<\+AQTV{(DX(H͑A! e!W#4^xC`QhbX:C2R2Ģ2wLD8j-PL]k>]{E0Ѵdu}3"+p$ 8ȁ= - ͆<-XI6q`a0IJJX9 j!./?ro)U5ĶZQ Q&Bid}Xʩb&*DHt5FmsSESЇ_wԊ_Ͷ'^>N`u]9w&:;_S]ڒT>!T͢0nȞ'C|c0ʧ6MkJbS4=pq֌Yf޻ոR>wo7|*r& վ6Ἓuj­,9U8Atw][Ss.!gQ t*He-e'5iU VŒɾM5U6bө}Mt[.N)ܭb,C O P,TxdK dݤ(,<ҩ.ȃpX cBAtww5@}㪃[CϿh>K䚗/|JdGZ:6#2#r[ tȂ (+ɂ]J-2E֋ltm]Sn qi)i1""Ã,uI#5=;$6l٤;\h FIa[ly ((ꑞ,&/"6Dڻ[Y&멱m=~i8]D`m4)ƞgoi!Z"TGDM*$LVUU)*rr˴tPt!&pmKW8SX<!Pa!a$H[L^ªR5= '"&[9E yN<؜uqvv5V[%bu+SZ7HMC{<9F^%N.ĵc#0<׭|׷=ٖKijӡ: 3q̝]ks<8h;,d4xΛ1o7mz5 Ĺpl4I23+S5jtf{/(\ks]ݒs"(M#( bHTTY_48%Q\ۈ@ 185СBA,VA`jcݖ:K02$E !ga8DA8|E%˅0ahGlҥKDIQV ƃ[6\6Am2D  2 UCƒ)̸K@FPϏX봥-ܐ[zu4>8ӣq O4!F-h8=։@/I"WxJ0AV4lHh(ԙ4^g LC Β.0\Dx1Z[9ގ❴H4=+Cq\xS'jXԙo\FF.rH({ԭ/OVJq"GhZC" iT՗v̨ C(̦*JgY} !>g](*+_[2_$N(MMR9@[JEtSUb !:K՛E(f0}L ;Ac`b鄭+ h0l^=E5MK3X}}~ (iː j{*fcca_Rh´:|!7t1${.0DR$45g|" lTTbdmCTFrC=H*H%(b`^I _^M6`)P\nbBHR ,^lB?V\?c}r,=%07hIxIL쉐t[i$yx4dZw$MXʲpa*J? :  Gx ̋nbuq;P#Xa%DXT5xxh+,<$ 8X6 ZMOeIˍpETHx^OL*<5DlIw%lӅ$LjSޅr4&B`^e!i-)ãb D'M \)EILT >ɱOa:8V; ~{Wۯ_sU%rP^&A&B֞=uyVĞ -)٤|-Nkswmif-hz뽴RF:Ǘ en}^fc=o4&Wnu©iHs|_xIǖ G<^MTFpBiH,5jw6UgwG{녿1Ǔ.kRF2:v`x_DAEQFaqq  H $I$J$(J((,,,,, 00 04 4 0Ì0 4M40Ӎ0Ӏ44M0L448ӏ0M< 43!wnG~v|!i~s;;/ߘBeT u݄:[??~o%:d_a[!oYۙ-c[v|qn(em:{y_϶o;;'K;-!8F?]Ε,2L[{܇s;߽mn^J\Vm=[ez_{h~l.SJEsCS%2χn9 K)sHBkX˒Yf{mԿ=8߆__?:2C{khmv]~wfwvns~^9ގC?߄29V}mބZfGo67v1*}ong/B-CeAKԹ ww7s#s C|_s3?w72}b9kwܶuC#ϞW_:){~U?}C2Q?ݗQY.?]?@ʛ Qa)Ihx*S Ո!?>Mf:AׅdI /!sb'(sv{frm9 ߄Wv0~GB1 z\9m,(+YjVўN0̗[2-,~z]ݏon!߷}vvt?k߿w؍xw֍}Bӆew^6ۻ)\g]cؾZID~;qeGz(>߄o{of~mmvi~#0r_0RԮ~&orsi da.~:㻒F>3MR0?o;rךa>Z6jd3 C:YI67nri魑/%Bᡛ_u7ȭ<݆[B_ؿ~MY4Sv?Эݹ }󲱭y6;%Y߆n9W .Jgي=o9s33sfv|:ޟʿm۞!xg2z ߖwg:Ѽ~eyI˖׾nw׻^j׺wo[ǻui|7swod3?24z̫@n)|ƙAm9:wnHRe4РcvUxL:7 _?m߾Ҕ[ovҧ("n߷ZVJyofs27޿bٝo @ |J^.}?ЏFs3o~%mY ?3~9̓ěל<%|vzo-K.Gw:5G^z.V-w7T*moCz_ ߆nl3;zuw`0!0nGSqvWo퍯\[|+ox}-- }`Ɔ"{4yϏ[)n&n@;H- kO/gf ܭL]j*{2|#5yWzٙ:y fvfC!܊ ݟЖ^}·3f=wN3!O6V7߬?wN_A_[~>? fu;Q9;?rgvgnBЭOZtVXw3! ޅuݶQ%-3s?'}w-) VT1 Áy5lJLID`Ȃ@.+s<(9rP<A @";$^`*hlb0Chb#'FTH 71WzUjz&+rxцds-/`g - {ìEfCh>ʰ^IlW@r,B  JD4*NegU'lV' , #|ˠׁܶd1e,#b@u;}\U{xHA|`" `p)p|Iqx@=BH h0mP`@Q1.T0\#sM@8'^ 9{Z;7߄bB#$O"T;uC=޼!{l¨ %:NpJ _@N )*?sΝOG=+}s%mhGeb UD.P7Ձ `@眦soyt5Gh?"oML`O,,B1:kAd 0!HZ~ EQ€U #2X3SGK^0L|ߖls6p dYdlY% C0PA(&iW} ` SVҒ((`E 0!jbţ*HP$DmދYW_̧쭭;_-l⸌ 8]S>zO@3N|j;*AJ 5;@%0 LA A \Ձ $TAPi*IAoI HXV7dmnG떭w3+#@jߖQ0X_O'& "P0 x h &ӫA@2 n'Nxe_wnvfno@z~]]C{y4JnAVH%Ь݄p +NF걠͇# QsY;vzM^(ܾ~;^͢:Wiuy{QLUxPl{U˞e eS|TV@$%d4p;<I)rD050'rPs A*r$d?"̉\?[bhb]b<onGg~d=}^s;9PMc񴗍7hJ0 2dĺܠ5CceE l (U&$?gJJJWhLZ ?gC8)B`P!Rx$ 0h*}Bou`h0#7ڿPRxppzIy#1stZC!H $+=h0:f(@d7s3a F7my]݃˛j 3pNz+S#%C?3)`@$7*lʫ*൤؂u{-OUR p$<qxXy$^\ $X<}p8"4T`p'ޥCցd p `nLh*=d,U'I&[wiG>JzNyvG"c7;8?-3(l `yU U,}:l!G V]k -@ JZ-GLh_OYntΰ~K^PB9@X` B7D[qv7Yr( #b0pdsY̿#ͬ|Uōy<׆W΄"ha( )xXtd~DWv˓6H`ѳ Cs7w?336gCJ.m->2{m,(*"-#h H0 aIjF+2f4| DŽi/ߪuzݶZ? ZQSd NC@EH% $84q뫸A*AP`:#.0*K pc+dj+8q\D13 KwZc$gJJT#<` ARVō+{//nf|~,`^Yޭe:8$%?Eh<.Y&V$d!8B@Qa 5Ҵ=~bOb"@&q$_Av@́0)~0DAYHvT^Ʈd PA]|kzJعB-D@s L$ږ55D@ s\@{L3 BQ_a~ofnC'C ~1Ͼ_BJ 0$Ic"%Gt^4I %xb΀k~F݄gy79*z7n5Rt)VѪeo5 9MW"Zҁ{}Pf+^i*\ $xr/ kQ^G˱MIPh QCa 1Àn8y ŠR( I9)e~wSmڰwzJ+z߼qlHA $9+wNH5$d@`X[W4 6 vQo7tMnk7(EǮJ)e ɛ ֈ'n/Cʆqz`|ӔHKh/Q@WV n^s1x99-խe|` ZHdF J0#.+v6LN%)K{tvμ?#48@aVՊK6@aыRi9Z@|0AL{WT:: ޳ ս͵Q)l2ltk*}M4Ld ̀$Ne=nfnft; ~gggsn;/YDes8p ,<`jJ nJh`;*Rwk6TOANm>,R;g1wozŐ8G`=!܆ 6@Lp(%ic0 Q4!D#C㬺K`!+q$*Jt B"wXf1&Dqq@Vu H5tS-RP~3yI "|N?r,2"A X|ɱÑGɗ94qc.<-SҺbꬶGoϺF~xϾ_Fx(}K LtIIJT |2J:f}"%|5mj]Zpf >6W?6U{;lFNvSIz8K/]͝4ysQLsuuqhB*,ӊB_B/.SF⥅]Y E=pT,jD)pkʟogB9 >5ʨN~jƠ^պ _1`"O~gA4=:k1<<Ƞ$JJ\,ДлRjs4ór,哜e/A&) ZI|L(:pHA-mfwy-=JBZ6Ezb4tIa2< ~߬?/'ܯAUͺGzП~vV_g>wM"h&Њ LDSGcj(5h~B ͋S91ˉ"p~|>.jїQ ,/Y$D+q#E3}:$@U!)Q51WJ?PAPx qh.8R ~NaW ;~`9nW.%ȱ>uZ]ig'xAs($[⌂4/fVTnzZ&y?TQg!ߖyǻ$e.T}N(Qzn<gHMi[j{X]ys2oqos_a=΍Ȱx.!"xɴ:AfWtdx`/N{}ss*`ό&taqͧ\\+?VI(8wNQ<,"`Ehi.(ZbT&8yznqUT=+wj&[_աy{߆MǟzY֨y1JkrX IUXhI' )xIwQg֜rcғ(^VgkD9WV:szO^嚔քFʖHJ͞M, 8 y ujCski g}NbZLhmŋEUN99ZW#є9jfJ-Uo?qe%W/=᷍/OO8v,j'82\+lӑ*4.ÃT>'vUY9ޫ7~Z8^v3 Ykdc춓=}Ir/>8ZC`]NM` C@lm^udĨ&o%cx^IH&AhCX_2L5y{)H_+Jɂ,". iJ8\-`Ծvxo@@q<\ 5@Gm۹wadIiU6'u؀KƑ/m '.خ$1ӨId`p03t*UХmE;D'yQ '7m{6y N=a og'#ZIU&8b$  E#gpQJDsyh|~G$yDD$kh'26picp7̏ DC*Q7kiBAh8Nd@J닣8` F""A?8͞q|VRj@u MΆYDM)# \@#x`> Gr6$-u o9ݫTՌo imKjmse_o/׺ƚvGFʢzk/-icg,:0+IH2y.Ƭ6<*? J6b R ƍTkQ\IMR'e76XfӲR$ܨS(`)6sTҏ Dit鎐#u™k^I:G&nG60T.6S>caN2B#ێLZ 4!]),{ohkF{ aL&m#-'W{mO${拮iD?fe2{ZZh#JMʐL5>ݪSgꅉ@ʆ Vyd#U.؜!,5_r[[ BkmjjJ|Ԡl#T0!hP hH&B7ȶ4A" n'J\a3E* J38ԯ'u>(u GΒE,Q*r)ijqвuKBSx?(Sa\ P~},6:af*/l+1 R8¦ϨѽZm0".[+(^TV+܄o(jZm݂#ʚTɢUEcsEgI%e826Knžb ۋºwmi˟Go\9em+liǗc\<}{0 M HhT.Dv9R * adXaJڒA0\)XAbkiS{3<څ%" 6TK19 bJv{Z"Bj"2EUXG@5llDxbbP*<cAl9cjA},Ãߥ^xY̸P}ow^a0/3 &`JG,ӉQ1w"M%xТM`0g,1 IG(N6:r@Zd$鷧[HL l%&-NJBC&FrsUjLS80>$.>NԦ" ?0a&K-lzf+EՋIP*Aڔx1Xc`2DPwO[P/mx`7zHa:'b)$QBC|4D锟C C.64設LV~Bg$WٞmF*{5Pjx\ % i OFhDZ M&9eӖc)UQ@n~>KQD>#j]k뱑M+0bϨbjѾKk7eӜלzov*nQrq_a,arm({_1 㬱bLK'z.1~Q4˸IYsuxR˓UWg}WJ7MWڗ ;I7}k=v2Sz4M#uiu{ǰS_!lEԨINeTkBP Um8~32÷nR۲^?dq5U)}MV2ۖ>{I[* ͓QHޯ"栝(}"V־A[a3榉]z̏:4կ ˷aصTN3xdpE슇%- @577 5L/1!O5TAu8fC2S웟H2-P60eS:o.?fo[ Gjٝqf \&Olمq-bcC)b`z# h HoPh7ߒmUݭ_mE}YZK`1DHFg#Y ;kHݨBJOu%O,kL Z챞n>KUO5yeo}{7ur xY#(5EwX= xpt)FYמ!;Ds $^phYBdp2FMHkeC\5UbIڽmHM**:GTq}0/|jn,ܙSwI@5~d:/(U,aaeM#wx%βkw~_لo<ر/&z9SvO2-u h Gsvfi(KUםz d۷n4QA7Ǣ×̇G%|UV0z{JS ?w wq4tM\q1"0_ujE˹^ ׫0f k>OR)ªf9hMdbm|gׇvS}jbp^2x>0P'0V I "K 4~|ؾa&7$;E5:@Xz'}*T;5O*VL#F1 AfKGQ,VMFHI*ͬ"BJ|(g LK [o0 D!hR.9MɈ <3 Պ@a@Ċ/&,|QA dfJ'@ L%2jnyUMm:WJ'Mg$fÏA,pDch8IKM٫U;& 0U  5^1pO •-eО,>/%cvA1+8̖.=>xpb B8~ @4,8ѱ#%JWChGhY3CXZ[+W ZhR4(9d1+A)Y#LhQT<8ꦇ9Uv[__d;μrжi]OP1"J^@>) (wB-UX?l14҆7xD0>Tsڰ5+^zgu&ܫOXr7.W^1$Ubu[j˂tx?H!2J _`lɊ=zc`/)DğH BҐ-s$KT_=~̾~.h١ (ѩx2R|Wu$ Жw&#vի=N"?6]ڿ{s::'quY;TB_$O#aQ,.pM#m5oO孛+vjj^x/(LJPߖO< Y̋ꏛǫXմ'KښuZHV\;@=}lɔPxN[?F3#|5PN;d9 B@_γ=贰*X!ةK@@@TBTȭay bq%ŪRc:Xb4jeR@'hp# ycĊ^q5 ɬJωf c2 X0~u6kPQEvP,TeTLF6ٲ!\L;3Tf.C ?"C&c&HϋsNBEjK(@ph$Zs@kQ S YAy#R4<|eMd9j~QkXUYHl.㲄h!DU$,BiRL9e0P _뻏n.?Vdk^W_;wlC7њZbI&t#JHat3%(Eӆ4ɋ _4L )'KqXvb4!Dfy/!5E9uE|T,|PPH ;M_^Wx|W35y1g+1*>2Lտ?6 ie,9DłoQyweU}'Xr83CA.Qn<fkjEjb9Y):yQP?GE'B29GEN~K%T ۯ*긬G('oSM.5Y^)u֯=n>&AtF:_s9#X{snyYOڳ.| A\?"M2)9xǟ\[4oY;kncAk6lėp:9ῆu!X:P&3pG/[!M B4+͞%g,g1Bb"Ξ>^bS R~P Cd.:!`̀ț `%dH U X! ez;ECTB5Ò(JOUzNtS1aZ3+ _Ye%1m|~[7YpW.Ptfa;Ä3B+U]L¨þ0dkBXecAPPF<]6uY2E-$CV)-lPR]B: |K@N6@Ԋb7$"-` D,o]dKdD3I % P %r&d0$'Xc a܌ |7if0HKP@AA!/+sYQ/$B$ttӎ9HgrɗA kO6%$ 1xN٧.Y{/ɸ\J֍ɞ+;'.rfviP*d0A=l%s'&??(w c+ibK 9dP\Aun%k]9j}t/֊&4oٽ7,:c(_5&닿n-\a(⊺*N*~_ڭiƊ.&>3j[_ݗj ֻpǗOg}5+Ǎ>s>/ylh/mC8dk+aXtWŒhUUA&+9:q"x smrz%򍖁ƜVUwNyy6sXCD;|a? ՆJ HT =LҐ_]hX%|QL H ANT(4lVv ͅ|j?eD]'؜lR r`nNx,X)3H#dD_kl+ M!-FwKjΪѳwT?(@X$"T)NQ5X?@_Qah9j@,0 6A C_$ I  @n_Ga'jf\n Ȁ@FÊMCsRBsۡp>*ޫs+b֝hYdn[4UD+ EAnm6ʓWv!5&RK9 >)*XtAաR34ة[4`TRib"= -AfmQRh `_m-ցպ>+"\摲  A\ |bN\2V)n5x[6#m= lOjɯU2gJ%Y4BȂ g l\!)eG*5`n(Tn,E!l_uA{4mR?.H bz M6_ao*J~Gר`آgWlï+&'D#Uj($Z қl坬"-Ǟ*(Q'ߙ`㴣 uckH`F j ]^^]P!(l4R%ZtB`ɼJ>zuRZ.5N6##T6Zg_Xؕst2 ~Y{mfַJw_$0XtW>Btyyٛ+eMPENJA~{n=m!\#|/^~K|zӲ e ﲮtvhImTJoQH2 H4:8v'Z֭Hd0;Z*q YxXf;Ra|B:z&<'0VJ]T(0DA"-aJ^lШ.QLZT/6KE5HW?K|@q03I|0A q^ B8VLPIVIPhǃQ)0f7 cdƆ;AQ֠sou2bh6(4 '*,Bօ-M.ni@:%Jq&#l\D 1}pJHv\R DY 4 @tdx ˈ/#o;XQ|jPb1y W]4z+"~PFd y4JA(AY$]%%Q$`JxT7*i!cFX,HP?)dѪ*u a %d:㞄ԺfNO֓ 'jyq <HAȍ@2  @O`O*xtxE+h  cԯvׅNN0U}QƬNJ|jL򛄯DfAdĥ`j3C0GY1@xA JB2өFit}!P+и LdkCpVE/6YVGE#IyJo⥌6WJ\q <6“5T\E_%YC\/!;u{~k0Ov1gI%2%J`&3!0)à]PA0hC1qno @Ae o+!{\L}ʏoΰ$SI̤Z2S_aI䡳˾sI]WcYz fO%!Q֑?;~DSd˱1QXDSOg`̞cYϨ$~S?v}X87~gve{SXV@nF|T ഗx=lw9ų%?1؇F0D=R1"V =ꖂw$QtU kpGR'4! T Nz xr>RF~Dw >ɻ||xm5GT|L#]A5B{vM\Y;v6N U.!3OLþU&t䑾{0+:Kd.fqQas5Mo-ǮF}t{FGȐcX4>76G)vQs:`Y䐅Ǿq?i^ R.z3]bVS LYM`}K5', C|waaxMo oe_jB V_*qpHIHO:w=~lvy;^ďib1"}˳8&%VqJUP=\QM 1*ey1dZSaHqQhjsGŶŃTAԤ1T0peN'-Ů֏˟~㈱oš`ꯇ9CP?ڒ/ZHUz8÷g.y>hi6ʚ(R8V6HnyI͑*LL@zsN ]>QIAЯ . B8j-P$E+C/<砉Sl$\jTp!'F H#g#@u0fl:ۼ}q1dF(LKq* =7ŒNHHǁ@6+W @j0`< p `ZE.Q18JRI+/V(\ @`<~L\cxc:bEҔȍ"jw$WR'@:M}F - Oa\D#sEP<)&IƗN3' eU\ ্WwLE?(.)$!$=MHg#MDKAD(š2*ԛeŒ`JDKt,< `&LMkr_NA\j,\ZRLrp96P/Rz_XƸðu'6յN bjm'\mm9^UNʆq/=^q0*3)Jهj[ukeɺWi-27,k{_x^Ͳ{J6? aIYXF|]B~6n^eI$GTZOC篹 ͜MvhHlɣM,Ӧիƺ5lX|" ]%*׹i яAxnf=$ ý  ma[!SQPLj V |8|DF ,S{̈́7ٶFT$6dY0й|VoƋCPp/nph'13(99+|CVV tA.ɨ$$M<.+D!nNyj͆ZҡjLl:'@1)G0qLݷzN0`Tf+,I^?gFυ"ǶM?H uT$`C\^ny4MWĿ4+KB GX"Ya7*#1L3>2XG,Jn`RDu1B*(vEʉUT+(^+;UI14 4|P.X יU*ܭ Ӽ߆m}1232zX_\ź2T>D"':Lʢs>XARv{FZ5~6MbZ?*;ޥyz65썊y8wŢZ I#$a &$MZBHS vix6 [d!ͦW%t 5XI>> "KHy򃜿,R':$&+ 3Z ;{X=Wgm A=xy}U4bsC+ʝg5Zǽ3+ZEac.⸶}fgI:!-?s*QYsy2w.3tQM_Ya=s޻)7;;+;(L2xJN[HX&UW-_Γs}Yg޵EUXtpEɿ'w5kأ_J#HO -iyt~i+ABۃ'o4IKo hQH!O^l< !aD1%T+i b`צA@l``[Pb(Eq,hI.Jf)V[d{c"-C9P8A֘@@EL. M?@9d >T" S8.$c%V>JǷSV1#%,";B*HD2"XjV!YU+ ^Ud H X@u$sa5* s9,jru%J,\BA[gjD XAb/hJ2<'$5+gWժ'4+2JWq4Hc\'G\1]f ^Jj6|vt7!@)ρ6"(W 'EzY1hlk?CUmiEEscl6Tr4EH"Tz-Ot0*zU g%.Xg+e&Fw[3sSu07]]m',!OfqckN„7CBbxٴ$Sȓh)xz3 xul@PZE#m @ű>Kv<~mMsjPe ˢU\-EIv/2/sV-{C.[D <.&5|8M5e;Xe:a*>OW߲ͮ֕QH.~>H}o_uIdw_)% zU,zly=KB^=޻:uZ'9^T&Ē>6t$ЪfV^9Fk#8C|< aLTJ ĠT`:5U#Ai1_χ6c:b .p`0PdF2!$j"S2a!b*U+. L; c";Ţ3|Vм50_>*a: "rC-!ETE8>dhDQ`a48C)ц~5;{@T+!g}ApIhQ$`(;\K- *Vz#KZ,XA@K ,ȔAmpMG(;OwMaK*lԠAo7hZ,B>LǮ":hETjOt5(Hlx\䑿͎rڲDRSxB-!f_e uu& AY~ՋBVͽrŖK"Vm /I:nǚ*@"O }ok]}$qZ)| CW6>NVy3Tp$ʌ tXˆ  dl n uF-#h V1y5Y%qD̿SUHtǹlvn˜5s ŗӧf@<%)QW:t&t8z fOihG<dR'g< b躥C FψZʾ3z{`]9 B U!U&sboKV m#454UZPTzʞ&[ %n1tFy;.,ySu7XSjtRgdq:9 ꤦ#UL2M8TUsVD.Be]?sPr !Z^vo43ּHҡ8}%dW)1^`͘α`z^1y %AA!G@|(jD$E_S}: i4ä -ȈTa@s]]6AQFaq r  $I$I($((((,,0 00,, 04 0M4N4ӎ0 4L0N8ӏ4N4O8O40 8N88Í<< wp[{trkߗpϿ~|>˽S;+p<j`+wo%u9JڰfSyڔڿrw+cn{qwk'XjMMտ (JWbﭿo\tQfn FxbKCrRwwyiH>|Yv*֗w_n:ʵ_Wua^|  2y]?mMSzyoZ5B7[Q~b1xf-밆}mS:_۟Ww|foi}ǾnAHt no_}__ˍ{isO}ҽgþ[ϡyN^)\/)s~>߉>:oƟ};JXb؆D;ev==L232[/2(Pm;vf*6ၕ[f_/,4@~>din{nskr|_\MgNӷg{n/kPg9jwewA~g|:O[w(TU}I6"Vywy9Y3ß~k[weu۟w6nܚRq}iզӗt9^CߕwhWaJTw1h?&f6*YT]nɵ̆uIMZ>{ plj&:¯e_7IDF鏂J[߿[_y}/_|n[֭!7]s9qu_H-7ߗ7}Cy[+9הoW]ɽVkا3??/)ߐқfW7]=iwW_U)ۅ_Ͼ뽮߾_Ӭ]o6e]_} }f]_oz)Ӟk>zI^ALғ\3rk_}Q&;]iuQo?~fB)(ֿV]Ȅ<4B57ߋk?uYڠ{VݱGݧeq #S՞knma{CyNʷrcLwa`A$\p,Y+<*׹NZ?Oc.ss/w}o3.v]߂tf~h_gm+{{ww]u_뾻Ϻ]s.ƽo}(eܵۯ&:Og{7{7/&W>ww? Pij`vMcxݹϟ]:_윕ouVs_~W>{C]a[\2y[K~_']kk(9{j;2'Z.8rFyEm9[iH{5KWmr=Z•o6C\$ &Tٯ^\׶嵗ۛ[s)t_ ܶ=!7֟}}XeO'빗w C7\kk { RmX}bK=k}/n4R;o>YR Au%TGyͽ̽ϺL;serywsiLX~^+>v %@8Q5Ά"̀FL6u0@J"?92 'WX[(@ *d$Q@y w~[`,Oz|f!,EA 0,Ǟ-mSۤo&ŏ/; FɀYSE Jm{\#@la׽k)57L_/f]+ Z-=n*!'}]o/o=wwחwwyھz'E;ZժIHl@F>_S#h3u\:@ )VԦ(v_kb}ZoK4Jc{Td*v|sz'Vq8oEX ur`a4dF4EIb K|)Hq'*K@A%U!k2Wm3k-0'ƜU<k?֩=-~ p"p_rFrXcS0CP@)@lHǒ\np,:@ P%NmOڴnU»x[q~g՗ē$v(s_YmwxHCF AHC&ofaC0%th\ @b0 d9o쓱ZhzfˀȰ GҒł$nW(Np޼dv{x˷{Q0:Ώwb9y>Urp|ӤOZ)Ys`8{rs8JAt/q*jPl mfw}&f/,XrkH!IU"a>jX PU 8,' Jc=dp3].F\speADbh$H@g?"9 }Խ˻VWwp6 `9zu}mՓ/eisS-Rtndl@@2( _ /˷vI^rR?o}_SjOE'}~&v0JKF?gw: fd0A.nR )ʃxB><؃p0BSAz'FH' 3g^~n~^~g0fAO n5Mon|ԴQ @7@1U@ed+o3[%W?;/#Axa*.\VmǭV84SA8=K7-<..Dh 1Lj^v3An,#Ə.R]0 ZVJk В%Hַ~b}wKgy4'-@@%9ӤԚ_ӑ i:^<&肟 A9  5m}>UVIמ-^SoN}r+ptg".HOWg+3@3kxJp0@q"O"ԅ4 p`!Hr wP;tan+Q%ou:w}ٟ[?;6ko&#B{IJ^^wLFAMݨ_2jBG986;DD->1}uߏ_繀@1ZjQ){NRV7I]a~` =0!Lo8x-+EzjbP٫h`n:s!N:@Gd=LSeHgqo H`/~oSܸʸTdh^m}+%TuB'"V P: Z;ϫ㌿=;*U&÷~c۬P@`O FPخY vXq é$1rֲw=')Lq`(FK9 A|nuiVmުuM*hNåov2;k-y[gvsao}a}ʪO8tXzl3zWl1Ua@&@D?+87nR)<|nTqJF z$Ԏ1tPr<,)ETt&frhQZ F"v. Â[P;BK&Thӏw!)mP81t!IQ_q=-AT>;ܘpAv%*"A"HzBp>r7^qiE^Ԁ Aj a|hGG`ǕkpE pHڃ,\ !KR*S#3uI%l_Z_RX(eX0 /tQ|!R6PGTwh®gBY< ƇL] YvK n=G(NL\}+xAn RSAQѲ C6:*(AĩNQ]uaήE)H?gSKV~obcj? ,Ee:Ͷ~ a̒q!w[s*쑣t*`gm˓=6מҤco2ūRk2&Q{+'i- "K==;uRL`MF]V}O_"4rv\=h D<ꚵjy&zv2[Pzp?BDxB v(QrtHZ/2yHM`6_SmK@\P*mWh4-U.{J)aB9[?"2s9(Lg7ҧu5~hz XzQ, P>zAdfxE`}#JӴ*0h |q&/Gqi2XX%II!} "1 DAeh|&W̯G=_Cp b؊!2k!% 1aP6<*CYhy[gj56:ޱF[d}8ײ|eᥐܻNx)qʝLf0hNB&\)V*ŤG\bQ32HKP¢VI=7\3/2C_d1]Lqpj7!%U00bgan:PtnCg TcA F4>~axcm\YBdнh>Y,48l9 EAv%apC1X&E!ld'  SiyʄᏎDs B 4Ӻ pw\2TUf fPQ&a\{ *4pIy?"Bx" &":e GaAQDؾ%"їFpe%\;_ ׆DFEa]hĥЍ_HME.#U~az | trה06_G$Fk)B38oI=Z @?- :pP0:X=^'pJK@Gs/y0I3N N\ݾ~a_ϭ|MGkKNPdB8جlGXTrmJ>ju(Z_PHϓ9e|' $jmZ;.8A栨 ^t*km_FMA0ecAli>t RA/&㍈<%T&80rTlFq8òn]_W)&'j.=_[}ʹQ}Q;aEӒP>+<n |cVzԡ^㛲=FH-]'.q4#Vl}:qw\ae|, $Cjyj;x/sfwW}̜`a".`:ԪZ+-^H kCe/WEF|3JzV8/jgro5ivazKôkLTvQF>?& Q7VxnT:"{ %M4l&Xzec8N" 8.⠚d EA.1uC~7hDGD ¥>`C(͎ՂUeszaf"BMl OXC-m'F)#AX7߇ P7.p6"':!%PaSF"Dd `"iA="Hf EwjG &F:FƱu7Z5m^9Xљ,' #ra,EUNJY3e -6[̸6v,͙e9%-ϫpA gCUE3j)lh73خJ4&D.. t_{hqӧ&IO?%q_ DG:VTƞ.@paw@#u)R h${ ΃߬SzoL5w5sWx =ޗuiB/2rdTASa=ܣg;28 >/+by,r1idKF9垂$''C]}+3.X Mxg䱚Vkͽn)#RH[2!=~Q_a}[CmOQ45MJA@AE{3W&SB$Yԡ]Vjbͽ}]K7D57iGɴISHo_7f6k-Wվ&_U 7%ϻE.9T׵z]ݔR&lY+^+GcgE|ˍln޼{Wgw}zoTt T9?]<sX3yʴ+IIDuxSTRN+ةi,`݌c2@ k3϶jsd-g8ܡY OhqX|a-`8F 9rQ=+ PL.: 1>tFN:'tdyI($\E&*C2WBMqHdѓtR(l2JlՔ!m?'utkb^Ra{Կ:?Nqc pUC ^ 3g(שu6vSuAGr'CZ8|TLmmv5$%Z+to㨍tgQ7:vZؖy bD@J0]Q BAV 7?Xdgz"%bg"DTe(R+TmͧI-E;"=wn{N{0Ld_u5cRMz=ڗ_1TRJg!v)U9W9w'W?CMQZ-4MAq>FT\ޞ-o{&V:3?zkfN1yo۸R KN/I *ޜt3ePѻKe,%,& ܚQze4lMTUтIO"H^x qY"؛c?k}[VP E}iM+Uȩ35Ȭ!9(J}yҴ2VC+WHxḀXnX%N#䇆]-)8ŕH~ O^b`:t4 T͘IX+X s8׌@`T4GZ7'%RjdE> QN6C&\PXyRI|C02eX~ \S8>RT+a0䠰88&P(}H|@)CA8ǛL. "S6 fQ@SÎ#HS'LqX.h)[Xo%0KOLtx0b0rRz8BxZmD 'yad.0eP'T;!0팃I2B!ɵ^5 ZƨĸSX^J-Nf Cc7/<,fhAF+,`iE 9(&Lby9âNLbXɐ=}5!ȱ6@PF5JeRHg %Z dB k:ԕ "<@PNKgCxBaR:^&iڑΌ tG usO[V1~M*~3J֫7yӵEٯkgSNR!8zρ8TCvzW<+Qڷw2{w )^됞?;Yӻ'y}+긤@8>J-PJqѧpl/YF%fv:u:A!>1< OqvVJak%l`d٥T|$JPh;' H  [ k" I0;d @-T rKHFT/ 'և䃒re9Aٷ]RpJ @ ma,` hV_˫;"puF(RdT-T zt4O&*HxLU:E_F))I /~̋MVI_i$qhК|^Tvzk*" Rcy-8C@2E-v󔚞gcS͜@$PTfbYPTlptP#"xv$A!@eb IĒ#181!Sh']alÒ?9r$_P:VXL>#:ȶEz{dOw5jﱷke⻺~ߌ?禾)ݗ\fyቷ-s=^Xe !sNvh,u8sF±_JіԶNTec6y(!`ߍognRd:r1HQEJB k a0&B8&Cl,6B`Q1+Z3PJ8V㱛E1/c@aO5 +phaT $`S-ԦH(]B*O2 )A9)t%B1]N3I ΃~@8Nz4r |F !+aN2xlZDaOJZN1W! z?'gv'rfGbBa {*ה Y(V@of.E REohcbldJ|^azX\;sYEI^BDHdWFr+Jcs,q34ÑV*.n,]W{&>"fIx6+.e "{\.6xsGɻ#qpz\;NgO}_~QgdeΉ(I(rJTi\nzZk%=lv.oITɸOB^9nji#(DT]@#̃5>>0>(UK:^ѸS%PNg# C)o\*рhQ:h"By0 5.c" X6}*f2ˌeS:*ZtPwT29#})\>2jQT@چZЮً&!:+IByFap@R0 Hh*ǡy/!Aȓh~T#)*&6)KDX)O{#%Ep SIH:-93‚XH[fӥ:͵&|Ba91/2YEqśY}><>PH%OǟMVA`e< 蜄OJ $6KT&>*'aE0zpHDtdR-xXd+@Hjn E$,+PX] aM6/  P>CC a`% ^U Bĥ0o#Xz)-H?610bѡ5q%@D=0BH68"4bB =h`kHdi Iѩ*2(0e[jb%e ㅊ v{rqtʉZ-(>";2DrPda%IJcCM䢄5rD"NIU+!Us(ld,ӱ)FK'\-סH*GT2E9g[qOTP$4uxIW}Fҷh!CoL@UBS%9[4JIȰ!zsKe[56ߐ^ Qh^C!q?!Xq[ݗ)US{_~swy̮rD`ٕ~pNJ̊@6]O/|IFVpkx.T]а6 i;h by( jeM (tIE'jL.|ʠ-Ax,P`fMth;X6je Y&nnt*!PaLlz xB!qXIH*@8K!*uC6++*͎)Z >1NNxf1OۿgVDuץvuyLȝpӹbwUq'=[uomF*'ľ{ȣ֙bk4i+Fp]ɫۊV_ ~}?/֧ҩP]" 0UZVrv^tH՛u{_8z1wbVYνjl; BW+>lz}arfff\oAjß~73ny qI`-j'Dz,&ʉe^n襚,p. !ɵS׃2yŢ D²J衒rxL55&!`ٸz\9YN%gǁF2Lt׊##H ǃ !Ż$k2}CQ% bjL8 ܩ& bjTD8KXИAO7/xQX2(59S\ύX$D٥iKITq1҃몢^鞘ur{)EFſn([~xb" ,;Jy,XB adZ`PipvZcRDych:_Ltj.^|W63s[ZAeY%8ɰ0̦"_ajP%F(I\SFr"_C!Ou)Т,i!ƕ~ӳ uM)}pe,AReqlcLWIY֛w/e"]5n~5>Fu=ZNdx w.J.d+2*xhI28^x"uDd DGLbnS WD9lܖBs  Z Uű`2Yj!BrR3$G܁0=1U ۥq BPIlIE&gRk#Ű*IEUvo^U τhdb&vPOƒF>[lT>!R1Ah9!|v(`x(9 #bQkǃ/GOUm ' 3$.>~{G} __p}[;j?LNu*ڱItnj>v3wV#{{rioBfY+$ӕh2N8JtJZBaɎ,MHɡQ9K.ӈ-2썰uҖ8/c?[/ 6IM=R<'^>6_:Xj9s"bߑͱ|[m)yS{83T~j'q%C\d=My3ݶ< Ĉ#H)rA <,X&KK]=R"[,1}ks.USUzU9ů[ŭ'ylDZG_}2K[qc()6vQA/<8 1|X~|8Låмjٱ@#^t" cU%bfB2pvd1^7d" #7i-%~Q&DĥpJjh:d^RB =:!0WQhK:XMYC/--~ipyOA]"OE2'Dl:-/*g"89azȤ;Mi4'*;\vN7ɭT2)4< n< !NixK<+2o$]UvjZ2IUn8Ҁ8fQxLA1/\Đb' LH=`(INJתtV)%QžLpo qMݠ>yk[3家:_qCϲFCלh{jMǹZe_+}NMoZ"~l!,:Y*}n YVIK`݊LܪS\[X˙I*L$c1K红\k"FUbCVGdRQ_4NFF02Cđb-N4΍0aB~%'=ʱnceڛ,bU룳ik=~tSk^IIdC8t(oVf͜$kZ1ͯI&&lyOíj-Os?ïR{vx8 bAEQaq  $I$I$J(((((,,,0,, 0 ,, 0 0L0 0 ,L04N4M4L4M4@48M8ML84M4N4OFZ y}ss9w2ypCJGWwkӥ:V|~e9J/ȔHiXu6Y"[=v.rCm3^>ghzwss3swc-g1_(ocj?J;n0-F'Aea1σƹzhq`bO=1b[{OSK/zG]_ї8?u0)"'|K߃Ivo1;CdŸ9Xg:2 NΝяlsr1ν??:7oF=/oiWvHXo'5yEWNCюgeOcov[:R2??2חNfʹN`Ύ__bl+ JN=Occ/^k|3729Ioܕ`cJтoFm~[w6cx{3Jrֱd[ߖy1̏*gd+Zp)|0`vY-k4Ėo.;sf_m{9sj +')Z;BkF+YGd{fz݊sTO/ִzޏe-q0YMtQ݂mQEZscezYW7Y4/~*ȥS-kz/ʑV}[jfo;Ytܺ9w߳+.;;ݎ|7;_a2ќcNK-s7s37w1Jⶒc'#o_--c8/{:̎tw{zQfd-c1/q(z}u8`vr=죺- ɳ D)-UkʑY5NW|Paf[h`Ÿg~w˺Ɉ׾rzVgJ+~;ywfff~wgm9wόwCq]^|6,u}|g CϞ~i>~ٗ\n24̣̖eߝOl-Rv ڜ77^]=^zޗя2.ݴ1dzoϾgw37/۟ifKz_3y~Ievu4ŹR8l7na6K{Fy/R/V? d >,#0LQhո ^kES,] PE/HtwS^cZMd&@yG+@MK~&X [T@Ao)"/[]"NQgT_a,Ǭ'-zGg-G~0K%ob5jδ_klŭ=ciӲ~m֍j菨 p[/(>V/C 8L*hJ]~oXܒE{GK6]ra90 (j\TQ/9ZN"G(b]tyx1RT<J g`ۚ 0N(Lh$C ) BV6lgj9@K ` aj@ *ٖD86l`P,uo5261`G)sv.Y ߺ'%Hp(r4|șVq8rp0wcWk&"a'aΐLI'6*Ee J'RN0gs~vpW^LB3@> Y3y[:7~ F!HBX`2@E "&^6lqi@d(h5?BH$A.&<ˈ j4ruX)bH؍lBw2a [ě'~ T @ aV 0 ,$,2[aĵ8 %t$9@+'0(@`p0H~5B*cє@ԣ ^G`:0\0Łt gf)b+TxABa=3p?a `'AU{e D\l fkuÙC9J.맷[|9Ώf~%X ^U՝di&0ןB:tuN+-܎‘1( uQ*ƅ@g"*Y>H?k9J''ыE4'T;})Sy$J@v(jH/T )3dgsȢF؛Lè>U`; 3tؘvBDp#Bh #$_]Fz8(o=XFGAd~VOkF?Ҩ@7$N5ؤ8[u`Yt+S *۰ Pƍ5K/nLH 4>%ES5Z>JF0qR 7㉝md43>.N\bVt5AgJc?:djQSz? ̽YCe3@XX UD0@Lt^ 5@9˃.-}x-Ef"KFv@9D` @=AP ; d,YK)^"H)'!K$R#Gp`hCw"Y[2/kf]%Ibюv`2# ?Mo`9G t11fC_lS@۱Xi]]^_ L8 AQGp]bV` m>ay2ӧP,H 6|7c'jQ_0va#{9 :C2 ;@. m-cT/CtSnP Olؗ$Jm* +4́J_*J;Wgg:J??";{K?㐞 UJC*_\~hcm֭Ɲ02k{#][VH`WArS%PB0J@h $gI I(G3pC o8` ha,,RCRd{x5MIh22@Xk@K0ضcsňSO33#ht-0$S)19),v$Ʌr`"_׹bC?[uɖCg/ZD [zuXV2Lcq_)v(LTҙ-^蹮vrdmEu鎚I*PӤ|dEdžvSMyV`~ N p+,1@86@˷1 {#R~2\|W<!YG8nBZ墼6_k)k? H7W|ᆵA]ptvABKh)ŬqVu]ݸ/m,!U<$! Q^r"W  O@VIoj>gcv-Җ[RnAl1_YnS,F90Ol_i|GdE|ѧ*$Ƹ jeix!G3+atES'@.bh/K !VQ$Bz␯)u(.V0›BAF#io_ZHwƲ p qn!1M7,x \P 4d7V#~ 2rjΜC04-Lgh\Hh$z @AY3~KANyq :R}r(Xf-;&`ێҘĠx~E]<-WBC3DR5p"q.j5ː, ^nؕ}Fhp %7( !GV *RA| Es ޭ\+nL`X~]tm%ԥh|%ǣĉ ^6<$3) =&f"aZU8|} ֐Q@"T!-n A|9ը@M2p[I8G('mvj/O-npocez?e54Wwy?}vW_ ;>Sl%>{TZ@BEJ{l̛`WB|S!`(3 >~&H&A@P\Պ?˥$~[7;t52:b1xlGEI&gW+:Ϻ?6%+[YR UUn˜Bl6.ʬK$o-b6Hy#V$Z[)BGDۑo/!mM,)zoG̾7,K[#KرK_hZ\mOI=qGȊFo'/ #Y?"!H#LYe}bs%BU 9%HYj8ÐqI\f1?(V{WɊdYTYgZ?.3ALÊN'KŹS~#Cekx V5FՖr/g_eT`Nڶ^7./-ݾ1K7D܄*fqWD6jI׫B Ĉ;R5jgF>gbɣ͏/tazj4;ٓnVU=J{9r Q̂ >͉2z/Ɋy=Iy,q-7z=b$x?䇲3<5$='bVNEh4׆.z;(R>_["kr3~adR5̫cqg}od.HxrJRȓ&P9 2LTU %QT()QWD(PCȮGŧnTxq79&)sIb@:+Dں FF3QPf cH6][VbWS.%™f Th< (LiKFFP&wC2EL|~TyBDV#yO9i&;r6?.%1`Y' %<:7u!@L;KS%I:*5+.|iS%x]z_"Jao eq0qtJh4("whX3#n)VE /$ % kVnr!_U*E+G!1'-C~A|+,MPbQi>5YQlUZa"#|7:8 É^~H?dd[hvA*5Y-d%pJ][Z[(*Vk︅QBa PHK lRhXUdMs HF !*rڷ1_tqI<$4oE۠>S0wDl.i]Y PNcc{G谮uKs~WoZcb9hNaaRr$,_hT٣k[NZ8.ҙEW| ¢&'Ѐcq6!a:œEKX*𞸗2dyC`*+*2Eb15/s)Yj ) TOnDq Lukp=S0D LT ++g!m:/(iv<v 1F([NtٹrËaћbja4wI8TvY~4aV-+ Ač>gҕ(hCtlwU>1BѹqVۥ#âz#vKdR[.d3> FnsKRgQ r53RZ 1F\,} TR|*Gnn} >(PTpiQa2w 0)|X?nM=/픖҈IyRumPH2)İ!R $ %#yE)(|,Qo!Ky4\* F h87 C#2-*ueuxD.&jՆVX!XĪ/TJb(h*y&S+|7>f0F XsB5`1R VOEc͠8QYHk"SJކ?ɘIb&iQHL!a la+ӠTjSN[{tua%]{*Xۥ!*L@cPKj%[E^}RzlKJ1U)UBcqi_]ɧ-+6׏4\66*8ϬhIQ<[;^/Ge\Xa bV%!QQe!4bP+ B,C$* GBJmU9#?AV ԓ薊P-dky\{ ֋ 0e0:m# _7ǘwPJ\Zm'~agg=nX M2~YT6V"Va?]U;7Jϭm]d{ۯ-fTOQ5vLHC!q}qsŕŽRb,eN= J[YO9z3R1 Z o*|Bs U$ܞ!  I/ G#xE"8bc!(DQɡi6B$ vVZҒeLDD<<@<&VVX+YHD1Z LDTddžt8axaU`yD'0z$AVRú)8:xf ' f+(uj@T"P2@&4&%&(|X՗78:*&{dj,)u SCBRNً QaG_c%AJ?4u'PSM~(4!bDd-<2:`YW}Hjx%:v Ta)`lP*n.ZΗ4Nk'(g}NR P1`0$xu/O0.)*5=(8P- :r㎕>VItĶ I75k.',Sh`d>#U V_PUIU[*VE|PDH! z0b҄*;a,(cF G'c huRz5?l)d;;3-D*&"3:- (h&%(ix_h+ d0) K<].@B>{Z+BhQ@K$rD9RT(gi|`ChPSQl,yT#H:-0Y jd^?V~d2؅4@3_;}ӴlNIY?ǴdLCŃ" #"Æm@RQ(MfW>tK^?8z}Z皁<ջ-al%~ l O}#@T 6QBaR&fQ_,ft.юX771\DcI~n(t\\/Lѽ ?Ft5 -!Lb - q@$׷4 fg߬|JҽCR m0@,@j&-6+D A` 1t`<H`?CaMha Q @u / K\$*~(fJlR:B70ęs9M-:eU=ccM\]dNRغz%FYͪoQG-?[iժĄT]μ2K }ߛvadW'80OXRǜDm vUmp&*h k ,N^,ޖAOU?lɸсaٰȪJ>/&*sVGƢኇ 4C#i; [a\ش%I0JGӑ4|#_#( j!-'$ڱ&Zl@x"ZQ#0X5i%T#FHCs2/}Zmt<)(s +l6!0FLO !dhR6Gp 1,ƐpkiiBCA#(2\$/",BF^>dĕȄ0DF!.(!;q6|0Ab(5SKAZJQa̔cN h{$ "P1yl@,68\( kIT,!:|YɊHPDBଇi ǡ1G M$lQ^h!d!18 OQ4NUY+QynB KTRhyBARHU V~Dؖ %*! d-JU^ 'C7I$vEL~IkPDAd/- ņH;#AUx 6.%xh*(O@Ur߬b=ٯ~EpXnz0S"J12O)`zZF|?7 *\u).FУc׉-Y+77(eB?3tK(dψCXПB,u+\ͰR\[9 +p-8 nxwf9!" Џ!-`xT0q/$NкijM"h-7 b8hGL%C V8!t`Er0{-+OTWTU S:`C~f%JDPkO $Sp"$A=6a$i4V8jfQ PJ ֜#HA5>; ]O($pz6HDCÄʞpͅm;6%hgrR¯_ICfzշ$c"֡2N/R=:WݦLަm TOs'56oK ~ɤa=Jo_ t_J"%,֠ҵ[Cw2@B~SCB*Zdk.J`]3 .S$6a]g-RbS J䷯_ϋ:QeZkֽ}zEu{~Ɏ`?W;{gerڠCG)vG)7ꊩ$aQ`qǔkAѨmP-D$" @<_@^Zi1muޚ*R@?,t~PGjH99sUY!mpi&,&@X5 m)ޓT%j;$ Aq&40AqV%¸:Hs~Pe+1ܺHN!6䪒#Ҭx |I;jHkh70p@[d-RiIG㕗Ome}ޢ4Gh'yJ4܃UY{kn">W"B;U0ϨuN3xPJe,IF Cȟy$E2ӄc{Audl|xh! i=ɤI $D]bTys(8J0 Qy ZIΔ-p\* / r>#`~ssy̾74fi棙PmEC zAL?`K8ABV J(⤢Ն X?7Ӝ_֐RW4K%"l2a2; BJ 6?hj $€J㠪p26w&fq?-gߐ0s`2>x$ @_C+ba (nfa9 8*Ɂ¥a{!F4 KggSu7cE ˑ&)Xҹ%ɷʔIߐݏ)#@ gZ_S!,Dۜ@DNuomZ{hλ7?Ӈo V%*՜fΑ{ 'iV..\h>0V~gXd;(V$Q[k)T'F3ƍDun"FeHS@ߟDSAQa0I(<^VqȜ%EU&YGIZ1TI'9!FH a2@OTX%\L0d%CVWA(`SMBHqִ9* d9?qK';L~D[.~d_l.](<)2<}#$[wARCZaN0 uA*(1lB4,9v9[]z37ЄJ`K .pQ"R&FFv+:0#¼t (Ƃ> ~z-b@L9!)_>\9sQ}%vW67r6R+^a'RTZ[(E&v|s6_>N[oΝ OS>[eK{3ѯ7}Q%ƵK"|N{AxO{lG\ib%plI{1,# G5%+6>|,ඊA]$p iQ$ u! <q||p\9P5iB$nv2 xS2=;1Jd5$QrV)ATv1 %'LMA,~rs)2zO!W#ADt1x"X5BAur2l4=+#h=Fp4- yhѣDC9@€" p6% huJHM x70P)i pq`q(E}pyiu!pl=3". 8R '`# FE5#" bIFPDdg<x\B)RY)#ۻ~+p1^ )<8j5CJ[eM[2n8%~nK̮\T|yA=qF 1mZִzjAӒ`sp}\F6^g\2@냤¨@,iBAZePnt 5Dwc{fSXejP 5ol_gkiGXW 6YxVWd]U15^ge-b4wu8ȯ14E6b\1nW`k!X>?VnHv&Ҧjy/ǘWV"^3@4#!G=i!ilp(D^gs!oE#h_a]T`AšD(04+Ra{:RNo1tM|XINS:VN G"a6"]M"LMxYPM2|E0̩3 jcR`ܰ9aB'KNʴA #k3x VgUgR:4/ mkW'Lr7bUͰW8 b[l%YfU4(HAaAKKCƋFҡV-A~e+H97a_¶R;E4m%ĥ+FY~ݲN|t?GVh#Frn7̿}mHo,9O {|o+ M!UWg_}|o k< zr0Ed x&]XkF>ȏ I,f@ʁ8trVPO3Sl8g62Y1)BǦ\KTrZ'*A\ZRu.T.蜴y { ou kmendVlו<֗bQ7;_ߜ>?AZo_`T4GlܴʩjЮ)M2Vt|'yaqF *,1( `'dd%O#0%e #x9Xt -J/̨X6!M <] R܁" 2@)Fh>93py G,lvx{!y TUMDVǂⅡ W "hP=Vz B >YC`'B̌Z갑J1Vb9*FQ iEk>1FRU sP<:!5;N/Ar!G0$bYg  y痋'mzrX5+%cjYj6td/0GT͞$ukcRӰa< ѩ(ಣ5Y)Fb}y"b^K>>ά+m5a!J F2 >r\xyfe0{$&hu bkw?#I ٕV) W-/uw_ܭv3fwϵ6r}c!RNVTI~|Lب._<﷟d;csSJS#C,?1TIIYЖ3+ B9 .pלu)CGgqɨݕРY9 Z$RLMgN_;pU I) Ff(?5#Y! < !Lt%.֎XZ? "PsU9e]1h- 5rBۉT@imIN([)tH#0 TL( zWo۲%,<@:FR^{ݙߝrq{*Y3{׎ٷ[ [I/%ezP/Wqh]g]l'-$4yލ?;xV~^`ע9d*}Ȭǵ/dWnȵ3KI'TlQbCZ'a 6l/pWY8R+Hxl`(3D0g1@tNa7$u"##z!ܩ)1ȴ]\hiy2of+ P7?UoO&IyD`~6A{X|+9KEB Xau*N((y1!'4~\l 8i ë 4-@%wZN-ziQZ,9H' =FrQ^F#h /Xr%') 4JOy뮐#8T 秙hl6$(FR>ng_gfoWb_ѮFz*Fn&WY޸%QNfH G=bevO=NK.ï۹n#͕NEZ.Tj:K~;::m~dޗdst]#A^yڶG1XF_+1}eO9! OPjNuC x䊫g|[:H;;( jv"^ocXB9uN%zYsFٞ!H¨Z>-CrD 8nnZudIZKGt"m}Iu(|!p.OՍ`j$Y b۾đwCiH^4~Ej0;IkHOQ"&%ܪj0zKRwՏغf9>̔ F_.c{v$mb+(R&҄Fg_ߵ;mh{ֶy{w#yxdWcٜM78\Ia+҂.kPM~F_^6r`׹ٻl9{~>[{4qZ˱AQaq    I$I$(J((((,,,,0, 00K40Ì00M4N8O<4N4O48<{4M<< {8< <?<;4?8?O<<<<?N<;<N???8?Ӏ<<<L[křAzʶ ɻPZүQɻ{}vJG=ϵ9WUb.Ŧ׍JPtZ Ӏ0$'jD)^Ы]CvUMƽfܵq==c :uWU;S~ٽס3z8~wuu]W(eSz_-bq~w^_d&UgꟴQcerʻUfW^e]{u-Nu"R.l3oRL^I _R<Xn5P-R5[>E|q墇x'E o2nu{F++v~~7MRlNxJz*KPɶt[3vʮk}?ѨG܏2|_9̽'EL! *[{xSHQȗ@pÄPLM0+! >cEߴU~' NZ맨~o浪z^9qEފ̹^~`(W|ڧ 뿾U{|]uVWwPG?>yww_Ͳˍ ">ǩl 9fIECPE3 .9WOB@%24d"'va ϺϮ®꿽jڧg?ʾ]\˳'վUfqoU_$ 9tV^a]տr>M׽m"8lh3dKAhPF8AH<)@L@w*,U6n:j곲U]N(y( JShT"j{p7wbh/D -8@M>ʼ>m0,P[U}]꾾ꮪ*_UUuU_uVm~׵i>79cIBuT=wypv={9NUs]̅}]>[wѬ'#eedĬ3y;a8ALݮyD+oGB B$/4UTMURO{X?2몪:w?UTaUSUe>fZu)C{87MLW_{GWYb)uWuٕU_P] % 93KWN ϛ]_+*>,,܀d  *n6jy_WUU_W՛5(9 )qNk.?./Z}mܧ)vu]Q݃Xޖ??W[䞵7i1e[T_\ՃSi25F >.l.#LΡ1jT:<033꾫ꮓQEPP|U*uN}P]y9竽yԿUj~k] R;SwUw__Wo]W(f>+>qJn b=dШjWNMۓ9d%u)[r,JF <pNESF>꾳G wYUWUWWUUww]_ss:U\-̻}>߫)ƽuSԋܑ5f|._I*6]_iA}GDǂYɫ}j\ \{O֥]W_W}W .Ut(?9ce_S|Q}{`5Gs= W}^W_+o/.3ʺwW&쬥BRԖM#խ(Q.f%Sۨ/SOۏH\0DTӽ?@$$OGfǖ~sZvl5jXH>*ʬf߹un qTӽ+}K/9|R՛6}m}IvӷnW;_єBpB =0ދĜLMl E`z2YUwUuWU]oWk7w6ָy%l6?^ǾYVjԱ;3|}'wy]uٕWﯺogWwu]{{ӾZUK{bJ\ }5%}4}E\C=nڙXA< @N90C؇D\CD`=:7U9wuwUPC>(+rSE'\.ZRq)Bo:aF` ˙7$ ,xyoypQ005'!3. #l-P2Yx#$n3y>T6#U9I8*W >Px"컧 UV#@Q|fn|@(YܾU.-œCvȉYlQ tW}B 98u'*d !/2@Zٿig=A zE8XZ=|4j˱?O@;)n`r-BDj>䁅B$pHL("Hp2uD;DP>jџ|P(=OgH7lmR&@7Мu"Fo?::- *L?UwbH-gGmx&vPuw\l}-sFe>۩mĽ S<`MyMM}Γ%̾,)0 D#AhLND,pH6bX 2|^.XźvRr}g `7H I@rJqirћRHc1Kb!NvD4| \ A@U[l;x(TO&{ @O 뉖ŤЃpjB 5HM @0G 2N/!uuj̕B(Pv8k_7 RÐ4mz\Q7D,/ ʓ)ۓK[g[=hogj{{[[[[[bPD`_fgE#߹'uo?O+־%uΑu5G?Tuolv߭o5uMvZv!ZG- 42@& "i䗰$dmHA4X-ZIܜUO;R1oY&r$p HNaFqy!y6C[ǰuo@ A5)@kNn > ^:5Y{/}:F!aǾyR/?z/8(t ߪ[MBnChAUHL> j9 6ċ)'Blg9(Ly'P` ` Hj/ڼ5}5<i)Q%Τɾs#Ȼ^/frܙsUUUW]U7=oRf 3Q{^w[yoC-=IskRN9X8gU!eWIݛR&8GbuǼgBZ z|`F`e uIrip`cfajm8#g*q9SRR&!CD o3 ƂoHJ[lf_mtUu%WZ'7_x___FUUUT LGawp2}|%)\eқZIC+V72ssnܼ}2Tv:x=nT#RH&<`4҉sv,{.1AT#gQ ~3V?^}3*| pI+ At<9 ⻷bɊBï՝krP%>b4꒽l[2 ws|jG9NAeս{%ROg8)TjL$(#vT.] rCFQvF|</T7vj% .J9qFyڠ s)PoVsOZD &~^F[)mʫSܟu.׻zI7GS[ꪪt~ PP 0d ޿~]{oMtyKmZa*3PLQ~Uo[nʕG;ԣ[Mss^Q.f3̊w`Vh|6&NLGu] [eTMD5DJd Pу$5dՇ\tWwJNF[sH"RLUU}}W~?Ax pwiYpwo3ގԕv^״yk rfg%iV\hią,L򷳖z +|=ry[gMUO[J@@ d JvtN0)HOl EsG@.d P`?A` @JN@+!7Yh}?U'VWӕT3H7\6OTQ) AX#N{9 X9|JvCT\ګ}6ߞժܗGOz^p%T}8TмXڋ[U. @Jo: ET }>RڟNx@  1}/6q,eFIV T2oW^?߽84 Kx} ڪL>`PKw>hUΝ[{mSqQ$s{r} ?׸sgW<#`9dHG8̎y>ɞj8`m8TK"|5OiUSGFL@-, \# m>˺u_W_N݂ j(Hh:*F~ZZ}]޼ N!T f5_u 2Mznw'߾v ܟꓚJ%F"p8/)qg\q3)eiʃkOP E$dY#NetSWBP|(`$c@3oN AjrAmN._*ϼ~W:uj0tʲ q`\~ Q73>|6ϣHV)8c7y ߑ7O9KU٧¾;>t(9m">um48R>T"d BaQZCBѩғt( 0@ׇYZ`BVmvA+Fe$^?L;HtG\)6(S,nP* bq<|xT1626k1Ғ0 8 Rm4 N(v_;P\$fIs1ix90%SJna`Р1,V@E4؜f ewed2VQpDtɳ( 6in8t6Aps$t8h!5:264&ʥ7Pi%@B"=Xu`VZ8)k~ Oq Ds@F<)Rz rfATH(Y R*` lx)0v."[Y[Jbg5:~E.tMNc9 F}&q˥n30 Uu[>ڪM~^U'qGGd>IgC"\.(fyL=O ,\[Wk9Gjަ:9A4srEt YU*zXoJ#@BiIuw|~zw*Na;ߗݾq=9{~6q1*Z1s G|=` DܔjNSVԷeŭ^ß ]\:7}f翟uVAڇvֽ 꿝!?uw(?s_+uc9[u)gV}26:^e(r|6YNH+ XEq)%HAdhtzGnn OCpk ñ=*35C6PBMb)LO7`ADAȑx ЇsL%b3%K?/ ݀_AB5\rx5D+O"U'HqEDNtO: @Ǎ aA07 h\hR& T>_3WTa* J|3xSJMY} ,J`7^hN , @DAGG4Qj8McMDQhw$W݂qQ"O(8{iȎ\zojc򹆢՝=%-J_a;jdcEE)qE(YMRmka'>8h_4)}u v42ddD{ty(LTqfDH>Zؼ̋ƣ@NJ#HUA }}DZ\Mri}Da)ƎR8p}3 CɵupT $@GHEH BDS֘_f"/!oT!R8KN8Tz dHL5Jbf 3r__ɞxV, @F t>>Vs]QƏJ5bza͉g,A# ǑKsi1j鉸ά45X5.7oWvڜ}OWp}~)'Sƙ#)U eԧJǾS}sOow_uwwjB@ ED$Nd9,p^ ]I-$BN)0M#'%1@Tpܰ+a@X6vczbm A$03<#q<9vrA*LV" BTPF\DQ \1X A@*PK1*i lWmڂ*!Zp>}(p.xP U H1(f) C("TFL'P V"A)(^d AOjOC2HP6 ADo\&N]PӳԐƍy Bqz OТ1d.:ޒpSӱ"BHm &2;xu>ZT堼+8[i.%N*6 A1P,6@ bxh>~Z4`F ȏ9>r Sr/S'jfYvsY&uC!M%AVR:tCtIqzcSˬSnԭ_׷NVUte. )bv/"V#@pܪEtVE ~ap1ib>av)=݋53*Z\1XC!;ӪQ/6;rgUDl0B:pET; Z0$ѝB)^̷ӹ>wvgSY+HT7EDK5t׸P+@f")$ES`ΚDc&RLU@oK*B44!tX@҃;7.AUKC)3 F oM>orwuLH ^t (郌BY<~UB,8(d/}'N=0GKF6ǫĕ2.jIܧ/r ϲ)s˅}UUVfwؤz/mva5U!+%uNsAo9=/G1|jR¾_~VUV]_Բݵ(Khӆ(W:.nz$Ml)/80rȊ؈tFjWcbÃp#Pˆm/BKXzq^PA #n=1\$`A l98Sϖ7.6b;A9d1z T!=x AB?:nd~)Th&EQ i Ά. MebZ>9!jPk4870D@$HQ,y;<; !dؕ1?bEBwp-(p<Aӈ1BI Έ?nϦcvߦhO}׳AnŸ& Te-I:Bg&Eyy- 1΃s>{³)9Q6GIf9:v( !M>:sNWrg:qS{UW^Sn N'Q?iIEXd1y#fFn:ra8G~n u :Wmqa4z䈑DV1@uL@dzlKfjrs4œCA0"X\xZikBp]XY-9j N o-eQw àa !BB!ZSD#QRn=WCɦcDO^(L88iT4E !؀a(@r t&3L8ٓ)cq5뵼t8 d3a( `WZ$'OZN<\J]t֔緍A],mʶk)>J8qFzEǠů)nZ zqZ>[S~okr}?K*3 QQkbDBⰮ2Q:@- To[M v.F0)֦ QsY`dŤB-/@fL$,Vu@$%ҭɻ£.*p|l4AIbi{0@5@ͨk.Q'HzJJYO\+N*BešN FBl I! Wh7< Ah 3Pc St>pBJDE jT*H $M١Sq;{J}Sz^׈0:+NAEń>[3_^_6]ys)eXsKHB"x A)m U.YgӡEsRF@w-'|WuT^gY_6~Yl!hφ$Ipog7~u"tR=фq";u!}][k2_QMY~Vh`fbX๡r)yas ^H$ CHHY4ms +,K&S0Nԙ56S%OmJ$=饻{8_j2ׂ5Fv55dEyFH y*b## cA $ y$pF4KgF?]'a)Tu˨Oqm_S1TڝmT - !p&Dd|EieǗG3_kprS^vee^ʷ|Jdu{Xrm{Vo\ujW֪j|[WYXi83mG<L1qB<vԼbhgCxW "xd LjQz ϓޚTdq8EľP>Ŗȑ& !Dr! ؚ&FEtds{<@!Մ7gMM ~#1j( ( h1,*COI1{.T*&}7Sӕv)k3*y׾$^R A`ѩa8QqzuqN7lg1$Lي&q>sʪ1'W;ɹ{ZDƊ\))ڢ ξ[ۼOlg Ss7~Rf|:tzQE[ BGpHuN`%y 'N$N]𐰱VR'8ӎ?-K}fP%=vxqhLHj_0@VԚI~Zgbg#jtNܔ%x(U5 ,FBS# 8 gB4hNLo a~ĉNO);':5HM6Wz A^Kϗ6Hl$?3GcB蝉Ec0 b<+OyStПFpmN2hHD+| (Fg!N@KͽݗϧNM;n|컮U÷UUunl kQ(%}8~ҿƣLWnx7SJ BƊT˱d#]s \rkLf$ H8rՐ,ɂADl̝3Ta3rӐV , {˕IpEYNJ5Z LI0M%h^LDbM j; MAxZ CH_0@N8K! >yN:$(FföCQ̲0h:"Dؒu낀Pdɑx|O ca!€[6T!̄Y;2[Z @uQ!!NGYmgw|3\/{HІ IkxVnߊOttdzۀB]`r|`DU c$B(q~uݔA5yXTe֦)}HFәfNu{H FA b_vOa?}Δo"yNsT6=SᄚIMKe!֪lE:s dyS_13:֮ˌ6O1#p>B cGfCGq.Ö4hgqEa qƓH-jrJ[&|Ճ'S<_InIX,tp_BքI-YjܮgκQ2u WB\&"\|20јI|Sc΄Zø yoA!C"D6 .^YI8+|y{~^< 5 RLF. 0j Q>+dH !mAl 1HsqW>,J^7飔!#g)>Β{UZ TEq)]/B\%"DEx|U].|f[f=mлf_Ux_b@ Y*8;hvuzߌv3%ɄW%ύ\31ʆͿolgqԉ`H\W+UOf;אQߒ32iy2vlzK_VڱG}h d)EFH!+RDoGI¦gUy-ͽ:5rz+-ا!driĉ n"p&q@h NSzƟ؝Oe5wlv|9g]ʔr^$`#B*4Acw`P]ϏMWu7N[m=ڝ~y'YwWf{w&$wJ*USUȽNcTŪ0?c-{VzRڍ_7 ) jZ:#RHz gIW4 FjJH4'&.Ehu SJ "&bO8 `R=PNh7 J## ;wb`+yx"[`ϋIN.1}4+$%[M4Ѩ(iN^.qK v0,b@q}DE$*AIaU!"ݔ|aaY`OSg?y&?cXJ.گR-1W>HnU3Bg^KTS:wk?.w}1Cr2Ϳ 灘yd9 .6}=PtVPT8HwYFWQ|t~+FżȅP2 ؉֥q VSsϏߙV?ml ˛})59oɧQ\*׾nݖ!HdI1&$lE swŏ@x AHx҂n»NÚ:`dDcNW!2(:LD٢X mϽݶRpF,,t* F1T] v>kLe 'k86v,$k(Pe"/!I{髮S/.c6]Wf^e?*>{:Z+1(47:5}vYr?{"+$.<|s! 5:ka<+(,JV/' YVfu$b,yPH&3-:;D ò1`q9Z#.lм ^&14T:e2-\SNkN?,Aˈң&~pr-`+8F>^B .WbMX1 UDHl5 1V>%!=_ؼL-Cb_(XpX @m u#.8=dt:Ԥr:LpcfO,47sog9EO|DpP3\ gBu+qNg]lw' t;۝K^[1$JGm5%+6VnWS#yyJZLl PfR K,3m :!!m>ep!V Li"fX}BR0܀ /4] 86F4@_~{g A$2 ICi Ԉ|;2<*T,yaRo<"Q\YJAXY@2Pv$G2)xЂ('-u$[} j"$ |;1"˂tfpz:% !æ Ν gXAsYze՞v^\-&Ո!+{q;^яLU[ՖșqD "<JR9M㴏YywZIÛQPtPvDW $J'\{W s4Ʈ7⇬BVW?U} .٦fu67LOP T*ԀaY~'}u\^:z*neܛOwve.O=ᛍ̏].v|E,;,DZ%J:RoEyOq._Uw7%m0^,omGˋ :W)+.*DQ]d(oHlLU uE '9d| ;2F6x]20ԭ{\6.4pfEEx77ȁ^Ӣs@D@I %)XS>daX&iLQ:L$GFú,8IKS:B J\g=lu(^GQ1&nw3W99_?T2{ ۻɏU=!X$gV?73}'՛:wU?nW,qMvrN;;LiwK4ڞoKmPIr[Җ-LgT;5ޯx!p@1-"&Ӗ,jGΛQ^8> GRtdS‘%,?#pM(@Btraq3FV8]éC8n lj8@Pbc4G$"j,NPܸ~j`T)á3{z=+xSaZ 7HR9ټ!c!\juEQ`q dM|LDWG I| =olzVI t@ؙ%͠B4@7c|nݙ$cP2BmfN1wS)QSNڔc2/1H!x0Piv Wu㨞` lS_uvnU]n\oQ֍0e) e?}B)4ܣ 4zt _r;-?e]/*(uGOO~wH^rzvt݆?O#8ulem$L ]<.;Jtmhj#d~Ubad*f\EtRYhqݭEZc#jˆ2P1e;Ƕ(hQO޳>.5[ud ЍO [$X~QI934I6iWf^GkUʞcVAHh6b qػuu{sSOsR7'͇~>c/.qx+jceoOIOTIQ]Sczڦ/2V+ؾdGP.(&B9=[NH tt` 2'@JB(7`j-MS! }tr!x.Asj PV5 0җB)(*=0Zt&BweO"J|\|)@ׁ%% =m<$ @? F 8#`Q.%r}!jx:qaa"g}3) q!#MW[;ɦ$.$Qb8mwm3YJާ}^T=!Y S/˕PBu\ͮwxY]S7!W3L$k0ZA|i|5?hճNFڦN2#+x^bP/p~#En1B+Ezyʆ8oM{@T"L o5EJnٌMx/]܌fBh0H286v5`lf6sCG6}5I`ԴG 7HOLAlۑs2뜲LSQ`Q$bZ>/"\A3qi+P#H2`c6 [$K$"+i8ElhNѩ AIbBfI!O%P_L%TQv :E FtHGMV)!yƎm,.95U|rX\$nϾWuySvOwJ)pRѥqMVԪeveu4[G="{IId޵5RUO>5F&{a8ЦbѦQ.8>`rtH^AcFC š0r~aC0oD׀td1HJZLxԝ39+F;&}9@U@x̵D e7 LcsA=X7Qšآ#2e.6.*YP[8YAa HG0MFl|8T@tLȪ^.lBDά)qd 7lݙ{CaTB Lfy҇H'U:CLIJ6Phnhgi'v6 -diUO\v9Oƕp8!6kh&X ̉y~KZJðӢ뺆 F¦ &bw۾vÖiDk1ԺW~ܧNip23LĒ,(ï]ϬܧLs亣[ UDzy)/aܨE9*rDޣg?Ҕb Wh<h.&d&N @o gb&+P|2p7\TRl!&KL-gR)B=8fOk &0(j<$?5]L imtHflfT4/@*EiN #dF_:P)-hl.KBrIv?yןYWs͝_>eEQ}4G/%3*ogFW[rqZc#yXܒ%vy"VHoub,UEHBK!TP1^{ E9@8쐨.]8J&LȇH0BJ8Ŗ7p+IwL8K7LH&MoopF-MbA ?]PwCNnpY8Y`ŒرFIO.Tu &(qB[@Ԓx?؅w`cYDFģU ILv+R>1]n9v+JB!)K9R'у1M;)'@N~4rV>j(N% .H+^Qj:C6-/C㥳/{.Q_oJQgO!H>e8t1&V q)qD E`iD19ZJte.ꬔ~아v_UVO5׺AOo 0#w`TWn2vURz\'bt2Ou LPt?X<~Xd:j?VgCicAl&#e"tz&mKi)T2)#}-V)BWnC@NDa<S!83wG=x-Hۺ}?!uwun__u{pwwUyֳGVj>7P_|gr|fٗMUtZ5m-#Vvdiz3lW*AQFaqr  $I$I$I($J((( ,,, 0 0L, 0 40 4M4M84M<8M4<ӎ88O<88<<8<;uO+)Ss꺀IU. :2uO <&P咺_D TwWe|ܻ!Uu@$k?픩)դlďo?*7m([@Uu[~):I:̆W`S]UUSl _s!ӔfT [uյu{wMUU+o{>꽿y<6Q"I=BsRfQq{ʤ4R/E'rdYWUUZۮ7M+~_~u[{fڽodoҤҋb%߻vf< j- [E] u_u74{:^W_mwu;Tm?ҧ7PMZ,ʼ쬄?}Wϕe|WUOv}B{Ջkfﺌ{*Ne!+=P:u-r}Ra{uܖU6Nt,m/_/S~*i_S1ξ˟QM}O-fU1RuT?N2mo~_u~Wu}}m}SO]_}}gSzSI:}R)8'ΟG-Mj<\syy+$*F xRWhSK(64TꭝQf UR8!˯Z5u{+:ٜ_>]Ϸ=LQNEKXnS]u]}NF_=,}:5w_$SŪZe?U:J^)7_:m1үܫ˨5z73ԻUzxbK,~/Uu*yH6$5uUgYmw͟2h3"mQ+#'NW*꺨|4:[.u1?5QU}yuUƷo'}t}׿mU_UU# ssNna9))muO)"E >4cٍNҨczؒ6OnyI ɠѵW7qok;p˪o7Y_{_[{ߔ˟Tc]+{κ޿7ߌ_W_W޿nGُ^uW{%wv+;Hq^g3wUV_W]m5&t9'ŖʛYwӂpV/s>m>^GNl۞]#{Tͬm]7.]:ڄ[[߮}U}VuV}UUeWWb:Ҋe,0[.E9R=+뻺meRZK施D.bIͮ6꯮>mg kzVƻ~;?[K-Xe/.Ff}0 '(`7pۆqLa<2m0YLf h4 Yd/ti2;MK)Ņ#2n8$~wWwo WUWߺ_ugDhR1,Bx8 O6H#f/CfUqDnA0< Վ V_7?VklVDL">eTUCf鑗<C0ȍfɞQږb@/@eTFbE#T. ]=)*)CfB|ڈH4@%M# `+*=?Jە_UڕΧSίc/<*ܷ 3#}BAlO>Τ~}?/zhGrURl[ۤiaefoJM!vRQ.d "tc#nɘZ ͌cYײn aKܞڹ̭ToָXoԪ3J1~b92el E2Q^ƴ0 Nz@LM72D.B1^a˹vW;fLr9ͧͽ@@hiK= WY5G|zQ=G<vm]}?ڼlNhp>q%ړ=-ѲƠlT|eߩRQ5b=EkjA7\m c͛33p`U @@ YDx&T@]^>{@L  cT/Ȑ#tJMrISws*(&cb\p20F E^׷UuW__UD_\Ui( Cd2?uʒxuumi yWy}??[t)j nk:mӮꭷ=C1X"浜i`(>Oat2#@8d1O]%˔@n6sAh1TyQڮK@r#䙺ڝoN[]}ut亪ӫu6<l Gny $5]_mJCwG{^ʰR6)ivF 5FsyԤrv[Ο.N/X@΅|}JHX.Z2R` A-ȡ|tT0W 0N#p=i3%XZ^I{Q#0JЉ~BI|o@xbM'Nrk?w]moƮ]VPԸo=%qVQ,Ą}wz}ԓ-ev{'ԜI/uMK#[&K3v"1@`|d쥎ֳaaMt#F<1qŨnd` @^gMbI{tʼe/M¦f0gԐVЉts(˯F}Wgsar"DS{` #Ca{/k$ӻshI%co6 X \ ջM"@-@dy"$s3u;#f'My6;\v֍ F~0&`n %ؓ{^꺮oW}w}eW]}]_okZ0@o@)BgCQ0?R;oUY199l4rsQ 14ը򜍻 ݁n(ֺꯂMmH|J@蝖_NUPTpCaF 3U|6{Yw[m$^e~j2U>vъԤ# NZw;unNuU[ݗu6x+9&04@gqr&Y)CR~O7vWF%OQZB K&17#2|̎ײh$@>M R9dP>'HGC,RT8aS J"i rUMe5eP"I0u Cfhpj.>uW,1 Z;%qyHуc XS"(|Sq!)~BzxJJY>!iAE֙dş 36$.62|+~4 _>l㕩ȊAcNPD,!vL$*$!y3q jsG5=z'ilުnZqrY.LṮQ2壛4 (a ~akM$e菮րN*p14'"/S a&Srd#UD:̅J(xSv"=J$gH>hqd j[ J0? w"])oZyɗ.$Z%]0rg C3>K,y}MXci۝{+=ٽ_Suls Ѥ},g<[]奄 b^qt-.+ZGh)Y# R3* Z-ᙣFZ0*22ih!dQSJ%2|~8Id nh4f#R8bM}m#+Tr&2$ģs얶(B)$BT8Q0T$("),':6G("#ޡWIO6@4A2IjD]k}Ziecx>W&k5N˓Y+H< #,-G2 0E3Z/YUT'(#tD4b#ɈdrfHI`'ĶL'IOs o`*9.¢1<6tyޑZ$־u/KuTcojmL7um~N.5+ߖ3RjpEyz:uݯɹ:u==hFWiveXBileCOŦIHAQԅ(C೎0HR}8J ApZT #-r&+-{* RX#-Du<6ʕ D[Dm)>W:+6Si~ V%šۅJ  TCBGI>,g2Cg։q*wm-B3IB6T* s9`Pa/Cr-> 5MtfXiϚő,Kjz3 F?J(_ܢ.kݐ8^'d|ǭ22jH̋3\BX2I@[aUxΛyaNޗH :Bg:̧\ܼ^l7c{m_?SimUQ\z(D-+]9պsFIGBӑ`>|ˌNtb8k`CfAp4a; vF16X^Hy 3FBH[MެS]'}ήOM]#DM2 z<v}VtP3"㰉1nQ15ZZk<^R9Sjse@4@k dd"$(^>D0o`R^ 43Lꃜޗ7;ړ~q'whz`jLU0>NZޗ3Ә?>31Wћ=:NLM~=KMiEfm?%^WBj'nZe>{r3j?b8vJK %6ʉu.f xQ@hcfIrO{-iάPBҨ }>2+e 8I Lq;CF &,!PQv5H|Ȍ0a΄fiIj]W00{T=Assֶslk[.Df LPtF"@_kJIr4Yw3n|7 HW!y44-& G"JiJgfO!H)BO'>2L HLXo"4Nµ!>%Ϳr=}aTo9*mT]:E0p̸a(q#~HqfaW q1JR'ƱZIϤ+:_'{We=fbaP|#A5@W|% d@loΡ5|.ighq!;T(D萮dX*;$*: N4 Ñ8ԏH~*|.oܞQHBQ(y*TFLPЛ8!"B2aG 5"Tļ[Ne)H$rZd&!: 4뫤s\zHxl/2Jqm)1%G6bK?[^c)/P/_/Xt-t|5M-Mr鲑Jb7wrelI!k↞xaQH24>ᤋӜIJu-8i`ECT7R:Z4k0"c5]t?0Bg\|+/w/?%njuOn$ܔ޽gSn7nFg 8 S(á9)>gLƚ4fsN4ȸhŨ%{imVӫj钷W{I -jM~WC jK`aHZ!cc>h/D~Fqǯ%ڮJH^!XeYk^qꦖ:Oj״Dฅj 7 wMtc9Kkچ ^@֔bֹG"nl:IҒ/%Ж,3NSΟ̙}V^wCd`w5j?MUoce5 JdF)H'8#|a&^ -2NHi;A*0>W᭽mtrad0 k(4@*FH3f0dșP9 1n!IfBZv)X(w4HEfstr{W;m81B8QH[EjF2xa)nt@:L8AK*u 080&&T08B{Bq,GND̦~d)ޛеBq!z !"m-'eͬ^)S6-{)9Wy_|D\ukėc*ϗgݵRW76_^QLTfG"A!ivfNkj z5aUcHN1?\ 7܉Kȇe-$Ԋ$X*(:xý][7Ix\X)C081Ha.ov‘Qz 7! 4>TAHZ`OqK;d(p~9"jBLy5"*08 ćfgA!r.@@/ݗ6f}b*/s DvWǣLl|e6J&`'?;Je`#>H6 ݔ5ּ7Yxǵv}fo3Vd i^JANec3xsOھ_鴃dizaƻg[ѵw!&vÔjT߭lsv>ou73FK#hBtJQ}"4+#kL 8F(=cbxhH)H@@Lkcu-"[*|T ^261 4Ca$p%=@9`8JaiXL )䡒 l<<c 2fa+\hNR- `!(0# !bP=d$/3%Q&,s>a f@Tu X-VgYz4J?:KzfgR &9,lʳѽSqNqsy6oiQzjXف,xH,II)1JNRw@2P$+ !38jNdٲӇ^v'dB*!Tž-TQb4-xaz pQ7FL7#L2(V Q 01Rb4~"QUyCi5J$E9G,hZ-2;H -f,PcU`'D$E@C̴? \ ȉ82!.xϐ`LdH% ȢSAtf`*ؚ`i ȁ8J6yp R\:$] p&A`!ʀ@aPش̼ "DLH]iX,%8\X!")$ND JL w#^ЄI_~rW06qLj>6'w"_]bgk{s8WMlBYf54շ`U3cBMCZCf.E9TG@XF {AioҦK'M;9QGDĆeZnZ}euz\1ء3)LESuc7[S㠢 ʦ.`*G ^\v ^ʩpj/0>@Ok+Pi@ua<aX6s%i.ۧpC.>W/{R-DI2˅aƝ 6(das9=DC&s 08b.I3kP*z|//Yyo16 #rڇe9hD2-HM1m Om.cS%+$JGz9>EqMA7Bhik%)!-"**b{fħ2F@A܀Q|-"0c]e{?5BD6B"Ţh ;'E5!R6:MZ ( ff 1Eeqre|rB2js ~ :ZMFzf9m$[a˴S|MQt%5kޟBljF@M4"2Z覤&cиiƍQ6O1Suvdؿ9kDO6m @ $ž&L&+`梊c"""xoe˵Nracfp& KAuVPqr{ $fl-fT5 +?ۼb@CDSBˍh`;]ٽcn)K³bWdA tC#,m4BHSz ?`\Q2"y0i~rRD6: $crPk//^~/". V'Ķ+1,:I>AWmFAYyv% 8)o249T@hsMRhP#nf Le?Lci W 5ubM6WLNRlq4}|*`" q@1szjIjo5׿um߼꿫F?ݦ ?"2|< `OpHxechj6X mVU4!д`^7H9 +iZ#$hؐ[@Ιŋb #jd$`V !h@3%aM̌d^y@ei 1jG?z\dT-vӳ+UUoNJo?n3f_LCPR޽z\AK3~wEj ÌZDD{$JA46 2p^Jo]4 CBx7 @Y_m ]JuwF~q(x)3 sxgZdž[kb(ma}#k.DqN'D>艗%HLNm*VDѦ/T.ѱϣ._5zQA'[^͈zlu50UVISL b -3/$3k1tޏhǖU-G3eqV&8xIaA[5h늤V VRMtW \rUeRR@  \ȑX x0Xq#NF;W?eˮk۾twH:#o *$q'LE)„W&ky1GG!,Ŝ,m;epE4K!bi$" ,@7Q*Є%Kf~j9L%`]pM#'iQh9x9h)Y (c;606md!k:6-G!{0܄/enJ0lb.DiGقp# < (~xp_B^`Sr犏h3 &J!Z6,f{'Kx# 6dJ]a_d*Qc/n /cÅ#H4tb+9!d"rTvV Ci& ]3)+S;8Zd%H3,f$It@pxC<5!8NYfIlf <0drrs n6n @"k\)X]HZatt!>\k7 !'aP*eY0W4l͠8&Чހp!LxxnǩjsJI;ҞUlZ0 l\л4B, 8V< cW4@#Xn@80\ C cp_"n)$T#rqK<6 bL̎̐$=2& *6rEgAո(A@Bp>!DAv) BHJG""ѝ ShЀB^ WuU$oS4)ؐN#1q1QluazV0NA;R*;b2f&g3NēaFϿwvONNRO̐9YЁ~B 0̪-P.Av>Yc@ ̃gd IbHS3ёsD"rgMSCY[m}M㷼be#m6,G"̼'9a wA98ɲ3 E@b!xB.C Jx;¼Ќ4Udj`w : K+JPBF5,B $bO*ŀXDn% pQ G=٦V[Ik&=}+@K=&5QL8`CN~OK()tU>WNGpQ.6*Y1nu2mUwI,*=ͭ{$*я:I=ά̰ca‹i>SXŒ>?KaL27hh]dsd>&[(i ()#1x#g*6<6`s+}t3F R?vnh`"b6NDFGg%T214,бa pp+@;@ 췟 n c-_ͩ ),ʻ뾛,^j$X]zjđZyXRcp\Њ`!#6# 0xeaX:5I 0g]ښq$k8 'G q̅pX.Hb.|PX9Ѱ#J$옷& 5Όz2#Zd)_IuyyDH[nBhd<F a"XveW-" ddqS29M(:=imW>7JX ƕA[Wl_HpUHw2¥,\ғ7T"kb!CL"sb`PSC$m2 ~V$9 ǭXwGzǟ.8c++#YI'("Fo\\Cx^ҐUALZO&' LXrb>V\@ "cbk1c'>C!8Pf,Nm۶7s-گ*Bh p45Co8MY~P0@6E`@:F~-mγ" OEffZ n"2$X $D0[t<`Y1]NQA铓)h!|C( HZ} .R C"*"wORǢʢ$ $[Tƾ zWb~IFuon}ᵌRN.u5Pt9CE;PDdR]$0r' ql2R 0^%D˃"5o0D<=٣YR}u9eg5ԹA$QINz^^O:&P 0؁t%*>E Jx f;Ur6F"LyHDN!*p}e {$o6'ï߼NH5ɴQe" t=dh LJ .%X^$b@T,2hLT*vRu-yYQNc-@XL" rr[AQaq  I$I$I(J(((,,,,, 4 ,K0 , 0 0 4N4ӌ4O0L4L8O4N8M4O4;8@<Ӎ<44 4ӎ884<O<88N<k-H1J>7mRL/t濛Wʪ검1+yts2;YI#$o>bcw-%uV_]vU諭UWW)w_Y\>*6rG^q򘥿:ܧy;RWs"[v*[PLyת2=iҎgwu}w|z9 ǿn"ʼݧ'-yu9d`y,z_n}oؿk?뫯?]UM*co(P?VOy뫟š?.wwuW |*w]mzEŧ:TȖW2Zʞ2%;ȷO}?Wjr(Rݜ9M߼r)m@͇?taM~}*j:pb̫B? Gs.t9UUYTS bpn>uy |!ν.*pjߙ ;U=zj;~}eg}߻~wӵtઓ籭|r>uUUY_oWONOy5PфQņvuiV{կww+ٕ dZG$uxOԺ:]_}UW2ʫꯪv sc ԫ9UW_U}_u;WUgWߟUUYUӣ~>0&*j<ֳtU))J6ת-E QϢ3r'|9܄5]d*ᵸvwg]~J ↓\nrrS?rYt[Oo 74Շq&#U|3>|5[^g.꺻~sʉT\}GFY.ruS\w\r[w:nRzVfu_>/f6>U}]gmmmo3{:{N]>+*v_<ݍ>lȍXmǯWiDܛS[3%?*&nJ,tWn(n-ۛYjp}O{uе)Kʺ˪|3*iדseq}~v[Zﯼnw>~[~y~}u SSZ.T]%j09Wp7ZKAO #^=_w\\ kRݙߺ§-> 훍y}{Ϊ}uw3ON;>UU_wuQկ_}l6WkzwՕ_]ϟϪ˿"`skVZ%`$d7~;m()UG򮮗ww'td'<̒d)_U-kW]6QhU}}Sʧ󿾲 wu}w-rdO!7Sr;}FW1Ìnve`:**ΓzSհυHEUOi9njBq5;j\uڕUMNY}]yUW~u]]}{򻫪Y]Y+}n\?SNT_U G?kHc~D]f<`>_v-k>S.Ѭ\65r5{j{ξU2RjiBʺ̫o;wH?yJ5!WW{_3rMtl?Uem՜\iuD YґrC\ơ {[M}βjWK/%y.U5_VSIxEU+ʝg٪9gY} WtyKϻտ.:+3F ;w[U_uU_F&ؔʪݷ3n[*u]9[>~f__V;ύSߏr^>ϥېFUuWwu}_T\rǻnuu?IGzT~3FDV}2w?-߃NOzuֻ~lnwwtV~Z;OSo^}++~W5UVwg[|˷W]e?>oͶ@]F,9\UEfyOZVUSOe~T\WS]ovNܖ.:s߷^N*W*WO~{S 뫫v#3XG5_x3*Tp0KPD|CV!H !`mݠ 5p x>w$JӦ܀S~WLo7{\mRTSe`+V>Qm;rAY*` %%L ڻAUG/,e_(h!hU2M@<!- ,e]Acj`!NJWQMKo`]ܻ:r%5\񉱩I:èO:'9VV Wuvv3Ҹ›͑, peoTN(ŨiCUfsMϙV^Wd{?~L8eDвkp9(HRsݩRPm ==t-J9Up[By?&|WU&I<P!`E A@ 076JP*wr±t"@n&ǂҕ.nr9ݯo>>:15=# ӷQFY#&I@#ZZ/ >VAƟz C#X" 5}J/+ɑr '3͹jT/IbԺo{GV{>D>lY]NyCdjow55^E\&CA,c`3Bt@k X 1}T94&Q & 0x!b _Y3mv{7,?zY$8o(,po,Oa%1G |!ڙw)_W׻ZU;j\ZU[kLMnB2|)2VjMݒza m>?gH/Z;18 l#r02fQⱅ9` 0b`2 O=G,@zET{ӴT*C@q *C@*`"&0-*0Bx T>0$`F& Sۓ}lS?w{fPt_ᅲLѩM>2L6uxhS+O[i.jbs~SUi:QJTzTMU}qa9@8=E%wb4ՏOɵ${l%n8+{: ]Huixk@PL0xY `\p @B ĎJT޲{&iΧfU0$xsSU#I/{ZtFd P&^dLI!7Qx2e-mENbܒ }gYY 347gSs:. 9@ rjYӏ0'~y3T#:+QgӞ2"c휮e?ݦH_fJHzNv! u7 l@TUie (BvwJpALڸEm ZC*J69WlX^ɝSV bC(&o&q-0f| x~ 5 Me9C)wR9? Ӹy!B@ҭ*sxHQ,@ 'S8eh>35LP}B;D=cIGFđH4@& v8[yu;2ffl!,V5pMNADFdc$;Ҁ%38b~$`LLdEFI65)`-G'4ӥ̙4!IbSs#]@ bJ #QhЛb9H4ǴVwJAvĵW8*Ph1XC"bKĮ%5L8 [ zD--Y0V#yn{zF2Xs.y]U9Ş|hmfpl:qV Xf;4.Lܯj~00c)fieg֘E'ZRn׹s:rlN+ҍpd;>V|@tX$<2'J958h;p# !Q&6x1>߮uZ%qn/}g}l9_w>y.2,-0dBT^xv$ [2Q= HmVL8o~}뙮?TGfmF5!i(Ӛ1[G^m "Вv6PE#a\ ñ ϐNGF'(^0 "pbA p|T&@Ъ\PdW͆ipgau8-A}7%p:Iƣq)LjNFnZF\Fa=i4W>B^q3TF5B}Σ\^d|(Dz@H0B:QhGBt911 ZC#a91,`$P=<- rT-%Kš%b7dɣ)ٿ\T/LqJ5<ލx[j8NnѤ٨&=CBqdK8eN8OSWri^3c$lwê[ӔL& |VJ'Xŋut'8zICFiE 0gkg6@>Mk8_4 8( @ 7Psq&}>${9}<<͓Y$y̔2p1~~P'CD²rqbDnp2p8&OP4uY J D6D̐cCT'>b,n/.ˑ<ɤ :wNAeC`N&x> I}p*1¨=ȃ٘%(m}"q9bJ#!8tZ|d?iL(Pk[N#74tΠ8pJGR$  N%5Ql#D]+d\! %-B)K[k^9f1~񭽍Ӯ^[群WF~POQ=rRUzR mJ+<6W/Z"FAӎo>pQ>H! 6nɊc&Xt̽CSKҴǕ#q!?)Z*dk Hk&8wZlgQg5|Č%|h0aXEV$1Fn~m6u I(qCI拝d=,>+2_Ϸ)}FJJoE8t݂pá1@Tt6Z.ϑ+dBx!C@+!q6ʒ9ENqlL/ e}[3ȣR%%Ƭ3iQ?(I55|1:[ӽzq5g̽Q=(arf$|NT+tqWSG|"}"mfP30EڴBzGMD#btu;T 0S[JTf©c+<j(@C ];ɏk 5 B~BtWhR=ȎAVN#Q|M 2  [/Q&ccDEDS7.5N ]Dɇrebx ZL4e¡sQ։>=lF+Y㇒y,\nR@8fAE!= x,Bo!ST `,͖Pgcc\Rva*G3GӋ]=엦==5_iibi,Is* *X<2<0l<pr2NFȞh:O 0 0%B6P,~Er dQ;i86zkUkj@HM?7V]8KJq^y5H'Dъr!R(7A*Zc%0%cBBhM$n. g,H2.u$6UKTmngV^kr]YiW&Ke[?.3V.E6&ĺٓlF Fۇ0sg6rMΥ5bжLS&P.ԝv.c~* Պ"Znf 4Yl}"|.@_7 P20? r!#SׁN(wQ ^^$$]קD=$K[2"ELN0 A@V N{B& @ b5 W Q<8q:1t "&1H=+3\TzWGV.:.(N`pJ F$D,aqTb#)N1ZQwdf:6'6 4 p\:P Q'lP fšd .K TXGqcf<#/fG;T쾍ՉyVVܗyNED Uf"n\%: Ib٠;~޺H)9٧rĚ#QX7iHH#Ō$ "BXFʫS4@ubߖ[ sYf"^O'$RBrC`^*ۤf#q#y,("ӂ@/RSԃOQ0'IZI Ogl}S~ͅW5)*"yq <~AXg" 5i Ep֛>bmMO&;gdN'b3P]$Eb=Im+cM >fUb8&_0yf$#{5)Ur#o3cQfެ\>4-O|Lv?[ 3pW!`; ,AӁ8 d c` J9L9Ċ8a3IN[ϸN-i:qMq"ֺpD LDoKܗ?pvSjcqܥܝ^@鰚NWjJ̢sSS#&`iΥ37e8c^n B-dDR:8‚SHm@x#m.Ld,c{@~(!cGчOa!Hmd I)BJ1 f#w./.%܅s]DCu%@JPrD()Ar#<`C"&Hb` hL"HXvY(cX#QQT91(rRGBd[h: A07 EB*F!L`Nᙣvw0813WJT =ucu S. FTϣOMs*w9w,rNj$1P&B„"XRDET> bR@"θ6 /& _XؐJuKHX.0J/c@u2/&D/΂( Cd=3KŅ^Y. $ "Hy,NH#_̗oXU6gt~,0t'YQPD " HPjJ} =&h8SA ݄p+3vewg9heQM|O5%`CiSꯑUVƈ^/!G{WQٹ;.W TBH/p_*uyTڂ"  Dxzl;EŵB3T@2Tߥ&V)^G`w F!iGmw9f)j)2BpUM@z#PvT\f!(b KDz4Am ǂŒ$:yPk5v-ϱw>JyV,r=u6T܇>x)wWW/)UٞZܵ>q2ԢVJ?M/L w+Y N47v%F jM\5%m;er1K'=:q?V<'A*QGΧRN)Qwk6'O%}:M|{]}깿o |' gJdV]T.;5kS! {˹65~y߾{6nƾX8Ae7]x%hnܯ&*۶Gdؘ@k@04HbieUu2O4n 8h KK%7WG5FPO%8p[% %w>o;&R0GhE  :P0uCIYW5 ޘ(jگYӥK'8tL+GG'R3?Zn|&jr$Oߜs gvaF) Ӌ@DVXc9# qT V!'8p" E 'mojx7Ďy+Q]U ":!֜qymˣmܡ& Uȃc$虒) 9kvS͟2bۋdN[%2MU/JoJ8dS>Wo)R;ܿ*L58Ү&H:XR㦾)HXMMi9M-%E}V[R\8'i4]#/\"Æ~m~V簔RPV#0R%M wf*dqI7.FCFE8FA@I<ה.;x:ҋ8Zo4U7 f7º:FU֜|}g]U]ʪZT;QŲ)Jť͏KYcl9ML"LѴ p; h8P PoY|.lBud‘JE,b4|C@pR FO)Wrʿ*_Жj ej)\jw;_}]|ׯ^W{_T&כ!쯅=y{^SFYuvO{XbUDtҲS{f=4VA8cԩK*tiw`](:M:]ep̫\#b9P^R(lA^D5 t郡AZ>2 1Xà$M"ᖀ3! !@|1x^FLur5l{Z2u] tv)KQ:@"6 G& Gs!2д]q`|lF6$Al_NLL%~! 73vOqbs 7غM4>(V%oo`!Aтe -3N TU+ O:Zu CٷGI.`f.2@EBṫ- DS3X /|NQ398EpZB#f lp$(xsAu$((/I0'ȱO$c_Lq'#bш*?2wB{|';4/wwP" I_lQroH(COXt/XS5g⹒Lg`ŸX3S:DlwJ9LvWO4r7/Mc6!Dx بGa!:S5ZeXi4N԰.V1 1L G.:.16a 00c!8 j@8SEN8 L(U@5u4<9Ѧ5XH}+-|֛%H1bnk}e2tb9G*s^s#̽e??2ײ뭻ߜR2NPٹ]2AiYܶ֊?:mڔ]|vv8 ~fJݤM[}23 %͵g'CvyAj\Q f q]HF"^ѣC0̑:K;N[ZooTw2˷/,/C/Z`{4$.2!8F-У)")台E>;anq4.HWHH*sqEX4zҭ'5b$5:-zgl <̬r*Teeư& ڮ^*rtCLR <'>t0^$ סWuCÙ@+h) ,*J L$2'>F"Hu')@{gPŲ-d|2oҼ;ݲK;e;̯'"%s[w55t#hK+ڪ[[TkY1J F@D7F8~@B]9}wQ}{U-!Ev `նkLhxQ"ȵgR}MR%siY-Lz*;b0]%)A@IaퟭbK9Wn*%Q5oh%uCygjˑDF~BO%)13/86X(#+27W9xZw_8^;8~#Y*3Tp y z?PBXA<&DMvS4CIgL7o+tT"T. i+;%q1̤T~|<8HŌDrdĆ<ᢥH> 8٩ F F1hKYs ſY`9}NW_̅\=T&1;9~ܝU۔]~͵Xm;]R>KQg * @{5*$?5MOo҉ Ԓs6 aܖNIӕ-ž4=qgӘveDŽt [dIÀ\ۺKIvKs:P,SoZTM'N%GA!|e,z=**p˧<&$.^']E0d'Wy'5BD c( 1 j_u‡"N?Kܝ*rЅBFL֛O~ %tYI…5pa!yӢ.PYl'TA4n:* e(1FzpZ:=*`0ldV6']\)A>GAh; .-PGДP9^k%X Hru8w!Cy."ӈxdN ]"T MJǕX/ %˖6YRl;9Ϻz?|ٓ El](F o#<%@*|Tĩ?/gg7ӗݻ.|ۖv}_aI)YPj*:8xTjȩmZvFCA3*nXP]}ouT3T_TU7sKԴԂZJKi|lE zc=X.UUu%s7%9ȥh^t0c0D#:er _#yq9Aѝ %]H IuتI%=KNw}fyG-FtiE[:!y&o!f ȠXZN椋k̉$ѩHY`'e`d ʕr!h vȬM, C' _Ԗi,Le 'ęGq߮}}UOȜUgjSU5'q쯮JmVPuOԗ1׏QX>hCy}ٸ!$i.e OHv.c|O?иȴM18RTFhS fʪ;(6*K%&ŔDEJ'UMV#xYhy!d9Yx^)N#jBdN5m\ytBOqJ4-J) 7)' 2@2eN}m  Jp0H¨@A;CIe"ͫųNQs#b94F|! i6Br/:B8W ImI8g2apQ4KP`!8 Z]I `6#  '& eɞ<8Q+(L5,S(cJ&%,Ԇϋf7wJk.?zQd! ??KsCpύ7&ss=Y/|U/|+) ^*aj:z,`28FİdZj.EU4 Y7 Nj0 tոq^äHcE:>OsR݌: KZ9q~^m:LC#D{TȐP:dA̬CԷVKN\+n H S@dz!NC ( Ka&c 2erxjl< B+d1!lhP1Uho7)y&:H+MkZq‘|, CЕep6umH%aB;PGWkLf(JjDGWDJ(]zb6W`[F!fI˨+ (RJ)\;ٟy~63X6HuW_f\9t4:_%UV˭{W_p̧if, =Q =#&ENe&]"g ғuSSqh7tNC⩵xH%ŬtA}:A*R3`uS>V'50p$ŀ`M$!9DD! e9rtGv~]@g->u2:T'TYu7KBK O 8dloRy?˹zN5Mfb&-R?&236>$fIl"Jp"bZClEٙFAÁފ }PЁ![RsBguͯuu{$u9I:՝ՕWF"dv,!ҪEa) b 2dSP8lš0t'C iFCADp)RBsX|`eeqr4Vp+/9 b\sr]\_U~mldFMrB/LF_aJѵځQNJL4di]?a'}jPWw_8s^Ő޽ Z h3ģXN|<"al NU_w8 Û"ґ1dP'?3@cɭ#_crYqn7P@넑WTw];KJۋ*꨸3TRSqd4p_pq:iݴXC>V2F /D>X&˾q67E׿VaE*5 W'^D'XSGLE[r8>lxL5(C&Eպ槌zlOZ7ptħcQҘ l>ur[vNj(#FZKe[V~W>6Fn![cPO-.uovܷgj w{XۿۼiӞK+,˺{Tm,D?}yBH=ήwf r2 CR3:3J;ħxim /:L?2\SRC(6IFJ.$~L : <"!&g$%eBhBѮtإt')5Kօ TО:Fj¹BrCϊb b\.R~\9g3ȃ481 v&8OSO LO^.CIz+P剴B^PF1xVnQJlq ^ izp-2 #ΡP8؄LxUV D : [9Q$GԬM"QIiT2lj %=&d0fǜ3F ԸĄ3i\9-W~-Kr#.rsw|zē:6͂ ,E ,ѹS?WT:Ԯ]z9K_[sQw>uĐM9"Pr| zφM/1 |j6E2%4Y#L6{͋ "ZT%Luzy}4/ 2`X2Qo+2s=af'{0`e⢂-xc>^#@xYT\lt ˭֔L@ˑ~7d_Rn;ݛOsz= vFϨ}_mT42aa374YS/TJ&.{0d(@m aH QAc'z[.yxo7-'q:]#|zB!lY*d>6{ cz;J/Ghxl2Sgc5/GNZn.֦?.=VŹnUHc~w-}[(BāqOZROz;{G.iX} ĥ \YY(,b<@^љz mUmRV:b^qTHg ;,Q8b<*YmM5y哞4dM9ٸL7:5AR[eC 3:HDMtj4G}(vR$GRl=@`Ƈf}sjJ0鄧*#V_?zg y h>gDRQDUHR(C/l%[pqeGEU9 $UӰvgut`¸3*$V4yIޜ_5(",8܉Ϣ-D@6JhfMgm_?\w8g[-{MyG9M&!!Hȝ0u򶊕q#Ex]$ʵ%p?.;.>Kۼ˸su^/s/>69xp҃>0h8 PYIur3-uo:YߎW[YZ{#iO+ws]k+H[o2?y}vwC㹿Wlw.yߟv+N{/ߟe}>7w^gmgoV~st )|Tcż^W]TkgޭunoS_95rZ7V{*iTEbV~oy+ǧb1W7k?~0|=j˫կھϯӁcL]^~esk_ۿ~_{}j sw?7oS .sȸ5 s85^>X?Gg6Hyl?; M5_cw+3O};s˺f}땯Cj\)R;|Q 6p{jh6F'a6N4n!9 *ve͓2:rڧVcݿo=w{{߻Js?SDg >˿}n1ۙ{]}:y\ͯ*lks~/r^^2X aJ(\ofEtc{*شpmỚs<^kCzgBY>.M)|+}QojN`k>rYc]Y-ypv^Z}yoR[ۿwןwJs-h˭)[Z%.w׾׾:+x?"bCE^$\#T/}B2*qy:*u^3yGnÝcUC'ea-7ɧ|0~jθuZaZOZp,w]}f\)w}}/ovɾw8+ }Xs_fvWrW/;so'G 2 P$T'Vi3TNۯ~UC׫rr}UztU|e{x߻^v:VϴP3o޵yxa[+y}}w׾ou){?~ckW[u]>.kni-PRsZYU;q%p㧹;m뉣<}7݌}Fn+=ϪwJg;[=Z,}q\gɆ談>w|־fݿߏ{+o_[ۗ}=w[ey]-laXrKk|N*_+~gKloT[-Wnfv1fm~X\]iyZ-g%*U(-uz6^a̅{;36]9y~ӥJ "̈́YmMX֞s~g~naۼE8YkUܥOKy3jZzߧ(¥r8==QڻYg5cy4L¬ԫy/nByw{Ov]mu_/?3/ywg[}wwou_eg?6o2nixJ)u^)s?{)r/QwNZ?rdn}[f]gs mCF^7̬2(;Xg7k/w2 r\]̼󯟷^[߿ _~msf~ ~[̖Bk~ffo^]~_umV!UB  - MƼw[ws_ 5wZUߵvYo]>,?mA"$ ,QɷL~&=oMiOGfC[VtwvgV_!vC^_~e^uu7V)VT- ;hF02ӍFn/MRoiw-ds21ܼmZrUۺOi\'V7o˿|?ECs੓xvDǁ 8CL o/gh쾋x .{}m{;)լ5+%*~Yymag(u!fv8!U- .8Oh,F]@N )&ܜ " 7 %|Bz'8 #X+T-@s >5y2;wܼYJ& :o÷2j[[_GW$cQz e+^s'UHDe:ocr}% K/]ùt>}4ܭsz/3+my͹{3_zq OF<3 6@C `%C@ pMrT|x)C΀N+$DX) v@ 0,[X=8}q~;u% 5 Dh^iճ+iL11Ȫˑ5k3K2 B3{b3x}ds[+v}rҌ7usO3WZ = c1Z-,Z,X\/q~&70C2~ 0V|ش[0@h86[a8Ua%T-M`EC߼W{gկK89rڸ`K `E!l:{ *H%O?Bc"ֽe}gY6^sY>lYd7nN?k3=;)V/Z`~mp[s\ tm}OM4r|  Z7R,!}X0tphE- (J>Sw!GO=ҡ3aYޤkyʑ$덨 0h7=[{X p2'.g]>K6<[{p}d]`5N1IԂy!IX#jHw_DJΣZo(@`` XZ@81)fp![we4Ќ |!T-Q| )H@#HP6 6\arC9H>}TXf+8a9^1嵴ύQ-J !/Sum]lT ]F#XT}6Q׿}_!nN/aM%۪r8i-߾_곈qqSYS+d8TKk .KD4/o( F]D@ `%S"PΗD;!$'0}0ȔFAr@HKz9}`̕z3 $@$0ܸӟ[M_{WqzG|(vGv1b]xZJ:u|yuzP2kv3C޹ Ϋ%e46! atkϕ-gBJ &B'B|Y?>ebh;3)@bF8@J ^ lT ЀB ` dJb0:X.3hy[P ˟ƻZY|~q^BSV5R 5Ns~ɋjNKGǪk|c[bJE ("4! v\֩3JEemևU c`-bX@V[-H/{PYުAx\P`(ba# Ș:l"0PCAhw&hjwIߺV-{ugS\eT7ϣN $%q+k4@"NunY9Օ=x2ھ^Cu_YDΪSҰj jVjuw {޻NJ> pN=*s!l" Ņ`C@Z;Xy"OL3Vb'+@@ SW&I g4v)7_AX;}k.+Wݣ~thK;X"<  `qLV>7Xr /r9^rGS7? =mÔC}_-ҁkn6yʡ*=Z(2kOw;Fo]JmW=sk8̀ ( 2޳hI>Ơ!B>ύE{#a0i++ `xAl-LeֶLV4,֪*%qM$Kkפus_?YrFHGI0[ZHa L Xw7jFE۸5}~G%uW#p|^l\lA `j8wΩ,s:zur!A,z. L.ѹ*t @ d7B,5aW^psWWP 0$BUiiffY"ńm vXv~J]E]Վ\V֪#52z5bJP z? ko~ϩJP$Yh/]o>ٌ9+Ja >E=@VuwbNr|[ϲM7u1K4L-_sq۝a\o),;~Z=@L-su@MP=5Ƚ>Le<*O1(jxꡂahGj[=AoM ԞO<u~] ++*cQىՎ !%a0}jE*A?gDBϷ7JRoeiZ/kҝz*γ*X;:Z/_%>\Aoh!FT eah@2G;/<]e MNg&a`~\ p"At@p! EReRJ7wVW[FxXvݽ׫SNqa($@w:\ y^H?uibjqȁCww=pqlmsOLr|nOw1+GMiڼZճc\B(E;d꒝|TxvU<"ttLX/VaP#p) eRLL?h Wp <};:A~ӕUR{:4AEf*R@}k*H J An5{_iG*!ݽBszEVt5Y.(}5w_ϺbT.  0?[uǮ~}O-' ec` /pe͙gB_J ZY@-L0`>nj'|֬>ϔJ䕽wVv*2WiªR-uEIs&GCE*t˜E v+ҹΟ|.|cI9HL1B4HX*G?&O)i+X@5ƞo6^eg QP'@+@Cp18` Zp֏֑N!<Ҫlh( PM"z.c#C֜sۙb;) j&!$_*⇘m3<]ydm(+ڬGSBsP]>Fdk@N@" >P ;H&,ln<RTlhfO(!K kj"逢µie hm޶gC8t+1]x4W93̉ʂnl“eDwNB!.j dpE zDd<2 TPN-X<ԃ6?0FA|nB،b<83? ѣ!GЋպ_? klV:*x/td- IO2mQ Q=Mb+I[6 n dP F1X A$!AdNX }Ujt:a4? 4S0ɸ} A8dHN'ݘBfAcIMT~q~ט_jk{HS@ 3b))GmHDDjGn_wW[}Kϭ#o ueu}7Ҫ:OOөrIJ*  hPpDaqkY(ӘV`90Z6$B{!Z.ْ{SFO!U\}c֚/]gۋNKV1=V7Mͷu×!$y ֭iFx? IO}0]9EW){L6ybrB^ÖN9Òg J OS%7y:h_Vz?/j؆rù HDQa gy"Jt\ȕë|ݺ`L "q.: 񵑐uiRLuCK%vЧE:Rʛ41hz,/X&Uy=D۝?aCΝp=P FKWuwXݙ)$VQKdKKSd :-7gHG#^lV$0O(-7awO jTĴɠS/)X:T."(4ʕ_Ué P -;r\±Қ=K|=,Y4W!5mEkvO[zߪ|/aLz_޵ưf5Bd|Unrc5ydLr/69YӱԊYFi`G$&"Wj"7fƦj*<i \|7~.[A0WRE. 82(*0 &L*Eur ]Pq5_[¬;dM'.Yv-Dْ9gS%ܣkbEfEEȎñ}{]m?9նղpv七P+I輗[!@m7q8dV'g.c҇Y= tI?Eh4hhKGIO6MdKĐIhb:$y&^?g}祆TLQ AMpW}n^xJYW F`O2'R3 u#"fB 4nZ8J2FEk/TZ+eϧ6u%7^򜉒]6 R/PT)hCǐ'`hĂPe*̝*,t] &#qųJxFl71m0h',Pd[" _5y)ҔGj`ofY\-!NbϚa@ %7K$ȋe ~NtY,XALxW|w\N!JUjAu<#W $'ݵh]}u IKQ-UW)8p4/c7)tWAkZ4)̙Z RJD3,PfHeQBŇkߧ] sg\Ꮙyg\'#^PsU.%,Mƈ ŪN._>{z1ь}5p>?j[q'+Ljy߯ooXu!D п3F4}1Z֨J#DEn|y[)ѐ-.8?K6H?w׊ S+gF63#pB `AF a8#񉈈R:Z받zx>+:G C무aתj}W ;ctZ5|vط #U"rMe|۽[POPyak5;Ex>UԕrՊWdI 6(%h`ҹc/5EEIfQZKī z%;T Kc$39#U|'`K@bX`%/ ٓS͏RA#JXdGD,Ēл^igx/,qG*Y#T(qdYo>שׂw6gGCN< :DHˆ#CE/5\.ldJWRUsA  3'=!TN5ʃ9LPA1] Q10<`M424>SЯ+(Y]"1Ƨ"VC(G 26,1 y;y8FGU+H@ډBO0^ʘO>aŨ{iJOUS-9ZA+.J' u P gNkEؒn\{vtYJy3?y8jXu/dYh 'GgJt0A҃ŢM]E~rvɟ=#fYgqطw֢Jtr(@C!j:?'Q ,U^G\Al/Qƞ5:jSC]I7'F^\jx֟ٓ+AJOndl- GGPœi"tlwu C&25NT?ۦWI:򋸢VaۛIJ"e JyJ!,_/@"%KIKi4{fqdŤ'z.6U[Lgu=lwZbIVzX3ާUQٝ?qU*4J>=^NAR/AV;>>V̇_eoMN2_+biZ#XԑH ![ED~T?v@Dh.%b gNd雦*иD8FylFxrp:G8/Hb@vY`hLjCNT0?m6t^L* py @&Q\؂*?0) TWdPV/%>a%6m%Ҩ @f f8 fm2ufU 8P;=P0& MPҔ:vC`Gɏ8jy4"bTffY 3rQh 䫏m=B  #c'۲2cvJh7`].0Q !x6 fJIO$!33a IȎ7R >>`HGJSm.RnT"m *c/gJ5mٗu$€s4*ZQ%/BȊf %KvTI0(L/HѠRbЧ7^1FKI>Mb+TzC@: 3?lʸ\= ==B2# ! sNs3O:&I\2X(27gq>IEZdz2_ٓ_ +C'gD6\džZ7YЮC]V:qya̬zz c$E$vk9 bi3aB%r=qȧ4nM<|L,OS)ٟ}΃d2!L;;c2 Ps`ad5 rww}θE Df\S(ߍa)$dgIk>LU5-Q5Yy1= ׺?:P`H! FV|vcx$@pe%w3oZn&\`cO=Fbܺ~%&;.kWRV_+XԐK,Ghq3[3CBBN Py /qٿ\>;1RhJ 8 :R5 0- qt`(lr q䡱fa9088P56u}SYYXq02q Q F(D5C褒GEWTnB9bx XVx9JrJM#& 5\ߐ3zdԒ:1U.l:%9*{ًV@=TɏDb~ ݻ .A7QxrZϩT'9'FIg+u~cnUd gE1t! ݙ"z:B``ux"KT$'1]g[>;zF(\:/D|3(;.s8V+`V#H6<ӔSj-cWqClhdq{#P׃jf=[ ߸'mUhaV3*WG#/F(b̈́dE{Ɯt#lXaAzfA"q_SZ 5 XwU9"( (L(>s%/ \2ޘU6>-|&Ƀ⼁"M~'j(] %.?m吁Ɠ4@4 +JY'E5ʏmd ',N3Ih;z眜nd+\3gDcgL:mKpŬ.ݾݼ}\JVceF!y~%@8#,#̦clAٕɸԑir$rOT*H`}x+:” >3}u*L]&\6uDaǐ:P %(Z=b::ttLj8Xi)7@YWUnӰuAd^Pp!>(;l85F* a6͟R_s//DCjjU :ss.kf y*YS{ݼӟږ:ƚZ8tAp,LPr R%fU}F1+E8MWG͢(s|(q'Ԛh68ÓdgET8,6߫m +zXζTwl_eK< g*pq; &+  P#=#$ıG9R[85]1o0LH9%eaFD8>*XA>!`Y:GEaLJ+l o^Al Y;?Vf$񌆥Z$M:yB3:3}3)%\*UpUqGѠc pefCN!^yJXxGa8|QxlJH )`2-RWV5%ZrTud!g0|VQHI3@|m2n7^2{w{oH !L \,)p3H} f$E3 P$I[Y^ lh?Z7;֪Q r^yLnxCէ֙ wShqcMk Hȴ^@J2 \ D,P3DRrg2Q•h#8/_`vϵoIS5 p~f}=y$!3/&(Gxe$ߋ$b:ǝyHdOUrQ5ֈ"P. du~?d,ҝIiQ4*BAdSA5 4! +4 h!#E,^ɢDH%*V7}]2Jֽ7:y l@#&`}%:0ES"0-MG"0NR& lz)*:Ah怃e)r6eH!7!6P".]!pE 1b#S~m\xf&=XNBMp$+X3L ֪L6b`41V^ä H` dX8 Rabi 3|O8 `E7#9̕(#!ȤnDRɖ`HBirs'(%吘Դ=8tUQ!7P{ O\ M83 C0? a:@Rp\0B#0_A&E MB"Z8l|Fģh -$1\ɛNi &2 &p%UBbA(L\<8!U&#:"2^x.N]UVAh%յڱ H,@J:d~1M"qL+! W JXZP2/b6yEȮk!`E9BOW0ȥٌ|m)UyliMTGA8ɟ^B+M+Gc+7KR›b|.ZoWH)YJs)%CrakTPHqe" „Q2pwɠt#Uzr0i#0{J@9.Ӹ|%@ jAg,յK ۳N2"6}71bBΌ<|ê`&qcGxF=Xz'GO4 70r-,Zp`B.8vH?0Pq ahH`^grt&ƴ苂 EA0ic/pur7W7?ioQj5TidE͓i k,E 2wz}VEKfiFI\X98$`]149'(D9 3Y[(7gK Nl6IlTND dD:K0YR‹BBvigެ#9C]ʽ"V1ތdƁ]H3/fu>j>~#DPF; y EG#8f٫іz,gW{sU+F՛1JrWX lUi_v^]{v>:6pAf%Bm/ǧ]X+$ 2`x|[X>Uy%VEp_>Y5gR4ʊtW/cTI1 2& ^3da,S!;KV_+jzi9BBKx<yUw:صc6s߫ok֞*NnV:,Vv1,=EF}^.[2fj*O[Y}}L|-Pvn(8hpX+ )<(bnM()PR&nh65B@Nmٖ^BleMݿ|PG b)jʂad`uN6Ř!ӥȅf\2ÕNNHd1XGX9F]2jGF>$q@pRl )ƚS:}2ZY9M ^<̅^쳷gq)3xf ?ֵu[UhjJCY |߽$bRN5W"Qn$^ȃ꺱TI3JU] < wR2:FdƮjb.9i6L,dV9oTaYOQ//'AnVA+[Gj zu37&dW&d,8"#;"z.Faf~GB+6°sv,~/ +Y0}Z5T.hILS+Ah^yP4hE 4E)$JpɲIUn=HXv ?Q{(CHekHw#kbυ^;AgHWYhS B6VZ }"ǽ/;+|qT{4*8iChq֙@]IRrؗFӳg5%ŗ_o/:Il 62Ff4\t,r03X*P3=1hGHKSіځӪu!XJť1(kVjdF!)(Tr*[C-L|4# fՠ.@M;jguŐ0*YaP.")&Nyú "]sDl΅Z-nT|Cec"apȵ×G,5NlHn/*2YJ(Y/G4 v${s#6YLM,dʷs[?}k?4zhaϝ!Y{/' RPգ[JbójAēKǖ_X=eJ3<4diSu$3OdEΌD8%K2+&k JIKcZyVݟ*uqA$tN[ǚTR"xϺyIVFUnLs'r#ӡ>#9rF#4̳GuL❥kfU9#i92QV(A~>hjy+䔣ŦD>`M׹ě-X!g AbF#麱w筟!p*;+:w>4^=KCmVP6u)(qI!:zGsp_&,i{ `=8U1 '+1+ .QmImpu '6 __|iJE:vUțqG ^#䖪I@t0C ȇM'X τ P?>{.(W#i9@A * aJPiYI(jnP8 !Q5v;u[a=)Rgr(#Իgy¡̚tVpÖF_.ॼ|"_27'cqiʫdsIq($z%}b|VMrFeH:)@EU(vx D!0D+,6!q$)x0bR( A`*6b x :`wAxeD0BzR9Cΐu"1 Q-j)p 6fTyB$Xt F.;Az t*H3CuH!.]j4Nتr-Smd޴Mݓw[˷noYhAncR}ui GS.DV*U뻵b4Bl{0]vS75,% lr^JݙָHGt"H+Wλ{<"IW$Ռ^/L).C4GZ)k fWzyj}]vUtxK磑aS:m)=Tn LX@$ٟ4м,?cѽ}_\=6:e͊C%cCIUkZn̋fY<qYtPlhq4KqD}h1Cb,Ŵt0$/2C4^y| p X{`Ľ͝)_t*c@*pOG8ĈrkƐ4wGj,Yi"d1Ce?Sؿ#aAsd( 9R^Bѥ۱w&~`=i4N/Mb֯`n-ٚ@bqqTxdžl[em'6UBY6$*B& M\64<`0M*Dl٨d pG C n(10HgpN;'Ȟ\p@XʆbDԜm<$1kz RdJ ¥.8V30Ą ]iVavNQEXg.%_}m7F*rCŲqE)kZX$:QjDd"8bh+ MŢ8ÔIWkzyEgP3h("+:L#YxKK4AmOqdAr,6}՞| (:4|/8!%F=3QQ HPT 85-2U+{ʒewp*̽"ܓځ#ǮV3*&Hlr^u@\ ys9Ou^٭)2e:~ƒB 7S,@C*QiAH$&%iu=}ܘnv(JB5UES3ZkEZ, T!! A@BBߋ~+ وHޅ5ڪW-ngƧqj [*Ls3H!nSB}.Obk6 qΓEFVϪؘ3hΧweeъEMZ{\){Xqgǖ= jPs|к-y 0 /IhҬIThΣ)$D>Q *c1r7'ӟiSN2r'5m@ VK 塦W:)j.5#4i`Pp0IGT63 FTS3ZE'_}1m}9wmϛWfF3R p:)E!TaƋ\9j*M 4oVqELj9҂R‘(f"T *t*A!7@$#@`>8LIy`[6Ui54^VvB1*c$hfG yrR JŶz Y(5$\;!%B cFhUuxN8ȾAzX1(HYc㓬鴗,Ca!^\pbFUmEUz.\l1Ń"C`EvKn0"GN= rnO"'#Bc䡤Zy vOo N`8 xj"=-CY^)0)J "z` (S ӑI2HH0<;'тPfN#gn5[#l'MȮSj:˞QAtx7.fW7~%ŗtB@&$s#֖j'koGߗ_eT>t mYןt߆$u#VTKW&$(7JxV9ԑ=hh5knL{zH /t_cIG%LSAd]maN2ZV0%)T]L;wrwU}vЕ ,~Ц CHH]@ !PAL4"Δy,~>dhŪdz-H_BV/~-Eؤe) 99ܬ{:&mUXTOO"O^ڂQMsO|h͝Ykuc, ./@d%2$A`lOLω lmc Yŏ87Ѧ  1`36(N+k#w&w!|Ѫj/-3$Zs{x|s6wA)H f$՜6odMyM#n0{u1ncI'h7'&djfRMʮ7LӫoLtqcDQkk²to E}806 GD8Bq6Tb?H:bC"sb*}wE1춋PFřჇ< e+8S]9r)& p )D&P2q6\i$KN3>=)3tT_aъ56\b=X׼躼ˑDkae) TeQ)'$DFf! Ŷ5bBB7PHfѳv O5)0 X=~JMA@ODx5(Pt XȈ"iNuXcr? wGBD$,&cA>FPO+pVNS,C"rlPc tc3d.wh[$mbufTjmZ][X܅>obC1馅ֵ9ˇ羬L!qUn'z/>yoZv+b4tAs_jQ*fIů)mVyJyڝo,z::.ղ|$ :lx=!d4I!y\g713 *ӹ ~;%%کb05DЃ?(s<ĎuJUU=[ﲛ; v]_=ކ߯1-̅y>AijsuV[!'YZL}NhTMzNR*zVɑvmw\6WI3hjMLV\vl\35 0 dV $x :rUp,Xi (N B,l<.Њ+̈^LѲSD:'QV$;(9WP`Ou0^>AEQaqq   $I$J((((,,(,,, 00 0, 0M4M4M4@4L8 04N0Ӎ84;44N<{88N4O4<@<<< ?< 8<<<< ;8<8??c<?<<<<;?<;Í?<<?#?<;C??<N?<<?czgP߷wpIUizz_vݷw廑^;ޏ;37s'MD=En1y1tc[`nKeweY~voFQyF,~_̽wt\m -(3r~^(7% ovcLx^;i}G~{ 9B'A]zyhg/cߏ-:dws7k̍29olww㙻۟swldM{At3^6r:_~}~?3r[eZ-vG>ŝ؟tog_m/Ϯnӡ/SojEw_7cvjo_[ْRynz,~S-Ga_wz;-+;eQ41s̋b ՘|iXCmz|0s'ndW~c>1~Cdc}rMjAlb ^Er@Of7([5/.wţ-l=#ّ??ds7>9G3e?t{@ @C1_/^-nm?sc#.r^k2_ə_2]M' G aP#!<Ҋ/ˡVzaߴۻͿtYo^2~omލo~1N9[vf3۵[, ռG2N~Srw^3#r-Gw۾ϿKJCLz*e5ToO}evo_u[sIX mM/V;zhnZδ3?33-sӌv?9;3?ݗ_vV߹uf8?@AL=ŷ`W|hvgN_c6ͼ3o/ZV~g}(Qg V6gG6ֶƵK-0!H([byM `NtVԔپm3e.̯ۛv-trѿWe6#_7%z,~ڒ!gl,8g -Q۬0ѝz֢|#̼|7KwoӢ-avWu3~;rxܴ,fxhAD .H d@),4+If~w_nG7r](39)GeoG3:gnfn~t~QfljEP#R3-(fCou9}fO7m˩,Z6ߖV>Rgcҹ;4ʔo>@oWl屶NV ` `*TQBgN=lE)_?7?;7{s#fow7-/sчyGo/gK;kWݼ!?Bpǥ8J/Uemw6όsZOzMNRbMeR#$1uoK9~k{~ǺbA .` @^h|&"fOmNE67>_gf~n6K?+-8Gc-܎om3rύoA?@)D9c-[A69w_r_NߑίV;-8_Õjt[m|lzb;bq0 `EjB@2;ls2r~Kg\flg/ffoKec8[ob<5bRR|0sc,o{yFT F6F7t䳮_is(dzIY]gzwMlO6gOBv+a}֌ $K`C !`pE1XXBhZVb {_s) ffo3%zKss#b_;>~G7|e3,ou8PZKKeo̬.onow+KnrjK䢳32pz~{YMo~[v#Rӡ@6vXLhKـ#7R_s{Ío>w?ٿA|͏ZK/߂0Z=#:P+pvW.i֏CmMGw{;=Э.~G2=m rU37nfn4$({ zO̖Pc}gP bN ,Q 4$ܸ|(F.77;;+,l?voG?33߶vdg҇mώl{:rf?Vg?;}r/ZN9+2G~9e\9*Cgl3-2gɝC{^๫اDwJAr}vu{@QV' @,&a TtPiHݧGS^og0sqZ@Hp 3Fa;J ޸44Q ޽׹Or ycCA@p`1֯(`t+PE텘;[()fwv ̷(3oOH d%@KLDnb0JIUX=˰{ٵww}cO&ed;^@HqڮA!_/k8zxf)a= ԼĐ+%Zdcص Yx`U`1x!'aͼ;:b_;v-U[@@RA X6G6D b2Yl!_'l Vr>QK>fx=Xt bAI *BBaԩ4Ԃ^R(F?e0՚-*N`: wkMB$PF>7v&$o*/վ/;׬g84`p?^T `PnL@/djF@"DE( 5 RӬk+<eQѲp@ӥ8z%hPYfUv fTwrrZP ұN!u?ayVܼg#14 05+ZF 癒, cF ~p_3qey0 1Z@pxc-% tK`I ^СV9 Z:?^otϳF  3e]U3_Ubv}C`G喁P'O)I _dCbILL 3b6#|i+kc!  _ =i䯯b&0Ĭ3d[cx!nwgC۳+׾ap }g&C0$3^T?UyɵU*8F,ƶS$@hBYKD>Pߠwe^=f;,R òj랐āa6 {̮Rb~g.d~jnKHI(+ ,8Xu$}>>~P@廙s3!5ic8cuW|ZW^kҬ1 Ppz6}~ X[.-*|g V @4< & :2tNSϢr+ e@ 8&vBV H~kN4a,wG,%D&4uiohbIv?8=bgO@oLRʑ tnE_*Ck ȏF^)GfZKok:VxC_~A#%x t,Nݥqh?AWKk1XЁXC(J.А@rpئM 8JP-d`C怅! nJLx 6^[*ʳAYsDCֆV`ܜVNteK@\ҋSjjڛ8굿kα,deBД-2AlC5EB, G:Q@*%z`ݱk80Wm2;=jC֬zY1_(7[Ov?C>E8?8¾|Uhj3G$ H PN*Wϭ`[Y?єn`>Pwř+x\|q+kRϑf5yxVgM󺤱ƞWbwrgR Nr3HK5&B嶎@A0# ݂dշ?t:I[?=̡Z;v v9n1|χ}֠ra6{oΥ+|i;\TnDSR[ځsB`at.%R`g2 al Kگܴ0љDHl]ƀIIQ!DyXiJiեM>SW4s"Q:c-ұU| J@ yq: ^h 9p^vZ)H $WPLگ󋣯Y[o[-gB76*Y+rm;EI cʻvG[Sn8!3,6  @Od<\YpCvzy;zhh.?U+(mt1};ᑰ+HLQė 4l͛7]ujUrLR3˩URE 5Rl xE:^ldٰ rK{_spHðYic>h;^3g~1.}|b]>}{I 5-Ws-~p @dfKuL$W'M4 ` Rz:2utudo f*BTu?>N;+ 4"Ka.cEkަDv>d¼$%*IdUy¨Vr'f'*HR 10pu3F2 @ajӑYԌ`X0 &^0fnRXn}ݽoJkZ/>U&XvFLfR#;t9G<2 `R"l3@ `f04Owچ4 PZ1&֎J!Z}WkF}W8f Y<}$Z ` ѝօ\'ֻ6v <@akfk`2~ ww9hSN%dbctk~'|.A*t۝e?:|`f KVA0C̱l,+S]c\hP0-@%Xr]%piOjYu3hs9r~[+OQI["M3%l'76>D8xX6y9K+3% VA סncW/|놴ZLK+JH-l66Ll0Q5)rg<  $!h%m:[:_Xߖl…cٕ1p+tep$`p8(4!A;|/!n} [.33V_Y)'a~&vR6t6'tF EsZOHUMFYF) i0/"C@i@ة=td>}^[eQ.$F`faɀc9H{eGxKDURշGU1:Bk{wmw8ơ5/W=?WX"ɏ0&a|x"84KJX~@=dF3v@ZZjRccX1VY;'؆N B„ 3(!9C\IB6?!D@@x7zq{XnX`4>Pxl- I~HlIc'yYbĦ,[ȎA2 )VP0²`Q0L9@a&09(/Ih2J B[h.sY|Q,R*.~6ٳ@'BmZ pF$b *%8` y I ChS#DjLVTpeA:J*#hNCBd]DAy9xq2 E)t*ЪMSJV`s={;NL;N:#pjk?]o8¢TVu~TOĘϛ;oS/l%(cZ hQknmh;M|J{;ȵb AT եΕ[cY5<篞qHǂ|I8¥=d 9 B`8 Q'R/,;ٻxL3 $H,plsN* auVBh+[C`b8&>&Jlb9Ů#jly[(N@\C_#]fΒƷ JͼӜvK;iǵ|Ԑ/>ޔY[S}hejPXlJc(YL@)O׾94˚J| JNpf1i:d{ĭ=OUsgK7_Uv9, gHx/>HAvԊbbq[H4(=xL!\gnkOvM# ]=a{?7YSzcIh'`)-\zYlRv6$Sfu| ..:&")t뚤N}?S25 T8(YuFw2{Ѽb}7/jR}K/btܑћ }4Zل⇚u xOf ȡ*^7~`ESp#x`U1xYjagnolX /RvENXѰ)=q!wƹOqxE"0gfsJ - Bl)d (E_')9$buL3 ' $gA|"A憥b" w͡ywԇ$l:.LT Y.!ѩ oxJ bufW_[ky,{EN,8bbt}|Mt#EّƧ]jDx/xıR"͝Px'ۮ!0Kj#܅!LXI35$# &K:MR -`ƇWÃ2pFWe ķ&\) Gea8(G*3AFjAilbE<|Th.8b'^}M9 ǣE4-U/= E~}D [A^x .֬գ(wi#ʞ}yircUvk60jlbr=-Yώ<*˩Fg58=NomZkoC8Ì)m7)zlfW!'ͺpwt?,Ce-"}kN=}晴{NVd`LO%WNN4P3ȅR1JDrRpэm(qث`FJZF2_ ^u؇ނ U[vz6sw%TF<@:-R(%ӂXF{b8z*iL( B~0YH#Q6#^c CpALb\I 0#PA}r152hԌ]P83>/n~L}@X4 m @ElDU_ͬ ӎ k#L^dr pd (  WULr?vQ c'PM3<܅dKy9퟈)M#bANg%< d:IДXG^H0dKNmHd&C䀕xVjw5;IωU 57FmvZJ>N W l@Q9 !!Z!07 P G1EV'D$D jZ-" SH]2pJHt"G:0TQII(yMF>IBB'\sVP|{VL'fKmn9G%hޞ>'X+$|ȡb"ga)%!׮YYfInj`M2.ktV |zG=9G7{rUȿ>x :h}.U%^`ΞӼޤ=L(ۿ`nĈ`1?P$~Mr%)Q #Xt|좛zJ%x,QEIfrP3%/֎旞Zj-!dl.P^XX)Ft<4;ak$!fPǟWGzk*j' ,T"X%j͙Q!A4ĝ)HS$O@@'PV,P|.!䵐$#jh$jMŨ˾ '|a\/+ ӛ?PvbDMtoH5b:N:Nb$̾Uƪ멨g+S;1,1 R#0tV%6bc1TԨ|Ԋ f0Pa vBS+v3 .@>  `&"ACEe(W`~&P&'.KS 3QʢT*YņQ5瓇%0 lI1T%y^QBb hpgfCY2p0xȌ((JFdnIa+Vz^9lV:RaaU$ A\5MF{L*8~ D0 N Vܒ/V^$~^*A 2:t=h[Hc17U0/;EʃqpC2@/B"Qa J+Swt<=Ѹ"3ifh۫f;_BG nDS q Hb@? "I-A$$VHUqp\!5X9qwz5W Nj+l>wN%eC'v," 3PzBɑ DRcCfIm9(8snl$h9`'1aJ:!\,D2%'^M)48cʨcB\YPL-@ģ%j9aw f.J @ h#),D1/Y hȜj&CР!&(2yFV&*l.b0Exi/T‰RPl-~t9#nm7xunםҔ! @CIUӈ@$H8[hm)g`Hu]U._< InjbNT.jԗwe+DZWf-Fʙd7:rbsfK\Z+NZ $!f& LG 3 !yYYA;3V5PȾDž'0"BknDE3?rm+7m]WiX-P? s҂lYG0E!=ݣP;i@ο4 抟ǞnEn x􍘅t,$Uoe(ؚ6TW#4c2f^q <"N[-u XO&x)%Qd*YtIMy:y*Fi O &2.Thm-[{-?oø?Z"#B.h# P*)PA  @R$ZbG 2|X&8)@ůO* e)[FЊONXa%°x%*1ySh['ih,%F}sRf Llw2{1T#Ն Kܾ ÷(1)#ߟ~[FX!bv|f5bTKa\I0[I  wU % Sa!ZJ o BC `!al%.ɫy*eo}ZN֜ :#Sa|zjRтnd!HN?qQ"wq ƈD0A>(/"B\<'å"Q!`[ TdEC[ʼZ:ףlƎ/sb 6X*@q |Qh,0|QJ/ GiX []B/SĄ * )3\_l"V@g7+5 4IB.,^BR& A&0ڎI#a4FI1di|VFod5L\׌c X5XFT}d zcTY&v+QkQ_eY$zO7Q{y9Ïfm׊?frkܶz8Ya߽׾N>He=>}t60,]`xd1"KaRj*%:xDJLЌL=_* nThפ+GCR_*4͛bqazo5,~p;ދ"ЉcR랹R{5k#qo|&](]1V'IؑBwxqdH!a˵6na=f9L,5 kD, >?ud`T%2͟' aRd$ T2)=QêM!MF(Jաtˠx#t#[M7Ы7PشiQ"N٭+j^mO^#6|TBC$PȢ!7 b`HQxj%"(;2hC0RcjfIʙcdR LV5*±>^t221S6zH0F9Ld/prF6RoV!HU$%B[p)`##,taDvhPSWP+NcBB]r֌R'l:2b$JAs?+}jFb?$!B73C5FCyᧃI %| p|TyNWBfڬ6pİ[9vSpwx.*.!= Q82(E@'FC1 CFAm> Ԃq9rk6"T2#\c pJ:C8 tfeHl6U{^@6D!ACs;YoTü HA8zWUɭ֮ZX%&tڦ]&X&0u3s?cc-Pp#fy*B46OT+1KS^jNL=yhuӭHXߟgqUƅ6 [2`2R(m~г-9֞䋛kxBNb(6T( !o!qXT roG ǯ|TJ;skVӍ /ŏ[1\ +n=Ϊ,3a-ӿG;Zz'#Y4Lw/.HtSU7q^#W+4D9ak8 V,XldX5*sЩ[ټ^T vAwF +t2{{{:CObm`塺t>%3DT<\Qerua}* ،X:ܐba{߀[`([Ǩc( IY|7/l9$^Lvbes푶)d%VF4Q " j`cl=XzEܛfGL 0=ͅ##+>HN2#Q DAV<~5G`6/3b2-[ 5yf <GJ ."\ tn8`Hj3Dd_G*|R؀ L |JL'xD3h).-YҾec5If6 Kae9ono_6]n[kΔ9>Zp2szzNN)vOW;a8hVH]kEuq-u&£ )X'>fրPՄ+}6ж??*l4tt9׎vC'JR":hw#0)" b119[^. /(%q^'=DP0@wm) I!uM%Yu.e,~"(8g3W>zKJk_44ȴ/xϼvZV~C(2~/o{zpEVw,@+2(p^duced7YtJ]]Sw H V>DkF brqA fJt0d|*ÜNAJv$o`?@*, ahKxX\JukP5ier&A $&Da`#earX0f|꼱;z1S7E0^=}^֜mG?e-΋o|uԛO*lڤT=P'aCĕO:Wt%PM>W~B4urH[O34(Aynە8FʮUI)f巣>ɌGD]w Œj )fW к,q2[!ԚHa꛿|%F)G#^T*1ma`*#$VhRҵ'brү&`^+k.% ("XM=.#sߔ=OflgF7❒ hD¥$!@-ӢTH d^FWL(2Ch621<0i XtVI ]53Tq`dY3^[Waz 8޻'z)zthsmbY`J3leTVmm Wթ֬.(V ÌB Ս Lhܧàz8޲s1i!B U+@v\E:"$_%S?%Cf8|vD Ks-&,5'!,>ELPj./z;=jQB2A*j[r6rCff7TE P0DJH;Ae9Pۋ7V+Yt[!YCSkg#])̄X́B|KPe!6[v 1B*4'!IUy4x{߱hyѢ"֗;fI9 LCZ,PbJE!35wq^la}hm &u7ra٘2hhO-M/ 2(^"h <$Kq- AP?N/$KU/¨v$ a9{jӔT麗kcahIВBr04'Xe!e@hIkյ9dO8- ɵ6:FsGuxejq<bP0D)/L]] SUg~hzxؔw%LZ:F c / >a^`1L1' ql\逕@}R΅胸Nu,ltN. Iu{A(.q576ESbl12G .}J$Id¹:HYłCH Kqi{կZz_^ZQ aӶVJ~|];=t;'ud=1dPä΍bes!d|0uI!nlbP锟io8<\tč #@^jٳcCy+l8@lh"Y?!ȀāPn:+()9B7*Pʲ(X>f*O!ܘax{"Bw_q;'t7 ~fcLh+H~XJ˔MOy*TnkOwRq?OzS+W_oX{ [g^I䅐=`$<XHб\LVQ6!F.I@ f>؈r KY/(9Zd҂R8ԀR5(N? $&.q 4DG,RI"*n1r_oeFK-K%'F/L8ajr˅wwyw+^.5̿^V.7/|4`ʭiamKU R^t_/!tayG@w 9tJ Ơ|($0d 9$Q(]]òg v}~]^^}_3}/Go_ﲷw Z9f¿L۽{}Ob}yy? ׎G3c}}Ю׻[or f=m|NZ`Ft"Xx{oq +[Lξr)uyyJ/3/#Z]˿]l72RBpq<.tR>LWdO?;nvj)>c#$8Ve0E9; ~cVWwߕ˄s.l_Bw{ώ~ma[̼i-{^s`p-';ZW`? Q{bto5|~7}wyt+o*ticxp{ʿ 3ğğw|~C H/V)4/tav@J*BE#V"0#/\$7O}.0H/=^H!+ .9oDoPIs(v$E;\H< %xFN%sL[i rXEYۙX»n3X0g/^[w33>;ao҇l02-v} AyoM++! F 6u}cJ=cN7n7ϹmIB4Uh}2pvqUɣD4%8ҮF|] GĞ0_ģk; LG/&>x}ǻ^%A0|ah֋=`QM ĚQbQbOc *<:>X}Kzzt^LGH>? ~0 C@a/4}}"`Y 6a&{؈EE݋V.^aXc x={z=@a#  b91#t|L]6DW P^T{!}cDA#𹠻s` P>х80 0At-gK111y}}}?UA{n{uB[H>mꈺv|P{~j@E@6 @4hh\4 n2Ԣk3ɈV/"J,]@cCfj"Xh.?O8]-ej MOׄ?~Q ^2!,k z~(O13RTHB@x2xg?&Ƞ$BuhKpb> {n,.ìzRЯW715WA)(MW,IO}kW;_%>ݯgl t2G$-@g@Fn~vZ#W=3 ȯS%@D%5 cY SZg'UvM%+ՎgeZuǣ__g= YRTk`QcPDFk]A gEmkoXZ R u]Ɍ//Ş~gk\؍Ԭ.3Q~t~7[L]緮InALm_^sf-}EO8&A @6 \@ px)!t-H-ZhznU;cvࣀsǃ_~eaȵs\˦tmb=7 iىրa>c֤Z`^yX8^4r+(*BAuЄ Cc,#D6Ua8/X5uIy}ft_#UׯA;H)C8yR u[;ç?ᑹ!_R>oO_J0 0]8@ aV 턘-Z"` 8o(kUal\P8 +8Ʋ+]♭}{ka{s7a:K ('"EA=gl-WY 6P8VhKc3r<) }-w^_K޿Jo|̟rnqi]~Ը}!_waDH %0! `g4M@聶TjMvv:T*^w^'˪QBOku{76T|.V{ea dT0Ph`; X+b7C]:uMEB!<'1@mlT,BᛖsǗCnGL  `e+n?9͔ އ6H/VpA0?L߃ hfAPPvziF{渋2IÙճ%*0i% 6+~.!n=DW>wy})&P]L1^ p0"vA9$& )haW%,DLaa+F[;c^Yt^CVFߴ&|jL[[Kw{VWc ]4|w[JA(>4 ,DX z'k@t}xH"\fJȟ2,Byʱ?g*4>Jc^Od//rBnjBAl8*H20R &!pW@tIh֟Tґ71,&"RVPӜזbԕ[2q2+ɔSNg%]le*rx,Z){WuG.֟(1uޒpZ0c0cb "!1@&-CRpCU i[=o/qyjŵ$\G[ǒUUR]zwKh`lgC0.@N&V<>0S69hlJeSʇD"݈ehb,v~"5ƅ΂',a.DRDNrN@>,DTqKi,XG΋} mkصlZJ/>8p\\ݧnhf*`BA0] $xehD0 ӈQ 8F`=gBǢFb5KkH[g2!RD/B^uuĸ, br{^ ~ waYhA\2p  blCfgq8BL! !M/@/ZipڰVtR-،2ų:߄ PX .=ބ1kNSoFq܃/{+g}Ait|EN#(Z}wn%ЃAQ-o) ›U=8^pUr]̿fX.ʽWa`rK^ҹ/NC#hX$F|@Q 2 l`q$ʃe04(|K(!Z hZ`4"mŚac1|D!!"F.:S=!r P]Nڂ3gDc`Z.<\@F|XŽckcƋy }}KU!q$.Bm/9`[^LJsh 0n0)D8lsh. a|\C BЇ" !}dB^Ŕ!eb#!QoBž "j&Ј/PBp/z!l^໡ TQR+ ]/ dCA @s 7¸ "ZD` `4 l8/`fdy2k sxv 傛n +gׂIYE+OOGA7TJ/0sRx $/V+]u9xa!+ٕ/S_Sq($x8#V}Ŋ4tX>DI<ܟM`NNhDK'-6êd&aPT*G^`t% ;Hbdž R]QQ3G^ot*Oz -ۀ:tAC4Kcp5$IC18&H, Bw9U !1`,.+D1lªSh"20Dfbp j悀tv d!F E~$r9>rD^ +)*mA &Bћp/>y Q#!1 (ȽG}||j,"RyRw'Ks )UTvz;Urc֕P 53v[r^-lnWdZLI4ƠŀRF M DKVvv3TD>3՞61KAHg[ .U5Ch,XOF!=Sӏ ,Y: Bby>OSx6rBƈodh~9Û:T2*UI14Bd26Yl$|W ]nt\85*m#қDkogPבݧunO j-V8fpF6ȝG4}eFƘcEwelRo|)NvSVcD҆ z4UҀ}[DVw]]|Nwlᑻu%fA@D6 3a1}#K& I-y+ 0Lզ+ NJfg|SZ:-}-Q< R봺cOCss՜_ҿKA~=Jk{˰FKf͙55昃.+E# &], @e٢EIk'R0JG瑞rR܏ml1daPd"K $QAJ+~Dž$7c'$d] vFBb'j\XT/5L' dœNJf&ȾFt~sMzL&w\o+oo>Gq*I_ֿ |^+}Ӽ}o2υeaBaq:a)Ilɒ)iFbgu0dH>xzǍaRlmVwq5kL7Ifմ$#cgnm O KOD&L gd«e {u+"1:j+^)\qR3Xjy<*4ՒB!G|PS1B7Ȓ=<$9o6 bH'~XHh* L} 8.U;0)MF#frQ,@OKI^b#T(UV*/F@r e NXKтgg KI:}wTx(]XfOQ*u ѣsb2=,>' a 6ĒQd%L@K?oAutMkm\|@F%z7^ :vsJX Q@p0b\)̩Qtp&hkqikʹ&7D ӧ y%|'ūt/!OAƖjٗoUf0݄iSwy4cs>ճkz}%}z3呸WnV-KpX0"Id+#ڦ$c(b*Hy'N7hA1 -˔Iى':\y3GE=ѤNm~Yhv C:fR$+HiCsRGpꄔ"/ȕLd:a^'@`PadƥThJF唥5?Ue ku ^Ѳ%S9ieok ^. S|& å!Cb\@X]bn^{1P2OA;>VO>y[uC9,!±(A ܋ك0u*OG(3F~L pP~b:BzM'36*:W@"fZgx%23Ke*&) 1 :ČX*qdkWɝM)'XºIIOW.˭% v}~ۼOzG~b:2eU|v߫ ߯MlYDL,zf Յ{ =_rU^~Ē5y@;J+;$ a Yk^r6>  8RHg~5iy+$cֵ||QZU( x˜6T%B j^kLz3,^eQ gS\$%ȍ\,f+#͵M5Vye?g~_ ̎PuՐH162d`~cCdpS-1|qFi"a'ԀJ1C: K3}jOTLT_D% @Pc1Tj5wCDȞNŊV㙔++.(-:<<;I`\4/H~C#b (J~NvXphd\TS:1Ϊ1,҃]WJzyQg'%S:LySd HtebV3LQ)l2܇AVLlO¦'Ŏ7!U(Ԙ`tg%J6 C= {"Պʕr䈔Pq(hiKcvsWkxPbNLNJL6%Xb'\!Ψl^V;-q=0Y>~TzjU-5\o1=qDfMx>ð r-%y0!QXPTex dQ x6E09rqU,ZG G'9H ijF(j!Bb0 u +Ժ&oډШn~P(_%)9vi׵ξ](h/l٦Sa_d)sֺI9Sw*{-J )':W-,=9m.[;dkIѹj#ICC/΢9usܡ p- XiMLA¨js+D& }DUF֛-N{ju%LіKÓI3JI IDϦY mMNWL9u5׹}Zh^^~ ki>4Z'huI9XڀфOK30ddiZo3{!p\ܮY퍕Yů|3z;ۍq"ŝ,[)F~R12h+HI&tHe)9'5!; srM~hfzóɕ/CfSDAc>4X)4C0g (E\PMREW"\,'ȵj 6`V-^_q/I[鎘LzB6b֕ LmdsAWrCN\n`@bh⣕Ϝ:~.ߺywG\eZJG u))VZ}BIeNݓ NԊb ȇ6;5Uz_hS4Ng3Yat1͇s4p R/}Q יD΃B1߽HF%oSU'$iq֑$Ň$2m'HwʩZT]z2!.,' lJgk3D"hc3oȺdݼ^+kFTf)JSn3N4G׍^bzWmэeX;AҴtYTo)Zv4 6˕$փn<21 劗B[hי.D&u,\&H&erBya4#qoNkXmOv2>"J+)G 5w߹Wo;Lbׯy^gwk>Z[ޭBkg$;xދukHMXSx6ƺd%5w/hm-Q%Pj i tjznv4?J%`p%0SHRa>]Dot9h^ 2:ԩi z(m" D HeJ󧺭䥺*q\V [1Wᐎ~Րqkkc `\< ͞wdqTmqXn~2|6θC#]1/Yds/r0cR)U\XDϺf|[3ih eSXëCTV8' eE3VQɪ Mp13`+;|',:\+iS*%T?uʔjKPX+R5⨖(eե:bmMHI,(>86n˫ XxrPJAI!# ǃÓ"HGPˆm゘, V{$bmNhgb : (Vbl7<4f-QYt8ǹ5^Χ"l98茶^m+gշRq?]mΜ5ylٷG7]߭JtW`\cX8q}c1]*RUqJ0ٌ@MU?'J *pbǢࢢ#)KFz&1i 2Cm"f9Fh:ñOGϨRXy弪Gk0Kd3'epZի(Br'+ACcr jUUJ&^:昀ƋڈMgW G+M4E=s:Ғ]]UTr1 a/t3>&54P53U'|ؔ<-,Tz:5Sm:G+irJUyd8?K8g V3Iֽ"lޤd뤂MGa diL>{-Ug jIxM%2uI|qߺ ~d擼]?z~mcd١u\#W8t՛,&I w4ihrۜKi-E֑/*S0uVO.pиL85ZlkY5;()~kRki'[kHDZ|Տr )H0^o9aU|Rwg}j5l2jJZ7&${ N ՎIʦA&TĠX(s24 3hxNhtUt%,0)!͍W")Pv14p;>K65RrbhD+,0w̒&"KaPar2%HĸҒvvb*Cm/eJ_@_%'鞮]23.lk?J][CER4d vzޯ] ibSҌ>Bn=Vv>N9 v X5]TB lbQ[o݉('JgVQPzf'S'hQQ- BZRT:?EnP<`{,.Im"zKZSNtuU7]wޞt#ih3W5dIT^Ty[r )Wͳ0ξw? InR,k\nC:=5Pd`mm<1Aqz:׾vO< @Lٔɫ )jd+wtΆVnz`iDLTe}i-H"PT X&-! dي'*IdR61oU2E!!җP*xb5T n+2z)t?bnro3u~^ڙLfwd9Z3S=F~‰2\dC=WNbp6ŷ#yEyv/ fWaVbhfihaS?2F.47MUIJ T+ [?W! pjOdvrCsJFo+@#aCQp)~ iVu 3+xHXNDǪt?T;$-蠔\[2y0M LO2Wc J(D!ɐ?CPrr3&$CKo@4jvQt4q[EBh"f&MB?dP5Fb/# ځ\W S0#!qcŦ67OT7P(+9'"bŠ /b/X'i,0(.+BpV=ZqJU0*^00%P Ȍ0&(:]:c[t0UϤWˆ5C{ Ss]8pcdÒR 83ӛ(x0 - סȤ`仟d>>ž׽cG-hGݹO嵨-lvRu"EiӭLv`ͬ=if?BjKS.VL9eyr r'uګH:bK]ҡ zg~ox] (W}5a6Pbz嶐?ϕz$ÕX aU s2 ˎDL6dzیΌ8S!JBYVY|묬vH Eg,yV15H葔U@7) /QR=W#$p>WU1>OtgKm hrϸyAK_hq#I6Es"Q7p ^}+.߄Իj2i^߷+VqR gdal'򁼽h'$Pl(ˣLX̓9i -b"[sy0Jg,n͉z#[cbwxq=r^ybELU )xup|5dM",sC'V%"%Ӿ?i/T2Uژkt(fX 8f5 Y7Z"9(79QM#4Z%h8g|@, T29:|E *A# PhW"2̊*Cb zv$q# ;Ln M> @Kt@V0.%J4R$p[PsgKZٮK$&ZX_u"É37WE [r| e#i~][N^o;EO_-)`mR! WW +GkGlEPtUF(Ƙ@|M`#hԽ֮-&Q25ъ- $8]fL̸xfY뾁yHeIiD"tX?/Q6%%')(A,[JGЩ5Y"b! )sv.l:Ԥ): [OSڧOߜ- Cv.*V=]^YH KP-->s4֘~ʯMBܶ?V'b>q$?L G/)Mbƥ; d8B Qh\3@'%DEEOC75L>Ӈ|!y8 nS^eRl{X2DKaOSvVV'#ZGXynbեo2&@xk/k R-ySqŗ>_ϮKaU])~43RX_/uj]CDa=kf8)8;I19 Di8i!a}j+r`tRxnJT?F}/0OL ŵMr^E}AT|Ӕh2LHHxm=0: S) *Ɂl8%{JNHphI @( l@[u@SxUMM(sSE!a}y0~SRON_]< '#W`(aCadGVX0E`!D@]{UHZ%!Z`Ec B`PZxvUX6B¶8SQ،?pOdƄx T0b!/0%SH,$K/|&Jȅa8@@ć8X@0t,kZQ-&*^hؤX>p,BF @\A a7 `Ѐ*A:8TEIOà+6?P." -(Ub n5BP|\l pt|ґPzIhDF)m &xAK -'A\ cB;Ƥ$DT!.tz! T5PyS\= |2Yq4,Q@EcQ?pvI|T{&,>;k}l7A: HsJ, 2G"K!1"BT h*303 E`p<` 2U/ɶL+(A+JU2La)uXM<}Di̻k!S9꿵a8Voǯ_.'=[#NSVTkϥ^#O9 \{}!t_Yysćy-R$>,:Xæ)(tzf^[$&aV2mc(gԔ-04oc0>e[2\Ahq_~Nږ uᄊK^q`góu9%z,ZZ短h=񟹏 _1Dy}J'<)HJe$|qY³r3:2XL̋&,U_]Kl=25Bq˚2|6Lp#rlibvips-8.9.1/test/test-suite/images/sample.hdr000066400000000000000000015230231361153320700215220ustar00rootroot00000000000000#?RADIANCE FORMAT=32-bit_rle_rgbe EXPOSURE=1.000000e+00 COLORCORR= 1.000000 1.000000 1.000000 SOFTWARE=vips 8.9.0-Mon Oct 28 17:00:41 UTC 2019 PIXASPECT=1.000000 PRIMARIES= 0.6400 0.3300 0.2900 0.6000 0.1500 0.0600 0.3333 0.3333 -Y 442 +X 290 "䋕濰䎑Ⴭ더ƻڀӀռӃƲ튓Ѯ܃ݰ敄􅍏"兊怃Z[TXVXWVV]d_WW``X\mueWTRbhaXSTZSb\Y\_XXaea[]Y__`^XXadceeg`Y`\_\XV]a[Vvu]bacWPZaU`e]UVW{rfhWcd`X~yegdWyXe[VWWR~thW^^\XXW[h[RX`dbb]_WYbbcbZX\]YX`ffbddc[S`aac`YUQTTVVTSTQ"RTWab^X[\cmdWYZW[\WSXWcwXQT++(HQT)**)*,.0-)*.-+/:?5-)(^[NV43-%(PNK+0*T^/*'*,$#)01,/04231-/871-)+--421+)&-./1SNNQHEJI;J../1*(IGCZ[Y1.*6:IR[b66,&JPVF6ETR&%F@CA>PNJDNS15\MOT>IL,2+('KHFD@;A`92-)DQTVQL-5*!%% NRX~_pL/'13-&*-Z]bTP*-+&-././.52WZf^MV14003/++.0++051/-*%!CPRW2001-('&FT-)*-,+*'"M*(,0//,/39<3+JV3,%'(((KGL)*9K8L,1"Ž䃂뀌ꈔ̸̢̀삀|񎗕ߺ轨󉑒􅍏"䃌̀VVUTXXW[be_TV[U[zrWR]hn]SZXTVYXXVVTV]d__db`ad`WUU`fehg]Zd^^^WUT[UUYY[]Ul`icafdXXSaia}_ddbY\jhbU{x|d`XVUyƚR~X]dcZWYWUWXbc_WZfhdeacXYba]aXX`eZU[cdcb_^YURXcigd[XTUWZUSTTS"SXaccc`\dnjdZY][YZYVRSW^gU*-N@KP%&))*../,(Q-)#.GX=0U+]SGM.7<0LC@H+,+),-++,) !(//.047674-).54+)+*-60**((*+*/SKEFRQUTUP*,T-*)LC&L\Y134L?Sf\d:7-.SYYUUXi_-)KML7.CP'%&),.48);;&./-.42464+>F/1)(*(*2,''%)O%'VQE1=CUYZPK%JB&*)O7!BT^.44W?MbW\;62.XWGR2_eddWZYEJ/+WOEHM//,VMQ\OJQ//+*)NL`MH(1357-Mgf\MDF%#"('/7N\4b_>/.-+),.,.3764-OJ,43/..,+LQl8XU2121/&%*0+((/1..-($%'))032.-,)//g9630LHTWV"ON),231/2/(&/4-*&""#%&'QNHJ())%EFB"ܷ텇Ʒ׍ƬƼ풆覀;ϼ惒Ų𴘣劕񇒘ǵ⊔"ւԀxe\qW[\b|WZ^lXYXnyZVT[e`X]iW{[e^XYVVWVPch{y_XmTeedca]]a`^bXZVSa]UV[|W[Sr_phic|b]g]Xccabd^beg_cXw_\ed\WOU]ded`^[WRSWaf`^ZUiuhY"W_e`\W_YPOTY\WTSTZZT[jfOP=$+H*-00QH=BJ8(X4G]B<7GMEP-0,BNL>8MUFA6BR.4856/)PQRP)2=:2UL=Kb~IG?dIINKQ"OED'.24.-RNEM2.KM)(%%MNKLA=M5:5M@J~"ß޽ׂᵲʩϝ龀寧텃⫠ʴҸ焎й༴ƩܽӾ扊Ժ􁉉Ę㹞Է݁"툅Һք̀flxpYXbdY~Tuu~{adVVVRVUcttrndl`R|dgi}XkYVz{~QadstxaVpyk`_w~stU^^]TydkyxnxRYX_\UVT{]e\yRTpu|vYaghZXrxXyqqxUV"STUVXXRRSy~VS|UfUykiS;7DMVX*=9a]P/-0,NBKSEAEGR+NOVQC@MYMTQGPLO]Jz78(',O&')NL@Gq=DN>6/,(A9MQHKSKEI]F6=+4JKIB6!C[j4)L87@G*19;/A?FIFH+??1@?ADAGI[\QABM()"&E &+--'N(*NNcW>DQ*'JEHGIB48-;7E,/0Z@3D,QNZM=;@E=C8:JJJ@)-Wl6RNMS\ALN,7@KGKJJMVD:GZ?CLE7C&6LG@EJP>>JSKJADIHOR',*#&GM]]dr\4(:LNHKLJXZKCLMPC?JV1`K>DKG:FNTBO./FALF/%>W86[=-G6Q*&GY>9BJ]ZTYMX]P>@AF.9-64CEEDF,.K::N/,"*)%,/,)#F(*%CWP:7CHACHJEHG7-AYX;7=~~"逗ڤ󍽃Ǯ齗셎ɺۄ;Ĺȶмèͱ̽ꂂѶƾ܇÷茌ҭڰكԦՀ탅˾ց"򃋃ӾĹkuZvqWi^Vjjic\Upks~cksV_hhWSUurn[hjyW||WcL[]Us[}XXa~VggXTUX^c\][d_Yxdf`^UjrXcbuul^}bmnqwU_Zai`U_R^_"^a_k`RRRUPyVUhf7?de-?^F2N%:4M58011,L?ERWRGN+LGNXUH:6AO]^IC21;7@N*3;6'%(U?22:.4mFF05NNC;F*KMUGE@:IGBFQ-JJD(&Jh8-VR^ZVhb>IHPMQHEZfMHW.DWONPmJ@I;7R]4*/YQELOYNNRT*4+ !R*1[48fF>MTJLVXT47aHHHLGKP274,@BTI18IIEN-746><`TG?JTTADNNIA;62;GOeX2;DJXWU057*(*dG87'';VW8+HH>CN+RPL>@IKSP@J0-MVW=.GZ0*-/,.XSECHJCMUR=BS2ROn2T0/+/nXINS@W3124RC?CR]UPU*1;/ 'V.0/10(PJT`YTde,15.$'QQPMZ352/NSa[F>>>R,/*&'MLEBT-/3,8.G_P=5N47X>DKMY2657:860SEDIIFFITQKGBCBHQc2=LJO%%E,(/1GFL??>EVQIP(/*(LY@3,&)HaiE'5K<>JOY2ZH7AYR-[SS/(J\ZG($?@+!0?FReh9!6G89RNTeUC7QhNI.^0/%EC=%Dm.102,eY6MZ//ICXVXQJKGFQ//3522T=:SK@R2=iROL>?AGMO,RJGCH;E&+.)MPMIKFR/1.00*)+-,RKMZ0+F;H>FHLRY*().01TU)!N]j7Y<6DHRQM13)RGB<3H+,041(),Q43UV+-*+'%"$$&%@+@9+(OGQW+,0",&##$%$FI)-*(MJFHZ/*%%'''N(RV[[RDI"򆗛εہǷᾭ̀盂м߲ҳˠׅϲѲɀֱϧ񃄌⅁̩숊ۊܾ׾񊒓ᶯ򊔐􄑜"너񾵾]W[ebPyshsWzVRTWWWX_cTXajzxboUX_JnXWWTujXrzguhv]~y}[bQnXTSUxw}y~^oTlqTSUTTSUQVUnOoW[Yd_Y\Yha^Z_^[RuY]WZTPPVXWV\[XTV\f"_RPSURRSTVXURRSUUSPPR~&(Vc/2/(37Tei9I6OOF @T*?8GOG>?(&'&''I/"801-,EMXG;:?EQKA80(;C)U0Z(:F>9PDPbWIEUqO>S---'E=;#5fN0'6`6\XJ/T_>:I;.3,PVaH(EEBD@'))&*/0)LJNO-'8-9$9FSUX,(#)(M@G)(.btD3 ?U.D;MRFEE''*'')R<3;Y5GB$KTPC>SYVPH>?>CC%'-W0NIEGFFAS1XMJX7XJW,MIJEFI>9G@<6.U74VG8`fNMOC+/)$*3]A','GEF2*CM^DEI%FHJL%'$%)OHOW'&/"+!$&&%$#%'+NDE79R,+)+00%$,J;DN]^-~~ "􂆍巔牑Чن爎݀܄ۿǥۅꆓ݊Ĺź嵰پ汘Žɶ㉈Ѽ񄆇"θ၈^bcc]RWY^^[fZWDOSTWWVXxg[tW^UT}vVX_`WZbZZ\`[a\dfyYfYWdc[WbYW_]XWaVQ~{QTwdXX\hX\vYzWWTUVWZXWOUVSQUYWWWTRP"RUTTSTSRQSo~YOSqWW.2/--N!9J//..0PA>;9)$G@KYXL*/)$,45/5,-JBO5*&*3L?=CMCGGGM[nZO=2E-/M7;U`01-./-,$R`QLFIL&)&%H@?JMFBJS++()-LBN[*$""#%%('%%$"D#C75HLEKQKKUBI/&*K92BX10"놐̠؊Ȫ̹˶ṻݸ˭ذۣ넀惂٥θ˼މ눏膑󆋈"价׎ܴX``_V_d`a\s^^]eVTXWXZXyml`aZVh[{s`\~ZQr[qrXu_s\Xd]aka[`e\W`^T\]XTWXTTSVTVSUVWUnetpZVQ_~W]VW][X]XVOQUTRUWUX_WURQ"SUTSRSRQRR}}crWQXVwwT-30.+I90L20,-*QFFCIE3GYbLH(I62@(('(,0D73@EZd('$%TAD[^PUIK0!EU>?WqSjyUHFGMY3,RA8YQ8M*%HPOMC:Ve0J78_/L;Z;G3H-+DL/),44566-.\N_4,#.2'@>GUNVQ>?#)+&O.[LPd+0`)(*/UBL\W+QFFJKMHIMX\]SR\0(D79GOB2$-FMPWHBQTNRIDJL,-('-*IS`+%""#%&++*'"##@3+6JVPNND@M:;)%,)K>>PY-~"ރ侘惁厙񵮜ՆͭۘԅĽՈֵܲЩ቎أտ䆌ܫӼ̸쏓玖틍񆉂"ŭϸT_eaU^c`_Y~`btVRX][WSumbcu]\^[Tu~Vl|_rteZTzyYSW{pdfiWn_Wblebae_VXZSZ`]USXYURVWY[VUVTYZWTTuptcex~U`lk[]ea_]YVX^TVQZ\WXX"RTTSSRQQPpU[[+110+G51M10/1+J14DNOBWc^MJ)&=:E+)'%(U:(&?GX1--)(W;;ZeFB>=(96L28GXMq?O7BDKL1'QB?\H,J('X.WXC9k4/PU_@/=1H9ZQKIQEAJ&-75598/0h]`.*$)2*P?BPN]MC&$()''0aUQ.+.+'(P,SMTXIK''IJRULNWYZ,+P[,PHA?NVN:44S[\WFL_ZG:89J\RBLT-aVS:FG(*)SX^^\ONMKSQG<(+(+/VNH"(''+,*%$"E=)'DT^VXVNHDA5A&),WK<=HN~ ~"䄑׃߱Ѓˀ絜ǽɯہ϶۱؄킍񆍆߿划偂ڭ̸܁߂􁁀"Я肊㄀`mc^e^VpMXoVZTTQMRX[ZV]RGgRxbh~uswx\ZaVgu`rj~yV]Pw`]YWenTzcZT\ejg^[ZSUXUY\^`SUYXUVV[[YTRXVVSOOuruv}zsZRWX`yXdfcc^U]eXVXXWVVUUW"SRSTTRQqrWVTQUWWTV03/UG87L4435WJ$/=T,1.KJQS(($&)*'$?@2!!Y;JP^[+NM;.?pAcHC=cP=)+(FFQE@Ho/)(.E#(367;60+VX`,-')-01FBELKK*YL),(&/eSM)'''"$PWQPTMCGE$ILQSOOQSJ%##%,_M@=DG@HDJNNQGALW/OLGJGEF= :_v|FBPaUB!8=B\,,/0,.I/Rb91GIP7?XD48u2IP_SJ)''15260.VFAS-2'&>\5L@DJHH_TIF+*)*\NL&&'(%%MOQPNOIK>AHLNOQSUYNE:@W^PA:8'@BIK@AB>BNOR)`URF99?N(+./0DD=TENE&)-,8@.@M46OIG@:;B;(B[0,/^+%LJGKZUS'cK=A"MN*,+)'&SNFGHHW-)'$%T_RHHGJ&&LHAJ+~~~"㺽ұۀɲ½ͩ耆Ɓȡ鎅˷реžûڹڇꀆѻǹ"ǹѴ샃ν℀gmSW`\zamsTZ\XVSSLe>{P^\VT]_TQVSfzlQZm{xrakdn{ztuYNqSR_ePsq}]dWbToo_WVXVVYWa^Y]ZWTWyTWQQTSQlt}}~{rtbquib]pY~w~TR\_cRVVgiVQ~d{^\O|~"QTVSQ}pZ[WVpfrUUR1:JLGGL.`342PF<#2>H3EGFSB?L\H8+7I>M(&/3*3@D7OV02JEL1;.J>+0d.,55+**)00.1021WG?GK,Q;&J^I?;=RRIL.bC833;DQ*'+-P\4FmH#&2216VH]aR?-9CGHG0(@]+(NNH#IH@EJLHGXP?;"?EU+)+*'NMJUSDIV)&$%SN?;GPT('LICI(~~~~"ܸ슐̿޽ƴή復ݽ򌐒Ͼîúい߲ľɾնꂄ憐߻徨ʾĻ"ཽǁKAS|[^`\][{ch]bljUlSX[\TORTfrvSy}hNc{qYZYtzpo}tkz~{wstqT[QfcnY[`TY]c_WUXV]WVZYYTzg}tuRRWRyttvulupzw~~~umccZUbtrgmqgYWwSRWY_m^no\_z~"qoSQPcfTURQ|cXfUV#!#8N-1;:50YL6Nv<<67<;$"&EN*-# &*A&080WO7 3D:.62EU^7?KUC7@B1NYbHKL84FC5CLQOIO->I=(.$GRI+44A[1XZ/5-NJH@Z+/;91/.+2024460NIJA?QW:@GEBDIF@NNL@EO(*ZZaaKBQ) =EVCEG;G;E?GJUplw{S<@CIID95<;37GC./EWLCFJK7("3?BE(&&::DISYF22BB+0UOLLQ?@-&>IJH80G1)ELJJB>EB<=LD:DEC;"49D=E)-)NJIOI=@H&&%%J;-);IWX+VJFH(~~"ؽƃ͐ݽǧೣѻڻѼƽѰéھؿȦӶĴ"؂ٿ㽡؂\oUgd][`qiff\w_b][UOSXTTTgsh]lw]jd^{sTUVQUVyt\]VUVSVWW__YY\[XX`ixsnyTzkV[bkvxsddcPWmfZXiVgtvk"skitQUt^UzVUS{jbXTX<^KA-269:\GJM:I:B=853`I7,.HS,+$$)#:D>ZZ;'APJB>/5D_IO\X90DQL]rkON_YHOC*3N]]UQ.EP+()#+6oL=>HJgf^-.+)('U,)+578b]Wsm89900Yb^ZLO`6,BGDEFB@?BIQNKMKLUZnoVFJ:T\IDC01;;TISooH?5EF=:>H651BN(%!::51.A[d1MRGO4=?942QKJ@>AA*,$&+*K'1BN\JG\QRJI(#8XM04\@@U\LK5aNM_10X?$+ObjQSGP+2.(&3/1/][^Jfh`/*.-)(,2+)07:.YJinq:8*.4=?tOEHDMHKMMNE<-39SQQIDAB_ġrXE.dfYQSobXH4CDCDB=3ZGEA<4*(@OI#*-,O46>I[TD&Yw8SI'',33-.3/-0^bLG6oa3.00*&/54/,1YedC]`Qm͎ޮmvު{cɾzRABABHIMZHFSd691)%+adQYju4+LIKYMOUR)*WF1BJ?>hbMNe[Hda>>\_069VH;14ID;>ITUQHKBL01,R"LRbWFI$GGS\K22=K%$''%'*121.1.P@9B%~~~~~~~"ĭܳǵӯܫʛˈɓ惄ܿ{kmmįө芏ဇ́󀆌讌憖"Ŀ̶鄊犀_fkx~dd]eWY_oxweRW]sY``Syofvw`a\nclN[c{X[dgWQX^YVYwjVf`a[WTUmSWtUVadgkixzsʀt{yĄlĪVUthxZ_]a`b^UX_hdU\]d^X[WXZ^[\wVjb^Sb[T"SST[`ZUTXYUWZ[WJ82B=C564/NI \>;/F %,.11?F1*gRM4Eegd5-1-.%+gFoK(v-4A3YX'*58B|^4vIRKFAO[?.HUftxfy|wݻɆؐUrĬ}\J 9IJTq-))0594)MMVZW0472TJAINRheSO-1W>M\LJ793161IRT=I-5531E>*1@OPMP\2.SLRGF.81("MQWUJFD5;DXK9AHR&'+/+''',-,-.+J89"~~~"ه䱏ղǀñܷͭºۯ󉉇ʖĽƵlk˪ȿȪԊյ테ɾӽ"ЀvuZ^GL]ahqv|dZky`TepuY``RraanicSX[VvlnSXb_ohIWV_RU\VSQ~ioposc]YWZXRme[vb^b`TWUZatֻv{ʠӿxj{Z\]^^^XSXW_c\a]fa`YZZaddeX|_\x°{S[VR"SSSvgoSRV]^WUVVWWX]VSHB:=M8-"+53787H[dXH)%!'4'"5@ADMU+(#$I?5.6G?&1(*-+IOZWWZALQEA:2GP3),'%?3Qj49&:"(*,-Ya5?RKC;?SW`6/-*.&)JujIPyi&,bz1-15>rD%7:9EAEAMZ,+Y-/,&##$(,..)?;$~"䅚ĤΤ󌖉ƩȾʺᆚ毑ȡ¿eo|{zllȻ灈й迱牊ڭ̭̰"ë򄍋\X}ethLjhecfxjPSoujp{Qv\QZgdoW]Uu~y|ql{{YKUy|wS\VRbZUdk^]YT[]hPa~SVUYbk_br_Ynuy}jxwu}̶yW\XUT[W_\V_\Xa`ahYucvnma_RVTQ"SUcXShXb[XXVWVU\W-1JIADJA%7?;]H;$()'I>@??EICa턉{Ʊиrol_adf_-,'+,)>D?AAI&'')SQMOTMHANSQhcOEJ?7:M_5-YXRO/31/93N4&3=B2?MT^RE%6P]b0.*&"%%C3>D1-,43DBN\EB)--J61&"3RFKa=XVRIHJTs?S@5<<-7BA+/*'8#%'D8N]>+1@Q<8F((\A(*29D'IDHIVhP*31.-PGBP\y-/7@9ZNFNSTr?Ag[?6WL3FS160*F#0'-!DeyO;.%#6R((\eJ5+0'HdJ]j:0PRMMNKSKDSpR29EBLIn}}ԁ٭繪~j^VHHH?=;IQPJ&OQORPJW-QI;@GHGJ^9P:@>E=DMNVWOB8]Z,0RWNJ?M]`D3,0'C`m033+"'%G4.478CARX12+>8If/CB~~"ʬϵ󀌐᮲䄏ײà˻Ȩu|tjز翮Øр"ȼ乵~x|rlx}}dbuy[e^TTY[X[XY\dfchdTw]eZQ]PrxgbwmRXu}V`gbim_swyr~ux̾zÏᵤVUa{xtYWdiXVR]eaa]R"PP{\Ykjq}lo\~PKGOJJU\Y^V^pihaPCCGO_plS=6INFBEMD:FO57RLJUVO.40*+//0lo4,,287UD6JX]h<74Z74*\IMa36/)H2>,KCRx:/IG9'=Ya,.eZEZW7CD27A7[[\UOOOYUI\lH1BHCOWӴŋᴭqbUOOIF?>LU[SPWQQVREI*/\F?FFFMc5I9CE?CQeg53bUNQP,5LO//QW]UPLKJ6%49322,"(&KB7Hjk@&+9/6AC@2,8833=K(F:)6QWQV~"ʷǺ½î򎛒ѮաꏌИݲ۰}ᠴlھؽظމĿ䊑"ػƸuyxt|[~sw|zvntZd[SX^cd`XYWdqjv_j]YXeng_PdPWnjbV[bjkhbjoqso[s}{鹳ϯTUv~QSSzj[h_de`[u]dcg`fhibbZQ"QTSz~g_v}L:?RXNFMVLEKfXTJSEJJN^3ZHA?=<>?BGF>JUFGs~HvbwyAA=:@@2_RdRF[bxgolbLDMMHFpڃsu݁ϸ§waUWWZ-)IB6JT^RQJIRZ('+edK>FAHMefD;>03?T75550N>PS@Z\386^^RHQ]c4)-140/.&"'MLLM[63E;CL2)8EIE8F@B=6>IIRJEEN\S  "̶ửꍛ ၅ǐ嘑㸗򆩖߇Ǜ跰ꂄﴘnä脄۶ɷ޷䌔ڽ"޿ķ҅ڀgbopcjnzzumnjkbkzwxmr|yvn]Xlu}\dURXXUVcxj`pnocw[ZedWS[l`veTUzngZWTVfb[gppgjwtqlv޾}UTi_pVQPwlh`sdfb~x{f2dWiihgb_b[SQSSpeuWWZW6&,DUG*#6:=?H=96<4:FKRUOG97-6GF@=KHNT>.*:329M13(HG('-_X@*/N:PN,&9?0Gi8155.: '[83WG/727JPXg:3..)*[[:vs_QqcetAa55;?:cRAVNHkzrkiZZQTNN\|sž耫}gVX`a`+*L>$3RYNLGH[2)'QMNADGBHM\\HC?4Da533W@8@IOi513057SCHP[1.00-/3/%"$FDDT^30G=OW;4;IPPNTUVO=C)(-.PLRVK"ܲƪмϊڼ隙劂ȍм𑐀⇹؞Ƃ׸x|Իֺ̿IJ﹠¼̻މʲ򔛔ֹ憒"﷬׵ϸdebujGMgzhUWhm_Va|q]\_ysTQJRW\eacO~}t`T_TOd~hYnEI]\v^SjpkUPSRuqorm^VifYjsys~߱ўtSK[x~zXOmrl[u\ba~~}kkbbcWzaida_^]ZS"qbqu}STV&#,=MH$!8;,%)7?7)2IKMTKC2+':JLMGJGDG0-!! #P71$94A7G>6*IKF\y6!$44#=TY_?4W/#O48S>!'Md@?Qh@;-)&&FAZdC@GGYab1D+751RD@PSHQibaZ`^w`KYU\w{DzѤեh[_jdYCNL>(2EME@:@^7S$E?<>RLGJMQYMTW$";X433S=P/'./3-%I8'&ERbUAALT@81'8GHJMGHC7+-@:"%/7Xx2D3/2783""6JJK<%)9;9;DN^oR7)#(@TeD,"D&;=3EXv@ZH'HF55M,DhANRA&1I4nYAHU`T8qEF?BNKKMOKTFCK958/R4-UU=:47Gb741.20H(%5P541//.-*L"F*&?FE@?AICGECSklJAFDFMNJEOYSRWT)~~~~~~~~~"εԧ꺧ֳŷҶģ׻̼޻~׽|~տĵýă爔軴킎"Ÿű퀂}|WJpcW^nrld|cZfcWTlu}b^Zb^}xnobRSxt\`uo`khfeKDFDgu|uy}RO}faqry~Xay{~zjeqrxmк{st{y{cZQj~~hPK]\iia]X~wWaf`XWWT"_Jaur|w{TVWTnKFLH,$CI+.u@G<5>IMTR5,66I_0OLD(G9*;YkG4..BV\RKF7@F?*EJF[VC;75'+BVB,;LMO6:28=A?(&'#7OL6??FhLAL''BJ>Qc\ZV@O25AHgU9.HW\[@AKN@7IN@>`nNxܚʜ٦żsthyyg_VHDOVLM=GHNLHLIL?DG9;GOKRTP><;?7,4v$R8LG^N?03CO5><63.K2+?J384.,.3/T"C$0E?7/6;?BGF9@Y\D6CMN_1-OL(KIGI]veE268$O]jcJL_Y9IHG\^XLGKSMQgM:5LI,M@AQdV>.,5,L{hT^B?QIE^)(R\M7R2@[GGEG^L*IUNLRXQ@D?H?3EK0OrH>lmOB?AFYE@2)+9OWJ9%2@8;AKWT;9GLMKIHKM~~~~~~~~~~ "Ϳڲޏ׃恉յɮ̷̽݀ΪŀՁ}|ڴ}z}zҸ̾傉μݹ䃉Մ"븖tMkvhd_PVVR}hWgom|[^wXVS`Xw^gxtV^eWUaTffgghdqdtzshq`hn¬¹ouoicdj{xwrtrpi\i~~UTbgSU{~|bXzeou}^dRnsTTY"kj}rg|kr|w>8DHEDKSUG4 7LSA93S'KMLB9JK%&&C3>O^YNYgaPRD"%==;MPWs`E..<9IKD@C^cg-""MOX739058?OC-5Mb2)0:0C:@P7336:\K_jV^m;90F4FRFHMiAu_VLF[VbO\}߯ĉcpoaMXqxl~ukd[S`y{jYH?MORYUae51P[`ONPCLQFBBCCW78YIOJ')H?==3>Z/&C7'7@>N28,`>;%>CN,QIGK3";9XCB@>:+6DLPG;09B;BFHORLHKMLHD@:< ~~~ "ھ攷߀򀊈䳯ڲķՂíۆ뀆ﷵヒӪ΁~裉~~mʷԾݼξ"۸igUxhXOUURUXSry^irUVwa^uzvph}NR[a\uuttiH@CjZVZ`U[_cnqeW]ofk[acT[׶hqՀ۩nrume`cpxoqhnmkkhes^ZWUUxVYxxY"djyynwwFHWTEC3*L+U<<@?\ea/B"((%E@KQ&(*G38QZVJLQVNZW>&7C$":D\SF1*>AE@30-CA>) (-b>FJLOJJ[">TH=B*++ICPU)-.E;8IULBEKIHXTG4FZ."*5CGC7DEA:792,'&+;&%MleF647?49-=05G(23(E?CCC+/128gLJG@DF63N)A*,Y2K`jgjjbeT(UZkbhϫZQQSLHZ]aWjmngXWYX]ubf^XQFGMQTTcr2,[VT\U12?9GAJWb^QKOBKd`R*LLW-J;6;#,OEUUPYKCF,;=-#BGGMZSJS"AdC:4=>>@H,-PA10;CRYY*(),NGD9DTWS)~~~~~~~"󰞍ĮλҰ潕ϻʲ½ʴڿŐ瀏ܻ¯Ŀ̥򁇌ֿ׼߽݁񻮿㊕"ŷܺŹU\d{iOmBfdO\|VUURX~r|h_^~zOCF`Ru~burP[aZUUYT^Y_tZZ}^Wbquqjㆇ}ƣ|qi`_dZ`X_]aUVY_abbc[pvhy}tlv\n\W}sSWUXd[S"e{ruVV|UVWVVW)-8aC<$3!=XcT]N2"*9>J+13)NPPQ1ZGmUD3, 6OYFKMH8EVC!%.> :;HH33EHN9@P=BD$,/'%(/G>TSS+\WEGB+?MO7$@ai_]ROFIb`NLHHLO'NIHP\T9BN+-RHH;.5.#HLNOSSEA"kHj/06O^TE=6?DFIQSLKI7?N(*QJC8E2,DCM,.XOK>"HRD2513@JP&#YWCAF'QTPO')))%:;O[RSh~~~~~"郋ةꋉ̩໲㶸畑œȩꅃ~聈ҽͶ翼䄐ŹͲ郏ִ"肃쀁̯8U_}vb\cdVWVVV[WRROT[^Wm`WW]Wxmf|~cYQRa^[ZTU^{\cuiv}fX\ދ|}`WT[VYZZ[Z`vfdrfnq|wnvdvzVvbXY^TOUimXQqSZTykoryhbTTPQTSWW[XT,7JCI75CAPYc_nj[IVTO),-,,2.$#$?BCSSTZ[OJ')*,]:'CZ4okRScYQY^UE/71>8R=7E9AI[XJ1+SH+QP#71+-Y%(3^F-AFLr;_Vkc]PO+ZW:9[pi`e93M_aH?FDl}|ầbOFJFIG|HROarlQXcSGKNP[gsg]O>AVfFPPVb]ZE"?w:[0bQ;7L,+9>=J*OKLB-:HL))G>KQMNFCL,0-SD9"9:;HF-(8I(#=_x_DB%()M&'$''$LDAGCED~~~~~~"ͬ񃕙ఢӵߍ꼽цǠ߀􁅐ⲧݞ؂ަἴֻも񈏊꺬"éϿYbwsjvUUTTUWURSRPRSYT\]XwnVWR[aWtvahrfh[X[^ZY^v|ab[iemyokggfqщz谚yjWY[\[VX^fakumhmrvawso\t\bYgU{_`XWRR~\T{RQWYZ{"|znSTWXVTTW|l`/:TIN9$4KXbZ^`SMU_TG(,**,-'$$%&**/WN\dQ@$,,*WC7M[`65ZV_[[Zdt,,3/JInDD9ZB08ai43*&*23.4NK.LJDHN@7:DR`96Uo>9ghjVpKI:?DFFtlOH_aYGYX`i񖔎}ݰepzFHFFIHMVXQ]dQCAHESe9hSJIM;XBN+/.Pdj4&joFK\OA0E11%!JI&KIHJA$"1Ii\KHM+RK%%#(*(.aJ5460~~~~~"񅊉Ϯȼሎΰጌɜ򇏘绳ڿ䃁ɀ耄ߝϡՉєӲ֎ֳ"Ұź]V`Rlmr|XSSSTVXTRTV[[\VZXxc`cdkkW^Y\adZ]ruy^hx_Z_\_Zhrve]noba]WԆz媓h|hWZ[][_fbh|voxc`ptzvff~vV^tq{v^_ZXWRU]Vu^UvWVWWY"vvr]`fxUUUUTSTZ_Xv203):*E*OGKV3]LEOI@7K)(')*('')(-.,(AEGD9J-*EIEFR[MFFJIEN_Wd<0*-YMD\9?h2H*"M_n`OJ0681?YL?;CEF|ko<=0KXhjxߒ}ꮒo>_}IKECHW\VfhWLBBMd29dJNeeXIM,.REErZ/EN3CNK:/E21*'%''-&GIDC2=Sj2-RYUPSVYT(-0\PP"LYO28CBGK>2)_]?v8:zux|?:6#[j~Ɗ|tⷕptVLHBGVZ]ftfXPKFMd8:gYnwjYPOR/0LBEeT5DGESVKB3L3-+-1.57I>??EE3>[DN7+PQ[000+#&,+'K"LUO8;KMPS@("&+1ES..LFOP&LNP*2314dY~~~~~~"ЩŰ̂ϵɟĴ܃湛׃ג֯鐊򉝣θɚ㐑Ùڀ"ӵռӅ􇎈値bQjmyhkoq{SWSUVWTOQOrvTS|bv~xp~}se_ljgZoj]nuefkxT~jybY[fgbZgwi_mv[Ykeb}験m΢{Ʋ\Zblqto_^kvZ{d|pgiixfR[q}XpprkTZp~_X`_TR"^E`uX[UVSY`XM7(HDMZPIbz@-;CP_P+("#%'V+*(JDD>58AJO-*1#9H=:9FOY[GIDPOH85(3;<"/23@C<>>EU[Z/FO;<(145/29?3.5CIT.W]TIL@NlMJF>D:CROVK(/@N8NCISX*/0%$WTQI"GPOCKUTMSI1J#(;H(+(MKQ*&IFE@Q360KG~~~~~"جҼɷ􂃊򋊻ǫٰ݈給õ߀닉´ıˌ؄๴ВǸ"Ź悉ԀwpVzaYnQPTTSQTZ~{VTqSqsWPjtcba~xi`hhmf`_lt{cZu|wuuu\OUW\bkhYavwy\|ƙej|#|}귣l鰫_Y\zejlvu_mzziezzmahQir^HQv[[Z`vynohYcmWWYSplr|lIa\XX\MG=4:QRX\,NNSC10>gxmM$!""!$Q36J:9ALOPPOO.)%0G4%!,8.CUWO65EIA40/7=E6(+BITIB8IU_cPA9=<:/13KJ7>HU3:@1:9;LIN-0(FWUPL"OUN6.4AG1)7>9HTGRO\BHUF&DW_V95D<5AF0/G`GDPO2GWmM3@FB8]L?GKD0.Dm[NIGSHpF9?HWVgCIPF-"-2XL0'WK2LO3(:DKJ8:RD=KWTeaV=;KJ/ASUJ5;\K?SX;1IbPEEA-Jw{W54ELMXxXd_T:WB^WKUMZADIK[n}|ٙpcDF>BLG?GpcYRM`OIQLC;IFM@CN="H=Th^A4AO/)M]WNFQOC>URBFVNC?493HJ7I=7Oj;-$%%LMHI"&(+H3&+,-;AHB3:KG=BD>FJ@>@B>@BGKKO ~~~~~~~"ꅈ֫™⸸ǸЭθ胑贜ɾ𱏎УƯׂŢ˹继ߛ"ٰǫ틐YZ]a^ZWQW^lvg\\]YVTYaXSQji[b]R]Rmu{[^_g]w`gf`bk`{fjnoyhvڔqZWT[[Vyvwop~n{_js`WZqTV_zpOOR_qrr_PUoQp{\b`jl)'),,*'(ZZ0ZM8IO@742-N++Y^20,++JTY:7J+,)%A@B2*eu=G^K?^\D:?CF+-^rRTS[hb[VXVWi.2-HA5Z>36fZHIHVVL@E.T8s_@9MWdUXm:tVNWfxb^^gDRSJUo{rlkHNCCB?;JEG|bRJJRQIOEOUl\\X`P~cYK@ay^SD:IWK?HKNXXSFF-"$3OYbwY7=A-0PNN:E8e>$!IB=@"%3HGH;90!+=QU+C9:;GTM041Z@/2EJHNTT~~~~"񂇀뇊ԾݱŬĶȞ㏐胂볊۪ݵʀÞϹ¯Ͽ"Ȭ߂䲵򂍕؀S]d`VZ]W\y`UWSMX`[VNUY[UlWjtbdsUehh{dinhX\hpm^VUV]db}xxhypΪ~aWWWUW`Rm|xxybdmU}}]p_e\SWcrm"Pc^}mwUR~U]fedtK&)).+EoA?>lVV-&MQOQOO06`L=9JYWHJa^g;rMIRhrONxuRPSWmr}qf~[?FB=::uJIczeQJKTLEPR\p|ngcfIHR>LzdbWB:ED@NUXXb\RPC5!2L[570B./I4YU2=:gAB?KI?E"':td1AAC1:G[1.TF@INO%*116dC6OTIH@F~~~~"т軰Љ¹ѿ鴓հ׼슅ȧ凒찚ϟ؂ܗ򻸻z~zɘֵǯν½󇄷"̹|Uc_RslqZnSXytvrOQTYT{emyXZc}E{ecxcJX|hfXKtl]cVueV[^rUq|sj]j^[ms{p_ZWTYWy}~xxɼY]UTVWYYR\ary]"QUt{bTZVSTVUUYim79(,/(?%7>CV7UNKky16cE43A:FOppOFZcYK!&)+)E9CD.1OQHM:/1RN5?B9U0-edS23/\Q]69S= Ns>nW\_63%BD7EP+25M>_3>OLF=RY26W1/:_T:HgNIS]vzvv||VkHH=;;txOwvm`LMbVLY]swihOex]Sh{umXE-CQGDTO@\sWSBC::88DDA6+EI+:FA94PQGC8#";"*9A?]jK5!GulODUo<0"24+9NOU5N+OnHFD>5Nh3*S(!(FN9IcGCMQ^uuw\Ut}|Ɏ{rXDDnI;dOI]b\^l|wpei~dLW;dXEGD?AKT2/*'$##+H=MYC0NS*'5(h5KNA?IHXSYiWO07W~~ώzvcWzDHxFN[i[ZNO_ccchy}rmmxkLJWvXUBIN@LO\3I?%&'%**C?885:>#D@>EC>I*,9cMN=8Ap"6.301.#%'(0-GG>>MNRSMIMM4." =CNZ~~~~~~~~~~~"չӸϱԾςܣ˿Ŧ͉𬒜஍|yѲĻɳʹ޺"Ц՜π\_b_UZ[^wpzztuWLy]RPSr}vs]]dQWbfZ[kX_b[`fRfckkbWgx}k_huX^~geuRb|dICK]}ןiSMUWXLKR`yqrfkwZ_cXzpwzSUU"zZXYZXUQQRRVUc\}aNt.243/QLM[6rp55YNJ;/]s.A38%&j^/2\7)0`oNBD0/5=,3AlAU?DPTIOD&,L87IUKA8127B,/URR;JZI5[D]TW[O;..E~lܘz|z}cABHDEu@GLXk}aLNOWef`doldmztoB7GRUbPEMHRae4H:J&&%HD;AEGGAE#B<;@NEC&'QX[iV@qi"U4/)+.&&,,20LF93EUXF?IIE":QJ!.8D~~~~~~~~~~~~~"󀊄ܼȶⵯ޿ߨΆLjϻܪ⾧񬩩୓ʽp־Ƴ˳"ٳŝ_ac^VSR[^fkhZX[aơtqXPxvgti`TeV]dZqcz\Wh~~zoitffq_c{TCORnĤkYWVXUMMgtzaet|xq{phgdabVmjzTTTXZST_"|ZUTVa]TRbdulep|||/320-*LS-49>?<212T]eAFSY`:cDRROCPL\82UMjhB7eNFF^mc>G1*0V59hvRKXUFAJ\\[a]H991Πyqr`YE@?Dm=Gum|Sec?BLNOH\^VW[[@>b}ej|x^?;A7@VV>@9FW_eMIW/'#92 -ERTJN(MLIJ(KD$9=O150/901iTc2WVNH`BFeVY`fZ*11RS(>3@GW^R6/3V[M&K]s7796`<8SgtRMD073`MAO^Wfv1,[[UWYA4Lp@5HE5Ade]3@mK;ML@64X4=::-$*OG6>OMY7hP?C@}~yeeUQO~|xA;l>EtusPReiUGMYX[ee[OTEG>^pIKhoiSBBJ;6BXSN?8EHIHLi5)#9734HRTHI((RPS(IFJ=7N*--046"5-B;(2/%ABF4;*GIO5<2(HEG@.9a_+-LAD~~~~~ "Įрʸө񽯹읟责ںඹ򁊂څ怒ʾ炌è˂ϵ닐ؾچ"߁мˇрfe`XTUPU][RzT^_dY^cXTXnviw{Zedbb|lp`hmspnbbxVm_PS^\rjftbXYZjjqh_TN~XiXmoHMGVmVr[Ybuy][}{Y`ZXpxaa|rva^VXUVZWWTZ`"[TZVVuzeVcgh_43/.-.(GINV.50-VV@E)/1ZXbAYUPXd-,2/U-,=0BIOVN533bUI0[k?<5,POL?VbgW_^9=6cFDCJF[779:A>?`A)Lr;2)D+:;xG:PcAF=6na7Ui8>=>431,I4@RL19^IcyNbug[QMxm||{yUZetd]fim<7\VNR|j4i[asl4\KMYZ6]k`,JKD8>LHZ60MLEAORKGAO-)LMRO&',PA'+,-(5:"2D??L0/)MNOIEDIO*>D7+KBGECFe854,F@ ~~~"􄍉ۧʸȹªö݁농ʬĺȨ󂅍݁쀬î̴ָ݁ѳȺֵׂꄊ"󇔙鉍Հhe[XUzTUQeZhWh`|TRmz~sZkeZaXU|mkr_xdqrhbb^hY_ek_bpiYbvf_hrldjWe{NjGFJPMJIr}eWVd{Xrfmkfþbjxsed`WYd}lhqultbbUYXV^]ZSY"^^gid\Vca`\75/*.aH6@PNQ-/*A6((LcZ-`\UMIF=GVMG'LL\.<7FD;KI63L9?6\KU25.)@LH9FQSf~>=A7`ILMB?PZ4;=-TB=1Q:;K0'$2HH;?B>eIFx?VQ?Fa3MGP3:61pSTR?M70)J96LeT3]wJYSQ=}]Z)isNF>AXM8IVR,6,EB=3430Ig}|vrz\H?}~{ylFXkw}]aqybT;JZoD@@AAA94`G;7fV5/+$CJHII7D18-O-,?F@O%AGBHJ*LK(&)**2ON"ODB:CUTHL+MBBKSF*/?VI8+C@%R176aXE5~"ۿσ̨¹ȣ㼱鑖Җ쪖޻侭Çş°ʧdz߁澠ѻ䅏뷔׵􅇔"žʴcdQ{|X\pw|pW\jRWTdblqp`IPv~qikWdaYWv^`i{he{z[_n^yxj{pkx]l袓xΎőxnOWzuHBHKNHJQM[knXRF]RfrrrpT{nomZgi~k^iXecXMWzXVstUW`\Ysa"bVary]SUY[_f]vrA9*==?8G-1RPfZCEMH=LR>DQJ<03!1JX^/N?141-53!$IZ?>dC?4R6<\9.H.:B;B>5RDJeP28]2WkTR[`o,LD/BXWGMX_N;7@NF(IoOtWW95i]>YtvT;D+0GF331;@96932Umyuz}wunaNB={exO?YntrSTjb[RHDgIE?9C?qgW?+@bVGTPGAGFJK8G/57iF"%NXQHK.+DEFD@Ka~HOO3!!'+2/KF?4~~~"҇撣ɷ݀ôɱոԋ谈Ż–ݫÿȿߏܾ́׾ͼï늅"ʰۃ﹪^smmzSt}_f\_jukWWu{}tTXtijg[WY\sU]}nxXJr\xmbyhf`k}onm`W^kbegcuoUusCJLOIFIPV\y}{rMMFŮUjx{qeup_qdRmdz[Vab}nUy^V"`cynfsQZ_Zbhsbtc<\1/?CX@H,@LdMG989)8EN:Jh>;;\=Cc<5K2,h6A9#4Tg4#2gN2GOFV`dYU<:$3NV;85?IVV='..kl`MCPTX.KABDGJHC2?:DW/#RgR";@EEOPOGI14MA64.9GTOphO"%&"(5Y5+=C~~~~~~~"蜃ũ눈޷ѴDŽ甛ū޾̕ժø퀕ͺռԸ܊۳ƹ㾳Ӷ"ȿõνӋ篩Ā}Ypos{Vtc|`ajo{X\rWZhXRZ^kfh~ohvPm[ps|ter{jUYSUz[Rd[fgp~iftĉgq{RJQOHGPPT]qOVhqsxd\gYWeyXdZU]g^|{ozsu{y}"xrxnfU]`h\``tX:-,U`nFJ/?=5Ji98fvCoY;0Jhf>?RY)-YUNRWLHNNEJPLTc1/;s<<_:5\?38$-K@#5-(;FS<3>SaD4:8AaR=*,(*Jyi?P`L2#<0:FWcC>dL\Mq;8IT=EP54599==53DfcbnpXZAd{u|}?XrpLHcQqBPHv>CNQHAKXbR5OQq>h8aiQ@:IXUC*/,JJYMGX]JKB-5MVTQA629;>SIFDE>"2799F\]H?KSJGCDA:COMM9"8(++07\,/YN~~~~~~~~~~"ą۬Ї˺عƕҰíĄ퇮ᕢì읧߀νָ󅆊ïϹ쉕է󽭕Ķ"̹慗еsz`hlld{mw^m`a]Z^\eUwU\||T}{}k_oa\xezlMPzwogompxawt}W^NLMPPOQR`skN~\_gn|~Zaff_azwqbWc{iZeXgswYMOe\rim~"^~{sjs}z[qw[Xi~Mf5B7PY;4H_.1I?KJXJK[rM?!>06UgD-%$=5.6??T};#@D#F}gejHOA<8D2A@Wk[Emm[SM:CGNG+FD>50/5=>A2HPl\imxieCU9V{~foPPZnfDPGsSLKPKNOLXJ;@>39bT\QDV]L;/LecQ+0/E1?IRg[=?,!18JRMFAI>-/7DLOO"=g278W_D7FIMTX]bRJD7>F>?Sc_Z>*JJME09OiSA7=MQGWIRBQX\ZPFBB/)/3:=FBHUhajrjeRC:OCwyoauRRUfN]NGWOPVXYemr3QR\DAoe`iIBROC.D22X/55_@5@U3'=9*!=<*)8FIJaXC,?JLS^"3D;?9GNLMW-Z_[VSOA,$*HYGMXLh;2>D4 ~~~~~~~~~"􎑗Ȳ׉Ѿ㳔︌ᯡſ쀒Dz厍ǫչԴʯȯㅂν󎤨뙪ロؾဋ쌉މк؄ꀁ"׮ȷ̤퀧{^bllWhdbu}_\Z_a\ypUx[_}v~q|`rma~dnpg]ry~XbmXaZVioî_W}udPTVST[uyxllbcRyut]^vyj}x{kmzwsW_[Xd^yvZT}TQ{Jh[eaST"Z]\zZ^{^Zu}}c_jytyMC2AV37?B0H?KP7/U6U9CSPRER/-R'',0SMBLE94``E2#=]WH..OWS@7B@AERPaNQy@E?@ZOe<<932OPk|bhl@B<5`0dDPe4t@cV@DQd1/GH]fYacSV[Ndqd74O?@?0%6:>QFO[alxeZX=4:PK|wunNRajnS{_ZKLN\ezud5;uvPMa`gl]H<;HS?'.*+Z_<7TB@U0(MK>&1K?B%.B,02YOUP&'P"353>6?MTb2/FJMMFIJ73/Oik^JR5,2JB:T ~~~~~ ~~~"Հڲպ޾حϷéؼ셐ÞԹ඿յ􋜨òѺ멃Ʒቌήñ΀ݏƹن򄆀"ҥĽާ΃YSYZglpw}jxiYX`XvgzkF\}z|yowx`jpmhjhfufoWo|Wb[awUuzgIN]\hv}}ttqfc_SJ}wqm{t~}llxǩdiaz}|zxTWopWSmTNUjXZWU"QivX}xfmKFPlW*G>G-3/8AY=.C[N5MS?4B\beVT,,F;C,0QA6AA))CHA1"2HJEBARX[QGO?2F[JO\ng7[fPJoAA=:=`=_tpqAC>1ei0&LLZ-S\af`MR_64PIhra^[BFLXb[m7G1AG5!)=G\`aabz]YV@4BSUJyy}mi{wxybi]j|t[X^TIMdfH3;9[VQO4B_eV@;GUMP.)XSRAE`NBQ3-M^eJE4%e:=HO)/1ZX,I=>"NT0@-FIGFOZVIWzGk1#9XJJ0~~~"ɤȾʳŽʳ׸߾į̳ȶ̶¶൛⾽ȟ̸Ӽ͸ͻɲæɡ¸ͱפι"ۅїγ副ӹbXY]VSU^kifd]rf[XX[Vuyto~VSWdxbk}pazglf}rflbzw}jda{Zqgs~t`{laJKY]{y~uksqhe[Jytvw{|xi^qudc~il`}^aOQYx}|w}ulXbTbtUh"sSZR[R`{skefffjoy\HUm0)IX34'$1aA#0UO3654@`8m7.,,*C7=IVPI6:B734;FB*+2;CKLNOUM?LPT\L78LiRQ>@6DUe=AAOn(9ITRwuN]kq+2MC4JIH\aP?`b53JHjXHF8KSQ9>QJeP4974"%:D_iicdvZRWUKJRUH|wvpht}t}xRr|~zXi]MTmleWZL52N]PUh^@QA;3YlkfC9DBWU^XQNg>1)RhP1M2aT:,?ZV4+9=Lk7\-/+*M>7AECLRF=$OJBDTT66@I8:BGKJB4:NrvL94=F?4(',<[6;?%,:BGSgB?FVS:7=0ODKNDF:[f60*OS@85A:I\I@X]TN././/':FWabae~pPJXfNNJKzmtqwntgpx~mP\|gbr|fra\hjZLLI/IKg[&CdOACHA>";AJ2@JN(1=9',31,0M+F?KkFgKRA!9FTT~~~~~~~~~~"廤ꈏ񫉉󅃄ӹ⃌邇⼥ߌۡͤ댊؈Մ٭ϼιúĵī삝񜩑肂Ѵνރ"Ý𔤣큻`__gjZ|jabhOUapUTUX]UVYSdwfnrmuekee[kr[][`w}ivs][uwbUweai^sq_cqh]KQXXWMJEg}~s`\glfg]x\gj|y~}llt{npx{e}\lyXWZ^u[\s~vveh~_ju|ws_\kcaaMOdaNalWa}RV"al|eSM_}Y[QsdX^ryk3326;1FCF?BS18]0"/AB_\?H,+-THBMURWXJ?&-.S\0-$JOT<8=KNU>+5O8:U@:>FB5/.>J^93*`h`\452:EBE7HLoV/,EUGB@58TMSe52[QN\D*Q;;SNFkqYED>ATQ7ZH[J=LKN78,.<2) %?SRC2+6.#;KI:668$,c"RME/'*FE1=N+CEH6%#2^>O,9@A5~ ~~~~~~~~~~~~~~~~~"ϝ쐑뇏ĪسԁУڃ이܏λļĶ®ʶDzΟն"ҵ뙻˷X^eg_fgmlfcK^wY`\SY[[ZZp]^WdeXf[ivgw|nYVjzbdZapPM\ka]PWIev^\hh^Si][kpxsx~wmji`Ƴhoqx\begf]r{slksgew~sccg_ru]LEP]yjRVWRY{[j^"pkprb]eEG`qkd|r03124P@;-/4X55Q%9QEQ[CN034dZSY_WZ_TMJ'?G_/+((+\SLJSYF7*>Q*$B65?PWTIEOMI0Q:2boGPS]RLGK5ipa~VBHaK==;;6;;P88fK1@^VfxsOC0(*>DH?EBJZ\_cl_KERP?>oZWbag]naZv~p_b[R[nla`bVO;OA=K8]t\HS^dVPAF@A>F_hJ;E>./5/CIA7"!$(/BO<46*"1UM9BKT4=5"_af`C>H_S>>=O;D1@GA:KH( ?;L@G0;4~~~~~~~~~~~"ְߠɱ㎐Dzك竅ɹʺǮǛ߼ʹƹѸⲅijҾЯĶþ܎贿筓°յ⼱ū၌"ù¨ɯ֒얄`]kʅu\[]Vpze`dg^wmYm]YYZ\]\ioTSrUg{[e|y\gȭgO]]WauteiԭVmrcP[Mfvg]]fdW=]Y`srvu{u{~tnhnh{{lee_Y[kuqx~{[IVi_H[scWdjR]fT"~{`hrguzg_hzn_OltSV**YO;&935J30?!&ANJ^9i6451UQUW]WUffU;,,J-()*,/2UKSVF;;E%#@9/DVcWVPRRD5LQOC3EbqkwdP]gGAUvtYMLkiOKS@/4%@38XNBEajly>p^:v{l87JME@AFJZejaXOJJOP?4qk^ghwvrnwvfcz|_ZYVIHUeijq}e[RpgmikRrD{lkdhU`fZBMPqyqSA><%!+7WQGQJ5!8?RF-3EMFf'4<~~~~"ѵۻ댍鸏≐䶐˛˩ǭº߸ȟDZ˜鍭Ӽɭ˹ҳdzܬގ߹üɴǰ㬌我"ӵpWwwnmnriigiaVYAFbVWWVSdbWTefzghzzutk~|}|jFJ^b{qleqb`t|xt^aSm~rfaahra}dZgsuwtx{}}zye|npdv|per`_bae[{\V`~r_siUghndjV"|{jl`[{wWHc|hy~kM[JOOPWF."9_IIh_C256@Ki?@;70&D?DNRLNagT+ B&'*+)L]SKKI=>PM&&H?kKZhN;7GOD2CXTJ9CeqsvZ{\ROM[qjVZ]ulWO:=L<++0LIGW^D/=Z`C!9HV7>7TKALe5*"H=:,-F\p4,K;AIOVRDA"2FIAM5CG?G=/~~~~~~~"ҺŔӅѽϸ񅆅ĵĩґՖ찗ġ녚ȹ˳ºƵˀîƣȵʵ΀哐ѵΎ"սo|kWenjnvpfpbejiXSuVcvSQR|vZ`TXT`yfshY\s{\blMcubVq}tlspZSt}rwv`\o|j^lvuyzg_|wqa`hgvlOxfgpxzyczrznop{ypjX~okxupt{l^b_WZxqt[hepfpe_ijh"|lqubcfoi^qeppvn|V@A;;IR-+H9XuI7?H@6II%/L<@R]WIB4T^d++C^U97|F9HI>:6CLZaQQ{HS;F>T_8#))-572B/32/?4M^Y"KK, 1BE0"$79.@SQ*&BCLXjlE'Be="G\f1/.)-7I$ ~~~~~~~~~~~"ޡńǓͿ䬞މɥ뺭貋蕭웳ナĚdswyҾѽ𶼽򟝇츐õؽΚ呚ߴ"ƭٳ̩ÀԡWPIVpxQja\c[WYYSLLjZZtGFNnpZhwwhjlxmOvvLpzdq~me]frww}vsiQp}sachhirdQrju}͇~tJS]wjVWotuy``{~{}ckzk^l}vposXlbwsZdjXR{XaiKXbxgcIDE]gpp"~|s`lm{lfkngjp`]c\}^b81#!-ZplfaB%E>c=4\Y^eRIahVf8-&).O(!'MVh*(D:GE4+:JPLXF:JcdE5lgB9LJ;(DX6Sd_I0M=MJI:.Tk=Q06C|R.)=KHOUkzqO=TY=HN((+0P-hWU.'!"FC;WZVH1T+$@M~~~~~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~~"Ձ۶ڛ߶輕ٱɻ뇃ֶ°܅怘񊠰hngU|۴ɲž΂ޗʤڈʹֈϽߌ"ۊ꾱֛Xv|WwzVSasy~}wZabmjX_XXWVUw[}j]e[w~YX{lw˻]|ov|pow}稅φ{c`jpvy_qedix½}|SRKtYeceknKZmZez}oYx[c{wk_~rte_]\YndXOYaWj"zgVfqofm]URHCUquwyofvTSaT$8K8>IELnb9 $)+7DWqvu];JS@KWM',1X8=U-+$! $'FXiZauv}~ROSSP[SWWV_wٺqk[MJHEKTBWvwxwa}f~{yqwD9/TLwX>27MTLK>J=N*5gRPI``We_7@>94FAc[VjkBUqPK.HPMNQE94;3)K3P'G-?=64;A7ARM"?;=oNJGs<8d_[I1!%+&%1A58IF39`_ !/7~~~~~~~~~~~~~~~~~~~~"􅐏NJϻʳٰȧӱ·ǍvomLuƹۻ¿郃Ǻख़ˑ܍߻Ӊܫر㯎"뾒ԐѱߢzRo{njx|j[gmcslrXabbq^dYn^|}UVTrQ[S{_ʼiU~ĺkwq̶Չz]zi\ghm\~kgpz˽OKJgarpln|jdX}`foh}ySMXu\kxcbzvyfvsPlvV^vrknkS`"lw`\wvuehgXbtw{lMHhaMu;"XME936IB'2=8B5C[lnFEJ?[l))-3^A+L0/%CFDTQG>ON1+D_^U=$H-L[&HIHD0/DIENUT+VPUMS`iVZ]g_ICT[5"+@"]qhMQH7g>^=FdJ=E9FC27>9>?)"4YS.(RG~~~~~~~~~~~~ ~~~~~~~~~"Ⲑ̺峻첥ȾĀ­ʫ޾ʖ§͉lvo{qSތþͧøǍƤ߁獌龰žȨ"ь֜弯ϡ؟ydux\Zzqcuz~{]d`WXuV]Xzr~aQcUU{Vo{fӵlinr|{rhfp{Q}h^cejw[m{{{{{gwsi}xMUMPaaXU|wmXhusomss]Kgojrp_osxZP^zs_cchk|mLl"zaEgcy}}lcfoqMUz]WsG87KF/3C?3$.5Hd\<:HPgs]SI>Wb,-./.B'?31(E>?O[HIeV99LY[R@&)V2'JG=A.H:HHLS\aYRSNJW`OSTUO=pbE&\Z[vloLHNIST[a򇜯ƽ_RifNHLJKUEdxxezvtzxsnn~wz}z~yus}sQD6sdKWpH>MmdH= #QSB:BOMMc0<-:>! 1CE@267<@KK8<4"TmpDE<$R>\#:nPEXDBF43:DU@#+;BC-,[A~~~~~~~~ ~~~~~~~"곣Úи≊䬥仯ۃٶՂ۾ۿխь¢荩bZicegdf{|WȚĽøڿȩø߇׾ۯĽDz"šǺѪꠀwnxj^]g}fntabRT|pTVwrV^aVU}s[Sqfũwvku{traű^[hintxܡucW_kog_uvw|wo|w}pc[hZSdhWpTTMztws]hovz_Zuc\Uulik_}\S\|[NOSW_aR"`~eggK\mzJsqad`RPdwdVp`imQP<@M@7LM>*+0/=cpjRMVZ44(F*N2hOF$aQ;F-!'$-AO0!:RH=1B`>~~~~~~~~~}}~~~~~~~~"Ý󦏫߅߄ ۴̄볚Ԥ۶ǿ췟ꁂqhhfdbefchdf|{Y{ȕ쿰ҷȽպည١̼¬–¯ڼ˝"优뤮ƄWtYkxWoXeoeoubdaWRS\SU}hX\_lrURxYVynm}hu{jitjljadigddipmqnuzc^_fpq]|rlxwqy|X}]Z|dsqjs`}uux~rglvsZ\sq\X{bJ?NNSg"{b_Hr|d{rh]_kq^rYtUh0T7)EVPS,UE7.8_5YB:/8Z>;1\a^43OH*0SJI++N;+Kh.1U:Iq7E/=ZiNLR.&B:4FJ;;Ql`UWfhQOQN~AMUMLsbUgv_<@PHH@D@GQNXms˾dOONKKRCUqyzubovgZex~y3Yz|FJ_S[R5FMbUjn05?GBPd~}r^GGGDVMNS{QIbiaW_Z9*.1>H96EPRI;?KfQ0("&OT/-FB"LAIQVHC@M"4HSl`7-31W;:3cg]WXWV177lY+)+MQ[m30O9R:1@:KdkXT)*&>BH\daa\kdSO:MBDLLP\df[K=eMVj{TFRdILQca^mjx\MLOKKIFeh||tYn}yjl^xz}~~rMFk{_dgL.PI4DIb8=NPOTjt}gT??E9VGH_}\APflnhQP6:FK*c9Y113:VXPOZSLO-OWLBJ0//1/D.(EbjTE.2179>~~~~~~~~}}~~~}~~"ڽӈ޽̓Ģ䕮ﺤȤrkijispaQX\\^ea\Zjg\]~twS~|hzNR|†Ǹؿ{{x~xpާа帬ù􋋊޵մب"ˎѵ燅zs^hc^aifhVVQUVWWjv]k`X[OWp{sx{{kffkdkdb`c`\[impxgbVyǂXilge_dkeYOli}mye{}na[eioqwsnn}r}||xvknzly|vX[]WURV`_j_XWhr|}yh"bkffe\czWhebgjdbxwpY_kszGJKRKM[YEBP275297Q4WH<6)0V?CGPQROlFpk^aFIbg_itx{{ǒPIIBJMMSCsvm]x}ldftnVU^ry}nڱPSrYm`X_haYf[[_`Y[br[C4;'*2.)"+47YGHIPXcopt<952`c_NMK>1>CGE?=OHOaRD"M/1121..gC,S8.N-/1,-VMARi`@0B.7<>C~~~~~~~~~}~~~"Ǯỳ׺ۻ񍏉޷Ƨ㲕뷊랗ìzolomivl[HRVPkiSVjSKGu]CPTmrovkRM\HKoʪ͹ƺʸous|{ij{ؑ̇冉޵"۸炋mwyiRe|ui`UXUR|omsyZaV[|dЙсzmZWbZhd[[VWYFWUByKY{p|aS[olk_Za`^Qtjyyžtv~~f]Zeotgkjqhpsy{ps{ot{ukxljVWZWRUc]TTUWX[jbTQV[_~cZ^^XJ\Xt"fc`aacYldkdehfijdv\mnGT\T>Bfh@3BfCxT_c&6bfS6'BKQIB*"E[:LKJE>5L]>?;VunE,?9^E&5T>KPXjaG^]nvWV[^jrtƍ峎թKLKCPRIEojoj~mfjtsVcsz}}ùͳ̰adOe``KRPQam>bPPC51FT344-'+78-(&)/6ehmk98,(.3YVZ.E956/&/'4":USL"c60-./00X65Oi4.-0,*-2eSLaSBMS2>FJ>~~~~~~~~~~~}}~~~}~"÷ۼξẩӳİڷ̅״䘀፶Ψʄ鑪|xohrqkdfl@tJJ`cI]=89BDLdn_dq`99DBAK蒜௶ıg{pwg[hs?IKYxӆϰ􉒌ͧ"⊎ټكဝiaxumwibm{oT[VP{j}hM^rwtkVgYtfq}RObJ{bTUE@8>K[}mPYPKMW|dhWS]_\Sblvqz}~{bdn~yy|wlҋczxxd`wBuPO^㉗ntgsXUPZcbhbYVU\mWMHRNZ"[`\^`dfqE_cd^[Y`syaf|jLSR>*Ch7PC>Ut=6>?JkgF'%I[`YP@4KY>CK1C,+&!AC<8DBD@8*!->=GaVy<)IT=-CCSBRaidR[rKTYZht}ӝҲQNFFJJLG~frs}~zzadyuvyzղقo_Z\X`^uIn`YL=79Qeok1*NWfcW$?-8ccfg25/&##QV_0F/'%#EM%*&1SV<"I31+1413rG$2GW0/01-.`ZP:A?Hf=?JLHx ~~~~~~~~~~~~~}~~~}~}}~~~"ſȫȦɥִ։ŤDzԗ懴̶­✫uyssksuhzZP9_LH1[QeJQ>/A{;\Q?@ETkpaK(#>O\3cU?>E7NS(?/-((*M:16AF<5')A;7AYHuAJL5;+SFO?T_ed`iqclzrԿ襚½YNIKIHJScn{s~w|ids~~rrw{󼶺gae]p__kUH48Pcf[+PEDDLVI/8gXfk-/..))/220$>9@0TXAK/@5WE"5'--32.+0I(8F@)'-LGCH<54/"4P=deKRW~~~~~}~}~~~}~~~~"⭢鄌ƯѰ쐔幪ùݹ˩Ϯ~{wu}zrvNE9C|q:;:q38Eshc`zK09;::5=@AEKAF˖ʲ쿲ꁀ뻞ܶ򏞋"񏑌âȭ˩ΫWVT\b~ho{bugqEN}eX^baVV`zxtqmq_]UShzǽSF<:ulkwz?A~~q??D>?dhJMLIGCp_X[]YWVhkvnnxyrnox~|tilpvxfY}̒ibhkmh^r~@D?DMOJJISz~x[[n]a_bijeZVV]\Up|ZvU~"\_`YXT]Uop_mqnulPLRV%#&IGY,.]D69PRDIS6H@\O6 #FT\YXH5''M[:G1/+-1XG;GTH>@@CTNHQHFB55PLIH<GP]YJQ8)'580@=AP;-.*7Wbjn]釆o䐐󇏈ԓLKCGHPE{eWcx|daszsu~uwu]qgzyOj`]SN`ykVPTgPM/1/kpo30996vC:--04)IJM*/TJYZQEG@H/-SW"V1-(Z[V048`UQNN.6V0F;TBaR_fP4&/617~~~~~}}}~~}~~~}~}~~~ "էȫ醐뽱کꁏp}|xtqsoKQn8,ol58r9422_q`n7665873>GAyR`^o\H@<;?82B씝ƼͿts_SXPSc`^i>y497<3;7=:?=?a膔B󀑐םVSTUXTt[O{XZi\mXNQcmgl^o]]Z]a[URV_mmrY[ksgZhfhvpd[TorXlTu89{v@Bz<C3?"EMQZ.3B@WD3%!Ho?CAABzCBB@BBFEEJNOMTWVnbeaWNNPFRZOOylzxv{{|zvw~ww|~}yȧaJ[jvyu~DCIPOHAEKQRWNȆde\\acbWdbiw~eba^^Z]UVWYX~"`b`XcbYZbfcdUpbnpnQgnu|'&%'PE5(HJ%:9JP+UGDPafR":c;8Y^6!92CDFK~~~~~~~}}~}}~}}~}}}~~~~}~~"ӎ‰Ϲ҃݁鉥xrvvk7?84224245399707<98987576D~|NvUFFE==97EH¿ǻĤ}b~peCV\bzlpyutw>=<=?<;>>;?MN^ܮ񁆊½"ȒٯܥWUUQhL{VyTpU}cnamXwgqXYUU[WV]\|gcUVdv~r}kOu[ysߏԚufw=>9?A@DEFEEGEDHVN;%$"IB(,%"&+VA>E2+BPE9QaTA'5>FD.EVbS{Ԍ쮗Ļåɥꨀ}j}k[kkeo}rqt{|}vֵܳ܃¾`HnpY7)-6Ta2/.-<=1T?4BZ50146320050-ULOP*0O767;89:B=<<37356?xuhw[traaDGFB976:?j˼˼ƿuƿaE7ACBACH˲҈¾鄒ɿ惌û"Һ˩YWVQjxu`TTsLfXz`~qwqv~[UWTTU{wsRkqTTwk酲ϼwښ@qh<;?CCEDFLNKKIMKIIQLOTNSNJEIyaaLwfqXkl\QJIKHNuqzgcpz{vuwvyo{rnozۭoMMI[U_npks]al{B>FGaeZRMSRNKKPadnwYX]gg]V`Xef^VVUUZdXb"yk}}wW^cTkPUkV}e^-/-%G>%ZuBO0T,-N31HN%JUwf`QdR@*@G5pHRTUUQʋÄdzƸցpcopvjiyujp~uuxy||~z|Dz뀄珡ľbcTK38>:K`c.+/=<3-R>B8M,"Rc651,'&+EBAL.5N:9L/6R52"60GiK=A^]SUW-.1*?A)K7V+/T>GGfA2~~~~~~~~~}}~}~~~}~~}~}~~~~"ęᒖåȧ񄉂¨펌絕̽t}}|uc:?49432898798<;88:788;?;64453:8:rlULUFGTEIFB@68B7E¿ƼлտL=9@;>BD}Wdul56m8lrz<=HJF=:8@===ADr㊒恁̧ꕔ܁"ڑſ₌ިݽ㛀WTUT\RYy[aVST~R[joXokwwgfdie{WYTyrwheXfX{zxiͳtFnA;>>GFJJHHLONMNNJMQNMOKKMNLGKIG{qWILNZoShr_VHHMIOzyxnjmlobldqplovzu~{jNQOTSXamɇedyt;<{@qsEIY`]SPNSQPOSTxy}c`[Z_lo[WizibUqZ}W"~|~l]TZ`YzÖutu[X.0.$<@3!3J(+),/V>!(\FC/B?/7F63Q;?@p\E011SPFHIT...-KM92(6Uh]M=31"FQH&~~~~~~}~}~}~}~~}~}}}~~~~"ݸڄ༥㌌뻧؃₈扤h{~yx]uhCY86:3354;@@;:899:<:989<74468577:pfHIFN[iKEHDD=7696?b˾̾uF;ABB?>}YIGq;7:5op~s;<=?@ADJGKMKOSSPQNNNPPOPKKNKKMNMIKJHylUMGLsbRevaTJEIKRXkyyy|tvmzqtijv|s|eQV\Z[WWʺw\Pt>;>>~DHP_WRRQRSWWQZRbyt__]]ZkskVm]Qz`x"bf[W`ff][qypks,35.$KPPCDP_))KSYLH7/W9BKE`RAJ<*A375cP@<8=IN,/-XOLSYbfV/24/*3_B:GFxAGCCSшˣ̩ʊÆĬŷܳwiYSk~x{rz~zmsty|~|~恙󀆐hF6Rh0,(H&&?jQ5RL:7C/;1O*bF3=RPFA6:;PV]F="/;DP66,&:UgdVK^cX9zP4~~~~}~}~}~}}}~~~}~}~}}~~~~~"舎׼󵯷Ħсۼꄅ㮛􊦙srp}cGuvU7:89;9<8:999?<:9=:846:734075777hhI=LVaJFFFIC;57;=:CįĴD;<=C?A>WvEg_54gsrr8;9=>8862:AECA@KMIτ㖁٢⌏⨄"郑շо܋ҚRYSUSPs~wslwojtV^WXagmg[q|iOx[owTBJLMRQQLNMKKUSLKOLJEJMLMQMMIOMGyoVJSO`UW\dneWLHLOLKsxwt}vyxve`g{|r{|vqwVYWVYXYh\t;@{AFHPSOLKMQU[WRS\Z^o]_daZ`^yrvbcTwUlW"Uah^UdjheeZd|gfvqLY11*ONNUTV,+'?CFJ\QDV_@pYymMF>*T68*UnN*;JNJH?Kioe4PD"ELLO/54,'JBAM45107:`M\[RRQRj<7bSEB~~~}~}~}~}}~}}~}}~~}~}}~~~"ȹČɢ؆ΰ޴Ģ鑦xorq|zkFwKH<999<278>;:889;;><=8876650479614hjdOQhL?CEGJF=3698BN㱹ǼD??DBB?@?>@??MEA:cbepr;:<J,N76K(&'WM0+@L\,JS*-D|gfINP3>N<>rnH0;ET^23)'ZL8,>@R+C6CUj^-!cNqPRWm޲꾶Ҹȸƿݷg\\qki}}~vo}m{ywqlrhvc톈ĸɿvL4N'KB?!=PAEE,Y?7:FL]80XmG*GYT*0.1:9760-"*WM7Q130-WOD@69>:::899=;;;75:8764;98;89gptakpzGEPQF@43;549θ·{T=1BBB>?;>9;<<@BNJKQOLIPPRWci`beiko{dms~xm^]~qU^b`icbd`_"bzbigWSbi[Zcbf~'07N-L44J(%(XH26N)'" (*IOKE;_Ob?6HRMY]=008O`857RYC+&8T-I4>Ppi?-YH^T]yǠþĥ·þĹҤ򨀵choheSq{mf^xl{og{񟡄Ǽ3MIKPVI-9RT_s]F>A8BPc:7XRGF``M&/512-,-,)".`I8Ja62,*N;;V`R+12+?6=QRKR47/4jQI~~~~~}~}~~}}~~~}}~"旾ųކΤ됑УߍŠսݥ{tpRIJcK>0;8:=<<:697;:<5683<774896458@;98<79798KS;4DRDEFE?5:<:;6૵οtcH77>>C>>:<:8:834/9:9<_7=;9A<79::5899:FFBCGHCLҲ˘ѻ鈔쓙ƿŷυ̮ζ_VRURNhk][XSRoczhWVm|lhfiwk_hdVrkx{uslYUʇQUZfNH?LNMMMPSNONOLNKNOEMLJGKLKLMNTPNNQFB<@AUTFLknmlcWKPOMNL^v|yz}|pwqzzrhuvq`PKKPR^UTTUQOTVRNKSQNKw>?BDOMJLKIJOOQTcdabikefv}prvyoeSWb{Ydgdd_^\Zg"dwqzdjXv\lbly|_C5CP+(>;N)'(UT:;Q)%%%'H=4B\mNJQAZV.,>D65-6HSAW/DKVH=38R/L03GXLE>,3i©ſƾnmjdWPh}e]ze~shy凅ľp5KP]mf]MCIDhG>*3@MLYf]MPMXVFL+031-(&*+("0VH7ALj74/J@AJP?E(*(KLNRQBGUdLL/7 ~~~~~~~}~~~~}~~"硽ްڊ츌댦ɸɬt|q_xjF:::96=:97879:?>=:;689897977379:63999789CODCBCCDM@35::;5I`Dz׿lS>58@<@@?<<66;7;47?9;A.55:<=79?=<8:73;AEC@?FF>EJꏮ߈Ϡδ"ɼ÷ҬoWUURO~nZ[YUR{[p]Rk_Vqvwfyk`b}ukrxpjށntwRCEINJNJIHJJNNNLKLNFHJIKKKGLKMORMGKGB>DIPWSkrsrefVILPOJGMUn~uzzsphW{o|nruwustqpnXKJIOMX`ZbUNMPRUMLTPST>92>EMLNRNMLMOQUXjo`VYZSjyx``ys]maSs\bccfi[VVb"[jdfjbamqj_svvcZt/9HN,*C=K)'*\ZF8F)(,+%?- GUwE-LCgpf5=I57 ~~~~~~~~}}~~~~~ }~~~~~~"ׄ󄆀Яکكͳоӯkswb~mm?<<4<=989989899:;>:;;897857:98469574;<@>><:7=C=;;@;9B89577738;9<789:?J[F=DLIGGUauǓ向ː΀ۀ"򠍑̬ƅ³ʀ^mTSVSN|gZXWn\{iuca]]m^g`hnqvz{p_iQGIELOLJLKHKJMONKMIIKIIEFEJLKNLLOMMKOLNJNJHJTnwrqk_XLOQXPGIJ|sxvzjceruh]{eijxsejrjoĺFIHORZXWUTNPWTRJSRQWID8>DLLNNLQLJLQSlydaca_gosxߕsfhaaQVqogvSYXZ[][U"gMOfexxm]yiw(7BI*(GAM)&)\RB-?T-*(J<(#GK\HXT@=wDOiVS^8d\C5 9@OSCV]JABDSLFQ\NPƀź¹h_nvtfsrfg|rsbwy{qvx𖣕ȿoPZZ666fU1--B@UN=AKLPglONXQ7%) #'$@LH!"I7%$=:EQTQPNWNJ<-A.D>7699:97668:<=ELC[IA52:C@36:ʸǾ̓ڝq284698@9<42:?A89:;07:84889859;9<@GD>>CGCACXhӈBݶ޸ֶνúMg}UVUSpXXZ|fkWpXjĴS[eegpUo^vvTnLPSLFKNLLKKIJLKLMNNSLLLJJDFGLTMLKLKMNOOMNOMJIJOWqwm|fZOJQ_VHMLbquwunom}fsdcicktppspnNPJMQR^TWSMPSRTRU[STPL@HOQKMMOONONOSWlod[\b_]eims|cfhaUw|xbkuYX^iaVWVY[U"~YSVY`jy%5ES,*LIS*&L_XE;AT-)&KDAAX<<*E\]>`;BTtj/49=BmE/)hpTkV\.GIUURJ=J]P\ȯ¶ĺ¼ȷȾhytqqf|m|~usu|tüþVj4-,)+VTO"B89.-87BFFHBAGG=6JODDZ\RCGJKFBI?+>~~~~~~}~}~}}}~"鍍ۈׄ墄Įּ݃꽪}}wum=E<86>:23;<:88997:85;?:>;979<5:;:8356877579869:;4>CVJTID56;B=:73ǻ߸pa1788862<;;>7<56<:;;:C878788:9:=79;;?ECBAEA?CEDYϳ劑"ۺ؇츲whlYXVtelzswZYdnaXwWVY`YU\dno`sPwe`y|IA>KJICDJPPMLLNNLKKJMMINMMKKKLMPPNFHKKJLKKMKLQ]gzx|jaRPR\UPMFsygqrzpx{kyotv{lnthfPONNNKLVTRVOSMNSTYWRULKMLLMQPSYNLPRT]cdbgYV^a`qtikdgXRdfWSWZYWV'Rxgkg_v]hb\>?LV*%#L]WF:00==7G,*PTEAJU79-*`hA2BBM5.+5:?B;K7-VHAfbX,DLX\UF?OTRaյýȭ;qy|hd]o}yxyempfqķ˸sFa0,&,-0_aY`TNCRMcYIM@?N35-*-/54,)ZdP?"<:J\84@JSUUG92:8Ѣɹ¿rnh47:59689<9>F3.5/7=;>B<:97;@A<:8797:@FEBCCHDBAABӘ´ҁ"ɸӷro~ZZ\VZXqahg][lxj\|[`^SPSWjclkn|~|y^B?>EHDCGKSNMNRQRMJJNLGELLKMOKNQNOMICIMILMKMQRNNMPYhlw{eXMNTPJNSqijkgpqw~wvvvqnihQOOILGLPQJTeRKNKT^UTUPNLKQQRQQPOPORUdmcdjgZURWb򜻞jndda\|{WaXX\^WTRS"xu[[ic^W@;>J'"!"MQ>" %@,C-+LC:8DU@B4.^^G:E:@W" ,4<7\D7^KBWKGC@9AGLNDGRZcyˤȽõƿ¼crtq\]jorqmmpifZc뛖϶nrS12.157YKYYIJZgQSUHI=8A)124220-**[`\V"NLUnDRBS[^6`URJ?CQWXV27-(NKH*SUWSV~~}}~}~}~~~"zŭ得ҋzsu{`}@084887579?;9:46676:Pf<31267<8??6AC@>;7863666456769764>DCDBBDB@?@A_cʂӾ$숇⪆ʸ݀꿭´fv~UWUlN\l]h^XVa]WYkztg]svh{ptgfksv{퀗F>ECGGB@GJQONPMNOQORq|KELKKMQLRQJUWOIKKMLMNNQONKIPSbspzln_PJPJNKSdgaftiyutvyueeaWwNHNMJILOPNWTEHmWRUPLDJOININMPPONUedabf`TLHR[ln\hb[pXtdp[m|\V"da]i[c}T_XWf6:,3E!!K?.##G/E-'>.# 0AxEF@\MC9J>6H>2HZ@iHFMca`:0*57@AF@=KVm卹۽ƿ|xtoml|gelh{~q]Va⛠ƸݠϾ°¾z:/312HV0-=80;4nO:B:IJ@GLT`Z2/\KSUTNWp"7-KfG%9IUTg78e/+DgD==<4966;;72.137FGHEBBAFLMMJINKKMOV}PFMKHMILMLNVTMKKKLMNMKKMONIMTdqjlkg`TLIMGLOPajgcc``hmonor~jtrjNtQMNJMBIOMQUZFGjWQQSHLKKTTNLJLMPUfkhY``]ZPNRXesridvp\Xg~b`Vi"c^pi~zohyqRrX`og7J9(3DFNQ:&#8gWmp=?;39XdL-1/DQOOS^XWXXYVVOOJOl";2ELR55C?AZqAo=3JSPWaeY'JF.&6@D^>~~}}~}}~}~"趭դħ÷Ҵ|qmrBu75255468757569;863575:::2345577317=C:3534=B5,4655463@?7463@::78898677745638:@BBC>AEDCB?<@Cx}ʜ펀덶ɹƳ"ðƣ巕|yQmRZrtpwc^uc^~r}z|kYs{Risy`az}~Lo8BBEFECADIQNKLMKIHLKNZ`PGKKHILLHHORSNJJHJQTIBKNNNLOS^iixjm[SJMOMQLOS]΁hkjopm_aYMNOROONNPT^ZQNQQ\QQRPLMLJNNLJMMMQQXc^b]\]YTRRPTpskr^_Nnwy"|uk~nmv\OYq{qpyGaB06H&ZV8%-6CJN;)$CD4>BXiSGJ/o?ESN64GIGAW|Ѱ˄򊦪ȿ̻òźžûӦ]nRr{lvȯ½WbYFwgK@;sbrc:*JR=PWTVKJF?;@CMGHOIR"n[BDVKKH??=@B@??BEBUjϬͺ׶˘"˵ۮThHRy{uoY[xr{dHi]RPgyiw~ٚ5>DD?AFDB?FKKKLKKJLHJMLKOOLKMNNMMOQMOOMKIFKPYMCJQNOORThHpm^jd\WONPOMNQ]Z]]YakSJTP\b[KNOONTKRSSRTROPTPMOMJMMKPNVSli^dVZZRPQTXkwyvy{ns|e\jwfqjdhm~vQUqwjZShE2@L'TP5#);IKE?CD3'BZVGN^bZKALf]ULII 3QPSX5taRI4=IYfY@5?MOOgϗǽ˽լ^J\ɾ񕮱õJG8FYTOMBuhTL`vaL;X[PJEKSEKQHLQOJ,@"TL55AJNTVCDOP>AGIGBGLQHHG9#'69,-5Q~}}~}~~}~~}~~~"Ųق٭ҳձМ׿ɷ~zbo8178;68641/3588>::5=779@=489859>EI{|ĜkoosdrYa;HDJmu~/:DHA836798?1.89;@979?;:667388=89<::>CBF\¬򅊎╕"ȟֲξ󀜬yTVRqNP}zhcqxoRXdj^pk}xz|yՃC=@CE=@DC@BGLOJLLLGMJLMKLGJLMQQLMILPNONMGLNKSaHCHLMOTYT`xba^Y^YPQPNKRNPPf蔅qCQOPX_fQHGILMHQMNTSNSRQPTRSMNQMPNQOPQQZ^ncVZYRLJMV^oҁesZRoUap"iiru`Ym{ebw~|tXViH.A))+P9#'CTO>=LD:0>FQXYZXLBJLXX\[VT'Jee1253`Y\LRXX[VJ:;NRbüþʰüݯw棲öý»p[r7OINWUGuvt=,@f^QLSQTTba[]o1M$>"ULH63[bf]YF;23(1EGDIKLGIF0@-55<>0E~}}~}}}|||}|}~~~~~"ٶ΂翕״ѭ̣򄎁ʟ~|sl{tG7D;34?x:;@76434548;:8:?>8;>>7422324=56488521078LT2/;677587<@EEB|{428A70739qONWQTh`ML~OOQDETEzw{>VH5428:9;7987><:669:8555467;:8;>?A>?C7;=8@;BC@MͶ"뱻ЩϪècxpRSP[Rzup}zvu}cYas^n]x}zw{faK@@@KD@CBCCGMPOMLLLMPRNNKJIKLQJJILLKMJIPPkuICNNNQPSU`iga`߸OHMUNLMDInnxysqefp}qta^pzxkTCFDMPJPRSTSROPKJOSPJJMMNNRTQSUTSTYeTXWPSV``fwz:fKqɭ[aV{[g^Z[l^hx{ebocvvZSVA0<')*N@+)BefKGKIB8=CMPC?B=AJHOX[dkU+'\lUV4:0MamB8KI=KXE?TbǿƼҸº³ʶ螵̖ݶҧżkTRRGIPWSPAkfUR'AgiVQPWVPQQS\73'.B"[[W;4,30,*D?94$)>HGTKJG?<9::2MP>-~}~}}}~}}}|}||}~~~~"׺ꅅέϭ뺏픨Մ}tacuE$<986===8ro5878::6906<<=:9885-/0459:856939<548>SN856876;;=9=CBA|98>=87-40:eXHM\]OQXMM9=@=DRFS[cG>FdHB74399=:;;:;887;:9;664;:779::;=Aqx>;==>;A@BB@bƃǑıЁ􁂄"޲ljصĵڄϓ~RQQmRcwgmv}]bio{w|mvqwl_[Okndsq|rkADAEAFHJ>{EIMPQRMJFHLNRPMHJKGIGLOPOMGFKGOTLKNRwtNJORPOQQSQWaX[SMSQLNGJFJznvypqjZg]^`ajokrtȻWxxYNAGJOOPQWVUPNLMOOPWQKFONJLQTSSV]WXY[\UVWb]`qzqikELfVXZ^]]ed"zajeZXUUvp}lpZ^]TNGIF(*-\I=/7`fC=04?=9IRF'-/7CFDLULS]sHNBD9MQQKGI5GL&9ET^QQSS,)$(.Z1,'9="HKH0.(.1*(GM##DFFGNYI:;+2AZdTI24J+~~~~~}}~}}}~}}}|}~}}~~~}}~~~"ձֱҊҷƳznjls;2=;8;;:<;u59<==?<963079:6856742324698=779<9977:9997876=;:9;>B9:32,32bZd]]\KWXPBI@?XE?Gk_fBDG`MK:10/9:9677789::86:8975.57:C@kp=DBAIOPPQPONLHKNSONILPNIGHLKLKLHLORNLKNSSQOMTRNOOMLOTTVWhi`VVUKLIIEKIsouhpia_iZTn`Wcp`ck_HFMMSRSWZTOKKMNORWTNNOONMHMJP]XYc^[UVVWYSjܜ{[~qr\evWWZZ`if"dldXVXVV[Uycwh_Zg^_,RQRW--.YF:64>?0)-ADFCGH:(''>SJCDHDDDfjZ.=CB9PN4_i>=DICbkb㘬膜􄝨¶¹ƽȽ䬝ÀѱϾĽՂvsWcDN1HJ<9JG=i;9CLWLQSOJ*(),T0,)B7"HLIB@+..,-/*%&(QI@<;:96..6:7735560/358968;9:97:954546769@:99;7>;=;AAB:045202rf]m\LUUkPR_OOPRNXVc>@;?>;BZ@02/57:;;998867;3:98744/4.5=9CAtqiFQE@>CJQROPPONIHMQLKMMNRMHGKMJGJKKOOOMKIOPLJILQQLNQMONOKMJUZfgaNBHIFKHw}sjmh|hkf[cc_rovge\XPMWdREOPSRTUWWTNJHKOLXVQPNOONGILKXYdriUOJRVQiynƾgrijqUUXXVZbZ"W^dmdXV_`\`Xcrq]c^QSWV\Z,-.0+B:A8"=!-BJRPJ4+88+.9RUD2-0?FBUJSM?/1:.GVIRLMGCxwÏ½̾ǽ󎟰¿Ʊ˪ݑ˽Ķ򑦟­_ddd;WJOIIGRHI=CAPVORYU*-/.,X,,)ND").TPS.0-0164/.+TE3=>/0',xDSyA]''J>~~~~~~}~}}~}|}~}~  ~"ӾߑΩ̴Ȥ޶jpkfeZwP?517:;;;<=7878>A=:9960537/0307810,4769;:?;99768737565975639<4668;7<>788C9:2:;::82669979nnmz}FMD@=?>@Bh⻴ހ"񆓕ᯜҸξHU[\TSS[`ytWX|lbqi[srew|uonmYBB>@CDE>EDHRWROPPOILJI?EMLPTNKGKLILMKQQOOMHIMMMJMMPOLNKMOHIGDGLVYbcNJLHHGFL~nbf_ac\Z`Q^ksXDORTRIJ[XENPRTZ[Y`[MNNVORPWXSRVSPMMKJVOluWOLQPUatø}yUVV[\R]_Zj_eXWbba\RqgvmegtZ[_01-'(+D8DG-B/?UaZLF5.@KB@@HYL5#-HJM]`MLQG15F?3NUYNOKQR͍듅˺ʽ¼ƵȿꍟȽСƊҵ縶uwdn`\[LGHFFDLF/=D\)OQ\++24*QS11XPR"14-KO[2*WS-42.*'B/0:2:?B600MaK0,@I~~~~}}~}}}||}~}~"킆׾Ͽ⸡ڂ߮kokhfaE==<:499:99;:768;>=?>:8855422823998688569<=@:;566966224?;;68896>:5==:7=H46533277yfXVLSCPLTMNWRYf13366802EC=<7>;:=@?;979;>9<5>><865698789dm}{FB::7>DC\w섀׹􁍕"؁ѯԋ҂RZV~h^V__cWqlZXXop{koxqnkkXVA@D>ACEEB@?=DJKRTRPOQSNILJGNMORPNNLLJLNNPUQTOMHJNPGGMVQQPTPONUOIOONUY_KKGFHFJMnl]eVbaaWSakmrISLLLOJM`UQSQSTUVX]VRQQRVSUQVTSTUPMMJKNNo\ONKRT_ibb]_VUWTW]]RWW"cb~Udgc_\{VZcY]mxV]PLR.3,E@GB;8>59Y+377,IJPNLGOM]eR=8>FH,`bT,1_H@GDǘǽļùϭʾ斮żѸïBh333'E>=B&MXJFH`+GGS++.0*OX0-RMI"Q/-K>D_VJE+32-+*A63?>$&]G5"(.59G')~~~}~}}}|}~}~"Ѹҷ厗ƴۼ򼘉׫oopgfcbm4>?:u9;>88:3/=498:686168A@A98448784kr|unG=:=@ACAdǎހ绵􇆄ֿ"҇窪쑒Шtqv`dc_W~[[X\^^apdserxuhjnjC<@=z>DLKJ>=AEGKSNJKRTXPMJSRJOPOSONKEKPJLLPTQRMHPPKHLNSWQOQSPTXTPROQTXlZLFMJNGHQwVXaMOWTVM_qq\RLPLPQJEOZUVWNU\V[SSRQKQOILLQTaUQMILLOHpSMPSUYQqqgcebWT]XUWY]^TXVV"\fryfhaba[W_ffmk]^G9I_aXIDHD<,0CSr46;;5QMQPCK]141GCKOKP++UX7=oYHACMN\edSK>ijͿ˾Ǻ¿ʷ֐ᇙؚżµ굯²rPF775+&?;E',)PJFW(AJY/*,0+P41,GND"@)/H17LXBFd64/0*'B<@76:?><551121<:9BE=9C91/?77:::66;375683=?:<>>=A>;=;:9;?HEFB>-067651bZV?@G?BC=IQ^c/tT@=;=9:=877=?=<=;;52/8B8:9577576=;;2775:9ufkmboG999?@CHEv쉊³"|dw~v`ile]vllZ[XV\ctyvЀzmlka\q>>;9;AAHGAAGQMSNOV]aXOKDIIAKNOSRMHJKICPFGSVULIRLOMNRPVTNNLNPUVRQOPQVkwtogWLMNLLNJhIR_USSKY\_zCl[UNONQTOOQ[^Z\YUWPPNUcMNSPOOKLNVTRKNKJRRoPJJSVZSUwktc`_^YVSV]]aaWVY_W"^ezbfdca\\XVUVYcjiZXbc:)B^`fcZQF>2?\iB@BBCuLB<96Q430-HO\]VMJFAP5;aTSPRSQXVZWXW̔௩»̿䉂ʑӇǼ׭≠D6d70,,PNML'CGJ@W+*W..(,1.,/4,FPY"I).VB=IWH_7410.+'$E*(%&*.2.\UML+31~~}}~}~}~}~}~"ͨ퍔߰ˆԾзrmmkfcZA/6<993598527x99@@84>>@9131330945:>99<56538948656<98668;:8==7<8::;;B<9CBEcVdY12;=866^aAI>EFICDD[\[;[~YH58::9991=?>89:9-,4:?87-367<91;679=sl^e_xG=99?AB:@Kצ򄅆"ѹڀ򊑑ipjxenld_}obZ_]URWznzvyrljj\S@=@>@E*-/0-/-,+.'EKP=D.0+/3+EN24~}~}~}~}~}~"년ҵɾqhnjd`\8*qsxuq;;8/53?<<<=949<;5411264732<>957687678566539895/5368:9866723B==>@@PCRHj;aK6852d[KG@EHNDBOZ3ъX=6:;:82:<>=;:<83897:;=;;<3.27@=:?>84;jcamr}CD>=<8=@6:@N􅋎"܇鼪򌒓退p]WtY]YS_`cWN{UV|zbq~{{s|{z|upmjjl\D8}}y?@BCHHPKQPQPQVZSKIHJIMKPONTOIDJIJKLKKLNPNINMOLFMLNNNJMMMNKIQOQSXkfugceMNHD|j`SU\bUJ^`vnTFKPQQMQSUSQQQPPTTTUTZXUXPHHMX[TRPNN[ҠorZSPMRUOZkXȞ^^_USVagi_XVV"]dbX]fdc`_`_XVSuo|[WW^Y?2J]YfvzbEBPLKV4<@8YU;+,'$J2/OHDE98+AMRE:1HIBMVVFDLEGVjǼ˾ƷȼȺЀȦ®酜WTd243USOGIIOQP.[1'+,-,,*'>N\YX"23-+F;H.1-(&+0-()%EA>7.7Z.&(41LJOU~}~~~}~}~~~}~}~"Աը薠臂̤ȼ~mgjiec6297owv;;75:>;9;<;;8983634211/0.0;:8226675161400154496455799435878:@<=>?elxbQUk@U:843_KHJ>@G]GLQK8HuWE/;6<94:<=A;8<:1?=<8?:;985428=A?9<:7;~d`e}vBC;6:;<>8CNNĩ굯ܺ"錙ꄆ庫戏р{~^itmiI_VSgMPT^v}{ux~vz}uiehjg69B>v|w99@FNPNNSSQTTXULKFJIDDGKLNTNKFHIFKLKMFIHLNPKGLJKLILNNMMMOLNOVSSWhv|wpizSOHC|qkXWbu\JcYKnsmDPMSROQSSSRQRRQ[TTNTUWTSQMCMT[[PPQPSiiTLMPSTNXcW]VVVdi^WVU"\ecX`iaYX]\\QSzqWVVZU9;`zspvwYJ[dM7:O[UBEBGMJ>%O.+>;3 $3>KQP?8FJDPXVPNSQOQトƶſξƽ˽Ĩƥţ…ͷ宩VWl58/MHH@9ARQFSSQN&170-'&C>PKM"372-E@O02+ '2-F<''JD;7HS)$$.1VOIO~~~}~}}}~~}~}~~}~}~"臌嬏Ÿꀵȶ΁ۻнtgflfZR}o4556uxu=>:>7:9><::688963431/3332695.276776664520.2467760771466>77347=;AmYPZn6L<,92hd\HIPD:5748utx;B?<79:EJPIKNUTQSRTSQKGKMJFKKLNROLGIKKKLNMKHNNNKHFJMMMHMNKLOMOJMNQRTZw}|x|OrSBPKwikb\cf\c]ErzMHRQTRRRMNOQOQQSSMQNT]QPWNMJRUXRNPKKà^fWRKNQSWVXci{]VSi]mpmXTXTU"bdWdn\SQ^XVRXSPTT>Vi>?@@yZAVrZ7/BNF?C9KFs\?@F)M<23-7CNJAGDFCOlD3]M*1+-NT"]55.TH[32$)5,?5&()QNLa[C#$(RSMGB~~}}~}}}~~}~}~~}~}~ "ԢҾάշһ{ojgjb[vOk144iqty|A9;4889=8748:=:932,41603464335:7996788777658;9573445.5<95116;>F}i7=W<555988^cWVFFMCFKN]];E`V`~99=ECDI>:;9;8334:745:945@A:828997889:wuur=@@;7?;=??@GXԀ怂㤈͸"ꍔǂ潮y]_]alekOgUvWrevqt}xplmg\Kss9AA{y{~HIOKMNQVQQPRSSMIJPMOLLGOQOMLKLOKNOLLOSSRQMIOTQNRMIKLNMMMOPTez}wKDJHKPUe^d\^`bdtJXzq_\WZ_XUURPQRWQINQXTPOTTRQXWQQLQXPNOQ_cWOMTPRVSO`iq]Z\u`kko{[`a]Uci[QZVSS|a8:79B>]?$7a/D>IMGKP?2ah90JMQD7;ELNCHS\[]VPR[eeWRVZ]؏˷ͨ¢ϔռվR{4.-PLLL@<@CHHFC=MmbSKX42/.S"W_\3bQ^3,&<8J]bL?#&%TWN^TCJ'-TK:;C~~}}~~~}~~}~~}~}}"ߥDŽȃ޴ukjhhfWKBj4734gs7;BB;33:::94569;<9143115222/3111257:789<:99;::87740657567:=9577:@Iu\-B66=E9523299453okP^sA@@:8;@?C?>DMdͿʪĦ򋙗"퐓Ŋߴ鼥cakfZ]eanK~SQwhXr||trojgR^@h9=?@w@CINNJLRTSRLNPRW[PDLTQNPJHMNNKLMOMNNPSTTRPRPPONOQNPPROOSNKMMTYwtW|ro>HSJNP`UFl`YQe\bLo+pnSkZd~`TOOHQXPQKNQTSPQRUQRYhSPJIJPOLOO}edZOMQTSXUS^iq`_d;{zfpTuiuau^edaVghZW[TWywX\|{?C>5:?;U07@-(MOIHYcMJn?4HEOV[HKQZZ]Z^TYV_`]]btڅڄ񂅉ƷɴŔڤ·ǭǀ岈ֵ½Ʒľl4*+_^UOM86JV-K9+:@UDJLX20--'"TEIRb[a62,F<@GIG?(''+L8>A9F+2J954=~~~}~}}~~}~~~}~}~"ޭہҳኀ֦݁slkdd`@B97;9rsv98;=78><;9;8749BZB-9<3514232/1-*00878889>98;<8985666:@7;;?C86667?HgYyRB::84447:5_XKJJAGHSPX:LLiO89BUB<5>/398;==>987+,7;9:9:55969:>:69rj`Ym@?=@;99EBA7BS[ղކк쇑"쏑ۼі܅؀b_YWcazYLqWT`ep\vtzZYS|sqmljӝJ=8962>?YE63:65565:21/17:>>8:;93:<<<:702:=@9;==>;7880=DJf}n2577836;9=:46647:86=985346=B?:85`KQlA@E@@??9>DFA?HRN߅:ڀ߻ۉ霘ӳ螙Һ开dbTbtT\W]XbkzipzSQppljif\>{{;?ACIITPMNWQONKHFRWyaJGQNNNLJJGHGKNLLQRPQKKMMIPRSSRSONPOSOOPRROKNSOT`qKINONJR\]yZTXttfpx:}JLUOYQQRJQSTZQSQQQVNQMIJRPQPOKFPWVRTPinwgaVRMPU]UZ^fX~`rXmr^ihhi_Y"mhYgh_k`WSmvZ[T=:(1Bk:RSOIS.+&HOW2/V]sqV-*;TT:;HISY(KH%LUTQOMWXY[hȼ܄Ү£ġݮ̈́𦯧ŽäȈJ^]28GL[CMaL ~~~}}~~}}}~}~}}~}~}~}~~"Ч潰ڌȹ۲Ƹиjbmkacx=bzr99lnt>9<678;C?><;964=8:86rh553.41//340116:;79;454175582569=::839658>:22>:8/,2.6::@C?95878;8;B:9aL\t?D@:;:;A@99FM^ĢꮁԵ"ߜπ²h]gdVyzmYavgovujiihlrJtvp;?|xCFQNOORUTQPNLGHPMPLENNLGJCCDIMKKKMNNMNMGHJKNIIONOKNPOOMOTTQOGPPJX[fzZNFGJIJPP`YVKqZMT\hgs~DnHMMSPTOSPJS^SMNQPPGIPKMPQXa\SPRLGLOR_TXeh\RQKHORLNX`o͝tRmtd]d`db\Z"nj]`esXngbYUOSZZVbmt~vM.'KTEHNUqB7(DCD?71?QRE.(;SY>9?CAA<5678:<016ss428B=gje4/19586658766755:?695799<><9AB:/279=C?A575/:8789;55ibQDBKUJKTu=X[>4/78;;54=1:;92698644.36@<=9<;;997:9<=39m`aj|ADG>59;>?BEAPL!GORWOIHGT^qxk΁胊䀅ĴƽíئҸ唺βºϼwP]YEpr}G6,@JSJ>532F:N`0(+24."I57N\84Gjj0BI@M;O1,+1-Q[T('"K=EH:4~~~~}}~}}~}}}~}~}~}~}~~}}~}}~~~~~~~ ~~"́ጻ乒ȵdžyrejhc`Ryde457559<==899=;566796443r\_dshfb32;5668764865822631768>@4057=<935989?7.059>;9>:42:6YHE=FD9WbaD>A914762-667>?=42597/5367=;;9;>=:<==<<;9:kWwnrw@>=677=CKONJNQS\^SOKLKLQROLIHIOHJLONMKMJHKGKOMKLJLVZNIJKUIVPILOPTZNDJMMOONOMKKQP`MH]_djk~d\YRJHKOMHQNP^^TNKLPNEOPRRTQRSSSRPOSTPUWʻXUSHIMQSPU[p򬰎ptzvux{e~\W}xogsYUSXXVWWTYSYgkxF@9UaRPXE05IV-$AGEOaihSBd@"BUC5HSTYK IYfh_RSWV]wx郈ÿºӝ½óȝϯٻv]ZVItwN?48B?@B>/.cjSS-%Dclc"N;BOTfM,OR3QO(GRX0)%*,*-,&%%H)>W<>~~~}~}~}}~}~}~~~~~~~~~~"h켩Ӂ⨀ǙӂômkifkgWmTyvi766758=D96::;<>=<8675523623dmiffiglaj2239;8:<9:56210779::785080>8886;6@A=9307:<<=:<9999<:IQ^;7741940-77;?~:47878606568:<6:>989<Docjmlo==9<319=?@DFOfɭͶ6ӹӼ횯󆃂ֻܾ䊍シX]d}fv|yu^f]{asWVSRUUVvnqsqmmeXNm|BA??>BITKHKNU]eZPGGKIIHMPLJHIFEHJJKNTVONJMMLILIKNSSUNELNdRMJGOSaeWPIJPROPSNOPRUYeMHZ^bk˿USSPHJGIGOPRUŶQLLILNNOURPRRWQPSQOMRRVNNWnZUPRGDNSSSW`nưpht]e"^^fqrcaqw\\ZWUSOze.:Ce}]TnT;W`GB:&=DIX:Aw]9?EBH(XLQ*+&#'+3iZRV[XSQjڂ󃅄ղѺۑʾƹ¸¼ދ񔣳ԻyT^_TOJ`MMN^MC=J>2ErCG]-NH]3",/`iLPC&=C=037;F=;=976998iP@A>GRXxH>=:779835673=D@55:6799599:<7569973=<@;==sYTh[_r;9<@;68;ABADMYƽӻ"乇ɑW^j{gsvenp[^p~td~~crUSRSTzemusqnjlVx|=@?@?@CLPJKJKTVTQPJIKHIJKORLOJHHHKGDMQNPELNMOKIHNKOROKOOS]PKKMLQWZTGJPT^QPVQOPRPMdOU[_k~mWUTPLMMLNNQR]m^NOOHKOSTWTSWRPNPPOIPQQNPQ歓YUURQJLQXWW[mqƢX_~h"ffdg^d``q[~f``YZYVRRd{`3AL^m^QiZ1=F<9.!2ABMkB:C]LjQI/JLF#%'P()Y[SVX^QEN쉞ŹǼĶñᯗꂗƿ쮞񅊏rTUT/VMTTS]kWI>P[E&P`CpA`DH]"--05/MA"X8=KX[/\DA6-G0-0,%%CNN6Nk/~~~~~~}}}~}~}~}~}~~~~"һ棻߻qskkjc\Y\pfpxvul4697868859:;>9:512366510YaS[je^d^a753689=88;?><786268658875442DE<9>;889?366:>@<9676:??9lG>D?FU5;A==<6;;669759;B<66=:7>AG>JH095>777=@C658868:<>:;89_6".+-+,E9=d^Yi1-''XNTMR166,"2+E_SGAG~~~~~~~~~~~}~}~}~~}}}~}~~}~~}~ "̱ڌ픢덌˺dpmlke^xfoxsrqno76622488:=B957451).35831`ZXbT`bffbi427679:<=<:87589;=<<@679<8<98;9;9:<::7:39888787:@B<<6^>A=JS7wyfw;487::78;2678<>9492453<=9:@<:6554169:6.bgQ\eHVNDG~<9327:9=AEDINI̶ݠɸӐ"꽫뽑T\mz}]|`eYuwgpVRNtxz\nplmmi}s{||yxEKRMMNONPTRKJLHJLKJIMSLKJKOIHKLOSRONMKLMNPPQUHHMNO\YRPORSVUQOINNWROPQQNQZZSWJ|ZYSie԰pXSOTVQPSJTRSUTNLRMMRIT[TRRMLJKLINQVWRJutsrsVSKHKPPRU`a_hxz}uscpvalh"f`ca]|RPfzV]]WS9N\[IGZ[7PoTUR;@c@'471EEcIQ:eFKN'&'RTkPS[GIM֒Ǻ½ƴؽ±²µۗҽㆢDBG`WULO8:9=,2K2YA>OD%.[@"70-+&F30NOHNL%&CMDRf\.4.+%94EOHDBJ~~~~~~~~~~}~}~}~}~}}~~}~~}~"ñ݄ԃƹhjkkh_R|jozz<7863787518:8<@>5756753477:92WV`cc]`aide9=757:=>>;=<878758:;88778>@:68<6:>667639:6:76;<:?>A7276544595dhs|mXSOm|9@<77=;:;>EDGK[ϊ"ƹȢ憈 j|Z]_|Uwpd^ftr\URijjjkifcxtt;8=>?EMQMIORPU]VLMFILOTQMMOLH~|NTLIKMMNRPPPNNOMKLMOONKKJTc_MPMPSRSLMLMMNOOKPRNOUTVPL{ahp_sǰ^pZVU`ZPQXQQRMMKJNWYPPOU_TKOPVKIPMNORRRMSVPRNPPNLQ_]ejuvvoei{tmnvy_b^"a^d]Yx}sd}WVYXWUaAUswin]0=2\f[TJ0DCO#++04FHDPRAQR*+QOQV_[NGKD򙝡ᇅžŴƺβ޿ċ󁍋Რ񀐖MB@PZK9BF90*+6JVEAHMM73S?"<4,+'J=7BM^+),+,)DFMOLKV5~~~~~~~~~}~}~}~~}}}~}~"򃉉ਔիɯδmpljjhYxOoppzw6758:;997699:7;8776731731554]eaddgcbac]24:=979::=6A<;5:9759;<989:=@9/630;63039785533347936755[ZGY]?=oho9149=71288=1481587;;8689>HKQ6+FW"/0,+OG<<@=UbWI!,&cIP(&$(-*(R4gRB\O~~~~~~~~}~}~}~~~}}}~}~}}~~~"ʻᬇýpngfgheWgtjlrg36l78??58>9;67<;:653/44553//a_bff`bchcd4746989756.9667:7738;97884:985568;:74,57<44/1/:625279dNYQ>cC9`a?956874323785.4<7=8;374;;8:965:777<865965rlZQMKRas}E@78:5A>=9;AR[g馷ֵԲȼ"࿯Ʃ݌Ї¹΀cȩrUbť~kld\_oemikkg`Upo|~@?wAHVVJMSORMLQPNKJIGKKJGCCH}su}}DJHIIJLKIKCNNLMMHMMOONNOMKTQOOONMPQPOGLFHILJLGKJIOORT}hTseXPJKPPNKKRUUQKPTOSQSHNRaaTRPMNTPNGORSPQORfVMOOJVTSUOUsuƒꏌx|t"UZZZ~ufvnbWRZ_VN^noxC~bFFQYu}S4Td53QIMNJJSRF绾˼˼ȷùƽشׁ݄ϺߕWNPYP`xoF.2IWPMKLS[@4EQ"(+,+PK@Lz~~}~~}~}~}~~}}~}~}}~~ ~~"޾ܮůǽpmkifg`ID}{xoqp6m479A=::9:97898872+1598<<10OYh`]]elcee1099:7858<<679:;=7734479;89731657<:0429=5401/.97/3697oP_R>PmA7967567:;84434735:75;237688826888:=>99736889uqeQTOV_hx>;879:BJZTPRONNLMNJMNJDHJLLKIFJ~}syFGKHIHJJMPOONNQONLMKMNMOPNJMNPSQKNLQLCJLNMFJKFOPSQ~aKmseZTQJKMQSOJPPQTQQWRPTSPQPRVXMKPPORWWMMRPQSVXVPNMNPTWSTVZnuwʍh_Wx&WSW^ZrpfjTYgyf{]}qkQZVKZtp^[SWnjB:_~MK\9;`L@KWLQY0/SNLCBPb\Oԗļǽ¿ӳ잞ׄôn]XptJ?/?;IRVaTUWfZ.TV"$%+/gTIWYJ==>,6#H887NKNE:L5?KQJ;=9~~}~}~}~}~}~}~~~"ՔľͿȴspolhgdYh7stno9;844:3:8<770856679=:.5371@m>41159872446206549Bp\bADLowq:7532426665.568466:652/478474878;99985.5;7=?>EQUUPPOPTQOLJIKIGKJIHIH}={BHQIEIJKKNmSDMORNOGMNOOKJMPKNIJGc^QMKMOMQMOQNEHPNOUZXV^TNIKOOPNPSPSUUOQPQPPQQQPTRQINMOTSTQPOJOVSYf`NeVKMNQWUWVSXlpqɋchmn^STSV\ZXUU]Wzcco\U]ic|mwffa?1BS\VXY`9wJ=V:72mE88=;86/34149>8950587;T802417:8543-70-.47EtGbN8Zjll886138;72043456178/796468448485:97988639<9x8bODFVT[kyx>968;@>A?85?GN{;睫󈆈ħ胆˄ѽEi[mJH`fkv`RPmmf_~ilmpkjf[Ynw{<=;?==@FMUKINOKMLINJKJKMKFy{x}|ECMOKJNJMNRSDKSONPLNONNNMIMMILMNSvTJJKJORMLMNKQLMNPUiukU~_WQHLPROJNSQQRSKPMHPQSUTQNPONJEORRVSQPPTTRbNSMLNQYV^\QQ]emxedfhdQUVSTZ`cX}p{b\_ZrJc`ewmK<, #&JYVRVPKsHqDB/&)PG@A<-$9NYVFAHLRQBETSY䜫ӫ⁈úñĹɽĸƱ݋끕ǽ񐮾iDHaFD?;KPLNDALJ~~~~}}}~}~}~}~}~}~}~~~~~"ϩȜ羧‹Ǿiknkh_Dcur879pn78<<>>8269;;705431308353999>=58?D>744575-135/9:;9565297865;;867884+215468:@jO]>9ni:`97557665:42759749<989=6663<302==;75:;647:7x8\bYRQRXwn>668:zA?ELQOJGKNNMLJMLKJKHJGIIOSx~suLRMKLLLPW[KFMLJMNLNOPLOMLMLNLJMJNLHLMPNKLONJPNNMPTVdkblaWQPRNJLQPPPMSSPQOOQR[VSPIONNDGNRSSTROPQQM]VMMNOR^`aVV[diuc`gedciXUT^ZSSVah"_wfytoxtY_cg\Y|{q[\yd1%&5We_^N>3)6Vk6+&UQ@7DE;EYaZND:>GQTNRZB㒁̿ȾƮžȀ¾ݾƸŮñ݁ƭ昫z|qGN^@CB@<=-GFM+U)-0,*-5;"3N73I@883$FY24:1C2TP2@I=+"9JYjSBDC~~ ~~~}}}~~~}}~}~}~}~}~}~}~~~~"Ѷ߃ͣۻѺafhmhb_vahj8stttk7::><9668<:353/0/2068657nfXSU`jhiffcX9A=34<::859=<81512-2338:<9638785476547215;<1343568A>I~`e^;tllkl79689?77578;:4387<<<>8=76?9647C?67:C9-66runa`LUYX]l~<=625;:=GK?>@Dg"Ѽîΰ¼dht}ffvkURSgtSt]jllfc`zz|?@FMTRKGKMPMHLLJKIHDHHHJO~{x~Q^VIFMLLKIJILMJNJLIKJMROMMMNSQPHHLKKJMLKLOSOQRNMNOY^seTRRSQROPPSQQRQSTNTTSYU\QNPNQJCQUSSRWSKPNfbNIKPPP[`RVW_}bgdc_f\VVXWV\`^WQVbn"kar`hfgp_ez|64:ELVew==]FDC=HJ0,/og9>OKKacVNG:=P.ZQOSQ»ºƾûƿųηȀtDKUpACC=90*),+-../.(-7A"=9XNDFCO8*Ty;,3C42XjIOboYMDIOTKCDA~~}~}~}~}~}~}}~~~~~"ϳ㱁¾۽ѿfegig`MoG8145liiheq98756511+5965441njaW]Wbffbdf4=?:7:7233944088332277;;79563848647732:47?95.+06<>H>L`oGDststn578:<;875:881764864735544?877?::38=D:596l[\QZRKYX[zvy:53369:;D>?@EITb􃅆"н⿢IjxVhnm`~Y_vI_~hllhgaWpNI??A}|xvCKTSOLILPOPM5DHJHDAHJywl{zDOXMFJJGFHMGIFMRMMNMPPQMHMLMMQKMN:LNRINTQSQNMNQQYiƒxsijQPQRUUPQQWQQKTZTSPMNNPNMKQNOMMMR]YURTOUNJLMNPRUQUTQ^u~dffh][UV]XXXWVXUYbklj_yjkssfbhXf_iaq`gu127AJ4|FJF8KLQF>U/Q\:c-%BEMdZEU\ECWa`]ZYb敜޽ၣȻýŮՂŹoBSQeBFF:61-.++,,(*&-8@"><7XFIST4+4C=*.4# DRR.?Ft^L>7B?8660218;23<7629545gqi`Te5qocfee:AEC5573=C286741454:9>9528<:9616568<75,1248@DLH{ES[9uzvwr<57:<:16.67@:73:749986447:?86>:62:;C;652gbXRYWi\^]yuv:74124:<>@A@CHSZyű¨牓ʩ߀}_limkf}Wa~blZruslknlfZeSI@?Ayo>?CJUSTLFDLKLKNPLJHCIHHEIMz?z͹NPSTJILISXGLMPMLRQNOLONLIMMLNOMPNNPLGMRPRQQNLP]ixXtwƷXOQTZYLNLQQXSRTZPKPQSQLLOQUOLPMQTVSXUSQLPNKKJKVTSSTSU^ty|bdhb_[U`\XWQQVWXej"mojWvwrqouiapmjj|ryBCBJ1@@ELHd6@LKMR*=BaU*.[WVSa]^]^kꏀżƻ׀厬ĶĽǻÝ܏Ⅱϸ󛕍κ¿뙶¾dC[R`GFD=6[,-,,,(#&)0;@"AC;.IL]X<.8TZK3/$/@HP6EJIDiP=9AMKL~~}~}~}~~~}~}~"Ёݺӹƴиqjeef^PZM96;qhpnji99@@?9;86887895426645536jjkgaRQcgefadf{z5>BA;59;HB389;74818;<<848744:44457455768694658@WHzsZQMnpsw427/9914488:8869548083585<<93066719?<>9:qYOXWUZXZV`jo87:689879=G@BHPWi"Ӫϻᇏ¸uWkulebr\OuZcor|~dljihg[mTJACw{~}z@EPTSNPKINOLLKGJG@AHKGFMyv~|z{uưPSUQLFLObTBGMTNKQNQRPQONTNDCOMMNPSOPLNNQOOKNQPXk}TOSMUWLKLPOQQQPRJHNHROMPLQUQNIKOUOQVZ]TSONPMNPPONQXSVdwzdgiV_XXZTRW\gk"iljZswzx_ljhҬ:IN0>E:6AyP/7Ze[PE7AMD-#,C@L]9G696CQZWQU^䊣Ղ釧ʻϹðѹ£͟ӱڰ󓕔ܺۿꗹøfXQ\ECG{ZO(..15-G*-3;?"CF6'OMFFJ>)EeTE9,8HFDkJBFRMLV~~~~}~~~}~}~~}~}~"Mֺ̰̽ͪefcdc[GIz6q{vqrnhu87;>=944697:7620422234kjj^]Yjg6]hm]u|v>CED6:6<=:68;86346<:8833/679;49>4443/4*766<:31ASlnk~NG|ufl:/26877.54:;7:8;7658640882:>82558738:B>:6nfYVQNWQX\SZgn6769:@>:9@@>>BITiͿүƱɸ儑׷Rn`eZkqi|zbZ_xwmdmkiieT`@||yz{AFPVTMIKLMGKJKIEHEGJGDFIKz}t=p~ĩW^\UGIGOPKCHPQMGJNUPMNLNOQLOUNOSMKLMLMDOMGLOP[^st~usbSRSRQQJOMQPKQOQNLLONQOQPHPTQLMLPSQRTe[USOOLMORPPRXVUX_n{fgUZXRTW^ip"ngbVUxX~|q|^njb9]iST=%?I];IDCED@vVc,3MUZT?9T藥؊ŭŶƁӼñد刑玚¶吶|huU@LpBEyTMYZ\350&*,4>F"H?7$(K9>T*.1LGI2(8FMaBKC@|d>BQOLLZ~~~~~}}~}~}~}~~}~}~"ϲǒ깏qebffbV{Cuofiguwor8:9@C;98999=:9543/)*4631-4jg]X^`hje`klmsD9;;=<=39537665776664.243>835897352525:9585=AJ_ڌYoln673.72552966978::98796:8>:49::7;@D>=?A>?GIVc"ݾ񶤬ۻJc||h`snnmoqkg_[xuu|sl~@CJWaQLKLKFHJMKJID>?GJHGDI~{yjTVc\RNLKLOFKKKLMLKNMHJNMION.GTSMJMMLKONQNNMJGORYpo}ZWTPUPQOOVRPOLPpOQSPXWWSPQRUNOQWTOTTZbTULMJMOPVSUX^X[`pv\ZTZYWW^inia^t{[wypjcwS5bkelQ?IF41QRd7JJHIA>MOB@2cypMfaUQB6򁍣ڻ񅍍˾ˀƴƸؠ¼ቲzXIEfGqSPffe543,$,9FL"IB3C>@:8J.?-9>:.&?SNZzE@}wT6AIAHP+~~~~}~}~~~}|}~}~"ޅڶלifgff`Qm?uk`hhsuqv>===>>89<;<;92000//25332/\iY2/_cgfeaaoeq|68BHy99@<677354544633232358299?98:347151869100=:dW}Tku79:6431*8-32688734?6688:<;=45776<;892:5::7`qh_V\XTROVh]q785;:A<AHKP\l麢􅋋"۽΃ƪuVWhmUYYnimpmkf\Wy}{|wCIRVTOJKNKFEHJKKIEBFGGHGD~DC}{}~}SU``JFLLIKMIJJKKNQLNNLLMLJFONRMKOMORNRJLJMLPUaswꃦ`WUPPQPIRLQQPOOPNKRLNPQVZU]SOPSLOQRWRSNSTTLLIMLSSTVWWW_iwt|uyW{tW[WW`fe"ca^{Vvin||o}ʵ~oTTRCTg\EKY].-NVi@?,LJJNOU`f,-JF>dpZyXXSSZaۋ􁓬ºĿɂƻĹþ̀ɷȹŸꙻ󈙦ڽ˿ʴxF8Cp=^VEG3JOZ300/>DE"?>3KFLMAJ.I'0392!5NDRs}zqN=;8:8411100044552cd`Zjs`ejldsjq{>?@x849;>697168341,2/.464486@97/6<8956735865.9DFN[_7_Yjp=;8918266:<9:66631=@77389:538137527:=87B9.1lk^[TYLNNjiri56;:=<9<>;>842255311145652_ZXf{@n4`]fktuxzG?<59:=LW>778825442+658-55566713=4466<675:65:AHIECs[=_tz?=:67::6@;>:854724::119<85452326<37;:89:70\ccY.X[OK]]knp<8999?CFBA>?AHPN[pÖ㷴ɿꂉ"ϼɥlXbc[t^e`lkrje^KAnxzvFNUSSTQSUPSKFHIJKIGECFECBCqjzL=;";gU+27;oSQMOEA<<,DM1B{umd{j13,&,~~~}~}~}~}~}~}~}~"ɳ¼ٳݿkjnjgj<6pplhlqigi;@C<:8::;:;94234446583351`XFJbhibdbkfhl:;=|@GB;1778FOG83564037;466;475040221744766347668;BHFBCR8\nt>963<:;=>::99788349469<;8957599867<:899973giqV\YZR[]_bm7337:9=@@BC@ADGIKVoƤ透"怍ީx~v_suh`]rh|ziglkgxQEvqrpv}}MY]NJJORTPSRIHJIJIHFFBCC?v_f|~}yzs~|MUYfueTHLIHU\VJGLONLKKNMOMNKSPLQMNONPKKMMMJJONOST\of^bn^`URQWTSRRRVUURPPMPQLNRRRQPKTRQSQNPWUTVUROGz{wOMMQSRWXTX`]`egkjl{xSgRkWfid^["biYrwd`Sd]7FkZ-!EVFOVy;GKOP^YR_87[IIb[Ec@Mcukdbvİȴк¾;ڦ㊘͠ᐦ}UV'JFUNII8!:ZJP8@?>A;"pXHOh894cd^eVABA2LS2@xtj`i|93)P^~~~}~}~~~}~}~}~"Ȫꛗʃニ⽓ตuhhiffN8iqmnhefqw9?F?<;:58<>?5785470552578656638=13541686743386<@HKCC>]:[s=62;85<:<@=>;257358677997764/8:823?<89884`emdfeMUHP\[a5237668>BECEBCKKHDO]w惏"Շƀ܅۲ڀmgxxkc\\r\f_bhp_VywdhhikjhXJ~rlpnoo~ER_`LHKKNNPTQNLIJKGHEEB@C~_Wrsp}}|zPV[`iXURNFILJNGJMLJMGHJJOQOMNOPMNTLMNOMNNMNLMNPPTZmla_UbgUOVTSWPQUWZVOQQNPRPPPRRMJLPKPUQIKYWTVTRKx{rNMLLMNQV[]^_WYcda_ozvRV~ZbdZW"aTdW\VWV{z^W4-?@7HKG()fP;>;ARbdY5?>Z@2EB60LjkndGTøöʺĻ仭ŚچwS.*NDJHIWOFIMFS:>?u:4"g7)4MU)8Yno51SKUH1/>;[a@?AVrviXIOL~~~~~~~~~}~}~}~}~"츨􎛝Űͷ슨okghf`K;q|qdcdnqp8=HM;464=>;85403574666735lP@G`e^_]fgvlealt@B?AD=<;77;<<85988895:7<:3533346456223874-.3=866:>BBDg^Ymw=:85/32=7:12;97705736676:65788694576:;:>36kgicX][ROXY]b3.426<:AB@BE?HIHIFNXp܆ɿ"݄ڀгģπ~j{ݥXl`qhtq}~_|Rq|^qiikihaxMItjsw{|GYkfMHLINNNPNMKIEHHGDCDBGsUWuwhu|^h`[VVTRJHMLIKHKKJIJFLMTUJIHIKLKHMNKNMNNMILMRNMMPVX[oyx]dZROTSZOQIGRRRTPQRPSQQSWOJOSPLRQPPRUTU_NKz}wqKJOLLOPV[Yb]R[`ckirygTR_["PbhnZoVVY[~gShNJ5-9?2E6,0FIU?=2DNHCAV:{V@$BGK5PaZWLp˖הŲǻǽĸŴʴ҂ʋtGQ-,FDHLS\RAF?Nh76c_V"OLB&:;-?fa0/TZ[N01F7E@-OcjqVKRK~~~~~~~~~~~~}~}~}}}~}~~~"zÉ򗞓㏃UffidcPh>5iqn]_[_hk7@PH=36699775.00856556444aN=R\Yaoihehli14:==89B=8;::7=;;<;6:;9976762977568447758988,04=5838>@E>Cohjtt>5/-436:;98789555427,447;663679616389:;7fhij`2WYTST_Z__0/04::BC?@@?Pc4-B>JPT4DML=88KB>LN*'F*,I;GG6+2FIQo`QQO~~~~~~~~~~}~}~}~}~}~}~~"ç֎ܺÄ^ige_\K;3gkjiTZW36;AEE=<997453//0.04686443dV@I]T__bk/13gf34>CswC=;=HC<9:@C;485496345996:9964988897673.:77554=G{|Zcg7<824404;557;96645136.54858:569656555=99:`ffji0`cYZX[\]d3.088:=?ACB@@@~EISVe¾һ"ϵѾ¬Jhxyg{ki}v^Xrrhc[ie[lpgrohpolf`R>Bwqpivy?GWjnfSPPSNJMKFFJJIHHICgQYifnpw{36@zyAFRb\VQQcWPMMPSLGKFDNMKJKNPNQOQMKNKLONMMKJLNGLNMMVaƻq]eYQPPKNUQQPPQPQPPLQZQVRQMTVLOQKNQQOOVSTQysyx<~TNKLOOPVVZhf[\_np{y~bY`Vk|utTySwmwPL9J2?X?B24>EG@+"9LFGG8-8QgV98JUKEBDBICGKQ]W˰偈"̔φǿw_X^q_h}}}wi_oOUvnfuntwpnjjjfY|L:?{up}?HWkfWOFKOQLKRKHJKMJGFEGJC|\XYkgasr96:8;xN^^[PN\[PNOMRiLHDHIQJLLHMM2KNPPLHKHQMNPMMPKLJMMOTUdfwXQZOMROKQMOOPKQMPJOQRlMNQRNQQJJORRPUVUorwzx|FJLNOQTYY][g_gimtux뮇U^eU»x]jS\UB48ANDnFOH==>;B<,I^Q=WG%/IXMA>MM~JNя􀆣ƾļѦĀŽŵثۂ¸񙴫܃iCIEEGHCW^MRS,14-LLb"xvPn]pbACO<8?=D,FbKCS_Ybjbc5c25im17?n=DB:2221773DYC=9178648488^766321248848;54445558??>s{qG^cq{:68<:79:665776798<455237:997656:8?699diadkad^`ZaeZ\U_l11:69;>9>@G|INSGI쁉熈޾Ѐw{ism}rs~znieZ`zakyj\bsvy~mkjfdWUF|tqzvsuuz?FUohTNONLOOPPKJHIIJHEEIPQz]S_skpzux?r8=~FQeǟUf_SLMNLOQOUfUSPK=MFLNMMNOPMLKMMKMLJNMMPQNQWYe[wNOQTSQSQOPQTRQQQLQQURLMORSeOPURTLTZrq{{~yKNQNRQQLTUVZ_osui}T[fVpqΖmgVbVLTTJIdnORH84@AC@8ShQ-6+!*GRF7?IB:?LRºǴ¶̅ͯǀͼ̴Ϭ׽򝩘jEGFIB@HQ\PV\.393\IX"xIKiI}zIZfL@;DM,MCPYYWZ_kmg6eTQ*~~~~~~~~}~} ~}~~}}~~~}}~}~}~}}}~~~~"oʘıumiece]u7=i]^ouolbe52=DE9700344464<301430028f_FIWX]gpjd^hf7mtf?>EE:9786789763102-446665:36/066>;;8866166688tpS\afeh=7``bhaS\\e20379:?79;;>AxzCHKM`/Ṯ뺐χ刍d~wsuk|ogru}j|~x{xsmnmjiieZF?ull}}ttqwAESmpRMHJMLMPSJJEFHJHFFJTqNN`hnx|}u?VlSf`YQNMMPPPNQQQ`aOMILKKLNMMLMNOLMKMMLGNMOJMOKRTXdƫ_h}zHGOSQR[QOPRTRQRQMQRRTSPQUPRTSQSQURPzyxHDLKMOQONGNRSVUhqstznYTz|"puq}n]\XVXWaieUh8VVMO^]N<1B[T@5Wi^GcB<*HIK@LRKHILTi􅛝¿ļνǽ򪪴䈏Ƹ晤Ż񏚕ze>HFHFFLPVNKONU98VA>"j?GJ}jTcIem.)')P/+EGPTYY`qy579fU.~~~~~~~~}~}~}}}~~}}~}~}~~}~}}}~ ~~"دİvkfd__PH/:fS^ospiiih5AG=57635815544430131002\UKN^Y_hqna]Wkkwono@st;A<::70498756?:=:79677889884086005677:6144396;488bnmE_mqp.:<8;?=>155468:>;:957927;:379=55176jlPQ_a2d:4`hifc^^_e20687>:705:@>}wBDMLJrꄁע"琯聈hztlt}ieZsztvlinmjggedTd@?vjs}xww~CTk_OLLLNNJNMIFJLHFHHFEEeSTdglr~|s~]R^[USNHLOMMNORMQONNKLLMMMKMLLOONNNMNMNLJMLKOMSSZ\cu?MQPSVURHNQQPQPPLKQPRVKLPPLSU^ROQWQzt=q?@JGNNNRNMJNRVSsr}shzfRQer"onkjnkce_UVWW[Yajlj`XZe3LWZPB=EG7=`U1,SomjIJCCDv\AC0I]0-+*Q01F>IX]/04<;:=<2/~~~~~~~}~}~}}~}~}~}~~}~}}}~~"荗øóĪ̭~rigieZ}7*9b\]npfilhj3=D>28:::79544413222341_HNNSW^dikgb`cksomgbhjn2@<7<9755868AJC<478567678:=67:966535776673444641:71g^avxj[76688:9<83338:9A;@.:77;:44579740..TTV]ac7mid`cadri_bo:2:74804435;?xxxCCOMRs̾"ւ累׍㻺~gpny{ec`sum{utpklknod[O?@idh{{}}DQ`VKOOPOLOLHFHIJHFIKHBj_\aelxxx|zy~|M[YQRONJGIIO\dWPINMILMMNOMMMPOORRNIJMNMNSLNONORRWUQrq~MNSSRRQVPNNORQNTRYIQQNOOJLORTQOPPMuq;ynr}uzPFMLJPJNMMPV[{x|nf˔USRVQx~"^dahj~ahbO\^cirrmfbKAAfxdND00B/0/G;L/J>GX\a02=@vxxAPTLVםƤ׶p]olkoywxmbjasxtoklimpfWrG?=jjvwz}|{}KWSKLNOMLMLIFJJIHIKHD@vgUXenq~w{|~zty~v}VZONMOHKILNRVSNJLNKLMNNMMLROLNNNKMMNSNQMNNRPOQ\WTuyq;BIKRQJIKQSTQSVMSSPRIPOPPHMPIQPQQQLqty|yz{>m~SLHHQORKPORVWrkqSUWYUP"Whqjįw~g`~W]ajqroli;*DGLJ[JJ0AG48AISL7/7E`dQR^iƷ⬡ۊŸĀƹоЕý`GWLHLRQKMO##$'''LF"T3WeEIFtY44S31B1FQICJWY`-/7?ABC?6~~~}~}~}~}~}~}~}}}~}}~ "䟶Ȥзtkhjgkm70rjurpjkgjjlh07=?;.45758776?:8115359<6277877;63659?y:nijfe6805578548<;:>;8573/-5<787547866652c\_S]pen1hed\1^c_\]Z^32:4565287:?zvq?EIKT𶉻"ƅĩߎʱ`xq|ztugosgon}ocaswvqmpnkjnlllC?lw{{~~}@RWMMQPQ[SLLIFFIIIJKE@mSPYfmlt~zz~~|vy~V_TMMLDCGLKOIGDMNOINQOKQOPONMJLNNKMOLMNOPLMONT^Svo;=AGIMPJENSSSVVVQRQMINPOPONMOPTSPNMkz=|~|=ny}MLRLNONJMMQWdxyooޞnSV[VYXTUR"TW`stiv^`{U[flnmlr\\4BKX\>C215.8`qSKD)&>MWNB.0;9<>NNauĸ˰ʇʀ¾ʿ̸ø̃þ^G_MLOPQRQ'%'"%)*-+",1G?7D]fIBU1D.4G.KUJHIKMQO&/69?B=<~~}~}~}~}~}~}~}~}~}}~"Ӝɳojhgc]\32lmrsg`h57oxx7<;5..3297328744/2314fUEIS[_ckineepnid^knmkjYP7CB:19A><;7EH?1315642887523666:7<36469;8<5:869>}lsgbd6376<7775689B<::6721,0;:6857961176=;gmtkgij1.dbfgc^bX_OWbc42089646>?>tsx~DCHQ`"́͊۹q}logmftyzyh[UZionmnjc^@?tjpz{}ECGPSMHKMJOKGGHFHJFHFDE|^LUchlv}zzuzP_`QKNMJKMOSYTIMKPOMLNMJLMOTONOKNJPNKMONNHMOOT[yp>A@CHTԅѾ厪ƀ킂ꑒü˸㭻Ŷ잩^eOOVSSJI(#&)(((*("*1E=0>fiE<[33+1J9KUGDB@AFHI'-4>@??~~~~~}~~}}}~}~}~}~~}~}~}~~"ϧٴځgfhhfdhQ605iroea]28u~|65?9459==;22776765406eSH@W\jq~ticZgmtfkhfihhXS2?A>8388980J[H2,318889:6406262:786337;:=:16368=}w|~dh7457<=:4=6789=4=814717887.85985/35975tyfdhm/.dZcbbj`bcH]gl4986996988>voeo?HHQ["ԥꇓuigjxsnoxhYglmkjonVD:5jxxy}BEDLWROQQNNKEGJJLOMJGDCqYQQjhs|xv|ryqs{N^cWQMLJLMQqdQHBLMRLKNOKKLROPIOMOOPNLONOLDMONRZv@?BHSTOKRMOPRVKRRPRUNQQRSLTQRPNMOPQQR½xrv79~y{KMKLNMLLHPYftrux\ŝb[[WWae]WWV"U\WUXf||kg[Y[VxzUaiqrtnbd?_cnXQ858?2P_^RRVO;269=87JGc<Ђ쭳ڄɸ׶ʿּѾ╲͍̼ˀ»ı􀂎쒋϶ŽĶڱ֋S[LQhvh522++/-*)($"(1,$%4IH<94M;)-'AHK:;97;DDC&,1<>?B~~~~}~~}}}~}~~}~}~~}~}~}~~"ȸjgdhea_J630ddpokh55ov47;999<9:<71541252123^EPKVdnkvmihgioojac3hv{ik8ABA;589482HR50258??<;7[7=88:;?6989<7:::6553246zyvaa6829:41,3<8894898?9>88<6=17077/033>11uidmw8ceS_b_bSdTO\]d9<564C9;?~rlwzENNY󇒐נľكucfu~g^cs}}dsnpkigorMB<3ou|}ABBJRRRSUNLNNKLKLLKIGFBjM\fk||z~}|w;yN]cWPJMMHNQj_F?GKMMLMMKLSQPPNQMPOTRJMNNLLOMNQTŲo;@AMSOPNOSOORNNNPWTZQPTPYQVOQOHNQQ^OP֘ypw:tw}}suxLLEKKKMLLOWjuvychllh[S_fcXTU"VZYYYclmhecYT[a[\uuR_jqrukII?3qmdW8?LVSbj^KDKI7'!#+/8P@=$KZ֑ҡ邎퇕ƼȿҼ܊׏Ȁ˽Ǻؾ݆ջսжɀU~bQSpBBA>4+/..*##"'/-&"0?A9;>3'*-)%JJ>=B>:AEE%-4:7<>~~~~~}~~}}}~}~}~~}~}~}~}~~~}~}~~"ʸDzriedecZ@74mpsolnk437|t9<<9689:;==HJ7.335799?9777888<787>7678842555/7;wvvof494553.,0<8787;;8:;>:8:@;5654:202631XqjhnwredN`^bo]c\Z]`0:=<344437<=}tgy}JRNYϋ"ۧ⊖wUV]ibbqtstzirusnidkyq@>@?Hr822578:8:9;:35377988989626254402=9qnwork59844//1:98:<>:49;>6679974625255460Wcl^jiljd0S[betY^\a`c05<8657669:=vtmwKLW"ޱāuTDVm~STW]XWV~vdrjtsmilp}ll9y{GJKFIJLKMOQWzwwckrsohVWWUVSVdundei_[\\X~sndlrXibUI<0!"/<32$'M,0,01VUO97RQCDS^P8D7WPrăµȾ퍩،Ľžɲ냄Ŀܕ¼ڼcjTOR\JIECE71-**NK"(PPLP0?LF?>>3,--+QN9?TM+$6;E+3/%M[~~~~~~}~}~}~}~}~}~~~}~~"B솎҂ۺڗqmgdfdb=2f}z:ynrw@>:689?:8;896453--1/23]XNJK\ilgcdjkh6sg3bgkoED=@B;:9::CCo558167989;@<79:74/6>8041.-32653/S``ln\iehhbbc`gi`^SS^a56<96476668vttryNKO踭灓犐qPMuSVSRTT\WS|~YVlotwqnyz\@>{CPOICDHOOPRQTPLIJJIIIJKIJEnYWdl{{nr~}x@}@b]UXbROMJKOXak_SHFLNJHKKLOVMQMNKJKKMLJLLKMKOKMLMKKODIHLQORSRRTUaYRRSOLIORPPPLNPSQSQPO{uzzyuw~}xIHJKKKNNQ|wvқjpc_STZ`hknj`^Zsupf|bXP@1&@]Y"$$')VJF041.OGLPGDI%+SI}Q؆ĺþºű罼쥷zPLMJWBA;@f.,TPPD"IKKMTW3:DA<;2/-UNR?ASWL74-=Z3/&PV~~~~}}}~}~}~}}~}~~}~}~~}~}~}~~~}}~"Ą̀ȣ|ogdmvnOV@ji|A<=uie9:677851:67723.02330+..01]UNRWZjjkgjngrmphgkh\o@?A<>BE=<889@GDIE61,/5:<:6:896677357825:2.14333945706h6quo09>066:5>79=:::67:975=;72-5.01256-.MXjhm_\deeedbjk_cOVO018678167=8:|ngruGINߪ懍"Ҷ|jWo^VSQQXhaU{pxzTXS~zvrltZTC~LKKLJDDDFGKRNRUOMJJIGGHHIIGDq\Xjr}mwX[WLLXdSQNJGQcvxbHEGMOLLKFLMMLMMKGLNSMMSMLLKKLKNKKONTSAHKILPSMTQSWSSTPRTTQPSPPQMQNNMMQTOOx~yzxpt|EGMJLPKKLQNPosunTWXRT"QWƿvv`[`vxYA2&/l7(%%%STHI0862]H<@<88"-2b^]jǂƱ͸¹е׾¸÷俽ҏ󅇅UTUC8Oa3.2]..VMKC">F"HNKJ0}u6@71+MHTFD]\\WM57S^/CBO ~~}}}~~~}}}~}~}~}}}~}~}~~~}}~"dچյڊ×whchnzlN|kfnsBA6dh5<63577668324/.12210,,/.ZUCEV1eikkkgikotv^fx}qv@C@C?><99D_cV84-,57:988:?:56783075787556743/3464/ie7>60983358?878:?5<;899749;71/3+/01451MO_pfhVaejfdhe\S_aQRS-01345333;:y~lkmbG:DFRڽƬிg`U~gthZXUR_ff^thvX[xolpxKx{pvRPEFG?>AGMPOOLNNMKJIFCEGJLHkSSpF|yy}Y\XUWZWOQPMJVnmgDDEJOMNNKJM&OMLIHJLMSNNOPQPKMONKMMOOQSbNBGGFMRRUQxUNRSUTRQOQOPNOUMJKNSWSxyzvwwzuqGHJLKLLLJPOsgj|֙k`h|R`ԪXV}Ugz;+):@G9*'%&QQQZ1498WMDA<01=.4d]d晢󈖈ʽ܅ɹΛƸͿ뀄®;ƴFUVN,8HQF*Wdg[OQS"HD=1GNLPrvw/zg0,IBTRRZY\djM9IN(<+?~~~}~~~}}~}~}~~}}~}~}~}~~~}}~"ۇȏ񂏖¥ɕlbbeofW?;jmkk8m]fj67o565664672011,2734--+.SCFN*24deiggjlpxco{x?@CDBBABA>:3UQS`[N@`\Z/NBQ-[SPQ[5UAKM&>&4~~~~~~}~}~~}~}~~~}~~}~}~~"ʴՎ鼟slgitzG;8k`dn78443t>;99765585450131.1/.W1/):K?C2895464300.35135Yc[mwdbebfcfaaJ``q_HR+,/02387357;AJGFFHIJMPNMNKJJEJMHEIF>[]\n?F=98w|TWY_Y_ca`e\XRNNONNMx|>XFJKJNLLKINOQOMRJNMKNNNKKGKLMNONOOLNLSRSQNGICFMQU[VSUOMOPPQSMQQPQKNONLOQPRQ{{kt}z{{~s|}GHKKMLLNMMMPTSWYfhorktUk"hmfY[~VflLQR3C5-%"""%-+&&*25,)J5 FjIVZ[SKWǎ۽풌ނЪŵÿƾĿڮêׂ􎎍|Vi[~:3ORU^knfl"nPB,@HR\PFNU*K'0~~~~~}~}~}~~~}~~}}}~~~}~~~}~~}~}~~~}~~~~~"ӯԋĨzihlnxv@4?raj896877@E>==8427974433472213bhoRGNFP3}kbe016jk5:FBBCAD@BCA@BGEC?:<>@FNUH:::7:97:=9965776:>87468886;889555>9>=75=7:58>98832778?=<=938/5021/,2-,fifcjmh1]jgw^.`]\\`aL$.-0342792957qvnqhryFKPLNTԆԸȯ֚Ӻ鋊ǀ^XUVTW`edXmɓladmyVF>zty?=:?+*K$%+0+QJ83]SntlXPf޹ɷ醋򁂙ϫƿʾ澺⃧ƲvRvrNkZ(IV(WdkbY"T<2+2LRNb?33?66BHUSC7:KSZLNW20S:G~~~~~}}}~}~}~~~}}~}~}~}~}~~~~"޷⃆·ŁǢϤ|qpkswU]*edpl88=E;<=?@E@:27;@;46647:4-41\eULFI@PdwgZ_h6lmfnsAGABCDED@EA@@C>:868:EE<6798:88?8<7676:6:;:;:544666;9<986/758;1><:898748787:079;><=B<63484300(X_Tdbdft{e_drfg/]`X]QQTO+5.1101575957:rpcllmptNRSKβȝ̩Դ"叙䃍zW][l}SVqk``pgjnbArq|ACGQLNLKIKKHHMT\SILMKNRKDIHm\TWR[lwndhy@y{w~Xsc\^gki_aYYXZYRLIMMOCDHIKIKLLRKOMROMMJPTRPNKMLLKMQLJINOLNHQZOQJFFHIMNPNRQSMRSQSTVaYSSUTNOKNOzzz|zw~v{9u|z~qy|DLEGJKKLNOOGMT~|wugnsz쥎l~~"v]UayNRbNrY^[UbXJGM1:9O1&&)F;69CGPKC@BCNi[Zr̈ͩýIJ㔱k~T]FJ?FKR_a_M">-$*&?QKW@:,;88JO\iK<@J]_QU2211X]~~}~}~}~}~}~}~}~ }}~~~~~"۶狅ҴʘttolwzT?)gin967=A>BCA<:A=98;<:64466653010]JHQBDR_mbaagjmqtov=BFA@@?>;~x;>Az;6884046815766<;>74995679<7068864656776<65565595::4.56.77=8894:8;:9@D@@CFA9:994768630456b`JRODZW_ja^afksyqetyCA>;;=BB8<>?=5:::669435536:899473989:<54538145897744<<65644g8>//6>367?<72>7:@:::<897=4331/-SSVhbcpwrgakmd\nb^\[RVKN427541257<757pphmknpksx=|ILS̵ڟ䶫"ﶇ²ufVVxUeozpqowxYAwwDGFFFHKLPVVY[c^RQOMHJILKJIJIJyX]XObSgnhjou|{~yoWacYWW\[VWWVTQPORNLMIJKKLKJEFKLM5INMOONKMNNQJMMOQOQLJRQMMNOQUVBBJQKPQXYSMPIOTRXUVUTMPOiQTuuw}ywywvshrknGIJILJMLKNMMMwx}y>k{¢~yz~WU|^~mlVUYX]`E;YV`szs[G)*OH>=>;::7884434478=>94668988855355337773677786943789=932=7088851>8<7;<;8:;74,/42000]_f^ddicafiljckd]_ZPKST23857,3489662qnllpn<89@Cy{}"m[ib~asXU14-Xb9|c)(NONBEP)NLP^hfK@Vw콿цƨ¾ɴʀĿŹŵĺúʼꦪݽ~ca`glV>CYi^WV"RB514:@J[gCFL:KHKb7]@?@>??A?>>:66244320724678878;=:;224686634=;<767:?8:577n>;;6483698;67;4728?698661456i4//nYc`b12ee]lhjT_PKUcVHSV-5:55236<:38:upqqrr==99mrwQTgyѴϱ"ҫۊٍℂ멲ԀSWYUV\a^^h`ymkm~wG>ww@CCFKRS_dbc^]Z_fRJFIHIJKJHGqZQio`Z_iojvtsvzy|}Yib[\eh`cbZUWVURLHLLMMLKLTNLJJMNLLOMINMLLNPNNLOTOQNJIMOLPLOO[ZSLGNMQRRTPRRMTSUVNSQNPNSVVVQL}~=;vzvzywYYT[`hgdkq>AI9JAPTF;9HJEBVirqgRPqrᑧòʻĿп󍓏ùź΀Ƚڹ聅ɷư뜲tWaY_maN2OhfZW"S=.-;@7B^ZEYCRDMQ./3bCZT0=O_0WNBOO~~~}}~}~}~}~~~}~~}~}~}~ ~~~"㉓궘޼ȳ{kkrwF5ip32438>==:<>>?BCEBB=87;247:356655:9878777:755<76926=9759:8=58679q<678<;7;9><5;96375<38764124/2-0`jgif6/1agbhkbMO@AVUbUYW.1423126769896npp78=<::7u@HNTblk|͢ھ"ʴć襗€X]^`effc`ifdtunrkkxG>w{8;x}w|}sVOHUbVgglp<@HKNKKNJJMLNM?;>@AABUpyuxu"whqgxkd`c|hs?R-).5;?CA?A8F=I@-8GHOGB]rna\RRzt½ñʹ¾󌉊Ķ̀н˾ƾ¿Մſ񕦳rWf^XelW7C]`^X"R:/6@DA@?98444642432eaVHVgmhc[?EX]efdjwtwmosvD?<>9:?@?@C@AA=98=87665644554835766582169;6555799:8=<;::676737763859779866788418:7321-/0-)`ebadp25/`dZ`]S=?=IYRX\j1145324476685e54pg9<<::t9;BUGN_ji맟İ"ɻ߽ێɿȻÀzQXV^ded_cç}oXrX[udnkjyrH{}w;DGJNW_dU^eQNIIHJKKIIF~ykST`fimcLXhjqurwzw^gaa\_ii[WZ[f`TMINPNNMKJJLMLFMMNMMMKONMMLMLMLIJLLKKOQNMONKMQSUPLIOQYXURNNPRUUTPSZTMLNOQSQPw|898y}vupdMMK\hTVeu;>DKNLNNPKLQLJE{AA@@ACIX|rt򥨦f|z"u`rzyjrheaXd-5?",,3<@?;;lY>67(CZ]-KF_9dEASgDz逇ŻӀǷƽø߀ÿ爏鐖po_Wa7eBAY\[b"Q74CBC99<2<=cKtK_6..gN9DQUOKSQKDJT~~~}}}~}~}~}~~~}~}~~}}~}~~~~"ׂ浡߁Ͻlifdklfoevu98:9@HBy~{kzq422523352`WLPJ^fptm@=K^_adhkorov|wIGD?>C@ABC@@D<:98857;295427764::8465:1964745696;57::>;:7458778;>:98;66:=8559:964//,*.,[djbcs530dfeb^D@@=N]XXX4/34414223557fm50hk759=wx63AFIJ\ůҾӐ̎Ȣ{z}|QVWZZY[baWnZzbkkmiRw?FMKPZVLJHKJLJIFk]^T_l|SK]iijmruv{y|fhf^]b]XY``YVSOKJLKMPHMKKILPOOMNPUMOKIPMLKLHLHLNNPONQMPQQRPNORU\WTOQPPRWTRQT]VMKLOPQRPw=:8y~|ugONMMel[RS8:ADHIJHJKJIMKDz@@ADDG^pjr|򮶦`#{mekmdcfiru,)&#))3tyq;&1,EecWHGa:hRNiz̊ŭľح℗ǃ䇊酒qfTZ2kZLXZZ]"QJFSPOHDC=3jqU3V@7,2R@OVeQ68ABAOZ~~}~}~}~}~~~}~}}~~}}~}}~}}~~"⎒ᵖpabjniVrsdw=<97=EAB}utlZen\1/041-43-GOJ^[bra7C]ddcqvzytyvvy~BJFD@B@@A>;E<<478852;7535466947;7;8846:79@616788;;348:977::;?<:::A7=;577>=@734,0./^dvddcih7pjkegZA=BDIYTFW1/043/5364595mh4cmp8499ux56@ADa쌁γÿӬƒ҃詙}}nlYXUUd\^~]jdiy`Xopj}BDFGKRSWLKJMLIHCBf\P\frgtsjI]nof]ruvy{~z}Oegk\YSSVWUZROGJKLKHONPNLKMMOJJMLNNSOQNMLNONRLJPLMNJIMOQNPTURKJKSSVVSQQYNQRRQMSVZNKOKQRQ~w~|=yz}zv]EGMTZeNM_8=AEEFIGKIIKJI|@AC>{DOhfkhZ\`"{Y\W`{mst{3-?/*'.psywQ4.7Uk/NB;Shc\bsžкͩ`ų灎ԀöԶ񺴿Ɗ͸ᅄęk5/S.6iZUW[k"[XXe^OJFHL;6X\Po:G*f]hb8cC675:LR~}~}~}~~~}~}~}~}}~}}}~}}~}~~"یݾǴsdfns_CO{lo8<<<;@FAAuoprsig[\11212/5a@;E\ck]}3@Qdlef7xttwzuwyyECA><=:<>8:887?@<<9751223ReybnbikjriojdR?EFCEMLJY.015394533882343aps778:u:45@@@CEP]_g̲l^]^"sp`gm\[_c^qfhlj:B0)L3+$GQnT5/Rp1I6/AU\^h׳ɓIEkؽ;̀ʾ춮ƍ񀃄g60S,1b[ZW^i"aYXa[NEEGPC9<2JbFTcAC26r<<:ZA:9:;>~}}}~}~}~~}~}~}~}}}~}~}~~~"΁ױﺪĸd_hqzi=?BBxtttyujiX_352523^NE>BXsxƂ4CX`lhj7:ylxwsqupAA>9=@>;:89387566:<>A;2676664677=:85.6887:;;;>97132464:wsv9@9<::D?8595=;92::<;=C<:899:5789=972:797541577:96689:66<;;976566.:8;yea6:?;=?>57748;>96489::67620.qqgjTcgmokfkmjjhV@H763mnl678wx:;9<>D}qŖ"ȿ뿢ؠ㸷UfaZsTSyliwselvGCnv|GOMNMQVRKLMJJiTa_ȇDYotoprv}vxzyxzyf[WUTSTQOKLLMLNNKNMOMOILJILMMLILLKKKJKIIPOOOMGOMPZWVPNOSRTRRWURMLLPLMROQTSPN{{}z{}~}|zhMUIPTR[LcDDACEHNNMMRVNJJABBCJPSQWle\]`ȸcfedwww\|~ \hijklh`)@&+J/,BjvNHa\:("3O[]iûí퍣[alͿ¼̀ǽĭؾ¾郙r|]7111-]ix`PW".0/2nVGHE?8FJLCD>OOCH.27?A@<7aWdUN~}}}~}~}}||}~~~}~}}}~}~}}}~~~}}~}}}~~~~~"뎑󹟗ȫҤy_bqxiQoI7479::;77<@=>6::;67878463468534440:;;668:77697:8156852779tc-3:9=<8<0732;:A779=<:;24500/7mim_cliiv|okloaaH?>GEPCJU147<303438=:58>9643379;2968>?;Ghe"ˢȷǀŹWR[qcgwckzv^^brl`i{fF7BGOmhCgejijryv5454/QIFgmm̿/qtq9=99567<75565365552:090369:9:977548698854374709820*488:<@96287:887;;<;:875:51/2okmcSebvoCynqro`Z@EDGI?KO083b..1135{u689965,498/6?87;:XbA241C<)CTY`isт󑞭ƻĮ􁆔բgccWguhG߃ȀƼ¸ö܂ưP631b`_ac^ZP"Web9LUTQA:;9616G:660QKHM ~~~~~~~}~}~}~}~}}}~}~}~~~}~}}~~~"˂s`doxqEG=o8<:;?@EMZ~ixYQ_fhv|sp42`PLeuKȭʍ0?Ycwpk6:6oqtrwzrl@=z<<<><13459:@7522456568:564B44<=9847564365676506546>6./)59:69=5169598?9>?=89845844/=zanS^dlgnwr\xxFC=GK@JT-1/1233648zn/988gq46:799=995>BDQWK޲ց룅ǻYd^qo]\ep}rZ`auxk_j}WU6pBGHLNQZdhxjvFHpOSiiP׉AVt}vr7<DAFKOMKINJJKEwAACBCENNMMSXcu{trj]"cxnprjwgailc_28aJ:2VeF*%4H?V'*/DA25;754WLJCG~~~~~~~~}~}~~}~~~}~~~}~~}~}~}}~}}~~~"󆝫㞴pZfvsIGyl6;;?BDGNaGVLYX`cvm5^ELetΓ2;68726939<7563669:8982552.7678;656255<43/44:7;8<<88>;<==:==>:818755414pgld[ehjknqrtzxGBH=;GIMPdd/2121465:q5858oq8:9677<:;9V$//-,(&(.;4GA%.I[^ialo|懤担㰜ۿs^\]copȀ÷û̌ރ~l7d]ahaY_4^"RO??fZUSULH@CI?/EE8qq:;=ADK^pUu^]`[an]EoZCB`zǚ2B_^hnnkwonmpsturm=A<<=;96273:4iZeimmecfebktu~Fk:?@QNRW423522356u~p87667:>:;899;:<;=DHGUt"žo``szxupihkg`YY_km|eiQNpsAHOQOW{_umtntyUoMMcesmHhzlzyxxy|yvabVPQOOSOLMNKKMKLHKMRLMOLKIMRKKKLLLSMPMNMMKRMKNNMMNJA??ALLNPRRRQSSSVY[^_UQNOVQTUwv}~OXkALN\_hnAACGHLMLMNJE@;=BAEILMSONPRdvqzeV"fmooy[hpf]b_N>+"0:;+)-,*)##+'$ #1Glmaqѻּǰs\ajoppû􁇌ĶƀϿøɼײ՟ۂƹǷmb6jccec[g5a"SRKVK7<=FNjX 0A<.6YhThn`dmqogWI~}}~~}~~}~~}~~}}~}~~~}~}}}~~~~"ȩ|llw~`l3pq;<=EMN^ubU[T\\Ya@KeMH^l•o7HY[ckpsvmmjilrtq9==qlsv::166877<9;369<;A93897976:8243349<655648=64mxo79=>;:?:99:>?>BF:4635078ncWkj}jhfgmfn~tK:HUTU`371342357ws9=;7t:;9:7:9=99;>DU^wǷƎ钴偀øxxzwpgii`[Y\eprzilGspAJPTT[}hpmppwqj|SllUP]mplǛx~skXw}{||{qw{Qa]OQNRNONLNMMFMSSKQLGLNOQKKMMLKNNMMNMILQMILNMMLCOZbjy>DBGKLNNOMLG@]kbqѽИりܹlofT`np`Xȳ򅑆枷Ż˹ŀҷDzӺצi큜₢ùwhZfla\b``lpp"WG^uK.Z?^g~QqN4?h=+[Qhm::elowxkaU~~}}~}~~}~~}~~~}~}}}~}~~}~}}}~}~}}~~~~~~~~~"Ӯη͆߱}wmmv}[C'x<<=>FXj^hmJya^Y[ZVS_14ruYBAH`شɾaBUY`[[nvwfbghmqqs;8>|p<:<=468886;268618=>9486899=7346:8778863;78297786ekne77>>;<>@488=::?A=576606;mahwomfkkunlmxud>AUW\p434213863vvc68:st<;79799<::>EHoj"戙ⷱրyzwrsy|rkaYOcux~jg|koho5m;GNPV^on[y_onotskl?n}Wjq;s>@lZ_~~~~}~}~~}~~~}~~~}}}~}~}~}~~}~}}}~~~}}~}}~~~~ ~~"Ʌ۞ujdhy@)568==FekahRwmYR\`-.cba^eaPDDXd|¥^\PZcdacijommrjnpo9=>FD?>>BB:8456167878;9898866889957757<84=8>77766753679qgjh4/488069;657528<<868507ws5iar]jfmnnmnmtkeA>VV`g0/2/36533it_6:97889.;678:;<@HG~ͧ"ꈙئˤ􈒆逃cduvggjr}|iYQLU_hoycdsgqT15?KSRWrauiikk58wy|}lNIQdop}dy}z}LbedUVUTSPKNMPOKNMMMORNMNKLMNPLKLJMLKLPMKRJMJMNLKLLKMLJ?GKOOOQOPMNONNRT[TKNOPWW{{|hN?F\e|=@HINPMPOOHE>@CC52;}8kkl`hdmwmqpoV{냏d@DIBBNKNMKMPTdqn"eoqnxyywtj7+#2- '76'%(&-"!$2C[43vܣدعbmXVgy½ぉ򁍍ʹľĀйʼýǻðʼ@\yPqꉖ폟ų΋dheWY]dh`ZW@"LiAD?>}eNSSP}LW[M^jfgkdzH@rVXc~}~}~~}~~~}~}}}~}}~}~~}~}}}~}}~~~~~"ݲptqeg||9Xa8?AAcNMvKD@jkgikqk^\bdXCJ[aqybMlxZ`gc``Zcmkpvjge24py|96<<5=@;877788:DB82;758643=9:369<458:9:<=8775536578qrna6343555:7534462/,//7564szq8molYfrqwlurv兏;FHFZ^./395466uzne38328:7885229==DHNKwŝͼ"ȳ܂ѧqeTc{l_mp^[o}zvVZl}nv@fyLPOVvTQsWQK~vv{~~|~mOUbepjtp^nzv||tqBFQNTTPTSLILMMNMOVSLHOJIPOKIOL PLJKNKKMPMKMMLOLLKLIyDBFKLHEJKLLKHNNLKPLNJOPXxxraln|U2R^dpv=ADLNMLPGD:=EDADIMLHKMLTfsdҗXyphrx~my}kϣ;4#!! 22 )-)9LG6:'Cepmˏ훷胅٪Ҵ`j_ftû牔ѻȿ̿źþŸޱD3nGHFFCwlp\WWONNZfWbyslufqEs`AI\~~~}}~~}~~}~~}}}~}~}}}~}~~}~}~}}~~"샽ۺ||mctz:8777599JJLJ~IMLHNMIMMMOOPRY|~}v{|`klkdf7Hbh|:=@EKKKLQHA@xw;AHJQMIMMLQX\UWrmtzn`̰{z{`hq>?CJe4CSQ)4Oej]R2E"2>N`jíٌﶖհ_rjt{ϼ怇څ¾¼Ǿŷ⚵þ8868pD}ξ򗛇xVojdcea/\PJL"F_DIKCBth_\ZQTZMF^`com[|sQ-86664547864789767759:997656777i654ov@9546;6658896>:8988<=|ttnyrbZehgpqt|L?AS[0./455459q|s651i548;<988;9::9CDI}߹"Ʈ궲dTd_lopлmmNiKR`|NP{Ryjo99;x~|wmjVKRcgzjr{R{toxvxFMMNJKNMOPOMMNTLHJMMJJJMKLNNKLLMNMKMMNMLMNOQQPNLKLMLLL>::QQMLLPLMMNOPJMMKMOPUYϵtvbinis8FPov;=@FHKMMQLE;z>He[0242598vvw~>863em678=9:>=:998=@Frո¦ǻ̳۴jr]~dNOdopj\jwemSg@LUsIWM{Y{nfq=<<<=A{ztn]MZcjo{[Houxq{RILLNMLOSMMPLINLLLGHMLHMLNOMHMMLLKLJLKMOPOORMMOKLKOKLJ@tz=ACJRMOMOONROPONNNMORRU]ٴ9w{fbofr9ERow=@GFKNMZTK=mr>DHNJLOOOMNNMLSԂs"zljūrvnlcet`dnAH6.#; Gb^^X;.61<=g݂ʂԏþ~b_fqmhΝлߛƼǽǀƽʾξⷻD086wMۺ̀ûWDjmhgca[ZZOP"NV]T]ZjwDB{ski_aJD<6G;Bo^[MPcy~~~}~~~}~}~~~~}~}}}~~~}~}}~}~}}~}~}}~}}~"ܿ˥ґzp\_s|E^:HWrGQBsib15745699d[]b[MK[br㜜v:cxeehhge\Yspodggp{|p,/2:=725=89=<=9605568;<=;;:788656466:;=:5579:88767:9886dm69;;546:8:89<619;B<;47C}vvwtvi_12oqtrxBEM^K21528678nrzFJ]ٽ׳"ڷňе|\WX_XtqsbPbcfhWx|bjGZ=N\RVDtdk7:;9;<<=zzzwkTMYfyǔ}XCu{oy}{}EJNSRHJNUKIMLMMNILKLMNMNMPQM KKLNMNKLNMJIMMMOPOMJAnq8=@GOSQPOONPSOMPLMLQQS]4<|yygh_nXpFXsv@AHGLKKNWXOBCCGPNKMQXWPLOHLVXvö\ml˶jp]Ā.*,56D /* Wnmn\4(95#?aRp֏؂ؑꉊ̽zXZfwqƬõľǹ¿ʾ¼مڷkF563aEGɀSll_bca_-ZQI"T\]XVNOaED~okkeZWeQT8A:]UY\s~~~~~}~~}}}~}~~~~}~}}~}~~} ~~|}~}}}~}~"ٽڟᵡ񭒿pcppCj?RmV_Fmd+/477m778oebaYU\`fq֡P2Umqkikrzoblnrjd5u}q6446=C502699>:;7335975:7:;9864775320;79:<9768=778692759rop899<:99;:889;959<;:96:xxuuvr[V34jmsoreٚۗÆBAS`[115493255x{?77C>7=9<89:A>?;<<>DMl"̿΃耭Y\|f[j|_`asqwjEgAVl_`Cih39;<:v?=<}|yrcQO`hl~|F8fu{~~NMLMOVYHDJOOINJMMMKKMLJNLNONMLLMNMKJLTNLLQNLLLMJMPMRJMKIwx>?CKVXRQPNMNPPNRMGLQRV|;=|y}zTj__y}OCLs~?BHHKIINOSIIUOHSPNIMR]SQOPJIS[p]]"spmnkͷdoiȀZPO04H;W_ ,Xnmzb4@`@fDJj]ˍށ镟𿃐¯hMkaoȔϼÿļ϶¿Ž܇¼Ⱥ適]61/[KNЂɼӒ¾\qkeccdh/2RK"Nd_YULEN[euyA@>{na\nhN/::aTeiq~~~~~}~~}}~}~~~}~~}~}}}~}}}~}~~} ~~~}~}}}~"꩔ܱ섕w`=d?OeKURukp,4:65e033`kjdVR\bq̨_cpmieijkgZdpsnj5]o535:>?@60.548?4:73665568936267:721344747898777:9766768577em879946>9989:>=6577821qzrsqb}hU005pvlv}KʅAKOfd43652325:=85A@6:8=999==>A=:?DLn"􊑂Ħ怦]ip[fu\{okDmCPdR`Zdu7?C?=s:@A~zr_SV_f{^ptwuzwqotLMJORUWXLCBKMNTKMMMNLLLMPQMNNNMNNM(LJKNRMLNOMKLMNMMMKMLMKH}|Wcl]]ODWm|@AEFGLLNURLHWVMTONKNORPQTPILU`nǶb_sxloŨdh]`XO-oiWlIq/ .EILV;"EhosîҊςɀƇŷ~\pkqvʴǼ¼Ā·¾ꌚĽϿƼ񇎁b;90._OLy΀̥Ƌľ¾oYtplfekm42QP"`h`XSZ^WU[X^r{v:@taV^oxlLU362Vgxqw~}}}~~ ~~}~~~~~}}~}~~~}~~~}~}}~}}~}~~~}~~}~}}}~"ìչ󇣝݄ɺar~sg;^:879:<<9477235u|wpvl[zee7/3orqx󍎏ж9GUgg;575152/9B7588558:86398=;9<>AwuhUKNf~Ņ\ztw{u<<;x{MX`PSROPPU\\NKBFKLMKNOONKMJLNOSRPOPNPOMMJLNMNONKKHONOMMJGILMK>8B@DGPUNPOOOPONNMHLNLMRw;6<~˿e_]L?]lGBDGHPNLR[LGNOMNONJHHKLSXUMQTZْy[c"ãi[_YˀS`H4BEIRhU2:~rq68<8879=>?74230138:8405457436799785-3557<8947:9342442868789>;=76;45?887;983279:snwth[Uiddsnkvkwwq҂=OUei475755466@142557::85;:3:H?A@EMI&̴ֶѼ쀀yafdp}oNvId|rGjFnQdZjNxmw;;=yu8DKWȪ"пϷꁐ߀yuYj\We}[_zpmGnVl`Wyjhmq;~ue7@vumhkvuxaVLorqqyz}AJOMTSTXUUQWXSKFEROMKJMNNORKPJIKMLLOOJMLHJKMMOLLNLGNPRLONMRSONNMJIOOQMMNLLQPVQMOSRQS][syz@:xjl[Bas{}ADEKJDKMZOMHJLLT\QLJGLKM-)*TU^h"]Z^[lnebɽ71DDM-)'+))498BIY=SolZcܥ떥ׅĸ]emdœłÿŀӿɽúȺۂnhmFA^@iޕ򶴍ƵǼdž콝L\ieS\_ge]Y^"^]^`]fkaXNGWbgdd`/a\Ve23PR09933moy~~ ~}}~~~~}~}~~}~~}~}}~}}}~}~~}~}~}}}~~}~"푋۝Ɠ߶z||pkbCn{opklmpmj3420688ri7:975jhk76=:64783366627:785/436668;:<985564550.35045;65775:167968556469;:7=;8=9::Hdge5973.ciqput@3,1227=?<99=;;5DK˫"ʶ²湀m^ja\x`\YowtmHlFz\wkLfmr{>=}wx}wxwjU|~cuRHugplu~}~@EIILORTY[VSRRTOMMPPKKLMNLPRMMKFMPSOOONNPLLKMOKJMMKKMMOKMKLQOLQLMLOOPMILNONPTRQORQORR\b|{?;gu\NAa}zEKKIIUNGIKLOVbUIGJLNJ%'()U_ٳ^ga"ca_³bfmkli($XqJ?85C89:9>ADJ2Jcj_oڌћпÏmmjV停ɾӄ吜¿ƀĹǸǽѺ灀_>pal;Y܍Ӷ撶ĸνȂʠIarg0;5]jjX]"]WV]_]_``^Z_iiX\[12bbk4c\\1367:9uj~~~~~ ~~}~~~~}~~}~~~~}~}}~}}}~}}}~}~~}~~}~}~ ~~}}~ "ۦڥů󁗻ᰟxkf`EN>AOnx9Qbd333oljbhhovlmsrxĭH/olnmmqllj37541778j;<:96cgm7:;9;A?;758165798743663779<8::;873445556876;9;<6673135:95658737896:=9;995:zinwsoY`^^eejkmnmu~⊪؁ARnfcg591Zhnohnu@8132/4;FE<::9775CEJPζ"悆관nmYXpqMx\oո}jknOSAWZp~Caen>>;yy}yzz~uoxwxáYcN:pkux{{~@DLJFMQVY__XWORRPRZWRMJMKONOOMMMOMPPSOOMINNOONLMMOQPNOPLMLNPJKOMLLMTRKKIMPOOOSPPSQPNPNT}~Zps:Ef{xHOIYPHIKLNSf]GEILPMI%*TVcr}}gl^"_``cchlgdd3@f\K[qF+C-HC>DCAL&-Qe`kɘ先־ùzfXJ͸݈݈ǀ½żǾƥкc8JWbN`ٿȻ¿ͳTVzj7@1AZaZV"\b][b`aa`ig_kpf_Z/24klg^`/156:?:r~~~~~~~}}}~~~}~~~~}~}~}}}~}~~~}~~~}~~}~"Ɗή֡nwhbeW~M6b{~AP^h58njjfce]hpqqtzv˟׊Fajnlprrqlai36432687;=<<:6778>:9;@C==676656588251678=;@=>>25;876766687<879<>:6567<55661547367::997z}f[knk^U\.eihnmmet{u׋>Qumnrkmbdci5_e??854115:FXB<884539@FGNdׯŪɽé􃇇̨wn{_}nRiab~·obamdtJ=l~Iacq>@xtwz|~tx{tnp|ŢvYItqpv~|xFNMLOOQPV\][WQQOPVSQS[`TQJKLONMINQLLFOSRUQRNPSMPTOPOPOOLNMMKLMLOMNKMOOMKKGLOPNONPNOQUQOQRB~|}qw`fcdpQB\|zQc\PLKKMOSmySJFILLFLUXXiÞffV~"``a]gomdc=VfXKZ6C1CPLGMNRg@L>ؤɸ˽½Ŷ縉rl47(7>@N\"che_aab_^b_TTioid_0254bUW^5;;=:n~~~~~~~~}}}~~}~~~~}~}~}~|}~}}~}}~"ѩʂ༦Ěή鈄xikspNjDU^l8moghggh4sxutsw֞oanyvpnsrqlt<=;:8968687666899:=:<<;75;;;:779787;:756794:786:69468685445786887:zq\Wlk^a]W_hoksnjfvzJ}ؗAOnekqlcUfp6341;75523338La;87767;?EFIWi׎ʰ"ʱѷȂ䶚wvbe[ujziyj`i|TmKeg{Azztwy|A|{}wV{Ɠ\qrw{|{}||O\UQOMHJQUZ_WUNKQSSQLTVPQPMJPNMJNPOMNTSPOROORTSQRPPPMOPNONMLLKJJLHKJKLNIKHNSNQNMKMNQPONOU~vv~uKlbVucGNttOORRYQMJGLMORv{JFGIHHMRWWaoten"v~a]\bnuaxACK0<*5+N?CFJMXUOV^VRU^izy㏧ԕöUU~lȷ뉝ÿ̀Ƚº¾֧상R9/.eKIij󊎄´ɽƾh^d6;][`G9R"iiicaffa[ZUSLO^^he,+/b`PMV5:B9XHgl~~~~~~~~~}}}~}~}~~~}~} ~~~}~}~"Ī톉д䷒n{}xrpppmaWWj{zoN_i2emdajkk6qssw}Նgavpulopqpmm?B>77445:BA>B=747=976;88=z|z<853975148=89;899:5;;>>>;957648987984/m?868587655635698627899wuddhg[a]-^gljsnhnwїe?]Tnnje\et;434634487388@\8787::;=?DGN_ܴ"Įޱކ⩅vham_c}w|wpijr}{hYZd}m`r\du:t~toyz}@uXĴ{Qxuw|pysvrrxR\WQPKFGLWcWTSOPQRPONRNLRPOKINOPMNQSKLOLOPTRVQPPOOOMNOMMIIKKJF?~HEFJKNLMNLNJJLNNMJNNORH}y||lbVxh?``~RMMNOIKGJKGOQ[eFHJIIJMQSVagp͓`qdi~"xsd]Z]npŀv778878=8688:wy>?:6:841/6?:;<<;6@?D?B@CCmbxyuryy|z}BKV]UUMMLLMS[\TNPQPNMPMJORPRTROOMMLHIROQPQRLTT[QROPLNQNKLKIKJJHC>|>=BMLJLNMMIMOMLMLMNLLTUQQ{z}~ca]ǧGLvIJKKKJKHOOMOPFJMJHHKLR\]elcs̜"p~ah^_ZtǀNYkW74::EUPC>GRTJPKgZPPVwࣝぇevf쀈؀¹׈ϺݻX774[Pxַ˹Ǻ݈_l>leG]U"Yepc[be_UUNBJvCM03/00fbSPWasxRF~~}~~}~~}~~~~~}~}~}}~}}~} ~~~}~ }~~~~~~"‚ʾĺɯuqx|{sifjxݑGI14oskd`i5:;sttyDj䙗Is`fswmnnpnpv=DF>=?;<86<;==8753779<689;986q~=p962229?;:<<@9;<><=6:98533464757734ux46;76485557751;5=8652-2bqt^Ycb_ej54nuvu~WߔubNygobX\jqut7-2579779346;8<<:899:?DC?Vi"޽ӭڋĮsyŮ{ϕz|wo]T\xcFS7>~vnu=BDIPmxCxitxx{zz||UbgXZXPNKJPRTSNNLLONMMILPSLJMXPLJLKMSRPPPTOPNPMOKO^MGHLKLGEB<:uzy?~~~~~}}}~~}~~~}~~~~~}~}}~}~}}}~}~~}~~~~}}~}~~"֑ԟศox~~vuqŒHF(1mpmk5558?B;s:;E݆Z2zifjqmplhpro8@DCBA><;::>:9;32467856777<:99:;@=8440-68588;;8;?>:987986568:45771557tv49<87787553954:<>8451.5fkpc\cac88:4ssvu}Vlmsyeikvu}744667664479:;:>;:95;AB@ER]w񳑟"ᵣ풕Υbqylgrb}c~ݏx{{nlrfR\1<}w8?BHORK;=JYq`L/jiyzuq~{z|yPhlheaYSNLLPPOQMMNONIHHLMOSNMQTVYTONMKHMNLOLOPZPSSPLJLMQPNNLJKHJHA;>=5yXf^\pfsMDJKKKJLNJLPMNMMNMPSUZZjzp^]toee\\g̰Ub|8:dKB>D2FBEC@HOI>@KNw=o|kաݪ탇Pn`N炐¹Ǽȱ旷ȼżۼခ댨I]725mTKųŸbiiG6INNP"\[bEJT_\7;maSSPGU`1.-/o\L@_+-<~~~~~~}}}~~}~}~~~}~}}~}~}~~~}}~}~~~~~~"ʈۼ…಑}}r{|xvxrbHQ)1j65;655;@Asg?EPUpprttysjhktu?CEEB@=:93:;8::364607755534>876;=::753358<:8;9:::;;8:9471:86:67875666nl48??;9746613679::81265mjmhjc_`gwn66pruw|=׎轔𪘉{~rwhferp>:56886425789=?>=;;87;AA@CO]r͙"̯̍櫃Ȭюʀdhdd`txȦsw}yvvh`_u9<=:@@FIOUU|BEMybWozzsz~{|{XknndZWTPHLPPRTPSRRKMMJMRMPUOOQQPNNLMMLMNQNLTPRVPLNLMKKOHOOHJJMG@>AA>}@FQRMNOLMNLMONMJJMGJTS~>;x}Rd]^ח}mn|RQNOSRIGHKLNMPTSOMMLLPRQS[dy|u|s"i]b{seie[ab^xaDCC//+)C=GbgZYejK:;+[qL^ܯՇ\9^̿އĽҴڋý߷HU947mmN䊥ǿŸ˿[^fV>;@O]"dYV8@CA>?=8;6:;766788;6886403357768:89;7/0487:99498;@<;>;77678889;875864hdf7:@::96535459;@96544;znnlikcehlkilppyx~Jĥ߭Zq|k22Yg8768?J?8247899;??B;;:9;?CACHZq밓"򱆑ҹߌ]^woludgllle]osfrrt~tqrIqB<=?@DDIJLwHT`kn_s{zzrpy~U^faVVVSRKMOQSRTMNMNQPONMIIIKMKLLNMMKOJOQPPONMKOMKLNMJMOHD?A=;|}}@JSLMMJKNQMLNOQLLMNRW~x}|}Q^_^{>^BDMMPQQphPEJKMPONSSS8MMLMRUURRcl{{udi}aaiii[j`SteHRB!8/:4;GI29PQ+FBD3MWF~ھۧۀ莢g7F_Ľɾꉏƽ똪ͺ̹񄫎T:87oadS틅񃖰IJ³`KYfT>0Xx"qUT-U~~~~~~~~~~~}}}~~~}~}~~~~}~}}}~}~~~~}~~}}~~"΂߽ܺͬΎs{~x|ww{vnPY143lpr;><B@?=><9:;:9438>;977;<666767577;8:?9840269<874779=::<>:89;5:<:988686fja56;C;=5755366:==:4245ksjfngnmdcgpg`fkpwy̯q}{o2mihp66:Tcu<37889:ABC<9:97>A?EHUlȏҫ"ª̛Ǖcvr^Xfmx󔋦ss}pr~ZMu?>;zDHJN~|K]I7itv~zxyx~~NV]ZYUUTQOONNMLQUPOOLMONOQQPTPMKOKMQMNNMMMOOMLGLNLLJKILLLMPMOMMLIG@>=r~@>GRMRKKJNNMJNQPPNOQR~~z}`~u^}ALNSelNIJLNNMTUUOLLMRXVTV^h}Ʉd"ႃ}}mȱpta][_|BLL3H553GSs`BPbQ.GBIjzԈӎгʧ˸އgk~]냔ŽǾ¹ſٴؤ[u;gfa\THQہȘȽļhO`llT8`"vYSCJLNHTiygXENirm7d\]{S&%<7<>;9868769886767979::99;74/33578865655;?8=A86986784699nnrf3384;>:=7877467;@;;6212co`a`_aoihavgbglqypeȾޘ\sfpo}88>f=<3D46?:899<==;99::=>8AGPo쉲א򄁙üŀk[oo~faX[y|{oяurs[JT`m9<=|DBFKO~y|H}CCskr{{yyvvwWaa]\YWSMOPNPSOPNJMMLMOQNONOTPNLNNNQNNMOPPONNNLMLHIKHKMHHLLMMKHKMI~{?AA8FMMTNOMNMMKOQOSQPPN}{~w^_K~~MOSrBSMRHILKIIOQQPMJLRVTRVRcyxqq"Ხmt|rfqrZ[bFBEdDS-+CZS19rkm*EEgƼ儕ܾ䉧jWp튢Ľ÷ʼýſ考ǍitAif~MR:"*JHLKIIEMNLKGMTVSTSVTrϗxe]ly{qrrdkqUNX{WSOPPFwBKNI;3>LCB/9f{}>P\N||ųdʼƹ耉鋪hBYͿƾþƀǽþ섄ඹhwm_\OLTR;|ޭƶcUFgQ3%"=<<:66=?9@:6887796::6378;:@?8:78<:99:689896!33.4109=75:5676556:7toV+2936621257{4657oppgcN/]_mkxc\fpmilnx޸”RlL@_ps:DVL82639;=5678508=?@I[^{Ȟˡ녝ɳ넋鼅|paXXlvy[\hnlfzʿvx{gaq{<9;BEKKKL~M^ԉHHqsryvyz|}~bfc\[^aUPLOTQSNLNMKMOMPMLNRNMIPSNPOMPNMKMMOMKPNKNLLIKMKKOQKLLIKOPQMCEMHKKJKLLLNSRPRTVSRNtuz{~{ףĪl-ENLA8RLNMbcbWZF1iwc~~}~~~}}~}~~~~}~~}~}}}~}~}~}~~~~~~~}}}"T瀃˛|{piVc`16888944==<8}VQ_hooknuvnejyG@@?:509:;=;9:7:8=9;=;57;=@><;:78:>=9:8:9:878543/1573639:624/2:89m,.3;8274-25;5498406rmd5644_]4492kXTYeekknxD֩jqhLAJcJm<9==0>KD24:=A98<<869;>ED?9AGKJaĸʼ葧ƶĸ뭐q\`qу\_^eab[xxeals;=<;>BBGPRMHy}Jo}Iou{}zz|}eca]\_bVRKOPPPONNLLJPMNOOORRPOOPOONMNONLMMPNLNNPOQOLLLMMPLONKFGEJMIHILLSOHJKJKJMMQVTRSXOPONNLME~n{}|Gε[mHFoYYTVzNJNISVKJHLNOJKNMKJMOT`ZRMRWdkp{F"x}ZŲ{~\uch[BFGA:AHI^`\`316tgYSj2.*L{٫Ķ郃°־fcwډοùÀƻ󁄁lkmM2gjebSNɡͽº~@I*AQF"SabYznN9"K]Oy|}NBJNN[wrdU*IAHN<~~}}}~}~~~}~}~}~}}}~}}~}~~~}~~~~"sɺŁŹ򌍗eHF_`5:zu89669@A?~{}RLyfhmqhjurqi8AGCBABC?>;26>=657679;>::<;999;;><::978:;799756-45:34;;865674267622498688238?98;9844e4246143133912QXYNofj5rz|Qڹr|nECOPh=866-79=98:<<948:;8:<>BEA<@CIUrރ кºĹж]}txŞifljd}YIVpw=>~>ABELTPIjzeFFsv|xv{}JUdc`_^a^a\OOQPJKMLLKKOOQRQRRMNNSPNONMMNMLMNMNLLNPRONNMKQNOTRMLKJIHEJKJMOLPPKKMLKMRKTXVTRRNNPPMJNMMKMFIvx}=O[ĵe^‹CL_UTWdPNKE?LDNNHJLIIHKLKHLPV_\SPTV]nwHUo"isƩs_g%@@A@DKUK\wMYTUa\B956=<87<:87995568:>A>8;;;999:989::89:<:876697;;;8?:=25657-448445966:636;:;=?::/612202101120432W]_Xbpfl7:~Y쁖Ħ[c_GGW_f:77:59636:::9644788<9>@DA@;AG\gŐ"Ѽƽn[mulopwuvz{}lwgVo}A>{}>BFGIORKfNFCswyw{{}~DPch^[_^^_[UONONOPUSMJMNPRQOOQRQPTSQOOONORPONMNOPQQOKKRNMNRPWQQJNMKKDKKMLMNSQNNMMMQPPVXTUMPINRMLMLMLKJLLKq|?AUt`lcqNMX[Y`mNLJIBIHLNLLMKKJGJJJLLUZ\UQMW[mx[O\"fy]~njgp[i33?KGA=LcEmC/1EC9Cn?I{`w˹ۙtu섟¹ĸļȾӂa<;9owpdlЛȎȻDzsTZKEZ>"0KN~jpp\Hb2X^GSc`O@DB;?MPLO/KEDG<~~}~~}}~}~~~~}~} ~~}}~}~~}~~~~~~~"«슩ßۄ`P[026756897:=Mf˫Jzelxwxtromk:CDHDGH@BA@A=;<737=:8::43.278;>=77;9667586:86:;;=:9:;=78<=:6559724575<797897889><;;77335/3,6/./313059gXdbchlq88Mqͷ귞֜rSFXR\<869865558865/:1879=:=@DAA=?CGJPNMdBrpw{x{{yK[amcgjY\XXWSOMJMTXTNMOMMJLLJMRTPSYRKLOLOPSPNOPQSPONMMLLLQPSRROMNMONKMMONRPTQPONQQOSRSSRROKMNSGNLLKLHLLQSux?APKjjfh͜k]]ghzOLHIHJJLMMMONKQGLKKLLSZ_USLSYjwscl"]lznt]NO]llo|wu*'44BB:0?AbF\&@U3;OYA|gfԺ苓ςƚϽóĿȵø·½ʶ򀎲|<=>BqYv͙Őȴ[uyY}H5"&5Q^[@@\EYIFQ;>^TM8@:5ANND>JD?7<@~ ~~~}}}~} ~~~~}~}~} ~~}}~~~~}~~~~~~"`ɪާވ|~ʲZSQ+334679<999{wP|Ş;xknwutpglr:@FFDCECBB=??<6=506:;85457::<98687789<58<:<<<689:9:=>:99=589:88778<;;;<<=?>::>B;;6634321310145454127:^accfkkntjŮK>JK^:;99:56657:;3,6097;:;;?F?@A@DWq*圍Լ⓮ʀ[xf`nrhwY]uku~~{ouQcd;D@>@BEIKNIQuvFw|zwpv{y{HTeikih_ZXRRUSJKGIQRROLPNKJKLJJOMOQRPLMOPPPSLNQPSSR2LNNLNNMONNMOIOPNMOQOQXVRTZWSUURQQTQRMPOOKKMQJHMONMLlMKxltGlhjlhtEQedvOQLKLKKKLMQVOFLFLKLIMQXeUTOT[mzy`GN[kbylsgz]PUkld\{yv?B-7<2)-F`Uey%/1=@IpIKxiS{ҵއҼ퇋b󅦵»¸ĺ̽õϢ@;>>=6=?=?>>B=<7;855562721554489463=c_cc`jlww}Y𾵥JAAM\w<7:96<658@=63447699;9:A<<;@FIILJG{Ttww|xywy||zJQci_ce\WTNR^olLILPUSQRTPMIMLMMMLONMOPNPTNNOLLMNPQO%NSNOPNNMMMLMJONNNPTSTTURZbWTTWSQRPSPONyMKOJIOONONOLLIIv|A|sjca^zvw:N\itSLMLKPIKMYWPKIJJINLNPT\RPQVbjuYbCR`Wji\i}jd|VJ[^\Xr~yv@8@#701+%\DIm)'28=OZq{z±熖G}a뇣Ǡžν¾¼ƽ¾ܫqC;??=@D~~~~~~}~}~~~}~}~}}~~}}}~~~}~"ʂ̨Ӻey}{pAZa487987:9963u}sϪˍTqxvtrtogflp:?AA@A@>98=A[m90233:9;@;95789886589758<;9:98:;87865975953665789589899<<:?=>;<>>==>?=;656455665665355476526XZaXcdqrvy㖕ĤKMHKax<<8779;57>D:3577836<@>@BB=@ES^ͱ"ѶᰟȔ⃎Ā^`xxgu`p]wwiÓg~}wpnOjm<@==@EJLLIC~~glotu{~{|{}GT^dhgbaVRUX}RJNQQQPRVONKNOPPNNOPNOOPTTNNOMLMNPQMIPOLMLMMKKMOQLNONMOSTQRRTSRSUSRQRQPPMMKNONLIJLNNRPLNMKEF{~toegfVi5MW\uQPLJJLJFM[fQJJLLOMNPUYZUTQSagshn|"XzggsXi{jZvzQTSRXcl}zLJ-+6//"(JD4@:=AMchzbSUέĿɐޅPc\H򆛤ЧĄÀƾ͹Ͽſ׿¸D@;CHEkmeP㛭ͶMgi]#$# AAdE=&787?I6(7KC9,e]dlDCt=8=@EF~~~~}}}~~}|}}}~}~~}~}~~}~~~~}~~}~"剂Պۡax|gPNYZa7;;9:=:<;txvNFg?<=?@==BSD65375647886467::778986759879;36875673874545785749:<;987;:=;7?;77:<;:62526776556517344030^YQXYh\]iswƲݧtU_VVo@;=8784596876455=>?ABEA@ENZ͡ـ䰭ˀ턠dWrejtdxxj{wsx|l|elF\oos==>@EKLRPrxL}ޢYl>t{wvz|S^`geh_c`VRTcxcPOORNONPPNLNQRWUPPQOLLONQPJLRMMMNOPNLMNKMLMMJILONQNQOONPORPIQQNMOQPPOKNLOPPNIGLONUQMLIJD}}|~Xvllfglc}BJhhvRQQJIKDFO[kRMLLLNNLOQUYYWVO[dpߧyVhxr\mRUk^rg}v XWikSVrrKZ1!+*57A8??R^UJ]NIUxO͑úʳ󄋉]__W~扚̀ʽȻ´ÿƼчbEA:;HGsldT`ۓβdheV:#"$MXTN8?+6@CK5T87CB;8;9435:@>7272:;?B.CHUaޘüɌȃ̧oaWZx_eygw}^}|]ejE[pqz?@ELMM{:;Kyʲg]uww}ty{uyWd`]\WW\XWRQNNPMLMMMNNNLMJEMSUSPOOLLMOQURKKKMNLHILKKNLLNNNOKLMNLPONLMMIMKONOOMLKONOPPNKNLOQONMHJMLNRQPNKFvfTVjmst=78:wy|ArݷLequwplkjden:?@A=;:<=A<:6753546;:78765599;96169;874;;<95379:65556469>=8345550427756825:<:987541755333668465984:<:6872UU_\]VZ\Xbuqy~M񍓈ӷ؝JJHYz88:8:964369<928;46399;>??ACHP[ό"ݚ酊ջ|suqT}mgmyqw}SNiLToqz<B4g_`zkTۊ̽`\PXde"MJ=LYJA6U16BHD@?3;CA=?>u853=@D@=99 ~~~~}}~~}~}~~}~}}}~}~~}~} ~~~}~~~}~}~"F΂ఘƒTB}YVe33kg237:89;xy޷Plonqn@idjs>A=>>><>A>=::67:878899798:7;<=7369878674:640548875-5469A@85546636526367164549356968<85886?<6:888;l_U^^W*$*-fwy;Mnܴ=?Xwq:=89;443:79958?=9688;<@?ADGMaЇׯўŹ  ӀsQswZel~lrxmï׼{YJnPZv>=?@FNPPM|¡Ƭɖ_t||~W]UUW\^ZVTSQPOQTPOOPOMNQMLLOOPNLMMJLPPQNTQNIMMONNO)MOKMOTSMLNLLMLMLKOLJLLNMIMNGMMMLPIJLOMPUSOuRKKRQOLODBF@w|z?PQeVuzhl_=LzNNJLMIKKRLKNMPTSMGKJPT[VVZ]mu֑gvkh[s{|]Rfow|&16@0_d8C19:`gLH\PSTɋƲȱҼZh^ռƎžǽľƺú쀀v;C=91OFbn{򔛤˽ǻ_^TXe4"^T@@SYImC;5=?=@F?=>BHND9><5< ~~~}}~~~}}}~~}~~}}~}~~}~}~}}}~}}~~~~}~~"ׂӶאЂIAh]nrqxs348:477vp|±Lkuprijfgedsz@@>=C==@GA=9;:=<87325347::559=6537:53432874454567636567<>8645288:66654885501;57566755;<779423939:895:69meXX,XZ'*1rxwxKqݮҜ[=]mt8?979485897;27??<899;?EGMiwՊ"ڧۡހܴĜ_huaaWgYdyTjԐruͦpOJeaCFIPOQK}˱r[s}~yyRTRQTUTTRTSQQSWSOOLJKFJOPMJLMNJJIKLLMNNMPPNMMMNNMMNPMNNRTPNLLIMLLJKMKILMPRJIRJLLNOOJGMNINVRMLRMNLMPOSOQGDFDzwLWwz_Lwlffko`O}MQKILJLFNNIOMOQRNGKMPS[[Y``isڒ"ȓz]^RQjr}^i{TT; *7*9b:@A!1&-;F#JUTнϽ񍣭վsPeVW¸ǿ»¼ɲ˼􋈞mCR;3N)4k\tꅗý½ygiVO\Z"d}V@OcmO65@#!=?;>7G\F8AIMZHB5=~ ~}~~~~~~~}~~~}~}~~}~}~}}~~~} ~~~~}~~~~~"ʩݤ˿~Ceivql4/0475689vrK`quupjfigkos:97:{r6>C@<7:<>?97555354:74447588766521,58754556676445679772327655546777665064756574>=;;9/2357665523717qg`X.[]V^eqtzz}ܸ썀ƊUN\c7;7666878:8;4:;>;9:<<=?:;CJLfsٙ"Ԩ̰峋ӡk]Tr|_f{{qjç{Mim}<:BHKJMNKf^mzvt||HKJLKOMMOOPSYVOMLMMLPPRMKLKJGLMJGMPMNJMLMLKLNPMKMNOOOPRPOKLKMKIHIJJJIIOQMGLHLJLMNKOMMMUQQONPNLIIJNQLOF{wzsmfeuPjWV[|\mORLIKKKILNJNMOKOMHMPPQWXZ_dj{ޞ"ばchVtUdPW{_ZTfr07;$;@NRE=6.IC9SlS291=E/3458A+<0=NMTQB;38=~~}}~~~~}~}~~}~}}~}~}~}~~~~"Ƌู匿կ҃pB}deup887568757:xshz카{Lcortqmmhgc`oj0ffpj33;;;584:876555668:5263575864652/35::73264783/-56575741545751348;8757445665775:;>:8144.79895335336l^W,^`]gyyxœ}OT)67:66678779>;8779;?B?=>>>?GN\qל"ۼжј݂숷s]ycx럟σuL~ek}?ABCILLKLMpxң{l`ry|~|yww{vs?}}v?ABDJIJENLIJJKMPSTPKILJJJKOLKLONOQMMMLKIOQQMIIJOOONJONNQMNPJGJKKKJMNNHJKLKHLMKNMNNSPPNIONKMLLLMLLLFv|KqR`gq_^siHOQPHIHKLKLLNNLJMNLRVTRUVW\bk~מ{"kfR|Wq]YStuI820SFoo_lpJCL4JIHQSPbidܾ܇ɲŸөǞmfrρĿ¾ü޼ٵۂžμi{B=26#hK'7tqo⅘sw^nI"Yds[YSRd\QU>:?/2}yBG+=.q=FJ>5567~~~~~~~}~ }}}~~}}~~}~}~}}}~}~~~}}}~~~~ ~~}}~~~~}}~"mݼΧɪʃo{?wZ^ron6659:8879phxSqϩrQnv{yrojg1,hmjjprtrl67=;6vo54685688999;345787621.4556533<6747237566;7710-3443/468;<7668955567445777654267845424053b]_Q_dfkrwfsx䔎ɹןHO.;=855:376589<5157?<@@<1@=>AEKYuӠÅŘ˽Ԫبjw}wh`TxȄOhm|{?ADJOPPLIp}Tfjfcy}~{uls?;|~tu{usv<;DD?z??CJKLMOSQLMHJLMMOPQQOQLMLKLMWRQNOMNOOPKLNPMMHLMKIILJIJKLKKORLIJMOKKKLMOMIKLNLMLNOLKEML{}{{uasto]\dW{f|IQTOHHMHKKKMLQLJNLOP4WZSUTX[aj}ʠttaUY`sW}asH:F]H[VMc^G\0A*TOOTc^Go̶ا͛aVkĹɹлǾſĹûƶ˴ƼߺRnJ:.$$6"ORs¼Ͽķoq_JeD"o;Zlf^oh`GIEA:6@OKLI[D2flf@F<6/27~~~~~}~ }}}~~}}~~}~~}~}}~}~~~}}}~~~~~}}}~"ⶦЀ继ͅC@gdlsp9:8<=:88:uup~kMixutosoi_1isuqrssxnoqsmkoni54355467977876657682227<5;<=>@?CFIcmȲ"銛ʪ®ӡ͉jf͸bj}\vhۋˆVN|w}@BFNPQOKGzqxxsXZr~}~zxloAxqyytzy|x}sqtt;BIONLNPRSMKILNNPQNNNOQRLLMOUQONONNONSNLNNJLFJGIKJJGFBFKPONPLLIMOKKKLMIGLPJNNOMMOQMJN{u}|ywep|T]VFdn~׀wPSQLLNKGIKLKNJKGKOP4TVTTYX[eiws|g~ýinbidV}~Nq:o~uRI;;EGPD;A!)J[WNTT8KȲƭںtOWyĽôǽƴ·˽ƸϨ@ADKnC-<@V퇞õqo_]B}"5^Wiwe_nuf\4PKEHIPFJ>KD@[fd7=9C=<673667478745:>EJQMNMKLKMRMKIHPNPNONPVOJOOPNNRTuxxy?BVOcjlv^axnQTLUROGLLNLNJLJLNQSTUW_`_ojr~}vtxf]S^UX]rgbLUo9PVT8l>GF@?<6=L,?UXQPEXLËͳٻʿUYx܀ij¹̿ʀ»·̾ʿ퇌<"UILV>HQ-SR:Lºotd[RN"TKYlyhZ_q\K/(+_T>53)1JN-.=f-RFluplgijjjljcbkl530157760669:8555344551)/12445518436692296;55223045255561268;2385533545657965577MI782331210-VZX[ccegiyt}=CH̢듑ĕpam===CC=5756.;88:4668?=@CDPWo}"ѦѡыΟꈣ_ffhg{|^tmpezdVK=89=?AFLMMJHC|z{zd]wz{|}GXNz|x}}~yxyx{{<;@CHKJKIMLOPNLLJFJNNNLHMOOPMKLLOKKMKNIPPNIKMKKKILJC?;=BFOMMNMLMMNIHKKNSPJKSUaWHOOPNLQROIy~t|9AEYKocc]npQROSVOIOPPHNKKMMQPOSTW`]hnpxfڠ}vkec_igf}L}Ƹ^oLXp)>FF>DJ]D550146756:=><;97s}T{ѧMjpsqjnoltEtkmjhiecbh31hkk464279:54483257:;5326655013356315867542375765975435457863337854412265777;67;989C3e<350.62,02`b^]aefklyu?COc҆ꃈ^`vA>BAB<97283985958<0<:=EFS`dש"ٛ}i{nipzmXvj}xV\RA:8:?CILLKJHC>I`qXtw|{}Fxnwz|}{}?=@?@IMPMLOPOJKKKMJNLJDQZ3cQFOPLTTPPLw}4ACOllhNh^^f[gk䐈TQQQTONNJOJJGIPPQSHRRT_\n`{觥ד`[^_hcowsdlvsV}B8rJ>9hCBgZúǿ臕oe_hr"dU^gdPG)! *+.'8^Vdr\MQWa@E<~~ ~~~}~~~~}~~~~}~}~~}}}~~}~~}~}}}~~~~}}}~~~"ŧۋ̅ȓґjptIQG84588869>=;;<9sITאZfqu}noki8|tmlkihhce56m9p8855m78=;856425=<854597993145669456975233567757:5505756o645336:4112/55986:467:93Ip_Cr76.7.018eb[b`^oqx{vH>nےarB@BD@;:86;998889=C6699?AYR"جיʀvƏlamifuum]fXF;9@>DJLLJLLNORNLLNMKHLNKJMNONPKIHMNONONNMMMJIMNSOOKGB?=A@?GPPLNSPNHNMHMIIHLHJ]niXMTO\USNOx~hABglWmXgoseSQRSRONLHLLKJKPPU\NPUTWXnd"ݭ{]bbTZ^hfjt~hλ\zXEDzCG=K75-@KI>BCcW;vig`̽ӓᓥfi򀍍ýĶ鋏]976"a;epm@FH: ~~~~~~~}~~~~}}}~~}~}~~}~}~}~}~~}~}~~~~}}}~}~~~~~~~}}~~"߼½򂞯woTNI<5889879:;==>?BX҈Fgkqwuklinoxvjfihfdgirytpnospsq9;=624524:<7554798:626865797:776344458766653/2446pkkm21672/32056;=;819994msVGrvm847bb:9742;ADI"ʡꅐӷ΀so_Qeeub[m~ri]UE88;CHKLMMNHEJPU|pùPypv|}y}t}~~~~{psw}|~yCIMHFIKKMPRKJOOMLKMMKORNNOQMMMOMNMMLLKKMNMLHFF{y@CINNMONNPLRQMOIKKLGuRRXV|}|~{GOqce{`adbŪ۪MRSTRLIKJLKLLNUVTURPRQMRdtݲ^lyu^\apoch}fnjmmlǩPR[E8H7#0LG'?HPK>8EO-/XenƓ̼ܝĪܞzrğ򔟩¶À񐝫᷻테܅zL:O>YY`\57B;d]悊ľŭñqgddh"aR2{w]hRY8"!-8, "8nFGILA9y}WE02<~~}}~~}}~~~}~}~ }}~~}}}~~~}}~}~~~~}}}~}}}~~}~~"ʽʻ󛬯ws^}MB;898:;979:=?=F[bUţWEomrspojnsv|kkellfemu~}~sosynp887853534577965556887/5563597669755241522565643844lnom1354.267454:;;9358=gub2149q:=8nmspfdac`cgjxxzM蹹䧅>@DB<66=<=:;=?FD<3986136EMMJKMOKCT~xV{tsXRou{~~v|{~z|CEGHFFJHKKLMMKMQPMJLNHNPOKNQOOMNIILMOLMJJLLJMMLIEC}~ADKOMONMOSNPNKMJJMRLNLLRWVuwxT}ipZhqOOWXQKFKLLKMMN[WNKPLLKKLV^W"e`~dwwwxka_|rapdhijpnkkpgWTD%/A7/LX6FGOQK?<==GPknŠýؖ~ޥ󄒛¼Ļ܏ŬɂùyNM@S16EQQUKjh`iv~񁈓ƶϸeodb`"-0;8mD*J9(!%BI-!9uDACCB>>AD@PJ5@~}}}~~~~~}~}~}}}~}~~~}~~~}}~}}}~~}~~~~"ä񬍣Mbu~ocK<50469=8889=@AFh~|xϝi7jqstquq:uu|FO}moofbfikz?H91lj374::7303645564562556895535658567848431364534697566jkkhm317523965329=974269dmh\/2696987876][[T]gisyGWۉϟ~{>>CA=:6=7<:<==C>=33542445;ob\"߇î惈搿倊v[jjuk[pxwnVv{mpyloeJB:>BGMJJKLNHDP̊UC{uyANQ{{IPD;FGGNMGDCGGGIIKLMOPSNLLNLONNNLNNRPMHKLMMOQLLKKKQOMJE~zxCEMOLKNMOOKMMHHIINQJJKOQTTTVUQ|v{DKwɨfg\sPfMMWWQMFMLLINOIQLKILJGHJLOOk^k멳"dfeXXa`WqeecghjpecirnqLR@1FCQBVi@:H]fUPMHP_ъ^Rϟ|Œʺ킒Ļγ큏´ݺ遇ʈMMB=7GHAYgjdr􊉔þɴjiff"24G/tI&N'$!?gD"8^}BB?=BC=:BEvEFD~~}~~~~}~}~}}}~~}~}}~}~}~}~~}}~}~ ~}}~~~~"ʜݺ͘u̞v}lcM=5/4<>?::9;=>@KѠm?9<{sqtmlo77HmXyx{n4357?9;5.1428:=853/36647734544346660315432666229737377323641454h345358856;55738=97443625k^357g6766755cUZY^ejlx{I[怉񢮨H<;A><;8:=;<=>>A?=43146034cnceY"Ūſпؐmpbd\wZzmͅtuivmLE=DMMMKMLMIA>T՗UAED}?BVx\HGHGMHLIDFMMPPTNHFBA@BDKNMONLKJNMOLNLHLSPNKKQNINMLLKJJPRLJF@x;=BELPPLLSNMOJMMKKJLMOLLLLLRRSTWWUzztJG\f]c]QKNTQNKFJOLLOQLJLHGLJH1JEJKvabYqslf|{YwYcejlna[^ldgcF]aEBJQG7^LBNdiJYrSޗRܕ޵yܾ󀊏ź¿űꂂ셐ö瀇pCAU8J0I[rgUźߙLTeie"i;L)gHB??H&GNR/H8PDA:eM5.~~~~~}~~~~~}}~~~~~}~~}~}~}~}}~~~}~}~~}~}~~}}~ ~~~"ᯋ֦ʑxtqe\?77=@B=<::<><|A<93578?:352323::9642.hmk237612669445633-1224775310557897132442551f359247899984448955363422jd677jq=57<:7:^Uc5eiowy|}M`파̰ݵһ;8C=:877;?<==>?BB=1288020OXXSXU|"񼫾гٰǽζz]Xlcl\򘔁zlnzRIBFPQLLMLKIC~s񧇨bDHEz~~~}}AEQYPQVSMMMLSMILJKKMTSRLIF?uvy=BKPMLMMOMKNRONIKLKMPPNNMIKILNNIHKLTTLKHB{:BJGKNMLOTPJJLONMNMNMNKFKLMWTU_bWRNuNKzecw`po|IMVOLIGIOOMLMLMTNKJLLJDHFti`ZZP"̏f}tlYb|_X:XaE28T=>GLDzFSfJ[:LOڀʳч¸߉xiƷź½ɱ˿ꈆTcor7.>!1M(-SpvYLf鄎ļܢ}Zgg"pV.|HN>ARDEE061yF4qs6tUjaPIG?~}~~~~~}~~~~~}~~~}~}}~}}}~}~}}~~~}}~}}}~}~~~~}~}~~}}~~"ǣ˗ܟިٴuڮsG;=?ABA<<;<;:ઝ֑J;<:qglllkq;??p5::;877:9<:30156216743`cknthhk544644;4542.02035:6512356769624447654346669668<7423637747475964j45943r;5:=>:zj\674i9vyw=OyǴtvD;:4489?:;=CHNLE:598.54NIQORF^g"؜ڌƻr\c``\\Zyd;}jٳXMIJRSOKMLMLHzwu柊sMIF?~x~}|zEKJIOSWVSQQMNMJJLNMJKPQLIwt~{|KKKMLNTNQPOMKKKLLPNNLLJJJKKMKHLNSVOKJHECHMPOMLNMMKJMLNNMQMONTNHHHLLNXXWZaYQPJE{CETŕdibxRh衉`ONKKLNROMKO\bTONNKHDHEp]YUYM_"̠k\\{~Xx\kryv:S[P7*d5*),IGNHRBQ>0aǬȟöԿukl󍙙ǀǺcsv|553[393 P~wXyſǷ殪bZ"{m>8F>TEIYG?BFB7R998zy笜P;86looonox>A:776:76046778204563/55ia]jokkqie985633635422572467431246886441565433345574101686534557:87666956664641677=IJbԮʂrnC@976:6;9:>EQZYQE>?7b;qNKSWOIQu"ٕЋ‒Ӻ苕񖨶ξ|kg|obnڈ~ʭtRHHLMONOQQOOL~~ȉQH@:t{~EMJLPPSUWQQPKJLJLONOLHMMvu~|GIIJHMSOONMNMLJLKMMLIJGFHJJKLILMNNKJJKMKNLMMLJOMMLLLKJMMNMLNUOMMMLNLLQVc^YaY[KUSKGHDHMDjЛabhjmr×aCgmƇWRSOOPMSQMMQ^`WVRPKFIiYTXXONu"bgz]edZ}{`\]^gpQXWGDDLW@,3jiqOJJZB>{NbƗἙʸǺ쁨rvܷ򎧞żȀ䀊|?A88:;lA MHjn搫øѵNP"}UYKNC:TVLV'#()]JAI;J:h30GHF@@M~~~}~~}~~~}~}~}~}}~~}}}~}~}~~~~~"Խն؁ՀxsռfJICORPMGD?7:xU>7:rqpljgm:;997;;65866527537<753id63dfmsupif9956633213665657:74323996753239553334875972/.2455549<7:6:7577nlkl467:365>??:@<5<:536ovv:ÆϬ懱}mBDB?<6888<=AIR]]UFHx|_][\LLNcx"ձߎ埋faaljebbbk[yrx[LMHJKOPQQQPNLF?@=:;;HBLR ~~~~~}~~}~~}~}}~~}~}~ }}}~}~~~~}}~}~~~~~~~"˅Ժޑև]wݴwlv|h]^\H99@{ߣT>:8onmf`ijp<>;9:88585777;;4<98775317jqjlnjj5683433013767:75;=705437::25556644597954495221266896996ln;6447cqi437>JJG>9?:8>=@ILgrdsgYVHEGapq"ʿۑڐŻ[efvqfa_\[]xekbx`n`YVSMSUVROOMuJEA9wyx|LUUPQTVRQNOLJOPGLLOQSROKK}}z|>DHIKKNMLMPLKLJFMPOMPfPLKHFDILNOKJKJIGHIMNPNPTRNPNNNMOMHUMIJNNNOSQUUZbcYU^^{_a^kphdfTZNCut~o}N^idPKOMN8STY_VY_ljPPPb^pŸ[~g|tvfx܁wlk|y.4 5EOQ8#(1E8CC=ETOYfw؜fͺݒZohƺɺĹĪ傋yn=>7?C=;c#;IY`~q-C\P=;568:?:;8:>@89757332574hcejkkmld034604455766699432337=84654584436569339513756889:A6fh`4132o`kh447@vpow;8;>CBD@?gdlF搏ƴְBJK@>=??@>?GJcͫudZJNFDdeu"I[Ɏֳىݞ̛fOwTWo}eVXRƪfba|e|v[mhn^eldVMQP~ǀiJC?}~z{}vRURNRTQOOPMMQRHIJIPOONLJG~{yHLMQMNNMIFEGILONMMPLKLIGJKMNNKKJIHKMJJNMOSVQPONPSYMNLJHQOLQUUY_j[\^[Oardf_lq``ObN_nɦusˆLY_RLHINOSOPS`mzxݟ|eVKV`cv"bmYuZsqv^XqqXPZ>!-F+3DONA&&F6gwG4oeS񚈐VfhTac󗥥ĸɾľ؂ȹ~hq?@3-#8=TOJS^+mG:@?GAA:>Dml^>PֹI?<=@AFAERZvhbJQBT_qal"t骝ɀꡠ鿻֢p}[Sa~`U{kiYqNcvoNGwkoqeSKNTլuYKCAwz{}NVRNLMMOMMOQQNDFHJOOKKJGIJIHB:wy~LMONMNONKHFIOMPQLKKLJKMHIJKJLJKJIHKNKKIQQQSOOOMRV\RIKJHONHNT[WXVeZ\XXc}W]^njhfkzra|VUOnʻ~ƮUKHGJPPRRVZU{sohLU\fa"[tjwlThlcPxUzUjzx{x]DdH9!;[eYJ1!;a[vVCHk޹TZgfCEؐZdgӽ֓¹ɾay@AAIS>9? RS9h}[iƿȾ̿Vxο"^Z]$1(;AD>!87&5KZMAd4S[Y2=FB:.GH~ ~}}}~~~} ~~~~~~~~~}}~~~}~}~}}}~}~}}~}~}~~~ ~}}}~~~}~~~~ ~~~}~}}}~"ơȋ詍̈Դ䄍t㵓uV?65pmkjfnouyy=<:869=;65:9=<3754543400143777mjh.304535431415768752-03589832/3e/-.+.3683856:85641::;og2,//23frnh357@6nr;5y@F~q>`^pK󌒐ȶ۳C>>@CGIDVЁ񂇃pjYaDfo`i^"󢕪бݕyl`\oosybaᘯ{q{qxhn{ty}tZMQK{{ke_LjqQF@>~v{}NVUOKLLKJJLJLJDIJJMLLMKJKOIGD@~}DMLOPMMMLJIEJMMRSNKIIFHLJJGFDJIHHGJLOQJNMNNIINMOWTQOJKJIGMLOXP\SUYWinpklc\]WtRbkr㭍˨MGILNPPRVkwWZRVV{wuYefuwc"tTrfiwoii|ZlkfRMdzk83+"?YTS0A=YoneQTg{Œ{wjif\DCH_^e˸ݺ¼Ƹźۃ鈅—āXuABA??;59c)[!yamg՚ųµjjǷVRJ{𹬰"ko]8C"AB81ELC):9/0213Zpobtj3<76e65:FM_Rpmsr_l`"愠Ƭߎٗ͋ـn{|zaakouqtpsj{osyrhWLRSIHOHrЏ[LEBDwx;=~ELSSNMLKIKIHGEIKJJLNLMMKLOSJIH@CGJLNNJMOMKILIHNPRKJHDGNP@CGIHINNMILIMKHJNPOUPNPPRKLMKKLWTQTRSUVVVVеe}jvvs]gzz}NHGHQQTni\_WRUUXcnruvux•"mv\[SUcxsZye}Tl~wYe\{|RKFRD2ETbaAyp^[[ယźǻĴ⁌ӻ򆜙􉄁ɏIKcDJE?;YbfkjN@SHCYhuTcӷdb[WTRKoXʵ"w=:F=?F=47@=,BX3:1cV{`T[DH6>_g~~}~~~ ~~~~}~~~}~~}}}~}}}~}}~~}}}~}~}~}~~~}~~~~}~~~} ~}}}~~~~~~}}~}~~~}}}"о򰄓т䂎lyꗔP@EB?=upl33iqus89995688588976::7757:854457576ha1-+25542231-/22345>534848>|@DAi]nzƴˈMGALk߆đy|ztxEdo"wnӺ͸ʅ〄}z]VjdwxbpsҮ^\^yxok\KTYXUQSSXNRHRKAA}}=;{zELNMJLLJILKIEGPPKNLLNMMNMLKIHC}{CBEMLMONMOLHIKGGKNSJGEFEKOKIKKPLMKLOPOQNMOORNKIQPMORPRYUV_^~][`usdZJHTTpxSV^XYTRSPP|Vqt~St灓atg[]{plX]XW[M]OH\KJ-/GMK^mL$=K~MI|Ylom|wr_LD?@<3;JMFaVVιĽ݆Ĵℝʺ߆رfO*YzC?>TPVa|q;J_`Sp^X`yg{^`f]ZSRSNGwnbŻɍĕ"yJQ<1l~=?;9?FB:;JWT7A?wGAbV}Źɬ얦xVF_ឍ}rspR{"uIۦ߀ֆܥǁ_gYYryz{kx_ʷlsrt_Ycq|JvombUGUZYXZ_lnZQOeV>=zuvEMNMLIMMJLKLNJMMLOLLMOQMKJJJIGC}BBFNNMNPMNLGJKIEJHHHKGEBGHDDBBHHGGHPNNLLLONPMJMOPQTRLM~MPJNQOTTVVR?EXwlq{ք՝~TK`lUVZUUTTPJJIzu"ƃXa|uh[n}fst|SWYO]JAO?<:=^[VZT5?E`}jQRX_PPdwPvqxmTDA:988GSNFX\VX뇕ᄥϺƻȲ`BCZ7C]AIZseMUhbZc`chWY[YULIJEBBռ"mMjI5_kBHED?>:<;DG8oVIGIMie5262~~~~~~~~}~}~}~}~}~~~}}~~}~~~~~~} ~}}}~~~~}}~ ~~~~}}~"ؿÍི~̎PIYE9uurhppsywt;:89:776:743345454889;=2,48;98mg126955565472444/3051/,2345543/1*/2+/022476897863687mt889627oo2-e_4lp6415jhjl>yxuadyڨлҴv쁀ݹut"S݃òߧ釙eb|bif]ZnojlwzxLLIvmdWKKTYZY^z_VZz[>uy|z{y{~DINOPNLILKKLMLJHJKLMNPQLHLK=?GPOONNLKLJLLJCGEIGGEC@EFCEDCLHJMFGFIJJNOPNHMPNOLDSRSPKLB>NIHFKMÔ[9;>?bky}wv۞Uu9TUVTSTTQLIH|[ϲx`UWlwlar}mՒhU]Z^_UPLC+(JvAJJ2C4n}=B\]UZk^qadxRSL}npdSGCA>?@FTa;trn:IRVdicwq}KOTNpibRE=BIMJJLcF?gelkeħ퀓žº²ũſôzÃ[) ERE3?SDFQPQi[lav}TPPJBCII>k·"ځJ^`+7CFH4?@=;@>HO.cnF+,88l957<9872//34446855768724==;5fhjg1053651332ej32004423/21/4760/114369545:cO=8:7898mqc4rpgeih202hh7kon53dfc9961x{}u{ԎѼ򇅀ʈt"N@ꞻㅋߋVWʱWV}pleuLJLLFmaUOIIT^YaVCGj󠗾tsqQ<=~{~~vv}{{HQQNORIGKLJJLKKNOPONQTQNFFKQNNMJJGFHFCGJFEIEGFEFJKGIKHKJKPMKLRiPOSMLMPNC@@F?>s<:?Azv[rR9<9FR_oszrtFtZWUTWUNPTRRJzVlzzyvmt`l|}uW\zsT'NpqP;,6JNDMjWMKFALSIHskX@RwddcϺľίì¸ήx]}9. *;?BSD6G\bbnqqĎ~sPSTRROB?BFHEsMϷ"qxrGN*9TfFC=A>=;?EM.1N{WI6OId^9~}~~~}~}~}}~}}}~}~~~}}~}}}~~}}}~}~~~~}~~~~~~~~}}~"Ϻͷŷы­ʋ셏Ѧz˄oT<48rvwxvqponp;<9556777569336356654:;646;;=61jnh34522/2421000-01353531/0154174454976369HG7478:89sn/3nmgea]014243itjege48:99~ꂍ򸡗ƶ郤Tϝ"ecń񒛿ظ񻖟Ɍh}_a}~tyepxUzUULKIl]WSLKIMMVguvqftvdL??~{z~}GNOMMMKJKLOSLKMJKLNKKPOLMOQOME>EKOONILMJJIGGEEEGGGKIHFDBGHFMIGJJNNKFJM[VMMONPOPJNBACBDD~>?@BEswikbUE>jgtzfۚzjYVUTZYOPTXTQOQ`"枛^~gwjov_]q{gnep[qlV^H{]D:8FN@8AKL_oO?:nkcshG`rTWNPPlf[K?BEIECSwrPzqZa\c󅗢⇚ȵ̿퀋SE_FH{S F6)HDNL/QʆIYefh{EKROPMB>AEGMWIpP"ocSX.8%@IWlPJ=8=20PNWI3~}}}~~~}~}}}~}}~~}~}~}~~~~~~~~~~~~~}~~~~}}~"¯˭ԕ댑Ѥ𯅐Dž~X<6;txvsqpmqor;<662445677865732535879967=;7767mh1534243641.10-24533431-2124384;45656258;=4/38:886237>=pl^\a]31210cgpj5o8:9;@R߻u^`䆕ܸѴ"ӂxߧ֌𶦱Ȇ՞ɋ}{gVfvɽDžhgg~c\NLLnd`XSKJKHJMOQڪbLFE~|zyz|IQOOIIJKKLKOLKMJJMKKMLMNNLMLKF@@}EKLPNMMNKJIIGEGIIGBFEFFCKGJGKMLKFKLIMLIHNPMNLHINTQFBDEFCFFEGIWhj`Y|XveuzkZp{}uӍkhQZWRT\XURYYURRL|jZȬݕ _zcg_abVe\TX[zYZajiYZTqNP<:BUL6:EK_sLBp{^UbJfyjeOOSpjbUI?BFEA944vy`µ舗¸ƼmUgFKIeEZFDAKQ9EnЍNLRє7DGMHJEC=DEGKXK\PS"YLt??+**@O[^c8+;9+0:D"$B.+@CBEgK0~}~~~}~}}~}~}~}~}}~}}~ ~~~~ ~~~~~~~}~~}~~~~}}~"}£õ뗮֭ĵĩyY928lsztptrtmu>=;7774237884565646557:779;=57637k44940325841103212413057;;99542536678842477646348:;miaiqf10311dexb558;A>}}t꧰򇛁{ඣ ᡟ͡etXmRXw|yrmnqcpnzIHKJxph[SNKKGGHH뼏ȖhMDDzx~z{{}xLTUPKKJIJKJKILMKLLMLLKMMKLMPJIC<=yCHONKMKKJJJHCFGFEFIGHGDHGHHIKKIIKKLJKMMJKLJGJLLLKIKOPNFEFFHCEFHLK⟥mldpHdRqpcvvjU_TOV[[TWYVURNUr\^w|bt"wvLYrgkDNXPJNXcfW\kVR=[I27@ME8@>AFEGIQgyPMUqvaf\"BJBX48U=:L\QOV43>7027?NFl=PM;?C3-~~~}~}~}~}~}~~~}~ ~~~}~ }~~~~~~}~"ϿηҼ蚲Ը}멸h9598sytjrstpu<<;7766335573367556868::<9<67567885583114783.2131221443553268<9888556434577445640653025?;mrpzl52324hls\34:BBjwzxbĿߍؼūqaaPeoDCSA<0%BPF?M>HjIϓ隅C6EEE>=?BFKJGCGQ~g[OWQcs"@HG7AVFCFNYQ:CJfE;pj_4?wm@H>8F@3~~~~~~}~}~}~}~~~}~~~~~~}~~~~~~}}~~}}}~~}}}~"bɘ޼਍뚳˶䱦}mѡZ94767vrltp9qs;=;87454544634576564489954688uq688.,158;543./.565659;955764445<7342///6742210154/TXk:?;nyrnn5305pnwk47y>CILKIGIHJKKLHHEHKLMKHIGIGGIKMMJC}{BHNLLMLMMKKIFGGHKMMJJKIGIJJJKJJLIFHIJKJKKKIGGGILKG|PTMHEAEFKNOD||ڪ|{eimzx|Ѹz—~[xOZ]XWW\^VWVUSOOLxaz}"}dstkelfT~ds\]ocPIIOWO:F8:FLG?>DQ`|TPUi~RYX]mqt~o[PNF@@@:>mc\wvfêƿǻ삊ʄԶޖ`P,2O;?i?OX=9IJ=:;EEA<<=CHJQJIXZqEHxQ=f_Z^z[h3d9::6loowok6@worffiV̨ȝʊۢߍį"ƐĨξ솟ūViVyl^TWoˈ|jeyxtnjkq}~p^UXSNKJKKM˂ÊgQCD=u{~{=~>>GKKJJKLJJHFHFFEJLLJKKLLIGELNNMF~FLNOLJLJCJGFIKKJFGIHJNPOJIIKJILJLOLKHIGDFHIIJ|uPRMSGMLKIIOʐqZeNXxYatoyжruqdOWZUTX]`YWW[POHHhme"`pnkYzwnySVS_ollHFKN+\T8!?CND7r?BOeSpQYcsW^YYejfgtoYJMG?=A??Fed]dtqkܭ´Ż¿Ͽ݂Իޒ^W"/iJLaPN8.2'-D?KBLwxkYc__z??EB=>:>FKMXI8.6v}xhX]wb"W[\i`05.(F.HUoSMRRE6]\Zq>e73GIH9+~}~~~~~~}~}~}}}~}}~}~}~~~}~~}~}~~}~~~~}~}~~~~ ~~~~~~~~}~}~"ϱ՞邜ԏܜχƾ䑰֭}[@9:nrqspop77::9586566557:<9968<;<=93139:<>968773.//243b`411473/122565.10/.ZbYRMF165i8207=?Asrrrg46:hnhgbcG׭燊ڢ{{NJоڷ"溠ʄé뚧ﴃ“θ˓ÂRSUVt\[Zԑs[t{zrifjr{~|um^TXSQKIKJI獟鶚kICCxyy}{z|>AFLNJJHKIFEHIIHFJLMJGOTNIHGMPROE>AAFLOQMMMJKHGGIIIIHFGHJROH@GLMJKHINMIEHGHGHJtrJOILDAJNPSCCDx|||kIH^zemwl`|yeT[YUS[bcZVWRLHEGq\`"^khiZib|gpV[^h|Z~xCJ%%(+SL;0,E75FQiaMrMJ`S\_XXbb^am{~~|p]OLE@=CC??f`_`lrr䤉􀆙ȱ鄋ⅈ󂃁Ԁӹ܉\FyiTUgf;)pNZGK]JHayo^슒EBBA=@=?DIMOE6/2lvtZTJQݛ"axogW.3+'!38|aY[LC>95]`eZ6:@9&WJ:4 ~~~}}~~~~~~~~}~}}~}~}~}~~~}~}~~~}~~~~~}}~~}}~ ~~~~~~~}~~"窕ጰõƼШrYL?9muwvrsrsq:<89:6677766;>=;;=BA=2201/5422kcY_XWTWNIX_cem:86uCG=d=lo9465tqhbbhϟҭ͈~hinsٿƪ"Ⱥ􍖣ҒŹĈ΀SRTTVXWVzbxnYh捂Ljds~uvtojrxuoidZVTQKHKKMȀwWGD}zvwy||}GPPPLGJKIHJJKMLMNNNOQVPONQRTWQB;@EHG?873dmhNOxzdMWsI?"+.'DRz@/I@C8Ret~S(=@C%B>GD~~~~~~}~}}~}}~} ~~~}~~~}~}}~}~~~~~~~}}~~~}}}~~~}}}~ ~~~~~}~~"İ鹠̬߉ٻʸ⎲˪weTz9xyywssqsqs==>;6555867:@><=?B@>@>=HQml"uì`ntfbXV~_^y^+#"&()(+..[QC7cVH>B_U|jwMbup_Vctx|~rg]_e^TJEHLGEAK^hagqvzꃋź݂ǷtfX*.fL.A<(DVJ@A:853888:<>>>?AA@C>>=@@@DD711-1344355011`iif65576110/.02653588740632/effkkbZdXMSSO[\`eyn8h>B:35579434kmfgvDZǾŷɸūpg]҆ĤϨ"ɏ\XUUUVWX\]Xhy|}Ӄyѳvhai`^agl`YVNQUoȹwHG|v}~yuwLVXVOLIFJLNOQTTUVYXWYVWTSSV[SB:?@CGLMLNNJMJDCCGKIGJEBEHJGCDEFKLHKGFB|uwyz}KKRNFJKHG@@AbuΙn~lntr]Ѷk~eⓣavglQR[Y^\ba\XQC?HQ"pΨYdjqsl^h^aY\~knMi/##'''(+--/cZJ4MCBBCY\WpoYszm[[honmeUTV_i[QLFHLOUkejqprz씀ǺѺ쁒ؽox;%6 #$.|zwpLN4E6O|}zQڂUI>:DEE>AB?:621fpPQbbP"Ee_M'221100M@4NQg/<>wE<2<>+I+>I~~~~~~~~}~}~}~}~}~~~~~}~}~~}~~~~}~~"繕¥巓ު϶ɻ섂ജpZo><}=8qtttuq;@?=:635788:=@?>?B@?@=:?DC==?8.,,01142352/.dbg213454334/.048974677423322e`^mpjXfhOQSU^X]`jmj556:7lqm77:5brh]qzDąâƽיȟ׊"ʼߺȄ٤㈦`WUWWVWVWWVUdncęfaǻzgWZX\bjugS]o{yg`|KK??z}~{JUWVOHFIJJLMQVVWXWUUVWVXVXWVRG;<@CDHNNMMKKIDBCDFIIJNIHIKMMKFDEHKKKHGE{z}~}~xJHINIGGICyg~}K[}dI{wkYiᲥYqtW]VX[]d^XRFBh"ε|lnviY^uaxbn`ZmcgVq4)#(*)++)'+/XH5!;CIELfo^Vkzwnfbd^ZUPSYep`LwhrQcl\`q75jei{璭Ü􉒛ظ񈌎޿bw~V73, ?=7DB2N/:.;~~~~~}}~~}~}}}~}~}}}~}~~~~~~}~~}~~~~~}~~"ʴǫʞ讗򍠩ރѶqa|D;z{;7nmuwurw?<:66146876?A<;.&(,-,+(&'(M$J@&EJJD@AMtte^Ibmzp]XYRIMV]ocdSdSetlds:ood\אꏎ¼¿߽鄏߶؅MpttlbV%"-BJRZMc|iIseMNJtõRCBA@<<@BBfL]n}bQ"JJPYTdcL264%"G?7I]UIKE@88r@UO7CL4~}~~ ~~~~}}~~}~}}}~}}}~}~}}~~}~}~~~~}}~~}~~~~~~}~~}}~}}~"ޜ҉ڭ̴zws75lpuxx{|=;556//6698=@?<::AB>96=B><>B;51565256:7640ib_01egd4789>|z|{zLSPNNIHJKLHMQQRPNTVRSPSVTSVhWG>@BBBKMOMMLGD@|IMQUVOLMIFJFHHFF?ww|{DBLPJHJFIE;?̞`a[OeibtꑍufwV[WWUN{"z~xU[`_}x{ptfYUcjm9-$%'*)((('%#$)WCOGID:;LpkTW8M`]ONWQJTYhttQ`hclsmehkou_Vـʾݦ¬Ÿ𛳻¿˔oo@qatas`#1y_oY26zZMJ"IJJJG`\F+++'BG?7GXMDGC=/7rymBB@^F0~~~~}~~}~}}}~~}}}~}~}~}~~}~}}~}~~~~}}~~}~~}|||}~~ }}}~~~}}~"Ìͯϸ繳ሜľϱֵIniqnlnqswyxx==6474457:9@56j_Qkƌͩלu~}󓿹ͩWXtro"ȶ˿ȿ՜dTQRSUVXYWTTRRTYg{p_onhQNdeV`kgdi{ըTws~{xwvu|IROKMKJIIIGJRUQNGSRPR>;<=HMMKJHF{LPRONJKMMIGIJHEEAAAAD{w|~DDNNJJFHLE9Bdca|fb@nnoz}Ȃyqz:ƒwljf}wvx]p^Y\ukavwr``S}ovc_1*$#$&&%%%&&&'+aT,9:DEOa|oOpURBESRIKQkzRHqnUXlpa\\ZegRͰꗴí󀌒Ļ߼惌û˽ꁀ󈔇ﰗ̉CB9+quhPY\HK9/~}~~~~~}~}}}~}}~}}~}~}}}~}}}~}~~}}~}~}~~~~~}}~~}~~~}}}~}~~}~~}~"ԛ֞ͼшͲ̼ɰɫ}F2konmhl8quvv<<735214569;?CA=8emkqntt85gppmspl7559521311mcbdmpm87h676li7=@<;4279p^^`]T+(..ZZU^^^ZVW\[YZ]ai765ni7:><36paSfȥ~ݠՌ׬ʲ_brh"ژ֍ݼ׽ɸRTRRTUVYXUTSQWmcisttb|sM_iib`ɗwfxĢT5huyv?CNOMJJHCIKLJFGLPLLIIJI}~x>>CD}{~{MMKBFJE@LǗgd\~JPzM@wyw{svt|~Θgws}f{i"vzmWYmbWKd}y\R|ys~]~U*&"#&(&%$$%')SS,S/10GQMGEcna\UaT6mJPTMu@zd?gyeZ\Y]S񅝬ñ䃗˹ǾҀـ녋޾ڃfBC6<.7rxB&t@:IY?=C=botmf|tkxwRvqI"SREFLhRK)#F:7<;@?B?5Xoo[B?LHcJ4~~~~~~~}~}~}~~}~}~~}~~~}}~}~}~~~}}~} ~~~~}}}~~~}~}|}}~}}~~}~"Ũȿ􇕷ຆ‒烔ϩfqP6rqri6ptpyuro9;454343687;?A>;l^cppwopebgmlonji46;535535qkfhmkjkkm7806m28:=;478<8b[_][Y+,/k`\]]WULQXZZ_aae:89vqpp;96:rlC܁}ᥒǔཔ\cyqt"觾ݘ벐ѦԿ渶€߀TXUTSTUVWUTSTlh~qTV`Wmаesbsրⷠp?kkxx>wwt|yKRLLKGFEGIJNSXTPy{?DOOMLKKH|xHHAGCHMMKFKIHE|{>AC~|x}zOKL}}FGLVad`wn-J^N`Yu̚ymfo|uiwz"چɹ}YV_g]PX}w[{PWtk)&$&()(%&&##OURMRD2CV`MBKeoxxl]O^}l6\sEOEu_}PUW8QylegfgST͗ꕱíԻƺϻ΀;懍|Sm4=>`=G&JomX828NI7MKk~ ~~~~~~~~~~}~}~}~}~}~}~~~}~~~}~} ~~~~}}}~~}~}~}|}~~~~}~}"Ʋܽޅ剒뿍Ȳ?:H8ghmt~}uvsqs<<:65688548<<;:>>46y}pk^^i57lcfjl6::46456imhfiilrooqjimj`7;;::88<:eaW^[^2^3ic]YWWSMOR]\fgdo<::9tpl28?=rrH݀恳茲aYix"粗庳Ø̽ŀ]\WRSSTUTRQZx|wah~oVVxpnu\b[Th@jnz||zyzy|FMOKIEDFGJLNQTUWUMOJH~z}BJPKIHMNvzHPOIHGFII|~BE~z|{z{|||NLJJ}tCJb@ENJd8H;?{d޲^|wb}y~fqxe{MNi"|PSk97:97258=:87==9=xie138876bhkq979643564liijeeukkkjecfhp<9=:8<=<6hW^_e5fdbbZTRWQQPSZZdhjx:778pl45;B|vwXeɾԓɆݧޛ~˪puy"̌⾿ɼí̀X^V^~{rbbnv[nmx؃t[SPiȦnrzdjkjxvvxz~~@EKRNIFGGEIILMQU_]UXHJNMNK|zBDLMIHMOJyy~{v{~SQNHFHKKF~{Bz}~}y{w}KKJI;:KUXlo}ˊns`xrutyvju䄞~pvj}deyј"yn{y{o\``wwZWeSH(')SLMLNQHDQ]XJH?5HZcjzfOcaYbhHB/Gjqfo|OmjXG>/9UaTdjh늡Ӽ߃񙦜ǾꁏЬMk*9)REjOmIH9E]\EKh]AfsH4:M_fއzsgpdH`㈎ƤybXb"MT=?/E:,$#@5<@AGNFGE=?97;653778788<DKPMJMNNzw}{wqx}MOOJILKKJG|s|~~vz{uMNKKICBCGPMa^lfվhssvuwozgƎqqd~zmxnٿ"xwmn]a]`gS~nirpO?NOQPHIMWYIAIT]WM;!;KKKRbgQGO]WUb^"AB{Hbn`׶OmfXrlR􏥰ĽٺõہغᑥѾʺúۡYeE% "Oo[I=DTdL|HO|EGZv11btt~kYbk~MXQPc¸zf"gWLE;L?4(*"#)&9:DACOJGKIE|klJOB;/~ ~~~~~~~}~}}}~}~}~}~}~~}~~}}~~~~}}}~~}~~~}~~~~}}}~"ޚ򦸹䏣燝̼Ǔžbe}rtfkx}|tn;=;8743454345::=@CA@BAtg4657>=58668764213<;?DFHEILOSzuw{xw=?EzxvCLOJGMJKNOJ}}}|~t|HJNJIHDDHQQ|刟fTVNZkftimzpʩxmFyoёqsn\͉~sշygW_faeWkn~vsuz_XUp4:7:B?AJZZD-ScFQZF!=GFGJKOP_bYS^}LPSC<~yvβYdPy|ht\摨Ш둣˼킇ǦҀ׶¹كb[B{eg]XYDK==>IMiKL{>5N^oOoqwU`_\TaynZ"`N;`QO4,/0).+L@FB@D?AB;63o8=A}769hnl6752.:7iikhida0/f_\Ra`n?;736889:52/2111f_Y]`NZ][Y_jqd3166:<666:;mvỢێ찋򔚂왕ʹȋޚѾ"ڍӈ۷һǝ|aXU]hzSlkUnVh[h|nu|s|kdbel}x]Ǿox}}zkdr{|LWZRKIIHFFHGJOPV_[`XVUOJIJNQA;=y@BGLLSIy{zzyx;=rwvRPLIKIINPJFBEEEA~qzxIIOJJIEFFKL}ފjILQky~Yltby}̟rd\so|uĐl"ui~fXifa`UhnmcXW]y[[x9"#]Y&0HI/ >;$8JM.@FHPVM\jadkj[NV]`hlR9jkg}^m^{O^Mڌʨ܎˼ҹϼƀҴݹ쬄nfUS;i^Ch[hcf@EN:ACJQgWA|mCHBBWhs{~c]iOo~ycL"ZVG[>H>i-52/0.IID9:<:;KQLFw^;EY|~~~~~}~~~~~~~}~ }~~~}~~~}}}~}~~}~}~}}~~~~~}~~~~}}}~}~~~}}~"ץŗܾއϙ͇ǯ񈒋ǺቂrrhqsxELt7>>97545635557:=?BE?>;:74m8:yt54ihkj68431:8mjnjhd0/0`WVY[ei9875368<><833242402/3*.][Mai7121679997466lmzRȼ񠷮޻辉ߋЛɲ궭ʬ掼"ӛӋȠ񇯽ϩadwPxjXaWx[aiwzxrnehybSZiidjxnϵ|visw~LO|GW_TLFIKIFIILOPSXX[URRSOHLLB?|{|y>?@HKSNx}zwx;:<}wuxwMMNNKJJMPLHGIIF@GDB=B=>{~oJFIJMKJIHGBBA}zNbwxj^f_vin|s{pgzz"}wqjk]^fhfh^|`YTop_ӀE#34FiD2AI!EJ@=> ..FGJLTSPiuq~VtQvPWpnWLGDNWY`_QvyD?x˂Ѻ멵׃ʾꀀ̀񀉁²鉪ľϩvn`lb1'eZ79*HEQYKIDnBQc=>JZU01ufBTN[~t~zsnikmNpm|viSV"qPSUKI>:jli7d0.1bRLZWagY4842029:999434451206//3\NUhlf479;:>9ro65osuʨț󯡠ŒފꨋΟ¹"סƚȂÀ}v]`q^bS[nZazj[e|gf[t^dвuwvuonǥýz}pr{~KUmKCV_VKFIHHIIKPPQRUWVVTVZVJGMKyxwqDBACzyMOONMOI@>Ʒy\jPhpxgzmXnt{qt}sooˡ|"dqdWolkfelphaTdaY}QI>5c*5+-1?E]hXUG;#1PLJGLRXd416|LtWqAHk|oZT\UZi[bqkH]zڑڏ˵ʲħxlhxtRI6*&'*@D\uW@Mc`L;:*1XA3~{~E>D?>jFF70/210.L@levwUeBRJ@lg=i~~~ ~~~~~~~~~~}~}~}~}}}~}~~~}~}~}}~~}~~~}~~~~}~~~~~~~~~~}~}}~~~"Ԗ؂ϷՅѹͮڵvt|iiryzE<7M:<=<:9:65458757:=?@>;>;:6450^_afjpkjjj756<=;ljih\[020ULNSU]T262211168795564423421.13*Q_llnqqv>;9oq6mq|超쀁롯ˤɚɑЂ׹ު󷱶ƾ"凒ҟƻ難ry}w^jpЭ]j`[pbaW€ee®rw|tș۾}{xzz}T>1IOT\RKILHEFJLOQPPRTUVU[]YMJKG~tszy>>HTVJ|vquzy;?Auov{{}xFNLKIGFJLMQLKIDDFGDDFCDEA}SNH>{wyŜ~FAJcws`Y}sbq؞lq͛IJyhpyآǐt~"~bwUbcoqrnqe`X^UZo__`nnTamAQr]@B9;9LRgu]1;73755203546:9;=>>=:7324111glppmjlp=76:9:igik]000-RQVWUUV^451530678:8755631/11-/`ovxpkpt88nsnjfjޒٰߑ郒ф¼㮂ˉوȔؒũǀ­ŰœˉtΈڿŶj]oek]Ît`sr_yz|ݬ뀓~Szu~G[9AVSTWPIINJGFGKMNMMNQRVYWURKKMJIF}{yy}~A@HTUQxtzz?<>>z{}wryGKIMLFLMOOKJFCEFFEGJFFGEHOHzʴÁyѼ߉lN`~k|jqWk[o]mgq|eưzzzh"Wyth{}rujdXvWYly~Wxt[Yp|qvehZ_IZbhzvzykYMORTew?9.LrT[\e4>[z{no}tJEnjkulcRWm߅ɿ񀭂禡ôڷɀɵ¼ȻU[AO'EY@agND)0:QN>D]o[8p{g_[TWQu[ji<6BdwuTcs:lsqVz_SZJ6"VoDNJO=YR,33/"639BFHI;[a`CD~DBD~~ ~~~~~~~~}~~~}~}~}~}~~} ~~~~~~~~ ~~~}}~~~}~~~~~~~~~ }}}~~}~~~"ѳDŽʩ򕟐򀆍ϳzgme[ggpq=DZ^dL;58975654423556::6;;?@72jf:;54oedjmgkns938<==dhha/.`^V[[VNQSUe1033269:;;68564201./0/,23vr:4_gl4mnrnmd_yyܾչ籲Ի쯂꼲ŻğڋُϞ"㼱اـΑϸyիlpuyn\hx}uvzZO`wurpm{tFLXW\QJOSNJMQMIHHKMLJJJHPSUTPHTSKI{v{|vxsxAFPZXLtv{z=;}|ptytFHNOKNNNMLHGDFEDCHHFFGFJGPOM~뽛榓e~|q|x[\^l}~ovdlpnrohŹjqw}}"з^c|zut[dkow{`~[Xpc{|[`e^QgyhrpNNVVkWMEhokGJg9>JaaR]sY?9OhzsnPFYlԾɾмĕ˹Ƶϣ{zzOnk&+/>BFROK20VFNLIAB;hij<@;lk`[gjkori5/6;;;g`_efX\g]ZWVOKUTW^/2326:;7756441.1114001/3853-0042gkprm^uͮȡշƠψ퀆ՄҠըԓզʁǐщ"즧퇓ΩŪӯ׀¢~iyg֋€f~t{p¬{w|j~lZDZ~}ztçʆwc|n{CDBFIF=BMOMJIPONMMLLLIKNLRWXUPW[S|~|zvuAEQ[WLyuw~y}ttxouHNPMONMLKIGEFCACEEEDHIFGJJKHMNPKz巬_sti_Ztew_vgiqTlnagķU]p}|qq"ίkkcgxtxbkuwd^|ZxL\s|oA-G;DnzJf>UEOeagYXnND@DXtJ]bO:y^^nid]UraQ{7KfɃù뀄藩¶êđϵwIC2EBQLdDR-Ni@GF\NQ%Ek;IS1=CUaNERll~hETnojP{hd[`ZO8"Tl?fH7/LLCZhL/PDCHKCAArfmFGBB~~~~~~~~~~~~}}}~}}}~~~}~}~}~}}~~~~~~~}~~}~~}~~~~~~}~"̟ꢝΉø󊞢澶ᛢॾ{Eltp69>A?nfb=C|kd\\[elml^/138785acabUY^[YV[VKUQRQY2143:631213/12423511324852121de/37pnXn鸯¹䔡䲧斔ˈۆ܇݁"̖僩Ш֪׼ө抴€Żhgwmrnqjrlulxmrӥŋ⤦s~Y}@A?|;;@LKIIJNPPNNJHLIINNT]VUPZd}w}{zyAFKQPIBvuvxz~|}{xxkqKLPMLIKKIGGDCEDAFIGFGGHILL?;@騈Vz`suq~opȊt{poumorpÛQR_p{th|`vkm_jwhawk\zx~vtxrhcTb6?NlXC\DCupC`nhVX\MfMQRJfNhfNnXXMKpjf̋zfVLMh؋ȷ뙩õʹ¿i}sqbgd?GHD\eMclU_{U^_U@Wk;4{c_OeRk|=cKisqzZloQmTRTY^_I":NJZn@L4G:8;=ZmI1TJ@DRA9766557;9:<9636@<>9=ELMIJKMMNMMKKMKIKOVYUTQJG^ICzx}zv>CECIPHCz}yz|yx|{wo}}rlq|KNPMIKLIIJJEGDCDD@EEGGIIJJKJ><>W٩]ft`pn{ؔÓz`hDzhfglWXY`"actpemYahxcex[tt>?@A>yuw|gfFNV_SOuJU][epWJKmcukabR@c]e~Qujx{px|tumZeᒙǹǭȸĸ򎨾¿þ녏kmSK{EaBxpaipl`6eeniRȠTggAEv{i|SxqjVvsnJbk_ELGPTR^P"E?E:vbX?@YK8>?<8.`r{pb022goqjh43469;85dffdhb^WOSOS+UNLPScn34=641431.17822131116;9848.0l545imh?cŸՙ؄vܦ߈ȥɗЫ"ɧ˚滖ϧٳ拤kjffmrkƱӢsy^{xxwmZ\pyyyļ~u=AAD@DLSUNIKLLLNOMLMMLNOSVUSROFHE@y}z;;BELRIDz|{w{yxqruFxnuyGIHIIGDBIIEFFEFDFFDDIMKLJJBD<@@?@??sYpOHL_~VvkTy\WQQ"IC6 v^.:?d^RHF;14b_P@??A:3cnphagh2eqslik65664353cidgf^SNR)),.YUTO\eSVjc]Ye_0,1652102224485688704434dgbT|ա݅ŧˢٰԹӓֹű"פ􅗝갳Ϝ놑ushakuqjghntrfȄdlەtztfmumszdvõqٚUvzADDDGNW\PKJMLMOSNHORNNMPUVUWOF@w~||y<@EKLIF@y~y|zuqou@DHF|rwv}y~{}xEEEDDIIDGJGIHLJMNHC=>=;@{jꚓbZxyrvl㡒Ŷn{yo~ktp^qdwxXd"h_Xaåzca{`{mw[V\gV[`ghJJGA??@FGDEFB:[wLADI[{{zvjTFHXn{rmrhXMLNC?S^Qczqw^m}JU݃腍žø񌑓ƴׇɾ0xg?aIdILFtTuod^ZRRS`s[PCY2ebvUht]UIUgoBGisRS`zOQ"FB7-s]@FYg05c^8@>Ca@?dL=>JJW%6>FC~~~}}}~}~}~}~}~}~~~} ~~~~}~~}}}~~~~~~~~~}}~~~~}~"ሌ۞֚úβྻé~{Wxosz=88>BDD;8426::;648;8:8:==>?:714<;<=~bקzmxnʌ{xktxီ|lwkqrΡv}["cPPel}a{g]g~odf_VQJwz>?BDDCBB=YlI@GKnzmu}}{ueYaiouuuvpdVNA# @FXpklrhnqod|J߿¤ж웣޽ǻރζ聟V:f~h|EyIoQcGEpwnhEJ7zZbHDwIDVQsvXqnhTp{Rjj_}6ePJ"Dp:Y_Z*Dil4cwaB\ea7@8JODBIQ9)3?A< ~~~}~}~}~}~}~~ }}~}}}~~~~~}}~~~~~~}}~~}}~~}~}}}~~~~~"򀐟̀ɸʶȦŵѶ|i|u_hs=97<@B=76135577546:9:978<@=;813?}fbiiemqkj67665:584cib_a_VOS**-0^PTZUXRNIHNT[^d\SY`[a55599433438553003jeUuM鄽żưϖѠƾ⨧鴿"¿ú崎ؾ׺xcltuwokxuqvjR;boU|s|^ƚobv]vp|b|xa[{uiɔɁunɑW"a}xfh~|iWdhgpwh^K\__ouqwDCDABCxQPxELDbplr||gOFR^`cn|xbM? HbFvk`Y^_;6Dfײӽ􅌘Ÿ߷޼źŞꁘYtd-]PYgpz{>h_b8X]sq_26J9LsS2NLD^[1GTRMXVTK^ZQ¤eZo\MRkrL"LrlbLGJ3@LMLfP6dq`6=U3BLDDIA35<>k~}}~~~}~}~}~}~}~~~}~~}}}~ ~~~}~~~~~}~~ ~}}~~}~~~~}~}"獛ǭŹ̴VZ188:9;<8674325777176687459><:9g4=v^dgfbhppo38677465gah_cd]TKK*+/1WPTVVURHAFQV\gd`ZYa]dic4;;888544242146orqCܩ흊ķ֘衫ԗ؆ʨ኱՞굃"㎍鋗ЭۢҎ̬^jqvwsodo}|wmu}paWm5=P\DVͦrrlZlsGHDGJLNMNPLONLKMPHJLNNMKKNQOLLNT}|y498>FJMIu|xyvx{HEDF||{vvtkluwzzs{y}@HJJKLHHF?@<9=AaՖrrry~q~q|anhMhҩjQ߄iwlkzVkpˬi"gwYW]VgdrZOLQTezh_Z02?Rj{ln|CAABFsOOF@@^Wryy[8:GD7=YgfO8".*  Iyrj^N@6<><9897~~~~}}}~}~~}~}~}~}}}~}}~~~}}~~}~~}~}~}~~}~~~ ~}}~~~}}}~~~~~"pҵ󌜤츚ȼ­ޥu_^T268788:8355346655355434035?@794186dbemon386:84543dfeke[XQM,./.*OOZ[NZKIJP[jiebUX`bd]T]hp3575443jd13gpv=Dzƪ–ա۫۲ˁʈח.ߤƢȌ鉂惛˿^oeuxvmǚwzkĹ˸q[QTnx\F99?B:M~|qP=BKW^{ksKLLJKKMNMOMMMLKNPJKNONOKLOSSJKHJRM{x|;=9=DILI@x}}yux|IHEFCy}yn|uvx}xx}~zpxFHIFFD@z;?YpØv\}ox{hpzW`v}wx]fcpvYUӕKjh{{X"WbfdsiZieyiÇ[Rkdai2 9ht_bmp>ECDFabGAAGJ|ww~lQKMB*"+;VbPC3! 6juZUlh@(tА򔣰Ⱦ²򅖝ĸ⊗IJĿǷs\o{byGXuc[aslI77WDPuN4)CeGDgwMWdnWS~@7fNyDevfL9O?Hc8PS"XB06439:E-AK=6O>MUL;Q^I;=?GD;:>~~}}~}~}~}~}}~~}}}~~}}~~}}}~~}~~}~} ~~}~~~~}}~ ~~}}~~}}~~ ~~~}}}~"Y犧Å屌ŝ֠ӿꭏ遈|jR18;988;<7544568433146<@8664;64.22`islm354865451/a_ed^^\Z\001+VQY]RRK?TRYcacaV[adg]RYij300/132egdglo:;F\曶ѩڮʛCмљӑՑ唗㝝áʥwqaapms}futqm|ŹievepaOUUV_pbkr|g}_p;>D\{|JPQMLMOQONLKLMMNPMMPMMNLLOSRJHJKSRPJJI{?>99niWIC>=OuwuZ8"#X}>V@WdHL9& 3x楡圶÷˿؃ĺɿºރށp:kf=8kqSX74OnhIqhSyaHa]b`~dl_Jy]^mDpxdLLKMiJAQnj"liZ=)548GJJPWAE@J_W_EkN{CA?Dq>J~~~~~~}}~}~}~}~}~}~~}}|}~~~}}}~}~~~~}}~}~~} ~~}}~~~~}}}~}}~~}}}~}~~"X޲ԉீ͌ٺለ玕ײsZ5:>;678::83546665763437;9796:852c`-4mfjf24664463ba`aecfbb[-,.,YTVXSGMCWYZ[]_abcafjdedqvv51+2c2llj7qo:;Fw٦ߟڎԩȶ|ﬥEⲶxɇý񌸻尿ʸىĬëÝugpzupmeqhkhæxx{ggaqojb}}rwwt~hdclyJaJNQLILMNNKGKLMNNNMMMKLJILLNOLJKJRTPLIK{{v:<>BGKNDyxyw{zyyHGIC}uqsux~E@9=wHD7,(Q?lCBB}P[RPJ4Vjimkiwy24m_ZdjfjECg=6VhJ,BrEDeETY]Y10v୴⚱¿޺ɾ훥ѽ뀖srAA=iCnrEOaRe>nbVRd~HywilSDOgzMNDy`JNFA>iW"Q;gP&1,2FRPKJ8<6AhFey~p]pgO@b[V|T~~~~}}~}}~~}~}~}~}~}}}~}}~}~~~~}}}~}}}~}}~~~}~~}~}~}}}~}~}}~~}}}~~}~"ٙDzïܛ贿􃐇f4:><67889<78566777534585446876359<<9d0+28gfj46562374dcddjddcfd/+.,.-.XTMUXZ\c]XThed^fiiieoz=hchf4mlook_uBO񖶴Ă؉؟윋臓̆冀팷ɲ"ǶՔҙtŚb}Ϳf}x[lh~xpsҔfpgj~FMQNHKMKKMJLLLMMLLKLKHIGJMNNMKGIQWTQLJNLwx<>?DDGME}~~x~zvxJEEAA>=z{}Mz|y>{Uq̀_vѴth^pvXwlhZu~pvfdWO]kks`bcx~iO"q~cZutv}UUVYg|vklwʼnfjDwYJHNXQC:a6Rllr{nw^aPK.ATbeopX;4I@>P:qlx@>kOQsltt?DqYg~}T=* Ǫ𑧭÷ûóؾ숗uPZK?KPIsy:vjbIR;ARxV8ob`neCP?eEMgiUy\Ş|A;Piu_OKEECE2XŊ"N-MS1-(-=HOQI7804BJBrePTtFpOkEIyV~~~~}}~}~}}}~}~}~}~}~~}}}~}}}~~~}~ ~}}~~~}~}}}~}~~}~}~"ץưѕ焃򻩤ϣۼf29<98989::74465564/137;7427875648>?:30/5:jefh2451483`^]dgfelc_0-0.401/XV\]\eri`\he`]chji^mrBAjhh4kkommdji@cݛ߀Љƹ˱ɇ࿇ƼǶ̏"螉ʨĢpn~rze^]i^n`RO]xy›נ~taz^jvCMQNKLLKKLKJKLIHIIGLLKKJKLQPNLKIOWVQMLLQPvvx:>CCHLBz~zx}{yJEECGCAB|~zQS|}A}Vw|Wzkzncpz\rVsh{xUYcxrbyk"Ʒsubyt]]gkyis|lzdyEAbDBIT`]TKDIQUbnsu~hqh=5-/9Lf2bR55 !2YaSN]^SS\s\]w{wMTyW?. Hq½ƾíو¿ňrGsMSLG[WI~\AN\lp[K`}Jpd;GRs\J|=KB9l}gnsFessCKFN]pyKFI?=DLCVk"s_UXP7,&9?GYI=>kor?@kVMIDG)N_}YSvX~~~~~}}~}~}~}~~}}}~}~~}~}~}}~~~~}~~}~}}~}}~~~}}}~~}~"TǗ٩𺟏߀ۻդዚ˵󍑴d28<><;;877753212136;8547787758><8722585e`cfh624520a__hkhga]0.0-1/14\Y_Y`9=757sfWXajiibdnAAlfehsnroplwtBlݝɳ脌J΅񭐌Œϫǝ˽ڔ޻ԫȲcd\kz^fs_hXXPeo^oǕsjoq~{X5:DڠzENQQNLMJKLMKKJHHHIJLMKLNOMKKJNRRNNLLOPE{stvz>AHHA<}yt|}{{|IEECFDCERXTSRwy}}PRvy^z^`kkkstzma`mqɷr}XbaVo;dexwsipwrzwιx]yuesZkzw|e|_mrneifcH)"+9Nae^OLPS[bg`SrEI0PM4:Ic5cM6"(,"):POBHMBDIReznLIUvKORa`ih% #Ь≤¶񗰾䅉ƿźۓܻͷ7cKPPEJ_HAUc=EHPloc]nFZ=>EAevqDI<@>;QkCm;'~>jiYemonOADE;>JKIYr"||kUA<&6>CKG>>wyk7>NKI>?V./Jn_YkG~~~~~~~~~}}~}~}~}~}~~}~}~}~~}~~~~}}~~~~~~~}}}~~}~"˺儒řЬХ뉍ֺc29<<;;:67789676335613476547:;<88;=976003:8ifghif3453``dcfkml`[0--.-023.`g^148857{jXTcijd]Xn:95dfhulosxrnHmwڏٔݬȗҀ橊枔չȤզ׀"óŘƹb{^[ixuRvjb\voa_gx_]ptlpm|tW_`蚚HNOOMLMKKLNNJJIJLNPLMLMONNLMOOLMMJJNRF~trqsn=BE@tu|zy}~{wHGDDEHFEAHLRTRPz{|LJ>qxcpZVw|}vp[TYuc^ׅYWpy;^vmtpyy\`^wVo~~~xgqV^tu~bs`_ŽgzFJ:!<:PkTn]nFHNmY|a2,;ۃſ¿ƺ׀ƽ䚡ŠV@?s_^s|K`WşȃϮŏ´װ絹̳Ϙ"µԗπhrg][[dtxqrl\{[xqyzb]¼m_dk|wKJLLMMLKMNNLKJLLOQNMNKLOLMMMPONQPMLMLKNPE~xk[TYewxvt|}x}wv|DHFFGLHGDIKOQONyzHF~qw??w~C_a[aXPayip`yۓ̺b_ouo˨lvpdxyojgdm|yUUt"_Ymqx̞pzspgl]dVq}Rp}aoZq~1;@5/)K-]/(0NacUIHRM@;A7B4:=t77KG{e9FEGTqM@wnjmxCFMz\\OmqoukfY[YTJE5=KF?:"CE<)YF.sʝL[d~~~~~ ~}}}~}~}}}~}~~}}}~}~}}~}}}~~~}}~~}~~~~~}~~~}}}~~}||}}}"θگ쇠􇌇Բb09:;:;:699;865667;=<4145655766;9CE>996549;jfXRIHOZd`hd`cdlsneb..//,/.011h]Y245853cWU[[gc\4477nfj6mfbq|xͤܠի鎡џЈڣ̩Һ"ĽќСӥ}~~{qjXrUtgo~_}elkпĚFNMNNQSOLNQNKJJJMQPMKKLMNLLMLMRNT^VOMKMNNGw`RMS`q}yvtxwz}vqy?CDEEIGHHHLNORNJ}~GILKxy9w|{~ϡt[qփvUz]c~tRvt|}TyzZX^iytqom[OX|\"VJ]_jirrq`XWYU]X{{khX[Suv:576/>3-9FIFEC;016BEg_Hj:>;K0=aSbl~~~~~}}~}~}}}~}~}}}~}~~}~~}~}}~}~ ~~}}~~}~~}~~~}~~~}}||}}}"íԁμ򅎊ܫȸӃ԰uQg/4:;<>;168;:76669;:;3/28<77956=BNO=89<769=l^LOEFNX_hjaZ^bhhi0/.+.0-2/1/1naZ178764bWV\\hga23;;7jiimppt|Ϧ׮󂾇ǚ񖬥׍ݽ̔ɇƶݴɸɕ"∗Ȕ¦{ij[aabggưgꅏujcrXooiȷ_DLPOT][KHLRPKHIJLNLLIIKORLKPMNTWciVONNMOMHqZXNTbn|xprwxxtu7<==GG@FHJHJLPRROKCEONE|r|}r[o`|dwuwa\|Sxʚwzy~XJ~mYXTP]zxm\u{X"}{rZm{W`WUtqZ[eeyvvl]FCNTUSH8WMDI7P5>~=xtl\[WG6@KE@Ke;@Duqh_[VRLEUM:#/>M\CHGKд䕼»¿ζ¾݀􂇉Żيޯ裌|IK?DFNMLYncUejtgtdF{CMKa?}ibL\]wpw}rcQOPbXQ]um^SSstIH8aEG>"xoVDhGPvTF7@7vlevv;DobMS]\IOgq~~~~~}~}~}}}~}~}~~~}~}}~~~}~}~}~~~}~}~~~}~}~~}"끁􁊏﵇񒨼ٷ{tv^1.48:@N^815;;975476694039=8777:BGGC;687858@5XMN@HPT]heb`\`fhh..\T113111035f[2764545_S]Zlm5159>9844musn|楓ÙĽġρșՄϦ®԰ɪ≠ݏ"֔‹䇊̄ūksheñ]higijfXXZeggbüXWj}|t\HBTdl`li¶pADMOO[}PCJSQMJJIKKILKLMNPMLNOQ\a]WQOOKNOOPDp][MUaiuytxxzzxz:f>?K^MbWccYTf~~~~~}~~}}~}}~}~}~~}~}~~~}}}~}~}~~}}}~}~~}~~~}~~~~~~}}}~~}}}~}||}|"񷗃ؙ惉фs~4178;AuMI37;=;721788:7678:9:79=ED>;5566:45@5YSQCIOS\da_XYblfe_^UP.03..0372b[`854676oZcemohfc5=;9645oqnzz˔ƻξֹì򶐘ŐżӢ󡯲Ý"ֻƀՇ丛ȕfiw`ylmgcaZQ\heddcȿ`b_Xxn`TF9tFIEY[eºDCMPQ\Y`BHPQOMKKLLKMLNOLNQSNPT`XPPNOONRONPFwd\MT\eqzssyw}vyy{sqCDBADGINLONORSP}CIKGB<<{{y⭯wũ[qebwδXnz[^^UPUMNESxrY^"ySvgyXejobmt|tooDf47Z4fXF->MyifEXpFFEA>=nZRNE"T7BCB@?z}D?99mLrG- JCO̹ԒëϾĺڇ󍑔󃓎}̆FCGBWzmU{b`bA4GJ~SRs?Jzs}q{rs^TPQDKfsQnSprXB;63269<<865:;9989:644lss}ƕੲȶόқΈѣ٘廙"ǠƶƩfeWtcpelɿgea^[WVUUbri`^\ƹcd`qȲx>;7GukQ@FKQVsVEJPRPNLKJJLLJHJORTSMORWPLOLNOORSOLE>m`MPYZby}ux|vvy|xyBFE@@GMIIKJMRWRLCGLGB=<}|͢ǎ{÷[Ɗjhbmlhxkbg~v`bmx~_PXWLqicdn"[l^Y{o{suib^:V<=Sh5dJ#18Xr?@S"WNB}i^@Rq{qo3@FZCEOXD<5t[e|{l{GBs~~~}~}}~}~}~~}}~}}}~~}~~~}}~}}~}~}~~}}}~~}~~}|"•聊ᰔڵwzG`9988AGB;9<:55657:;;836::9<988<:731444358850]XJJLPT`d]beeiinld^_ef51TR.353he41158>;4diigdbg38zr4/1kpv~⮛ȗͅ爩ɮƞ︠Ǒ턝ĶŁş߳"Ś󬈋ޭÑcf`}hs{icldfhgd^WV]jcYUøc\W}r[N?p~nݣjeybTb{`[\lcmggej܂YUobkmilxU~LRT_ڜŏ"dzibddUӞbqn{\^:cGDGCJ\_=HI_?KM54Kizuqn;:;:5*#&0>?73fx{|D@;mbSAinl+ AK띺ú¾ɸĸŻվꈂ񃏎톊ݛ[MGYk;]JON\^QOKHBJiE/B3CJKZNF68c]ImuO@X>HE^vVIL>xJGKciPHE"}FsaPYDHU^J;5v=[rnyzpkD~i~~~~~~~~~}~}~~}}~}}~}~~}}~~~} ~~~~~}}~~~}}}~}}~}~~~}}}~~}~~~}}~~~}~~~}~}}"pذƻȱԨuutSU47449<<:8:8786558;:667988986679842420631]VHHLPPY[`T]aed5dcabda10YV[/410495578:884eaceb0.ntoe_14kw}ۨԿƦɘ뤷枾ޤƢҥ璱ʈڿ.߬ηDZ̿矤Ꚁmipi~vrlny|cgkjbXVW[XSd^qakhZIdcpjw@IJKMLKJKNMKKIIHJLMJILOOMMLKKHKPPMNNOPRNKE;h_PQUZ\lw|zq;v{}CB}zGMJHKQLKLOROJG{|CE{?@՟m]yu΄~cmkYԌsSPc|[a~cv`}ft[܁kK@zoyk"Zf\^gnk\{ryu[?:_ǵ|xtz"paVOORxrinYlmEBnXK"HozwpV9Tt4/[K(%IfwGG>4/'$')%A>>?CRYZ\jw~aKJPMEA8#SAB=Յ¿ƽ»¹ʿ©򄁂쀂rUeA:SSfkRGMMjh9Eh^I3xLggSSWM79I~Rg]|QPAXMA\xxT~LLzrrpjS]BVIL#":98zYdi_0,6]zACkwt^@<@B=zyUPRhv~~~}~}~~~}~}}~~}~}}~}}}~~}}}~}~~~~}~}~}}~}~~~~}~~}~~}"땯ͱͥżÿ켐ך~yz=vqgA>T6 "/-=O?EZCZ^vmum@=OPJB|Ly]b\So~~~~}~}~~~}}}~}}~~}~}}}~ ~~~~~~}~~}~~~~}~~~}~}~~}~}}}~~}}}~}"ꅌᯐÄ᳓ꐰĵ՗ VBc574376768:<85334389779767:78=>:85777853sreYLBGQMO[f^]SY_^ci`cjtfa//31ji1.07>@B:/2iiktma`5:@=hpl8CN۩့ݲ鿳蔤㑘Йǀ˥򭞼化ϯ׻"䋐ήy|րūhg~d`hnxdihhiaxc_SVRVTUwy̮zugb]Z]mTtENNMPNONNNPNMLLMMQQLJKKNPRMKNOPSQUTPQPL~jZT]c[_qzw|suxyzzr|w~AELJHJKNQSTPKM{KTYL|{CJLIPX޻azZdīvq}ah]pֲ^YWHBNaws{lz~[ts`k]"Ydtjvُz~~ccgtr[Zf|R\`n:4H:9w?}@>O]O^8::862H)6AF9_W@@R(&)\.-*RV\VE84@T_j||tG_B^lo72446qo{ܓµżܹž놏䀇{aw@fj`K0FJEAnh;IVYsWNKETW,7WiNiGS9hfozvKLAHRUuzea{ZR|prLQUD80"07DINglrnP=N^MG>CMCfch\d ~~~~~~~}~}~}}~}~}}}~~~}~~~~~}~~~}~~}~~}~~~}}}~~}"ɩߞ̋ڴެ䃐ͥfFg645469:89;>>766757986789:=;9=<;95656751mpbLNKJOOP[g\W]c\Yegekux`[\3203432d79<=8456bikj`d6==8hij5>D?GV⶜߈⑍҅ڨͷז–ٌㅒ"琅ȗֶÍlm`fddghb{PMdSk~SRPTYY~mqc\ilishtjqf}EKLMNOPNMMOPNONPNQQMJKMPQTQMONQRPSQNNMJ}YX\Z]Y`p~zy}yu~GKKKIJJNOSVSRQLuIQNDty{=FLJOcq}s\wwWk̖dqȲnxj|tYq[]bRzJ^iuzd[vlr"ajtiXUgwuncgy[|[YUZXOOPHnMQNcCM287/-48Z46'&3"$#/L("JZ0/-,[_ZKC==EFEZ>5fI13Ki;>:gYTS@AYא·Ľ½޷ĿǼ󀊖nGnR{tVC[OOQW"LsrrsyzwxFAun=b\KGFKTLq[a83~~~}~}~}~}~}}}~~~~}~~~~~}~}}~~~~~~}~~}~}}~}}}~~"ʹ˶Ι؃Ԓꀇϩϻpbq356779978;=>7:73667756:<;<<9:::;97779737raLTPNHLP^eZ+2^XUighkrtcc^/.2349rpr739978:/Yf^nk<>:mng66=?-N63%BQg8S@'S,# DQB>LQL'-/0-))MD<=9E]l]?DF60@\bjq`M<4^o䖼¸żÀ遍Ľν蝵򊐠MXD~=92Y2ZPX?#8XuVS7E_XYJWLCLHbsZTSg:6:7pjqv>@DSNGUJH/,RU{gvmg^6>"<=DEf`cW}~q`TQLa7U[XJGNPIC`b8~~~}~~~~}~}~~}~}}}~}~~~}}}~~~~~}~}~~~~~~~~~}~~}~}}}~"Ŷ̛ӁDžDZݑʮӿȵ}eo{468;875788;<9:60255686;@>;;:899689:<975qp`KMMOLMQcd[.2XW\edgmooeb[),16p:538<:8;627ft9A<9n62658=AEWrɾΧה̗󞍿횽񍨤뽴̈ں¥䦇暺װī Ŝ׆jiqVvaorXV^d}sr|[ZZ[vov|y}z|}madlx|@FINOMKKJJMKGIKKLKJKMLOPPOPQRPKKMMML}ULR[WZcqtzBHu{wsyyxw~;CIJIKMQOQVXRORNKMJSJE{;6<>?DAPa{ZтxtXrnɵ]Zk功mxqtbSV\SZytjVPS4^bQKҖnprUt}~ehvt}fvŎ[\\W3T^\UX_Q@0!=B66;]4R:@Pbd6KPQjwļ۷ѱ灂zFn<:6]#_ZbKC>HZ^15K`[Npl]AcpY@gVB.;FB~wz@CFUfRVYOOPD@Huhpw}z{6"@D<7iscIVHUel{>Ch{yWADEFH5i=~~~}~}~~}~}~}}~}~}}~~~~~~~~~~~~}}}~~}~}~}}~"␵޻Ѡᕷͪ񧓎덤€ŰzbxE97;976798269b.49FQIFDERTTWT`VMHK~l}p"q>=4=xHKJ5@TlMCDZEQrC@BJJCDDF~~~~~~~~}~~}~}~~~}}~ }}}~~ ~~~~~}~~~}}~~}~ }}}~~}~~~}~~" ÷t[rF;89746:::6689=<<;8635:<9<;=;99:9>=;:::97lU>KLPIE^ih`ceWLZa]bgiqec]Z[Z*-.32358:855799=:>;;mgfgg128ww>V醍NjߠȔ侩ȫ۲晥ꔉ"£؂毳耎Yf|{qadgaadZj}qt]\ZYVu[Z[cpnryEAJNOLKMLMLOPNNNQQKIHMPQORQPPOMOPTSRTTTPL~XTXcagz|zkz{yz~uvuuFGEJIIOUVSRSVUTUPSQMrn};?AT{hUa`ksX|igorkmj^TYWJImU`jQPQMKK{lփObx"YXStay`lezjsvA9 (AK:8JZdl_ANDB7^\59/?4JK0EFvo61##AELA=AL++*,1b\TS[YM'.BDrG]sЍľȾž˾ֳ۹ѽꉩ|fJYw1y?48IDDI]U|ZNWHGe}Vs:GVelxb_NP7D7:GD~KC@BUEGQWc^UOIdXih~iNo_47=sfWwS;.R`}IHTp>jEBIJIP^PX~~~~~~~~~}}}~~~}~}~~~}}~~~}}}~~~}~~~~~~~~~}}~~}~~~}}}~~}~~"ĸ̶֪򇜑ੁꊒǾѵ{~v]vF977867<=<;76:<><<7636:9589:;989;=@959;588[AMROLOcec`bhZPW]\^bdfde^\Y_^2.30244;;7:;99<===;ndhim325syCWϟӷ챹ōҋŠȜƹż"؂ؖဥǫɣglv}lunRl`iYZQLdvwp}`b__^Z}^NAES`cwuJBGKNMLNNORRRQNMMNIIJMPQOQNNOSURQTUNQP`Y^`_jz{}|v}zz|~|xovJFIEEMS[WUZZTSSRRPJuv>@ATydnu|no{ǰpi{r}u۝}qhSWjzQEJM_o6RT\KHEbn׼ahRTWXXZk痠[lzy\vh{}xeX0=4@C1(7IdmT@/6]{}`WalmwņùƺDz׵ù񖩻jfE5GV9k{Hi^Fe\wGVUGH@?Enso]DF?^9.?|GKDE74L]^bcOKBKttTotEHuh1549rEQu`iQ^kvHPQQJJ@EKBCE[]2~~~~~}}~~}~~~~}~}~~~}}~ }}}~~~}}~~~~}}~~}}}~ ~}}}~~}}}~}~~~}}}~"ƛ㲷ۭߊ턈¸޲}w[x6686489=?@99:8::97879:769998<9;<;:61784::`EHSOIRdeaa`bZSS[[Zaiadc_fZein562/119;<<=;9=?@Ctjeplo66mt=DQ͜ۯ¹۹ުܱۘϦ۵;܇"冑ԬӛƼӁ\Ohþb^dXShcUtv}zzhgfdc^Z\mYV^gp{r>ELMKMMNOSRUSKLLJGJLNNOPRSQOSPOOOQOKPQKSR}^R^abkxx~}~ztv{rKJFDKPWWXXWSQTTRO{t{~@BJSqpy_~zWt°W^zqwkXqmbTIphWZJIJNZRzUysWZ"V[agvfpxؘkx^GV\fvrf]~anN^OSZB7k}sjah|tfM+ ,8&7S{~M6U*9y_gYKARt=97750-,ZTM=*AIK\^gjt}Žɸ㸸ŵŀ煎wE_yQLVF=amFN#H[L_YyrkYmjNJ6CRwTRqsdI?Z8RuCYVf?3aiUjMC>ABGFFBJJ;;>K,2~}~~~~}~}~}~~}}~}}}~}}~~~~}}~~~}~ ~}}}~~}}~~"ꌄڹψ쐗򃏣Ⱥȴ⺖}yazp777899=>>;?=8758698:;9;7;;;<9;<:7537:6;=ZAKOROTc+c^W^_ZWUY]W\b]a^_h\drgo52/.148?=<;79>@Aqmfo5suyBLj扖멍﯋Ŵ̛ŖгŽԲ좡罓ZTPbzotnhefŧbhulkwffcecd_]^r~INOONMLMNPWUOLKJFKLONLRQUROQOOPPQOKORNQNwWW[adjvw}nl{~}{JHHIMPSXUTSRTVTOyqz=@ABOYx[tԯYac^xywgqkTn\Pd|McMwxONEMIIk}UPT\"[X\exvࢭfra\\^WljP.)[cK%JZBCB=;>^EG3MMwlXD_VOr[=/ASmt992./12]SSTSSGN\ZX\Y/7~➷ǻž¾߸؀άہfL4~g]Gv`D"#(.BWK}6:7kI2kzMe^tmN`=6`vpEMthL{QEIE?JQWkcEKGL"I<52;>MEINoGEEEP0~~~~~}}~}~}~}}~~}}}~}}~~}~~~~}}~~~~}~~~~}}~~"Vߦん耉Ǹ·򄇇⯎ybn:9:<;:;@A85795569;8847<>85:=<859;?;>;X@OORX[ec]VZ_\TQ.0UMXTZ`W`]_mlk440/218tkgh5345u~Fޏ򇒠󼌙Hׅ̊뒕دծӳȂ߂QZQpUDhukosplimvrdzrueRPRWt¼bfcV`a_w|KNQTPLIIMPUXPNONIJMONLPOPQQMKNPQROPRVQPJsO[^bglst}wyB@leyz}JIIJLHOSWTTUQUXNzrs>?CDUrXXtق܈oY_em[ow|tr×qј՟PaZ[_lwYx^PKJTQK{~r[U"lj[WwDz‰yqZqjn^[(,'RI,'5]LcyDCCA>=CKE:umVBV|lqp^=MMfs$-E\wl..4ndW[gqujgiac\M'9ECÍĶ͵Ŀۀ惀î㸦}u-?緙SH5I"& 0IE^d?==9>|iTnqsaj[8s|NF@G@fao~~y[WSQSJAVjXYZ~"UL8.=u}u2'FWwg^wjcnOTcDAVPF3JBE/~~~~~}}~}~~}~}~}}~}~~~~}}}~~~~}~~~~}}}~~}~}}~~~~~}}}~~~~~"ֿϹɹԵþȢxfKo8:=??:878<=9436:6457<8768<=87:<;87:9;;>7Z?JONP`jgWWY\[TW12NNMMQVT\[Yaqso6122188@B?><=D>wic24457:@Jܪ󂷿ߔ飇ʒф㉫娬Ÿ"⁞“ؿTYPKZj~|a{хlmquqljfgeiw??LnzRwDKPURKGELRTQNNNQMLNNONQPNPQNKKOOOPQPRPOHpJTabanww|}vDAms{uyJIMLFMLSUV[WU\Kyr9>@CEIRZ{oKnxji_Wj[bbxoytfoĔwsz_fxnne[^ͲTEWPGLYfyxVYڙva~vŲ͞my_z)+&D(331(+0T|DA?A@>AEECEJpxpTdX/BA6/# Qfdlރ†µů؀熆êɷ֩PL=``ubN;:7.!'DLlKd<@>;Ib[ZҎawyT?fxFJE?JT`[˟^MNE@CNqP{"fTBe5ܞ=/K>U.Ec|g[gA`WW.A<@S~~~~}~}~~}~}}}~}}~~~}}~}~~~~~~~}~~~}~~~~~}}~~~}~~~"ÈƦпߪy|~xj{7:7<>:758<95535:;667:8899;<:8;9:;96877;4WAFNNNYecUUVW]\Y12RPLRTZTZYYXgo<87733669=B@BAA{sd/34556;AHѿÖח뙩͐ުڜ뱾֩ԝ"̼짢ϜǧVXROY]PX}nmllopiefimmkhXidw~;=FQQVjzlp{{oc\pw}k}AKLOMIHHMSQNMLLOPMMMOOPOKNPMILNPOONONMMGnRT_``kx}HE|~|x|RNNRLIKJLOUYa\U|v:=@B@BNUVj\ؕ\][_luu[xϫۚS{g|g]qWMg@MWUJNޅ"ruք{Éqsrp̉]xbo)*$:$.9.'i`EA@?==>BECEEBCoPV|mA"6'$) "&6WkqjdfnmO;=AF/*UNW݈İʳۀҸҽ񃍥EAKnavee`PbJ!LSvEpGG;g[nqȷmkG3mZvIMB?=IdLTwxbbDEFMAFx^w"TFwY`ut^p86A>K/>mO?Nu]bvdV$47965678:99869:;::987858:9597363W?BNTPT]cZZ\\a`Y--UNVW\aZXV]Zb2==:845545:>>A@>A834;GjKlIKFC@<8;~??@DDC<48|gBF-38 %+%2EWp{y]JB=>(-W.+Ļÿž׷ŀ뿸w5>ltOOsPgjRu_zN'@NKUhdGIwuwe~dFUUIY_NXCG=654?Ncm~nTj=B@SBETL~O"NPGubmjPMD>75CF6LMt`aClo<88AO~~~~~~~~~~}~}~~}~}}~}}~~~~~~ ~~~}~~~~~~~~~}}~~}~}}~~~~~~"ױۮȐޕ慒譊ꄁdkqh/26;<974:;965688:=<<:7:887886535:9888554T<@KPITch]^abdaY,)RSYXSZ[XO[\119=87645309;=>?=rggjrnliejGE꓾ɯݦɁˣջ١镈𻼾؁ޡܙ"ٺⷰ򣸁ʫRVVggcfsXoyync[_inorroni̺f]\Lwtuu{{uuBUqrvOS`~CIKLKKNMPNMMKIKKNPNNONOMNNNKILLLMONMLKJDjRUZ]Yix~|FDxyFGNQNOPMLJHMOSUVPtvyy_eXiorrU{t鞗砀w{{l^IIzt}_oVZ[XUTwT"|nٯkјqlh`]X`{gy_ #%KMG8I8458;9;2vNHEGB2Ual9>CA;:?;679778754359:;88864S>AJLFO^d[Zddlh],,`Z^cQRVVRT`124978:84527=8=A=pmmkuxplopLJɋȩފЪʦʇ´Ϭ􇆫εĽ"ċѵЩߋRU[e_f_siWrudop]iotvsookϴvr{b|}@<:=Pqvy|kv}~DHIKKMNNOMLLIIKKNONNMOQRNOPMMOLLNOOKLLIEr\Z^^W\n{|DF|}z|DFGLLPUSLMLOTQSUOv~|yekqԬdƖȬcսq\SwinġënuN^}ZNxs{y̓JZ_"|ż䤫ojtJģn~qV:#'RWYF%97;@?8+3C??AEmRI<=Z:BB<:A@ACs@:We@%!! =izwwyumdTJZZxcU|׉¾ÿῷÂjHoWK?f~{hAWzIw[>?F2aF|z}{bl9Zt9"=h|?K6;;8.OTVl~wzQ4[e;["euV~3ceF./$bovH0`?*Bh~~~}~}~~}~} ~~~~~~~~~~~}~~}}~~~ ~~~~~"܃‘ݳی޳󂈊ͷʹǼnhx-17::7259:96469:=??=97599676324788;::953ZHAJGIM`bVV1akj^0/d]^`WURWWT\[23778=979<9=:>B>ulk79>qruWW¬ńʣߺؖᪧ¿̮⦴Ȧ}"̷ՋꜙܽͅဈRWXjk{gd^_\zluhZv\cccknmkegSF>z??=wzS|û}@FIJKKJMNKHHHILNNPOKJOQQNNONMNMMNOOMNMJG|bW_^YSl|{FDG|}}{EFJMQXUQRVRUWWXOpz?@EgnЉiqΡzs݈X`q~ʮ|afhnx[zÒwrmO\}"zqϳɃwx\X֡sQs1$'QRQ;!A?BGGE937n99oG/=5(@d|;7=?q@CFz~gLmkJ5ShyCIO3:>32G`Zu^h{owtmvpi77:sw}mvŒϊšβүˇ”鎑ӻѽמ"Ÿد؀ʭYSYTqGnhtilvTg}doomiiju_L@@CLRZngʲα}CGHLMNRNJKLNOQOMKNNMOQMLLMMNNPPOMMKJfX`bZRny|EH~~?CF~~~|AFMLOSSRTXW_f]^Ovw?>@r~~si݊l^t˶{twuEfywu^đaXJGX~v}w[i{^b/%)+SK+HNIBxYp}EGgEG>12=<5Vqgerxu{{{]J=0Rce"zd[WHA:Mafkvmf::6Svl{e^62JK1*>N~~~}}~}~~}~~~}~}}}~~~}~~~~~~~~~~~~~~~"k€ԯǐʠ麭ʸ֮ypyؤX\38;<<8776886576<:98724.K@DGHDS`d]+.`caZ3100.-X`^e\\1.1523996:;@CA=?=rpl537v@=C؂Ӏλ՜э֯3睜ƚĨ̌ʎ¾Ѷ΀T[zT`xtYxpTV^]hsrpnhxeTEKg}cΈ]ѻ|GILPSUQLNOKIJLPSPPLLNMPQNKKMKLKONNMMKKGiT]c[QgsHK}~JGBCFF}zzB@ELLMOOOTV\db\[Oy|?=>HGNցg֚jfwxrne`aޮ`{]ؤͶpbk^irϖ|d_Qf"]u\zzstifo~~{g2%(UQ="@L0_D>Rs]RK\A9JpaNHG1"%-NoBB@AEzfahjW:-*,PP(hThur/Pfvxpqx{ոļ¿ǮƀꐑӀ胃ف󆏋vR\qG‰BDf_nb::[wW:57< ?_xkO6QWf9^ѕ_R=:.'?Lhsxrdxx`]YXLeg"{a9-9_X^=`K9@>J786c|]]>DKC/5>F~~~~~~}}}~}~~}~}~}}}~~~}~~~}~~~~~}~~~~ ~~}}}~~~"ɏϴŹղ같ZS368=;njnl49>F@Eoυ䶜㷯ȂᘈꖭܨǼǻߙ"٭ӉڋÀTZe\Zii[p~n\sv]V[\wtsppmĩ}natnhky~eˤtJKLOPONMPRNJJMOPOQMMOPQONLLKKMMMNNMKGKLtX]b^Var~IJFzyGGEHJF~D@>IONMNNVX^[YVVMo|@DGLIV}ᇧ{jÿz_`{qxLNz`g{̲oXZT~mÈr"ȷa\Z]yrrhPlzrxݭz{e|1$&MC33Q$6Bn2CUHP4M4-6HhYLPI'0.7gBEC@@xrh\cQ/>PS3.4IWYS:9Ypmk:z~ǽ׺㕧ƿµﺷĀ搗ݶֺj}f\|CrpzuI4nquB,4:<K|bXpK=gFPnvqid¹[<.$8?SJg\_MerkNdƗ`Ru"`9*:4eAJr\JK><:-HaXojR_^G1>5;~~~~~~~~}}}~}~~~}}}~}~}~~~~~~~}~~}}~~~~~~~}~~~~"ցᄏΊżþśsWQ077=A=;86886777:<:897:778775798799730041PGJNMTbb_/--\XQ]04730^[XTYa2-*3127744:<<@=<<8e88ov}CCK~}₍䁇Ìϱũߜō٠ܘǎ"ם񥽠ֻkUXhtrtrzz_fuuRRYZcfskvpmrmȸciʻ{h]VaiXK`iΎj~INLOPLMOPQOLMNNOPOPROQPQPMNROOOLJKKI=VP[__etzGIHvqEFJIG~}EB@ILLJHLT]YWVRTOCk>AKK[iw킜jkkjkajUepmxztlYnts_ƴs^[VPj3ubhrw~xs]^bvwvqneh[Viȴr{i?)*XE%/@??EK{wTPVUC3**1:.4`xv<|ƩȮ吟ĻºÀ¾؆ٯn^ڸRV]|~?;m{Ohd`J9F52 ~~~~~}}}~}~~~}~}~}~~}}}~~~~~~~}~~}}}~~~~~~~~~"\蹩޺μغ߮ꐑշyuo\V068;<99::97:<:977:877:;8688899643386SGKMHIZc_^,/^[Q\24:6f`ZYT_a2/12367753;=;>>@=9j6:s{=>BO}Յ􋗟怌ۙل͒ʙA㼥á̃󙟂ΝҀ[`l^cdcRSx\bnqi`hjlnmjdjOBnko}GJJMLKLRTRMKKKLNPNQQOQPPOQSQMNQOOOLLNNOCYP[^[\o|FH{qGGMJ|wDDHIJJGGMR[YVURUUHt>FEJM]rjnpmmppasTh^nyg~scͫZ\\UWVuېeپfg"h]RpxիvMu›qs}oê46]_WUiXA>DMK<) %N|\%1[`&%SJF?Ya(+9MmA=7{~@EGJHCArpws_OF1BJ#&33VruŸꐜļþȽŀڳ򚚓񄔕aiy^^id{<;>=<:<:n7:*?KOAF?c14@{s{UXJ=lulx~vfL(A.:~~~~~~}}}~}~~}~}~}~~}}~~~ }~~~}}}~~~~ ~~~~~~"乶ɴ专٣퉈넋έ󁋣voZ\[468:888:<<879899::878:965;@<27;;888769>:XKKLGI!Yg^002a]Z^127kea.\Zc]0/31255779AA?}>8ij><>>@7ڭ̗䀍‘ÿӱՏثڬ͞šϹز񫩨ǥ⒅fjYiX^RiZRQd[finoqqmliƹ\jkQe||\xwGHJLJJLRUTMKLJJJMOQPOPPMLRZUKNSQOOMLKPUJgV[[TWj{HHH|vHJMC~uEFIGIJFINS[\WVTTTFx|IGGFLMəiojpsrnsyungaupǢ`h˶DžycXUett˙irzpsrl"x[vcxhogғjeu؏s@?-QOTk3,MK^aJ>=BfHLp4'%XTPB@=>B?>S-DWd7MbF^JKcdhM;H9QxwTioclT<:@HF@A:>nsAMEG?GD?"@30GJ3SJ977968;=:6:?;46:<<88777=;YKNMMR`fa02eeb`_/03lc/./1_.//0/-/37:tٮڤο孑ʛ£¶"腑귴Ρȱi`wjZ}lr`_TRsr_|epeospmieczq^xc]eTn{GHJKJKMORQLJJJLKLORNNQSPMRXRMOTRQNKIHKRMiTYWX`hs}FK{vHJMFDAADDFGEGHHKPS[[\VTROFp:DFIQomc_VoxqsvzmmwveYqyԔjjyr`ttzrux{{wyvxxq"_\i`wixhrҝխozjxfD\@1B@C,+H9RPUbny`}\b:<>L~Y~KHFADCB"c(@V.4.[?/)96DawyuoE7\lTE>Jie=~~~~}~}~~}~~~}}~}~}~}}~~}~~~}~~~~~~"ׯЂĻƩӣ楨ꐻիŀ닕ͷiyaXYk79;9659==:68;<96597::;855646569<97567;8]LLMORaid210fh_]10230/3140.0.2//05;B@DDB?A;;8bd:<@[pꏜˆ눎⸲շֵހ䭍ꈴլ̭"꩓͹^mmZ}hReczk|XzioonnkkiĽflc߰^nfkJLMKKJKONLILMOLOQRPMMNLNOPQPMJGIKSOqUUQVbjs|GJEwJIKKGGHEHGECFIHIIKOVTX_\TTROGnpBFN|žSZN{zxxmuyxlZkU`Xdseu}?ezgzhViyzywzryq_]ZqXd]fd|svmqB'2IV5aD=NOQsytx{eU_a`.`n]X-*APbKx}F>239g}ADEDCDEB{usm`fzj9ELBFѼ屪나¼ûȼüú¾㽱΄񅉐٩FO?m`gZXSpqZ9LgCJKH?.M=B"~S:>.+(TD,-"*1KOqwqY`o_4@QLHOdij\<~~~~~}~}~~~}~}}~ ~}}}~~}~~~~}~~~~~"Ų׿ġͯ۲ڇˮ}baRS[f68;9555:;99;<<64789:89943345434964346;>fMLROWgrc210d_Q^24/21/553100.132258DCAD=>>xzSHUOHpn涤냗üöûŽӄл凋T]aHuJdKQSfRJBHU[@=<4D@QQD)I@Zfu{xnjI_~mONVbTxfTggv}WKI65\vFRQAuNED9LHH=7477898:9775568506314466oOQYSP_eXX,/d`X`jck32101/1/1139;9>@C@@@7;;A=qmry=FGKIĭ򑵽Չн܎̱͚聲ڔ딟ڞ"ڲϝ҇̓Ҁg\lufhgǑzY^}\mĉubsuqjiotrqrokãÿgXifjMMQURLJNPNMOPPMNMMOOPRQONMMNMMPNNMLMNRVWifalz~EHryHGHIGEFEFGIKLNRRUV[VKLPXRxxQe^X`Ԯjwr`m[WTNcjio\q]N]Rdmtĥ^ppʰziW\syc]n_^]uscrr"oolei|h{v~xmgmXN4VX<5HE5@8|x<=hAF0:h9=yqVUV#0F\kRXkl@J[rADAACBA?@BDEC|lctvձг۾򗠊WxWU?ZI1H5#%-cR,ED?@=A4;@-!3=z@4/W\0RY8r@}ztVJT4QQ>:Kb?@=w,EjHC>z;1=TBRZ8039@A8g}{>GJNV訏踮íԗߜǯƉ禐砳ؕ􄘐띤"ߺȖ̖ժhomzi|sYdhĐ}[dhhgbmСo܈fomigluutrlgfjkgǿ=ksbd{MQWUPMOPLJNRROMLLMNQSNPONLLMOOMMLKKLObWee[n~FGEqnwJGHIFEGFHLMKNSVUWXUMCFOXUFyyN``anqyΗ|ilgbXyX\\]x~iobiYtrktqguvTwuweW`]]m\lzs{fq"sjhio~|rbwn@DRL*"?@151x>?hB,/[5>BDwA/:.RevEBFo_dS[uCB@A@ABCDCA?p_f<>@@k𙯷À󌒋ܹĻ䃏aHMeF/EtK9.)5'0.7kGG?2N=lFRG17/6,\L;YihiendX_C.Ac~~}~~~~~}~}~~~}~}}}~~~~}}~~~~~~}~}~~~~}~~~~}~~}}~~"ꫝʔǁڄ۲񧼞툛퐐꿣ԫJGrWYrqtw89=;885106<>8688778998;74368:75432525jcV[VJR^_]2-1c_VQZff326//1468:99=?B=@=834lg?FEB>@ADDi皙ŧ̹Ԑdzĵŀ߈~IAmZ?PYSG8J7DJ-7@_lUP;xxfYQV>M{q:;34Y5tDL?0\S8@[@Iw`FVIEwrwu9:=BCEdAh;"EtWMD>@>>=849;CC@rR1>KQZvƠӬڳØӡﮋγֱ۸՛쓹ೱὼ削Ώ"Ȣ巒j}ZssnqeiinkY]flqsp_eptsfc[uyiflolg`opmllmǛnmWUoXmHINQRPOQOLLKNTNLOQMNOPNLMMKIGNRNNMKIJJKy\[`U_~EBCBxnIIHEEHKLLMNQWVXW[WQPUUb`^fAS^]lfƟ~z~čӣ˽~lz~m{}fibxpzƜyUfkhoi"vhaɒifirj}/>Ub/L11HHITEh>>DyH:HM-8CHGFB6;bdGIFt964hsiBNqGFl]jDDA>;hZtCBBEEC|[v٨ετƾĺ̶žմذbAlkY_DG}`raHOd~vY~{vsTWDBlcH7;;8>@3H_?1RL>PL_DGGigob!D|rgdj73=?KM?Q"nTNQL@YFChkQL`fe4;x~ocA=?hRKRMm~~~~~~~~}~~}}}~~}}~}~}~~~~~~~~}~~"킂۬ܩӅދͼ̝묡ڋUL[X3228<:887521334:98;;989;96663358::765768:scXXUFGU]^0../_`V_hbZ.+0226567:;==???<98>>AEH_R7BLUcĐџ޽Ϸ讽ޮ׺ٲ쌤Ҽ"úϸԀ􃉊ޞﲡԀZW|}kmjjŗlr[_chmqp|zqxuhcfwgefhecmqonoi]VXTv[pHKJMRSQOMMKIJIJONMNONOQTROPPLGFLPPMNMLIHJsZYa[dvCDED{rIEEEFKJIKOQTVZ]`\VX^W\ciydIVbdwφ͜g{ñz샶}otygq_vhf{lSBhrXcly"nXqq^cbccŵniia|?OS_gNsYB@Bu>:X/2;EJJHH;:XXDHF@ZK9gsb?JdDEqlBB@@zhSeBCDCA@uQiŰݗƿýžԾºַ񓖝ûcocltLWKYX\Yllx|y[\In2-7GAA275njME>OYMXE5Q;=R< C}|}db`2/3:7;_J"VOMMOA2]2DFu2G].39>~}~_oE@B=tolQZ~~~~~~~ ~}~~}}}~}~}~~~~~~~~~~~}~~~"߃ߴڇ揘Q܍㱢͘[CAxYV123798898656597686<:9::;:6898587636657pf^XQGNU_a1-.1_]Z`dc[.-255633678:=?@A=:>@?>AFIKDILXb|եɚҠȖݦգ/רǩ򝳾೚ۈـYiokeho\chlnpn^U`r|vqntbżgdbaprnpiPIGsZmFIHLPQPPMNMJHJIKMKNMMQSTRNPQOJJLOOLMLLIHKq][eekvFFHG}tsJEEEGJJIMNOSWZZa^Ya[UVW_]YS\aku˟`~tioȮnyr^uravu_PTRPCmg_\kw}"|pzwzr[dhlf|nijcgT1RLRQA>NXfjS{XECCv:6W16>FJJE=K7+XCHEEwBGpxtMMlFBCFlSXrCEFDBEmĔþŹ񆓗ֿ惎q}cdqEeTXo]SOc|mLJ`2-<:C=6>MrbI=JUWC,1 ! "A;ruwrjw;;3358aN"Y\XPFCBI;@A@53>H-3:ExpCNFCE<>}}YI~~~~~}}}~}~}~~~~~~~}~"ကňŀ񹔞ޣীݯ؃ΨkZeVS44599::<98:75866559:9<>=:67:<987877656313nh[WPJQR]//-/ghb]abc/.0023324388;@A@?=;?@b,!F?GGKW$0tras~}CCEtc[nDEDFKy§Ӎƿ񀆘݂ez}u_Cjavafwv~arZl}nhw|xsS&1.,?C10TcwUAHV0VH&$39;0-2ojrxvHC<-'=DY;"PbdTDFSXEB3-0(",C+8==:o:ABDE<<>AiV}~}~}~~~~~~}~"ֻ̔涔琖שѿիŽٹ`O]VW25588:;><B<878<<:8676536610/hcUQWYXX[//10ddc]_`e0./.121044<:=?@>;:=AA=BEAAFGHIOSIѹ̲ƲԼݍџԻѤ"޲쏜Wdd¹fnYcknmnpl~Rs_xwhxWdçmofpzku^Y`[e?FJMMPORTVWSNKHLLLMPSQRQQPPTSPPOPOMIMMHJH}e]giio|CEIGz~HHFGHHHGIILKRVYUQNQWVQW\_`c^^bgc[ȤugɤŶllèrqbwboaaeĥhV~wcalilNE"d}^g~weoqg]`hlhnrrjhggW-NHNWSH>BSZTIU{h>?S,6@EIFAAvJ)C68CFGo3)tsphTPkAEFsb\o{zSzҀƺõ̀󂃔𔚓yO]\|rkD>oU^r}|suEw_gZAxqvmeXG@6*8@-%99haMLV85fPI"$G>7::9gnnr{LJ2"9=U%"8YcVEGU\QM<#") *D379:;<=@DHC?>B>;~~}~}~}~}~~~~~~}~}~~"섃ꂃޣ㶗򑕗뫜鏕պʦ҈UMYW\a34677:>>>=:788:9579;>?;989<=987441/3311bf]KK[d_]``a23_\`Z``f30../21269?=>?CABFJA=EHIQQYXXحǰŐБӶ󁅁շμ슉ϨλգՅ"ΦVSUXYXqdǻjtYalpnnqnhzmihW}Ngкgyog{{uxɜKRPW^\euCJMLLMQUVTSPNLNNLNQRPNORQRUUQONMOLHKIGJ~hZbiiq}GGz~~IIFGIIHHJKKQSUT\WUYb_blgdniprunv{~peø{tmh^f`~dijc[`Qh}Yr]Yu]vfx[gjddjdgppoljmS,(P-1^NEL./VDFi~{c?CV,7AFIFA?=lTFJh=?>]%24rzT+ Ez{DCm^djcZkzR䔱̀얢`xCDNSjD=}j]pzuj}}qNLg`CBusvk^-%!:?R9'.:@ZXFCc:632KF3!9DA>5pcrw@D+!54YK7"!T[W@EPURQT?$2-('6L-6>@=ACGF@?BAB~~~}~}~~}~}~~~~}~}~"݃ꁊŅ갱䍒яã¤dLT]WUY148978;?@;76::9;8867;<<::;=>;9755224321cgXIL`g^[_]`/0a_\\^Zc61./1231479zvn9;>@ABCCHIC?CHNfffelȱʯõԇթ麦ŢͶ޹"ҿ劕TVVSYY_[vdjʹqXakomprrqiidfnvmqL[lͳiˀ~CK]b_dq?HMQWYRPOPNNNKNONNMOQSTVVROLLNMLMJHI{bXgkbn{DF~~}zJIFFGHHHJMLNNU]_`[WZ`bfjkorw|~oiefvyofuxcJopѫnu\phde[fw_Ww{ctxXijfegegmlrsmoP,(([1XMP,0/RBDb<>sjP@w{Q/p}CohrmWp}nyvˆ˸€پ߉P_QFJfF?w<QEMB"P]X>FPSRP^_:;4$%3@H4BEB>=?CED@@?C ~~~~}~}~~}~}}}~~~~~~}~}~~~"߆􉏐װ󍗚Ô̯ㄜׂoF\aSRU_57667:?>;88;:8877417:9::8=?=7765543221`f]KH[cZZZ]]//0deb[T`g001334226;>vq58=>?AEDHGDADFRtwz{냊ɤȭމٿЛڑ۪򆒑ʞ㽁"톇ӱ܅WT`dcainke}Wbkppqsqon[rqlmyx̾u@Fy̸rr{va\I^f[`kvBGLNMPYYTQOOONKHJKJMMLQTTVWTLLMOOMLJIK{e[npdp~EFF}zIIGGHHHIMQRJMSX_^\X]cfedgrzy{䛥omkflnmμnvipgsgSmxwixpZab_ioUkR\o"m_YXTtiwVfmmilmnmjoormR.(KSQ@CS-/14_as?ABDj?>@;VVp>?{hMErV Vt{yo]cUTd]çûÀἱRljX]tDGF@B<:}uYkwmDNnt?EAwph;>9H0B%CK^;<\P-)NS87][/30.NB0;6A=5]]WR\\_V3Nj"4ai0FORVSM.-'G9#-EZ6BGF><B@ ~~~~~~}~}~~~}~}}~~~~}~~~~~~}~~~"뇁յٍŗÔֳиֆ͑IUWQPWc77987:?@=<79:865443798889>>=77556431//ahdRJR]XY\1/0/._g^W\`d002676638>@;<9;:<>AFFIGDFHTm}䃈Ϯ텢ޮ뢄ÜҤζ胎ʪߴ"Κ里ūWSxg^beeZ_immkVbkpssqqmeqzwa|źYyB:e¾l]_tQY[WZao?CKOLOVXTPJLQSMGGKKLLJORTWVSLLMPQLJIGJ{idqviqFEGHFGGFIINTTNNPRQTXZYW[^_X[sy}alsqlnrql÷stholb[MjrulW`ed_d[YjghZǓmon^UWZYVinb fjnorssjiecjjZ2-RL8+=P+,297o>CEEAlJ@L.5;>@A?BB=_Hc?=>>RC=R|m.+1\qmW{,+Rn莶άº÷ǀ׼焑ӅHVg`29?GJGE?>y|whoo\nzLgx?CA;jmVd0MN5lwnxmfM60RF-T[27510`OY?,:1S@P\_2j@2T"b@?<0-TURL*)))G6!Ip>EF=8DA~~~~~~}~}~}~}~~~~~~}~~~~~}~}~"cʢ򁍕Џʑ˜«cg_RUQRUe6885:@B@<9;:987676667;::97565991*/mumYPX`]]`100../]_XW_^,158:795:>@>w?;87==CBFEHJN[lv˿ϊڃɼ;˫ٸԞ䄉ѹĀ[Vic\ac`]]fmnophUZdimpsrpk^pxtax}J;Tylgiruy[phUVVU^xAHLKPWXSLGMTYRJGKLKKHLPQVSPNLLOPQPJEJ~kftylpEFHHFF}BCFFFDIKPTSNUROMTUWUWZ]Yay򋬣hrrdiktpķn}fmlϸÿ__{Ÿseb\beefQ\`]\o"^ttoeVUXXT}s\ojkjqsrpi``62WJ01GT,-2668>DHFB9WJ*28;=?@ADB5N9UA?>=PB9KxjX/9ZuJLkZvK47d`ȉ޽ȩ̻ſ퍞ҿte]_aTY37CDB>ABzy~tqRZu}@ECwepo3!0[A{[4?N&B[575/4[UMYQ==Q`6-59N<*l"FEED=1TOPH&&)*WH,'H6CEDAFF@=@=U^jx~~~~~}~}~}~}~}~ ~~~~~~~}}}~"ԪԆأ߆ټŢnBiSTUQOc6766:>?A?=<<<98::648775369==9675=?602iukYRYd^Z/012.03``XU[,.1479:;76<=rk;;76;=@AEHEIQ]YÐå􄕗ɫ兇䗉ͿŁض"င˿鎖򽵱]X{|X^ab_]_glnnojZTW_ehkosspj`ihul\Yzoh^zOCNZj~mjur`^f[GtTPUT[v>DINSVWUNJNW]QHILLMOKMPNQTSPMKNPUXQLL}j`iqdh?EFIGGHzDEEFHHFJLOPONRNLQTUUXa\_hjyՕ«a`]tym|sveioϪz|ξsmxUbXfhg`cRvosmhi"qrrojX~SVzkmkglljgea4/SK;BR.121/16<@CC@9/(,5=>>?BDC@5=AAEC@U%;@H@6O*=Zl|FD|mhbd9#*F荠˵ɿý憖փތfymjdTU10rph3=C?w||idysksv9=GhY18Fvya/+A"&P02/,8OF6MX$3>E52>\>""H@@@?5PGJD$'YQ]TE2;]BGEAEGA<@zGRCV ~~}~}~}~}}~~~~}~}~~"׹쏗߰䀊߹{RlWTZX\hot69>===>>;==99==846756479<;9755?FH@94neYQ[e_W/222./5fc[\_,001589<8j<:643;898=>AFIHIzmޗپ膈麴ǒֺ۲݂̾ǕՁӵ"ҵ嶷􌔌ƾ΀b_beccb^\agmkidWSV^dgjnrstnbswiw[mph\rIAJNvjme}իPYWOz\U\\ftzHRWUUSONNV\PHKONOPMLPOQTTQOKLNWhpcRFzk\dkbf@HGHDEHCGGFILIKLKMIGGPUUWZ`^g疲ƶ][fst_vqſnrrtpidfͿl^V^j\p\{yuҿWx|sqqpoY~}jjacfg`aŢc71QKHMW26760.28;=?@=1+/7=<=AFGC>6A+I~IExHM,P{IHB7L# VNjB?9mdbh̿o Jm򅔔ȳõӀ񍩷f|{qic00USRUT4<:@8QHC>HR\OSVMD;TwFF@AB@>@shR\~~~~}}~~~}~}~}~}~}~~~~~~~~~"ַE|saTWY_gqvo@B?}y=><<>:7:@>33889789879:77@Gc`K?n^WV]fc[0532..1gjece0./349:;8j><:8257:8=AAFHHJkܼ썊ܡ礴ɽǼ̤څ阍חȄ"Ŷٵ򌋈mlqzplneYY_hhe`UQTZbhknpruob|yklimmg[qv@˙hmd~ڜ\\f}Hp^_emvW\UOPQTXPJOTVONNNQQRSSQPOJJTcmSujbenmr@KHFDDFDDGIHLLOPLORRIJKPPU[[^^bgx¼c_ooU_h]dpnvxurgiZju^oKwS|fɜtXh"onopo^c_`bd]^ifcflB=VBFQ]5,-4;?C?1*.6:9>8_[UURsDxD7]zPI%NvH/)2?^8GH`epD/rG"DA=?@@EI;;~~~~~}~}~~~}}~}~}~}~~~~"؉ᤢ偌⚜파ߧãᛣv~4oq3.[afjmloADzsp==>B=6?><4/6;:=@CGGGL}|팏Є应Ӽݔɹޭ۩׼"ʽŹ셊djmp\_hcWQOPU\cinqrqmc}vvqVt{okjja`Jsypd~VM`x=C6cszX_PQUXOJS`fQLPQQQRSSSQOIJMQ]enjTkcdokj@JLFEGFDDFJIJNOPMOSYYNEGMQT[``afbȨfl}wUYWWPS}Š_]vr^bvntxtj`νcγ}~RBOevqΙWb"hfmjjeZa`c^_ehhlleA;J/;SgMohgzW'8V:?>7,%$-78;AB>=8.K>CiDF:DcIFDD=dB2FnZx?6bikz}AoЅƻųĀzk_goyv=@sG7CUW+,-S$"'Agix:&=GK>FRqDB?:89u_:7?FE<47;=;=?967:$1MhVyano'0Ru>;1(&)1899>?;:6-%;;X>D9HCe?GEB@<4S< #;e]E9dnnovgsöЬꊜezm_hisy5RELa[LXZTRIT_ae:ADE@@DDG? ~~}}}~~}~}~}}}~}~}~~~~~"̢쐃ݔ孇ڼԑ}06638Kjlafflvsqv@E?BEA??<;<54:=9<<7799<|:5464:HlXRcd_285kjie0c`^[,*0/235988;R48VVGPMNRSbqemm=><8;@BJw~~~~~}}~~}~}~}~~~}~}~~~~~ ~~~ ~~}~~"ȦɘҼؒm_Dhv96:Q|n]ccftpk;E`RBBCGN?8856:::<:99;8;=942115txp\R`cZ244njf.,^^`WV*0/0237:8;CCA?=8<===CCGLdؽ焏罀ە򶂷Ο"̾`uRRQPbaXRQYi|Ybmkhe_ZTptmnppoheb^tltkuȐPkvl`NMPiP[|p\Z^m{`OLLNPOQTRSQPMMNMNNNMIwrc[hmsAGJCBBEFJLKLLJOXbb[VQTSSTXYaeu餾gkh]bnpp`tyor`yps~SUpʲ]~PfZYanxuog^~_mokj`º`"cjlpqplkosfQPt6\|j<;<U"$*FKL~t}u\|E?üŀ߆nklwqqtu|=;82g9@CCtg8?BBlS5a~MLCjRU"3WRrk\O0mGE[&`nE KIKEDGD{K6Jh<*_H8:>|gtv}D"BDEF>9=@Hh+BO&(MJSS`wsskmrha`oye~~~~ ~~~}}}}~}~}~~~}}}~~}~ ~~~~~~~~~"؁åւ֢ڵl@o\aky<:CCB?=8;>=>@CHP_Ȕ腓٦äًɶО؈ЪՕ"Դװsv[\PSSTW^f^TYfzYamlgc_WSNb`qsnnqsoggn{JrxUƯYG{`gjPPRdpzR^|a][oxTLMOPOOOPRPPRPNKGvlof^jot>FKLDDDDFKJHKLMSY^a^XSUWUV[\bgugqqifksrd{yvq~gͻdgvoY_ldsfvv\yzrkazomqkb*dmkopspi~cdrQPvtB`<5FEWUJFH##%+3jBF[EGIN;XxBF/g=.-@N?K_bSN.AEF}{"CDBA;=AD[ED34L%)UMWO]xyzww|{ohivfN~~~~}}~}~}~}~~~}~~~~~"ꅍ烁…gEjp<8u~=ACHU_xȀֈᆉܹ㕺ᶓǸŹޔ¾"ԾåаZ]TTSSUXXX`ikZ]q|hZbkkfb]y^WO_V[hooppruoffnhPpvH_doۼmFyYU~NYppa{YhojURWKNPTQONNNOQSPNOPMMJHtvqktuu>EIKGFIF|FIKIJLOSX[]ZWUOYc]bhqwohƺhpsoqttiPwqq{WwaXhq[Sbfysm|wrm`nrsnfa̼"cmnnkrwjzoSvo{ia^L`74'ISU))***+/6=BBAAB@?@@@?X#$#-eFMtۢë맭ȸƼ򗻹À慠ኟ@gE>st=<@@BDGEx^I"9yJMrO;=KC:;CB.45?KOP9]+)GkS3 *)-&gmHD>?AAnKFOMZjJEDEHE"BDB@>DIGSFcdGU)WROZ\fEA>rvdM ~~~}~}~}}}~}~}~}}}~~~~~~~"򊑋ꉍ܎|bimpBDHHFI|ILKJKKPWX[_VTRM^h^ago°kmjgliffhlh]etbyirǑ[^sQ|dcajuul^aUcrfzpxur_fsqmgikjkŤ"aknmlkqjhjxryǽggfL`44,'M'++*,//1:?8Q5:]2.7=934<<96-E1+)I7:@EDCEGD>=<=>?=<<@IG?_GLO?OZyEIs>>.1GOqB/*-+39BR/&9e1+&Y/4/@uq@A<9:aCDMGEP\gqyzdAvc`4878<;9798;<9;;86468gafhdaci75856017ksm_Z2467789v@>BB<<==ACBCKRbvդ􈎑ǂ쑲ȡلڤ재º扡䰾"®󋙜yYZSXXVY[Y^a^d^\dotmjjfaX~crTlmonoqrsvshed]pptcP]?OSYaW`f斌hOKOOPQOONPPSTOOPQPMLIuvxpnu{?AFFIEEH}GIIIKKLVUWWQPRPRcd_chq˗glmniYudvffk[]O]QnYZyVhnpgqfmjis{wwr]^pqrknopsm"\gmppijihddhbxxilmemIX00,SQS-*',002;?oU=Ah8.2@NO?6775.K@FB(/-:;:>vGDD4BKb@HDocnΦƸҌȻ񳩸甄߀끈々чyjh~>>@A=5dja5LSEQ=4MeCW-'4djN<($(394(d9DRWkBJEA@JJEGI}ih">CCBDCGIC:9?{>`JGN^u}wFC@;wO~~~}}}~} ~~~~~}}}~}~}~}~}}~~~~~~~}}~"͵چǶ؆ΒN<:@9?LKkawnfsyKǒM?nd5978:9:86:68>>CCDCDJMYۮ뇘۔딢۞Աܖ㽼倕"ᴬ⊝䀀n|XUTVVVXW^Xdcc^W`llpomoomlnohb__]y_mp|ԥ[>7GJKS\n~^ˏbQNQNNNOQPPSRRPONPPONJE|{~vt{{GHKIDEEIIIKNWURKKPRWXceedir뗯eqpm^R]k|ho\VIY`g`WbWZ[w_^rbfyxpθxss_Vkgsmkjrut]"WekqoiiifbcijhjŴcmoiZfDBKVNMX^.)&)--.1cYQNVj4*Qz|c/+34/G=VR%(Z:>ACB?BD@?<8:wT)+Vmb:BIlaoqóӄׂ솥}|DŽрᆈ􈠹㻚fme9A@?:dbwwV!5NISDXD`hjX 0.9Y??=IMC"-DIABK=\U":AABCBEIB=>BBAFwdTTSSWVsx|>??60pL~~~}~~~~~}}~}~}~}~}~~~~~~ ~~~}~"¦ѩڬ󞦧ު胒𥓕ݗUF=>KY~do}DcՌI8i567988:98>A?<88876647gkokjjifkk43313734`[443337|~{?<;54:?>BCEDEHP`昩̲䆣ϑһ𤪢ЫָΧֆ"ܽ㍣ӀbZiXWTSUTSS|~}ċ\[_\Vuxmflqnlllkfehfa]WqaYhqu{pK@FGNi{Vbxv~TJMNOOLLPPQVTRQMOPQOOJG{z}xy||vGKMHFGFHLJJKLMWRQLIMSTVW]chekx·mnmicQlcy`j_dtWTvoq^uxiqgoq~٧tttammjhqowc"T`ejnigedbjlokhirgy}nyavqW~B/8MHDT0+&%'(&&PNDAHTd]E>f|h-&-0,91OIC$U:>@AA?>;FOgVebSڈ󯈟ڙhX_ƀŷڔ҇^gaUf=>AA;pqlT@0LFp[^raK+<I37:>:57:exFC<7fJGDMMLLtC=BG>?L>UH"1:=?@@BA@BB@B@B}=roR;6FSPR];A8'Ld~~~~~~} ~~~~~~}~}~}}~}}}~~~~~~~~" ӄݯȹԒ’å혁kCEVdsygvHtd98447999<;>CE@<9;96655nfkjikiihkhe67425562.555227~x=:997<>?@BDDEITg䅒յϑ˜볈쫉گ򍓒ഋW{TTTUTRNtkig~kVX][^moqnllkjdaddb_[lZj~avpyz𗊛LBHPtzwWtfkMLHILPMLPQV\WTQNQRPOMJyyxz~zz|IMJFFGHHJNLLJJMSQQPNQTUTTWZdemagimjdefbkͷg_àЦST^smov{U^druzזtt~l`eXhM"QX^chda_gkqlgdgdc]d[`yVieaK1EDVD)',/P5,jhL-W<>>>?=848A@759mJGzr?OjKZPVaz~}͆j^NHxҀ爖ӿbzujsc_R^7::;=:4H>&3:>=>DGlDfeHM?HOD/Aknn:6DpK "&+8@>=?=w??:798ceEoigGVME\s~y̹ǖjNuEJLrù؀ͽᇫ牢QX`hWYd7:@B?9o^NEROMG;Up~kWc}yx]G-: -?NH=0,:5)2<835=[ECinr9AB*7E77}>BcWXW]A73" !3@A95._i<=A?:~~~~~~~}~~~}~~~~~}~}~}}~~~~~~ ~~"ڹّ汎脌˕ʱފ瘣󇍇羫l^`\ێڝFF~t=;<=>CPbI937767875kdmjekqpjlkfb.386755/44437875<>;;7?CA@?A@CDGP񋋈ıקԛތ˱ӱͼ򆎐ӄɆ܉"튄؟廻fwXTRRRP~pyOU^c]Vd|gyjpmorqlc_cdcdebgkdpg{srt٠dY|q|kkonϹm[vAHQQNVpiSPSPMNNLIr}}wyzwv~EIMKKJMKLIIIJKLMPQOPNUWUTTW\`_dpsuiȵnmnoro­׌Z|e{ťwydt^nuoqtfboiu]\OVY_epyuiz"RV^ZRTzjccimmlkZzճH=C)4>IY/+(&$#>:BT_PRq|cA,+'.2/-J-DHS19T=A<<<:70/9>;:<=rqOI>lrvRK`MGe}^⑋玐hуulCEHy犚ȳۀN?4OYKds>;@C>8jbak\Y~S=WdtO0E||ntF@Z6NV=4407>F>8/22IO$/05?o)(?CDDF(6IgL3%0":$0<;/&:??[hwy<8=BCB>iA554ftkyXCY~~~~~~~~~~~~}~~~~~}}~}~~~~~~ ~~~~~~}~~~~"񋐐ݥ삋ݭ؆끏ɢ՝˩_dèٯRwy;=?ACYvZ<28:65565henhikm8hijd[+065754369636664=C>:>BFCB@@ADEGMm휡׌彔ܦȼε氛Ȼ虣൴"򈌊ǜ¿ӭ؅friwYWSRQOvivSWcf_es\nnoqpka]`cdeig[muvedlyϖéj{rߴgunhstFQROXxrVS_UNNOMIs}{t;t}EHLJJJKKMLJGHKMMQVTOQUZUUSV[_aeln\b{~nfob^dj|r\pʬuhdڞpS|nTzqqagr{]eJr{Qos"QORTOj|hnke`~kbWUZ]>AH0:L]0-)'&%A9BTb[]vpSDC%+110`XFYHH+-<6B><;<;2/5<<;?@pi?GB?=p`DMjRLqdІ]_y׾ÊDHFJu޾ִǽƿv{3$=?34WmA<;6ggh<=>WVE{e{M-BttWQz7)NJLh258-:28:V8)R(4C:IC<>pi^E?"E+*31D/>5FSfRfo|CEB:9UM:2dxgj839~ ~~~~~~}~~~}~}~}~~~~~~~}~}}~~~"ݐڃۛꄌג񒞢ڢӣŶp}̘Q_v~{87>??Omb>8><264655lkeiij624lf]/35466546765746:=A96=>DBA@ACDEIUͽԾˁʀ񶛌àα¸Ẵܶ䉐"񺱱ڹʿƌ^^`dhyUWSQQNmÀ][]\^]Yiqhpqplg`Z\cehlj^^muwk\kug{fji|ᝑgsncu̬kwzBHOQVnuUTc^MOMMHB|zu}{v<;3-2;=?BA;n;<9:;r[=IdPNn|iZnFJNvyӹڶHIHKlײ񄛷ڳȰѼہe#&5QLvpiM`if:DC^/N\{RJ``G>Z9aA?@tG!6=F2!33@DC>Cf8LZ<0#NHJ[C[\BaN>@xn"/2.gY3)7XWIM[FWjsGE;q^NN> ;NHa::;~~~~~~~~~}~~~~}~}~~~}}}~}~~~~~~}~}~ ~~"􇉆יˏզ抒ԗ뉙㤀á։{ׁ̆tF\t}y86<@>DZ^A9>;274579llijlj553g`\.3558877543784:@AGNNHJHHJJGNTWVOIMTVUTVbcg̈́J9}r=ytvSRcڀh_gfΎgŝvfnusq{{vpnXYTMk|ZP|Yzo}zYq|ywypxg_Qeff~km[uw`if6H[q**=JQ+*),S?2\gJ_i9mQET0/..+(SUD&F\t27Y;@?A?:5.19?BBC?;;98:;sY7HcFHxW~n_c{CZ:*BqFFHHIEFBbL0 B;7231A,^LLGOf6q3'K:QNFOFmJH;CBD"8:AS$%B@BMaH:998:778:nnhmnh46cb^.-048:774442775:>A=859=>;5//5>B?=up;;;>>o]JYqD3Zp\^HDBC>}óםTxGLѿ̿􈓙`=! (@j\<_szBEbGSrqphDFCmL2?SuCFE?B=5L@0%'MVG*2= #KVLLTlPc~E.AeL`iQ2QGF>@?B"?Jpw4'?VA-9BB-EjB9op]ROV6R>[6<~~~~~}~~~}~}~~}}}~}~}~~ ~~~~~~~~~~~~~"􃆁氊Ⱥ〉̿扆넉٣kӎ_ZcEw~~{@@@F`R<8:;>:98srlbikjjicda..026;773353666;?D><9<=::=BDEFFFu֣̯򱌊ׇⷭ∓ǹѵœ𡘍"ʤմ쁁μ޾խXqTWPS{dcw_]XSPRRxkrY`kmjhe^YY[be]UXcirm}rIJo`cjiɢ䁴yimY`pOOQOTqiOHKKKHHD~z}|yyGKOMKMIIHKLHJKKOV]UROPQPQSUX^`dpɍkm=}x~}|twԇďZZzgmmir|gmstkZ}iklyqohVT|aݶÂovsm~xwss"mzÏ`x]WIOal}Wghx*FSLPceLB*.)P)F20w?Lg|~p0-+&$&)I;3-3DWUM.9?=;<:4.,0:>:8kk<<;@?pkkpuK9Yrg`uIEvv@>>ݥ_}IM只ÿ󄒗T5(! $ @kmeWmos|tR-6NOWe}BEFBlE,?>9>8^YKA3< -9cM% $1 8ABFKivxuO1Tj416LHF@C"AY40?H73#78R]FXbkMjP#5S7@ ~ ~}~~~}~}~}~~~~~~~~~~"څ򾞋퉘޼ۦᇔ֕O\JG@zy@@CII?99;?>=<;;ADEEEGJOƜâ󇓏逊؎ݱ鮃г"Տ֧κϢaX]UUWTSVvi]}grndYTSSR}rvdb_`fhigcYTUX\^[Wafppöwdmbirrml½miXSUKMMRbaQHGGFCyw~|=zIHKROKIHIHJKIHKOOSXTRQPQPRUWX^``gtǗ}D@>~ލǠnjVbtp~chifd]_YUX]UcJxZVnmȵ{\`rswu"q{ŹenzirqX\idqmkx0PXEG02(I),')-M;:C~>Sp~DE9-)'%'+O;/-6La1-/7;;;:82+(.5887ikw:9@Ay}zqRFat:ipCApn?@?@EқlKK}󓟫ǹbhD< &##,BnWoqlslS19=;%WgZp?FBT$4k952065e;7eNZPY`k-B2$#"799i|CB|`c_:(\pENJED"CNCJNRE&6%0EhD;$*EHSzDLQ0Js>=???BFECDHUsż垆̼ǯ̸冒饗䀋ѡ惫VTUVVW[^Uuit\mlbXTtw^gidbgjjgaXSTVUVWZ^a`mtgeiucejnjbovvncl茗jsfsW{eORUXVMB@=}yz>>KLKKQQJGHIHIIHGJOSX\RPQQSSUWXZ^_co~ϫňihRvsuҬơrRezr~j^[U[`dqpkfrWrews~aVUfkqzkd{[}vv"tpbW__alZo`apuBUi[V2-O+04246+CCMKQag:A;0*PK)^YD4.7K032027<><82)'+1588hg987@B?D>nXM^l::<@@;uAB@=CSvoFIGn߉󀂀򁙭·{ZF4",37CTd}xjok_:2-#^V-;]@F5=Bmj,&%047@BEw=Az8jRE8C\5;5;XoBFGICDk>GG2F}E>"FBTDEB686]:C;EV:P0<1Ny[G7ET^`@?~~~}}~~~~~~}~}}}~}~~}~~~~~ ~~~~"Ӱܺ肏삃ԟ鄆ߍrjzʵӗion|df{AF[WL@p::vvplrurrq9:wqk74464745676678;|EIF<:;9>B@ADEDEIQa韍܊밉ĺǠÈ󁈑඼ˢϷՕ֎"ⳚȰߥYisgSxqpwgro[YxS\gfcejlhaXUV\]cticdtbensrmjmnngtڟnthʥwyivfkTovl_Ku::z~~y{~}<=~~FJKLKNKKJKJIJHFVh`PMPPSTTWX\^_dnŋ{Psl}v֢ׄuҭqbawt^Ÿ[goqqigkojedbsfwͭkvvna~nuSuXd"pcfiligmg^T`oqqwc[qpl\l|yspRBRk><94(DKSTRTXS^>HC2HCU3eUB9:D$)01/08?=83+(Ubnvvfa88iGH?EPB/?_5,"D>5/8>9E9= N5XF4A[E@379PN\nJC? ~~}~~~~}~~}}}~}~~}~~}}}~}}~~~~~~~~~"꼻݉ɚ쁇޾񓚕辗~̈Ջy|FOH|q?Ity^Eo69opierxr8tq;xpj83377966376469;x|GIC947:|??ADFGKQfꮧŠ۝ެͅ߄"씡灇⴮ӑ¹is~||qlw~`\`[~agb`ekg\`lhr_aottqigeiiyjmkʈhpFRKLYeLs8;9?CBA~fcSyJMIk삒ÖĹݑǾ¼𒢪lxcSeuQ(Fso|ztyqReL{O:;U;>87==fMBVim>EC@ADA??DDBIAMB:=:IֆthlAQUA/,"+/("ku@;;=>BDBO;#"$6:W:D^@D'#%CEM\~KJF ~~~}}}~~~}}~}~~}~}}~}}}~}}~}~}~~~~ ~~~~"ⅺďͰҀ働ϺƈؽǬ̥Ыα؄|{?>:9Ky\Co2665eepwvwswAHsj6436:999346547:vuCEC713:>>>ABEGMR䲡ታĭ썍ɛʡȿɟċҖʍ􂃍"숉󃃀»b}bkzx{ytglW_ffurZg`Z^hgX}{dtp\kqplgebhlȭؖfhldzno{@>=?X^Iz9=<9nnv|{}|HOHJJKKJJIGGIIKJJYcWJGMSXVRRRX^aj©kxto|Ā~kPuslrygƦ^l]akkpnmjhjddkusncqwyʢiq`LDM"mlnhuv~pUWP^wfnpgXkcdn~EKUNBELRhGD/JLd877]<+&!1-5.),123\OIL[n=xlef^JNkpmrgXQI]uy=A@=97"":UF?@CEFKL̶Ũ賮ғ͎ی"݉󎝜΀úddkx|bijctk{Wf`XX``Xh_na]rprvfoohcdcfdȩղݧhhkiWEw|BWzyNtz<8nhks{DLWIJKLLKHJJGGKMMJXRGJKMORPPQW^_cgjpڛziZZJtufilrzi}iťktpigiljfippwmgl\aoΒk[f"aXcjcnoUQXd|UZ}qtsy{ysÔ넫麈»󁀉Ԙ˺菥õnv?}s}lh__H{pPC;:7aSa>;x\2qjfhjc~mQQ{C=8?E@?CDBDEJCCm=*G\@:6?HQlS?(;?)Y"2(F?=DBbzX6S2++?C#mAgYK9S|DI?Q~~~~~}~}}~}}}~~}~~~}}~}}}~~~~~~~~~ ~~~~~"Եȳѣݶ슭칓֏ﲅruzw{K`_p~hnolhVTa~C?@wj:9:7:;978633366mqwB?565789<<@CCDIYȳٟ稆Թ畚ى㐭c"󅁆ہᛌäĽbgbXTSRW`egie}htd_YWYYW|wa{xiuhtsibbdd`ּȭmgjjħi|v_eco{{smberKFBKJMKKLIMLJGJLMJWRIMLIJJKQTZ_`hriiɲœ{dzlua||WMiVwcǺ~vll^acgkdlprvsh]{tse]gpȺjck"{_]]_blPQiZhSxjkuu{;|֠呿ɶɇƒƽ÷ow>;vy}{rhSzi^9GAQ4H\WcH1*6B1H^]*7Rw;uyKMV.3\s;4=E>:DGEBEFEC><*5B5),M3Gk{4,H;e"\2ps8=@9j`)W*!F )S+@=cH4;*1112.(*VQbr]Q_32_hlZD"0P:FpTO\uDC<97<@?>xxubYCEHGB>~}ѽČľotvA==z|ywuhek||TdbO1AJGZ@4PAGGKzb ;Xi8Fo=8Z FTf/t}71=D@CEEC:DEC3.(05Ls7.MX<\"IUOf{yeyiDP;9! @*1(JDEVV<0T+~~~~~~~}~~~~~}~~~}~~}~~~~~~~~~~~"뀉ԫdz󀐘߈ۥ́ɜм򎒕۲ˇ~{EUtfl`je_ILhǀnr::;=BDH]F64<<=;;>DFG:675g36>HE@GLoϤ򍒌ŞĵЦϣƁߨ򄕦֠ʽҹ"ḣ뫖beillfaa``^X{Udkd^\^a`[cc^ZXX_`]`b_]coTh~s~akrneaafhgcgsrmmmǥox}JYx}xsuqkdu{πJJKLNQ`~^LKPKJKLNRZ[LIMIFNTZ^denߠqunůjk̢rudXjriYaej֦uxv]iqroU{nZ^]U_szWVlq~"foq{nqlYPfaqn~D?=@?70/-.0-W\VTSMUZK6:PY/9@@@ACB;[HK,/0253,-/WV_YW14667r;W(9`NR\XHJ4@D?75:@>??{=ugVzHHFB=x͋޺򆠧spqxBA@lqxssrxrs@?zY=HLPS?;BX/CJ^p2!FVAYHW6|B9>P_EPMML@XnqkHLqTe2;<;=>CBDC5g67AGHFKRv䥢͂ރüГЮ̳ŏÅԫȦŋ䯿ɵלվ⼰ݜeelomjfcdf_WWtx^gbYf\Zbbba_ZY``Xaho~quxglqj^Z_gkkhghiÖͱvwxpmmhȻy~BM]plkdbqxcsˡ}KKNPXuJPMKNPPR_dKIMMLRYXbhiuꝗfpp|ȼixzrpvcfZkeWmw`ogujeZty[nsrc}\keknW_fk[us"X}nmhoa^Jom_QSlwsG@?>=82.-10/2je`SJV_Q43PYX4;@B=0O+121021-/3T>@R`,Tj>@FX~;:TbRicNCR4=A<2.4;;oߐē󎫦넘tmrnt?@AzSdvzz{zvnp=BDAlUTW[]KJkJA/GSG=5.5CV?-&"EOQCR8EB>8MG.5IW9CG)<;@2)#(":KHX~~~~~~}}}~}~~}~}~}~~~~~}~~~~}~~~~~~}~~"腏ð뺔焒䲜ݹ󏒖Ҍ汃ЬiAAITgg?25658;BGKGQZtƐ჋ޤ㈼Ƚ㎔™Ǘי۲Ԩ"隝ğƪhhkllljfdaVwxXcaebbdb[XXWwkڀ|xbl}mnqh\Y\dijfc`a`qțjvvsohΫcGHUo׺ϢmdY\ovorwMT]`BJPOMQRUoUFMPOQU]^gcl~adӄơtyvilҍzxqRwbxpm|rTm}f\~ynspfvix~ciƳp^f"}{ysi^Wbvsm]\\\O]SZsFA?>>>81//,`tyqo`S^`TC@TXU3;B}vxmI8U;84/-+(-4U2,CNLHVs[p>OgXEc]C@^8=?;1*+5<@??@A:m[ąID>>=>ꢩ̀աė˩_eqhfk9;rg^||zzmY^@CC?}kZ]_U>bbKXFJUc6_DS=8D>4&FcgM0+Rj\QDkEC?:\\Q6wI_g926W24"Y50tOD?IR@*'7<5&%[~~~~~~~}~}~~}~~~ ~~}}}~}~~~~~~~~~~~~"ρζパƽބ୅ñƑ䋦ԽɎn_S_y{{䨁e_VSZ^h⊻ɀnhoHf϶H/8===@EWY67566@<4/.ZjAC|ylZ[ZQE>LRS2@DA4+(/8==AvTfC@@??|xXu֊ôr·橆Y_]gkie`ch|c@DwBB?Jd`\XQVlitbPW]*2:9?0&:LF74bgeEClubyAABBsygdf`r\behXR3;"d. "D= &jNnl~nHnGXbxK""8DG908T~~~~~~~~}}~~~}}~~~~~"څҷꂊ䀎٭㮚ɀׇ񻉞򃆆ȉ뾒ʢΝߑǁgc[KXjmՀohtXÈ-8=?>BLp?<45:@ILSk}ñت؀޾ײ֨μӄó㙯"Ȱםõˀkqdnjeefda[lkȪw^vV`aYgcXSwaZo_|^_qogXWW]b_xcv}osۿ҆߹yVSe{tvtvi쯏?OQNLSWjJLJKOV^]oɟprؕhd][[q͓hfM^ΦtZU}ku}jqojlhcdeýdhŮYk"d~[O[ZUT}]wnt_BOf}EF@<><51/Y_|ECpUIHJ@/6HL+5?~qwoYUYl}@>/!AS]BQKM+2}|zxaDJ>~zYT2md7@>@s/*,256z~xqlPfs?AHIDqJr~~{psó`_ɳ䪱]vnaQKZXkvyymp[v6\7323hmsB{aWRbr&BKMR|Ėֶ‘ⵧ󾏓頑֥󰚲醕񀆍"煄Ęxeasagcdeca]flǧmvVZf}~Uyaf|\\lw`|nrd[\YZ^\x^v{߶겣zTWv|Ʃum߼vAMROMT[~ȀSNHGKW^^tȗΠޜy~i_~|mlW~cckfttfSm\ҕv}}֤vepsokjljjmiphkknnie__ah"cf{yV_p}fӝjNG@GZvD@<;9742P:OwDDzbE;DA.3JP*/qtwn^KOY_fZ"DJU`M\B;DRelWG<=GLF[jRGi?@1Xpr70,,,-fZF@Xa`cWel;898?CJHE?@};27:="A[).A589&!>pDOH]qwl121579>g~~}}~~~}~}~~}~~~~~~~~~}}}~}}~~~~~~~"ꯚﵪƸĬᵇ޷ڭ􀀌ӈӗ눇hpiWd~ϘlݢRi>>?E`ol:=CGJHdǛu㴝ٸؔꄐዖޙ雹ނ"ϩǷ́ҟ{kfaeghh`xjtlaeXWvjqǹǘę}lxgUd`\^Z~caXYaoozַԍk^q|}tз筡ÛQRQVspJNX^dn񺅴øbGUYT~kghܔkibmdgkZ}|ie֗cblqkmipnoponlffhjga_edik"mn`|t]elpg_WXDDWb||Ycu_@ajjWlCE;)GSdp6/,,,[G)@itog77:@RYC}js^e{rpDzb_}^Ť벜ၒޒ󉍕Ҥ}sdPztvna9 3;>NghH$@;GM5A:kAA]"?PMnVAZoYAK80HOIqAl\}eCB>;DB?<99:>EE@B@AB=:@I{n:@9M234CjxcAC[1-]]W[X^zxfNGKM_vn/144.XP>fPMf8Lko[RQ;*Gqo[\|BQ0NnN\:3]/]VD,50740117>A>:{sTz}czXgغtXuWjۯ熐t{҃sꊹQWK>Bh; )EFSs"Z: 0*9s8$'++MpqRvuEJlI %"GD=~~~}~} ~~~}}}~}~~}}~ }~~}~~~ ~~~~~}~~~~~~~~~~"Э狎л亳쎗֫áآڮٳ͐ⱍփވqA~uᄕ锟ZVit@Fwsq?FGKVhsq㊑ʹʞֻίȌ΋񃆆ڽ"끒ĸƃՃǖҀ]abd[nbcc`UemmcWS{dcqɦorS|]Wd`dfcbd`adda_ZrįsȪڮq~zw֋̄۸vQWnW]giuj~sqrɡRZq:2XP=9Z~lTGaj0=sJn3_0YRJ7*E341-./7@A;<@z]FxVXp~vPe~MerZu®֦Ѵo{˟닟}[|UeK??zcG .5442F9=ScxQGfdXS]a>FFXPOMJjJAZ~aQiP0XhLt@BDEGBs_Wkl7`L}"F'-!6WQWKB=F0HEU.z^s]/5/43+C3 ~~~~~~~~}}}~ ~~}}}~~~~}~~~}}}~~~~}}~~~~~~~~~~~~"ցϳޯ艒ڵ丞ۑӪӚݹ㔓֠͡ěnO˟|ʛy쒫aXdsFmz;BEJQev齴vڹݗnjќґ񊒋˼ջ"΍گ菙񍉂䀠dnlhc]YYZXVVobɫ[aa_|{flmi_U~ha[tfu^zq]dhpVddlhbbecceeca]Ŧw鼵~uz}{}PؙoS]bekuuoèeA|HCIKG{|qp}jd~isroXwW]~u}qshfc_}wwj}y"{c{y|cms[w|yOhwpj]]8512/,,041--UFDB;`uLMY..03d[SMN[UNQP]pwtw@A@>81TNMpe>C^m6.SREBbCoO=LT6&7HB[\X,VQH4.T742/008AB?=@iNsbtwzY:FLQ[>@\5693GnykE@29!@PKA,9~~~~~~~}}~ ~}}~~~~}~~~~}~~~~~~~ ~~~~~~~"ڰ䦵㆒ٰ􄑗䵜؀ӮՖɴ߼ɊҠ߳vyuϭvh`o|fFRM>3+QEzJLW-.-/_XSM@:205>[u}z|ACB>>;1L>?vLVN0wBmVTJCWwBwKmGWQPXECFDCKqbsokrm^_W}kygmofac^gm[MEca}S]"mVmtvwnd]dk~]bhf}uq}ٲjk[4.E^PH*-)A8?QW<%4Qh]M`l0+**WUXT@W"),0Opzz}AA>:=;.@/:F^k]1?SG^NJHSjyI5Nb\^kYMHKTWRNNJ3%Kg741029@@=<=<4WPS\vtvukUCƋՒwUIĀzsZҽ툪~tfψ_iYdtEBB~c>  - &7wb`=DC>=6A{A(Vxrnnv]JZi^P6 ?O_SDPD\U-*20"&88+JOaT+)"%"5*"); """$8e4202WLf6HKpedt>2~~ ~~~}}~~~~}}~~~}~~ ~}~~}}}~~~~~~~~~~~~}~~~~~"·߲Ӫш޶񄎔ě򄃂ݼ壏ޮݯ̭ÀǠаz|B\ůΓ8=}Mr͙̮ɲDŽ뷛ϔ՜Π唡αЭꐤΦ"˓烈ۨ흑⊕=Cdp[[Vlyaeb\Wnfmzbgjjf_cz`ZY]}xw_^d]w|{b}Wfeccbeihfdba\v}b͠tex…UiPU|NփeítmlxmqheQLDBK./-ZY[dePBa~NNo;1)&(RPUQ=GA`?=Kgwvw>>;9:7R32Rahl1.5C\JGKWjyrL?T`**1/L?H\]VTSN@1B0533238===<;82eshbkuqjeՐzlGzR۩orsut`Ë_p~>vwzjR@'(88*>  ;~pbqns4EpU&8=W^p_VXfB8[hX_L;YF[.-TnNA)!*=*-=e2AQQGQH".=7&*"B;-,d4../+9fHoXUYiOn-&~~~~~}~~}}}~~}~~~ ~}~~}}}~~~~~~~ ~~~~~}}~~~~~~"يƲ늜ǹ쑗낌췚 ޻稜ѥ߀וֹu|Mǀaڱs}GǶ3) DGNpViLla"$ ~~~~~~~}~~}}~~~~}~}~~}~~}}}~~}~~~~~~~~~}}~~~~}~~~~~~"ܐ捐Ɇ󴩹򏑅Ųݽ挑򁌖䳣ᷠ講劓Ӱ傉ƇמQw\Àpƭxhqą6>ghԯƧԬݨ֭̐ڶ欆ހ"Ӵ쒟ɚᅿݮ葀Nsea\[qccZpr]brdiombW|w_Yxcyrz`h\}QPQ\_^`cdgjkgdcbX`hWpc`zkKVoextqz»~fWof^q~N]wp]VNZskwtgy|qt~{xYMP"xvpj^Rnio{Ogncc`yy̢e5RfZ1E^0-6}uLsrRu]WSU,)(SOJH<>0B'%5Rky{;:;:4,D1;ewo50F&BZRPJMbspI53$6).,LEV[T'&)W[ZY..121258=?=;5%09N?xtNJǿzt|GF~wwxw~xV̳҅nkxyveRgYFDitw}yuhOE(BA^dSV|#E4B*12)&rBw_A1bqVDOF6PrGIU_oq[XOYQ\\Z6FSX,9@R*@3>".R`_I= &)*+0$9Auߔݺ߄ƷӴǭ،ɖݚӱѫ"̓β勂̅_oa`_`hy}rd[b[js`bngmplcYaabYnmtYg_QRRY]bddeijgdc]oyѴa`Wtu֨ʊnzTwxtuugtȷƨ{bepconf]Wm~wXqYc\x{Yp"WYqg^en]foRq^dlgUxqhv9N`g9K_.,5@}z}FKF@>xfRY1.,OIHC;4P86W6450<%-HWTUQMYtoLPK ;/3.RKMMJ$%)V]acd/0.--18??<==X'H}Ss}lꫮFGDzhguæx庰֖py[n帬KNeezzcFz\HD[u~t~IE\x[bH,CmIJ9/:B1-;ORU`oM(4[3`M3I/rR|~A XqzlV_ittxT^ivBGNlJPAS"8.s<^Z4+/:",1hC4#0GOM?WS|DS_-,3;A{rvAFHC>|]GT^/.QKHD>J;G+1CFOsA>:<@C?3L;M302`9$2LTQRSQb|nXbR3Ga51-N?6AJLQUW]fi0/,*+08??=@Cl5LmlnОEGIEtSSd\t՛ɳannth|⺟BXcgw9_@Q\]YmTxmV}dIZzofynVg?U{jB\aGL7Jb0b^YX;70S+UJ05:GW;86PZYy\EDh:`Vn:@xUOR.,.\W"D-AA4.B"&40@E245clA&*dLSHKkKdAO~~~~~}}}~}~~~~~}~~}~~~~~~~~~}}}~~~~~~~"᳒ドݤ冉ί끎މ񼢤⿪ŭޣל}߀򄏏〱ɦzyGnolꐎϐ񒃱Ħّ֥н˞֊͕ǫ¢ǻ̈́"劻৅ɘRvpW[^]\[er|ǪsSv]_wm_^ggxghiorph`_g`^g]a`SuW^ec`cdimjd\xɮّijebaꍓԦjخ}ftps^m|uyeɡ沕|~rڶzfLts~S|U_`QWjpɡmfrj^WTXXd_\V\gla[t]SvwopsvxcT[mh_O=9DR--,/5=su@LaSwH1AO//\RC>=0V.(,EFHlA@<>ADD>kUW0+,U:#,ISMNWg|n_]POX^23/&;0?NQTSU]df10,*,28??=?@kFkurrc|{~DEGHDs]ak]ρoQj}ytԶknapp~}q]@GVpwBWycNWSblIyrIau>}u{bsXjvGt{TXU<<:fNBxgc|HCDC@ysmfDթl洝\sa楚p|m?tbCM]yGM|hD;1zKehe@&=k8cvjcwGEgnt_l{FY@HVi<7Mc4Q,! dFnuVUs\?j5']`*&*5>>"13HP;\=!>7GLwm?>???@@=97R5%02.7Gs}>c`ZF`8Ob{{4/+)+VK;<MVZPNHMTM[:=424118@xeOABeWlJMOo]SrxdbxTgd\›z{uvԝͯk״Kw;?C|kInZRlwXYkhIV\soxAD;OiwvMBYrd\747:td1-65O"[GSO>=`U++4DH?OU*,_6CL@77aS2>:gXKPj|ghHLczjw|bbxSiMjPety|z̪|^p~xfXu69@EvRZtFVWf|DoX{llsY)'Cyftn[Qp3\I!8?wB>=8168ArJDKm]?B77;<4PeX[[SF><52KL8=6n54"G /$]I9 >Iof*:'+F<6AKBU~~~~~~~~~~~}~~~}~ ~~~}~ ~~~~ ~~~~"쉇Лnj҂ܨ蘹åދϽڶˆuƱEB_tvچƼˑӲЏԓοՇ쫌˃Dzޙƈ"ÄÚλֵ􇘀oYUSXVgk{azdghjcWY]\j]jmjkqrsrni_rd`^WZaecbfjf]ruUe[|^_]`n{n`[cauhe^__xЂæf`lytuie\Zadneȟحѽgzl}ztceZgt~~VmzQR{Iyszbhmd\Sj"6-OQ-38rTI<.Jlvg5>BA>>@A?=95cS9!6`p62.WU^9CDA?<:82I/ItcQ!*)KOf--15DOD<9aNb?8e_YQ^|hwRDKjE@:=F}dPzvrn{~ytӥv{xlelY|{77950SS.25nc=BB:dr7:=?AABEE@<60N3")Gi:873,O^FC>;cK]>4[_g\QSgL>FhEA?=;>}}ABAtv{yn{G~~yrŐ􅔸{xrmbbԼ̞758:77jOJVcSK]fwlV]m}tOV_gz|k$5Rcd>Kj@BA?^R6$SV?mD39?3383*HtH@L0jXHK9@qG`; (jcXHJWGUrr"B24(+U728%M\@4_??,&$>n\=5~~~ ~~~~~~~~}~~~~~}~~~~~}~~~~~}}}~~}~~"䎓𸤲Ћݲ속ݍ탆󇔚Β˨ʊߐ߸΅؋ƞԮ޳կΉݪ򯫝̓™׌й펇ɍŐꇈةѹ"˳ēޱ҇ԥz_q\]XWTQ|mifdf`UYa__`beggiotsqql[wY[[XVU]dc``ed`]iYmdj}VV\_^ahkgd]y~VXZppjid]eecglkdsߵyhdca`anϚ}m^llnqtv{|}]cZi_SJowJRdaiRhѳ"Ubt|a}teadhcgiiieh{~_N{E1>Y0,)+.-XEFidqVRGA?=<:/ML,12hkT.BSQj458<>AEHFA=6-;51(Le5683+GV;BA>:9:<6@.NBF>kmL+9jt0136=C@==lJK3-MUgfGYSfdE(iECA?98roEDA{ut{xv}G~z{wqY恵||uv}sZ˖{74654:]cz]SQWo~}?}sSRTXf|pX~FECDQS5NP\NgPn6/27Bh?;U!"LG^6"Nf=5F-2Mzzir]\m#R+C)9Nl:/Iwj8$P:F$-XjD2!~~~~~~~~~}}~~}~~~ ~~~}}}~~~~~~}}}~~"í󓚘ཚӆ肒㧄Ҵԭý۷ڙܒ񂂂򾵢~䢮ڍ򂆁ڙgⲶ挍밖غ蟧쉈ļŵʛۅ{"†żϽp`SXXVUS\ligba[X_]YuZ`dehntsppk[tW{X`bbeeb_ZePp~nʧxW[^bknjd_V[U}b_rrhd`Wec`ciu{̵ͣidbb\}猯nmjӪwvdf{ékimqxtZuʅqTa`zsusZqUVark¯ph"zriT{~xy|jbgfgd`ajN{CW1L+,++.-ZML`Oa5`E@?=@<\FC*/01hbHNH@X]/6;=>CGC?@;/=42(AKCL[YODQ7?=:98;>44"C::5q~jONfi/499=A@=>qJ<,,'OVW@B?g]0iDC@>93dezDGHGDvjkloft{}xnLix~}my76:94sf[gsfZ^qA?>KIHQpSr12PPWWhn2JQ#_q>;mB>SVj>2.X.4^QJPuppuKCn"IA;Kn?C'&JN?-!0?)&%!!=`[*":~~~~~~~~~~~}}}~~}~~~~~~~~~}}}~~~~~"پɃٶ숦͍́狢ɟѮϥńެŐד£džӈ摧ͷߍײܿ炀Ӧ˴ǐᓦ݀ٳ窡Ȱ΅"ŹȥkVXVUUkjahfd`\X`c\i`zWacdglqrswo[YatojuX_fiea^^O|syldU[adjnkb_UZaV}fcd]qqe`\V{jczmajbgea^~lnogɡy蒩Ӹ_\dcҤjTVàrxlnN}bezZQ\a}ŷikx"{qZaaXWl|oplnec[UNtSnSBW_EP,,+-/aZUR>_FsGEA@>>tYA@)231afR0H5EO/7;:;?B@=A5l=8\NU[)19;>AA=;2A9-1*LGA6@?R|i1iEC?>91WWk~qbmnh^n}wh5X_}HQTtsPv8oxBPXGoZim|xE\j#aUb>1/&N58U=S}zklBFD>";EG?BA+NE'#04:8##%&"( ?ob8-~~~~~~~~~}~ ~}}}~~~~~~}}}~ ~~~~}~~~~"ֆ۴˜䦎AᰀӅʸҎѽ˰󦛮łǕ獏̠臓肇퇂镮ژɘڥȡ֨"򱛋𼾵⍤쑐wpUXWXZYxwefba]SXgobq`zWkfehlpqrwo\n`sudZ^tW_hiea]g_XlhV^dejkd^_VZ_OzX~l[kla_\Xzkkʖo^ffYRxde`[xkoʸfloej`qx}{mmUQtimkjmx_Z|qrdn]UQxaɥ"c`yz]qVjϋkvtyoaYMwRJa`@K***.24fbWMJ_IFDB>vlXD!+8:4__J,GcAM4=<77;>>==8/H.3F="*HRMQb7:;:6:=]/$EEI65<8\EIN$+5:SNLQUoe.hFGCA<5YPZqznhc`{tZ\szpY\Gk~BHC`CDbfrYq:AC>nh`LQKcztbosgl>??;sW>56-@LSO^n>>mTaj33PM2-;BIfKk3DJMyktw~lM2Pag1,.&)fV2!T}b_t~\A;"T=9,;=JE"4/k~3)24**_ii=1'~~~~~~~~~}~~~}}~~}~~}}}~~}}~~~~~~~~"όǂ۬划򁄐ĵӴ򽤛尃ꇎˑݘ܍ԼÞڥ悆إ版ձ҂ӽڂ㘍݄ҒًȕמΑ蔠"βݩ˛踑֤ޑfTXW]b`hnieb\SVfobp_bcx]wnhhlppoqkZ|ubWWnX_hiea\vua]nlXV`dfif_^`ZXZdinqdli_^]YUzrpdyi|ðnɑcbhfW]_fmblql_lnPfxcaxcgVyw{xc^[R^L̩skwp[V"y{kemWVWapɈO`p}xffUp׸]Qre=G'(*166fkrhctCGFEB=uiTJ%+793YSA.+:FM7B>879<==;6/TOIG:$HTRWc7:>>;=@lC6@:baA9?<2KHL#)3=CB><4*EJ/0F3ZL^_Qm_+fFHFC>90WYmuRBGIYuM]|{~~umdAi>AE?k^k:tcj6<}qk]P=K^mjh`stfe=>=<:\[ahOUPVQZk??lPLX-H7YV;WS8=?.20Y{h{N|ry1UK0-)'R. \X|zUJJRP"PmI079,AA&%1p2 %.916HIu>9"~~~~~}~~ ~~~}}~~ ~}~~~}}~}}~~~}}}~~~~~~}}~~"ˁۅꀂɩܱßԛղ͙ޛ޺Ϋۉʩھ悔¡ċ}橀̎DŽ鬊ݟLJ"۷ճߏԥdrTVW^fagpojcZVRTY]YvebmoaysifjoopqfXV|reXXtQSX[`jjfa\xvkbfoogVU[cjke_``^XU[^gdlvqi`^]ZXTgXedf}y|dbc^DŽޢ[ucf̷eotpgcbmmtΖnV\ccWqjŽĨT[Nj\YTmayȻ`kuW"lrmarj_X[RY^RvzXrvkteU\pPEFG&(+063^l~k_sBGFD@;8\HH),/0-NA5-7FHM8D@;8:=??<4,+aQ@;&)HW*-7<:>@@?=nSHPN;U?B@:.PK"(3=DCA>5-(*13Q+;<=@=>A>1(*1XB8'*I-*,9=;>BC?9jXJPPIKgADC?3)I#)1:@AA?6-+-36^I0"36Ie}|KxLJB;9855lieG4>DYHBCAB>:svmkyZkS)W}@BB;jR>hk7b\ec\LJZ[kBAAA=<>BFF960OOF8=u?==56%$!+$+,+ %?L4+'~~~~~ ~~~~ ~~~~~~}}~~~"Ѩ̴˨ϹՐ̠Ӈԣ궖Նֳ̖ȳҥ҉¹Ĝʘܛ䭐끁􊋈ƨ"α̿򔊒ÕـoTW]aXxhn|w_VRmwyxqkebcbb_UT[Zq\TWnUTW[^ejjibwvnpZlnnng\X]gnigc`bc]^cW{u|lomph_^`][Wlyorrnkiaxyaa`\mmu̅ceoɵ˨mlklmsuuuniZWZv}nrje|{}v~nutlmkmGkgccb_a]e"fj]h`hmxMOT[m}xbU\ejStPbBOXSOT**/1)Ss}\OiIFE@62T@D*[UTXNG7N]hcJMJD>;98:90&'01L2!%I_,)179@EEA;kSEKHI[655530hnM6AP]wFB>>?A>vxtnwjI@@cADD?tP;EShu:8`^\]XH{ipyCDCB@?>=AHG700WUJ7K<96jY9I58->MMLB;?LFB/_OCfGA<9m7~O(j"a=F<]%&%QgW6*'$,%#+!%7L-/~~~~ ~}~~~"ĭǿ٭ﲘȴӢј뇇٭񂈉ĕꨇ󄍎Ϫ伻ݾǁޜɰޮ"潔Хй刃bpUTWYXuhfl|x`ST^aerph\XXXYZUU[`za_\jVTVXYbkjf_wxqxdqonlg_WX]]elida`ac^ZZUrfdnf]^a_[Vx]pjffhmoe^`]db^]_vdWnssimgceiswusme[[[lnunhgybz||ZvypllwIx`lVt^fkc^el͖"ylfk^m}fɝieaWtzZh\Z=@IT[.++.,GNefPKgGDIF;l\FF).\^_QD,GSRO8Y<>@>5122/-&%.4X4!F_,%&+2>EED@oQ?D?ImBC@DD:2-,038;;841-+-34\N&OMKMj[:7gDD=97883.bfH&2K`wA;8@ytqrtfLOlDACBBaSgfnkeGL5SU.^PEEYCDB@>@A>?EF822]SF8b;968aA=44=L7.$;S8(:dp=>>9;~vM6H"-;GRD1'+d>|S.)*0*9:)8<&@*1G4~ ~~~~}~~~"v犾Ѷ󌒕Ͼ䈋Ѩ򶠟刉򺟎ĝӘ佨ϫ켝ˣ̸Ǹ錊ߘҧĶ˂(Ѡހ׺䁋򀚔\WYVXYVgYwfkni^UVSvo|fTVWXWX^cpm__yVTSRT`lkf_ylqiqolgd_\_`afihb^^]^\Vh`ga\`b_^WtSgugg]\_a^^]ve`\[}weSVXbnciaZY^fkonrk`\X{ʙntolxPdhpry{rq}NXgyolfyDsxzSoS]dkqcxgc`"qcnj`boy_giqzDv[a\d^WK,J01-+,)FIWSC?[GCCC?~mKD'+-ceX=DAIFBL2?G\nb\/-+-)(,-ZA)!7V+&"':DDDAsW<7nLuDB?@?831359<<<721+(-lfSHN+\bkjQ4<`|A===>;4-W\D%?^rgU[wA@;=?lI&)56KlLk>CEB<2 8sHA?CN=7;D5%ZzD@>9tlW=:.4<1".4PE''" %G;BiG1\*11:8 %BTG3>$!8~~~~~~~~~~~~}~ ~~~~~"ϸ쐕踬Ԇ߫끄﷣늗ˢ倻˭αӥѧȁ˧Ӏšɱֱ灇ʎūǁߌ"۷А񍇂߷Ѡ€t[TVXViuknhd^UXTz~Wj~TUVWW[\Ytp_Xe\loh_u\kionkcbbabadghgc_[\\~yVV|c]uc^Z^bcbW|`tr~nl[\UVX_ab^Zafb]Yovg[UVY}_pU`j_VXUV[emtsd^XwnoponaqqӉjzi]}=9ƦtnkcSstkkckFMklrl^TRXZy"tZRajk}f_[qaC?}yZVTrJEJAa2+)*+QOZV@rPvFD?>=xOG')*Zb[@IB@?=DH!6S^a0-*,03.)\L- !D\VB3C6@A><:52126=@AA;3/,,giUGJM)*`j\C/9Y|C??AB=4+Q]K0ADN[E7Dj@>8:=@<:>U./SiDAC?x_:AeomFYv7,,.cnV<5IJ5EH<48426>@?>515kXBBV|EBBCA=4*O\[h~^LRB9GTq<<;<><:x|y:)TeABCyiL,1PX5rHN\.-.06`P_g[6EG=6@>44;BA90.kqZHLs>?AEGnA27UbtNR325D^@?=<:L.;JO>(V7.hFEA6f[==83)"QZc<&!. A2.*,5.1 '8;3FCI3 @2#*~~~~~~~ ~~~~~~ ~}~~~~~~~~~"񎌁⿩ɓ幯Ձʟٍ΄𸀷ℊڀҴ茀ȴ󌕋׈޷ڲդ놎ﶣ۽ݷկ؄"В뀅twWWSmyhlgbvbSXTRac^dUUVTtWUSYa`X\uWkmc]Jiiiecccddgkjfec`[ZXbSTQ]\]aa[V}_ea]ZXWkidmzoosVVWXb_WUYghjxv{lX]kul^Yqptqhak̗ibj]qrqjlsrqi}UMQar{k{exj|R"UCDOZvPSXYRfCLdsY\RNIVjYCJ)+,WTMAJarAB>?;;e63Wۏ@<83..,.5==<6XRVGQg<;{vrhV?Ia\BVn?CU*((+33`j6-8ABERX_I76=B:.-f^WOZ{=>@DLXI?AAa++FJ4)-?f">\|GU$"1B,=8GFPH%$+0+*!.?TO,@T6",n98~~~~~~~~  }}~~~~~~~~~~~~~~~"򍒆̭󋖏סʶ䖽قߦٯÏ􋔔ꆇрͬƭꮜԶ׵ѽ̀􀍣"뉆͘𔯗WZUlmikfaj~XT|rnkoprQRP{tVZ]`dpVekcZjwhjieaaeeadkkdba]ZZUUPadcd_VTmfYjqiaZWUogndi`aVVT]_TW\ahep|[`kpia]{qosrmg]|lmmckmxknqusfeo|Pb^s|rSbw"seE7NeiVVUVLQWXhVSSe}yuYTP`p[HM)+-[]N69\yBA>=~yXBHT,*QUY[[TSNEKI>@52H[Y''&NGD.=$2izKP_]S0>?85Q#'3u~@83/,///5<:0@P\MCJ763klnogWSq6_mm]Z-("H27f3139>=KnbhX;82.bTPNi>>@DIAo^p7?cqw?*8DU{{>?@CA6DR`:>?,wU9>S+MLRS+[ROIBJHCMD?OZOC$NN:61"""4HPXa3_^8A?71H!.A}<2,,/2236=EJ746^B3=K[X&%H@C]mncqDCD?;3MH'*&CR45]T+1o@>CEA95Z8BJOJU842hhlssjb6311:83.97)*3`_VJbz@@KTD@E;:5kH4;O_MkG2hQ&<3,`"^I  5e/!WD5KgmwQ82W_PDaDP[pNK~~~~~ ~}}~~~~~}}~~~~"脍ծי̼݃ÙΈ놕ٻ􁉇򀁆Ǐō󋖘Ý疝ݷ「"଍ǀ܀|s|UXXVbW_lgb^vhWW]YUScRdxp`\dobe^Xcg^Xphlf^^a^]bihwqVWUSW[_\\dih^SUUWZT\]\is{rrfVoqqjdZd`egeaabZTmgc`wmakm]VZ^bgkgaVulxonnqkklehbkZhĒbMn`qsso^UlwQVVcme[dyVdm"pzt_kj58MydrpVVTR\TOQZVS))*.wd;1O;BCDAxqKJ.O,MJKIMRPNA5?LPYUJ).)$%PO?)3+ (:fLH'*&FM,.+P.3;BAJNOA5TiN9,F.8I=3pEy?-6W"@3 ?K#4N70"6MNLfVAM)%QP$%YYOC~~~ ~}}~~~~~}~~~"帙…ċ҂ҷذ򐒉뮀䄕ҥ퇎񋐊ǫڜͰ؞􈙝݁얉֯‰۵焏ɪ"⫅Ë倍pg}\[YVrQRake`_Yp[VUyYZZ]a`YVS~`f~eW]qee_XWaib[Zmfljc_a_\^ffebwUURSW]\^[ZbcZRVU]`]jfywZjx`d^W^eic_cgid`_aaw}|~{~^kn`XY_cggc[θqqonqjgda]`H[e\Ver}]fapro]ksWadb`q"LNYUddgcnhpLN{Xbm^d[TXZXSQUaWF6Ebk.*++diN3/O9@CGBtc7>*O-)LGCJSVRA:G^2b.()--)()PI5!)?:#!9Re1-*/5:92/Q8$=ro[2312100/4=EmVcR>5>Q`VM&(&%'12215}}>;7U?G),'HQZTLM.3:HZqmtERFZILI:<7*,5;>x4.-,'(.8DVbGſ:=bfA>>=<749>?;2KP]yEBAA>?=967L!?Kf&#@EE@lHA@d?AC4IGL>[Q:/dg:,G08@:7ozwlR:KD" '3"'EfW]*'*+&&VV)L~ ~~~~~~~~~~}~~~"ֈⱐˁҹ˄̤們ĺ߄Ƶ؈ٳ汷萱ۗ⥃ㅳ󏙚岞۰ڌڌꅒʾҾ"̽Ŷܼ}heaaYVTk^ie`\~i[US[c\Y[^bb^YUnejTSi_gd^VV^__iwbikfa`]Y]fggjVRSTW_a\X\StSVS[b\hĽjYn_a[adfd]`fdbabp~~otx_osh`^ddliaWudxjlpqicba^^}sZkrdqqo_~vm_Xcged^"N|LY]\Z^UM5[Wzoq~VZWSSSSUZM5B6e;3/.(NQFj^M8?CFCoJG;3U,*OLKPX[VLO\450,)*.0-+*RPJ/&@D(4R44-(*Z-/1/SE6Ltd36773.,.8?DdFLCDISR,PL))(+13/.]kzz;1?/D*,(SglN;))18=z:76/')5G[SQPӯ'8NIrCAA??:8;B@;2KHJRlFC@><>=:52[Jzq<4C_03@UK:@@D6HAE]fTA@3|17H18@?<6hgzyYY8",!  ( *5+]d\N&).)'W+')~~~~~~~~~~~}}~ ~~~~~~"۴𱂓􊏍𶡱㋑ߦɵ݂⃅ɋЪυͣ˜Ӂ鳐ᇚП隱ГѠ̪󵤿"܂ۧrT__VSz[ca^X{Ooac^Y]`abc^UTX}ezqaT{ad^U[`^¾fkhb_][^gk^ήWWSTW]\YTX|SS\‡r`h]]rnYVҞ\d_a`d³[[^aaowq}k^jorlhchlpidX|h鉙ckpng`a^husprmn`{bntS[hqnmgiЛ"_N}~NQRKMv~XSVfahY]WXVSSRSVO<":_^:61.NLWS~u[=@BDAlE#ECZVTPQSVWSST\b230-,-141-)).[78D.!E;Y40+QQP*//)LH[yw=?>81-1:BC@iQTXJ^h..UMS*'+21.)Ypzv9[83I*)T]>X7M2638SmY>D90d}bRJ^??/,3:wux;;d,-8KaMEB68A4^DJC?=@<@@DZN+;C(B4=FEC<=sMI@" $'%'"# $/6dl[RM'.+'(&%)~~~~~ ~~~~~~}}}~~~~~~"Գۣιʧ愎ʧⰟ⺶Ì󍌀Լ󉗛Ȟ߉ѫۚ񿑻"޹㺺Ȕ\{fa_`[sl`df_Y^b_^`\WY`[puyzs[``[SYb\õdje`__abfh^b]WSRQTUVTSSsbqdU[XQU[Zaií^bc]]^]\hpign{uqcqonnolhpung[sjhpqlg`_spkms؀wsij]kvqawRZirtrolx"}mlRMvv_b\hcg\bkWXVTTXL/D@YSli`YOTk`yq^B@@:Q]VTSQNRTMMV_/031.-/120,*.66H'196>8(,F^2.RN'R.0,OERuDFC:3/29AC@jW]b`h51.SLO&$%,//*Zt|vo[FIW**UTxiBS4;3+cm1.(../69g_FVn:3148lflid[Z-5=EC?Ax{gC64AWAIA<>B?=EG@:0TPKLWbpHB><<>>nG;\Elm,7\a/=4KP]?<;B2K?6:47@4I,D7CHGEBDc_cBJT"5&0/,1+-)+"-+56,_tlYNQ//T($#)~~~~~ ~}}}~~~~~"óԕʹޣꊑڻ¶ɷ౬ð􏐇淟󇒑گ܀̍۸⃍쳷ڍ쎟г饋Ñߜ黒Ñ嚃"΂Ѳ缘qj}ydce]cfdVY`^[YXX]ggzi\s][US`]Ždh`^aacfhg`]b`eYTTPMNSWXWZ[VTT|xdvkVSUY^^^cif^e_X[`cdf_af^iqokp{}famxp_\y̾ntpnkbb̈́dibjj^b{uq^^Xr_~yrlRVdrusnlriv"Zv{bZ[abf[XYZvXWTL_POUE^`[YQWeTg\TDA@:e_XORWTWXRHKOIJVb132)M+./.,,/5<>cA8:JXJ6.AX0.*'LMV10TLQfy@@>94-/9@BCyblA>770STU)&$%(-/.0zoYT.1/,)IWuaNZ7>6*PKG&,1,,1325[P[c00./ZYml_SU,2:?=7`>Jj@X]C1>D>=DNRE96B8QI9<6$:8>>@JyP.9VR<;@sSNiADD=@CADAVAO}hP1O9>D9Tg?L71*<=]WKEM=?=Bd@+B1=GJHFC7T4+ C"ubm+'+%#*2* .549'%XxC7IP("DH~~~~~}}~~~ ~~~~~"шӨӶރǸԴ蹮򎗆ƚЂ꾞фׂめ򅒖扯Џ߻唠Ŀ׌Ê"ٰ钨h{neRUdۥjeT|t{RPOSannez~`g_ZUU_eYyr|`^adhhkhaXdYTVXXUZa]px~XheXW[ZWWXdkhaXWgbeb`d`bahjcnc`de__lpvt]oek͛ZlcimdfipYitUXel6^VV_jorkfdbYQVI`c^d\TQ|_vdHCJy_Fb^+*WZQAyHCavcKVK:75QH162UOmBA>?:649:7FCkc]Z_87776;?G|WO0]gA;C|YOlt6=9@C@@AV:OX79BBdNEEH ~~~~~}}~~~}~~~~~"уԩ򀎋۶׈ݳ⁃éܟΦ爃醋ʽ쌍޴؅Ǵ䂈օǦĭɄظ۠΍ڄ΃"ȹݏ~vdRTc֔muTWVkufQ`~RQQT_kml]mbS[]da~su{yz]`aeijgb\xb[VUUWZ[S[bamve^YTTZ]\Veq`^Wddgigc_]^cqdX^ba[__aZgomdѮ^v~i`bkmfilnljuzS^jjxoSUPW_djhkcd|zHo"_}aXkjVPn`^_\Uyvafe\uLCG}gEba))SXT@wtQ|]cLVF4A('&MQY^K>HISe[8&8HV+&&-6;756K" G/FHNUER0.*+/50LPdtu>qTKb;;jTA7GUXZe761)(-.0.F?]@G;_VINb62HCj>>@A>85427F@665/+3475h8;A@@R@;6"8O"%&,6.(*0/)@ 8UeP+.' 2DKL ~~~~~ ~~~~}~~~~~}~~~}~~~~"ӭݐ޺τ㽐䅇ƥퟰ񫎋ꂈϙ⇈҂у洞֮ι٢܉̳ā뙖˾⣊؄Nj肆ڃ"⫋Ѹʀ倎ڀvѱaqxzyRWXUmc`]\\WMVwTRSV_kpoajT|kkuySW_egmgjmVv\\_beihd`ra]oTUSSVYRv[\W{d]\WW]^Ssd÷Wafd^[XWXYW\ceeb`\^]^hmduehjfa]qcfkomowÅeTrUhmVnQSRU[bhhngbO"eljY[f\mXTRTjint{ZROoZOLqnR_RRTVT=^DGS`jg^bQ716DS)%'/6;737Y&0k|zNC4U/+*-6BFB9T<_vi1/)<-D*,,+-,)Rj?CCdA1JWU]em}s]LM_32/*C )0N:?NcdK5>I]WDP`{V@l<:720,0-.4961/-036=B=96Q39Y67:;;vla9GrV<=K_5\@!/>N.',HWURV\c40X]QorcCIEW-+,,cAIG~O#Q_5/)G?K+./,.-*/?a86:<=vcYj|YJsxQl>CD>st{reQ>RwG3g6hXDHLXjvdD&<>[LG@FX_YJ,3?EX1]VW7CDrGG:74=I0-1M[XQUbk94WQD]nvMdW1110X`?KwIJJuc:1*MHQ+,.-/00h?IFAv]27WdZ`7@OPEBV52-+'#)25icUTMI:6WhLAT^lED@=@810-,RU7=842-+39=>=A@sSJg<48=@=[IVbJ>wZ}|9<67uzvtuV37^38Fe_~uTLM]uw^PJ'cc=a"SG@3#.!<7-2)+>docC3*TH91^1".67@*~ ~~~~~~~~~~~~~~"Ͻ˱پᆎ򥾯ƽַل긅̆泔꾖؍Ý򇂉ūȿٲ΀ͮ蓳"ʼ󾥫ϑ̅­trz}kf~^rlzmiVUSotq{Xghpvp{fuxdkgȺode]X̋cWlk\U[__\Vfgǰ^bXfgqfkea]ZUV]cfw~gWXaghsqbZUSVipk^]UdqpnmnhdkhjnlXr}fhmib]|vʚ~mcX~mdgljmd̛h"vi|vrwqOMPMPWPU_QIXhc^aim^>PE?<@d\k[TSNK$!"LWRLVSOYYF8BT[^`WPU6A@e93-88;H?A=PWSJRkx=9aS>HSy=Y4650QSp^;5Q[b<5-NIO*-//00_`uECwP&Hb1\]hvkGC8J41++,-/0466cN9E7TZy-JXZ-:CBERF6.*)O-7>=;3"=3??>?B@@hXm>69<>8VETbQKL_n:8;>@{{qV%-U;FhtPBFUNB]9=.@IHBBGHQO\4:ACH@hZ-A"OPJ7;RIk^[`:9?GI@<#ORDu@G<~~~~ ~~~~~~~~~~~"ɱǽܹ뇦Ԁ߿蛾ɸފў𽏗넍Ϯ׀ۀĄȧざӦı򁀄۱䪻֭󐕖ߝ"ҽzƀgkendxnxtwSSyʷeoyVTR\Zvy]]xfӾ~kcg^XTͺsU_lj]T[bcaZ{TTpUZcYkkb_bWbg^pyjx[STWbjgkj[VUTekieWotnlid_Zkgjmj\t|^dnneVVXkt˵ywrdn[fhkgedb"zheMc}kNIPMOzvBMKObpi]bnn^FcPQ[I\C=4Xc2/QNP197bBD=>92AENCQVKHZy?vdOi@I|q7T6960(J^L+9VW`;4.NEI).2100ZWkrL "8P.YWenY{8-7+0+*04^Z16:6P4D6FJt0#G(,8CCDXP7-'(T.6:=H<.'RCB=>??@l^6<6:>?:YNdk\^_Ne|<9@EB{qeU*:_]yB$JIZWo+JIIKMMDNYf7:??GGcK4&".TR@!9PT?fh\5)1.I?''WmozPA/~~~~~ ~~ ~~~~~~~~~~~~~"Ɵ̧ԟñޥ߲ʐ慎ζȀ猏ցױՈ买ꁕ즐ŜΤۮ߮"׉亓ߌĻˊerqyxck~q^fR|ɸbvymve`SSymZMfmegӹzf_YViclhaTUY_`b]yW]wUYnbkd^XVdg_xR^WVUUW[dfbgtshYURT]a^ØwmzoqqlbaWhjlmjfyļlɽb\JMj~ɾƥsec{ohzvyiiigedy"V~z~QSlv[Y`TBIQMUfatEOdogYepmgYB?MP>BWH-2GSR&NMIMOKIBJK@69Qn=6WOEL.4iZPGX8(>FVIOSLRlGBuZDO9DZVKHEm:60*KRnrCN]M/`7.+&<@)/320/XSiuS,N/BRX_tsSu)D//-/.?L3888`DK9&Q.'#%)2>A>>C=7'(-/456u/$;uB=?AAAn^398>BB>fXhi[]g\cE=oiS!3S_HL#QFNKJH>AZm=;:=DGnG6="9-VG&*DTQ\U'A*.+@{v|zV 3~~~~~~~~~~~~~~~~~}~~~"ջοߜ܃̩ǀ«Ơܦ炃岄ľǜ׉ړ䅌Ƿɪ 񒖊̻ȩ􂈈婝룮Dž퍍跥픕"ԣրȟـiuhreUSkfhkxzy]pkhczPjlRUdjgeYy|nlz]^Uw^imhcWVXZ]a`z]kroolqZaĩ_lgg_]oWZXV`hc[_nlZTWb]ZwWDVfoqmeg__fmpkkb_fazоe__ZiL`ǘpWx]\yoihgddaM"TWVziSGZki[\]kJSllmERbbYXbhjuu]^ql`lLF2EW,(QXRJJKLJKB8@HA2D8A;84MAK^puspVJ+BK_(&RU_zHIC91RP@")[=@CDBA9a46:ADF@k^__,,/YWzH==7X4?Sgji9(.CH2CE.6Q)+PE?QFkp=:;;?DxgCS",/.I3/F]_Y?"Q31%"9DKc+'(XnDIGA1H2:<%Y>FFEE=858;BCC@4ZW*,,,PUJE~xDG?EE`#.2Vwq\7D[=&)F%$L//3/UKTWzq=<<<=>{d0)/".0.*BFMbebg^6"%044!1"G|}jtR.138~ ~~~~~~~~~~~~}~~ ~}}}~~~~~}"ƶՁӶ詁ԥυ԰ʅȎ􄋏ěԛϻ"Ĺ䃃ȱݐ󊒅{ڧ҄򄄆؏鿚䋙֬ٴɫץ֫Ԩmo|zsgld^p`j{hcilqsrwUdk]TVcdlzUZVUUXcjga^wdidey{YtYgh\TUX[ZY[Xxtw\NiY^ǭl^\^ZTfb\YZ\``ab_q^mx]pmkjedfgkniidXZX^gf|me_efkqo~^dʻr[`}ipYWafbbdf[hohfdbϥ{wS"YWTTQgk]bpd{ǷwKr]TLPXb]NLWeljwDC:m>E6D6GhlXQTPGG@4k=??A>40E[&BX;>:34@EpKJDC.,(),9GGC?T1$?V,.reLCKAd3H--'%G_>71*%)27=>8eB(957<8ABFG@<9:>B@<;4/*+-+ME\JDwiBEf4;JgxoD26J4,+T&&-03221bagu;BA?=>e7(("+-./N'Senmvw;0%'(.%)3gs~qE9 &$~~~~~~~~~~~~~~}~~~~~~~~"˷邋̷ܺډع쯃ݪ峄󄊋ݤͥӞ͵Ŵ܆͊񈐎ɪӝߡكጸމ̈́彷"ˤ껪ܮޭoorz}pauec_goWx[r_cddfqwxcle_fgew~X_VTU[gkif`~khðti\`{yUx`dXUXWUTXYW_dd˰~l}}zropqlhwmcZ_[gcZX[ahmcdli{[ourlmkieedfikjg`WZ\beaole`egihmDjŮƲkuWYbca`dc]duukba˩o"YWUWUUSswt{s̾{YW^EKORXTACV^YNbB97CG21$Bko\SRNFE<,Sj>>n1,1GU=*3OM?tF1(0COSK='HfXHTM30)E:?!"#'*268AD@vtZ`PYD^YQSPScJq5+" @G@9DldKDQMDI,,(SZl@7/*%+@?bB)3DPz@EIG?<769@B;71.,..+?6hJBn[o?<;;<^6'!GtLR7CSF?a+*1340.37|}u?GG?:@sC@"*-.-)'+mttz]K''.0/0DzvrL2'"6~~~~~~~~ ~~~~~~~~~~~~~~~~~"Ƭ򈓘ݺނݱݬ紑􇞢䅇қα繁ףѧک》ıȶ܃𛩍"֬ѸՉͱtvvuwy}fj^bgp[[`hZ_`fqxoz[iigrm[zxVaXUV[gjkmgpdsdfxyr}[]iZWWVSRWZZabcgxyskivYZOtf{|mrW[Xg_XY]bnrgfophv{klljec``fkkbWTWX`aWsheYTaZV}pIv­pzubtU_d```b`_}l^|"\XUWUSqus}YoӻqYVCGDGPUROEpDUWOJUps35@G78 .MYVTQLFDA606:eRX2;IL=,,F5AC@EE~t_`-*.+0,),7CDA?;g[Jk?F&:S6=HJIIKIC*HigHRM87-C4:#%&)-48:@BB?v^vRdO_TMMLQ`y>b)7eM[?&LWNPPOHG'))W^rD:1.*/AKB;<@=ZE3=bgFHID>70,0:=4.(&%14.A2kH@5-nv=72bS3+%Mȑ{g:;;H?[D>VZ/43/-*/39|ll\[=8}O)>",,)(%%Tg{upX-'3133(Gq_Q5#%a~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~}"䎽װ膑ۧၕՂتљ쏍¯˒ڸ䇆ҩĜԀ׀ֽد腎ˋഫǁ򏕖멶"ӠŨ鋳źٶ~~}||{}|]guZ^`f\vadmr|lgbftUXWYf|w`kud\XUV[dhilmrjxa`wl^]XWSQSW\ca`eɨpmthUYZXh]Utnu}WVag]WZ_`_Z^ajnlinaolif`^]\ikcYSQQQWifZVZ|^[Wgt~Qby`eddabd__pea"Y[WUTQoW]gy]˨oiQSPOUYVM2XCQRRUNLU,.5:7R5,6CLPNGADLH?:7cQX;CJQXE9&.12:IG=oj8/.X2-*-7AC@>;iXH~OR-:A[N\SH=qE>506lg`Z_O86/9jO#%,6B<8!2DV4/(*+0149[gqkAr{CCX1;"*,(&)+[hkyyl1(06H?||vh[L'";<~~~~~~~ ~~~~~~~~~~ ~~~~ ~~~~}}"ê􈏑׮ֵۃԯDŽѻ畏ٓެȍЭ̀޿ͬ􌕑쿉ɸՋ펒ᘣ"ɰة‖{|{{yci[]]^^wmlsRzpik|X[URYlsilV^UVV[dhijiqq~saxz{ca^vfcgaYSPPV^ec]_czVrlmlo}fXi~f`glswTVTTbd_\^c^UQ^db|vcpnjdZWW^nnbYTQPQ|mj`X[MUyƠd\mxvz~sKb_bddach_x}dbe"U[WUUQ~aPOY~hh`XUVVXM-IBRU`kTDO,/137paOJEGMMG ELKD<8gX`BFGYi]N)0-'.=@:uE!(FR((-6@A@>TlqaZVRP'')+ewFD?<50*!!cj57>r`^IA[KJD@?8/+/;=7/# "LPXP?B_?D"&+((,)WrtZczyh5 %>5@6NipR-JCS[ZNIA*"09i'"/;N19??>>;4,$&4>EE?|kA8bk40b[WO)(),35/*!ZQ:`D>;>Ct8=;\M7!tk&-(,-6F3-),0353T>Er>8w>;4)%"#*((&'XolT[lxw4!!@q[uyvfS0'#+0~~~~~ ~~~~~~~~~"Ҧ؆綠߀ᷝ煇С큂ϰ㔜񀀮ﲀȀ͙遄橣ᅎ߀ۻLJ㨖封ǵ"èѥա{x`efe_^``_aglorl~SO}ustaWey}VTRWcc[Xcrqlps\eXw`hmlabgg]c]oxa`cb~cmigmngZRQSXfnhe_WWqsghmi`x{fggaTUVVXcjjkidZUOjomgbXTTemnkeh~qc_bddekkj^\jbkǛUM[xnVw`a_cgjlZhdcfffeWP"PWWTQPlZ[]]נiReVn~vcTQS[`bgr428=710025:@CD@t\PQUV(%?:;??)#;;@?/6%U;@FID@?A>U=J]52F;PWY[VUN9)1<^E)DEM2>@??>82,'&0=CC~{=9WdQI+)TZlmOd?3HEVzFDA;8V6?i3,-/e`P,*(*2;A=?@8.*%EJdldcdUMH?mGA@?;512p>A@?;AYBGB{;fAD@=D=8@@9N:)nHq!$::'*>$&?_1+-/29<4OJq>@EE@;62*""&&&! Ytmok{vi,!PgǁYo{jmd*)-~~ ~~~~~~~~~~~~libvips-8.9.1/test/test-suite/images/sample.jpg000066400000000000000000000546471361153320700215370ustar00rootroot00000000000000JFIFExifII*V^(ifߓߓ02100100"0http://ns.adobe.com/xap/1.0/sample xmp stringDICC_PROFILE4mntrRGB XYZ acspAPPL- desc|cprtx(wtptbkptrTRCgTRCbTRCrXYZgXYZ bXYZ desc"Artifex Software A98 ICC Profile "Artifex Software A98 ICC Profile textCopyright Artifex Software 2018XYZ QXYZ curv3curv3curv3XYZ OXYZ 4,XYZ &1/C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222"" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?oM0kT10So vȞ9*)]3TJ\Y. MRUNqU笠U)MC7jM[q["U<5^(;Ckm-p<ޚi'u'!<k#IJ&up*M$C`{IX.lO:9rrFq< ڎT]؃{\`Rs-Ӏ9nneR"8VLw8V+XBۥY VѨ(.; [N=*ʴEդ_J%ܾdIA:Sb)=Tv# ,|5mD+ {Q}#C|FJ9,hZD/vCmbd3w 4ijCTy7QsD _7 d҅.bo<.(%VઞbY#1NE6PZw< Q.IlF!vďP[L%rjy,sPLQ_q[d'>h=OCBZjrͰhݏ̌) +]M%;ZDp 2̤Z"e(mO46y^,|z8xCH.# Ҿvs \b1Ԡ'aҩ3mM?a/h))*jhn$|i䎕cvEֹSfІT!"Ah" RCpc2g7<kԵ,ד}8vF$K${vi5PHdVfkk(1zҋ ;YyqҕȵI+zPv AgWy J-̔mXdfIM[W}4Z%PVP"#a̞`0@< nB |Қ ҹIbdi\i#)<9ڬ*Y$<c ENq⊛1܇Pp:BqYn5oQz^m[#?f+klQT 涋%0HvonG'z}3RWnF9wMTE6^UZvJ0a]M(n9ڳK/0c]J @BJpy_ʨJ]4~['ԚH&jKʺY;F{һ]JmG$d&CgڕOzZB$ Y@;)֘ =j=;E% MrI]\=lMPqi (Ŋq$e7dRG}+GA;T4jQF:M> U=jR!Îz/UG(ZZoI]VèF$EV9 K4F3b)uJ;I[|0zP"ccS&D]z5z-©Fj؟Rhyg1$0{ԹT dp) IwmqUe=H'\<ڬ4Ⴂ]VH< )kqIEq~ eY8/(qҴV H52ƅ7'>^L^dQ;m 1 T鍜dݎGJT 3ݩw!*w E i!9åK"$?3z) qUCƖp!ދ61Dq!ڍSYIC&FؚݤS $Fu;o6Ynm v݉WO 6㓐qԑ&s0Ctm1|40 w֩+dR5i& p(nV8 E@ tM %*89Q{1O;pGcQEm%쒋nT-$qڑ8ÇepZhyF4{lc͸YUܭ]-rcZ$FiUgnYd+sUq\51SysR퍕%q.0=*b';Z,G gɺ.q*9kg6sKmdbۯ 42yY Fb:ԓ pNj8UxT,wHqo#E6і̖ZV =j4ݻwF$h= m-+KF+R"0'Y0 2;R`$B_zسdA(u8s3ZPN >)M =RDE~~ޕu.^M%LUKMFIBT쑀y%ė6ě۰ *doy*~SC3FBcA99#.Ӂ!9 ==3[nxvw5<3g< WyI$1ĪenToˇe2KVdvU]`r+YH+$]Mimw*;{˩.L쁞ZMtn!؁ e²Fb9 ]}c/j>U- +!v ckxV/Z `8ú$C/aMy2Fԥ+K`&C`>cUqZG6tG&9^jj,v2+po}KBŀsp^j1)H0/*gRp}mܥd,7PGvl'O- (w4p6&plzrɧDvxjQPfy񜓌RȫUg <4]̯8$}(m{ũn)Ȝ危܅#bc86ddE~wzQԧw1{Dsзj b/= KsB.2Am4jTcNhzj-..dRF; 4%,9̾cNX+q[]IK9d[>c֬<gm.˺؍Lv1ޘ)s fNr)b\LuFE>kI^5R}1ړLEB޴F#tTKFu'ڹwr\Š SuV^*#R I0(c[%,J~N 9"*Lfp}*P%GAU 4T_ wO iJJJ=D.88KNT1[Φw,`O֣攓hMN(z =\B7+A=魀*|:1nS|dz"ji4 -䍁1mAgd옅 9Ls!Q]]`L-+:);CsjɕKQޭn'n b9);XvGbbS{=O#H6x=SIYm jq-p+/펂HLy#5{ 楴\G$cb^MqZ*[?6U.c "45EXZP.Œy%c8tO09SGfqZùYeu!Kl o"}FC s*· j(HOkcO:WfIGʮ2"Yy.- gbHfO{2#@rGCn<6^WG}~s-˜*(ԖF'5j05ږOAM17iHsQ֛1ONM(k'ES9ϵ$D'Ҝ1h4t)S9[-@Z( Zy.u&Jm#>ԈH>: ֹ+C^((/Z4{QE0^ ' sPs֢Z!2S:ӧb'vzқtQ# kR77akzߒc qVmϻz Տ1_z^vLu3b@u$(#aG4 NN{U9e4;McXi+SO]6cGޑ%ߐE>; "-yoPha\A|JH$w5L@V<}k$Pv\ܯG88U)ryQŌc9Y]ew0t+@VD0Mt*o=əeߴJ59 WIrweP;TNz`$֞[EjC*68Ri'&L&;m .IH*SRGr@Y2VaҬ7cBEJU ɶPWj棫"R6Wcq EcT1&}EMLa+T(P"u0擾(-?E w23DU"ZŲ T7Ճw2.Z̉}5K&ߔifDU^@wȂ<)~nRՆF (vE)Hgh@>ů.O\P8vz`ɯn qj#2u&$x;\sRԉc]®Ir\9،ǰPX"ipmIX泫VF78x N*xkU\=SU31ly5PՒ&)hҒ@:(Rc KH}((dc5QIouN9<gaA$=];ːR i{"z}=*RqV"ʲKcБgSr#j12o9SYC[xnΘ+2lOZͻGF5ws G ;u4rFUrsP{\@HcA!z#v>f2 *]I)@ R{JѾXeaI]>ޫEREB35V(ԏO'ڦWlՏV/|bArWҥǩ]$fk9Z7eR28IIv/˶ZMij"$FҹGxEVch*Ƽe8P@GZ&f3Jd,XZؤl#")I!Ψ I={\D$B >Wqqt8-F]2HhǞmt*  sv帮=+qK wgiM-;QģPMG-AE+6 c-'NVJ aj;F#@uH'a/D#^s ]o;Mn#`|F$/͏\4$L˒L dSS5j##皙& 7^-Հ32s [Lp^slT5͈*G'xuժ4tSFVH$!\{+ FG!\rj۫?$jhg3;jSý2-dqe(1Z֖#%^:/2RWi{S+yօ$?**^78EUbnIHI)Q?!-5H׎YؾxJk{ VrlC%2m, f+ȗH[FaH9'Ҩ̳ 7-vTQ9<F"_Q l^'>HYi$SY:i ?gQû2SĮiF N!xC@2wss9һ3l{ (;O$U9==kFy}#åeM0]̒;$?> y>;\+H&[cS]Gz穥Zdؚ@EKV (]٨IXM.)3OXy&7J/a⡩uGv氛kLtJic lּ2C\ס[]XoH_¼b:j[Ŗ,u<)>+.$YHtT=T09Ug6ށzנfJ$*):2?+KFu$fbM"/K7 KxIml]dB0Wi)C ۚH'}Bʱ[mw0ncVʨ>gefNƴ"nua7Uk{1\lnq}DĿh7EG1VF UAk9ds} svY~IkmqfX3OTK˿8e2[dg$V֐pH` +M 7$Z:3\fٵ7 qu[J?n͚JylZ5'ң 7 R{94S K41:洠83V) Jѩҷ|/-.:3|Uu[@ч:} ˶ivC(Ub 8ծ]u-6 Y#7q9>k1wϳ0bz)5lgU n>`j_%*\ڙޜV'=;FhhO]9XdR5)R!ܧI*%=zչ8 `>(Dj 9yJa ]D rxLݢ3ia(2Mfy ےAj0A Ac=.WxHۇZ]Q DD55ݬRNg=*2v0].^S⢭ v (atuͫ['k{S%խt>w: TrA"`dsXiieaxXsU 28m UbֶʮHl=hMmqouK{ Tut-/ ^[fOy,! U_ (UT0}*fMFo#S"1ەoZ瞮qOCګ$)z5rx#q@>ZO%=iP7l,I抛tQp&sOUq֮[[$ C ̸yLiހȪ^b,ȧnSXGԧse>y|L-oծ!uEwIxoy{eӊrKRic( 6~'XIo$,Ztur5:La*ϻ#mye ,_ ^%17$S\\ZLQ9^G֡ke[o8U]r P xVmSօbe3\j-_~aowZyk?fb[_C+qIOdeUb>ViPyiiRqLEv =jDQ3x槩RȰz)!zԤ)&AJ1Q>wg֪2 p n\OoGh"N{YeȻ=ʋuugrWfZ\,nWzxU=DisF&"vWl]KD T7S5}\ԽԦ{dEo,{V]FAoQ,1zZ][G,r\svRޮ7tqI++[A[V_!1/>B8RiZ$%JA*ݵO8秽h i .5v+Xo'(ޞ.r8H@I`:Jox8jfk:ex8'gI&D* f.Yde qE6uC= N&PxoPVܥ1M$yb+ب╠A 9 c3P^##j=} : ֶ H$7:X!iqaһpզsP2H)H^̀u[*!5FEPֲR9i3f> d~Uy RDd|(|n qҠakDFAs2O&ڴu᧤ Pc#b[S%F9}+iuKGB6^<׿3h6k+k" 5a );CQm2a8&SVfIHܹ m5-&8t mP]mi\_XGmmz*;Hr$9_U/#+a֮1#&p޵o ilm=Z}O"m,UEkjF\FKi#l\m|]ik4A}E7L[NFe.$[ɞo'ef}K+aqw#89j ) ȬbἰzH[I`1sQOȮsnbՑ$/k"jM>J*]~^A8gde4uAmO~gEՅQ dr^Apm3qsGEG"dl:XAYضgY on(]Qm z,p1ޡ;g-0~_Rw%'QM{ 6VڭxƆJ^xT-@rʹǭ]KC{P՚vz-P#<ۈ HH3Ҷ%Iڲtc&dV@9#V@XyXNJB[LRrOS>R2/lv>sU5g>rqQqRuZ.ZC֊ PnCj LqߚcD悹 9?Պ ApjDWeq .DDfQb5>666ܧ}*d:iQ\ ~l,qY4^*m@:XZ2$j70<8ZEfKʘTחRWmqcd+" %ӯ' d ]{M# "GffT=+++3DoR$=j/ى03frDJ,D7v1XF#mWk}53iۤp w"I9$5qC!P}CKBӐ:ݵE-UGKQ6cX_emA-l^*Xͫ@+zwblomCĈ s$8kί& ֢yo6z*ç3>YX=(ɭRyr%fIg"I"=(g yV#~geE,wS28e=`s|Ek) $Gf[h޵,r[L3~f:)|~"$+2:TFMJ崞 P0 ֌p!1J)V6A5n lڇ-A-@[Kw\28"٫ Plbαy".qJօؤ @mTr0*$/_Z֥6 }N/^4EYxN;,5)Tv#[ڬ`@5jy8J_zZoB8>!ZnH5d@B--gWUgҮ*o$Y#GМXɚ1ȩk`$"3OszU=zu" ;ADMoiZ`eP=QZL؀@4q;$è5gjUSr#֭sn@{gyROc'cAp'SИp."urtg֮M 9%BǃzĖ:qy$|z_6wbp{{K.Yv<t;nck;ݕkn `4}jz}Y4Xu{dw0¡~R:Zihk֡Ks\6= liגmYǥiRw[$ U?4|#'q[7̓ћ7Q J.85R>]լP*Y2:r+ȫ.V,$*+K{a`OJ2D~n*Oܨ-M4ep) [xy_TR.巎H`peyuđd2z4Veem[7e=S+b/c\Q֋Oe"a{\IQ >0A}#yIrQ}*'s?Qhox[VRfC0KF]E-QN=E7V`%n"=kԆPl!cK pg5X=יA bķnT!Uw>DMRЉNI1Fc(qS7jƝe-쌑&=k_[X̃whF a-=kGV˚$(c\Z' o¸|aa޺iϚ7d5f4jONjA=*rPE"*\Pè/HMF9; ~H"[I#?)vs][Ě2S\\w9a,r6cy{o]FI>Ҙ.ƴu:˜\Hw9L3!{/؏'1}sFm閱-D{gS&ҹ mOT{cbĄS wV )>~v/=|{ϖ#GXQzU5Q S2'=U?"(k~Lti&z>qT7sdNU6{Yc$6rK467!מzPd? KGl H^#F?7NT؁*Z飍w0I3Zlc[2+uj"L\9*Gx!G.#(Â9-t&-)Y]oeڵC<[-5(D&3L#M+"O8_ppAYw  2Y{a ZɽpZ%KV<$TC :+2Mq !ZHu2|L"U,2}*? RI3vcZ3BP0x9Za{[cX!ʰ!?u'y3%ēڳ-gTV 0S$`vwYgtiX ;>n8W+&9"fW,-enrpc)Ƣ0ON{9=*R\\Z[[a7`sM{R^^b aE%Ҳ`eQډf|:\IR޶5 @ڹHCDnN:WUkx;HCz0[v Xp0@6qJ$})stC+að+;0.umVhr9Ya#qD$#Ojp=kJ #(ҳ LIkFv~\g)n-K,.ObiJڶHs s 8.ⷥg36YUד|>XߵJi0Ď; ̵ݵ /BF=EtLY:b/,v3n9+TkT€Hx͒_jw?bpI[kgªrWZ}L HZIbfk5y[oPoc%F c1 [yaHf +~gݬr4{Nr 8thmG$O!m90Kꮩ!բ5G&\Uۭ-vjYۆP:ҵOU;J1-*ƛ)YwKu+I=bh֌n&G,#ak2H$ ҳm58&̹b8vF2 K-Xvc7ic%t46V[eaS4..Y^I$qKnd~0irzX,c{a'5j ^?2Q\֫%Eef'޺ [eվA&ԐYRS#0!0*;n[Iyې=JK*@fjXd_HGaSfRW2 H{NXDhQX׷6+'w]+yI9\"[ن{R4{ \Ec9QmsC G/zVf`ҴOKؗȌ󹹢(E&37CيqP GzPEFz*~٣%qebzI3@ϭM`$PXKccD(Z?(,7{T`1Z֚c=7z{ 2Mz9HM[Uك`GZuw1#oֱmRHcF:h 1Xij@`ӑ+nc.3Xj>fb qWhRz28r@؈2}E+1R(mdRln^PTp&]Eħ)''RS\:UBVzV.n6uMV˙F9֥i h^*pV8íU.B?},m8YNO{"O%,o+ϥXTev#4&ua":}09grfVڍ@gioZ~&3"[%2e[NQZ1$7n!;(h Ybv2!PǂkE4QtN+{Q \ktoASjS2n\ÌTuA:W*;Xnť1|جGcmR6Tctԥ։vf' E.c#sjGzE )\m楟L"\PS 8s4{)4Ѭc?7Je'fO$RW/BtޚV٣-,}eI#ZB5eCyAqw,YIE,!i㚊"VR8aW%{ ;Heix>_Okyj#G#f5:DZ48cVCZs+O?'֋ۓ֨r1[Fyc .: mBŻ͹*k˖>J]*Yłx9P'P6n}q弋3ުZsv=k$ԫVmF8><c[̐+/kpf N=,6N!v:ѕF~QzՖ?d*6±/d0URMgf7'k3gFQH2+])rTp~iJzR^vzM=4GipSW$%=lt\~V Q.{QʺF 3ޮ۳ܡA>FTB(]fQ`x$tIhFu,:[}ϾY{rޖ3 +֤n#qaR_uݣxS^(}T#0`]l"`8!u[]5zvM,@eaұuv?LV͗zTsvHM[KmXiCzv5q@`U 4'ET#ZZܸ/|>\Y ˥9&n~3X _n"ڍI`n"bpVyoj08oº4v]t1"2kUX2xӁE>-Kk@ܔaTKw0˷VHAn{hLh[SUVU}/=R [AMRHԷjQNu֥ g˗K;jO Mkj@}vq{%[}GRN@y *{ "PVNskYֻ/A*&R%b0+r<1rR?ʚO-T^Xp0+m"mdb')l{Y/S-W$ZXfA-Eac~W}ƳhIƗRIQR(țlibvips-8.9.1/test/test-suite/images/sample.mat000066400000000000000000026374031361153320700215370ustar00rootroot00000000000000MATLAB 5.0 MAT-file, Platform: GLNX86, Created on: Fri Aug 21 10:50:22 2009 IM{> x,wpT5PI)oKq HJ( (qnuw߷o[?ZBNo9ܙ;{9C{UHz~=_^߻g=H9ݱܙnTx޺R"8*XIIcSi*?Gda㙫GT1C:ٳ}bų %@X͵r"+I gOHջ a ,HӶi zU<6\wI"bi+_LKmtY nox"/ WY颗vnns=ّ鱋mmP (XeOf{^V %)/7XQ{2f)ɕD'KsWM B! (-$gU>{\K|NCJl0^61Bws[6fDj~2䦶tQ'q̔<`XUhcA ,"M4gϔ%byd/ xu`@4gΤ<5X'a/Q_0}_hxW ;K]l +S?&] rֈWz]ZNdEcSN>u~@]qYmڃfdž_:7 1Dbyэ/ujqC>wJ_9nxzF+ts;{fa8Cuсb考&>ByE< kG/OH 6/5=u%x?# r?N0 ǡbOe"*$M˳9xH?Q WX r%fi){T?2)O(鄨gX%?+ebnm~* ?z%eaY,`0p@1[K3-`anQg5A6xQ LTaGf N-?,ϣ74&1. )^%n!SYGʊsYubpbB:kxea xX1Vb<1|H)mS0>I+9;K Ֆ@.1[N5"}SI@X3o΁3CZT\tA4褎m@NZE_@-ɉEd ́htx9jhDj%-xLPt[=mozyHe8HUm-26qOgK.<_ZSuK}e=:gwiv& L2ھ:xS:qd[KKL" *:jVR[ǛT=]c xC6Xɭ`[$.V8g.km_~ bu1)g4Osj4A~~{de sBmiFmU*[4W%tj,ZwZ]z{K.Wd d Zipkmw>A0 ^BXMm6bA 7_{}N)RwZyᴰx@Z!T$\1VJk"_],;~iuPFB1hדlJUJ߲k^~Z4Y\m--˅Ө`݂WE8*),Hō23ZCI%*>%qP9QU|?AOq[/[8$7=pmShqG9VkeڣUsk*7.>t]Qbդ<C]d#Rf•O~F9 x:mo϶ʘ*.~JnԬѰijhmKh1? >p&LJiGIɬI;q[GE>Jb Q1 k Wx#9ۏ8ƪh!e Bճt.ZIʾ"^yb wx`3F/[+ܯMMvlWzx4I>  "^.S7ɲQ{-DO@D̢d?C0[l Ѭ I P$ 5KI"(ya,/txc"4Ed 3&6-lHNJL[IxDc Rx.V7?l#b> d;^Ii?04 XyGgkȝ;NkP^dZћcFyqf@'=36G1K;ڸʴKU@b/.~h7uȲJKR3鍬K,%w6SH͈ StwR.[j[Tu3WYkYIMYf߃̉Ӣ~ ;L+9f+J¿[S;6xKĝb|}B>?l:Qf ~e\ߤYѤ{b69[Nzn%kȑMo"Mhhzshv)r\,,催4v>]gPr y#Kb; ROK m w .hko@xt0bM5o;w|[-P!wb -^r K _5쏬n |e?8+tƆAT,L鮱Ⱥh{dXşZ/-^o/⬥,պȶ`O+8ǂ {n]vXHUV*yE6c{~ŮhY2Ik>EPGk "<0Edv' )QC+0xB"+]/X܇ZE<4&9$?VBVނ‰g7x]>t,sБ_[<@MgJWD ٸԣM*v \s&江%&Ey諈)ml 15Y.k؍sq=J$pޱʒo^/uS4F/ߣB=qܫ ELݷ.o ugʲH2^*3'1̲4<@1ްȑ\mZo \E=|Mu~ CNx* ~0ӡڰݧǴe#Aŏ0)"+lFs{3ސ7jHinj?f֢0 -hoJ߃ӯ ;wm1L8n֘v۾"yP`嘛s0l eeFR#gӚis@BrO_}tk^$t70vQ`#eٚSQt"If/>"y=F2S}B! Ax2VxLҖ|Z DVa4Hȏ<]-fE`Խ<׶VLڇN_H/ږy+9iաe:u䌊tS21H8O{pB$HkSi "SSx4Ue>D~s5ɭDMYE\TT$~z-yq䘹-|OGeC#{sq~i9;SHF PWp3tѢ3Y!jqּSZ Aʏ V Lj übL+009`kP!}Ҷ;f'&ysKw5S+0Hh͒tqk=)\d8cK- { C0pKt7JM$i/ul>+c./8վGT[@Bld"ctSv°f'Yƈ-pdе)t%xH(!4'_}6CF /)Ve/_1h,L_d"m!Ӵ "zomwqd$ci.Kky] [Џw#㮳s[P,% Ss; ;8\@3b5hKhb .4n޺'?9B-5QOͳ TUҘzsb$):04_40\م_TP^`v6BO>(mh,>R4}tVKݪH5NHp.Ӷ}Si T¦DB-X.oh'ź <,<;v^ ^qv^^ֲZbwghފJԯDe5 J ߁+Pv) Tmypڼ򁾏l`wDb}9>_C *+Y.M8:_ycXfQ7p[P*7tc ߁Qs.XriG̾>, E:v*EFX}ȦH!ZT+E!#EaF^AI-nGPY+^GUV&${ ?k,1'O2 O?::yh ;ϱI#KIs*,+Mg m`G^MZIwTT96\B;#=`k@T> ,r ~.X0a @3B?#QM[IP7Z &'Mq^ʇ^m h>]k[R@K+Xg-ngq1n25ݳ?)Pٚ,T]R*;t8UFHfQ ?7d6->}U ̿oR (,Ŝ] 7&+o- a F GyVy "Hu)˼!d恓KxV*=ka(-y%5T<[1U1L5KJkG4f+KW-P:fpB|Wr!2-F MH?CT*XWl.ۧAI~Yy~}4;rQپ4WAS G|?4PWj'ԥ^*R0, ٵ1y uHnk[@Y\{De\3INX:CBxx p_ %Q7PT%8w{zusݗηw ]Knt?!Y@ t8y[Q7>7B {;"=s!3,+A8uXBPv(WCa%ZľEDjb-ѥQsĂ&FsݝXd]̓Lx;#B5B.@K!\6tLxQnāCHP I -Ehvy1UKy!d -:@&0Aho]yr.#y ;mmW^ - Ou2>Sb loTsY_Wq&>&w-/`6W>Hܞ9ryť ںʋU~ԍ/ǒͶ3~LaveUP YyzU̜"e ğr`#ͱ#X*:썈uām/4tn, _!g}I}p/p:N!VѣV褖>,w4̺0ZL:.9va2cp|8^'gүb#i]|:|Ͱzv1͸Ӳ^_=Ь%O;ߝN[aEPcӘ57@0= l =v~VU5Ùhnv׹uw>Y-}.ø4X=lOB3Q9BhtS X&W"Fowo 5me[83 7{Kz%GCMkf]ҥ4s*)ěK$CSYk"/쮒1vȞ utGÇvdIPwik;e$jp{2q2r!~ 0QS6]onhx;'@]WIo<x_GZl|)?HEU!x Q'؃GUԍ'b 3Yqc5G~:wG8'lɱq P$)Ǚ9Ŵ3kqt!牤Kı:X8MA\c;rK.~ +\_%ƻ2QN40u?ґ]/:GDMk?R_b=o7M6*>Y)uP[^}fFE.D/U|T57%x#s0 2JI1}ܳ64 J|omomqbW窻ĝi7Yٚm,z/?m%X%g=$#ƍ ۼPih=u/&QIu3rE/V~ݧ9D!̽G/<%jS d"e/+ fikYm+G¨G42@zI[.Kf5nf0FJu'\"ZIT 7c!M:Ot`D a{[^w]6H^L$iecA}~376A7}՗Us^.oh `;s3A6ů`9yM.+enxp'3мF/Ǐb=`dV?p6~nZ ߅s%Iһ|fQaZݷ6|O(X88#7 /ĺ; )di AN VYk/UMBK^VWU78Up(<ڒ.tp ] ,l-|Y.蓳=ud*>X3G1W흪9رKNg:,dZ_v` f7Ss꾕[ H3e;r~ԠYVDjʖ;v,_D (azg-ZkPmBoCۢ&RᆠMz~!>P|)p(87S~W{C0*|' o Hu_O/Qiw@ktun,-I&hwc cVmU~L4pLmֳ>+lUU}ViT#3 oK=TխRUWzQOL 6\4EqyQB[n/ǓaK7eiFk[XWxsLDfǎkՐ*va-_L[1zmVs$u tpM}\KlO)S1X> u W!YB/tf!{-GGEцjoX fqsgNٟ>\VA 4Ē㞳r<$؇4@9 gV(qD -y8;:UTV=M+ ;D *Kx~fp)ѕ.v5;~جe9w. NT0Yej_) M+^\| /gxdBkd< C%ev!4M*9befk8WLZ_(Z:X}uA ջZ_YaLy|GSZ}Cv[/ > =_Nxaw[X--YѢΩnsm{-eצ=N J4$b 8n2RXBdC#EX"*/qREl bj2s/ՅKW;e-vrE<}MDsS,&2*pǔ!YYe??$kqSQEt\OV{`lEɀ.ĄQ#d Ivpd XyΊʪh i$X9꓂ɂa"P.L ɴG|I!&]2{[zXv|f YJ8 V>G!¾;|-e_1ۘ]V)Lv,?XRTՆCJMyePIq$ =i*]aG-dCb4g pxxE?s\frj/#9J{H ЌDz>QnkxyN--F s\_PrKz}{v樺KlV~ _aN9qP^0X nox Mf\CP_v}5~[7Y,dehNsc"%y%_O&w>unUte2la7ƊSgc q &UX4Fm)a0WTzmJѾ3L}OӦ-NgkjRł`feZ7;~}żrNA%lAZg:3- /ڭV켪貽UKªh~ɽYw_@F+QGH4k-3_%P~+} "{ bZLI⡣1s$E'ӅYŕ '\i]s4թ ,uQ /ʧ-1bKC/^j9BS\q6 smGsÕbYcԺ;P]N3z[ftY^ͩF[IP+JN)dWV&_Et4NA 2-(JEPq"ld _lJor0vY?r^hgH`%h9L=e =#3jϲTZt mL/"SH@ g!]=}{Zwi/^4t1wf{0ёy#3MZd;e\#'(X&ϖ]0`'\ Y uz'Y5T;˵ߕj~U4A6G5mCc) =;ouN1ZŌn([䎽mJ§bhc ;U͚ F#ByE*F$uT"g5;U)&Tjߠ&xq0ze14Vj_$ 'j=9yNw -ܽfVyo]PtN&DC-h5͞i#ʈ.Sh/cۍo)aw1FˌNDKf2CEB#'t.dMOH4C~7zvoE*CTdGz/k+9[&5 L^"}di;3 *ex$?yZh0dڽC_-mgr[FU$nfCyx:!ڛp\@)J{D3T1hcg^sk*$]NtnhhռMPL 87xEmT֜vn oO6Da+WB*.FA6;6 pя0#p:?I4*w ޱ +.C@Y@qlIW4PR;vsqlns^XtRMlc2KhxjB| Ppo|ݧǫ9nL-.8贳WgoJ<> 1_$Į*}-$;{,5`O !k0+Y{nVƃUsmfVG>j]dx\#|}\7JކD .Mz]@:xmʻr'=}UDNIj9w񗋳b\AL{Wyk!r"!%+W`$c;c5$;ӟq|c_$ Io쇾K[a?A헪Q_;\a$@Nc<Ų:϶ɹ#?]JjyrrV3Ćoui-~^ [37 z*L"'Eqף ?$~^{ 7DQ(8ANsiFYgpetlȣCa'ߡڔWL g}I!yba*AjEO|6'Xά"~}#XŸcτ2 \頁]vs/K/_&c36SMQJ4'S__H? ~`OL}ZWqV#y͌3x Iݩڠ߬ T3 2>S;FbYx1ѼQ8h$_a~ u)XJ[# 0F q?H\\"c-w eXT ͵uյ WڵD1AAr{; b`-v~_s&1Y!5~nmzE+0"834@9K@.zCS(L LU'`-ݕax7TZ!YHVӧbG o[f+1vS37yY:b;EClStoUB!D,CFQ> -4WIk?H BQHq7cS2J8φ?N*625VـN'fgm4 #ȾʙdolRSkq]ܛ tEuA,W| H4-l$N58xZ3JI sd~iϋ6Sf6k@)s$rB>1[܏ (09G`+Mf,R VhT?suNyR!}ebJ_W 5Zad\,vtFIqXf3 9#>|c]BYNrL*,Rb c㍙d2BxhC01Cjyc(NP'ŊTa8\spӀ/,~ (k3BŭI)%JVl|4\i6()07T~Mޅ{S)_%lp@(eʯnE}ގ/( B6<[pyF傂jvGD^MVpz| {.HegBr}9mKUOMKK][2CɃ*e )Cv|/%T 8W` c\3rۻ˧;.! !i7mu>IxlNȨe F'+up]6 z7h"_e"U؀ 2Iiml![AA;Y)Ve.|sۏ ~# A'޷[:4oiK.f<Ogƹ0Cg00l* lhfzx:WyJs@+@7Ζ2[@+;X=IV)['XHX.5JREHhk9}YcNCgbaZz])ȬHR. {:d, mP ZgdZeNii򗤭e p<#HkiǪD}mѵZQ`0Ll1m]^g7TDSCXEcvs7F%AJVEUV_khzpI_hR"p5')W0o4b(zmxoh4O5eBl_]}B\NÛh|0n)f*frttZɯQj&" UIyA; rr_4MNu-&pr:zAL(U|LO&J=_Xp/[}hyEoOڒZqAރh<[$%z.j)YRWVH("mAoqUY}z$_Ӊ+NjfHag֕TƗ>GcC!ǪE0rZF(&MxbZ!-[tqo1ՀQ--wjf²s1Y | c`,yeJl/q&`<5dٻUme-i&WZge4S&$ipiYL6{u1C҃)R C뵀<~ Al[ױc7w?!AhK mg:-κއΓ\?;;pekyӺ/% t㔿I+4{G]b_Pv0@)Xorء.gYx~-;As!cW@W~Sh8(^8BhC#,_9(d8jRMn&Yr0ʙR PcA >A;G+`jiniv2Um;h7~Yl>w.DU>i\(YWv *勵YVMWӄ(FG&i4&uC߆]BV/)T8UPݘK8BPK8Ƚɾ9RyI>iTS+[QӍ!7tw@b`[b%Mt N](1ܣ(V<"防 !BeC<|<ų%L :/P/ŧL>KK@M"%vK>(?Sz6->͹0*Kɮ+r%L?r%dX<"+N{v]czmTgXd$ ncF$!~MUTzr1ś8O{dՎu(0胆"VK'G`:n3v6[=ɉp$8\lmiEV5\ t4Yt`/]KO;_L kRx\HT,g4gY]J\j8޸;z !s#7YZjh~BK-s! H 'sP(Od/dY'q)V3%mQ˱|uT&ЁGC- ~&!˔37*ˈg.?NLK>Wcp)N\eMe{uu?q}Xr4Jlp6q ,Q'2TNQ.3:;Ku>A %K4=}uhj&c|@Sz$꣜vc-AM(DIzGcH4jn4S[eabWnV6ZB(ȟd 8TV nIYej+Qu~m<i`)qJS_yemX9|2^ɧ0q[`50xVWֽBzU<~xҎ5jHR@qⵧ& ϹI"FtyFRʽkE)2_-'J_4eS6n**reR vEX>ameg(plJ2=%3#h<Š䇐 `IW+=e~Km{Eʐgi>hBwa2@ܭ= 9MU%v}o9S]"QL/YnSx_{ڭ[3Ȍd8ݜA^+U\y^afP_["ժj= tOqSM%nh ZA>YÝX8"$#O٨h*,g]qH<lP8f꘹Vif"&v~HhJ+Xq)ụ >x Z8hu:XK)l00tz"YGr'jÕ0ZG5sy1'fI?&53uVgܤ I۬sxG'o|׶}i[b#Gx)w; '*{oxA fT.;Q%axL`!;Ka6eʼn+;xOh]Y*8K\gͅ$V9%T_jɿ q? }$sz#K]p-qEi_IjIVD-YF(em ?b.hRft1 3;. SP'gHrx&&cT5qx(%=\˯yR8(Z\[[[8uřٟ³b FhXkUfiW./ jy W ~ 2c4#Z\]vV(skA'cdy(4mX Ld٥`4Ϸ`0ȳ;uis<0}kodk_- ZChoL=xq0!xDaX !ѩغa6lTU{)iBoN w,kOUcd=EI}i-'Px,$*Z$ e4;ހHD(.)4ǼVRyѢldBbժ@Y5 Mc0^t2QhbkhV}å-RJP p>4,ccmVI(04@)զYmھ@)F?Q˲quOߵ[fý}WO2T#$煁!UzcX'q/35HDY7v?a|Wx<UrQl@(n0֪OK/K׉D?v1BD=B%ܢc5Nf%CX:}sl E+!=F!_#q1eT?_Ջ%jJIx"Ƹ ̦m,}HMƖqPCq1.-<CA"T1zj"0ٖ $ғt笂8Z%ƛ:D"Lq]l!yS〽`iMє+kMuE@Ǖ[YW 9QƧP. 87> {$x$;Khg$#ɡFTaΆyuk~m@q070JDocx Q74Y&\!_ʗp#xsyx}x+@ǜ&k Rf$i%P@K=Q\C@?)؅ }2B8\A ~1)Zz <#ArK7W k R$;`|ݳ1Σ Ҝ,QZ@Ʊ-/ϐ&791'}F15>gC+"/ /l~:oKiL)fIg dźrOup↴ G{U+YbF.Wπbqc?cePWQcPT_ UYv"dw03hoP(+cu73 =.i~>[wAD40ZPmScWЎΑC;ww'_|CA!iNMX`\ ogWsʭLWP( &K#}gwkky`6XP{!L6  u1Zn:EWL[9 ȑm44^¿}^ݤsݒ>z9 +=(R#0B!jxa{Y*WNTLPdl-̊10TV+7; XEj)~,2!+P@UuƖejcC^B7^*B Rq]42s7M ,H\Y>V>MFz!'*C-ž\B$cO'2zȫ6POy{奝Y+<1i8!"gAe0H6A7 NϢ| Œ.bلt& v 9*} ~jZq;1`3z>|q AmvwѦraVyʠQ)[h&jchP-C:p=фopq_Jl$uGK7FMCnRԵ43rs1,=xXW:efŜrQELٟ˨eʪ+ͬ?WGK}լޘ%6>$W8.WЯ W8Xwa/m'PAIm0Z1(?3}5gԺр9N%ŕ~\iטhF >-E퇜 vH *ΰi'| t|; _bƜNE_Tt؅S7@r{tS1|s{wG:OöԷ+wx^[n}`\Q3ۜi-oW_B)1obHbx0zpty6y; =F$bƗպƣn/mro4leRlpyfd8>{CAlc~oٙ~}|JF[Х VH+Ar &:EdWOsγMu}͗kC޺8>v{r9%\=2%rz_l[&Ʀ}YёÞ:Y*)~is>1ccbFKk["jI{'1drq <ǂ/=lk(Km4E1_h{x(3i%~'mԔ7basf"FDb|'ag~ Zʽ!t DEY[tGRós0ֱp\y|Hv!.qAc`Ba:t`v"UuQא&TcF0ὰT\:f#7`bNa)&{@Io`ih -lZqE=U uXoqi5'¥uњ|_C_L,|`~YdA, 9#| f0SnrrQke#€TJByR! p߀B\XV/ߡd^"ͮ GX&.Eg@ -I SbNcn3<9jYY1h%-KA r';}M͇mwROn[&:+7tOtlIxۿkxy?SBU~k{U$ nB|foW`oE|G߾bo7ɗpzlVPҥwgFz=j-PJ Dj3xNrU`%RZ$ ?hZ}#С׀Gq^,*{5??t`zW?PUτ1tyfTx xZ9\U$1Dj즎]OfiJb, fh~-оЋ8.mw_'8-%h24s&/7V(ogr\tZI!@eP[m ʡ\IB]]M[}m9i=:g޼i7O%ŀ Wmw%Y@k~-.pV[XjǓMۛ5mgsoĮ3::m-˚'*BhvCF#: OR}<@+@G<7xaY =;ok}Sn9WbgX݈@ShpDUǽ1b)\Owĕϖ&#դRJ*u 4#}&?uOcT2R hI 8#xE\@ľFKq+avua<& 'ssuUi-/)+/YX^u&4zTC>˿ctKwo`<1Ķ&َb2YQ'XuiRsJb``A( 7#JWbl$P @g[[_wyeeKǭvzMveTִ"!c{vo |Z'ٺLp6$-4IY:^?P~\!_ (0qqA(+hlizl!YW8;J/Мiy.hQ LEveQq]` Km3 om؎xK!y[xr)NiMU.&S>MPgv|&J/~uy8f8 oLneW#0)(@E ^ 6!AMGuch5vtt'&u:]MT4'|eѾD8 GТ]yrET@1w/#%ƂvjO=ԷSˑMh'`PK]AzN~ _mdddr6$aT:uՏd(+pA7nl2 TKz{Agv\1.>ZcN00W`e8ƻ"Ns˚ilhHjJRr&sM' I1RpNF l+OgKI-/BorL42>Vg XصԅOi2{Rȹ(z%*/*Lȸט9bf5ɓrr3yw=g]ל޼Py5tv7QOMI:@<@ڀ큤 jA*O1 PFY9-p']i9 =Rq[܎lwK߬:8A3'yMkoR6d:t}b|Suc{!x%^ 5LmJ RQ{i'CK#wdX6{m!OЬ6G;W-H>T J7 57d$A܋R)eE,VNRj$+W>'$[F2D*6 Ս (,yjd4w3~ =wi~Fp+7K8#&79{wC$^NK&h5r_h a'hX͊F=˜XebR&֭!$ qi;]x|U4v hUn$r!ٰ@K!Q5jW h B*\55M q C]G㒋HHI%} &|ouX7AHsqXgXPkcSxSDR.%$z! Ӹ|1T\pfҡ . {#IÊ\K质sF1=\tj>Hھ{hY`Ƕt+ !Pi/#Lr +帏2{ 1,+:LG^?8 5+hKFcb b<_8=iB W!ipLp;q$GUK{ jR0O&.Cx҅ :UCr՘NHN6~6^P!d.ٓyn4~:Wgsɽٵ1ӴTS&I%ѺFn~ot/_w2ad bzBs^P OM(p0;P\y}l5dxwd$F \g8SuGF -nPxoo|eǹ/bxfU;r7#VC!Gb{}a$O:P2[ ]Ex2r Ij~Z1Uf'y?1 Gwlunr# rIH#!¿&$3, {=%A0y?_*1B5/uG[d>F_ ]2JL2XD79K0 jAr?3KL8v uUp   yC֊ @55*8 PBŪE$ADcrȳ ``NފտB[!È?Jf n K4һEL##՗¤~fܢ@LNI20 <6U)iQ}͗| xigEwd9E.P-qX>d` 2bHsY 4Xo<["hZ}W/m ?H|IaէGV%G$,BP`HMd3=LsR煙p+v7m#roXt||CΠgz\lF돖}g]=#;/7󷉵4?1P^9zb\k5۳U{Xk߀*e}+6$?RI|Cߡe˅o P&J; $D{``h0.d "!_( "PRZ!~! u) W\غ3}k/+=N? u5i$ !Hp4#$]gkk p\UQnP"&c5-l!4Qs^4CQsrVDn3}/C"`W}og?dHd20f.x.?zJ%wQ~p*:/ _Hg(x6)=ݮ G< !JI*Uf+z_V*yT_^QhVn JrM|1lF)g4V RUE,_-,}YxKm׋WI301V]/ee)`yk5d!z +1F2Ecs8,+)'ƪew=_vX_e`-U.c t{#qW]skm->o=>NwԶߞm8k!"ԖWރhƄ@@5݀ *Ak@<kwH5*`KH]==}(iKE)6m1~k-M6qjcOhyXbZ Iq; D=\)|Z1hV^G'NRT95UUjcM% l%i*M"\1L9E܌3y‹'3V~U}K+Ceץy-DˊScfo" i0kѡ\R Im_M1qbYK3xV7h"WVg~\zNxj?=uIϒ%_I'6%}iJLh#}SgGJrk-}f0CQS-6@R^ -Ifi_N_U2 )\Cg}\RvWk!v*"ٜzzRg%D$|쐅@ ulk 9X)ٔ<$U}Nk3bBZ/&Db@-cCGL*2*5qwꍴ_36dLzc=z⬮FM`d1X9@$c<2b⼲]ٶKOSC.oq5~nBV19U-m$* ԵP3^ [YAZ^eˆ&C_$b #7ϟmf3;Kͤ#Qpr"8i',e=VM P;bv_ Q+vz>CS{|=I߻`]#>}BE5 1x &7œL7%fb,L5GtZ"M12a<2XC*%pcem7-,s)Z0Td "VS<@`Ngmjk:MUn(wΏ`ڱYoZ涮@&!lk;ɶE9i"ȇPK65`il ]E$\iD6kX|LUa496űmvt+7z]{tY@yfRM^(skn0UY~žc0qH. 6~6V?h_[O .7Cz+/?i_맖&ZdSbDdzT.unnpK~\ioXwXdJmS{(y&z-(͊/1 meH\,tAh05X_YQ SVìݕOac3P0)ؠ,Wx3熜N9J'LH|j䂲jP4"xt$KLҥN+ޗyf?:32hJi |q3(f&n ]c.?? v-٨7=ޜexe\#@ .J%ysB^•w]XÞ#GSˌ\&$#%YRE[#Ak=LhrXF s,.OΦ҅mJ~O[_LU9vm|1%ù[g5<*;,n (0Πz<^Fyv]{ {A@Α;]K{Y'j|+j1T@ "HtHI~6~Y .ޫxH⌗$ 1YǨ984㛸&:[[ؓȢV:\UufL!!VʹkZװ58P+W6bz }SzF(c:ߴeSl3}~ ?kIhX0'OdI8jn/y"7vu26Yڥ٭ mNGj-Fiuve<*2 մ4Nsi<: \\gSqUo<`zϻQsefsusYee750't>c~œpSDd<lN9l6U- +LڙN:""@@ BI(MK[1iע =:|텲 ħ&nQr a)L@Q̉n.3j&`Ԅ躘x`L5.#ng#7d9d4p8p+h nOR~n" }Ӗ?b)+]/ >pFeu㣚guQrg1ԙ$1qJ6b[;TfvcvMa͟TX+W\u`"QjO^QO5ڄl/~kmv.$KŚюN_~itT\a:&e -|~\ :`qg:XV{a`MWMR-?d4BG.isr1ژ*^g[`{S5yx<PB'XOe]l9r|:x =T_w] @ƺ~{n~oydjX"!9-OD߁ RΖ֐c1,7~;"g 9?s'Pҵ2 NormSq/A3534V84[kjJm:A٤I0g?=%$&!]rFy|ݎן.#K̻E NbdSV7c6yG/eMRXg9wM){`eʩJb{qC9xODr;r} OJGeFŕY0,j+I~|\yҥu.-5lyϦgk@7=  ٗH@%3"O۶xoQ?'|@㪻"`dQ\86W7vG?MԌ7[o} \FBC]0H} t=5dzzznkќpPN\' ANd|d#9Yר!"BSՈ22 uzLjӱZ,ܧNn">/[ZCJdQ,TѴv!ʭgȮEH'ӱO*'fc ~9oڮ;arckԬC9Q[MsOY]p'fdP?Ӭ6BEr§z.Lub:7zNX>;g.j疎BjCVeb4'g$Ys%8{6]%W&^ui\k>T<<8æ{ok`fH"կ7ԟA bi 3NFm,&k!5VG#[Jo%C uQ$Yz7::OR Q㘉I8eB8Fxo"fLg+4VvxvpBP{R0K ZPk>A$_n}qPJU^N/ 8G"Ϳ_X;Y ,c]dt./%{+3ifcۋ] @w-v1WJ+4ޜ6qMٺbLbbS.jVUגS4!}3 c ?N1Ǫkklj]WzecDSm\0|)ȓqJfJBϛ%x:Kmw}jUO& lgY_WR[>z楬`ySEHXYky $2qkBr!m}?\ںyxq~Ъf2."֣RmR5BLXm`j'qq ~&]#G?{YfjgK /#Hֶ1ڟ5ppOhM^X}qu"a,mŎfdn=|󬑤-G+sE 9/^OWCw1!0ukW G'U!T.V_DGH܁cV#J>0Uy#a շkUE@ǖ- (a1df}m$b@ҳ .d<ԔC ~\O|II؋]|t58 8t"ĵ;iGRƑ6::v},>G5Gǽ\ρA#@ %bݐyIvny(\FC-W0 N` !'+9b^dBŒ Z]jPןD=|M4Ws!yLPG6Zo.E>辦L7EB_%:D/ƕ~Q=K@ 31Au3HOz ByZR6Pdg@M[Ieo˒GzPgٵ<~ԋ }e䵚kݽ,{3DЮ+p;zE?L N>lrq8]8jWا/__UcBjP?׊ibcc?syڷH0!da =N F8lڹRrc+UCd؉x>\BM[NΗ@d&I(B42NCd`4P C8".oPQq^ChD+M P %pmyutO1S/0 2'H`w? wN')F˾yskcn,!RBkUUF1h'ֱUT&OtĔ9ܫMN g|X)*;U*]BR}LB_Ei]* Pφ]ΨTm\ []~RiD!{Z$^e1@;0h?G+@Bč$%@b!k!DJΔv}7;O96,v(>_RfIm);@/ݰi۷7[bt8 ZZ Iw}`pp s'Wۑ_`DdMƓzSpqF\4n9^E(!R=9.k^UC qITo㳪Dq9EAn`0*A*!uvfiԚqDw}i.!GzP]Cޣ>JAzkoƸGpU}l}C(_Fx4pˤ?Ha^W}NvgRODr?.k\7g׏͵۹8 ?_`nf9@o/)z {y.t '! b}1d$\-Zm L ~CאfPnk2BU$J"*?fgs!_o Yuc^ 2Grf5,R#3ITO4@mL $_׷;ͼ Ʋ]Tv1+16xG-Į1֓ǖ,acQS{5һD Ȼl!{V'z'OS.y\+΋–SWU##qf{ao}ڶ:O?W$.&< $m\k[2+9\UW9^vnU~)B- 0W1];@ 7 cHO|`c */z|g8Hgƃ@IgN<L w u@ĩ@WA! I;Sr>?*e=i+mmUHIqٸB UF`3~0h'Gi1 ~&4jmbD+ "$e4{Ifc; 2=EO2٬!BZmx*ZlCE#F|!(98Q9 phq3MIn L)tMdXL:w/'=8};?KhL3e& c]#cGs%;/2O8\7ԧ"EkDxݠW[:C;0Ͼ#)DS{urh_Nh+CR{>7Y*di=Yn5':K eXk l=Ʊ[_ -X(H7l 66#6=ZcDZۗoϧz>s>;._β#9lbÌ[Ei7S-9:n9>@q&a0a~&ۡx$Hhup"~+C0OXhoD¡D{5@(xZ >a Ř=1?ݒիla[j̣UΦtEWNV|f.ON^(yHrQ i,8BPwיS|瓈[}9LӇ9R,UP8A8Jh3'Ki  yr/ \*Toɺ,mfi\gbg2%?ҌWo5TG讚 %P! _d9%#!1-{gvC i'%'*QP$cҀhu j$@"BaL #p c;ӡ(9{N,!av[om9{ˁ5X*J@}@ǃy HB@ @?EσAŐP!P >P<n-@@b2aN F"3WcGm:b>f*>ZyyuE.KiF,/+_Y>*K<=uoҥ䧅 wŻ˪"*ʈ Eae BiI..Sۙz.t5J}K!BG3ԯfVao3/tu7wGIQJ g n]So7Vf0 xO'kSa|vnN0i9RtE8ְOblͥu3+kOi艍cj%MSff5IΔ‚A5y.pl;Q-Yd+F5tr$2)Oxok`:ה#)j3⛤K[~4>#کDTlk.o5m,=.4W>k7ՏfQ VS<RYc'[[)oMK q9"l^xnY茎Ù3gS3OU5Z$& "n ݻ#&: ~p/j'<LU%9 ]d7> %a"qc ^q%qW'o ۸$q(lD|1O%G?BB82 ̈́A  B3s\>w8鍝D*;ćYH$630-#qb|Țt*\^^AW|%y+)3IYgdCZȽK򫒘^K:—'+P>o:I[p芩3*^Zm3G[2F 7^{[ybO3\#GL(N"Mw:?<+KP`ǦpU$OƝ+y'jur}=w) i{q~gsB.>R @RX0n@:~3ʋ$7M\m{un,\]xG={} -Vf /v??>|~Nwh'΀=Ӿĵvlv[=axUhtpU{+GX~\u1"lQfF9$v_=g wط:cD'r%84:θŒ0rKwȰ-0Q%EIlP*Moa#2s/T#T$[ͺ g҆2fiYhKqhe*nK+('^b$^0{:_ѝ $D<"elj ӢgxykHԥQXڧ"!PTQ5e5mcWGsv$/?b$h~EDu;(sϘx< Y.ŏ_CN=2 Č}QCYp?ڇ>~q4 S`+(L=H2h1$u v`Q#1jflF,s϶qgv&$cJhẃ<'ϤH1$W)u<ݧJ #f(j-,(4=@xTYV9l/Xgeacޖ΅Si7z$L{As%{ "TV{A }sӷݿ pʱC>N|7ml QO>Z:m6iץ]%]pӱ&xg)##gbƸQ<PVQe*_3dzM9Rd+gi= |Zη]o=碬{ye˫:|?%LvX<^.vt:ُU*ibfu?VG=PV{uon J6m}g"S< g >S4Čq]r,5> n  ~w~J-=~i"[SܫQ*Yk;y4uIgCH~Pa4DDebhu 9?g+u\ܕ3%yl?gA5E_s@P."ƲUԙ^E(J?V-zhhN8SXC5"D'{W;vhQΎ'Y9Dz'e/ΚXr:DSr?[c!@_g! % #%  FQPa :x5h1;4 9wdb$s@M;=`@)P(Xw",hz ÿ~/،́C`-?J 9dcna1~X3rVlYJxzb_Y,{_M%k se r[^Y.oaaW$tYH NV\΢S;q>ΝЍrd{nXיo+*9l'jVPbFlu+E?d{J3Zmͮ)&vƭ'bu6ye6ѰObzԒ zVdz9֋z/!Y%pō-*Ϻ{*TuO.x5yWOq‰s M,Oly}n3ι[U6W;+ tͱ=;o8\Kh[vS39oLm2&RwQ+s rm[JXnLW/sec+{{A :wM|^NuY Ԧ ?UZDsks 9ZjE|K4yW\@kgfwRcgT0j/,_a-i SY9Ю?X789k jJ2+#FV22פKRwN;tm?kf-3g36Cdtp%8!|(Gݠ =Rj-5cm0pboa#ŎQnm>4aHQȷ27` OB{ x6h5p1 Oh8`#C&x$,qP ̈́"zz͂Ո FajAbV%SuW_M6SE%JK.ڈB:q^¢7$)d4mS%yq$i5e),/yolOKnJ>s%XR/\G\/igD|\O}Hk?q H+V+Ys%JRǓCMm!>-nCf mђd?ůjjI|d)8y׵T5l@Oo7{/aXM9wQRňn=/x] &¼͛'镶8{2Xo{k;{⦺^99[jMSu&M0KOG8ttX띺i uvtjycl0'ݠUzUw 45%46mUO1-Q~t.ߵᛥoDE^'e!X^*M>Z TjʽdK3Ue4%KK'7V#FmR/fK21Q{TBXWSi3 f.Bb5ͪEFVq(076)7T}cgbt67bM%#.ʺT։̶1YPŧ+N ;2y8\L$: +h9Pp3;(5Fx &'.aݱܑ"\?LvĂsѠQozG_~C1~#@6Z XaPEˣD?IB&C1`ȀT(\dx =_`-n·[#bM v.IB`^4u>|C?wJ'/5?PXph&t*e.IJǓ2DS ͠(lZ'h2&s67eY3aPQr(K4Y5XjR ~r޷V؛IMTQT1Xa* mZ>S<mA6Ocih*_V^'%]?4ڻ77/ë n{_مul[6QҤ=*:`9MxET=]VMY5!6MͥkG7F嬝qƄK\Qm|.5׳_oѻi;n4l|qv$w]niCܻjT#L$( ߝΥv)AViV9Gi/sܼuQ>ۂۂ$ 9y]伸IϻX$ (!F9Y /L_xOhR m$jvUjlC^ZŠo̻*>LY.4p'WU'WU+ Դ.`YH;lWbQϢN -.D_/h *!"uH B@^CQU@*{ [ˊ93.{ pC#O,bVبN4nBK\c@3i&B~@ja7؎9Th, p C@ aQbcͱ4|>+޺,=yVD;{TGZby)˳W¯W'spr!vT }xecn4'Wqs|7sea 19CAtыu}=Ͻ%V\$6+j'CJ CkM#,sk\86"Kbx~4ǽ{wԏ^tw.=hjr<xwy6Vi޳=IHgPU4uI^crغ FdDFXhP^U|oM2?f5SYFN|^)+bv6l*)К4.Sn+ֳ$Z"gRV}3H-Gly9Yt+]xB`=cr2y]Zi1٧r_dSr7d26dEiL ?tU`ס|`*d" ֠w6TwdZ*. tP< _A΃;#XTppb~c`;6P|ddzH[h*E`NrDt{T0Awq_Wd*FC>tW<#cX2B9 Z މKpcKpŘ0|ʖy;?}m7~ SVf/=wxLTb~ۯT+rru%%qRvˉ܋K 25`Fʰ\R;,YpV83['*wAk3n u͋tU΢xrKǝ*Jh W{Wxn&BW$Dͤw۔~Lɬ17)2sg Zv|+\[_Kum7 *3\,oɾ'aB2Lל#|Wg}ʿVٖ>sEimlleW 齊@֜&j%zm8+٫gSe ʅ՞Vu;=1=eiRv7)9n +kv(=ZblSxRsr ۩RVJZӤ7F+4_埯-0MUs4=9O2h:Joddt7o1_,1VT$*& O7׽i*XRۘ'hyqoZSՆ$YȟY)]\\l"}/tpeϝɰ&/;HZBSo`0ڠet4Q7ߢs#DGg#ꍬB)Hx\1Jx/*fj< DN"2p++wdR4cEV.Sky~ `azX C /̆E 4"5>Gأs~^?eXӋƏ;zc'7 ԣ"9bXw'zmy\ϋ>2*Z oDbA{Cg m ܶ*1{hǶ]/[wlZy ̠Cc :T\~1XZ:UXC.I@0\Gͣz5DOw%u]uuN_l㋋hYw$/E*:[Uf$o]v&.0C[]+;s:ی7F]ffjVVӬ"*gđB<3>-Maz!ɀWU cfI hrCqp 1kb%S#6^D58 BS7:~Wp) EN.4"g#F`!`"(f$ @: bAK0SA_6ߐ^<po?Bކ4(mB=:GRR9g fY'*pD,rTwBspTAu/H6 +N$_`z60J C+`) ]棎ແI%cD:0rxV*9bt "@)Ǒg@@lrᩁBWGT0A< .Y B* 9!bEY1MqO}=sEdd*x(vfTl<1$϶n9Z0wihؾ@XҖё˩n+|˫U~vȣɾIJw_qKyJ+T7R- V#AL%H ) sTD'YdYDYX1Nbй^lNWfuhǣ.P{Cp?./o*,."hy#RfMl*+Ӳg{k8Z;'syFgpSo gV'"oqW g(M_!gMeelc|N+# NV1Cÿ%0W(8:[rAd]6>P]?`J"tMԝpZvٵBW^YJ-b䉲;) f ?M!j$p*wfj>^a)[qg^JULnGVnvn \ךb?vmX]nk&c_lYx_k8*j_ӹH|2me!фjnKsYׄVMR[lCj\Rrr `NUE؂dRfL.áD4Ca&\ àۿS0`piPcЋ<ۆd,ȝW`HS@_lr A u\7/ W0<["#c*p=BUNCES{ ŘAIB×FVyp쾲HZ"g;n*ʶ;F{_T^UD]GV{(Z5m4Sɪ"8g(DH5viF5d(kRf??\sŌ?ϥdWvtrci]G\ʺ)iZwםUKQ+_W**G+S>(8,/%vY(LWdw8OrY2C2g4uq/.;7l맖G[8EnbM/_BʩXQ |`zz37@ W6=-[\u*׭yV.pQӼ9 ,*{A(9#Xep^vnnhI1{:vcTөfyd(Ai7WY,B CM*i:VɅhJ]ҜyoHEFg) ;Wݳ{':ႿDzudw{ z7B2Z9Of|n7.h<&6l#--R8In3ZUi/F []]xl#w\ȣtc~rh4W{pXɐPp e1h)bg:"mmKO6}5|9ʗJ\UnkJHEaur9=*]\`Y"Fq@ i 3[Ig b"(": &C9r`=| J@ Aww! j$>p.yWN .Zho*ĎK7Dd +`ou 7w FTG"Ŀm$ Bzho*8D>b>㠖@]mgǙzC⿲}Ƭ m'>_yEC3S=wڧ}]46XeFa>ț$UzA ϟ8,c/WV{;L];_wZ#܅nWCv~DcqtQ!p/9sܳܟ3ٮӲZuxnuq)γ(9|HBZ BnmX[Z}kM2elD |9D'!kO8:1u9M5S\n␥Sw Bu,?6ŏG3B%mn,0c uc$v9`끦ޕsuEDuV//P)Q'2h~zh|N-O'w)& V1[ewJ[#޵׽t0)q-rxS}s{rr_i/IwJlW_-#?-ۓ,g wKzCCvF6H(B!A3R fM #40 ߄aV"/)!Alg`)U(ue8D$ \C (3FMEeAߜ,E$#zDȇGoK[ ~e~G# "E"P 1ܠ5ذw,:#y:߮!*h>;ږإ+lf>vw9(R=Wnh~4 kvk]>72JEn?e( b?;aUH3(cG9eL Oڎq9.'22?OweO/2% c94 3XT͵9CNJ n:U!Vg3Yj?ILĢ~` ە۞zv=/MI'採 b7M]u-Y$riE7L`d>d7֔eo)#ݶ5 滆GTgqz.AF eKl /f&p_V\;XO+ySi<;H )9&f킮D\D)J|7>r[f#sS&N#y|- NU$(-j!߯]V",% 䩼1;Vua[춃ꫜG5ҪSCXz:-{j$ǢJ;ƧQvn]~PA?__ Xݞ-+2 GDŽ}& <1n۳BVv˿]=+-=Ww9#ZiSȺ[jHX;'ھFIc%]wGllMyxc\Xi*^բ4gU12<=SZA3^B{_(qg h&Yj*JV˯de 2nPRxjmRX0}KO\Cf]GN{I`E1pEdA=5{3ӟV\ֈ7w 'W?~FEP^3sXV͇`5=E  ԯ='/i7+FsoV>rzHB m@Dp1!lϘMyCC-5Z||ɾ"vO^DYsӯ$MI:< &p'&yQLeC@\l>˄=hxgORumCB݄"`LLKvX/ lGXP <t5 P9sMڭW lx[< s3< NҶ 'mjk@d{Fof|<8l`iTLTIU笔kKTTlm"Ř[Z7♅wQݏFIo S*&]r/>lb T>j(!+bcUC-N5>%i|clC.QS;SCmSf̖JsB`Kzi*13ulԵYuF 6yu<\Ip7ΓZCR(~/J(*Q?~a}f TX]biiX`Qܥ cq?JTq8%'3aQz&ia~6'8@@ƞےc[-#u=0㍆Y^C)_/\IfEK}ICwbE,!.&wvJjsd'QkDթ_VQTǙ'8S$r2x_ܤlw9ƋdX_􌾤eMXUm%" ;M ^(F_SU.U=u0@ȥ$I/n8!.& 0-7[ݗzؗHf7 3P8r>p =wĚ~A|m *8#ߠ :Pe`EG҇HD $"R чqo{g6n?߻dWD-C]s~X![Ӆ #8Qs+9sɴ)Ɍ8|EǼ̘S5dΑqςbbµ;|w ҏyz!D72q|Ă'2W+ |rsf&OxprV.܁ʱ̮͸$8m1J⼤H°yk:jURZe14v<fU "DkRfgX(?ctojWaR%YX7Q9 ŋ a0:]'9Q~=Kg1B[L7Q%Mӭ;<vz5)8}JYh!?N8_͛}O}`'tKϚsT|`1H1Kdh!E . 3f;?g\.i݆0f1+kGjrAoFպ;;qjHexY<+[$%I)MNmrWtt|UBZ1{lz"7Gȓa𪢫[k<k s ^FN:RUH[oMfxK#kU&\JݼgLD=n^(*P 9 j#;\x ;+p.f|?>d"@WiAs Cj CGfvp0Z"2|]T.}M7Nڼa/`tA;/G)X"SE(lq pS9eTb=a\cr+ “l %Lp0<4l:|RL:O QQHx<r"xbДqi{%|E+$6M(q\(y;j1R(ш@f/ ORÅR+Q] ma{, 'e㶗0vksȷ Ϭ4qrMYUgTS+vEڱ9g$EŎ`[zBBIH#$@( !zֿa^ì|=k3/#UC>!Eq!I[8[et1{ !pLNBq9}䢙AZĴh5گU)k{;P3*W-3tljv{+uEFaReuykI}A-Aeިq X "\Z7$ {]6zZr[p%i2/A6㐇'>GPx V7Bf%L  O܋/kB٢_䁋;r\^j :]zϒ`_HXI>Up$7jm!TQo4?C3~!K~j[OZdHqL28OQr|p-Ɔ htyHnC'F={9x+oǀsΧfjKrʣtT^-z*C7i?ة} 1owh}ToՋ~ְZaYfT/ߧbLIm=꾘:,d2@jLs[QTM~ܼP994 GLX(^* yׄ:Qe_*"V50+x՗뗺I!rbn׼Oy9]zQ\ثj*GqT*Vivߨg7Ǽ.cCMEMm ȴO:u{XM0wg})U -0iv: 5]m Cg4t46=-a-SXm-Mj^:m^7'ONyW 4~lQe)aUzq~|7 *їY׊?Sw?{9)F2#rreQEEVܬhL+JL >YmܬJ+>|hҕ869~]?UJ|lLOge. {Y鋨L7ueB!:"L?,(=s*,K1 Hc?prA-H_8f ->@._IL;B q822 nWp#-Z N]Rg4iÀUBh•CH-AQ-g}^ ]Y7,[&kM`t"]Dbñ2M)A9SԍH!@ X(I[$ ÿ@7bc+޹?}v/%Emi$LMS);kJMK̓k' ̸/ʞ,+)khYl^zH]Wrnh9`Xs6(.).Jļ~ .Wʙz5ePCL+|~k+_˟zrorP ]mY݌#X&ZF"7xEt H+m=CI 4ЎU@ 1p AJ3W 4a>,t$ "p"8ex5XD1&K3K6,^E $ADpZ4t-)ܱҞDq@gQ*jE+HZ "# L= 0*x: 0l0@*~w;8|<.܉sa܋],ϑWf#Ʉ-o jV|uzU%UʹiM;"U6j\-WjʫTO?6=hf?ڰ)ܳcԪɊɲT&ml3OE~o"p^Lz~I|<}U8eqfr=]?[pr7}tB_}re&' bl]xsL/UPesg΅%HKT6i^Zr2kn[lBc/w+M9Q`rUٶբҎ >uͳ~GK6z9͚XOE;8/9`іmc[7N*/PtZ^E/#Rm7'ȵҲCrw_RQaܣZ$3ggiͨp*id$dWiV^(S,_PV'U@(Y\$hlpX՚C}$ZWvFOOp+|G臦U(+èOL61~XEB.UH}D|:SvVDҵ,/Դ;gJ?_Qς:0_ 7v k@ S/gAt#J؂G80}"Qy GB@*A_ $pւy "ڐax[68BiOyvT_)*LP >jIm⒛h*.PvwצswH~$(*ZwfG0>j>F-y>]zI?= VrGF*/Wef,)ߡ͗8)Ӿ.p"t۲0NSPƤN^O})x2#D{06 MICI`2sAN՘÷ai,DrFX?l%ƌD$x݃`h 1H6Bae8$=)PM6WܾbtAQovxz-W(XċVV)!mZ+lraٸuGXFF6ކ េ_p0m0@-ȁ`'1WUMZ:MOHx~+x')t?za3~PNp8r7 K#V@< Tta=zGC#LoBEBUHOEIGv *Ba$w,0Pa}VN?cg^Hiy %PX~[I9)V#=[ p5§8Q=,PKnR-o3:Al1bEǑEt %R8FӃU /$}iέH;K~7} Nzb gdSӭ[Ѽ\(<|7?)/_L8^*x(mxf%9iƴ|DS7IjE>.-/Bʑ̦.,WX1)JbBO_>vl{wmӜff}͞.|LX՚q>6:3ÌX(cmv!s+c-ʟ\j}ɝыx}%ϥ1M}2I9/*U%LuݶZ+᧼+у69 }Jڙ?Y|~4Jw4[īb 4W}1=UAHIcfYGf* #tOUK6Jo[TݧdMqMa~MMV;6u,jK=6p[}Q/wm{ }HE;\Mq=`3,K-=oHyYiʑ*d8F_:rsù˷ +jkկ|R=)bk hɶ a|I_a(E"xJKPw]M⌜rBN,yTU[,_7T2CPNxn!%&=,}mDu^,>3?3.[~p +ؗ a܍/ù?Bs;< rq` 6xwA2H\o " NB,Uw8#Q!& B8H jD'8'k-(x ~muJOU`SRnIj=%Eki"WƆad9q4˱x~{ކu1nk݇;lC4E4;*X0KA`FPukA-r݇`z;&C!N܂X&Xţtl;C(@vM$ }1}#ҋx^v'>Aݖ.NZ#cKtr@-v{7Opƌ􄰙I@kymOrQÒOeR*ՠ`B^x&FTϚLb8Ӷɋks9>4XyYFmN_7<}mJ!=ޚ!/˾Yw /UyrKxK)-Us὇Cluk459G8 U[{3]zZ}=]Hnxo{P~ere{ε.i4-nߒp,egkO2luˍT]KOJvF-(O+]7_X5']l+*MPɟbjpedM婜%lrPVaw0dySdj=Z<(LLĂ#&ʉ}X˦-y#p,fQ< Kiͼ]l(T{K^%Ǚ8d1;+6z]H*8+%9q@.=GBA$V,}eQW = ecM7Hf90ƀ` >0?8yh!K ;!~4،8 o}*x QN}I󦿡3?qڲ}Y=;jd꿙Kd|E ޛ`RQhEͬ-cR]vC陼tr Eay;pB6-_~'+aЩ_l|%Y-jUR0j4lyݘps>+H3&ga,6󷺋-no*j7C+m5۝geWT1rj<`e)VSbUYyMkulul"\vollGu;l_" {:׷6Zl݉=mDzV`^kjF68ڪ8Um6cOJeU+uTT]؉"9q} b(*"CtwC݉ko~sϹyǫe&Jsti7iy ϫGf^O/P)_];Lo)R*K֏J/?՝U,m\>Y߳d}*ϩ=k"RQ~+hwIPa~ԧZOG_@a#,X;4%n;SA1KT,#D4$S8F&'q6)&n8)=Ffǯ >~*b|ݣ½wNnls]΁h QpGg SfA&tю`@S?xA#V!Wo@O\WptG.TKxd, 4E872mSPΖ/In4Zv#|FF p0OGN^9U6h眠J>bg(rb/}Qç}ħ* 1p}xt\Rka|Fo{,}͇J\:Opgė}6] :vte>)3~KMܳj_ԛVi+vjaWr%/Oh$/l\kjh=XZYGo9{slU.P*/UKL5ψz+gVU/jVvuOS6{5LUyU9W.T<۴V]k^+{|S\SV6x#r"9Q3{i WЉR~y|sv{IK9}yzu%jaSiYaZpeJnv6:>̾ۅsEpgo#1gܻ<>]!!C O:Orlݯ{"x94 &]J:qPLE!!Ŵwi N!k')=?1e2Ow|C7nIYy10x qʀҨk*ʷgNE;~xx̮X4nC húc8dCv N hnC|\S~Gχ!RbL<VOdc"x9t2FN!܄j<`WL$@}=~xdJwY:+4guv䁐 s{{_h\z*TڤIMz{]{WQ ܳX/w|K qIqۓGJӾ$Jĩ[cҘ_3 U9O*G..W *7噲tHݓ}&CՋ߻N)))-UZےeU[>FL\vucv[FT{9S5$eWF}R{R _ f7 k\p49%=Wȯ1i_BXUQ-ɕ4:':(0-CRk_s|Y3?bOyn >Y <7#`1#`nз=Nz,x"Z֐O@` A#ز,[eI"YlK5BPD|CzEJva| ny:SN` ;=3?)SN_'~5k 90mLl 슲rg_< o5@ojS"S4,Oᱸ~BrlF~yBk%Cu`+8G-U'&A%h%xCzk4Wg=1x}';nF|'! C :  Gd6% KP<y'9#B憐Pt LlG1NL2ug Nu_9>BO -ԋԉ_Vcq\wg6mx Zm$eL 4$XTf<ꄧ9R:^WwVA9•ԾV#edݚUPcyWBs*k7S\"&,LNЋOX!g6wO>Q/RY6V7 Ʌ"nKvF[ľKvN*%}:O(ߩze';HE,MV^η?7\MP$H$yKRdRR d*\Vfr}lR*WmGIJ%|]~6zC홦O[N :.vZwjlώ7LVlٛI0j\KTWh``ԛy.yiiwGdžߑ& dY`}FR2&'ȗH4];"!sH)jS؟ZhP5{I!Bs򧓙L4DNv&p1r0cR^T4Vqt+5/DZ[Yc\e&7w(c0pvOwȚ_]`{XJx:rǶ?N2]MұhF5,P(2kPXkxejx:$}"f5,aGAd.+ UTK3QS}}L泖*剜DpL˿-qp*vb6gе <> Q+)>G3 l2]};Cwy73B߰s1<.)a;Ww!\'cYgoS"L6dY>vjSOwkQYj&vqz:Z߮J/Vn,~q] ~L繞W+;Oc^fEGZ5? 'GO_Izޙ=-hNyg$Pzyx:1|eB_NrUWq꜑?UY|1Er:]=;"랢c~۹ʟe+~VUcTPp@6\zRyS5\-#B=K]dlG EDz|/_Qn*ӚhkN靪xwR_hMc2eUY7͊ga'eEENr~)3QaѣڢKŁa{#qӯ+^\+- /l|j|ⵘ#~Zϧk[73xbDQھ5._sL^"ߪzP¥Y֡>a[ͤ[ըƦ|Jy@mRgj7-3?tgw,!U[\'3ȍ(+k"Rֈjj" 3h١C ~;Ogȏg|HZ(JNQUڗ}3&(?OdE.N$>֯<(,d_,':H{Sz.\K. փ-.1Sӹ\#p/I& "2FZ5[.E m\2,oT g7{[=̍~3pr8_ӏ~'yZo/T;XӯzjjYԕeUZ3\3Q}AY.|LV2&wW*SSBg|y]i =/1)RIDWoCYrUpYI%bEh|`F@]ޫGH`m,Zgh-].U~YBMi_ڨa li_mU͖A_{NԜ5ӵZD\1==5ggG)Y{F~Ggݗ+NU$cSD/aNnVk֬lkIEKWʥJYwd~RR^[[6,~r_)"2,iN:<+ne Wၱ11 QQ'# Bm_X'9sFL Zi+a} ˅Z2FjYc#a: x bVRrj s`"D3q(Թf3~nssc03hS.dsqFkNU/YmfYe9ͺUX~ןD_# 1cÑ||rn%byI3YYe~v` rdru|&Ca 0+Ѐx^_^@*Ӡ~pA'}Au:: G:aj:dI#>.~>R}dvx},:x n$Dw86yY?pTp6jAw ]Z\Q #Ii- ^-w1)IropqGqg>6Gs߭d}Nog{֔]躕.sfV64۴ulYhܺٮUOZ ڛZ?zUrzeh)/"-KvI2뫗5uuc- z/UfTXUZ5T_RYĄkQis~@Zls6Ԗ5mZ߬Y`"b->rkBbeoڮDcij?fkE]zq\>~yoƢH6|@x?86,52[ڔ6U5M##USφ Y4*3%qTV JDώdϬV9ZNVUW.P&+"͕~LNL0/ | b{Nu(Zg2؁fFG~`/G+uAvc@NSbx֢?i%sVy>0JdqFB[]R|a: .;%gP&&_qB8*!sUpnיLj7[m*2e\!EՊe_ A'ĵ#/qR>3nB,A(Ld^`O!"73rQPd,X58l '6s &$e?n!̇P!0~g"3L[`ƌA?$T@_)X$ⅯOb(~|^dr0u& ;A :$)'rc^ÎN9r!"pt(cStB٤ G7W*o#ܜ{o":gp@=4(G9\l Pk-=.sl&Y=rqxT^6oͽUP+E;>yJus[jVZe7˵ib"^Krhnz& N9߸o~&Pm`\7UM7 xjyrAeG9B_dдK toe߱.-Uk=I74ǫf HjG$}/w-T+4.mmiRU#u~u+8|pw94Vv',Nz:X"O)QiU|#NJPWs3[RMLHa-H-Rwz]že̮-JD("NnsoħPkX6  Ơ1<50uMp6p cwO iFuDh:=^0hћi*ϸxɭ5L8< T Vww)1FU}F>fȵMpxY;6QӫO|>4%T`XpCZb Y|%*2V"U6t~Y;?h}=]Sij:s: K_E {s9}{O]xNXޙ#ޒPIʺ5yO2e~Wyv%nrWsu5VwTVoQݒ:MLiH9 jߑ;)Qg{[Bu#s\m3zۍ4 Q.#meڛNJ;2Ӣ8:GZ^, / -VYRkuFqBI|J_ϒSD)"jdW$W})QϪ2׆\]v͉)^ń?_ LMcł ǢeY3<YZR|%\:SYֺܟ7͏3UL. ϵ6luɯe- TqDIҀ|2'S&sCiAc*N%^PPn8U-5H60bc\|=qUIC Xi}Zy;m[-ɇû!IGrrߦøee'<$%-I8hR̄h١]+#j,^ mpWp:h?:u|GFdIĝGv Feq{qUh,Pށ{vdNP5v= 9L2g q!kp/fQG"e4[a1@%3unL"(zgW~?ja.>A/T9ws#w%-nN%Nrk-}F>P3Y?.=tA`_M`o3lFVH/|g vAQ ;=G%o4?%Ȟt$S 긏؀s?H:IDtyf^E̡-“_=\|?=]2.qx!KpI>%t>ƽ1!]mA)|8 OʺK6)/ڢ˔.W843U,yAԀnac2g$\l>%W趠!WB^vvmqПyKn!Dʉ9-'!t L&\;N[I9&m#kz> PL$Č6xaoqkria&مَ3E Lj쀮 h b&; c61m۰(p&a*0ٝL=k)Vīq1͎B;JMA;I)_r?,/;~Vj).w~ H`)0#W.H`ia- FQ4 + *䎬yh8V̅؁@Yr ڎt&>#:GqVb ړ\%_:G>8f*'B,PZBNB>C03DE,iHᗂvb%L# MW.DWR2@ LAKucv>\Huqh헼OM:tpA"嶫[w{ }$-i"iU埋DayK3z%.V78/"1oM׌LwL3LMiFp0qJwLU׻nC78Srs!tedK<ķ&XJ7DXRU9J.|œnjj4UCn̰ɧ0XpF{|iD& UT(Lڜ9ӽ4C}2f-Nګg5JV/Mzuuj_h) U2hTFEBėbygYSlcdž 4Y 5ǥyxHqVKx<iD& qtQji5q}=;1VqǨ7~.PW cӌڙf{E :٢Vqhc $G!dChB#SXAoHeN`\/hl̒x"(f8U:]EDı~zfh.̄mO~pT"]ß*2m8HKgHùwx]#SB:< ~WHG@C;ӕa^ ơQ)A\o-hCwf>RHѫ-I."$ou7@WP\ G Ol F=$'f@74O&>w1sh l=_#I:sy"E!Ad{2:8f\ BZN'Y>c.(Gb̄@#W]\ݭMutR4Q˜>T{vydFG]9d jѨB}MWبaOl#={)%%wdnTǸva3'/^>F:[2{ &RKI"&8نrp?qF'8X:|n:#c' LzGhx#)^IFJ>-r>͒au|d$ 9،*tޕ{ϛx# r|i2Zl8TȻp|Ip46DU!F6@a>FVH/Db fAGvaW\D 4.rR-YNq@_;R7 HwnJć ڠA~xJ\H/wb/4Gx] 48H~JBt2WFkۘR\yQ mWz|^ տs=? RdrMTi O<Bx߄֙k H=Uy,o7~0`"ݩJh:XX b O%`1AY& `gDM K xفc;z;^g\aȆ{l( bh}ٗ jc&zԂ.P?: ! 44̓mЍ좉R *Q`[H/!'rJΞJIMsEBOԒ5\*E3FSE8!UesNKF,„BNFc))`OTŇQ 7 TgA|IOx.S@O +y҆ Xq;*)5A{5σf+jMCfe_Dp#ɧ44WS:j/iA$;u$/3 'H{@ڝn !}hUh~N%JVG ̍L;{E9Η%;?p^>/(6M)הN,S4M=7}vr62򑕯j$եoJҏjXߘ o|4]0ZV^}vAmnՒeϴqc-T_k{hΖX4)y{U%h^낿[ҍuۿl:k>rm=hF و9Mqu{ CF,)WXYQ18D5+L+LquåF{-o MttӋstkAS͌ʓ*ݫ**J܊{+gO}wTmP+C,Oߓ<,)(rU~4Y^L9]˓3Lkc ƥG|LyLXڵvvZe'DSX__XSGՊ:m ,ah} ۣTgNn9|ƩQE1ڤ"}m{ yx|UL!:$} }*?KaGY\oڇ!3@w;8$Vhȍӑ+XKc g rq\bzv9 ӄ@BBwa#0=IS%e; #멚$}bPxng;ŏc"1"SkG170X zt @1!:`t 8Chn<""!# `F}x4 T!;ړP ^>z^;$,.؄-,Λ<*L[$67m38MM-9DoUڏ!qI<8Guݦ$&>ךXz=vዅp@ܻ~:bcMR=jS1eHM[ZӣvzݖmWN0cq99Nk[9纶#l]C¼ܵ\9ͦmoVZVX%ES FiQLzOqdJK8+B뚼*Qf?.-*]uv_mE6cѨ% }]Ku[}L(MəN~Nҽ)zJ-;%7<-_VuY->1Yg0K&mn~bdPcV+:ʇ ?+;uecwoL( M XwTdݦK5@ ɚs$B)+Z?'H:c/tȎF@PFG8q:q9Q枰9NP.DΞ R0سLOgľ7`-!3UB!zNuHh'! Gm22X h-NJtDh2gM`J ۈ &w񄋡y"8 EG#m2<_jn..t,gY 4ƖXM\dwÉעXڠBHTbHq;hwOmQ8䛁7 ɑj솫q#-'  35:IWQXFx4^K#ZeIh.L qj":ks7Wprz,q>$/E4Lc󧭈ާ,?=d_廹ڠQމQDe =QǛ5{4i]xsۚ|Qc:'[*M=MƗB39_678 ƋMՇWQWǔ WM) wIʊ2-jZKeEkэm8so4V=͸+*7>Jp3|ly`J6xۨs>mQ!#6=Cu r.I F޻~rpS؏IU{t 1'RY ?{^ w)E)NԾ|n^Q%dJ.D'%Gtv|ҲԼ%ڱAycaJh`snZb zg}qDcHӰTlhD&`ٔt.|]ѧl #ԤiٮH~ejx5\;nz\uQ>A~}ׇT3Z̔vYoe\阛Vn UK|kgdK1zvU͜B/Y[ˆ*TVTcȃgF?I }R4$o!y WjX[5hBXτ)6SN>p-<,gA<=3ܷWHzȳ<=u;cC-h  EXT4,xC8C ݸpXuFCǰlƫ ]PE ܤ\<: p)[[ u;H枀L@ W4G!);B l^ N޼]|h YGīxW pmЛid.:k>cŌ._Lҿ.r:{x2ğoa( ZΧអ.W@jf҉?lQ)wah ,hfHὤ/'7c ΰ@AX9 16.Dž:&up?}9{iHBzDZ L 'umM `.!+-ɬ7̑}.[rY޶cϷ. J`oo]ܪ]/uv˵;tM *.mGr^M޹qH#4n10N54B7F7/_8vwz.ix|llhXTߩ!!En<+lk"T5yΑߟzo]y֜neURai,)/2I9pO2S+ fM!1sjA&uM]5_4sʢbShݐhʸlbuńߔ;H}?6!,0{*̟ѦUуC'N\vH8slxe'b:<}\{]/ wma>x3I`krGP䈈9,q K?d"v_m됅CG[`{`%\?em?qdy(TCJǁ8}}fxޖ$E~Zn iD*ćxl&9Ƨ;<ѫSɩ^)N':V?PZ]fPøA -=KպʳӪ"TϩXRv+oE\YzHeԧյ+,Hڐ+z_Ԉy) & mer}܌Iʤ3yF+desMBTҌqZlü.CA~Q#3|rM9{oC'H9{C&Gގ2Vw U,BcFƾ-MΚdzq)ѴѼTaGMS}M-W]F]fNEaf8ߤ4;{mkP7C^wR^d^Nzb1 d%gv;˥cy9qL~|u>jjO\+*Cq%6iF%H&W\hPЍ3tOB Erku_Uߪ^]%?%1am̕P넷kr'VUV/ X_W7L{Yi/K7{T٥oL2'7{J%Z- ߝE~XKpG c?(\&{vI16h?硫5<"[HtkA a\6i17gnJU0&((b@G3oH(Rp+\@!t<@3TJkLNƽi"!& troo@z<Φ\'h5tN@/pHԛȖ+jD"=$^ B&FWr(Δ"jdNE`@ױ3 {?2JAwlBė%-( &"*P8ceCe}de-|/:[igcYwAvGiȈws)zSQ~ZEg1u\Uh>ah+iYeY6bQ,{DڢyLM?P~:1WpPEdŔi9sRVR-ɪ+؛ n8JZ5ۥf>Ox9;"#&)ץx~V``.XteKgY@`OH:h+I֟JiNmi;0P$̏ &5qFgr;`4F4\$h lg&݁w2*b5Ā WVl1d oK iO 1}1)Y{;;||U원Fbn7e_Zv̂h@_&4@$;S\>҃XNs:#'9t:>g_mW4jq-f2[wd:myVpY&p̞ߊx9Q`Sp*p7z= WHM\C 6t>Qޙu"& QTI( a>ㆡ2ڟn'βnN!,;)ϘHgDK/6vHx x3TV[W3bc%ϢH܂q :''6y#z.Kwb3a?u(_A+ qްPLyp9I .4 93A=ČHlp'2g%g,^zfM݅zMա7t 3=S8cq#Bɰ^BGJ5N>d#Q0'&Jm3@6s@b҄Gt $R.TNԕlB\ѵ~Za5Y۸Fg%!m -FZ:+G\jw|9;g7 ZVZ qnY.~vV틺t#Tw껵'͑MV߲Qɲ-$%?T/9)+yU'^_a~o~e9t4hZ4di,S5S!cR$r2ӯ[TZ_R}O.ܐfz{jܪfW|-K.h槨5(P'D&{ٟH<,PW4̎2yNE݂vp$I+jPЃ{v`ďG&uqzt`'?_*fĻ] ,VHfTba}nr0]7$J75t6dvl|t)bY?5zUh-i0I wyD)$gfB%L`v^&gDBH`VoLbWYl0SH*&z,ME]p1涐Ju"T$_H^hPڊu+fE$C%6)(+k8GQ+p<Hv%.#npX&A&c M ; c`3é,ޅ ZAp5~#H* 3|VdeKƶ\7ԓL8Fh2AW>Ƌ[Ŏڌb' Ol0Iz,_aR:NHdmBg ٲBۺ{]gO*N?ppr`pKvMwB @w%.m7Fp9?%!MmJMuy씼DNLp1!K?H`X_KAl16ZŦMcJ\(aQR|*on6Z\"Xkd|1bKUkJΐ_4YZ}iݚryi~cSeQ29(=*5zSsE9nPEKmedCPoh}Z++7<*();TZ~=*Mۨ!r.5ew0iSWJSؔ[AɻO6ҋz4?³، a_sOr.3@ęK<#s,Apg 2` GWe_@6#;rbw, p'7l2^BrVvgo\_*ZJC۬"e=WD^&>W>!?s 3=ai:;k{μ>re8sAo xҎ_a@ph xyHn"B`L_\C Rn[M!˶qn\,zp^HƓ2-XG/v%n⻰lX& xkڇ ec$<p! v"G \/tpw"Ѩp%a; oI3Y@%| A8XShWa{joj*pAO&>|?41'ggX yquGE8D}_w(Z8_-u5+kׄ쫻QWWko+HqmMM]fј#V$){*TuiZۊƜЂJ"RE}H^94\6ìꜤZ"ӲRf%?N=is)dIN k\ (*VEҼ{х15]+&YT ;\nPd1qXgo/Xdv97MosQ=#1xrj`P柭N5DG֦ ov/<;x[/.};psb ߍ\\n( 7%n*cXG<f"{DqWoFQfoR>Z7v;7`="xjLFdF÷o21c,6t ͹%)f\O]FNR馏k^_)M˼sO3(O/6\}NV[h7=+A/Hvr'rJGZȺd `*3%ЊN[Hΐn"'Bv$g(De4VA,{TZu%Goj`Gp*F;2C,y챐Ϋ0M0v p혐^Rʱ$ '%c޴S;ˆ aQf+epMJr1D2I&dq 4I+2v| mp.+ҙ6,1%Y%dz~ǞH/R޲q־r}j|N b+ NX .:9.qyr^:) +oh,L)w=][@վWԻת>*Ԯ(T]Y0Vt/njĈ߈^c˵6a+'}H(}Md2:YP;CXH rhk:қ| WߡAbБm5DA YSgRKNU ޴6D!Ns-TE)HY+vG# q0O ʄ  ?a7BJU.`i{-v#F=I0]70mGEKP,\+h 4p E4djO*F>Ʈ#;\&%t:P_' Bb6d@)@0 q/DBap\Z%Ǯ@ 2Z2dR^IY5ݐC6}/w6Ap5poCt6-RDd)gU":`swc$] 9!d%y:l9H&F@5$lGh'0W6N7aпJ\`ŧx+geM~{V<}7s1)6~ܖ}w7w.K^Q-9\{8'N* XۥUk&k~j=^S:c-vvX5nވ[K)}VTuSC2B"ssJ^Wnr*ZݦmW`b/ #k ]+M >J(0*,㙱\+\=?3{bZ11q)w+l_`|TW}a\sN]_=4kawJ\[QYKC+MY졹Dw$IrI%Fw»LKrr˜tRެ`!&)%|ߕBԱ xP. -{FIPVʲs'yAN~Ibb`*.;0WQ#+ ]-|, lv$fD+>^IkwUtT>KF{!nҕ퐊.AWh>ђJNoQ3t2r:d RZ:RB֠p%o)ijp;b7c^b#>Kg*;ov[aTŭ ^U 9Zm60K:CXxĖfx֑p6$NC1fx2FХ"l*B:C n|9s}܄a5RCNÝ |"&d-dwZڑc ~vqag2ZrʩҺ~'6=T1ѭk÷egVmP8>q~虿_.i''> zUyccەW5ԇޫbIPk>;ÿ Ot+56-nt2~1FZ:FtS)oI?Յ˃O,jUUԯSm)Pljj]xƣ~~ɞ#v'N|P PQWZSU718*)%k6S̚Ԅᓒ_֫rK7FOL0kIPfƔU~)?$aoa _ƞqʣuϗ.0"eVsJAz ''9Vc`$h ^I*?XHDziHLjUzBpb"[G h9xDZZdJh2 l] _cz t/]2p!P8#։;/H.& @#8G^S|$RC߿%@|%qg 'MR+%p& ph%:)'J#1k&}Y=k?1ul& /vHks-./޶a]ێ\o}O#:|5|߈D~<Ak'ZgHS3Sb_[!Z~V+[&U%k CU { vO?-;SƼxE Tv\S^.@;ae֥~BmvsjǸn*mS5jږo-gGEO.S]UN2_}\!,Dc(0Ժוw OtMۖd9gM!Eʨ4闶-f"3$N 8>iNd]#9t9?3G>;Jp,:o@ *Q_Yzv7RfFQS6hL^.sAN4@&ģh!'{,WOewI9Î,6 W? y")2B7a0Ny["RxqRYV1Rd_9| NdG]:hHq-RqDtq#t y@%ͩ͒L\Hzc&Y7N.{f)P7=`OnC8L^h$ (mMMP"%+dĔinިOī 8(3wLޜu~d@ &gY[?ՇA(o/I01pྤܦy:'h60\Jl(@RE:IZޱxSY,n3 O×[:ԶlO_YlHuƐIq >؆D +*)fûvrKRZOSBYXT@}hg톟rVnvަKej~lԼTwh**)SOx&mw)]B[1ꎪvST+떕Me1yoԋfGO]npcuK-,Uqֺ*ų⠒=r6dm[4H׵g[zenIO-K3 L;Xs%lDEIi4"sC}uzh١N9v/ǖ{ݣ6t%d#vB|yH z,qeĹ;C)3;4$+?NuXavZ;Y>l';Ԅݧ݄v+_/bA*yFJ8p O>D'FDޒ$ǣwb p& eFG)6h4C?_H|W%{uv8*6l~iYnZ0\3rTDPGZdqCkd??܅X e6H\wk'(Cg l4}b爀w/JDCOY̤>A }ǿ |Ǫ$7IG%Nt)d$1~2ziXrn8=BL'\!:!n Jp{7,If(P=ߍ`XX@,OCaV-[edӼuޯǼ"|8.uש &O H}.{IG! |X}sĮ=dRU~>oYmMFcYsZˆz]&X[뛖5ԞjcJ́rʡeeśJ+:㒳&qJK뗦u}j:jYIyFTM@qNӧuK>>"uOnϼwO)SSLnZ;_Oh9mvytEip{gGL1[=ꏴ(Z,9D ,Ά 8Tݨ@/8T|.|ҩD"8t# (NƱ'xK0!s [X_LnJMBcb%_ĺ &f3ﰪHKp1+'y|WK"(1t%ΐ+R 㪩Fbkˎy0H GiEc9.G Id-İR"3P=R.!>x{;؆%^1RJ`P8Gsp i; .\J(7tA-R;sYzaLHIྡྷLF2SYE-]FK|XͥtLʺboډϦ0]&@JH&6%:6݀~dcJMK+F-MSq! 6m,{zm:ˍgXoȒ>uNYϤ79^iNQ'zp^|ԯyiF%ix1PХa J5V:FE;CL]SPZݤWwU܊% W?[onԝSf*ӳ ѾWNF2NU'_J>7oxW\U*z6}0lh5sS#+T͊9*]uoUϐDň+氂YEDTD9d$!3 Aĸfs]^a.zuG]^rgy Y7 tэAWޞ{C##&NOwcdji3bxgAoHk:Ԑ]}'&\7elP i-l{MOC}uܟhR O`) 0SYH7}=s8Sh.8PTZ1ճ|(c_2S]gmt4g#i0|Xa%JJ#8]X BF en;rM d* XP}S]C͢H}sqYj|D; SBjs*ra𜲄ϹU8k7-1!Ěeh#l? p R7z 0dU7x oc0Ĵx-8A">ׁ?ɤc3/= {`4bxOgl_]fv˟ Zw%,GYXoŇ/LsbڢO;'>8d]kR{N'zlD2ñ$ؠA`w+gyĄ%ZK-v/,>[VQoqh|뒠QJ;wphŔI~n~׽{{Gn6R jD< SWeQ/Ofz詗dB ~A,#=,1p6/{;OLzl_h;C[,W(CN} 1pSO^fߕ(ټ Jb5KͿm,`X="1 $ԣU!/jm/V ҏWi+ 9Kג&zX*Glbָ;axRDo1]>X NB*##'$쇖3 t$ 2c$^%9F֐"b$ 95մ?W"0쑦H܊Er# l֋/:cw` m1'X%ܢubȇ؃oqoc[dEB5+fy!<1 (q=b^|#o`'xLQTSՌwd#Ğ,w`v&[;-:z\˕Um4hz^If ٸwm-}ߎy3kpά>ӟgE*Zq7s%2R|HL3~9鹙J6ҤpI}#CJ sj68te]E:]yRѽ)&W[K568q_PH)C^~:'?>G㍺~_|: c[ݻnRΉ)_ Q9'um59"θu̐괷謝'?Wvrݩ [;pu:xw2ݤ:!KPރZxD?~ï$x6AʁX+0:hŤ :Z/F^)A¶u԰|ot\E;ʖrRL_c+4ӓ$rA'o1_˕ߪ|z ;ʪ0t8ܕa03wa;šiHsRKѰ[a=a8?WG(>ڲ?0hvc3T  *(%9FT2inc A 8GBK}94Ad:&i2ay nrW2}+5Z

&6ѤTz(T<-A5Cj Awн/P< v7,_FƱ&( kl! Y=Pn1,nPCEd`[hXM!a%=,+Z#H1ڳl^̫sfL-uc7~BcixxS4{By$W)sppÜY.ulu Άfk\s\ϸisf) -*S43eN;z'MDkKiV}?)[SٲreiC^S򌤻)!%/lkuOfI-{xRGBKi2D W\,+zWELː"O y}ctA]ZcE}{7zjLˉ fcHC7V̏Eo.RYA&^ikڲʢ"Bedqis?/b.NTE G(rw6|+\.K!<S )ncoBz:6p+ە ۉZ̥[l98gtzHd-yלgg5f܊JrWam5G|&^R+d'H3Ia$Wr:'VC %r$h$ߔɾ>6(90˞ S EC)q/gl9%lfrl]‰x.QOY"A+/0WTTފ;6?>Z$<Ƴ]V0kZQTTQ68m]*Qj# Yޜi@XjnpnIO8_vn|hgtjyR#ss.ڟXfNU9R;qƀDM ʼJue`9/YP,k6gK 9S4pZؒZw}]j^ߤJVRBbyOwrߌ9\.X8"gTCC;ykx_3_GunŭE|wM}UUybbF$EO yڃvlyqUނ3 fK)W@\+= c?4`-[x)JmR$WU/BELn 2DZZBk!fB: Bcjeôv7(ӶmޡXRr?LҧR9aZA hGjE%arLudy ҂e1쵀,ΒTHh,tbe!-$\&.F=ϥu$,\5M@VP]D#g%VM7?V$MZݤ=yDCKc<(AQOzN&֔zBm&d Cix/Np"5ӅQmð-}Bq'N˥7ҙia1ddH!38u_6`TCVy{> ō`F!/I=h3IAN+y͞Zҹ͒[̍fm֚ccF}8ɢxAx}g4˪~QݻڲGᔜIo򗗽.M)]\Kߒ)/ӦOu._TkVMP=0`Fi^Ƣܷn/[XTCE]z Sѯ@%YIh|Ae𫀸aOO5i_ކ]ib3Űx{^x߸=˯ Vq((mld̂3Y_9зEW"F =]$C8Ѿ&S{4p ~tX /qMױ fWn%r^rʱ, PVX[ 2 Whnv('c Ŭ[p={Z@4MVykqY.e49kbj:(xiNJesJ7T􉵫u*^V\WY]Y3j~JITTANўK#e]N6GNLLALS\h~4èӡsn=_߮[I!1SNb{Sa)#O]v3;uaBFm̛aֱ)]g6)+ uKP3kaD;)Sdbn( YIm}nuO8u'ą=\|upfC3k{HD+ F 9I?Vr[<ȝeX患>=!uBo%ˆ<agCWI LZ2#}R9Xjk$d?: E׽'E@1.teSp-bziBtX; :^84f_ӳ4^ "]vcGKh+[7ű45|'Clɏ,abK;)t,[v&is)%]-0G(R1/C ܏pv؞7ďc ɏ3+4:`u]}?^w?5{g>n7/;\y"Yz~Ra5E n֭ՇUtdmϐRg[O6 zd=Gq<>+=|eV% >'?=0u&vyӮ:AqR&.qJuꪌ:W:в,:|Ax9Y^qK#;$}O[#Wq3KȲ8My.>?L=#%u1*sZ9jC[Ɂ" zh׌us&0:QVk|]"5t"?MH})OwXYƱ*ꮽ̩3 M**bWl(Vz-!@`[Q^U]\]7\sfy965H@p$ҢM̄Z: Zup.~Z@6L'0O&q-]E+B[U=$ꇎ-X,|iy8wL)Bff@&0i棯\+Ș,HIf\姥=`T6y:xy#*Ns]}k 9PĈʗ8eirjWub$qWxKõCZ{LrL_>}OV\nzW]QoZoS9:IKOΩI2./bEx_7Ǽ\~nC1jxth걪Cǂ6k߿&hndJzo.~BxBx[@_[UZJ*:/:AOD7k+qy %vl"{@IRa=ԗ:Y>Gd .&;D+{o`K9 YKӿS2,HD]p*_CEOn4X/ OaAC~PTCFKYcZ PyETx,#~bz&X\WzUH ߠX ' @Y +VF#П7ÌVL )}׊`bcdxFm, ȃ`jBA L|Hz Th: sQoyZtGQ%_!_-/Λ1fr,Z ,-w3qd&}>A7>𵿕WlCw1@ gͺ ƅp$8<;-bE4iAϰI΂^XCXH :G? T|$V!aMfq}طd`FAnG;&K#m4Aq,h&U$3Oy!h'a1jn0\n:_aG4?v)PN*IśޒV[)-^-N)%Il%TąBԮb;i^E™~a~|7 m%*C#Q8l{;b~kS5[{x-Ȇ<=f]OԊh9J_KE %r WّW\< ] HܞWfWiex-H>ZZ=ٴtҡ]ueXӤh4ohP6O1P%uls 6{eb18$}syniyEM/RNSte)K&![ ;BOFR=PCC3CJl Mu#̕ [Lo]תu3*2+>8)=gle^pS^ݘ_S&MyONOK.5QvB:O^]2ϛ_l&(8Zh5ϧj8#mz>4IjH߳H=|&jv1͞`o 1 ACn|O2h_x>H@Q$Cq*/$ivWnnAG&awJNŨ~U&f| R&rHYBsI%h4QWR4\#unÌa'hghЁ_Rs"P=4fGf4xYa6`1c`Hq ΨrĂQ)CP8J øFg=欸t3fVb{<_k9'6l7 \v>aۼsg ~M<UE:\ixxxWX2oLpE -}Պogɏ/ *>* EКɆBv3IE3xE]"썟,Я)kbBo}NN6K9>ݵC턬K9(n/#yK eSo =ûöExE,qV1;1Rr+߽摿]XQrnl~BI 箜Z:3Md`()VmS^| >+Ub CFߗn:UܿۗhYQ5 @~u80ؚ|?BH-OwpjT/mv&x:O4VOpZq H6`G4x0ށI wΧ9E.)$N C=;6Ua-':T Wաd;\ҍ>t-Ut'w]C-pxV10Sd<aa&)/sU6=^Fj#v8@| wN].FxG8A,|(J8G޴z_U}괍n- mN+;ZLScpۀ&m͈?.[J>do>'%K.L5_hk;ljm$ }>] i5kzlԴVUݩmm mlmQ)瀶&}rV~*ˬ[t5lKgٮi/CERUyk2*}g&$U~xԂŕ776ܯU-]QY{[4ߏ{١90*5azP\aLW+KZvc׎寙-n;;!~ 玆8^Qb3;_hQ}l{BF>+WTS%G<y4~FuGW))w K9*1W6BGH67W"n;.r'I~E { -=UrcE6/t|\ b *ZOqc+ӡd ?H&Uާh#%2ZHi?.oП% F qO$B#i!x+~.ؙb}T43Dz5xųU.\KHr]1uϦhaO |o/rl+σ 4^>B)L<@B>`@Y ƃI"8h~@vtexrX-!؅DM@șZ,?%ʤ%;EOD],k yŭ= J"p[Dė$_%e![GyA^-M潹X(KoH% + Bv>^<6$nS (D`>[8+PPdPjR,#>Jyǖem[_ ,٣ {q#Pĸ }Kʼܼԫдp-NWk*7ߨ0ZOl,_m`w-9S2r33(ߔSRPs;NÚ-a%2<֒&-1clږu*5kw. OC+d謃[n s4׷jMNxu;p0ۡ!eE[w-tM~dUw`½5S| O 3ghY cpyh ehAi%v<Cp2\)[4=?0f|7X6p&|@!-`$192+E'=ؗϚiP˭5 GfxRY8'QCo#P,*K>VU;;.[?€SzTg2vmJxxvSLXeNvmzҚcrKL^@Cu?j3յon`]?>y갤HeNEZP>v`"_1.-O!#OWOt2w*h8YcU^Q3ӄ3&WmʟT&6T~&M|q}_]^waI݀<2ÒZ:}fTau8Lºx7JwmQ 13~TKR]ByED삻cm\P̟Q%Gm~rpwd.hrhaCsNokT9t84ٿcJ&Q1t#F9TN$=Љk+Xwgt JBit%:D'(/1As%*l@64`Kq&bLp/k?Eez#\>G~pYF3B iH#GR]ȏSzz+dU {Zc\UHtTO~`SHjxDZp1#; s/x1P߀=p n $8Z.`5LA8|`c#<'qZEpZF{_hGE~f#KI;CSƯ5Pvη(`X( 6:Ҍhھξ'<sQP2mc]Z;y{E" j =dy, pPk4Px!${*{m}M÷qzN#ݒ͔O>u 7ـq ɦt*Iy2E$̵`iMf#l/Ƕ֝9r%2%F?7kll\=>fȈ!la_ZEXۈqIi3[믧=-tJ/9NRwQbY}GM*ziFӬ]Rk_|s2Ӳ*x,cMY R.ꬒ`lxʼn5O{+zWsѯ<ג9Cφ _L}=a+>GTkVF=^yt ] YjϷʮϟztͼ}6]-Xsvv3 3vg}ef] [*o?]*V "BV>$I;Z:MÑ#{\6BX7aF cJgšXG|D"lM0r P'9,HRM-Yx !w̝5s L&; Ťh.n4:E&'^U,Td 6C+x[<%ㄩLGїĄ"|\z'I+~s;15Y:HbPqo d&KdL@oҎe%o$WS`(jxmA<o@&i?x:5 "| w.pA p@e]^u;ʓ{|W n*yW~xi`oDEx_[ĉAq{R0KVydKN% jz'Hg:$^v{TO 2S<0OZqL>^ǒ'N_?TWkNf:-ږ{+GRѢ&E nv9YsB;Df #Wy I0+eLO"$}LYq6fִ%J5ejʀԳY(gꧥfZ%{0F\LOf'Cn]^`/XE:%D$hHSOF=/l)5ɥ F=j?+rfB vJPH;,O%ͰhcfWe'uRz؄U'TQ$aXV Ϊ=.o{ĝFg|@QF ':t /-!䧤JԎ̛<4D@s0&34J'$6ڱ+GxGSK!OG#ChώS NaQ-ٌW<w C|a18 -!sX:-x!@8!9|Gr$wF E/I[ n%Ӌ,C3oF]xWN1̞kfK 78 P=kE{'e:@Z4g-u@\@ F@͹y[:Ȃ>R׹ `(K5E/# _?|%o;) [?o^N+=0rv |ԓxp(\O,uN t8suѪ7n}]K:;:i^Wk8iFŶJ|k\o7.dUUG׆33d JQ&'o]eV,8S$^oGbdl!nr4J}Yr5zR}V:֔{Jݜ3%#4)*E36+rjһ )x[V ?V8(|[d̿vK35Z_ѽ~1iڄ?.,4bҝ)$h2v-U,f8ޟJ5Bg=&r+8okT6@e1))?NJHYR.D/$EJd#WBlQ脗;ɖ z0eўYU ғ,}=ă \4ñx1I>D:$[VE7 wi:IW F|}WD~S(+uTϒrG x* /PÂ} l& A@1l0B“0-Y.x?|:x))v1{`etp^mE0v]HK+pkɥ+qJCĉv#]~# @+u\!?ʚ/ ` `=ly-xq+o/[$(P* ?§4GEp`&5bxG X)˰ F:uR*Nn! x>%1ŤlMfi$vRnWq4Apw]v}n=Pɑ!Es֤>lq$"~q"sErm5jzu{fS~̡Բx[zK Nx+jVEo2?ewy!,|Sɪэ5AEN $0M2F_Iy=6V.+uK^c)$M[L7 UU}3fS_ (U- [1A{*jfm})=fg23٘տo)WouelG#]Xq8v+N@=q_bFw>r}U`tͳ}g̚kjw̅Q?zгXݷvL &;4F}2j}Ɛ\^w&>E}v1!(,kṾ3lҊ).gǮK,9E'WE&/,R|4{%4]dZ_\RRUֹdocV݈N7csMJiH: !#aW{/4i=Dh,D08BmyN%CS.>Գ3OՍ-]QSsjÌN3Xƻ=‚"%s?.JI9۞!4wDut܊"hxޮu1"jd&nM8[QŲE%٥cӌMͲ4sheeU3YIϗdh"αqD3Is.$Z&NlJ뭻3#߄M))G8c{Z"WG*}cI<&Dq dOiI_rMJcؗ5(4)[+TmWlnL5T9_X8EK)8! 0 :bZskRE)% O F4I% 9|p,\.-DDR&5OWo*ԑvSo<<(`=q .,Px*B%/\a@!\I<uBozҧU&PL^RG""D'BWW8Dʞy{14ld/xM'֩2uOyߞɿX?%.{"?{#3Bb+o߂S@n8^e }9649x'%=7$x%1 L )hnދ_W>w =h2}%4ϑ+| gM"*2APu#}[kˁsR ACȸ2v9Kkgag:&OM.QRkuB-WxTI1:c5_MeUk&sk67𹮵hnOط/ջcG'[(/%aG˔@>u`' 8r3$W :,_a_ץ*.f h^q<¢mPibUw'U\ńE%Y˒&$'S&SL)-KUIA\IlYtDqj< =64D4i-4tf`~g vi=.H``MYQo2-"i-M6 2*ΖcW-4Xemca{Siث YĀwa$O`;Cѫy@Jҁ).W"WR  j;^O ͤH L)h Ő;@\\|Y^Il'ucߐ#X)J{BC|*yGX }&Q䍶lAx;j>iG9$ 7 jR ^r)fX-?/(PqBױ_,ւ5`=CtDEˆ?ǹN\wOiyZ7sޜ%]>M?k> ~$AOx0/C7) QQm*dpùֳ=u`,~$O> |A5p ?I,?j n4AKN &%؋NFdXvs*k'Dzan)Owl>{r%Y4,j?L{t{܊ ˱L_ywũfުO?[v z,[_bz\vTz`"ţ3Iw;97Vՙ5MM:,~rڌy3c+#̆14CchUXT|lW0*YcVE㚊]\NJŕ &#Kne}H{chѺlS ײ29L_5a)4Fly8Ek~<*8%dyc!O=gaal2U c!vlĂStSWT"F/nƞ^֩TO L D=\`Onž# O܏8/8#bw ,D!*}$:K4,~I EQFx2iBJH}׎,Bkh): #3|@/v<%:[nZ@]0q}0%-w؆tVh<EwB֬+]F,`GW:pwcI{Lp[i!ǐp'pĺ?'N#}X;p׹H9OeY[dZOh vHn0I0 mAFi'ߍȭ#X@o0_{4#0u^0?GʈUBZ>FFky QHH'!ԍKjK%?6A-Tmf[5vϫ]v3 T90!1vfBRoگ9tEes偲`ȉGjXEᓪ _lyzMKJWͥgfWLXzidױQ>5UthnO67\]Y0?vp62m¬dMiUsJDӴv(|zb"N{Tx4øftњ&'X&xUŲv+W0Q[_=|^黂AL˻iG꿆ڜY)Wc"~G|Ί3$^رQb"MΨ?0a/Q.?lOIM:i E׼L4ꔅ턙mj~wv_;өEJKPF2v$߈V\x I#tJ{͗zXMޒq F2^ķN7m6\؊$mI4(h:̡cPG4:'@/KԂGЏtaHv [GplM|NtMpy|~ n:dڢUS\75Yvnczۆ8m~E'o*w|o~2ݾ@ǎ{M͕M]x]2kJ}˙w U07kmƻ/ Y 8׸ iYeVcmZktԞ}PS'66UV:w\5l~*V5PYR}R}*s*:ۡ`kYJŔ,,=;5(eKI؜ܝlꑚ3'eN6NOە\G|Ik O*Nv =ns\|\kC/}gch ygT+fqhaQ, !ѺSL/qeefSԉ(,=ҟ̥Ѵb˖i0NS5䤤,]l-U ePWFr .ExL'۱`0"%@4lG[ESa,2m^MQ3J*o AMl` ,&)>9/did?.!5} _ׄTP5Ȗf|!DN>aM ǃ-߃2d 951g[ t\!l[f/x o1RUkZ<8n>CNAf[q0C؃~IwʦC!6cp&\x1,u47ӷGH!`z4_-0;Z:AlK Rb$Pװշmkmڅ.n[yL[BۺVI_Zݛ-?)rM7Gl{򻒵-w;δWp {CޮiS橕 //K.oirbݲҖY %n,n8nhMIUyjUp`KFE85RNi ߲df O_-k|"b%r# q'f%%,Iۑ$̵ʬY426'ħǵOw[ȶp{>^N K&y;C,n(4q\n\*|ׁ݁4!t}^~=BJ:Mg4!jA3 wzj90RXX_ gU$W:鋑̘@2ߓ!?XH![ A RG3HΣѳ2_EXB`DměpI M6s/;VgR P)G%~A+Q?r%z<&x"~ʹciE0>: JqO 0e͢bTպJfGdm~72 >TRXPʧ |J!7ޒ!D+xm*z:_{~J'B)<$J? wq@VB4G܊MI^$!YpN|JE1Ex.+ ּ9U9A` ]I 04zcMK˭PXXUMHM4I5_\^(lhľʒ[4m[>TvU7kղjƆi:ͦmc[7nQy\;5iXfpη„S~Y+۪kԮ{Uw~xsM[xl/U1nq_:\iJ)KVUNͱMGqmc):7!soƢ4oYor6_ˋKˉ/k@F_w\cOƨ'OoWq;ѳzDE 4sJN*ۮܨa=U[-4XoAX'R+,19RP ,VzOXLqDT|$[!Y !>Hş$/% 2qŮQ' ?-v]v0^4HtsSw^tqIlSQS=g>vH:,QlPzbR5I0̆?W6џ  ,qn "v,V|sctȧ Z%/E/q]'h9LE'dOХp/y:kOl>\Q6TSD>+Å~M W x4q w ]'Zc ?^scl#8"CaDd'qh ?\ d! Nsx[~#ClF gLp]_>ŷs:P> @w 0UFGL8{܁'F#"yRr{.۲mkVa~%qe>-ͽM狺i3e]M^I~y?T5[EUY[4cVK]WuuƤ6mkQY_SyzgU\U@fJb-Miވx~?tmPPiÊHjb'ǝNIV)=cegɏR'&'e Y6xdڰ{> ^.׽˼w]S }dz&/̳yS9nvn_]ѷӶ4v+ " f=4zmJ\RmbOaߨ [1,(u@KA6m^|c4c6z;5X`Mhv/ ldCPd\pU&2~&n&$~g.=zlakbD  8h(E`'JMݠW\aZv\<<"}.Vr\Q25B]tjn1d,HlӘQDZ+)>eZΪ7m?8*mǼ?pRlVS]~ZM)M%m  E +~RWONX~Ϋ ܥҮOV&yfw!!%!kB[v0<'m\jlHs,d_+DU &V&,?V6ۣ[rjWss/S\;nM?>;<7 N+]\䮩Gz:{9Voa':X)RU${6}ߟ*pbECTX*b5\?d\)"F)`%ޯ(Q||fE$A8Y1S0Ck{i.l%%= QSϞg@ya4{>D hCOfK&t(c`M5"(gP f<F[h8!c ( Br dN $k.$Cycy9eAՐHH/ +:Ngぴ&R=72$G8ϛZsRV)_+KkIs/::L%~f.ɮn]8;;:SJݚos0SzOLXROGHa֊"$ܦ>-e-zX()膰FJMQJP{!DZ;%1UH^#@k/i=!fa&XH:F#$zkCʡPJ4g.E,- h9}Du+OJc$it:?؀R#Q"q% :|,+OaFtW%?;/RurnA$Eo"eK\o =:_t|[tvq n/ c* M-67ɴ~  EdkN[b9}ȇ#䷹:\cLΡe> Uh o@}\Mf5<z*šlVW#K( KÕ$T@}pPHsӻ2o7+F543Yh¾cͭW{ukvX'n}mUӖ]; OUd6'+3;ϦxY٨l€Ԃ{eFMjƚC]3:*Rd\M5IoMbGO}8J/OxWxdW#mӊSDGvG t KΏAc-;y= (+ O9 7b຀`SCz:NJIk\,ig2qSrbB G]m?|97n}ˬn{iWV^q+ bxɇĝbcl3<|DHlAA@2^H Հ48@ HFpIna*uw9,]Fp!zm1 Yՠ'4]XR?4G>9`B hi+䡨84=:Pb]!#a:5SbU[R ďB!ax r'G@p \"9<:D,"͌EF!c!C:H< +a&{-[.B. B*tg7n\'| ).ɑZx9J|9-a.q7& DsC%6z &eIq/zzT J;l)Ah"u +Uhzo4`dhm4DowE7IJos3Qn:;royp5+?園V7t,T5i6Sg:y#ICV}!c^5OЪRĖx:ScOu@zc? B'{ZJZW']7.S&7Nc)tyrCESKg_} Ml\89trR9L޶fб,0"M99$䓖0_.| c Q,V`GIh1;+! pC,"RQX*GF2σCC$Ё4wwAP!Z!ID72>,fHg0_ruDba#KO2G(CJ"ltYF[ ,\"_$R~ŤGk-ڣEqW]a4CtD B/Lw]r 4w nҳoi0 `ހ~>TCa+OhRl`N%$5xV >m1Ogch0}@n\O+Lhn 4ΓBe!d/n Yd&LF W&^(Q /ߘ{A%8 Gd4Za-(A'8J4 tRD8W.XkI,mb )LEo&tC /weۻ~ݎo<|r$iӳ:W)BIjQʬ aEg򦤻'OQIsHww3;ljtojl\пִpezM.u]N5)|]WRR^^ OZFŚ8#_V"!g) b{z{Mq㱫'ޝ;)OOg_NL!ȖK{!zW5@ٸnBf6=>|/HǏI.{*z;4!@}I'G 2Ho<"wt'!p=z `uQ§!Rw -va]a"Rs76uq%ܥZ!yE2BȰQ'}i1Á5AV- '?}eT³ߖZ{W,IJ-EM≒4z)1Y7~@@;5 Cp-(h+%co~#.l.qL?eډPiΣ^SP| f'b&d'3p*s`|c$0!_Og/+*lri;6jPD^DObמN;|w]y]cTw5Ny.^+٪i1UO<\z+}geɽFզ;ãgv&KǧHʎӻ>#mșC]џUE(mh\A26yGE*>'[Q"+ X[-7HiTxϠhfsQGT1ء{zZ`>Hl?o:;7WuEnu8Na LSSe7g˛_mRjԪ3rA&7`idكMYj2(>>TEh"z~ĵ3"><̦0ނ/hvwwa (XhHC,h=C8WԆ#S|bJ7uܠGNY J pEm+kj)] Ap>?3c@>t3SDI5.09eb|af0n*~L4`?tGoPEw3M"Ιm#XC`WJ")|/i*\s>* C4.KzF/NZ{@$r4(qACގ%O>o,\|!F* -^e8զ4(csk/"#'3Όs8qԃb^$ו656z{m5 fT^Ծz֣i~,3(ʱE犥yi1A-$,KQ}Jᨿ+:]G@>?O( >GWmuu}/}Vx{,SULwv^QzED۩[Y [+{()*ԋCWQ˰- w EȦǫ_8(bX<(mCIZI2.‹Q$4/3cҬf߲|ad܈G 2I$Nr.l9~Bbqld#l-%{%3EFNoŇuhd'Bsd]¥|K3#$W&Guj&zE Ŭn+X0`MKpOE7& @} nRW!!u= m\1CXo6>| Ÿd/*&1lWk=_d(l[_tٷjC\D}$53>oY_)_,JܟxPǑ4&å`]yVUh5W4uYViƻuo _,Wd9+1HAFIn-OͨVrsYigmd_Ԯ5MA-6m[˚&R*X\]C1V1-!:} _xwڧds3tgN{8uTK|sN|ڌI_j9E;Q0 `]Y_NA. }Gߠ'WLXd+x'Z~! Η]KQ-똧`]H9+P=ngۂXp=%#l M e'Q96)& 9aqfq$dh,jDQg6J<:K < d(z!|YWlڹ/<ꉫGEpgϜJ< EofD"~\GZ"Sc>Ht*R&YOE%f5I$h;&;T΃RFMp~zp.k@3j 'AW0[f'Oga9\Eű 9X*\|'c 뤿cϱ\1㤋ly'oǥַmn8ugM<=-(dק5f8v1Ҟٱy1%N:jXzdž  ^۟68T4T)o-w^9i'aS"c’Z R>P-*$|nLdkUojtjؘ?$İ(CEa߂giC΅x A ~ 8߿_ԾC |.u^LV-s3wrnP>I/?!>>yxihvjWΪ'JȪxq(.|E}TXA#+IkP)BP%ƌDZ_s%꣞!zZZk/_m%I:/JK`TZO#av+A/x\nB d}(Rg2X@+QA;q%%c 0 `_ZnfR'$-1 C#sZ@# :#!  6ڕ(=Idg t#EVAl;7tFX9ZD[YVY@j4N<ňA,C0X1 $.¸2 ƌ^Lonx8y/P.ڍ{p-v^do羳q1.bm\'_Jhw]z[:"7C7d ×ZCO'O6;$sBFɉyye}+KgR'n' IW4TmeBmCz{NZZұd׭Ƿ4O;RQWQtCMMcci%*Uf _N|ғǶ;>3TNQwYHmLUR)%>1CxjuGiXqG*!PQ.29)pW:y}FL}MPRpuAS" J+m PXU ^U^#,7w$P.NխqVi?*9|<5<>:,:y{2VUiST WmyV({;oYY:lü5ۢf;6^[ 6$3oQbeh_>",U) ( w74|N;`{J[cl<42g0A?L-cM?Ȕz8 +,~@5xlW`6sXS3y|P6d&N;Դbh)4D{qċ5#41 M^~ZMec`"w3 }gN3#]hn`./a z3bX&! Ȥn\jZdJVxqdD.qc~2ދl8l7_| F: d|!ufaŸsȁq-Tm 5HIq.𣤃 2dZYOe ztD\Gn/#(b@0xTؠ:ݻuXy!4/fa:sJͥ's|dҟq:.U)jrV6hz8AmreciEaqUtfg;:n<3=4oVʼncY4[V/)]R38`*Rŷu=N}l?\kKL.rXD9Y>%awֳKSqU8!co kQI3(Ҙz>5l|hJH&zR0J!T?KjتV܆JbaIrօ![Ʈ'G١ŽqaS 0K*z0Oao o! "Nd&n@H΂HB$0\UXytY 0⾠DBtVA'쌆`ӯA3$5l& bA,'Z.j7 ւ"bb_ Q+%R&\7bf$S"$"C`W@cJL"\^.0o6,#VRgމ|,"FJqf`ߑ:Vd΢`cM7WCq< oAJ%}!kX !L>` 6d!HIj#&Z,nY;[Ox IRjIنO\SﭽĴilvnvlٰwYSAJag auݫ}ẖ۪^5u4-K[Q]6ɨ"'v ɶr1VR:g劼Uӓ2`J&;>'zhcOnoXΆd-<%$%"/4%, G0,`wC6Doj.73*,+sy{|T3\/7S8s+ԗL2R~RVySzm_m-|o [DM_+L_/4dʴդhzANlt4nuBtVrRfaFgTFkk%Vp֢Y4G[tR{fʙNz9ހGw1$l5^/~*0 O,&$jg?!+)C/6> z-xkEfd9#gew.xi @ \a|L+W<W.hK^\)L3ŁcJ oE 5z#0 ǀ Ԇ -g{tc8g`Ab@#ƞ LCSE0 MgQO7n!I}S8]BzI, u`Gb3VI)ד]Jh n@_ bY_˹`f_͝`?Aq >M:O&JgqQd(q %dW-\6XE*,!h3[!߻bFMv`х;Sn/7dU|jEMk<h|[he:)aJUQ%\c陓rmJ[Mo߶5etz}MWm}×|GҌs vIatD"R)Y{G׷g9DG_<, KHs䐔+Q6;|L+g?>F>mOy<}⛪{֫77gC`8Wdr{E!eK7S-IGX tx:L4 oBccH$I"8NS\ `p1)mʋB"{}-\7wDzRBDB=qeϱ}r5ēUYJ627UxMoxXGwMvs;ثĂ¥T`+VW-7|럡8 'AULHa-d7e++ϓZH5r7*tzKQst(ީPKSӘgܘ@ǤҘ=;[jexIp-bC0R@-ǔ+Yxpcf7ĎkxV\W#I6>QHE3\P 2'~^.]Hs>nwH1e(t<zoJV_-'(U?1eFH ?Ξ[w~M1>'63rÁAVU=ZsfzdU۞F\W2=a 3W͛mO7>z*xi 9ᐜɅO+WlvoL]l!,|BO,7~7DOgqcG?5Lm?lO"jnȏ7#^D |*\0 >+,:o #``Є?[g^e+}8\9>`_@1|glI!kXhTbibnYgn]CrCtZa!bsKfȕ<—*vz1/Cx_2M;/XfItzh 0 p+r=G{{L,DF(APVWRg|P/aHqP N 0 _Eh"ih:xH_~5;;#ȃ3%Xy&dk`=4 /p)ބC @Cq9=>Yx7dS6FvEI)?K(2{?˜mʋh5s Kb܇PIϗ?UMt}UȒe'dCŨ'N%3L$hv/]ʞ;lYKa;g+w(5,.Ϊٻ =o͍c<$QIޖ!dyßsg7OG&|[nCQXΎ]Njz03*} K]a贰[ea]eK7}\ʬ$T^:lXOHrp~˰zRܪ\]=\OyuM_NO 0?x["_b$ *$MKlH66m%}d:X#<{L#- kxHPl 7h0<[*j#  FWMx0\1{x8 ѢV5;ERn*g@?Fqj 0 >yw1p":NnPQ$qIc'ECO z"G]0ݘ63vUd"a)t3{$ֹҡ4L"B~\+)T)* :GqoPG;TA b=2/5WD6n+#CzFnM|RA\;gΞfX8¿NjCq$B\6rAlB.>.da`'s`~/~B2DKyJ*,|TQGݲ[kvG%lUٶN]s.wx4}=p޶UoB8=sSh}Ѣ+µ\kh˲~ͦ/f6+kGw6oP0yѼ^A:]Éy]6Uݧj畛,S-9LGdr+Ē9)_7$TMKCy#^\[9B3S;ðP_(&1nGt]:'tZTf.Dk/0z ; Yj#G؆lڼ%~}^s g5gqO Phqraeb& y(O)O':IHrj[\)p|x?ގ̱ G}}§!Ü&h&Ќ@Cm0ʚ|DQLح2p: ͹]l &*-D,_c5Ğ@C9 ov0I[ :]`mb_h.1r]{|42u`)zt!3 te8bGCW AX.#Zf |o$6156}Q XE i<A{'zE;2t=}~+/WL5&&~G}"ZMߦпw;KڙJ0x I%2Lr-g?aI.) %T<pZ^x{c=ꈑy%\T+ 2;男ϕ&*O+PepCxtScݖW7fo&{vWg;Rq k7:5('*X߼)fAD.!zhO>8t\oZ˱m~M-/.z_CUmn#ƅͳZ\_VqO]uBWKJ~PrZzBTPXgsƩ0(*Xڳy.5-6,id?==0:qݾާuC~75(fNiљUs$n|y2AM`$堻;}/ޠy4JQC 9?٧mkJl=՞?E're eMUDͻUk}v\Xu[oWw. v/+JJd\fmXD'$oKNi8pDq;m#P@=5Z"ZW4_6ҡzt67k xRƖFְfW.SJUV);5xCeEͫ苜 F={씲I'2ك3;OHO¦[?|!9=Uzqں/RmT7DVV6, ߴw4+rnTbwcfxݟگQ#[F wB~i-w^oS-7!c]x=m޽+M{Dr X/-UrBA*"M[wXۡn9M_TUٽw4 fP o~LOS,# ˶f. *urĞ=6C/U|WCL 2P)( Q DzpCu`ݍn2Y&x..nq$و;8 {Rƚ~V25 fIYnZ b,pp.Oܐ *ʁY0 ϕ")$Xu[4H3d*\F:H(-?&?4Z+s#Ts㊗7hd"M[ŞR\ƿ@ rf q0PX]yW.X\;v2 ?!{{NYO ˏ De8~HoBrDY$lPF)eMYV9ZuUWV.. ǃ6m5úp:dk6ɡ +eyeNZt垥G5c3J뛜[xSSGcyqyW M AZNQI3\nNVHE-/Zzks {OϩUNɝSvbe TIҵƧ$X'KKDkf6^[OD>hՆ[c9CKԨRmXҼ)xx)jdv\+* .ӹ;]w_ ~I$ܯ=_Cy=ev.zY_<ѪZ/$+`R쵌 P=`OӮ+<(+ wEH ;cqmb"bjGgb&Ž822;5|HZWXgѴu"bZt;o#}s8.4|9oA&ޅux y$$П}'xL ux( ׈#;qƱ! |+Q!p/A`&@;aB~ЁR\eڠ?:ϒX>krpy||lM$!E~^IdҭrΤi3#\*X'Z|W͓MS`TL/”ҽ cKdYb.Sf{6v ƵFN 3DNKo_mJgA-S?WMTV_Sǩ^*GmT;oߪ)oj6M*}dd <;Ӕ5w~u;ژ.~>fey&I>v:iCzzICHӊ3ϛgW zV.?{մmxfc]UmdK㬆 y׶n6f7L>a޹!KW=l}1cQ{7gPQ):OOXg]>jI)˜a_l_"H{_վ c_M\_Kרs宙GaAnXݥ Vr }"= H x7?hGxrICGhhFw! rH:3v{uīvӔUՎ{+rEnX Z\H2]GN >R;4B߂MOA[:?--J1``h|+̈́!p7#3IN,Sb++?C$x"^޳h9cDK,/(HKbLyAC@C?c#z\PCMʒ5ƙ9lCGdErܟ?8DV37geE3MCE f3 `>;L̄kuxZ$ )ВàHB)&6tԑ%*!ɖR|:)ѓC3J4kY_ fi'f3iv=jSd5BAƱ\&uXTUlQuU93b (1L1P"-ݥkvb皿u<שg󑬢\D^8t!sKaQaA(K/Ofp̰1:iܴ햦&m -fM vH,FHpZbv+1xfuٚp[ƉJu-wu~UmL[FCHRzܹ7}J*ms_](|g;䓴kk&$U'Do E&$,TT(2[RRMGJo==J\Q)'k$]~K;Q2Hf̒2ŪurVQV,ckc6ɮ'z{x9=Rk: K|YBYGj&H/ge3u;(P+HC/Ĉ<ĉ #+WO(ba DJDn ;!Jw#y qކ &kW4k3c?T%x=I0ed&Ť_Fp bCN$Rjq=+i3H0c>(4/rp F_'HĆgF!7g2 M1@lX70 zC| !WwA/_C`.X)l>a*CP8= Gjk3bGFЊ9@ HȎp';=Er?e1E!Bʠ\ɬeFЃ@>}A4m?iHhdefjbV3lx;=dA=Mig~9a$ܔ! KOr(Y;eADž)^yLJҎ]~ZO6iUMy[ۯ~mZo߀ |驝z-jלoD:&6sJ:۝x@ӼWZ7fUVϔXqtPDFXmu|2>rG8!m|Zu.AuT9G1P!TPV]/<앎PT+9bY%wQ~#|gV;KeT=k]8}r]2cf@TWK~)cf^< x'ԁx M_Fjp'٫{?X=2ěa*tf3:ؖjяd ;B-ip3f`4Cmx(ɬ'K4t Kg8C*WCnqt$|ԂLr℃jsF7 Hc.dKGr/#OͼkaQ3 U s  F '~N{>cX;L bj tꐣd3^`%,Vq / aLYyb_4fSaঽ% 6mDCiP Eӡ8SQ `?'fᓠF` >.> ·a zF~7Gqcf |Ƚү1u3}h(DuF6/ݾwʪv~km ?luKXL6ꀗQYF/ɪZ3P'mW҂xiV o#s##M}{v}ܚ2iiZѺY ԕ[7QWWRZ1ְEcryaokz{ڴ{n33V4ol dܞl^hSeYE!w=1&U+BD<T1?= t'ֲ2O\/7Η\ / MMV/\)ђ$m=mO_q cy];,hw7{WcN/ AW{ٻJ&g< q(#!}׏h~-q5ĺO GNd5pTp8!ԌJ+`4Bs`: :ЯPZ¾e*\Q,LyXEz>p XCLH;;]93rXO*!yͽF xfc 戒tB%Eqd lMٽ4Ż)dI%Ą^ 23j\2}`'ߓx:ń 3k/8 aJa g`Q ~ ;3C.7LiZ9_[P1U\o0<`36öLky[d;Uc]  `!;A|JCEqt?JL7{t dV7P 2pKYt kߓN^cYck ņƆ*s[e/êC}69׺q'$GWE$&}Z.Ů]1\0[e~5x0MZR˂Z!WjO?};/&v>ion,i.jѫ:v|[v{kNI:{֝axjCufI6 r&W:,K9[g!g,{S-16Jmޠ=$D~Q0Q*'EdeAkD,UY||Gğ < a7wO~kc𚰞)"|>"'x>^t%ux罙j'&9ȫA≀,ƊFA@QhP`%OOT}DDY]n_4G䥟`p֠h^FH4b=w߰s^ >Sې,>5S41:ῇCEY /Sq޷l]ei3 Zj5y̻ƨ#bc<[[7P2r? 2'KTCM%#ldVO\}`;펝׺ 8Ga[{CZvce3{I˹5M-m[E l|_MqMYIۦeORCc#44jN&dj.!aRBT\nN؁1aPHzgU,P*v(Jf&U|"HUf+werCUi\*-Ӌ ޫބO_(rMͷƤJˆ]s+ۦhiu x85[,neR[rye˜[qLXػ4jd̅ȻQ\Թ7iVjkgrl2T_1HlP>WG?6m.9ru@QS%rSXsz)T#H%m"wѤ p'bo[vuMo;x.'D= :a3db<xx  0 Eu*%q".{)Fgdox&9}PL>۲ȋ#Ig9qx<҆'4_!x;UK:S܆ԛDW- "v,=ƆT3#V% h  _hi|{sBIq0~LNzc0U(jC1aG gf1s-kNT|'eF\: ;sd<[H.8?y/@ =r~p/tn0ˡ΃!p\(\(46H|pF'8t8ZBo4$SKO+Y?+M6b-;wlܶxK6c6+UE$>H*Rqޫ7bZOBm4?h:>y*\g-h}suF,tCed f`+mf5Ru}`C E4:f< 4%)%C n@ˌT;\O ϹXWWqѶ(//8UxkowkTWU~*bzI\)giԻ%C+SKm7=V 92!bs#ֆ:ةTUΆ%7UⰅ#" R+o~,8G8G.\;f1z-B b待o]r]:3\ \ #ւD3xP)=}zt;̨XSA>NVT_x=wTtB4#ğx( q?:-vǟ0xJϧ>d}9!3\hD&S07B)쇯62ԆװZP`9kkBqnLvKC|JݔZѨl (gvyO񮎱[5վk^3zhQz^1JE}Tq I wTWc7`o jbQvf^]:Tl MVIYv)Kc"Ƃ-3ǜskSv8[З8Q)e47R1# ojSeU=WuF*2z-Tq#1SceA-mwjIdH\'= F{^%B,| Ȕ FքSG>yvLi,Kxl XETv x~K[}eymf_^}TO`$s1Z3'sT"&3bf63cؘp挀2rC^&m'y( McWp<"Pn<,pqd gw/h;Ȼ % xx {a*젏0-Ws/=愛wbrU>$Ḳnʒl攃P`+DOT QRK 8TA9if=]F^ N@9@\#;E?ȘҹUK̡ҩT)B>Fx '/!/|=[^0}t=}WckJnn%jUf{Jٯc?~c MΒ?F$8a}Be oT4kǶڽ4Տ  _x\z@0R䧈E qIʬ.]:g{B,ޤ|Y~-W4-H*}-VNK_Uzz"k85JEڂeSs26<,N-:qѿwO8)P2MB'=]6صbb[yѼ6O0nP /QO ;^c[nԎ#8!M[Zrmd~iW x"p֑9),A'T b⸏jz5ęiEvtz @fL r01h] 8AVwH3p33\ѩotWEp6)0~0`18YGn!0{>]2 GI׆ uG6S WXVQ{hZ1-GYG2.bfXPC=P,&ǐirې7x|nHaO:6g%M3ŴTV6-l:rGK{C;s5:{7ŷߖӉ^>s*dG×I}TX9ƺQupq־N둺ӫzĽp˅٢'"R_<:H(_$S*cnjEɫ&]U4*Ū7/1եUVV:VT֖. .WΫWtQߔӚ鬓UTǗK}]c^缮zuroCb&'杳VM\0|P1\>F&mU㾆#5uK,d6)_#ml$]Y-VNS.߫)EQ[Uluȸ1rw U[WAwdN4$~/(Eى񍅅+<ᵰi nR K:{ϏOdd4:Dvϓ;V Zz0'[s_zBk\GbބFrD`gb  Yf2JT:[aHL'eay^ad^l4}{`5>~:8C O L2-k8SKSQ82Cp?q3A q؅x6;X7 87XER7p6ZÉ(pTr~j 5\mQ( a E9x F` ȡVppf<ކpZ)x D / mzh .}x' p j">#(9…r@7 T'Cj#Zj`} 3$<#UZ/BObYfY:޶{hgϳ5r1rvr"x#qM-那ZkSU(=??eL*rIժos6 }+^aIUV͝ꞎw-FMh-uK㏍(Ȗ6;x~Nz,3Xʗ˽UqSgn,^tzažE j?^0 iDJ ]hR\7Iv7ZvQmp/ L{BM{@Mڡ|UrZqESm۸]uBkCv@ sB3n$L3 H.XWcƄ$r[հDy]6CN(2T^18e܀:"+q[M4OοZ xF<ⷉ on9}C xNL~+:;7cMa(R\oMllN SjsݨށAO µځȷEBp쥮Q t_xsl]gncl}f#''ÎWM>]÷Ot lc\f,u>!ޱleefj8)FX4}^_sVV:5ڵ6tk~v7Rw5#Elߓ ̜&wJ҂ ˿O^W$v+ -*Y]Ԧκ cJWVoԼНl^{BGk4 MsG]՞H}ۈm-.Kz^˵Wuh oMЏw{ێ+&)#+sR{nĺ2jdq9-4(Al!W =6#A5޳r:`/T&$}k\V1 ə[~'a_gAـ Zj\/|}֥ځpcț1>UVgڄ315bƟXS9޽^Zkۆt&]]o[5j_ܛ3vק̛þK{B+ mZivjA8!Y*t*rG(1Vفe+bK6^[KЄj6(~ԥ>iu.NBw@w{O[ϓVfz4ί]z~{y~{UeK; b|P|6=L1|@-JAڥ(,+^׈?G9E[~@SYn,UX/)WʕFQĿI~ݔ숼" j7=*\·x-Ǒ BTcE;_`–CjA=6oY$%'Y2̱@t1An;uH8+q)q˘}Uh-Pd'l`eFhvEB{ pt92jd@>5L>A(M\b.mLr5ڬm6Js{ٮ4͹q)!xy!?4w"3͋:KuKyI)o&?P:DvU=mlZnhU]V9kW}MP:^ .I][색3n$MN:ȅALZE␼)ltB6)fd4 }iKO$q~/J76(pND$+D- lƷOH ^*Fwt0lj'-I_ҖLA/_VX͎Z,cnfg@nzjAr,D?v92Z0W8В$*AaU? rAgy3+!Su/a)YKh,mrt5nAEö# uԝ0#e d ǒ E2 Mt?I ?l0en\{x*ӻX9g&gshE ǖ\7h~| FlG̢5x͔^UUo5]Ϛ{x8mL8~h)qHtqp[YOR׶:]bNnx^qtX|Չ{G{:Kg&/GLwc^}C$nM益u%ăɗSoFJ6&/FhBI_՞ֶT;TWdܒ--{;6+(Z"U8'-^UT!P9v\/S}~+C.]J?@Ct?wU.9wt]z .ߖгW6;fݮ#Wﭹ$El5?jDtP:t.vA#ij(Nޟuav᨜amtAHûMŇ^p(9gq9!)D"V.VF*]rRE'(zUוX1Km;!F@8Ai8r~(Չ/OOҒe֤86_Z9'VQe[>)@eJpICXA8~]B,},0߃Y& g\WjH ց3y' KAqFe% {ށ pRWTkY7|?_p= _EQ'({q Yk xLV7Oߠ &%0Ƴ({@o0E{A:BL&^JoXϰ?қ}ַRd*>oiHe9҆_q5R9>ҫu466agaN:i0*\3 = V#w/ [v4>݁vԒChu ]~GhOx/>n30͘?3ZH)DR sb~`؆cdBVZV ro^{=tǼ+}n?7Hu8@=>:fiIް L^LUO.X|;So@?~NhN7mՌyœWi{S/RSU%k6`b7<@<ܹѼD6suGU3TȽo1m,2fjˎ97-foܑ+Λ]4WU5"qɨ ^{ɏ{g:^+Yo64cz0+w hj~wZ ~OMawezsf92}^3KWDפj 5i% >gw9 Kg$O/<2ji׉M#6t6ԋx t8 >%+{[s^.'UʴՊB3yyugł+VWg?O-MVnoXC7[o[NeP|5h H2BU:rJ"ǩqxD!DX<8N0~ &47qGpseJقz@7GS|%c3h6f6 rG `#;P|CK S"Dk2D!l=kzf gt` ƶtl|OSHSsAnHe,$ؖ]-44 Fg;t:bo}rBIu\F7#yiLd3VKvE8 X#YӬVlm1nbc7׎tst0븦qƤ0(89n|J>NjKNdV.G*$;51kT):c᲋߄ӞM,ss833XIy W ^'lYc 㺚AF*(Z,Pe۾C1_n/siο-uAArNLAWhlV򌁠r@AipWr~΀f0"Je!7%m^ߣ?0<97t:CpBv8??gnHmMǺxACw9ff˜)߲<JJ.)?ېّgX$9,LNJE.Y3w¡ˡtN O*= 龼zzov-IU%gG܊8\`gMNL"\s1u!܀#oXEعGߘTݔWs4^1qd ?1l>H؛6GR|QmJ*z{q6ݿMwnMkω;J쪽U}O5Em es;޷Lm\XZzޮL*{ŸWDqm,8W% j=[T6cğZQV\NWZ3&e:gɥgnr̛P֙h=ʸ P Ç`QD6hb |1r.]b+Rd:'gGp>IV0#ť+X1PH |:A.6#0aK1@ <?ap'@N{d}D'LvA蛭shL't=ZyV3!l nJ܆+kW I6qd8\b oL<+]B(MMBU0^b|4 [iOOހg` !<?r.?~ {M|2!F۪6 FL/@DgӧZmX}oa@(6;0 }6"1"& p `lG~?Θ@:Zؾdx32+Lsߎ|'+N4HD/a2npbw~ힴW}-Rsc&["㷺lWT o+R408hP}nbtdd䞠"~hI^ODArD[YQ4RxP'>?6kFd5|vI>>?'jISԘFP&i/(#c`1y+\@p;IɃ$:N<9g̡>2xMZ22!lp1f@-nk㾆 (gЉ/9L]`h/6# ?EgqzFgCYh$0aOy<2hۉ##Gwz]HIcOO|$r]tW+̫&MV5]0dF_+Ņ5Teer\@tBm[)V9/?<*uvRpGg]kxЮx^0mkVi~@[kxlܔiW2_5 EEVz?2ώ>al>-7ttMveρAX5T/Nc1bHڈCaUzV7K=gV{]9f')ou\ly o 6o76SRq;#*>~'.+]^L]ND .[0^W^-"֢\i5Z^UEvBGW̖<(EGp"o,a Ot)3L#kZ5!#` Q0Jqx=1˄k"mnH'f<D B!147Cp.LJ 9>[$h,?`?iI2a@ƦA?!-F t.ABp2Z"i?N'0 n0M8bXB&g7FeJj'\\JH 9Ki>r+1ކXr-@+2KkƼ=žTP"v#8Qiv> <?ShnCEҽs>rtR`~ê ]dDG:%/{W]nu+cަʐeAG"GqEqv! ϶늓g|_;=ck"^l[r~A~FapʉAQqukxRqܪBѦi-oKy+;˪@\.2|5!-$*[6r/s(cp]lR&\fH.NOO9 OIefϜ][Y}8={j~!gq| nN'/\W묹.UzKVd~5ZO+ _w)R%kUQ"ۥTi{ckU`}V;/c?e]U=K*Kƒi"_Q, =jk^nra$W[ސ,˕+:%6ɑ/ 6ml6p̓i? VP],.kP6[|te#`S5H\02̜d"d5;\ B6Ƀ(8 Sh; iV0S[IjUM3CxTq4ULZ FETl-ydgѷ /u =E ި]30S`۰F /ƩDgF0kWMdv0b*:a0p+*q9f !2id J,| ǭ  A&Q?0Lυ9cT?3r=4su؜fvkꤗk|0Jgh/YS^V]ZgƆe4 g0! {z084߭9ʩιߝu]7=}c)JUlmʗT~&sY9d&ћsj~hk wԀƀY;{LR ޗw=<% $ d07 m,*sD]'RjycMԽsj*hQ81=WO,qs{vϩvSrMjyf= KVmULnX^}D6v-sʿUFt*JPgjʙ}.Zb"J+}bLT%GiI ;i]r΁e\u*o^ WX [^L.H^Զ(ZwJn,nJ-KwTy'G.1/]M))#9YKZj)Il:{aSzs`:]{ǠQqܘ19R2o3F]0hrP1 q ! ƈ *l- ̉T3+#4qX߈SщLrG{1hQ~].%VD[ZpW>rz`1 Mnr 7` E rvvM9f+6䠲yeifdJYUmsYmڛqα1a40e|c10G@JB#L˧>wȩQPf'A&ݘbs6?95-p/ghCޡo}SkT~($p"JS{N;D::~cmCG} T}MEz ط}Gȃgވhv3tr²%>JfA;/HX\wVbi،3}'46tw:~l- 5~W~>MdH+vj-قew?WpqxuB\M|FU-],Y LXj~ՅvT8ˣ}k+S-3*sx;d_v0.rghsX6E+jz.ArZxdE sCފo4_O~zZv>^*Vƪ&ޅ}!C"ufR}LyMe_ښl+",ڧioŽƔƿwW .Wp^vx{ NW/o`w~`IRyT}TJ } W%.SNtr;Ur|SC2gw)\fUos]*p% sũ[ݛW킺I"VKbRx@5M"jQ3`6τe"= @2 ҙ4 vܚgNJɌWd3E@"k. S&z32EЊ7z99BV?J@0@ 2zE 84l! )EQB⼑oN|6rqḺ>(Η?ds fLHu^߽lc*6a6l1U.&ʒD'J _`[g-:Vźܐ<# T"" "BI{$, Zu.l }BP\BJC~.t.w*@tɿ-,4/ɛ/ q^~ hܹ#U"8ac%s7^8*yeڨ;0T:{b"<&E-};ߖ.1\$214R[VBt?_hh* > 6س1f+.b.ju״$E1o5/TLV<׋Eomu|?%5Ir^^`n`,ED&ڤk,*~*?_nȵ^q6_8I :u!y!U&Yմ"CADTQn/gYRIgֳPҫ(wj#wI\ivo-j$ഈjZv èb"K’ZB-dm#NrV1I DJLcrGXzĺ.}^$w.py없GM3e<{>e=׍O}jęQ-~jX[Dʊ=+G Q/K|S1 t_Ao!,43G-\-8lt^a!r-r) G@b1_`= ͅPf#SHaW1$4&/p*<_w~I N Q&P\tm#p D ^/G%42pߞF&e*3G,8dE8xfk[{IDC+nYß) ;HO~~~ 9WK("?NJ ƒ9Fs}jT&&m ۛZU%/mM.9kzTCV?z|| 1JaU [~1bT8d` j T_Cr3Z f**vCCH"x '  GM Ā|~ Ifad緝w>J@ LM'U`p scaDr6+ Ri߇ӊ>'2蟛ޭ5Ż Q .LJK'jΗ+*j:bQ{a`sPZ%Aglh&گݿ?>3 5*(q钔+$ pȟڜfa/-gg SN/-2q-orepy5{Q|CќcX~0d]"(Sc13]-ҭE)٥64-ihI .'8ʉW $@ 8+Ĩ YKZ-g :?7-̼R2d].ʜ w^7 6(muir!8JZ2ZCobwi߯}¡#ŤwK&`f9ab "㋮JC$13$#UQ=@N]׏Q89IHTiw#%GkLue_Ծ|I7ջsedž gDǴ-Ԏ-*7+4 uTOUFlgҎڶcv dfPk16ȃ:f*OɑmЦY*Cu>yB 2 TƊz:_Ӻ5oXҋqk͜z"@܀ Vo @_. ʈc?:ށv(ɂA4^t44яA"("c چ^}Σ^'tb,8p wݾaזH-O;r:"v#|#2vOFNF a78 =ZWE'-L-nX!n-[eaqM ߸.1 a 2=Oq-lA(bwص9!a]л`A>> z(4$˕kȅ_r*;;گ w5%&z8CVcl0)Zk2᧣krə\^"l ?2Wo=h߱w?g.>B?;崬@;Wm&"-/ g3g3x=[jVUaIy1jytR^DNt!9;F U؍-R#Ie4wV@ڗBkd)Ru%GDK1X&o2B=n^fg4v_kkh? >~_7؂1E !r:R9AľKCP* ށ_5~O<VqMS2NSqoһ; h0o8u-$PUe?5Gۚlj7ڍhaoLF>mN0?:zKcmFfO?r0gcmjT$.>5HdF"uiT{@ͣ_&Da}pOf:qZ\ N6^\9T?TunF6~EnGE;TN[Wh;(EKهX=X^oτºlc#x}-`|nTWiN6. S*YjjѺi OI~/[B#~.lOoj&KVT UMlm(ϕ[uFtv2:l-n6z GQ)k4EnJ'_]Zh&wi揿aV8&5_J3Ps(6Z3]J}4<+V 7aeM{GV.Z ΗS5c V3 Ŭѩ`6y jt ,vA h7 *A!_P115/hEP%.j*h* +>N`t¼GkP0|*R{7ַ߷XX EG'!|}G`;"g3_8{Dw_o]U\nݒnK+G=zAojuu_p9.v;;X:#,9ҲєBf.Ms$O;BrٚH/4xvAkrs?H&Zppu[dgE~<2"sfv0u.L_5lŽ˗]ugqpc¡]{/\y+yu¶c̄ܘձPA+^ jK2i 1hu⼺2MѥeKʌ#5 ܮU ]s׈7*GCd jFWb<ͪ5p.t|%B1MǒOiYGeO _PRLn1A`l^$+e(N.!X껈 r:Xs6g+Ւi6JZM+Me殘΋NמXWVWYū5im[2SMMh)-]%A@퓖ԮA=Qg^({Zc$  7wub퍖O}ta9W;n^%'K^ h/KP : ρoAVt? 섯SrXsr(z﾿?z Zy't\O]a&\w|㑹5Y|F$=(Gj)p0Ex ӐGbd&!~;d^;~s[2母Z[<UnJ[,,cU:_h7hkimmX-F.EözǾwsFWQF Jx: b~ؠtqn4Tyy'lQwޫlwQVJW-ZΛB]Lȿ-BRV̨.4$o \(ouY8pcIJLyFz y:Ǹ-X;w=;wpZ BWZnf&LI:pJd96kZU=iV՞l_Ja#dOu!8L*Fgcʆ}D38Mii4g֗ZHzD7[i|Ԧ Qry3 u \fѶ-mP:a[T,(+|N.f;8finWۋNCTt9=wzL;f`٠v0"~X65W- YNJ8WXksAߒnDx}LjeeO]U=Y;_yeѠcꇭ >~XcAcF艨WaPPjsO:1)P N`$j:<e#(5/(8GoLAEcWBߡJ*CDx1\W@*T-\C꿈.n*|>Bd p" H")FB 7 vDd|Q;on+yj=57gySvc~+ ҙaR<-@Kc*{IjG]_o 4tQ{ O4y{+l=km-F%m%_#ƊxENlWPCߝﮯ-U8Lʐ_CS^~0M\U٪jlPOګn5&e=~Ye`De咢,|e:8L~ݮ!&i5ͪY 9=\T_k ]@ l~A}T M*@&4 u@=@AP3x,<dx؂lP,(@`0k@!/ LhF 04O| =yo9-5Kywmdr_T=LlV{2$]6"?S5A=ΕZ>hg[ا] ִf_Il)3v{/# qgf3q#YSSNc. , ڭ8w?u7H佋 syI鯒ެRZ0($/yP3W#\](Ve+=f7NnK]t]܍S5== L#BreysC3\3{~~=;xL(eʞy>e s.wSv9b8Yگ+WطE*wSK|I].ڜgT/hVUy2W1 ב*((c_]hkf+2>Hﷁ/w ;z;tk菡=V< Tg ։*XwF5юy>@*?e1ĂrV&e~PyRԸTAk(QMkjh?e J%O5IsA3C2i'h7 5Bj5 !U4L~rM#&gTޯps3(O퐽<"wE fsH~jxM/@:?Q s&zFG@E+5j5> ZԏYdCׁ PGǢa eD/Co%C&^DC>C[D."7@#dp6P~GG^;f #_!7}lBx])yr ȻΫCcΖfmm ;u-GdECj+N|pZЂ5zۿ:i={ϵhZ35_-^θ>3@P[Ėq:xm]㇫\A.\)"uړޜٝYϲй] sGɅ"LaBǂSVZ4A)/c%)vjb N:0o gM;3>7Ƭ,T<,9./NSn6BധcLAIY exőlp26RE (uwo޴iҴqiwo4mjpw ^|1/t;K+U xRyYaeJ˺dmͮ^OUsۦ]2=65^airc zPu~PmiG@o9aI9Az9‘7?~lj=|0vޅ6. ?粻ƆUC-#Z򃒫5>f >mδQ։&NuYO_5,,s1g̀fn4wp}6e2Vkyfn mަtX3ʴR}Q&MU_D.X譗$^Cz%ZGhGZڦהߺ=+z ,Mݧ IEһ*I|lBb7af]":9>$h >.5`g\0={b= ۈ9-AF``as;aO0: ϨG9U~bs 䋂  f+w!6!eH2!Fg#; yG$"='c6 <}^<-^r^<ܼC=f/5~}ykAwg'%N[]#$pmh+u(|A-9 #%yZ#8S\]2A;Yؚљ+.[(-i$tE4֐O b9GL69.:TD~zMkfl&T\9Qtc e7'QS5^椪\̒E}a=w#S#îq0ZPcoߤ43}14 8^5`*?I{mbD=Y04{(Сr,M0E|W0Mm[C燥#S#:N%9 {; ůȁ+b8^jo׫h,O̞ZmɷMb-RPiUX%ڥF<[gfQFL&z'Xt[\$^H2T<\h*בu(و.̪a?ڕâŽ&{w~"|u`Q@fk:^.p; 0ص,ÿ'\0;ksDZiC#MBCD! !``h_p0Y@7U"*r x\> vƻ 6"@ A?>}^=EzFCP4; x'K;k7Mu;/2jz殊+==Ղ[R9[x[^^pm?g03R]K8ʼQ L>:E3Tww%_I)^ZXxiX0ewj.IKEk՛t~!*z2w}CSPQ𭐐ɫkJ;vʺ( npuX!ZTUwM;yfٱLYT]xn!Y̑6I37UisMdJM3qO3'aqF[߇93wY }i-/ʍz2{?^{w v j؉5i~3X2Ǽlm_:(5H؆#6:]܋'Kd26]s1^d3fٻ># 3W7:z"7yF]ݮ ٱo' o*s- >d.G84kn4i%\i??RiІ 9Oi;ɮŮ4;~mW7h)\k;#Е n-EYڿZtx}IVCHe27!tg S _L|AH8Aa.#pM b/w67T݋B\Eע0pl̀L8 ,Gx <_;|<»HT`0=C^APp !BD@ 23MuX 4g"?=ܯ}z: f;T|~7 ”- U5ewC6@2ގߜn3(ݣ9o0C]E ZLOa ^Qqs˶7 /+[>dKWfGRFl|>eY*=LH Z]j%Euh34pH݇? y3f2ٕԞc'WϪȭhݙRV}OϦ1qml3@zOlxYztQ"T}PfQM@}(g.q6V/ ']K42{t\+ŴD/pVq?g)׷9ĶYcGNؖk9AԊF'O+ Im=vHa>2tsEIoLj^ʙ/Ҽ<3 ڢ,Wɲ:?>1b/oꪭsGVP^d.rC Jal1G'[ %]|2m`OXdq˫RW%#P26VVŐ[gxS8ȧ6z92ݑJz^UQ6YԦn;DS!+|y@U]8a+H, $Šp^aеyld:x;"E,Q"S`R؉EC`X O8G{}a?gQ UE=AC|> ƕD>lAmޓD;鿦 q`hE;P94պkl͆NXYz|`LybQ?iU20nsQRYn { JN8#G,-*;gyF*YMMG˕Q8=_9$-Cc6l{;XdNP\KDz8f<>`ەs)j&:.?t U)g[gA*ws h /UĈT%Y3]_2*U #9sHEd2@Z,ὧG6δPЌ˛5 2z_*E0xX3Qe`c5g7rJH{͊ !$\_q?poC̷m&,p!Do: @b (.t! p]})}6y݁\F(*@{k|!=QyȿA( Ph'@"" =& 6<|/Հ09" #Bv 1 GQX0 .:!rŜxk1 ?[=ޖ~ )k G;n tKw8gXcyh0֛ srz#h7Q*e}xD+Iu}%% MgH7XIDg =MK9*GƐ/-¨c=9I@tEx S$.YSzZTh?Tkb0=v&W]X{V}P/e#چH*e%ܠ Mn79#Ih 8^L?X-z 胘Ez;lZ 2_+ha3-`R}7Jl'<1  -RL"8*>TG} `4X'Pn!ONcM948(2+Em@{ϠVB1 [C 4CUd{[(e=t oBWMgEkh~5Ctjfbb.`s[5j{u!uiޅUk~L_דĬ,&lS8Z_[P*K\/iYJQ2}'bb,paFŷh7TnzW3{G6%"} xWO$#"R x аPfuU'aN5/ Fy9~D2,L` D!™@!6h0Coo/#\:!nÎ΁, ~D4 ӑEHaWV(*=A!QX] n@F ~Q0蹨pV썠"筧D*>}IU6#R0QY+'غnf{^'m˷lbUtΈt]QMj5wuKS)]\mvQކ\tg֘&ǘ}rQOӎܬ7y { I _0UQ{WQڳU*Nk'[ 5C"/NHh;yby؍mJ{lMBugx {L0:Ξθz'y?罧2g&"΢Ʒچ+%(0˪i(Lk񿗺n8Qԇő {c+4Jh *s Ytsg_Ӓ8 Ęv-/MΐI~ES.&L׌8?>s5{]sƑqV̷1l$eag?DJoju2jlka>[t' yMfV7 NH*qݨkۿ?wZ6,^V|PVjPD_X"X0< n/) -RPSj|LTUe ڥ~V[+ǞtO!K|oe(󺗳U2cNkքyqyG7FI|,%~& N '8%-4<2_aa>_O$g،5;P=/֟vt88@h FlG$ pT@ E@h` . ܊E86r( y ܏@UCZsp DmB1T2 C#l:| r7,lF|z}N/O: }X ).#a0z#ezaWSviF آ>,i2([ NNik[) G];Bd-hjړ3).TIKc+uwH7IҮXpu3Nvۆ23gD=<+&61mMFg}ux*4&?>vnDFZʅ«&?X)b^${_ukg q rvFphHYy³fYI=u/o|#䊉?9_!vY/}SK'qI,Z.!%1 u>R3! P yDpǏs\?>nA؉v  ނ"ϰeoQg,!%`"?@ w->28ѣT'O<;KNx욿vW}ŭRLVCFRh85[:a0 km9#'[Iү?UJ5 54*;CxX 2lʣPp*ju4{#Hؗ~6^YR' S˼N <@u*U/7qj c'eՆ|8KfE %qqwa(T`iA; f/2< ?iFN_\?#YYUє79r2ЌRfѸba/A_- ;+w?X[{bd\B"+y63Ԕx(~袤,x$AOnݭ 8iԛ}YkK;KZ_x9.TsKrZdՋ zoיG=Uv~SfA[ѾuEK í%Gk׳N7fU7[UiGSE ߋě+3MƲzVZJj))W4gh8m-@[~OlSeUqaQ̸|@ƅxLѪˁbyQ+.g97kQ+B+AB?Fh-ףqGP!!YD[^mAHM@HTlcGpl|yuo@`jNwv.'fW;<=a'X6/p_~-kaa6KD:c:ee*-" Bbj`N_H_j[Fi1$#7>2qD [R7մRS,~St<*Ɨ333N # [Gpٜ/UPo@\x^k鿗/|å>?iPIPFR[jVvlە6GcIw?Q q"sL ]PY{!ed!GK3;f>̜^Zۯ_:ן~kᗁЮ"s:E@cΤ-e<ܭk  g~K0?Uԫ<%+_isUP[CƩ<W2%f6ؖMN0.pXPVq&x?DV$N(oC#^cqcnS e=̻ƧWhdh7fH%H+,5w$EլhZ3)Ub9w'D5IZdF).0 YEga+yH1ך w6* ؚC_RΗTv3@TG-V0UX񂘬 w73Q舷FWD+h:n'j W!X"V{yduE rp EH?UW8-U]|lFWF1->1aUϟV&H$UR5Ot;Zv ^: "94j/ƚbCtqKCb_eWpWq2y^Q·Uxٌ=^\11NX'\:wn-;u4zUڛ %S=#q?JisJTC(vV5&ʨ2us~ᅠ&wG#vIeһ~gLZMQg*W֚Ֆ2̅J ]\ Yeb%A&QI5iWܓwL.ϥ-uKZUbZU#!?qJ9M{U5q::2 tw9R?Qwvv\פ VNj])}ӦnU ()tm=k/V6zV:^߼[; G׽'5wH7wKte]W 6A ª:).?'"]ZMIk_:h74i2nN m- ET~G( >[ %11L>8A,p5H _33¥Οm!F3_N" 4 nW? !<GB0&L،81A,ل ÍqPP¹ jARAr;Aw_r/ D(A'ep ! d.[8Y<Řc\e8˰\kpokvACfZGIA%aoã ɔZjUH},!3uML JU:SEH%brēA g!/և?۞{՘ LY<>-JU&MF&ӪlQ]HP|ĝ/HW?)N EsUe볆Cx:P~~ϟN " Ls)pVH\LYM-j9īȣ81Y|ԃaZyu]_F֟[\?4jwsh8mwh͔Ӛv0>Ƕ3_إliGjO}@AGU5خ?uZҺeMoh?5Jt;ZUmQŞ=;3j}[Üe?:%K+V-ڈw]~NK-/0oڑ#{Nuo|- "xgvWo'"$9fe UOxc^>&$I9zpXFo )1˽f TڗT[KOO&a&ɺ#mǸ-={\SdP]{J˕"MjT+˾V0zUԓZzRit>LVTRWGsHA_GmR;Ҧ ++UDT^T}}Ebr{{M{,{2=^pJ?b)⣙?]y+5A'_= 'HcXB#A; .C,8 CZ? &@ǺB *BeQdj D mEBcx8h*WAW* 1 @P |@(  +OfH@%f*b +E(ĀFp| fÓp:nq 09uH:K`WX5̽P3^ҔP'U.vHJ)fѢnz{kh4,EEyo)#U$14nz9Q狍<{7GlGZ]J{xR_װ[nT6nyvaBPĈ,VgHM1W5էh47mn|ݒCH_oY5rjA}7v3b JL1Y`P`12%>#;CdMb:IƳIkӬy$Bx)oS-*L:9*W*1~Es.vx?!ml}xS轈q2q(}MH{|C}׮%C'?/4>|7 g>p::BQ-N|ϾVR'`]$TT׼꛼;vҗ/|ŭg% MLMOƄE5Y[˘nZΑKD nW-N4okۗЃv_?𦧧GW6XؓM"eq8%!AJvD=QEAr$!w񟈁Do=B*j C`&a":Zh3S4Zo'M1\!⏨)AQ!W·&h32@`E xn9}[k \dĕ3n1K|N&q R7D&%.KpZ-MM>9.*XR)gosjQE._=rE,;.5Vqc^^C̫X4<%7^bHu\(ȭ{ԴXt jsn=P3 cύG>ophn$h;جguunoknPռi#fplhV.\W۾C~, ly9|/ʭx] Э/TkJDoE.J(A&- ›H;1H 3f~]c_e@I:>јZhaߴdy0M7ssq:i gH174gZ,mncHY4݌;lBIZkt9k7a 917_#l 34n7-E$P ܆\O es-3,s $;:/! "-"'F <@C<;mRhB!?[p Ɯsp^w Ǎb v xXќ2-Vr+fˋ̪o ʰ?sS/Ea|ݯܵ?e#!u-s6\ޝ9dɾrzr3^`n/[3/>dd'])fuvN o1cRo.eorMnV2OhK4|y6tfW *QHk3=MMi;{-dai֔ۜ%# t ){DUt^㋇t4k7eO} .H&Sh!2|+_6>T;s+)#a+hBMK# @$9kLڵqsaOeΰdM=6i}Ӓۼ_Un%:i4tiaBxdC/'y-MN> -E^{fzV+Xֶ:[:F5Fa]ۙ,P4i:>.|R.l_"@ipG8B11$-P 1ٲiyV3;hҘ SW.nK:fyt.L(  9;`5@0"՟ sY:Sm^Ӎsgzܰm $o ^_ɷdw8Sg#+i4!<#_;Nv-ly8BѦ^"Bgεѷ0궄*ӒѪ(&5kc@<+D-;4d/iBh\16l+="P9~q}9 ? 4p\j3AvDwQƱerKV1eXk^>Sر_heաM-Wzu8LY^ަ0՝z*pS<pZ$q'[%oU;v˞ ďfVH#Ɔǀ̮4$]ywHGd䢐"!Aڢhf] q6֏-cIAor$`E#RHR+ZY(D eTWk[۵]]@åP@b=Ю=~ywPW''Ѱp GV pY@nh 8fB`|+"SR_Jޣ N?qm!ik֋`GvU+f$7Jkɖcct]WYdsZY竾ZmIUZՆMʆܲߊ랈>jBuњdscX[x.__ y]G(MO& B*ޢfn#fuRf_jV$8ǟAU_H:H[Q2i̛Ci G/u톌anfe~yTzFQIdAmhhw-;e/q!Z!q-/ e~G/aěV%_0]mS &xGl408̓~$W 8큮&8pV00  #V[0=p ?,vX s"Ac7g+G8zQAp&LAvR~o8A?c'|(NbY-\d]f#2,I];nW|B.NFrr|;RϏ(vP] &}fGMIQ;> w'*;pV{"#6?͍ .|0^w5.FOG&1*.<ƑVl&RqqS9YQvyI=zy5@OMZuEr _B]dR}aUOO͙P[^7|+M*ckbYҪh!]p!RM\[b^/Z 9Зr\`UƖ"ଆ7)l;DCqIʣik"-u}4(GL9FaRY^|{w~MU]&JjEuxW'N ;1hӨ~/YWR&p*j%SrPW3*e=mȮh~yFaUifo4H+$P-YaNs}go9UMY/".#"k\@/tw0p2l4OX;߉BV #ؕ0VGPLkHtF@:dTB_`> Z)zv-^cx |8aY=\7%zpթl'(v<gA"`giFs; DO^8 NS.[%16-Yb企s>qYZe5_[KAgB{)8_rDc8R= }%59T JW&Ϣw`CY] kG's 8 խԤlRhϯ>WGb%KK/YU'h\,a Q 4[]28|SA`Cf%YYQvbE[s ''(7W;1vrFAjسI1\W;hƹݙDn>׃:Ra^'OJ'L?ЬhgRդe1=U>fݍmEʦ:@K<ϼ{Z?p\ۦ-Kk5urm k:j`Z@JFi.H+ae/ ԷӼݟn/<.nTU0hZ*V Oݴ_TsKd@&]ޟ%^(!vd:ԭôbQe|A 9A/lLGp`lt6w:H'Zb)#TxE bc/.Vc͘Y<GVr ^H2\JX/06D=h vc|ȇnDs-` ӘPs / ]2@-d݊='0E&%,~1qi`!(zL4Be ]o z E`5X!Б X.)kYx3K!Vdv5*HO>o+[&aj<$Y*;+ɖ )Q/bo74zzxڐj7$I=XKس;_14\.oJ*pz:& <UʖkM!j)GX7# #lJm29iGs -BRik4wl}8XfˬQVJ$^5f'kroj{}Z9MS_)Xid+(CTƥy)SEt颷fn]G2P 2c)ٙsSk6ϵ1mk&yvVGq.8S7`۰Wq?aV\ oaO`V@%,Jـ7U@-H~1pB"   8 7x0 1d°pmm~ @3w%1 ` D`)x Xe]3 `&Ct }w">gm/EɩQqwMz=/ ia)U_Z{zGT\d2£-եS| t*.Tn #]!nUg\SCΤ1sziZ]7կgI*:Β6sV2쨦CYkf):k[L;µ&e=:q#6,=[:)Ù,:I<~} eqEwSԍ=dܮ RLmVszUjA+N:,KBFkrkd|~k@AIL[!:+=(*ޯ+,\u߹o'&$[ R$ϔz-ǚvD9WE@sco"͎W{racs5ɥ+g#Lt#KJM6=Ulj^,ʷR/|]`K*Z;hk[kv4,`Z0Ԝ(LJ$X |nz/d ƬU\:k tWAYƥ~ Pz>X4@'>U*?KaZzdo8d\o5`Ʊ I)pj߄paA!ZT\yr.$1߻8f,ϤlVQOڕb­o~3vw/~ͺfmn_-KA,*hٺũ'Ϥдo`^!7z߲ٞ߯j;"~kGGTB7F%ժk\<7j9V{]QoUMu%S#5ϠMTJJN"]XV'5=FI)mON^\QbƷu~v_9aYw4ݛȧj[#e 'g k4 z^XJ/ސ^5`]<~2o$"XNXXxw$)C#= p7l 7pH/Xh| ʅ) āa6fd Kdh>:pk/fA}F =uH'AC ]D\Zagh1{f`$rPR l ׇdO8aόԪ ջ6%^EnH]'9Y_!d}p V^K%&M)U16>N' srYE׮saA~>c oõIR>'9 >[L۸YYș̮pqmS(d^@.ar EwchiB^TrR|}nWJootZҮ1+GLȫb'cT,ye娛G3+̦HJu-:+X~Z!нR{b>Lz7=^40q||xKQPg yk=hHřӮ$O,x<64|7x\e_ϵ.fOpS#Ro:jB%tUEYI)ߦu=/RTy_6oZA0,up> $A* J5aaaogLsC }=U:-1O3 #u30 d`ct#v6A[a ,4d_D4ccr94 !yA4uP^!Y|dК4r2-?۝bs#Jiy~^&!"ѷR&G_?e{%Jf}eMJE'eI2Z{4?*$s4ei/x\p0"y,8N T|hy+;SڧS^?vo[^WXV?$QΝlv\g7էGjHyF2܄)@ '驋;:-H(U7ƝF]h o:ė2yؤ2߂υ]U̙rf`&E)%tZ3*1C-Z߮*Tx?}A'+.okKN;kO#LbO˹g<mn3 7kU( <CQj@ñH#xxdhآH"`[g1Rx>jr!YD"++2#ÂL/B^p="B`2ƛEaJaSdӌB]@kq_, g.)6qiӰNG[T%g Og{:%HX}ONjZ\d$Ef2ip⦘D8-r,ol*}@DQoo燶ǽ毤}k6uwSdO-b}euΓwݖTyjfygӝ2!rCBU,X^Hyo(t* Uzegן8𛭝MՔ/ֹ6JKa;d@"~&06p696jK1(f͞qB\c` ;f%>_aW89,A4A]35py؟% 80t%agg#kPt jBV̐D^#gQ4iwX6>nG,вBM2`z~[ gTg[[gqkֺ@V_7$ySD7$$H !{lg먋pr/99ק'::Z* * mΙ%1$j&g}%E`39c0o@! 4oq~c<}ƙ ܙ'niRb0V2]R]Q$)Մ#MɼB׵J0)Tԭ܍Xz{CzY:zP["NʴGG,9Gj7`* A\kxT?iJC7Awd/ɿ7S7PCr+TL:9PQ+\ݨᔟbg|ڡgN銕KeNn^@.+u--cSb!T(v^Kp;2oebSԏqbyRe N[vv&grRdl왢ޭ'y)"0t5⿥VE{'.''55m$2I>/y nwx yQX5OgeN:(gE=}^o-u1ہײ)Ot (o;6N/+2y5];JOu41sTܡ˃5E" hI튒0# {gDhcHB6='Kf;jrє̝ߥD]TTQG~>\s+V`ϐrD@p6`Y߉ҁ݀z:(j!l>w7 `PNNG r3A LF`+˻` 4J ÖF w dF}x GÕ&?&rʂwuج&| q4L֙Dl!n&ln\VR;?4-%4[TQ>f>QZ&KACVGef,LF't"KÌWAa+)l^Z'dCTJ%H眹i R̦kiXjv5)ʔFYP+rh[}9F~TN ݾxeAMbZ H鋋u.p칵#+~5cjS(4An]s-?q%vR!.~y+uD}%zɽqⷝ:f:ps!}qj"I_Y19 doh۪_{KwdYKmI6zCwxFQھ.ڝo,Ҿ.i@XYܗ{cjHs#t ]{ǒ_invO $sS# Eɪ=>yB!HC4go8J{wk1@ oMZ9K /W )q)wwbn>U6?27݄߱U~H2j}yu65XkI6y!FY1Gձ]AJ=n-4ZpvFrƩOsO|s!rZ3B2h{P~@fUAGL*B\= Fa Dk=9 |[?,W`20`vp|"^ŏ ڀ%<7 +? n!rX}>0"L Ɂ:;kA/da+qz\h˙6bg's>GJe:8Y嚒 Eӊ7ޠūjR+uy&#Ux/LM]Px -!l?s 7~QIlY!A;qY26%-%$CIڞF,.ASD_g:Jk$5-5]Ds[ 7ʮ+NZ|E},_ q֑y`뱜+i5'+#/8Myo|)KU5U'[o ? u^⯑IaW7FNC3drygaT׷j~N*\_WzogӍrm^eZ?h瘱\t ^u8NtL3w#éꛩd~Otw5#/v]bdZR5^oG5=LHrV-=;Э]$2}2:ZOY$JgT}*ۛN]TНZ(jmƻ|#;< [(; EUz%\L$yq~ lބ , `; L3/ \ׂgQ7>w!](l&$^ O}LҴVNiBZH9b-;-@ OB Jt66|DolVCj&#v^eYwJ2J}EءF)?G'~ȉN|vM|o!ZRJ[wQ_jVDșio$F?)_?-'\\Xk,O+()_)"I${ھ'5C'A[n{g Rk8b=>j͹C8WU{y/mF=9)*%yw ]p\BA_8^vYnw+'G!-MI[eeFlS㬳79#Ydk$QXj݁)YɹK_L*ǷJ6ݼew[&sTGZק6?~ ªPMtɦ޽*j60QQK0=E״#V(ˡЩroF&y*qH[$́um=Ӏޡܡy-bZmF℺R-Q]*zz.EyiaT7ɰ0jtigjmȞcB/(lR~ PȋﺇJBh}IhUgjg,uV~2A}AmAA''n0|gCWC'0TH4;!&$m)~wO fO94(#En* ?B@QB_A`հqZ^7ɝ $8+4#@+ T>,0 ~Y8=2  aǡ_a`еj@6`А%Xq=Y@^j2䲄KlhC<:F1TQYtu'qrce;J5N0I6R-hvyU:_0@uh=[U)3^yjfiY_ӰE&OT5SiUVΎ=Zy[yO22K@ a8E?gYLHV˞k*MИbI~vфG:G .憜 nE(_߈oNx7<N@Pv nAl-K}I |984f$kph5\TF>7|հ];&iŽ?#v5p<4dQ w sk?tQJM(j$ys> ֞Nms/$_&m0!/v~ >͋!Dvߌȉ|ؠ ,NuPg*l?k#wZK0y)9e9}(E\LՂVV vegO)Ms}ss)Njk.hyzfC::T=F}RSOץ+q?p5nAiC; TgI$U 0+UIv*:#,5,Iͅ't\H;i` 6QQf׳ɏ \gHRbL}#{\Mi@L^}M?J'=n&$]RM߬/L\ǔ^Ie/q; oeӠ/G? .gjbkM˚+ ) ?4HC}M'3t8x/rO\{g,= ݈4ZֹV^.nZ̄_^ d z(+\!g] ܈x#.#Yef÷Q`^/ vEd->^p>w ᷁Ucpx iС3w|}|^d I8r<QruNXذ չ4@jI~Nj vtkbg5'<;9URE\]&9Q6>;~GyiYAQ eigUO35% ԧy; K8ɿ[>`J`r<*ɘe'RDwP+ ԩ: ̣V n%5i 4kDڧ$_FaT`BަUTŠcpZB/CM[iۨf.2GSn\{#{& bOo .r`~*fBh(iwz\Ϻy&J&i@ITEĽoT1F51Ec/z\QONGց C^boq0`cz\tJR,Ja= 80޿ݮ` $ N? -:F,q柜q7jЋ׊ ,e<07`x¶OH!Tl:õo ".Jkb_eiUsiXk4:>֚֚:̈́8WC1Ő& i_W6f2Ë򑵔Eg+QݗAx"C)YJ5OL ⻤m6M`{dXL<pA9OV.a=ꍪ?^xf,q^SMD3 Ϣ%:_OsC+w @N1u3`~&~[|?D/1  փ|!!-FsJ~= w[2f2{}Jw"2Oze`5h\ ]mmb5?[9'bq[:ݶ}MkB)\ jho*^ʤ5[q{ykߟy;kftsN@yW>N`4eXIdY. )ż. hʹ$?O UJFڡα 5Y6V@9=qS/^^> Gq[⮖eY%3*B>pô 51{;vK3+sk@{ƾ}y.>d)EKfsקWW`V1bxLMI WjOo2Ԭn -; }tvҟ:85fx`pchZZo2\;WgufOޙf ;O]PNWo[.~[Cyf:l?xi^S9`OUcaMbujڳG*]MYI4;T{i,|GgN PmCK w!6`L52<1>?m34 0nD X~ܭ{@+Vk﫯U-$Ѝ ^.q, s8fɼOiٸ6uudkV2K78QR!",ˬ|1M ``1y#/"8th9e !`k2_z#.4=\GGE!P:_o7" 'S^GH9kL`"  >l+dB̈8__doZ^'Nk"ڲyYb`٣Vue=4yBCq*1f4%m,sMswmy9(~&'+4|BnS1DjTgکBxKB-z$7tF賣H1ѹG'n<9Vwxs+| `G@Uo?L |(DF!//#ss:}~~'.$uigr$t-1Mn` 2oA^n@+}jVsV+'$3«cဦLsIM9%2TB0Zq!q MH B;a[dӻhѵZ>[*ʲ"^BTnP: ' Ӹ1;nAVJo;RgYh8KpP\SUtȖL,* hLȒwk6 m%(jEPk=7b4V@$zOiߘ쳌̿|o 6<Q13.lK8eľv…Q_bO>gd|gQu~c =W?{;g)dd ͣޥ-rrbv{Ӄ㴇 dc/DzԹqSIKǓ&:I׶v_hTx%2wGn_i[Ymm-/k0)~o2E:T8fh2dgCE Xe#R$d%d|%;] Ļ;djܗQӕu?,svu{؂3h*  R=A|+{4DP[Ɲӥm@&cCN= SyxI P@(:E8zh1yDxTAj"@m÷ ;tT6*i^q:n u PI">U<5idG1ROUP+%p+ }3xc2!jp9< Nij=KL_-J"9WMx3W  Iw'BjrѐMZH;DAv[#ϫK{I\Gbxyp͏[&n7vsk@뛶gm/ےۊ+۽[IE˲$=SBZq 9VXhT)/!1.IʕUgКU '2q\'*7Tc;WtkNhf6^~ԶB}N9lMf.EƂQa{Í!.}9/%/,:ڜ<,~-T, 3 g?V(y#+|%l4Ni|6Bj C^ȰǧUb⑁^q-|s e~wBUhj O`*K4+Vq}]QCXz&"am`d]YLrDP?HR wLP@ֆ*OJKB^^8]HOz9%& X.i/UOiEwfZ?jOIp.ҵS##BNLVÄKw.VKK5@dg;e3PprӸnxj0wF߂o}w+P"A)MX&ur@߷(EʦkA6XNoBKAb.QUM4dkT ?9;<4%Q"3Dn|RSFFe` "7_;ݕ\s8*4#1~1]$<(8)8*hʀ?{ߝ>!=!r!5KzLeE73ћQsO9?pY>*+/!nicRE [\OQM6u8*yVWzvrI(sF34R ?Pc.9{KFG F{FJo8]WV]:--S 4HU̩fpqM݅МoM 4}{^ ).*  =2<@s'Ym@U4:j-}+F(#3M5t3xx慳筌+Fr^׎α\7i3-7 VJP<,1,D=o+}U6>~CcQcQ3dL3URjE%EzjM.&-UGhbOqtnȘd9JqK?_` : "S .|ǿ(@Ġmdh5C||h9xdajv䢨 gi9>*x-b{VK{tG);Ѯ]6Ӳa &fzg%jvqƖ2i6%rk\H6!&FT*2HoFIV̇OF= GK(H%fݑ'*r/fϊM?X; pw rEF7 4m++RЇ`c'c": A3o q?}@b1;K?.^ \Xc.$$jIq<~4p߮/-M(#kJC7nՎ72tWx`"Ts{41DΠLqķFd`[n<6?ȕѤ }S'x)=wLLKpa(\0WdSV}BOI$\Zqss } -,0E]<kx*.b SL6ezFH֥+f<EsO/.'jdQ {'(2]UIFcW>Gxb֓9=5%i^IƨN5ɖU&G;H>qĠJFTu3#Kpgng|^QaG5+qJm1lP)Q7cuc+&xOUEkWnjvon]^LՆ[a+eU&lhbY3: s'OrP.fv-[OK4~,/͸\ԪS3=_;?7,/g3 _'on>r::`!ҢÍ)-m4OTS,{Srs*zy's4ً[x[, 3IusKFLc@|r--y>#y=5Gp] 3?_Ͻ,svȤ޺}0UɊ%+CFBcC" >_  ʧڕȌs g_jhrCE m@8DQ%khywCl`Ioɓ]A[ Bu<́yEy( |LQէ\[&-fc9nqƅ&,,F!c_,/-,- wUb=׹\X?kNI2IIm{4(MbZcɣgt­ SvNܯH7dK4̕dqoXc D(*앐.RTlVRiwi)+ i_*'mpjFJOp{#U'#CQ?E>J¡aKqg913 Qc뎗wv:\ߘ,lZVZ_S}*"]1%`>kf\ L3 Kra]Ȟ9}SlP%!IP})lH"Ғ5zղ|E׆"6.VL KRF742Uٳ /uȒg}{ i[УiSRٟOZ4}*-8n<F 2U֍:k5%B| l^˹^[B928'=PޯCzY ?[o+rجe .#a)i* urWpxU\*;))whtF(nua93'ZF/5 [\pi Їh?kV5k9IVܿFe]ִPk=`6!e=28qBXnlw0ۙF *[q J,)M.2՚k; mV/ey{4X:J?i9 5iӀqnG }z)? ^MjlY]G^@};=لl8}ƙD?ˆf?Zs~!w{jѳsݧGG|(q?ICxԻdsvsBgoo&E](+)]#D/}>^@p'4 qWLbk ]397Čn1kTU`f>ޱ-jf \K d a5Z=/0JYjO^sg6Zu|0@/DT5\.WHgbXS+2’$}bDμ1\X]F_wlÏ'sWx'6 0rQU/pzv$~݉.υK_V( ڰi7ğ8|2r¢Gn0†4s ]/PN-伺`I ,eaDnZ:xZY:{^n{Ԫi>^WH nΌe)6)%ʍE~DG'Jϭ4VvvHiXC{]2Y^_O4z-zN򊲚MKcDL 268@OrogIu}-փ[G\BN=d~SDCKX*e>xS(Pq/\3 M-V&Уv#aa4o0E>Ǡ5O{&f/=٘l,7T#)I'j~-$4 grCyǴLB9m$rD4~_ WY+iloAt b"~8+|pbk%I:/6r$yNT%@nnz@Z:p$G~C:=EKSgҒi|^xn8rll`ChFAQNlKd6ZVkXRBWقLA(8Gb*n!ZDUvaY)!A;E~J0Je!Ջ5u5g~WQ[xJ wA 2%{ԫ)I@CbM1I:BtYOb"o|Nl24\7za4I,Ropz3ݱгˈGpEO%IÊUPx|YtφO_8:i;6.]ܣ`o򉹇%Mg!.s|9Y8 zg`;,¶,T~̿)C2.M_ܳЏg]BL> X@ᕬ{s+8ɚ@5\tNDY]k:6Ra;ztIZ8[?>D/֦5Z)`t @[h;6U),Z]PS8Yuފv-Y3sQ`p΄X@ZMK^>eL%>uaSwӫv Ww# cFfZd"՚Vm&YK ejaK/˭TŚb'soQRݑ>…xHhX>+1k^?jR.ԵJ juzv&X!cp0Z}~H CT GxM5V]]uWT@ iAczԽs"`w6k'<~9y$pKuRa0N ([Jj,U=-iKx}p] Q.vixW+b Z'臝=WY6ɲ0DKY'7Phk3ELf́xT.t ?qyUe7!cљeЀnHSտpҠZe@w@,rZg_idBI -IiL3[Ye]'p yopהS'J_ ('H)@n> D(28hF͐U0:+s!+?!j*e)3ZU 1:P!✕n6HdRJo^1=v) 5a1iYJZyvU|7'kGv{ؽz:|p߰ﳠ qg;u$.`˾n?yɏJ|ys#{(k[xnҏvSu@QG*ə:?5@MT*[t5]IsrQs#n)ϫ\pR8 :Ƕ-=/][Xiܜhz?dJCQ留Rэ |mHݼR] &`f~vfj ^'VrHG ghuz8i=M3tSdge;tm\@l|*BP 2/K2 G>s3`iͳ}F[^zCO^p\v/|ъrie` TZilMfx-P^ 4M*H:[0MdOR(ԏDqvA(h=dziIF ֓tG 7HV_U cy( 4ۦ"S#]RTfkipgF'R]T  }h216Hmq{oC9w}{ ^oKCR7$e%cL ! +]5ߔ4 "seӓ땁=%'cE(#tjeIDm2v܁ĸθجyjSj5P\E8^|oF쟂 )?ŕ忮I*0uGrGdѳLM(V}`F_DT.cd"@Q5 <҂_~liK,Rmq&X۱Ud}9Rd!z&BiUNBumŴiB)'4OILPpvBP 2QX34 j&ڸ[f#;MAN+mcɾ€WAa}ueB%|G'O v<4#;]=?I Y\%H~lV+%%tWP U0 _oZʰy :ې=l7twyiö<)RU\nzb 5]/n=agv]X1}$e8kmr-LuEVMlj54gC3ީ]2hEtՂ\+@l tbZix.-(`%Krh]k4tWs֦΃rMRٛhNjf<5a.>rvMj/wZ#cA_ ?vbMpҟvGMLfnS1_x JSɂE-VE>"xcHʩ++Yyå/<*:bC9!I!%3{bG\1;o]H#K|.5(>19(-/l/ }T}KƗƦsj5B R,YgK!K^HafXIl| e!Y [d{'/fЮO c(Db/@j$kr[YYq#ChD=qn} '˖z +j*ַmyvܯT_"K=tw[3L3A5B*Oʼb:4/4< /YłZucmةٯ!KyF!hEܜ'l/߽=TUD+V}0kdYJjp9)vTݚJAZ>yheTȲՊ90ݚnf?ieaC7XU'{ވ e'$OzK2 xew\Y#٢lӝo#.7'oDhM-b= 8d2ƓqszKYdx.EH?*| P|Ս$qǐPJ&sV^)Ӕ1$rk!.W!]xѴmQߊt.~RjHf~ A_~!b DQA_y9 /,#6ƐpK5]ZxȞ!dWcc}V ɉ=(īSXU;'#4*4.%PQ95}rGEe>.}ryyí=sFg˓N:#_ 6pRڨqm#qIWmiyU&i}L 73u4|r c`J/XKQv ]ͣw`899Ek-]T*J-FCZ`3Y؆i$jEwjz.*aW<#eajemrP3XAozoWGO'.n#YkYɦ c-z+u+D?RLc)P ރaOcJT-7d?t 1&Ť[HUh(*t8_k]lvK}2 z8ãՆ m:M9)JՏG&x0qqXV찪ɸםm513sy By;NIJUɎ`x!k;]V|U`3.2B:i X2l e;wzK /6YffGs $*g2[+kT&+*˗nS'g];'( w=`^ߨ9.J()eTo`o2D5O =$ Awϭ\UW{jTߔeIUӱ `"l|9j($=ܬG8? ^<ptBHJjlQOM_˝ e.1;[R_K/V`D@3VږזsܪB}LY<&4;9tZWDľ{^_0#>y]L{=)5^D#^ZK,5:={QEUÙJF_&>}@>awcm .>+T$bk Tqtx<^Y¿Tr}U#~8`t77￾-֦叻oLv_Mr/ߺ wU-G_$(#.[\d:L59 t;rZS~5xիo̩ƗIuI4y t~Bsm7Y~ؽ 쀞f! І@ua1Jvwe;sF&!TM36Pz '@o l%rT,?B_$M(c Ԩ{F}lagфL!VXDh7}a03jgL'?!_ ZYѼ^d~QxkN|03ˍ=M=(x+0+I KƏScnWQiQ~Ĺ=`sOwA],畞{v9L=Gh|Y'߳deb,j&M&MmTft$(C> VZ7?n~Զ Oczp쩜A>A4>"-дhc2V檰hWA:R-|zv2 W 5?'cC7`؁)Nࡀ'~T7A(03IdU:/|JjafGOsbyy+o Zsꟺ8safSzR/OwpuLɈ;=7F~8[VQ*+0͚4/Z|d_ )C#2eN'R;B l%kn oaiw6/^=jqk5Q ]?5]Л;`Ggr!Bŝ~ xVTlZf*>PxlmnbӢ̳Rzn׌i]!v>NPЕf<0Aab~": Wz.߾|oq]{ȥ_j$a6±Rh==O?X@aZLzOuQ?0Q]p򢆤sʗ6$ӊp*)OdꨟUN_'lpm_f:MVYڀ!H7(nZJ.w0S4c=эq!ǘ&)߭'4Rmf/&ۘ:J-Z  #i]dž;< IIhH ߨh_8Psw p"=UqMȎds(B/bGPs ĵ-?,VDՓk/M/zպJwHhd4s؇H b9R=MVi ]e:6M/m踇IzLxdr\z[ ũt` 20٨7;nR]RJkU aRgbZr:@N)z{@I9r-Fn,^8B$j-4\UrԙlWAb}~Sc/$N/, nE"^bR71ͧckJIߨW3 #㙢-Ar XRg+E~;Q K4;1:=)ezֻ¶Rд$8Y)"pp!&soٴԋ@DQ^MV'cXkXi({ =} {9жO嗆1 $^vJlo햗&#}_8`'Tvfe<)'6Nn^J6x|e"Xq;Tr2AߚQ.ܫZcɵZ0Qxqdi6<̷~L[XO H㜁vW Y`jND[DDj-?Yoxd vKHè-]څ*z0 ?;k)_'z*2Y4R\g!%+-> N6h zN:q)ڶHQ?U&Ͷ0x p %TM$ Z]rۓ5 KDbMWj[:a XoD Kk&g_N3h\B >3Y޵̂t8C2NZPy5YgZͣ!%_chB4 FQ[GAb/M;  [F@ݍٱ) \E#CĎ-?>9';wsx?\JblmymKm"n>c"ȧ)+ӾZ90QrTtԌOn\X |rYGc+D,CrLό޼3RJחEG] S(o?.ǜII].l-.xX6pi]qGsc2]Y˹u>KpYc(0|nm\Yܙ'ڑ6Q;OqNL#icV͈'m^d^(5;w%Ox$P0%` D#adXTdVqCmdu#^{Yr#Ɗ[^KoR4nm:X4χ#^9O:f6orgXNU f ѣ뵵U^fm>5̿@WV5Ҹ9:?f/o4(MWyGS1%E_ Y7ed__Nk땻ɻ50慮ǜ짒PLˁˡD7ΏO&QMU9KU4(& FCSƢ@OcE`y?ɪ.Cd4c 9";1OSgmiYDOxTG~}^:9M%eR&TRtq{b+r\Q%SYҞ;'\̶q'R&wݗi+!w3">?z~[q9gzN;Sb6rwOSdг&MqRrkl׳ʫ˺i! 8&=w]Uk(r5s/|_CMoτF6fusmzMïC B7Ӻ\#뚻=AEaXdT6V-#W8NcvGyo4/- #\wvLL_6\">VظM] U^@: W'd]I–׾u?|ޝҖ@v}t?kM ]i=!ˆuz4)uَJ;1A7w9XIb/\'=l`6suɁ~[qI7ϔyHTh&;K+SO@6쫤v3n3Ǜj=T؈tmƺ8G8)XD2Q)[zJ EYLV wɣ2۞h ,5ц(I[9= }+N 1'9CH(?L3a x`VjI&| ZE3E_Y2POret plRMaOhh!%&>s^ D'$#e  f+13dneYeeZ?(zj;N= ?ya~҉T3DB^$xe͋ ,q as8i/M > h!rBcv[W[ZSh!) MDWią4Zv#*Ma^D&7^E<mT I^ &+鴗d ejeSۅrCX936\_6&0\ߺmkö5Ƚ)(M^;BcEe&veHle(y䳴+zJ_?wGZ)RQGZ+#e%DsvsxCCYi59Gʧr@.ߦߌl WxTɡjN~Y#eaCØA#DD5bO07D)EGMhν RV'%KNX8U3Vx8r.|(8\q[?bĉμ8$#`0Ϭ;,u!&qWrxadZۢlG6VO&jjjdygc7Up -r [6C9$p\1#KodFHkϊxM)Qӏt.O`Eͬ-Q=ttX SIZb0g k) ((-D A8BW`d%aB*Le7~B9%>{Igu+ )_OTqt} _>-!uHK Y;⑒gü6^tmmKNsjCS[[i5X> FoQx5~Ǹo4u؂P;r\NW3Z. {5r_sϳ_` |x r?"y%kLC3]j/J'U(L?.E,|Ӿ6B>bhO hb)MɝݾҜWp_ X8P3ΰ)z1[xm<[`C &{{ )jB]Š"afEx8Q^6͛DE ugF@OIR-L\0ou REW_ԋYȓ6R8@O9GމuY7zqQݐ\rf6]OJg2b*[JΔ-ObW9K0PlZ|£ָ+qsv6W{`"SJ0`orlE!8orqSM_:=UV ċVLlvoM ez.ةT)föVdKR6'A l%2NMI@m#鉳I)J^t @[ /C .F޲c8\b*l [ğͯWY(#b=t5O=aaY*׊NG7>mm7n︰ҫZ)M&Z/ΰb 2fz_9P9:baIhmT1dkmMIvaٖ{u,m 7剴oޒu zg(!U7O6Y=I1,&oSh5}ropCfca(s~}Zm$HY.qh4*E$Glt*a^j۽˲Ƕ̎6+#w-Ƿ5nul;-LKGp;T3 N )KF>‡TvT;Ϟc;``߳ ,,S$۠k`wy[Cca7n$,{+u r ^ #zIV⻨(zD>xf%|~ʼ`,pڽ}UwX| dYfƯت,g!AᏱgð?X gg-e+T+% $Ln8K~ԙb&MXX.-ZFT_Q_S63f)WS8\̄𽴏||:67֍%n?"pŷj1TC9A*ӆ =&(K'^3{R&w-l7@#/ܨR }> U09ؒ1\ ~W˕}לsཀྵX*:T!a 9fLmcNF9C]ηE%nYp COMK>OD+ux9m%~OUvj#Q:AO{.G0 ")fhf3Ľ3ȓ:6ckhCu130(Y+6Pk-E&Dvpb՛t;e%|[oWEw`3dPrZq}ҁa"0ocBS܇?Gߩ\3Q5_@Uʆ}6@l.mT b &s7p97YRց䕔mԟla;;YU=nڔ]+ m'ŔBfcOs[?-XPzl pRkEJ?"1?+9!ںWg+[> "5>p+tr}o'l7KT3 GkPnk]l@2ٜ L ac(Ql̖,/\ l ;Y%>!kf1$W࢑z!bYe`om ! HWQnA?0ZIV#05WXt5n;M?ÌS!H.Ne_\poH[hJ^tm~'[8\h`gU(cdji;:.6}R3Qa M6Dsgq /8p9TkAnZ hs;l6c.{96A^RRձJIHBP`aB[3?8QD.Os_8)"*c:$VI$OPβsfI\EgO8aQCbц[Ad*!$s|fIO U\bY{Pdq\'=&C[ɥQβH7NWD9]+(߸Rz)6L<ͳOz'xJj.!2Ur }!ۣ vD, .Shby Si5U ɮk9ؿЏQDM!pZ} zJϒ vF<7H(Ay*_!6 jHAo"$$tx>E%'щx(` e$H_y37afScS5+ ܳ;VUM\V".=(&C1?Yv~X*b8- Sv'1>n.7ߑ|UTB[_|M[Ngs`|@)E[26]2tkfcJ9b]F`-}^rlz˪dPt],|1AD6ҾO dz~CYݽ0sGxstcY=EGiK/<ިS_uj"pS9 }֭*>Vc;}\PEXˉYLoxl{E飄cx@3۬IfYR#}W?H6 ZMJ7b4 C4tK|K4kJr3HKOO9q)>ū9OG QQuA$m厭!7 &n aE⋥̻3Y `^xJϛ-+HqM˛{{իx3>"*4Qq{A2\xɹ1J,ii:"$uy7P,JL?|¯B@tqZ[ _W bhsR3kvh-un$:;ϺMݮn6ss6>-F wKF.]v2'2e?Vif"Dm5 @55ճj0ЅCX>v eL`s |0.O]OY}A͙H&Zpu+O( w9h-VG&>&"&!yD ~xW? [)DgSgXS9kร;9BŞS,t yßjҪ{ ɹ`?!vmG6(n}Q'6AiF)m[Xok7BTp)Epft#op/ Y\ \DegBg~ ;jC±~?TE2SdYXv==Ip61nMB]\:ϺظXH%i5b.4YQg" w_ޓh~1Y&Ӿ5y֡x;ZZtda<: 8zjc1xl͛f*B%8}cu>mzIk U-^'"A-DjNi"C3JpJ/ 9*~ÆS/%\;Ձe@xzEvC,5q 5|,wtx:\]Ug|=VJ1Ucm‰56)rVh0jZ&қ5 qQ =_]D &u5u biQr GE~QOSHNC' DRlLXq\C|PzJop]q.uGȑAv&"+S=CAڋ'ap3s0t PSͩ5%5num(A}o3ZHqW,'=i3ҁnFІ OK3_b`hݬ%O֐묏w1 ;RrxvK+SLҬeyXX[3ʥSCl'k7oh:f v qh w[i.u >R %J}_%ڵs!w^ ,ڡZﻯ8f;P#wOlqxKݒ42ߚPblH/6ԫyi3 5E/ސu.d %#h"a,~<,^7mJ}7_!]NLAy `E*M.QerY7s~ "֬L࿘~=ݏqm_ff!S ?' vO{rx?  k(.0`q8&.(3NT<㾣M㻅MTQG݌L7~vm1FY0B^RdKˆDv$<_SdYVk=|Q ۓeG'X?^u g AƇ9ҡo:vYJ \?5x *]u(W)3e/KloL&O%T \51T֩Fx|Uצ?э' vT iMW؇XL^.lqkmɜGUgws颟s.6aJà7|Bo{\ "’{5|zz3ղ GH/(]3v׶}w@ǣra~S葚o}5( BM۰ =p ZWBj3\4+.Swh<ˀީZW.)iO\\Ug{>~0;S4Q@4*3FԵAn0F{KF`c g(f7Zl1M*$+d&-δ%Hku}I/Qms,Sp?XdExys|C녗:,wK=_{~\s|TڊO_S5Y%o(LYXwJ 4rp&rd=)4I ʲse+TVF?zn#S6:]CE2u/!VEYEe&.p7`4!R9 :ڗf8'sHj ^`9}%. " gXl6h*`fyo%t'[њ */Y% tnVJƚ ?5hb-AnTʱFUUˆ ?%FY+qP2ܚU+_LPUSѐ;]\4"w-b$^N;9! aȳ ˋO%gc,˟xrc~Lza6dHStM:`kz0'n!!*TV7xzJ! ­/"Pzԟ<;n[TG@CU.exGǛZ#NZjVH, 9?V1SƵ.$߱OuN=utjT R|ljFyuY/^ǾXPpLo0-Gn'tA^:tR>E'NdḂ+7/(/Xhf3?044%0uU=CSTU)"IvL6V K}\C=/Kg6]{IwP`-B/:&d%jnmAnO]6{ ŸEe#S-惷 tǫ &q_K A\n$^rYO81a*G6|cVWwwq~םЇJ;uy}_ ==oc}$Z+wM`9MM+5r3 wD! qm1 _dD ]4M-'bw¶$VAD4K-V1^G+c*Pw{p+>Q eޢt&?h@!f!Bwd\6uCxpw#;2{BY<6R{I:C"Mv@B,&O6g\99;<*pӼ3 ewR:^a"Y)Ĺf>u'=` X|0+IF~ĥ1'#M˚v_'xRq «R]hS$SN:a/2YO:AWcb<_W=IP1Rˣ+$PZxZO\ݸOo~@y@^lnt/*gnEl!d`;)W|*^pT CK.:˖QvU.c4 \{Q T%w嵁ĖDr&'LiC|M!ku_͉͠o +> 9g^02JW Z6-g?2m}2 ? '7nQnȁq#ʽGTN%aCOK'#!yZT :˫ ^cbANhnK/eNhG%&AO0W^VV8]Y(b`LSVWi|12$q6^N}H%-ZM jGMo5MN>m@jAO![npCIB[" BUW1-G{y;M)mEŷ p *C&ҵ deԴ 4v?2/wiOnz9hj5f u(&H%A歺ZltG˞&!7'zv֤0pCy'ws{&+ɧ qd1bՅFrK!+a*lYDKE";:2eQKJ:θ$84i òj]R*Oe"'D{ wwkzRz^-9;{l?C ҉:R: 5 e?R-[@yX [.^{bخۧgy6)@?04wsM (rK.=@ėD9O;CABOאXjNNQzo pÿUIG1jjmvJ8 C,P XVjĭi`\$!dloƺ$c8y&嗊B&75E*?MFڊx=_,Q9[ > ڰNeLh^PPp?t6c]Ƹ g~k@ridm|dG^_u2u \]WAO6$yuG2v }UHYvPb#8,i{U4 -.h*C֮ 3@HlFGoh&o%׷ajrN uE{_u,- i.$GձB[1CSC'bz[S?/TA5xV+"{MΪs%`zIJ>"edS#j>@:vw\"ZG* CsMy'/U6@$kv)`"wqp2Ax|OitӏkQjq`COwd4_ѯcm o5V㆓lx|c/a)i%Ij#CC:ODfsaS|RsDx~ҋzm}~7.sMr07+.,u\u{n HXf.WE՟&~ PvU3I2s~**c+ݥp}1m9;4 L z-N1Ϭm] ;5#.|SwujyrKc&OV(Fر˲z%֏$ۥkDz8tpF}#4۳&QM 80~/UtU-ڛ[t.Az!|ۗ%2akHҌz;HQ#5 뒤ֲޱ[#~L}rjy:+w =`"y.1~g^y.):=ꎬ pmN(@eȩ3suu&L*^SE)r6}yV8KS76h-:_I-UQpNC!U-ZXpN64t^m z|݉b?O(uv›*Ml?ʪW#Sa$dj $]-ese]Zo=!5 m@ulq'GO@̫mJa1Ɠ?k>9Q^.GOl8Wϝ07뮌;O*~_`n1W_k21E#߻V!J|J\xGi@n.YRahPIo m?*[`×ׂ؋aDb,*gJ‚/З506$~/7:wx8c(ZX9։)`{(e@U`lG 7G#qXxTЪq 2cua3IƑQr9o "{b( @ Jxد]d]xy_=.suDѿ3\|Ւb[=\!\$dmq|ߔ7 +:6q g#Ûg_fMe5nB3҈< N@SfUh: Brso>KE~sv2Ȳ_qk֏;D-|Х w`DиO/_hP{sMMz(rs7r>¿eӚtZ#ޡ/ p/Փ[=cp$:L\J 6xrZ݅_ܛׁvOxSzk5Hηc ĜokfC3OGEh/"wCC\ܐ):8qu;)}o^VYr4p,mL!+'гk]ȩgfd 2 Bہ;ʶg #5*B:Z}2 NQz1?U*QI hyp4RYV8z1]純-$ ʱz}i9o\cw .Q]'us\V RdD6=TuNio9ΫE{oxnuWC%hvkfzhS+ ֧*o~X:FW,#$Oөt4bQ9̸L7 /17UX E];0V]cV\u-l`batݱkݞ@_+B4zcvoHU^`\i>[6{BU/Y`撮mdgK뺥;yF~vXp_\hOrx@֡/tt kQzR3G\s Dٺ@YI{ &r/3(E2U+!W4pז`;ur UɬaJn1i;:Nzs伡ϚWLJE'F_𠲍rNYmPt3%%3iG\kLu6k[ܯѣvU +NƂ_f"Kss 㭓c%N&)(y2\ ΂ogƊeO֔8Q RM/c|kk^CsC$ x8D 17K/(>l5{EͧPؔc%9ڻٚdgI4\9g?#PJP>@)an!̼P;]w%[7[ؠfAUi0êe:Gt[7 y({CrV5 r6MQs^[[2̤h%˄W3yOL,*_YO#0".ӭd#Hѝ?MW u$7U@t WMoMgA N9 G,lλj;]iHoU /6dYk# ՞AMW`CMp ̏fY&ſvRA1!-)nýL;wxElcʴZ~;Gf jS6xn8>5.`aAfNCIEX]'t. \)u@(i~UϢo. _7=rpr>uI7K}E.1x][_QWsf6>.Pka 2 b1d!ԅYxPRm_J80bGFJcK!qL+09R Uk ]#'EFsFHk%6Aͧ8 yQ*qf0e$e}o(M;䝐ha۟.{з kTeIc*>{>Pj7oH]!UUöA}]UڕR0i)*sð6jsXs "nmz-_xfas#X IMGq\Ɠs ujE/Ay_ /u32aEVijs5QKGέAy?~>b̹{ Lə,rPBDyӋaaǎ5wU8!z.Ԉ S(yO(s7WJB]c._{s%;^ ?4fk cTQ};IJ8K%:^شP{SIZUtk zaŔN4^.։)ifJP뫦Ɖ "`:|}uP;4&V.lFep‹r?&[X*rop1@2q)55zmҹ!FZ&;nssƤman&i&DAP˿+M48\zdd,> 鸈 /`hhhS|N8aU`#^q38g<qim.{nשYQ1{ıGgIB D9 <k9&$@l`@WFsNn/Gbhtm;}>t%?VOȷZ &}kJK\SH*N]i-n9lyZ4@ne^=|I+ r[y!_#Tj RD vw=)|{SzSd}YoqpB&׃n5d|Y4GxGҗM ɕfu~k $_sza3#gFKU߮H G|+}p~E?$LoGR2xѤ0u0O'~ VǎVkضTku "oLOiM_+!RΓ{!Xk`U'4TմL$䍠3 a/+#]$CҴM6Q_Mv5i.GFaw U]aqz_zUZ'o^Ԟ?D\C:]j_FL7{YĉbGAc&#-a!\[f:ֺUz^LT(rZΔb-H;]_g_'5H @x9(ʞbeˀٵo{#♒=q{C\&O"@8. Ō=5̝$|-Ecd9Y2Ӵ14hNB$8vZ:&DxLAl\]!M6[uv4҄.3 SUm* ʆw6;_>7e 7Յ0oUK]D ƴ ^4P̔ ̐Hk'c>œ:-]Nx9M?GjpĜku*6B45͓jOեM%VĶ7 MWH uYDtC=k ēť' 3c[YɅsJT0oZ̫+8PAJ_k L< .H&nLItfp>5ʫPSS1͇rytX9QNdžQOq23PvT݊K!0XLkJu )>6 N_wK])gXN^9ĺ4B㠤/̛ lh[@yRYrʋ+kzeP08o=Bgbh;/I5+ jT iǚh ;e%#vqi+zr͵-ڭ⥌̔҈$H┼jr^Ye. 0/8E-mu6{v9j)89  nFwl[ڍHQ@{} ^=yRq pۺlwI6%PJ-t~ CD_n\ c^ 3˙qHɿxM*1;T"0 X߈9 |dpxku߳EDBP9.U-V [É~x|*rd5B!RIɜN-NM`JMOmlE{dn>{f&) W?y38񸖺ʃ _XHHJqlj|@8^,*ҭ $>޸Ò}O? m5iLNמNroutuOq:S< 1sP^#]%@RZ][%pT8m$_*V;-*i/ybiy7LNc:7^ʚj# 2/}4_6] +EcK4´)E '\˿d[|honH7ݲVNޖ/9’*_ c숃gFe$*=RїUCp46\dr$pxr {, EƹoUZBA՝}Oޅ*|%^-ZHo1og1 ks}Yܹ5Cs,i:?4k`?AlB>r}l*P0)Dٜ N龚k¦Jt.+<:tl}*nT $;NonKK/Cd"Qݣf{SesrGZɈ^ՈmO_֋*uK=6uz.Ӌ{6W i٢K"nn; !$e{$- )֫xHVEAV֏3NSmuɫ,SYɶhPFu/VU}›tj(L0o$SS -UX>Ӊ ]).>OWe)/ [ `]Xk{UtEصE:f7:E@lە5?;WϟpssF J4beb~kPQp ˁp꼖%p!wRSަ>LܦZkTvW@K)D[0$] '}k3Ke=c=}ej.}.mG5–֖F-3;2No*r+]n_SV}CUL :8jY nWCzo5VqAfi^RA2;5$5rWDVΑ_% aٝO%q:z`u@?s4s%S|RoKmĮΚFL lN9\:ge=({6&G;t8" /'%%];kרּ=#fL̚6u0wYfN/k;IP̢7,{(gej,:UŪK@2eSGkJsκOԌp;TE32k$<,xĵ#u2?ڝ^2ݷ>rNYyvKsaH}?Kg5(c.g˒)rR l#{=>|Fx9ն:.#Rr0)G%$flH?>1'5w#) ýG+9R\KDθOzɹE >{ffb4Ѯ.J>b߶eK7:򗈈廞ƳN>%a@ mלe?y3sb(798m6QQ98k8ąؑI}pGS;ut m+`QEU_˦z/ λ?=s2g5~,?1e8#"%8uZ}\!)dgďn }a*JuХwN`_8~U/w"ˌ1fT4ZM׿vi/_+ $eu$q ~tɤƒR{SkԚަ昆uO4msrx۱6~[# Q%lI*\0d:vXX7WUh <.XQSZnQB`|_!zbuE9٧T56Ҽh8_D##//]v]t;^u\c5U^!؊f+I<#$8b2Mޚx[R[m{J|y _Y4]h.Ѳ_?@ikGSјUMϚQ?-ZajV5lhnr&B¹B=ˆgHs͝[켷jCMzD*]!)$O vkyTV3‹ȤO|AfjS0uOO ?Ԋ1Ԇr{mm~צ@rݹ^@x3{:+O4A~EF&pS(SO!ccvilNIR #6J$rVggкDŽhkNi9,T*|czzΛANg"Ugfk/B Ha70ZdDhk;]f{ ? =DRŌ#0n9GG0A P2\D$Z n mـAr]_=1cJ7*WhHO_[71 N:8j1/15E- Kh,:5Zph_NKUldK@%.cL/%dd!$՛Xop$?և OfU{L@NcL1aBNya_ Pn#Z%4( Wxd#(BaةָTdN Q3 zbQ4{R;vq4Nd>8+VE<⽠Uv..{ }W97E*rOޓvw!%%OtHܬO5Xvvr3%;Ys9%쾄ߌ 9+tDcJWU ~KX^)Ǵ9fZEfA2-*z! uy=W.R䦩ZEpA/%&CcKghGϖ, 2$ Ylia"?QQ[,+UZVD;}g_LpGWZA1&j '-ĀK+ۙ=̷#lgK= *??[IFZI Tbxw8Ea 5;,cHB2}-fgkE%R%3ǍfTl11x'9AeQ=@\1OY/Dae0)kTNK*<_?Uگ|!?-Q1.39g/K`_XADh;5 鿲j"]{|-|3%#8TJĹ.S C镌Gڠjk^c-uvd>\SakWي~?ۚw:/<j,n[Lp'!/# '֝q$g\g~!~#\cޠnlR%N!KXZZBՓDi>({V?+" l]++EFkdž1~ɦF;-)oG50Nۚ'y&o-k4g؉7$kSig'A$đ2R$m~hs@d?+GP@ON Ϊr{S\KLYyrR"gPN+H ,w1sRQ0UH"͐yd!we.YtD!毢bog9s<4>Vkf- nCtDe,_"Y~6Sm2S ~brϛ, ҖL9W ay`4B0vzJ<@Ҙ3iӲQ" #p(9id]C~U U on*8EL^@WHXBuOZ o1Ivu w;5g#vJ'rbZ6cCq {*e#Yrҏc J$G}'&.TꉌI:C+>ex6nW06674&&wo6eBAD1(˖-~to`ק0nR<)@Ƙ[&|b'e>07P§RUx2YU\L3=H%3MW-w,@/W#n`ِn'Ν kF'&g҄L!(,-О7TB;הk=ؓA0U!tU/]AOUl쨱/l}e ܘ'ܡ-z ̄1CX@u B{,Ys{J̮*O^K w**;"{OXp*$[Kf Y}7B貨t$%vfuäQnll'}˚A^(k">p:.A/*~/9*xr~^! R?CZSNAv5N3߭աmyU%y yvX~(|'0PBccXTVbH:JWP[=k+a *5pV mW.LhʒbE߸K%Mb掼H>MFn/K`\o?a0}pɨsQDql8w[9E,CA'q+ѽ7㈁(8Gӂܿ@]Kl!`1d*nB_ipUI*5If%Rc7^ç+Ety;\FBrb03ӫT]tYGx%W19_iKo`ekt=4(p0flz& uflfv+Njf +4<"+#7\FjQdwjS #bxr9 \Gȴ[? ]s{7TBa9>xm~i g3pe50ɪi+}3_"[X-L,.OhAo۔-wZL(7}A#Xd* >9M)IHYpc е GW-1*s.s֎hؒ PRr|Uizݩr-uUt߹.h|'mr(m) ;x>FZ-[,ylo0_bSƴ;^hBa0D--_)D鈜zB9rp=s=]֡ց+? ^#QskQ57_ =bQ^J9b0^&DDٹGoV0Q @XVgZSp6 G%?]oꥦrh]c [$t<^.6kX(Sѡ_|ΑBB ,.y@]F/q"YkNˏ|Son/M_&|K퓽.gj24cL`2:Ýh&n%$fDOjEkU噢I :9*fsrb eo`Lߊ;ΉΊFcp *y3S/8x;DfxY{VI͜@+UnMN*H ݔn6 Rdp!iu˘ ؟òF#v[@ F޳y n>2|o7O<(QZK'ݹO{ c,V ̡R!c~4Vcgy3ef;& #agO;pb4|7jIݢfw[yIxf>hu PTv{~DcV/x+ZsW!5xWOojĨ/k;]HFDzN)}DQ?=#&2w!"9(tYh @T8@h. 9h#،tE!Էw+x3xX0ޟ',]7:]y0 =2aT؁7Ƀ X#<`8FD*Qr rT4dONIJ)#)TzbC,`c?g8aXHiRDF%>&W+u}8t#s7%Q.(+:\thX ۬}.[(]yKĨޛ D_ICbU0!]6ÂxM#4t6c/QJCP2\;*̏'HY2VԨs;yۦ<+͓9qPѭ %f4t%i>ï$\T{xRa( d^̥꿣Mr0¸]]ܭA)RUHJ?XP2h9JDeD0ۧ8rnK`Y`3n:8e4+-5Q*k3L 0 9í{ axD!ˁvwt22 mޅ>)I d$l u]l uk4KQi &=8tyfWM̑9 K'p+)gk]r[Kj;޼9%_mS㐵D'^`,xR©oZ$O۪t#. et w΀aW( i)u4ڤqwO޼oh)0 E7`Q>9{_v,s!ݿI(-dˉ,] +{SrC=[WJXt_Kx ߬:%۪Le`+̷mBIYE6vh5QIu3;B) e ?mwD~ᘛ1Tȓ\iLomjMV﬉fO_Zi:B#B66Q~h,u6qj"9R*uo‚<1[g&YFchq찟eM?L"ڽ~t!wIyE6u.AX;'⍕Z""/*.wWVoy[;&CU[A @3`>4'MD[zꯥRȞx HZGut/K!lvP|(3pŦ6r f^n?dyi剃M$%M"m[3`k:26XK$X6?ՆIgmEߦ%D?.sr6˳/P:sgC 0r\^ɪcj,SlOS20L'\`~{p"_}U҈ֹ%x[& Bx$hgHgt<; D0HZJLRQvdIy3+E ?ӛM*3Nz(ղFe7Ls=a\ 8AWoZ2&"݈Ô)gȖʦ/Q*^m'4 jG]Eynq_iuSapZ w@̓c|3<rq-{M2G}ظY ˻#h‰t8ǧV.2_I$?v"O]'Ri+.csA-AEoy/M/!X(O +wW $?:+K5}TU 7'jdu)ٲUQG%E ?HmL\Ԝ)Ay:!/r$`weuQg]U 9Ŗ sbts-A64ƹPI ħ8u9NcH2)TUpeΑϨx*RNBE&Y$ySJ\`1hSuN*<~Q  mR#R|͘_vɚck8?s}΂N ٜ%Veu ޟ;묫,,{px!Vqx7zhj׽n=x@ϢGѻ|=%>i(C@ߛǻqє5CD5cK*~-_jCc_">d1#!{R }Al"#Bxk*wsE]!kt6E%D(0߱Ѫ$*&m1ŠTi% =X5ZȕMEg;QY! ~ʖ~,,:jHTt.Rgk7#I&8^>UB}-,^9>L|ްmv+~ } ?܁`.2*o')uk?JCFhڭ8*%q4tt RsYư9゛ζ7 E]!4ȿ2PZNEf{Ƃ~,ew*Z*|o[PzNvEnoLOJx: ߧCJ6ܚMr>+oac좹&﫿d5~fcyn6[˟G~MO~kj_ ,){m+veQMXـ}Hārc\{"I/,n曗ڒ3r2>S;h31ʿĩpN vE#},-k St5bm~aQ=,αdh@9U+-giسK-RMx[?|P߶vW}T=!s3ʅz[1Ze\Μh_Z՞ %wd'o9)E3 6LHl=Eu #h|UbK{6l6Y cKC]5c~BH=9,lx@j7{҉꒟8w-)z38ɲ;w%N5 kIķ}dպ'gۆ)?0L4K=a'?*hS0mJK&,ZWF~˶alj8W;ZI<ØWYp*oi,_ B113Î(rQfgy O{6(ƬHޓҶsűeys;p9D`ae.~ t| M z,/ %jyEy+Զm`шEVt*#>|*o|y_푮Cx OS,(>Sec|PGq 9n uR܋M Z8 n+j/U -"a`ʦbb+]aTY>=U{P|:]uz&9Һm:"v@Z_.y1{нD6]+ڹ8)#GA\1;ZDCl-"%zl_)[^DnJl pYMYhiNY%.Om{Qz؋D>2o96-h30H*kęN}Zie,~Sv/g]D`c57f%9uk`V!&4F[D˰xs$M#>GbK(ksAk(4-C9KEnH L+ /@Oײ^Rj!QOwbLǂ6BX-lYENtFzæ^"}<;@bK d؈~ ^f+YoEie/\dX퇕B3/Mq`FdO%G;8ɻpw i&[CoPkP,]u|RA&ćb몑3<$aз%f2Ns; :si#0$c(8ER[Y3&ا64O埊݂h lDj8z})+-Jqvt_M-"P4 5SY5RB/|W'/9oR[ϫet.*"݊75JO+Ogrg_fH)+J!r'G"?7й9ot!쨵VpCYooΦka\#=mO(ӳNI /]t~g8ܠ562[:U9j^U} Vm:|#em 8K{ g.h:|lԳnЖ>X?df<^J7ݽ?Zeȳ6Ci7A{W:3\jJ')#|)nPVЗ \b_̊v,d."PY53kb5ބh/)&:gxE"ј{[[^J:b?0FTYUC`n褵L]{\QjMhB#~gT{@NA;AÆMYʳw4>b^׈$\Yj@%? 9E-_Zu=zaumÝ+G6= 4*Xc$p+}!"KJ2lVal8ΡպSk$Nge&&m2?.DTўvnx`_z]Al:}NbP> ĜstGQp~]mʱѾ{{,$|O3&&~2~Sh}{x@;aOS ؚ/.A#qwp?_GkSVm_Mk˚UEN-)--2mm;.r_\rQyc?J־bbW.?Ku1oGxhv#tECC@;_ퟜ5C*e[ *w#;uHu70} bE^4VW#n>HZ83zrSgKkav]Po$g൦eG qdkw+ZJ؇R*1)<#EwxdTdI Ka.jBg`'-@3l xQ`]&긠9 kVVƳO!eKK)r3BҒ5.f%s 78JUtbwEWxt|̴CUgyQee n+si޲~TgyHj_?kW6?`u杬"*wx}oʯ3y;eiXiXA_z ?cPc//_5$FNh;t ھOqC?Ew}O_/ =ֱaw*J.WyQ{MsM 6zrSްoEeHvvDa$J\!))`Ve]MYQ-CJ 5<"t,Č&0t Ri8N~(SC&/\?j+,^,*\ |tv_tṅʦЧ (;2Kvlu/(TC S_JMu'E >8CQ+RshLufTm )p9l>͛a;ٳ{t\]t:S g&-E-s̷Y#5Tc Բ@-I<MMFC#?6X[ >k 烯;FN4=RiX`i-8=_8+/phx0vr z?A#e?*VWb:%.`e: {oˇKGl m.\k:rǣ#6Uf6N*m^VzGTx7| 0Īhy\f11((ٰlٲ I%':/ x(;9qjr0_9مH326ayPj}!P1-I;L=;s,~B z:)A}nݹEQS}BhP_IGص[>RImIX嬚ubnd|V; Q]؁c01=Xf&Q3N5|my˷ p<ֻ2U.O1R@+ݹ^v;,G:Yϻ,i>[#yWAXBEvא Xg6w&*=w1YyTC+^)-ot B`k[VCtP ˷}OFED\4k#_V1WWtQ:帆@[ 3!uXv"3~RzVd1'HQD9by&$kS,Pu?ZG6Q7n.R UZ4{o=4^gueq)>?m4\S%nMNvhrjb|Gd }\vVnr_(TRa%l.96q n66$HfT3ͳ) ->nRP^#!):jf٠ Lw4fՎNZ]V3GDJ\W{Ar!eeQ~Yy%m8)'dA}0t'}-ɚ:XHjqxQTWpe>doMRb)FDx]Ⱥs)G/gV}y*Ys%]z6ctc5|js MDʐz$c٬C G!;ՀAD;xr"_gF|ˍ)ndZh`.j C=)4"Cs"28)p͕fM5]"lR*2Xks_I˪K~n^_N43md ٤^;pۮ{k,[gDk$6p#塣9/~;{rJ37,K/#o}s}ם7}Rwܖ 8"A=%rM@R^P4f&߾|c!Uwx!&U7?:^inPzSO=\bw_hʹۆ:**rx~v5w[}~mxγfVD;X92(K pt!h5lgLi~2E^0Y 솦!MTۦV6p%v Op}vwG0T ]q sܪs]bf3O ƲVXŬHY]H^keB< Vx*7籋{eThєel}ʲEqWN/\MK]BBsWNZzj+HKPK9]Y1E]|ڐ{"q~i7'95`@>->lqyNgӛ+jl,f\ٸ5Q~]9[^ьP|gjP$ ]$e }Y#G#-m:2;w56DoZuhw#ڟItN]kãzNhYZh}7SG¨b.6-{͓ VJTmiv xcDƸA-%w]o+ŶOk@Ag@pADj}uê" "zjߑpi{r3)cw 9٬1 ~w|WW±}1ӱ])U iK}JTueTԂF9z8?źV9ejIt8J4+.ta?D]}a{TCpz.>%VkCd1G\3ٺ[ޘ+q }DFM%WVelYuSmϊYkqXg"H-{4t(U[-a^, +ӯqQPٵ,zg¾9J)͏)YIԡrkw&9+Vy7ױw2y?RIjϤFv=s12P79c1l_V߾aT`3 S%|.~l?=7"a1FC" ϳp;}Ϡsс*NѲ T_[[taFlO4>IbOpGBĘN[Ovc.J lf%۶>Q9T~pw'-~doӭթL~,.e_VyyÏn/fɉ-#WBLBuE znӵ ڟatpU/T=P"3 iErm> /L5{h.(ьFe9 [4UvW a]jI ,Xk}o %xD t4(HP ¶{[PznTP|Jk8  G?Mr.&Vmṹ\ݴ| ŊjRIYF[1^i+3/WvЭH,c:I>A-X \*b9z]]#VUwX8ZYp3Xt\╧]Z ܳ%[mZaY`[1ҭEIOd^osx]~NF)zalվ#]3{Un?7t|u1rve벴ګ2~ͺt"uZ2nn*OLaCQT>K <2v6QJmž;/+o/G*1|_}swY#JȈ5R _1M %I%nW5>#noi7(<~?47Gd%>jB b\jl%!2<8F_YSU CDthҗjz5[V*eI$owgPo=y6o蒯̻³ѭqsQB{`\ +`o~u>pCC Z4mD3w/).9)».ءweD_`ꓮ:`J8SJHًp,߲Ӓdm&o럫I:!8 dD gDޟg[ VwWULQG1^? BO̷O%'Z-V0m>Tcz ^FP>&,1PMNtxFG#,.@8 n3JZf-RCNGoUQQuL/3ɨ pqzP_mkix'n¥ U\1j}:vBF(er`Lm&YAdAp"rB(wG]w_+zSHh}%jۈ$n+7O0 ~,|xS̆ i;*$]_[mS|}ƜAE?eٌg2榬Iһ>Yh %iQ=VL{V)Pn8`^11pEs 39N(3Rڪ"n 3IU3$Sy'4z14#S-umkM%U Uo3 eJFb; ؎OmmrO3~O؆UzU4.Fq# q]_T^Cjt r$F88%ut ϶ֹ\R iu< 酝@b2d {Eƛdccy<'l)39{+Jb}6فAfX"ޠͫMT?t9Am@:_4FH,[vCtx3yXcXweor1.A$fBD~u{*?i'GZYh\1&` S%OU*ꞗ]1DzPqXtzRMYr8%ML1B#>q+ E;f\ՃB=-0 G[z:wJI['ZE }^z9AffTz!hI׫XCD|0L a8,YKa(hk]BU՝;ɼ %GY-,ft4h;MA^uKi+NydoBze7^˔x֢+6 6/Oߛ(kFfoZzbC um>#-1,]/LwgO2Å.CvKf׌Q0ϗ/w35To`F4OJ~@΢?r/pI=XK`Ra׬bɗB,Z-"nΒ|2GB_Yv)NܙטpGx uc-rK]Rb@hfTاfZo_,1/o['È,09ݍ[Mq`t 0﹏ 6_UQUAPUIrHI%CD/r-vj8 5mUɛ Ne^$u>STky*2"ު}*h~m =F!X`kSMyx 0#r./S+2(TڰT_5E'hWD %ZJL$?0^4A$z);΁+TYYjLwŖ[;V'c,i*O;`A}"^qLհڎ; 5kۗ"MSJ>4Re=*k8O%_C3YOt oGFeDAޙzEQ{VHc3C޿<LA'P3%k;-~ۻ̹ĽѰ۵fo]dFl|f5NFZoɖ_ve2_T$h@ȗf%N7Uy+7]5G"fr9zoIX+\^=c yiY繙ysFpfȮi5lfaF({LG-Jl YVuDFʸDfygK ?K;] 7-cY^eX3ζ/ CqǬ*SQXu5+tBX}/q\%*VZ}OE֋_M2&K -CQp3 'no*>(Wޞ߶Cnsq  Gnt52iJH&bvT#3]7$S^ "! Nbzm w8~{ 2RbǞ)u?_aZdI||&Y1$UE%*~5vPӸ&p v'td:+z1exTqš8biK dΝ.$-Z\H߼Χ9ϳ^׆H>O\6%!L71{y zF2l6oYNVVF%Rju>Zùlj_ӝјSuW6iθoΈl^UD^u$qW \M-AX mO#tQs]Ai;i̛Q,:&腮,]Xf6A-H)mCwݺº_xYO%KH^gR?zqnGScY%TN(<%p'h:d3ܳ 7L!a@ю t~T3Itl|wkC~&Vag*⵻ET `l^In:S #2vMٚ4*mRr"p|׎[3Jb_l9 jX]Mb6fHHO7lX%{«(O껲tUf066}/Ϥu~\iȤYgd̩˹[!IX Ɠ OK]--U[MrIX@B!ɯ)^0| %bx1ÀEʕIUɢ,eӁBzK-Ѷ("AWRj<7ȾF+]y>vz<ϴɾWMSW{IBcj<ԱَYw{1vb@.L,DkšЮH qYWA/vVoV~VOcƱحI^f&BT<3YBw~}Yг&ە&35]$42 /Dj>铹v%qO?e %~>N@}>^{Q~5;g"^H`'uwSgWiw+{U39Ú~?DQ4X,g/HXRuVC[u7$Y691];@vG4Ķ9^n̽{i;o$ ;9{9;{um8%D9/ELjDC)IV 6\& $l˦*;c3` C K@We iy3]6lC$_5FNT9%)אy$7I2࿂ɣ+{\<#%yȪ+ϕ aq_!y[+9&2j΢{yC򱼭 9ܦɹwSJcdn?߃SQKTt 7oV;劆oAZc'=|e튈ζBP%qO!*F/D `L߲F,fGZy,buXmM5ѵj1U~(7W=-cGj|i#ͬ$";(K|MEq֎a.ЋX'%zARh8 's%,ޓ{}b+juDŤXg2lD~[ %7KiRcX*260ʾ_FZ(ij*g=R6h~r'ݑyJͦnmYD"_K4 7?,Լ*%M9by%)QXf$o6`nP,GCyJl*j+hU+=1k~=50U$_ v M^pJbo8/G<\.XLNժ[<ٙ1zm۳v"ېɗVdTiKcΈ+xx dKº>ɁZ傹T:R6_9~Oa+i8ϱKUY1YL_4n޶hOD@18km@Nu'i6; d_n 9~UY@xQ| ۻÝ>-9 bz1 [eE{zKwKU1kg[gVu<#=~Ԍ2W_f17\,N(=p;i殈 OVWeKU əIY| ht$Kz~7);٦.A: lq@R9ȱk?q"%59GˮQu~.FEbQ3$/;BެWL߰W_*ZU]zW0$T_wW͊ڪGt>-owsgJQZK.#a&g`r  cwM=YoBGsҽ7<"\q˙HdE|+~[B /5U(opr& TWLl 9O4MF[iyvs!a,?x#u CeAF^%ZZFx#Q`iׯYg<3]ÔP(%qQ(V'[S@Oa`X OR:Imu>բ{.0_pһr3|?bKu 5`uo;t659;[ګ hW=q_酔9@m%\ wHO^1#}~u/XF Zك: =6q>u XMolM{k~"6RS8*>s_FfQYX-V`ѹ\3Z/]  K42day0d`|gO3(,-mh-$ZyqHJi[ӿr- /&AiI(Pwji[ BZH{%\Kϻqwg7 ~( ݩ\''"8.x.`]B/h< LCm!Db њdzq*Hk No/qN!ڵ5ŋŹxa'R먽9^#nwmg#ET#=[|=g&>-f1 \C~O) ͊>aP/x>ڄ:V@]bq xp}y:+$x^蠿(f=S[I7B'`.2Hǖ9+cSK)P8ښ8ű:%a9y D:K╒-DI.{CZ*-"JWk6jɧB}+-$ȃ &9#–oC}t]!/Z9W r(,ZS-ոYTJ2Nߴr:*tZnbԒ_z!ids\Wv>}pǰ,3cѬ)4 }A5tղĺ~Ϻ |#nSJ3`eRz~I,NZ`+ +j!ijAi2qLw]yk1ߝD_«m'zgnՀԪk*:טcFůK/f ׅ׿ <LI%l]:%?]Vi g}\}i(+[O5n|ըn߸>ؐ՘Q_S7nq%5y>7|#OcQԀ'rC$'mUd @s 3ï *u]xGWBw|荎`ߜNmmMcѡaY]:6 s8q<^^5l|,@ߡ tJ&a;ݹ+8r ?_ᦗj02,t'jJÌύ-5\f*T4 8@s_ݏ_$_s41<؏ށ~<&(gk0;n﫬RZ"r.C2[љڪ[4UF2<fcm]ݥC8a_X!Au5fFuLjRSͲu9GiYr~N\}P)ߩ>ͬT߾PZ JNS ;zr` }/76`Y_^کzȲm-72|]Ux憁f,3 _ cheE| .Fꠟ>z?b0O(evcbk-;Rt<Ӗiiifsپ3Ն=o%{vŦ.\NjFa2Qvtڃo=.omo g҉u o˕5;j9cQȿGdef<7-`ങti?S̲{Q{KJPz~QC\F]cơ6VΩ- L\ςeIya0BbT4ɍ ^U;jn9^;0: ^2O5O8[CFKs!*}ABEJζb`5:mY\//qXH2NQR+/: MwO0Rpavl%Id#b1O?J(3ԙJ !PU}33v0a(ΣX U6mSPz>=BN`^ob_d_J61-] \;+8#xIPYzGvgQSo`X>gM`i.8 7< ~lEa @57o(3igvoh;|uHh.eѰ"W~(HVjWi-dkn񻒧vȯ~##}㘀A ,F3(m7i:yzUvKGIJ K?+B Jhr 5efA;:Xa馍Qk~,}< %83K;͏-cs2Pk6+/z D2у zS+5 ѧ.z=NdK"ѕRգ:2(eCŴBZpsf3@\Ɏg\8صՕ:{(MȈt֋ 1<3i>> [dӶSD!MS9<{˹6>Jɥ p&wo8+wF ;!'oTt}L5 #9nVs@qk3l(C%:m;&=XdZZ~l zY|&In)˕MmWKlv"3%4˖Sj ujVFkNCjE\i#Ih='#h,XSkuӁ#`;*kiG:%Hw#7F G,%M$h \>|2+}zC$XjmNCWfU@) + AIIƓ|7+"v~/LF\B'9N.c.xkKG>uڱ oӾ[^wJ=%ƔJJ+KCm5-V7HKSMÁPZݎ 5%ȪUĕ Aigx?(COA'1H$5iB~Xz/SݤG'Я`"#h]EWAs9ߕ1f1ʆI2uT5&V['Ԝ6Sig돫[;ޥܢik֛-Mb}kk`x ~i3o#ϭOM?Vn?XO:wv߂ 2A8 =Va9E)Qtv=εP moax16w\d}+tY-+O'|)GkP=Pb o% e2 mL ]GX9F1)3ʥӚ=$s=H^ԮIQr+H$RGk鼆/V/\ $$UZGmmKKTR>]对1) /eWB|`yis; y۸g]a>5ùy@SY5LO{WCހ̋XCa_t4rZnmۊlM*S ؝-2jcw]}K%%@c?O<Z$CvM^zዡs œfݕRN.\1?O9nZKSF8 &nۯ ɼV9R5-% {'dG$R:s\ oi9d#óՉ;U=t} [ ҿBtrBx-n H2sIUUy.~U#7^0osEuh& uXT u5ZsmE;iEDiawNߙ{`!TUZ;?XkUt<<}'yC7p42"F+U6f3ǩ-W勝gvҤ7FaV {t {8m 3"/r^`GquﷻcMMJ{uwA- ]vXADb_j',=~"ҧ+8mEt*ՐO?/VD/7Z+j\U:}_:!6t5[xŦԱʄGSf6 X㎥Gq>"hYc+h4TE(l+5n!ΚҮ/nYms%ik!cE5/&{ MnT_&IZ]K $4-3șD7K:pxPcw^pGљi2yMNrPM\BDdOV8u'O?ug/i@Uϱ\>SwW*〙SihjnV3[,./Z鯿bJ'pW%`IW(6RQ3 15{! !R .cK1ڄ6v3 S.> GC<*ZjO6;Ώ{[i cD:y]s, -d񩲣f;ߐp%/ntw좂0hP%[w;x2Dޠ<;}W12z3a /HZa˘w[p:^?!eZGYO N` ;eǥ<XC}vef1т؟ YYO^#wQOWu8[U;/DgphV;sxHNDx\ x㗾( ĶČ%n8'.o &O(*ZDSuL1xVЂӅ#8?U,lfL J/'Iʟ(pz0:iLPRxY4(=O)[.pnika(ĖY D>Z)J|ߚUsG'g%ːX:Ѱ^ӫ$7O!UIv[[_˳غMC[ֆKj =B\PZ08]xRYZzVG}ո8&b0 (D IeT8S:-u;5 ('b" SIG4Ţr@փ?8X_ymiXCuzzBL0QDղ,W0\d_(3pOd8ݶ* !4,n&P*Ԕ yª9Tk$\a!XΠ5hd3^@,~nW'5bٮ3 f=>S#([mי?mJ8K*2cs&u>yiCe7FgSurze瞣Yj} OK%8&.T=Hܶ6xI3ִ֒j}`4 SJd?Z:xߠ=OCYAAeA!EaVƘ}bJb uqulrg@0EdJ_+t̋Y0`ErU^uDKּ_45cG㯬#=f)#eq8 Y`b1 "83`rNK'k^k+ꈀ1a((\P&п%y{!Pg' tȹՓRv-.i>~gmpEp 'wK]M FQ,1 {;w=lϵoުfS]uIy[鯢  ު{k+~RlO' +eƑCM:b!KA^D}earBnvʯ\qW$S/H8X_&,Q/?0P1{[OWpIJuMg. *n*yS/?^3 +71رd O%j,IfA}3PГvկ±%EQt W9cAR+Tib9rzg>zv'C_EgX9c@ c BfG'vNsYg=DQW{gcڡ鮎\/u^t|bYݑ~:Ÿp}xh X.iJ%JmM,]^Х=&LҾQ,B"/=pLuCZ/࿚=l:zVBׁ[RhI#}%eSe/e=d%@< &;^7jJ: hL5l).P'Z39=Zd^ԘȪ y5!oCCl?E#J)qqV_ML"7PSOAn $5Gx Y͛?tw%c]ۖ3N +Y xjrt(Q#jn>%s3p(B[ 4D5G)/cM#E54Y V0>KW/g|j[a'77EH Qgnsjca?q\;ڟ}Ձ7Ҥ:psF쬪ĊME)C6lg k;xSQ2,>Fv,8ϐ1m9r1I#Lm=i X^^X3~X=SroiYe<GC}o=1֎t;9L=jޔeYI O nwr^ճkT.pt1gGL ~β?zxhhfq'G1UFg0-(ezuѰ\c xI$a6u{'owH(!6rҎ7.05r`?{Y]YOfW۰X }nmSPhÚ,E^ZϲZRnU;̗A"leN *v+ 01evP5![4Dkg+T^dT&; z_{2#UR@usߕ1D:oȲz=Nn#bvmCke剮PYPe Ki4 pHIJNl*=-/ RQ KqSsf0f$~;lp lCrae KO7tX(]?J=l 7Sҋs'rvWT&5}ts7HմA-\vYB!A9A ~9lDxjpgڐ/A;ΏF-v'S|k+Rs{p}pHvCƈ)a xR`ViPE@0{A(qZSE&\X_5y={Wr} g牪 onMN #-{4WuqvѡR/nNSm|Kqr,Xoc)Ei-'<6^AlBB`wZM"\gOr,,t)NmEmCB' &̲5J`Dc:^`OG"bvPx "vos+Uco<K`X'RmL`Lw\l`" g跓ճCv}Bvwa]-d\yZqD&ڌv۫1%'`H" 0}x=W7e$Gm}*sGI-oOgSu< -pl(W8>dmEaD0=|u#q춸~ &-͙ʙ,3JӲGP0Iz? eyRْC~@ haʖAjV O;h:X-]PP0*Y+zẂ(rMJz\Ul 3++7*O]`丹K ų$iU!TZ^Ȁ=Dc!T]J߸%4귃1Mx"M}~ZٽVIt.D!ݧYiYYԤTM N8J}Qw|䆥ff6qwOM8(w+p\_OsK"Mq:ݴ S7Ժ ئލV'_+TuUQ*jfUd',iDG;+˒#q哪BjjoxTVj7@;^Tyzkڝ'vƴj&5KP]1F9wx<ڴT2;R]YWl)_#%j_IFzX+F*|UX%lx$,wD slLFX%gO]{c!ޗQ \3I:T5sR.#mB1;(7wP܋l^X<ވn>U\-+YХ4[*WrVSI:X2_rCudRn.1avlpmp{B.Wd{BBC~:3 KLaLALhx ћ_nt暊cJʷoWipܟ,|w~壠`[0C')Y%NyBׄm ?_ÅuݵcumF` $fa{1XcU֎կpp?9n\`#3*:Vq ;bO,Ẫ/V(u}HjZ:;O5>ޥ&ŝag;=U' /_?N&1t@^#s BfcnBꉐ;9Ji[^bͲe=uT^Btۂ#* Vˈyxǀ^Xg`eo ]DZ\3÷ً Z}ߵЀ'<"4:x?ʏw>K[zKmGX#\;>hRuvVq?WO n6%r12)g{Ŷt8cn,oBzh9d4FFӮIT4#T[;[5J|?6R [ \9@u@UzytZϤ%Jfii1Sw^.eu6ʆg֔:jrVѧKE3j,lKfb#~^/G>[_koɶCM+׬ w!{.gN[<"6F|D:FyU5ZFW * LpCU'}WuqU>eh# l Ѯ56~o3z 6QN4QeG_GE΄,7րB r;o nIRn)DEDc7W[P‚ep }bAѶY?QagE=+vxqoj_` o1: t B}l~ HxuA Fv=ՙft}ՠj ,~ >VX:e<%k ]= 3Egǒib_Hgf*OJl g*ݭRa`< \ϧՕo'Śl H?ӴRV%nꉼ\}ݍm?]Zx6ݶ1my{mƏv@q,UFn2\$SdhAb#8"$DC֓r9Ic;@j5sqw~Y:WR_aZ?;ZF3,[L݂N`6ٝ<'c%WcNuݏY'Fzig|f4v?::_1MRloV'KI=H\\| lt>5F X31H]ֱ> +ɼcvތ98&e|av)aRV,lDzD? &dZ,=e`V T-J*7T+pi >JmeЅ.q I@NH|LTYLW› {7RxԉTBr z&5 b0f=pm0 [w?u;7nƙ&mh_ \;np \%lhp :@wPh"'Gdz + #?VsP]"z }z]xڇPo+{ᕵꫤGKv)[-VT[QHoʹ ,u;1|F5CwDbCC\L`30 ]{Skk{VK㖝Z5ܺ]GI.uv;%29.6oՄN#^_Y~O2{r;2ǕvރZBm[3c/bղ86~>6\&D2"BomN[7ӝ+m 5?,z5b O zI$>[stb~fFGb?O"O"}79Lo&D9{y+R,e//+m潎(ml~aV#w\?|z)=>o`ޮr)Q:]ٱYzZ~dkZaXpA* "W+z%2v#Er.6(ZE-8/0ZZwoi-vi-Vژbr"|1,\loEcSZjly'ŧM6sSFD 4/sUkd}=k/kXx{`eC}4 Y-{a@=4>42n3+WZNt3\*G 7kC V93I&~x~S%Sc+ly;\XOT<V NܦY&--6sitw; +4Mn;7ZXeakSҔ Le*C FqyBi-n7EMj'8`v?vzl&nrM= /kX.LP4lHNJ$['XvuFA>7p8y"bcg<(^sPʷn.O;Np#U2#y ~ʵ;E ف,րAS(H;x7p.~щhEnEBĨ}( *ن'aƦ8[7j kkeVۆ=5UK]*l8n4^!:?X)*U#SBYKvR=|`jU ۜW}Hz$┙b)Ψo~ oc_ccwMTrtyˤG$*xQ?ìמs<6ϊi/6ThJԻÎkn5s ٬L{Ugۯ)ǫz $%t(r7" x^oL=k=kOjS[7o+ylfukZbx^`'LLps",Vjp3f tLs̛݅q## _s26= j%}RK-3Ʀ͏8QߩQiOɢF-=VGԜs9%1C4|CCΖPx8U45_ (V-}}2!aB݄UYS8gJWWhTZ~%t):J~p!u:(UW-_1db4V*R%$œ=@K]XBI #φ{Aq ٍT31Vt+,c̖/['f.`UՔּ͚ڝ|dSW*`KiH~ C2 @@pd"x ~FBsp<_Dp]ꇹڀҡN`ne7lu?PƚKsoc+,Rؙ$A- qFa7)X[:[NK2/Rqso5(SeeV"198Ɔ~}<3^%@^{ae3vDkyt3U]}Vg_Uѭo1`ouKk#8{1u)><ѳ/8,&-[{npmog'ʲ74Gknd-gɗh[ڽ|S!Ѻ^Yz)?mڬc-S[X-Z᭿)џ\mk]ilpцw-@2(6~6[k\ ˍLqWW7L57E/d$xY!?gIi:>eh te?m Aњba`*? kokVi"ӪDvOCC+$ KDz|7VJ6ȬN<^Wp3lu WΪ+:!O4CMlM_lP3'+[%. flD89P(ѧ G9FTȮh\A>BG0Q)j"29@D'Kc D\?xg7ߖު_p%Hڂ~ڦQ,c_#،-6VW3JYkS3c!s͇=\|g|ܿ3vE87G\$34b0%hq]՟ԼQORSN֦kMRs%rָN-/HݓYф":6veH,~Ծ%<3֎^<⌗ MD |ԥ+27LSnimϦZf[Z3mz%Ne5(,ic{ TV`0ZWQܓW%l6Q>.z,#ߧ#+}"SE"BK|?bx?ъ,[:Z8&JBG:WsD4[vx' [يrgO"vp6嗤(F]G@G4ɫx^*4#~nM 6,ԍR}\)2Bʋy)ts*[ɂlu <ꡨ7g.K_@#ty3@@"  &h2(!V9~ |XjA?@f2&g8Vy0~djK(5wq86 $L1`&(~aQ=SJ;6A#xTj-zʏycVcޣhH+҇BDg""Ȩb g-٦i>֚J@쉲lg6l3Yƚʖhke¦MHÕ/oMO< ,C* >՝lEEG1ߪ?Tx}5IuOV!qgtkA#;ջҹXy$0Pїmqsy¾Bku>r87Noږ~af%sp#LH;y.l0zmSX/Uy՞6OSf2/N'j(NVTɦ%{7#nh̠8Hkbfk8 99[e5bghMҘm.YiYF"WF35Q#VsYN P^DkWPE`8!%٪\<֑aXEЖd3NE}wݫg6ܠG[tsexX Zruij  ȑj&/iHfCaXF-TS8!ZwȔ` k-[  ahIrj5\nHWzF=i+vHFR~|:\vS2* B'"`:::xUz6MΆ 1qJmM`?-Xr^JCP`.@H@`#8z ̄.EDoQ1Ʊُ3,4F m^:1\4%hONl+  z!~T.D !p;rBcLh;b3,uBLCT@B#y1qͰ$[ xb:Z˶+ WZW'uG0TWɪTIꁍY<4.)/O>H#j|z GuO]vE܎bdASɾBtҬ:Ks)&wqd5Ȧr1EchV$Z;+ X,iwPԲ5]Sny y1.Tkwb}>GrŸ? [SۇUZV\pԍsNvEd)(+E{$';d WZm_ZQGպ0X0L/'ɌZYeқ:ۥOD EHDz`yt#ffʎr(코 uh xP: U \:u)j9Faѷ!Ta=un"Ƈ3YG`¥cߢIwR~Ky,O]R9%@#*NBM@%I`10LA|#%䧧g#&&'fb \5oX= P-2zIC:hb+26e,+][̏쪓W7S֞ğlWWkq򵼍{ϕC`b LVF&X/u, #%n)q;N_мo Up ~/ky1iYL } ..G 7]-W9vyd=p8 !򖂖ɑ^$Z\\"ơq/~6*jؼ*#UtW/7%[CqlXʎyj$y}׽U)ńeWBGNtRf]+'&dze5D~}rW@9쮉C&sѪ /q%:Dǹ* ?l N#IW̖OSo3s|c,0ͳo:]5ǖaIQ'K5X^)lc}rަyL+NimfS)  b%sI-vqN)XBwZ3aS^Pha3 W.+T:#18U>yL!)rj%SX%akEaDLCs)p(>z*j;,B-DMHuJJNړVT- njz 8NK'7daCYAğ 0}GShԁ)7I]!ZO&!IG@|*  LZAK'rHyv}+*ߘ2`O*ͤ[+2bTLb`e'WU;wVXJf>FCK%!S_6a'W?LSв*U vgWlI =)+1zܑ9n ?Ftd6d6ZT m;UJ:;v(ʌ*vmI Z[5\ 1ʼ¶bNs庾}ljZ~i4_}b{m҄7;rQ1lԶZ<遇MW"ӚSL ,[SP8^-RFp&E҅'~^̣gfDm:sYkS#|C%c]!mP`sxEY$9w;ZmDցzFWgYf@;C@iEDỚH'j-6|px4ر#N;ER6BdxT4xmV(^TJn4tɪ^~5` gl6}^J"g+ߊJ5NGPN"-A]g2qyX%q#xYt"GLۄs8n/7R)%oL X2*ʠ*z& LJP?s!.ЍjF z̅c| .O)"_QxCiֵ/dN%4aWdpI}4t!Jg7״Ov40: $Dhx0j@s0]%e>̈́Lo|| *þKkO6apψIDi+Tc2ECQk Čyp~Er;-'\ϝ#I,Q*~,6÷ _{V5~=VKe /k5+lwC:7Edt?p"~*;4hUho'ɾh &lkJQ`aME*M@5p!A?ۧ.,in 뽙2$HfQoVx]4oKYyDzNT]P4$*';+9&IDxӻGfE{} JֲK#gPSF0ǰzKyZ}h P%UI?(;^"Re|ݝ!ՍYLDR}?0Vl,h?8PA?Ż뺯?yF7\1νFtgdM^o$j#M?([9fpū 8yIZe^ar5 8OF*$ȁ&mku&EAhpζ<77NnHW٨.>G0 !\wR"[Lo8ꟘO^XiVqN}F_.Y0%sXqIl(VY\g*t0FP~3= BPu{i(?x @6W"XtƇ>`v$n"dsQס#ȉxG;P7R (uTj1^@¡cM 8&@?@2bH }۸:%tFu,Jhʀ3*P^0a35qe;qXTЬu쵲FZ2TI2 #=a2u/ {,O]OʗOGle0\ĸZEjB];@yÝ~()Sٺqv.7Kυ,5 A1LlVNw ~z|z޾]Z S)*vL<жcr*U*y6b/ V 'm Rg]iٟ"Gs^-X;=BJ7s!=96+;YTY\)OH=o+9j/׍mlOW\ߒ+bYОe*+Ip{niI5)8?֝l P׮sǩ9V4Z9H[xyx\nl>N*QeO1~L1[k1c@ &9}فQ'zINhGnsm67V]Ŝa~jCgGٺ ,埌 ;E^ש|M ) "IHF-<˝Ps HpH>Nr`6ndS0%5-(U4ZB*P"tlH NCG/COd@6=Y ӡ89 k52\H"mz=! ӛ7 ? j-^갔:@4:2 ^r`'`tDqJ|~9?4a/ 5N1rW[+NThŜj3YP7`KZ!9pN]_c|C}בOs=]iSQ۫ub^xT[4gM5890AV;x oǴ~DZmn$ ֏/q$R@7HFNrNgIڟudS 2_sB]zv-^Ni[y/Zj!0r :ۊ ՋhS 5KD"6~xgp.R$7^W̢Uh?qn4_ОPP~U=r@Z,uSX( 4_"%gUHfM&JQyͣ='v]+|hza 1^ pf.RQ[3<.gu}JiNv];Y[VP$U#_ JЖzCvI2v叢8NvA\xy[]+BʟtDF;X<@$Mh'1R> i}jw;3(KelG}`?QF2C$[|[EA\T9o?'X?s96J&=iDX~_Z*PP@=RQP / O2FfȸOz-c~D${m&ˎf)͝&4t1/O^9.:`4: >PN_X$cvEԀ#>\73f77 =1?dz ?V֓ 3*Nn\o^יkN J3TLȳm1;?xlNN}9@L :'E$㱗;FY#b@_/;ƪDu kmY/bdrAxLqT"_·;DsЩY>F[q|qcbxnx|41LE.H*LI*?[tlZSծ\6,v&#sqfR{I7[s(c>޹X64G,˜KS?RT#? `5  X""IInG(%&yx:(Y?tjj:[sA!ka*ߪ^cj-'! _ώgJh`dfKh]T奯f=`K[7ws9&;b@ըO 3/һ^k'W*)YZ#Tpv2whSX=WBxv/(eEW$R,{ٻ9[TuX4 kDDlUTdod! nut r88aaSŪOYT:A!ph HAuҠ"dO]  `%Dr.m!7y39c&u̸ˉ)y24x:C1(}l:6ݒN'B%mG6;b}`p,j(mrڋ ˯ uD솶j۠a,dVψB ? ӭh1z\Ys s|p4QMxu 8yHCL P(J5}0=^v XOݕ8>9~kW yڗvw}bѮwhA' ~Q˩{uv m4bQ[U ۮ/dZHT-Rd3=ekh KQ~0f~m#؟uv>*-q6L6x@{σ 8xߴꚿDUiͿzhcL={׆mYtx]4iĺ_@ei^>|"4׼ҹV1S2Eթ[{Xu_=҇ 0{֕*&o*u8Xwkׂ&7rZؼ#[r ٫$Y=ynuuia&!8IKM[T<7mC[1s wo٧;v;jt!xMzQmu2[&KnH}8f1JݢƊ^wLnPZE:[0rVۂoì8gޱg5N}yɽȽ%z.M*#=&Q~K)UFev2|*W3Dͼa_9dh;}Z %m"30 @3x ؖZǣM ;Nsrwsg韈  K$> !mɸ%Dg]A/{8}Flx#t҂N/Z$ԿҮ΢S|h*W-%IxG8_R?s :.{hO`2bhG*%fgtr  jeE#?gfqii%&30Y)oE>],,].;&!Z"6kHMU"AM r}}mTN[S]D|1nSJߓ7ƙZ*:W-mL}F!|k.nmr1q[-ڽK{tmžAs bNudW9El:Gtr::*3kOXm12ku 2#2+kl]Ǽq. 6ӌL}f}&MrvoC3٢F3uoʅ;'geKӊUn25Ϝ1z4 8.~fXz!5w0o1c}].{Xj-TF3 exSwƁ2(26ljIN윓Ԇ(.I4n4i2e8 )2_幮~wJb2{|p檩Dr2i_oLPʳJWPNuz(?7NrY2^Z3FL]_D0b!tEU'5lCf-^U\n.,•RoD9),4KϟϿ'Jܒūɼ;l sH"UK m3h6/TrБ0L*2CӰs pT$!h CC8Ӡ0ma <<@`BqV2x% 0!cD/QD"JB6 D"/_?QG88OO\1:- XYum#Ӫf*EGEWT2~qU}؟⺶J}'#!-~ ?BvRﺝ!UHI/|1YE_ IV)*GILZAd^,R+|78<"sd.eQ]˹,lf]*Ja#1Pc@79G]4Oi[r0?nZ]zeT\`2MKLZ]1zX.v$;6+Z-kf;]֫͢-k'jo̵#?;_sv%T-]о4;ۥ;f,mFjʴF1ݰϘg777YgKlBj0駪̿w'j$}v߸x&n$QMbPޭVzݘd XUD2eB3#QKכ $e)xꙸZGݶ6Z'CSSIdNiJ,y ;ZjPΓ̤vTiFpSxC&Q.EQ(d^e.(nSe#ur [zn>9eX…0v+c*}^턪yҰ&!FEcܨÀy ~DDNn.fX\ n.N@'a xl pEHGL#.%. 'vC$` d3qr t m`(h_ĎŕF!Cnn i[yXDkpڲҩuRQ_g$ 7{DQ`p4GGFi> R26\Id=W9#ƪ̿TAy.*T:]R6s mROS,#lM?dk_v 869LL`HX}¨Ygn~w=1^-.4q5'ÕYF0 v3O*$t:Huk# ;Mt6eK++NYwetfN caY`Y*qc[]'Vhu/=~a#s)[ޕݜO+ZNS'W1Kz%T@Jՠ-ShCyxW*CE E,@ }K@5Ph?p'+:T;2(vG\ o  w*x' ioax6!vH*vx$#$([F\XVB~(<|젣 c>*7i6 yj {9'5d/!aчB}Dv7Qj2U/rXN77[ T5;ٲX /WIOiޮ'c>ed˜•G9CDn^^'7X8d!I^4+w&&Fii)2;/9WvhMGLl4*-VݧrvƿٟV ٢:enygn}(4Эx+:Wu239/>Pk -sUS_c4[-;dÀ&Q8,3wX@5}XYW?k6 X|YR,դg>stx{:W\/HVK$_.N)Mk5ElWu Xa}Zrd d.y!,,:wr,5}QFZc--3^ u) bgF!}h.R#)sbZٗJץ/JQ%~ʗ@qwJk/pL XCc ߳#in  b#U+PQ%;NKN]K̈}IOn&%"#L#,CձK ePą8Sa*f1o(o»]T͋_"uBui1U<^BRr5BjXrV w1kU#z;ӏzl9ǽ(WuTHʯ%5g|l$ZLVYoQc5'#7e.+ѾoFX!{-`m6a?5x\}vY\}ec[Tki?hgYj0/=f<T] m5To`9d0K(惂+o5~4&thd,g%ȅVUyQfP$t ]yK5R jy8Tj h%\Eie_z9-e Y3_pW۞WT*oo EW,(J_C/O4,ٝN]ψ~#Symh6nkAŘ/+@;&c68/p'G̪BB{CA'p\&~Pl&O@7&(~}*A1A>(:1p4ເOЦ;!cC[DuFEEE#NGD-G RشYD2N^P'񥝻qv?΍cN15ȋ =1,G#4$E:#ir szhF)Q7B<Jްke"c]uE*KYGiFŀ\/(Wuhd`ӝobSId,IuXmQ7NLeyyw~4l4oqVkQ|Ő@EW9l)~X}]ݪ;F`zkn[WKei]gi8Y'L6KXCX\~I:'#٩e=ԉ|t7`fX,1 Nr+'jyuvsaQVOSZwXwC?k׼]v)ZA4δǺOܓS6ԙZ6 =ߺel)֍}5:{տ7nryo7 W>b0ze##سyĺ& L7(W9G$j [ +E|$ m>]Ø%LR{ƽPRU-Ӕ]dӋu_5SSˑv'_WS[r MYD*"k5g%_ܒe䕆/YobɖgOSׄnDF'ńET 2QxT1U\x[YqE;%-(H t`ol"쯈ni@ ГL@Z ,7$ՉlF@BpnA'ļÀz&e7z7jƀNY # &ȏjkL&ޢP(D*n1J9p~[i)epwvW'X7o:*lou5.p6di:FG4ٗV3 mYw[ċI|jm3.n;{fQ*[s^gֿrikL'gfwK pfWKFHʏ6}%AY`<+*X<- b| }] Y^e+.vy |ߺxFy~^nu߱7۵T{6o$ݧYF_WO埵i^sH>fZj\nvmݯrRTؖ3LUE-EzE#Ng2PFRYV(aj -CjlƔXz^oY$F)L)M-kӯڒ}xL ֎!bb) U@d;dP3[ZC(4j?V8V{V'~p=g_|{_z>y% OM{v@9`fi {wCƼԲ<ްFQ1Zqkd_Y7nHݪHoo#vu9ҭ/|dQZTSܓbyo~S\#*u~o VHTyCOGZgvB:NNpvY/ߔ+ffY:4?;yk)gRzZ0V k_ImʟLIҡx.2-Ն)v+t8maOu^s t;5T(>4`Ճ6xPMhuFE} vITOHH#(ރ6$}W 2y<w7C` Rq!6#\=;~_E-=_o͊M& |,5U0UWΪ*!#r6^9obFUls.Wq mip6m$ ɏnxZ׵ZN3˛ƻCw>c.[0Ct:t?fcm =YQkTLsKfSET@R̫RzlN9M:J}J $y`Bz22ŷ||^sx#r|a8HÒlKr.kMEҹH?&EC_앳`Nc$#h`V!Eb`.Z 1 ??hYD7QoA8gx"40 _?et߆q šhB\v)$$B!dltc,H6@q B0gfΙ3yJ R' }$"H!N s2\O!:h%xlz"G~)׬ ^=7JkzÀWX,b[1H AIؘ;aG \̷۠̓`l~ 5@@ xzl6xp)29Y- ,Z7BlAMLp0'|P ~<}AGP47ajd/%qjo&cyyYYYcg&*Wfge\Xh -uFb"kGv^TPSڻ-?X2Ӈɀ&ٳ?PEJtRm9r}'W8HSYRMIuzUD-яVG G5j:<2aK:Pi)d! oHWu 6e+lY־o2nsLfQ}g|e)E5@.YNS>[:c\vs?_(Y4ػU }-W)*?҅2(6r캊%+4-E/_?~eGO:HG#u1L^R{!LeL]"IGbzi<5\WtqsY/J z<:YQЦ"[?Ra'ɰXu؊E0>d>I8b}`RX8z?HRQ1d&GɈ}DF&r'9d6~R)9u'c/xy!CL})0ϙA)UMDnWTxa[4E+*1m{'Ev2F@As&S>t 0Gp'3K +d1 #;B <{8> p6 6=u T&*>V~kkPQUyϷ,2, j B,p˧l=1IFX*TcPl/C[J*tƷX`Yߙ.G"scv$$CRPzHB@/h/wp(ӡw&vEh<5kdR7#KbFá ndT fBl ` PBAYpEL `^ yYy̠knyh:dPLѧj]ZWah>7iϫW2нb yz>N)5K'z :GTj+ %rɭo 8I>Ul2X"7HQƷve=)맸a|X]fDͅ*ggݠmeٻ1Fw2/ÔearZhu:kyN&ͪHKg_cl76atS?65z7j9>٘mt}cyӗ~JGR({gJr;^g4q>a` t#9=J5d;&%K16f2[,Eh9-|+U.bsU2P 2B$S/9a!CnÿyX28"[n0YV ȋT\P*KrxY{Ѝ #EXB먗L%o 0_Al&`ރ'4 h\10]+ _L"OcQ7Rzݘ7DJ4#K ~vuF4(p,r-Fۀ 2Mp>΢JTrw}{3OYޜ[w$._4m2O4TSSw2>תNk w5e{DEi xՌв)\r. Rܼ*g!ayLʟNx ~2w?_#g\WrcɣB̶kr?kkmZmKOKIvj S? s4_ٮ8pT5%շ+M ,VQG^*ުEZ [|_j:ocgêZ7ͫ[{f#ٴ͸XdAJjg SkQ&6RjLJ_!FڣMCS {tz$?ȧ*k-ycʶJ{{ UO5[we^]?*v-Hn nTsYX'm_MC;,fTTc 4T *rzd&}@{΢˱|3`;0.$t5%!7,#CY=Ŋe$Fj]D}|d"9~d(Ԓ&!FMDy%9#:QC]•- ywwwܐA rJ}dMa?P]8kO|B _n/ƝA! H`[c;Hf, z< Ó 4M b ka9з,_jSN%>6>nt%8 p'/HB>+< q|b%,j[Vf G X G,Ցcʶq.:ZG2,Q\]?%dihw3#8A?`( *Ll~pyx7#?<5`kiSGUmvooӵ_UعpȎNr;Gl9v绦Vn^!-Y9՜j8ZbbMі}9ͅyr~+o H0w- qOA,I=1S2WԴWu aWQrzaed+{k'CO5~1IW.Yv,Xc+Tzݙؔ;bQމ\tA%SM7 Fdh.^8jնL}X[]Ida}34O4k٬ ]&[QުH/OIw;.0S?_S&gVTr,Mfd4G '}l FF `=|hA)詡S# bq VC5ч~hrɥ^r!~xHtEK,#cHBML{3""ZH_"xyFE[0 _WIەCUy*AkYdn{x;pf!3pȀ<#z Lx!|^"- maUwD<-E x܉0gDqٻʹiX7^G-!<^ Y%O<^ڍcn,.ZЃXJ{ܕ‘P`B$iAO v%*޴a{n[IԮRQ,Ŗ_*¿%X@Tלd7#BC=þ0$y?x_x={܅6!Vx>0ScR~:MIMW"G,Y1Ck.-g7^2W*,닎T:75Ѯu;+, ꂲxeyw3wR=ak+H(/K%9yB^O0S8e I,'vNV}W}Pu\Zy]b?_Ɋz)8)*ޚfsi)YO\zMY%0! fJs뵣uQM"Ur@tX\MkwA#2 vf X x,P!oWCzl24JQ9| (Ɂ6k^D'kMq{45/"zwoTa2),nx(=VH.';'_bhU_ɚ&b'3QuWG,Pўo&Q350BO%2%6-T+єKAD'&Ch8 # 3+V:ZaodqXө^Kp CyK%FB&bWta>l2^Kqf{h6t!!~)վY><^Sr[6DYmeyQY^ԂAP5t0@t `aw=\-k H0&Sk9k"֯m fW}vh | \D௰ӄ"Xl9C;-؇Ϝ )1؋?/ ]#w{2H'z:h06~FvbyxItQL:i:6j8^'d%/1~&3*^߼u_W0HR^x1S $*HٟK5>e>aV4'GY,IٜCd > `ڮ_w^=_uS@ 6UVn|Ro+ʾ gȧgiLEKQ"K Jn[4mSB^Y /W շ̯˪\ܺi?5g#xgwHKrc`\X#U<KzAcycbdb5&( 2ۅkݫISI|xaq\1+\eR5Y~,7O|ݘ"Mw?omօO;oUԮ u%²5h}.D6qN9}°eO 2GH.q 'QM3ʚkq_4(ƵZ-p7Z7Y_Y8BwY84k,_|Ox?`K7%`cx7_CSqx %f+B7, "sVGE?t5oQ2K ^!h˱pvlzƹAX! 3 T!cr"$ -+Cw7#ˣr"9gWu+=$쀄"9">"=:zKwp؇JdRgH }ix)}>EQ5ȅS80FLFj<˗% V0+EQm_$~[O!Fp(j;SFg؏hoHVȴӁo]{YxAs;|<$YFT-1⯅RLm:yKm{l;C,lҐTu]3i԰(G<~fx]pX!OՎ/Uk{jnu4k:^Cb BK4J[W׼N {5 WQ7gOVmݛWܮ5h̫enMwo~6p^lKW)D{qvBqt_Ccv Vww,+J'p6ǹשXw;lol"FaaUd4!ڛ]BF>E'R_餓tPi|Iaj"QJə ܆Jt"Sę׻_o?נׁ340 o_5>'eHl )E!m̕A~ȁv  &2MC= BnzP觵k ]Z;/,'NEd Bu 3:я}g*ΤR}㤋::Ho7C~$c:7tEwT׺޻~c)!e2;.XA:"5! ;emugΙdfι~=b3u%I!psq8{zPʅꂦ.Y(xI@ކ.W;%ѡqJ}aFvՊ?L?Lo7ubvb5U^k:do05ZLCm7{VDTN4Jnez'keFa"qnK9U1dƷ}J͏s.S 2\,-U=dKMo5G3+~e%M~TJ3wܙLh2K{k'()9AYcg(wUvj:I[ |$S*v6V {RΨ1e\t#'dz3j8 T pl SZJS?2"*xOb4q#(fpMKLR*u8Nr. 5  UTpI T9D);q\olYog_wy=ܹwzA~nއ 87O1WInI39l"#au~`._=_c˅#V71vʕ߼|E~CB|_h;t?[U0﬜WWj]bef[BjW6Vx7U` K<79&&嵶V];YgfXMbՅpGlijAEw稉Z|tF!! +4%+h ʾG[LD'PnT I*CߧexbWI[rf8maP: j@3% `ƀh%|F>KXe4!/ u^,p"{yݵ\<73+< Qx5!'ȾG;lkFc<`'~"\1t3W?hzZ|6VFo$žbՂUNrDa I> C,_< R~ؿ&Sja)*6Q\fƧgwYBC(D}sK%'JDF:p(ao!;Sb-B8w @W0A ʠfpA#G8 8(Vy…:>XD8h"!V'9|Ip_&eÜsR bM84I#/T 6uAu~nn!Ři2֯F>jCJo-_vkCKujcqWU+C oZj.לP!-;1W3n}uչ_Rgt3EWt2?4ӒGU2yjF@h|C6RykDD@yHpjnO5=s(,T(iޤsk :[%{{U7GsD>M:8xT1{Vlxv_:ze-דlYβ+&oɹ!?Vʧc'ovw$;h8'04N#izo!|bΊgsm ~!Gt=D 'ГP/0G+[3x$~ :71GpN g9챜w7;KpYTw'wA8~oT:R5}?)poD눗 >%Ŀ|I$%Ehp`VϺEi6lPh&giQI@v4G`\ )̇Y%C978\A?LhA&4- 0)l >jj'*FL 'H K 3G(Ad{P _pvEȌl(>8;Dv_* |kEDym׊IVzyv_i7s9EU||MJc,x[+jKGg svP? vȶ)U)oᰝcPdKNkl.w}UiUu5Qu/c*ԴĤuDEc.n+e|EfP_zDz5EMtԳ:>iv;}sS}sJ]U`w=Kys<14\UǖלT,i/j R_+N{P}彳wV6xtxX?#$A}F_(,wSTS/Cf 'FTQ];mKK/`O9=wsc<}Q%f N% & qx8Ϗ?WYzsøEB;DB>lra@qP?n \ߊr$]~~;Ew$Ko/e|{9KJD+#8 sAV/4B4i ,c!0Šd?p #ǂ\Jy0 CΤPr`!yY8ڍNf),Q0ރ ʁN!f G [a\! &TB8@GfoO4qcCLOb2@{b:T#ۇw)w>'1?"[&ĝ{'@eB%} w]4Տ?m3+i6%I:5I٨Y#5rܚ_V,an2UqgQJ6e͠5-vY*2Urg$VTmj1Z$&GlQ_3>2vu7STMPҼ՞){jܡPB L!1kL ϓ_>MFK?MpܕR=r٬02~kmlN3UjN)cUqŦw}5׵beuשekF&Z ;u% {'-Z\xlib"PU1ȼ&1 D!0thPp0$!n|mfA.*'S( TCf1,W-9d-ݓFLRy8lS}e31g7߆F *p#x9Thx 69|1wg73ϑ;_ G|j4FB-W0$NBV8B_Z; _}>eNf&9(EqwP@D.%=̊wQrfvBtFPSALa;KR΃zj.y@6C#ݔL&S.D0ԐZO)iA=,gT KU#'|cLl>6@ 4 'BFd2Et#, ZB{".z$3/٣$_bN)uejqC%k.1dK%3$_%ל}ўN:٦gm0 N_t$A`aMek^ 4Κe Ftn^W^is | >gfWȗv`ҙnlKVAt^< F K8vQ}ȅd 8#z.`LU>6oޒI:Vh+kRqd3dA?9]>ߴG}Ww:j֗gz+R,P3zzjbEIjf?Tn\Z[bX[~͔ajN*JȪs%}uSµG""PT>F9}QLZ ZԽB1~5(k΋bZ߮?P[lAQ=/`) 'h8JMaJMP>GES'-8*ߣ.L$\R"F<GЈqpzʹ< ~ =TbB x c2<<4a _!ptBȽʿȏ,c  E^3^..EfDDcA%Y$LȷaKP}PUG'9rXtyt;_:㦤uwxue]TZ.6DٵWV%$PQP)"HCH  Q ׮+UWtmbok/NNNd;o{k\iV@۪Zi/hvO}pCRZwR+鯗_X N&GSRWc >,kW^__S_,WR1AU]4gH hUrg9BO؀ml~Q)++2yuA =U|-h:\.X 'e(xC- /`&Lz%v\=5 4OtJBEM $ NPczdo~'ƛ/$ZBAi"`ÉHrH&?}3D.b a$I~'(\(G_GEKzcŧibRĄj c(3D C=X'J՛#t OapxKsSxF^{ ~i6YcYp&=a*]h82]4 d;t @= =2?G8 EkDa 47!. ,w(MFsDfPOz^x/$$a{3{Dw҇؝iG ½Vrq_{ OZ ` 4`8.bQcEرOxv$f}2pW̨a;G-ܥZmVP;O{A]}tb6Wlxo7*̎NS~8ْ`phm}!  vs{^VU]XtܯD%*ϗ/Ϭ>YR7J,^!߷ 2RU\4'+G~~6%_w䴥5 -PTVUqF?)3fA^@őC uZ7gvI-iܸQoI=ƇeMRrLYJV}Ovɫ wл(`B.[+ QH8i/&a9˘HQ>:Dہ0pDh}ZF.|&/)/~ i GPqV8:F P>#QG\FEv5d+9CFݷ[IJ$Dj* caA_r(l*Utߢ9HV p$C%5.Nx%'4'Ap!˞f ^ -D~0B><[z $1 i .DP;\ 'P,dA5 Vc#^IN'PFؗY\a<^)"tJ+ߕ8]ԏHu1յ}OYuEYM v߮du74Zz<-ۍB_egX3U!5SIˌM-{-[4,?x GۗZm7mm%vF[SHӾm֪d^y wcNQ5 S]Lj=s#.E[e ZgKnRk E#R,!#2cmɛ&amjOѳIFҽiWM%7^T:-kdrrUC;4^]{T{)#qgEiw܂ܓ-W#6"/&$ܞU&hS9){͕Ȋң),}~g F0t/X "_f$~ O09oHGZœ%(JX*ÑrSo`(Ef%,Y8ʯ/hҏ/tp ^F72ow!+֩C rKSeh7hnŰ\ݧ:f 0 0ECScEu-҈Z9vO7n\myfHM!0lcbqoOC*=ؔ=(nAWDCq soVJ~eM󯵵nvyS7Ȫ?4TڜH ?ؼwպ{ =mZʧ5[K5 E(-)%ڊhk e岤E9:eWs'm}#ۡ䱬[^yqObDhmF).\YR)([Ql*GXů'(~\|Eq:"[ A(8܇ax t"+hbxWX+qonna2V!!X E`&@"W^|RF^p/-$ooo6̛K!6~5:*`RXbhI\zDŐ}Hb1G@b&xcӈynq\2HrMR9^V|16 nR=qNc۴XYvǣPM+^';9P3p:|˸juh4_s3"|(]$f0+;YVOn\"x6~p:H4i{ġT#$8\`&C_[xFa 2,64䃊<|$k#Q@PDu\2 + |HD(q#?Q ^)9̢Huڽҽ7@*Nb1\p-vPm_2N)n$;G { D1hu}Dbp`!gV>e8NC?+r(ØVt} =ŭπs&\`<4@[@6;蓠'F+P(up.Rlb>|b娥g^>XJvJT KI\˫%QV&"Z*|Dla@2uʵ[εFPv8s _stXF!|5J ҄R S0,dyyԳozgrOA>$ft?DP賢)« tLXN. 1\K*`rϡ dSś%Dcmlc`6,=;Zh$5,4\NJE# !zIZRs2Dz銤 Z.IVl{Z߉MFjwWMӬ^YP+M=ݑb?EV¼v\9UW!hՉ*zGX}+K/@ ydrSOeŪU?+TZ+]vjf"_-wFn^31{#wEoe"0rB$ZB97pQOV Dvpf<It?8"">{  SY#2WL!RRREPc* cCr$)%8ϗ)F8ZH|`nƿW)C^ F'ٗ?f(ZJ/ !$B&dw |{ 70]hQ sV C&xއ6x ~:0'!KK9t7ܿрPwg!.s&kf+y]䈧dD!^=JӭikU3 )/դ;7I^ᄊd۬3-W,YM9D!>2Ӽ2>R7N/?5<226S?yp[7n\T!E*COS6*hO7nmg7Xooz8l=3S|Q*峕T va[WWCXy逅gdu}!#Umyuc5=Ko\hNZ̈cueg nf'eDVE,5.uO}R4Vnd͊qeɞ y|de2EJ;[@MW8˞VSvo+l/*&\ϛB^> 3`:) ?:'z0qy nlǼR8&2E{KEh`*@&do:qTBv Q'XI W :C}jpP$Eœ7r _MR) kĉ^w<'xyxy[mG> )@(X"+ ~a*NF W^v0~LSg1B= OdLK"ΒL7vsy Wv .q)@"pŜsW3 .x .A{()t_K8-׋J{3'~L,^@;X|d_HssXCoX Ƃ='W}=Cb[Hpju>xspɖ} 5?;0+AJ!N_he&1Bb+3;+9/x.R2+2=QXщJiec{cͥR-qOkPC,lnBm7n֦:j2sjSCP_?d0ujt;ty%F$IV7J4 K7'\AeIAtD9!JVi7eo9`K,X!X^)ADCB6; ruED[EBK5ݼG=r#rdj [ZBV yvRtȃ(.h -b39ًp h0PNDzL(g~yrX˅m'Dgz7=s=[$ sEc_E1T93=6_rպ` ןek|SI7=P@3=k4'$nc*f23=܂ޡjFsF'`?jY??q@'6w=)8+XG.mB հJpLQ'ˤ0K5Grj/aw Bhp]8 ~ Z(+`"Nț;A X ̂ ܆^AA&:_87 Onՠkp3PDs}:څ.>8`#(ketȢ\ ̆>$|:R,,}Z4:ϟfD &. ]d{bmPvp)"2m׭b5 W,sucTŎ9˞U8$Oe|I&A_f&CT}/L#_XXdtTjbUIդRQ|-˺_dQ2*&YlxnTɠJ~[LTA~$̪,WMˍWZqNy,Jk/!I\i8٦T{?J&e)G|hilfIZݻb˪)פut .šX;-)%dm3+1 !!=ēnƑP@p()Z4hw޳?̝{>0}]JM|UmkMzii.Z3|ވ]9acI{[<@q!_|#| oNLӏj\Ðu@'8'P(e!kpwxVi,Yƶ|St|.oQ|/'vE Btx쮸H&/*΀=Τz8ߓS4(E<{(}U٬>go ~x%o+!ݰ9D.XL;h_p<>h!nt)UP=`9ҁlsp i ^ع>!'B'(X;4M`+ 9~\## G+x)wԳ8~!3|+J؆^mhVɸpV!;qOp4u{v#pw/LƷqq#H=%0TH 0 +&UN0$ڃ/Vݳf?:QVnŰM *TT<7#9W[StYX^TU8>:O9n;p]P ULsveՐ_QtұĽsAfiQcvyYFM헪ښmʻUiq 5^hHm mT[LeIn(wƖS12y-G 5)( ֵ:K2ӗJ믝賳W]9 fI2W~sî)Sg\ԜJijθhg-铓.H\l( I"6!>(iEFUyܶ-L-r-3sⷍ}fl$Iz_Fq `ϣi31 >x0Fsq?X2Ϙf7ll)3݃h!ި jAT l3ʜ!!:wW /QI8$ v3oDpOU-ZTz^W]R=U)ܟ7);(=Qr0˗XאI&ҕýzb}i ~?'yd ٠G%=K% {⃬/*[ 洬Bv<`0l: c薐\~??LۨlhMEޤ*|G^Oˉr,z(z`O|֣(Lq4~B(m!D5ρ`b#It#a4 ]s?/SuW_V%"2Hh?w 8 EKEL |-- 08§7 ]F7ëq{M͸UbH63Zގ>?ce('[i 5P~\+wpܡp+*f{ V]NP +\29A71ܳTM >듻jQ'(Q-J9or@W>rP2ةF,lV͒.:wD48/8F ȂB $^a?wgf>\ӱ3X`UR-5󛔧y>Ÿ:qb A/B(z|p>fP-Yt!T ]Ǜ`:(DO`)KpmѧR؍ !k BwA@8fvxY WDYv\1$\3N'\)/S^sr,*f[M%y9eweߕʓR+KJW O2ªF=ʊ'خUzUbvRQYRJ_(^\>RglfXLG /Kk'yYϛퟺUz'{>.909XԥK!-0VWe6pr؛Bm <3(uap!6w  ϒ:|Yϯ^2IJvHgA$|8?,>dzIDwpI DM$RQo[o T"gJ|x26BKy)gɇsR. _Gg&_8.&p $ }ZI*7anB7+Ch:i:-JvEu Q߭mdT"z5Ļ673ea eSz~'8g&?/+iכ.{'\$V`5>LGTr=F_Br NHR`F H2t$pG+6\# BZ?'X+[AsFvSRZ@C*-wvjp&.eQqDz:ochޖ çyʶٗ ]Lͻ-?Z[;ZO[yf-i 3ڢC 7YiK%3ss v-muEa[`fu}JJ+V69> dV ?FÌMmaŹZsuiMM4nW^g?Tp+嚲Ua?fO2]5keZcE`/֝%Ҧƴtq#aKmTqXWsrC %9 eTĪ oݢͷf|L'xi-> B__Hl9iؚ|87h ŃJ\&pw+'lq*jQ{ ZB8+oD265{ @h E?ѱ\&!9,\ex >#y %Pr5trډhҞ$Ox10/ޒ@ H &]9Q_@N~ ?A-%9 ,4FօLfP$*vqk[7 =YkGn$Sݚm{>,~jvJ͓yڡFeuuҴ1Ed9}gߒX4شĚc}f`_귘Y !I?&hMmw93A<`ag9)8^/_=~Q^YYRe3L]~ˬ+jx1A?T\ZQTcvծʁL&(% F4Ļddgŧd䦝}uc;\\X.̌FDrS8_Yd ֣L: vV|<v-6A9'{)XN쾢>N=@ *lFֆ])ݔ'UN7 _ɷ)*Ǩb<<{L>O!FhmM,U|-8S]$?Gu"#WCN@g.sB '/ FKԃwzol ^Ѝ =&#u -d2i܈a'%q0 4MiŝJ\;$kJY2`C&g xԇy e CK2_ԏt)bWd9HZ^z npP ).CA*$RCn tnX%8Y; tRI,dFRͣ+H,p\4וQԱ_P'XV+#t bJވҋ^2sBO9&*Hz:=;7™;~a-7 FY}hu]<&&ɘ<:͢qB=( ?8/x~qyӶVoQ $d:ۏQ\\fCTQ݋Flcu:YoS?,HOӦt7D "#c_vVcP-su$")kɯEwE^0vPQIK#h 2.VdDkNݚ8}@JdrW ߛ efK*򪳪m}ӎČ`Cn`ޕOꝹkœtZbQtp*g"bH0YTqY j瞯x-Td[eDQ5J y'r3]xxx,E'\CGrߑ\w F!LB9ȁ 5p*M "&0`vvFm%T.h쌨EtB"b9(# Y` 9 .?8+y-e0^\<676u# dº h !pg C:8A/2OW&rD 3 <CG$L#ZF{T'4B!t SZ 0.14) $!IdS%=wރ):#$+"%4 B{ⒽF VRCK74|?op_/;g`ɖl=dn)YZ--=cOM-ؒndR,-.AHkzXZkhfpwei=#ս5k\z}žb+gFO4 $O36ZoVgn^Եt$m^s56Y[rm˪'Sc#[cJR)L*ʶ6Wu0*]).~qل񚜣E3O3NJHKIJ` EϘ̉Ř%8(4{!/Cg2 C ߁ $6G`'h/EE/S(R> d#j "V+ ;Q[h=Gp}8Mn~uy4>pw`!{CH z&5wPT[U|D< җ0<Jpo+p?EaP\%;H5.O"x*fgov;Nĸ . /RQB8yYUh<^_[^cFlflI6ʽ `&]3G~5$/HB~_a/ y<\5IR!i=Ġx :Klԃ,#3xՙ\$N ;{c/HOʈ$MvJETڑ9%e%al9tT_Cл(nVKf F2]zp-ֺY7ٔYƺ:߼E2doo>glnc:k^bgcqc./[grNњ$&׮g(hW|Vf׼&JD\xFA|j Lӑt~IEx@·\,dRB4D&WOቕh>m=l˗\ehZp*6/8™w0':.("r_6#QT|.-U#|y+tE"npv- L*dZ3DY,AjE+-`9v7ؓ8ړԙv Ua7p#FȘOts$b:Bh BTդ`R$;ͤAB;ѱtY@ KrR7 rWId,.G7ZY&;å7?9*GX]kKnerWiqop- ̍OKԑ=RMRnnt vgE6, K9ξl^Ňʣg7:ن*[o2X6?n*'m^иKYzU-N(8Qg/э(I]VW!$11H򝨇KEF xmc0碣q` A\wa s`)#2*x3_P ^ KW TM~ϱTWOF//#LP3}1eT2< fJQ5>J9" ,s 2?y%$(>p3| TUt^WeML|ݢtwJ=  vS^;a>4;g{\p8KPGDd"^dL|О'X9~*e"Un-V"kQy3??2$;@-~V;Q}.,&!!6(郉*7o'ѩ_lm鸉D ȿ03*u䅔4/Z+h[iw6OΪ Q.l c;}ļ{.&Q_FSq m=0 Z@"$V9 /it7<}U]'goam^JJy֡츬[^aԃȉo"|C? ̼0AnTA^С4 |S>!PG?Iq*=Q*ҁԎfU{IH 1M&/+i25[!+Z\s%d2!&!0_ ׀o +q>R19tP9A3P,|{#(o\'wsP8Kz T{@VݴESogtIj3&G_5cr)T0!q!L F1MXS_%yb<it4cwG1P>VS@N+N;a9龜M$\w[׵b6<1uS-Dړ 3]  OQ>FWÑvp3܃o;D ?P 01+jRy:1'k'Z1 ` @&*S*I(~_5N9U]x6}>zUOч&Cm~~ΞfMU%u5RDUv ?|e~_UT> EUQ?C0CV[.j7 A5|Г- r Qa2>#tmHoDf'e<+>*#'1æܢ}xf9o'eݽ[dUMK=$ۻVsX7^ 3+^32 {i~YWي!3^>,.gS] s44w 芩祇LvF{]'NPWjh"<|듵#kL}M v7M8bEF9[3M҂={n6ȻUu)h©wG*ռcցKyOsX׵70"tBmHͲ][s#*/oOEmR"®FβVw7tcKNsC|B"D| x$WQ~M2JRԅW|@%u7U;ZOSL埛 6a1x%aPCB_t+H1Ѝk0rőlMz/y%h%E+kX #i%@J8 S6< 4fMhE+싷q7yz(Ni bpT,3^gŐt?"P Qg {:Vt ɻv.j\QnVC1oF@(A7zڈG h'e^.\5k լI|>ᱏ&/;1*ϱSgIxyKMď꛵C4%[&_YlכM~_W9((\N13Veo5F?Jt Կ~UޔFޛlJWMM*3N ,7Nd[B+ە `EuZ̰lYͽ7]9ظ.ä-nK]NA w_}lw%RFobۢ_5#ʭj,JIg}T?i<#mxCZbIZ*5K":Eu lt\.Sq V<\uF>&pGyw2 !2 $BБLFHf)ච!0\H5$' AM?P3*+ATT5w"t^띒?d *GGTѓ_OhO?R)F01_,ٕGIԋӍXW_i1fcgz1%G8]uTxNNaOvBZ@W/ K O+ x±Sb rP+w(o*z(~ȟgJI䔣4[^^ 臭$tdh/D'҇+yͯ1JG 276P|=ְԆVw!a{8(h.`8&a]:;FYOzb{Y|ţË7uɫmZo~'a_Eg7VVN-6DZmi jWZX$ FV]iG})'2%=1I3fHOKtɅ_Ym:.jI`_ow.25%*I9W?pnUtzAW/|A2A5k9 e=_\%#9sWM"HR@DY?8: !+:b7/3T9|m\a*JR8I: 774 pj}S1fӑN螿~þM ,X 9H!M:A~ qgE,l pIx[-vtRڲ؋z%8Sh b&F%] Cpny#I jQ&zsu(xW65}xЍϔ\#-pdyPP,?q$KJ$$m%1%Lp! YYY(RR"fiZ?Jpo7R;Żv<+.О_ƻ=9(N5oa[X=Ls"EІwT?|7.3glTT6*S-Qr٥[nWޣxgtS6UmP|;kVs ܘgU|_ .]Q2frڻeWK6%QOE廛%Y~MF _ܪ,\ur,^--Ti*mlSev@`h_rxVp.q歜qP’!s#2?nr}mmkN68qՇe'&Jcjp{iΕEl p݌g8j{ ҧ6pvE.s}'0|ǎT'.C#]@[H[R8ה:!̏P&Fz}Gځdvާ<6g)qn|8|%5:޳8wI;[ y*: 7SrlC.}yZti9%!0YܨU~ULbDDNa(=؎6u鴎6SO1'NeCaݙT|>zІ=K{qM0SxiI+# vl"ү,@A ` "I,EkO[1ga^>DI+fO>+CjϘyjK6jQinsֽUSigJXX/'E~1_6/&[N֧7ռ+=a)5ߪl\)-֏6%g wz;skOS؊.egK. FWS|壊>~FO=7lp[P*۶cdCFjplfa=;yj&=68$oL_kSMi[ ךOoOOʒEg-;2z]vEF mCiġb(NlH?r bA)0)<4Aoȡlˡ`-]Z;I7_9#:ZHNNxV J!Q5xx tB2x3a⋋u 1b?ϡFc& Z<K ;8e 0bk'n'>1OApx܇~X|ip;4IgJL,8>s!=E̖ cAPF:Ur\1F_rB2EOG>OI,N^[C0OJ2y9a:fxżLV{' B19>9 p;D߇ (yЖ~]Nw`-A o utڕ%dk]OP/ygGQŗdOT#\:.:|a:N h$teYh-9[i[u㥦3ݺYo*Z2zi%?>)k-T1xMe\}D槆\CNi`Ūӕ1esK4[tUS޹MyK o2Rbg7Zn.kWZZ:Se [А"#cðZǟ _ϰrgJbUE~RgM!Y8{ź27.cVV_C>oLr_8ILXMa3 G  t tWz֡*\D"t$?A)6 )*yڥ !ޓX!|j(nV٠BHBX H8+wL [*Å8'oֈXGUG[1sv;q"k'OIIRV5VOs;~xvFk25<]P<p$gK-$Q1IT8v/"J=e-RUzY_$n3b k=lx\U0Dk\ k_fh!U8 Vf8O2aT~̙֪QIq"ld/pQ~KZ>LLNJs_Rꡪes [&s bbc}D :7ՕZdX~¥*6&R^fYhY]]Pe_޿0ViFYXiQ4+o]d}oV=6ZmyV_mZ?Zkf\y-+WGWG9xߴ`ocQ޷"Y($oCZbiӞMWwlco‚ڜмz۬=Niꛚ:-1{JeNݫ^h;JT]2Y)!krWbYr/E1d钐@amg.<|bKI=y\ 98)k\/|Gdą;d37@Ia3 ^>,C[*eY+Y(hJ_{V3K?j%EL t]}|wA"u'E1ww7.;˴_'9W8m)x i::pRASd~ja<ժ_cnHbL\cazϮn\W8CRx*aH2k\vt~.].'0ޡdKLnIme侣LTC MexW(( E ΜM<@{\ H(b@).%~ʏv3>}?X'ӡ#Ad_45$ ##l-COy2߆ O=p} j\!f( a J5$ [3[$,/0e#݌g =7֍ף]ӫ7 yAG@42>yf6-MOM_mUͼU %UIMӚ+ZoZ\c*;W*ok uV,Oƶ^NvuCYcѻ&(VZt1b˚x_5aF{T=ڣM݈zo]o/(&KRoz ݭY YS3Xbt;5 K 5Z:f!ndm=6 ɥM-u,\hI1 ϝ]/?,KIk2YiM0/{-oe&P>}Wl΅X<ok&VAq+nT!_!oxEڑ: |_̇xGy) d nB:$W/5\I>M?BI$LS@|7k *jx< Z'#E+FG_nD!,ih*΃Nb GO@i P/&X wp't#a YyBΰbm2QxOHJ1Q?pTcoG#_~ ' ' ű04+M_=:0|WgXMA=-?EExCÐ9p?ᗣu#JE$>,iihfDn=d̃JJh*LdL^h Hb|}н I XRZݥ*FC*R}:F^#IuHzvCˆ +vftmm7b3s;#ι!PzkMZ@, -ezj\Ms֪"[w$Lul*ZiL #2#rcSU_Mn}&VD[eg+ed/ )E.ks5kƦKRo-H:29}՚ڞƔ%9lJe6 ~zLa(^Ya(LX:ÔǕ{ەj3`#cx08 ގx c;xBg71d&6C6C' n+ˍW]p̌+-F LQf}Np[*<z܌XH Alia?X P q?rC |[Ј_kd a^L%nE[*o\ iDC-D>dPK1 ~P&D4> Op%WP g_gQ>;2~;JKt ڍ8C,U1rnM>lÏBBƿ."TT/t z#rÝ'ޡ2P߅6;͜@r` x8<Nh#K#!HM~4-[wK[X\^Ri057Wl.qX1Y\+uMQk]lX_3%ڔ`67?iiGDŽUȚr YoTΔ*ԕ6@~Pi^Y[MOWRl9*N撓Q{rUQ4}]-[-\stmRF"Sk{IX:}Sއkٕi3KzX okeK:7AV_,`\]N;d\/M*}c" =0:K t/Pw|L ҫC%IY] \K I}Rna`yI7s"x rh!1tC|"#ž$e]#SU`څwXUN}(ڒ+lGqB `+bWtGŻx 5X89 p93hCoMJ #+`JTȢI|C_ <nЍqΣa`IJ=PMA^s[(]FU| ~]p>]sq8{QqKK>aØl V**_!] l#vU!"Ocjzlb&Wʢo8?\֛+ q|:,hZB滣Ȇ>8 G 읳Cu5fS_noG)ְWdnlpI:Atwo'de_3 *нwt8fzQwYx{IA#YkŴ쨦K;}Olcj]R7eu;mOjoY>5Z)dO*WJ_ަnpaT*Rrg/44}{d+_5k89~sܰŔД. ies *ccj͊oM8:2۝S?`/3Oh_0`.&n U" B[AM*'>!X~64A4R:0d;_ y<$#nS . ;%_a~ğw9JaNW |M `|8w;1w;K%G'IW?'èY^çp|B`\OTSIf o]8g^FQF/Zќο! 5 gy7}DOPn(W!7oRS])GNJQD~9,9ò}6.ǀ5XQtgbW.y_IFTRuy3b4ܯ*[ôW&`A+̻~GoQ&hc(G5)CH̬h"myWTA&>|_,Yx1@?YzJXW:R,*"D5Qlҋsr֏ј}N[ejh*5d۾wvjk:s[{Ee8^&Rnsŝd=K(ߦ+JJwM<",2tv#WE/m[`KΞySۯbtC`uyr}e9Kĩ .mc * X 1ib7lf;`1y_f[]A&W,KUuIk4I%)^EǽYXXQT!eDbW8E[aGc/cif|͑or,C\G)=[<|/?x7h~~(m0 '_ I*8hB!0T}?\񐇗W8@22Nx2tzۅS8ڄ{lOwr8e? @]i]P\frWp,$B Ka#S^WUx.'ߩ睊1mlX5\:/-oP p NEpcsQ&?»1O ՠIh n 0߫j9ߢz:ʯЂߣVӹ죸nc&Uj"[p/*w@=&db;}V9T-mRFp]v?pppy%pǨ{$1uww[M3hY_KNIoW|[MQ{v6Ų,y᳼_bD]u9Fn~Y.-ܐpvɅ3>aջߘsԵdJY^^s!י׮@W蹾N.==WXɊ^=nW<]zv$6wY^\^D[O9̜._9ZXTrѳ1z9fP'U|_$3KrIg4s@j`Zb J6?ڃ e"D{ jr&2C[y ,x2N_OQx%Σk{ix1w?#-%EU#jFF'S<H,z ,ߡFYJ:f:/`E0v'*7-%|s(]TEv;3sNg325$.^z!//c>+|&Ws}_?u\̗+E3$Exp)| mJdTٍ4Ny);rTe |NUVA"{bf0KBq+*$g1|jKl"M{Sê >Ukl x\mik 2}o50{YXZ/BMցV%Rk?G9UVme~4L4YǙzepܶr]4aS'镩"8s_UHqwk$.7bg\3Oj:_z)Js^,o8mQ?vkfhNH/١Y˃J-y?CPйdT޵Ux(٪i3e.br1j* Ӟ6j팙%.[zaɔ/j,j /Mi'\$ǓLn <6<)E&7( & !<>'pW*)w"(iz4ьGjR )/Q - ^]Pr#zVq=ڵ8MD{ e% J-Å,-hE)#a|$II6Z!AѴE'|[Jm#XqHn'E0VnJ͍>r*ޝsnnjDX՟ס|0]VMm:Ah.KQ((Tٳ")yWz-.NJDEE$1JN`i?N iOnN} ="ZwCPd?uk#?,`GU`L(/ϕۘxf sf=xlؙLAF^a5n [BZeÆ u6n?]gl|ь+w66p5c-Ss7&WI6W'{}5Z")[չ^ejTe,֣YGqp#{]zP~FI[sG^1Zlmts=#FIP~[n$MZ{:Achsޅ"W^rl)Sh:irJ4팧)N\cbEԉeYI{ ߚ Rle-i8X3/TҿМo*~S,)| M-m|/Pw!&ⶄhngIQ4Ei[{@(܆W?Twa uaz}$mXJ0CojJ {hw A7pQ @J nB_fw:f+@yzMɝ ?Ѧ]L845lS$nNp Oǵ4h 8E`%L-31:H}V8,"JP(BwaS'P. {l!S[L_VQuVR~'88O_\P* LF1FWa1h9@GD]G/V~_|9*.zeFJ~t"}-*t%z,Ō(ܷ;/=_"hhHMt蓴/]2C'H-Nk ̖]sً򕬒u??fE6@qD]WEǧ-3)Øv jܬ>9^YWcRWZcn̓=ܞUNaKm~ONS{NF18ղӚka-j[ma~iQt:s :k˲eaFql-WM|tS,:7jb"Z)[3Cʬ;W2i\(yJvj3[]\QAރMPd,G et&/ȝZZviZ#Ɖ}2}\ /+?* ,&(SH;`Xf|M!(IfGc 8T٪Ͷ3]4~}uS56UX;;eqsHN<}x3O+uXTUYk-\;?9g Pf`znIB1B];QtUs]yf3zz+ su3.Wd4:MBECőM pM*:3BVs/kwַ/KJ@~L$ַj볫VUUV~+ó/c Mgfvy"++#6IzS޸J!0iWܫ^ EL,YUFǰ~\gnR$`^pPطQe^Yr]nӛv~okkLjg:S>y{89nuN{R^=/=G<̭e|7C)|t㟲Y8 uh IC0waԄ cI:BI<\lu O7 Z >l!Eh? {PJK8 '@4/Y•G ;FAp%.Ja=d)8ɨuG3Q1zעxTR' |Gtgfa8~"+| ?@PDh*@h'ʅ(wqr';›@pe_3=1|ʉA Ri3q.L9nF&8n<$ݩ{;M˲+ҭoXidf]o !քDC|%<]{g]߭ +L˔V6?m.|K//e6Nf~@ؐ~m?ϮuFQ}d"GS%I"#IsʆL!{2 ${ېTr9ˊ,p͕*rWmB.Nv>`@И{)C09pz͓Ҏj(kYeJs )քkjW5i^p@z.*yO =G'_0=x{u|[ҪC^>Rl ~XiAg@鎱vtlۜZ pxvUX*q7l Ha_>p\$`/;O0֢mp|a_(/#q %a$pgh܂Si<Rp nxNA! ۡZP#JO9x̽bm7\;0 23)ߊd}o$‡t#.ąC&RANst3FO=WlsO%SW-j&YbbAp skLC-ӪSQfqL1Wf6֦'&?gisLuf鷌Aщ)E)ʤٺʦZE2kD)G3 6IjI;K\q2~Jaq٩qVDb 0zUE{^)U?EP N=䤰VcXeaw^u*e\z̅Cy KsX&/|_GO~(U0D Nbb49#,b*aEM.1Xt'DĞC ,I9iOYzt&SӒGYz%RʜMwd/nD+'$ĚHxMP^""C/lEmJwPK.J#QTiF%5YBb2o(_W.\4EXڔ+<[o,Oe.p;ny}]hޞ'߯ vw_mͣ>ޏ܏xsqO]hȉd0&r,9kh!t;`0W Tȹlk(A;7֠x!҉Ypi-Bned W W G≈GːY&7f71 >MXh,.Ab| Z 8Ã]`4ZZ%I3ax"@5 #z%E)p:ss3X]".2A(7/:P.q\#!z֋щU>` ?;\#F? %D&&:ECg"[T~I%$w8#I4X"Lm WRLdϰ 2.2\5;J}5+ZCSDS'MTC<;]K/^Ov{r<%%.Hkz{iR<`^) jj+ITXMLYuRKPI sc;S]Jn(RFd +y >DgΧ~1ӍQNG4,19ۺG#4;_}rG cU Ql1#3\5i ,{NNPwEON^oKyh؛nbߚtqΘͲ{]))a# l/o`,B-cON9=0Y-=GY>`[xZ` _x'sAgR>ֵaeE:w_X!6O/;=E4ñ :qo/6q[ J\.G𤕗AfLDJ&ع'OH.pB\ bw @7*ѓs@"hCx ~C NJdP‹(?ëeN E^Ÿ}=Qx z@] uu {P#N9ViPOwL*=@ _ $\ +,(CffTQF|"Tu^(59iB b :W<2J%fT/d!&1}lj%`t?tg8Ɗ͍rD(i,͛;# wƞc2Le3f<ݛ&w}H; >[g3i :L3Q.Mv=d~bB ںvs;<^cunж]Y~iޡcaj@ByyGLMO\R[2nf{/0%S;%\MJ:4;jSxl|VUDt/!7HaA"S9}SjV{r;ᆌ ک3*>*/ӴTDiPΪ3.گ)HѕwnjݼeNz06]?V﫝UG6#Ӧ e=LĶ$A3[u@Bi:WrK(4m] ῜88Qhw#Fڀ:x,JzCVݱ@L&u$>QrcKJJlR.؄g TFlU [xî]&Dm\OL|b `GVLz?=0^ !k2B8vsNLmP7< ?b$R?-hۣj^1ރSyI xp F/9` >]l&(DY#<G1➥jL!7ULn=^fh6 g-b|.P!nGr!B$Z0bHL$Roq.` Du; /I!AH+.T#TGr~ȝe=vn0dVp..;[?@:8Ưp +;=cp+l>cesG8#륢yx_*Ofo$J1lsof.) 8B[h_FL`_J"gClp4:xqY?s>ejqGbWf9j藰7a@ArqJWDzJcu/UtI|ҴҼy{L%њbۏbI<ߤhC]6-VU 7jJG7*pZql,j,Q7+4h۴'u'ug/ͽ[vC8-n'u͗vLޫo}wHz<T:0dA)0cfM[w[N1aݘބjC68R+OŮ)|"+|} ?GnR's΋VXf!;%u>e3>52Z<ˠW9nmfx`b%E%8~[T.xe(=#t L%lFAQ M+'qÀr| +hJQ4SO4Bcq2Wg^VX&V%DM"NbF„$DPA8_'?Sq:((-JPqo䚹z.C|8[ t@+?|" 'm?5ZOuͭYMfvB$y,fS]22N$&5.Vf4p2YʥW%T" '\H^Ŷ$9\֓ul |xRnp+w5%kG{Ϙ(u>H@'=P>Ǡ n!nNʼn8@~Uƴ0EII Iw2; vW*}N}浵cIY*TɛߝP^s}UivYRMZ&ؙ1ߒ+ Aڇ7s"\R*XVT蚿J_hWf/:unUzz,Cݩ?TgUX^yط#M8q}F\}"ضæֽfhUݖ]y5AO"'|fNҽ'tCdLȘy'2W?#}7hwu0䏱R~,pŃx8ž Yc.]\8>pᨕU˶:: s}$ FV`)„0A@:ysQ "[uX 'BVd/lBr8[8Dmb߄ /`+>k2^b>};*^wG) !hHr8Պ 蚸ꆸ4턗7-E#>k5ijt5(@5?y;L?yH \Ŗ1\©WZj%;)w3Opk߸a鉜%I+$ 3)#Kȥ2ʖZ#v?gr:5dJr"%'#Dw%r@ saL;ucO9f;[2#W֍_". }\4F؏s^4p,xW֚lal9'@ohxxC !f$#bGpo_`-f!{yD'%&>U¼9MZvo>!#@u`oȝv^(ujVV&*wP~z{GtNjvۉmyU.n4oZT+@6%r諰hOUuq1֩6cnF.c"va&0gZ]KBAc`fTP;vpTl=v7kfg}~g_$aW@.OUY1ڬ14 `d]M;?U^](~f_/6XK7+mO>1A.YHcXHҍ<&H8|NǮ6X D p 0L|UΤ4 v`^/HDtL+\v2$pnQ{5E"Vh&uc$BNN>`OG7У<Q%V؃%Nv;R Sd!N4D+/idX 2/- $8L.v_UGeYYJTGŦ)øconחVunRRU$r8gGeMم ,b܅eA ?C P%X ԪpgMC7L))*,~JġJQ%%/NF fR܊=bTI#BmGcҼ:1kvi4ͩ&-c4V*Ε+[0]1naHqvQuНbIh2]L{p;apʸIIQ YK(nvbIC’جm&ۮj|ۗPrثiJө;;awws \Ռ&5.mSѾQlp$#ԝ>dXe?UKYؖ4?c7{qYAio/ LV" /qoa,W1t_fI8FA͡J+{ۚ؞yٸ I{c#Qnm\4[K !# yKEHOVR ЧP"_$aw?h,i!I),XMӠ%* )$.cH:̄9d48 ?HgbF΂|i:@ Kͅ~Tch%lے$6dԍ%6&#|ݭ{L Z|,1pXQ䍒NiP}<x"}dzZI**9WUP멶+Mݔ!ApE tib!L6pJPQ|.)^~YJs #Qwq! N Ma,dk.W1kTT_1[#͒V]q`,LaIJt=~DN'lvӃ0?F2Q{ۮBoh MN,f6USWQ̯晡W"j僊VTE *j*#m kv|OZsHUJu)U QܺE`gus1GfK|<=H0H+% RS9ŻJ?`uOowv9M'M|f7]jrocS}]G+*+[疋5Ś y9nܶ?>Sf_d^w!WCE$xrƠA!Z| hr?@:ٰuL,͊h,-}0tO8l/4Djsw-Ƿx&oJh &-JNAQ> aRH'?s$7y4=F`6_'H,7p6RC}iY E Hc$a}@WXNzBa!Ld*xGͨ>BA_S ,&"9OB1 i,K|`~[DMxљ1Wz-%9dc rG߲q'|<#M.Knh7&W"-P;й  X^5h0.oKeP9TmR%R{ $ZQ? S,MyKyZ8Y9Qч\y Nb`Ri٢?Z_'TipUJT4~bbXxLdg^FK,.fJH+^e,NIf'WreLۀ-j#UxXaaqq!{"neɎ>mNv}~T %d^/*]VhnYKAD̫D?`Aڬk .S,+ j슽*Z$ 1}GDzBEw*>TUlJݻyCjMƢi-M=yTYI7=3hkǸ]>NVPCuN{5jި_ۘ[!Fd7b#C-?N q=|t[taL&.c顑aC g{}{{Ht>hbe/ i,%z3ҋdB;_O;5>3r˲<[N;A8 @\'.!Bæ i{< [%DѮq$4sFP,q*ϢoH=x*KoDZY"\/3j8=z`F?B *bM.y!n$&d"yrqpD$V4E!AEO⓸(x}gwOr䊇&) G9t_N*0CJ{!~Wn2SDU&#.f@&9+ܨ79`>SrX/r ,R*?AG"IRDqWdG Ft ́7v YE$/-6>Ɍ#Xvm$t]rLp0wsT)Sʇ|M`nwC u@訰[dڛDyPŏFrUZUQq%g.~ Bζl] :EBXZ ^ BUZͭZyj_'!DPqC8&ԣè3친%x"]6:cPt2iغ"@~}by-y !nycr^ʭ;0Ъ?(ePFZ^V (^_ݯ{>Y7rɇҐɅ5 *.KķkKw ڝU#8O{M1i]WegE*_,QNi :rdAT&]*O8/<;-_둹'mN$uBqbb,rƥLpӼ)*4Th\?qʸИQ'Hm!c ~u_ *]x87;Nuͱ_au:2$Jԑ=Bҕl&ufm=Wpt`e˓ER |E[Yz!?jMAvrˡ>'Ꮴk-`XHv2kOdl#AY~4d >Aޣ\mpv;:q}ԥƺ T/3qFlaRt)]mP>%h0VWfMﰾ @Y"y{LD,gqKc !4e=>aXFcmd "k^Y7f]dsI,:63hJv. $dLx,khϸ{bYh샍YT.#!^(s,ݙkIg\N%$v<^S{2^ d*+Hn2)U0k7hkI,낫RX&#}# <%.s c)&S':Q8(曄]JWMB?Ue]9FVWr/^|'J),,ltIꋚ ,i$-#̱n6g(kZiGP)bSLUQ/+| "mE#IQ^E;Jk5bL&~Q2겄jmsyGuO}˨W4Lc邂f]\.%FNueR.ɹ[|r|wZ<1\"V7.oFԄ.i-yy ssk'ZF~{ڽ㵅y49b}cCTC kwhc ]&I$Zvrvl ib~CaAwSb%a[%맹n[^*Dl+s9ĥ+6qxUpw­gӆ>_7$!W+';9E9m;ñv'rXl6be 7HFF@Mv놕OBhcB >@$v Kt` s|~a]ct;ĺ;o6rְ|;sXzh~G&xMH aͭ+myd:i$5ɸcYև22|?q)*'GEYؓD(:E F[k`kq_o,ꈎ3zG(\+ D/xO,Ȧۛ&[%&Zn }+%EwK}5 rLؤY?m?-Ōyi9b;H ?;gZ1,8YOWC2ojWqy;9g+Ko[ѐ`P7GǕ^֤Zyhrd 9WJo3; hٳqCEݘ1mN!+}C Ylfb Uwm&؟rWZpqmgWU6C\:[%9)q6CZ4)Gg<\+>ڭur$ /s|bxM%zݒj4B,|V}".(Kyx+Hт \rzhsX>{t!k%$* 'v<>H?S-H:󤚄.A#xeRK!Lu&a/YJpC*YYcfiHO2r)NQSI0ܖEh >V6u**ǡx'D1/;s`\+a%A?M)qXS% \ʅD8+82>b܎.%ɗe1EH/`fiވb4bg*rW1o!WػX6x`n,Yiێr|,<ڻ$^ȜrW_ul:yK[_60(pm&mSkV=UdZ)L}MzyŲ]e^F}fG_i}NzY;wwmu 37dfnJr'h.jS=?byThg*k$gz[SYk3$:o!%އ|~k}7 #^}pck#ΖWmZ.ng]/g{vV^YehezC0[v8pDZNl;ڽkk9bdԆJQ$I6&d*:Y@v!0l,($yZJtil@U$*h&MFch;1a ^y dw?q!K5`%ؐh:A0C2#a6Gob "k-R#I$̀ uXYBeN-E236Hp$@ ZH@Ԡn[ }T~<'3wns$/9c jH S3d 3<| (#` nKwL4@FNj\j84 H@}p6xHհa D3ž$ n=씌kPZA}ɡKK/ _@Ɏf:C5Ld/SLRĬb/IsHỴݴ.Wӽd9ƺeH"Ov87#Y ;8o.CKܹ`+h`<=NzA"ǃ`$ lΟ;\ p^Af1n$ͲDn Ǚ/0wEϬ{%2Jrۢf6-!*Pf+ ~(t[ɋ .rJJLȽZvXPjX]v0|DŦǥLɆ }89s6Z~`,9ȱ6*o *l*tֿԿ+t:ڒS&EC {N2*|l"0t~з;!j]>8ΖV;\/* iOӞU͞cX*_ TP VyjR)TUy)]8~w.,;<I\ax1wG87Box4_CB|[(~JA&|aLr & q.N)w$ŝ~נ"-PVago:}${t%C;Q چtJO6\ =Y%^a Ia $inPaكG+CVx:P Li6sMJ7vǓxk24KQc /DwA?!.Ds`/J`6w0{b<Z{V"Ei)b+qg[xxgZ%b_p HzF:[dzl4ǨQJ{Kt3 ;3s3lwn0W+f!xεpE\!ch8]O,nB8Sn{'`\ 7i kd F %?-k"W+4T&ث?l>gQkJ4Z&U;m5E߭l2dGqc>67x㌔#Iw&YPfݚUcj{*)]xs>>eaoy1r{j-ۡ~}o۞`}Y>E3b 5y|,QuovxK6dIw)ZZM:N+!0WvMv<<6򶗳gMTܣI9X񯇵kV!/C~Y ^p \Oug8z b*xtJx/#S0lII7~@d@3z|":G򾲕C)Dkh&Vh4v¥dƓQ2Ja _u#Xr#8d?ކ[x/v\c vE05N}H* IJz |n^ zpv%6ິNk?)>AK&H,jWdVV(h4 uh| Pq;=c?7 t ~7+l~pkPHV8W ~IfJ\*i̙&6p!Maט8Nr۸w3R6uv/S9t5as/NdpW/u\ ry(EL8U + J.!_ `xރCq6C$_+\kr?)A t^L !NXM0 QȎz@ݤzR@/o֓fskh+EG8w.g1J-3p]hwe380uPN70[{"Ip ~A$JXҸT`>bHKLSLcIlON"8=̀@ j8"bXv8A G.B57n\  %='&WvlY閠լbt@:B8țwZ[#[WP)z3sYu O$g7Jݬcy+kW ʼWڛ/3ԛv]i<[[d~CQoVO%4Uʬ8\;UW۳wngCɎ7խe~% {>uPmV(+^.*hbGu&HKŸk6MPwѼ(IBwxaLTW[ ziGlOiRΫ)Nj18,y]q_ra8yvMϬ#lҩtt7%Zd_.bZmB;g+yH/rA'#R7o{wyWPZ)2k,PoG˅&?OXB<\GŢ梄%$O^T K{^x0'swhu4#F4Oݠ0]lb3((tG(}\.Ө"1m .!xh HT>4-j (Ns;.Ro#fD+ Hxi{6Kl5%ֲW6#H9] Tx\D[D>Fsl6F_*]v!Kc `2W r/zC<$LmDKzP"zOD?"~ G> 2P' 0 N ]x!kclt-^IK=gZsެ|t㮄ѣboUtQc /e y v+*eON\;@5'nԂ1'R~Bŀ[v-L+hx]yؖ{-qF.]d/cʠa}[#-5-Ƿ1;%^rhռ%s 5lǴV/ <5fTLӮVUw7jD 1 & 9ދ<땁6{\V%+<+FRf& +ITʧ.!%+q RJ[$iwvt? lą'2BL}r[8+ˆ;r 8e݄$ipr:NIXEvQ>R<㠷g D M̋8x AK`|w zH<+ lj΅&_;%Z<_=AwP%B?lOP3)t8속( o3[32#Ul ع u*SVi7.qc/׭?{W_j4]9د\M~X\x0PZZZҩ-XI2sk6mnnxQRzqX񪢑E]E>dBF|DEV0uiJ񒱳lSYPQRZ9X]o.yVðpѰ WܾafI Q[i^;j]ςzWS4m5|fzxDC[*|q., P7's7Leo&=.*1:/^㠶1^2rH54Ӡ4z^zyU6(:ܧ9r1w*#sgGKH?d6Vm;j S=-ӛ[) lSD*%DLX;]:wRX6go"% K;7;r sj\U~Lx*;p1I6cXT";^Yl?q ߁>K;*9?C8{9)OOVnx#hBo+'+Gt\| W!8 UЁ3e *iiQ' D)\*ڍŸ>٢0[~\K!Rgf=gxf4j?$gB>ҭ6lHII8a9p WT(4'Ql"^u ZW}OZ.jwJFl}`ɻؒ.E77S{r!mI1844dyaKqq3;-oպ vduIZRk$d#.CdeC:JS1j/}խѓ4s#օ'ph*SY"{E| DK1`;~B~'Sp A0f*Cgp7["0[tw*n~^ cNyYl搅v@!<; -_#~&6[M[l(B"<\N摮~?ɚdJd'瓁Dopǣ簗w:+aƏ3E>=W,\nxX(3y{3Tk8kån 64\y1`(_RQW_;rq}4c寫~ȿ7@K- )rFKsLJkICTíB]NRleN?*/(hAh1z˝i;77v)1]x3=>Q\c?rfҜ|t[K+TO.b24lPQ`J*;gFwyC+z״E^.yÊ4Ur?E.zcs|+v9z466Fkߖͻ,|jerѪ'&ѶܲWW>Sl:CI]º'L-*5&m2Al\OBd@q{>B^%|"WnR_ ޶7 1De3<%}X!.6Q@r(EfLFK,Ơ/NBf@G10ґx`4 |YI-}Ã|&b Q B!0 dLa.~@ k|ҌLQѦFǨ/k#{BtYދU}oX|k7k}ẁKn>|~O4:~tUݶN-vi]D ZVXX"g`w;aekyA4PKF\9wpr&wvrltZ>YP2U#',]dW<Ƴ8kktA {eٽ8Nb"$PZ($1K7@"抯K2ZEw32'c&9J}6NO0lLϨBX8^"1 \! WA GQ Q n9G\ j 42w)RPzA<#&R".LuBzhZk{j$B<v|@wA'c NRJ&M\>0AZ~:C53WM"\>8.!XRhoeX\n6I`2!HEM*-A@"Rl&M Hlp?QfTz.󆢴i4Q̚n84V壊ĝkۆ6VV*ra^sկjV=XY{]s߆3%k,v,]o*/q-琙v ;e}}'ܧ:$:_d52OOғ\2>!0$ztY1i1Fl|%G=i)2$"&dj},ZN[g3<27{̈́(wS9|=|c5*պmP[d>~=>GzSN,s:3iqgg.]l~X#o59a?~-Me;lӶf9g1;1 EqJLpџnīEnE (T6ֱSw<<#_Iht%KMQXG.+A 3 PugV1p<j`'Dr%PX `+##<;2PZ BQ):|:(WKM Tr>9A"%@N'ב(+aѫ*Kq1LcbzTeH?  {q1\-jw0+>C[`~Jd4OYD6B/k{m#G#p"mϤ'맸 3iCvf4ğP6B_FK'?V Vѿ3= YD3'f6`.i(%{ ړyBw$}EVDBHHc^*\L5R!2Ayr;qMz8E "BIcIh9d9?=h@]2w;p%HP+,ܳ@ASsFv+c_par[5?C[XbwG ̘P6a Q)g-kfajFCX:p:2@?K\^eDZ8;-\õ5 Ei0g'6egKK5R\CUk˗W5Vh]wܖ~/y̳إ|:^;RPbRkitcIȜ3MYXTMỤ6]/H?^6է}\GQ~=k좥]|cXCl鑱tXnXtAi.7Mk7n7d 6C );N sFk:>҇; u*ui~)UN$jB["釨SyDcg:_v.q;8BX".N۝l8ő;p0k=VNZ$ORW?Y܍Ow3j:(RĈ #J"*"IPiZbzQ2D? Pa8 D2Qr56[f@{ N`8p"܈! 8 sgi<zã5Db0_@H/n!aiq7ٸ'֣a%e =d$xN$_3D;D~RXabIjG!U&OK'%.X([ #fp?ZҍZX .,E,)7*sfe*.ýd~K&eXpG7wv]a!x'0Ob؞5'l8VrCqnb'>2Ll @ȳ"[#߯WtQ+BŴw  yLnwhY|Ww)!e`W&ƥjN mBZ.o}1n3|k_6_˦WhԪowےnXP[-)sf.<_}|(oLVmfGr4&,?RִcsuwD6_p\egptҤ26/F-5Ndhy$ʸc8`Xho/dž GO懾 I %@Pgԍwiߴ^3w|z{}_E_V{GӫYS_/$[~>Qk>ƾͱvعb8N[sw.)ϐw<j&W U^4?fYŏJ[>Ej`O0|(ĀH !vHV_x˘ڍLet2uQM炧ZE`d`' ;xk_wKO`ͦ :#~+3#(87*<0}.q(|#W!YR(0,c#(Z  at*8)Sui%qC_xJH܈ LՐ{PR+Q{RrV)WI>Hpt> p(fcf ;@ xWΑ?./풝Qp {ɺ #)*| /c``R ,\.c;Kwsk6 {k/5r|b⎜hU-PQ+Q-Aeb9:NwIpA}ſsGLY|fqivVn'ڟ~n>WTngph߹yff6KVǖ-[b7үj*Cޯ%\5VU'_4n)Ҹ!E"ƌKgq񉓓F$M/Cԯ:SztUĂ%QiZ5Ib40u4x# j@&tq+<@ $&B0oL4}\`5y[Y4P{ĤT"K&K$&Iy&dYLmO`l2S:@2WO\*+i"vH7K[ z3s>p؍'ąAvv, sU!9yN>Bm*NȮø>x*&4 % DAo(g./2l;ؕiN'|~l.R)rZn/r |/nqU։ܯ:A$j5lr_y9e_K rBGs;R깒ʓ6/kVh_|hmWڨ+mmv-چ6쯌-}וZQZf76gQںR՚:$~pek}Jt>ڲv'POּI?4G0Ę OB#3.nD/ SG Fóڈ1׆23C4)b_8d@ЎVk n <}`sMZSnا|ڷB֟ [[Nӥ㕭>OscJjn$8V81_9*}8.CEe6MY~"{yV9G |]9Zv3^p"XE-DyNmg#1w(O-rF\cudS*O]_QilPU9 ,* 3?YO`tyS $n!a"0G @` c|Ph/*OwG 17C?gރx/Cp:Ȥ_);؁^J9Duw$.xIo\QNw GMLd՗ӥ!iṭw&:b 1AQ s S&?p9/aުVe_M(ay mw Д.FkZ)M̊AG TL"*HwZհAʆmZ@~iڑṼܷzj/6<R{bnjSuΟ^rUy< _3sԸ>UobHݒ!s EW1)7ֽ7j _a;kRxRV*"~_lh]kgU={dv*>lt?"*b8!1*ΰ#p b9=^ijy} @O /GSP$e D~p0?a;s3b2Ȗ 4? -xh m== + Fpt2'gi~΢xqxdDf$%5 IxcBR爛4դLkDS# VJI/2zQ:x.C|DC%U:+w^n]yaO,b[a#du4'7b빑@&{έ=P 3OFlG cMV ֌d4UTGd:lگ6Ƿ[Nտko߆F4jUuA5*zj5:8VwTyۆW,kuk/ $̯$! $(E&HMB PEvѵb_ڿ59g&UU#ާ0]zkg{f6.|H]Gk75mS[oj ?FR`܋'z?Cx"3"UPǜ=56F!AT6(ɶ2r-|ױO Xk ܄|P0ݙZ.7a.ڇ`!|` ,C#z l( Q| 4$sz"NALO9x/0PH7Hp*RAC H{ BFTt@C-x,[pSA4ET'8K[2U_4N!)L 7Lr*z"JNHۢDҁ4CBoAHD\~:93t{w/4q$>ײd?i}&[dgi_7,xJOt sp۽PvNG,S;+G(F˿<jxG JgQ}[ܛϤ+2g5< u;f5nK\n?}ҸiuMm3kտ}Pu|V庪!}^7mQVW Wۻn}N$ofCUl+V0!QyiAZpο~s6S~M{'W-oWY{+vhA?\W}^xMB;Gk.kfk8Kf)QS1_"D Xp4\TϨk"GVF=ryķx_L tzz^+%Ue^{Wz˭X@ny͢.can0SiVEQ=:&qw ;WyotdTx܁b;EchFb?6rfġx$Hǎcx|d8f"39 `& ݀+a B1T 6f->Cag@'hk/˦3bLJ8*̇CȀ؄ i ǔF1p4VG$Wj"]O= FJ+gV _ nWanIAxS||H@_(7U¡`@0I8E_ ԉ"XG1Wl#ݼJ(x0Ùeߘhz?~GEF" lDŎwϐ R|w$..sM˞ȷ rR>QqX@\<أA(e7^V*W8 T_Uד,^ҰwSI޴ 6]cR]M/z_Vo?VwzGEAΏz_/Ŷ;߷\r{u~S[uVyW"xXKumfӊKgay ՑuvLnQI!_t=tu%goJ8bVвfq=}k4[q{4O0ƝXmrmؙlnWĝR/qG1]Q#;E yp)YpDl;׏E3+F26]U/FD>&3hYو ,FqcD(QQ"*LE_Y<Wz%DɎ|yc2id [K>Lg6}KHa`tUoU 1ms܄V Ɓ3Z<h NkW ^x0lQpʹTt >q9x w$g 6p%J밞yǴ<& '$D>f!L5|E?赠^Oj4}>A·@(L^7P53QH7޽l\QWW <0z&x.yu>M,>>*-zuՋ ?sC_co6{ɥ鏂?kvܩSQҥ}=f]^utZURPbzQ6\czkbmy^-a5WMe\h1.eZ SW㶜2Y+_HKUVkJwFQX.IVrrm=} fyq욲ړ-N[T) ѥPE " fz&'ұ˺׆2}ݚnYjj]֩qGl}q5({Ѳ`21ae\CܑXvSCjs4~Z6ou$ANȅq4hv[auz.ls\MiT1waG3@KKTB(= ӈ̇NH3Fŷ$n^8%@i^Ez^'ҵ;y0d%Ѩ#w@Vp"589H 2Ȉ&! hv9b+ J T 9ve0'7drD ﮆ{.jf:ZA.ϡ֠Ŭ$'#k+-> ;!йt(+܎f b@O#:qh 1\2`};/{@b&SND y%QQ zF%ҩE<+( * tCt=]<| g143EInS.) BDa ɭ@,!lqqAn?f f(etgϝ WI$#3hPpáҰ}>z!}9k jN'fV=w/--e(s>mޒe.)5[%VgkLeZ2(_?CmU#*}LΦR sjlYjk3;MՏZ\V̴4֗ݍ)6Eݱ5 K93ˁӔbY4xqe)6}-ELŐЉfZ, ݵߋ#t'K%s n4)srNӵZkN2AʍQ[ՙnWVsԿE~ʊr P/9Vz+Z=+do!߷R알F`V"q3zS( }Dx}^HOtxD|rMP' X{B~VǨ5j ށPC, wӕ0> S@ɓ0)v& JIVVA4*v#iz#ӎ2{\:ʇ|pbx*-;>`/^s7$rj,qzeDrW`pYtRA>rEzP6J-1K4cs.gwMKUDzmKyN3~emnMS >;Scs[ qoknα,;^z6hԏzm Gm|[K?ͪ`blzoxPMަS_~Ɩ1adanWRǩ$}H pڼZ?.аfojO r MOscwC4.AIAN~|aփgΘчE\ q%ST} =RzlZP1uxzQ`o؍nCkMY$y΅BkzÚ dG|@N8C@ $n"hw@> -e Y<=%3] _^x6k` /P_d=1wxax@=q|ziq*ϡ?hjQ,P{#  `ɰ Zio t#H >{>Uv6E*BH!;~7Qio:.. Rŷ 'qx3YFn _F w >rD z1V$&iV;J `w`׊N v&H >sex'aH!/LL%cxk]A.!QD[1RLM4*ul6;z^XrƽIqΑMaǸ)~Y1f.v2ϰ5ʶ 3#ڜA=鮝,j41?_G[3HQ^^5a5#cuZ5>(gуR^ VP(dd'Hxx~5a*Z"Ik"AKS(e ܅I t\Am8lCczBC8ϨPȌLV6.:K0\Gb{f >#CNG9\`7Gd (&kQ$ ~<$-Cdx-)|PT;?r(ax`&r[ #TZ |Z {*߃c%=[p$PHY(M6U=t{3%هl$߃{d#cޱoD, > _A7{bJ@p,6k&]zLd>OHޣ\xỸdc|9_ ')SwzF8Ett?i/"_b؟jA*ߋV MR'HgӡbtG9~ < qKI&.xu!#O>QA)3.1+sPB9D٢ϢNC<"ȞS^r$ 7oWDx*>rA\V{(lnfUUa2>yUj"3;Rp;KjtbUWϖԧͯ-ᵕ޷.:lm]W77o.ݘ2VjﵒH[6@d[\m\kVٸSjk_ WM=u-iuvEm ⌹ -4^؜m(?nbm +1|s zQ̦͛J3]]RZp2KC?4tAg_wM]TLQη9gk\Ws 5h[jq-:NofzZs7A TG EA?C& - ?5!&8:1zpUG7GdG/_J3{2=R0n6ݕ5Q,3")wXSR-bTȼL{= aoŽ8ƭ'%>'yޯ&25C/G0 6{d@8Ox%BI4}d]GS4FyX@.UHF# ;YD#x79Mhoq6EI؍i,cV‰pzAC>캆||&G px 4(vP<ĀLý>_k < ؃ Qw:4P:VNxF8(X hd&~B#W;C?8 GP .tEm$)C7f/YўuCQ -ͻo=8~#ڈΛ=]-ߔ9{y?v%=~MʦR&{1OkX}UE|Te՟Ar՗ ʨo1NjxP?A/ wwה~8=(|f5)([V]5U^/pYYI?ZXy%iơ+4 mJlTY}"Qi?U釵(FdEL!6lmD"GQ7FYl0Z Nnd!/e}eJӞ.3 —ş )W?/ANK3aPCn+%DF$⅌*j;; P 5(B<weuZtsOa2x _{( @KZlE:I6ƨb zH*Ը8i\h%V`7XSqAGx12hm :ԅͰ FӴ +POG )~/H h ?S`zL@F8D`3O CA @ ?5H S@ @ 1t0XpT,\YKb;BGѕb\ JKD0-nT<玭5EͧxZ۷= ?q̸\CW9ݜu8C/+|.˯LVӋ5 u=%&[x!NH\P^7=?jW,?6эTj*U]Zi5{n?xxu{MxTWUvw6); Nd/׏mk|Vja\P""} E(n~jr59¢ؒE *N!?Cv)gӚdoEzU?ҼvBc0Szj?fuךS-ߣj;ڛ†Hٯ*%hbRjt*8X:K3הM))T{+ TN(ܐO;F2}C-E˳)) 2PӠasÊ>V6\ÈA9gKnw4Iz\Fz <[Pqӏw=x="z/A8Nfj ϑJ܇8Ex:cGD893 GỢyD6d-q>ē *FXl, w >cylw+l R~FD<e bbAhM=tG!B:NE8 Q _`&Yfs~؅>_k\7t P;L=+Bh a6_>kylS.@ JB$fPHO"~-vzL33(At,>sxU+~g` 664Cnk~,`6]mOMf̤eX@ i]Bi\_c ۳UxPQiXZd}ĸҦRu>#lrq{wCںF]=]tNI0P k_+tC¦DEԫ'*Tʪs+;4tgt4/NkH)]WKn yIJ6f[æJ_4fv&}3>qkxy/R>DΛ^_S.ۊmUE}ڋ?tyʋorZfk]3)΃gHJgDžwc" S6ԭ%.6|ArP撍bF/P eXPV:wԑ{vؗI PҌ vdW슙x9Koy>K .aӁjoq|'#Cx1Eu8oŵl3nCZM~A>+ V܋iG0 =KяO3l/z4m0E*Z׊1ss0LYT!U|p L+<&s1 IMHͧDqxJJh+p޶m qxA^^m-'3p&r3,MPB? Q4hrۈüH~َEye~p SJZݜʊڂ*Z7JuP{]_,*63 )^Teǽ}yH}-w[LtAumq#M ;PԊx>;$h(+0)H_ o;>cFk#g7 t}z.yA-x}0n܌1,.sh|YX ¿[DG~"Ev39>m_B 4#1 JPǏDEgE?֋!5=#D!LANp{av9쳬NP cQ3`F m R6G}><Fi %Sf|F0SAT h) 4G,Q`/k 8ͽd9m"[98{ƭF5Ap@8{|#H_hL >d?+gocJrsb\?C4c[ROۢ3Ts^Xoe2՟ eMEm[7ֵth[aWݘ佛cN\xMTqV?u^֧ Q@밾 ⮴{ 5O*Vꫴw lFG5uPo-Wl7_ڔ>Ee4v*iXro#iKDvzWS]qG׭-|R=-R:!c։G *\Wf-UMR>엲b˂99_6/Oxs1rQˈc7DLGoBz>K߅j._iyEMJ*O>rmp"НaBD$|ư0 [>F~%oq{!Ky,+熯tLTi7.qf٬N`)+6.|ww:>v4 JRčtA XČ縉Yngbo<qT>X'%?`~i*CHyh:IpmdH9hQ"NZntM8g 8D2q(6<0,Cx)sq(DdG+qmNC)y۰5n3+*a/Z?H#K4Kt:q7Z4j ac@=1K3fKDa0UtX,cZvtk*q5FΣ *n!cn{L {xqܸ3{7̻`]Lg.c}t(<ʡ*n{=ݗy= R /t'l 'DOzEZm׶xloyO? ˖MQVi6Zfww~yE\41ldWYA25lᰡ]_X^EzԧPK+ 6O.*yrbhwnHjjox|rYUj5-T6Ύf3{u {R{tx7,z\WR>+˶gaƺE5㍇vMZS9yǩ}?ܫvߑ!kJz9%4mw03绬i3sz&&%jfhO>*(xEɭ͙m &%tƏI IEGU7Jo !d/§# U G]AڀU~=n=;dSCDx-/mlsӺ'xQj'ttZ$c"af9-<#JGX %D #w2h )%S`ZM('cCKQzLEZ8qta[ݱ48U %110 as)stH`/4MȈs8ufQXfq.ſ0pdLǦu ;KTY; ރ!͠0lC=̀V,zwkB .b=Q.PlmRQMutD/j~( ܯ,4p~ϊU/(Ӂ%ʊ5;+:{oݹ\Ύ[A;lw yO!*.p`WyUݶ/m. >}]<꒮>^rW2 Riha hhbcfk񻆖FخVhо۪{\wyH+-;[qlgCޞ5;ʻtݛ?r)aZP=5(7ũƼ䉱bbm6$5?/ۣ9yT֣6Q/P(ZRfv,˿Sq)1iyԕ7rjtynA 2CFHWTi>A<'VzUr2`tOf ~]Bmܱiuns3l*sA4%gz֠{0!Gr ?Wh73C3JCm8 z}gᙤjhZgX{X[V~ƍvAUvxX?m0l$Q7 `F3f)&>|cmQ((lxX'~RlAZX( !S6Υ5C,CTվniacl/*;8=(? Sj-NCպzyd Y'1F엶L1Lh5l6L{spcWjh lc[Y [Gӧ=vײӦV+#ibUQu fE4oݒwD:x>9% ~G]rdb2QѣȖ(OWRFiScc#󢗤Sg ْ/EI/U^%^"MZ&tq-6O癐pƳ.ZNN훾W,rL5ieǧx_uP |W\a1GQ06wDH3];&snߔȳlFl.4^TϮu䐶6F4z5e|\wrY\UP{Bl2lxԯ!k^F.S8zٸP Fį+v̏+L)Q9:n@äzsMY!H$U :Ex9_V U5j|puI5d*kbd)R3䩧L)1u'L$+N9.ߎ>OɟpʔEᴐ^v٦n'x"VC]5O50 D5]``٭EP){ɵ/L` "zl=P38EӕX.`FAec2R6o4]08=No%d^?y ,t1@&'_[b Krkg`k;f+4%<@*>@|ui( =8~bMl Da>i"H&n01KȃD6!A`p:#=>x-lC ]CG@O][~kWVQsh:SB!2kV=w|FtPL1#W 7uhV}hTLUd+drlRF:MV!3K5kTuIDJL!daN~"?3f|\_kҝi; :ro| f𑲮65dcϦP]e\v\ ntqϹ\&DZ뙽gٍll)L60K:=sXMNaKbv:03=WkeÆ` 3@4`Re` 3 +-ft4NLT7ud 2,*g iFMwWq?_K=HBʃ^p)t p2\D8IʐN5lD`X71OB!t6^%r4O=߉eqa@;^p@N%WJZ.9oBhox:ya;vL%sFT@AKO*zXhF gDD%\dܖLJ;JbJHen4(hRUCC=m!3.;].,>%" -.çHS!yPax+ 㠒͌euIW>0wP!=b:3UOQ3VM.<]T/V>[B?V(tA~X g XeiФ0sܨoW6 Qy%KEr&5 [}zY5:[ ׄ)*(Me+ b+NKHNmYBl>T$\_}IxgܬWsL7$ۋK_KRwONo0M !>:$qvyp@^\pM0%|`5{eM?nvx{ZP28\/ѣ7N0=l=?=c+ ƃLjJCJVf~d1DhBIvJ@Id= |炡d/ 5z={3WYV Ix5Qh }xK!)4 "xϐ|'?̏hV~AW0~/#e;"^x=ї7𾔜 +8 w x_-'Nwh݀`h&A&(4 /fq 4/sM)UdRw4EIpjnEolExE{ƚ9n:q!Xuא]Y}d*T%9&³3˸#mg^lieZj8i2dWjŅ[tݡ-Q2DEOavi<7gR?YxstW?)$3O) e~q-6YgO[̮mݖ&TH/mDUkhm~d\e655i(2kW{q ޲"Ev6IY*'Ť yCE53 nuUj}VSV=VWK!IM|[^IZ9uD1U-eE}KW%/.9-EX<ʳx4ݷc4weŐs::[lB`!yM@ g5]@STI.G#YW 67?ϡ'th!|5qX_t2 s㴎7K `d(ryk'nRpNEibyWK|!;{"*x+6ߟᶹErə]b;Q"=DS$~Y^dÏj>+Ԝp"oVͪ#x"y{S(%^7T+:5!%u{} +ͪU}Ҏ]Zӌ!cCRL Ҋo+ks l)S3CnDoMIS<42udЎn H՟ʾ5VZ9zyEFː}heo|(R4^֪2/5oYw-L~ >y開QmiWOaM;w>iiʷV:hniE45rK{pT;m_c`4moZoz^}6SrU&ofFC]%YSO:3C2+ҵ71\R>~'Y}eԣrfٻQΒESF$.<./B+-鏲d"}`\iS,`ӌiE#I'NH:KIP;& tfP2Yx .Ho6B*FƏbF;rsZň3&NsߘT=eL/@N `Ӹzv)cXov.=A}lk`+8C~3Z1Øv"l+}ͽW)Z2/pSPΣ&0*y?h* B,S0!6FvyϡfOU^|qۇ< t~xڅp( ;TJ)=OwQ@ɿ9q?mQbbDJnTlf/Ni⛢++gt~cyi!b~MP>%-pwyyC}D>O#{Qj26sOz r$ GQ @R19$b!h ideŔ ]q=ǚX le:"r#f %hGFs?o15?RN~2lXʙXkypNiT鄯y1Y[ e!F%0dFum(^#?{x.r O^h-$px%| b?<IBMAR"u^:#;r,'B0~pH a?3c`[Zj8.:TU-R5~ج=O ͩq+6?DpZ:uqzuoe3#hH]ܟW(ܞ54JH:dl'U:l7.6ĩ7r#|zK맼rb_[ږqxDݧ/PEcBnI O{]D|iNSl7yŗۊ)_=޺sߎ_sfSB.*7lpxԮڪA+Mš"*:8NLB=ZZ^پv:fϚ76ohaߴϞx}m}{[PS-ZZ.i膨N('M5]Kvpq9Y[{Lk1Un55 YFrdY[hxܱWҕS%EQ E>RQUԳ̚Xxh,.8&vd )iMYYP úc)ya+XsN h;l6p ٬q{u21 &:3nèE+0 Mt !^D.`3!!=f!˄;ɑ%4e|8 vۡ1:<? m@gL30I[F'c:*Ny`ZxT$%}քrs7{*ɯ_[հAXƻ\gcĔt4{6[PGq % )y& ŭ[^<Ovtsϥ4TWV),˭bB幹B%VLS[B?*H6ix)rΤ 9fZp͏rEꪉiod~z^߷u=l>SKL'k Xw[0*h*j"^I6j:^~4Ʋ|8B9|z+c$YAP+)E 9BѨڑ<|]FuPıwd t͑eH_c'K2D?bQs~0//,S|$V^ unyОTyվaԭ|\ITWT+Fmv^'Ck\O`5a UqcߌoNo]0"w|UcM}l16-B}[wxs/Z`sCÐ鵗t ebl3iӚ::OՍ*S [iuUY];az~9CJw30ttw4 k|?^y~?~)P!2nFЪ(k$# 9iBmĸI[s攎0-t(C*Gf}@~Cbf5~3Y.ٻkNg7LbwYZ)j֪j.wV;>{C`qpoͳ%y7ߘ~دy@Ek1;,[H+?#x'| rʽ!)Ƶ }|^ghktʧ?,يʫ[$Uߜ&Ud n*.X*XJļv<^c-שSX *@- +JJk"!|AK JXNIM(Wbw50 '7A!rQVPn! C1h|@­j6*Bj)Gep(S!x 0 @HZA >SMEk0 @ cq$"daB # E @a<JKQ r1"ny ?V+;֏ӦUm)ŕD=ueh7+^{g}kI1K'%FgϽJH ZCYDyt5t5BB)"/0f8J}qXv)%lv$$ 3h 6֏5Nܷʣ mIe_h5(#%e+u*# T5Zo ß+8~eɞ͉*3O)}'daIl0\P6 *Eޣ[83:gM8ucCCe7z:|Eټ5:'(e+ֳ+ )іcqEQR9/x)6N5^erխ56^% ?)k^Ubd=o"OeWP"PT9T X ;U_N'9S$e2(pf7H4-/sgY23d.O+$  %ǒRm\hL0a`'xZ6K:t \xR]H9LDs ApG@Ď@Ӑ;&X wQOXD"<&"!o Rm`;Yn:$hLA^ $DEX_O0%P<ƈç{1wcjo7(DϢS->V?!kЎPmWQ-zn,qM>VniU J۔1a Jd *׫䗴d\J^216mGvgV}椌̔:,$'fHCCDbyޜDŽLT?wmx׆]e)G y '>OYë}]˴7v, JfuI),^\ݞ|3i\ڮ:- ,pPA[^H I !A{`^ J&#HG[k EQPiT^tw‡A< yFB/Іb{)ٗ\|vM@2g)5b6 AZR y#f!uP=#/CRS))B/5ٌ$fccg3䱤"Gx`p)x6ӆ݌|Ƽ\ÇC=+2$3?)ghu%e0EATDe:S3Cݐ"'Ug Lu &sY)6<.<6V$3z1==Mٖ̍V]s#}\nB,okޛ5# Yhau9Q&ݷ. y PMٽ tIldS4S6sْ, M",B';3\k'UOj0{ 9[1N?O]MdjMn[%ISіzh;ng߭nMA:Π]jh]m(=bfyL;UCuYo,W^X^#j:ce)_)7.ʆɯH82H֧*ҭE?ŲjvC||erDց'5 (HV ۋ;&XσC.STx (J!Dˁ(uA HCf$ DGx E#!)}LGsaJ8"CK);d/P7 H}J`4便u|pbf!ȝ؍}y:Pmаءkc^`Vab˰혷%~Wq 1p`~轌C_"XpV%D^p }z= x2\p$ ep2@p8DCXh=Wa'+M~#( ُ\AzC"%2 E)x4lIO Ŝ<żc(n . cBp$\,.?q _, G(-^aL^*QmQu*p)94SEsׁϤ+޾vV`#iq) ݾqM$d0`Jd|cFgWx\@2{վWyoS{>B[ZcDD_E MU|~/C^ &{FFFD/ b;rIЗ!]Il܎T) %}a~?KҹպOϾpn c_#`<( 認NmPkhV.%Sy0Vׄ\t v&Hߘ1v\ wņce8Yc`z-; H۟'5nul mOlįti]ӮY~y61OQEB"Ҷ 9I1 b.n~* i`?B[+00t'04TGŅjYʪ2]ɽq_cj5.oj*NL6Yũ8]H# /nF?֐ g%ɒ%$NT?0?AFބEJM:EIPQFGlM-*^!-HO7 ps>cyr8wwsr_MPskz=.PM 0mxGiK ÊKwʳSFLL͟٫Vz%-DgdK<^qV U4ۚV6Sk'ΞZĽ-iWfH[WsDDɋqՖiU3CΙ3㵡v_WhūMf&ĸQZK'̒uZNϨMv3-[*Rxݾ2h巵jvr%u#orVۓ72?fhqŮn^]ZP̎`y?D;d!N,RU!ne\R`*v6V vWq g.̤o,|,JK3%&g>KDs$R6 9G24骡دd!`%tȿ>+R{s0` ^B6x(RT"X^ #Atr??"`$g@T _`G#[ac <>` %Bk3uMvX ryl:'˳X.3>!ō-Mǿ/e?OƩ5^vї~`uP~06ٖ{'s~̅hW%\+5%KJrW3.PS 3Qo#SϥoqoS?w_k9$OtkfVWHb.jԮዾ=_v]6a-NpVSwe="CRꢵ Te([P+7VIȇk,)ܥ;o;-zsx\]VZgv[z&^C|#$bhbOԥu՜˲2:;/i)k&jmWki*{SmKM>XO*? IL켜cdۭ0N; a| ,'{^IWWzL4eNSs_[T3#oe{D9NLd#}$a;ZT"j| fB p*Ąr@> 3H21F&#!F7/rZN)Db)AzHG&@Q͇݅w(1"l(AQ7ۣ0D|!(a5wi8m7}ⶐkA}DcZ4f5Ms8MQmy;U2G{Һ;DsY{ƫmyS`[|9d@XVLOM֣PWϤ}qĘ_F.ݠS:λtU+oG_Fk仆4ht54ZsrMüQ%iIN %& w o>93&.&(]1=c< pe3(Fև܇憾+ֽ_]V//S4CRwsJwvAʚryc禥M_d*r#'$Jf^=jf3kMb|M!Ct2L5Z3e%ZB2e$^JM)&=fHSEW4 K+rdZ?N_7<5x YIwVI#ާE<ޣ:[tpsE$߬Ƕ.ҾRSFi"tJK-c7W+\yٝw"JhYe)(gMumHKj%)U\8N^Fi ]*_ƛ$*g̫-wў* *kW*'ITN!Thr×P6#V\K$A頜 <33n7Art L~8 OMjB? 1N%Ə 8b[w$b?a8p64`"v2ր Zk^]v1RQ@yMG{RqVWEwёo.t| rNqrܫam&Ԩ7 |z;6NyE},,wpҔt;Sbr1qgQ /ZaJW$'c6-#_6,v=s˩ew _'6wC&7 viOFKy5:wNJE5SpepΡk&Ų_T F嬐߉c6inJ2|lx._ʫS.´[*6˫j7z$UM\Abf)S%v?mEQs >%+D֠W8 TEvQt[lm/μx*hJϟ;'6Ӛjyߜ"nrtW;-hKy˽?cZv`}+_9LSŬ! UIorTFU)8=(ꕸ>y:EM:bZMy}6y7uD;k ~U'ngIpl eTEkSwNNܾ!ƅ+I !$$AJ[Luھ uCuY{}_0oEƂ|檮iy^o`ݖL,wM+/ H7[k K~:ڋks4o-q*+[G-K\ wgqV|J=i11ݘEW{ = ㇪|"Ŝ`ؗ $ 0O l&،;p=;lA|E jy#P|L  A*C#"!`[oO k^z}.M^ evM*uџQ>-Xd:)~e.R?$Ujh;;L 9kcE%3d&|n\ ^=ǰF.9!eƷﲩKA۝J"W& 콍y~t#FZlֺNUL6)EgCֺrT"SlQ̆7%-J ~II]N[yr We(pzdeQ&CNdf*Gj34cx3T/}_VioI/Pt3 SgI7(+e(4Ɲ4jRFͨ<"ZC<_7ɉzpױU@'L>Ĕ۰gd[TJBG fJ)J @ERP0Q{4\%v #C"/+pg1ѾP< 6gȹpv "BGTD,R?A1>ѻodcg{^AW) =rzUD(MSDLG'3#džq"\J:KU-sEa6Z#wGO~(iε>|hԵkpս m2ySdc\jezgڵٗ!>&H9$֠TVW>})-% y]R1sZ]uoA˰Z,ZYezlD.ژQ(-$4=4\7ϵhnP=Wz=@̞{NG3CU]P*/Z-sr;`=n;bu-ۦt4[OqވT@QH=QTċK-tO~\9E,NjW"T$5VtVL}OcM})Mңܭpea,o|\΢<R~ictm±:Els$,Ɖ].z#GqX+8pKQv-*d>hp :d-%?oʈoq1͎,L+IzuXNO" Owxj3ģ"Pw9{Mi%5[H=cUDfw]CVk5?i-MfQeTJۚ!zT-Σ(Z?Ywwh߱^u}w8Uu"f dstc0 XxBüarƻ.:U'ط:ܻ]$הzs15k9^g,XY6m9Wa0[vwjT=y Ҵ(F%'D%[To4 Eq /IQ)ۯ4"bXNI]gTV89ZCBVi r\kM xt1NsP@c 5I^0? qӅZU*ՔToyE?H sx5 0 7ǷwqO^,"Y81IQϰB>l~QC>DG#`2u }'A=#`3BЫ&ׂ  D_X7soKKƽP˽fz^Fﺺn}{>u+dC]:ںRw\[kouj]\!dg*[*ئl,y!D=a7;$=N8+v H_yU2\S^'EvŭIrg&ے9NQYo.PC X+uW_q}Yʂ DYf J^V'2o)eକّ2_{D. +A )clz) i:Ȝ'9 }Rv=tZqlww쓪Kskv7{O5+]$S1Xz5UJʯG(Tճ-Ym~:h/qB.9rvW,0&,9ݷ4Mӕs{3Qܐt]2K՗YdZ:Y{[ݣh±?o.]*yw&[o}|Ϫǩu^{|\-m5E@Ö[)3"IIӣWO^!A%$'{FB0J!9.-'Ķ!Kd= GGF'$n%agQ*wAgxxX+ S5ȍ 0TḞ΀ 'je{ D cBMa+CW& XGO \5Y|3xrWpNDNDGXI؅+"z*3Iy%qRDC+ yA3}{ڐkl}pM2yU )&X]`s笹N[%(>-lLG@89'+59 qX\/c"$M9@X)*=l1{f- JWmzd•0D&Q+2KhLP1ej:lCs~lygڄ^d*@=NMPt!-Ě usʢ.Lp/$bZ &1)52jezmUE\R?z,vSWגk"7"F1ks],P v~Kmaaw>3 >mˬW^' ѰCu97+~]vFsMo2zZsWΨh˄IمK AN25ѽP6觘Ywl0͈h 5߂1 k{\Srg9|]tasŽ=>= BGam-6%C[@c.j[ˌoKRU:@[bzcźnSa#'?3l63^ )J{۸9 %J;]Exu|AT9$ %Qw ,' oVJDZ$!O%|`Ug*9((D*WdǕS5F F[hIIE]PXQ(žds "cȸT~&&2FUJzǑ{cU\ҋ()JZErXB6 ecp܄mœBI1N y%bFo8 Z.B7(qHl^?ҐM0) ̆[HN<"B>? Y N L : _ ·τF@R72 †ҡ 35fRH.,% Adv;- +x'D3d:2Y`.eaEj.VY-_~H.8[,C']>U}UQUY>d/Tny+#|K<)s$ʋSbHBWEHl0b` 20L`Oi8ACg'6яt# 5:d 7s`~hEʡ1 u冭o`S3akfo } T 큟PHpvpN&$b ]P ȘcKp7t31 r 9R5oO+f}DA^5[x^ׇrFתJj*v WI`_Zײ+^Jl9Q(MZ[@_2z5IzTjvx73=-H3EOÇ`3d+jV ^4z4VֲD]с1_I-@zA~HH^7OT^Ƨ;VX賔U! 3"mL +.\ vЀ\AA 'lAB7N'n A ? ?H'r)|lA[*INZFL5&zdep}M`-vxn~HKOڑ$O3tbTl'<= $dI'N+lm幌Tv9z]RS]zmxnsT7zO RTeskF'1U,$mu4v6Uޚeanҿk(4iYNuPI޾63;*N0Sꕹi(N*Ҷ|PoE73wp,2izS,t,LHɎr ))IuY;o?4PcO~q %[3]TYcg{ZkخtȾ3HueOЕں/K=ͮ[jm`?_Ȕ_t\xƨ1wX~n4lW+Fv\iuג<)ڵ 㼡_v* 5xMx+~2MlRSuʛzC֚5$,Ke$\!{n3pt[kb J 89򐼙I饖 sGPڜPK0^D]a.R:hYscRP.0T-OC<'^·} K K7Hk;\ ׃$'HB3Z 718(8&ą;3oq}x=v[4`4LF|>"mFs땽nM۟٦^Ҵ:Ԉܜ)MXFX6W{]NK#c0$9k1RⒽD*F5¾/~iWNsݨ>>:""yTԗK {Oq"]VK;vmn5#fe.G9]u5vG4O~Gm5_Ѵ)*8ڝabI>YgSWJ_+JY0u&is5jlڑ:aedcd?ܞr䙎ee)m-y-uLhV: ˫::6J2S\|-}v+_XC/0c'>XSP*J9?>/rh0t7Ƅ*aT."=J9{7",b)C/en Ә]1~lzFt/DB 8(' UDJw{N ΂؀8?'^&k x:nANAN 0L >2H 4{8g .>x0FX?ӇDo#Բ{$]&V6ٶTxɚuU[;,x{9V󙷼4dMαƌV78Hsβf#p$bXZʮ8Vre./$16| ]U}O/o--V K򟄢L!.$t+|lVON?(qeOґgx_c9%+BFHJ8%>ԗVMEE?aea69pFGtPx)m]҆9"nJR:e>pכ=7iVOUH֯nf`,:/[ɺ&,1QU9ٔfR*\sn\b]THnDԝ^g/ϋWd|CɣL*i4ْVjORՄU#eG#H@2Η{NN5)lIsCQ/!eq^%RirttZhXꝝȇxg[Ҍ5((jVj`[Uת_ U_UWM%&!gnq}2r,V֭14Wˍ{i$um.j/_&35T0Kfӻjp&뿊Q,BQ(sp@ִ1i_H]hڈG|LNZB  YAdcLt 顆&QR`߱(4K'en H'-$Ň? -Ž"M704d"XN`8: qR8 [ H&N8u@&q '@1 R 9uCEP,A&ÿBaHC6CA< 9 [S4~)[.m[mfߐVhfvn,'=xڏ5Z\jy;+_t3-/Ѭ~Sj 0)b{#$+#bJg2UE c0~DcuQƓ1OKrԘ=r?FgEeF*Yk@?@J63u*IM֬ፏ|#$:xr3C0 , 2ߐDGא$Ef ҙ7PȎV.ho9@Lt3K3 K%&O]uO~lۃW\;iorcй̎8fQ Wp 8mSIIw?aҝX3#F 30d;kz.Xj(LLQcWfrej&)=/?͆+?.qS$+Km[jUg ˆT[#rvRL^iU~::U*I^g9feydXo;t  %Z@vC+iV}K;Öݰ=*V tCK ʾ/}?*v/2KXu񣧻EnPZ &LG1E%>,awOԉw4%lE*PF &-?`)C ?&4KH0Z;Nb~ I'EZvC@o &Aۑ$x:D`4p!!$@ h"k΅~a;HP {@\×bd @7`͆AhhBaMV=wnD69x|hkm7oS3 J7IŌQ[Y%)3(ym)I.da^#9= rkWZ'ʦ1g2wɟ"{$9.5\+;Le [N^!@D:83 |&'m%HBuc$zy*ȅJx v!A,r[գ @t9JBQt#|^ ƾ#s8 %Cw.HE?dlA, /H i͐:j T 3dÃqc0ʀH'R!~>}dt)Tg_V$`EuB?)!bm`O(>f|^yat|uPl/y3e78KQҩߩ qLfyA0PܩKp.~'N 9`$;˂h8[Š2`FN4!-kYYk66n,/-c/Te];>~˟\Sj(F1o|QşƎ|okX;\tIT?梜Kٺ^SH-}X5Jg'i iWHa`µe(ѓd}AR簴 YQi6lv>[g8a/"`4 : S.=͞@-"C.ša~O~_5Zv̲hRSk~d]l&56\8/i6*>lĴz- Mݮ;OKN{KU'C n4$Ny\M:I_ Q Lr 8 ,~NH]eER>٬y]C!.нݑl8Ju jGp)2Oݔሷ$GWD^ RA IDCsHGCf>;{D$*Ӏk{Z _΃ <"Q&yVWx` d ġ@F^@Wr(>-`?VJh -q~x"EZK@ukt@KxVš'0PCpGBh'vbw3 +6Q?u?=f }/y$&TښbMH-M\:(+,} ŭ3Ct9$ ~ޠhS)$.X̶OkPQL>/oJlw3}y-q7ο̕l/d`X+Mf%mi.juH'=kj;it]Yyd ҟ4d[GXsgOYݼY18cѬ݅mE徒R/#G6TڞK2c QaQ%03c PUͽ.MWl>a2f$udH [6z-)ESpj5ZFF2J\GߕB ZS221MքMG.^4L?S7j+5ʹq{-|iek_LQ>fh޷2_ojjLʋ kS׷藛>XPP}mL#SgC5g{]jcvrM'R+nJ݊K5[mBYEzJ4wT_fov݋mm+]j5#NTWzjVLi_[䘋 Ih-Չ2MaZNv :@'d ;Tóx8;PK_iBӖ Q3<y ?kAh fÓ@ vmH-v`6,CC8 6ßї0f9[J!ЏHL%'_CBEKI`<R &|q`,\֗?B @^ѡ@I#$rSK 2M4B.#M+ tޘ ,(ӔޛPnuF6M)9P68jmBurfE?(Y+ˊV*td+!TM.CN#%<4,`P䃔]dVEx8.4Xy$3OݲgkMA6|ǸKJKƢ'NOVtQ(35?4v:, U@Ɛ極*\>6ͭ5W[' #?wTV7}JDٿm޹<_+T_:p]!lVHBs-eJRS^)*R yvssCwU~]j49n%͚`c]Hdǎy b!)o(XIFZCJ:!y`8 F~@6BD(ȯ!@P$(CVh =HB#ѕMF5/:6e@6B@߈ap"$/ -C˨ 5a+З{0>c Z6{=+I?hn+ < 'h>ˉB$4ṚrrgX$>'H1E͍(ȘRV\܉Θ]!go"x\M8 #yg3viłOmŬ')+B&Tul?^;vv)wM{V+U#ESM#mh Ѧ-YWՂW|q'C$=G|Kyz.XHG~o%ͽ0߱v17Jqs.uZo75oŕ.O:2;[րU!y#?86k̑ۋ)`HL7IY|!}h9(4뵈m5:Jխ _dC'-VetmZU4W?PH3z@=7+p$a9b?b[,w:bF44#5g5zggw[K]Cwch̋ܖﲮcK e 9|~@~ۡ5hڃ"%IX ~jA"Ac4tt7BjAy9O!\pq< Al!A +tڂtBcZ`y H+z@{$!ˉh'гʄJ}PvIH4#"}h.ëwZg"%k*7e]2Bޤ3&Q.+@1yf8vbt`5d\ "IiZzIZ.;6W?94L$^ %':9(THd&RAxK9;.{xoo$OW4B2Z|Кձ̳M5?6*#}ky^͙YnKeΔcߍ6d.->=>)GΝMXfewwWo~B 13f2W>YpV6qG};T$֟TJ :1M7mr6A۶n3Qe{v_NN?Ff^Ik@p,@MacmSbFp'LDr* h Q6?9Ha2$O\ Lk '?tMtG~">{1A/-CsR?h<vKůEy`K_ uwJ8 \ Ae_7$]$jYVȂa Y];G>ASa{W1't}<,FKkaHh>}6t06F`28DoEOK~ V7,Mn)eeeQY5J7DBd2 ɝHaXhgYmly{զEimuB67N0LSgEّX5XjxNzs IO)>lc+5nrSSUa3> NڢEjd~i5A:AAjivUCΗqۂtXK̎ECds3 ̆V'l(W>B{)۳v*LHm˹YP7gew$h*fXmu)5 Ҋz?eM?YP[m>P/5];,)~d. 6Ԙ60]oPs?{k+K4ͯfk*P:TYU(ﯺ%qKp~X{۲P+ )w bяeIy#S*y̷b0Uj+E!Zm#=m|Z,&YvY:ouC*=&AY5>N "ƽLS KB~ Oq+.eAm47vcaTZc9zNC{\CJG~0Saը!BCcav½q#tX@m/ VII ~^  9Jp 4z .؏-ߦh%^MPBwA2<qHj>щ$/R/QIq%O}!vٹVh2}.*1?6*M5PouƛR)zb驢ޟYSq?&DCAz'<1ϐv(v6̹ ߥd : P4n$ueTTK9<3]G>U/mfL*7y*7=}oxzObe /͵p=r_jkdaVq=GV_ᰔC;ixUΌ<|If^Z7{KC<"v { ҤH}\4卜m946q8RP̆ٯ;M)t\r* DL+#D7y6EktoAUUT~hfGz*̴?H~5 dNmfkcMlCQRM5\̹-nYbL5Ty_Syu 뾚S,+!+ű sMyߍHG1=PqUv+\^ۮ۠--&P^5r#%MRAgVY۔؊QCBČ7A9oU XFh7r} |rfESdaMIF#xބE*21*-&GP48 z@"(㧇80p> "`9@_;{l<) }߁,hCWI׈r8G 0hzߙoBπp p U-Fg# %|OQ37|Mp PG6s/<2?K)C޲Ys 9+]$ \ĞQ`U s]5m# P4<Fy3d+YaŭE_S}Qe+OB_]׾-WTK} yK]妯f_Y#P%#0J#CG?*O|THuv[-ʹRqTj3^Ap)VY 3O.+6z|ɬ{4F Dń9 )eE miܢn.>6&؂kUIҪ0`\_5:6T,L2Cf;`j G hUzH}E. Jlby%N嵲ZٚwT,?2r,_scL-lT5 -2Vh\^`"/l|*ѵцJa6Ҧ+եªwp`˫-Ҥ-jT9p]eukG=7=y 2ϙvD88 );ZڳմxrPt5ʰDnGyHQS::ZFXJ) x*$xYc} cj;ڈģ^ H ~] 1^mA (/9@?@*Pn >nb`Kz A Xu X0Ga}Jh pP9/"qeSԑق?"U&\5w@<c@Lq_s{O3:{HR{~kjW Uh1?D9<J8;ԄoTw2%aoI~'ik3q-B_1.ۭS1V!S!s;o gijﰟst8\W+m9,5QYʸqONU\Xjd&f_*֝wgF)eD/ٕ2:p]ǓnVQhj5hmKocx"L,֨=$ CN?4wc*\7 bd熝 |qs]r}hkk1mG hcgZokŋSM'͏ -? +嫬K\BmU&WHK嗚˭)-/W+7~fcqq =~.CߩS.g >(fV)/)U=Vi^4ᦓfu~oNrDOUdkANAf8|hVSmS8ݡ)kȎO `e1g`5EME_HHVP'jV*N;A͔sr)^_v`qD㉉$`#x~[{Ɂ<@c+ph".[0h— "XMF+g'x0r}WB@&A0 /W@zK >3%xh 8t5Gs }dNdzd,› =5%51A>|>֋AU./Aa$oS>!bRD$o<<8% |(@&bC yĖOUֳ嬅}RF{4a>Q4^ƔK4:-vq܅Ut d 7"o!0K@L;00p0_GJ l TZ ŁDv`G"nL5d<B!>dP΀LGvq0@R` nC @Hx0,2@ Ğas*O7\M 03o1OU&5๡>]9OgFb'M.y8"U^d\ʠ'x"Y]'gx>#?x0Fp;RR5%:c,,X]qBHȏʼ-C(dgd{SO鶺=)º$tf5:o7~s'a!s;8pC w(BڐH/<Omg2ք:Wvav*ZpaË9KyDL@ "ކ2B.!lOȓ^d#"wohPEC@v9l^Ԥ|'e6EӠ0 Bp77z"xꇐx ޢ^]`< 1c[/P8 a|vv ӗ2@}gfR̽͌I(ߨ{6TA!LFl:v9^9cF~rd+v)k/GHR|`LXwFcE#"“$K|g•OaٿXdDP}c=[2ʼnU<wTa CH-},rU}K&#&1R/om-Z|mJ;*Tf)vUt6z5hjԲA4E{ҟCjsXvΝQ9@WO_ܠ\!\D霟sei]̛ oN+"Pf9 0`4`Zf*0m#|k)e/3p jgIf6H9E^"bfI4/VƖMe/T? eҥ'BY}IjTa-VO,䵕U.9 )N5%B7_vT>G/,BgNFAxbˠ+Nf/2ҦU7M1Zo#-="N}RA]rԾVg pi}x6mg[UC^WQ}@ƌ$) ҤIUDaw2z >LJ%$%vyHQDDĮXT1Vwo8/$? l>2b,ra8 aEc"?FSp#`* /q'᳀̅C@0 CQ&90o BN8@,0<I)pDo(G1p9VO  )caij̣Yf2WAcM*5$t)gB[!JmFod hߋk ;RK ߇}:)<SG>xĤ̿S6EӲi_ M$:{Or(?~*zvL^sۺLSϸSx4+} #"8il~Yhκ^Sp\^-~Ԉ>M8%u(5MP?4<@{]@&;>l^[Uj6wOF?ּOzz%7yZϮP{3پ{.kzN5:KlT~5Q@â|*r*n쓰[WrAÐ=cZ"kVea\sC--.Oፑ|=UtruNcQפKR 1Kʯ)ϪBtIH}*+-TJTuͭUl=3/wᛨFM4> 3p{vtRU1MޓKE4=v8歆7,5JcEĥDZO":]V39&3un"+ee,rqR?a1~ L#&!I011nb]K#DN \'4>IA1lb)-ri ?cX ~B| ^eGm"Te;DMh6@ B8`)_)@D@Zo0ZFBG1a_bt ;Jֲ&-dqZ%m# Uؕ;kiSvUmn/_TƠL7Ņm"$NēaMrwihj\!/SE7zy roCDFID3~;+Pfm[Tj$$wIor0I9iz,Kˠ6CJ}>f=Oi-;}_dm"]>>yllg%v-"☂y""#¯%?rvBA.:?@mCdKhW ǔ#WƹRUQάW~@e}AZ=>tc^afnPɞFW g˴N6G*Uv~]0?.D$:'a qkK45uf7Fj+Nv4} 0TT"|E>U5הRhhsfiBeFZJCJޖSՎ:?╸koxvig} UQ$TUU>'s|fIes\[O>P!I?wa}NggI%#um%?яcŮZ&<:`Q1ߝڟ|${ i4P&ޝ2;I:1ɘt"ZzC6&/1( %NLXx*B 53=ۡv'_$9|%jz#O$z:@@1:L0FsB3kƇf~ uUR0|t14f $8~g1 ҇?*1fXJclNͬ +y, zILI1[\lgtCXCdcFuRNē_ cyXcX{zX T "f'UD&x5Ѣ, @Qc<{*V]RGN69Gl8)7<=zZ=ʮԮ`ib$JgV]]غuQG1Nf;nc`!ose ӏ 3^_T)S b ~СW?&VRLIIN9B#9U?SUHRV;t͠R?O0p3fnak%LWODֲPb+kdؐtƍgsQfnPR$r2 eoD9ks)A)/̒LMRCIc}e9V;.3܌x0m /Vh2m]TVM(YI $7l W TgGnIà'B>Nugice e~%v&@dϥ})Gݮ` zLQ*f.qeur7/)&?+  4\GS1d{jR.)#t$vgR#H}dBHz)qSaaTğyy/B?Cq))8|{hQD~v.WT0 x_ 8 )gA! י|M X3 |2H* ~ H SV8,':rɦKi oX!Bƛa+їPʹT i d?,h&c(^?PO\cӃ*jKKR2s۔_/:[ sAJ`KQ驭J6l<  G;tplRrTNYF>)3%jttfvwMii}u_]U uk3jv4I]8@p*vzq$&}"'/Ў(}֙>c m@ŜԒz!mY}&+:|xFLr6EYW7Uߴi`~o6TC◆b͆2Ze!C/+ee,}G-A&PsR1K.;@D4YAҡ WSY`0mٖ:4`箸@U^f}(^o !G=v6"1?8GD_/Z&bT(iW,ܿ(sgs՟OzŪ祅UfŤ2nSReTkfoK+{T(IDV4CFZ"Z u<5HRE'1qO,bA '4' _ÑH3r\xFxNx_C c3 e8"n ր"í `7C`O?G1͘ 0ڎ.&Cp9[,L~Z3;?2>qIcda<Nqqi_ftcaeK+kR5E/KtöݢV$>o'J")*_~oLR^3~1Ѵex<$T]fIo1g{~}yT%B@P1rEy]P?0944'{^sڋjt.E*|htlT($_edoH_N9YNW i:k}.<&Iy|uvrjjU9ZLw^Uinh'8RR?Sd`Z7eSى3H I"$'ǧ%x(%*|^-1bpr@3(Ά` X ΁7$ SP>8e6{\t{-@!*† LN8-p$>z2˘x\!cL]bbfCyCWy圂<^6/#f쥻Y"83.0BWϻY;8HA|hV2Zσʼnػ6.ClfPq1c~߆'G77Ҡ|WŖ sޅQ[#iB"~_G0UݢSybw[|;ClMR MlR$8 #v'}Nq~liܹLÉzCeY{W/-Lou6X|!f2Lr+#8R# I*MjF/mϟ/S i:B1i͡ R.y|upjoT;4j sq/Ǫ*B`T7Tɯ(,R%Dhh%T͇OdbBRZ<,^\h$9i=cQY!lResS3pD E}M,rrUXZie_9WVvG'x}{ahlx̾ݝ9\R(ЙI0m6CEWh;w_Q)eetU=IT^{ɲ!>ai0GK rw;lh:yʡ0òzqz יvAMƅl.,ef5S=7z0PˇQeU߼5e̤X^U阜< e\+o^4*Fˆ4n[v=Q}7}]uq]sųgVտ2gn|^,+fꝷ Cy\N!KZQOhZj<#&T1NȂ5{u^:uY]}Ҥ0\2Fw]NU40;_mpuP,9W ?`٦7γ=YbTCV;ΫVkFl16W.31ʙ@;J Gl~U_S3Ii?lIB6Y0[y{\Ֆ*_.ˀ-pD=AƔHN3FScc}{c䒄 }^_Jșֈf"eL'FGB"^h"= ,# `4?B i`8tËh@x/L c!0_sSSqKWרPpp=Dg!&PD$i1_Ĺ \_̹FZ1/bN_+gWd/Iۜ]FjŲEWqQOIM4Q,m 2SHudqi;PSޑgB̡nTҫ3_S{sOs&nY<0_uBfֳZB6_ohw Fc-ntJcqybVmW\_]p-Y􈄫b1 %`*|,QmƦEGkNtCOS={2|>L}NsFl+TͤlM'׉rծt%ҎJ?}^^qCC&,k`fNҽW5!VϭQ`6>>͒j%{Bsm]uK9 exS`ؐQd+0 JRIZ7r4DMe8m8||==%Y7.U5)kYEbE5ƺepǎ/u# `Jq; ܿ {{5U,[_I)Vu*6/TMi18iqLtW5Vd6-?7m۴g>h o˲Gl?}i %vɤ1W+K<^}=)µqI{Ial'vpl>#g̡b\1s6G'8>3(xt:r SA"@2#J5EN@P"h?SCh$D'/@N6P D?QM(l&u7SBZ#KEE|IA\~ΚE3sKs N&pԩUɇREވ".)%%tf~Ճ}2߲Q{iۓ 'foL3)w BQ2CeNUAfJʫdZ[!@-1Yo~EyFTا§pA%#›e9mkDff5RQ8qNq}bp1:M~x(#zj _iY6?O} ]!H4_nvp%=z~jLUf>1gk3 BuIrUX+_ihUou٦zX=FV8 ٻ jEg5֛dDZ&PeG9W.5f5U8Ͱh)^zm;#f4-ZÄ. Pd^YBlgD*{&K3*ɲ(F65~Ibr^DlfXaġq#6x7<A{ {zeCbx s(Sy'"pRY@/*t{m7u[\TKݶo4i Zwm^ j0Hy&]\!%1-!1eRʏ܏ ՙh&k}335s"pSw7 E}Mm#SUIO#UIRPsT}-m9J b4z>2l&ettBZ8{M%4( $?I諘)&ImEiz"wE^svTΨAٶr97+c~޴5j&bd<"pfl4v&z;ܟTI:I'e[o(}+ p$) Yhm7Kj9m}Nb*oߛ US8n%iB꺪Gɕyf!C'6(v{,s^;ھtK*W82)rb {TD;Q _`ڔ6Ea12N s0Kc1*p7CtCo'xg7k ]H,'bmn9b5Z[Y | +Qb Wξjri"M,J^kI 䜈`OJ)IR >3j>UODH ф; z?jEl:032SXb0SŌǔJ%\bqQRFOLͮEfIe+{bvd67Ie/D[!@ b::e)gDA/f]a?tozL;oƼ@y*aJz,4MMD]#NPJpڐ h.B0F&>e9://6i7%٧T'CQo(IoR ̯tU󪏋p56 6XW]%yU]l䷜liU5\*f;[:&Ym Z fU+.*~;3{&U{j[;<^Qu*hgѾ>=ya S  E01LVAa ުSqT0Q=^{+K&GC^Z.i^\i[w@[OM4Z}'p iD4wee5uk20I:+htyB\dr4\ οTX]5XmsH07M3Zmxx\|yZVcqk!Z·^ogB$ "3~n\j}lB}/V(w^3={|}MG4[(wjF?G 5t/vez{-GPv7{էOwu9X)KXWkזbp ȵ!.`UB2`㍗-;Dns,2zn96䚔ƅ%186\eNnh?kiTUNJUh%9G{nrŵeyOr<)WPsdz ܨUIZ;~|w|m(t-"7vk'QB? 8teeZi[>!&g 4H揚 Szv>Z})p<8X̓*ku%I n"cP?ުb#r԰6($GVR#K}|EvnsLa|tut/Ubk# #INț2VZbFCM -ݢ jc(()T"9f i"n>Y{X~,bay("&bOīTLT= hhV-?.sQ6o͢,QgԭɬT dyc $j%Vߧ,M !OQq NvMRfSW4˘ !t\(:)>B"c[ҎSQaBWY&^M MI EN"dP'IYꌁ!N ܫ3 ɤҌ%ք^jNvܾI[i6}6!5ұuQ_ſg :;uSVNnQVWn,sr`cˬwAɶ|ghӈfF4胹<\l&"\\Yp}le7Cm{rch0 ߮j=a9|EAx|h0Y*0 CZ^cժ#2^ny$ڞ7V*b,3ԾG#̿XWl2f8lqj5ş5_ d(].9P8(zR_ȴUc'U):09m.NS]]ői6~55IX~l= U 0v91낆>j+4 ʕ)t nn&[F^ס^ %:wfG|$w,:~;ETPk\bMɌU>el^ EKAh|k;g˰@[5wYX=!;? j#*?U+Vb+aWɯܥ]'7j@\=c{P%-JJlK7-Dv?d䄫Oh;w]/Ym)AF7יnS#!0b$-e/$V"p-dbX)ͶH&<`eى|좸Q1j='FHҾPGY>8Z7(C"#D G4&}Cؘ%ɩYB>ߕϾ-.%E +7%b_?|3i(ŨS&7ּY,}OE^'EPzXc ^g]U9)9n`ָRxMvR^I rJ#TģIF9f-|ucF+U$ޏ-Z5ךZGyef8\(!k͞SV_si^޼FHEY2RD,U^YVΰWѺ\M[Ov.o;l;>6xn%w}521u{Vg*]n 1u@%σMw7Q>odtrEAi\fl/0)EƳ=K!W_fy]^w`v4C_oPg'gvrR9;LML0Wi{ZnCҭEԌ'^2'y\~g{@K+ppjA>Q={Nl[.Llq/td}7ˢ01rZ]*v8FُzԧٶA5 \hmrsH*9)p^t浌e⭂v?w@[[kn[skڌy #l}L}߶ţ!([7 =rZkBRWJJ LoM!$_6&0 GS袟`UVf/=D)qU~C@rux u7օ %n6+"h\x.(% e-Ne rQO)yAI5a*H '~iǿ>MIf&% nJě9&[I)|10y^ ج 5p8T$mQPSJ緈?q#h}R&Qr)£DNG9;_ҳė5Ӛ:R[:j,4 6o? cl+>A{pK14UREIwymjuBYIc؋ X4{}}b]Jv֧X WHc. kkmVL}m| k:wd<%4|. 7)y{st˿ 7VcoLs7ktu h{!3\םI8W$ejaW̳u/*=i1Q [HXΡ!3 l,b]+ƨ5[lNcU[ Y-UUU;|$Q E MsBG}`*.cވrul톳Z26~ 'b?uۚ#CjCۇ̇f ]M|]2_ 03NMվ2N=h0ףgwkWDZ.SǟKaG_i}S'$z(;oo46|ʆ&l*")Uth(ҝiKP;lޣ[ysK92yN2g>Sws0y\{ [ {5wsȹV]{d݌K74oz}:8Sb2J<6TFG.83Dod]}^!2 ,ʨ`Of7QHMMO fJWN뢆E ̕gTǾD huT'Խ4m.ꁕKB$a),'&OyqG.!u JMƾD~mKwl,3t,}Nz/7'4.rɲADnM].mnOk)Kd0u{UfaFӢ3o6B=K-543Nrş׼i_ASTǜm{ڷ4Z|qw߻tEKюx cKP]MP4-@v4o Jˏm:}~̷DQ0YoPs: P^vAĦ=hlTDop<31!藶 WihUɁUWȯ&swl̰OC[@.w8-YRrD_ު#=YfQjN˜\rWXӑ6x'ԉ'+v>4*krMͷLnvK-"aJ䬨1hE%MEk3%hmųl<#2v$\״S*&Wa‚}E͉{:Vmj/.e*LjJHemVW; cb3L)nq.5#Q__;|YG,[:3>ʚQ~Rn;?R7WIf`8_ V]܁xBNm]6ݣ>.eJzSfb81&^0)"ĭ s.}[nnqq޼ȹJ-\hpHG1d -\JwJj߭=sw33;ʌH˱d'TWRZyT>ԖMjMfI]5g, vx`POk~G?@󯠱|S4U:m[) J71ZCKْG[!qgB J ;nMvo.mhe\&IsrJ4LnR"g$eWL $즢 9eKd3]!ij]D s` 2 \#4}~ɗ4=*2mE>=HKP뷶Cum5-UC٩Uךߡ0kψzҲ\/;"%JfN`9Y:Ngp2tGF(xLiL`=m,4WOH9 {sAG|TyLy_mS4:x G dVd +/"&+baצ̔}Mr?zr2#J[W]UXvg6/{ tתb?J)˒4xAeD?~KĶJonɩjj5>JTӼp:\M D4e(0]-0r1WӉ݄E oFX.˧qkdlp>VK*&hD*7BhƷT+@N彊f9h$>ד_/BJdgV KRFH(,5|8K#agd-5PlJI#R{r>B bO5Tn]"rGhXxWF"PҼUyDI0;rFMRR=w*j |)qS+ Ox7T&=+wT\G=6^xRh+ΒhCwBuh19B]lFo}&UҠOZ%IsRwFdž 8>0ϯwد#X1%eL_LGƉ4ԓ`K+3NhVU Aڅs)%9Xg^t*C^{='=|~iv!hi(-s;zTla{1vqC7 !#f[^(AL$azGT P:-}ޣX=5#c{B<#+>s+S> 5OVq%0aI?R)kZMFKڋ' Η-*iwrӒֺ'jznxxqPa8cl58}G7i~sIs 9$6,5NPlܒ89Gwf7=y\_U:E? (&{fV 72;DCCnluӅlMyX0 UhMGԮD.q[=[׺D&]@\gAC5*@Scf̬-?P8]<~q\m!UwP_GT:֋mVF5ɵE9ȯC;iV^Nb5 uws吉jkd4`\'\*G7?GY"CCMb_ YEn;{ ! gb,zhNP 6Tɇ;bXH UHԢ睊rE~X Gq",mcŖL,=XpԵh\͝r"u!s'嵆=xZgbMdkzu#>vz' 7&TV}Ia}#Jse*E;]7\Tw[Dץ h]C;<ML![zbQg< |1y`Z[40<퇿! dSl&:@Q/ToʏtMe~46 c̠=_Sx+im X1nAH.\>+cKKvfsr,%Gh'-,'d zl'0<=c?kg~;ƖS'p2L MԤ^(z1)"tN`dyazxA@BdӀ6~3|>xmR9nCUTο瘯 MD{cA־}{EcKbc݉`+dM;%.A=g,:E;wzu;Nf5dTβu˞@O.\yd0'{aڎݤ D1YAp{:5{3p]m! IܚBd 񙫒Ok8(rR!QC\?jP{Mx "K3l;Z `*$-cՄAF;&D04h5(lMT̕>r>Ž6Vj.ö;PjTQ>l dAQDMd:IPkX¢goBr/Eb_=p^Άr;KY Kѯ}gH =G*FwDŠ+θlC1D°0v[јcyf6S ?W2PRc(UzN0BOk2U]:txQ݇jH#sûk(HAV%@z|1mbFFHnKqZ:|JʩSiuJ6*M*h9U@=ܥ TޮYl򯙓v6%h~TSTz$]p $x[e ERX,[\e$-;CuvnO䗰)S &ф+2$YHl@;QǠsa t}G?񅻛g_P &J/vyѝ攜63mx)5Oqg ք dt2l#CSBr^ǞdogͧH<;6+?icxBLEpuG%"u[ph5%5 >wܦl6 ׮sk2ȉ=?յn̉J@SNk*pP,,LWUV8U32sO/_?WzFpquKvkΤJiucQBuFh*7N0XA:<:&Bl;\{UYexv$q r I lՕ}4Pk4ΔjUebZ^)/g,J@T1dMNQ/c7:?jۡg*/dw}~%JW&R5j˲wE n70Ifs*qhH<]@TvUIt+[~cRX_Bz/x$TvjI]ZAhcNx>vY!eTUM `hH@̔tۭjRb-Q٢/|DMp J VQVOWNJn&ɤ';VXFF NLx^yjtaGb0~Zn.DU3F8'#7?cu/t%w7sjT[4hVĵ SbB/q XRm >_Tόk>K{_z3e/J2! V%(`ɅYGڬ!zN$,8BKa/cW aFZQ _I:<%gg;0:v%˕=//̱Z:7LZS+e1Z٥: )f"rGxڏJw wwX'Y̴Θ{]o޻V+"7RԎgv}]]Y,.4٫סi G{v*%{xTn:{=sM־'Sj0)o?j,JڜbSKM_,{ 0b#sKSef:.( w#E x zG#ǐ}p ނ  g!4󕵀3WUĀNUptEX;%m¬_֔aNn"EQ$s/v(A\)H^\K:? rʺOmUwK \?c+⍢pj Ij"խYۙ-=*&X3ϴ[[wnk2FY'Vb \vG٭8iҼLyUN8MG@gD$H*;-(/+Dkī7F,1 1 sF:,~7wShr Zy7 ;u2t[ayar]v[n+(͢KlKaDq6V4h9QEojAڹqX4u_C[8 pQ!ԙ4u-ړd12 !gb׹~{z+w ̂p2 7iYbj6coyGk~\9CTn~?BR8AmEPnb -ސtⳜu6o8Ŗ e7/oM _* xM˝~R sYۤTF %_Abt#d\dDUP/RMGIh|E} DS_GA2m{9뫶kQe8QM4⧢U@4=8(“>ِp)nC5BƦ+]Ě+9Y c#w>CRd'`1ycc"#E)ӘVs9U _zm6׸5h66cźwnonchqk'vw3<,Vg7i{>}S;!# /lZ'.Za2^C t=Ҟ“Xľb;0YiiINrlQi{e &pi[Dz 51L@xl~$h5u+LTjV]?\cOzf{ |`^V) .^K~K[s>!'ې=h_$>kkS3U;yIFH@nL 4=7,qj*8k۱xPcD|ᖷyX?Ba*c@YLDDsЦN ]DmnmbK,hnpk63dzzj7FZ.ETw c3oUޡ +-XKJV$Gw߼/ yv1D׽*+!)A5ٮnދnF~З;UڟhR}m[Hh/s>On鬟{Y52<'+he-6>Z5ʔEOBP3--.K*Oa!FU7})f^ks`h6_[u $ HhwɚpBVlyI>UF,㒔otPtE%dNۆYOX/"f i^?CcL79:NhJA+̗- ?V`gu{I?h^]W LW0 RlDֵ?v}\eKL鋁v$pJn,Bcu[@qt@/&LpiuvZg/"\7qIrtx6LpSLS :Q~?Qn9} mެYnAA977L[G9lP\o\ v9~̴P* T3[mjG hg-Px;s̅EKk.0 sǶ r𻌫iE>C}?)<0TAF8&S-4*.!hu](bpE# =IC3T=PY= a춐L, FFYD*Z}9*]gO}#;zvCŖyrfFNHy;$l9#s_\"qt\\ o^ޕsIQ'Ya&J<2*>!65KƊK#'?E 9M!i,7`1_>bBQ -~yfi^W ^COuzݰےZfTFQcjͬL`kߴ _^ ~\v-t)Q/(Y9O^d >+nixW/YtωҼſn*?˕[X\] Mx!3DӬdO^EÝ[GFm[c V.!W|^MVhmrz UScШ$aJ! l)}e1/xi_35:6XPj05of0H:CJ9WX<*ixWJJ]ffeFz{HݲGe ̺>g]"$៕ieW0eҵk " =:j6_gڮIqI7bn|6?^\)$%^I?,,( ʭ`􅆓@ 4]v|iZңEג٢6=iyLj65hur=_@Λ{ZyzhgtyOc;6~yY['{%‹ePͺݻ1𱗷ާRR^t2Lls@@7t,i!'%=s?rN-nE,BH5=ϣy B^UND8{=# Q?C( K0q=0R,@D"7Dqi-٪UcĽ5պvUkg2{(R0bG_ڈ߃rߊte6mYgv:g_vlҨ&nLH^*U{KkSZmڶ}{(~쥚!xWCψT>\ 4 .;/Wth3M S}loX෰I#٫ \{ S, W^\Hn/0%ʜ,K/9 RNڿpmD+!ߔ~՟)V!pOԾVz]m\/MOu`"Mħf)LsHsxe1E'J3OZ ^9$(QZI|r޵ .}e֗n|5g~-}UƪD@Z|WM.-ޒ5t"'2|E΢ԉɏswjKG hYtCr)pͯ7^#60ڰ_18+Exb%lq;;![s2&?!*jDmnIŚ(+^=b&(_wn\$dFk]F ^?yDo'j)lln̥*$؆]@n'), |: N5=7vd5#[ѠK]D5[IUϐu 91(9Wx]NxDx'DzuVLk:PQ^T2Dmj0XƟTz=:-SQGso.FkK鹨В3Tf{6ؔpDͅk30C d5|V^?S=YM2Oq[b 7D3Y >b%8px_)L4(0GyC~ u8NYOkZ#߉>#`&ez 447UgTNN=3F~Bm™El,^nRF\uAEɾ1LQϖBTqRHϥ|O9Uz|#2wW[0 Zl\/X\0:7oBlvf!a(j"cz(YgqX 0PG;D(?73%d{-.MkJC|R) ;Kk= C-ĸ6>ND%EFO#ұ K5ns0qm YeL*fɴJz\R1#I2aZ:ر~vږ-&iаh{/@f2ͩoto4!cSM'e7e7P-Q  %VeAlۢaX1aQ,SE@5?v)&x5yW͜Z{u2̢2AEA5lJx4y4o׎N4G!f2*]_ oaAiT+NGa0T\6C2RZk𿨜Y*A]%<a٘98DS!^ j̕"v!&Qa^%&(J sSXQ?噮,}.r>\hӏK%hOa}?@gDc.K>4Zig8iчi8 VGU3T2Nb+)]PK`&6Gfz2ojhKe<~߃v oJhsUgk :mYoWYQ>_SkT](Fu\sNG`MF!!YV(38seM8â Œ]3 WjQn9sLyμI=g3uބi"xbQ= W8zlRU󪙢jeep$~Wdqtu7T-jꃸ1S6ؤ -2K m=2F"vц^ [t.ǀU'H 6ruM/ۯn%jMٺe‰М?ht_?SR w9%Na/FdzAҹJA@JSB;G5dDl Wrh_S5U*jtưj? aVb;Pd觩 &ˏTב󯘗8ɍ0~ e\MG37ZRn L`6w ujoTQgG{QxŎsc(NqOU]M4 P!;xDTml}l3 ݌Gi {} ֟G2L,g[a>HV ItQ  0(DQ;G鑒dbpQbN#| ?DA}OsOK+aaWBڭad닽M?j٢'#Yglj_5rv6ۨӝ>;>tD#DMjm駋W@ ywضZ 0wyt'Ӹg?U]h'p![f9nBQ +^ĥ5 {#SKN'*QlN\05ݴB|[[Ap[$W-_ swK(lYDA_Ɵ$vM]Cr,Ӽc5{lGI'Q^W:ږ͟'-EThy:-]Qps^ZG657w(nC;55&R>Srl=*1?cn-do8J!nT sWox'%8-bTbM⬫1mJ lGu%p4 y>ʆY'=ʋyN($^i*MPXM'o:/S(ɥ]ws<=>o(׼O[ͤQ+6>U֮ڤ$ _ndz⫘mfoK4 )'Ps:vZdkg+셾¥BS=aSÚ ukwغ 9 U7 &º7~"ސ`N_ /k*_k ^44|ZP2q57[$GrVs%'eM_sK"rɐP3&BϩrxbB{_!R`;9-p7v3@i|_\\fNvnvʶeeZg)_L3*?6zexlǛF_9F@ۈw0Ht۷2ȵ 3mnJvٕⴒ1Vhn`Plƫ]Sz]H 4t ECz7OP Xhj=_l(!iRKjמrUS Rc S9M~xjxcql<'Y}W_|hWe'r/_KTWg1Ɨ~'I;>.;ס Ovު霅m[cP&^K<& M|L:1zan pװjkm} sm7w@>Q؞j^1bKfAKsP.¬}5P1͎%J$ )8zVaϱk<>X8a<d\1 e FG`emQ|^ܲhz))É+[&r~]p`P2P n3wxxhTUvO5aWㆫbHjq+8=SR2v&z,DFR9ѼP5ߒMc: w Z A';Vzu=[Bw'wgoWMQNT|K% rhK _/ey,}н }fVٯZ?IٕLvƭ>ph<[XmrT"~W  [IK+t5CSJ0ޤ/+-mLPYY|9s9mi$ }E|$Ԓ#cmba&-.Ma{٣]bl i F(]~Q[ b]1DEߕ{5D Z>1N垡CK#OQ6/=K$WO)5nj+0{:1l3_*YZh`4$Q'>"n>ҭF"<<3~7v:ϱBTG!G->nr2A"cMNw\_`5)Hwl7D 9 }g# h/Z]zg}aIhʮbcqDnA .N7>&7Jp'A/Q=p]ܖ?X ; .+ kesD8>!ue,o> CW]WLVю4*5\΀gj6-]!Uo>Yn@ÈXq7 C&#z@ #Dbڈ"T.`D YoiNJ)cA6ﺺ6ZT@gM Y:L"%,Z7:0Ы:?KX5MlzMTq[&wGZ 6ڭp"s v&P}'=Ԛܺ[QP rTU~2{hA>T|96THYuk+X,ASp0yB>W!(S,.L]]r.ϒMMWfDUN/c6Z VCyCR { }B<4*' 3?c2ed^N*q)s6[9/_w0_&-2U K yEġBQei:"0G̤%sŷx.dɐ'%%~sB[}ڨ=%> K_\.&RNP\PaXC{rq5Tcܩ `$~H`ɦ1m1/:hh?U{5ho/ö)\eG;G}j45_pĀ3DŽ8#/۹g7^ijX~ 8Hj O"EMn'T  }6ɻK'TP$~NƩDLYN.4-(ǖ>-2)Kӱ}hGZר/˦ e&-`:R|Afa?L>uQ`Grf &j%Y'fk^M>0FږYˠg;ne|]mVްTU1j7Ѯ})3@/Hr*;,빚 OLz ]9CN՗6w$Ti/+#-;빃 ic{5\9A[4>֡;L|U [ў΋9h Pƕ=̧qz[YW]3G i6Bu'?itTH7𮕂4);ne}Op"]^+ؒ*Pm+_GDvx8Rnq5M"7;/{*zPd~Sj"m"7ݧb7Tb*(W˻1y 3oMNI^*j+n UuaV.BǙ+҃wůI&ȸ5Ml|z}{"#@CTf2wujVN77xAIXM昉p,7ClP܌dKu_W4׺{- _P(E9:{~Iq5c0wȧ/ Gjg;~:A3RSxbi>!9h 7˱LKgwnXi)_Y]ukt2"幎<^470r_>>L4+gf},E_OeW}KT鲠}L?VBP$Ȓd@LmDRv]YH ԱYpcsvEl/uhD/_^CYkf`i\3n1lK$CBo-X(>/xjȂE5dR#:&@}# U[B|Ѕ"jS"83+o6J *N4B`D9E$G8MS>~ؽPUۜGM Wr/vTw$1 k#폭':N-4'Y#4sCp!M Ymlv;.e[(]‹kD/qofF\De23GmtL&iD_SBCḀTG,֟t{\؀co})+f?G;hzg}*Q ٌ!z{k](YwSmNE6vjL2uU4Em"r5OrM. ,Z)gFf]ވX=ψI-C;{ s[$+/8ͦ0o7ji6Y``xt%A|&zۍ:jח v_WYt.$g=-*jR#ֲR9ݫ)&7NC෶m5as[P<{̺"6%ZacV&:OX:N#[ڹ`$S t~Vb]tX`} i˃ ! 5ki$&Ƹ{!}LSJ[;( o Wjk)57K+K>=6mRkem$S[DM !:o|k j}5<\__=G? )AػQuװ٪5}4d3I:$p/DocqtF [ڹ߼#-/UL> Sz*W$Wfh-/C?DfWzԚh5ͮuZc6FXt01m>7ʽP9Zߤv܁fuf©EupSos"\YQ9ԝK31EQx4 N|\׽(黩2&O[S(5J $Mv$r.$`H&nMNۑ7DLNjF ~TN- OL $s(I"箛!@*L4a|L@9C65 NRƬiAW z1~'h M1p+k4 TUI `eQWz4v7O(2@Y{O;RqF;zFuqO}w7֤lqάY&{y{z" `v D2֌^sf<܊*rWg#w;Φh6-=-z/1O!klh96_`5#Fk5nC՗kԾooڌEVW3'p#*,l;VNH>>̛qY՗W6k:4 K WX:{WQ~(ʞބBd=7o$ Qm{QAQkT1~^t[=76\dQtH}hQ>iXRf\WBP9[<[ʛ_je"IEIb"wEY>RDYf܊_D=,Z0xާmK[FϪ,i-m!9 `*o228Zwno5Z4.VK7@n8!uD[x66j3}G>3z[=AAOuS# c̷bU!ֽ;Zi4,ᗩl _Ky>YgR䬯?5յ sh~cGVPodS\Q1_Jg2r,ٕ0ӌ#dB+. Wrn0 uP@z, ϑNy= /*KI2FпE:lIs=#i]A!]S: 1X'~20AAH ƻ7wZڟ 6>:DSk+º6v&KRB*1> S]Z#߭ ]#GʼQj({וo%5|_~*> K" 5[ffʛ$w%^e˟WJ1=Z=昗g͐ge4h6FT芟eG u D({LQK#řKk49 kdܪϫ)+]]W骘KTg&69J5zExvAKq8?TiҜk#υ HZ \y'i kNyp 4M 4;^YO |R''Ms"'3'cjXU&ѦU/DpIq)пh6X?v[6S۳Z&J)C/%V"4mij^1=%6+R.72jk5h31 M0ctI$7\Tяz"/ex;)uJG0 -ꉆG&Sx:8RBoHgk`貾Z8&&.A7 ?~B_Nƒ2rX!x-צ`l4u(K5`koO8Ǔu:DJ*(XJcxb@C-rT9VjD @yџ6~ yv3)b?Pӷ)N n O1-Mfmg譙"wGp"RV?\7lG1SI[EEW9/wLk5z32-ܕUe2ZP.m}Wtlb5~<`#M xRvPy®\2j/ca"buGBܾu0Vn dxN 㸥ʚL([? pa4=/ER#]~)8nZg^mc M1^7DF7] N?QsGGdž_ +wo6X3[F|;,@Gpj*S}U_鍬":JUw5:2hVpyiX0OΨ|4kWꑨX.(Vmܜw6Jx%IfY+q;)^WoJ?$ꋪhjkOy0K)>=nLa̬'z*{-{Ι[q2)m+ss_s݋pE 'X]f6G!{rxw?mBu*VO 7vl^=Wl]խ^FP_Q(m6UpͲ#pUQ~Z'kЅŷxjMN-}P@x+~] P!vA|@ܨpf[b]w6bGQ?\3G7Mep4FP9ibg`P^߶x"I,TnUG[I%גJ& eݴҨA}T+qXl<&R5a%=$u q԰ohLRHr6|x[t8X@E.pw9|B h:0"TKc,SUt%mf/N1ˀ=RdxHG7`Xjji 6 |D#+9<yZ;VL ).k{Kc+ytJe"T/;,4GxXkUC`NTE̅fiyTΘs.kH"=;M9#=nT@T|j"3R{9ϭpZ5-ΦD :"+GST0ViQ8ӫ-Z*gNON#rz%Y̼ҘXʯ9f39O20A:5s=͚7+D})2^D_*3ͯ`&Wmh+J}ӛ\Vq ?NV[Y`r`}i;=浯qgVn!9F<3v;ԗ5Juz2MɥuL5,2?Dݼەl9_*[SOnZ'Iuc+_gu γF`;$A H6f WXvX"#)}xWXvE 9S5sqs W%;/E.AaJ.]v!㋢5q@ŞafּR 3RpC;_Ikz(eI =RBB}CzV:[8yMO^Q`i?!fA|3USGz0/u[abd!FM)M-|"vUAKi}QOT#rM:;vg[>c5w^LٟTt*/埠L4Qޅ8mC*]wwtqO _}`F'ړ$b|BOh(zk:GH"5&+'Ca;cŮ wܡHHJ4|Xs,Nnu/a2i;7QfL)̿XNd6S^V PZQ!{ ArFLǻzXD=)uiV?gbϲp/5l6 epX(*)Þ$\~av \R9oVZ&/kzJ]aœ3rY};*z%-G5uLJ' tyqQU3Q/Qdk|Z-mRҺykrltL[ i[!zsT!%`7|#+NS&i3 vpќ8(fK[܇eWU/ܘ"_ɠ>0'0u@ΰfSyvᩯ(+B; _:wl~,H"pq)Cfe$K#WXGƾJ,Ńp;Rz{JS~JȎL ~ɾWŏ^Ayn{` {tn|aфcOFdܝE.RpKk4OZIax UXN\ qVKc>v7N滗7iZ͛>ea_{҅ F6m&\(XW:?'hGo͈$_+9^a~M[q J9gƽK/>Se]o\墏|Ut?. b.0y&NXcJEڡXdd-8{ $;_IH_SCP`> wCa%B' >D#כbt:_ <ФoT2ڔ` :[/14 a%nf%X:Ndt)/yGe;wXf{ ÅE{KTYo.;Pv< UjQ Ƀ rzM!Ǵ,щb rVBM)H9(P R bb5K* *[8;DtdI4F'`v.EvѣF_!'mҀƖ1QxJfՖ.G3ՙh;[MIV\Q,.7ۛfykBDŽNx8NQkT]?Us2|k(qoi pe貔wus^kKn= qR' . Z:6G04eu‡ɍs(y猋 o___ȴkԤ9䭔Ԁ}v3JFKVkle z+Mۛ GY\^٭[]}.]׶uvygGGbBbuծ9-];Pph|nծ>Dt6#ZrD]0> 5#ih8q>vTigQJU,/?67nqLTᵚ3kDe^T:n&IO ˈ?n$\l65#NqR'rl%(X;t 9^ú&![>P46 jIipW_^悟:U ߝn!9Y;I7pW2p9r~Ւz;(l垨&"7wz_@/v:A^UhSnu 8|kaYǙc_̡x^٭݉Bd:BCDv/ 'zf(OIt*_~πO!l}tW5;j/uɆXn/P/lAqODQeɮ`IWmE͓mm(W8vڵ٪ !޾F]> ? {F ݇XI*46Z[SKq)P`.2`C7s3QHE?!d,[VSЇCM(qyh._88Ο@IU K%4Cx7@VJi\Ù!i}dUdyxN=z.v.ulQOӫ|'º:3v3G?Dz;t=[R4sfgdeFwD @yˠ 3)"mlW4آ}/Т-Gs4Yi_+ 1fB2 r;yCrNl`iLSj[i˽MG44 gZ"92=TIѐRf~;?̴]/]m,CoƵԹrWS4(l7+Ǵۚ6sN@QR0_s՟yR[Γ ǮϮ_}+%]@H* Plñ9+*0*+}GCo_8< ~ f ec*(9_5+v斏I5܉.K bwȞv7gܽBs* 4:NPօ֯D\UsK|Q1<( \Zʯ^͎|pۍw<%Qc`opUx:>VδW%ڜRv۬4XNE-uO.5ZqVcӃڔ=:0JcŔ 0sxzѸM"Ŏp%f,#7z`āD,z:ȋl 7 hH] 4vWŃ=t,5gk_bs\p-)6̊ l(x vWͭg#F1":.|ե==yU-OJyn+9}8'b֭jbեpzKUvӣmγ7tvQ,C_{݈ pE֟f,) $M̖CP;x̩P ڭL]hl/Sє"}Id@Lm#ekVph5c o:W̒0aG0\;=9uC%ih}UHMЯV1TlAdern ]E65ѮPnqkڹ6\npz>]H6shCs.40LOe\sG`4MOhaI۟FXMu^1igSVX?~ϾW-Kz%]=Xڐ_?Wn4Ԭ(<,gp#%4J`9}fZDp\Z-tŖ\e3ِd(=* ,0Ӣ 9vΥU{;zmM<_sޔ!=.>o TfupOlDё񺥎ˑеع`}R}i-, B@*)M#bb:RPQL$x%BZ.g oKj:3:X7 X ɀ.;V4e_00|D, s FANݸ8VG^*!?! EbXW.3Qno%=PG~ڃ,~)l_4b"r|inl0^L"y,t~d;9sRf;;|?"~.^/]\A R`؇ KF^EKTuߒ$DbDmWdAD3?FG~8xbɹ6IP"/JFsEyO-k#'R*3p>-Q`8IPwA%ɫhe% xr(H5Ô7?Ro}H%%L-SUZVZ-QG$fK#@s@4 Vtg᳻s}E? ࣠ԫB })a.!o-6mt TOGegр[y5rpH/2,Z1WSO=< -KL+R8g*F1yI^6ԬB+-dcf,/q/͟{pO(S-Ou{wkYJ&l@?E3ѿk\"HcxR?qo`Ԡ(Kp VO]Y@8 *.[6 t%b]cKhԙL3!L'яw% EE57[d'Rpd_LI`?xl(UG̢2ќ~r|x#QLmьo*~,QNэ/٣}(zX< ;oq ]YPWVʗ0l \ ͽ3@4Y_ [N:Bɰ쵢 c/};s Vh ՚:Rɰ'CE8*5kHSVa2ѧ+i̜B\>^wx%$k+sEx9E%Тqrnhy:D(gk>;]#bJ~,d3>z,+yfkSwy H8I;TȖߐc*1LfRt +_͢a!20l4R/IR+X h7o&G<˼||ۢo qS ag3x 2YysiZ[[{2]_UM[-#?(vIn0QSOWF.o+3ļD’p}-08o)G'.֙a = P&ej:{6qT3FQ*Zä,npxQwK@vZ<^D'g(s= a*󅊔tYqa#?SW]WtK}-Fmj~ +dD_qVO!As+91c;"ԏ1j/l z2$'#s%71Uj-ēx@!?JCQbrZʜܹC@nG~0K|ADhiZ:QUrw0NNfU{g%wʯZqOeKbJwHQDhJuC\Slr.([*N\JJ>G!s /1bo# 23v-iPUQ-x6>9Oދ{KpIz~D_NK_lHX 9n&+LW@Gsڶ>2"u}+]$ȥ8藳 JhpHxA;5a}^@9m"uVEv.˓&*Tuk+zƼ%jktvjK+,9Aآ=al~m)[=:WyF0ú8 wT8ĜȩgcߑcX^,3lŒYGxkx/IEHK9|叢T0f8I1P:ha4N~x"b$dM@~^1s砬#EP$5(d^_^,v2"\.Wv2=e&E,]' $H)Zf2 Liz"|YThoR&7yߐK@ E[8ٷ dW.sb2 Grsj69ZREXǸ}\k$ GQO8V(ɦ)!47 @!6r4!!$eTT%HѹW\֞eDŽiCuJk { }c1``͖!r.Fӓ '0yo$Wچ}}7os/iY'՛~ > |w;k4?HcHyYH6\f8~1/-/m] rbΡ6b`;%#B{ ΪDz]b[hݍvrAZ榀t֙j=Org^ :Na2m^#rz!rRT%-S(5ykw_κ6Xfn1BQ[Gm@r$ W-o 1&Sb0]EF$@2T , / EnsEExآ9EPV~F/~]xuEyԋfw'@DmB ds 釐r2 Y"!L^*l·H#vŷ̿B~UNǵJh>Fa xlUZ͒h}$KuU^ Re8Q6O*y-\' S1Jfp@AWayf@881 t9S@{~^5-*ɩY"zse䔕$r6{p3ޔ5qRZ Т+ڲ%v>XhvOuI f߃P-)FP_hv+#)  Uȿ9zy)RHm=G˾I7Hе`9:qԖX)^~!Rs h04m3H7g#ߢP|t#􈒩靪cQE=lDDX1[H(:$)O`D5#v2\*8ªu{+yY \q[ѸӀwu r9NZԖӦVun&8umҝ;xlk!= ӘH{='a3^J  J /%e񲕑r3ٻ} λUxLIrB쫪JS8Ԕ30 YVǬ@3ܚ٨&MQ*lajchS6\-Ë0ꍃ;{TfY@?O _s 6X*#G_`MAz2$.()P2ٺy>?o(cx3b*HӻD݁>YO1al>hm Tqw4OMA]k jER ykKt2VTtAzԀ+Η'f"D*g|d'@ }N,ׇ@U g#X#WIN/fi Hp}+i/s53#'qb NaӶ[wΰX?Eٖh8fGs,j⇁=Z-F3/Œ |h!I? } wfDlzdSh;Õgねa9o,WdiEe֒SjTD[Fb%6,=)Nm2N'VO 5g"a>rm]ߠU:51Mҙ5S]ݡ#b+ğ'$ ](Y  iGc Vi Q< ә-:r8C\7׼3J+ IH[ pHx()Myyc 5MD54]NBNjOd#YR|&uWW(TZ'~qkJԂ/ȇ !eC.+Mұ%gJ'ˣeEꝫFM0]۱I X/63^Im+gT zFմXKseB\ |dѮp3k<3Bj8Ƃ8:fU| J LP3s ya|Vp@PH)Ln)㔞H,/T&-h|AwcP?v€&{_KV}`9Naݱ *bP9pK DŒ$VE7 lπUu{״W鲗\#j ʼn}TBn2MRRˌJE RuABt{w|W|~8:K>g\fz~?(eN{h(Yn}x~DVYu_&4Qv* ׏Qw]lf+~E™GjmHnO9oRTX .Vƺ1˶ j Lm3ٛ^] [CiGv>Wy^p8+y%l)-2ϸ>;]8TT$=i~|>/zl` ίVMY?IΙ%n kL?1NٗM W= q>]xi0܊m)Jn'gW%}a1ʐFCk9!@7 u 'GATn{a3)GYS n$m!qdZd 觋FKV}ld%|Yg]/ oI Z[ـ 1˽Oo ގ6E:j7[dB^ Iҽ%%=ERj7QG|xgu~e7}{t1CI'QEzC8|=_UD4ř_؀=᷇܊5;R?7x_Fn`Cim`yw mu7x^B\@EgQ^4OЫ-s{Or<]Y4=Bd0>gL2. {{`3l@$/On*Oʙlhν`1gyLș|X%=l[>=bgQXؿ{q_z=vs!y م?[|l y}Er ,v>҃6DqmT5>2a0ґf% aW.p<<,n_6UD;s^+imojal?D@K=:>2&92IVh[GǮ?=cյ$ձ/ˢ401ĒZUd)&Y+F#1?IBe֭Ϊ-ݬciɳ PRdg2bH]mnN׆v$4g=(-KWe/ #f9{s|) {qF"QJϬpw$-'k;/)#+1UWxpoC},:m牁Lܳ.̈L)7sW&}"HɎHK5 _?b;7lΝf6-_3l ?>gɢ&Ȍ1{TgtٷaWJCwxlą51]aeb]YGtєu3o`w㙇T7:N'W3RvwL7v;?؍]TRN : '> '79+ U9)XtӶ[hwXb "b9YptࣿeT:1Z;>7f?Y;+JklFkg&t}܏y"Icf6 *v&"5vm>9OSҦKq~^q]e 켬M)ȝ};wk#R{GaƎcKOVSE´W/3m\F'Ro 1Orp,֢ܦ[a5|`&c$VG 1 /G!N=NfЍ [03L}c.d{ʠF3fyxɟjJ:$}(o(~UETw/wJ8%kk '`3o/')^*>9ǹ&jlSiҙ klj>V>9k4`di{?4%M8Ɏ醩._嚕fvdwޘ+_ ̳k#]yfAj#{ѦPl4ýGL\p&ORh 2feL<+mVUbULƑW/>a5F_ě>;VvW#hꑔC3̲fwSg(N.q޻`Ck;#P+(NI ȢSoJ]3"cP`(]KأG^A$޵Lk gV{}C`yGnZ8.q=}j b3Ud6UL7Yo I, iJ YH}+`mo>YW"fV1673,-|vB' 0Ni \ߑZנE(orҚ=Y0:]ck@j,p:zz{WXW,=9Hf ق,tq5Wmrj=uȗl̜k9+s[0؈Pm鍙<> z@fP*;%X)+ְ+B BI2شH6J"9g46z*R15ёHs>Q\F.OKf;NuWsw6%`ݎ )ZS D׺DQ! kc ?ئ[ V}#[^F~nz17*>jvV[KuÍ^EHU}vT#ku ldK$}E&q7}7Q)wGö$dJߴ=S,oBj~bx+<-lvL)ZarUf^ȝ!|FX[75oâ>L\\^r]܏7[͆m,!6L~sm4İ4{xy9 |P,Ew5"=quC!ߪfU Oʻ۷Ohgﳬ89BfwWGkSֽjM>pVeUn/3V5E~dijk}'PHW4gVs#k'm{KYIwhO gx3tSpL|lKE@7#xL#|Kɰv̸Xv*m(CܔUJMˁ;z@h\eo-FOC fO`GF F-"{3ϨJ;ñخ0􎧞L3̹' ViF?霥ip]l:+ol@_~h'^߃덫 fhUwoNӐَ?80}}sAyF|&WD:2j/+I0Wgfj[x^B&iڐ!\,+Ot|m1 ފ**0l+ڑnA " }yyO:#F1p^xUvڝ?=}_ޥSUEs]3QA2ORz4sun&,C5Ԋ+ރS' 0rY)E5qWqF:f'9Ϊd6]ۜ\`Kfg0\dmNZ!(hW)Yp'*<Ƿ=[unMYr_dh$p 𜜳/\r^.q0EF]s{N bzκ_.H'+H?+D.9sz0 EhM ?/)k;]TTȱk'5&+NKͪh5;&_"J3U67Yx,dzkeָK&.du|etnD!է-@-ґI"‚(%WϾg0wܿ~IK:r;f -90a&׊v1Iѵ3}J'T6(JZ+ي=e]L?[b 7#7{GGŽE;i&k ~ފO /zQ"1/џkQGVE߂{D| F}rz# w[)w)PIغf]fvlg7CHRXqw-r7|2>ڗ װn_fz)Vȟ8K]䰤=Pde.`^JsW~vjuƂ!9#rЙ_LQ!{k3녠y^HVBJ Ӯ,3Tn3bP[ mAfg!P6:ZDt) 3y7N&+ z{c &5TKumVk$G$t>vmJec Xϱ:n^IE:7R`ja^,TU(OYaK ϊ9V!gg{5΋9ޚSi 7`y00FsAAniW>*4wJJ91Ìٌ\>03|.Az'RY6I8iaҶB[vS!gL[DyH\r"c.ѩ.qJ]7})6μWp6BZ\1:n`l8B~BI.'Z: Ҍ̴p@wlk ܣ̰4^Hx0+R8ơ9}K$??u(£Bo|2B~)πi 5a}ud jW{mAdzn-?쎲#!( j6*۫>e_uh\ ШO(ӚP(wwQ JD4UaWeUZ!qkN9 mrEqfsF)jTŚfa2T/ 9q;iXYvFAQ wD/C-4'sw` v]IPdv^s\LJ/ES-DI޴ ,U) ! ^`76G/"ˁMr 6^/2^捞&pQ|>h"<-:82+ ζ K[Y ȩTV,+禨J{rͩ:82mZ Mt-r7lTWoWHTҗs:In̍1ntzs};*th$Vu>amنu.IgU*UR4 3TC\( ~>Ʋ2H`ۀ猕_45 uR/M:m3\a`~^ ![ A9\ʰ[Cygﴟuw"Zjx8Q1| Am+q= ةPi35WdٝI3\2#j*2twHi=2&j;j"is5#%?O7O~N Nu N q]l9/A!VBd.v#/|7dmIMx-G 6[NҎzJ~Y]O[M<g~ڴ㓐҃mL-Wa,Zሠ~ZS~0NJ-;񚇦Ϟ!ox~ݐ%SyQ̧ jɯ̿DvsmFBIX!&VU3ezJ=};KquwH-U6:D~s}DJlATpL|}VS/`CSS7bM]󆭺]_]n}[M*&ۏ*ץ9$ q]`b",kl5%MwN)'Lrlт1~NYMyS [ko>dI⩆´'& u6q\ =4HHɟ+N:zɌ{TIBӀ[0PY6-'z`}O}Wz┴ *p q$zv.ed(coֽMQ"0rq~|Yڡlm&pSCo)Iew™ :bH*{PNfrkPg 3i+? "SIYg+u`yk'C&{WF[(Q̒-e4-%>rm#9f 9fQt: _ucL+枦 EalV^h/<% sB:z h(Vem[K EI]eel+~"YGWRqt+/-Z$ER%"~%ݡז uk TLԒ;OQ#1PSy7x5ٺ2T8a黈*fGMgBY3g΃)P;)$:;2FoGbGӻe&gW$fRi 6>" kb2/ N ,9pc^CS(TS%JY`yu)Ӽݻ|gL9 j! 7$ܻfKY6TOr/*~-O<M Z#JY~ ;T&J.DdqC#F}XjUKw|g]UjK\`MVCP#=xP:gR즂k: Uxj/4ޓ P7U/Dj+ĿQ$n:l=TB/?9nc]Ab%U!萺e^Zc/eoxIJ78[_% WׅIFm88.bޢ:D4's~PH C;Zw[ \x Ԯ &;MsCt]l^m# QғZq3H3 j/3Uޑf ]W >˿}dc.]~Co KOYnvn">U[k?[:: Oz&W>2kckfA#p]D E.J҇ӯ`r~M}Y!=.19q'nMB,QIg?ڏ;Q],Ěc1j_mb9{DsS3}쐃葫Ul\V [9hemb޻7xvqfչՋ+Vf+V&NBxu9)$)T#COʧxq}#bfh)Ř^5B-ZD6X쯏9"Pzoٟ2^4oLό0֡~8kX'W9vfmGF[w׻-hO G>;ZdEO3J̲\n +ms OZ\0, ;I)ȿ_`54&Zh{&hu[`xw&^hu+\/ \seh(0f??#M{M--ҠzņuR!yP1{W)oyQ~YAfO 9Y#e-i˘w5E;HmYcdaQ#+Zm?,r/W&ǐ *zVԾS0H6f+GPSX6 'r´@\{d`h6~J%l# m,%M.8>)+m`o0 ځhg3R0xaI'㌀P&ΗA|o*LjJ_|_Q]_nVLx Ҵ̟ސ^ N]mgCҤ16%/2nK>H(hj*:eݱi[@&?GkX 6J$rp<kc){(lWZZuƠ@a!oi݉:PQ_ŒHKYw_@Īn*eP1p֘BSҊ.LLEGYi^z؜(=Ѵ H~"eK\c0u~h%ڪ k>]+iN 6 :BjLS'}v-lxrZ{f9trDQޑy>gs-AV4s*L03q]w \?,r ;҃=?[J-af=ˮ "R~F+] ;3r\ҟLlb9K'*8U;,ށUbὠ_u]*sxX-yG(J:+/ԭE ޓJhi-0-exS`RJBE*%(7 d9 A̪,nU1W{!<3P='x*=}rs3slj|T+V^؋DL[0k]bۓ&zƭ֖o8 {HZ?]^^:7[OZ.`G 5l"!om\RO=/ r4V2tKJ3#]l$Bv'\kB=\t! PC ֲ'(VWgjz2thG-@ | [Bl I%Jc\IQbHYc̆z1aD^x6X:7XCݩXfoΩV Y*jú´͜]C6B'i0R~4&fV@[0H)>C: 8hrGR{ҷһ{-6pvMqY: ܕ0ED%5-z^;kI H%'P}%ٕ$KN N'_0z{`(MZ. f|-_иbuὌqpW=QG Byqnz$МE#B]z3G+EV )/oPf2B*}zzgh uw[/e3^Ig6OD=o.|%3 w2$3ɶav]/̮r.ϮX눟y^8 BcEnՠe "㬯h9>YwCκx=-Yl=ݵ.2YDێf95:`}r Lb+ţw#!f!"KA5zRpεα حz7#Up,c#i_]jvxևb1+Ә0B-Q%+(\r^aԋ9WL;I-b") ٺ `/ D,Ԕڱ#iAď&~[ܸ؎1RTګPCꡔ ZK^ $0XVbO<$KXO$%OH+l 2vC)W% 3qIqNu«v_l丰iZCC^u&ZJ \+ͶOi=HH$$?G/ j>FNC ֧6wh=Zln:YҞD5Ʋ˖e ӹo 6 (!1/9:Vn웛Z4nVMdм%hWۂ+2l&"eL_dh` 1RcQHi.(S|m+ǁ}nA'ø_ߑCp*ޑq7M>>TI #*~D%$O|Q"'cE27XK)M? B,rr일wBGM%# bD%ZJje/Cr@[ɗ=R^AY y`= a&FnW sꜿ=2aE5~h=kL' oTOn!8hjVvO(_wZW)_O17b3uÿ8#yEӚ"Ǡ]id!ě=n]*\VNvQMMqDt-ֿlVJ9 -~T#2u_6;3>g)s .VKEµ"(OJ $7h@1Z2#s<+mT^2r>e޶vq`oFUр"o=sCg-_}=3gM>8u!2nd brS{puS1 Rlaa X$sDt d-up!Lcci/)ҟQv֘umWOee{6)q +3AYtNmqF;6?M KwT7[׌Z'b( CiЬ$3%H E`j Kstp͵@JduV3A?(?x'PЃMVRxɩS_Ξa^D_򫘾oG)O ZO)VhmG}"~M"X.ABeOhFhl3Km+ͥ\;ncf3׮n?<F,)33U[&Ϩە̚Kq ۜO?k !'4W "-vMIş`!TYX8:]F,giܙH\#Ԩ .[!b6GuxTz~GJS7bF'TL $gby' ا$}q9/Gb.$@aWv`W_ Mh/#-a~z{}땧oVUvAgY'rw|{VAṜ噣˺* QkjNUP#ѷ_D5߀tvljS&F2b\Kl*@~$Vӟ9mK r|zO80>zF8QPWb65Mx^p vCQʼM"8;['+m%^c[y{:0k*YިS(2wK`tG|]B]{xO~Qc&/o% S| `hxpoJ$\pߩ7+UǡJLd^e*%wv;1wG.i.XNl`T&˹)W枭 6Wھ@cAw՟G? /ZPy١nv<`Sg5y3;Z32?e'.*-HMR ds#p'7ʜ=-O>%-'? {K7֔Nq$)3jdPה}_.p˾^,˃>r: nskd"""Eo8gI>|O̶#ju2h,"hg/#&V4~~HN1'_o"IN6ySP2zG2՟8A 㰍$27x*Tw7<X5%.l 738ovˈh~xˀruo;E;h q"Q {M s'j>LawY#"V3kLck x6ƖKyLuNnErN2Arf R0e46&;pgHĿc0@_NݤBWo QR*/HF_fqMW2=W&|z#tq3;wɵMD/8A /4nι l4 y@KE훂Ł(grd4se%q# UA{ $ !d?DhVWqEh0JoA ѿPpI2MMkF'MQʸ)otY_NR]\-r+ ~ nf=ij58ܶ~?lWɵ/+ϖ_) )^wܚ[ޕ7Q\޷zܞce*3k?[k,U~|n寵#jU*C*VHm*rW%˺WU׼>Q7~loyv_u7 5F]FX G?":l _n̳}?g Nˊ{?kZ>4z|i p B7Q!\4HB9 $)0I]o[zay1~8*ZUa 5|;N # UCɉ>TsPZ Q( ',W6 ;R >cr*yNc ci#3x<)%Xb]{E+/W5ƺS5o\t`39eӇj7[b[<2h5}ۙswQa-.*^9ۢ5a KL`c 0˸76F8VzRaPRR&JKJDoXƼd}n<ӏ&2I% yrt5/3ҽހc&<:ӡ-,u0vܤpzoܷ &a?)iX Oe}^0gqYTۜUٖ 8;^%??;,˶ryzRTc1k8uf.38KvW2gz|zAZ١lNߐt5dC7= Ky|֕aHn,v9Gi+r HL ?QM/`6eF~b<݃;j0]c ,2Ty`z.(A6l#?zjEg;F_:n2+$dXޏ)l>d_ݣ}԰iD@=BˉHf@Sef*,h*1xI2KI]B@gŶW jzOrEM5/7{"a6 p2T -ߐKy"bU GOj{xX _%pQhmoU>2c-`hؙrFjJ"><&!)_͵w(&)6}G[b SgUAb3/ V*%KL^rť:ښ5okS.nJieٺJ~ٵxmq갺ך7hʶF463mq>ss&fgۇeO;~޶}dʩuFX/(v8NΝi'et#k:;g(ߕqB?h4*N5'uo’dQd_O\=" sx,EX4WѿȾvW`*ه];4Kެd r ouk6ȍl̍iy5do׼K 'n Ͼ VAYfopy&7c0-9nn<=7oqpww !d2&1gI2ԛK%-r*j=]ƙda9Iq!ѕ@;p KgJ<:O aPycBC7x)hVudRԖՈK;Suk2M[BePg R; m{guzeh|suJj{4m_\ÿu6,};\3$') f5/ޡ]zf,)\T965x5c`t;xO† }QU% 񿪽RjWO64\^bUJKGƉkm<ؼIs[+B/{ԼIL2Ik֛+BWR+ mw5-ĆK5]C,Uroپk=-7hg zeGa/|m `+CxNԆK+ ۡvW"3_ru'ۆXnlYΙ0M0\͌jLڍOP0PZml@1Vr[]'"%a͢N~0DL\yJW>Cw*U 'TݤHgp8F^O#{T+i&WE^4no:2yOh߃eUv7U= UFx\5lZҿ*-cզ CT_صW\l [vOZ6[>eGٱĺsE-)H:rק 'h?#򋤡wP.2KCT][,^i| scYTGu Yѥ7V{;% kI-ݓ.^9gakti쭥쩐Wf6eZu)I4i~>pUV$n(=_\kp-vsNv;LJs}ٽG&}ISYV?urIRf]tgUzWG["rJ~T*C#G (D&B$4gDwt#> E@@2AqUYnQ 6QǹZ}|4(@]Od?F?RM\X7 B>R!xʟ*iu^)K4ՊnV凤؋@CHTG]ۧG;H=ަߢ9/&#_9g*d L]ڞ'+eEZ~`,XV͍5E0"7=K&ldt"Gƫ >%gsR#q|_AJr%\O*h'NPYuoJL5md|"aJ?dF#4'n2Qi5Mu+KI?Wu=Y}s]R dq uZݹ@kUw.ӷ魨)iŽ{eD/]_5$0>p#03x.ynOY@pS\/nLjNnpvVF7l<^I'wTN]y$ctfEZ:?˿JWTѳ|I7euit\~V-N{Q7eUaUWrC7Tu 1LRm弤N8ߝS9>QTRd5(Ͳ˸e^bw?h- /yQui.z_OKG60̪fJ=<|iOlQ/ &WA~EIU8X3/de&L/_z>'90SVFze&j Īii¿q%1<)mCYE[-qVkƧia ' Q(|O{8MN{μLuڌ )췰h }=bPNS1o* Eyi`;:H䅊QJ⽏ ˞GzC"dfKϑIJl<}G[{A=*E}L?^n i2 #?B,) '2"/x.VCJ֜3UY`kjSd,_dH'O˟&-)% ǒisoXs Xx9R&0@/t#\NA?lPwD ~UUM ov&d\B⛩R`#* Je`꒵_Y:ÈuLYISIhA%yNƂPUAkkFm,0 jDUup7 T`2g UaY6`k4ݘT)_2t?O?*n6 G ߡ`g~ Փ*+2Wir~_Q1_H7GEQ$qsb=n߂θg-PE~˛ƵSWոgզiOn Lv տ"R!Y<^((/WBMvAhI4h|SY Ƙ~.q.t\D*m|j_E1.PD‘?,۾R̖ .0-`%삼%G]$ꊟQ~Ƚ?6k("jRp|ɒa%!es%(Y9/y7x' kR紋D<\ MȪ}+xҞa]ns#@n泺AAQBptMI^%"! \$=. d y x'AgVh~x:я$K #HvZq >%יR]8L ɰ%H;`MB?{:ҡ)N^NNA5 ґ*= V\^@P5QyOCہdhN-\ɯeTϺK\`1WG2E޷2\]&^%e_{Vsrw|Se(;U6*oPoLIc+l Y`&tIf~L<zgv_5(>Gqk?GԆ֬J+ zُnv׿&d? C˥$E'Eddp-5HKc/ HZ񦢣Rn×5YVt=?W&UVU(*>Nrwt88tKV.O*Mv7(g&,Z7tMZY]e;Y (VHAvey8'蕂k82 *]SSbpGS!W㲦:uglI*Fa.R '#M39:EтbT]m;o :DeeS $sc v &Hv'vqL2:! &i„)~.LFι]4g6$gMi v ސA'&C$WP4j!?/&knψ~DfVZdqLPxNvϢ&8Uee.EhAP>Pgh I$l ]4T)bm/jj:&ҽiL$'d4'q.:ZE):KeRg[3Y i i:񂿃|cL4|cXh3Dm"if\kƭA'Kj Kɣhd \${y^j\+VhcvehvbgVA-t%c\ET58At|0 ŮoNb)󊼇ݗ\ݭC}(+or}t` t$lBlw􋮊[71qrYxF~yN#na.na}YpB R 2ڠSr@ㆹ 7CW5`%w, msjzCNy 闅[N8 gjy:Sob?*T Ԝ0S܍};׌ڍ €p2I\xATxCrF V[4[yP ?FL°+rF[Iw T4&@a~2זs}>./S+X 7'4S9e!:er%^9"??H/)R;HJ9t ,m7(b,8`' ͛6L(\uaV"%P{(` IN @!*z (@x#=駸_e`f"1 pVo &\?/ 5kUf_\nR`JGfTw H0PJ8\y;A+T՚&;BJgg:W2mϛ֖ZUܥ2bDߞnʘs7셹ڼrΓ~^P_`qaHՎVY3It@sJ_B$9&[w\EUM`7Ŏ)B% 5p`V!,-FjMM$:Pk>cZeX3 C&yn_g :T+uw[zoɬ.ik61uJ͒G%#)$?J2jU#EgALꄶGWhAAK ͨ'vӯ*ϟ6- Oqypf"ա!':DѝF7o]mc( ϧmr C'B6N:tݶԋ]I4G[q$$LO'@@#GqL M`~0:|Sk7m&|1:QGb9}y^.@z e@@`vhoWGz,?|Hs1Tnon%6Uvv{g|n35 SaȪP݂\ݔgYJ)B>lbɔ%n]/RK(鼱Ы?λ+򲇦n&WDX7glZ2utRKY#=)Ò)˲4uHW lH`FbJ|7X4'%]*| ʽL! N֛?o%8ha/m _H Tk\ [4u^Ѭ:ه)ڠ8Q%K9zUj- nƹ( ߘf5\zKE VYubreNJukix $1XURj#]+$寓GkAN{8v}"~k!>3e~tx#;e h_V8}ґӘK^Ҿ{jl֯WwU>PkS4?.j~ʀ:h2@\F^>@6>@ZԐpe+[@`C(9YuVH5 oWjEVW)WcMyx &_OˋCoq7 ֆՓ#Mؗ#&d1+cyy1?7fQ#DOo?ӜM8Nꙙ?L9j%7m5w|E>^%߼AYE'0m,j4]55{ۜ>!=ɾ0nW .ۃK3OwT>Bs+ .R?Ohҷ+؝zJ2M?V^/j+& k,*y<QBl7ҘBs򉆐7a^RG/*H"}ݒy"Xۑ]wP=NaQ$\q ;Gv󼝪b` 4gt 5:ψdd3b)$sU,l0B尹8?U+AaӰ?qh/x-<@p1xZx]-LWs͕I1$7U~^<[bz03C_CK|@l@咿bf ]6*욦U9߳6y7D>F_8FB.qĹa}5,KWm떓__ 4 `QEEoo)2$3!0懣CaK/8IYZM#u{dm]"g =4?X >ڮ: Hon,,l(utv}:W˰Ll/֍J:.Ӕ/3gkUm@<]fW#V 8^}#Ns7e1Ȍ 97r E)5#0gӦzg*4|p 넃v&xy$[QMэ^".JW&3q>"(Qx o{=W>޴ٯv#Wngųf)4׈{\]bkhgrwt<y`_wooJh[0ݟm_el~=L ggvBFo?S 5RYi?֎KrWE"CHcfW̙uHLi;`RGH7?)v!)#7@\ץBxSͬ4Y>^EPyR_vQH%{292e%r>>@7 (uB}B!+We@C;cjvf.|Ƙa`z#j I[]}T3RvjO;(֐ոK l5j¶GnEdžPox%2ekLuojWU׫QplٟnƛI6̘H5xE !gk^{%%䏥rZ=S>\4me6 >۰4bcؐ-<-xJ,`4xTDK풯r[?R6n(Y]P >FaUUR=SPڃZCd-6oeR#<6!mGM#Eۀ/?pwB1҅1w ʔ܋Ӣ%[4RP4TP4݋4 a+ěS 1\3.DYTkK_T[D:7^L:~:LCD}6]!h{m;މ/y3 D7/2UAS"WoU[pqs+l;iI-s.u+\Q\]$78sx.3t(^嚊E[jS%ϋ=E+|A4Ly=7x;Z0 >%C``r\fMާE9%=}=˼}݅Fxo :)!AmWKX3㾉|lL=d gEd;:.c+e6v8}e8=Qv(gdz:iÿXr xE?(ƾ II-G~ wo !(T$EBn~^ YL~1b!3T:0Emɞ5x_2.S&(X [CB4meYiB_a/=vgY=0*)8hi}Kg)HNv0xJ K<>Ń|3]S;xou-lY 4O.GJ/t (]T;eOEcQzJCTM:]H]Y EǓA.15OtnInq2drqLKn79$:TUM!u`$ۀ:=}$`w]f5 n`=cU+(hM ǛCHM*3o)ZDGdn+B }Q7 RVWa@ cT  _&dL/3T2ٞO638[jeO4v&~Dó"6shR]pX/zۑ*a{GoI6 N)*;#_BC\WT2^ҮޢaewKŗRT[X<,?:T_$) +m[ݙ w+ya(jM\Kb+~J.[86(uSkg{|y<;?b6/o 8|[ >G9N ݌L 7"Q]x%#|>[gIz3sMJ1pJ{zœ0T7pӸtme@ݷ)=չGU%'*gQ '_جo!TwTK^\ߥ'(3qLa[f{M^ήr_ggeAgErJy;5ZT픳}ԕWM @^sLH| huz^AMf~͌1ڍgFBwtpPc703K a)q1Sb&IYJBmvn(c&`Jnrݴ,(-A=!!' ~qܔx&LA&9K"qX:y-dž)jT:&BU+tO`Os)<א3Y=l[SG+ZD҃E֒#0ehcoxmUw1Om >|.TA|3^/mTid?[ضٖ[K,A 1|_Eg-9D.6pb&Ӻ_D|ЖPT`pp@hL7p$Ȼ~39\DX@ P58!C/n)%#Nbm߰m9´r|yw@dAtT $NoH>{Tje V'볇.V)%a?BM',-IgZWa B`Yδv w{]ij GS J3%oCV>š2[lȝY8zd#k߫ 5KԢv%|M1jX3:9%\.(\ijgRatOv@"މD.DGBFibQj-_/VTݯXykފekWmhK`7~}<]=YsL]^j^ޠد] Z94_Hv"ЗH"x;/J@ⱶMRPLD%@p6QfըNt+&+muov u C .C " aq1d8i}gӰJph/ M2~pm51P֭([-} %弅r>^pJ8WRyaP4dgTbq櫳kUN4طHUb+yKlPwTox\x(𨁟onhRx~62藢`ޕgZQv޾sDž.)|KVԗtEEݞhodC+,Bsv5*RΧеAee̶06_M%lk |ӃUўվh`g1Ag#ЧAf8[N`p-N XC݉֞{$(jWRPނr gD݄NHQidtiVLRp8b'4|ZyC7}Iƒjj Y -&Vю$=w@AWq`DOůRrMw:H" P".Xbp¦7k]ۙjLiOm ~4O- MS|;C~7W7Ysr%;Βa0$)̀1997 !S35x 0ǹg\>dmW~)Ye dc@r2d0 Օ>\B h9ʻԘ+'=?%$oMl)T:z:* ; K_6F8: \Mҟf:?]fgs8)ďw0N00y^ INך-l&]S7k[:8ˌӇMMKFeAD2W-tPܞO iD[%uUG?!:rϳnv$@D3kڱ=D.nΫ[4&c)`iw! 7)[ݲt՘a:/ͻT-;Q@0Ci)cs$pVbb ڮrM <1/tGۖe.(RYWMmQ_[vѕTGUub<`S L-$C#%ݥG.yye:Xƫ2(ѴgUʙ`.I:KGeG܀Rz PI$OBL^"v&nF aƩ]pa-`2}΢KsF_`XjZh1Qjk6* RβNkRY"kqzYfD#^c M!frcsM#m7ܪ׎ +|9כ(875@塅 %JbNIo;Mc=}K CWͯT9bhp O1ZW`lQL?/ߐ5 8Vy2~yk Tkm]Gd,(5BykAOa>vϘ2~o`YiQu Oj:.zLEA%'sht]SI ' r$p3βW!)/0L>T6M^$ @lh c~ax љ֚YjJzuR~'.DHT1 )ݢܢ:@Vh7_c=_7,R*zݤ{Yt0LS6/h5ޟ@2,bT %; TI&^ 5ׁLO&[c(#DkApB]֚wt6;ժ1x+âѾIT>Bۖ}pz0L:Nv \OL@TrEiz k/h]tm:4i!D8u2vm!gg $Lo>'b mNpi7x:ޔ D ˪l1kOJD&*tS{5 4S/Q]FA`%uiMdkn'`#j}Twu$>!@̅3o߼U}Dh4 CKs{B`vYR?xE{9>pWYSc\FK6;ϰpTF:ЏJN\4A8FSyCrJԇTh]50}U#?tnTnZzIXReψNJ;~S>TE B_+0@fY B Ifr0"2=20Bs A;eɲ 5vY"zۑ'b "7 o咏n ]F" Y>! !ToZi!x>z66K`P$2%iO*܄kSΆ祕fsj|WgRfT^'XXOKS]]44 7CVuw+n\D6Wh51jpn1Sѝb\zu-|'=82VF%}I yaW}uqq'Ld }UK=}o;Uv傩' gWdgF]SwTOwdҌIŒKPZ$r$r(>j3e5ϋo{*ˢffLY0({p/t\Д_~0̿792> n-$3l )6ݜ*K^:hzgIg?as}$%I۲*c2ӏL7͍JYQk7U},9B|P*K<\m Q1oQS ҵy=߲q0 V53;Ϳ 8n; hPB3zY4TrA޿uT9?lrt9n5KQsl}R_/WY\b~Dն޿2.F9"IWTzZۆpS,Bo-wNk9#,9ZnǺp;4ᄇ Cҗix/ڟzI#=ќa'sudDDZFȸ"` ]>_lɉ?~E[}u?|`eXVt9:Py~? 5l]zr@9Jd>w9u߱9) )893))&'7ctT)sWT9YEEJ4%u%Gއ+3B3-?;RVfz(ZhvSRpXB/!oCf(o"s_;#,ƨ;™r@X)10%>[hSJ5%c\lb ~tz,wI`o9B,U}age, ^7=V1k0Flwv92D>~nԃ4)/ɢH"02j $jcAW[|n̓ W%N vE IIӅ1h=G$+-%Q\Bf`k`@ ]+qDՀoGWCCӉ "%?̳戲_ʌ@XEn@2[|H-&ɭ>NG =TwFL~͓d-#Duq$rDE< 8y,TO8Ť9"#$EVi#`$Kn4n\kn 1do٨A'dM ϵy4tNſgUxnz;L;"vZFz}m%{Nˠl1h(m!z/4h Qh Il"E0I Gf QLa3Wr#/NcL;KYG gb];fh92ǰOFA˿*ڶjaᰜ7z}s@nKe쫏_d.W#\쯳M]]Urwm&F!f7DݤmWm+.@+i2:m BbTU@=>A5 Q_ρXT]RgGxq&gevc3 v Y| t஬|  S0jtG q򨤙}A'AFU! |36h@c;՘d܏1@Q'Ojc̼i?lu@ǃ9ǒ8mI\|8IUKz5Cl6]޳F.3p9 LgEFT>Dq@t`|M_`eη,zxF/ KBNo֝jJ;DM)JfX720gxSL~L64=3RD)ޟa789d-m m=OLs51{ZjZillLh/:tW,7rm}R%Y旧eEstɺ=[+姼bSGb7dK?8ԝs{<#3 H}?GI8Ow9miQ8WF>()d׺ KsD0!GX]dؓʭ5k-]xфc}@n6j " TJ?(R&@#_D *g]SI-PuUutĚRIVD7t qFA][l^襇6C;ʈ|L _#?+𢡄*V`hPh x2U7N9\EzVqQ6TcWh)&**q~QlyVazp37Z!ѸNXfZd5v1|?uW-]37lKq ל3.04ٞ9Y{ D9Kpٰw伪l)8*Ԅ 7=ur2KUs 'f; O“#σ9]t4/=>cC'/P8ڵTW*.*\4a\CyO\zr|;p`⌒H`pP {ܾ>YH:̈tX eys[a'pY֡y3جr>?N{8ae)SgLN2x7R69$s+3g\#KY領vnYg_ink^\Yh9ήEUQy${Q{ɅRVږ|2z残DyzNbxtr:ΜW3ڱrARwg΍U h^d >??>pk}ՉA%Q}iX&cmm5_KK/\nQUG[ت1%.+ӴTՍlFgcهxt-^uwٖ3u [Tm*^8J #Їf+}lx t bg]T  U:^5? Sl`8lPݝ uo&iIrN[N+i[I{[uWjXdphTQʡ7*v,U/f('i;*Kqi~ K|).*VIeb,{!' E%{=wTzt 3z!r:Rno~Z;Q(umm\'أaNg=7<Dgd醒e1Bswvd_7D 5cn*8Ƃ@'l>UYtѶy\gs m gTp}]'[¿2#v*P{L9+9%Wz*vSM칯 U\.9y2JO.XjS}N9z\wmn @QR+p7I2e1bB]⫿qE)T%qH<2Vr um|nhs1w'z3TGmo0tƪ9(* H$W^HM;M'dg)P8PK&Bw ?T,%T8O 5wE{v+ L}c-ÚF5GqMsX$WEoŒL hi) }?ޫ2LG &%ښ{w(o _-c40%Sg e# m?3U*Y#ABQ]v`򨴗n0 zSJ'l`\;/P,Op3L:E}ƙڳt] Z7l2t}|at5 }'?YtQ>9QI#XKrF~={$?/e8z~"*4刵td>,yez- * 9N {-wl+gD*O'C]Mjc}>zzx=SnŸ–|\h>Nh:_82q%gX{zzkpm5]/-͎{N{·KeU)e`K/z3Ex$ϢHϡ%+Ey|=]pHzc8o%{WB~^ 7fkZPOe@HP-Y2޺p34|ٲw:x~|"G1!,$9>ђx[>y"4^`HlNďg,_¦I솸:˜k.u'|{ ? pMr"0_ oC;,u/Wdk 2y4$DgУQ8)ױW֊uƾNVǎCeeE{ɂ{&ye7DLg!oTkoT:N:Q:3uÊv4R14am}EЂV [j4&T;2+gǞgPFf6s2NUTnf$}6P_kCd:0W3Ado ~.(Uke9rwͭm_!D J'yLvY?`l\,?3so_;ds^y*;} Zڸ\GEӱ4B{pBi~FPv Z7lK9\4Qin*7Į zmp{.P_hehWő[ӒURf1_Q$  DEl* v`!du )*f{=?L!. !BM>ϛ!-&Tl/~ϓog<4΂"]QV۠7dMxn{Y\†4V]=uJ瑩1eI&ݠ[oD/Alwd*k,yK"y&uw?M٥hӞl*|*=Yz:RFCeoJEHX7zG{waĻCRIy?`iv?JeM#HD三a#+$1нj* ~4'}f9l#?lIy] diVkAx'AMu+av_=YnE L5vٍٞ<0"j=` qsMkA?0M37 +N!V!}Y:yGJULUZf |,]l\p*|X]vxp0QCT{twtimWu'iz! ]75bapR~NL2XL"?ڒؾϜ,~:)fa~o>Ɏh Nޥ3dAĒ pdPY>6CփӣInrLc-^P_ r8\F֪^?+/_ksv}Y6 $Nu04%_  Vk ?v*p34_NSے=%}vw:41W@?@Rp,4h*Zo42>;LgY8OdVY^Ce?p(Ԭa&Q|)3M-E S.b"$Cw2Ųp),.Usrjr/ZmܴHz gsnywSWl0'dKcMkE6˜S"4AM^LMvZd}m~`C}455qu)t|1W\E%U>Ked»s;S7!ӡ8<Ν$+9{g0oGl0;%#Mq'5ŞK=dY¡FsWx,rf'%ssVt1mBI?UZZκc`wZ~FX3\c=Po WhJr/kDӗ=7kaWWU)BfcM}èֈQ+hp%pekF1zFGp77]'&tϱ+n"-%Dp0f7-oyjWXr,d::+&t7`5~XSE &Fm_-jSQ3}~VndsnTֆ> -*\Y# D80W04%Zz52T6t/'i-D$nڻ2kׅ?n<0H]J5>SGɢ2v+3j H_؏f S<~ڲE3NKwQ?s`b 7 Pw@k jAzQn4q E^Ti"% :Ȯ懲Xva?~1U܅nCm, V4CB65Pik$̋QȲ;OR?fDg*x*/[Q?B\|uхO\*x%U/_ '5St)w"TL %8VF?gqznQ].Ak7@O`v(0iGCU{b;9'ށE3Ki6d^.^~Xz$|_9?X4; 8Z~f> L--oZZ] !٪IUl ُ S;G/E>gnv=qӘd]B#MY}d[M;[7+Gt^/T[Ӝ6'NpjmɊ?<]ȉX> :egxT|0m6}OsWĺ5|/ 䀫` |ۮs7T'Z .~b,x pϚ֣<jh>>Oh8|Fx6ZitpB"ߔ8xܟ)|>+/bK7%MA(vu6R1AXk6<\W[I|ܙ1D1 O)m{-.% 7H,Y$T1ƫP/OV^x -7eR۸q r7u6ʔ:ybjaeO$ݒ*?.Vt:0(UG^C^>] WͺM=)1.&b~s9M/zeʩ#Fe1Fmnk)Rgὑ%GAQ)ٝNџMy)l}|g܍Ìq3C|M@Kע*",# djۃ2 ?7qk u`țP'Gk_[\}с;բE{3bZk_ɍ!/Y'`dTكm[">8$5=~ ]Vp8tx@ sHy68h<.)(eNe; ^6*Vm^9鯡 tU"H*8, E~!Vy7u/ӨBiT_+6RUšqN"/_s;b'U:Qiʿhl%hJbjU~AեykTb{+)a,2}@;Gw+NyƠ/zBc$0N7+bRv:Y*ǘt2m~B? P#jM?`'ip'bP iDZm?'F2e9,A,A&gFnb% >wn W :1mN8cU`:U>BF]YJwܕרE7]_%嵲)~UD8쬙-|7 乡HImhBtdmnIbwK^/Z}١Soeֆ̕$e>z' e75jZuP^[;9j6gӝU-\ƼJ5[3Kq}5wnwpÃ;m5kfL>I?@jwIg _2$fAIƙT,=eYMՖ NaR+>߸J/"{me UŪw6 X֧smLݺcjbXL5Qפ3`.*f6SK2Oᗳw؋=A=F{{ʊEO!!.` .Zd=@8?4G~FC/MMaP/ǜy{ӓ2ۋ|5a4a7r>dis8?9=8lԴBt &St++(bBP%PI=arHzTvCY"rL:TY,|)*.)Jꎬ|򇲈2JmV.&Q S gpzCOL  w˶ꮴ.jҪwY-w Ʀ{^<-wgܙ⢮J.F{tZYeEU 7t/ǽτcb 3wF`r-zE YCtH.릛i -63K{= kb2}W';|՞3pEpBSMf/ s.Fi sSm]Ce eh-܎(Ab89@*U9Ɛodžڧbq,^;kK;y=Bwtp o zgJ S|?;mK?L=L:q ky26M ҕ}~nY_M(pB\`F1Ov]ޫ-K`ZSyel| ]m.Td:/g AkTŗ^'[ߛq<AOY9Ceˬ>CmOi}d wh ;TEƫh77:r'k*7Rf'yc; eoMec 4ײgzµͱS]S@ݠ!]1T/^01Lc苴2avxTڴ/+ eW Rr0+0SRf*Sv

[*xPʍn\GӢVbbC?63$Λe0xo~S7p,OMft\wWpS[D!՟ؿgxZzwE39Hi2r".0(XhY)ؒ$I;7^cOvgs]KQBhbto5ikD,~ ݫl'jGлx +t?#uM/ LRڣBG23½; 8){o#`(w[~grO8Ίvƫɣz9vF2zNaQF|OƦk)/*$qI:*4*1)T'd*$JVۧUC6R"e SRiz 3ٺ@c^UTB-Y?8``JɪLNx`U y.YvW[TK_F/' r-A]I4/IܐjQOuŠblkSc`%;T5be*FE+d%{ȶƲ}AclK#rK3S)+yNj~v_["_,i|#3f~?=0F+87 \X>4lHpLϠ13>erHiok ˚hșWj_טo۶L gꍂt*CitNDA1!=5sa·rz]E{̨yt%r2+| VU$V׌/ԟ {Qx5ށC6Qc8je5b,9ε(|"^Mk֪W)1,Ghv{ǫ%Hݍ4TɔuOtgC#yM5t0b엦x"˲~U3ߑD M'ېf^>ql#K"dz*D{b5:jiGYqSƧ)>kHgg4#Dn0Mo+ .x^sqD-,M]ŮeDomۜ4/uŶ);ЯȞFAJbC21-kA+$1N\~*RXde wUϺG2> Ӊ8 +V*OUЯ7O`v17ƘZEcJ5J%cS1AJŭqy}_=B/hXo:RT[۴u8*{4U ]PPhIӦ!3Z;Λzyl'}Gey61řSMÍؓuj n Fe )Yyj&@ U`XFu IBOԫߢuX`76ٲ pޘNw~!`/ cg)rq]|~C*"=i%KN7p:tk#Iٱx C;I8)hYd׺#AK-s2NF&JCFh  %)l*>-롨$F/OU~)o/ ,܂g={q䬸 li=a\r$%pl4%J+גUk'~W7rgs䝂+AH0)YjKeʚꌪilE)=*3* ʪʏ,ϩUkBщr*ZS|dWG<%C"Uh[^}u%]C%JA`w(nnΛr?#G;[&^0)}I(ַbOJ m9a6)TiwAEY2s]hj,Lh_:{z}V n#<3l` f"keqt-d_Kob`}*GQ籅j2QXSesXik1ߧcbW~<|U=N3l[죱c6Lgflge̥^[ٳ*]Uվ҇|pr: fM9ÚQ0m4̰rR.Nfg)4>f3N6K"} =cxēZb.>B ːGӳ$xDǢ" څ$w2xs8=AD ߘhְ mu6אum健=Bg`j|8*(UtYtۃxx1tLR JB&I}:(+ I+Tk5,lIJ 4?Tˏ*(P8&#;LKfIAgI5p$/Ba4\+͝ف۔9U|5l73N[d+[z2*qVU8W&TV?.QVfWEJ?(їݬX%*(wxѽRRۯ_~U^{N V4֘荦4 NK-9Ayfo~Xi3#lWΖwW{+& ~NClOH^ kh֕ZK%W=I|*DqXo4lݑfuyqZw>F Boe[o ax5J:3,U1?2} I_mrۺ:icC! :)}aPOlLcٮc#v%!kMin X44]d!J%_Cg_9ۨl;lOz'=e U{gS^Om3FC[?HRV) b%1&úď٫/4 _uq]:=[/UOlJAUfƧ=O<tTyjOJRKR?}tѐn7ڨY/;&ǪMbjtrKT%vVN}! lLG|pi " Puj>fƪ YRU)>ZVTfА''lبA5h``X5Q0K"'ڢ J_n22s5$M1[66M+}Rv @]X y8T'׵V+h4Oh4)drjz)]g#zmYξ5fQ nl~<6kΌ0dZAߧ& : #2\dGʉ6Z:\թq$ƛ[߲#]KvxΟg_κcd44)?ܐE@u:I' ߂ߋyyy@3,EUI^ $  ?xݥ+)u!)d7@X%=YzۑWJL)U RP.OC`ʝӁ㤵LY6-}hVHPVQJe_='WEq}xZ]#BLU3l2u|rmqqC K-4Δ3gy84wT'p"igq:q7g8eDoJI,&*fz-?AI/.llpO .su갈˼<#0IV4CexTۇEXq N(P\Du9.sd%ld7@pw]CB hok>ͧky}sբ?Sk|n4~x*njwx5Ǭo3$lw=I4EEK~]^ hBr\,EV 5]IIys~hˋlw3t4ʭ"9 ۦV^rDnI_Y)ލ{rY}n>O.ZV@sHsߵцi˾r4Ŵ\ad|a<yw]bPi/v$zc$ln~"$&![]ȏ|hlxܕQe6s &Ef¿Sh4MaOֵaZz\'^dW:󃸑 RYz+݂iwvz P!i/;+h DX/s3P$1`#ʮ={4甅vɭyir”QQ(-6J%rɠ'~]K~`R|ܾ,E[ {͔R]4oNfNg-:uvu2`S;+"gg/wM)#6q:a- .6#~z2 gXyS'U]՜V˻HےsͲ6ҐRg0;-v{?'ue чL#QnCP/UCKq[N&ZqZEc}Эd'ӗ\U9˪d: ~%JRq9a3uW2`:|kxm!}pmCd_3"wY qx`kJ߅zd,q6s᠆go,ʐm8 mObxC{ܜ zpe1%9\n1h')t;j:-buefz$SM *RsΨ16TQ0|ҫ)IeѲ:2hMw'bӃu:`h?(^KS.*_pC( hO֭QLSQVB' W CJ r!`SF!_-Zn6M;ZbcKNoi} ~@eпQ~JcbYx=!m g("ڌKs#6:1=[&OMfs?e7ń蚀3^v\Q VU_WuOѥ)VJKHɮJnL##O%%$kRNKzˢ"V~._LiO"xBe)_TZ"qsp3t9T=qIZCle4` ~IeKZٵݟ1PΘ+[Hv+)aaYqys1NU>'zF('D5\L_B9)PP6(iƇ]=<:LTr6r(eƁK,'߼s/$ZGh Z3vqXO5hgLG~"~_`xLbP)45.>7˴K(a,,20"7;\n˺izaX0\Wq)."<^D(2Dėi~ 'ef0~Gȝm}+aumEy|Ri\ќS o*UvU.Ik$k(ie>2m ;?i=G>JϹ欈}K6GMCQa+CAQS)qiCR dft ](}w-^m#<ϗ7 .[- } "ru};*%8-}TߡW p>VW~2"5-Js(~87.t (/[HȓٰKvKxըesq% ŽUTxqH[d:p)۝1{{ YDA--3t"VpY|c:j.r&x`)NM҃ vbYTR;?6d&[2up*дWȕRKP(H`U:r-I+ۦͨݞ@M!(/sdnP}tG> (=E#Vݰ=ޭs_ w1>ޙ];Hc3(fZ<(]>w3+Ō]]mw*6mvɼ1XNe9?穩FRIqXOdRؘL>H>U+T}~HOVImYH+'nt㵱} Yb)6=M!}.)%S4њT ]" Sw oװTd=wSa d%!9y]s^cYެWrb#'Vr΂SGlsL56%O\Mj%eXiF9H5[L.cJ:epT#i|3^r`:+߫خ:4P!^Ll%8I']^w#Xw4nO.)X&?1]4'~{h#dK(,l}4V]21>vH]1Ũŷ)T9F,ZÄmi.@ѳR050)G&j+n:-˶u[q[:'igjy. l,V6uԈ viF3 p\ Owؑ#'ң@#~ "!Aaԧ_6 &icp7 y، ;55:9,M +Vʯʽg2R*+uj:0µmgUX2BG"۸֩TnyK+-^dyj˻ۄOVA^d#1Ѕ%u gr2SzA;<~&05!6œ"fv0OXÍYAٙ3;``b)ͭL*R:CQgn* uJUSg ?Zz?h\ )e*T`JjOz:i6= %mbmഺN u f7C3%Z@6(${>xF ]y~]N;j(ND&?A1zZo j>(4;Zfkī>瑸{ 9ۈin%|\(#;{l;v${yP*rJJ|)nTvi~YUvɴ{ts7YXDzk(,{b/G9I#m>dSfqϠwR+z?Lv$l Q}Vb(#B薶L6@>mQ]N<*#Щj4A2AQs ӎY , e ]mx:z D ~5)TwLj#uCu;.U;J3̴HcWGz TwL:=ȔW m;1Hדϕ ΃a|x_?eO=yBhYNT_dYՉU U Xng9B'q]iΚg9f!E>(AyA>4G\lB44gb)e+,ҚcN)ܷR+S?zʅ9*R_ +c3(.VHO$6lQn.5$ }-|d0 #Q5e䎛k ‚@sW2YLP}R34"A9eMb||v4޿98;;IMs:BzwJ?$ mM7lcJ2 _b+벬ޒִtʱ`3Ol1>EhTI#,d[L}JWPɗ o4G=wnvݷ?s\:l,ee ;Qh3Q[/q5$rUK{Ou2NF?R2\LsCmtQ0/5{@Yhw#jn5C&>2Jh[Y꒺BㄆvMN%&` *D"Kգ$XJZ6%F`s]Nњ/AJJ\M]3]\]D[_>-rb+aAx&A j@4KA-tFj]HՆmE7dO'+ c[?o:)D"*;^_0ߍ `9H#iL"gh i_A> _7M|)XF$? 2;nnbi?'Fɋ F9n0&r>ľP)@_NںfWuEKNci bDqMZ%,%]( ڼVfJAƸCm!TBO~ξ+h-НhK9aeL][ z%lLM # +6U⢀8 vGsD|ei3j[&{rߩj#~-rH2r;I_Ĺ 6T}h+I~R?xj)7 =+S?*_Ԭl բw;-c,ecwb.D8Fӻ''D =drbpA1W\UF܀4TRR+B[|"4*He|i\ j8 5;'Kea7: 6C.CHm|U' !&rOx,RtIv027'#SajRV1Q yeXel]]l1<rw`Lagp%USgaqgHAez#O"F㵉Qx+B6x{O&y޻CSMKYο(-ķYM?VG;t8UnU9BMGtڄ1;P/mN(^٬M5sjm-u55\қqnӍ:d56uxiXam^@[lN㭹vÓ${9Y(2aX#;y鮾kH+sNdgs=R_+KOZT8?ifفzMҝd- #h.9}I%%?dRǜu͝]F#~Cl{yfQ3A~>Ԅ0ކ.iʿ(b)o{0Q( _*֯M<ҜԴzL:]B?Ю&`*EK49@[sI0]/ ُґb|`w SbaТcK˞z^ESPmmEXaBᅴS-_TA-".z'Mu8S]'nm-UJ38p' 1ד-ɬsz$oHRpQ3%RkTc0K<(=\*7 q.(?

]M[`K`t>QO4|Ǒ)c#Z}ܙcc7^[VKHUG}P=/nl~YBCCFI=)v[H*u&:'NoG5E&쎹;󬜻ge###Uv%MZQ2o3q tVt5YkQWFH\'#ZiIn +&I]XgL5Χ(rk,zb=z5LN?ڂ=2WddjωO ޤeQ!hT/ ѻ*{NІץ OΙ:7r]Ub96WOd>9=7f~1*ՈmI/K7Hs3ZEkS!}#'L`K&f3A})5w{SO&a_vhMh<%S҇4]Pbˀ W1=rr\!ܭ$;]&P|i4ᖕGIeEЬ\!h]1fo^p-s3B#PfQj:N;t=YY:h.ao2&A=ҍgX:,)j="NngM Newpx"ʡJVB7ikwV6zittw;Tܶn=3_ME 5Z+}81{$w5c.u/|$9r-D ;Yq;v^b˼ ގӝB|#BEmHgZPBzs\kucݵp<^Hf;4EA2^5fvV4!^2ǣy˗NNS`4D9-Ҕԉ=,;UCU@Zoc,lM )c mD&=چfw΁s[KDQ"JFi8spWT_Zr"ȅ_<K.jH;Cs78g6`? $(H_̚NQYdy\΋fYLpOAs]f}=VeH# FMA>χ@&WA A*:EryNAe [|ytԮOk6g 𿜉: >昈p~ٻQ?*kG bA 1b֣Rv̋2ȕzE9|ĕLb C!ccC;X^gx?O?>7VL,wLz`tY{SJ w%!@+f۬ƢC9:ժkw } R(N| <&u^O>54hRY]nnF6XE#5lqv*m^&IYEdi+S>//E;fhhQ=&6M~!Pgz JUU-|'XMd[xK٩&)ZRI{΃P<=[Ux4<1ĭVTDХd l.1\L1'Ow|4N6c"dȚhZZ^_KG $fJ?L)GI^Z2IB@YXhy+{\{cgDLw أT*C2hcDU]^;E^GEWENN^ߜbD_ -e;Q.Q #b1m'Nbv^Oŗzގ>Y`K/l&;XxJ8.3d# 欏Lt }84(\>xi' ]L@w\^B2yD7wсO+RסY D;)Po*G]ydcISS^4e ջh?QuiO<~EbTM|Tq*7?{ -0hI0,mTѵb|G #a=U=Ug' "yYº>.8c W8 #V_z>zɥ]P шg n棜d6Ŀ1 'RէY;j9uqc&v8 ,-NXm֊d1}{.v|,M6}Vq3v䩒YΤ "di<a`LtswU{ I5QRXV`!”]d.x 4E dV%?]M]b* wDV"tg=-e*K|K~pTGet[IiQ0= |dnf*&[jqN51 sE wqc1fѴ+C>Ƣ.5I=E绠Ny'Y?랻DMMO$f" ^;q "[Xw *e24]bx^[ي*S.Q.dN7NV8@h`)\ɽ$U{Gn|p32̆Ej5a!$!X ܇#NM/h"O2,y(kX2nC;z*V^_e?g%vښB_ff-v!7b<{=q&8v @~^Vnj{b}#T.Ӹ. |m>/v@ 3W1Z_5f˯4_D~\AIzzxq&=< 5Q.+cVQئ3OSyu3E{zm,O3 ^@Qp֗w)p:N 6ڌNu]aAiIrh=7NY \7bJ:0PmRTxCV+E=l!W[MA3Qj\&#MR#%٬ݿ6f|'xdŏq/9&(w}kfWQB}?z#K6; B;ZNs!d s6uOq!L-d4<Ჰ, ʺ \W= AkxxX-keOE{ؕLGc5z8Ǖ.&/r;E XS yNUՉol(oE#A5N9zx Eꂼ*vr?pO|'N9XJ&Շ(ΊQl' ɚ(-͡+hTC!emT H'{H솨RO?Zʸ^Y_u.JtWhGJ80*K@&jN(j4/9mXUw9|U墦.R~Z[O7|OOt\.Ao՚hjǔ }bpA~#7,^{ z*=ϣsE4 'J2h)Ȗ-N=FM{phm; j'$L7M0N)$>׮"sN}'1&b+6frv|(+j㠄AκEhַ[JJUW5>:M5jLVM,˲?B'C{h nIkgj!YX `o/ z0d}XKY+kgtaFԋb՚9Av0wQ Y(hUn)~xK'\h^WtW7tS 䑜e'P䜑DfͰ7-`j8fIFֻg.8!GxuRsѥRz{7vy[eؘ^]H6 ՜- /EXj2ȯR ͎2<:cHFI#{PX}1}ϲT/DŽг_(n9ɿ=%]$[,cΰNzO)}H7[fT#mb= QzQ=^Hd^2a3s˾ͶCYk~0X'W2ZFJ%6@'anyڜϹb*"6*ZaoLoNפ߳˱G`3ٯ߼==5DGFPL7bݞ+bQ"V\'74э=Z+Bhv-c_Fw!ˠQ1ˣwX݆F|\Xn͸-+EiF4ZSS{\ VdHFQlWZߢ t׉8հn?X&(xwTGF0L&Y ʺKkaoGq0jnEzF)pVG?/V;E^8pMc٬>S=dfmg{Yq!J)|Vp&c`Fs8] g-rt-Ŷ 7jYc8݅"OclvQzޔa"s̮ZMuT dkL4wa.Oj?#ZSG\0hX H.(A;ǣey5)ƴZ]`-ױ9l{'?g; ~fI?gh;]ܩ%_pmXLWA'}1쎦;-ZXcaF\A`*9 b8s,]8b.0<ߨlO&W;e& $wlS~OdRCqM sXJ:ެoA/ܩ0;62?*N^s(b峻0TAIcG`OXMH*H+94ݼ.K$~L{!8-]W|p3LiM2nT6w\I |@D#3=˿ u{H)4ߠ0,ph*(hIeDN!|bjd&ÜQ(L\gIf1YSnbSwG3Zk ڢ| IX\LO Y~-+#nP,<Ӄ 9GlqFgE ;0,l|G#ަ &ZH*=-ʮQc[F?W(n. W|k VW}\fu3)4vx 6ٌz#@Ie ["9̴!c k rv&+f&)QhG_ހ~ s{XV/AwdƶXEg*Wl%w;^7<\`p8Sy^A)<)*] Lmoa^,zhcLYw:]窣? '*Vt:yE>XXB|$-rӫ(Ucʜe/nv'X\iL䭝g +wo0 ]궜IehjiVސ'M鋽n%{zjNz_C!ǁ[ۧў*Whϓ7*7l4qʙ N y4iiˣE ʻ8uy"9 Ǻg,4tQX@#ncT|Y/{:_@{a@622@Z Gh3.S YqSDae8CV1E":+Ϡ 8ΰR@xW9 Gf@{PeFڔO2~.x f^k-,\H2t6aoWx%8/u6]+Ƽ/ap:-KlƟ_o2uDV*t >YD+w(b$?&O8A\ٍGrYxrk61s3ADlpcZ%X:l3w9s6vpFͯcDw/&ЍF^oNgDV:oƆۥL0+(=\K S 񷸊^%Ք?<5 ůod&ͅ#ͮOAY_%OpUuJ8?SF(C O*;)̘Pުfʌ*GvbkctZ?̔ϝͫң2cHce(2rb})AOѐn[}.-Sf$DN+24d&xTnDrVz9VI&*>E5U^hNDn8?S=41/ ! `_O6# (ރ4?mnp WЀњDq;S Y؏I*iLhxr}.^qp#7B#Cah>ͫĪ;Pt?bx y^OWUC&Q(LQQv\ F Û"dN~)L:?Q[ͫv3~ X%m%;/ F1ZnPѸEƊp琕v? "?2Zn9} ="MCǂX`m c3Ёx2ݏ.\INH!-y, WJSt;mהnhY!<…^,uEo-VՔGݛԝݕsŷȜhFSsМEUci0@ރ46ʋ~樍~vWnI$}'r#\,aglW6:NĮKZ'e71Z=*g wA^r*}u"#nZJ0Nl+T({YeW Ieu>Z}aI{i0 E #S ?o71X9ȓA}bļbRH)Ok}VGCpyŲ77Xe݋I`H:1U>qzATVi]wKһ>L3d7EG8'Ɠ]F 6F"C!7DU|z3г&A` ՜5@-UvS>]|5Zw9u\o{S]HӵsZedQ8ᝩ{R$^ I2,2/{8t{ÚjmS6c6۶mK6^x7gޓټ!Odž~m">L-y w'3*5=Q,hJv9qX Kgg*F2kyϳ#rJBPPtm-v(ݙz||kzWkVL֙TDg̍7GTTbS]*i0lu^+ȯ}at<^ITx_H޲1;zhqat*+ܔo'"!V6*wc6tD`%$FN ¨OJG@1eD7+34o.p3CpW&RVU<`I6 T>;1mD o&J9LuoZA"*J^K qz͹k;Frh5RYS)WT@~,HħWfT"8:A /=YwJf -^lHβcVgM(Ӿɾ[_s&g:J>g5.ΞUlНv$V MaYBɁ9 ru]mI7R95\|f5N[ί ֚Hi!3f*@?gZ/bYCB r2}_ |B2^h М{hWmf+-"Z9iEdzmք=Z5"Cr,0d6g")T k)Y Ob G ;}w)m|P9EXjO<'Kx\:#EɍˋU9u/F`_ToA=&F[Y>@ab}7^^Jⶴ\,o跮U˞ni_:*"|FެW;U%xmKjʾƓ`-zW`7eti>k]}O^'rv+B_pC;fNħЯJS:g$#$Vf"xl^b):ǯeIJhT%@dvI:)Edy@2 t}hU^,vR~ɧ]Bu>EB~Ej8|p=Ji#l"[P9ERlb7rb*>" dR{[HyS)+_a_mHq^;)=eJ'ԁggt)b8(>5zAyWܝ,X_rHmRby{̘)ҳF?yGƖP/Tj|KV]̷*1IVO庖]!/DwJ( /Uvk)-NTlAפѰU-2>#bithKq0 qn#اa^Xb.:^N S`&!Mߠ,:C9ӁlYE0,% k@`->aJڅ?Q|D^ |vC)_tXz3ԉ `)aX>f 3 }p=.6Is<֖*X$ 69{E!/. bF!dk⢢>C4z,wEJu[9/rgT+܂R[3&m@5' ķqmJcmar5a.u,,m-'%HR6_7 UfP<* Wڝ;(1+65[C \龦ӛ;O;|`:>>VQxW:Q<MBPޗ IK!tBNԴG#}ux>PE~, ;}d=W\G_6{pX%-XgBU9lv0_s؉]mPPz:MjR jBRooG*b׉Rs]ە,%u[ZT-x c|z:T|RyRl 9E>_}>*\ƨ=p:rh(`Ug~s f2 7XI<.7|M g"\h\WZvAj%*֚{r,J{7˒r;_ |'䞤/zU่;= >#?c):93cWxDV$""6y \-# pzt v6oYo4 V%oc=\EfVQԀOl}x'񏍬Dz\! QדC7<싃:ZCO /]Pl2ν2ʯs1=F"gZخXɋ_ ~7"S8YʬifU#]8T9l5GMĆQ_f\^cmXK ɤ͐oE`" Z׹raphmp[԰v ;:i͐+X+&RկF:>hė'Ԟ.2  7;t~I)E;+:r˱VJf!s5X= {_d5= 6upP3T0dEApZG> 70 `9[JO Ay${uUj0懫;'Phֆd':sY뜶C.mzCC3ǘo -?0;=/ ̫3jnvqnH& ߰$߂,o!i[σ;/@)ʼQz|QF񨏳en$y~B:?Y̠;*h3*[N%mXQxӚ14HL S;RIJ>'(ZOe R+'X6G|zy5sJ9MQEPB sc5k``kג*pZMZדV3KI=ٚFZ> g1?뿬I"'HEiBj>w4Fa)EV~~ɚ?("XH+ VRf߃]#zQ'NIµ2oHa4SI,:YSvyoX5فڡ\rIWGS2TG:E9zLvD</t ^Xҹ_ۜd?q+HPX896_N[墜TUJ%#Dl'H 5fsXF-!.k ?<H \@ LNOQyHyQ ,*/X9 *E#&|nVDCx >:_x[xZ|X1Mv#_($^ 'k}r\PGG_~z *G^0ϮYaT&8e 䁯o7]1o6/=HW]jM:z7 OpB?մ[͋N'd6+:(ZMqA?9-OP( )U<^=^6]͉-HK^.%-h4 &{z(˔!_pHߘ+`=I x}U|+o!9"tX+6"HhkwS1rEL [o=QTz˗,MNGuuπi4]6MHcyt/iF[7Ay4tINJ sD BvP.i5zy&Oƹd5фNj"U99X` /%6)Xp/Zx&zr UpFN 2OrGyu&[8=ͷW[P(x3ݬ/SdZHDR\#a>B)uvP0 W&M/-v=<%pR׵]>'1Xy IDAT-R7 ۤ\ J-OM\jiS.pbe'j;ZC?TaslsZ6Ü[R_0IzB,tt!1L6NInJiؓ`(O[:r~*Q#avO*;Tye\1+~e58ÍzVA瓁rN:ХMX|wQN+GxH^wE6t$H7=6vME:I cRN*ިc?ΪbMXkS (EHy;ԅ6 <i )nNx0څ;#Bsr 2J.g/_Q*y ɯ@*Q(t@Y@a3:DgZkKX$̰vW ]J,@ ?pkytr#ja#FuD5 CL9a%lWt1Cb '9M6tNsG1Y”Vy+z2]Ҟ8G&"#5[2 h\j %)RHoP>C{`YS!vI7u]Xu Qр;WTw>4n¶߀JyA_ Y)Z'* %lCqvmd; j"\,m`5-X gwF`<쬔_.U;K*a~^Zm2h M$Q~7ͫgߴb=PWf'[ou:Qx ;b7W9Q2NFJi 'I/p:I#z}UQJBWY֑dbްkjyM#Ռu3fI3WS.eH3| dXXXeqy4ܷ%xyfN__IdR}UIN`)"Y 4-l-m45*PK-,v:]nDp9Nw ~OGqnڑ$FVȴii;6LJDmoway@ѕ8ݻ8o9P}ra*Ójr@ ˢ1ERY.tU& :sw}(b;v B?^׬i7#]_Jsygja˦xd&\'9G9Sa߁+acڴ=ۑY$=Ʈ:'uYZ ܓԝ ӇI+} &{3 c[{7|J )-a 9~W(D"w?䚕vmci4,H샗^ f] rl Ƌ3>[yaE]Y鱩 {2P 4?My+F) pTA I@I̶NlecpiS@{>*sO\C^[e\9K,+){=+?kuX3 `flNub'ףtT }EH\DP"BWD |f5̇otOM`%Ei5ah%_>F>>D"/*DvՏ9)g]ޡ9#R f%h0E7ElFxYIo8yǝ!orzQZ5s?RXZNJ8J} (oWNUO4|fACU;݊֩K ˸ekC`NUjK juNY~yVU} ZžP9ߝiC1dY}y:^|K kTVNf&.^i/BмXk@%i9#2h tpm7+9s4SܻC-\RZ5kz*g\-䚧$9ENx06S`Kp7qIָo/?H*||(z R^O\eE4q^8m왓!'lW6f. `zǫ>x+kͦkbgٝJp$7)Ԡ_-]:iW2pdgyI$ T )[t+35\" _tW.2uW ZW$һی<.=O@:^Gd3rR1wS^Ȗ8mώOjgޑJ+o n '.ŊQl_b ;2(uH օ/HS*93Eg%⣫r~Jd rz"p6n rFecD4̞\usD[4}T"E!CuM3A5EI^n3UXPxK/)nkS>W,^hTZJ!na2i^:V"_Fx3l)iJP F;OD4A4|"hI9Uc|>btW~AV Ekzvtdsz-Sv!o̊r)V.lnY5N^䝟cܪ7D`Kbp[,[DE_P\?c6 }t W蓑t%o:;>F@M+(Dh`Wav ^2cSqxξ#ځ_=."ow̥mQv4. Œ ԖK+edunPmkҷҞp~("gyFGp/r6cS2O29OyZGrзyq oME|eeA]q<.H=tҗۭY޽Q=ìHc=IOqV,BR .AOdǓx ՕH- NM2C8͆%]S>$C#.3vgNg8橙2z?NqUM'{,*mm^n`*p|voY1xARI`]!W /$/r#i*FSPEsA/{8 Æ{two+2>ڝx)r᙮.Ey q?XމgS $vl+7 l=>Jyˇ1RVsp[ץ-<. jipmZɇY1f,ɶb< 0 &m \A7b}HOr@>f}a9Yh"m|A$m:}(2Lj}ntxU*.~){eS}O])”Gjkt Y%= 6[|?1~\7+ۛCFPGZ lQ:^mԣ897^ SPK-|[\vO 5e2^qꈐ4M!1(U'2s*{ZyGK?vfqh(Vl7)K*wmm+.,0 p xoP׮1z=[@驻M_UpAk8Zq!\[VKS]J}9\ `]"c%` HI=9ܦ7hR+in`" 5,mJ,4KċEZqxW Ai(7\]#Nq^Dy54g;a K%aw08`|}b;6HLџOc:BϓJ2оſ?.i3'ΤSHm|9n~*֑ G0gAwXihgف+li I 0^MI<78#*]VoayQ(ո+à18,~՝kH7*Om$Hi/4c4>.U3M-kn>=!ʿdb3B6P`u7'` j彯 ە7Q,"=|u0qoxC9 C'RoN^"t'HǓ=MFy|d$) 񾇼!֠"6Po[8 7;K2w_6u2]l'Y)}cDLBd,gӲA :SR"ȊN21Mur <ªm zFטtT|^U2C>㊱'I9FY^}^ޗqzP+&G(Mi~1xe`8 3oeA_L&^g*np']R$.*.Z m?i _5 O,x`Γ(K5VO8bjfec]Ĝmv'-͎[ުt3LBHC4|)>T;]}`6jv&w(?=- ']f6ڹBJE'FiI#r:?OMXMt'.yhVb4\oWLE/s8ۛy:Zot?T>M>ewtP>PM6Ҭ5`2[& "'Db_Y4d@$:dYmxr{F: f,6:5Vo*&TqU#;+V,F5l+/N[#1f_rğ1h  x'hC,S)➠,g֬/>&7L4] '$rA.F'2>/_r֞E4a;yt8J >2c/g#Q9fScv:{YV&="x?n(`2 *5"*BJ/- 2\tâ%|C|uhՍ6L 3nRdaz "^s<dO>TB705/omޖO'qR$ڔT\IϏ<[FW@V( O8I/}ZQmy: JJcDY UEdOGQ.'yPIeFGFd (ltv wZ$4h}+5^[ ު}L1wM0ڹKmvR͜z..4_FJM{)` 1?I>1N?XiDZf[1fu7(Zc;^WN"KƑ"ø_ەȨw>{G MOrG;?h+&ͭHdȼ=L#PGĽ_R/]C)<"}Dq>˝O\I輻;EEN˫V jݎY'I a< #i{T#PrK\sh WOA#頝qa'H!ef]LUoaRS">d0̜t$J̈+o:U(˘`;o:WbyK@D g 5cNc0 Ted/Yͮ' ]F0!yx,}U>kR"9 ߒ,Bő碂 |`3~1Ǡuk$䚎p7,i%B匁eAl}iQ )at 2QsUyH&ȺB#@NP3'xCVCġ 0eprA 8(Չaf&g3% ?V^D+[Q!O}wr1+$e")9l$\uBw×d')Uu ҉Vrȵs!J"dgCwG o,+Rgh4ռt>ئe#M++<~*7ʼPNg/fpS\ )hZ$Åྼ)9xHlaBd.Pzjo0'vάfߖEعN/͗Z`o+Y=Һkx*k e`<% eyiKwM)nIvQ{??LNVNNL2EVEW_fi#$+ cEu(,-5Gjy;<LMъކ /DNGO!/l/perQUMì\moo $OUڈG=̄B[-Rd|2?έA&[!/b/U6T쇅|o0a]ޡgX$:'Š3nZfX}U`}F4ܚeAo+3KyhqN< vi_!1rގ.YfX_esQj ]l Ù#[$5eM5Mc[o1Yh3ہ^~F x-VbGxWox+ T@@Cu~ܖ@Z*]x/n켟[r/Kp8Nť;ok=[oSx@`cneb<(l]'9Iid cfCe`3[lsM#̼Ü.VM|Uj͑<5֘'X2)V;竴]l2RĠ7E+je xYj-^5rB)ٍ8ZS7/Q65|=M{} M ,k!+$w})!ݫ#A}a{$J y]q: ,g~cD<}oFL?InG8υ:7>: r},}e4 .N%Go<`@%os(."ʰ2'B^hAuYc#Z~PM}q\CnYjj~Wo֨y x.\$ng3vðH˟um5CYSoWp-COFbq>e+Vt&| OFB K)W-<#lGmV˖8&&PiR~fL&ZjX ?Wmhxgp(M{s&<%_p\ @tIV[y"p~L9Wa*[ݫux#J|XT 6\g-*M \*FhQ/QJR`<+},^q@6r:eQۜnoa10Yh,"rqot F|IÚu Ei5Ht!` v0cS d3˻2feK`<Okx6q G]XY= r#%tMBIr%,y9Nf+XMr5xCHDŧES=`1?+/=ً@7 DaSM4c簺[EnD+nvZެY@ }Dj6/'+.Tyg#/] =j6TjB*_)-I{%ɿ7%`9[v"wͪEҼ;sŬ[For۽q)(_}oLwrNRaGfw!mP_JX]qit\ZQtE[c-B$}<,M!fLpiogE啫yhJ5"*k8+WYE3h$b;dE-̥F)3.7O Qδ3<wJ&KNu.T'Ӵ,.~pW%xYGZ&ޟhdG}}ZWP!QF {el#zZT U+{%^#\tPoy.79??zQsMQ;lv#+?g_q~X.4PKjk޲^XM]+.FkEMw@>{zS 2*0Rտ ى.QH=o]Lm-7zSLcL7_uĨ&wcgl;Sj55]=YkF@9؊WqY9ﯳ ?zmGd]8+MM@X]`:DoA]8u]ݎC+Zf ^; 09_ÌG@{S,2T=Cg pVr-K! yMY͠iLA(nF> EL7d%ud]A-j2 < [dLa#8LS'-v-s(S.4:?}@ *je}GgPE%}ɸf=Lvp _g<3/.70QQ6C$]]X^V 26o' >O<(06s(~k&2&lYHw;o3l+psRquԎFȶ[Νe8sq/d^ iSL+p?NHN.M.0b,.-ʒ^ة6P9iCN0 B)`>Fb8Ͼ,y|@),)[Om֨9K'yr+ e_=G'Ӧ;^hͰ/U6$񔔦!ڑ`@sp =KbDBV}R_\NtQyġ,Nn~i4ɔ!phmU}"՜,'NڳorLnV6UurOH4r`^;Z( Ws#i+݈5ؗ41_en}=%3r\ _abX֮6iG<˔V,aX.^c +xZ)n` +C^5kpOr%X+&FgXQxtJa5 +&>+3&;VFB|$ 4>+{;دo\TƏp<9 [/fMq(n] S- cm vD9OSQO%RZyQ3R ^B#I|&od9?(͵dP|(lGqPe*AXԐbf^Zm_2'Ѡba(Y[iTA;krva j909[d{®o9Ūb7-P'/Uu0il4&'"fyeCeb;$AuN+e%GW_g1tB*P=QW:\r/i(F.hnr IwU\/Ύ}y4}=3*;+5dHzt0]qKeJ EMb/mDb sXɬȯWH|vCyM/Le_a smKMFFr?3DDYo#B* U| 14TG.נ0Zy+bO N r&8Z >}8SV\|ɞ[ZOTg^~`y^DcDw4t6b Cp1/K;ǡ.+^:EהJg60pg~g ќ6LD+H_oP-(}޾x }`,>^8vrI<>t&Ppn޳X/mKʳ`&? D~NuPu0fE5<2ѹfˍq WH^lωYXQWoPiJ_ Ig Osz/$ _y޾Bwdr\&]FᓃSs.y#%cvMcaweۦD/z5XOĈ\vi큳 t7z/4=T&Ԑ7@WI#NIMq БTdYgޱVt,X<%vÜ/Z9C.uqاnsvlhkl,Pn/˾VqE 0 m#eߑ2ʠ63]Wa9$h/Deb%,bauAoW2 TNk8 a]9oe 4#pqԇH}cπX6Xo˂,/1 ?Q`2'c0^/e[G]GͦͿ6.DE0[dU\տZ\;bF:*vAvVU(/Ww: gPCԋzXK '2nnVG- vқB_Ѽ}fHC rY''VY34l LzyHP~'ە?kRz$kr{DC:Tt=x0,j;E"KSJ(WBCDEmMWi@:ބٚ4N%qgP Ձ +qa'B`'xZFe. 'Dq< օpL,%j'j2zC"5GDBES5(}BVC뙨(Ih1/C ϼ{hI(m\栤 'YyN8ڕT!| =1J[!O쿇?QH35ҕUG5Cè~r3IډOp.?Ljx=L)Gn)uR|#^ ;xZ)Z(PjȽ~I8NKaDNmD%,v!总 s![# m d:*Q(y@*g@S/]x{3 焿p[]*}I)ur&df{X=+Q{C:w eoӭ޹Y$8 +r "yRjFַX(:(::a|" |' &^_2QVOY*约o 7l" a/a,>Ot Wp7[򢈐`u0@)dVv&Ԓ ?d٭T-X-shT@.x/RLX\z̓MWh,\,N5AUph3H?aYc}&V/Pl[ Q@[Ax[lZ-Q¥Վ=<<X–3߹V'+p~|?hm?Mp!~df/^ 9c{Gw%\ F1"ٓk%\G{nJN,$xIS>@]M3_0~FhTGTU-@Y)|hUW<2䄅~f-"þ]ϿkmC<\a'Q/x5˚tS~oW~DN2V ǭ s MV9y؁Yn~êg ?b3dl ,'B)U7h%@`UyCKFlG?>~λ]*;2OODvQoŖWn,2|&ٯ+ 37Kdxlt>r"w6.Z77AbM*c0ة ~t0Ҟupu&i,fƻ@4gyBxEMJ\y/CQߣmh- I;h6rzpV,`)R^&+yjF>9[*OT}%n Ij~Gۼjp~,̛8MV({9.M8MQ6)\8,ъ;?(^U \h3 }7|3o{|B%+K8-]$Qu#Mݤ2k ;fÒꛆt24, ^FS ph#Mٌ6pz6RBX-]ݝZN'3۳)b0Oie1Jƹ)K`A] 9jxMטg YB#2V=vZvQD!_7ILrD9\N~)_ʀ0-gX1/Єt IjAe#:KY_q*V] +1t XoĘ/@cp*Zw2@%pZ.4pEfTĂ%r,ػSakǨw~ƧDFbF? *#v,Ѝ)I(WL!"DFZ`D.- n /pD#eitë ȉny䬚CEKɭ0n1أ@cQQ&n{G~)@k|i1mtef N9Ky#nŢߎy氹}/Y1HwV 2|.-f5̛1UȞ([_x0 ߑ΢<"dc IPe=_% xGv 8 0 j>$9<rx#LvÊ[5T 4Ba8.";dJl`dg3IN 4OitT*i+ȏj?OI_RYbpG렔rTVcT"獬}vOq(wV)`{(P< tH:~E"/iUsYs? =)}aQABk%8%Z͒f9Tm@=&keh- /y|nv ${OU:\_\W[ڠ%2h'A0`Ep{ 솿AQfp^5Gfy0&t >פ$ni<'kBP| yTA=`PƐ:YK>Wݲæ{Ɔ—bpCfd 8Qք'D1NOdАMY#!Fp0&cI`Ԍ Ʈ:(Gwe& f7σ դi"/ЅKv(Jh២/"2XEb]_?Fq!o1*{H/A|fԦ*>H:Esى {g:eǵA 4 v?B gTS(}ÝDIv͒A.w |on|M>9~90_\ Cia_0sh\{s%ۊ(P rT(E f\Nf#ⅈc@z\M0t@eO^ (`h骪c.Do=EeJ>±S(z!}Zy@_i @J\|O. &0aC|6qt,հ))X}` :f4 Yl7J}Mx#{u7Ir7 ]>m \/h~R</l)P4|EbU8-zLq *LǓJ @*@ZI# ܵkjqͼkէЦNfN <c^@ḫTq =WCHPnxİ:F'qOx=Q@ii];jLV?dUБRky\ QԼ7Y'>%xx.>+Q/c$?lmd +a: w:5{r Ÿ75mgHoݙ#d2[*SOk? 1 H6/dIx񈺕yѿ ^~13OAM+ T\ u!Er(KUd*߭# 2⻦F 5 %L|$oA;&% ֒׃TZ$yv-bXP/4n'vc'~+TL~NJEp\)O+O5a+0>&"h`7l^]A+!O>vJm1_kWtꭍWiiVzÿ`c;P9C)8'Fu)Zkerr8F |_vus{+ɡj$ my7B|}ׇU"dmxF\ Om =l9ǀ<*!O}d ae7pr/uNATN%Hg0'6tQYSOW@_xgW[̚byX:\V潴Jphd'ႻDwXs DaddXo b"$0JA)Y-/rf!?zlY~L:*Xh̏V3S3΀EJ;( {`+Z&18b@+AFÓxLP Gr%~nrMa 8GqޕIV_tOt6 ¿QWh&ʣBJ:LC9~JĂ VA:E3_m~#x ]Z7uj={e-y5AeX 8Y]5S-%/:vx.ׂ=8R{|cDċh s9"q3!=_p~, . 80 NYxvrU1$ep^3cF+%Yq+t\ 1*qAOY2zGzV nr`\=3TK[ u!,h/Y {#i|%%nZTK􏳜NQSYTFZЁ*m#@`rW= uJDMe[c2zr(Mۡ}&k.$[}2NGGғ*v=-=Xve_K>lX8Ĝ{π+^cVX1We+iq _aqH&Zmҫ8<'[.%;!=/_/]FYЙ7\^Hrh1 5 ='{&҈~ӌX%ד㲑؁V^MCT%rgC8F`dz"3F>mZ`eV6Wt'G ^]-rP ge]牳(=ʵҖNyxP 1=Vg5@6v;^3iN3Q<:ƪV39q*me mbqce'8GBicL]C_y?2wP|3TcSBJ,?N&r8LlK$à;/A+sPMXE{=bY{-N&lF>bX zR~A IvCr!(ʉ!n5|65K@ m. EEdb\Ț1ms>Qi=EL{#qPFPDOXbf!H}.ژoyM=r?mә?wN z8<.vLrha$i?M⫉ V*qX -'YJ|4;:?qQ<DPl]$3~t>2Yz*< <]욀]?C0 D+a oB;L#!UW3Yq:GKaI EϞSC]b,MBmv3ܬ-eCr[D](SIJQg3W6S#q\3pN0X38jap!?024zE"v9IiRzCnEKC JuzFş+FM/H﨨la3]]]G[)]2yno٪p:ZN2OpMvP#b?6x +r bSeRte}_am5W)mXc3ʙՋŶߞOqE4wWWg0^I`9xN8^ìD|dbI#Õ`y $j/ـ#^)%XADk<童KwX+rBh= ١._ IDATcG<:}2,LWn&:R?#f8ϷKVRVSv7 {=-FWT6ffyC"i:U" LV Ep;qK|m@Ԗxl{9eL@Ay10`ZtB|u _b* :-n:>\E+h l =c[h(f(,/ L#Q)-zSy )|p>YEɞ1c7FmCUrg:"ˠ Iw~9\2/[Yw/ɧ{5zlhޡ87i0NV QMǒy{x1V3ک3E.䍻x 2Tɜ0|DL̸Z;z`_A":v3wަi[o/R͢Rxd $J.:]x:mYyI5Y:M%XBr99#OX]2F;t"rxGOnIY ^9\Xn0o(Ud C eJ=&}aCeQ2êk=̝Ȥ;J'nc)5g;ޒ3Xl#:4Bx6uӭ Ē }ؤ3%$sus'9mՀ,plK2MYP 2T (!0tzMW6IT[|D48gp'Jr X%UlL|_yp9=2%bSNwWX1*䫸)*ڹ+$NoX7լs@i@>"S"FFir{޾fyy:gp'a&C ~7M6@;(ba(*?28E})O꿔w@ܹg/؛f0nh҇^$^y rGcm̉_h]!H^SqFXE%o"xCN;.P*N˹J8TGVlGlRNf͂3뱬({̤~nJC&߱&)}3Ǯe`gӏ$6u+h!FDBQDOt1-I]:be@:n(-{=\l0d5d<.'8 [`O9^l8YV yI;lMGdmJމQ#[!3IyN:XMŷ9m1<ϫ?6ly ߵ2_s"cWYMy7!J:~oAY->X  2Uksp~jO8E!A6 7tY%|؋fq5#!$nq;t@uJr R fl(; $./9`2m=C^S W]?OC Mavs7&{H}-?dR(V#BnU)RYA66tMc.^(Ru-gI#v5qdr}35NAzCjL'%|9<[NIf\ĦwX]v !&-P,r).|'^DkI|NA1\B2]>^a1ķ#r$$0!{+) Bs^[i s=~n-4B#WisIҲwdq.>HqXi@uY\}@h8t?UQބwd\gG;=KΑ9>/aj, {BugQ8EQ/fd6QC7 e8Fa+/_< "'@30\hqgBaTdsf@gLWk*D/ Ƚ|6v/9ӿŞ[NV!Ru8p)GPMŏx.{ZRf;YyV.ԭLWW)DvH5qHkg'KHDƐ~ %8 w)C%7lj^r)N:FٍS 1+V60vu[eKdD)B]_%_2#\ﮧ>3! b.Ƥ 㾠>6D&ղ@Y5/f1~d&oD3nɞt$'>KSx{7,:n kTj$v] )jnx,:{f5^oSjꈰl6HÍ|fmne'(>ۻ|g-~a(xo1ĉrjׄ!ۍXܡY<uE9."VMՎ8%!bjR>$zVf]Ұ'rLw|rLg%!R *g[UXՌƳ}.P̐FuKwƦ?{/f)Rk[ocޗYӮ&W >vqەFFPD}Ddh;kdPOʡ+T=4WhDHzXav rxLRn_!XDUO{2#_A:b2"uHlC CZ*#3ʐ]n4M4JQF! rCy7޹OPcp*pi=1H3e^T@1xa')%:RsG5k^G9^Q:k7"B\"gLÌhg L=&)YjtH+1|FԲ(wxȚi6rG(eX[bY5Oi״{Ҫ )Ofkiz#Ce|OkqF6VWq?AXn2ߩ=.- ;BT%6-*yP421x+0-j'Q k-. /_6\s:yrj&k/ __e1X-Յ4~q;!6f32J;^ؓݥwzD\[I71&pYa)CLr^LsRTxcd <ߠ=tXC@uM YfQo[E(ɊP6Njf"!YMc8%7'FI:+re%7s5wk/MvX>۸f;_Dη].iI3҉*._J fe,ǒIi|\SXIe7]..xPŒܲ0n%;C> Ije7l䝼T 4L ݜs=99V 䪱B$]ekwqZu0 4Bn59ك3u1JXp(VxHEY\e 41*T! Q, d563*Of/Dd7)S1;&'sF)ia/8*k6A_ lXN {YLpK=r]6 NB<4[QP'h/)ކv "`Sr%kƸswQioCk=*uCL:xשׁ^#:imJ׭;"4Dʯcd/dl- K8RxTrM©7᪸ 2Vr\{eq߇Nr!*>b +e|A扵"/I+p eH= q?yB:+tyZ3#jC~BY-DsQKì (3Cހ%E?a5Y97"9S?d".g>#xJ*r+K Gbh3#.K׸EIw>Yh:Vf\ Q*r-v IX7̒D6'{oHEް4,$? U iFyx~BħxM[ch*U(.% 'u9v}X(ES8Qz~H|HZ:Kȩ;zbIQv婐b'PO8XP*sfqқ6{Y꘠X)"!.6NGKB3Eɿ0-7*zYoꤊyDA "JMR irWd*Ԓ?qڅؿ4 "%g?Sx*9ubxZ"^|ęFss)aMDaO[8ۼ Li7&õtmi%tI3V[e*^BNjQy]ȼr=ɖ`:9&TT^FKbysQН ?7]\XkjfO5FMX L} ALWQ?z3QyΤe$5c*//Y^Jުq3]/}RD;jTh`RҪV̳lC]n,W'M}}XB?Szswг{(~,|_`Z$l#9 jt<{LȒ8&-ʻ*ՌXH,/L,ֻ&+^e0$6QRҙ2h63wb _4o|<+X:f"̙ųb2lh*c(`_jOx@nSq|Cvȵdh'4?wz.,_ld%j2J8I;筒$$4VN3K;Lsۻ=}Aԉ]HF^*؆ַN*+ tO{(X;%M;]أtrHt6T' mcC(I9fEq ܐ'Da?p}y@Xq~[J-Y,?[LhC*hh]Qs{!RK%_< 8T'!#`!W#H)B=5\!MJr$euMc)mb̂3&)r~)$7)McA24e E.@)) FAސ hE& K _Ng{X^QdS]4 4hA7K-Իƥ7߭l#k"/rƿԢ2'͐B%JR< /Qr_nkrK3Ȧl&gNKIYguj3 2I⤓D< {$.LQ!~B5 `gd07)Z-}aufNEMՇJm[4z<,kV9-f-!2?-Vz& t~Cy;75CE[c%ZǙ_pl1f \C`,pH}8M\/aATӍг[RPW v,Vb5|( FGG@9=kLD%"{wrbp?h).Eރd7WV(܆ rޗD'#\猤S-(QߩB`r iX!7{c) /z;j3ye.1-c?N+8X i0GkOn8p(,[|! u_W艧GN^8vIcdF尚U2sj}c=\=; ?Yǒb5 ;t3XS!%]K0XVX J@18X&?8WShm_P,| dJS?e5V6餁,I<ƃ3ys7*#$k;2HoTb(/I |+v.H`=XGX W'fAdHS}+'a ܢt\2$Rꦎ2 3>{N^OY0DԀ9=USA!Co뻔j|h_bo7.O/p{ v2ߑ Ƭ`hPAE IDATzQ6@w$PLcQ|?"$eU3 OG;?fGnJM?H>Ĝko"l qڿNzffEևSC@?v4 =َp5D PfJ ]oyCYH="7b6{Wi}=⡼$.akL-K8!Ʉ鬪?PX'Ox>$Vo @%ng!p \EGXpsA~(!N;YVDʸD΃Pa?5q&.X!RL_0TV1'M2<܇{fс]yD3t dZ, sȕ6f2U9M?z:cm=U*1t3NW׊eX rVEh<쇶$soOA3V{*9B202Uv#ьF+SǍ52UvBKB|=Z^sLOJ+16ǵ+t)M>:X*t(*Ѧ>\BG%g 4M?Q/8-H5j g/u Դ¸W$fz XMx8%*D5**vcWXD*@g$(a! f/3l&#z;(#7- Oc\A] %X16R{e-ͥA{ljXlh Ky^<|XE.&T$ԃr(z]7y0Yg0X0 r+~QVXٰH5MEҵ67l*jeW=(ov^gb|O;nTY+ł1콼IN~kƤW>x#G?w&=Zo(@,SӜkNu2JqQ{VUά"ڀ%.:ɌsE>A3f ?~ ">$~\cu:1STfՍJq(~ce?$w~OjIb^2ЭtӌP)uZA;xjh~XV,G{k}J0A?*X;(>,MbpKT䣜 o^4eh!tgQՐש;kr-v2/kUnpǭc1@Sʙ+r F,ip[T V'2 ՝Lb?Qɻ45`V%;c:γɵb$>I6$-Q)\`q!X!-ߐ ᰗ -odNqSs|NZ˔T"rCGl˲BaigUxj/4rk4_9445л_VgFy?  \fFWߤD@f˛"^v>|g=ɮLQ2B،o&Ya3+od¹ld Evyо|v,LN΢{HYXB. 7W(ge7ˍw^~|r(_bZ%vKGg ?ley]N Kc埴g!".4L5[ ^ofzgH T` t. >N#َrdÞ,-%p(TQ'N7qo;|,]+&a"IN1?*,Ϝ\UjؗX6KN^rq D:>Q> bIV{Hg#a<˂(ɱ.}@wQoe@Ar `?|ģt:~y]D2xzy8ebTsKL6fad_6'ЖR|͹NB q=ZWK90 cNSYvS. p?Dȱ?D9-Xf,]ă ZHCb.D!r2VN{p)dS>Uġ!iMi_fRR'f_ 0d /걆B kn75h~emsܶ{I[k]HAi;UX6`#CwH&e)Bl9rx9`0l) d:_iD 7"Le-àڟ Px.K}mSSAJrQc/IÏ4:%fae USd`(`e8C V(F á, ( xHtYc5;pQ81do)>n]gNOv[k4?Q#ЅXrIVR[\yBJ Jh#:3?D- Aeej4Aתcǥqb?`bd6V[l6f[ZТpMN|(1-ыѭ[FJ ֜7tցb]PU/4i:P|yVUQ9k3&_#JfХ{jލ?R{`,>3z8 gc/0_ שo֚^רZ>hIʑ E(`sygg w5gGmವXrGͣ橞Zk#K9auVC#9X8/|~A`= o}rZ E`ɫӦa7J7bBEewu{zRSH]*cה>S;d>JR Uv\+y@Ckq6pQI}O[VZQDY %=1yES`%7֋&t%/M!6}IӭevWgw kr՚`T,-Tl6IM$Ez7w7!E4LhDۅ ;#~#rv,cuYC|mO/5IG|4 ܤ&" =DY[| 1:+ȥ'Gg`=HM1; ]tIOȣ0gn _L_3ΩFNa{Z)z}9<#2D t[m~.P2x?' L*?b-2Y /M*Jv̵W7@z5=},×雴lgԏ*ϱ)?#Sg~m碱L T@3($8Jn`urOiF;O}US#!oDw+]k<y6Vsh3ZG6A.*!O#:}B:pQX7h6'3yg:)iBGP PVEwt/{s.xL', GSc-j,MrFˢr(qyN"eNMMY|bKT#QkC:+_0*&r%\GrJXLI nyA>a'ڽSAg!R P ű?155'>$uU^t)82Dd,#,/tˢP#$yūP]FN,Ed8&@k46sDl%ImY%g# ;ACAノLlbxEe pfbp( iP7VeTS_"%LL0WxWpZB9r,h6e':N+$/'.8;3O@pw(V).)Nq ZGJqw- HHB.8~3#\JV5VX.}jL$ӭp^G<}c畠|Zy*d`C]MOV%lj]dtkj ;adH>b-¢prdL7Qա=K>Î4\&7S:e8+XWeNmh#|+dqberHG@ؠZDx@A%׳/lG7:dQbq e_"w>^-kAk1\K m+M8Ce-C mZ{xq(iW/ N wc?[wYQH׎j>"W|a>ϱ!f03|Џ>_}l]"j΋憭(ԻEie.lYG!D q}-a h!-2dZ<gm0}3xY, sj}ju0Vޥsz%S1 ⏢x6#Ӷ8]S|OBI`݄5Nk{XVPx$'/Ul>4n0Hؐ+yǴPֈ1ٓXvT5,0 ztvʼn?!Y6 =99s;K85s\^VWUsFkM\1W!o=a-]-yɿasFgG-gy{;s~鏭Rk0P8s?T'hnERn=}mQ>tc3=\D#?{pc]FNF{>3 UT.` +g~Geϱv%nN!zYqH?Szrˈ `LOp}"Vߓ}c\̨+ᅱYiKwXw(+y^ ;Px mB&_q1Ai/?L}US0 ;#x07"FzRl+;^l K;&X:|:SV@pS7`R>4uBWyt:Q,IC^4 ƫg~xK)JH`)̄~S?|(&*, "$ꣽ˝N99,hLW&)}4,_ݲd|DE+lG(ϋ-d2!+Is&5Ib0$:H=#\@!0ۥ9]1rUska{˞H'`&`M^&X[ Hu]VXЯD>la%\q@IM- l `=Tz˧`D̋7p*Eh g:LW513T2b= ð c/ka3Xm֖}h&]moOSFcNp~"A64B3(a5vxM8nZaHz&}aCD䐿dUK}tYSc1+h.BpETuJuegÜ{jڄwΚߓ/rX(Z< VUh%2hxƹfx8 d*rs\:XLk.'hr\΢yUҵ@..0X>F-@z8)n96;frg%1^x[yaLm*TvT!}+a]5aqKi JdԖrg}Rdc2ڞ ;v[8ڧ. `]H΄mf A!4ۍ@33{ɮrWvx(:] ݶg1p}ٴ4s]U(e0LJuqNuFhކz 'b3졸nN^ݖgIfG>vY$龶˟م̝֡1圍ZI/RYN\Tf@d==)2+#9u}`Z`kU[%n'Tn18Vw=򐷚{,2jWy2U5_.S2YDL=("-"9l\c  SG 3*hWQ3%7.v`G*QYY.[:^wi=g8(DuiŽ)qk"KX@}0nرFr󜵲ˑ#&_]1Cx.C7D %}J.#Y'pu?G`zpV R2l|iQǾLrF,s֎Pۂ7Bi]Єr|qp*7~ᗂ˴)\(VKqGQ 1DWk{+z"U\B! VPe8,;J\m=8A rTR'rbCx ܊Vm Y=(VR[Uc3U3V>cReWW*IT[ MML, @N?xU]82X5bɧ;:b8s1/xdQՅN*nh 0Ъaz^y~g2 O2*&@fUrw&@3ual5?ejj7FU D4X-PGe~[MA4n3r]ߜa.y "dK-Mȫ; {WXS\KcyT; n|/avPeZ*/ d IDAT+êlXo&[qy P/U2$` x!'^fL/pu5Ͱm嶕.5]ԓ_PÃ1/'bA0#&[QRiu8tOd$v{݈m`)ή$[i"aVA ֒]o^}HKaϩ 8lZ(mP,l@1?ރI0 N8TT6IK"½P` l >y@PMS(CL^n~P-czEYqJ[ Wqgts$C)Ň<>^uZ6ٜcO4ߠ+d| Ł+w MC+UÙ,ZBsF@i6aq'V$\֙[t, Wį\_D\qq{_'rlQ)Q'gށYٿ|vEVyؾ`͵ctyjq.mLewy%B-zgR=>.oy]!3zgsBeHf,vQ -NFY?g6+Ǚߨwltų/ˁIܶYm!;o<'?,"ؔC az1'O"cD /-p.kiVHFi7nw?,c~9&zz/^#iO2da _e9~B/]e2Ls,r`#x-O7un; "♳=Nw,trVw Se:-kmvUԧ ʋ y8ϔ 7evfIFTegV~UM+tVp"kA{ʖ݁^&c|c1k)} {VZzï47(g}|{yFZw=z:twO=`g;7iSa?3fr\Jc4+fO<[͓ӌ+N".Fi킪 O* / (M ^`cYf qaucʄH*yǪj rd{`HM1ueqdꥢTȲ+Q+i-&)L}ϊ JO]S@QbOڤIZ傉XBa#0 aXLQaTH³_TBͅ*+?K+~jۧQl9nȓ`İCV;v(ʢVܥd2R>,qނax?pa;goe52'T0gl3iX $PuQCuF;f齨?,ck*=L{ͳ1 Y $qg" ޳yXH[Xm]7mNR:S RPZ܃-o.2f2]¡eBξ>4htׁSҋ簉HzK[xG,(B'!>,T/{R4*,Tk*?UfqtzN5e% P8+Q8+KcHG6$ 6]*$M8q]Z;JWT)f>6rMLf[%O7rt)K0;9'tSaln[Gm./̟cV0Zg60ɬ|YUJ7){/$QܑR6Wc@0~Wor tF0ߩ#=Řc?ͮjjb 4.' ł>wV{#I1c!~/Y?x z9d%Xkנ z~Lg=}|xaUyÞ֩J^L˪p՛Vj]߱H^r`1H;3{SV ._-0jP홅1{ܙ_{Yl?0:}?K9\Z^cQ(oVCG FC$)I0CP[GP?+:KM-pk[\%:&n&y1\Q.BVheKC*DzA;HC)feSggNg*s17V-jD& lEBKaW8ރYRש4qt ~Xzu,T|nFOD* 8&uVyB!{UmbvTn6d1LvJlfIG6UN`17scЮtNj&~VcV[U͙^HP$\@1#TUq˶9 P6P$& y>EHF)&8*c׊85gS12=Jce_:E0Zr A^ƫtɫoY:)0(mm16?qxُQ\Ǽ BV 1KFkԦV Mօ՟FuIU5y fZÀwڏdyO'cx}%WF>o i_w\ w)'LUinqS%8V`#DP'd@2%~cW^dfPSXgiV\~L~2i 殕fS5axկ )MvWvX4 Q(n 0Ǧfe>^Ẇ?\g?L Tyo?5e8B/7(@'#E5|NWƲ.\jDv-cfĉ+"ipfΨr^ֿ5gܨiUǙRy1PU)lψ~j)0[RQ,̪0Ob<gƹLw1\lseu5syqmm\eC14 0GvGdo/8@@+H >¿h4KTIhGU;,,Sp1V* j-.V'3՞֛(BN1DE)t\ yMId#:x;jUvO|*,p °MCVTU+cR32hGQm G* C~h/~^&9w~gtv >W9O/(zX갽EMYŽ8V9 r6dߠNYY64MuX[^FT>y>A;6ouRAàz& kvvA/'gjJKwv /M ] P\*">NM1q:x n,tĺiYubv0P5̾&H.X2` WLlN>,'fT4EeYX#` FKW~M̓l8 < B}8^`v]W>Q5K 궽X-&*s?Yi;+.NoVS;|@K5\ˮɫ >< J_M {p[E&V+e89e*E?.W T 6܇xT~:Ⱦ&x\SVg7z.NCCVf! WX~A ,:f

O'3G'V/ب>mb\~ZGoH)j7x/l+ g֤)3Ay>uW#1ˬ9P7>mX5c P덌r*9j♗_n`^_ݠy8 7) `줖PP3_?F+Nq P!e;˞AwY Sp :쀬 4Pa&Y_Z2NRi*J]P` U33]JbKyT9bB 0+ws|"OPi0ކE0 /KOE%u9<+azxOi<`]%GbWeSQ5fӟxJǃƉG!ء4 lֽ`xMfje ,%{3dCT~clp WdnIۚ;_+0 (so\Cf}Ǭ-U xxg꨼Zey}<ݴP7cQ h>EPdzZ?:v7O.pL*b,r%yh , <G( 7P3hd%`pp"]ri1*|jԃAmvD tIhmZngG}ODG"R*mUW)쳴J`/dYenjn|?}6QWVm:EZGFlJ͵)~]wvnIkL6+f?jm*9ڰ IDAT㻣UOva&ͦj #07-קbo:| NTF? G4á|k)t3Lؕs9hE~d6OU$ZG\?] )>>W!ǚkUtˉv ӱ(?kq@gL.2*Hmk>U~\Q%| :YO`}Y,Nէtx!Crv` ,lN(}+ ,)0@?!?"Yw>NYADesU=ֻ-wǬPgs##8Wr36O=p$Ea:Wj\L@%Q mB*SPv Jx*RO^,bd7 t' }1tH4s6cPA& j.ͦip[Ky?Qmv} #xK~ >?0 9woGo 1+x_% iL0 tbMrXVTttpvb#/[uks,:YY{+~zQaZS-M?h QMj#Qj/܇wͮb9\,0y_8pHv >PAq)s:Qj_ia3Dfgĩ=VeZWb!Q^3MXXA Cs`SZ<<9_xnfqa4K؟Q/h9oO%'a1sܫ7V'y"tIG)pwe4)=9fh_mN_|K'5Mz;koj -?eY@fz1+]_u*?rp:8:'67H#;.ȶxvmrhՕ#E U=yJ5g18UMr*d kzkH_Vgifv낭]lŋ2hw,d+lh()[;ZClgeƉQT4t]z5CT ;#Y|`^a x&`?ڗw60,3TN`WB։g6Q a0J՛Ű9DckuT%z^⭣\44ڇC~Kէq8_v' jV|'20aE5}P%nxhm'` l~˽1z8/M,U\ر‘n`8/@_ES]g-<Ԏ#}ꪑ]&*[s;l֪C#| ;%Uuo0ƶ͉ ~l۶mgc 23}osi]Lz*a=Y`^C\VTSC]q;}d5@gW*sFFK;4,9O)D,-#oa9h E?UWtNk8c9:5GkU(:0bcV[.*Z[2I/+0I!= Kge%%NYkX=㊹,iQ]gRwr.(mRa}_Ks ǒp0ѬgxL1JsGZB% ׿$c['Z@Wq+~URFW9PebV֪:|*`\5X6$2/6~ݚZlm83g UOlh=qz$ RvY}AOcZ1>sP36;tzqgN+gL*nQr .gl\ǰS,~ ϸK n(s ߯ "UAk~v5.E5JkhJcBؠ_ !OK)_<7iTsCI? 'y %qmؚhkMk`+x1I?' LNJZ?k8O:3Ƚѷ7_İ ̾bTgPݓz4ig?Zق߃]c*}rN͑)?$H_*]@-LXn]$NFME@Xho&i\kDW/&r oR%CU_:#fx~/zF vZYtDG`3:GB?~KD_.nΓ9(\ğyHAdfX{X+B+<كp.[x(LZ94u2(_TJyp1΋&xA\a"<JtP\b Kh]ce`'Š?DC-;.җa-( Еqpѹ5QD@(A.8͕lpqx%, B5 T#p'~{?t ;c/`8S`Pف0Ex6Đ4OR\ڵ twF`;l1j-;>XT>>p a<dA5TW)!Y6x \*"p%q#|TsQ(GdW,|]r`iTReTv:RFژI5D8ßt^7[FҽD#x&t& zp^B"4Z2-*Kx tx\&cC8(neqvǩB\r4Q2X`8uFjf H71W棊=Tj#YLT7»Ǻ, $]]wע{n$J_+1WjH5 ]XxZ36}nG #읡זM͓rpѻwa(25qRq&-| 'Yr-=8HBo;nH}Zza5<}_#G{ae܅"M6V )iimµ )57H5\T<7][D oðϞf'餷~Ț=vpd(:ۨu3D.2? *͎O\N}2|g>W-71nZu3?04 9S_zBCYtS%AiXdq.b+1[QY.:\}v*+P04z.>~q0*/z[U_[E?\Brr]:w%a__{W NQaa8Y*mz@jA˦ D=Nsp5y.~p3C=نF)i>6_&@Zܴ_@7~ [GB8 pjx(I&7 I lp[Ļ|ox]ˡ#'+Tz=3X@)})\o$Ip*(gDX&QhMZhyq9 'jR!G9+n0UikCp` kq>`3z 6#XXBB@,WpHP)ų+ S<8#kC xF=Z٬t=\bZWfy򁩳&p,ٸ-Nq 'e'ITE.@b2z;M҅x%ڰ{?`;1=t ygWSWM'7&OXB\LR"ENsLөZ_V;Z,eev1ڼ/D\f U>Rgp᫣GEMx?vf3E9 ՑMmZz~Q;">6&&ڷ#Eq MvqXVX[@d2sz*x9j,Z#G- 08(m_V1W~JQEk9.wPW2[{כ_M\V]M28bO].l/UA3X"cWq2UI8QJ7`椊ܞۋج9+t P|?󪋾E?u=NS;q V:(ّI~)};DXv#nxDRd?JX'U] u96 MBj87Ss̏oDQ]K_8̮,kmwX3afOۿsg:ɩI;^P5u%YB<׼yD3a~n;^9D7Y^GWCAg>9<J|CN5Vg=?<N_E _>Ȁcd~~Y~djOW?UFB]iď 2VUAK  sa1q~r|wX*Ov|p~\,%">2BU5N:/ ߆嗰1rT팜<r覘A4)dTG>E|w(b5T7/V&*N.h*FxjOo\*c9Nt%|pbm^aUu~~ x}97PI ?9^O<k3 $7 uOʌ URƺ̻JM܅p7:ht"&c z)b:‹. q/)ݕcq8ea3N*u;f7gl.೰\f,jrPU"+RJH:e`5 aFyU@}rP 0?s6/neB|ƈ|to0|v5w^8q nx8v%3DQ|LYrpk9)LWbRղo;&C.x[F,v-XJa?p2!.!ٌ&j%l-xH+!U$Z9x3e+RUƧ,k]C+'<:Ml9Ug:P *ccƏ NSrb 7-ޘ.DIb]p~Fi 9vJY],ۼF5QuCׂ )fWE s:g'b\gmW)kr$2Amvz!4! @iq9Ǎvpw%Dݔ6:whϩ1\"J4%я(xFJ 9Nf|A_A]}TU}x J.ɿn+>BN匢 \;G*va$^e ~j7 Bs_0<[6w4) EoiHiw%+5liXY\d]2PucKN<]u͚S:= ]ҍ.WOCE_X6Rh/7kS2SDaYPC.{@C \Hqpm߀Ox^/xc`GxtZ~h4k4s qja@*01#ig'2j&gBMUUOz!69/Ff!K?7}\j'pcNrMp}0xxVfL+n_UUK|E;{;b'UQez5v7Ai ʸՂ}s+'4=T'a,Ze$ Y'#v3gl髯+yyqJqVZ^J P Z $U'9yA/Qbe', L_ xbOGo=Ѿ" A>O9 ,j>|z=q{ʰ|̾ReVggsЎ3M|`'sy7Kq7*4Eqh~>W 2"#)xzNh9[[u>.KTCs sWuu4\'|)#jP| pM7z]\ߍ0\pg&zku+ܜ!.a[2nl? ID//,l,• a}NT.ƃ8 Ýř x +'OK: +6( Z*1ɽ.a҄ĺrhMK]qY|jņ,Nu_yur 5>Gcq`1;u_#?hh ?t&C5G/MEL!gtw5cxSuykpSpbERLRR<nk(e'N\G0VX/_<)xs%39CX"XP$yi—ufEr 8 =0.)YkJW`s3Nĺ`a&VtB^]%)W&{(`8XJ2 }1} +T=pG(gbRhS4o!\˥fDx ݝ;L\Zf%0sT;.[:Wv] b Y.@HoUuR7aeD /%hC))|H?LZ 0_kXC:),5ݡ Ef;\ϵu&\8RFQ`).?&lgfNi>Y:{Ӟw<ݕr1Nb+5տ)9x8ܒoԓ|_.p;(-=ݬrhmÎx]Q\p]2RDyN) %3YO'n!,\Ltei/œqO+ Q.Li#eNq*"nS&{TvyT@X<]ǰs5fqW/Z@\h4-ǨY\'r v 1sjR߅#QbG(|lS'ʹ)QIv54-\;D> ]Cm@Yѧy3U>!fۥ) .KS5Ca1/<\rSg}R}1΋VOq.OKilDzH}[`Isr_Ni~qՀV%&oO3w_BdC1k0,]ٿ?*l.*['g QQηOi~ܼIL, y>bo_w1t^{:K;1NbWzSپL'kQ3B N4;\|j*_Uލ27Eê9mdtQ}u1{'cW~̷c8Au ?6/vPG':d̚]Ct\ar8X!>Gr!$ 2>*, ibqhB-~*?p:"}jf=Q?w U?|"A>L]\cU1&7Ѹh=C 8jpyDYݮs17 a\$>A $Cz Bs]㱎X|88ɪ%X͞Pm'\MkTn*w7LPrtEՏ@?ȥwy ߫ܺC0&PqfBN8,pupSMy-M b^q+Q70غ-I__:d.*DD^W6 5C/ OC7XoosюU[^l+9ǎuh=Նx{Oђ2Rs jNjh\vτeRۙf|4z~t'n9qBvP y qJ'7|?9%7Q*.C&y,Sey>$,^:T `[ԧC']?R&ob:rhT{͓=4Ce`$8:Evz%s0^Aw]㈫ ıa?U_/BhSUTc~bG /cўF2ilvdžS(7t:8.~q8|TЇpsBe7ʤP7m IDAT$L~_KUN_"򄧤7qCص8ls>B;8=_+i̬0/cLBQZ4\A_6'Y2-f]*w/{BZN!hP㊼GwpWt G|49NQ'. xBk'S(-UzDCueINYwҖeמdJ/!_{ˏ?_Yes:_:U H!7i ne~'L%@^((F'In9AyD=r])a8fSP=\Ty0J,f-SeUݾIpJE<Bc؅q&NY;&;g+΄vI/zDvAFZ t}Dasͫ!^H቎>A)z"ԛ.T.1X<7=:x*kRO|'p.s6& /\33թ%h9,ݸ^Cᴀ҉r8j0d]'] ^n=g7#`Й$[ܽKZ[n ǽCpMqy?'T\0ΫVs%FSWY);]EãtR)D&ɛF9kג^)[;9?u*tZ}Ds*)rmeh(42^Ǣ\r8>3U[5 >H3 kjۻ2/CAwA Z<]Z=^fnL$a='eo>N+) AKmzHYdTo'jA1"&I5`0Y]T)T7Uf6rn-Akm# ڬ~p+Lw fΙQ㑶jAΔ{ӺrXC/r)p!$3;Ȼȿ$#n~V_->I ɲ*FRHY9h U}8Bhv|!ɛpP$Jheoرr4~մ -NЃc.vDO޳2M>bޓ]Uw0 .#a9,hXV Ӌ~k6bX ÇST'!/*Rx6E`G9=D\688g`OWhs Ч2AUZO.oЅwZwkЏEQ^^%nk=HO|aajTANTbɘ!dn㮝;oE^b'0;aU S3˻v"E?GS5:ژ6 &-a0;OPOI+ՠzF-WZozEj*! aNpCs.60uTeEqF0CP3(38EmP8G=y=Id  8nj'7boly z)ʏ㎜n/.7 U]Z-JG8vR؂6U9G9d@1eC/5V-8b0M7nG4N@6\$[Gݘ{{>1]h cUuGE+&˲>(&+G{X^ݨkr_|TAdɐff46M^yVmup̤24 SU%uλy-9رѱ Sd^nRP}Eڌi].]59Q'prg?:x_!0MÍ[ď).[« Ѓ#Mr-5@<@ p[9*L5U8VP|g|UA@ʍ ^`^\G OV,hTE<%~U,Gd;e;MXSv.g 쁡N%a;H*ɱ0 P׺Dhׂ>xk>nQ?)+"a3|lȁKX JP 7ZDSqp7IX{l92|b}x-Wx,FbLDkz%u:kNP?y[QZ8BeM l&JaQ;[NVmG-W: y?Mv{*hO0qVOu/OUX `NmgRxHc 1meA;@# B?i^_+1@],h~^޲f^<.۝<=7a U<Ñ [D &S5g`O,@'vX襕'uUfc e=Wu3#*"sMsyFbhs4XvܤBxOT-s#:#|V`H}䙔n77br{]\˝DV,TԚI VDkp.e909pvru_U^ EK㲒2P}U\+uy; *`.M͎Z؄G9:C/:c,7f9.st=wY6ҜRKTEHEVJo\W΂sX 2p2`Z^-V84D-Jթ*D Voh61=M'Jת Ye_PgЛ=>k/Ž\eZO)ɾ걜#h()#! f`Xp 6GCBP*SKщaPQ\%Opb &wRfWxE$\P-"^D1Fq)0Pog\DMr@yxDwJ uD. %g4VRaq ba ))!vӲf=[ xWt{$eZ24UVks)?MZM{oܣz ㈊gܐ/S1^^1ʨ K`Uy4)?5\ QѲadzd:ASM7oz/GX@М!2(y_BsWd6s/XK|uNMpu(]RW`/SIRS돷ڙ8+[k,7E ɿa:΄ PV w^5Kք < C>gnD?_56+ƙ:[}<9Pju}}+p , wr,Ge:[;i*UQy癿9'=w\N]3sۊNzFD>N;zVm>EzvaZ 0v}:~fqXwhn?=B(~8!]h R4ڷĜ˽˭K*5__WRf%u˿_Q^W$jGh].GS'|s'}j+SR.EmE>ZTr9]~ZlLٔ*Ʌ z2 AU|53#7٪_ 4&B#ViƇKo kf6}Alo5}kF,tq'}@VTyR 8#ǹJ&=+/ZN jt}gX5[eK?] -Nv8alsz-EIef[خFcDGY5|0&JM Cͪ?]*K=!ut0 m[pMDԮV@]79W<K>aVM/\tDPɐUN?"SYBo$y |v pOc/Sǰ$ת$$NNf|ۃypXy]U:P`~q&b`n2fo^_Ns N[zy=䤓Lϸ|jxZy<_d5E>y&06T)4@^Xxk`9Ol5ƉsH+.360CZ|(/ߠ@A=A U{. Z{fb2atVqe4m}Dȡfb\ilKl~倫Y{H57+u14pΚxRȯW/ne2..ϣܗ+q%k7RV@6cV-"wcn<[8Icy^2.Ĺ odB=ᇨkXF΄|vjc,I&o{aq-F}TkQEWkiz/!8YB_wMZ  geJ[<_/xg[rԲ 2a)] ⓸ ?t^I+Y @ Z y5R=)Δ{|+ِM<%wI!܄PM-?[z-\?Ih*5!5 q!P&`3lzm#U ܩr@SZsŹ#^#s&Odawd8v/rXnVP2R;eUv =ikҐb~a^NE,2mLZ;~>)sU I)k:;K#Ü FWpͪdR(u~F=mCV\pAzm@qVIkL!p&"+ KZdk?{%w')8 ]A % 74$Hwy(lv,#9 \]uEq<~@ggҩ/}nBnj,)g3I' <0 cO`EG#^lîoB#$ NQV_Ȧj) j~i]5|GZo4[jޟ<|y6 12x]A=CŁYsCm🫛c>WK}Bͳu0\q{4*gɾ(O/?6JԿ˾8>^㴇 ⺰({ cUS'qO^oX,ZDs,q9>M`w@:,ٍU;Ӿ#T|#ù]U ṽ% IDATI"IM9.'K@uP5CajoV&IR\S= A[~aN98]jwx2teRXl62*}h?«ݡdPdLU咸,ZT9ΎM/ҐaKiu0.(c\f.*gؕ5r\mFUmX ! q ބ< *ﰋX-p<ãTUؐn;mKh5FCv썓CtM{xh t"vQ__= Ҡ Zp~(Ⱦ D:*,fP>Z KCȋ[Pp:AC⁰s1\Z7 ~Lb*:q~n0+HIPSa\J]Y:i[p?:%-?mqz##N%IDfPBE1ܝw8~ x _4A)@'>>Lc\eS⋱D >m1jؙ]G꬈\F;`.$!*ñ-/)TP#=4}zgo1 nI#w{{ÙUWs8 ƣVW_rZyZ-n<+d8"]JR_i!ql3p#]r"ƿ  f$kED_>(Fp .AlJUgq-*ťaN ~%1i2'|],vb|T9A*PT>A\?Gu / S[uCݝ~WܔE{hlTOa<f4U!_*m6~nӼjeW b*,qMM8FPyZl g7T]$ Z{p]ЎKr޼d!riG፪Xe_Bm>L>,xq.&ykSɹy! R` ZX Kr.XdΔFI8RUWQ` *Tk/77E8roUuX+'rOV@,k4V!yLqŹ,q0;pS|WLҼm CDYN;V-2dV$ŋe_^ب )y3#ekQ> T;΂DI.z`ҐC;iV:$G.} vc [xIM_8|߾$YЗ^s *L9?63rYRR9A?? w9[Z#\k26_,h`o} rjAuVBJ"E؉kxJZ 2#"4$Yon3SnL!Oݯ) i_2zF`7rzI`~m9VUY=Zl>?ךOKR*G'>#F-ۻ`m9ZN~f_}-4ҷh}E.jR-r^MV[aDGqFK?r(cvNO6cVG|iM";6X/H^Ѣ}j/:MW7jb?6U`kNPoyej&( CsUq0]k@)STZKCK:#B&ބX@+ɑ͊x=)m 絮F2lT/T'H'ޗ˨; #; }{J#μigp/[-eDSccr' h\j%07:ZYo2S.O8O 3]b678YSh BSe~X蝝'>2kE !Ebi!j#2ۉ晔U#`>/M q7k:bu㓘~ah-#,iޣ4GfٗsEZ~YĪ(NzcmSr΢; [x#&q3߭j0=Essb-ؚ ~rτR'|kbǸ }st/ R&ϐTdFȯQza(op7wW~Ls r4&#b 0L]a~qֽs( eԣG0.'D>JŚesWW6^fuh!>-#!7_~k,-<^h0 ^G_fV'Fl<^_yee|NWywR?&>^ 6G+WZABdQS Oԗ>FRMs-xC}3{lTpGMHGHHW44nH{oNgAC@#{B |9\|YO9%aO+zQ9~Fi8dV'm",K.b&'K'@"_D"ilfza}˸nFyʓvKg ,|9a'4ero|'ZNo㨚YٰD@s/\Uu`?4Xс!q.,)$ ڧ!;OTeTM4]_ҌaO8>r=5&`:`-0T=?˸x`5D>Rg n@ T9'h7>Vk>3{1#T5OVB'S#ťv[gp<|0G_8+B*pJn]ɛV(n0S=<~'.CM :qZ1EbpX 18\-Hk|j=Vn;T(/>DlPlO*3U*;@H ϡ}B5RgGp{C5JS\V}XIGOS}#\Զi̴pOw$Zx1H7mCviFavsUW;d_\%STg4R@4ڊ 0 QAOIr\j Rt|ٍj0ᘺǏy2`hOpEV3h?tN)8N솗O0nqz_J>~טJ/.\⭜) ݛGRfTFIF6QtZ0k%[a PWha!Qc<U;Opt:$,^KWnZeOyNCcZ/}CMuQ33~XR]㚸KXpu^7cBd\XE{}zVJQY8c6kNʗ op<~/MouKVg3 (ls,h]FR?k-NYZY}R%L"NȋCĉVi@ӵ-\fW ~̳ (gh*#!ZJtpucV?;8ⴾ~U) דjNfϘ6gFy6,hs `闍wN7yVdIx`64ger>{W8-ҝ ?'b-`N7pcCro ^'#X/PJs3K樌s񏼥2 ;Gu0VЃ [.eu t8k9q'22c#5y0j y>#f|G>u3q IM|&FͣD(R#QOF#+`&QpLO&^l.wiշLY aa 3`n K!Лhc"'0wClxs˽S|qޯXD%5^U1ؙ Q{Qʺ\ܴedxp8 oYi:eU_P.;N ~nGNb#QKTӫCةNhN'Z/q,qJ/t[h[(/7觵]L:4j#-Hqn/oBX".{ʯ 1]* @E(N7:σ|U{8ê6\x Й'G}}ˊƌ}'j PrINP_%bnjz'Z=3\FmҴm۶m۶m۶j۶k4N꽔Ce=LЊ^Ay, "U4`5VQ~Z_WTZ oe|*+y繿X;ӊWQ1k9(UEcab2G-wr 㮡ήסe"GW>5u$[Ey]c<ډ_[WbHhȉ[ɶ)}0sYCoW2::p ;nOjS{v5]0M4RIU+3"bc㛕jyyX]*x)ř yzRqV]׹#,[ԩnR=9DLYd6g?__Ƅ)]ӛM\XZf&V4݄cs(̑|LwSw^O6.V4D\{NՆjV[=19cYf|p:@}S$̜ۛ̎zWc-J]S1_.;2V. If>#bx3q m0G |79w0nRڔ#iv٩Bj`Mmgh4l=}ܱ}ИAMq&6-Pr^{͓"V/++ '$%_9Ax??=rx^XV JَgRfN B)yx .HEՆPmN׷?'(zbu ~G%t|40>bWl}bٕ‰^aP[¦,-=[y ^igx3R=0kSdq<RI,1_x?Bo(AU kG'yJrSYҪ>ZzQwƆ>| (TmՙT@b9)o0=lh|+އkfeW6O20 p~k,XSΑga/ĺ1M[h&DVՐ_a,~{3YҊнiE94=t}4 h}\eS)bYʡ\D't!@ 錓|nPV e2+J`rs vAl(GdlTکzbWz^bY:lC6AVХ8hڠk-z(>:c"Q;E ~c嬻kq@}NϬCB;)Лj|"Vi*j+d!k%}8"Fd IDATwz'2F44TH9j}"ۿ-g;2=taV1˰܂T-!tNH+>Ayl b0}D7bX<*HizCxj] [s2JX dlF 7Z1#LwV1AifqVNVX돓ҊSWRVM1z9EQj 'XSa, XQtA:x_!7Z ?q,u1-lѻ)|p./| p}Gb֏CO8C8IqdP0̑?Ft%XQ7wb΢5T0L:v{g0 A!+xZ ֯@.dr- .wGvǰA{@7ho@ D.J3244pOf}A?|mK雒>W09B$lt_\͜F'ܔhhAٹ1Oʐ-2f#x~{Z#i sƄvp$gOQІty_TQ.\Ip3<:*>ڞ!{Tƶz3;ms]a0u" 6Q Z OP9LGC=Yl!`vVT9Nm 6tlEnO{/9[['si [y##??U>~z'K\*aX3[B`mn8afHَ$0'5h.\PG3j/d3G)=tčzg&ŐZ4xk\>X !0o0o1W> 8 j(A?颌o)A NV-'UҗUMHՔd[5.XP<+ v;M1=pbY4QNңBU*QS-csRXѰ\;F 6?>I9VA(Apfل?M! ?B[яO+mlp}ST$rek*XOf|e( d5KG9QBXI?i[+=~y6{0̤ e{3vgiTFkauI]Jd*cKF+/| y_\ٌSE.Jy ɏ%VAmgfDhPYb66n:QW<ݖ}q)5^iGixfC]&g欶n/蕮,ɾbq &U4[w”]l#!VV1O}uZS`ǒUƭVf&='nXQW)lɃ 1xO(;΃CO̟wKӍ;>Ow1,PZ 8>RnL@aQ]YS87&{R\L1 (܄O!=g,k~iy,[wR$S'zk_mYQ}NtZ)M'B,0[^ڪkk>C9]jg?3y&XB{RxWz?0Lap\'J+9FUs#74mYi/Nr [v*E,&"ͤjSKvwz~jz:im/:A?ţiydom8HO>`5}ؗgR4#Fw=uȳ:l+WH뇙LK;=Xewb1 ;J3n~η 4H5CaxƛH tPe@'R܎n0^Q#a:* !GZjbN}Gһe[િ緧GHưYG?׌ȽV,3ߵWGxPwodrn0)zkzfZ,Ͳr Ld9K /Fҙ9_nf&웪fu\֛D/bnl:bCL?f4_6647`z -064Y>lVTMVޫa~CU)?-iŰh1W&s1G>)EVυ:Y{t8g`OR'??̿WmsU]IЍMm8Q ʨOj@8ew lq5b~sFc* y^=F@hczyE3=R܂q)9!4XScTDwp;ǕKlI d/7`n*7qn蹪;|[ty:#؊pʇ=X) 5_@̫Q]ՊS8ЈP^"xO$X nxa8vpJQ_%3[]Z@Ut:Km. #p >žN܍Yatm|q;UVJ"}cW?-ՇzQm,y_gV=U+l`w%ӁhJb 91:e9Q @;tj:I. <;nf5JSePB>lmИMJ^OTw,AYHp>kFx28 5:_"WAJOsxZ$>Ac~. 9ƚo|# 1֐ǴH}j*l1V[TװX뒩 ETK}zʃ0GT{n^b;Cg*y7KpK ӓeQ?FXehe1S% EQ[򧪫a^bk$-C1:C^V?x4m롦/gCȯ*a&T`} 5b&93N-뭽j^뮽$vq!S8϶ZTIqQ"P[A'ui/2px:}ؒPn}lkO`uUٲC^JyfuCp ?gsD"%!Idz}N٭x`GG[WW^і| blƑC" lj3ߣVz'$dn N3of;ηa+).xށBdɑ7%g~tmvoJi,gR֬J7~KV /DŇWQaaXܰM`F3f=⟡$e p +M@&j/xNhU=vJ/Ч}+{Hxɥm?'=W {+lg[r|G.~vE9c]Z189z/wһJG=?2|\XK Ӛ2wsΚ]bͶ}peqb =NqwƍO/0?WGԀUcUB]e9b{z tMsD Odmmucy1pj[/{ðCcP#EvFU,JNn* t-Nܼ_Hg8Jڍ#Y)L%f@ ˻BiǏ0l?{Z[,gDQL?ѧq^X Rv́( &+%dj (L(V007J!7^@#V VDTCKxRc)"U)hhRKWycs72 /2"K-a&Jbe+z"YT@t0ڣS; +q tfb.tGa<ݥw48]8X6g6 *fylQpִzW:) 5L\!fc;vKP%zzd, a\dYNkbgF9^߲\e-Ll=Iڨ ^g6 K =)lTz$ĩ4~xsJ 7aCV d7c*m؂gZ[, gƔ{FS8sf.Zm^~]Z[FWTyZ$v6S?Be.k kpWMu%2JΆvE]耈2+^g?tG% ˛R:}f>!XQ]>O:!x=3*Iqc?xi`AF~b[A̪NQIӜoq\0LJ]3 *VVkFׄ{7cjmbHvMx.L57|N?O._0ʟd3&'eK2ݿ^inY?V$WJi+97寧D =GGj6G:7&I}*ЀSg[L Z)nbj = g2Xo6N_D~Z- 0{OF3 OmTj@>ލYE~wq)xg˦4Kd0Keu=`e<5'8J;{7mHA cE`:;]Sʫںllq foGYEzQaImRv?@g%'ֈ<܈'r:vHpl06PLlJû * AUq$@~jb$LrP a:\.w\}b4M'xX

:se #/7EQ*L4 {ka\"PFTm fܪJkK,d7'+xڮ?XT.jʠ{B6H;{9~t%.OŊa@ SP8)ZBZj]4)yhAVH<7Jl tY?aSl!Za^k)nY5NH0 `MZPWDPgFB1m0Wн NЛlUS=ũKXJv|܍?q^3̡,<ֿEEy5(Uj1r6k .gX" ZvVRRd{ib1 'b>H_H?j]+`{CcCkJ꽺.ba?3ou#i??V>䇰+Vڦ/:@l s0t[7Jʊ`C'.Rt y-$JQԶjF0mR_ _<-N6]M`YnD?z`.S1;V'fe@a:@`|9]*E3h/flG.1x8ik1/VҜo|bIn&qΟ:ޞꚺ(/ j:աjU7r ,[~|ch:y>Nh>^Wh\[&aEO y\FxSX;U,cvǐf!Yë3sd|&c&R1xX&pݔ9 IDAT@ 9͙!2JEJ+mBۯ.l/c܌:BEޚC3oD9f[6:K=?D2Z!><-"b*h}e,e;fwbG1+4.?9Ϻ\X:p [S0g"CKX66j 0:ú T)GwǞP`s ;S`w|IWed[:"ʙA/z8_^SmfGP;ށ1dlk%|XtΪ@O\G"Cp wcX`[t H67#*=Jw]j&!>VrjM{P*4TlRH)Q X)]$۫C8QfM ~CZoi_^N3 a%&"-Iu ,+a;81 z<(HaKCg|K[{u̬(Gia:R@_Y!Y}* C &"= x )j_gpY*Y)0)vyqA55 Q:ϺA&GD9U NYA^A/`Vt)ZGs>X5!)<',nuR__bXU@+렐+Ju)H.&Sb oi^!;+K>sb5[ C^u2+߉9fVtGk?uJYX^R<&f8,]ceifԷ`a7sA&UjrjE5q9za;y- Ǒ"gg8'oa{Q/@6krfdW}=\fM.!x6_SN$$5(Qz(<C-+@IKVB>F"Ιh\(O+&wRd-Ӝ͒6zU0nj.pQ[liݑڙ=#iH.{TNˑPTgükcwi2*HgWn;1ƷUy޶8tR?r؏JR[=Uin)?e z3DvNa|fɴ*Ǭ2(FZo{|Uwϧ5|TU*偷UO~O^[do2H:U<-OYut@iUYBmldv?6$ɦ]*K^FoqrSe| ߫c)yq;>0e{~zVNIKR{P\)>OǛehf>k/d#E3c\H<<;l/ǘijz0wC5o #h獾"Hdok1kj0/- ;?hm f9sK+*H_TJ+h /,́vp=PX[qdu +Y]k / gl>X7INN[4;%tN)L+slx 0%B1N4 | 2kUma'r2/[` Ukn#jPi4iJ 邺bQW1:lkpZCV;Y*w(OykLKD1В ѱ#.Eso!u/8F{ , YMm8']FrxZv t4ˈ %jM!BsBj2Ԅ* <͐ˠ4eN=zN0cN5W;X˜(!;o2c:q:,8ǡi'Ŷ^塁Ћl_:RYĎ|",b9܂j<2|.mD;v]+Yba#eڪQ6Yw qtp.A2Pcj /?FMG!Rd0ge[i4*tg5:kL(nֳTX)7t9ҞQR d9[}s?oރ&xα$ʹSguZWRF;nF؆RtN|iTdi#sU7ۥ,˕@P706 FMqڴ^R:ZUg{xc~AX}ƶxfR:@!R }:LfAgȩ?C8݇GPz+`DntB:lʒUA:XbfW> cN]+NXpUK<#*o v B2j6jO&i8+ q>巖ouc^ñ_Ϫ;/ZSw8&ҳ.t))xR?s_p0ց̻Y`o;AކYA! /Cw<#H(jp vPt_nzˢ,nҫEO!xmnprfqNitGmѾEy+J6y%3,w:""_RhtO~Pt,%i.F&:j;ONcګ _%i;%}:Dl6/꩛@?1yTґW} VH#)"︔=[8X Z)1C1t, nCDk^1%gYE=шѩF_Hƽ✯.ȅ_|HO~KGz.Oɭ:Ɗ 4O%8deЉYjHꝺ'}hbq_⹱WR_6K(cT3h,0ԁX}zނIz81zTNh]J@c݆ (. .P>DBbrU?Uձ0d|i9 wF4@OcO[qֱpḀuPG`/H q>XOg,l l,rڏ7kBQ^_ϐw+mo!ݧYa92mgU)8$NMia`1#/eH-_,Qg5QCYa0_j O)l$V [ZAeE.v[Mu7!m6.{Za1_7~2κPBm,EwÞf1<$oߪ}( ]XG8 Yf \8 UF>Hՙ9V9DBnװx aEf]OU4w: q^ `OpzD+Vgk(I]8(]|O':?USxq|YQנ(Z z,c6/b݅'XIqE~ DGEGEڶW7(р dw M ˬp]`F|S:&BFG (UGG*zōO9R܊${lGyRuRndzu >M܈I=KnKkpO})Ukf5g#3?ՔqKZɔq:/MQ7N'y%'$ [w['žYӟ3ٝYNDښT2,)WV`<ʼnl6[9%tz}Ԟݒ<@xF]O<hv>֤v[mvmͶͶmlcj͙F}'ŵ q4PH蓲f3K?=ρKmǏq5mZeel#Dx!~ǣ)ntx~Q*;"--pz)U>I{C9'0H|H$zzzKGJd`-|*PV'pW)8I Gȧ89~m%Iv_˾kpH ku'ŠЋ5xx%j4| ` ƽQBq B%# eXG2YGs;fHOs=Va!½ *ƈepT[q#NBE,Nc0 sq8 c# ST Vd}HM8+5)ݰӍŴ N_X o6y}/e{Nج9[/r. xN, -xU⍎x=TaW^@ s`)6zt5 ;e+V52hџUGw007qj_A]&5Lt-]\kXV̔Cǚn]W<2Hsp; s;uwC8eŨ?qI!WIu !{wdTl)H-zZEfQsaWQY|s5E ,Vgj|^-TEvwZn=')1R6{{ :P}|\_@-I=%GTFK"mn<I98uA9ާl WM5K+:`^sxʸ>s5\HrV`Wk+L5R3픋) fdN@Yɩk3Fr䰢MpvWYq"92WoL'Ϥ4I)K4(e#z]q fi̛u},v`>Jn4T7MT 8%uN=_2.pI'ӝ-i wj#%QtMIs \"(y%ny\׽kY0󇌆sؓA ( ͤ xpVQpߛlI1މOܙ=WPͩs`JA)OotJ,p6Ndp [U)DeJ8& 0ԕH:3V5lFs>^OFPsL4@cyn8GsK9oh1q}cJvNA~;d{t{K oQ5 6x/k!|PCL$ 0PucT/K+,\.$dtCcoZokg?lmp)!+iYc1OKqV2R6Bw̍!z;Us9HtC(̀L}QS_(?)fި9/\2sƌR|fR^ xi˩3ՔIF>PAa ;PQni^STv%y0mqViKPa 'v]'wU߀D1Ļ,2ur=V݇B[M=x9)SBsaXKz/m!4 (iy|/Sk辘0z3ȉ9ɃCpJx;`#<-}䣱.u pHk٥KM8Oa2 /x{ř0Mm[RZ,LL|dgɲ=|CZJ7Tmhz}d0rJQsz$ԃTQ&J'[$J6?7IYqZkG =tvjqj ľnA5T. #Y@1ctQZd$Y<˫IT⊰8䲎pMzK4?0#aN"5Ma p nQ3<pz+dF:޸ ƟC+y!!LWY"ٴdDwl!`pJp گ.A X :,y8Aa5!Z^(BT3|Dϡ1N@S0jz[YA\Y֏ P`$ j-vtNybY&!úX2 QʏUzd~c#unIllU)+[>GB(rWCg{tU Hί>vuz$MŌXZ0sNcHC(9G3wb=iS}U9Uk_J%(e:NR2Q8u&ݘ Sڸ?ܧ` $I!cSᖬΪ4h,d+eV=i].γ>/8-(eJ~am'4yTvi RMvMo$)ץ-_B.YCIש ƕ*1_ya5>VxptAJ/9SpWy%n.Gq[ޫ:Aal=ѭL FkC" 5OX?]q:KVwy+5n1[t*'xwH{oF*8x& k}3:sRSvUX:+U8W$AYW(? )?R>y~%,3\a̅.*V:h÷ oP@0Δ=8;9?T6ސ aI~. ֺjalXN>ޜ"bCPIMLkcw9FKsG앛kz U<ُbߠHL($Ԗ,=KSZh(0VrBnT0Ρ%Ϩ |532GmlA,Nõ%%09c9C8Kg(!SJ 9䄮NW;{U2(UKswYٸ-֏%xxx 4N b*3ݗ^#9Z~O?O\'ZFdoąj ݃dXGeojUZ&N~Ԑ_*CF,[q^ }Qx.AY1vGN $2pɣ󛖱 a"> SɁ@tX婱ʩDk龌bp sXAyo8:Y |u5:8]uXfO>'~ cAj[t8lpZ, $$Pq¸IU2JMVW+, )N2|d̀(f$/" :Xj9;U7G䆍g\CT s#$o=_w%ۉXw4蠟sJ0J:νG0ۼE"á062 (]S\)ԈS-ŔeӇH}}ZKc5٬h($ OPssLIg$7 8 w3ޕNWwA>}]-t:W)v*L%ve|0O.!*Y\?\U Iéb'i*?Y+,GNMU etףfWc58$i};.L1vN'-]‡qAu>=*JYeӺꧺiU lEufl{&_Nz)⹛"ygSl{e-uIjX̒beŮ wdw!,&aD\iJ6 ^ERmP/q25v0<)Rj$H8#t}#\JLԃ+SkPK8Y@/b$O|{܁ )I)W%ߟ'!C󗫈}QYLi#w\ 43HS+$pH\:9/mt92#Pbo8bo7 COi奺݄/C~gKUȤԪ8BvRwj ;OeN+j2-=Pi=Cvws zJèn0뫧Iau܆pr}FUg:AꭑFS?hz0`5 z`EZ![T `ǐ\mpe¬pʘ]붺Z|+ϜwrGMZHC0FCs$ DkOs3 !la7ɯ+2K*ypZW'z 4#0Jx..{}fbpQMgcB2Jz'0@ 8$VYcy8gN-Taj#K1`ף:d{;˜SrJ2p$P=TG!~Aske`tV83Hy477:mtípLI`c<~gv ڨ!Bd[kX::xrDB.AC&mT|ztj{¾g;>홙8XeLYe[<\P㜙/84(+xW* nS9nv74 b0_Zs$:YgW՝< _ y9Qn&x#'ɁyT )/ $F Σhڮ:2{[%I!05^#0_Z3C2'SGD["y-̴O*c95E )}ql,d(yϻՊ/؃d9Quc-i}W .yd8pc"@z.?qHzH=EOg5 s䅥F%M tz78`4 O f75 ?}ޙ~\%Bc)IUೌ|rXRu@.mv3t, CZq5.x#{0u{ܦ5>I AI` * j*f|ƭ2r>_G32$c ?q&#޻L]BAykv2p?\ AC͘; J j 7<28 ,礢}PoCgLO͝?py; ֙DCikO_g%iG!^#ZkN1:BkDXjYt礯,Ԝ(, LS8ۥN} '\\pO甮 udP UTxSJ9TC48W=Y8)[+ |5?x@F9_`$~pտ]>]*B`[]nx,ϗeӗ@ <|^ROm G;=<0ES'GHFˬT_yQFeSUXݐIͭ af,P=] EX/bJ ziU8bٞĜCLٚAqafhDx~*Sˊ0cMYF!43Y=,M]ܣBq(5*Gqo oA|'^Wt]|bWBVkq3tBIJa!qV U|2J.#O6AmKGtOR9?;/7GUOE uNBWmWNfiÒB=㳥[^/W2iǯ^qQ^ m tgMi{ <p@ɩ69*)x5-y[n:):Ҿ!1?:;><*|WvXmW\6͆ZJg=;%M!/iHY8vB2:[ ޕZKp?n%85(6_*^8.mo夳< yLp xU"?$u^P1y@KHz 1dtb`r"Nt ^rd^k_)tfJ!Yg4卐ڌT J%N띢.`y.b?U\)̀لKFaIpΆAW㱜I _@=K@lت:i*qN~:e: dL ہvm:g7vB0DJr}F`~Fw]"!%*Zg8(3nh. dAPO<k, C7p#=$OLt8%.#y =pT)Ga1>VC|(`Cpl0^5mk([JJהN\~K 7Va}ϠvV ]>*t7SN P g46_t;s [,wK& G¥t/lV zf5k;vyd\TqxuYg Ϥ&/fnY@K0c%PuKb$ZwrIX;J?RBGI\*,!]9Q Rr,iDL*$a!G$#D.460vc$ſ`SyN+dY\HNx tC4|He$Bg&>m9?oZ򞷨 X\ݐ8J~s 6eı,> ?/%d5DiC{2f`fL' (ZFNJHK2RP HjNE'K/h}܊5YBalWqQ ԟ!܎zN(z&$bsvr 'nn.?E6=nX~0UiTPy.KHy?jQL-u=h qFFNaWqz>%Q[Sy*{ ;/crG 1Mv}.o(bҭ 4K??yx/'Bm CאF'}sꂙxUh.Չ*=7bA]~@3r[L+Wބ{q|xj˸%OmCdbhXǡz9 zԄy8KAe ; fk,ArZ0[Oک! Q<<Ƿep_bc|SNS]~%`nk0_uk3I8±;.u~t=?*u$pzbevN{%(p1WwiޔNd-)}Bf>n?9?Umjo0S=,AAz[>àҪNR) B'q:,%0'bf|;(*`fQ-&cKDJ4䅍!C/`(N`P}"g 綧op!=< L{:)vhP!Of gA{*c0,)uUlql p0YxfLm:2J)-OS*)p5]9)7\M1Fg.:o䚽!4K]ܗ\({o{9U}~H IDATjh625trEt"CX)c<$N9?3>G|s% |"Vpc#Vw]hnZcUD&+94xwhH%RY8#Ux L2 סsI#pJ;s 7F<߆' r[ZGA o+dwſ/IJWKݠp3} Dq^/9w81Toz['N\wf RʋvW'CpL2ʬ`jG--KY0 I2JnE%W\;tjr‰8Zr y958^c ;lOv+Rw%N 8a l18DwM)788:x P/,+dqc߹U6TJ0)%9DMIBc)| ۤ"@?he`v0 (؄)H_/-QĢXY-`;igmo`>v`3MvkT>#XJaY-Wh%`Kb?|6+E? : \̎)!m *ba#dդcz-G9;ӕ*}0̓%я)6u]JH ́j.3#Tjq(+Z^fQw QEsY;")4P@N溿RҀsLnKK EQt؍㠤P55[fO[-e!=V K5 Oa~lcIrh1pMº| 78ş6>'q&M)aS?S.f5}+KPa VӃ_ۘAX8)fN}Ĺk ܻ$VS }ܝRܥPݽO;/ QKwPנyzbdsa^K|A *:_z;06wbxJ1VX#];ZG AA >r2FЙ|X9e1;A%o|D,>T_U :C^$a7܆}]'ns I vEn}!7fY #Uqj<'S=̣Kz =!A4ATb:fL{Uԇ\Js)p $A!q;L%f7r::z,z@ J2@ndY ;Q@m}X[a"j1֣+^tabWE ]#YԄHi -H#.Gp]n,7;YOU[)m]·0vm>Ti0=lÙ9GfƸpΣIMq\6?egHЗ]1^1[]:uS1W|3VNz2hJW\6 }®iѹ,[{4uϝVsNW2=Qo znosT&~J?<q/ܺ=X;f58HL% ;^̓=z<,TURuu`Zҥ_#i\Mh[:bPpCO=9'(i`/,S26kAr"GP S!וeUvhk=/ɫ$Պʷ⒘f qu fOG=WZ~}܀@Lp *U(s| r-kUm8钬DŽ,&z&GG5>H~&8 \2W >b^<Q-Hh,#̧[PsB8AT g6\ VYPڥ6zu۪E1\]ݱ  mC̢l.lu(U41 "AdrҤH1p̢gj7R$ށrm9j`gn ;z*mhϨwީg&bAΒ0V|ԗAO1TRD*Vu+gT )dh )\&or0^z}":ȻaFd;}18+nwt+qh 9D][۽߶GjXy ob+|*tL4Gՠ4UӸ:kk9lږeH܃\]0 0܂ EM7 ;TC׶H(V]WEh;Qh`mL7;cGn$0n.)m̡0A8Ƣ4xh!nD#uIݞ=|- c"QV6a]Dɼ = c2}܌ Aɂ8Y;N%q|=t!;;b>Y X.@Iz(P{x)O[ goĝPOR`q{ 艘+4CТ,-r9PԞuǫF!g}1Ĺ>~Xa:WƟkXYT9;{iXegbpa=fV!kPRP4IhǛɎ-as  +k Ɠ%~&!lccl>>d gU'3b3EY\ W]5f3lo2ĝ>@wV H?!#c%Z_TPAP]閴S-ۧ<+6K~8=-OZ2W6k2}|=y J9/!6fL73 y683E9Hnj6E1X+FK95#9uAwLߔƤĦ'x {~h:H5dYnۭ3A/Eu r\߽;hPN;ܔojWOzUuM[ʞVas(Rh:C[ %?g& O-6*U/M{T{Z+3s|F=MFt`5 07p \xôew,rȻjB|WuoRbEC0F4\O/iHZ6\rjhuVo. 9[o l,g`!FX>*ZU6@ yTIJxr ɍxl୴ؘP#(qЂJ̋{PU{* Ƿhh4nt~i?4@U X\\1Tƾc|"UCH-yY 65x .@cyȋ/p;xSX<v@4̶qYFQtUKA G8JA[~w>ae[?Ogq:Vj0 9Dґ\ UEw9WzV7;RЃVZM:6P6:3'N؅Cf?4PuMi(ed&ͥ:FsS]Ym3Su4T{F{p¢*ECA3He"\J*+&1OIU0jsn % XodX = s o40ʐQi8TlxBdς*O`x/=Xb0^;?BsCeɰ `wptHՓ>D 5G a2gxQhz`;7مq <}.NC Tb_ P>K v=w2#n@:6.@K)Fφ^z^fG| RU"Θ(Kw :da%Y3'`WP~k0{V.g[ r|)kEڭ) }^;y'Z )39κۺ`t ݖ#ab/`]]֕Tݟ2%-ow1>.k6EҬCt9́3auh霨YZiu{6*HϞ&稹F7<"7l(WNׇA/URM7{F号~$GƻCtb~ `pϑy)l6.@( .:4p R TV俈 9Wy aЛB)]H^r'4=ݸFHAC:Ku`?M3΍p'Q1NN>`Be *xBS;؉-6O[N!A*9uAɔr^橈EMßUvtT3_-~׶rg,EKKޯ ,u.d0Bޭ-QP.Y|jXUoQ!\.jR a9Ԛ guP۪F)T/qUNqXxR*uA8 B/~`g@6Nwm|,~Kh5&(%+n5O/~%YC$2͡5,?:Q_+B hKu \'8= _(ҿ .? to+̃]ټ՞oW2zx.G"A^*T3ڣq C.4P?irA>8*ZNO*̧KVDb)KRi(F0/hf6!/Ƽ:\4ЩT Ei>u~u/1pQkz30XVp+qY=T'"L!'T+Vup Uq( bN:*PuCEXtA]ߨ%I8sD_}JxTKȣcm06XO!:(8|$~@W(Yu185FRXc]q^xuxSgUy7 mPwx<]m\j.üRTVu,2Cn(3uHe#*`x_[jDpqRXl\QWޒ 2a|xH9Kꤾ.E`4 Vj`Ł)lմFm =יVVm5rzT{߇@e;Uꐤ?wy8H .Yu7fyvz|A]$ $F6]{62> k(O7v%W d~ׇ S =O|]$؞6u{0=8FgGfyY$(=螸)rf eAc2!uvIVٳ;wXaַjX9dZ'"}_`X+im‘R'f깴.dfwpu~rXe_<:$B\rC@ms{1b/g‹x x[GRĻRcS_r V@̃SK$ܣ ݩ%oc;M Fh#<+j*a-͹|xz7(LGWz#uO`q/΂u};CVp8 ( ^Ipy+ j Wţ0"  w\(DU 0 :7^S^+qɫèC^ z*wnAQbI/b9ݺPOlo2΁8 PApy{¿؈V脳p |Baw"Nah]Bf}T`<u#:ON t‹!cq8zGWϸ[rTXNҰDgR^[XA( xcnu)o2 &o>shq&EIXqT p; IDAT1V 3/=*OW8GB%,|dl8`$\#MXS)R w Eqp|f+'oAR(-$\`ȉFhe(ps5kro _wЇzƉlPK[B(ۢ89<r )7l! ں6*A]3],PCOé;c|2GZqn5:&*"rx΃,ew7X[ƛ݇Ԅ{P8$nUvF,;5* =|e\(% ̳VZ |&fRu#hHC9}vmv8#c6_7a==Dd#cG^hMRBw黾s< noFϝ8ȣV9߬GzIWf7;@O,Yt;0UP G{sYB8 43kD4/[?%vf_j=cQj[*_@?GE;H:DZ7TU|G#W/"-KZ<Ǯۡ":s91Ɏ\%J(OZsdMO5_0of u7V^^ n>G v]e'E%=+:n_~t"mBʕ䗺ͯJH:(h7C#?s6FSJiEiV?P{:xEwPޜLUJ?µCޅ2n.qmiDn}zrj*v. Yρ[iE6*@BX`OsgSex`70!S;ְJPz͛Ή EQbEp/沌\"Qh ܪZ85 #xQ2VsvuѸoOOU}ΫJPc1Un9jh]EI΢K0xU<33aOsKд..if̖e/}jajz0TB<#?tWkY{k_Am_ggo<ڕ8U2W]w&1;_Emp&c﬛ >42ߺhoϝ0>s I]'aR}$Iȗok~}#Gݔ"t.$`5ꝾzY3*'gUTMQMF__6FXB,A9y(S@P7d/)>;> F8 GkI1ZD&a+ 1[7R1֨vb]¾M 5ۋ؟Y"ɺνMEXaei Tҙ4¼ӽɱܸ+Sᆵ4n6{?ܶۡ#LЉdCf~iEj~#thX6N(FFta:9'̍mdrw8}3.d!IK_vI.9[^w a)*B1,__!!feV9(D: u[U>scpg쳪x(xP;"b)E*Ę"ݺ-Uu=lj=rxSL/z'eTެ8N\T!|2ڥu]$.ceLa^#XF|&[ԁ,}T@fV!\l\)Mg|X;cU^-#Xh\ԭ1`Ilk?Qkqvg͝j;W. ͉ ކf .!gP]ƙ]7,oPW3PJ2 ^"^Lx@(\Y+ewb?ĵi m:=d})j( ?~+(MI?'CLp} ko?wBv)G7׳TEIO|mUaaL9-cCóؿ)aA/~R猯WF;.8$rjFgڐb(@{ ?fK2jBiuO_]-acާ@ M0z!vg窼E*L_#\Cu6^ UkF5]=\4!/3Rzx&y(hD>r^sA yAEL3;jCMdcpr:pZPZgmc) 2; X(rmm8#voJ+bT,4#6;#cԅv " /.W1;ijB^WV\n4w6WCUya,XLg/Yv+>Ɓ0`V!ܽRkiTA}DˉDMx8LֶQHzEe랊^'pC0h$_8X_ {ΎizD~`FG[dfYEPqAP~`fp^r>B\jpq5P-SL(½Xdr ެWì\YWU|ogCf#';G8bNj"Kmt5JSkG&:JkrCSl4^ *c=߾k:b7NJF>s-P 4߅>X-HPak4EksԴDܮsTFfVy:t)/(#9..\~'`j˱vjp5qWp >3'|Og"9#]X;/V'Mou6n9/j|!Ol4_r)LY3-^-u mC?m-Qgu8hjԦW j.cDC_;314Y 莘'L]dѲ2٭>'2|; .)/g!AKm[ y{t8-KVՐJ+$4H|c\3*(g9c1F=9?#/}lg ~7N Y-}'|*JV#R}%#{-cg9iRdpt ⡛]]J;RS}f} ~>`q7t j;n[o7򉞐zjҏEd4ύDx9o@_)m?`Ja;܇A"#uÌ3beffu+uc4;2ٍEwudtz~&iC| !qI,W,J9Ɂ%BԆU*O5݅*", mFi-s.c=%4J=w F) * knE;Ptmu{ Ge-@V83~sx#xd4V n 8NGX8@4?X.PbWE~m99 @B|#`* FP'm|*&\(j \ $fTJ8Pj/P*/Tí XU8tky l]R1]yk*%zV}o=!I^t]-v"zVIT<-<:^t m qj,Y DW6Bo*+|FE`ނTӹvp<%N=x+u(w[ؑ. nA)h_i1sR0x5w3\~ JSy?浜B;TQ“) "b+C$~LT(`mcHwo [<> BaSCZG c ;C-PڵRU6̒T<t24=$ZhT44Y1wȹnsg,n̑XYp{8E} fP_WJaG׌6:?3k|`*:]X_[(,,hN;xuDBH仾+EP GEFcbϨBǨg.~6:@M͓;iN;Z%{\(pn rH{ZΔA((8E*!bU7244\fwNZg9] (V5 ]'uEw9I2I2Ó1hvKGu!l$!(5;'^q^LoxP7SƺovSQݮ͟Ü>f[;DB89}`n xqs'I.q:<10`6&)J K. 6 k`g!.6'su^m;=֡a܅͸.䬜Kx?bU̵5,y k. wi.g)?SDtj˭-4tX5L (EdO\Mp CE6h-򊱼 z D~s_M knm9%^ )\+g4™#*T0p&<[h聙KNjأ[`2'jA> a/Vhl/IU=P{RuzG,wLӰT'$xcqFCu4xgڸZb˶E'WNЖa> 0~մn+l{_8@c= nW!^e:bUw1^ijM[p";E ?VR5!G@_U0:l#N:9Dw930"T@\emTcQ9y* oDM i3F,?NZ_>tcWab8VL$a#<-<ŦvŖ fžMz _8jnhaWTM6= V0k=ފA" ^3) I[VZ c?Ӄwkp1+M8$zQQe3CU%Y7xq^*z7] myXsͩp¾2c;~>>gHC;"+qQf|2p+v c:nQ euc@ׇ~S-TS==z^2>pBV:/cdN>:^ps-%J\ j tw\7ZxID)iO{ZgD#.D+t[hD ̣l.Р{OMz5&y6Q֛2bMEF߲_W8'CA# w6Z)L2NS~I]/#f1o0D~s]'BK;=5(pۘ,|0 AaLpP\#a8r ;%LܑwOLwLi 4U@%|2Y9NS>Dcl=PTi5fP饍"GʴVp{imqNLyg{گK{ ueb<[iks|%9͠N3] '4Kr%YC62c}j GmYSS(>/4 -V l 7t>R5RHV J-3>^J0dzf~7^\ ;ܼrSW+?䪉ڈ @=<U`;<QPFN_l3RfIy*%h;*~2lpL)pgߑ{j,pD:N.}3҂Bt >JSp,R &@c*>5 Z!gdR3\C}TGVTa+@K_y0̒70.aI e2\opAE gh8y ,I՗P]V}i<V ͉JNy(rs{ԔXn >4+_e X3,N aYN;gq\a6 TQ¤K&[}(TVdvGyjm5$-]܍VהF&r .U8Vƴ:wy GJ@[Ta?I Ekx9*~N7q?%?J5o3?/s\Wԍ=J-(%ƽ;4S~kN+,q7?\" Ku+kY%kY/mݕ=[S8@: 2 -*$Lk55M&$.̌MBÝ^lzoSi/ VR.{/{RpH:>p;F'f ܴ3SilPwWm (h>` )=x_Syu{5'i Z١z=#jioѭeC3y<巾b&70u詠cK@Ľ0iw iRʹn= -#`rq+ h#W|gi_-qZ{;1P>H#jg{YݖwSk1hRKfK3͔\0eq[RKX#xo^(jbe3I]6EM9k^sY)q)`%`"e\vj5\N<콕sK5ױtT.GtX8OUtĮ`@2J8Tξ( lۤ8d|<ݾꇫGْ_iz])9 2>H)dՀB9N+1Bjr5RI dA^~`Q8++,\BM܄f1)7,H㙬 j/14H,SW~ -Ұ?ɔnBGWpT ?0,՚Skա4GN]Yd{+B|N:Jb܋&HǖՐMᵦ<ڴ*(ѕ V7e3Tv 0H/.y\]NZb3'mOej.d]A-)_alP _4ܭBR Ʌ v'p`c8=&f$2 A*^b{Z_M|Gi(DM*V M3K0wRQ`X U=SLXyr:mj ũTYLVj(k;qJ W2;XHToN9qO]v:.=w~8ntAs{; ȖPz)Cp|Cby,麮S$H}T!+awZM4⤐nIYOG N*Z`wM\I q&܆[3 ,lқhXSߜPrS紪7uղ8$[ՔTV1LF9IuArAn)*B )~ހxEh' Ʈdj'ͿV#x۸)T) ̣&BZE/8x1I1: na|(JBE~~X#.o P{)r4Pg;"idf;'I&U j(gqRe1NAa(wଖ2kU[+Pʽ7>e'rb؀7!Aƍ,2iEl6ӄp94oA. J2ZT F3cZ'vY5r +Θ%l;a! E\nB| G]k OS"R'ez`1)rJ[~euϔ'qIⓘfcb@7#.Sg%y$`z2SrUO0-#.KHP.3%Yd$ΰH̴ɢWf[! L ie)bKmy {ud; |AV|1r- C S9Eo\TGe^b?~Bi ̡ SS}ij3,0U1jDtHXrvB+']8\B܁RSJf@?Ey#_bR ]an=q 3'hšL$13(~a^3fdd驽.tgP숃3O~F(eK"ۺ&RBp>.J),0br1 &c_(G%Aj ܣ[ͭe*EDف3|pYJ/}63Bc%T9*Dݼ_C0JV[r-|JJ79C3;K:Rv@-2t*k g3_**'ɉ_?]5DU)`zT_ŚX6YkI jj9F:[i!!윖=z! iOsr,ݰA&؆ qJ9L*ͦ3=0;}w  < ]H+d>8] /Gٝ% /q I⬓badM6 bzǃķpYkPlP1,w[~'8 M3%l<ݵP @%!cxjhvp ITHf5⇴Nx|¹ KXZtLy6Yw@sI Rk՗c<ݙ\*u2:m}V☐,2;ƵWu/5zs5CVhiO;iy TE5UBgW r2RA5Q "@*Mb4P#[,8^γ/JzNjt!zNN_laHيq_VrLLpyWM<;'_ꫩP=;TK+j?~y.ckR={u'Yh[qv Ɏg]B{^zyT0PNUi*aݤ: jeVr!p*><*oN+"sP,|eAا^_ܓ?o!S['7E`ske =aWe 6Q`+q6 ՃwK` 7v?'3/g9QbI׬)^^MV=({綫(فNwg?Xt =V?}7Y~UgєB`d usg(d椔Ҭ\_3XL`>֐kr}nƇ`N1JtT3&\Sw{`l<\HL7ʔ?vSYF`"FKC3FA ܑg_0*뭸 oX= xƌa:9SˬCh/;Q_PVx JsHe(_TXqLRSiok=vTh/D.XiN(Kx!љpf'E%c3hJ?A4$Xuj^8!jI4W1,YvVv44'!% <? Uנ;|S5('I#$+ޔM=pIΓL8FaK,,=xVZ"I&d*{!>8 _7STVPY#Kg +^ͥ s( %C+ m$&%=NG'鍿"a7,{u;]¹0ᚘR&s߶Ә/za:kJ k,;;667e( ʄ*w%`o&J@uL+CZhƫvTao7K4QukS@򲏛H zx&ǘ ?,,=p`v(('dt9%;] MJ!vaԀRjqqEYě=:=$U@/6: 5| @ŶT:@C$% F/dItNCp>dN8DS SBQRE0OHh\э&Ky%O5T;஛:xoǬP8GlhK)5A:8Nd0N8EVx&:m{#gªY6;ktWZZqaqF~<,JDepb*aT{遁3sgfUU ea-΀WCd4QHP p?)yk^M9)/a4WaXRM4F^@c iY ;WOD܆1\DfA.hf2oA(dfMaMٮO_P]j-9hȧ B* ;Š3u Ui(X{N~C*T@%bVf^\Ě!xiq|x c| w9a 9O [-x Q?XIvA*>"u0HFS0zLzJ}b_p:I3^&dUjz;6cއHUѵv濼Tt- ֫deK0.DyHt_Z¥RI߾aUdAdzѥA\u=4Gn4.o7HX4s8+1%u^IUii,p|yMShَ#HU+Hn4XIfF*jT͐TwԆjpsPwüU1|0bV[-&ýKׄBX2٧GH n7C.5]$O4b9(hbKZ )Q2Uu;۳ٷ R1q!]~u# CekPq>$LD@%nH`{kY%wc"]Ȕ3P0t8p^2-SDupy#cXF<(HI(c"T)G/e ͥ |tZ sQTdHii`u<+K2iN1 Ga8\IR\n-aikUk{5,9$Ur0A`Z|Cg) L5` )>=Hw"L=eu_4ס%*7d9mAeR=ꪐƄn`b.L;!9b&P\ǗlW5_"3/j* +Hg էTWߩ.pB6HQAN+Q:#̧IrONa|2Uw)AOq*f1'B 90a K$;σ9 T {,Yt4ajvV^]\e CK*f* d PZh IDATJ W=lkot봢4a+1' H ʃa/jW#.b慳:[f%mNGT;sjXNRieq eJ\U]h4qAji/ӝMv UOボרpF'2E3HCi-NNN9YXAUʩى2H$[X(#0=%) p!kiFLvIi**OyrwSDX FStҁHk'F~)1#~KB jѡdqSة*6ذ 1:gAqjqlr)GX¿ɚZK){in70X6}J[lWslx AG~h*q5]^ӵ㞔jiPqe VP;'#LajUUKeV:g}S9~ Y'pFg`Ox,Hئm8!UAlg1o#D oC;9aV]ؤaaOR,7c*f/A֮<ƏxQ}/OB{53 =Yl|!)irЌ@¿_Uڞx/ei+{Zz4̅<ü5y1drsMHw/#҄9Q3xxLP.)TrbI&#ԧ>k5h8spK=X_xTMFz9V#T $n n,˹+>wuZDh&HչJ B88l\ $tl) p?{6w3LpE{zc4+TK~sJTWBWޓ[Hi 񬑑ND/M. LEX {UHN8]v}fW "al* !/Z ua}W qohb oc雓>4o}:xPOR@pkXˡ=LgK75 5G,/'FII>w0=/QVQwz{GEpצ |?2u@Jr5\+}.n06MwJ]vNTc 7cG 2PKd* `-]x&^RMA S]a%p-0 q jnPiF2F)d-|>8yh$A=k2> ; 7;V"p},w`,ϙ!+7%vX0XH=$ȅ-8r,apħCmr.H%٤R &IjYgzQ0j^T Sc1HU tS5XNCdrIR\_}uI7}W(k3̹t ܊>l69 R۠=XF ŋ _TN G ]@ ),RzI | DCJX!YX V893쇣rg쥣3{8*K1I\prrc3|.s|AxL4f62*Q4:, |4':+"621]/=dI'N7a%mzi KĕR*&ҫMlSg:%5, ̑5ҝ;ƩcE٧SKi%/:$/^NjX)<o᪬1źjUk<_E8CFC0D`:HG`pV:ùϯ#C@C.2i9mCn:t ,t&ajm *R]Ua4 pT[܍'e.(X/A8bAT-=CWwTpk>r O8%K1{f'co=Mn$?t UXEqz//J7;72xझurQy.ez鼞iOY z5eT]VPQ옝^8ted<)85L}mϔN#>k&sl6դna2JrH̥sf!Luw]%I5=%Md( :>{'LIA$ʋ{)`2O1֙o@nLMe2p D YlsΫd.E9'fΟ׵OY4N#L@-og{7MXe;ʚ9gg:g(jSwv}vEVsBT\0f劳T h wh)0X Mc,93VǮ،n.O.rW*TC5O]jűW 3l$<RYZ"/ $X?`9 1ڸ60F$ i/Pma<*,t'+LK\U)TK̂z 9FD$L脿Mi t؍;pXꈭa*K7͐xp ga'C1 ~4E}A8AgOd5`)5|\$5 0QHH+%?>ʔHHM 5NjG1Δʢ^6ѰF!bZqĮ?V5Sj3bF|w  RIh^,"0 ǵ?ߕn7c.U椎:BHw"0@C\@!d=w1xF Rt^'F=lK5x4 uaM@xb=5kLrYs?x3pS1V6 jֶ?Hhӡ H%}5 e/i'{3lAcPdɎ׫Aj9t!c E$#flNZQN{umZD^s$_ 4bF)a'ƍ9騫j&:S`>f:,$+ ^G0Mf"mtK./%YIG%d6 o0c1xeF6ސcl {ćB 4jk|At ^ NKd,<@ޠC(9! Ʉźxzt< hӠ@_y]gPG~8*X{k5]rs.ԁ*Cm1AuC<+u:t2V ;=Ul~EfCf̍7*a|@z 7UŢV~uqo4q5wG@3Ϸ/7sܣfI)aH?环lL$C?uJ=vH/$%"3T )+Qq"n/r@Ћ"w؟ח~>)*|rHb! Igq~6f wd-ktnB&]G[-u߹֩oˮ-x;Vf"n~1jU*Q4i]TE_UE bg/%QVS,)i9 wì?˟)@*A*}ɼ3Ϥz_뿺\R^+XAvmt#T3Y2CaR@m qק%Ng2\7a7Ԃ0QCyCM3B[DG(xcIe ԗ7p'9YĪ+xC6 :xniw_$Th2{3۩i؏9tn]@Vi/d 8KLw'.0xj6t.>g>tTZzoG_}dW38SR_o :K.%0[܁W H4 Ӛ򊃴aMh(/&tFx\+y",>VaCHkx|U ܠTKA~$Ns[F( ;a_^;t~X8Kr5uUrE=Gm,(ѼD6}:w\??85d I;2 ؈]8l( c_(L)%ܕj\wjQK/+$r_R (umZ-u4͒NIyRѪbv hBLu6lTuQSeYݰ.ߒVJVءts'\ ulo¹-Ԙ[#󱃩K0APpݣh)} TX"XX ВcS!7q _P0*WP5=:`,0 OR,% =4HPntiuX)qJrF N =~RK`.H$4MQ'l,­\QH/0NFقA|qsf8<=ż171!ha;$7U)d!<4&9g_4vN&]y/ՠKA4 bflQ*5Gߝ)=X/ܟ6әä`H;9 aXLf[C›2js(pVy&S4l49I)\{ت$VSΊ[o>$IrR9M; L S;"11e\F|<%4cTW+ S/}aYf󙮪MT0nY͑^2蠵uz}e)Gm >o{;PCN8|1nq2qj95! dJ&y:VqW=-@ Ԧro2熹OvP?Z!-Vh7J61k4r xx6Nn;3 Y->kRc;xy gnZ^{SiGqV:LT̀{0Q3}[U2%z[ *WN'1\Q{*9P)˹Y#q)>32p,=ډy rmzeL8؆͂9 8s9L C+$ɿ(^1 @U]烰Kp 48e>49$3B<(;m80l .d)Ν0͡vxG솭e: ?uuNp"KY)VrCڅ|(2}m1Rŕ.`jY2@p!ʼnLc3B3>9\_!X _:'(71TZ^@ =\z5rcEUg7}Esks;x8il%s-r0Um̌#▢ԑhNq!p-7e F! S =H,# 5O˄3&"ؘKӟϘEBf:%CF3åޅP78/e"\s? I4>^H!%[]-õ8SRZ՗`LX1\TD*q7-F#`n!ֺ"?$7Α Q×V0>AJCJPS~LǕxIIOY0fc[{T\YVS<#2h / &T;tX|X=ҟgZ`!t815~8s]%LJ 3rbi^ȗ11!B*Bia8+ `a5_CG pt0>ɭ8۝%]7{$NDsB&p._ %'6)T3H0'CWӃ3j'{K@Ns+r"GSXB dYȵ+ҁbC|,7, 2a6OCGI7wECҮ jBgwe儩no, uGy0h$jB )L3gV+Z㊅ Τ]*W1t4s`fk%+p^m4qY[~g3MRM-fL2u$=U&+\~:JyDŽ!;ݶ=NgTa;y䲃NP`-k|fN vWQfr芈eɒXaCuK"4VW( %%,Π-0{ pFci7ɳJ* ꅴi77 %M8m,SƈCTPsiøƥ`}6yi95rp;:f:p3Y[hL7$)Nr-H+6YsEsI9' ;/ŸLN@8vø6OpNS5.V䒪Xyoz*=SUΏi!2D 8\ I 쏵h])TJ]K/iNkJP/>KQ@t,rSeܤ#R$zpUc"h*_8i ;3SUh : ? YaN̅3 u 3aD&L pM\~X;e;Lj=Kp\X#QXj 7 +XB*\T{Iui $dK('WQ\sdj@A=>Gb( `<n[&P:Op,2 m!0BG.<2a;ǹЌ_M8 w||U.N\?8NR$ncr^Az !V4c$ N E+ 6R$a>dOpJ)S*Q.A<R@v 6Y垜ǻ쒂1wF0|,is4aL6rS- ݩ;h<-L 1G.k+7G [q3)` &DoREa8ʸ 1v%ߩ*GC .S3{+>SBrA?Ax?0(6eUe6C-9 Fb3sjT\5 B>-!h SN/i;$OѰ{;΁ٴPF=aX9,1չnsbe ?~~ 2/lN_~x,r=9%!?Ufџ҉;:0M zP p(C!H@_& bX80Nd%?g\ M$\)I&ŗ.?;"yy"qi%V'#2^LT縓o90H-5׼ ds+Bcw} d.cb)f VZT9:+J(ʋ PB-ݖ&:9|L:Z=OX%YOeM||V:Vq NHK@'(Y=Tq6M?]F=bB,.=.އIN@c.gnRw*& KԷ^I+gI:VStp u>H"w%.|î,%a. V7舐+Q\kZI/z׃q|\}W)L.\+ #% l4D}qPQG7TMoN[.LK1ROQ ~Ƴp B񝕞bfj鱚Yaj[ (ʏ 1;9$s$%+HB~ 9 Ր{tSJF/qE.fY8u<3xZҚ]F3>8ȷ)ye_x~`o3Zwqzd)K9±Pv{ǓCdTlrbI*.Ao>jA? SwI*sHbF7-Qq !?U~疞2M"$ͨ&tNRma7k5O;4Wtw|o;UҼ iA˾#0TMz`$^wh%dVezfKՐJJ(x;S"PC}CyER3*#+`SdV(kT3{5`$Υ9]X{AlKN>ZdKURsx/UL ޑ ?MV|>mEcݡz,]w]?M~cS5I7%s~l(i40< @@`C`|RŤGq<[Dۑ3C\Gѷ'[٭UwoH<7LdV;)8RxtTO<}%L,JPhz+];/Ljn$~6ӁIq/ j~ )J>OdT0a}܉0!҈s{Oe.Wjn'ڹe';Fy?{D L7U[٥iꙟt@:;no@x9ݒN&Gou]6U"I\Bb*DW7b~țPʄ`Zi6ʧCCfSiUMR'8np~B=,EmuRl <ΜhyL64Vk%2ދE7`Œ0hxKq5/*U9^>ͱ3ƣZvQ, h*\ ;;Gl`:) g}ƹJXtgX`Vi8k$3ztYR#=*j@en@Mh4V婹ʨNXOCy0{.5ѝ76&[]su E ^O(+py6Ʀlhȟ(5`]D)h׃GdBQvDvǹ_M Cb%8˙ 7L>7tX<} 'r )ʌWUqucSr.D(')*Ᲊ3AG먳Tf)|wbckps9NmsZ:bEg7 bcMcQY ߤ̓IڙɃadj4pStTIԁgh ߘeZ,|MotՅ;Hhª"džP@J+IPQkcUCiwPW)lwp1ptM:iHxurSApiz:M ɁK8i&9%+d)Gh0p"=lJ x?o*81?=tR,"Ppn`2U? `CըCr=VsuIe;)rx?y"Kx:GKF+aN|. igBWpuUg)o^Kx_dS+,$ 1捿eBv_03q9 e|3f p˛J_Mik :|%j>hasB6qqD +AVswTsωf*2T0Ij)~X'>5h$yM' o{|)C4A㤝{H_T19D3`Kbwf]"t ơ{ī%/p( 460S`w1#Q* ?7pJVI5I hcLA8RKjJZȥFK*|Bu!YL \fNeqB52t9p29&<~`KHn̅(~(k&Ժ2Nr,_$'S2-TЎ<S3NX¥9X@+JLY(#4t $"&,5a^LU!uHa,M4ʨ9' rv~S?Kox pkg6qfRGQc4Ovi oxG: CUOj7LZyu2lyHfWv@5n%Tf){0МCmY&Ln\j;M3g g1^vQ*>y[TfW^DZ_;͑<|.p3vś8`;upeCV0q) J$]pb$=e IQp˼G3cq܀}osc5c,V3CSfΤɋłs:cuː!RX=*$je j/QHuN~8qeyଝw<9Ob a mÒzbZU[m3\Y\.R[]a,47I]o:?&P,,"`KO= y[xq=R~ Nq/YzBҸW /D.}u@U PLsPb]==nb޵jL?I;?aUp/B>>1\|u%zNVm!eUi!x7zY餷;N]2`h/ҚI1NAHfNzet2mEz[c%:9U>'?o=0URpm,.$\$'}'t/QuC :襚wq16_%\4ևr$dLȣZ >VKBHn1Y"n`a}^hG^jx9E`2tQC.!-鸊KRJ۰H-+ {#<3 =+#Id2x{yK8pFnyWrFAHaZ@9A%-^6|S+Ȃy p&pf~: HHX%ŏRH**] n4Пcf^ky.h1 44  >owq%m+u tpH L#a 0A#Xw|ϔi,Q\O{XiC90 ;q$k!Ͱ d)`KChBU^KU(V&U  i`%|8HCq# 0I~ۍY*ٱ)|kX 1D W0=pIyh!!I) i-pmo8 s?肥%Yrߜ`]o1)VDG{iIeQ%^e z=`*HݡC6ăE!uh6TIjIvΎ0\JskZv骆ǩ)~:`aILUGc0;JSN+ Q IDAT$B7owf ﺫL"&9*LUuNPjtU~%!_7yy&3].z[5u9h砤1AsӴVdn^kuR+fNg#[)ќW]qքXo>RJP,w?y\S 朝7*f2?!i4QQ5vG i 605`)-tӿ =tQ%R -F0MΪ]/%{f: 붫w N n:z-6uW:U64}LrKQw#ִיDezO ]4LN}LaWv)exw1uHur\6(juIZ0aj1cMZS  +7ǻ; OQ1]{\܃C6yFxpi&W.kw_ ܆aRO3꫃8;i 4R~ߺjM½tYJ۟2(m/=9lڽ̳ޫȣg=끩TAv?OU5ݪ\7"g9Sxsȱ4>x3av\ gq3Rlf}VHʺKy߹F{=){x]-l:“5++ dY8jPܿHRgq늜+9h']Tb_0*X'4N)jAM, ƉtMsRArn`I:(TMi%bd`^I%kyY.%-qS>X©%ImiUݖ'Jcb*Ǒ/uDQXձ+"5Gq:N6/e8[Ւr_~S5 wt:a&%&7s-R˅/e8:RsLPpͅGR8 .U  /p/cʦ KV GK\e(#S )xOS_a';K6Q$%}RD捊'WNb&R}<ᴚHΊE1, pܤ䶁`ZW0i0Qu^  I$Eg+~>;Wnܔ+{&NutfI ._s٘mV-Rq܎k^oHw/Вޣa-.zXXlsWO禫UQ5ۨVHgW*녚夅6d6᡿({ UkcQ/N[ڬ&l+\F̑>`s {ßbU"Z8Gtky8fZۊ[s$)4ȌlhA|BQj3O XWYR ,ԡQ8(+d+•.?c ;љ)ߓKa+閺)+&ҖH=hCUW)^劗2֊Ojv$?MPT"h\F{"9V>'34ju{_0wQ(3u{봇̠{*/eA SoXg5\E_ԯ!B_,s q1ndƌǧpQ_tb[fYJ \֜ ?R^ʄ%q-'@:g>!p;C2Bc *@TܓvC/mo+"O >R)JB}P,TCZSa$.4zC|%NEl8E2A-d\&?ot6-gyJmXm3sbҊTOTLZR؁^YUeg ,K)ef>R^K۩(7#)<"9 k0BRJW*^!Лًk^yg0 ϘW|juLp;_)Q I%V`(%eZK&s\:oA#u 4.ҋi!P\Jq;gy 먯MeύM%S@~Oe&ZsYSZ2t<688*`Ne܇$8a2/N a*RwZ 9RL'|pel"` {wީWHX@8A4rB%?A W}=Mm۶m۶ll;$Md[ٌ. T_̃RN99t\7bba7T&e}T CJB>v )&ipf|s_1OR^X/՜@c7:x)ګ 2X{),uLFԅY9vx6Iel_WK{Zgԥ1nY<ٝ6Hh[晭;Rk/x breTϕR3e̦݇hp=;BfLu=BQWE:y)˾:_'husn|g-ILõEcMẽ'ETm(w ;v7LfvO@) P~t岺-b.ifLK,$kUv= wo$<7s9r*c $yXE!S^2Re%g񞗹+hm`t? =-'3zi0 s xGOwPFJ>*sʴaB),+8! `R)1-|rAZ+:fϹ t޸'%tYT_ʛ\\rby9ܢx˯4Su۸ox_Cbf\J%J͋ lpR-9w^j1—\0(V+`5QP5sD>c /bQ|6ƘSv׫U-wh0Φv(Il5ٜ1CX $X2Szah !AP*d"=M 8wY'y9bBOYAoRIzsJvI8# gqQ5k& TEt,/s&XΒ@(EG_Z8{ H>)|G Q==O3mEA}3yi.e*L]"U\umxFdm%eI]"LѦjcE.`~GnI)-a/haFJI̅( @2.og\fAF4EN E\i!Mt</U?i |؁/~&r<>n;M3\55*FQ2S̅p(\缃)p &qŠ';|W3 cAcL%sA9+$t)29%c<{uJjMPU m T))2pOy`K6!P^[Mz op4~FQ4W@e)T9Vg `VZaeaَ;-iP~p4*<ǡ}횲zF54IZsVR~ntp0iJ;A]īx{4! ecݷ[j੮Y~{TR=ȫL-}IAiy&T!=`yyBcOIkSUYk%l 0bYLR>LӃ;:nJvϦgT)@UI?lt@I>3u[k M>w'>&n :0gWècb(sI2FaKЫ0Wv= B3eE}փûe ➁c2tv>vKFKYX C`9UvDr+4. snAJ#T>aҍ;_<.)W᭙3\){9i6C:LxSpVd2Xn]ʋɸ,2wS >,B$Յ5d}پDH>Bm7圸ϻ9t5f8`@k\tFrB}zJpF NB~Ə |3Zv(-E! /8ImS2A5u Zӱ"퐆E.j 0 0 Ce0U-(k2 ۩$,U3MM6=T3[twZNCnI\Ϲ)() CpA.ce, %Ѹc+aXP5trȊU-|)vpA]!WT  3z%͡! j$ oo / @J["d8R}0UC^?i1[o riy.A2,ɧA&؛]>VƏI \P;h )opLmeEu.N8)6RY !=̅}X?Aaaҭeq(ũ^*TF{: ϱ9XƆfxcOwX٠<*"X른hj~npTh mI!URt"j$<6TFC$=ROBh`( @O6 <*+8Ş ^uB3W;u:pNZ7s*tOIlh7u ?VMq5ZA?"2Ow39#ԇ'0=xתҜW 91 gWƏKxÑ9'2 "6v sͤ7aDM!<ӼNUoruVÙ)cйf:/FpdžX\Pvc<%R-1chuŷLXxoc&/Wށvh 汼QʮW8rJ<Mׂb#YQ19>́R :r:VZn:%сf<*2 5TB&zxܭ=dAp a%rH'Sx]/Mk:ipP ~dQϱ)Ʋԃd|V{|ڧz3uҕ"!-rPO=\9;RR0T^vp9n7 J. Ir4ҘT VscR:Hsl ]u_Lؓ:MBi0E,(bP<2@|.^2DZnZ]8W@%px6URmwܓ&(7%*zHŇPllvH2{sA .YpZP;pXR P1:)q ~^ o Zc  }d4b2HK }` PF2xM/.gB[X`14]!|vTKb+6,3!ֹٱ'Mjx.?2/=!N9L!;Nu++{$P R)%)h,YxT O}o+]Nw_4"UJ0o/5MSJV9 /j 2'UϭPL ڋ(/QRms`~ʽ<v_f8x9_n_};[ozݐrP8HưOᕬvNv'h{ ǜ[qO⏒w [[ǧ=*3m0ؐ09<3}a">x h*I![!=Hۓ<`p~+7 ٳ(fvS4C>!6l][i?P'7Mj_ c n$a]+ 5Щge!u/sRUX[vb4>2j'3pkEn^M|w9 < IDATv'xwWCdMOJ:\ z]²&7ŒA)aL0HM`^;w8 Qx ->n1JwS ^fdI bֱ7FCՠ^RԳB_VkE]oIByﶒRAcIlͥEP1͆0s*. @sp[z c$3Ƣ4'S5C4\۪AVӅWqxE+J<y\@.i]8:< /[f8K=4i&*'LsawCWځp,n,4Š4:uSgL3 MRI ꤳd?蟴k&wR.v] ~;hSЩù tL!In%+Lo+K,PǥjTI1$IRon=g'85K b9lvC5y* 0l ;iXMҗWƓ)~N<ā'\tFys#U*y^32\?JJ V̗Ŷ je0-7TUW!J7S5v?W!̣zLjRC rw/KeOVmp0h,'W0S[䢛]CoHM_ >v_PUvؓ33I^!<|t5>pގv؝M?wljt8)᫿χyYc=?TR7յ(mvr!m m2I S yb>Ñ? l) .g̠hEЗߐ ɟv~s Žl7Dzkd݊cF ŭqqr`sSQ,n}YoՕ &k ]7sm* f>|䡦QRօ *}!)fg8珻].6Z n>؅C`5 wLZ+p{n>4B1@W`#ਲ਼SIUe mG ry~c-/ǵe'oaҞԇ/$ĺ f0RJ_+wd BORZigywN8j?sxK2+򭵿Bc?kL?97=rxGL~Ìo ZaN|UbjSUS<*7]opjtV:*mA՗R&Ш12gvqj\ ,g?t}H]C'9tf #zsGlM:0ЩT snnH&D@ sO{n4$oeO|1&o 遼8˚BTo;D ž#jTBN_xm&jH1Huv]_rPrza#h54Iaq@455;pTgGhh !3=PNŌT6^G!t]*(J< n|% Xnf_W$DW tlo|A͵:d;DqUȔ*XS;ך;ҶM;ݿ)' '~f}*WOt.R(RiUisa_.#8czx(y?_xW*@N{7֩e\)Mg(r ŤdxoCq5o #Sڴ5:Yo*:UNCJЅ0fgQ 6-~]h}(He .6|M~gԃ"du*O; )sdǾvH W9 : ymiBrSgBx p W#^a܁߃CۥJx/|Ii=pϽ ,\fI ]LA[G.#Gf|EaXR)x0&M'f8݉fbG%b 3'z旋nj ֶ{\,ë䙬I2i`2KwJ+:6ԼDѿX[iT[̣S_idڛ蹮.n KB;yߪxbQBͨjn 8Nr0gr$'ƛ}wM?3?LMy:S%ah `dNj-\ YEaoqUT= bA\֓n].[A\q}Tu&v]U*QCD* (=VMe}F5\IL_(?FnO3],N1 [b== ]wZ2^Q#F Yb'w6@:):*doR?PY0vI+i WL爤i^O^jHVFVmn#i^pQ6:ܜ%=z8SCi*5I7=ePk0BQ*UYLCp&\nG(6=9SFA2 _cA4M1w-. r q!F0lpJ\HS! M/v 3!S81F&d&/&{حDނIK:g4,x/gJd_a5/rgLTLΪv{rZJa/#/V`9y^O0+tV6)e=T4 <jFBYCoz&>q墌\A>;]ޥ׼rJ0LzR. zVs"s)6Z#8LG7)ݣx~%y`FXĩ(N )Оb?%1kC( p  Boh,wU2C+ p4~ RBޙܑN8a'0 yl`UiA%DO(lN려tbXfx%EaTCuB/ _'5-M :?ױR.!Q0[RjanEw:Maa2"t'L=Ժ8ƤT>IGhZnyK)Te9VMpۀ?iuOe8&N :et`NXy{ 7M1؊K%)+ߜ:P~)-p I7` zF%?n\_Rq]<@j%-TZTD2a4?L J639nZKxt㌔zʯs,2 + ?~zo i-3ZJ8Z3%ܮ: ” VVQ͝@ z8଒2 b+:.8JE%RFzl1VRC' x5x.^ Vi ANP3j U3{!ϔznN{*IIU}6dU\JW;Yp{U& wd1o B@YQ8NQmx[-z&`U^~$QZgsaW;1N?.(R|B .刔ety,#=Hwy⾗1hNT"K(΄l>'&ZjgAm EV~FRIC1?hr'WeMH3}cX1;YdTE]%?x.g9AZhe5Y L ^K+w&V17±a1@k,fŧ8LH2ˮ4ֲJ.dUnj: E %͛屺$/TH'(K a?L dSNOFGݿq-pjXp0#dg;E1F>yo,M)vaFT-8 fuOm~,Ht˜CK5%2K|5`.m8@•Z8)6MtXxB;gr桼 D,[|>EyUicx7*>ϐ*<B䧡D~AISn` O("2\K3À*K;gp( |/PcqC#!;sG/WGCV_=~R]0]`''nLa .!w3q`)gsJ¥ W]ldUa똞XpE[Uv]0j^.&N1zAmX_"j$ǹP y0>a Q?lw_.($i77ĊGw7_M9!yGLțo7/:u|Xڛ\b0E {U҃Q٧bK?hZNz0lEƤ– +7SxagBo}&|7czDB/6Oí ]NPQ~]5=!KMKy.ݗ'3H3ɹ;;&*VNC o&$ˏN渹#sݱKμ8ǡ~. S?OzytSQg L2tt2V-0p==….7y7m~;Qu5v35+IBj@IP@=ozw(Y' % eźXS<6ja'Œz=3#zkRI%d01|[Ly -yKk<ƪsVq驥zԘE)n©p޾i{7,+`[gfUW폩t-\`o|SĀԣzX駚?Q_..٭rJ>oUZ]׳ 7+GLo\d <'M;`^v5Q.j΃,N-  _Qmy)Jk ߔ(%`?V]&0 n*U(m%7kJ5h >ޓø#< MOX|`]7]Ԁƪ yxZ%!03=0H`ldn+6 l)t, m2`iыyp81חžeZ>_Xux2e^PG*5`&T`Si`+Օ.r ɣIfT0C`/wƜX2NS,pԐ/3R~MInyz&{*ūd:M :;eh\'-GV1@]h ԗp!=;Jy>'І+@9G_yh-䪬.Tc,7 UqZFZe2 .s&P1GyY}ܐ:RZHI肺-<)]]oO9F~2sc)WHQkXk `KeY\[.*pęgz Qy]DSNS.kGݞlwNn*Ser$?Ǿˉ&D !v? V_rTwV_y=T{>zVumrr2n3747Lƫ'ZocIhP'd&nakL`f QR])a7X9TKj5::Q`:Xiw3㬜T 7J[6+v]bZ gX9tVaDBiK,v<ܰ2S`2Nz{b D']/60?,1 vxL#Jnz lU}<ޛԛژٴ8SLҁz$]v5xs; D<0ἴ05uM@W* x*|y7i5vmjYmٶk&??n#zl?}Q@1cR1Nj~,Mu\!xz?h.zM0@`!V?A+8[ 06bY=NՅFXH^) Sa_h]h\3LE p8CA8RAĘCiI4P<'둺UPح'r}u>0Fb"TAҌC (+ CF!{$ަRQ4Um.V@.2DA8mL<ƫzy.OQQ*><չ|Lg!ܠ6;ÂF0)8?!NiM{ քfkd8O~V1Ș`tZaEU{V9qg*D.Aix+.D9  [ #NxlJAfߡ:$S1y<0#te#-UYbK.1zXKKQV'_0Vf"rxR},^Ǭ6o*je֗ xSWR+kBKiyiM%.kq6P%pO? &atTQ$M18YǪHϥ.VTPsYOI4 Z npo8yA/>fZv`k%5Ԃtv5ZnT63jjkޘ!=8:|V͗R c(̡E#tW|Z/$;qƋKgÛTh)E$8384d[* .|h$>O`nuǾ"t2'1WC>+Z}jxU@{6tK`7<=Ϳ~j'ة#ںOpj2+lҰoX I¾'鏃Z8G0QzH݇XٻN1*Cubآ}}[e]=;P̛|zo쮿S?գ < q;/m\I8#?T{^ 5p't^* RCIul8c#s}YMdN:pLBdnpB% w!fA}L'!Bm5 媖Ec}Et@~+^, 7p/ ̵Y{Ҟ=.8=6fMHHT7juZ6s *fnsPpeTee$jF'1Cla2?H:A*} |^i cTHUW="Tp*)J? p~<䛐J$;SJdQ7q;Ə qc{JIeK C^'T95ف;zɥ=vRg[jucK(vЀ@#tu;RiuQ5KEYmQC# Bƪ6ks@-n$%xֽp&/4z+4٭n*0|!e 0 !h?˶Ce$JqyT==0_OQؒY'^pqwg7E\'fwW]ripf6#ev$at \ցMC|,k+(sF,xl}T6*`  UBHc{hWpm%n*}Jx̖H[;0yoȁY  ޫv؈tYAn:Aq^C'}@qp*t~3~[fC3n4ϝ%t^L8.%s]w*A(=p Ji9$5's,#""F :> W0p]rƕԝg܏#lO5qcL/C,$KUYdHvqpd1)І;h. 77GZǸ8ڼWFE6||OՅJy'x(Y#h$G?:ӱ0+G^ltw#uޚЭBuV1/ESY܃L*?m*9!AFK [deFS sK k`zhhL6j氚I c!A=V /^] F(2QE5Jr;́&nЖF)CԷ5̀ o XnR8|PVBt9L\>xfhg)E;xì]XdKċM$Ag[D h@a&ci [ 㿝Η)[J%>FR :gwXʙ}*S`;]!4(zc-IcϋힰL?Fc;ޝ-xEF2^Pe S%iAJ:Jg楜$so h}?\`U_π"7WV1u*ҞIS;9gfJ}j۫5ꇞ&7_8x'}Z23syePeGڒ[¥dp2򑔿-%ܝU5(&`'dPm?5_R$rƺFŻSvGVck'J^k.i*$-V9 ]>X{H5摼x紑^^jεp>a_4x/et4&{içn|†WIENPrY3`P'5`6A]tNs@oؗ|oFy sFiTD@+ ?bs5˰!&|=UI>,WvMd'ێ.̣z7ϰ">[كgO;/S~;o`̂t]a7&)^p twbv@%{LԍR{0ZSi,y2Ngz&]\\R2{(P!Q'N/dUN+DhQH4܇YTnƶH JF9_<ހ5[¤8&flX@'iq/;!7e4|z2& 7E`y?!-2cDꐂ0RYd.7FAA=XJW5L-@[xS1Ig"4:I1vAPT|U]`SՄoBya9tR|&*c1 iŝq.DI. e!Fp" QWg)1FIF)Ni8\g"?x~U\>\ 3Fx.co/-9V&fHMԂ7&^s2 ]!CRBj@}i 7Y;-#-4Ɲq u("u0恆X qsic6h=Aj|H+)i*qNagecOoj)7T8L?+ya,VO`ބnnaP㹫uL:SҞjVREǝH<K)TVr=[̳Ua 8uZkyh9]p p~D]^hCe5,a Wǻq/^v° ;uI Ђ7Zߊ[I˙R :.&U$x ss;nX9\IA<*DZOOP @)kҮ/S#+! n์RgK`uEf[93r}x tpVuZ1j*])#qGqQ\ q, ebS_,Άn i/PG?s=P`އycYÚH)&eWO>C_a%F/wS&8hGTmn2\zw#,_d"@tv>볎#tg ~` );#,4voWrHc*}+Xeh Y,dH(?^0[3`1I3*zߐBIn>r->P"y l:ߒMx))`2Pz1yOcT!bj }+*=SN[%7#,',UT:8ɇ%a<^n$F^K(_0ޫPL%,ἬڐUf (  Ў.sq鄫Pheor!`[y2@ޯ/qF)<`~*ƲPFk8 GAnt[RM`ݗ89g^I^Q,V &k8KaV9"p~Ca ϒ̕ݒS^g$AO4N/*prw2fbqON!&B/n*7؁A_CA-i9WcTHQW?z]qSd>D(i M̆ v4FHw}ADZ:ҁ/ѫS)s3R9CVFFh:8]LL G30\j ]pMrcWՊ2b {|?>jþ#aΠ)zTuJ}t~.T5]ް.Q)l kOῸ0s@A\2g0wԯU}))%6WWcT% 5Cu=2 OC}#q`M36`оA#. .7J9ۗaI V?U)s 6v(%m~g  IDAT < <wUYst5Qi۩/#7cBr$:}W)`?s ~[i%ny퍴Quhjl$WrG/>:K*8ӘT)>czJ0s-C6@5QLoԗ,8 $\H"6Fa'Ź ` LWSTejP^ZalF`0JpT&JQ K-U,\+p>WKl/_!su5npdž'7:tS)`0;Tx*v*vOq#qcI 3xDP[h( *7 .Nc d&lOxN^o(ͥ[Iu|9 +%l i:;90mҀ+'-;XZ$0=X1f:0^l7S<4T>mp_ꩼڇyqCp-aloOL' 5 ZPiF^"F CJV̥A> Oe2ߢK ͇ FNtxTzΉ͢8HEZX}4c#8~;/`O4U*,q:NvvQWފɫHhOPo"-itPjQ56iAwXFV/$Nan :#TJ?&բ00g?tzxOnb8^6:W $ cڈ-L_G/qn\8d Jus,鴚~.wVP+ԁϸ]Nq#)qPc8slǕPG*n 2&A>4< MGp. wJf}) jcrRxX*&H2  (ܒ㨚Wk~"X|nޘ(NQ|ce-67v*( tIġCPF $a1v0B1*=ÜkCxjp^q3 2b*٤3ǨL*'$vRP:Om1z WT ѧ<"-a6]8?B(O6#!L'TBUR:(vZ]"Ċ i&SBdkK PM$oHxUKt].4ڦlAga⿍VI4u7EyL_,+xWGcXCnSUHNqNtNb6h,%-, P,f Cuz2@ *# @{t¶& )Ʉђ=p _9\]_[o/3WI3/Dd$ahAU,'KrR4uQv+ZHiOօu*懲C#Fufplk+VItY c3ዣAJed^&\ i`,EA~AK6$u$Vbw\jI&$cjm`Kr!ꉛ(A>el̐I6e*طƩ뭼F$Pyb‚ /H )p57K&-"M")0# o!v}gVq 3Srṕ]IUDJ~he1,%R a}6Ig#R>HX BȑFe5U=0jcVjIyo{HR͋'ԋ^9|zmYa15fazWmbyD?ԢDNL0k`CSe ht^'e>9(2*n#s ^Y؅r.i, rR'B 4i0=Ca[7Nw!WTE>mЕ:&"CCC"K ٘p/yf e[s+GZ8IJ~J'܅y2>Y*Sf^dځ?p[q |k0܃}*_vRp9vOnDXQ z R9LcU#SXN  :YfN NrM|2Bu!=9P*aSJ~pcUKXpJ[ޛ|wo%y5jmvg%Wq\{OcCJR&>_>?AOLFÔ9 &dնJq,VG:ozb  䠫4dVgVy"RF+F[b7ov/AwCgfSW_h/hvp\ w됭횭0~ϣp[ |wrCE煡̽tԵY*9U9g`]$^ziTshW/&zګ^s.~.45.*sѩ7gc W;AZjUjqP3ltd~W9W2*V; |.&5/Jlgw)DuQ&P듯s8h瓼r4WNWFj\lNVyFIßu٢F u\bV ,||Q"ou|*DdZNA[6 z ng.5W7,ɿ%? gyd\KWLAh e_>į2,) 3b 2Q@ߑx `4lO3 hLx(~K4~Hc-TUq5-m~U Pq-Irchś!̄ U0;N,!x'ة"tC fˬ#%aUpE`v\*aK?+zn^e0TAad~PW 1cx@eD -g/xduTW7;T"1Q1Ne.%&дV (+%\\Rv,O^u%". .fOc4}%'kFMj[’ ^Q&uX':bAnJpYMTQ K.(ЦD0j3-#aJɨ ]6ɬB3)}TAMaj rZTp:G*r5a|WON I>: [ۛ$<>"wKeaYkFppXKa_2;1N{lJC[;"I>aausiڇ B'agq5=-h;TN|v,(l=0KoeTi T#=S:Bo4W`>՝^(v'2G?;hzt5QF3g2M^ NZM%̎]N-ݒA8_uNT0Vpќ(1n@VKpVMeO {?Op^ߔpOAbsQXAFt]p%s{QEkh* z ʪ f~>/ {pԎnFB ̌!SY!,s2~@C6en*皴f,y#[˯vE֭s&2:rb_,(/(yXqU0$mD̗"GFgQ="0Wch sF~^+ł-6\0Kşג~y /$;(?nB,#تb6{hXn |basjF+_gya~a< 'AiQָBG38| d -яPYIsG;nl.ge$CsGK1#L֟@Wlf <O}?y?fEҏ]jE\zb۪6rD v=6ȎQ>).Ե3& Yl[F0^ /ʆyqs 0^'[: -iyIë8d9EF/tR `60|Nw:/Hv w ҵtSh"2 AJ<\P8Sa<,Ѐ2"V?1SZԒwQA,%,O$uqݥXTG(X&dXTS$=2*Kw'#Gۛ-t6ZXm8 _/tUz/RѲ K!"tYx1si˱p;\pNXy[>."WRȒy7K2ְdvJjJ9tK,^p>%Du2C)3vC`^' \@] FrD0>Ryp-IP`ڄj .{ 5Rm;mݭmS̼=Q Wؐ!zLX5?[5o[K7I"P K̰.QugrN;)Rӹ\ b1Y(m`!k\2DXa]d#qK-b$/2FTu\ƾݸ 61A_ t,w8\/-C".ThkZ'* ċ:T/Cًs ̿cC1d-bE G %eb(6i}2G^ %Я4$]:hO'%80(t`# բۓ.z<]!rM=E5*s&W3㻪Ķ`IiWVN.?ZMM2.S\ Ŕ|ɵyUR(oLи A1e_#)NC{j&xh 8 6;iҺIm̭{4OsvɫF ڊfClum: ",olr{Xy|!ԝ!aY9D87%Ȩr7 n wt4]?a$>fݑ u|Rr+\^jcQL/ %"].v*7==fT ̞R4mJ%[dMWfYXg̜GAQ/tq u2]^W輪0+joQ/N IW _0;Q8|y8cgqD 8 ?^OVpHܲ{ķ=Ez6GOuQ>2j>nSZ悢mni1WA=6m^#VR@`vLה#x͉|(Lg,ÛЕzy :w Qp'aNq _*1Ca80Wx#@G>A*R8B茏`"vpҰB}`՞LTg03:3,0/6d=VY KO dCWԦx/&^ rF*Gd1?5Stj?FnQ4PSS& IDATcu9X&S0p%Lhgrk O3C0WOt=y2C{ #d󽧖|ʺ=pOcg|93݂pU֛ =S4DRPQ (3<'d%d7]Gd;<Sq#ob';6_ՀEpOFUEquy r2uH^I+;?)< *o˹pF)9zsq]I؃ pюiEts#@G  I>0iv?loC]Օ1*ݨ((/|.uWM\Wڰ4[TU[#N|ήeճ6*{JX땷cpr46sF'Ldk f1_>GK1Օ{Mg6`p'^,fm`n8pq\![ڿ׏1wƓbFO4V&%M g Muλt^Xc,c1ZYם>c>M6d7!+]\\pGK U}jB*UZ1̄ |.kn#7`:%f7)i'݅ft6tGIWwc+1LxUf0-漤){VOȤ q ["&C'U"C^$:X)DMo*x|؋fp Uifa66?PY;h?=tEUZ];Y[z%_ \-P+ 2^y~Qvb9",' 8SXQa؟A7=ƺh-3n9VsמAwxF4l>WKUm@C^iԤe!;Pa>O(@]x9_0_:!:XSW D6^UB&p2]W^t_=s8\<lnͺƅxڈ8G?ʉZ+ih(0P-Gdg!9Zp4"mg}x(ʓE (p@  c6^^|qfU 9~ܐs&d6YE6A":[ʦH__+!iKA'QgMxN'GbL|X֙8J^`Sܭ0S)5C.;e\bӛ #|ig9FwKs*|z8ps?5t5SDzbwf0.Lːp%se7])4W6= _\҇^g~+Z#yI\}Dt*#+N.3I%zg lM 0P٨2 :fw/mJ`]EG;<8mftM^cq\l3K\A=pc^毤-YP"}k,8gW3)?c9t $f̆_s4*ʗƎxq')~y^k'yͺmbv ̥%$A'Xk88! `?hB7 u꡾{ U8@B}A}іYWr8e)I4<0ffiċqP%h/Z 10}V,n:=鐞r?awk8c-S]ti|[(vi(un8Aƫ˼rAN2Ţs>nS {*FC>boW'9P芤P9Ҟg_P, dWUn`3u0Y4VQ%` jȅQBmS<t5(&c?ڨd_kB(G܂OhӠ>Lp}&n4vAA jO.}R2]W)\X@-}y TPhk# Cp\#+Пf r]J}ի| &6 0ܸx|5jxLFvNB8 Zg\@܋t)#R*[h-,T92>SpMA&U1li!Take-(@gx`f6j/3,E̤"UǪ). _1") v8+ n#tLVe (3srK0,3D@0.]}!9EUV[2YSփG2q^|] a$}q0W x 0s *b$X+Au:K.)|Q h?bϨ44ATf>(#xR K%$W]@sRʌD=r*[w ܕBtGA08YT~6zjlR:ǩy~P/#(T Ty]v?GqV|)z7T9"8L7+`kd+A;$e{ :vzv`M'\u-OV;8 EU%FGGHX?tsQ%t;j1{:%?{ o=R&j~Maǵ~O}m97/CYVQ.𨴧֎_wq0ԸLG>vu2.H3gy}Q_me3b}qfO; ϜcHߌm;#~a+.U``^n 6g;ꃐ[0U9T2Y;d!^^n':rzkGPWuAI5tCU5'Nj,\I>٨Cdx^ss͕K݆˦uV 8}zwK*"My1BĊVb.3\Zẓtܒ'eX ̆=f4p>H!+ UVN¸ML>XhʸkM0X-2vC#Sʐ #:qXBT3Mr{;c}2[j2 cB΂c !^eE';P?_7v| ~`.QD j>֠4c,ʘķ:Dvm%g( 3HXQ.Ŗ"gz&.\ڞ!Oxtwm]uF@VM 1TA!i=YwutZԅKFqƈaOWbGAsb;*:sf "'C!p~"S꣮H}͵.1 z5)ʮءXY,vن%t+W-qCD}ȴ#fEo \#[lt5s/=2`?\_)a:M [;3D뙨PNA`.F+afLe8eut YgǬa<.nP_ny8CDoE,hn+HFT=<ܫ-'0]۱`Kr]vʟ'emۛ:wXMYc3[mƷ&O\4)R,y 4O_1ތ~W`QrٴvE[,QXtp>pt :,\5?4q }n1O@3,u{5Xq 7aPVMӆsD?;-kڄCDQIdC%FS/̫s8\vyfck@z/5":soʏ]梸|$&he+CB\}<<b8B.M:"ESuHˊ'鍾7mŸNyi9ى_g!ff!P-xVUV[x,̡>xwM8.oo i& qIFe܆'B񓶊u >hQ1*vgd .0Hm:rIN/ZȤwuOqJj,7X_Ww g|ʏa~ }z"}Mu #?BXW= &KOX+zn J ʬJT|3F% U TϹhϗ9iKq>7ڢlz>Vu\G|($p1`8-ҺB{Mq` Q1ʝ|pXp ~"_{\b8jQK̢/#7\PY`%vדdFYWnգu5C Z,U15\a0㡘j} 0nz m᐀DsBpT_*tWĭ ·2HOi)%GoNcdgyQZAOd'2!c`+{qc-yirUr CԌ*ئ\nƷMZp6yb.i}_XUUy|%'Q>yǿb0V$fvd)#|l[f/Nr95ʹ1~=ȍ tjhtNlk&ߴ_[,xiZyaf0Z$҃}ԤԤܛpܙ I_wOlǢiW|:,;9_ 2:rrՔ9-wBp璌7QFgGhJ.`oQUi렚`}FYHk,1B!TJvI]OFq醅 !p W#k=S%w`b̕8aYE;ѝ ܜQIlCfnu +~^[砈c0ĪUtInCue.H)4t$z $P7^ p.a&7ns<߀`%Wdǜ4ET0h؁8Tc9 B7@7L{)#G}h,qmXZ븙mMg`{zr[+2@. g)\k"RHk9W^;| _4+~LDIqցYCM )a44;&|Z꥞nS_Ik7 AWXzojoߐbӾ#fN#0lVbregv;!~ K/C^"ve z&MB} F )~ϵt~6K^0eQ>l~C0U uꠀ?9˱KjAҥecO%b+X٭^iv6r}qC?==vH\^sƸ48du;GNX+\:lgUo&J^Y[V~ƘiƲ.S#)7X[ {#f +~0{Д+z}^3* ޠ!08b3_ZBWL p 8vO/\yķ۫O8ϱp,ֱk,V ZdN@71_:䦰@)ȍ47.4&!US}I@Lx@FxHg̡[rCʣ :,ԋY * #\a:,xM>*IY`Amb5/vD#to%a. `3OPNƟ\{?15^S /7yDNJrQ짍p\[kQV-猸qQEgEEt8c h7P?*`K(M-G)ɻ`3xLSبE9VPC,pD|ntޡ j>+h<`NrǡGWsdlw\Gy(^nGus`ߢx/%t_=?nθioy#fn +NXmt ΕU50JȎ 6PGNl!,ԅd5r]vK _1pCfZ\mcEh;߼O.аK}dǕ]UHR~7Pˎ[W͌b`8|jx+/5q\mZ?gr{{R+\+z_346ďXILȥ>T XG‰ȈE#wU us`j&O`usCꦫ51[*R6IF /t J^d1֎bwN-n%?hgMQ?oBQ]$BN*VzGQY>h[%ZjPZm'3_RF1fHߏqzW(!wR_J cς'REj*)Kr|^Yw-2p~ uxPZ N.bQL +h prp~RJp3m{6F,߃k_/]Z]] OHr[4 Vzh-R*O,G4]8aj/^?~ID*Ǫ;-k뽚rۭ\]Dα#3STMG9^U97c$aU ܜ:6зC,&˱ 7h2H!\jCܽvg|q\]N'ه$z첞cy~èJ'>ʿ^#m|yVT( Ҏ&n0&c+%trt,Vm<p((D7ݠ"Noћ8~#Pgx U)N$(}[BFC)W|#ixޭsvw,dEr~)<`%m|Ydp1jF],&rxȣ!F{z, bG@v !+3x_D,.~Wp\> Ns#()qPgC] *sXd.ϙx?6L b1V;@^yKu `k}A}YlvE|HYMau)c7 )4BĻ1PTQj9E/! @3{Ded ?#q؅wQI plYO؁OX,⓸h" Q[^Ֆw`]ZH`?ZhuN'.2fЄbSu6u*Akl syҼf.2:G.ݢNf 3q¸!ŚB_+%GͲ+sL#fO%azQЗ*@]v~ t.AuX{VVSMJ9sg'RK+ړ&US`/d6WE}6m/哖r^Qn-ssS+5QU1q1 }h")?⭣]36M1>lb0EK~,0Cn}M/qKq{ uNKhԷʳ6ފiC|c쬞8QN Y>|vgfs[6j> 4=,BK76"JdKŴ^¸) BG9CF]@[E]0hx'[8GS)up9XK$D/Ea4:>SeZ\W 䱟JKjv*C]J@/hX#Bv92VhgIZ"9$ar7uwJZ1<֕x% ^J! *x#?~dNxGsԞf25AI 7u1$ƙh#G?6<p?o0?:MF~>.Z(SnL!՚9Ҏl\yʏq\YڪcMTuMh- A;l!֜nr;.Q/sld̅qcyxH+9l&>@r 8s\Zx ja.n^_' aEu"JpNA!Nd\pXs= Eqp:Jk'~p3KXnA9Dex4<̰"/pR)b^ǒAmGA|nq؏5,j8BM8E7 z&6âDQyLomq=7<Uq^U]V߆K#Q4ȍ|4_^M9n0|]B76=frtXV\O=v/wL7gTB3 ܹ.\Rdpr픖/ϊy/3i~PYcLl :ױ!Nwq>|XT'm}c5*?쁹H^u :&XKa{Xf[5OZƗ)Eqpn-64gCOGƔ`sr;\2PYp)խ(Ñ+$͍f`1KE8@51>.›?A`BKL}`57f`-~r07BS3E&r%a֟ي@giVVyHA7R.~ 0Xqkcp8VA`Z#;YXf(.р_W 'WllgAjhh?$L'+:XD1KUQMWy|ĉT_^:4CEI Ki=j3aKPWq4=iaą ]ѐQnK=ȡBw& |OA x @{c~زNFx'zs';VU,p7Ƴ>8Ϳ0/.gBAIl lPԌfD}E 'Pj}wZJL[c.` {ڻ\=vٍ QNnY0|`( Z_%M&t@Qz 6*H]xR5P煖YSꆖk$*ISQFs:oO sbv <9QuQeiRq-Fۊ ZNm(F_p6&#Eg1]Uf/atx|9@40$b V X=Q9)#(=GrQHrLsQA \3,i9SR6xBb?mP.QW(1Z@?>}VZOg]fhʹT\ESӂ%mF=%ei<ZVbf _8qғ͛(e{P\Omg}o RTH)O3ſwіb> pxÔ9LK-S3oܗ;ؙgYOD9 0`0hDM\pFK~b1mZ=QTl|nY'9/Fl}fV+Ҙ9H J]盪!¼| `.w`@ChĊvy Yq;5P#y:/YeK!<Ch+DqMQ_T`@Z#n`-{Ki֡:0_nC^.T\:ف`=?U]2{Ck9WjAW8'QO*|~'PlQCa<*C}qPk'ZPV2PGU /`0F/d؉L om <^( rGNH't!f:J:r>IK W3x f^Π~pAVN^|$ +4c - 8A"VV{i Z-`0J ~s}ݥֱjr^OohwCKY.nR/s3@2izq:u~gM-X{-2آUVgc)O<NNw~-'ޘN^1J1W?5Zl !$(W1oaATQk*CKԣG헵f#W TSB8j#pOj>'j):#a~4[b EkpCUS0.GHg=9{enoBeYY]5,͝b ڵ.2 5åSŃKFb:. E o *s,/ON?$x̩D(#޾ހ􃮻h#1(DL,*M7-z5M TZ9ֳ"K?މ;HhZueu/6a0Rygߌf3z?>2KPwqz>=흇Rn$gQՇ{/&P+b>Q4'>і%bo?-F7`/iDkvVo.[kng g* uX|˧;pt5AbKx S c"ҵ["qB;)T'1YYenj)|! u?5'Z-bdQ7=4쒐7;գh9](`2T1xXf'gX|$WU;b'2K e .2> - CAnsqz!5gx6VU90AtR m_eV@ʯs>.lj?]`?y\Is{="\Z#st~ ȓ2Eq 0nϷa(6mUޡ(lnJZdKS/%J GZ뗴VdC;gf 9Fl"e>Mu  - CoHsq:+n;J$j' /mr)vʾnQ-=icv>խHXJtm6nV3x8)ְW{arмb1b8\_oݯ2"ٲ0\sQr"yy)ju/z+>rOx"1ߥD{^5œ7M֙ n,YXWq6jg NAI>O}Vy3U* {S6@u]-t^Sz0Pkڈwu@4. r ZcUʡ`&dQy3^kv1gpbFZ/!Z+85`N5xuOW棕r1ZB@^xvAf1`0pc>j!omV:([h xʩ5L`h|D(t꩹WpvIe-/I?PׄÏLL,6>&[4zA]c1n NT9 b ĦAi"71>5}ؖ =p]>M_5a~'lXB2 QsFW|9#>mdv5(({҃,P qL`gK m8Yl;x9 4j A nrEDWptipH5bAgQUCqBr Ou[KD׿AXK) u:+a0 oC18'6AxU f W)2;V5/z8?EJZY/onXͬa2}n>5}wgr;umsus.uRhLoZ6@ &@1+QaW4f6Q v0Eeڋpu8 vt2ky8ybTP?|^[ohqZ<Ͳ/Vd?AFcmK(uûS7N8Op6ɛGZ-mܐ[`6];RKeUC2湖x yze[lj\]H{̀OwY‰2Ѳ7ȟz^ޗhE2~ 2  R~:/gVJw߶<_7U]-kAЊx1_IXo+^UD+q u,(BD RA-Dv(#ҽ(uxjp (UP=#= KU` ŧ`+εyB7 ^VƲ/]ʁ,%CTnxJ PFky1H\.O^P4Է[$U3sxzgOSg5z!4cְx pg2j&SDh8>X|<'y,ƐOpGZeQC+4] k9Vjc{'?p>Xz͕*.s &"HU-i'E YA?08]fHVP ݘd$0ja5 ag$F (/5,3TFBNjȡ^>OoaFuwas-G"S./De-nW9R+S^Oe.4[qbU 4rT\PsՐPB/j qi4QW-⒜'eDҺP{~8Px/#Zt_A[=s`QSn2fx!i-5+E\[aT vAl\B;å E`zϝp6g.l-*C'UaNb*7!|_T]Ɠ!Ca'S QJŵZ}E#si,u8ç1{v8|{?2'ztKIުbRz&z~o+8=v[>X22HCTTI!UAm :"[f/A11}"p0 [#zq+aҽ \zo8" @oLLOFMA'ᡧ24,썽M^G,: n+ /^p*/x|T &-9',YF389A ;[ȁ}*ל+2Pm10q4Wq;QB 8o9OV-,a(Za;kչ0*K2e!6ǹP?U"uOC25fPh"WB?$57@~줚`bX4IU)VjZf9!l]iYggF)J} )Z :)]]8QN8|ּ.F<59 Aw?0^ 6sׇXqEa44@qt)QpZLRτW6x2T=N` | i-,XEP3}<%kxPc]X7 jf55,>7Y .֡xZ$[+Z-Dao.gL洹U<=5},Mkm[PH$jg u-2m|ODюԃZ>XD'u[}8㞚_k( _[͞lXv/htlXmSUl;e!l^Xhn(-XV~qtuq2j'-޿ʈapgC(bO WoaGk22ɭ|A0f)-%1BD[+WtOo9u罻N 9<C) 1 0p,oUCy$=$R! hIj(h-ii9ZMrMm moiib 5ڎO}i6R)ݸE ȃ %WpNG] ۴*n~=p j+agoYZ*N숭Fn`#PB(j%D'`i5QED_ 4FRy4@uNK|]u;5EgߧuMjgiM|̅VW {EܩD1,crF}9RU\)O4a|EXj3*O-UW.ˣ3Te^Z:'*}(tWReT+-%PW^‡̩*r~HͱWy_pu*,JT+{h: tfixV^x.~`<rQn,|@-`9PNJ,xz\GOD0j e(3q^a7Wꝧ0)3|=7*r?T  rS' USˁb*/ 6|^. NՂ 趈u@pv7nP*_,„1+?. o2Cjǚd"{Srx^5P SS LI50!pߠ5>EtpVt@^be YK!O}VzƭyZ!s ~P6h `?nGq$>R0nrcn\\uy!5P q>>rNJTcJla#ʊI"1mr+GRƂF!\uh aq_ΞFIJڱQޑOxԗQؾïRngt*Kyiy_nkIqI7_{z,5\M󾒇`260*r J* 5 _$c 3gׄՙ2&_wWj]>ka& lu:eny`C̈́`NS5RþI_;kʦG,!]kolϋ[Ƞ֢$Ga2gN56rCӶ|]h!D3ߡv3HIqki7^%uRuo ®Fj-E뢐hF\;Aa[ktb%nXoc?-ZA)&k~) 'T B,~捚# `9H5?Ëp ZbbvWdPv'eb1l^,K8/a<'TNP;gf paAi0\]%꛸O0 P7NjڪòIu!;=H%VN+zp菉Z+QMS߸ep86tu0L%*-Re9/^'0 <(kLU j/>  v of]ц2hb/lR]oN"œpt'|V)X~ #j8UXǒ^@;,A1+2gbe07RKE1ae~Wp3k)T(W&؈3La,+`Oy k,l#U$8# wc,E2+Yar̐PK:N΀U@\L4>loIAnRN =oO`/9ԑǙ4'&#Ya&DE q98%#r0^On+jl֊U-L}^Y9r6YC\ k:M>{ _9Jj/%ɌOk6]cm?VW-G cy)>tTQzNjU!@qz)8 pcGlM i ~p ` \L@:xRT ^rA!ᱜ_yaTuB:08+x ]HL?c>O8k u ֧*}^)шxEz/k}jY:Um4H,%uRfri˧?2GP3[3YyǛ]&`0nZj%nC[NoJE[c]oYjjxN5 bEP6f&?lg%ZsurRqvGOO|ړ0$5Ce({_-g9|5d aVz˙.eަS'/eOkvX4fj8RK!i2-f10 >:LW>NWlܑ~efGed&X5é׾=>P(E'ֆֲ*ZBq gɠq|qUv裺r5ل?q{zkphKGR /Uw]œgO=ED< _ig9.-Н@ nU0Ou*@gx=N`Mw IWTU0:$kQ#K[wp*p?8a ;3gW(b2T]CyJ9D d P='b~xq'B?20mp:D )6?؄3xE~9CŸP~lf (Ko0s}34u @#jux $i˰6d7Zʱ! Lf!'Ԅ\S~V}/b/Q"j4 0J8O|b`2ܣvPSTtK(]aC|{+Hh RÙ bS >j4 ǜP6*-_PwW͟T ^B Z|a\]\gv"_I8yp2$XU 7UG n&+P}9^i30|FtYYK*7 1C$2c| ])pQJmJ D0/1'22kr'm;۰J[ԣ~kXup]!T[K 7rirBf>9\s5RH44j`]7ʯop}k*NH=>@)!sRuP? Q]g_2XmV!czgC^MI4Pm ׺c V14>9NŒa01HE y\G7™8u`EnqM (K38M o3܋CF5->_]4=GZxmy}^qkY$͑0R2u!VYkJ'dQIO_ -ъ8'a^R0!cO`߮>ISܷwFtG?wp{5,9twfזP ]d*vJRTYkʉk19r~arM^C-|Д>VFqggty-gR@Z-6m=DKeBy7W c-ۭNm r 87=M2:._4˶8K^ЏduѰqm 2_%Lbg$E2Zq2嵌וWKԔCaEj|?|`(ɟ%\J 'cAAjgSTDD-f|WԠt Z%Xv&vSA? _/U5ST'GBu9[\J&Wt~z%<?b$Na,J-p:pO<k\K;}M!EFO-vj+l5xk-|ҡJ\hڋ Y 3z7r-뵚+)r#֎*(ji(nn`^g74n=w ?!ٜ:|0{r TZM]%x}Zo~,rq%**OmP]f#~pja j2N$詏_sGdw^&Gy!砂8`V¹8G5LSMp^1XT} <l $c!]z0=RZ|_i}Ҝ][h7@s a;7kYs9ћ\r;XfSŵy8E+lTo褈er12!D#Ϧoo) Co>F+"|-ɓUV F`]ʒ4vQKaWϨh3Wb+d|9]DcY?攟F+bLk"µVi4M̬+1a_ztȡ(`5ٍ_y4&6 ` rT^\9'd?&4J&~#rMib +%NLp47 a|=uY-ZN *Y9cI0sd [ÀbL57/|JS|ɐZ<_Xŋj/P#vP +=!iA8D% ޥ+{&P'\Ep2PE9 7]> ;`5] g&jh(`?`NG76J5ヨ.ka0=xKc KxJPQTeq lzsܔx c<":'>{8( gr&\$Rj˓aeۼ \kx.-`]W'dr •Yn̗!\mǪtCT9g(+]%OWU!ɳ;Y UK=..#Bij S NQ3ƭB% x0d疘2\]b.ܤF 7a:g0N-p 0@(Z+fcKm@=+"~To޴-90PsΆ;Bx/`u+=}/eż,2APUC S*w$ꯃO0?s3:%sqr"K֍xgxHC@5 wVx -`V+! xv=|&TX;ԀPJ?=3 |XREW#ʙ}u|UKAw >$un|:X[[ %M4C M*z_a&s&kc!k\_Qm*耟4?Z*s(C ˏİ#ĮcP]i y#[b[IO3 ; +Յ `]I#&وa4"LM T.B x3x? \'5Ԏލuh$/f߳|&TS%έWozK{O:Sm}cT]373G1vl 3eeW gu&dk;4?!iނ|&Yaί>Y"CI Ue|'qE]{VWV@+ZRf;މ 262%S񼥏V.g F߻HESN#>,óaܘnC/qnp(A:;tS[^>4 { O(&L}%%[鉆̀W ]=ERNtF?E̓ܒ:6NV6 Wp9PI1w)sԔg ސ͹T  A  LY6g70>4"u>$uzgq ̯|{yJP?I?TNbo?UV`CH6Dh E9z\EfB3r>2YPn(ftWBW+6H4<%_ԃ*p\1 ՏYPІ+i$>Q6 XU%u`V?6::UO\3`5a~sXFUĕXFg 3e6{ZW\'~`vvp]o$' h?o/.&U0ϙ 7%8*3 s.exBeYU-P_ђaf^VYbj}̓1pcj,Y;*Ц鶼_Pz^dO%cY,2..w[vRc%ܟ]_ L}qM># [3܁/=MK;<s?:.~3z&ϩ!.ЁrSL)iho˰r+&_Sy=ue;cQ v䴆ҾV$D > )Wh!vw`|MSNpn!ȿ3qbn0m_ܞ,8W6Αk :k==;@lAET1>aZsl/;p~B^`=͇y,B78LO:Pp:a?F%`ꂷx6!АC4$w)N"@qYUGڪ3Gރ8 [Q;r]EAM2zϡ2T)X }Uņt…)N2UV(aȋ/+2Rb4RZc[M8S, R}5h-*`ϠZehD=6 `yS]DS5r'{!U|8Ǽ"RIj(8_*N{VQG ;r 7Zᢦhf~]u͚"&^+dh<#U6g'vAܚRq(`2wv6/xr!5R\ߪ=~‡E8 )HMkTjL}j-v.dEDd+b*x[ZKaNRSb ~2pxjtX=7~r询*8$Gl[ۗt×lvqq` IDATOPs~ 5_a<36|5AJPnhc/B+-3?‘|8ٸ z|fg넳VVOv^sE+#,o;\ghy/dvv6h.8je5uʌC9՛ayZoύn #aȥ{MyO]8ׄ@Ӧˢ: ލPB|"Ѐ2,0W@huxF:aGVfP%l_&tW-n$뒶<)m}5Nh#iSSdzB$:F>Υp8W9+@W[J}.Da{>Z2#_a'` ^.lgj? i<_&R~NňiM9ZTPe/bxH92TޗeZA-ߨ5 g zT rh$_t]܆.P`yQb!8ߩr;l'<\%!<[s0 a,a+[NipKm0BV 图"yk O4mo ZcQ6< A04sʡ.AnY bp~\ѿBNu2 vcn܌'qC4^YE̍zn)\p4RlHW!Ɨ~'<؜&i2ч#)Q/*,t9E!hN))e+S] XQ' b-l^%A%K3l[-Ȏl` d>@N&*BT=m8p0EcK(I?slZ}n[A1EtFHh,^x:L+DcaNې&pL Q`^WpӰ1kVhw<qWlWB~ŶXܞ` #%Η 豄<~#﹜swKp$7C ʼjQ-S L~;f %6K]> p^]v ='g:h9u~BO<0j.PnUC=tnX[,pOrmqކj9΀WHRWҊ2Edчb;gc G{@qeZL0)~׆_=K@Hv4r5`l$y~VV50s }_Acko}:"h~V([fS9͊js/}l8Kgx/7: cdMQ'jD5.\FYGPqZV}3_ ҾzCqP8!.PggT̋l>qgV6Ox8UO wf ,0E%?.ׅ}R$@i,g,vVϤߛ{e\IO*| ~Q&NК'a7KES7#B9}B1Yhrs, UPN^j5߹,wW _izN8XڧҜ-5!Sfj0o*yDŽ/4,Qݕ#"?.Ӻ|HU觏AI0F=@((Y˹FR j?8tc͵S4wi~,*AUy'| 2+.psnXk)e8`pE`^u"4dܼI=ROdQS+s޳Ws}נqV5ĈBPDPW ?& Qq < TIՠ4nxbud]hӽTkW#^%8yJ6%T`m[ySdX1V~3[ސA#%O7e{%\-%Jn]8K~hy6(Nx'j8HѸ_քp^q%QAGօm0/majuPpV{TiPw؜C ȩC<M#yZOeW$n(Ž"'nVuQeI* i*,fW ;f( ["NޚZ{ty؟Wnq° \5d.m9hj d(ny)zN T kLTRUgE[U0DQ*a`6OLot`>$#6b/~.:BO\m0Bx|(!ajVhaO!dt{ uNI/X8x!%an~9S.ư7ԅr.E|KnEAR{cM]q i0jy~S >C$b5Ye25y xơ<]xZq L***Tqx =+x/4c$Uq&n 8 h T;4 cǮNB,,ܒ A5=3Qh9v֏YUxV:u)ARFFZ̻}G|3s1de|0F1{Cߏwv]j#cNnikz2gNi;Jfa9 %Q9M-c'+zm>N55ǼΘdLevpw69`7Guaki/XW&%u׷>QZאp5GCe l(=P^=6s?}\JwjfQ9D< 3\܃~{C7 6ڹ%J*mMR1>geEZ#ms=rI)%^hf.p^෣irXfA絕xGɵ>/8C@5h\W_~o8 kUϯMW$eB^2wvJW셳pax@Y b"'|ӌkj'?Q)n*,H5YAAǕ-߭m .ٖaynIcS'tIҭ\HTS#b>hG7Wa$ːQ<{T'؉mmaDl,Ga/kAO`Ǫ%ҪauܰMN ( &"CI!s('%(5{YCnD%y0ԁ\KPh T4xzc>ă@B]\8xXAG|+t!?j#&P ŷ^S_i5Zxah8 UQŢ '~]0_:Xg9p&9DUPRxp!foB'{ Z ǪSDvJA#Ɠ CaZAUh숳EY*=GypH&H;UtQ (2n&aCQ \0@5C4ުTI|oÅT7<P HŚ/OͰYճ楸 '5T^N8ccy^Sn"Nrh,3ςeq8y\cNJߚWeyrNius+m,n;gSP-vϱ |[S+ XA.eH[+k7l liަ"إnURI 3e` Q~jvfYu "lm}Ox>WYl<X<4Έ;R 7oiluܵ{L󱻠FcC[ =p G k\H+C_!_nPe{=3KF߅yy(lm93Hm^6][ͥx%aiRF_.'ݟ3-wT U=agH`Iiӿ5f-cZ_VJjl}8Xh*̇*/b嗱$Kȗ`hס-YTV;[p(n@EUWU}kQ8ymّCňE^gB$@-XI LE=̮`å_B9O,,ڨ7\+P}<#`(S$LS@&SU!Bbo/0jAZT ?a-h 4UJhy>~8u vx;mݐU q%v,r!;͇f9fe0=|[ZS=6(IFf~.ZIf?+7rt{=Y٭,V{DE+,ķW9㵯!ߩ)hB/4nЎh\ ȁa2Ɓ%1Ixp.(up΀:Q^jg!~Ca7> l 9_bwwk]X5XAkoVP$Z* 띛>w:OΒz՟gYř}g/dP ?1t!!l?]c}G=iɷV'D߫In;/Ӽ(#;1tBEqxoFwS5 G96PP<1YFx@ڪ~]eZ*T| xp2u9dJ=|T}| ZLߴ(0K,:=w oewFʌ@8,͡.f^\Z. :k@N~-Z59f2h<gzQh ` hD=8˝ .w1<^hJh(qTAįC $\׀C}՛gMliT~ 4И幝|[?Z碜E,Rɽ(OPxn)_vP'>2Nc5x_xX[!FjGvl-9?YSTxe@=<"p|ku )6(! gHVVp$Vüp5՝ӐI8 x BUYTf3GsxEY6hԀ Kh nVE0_\<SKʎsJybeCoG2|e2ORFUcwPQ-j$}-개*bM i9G'&X&fv1x#DjF p_'Q/G;wzIhe6q{(EsK'#mQ4S?ey&#j>բ"{bǹ8t.vV;MEwaW4wowU4YWȠ;Cϴ5>_~9]#5s1Ef:ܤ" қB!+ ;iXT8d|2zIEYO> 8{@=Akk/pKLrX7uݯ)S&z{0JN# 2H<L{)hX4'\D ZNB'P.X(f]1jVLK Ʈ:\#v ؋/i.Bo.ΔX9CV懒b.lc u,+B Gth)w34I찕r X,̻})QkEg#p>(88 P 8Uܶ QjEJ삹 t W!KH.9<,y\2xzA?/ p+8 <>޸ 檴B:6l pL\1մRZd <%?ƾ,zbw5>ZiFytz>;͛)둯\ewETn8lYh^RìaŨhl͓\xJ-mny~6-By6^//cdJCTOKy8Ѷ8s#f걺I݅QfY+/j < +VKdF)Gg3"d==J؟#2%m5]4+ly>QAM@KT zQQJqygH] L4^kNU'ƯEAުŐGHh@!Tթ6St\>@6!B <UB7g4|UCUBbpbUu fgD^?j  uX& _PcO2YVf%UGmVU1xt+0ZPs-a ;c LJ1q `v\"R;%B8K>$Xh5Zu5_HQ=a*zc5@Ǘvjsi p* wUHAH6&8 XNPCQ;d:#`#G\7܀SI"}ОPTu(~̣|Gi/!.j4 3p_:8a.cO|bZ*c9r{ L'þ(*My%guS.I7k1Pz1.)0|!IZ[%YOW}_[r*Xbڣ瞸U'pm5^#Zcs'q w8MtCXsf܂vU.JA m SO)5$@(ckQY.K V}N9H(yA#$j'm*;,ϸ4^cT CXp Ug8`j|XGj+)dXʱf X+}O+_D^0]jl [wՠ1Y{  \  ]xeƦ*?FY9}14 ['3s[Y3Kjs܋0\oyw9ζzjJO7_d՗T)ZCUjgL{9#e-(+/<|9W[}ʏLhq[cuV;l=r-OSmz-:h#IB*')>Xc1!iwh0u:gZ6Q=D>)[7W0 *ꉸ,<8!v¸v.\CYc\UarS+`,’\h9+-~Ja7H%;4.\wq Œ -_2T8&zE<72Yc0Ep$. e5.b,·x 킋FUa ^燼*]\A1K/X͡, c{ p:tn Hbrc\*[>B~畝O. k4\$+<@ֈQO<|1]d _|XP崑iݵrOϭ8P9rf֟0|d5,+x ' `&<jJ-r^8T*H [Zq#bT֔.bo^:o5Rmq*Z6uQӞ~:ޅ!wWeED +U|HMg]mT4^Zj*XkN7k+q-Z4UL/،UB5ȅ0 ?"dZ(x + ϡoeKmGxB^5V}hz/Oxr",&t@Vw!C_>\[qեC3]XFcQisu˶΂[.&ʡ5{q > |$5q OqŪ&r>M7]6l QO +?FFA eWݠ%d]<=<:輌ud.0[NM^׆dZ)Z8PJ`-R3tAml) Q(L ̆뱶 "HzD^e@̂" 7?~ӸNɱb$L5)c[30M"/[\˪*X:hCp'[h ù r"ࣼZCA~.: Fk7O8 ߨlP@ Eo9s ԕ8ʪIxx/fM$4( CnDјEݡ4Yn8p#7 -=p^.PNa,7=_Kສ0vVʍ%|9&E:@hk+ק'0m،Y>s#Wa1v*l}QFWsyB;@+6or!7Bn/3u?2x%|w(<ig* ڡUrEjCUL-wmc8s3l2XX]X\L\R=Y%|A*C̮RfS{k.~;ښǂ:JZo.V'lk->dcz0Hwݼ-Vs${M8jЃc|GPsMC}X7ڥH+ʩ2pJ! jB^GM0q74vP,86EۨNCaj YlG4( ^<ťjZПgCبު D~0֚#}45hմlh9:6=㝳~hk 'tʼ)ϔDϺ'Ȧyy49 #ߙiؖAX%4C~BT:|  (pj]sL-V"rA֛"ͫOu&je gs~\e46r,t^ÛAX{9عk.Gh8X#?~6둮2|"Y{T16Wmg]Mx{[Ɣ$G]>rJy&ih=VuVzET?j-?I|Md[7,ґ+Z^5pfByFDS1I{U0|+} rK$n ?tL/BaUY+vEbGNFI < cQo|AUDiATSPY [lx #aYGy @e!c__.C0fՐߍr|/B7NzJ>^~g < LU#\T5T9!/b)oxPA. W9ȼ `DP (h|ZfK.q4_e 7#F)| x\q2_C]Aa<6b.f-8~l_8k4bZg9y47CLRq Jw\)RW\KPT0[PzrU+ U!.3/&J.\"ުHHWUS1i?4;l0An 2NTj 6 | j[E5܈1.Bnn.ɪ>_&y Od7WCtV+[28AW8 ,:hߒ{ 8j{c.U \H︹:̡71GBiũ8-$n{8;Pa1tn@*werGEX5Fq:Vx prkD.j5YR;$PVM "gq`5Qw_M0 ߹"N߰Youv` I`ig)<oD2l0׌e꓈c/VǠ<]FA<]Qw,’]Q~y؆so5FF8gEbR[vLn/GM[}U IDATjU 2in3VW=ϨmhYLwuM|#?C!Y.\H=2ch0SiUKy8-6Pnꡞa 91SS\kj:ű. <4{DaQո*T]= +nFXreŻ4c͏*FAN&"_>b3HʛC}̹c8ck}٧ej&Xs\5=qdb)ތi>L~Fmj,!QY,G\opfVOlMLt1^򩌿ͮcu>7tz?.+lU]Mz4IbgCRC n#ke}$#VkmXCPŨ߼n؆G)P̂GU=yPF^q(= ZO5|́Ijkc;Zj/R];!o ,#&\l #B1P]xרyA7 )FQT p꽬~卌8,ښTGAswzg0_dk"eiwrBu8xXG$b?;?W>f)hd1X+,Ϊh&[J2{[.k?MuZVX('PrB0?Q70z^7,(-p>`ݠ0BA31V* 0W&sLUU-x'ΦְDSq cP 3)C ꂚsQǑARa\ :w5gp)4AI[puZE&>~0ZY4rCԋhq'7A=i]4^MpG`P#NM ~%w"Xo0x6zj.'0(sQY`7U!n/a/g!HePBgh'??eB?lpkH*# dcȀXi9XP.{.r[mhR|MPLU̇|dnۯ*OcVyJ"ˌ/#?v[!%}3/%]Hޝ*FHgޜ_|̽1[1z(7ך&_XP0"G?/ËGj%ϦgFm"Z[7̢Rc}SΦ_˘l]v/Șʙ2/}ti}h)i}dUY|; Z3%ှTFJ1T$ya8ZT9PRFhOO2rvx8k?<,Wsqlˣ'\}i0*'mk\-E^.OГACB [N#Ao_`14hق]*[,9CwqWRĨ4go\zqgKg=c3ccq[-'t1EekV51\w˺R.]X iӆLe%2Qd0F=D H3Dk؀pUk^itwz| Azxګθk &zbZy(,ZY g7-@CVRP2eΡF&3դ'2'ε\Ц믩/Q\q9T-,0âЊjn0 ꈟd;YjJUniV[u. zl%x@ja>)U] Ya?5JP> _a-RR3YƃJ lP$B(:0'BXCPzOCctCO8WT |SDSu 6p/ءV+W9Jwh}@Ȣ<[x. "8ED/E~ݵ"i?H#f NH:=!9:Ny#qM,R8 C8w>>jJ`WE߬*GjW_(ϟ8R.ꆿT w# NCC6 m(n(@8à1#c' QM\?aU /`0l ]*M7OHEHrPXI8RS >t.h WeO@u#,-\4f%M`_m۔,V' Q9YW/CSK:"S~O)9ݵ|,T>w.4Eu8Ӣբx:pIp _"wX iPgI<"=b=V>bs k \K@37E o7$'q%8xIy~1a5sq1^LatDOj۴6]J?K:zzSM=.#;%Bf+M U-luzRdoˌJ;lXOFG(diն_ET_/AUQ <^2VBv]}[h59^6E?h-uKkqlm\Yז+i =_- [#'mTԃ|nV+Y>Gf?!oZf~CՎx> j4{+gdz53絗yR3,g>^Q jmU+uحٓX[L@j;9;3}x;{%7lz/-²$/Ὸ0I%9a=P JA%f/_@{XNekDo S-i} G褊Ű-lF}! -űr;poG}A*1f;NyR]9!A;ET ?Z}aUSrxnfVIy3薒e08+}}M|}y uEMz¯M@AEGS8(zQuKV dnҖW΅Xm@#yauQP<-h5|{<=xS]R-4V- V'އFx&ZgӟJUQTĺ`z+!rTN܈e!P =q"-dht)'x)X>w.l1VKWSd*zg0 \ qTZ>]Ŀ>Crjbbee%|i;J _Xbߣwrw} x^4 ``a_p 3 {sl]a~NJòX,KQcPO_8 S͍[>ae./Br -l fWߵT/2"yp_H*fݹW%T# ^8Fy?+\A1Ro}?L?̓gri,-#-ɒ$ë0\zirk/i鰶xm64 K?%zS(/8;WlCB?c Bu Ld'Ғe 2&ôT8> XHvXLjRv\QZ4זQ vB"{ -17i )@Gw:.0.ІA/ e_hzNH{Ypd/!YR++MK_>)ײX/YH윇'}*7t!'twy6hi7C >9Tmm\]667lͶiish,w| bxJ&*RRP-=OA%hs"=D6d1ET>s|OW:YB>:+1$qK|l(9t8W8Q\I0n4UZO\]Mt1 Ak1QDyԥ0S_i ন-s…4mq(#u>ޯo#V$Fqs^Bn97QwB5T煢"Ex^`?[#Ɖ0Dљq$rXL/6*R4U)X,E?jx10Z%>c朕S5L[Mp`\%#+Vz{/+pܧ<A/eD/A%Q.G-rQ׿T{O̰_a%]S:a4"_Z#"d3r2F|5BÚoP6dT|Y~,VR1Gq5NSfΐ {/~ވ-9,bmC]#=o_]kog 6T}uv-|~jz-CjK_Cz #"E›\H/Z>Pk ٴq8m(HUQgx>@U+rRk\3HB61xvEUPA|XI'8]EKm!#0psbunb,x.(,h΂z_df ?U,- |YN4U 97&U&-ԷW,dgNg1Xb˸ckoUw*sv K(/u0V_Xa>ABEUt}{&.$g d1`}0ñFzHurk:U=źgQUQ9<()3]2U5{`l_:J (,W8yq`߼lTVP: GS-Chu\0'Ք7Q 3ʨݽ}GC#.ra2 *bl"E ,x#22RHC&~T{J|e|o$6"{tSzN (F2`էh^ &F  >SI4D*UtwnIp[C4D14ۊH4@\ 4jx&%S/j}sC?3iYpN n#VcbuuM;{q%$}Ʀ鏥+}ʚ#U,gAGu'hG7tsh#wi53|^JMǑYD#ݨG<>UDڅ" `؁NF!XM,3ܑ_]qwNܔ5,chY*Rd>gXwWYRڠFj?TҨ*H6?{2*O(2pzUC?jp`EZc:~7JtXQ\6) d5 )lh')?wjJ^ rM>d 8PBX~!;RGqŒh 9)5<p:~ykgvW3F;e{#䁬vFIoT |k1xqߨ/ul׷cs]úznZޥԟ~$}Itߩ$gfw @"2c2!:x'qQ6h>'hgl:坃Vդ28Exaa!4UGEQ&hǧ<:: IDAT6b_zB'Vz6>c(Ο8 h6K|F UO :7sIm'k@Ee~b\q=K֧uGEb-<'[)Mxx8.-a5ݗI|Q^~O}*t3PTCf_DpU?X;߭rxI=8NNfbGF9Eσ7l4!3Κ+cC~I~jQӬ_&Uks5׌]ΗXaGY3UEa;2\&/*3q/KM 5ݨB xfbUTݠbD{4(=8}~p /⍋DQ mت)aL'끦46i4W=,qCu L3aw{?y!{n%:8E^7+;CR $ۓ'$}ǞBcBz.G0qXfkwTtI==>.bK.YӘ)l,sߥW'1;c*|<K~۞9ץNT ]r)ȸ,io`r?FJ^yNWHWwMQ9m?s謘!#;OKkh`/Fh$;CaYmM2"}RTc-񉿁;|() %/IA0[+2zK9-Mb% Nʓ|QwRt uQPMt>(V4f/ң2$oxO8Jy? 7:O96i j沇y:vDeu3=Vq 澺gHMhzMF.HJ$ ?0&[z_չГ/5HԢ*VoxϝSF[0BdpBx%k"P;poԕ/QYvv?9sI!OT.t,϶[z#9P+S5k譿`8 ]!u6命&g7wdsd{ .;zʀSXgn=WCXl~E]/.Y"П*p<;E t Sߣ\ 4+ܥh/76H~ MǨO"zMLEfGO9pna%&rx"bUU]W8[Ai/Pr;:Yz8foh-P= Jv:bD86hG9etS+)j^EkQG?i-6FGUtaM)r&5FrI\!Û9z5G\'0/b-B-ގy(FV";[хb zgN9%dGn( :k\TuZQ!ZwcqY=san[љDέ[b*ڡힾb^dJ4mgRO,Ւ"'0tSMYX7d4NuGnI}eaRnF-_#,q~AXboUȫ=!t(P1 Z+Ek2qO/u_Aweve٢3.[,Ϣfʒ5_نG )T. ^%2:ň&d|so=r8*9MQ6Z`}26V)NA墠{08::?oȝ,%9^ FԹ3t9G6@v[ό<y5zb-Jz ď|ӳ46mL.?u'^g%V.q_~p$YAi41JrYQA))md -bwE5OeA.u!'ζrl.gvQ>bȦꁂapO11{M4򚍱CW C!Omin,p]Snyڹ͸}2'kWIu}//kU6{Bz$gI7;Rt)Pkm=[tuuC_"ڸR4A|\]`gqX'fYB;AHt<ו;VQQ4Ѣ41f Y]m4"EBX "SC\[C—s<6aeAl[&t.J?S{80A.'`qaԉ򨅮 &)z뉸 "ܗ'&c/1A!hc}nY?5tO{pFU+)3XkDvy7nC]я-l؄ q[KR >ă$z4>yGGt)s5>BK< -zT_u_:DP:IG,p mO"!? KRN *N/x})3T"mMKMf[.C9QPW3zh_/%hMZ@ lS8j7/߷~~\ n MQ%MZ$UiSTK.K~,ct¦4ԏt8.jJ݉s}.QEBͧHh ]X7ϪMpW磊Gfl_a8_DYuUĠ9? Kpe=?J[ҤJiyx't3ψiR&$D;*¨&ad>ịEVExXz8$Bm31u Gp'TU%,/[FYFn3kv5v'I~w&_ͳ~VyyюAeBˇJDx"*el#5@61.v Kj#{?}bk{Ѝti#!,6OZj˰fjBh)st 5BHac\ȫcDnrBr] SEy絃ߋTy%ǪHE4|A;;J!EMH V>O i#.j.?g=Q7XDvTaۧx;ޞJiCU$3Dw0U4:kPuϫ9(rUt,>ϱBK/<]DsSD3#EPiuL"J,@GUE!P~q{1v @] ]RIԀC$:8?Q4Z)fUr ȗZ|R~N+ 1Yn-=о|iVuUGF\7(@m@W'(O ]4ؤD/zBUϜh1,i;%a4g4tyPoxĽ8%oTM:+r)zk/DUE8+48Ky[Od}Cj;E!dEy+E ^xxͣb既 7]]A39=8Ǫ8{4s aP93_uI9}Z UB_CDjэVBh"t_xiUk`LD+J\pK(/0jj;PU(R1}QecP6NcU 1ZR<ݎQ|CBZ~\٧ya{ F3- y V|/9RKНi77^+"2unc i'xJd[PEx>=(=b18)Q=I Uw9(x%% (ʉ$WeTeE{Hprɰyo2j0ڛybv L XAyX .[*FO*251;kHTu TA@݁SV4 K 9#r$)¯sr=EEAhnz#U@ ZE7x>ʧ#$z37 )ovJ~0*:zTG˨߼x(4 t30 z އ:4VgS"rOxIBa|%%N+ᣴP6 IDATEIq|{TzP7n E;HѸew<"Jc6@(qڮ[u^/[w|fF{S]ʦ8{22Vʤ֧YZר&a1Ix~&tbև֋!"R,_h0 $L<䲦ҥ2g3e訜X PGUw$\9!κJ)ApaFk(ho"TNVʋjՄH 5qIBBNN=pp&fcF(*ɑtWNFW95ýyq)!Klj3t-e8JzE )&Ȗw$ \{O%CfwZ]RZ7:*O,W9_u^!"G`D '?Iw\uRE!zaȆ]^ u8/gV3:!"=DYY^Ix%fc)&ȐyQw`=NATehzw)^XF=>Z˜u6Bz)ܺ.S/mb:N/10:IYђX#kr({۱"M! xIZT>ұy@*jTz;vSI"(WxGVlOb8uAz )Ȁ23} 0W |Tlb;Cvte#ש1 EPM4Sjiد C39Jˤ)^nO}Ɵc"# z Xꠟl#ϱRL6ʱHN%bhyjL Ov{I$qd\1cWU/O?GbF\b/=cwV=P4n+ Nv$ 5<'Epf~o]xd`H+s^U>Z[!'P#zl|+^zW+(.cЛЙA΅BVhcWXx #sY,ʭMX Wρ)Vek6N. jpt<;.\_6ko1bBU5TCGY:KH5H(AUQ8fYn/HN=t%n&q+NW 3I{5d5;Zg>WWv?&cVUR=vxYSӂEڪ29E\ST,GgW(s\7,Wrwq d>znX#K=|O1ϊhT>-^wGa7y ۴A5CCOH76C࠾2~~'Ƣ D-zMAgiҹU g#tYe9>ߤ@ΔE{x˟ĹL.u"Wv0LYctNPT.R_=E^6qFz5X8OԼ)ў)R(A͏$~\goTS${)c\eOzˮ PI˲GD#-8kF\>2NS>q4Mt*jhU "Uv{(sYdSNh!EQ:YqXH_:`9PXBIg dJjdr"`HASZgd9@]7CD~溎݆sv̓_݇G(˳H:v?8\7 h(V ?} &&q=.;h+db Ƚ08(OA{hPtP7]-j䤂\ ymtbUNP?hGEZEAj&'ml#9's*^!xH_s S[6p N arQo~~t(IX$FPc,R #+ Xͺ4]R种_#yx?J|<u BJT㬜+7ޫ✕Jv CtEZ(4Tyfn"Gc]>c>; /wf+.z]Xu2w4W;}OP1ňCs> *%3swi<܊CqkqV;wwww?>~?62C�L"]/e.鼞hݞ&WȀyͪϋjZbm{l?cT M{y1&d>Xo>ṝ. 0_cv۞fhۍA`ʩY-7=<11W"W1xEiDSRuRT\}XN iXxa6ऻrjvnC %\ï`:~9>*a6,"31TIZ] 9Ie v?&Sp/3ʉJԛn h~d&n4dYOV=yŵC] q2 wwW8ըii)mOҸ-T369_3/QgP}tJ4޷@/{(Lm byߚCB_J2=`z)õ̶oFsc-U9*i g'Ol9:^Nh5xykll"_RG$PSܼ'CYn?:#U\Jq(keNYe=%Vzsgӷ:Zvȷ"Kf@4";xh=QJ7tPB{*&$wXC@Y13%Pҍ0Pݱ ܛS2zqwj bVjՉr377 @:FkwN]Csdf5W|)=xpC([!c.T}- 3?46yz^˂/8Ob/e΀_TK=/ p-ɯwU"m5\Qe;=8KDEJq/9177jh*T^\fF+'b/p3"s?q(l:Ag/[eTO 2Za5̈́cqp@ WYSW/bb;4ĿD>Տ<^%3@E hޖ"v8FYWx\ǩ,愶LmЖn ЧfQ0ҩe}.CG1 C&T8ƫ5xb8jڇ? '^&0P4>71aL?Q' ,T%4Kt7t*\</i\Y0﫶2TYXpkz5U' |R(ʦި$k>|#^"XGM8*hUO(HE_w[E…Hv8KE"_B*ƹLMoݤ,Kkb*phz O&hLDE&fp\8DG퍰 4g7XSmQ;{~XưhD\vosCkzhHc>op!GTv?W'PzV^o)k1ʅ-mE1v/vaFK3![.>ܼ?jM*"/P5?*@+B7 wq$;%jb^6Rv[. q|h/jحM@P2~2GύF@ϮN8*T )UhHL+du}5]4l=j5R,th5(Na8G`1>"(fݵQ+uKU vBY `t =UM.o([c:i-cF^U ݽӥ[ݭZt`y-PC̮㽽W3Yu\*E}\QXcɺ>]xY3,Ś z$jZm"L:*Ahۅ]xSYBk6~10kӪje ,8G)lփC"&mmy3lERu5ME z[[2WUwKp _B8Ybo vULK^N'`5\FLTҢ"Ζ_- p5.&Ox:|\&@Y,L ^aP[q1H"oWpA=U_mQbTީ+'T|ۢ&SFR.kTfl!8(p 8tx0Gp'(!WPBC8lCJ wͱj/6a"MXK2Hq5 B+KALpNH͍+ԦjS|DE)LLdP5d S(j9vBk% 0xT6p}%Tg: EY1,HLm?Bm\L­gv>fMӟ[<,+#ʏcnGNeȚ!kQZ s_`)1=hEar)G~]+HY,G:jNFEEn3 ZMk?*{bb)W~ V lL{l<TWc .)uW0pJ}O=pwWݔM'7u0uPf_Fo!=bXOrX滅YԳ'-_c,kMskBZU&ak:Wv4~3fgKnj9\?yaI5YIJX 9vB;q8Y:m϶yf;Ի+h ]9',nFU\$DzЏF )dR1\J89ZlQ/'GaVQm!QTh= Åt~ȋp^87 - 3Z}~ȓE. /wc/PQ8.jMEmb'U3^:7m*y߁)<C)E瓰 &YNSAOEP9|ey&djb^Ќ^@! .8 TNN8rj:!&tg<` gI' צ/PXUŜ,3D@ބ0tFv\R.Wy^ PFqfN0c88GM S(6XGyvO4f UՑ"`jL9 x.|FI!4r`IQjLs%f|& x VrA Y\(Žq\g\NCm40?N 態ߩ9PWsa3KqIi#u@ȈUǟ`GivHUSE! &Am2GX aT3XR[>Qo-F;?"=QhKGj΃͜^M!"9>Au r|V2*Cd3{I(@05Q-CzZ%XosO8 .Dwhl-!X 촜jRl},x}O3azL s$XU#tVpgA؏C'w/m3$TC&h#i9U$ůUeTN*S4MyL*f֢V}k"oА?`6U]zX,}җsq@jR 蓺N+w.#D*B#GV֜ƻoXX'f kJC:5>`Z/R&zRxr㢚+1*ܱ&!rsZA, ķV>]UvvF#4gsÝܕܭ\3g\Fv!*E<Cj 9T'ߔ`O~_3$6>mj=ҩ!GϞf#)p|l.q2í~muy/?։WMSӓڛch>zf;|e PqttgGziUM ɺ_E1Ӟ~f6bوaϭG Z3,dm@%_~ Upv>m'=jcu\ IDAT]|=-["e" bil@n0Tkvo?y[?xV/̻E,jT+S0xv=UN+xe'Q_Phhh6SԄ*r12*+ |PKx(V[m[a8Z4b''XW/ftlmg)jg ,Ug~ܴ>,I*`&R E،?WGojzXTTE(j~YoE"6U2j꫊i|§6B@=5R6tt b^XM-AP_F)&P*hÖpM96Ty vE0 3CwڪWs *%(‚ߔ)/ˎؙ .CN|x A G]X"rT<(0w禐 MT|an/D#EʣF#n\0BV̧t155@>2Zs٫ ]b8j]Tʣyxy +qg.4\M pVP 0RF)s0-T]h"\6ȃXל#*8D f(<Mtq~.`Jb-.:(|jse.E{1#PI9g YAJD %[yram!|j8egWBcUS z@]J!vJ^ v^rXyU*?m?EN CAAJBp0'AME:7Qwf?M_$~0-Zɦ^,ۄ ^I":`LF!2ɘF_cU7UYi-p&[oBDo_>m~߬tx?D_Z<XZzK~>[l^$qȳfozW2Ac~ʦE5Rl oyJ={pڣ-Ń]~QyoP8Av@3Z&.O7~T(hwm7aX(2hf1h\GSysPn0Z͂uLXo=Ww zhiTؤxjb̶,.Sq6'|hD.Y/6YɞI ^ٖ_{,0̜j 9S!4ٞC7WBW1leE }̜*{jjڔ$/8sgB Ywil+b~F~z%Z 6<,X m9ʶDbسrk7*ql cGW?I<eԟ8*䎰wvus47Է,[靵+#k$mgj~@pI%B#~ARί:CeU "V?ʭR(T)qwPu esjU=Y5E30R/)߂|n y0X#l3XP4jN30t|  b},.1>Z*s Cp.$x/֥:ZkU|OJCM w8A!fCHOj51l-H6AI_?8DU\1TX6檓*3;.!8NEmi1~^ 'ZXRS\Kh8"4{a<+wHA[!d5_^6q\zS->hamMZ6J9oF|vg?+!skSSETLg*joqw [ݼAwB-g+rcҐOԳIr/=/ yR/ڇF#{)'g8kZ8QfNĹ_孧o\*!@TnpPh w[6>؞+f'NbȹXb~Q68EŠ8#F8ZQ#ǍPF~1˱f?)eAkyK&Y@8~CxMIKx*' [~յr˶)hU}?NӾCA ;xyԭP@UP_c޴LP1[,yM_|ٖxWGo`z3X2r&-qb<U )l O`TG;᡼ .shå 3Op^p4Z Hzpȗ` Q;<)pd|> +"t Dr%G˰"UU\+<ܲB)bE# NjV zȣ7x*eԒu F]8S0U =Mv̇EP;cbw8]SY=\C\Kb6bh ?EhdU&Rf&+V hcrAQ4Y(mjg64/z#~Eiq1˵,7_E*\&Lb"֚. 2Wa3k*Mk nԞL%HU6K{\"CH,?­O'֛|uŠ9:΅N+<Ǫ)FqrU: C_́"]T0mk9h¶C N|f6/O_ K>G=@ o jz`W|+~}f+:T|_6iܪiS Z5r];"2#jQ9zkj[~VG|ky+ݍyl̻EFD{~:`x7;sLHnr-)k*[=CYC4obJP&+q;ϱֹ3#&-u~EkLP[PR; S#:nN̍ kuD{s{s[=C=ixʫP_҈qBKh9El!Vƶjcx4&T0??]ԋEd&[Qb<=T3l:m9hm;o4D)|xۿ#}.}lO.@]6ɕߐ]h7"|HȇE!%`{\  Qq[ZD^vh sa:)B],k©X|u'4|v:X #)7xx"$_j'$a# &ae81^PmC͂p8zq%\E/iLKe`EIQ*HP2Xun "`1 \Fh m]0Gh%8dWpVͧJUq{p=Cw~)'0 90Bs\o"9M ؘc8Ibk%<rlR;/br3PȾʦ>J :֓e> QPj0;Ty NaTKC 듵Oj87iw7e+b91(Jk~*5J#F@jxD .m1)T!TCۈQf/kcRrP%|_MQr3lĖG?m} Ce|ZSlH47m* MUS%v)4`%&C ;M4`!Ktb78|YԈl3ުզiN|kl~A@ y j|©^r CR)jDddL6& VȏfG>íu( 'C% l,șx8 Ǎx >{ )V9eu+ 鵂*zbHdUL5O6,'8m7ԑc +ӾBkl~6"7 '?*ʓR[UATmE&/*3Xw\FJ,On¡7Wa*PT_ǰRD,,\s葶j.Pd &;UW5W_O xQմR{'o{mz AQ=W%.ӼZmFpJa{C'0.c4Ԏc Ƒh<:b*7SpZ[DaŨ&86+ o,=8y]Jh֛ •Mj gZOa{2Ӣ.U6A 䄑kHb[1 3H'˩q'p3tIԇGpgApK3?R8,stvyX86'ƣw- ,6KŻ:qNz\zZSclig&fi7]^{61Kxm=YzBZ*E>%Zj*|5#eoJ,QPjekO<]dCȃ-V"ˋ, se`˫o]/W8[3{Nv[CcRڐ$-ʯ<"{l9)[K@_de_[3n)J < .M־D~m-Me}tvq4P#scE>3-';w5RpJU>17*k͇-Pu'%O*4Q±*k,!Q:e4XœxO6'kȾAba"W+lӗB̀o)؎#ף]wLM'F)I^m2Ic.o M|x?'V˰acOah6vśW9{`=p<|m#U":_é}N7\sw E7m+jwix*'%O\\~%--:mb5S]%P$%ft]|3v7v$ˌ6s }7:.zP#k\;$>J|%)3".r?.^.VX%!<ƙW=Î8L4n\ |./S_,a!'DЂ'qj qE;UY8o xFpv@+m65ն/RlȣG'5?67]I&R/r{RVjgE۸rݜ#x_YG=O3q6VK/@''J dmeХm^Uۂ/}p%ԁ:݅t,p?r LfoTX Y0K41 aPgxGXU_>sWx5Uvu6ju(<\Wf2?G^)[,Żp PjT_Dڋ8_9Ė e3/Y*Ƈ"^CV5; 8,8 Xci<&'V.x6xt_:xQ냓 l,X`ϡ'SSӖ/z4^Pcyy؊pv? .ș&$fr)x/} li5dzlhjZ*g@fODBphlwhx#v; u72k8Z,;lKsC ̭㢊`L͓kݸ.!+su bQaEBĊV)e뽐bSfMLDŏ)Pm Zk̯l۶]f۶mv76^ԩ_3z_eK^Hp1L<,qA1wQ9N-bgLF㖣Oxc^ #j" H1,GW1&Z1Z/R,S3m0A>Lq |Du*v*@q5oXC8 wbQ;h rj:dT/* 8 5 AjxΥ4/.ԓReݙkȯ*%<)TAGN`7ag xSr`rib^m)M0.\`r |pia.!߱ɝeaiU@gnMx^XWJ΃`iD(8ҨKXkC=\yF̜Z,{妥pQ]삏\Ө6rSc!L6PNIFshP'zɓjXtG ].=z#GT GX|΁DԿp#G'Q+c+GɉrZ0u&@#){*]dۃq(]DNOε'v~as?\ljZ@p 4(!X\/9NqWb0.̯%dJ8iuE`eRkg'#ffjj9r&P7p_x#FuMggX2|Lˬ)#WV_1=XY~vEMYDmNN3 ݥ2wJm`~?S.F@Akji!k^"!*H55(tШez.W-ku𞶿_'o%.Ogf"Ҝn3&oczyoSl%Z+%Xlt럀3%ڗF JΡ&W*-R4kX1loXi| 'sZY|1pl1I3!M^`$Nl}:gzN:Zr0C > jU[i&r.N⦔ ëO4lb#07$H1`.`Ô:hZ<3H0Pa|¢V*#t8hiCj@xX P+h <&ASxTFA= uPXU@bl*2TADSX4:Q"\P.i K J.lpL}9ZvnhKua,lPK ƜwOZO0 pv|5A&\žb.|Mkr'\EV*uaݙRc-oϠ؟ cxc8y4̅v4 O+HÛ8 :IEPoa&?AV%*-jr(FE,` ]L@9xxU/0&9Ssg3<+fgvgV.gYgerv[ĸs͢Z6a n"Q:=N$B4 Lr2rM#93*w %4I@<;1)s^ێsYe^ y^u,h@/~<%aZ1 LbAK>VIԔ*(lIMuɽqcx e\ۍ0GHc{B5  Eհ5\65QGJ'>RIW-?6v6m|hK+ŦUxM8pxgl&A-JTq2Ff/s8pl6Igއ&֕Ms* 9n-\)Sk7AvSJtTǹlIxeA(4Jy B<"j05P3daF̈-MܐZǁ| πL< 9ni|"  N|M? ua7ߖO|VQ! 7%A>faSnZL.|pn`Wyމ*^=v@9`Wh}๺p`?۹ֶ\YN .J{5|R<-^D۠P!u!2䫪0J'*S=9Ο7ŗ!V=9ǙoS]l~"aOsYTNuf`!3% |AGjB)oOߋfY}XF۸~xOht!)T^z6_SpT A3d7(EgU1PE[ZEII&]r_$vp_g`%-*4V'Qa9۲C!(1MT*P>ۋj*sS]q6 #ДF_p]R8[X(G'](pbWR; +R],?Od,7v.Exax#G=%JrDԖhǑb#Bj ("Qdp϶?*UOG cNiJZZOvmo!.G6㸱]7+˪żg\J̈́ɢQ >@< E.=Rx9UC`%Y9E ש_Όn<%3pp<+a]f7&dQTýxfͩ= c &E2Q~Qi!F Շ_eS) I\2/)g܂ ?/Tg\Op6Sƪc]LdopU)1;4s'ƒ`O{9ꛨ>ޣ9X)LU!X~`"?Ө1d03A!^hIkTR8y!vP ЅOU 5FZ}LWE?͎S1#iG1p9 vmV8/Xwc؏Y8! x cS(znFi"4 HJ-<rS|=B;A[D8m=RIYC{ v-\WTGO#r ?d naljxYm{KoЎ؏#%;j.΁)V/ܷ'ewʁ@L`~\ȵ}/]tiZ7$W>}.wOrf|Q[饣wALTy6HIY%k{O8ӎUM/}ύ%}该?15*6؄3Kfj9rE6#)GwHr w.ހ6؄kp%`?6'`W,o4fQ6;QVϼbe4d6zڑ cEw]eyRcaTJLܦaGrOYTsB[9 ﭛ^ pC4UF٦8 *~TrEUUGjڣT-z 1FRzk>Νэ/t]s*|QAOOjq{6<*)cDQ[Δ;s\.GͮpSXҌL}-wY`%9/<|J]G;s5/lNFO5]>ƏxOEVrJ@.r9~+93Ԫ$@#s"Z\3WtmtY~O|Xi[e{!I9YA8S(zkb4 6Ɛ.&ܡ m^KD"vOfΧ"{^m2ю~ tTE\^,{xu7\G'=N0(rɚI} S-,([]\! ۈifxX#H;7ڠH IDAT},䫯M7:s&+ٙ>gXǭ_RU&`ᔖv) פg?W w}}V?٣؊sfW]*N.Qֲ׾d W 8 s%EYq+Or)YV`lDE0 q,3hSY3qX jP-+iGVW cgFDehu5zCj[ 2ALKD}#^Ȩa _@ L_k{sJf b9٨jD(ҧD9n;41mOc5j_AmzB#D3I@v+ۗB8DMfTz.>Z`Y6_DNW)ټ5~S)xnu&مD' muCh.ҋ%}QC[euaәk*9$,b歜O-b.VSa< +q0?V{@8+ PlBQ2pn3q /p1ԛO@?g_ASaGt_A ֆL,Is*x78g3_Pw=P2OQr@vB88>~_GB fV:ZKQ9ъrs%b,6X[ Y9 oq_*+8oc ulBPwF>ڳ&וez~vTP}eބ_k59 -\<7^Be' " )DjeT̢j H(ǩ3UTM8 }U-81mR@st8*9SQOTEO2f -.&gD[gj?Z ;xh \MX7䳆B]+W8@$ 743}_cN<ԶFS7"E gb͔Y## g@ +}jƣ캪cփEj9_q>oZ6%P?7se&ԥ76ى0k?\r>!u-[Ѫ}ڑAP *k\Ț eG7M\Y O!!C򵑤Q'D9[WU1"LEv (qpfq9ƈS~^+uvA,caZdgPTh ھ/W5*Sy~FVjIZiٽiA-MqxKbJ%H|wJ@an X9h*vz9ʨr[Q؂e ,8 :Xo saMW>>uG_،@[0T:m0V@3 9*pr|O}TܜBwXz]p[^qt%Yy+];&P7C^N 4R TƓxŭ0RMݘ5|kg3{ VHMi~ ͌pC'Uk54+ EUO8ֈO 0\*[ XN'*E x3jANUC*pzqd8K9KDD#.43riK?a-{PZj-1RU?Np^ }*Rjn|v:;]믙+C3+a.e&Z[i`or L {㕳#V b],.e9biur/0w"bhDq(?\I\kk/`]j᭪"7Wp;ZY(A+4CF$noAy1?zZk_N_]Xh#%W]7 69ɏO_wkV#sh䭈m#[qٛHsJgKyW?n|ثOv* n90|_S{dU۲m={^b1h_\o3mg4#@W#W:xoΝzD25кaLq1#\=f+OX814E둡`fSj)'Bɢ?u,?B_WG G>/Ǔ'cK_g&l |9kZ9.^:R9zV1`׵K!Cg.p'v#i8k}02=b>+U0cxGq[srՔZ FKkP+8#0bgUږ*)F#uΆgS94MԆ&9jvoslk^ o)O\G]#yxamazm1Yn/\M*ynN݌2|OTȭG,\\Zf.)4[liUTtV*:yBêCG ;PȠ5PIq*@U"Gf99N()%Q{Oe,v_s-c߲*u/CRp/@b!W\ +pNP F(L1k1TRP@-T(3앰:9x^a7q2~1x+kW|kD -7,pN(qWxL\fb(-`m`>hi=itc~`J.F+ø<lHʴjS5pS Y>UБʪf x-px™$"K`u ذwRΫFXe36Q̞=95TpS)po1VV7js\VsIF.-Z:(lFn=x6>8y2#9U`4fEȯ*zGo0w 63!$B[겵:kN1zy W\!`lv㥼 CV9^{vߔho֝[Սnn6Zam1Fe ܹ»ZY{&ٮMw,iel GD&O },K{pqTQ^> smJoqs? }at]?bytgrM{LE(s%*k &B L=jO|F)v-:;fgKC-̂vi<=??d @FvcޒdwPa\DYk?kc#jtC2!AA>z.k 0:`ӬѲlvVVԏ' #c1|n= .m#qb&"yxsBc c;^{]VY_xdpje@Em 13r.l'?AsBoYr#_xg`%~\B&`6<mh5y)´)G̀q* ߈pWb#"G> , Nj,P>/!p.F~Uoaw jb3=1gPBZ汪Nc=?Uc=5M| 0ڻ0?v@%_2uJbw/d:`t:>C`jmAKuPJ˚z_z8=ӉH|ۯN@ݴxb*q#4o| &8Ľ9n < |[1_l\Ђr5\G+0g Uv-~Gg\˨2Fgq0db5oB~X؋pH=6//Xn/yV^z]o̯g$[`C$s~A;g6Gj!Y4-8 %6<# zpGUuDIQ Mnc3\]9׭5/۶*.?Z;r V-㤋BPXCv膋#)BQ-O9GqZٖ9tΡ"' Cp %G} X\AЍz^! 2rz5ggӦ}2@Iܬ^S < ʡ:vq6m-d 3ڛs|*1`4N,㨖[ ݠ#4  JK1R+I[Q01Mrf(N/⩊ܫ.b]v#%wYq=tR]+hTPm+ i*FyEI|Z=k>Ni ¶i+TMrTtAԤ|.\Cc ?@MنՖ˪>ʉnf Ȯ, ?a* o[THJ߱Z9L{.F@_Lq_LE;E^h ~\ ag1iE _U^<]`B"ɇ-kS۰2\"։#Qu=޹zaUU<Z\Nx㩰C ȋM!B>o޲)6n0`" ЇsiUbƫa/gX0qM͝Us䦢09,O0M?+!Ji.Y4^ 7&L¥Wal\mNL'.vwSQqz(@# EV.KT*DA{yK3_d3iMeO iocEh-y^y>K][ކܕck\co2$$yV_L#rK҄ę>4LYޛ=C_Нm?ҶIn8&GD6X`6g;—ۼ$z #pVN] eM)nbnjGj ǝfOc:an OG ܛ'D;P"꫷`wJ_kJrZb`V1`99LԟZdN[u+sЬeuH=sǔ(_`e1'OX\ޕ0L_ljF.mD8>Sb~jhf2;m4^Sb@ߐ8:c[lEa J.Eɔp,JLG)欒q? qP֪) Zzc-rɽXrOX=1.*K1J\¡"pN$;X cE)OEXZs9}Sܳ58h(,uVwfu{;xw>,')%fNK[(@xS.9wi e(BːpC0*TZpe9+W&'ۂ!0Gt[M$xE49 aP:8Vv &Uø *a#u!SuO`N@cǘe_Aø=tZ;| IDAT:VTUy(:Y?Ո~t : zSD/ sݏҫpm~(~zo!Yp8 9JM<rZS*c 9Xy ,;]> 4d[ƿp3MZ 47b~ L|Ycgk3NZmM(P+DѨ5ͣ("85tA XbS{qq`8 5qVr~TV6ŽpF4T<"&x^b;iCxz9tsĞuSKbKkov/H~ޓ[.F?ݣ'b-EB!n3Ej%NT6u5著Rg( k ^SyULBؗ iݠXDkO؋hH*<?SOsp,خX71+%La_UsA e<蜠/ON2DAs r$NVi~.S@m]/u@<3g69qBݖIqTW 3h%=/UE"y:7,Q!`Kł|uJ6Ԅɉ4ǻ2\V57+yS8 U2F㕣wVv-uڑf8Y8͙ASVzG~h'C>cܓ3apjnW]e}f9dVP^˼[mհj&YBh4lW視;M&wq{﮳;B<6-U (/h 8I65Yhe<*QG H֒_K* P'b+ނԙ@>~L28U8Xu,` 5.C6yh>GJb!UVg70dGmunx'=1h835gJnV#eNqI=D',aWSMԂ' \GxD$1(8+ F4 l ԃԖ$. cu8+kKأ.Hy _vp\k|?p/x&pJPba q _ʏa>y. TGE0Z5)EpyJLF~kLZ|NewPgW#M,0{*lg3VW+NpBxG>-D11K-X D`/X b3-<+ !+`8XN!4y^08!#6x,"@FmV d])v2S p&N2~x Yʹ(X-o8Js={xS/y4bqWJ 1e̕Ib'Z<_y7.Uϻ!ΰ{M;fNocv&JvzN3:.;]h]ȄÝOL'UOTCaw xW-],,2c,]s^DzV Wvg*QFs}Ԋ@L{Bu8p4p Q/e(7.2XETOnom b;,Gg A : (#ڪ*]?%9 03;u& P#{ZeVO#^ڴģ+&}\cWS79mVU%D+oSzgmL&Ȩ1=͹![GٙpϺJs'Qu'x[{d)#b$X+CTӍl2Վ~sҳyBжkx`u1;OcUA{%"0Ӹgi:%N|}\;eGakz^Zx\Ao!n&G8;gRM%rnxA|/3qyG 9O$jCHswvUE{/OԕR1 &qhy8XU4k>鸖2fC51ߊ̸QhdzKc B1KxC t0;M$?*~BN<؁aW1mX2b hTQW~,%C?!{:~$,um.es ^h‰TX]ǵ_b#/pW b"{QdSesO4cQոKwg VyC619NKK ,0J|YVF-sW>2 bxᓃMVIښ @؎3SbSŎ;@G+'~=WtKk*hoiTޗ̪f\/[ ]ˤp2h9zaY̬)RbQh%vd,(*xaBZ#u/tl*1ը-b`tʜ+,sPLr mZ+)5~?SzN'o+'u!$: g z> 9X*{:f?| !H{'pʼn!fc'Fqh|b.#69s1x5rXp!Q!ik1V3ZBj5a\^mļ*eqP4bG+8Ynox܇"\\;gyW;*s 6` q` -{Umy"WTh~ûa5 ?oh@wB3ܑ;6ўa9/x+mC<0Y !PZ},O8Q$ \'0A9Q+ f p6cq N$ x8􇋘c$f9;7`UE`Op Qf8>qT0Fh=d B)'cn Ϩּ6eHV0W|p|!F`mŸ1fmVHȤt8/.|M HXKa>H9IMQbrxA]!]b%Xl'RhQ\S &sz#&x: .WIm9mx+NJ s CN ?*̉xFbwQ xu"|N(PreJ!pSȨER[(} E yBfky]3^<]Ak9#[U7~tLlTUh-1'ž|wSKg)%3wD߅yEKy?MOh?%=wYz7_HW7Xj/e2oLqYmo+>:hݘ9V|%N⋈I"} 5-OrYzW3MvtN`vqA:Htŝ8qhj\F}>l( yBFfVI{?ULv|;&(yF).V?o3QIOkFzH;=hbgVg-Uurq[[} 5®d+'$rqYE fM8"[rvQR/V n*8&oVayMk⪂G`9;Hݒ=V&8g5#y.e3Q 9ϜQTeq#\r#,KZ9R]i߽MĈQrNf?\1 ntu JxϷm0tp<\ AdiNcSSK$ݸrUTuBQ_cznp:Fp[X `,_>'E;PpSi'tS42ε8&B_)RwohZR׸%vu\|Еs8-M,s0 @I~!_kp/Tf+op{("'sFpiE;lߔ`+.s(RW3Tnx4ѠYhj.<\%Cu0q1_܀:X_b.3Jqrji\gb2A%瓼AK3E_B!J8@ X|7!K@QŨO\b3>}xX I8[GPbS/:\PSSॸFU0P.Ea.Hi9-⪼G{膟_JxCE8P3KZQ aa;W ˈ܋;<O4;K˦jŖ}NϪ- U/bu5} N YV[W{蟳 Y&ic$UpZ Q`WkUW)ѩ9R$˓\?'vLT/;pL Pөɐ匧)DFJv]de4A,Oi5q?!XQM Wh+x\M_(gj8<< ;m< Rd`\l}WK8 ݵplb 긖=run}}i+xDK?bu?㣌:`Pj-뾅͵ pRN@ QXxSq5*szL=x%UES$ӇS \t?S7Uiaxt!\T |p_c/݉wZTnIK_(r9M4sM͙HѴ@(% UdI>܄p!EٶzpVsᩧ?Yj ;;a#UY5]Z|RnW0"CbK'hXZO̎?8 qfk$J K9B';BwoR0#VR'ذVYU}jfodcr%GʒƯ萘w!OGUu>i?gL uzʤJ-J:_җikeWWU] `W)`AľZ)*N Uqg}"f4|Y\8b]y?g7TB~yr!tNQ^h9L)b9$:T@sL*?a ް{P jrӸ V_YD`•ܘ%&& a4@Cө ͣg#Nڊ edZз#zx仯:;Tr_U v諬V$OHP!n~=~͡Z{"{(YЏdNZ#v%bCUBNӫySDiXn ^D.'eL" Pm<'tyA&+$ʑܶyN0^`™ MA8SyygK IDATfb!qH6Z)VIQujFy9Hp;roI55t|UL9Gw=1_ԉ֡R!Z]kƵ2 jl6ITfUOکHWk#5IK^kM- bH^V$_ Eb>NLX'fHl[ϧAc-́rG wp6hDE|apw #;`4\tZR=8EEѢ"3TJL\JM(Up QNR%DnI/i6\ YG)7a=8]k{Џ?6M$e;<ZJ|"n|n7A .sAK3aRWkr(,A-XK^81 gyq7Sxȯ Y̙8PPUnUVw]| 4 u"˼ӉSPyɽa <0g1܇$A}|QU0onģMPx[p.9:|7 * /Ǎ~PgK zDgaI=xO9DLW}9Z{KE.Ghĝ1c7OSXu(-`Q~ IO[ `(b&VX|LS1D7pQ[}!t-hLr˸!oި;xA p8+JmZo_WS [_;Z9u}VijhPMGaX F@NS6w@.sRZ͗ϼ=vXbU:Q~ֲ뗵.e;NLMhZh@$-m]f&uV 9f1S' -?فuoU&X>ʣq= g) >ωBpkII{8FSs֩gIщ*&v527Q[T>ZyPyIhJi35YpEW;oarj3<_mi 5)c7"+x|8vQNw~I=݈;|N 4U WvFCe8BYeC哕6+yk!ѡrxeljU_7K!?}oPmbC`*/vhY|aBܷ"vuo_~M*fUsf`5h 4KZ' :>Ue8S錿dO4&Ϡy~[C+]@v>3#JZbL6~i:#x0/ERэ:J7vQyXrsbPYa|9B; V_:֦k^{DP{t7rhKn PϪ'Q[(`6yF%7ޱ휒C#X. 󝚜r>OE]))G zj&ŏ8 7翱pR${ q-WYT4,ݟ(CU!~Ky MpA<Rki3Z NL4(~U8POIB ׈t_PF!è>_b\x^tubpmx[?Le|GS1UT^e4MĉbX91x M" KIj)/Ӓ%v T@J]:Їr=qc+VJS _F}$X8{GuYGe])r&:#Po}/諙3m*Zm([=uZmִ@3S+i۬̃Xd%[\fԈO^`=ךf^VD "dv4⸳ʳHpM8&N~OgQb=b7Ex8$?ş0o%0X5Anrpf߹8VAۢk{~I_yհSW bTӚ\\׹,)dFyտ}Z?rTթ'Lw%$'yg' $j8do ؜c9Lm VjT8[3\}MZVGwZh/d.G^*+Y9 v>k9]h9|`3DJ´[;G[`Pݫ`rfe{^h"Ĺj=59Xou$^p]8^dgabci ؀{k D08h6ť4 d }O:.870>sZ1 =P,[rY,*b^bf ^Z2,VɃ<j2FG0>]PNN 9kb8OlaNq \91/6n+oZܖz7z }Jڂ8[-nq-()@q#za ~PN>ŷV|6F_pcⵐR$ 60R+OHO91vC ?=*IqG>}Jg)P6 @(c10ǝzЙ+uɥZPE%Uͩ8<,WT k瓖.{ЖzC“a2l. #C?%Z@=^pjX YSFn?̈%i"_i[eInϕ&A]t_ l;:`WϤ3Wx&buV}`8ƕu_5 d:Vq""{oQl|Fknؤn+әdUM O/\}*Wt'cs/KߐY6Đ%{ٱ,+Q8gF&NR'v'QRʄxJf!*a}C;~me5L5 .p8ue~{E8-nFR5|-J'_6+ZuaPq=ԵA[0KGmF'ْ .p6Ѱi43p: ʢEjFٜx2`xݏW]Uey'h?Ęh;2X yi=qb6xrXkhWj{2ۍuRu,Q@ݷaӴmm۶vmmv6Z UOv; ̨ o͹FgXz~BseoZr|bfU9l:!Z) ؇]BO.-uQ1b"tR$ Y-ci{A_QEc5}UMau[⫤ "Dz3DX,qx | TH< 2U@Y@ߣxa5lJ*6m6\š)#Vş8 J_opWYI ҿU0GR$eӢly u1Kqμ)OYlf.+5JB IYΏVe[}q=nZպ~Om QFμ`t4&<9h5 =|SEVY KyʡvힾvNop4?i\^ [Dmg '8RNOm4DCcj ! X(&}8ֶNH1RiLW#00d X l[:jK!XC~-' "\\S|cӎrȉLQ"d ~qp޲45ڋ*:P(Qo2&-6RO5" {BSnۼoIsh.zD#e/TmݵAo&0Zs2ؠqW O'T\44ӭ޹T_L?s2 |{ZSɷT2c(UC7k5bH?]KpskO |W7.5JJ輛 9|ȶ!0 x)su-TJ|)? QܢA{!Xi =p/5" /K~h 'f?"EҤ#>N豑bȪOeٖrYa0.z/;!J !_h'VBPcԼxMd6!JQ0&.0V9ܢ,`Y /EIV c rby(zʜĎC0}jJ  /q5F;BAX/2<_Ο2VG'}a>"g9o訌r,o8F5d-qA pSJ8h-F݆1| ~bTVWE+؉6w|c 륵OĝbNiIq;gWa13,Kh$p3X"JJҏMSk/aZNA!{ ^9Yoշ[(+UBmO:?%pzJރl9 J X/8رW?f }ms}7!PU;IA%w2X  i YJ% ,EWesY ~ |T:lR/l}rAnV(pVC2M&VIrW:ma9RHxaØvPi 1̀% ?(Ҕ:{.,|Zb`4Nd;m;`?#>zkȁa?ZЎ^g&By:/ kUdNX#F0ްA<0Zi4C/Y%?QP>x#Ȍ %2h;lQ3 q ^`-2ۧ,0# nxzp "yK(9GXV<+SZ0XQ4@l7%ONaAi!h^R)lmvXmc yO#kH 2h*c|VDO_hoO^ΔR.$*iՕz/.g R8VtԫkԮ `x-Y.ΟZ+?Cnq7n@;ouf^K;pF ƒ)UTSMo(:n>,ea\fW);նj/ҾQ7yB88u,JaUn-|G1 J`> ,2Ց|6'k|#Ӳ&s';7:vDl󵷌TW6MD& |I3$#e;Mi!/ld0</{.9Ki?l_7xV5bx 1Yv,Hkj&_#Wp[h<%X8COV\%6k_5)x_cM_;ˏ}"S׿(XL@0ޒOa7(Vgc!Y=4`}l2v6r;/Sx?ҏS Ws)m#e4&ZqpGj}Mq=Jc3Qn0caul-hgsN%z.z{y V<{ Bhe2]鏵a蟒7/҇3&<̆e8g)bKƙF^ U| /mhTZ&WˆV=g;p.4PS/l2< ')+:ؤl #(I: ;)F6Ò0-9 %,el8X)B6'2Vvx<~Vte.a.zE_E`;(Ca2+*!{ȯ8eou/Lv:e _7݄7V5g YUٓ*娘m™ŬЈZ['/cSβJ:H JGhT;pmfq MX -gB0.V]`8k8vV6GbaxVEyހ RCv m5C/ym|bV[^E| mD,J!oPqZ,Z%CījJ6wVc痾"n$c.gnri]%T)6J}"{'ZK\a4O `Y]h*xBQ^ rԞ|zj(v=(0S`C)gbFcQ IN^7tG(aV]Kr ^'n+ V/0_<|,ܢt(Fe!눨K.@ڋr31nn `v ~Cq4?`~+$M)3M"VE ;ga"/o>ao]cTb]e]xc0\a+YRmل.PGN|ϲL E(/\4Dh ij=Q~p<?4:)dMa[6 @@g "r'*P*od3}#R!,t@ ͼ~r//('m;BHSb}~.ӿa!ʹ_mz` !1jDGOmw9oZzt9i4Wkn82E3J%R:C֚ # <.t+ zzxZ? ?-x7b> *wX %GCbl^ŎI| ئu洂-2tI{q*bt]%EOoGbwKj4;zPuoKC QXwFh3Y$ r|sjv9_ҙ&ybW!CTKO H)T5$[V56ƧpnI3}015A= (h[7ndTjg|lNMOW:Pp-/n WL)qfJ}B[ޤ_𛼱EhD }(͓TWǬI Wl3 Yq9ԀOD{9`$~(oxY\lt1?7HITuvlHh-[wCBY>&} lO?jA{2o]ۡG59 #Ym2P'T;S{Os65ŏC%ggӬ:ԛQ*3y2u(cQ,lCgU7EKSyXl8kE1c [ ,z@+ ZMQ雔Nj(Ͽ0L&GfI;&WD[2axT6`'( }vu;TC|[JP&ghvQJKEO^[Hz M+&f̋%vB0"p*xp+"`&ɞp JC%|h 4.wWA^FQ 'fXn)4 ϩita&v@1pЄ~kew |S 2Tq&lXl5EQZM c(>|drHLoC+X_!H۩0Dan=-T{<\$gH29S}9}Ǔ a,q  nXցOPjTxS!*,D GS!@mm `ʲ0ߨ,) ˁȕ|*Z +1]•ڲS%lf[K݊"dOVQ-rȪ.l0>()؛/|_"qEB {%U UnvJ `XYxg![ ~PǠXB;QAm2KӵXmG#ܧR'}hotJJ'SζA; vw5CAIOo}멬EE?$^M;]?_ٸ!ukjKpr%or;Ա0M+ط="ux\ػ^'.I~V7oJ\ Y13Uݯ(I{{' ~g.sO9¹[[Fl43Uڟkd^l q >iջ]P?^·)TR3ZyS)l!E$Ddx:h%WɽΩGxM0bVّ-kgP{`>mnK#QliU{hս!KNo0Rm%B'fsjvڙcye=nQJyғ||ž23ɲ=U\3h `W|0k[g^+Z=gQ(G* ȸljJӧ%M0#уjp5.3OݮP;WX5Zdz蔒5#"b%~ֳj<-5p{rn sfMa-lF}0Vb1l- |'Ћ~`c?`l(5 e!R X:0w{,r>&#axI9C'/{fA|AxVw ;9ll2/U24 X^W*x/*C̡8qʭNl6Dw!A `q0 xWh+J̴E%f +P !؉0q*nMlRgSG*<-(-ԁ&q0Ftg»y<"`k+=A>H S@S[ x;*(T/)eq ՚ḁ\TRWQ:!,9â4<"#Ͼ\pFa鸖T?֏iJ^.HNoG.Zhekd IDATN*\cA8o_\3GΙjqH7b+"SA{g ~$>!{?sWoor+qv5Vor1PVGDD?"e #{C*?0G$Q q*z'R?6>&klC?VqܙC+a/}%G^\MKߠM ^+X*yN;cũ;l-Gr+Y] A{Q]ǙoӝJrai'Cftٗf n zo\g-hL2Zs5ޞ<*c@au+W GdQ *xQ>{DVK0?[UpˬPD̂Uޗ+M< ZA6H)us^\*Gt`7zЛAs^' &Nxj%7msԣhqD?R(}yMusGBW͞JcWQCR b}"JօfbC)֔b)U^kzɆ[鷿w͔YM6]gխ,F6"fح4*{ܮD&SkPv#qG+˞)Wk>A f$cY.w:_dPԳI-3ޝxxK rjc[!gupCMs>QcPϴ^vU5yֈⱙ.X/Q~V?~cQ&D`5yH:f_`_[l`Kͩ pDmm]A<*$a3gjI<V\>b.Q7Nw-3'r!X :ڟk]G/2)NJpMrxŚ<;B9sz֤N%8:*3.O/l&{ʋ4=/c}JrڋkaVkd624RMNg S-լF+DZ mvT:b7t -}'_KY9OvH ':64G3A +8+a<̃ j_"BQueIP#T)C>^jtf`+NcW ƃV \B m,*yy,@e\; 3#G) Pb" g*@k >s:s`iU5ؖd?%sQ'TôJ& 4:-O+ Aq6e^9%O+#HO\u[A'ZȜBW1X[lu5<dW3SI<>\sܕV=T+]CW@m+鑾 si}re4^5O\Fu-Z6Jpw"ŭSݥS\};wHB dɝ< ;.E4.`4ul"lTh0  0Xa{ eŕ +\*ϩ(#Xӄ[Ha;vNxQ zS8ugi=ij\TB&N@pנ.#2w8.~a`0T,, s ap !' MgSY$! b'(O/W"w( |&;i6Xtv8@i @6Q[v/8Ohbnֆ2l@$bgC!Ll sƊpOT }x G@";Зlώ(b2A}t;֐JK=6 `#nJK>bHdfLXQ y4 i4pT<ƪ*V_Z44IU"玘!_i|Ikvyf3|o|x1Ql3ETn\~QWbgapйC #1NTxcǩʿ͖oRQ휶Q-+o7R`^C *vC=[jLޞu>/kO >8"'ܛ?OXa=yL6'ԑr˱4o"gťV@Q˰X~G. +"FUӮ3&P;7p|m|頑!_m׊9'Im&]>Q4fJ3+3YC^~R:ۤ}ug%+ox_soUCX6΢h i6EFi me(E)vUpZ[(?V~qQ 0 7%N8+Y]Hj.->hᶲJZ!~J%b8aj-std 6Y뚟]W0HL~1;=Wrq|KkD uc$n6@_"ǬQYcBcݽF5sf*#53goVge`}S{Lcx_i d:IͮLgw]uZx_ ]-L}f}sklzIijU&@fhxP({'`O&<ʘ &&geis|([saxYtBK.~xXGCun^󫣼}\r\f˲#-3 ABZf <΋|tU y<45U']dPl%vL~Ĩ*IsF Yv#:, PKDWVrOAxu:cQ$ j#jt:`}(luL~"X_ 'f7AyrA!l0'?GvHۂ/*uma ?Byӕc2׍_v?<+q۵1G\1cqmy 2㜗r,oh!?Ru9"Be~ӧE͙<a]ձA!UuXT0#B?$SwfHgEFԼޒKi;DGZ~9ҾUKҸTFh,Wc3FȫN)EI}w}L#t#]oJYS!&! ӟ,(kcuWm~Db/ { zɊ9wgC kvM~r(^Tl1zNyW>ζb?D+>YoYh/VhmfhgڍoCerɹu!/-~1(iEP@܃l Ua6W."?Y;nm2^ fe|g_(;j(l( ց4OfQs~ N3(Cdžp[&0w:;L)B|W8VG#G knkK __؟fѓYU5Y1D{Ǭe{L#- 8rHe{g++ [f=acE3'FMD7aiVYCXF `UÆg oGONutߛ0#C_DɲX(sm;l~56Ba]Inai{yHeanB(3jUjYCԪm~Q sʥ5g%;5:r}i\vYCԾ8GIbX-?BgB%Cn_5{|(=_o1fusʣ^ve'ҍPR7~,g_fQp 錳? :J+1ELqUPKklNTʧM_w(c *F1MVkA+"7zy'f6S)E.*`CE2z1m6n<񖲓tޚ %,=ȤJHb̃kq/փXA$d@by1j#/ f1N&H#)Kaa!!N0D"\n$aӨ) yXB!rNRe(T3ݺ,|ч!Z*N b,< 6@L:k̋ MGzhJ.1F ".0X1s" _-4b=tn;˱1 7M.5rX}a:TnBޝFt?Xj%~a ̢>gvb pM(nF0WpfuqvC qM&C7FQiԡîEE$ *㠄́*d[%; ?7=Ms:o6Ҥn$A.(CU5N>UG(&]%\ Q{jiǝx1t*4!P}ibYw3Vx+cVhHsr6l߲ɥ2l*޹ {\vS=\**& [>XչYQ-T[Y!ENpLOVT?6 紘c㉴DZeһgBa]1g#8'3w4y}BD +*=&h> +uz*F1s2wml%h1.+!PjhSR7!?uoݟ+-K|e#b\qBoNόȎ͘*Ef <:c~(Er6@:'S:޳<]ҚFK/6uɥ IDATcoZF#N¶G&{47Nr-~QrH!ؔA=\_`\ԿZ rz}sAC#G` 0Fo F/[$dEۡ;]CGb.O5?}kV-U,Ggͻ]s"ڬR:"-BIm#;a$ B!6 !Xg}]X #1}uxKUm6'gW5L-h)s,Z0_cuоId [H+yjXA}=1#϶bWiXc_voOZ ,~2 EOZ ̆#`q2;.`Y.V?0 SM J# ͊wU>P c Ohpq0> 0M'A0Fp?`!俳Hȉ@7E('4zKLv޺7x:MeD]iޅDkY Q [M萴"YԦR9JSzw`5$b?qT,|V5lE0J̽lT !'0F7_B.>BApB–5 [b9Ǟ`E>P{̴Y<֘k#m؊`Pu1ΉbͰwfu=:R ^7,)sk+5o}c-B/aHk좖|6L±ubI"^2tS\9?Pߊƹ¬qM X_;>d[YA(dT*T-%,)qT"\],\ Xu4O[KADg*gĉ3y?8(s{3[ǔޞk%Lnob M0gȗ"#n#ػ^燰a:l T񺻋zKiG~ZWoG3ޯF/Y%e\_.ɯ Gp^h{f}Q+cz}iܕuyx[\ 6swzJ>:;* $hW2e!tY%H9$ֶH\<w[syg3*en1 :oڭjlRJou0Pg~*&MppAfM̖Ψx3ᕢ^[_?_~_ -6k:Pn+%t(\Fnմv̔jiAu#f666` #fqQ͹3<~mZQ`Q<",MN3gH;}wϩI71̤4R',IP./NHe/ p?4-.o[s,pǺl1u@L/R'yVq)hmJR}Ռ+JS],G2k#1R_vy>CTHOթ q8>TrR)+W6MSzzS2 x.rwh7<`y(ܘsu_R|"y>D;kʠԿ3YV U$gtT;E[(WeԔb`plXWUHf 5ZJ 阣nPƲwGg\fe jOrgPrA^#-J{8'mOyei\P}3r~,vJ?jR_5Za5Z֑DZ M|gM9H < 0=~*[ IVI]>Aϧ)oR<OT]RP+RP@ipr=dp`u~sH+/b(^S,q6S~KW#%pv2ffqاpL_K׭3+|Fn4?;T[R̚d\ J\|:&ex9M4X܂T ni5hXC/Cr9VL7EĎ̡0AosZ#5+¢ _:&s=!?^xd= 0 LH6c!MaM/d!v  gb8ȺcՖ L8aX >#"//Ʒ)\2ҭɢ cGXuh]y?Pe;Sřp+qkjS݋Α9FnnO͝ZݗpC ~J4g>S~WqU_uwS{&8Ոe&+1zrΝaa h]8B}jf,1׬/jAW76F4,4ޜ}Xإ@>λEgVg6D\SW+YV?R"}VwS;xcSV٫h{:aeE}R="ch%mbX]MK\JPZɧ].[ ~@ +P}û\߱1X܀$v{ k*yl l$-NWTC%mn,}"C5Qo¯Z.RJU5N$ t7dMOZ`a?#TZ˕bvȖ{̊rBc~UO{GZ|h%(gPHj$/mXϤn4sia8˾Hi;MEexwъFvE1N4+ͤк3.,v T/۷׵rY!߰)nX `+^PD4쌠mv`2Bq8f^ ؔ=.s&Y\b駙[xO-Ϟ Wg:"rgO8QcEA OP>1\H3~e ` e*sDj@Ζ}D ()c.(%^R82n±6;l3R _K˩8=vj_p:H1x@{4 G8DE#l,dtn<%F5Qze3E_ ,8[U'}&́`5=; 7DV`'~>oh@+ LzT|:.kN`q1K S,4tG E{MiV,h":YϬVGA-YF)3fZ,'4X+7:YZ~7;򬶹NP)x7 ab;en05p'X\V~Tt)R3+5lބ!U#-zeA q };lL<CG-4ˠ]0B!["kD~ ?N,7}rRX𔜇i_X״Odꧼg6x[T%{:Xh{WLK]d+xUbo?p}( GR.GC)z5Ǝf[qu8=KJgmϵd;yqvіKǹJ,Y9ZvPޣmz]j< P G[|k7\"VJ[Q{oc&xg3ga-bgCi<杤io?QYia >羘ǻ$뾫oJe3Kb GZ դfbp =mmcp(fi R)p(b;-.koxNo,HS|"vM̥ lJGϖ<^>?/J,|^Zo9ϱxzdZz['3;{ٙ/ǠȿEwvld챁۾ft138ˋOȑl je@=;삵/I1)-.X) ſ<:{RVW+6dsnn6YԁZ0-<$OIp X$9^ c;g}ǡNI'k+L )ybUG2.l>kB C4B&.z+NP唏bL̳bQs9f~Ҫ˥ˡp:&f?gZAhי z^XLTe*QTD,H$#q#"2# ³RzθP}Zhy^1<<05Y~zٔN؛R5N۔~RS=/v TOZ"Qxu.ٿFٓoΰ.*! X%3)^"뢏5V5~bԤp"X]t!kC:V3ma%ʔA=Dڌ_p&Xsܧ98)ؗJTg`;=cb,9E+:}q"؜}( 8BF3gf:!P\Eަ~/oБ~Q. P A?Khgh9i53%em1kݱ()t *J #->J,(aOX)Ona*{61;&upsEXb=ް2 AeomņZXdJY 0Ԅe3L4ue X2B[T2pϲ5ʼn YUޑZ'#g<5 S;u*A<4h( +h%L`RYIܧTvYT,TC9 b6!"~'Ulkn}<ʅETbDԕK򽬌}& M`S"OG#([ds[7#JsrWgs~DӅL뿕^ߨocbwԙ=v3ؓ.3ʇw:g-e5 'g:ٗ;'c r|*F-Oۡ5Nm%*1?Kd-،>{fQPLwE"Ng_0_G՟MDfC@锵W9VS+f*o(`L`!QOBD̜cxyU~ӜS a!7(E-SL Ífn600&ɲ b6Oq8K|xx4-^R(Pdϯ5/(Oc͢x2[$)$K(eou",2b2iWIrY3Nkf̾'<k&8;!Ho鬦zPnN1@k/b.7?Z}>Ŋz*C㩯"i㸯9E{]ϊIyY}#/e3/=⓱ͬo Ckp2Ou[,b(y_tg0W`s|l5g,7Χ%oo IDAT $dIZ3n@rb)P Hp5h(uS]O?Jpx" "C 8@j=$&c͂9tp6@C?8/Bh`61%(W1E_F7<4Y<;F2DLjIۄ#Y@y'n b:F7B;6oT:)qQ ]0ݷށG4j0̉&V `E2 VɰC,D.ކEN$ 3 ]5( mE-S`<<%<Y´3*Auxmjm< >4Ʈ0DF i9Eo'{*EDR, "1j8d46g=.6(^{ s%en8-a"},69j8{FCuY2 X֗Hc 9t/d]¢ -`S Cu:$F]px(GBmp Xga.R0Θ`Mí,ЯPLa/0J\`xVT+"CDS 8/mKm}c#m{߮[};B1Ŗ#em3!rLlQSŤPvɺ|Ed X3|{LD{[;gz`RφIr9*)PQj3 [*_gbWim3Y_| 5/"w!N%+AԐ7޿,}b އb\2{5s Lowto 5dTnn~[3 eYƬz" =z8unTgi^HfC_P5=Ug7lbXͬ_.x[o(OdFS:*iX7'd>NOHnn7[S,}:ebCMm뢼Ҷzf"q]iF[I7Ꭱt0[oĽ8Dc~l&*ա\3n wr.-5I ?g='"(yrtUl+8:y-ײr2YD;ff⯞:)b{8ҝEa6iIܤ2c|`p|C]hÑ3ѱ^6Gw%J;dc 6]ye,zVfL2جj?n 2*7w4ǿ*oQ(&eʏvq@9BԊ8h{lKg';h^gg*a蓱D9#ge,NlZEiW s'lm|1koa }[9b~OtT̛ܕ3z|pZ{A5VPG.Mpk^˫Rǯ0J<x6>BMHd:uf: h0U#rCmh&P52&,3i9@ib(I^8K\h N&g0X GUΖՔXWX|ql1~Ǚkgb,n|B,˃"i h:]U!s Y Lc[yl[5,\2$70R> =aX|/;#k|> r*3 MP_݂?\>PqEhf*aM~AtTZ 7qQl!wR yrxI?h 3I8޾=ch&Ww;a]h9EaM.:}p_+R_;7rDHY.exBIXd?x EYY8Cá8M&/)6k8Ց#5]Q Ru`mdܦNl "ԯ7-.|0rz&__N[; jӘ$Ë3 .~/r+#9MXI{sm5N`Ն_f29U5>iw".>[Ck`Y7VMW_µ6GKs66z-mvܷXa%;~:Yٮ/Í᩹(}0;TCmc`D)VK+JtIUfƈ)2()SJs ̲:$]gtj*ojuQ>N}oiH=K.ݲE\C0u[tI2S4dl +-K5\꒔,/a h쐞=̑V3O3GHEX#VTv~}|$q**G3wJsHoaOGr[[n,Fs]o?˷|r<2Lk=vw;If{2dV-zq=k,{9_>q'8xa4O7Vٷ*\zU14VJ/翎jy%K9upoy_ Q5`iQ,PwX?`=OFGڦsm6ޑ4V[ K2=ׂ؁Q/ib0&g#ٺ++Z_gYs-Ccrnݪΰҵꮺ7v8]dGдSI5녫E8Uǧfsag) n+ΈgU^ǫecфMZm/diޚ)J/3Nk5>ӵ?>9MSUњ=՝5s[O9het@GЄ0+ l32jI $Ru(tĎ8+1/e$ӟP a!Ȃets *,{Bw(ߠȪSNv)e*|2,KaT1Z <Q2Fʤu)<؀ILΪbvÚcO8) @'trd8+7tJLLG#+.#P9N~JA|0gY9gnc%[K[tDVc7ojd`N*)^)  a-VNRN8m^20+6C̴By swq]ї [)cY8_Vjk+wi?^-RKJ;{iJAu2\g:?r{hN70_8:_SyK%Q+:6Č uDw=׻_J/P[m#y˄2A,#y]X6)XkҾLz('3C ̜Ҙ$AגB͔ʿJ\\ Sih9V3EsJ0w>R>'(@ؿt/6]`QӺ%6[]N!ZYH`C-?lOS=\2tEmRV}YVd  (i+ *Zgp^wgNTY~I 8Nq%(`')XjG3<պ~,ITR61Ɯcf|G-Swf1"3W a?B1 4zF  [FBM'}Z\-bY"/QV[tce~~۠,pLpH.|/~pnXHg C6jC7|  x+|4.y2$ɧ{`3E HVEjyl'[8v/c~ (eh{:2 c0ROk8.Q<k)MpzKKQaX3*aN!$u3x>S#|ZHrn+HDW+*q4㣀h+반uI2p3#fqȣT9Q4[p헙(h2偮b4$ݼMa^ a7S&b8|HO*Ų$1ŞL#YRVr"ʃ4zA Ngt5 ʊF"SE-)yS ScmzOwۤ>e ֦106ErQ<#mx6>f~cEzδɽa곗0gcy~NR[ a#~džCbޙ]ͧzIClV7`#~M[~VHiɟf;j{<:F=QzdR'-3;F>.&.l~A.ϿuqQ\[#Ӿ>4cf =k&;Gݪ' ?z#|b# z6ƅ/nⱕjgp= llc|/RrW}*aCw$,ӳȲׅr[LC |?\XtTwS+Cb$ଜEQD_l"V ?X+r:#|JJH0V3\h֤ rY#2eU6a v^nLŋe+g޶6柘|zj/;yiC\዁rƟLaJQyʃsRW{$^AMTSC[|D19*A%畝08IKհ=3F}snqEƨLo >/RJklU0R.'|Jf%DqK$[VSE[₣c2>v ZXЖR=xĬo^1#3G 5/^s١Gդ=۔p{pA6os#E'7jm?q4M09#qŬp F jHQ՜X^dF5G9-3NؒK=@"d>܌XH*m9i6&ɾlE:΢"{z.3m2}U Ueoůeܳ]y&63mnGK<#itt@]AL 1 kw nPHPS5(wPscRvl HΦZ,ƞ0P6lb`{`|ΞcTNL*CA֗NBa7:~Li:P4fPM?p%ȡlh,X\7KkR%86VV!zC ῲհ<N` H x J8a>P^Si^ Sa&qk/ >@0ZHEy?|KUD j'A}cu `pS"e2?2DayÇҭ̄a_LA:^x?~KY? 9 Яb /%8I=5 \@S$T\_`Pa1 IDATAY|rF.p؜L=>YBq8{!,*Ҡ8H"XTi<(b"ot7…a=M;]r s;֋'0|mulV^ڶ{@bUF8p&aE#>DYVy޲h mj eyݴZ4WR:SxGLJňsT]}9[50ϛ[)"PPeY|U1P$v*׵?rz{ϏŃnIӬr>`*lA%h މ:[F̨n``u샸%hJ i#|a@؆dZh`FMƸe ǟ"5"gfӚ#[U,5w?)c5myrhC8ëžԇj9Z"V"#~g}ڋDu{T=[jaǻ2YoXٌh8̖kxMW3D&3㾬s[u̶N:+2w4Kn/Y͹We򍿅HS&riOa~Q)RTluݢ{lڈ G1[멊z=/["Qi-7Q/ޕ| Jg==_@xs@F6 ǧZ'P(XG, mvIKTrDJGؤnQ?\6MTfiYJ#Z;2q|?>3ЅRTU+^?72-VklT%^}![w8f e?_@EOzIHZ3e(foo)Z+-qF.9,Xs rX#OZEo᳁N3:k8.z8vM铒/Ȓ.oo\x3]mf#bQITKM:fg"%!S5*^(n\i ͑C !)Y(_mg/;Edohk㫟Gꍴ'zS۠be!^]p0,ј |O8]450B2-(,j `Pj.80Z l<_6Ņ8ncVAs `5яķ6c .QP 8w($N&vXdMAѲ.S+)? vlN^b߆~dW {s yi!q<!N6Yj Sp<Ď2S5 fpzZ4m#yR ր8WF* #I[#5'x+æ1FZd gCQ[G?q&Z+^NyP~}kB7E CYr:#SG]AWY0+YM P?Vz?9(nm 6ߣ@)9SHԇElRl750y̶*?ZyeVVcYxec%{W5ܩіg"YO?;!4x'm#2B<-';s-_joť)mY@⺠Ծ?ߌKveg#y~_;`\VOHWh m3 gU~2^ݯxuLS2QVAqZFEܹ~zjGkT(h%'|SIai>բ퐨TŎZN̫)tՙfSS±gI[w 닦&۳뤶Њi=TTJV ^bI흲I*Y/QiU 7W[zpMb.c< Ȓz-/Bf6 eK$Z%X o`qь!GNH|뵯ZFE?.l.qZ 1VfQ]&-]yJpRJgV"T_Z-T!߉ɾ;P\r }[oR3WotVznF"Z)},'b9R[,#_̸Pˊ4>ɮm5> )saKq3Eae,±G%d5Rkhh"B <*`(Sq~,̂`!e ݣ!ct%h@o9C,(?=vOw( 5d>(w5N3~r}E/D=َ&L V Q:.ᾢ"U=AU/6pPPNE(+ˬD6166m 3d|5 bG,O 5 A5U[ [)m)vLXg%З^跌ҐH"LJ8v:'x^|'ZX (_)Z}'8>|zfm: Ya׆γl]YwuSv}RCYm.K>%ryF!AțzQjmO {¹S6^}Ƶs6RثbyEǡ0SRGMVS[7Tϗ[ut3χw5e3sYW8c=yi_x wC=xQ >(dԶ]/ab̃j#aGqG6}NiQlZJdyEv)ߧΥ۲<%:tOC#.9~kԑLp?o mݢ6X=}e{:ej=gÚj}vTfnyeji`)!oE 󃬽ZyCN6eGjřW IV2=PE5Ulcr_JyAG9Y_\aG8FY{. 9̡2#7?9pV H&79|;S\h91YK[7j]`#fj r՗Jl-v?u$ ~1?q"ޕn!zE1j)ʰ3X07 rVXzV ~چƎeYToL _j/mFjtǯ:)cGXEvE9jkkG(Cn>ZI^>"n5XՌwpٍfq{k%o}4' ^ބTCcx) ;ˋ+)bYE!8  9 V(T e^ ce&2k!%YO7^v{*3L>xjtvLDxgv5 rU+zD$"3F@2<49_4>zX &9z>GiI>)%q0k#G^h: '|ˋK{XIdxB~\n(`1T6864^=ͣ=)s@ItHZV=,N*4@savb]h,gC\qG X-*q䂃8\Jo#ڃv= ( x/PQ.J'%u-0 \ç=4<+'V<Ov(Yc0K& tZ~Fc ̡t{".x&uA 7sU Ϝ{O%(wA V[wm{m΢Pbk"_ƮqPj]lFQߨཹȪt7FW#-+gt=9<琯[g8>u UX]bJ4lu읕l1^ϊ%OX3r[cMb!9:#uj:LdZVO1tS}Z<`3msB/Cp9Qz*gmȺm??Yʛ];{8%(VYlw`դpZ|\ LM޼1mT :sa.ڒԝ*URCٌde;0Vi֭pF Zhݪfn#X61XqW>*=z%φf>zyg viS;ip:7+WU\%?Y0 T\J ::?k=U[@ݧNpNpKqw(qwww)BTd:܃6_ SS'z-L ٘{\ƎS+$^ oUe2l9$(bϱt\zlSքA:Bݡn rl:5aqts/LR7r'3qaER=,yPD >h/SX<[ϲ/'p(ObKdGd*qNtw mzTpP)7lGh|= KQ*xK{kB̕V j `xg-7z\O]_-[ S1F+A+J<\\?DO٪k ~c79?O kڬ:t3XYT*/6zY(/vGт?k&V7D\fl?ΟFy~RGkb SX!ٖ&bf>WE"~پ{ah6} 7G2:îl:UԎ^vf5?E ÍXZn-soȝP&⯌bzVR"EF~htRDQy IDATj_6<MHkE|rShlC&;Vs; [(b?kΨ"$t:ϸL ׸G|P)u/U*HUC&nDŇq]5|G-- ;ׅ((XbSkW)ACU8zNG r0J R2٘Vhpg?mWYhC-;$tؐώW;[ofjD[mcgo[B犎 #y#G3` ͘[U[ uX!Ҝ/*h%~Ea%sG]i[Znؖ8}!'lۜuj A#P7D7PLl3XO}-b?kdnZDz}XJ).m3 +ZlҞRۺ9KZPšŹUz%Rgs05_kskcydnL_/%+X΀g>T>S!bfdXodB33μ}k߭p-Z(QKaCXAm-e6$^Rm].ǩ dW[6'$pjxoȆ[Y&]؝ByC^8GG.z^ǢE}! /"61L mi5́$$Ld)E'* FT.bkx|;֤l*x _mzK18U(<-\?Aho( BtAuȣހyt^iH!g?)lTv̦ ,ōkXG^q i#u/041T; T,/J)*vg $K )1ۋ/E^L+ 1PJrʄc5Ǹ=8*ɳPUb&)4up)0b"̀T_vTfx fgZ)>kzE!ԕ1pZE5,+;F#/x@$xfc8~* `V0 Ė8 TdpMʪao/]7$3K1{=J9,6w\c: MXc>XFieS : pkQ~ebJk\&*6Ǻ0Ş19_(ìXm㙕1Qp/[:]$\ ,3gfJJdRҿUF2 jp?aYÒ'z*cJ>Fۘš9(B 2[{Ut̀O?z&o$.ŜɒuwZG=e'Qҡ6^SGBa䮴I x_^Wh#/ze=2(Xͬ#F҉qO[p RP*)F 3:=ΊaߪO lOMOpp^EM6<4Yb1BOq0 p C!*נQŽx CG`!iBɅ=ea7beu8Ck#C9|ǕuC?YQ=dNQ=0A,jc/*B6Y[aq0lЎ˚nS8Lǔ"+S*NS)1>SWvCMe7_$ᡒlVu$QLZV?*Ig!T-P`'%qy:P[`idqz-A*\vnpdw9f]`m@dX;L`0Py9.E\+'dP긌핗a 7˵.9ZNR[~uWl# zbpTHIUPR)#+v0fa#\MyE&h2Fy*vٿZ,۶lψtTp<52̬LɌpO>W ,,z\΅qL}KĐY?m;]p^Jï_Or,ca^Y 3Z)۸K>Ǭ+\`Z鍼zWճs*myM5zRԡ&o+5w/ßFݍΤK -S#ޒ>=k#R;:['nW`T~Nj 8)z*ٶiS_v\"lY.d) +UhO*Xm%Rbmc_L7F ̠g=jYh$gҴ}5jhUlY9 48`mPOjU> apxr[ O%R`pco 2Z[d,?Jj^5Z`;k߬d0In½B\r#/muX Nvg=vFh&aaR||sRCuȝLdk3&R Ky3(UN._#S>*xM/1h4|$F l*-;ԞGv!鵪^yjkMfi0%+:!'|X9z4KC'U`IW^Z NWͷD4ZF='E&uŊnF[qJ.GcN7,%xxGzf4L+/, n~U 6 ONi^.f|5A#ƑZ>E-t cq^2A%٨2%pnR=PEs=c6YbNi>nlήm  PX^|Yo”H%(.٠Ɓ^^ʳy8 JY.ll?d5XL!2lҠ.΢996<|pJ@&6w&\D6~/Ϡ'?;b !?ep18p $a8bLXENQ.;:nz#jL 4'cCHxbO%,[^f~LSg4rB)\  &aVEiq62^hHiynpS+ SE5(#kA{+J*7H9swTc+b^JVslzeY<JC),YĖ_)+vN7GlqEϽ>gP#t'֒ 2 x/e;0>8PaUOZMJ{~ Gkkq:`asAvqD+md}zӾ.b`;g_vE2v3E?N[0z C|d0J<;7K[ͺmjYƭSy>.#.{svfKu󈚮e.&ibrmS}WqZOhW[?I!;m(+(TCkɲ!²>lt~Ř;Y[k\eCZ5L01/D_gS<[vԶq4杝QG+e|+@f5Ft7DͻSMV`JEY2!mcA_s-evκ༜I>0O}O]:C2ǵT8U8mEI8V=*#ZguZVU]o8lkeMR3YQnWFmhb~1Lx`1 /$8p[̓&" !| Wzb/op}Ec|O9S摒 >1Z|7ȍeⱆu!Sl.OQ~qZKJc.b-6b;>L}o(|<ƺiZ_xbDrl[glCkEQO.&;aPJSdXmIT|t׵(-g^NYm=nGv@UECgꩌL=t) 4F@5l#QA~2l ӿ$X#D 8h`qlN1@'q?<3&C!ls(.¦tc% 5!:!%mXENEq5{̊jtѴ0.o8:CVTj! P26Rh(¯Qk|/݅.D6*\vE7ʎ`PS:AoQ8^ vQkBLP DA-¹PGcـmn" (&3K)A P4[PJb.n4tU kA+V}$,aƜf)̮:55L ߔν :80*_943iAUG}^!'CX 3fd|;3 |ZY,6aP+, m]W@] D[/ʼPoX le j3P 5{DdKjׇzXEEN)U7x/x#V}6q%B]Rz)ouP#J^ Bp/kc.S~b'f# R&qr p>t,5Q Q'k}l86OF;[ cl9ж0XJ{$c^80*(hW)qM,wcݠeL}tau\v_HW{_XO#Yu-U8~P2͗ 唏{פ}S/&ZF1rCO*KQ vh̀B ka$͇s܄!?PO`6A!exЃP7z Oi5:pp*alhi r,P`5MG1faA{a lt'@k(+(Z^BgEI(G%rb G6 c\GYnKY&N|%&C=~.`{D?)T")J!jL[)+88I]Gq <:f]( f="z3A:r5DX 1~f..@OP2L#f5}$e)LGAqQ" B0Q!rI.Dy `DA7x)a7p[X6؃itlEs<+;Z^rңOލ6f^1;Gy5yDb,K+>SmW]/\{_n%oyn"zjkYpI&Zug_Qb2x Pk'Ő1; ܏>#4=gMο/5rVTp&jfLJ'Q%0WS5/0TBwDĤU29>~NrZ˂/p+3̏}$~}:s;8E cE' ͌p.puTJ,~_zpU}Pk7n<6h< ISa95uf?N`Iʶ!UýĩiyayʖI#u qu=tR:φR bh-[GyYWI:E}_ߙ_V6Z^DF+_x1}"UOЙv#3LZmD1.ϼiHZ]G ,1|7u.tu6ዾA%\OC,smvϙ!tDʹ8dgz uZ+ٵSM5Br)_|Oe`ݹ!eKYF`4啕z kBHhŦprCKȀh0~@8 |\C'?i5dyo֒/dyN`9Vx'6C6l:T&e<`.TA+%|;q4AN;(!02 v w`&}ZgjO8XCa04DUa]X9O1$*]jMG᷼V(>j27dx@eFQy ݠ2ŋc2ƚ) ̵,?#nqkyd4.v^XwUgϴ K,Vaj=ݬIt1ju\!vʹN9""oG8:6v Z`/ʪ|Z\$nϔfZVwY"agEʸ7m"6*jG흩mVZ󺲢-Զ1d=&Q]r{H~L#ƞ~t"D gk)X]-/9 +!#X]\E)-"'*Dc6Hj%ߚgLDz.k?X޴Q8=ZoV8 ~R‹8jm|0?ѻ3w+_׿$p+M6;\9; j'^6&G*Ti|XgJPJ qRxC<`Wu`L[zGGƲwd~ĦxNd.#eSg"p=ARX yiSYUU' S[iˋZTTe4xe̖;\!FkāKb2u6#y0Xٮmui]a쨾N5|qZ<2-]gus qo9O]݋7ݶxKf2ђVy Hb=kpS3n{Բl6EpXeEq铌|֜`r O!X 9ױrQ*(@Óg]*G:8`UP `c(G68 t@j \0ArA;ES%<6A.c~ȄZЇJ6`dvƲil)pg`8_9FMOo6c%e>x q',4%X@eB)^Nc:a\$20 ߱(il8X/o,qI(Nhڌ OC $[d E8+*T`LlCCX9([.CTRaV耋11f#F+xPB8X:V^@W8Cuk4R\ 4aeP_.vzجK%%c%x* /cE1/7Rp/ƫᡉ 2'm@}fҴDĘeNW >o\:y// kZZiI;3Oɮnj@2g.1x)c5s] zGCqX9j=dq[ PuY *].HZ{v쎘 pbQj?!E=׻ɳlv4WPCAD87 6bV\f:(l&/qᧁuϙLO>~VA(n[%"k֔bjbtPe2f>)mzxg%IZoڬ.kĀG,ebex<2.*{stfaiH4J%{~?tZa2eeEh!܃n* 0 Fhl E 6RU9VXkB'i5A(ʆ@OHa! @&Z؀SЎ:1E 5C:CB`@Mg1=T7"C6ũxQwLY ،=чi0ކW̯V[.Z0p@$LxO>A>'ԎΓSH٩5mQL(($Pnh6PE7p*ҠdHL`2U+ Y<.a6`2` `/76]g_>^ݸH]Cr\ŠY_l ¸ְZ/QuX/mrjkxg*46l=oAvvɆ&:}T+lp9"VVx3~X55vke+N.VZi_/|9aR6鼮V$KC#+{Xr6g"Ewp7:ڈO\֬/bNejO2~V_ZI6 a-2]Du_Vʆ~ i8 U*I,*:YG!=hlfbn7Z>=-/CeS~^[dF'jr̘|0P4ݵJ=f"=b{[!!r!E6 $Mc5ӨrB[^`S-٦6 pU MOsSPڦ_>{gM'ZEQ-9{g G8dpOJ_[uaC0L*{keU0k lʀ4Z- hT7Sϳe2 ¼lr<ؼ˖4:x߻(ykP`GpU<~e N8v]Om].bS2/ycv\P@p/|u>¶vT  lWIq ^gzG )QGw6hMlB~R9e:|FzGm .[!U|l¯, U}0Ay l%}!SUj vV`GF82=V TegPADXJ@Q a 9 }Ʌ ϼ< I4V50 bCE j1LJW \;jav*cqU.s$:@g?OΒ{Š3v:f S/= NJ,^*YWU6963\~Mjnاq0*Q\OS|Jk)MҊZ33I6Fj $'{6T"f|g^ mW:y@7 _ d Nmz.p{$b`Khxpe1Cw݊rDD{^Z^JY Ss&27:x௵qXoHy5XqEQ&gEb\JrYHYr @CsË|Up;%cs'55}Vj .Xcnv@}ԫD)FDMnؐ:Ju\zšL=Cg|8,vOQp cvW!UK}moojop3:%ZyB{w6TTLu {*T-;eeukłW6zѬh,fI$kTVaUm62Y_}IC.X拝c(f6c6>kp'F*g}6@5ۨ3LƆLDY8bw vU-2BY32c+^J#ɑѕ2&MG y|h~X\ EV#s܊*#-2xA_| u{:3:l#>).w{OQd5'P{;gi2Uja>hcYC &h3-iSwܾͫ"O7^Fz?C']>%IZn[w-̻E~G2r8FY;Ҙ"ToTzb?v]q/o]n]G^+`wPMt6C- ^EzH17C8yM4ޤ Dfiu_+ps iEUyjJT%\BX`c8QrOs_w < ` =sBnhux-%,(BDkVwu5-E4~:"H3r<?p/t}Bfp"IRdsWڇ_hMY6;=F"ư;J7Ǭ%Y1ƴO@̞ᇾ!p5x ҊV:NVA+hb2 $H>1;Z{e6~秵tXc!-d Lt D_ZT[3Eg"R>vX%^ueM|cm1F[w ވs.T5Y2F,іk߂װ+?Ҧb0ߎ vІ4AWCCe|KfE0S3~2;{#}bi&ZmcVFfaMV]d/ʃ+ȍFEepkP/L{c}CԂFL [ /8;XxD0(͆]?VWVjHMz+ݰR->%A#xsxI%a c){b1.k@v `;8 Y;9CaA'flȍsq FvXy`,aX1UCtEVEFЋQSa64 KOHh3x +PQċ"l6gOx$7\h,yZͰu:h+ {X}e71A<CXn5gSsCaTƟir[SI)i eĵ0:cuX2Y?{F`,BzhB5+|˲*]y2a@M1zijkYjrqP$zO/1q~K|Vڤ?y7B.Vq9\7g/'h\@r]1vH#`e, Q w5¡! 'Z1=P;V *j~Oߤr0O4rkEܱgcdCA#֏odzb[Օ z$ aM{$>GF~/kVбjK?b}=/keoO v:sNH#%gI9UJGS7yӊ|S*W暍>U+0C}RYEk($sKZ*Z`Nejj&ja<dW|TwHMXƶ*?$j؏u“x a夏<ʫIPfX.6c_XJ*;D!@u(Á*̆0y'Z? %TᣚK[ x<'kȯcXݧʇi ; _Xx.JݰZa$5=pD6/b}/pC)5Ez&էb j}Sؒ>HccU!Dwta*B#"j/! _ʸ[8 ~fkVQ/k Mf;Cx9Ol DO &l^wqkՉnK'(Z7&j}S'1cmڝ@Ѻ48{Yjl; uLJ5>J4ՔVV{?!":`6u ʚ^B}$ݘm٧]2;XuTlѝCBeQ-6ڞ['E|~xZoX0#X'[zSISClK=Jcoc 3U6040l*#!pJWkC A-Fv^Ql-Öm0g[1됦O7Z9Nd9m'K ^P]E[[ڨ&`8Tif*{֙Ak w4n ]ґ%U/g1o7"[R`JԇeXV’<5TlG‹y=n2?Di&˫D^(Ѫ_#3;/BYhrjօ{h;|G^M@|0'fm'%cӰl.=vVtjkBS"SU]QY`2ˉ qr1Zk)hqnh_4=*LhWQ Mb)TpVmty [y Xg?AY]Nq'?b?8B-jVhAd\c֋e^}Ϩ,M~9~_d2/$hk'@\71\WI"ͧW}eRrV|5Hu`NVFeƫdKdU6'U)sǼ"̜QO\]cgjdDZI3sۖU\3{3Qѓ?)s7YZ W!>׊P-|%/!/ /_=%vsߛw_lPTOsV\uϜ`Ur.͡r$ .]?C}1PZ;l8{ljt7N"x쨿,UYf/  IDAT >1WR}bzgӝ-H2ͧGH<ZeJ~kd@U p8RHm4+9Z>)/2MւXhNJTrՑeykqIoS|=sj?obXvJR052hk8ٹƊs7y;AN+>6 ż< (097w:;iza Xf-2vEGc-QӜ"bNxњ9NQͶ3j>)B""@&V-k. x(-y0*'_lJI2wXm3ݬgnc~qvGhuz`.zosep5F;m]ZɖHLe#xnkvsxȅ- X[l'>^">U_ЦYSp a옶9-1Hl^Oask>-M5^lmް@-8mZosx: [J(y^+.bR=>^ !7k*a^Mm~*aU\&3z@q-uܓYJvîQz_{?`UkDfw_|m l;NGU c@{5"52z,J39W\㬈sl6K+ߢ@1Ö^ؖ1FwESk$vP<Pk_J Yռy+Q>Xd+ҧu={hSEm%čl\[oAIkRը̨`oi"dݑ8(??fUhr-PtVFt4Ex$9jYHa4KaW?\Vb%6aqqPѯVPɛ߆>xn}!豸 wW\mFIͺR)p0^;1,f[duH6hE\?G?3z}밑-k!MGL RG >]vdۘCZ ulnGs۫,/cJ詻:;= kTV-FK`lhtԛvmol{\g*(+sIܤj4Y}]-*xUU6WȥօK> .akQ_TRw3}Vs":}ɘٲ Es8@uU5RUj*&ZБ%G8.v(?G dB|1Y3.i>jc\)ֲ<[98T6cT8, ΣN/g[5|@[Q =.*mj3ο4PZYWGBb̫\kAz[_y6盫vHY mX /y"mbN7SX H;d&ӏ5ؓc5v |XDiTuŲjVPe5l˺rUtu:L.F#@l48jp5և;`_͇jԎJ|pTPUmPArwڲ-5lP +AcGpeLLEW=6Ϧ_Üj!aC\C&FM0FZ~Ffh'P-f) [=$b"8SӰ?m_+idLb _ZH†fX ml0(t?T2hx +oHu<~aϨti ]SxmÇ| ^NDK@9h> AVAu#Ub*ra"܇xuVݴ-Xjm|?B#)\p=vn@2¬2t.8泺+o7> D+^ 'xGi~=ٿ.k٬el,XL!Fk}G膮}cA;j~N mUw%f}ܘl5wqf :Y="ֲӊ|vtvʢ#W}G9ɷ]k﫵a+S:2SU?1>˵zPG2¿2Ēm ")"k^Mwֈ=WUQ-}(9a)q)f*acPrʴ:`~h'xENñU\*_8^AERzr hSWN*E3KyBlޣ&x[̳7bά|3g6[CxsaF_ן+VQ:hR͒q$sH 3O(M{,x]8,Cͯ]~aMs8j6R-/gƘe {I2vIl+6nJm{*㝤m!>G``<9 k6ڟ͟wf?Pw#<ŵ?+vzbRS#sy1c"J3Z1&$m NS)}4 +`_C HX$``MZO]Xqoinȁ;W`?pZb^Z ^DAjċfqRgCN6n[H"FF P,NQ}F0ASn8{ ( &vVuq@lMC0F3 h"Nܔ0FAk U  ?t a +bԋ `&68M pMc7+cb ++ρXxT:̻R|‹R'4T. ! ;8BO.xl@((Y%0Y`m`!5i$)XVtc$kJw6tSlzymg`;Q, (-d8IE/3KDu+t]v@Im`2o/ACs5EW2HI&=hzX~>T|"E?rW@uV5כ ,&3V9 ߃WիʟRWV:H9Y1ؾq@uq4qd>Ϭa,#C:1><6,K>+oʬUR VIǤW]rb_w5|:W _/}o7A*7xY|3'88EqRb[ Ikc(t4pwq- WJϬF)-Vn= >fv6g~-.9/eFd5>dfH-~"SJ5'˜o5*hIT9a6-LnHҗ^JL.d1O}uc Qcz"=Ϭ.{Y#`ifV4'ϿOehCPKY\h7P$_.n>ܾX颖pGCuDm}2ɭeh+I̠6t87Uf~33G9`XhQ0v#.QS(iNCQ!.PG"O;l,fp.` Z0~jQ&u+C (*f.@v8ǛNL#=|7'UZ5[M E\6u Pu3譨F56 H4 %:MME]0ӈY V"+yV 0z@':Ey dǩ'K,M{x-Ţ$~]hԔ\0N xM*ؖXS0 N+p>܁Pr/'AkG4̆f2`J )f>X ?XaեTRg $0wILy L-eZvhf,.2~p){뮞h 𤚏#lǽ9rzYGM3haZGXXkwFaOJmm$X'6a9-I]q7IfCZ]4C4ov 7J[yBP[_9I^.Op,Q#'هWlFA\j L]I FCzjMek|kceؒHvζ%l#waٶ'|C/V*=;Ev;D]j[KzU斋EN*<()W* пtGY9P*Thҙ7?GgCuN~;i7.[qGMVYmbc6:[z( !uqTQ]g&+M>}\?͑J٬fߘ'C*FgM14NJ) 8Zab0P C 5E?CNgIq cf@8 e+ Vn:R(36t8~lI5 c:XW Yl0|#NS^p@yh y͗dGЋ2НEx/' 9vx^SA( ֳ =s(jg}h `/ -J,N%' v:G.TO eSpv! N/K0d?ml ]"vc\rg//ʙ?IuVO]iC2/̚ n(^5oRqI%X^ʵ]>"%OՀGT̑ylV"흭sfuBrpRK>Z&OIك,̾y聶+q>}~JsOŴi?9v>fasg,}_T:Tg \Utai1T+ǘcH<z,Yy;cqR4mݦ%=ʸϵgOɶ41JӕR:YFyqSv\Qtev6$!O^( eUvH3oi|cR{~.iaZŸ[hCϱ46_.: /ٟ^kz1GGKR?.#1}dfm-oS[%-5JUodaɰȡpMњא*QtlmV̻' Cg_~|n&HyPRbLGwx_#Y¸n LTܠ,G|ToDmovwҬa"p'fX!K<^>R [@Ɩ6Xr|#l5/QS8q5SSM+^p>UjaKtR;[uh3vقB}!%dygrg3 yR}I'9l^`1M*Z~u3uQ };X Vql.?m0入R4Wn2_!.jN(oaM-xb/̳)PPq[q5#YoJY$cj!ձ6iQ]&fkTfYnkt%F"UOp]d7p|oTJ IDATJk/G#veꈋj]6[_%`U ,q%*/1ҟX8QLG > zjj+h9P r`q7>PhfoS'8‡QzWLok[84cy q>U bN؋a070up{ 5E<4fMų7Nn `'Ka)P>v ^Fc*-@T?.6joZGhB %ȉ`5t©0Ja507<. i8+>`ch9S 2 IVaQ8.Y SO\s/nyuA X3)I up̶֛ǡSyO|bx c2,(aQF,OWpg\}a+rCcSy'b}LwTgyh5XT2Mê",>da42 |E \X* 9Mތ7]R xEl2T$ -)"NJ #R<0vC fZ[ e xXB1m#DW,lDk]4m ZZu2Zx*孢dIzdK/yWҞ=pw,)}0Ren3Q"kodv<}UxwOyhkРI+֫E_'e\j'6]f͆4b#aeqke~Us2#V^}ZX/\| R˧Օz``mww2Zjn:n;~ȿXkXsuRd HO-'kOD.aikh-T{ˬlyXT0 <( 實_XCن ]s(&h+l{dHIa}73H Zj۴$򖍕I=Smm>d_c뼬hrا煯?p#`I)^W$V eE*a]_l/xא-]a33֑UWZ?nsq+sJ55kL_(?3?ĎYq,! hN xZ_jQ>3B(Y֟ӭZz3&v*e+c4}cAƝR9R0b1~+i2@Ty{)1R7lh RvK뱒ci=oGz%cJujxSNZЉ7J Xhx˯tKKKZ Z9;t50*yjyaJMev_)*Ja%B(%Z;KCDPg%k$⵬jgl)S'<.b!ItDd٨`(5 %IcO5_+S!ǰ;EW`k{>Vt68e9<(~X-DH,8V,BC 12,܂&#(A NE.GBSli0v.hmxh=1%fUp0̣"LZ 6NT;*/&졖~Ae3'Jci9\8 Q= $)v1:1 _@l uC2Z fAQ l4%,Ȱ^Q*&]巔m| *) qbXK&b$JJ#XOp[Ei4L6Qnua؟R#V! nS( o-^1LR0%8 Rq.X!&fp(#&(i=[+t 964$D3:Ƽ(ť7_i-Lɂ9+)`ڨ ^.J͝*lm*㋑&&+\Zi}6wZ a.1npS&Mvߕ٣bȩre%-V&[Y3oe]RV3J:`8 O`҇sh헕wg0~ԗ{Yl7pw^|TF?%[{kY!J&ug-??w;I.͚Hc J=vQp/h).J}vU9hdZb1Ca3a޳jKY]QB]!Ρztfty ֓J{qK)*wvIQgE_.^?w)Uğ1z[!r;r9؏8:;-YʞIa,%l7\tC#nm`0Y3'P9m3bstO.:-)lKWyeyz#x5E3]$HU)JSwxS]&×`h*WJq0(}9/LZ;遾|d F|h5}yR Oe;] 4L%xffM3h華vg[[q$Xf4-_!;W M**p svOJpw`?/O%UD]`9/[mGAibH+X,XiL]=2~yeged= ,ʚWHoCJ}4U}|B-cMY"'YoxXv0ld[`ІRT`VE.3][4o{1?NK8v5lmnkh[q2j@"Z|-6S-L/:Y_qGsl<9Wx(̚{wK'K+_q]GZ-'wIƂo2|`[8熽z MtE萹fe>5)s1,kMQp-EmӓU;"8;%w*dr$?60Y7zLKo};2.RUQMc0#zJn͠p|9cK4e9\bY,b޷f5hȿb)f7ΆZ7mΆڒtp'h/N ZYK)Z|Gy)ސT\}$uU!,2>G9XA6ṢEqoh7ntC0OdMϺ839M?yL9-Ndx=z>a'#G\e( oBi=EMkY(X,{] Ϫk[jY9Eq4t_?5+=:h3UǺbV.;:s9k4>LRS6:5nU#"egnk3O5tٓ=tHk܉P\!u*#k)YSX;؉ia{NqLPIWbaӨ4^5טc C&Zˏs5N7dNOX^0Ϻhec79Rl;䛩u.h 㾿bq >V_鸊rasgo ԕwkpJS7 U`> mgݵ4 NcyG|Z_rQ5EBq͊~j^i(5h1?)tMt c;,sy9eOyx !7kD*V*1Z1<%l'90Az%VU'+ '2= DI3N==/RV<hm9J|?M)WI}f݅mk"/֒Jy{ S]_ l\k' Jea5+ [aikE <5 q#O4F@*}… *Q$ F 2a>0(6CpYŸpuX 0h~(.,i͇pN:T~b,B b3e )vRv8@E3xG pK ( GS͆(QڱX mKy8:1pZ p04b{X S`=t*a=74o,z'I H n:N 41N0 >G9p@Ԋ„ؖ(=_*Mlք+`s9x/fG;xm!A ̇8D;/4QUMJ* b%*O"ֱW`ec+Sq 3dOX_ of +b1z-t}2݂&S'xA 8Moԯ>uzºD4r$;w+a<}1Fí KGlj_ATG^BsڪiJ [qx<.I;ҽ-ϭ) K,+#NFhc<@BM& 򬭡``!y5i ah07] M/NUFo֜FE1;B'z|8T kw^Xe]!tQ( _庑.bQe N pf=/VU f!ө%mӪ[B3EͬV+_]t$?ޅ*gIzfXMȭ8 }CHB\f6ǘxwfrܒQc:FSG0uL/"IM,jlL뮥gUK*JՅn@NG&[?X#Wv󨫕4y6e#lh 2u3X(㫮=Ojwi"i>:8Mg\]LEY,IFULMp0cJ&%8E;ɱR*k&ihd{ak8%;^^t.[ִRg;'F[a=W_M?fk<TZK\Tj.h_ڼ+>kgxS#CoѪ/咽í0@* }:73JPqT\ah8Pj;|%KuFNQ IutC |N pw}9eq?1-Mm5:"MNPgIhTJ(=2l{Վ1u֚f~jٰM<(xNx( woBNwgPT`9UaT(R by]d.@_$R l.uǯ9; dA4^%PGX.ŎAQq>b™*s'D=KVC}yA?!kke[>%KV+o]rq؀&@Ǡ8Kx%։͔ߋ;c.DL+~( zwMa?-^I1l<놷1 G|t,lX]hi SQѓ`$?EؑR%]dU/tV!c*t ٨j>w[ۮr1WZ69?/A?3XeZ:TO#Si~Bo"uUnE2tWdM ZSӾ>^F{κG'mS?f2 Df3Ӆb>5@_ĕ}>OQW05 ZD}< _)0[6`Y&r{S-BWxW3Zk V g,/ߋ _v>l6xY6t_)ѷ><[ Lug VOl ]TɌ.hv+aU + ,v^%ݿ2ՐCSW_,rH4핑WrU^[`>kpi?__>Oʦ*Z"/_LӔYPY*gUɚ9*}j8ٖ;xkmFv7 _}Z)ݒT )>Y~k{Ti{YV2/>,*b(ln } A6C~dϦE.`Y Lon&kwVL]*qOzqL#Y?1G_(nS;+gYs(>8q ʂepKԤ6'/)&=I̦HJm:b)84ާED`4\%!0v0ob%|h -8 s#N[E hk `{K2w+.> bCYܵ@}:I?^!Ǔ 7;`ͨ4i7 4ĊpP0 C^x{0SL`(PIWX{'BRE% `G% n~AF]4޳2||yVl &J9U ր`8hIA. y3ރxf/NZl̏ :\!BC\ޑ6qR)7\<˂DE"~l=T6 {PW?k1夷 b/zW`!8:1V,/Euaq 0EMv-OOrgf-C@wz?NfYn_a#k05\" e*"%,j%{~ڨ tF=F{P-{!ebMڑ4LZtkTVoLCB1'D勜YTag5ߜ&jPͥd .*!Z;m 5ɒR7[N >F~r^>-!-ۤFE +{BGDr8l`p-RkB~9?+M!Sza5`C799/)E$™84eTK;Uq/B4D̍}-N/PΌ Oa9a cQҁbUGP)QJ8;BQ͸bdl_j)ꐍv:5 ʨmZ&W'9;*V /kjl+;V>OM)0q/\Ԃ2Yn)0ZH't1͠ h G;f ԅbfgx a 2**Fw %%1]/dgzIy¡{1@F YJx^J}Pg`#]MaRgH&}r\&V+ WAX"/gh Up lsƆ>hbIXɋC} $)b'lc<%at# AWVP C+` Lc\f'X̦*X*@n +Xr{l\71ANIEi&XQFN5>?iSQ7D`a=),@a)f':jbaΣyB,fi\QbXuяyև6{1zn~=]5@gKnzZKO/_ sQC~9*|0%zF ֥6YMh uWpNςdac^Vz+[&r}y$1Yn={[jmN<-lmr{cifm5һoxs<ϰ>A: ]NXJpw{BzSE&3+3^J{FE$R6[fMk. Wg;c=y!yke {Igev} 50O̠\?e$iyL(V[g\I/!m֞}#ٓi~O^NPZSR -i&uZj؏G+^[|e,me8 ; ;n,xm̙=VxXK>ĤJ_a{*K[܈C#Bs 4%IJgM^Sꏰ~~;-PێJCbypI`m^JrKox~'rrzK*ENi^j#j^O;ȡI3jIX ۼ->&@ $ɢw7/wu>wLVp*ǖCqlkG̲TAۑGi4p"5BMi$ķ`eªX; +5p 3| nl6pa :0 ¥Up4+K*LDuOm)½&vcOW`"b|U^ʤSE" i$yx'DNS0/Qf1,cxOhGi,q؏0Rzɦ=h\eY9#!c#_X ie.a6t VQx *R'ր BaA,í +xpq>V"=˴M-2lb;q|`)> JXp!#bWBC@yԌoOUU4^MXGV]e{p$.9gl0o*6+vD!/WF(aDAnn.3n;)ga_,!l1)VoL ҘSjPü4?k/a_:Ʋ:ò9Xݱ /OiP÷EiB4 &BՁ f*%]T(l4̾ɔX} BFQKtijx@D >orgS#-ƉVJ~1r*a0Z?)\.1_H{Wnf0>k_oW0Z>ڦ9m$`քn@.S*zRI-ZC}xx9n|r-yߘ?@b)88iT{ ~t鐱֡J=\VB:&E˦G`/K@?f7Ɋm-Ժ!VK)P2j/4 ~-6U6S߾n8Zc8(\ wg÷GLtuTJ"ԥ&RUgRv1Dyh_rk쌳0> =A"wߦ|M.淡05*kJJq7t~P%EQ<2:MbpCT [NjT1_QE b` ڢ#/>8foTQ%_:iq>g__~zoH%"@"ٻ~!h* FhGqEsEʴ1$h[6=hjxQyH'rؔ=V)-.^4s J!,_a)74eqr(CBhm7.&x[x6aGK Z.ޏ|b؃TB_*>Z6씼(ҹ{eI6ݱݹ6G/r%9W ~ v@ٟ"R+-t-!(i*3g8foTXPB%Kl:*-1͸~*N+Wn!ga\a@'.u/@!xC# MkGS/zSm,n(ACK EDu2%M#rY!3 .ۚox]ǝȯ b4ʿkuDj `3oH5鳖Q%iȥ И}Qka#~3~~Jfq%eB ama؏,=in../ֳ![C4>h=dC9g#^?FÌzq3rOP٫DN/1Ok?-hͬ*ofb00 fDi+vA+]Y|ιl~R,_Z(q - v;}1--FhT"d˩ZGW]Ϣ;ړ%m.^׆s߻~]ڜh|>{iR./V[BW^($a?& /a)h2C%KӀR'Y;n^/Ԥd2/XI4jBnQ rb v`YG%R_%Axvzy(?Ŋb*\&S$CS(` -!550^f 6 Pމ| KMR?O3]PkaVY 1 :@7xhI-i<+i.!,e~97BV*܃ **:t?[!2q_ ( ,8,?`+;l;!``Ԛ51p :%a0ϣA`2?i=4{ ]q>xjŇZ܀xVIx73y,{%|@2}DY#5z5^Zo*PIZܻ_**u0wJ>a8fw*gc:B U>\҉ofR+֬ kZnf򵠂ПYw}٧`lܞY;;tKi%3pmoP:1S$[j_/,8 Rv$n3&;.drQ^3΃aЙ?BB;)R忭If^yfAb(Ku0 Qd\ ӓ}}ߵgz]LSQ6\i՟/c@A wLnsÎ# e5_npmB4ZK Ϩ9*PO;}|yڼxFp(Xl=4V5kOG GmFfufhh6<"qۀ IDAT]1CjW ^qynxڐC@T>Y{NͥW!&eM޵݉ruQf2 VHy~f x;X9*3*?ʢ` q mĎRE:D Q#)iXxϳ7#17԰tc}.{ c9L5t, 0ͭq̕tE-c͍oШjƺ# Zi LTR4 ux$ݠ $ZON7CA|*@_q#K0Vh p b \PG\w0MTu!tGaxH!#=;6xr`w( iz(p gsC:̂#x㠞xO!h6H'uPAh ` y󸞭%hKacKClϼc:i < NM-dTEn '# q RͰ~H uK`4FB_Ȓ7a1(&S?($AnX^lE.nPe?vU]8J`//e!S:Ea!dc/,٘yk*D Pڌ9zhY)LGltיff[92e֦'>`E\#V1;Rc5['W)v3zwcBnXF"N^Unj%ֶѦ@2'P&Q۲( G?~_kճJ>멝Qk^?8y:k<>j Wc_lEF/#UǮJ{G˾~5coI1/Գ7kR8u V)zi͓p-uIF&&1<+@{ Sb3gY;Wr],tyhO1 Faflh 0mc] Ũ_QB;>柂~#1XhnW;eBlkgLoh0HR%wvL k?`kdO';m ׋(s}1L]:$;~<@>11Kl9dz"a8Z_H>!u:NHo&$.o]t<`42cVy3<ɬKFܶ|ǂIU|?WK|5/CR h&)l93i_1tl%Wc!Qְ (0NbEKT(lb~-`qhǚ7H2P&@Xs90T>P G_QXjcifvb2hN0;q;C0tl X)\lsXu(-JaP`Ha94̢|PeLOhW|o3 {bK­c EV:3`J7p=A ,L(oX]NT6)/"!^l+|}`ǢFYP8 _aY89_$^- vÝuQmxkg]IZ5wi%9J?髋C33pxC塂aUSz;Y_³K$g/.O?2MupǰuL{橎E,bDx7-%6&@ʧߛk/܊/ַȗm&VzdSz:ꍬR>!ōpz^Hzs6, 7kUD5ϝ?%ac"ifrm=vjAq(u6$Uc?W[ZmQ/iVOYm'~Q ul..\ET6毴\f%:Yo<^oh)16`ks29S^&ʿb_c^kUKnB*h$Eձc J硸O[9mrW #;㇝K{A{~ zO4lOk8c֜G k+(c[(o }tM1&e ~ $uyz^&x ʙQ@04](ZDhNE$ȟZܢOK)gǶ,_`3X*Rܚ+K,-FDod_wfE߅Q3tW3 A}ܔľY>be 4eH!_]F }fWxT7{zG`?'l87,(DؼOIxn!h3Dk V\J0 lB*M$NM9a7f`k9_aB3ۚ--B0טỎh/C|cXh]9x,)lAXoԷ?uF Y_f8)gC1C+f@n>wӬhߡ7l/>ޢhB 7LքmPdMlr&l GF7 cF,*=g`R^/|4\RBӲЫG1?ySΆ=ݕ{f I 0Š`"5fGO[o&6,OxR$v ]ړ]d6;A̯)lzOj;BJk S Q}:SױގVݕڏg8sE(ՐSՖ RSG,ϐQ/%k='"],{ 7Vmms-ST8݀^8 G}p#EcMgTh 4C)J ,oip!lЇ@0'*џٸ `17o/Cf56s'.}֒SMSk-Թ LGUpFװ4\>mfm:g\^[yx,&逹^WbK&^ :XZDE1->oaL[mmU;i"Rsz{EtTCkm2EÆXzZ )}+Kp1 2EIϜoS@TbhU^- Lhz|ZcJƎ퍮o(`\,$?5iHP--Cil\vVW |iv(ú[eq҆f=G|qE}*@n(mGᥠm%cT% [Mu˿U[֞74"kh_U]}]Tlg5D^3,xA@x 7զ&o ZgĵԩkRfH{gjlj'Ssd?~$lm9sќ"hmQa{x%ՑrCyôūUŬm Rrc1rwt8lJ<crʩsoHSn~/4J]`-q΢֣(K?'ȓDkG^ L[1BnG%%2=4#NV[<m(]$Nxg_{|Kg%R*ѡ"KFNޖ阇ū>̋KY}&q?mxL*Jz2.SC_U])kG -l,F ߬2=TU%㓻Qo^=lQȪn*d ,Smhm,ʲ$ڊL Z@cz%O^t2Rk[ClXoa2E}t7̟=Ӛhgf9E?b ?X2̇(Ϫ4wKFg7ri\ͷ3FAry_ SɍW jlFSF OϨ#ݠ5x PũD=^f?jC]xQ$6yvВJF\О]X a O ;vp:68. pBcq -k0hp-0&R , V(y/y#RGщNHS{s,I`60'g_)IR VZ^\̰'L'5#6NPu_o`#3OSw4Fe^1PAW6,_̐οWF 1ĶasSHa'}1uhx'Q8wv,Dzb+,%9? Xs)!cw,%?aeT f1Rw}WG^4c:%s#tvؽ31k'H59:F§YRdYޭTvhzW]!s *-xBݭ@qP Kqw>ݡݝGc]O;~Q66'ک [^w~>Z$NA!̲"gx#ék^SiIQxIVC+ x zrL01 MzFZ!OruWKv[gQJ]o-yj fn"O9shگUُǜn M ^NJ9kZ~BN,g|`9K ~R#!fEtYnk?ێDEgtޙ[g5Uv^Õn8ǂ"\bΆ[YO~#0D=ԁXnuԎi[Zj4V*bw r~{@9eUKYKnBX/h#׼̀z9iWmxJ Cw9;oؘmݼ_5\Kíbi)[a^NA[ 3Bn&4֒i0Eo7~Z'A$:q0"=$08$[;yZ>C+ IDATF%HWe;9?ӊV/L,9S}0mNAn>W9L)ȩF1#S7cUT fwUcjʩU96d`Gz檪jmxa.03h v|-hsc5w?0[x<; #K<*PdT=Ň.CmċԈp.nhxJS9!4@ *rZ}b2NRKʦΩj/S,+18(K;0&0%^ױ%36Gr֏9qNb'™ jc+P@c" u!kBdWbE#!hOqް S&Gu\R^8X/`*|y>H“Nu<걂oWTNm]1X)/W;im*G#p V2>.UJh}1V?7Ql2 BEw`?{)zq `p*iFjَmB-Nn5 Rl`%4&,))/| al)P:C)h+.B< ՞3vqgf/9lȌ𞁏to_+?ScmMy5sqv۟(?#*vO 雖NSq x=e w;r/3ܨ`t0_f[ݷ[W%7eK?X=|";d+wfN@9r9;hʇtEtV3x{}XA܋ auuL!>-'zdCXAl*ޕeoZ)ȕ1_ZV)[DiEiv۹H?zh}㣖t =KGMp/-_)V FoWѓ<Γhf8[}fq RjaMW+=YR;?EyrS/KxFBUO:а((ïQ"*"'ik be)r=MKdAQXjhk, }vO [mLš1ߣZExXRcͰ`EGcBĻ9 wPFJ ȅJaekYXh?Oxw^ ۡqQ =Py ak=PM/T) 9!90W ڨ-Sua^ohSDk}-mGciU}ĩ'SKdiԈ }Ig/$,ɢd(B 0'821: ̻=ڣFް zI{U WeI'S>%0p GUv9}N ݤ,XP(e'XM^ʳBUŨ }V q|yw!ep7mxۀAvIvi ")^c():Ae1p e^hEr@?Y XUC A]ܧv dP[5waZJ@~-gIXh 9p;eB 7Z1`OXw0rA]HSd(%*fc,OfYSl7*! tdgJM l]iDbk}l 5و"]|PkE QM#FLd{>=\Ի?7s.AV@ﮭÄjaWU~w%A(s\"Df=\z:bmf#4DVȏĔ VA՝D9KOt:"GDU~Lwj{׶/5Gl^ NI}"hCl\+/  -_C^]&liD"Ov?Ħ?tLWy/_*1-D=5j}m0K_mcͩ*'['¾SW[(T<Lja2s֟T@.'fPUY.N๵̧cC(ĪxNxbNU\Z;:㄃YܪIu>g6VzC[r^%ngd2+f$k̽u>34p1ͼ<;֞U#,bύfTq?- 2+z'xz /{ڵ^vXּg|oJmVkYS>[K*ЮJ,:l,k|PG ;?uګjmx$Gi1R&k5ۖU?hڂǔc H_YQ߈Xs,7a|_TI<0@:d5'_b50&jmsNHQ^b*Ԭg<}|^><'{gUu4?N1sd0w]>;U۪'k5F5@,O9p+"8VaS;`%@PM$aT wȄPYS=.rt+ TIKe 9*{\aM&HU;.Ł\P }12mvF&cp˸CB$l[ 6~ƪZ[0f ЃzAJ{ v8[IW ]ƽt]}jV`sL  0 nvuR9hSlЇC D~ѠjZ>UT8c2FMo={ʴZn4=]K]lK0i=7;͙& 6Ec= )&6 K;j%8$d2C{c=P`6磡* va#"\eS0\M fcy{mIrzxÿ(c~Jo}Kj*v;dܠ'z D>Qz_l=a$VU]`>B3W4Y2Ì`%fk":~yf%u򆣙#&l{OQ6k[4u|/Y}m(xO呮ֶKOí@!Nef42)YV aXA)bLU5VUPf[P f4[TLQY_^+VMy?6hvSd+\AYwp n*N *4 :gn3ֱ"d63뽬j5l=+89%,;ci%e@sdl2Gʢ]QkD04v0[N8|7ӳ&_e f1ԦǶ'\S+\Q w<Us(;8 &RIj%Q޼+#eU0u/FSm,¥x`("X~5=ksƚ_[2/$-Li ́'Vj1z@[KTo`UyXEG &BDg 40Ԁ XGNS*C5&ЁvT8:R c_)Ak DlAЍeQ:+b+^fc%. é+/JR !\JlUT.$S;jLL؎"i ExT&bu[JN1tDX`3=jq-Ն+cX a^R h2pުPo^P v4 A;5~QOޫAT :crc;v{SguՃUHGj&PE|ЅScʉMo(-j7ՃTBū, k/L=wB҇2>IUpVQͨAA^p< Ca<^au&)lGeL+n-Hb0P,1P\u5l[>qZR7Q/ah{fG|2)V}W\nM}i+=ԛ $@*.U;DSLŽsgWhXU;Jo켫wV\ Wmz:[h8![Ew!y^W|BI3z'h`DzS;!('a57Q@sC2~zV$epz5WtM+7tvnoOs=ԃL+ ڰj(֘o<NR4K!\Y謈/pɬI6s';z֔ק$(mlXv3Y:譠xPwfA5ۨ柔ei/TV/ɂL܈y5p~MpӚjSGdks۟!mQ!X=T QU=Ϭj|`Vi;R xBwX;7j$;q'Fr!(zSl$I=eh$ȣ5v tcalC6}dD1g=RHR[e **BNb6+@:͞ZUFSzv@> h^۱ZYKa6m$쀭`M;1š:=f0eÃxr fw"_FliWˁǾUjn5w"?auu۴LƌVf64̂xE;9\A[B[0~ 8@jyGeΐ<݌]/Wm˲3/۫/Uu7Ũ=D%U/됺!7Kj: ֳOÌީSzc10+㫭.̓Xlt YōQS_~Zo5bZ@];4K0o zapCA8 Ո^`6+^b4L5\J9*W):yɠj3a)> /~e0R-Gx =Ћ5NЙ֑aQ A%i DNlAO!<j3sAp eVC9%,zr7P u>}Cyj;S<&CathF+r?ІRk<lT!K8A>ޘ7hfaICs0b`e!V:- es,/q, sc60&˳d { ̏v%jJ?)Aq>wM7sVM83?^hI-enWrs[p _:o5ʫ9 &(26^*.?zl4PǨZXm5\Y2׋_ګ"gFg7[Z[ikhkFW"Ěp+eE@?pOU2 SPZ F[%#V+8^\v5_ϳ#Z k=eAONʁ;'Ӛ^>=^<f[) 52sX]c{Fp<MSԠ3V#y!;Z8}^ܩ2}SkDZ/Н0$C.a̦'y,Cyd_`wYmom4NХȅi^VDGlc76(,ܧ-n\kŶ{oV~>:kh+).+PL 9-͛ɮOV詥9s86ꭘf0]V C,YކfJ(M3 sb*N޾rӉsm۴j-X '`.ojS+ͫЪ;Hgߣ[xuthO)_90^:ۄTw Cag(jDKj|`1' ;|aח6!NSk_¥xwEM˖,#ՄEboۈ!d7Hޝ'HEq dcJu 5z3&+¬e7k& Ȕs7z: dd`9U**d ׍A= k 4eeͷZm~6,"LD XyM&)Fb#8%QǍ겻-Wv6p)o`\dprDB8hrgoy$cv d gt=ed0u|s*p(k/=C/c%;lc?[4^E܃DIqs/UVdTU-*^I4B#Amp&a^x?A= A| 4S+ (Zl,dBX忸}*›4꣟TR7Th{.wc!?4L0"`0oÖp,):JlBWiUUQbc a( >0>{&Jp=1M7!`vyՐN؀]Vl>݃T|J[0Get 5Ǜ1@u( d(;MAz BU@okFY!v{/!bi v?fpMf0׫tPm&3CDobHN_gw~׊Ogwh|uX33'ay]P( e_d.Rc I(`s+D󨎘.Ry;ֈ'9Goa5[tiJay{U^&/'+52ٚT-}@LFπ?0?ٺW(MxG#ɵ7x^X9GfHoy_u7^}ҟB9OgvKEc2/fS4zYͯPAoI\^~K^P9?! ޢ( D/,I1*lj Q;PY*NP{.uc@8JT{ I# L7TVmʲ^j7ܦf|Oe( <u!6,x`N6tvK/"*t>:6)S?WR('܇`( D(Ra|E,;0JVw|!fcp%>"W𮭜}<+Ph QH+ciۢOŎ4ϩls2]G`1u{G MD0@^&e0fё.@ JdK̖8s֞_# &kin|nU~y]\0JiÞ,H;tY+861 EBn>\3g+v'`HT]L[ZL7dd&?ӲE~)*r*q|򢏷nƽӞ:AšcQ3q~}~=š<gi+6[[!85#Y]AE|4l}]; j~\eZ4906iXCDV;zkHRUOw>=_|T̺ʚk`-D/_~,ϒd]Z Yv&Zm8'I[5VavhC2T\P5%NG`%+ "ʖB\ck;gj6kT*<NJS$*L\`;/@S~cW,lesq$xz&Ok!l'~vNFP|op+k( eq!‰TbhDuʩ]\A(އ0n?֤O9=IOq,\,%Me$”aYȡ`{x6CCp6`+c$a~MĚؓR=i%K5pa2wMWi;JR LLC?%ju)mj-VqAȮZ>?r|Rl̲Q\;lP<R?roj?DffHn՞kEq(jA|!/RyYƚ:Ԉcݢ1.?m4CnG+-0k=|rd/'Y|G7ͳ)Z  a%=*}6^_Iv.ϰ1?]#+w`zal?孍V4㿰1c7Aعٟr|o᧵_ymkTTdkdT>SUhz_)?MezXFHgBc}Tq:+x"z<(VrΪ._(^Kf_7O;vWߴ񁹁檀MFө RM諨zLgс*sG[E[a5L_r 6EЈa4iހ`|/"wz,k1U:^8u@Յ**;^~[Dv!a[.sR^7jsLuVQ=B/4 D5BÖ1d]IQ5tӖS̀]X4TjYki(etA+&TQǘ>[/D爑V]lYl'xz6[a~%uAr+?Γ]/D~Z+5yIf#.XMT󩬩j7suqwZ,mt`z(8T  pCYMZge7x/CO| ڱԋeU,nopE(f hus%vJ x=JBG67> /k]p76z|?[n3&F_@,$6.f8$qKpl)W(83UF9E*rP6Cè?:Z9|aTe4 ?ڧC ]5 XCL!^6l\ZR6fŘ p<x臥ٟ3B8Z PP2v M 4  SW)֫ `9j_/lW⪹\|ْU %(F*L~!DoY5ob)}bE8#Z%0?k*Y5ށy=WwzGQgs@O?+ʾiuc3OJ֗;5[mzN+`Ac1=JȮ&(Yȁll٘ٯF-52 /V<{MǞkc={?{c^?TQ(中}A𜐁C>˶'Q"+Չ]xk[̗;Ef@X_̉l=XJg 'Tcjzz(#وorSXwq3sf;oأSz mGbxnl9˫s w K/g?siXj #6Whe^K;*zZn"X?35֒&+ULV:P FofD s [5 âZ:h~u4r೴65tJ8GS"7Hq A8AZ%;viPACVdV^)UP6P;hߓ,mϻ3yڦULv3ѓb^NjYN9`g9Yy1 rYБj׆{zSk1  -4 R _ yYMM+U 3ʨpB]~1؏wyK;R'{XzI%X\uX4 !>a܅giim˺?g`}+,, d4Wa\^S L\#ڸu*b’(j.S}E"Dw5`xTacLn2z *-ASZܥ;n>@}3T5V@$.6W+t:nKY%ZZS5#Zip}a3/((^Z 7B{-|SEN[;o|>UYf.nXR㴋lCz70/l6q"J_OAg|HX63/l*H! Fyb7u#6(ƆF˂T 8|R|b1>QgN5`9 r:͠9GqWj܂ŔVl6U*62 –pC^WSMp0c|AC mh$ S/p$NP]-+8Vhu(;@n*"a b0fiqPwAM {b L>ml wS4ITpsDoRt bhO{p&5 /j;V/UuMq!/DUFFZ3k=pl RaT vS)<s n &e@1E7le/`yE}^"n91wGWqX]Walk3 6BZQrb!>*<+`?Lŗv`mwc \)-,,9&i;y/;ߔLKT\'Zic3F񼚮|\@@N![@=u%_=2Ib#.krk`դd, C&{4Ҿ6I J#Jt6ljAU Z9)jVnm'ZF.ڧV]3t*1Ʋ@O^|4 ŞCmJRyb:款z |W~UOʄ:I Y]qx*SO[,WeeY7t.x3iDU߈-Eio˺a]*>_jF(̚n2>Pn*5zJ#xoc zU:oQ#:Fv"-⛑CHvSJ]e:da&Eó{+hP$gXK_ WMktJWse/~Wp.JO\ŇbTl9RP+[jK h`'Ɲ`r<D+h_ {zj /0a;p\>Ǯ-ZKC|,A(Eq$ll:OH;1?LЌepUAP uimPf4q%MC+m>mSXvNO8[uh/ʦNC2TUFm =Y6Ւ' Y U8S!1 ~P^,cNdp(P,v]dEmэ}({3 *)ZܐzOYmB)]aPO8hxs`MJ¡9dԟa(e9{;s1nd#|RѸ4'v*쩯}h=pCVYԹ^*F~op3!|5M8?e ׿aVL\|<'0+$ؗ{} c*K>Fe8}e=ڒugXOQ0,IoF f3 6"v^I(OM!p*e_>xW2KQ_g,31hKPo B/(+ d ;f]qPp}O,*7:`q^M0R>q$ IDAT mQR籰~^[!i D6L@vA)9a% R˩0ub+?Lj6fuD#=Eᵌb[OF@5y1rIW?I~7iTKͮrkπi!kjm‚X2 (wTea!dvy,*yjrO}O(ʢ0X=g1e (x[jeX%/zH!q<+`9R|Ѫ.0VQ4`78BPXmxj@:DXyэ3p]g>rVS$gyՌ%Up"grʥm-DQ*nC=̎7Xd&(H\Yf'a'E d\v5FYN\JTm<ӝd} ͟9JLj'*H/i/b[ 5poԡ4$OShbn8DL{eΧʆ Юٿ ?6mp33#m\]@֓J67}A|adT~1Cv]s%1XUiZ<b@ouДz'BW->:cP 5q3/)4ooٟmX3OØoU^1sopҋ,f.Fёkg ,ͷHS\wjmQݽ!"vK5\ӜKVΕK,{<[j*XRFu^[rMmf=ľFDE؍|#U8VOd'\ 8,d p=&\ ggrZSsz;(Nf܍=jߪlИ`4f^YTe؎@YaZ<&l8>_ p5ӂt͘itniT8+iD {~B #sxBS(vɛz!VEBFMa=0x5(N#(5di`P7uX4_A'99+aXW% f;[<}߼| 0 ALB p+]Xah'NU#-m5:2`oay\jPh pV2F"ۣXY4f\>շ}dEqĪwmek;A'(`pZ3KYCnf7̦2kX?mJ+}>g;F+*+n ?q_ZV1\v|@FQk.AΧlyr)? ?PDЩ:U;R :>X9+4j߱ ~`oUSV142Dtx.k/O!tN5PcR^E]=9:;kFMǜ~ѽ[tyqNKuҪze[`c~+I0&82ߩtԌȭܓVwDͬ2ps.ϗLw06娽 =ʴD<:P ^FSAfLM\/wP=<{C#~nq!>YOk u l *jKP4+~5Cڑ3t;]*\ -թB1T$%.mɆ8Ηi4q#Pngq,׽U+C )cܖ K;"Rly}@ÉB, d.qC &A3&ib<-p _ ELzK5i![Z-֛a Tbs 7D0YW|0j3=R PapNBR +@i!lV258Wu!3 ᪥\baQ׬Fw*ARojJOU%5O dMGх QX| ?ǶG&|81 [ {J|  jS*U)R38U ,5.i&\p!2 4Jd Ԃt4f%}ЛQ4y;W,aQ:EktM(dS`Մc8{fQ-*86$^,:w{DgvV!~ N+Kz1usR10ȫufYm6nmҘ%uV )fCv sQDxpqxmC]1a\W(aN'oC&IzcmKD@9yIۮ5'PD?dM-硌aO #0P$}r}O|cW 7c)U:Yž_ VGl3칠xWԎ`xo5sZ{=;#{ʒlD9 6Z*"yYZ<,\h&f4C;ml=7%5wR!;]gYr;k XX7:To6OϞf6"Ǧ3W3 *e~a' [>'lACYgڤ1*_[cH znXcjuO.nh~zR=~5g~ZͤZs7c\c +j:;bŝZM_Y$M<ˎ# SҬGVhlI6NT+KQ$fMXZPOD8bS ;,Jjo0rPyv?V)pK 7 *Au0IwV6":8ϳJ8oj/m8&EltZFg9ёdQܟ{sqo1;o#>Ouĵ_\DyI+`Z`xR,K7~cіʸ#9>6-ó8Ai *U}]3T}bFA П:a0tϨ |I+p$gt҅@^n Yq-I;d?6E%$KLW=b6*AЀ2kS v ˰Vd+Ǿ%lH۰=wcΗ4lW#ZE5%'%,S(-'K4xkhA|FEc -NXYu*EcGxzvҝbӕ,YFvů/Vmm6]{) 7ܧaЍ&,ItRd["5 dkTucӡ3;ͮ Y8c!|E6d9b3K+؈`.#*T6`\Y;8p4}X6~ɂj-x&C<"1/c9X=u"Ej*O`R1XIg0͟C^5N3Ɛ"a% a4RM+6{4~>p| y8F6ٙm M xO}qX.pS$;RcH}P⿘M*ICjko( l@a#<ӡ#|T>&wS_|xX`"pIUِF0ް+gpmDQa4֪ɆOաjׅuD+zaG"^ꖨ3r58Ef5m)qPmEX0DY9׾H ;~U@ԆD%m ] %YeC8sݷbE\5-oZ-"Krg=2Grq)cl/A#mwejEm˲G쏂\5<۞=bT5АaX脿czcih583mXQY@+W+\n5!ހۈILj~"^KtN )koNRzcO>UH'aMj7灧Vڙ`W{V9GA=LIZ5xloPRCV:(h{E1Ur$u[/ɹ %Úz;5TX/={6XeTLɋ)VQgߡ.qKUaJ&QN5/0C| 2ØQ,VgFCVef Y2N*5$w$T}߼ZޡSߡ_g)ލc+Mqg ;Jvװ2wȃ-D~ĖqAZMhXr}n䅺o@4^ÏP`$B,\@'|F G}  byXo(:AfGLP(ED+Mꦦ @6{Ċ0î0$(p7'Q` fĞx~*B6:'O |l1!+S AKj+CWrZ3 ,/Bma݂X̏r74:|?Nl)|+Tfl05' ngG4HgКy4#r\#Uŵj+Vgg/:gF;EF텵\%ZE5q&O2)ۭ6S߀M`; Ft<2rCOvj)_zaC6o^p{ķ,4&?n7Vyv1wx{%yת.~']T19Pw-5`?+&rm~+d2 v5yk ٘n`Ya2QSo0i\̣Y5qf[V zcBs1c]\ٞ䇡db+~c"L5;l=!UvZYMuᇱ1bw,E5O!n0`1.l.J8g;qp0~`3w{OT&4Eei"sG)G+gwkК&'j!і}?0,̶i6:hHzV"4~\Lo7㌏̀pJM.&WPof/F XQqljW.y/.Iɒ~"u>Û4Rh|\e%W*dt7P9>WV(ouJ}^]+%2׾0{/x8Fңev]t&N-)~@3訢=}z Yğ\h$1ٹ]յϖJjn 0]`s5?#& E@T6g@/#^{SUmC\? l;;f ՞rN{0 +|m#[%,ĊH4=klYhvp5Ƌ,8:i3l`K!A#O}""MڭAX ' 3k>3[+d٣`y|CMOm9엕N+OP GƖCl^M[nOw͎Yl: ,f1Y[ka^Me} I,;!ZML~T\el7I=jK+in?rg_:Da|#Z9؛[- n NT+MFhtluvpgv!ⴿn Yci<}5}íahk휽='8-6Cds8CoF+s MX}f'89l5T.!W)1J68,c3 eEl5ӕjC(CYF^̝8O>QX?`kt> &jN|.f^0-,;?NSa >}0FePxGJBojC[Qh܄',*Pg8 lĮ4d 'E,]y4l7Яv%xS[OUAaKx%Cu^m_`̇hjp7?.F&:_/ṗ DZjŴ~1@ YYyO>-?}gxjgq p4\c`/z*?c[U}wUoPG*(=!'|p:IƨKÔя5FLbGxV4`*Vj2^5ۊu4ʪ%CC^];Xap DCi'CϮx]Jue7Y*Pu+C*tw(OkzpUS[`@:~md&R_a)ye*.Yy`y hńQ,)ZZ-|V/Ld!~V4j 7xx|s̸fgxKxkRTFy_aZX"쒬žkoE;l6QEm'uANVy%3vr'hJȁnl,Gh\*(fJ5*C1R%NPHyqdQ i{z_]:[=a7ft4Z<wQ.A@%9EDԙvxLwhUW~U<1ߵMbz.;+Ai2.@+>4Y{6;E8]*[9gx:*7[b󩺶@ey}W);([%e`ce$gQe4^vB -^mKGi45(2M (77py!,Jt]ϗ@@)[ Vɭ kVGLs`%PjJ$뼱(H4/՝Ik7ܵf~X뺪CRV8T'$,i37={6:q8y?Kqmg~5^qGK%O@k_rP+o`_JEW@MqWA"NE'|[ö́A C>¦ 8Z+\3vfq,)iVP \TPY7$Ї:\ɻZJkm:WѲ?(/f8H |A5]9Ua6T>(+9YxC|KB&SHdlIX_bʖsM}vTQ2˺NY]G?p 0I[)_i-Ewq'ry@0))~ ~J K|1b;[@hy]p_@g EsEe>.}}k`O9Z&}sZv;;jXj"Ayi/vBLNC%,A}D@aUWj2dTE9{uFp'l2)6\xO-T҉>U֪~g&0X|<:ߢdo }?|P'8C_ꄇLOI'Mh(-Sɾ#cJ6=Xn(~KR3H^@{d{HG!dEhdMQOV`&E`2^JqbpRӗnGsG@h?f96|Rr]r/j hgA*`KMg#CPV35"1+RU}y;s(:y>u=K`]kC2ɵ5^_eoggJ8}:mYNU>R;5ayjQ^WO=P[ȷ(2Ң <7?&,Fa9XNCYQB63"W p|*cv׳L)0^Pbcw+x2ZOCNTaey/z\T`'6tu+F=KR)es$8#kQ=] `/?9"7p/r&SR%zGe 2]f<\ʤX/mvC/zx oMlRb}x2o2' _ajmmXJb>#m0zh##JPمNǚX"=V۹m/+8V?_0^{P(;y~Z@ϠR8d+→fQ0u^w6ҷ;@Ȱ@p`=* t*[ ȥx"j]mv;ufpfj`y3Qfv(unBan'1 'v]yJ[7\{"r;2"#તԅfvQB.%vIݚ2+36E&`e&ܢK:QO>#7Jke^9U+Py+xQ% . SX$Txt0Q=D XY>OcH\˗%PGRQ̊yw`R.eE:ԣ@BZ~l̺J/Zr6ճ^bKY YQPRYU( Y ̹RK"# NbޡW%i Oc`t؏->Ɛ|jM~NXV>9\[J^[G~Y6S. Ie]>;8)?5-ƾP`:2KJTG;Dz, %}.;B;8kwx|x٘,-?%%>%RrHn)DYmdo}ldzWz+ޒ`g*)PF߉:<~L7 s[Æ2GLxfilMCsdO ap, t|Z*y V d([X=>/E2|L9Ax gDZe-&$ ^r?m c(Mv؈ 4( AׁURYf s Nge˘>b< &،XkٝCq^^|)G GtvҮ47Ѓ(N+}.xYy3'ϵ9!w{7ssзeR !;/DYȱM{`Ȉu.Ta5.P&T^-=Nd2`}@c=E\r|kW'"Wq~!cAwzY?:M %) IDAT߄߄#]E;Q߱TkrG^Onۧך*cEo~vQ2aHiSz/ ſqXo~m/rEp^iE%?kyI" 8v'77^9|la+>e3TQYĊd8/)..+5ޙ`]lŒӌb_LDj |S۠_ @6:B[iZzU)"P^)hB ҲXC'٥i {a #w( q|ϧ$gB,eVCUEEReqBx?{,&c*<+, 5, ^v~Ddz*/#oˠVe_)eoEsk])^bw<_+Ul ljjV^|6gl5k@w'X\ne=^b٘i>Җ]`w`Mj4);`Цp*]L3-jo 2a9j(NG -F%Sr`N$Y0Ok~G#H((X&9]3y9FI{+vmZYq();?d^J7,!?!/'bҌ.魃 .2Exn?ILTT<˼{`,,h:IG1X Ortc`Vg\[pF((\0ڣa3]0#n,mՑe Mc1nTϮ*Nwv:[n!D[4lOƚ'N؈gǤ;n(^l1\j#y>qǗ)wCG'˲PY{ܔaT1;ʨ ފOe ϔHxH}Ii ydXcx2[g@=B|ሆUO{Hͩ(?*!,x{A5֟rxu'`'+|q;G< `{`44a%~Bev?m1ϢsZ-G-Γwј{yc`ܦbͫV?VmfX^ʎJ mY)G`AgkÉJA1\N2 Y#dPxZ@Y1Z/2a;4+_(>̤U.M بэjG(GRv!KMjMP9On>} ׾17t.RU6̵HNob.ǴǾȕy'FCHeaHMdxaoK(ӭ |nc L>4|`hc YWS]ñl[ 2\"Z*OpP*1{=󃫁qf Sބf$W ΄I!OoV~(k?Kqw4xdI=i?DFʭz>-VCza<Fy /]^ۏ#)c\ŧD{Tz?-f=0&0ZGTߥnYAoh(@uEYVt2^QiU6(skj6Z=/?@hC euJ&cWx2xS +tq\U0݌䷖*FjM`aj=q>lNJ ;Jb:w@#ߞɞɇ%Hٜ$y?f)"3;uU5;2fE<#yyM[4ŭg lAp5lM +;a#61xjOEcuwيJ@6YqǛN9y/c99)J1W:,Sz%@L%Z E0J b5Zf7 7(0JDpN0 Pccr 'lM}i_g=5SɠdZ];f~դW g*k ) 6ӥ Ũɱ8h6 `~u^ZGp+r;^푬l`w ڥ'ϑ2"<Q>3|FO+LU3PM;DomgqT1 0mX@9(8)-%˞}ۭ? R7e(,J?G(CJ˱3뵽r'w;-DL`cxs#U4wTmKhl'z^vvdu EEvE?k-ZC>~~̼)Rr~;k_K2 :y]S-SrKXsn/npΉe>0e!4>^OhFul7W.[ >Eg$U|-Aٮү.`Bp]`e5#+])P3KZٓy&{9Cvnv6e-x\>9J) +q/a۽}v[#v}mjUɟV>7wwqˬoi=e"hcPݺqvF>g߆Y"̾ka!ֲY0ƵZO*7Z'UY`|yE\!L u@E,YiC{. xhՆ5-3E=twUmZ;/^M:1۷{5#y~>"GRh&粇wMԤq̨bkV]4|}W[(% f㌒v'{|*ujG>6Kh:[z NlH8/VX`kI{s('qJgVo,>S[*L|~/$Mfb&Q,VĽ6VHۨfV+;hQOl6Jlnyk$5#PfM͔3z=cQ Ynd.rXfUZ̩Q;Nh8gctG{1oc9NVYFbthlOiUj-Dxa5boztHpҊ~\v> "mPr襴|WbV2b- >$͠{%aAhϡy-m4t{ŏ{+R-X,cfN:}yZ/~v>J4GJ ?[YK~MYx}6/rGMei<|X]yCߩ<0 /qA@naF .RJAȶep8Hڲ85߲Wՠ xa3 9) rv` f/`vc)9W[yy#f%Wt Ώcp+o%hQxK휞v5WfxReH{( aeQ:S(Bg}e2_Vzi=YEU\6QJ'/լ _oHpc`(Әտ-y";w(''M 5ve Mj!֏ S[r=9t/k U 6DS}j$ n;4ϛ6+6K9>Ą_Z"LhMƞT4[]ʕ~"ݚ/#%ZSYi S;e*rcXCfG?ʀ|-vjW[u슐אKJ51ޕ>b<ښ$+Fp2q, eQvBv\H234wbPP̅0 sQ'JsEW$݊VxƇd&o V h#xi6hjڃU;iUL8a/;N+%.kG G9T;iƛty)\6x#oֶ[ޱ[b؝}ճCGFP|VFsc%e"yldK`ƟX^@˪)W6"2nuvru{ Q|`mnuU:.K3z}XBE+ M"$Mew`# vSq:`Tty{t3* /uM饎*FAlր_."цOq[4ef;?A P WC!eC%!X&K6L!t_s,#>x-f4]#0^և1rȍ.TKĒ, aCfDrl# GI07n؉-tXN(Z4(!lx2X!/Ab7EeByX67YM Oĝ0A# {`47lXN _zdo:k /7V,SHV>}hWLs<菡8-&oC ?ѷn)K=1W6e&89 ox yF9hg:tz),ƨ1"Yd=RN9<#>`˒U lQ(ZA2*e 9 u2/8Uf1[2zڋgW}6D;*LpԌEc">O/VɧˢeCW/\MP? \c h'?D LZ egeډǰ^v3z{x8pg$|`g%Z7v4F_F|(9).qZq2ιW-SGʧ~v.]NN~ha3Pk*'CJ~]]<*eRذy:ѱ92{K],3 Vɉa'dԇS:`uC<-sF;tafy1<-%wkSju>HH>T/Z!oICC%YnXpxBѰ E6E5fzƸ~q[xF(|4ש~)as8`ɯՙ]q 1vJoϦ)cmZ̙U6O1s}XCd4p 3j >{.ܡv#tb?jt>`oB?C%"=w aYs?e@*f62B4LL1=F7x9TfC]et)ӵ⎜VcjP TT 88/9,Ŀ0NfW!E>i#68>lC=XY) auȺ1ɇ)YOvNX1l35iWai`j̃УF)lON$,6}v'RI sPJd%emؑ8g僦㲣LjdܮÎ4^jh]f9~;c/3s d4 AF7T=JG&dWjv˾pk]LT^;'>,*,ML+fY+v q R,F\HMB;InaJ;]]ޖTľ MBl ke)9hKۃHQwŔvX <0~JvR Ykv,opN OdaGt8!%U^H#bBc9Ca=SOT?DO[(`8SP[):,& YCۃ=ۭ ;kћѩ ]?IuȲYnʼnʹ{ iSUg!mNJ65Ԛ6 :^be\szW*>w3lf[QqFLǮ*N#Q\)LOmMqQm3k\#IDa dž㴱d|q9*rѹ/^m7&QsC+RAN;])䩏{-@=yaKqBl她'tW:TRљ/=-ܤg4`wI`hJFL@6  .s W- ?J\ci(}#p>ǰ|wʷHYWQռNsQGj$>X[ᬿ'_lb26)=[R:Sai윭吙z-X>DYQ(g]&A[)Sq Uӽ*&rf۽pN]: B?kuxCKZ Y;^]䒆Uۛr3kzA+W&z Vv ~?yϲo/^0Ι_Ҟ?U?]n IDATHe_VQIřZ~Yo~q:Kq,kA{vFYw~R6r^TfY[nhIye?a<gE=pV_1˓ugS9-B/oXО` bHȻ1J}=B-.B-sWk/v{vy#K492-?ek3P])]gq^1Kd-Hu2xXW6#{*HdNBC)\bK0'|솏Tm^\ǦPħb l27Ld鬒:+31ێ'([p\YBұq7b gp]谝I<.=@#VCs3c%Ȟ\!.eV;˹QIT@gvͤp_ Cl+F&Ǿ]vk6VP^W[p46YeddWY^h#Gʯc{y;-I/UN6HB`oI+BK#-`j [hl lJ%,7TQ̂FxU2yh9%ߊ`O삋!+"\ MXPB]!jQi.\Y796Y&:`!g{BIrS1i8'2ˉ-h~JMBq8װķb_~R|Fd9\g\P1¦-0"w%wU0lvrt|7exɍ[L*;1t94 bNh EZD =#5\s62+P$ôWSRF++CQݳz W+œo%ZM/Y7J L/7Sv @ j إM?] Ϟc1e~d=~uEH+kѮb 8]ҨMJ,>ۨE"JX)恗2}f+i?)'?TՔ]nc}Bh x%xXWb~ٙ?\CMYn淑KJ৴w#ciReۈ5f7X8^aihZf]ϹՇq&s][۴ٶmomf۶63 ?S}r#T #+Dkg0r,^-jjaJj:-T+{-QiGe Y_f2/4OKVFZNRswc1U_ˤ<^,an>⾧ŏ|JJe'A䰯8R@@,4#-Y6LVY3;Ə6]8drךͽ-j}Ǩ^N5n4FutW;`!] Ѣ< >vO.c-{L<>7Ẹb`8dԩǺf[G m͝4`۔?mnM_sw2X M+w^HSeM2ce6a;1/;EHм^ɻm=7Ԓ VkǤ)IuX:عVM[И2;`$ Z =< Bal`0[E0:H8Gs$KtS5?FG(Dޤ|,ylEa zH7NMOT P'`9vk)(nx;X#9br;i)֥p]vB:l b>ֈn9Lt9Vi'uEQNOGG=N!Y1>2au7ƐMp]s&by\g,4a?̇wt?X /`?S*߰*lR *A2bE0O](#7= Yi¹,s3z*bEY}΅>U#k`ű=xx}v:d'"Xdvw<緗q~e |>+_sM`Gu·R9OS sJsU")]U8v&sb3_ѡ,֩2TkN#,X|pF[OHR |ğ+oS <olO\6O{>45gp я硗 /:SQZl@v(#qm8dgsWLd m3 8Afk^`*Q9vj ӂϩ40Af)ȏL| |Bd+![;.Mc|4<aNSɂV{ +'lzsq4::t @<5h)g4Fjr9$ l &^PZ/T*>q\X^k5Ml__)hQ&)E( ')GT,_:Ў eՅlmt+nxJn/({Note~;7nAgT3,]#V'fDQcQ~ ~>x-;x(U%݇N*6VEvj'5Rsr$Zfq0w'ֿ[oK;{mJa^\. wl`Sk?q 5D5|R$ԕ-B$165YyZDps=YcneydMR enD*Ri~+;z=<E&:ɿ,8f,7F1I&MA5Tap#7OonXKd7/;Cixn (e3)g`Kj"ۨ3b)D]p`ZEFQb)TP2}<́DlOp˺/fI\p!/~.v׿ᙦ{jxKg]Mg9loǹΪ=/5g>gfEfr:T.G`J$cROz z`vWϑ~x, VwojBRF;=lMqVQԀ9vE>>AujJmZd/NgL~' dGeO6\<[nHs,L.dx c;'8׸N9H tH4=N=g%~(CH01ը'#/*<Dz3c^ͩy5A5];(M JAO,+᫘=^M}-2Z/-͉M_v~dR_ݟ|v`7@VrrjÝؔ؃[CɯMaF[LĪM~+̌CB J?~w/}[>S?m"Z8:MmeO mCyD .7oIW}D[-Q;kʁ@T7m3 KX'"ƿH-4]Ԣfnv(7\YLZl Vca]AD+[K\`o-N6dZtbsj GFLij`OXrf?Ip %F}O cV܃  ~a L|'y8?c^P*!^DdCH!>6i d56PdC;K(Ů|$*|KiCM .A]ɸJb5Vwa9_*(3M ,bPeg-TejiP,/*g{,b} O>cwzw1i .WM:KPUStcq1 E,Da1iKD2>276gxwqIFes=qnhJ~ =O; B.xgicheDx-P ׌=dJy#͓){hjJP -c0~[U?tVM֪+DX(E Yп̡ΐ-Ye=KUQf޿-Z~nو;5~;]>>|ռ5wưZ#u'襏\jQ lAޞsv* |<STÍR)iD 52LQ^*jm;JlxeS?ȥ0 \Z V>o7wv hֺ7F{ڸz+[z~ep$;u϶OM7Ժ<νô5aKx][r=1nutc4vDp^6iX=\Iy{߿s+|?|}jxoO/X=D C;)Oqǁ=ig]j:Ϻj_"f]qBed}R7dxͰ^Oi0J(-w.c" *%eA 9\h Ʃ/8XUj\NY?p:@nd'&>PNkBr;h)?#c)vG+>gT6*%(~)z `Id5eLbQ>U>w# <2ݢtcxze n r^Eas\,&XܥtQHduvi Ts4NQNb H{2c"0 |+upl'PbժnuL[ jy\j_#o}u6:]_" l@4I lŽEVAmk1y^R'!/C\!kʬ0Kʿbe ΋xnhC_dPьn #ZGu? ^!XIa, IDATlQ=\U52cG3X/e(QF^iHy]?@k;jw \M|XE*Eϣt]M6듀,Ձ4 4a#(ԞK٩ZN!1F]V p8^ARA"tSE pZXV)c;dӠh4(p+q4@tAyJazC#XBena8Cp  GXSge-El<.PQ([t4%k\O'Qz{< kTQ3 ,.vVXRǸnC#:1v;xwZi:gF)u~-qŬLFcEHX{ zA:{Dp,*|$;1oo[x{X$ΉI6hJ e[DQIab}_ x"دzE"DPgX0[.ts oAɬ=>G˕:,9N6RS;QiH8чz:NY|C]Gu9z:Un4%PIy/!;!#w -^L YS P%G)zմs~N]khzK{EWhsήYF{ 83hB=Ao(ï4[(XǪ@[ Y|#^aPМ?b#AfjK1 -: #{TYN\EkbE =I|VM=F\6TZQjb9k'TJ÷VpgRb#oX'|2;:@+.,:0>bYGRAx+n8v]8&Ռf)KV| wWG ? ~=)TcTt|az\ޕBzOIb%ē1wcS%*݂lN:P k Y8ǮJ1 -_^ b٢),B*З5Mm4]U|.6xKg5JvV[m^mQ= uQw<:/*mlVa0{DfgvSHlP~Yl/.VT J)#o],흭5aq4C†xj\TގWw4O} Ju/I{=V#Yb&D+op]9놺\ި\K mSZW[.aTRf닙M_#v佯# 2>6zGw]l <ӦMO1Xao64.k[t& C"C3Ciz6]+z\ϭad%CX{/LT1]^thd` QDmi}Kz =z"B@es./l4D[Ϝbl4֗rvHܶpaM"]*P"jv>U;NIp,a [96l9U:^l +SPؓv]n/rSiZe3Xa&qD^14L z`_Od^E^9rw(HװvHp/Ÿ k3.+?R5 BJwȊ^#a+܂7"tJɮ,FGW^VmC! &WIzkiϥUrxEP+vz}Cy*+j[ԫX 2)\l,aIߊR.#]c,N ?b3\ݢVO|~5OnMazu@,Ңyvx BjA`H&(Sʟ6-l9k2+iW6\c:?g w6"xSV[{P+8 ?8(tcsrjG0}be_b]T7Z(syy:k#N8S7[m#)e#c>=Ց%mmN5¿x~96G- _a@%isz*xI֑9l`F8]D2.e.Mru2#րg0UP Jex^؂qdbȃEWq́Bf` `a:~(xed2=}BI܆n1=Z~* JM$ʊA/ᴼķvrx1 b%6bcHrr,*7Úb*nJ\܆I0w˸ϋ0y/h\C!=]٫S]_Zf\a,bT$7{X KlRM[0ɺbW< v&gs\`2 յ[WEgl?V,i+H-qs*iڧQG]][ J\x5/(ҝ,6/jl09n$JzțPNd$8z(cūNz:μhXc2j+aeszgwCq5ڏk- p b}ЊUmkrz`6%).>:T.л(6~gYC?Rg)a"U5VO?JYd's'gVY߬u}kAԍoe5x)Ǯdz*l63!L[I7l&>X^cDܻ'S/QYʺ$J>.,20 hʩWD)0*,2[?ߙYѭBFk׍j:Twg`=+>E_죙V{%1SjHYkCaIY\t>t޿/XF+q<$[*I%,*uԆqmx 刎 I^H^Na+DuZV/CtJ/V%a]rGmC-s5+WguDK /}Dve>?*ϳx&LuECI/RCl>$CYNy{P}D%lkȾ<;Y-OjA?2b(UEiVY>B0G7~{āy'\^Q~cG2\T5V[Vmg rOZ֐K?i?-JIW8^<=1Et*t2eVWD.h\x^k5ۤ$?=h8b- 򡹋&#K TK+]LkfkhdU~OKIM)KY\Gr@_ 'Ւ FQC颽]Z~( 7:xOa%5`(]X25 rp6;NP 8?|gei;nFp}[iL*JbJK$:S{B؈/Y.-!9y3QRMt]]'Al˻.^Op[0E})M#Ex'@EONHB#4U4}lh*i ׯ;?|=y?uR=F;SRT gos12FRO;Ky\X\ a:ܖ;C< PǮha{1 OPKlif2T_V*.WkTx˹VE];ϡKr=ΎAym;MNNwT˥2Y8^d>Z2*EQ܅]#Ru9+<\ƾ3'0۫JMo3'`^`Nvԋ;]L G u|x2_+Z0Oq5_f(-xƹ}MOS_lF)@DvC['ҩ%* nVsO%a7&ӾFH}/F{G[:~,׾UEά3_,%k02(||Œꥏjh uɃ~JjJȴ Sd7F9W=@͒0UVrE30SܧѴ}e+Q*r}:P,|>@KaV;,Ws_^5xBQkeqiܔ@RO)M xE%n~mJɨpm6=e!E$~&X U9ޟ;&i.a ;L@"QaȏxOvvEa *PGp3+ߤ] ᩪֲo0mlfZcGvJ^L;p߼ ۢT_UBo 63=ƧO˖ʇ\f\̜i~͟)pڬO[s OEn6ɫ#664;ƚ)AIrUt{LYQB\KY~*x|@[4!*zޚ.M6묅Z.*-jaA:Xe*Kc[^V)̆(U:yߺ aa˶mZ7sqٵxmu[Ҫ_s`1hҿA(/dtDXdu^5XQu7#V o9m(>XZ;h  9u5tQ'xB aZ~'ry;j, Wdj6VY6M]X.!}md&J@O 7`,Q4Ch : V*6 n&V Z_Z"k&i|tU(R^H'a IDATWy4`̧ݼ5k`1g);Q9M =j2؎ފ ցW.sGb z!8hi]5L*]9@6ڂJV,= ~VJԗ*hi2^ij*8͂G(9N@7o][r`=A(^hfHuŽ6{d0jiy -gƚe2԰D&Ha$-Վ):< jB)ăp.Qp:W1bswkJ;4j`]dfrw=ͭhfHހ/pC؁L SyUVԝW#ϱ9^dY x(7)hxWַB7fSenLKiBW43œ.+ VjΜ5J$71_QA!M%|S.aVU,+fgf+ T1?X p27R*AVmLY}98;03es폄AuJ\ VC>V!sPҺfЬi&&AUqe[e$ ]M, U~uAlx5R2 s? Mtd,w@v& Q,M|r cc6TՁ륩8E-=ث`&Zf>vŸ!')0GR/OdkB0C[+/uR 1Bk8B:1x#|b?6 G~+;ȞY]̻G?|E`Zg%NK !ټ_+t|c$D[p}m3GR[zk'S`$)I/LxcJWc2ut,8v/_) XDF8M%_$w1is ^79+gj7p ^(x+^+sИcc-4%7#^lI@l3Q+ޓ-[X( >KM3?pJDJMcv>C x?gA: *3ai!K;򡭁þZ{Au!x X*󑦍BCYu/mhh| Q8 yA(A>Z Ms^'8W`(Hp6xcYl'1~.+…N3h'̗' J?_#οÓbu܂`<1 DT|Ыp4*c^H'9G+Vυ|FG=42$/ Y*A "05*FyT2-;,.vXvDn.&Id- 1 pLL!eBC3B„{Sf oW9w-9u7pN?? >yRMik:7V5|B,5iU9_ M2,4;=1,%8ëRloNQir3)@ିOo=TRz}*c.v9[#wU (jFv_W˄rNTo-@RxdKmr("Z@ J\W4-I?N?C Xmhî'ׅ-޵yʻQ73zoUGI5J{i#0xE9Y>лXGD>, w:Hf*"Zb<{7[$`&޺'yF) 3 fu*.} Ha?ptwSR=tZ%&mB8 QC7kЂAcPu6S| lŷQ n`5okwtc ZhulPiʭ$mCSYEk- GfFՁ^XZXPmB>p:ʟ9̼L8j+B>U4+˅dV_&A[lAd i MA%B?%U^ˀM \p\fo\ 23ʜe4 zOsJJI`51]gBO4hS lq yL[ ^h KKÊjEÿn DF%jd6mt % 䇉,Z??`k t& (72ln!ŵz imˡ&!fG n%l.Nr^ޙx ,WC&q6l2?|t3x3/zj(80^ClmŇ{^7DVSݚ`18v  s< `6X (<AoA_LQF~ቺO<Ȯ:W&ʈ M^KgA"Xu@WRĂ`8?LsQQ2 .)UtZlIW1P\!g@GP>`y{a4 Y/yoo.hiܼ :~DAQ%\38nxoq3QF!L> 2wXXZ8vc_V`*k)N'ŖJ{i؍(ա*e6/ɞ_JߖHEm8hVy(Z{칱^'H˅BT"ilT[[K{4f=0?7h݃j]U̒Ǯ_eΐ';|I V[:]Ly==gF |E쀿Ep.\}7ZU|kpxNМ_ߵ0of}ѿw;YS*vrq(+Ԇ YEы:4JKk<͞ y^AP+WQaf xI7p#^$(Gk=1pFjVfpΪOkQh`R+dDfm |aKo/܉ǏpbF C44)wy?Ick垷86&: P^=s;.j,ޠ~ 2K`^|费/G̻(\@AڇMs5Aԭ?S;yf~dz49@oǺĊQ;f#:,p*XPou6Nn=cS8/R+.gE9ֱ#n!4Q-$(ss9#+2VBx1V_*${{uX Ы7K0{C)/C_h:;r_6e8G@7I.:2ǿkh5=Z$c4&J]% n/=H!c і|f]3K,j*\4FUꁡS9ۃ/l_bh8a;YUƿkhK1Uumv$ Bw}jԦFv?9K烿X}bUޚ`.u 0|;kߵm-E+ n1>vH0DD nPvcoK0]gY|̉å%bY(,4ACI )HϤQzGJsMͧx6γv(J+o.KGah+? na DhGYoOa OG$K qm+!¾(OcŚnpKO_z{. 3 քNЏe:,́;!oFqgwG,֫Iss2_ϔ[u&?H3#'n>a72ǁٮK+Þ3c wCK*b_Wqp(ZH9N(NePZ/-9܊6'N&AL}%"܄kxEYp)㟰W! _0J0UMĈo7ʇPrb*(6K_ <* 3E={SK5{[9#[BP5GzL= hTn,^CkaAv*Es`E~\!ށ*h:^Oӿ~ SQIw5%_[R3##9iTmq@P`dO`U $TD;iZMFi@49.(ɞ)UO︯c3MvHY8x_/MAz^ۈ7_ .-~5fμ n`7Gkg$3*&Gt{Ք=i9֦XpA)"x>`^ ;ƦG|[-݇p7crĀr| [zOCV+' 0G9V) Rz,+/:%o9GJ?NW3&4^z)F#TOZՌAy3Mo/ k- 6)6ך͝\Y!M# 4Q zh+(VZ)ې l):M/ (rKj#w~xFg|\mD~iGCK`$'6WJd}S~=:k2M(D 8 Lؓ-('~h9 $2%̺c/jU rQ^.f4ǑF>HM֏U4 묈yEІ97[ 6}l*_;%8B~gti: ˢR U d !'za{4i ßhbP\i+P=HU)~K8yNH:G=it_n dWےR2j[lTEHa;}Hj@Z @Q#,d0Qc3T>])wmUNήeD SAo0cjGW&ry: ~rռ~f+#S@Y}d f6_?rQ`ߐP 79 jlw0A_ pkNک-/wMj|VoG^X^3a=x>"Zh⊑>bBCQ4p7Jn6NTs0@98 )B8>o&[,k+mO%U9]dn>)^&~`n4l^C/KXyCy&ݑJZ!Mc̦1D#}*HpC7}}km&ʃT~b)<2DMkf}gGa/!d_SyLm61.B ُKnl#K(J`(LRp$BǠjKk$Hx[7 j PyέX%YZuD7zzc7knvZaG ٞ8p΃X_<^yQ~&qJSlpgGyy5 N!8*_-_vO_HMq`^q< (c 7:AnV~IjZ\^-5^m1W%A=d\dw<*IJ(͕!'Hִyxǒ)~k(nP3Pf9XG U"ػ"9G|1V3lg6X5Xf-0>R^Ivlt+;_/ѺqbBZqi4<dHl2S`ţ\#/ҵx8W|F@hc QAkÛM(G 6]tK'Ž<4p.2g,2 ƃC uXLqԕ^79>aqC@wppF;)+||#lERMZow5g`\/P;g&S9dJMB&+ۂX6\EO|Zn /oR8ʇ%\:Q te{| ]k]k f[@>mEX*n0rY"p2ˊ` 䶽F? LVai?xGloC<(4uy˫{ j}/׷peCKX}6 S|;&Yx{E9S,X7g1ᥭm4 %~_ѩfqrelKA$ mx10Bx <Ԧh-v*jg#K* P}ZP%p t3@7o9߷=`[ZP^| i Qt+FY_xJK-]E>6䌼Ojֳkhm^ARKmB#'FȐbm<ܘьX@^-^8h=CK4łoQ&RRx! }fQ^#lMQD<̃0W3o[4ZƧG.x+ԑa.[i[_٣>Ϸ4<ļm6a6;%NH? E+_̐жD.pY@#~GW@Oszo2OxKR( cg O|(#PpKFYm:1>M {'%vyO'Mb=&IhRL)F.9#(Vn_#]ݗ),KOW;[,\a2߇Q.߁StctmZ#ZC L^deRpS렢Wu{C2ٯP_eO7O7Ǩ/*夽T(/h$z2<f#ko(IƇYd;)Vp\J$ߊ"&X~Y`AߛfLɱeьFWCƙ-9V9jW˼nkzS?=ku<~AolE7g.lo>\ں&l A0#f}r;y7-%{U;||£=m;BI6ŕbR,:s[? +`)Q <Fj$0k: T yHk'#8i+'_'. B-apFp< Ѱ,q§\CrPvrKKqp;Q\piqVzXe-A?uϩ;}j@7^0!2u{)WO+c YxR ~%s2H6|6dGxP˫;'rg\Ǖx=N&V;}d#RI AFꋿeцl<Ʌl<~Q0ēd|D}Dt,qvT?bTdyŸ7q$,p/nyaܒ};H}XY:C;Zj?Ϸx:.bňR^G'H< z\3uc:/N_? abx2{9'-{pVKl AM`\oL2TӍg$o7'ze=<{d}ĠyhR݌}BSreBiy5@RF6@ a_#zxW>X.kܔ1lxWXMP}`)2QhkVIO~V=%`c.@NVOh>;R~#K"BBO@@`*ꓵVMvYHf^[Zq^:b=ďڔP Xl(Jk<뿮O2̥OшT'/w*x([J!F~ X,G__6wۃbc=hvմ >!)=UpY~VZ8'*H_Lp$O {`.E s<Źʥ㴈9Ofu)9ɾ_STudAѢ]lʟ˧x+ڂ:$o&%:xPkTt-o4z|H<+f}ad>#/ẎɷP9Բf5z[Y`@~ [54P|›F$،K#yQXTLaQ\<yIkR5yT<Y_B:ErV"AglCCe u, l''%PoO*l^36k}~.42#<0Bv)$XWpPrE3+%Poq5R-NҷkG7AϿKr~wA@EvQbreI9 x ۆܔۻ o /+.^؃kH{>dDvdhdTVƹg9h/nº 7ʙ5p1%ɾY쮺_BԳ6{-CF%*jxvqlw]yS#$|+űaN-( kJ/ETy -6F zrMCE?8IeVB g9ߴ-R1Ydnߝ3ߗ֌8Px:<ϥ!Ǽ+oL!2]Ig?s!vTTv-@ZD~3`4O΅\l-ýJçjW@"y ;ÿ^'ݿ5:GWR>L:e#W JW+#R_J6kiBc&[ 1f[ce^3#?O/еV%],ulKf½R4ΙlL&8FDiX{!F%N_6kjqZUuټ,d>%mB+|U%o6K}o.< =Bn϶Z[aaRl'#0YI ʻ8X2O!}yy7YgH:cȈ~9>&6Ǜv3hE۲m*hj5rx+ȇ$2CjVیXLoK@sN`+=!p_:$Zc>MoGs8&[wbn=ⶍZ1#$܇x!K1$;DN&K#,d-].V i'O4(" {XEZJѺ8;4< FG| |ˡr*#3|sv`^Z(םMF8Q:xSU]u┃8\F(!]Gv{g|KjBM0難((շOmvFF^}s5;:SӭC~Nkm OΌx $`n stwWԍה 'B}JXhwhm<+ DEmeSp ^VUB<|Tz&[`C3VymfS: tX {6R!6x"ڃ`X ?#f,F3ׂR8x|#qI` .]FS)UqaJY2UJNXR͐槐픙7.NQ*+#BI{must֓N`;?<(LwCoLiJ#~ug=F*Ketu#w=؜XsǼc7f/8mem&d{8;_뉕b.;)S0"_w0܂UP֊8/&ғlȪmhE)#GBJѮJsR3>5|{\XDB]mH;~Yy@]WA_[,}c%kKrWhfۍ;)~G$POz5C%C(v=]'*IfE!V֌ WхxT vV7AL B+~-HKc 6 lWIp)Zr9#UFE>զ 5NI€25:2-7cvH;P do&5 ^c\[)Z_+;kG=͍l,89*U.^{k}!gይAS~/G[-Nw+XBu9mR̷UV`v|GV}b6m@F!ֿ7+d XW)4Fctư.~0l 8ijmnͭڶmmj۶A<\sw@_zeb9kW/yNa'Aڷ iJʃPOu9MƑ}X_2ր Z4Y5C]f?e~ud?<u#.R9~ セ,qODAkݹ/X>aKC1Sѥ2'u;!MTeˁBps,;|rV2X4oΓݶh&)ֆm0ax${a: ؔ,;Ahuou\OIưxL %Wzd>GM^h]UݲQ`4#ƢptTavM`+_Kx;짝 8@-@{0BcWt #& l4dwF-fMhm4co!="QhKV @PPCW8Wl.ͳSJ oa_05 K* -Q/w/MւHHxM(Jk9a&pt{`& ˢ*WNVn^Kւ0;Iu&} 1HhKr8풙Gؠ /.l,Vn-Ō*&>@HL!W>F. ]'{ິ0<O3t3Xzcp!^ ·`#_v܋zF8 %(eNBCE W*b*-> /* )EkX+rzAdkO&̶6Dމ,Th-[hG w- ڿFђCj^ hC]Tc7G]|ô [LTkNY#:1f;D9pP^Þ(v 4I(A7m,]GkѥFƦ82_Ӟ(< hX2Ih&XOTZa*0q^s+^hJ+Y"j6$ _Aa;tQM<DɃiԣ7Ǝ=.acgҼV7^* Zg8y/*eG0cP]GN'-x+8L.,Hu؀\7ͺ |T/8se} akMnzx[&+4NZCz_|:1JyJgiy?vQB_+7iw6ϭ%q /OxvӹF)l?L7MXRW@bzW+c KxūIZx dXgR]14|^] ߮ґ͞~dxV6ag<-CRF.7z-zoKSx*O!bl@Lš(j^LXp݌ik~ 6 ~|~y$/Ġ<'8ГP w IDATPP];Mx9|>`)=aȁu[BV=3_n_q"*)j4}<6)$Z0Dі<^_LJMgc.";qBGVIcPC|KUScyɟm'v׳ޠ6IOUr5O8* PCX @ b@1З:8n`$*mZ١@0C ɇQZ"a]umRqy4*hj)4CGO5Rͥ ֚'- M An6zwV#upVU~,]W'*tLnWq"楍+q'Ixu;M1 B3odz[*!ez.zRJg+)!j Yiq%}ta *w V %@o&<#N8WZt!(o-o-/g**)&!c56&f~:޶f)0 e'4I$ (H~Pop{SGh!vBh i#كҼ0SYT~@`_aК 6߱NhJY\ĶH %wI T_+sTu^E5 ;M g}t2nۍ!BtQdy3$@.ok1E6NxqXog!0J́YNw|4f+(rU6|/^+'OD.ƋGxXݥࡑ^HPr8잸K-(F1wA5dhiIհ<]J'PW-G[͋.r(TXv)v _p{S:(4O|vV{s;TF pH sh~W-cǴCPrWRKͣV yHs|p7q+%,: DН6d\mo&iJ#r4m"-Kam}>qdHg/x<ìwmQm![8~ g-@ɺVYؐlC=0Y"qBR0C@6x 셗] ,T]X- ~ c`{K쭵gy >.}cLPi ӥf(L-9ȪBO7טf?<|O~9_`'{R(@GHݏXq/;F&OŬ[`F2 p G#L6/xsX0'M1:z%cp}$⋛v&|\G|ZzG^:oMPϯ.Jp ѸǠ%^~n:nvvOa/ ARǰJlyϊ+/ b,K Xv do]"2/ne&4S˪@X޶efmT=_j(^6Nr54ʨ, -B7nlN{m!z g 3MgACc/(cQoh2XcA[a#ĽR<O7<VOcx${ePC(s~Y ?`;xDM[4]CRi‚@Q(UQ L3oU&#SX=lӌ3~OVMw̫=g>ς#H]n#kL_t bM_j4C& eMc\I8MG]r2_9Bx)t[~oīamO^)F+L6V=R',Ֆ/ n̻Sx/_=t`q3RKm/5|e.x&#($8haޝnxPg5|>#hȋc2i1wl+M5W|^l['_76 @3gVwt nt^?Wq2$Gi'."+Wm>9S=@-|Pv]A7oae0l-{f%h6^-n &?&X ͶSy?T=_Z&z>t͊*ķ"t9ϧ {m6S ؐXG cmh(n4 ScrBI4bk mr&>Ψ 3Pܑ҆>i/z5mHgQKzcϖRy%֞ƛ; `\[OxO'Len|mb3FB<97##.7AdCy ԇ[EQ/8m1 /A} lpD(`*Ӭvx9s1,+|>E|ls{쯟@xpLIx ͌OkoO})v ݜ{ؚ:-h{Ѣ5{Fƃ<@ys?y @ПQ>F揞~PWP'X.eXBZGƋmx)8tƓK[bT?ЃUTjqZxԲ+ΟQP)4IXVyI@_RM.IrW Sn ]Di7D\<5L:gJ0I]"FiaBGЌ~-Qm!;m?~xt\W09nQE8#r{[W"fHZ\w@aW#ZH6Kŋ,'4 mq- ZYFZ6XK+ˆ N[^d&Ȼt d\`a=Ec !֞y? !ؙeyLg\f5FymPk U;;[kJNd#*4 7Y}=%Z=NyŚ|؂1o4iv*A7i !/XoH\morwUՃJ:BfX[{1V*yO c /8[bm:JB `8p(uj"cUJ돽0UM\gOW 3r`c>6[`>LO! I(ϰ7ȇpvd0 Œ -L~\>dVȻ.DU3?CEJoз2z|8 _mlIm+o.`lP:b7he!:KH -1Vb2kY@׀,>s Hm OWXk q%Ou\aY] YTE eu3Zo6V"]^G#}q/"D>ؕ?,Ek{ [= t ׫l%ʑk)^J` or&h-֨(h2qٸ& hQ6V@5jMr1&ZH֔Λir.TZr򶬉%zgp^{oQDnxjBO P^"eVcK4쇐{,M%y̆ f{5w'-PA_L [ފ>M|٪++J@N6goYcR[!MX$.N,l/C y'Y".ɕÁZΏ.Hg `7Ybՠk&|8q5%&|1F$;E,l g|1͒x;,ڑPE-09l ;ۊpD)Z @! g7E-ay~l:sh5߲|! .V)kZPqp ipe?g`Fo={wq1[hO ˤad=>a lDu,rId6Jka> #?Gf9h 8Vy%|] *j*_ut\(!rXNJx%CA68ta MI] Dq'Yv/F`OTM twAwN3Y}dmH %䵅0> dބdi[J4Jbg[~غȦd\,(͐ .kDِ5kBʉ(0ͷ֊JVJx"k!EQJEnx(,Lf$)cP>2C+rUqQAꐧ$~7e2Pfy.+x&-%VuAa8F<9 ["Jހo&?O#@w_): Z OP a8 h*zd]Wp+9^5 Lw-()=.J jbGN|ei%7\yf[仱!!S}˛g ]<'k4CB#Y'_ t ⩖M `ƞלi}'vЊCyxcY;&gxE[}=9˽=Y Olw1G#|H1UkuXO1_bE-UnuvvGYyq3|Vu|]/?mS YX~hW9 6d|SGb/QyOѪ!ɜ9L<$񌜤$K')OaT정|ƥ ?npdؚ*r؝|B>ZvTZl{,-lm b,A#D/J ,t%' VmPW`BmLK#cCkH# 瓄w(v>4NF&B3n\>ٓ~.O:GW^^'zgzl4I!^6NGn>8o] m Ns]'B9[KvCXT.K'sxC0Ɋc=#!QKچ+_NQyߑGH,ˎbgJXZ L|4Pc/y;![DK'pG%%}+ѬP^ve;)8m\0B0G(ńb Os,>45g\KG.7_5c .P?xK):/==Q_؁QI8,pw*OwXvO\pLS,AA)PQ.|0Zv4&KGs]CԇSyުW6Ex\#鵈*~~Ln;o( IDAT1+CNҙb/5U`:Xwh{ ׸(.CBWP lp  !ZBȃp/@݀ LDž R [ƦUPuƞ$Wf焟0nW~f9rZNoMR 4s[o$SZ$Jah;F;kbN4Th1^(>$^I|"wH۔l{TX7mmu+m-VGXlj싢.<5q#x?pfYg&a5:7+05g}}Tn>hkU)tgM[ y">u %5ye5 ޲n ` N>|6kc?Glg=\5R2` ϮAD p_Y:5ZXk <,[so~+d*ȑ\1?GZޔe,/fXqh>")Rscc#VO)Wy IR^;#~s4Պm)ɺQJ[a(⦽?[ܧyyE5gًe~#qpumpT*(%s'9iPDc:ΊvS&:hKp$/8LZ7 $^LF~:*v+Q1#OP 4 u פ qgPAg΁U4-Zf|AY,KbF}O/hI9z~ܱG  Шq4 {+g Gs2;o^ ޤ6־ ["\G/_0.k4{7`+@%y*|EA5ͥlPš(${|Z|AtyHԉP P3 O>6IJyUՈ!R !*8R(WzÒb1?,rS>#/EKpAbxU4>b{Xgy<mMU:GK1|,c0 Rpy@q$b0?ʋe%^S-[HvE.'ހo gY7|\+. 74 =X&XFl֢zH]l4D&HD̙ES0vz+[&?ヤG1o -Oa E{{燏9|&cqހo+t]TpMAc oc Xp ⡅jW'a;IF!J;#x@PJ.4FGwQXxK4J4:+op]mě`񬸸uM#|;^>0,d{QsPVh9nV}y >yHhnl#Жl[{pyT S<yZ*>쪣Fvߗ&'؄x B5 hL\aJwJu(v4(]]ÇK7]3z~+'+-mWt^^&dX^%[;biY԰~je?|>wba$bwfYzztFt$a&LWgb?T])lv.xa(=y~ݯO>ʩ鋅H"b6>rEld/ěh(v}zFJ@*A)񞠫Wmj8.[Kw#@/uw`IOm_j_Y/`:o*崲j@WR*$NDz zhPy=2U1b:N:9o&rj^xkSSL?4/'$WOЗe/'zCy7SʟT juM>y8 l{DK|uv9H ˜k{@7G<5q\T=+k.SYR 1قIgJ 8q:G Qk#q8ţt2BpK/~ݴ.ykj `p8sPkVʩ~)yLM!&5V54>:"B3B_.|B<[7mRߪG--q&C$^Û=p֢е)[lp]TT&tƕy8>lNA4XZ;J騉5 ,mz ec VAe T#6p'Le)=!E`u4'y|hd4u{rS2g^FIZtbm`.G.$ֿʚ sFnl-ʉ ci;<""ocEl:W4rdTNvl4)6{z[Iqa1~ ԊP"Lc,ŬAYrU҇%|DXS0]V|-Ygz+tA_ysvXwa|:<~yaX]x@] /u` `>]7^u| ZiVX]W2L~aaeZJ_FYrQVpQ= D]ec(v k}NZUcP^LN"Z{hdꈲ5pەZa&-46tSڠǚŸ_hZF\]jɡY!tڬs #h= ʾ$fg-:ZܲX6) 7b#Q/cn=k AaX'ug;&_N?B##E2TҬ#[WAɕ(\"pYm)ϴde4:ڊ6ghso<7B@(jczEv]kGhihy0xҘ W*5?,oC'm !f85́Y(FT=]<-;Qۛ/w"anjomc(BljİJ vY03j< 'H -FzXNX!8Ҟ\M+Jn F+5^}ppfH2|S)y-z0t9þ͗DiqZTYGb9cyksIca/o@Pro5rE |NXjm#78Lߎ3>:=n Z!YM?T| (؅C仞sEcUPȠ=/>9A?'VsKk.JP>M{mm=,CԊ&FBx^PH]BPg4X?CT#-yH2!#14?8K܋dy/>BBvڐC0u^|Լɇ{\򷰏 4T<4X|)ߪG3tu0T,Σh8^UDSJwb4]q8VzS_͌0~ =V̂gtYAT# Y ~O2Q |چQH+AFǘӰjd&CgŅf:SCf%-2\ez_&h^,)QXsH^5*jP?[jq8@QK.qEE92ۿ ,4jް'=$6T}'8kqy#ͥjFwua T@Thw{.,0Mk< K@R9%W*M%Rưh,\<. fB[<*ۍL~R-2ߋI1ourW)+,|ɏmi<_ B)<=r25st+²0Ag?Z,\2R!eP^ +GL1O 7-dmJ+% QtAljE25ul=M])eŋi'tgEڛ- W6[lu꭭Dc|`FIhRh~xTyYGnIeYHĜE@.!YC yftBwaYOge JiqM’N`:X'|(>4t>U(!''!UW\Y|R(ї'eh4}?\;"&_fvwOVgcV$H?h 4.ݬ~<:Y\ *e?24Q8|$nS/rsR+%w|,1S2EN|0aݡ{| lU樂?.e"NMFZީowďٴ7\"}z8ʎ"1+}zhU>:"^&^< R\4 DHxVL1,Kpⅳ3'Vonڲ?\#\g#ωAK:|}_ _[(mZwYJ$(G[D@΋l8O(mq8Xu@-`}nrڝVYA éW)+xsUiVfZWlE?ycqQDmY+eӻ=a`uҡbe4Y/53f~:[j3@O=~A =O<"iG@qwԫ>Oܧj uux4ϵ*C/TT~ٙL]rKx~҇Vus-ce/W `r /'9P78 0N:α6xpwR(M C6jȗjQTKRjI+ `µ7 2gh"F7VX^e{W,dRy2n|2+h$4^~ fpK[*9MoB.xOAGu(3׶Yo/h}%0`yTy#^F|7X A8E?&i XWe؜ œSs Rj/ى.Wn jiG-5chiYK9PuҺ繟5MH$h[ RLmÕ(&|h#F!S9Ú$E=|o< 9 30wAWf7|6_bC-@t_7Cwgoso* @ ";ۗ /)Sy\A$K5i汥zõҞ%vavy؞Os|-9W.+}ϒXB6j7\O:6rx'Y ~0{o;#7?@["TRLAWÜaL6F"I-TxՏ^sOpQߠOy;bD% ?1XnBB9Wy@a¿G&EkLyLtt{d. M&5ÃA\lvMQ ſNJ[lӕB_i*RqXLW.[/a"-ETtI{cS8ʋH.D7eN+_ @?y>4{{y7{VW)fo!\ӆ/b]q}<u*YV-b:B޷]혵't/ߊRaQW<_H"B7\AuKf#fue1bJ'q6dDJ% >;_蓲 ?-?$</N,zZfS xzNIx%+tOhx>cͥXCXmj /-S #Ne-,B+%~uGu=0uy]w|1ga1!hk#?|bP{ vdh[ ZN,Hg\E#я[7\O?XOc,ӣfEĻ 򗤫1NKWt4yMSO;J&Ks} oCK}r4Hy%lR,ppgˡp (t!=E'ӑV%O/=#E "lm"c2A [ z6'+D}A2o 'd| a<p h6oYf;Ẍ́3y1ƾ 6փ'a R 3{¿49O##/xk) po|/VFˋ $Wj%7[Zd~Tn{yAzJM`'e=CKl&3F3Q_I/7Es8 (aQ3fZTp{^{As}\͸1b.ŖJwuRm'x[ ^3Q?p|e}-x1*EV9;^8D5=g d oCFZm{ ~#m8NlL>92MvE<sS/ (^ z`"@3sswOnVw` p /fێ%[2.x'4ޤk88Y|~M9`gQrSiX'b} xK T\yIOf@U9*[=}}vV)W;wJsĨ{+=b=UV^J/.#Q7/aV3t=׽wBu\tl"C-ĽY;}}ӭżUgh?BSٰ`?|,Ŝ/>TjۈgbBa01ƷMlV J0 jزH@ai-Zo4QaiΤ )A䘸:M̲=Us[<*ڿڥw Js}>ke=t]fu4X'r%vu>v_eǹ3ڔw"5jo 'IUJ 8]S<x{{K۠nꞔ1kFBr/6$4[@&[z8|7$'* aETs~`aNix%aa-{=5˟Mˀ.^-WϿe{/~h$ƞ¥+"=8KcD\ȥ=%g!f\]u1OQ?hY/p$'/vʽ*e ;ӁR`mA~QzpfjGF,o&./G,4(?La4[Dj d3/cC ^PeD^q4p<㉱Ikʦ>Ɋ "_U)57Za$mF y~?A|TgZ7x:6 ɸ2 {`;fuP:->nX%W9Dׂl,B7u1vǬmGWn>T(RY/EĮsE%T=~yTقw)``b Dx'MM9b=^qձ5j=I;)V6@6O!Km=2̱~9h$̷7kN)|$`htXބ݄WZ= nP,ΰPG 3O,Xx& vTJ&hU0m3F U}L%PP F5O-#/P\\Bg;iW՗[dpͷҖMۦMGSݚ.U<(8,  xqzWx'Q%@xֱ٬'ۋρRs2ZAMRUSw`''lhɯ1YJA[ x;_&[x%p?/WR/Bü,{:OŮR4W)dε+O'Ԍ &DP-9Fxjc@2}K/shlf;pJ4; _VXJUBxI| fM0O{,(ܘfDptD?Y3\3<ۇoj +2| A, GZhU{B-RsX~{K^4h.G֜5RTNo͟|uv8_n*rǟTGbRΡo_ꀘ{iWB鬊od% ޤ%g$ŸA.-q*U$6'@q]l0" ɑ)!P% }8Vf[]3;H/v: ԺV k%k7gQvWoJ0ZjF]oL0"'#8U+AV'Ur5h~eI:79)q LFB0ܝVIێ(#Vt%1VvUn$|Gmԛy B'rxX~+'!Y+oś & Y_tAj i@ VGlLi$H?D>`[cAHEe%qB!Df "in {p(X¡`Dh^;hA~KdvC/ Olϝj)4q]pmstLm4?B%}}C.#^R yE|p!{9TnrY/;op ,[jM\hk9+ƃUwgD `"L{rbu$D[E+S*) nw4[#a&,%6 YjAO靨ߔJ+xRDV!G8XOD:AKp[9T \{=ME -f)K^*VdX|(7_aǦ$>asX ,ĩ0LG@+Z9f{C+]3 4kot4K*.N%N ;N02M aWZs=95;rhx>A9݂ b"q$U>Sv&=O*#%gX to(# `IhSxD0Ugm24pNQQ8ǪUy-ߗ 3Xm Ypb/,x^ʜM_>$3/qL x-z/)zc()*ml6JR *īʶ$g2 ѿ+?<89=JYZx4 -revJ?]gDۈJt =,0Ii*M:=9eK\<7?]!E߂tBq7Ӷ?+}=V83k*Lin|Xes<].j/2lhvȿ9#'m[+٨H b2Rwljmπ_%lޚ)OU\G"flvہ{Ҍfw+E̱Ƣ;J>] L1ױ=~n[NMW4+nKMe+_끜ھR -P5,.^%W m 5/kH'`3~"3^~OGkUҋV}>(]P\-WU?rq+p>vh)G m4聕Gj"{mJ8'26%_q1py@ypH%fդ^1'fDouY |GO+~qU$^z`k/rz^4s4rDi ^L v 16?2+>#zsQIGq?XQh"v[tA!P'<v6g#Ɯ>J}f?RY W~Os I~R#lU, {h~EQy)X<'a[ʃ2;}2O$!k̒ =%k[K;ruc\I7hs&ʑKKԋnQ6sLy8eb[?!꒳0ϵ.`~Cyx?>UhoXMTo.LHoJ}rX촦vs<}m؉4 Ѐz @BﲿT_dKӏǍDt'J\t)a# %`D:I6g}":lϦtAz4B#.Ćn*tz6d0J0ϣRP#H Ҙ p0O~ga  hotBW{U,vkt9Wc@P\a%t|q#!+zJMk <0خ1iF&/$%8oLdiLFLl)'^V,.)ûtY Hɣnx-:czD³5R!\6Њౠ,c4e+&%>zntaXOXp34956r܁x_Yu~+$ ~vI.x[PNڇ6eGMdE?XiU.hjfy'y~ l&֖ G{z~ӶeE%9S#]ԶN=mKk4RL(O󘭬&=b=Gl`ExŶ^DU4"TR躜Pe{a)v? eyPi_ Z9s%bQm5;%m{=|(AnT4y;d߸70#VǾT]8n'P3VᷡEC6ezhNJ_`8pSdc[F@,`TA|'+߂g][p-d䚷: P7X?LȇRJaA |rT 噠XLp2P!)~&|SF~3@nUS%>" h_w[k47k>p0x>I-p ]x.hY X C_e}h.:4QL/'XCO6Z4 D~A7@>~y<YY @~V8lc-b}eޖ7F· zTp ̢5pl 6HzVRܧSzxi1q 7Z%lk$X>W>gKT>H$[|S{p`Ux9?`ރ#*r`-9 3 >S'Wp;ibv"v"ܪyz]H8|##娋/ϳ%wL@O-Eۺ;8Ħ+5/TSFh2i`9؅CMt$-arԔsF, V'ŇBA z( AO@+AllK>(rBh5o϶\2](F%vd KpH/ ?VMp+]P~2 _p m >b|? .&^E2^)(r /054t{'YΞ&}FJ8ͺ p#17h2YiZf*Hv|yY=R8cXR鵴4;=gFp4d ZПƋӾ,EwzS2H/rQ^(zØ}6*K4o}g:G?c1=sh=g&C,@zPYe IDAT?U`ߨl툴_lB_>~02A/PQ䟞{7QPBĿET~ 'RKפgqZ?+~m=2+1 ^.xby'YM eh[SU>Y E>/d1#|[poЊ?,`0mi=_iF%GZ$ف$ϴˡp-C#9xeV,Մ|[ {7/>7+| j{v8ɳUMV'J-#CL?mY56X![ 2~knl8J)(S*2D@ EXgLS.ߙ cQ ,Z( c.t#a$66|  GWK6`Q"m\ގ'ȏ/s`D?FO |f^Y͗b%Jg-IBI#A?@`K4iWe-U]>¼yȇu|#ւm`5d XEw(~/ci]TH81@ xVhn[;NI E>f10: L̇n~̆ 3t5IQcg<]zk.@!?EzjnWi--#r/f!q9l,/ㅤ36E8Hr m JzQ`bgsb`7_4J<ed+QQ !; @'{Tz#60jz!'^*%F<+XOp<p?/Jm퍯])"]QekevEMBw=zX&}Ӡ:52^ֶ }Ĝ(q6ªnl m YZ/a:ZaUu s܄ P1GgʷW=x*jnB2gN? 2\ [ҖV06UEM˱C4K 8^`#h1,ߡ x,E; 쓥o7]mJ5awuUmUKj`!&` 6ׅ娛5婰>lBy"V o<ǡnZ~:K@{ bNgfкѷ9W41W˯cZ؋)lT4ϳpW( =W䋸_K~i*˛'>c>mNZMYb-DŃ[Ug%VT'/[i;&[E hq4F( utNkZ8; hSMddxЂVmG[ݏ)`c£6&LCWC/C[AC>,-ONXS&`)\- s<[ 4>Y5?@#:VFϠ@Yڬ 1 }i1ǺBJwq, [sB~p!BeX"tFKv#oh$g |Đ̲|puGF \5cXOM z o/ J΢mY*k57˹RR3OB1 HFl[ 5kˮ2k~}KsfG:θc p֏)(mixZ?@" F8MВo ۜ}5x1Fc(q*/( ̇;^ Bs4HgXQX=d G2_W]YFˋb,gs2yիi~SJњL"N}Mbyk;:ZIXN?V ah2=!&:g\D?JoYfI#,<=Q95qw?._Imw't=ѪFTfH-R$tlnpNگ %NKiqPF,4EӘ㒒HQNihՄ( 5+QrOmaB~G^[}U ^!"74md)UΤ, cWXKwvw%bggSdYs}2[d*qk-,{jS|S6ey]KFZRBQ,$$RLDi%[U#[t$BQeeXC`X|TvWVV3( x YCܓVQ<-%(7Ј}EȥZ94busKEϐ|aS>*sY&jHKnh P7.`\EȋSe"ڂݲ̔E Di[p]}WÃ|}J+:ƨ[4)7]>g~-|eb6GQu1#=lh$G 2vi 22 7c+;V|,3Fÿ}5Y+q4̄?a ΃[%8*e>/z'+rLpGu£o \BJ7FGCY3M3ي^jbd#JAnW(,~ Y3$U;a#0et罸;(2ZOZuY@XV>.:p2n ѓGΕDzt&;G1]almhu hЇ"fL\,H`>P,k֐B$M8ŔPMql3C7cĶQVEHq[N_*ΛC} pFb "|HhL)KaG`Ŭ NlJ\ e3Dc#yWa8KnokzW шt6}E p a:Li(ݥ ɑjs16H^'(/%NKNWKyx-X^VǬSm.S"4r8 dGcWiKeRJcYoYi3N~IlrlI5\?ԷL%;3Vnl,|)@}qJ"ob!~G 4Ytz1`U4oSF^C.#E"Ydc K+fFJg]7&l]P(>@6f̰y 9v`$kcohXLn 霒z Hzh6o6Ws_l+ߵ>9gJ΁is^ .H!=^VwFB#Gd̦W /Ck|Gu#=My%~ [q2uſ`[3jWwcQFWBT/EzrGsl;u(Kq>=$gBs@F]%~aO 1J[x!Q9]`w#͒kϚyi%s^Vgٜj5rvA-{xMhۧD}TîPp@Ѣ7A)Ce#)lr$_wu( ѵFȹ]("0\ʚ_"-*btMdC9KGoa90STelly*lO`ՙ}KZ1V38 Z2:BED/#QzM^AtUr-nʊ/ B o`*8N2SŹyk'ǀiCnthwE2ǚ1cYʷӢ5WEuHlv9tFO->$p 裴 АLd!$] +܄r*IC"t|zؗQ *A6i_nG&nB;{zB)C+71 b;\er;&Kh.#/J[da>( I ^_&4E*Ur|;(M>A%#s,1' ,f d\=M J-km1|_kh#v|/Id1D*tq*֊,e -4>$yr>vIAtx)lQ(.W+ LuqW+-YoYrqqw(O-喷g+> ( 7Q[Wg^yLރ1rzD\Qb G;r|SCA#9he+eAh4}IL>;TVOMVcZ}wBHeއx ,]Pf5/Ff`}xgI fb;;_i>h &css0nb5zC?Z1|Xםn}/yY؊0 c tx\.E#6 NB;=W6>UBhQ<YV;<'$=ј( w5աU=\9e}d}VǙ2Kd['a[5/2Q%P BJK&}­vtNNkm <_ Q[x|# ?/f.ՑS/_sCG;]QHLE~qlnFo{﨏%AWH:w'i8uPl߄7yEݛfzǼg e47~sûC)_s$= 4W'%^ I,iS9XQ\gH7׶l9кR=?hzN؞>C㺢g8"@=QGS'#vx\6mxf|Y(P-0tU x[l\`'Uzᒽ!ecV?d>z5`QHYs5]'"Q@Y'jIr]QgV+yin  Nd}|43[W AwCII,/uNy Ǎ& u *Mf$jCGG1Q=vt r0}>6ENGk༬((q"ܑk|5爂~۶7Xw&fyQIFXE+c3-< 2$۳ev~Lq;ʝyusC;j!^4ލw$s݊ u ^|XYÈ+bE\ɰ E ?ȗ?(?N4H<ÚkݲdNiE1'h*wMԯNNz~q-(qԿQeR^USJ2EE}y-pFĈp&H=OBMԒ: P(߈Pk)ell !%;3eR?瘧E jitu1sl&-l+Yk&SoڮXwg/Gy:_~繘&* ^:#PV&ڊ;ѹ'kQ9o|]3c9PD#%m b$C=OS=ݕ%h>Wߒ܇^ (?)4#|" } x3uZDmC #ЈnpEgAzbFGKj Q5s IDATa3f;%*"1QPS%DβZf \#o2f[qs/c2'd#W-)b'SjNͭU|2|O:l\I]/qz~P늵zw<Ԇ-<8ZEYJFD{$Baȃ(Q |1nOZ[Bu\݉(+zr?pI:\ M'yW臘Ɛ h`ԁhs<^dp^Y/Wci@8=G29+U 2ˊV`X@2拹'} KdWWp1LvWd*2?*$LU-Pa4 D^&g<"Z@' dV7EQ nF/AR(Lz"'n'! 2jCwT/z$DB{`qhVi3^LU/& 7#D@F{Eoq, (ᮠ6WN28 *'>^R\'L(y32='C|7YBGqY8@Vh4-'W2S]El9-#u< G~:&j®94{c0nup;휝{$zi{31$ՆLk6|=qbINZ]d*k1D%\47$m(jJOJCN\gE9!UOetRDKVx=)VΈDFF,WrH ж&8 g^d >u9oǷz)gxv96˹ &#%k<Eu~Vː߇`B1B 42樉B\Vr@%7[ݹqMe1QޑB`g0~PI+Jp+enBO;5neM"n*꿌4xq5ePVZy:hp^Dxrt΢-h=_re6Ye Yɾ ZSQiiVUX9.oEjq"~@NQv(z4uJ9Fȏh7^[Ug %Wkns]23Nic!# W"$iqp-U#z(Z3d:ֱSWi6> ̈́]iq9|g]e]E,MP_>V,rd P^TM6?YFŬ,x?^Cc_9 !{Zޔl֋) 0Hoҧ ZdQR#)yR&#Vv_ -;(GcpkB<4'۹y=FښxUQ4 7xH3%_XD=8 :Z!߈D`\--|M$2X(i CbARi[lwQ<<3h_Xod-9^yS S? weK3Q#q21\bbQDbQَOG x-qwx:9p=aO\NrW8:Gsj_M\`*4!1z*N,t5}@!2ݧSYFn*.`-a1ۇ 2p-TtDuX}O~a5q=wsv6" Ķw8N[**1(byš< DZI '5!rޙFKVCpGtqeT_䤱2Gar'ǨǍhOd)'!5G@moi) ]M~ʓ*(3#c=? AVVgc(.wd,OEtH.g?鸆7F2Z徫H[ґ^q_m+?@q##zƒqQfuάJxG1_3uժ{etTr~z8*۬owْ$rqI fWu^"]ivMFx/aJVpN/>|+I B^w.h h:̂s>D"*- dt77" dVY^d*ʔNމ֤yCOdý]5K>؛e;c ϤQYxQtUe7TnIwmR[9ihuہ_jf~b{TI%9Ҳ{bkt(r`lr,܅V275iv Y@$7k!7Q4ۗ*@' 89&puZɪdQZ G); ҧiV`ix$\[5|5tҝN7ԂNjG&N@UzU}_s}~8`-Vз<{PO\|_B]; }1rߧp k&zi QV=Z.fwkDgi ^2>Yѝߦ'Bpu=BPH+tdTVRVTG[#>``ޥ #1B'*G@-Ė!Y[V:s/86lpZ$6i5vSſVꟴNK䍼 7 '#dk̮V~{W9U@B5*`[]Av#S% =qы$Qy0F*ZXlr4' F id9s((޳"P/u$iIǸ.$+d(YDF_n".QJXΰơ79QvվnJZ!;,'nWFt//Y @og~yRfOHWxWd! iWj"X!s@,΅CЊ'Sp1< eX%l]\99Rngn)r60T49=K'۰ڨ?.pgz{~uUV#uQTg )TZh-V\oޣ |ʊ?P-|ePvq\"Jbu^[Iv$}ʿ-'ɇl=%wWrԊVp~|bD֫2M}~iS"Olfz=g53m_o[*j: J&HS"YǮ,r";FO2FQ}-'&ٸ8/Ɗ /hPUE :S)E(n/gyesu9$HF;z2U2F&UxI 4yZi$㾆SwadrXyMe+@2bq9s(}QZJƠo0pCTG꟝]=*%DCIB^vMu;%rnzrW.wIM&H ;^_O2Ե%ڋXkF*Q_aҗ9E';9:r)LY!ae Ǥ97[7xǠPè$okTrh1 ~dѪ?,l,:g= IIͅD+Y5HL2?U&dIc/M+9@g➜x-[u#Asz"*& FURDsTkb/v88؂Y9KLƟU8 G>,c G;9 i> ib/ckQ/'*9,A9( `?>Qp]CQ$"Ůg> aHY.j/䜒+tOb8"ޠTgV[ܗ&#M"J& C)<̀p^p<#d_Q責-Wˢ) ..VS6h$^c([DɬeW"{C{\27bUIgtZUEs g4WUཽl V!#/cݐe]w te5 #h;LAwhX-K(@N"¼hLW+w[CQuh*?[hl,0ykyǷC'Xg NB7,T ıG 8R5vv5w8YX&=4ޤL5Kh_|.{M1%VG",@~z&øD{¢'Gh3͍<C&?EW+DL'X G+p2 r|#O/"h[j/ID+Ӳ&ڕˠ4ѧl);Xp[\f Kf} BFI}g5GNҺ Ԭ&SL;K:"GB}4m?cɓp86hg}N.HUCu Ч7#?|Q#C93x-Dhl#z6T|TOt k4X(ZMds( _d'5f.'Z؂Ŋfk"Y`JGc3l5ʙw>؈p柭R IS`%ds:N{ڨ1^FΎ]x3/ƛ駓*H=L6|;K"E[SE.i`9:[;fTPnG硾xRUkzȁVil6'i8?a;BHsrd2#KC^$y(^LPs0̋bOy!o),6E{^Y\DɽUAX ^; Sͪa41;4T]hfI~@\sq\^h r$ 7_ !op݅F*I+8$+.s M~~`D氆rA< $>GQLu.Ԕ+|HE_ x-5s$=dGX#Q,-q'6 mes>,r4Iu -Q {y5i ye2Pr" #aTm;Lg3)MX}|f,j,b4Z[UTM<ǽ޺{h?|x,ɮ#Rat>ꏏAk@URGx.G=C.KԔEm6LhdTof#vFI5a~x18]'*pE4Wq8ײ޼ c5K##95}HI#7mrF.8-+XEeIS&{a;އpۦ񵼾UT*3焆\#j%v^Rn,7:t0}cƔ.BGUYt0?*‰w~\nlJoϑTo]{'; )x-}*B+HVOBd8C<|}(n[55"Ud.DC hqQD|8h"o⢘Dsx!:;Cl 4~}gWDWg>@'4fp̖B`;l<܈s (u;dNY3T;UAGztZv==&kz hIVˎfNjV98rNY.  OzO8f޲˾Z.͕+KG}{hoee~DI =VdFP'9zR6yE-F+<}k]3Y%p+f(W41e >Wšn\B$cIH/SQ^O'1pn:=|1k1f &e'4-Y\'([KG>g#㡫㾾A.9 Fpl;߱GuQX/(0kX"ϭRYuPGi6'S/gCDGl.vy|U: \Ea .f*pSe&8Fm!3>doN ר|B, IDAT?l_qlfMp̕f՝50clKdP61omGBdZaku]}X'<7z|ˋ|fuֲE?jgjxdW@<_7\ǙIMcOdb3OG'j4>C[Tx$^ Q.HEFgJ~%-(_dtHGVW&>*ke2=B6Mgs[IVZ9NA+s9v v>5|Ūlv0Lgf(SCEת1ZEͭ< ڈ|*2P L- ✩V8x]TIفS$׈}nl%Ҳ#jٖEY^ED謶yD]EWȋr:pɢ0u"#'^]˝c#FikE>L/_=Q YaџEm[YE擴ll=/iX-Dxքߨ^׮r!ǡv#} MʒOD& <iثNCAE: G\bDVvm֏&ڣV!˕M) /V,Y;(pTZ[tAS^m]$m:O1R)-y<7r#+,K:exu*ZkYY4Gppg5Цޏ䕵hTQP-R2RQ:c"_9r3g2rL~8n6I8 E}R?kVK?}}#9Jj\DmVGqCC,zwX"gг@ c~1ϳ#jaD5tּvק ̨9 O)mmP<\5YQUC.h+X-e$N˚6$}ӧX}O_rqެ9EѬYCUk@?q6|f;ɖx:ױWgh/Br*\&z}CYԼ|'ً=I^{Q858454K^6OJ7^zL{vMOWzK Q8!U^HY1DH>K#.Wm)8Te7h3BEÏ +[t|7i+@abKh9qKvEӮ.^vm?AU=4lflnlmm7lܰqڼns?h f9\чZ#N5Tr (,G`;cT\5kʎ.Y_3.-ɍgqn+Ɍ3Ί@uֶ`ODM ڄtzߪw3N<+kC y""d_!VUish~3`OU'q4$C_국۩WXf G>=H/0uc8?7/P P.q$p_ЎT]tמjl69VaK\$DڐT;l 1X/JfF |zW6c=-"9t(~3_Z񟜧*7s .A3. & y}`J۩6 Vp*!z|a+NA/@_p,G`.;Ғfj Z&-eo&_H \rh}K_̷Q;csPgYW"i)wDOugbmO/Wen_q!+~wJjPOnE8 GSZ#s$/nMJzQ(}T[#֪#r9K['ĺ$\UM}IXu^%FB,5eOq~UjDO _װgzMY zL^cM[Z#ᓪ`%'r/f\ታW'^g?hSkܱ9wdc d3=rٮ#ᕤN௠yGV󗹂r7mr0[Sr Ât?"9XY6}"a<,<;utuw[)@='%x QS?::nZNտO9 Nqf]Z0i1i;LY/)[p?lΐa= Fo~Jr23êf/#o+53Nz9εPW?HRP׵'ZpAI8X6bTrX{DoMĮπ2 Lxu7r-vgR%A/u-+AN>/U~e?f}l>BwpsrO|"ɩd1WXAJK+ZYC{g\G&xwZfi1.+t=NfAqPTc "0A Oщ6MbX0-!lNoP®a+KF۠$Ɇ0Z:4BP] n10V-RMU:JG2=S$$ yאTɰMy;H&J{D3[W䪊WðVSOdBɿ -P@*V5IyGForJUE x2-}З;Wܣt}lU㱐\ꑛgDx9fCg,c]S%=eAD#Fކjz&XX.44Z t IgM g~64`]PgXu%j؏u|(]QJ,uIJ&iutP-- f(j9:uNmcђ4V_2u`PG;Ƹ˼F:y~9nPAA/\4 0gс0}uQ!ڔ%|VfiZ]VR;#͢Z~FjɟW)Xy_JTEpz,Ca:֩l aպlw_SRQm4%ɖ3$@ʙt>bH^OKׇ|Qޑбv= ^RxPQ,g2{J{-G̖{2lr8f vu3FAP%X 'DPV"&'%FÌ'G2>%-mw,wUWG0Oh݌a1+9B u E2a<+ST%u!8^v1Ԡ>'̆įpP"4S U9vG^|YFva#HwWwT1xb7f:mj?O1jGɦC٢x ̀Q3P .HO8%5B|EO|b Mz۩g\ٯ8 tpnpf%@i'/qwJU-%_Ez|-.4]0W6؇[({e}?6=mNj5Ziebm>eT1lZ1۩ ްx9qEX-:9@ұԋ~%̀jVow]W?V7<^8;duy>O:yu7wS` hs#u$aCD#c/4W+ ~[cu P'#sze} N7qa􄓤cZƲX8"2ToӮ {O[-=yZm%(S β&YQ*Q'IXK!| xTb#kȟj䄫ʅeƶN± 6ˠ+nAq68 ZgwE)#ւnPRjl8'|Yqٴ.z!Scv4&UU+_&U1>)[l ݮ1=gLWxb۱1|bY4YDnˇ\j`ܺ/&Სf_|7 ;?da78ޗx=lN~`M |&i^C sv!`+OYs9t"n/㎱qUk%O-%3.`NpÖR Qe8B^lR>Sn@6udl&iy%PgkU׹YܣfI>r0{!?Btt;?Z2j YX9=T!^;3ӵ5ofxK\K}bENvϬՀoYhqq~odח]~s44b?! 3niŲ)Ц \:YW.-fo+xg,2eg7]/TE1ٍD$E rҧ3^)˗7^*Ff';gFdN'qqMo~Gy>"3D r9:WaoDUyƚ!v36{w) cyԣyb5clB_^3qLAo`V`JC[ꈧś#`+鋘, |7ϚNf|]7C?4LǩO~  ״T#X75So¿sci{a`n+eV;b.Y ΐY6dK ,C! 0IL*< _lSw@iIuW~xjU9JhR2IWH? Z7(cj`aJߪF؁[Haj8>{QipT.O xWdQW5VY>pNZk5ڍcX֐֧"IEV̀]{]hCZk=E?fsJ׊y#9IweȺHcy`'si!ŝW#PїYd7H7/ ֓Fx?Xs¯hW/qyL/"6/ٌVZ_}9Oqgs GY: >) j|ė;{:/U0ffM>$7%Ic fA ~Y^1ΰכ8=jX0rިuf73z %$O] M1b}sxy`"*z}7\Ԓ[eIV륍bDϒ$tBy6@5S墌88Y_.vI*װ=g-'xePHoBZ?3FPjzYTM3Y3Tr o/YpGEݱ}U Q$;c%>iO:C 2VV}_W($eIOҘ/η:ӌ/jo HQWӾu]5y;}+ޯOܧj7`S{ƔQB߇}v KZ\8<}JDƃԒ}y*^^xA4@>ЅZmcqh"y~vql|g=<=قH䍵Bb-! \u/C'zsRNW|~K#>>A,˳+`(lz'<;9>#g=K%z*֎Ɍ}ӒjD>~TAULN^} `FOO^|ϒJHΒS[ſX' L OuO<>YWѨ=Lg*\VPBgwieQ&'v9vƟwl?& $E?$9FGD76F_jVEd@='sX[*:Vywg|/j*cHUoC8L;qpF;o AMX%_{Fv 'v^QUYa5 c^Uܱ[0uO]-{ɍ3li;CG5=.`l5v,dbzmM%[X%Sޓa;hFh^:CHuxr@>A{=xH'P.,V= O5*8G XvIߋQvɸ߲6gcsWLV9G3F? J*ZRB2'X9D dMxP5Xx\#VȝVNqΥǻļr6 eapW+m|"-JӢ92 T௰ pp >x5P60@w$iщ/x3_@26}i@gM}z61x $C@U!9ޔCVr-P֣VX{Fuc2aP*g * chõvYux[gij1N&-Pa B~c=MhQ{GN' ryi^r`Lh IDATv_N>1Gc'lJ\JG;fzv'gt\nŇD߹L_]q <_,._#ECD+bg Gڲ|APGx=F9G5]Yc>g/򂤀]H@.3>$#zO931<ZS 5{:GJMAS8K^Ɔ`rY05@4_s̟3Eo1_h flxKn]NX]3dA9z6l֙eҖxR\czåkQfG*A0a)jplkrY8 .nk:E&Gts܊L+=|iǍV"I uJ mUE3.?w TGnAVrum{|275}}ӗ )*.&j~w5<'V8]\V}MN|s1-ϚZarܒ>'vɻ }$,]$dt$Xn8dOt@n G?CyraܭXY {Ti$Bʬ\)4<~] L>Zꕽq'6aتlP{j\/.<`ϐLTs"Υ\ހcI-JEHwyF5{73.k8eT(9XUl7G<6|BA ؓT[Z.0 R29l4͸WkJrTk*O <a1`NcOOVHCMZ:*ܣ}$@ )rOh"bz5=8M&3fgs31 +Mr 8VBX= 4jmutY.tSI>RgJ@s.4mϓWW'd58dUH/T%L 7_ &vMc S}^WndE'ZpJkCz>\zE|?|h~^o&͎C;QusLWKlw U*zϤYlޗ63,Sac"46ah~hA.Î`_2g{]+`YI`>?r,TfT<||@3uZKN>mK79Z~MOnk5a#HYLP'%HW@-b?@}9iס:[jO"td!T>̮+&߇Jx+ȧ 61D}y{]~[dVŞ&?Z]8( ~'iڧ>x#7'`{+->NZۑ߳׽VC Ř3Ni:ܓ{*LxBNy-! Z hM6fYK=zwtЍЎTDiŚo8Qbd|ȋuRUx)-Gω-r(&K-vG8iIi}~|Jf i2US~]&o91:7h9"۪j5'v?)j܊a0ު2؞bs#G<~G%*EJJ.rb fvvd>-;Ý#lpzZ>P]- |ߕFȷЋV8m:IgU\alY'Vq,b 9ff'-M~$JVahmvdl[vdHndHxL5Umx [ZFo{ڳp]b0Ab2.'25R t$bUk@k9:z'c$kmH!x*=^˚2VF% `*6a.ӧpFGN J/V8'ܵY74 U+V8%փ>ջpx AX%09c]G²z VWQt<RdT%e|=8&UqglDSO}.2v FN?NdB,yDwa=iڙ%ʥ *$O[E5|ǎ3ΩUpyجu&ɸ%HFJFM_3J=u?LER\$f"OpJy_0 ^,`v\Jsiꩴz#ކ/!dQ#|}‹Ӗ~{}]7Bc5#ݣ"L*sWȀz)Zm06wG }'f2eH, ˱j Ɛ]rz2$Rȟx]UaUr 9ncHĘJk6\\L wxQ=o} OnY+l#R_|TP]?eK\8l^l v|/+Ah 5|zǣ+“][__f~2Dqnd (&^yvUSv1}$M[Cb3F tlQx^v/3 q4EMrBu $7.{8~gTl)1T'mdZC-T[(hfaFfiM&Zf{>j;U^EnOO o^&8Fb'uTš2NFf WoE~eL_uBoxiƵP> &+CzEEeY]K}TwjW7T:FQ#ؕjly<:jY]o2#B}j2J%'/d)cx CZGD9ïAXFwozh'tuxu%Ґ!y$Cb4w_hGH:f4%Sd7pLck\Kxz`,udP>7^oƌ1/0g;Y ~~W!^O-I# Q{t7 V|> ^2 ?mݪf:TmT,*-jLgrT*%=MUXQZ}J+z٘e6{B2Q} H.eR)0>jK~A?Bkp6ik#~gi8])Y0 TQvQONTiCҐbS 'W"'H҅sd tZX{ G8tH#Wu*]X$G~ u@{@xI$/h쥪ci=hi„+³Ͷsø5[ g͘!< wK Έa֪ZW6Y<+s", Yu,|YY[qӻػ<4Lڏm2ʳ`2IK{=MR9XVUU?;֩ #5H;{A)r4dH"cl~,3;ֶWuX}l]t'we}C^ykjѮ 9n$Zb<ǣ/Es 79[E>{g*Պ$7YF3$]@2ʐFŪѼ)wY 9;`wq8aH<+&‹߉|נcev'ס3Y֑6hk28Y K~e 2cwGdNcԶ)}'#_CI/yR2OBH Y7=M*b]̪@5^"942r6,Wsrzz䓌#c<ŃNlutهpjhfňI=GHp8/O;lW/PYo*DuY_ZI_ i/l,R"yx=L$(S|zRM/t{iO⬐ޗ_~-agkzȃDY,y;+Oby1Gn2lx\RciUwZ{"ulZ%TLbXmȯpAd%bo 9i.h_o8I[uqބڵXV=ޜVEB3Bepb%$!?1$ګ뤩ڌYT]U$CIR\od?9HT)lBƨT xķ#a؎d*AH:$NZk2Ypkk8NR0퐹TklJBϑ膏#<"Y9F?5#nEѶuu$+ Ey]n:kr&SBpRDzOCd (JʧvVW#E$?tj[U}$Pxl#DZMk'$r/ 6xQ TWp$u0vè jtc}ᖤ I/ϗ&\{=~aDi}hd:䟴h֞&_٭VX~/*o|)kn%!;fI *crg 3 @  :2Ve+N XӬ=MрmWp[u}d(F[$wTz:M}.>"#x7X}/ SBJŞ#,#AmOk^zj֣xEtF*QTa(dM뼽ι%lOnz)O46/jI:]ke7v8jk* U7EFm<<8`M)jI^ ArAcZ6PFՌ4:G+85/)M/JHN|>^slĮLʿ\Bjª,H^@VfCYxV3+ӐpeSj47(92R܏1d]ĉ=!bCq*:i 4b4\IDzQkC7\">#}#b UYmHi۪X,]+])7oY^_$?TQ1JV7ZEBiS&Tf>>kLfbxV'C9:t+3z!`G"EvQ19 O"1+SlrN< DQ$8E]Q  ?9[͐4T,/P=h:G:Nk%֑bkJP"4-"ױ,6mqܮ=ݗ܈jH}5QOq| gfXLsH+ [ P*#-\Z[ggGK?nCĭOu]la{wk=VƓ:[ޢ~"YvN/h}]6.dlϱhoZ!Oʋxyc}ڬ6ٽ K+~ZW@z`Nk }-=&Ő@+zLY&Yps5ۭ:wp'`ldFtQ ;窘:DG+f!H;C-chĘhpKndg 3jw4Yյ{Б}_%HgGeYNbYcrz`u@…hk ]kLBdMX[v';i|P&&C$ t1arD~YZpk7Zl8G:1؜DߊQ; 4yisLS{a=RҴ9&@AJz$`9Cr_`x]RU&i:=.cQ,CY,<޳OZj苜 Hnqg)cBf%ji/6[6fv(-xD:0&}rr&k=gC:,549HwKi1?%[QZY&W(gϬY\`H.0Pmz'c\BF'H 7aiTe1 ŀ'GdGT+c, _qpJՔ}(jt; cwdOpG)WE{w5qRETŹnWTVt;H~ TINe+nOX=EdֆPi4_P5Ա^ CD|t޸toYf 2/A~OAa)sVPݴj]=]3oѷo uQ^*՚t6ej)7hJn՜T#w#jP5Ge%k9Ǻ2B-Oev(̛A;Jfj &IQP^3d)qJ ñ>u[jÕ>JՑnԟ!WM4n s&x %r*/ ެ%]P&%1;mP@/)͂zXv2-cҷ<)35g4A+l hj0]c+X+*sKFN=2`l/>5*(*kωPVpW,"/YArNBg;s)αxBSS"xTlUQ}r'`qYaetX/Cz9jfͮvX+t-syޫ~'Iu]+vB|oSz^6rz.ǂ Drx(ڇT : 27a|V򄿳 MDu܃lR0 GS IMd'Y #Zx[ak`šꊅ| =hi[ڕk7,QQ#BZ@ª@mcUem~&G]"S2 .*b<3Pe\ ? 1YM? ~O2x*.2{̿dqrFbԘTñkVu*@u4D":舫chTd +Ⅸ\*' 5fIbZ\ Z{n߰[p{H:=QHU0?eoeDm'O?n[C댊 x{z Y'n;FY +dCZJz.r OȪܡ]@3yքHcYWdrb9ź%ւRrRLEq~8pM:@+NzN"iS'?(<\Qw7J|:jF_HF夎#A !.`8kcgY`6]m=NA?6}P+Wq*ʋ;ކfZ2:d]6xcQtNt nɺ2#$9ؗ{:Ĕ߬ց '01)JW까^qO9 r_? \TC&S9ǔ># C@%C 82HUN}aG?]Aœ1c#ZXX)lòVH`S$g0ɍ*A)X"і>ZrZ / C5 41uvٮƻN?Մ<8'8 GfU =\8eDviyL('?-;=paeC:^Ld[D/@A̒ M.as!^4Set)>S 0w ?dǃ=\,f=b-F\ A H$+"( */Qi<\)P\$24-:Bv '|> eGN.cPExEU,@gZނxqW\B<փ|./EtSr,lkϕɛD@bF'prp%`kmC}d ^eJUOчL_!uA$فsp^PH+b k~ߖa(gB]]{,dZs2|!UhWy$,"H< 7Ac aK@SHTAx a<EcKpRN&,ts:w=0 *l'ow(!'鬏 u`͆%el"!Fڤ2HZ 3P [9&!e0TX~OLT&dܗcìbg2(ŋ}"Z>/Ǡ?& x\&@o "[Lc7>K]4S!_)ٗLq3na&֢p'f5( r5QTP1mO6~G"ߟ~-'?\E,4Ǹ."MVU$Og@3uqC] T#a ~Zp2X aDYϬXxRd?L[4mWm %U$ -wHD|S,[TakZ FZ;M9"Eb.N)!>|S_%U=X/ehx h3IE<48 n¬ 8kI~\O6q`YC{ (&}qC&REI|%N_-ETEˑ  `Ő?^Oie?5gb Sv2,I7p$l\g'T&j4 cq{kߧ/Ox&~? ɓwN.CWĺg=I)P;X<*zh('4Gg˭P?7EоD3YV@Pgv:C'I>x=M#J G\ 0{3KZ;<촔Wj!r |ώkjo ae?"{DV/u]H˶oC|[OWf 1ӊM E=.`7<k򃴾lsp5Az LnV+eF׸NUB7`VŌyh>QUwC3% yp0:Ơ "Tƣh.Yp ӎ-t2 vx)7~ Qg`Zf&~ #M35ARY92x-Kce`/'e6F(pXEOshBru:~17*AA *`=/ x'p(9ڋr~( =6~>d6Z=sLn+\%cuze,TJqPDjzJ9LfPQS4ZK:1.H~Ûh)`Z}cQ-Y_=:, X=?lo`7bBh()aA8ı)C\xR4cYO `~ ?0X:jZ=rLӤn㝕`AɌPL⩜l$%`10^*'VYܿ\采o 5.[rL+o0 7/zI?*=8Y\#H!u<)&ľ.qf%uj>`՚}TA4%pqAj'$6mU~|6%`]E qɁ9Լ %:NR35fgɶ(MY|qFG|}%!ghr yiE}b{چ?GF9Gˇ!(,wQWLE%qjнWQI :AlH +q*ht9B7^ݳ x Y6$`9MzR&zx_qQ)ʧ 7()јpqVržuX\YGӰ5{Bń #}RF(g h. ;ntvؾbfQD+QC\,P[2Bx5w8FܒuP{@ /n@ot FekrC&J:Y/ֳsz9;-)9|X G)C|Nk &'~ ,!.U"Zxa]$ϣu>T\%+H>6fEȑ=7ǰv{fl-lD|.{e.{v"ULo]Uci\Q1^^:>=f'Q覘L!B, Ulb2i|_rQ>b̂1?e30DW=͆K`^V TKf0 "EdqqE`3QPO>r=@H@*˹>׼c@.;"EKD2c8mo_b>^]]ގ*+?rD+$O+͹@AV*qQȄey$yՓp!b ooO*0rVcV+/jaQ9+ɳ?; `nQ}sV5kjT^lxRp k\T{ ꕫrk,\r kzk7Ex մjR[kqL*+jfo9CΔ E/| +#Q9鐛72|(]?->u TF3XBU|fv4.^a3~e12REJIb=H]5*u&7/ĻFDz_!R\Ynx{MlDV/-e#L) ^q?u[Z^ȥ-oPn)$HFkax~mqGv\Rw8zFa3@|`V`j/Q4NtHƆuWU FVD) ^+hAFP4 Q^G5a1Ae2 Uu^_^N|jS(~U"wH(RD0jL3_8tlQs{\r32_VإEb 叀9Jqi(ewK1ͮ6W77)"IыT=A?~݈U*۴Z(*+M*Ea'|zG4:^7_;=4r7f9%AB',z`7Q\ӎr^G~@D0̳~h󄷮/C0"jDP&( tN:eEO/F?t Z6W wIx"jA`(麬GJx;0DC QWYR⅙-iH]}I%3p\[CR_6n O #S ^/ !}P -e|Ί jkӲ@=:P=g8F;?4R|$`"BJ,bjIΠ |((=[)۰͹_VAKn^n؎ZCrUFxzdhZMyъ%WXW[Z5My W8qT?tqF`!jX]yՐաЬ{S.fޠMq`⼫͋ ,>vA#ׇ3ѩNAY؃z~p({bL\_7!tl`CЅ0wЋm۸,B7@g?:Xt.+v<7aIb%LRMd: M" ]Lr?p ;;㠫U؞34@Ք_4UYn$a9,k_JwY=Q65GҞ2T%`ըJ-bwZ1x\`KCvcQ.5q8W)j[Q ?\kcd_:7+1WP; sf0/. 2S\N`y)Nu. BYH$8ÕRl"Xoo.:t6pM IDAT],lI&jyd6&t\b5Nb.Ԓ`{Q'tZޘ_t0^Kkd6hAuD!oJƈLR@rbiG~}E{6(d>&tu,vxRz]r5cޱ?_8cW=W */I?'ۉ7!bSF]:i9ӿy{[^?iSY0OVr^3ՅNdgY>;HRfq<ߍSg F vOfq:mv1i8nND=ђ#A>59d\P͝]_˻R5AЭ"g><mx7} g6(BMWZ{6L1*-KX֞dwl 7QIA6 S  jJe<5ʩԢ[ `=|Zq!}A>#NćrLo#ɪ)]> h !Z!K./igqNIt6!ZA+ssRL@ WX0 ᠗q+^jv'}ϊ/Y{[]5ڍ ]a(vp@4$?Qy 7`j_VeXwsw /dO02e? V@,yeJ[kfʉf^QN ;Y%\;^ɣ10ϝfq6Ϸ*kˉb74Kk;}I獻Q27=wݒmdQ2 MFC ^J*jxj:d d8d !IbEnEI;F ևsc4Hqd3;oew@@W̙UMQwos-R~on >Ҙ7Gwd4(NYQ9grfmB-v,S' hcҢlV. ZdMv@{{<"'1"UqHAOP2xDyW+MCAŔxTFԎz*"#$tO߬Us0Mv6?}~H]clȕ.#;_`:^FEHkGjX]ٱ:!ګD8')$:]”AȈJKɕvH]PkX ZXRփb3뛽*/~S?k}j.9U=l5]DZWTPX#8hd@|W,DZIEKd%VJ>Z*"%jw vG6 eh]+󐼠<npT453ֱ 8)&TFy7Ы=S |93!{HQL u0ɢx- / l#1p,D<ɗc{%OznRq]oSuϹǹq$>8R?SpzWj_5^Hk1?e?S06],.VWU^BZ|ӾVUaz(e#y}Nk*Vhcur˨,.4XbaFoW V::J|ڨwpH=di$f74j_ꏠio$tatXפ1Xj,>Sp@d&U֡cm/k#yFV3Q g"z} W~Am_RĂ@?,Lr:(4Y-3Cށ'K.ޣlD;Rٰ4d)y6D 3_i"b V̧"7BpyB?s0Y]ξ`ǐưܮU)l++)xw |0P((dвrBT :s H > w7‡q BWu\KZ! Nэe+p*73ph2x b{@/cFRj9srNUq)Fv 2꾍(,&vh0tW N ۫Ÿa#u|"((9LE+8Ǒ8p8;Q^R P%ku(Y YI֣j΋N@ z\W Y{68k\_v ʣ \COyuS< 3 Lү<޼jݐ;x>Y4#٥0ŒBHXEg1|<%%rYP>^/Ɇl .[ z?~WoMҌl0ςR'+}";sywų/DJO[}ܴ6u@~LO)Q;kT_rұYT-iYV2^ r̰2 N˛9!W +R/Sq3ןv썘$agZG(9lDҰYNsal5a5Bz}Pxt=.w3.׵BaڛE#cq]xFV:9g6*_53١B$&81?{َ& 3|,nPG_7c^ţQJRL#MSzXW3Rw02络>{#JP=Y2H7R%wHO8 Md}Y R}Q`<2@wy]:ֆ7Sڻ38^ ٨VT rœX'z=:kB,̸|šZ "H 2-SpOx;0ApJ6&'$[hV.uOӥbmhǟIt /8VSa<*PΞ $t\=^*I~)([&{vQd>K x/+Gێ[MZ $}fStE5U=cբ'0-56i.У\|TVZr-rc\)pPG΃@4?ZTv?Qh)Uz/w݄.(Rfjбk"x[M*nU{kn(ދ[jǃ*"{A91L4?>2kLek;)Vg3]d?n]=g +A;]R9ߩ4@<=Q3SI~TBZt]݄P^Dd tUo |-Yp</'s@@lAxs_O|IY[ր a;1VE`*'(/J~-˘>e;@ݍC\tyAk5hra@lpM)NEМTo"ަ*ޗ{+;:, nB[%dE{7vpN]kPrJ"J=]Vw:KH J>xO`4p ^ِG|%_l}3alnf~{s[֦_;f4f_M5zثVRQJa-R +(jZ}vVN&`5ܮAaefm5şe-=bɯ};6՜[y%2 WJk]ƣ&gE+-@{ N @j :p"Ep_l9?bUE+_1;X]^`=gK 7KUe n\+caMNx(B=NXCK˒z1ʄpŅ?ȓ4.O趑{#>/P4{|-=BhДVz^&͇3{ceZu B2Y=Oe%9eUC, "$lX]`qOa! 77Vv&I!)TqM.ν)ojkV2ãW5g\F}n}iFzm®B-XGVPFϡr ;/Q'NQ:7qrlb]ѳnvaxQ PNnN>Pa+d;4VohTZR_+y(m@xO'Ӿ`<<{+meHӽcrdwpwveN'[r`/ dpb>(^XֲV Syc)k-%Ln!q g0Aަq*Z$ V5v r;8 0 '"`WX&4l ɟbS݂v-J/pc х8QgqHU|a V˜4oY# (; Ekiֳ2h$!'5g=5Rz _pyH9"J2 ܳ6ޓisykEVr@B;zk zJ[ƫoNNg@"B2V 4N`Kv;nm o/Jvtf@o 2[j/Ӈ~p# 2:ʒ$ /1( Vƪdke>=χ@ q*9yJjlW#y77 Q~2q"GW5@Ea!u4@oZ!-ɭ҇Շ8|wV.O+1g^ uapӇZ;h9b+\}/s4cr?p)\F1Lޖp|&trDw !QⲚ*RJ=juQe͈ _a8ZJqQU?<.8doy_e&ӱ%L+2pxDH^xʃxq4k 看ĶmqcvcI&lٸi<[ -"[*p_k#['43JTW:[]s$Ll5LWpεzggX(zB ,u=ſ"SG}3/$WLⷝ7g{vaU>sw{:\#y%y%{,e-fLxA6c Ao\ZMW0LŌ'm 4/7xWBn65eѧ-2C?k۪7;Ih!(%ڕ#z8OP+#/2?wW鍓eD sgyLb^SeMzB^`Y[UW8Qg?WJ%zy{&Ukqd4yO5Z^8e nb;ҏ-%=)9Id8p^d<ǫ~d*<M0 D?kP+E/fS6Dݏ1|+}̩.? ndjex݌61bx|NgGyE)Zr՞#"ZPYI.jc]P_2w1s;:Ո(v<CzCi^ XIS7)I'GZcU|Mzxsl}/xӞ` M:<+HFG`y32Gj< |ŽŢ{|'Z N6V%hA}+2 3<$N!Sk& =J8":ċ*"a+HsMZ?uA;Uri׳ɬf:]#yU-vA,B!J|4sNMrVD @C+}u'C25w)Z+Z3]vs5m\:ASH&\iU TkߓwGD__Ll f3:i<{\jj؈k3Pш5KYuԈ?xn kC7Ac+8ߞh 0ZB摋 :\J@SU!}Feuʓz("xv\ RH;2!2*C>t֔6 zc01\$4]]sW`FSD<)ؔrk!g)OMWq7 ]@@9J*j[ WP z›_yVhw$_ i}"l9h$̔8/AY>оOvƓڧۨ3 7k yNFd8fX cIx%+IЗR|m r*CR>c=U͉}y2´H}: {px~pp#ew)Bi˝D{j&StllĻwJUsH8 `$dC₻`k}:Qj_WuSsҌ֤҈#TOg3 YuFbS/fq&T/;꼓񁧡сdo,FZ;C<\U)&&HM<\.k%Z*(j.󪹕L:hy IDATN>6EcY\QDI-+:c\ڱg!F:#+ NbJqglizi-;TwRW{>E|CBXn×v W?gޔ!V#;E.m6gXQx]+!޲gRboeQjX?BȰ:9EcV :g^nb62JȚx-Dw+Y!ͬ]9 h_Xgem>r` gV>Vn{N[z {@eywZٞ10kZ}j%odq_Gj۟)uS]\uZk/T cQ!ź3ȿt $7!M=dĢ\r8+B|-W[䜠}D1/<; L35:vy_} {[䞦_Ėu|0zB?!$T&!ZK &c'cBZT40=huTՌsywd{x/8|'-`pTS?vyr>^8zDZgbӜQ9а*ac6ޞ_ܜ>3+柮CJo<4^%HUUCV a6 n02%d}%[5ˠ/ɲꈉ TT-_;كBsPY, <=̝Uo\O}\R\YRY&즫!+c=7䘦g-W&p OõVfUs=ѿ)q9EU,I"O~da2{1V%p˛53yf= ]$lY+W 씇zz:᝹0p^4ݤ(}l0ԴPb.qSN.B%˨ưP+u^Jɷr6ۭA)&8NYCҼdF/K793V7t,SR;w&NCM O􆮸 jBT(zI-Y- kUބ<`?\ؙKJ."*Eɡ* 2d^ZIjka&Лs ͬe_youT[zK Z4Tq)a- C"]BXU`]笚J_8ؼIkvwIcdY HQ5j-Hm~+AqPտ/#iA*x%~>'iHϹֳŷ8GvoL5i3]i;DGgDRTEJoac>?rP3:y,4sA$Y 1[C"1+UZtu eż-+/d-C}{ !dw2zRwCzzQPwiPa{<Y* o}-Jg"izi+p^y8nfX7 ϩ'g,r)11ސm"=ME͊y1oSDkI#3b1  (s&bWܮ Z)Z Rtm˙o۹ۄ 'g7  s*j FAvEW- =2@WM-JU^#4ޓC}n- : _0%Zَ`Yk3i2o:-e3io ||nkd&lWjJE6]>s|3*;|e`%ٔŲ: q-Ssj̑Ö́3&_ߡP 5X̓ҞϘp5m (zp\qrrxK/6y5X$o56.(b┰íI+c1K/ӊt=2^,]c#Z5 ,ޚ`k Dօl `h݆#1ĽW:(kRee[SlۜDˋX+B y0C1N=+]N`>^nXx,2ڀ>ǫKPRLJs '2F+KY ˽ 9W69i7vȊ1\g'9/qS,J}(0<|v2Lc4 ?[^ w1RB0-, l@[yٱ\Dui7pi$6\# :jC'Y]3#hʏQ׌lvTU<߰*N:u"79 ̦3NDg-u]'tVs]d3 -3{ىNP!YowtcqO3=!F%GI(Gn&"N}l +@|Y>d9m\gd:QPgamg!"4bc~Cܮ|j*j&%.F<vL aLJ=mH9'u))/fR9l&㲖W 67LrXY Nǻh!w*Z6"Lz2KX+Pi;&aSM6\F\I )ubN2h`QV\D={T+)aj9W7W?B͓`[0^Xv#Ye0Fɋ,q8WkC~72wE9R*&BW2*UCf(YSDNjs0h"'?,bN>"$E4;/ dq&ڧ&߈0VdN p^b9e%2Bu{3"\ maV_岷򊧶#ygR5B4ZHNbZJx,R4/S'nRfVQJ|Wi 3h"5xџTV4ROՐZʢTa 4(I%7\&UHO}7VE!+ŚiB:MIj9"5zJxᆰFI1^cA+eA*d~^sUW$7ꓓ6hpB@i򄆰uI}ʎ=Ѭ:5/CW14?./k zY6Z3b}TTw!둽:-6Ɗ)Ӎ!|CO}6SXȨfitU,o`N ǩv]E9_ nЖ~N:O ig_3d5RSU},&"K m R'gԲ׋) S[<j73VGXG`)%!l橛,&$]cS$ .t\ +Y.qڧ2+2Vf-'A&GF#4U WuⰓ*=µyݞ\U{YU10JFsR.܋59 a[ca?qeŜ07&mPʹt%fגH9eh́Vl1$ev¤`<Ʈ+?#R;̞BZSKxry9*WupZ UNG{x;ӆM0:Z>_@3i(n>;X$}A\8Hg7\|d%z:xqabG*UH:ln=tL%dcP{ƦApV?{ί?dyIwd&S^ f&O+ΟSi>ZG) 'FxO c嘪څM4Fm>(/6kq5j=4SLnumKVMIolK/TPOxT hgA[;N[.e1]sqy sLN 83?e˫yE,2#\dfև!{U'T!do:ǚbeArև0rk50څ;Ǎ#hK +C9Ν~Tyg&,iu$󅢐6t??iP@tJ3 .M'vьRUI/k-VP[*ƖVxo[=z5oAf)g 4U9Y;y$mZXVU寎@\!%wjyM_J-LfW||րy&?@/'c&^V9Tt5K^'pNDc/ OQp!ki "y+KdAMR6os}RFe\÷?8vS Y4ppAv!qx5d]ȒTv\bqPbȣ.ʬo;vYw[ːbh19}^Xs1XHZ֑E[~1j3~uh>zƒ9Q+;Y.l\c9yJ῰KM#ȼrLh_y"YNJ_TŘ屿 v u[VC3^wέ Ej+ҀZ~m4['A$7BVU5Fh,-3{zӨ[`lWY&b4k0hb6zjI61{EZ|8OW̩LV b(MXi>xa"FOqI-&wQP%wDuoPήz]q0֑[r' d&E ״^MjRd}KpuڔxWĮ'x:a F~eM" *};~}yLu,/PuZUVՒ%E#zbY v5QYX߫ūJZA멞=\Cv KD%cyu>mt7fsy (>t̐pՍן!p4bX+!QUjrO/hf_75p)z_UoccFfZH(%O)u=X֞O(/jwFlCt̵hӷV)8:xa6ehSך[,mF]_dT%iuY:ųvAta~_#(8NgO f NжlʤKNJ4>93QF-^ ?OS{$En(/Z wt$StgX~׭"Pc)6񛪕A57CD];UfUK5ϵPƮw2ZoE=RM5^TsUPdQa9ΖAgAI!uSw4 1ze62ҟ, H^88Oe OWbLͨ3ѹڢ䚌lyHjuK9B UNcNhmlve%2˱^]@N ŵÛC⧃WX鉇V#*m$3qr ̷%[,(E`k%עqk=Y-ŕ~SUKWCZjohd b::e_^P_޲PZqX}"dAʑDg7bzj,Y޿z֞"BX C%Re>tvHZBeC/o-@s $z>~ Y$8SӰ܅wE5P#T57 ]EMW-2®pbm3Ϙŵ=bX$bg"cB;9"NZ?4|am_lY2ZLUԊПmDVf--}?ȎnېpY]q$Ǵ4 Sd7KIENDB`libvips-8.9.1/test/test-suite/images/sample.tif000066400000000000000000027367661361153320700215540ustar00rootroot00000000000000II*@ :sǡsn~iUoțq3pnq:4qpFqs'mvxޤtWĞphqčwMuūrg梼wj~~NڞuPp o躊8wu˧5mr_}ɴ |(ȗuksco4^n閆mpCk4r%y=G7rh5qbŜAwo&nwzFqVmŵqT>tbiZSg6p,}xɃ zswFň@y}zm|Ȗy(tv TwĄׁ̌ EUztԩpnFsȈuܟu~ {4#zgsȽQpzl-"uʯvXwvyq@,m.m³o$ ^iR|Wgpjfi!0`ϲgjżv+:v1xs[z➋qp o粆0j{h9f!>ujuʗty vRr6\$>_9mjIpq攂u{yߥkɬ¶tül^j|nBr4Khا\~Eg@fqUoXl@knxhˬcMredɂ7bAn1m{jڨnxf:m8윧pMRz~-vkm #n0q/b jŬllK ta|{ʷsƲVoYmFk?i׮Fjh rf'd_d$x.cgx {Uݨjuegbp"bf7l}oSqr%o KJl/uS:~Pq-eKkGlj cLtm apKȃsdLABtS@w# n9yS|Kulj Are֞.u u߹xw1yʶ1q"!oq3Ȋu֡srgj:mÎsuŎ v3w)w)74xȩvc,~S_{P0s8јtػID||wlJrȿhz?#}9sy~y |TxQ s¼r@ @vYxvV*sFȘryxK̜u~6RTH̅ۨ|Rs֕jFnrp| sFk%nrƧoĐo},o%̓ki滉:l}puHqׂ3ϔMSbkwtfӛyqV[t#mيdUk˖nqkѽ4lp<ápxq0Ì-v!w[ʁPw sƾfo6`ou?䡠plqֈ\s|U]e $ oPm材kؾ\'lup+ftyoDvl}ҁ|oI&`Җh`ϞAlt}|/ SwXwfvʙter\32lA:o:7%tŗ r£>{_KzYǥ#{8zwGl4Û.k-rŖ_yVbOs9woNow5ykvDZvruQo iijmšp qlKx.Ҩ|#'z˙/v|dnԓnlK̙vȚq-qlΜ q vr{Bfjs0qhѝYsw{mo]h"v~:iajg;q;|:w(z}lðr&n ؜·w{}ٟ~mmsCЅ7JzoԋO[%yUoj9TyMϦ|]ħx뾀Gz4}үfuTxhzp׻mlll*%qɘsƝHp|Mp5q}Mo5Nl_rYDpj PiJחqx4f{|ǼJu{{y&Uuižj~\zt[ʮq?rU{ҐVqmƶ{bô΅ƮTDYr̮_Zӈ!]d٥jbPZ)eLps|vQ?}{遘~~U3hx˜p仃n޴oԳŔ(pQnR$pz(l9FzϚ'r{k_ȇvaޢ_kCybï*={1)(,{]jeljfm k>EoݗNndg_՚f͜nFsvm[{,} wſ5u22p%,m4~g:6mv!i{%vx‘k lrqK8okMkhlغxm'jkb9 lRdc!Kaùǘ m)ȱx~~ϞT~lc+djjH} q |`<\fmkr/$tbVr̰aS{^Ց]yv?o6xdƠu(ɲx՟tfmddkp⢢~gr{pd'gȫhط3purPLmZ`nRxrː_o"Jf) cWlS_t{-lˤŏ(q+oy!i򺢛n&slѶΙVnQg w]vjlHŧ5ʝ4oUm;tnW}Vlw[4npzmilּ!Ϛwԗ%aff.7rʮ?ʥw&ȍtLSoiŐdb'^CmmaomKi,kɤӏ|p?kg#y j~&w_5gɚ-{v\d|la}RF"Zjiku9i2{en{8\ tH~e@u=~Rf}Wp. l<]aq`y2j≈oQ7g~LχiXK!tQu9nWoqL0*ie•iartɢHfrnhezPΚ~QVlQOkWpKxo!j)9djq ێmocƠjP/rwT]t(蒧hC_A^ pc[kͤ1dXm:Dn5nhe'usTٟw­lؤ'{΢8wnvg'ioqr)j{ʜ[krnvlō[LOap ar}ӛv;ozVnVJ/gRѣ+z5“YMtPWoJIKqH)ghl9p㢱iK@`nmhw?PnM׎gZY/^/R b\h .dDVhvFqgNz4%Ķᠭw[ЖdsYc(hh%j21gqiȼ,shr 5™zTcڣkb١Adځf{d£hiYvɦPv+o|d=eelncomp{Fl#gܽc`l:ssÏuĹ?ul^m mcLo'q9ꕠm/mJVzs0A9b֪f ?_oڝQrMm/k1|gH,si^ijِj:6dޢJZk]u-8dg8`8gspߤrި!+zl?owQkڹAYzotQDhRdd7lc[gUxzM`bڗgsցo17/LuaTakiէ ;oXQ3kCwM\hot^#b}^1|e!j~vtlqܺHtܱ8m)svnd b]^-d%dȻ: h%l wFuÒ>\|ZTFe~gH5g1fYshsh5vUk0yq_0a墰FkG^eԤ`cMi7lenTo}Kiɢ܆lb@Y4_cm>OwΡNt6fq*,p* k8=sȼxwiCtIpi h>+hn4q?ݙjE6fadspܐnУՁ8_]DzWeaWi"d{7fi{jd"g5i:y!iգ\jTkdlztsF`Ţg\xaT~&]i b骳zδ{GsuŵhF⽓{jWmL}6MXiCݏxwZcKloǝb~A&ʮyTyIy]V#txl-bΪggH,pc"spfoh#ݗOm2*rLk/ iͺ土mH.tðHrR i6ρ^~\(ORdъ^nȖw\Kwdj}f[XczW_1\)!d閊m𿸝qä*|ɼCOmkçoM%rc]xX\X{_uU=j}Z%BphVU[B\\mXmeꤊ`| ShqkԱl|r6hgcG_jvhds0hpoΞtyjӫy6kޣfzOSlE>uM^jS}[ YurKo֭TwŒ3uqar._q^ZpW bH j,Ќinmjo]i^g<u |1RlݨHiò0wsK6/vfsUnmHn.~jcC9 jfT`Z\K_p +wڽ6~}jNJWj]>{a|ejp|@qzuHHig雑gW[je˝~T[f؂_`q].xUӧ~h]tHO]Z.d ם}y2+nnxVϚ:wHW_ߗrf)+n0$bMxjЙj!?gnmiuļÀJ }x"ǝٛxN[q\Qhecj5qțqdPڑf•[mY Cm i>EDd*V_ı8\X{r"`{萼h5"n#ΓR{rs¾ÜzῧM\*ޑlގjФKlωCi7c]No)yCzv:.u*bUvb˭򥼄۽s%5n"#ik= {sÓbr>ng:;b<֔lǬWkɤ)fLe{lvjuirs?m ĵvp,v*o˱Ε6ll `y};T'|^/n1Ðq1Nh`a3Tc{,VqzU n sQn&){$ ҈N|v"kOy~8U؄mPIvRzWzlǼ|Xǧ~եw奟z]žez?2{0l iznr'uqĔkճj޸pŔ"jqemipCl 7haI[|FŚ~+U*gh)܏KnMs&Zjզv`kTbjz_Y7f\9jE\syfos]q_tyC~_~qDnRr'+z-i3À]_{\uNv}N)=`\Irw s8^Fv0F'Ri˗`iɦnbe}km}pr(rdp͵Bn8l_؈bj dY[kjMkѵp~n-mcijѾixўtL֔l]܏ZrWsq|a<{hUimtҡxlru2)wusNRv|Ƙs~ p)߄igǑ:fڛ6i`,keјl21rI<[pxaCeݳp4{<7p|FncʡyקM{#Ξ'q]_xQ>wKtrw[DR+tvGj9Tm7p֋ce s=3|Dyū{&Yj}ODpSeb$7f1pv嗢rn·YqqlĠzGƗjw5dNL#n r젆vřxżewmOzK_ykQQonͣ2kqUxuƘCtͱkqHz]U{)sҦzm8~Ava i ~noEo Go}ْ&m׷07uj{NJ~b "{yw_mhpxguagZ bb~/b̚~bUpX5s즐wĄNrv/mqqDm{m l>gK]e|qpu&+=xKǒ{s]ޚwThdhIMxqo;aU̇0[k]m2ԤT}Bݶ%tZ b ɂfkltÏh{@檃mj~Bo4 փDwz:Bysqb#g4hfK;j]Mj@g@JgSj{?q%vo1k²ǖ i@e]fg&PeioDzgg^{# cԘqQl\_@ff9 j/l@$q`צrvvyNHw[ʁPwO"(a sYk0j@lZLvĴ ve~mǼٙma&sey2jz^qRjy1ĕ/z svnDBrힻuSp9 m̵ޕ:kLkeFcޝ|eAPsSz+sskƓejÉ#\A}NAR$alƚkeU(qrG:qsrP܊Ce[^׋wYbY׮,qƝ>v7w-!{ -uLhqqnܾgt}aEwa rɿ-Nrqi-ol|?l2ogqOb*!jn@Ekk6g!SpTOf|qV(N$X󢪐hQՏXh>k`mb{b4NyHbR6gr'moΰlPjh7nZqocXx!rÚna[ŘkoWq\lwcjՓn}kӴRkXj}D| avěyZͫGC){ 9&s2dKhG7qlkȩFnֻx>T|Twةoj]gk:_f:olԗ&s o; cp(duͪtuǬxtNmڧmkmn#tOo$qh0up¾tTqxt0tfqV\v_}iq_v.|#+sO7_~ZއhjEtqҩ*moxkSJs}Ƿ^T{|s}iޟKe.uccc pz|F"{{~D}'ǐUy+“w6aur֗qn(w`^ ΏYj)giml&l֜@oUpjni0hCh& jƘAf%&h9kAnl_wcF|:E^~an\j*f[ϑlK7qڤuPu@x w/qͣHr7rW4.qejҚrhYh&kyΛutTvZ] q%!sAuLk[&ajFh` ly%~ltl6lYŇl2Ŧn㿝lɗkú٘kimڪq3pfډwV|}YϏ`s٭Gh`ldtf`˟Mbd!MQr˷r8wͱw̟HvMgg]N6ZzhN}l2SgwҜl7 gmtwrƽl@QZ򨬍^Ln`ᝧr7o2gaj.lhi;aalGk4tkŠmmۙ1gg^U~Le*ymF ]ś"2ae3c_vM{XvnW%zpaPferɍ6hӨڋd}d*b{疕ha˛o;%jNcd6]pR(sHsv=W}bj0h+p۸˝e{ûǠ}U^O8vEH8\7h@]^ְo \mʲ֕HqQ{q.R6fR/M]dxoT }bmiCvRaw[X2y%GwZk0"get}aXwL\^f)a|U}x{CL3WVxa{~tq{3ty 2\ډl١ uHVV$#j=[Kf)spkzr*soHj~k}h3Xh6LoἿ4wŠwrN{~!Bz {qPa)Ä0_ޡpuzk-}zcz#pý{ѬT}Yp#HLnRϑ%l2bQDc))dihԕmm!SOtp&k٭Gh-[fSBiA`d|gapohGeҟaZ݆YWi]r"+t\hx5|(gzz1uop✸t>KohZ(YГ&rri s|uƀ#r rYۛ`npjBg+4ili plm*k?-d漇_١s=h:gѥr o4Gn]ijz5oYx#ƣjvesքj'wU3_q~6x1Rb5_tJjS `ſv|mtro4orź1y@i0tO`97bsoÍpqֹjn6oUuлr)f3%eਬvbGgk^c;l(Vp,]i8DFhNhigP‘g E`_vlhnypM=ndhEh)EeXq_QwDNր]Mm trm7k(UkM4kaځaI7ggά+epgXcھ›Mm7 Qp1ćpzl2Br]]x˜Qyjؙo|6ljސm;DnquFma^ÌTSo^lnL7"^:zgТpqg(tot&ænpgxhTɨpUofmȥdTheqJoٟBv/zl(oԤa.`i%-fh|АikkoLK|Ɓ#vw)eX1da죞djgNX*iA oº tǭJx-ydwM; j2k]g_shp:f`ўZ٫osVqȬZtEIo,Ȯq9W|m較+j՘]g8`GioƔ*ilRzk4c*Θ]nwj2et"o5lhþo"yvmҬߑ0iحlRיpglmFfr>f|ɭvMff0a‚dãiԚDkԚkSjԽ]hӾÝkǟqbq?oۏf_fE^_|(oabuYpf.mˆnU7pČj࿙mh۽jkӿnA6lŤzlUyp{sWtGooGr@֣vkxũ(zǁ~zHcuR~l̘a櫂.]ewh`Ctwy{~^8j Vzbf~Yp4d>jGqc=r(ܞvg+א_ZlA_Op(ϗ(h^(3gіgumB_nqA)n% nIĞ q'o30`ZDY wL`kSqsZ(h?דe\jjbkx.qn2)e0h?b1pıxtrnέ=ikbebc|pb棗eoWf-OjJmQxuK7sqLW.hNh-)jʘg9DhvggVdp!zwpsIlajStЀtY+(k+Mss l|^jkƱgQSh29j-xb6΀O^Khcы aー[!Ubqlh}rh1]z]杪jx X|-4XmKlijlnB e¬r,Ȼ(xyuep,iHűq̥Z|v8Ndżmeƒst n Giّg|lnhF朂{Pmqeܗenm浦_wlgaҊb'dܑlӠlaeѠc-\`/~RaZewok=dN'Ta.kOÙqǷt0u󪉐k5у gӚgAb-g]3~\(gftԺolgm0fp~^$΁_$lJf=c9Ջ\]2eOgoҘrhk*+(p*t>©w[l*dۥcfh)>n޹ޜmhdӤŊ^˗|}afmRebw]/!jngdvo0Epwg{k(~l]Ge醓[JweNsıfx}Cѕ,t#p쪸+v&mmB⊻j 'q/m?ngc~ ecߗkk;fxr;`{U\4(k!nTf$o+vs%uvuzJSƱxYlydo-wfB[pH^pK[_g%gq}(qyv"w[ȟr.ƙf Bc i7r lޛAlK)kҾ~Ti2h׽Pjm0{roCmqlf,)g\-،^Ҙepۿt"¯.s,}p=fr¹xƳ"y]j}i@3tkɈp`fZm#v{GwouQwMN{(Kxgftu¥Fu]imo3fᖏ^?j a1xxw v?v ѡixjn9Cd {b_u_#fsd^gPaMnKGa)s]y j_f^Yp޶ߗn询bڭ_2a.hubo7l{q)Ҟp`$tŽoxWp9aa\~|`qu\^僦lxzlHIn?Rg jorZi ɐ&gZxgHjwF|pusUtlkhwiƝ`xxQ\۪:j/ZmhÝlSŘuAGzHxftxhДxkjF3rlhi?͗mѼ-Lwë}~ xPוmlCh @AkΠ{ayWǍk#iwt'cWuwYjw^:6gf kd젉i2vi'GJjs$m~mEwdsxMXp_gr̞uw:l𧖋\ L`նr2xox'yǝu߿2lvwNuXtiqQp޹7x)ʒoksgi|yk† l䝫pR0mdk˓;i苎c"bHjָl"q&hd+kʛqL%`rsrĻoonĞ+p ju};lꨅGe)Mmnҙu({qn5ifthš`kRkEo™ nƛ$kkjffBi=љe\[o[|i&%ZlZmgkͻroFבkQkVGr};I w$u+m! rZhk` ^Y&eұsAyΞx7òtƚ{y99vnߝlrcj^F4WA k>zysͦtDq3oP‘glQgۏwe4wNjwgĚf{^YM،*ifkt0ȝzƘylui8Ɲeorrj[or&YȐcQoPnYmuo根t#x-f3\œ^Yޔ-c!t\gISuJ_zC)oȦmkifj6q>dctfW$u߳wnШr8F4jעk'}VRu5HgA6rv`'b׮bTsN0S'pu~3JrTi9dhhĕlH7t|.ltboѢd ]QtCdovĈ]7m6ŤHr jy2i"nɛncl ueh_rF{塢xpߔ$ke=\ۂZ]{wɼL>wMlm`p%Tw_M邓hm\Y4yfi5u=s>f)lШwMpQHs}C}]~ŷ!Uɼ?碜u~Kwp)-vmRwץ}Xs-i0KlvE{ vmH'dbۦh>q¨NmYr~obKZchNp=vrlһnսv؛u?+lo.<{Gs9}xux直pnojq xK}>r䰘 eŴkvӛUs\ sTIoög>hگjk9lΔhiՔj_&m/$tcviv)w,p)oΗ)vמay½0_o$푉fԚP\`R{^җЃh䗒mnKuferXڌ|oKwzTSh" moK/sưair* eNߖo51qSmRzoӪ 9j]a8)Egn)yoȠ؊m씃x ٗss1p}<c!aRvWþ'Cv`c(BhjmDp{ŪMѡ;±{zsxCj(soaKkNDo``uBhrCvHpdmjWc-gRmƛm/rzruFk}j{/mci4ybyfkKls]y/u nlYqmuWtLa:qVCj@pXx6Ü sj1fh kEl~r­rꚷqÊmԙg"*hsLhɺXcβY{NzR8V[e6krn󴋗m.mf5d-lOѧ Ʋ£Jp$akƥsƿsq:ikɠcb՞pbܒntY5ty sؤ%zPUzYåx:sK{hdq[mƌWPlC?yo3x(wؤFz s &kMXoxZzfm{n󩶎e,3s+gz"`wilĖj~pJ lݷēaMq_]0gEra̹pwymÚkοnqh^iPϖy@N^Hzb|itd|y`Eau9uQۡp/onm/sq_\`[sau/{h'eǤdcbɈarOehCߔG\[‡slĔHxXu]'iBs|l>k$㩘 9nt \NeAّtfn TkAly{AmhMo񟣆dΉ cZVv̭i%4XS jퟵnm^sabRv?s~ؐse ei^Н~o}Ox^n q*Fx"଍ʞw}\a™LWmK+wD^ҜtokعQjYoӶ(gd㺃 kK9lxtʮ;~t_ǚ͂~ wƝxR}诺wS x{UvРrͿ2Nj'1pĜ7{2q"ro/ c&d=ΏnȐPmQ@vmzqelXjuœzompo]%wyisJޡvOsn@#t|p:lLq[Js$ѕ j-?k0(nu-fn޸Qj*jĸWpPqk}m2s-t;t꿴[tcr oyu3tޜn"ڒi'db*mÐrsjmhz_e{;Zޕޅ>Z0_p޴DuƱ7\vts٫ehaNlzw quhϬ⏇_,o][ĈB^*Ґj=vL%pzWe7$z,͐`Ȕex3hlʪѓxr̴ǖse HbiߞȈ f>]aқdzɵnȯaQpx;_rcobh24hhlo̡/gac]~i &xpH-oNʞTvѩ򯳋)u̐Tc%_Ȇ`nI\z`DSy, zj\喌cc-kh/啛bgνmiܢ|o{5I9Svݣ΄|`xCshrlsu3x&t}DuN`mZ*\[|rY—KtA[rYD{ePy[g4|u_pIxO'W{a4_g,aUzaTyW_pRƐoWRjzSb)a3w:Gz_Ʋw,FTXߌsh eT.osy*rP]e mHM݁w]Þ~aǞ eڳvps2t>gwΨyFt{~UΜ}Flpj `oV:5pz7<z陀h#in'yȹ@isƱfZ :qFMy]4" c{EJjrnwmp޻jV7p}mm~çya˽7~+K{+x*­v|trŐRhuwdupU.u{9{nnÁOlcbۛVv+6~%甄l5Lc~fVkАi"5i)"x';qbiw-{h˽r%=qưAp%rvgmeבkkȞlŋQnknJМ kok=l nVo䏨nWm` nؤ{jkRb8d>iBDkEmanɭ*ohpFzqz yt;Fm'_g͗_ aHĕc#s_8wWoA-?d'فS_] xN$k=G|e j̓kclBd6~~e0zWbTdzCeբmG-n󺭟vpПp˸Hexq!o)hꎏ^Α^ _bLpqm-ۛoArnvßHxGxE¥-輆=`Rô@m1ޚ\g[`lbաpȫujs>đ9ƪ>#ߞBv뷫cܷ/m"}}.;طmxӖjFNixc{;<_DN``He^84`(2}"Pejwmuy%)t[wcwrCk5lk$hS,qk!u—q޶=pܙXnṻ|zzkaG'dΏ+mimhqg¤tqrhƟo@֝mP֚ m6spmޡ׊Thji?izi&sſ|up?mWɛieL9k _qȒw9oׄ>ii΍h09k(#Bl NlGhelӪ8Wi=Wd%k}s|W}+_l##kڸϘlEhgshql[v2qxĽ|+|ؿt({m%nc`JmŌpѧ9h s tHCς4ƖmQuw;S]fctBmЛ$n6u$̳v;lkNoTsyc{IEbWBzaCHnKIwa *v`h|rzT^qNٖvY+@xX[7LqHLZovIЖjrQYqT{O|cښOpߖxloP?uL8\~lsl%byg`VqyJ~X͔zbqieYc!gUhxؤyyǦ }qn|^'x@bc5_Ne׊lϥ^m?hm`[jјo]d z_VmLJ|d0KPmVP@eˢNe`!b}:cy_vhaJoܤߌ%pᬨiGl3vQ y`f飓]1sXYKY _qfoʿIqrn>Ɓ sݤ-unuW v&;}tۏҡ&.riEb\h plu[{%qzZzݼ0Ѻr DizvjMy[p1hcT^+feiTzi8hN2W#{OCc&wJxrnnmmJiۼMh8gjiz{cW^`gΏkԱGilXviqhs8Wnׇ c_Y8ctg×qܾݙrZrpCݝ+sNq4n,m,ljd#q1;pсf\DSj`uroŠ6liejp ymàb|_ӛhYoӵԘ~qޜnǾPQmŸ[lđj%eU} j Úo΋k;J f3_t]Ut[)tgXۚ냒gsrw\chkC% r0Nf򞭁\ȀdkOeV!JXϰm:UtY㒺yzifkԧ]lj]gZh5/f<[pvUfe&l˙Rpon@*j8mTMe+bDJj[[ao!o/| w2PjChʤ}pV6"j,|R@zDZZqdǹuM}zoјsй>*u†?x ~ 9u m#j_i]ct.;rwا,].'Ay+;wfzvz,fsUm{vxz̠}V}yTfXm_sbjN͓j{dM\co2i6s3_|{EPRcf*iԐgͭef5FjIIgϦbd?\mj]m,˃Ol^cIFgf4nZnN%r>uIt"WyҒ@yzZVkLd*3oM pJ:d“a86g{rM}?fÄGg!i㛪*`/h_zgc`c%iԑj< :rAuIClǖ/jz|`ʈpڈ/aYcƤe >&j͈SjU#g(k^$zZ z`_u_rYƖy\iReg|0UmVC끙g-Ƌ2sﬤk~IfsgRksk`|\2t{Oes&J{PY(>c57eڴg̽=o~ƚl5YlB˖<_.ېm_F֑giVj0pt0Ih+YY;teЗce|sƮ,yrꎇn粟*l7{l3jovcբdeTm\wFmMÐ0bSA j˳ji㊔] W]hyyNBp]tUg֙lk,ajWe bH:*gie݆`ωaIÓkfLNn_ g9!.gSf?`6GZ8!B^ʼng3`awUgvtVy?^ wAW~f `o!lܻcv'~YhnOem'PxJPtiLmУ}3flzQvwY˞'mBяwGvەq=oޠ?jU(&g^1n#.s ocp/hrǽ|(EހnȔlIPa\b0\}KS̎Me(hh4f\hg|h necg4Kc e.<jJtoimďkϲ<3mkfWl)qߗth_&b#Q9뒻rHĎzh;kTbn_Iq[lv/jferW uW zi`~<`E΄zqj=qqfUd/*[o]l W%ciPȋb0[g&0gäFa;J_zbzi(|z`oIsvKDc TiZzZflʴ5`qk"yiti3h0{|[1Ruc\ tX}`Oϋ\֑۬]3zc̪#ensd<h9bXVU8fT2p!pШk|UrbRA4^Veԑ_[,Mcҙrp̴cm+|nr`j㉊\)h&o*[~NWgug%nENfkm;k= s٠|g(oXhҳoXmѕgfc̐Neݐ g if^We뙇s;AoڭUckbȏ~`5fWd->SQ~DU}}[\}@fǽ-rZÐt~k*jԋ*i!f֢HbF\5w[ˏ;rW񟣆dÙm(okeR__@{[T~=X!yUcdbmuzƿyQԗlL܎a8Pc`b_Ubh/dd\XZ0 n!ޚ5su˒hSi_.xݵKq«͒f^tzɠfz\o_Uxxp0|v|z}Þjux>ezu]QbsjEFquү斦q)fUTxFvMt̷AN0p"sjmn:t`yB|ii_|z֞t쥅vC[|iw8uݟwxKwƜz򰠗kh8)Lˀ%y%|2vSլ\2kژėΜ.2w|'IsaܐzMv؝W9C㭀>뮠=פЍC,1ڕI[p׶dɺ2eȜd Deϝi.}z jБ`l8čt=iZhiop#{%.Yɥz{z뛃pۼk6r yz ҒoaktO~.} Qs]l.jkf t|IlmnBrkEpLpfqnmsɐgg>WQdݳᘾjc܍b`}ɻylDZm 4{zu eHiÝ!{^yMȎ7b񪢒>b,v)v4 Xx[yo<"ث 7r{1i~_u}W=Z(jif$0 `\Qbj)q$Wrk.o~ike'Lzl=xhƢyRtΚ pMlpys®h$?jiFth*i%/p, vm:EkyX&_qXlazkkDĄBjmmBkK}mSOquy¿zyM9wyužPv$o3c/^k$teskudjLy{VB%~JY>>laH ~a5Df3[؝zFȗzS\3vZ{[Vaק l-f%[nTs׹؜yRbe2.}kTUNi$ـX҅[iY]{5UoHgr_LvLN>]j>h}mnq q˔o|nBedÛhcq^2|Tڄ^>fhf$YTa@t&[)vy$7zS1 o8ԑ-g4ᑠd:\y$vLb~|ˢ|Ͱnr6~<=+v󬼑dʞM\zvVw@lon?ZmLuPzGkb-ыmBZj?s@uG}v nVfwdihcwПk7bsAv@̯s癀kKo(SQ⚷TLZ"kdsY>rt]sWyn{r^4 ]U93w8~ZHNn_pf?}j pݥ^kE$#hX䍏dq0awlٰ]Up~h̒g> wWʞ 4zoZmǺ6o sKrٳ㕱jг_hgʗfMǑ[ڌ_Ӎf|skd^Ȥ}dF7iTOp,DmH'n3s1swŞsýzn’;mś'nZƷsrVu9sPuQ .wrz k ]d^cg8iKcH{_D}_eExfMDVun]Öhw|Ti!JWlR됧v?[WyyYg}\E聵]霢\iw.uN{"0sԲJiџ~Pz!M!tH~O$ Z2xN &q4Iz{Z󚖁cd팲f˒+mvq\s| oəiq?iXj cWƂD[1yTy\i}bKz+N8W{mn2%qޡu[cs`$j;nu0u*s6(stEdǥǏ?lݨog,d_X:XVqho֝tYpPsS0yjNƔwL)c|}YDj>$sFQoQw~ؿ }̂TwlθK_ÜmgƢVo"̌ qǚbtuΙu!ZGϦƛ~1Scdp$kțeMB`Ecrcp̰Ms4ПcxEGw#uPrI{v@l5 p?ۍk /J~Zlj8Ғnhc}юM/GaKu-SV΄y柣<z?8u$izĽ~3ʇق;RkfCr Mq/]،u!_Ìy^g/dGgkaҏVg*9nJ7cRO]n9|Ԛޓ0 !;6v5߭ƣ=$Л.4շHGkfV?볁ȴ=Vѭܭv9Taձ9_bI0Ε3wUӆĔlʨ(A)ן*ϯ6֕9ÙəF+%ˀܴvRƜ!l{fՎe녳ou>~0g2r@bb}:dmYPu&'t6 s%ɚtuѣxLqt[ĥlbh1r#hhSi)Ùn;=sßv-vAv"]Gp>.cƫ\f`Zi ZvTǎtWkhyLbKx,YG}I_IechLncZHBclpL~\ p}`{weϕ(z\:|\'d]YNoNtz|}l]_~KnD pMEۀUg \Ǘ~X,ҁ_@g8fCώgۑjS@innm&m?c9f-*g֪RmՄp^?vIҍoJNfuk_㐭|ffzeP߀ac YGdNħlA@:su‰ofh}ᎁeװc٧]N]wL^l"^<`9ۇ[m!fP=z,j̤YrjcoGoc*܁^ѕ@]̜x6d&b>pTtWwkIT*reI-bN.c`HevյdiƱ_a]jݢoȝpƑm/`SB_ N'ky\Et?cq]hzezFqsTprSnQ}GZ a;CfܪYfWf[solhu^oNR il:ğ~~](wßq pyԝlAo9:r:4,rgw޾gasSfŦ܊n],m1d/_cnq2^ІlZ!_Jc,JlcMbKL=vT͞g̛8htҟ+_qއngj΄kdfw֛lܧ[Оͮ ͥ4ؒ :8Җ!ˑȜٕi}ZbM嗈l ɍyjyŎSsi)^ƖxbTs&q֘oIJQkYisce `cea[z;g_,jz͘hxk%krgmoͦJj&mwt滓es br@"l^/jOkΩ.DdmgbWm(jݮ> iȩfgsmaݪ67\KreummxƘs pѯ~wpԭ/kڬgojn nj&j.gUd:lU8l6hR"`LNMVła/ p_p^+lNa_zPaqaKFrQhg˕w9yٺJw?vAn1tnjJrkj֕g@S[df\BaG%HRmK#]eGUoHS>]'}iVLicfnd xnWj֐]’`zvF<Ԁᥔ|M!}{Ġjxl9pkyȚ mV|AxTaql\`/iiu։mWfxdӋXqKVx]]?){e}}h.qIn<{4[.y\ocl[}k^|RrrÚr =n8vK3}3x0Zq|CPsE۟w| Txxg2;~ȟt} sآl{#!qutfk\j˚spv-}-ƾȅ}n0}&u>]aZEr㖃vJqj#׋8mvyȣS|© %x3ohCirvXc/Fn|SgkӅeo #qw!XjRuh5(<^OHCu^wi%}]d΢cwGab aZ bVcȡeWhxmkhT +b쏠jHq8|g! aojnj j;iHmLųvkL}Ǣu"8m/+oRvu1R}iemDo8s8\wv#™tK#xsTa^~Lބccs,ovfFxɦ1|j~ęRqöour0ia{Y;t ^m{9"yr÷zl9 d:{7\nvR>s_eOoΑo0ONv>ܡ=g]zKz`Uz(upkࡔ|w ѿSǢbȹUTX}鑇ℷy+brLLȔ1J޳ቩLV켢{Nw mupj){]S3pCgu2uҢyD2|е{ǀ~ynZlTf>hll41`iŐRh=LkJ@mPU`̽?ҳ񧂶Gr±^Z汚򲬘iǠvtDiޚ^ЙӐ#lTIȵдB$1ӿ3G 9a֌\ߓ~PCTEʙ"ŗf"h>ː6cċ'KW;~ʗWߎc0ԙGG1*eyrה#sX=sVttМo&jХee܄R\#k?jq@w: p|+ok6@jͳ 7p;vEuwn{n#GrI{zqzkꊻb1ˑ4h5dV}iҨl=ݜ{=|ΒfU׆_w~*bu:WPv}}YrbߕqdRr+~[K~&Yypc}m Bb[ns[p탑cСauxvž|]ƨwߧoٺ[wUXwVpTiݩobԗwUz}~oʮt«yvˉK}ȵTye8w6Sv*mPdn|~mPly9l̵Klu=Λh@t|xga `eڈk|X"VxdP])bTgӭijZgɐ]çPgdӊd͉a[[b3/j2i=oipj$VgK4Zgym[vq qE|[zMЀS fyrA iQEzJ=~[p@_aۆbHi>a0\^~[ `tyOZș~^a hpckҲ_pI qԖn}ΌhD^\0Tp\ꇭh|7gucgba4q?kF^i>jmvqC"b:1wT sQy_Y7kXc^e mĚymϨ{^5olxiQhn}pn ?uw״ t!dq׿%Vw m̃:momE~OSx>ḰMb^ObWzVelh~}fTzkżP~vi~<"򣶆Ӷb~}Nu-u=^olq͎ImwmŐ`v[MB]齥3;*mO# s <7Ҷ.zܶBQT׽õͳްaהU"!֗dKDLљF,\p*L{ϡ>y7z葉ki ߓJ+`JK/rЙוF6 } ԒTX k~;$|@ꖲ3'>I6򙐎sPk|yFrzsxڪeDy]vxrRrtbl֌m3`dfYsh4feӍi6lG}vv-xi8Kf◃b] }JZcx@9;bD}f5Кyu~o@a|`#|s̰wct])c͞ljΣgnò~&}'zC_{IHyhyTq>ein,u̬y.BHv&&FyҪxvu/Rcw|ì[wk';j*g|fZlf)ݜuq~Vwx>;|x{h8a!ΒdnEfsŚd`K{ZY`bRjS@/o񲸖nߗm#隡qQ}rڨmr)mJaTeտ0qOn6uLŞvojl/oBmVHu|]ʜ_ߗH}?SqMVsP|\\cY+x\rnPyYև%j̎k°!m˷{q맲fk, fvXvfRzwN^_#kբhlÌ:moiMj$i֣pfj䂴hqq,WoZT3jH*pwHtZsGD;vGC{$KD&o0À<ݧyiO^׈ZTdt\HhԣQb>0\\烳Qjikճ.,h$vŝ&x/\^qeH2x5 \KJl@CqZ1nJ3zAaΈmqY|NtQUx öK}Ի s$V.gFjJ#nč}âip~kbژGwHpNZiN>3nqXq$~cᣅbTo]}$ZQu^q嚹lllh#~adS4uS>e݀|cxh< h8\tзϜ|yŮJyw X§Ygqar[AT~ByEofZ~c njpQ0iBoJM}"z ݘypVuɰlaxәw5=vxMOPkPtr/vAא8,§` m-?5WŮ湸25(3$JX$|] Vd gΠޖCΚ쎼Rْ[SыD=t5{׭dE$旌'1}9󖶊꒶􎭔mΐ%}3ÛiޖBXϓb؎;SSk̐~7[͔!Dʕ!ߘ5z~U`Ȓʗ8щi<}+iu/wPs$~JÑ#{:t^s3fm:xl񟇃apOPk Yugkz1m guc]ۆ_՟c wp˺ėpѾ2PiԶ\gbux`ւ+boϐElhÍjqljOkot)ؑlȣWqŐs>L?Iu8b_s)}T@||\Y|[spgBa`ܝЈeigF̍qkɷ}|pH_n^eyQqepr8yzx]iʆtXt|[%lb|n-Zw%9x#ʨswxZwzCvOwnZ|Ҡuitkݶj!=]y1OXHNWgoӸy3f7Cmh`w^ yE`7{fm֥_w A {Ko\ИvWPhJnPgV}cٍYqM{of|sSVlSIeeIJiMrT`:PaɠNY.qg)Q!tcфh+N4)t?琨i%)m{iò֐go[k|3[zmm#hÊjSebI2-o^Zwd%GmEv\p4Hd4qNf7zW-&hjs"}_!St8dlYiqzxwdqΕJ~]lI`eC>Cg:ȉjtlvU&y΢Ҏ|N`YoWfEut[{n~6o9?[4ūȍ[q$Ĺ ͵+\c6&ǦdlS/<ҖxϕBAkxw1q,xކM:+$j0'˓M ܖrdB-bȕsәR\\OՓVU&wid x]tM$kaƕÔӕD&v>IyjzwVa[pȌa&k؟8mΘ|igAnPbj^ ^vVgĚ\Jh&bje`dtw5|d6g`^Jgj^d_4sb~m$֐kЌkImؤގ4n©ӒkAggqgh+֍Tfpk3k^Ҁe@$~+^ButV*!p^}Ǽ=uq Vqba=^Z \Cݏh֜y]bZ"}ɁYzˤNvƉ{8yϲڔ{i^O44АӒ"y{ϒ%'̙&  Pϗrv7j|URxD̏r,|5iygmwr3>jp7lMgKcf,~h9)^4특_m'iBnkqbpIޑJqGfopbȬ`㦖n`܉b\|SJnZj_kFKN)1p@al֎hN핶wmˑ cӦȍ0WMYjeD0n~*BrP6Ė m|-9`vjkXNR֬F3c kԽV|7ئ{_}Ƙv§t+wȾa|Sjwݘq3EeחFx[Kk B|;yAWПωgۡYc\*V@\5X`9bYue &iFgǟB^:#c;tvfz`fnNgDRym;"rk,e嗙j?ttot|Vx&yl@4y睌vQ74mѮ 9jOAntkfqGauqOxv]{1\tT수q\mz`uhp.h'׏zn,ӌsqG"%e׍{]ܣD%f݂b؂\]eÞl⣭mMxdy2t%nhkpok4jhONWje,w]u+NB{Y+gT|XwWpjAqBvOtK$n,Sw(~o.zܡސj3@l[ћ9xz:t喆^ЀhLiK=h?vSwYx&t*Gl}hR拴kzpm o!ِ|vsmB슀_x|e[L\l/pjslAdėOdK拾or쐴zSjrRNbsQU(jSk|n [F.qOS-Lk5 Ĕa}ѐ>q%atw؄ieA.cdoi\.ggwB7pooA+vޢ%m;|D]5sc}uoKczp`PvYy|cu)/i4Uhmߏgh#w9l$wQ,r`yj퇺ofފVyRMe|@vw.zK||bepy{u`i;|ist͊Qg2kêՌJjWݡϱ߽׽1-Þ3o ẻ̵p_Dݛ $NG< c =;Ց>9)|^toO xLpچwu#uv!UvskCvk/$uKm#}k싂k4—t6OvWo^-}pGuטLvc(zDc݀v刘nɕ<АfHyu&ъg8J,X6jwn^ҢyBsx?mY,kr=Dr+}lHxlxj皖l_p~ɔv/啉s{@dǧёia;>jıErnȕm yln]qpsOٓGoV\cqzfRϏjcj?ixb YYBgAktV}xm1ׂu^ixbXh7bn *e'2Ncʦd#g̗qtʾğ&/J۫aQp|5 {jwmu6mik³7i Ohӻ='sÝ|ȩoy3%suFXv=|3αח=opJS?} G`kꌢdϝUZa}nX̛\$U"YZShՓGn =iwkYX*}2WYbNPg8䌂c`fNi菴p&ڐp>_jZxxj-re=r9js(ޖu'8v^뛚xwpgT^ʩ^fiVh't3͒Ltk3mcWV]oqJiJt}dNO}b#Vz)p𢍗}"9ڴ}fyyhQl_;hޓoiad orlÛkqOť|Q`|zRl0}YmnjtӖ\\x'J^ج1+܉pʡψckԚ5nَٟh{=ӓtݮx}nOspdػvﱠǟ4>a˟[s_ؼD)ŷ߷ɭYÒKWAtRu{m5~vĊ:uzn\vojBq~mu@= ~}~xE{mz p*~})A@ېX@q RxH-~w(wqDvin}sX4~ Qϐˉ(n3ڝh6LӌH9n*݇ҙʖٕ=b4|=Ur#k0i4Lo҈onsVjmsڅlq1As 2}Ks%Nfʤێxi1 nĔpٗrR|o<{f )jamWnsl_kVkڬ|qBv$u]T~ѳrog!ykn.h]luInykMeglYtSR`7jdzǡd}֛m^)j:)^>mOأgƣ<2lcDswީ5~Nw 6ttql`'?d}p<ğdz.|w2_5q'"qmmrªƨ|_t=`F`b-cCb}zX yQ՞R/|}^on|asj8^DnwLXG~c/܈]__Pdk4sڬ3q :`ɴ^[h lmfkݩ$6j4ԕeiᶲk·lǵbZE]\fzli Esgfkk?pʹIr?h؟ZflqG`[:B‧eM vpd̋|9p,ndktflzlPR eb^Pjk^&kXlþQlreDY3Eb]m!4w=<9tm^>t9pu|Tzxy4o ͐tpfz}In!sM|{aӜZa_nl osFxePguUtwOUhK`%}^$jwdkf%ocz鋹eWywzd|=;uƝmfq~g›lUa0nC՝ss  C{5^bwVĖ|s[]/ycQ[n}̓ frTwO[ѣlɻy Ʈ_{9ОpVgx%]Hýśx e钚_V d o;rQ|Īj|ow&ovqؑSk©՗x#+B~rpw~i ۨm 6Uy`hƒzZݛkLho^hv\}Ti m3}Xاt?99&LL9Axvrsl6~ghfurey՗ӹRg%TwŮu@…UʋWV:GIv>ўiBҚrM{m6(ʙő5pVrygv.if ysvq͆yrCz֍]_Ԁ&}(ybz'm5{s~ہgәhrꖕ~f~k{~u{qvpb}dxЎilhlgIRXdCێQr݌w,~͐SƖY6̑Ŕ ] ]XY~JBltb`ibL(l㙨@nkpstBُq/x{{~MCyP npuHxnm%no0[f;ckݲ혊oMEh2e!se]f&fWš s{ߪEUt۲wj-ΚnLjþ]mp:ri b٣Aaa,mY?ӎ$bݜ3uwDmRȓeǢن]p{Oe(]J_dprb,mؾzX§󁏼:t x [-uc՛j@Xb5hTfmge}Y|Q*lC! sеNq`Sj EgpG;}scgv]{QyQtuweBng»oƜo kga^c똓kϸ$goüVm[šowqβhm˂{Ys]ZMo+u r"jAel%)o{rm\#us) cbwM}\݂f. r4LrIhf6_befv=᎑p&g͒vyW Gw_QBVbdju>g ^csYyWl|TQHeǤd6GrboQ+6_dc2[o0|umyo5Ʀ鍮l-Na`+YZpXV[}Z^$[iJc"Mg^fL?O~a4k8 s pg{ǘSHq6d_Z2%M`m˜krQx#|kj7YGB1}RqכAx p) ps`|V+~Ǹvv}ϬUnҜ~W-u#Y9x\z]獂qW5ui%zc8W]C<~Mאzy;^uͶam?pη;z :l1 Wgo.A%'O ־n徛ܻѼLV ݳMPC|kŌY{ᕇ^Pi~s zs~u$t s{\x|bY{Ri~{wx"mʇsmލz~|/~xGY}{7iE~x v}vd{ouIߏ_Žz1Y.`a;ߐO7^z= 71㛘2֙r!WE`j zX9rs5}f!cZ l={qnq=鏝yLA{޻F-y{ϰEyJ}TI{8gqtnBldRhB8h٘iMad\7oq;r~\,w젤e^qHhAɝy=Sǰl+nQkz7-r&]펚yUꏚzV]D]~]Yꅵb:Bi@xaFe¬iqer r]j2eG]n󹈜6riݜxp fuvؒAg_ۚg]ࣘ(j}qil~Ke>gϏnk1ҌjpiX`sqh"Zgt!Z}U^rEgu,JwpQp[ޡHe 'iHe~]WLfm gՊdѡ_oN]^yYN2sSs*OQrwMzFӭۉRdIu`"HlNÞ+k4mQh븷{%hFK\CZ\=cvvZEi?CzTleE(y W@苔[ԳCh;(n6_{, |Vng4cȽSpQT 9Ċ< 6iԔ[tLI?|w)|fu# zut\ o{oPxpȏxpl~uJi]#zhu~v yN~5s~|N~x|Y}|ƓQ|sb};s-}yt8@}t4}2wF;i?ۍkZǐvFy݂"|6_Sڥd-ٙ [fЋwڦs⪋coug"&i$m"toԕ *qЛIq˔!z<҂{=s)u' rގqv9rymל{DNjbcK_s^h-Yd:9js߻OyawMoZ[k7}nAeke{Doxmop/rcl󭛑illWs-uRj_=h\Q#_\QhڼsN)ng4qL.rnsAtUKk-eߖhCkatWϝĆUŞdu^#hbeưh .hؙlژu q}jΘpȌfBE_Zr)jaNb۝쇲bcXƘi4bs=u] o4edş+X~VK`Te$pը(ZtT`t79qJܛo直pEt$9m= i0}f΍?^9YfȚ9qOs蝰p Lbpo;ñu{Ư/px8Ofv}`+ nK$q\i?beI(|Aa$tAzͪ#q ҔvӉLmzYdnaI6v\QM^bv jFge{T\8fդc)b¥@c]xw~ȴ@x7vҲoҳ1n$fh_sbjԝyxEm`flo^iioln,nklmI jbip,n5{uv* qͨt^-jeQxjmߞsڜu p"ڒi)Qi_OÅw~~m( wezh*Xiil_ qmrWnZǖpzpy܏gӬhdyt~R򩸑]<=~V!HWV[HA`ٟ0fᐓhۙinHpĽhkj,ey]PdWqfizmWޙouSsyoǿ2Sq-rrtVnfڷ|zzVtԳϔiJlG{hßP\\xPtIRoD|i"EBF/UuNgoS@`UTs5znP%jY|vrWV]#`pf#R¸7{iuQpQph]02|[3űh4߹=m¸gF^hq2º|C YƢ<zo؂sN%{yozynՓԘ 앗fX5rCumȣ=m8]Tn¦m koPrrۉua掊xG{~~wV/lD$m焀nldw f Ps~{X}|jՓtDp[Llf2]坌\ƫAt??soz!}ˣ|;sQ-7i_[b;nڜzwTzqxĚUg@a4\#cRf2hCi~oovpl˫[hk3jt4\*c˜m/oSqPCoj>f·^x,gϝ{=tf("fCl-tLvȶsnzkXjbMiWUrp܌f>X[,=}SX~YvA1d +k]okGϝchqtP9sèe>gdKhmwޙsoɻL qK|o;nM9n=ޞ p,)kpTסpٽjؒN_+O_ޓnuߜmuko@q>-}nseNЧ$ʖG#YjAy]Qv[1fzBfzpdnHt -zIyx9Ǟp^~ٱ#juؑzILvwnmzuR04u|u)\|P߬:1u~Am周}햨x2y{^NԍYEKmBx&Κy׍^i6|cct`hFvf]f) 괸Nƴ9Ӽ|L]-Ѽ8ƹ|S汳`-=ߎՕ1]=y:P~͖6)%x zpd!qh́;qkjDpnpgm@tit0bYvTe.uiv>jvnjsoto@.trotso=uotnxyՍ|Go'{t\cTs/hȍ:1hĒAz{p#hkDbmnnu2uՔ|,l#|K)!wr=nab’zd}%gRClFYÄ́whґnEnRrAyvHauygrJ뛔2cYW ɺuKxsܞyݳZoQ]` \ȲEl*tƄsQۛao]<,^ۑbjaE/3kqFn7Gk_NTl¢se}KTP_Hi5[l[6oX.ph,HbkFomAm*h Gfƴ2lus Jycuq)f~^C€^̂ _g n`v9[i-ohP}yTy PҞX] Gj^!oSܛhw@aPDx>҅ܗx̭-f6ejxיo}p.뚮lżsl¦en 3iɡm1EnI˛6j:lfhd)ޕ"ieύ+gpfcwjmڨ] _wQmoj^̍Lk~Z7Ik葛ssyU u2wxkpXlZqxqhvnVs ɛ/qP}qsÕuGni6j-Jk lrrƾ%rb؟}wͻEus]mDߜLv=/zolՖ!d˾ jɬs:=tAyqUUsels\7mku虥x]~Udu}r¹ӛwtuZDu3z:uȭz6 ia^sɡ2tSҦp|Þ)xkmMjMz?,Eu'er}[We]گ:yȻW~2Ñc}ħ|ءqۼ5l|qOn{W4|/w}It6ڦ>vrwlǮjwCfei״yTmcr\a^_̞fhNJPp3x0  r[H iR6á|X}g~jr3埒a\ˣǒɾ<")<ڍLGÏ+xޝI%qʔ3n`9iŰљ*x[yﶳtSiNgtzM&tlx2}Ҥ=̲,pƼo•.f8ɩNȰGع(Y~ze:LG̕QzLMŔ2ה%qR{ENT~6pgqkdsj s'h6Sti͏u%h v?h劊ujsis'islj5r k:wqmplr=iesQgZrgshouYmctZp{sUpч1u0n(tr opEsYqp5ris7mkwr1,|sؒbyoi~vԌ3Ne JzE1ioD}ed)jFfk9jj@nۙIo~ouglwˠx ~Vs`id_r+eZ(ggɦylMʆ`ĖS/^"fKYFhؑ=bʎWYjz}ߑv kiL(mrokfj{kŎh睋nfqo_^v'=,y;jQ[6Z)mA\̖xaWV{ x{cpt^SRlg R-ni&֍k.rȟ{a@ w#kucg,mՏ}j7cĪ9\RFk q“olsm3)vpٝpqCGco_mkU n[p}2oV}uȿv3htnnΓdUlg4Diygjb^:>kDZ-u5qoEgUkjs慓g fhQoxu`l.hh=h(-keZ jg:m5wޓ.slzG"x]OqeڨtL_t Ɠlf˛;v]8q}ͽ-{5iwQ*`tI"l#wGxm.un!kkƍiugvfNugiᆓtl rkskwuFk:yqjr lotkosKjJtksl"TtynPtqrEt%rtkͅtnf@qsOtqPqmPrk{rkxGs>G|qvyZr}{Œى|̎Н@=z>G})s6$l  eۅe£=mXz̧Y{R򥀂*{h!k\m{-4{ʖsmykcdXjݙl +t8EvAp+ggޚʂǏJurUqwg`m)فXYʪRZfڴmݬPkc_PU!gFԣ{y̧yͬqZʯmƑLkQwnnƾmuؾ\'l*hiJ$f"eؑ7wX& rDЄma6xp~0u{׽zuv8epPtr*r.CnpA@r9{tNۜq?oJu0ĖxMv^n nȓElt ndX]MeCeikΌbnnwX](wDxP{`ÅgNm\o ŜtМtfNn"jKFlHLjWf濃ms?pSwý}x*v]jޒqŒpZ?ft7shgdUMH^x?Ar.GDvM~b itFhLjdxZɣQsڢLIn0e#LhTSc*c^1`Gfer,웏n\hIkTNm"Zmn!muNrQa*`)RdJZh$^h5Ҕlh:wpb"r1u,ӥtHmYck/m{[jRf^fQpx㠘|fXŽ@hskftQxT= hyzo ZHr{fq~iݒo¶d38H;ݺaqŵ\'D;Oț%ݐl9 nh!tzm!XvJo3€τrr d@qjiYskcstlbtiueuhsmWtntkU?si pe@r{kBrls j8tbjt\sltptm/ulNvl6Bt kcrm>oltlӆcul͌5zr-&}QuȘv|/|ÃJ ;͖×+|坹O匵{,܃sb(nukƅWhllz 2ǿʡU| tҟ哟&~'txnڙ8nmo0xvyLle{gRٕ{{;\q|v[Дdyf}#i>ʃgg p~НrKkGe2@Yalߢ|jt^squmyC wf 8ԯ+3vljb-6c(cgܘCgHY07bǚ}uxt}pt̀Ys׷ęnUouDx yѣxڡs`h̿՛il>tƣoràFmڮMpk(Ó lZ$rnGlW]q_頀`klծop͉c VtTOۍf J(jM8qRF|W;gJp5_vP~vʹ_l6gYnnțl/l*GmQnY1r+5{{ƽyyA~] {htYm+]|yDo?ǟ~Oi.fXln u ɔnJjp y ۊӜ~pc˝t}Tp!`.!fՁni(;xnn}sŸoQbåwfwi؞2kTmGr}ry3rԼ=n, k̓gvfF+bʂ[㠗Z]d&ljC+nP›u}{qWyJӄ^bi\ꈱa c_Dn^4aJ_d)bѤh )m=NtA͔u젨&izUHj-|f/oanii)]I{ZuxOЗqYΚ:~L`|`Ғt,I{0`V ~XvRYcn0e斦{`{bP~Sbs慓g1Xreuu8wݐLhâmdq~`R|`;zO钣t8X,ugZC|az|f[yf=u'_˓h|f +l}d*s&Zw^dƄfϋ6jJhx¾bҟ{sO̖NkhZmP@oɭ8{ƒ~hÞ wW ~ҵ⠂EޥQyFb#qLm^tη$q&9|l)hku|+hڋ: ێ㜾Z)I_վaW0ż¿ jִ88qlϒ̑P^wsꅅ|.~9Mf{ qyi%zm~Ete^uku8matnt]kÊ]vui uh^rhNYslv'nriIJsi`s~oQrpsk.3tgzsj=sm|ukwj$ukDNrhąo@f:pfgAt7f6th#uNpyFuQvRz؃ԓ?Ώߕ6ݧvУ2c zf[xp wfw~htnBFmon Qx"K (oގ0^[plzjquݎvƷEa~¦-JV}X}^ b2 |YoUu[Yeٟ'iX~Eq(WvAjXsÚv+qRj˫kldmAٛCұpd|Ʋ%Tofl_epM n)r]mkW=nFwѤF lm岫f;TjWp[sqNŚw.ؤbx2kt}i/sɺGQq95oW~j|eh/onҬ6f`k r ,q *lgpjEwXdLމAgJ.jxlO%`q=io r_ogslkoI0rw4m͗i(h&glՖ!dFјLo{bɥ(ycߗkjh83mmh0FazZ _ boxos33ov pt-[m򯄔mqZpeQyAXUt~WAbH|ƅ-[βpliH eΛpf"qf[f˙>iRo#||M֠jΩԈ[_d^ϬOdlmlnߕo%nì̓nInÅTvڛpJLȏp@$3WhX(ZsqLnHʖ ~pS Ճ_]2zUKf ̙ r6sADnՖyy\;x^[g1jpdɥ|dZ5}"Wx>V&K})]Փ{}La.gD|;\ǖrxOwR9<d #jɊqחPwjq_zee u]8Kj'r=xǒSzgnˇd^B,a`8^$%vKVCunWqY%-s`8vlyc,~B^aupmp֓}\6tTy)_\|os$l.j}+)l6h+oı~~vgjffՓ l#-mo ?Dq31Jy-ۧV[{q\}l\t{_L~ddxUj[a9rG\qsw#ԚXy\*@@V~| Ryƾ_^\"XM\g#0ڙ:ɠ˗NJ sxj{6wWem`t.e h9ve؇ ebΑkꑸpG{.f -jX?f?KyUɍ*caQqp©?q%p"l/i n5ՙk\eͳeY]fޭ_]PlGzB{0mг_L;]ŷH iC$nwu$vƝlIojuo$tUVy3qTg⭟_WBXBxT5rf.zv~ᄸє$jָNSkomjK zg[f g~nt#~Ÿ~{cyW}Uf6YLasdȎ-C~r>siZ^CzisqŒhєo7R#no]«IY!_>cX>66K#ԏ G߆_[o{p^LwlE\A~znsdp҄rxgutmeVuVetZhԊtnqjIsguftcqKh2-p~lykok8KtjvYue'wlJrImskAsxgɈKqjeVth`thsj-tiʆue;tc%sNepNl텦s{rԄ)swpH,wCrur0wws)}xnZďP̐0͐~wuzuMNesc yejwhsNaw66hqymm~hyEf !unaitHcy{il xxg*@t YAEAjIݕsHjsLӁk뚠vUt}|h'u+YLZdv-iriprZٺyϏgt4,^Ƣcc)MNiЭ4sr9?| fƥ'jܪLoAPh- TB{{I,aoG{*yZ]7j[ [PhL^q)u{tTEu$9s㾭pѹoon\l4VnϽ kq֛spj1Wl*xT]tU&^w?Xm }X;"^ӟ׎mWn}y:lHn\RӖSxKbpokZhfj4@fϯ8eɱŔei9 ^CIZ ߐ<`dөa&9c D i sl_sqnaf%u^n_ؿ1l`[Ik}# pݼ9u5LGpZjl2Qr*yTyNÜrY{nr+@x&,;vǑeЊdKGccw=S>X{nz'|ѝrHgdc {gblqTfsXR^s lv:WqrNΜ,sΜ ^ktYԧ]lwnћY%wO%_–fZҎkkƭݑ]t^ 7pfz}a&k][sq!£{O yR6xr"2^aА[`xk kVnΓdzpH q+b6kjx_[${I` v1Ŗk)Abps~_x8X$HSjȭdy锔ng੻mghdፋT,kbag#Α snj2xW[iunVpæmPˣpĮ4tأ7t6hVrÿmgn³t0uqxLқtlbq׮h—]sբ͢4}jp {5t䚤mr9rMIt;wl{zJy;s)ݚEs)rX**k0ϖtq!t9~_~\<$kr6s̐p-%kٸwȫvf̕0 _p^;c3.%f[gnFsIu蜩w rت!oHqُp`u1a}y+u_r]s 嚔r-*s'}XD>hS_h#MS~c&ގUy1ƛZΫn^wѩp!gdq_¯RjTs>k%bx4iVkۨmtosÕpz"h=gx;TesI[uL̝V_YAnjct|y2[3t- ]зUaPd6u.y5nγm8-mäz҉Cߋ2੎1i>eNߖ2j9e7a)d˿:kC{EO~\i_W`^;wVnH.rxRa;qo"rrK^_h BDq*lå>yr| zv!-uPBcK~VvX Պ[gʢΏ9ki~:?m#-qlBqm?ku9lë'p1+qȎzvUz sGRgʐw`[[enތ?h_]q)- {w{MCXx^dւs&Ҳꡀƃ+ڜwўx񼞛tbRmHMjHiqyhsgy¦x&i{~֚>wn9Slwoix䤽jȤȉbwi 5mkkPСiVk̷e"`^¤JʆsȔ{.o뢲jCJk,Yq,1ligwАn p+KivؚoJ}`ؓ|[Vz<+|yMjzi7ovsJrbޛKslL޵¥U={fPy1s~@ve<_Բ.g&f֥cK{m[Mq$tr*tXPycviv.pƐnLRfJ[%w%HdXNl7uE~\Rq`xje~lUlyVj^4.}̙t=r{; Ͳ% qhWb̯ۺfe8Vc>kr(j{bmB%χdܚyɊg{zuGgw8dZH܃DYѢڄcdۂ_g:m흡Hە`n[ْZhޯ%tpYzI/_t kejmlprgųocg쫅^L͍fef-{Uy+X nٕ8o4nilc-_-t:V5t_X. \pm7zk[~|btFtexHyg?͡V^@q]bxuߺQ{`FzfpY+zwYՎjFŕsqEVj=v٣q2oŵv/Kp¨ aLt@kG}ml:>ɮ߇=sxҔv }՞tnFh~{*$4^Åvq,I}O4<~ c3sYpg a11fijiG͎l6slcuT{ןy kwVn;klo&q]`p?yPtp]jCpp$mefLAf|=qQ|W_|aJnY1bveĶDž}i{5÷ב f~}2cDq&]ϵhxNqg—fmpPmzm¶&z̴,2~EnQlҙg/erؘ=lij8pOɝ}^vXvű3tmDuub}m7m6|mƜhxwh-boA ì KjoӢ0hˢȍ>cqz,g4_l͓cĸ[lօc\c2FrĀy מ8w2[nH~bw2T/fsoޣ_h|fHÓWq1nŠ"dŦvҘ%afsp - ]_sQCUuBJԙ{n\р~`Vj\2({f; {Õ~myFdMyP휹v`ѣ<-n)y>-{relDotǒy[ːj)r`07bhee\__Ev]Y]첾ffNdup\PllRIg{iswmRuo`C]J]GhCIIZOng"noߤghwe3{]ǒpJrI"{V`ՒqIzQX'}:^ux~odVbCnvɲ=s~ik&~[?pHlFKh~۹`kVnfqrݻQ4Ǻ>uxxf;0Y}ZuRӞOz^?měn.r&~tm*u1RZf(OMq\oi@ hfڔK|dbv~[<kmyb}%|â rf%px{OgH4KlbO!ـhm|^ۙ\jYz6h[Ve ׇ$mo|w\DHi[s_yUvѡ}q"ƒ*c[Q¥}.П/4>gevP8ނ.~s$r9l;n"k=oidpUkzmJk4pnlzroqprVlsmijwljosmk3spsk(r-i6pd{7qycpf 9sfrfĆrukO3tkotgڅ-x*d]VtYeтqjڃqDisi…r]ksrmŇqkq8kDsosq̆ x6rnr irk]r}nQuq0okpg n~c{W0m<jNψvy vӎfwD8^Wʇ¥EϣX*^P({Q}pD@ۚ9,{ZH:lYs7NJ֘zŔs쎠g%"hfNYcadʦ̒>ktOqϾբ {w V=qx$n+ÈiCgVٞhGrqjiab(mǒt0>eƈV<`|ϛhH s˻4nZkj$rq vc?ٓ%jٿ4juȝ@qǂ|Ƴ^ڼ<瑷g\xaQdmߒCl3nWu:zB5͏!#72qpfEmh;nm:qwM}֠}ؙsnkVҔvm'8weTfP ǃXmt%erG@qtNbo'tQPwy} qzvoԩChLdI1"rP|ޔyɩ,s5>m\IsŒk١qcMЈ~c-cӀ_Tr0.ss}[PDy&QaLd h _|^6WNgCfvpuO;_DQjiI'`ߛ={'+{/1Nqɚ tÞ'}ơ{Ԕeߤׇ]Q֫Da)Iebhϻtqy^GThcml cc!(U:oIuUT)v}_?zT֒z, mJmލa}_]KdÁ vȓO|s'yrzN0wh}`ľkƙn<`oqėxx6t0ihԡb`~wbmχ^mNokɖp|lil]mEZ~}{UxIkCuGWa*QfĶClmĻt,ó3vTD{4} u|cwƹoMll瓖uQɠ 񸰝V$xg~ɺtam[j_v@`0iT^xfҢ RtS~z͗tvv8ja{`)[ef_s)Xpe}N܎"lKgcћ{3#6cu]ØtǼ=uKjd+[΂%L1ċA^^jٱ.oiꚙvspo`\̄(SEȓkޖ!sN/jؤZ`T(wYd wb{UfvsA5T!BoUWhG{sYny]z|7?ۛr%MQMr [=+awx{֖nvؙ~-]:sQJJxVyx~XmyeufxVÜފVh[Z|a9piS{cYQĐbdڸ+ק r֍Ic*QfoAqq Bj̓n f ~tMΘJS5+ly]Vs\|i%ry,kGd{~d]w\Xls} Y[\e—t&6x超rot|Cpv{` j!uVAdjvp3[/joT6yfٟw"EqvsuznPj_eTk9Uvgۤ Q ,ּ0ߗٔj۫ e,҆h1Ȗ}zols;ov\qEri8pVhu~pjm&Psmu&lskwoj` wfwku p%ssrrtksfpd1meqi|sfYoerk/thLJ\tfce4tfDsi6qThtg^qjph[Pjw_'lcZkh,pkHqd‡qdk"h4llrp++wrxsؗL"Ĩo&hzy+lޝm{!nz ,s4{]%{}ߐx" zͣI౭AꨴSSxz]Hن mMUR#4?41e\h p&0r*|zmnŌ=g"l?iSfp?y D{۠}H?iH_"jĪl*wlK]k>̘i0f_rdkg^siޝ#i㥽pdgh(gwh̵8e8`u?_a^c:nmͲg>eBýmTm `|o@(t$uʺ?}M˗rhd.G@YroX}@4wٟ0pħfs½vulH;a8k:s՚tt{{cxҖ8lӌhzp^CvYš[gQrMs~hf&`cn6jXjeg;yIk&D⇆m.P hLm1F HwU]-fwɓZ|Iɶu{u'yLujq7Cl>q'u}LIHc c%z$5z̼w{q5*w{¥$d[a)hp|it xL{8맴Ԙ\zufEp;3p1nD`l{ vzܼs2$rǻYm!a\TĄYZ>d<ݗr=y㺘vаld@I^[#^$n%qa`ŗifjmmEtŴ9 hxWOeqX}{du).Z=ӖZKI$^rne4kt'xz)}zzԒgԐhzq|c@ev }XvuDqDԙtp`u%ccpz"Zxc9׋b&^fnB|l嘒v\Ҿv{rvlõ,N~`O_}Kea}\wאS{}mggJF7ws\zŌb*ah?ԀWd~mQeLW{r~8=&l5}wܘᄷ4pޙkٻpsuaqKhwd|zk"v 0 v®yucx6vqi0Pf:^Utn'^$pW{hBLϻ]_.e :4,ka~xStmt.v1sojtfl skӂ8ro$okpkapolӃ!s&i te3?t6kTksosqOt,lv isudqMcYsbg.rcatAcۊ8rfC/qlBs"lM.vaiIJsi`1rki[thׅ0perqei@qf6k!\ laylh"1kfo_цov\- l6bNo%jQ0srއ}tqm|p{†Fzqy9c{Xelm(mƛYQibvz` @d|]_z2drrԊbc,k^gԗ]s3IEx X{_m[ڐHjs3֦Vw4Znvh㑾^,YG\~T8&gBYprqj͙menlwn\wzd2,Uy%o.xܤ9B9;lՠ~$tp蛧e+mƼU{Jss'Tfػ[dJl`{rYǰԅ҈v#k}Cain]YF2m皐u8 uq?kujn$lYj`a {J:p6IВЁDo4ԇ^gaܠdlj_jȇa,f{ĩ|3ʨhyjxv=s¿pnqpsKtO^7|qS׬"4ƸxPzҜ}qbl:1snB)tkFr>jqijsdiitkYr>iKqe8l[܋ pbMogkzenA_цp_ņMn^qfrmՉxnߋeztp|{e}}q9~-il$\4t s"u/{g@p{yu݋nωqdghgBbլѓwߛlmjݡZ|kO-}C}pgree Ek$`Ѡ[A"YeڑszpimVbYՌ]&쏞g!!viYkjvciC`l}~ip>h뎿^$]atY)obZ/ioԌBq񦸍LiAߖlj^nCo pЖnΛpn i~Dh:>ka [\pPmsnq\ǜ&uޝu~bM L~qGtJn`nk1c^ryu7f|U;/sxw]N:z7hࢄfl}xzįUўXw50j li`@ldhb֖razcrbmeyU0Ⱑ֕JZEgnKb|,u utoYo/pSplFtltr@ssqp0lk{kg适n`.qu\tEdaTrcO"t h6sDgA;sbqrkcrgCrMgfqdjpbFsf sja.s=n/utpMsUjsh߈gsiՆ\ri-hshqf7pa paKpg6p>lohJrKiՇqf܇sgnwMnUYvnyq'/ut=G{js{Qv&|},hDžCs宅vݦ}r.mgYbp͚߇שL~Ƚ} z}ʵ+uyVy!v㟕w}J vΕskl7;tB5+uz(Uv~hxgtɗ8k]1k *f嘴m]˜Åb3}"luwi=Otx`;y?llΤ/gMdjމm0=pvk{t-isdYZme.t'<}pl*#l:#pRnfk6~mLt/\nI|d(ޝPn ƬrƤst_utűoUKf~SzזfےSc[McCOl$hxSw{pζlemx8n,+ji}gQ5f$7ixn 6qX7㸫թKz*Us1kIeBh Xg+0fcah-{h7~|qYtW}5hoc"~ȳ~ƨ{wVqϼvߙ^y풐iІ[p,cUnnqmzMo9@t?w¢Zq̯IdDg{[-uyO_}qg=rcdrg s kɄsrhpo[cl^]r{bZr(g;syn6solsiLt|gD=s,j :tkvj[Wrgjqd~pborOk8q l`arjbdq fŇsPht-j'tumІUwInMzictik|p튨䍸zԦD}x^,Ea~q(ujn|pWs|7z<ɣ v;̯+lPͽźݦ󅡺ҤɃ|7㛈xdl1hrpqyP`tȌ.Oqʅ^”}u7wmj6ohfp Pgnp{1|!?s䭸#nW?ZRM]},YFԁc {dh`bp Ew_ xsٶchGgҩce)me辸i՟n3s""qmG r=gv!cx€pBa~<M‹ ?(hްjMd=3o]Bfqxnpnn`͛qo(boږ)iN]jgFho,ngգt~#|Kg}Vtmӕ'kg6g"$iWvDf5aܝu&oi]mݬPk.b:g^$ gxooqưwzVncǠĂ]>/^]zUNe LnaZaGh1Bp6G]nvozc`GY@|5P mSzjCVQDeN9m nrMm k}c+U^%qek*W!x~Q`0h{a|yU$=wDܭό+fnq0 ,b]kTWvq7DR#ʼnLzDoc_#`Ȓknqy;OKnY+j[JYniXJiÚքA`;cͣ_etb{¢/ݲ/ضܞ>%r{Wo鍷uQcϘhk|y`_g|{mihn̽y)|jNB>Ÿy%p]q `p׀rch؈l"ƃxwþpj6^7`[|l<{sMq1@Y%v٢LÉ/t4pfOoʼn|akɡVɠcNp }a?שc |`}niL˻ t2lg-q^~3|jrĮoPkSti\nSsSʚ&sxg6Hi ehaŕWhY_kZʚ4lYRlWv1j|ͱCY651uq1jVW `vtiDm5c~k es okq?spgЁMmb<mb tGgЂnpmgƄpeqiǃrJijr6i~ri$upYq^lqh́naqUeqBg\qitmFsc5s)dZs9kք smqqlFrkgqaeŇodrk|pteNkp`Շo[s}fitn uow&n͋xg]t~sy=' ^vYxѪ偻yoq _qbk utw#Ā(kx\*#ׯSaO>X=d О}x@Zhx]`ף]Ʊ|KF۹aŻ~wmw̽˞s[QibeRkŤ?@iߣŎjڎj͞J ]2fAy3xϽ]u"mڟSmv=if F͏OpSh\cUg*d[nkA;yd $i1dⒶi"jҿVqعOcl'遫vs2ŖJf&cdkrp~z(ƕW:+XyǷrs䎐g[qAҊ+Ʒ ?rޯva9tai:cR]+h uRgyo@Vn9|~t>fa菒gēmJϏ}iܛŁaGCkh5p:bMdf/f]o7L:k5+s`~Sv^Wp~Y#kpRHcsW22jƗs&}Rwɽ:w[>mǨpc˙zWyZy`FkvOg]¿v7]i;OUv8w_xe}`(e%b!2\[ˡ%NppũSڠj{ᣮolBX񚺆^P;pUnuX֔s8~gq[ofǂpYq-u~y|bu2piqg6rn|vJPFǎa$iTت9ٌG~+Ť |Lgs~2c(twSM}dnىyffrKri6qӲoh:UdSi|hj飩ukX]ﲵiLxΩ~/2t} ^htJӎ!mL5+s`alM_vRubXqg8Lcdl*e̟}Tc im>֘nfkcfYmZnȤ=nnxi{Ŋz&Ćrϫ_Y8a)ebT]ms ^o,iΛkw;r˳ƕg̓?gegMfզc^kKXyǻˆ^Ļ+nң| eŴLaI(9fҡmYs`]z^wVkMEzh-c矓\ZitzYi"vWXU|+cetǫ@eG%t*d,l`q8a£6JdϔsPxs+r=am,yѤ>0{lThW_|^Rv`"x^f~bg!mV~UBRj.tag"vտǞ3y+pj d\( fcœ=cF)b(R]^;qPes]!hgcaImt|_f|jնz}ǽ]c*ڪ5ҖvΎuka Lse/szBZį~6fk>XqSjodZU2w\-edފ^oJZq|sZukJ̘iX`#|ipNvaXΟhvmShqr%x {wtq٥ą-a(_y<| ZRmnrhX}`U|]}x^[ޝ~ct$j$rwtrYaُ`iܞӋiH,gPj蕎m[Cg|x]]\ saPw&q~vdzRaZ{ełlc#wqÝ\`ؕ <|a!zUٟgCdΏq@Q/hTgeSj _љkX n_bYjj]ch\hik[?nYir:UnvpWžer6xʦ:|ݦ.X@_S~dނzkl2hnmch-hYa؅hk4jۄqnisDi?SidEjf{$kg=\m)hhe+jhz|(kh+pie^hjqf}mpp[$h}ɖqnž뙅fʹkWmR5g!o&~t肙[ܜyRnZa Xfq׃Qƾ4TȀS孹q<}x&ԞǶ.w wb&aj`z1[jFc}¦؁{фQ3ܟ,Itݡ8`ʀ W$;j}1+|OŽbb{;ptpvuxt'q~mprp s JloiTmX}mng*kn n˓*l> 9qzTUz9Ewñ_os`p"a xb}U:~> v4HbՔlYS|^F}`h)DbvK}dT͟kcn?J:f\@uT?vӞxFS8fxVn0t bmлȦ+|ۆ+[seԥ\¬Ʌť~"ƻ2vЯm=c ^̝bo 棑ȂN }ӜNx%D u?qQs;rn xMuI4iΩÌ"b_ n t{"`DqqZLiK9x˼}vپ4z{87jY/c›iFkkՠt䐫j4tku67`]l$ʇ'cC=q5HebWOE\qtx|SfYCtTLWxL̀aIy8[a+vT[[?׏scMrP1$m`lKބcxGÄze5IIoJ hS5̪w8d~Ыiݦ^nt`d̚Ā`_k|]~1fkX pdcs{~ Y{uA@yQg|g<\څ3o0\2pTlQClZ_)ehmhs잆sܪƓh]Ԏf9׋bQwZјm5W)l|VSl^[noaob͗/ndFFoYtp9i3xnINuW^v֭6}3"+ͧ$~2f{â>Wf&~qnjm^ e'RɃha9njӄm'kkEliij8d]}j.cyfbxb:Y{h ]xdtd+|)i=krlukrm܅+sMpqizjsbk}rkpjĄriqEiAoi|pj(oj\q-jAqWiޅn~ką\p lCyrjqeІ%r(hpgs@ĺ6sl\vpjvnFwnܐ|hu ~W֠ +٭P_|ȇxfʈnt~hρPe^m5o>f >ypP|lw|Bk<:xnykpm>gnPlsԦ j?_B8ccysbrYgz^nAz/֊țqƟÐ&vm=o>~f rt0wҘlwM/`"'V,lʪzd{jzosMdyTwegO|W8`"c$i%Spik| ud_aCcVt4SlH^n@ {WT>vb]סjͩdpƥF7mu(h"z=d5Bj5b}WTy sV\)felz\nɑznca|r{nΏ\] sՖ$xxDgp\ch(jǰmխdq@t 'wz\pj!fk~\ib2+g3;b#ĉ$aGl*~"a-(.lD"tId}\«FyQ؈>h; 2utݢZpUzoI~ǽ"lܾ}+tx,lmfoa}Up\wQȽР$x jKXqToEfI0_BUYxBha=jzZoyĆtB6sդxK_w xt@˟xѶΙVn8lQmiL6jV]l}zĴٗo8zb]c*p\zܹ rFj |Ĥ,:$^< v6mDvhjg"qvlߏ~~s6e}TnInbrxs?t|ݓ{кTςE|7eo7o:v͐r}f4d< ~V{texR}RPzj$WLewNp3ԒmCf qU+fN"`{Ѿ-{t|:wD$~ ~xm~cB|[:c,Xr{Akn|aԆd^uQdH^sE ^D@uhpQ n*Qhz][+hiȳj/%#ysόf"|S؆uc k.k۵ᘔpvw#4|ʐذ Cc2u,^bhpm]"l#mHKs^ўuНtzxZvMr( qUQn]dr+SŎkKtEQ*it1hM!mW8hȎהs}`={XFIbxsf_xZ_l0ey.YҤidAr|lǫ˃Fz6xmNiը c nkun6B}]}zVS/q3 q^ ae2pnĬߕpɖggǺߝ1p˾+x)NuӺXspP?mᤉm{/sпxpIp8l ˒5eJ?gl/3gޫˎ^-#Z xTxxniguYX#rJ۞ʅa՚vҘ s9~ilu@UtKxmU'\nhTsıߕpKc͘ ]eŠc7deIgUp) o xļ\ŵ虱ټ̥[ǾI刢Ѧ-t ވ5n {uʨHƋ[ |!zy{Cqno)~ny67[}Ǹ΢A~ зh'~>jxkyBW!4rX+6fn j{*<}dL%z r drf訕oU.{| Kzĝwd֏hǞfiÑv)|ܞ4WtuyH;z}ypabr)zuni>mȯϢ6{ʦ*{ɤ:1C}mXɋb(|cCxc!{:WϔnAMqm\nr!_kpb4,qqo uLhĨm~uTUyUAʅ{qus%bEahZyl_znopk*nirmiovms7n5mkik|edweeXuedcr`%bq~_%`'s_Z_yc\ }hMeـxkfql5tjsib8riSq iqini}$kc DpZd|`neczh eR{fMd*pnsosiaNuf!wmItRoqvh|XՑwb.iaΖE`iEpɗucÞln-Ev;qӼs޴5uw%ڨ&š-{qzk:eܜcw"r}ޠxolוk\xbKq%NWoLX8gL aF(eH)jLxB}Ty\e_sjij~xü4{#iwt}m\Fr՗nGEl񼹛umooih|iÒ<|Eb1ņ&\ՋbilŚq"y* {Ǝ8x=Ggh+5k3Qm’l5g֠pSjdjٓ;w\)@uY؝6V>mn.}} !->wa2 k ZoʛzZ1xvS~~XQjkez4_z6qKr$hP bhEu#B|BwIu˨ QtZsae'U)ns2z[{Ѧ}#Vs?N>܀ lL҇"lA)uмCu|8pcϔkvbyA)"|xlxpxƢ™}M͕niL}جroy_jwWYuatHhxyIedVhlۡ"sey{uնK Iڀ(4hFO!X2ކrdh՟|[ؓ~jH7TmQ-wa˜*vhg4}[vӧxRM:y_yiy禉3q Uv׃tKr5c8|Z_zYeZxppq׊0kjlLidlQh\lfUjKgxub"ast`%aaucbp]?\oR\ZStaaGydezDdR`&i`Dž~oetkiCuh-qeqhKph|$mg8~[oeqddV}nfvrdcxe`}q?k4s4oтfqh܈w=i,sLhdoDhsfar5c qh Om)i|5j=eifs:osy~1v&"o~$U򉁰sC][ƔouuGs*w!jq!ь3jDlFz֞^[u{}iž#|`̪=nuAvrHyuoEnܦ6Z9wew:X{rКÆc˜1`%irplo޼;v2۞wps믆p]p/̊mxʧ*mdwo5gk|ulKecwPHA{׌j;"{gcq]Zm8MapXr^,~a(;i#n)HoDm6w߼ydKu`sӜsq!jda9b]m mq'xPc}}Tw`+hh:(eofљvNj/\${bJ->h7jHhphJDn;ʍ7uڠ~rA\2j՛s+0͐zWRk*CXgJFRn6KR^stŠ&k٪jo_yCyx# p¹j6si| ]~ijn.wwiz"ydTwJ~W&r]nǘ}TYJ|T\TzH[ԘvZTcxŁ֠̽ЀFv џ;t%øsI0rA=fW]׍asMj(roynhJj$d|\ӏ:_'eF\}}YϞ̀Z˥a`C_`hW%er3QpS>sYF+{D`ekLl~CmDn8q7 mTc;VlǧUoq+yv؅vly\8]Ckc}E؊pЍrokbǁcy[fqM jQˈpO|^=Tb/o j{Gqnť'ZpxEI^L2Q]<yZ7kInkLtq_evfãw䯂}}_nzСz_“`M3eu~o[s.qNkH}jӛq{ovurϊj_iid}~:ff|idT|kf6bv aQ`Qs^_6t_]tS`MZta=_uWbpb@w`=dyWfd}d_jcVogshGnbofk}lczlze{n$g}kqf{2mfAtBe`kZ{Plvg;^zliktey lPbyne~nbҀnFafnfm3k~ln{imTyvfexpCo㉍wsځ}HvWzlSzq숱妞FܚO{8y3p~}os#td|lFZevxX#mGǒj%wA>n r`}mMwg'd Boqw9d–.y_*m>:oDt[tYs{tow+ėt!|jAe.^f=eae'*s@(r:bBwެȗt`tokymN:|TVb|WRP>Ԑo&ߚ7}ӷ7nWҕlM/]{и9yݡqבy_qSy`kFrҢm=ۓ)po,lil/ms$&r޾͜tjӉTL} Oţ>`lj|hz-uQqpZTu{VpE?xR£} doe˪K3In~kW^{]| `0?|`uS|]GmwYu8gm8(ms˨'(rXcdvVŎiI͑,rW2clɞy.lYr&|uWOx>vtţ;y8JqŴ|JjZgʹuڭx[}hbyk7"~ĞP|$ڍkn3pCdq tDixHiwt$^g٪_*qyJq|]|Jzc֪2zoTcnfdlKsug֜v)qevyLuiѺLj4=rn̖q`f]kzaxQkmIrڊb3{R٠[ nİRhᯚr䘶c0_Ib,Mg̔zeG[o{{V~yU b jtwjļ{N0#q͖x s}xtvOu;Zv[u YTxC_Uigj?e#xg~)]WcKJ~_oMol]g~]rfӋ%rSv+VquSYfg=rh% e՜Q{cВy2[&r^`xkfQnlK q?^{Ɛq~ûz$Su_omNoU}fT7w}Qx`65jXruGwVnvz `Nrل,r&;do׊[}f&wYɗhkG:oJsSt^NnsDc#m_Íjav+d`t|bbdydd^yeRe|ej|gfEjkjh̀hf:kggzhrf{4h.l{ig {jgyj%e/ueYi[ Pf[Wj_8ahna_kl\Un]Wo`BXqaWfiwcl|isyl@l@rImqqvotzqswwc{Vy(fžMŁNyȤRΝzOvlpfʖhM2'dsSm eLϊ]saumd;wb @oun`Rv$`OzX$ yP\ yGnlAm6M: {bC֑pHoѠ3ejy3Y+mpRnpKfuY{vg zٚ~edz$ogǐvN|eivd|qѠ⵷T;vt mʚlu~Z}ˠD;nak~p|c֍WnV–vZvLcdϼ |J=1tCBm%%eCg:y\~Φ z﷑;INKZ7sw};_]{_j~gral[vrf]A\Bcjyl|'zpgo d+udn mhc|'kYYuGZ{}ĐQ~उy=t֕o|9nxvj3vj|mnzozlsccamZ}U]sS[tWUv^Yv8^ZAw_s`!sj__`vax^s_\zvceYw|dgF|=knxrfJgkz>fczfCdA}kOhc}[id~if}hg2}*igyh\euaI`vbdxMhkey|iVgwe_q_JY3l\X@uhdZre6igZ.fok\chZleO}v{4nlxabxjk{61O&w]{tc{t xkrq:tcjnuHiÑ~q2{_}ƚ ~ざܝKǛn{@;upޓVs|jS}%~ o ɰA2ڢ(ʕ:Vz~1{A}ArZޣxc{BuHve ylBng> Up[dNbF&auL?jH^orRs}],8sǑoho,ߊjo6xr[eiH{u]vcKKpq.h^z|T!sY"{'g$s~`򣵍-i=?p)ۃrbÒbбKm]8{`țxs!іq5!6n릌u&o+fyPmg}V0ᰊwîkhđk>k.xY}Z&+dz qH+pf!Ԇf|fpxe[mǂSӲvv󏈵jC|x Ocn Fz/'Z`؋jsnmlnEsgkTmXsJF^7xCKuP:j\}w|>/fdRYR7[\tqcGtkN}㬭ĝN6|{ȥvk:fyK&m[g/cT\f陸m%ip lڦm0y2|Y}qltnRdB{h?zG8ԓe)šJlƹmq-rOpGD6lٱ$wpv}k%kgjy{ayb- olplԛmi-e{b/l[\|k uة} Gm| `CH}\1hh#mnkzf*2YWdže)/tSCqPӍj?D^-3fWM{*o2̈́t`{҈k)z-Vqn y5zBŐvtim6kZGiɜ܇v+ß!zAhq٨h)m~[g IjOÓwF\NbyG,nqjjh8gg˕NcDjĚ:vm*xx]jvl穰sNu^yX_sj]lo_oahx]aѝbBh˅ljw9[;y^xp[jo,z "[ڬƈ^xhtqP|lRyjl'yiX|Mm/&nPyqh0yb[>{XabraT-bt Z\6v^Ux_-Xw``#s3_afu`q.p6jbnBllpu8b(#Λ]~orܣtyʌwnyg"snޠY@_ĠNa/=1lA|`>fvKR^orRex`W!Wlşi$i_)syXwqf wU}aYuPCxmAf~FqH|C^inߛrMרqɔkd5)2l+E{ ❧q߬i7AaZ@._,~0S_'UT g av#=Ёu}տ4s4ڙOk_4djo{m^rvoӤ؉gv&dbisIiEozXh`>jd$mʁp l< 9h mEiaE)uVҖcdK`a`(uElg~ZsM{OzYl9~gڗ\kęmM f ongwL.qzJ~jZ'|][ŁbdMNvNUAð5!'ׅZϿxBmOZe-_=aҸ m߷soƔ%om2lO"tmGkE`eCrRTmO}zccZEWf jƙh񿜚lnkش/a釳Tgnib`i6i*d tZkx_G pmvp[6o^lf=irxe|$aSP1n`a|mQ(qO}ht!a-vb`"arcܡ;~iP6Gj4vOyX^6dpm(_jæVf ?mgrRGXy7|lDelMɎz0ac4lhyv/ry"ZxrXxTjUkeÄi*MԆxub]~roaWrXVZnVX+uP܊q!Zsn8JVjzp9Ehc܂^#cɔЄdՎxhTzavSH_qlb iz-Ėsyik~_oR~mY_xh\wdRie7kq1z?"v8rՔ|ze%xcʇ?xȫאĨtآOq/s!xy'mx+lӜ}`nʝ|k_τp){jmc{`EdtgYcntY[ItV]SyRc[)y`]vMa_uase^qCXbwsaY$xngg|`mypNpwkxZc Y4|dkW}ka}kg|edN~f`c|mʩCw͖uρU=ߠ##֒yΰ[n5pŧu@gnKbvxfnyeh/uVyM\v Hl'Aivio^ϣ:jf2gmB/}0ЙJ+%k \!cn@``sx<s73krc*vwMXy[?KxZՑsYTt>^knUDhaĪ nFUƺO}xȫs|tg\5{6arOv}ȅƥq S{晡{ݓk!}Te<~`sŅn~jR·[pWsNaB>`rhլƕ@vUx{yWXwD 9{">r1\kc2lsi1"xQjy֥pkdF|0YV`n>l}bkHwx]Q`YgЪrGsCuoqIұlzı~һˍSi~/nnLm]Jn_rMnj{a嘵{/Z)uFsxHcmАqn"`oW!fA.9_UijFdx:_ŠwnQsXڜ`sϷHv/jm{yu+rO-Wyظ\~c,d,-}s~]xu Θj7bɛmx񬽗Hyh!ʅ`^zOڔxP)ƆfEow@lDmiBIgih)\swGCuuX-za iʣhXlaqb,_@)j5&oz[u6Fs%uiq^)y^3S̀}gZ_'tiruQ]/k{b\{@i[ydQ[P}Ej BjqLhx}VݢAl]Š`mc^gxmXX3zZvlywiq|0Fjȋ􋷐>NtݘRrؘxZ@̓>pیzq;qs41wmvzCoT|onb}n/Dsjp rh"eg gZxaf@sIY>\v_b_x$`p^%zhav_x.dKbyDekweexf0f{p8pstonfuLa~[lxwʨ|̓J{awbM{Z~lbw]t޽'gkn=GkwS뛍qGp[vW7e'gmXW^ȁKܝ \^ǝlMUIcohq%so:3qU(6mPZ)eCeTllQs͸q~Un|g;vYNAu"glqyzzFM݉x+[K0D5ElYb}6roL/jet'rqH:yraqzEq}nȞ }am}lznU{.jQNoc}Cdcxv^Sdu=[aw_awyb\f}edzkiBvr|vmnh{:liorFq$t[qK}l!gwf]wcS~k`kPfjldh`(wjLdԁejb nbЈugjx5lns$jۂGvcmLt%ouVsׁtx&|/|owufy]Twdaw>ef1sbdn_W` {qfm_{:eL]cm0\jXjZp`ɢtY5s<wk9sf!F(l_~e^HrP`s^ϕ\o #j2jrTkĬm}uA!hoxVx`|rؙm{a}sؖOntozgn_e؊'jڌtg:䆩_Wsw{J\sfK=Run{!dalY0]hDqe'tIX|]0syYTiJYi`RH^GtWz_~csuRǓpHc'_TuE|-j}EOk=msL#y6Wl[|Y@gz)WtjRfIgC wT|l[^}u[Ǣ숸d ćc(sXLxD^ 9fMpg\Iif՝x`{W~`TT$1i˪ݑsΒkJyV盩|U@d$oT>nr'h~U'k_蚖|e{wtz|)}o|bkj߸dhj] UoԣlH\z\wj\8SpfE{l0wu>q'p%cgmn&e|*h=*xyZWn,Hg{]OwE]gBr67[}rz~3hҠi'XǏxh,vqgg>lHC}˸hxʙt詳u断tefaߕ{\zy0\lygŇ`sewRsEY#x6d|l蘦r@r|@dkT҂q^Ԅu]fsg߆_q2`zu]Hzv_s~u`og~]'[ņRsOt#[Gv]/M|k]NvJYsf͕:lv݊~qcp׎E*q‰<st\t! povzs{${s`~sXq} Sk w䑎&L݅kzҋ9v wlww}jg\[yhȜDy܇?sm~Jq uq3wnWt|jemlQ|&mkz>fxhVu{b`.x^csw@[bFz_^{bQ8Ekcbt$lczlw ls)snRs[onqj׀qg yhZ ygX{'hbiYjEjhjetkeka8l]asbi@sh(rdh3voFZroet\r~6mqyel3s|njzja}gfvc _ jYXUTubb_|iucdk^\l5[UhT^|`#[ije]1yo@xlofY'm!Yɖji{fc~qVԍ8yiP|z8z&i菇w^6^itƜv-.mowxcgox^▩Zr˜U,y0qy/jpx?}ni€ bp?ߙz -xڠȇipHvVgMpa*m؋jڠ j2G_fyTl`*q(oYxW}NrGJ{V 1nKJ]>BSeHhYI\y4W/VjR.}o4{"_:tRq"R[ƅmb wdȚdtFIbV`9y` Riވ?m]VjGxc`kNOSwQmoDli9ł/fɈvclAdXwvٝy̚Ot>%r͋mљel̘=kuĩ{ysEh@xjp ދh!p8i}KjwPnrm#̊4l7A|ɭW$I|FΙ||wx"pr q8o]tW*si}dCs}^pxyhs|jDpavb)m𒲁$pY˧byVxʼn(pD]u]px:]*}YmNGt)h[Nybi;n=/rrq挾oq3X1t2t'xr(qA]sc|~iz1 '|k?FݳHW'~=q/_oU|*mznjxNqhᇥy`ًvptpto9vt`lCthy}j^ql^Tw^dQcY~hlwgij ijЃmlhmxemAdsi>s#has0hrhKqjDžqsmZpsluLe2fsudaTyj hyhThPuxf^l]Twe_lfnc_:Yr]0cWIz\X-m]d茺{u=]sl.jVpKO@~*\jF>nY~nfa1b\vPG*`RK c͛vuƤwb`2oS{y$^߶ v57vpoI\Gm JjcVJÅehMpV~n.TfM+aJĄPeKyqTbwUݞarؓtݭctijAS}VfKwS(M|L\O7dLns^˙Kx3uqmm~lZ \П܇cWpPK5]3fÔr3U1hHUzc[Tt ju'bsVu(LrSWi?y数qU}RdsLB|clӏ!tK~_Bo~bMDs^י]b;Yj lgR#l\RMz^rGwp;Lv\yKP'R9\f)sɯ`N]O֞ѯv¡a`j:̍pgc`؋k#sػ+lTneƕJtp?wz'Ҙ0tW] p~a0qHuv~suLjiSe;d\?i ԜSm?Jg`+c@;n##tfuVKh'ޙMvr0 ng̓~<^ʈPr]wZkTD8uߜoW,IoDVrk{Jf/u^Fneo;o"Hl8Pk{x8hڢ#cfӖ pN\c{%|ۭ!s}q厮qT/u\O|z^(BeLZ+̂Bf={Bw|dR5Xk+xV˷ws8Kk=-e6gufZqAo:N,ibڨnojmBWmwHRɇf?wtTwq"?a&GrlKgKnrTp^ljwmuiGl/Bei1Si׍^iSfGVoV|u VȌf2:j (g"Qm+ArĹqxrkrĬ:o8q񖨊m⏉px}! rԤ$u%jvߖ|Cxj3Uxaun{s>rwlnxh]{[lqJwlleiZzZJďrPq݈x;ۛͱ@ꟁvVkTn^\xc~gڗ%k,WoqqDTqCr-+i |~luUkπdvezSk~Tx-.yܑ҄ـȓ _H¤.'[ݗs8ny{k?esI}j9[u[:!oq^rUݒwX}e9ł/f)b[fl'OqGGv@[电pIxTRj7c׭v1أ̤:} ^!mlB`:PE~VlKlUv\ݶ|p*Ezw;ta$ h䫯zjÄTa/g v{L^_}g*|e.s5Y>y\{gb ^xZqb1icӏlP#YiI|`Z0t*^p2ZyUF3mOߋoܐ5hcY]_z%]kghMv:V_uRY f+bF Yz)L#MUm[$ɈSi\{Lȗ:vl 8a N_2㉓i% oɮ|T(ҏvr{p9$ j7bwIzxtr}:yt{yRwF6!-f.Ia]vIV|o*`T;m^a|FkPeoy i\dv&eb7tRfSdrsdgaCz|gbi`̇lQ_ i^6jib)h^uY>Pz-lI<}\Z邛ǟÒ{:/`}gj!_uğt-mIqJ8tLjl^if+-ojB ylƳۗy~>ćqkrn`24h^ǒr̤odѡ(vZF)`\ܐt5RA6}b]'tklR vx]i\рb!lC"1{iMta wGkJz|qo^"p=~`e_en#n@Ñl{l ֣Ozy4aˀTq_NbOu3Hϋn H*vwMXӛ`f6wg2cZxbXꕈz\;zD]?| aܒ~cΚEkdkҚ]%lFjD.LZrՓqyã&ӆffшzhJ$WDQ!g`K)~`p{vFzJ_Ns ܓnNgwsR(g˛~e&g3Z5?zYO]|o_ʀbfJ/rf"cglJSrR螜=`ʪÑ7eH1ev!T=sSutMoo!oSQ`cEl~cHw\RCl˖l ;b͕vR9|yRwW``nƁ)~SonGhKb2V郐aT{.zҷ7~[OpXl,0r-՛MuӦ}A~}˚voJ}Jh,sWr5mm X|a t3 w5ÁOs1j^2`Nizo&rv'{7HX~c*k7Lfltz!oxbdXVd9ǏnZoWPߧ'B]կp{`8q_3k讅RfZҚ`uVx~XcRIފpR9fztՓmA_o°tt›Μ}m qALp[j`|(cibnȌon$nCm@mψw*[ujT%xe`yod~y)lrqij:xτjps]`}nTw~%cm[O&Tt{kjU|:gWq~jXten(Îp|irpDq yyy"y?|s}}w˅y_w׎Vuu֍}>} Rz}9e{a|]2{텨,|މ#}_הPA⭂"Z߰,]4H]OGʝsnczU\LXOKlqjU8{ wyzoHsjj*1RjBܚr;@s=핀m\L_o}}RԌkIF }:vyCrc$_44wjHV聋ܤYgVƂa’3ut}_mBlI pvl 1eUg_a|ZzAgtjNt_[r.`@m5oYnxKBrSasN7|+z}*QohLnՐ oaFmwbd mq-0m%wlJx^x8hWynhi}kiHq厈|chx}`c֌/oni)i˗rc ~fÐ ~cVhj~^o^mҖs֏!@~%yQx}zH@}}R|p|zz4{oz{{~|rz:b}̙zMl'|އ(9=K痻8ΓՓ{nT!?t.@et^jJ4SGFpQKaqjzxg9{~zCn9w'n:)xmn{jkdVkXXoHveybR^xI^]s[2aOv`Hatc\_{Ugfڂltq`tq@uqAt_p rLnҀMph}jWut`]s]seu`g{ed~@i_z hYwePTv-bXvtegsy h*nAhpj/gkf~nilke~ k`rmdnix fhyff(mbr`TscYq~fSvubsamUf2oTXbbw"h%cg׬wgwp iT]PC~W[3h1ؒlƢyqmF[RGm\>tklOxvWϋ[ǭcƳhudŴřn=Z9{FψdEcDEwii`hQhӎ2fr 'mmpЫa *o|jΠy}o;y7Wsلx|ڎ:ug^l_uJQ܏ vU[Wّb@LimА^[@gy -oo/iv+`܍s9cRk{񩷔JoHyVj1PbaI包mMkOf}QmfVpTepJ|ZZHaMx%eHdK oeoԲ][r+iޔye\UxdF)e:NjBiI2g@/ςa퇄dz}Twe0g+]ۂRȑ|SvTx[~e`=gbwNh(_UVo2kN}#gzi̖\phnfç|pM㜬ޫ崗phy{SQgDsy\1ƌs;r ݐ7pԿ#t~xzLKzAw_~Sbs iҭp&fsx3&]~r~SG}YW5sr„;ZŜ b8|Az|ٵv@sseU8s3kry ٪{?U>t rwÖpCszmo² u0:|ҽQyܱ–Mnˣ=^ʧp ؿyʤc}|_̘nk3+z~'t|qɼp꜖qA%lbԯse3-AiZv^z0uVyy%Ov%~GzR* qhmgSxV_{(!mh@Le[f܀lqkS)ovH9{| uIka.ycHRq{)mlVr;~&УBܝhqgU=ap G:{ j]l^omѐBz˜NJyiwxb|sez~ ׍'?xxrvx|gx{y{>ya{ v{]z56z'~f{|H/ՆXŘŗ륊6+zf1Q,ŧsВP]th;} \g[ILDbKONCim8mHx~Zsvv{l x9luwm:-zkA_k:J jc:wfhՄVeXu[JZv a*b!va5bewYb-d}{7hcluuau u|-qovp|7qkp}SlF_xbSyux^\ s^Ac]vcfvbbwc`s a+[tb[%q]UoN``o`cCxd.m|apaf~ hnb&kckbImbrpe%pj6l?mᆠpl{sod}^lo^jNs]VJa*V`UO'J;bXHK`%dS[{Supj}lmŎtϹPhuu>wqX lY̏blldnv]oJjʐyuZߑ gFjyaX]Nma=uVmШnQmqT~]܃j>۩hr|Aq}b3#c@jgG^S`rzhɱiqk6xХ6(F1M`v3{d5roZwV|cX;Q}{oenÕ`فgo\MgTl|cՋ^ͤ\otKvȿR}ê]u:yFcs]g8vF7wjU~:e >sP%eO{qʤ|s$o0TIp'nv,sĺYu͝{-{ 8zô1q&sm_x*A~$&kݣ脴]{w9\o3iGrN%pFIm/uey#£RvĶoKkkğmg񕘂e~iD٘|wuvDmz5ƜuNwlϥXoÜj׏Tvh[oTqW~modZąxizzNjm8|b o]ʍ;whj9%f Ruѡٚhq>t㱅}l;šxt _hr uˎw$v2w44!n"S̅}ၐ |~n^ő{OUqw)pvyr/z"zS~ˡzi|+x {&syw)z{vkwrs~W؞yJ}m@HP̑󠊏qҰ̵*ْܴ6h7Zؐr,}j}Wd`)HgMKOTTdmo/z~~Zv6Y}nkxkwl~{j%{blylEjvjc[xP\o`v\`cxbSe({[MeU{fpt.xps(u~tpx(m6{pge{j\at^XHsY`~`gudcvjfhLs+^Adr^b7p^Can]b2mZ^Pn5`^qb\wc[v\H\wacJ{fd|_hic,?oFgnRl ggoiYolkZypls.kwfIdm_1UYFNZRGE]DMF`J FT\O"F\MK bMMYy(O~jN~n~Os0F~J h ۓCʍ^Q`ߐJ yCz&wҀ:Vy|~O{~"ry-u{EWh|y_wWyu}yܓ}u+vng9fq'tkww뇼qp}z{Y|sq;]yt ]lˢ|{jԎo/Q]fmKQV=MTWblejz~[ylt}mƛ0}umgyj zjp)rnwUil/fwz]csk[dty abx\aOzf&k€cs5uuuR>uqn}rkkzDnlbw6fZp2\^zq8bisPfesc_erae0pZ_`kY]+mY~anT[_o;^[ ~[vۡ$bnԋk!k)ٗv~prT:pۚU`&Key˜enKk.v Ćm|ǨkLJnaĝEt3K}?||vgS]%[-Ē^`ͧ⎎n񱓘tozyԫ }ǤxN|_~Av|mjӴv yC'qfˠ_sR2vrQh?mzHp$vQj>jɵTӲwxtw,eiă^)WoxYgV};'|dʱw`{ȥiĨ܏p{jbŋ&s5ߔ=lX +eX /k1y=FxNˈZw y xNf=3UxO7{MgD$yǶ~}M`qDnng*v\_]{~Ay]rղOhEjAMkҞo]ktlp~uתt橒wg5e4ns{Ϋހsþ{~֣{v{FSyhg.J}?hSH}a 4yL>{n˳i˳]hkٔh|Ζ1jvjLg{;Rq}LBjf-m@H ^_ ]fUpH©Gv@'n/i.jy͞TiXŽh Fh:q;?uFo|o:nDnЯ jh _4(~?ZvkSbm2Sb9t^:\ַ>To7þ|۶sFi-~` x\MsQYtuVPq>RxmDJ@sDߙctehO閞nio/mpmdk\tw`lJb~r]zgqiyeW[.od4}pJuwLIWyě]hޢ|3jy!9|x*}c #?( ⑫}>dE~ə}9yY薰o~1t{v{v~ۓ3wz{~TyzvyQu`xZ~^z|xNv vEwuXsgkZ1vb/\.} _j]kzk`ijYe9`WYxprSXl}꛾BO퇹f}mMkzaAdqZN\SdPZgHb"j1k,y{1q\n^|bj~{jwDe{j]~"mv{l!tp_mex[^rZ_nzbn\"va\Uygf}qovrHvm)}qlxhdu5a` o0YboaIlmBcZhjt=kfppb[n\Xl(W}YnT_q*Y\rZ6Ris]QSu]Ucv`#^t^`Qt\b t\\yFfc{tie|jix}jj>khxiBnS/S^HCF{VECO\EeF]DE:ZFEWFDWD-D]hB@_JAk_"UE9\\JeS q \O~]iP3r#^t>xsם̘CxD} !0yұktM|`Вuau.[xSedx筙tkEu8jyꢍuNe~Z֥s/`mfq_ʣ{Qź w[p)fP睱r*}ltRirijPlnǬ“sKz& ";%)׃éß?\~Z{ݻ"}x;z79x."mlk~b}WXؙubpևe0hoD.g_tcT}a9ln0i)nrx®ofle}w*czSfvzN{-ͩyhmvyvj|ٞf /sSPɎpܿū0Vvum+uêywjy-ț&tuLr,mߚdKpۮʚ~'x2cuizW^eILv򿢤=ƲBƇNu14hƷyq84v>Mq]bڟ&e)||}ɣcW!Y Ve? !|@ʬ褥}lq'Yx;CzŊ$p,ND{[y{Yp\ߡZN/Ïe>kwoj#e)~Q`x-J!vg̲)uu8~$_Sa1Im}|lj$~nEƌp)-jľ%b?~_\i iD'bűϒ%lػkjF˔mgbg3 [fMK~n}U bқ}ac`r'R8hqguSfF4dhCrUՏgyDgrM$]f@!oQubOkposXTm~졘ky7{hUo$V~)v̎z }m;}Yl_'sht}kr$@syfruʧw'|~_Ɣ鏴)'(Ό>vD}jڙQ$vuiDuo>sċlqrirz neu~1}<}zpuyrub~rӔptsčkptN~hgocPzU_REhYUQuHHunQJd^NBESO)Mh&qt1gh֗8ُ*%Җ!p` NNbz~IUUWqnKPjLT=q$]0]qnpnk{l0kꚹ~gl{wkwueԚRynߚjx0pדJwi`oRgD{_]qZF[;v`']+v6a[Zwebc}xhh΁tq["ys&|"notvAd]ft _ct `OerkcHjmch[ricqc@\mYPYoUZpT"_s&Y^s)]pRtD_/X rY^vs[Adq*[>ajs]bBqVc~bvfCe:zjgvfh2yjk{li vEgpST,_nGqHCWGB7@[DB[WC|C~WE@EBUEET|@BV@hC[EEk^H]B*]NCY*THSaQZc%T\Y]Kysőn9y{fnh^{'`xa}x{k1 pnK1>o}UyJ ۵yn.ፐnOe[r~X`gZ]qGi|u¢7}̠}Fu9՚mw s觕J7u-?o鿑0lAvDpa w2]S{37 }8̹~2G^ĎÁN훸ssBov!|vtAHrtyruǝvRmtwbxB@y.Κtk\7zZSm,}>}Yĺ\v]ux[nit]ɃqȜu{y{pG l$ yhꏞple"l+p{L{ceIyӼ')kq.p܊rb}R,fܸ*H}弌BA*o!fYꅵbS=rǪ4{'aۛd\KbjIcݥ jV9~P|gz}N yTLiݲuOxt]oH@cٕZȝMk tMb("e=2Qk2+XVΊeUtbƮ scYlTeطdbfP`~]Vf5yefmcf]q!}Q"mIKw Tyb a(hCD`y8u ĜB~`܉r\PqL݇-scQ |aAtwTӁeH|^#I_h Qŏ|9eޏ"pOƉ‹kxDkjQ}t eʃrqtwt[}kBuYjW,?1V}̏‚%R~М+{ύ)|htFuggo["igf|iecoÏ^jʄahphTm҈j=n͖jyZxkka7^XWLQ}gUQmMAKa_EI;lkBVGlICB&fH^FgbIMcj5lu! {@Ԛ.@xl{Tx/9r^n/CS}IORt*HHMoHFNtLRtXd brkst`zCoK}mpsThKp7hVvjix#k72vElՏp&i|(fbsWyYu\m^t_^x6fc3{dd/lkssƂEjkrxdIft^bSugac$tc#dobbobaOpaGayjWbWmXmXp\`vbgu`__As$a_`sc hsc;gJt baMv.`uajn\dtYdhwfrg#xgilqyapoyamistihUZh^FJU?>>[EwE7[vBDSDDQ?>Q;g=KR@DUCI[F{HkdFDbFGaKOm M8OqSUsp/j}BzxBzPuD}F:sx(uvZtc;x/͐bwcQ㯧1P5`xQtS ;lVoa|\FMz^W0o#hY{pT޻-~BLWzJ/"r=4mhCs˱-{еԗz滊sicdu;zQIz/R8||BD){~KĈwFFloh# i2zoqr6#xlx=hgV&`NujsLlmJ5gIχgNiLʑpQ;mXMYuW9pr`B'iG}{ůzX|rƋyuȊ}zqÊu|.bu"hgfK/wX"%i(`gfC<]rBmpH*P⭟?c΢XwpuJƀoUnƽNqЛm~]_/>W}-\12dDh+`矏N[uxDOOPʢ+hd%$`Q ]՘ |dEtⶏ׊ٿc98DjFd#jۛk|[ɓ{T` pSR CjPQcuJ jOywcq_[x{{šx˔}i!,z{gsn[vuely}ϔR&p.񐑘DCY\S ~<F6!Òg}3"arĆ0pkvUT&OhdOU ~OC#M@xPVPu`MGlVKN5t=>GKiuTPjOLiY2`kL)Zzgm_xOIjdsekEZvi+vsiXujopS_hfuU;Xhw[\v`at]lcyxber|neh{KbSh {gh$tF\^Xv^b&t]$``vdHcufodrdeoabCm^Z"o]Xq^^Sub|ctcb9tdbPq`!^p_;^sWdh`tcaumc"c|jgX~kgkykKk,{trsrh,vq]gJ\G_0aLMU@BtT?BoU>BMRBBR(?S=R<;Q@4BaWEG YDF6`BcBbBH{b.D:M4lBH)sDKTxAxKv7XSrROlY`vwWin~sI oȍ|@yZ{lv䗀⛞s-x/v*x+~qeᎪi GZc] o8zf|@urn_gafAf`l rj@w ˸||Ět|3~Buݨwȣv9#v1"poʧw:ã{b{iy>ib>^d{%W]n@QmNSG]|mdk:t\VnfpG˗%}[m sg!K[;(GneuëPu2)|z-v s9Dy꡼=jݎmO!x]AzhMcpv*muŕkd2hj0fj?ioӎ a8Z^ZUVrI_IJZS@/oԣʖzP{k6Np;sAj|h)pl jjFiޚt!٢t=vFvf8|[7"^NnǠ>pTfѢ45jδ!p޾hl!lm1vm[gHlum/KOhPqmlv 蛇t쫃*t:nBi/{ZwsNʒ|wNXlu@_AhƇ0zt¦xwrJuFzλs,&hʢ`ݜÆh:qibʅcjc>fqlqmCiro{ig!yeҗ}@N:R>S|=@T?@HS?A\S>4@T;Œ!nL$`ڏdStUvwohmFsƼt)qlqiŸv:jw puΛx~ͣ";=曷~߹A7ROrq{  zTfk Ŵ`mq[i]!4cjdtjɬ_, cߚo7s|bٝwDL[iqoL9a~l}?\^Qk^όq_ $lggkLY\nG7ZlcF0spKrdMnϝwm-iTȜ]lq r%w6ŤHrLl3SjTz Z!q^~!|ݑwbBǃ~ A֌+N3S1 QX^捄@xRя@6тnu|p|hU@]T"P{k@|?.aKqCYKFA^GIyiB5E@iUF+EbFDZDB1]b??,_EGC`CD\_B$DBbNAB8_GG El]/HEbZHmHa#BC9fACi>Af?kEgVA.K2k>0LoFOrJTtIYj ~nyђۂvc~wz \]_hLUqCQ6v&DP}vZDOwBWNpy"BKjxAIq]|UklɖyKkqe9shriݎGpnfnxg߁aaxW$YvZRvq_NXxc_`zbiv_b/w_X(x`jWuP_^!u^Eav_^w`z_t^dtbjVseim`bo_w_Uq^I`-rv_U_p^~Us3b]jWYscSivmghkzjf|hdzjd)oh{ljjwrdrtfUaDd.]'a1NQUGJR<>XQk89:R ;==S<@S9#AR;AT<=U?<%VNCA[DE_!EH'bDItfBeHkVDEMqBtNvDNt0GMsE8L*vDCHrLKmNKcqUHSmgkNN](}rk5nߥGo~ixEv6p񖁄dmDx 76~2r%nۓqħ|nTlIͤ7wZzX#x2B~% @1|`xӦ7vpѡބAz[֦ Bt;uey|- }`>p̶\jjalھDqwtq˕j qatŗt[osz=g}|h^a|c܄ioKW`=mhT~&p{5s*r`wyʱruXrn =tkuzdZrmahx'0}[觱ʹtxr2oԮpmĖmGv2&[r/nkWEga礍M{4ϕx-p@Kx%n |o.ZRwM5w%VHzd\8b{VX8\[mj$"i m,I)qhp qhbhfu]Y[gtFm*J,g*mϭSo/\uovml{ܬ쎉s0&fsFYÉ`mLo9HixILjׯ݌*vD_{sMevi͟ @nז,bwSvڀV֤W> !j[ƋyȤV{|z~zߡsBlfd%{r: |cu"wc/W[S&p*,xs2npW0mtE[Gh>kG$fR=D]BH^=B]A(EbAHEmjAE;nAHp@YJUoBLoAL#q?N rESoJ=YnG\s`ixnpqvx&7w=!kv܇)]7akfK_VoTGUuEQ.vD?PpuFHQuB%Or>BKlPHjM-j+d\jqsjZylvjo1jwlj prȉmo Ccb }V]uW0z=`0P8w_Px_]x=]`xb`uwa ]w3ai\t]_/u ])amsYWcxa!^wFb.dubzhsagr abr``Kq`cEracsca@u*dav!ec|jl~kjdkj|cvfhi%olT|ojxUhek`^OPQ[CaNUjCMUK=C S"9Y;LR:cEEV=?V=;^XD@=+[TFbGc(EMJa @HfCyJh+BKSmKENP)x?jNwDyO[vAKOvEL{ DGKzFMNxESO)uFPtWXnwm~mzuu]uvTu۟+,oz(Eހy2hi זtڝyvݥVxNЧ>~~a/wjxggÑՈ4}9!qYn :t}U;E~lwzβ0NBjƧx{}=ƎLzx8xKZ{2-tsF q0qAdo'@Fn,I)qes_rxyVj`tWQ3ywKk[ms!vڹw٦}mC} qKm͙*r܌s|{Mxy_Kw)2t*s|Dy yIyȮgxddϥ(lje 3?ձ^٦ǹ`Aƌb҅gݜ"vraՁZQgӛ|meHq*oJ~mj7m>kǼٙmoOg[z|#PK]u~iOjcbjL i7M{^ۜk^;4j nygrʹqqӑhhf˨nsdyŸ/|QpvI7_u䚃zQ ƁɌĢ}'yiWllPhVjpWʼnmJׂKcDjUtqƜ?qCsc sġr[m*Ũi-ަLqFy9yWiyYtvZ mkߛla]&epny%Y 5qYUV>nVQtc:惇s\7nƔ܀iF=wZiHsSpM-}pP/:z _ך ikݒ_hfxepJo3]1*o[F{q~ulw_聸㙾 [p ^ޒ ڊ*\jwRYydkZ5qQ~Sy:DckIE4bG,A$]?WCd;"Ff[?Gbfu@G@e?Hc=[E5`:AF$bBHgBvHiCHj=GiM?uHi?@mIa@I`?vH)jrCJJoBIsB.J!v@fLv>Nuy?Ou AMwEQt/GRiGzRgS@/K_JLJ\IHN\ZxdS|Wlӂ_e=mR\pIW_nHXjrEIIDXY@(E\@D3[CF?\mCGG`CHHbCI]cDIfBHjCLpBOv B&OvAKu;@Gy BJ|CMwEOwnBPxuIRmwMNkfvcmqcffdzVlp'c|)t:OrFmNmyZFa%;GpG9xˆz[CzcqbƵGxI cpv`dٯiR^tż_N|ڬހ϶+ 7 F=y~O{}y|飢~dPނZWw}p!up%p)senſFqll@%Wȉ[(q_ ~آ?u[NƢϏ`jg\};ʂ~%E~T맘w<֨R{gtӨNJ2^Ȣ`}UŴM|&؇ɉքzOզF 7!ۙeE.^| YZeZ{fևVhrk”pbr ՜rNVo;:3po_ʠW} H98lODdg|fy}a^rtUkwd̩5%kr5kM"psllYRqt?BDce0C`tǓN yP;R`QfhtmiyW} 7w]d bBhiԏm|rΕm=!6` 9ki~fP j[qdvnsjtG6k fclsZrLde| bNCzg %rX͍r~RǑze\n鞬wgT^2oҏ.y_qqpd mnNY_AfEaYiJ*e_I:ulU1gF[ry!pKuoi5pa vr{S{9~TJ3˒ҙޱ+}0ӌ%E~M~hjkYlTFYWGDaAE=fpFEfpBdCds@FgF?G i>UGj @I k>Ih{@iJBk@*Jl?ImnCJ"pC!JoBFImq=D8mAQJkDLk@CJoBLuvCMywB=Nv:BPv@!Qyw&BPzA]LOyoILEpFEMb F9J]aHGXKDPL1DgNNOe_hd$?jk RZ^qqJWnXJN\rI ZuyE[RYuEPtCbNqALBkIO onK9L5lMdSfs~Cj]b|n[Mfjd^:je cbbac[&{g^Tx_}[y`[sx cX`wzd])yzfbx`A^zc]mxa^x`c;w]a(t^Fb[v f;icxAhezddbx"]_tzaEd w{bMg}rhstqj!ult`xiEj%y>igI}=kg- pA?WfEHhZ/AzD}YBEzZHE=H]CGG!`CGH`DNF\EFIdoEKkD]NtEQ2yFQwDxMu*DM{uFO u3FfO7vuDMwFMuNPsdN6PkVoWdgbVӈ>i0ۡm:tq4]wxQ/v}T&[qIIy@qzĢwv$wthȧSz\flqţCb؄Z eYgauC?~%Ɔy;]yrð}:D5o {Aħz=kxQuyH~x n|uAr clUmI nۿGqʦdyػ"m?/`fǸqy ͩ=}1t]|T`adeʂ]nuĨ5rNtTZb!GMtY~vfuڿ6s^颛w v[ã|C}ϧ"{sɻt$lN^N%zH%fS|yʂXwU/F1čLw)\@Y„l@PʇoRb|^.c_Quœ^wru=ϙk#h;⒭bK~xEŇ`S6dT=8xzSl_7Ae<7n}Х}x Wq">t@ΛuXmFYl@}6|W>7g˸9 )_֡#NTP'JΚ^xf~fHZk/:M|sءu @j9ZBG*^H\y kǿ2Sqeϛ iy#i+̜m̚kVi =bei͙moLՈmLu~@rqȘ3;|x o{ruoM8cьJqQgaG刮kJq[Xkq][UiDZpmqrljqi~5ohqkysoCЃEShÉgd2"ȋ'® NzD[е{Wulod8dD{FGGgMBVG&@SWAD e#PIpi?JpkDPMqEN7sALIuAM{uMB$LsD=NuBLtCK5uCCLr_HOsEMJtDNyJEQiz?Nt>BPu?xNuw@oLOz`AIGv}FKWmDGj`DEva@=VD=N;6wGCDnXO^d~uy1|]?W]qfISp0K[tEJ[LtHMUtHCOsALsA$LoC'M3mFcKm@[XNf%rO_t]i X{c\|w]l]{Ya_xYZ`wXZx{]`zja_xaE[t_h]wcb:w__w.`u_w``{2aeuwB]`va9bOu_dZbjxgbx^uaSz\cx:](buceJslrcnӀ|r v6zl)jx ohxihMxephkq.]lFWMnJMtD=LBsNnTbu|LX];CV]:cn$rEpŦM^[t'X\՞ !W2|hM}}\ka4dWw~vԘpFqI&sZuvYǸzVswq)cХ܋d~P+0k!4F\ʒr`rqwwqөb"~ FrFあf?K[~bJnruY{d1gwXߞw odx&ĉTvXћ\i`dNY vAoCtHӒ@;Y`j缵n=RsqݽL/tahEwƘrbϔqpHϙuOܱmtvǫ_n.P}ow@`eڦQ&c~6MV~<]^#Nh][hYz{oê@hmA4[Ё[v~g\}nW˓G{WؚL` nm56p5o\Ypn+l7׏ieyc?k giFZF@\_Qco赩Ÿs 林uܙ[rJ_c9|U݋s L}nLYoX y^Xo6rk4dΓuda}]{Eq`wxykxl# ^^_KrݮÕ\qzA__ah}i\rW9M^FGgj@D;gCEc?DFwi?J6r>JuB~L)yHCLLuBKKn]BgKSnCMqB2OtDNtDMTuBNwBvNu DLqA9NsBOXvBNx5D5NpxwF!OnwD$MNxA M{@Ny@jNv@Mv?/KvyCM>}|B Ls!DKGiBE`>ABsc9b:xW65O96sNg4c7QJ-Tlty3Q\rrIQ#tL,ZuqJ6^rQHVV}rzG+RYs]AKwwBKurHMXo BLn!J5OlaXHcsaN^#y`k`*x`]4t\TUtZYwW\ ax[jfrx]b:tW>p\ D9E\CAC$a@DAfAEcAE aBbGddABBc'CoC4cxE/Hb"EJgEGLoKS0ucLVuDJcUzsPEPpCOrBSN6r\GP uEOvnEsOyENxGQYwDIXQ6o[^`hsqkvxky>qdV3(UV]wkw(thĘqz۸pѵnٲ)^hy.idjSqҽGvҠ2vƆwnWuuٗkްl^VZpXO%[Bq.J`}r?Ju?Mw@M|yu@L5{D5OyiGPr GPqJDO=r DOuBMNsCN(tCN\uDOsDOs"D@O@t[CNOwB My;CMuALsD_KiBE_{?IA\;59SI56Q344Og76L;Cv=AIsCLpALoFPPrWMSUgl[5`z`Z{cSwaPw)a[4ybkc\y_dy`dzcbxe\`px}aa v^d^v^cavZhv3[eou`bwceayf?\zSf^{dc@_{uc`wZbTb vdIdr@ebo^gDlKzpk^NW/fL)Y \ZH`V^dxc=ZtztgІTjJg*[MUspֻC*}VxMsUͣo=Ai?mƾ2kYc1~=<ŭ ϭ~-ݙ/plܕ_8~9]E?fZxuv]uz$RnlqyA|hxdYqaRpJnDbYhDds['_F_٦$o?r wgPTaVbI`Jf-n. pltǾfl&_EM`0cԧkɻZti{|{|8;|OУvĖ| uG8 SU |ZjJbӊq&1|hzbs)~^LJIqay"oOZl\hJtJzSjz%uq-pn.PmdGmҰ-rq5rhtkrpژmb۰ȏWfoh:j?bUv1Kovfѕrjw3ݡıϸߤw[n.m:ph zb$*Rm`sʶU~5xjsd 1~I`gipfr>j o!v|ŜKz v̙x-pэgҎh\>k$Qw'Tu rnӻ o2oem3rI}kvboV|9lxugs*d5gԌh`ډok$o[Q"xؔnӨA|MuLl}Nz ~MimC(m`w dT?t_P]~_"`{RuQh8GI^BHeCkLoBMtoC7Nw+DbP]yuC|qAL:|CMtzAqMx?M|z>@ P|=NzAM%z@LgxAAOyA.N6tBJ3l?5E_@MB&[I5/:T05eQc69MQH:7M==SLRjJSjloJTPoJXsK\wHYtDRs@Mt BQKBuDMrxENpCMTp#IMM(gbV\v^hQ9fO|nc}Qy`l[y+`$_z3_]}bdz`bz`!ay`~by`,`|s&Y\wV cxYObzldeyaZb}e``}Lb`yA^9_y;c;ata]c2q1bczrzd`jr_^q]K\crRcZre"YgncM[c2`AcTVwbZOcRbYIRjEDS|oD StoE(RkHS nF?SlHShFSs_dGXF^IFJZcR~eq_^lwIBUk?AHc/=C\@Dc)@Gge?FaCJ_=CG(\:CEYBHeDJjCCaKsESO9w FQbзjwқDtBm܍J]Na\1kW|_ol|0nۖmsmq/W%oRwܐcYolƝ>vmbs'k4>q;qr\uE{܍ۇ9ǜ||iIjdmS'o ZpbIߏm|ĿU9Ɏ#~ۂ!0xPiXKxVi~_ڕ?g!q w/zT|oǺ{p5nuߪzu[XxJMu?`LW ym(jZg>j}MTvwKOl0EWKiC1Jk CtKn2CTN6q EPr,?NrQBNvtB/N0y FNz(DMvCMuBCM xBMHwdCEL.sx@Kg<@AG\^@C_>A\7=Tm8AQ@BNh65PFzKbdHS)mIhW@q=Ks[ uL{[w:JYVvOESs?SNtAMtUCM_rBNriH#O*rNTQk^T_t`Y{iaU{E_4U|`]:z^X[|`Z}ab{q`cbgb:nh.tehv\_x|Z ]^zaex^hw`Wb0{p[h\~aapzc\`[w]=`ubjm`cqd] rNb[o`<^latZrc `d\XpTY `TIRRexF\PfF%SiI)ZpZH St`HdRUpFPipGRm}F}R+laFTRhGWhFkYgFVigHN_wgIZeG:UjCLh>C:aI>BS^?FE\tBG_ CFpbDGoPߓo1p1qSxt΢6ȶ<D٨BS} m(nNԕ"vW\,]ȵm/ ua&lbZ>#fZkݗko@ݜj=Loהtͪi2{XĀz\1ymoԟm,g~|d0mo8rqÓ/j?]m񞏊kI}gƚҀ&`n_oXVymUyÙ7cvbv!\?ir=lp^ldtGˋv@AaxkWЌxVᑞ|^Cn^Axb%ڮx~M2b\_pg:It+eJlvRيqMכ^]qtQuݫˑjZzb,όn>'}ٖ4lc쌻uTȈooSaGKdUِqcdvElXяmɗz ڇNԟQULF|@x$\QhIrLmHPr_ayZ_wQR [y@KNp.BKmALr;BKqVE~Mp2FfOr[I#V]tG VvHA3OvdCsO*xFPyCNuCMasCqNsBOu3CPfy5CNxE|M5xtDNv?DO[v_DwPx[BLy@zJQvDOwwBDOvAN^wBANw@Nu=DP{u!C>NujBMow7DOuBNp|CQL'd?FBE/bCE b=D `"AMEZ}BbC]PE??TF9JaJyYVq%JZujO=^v/P^sJWtUGSt@Nu?Kt9DuNr@L-s<@MOtACOlRmQ^jW;XLx_DZza\x[:Z|aY{ aP{a^|cf醔tup$|t[su_Yx a4V } jj|gzq$vV` |[[|^a{|`,fx`fu`zfp`~cn`.]k]Yf_a`eV`sfa[cQ/Q*dEZNc7> MhDHRh9H Si+H6UqQFPuFOuD3p(X}!A#lw'}C~Ȧ{oK7j%eHa8x[FJf_㰆mZߜp­pm:oqܪǏkq0}"_6~`[coƇpStjjџk' k Jm񷭖|iëOPaԙ-ZmIHB@pU/o]\(dN돌zj񗂆oX}dSm9T5m;RsUnrS)bfrh|\uK}[ƒ;|*T}[ZgiuXp խ̞Sw>fXbkcmrYiS?}a zeY^۱oruwkV Y iasZwlY]Qg{b\tSqYjjZ\{+s}\L+֜2YHWJKu2@ރX횀u1s~PO iGLQsOL5Tjs9X]YmLNsdEKl=FtlPD_McsiBoNw DNuOEMr5E NsEOvDPyAN,x0CNwATNRwODNxvCMTqEeNo@MrANyB.OczR?-Jx E2N=wAeMt+BL&x?JxBGM?xCMuACMtk@XMTw@MxBN]v#GQueDOwPCNwBN*vEOVrQBJgCoHGfAEag_C`GdBGc3MQ6nPQ;hmDJeo@M3dtIg[RqnI\@vI\vJ[sJBXAtFRuALMxDtO)wEE9OtCM#w9DNNwuAMn{ILbeU\Ax+c&\{cZI{_X[|bRz"ajOz]aFZS{rbbbMeGFjOiDFWPpiI2VKr9FQtsEQuCwQ qERsC&P!sBO oDdQnBURm?Pe(@NhWKuHWxKZlKm[gH,Y kIaYmH_:lHbmhe>kdjr7kexooX]>P[Jk n9ve9&{vh mnWf^jУ&fɩ|:h{:bp=Q7s[Y ycrlآSl.Qt;{ew mУoElt ˒r'xhj[lrƨx/1|9ytϤoI*lZÎqm젒rG0Ioux{^r=UiI=\H)mdۜ2lR~-]u}bwÓjЧ=c^@d8Yj+n ߄cXgwoȐq inj~klZUmT!lpj_odGeLh q.8{ǨikTOlV^&x@sCHpBkFoBoIn+CKoHwOs$O Sq.I.QiHc[mHG^mH^"sH&^xFIXYuMvY2uiG:R5u?K uAtMsDsOuCNFw]DyLtAJq'LLNnVQep\YB{b8Vo{_Q zaRxaa[x^w[kz]`ttSZpeopr sgaVHx8]^v_w~fZE{\Z-{u^bz_fxb`>hwn_cu^~`s^\_o]`a=f]g[\rePpS+dAFLehAL>nBLi_G=OUhDMfG=SlG WnF3TzoamlߊdK~WzRO{D^I~cju˅9´}Ĺٚu̖n{i֮Rp+~n3mj_ Vph>9tlj(o٦$oHAn[oOkyTjގnkqabŘzy[@uAlCȉN][wOs\ًe[4pjћqo,hzd񷛚mD`ptlμSqɔtdGNUuD}LuFN yDLvDvKlv?EiLsH4Qzs}I\sIF`pnI+^oI]qKo[qJVo HQSs@MwsDNhtODPtG}S0vFO3sBJktAELtHLgmaVU1Zqv=bVZy^Vyw`\u__}xaa^wI[WYvW^[x$Y'^}i^Y|o_Zw&ZbuzU"^~a^xXWyZ/`uzZ`G|}`c-y^+cwXa*w&[]s4^_q8[`mk(]bd?YWG^RrU1_DL`sH?LHtCPsHXV{q0G-Rnoe?KKq9AMpDMiZURn^MgWzZu] aJx_Lfu#`gw/d6fw|_3_Tw\]Zx6]]w\\hYy{mbb$vY3cz^cxbX:\0w9X.dawZkenwWbWy^[Zd"y^b|xZ]_y]^}^_|j].boj\$_2\VQNvQOBMtS@?NfmBOq@pLm?A$Nj COlBcPnGUr:CbQ#nERBp @Pp>MpCOrF'QuDPkrF9QqC@Pp;FQcpGTjpB&QpnCQuCO sDgMn=F#nBFKs DAO`xBOz @ M$yBIN{B NdyaCNxwB3Ov@NveCN!y?DYN~y'C9Ow4EPuGR=tJ\xI]Eu.FXuqIFToIURql|[ zX~2cWZios°.s:nk)z4染|A_y8Gzzd[r즑~dhd>,nTRpµ#rEޟw͡+pJ#i?jnjb&eWt]ҍp^ŋrUm}tDT~x]~\"d1Îg~gfHi`heƫd[֕hiaxJ\ yk8nbf,cf}tYvƜpae4ho2k'yk?:h6De`{ j4?bu BRbS} bRU;c\>larćq[:k?c*i6ku_BMRrAMr'B,Mw:C!NcxB-NuANju~CN v D=Mt(DMv]@/PvCFiUw#IYq/Rta&qL`EqQbsK#[qrIfWBr&APAr{AOLwYDPsH#UPqEQ0qC{OqBANOo?JiPP b^ VY/r^ ^xa-e)tYaw])b4wa^TZdxJaXTv^]Ux`]xabu[`Bw``uE]`wB_jex_Ej{cmcyamz6efw \"Yx\a\+ _]5v(ZYloY]QuMJsIkLKBNO=2Ob>kOmZBNjBNkBNlBNNo4AKMp>WMoDRrXDYQ*u.DTPuF.Ry-BNuDPFt@M7oUAhNqFEPs!DQ~qIDS?sDSvC?PrHRqBpMzqAMuB NvYBMvBMxBNwCO4w!CO mb,zptJimy,mxcMucΓDGב y*M(}/d>|SjeÿNu/dsJŖke_ؤQ^]!f?qdOʋg}Kv⺒w\bw iuH_mxguow^'crtgLZdtws,\|DxЀp v_ g+S]:l&Vvz[Mu\HpR˚kh})fc,"^Nḑi!ls{mMfhՕo.tŋ^z;ޏ}1d]hb"g)kJv=rsUUuDSHrEF6k@JFk ?IrAKt]D_IhqDHo?C.KDtCLtGPsC~NvqCJNsCNNsDmPqvB PGkB^Po@Nv@vLyAL8{tCMNzDMwCJGv/AIzvhBM-uAMvs?Lw-BAN0yCN}BL{DN%zDOyC|N^uCNMpAMtCK{ BH|C'L`zBM#x@2LtBM_s8C/NvXA!M2y]B2NSwBOtxBPtAbN4tCNt D-NtCkOrAGS qLiZCOqDO#suCLuLFEQzJ,Y|?lPuL<&Mn@Ner< MCtA?Q2s[EUsDQuu1F`QGv!HQuD~OwCNwFC}M^Mu ?LnwAM3yAMy EO}BM{FP zF3PxAL/sGQnHRlpGNpw FLKzD$MNxAIMcwBMvAMt?MPuANNulArN'qAPri@Ns@XNr@Mt@K&w@Ot7E.QpKWnP^smK]jo RdaCoK \kI\lFjVbh\AOmS?LtDOvALtBRN.x@,MsFPimLS^`R+S T7a]SVsX&bxY{`wW0_ouaY/]s3_H\qZ[{`4bUv~_YucXte[u4_HZ|caw_cA}gm>oqx`6fs_bKxX]gs/YxUl{WRpRYWAHDO>kG Q>MVC$Q]3@hNmGB\Kn\DNvonB N*rBVLwC'L`zCMnNsS\{LSBCQUEPYhB5NnCoNnRBLqzFNy@.Hy BK6xE"OuBNuDOxFQpx\i_^m%F#TnZ=JpN:JtsI%[7zYd}IRuEPr\EP?uHE%Qy@ZKz]CM%~A M|ALF|D>Q{DnQJx3BYNx6?MyM/zy?%NwABmOs-EQq"JPYJqJZ[oK8ZnzGSjGV?oHVSrPI\UKuIStdHpOir(H]NHs HPbssn tԗt@KtMW^rdvrܗm#HLn5k nz\hI/:{rەgRl Ðp[z ~[eݛdžBc֗րdu˳u0'9Ȯp=ra2ށ_Y[cjӛpsnTjՋowVpA]ď}b남gupmx[pyZhӖ*jM?h|ۈUdDwqsˎÇT1\2߇SՒsׁƘ"Psxy7^i{HM)eC?B`7BBGgAhHp>mHq@I!s@~Jkr6@JoAHjBG*hAIr@KiyBO|@N|AMzbCzMxD NvB&MdwA5Lz?LK.|@M{CBBM y@NzChTiCV7CO{'?Kv?Lv@L w@KwAKu]BMvBzM t?MKs`>aK3xKBN{yEvPItHQqCfN,v?Lz@L9|?ZKy@LvSE1PpHzQkAKQm>;#Ht@MyANzANw@NPwd@Mx7AOt?PmEUkGZlGZnwK`nVG[mGd\uOEToCP]q:?~L0x C!NszyDNcy?MvCPGr@MoH,O9kTL"QcUSab#Tb)bqT_1bU^]MPT[ TZPOPimUUYNO _8W_Vc_Y`id\nWZPk[^:k [ajl ]aur][`jE\_SOnXb`NR?PL=MD=pQ2O;KN9I TES_UHT;WG1PZ]=E NdCNiCDOpF[PuD7Ou"DNvBNv?jNw5DO5w^F]QvCGUvF!ThtAOFm?N nA2P7r?PqMG!UsDOpDO#t1BPt}BOtBUM x&C;NyBMXyALyBNNxSB~NwAMw@qLdw+A!NywA?N x?!NwB-PvCPzq,GSoHXn.HUnHWpEUppG4UrIU2vgISrHQn7H}PVrpFP1vDOsuGUQjrHh]Do`dholb^Se sݡyerth3]ġo@| Okjcw5`ap^ fWm)^Eq_Xpw_Ɖ`mQ&hLamyPAanʵ_sxNqqprqkxkڨ)hLc`kcuJfDlʔh߭iݧUnZjܤߌ%p5ume>އfudr/-kqad j69 i~0\+qo.2x.kؖ-hrnkᘵih\cȚ'j2nn8zo⫡Sl^zufQekߡ _ٓ;vP7nUKEtLI[] VXc2i˔p8p}Gg̠X'cѺx5lQn>zqMn0}[.IiJ> pRP9_FujHxk률Ug4Nc"eŀftbYяumN}e֮5tqr h련Imæg?wҮzŏ4uwkvodP=l ϒD|̠@wVrClbhj2:j+{GGiA}Y'oԬnLqb\tk~,yeoCщi o{Znxaq|Mj 6t{H*|:>tN4c}[[rUwcomn Kn~|XΌ9pQ+ iƝK%}0zExob\QGMb6 AfCEgGC0I/h@vInB@F\ubAGvXBJoo>Ims>RHKk<>F#nAwJuICMz@ M|A&M|CM8{C&MsxwCLvCLgweEhMG{.AK|@L*{^B=NxBMxqAL{BN~AN|z(?Mw>;Mv>Mv=ANu7BYNrBDNis@MsBNhvCPBxAENwuDNMpDNnBNyu@JM|?LU},=;Jx@,Mv^DyOdp(JSei}QSlaEZiH]6fJY\SlG/VhmI>[ohGX^lFU%nERTs@,Ogw\ANOvCOu~BNw@?Ms>NlNbtr?OuDbQvCOwANv?CN6vA-N!x@LSPwqH[oR_`lZ-ahqld9k'hߚ^]gZtGNq+enlI}eVuR_<|gZv^Qy[bMSmV<eMqrNnG.bk&atal*ĆgҔF}!_z@W b]+g'ӛohs,tku]<t~l2$8eju:'lbΓstGvur횚qNFtpE.j\x{_H{{=y\{A~,|mx8>mt &vNOlqosH]tqu-Jar,5kᔉ%__(;m-oV;yQCIyrok3ә+yJS"]p`K[ ceJGThBHg->Ei^BGeBIcDDIYjAE\o}BSGtAWIoq@Ik>qGj=hHro? Kxz@M{BAOt|BLz8FMRzDMD{CMz|A+KRyE.N)zOBL)yAMKy2CMUwD!M vrF|MEy AJw>RLw=Mw>Nv@O~wHAOt2@MoAMu>LYyAM]|TCOJ{BNsC(Op-CoNrSB NFv>AKvz@rM}AUNbyBMew^EPtMJWmL?Kj?Hau@Ky AMxAINw!ANv=CQ(uwDS sb>QmAVg+K`fIWlgO[WmHUNdEScNGUudESchJ@Oyq}BOvCOuBlNw@ MuCWPq'FPNolIO\kKOe+K P\EHREGK >B$@37pCA7F"F A5K@HB_KJ2BMP}CKROM6PK'HDHGM>?PMHPDChC"CYL'PS;HS>BP/23H5F8Nh37K5F7RANVD"P)VFOnP =OdCMpkx0tMgK&c Mq"yΈ,ω~󌾝#I)ˍуώ,i)|8BSWEuaILfDGj? GnC@G^hFL6gDJaCfIcPD}Gh"GHi$BpHgd?AIc~@Igz?K s@4Nz@pOAx@NvBMwuDMwC~M[yBMz'DMBzFgOFw2FpPuBNuUDsNvAF)MwFLxB Lv?.Mx?MyK?_Mx?Mv?M[qf@_M kdEOr@L[ziAnL@K}BMvBMr@L-sH?N[v%>wLy=Kz%BO*ynBOvM[zUQY_xM?Lt =Hz8DNh{AVNvuANv/BOw@OsBPp:BQ-oDWSn%GZ mIYmJ'WktHVxg FV/]I3]YEU_@O#n>tKXuBDNRvGQ xANs=MrBMq?fIn CL'iBK`7A S97AI2L??1@&A2AF&6PBEh:DG8+EML9CO6@BM=/?IH6p?J~6BM2=DZ1;^?7DFL7BWt8CVj3>P3IvB.N wCOv2CLu0DOtAlPRt'CQrB|QqrAQ4tEPGsDNpCOtu [$ji+֜Zy izʛƉׂUTlovJ[u4 HjDIhCGhBIj>AGfEJgEdK\fESLhwBkF_f CE__BOH/^@"J)dcB LinA9NsBOvCOsDzPrAJNsCLv=JuAK[wEM%wDtNsaEPqCO r)CMuBKxBlL*y@Mv;Ku=Kz=J8{g@dMxAN~trCOJmCNilwB=Nv@J|`AJ%|CM2w?JsCNsD\Q9v@Mx<@LwBNuGF{P{sQY`"~zN^~BNlwAQLvLANtBPsBcOsvAN(vDPt-DOrEPr,CPlpERoHyWp9HSkGTdHn^]dG]}YFVDa~CPk}BHNrkFPtEPrBMTs&BN+w;DKt}@L~x=oJtDLh8?JF`:GIR4~EdI"3BE6AH=<.D+Hr<,EI7pBmNs8BEO:@fM6;J7?L.oJ$VJ_leJHuX&VIU)YFRxetJ`zz!intVH^N;qAGnoP@J\v?L?y=C*OxCN'tEsOtCOtDR#uD@R sCQBvDOyBNuBMuBMku-DOw$DNxdCsO*xZDRhw\A,PvLALxK@J_xnDNTxCNIyALMxAqMxBO5xC|Q)uDPuD#QtEmRlpGUjBFNUDO$YERgDXS#ijESbhEoT5mmFUpDQbjGRiGRlAHWs?HUrG WqW^Knd/g_Gz8u]aimMEpa;tqnjź삻қ#mnoxoFko܍hSMjޓ~)[k+K|/gMgXMfl^,&|ggt"qeTwko+op嚁p ptȽTpEjn˜ov!eGu¶yTS>taWmy^mHaai԰֕}k}i1rW8UgmoKviɩUzCrn,(hl߿2rh<«LhfCPh홎qh%iY&Sm@⛃tuj_C `RؖcXPdFt8ђzPqSj3${v}6\jvRRؾsﶞpVo٫Opɺs'uߘFu 6vth}_i2t[vZ~.b\~bNymW*vuQ5tTH|dCf暑&h0ehǭziJk_ٓFz)PnuNNXuuNLb̒pE:k,eX#foui\fBfƓWfrYl[}acTZGrTxJàeoGeٗz^ҡnrڌUm̅zZox}v8ubxYaq)fiheXtW$qt[DzkWtOle&~51Q^\ٚ~:NbcM}z{g`Z_DsLe.?pINmcEHiKDSHgBHgD`Ij>DGJjDGh-E\Jg}D IdCFDa@fFeyC4LmDN(qEOslEOrFOo$E_OoCOrjAhNuuR?SMw=Kv$B!M#vTCNOsCP)qrAO1oBNu@Ly8A{M>yLBzOu@Nv?Lx?Jz?Ky[@MvALtKl>KK,^;IFR>GNR@G`R=!IVm?9O|W%H]cG\^nI\mbrIVg7KWqWc-N[c}BMVsCXKanb>Jtv=M|X=GNw CQtCBPrDPsuFR.sEFTrsCQs~ANtA@MsAL~vAMydBVNaxCNEwCBPvCRu~BQuANwCNzBNVzAC6OyANw@Nxk!ljf]z4aAdIn `]CMŖM}F?w0IŎ-uWs|a:u-9GזyWpV}0L!}ܳ1hmL c8;2sKr%;KvA`uts9upjvexrFe{ _xd G}]_mnIcXER m?H}pT͜Xe}jڋp崴o" j"ڍlZR]͝]Sy.RjDxU셌^—rpq?f:xXE sOTDrGW?{-cPhNejxfSjArj䓧p_lbEGx*VwW'_Ζsx*U2|hTr‘~TkGYgkIY_oI"[ aGYhHJWFnCqNs=H v}@SKuw@FLy>Jxt=3MIz?Ks3CuObq?\J Y<~DQ{A2FM:j@D@T8>U8`={T!7!CO:SBdU:jDW>L\EYi GYk~D.UnlFSmAFOqDMoHRsNTnXwNGPs=)JvN?N{ =^OwAQhuAPrCyQsDRr_DRobC So]CrQq|BaNrBRLrAWKuA0Mz^DNy?}MxuD0SovAC(RuB>PvWBOvL@Nwr@Ox =gH)z ZpWa bucV*DW|NߎvFSnq`$izfp"*&>v-hmsTm3jF)btiuU+xy'yÉucRJmowrĬnf֤ ^ڡf$htuTkc_HtxUYc r<ay$Eu仭>lRfg@G[BlxUhczJkUe}c6N-dXit)"lp؃Zes KYsbTuikjޔlvաwxmntll\oʨh`NMX"y7["zhǔ}cՌuMY=OMmKPrh Ytϯړ;mҰm}kւ@ỏ~{7prrjsq(tJ|)~hr~70|H{AtC`{o8OStjFCHie@SHEox>FjAcGDeCH(gBDIlDI-mDGIyiDIiEJ>k!BdF-iBIjBIXqBQKPvgFxPyyGRxE\PtCN4ttCYOv COsAO=q=KsAgM vV?dLvANx=FMW{3;Jw2@+MtAMwTAL&vCjM!sPDNuC5M?wF(PyDOuwgC4OuCN'tBMWyAK:zBL4uMBNt?MusFB@Nw@Lz`DF6@fE 9AqM7;>rP8^?O*4=?MI6=*P7>KQ~7]NqAP^uBvQvBkP w6@pOpCRsbDBSmuCPrC[PrBRw>Pv4AZOuA0NDvYCMzuoCLWu^BzLsC"Oo BTN^AM U{A_OTyES XMFLVZ]GDUaRJ\&hMY_jm4IRqF2O*tEMsFOwFOyw]GQnwVHWqtZ_cjUie_qr2`zCYx<.v1ou#lWhKiZ53hЬg6fR{lqThzV`!a,jf}vIup"moQ0vgrürS|{pU}pqDopVzyKs o;puҠyoM}"uėkѰH8n/uȩ,{qRsIpu}yz{ӦvѢzqKnDZe.V|W섟_]eXo_VbrTeP4[^{WW|Vl29yä1Nk`_WS+vcGћiYnĭ`l)?=p˚vvK|=t<5FgcOXh&]e4Z`ş^]~b}[wg^tfs}E&|MltJݖjej>ƕn',mZlߣhhhGnzflۺ_w+E{J\on5bap] MbZg\iZUtܷjxVy9dqTt#z}&xDi~chPf:E`v'-q z͵{w@pϊ5jc~b%tczux~9:~Ƙ|}S|~:y&gtQE;RzEGk&EjGiCIlj@EgC HfCH^jCI5oCIjvC|Hc{DnGfDFlBE{iSAIlBmLwkDLy.FPzEQizFiPw`FbOvCOuBOsBPp@XNr@LtU@ZMyu>Lu>Ku}BnNu>N@s?Nr5CqP`tHCO}tBN(u5AkNyBM|wBMw@Ly[AMvCNqENPqEZOuGRvCPcuWDrQt@FOsA>N|xAvK|FCjLrAN'pAjOv>'Ky@?Jy{"@MxF[R$sDOh2D8PpTAqO@wB8QvBtOdsCNsmAZNqaFQqCNr@Ks`ENpnENnCNr/BQ mESFjFW7bsI[-ZJXV.MZ^FKAVhk@L sAMu@J8p?Js?bKAxN?JJuALlAJNk3ENb?HT:A IE:e@E:8AS6=Sm9=9S7:Ra78qT:=U8@S2;AS?C|VFMMUS>,LZg?P{a?vMyAMnw4AWM0xBNx=Lkt>;N(v1JVm}HQ KcWANRBFiS^REUSFZZ\MK^bmJ\g7H UBpDNr#DQNs(BLsFePIt5I6QtHVyvUZ pP`e[gNqndy{e}41|[H{f|"m hwgCݕb@aOe9˜l1ms%jphÎZiǷxlr<"h˸i嚁pzAs؞*s0v:=ry轨r]ns*F(y\huZom#֏iz{o-weuRFkb9f"x[rjgdrӨ|zFduVrtq\d㫯@\Yأ#Jcbb igm0Uvh٥[–zwIiLtOow6U4[lƅ^l,i½7naŽpގhKK^c2jκx2ysǗ;j>fƲiD^rfM`2ځbS"VFf pQ9sŋ}XĄ #*Ş oKl}ooÈ5fgkvIzL} zi󣣎Bf]kXn)pkznڿ s\LGsPFrsY<][ͷBÀ7t%ρi%zrdi)f_όlpDImϨ-]vk{F{4p9tkt{b{t:kz%ib|+}{ ~*zy~|7\g@Hy3F7EtF'GlCEdDEbB#F'eBDIlFqM=rD Mm5HLlgQDSFcCEfAGc1AJLnKAKxBLzEPb{BN(|ALZx:ALtTCHP s?C}QoDoSoBOTo4BNkt?LtLB#QvuBSPud@LuDO3sB]OoCOYqIP|sEIO9sDONv=BMwfBIxBM{BOw@LIq{DMqDMu)DOuCTQ rB(PqBoPausAN"yAKmzEOvBKO$s>BM8w=K y@hM/x@NwBPs1GRkD"PmC:Os>DOsGQlsgEOsE4QqGSmE}Q n$COoDRPynCOoBOnsATQnD(SXjvFYaaIr]XKZTK[a[=J[]iFSs*?M)r-:JpS@Mtt?cLtAXNw;KJr:=KnB#Pe=IU:Rz8V=R:BDT^9BSYFOKcuAMsuBtMsG"w>rYl jڙ2h洟d׵cn]~-ʧ*y$qĜpBnVWopp$:osrWt.jsosWsM}|熸=~Л\}|~x[y?s v S ^}CKo1FOxDAN wOG&QzANZ|yAN{DCR+xFUqHFoWn5EaS'qAOq@MmtY>Ivr>Kv>K w~>GpvDLrCNneCNo+HPqJgP tRE N>wWCKxHLw1C Mv\>Lov<'IPtFOwAoJvAKvCPv DqRtCRuAM:wA LwSDRPw?MubBEOx@NFxAANvxB~P-u?O9pWEnRn{F>QNpCNs'ENukFMunF}NVwEZOuG!RpFnR_m7DPOoE,P.rgD/OAtCVOv\COaoNDRjF[fI],^KT`f8J^dJ6]jqHYnFRm;M>q=N uAN?sAMs3AcMo@NPw>NL0h>JX;VGKC:$@GM1d5I18#N4=nN19lO29Q739S0 6R5&;SQ83EW/=HiC{MZBQ[%f"GTr{ER{?DYN~yvE'OxuCiN_vCOuE]Q8uB"OrJB:O$sA$PFtETrFUpQEeTpE0U%phESTn0DQkDR5o@On>{OpMPsAwNAt B=Ms@LrCPPp}CvPhCO[t?NM~RAORAOS>KQ6BO QVK<]]JK]fTCWOnCLLu'CLrwFPqsGDRr"IJT?xOKQetIQ m_m`aeAd[I[ٝzW» yttϹn޵mNlk meahёjQ dVs%shHgq+s[wHľ2wnlyox즈tyv.xt|& x \@}Ϟtb٘^hwn7tAjcp`vv4r顩gefaj޵0]si-x9>%Ǡ~Bzy:5vQw#smn+ j8g 5qY;o*klq v gz0(w[NpvAr,msls2swǙ{_=z-Ma}?I hBo]ɀ$]זyR uQQx\Gu쁆AtBRo`an wk[nOskәpI7guJ3jBgl֒jHf?iڳnwҶpՓm=yrmV=p뚇p#͆keomo{qp=uu~ՂK-~-)|~zq~EuLvh jkGPMwFhBHfDXKaPCMo=C*Ox)G8Pw)G8PwB)O yb@6OxVFLt?L/v>K){?VM1z?Lavj=wHyuCLJtJ@MvsA{NsCOq F7OsCM$xICKxLEKs&AK3raA?Lv@K&w?aLvBOLsvCKx6@(MzBRwAPs@Mw9A6Kx$E{NXy CKNuBNtANv-A.N6utBO"qUD+RqCQriBOqEdO(ufEM xAJzE(NBN{C*OuC PqDWPrADNEsYH}OSvDOr:C RkHRfcHX_jI]k&X_elbRgtX mySesFTQ>^>QNwj?ePrDRq\EMmBMoRA#MUoALguNsE S]rFUm$FRnBPnCCO-oCQqsCQs;Ln<;[Mn@QdnCUmF YoEQ%rFQvgDRwKFUvkBPvAO{c;CJLw?Lu>AENr]BOt.ERv?C Pt>K qnDNgsAMns(BN)rCUjE?XcpC7Q?S`AO:Q˜u㯖BrSOe_g,e]rh#Kk;Nܓj}+bqjDݗw~L5#n_v!요rrYb_j|\YčluGnLK]qYPYwb\aks>rox5nJc…]7/hi!kfȨn[sѤ~rnFmpۙىojˊm섩oً&3k|}V[~{}\}{c~zi|fpOi{N_INbpARA e ?#C-fC#HcA:Fd]BoD~bzDE1]2DD^bD*Cd9D7CfPBGyhAJkCNr8FMOtDNsIv>tItT=Ks= MvsxK|iAKxGAeJtA Mv@MKz>MwA#Nx>gJRz}@ L|=Kexj=Mx>{Ny@O|5@MM{!@KwbCzMxALpur@Ls@Mu@?Lw_BMsYCNoCqNpr@Mu?Nw@KNvBNivAZMTuBsNtCOo|GcRmmDPmEQhn!FRmFHZm+YkyLȄyetyoOQlds@VNu^SGZmj6v#Q^azCQokBNj5@MK'jg?H$d/=HV)6EP4BL5@3M0:XO1:Q4>RfT 64;VB'Mrfyi$̝@ɗ\ sA#IA\{l<4IUjVD|OvLAENwvDPw)CYP w4@NxCO|s EP)oEPpGPn|DcPxnBO n#EPlCPikd>,PQjFTjEQfDFQ&lBNkFnQpCQrZDR7qC:QnBQDu(A$P3y3@M\|?HuBMtEKQ@oHTmFTo9CPO@uEUO@rD=Pat(BOr3D.QmHT|^FQR>LQ=IU?IGQ@F{SZBDVWJc4HZg'IZmDqQmAOMoCBNu?DO[v6EPysHF7QrBNrH*SDqtNX8nfNRh[Tn x,Ϭzu?scĺ]*ɗzn}^{cu{Jh޴=`p+7nhn1bjf\ofd`/C]衼iۗpw^wpPƠWj˝!jkVv(zr4n7n xj5eneCbcr5)}P|Pp;f5Z"uawd.\rK=Ե7tT\y&V)Ə3eٮOmk!JhϢڊ/c?f~I^ hL剆wgR˨!všbɣc&hhK?pл'm:`hX xY7|pTj>t\|Nf_`xYiVOSpƣm2tSToLmo ~h˰h%ty߭lw\qJr at)qЖ~Ttǐv~<0~|~1|p|T}6|z8uxFIprgbWlJAV8B@ b@GDe(AGd@"GfAEcDJF]D4E\CA`EFe0F JAjCkLq FO"y&BGLyDDM*zCpNvWFRyDuQ{C,PswCPrAmPpB@Q2rrBP'r1COItA(Mv?Jy @Lz?Mv>LtN|qAxP5p/COn@Mws<*K=vN?KLVwAIMcwAL}vTBMuBMuAqNv5AMxALD{@ZKw@NPw?\Nw=YNv< MPw?KNyf@rJvQAgLuBNtA8NqTAN[s>KsAM]sBvN4r>Ms/@MvA+ODxLAENwv(FNtQBULr)BBNDum?zNq?ODpAPq`E]QMqYD.TsGh`ujxM8‡g|t o#Ti{ALU`AN gM[^LxDP#v:9H)m/CbOrl>#MJf#@KOa>JY<KOV0P8U?R40qS;PBq$BQ nC!Qtj?4N)mBO-pMB}NqODQiu;EdUr@#Po@^O{sGRQw:CNlwCMx@Lt_DhPrEQm_FSnCYPs@NsAfOr@LzpB9MYlFP:aLZ"Z KnWYDSO{ZCZPWDQ\D"VpgHXYjFSj%EgPq(B:MuCN]uDOsEPqFRqINRqCKHS^p`L!XnfPZgaSWma'Q5q[ʢÀQX x}dC}]avQcٖ)*d٘kVnbёtm㯽j״啹dphϰĕfh@ e ЗTn񸷜=J|k|yvƷ%6m 'Mq"yr׾juWmrq!,w;p~dž~1ўv(qiu娄|d͒{Ÿjde[VSEp~s3dc挂[kSo+fp_Eo1hmRϑ%lO-WyF_u=fZhriR>n dpkp;@lɩjh"{aew7Xy9 8/Hۮ֋JvT~bnKd|\˱ޗDyɼxRf׍ajWEmsiVbkەnkń cfsX /yGt}ʂo^Ae{Vjlojf\ڛC`ښgdvlґ^m/fĬiixp~v6uwOrߒn,pٷEuߚ{{AgrO>pSrtfvLv4yT򀯅 u~|by!~Jy|uv_fNMcFxCV@VCa">*Ce@Ggo@H}eR@EbB*En\CE\%EF_FF[GKh=CKr5D%Ox>@L;vBMwBN*v;CPuxER}B.PxBPr @OpBPoCPmEPxrCBNuC6Lx?Lw?Ot ;Mpq@OVo]>MjAMn}=Jvn?No?OkA0Ok~@Muq?Ms??Mu@MvCOxAL;s[CkNvrB/Oft`AMuB{M.vBNsB"QfrFBPrUB|PCq=BOqAMr@'L=rB?OetDlQ)tCO{sANr BPPs]? Nrp@Ms?MOt@)NvEbNuwCDN6qA/N[se>Ns>OsAOpuoDdQtPFYZrJJaPw+evA|Ox}l{\naOS_c|)ELj@I.k@L!s@HKs CMrBOnBQiKap:JF[-:GU_4>?NI4<6M6>N(3sOp<>RdDHbe HLfHHhNnDNw?Lx?MDuCP:uDkQ)uCPv4CrP^z@Mu@Nr^A{OrCPrDRsDETvCOw6>3Isc@Ms?Qr>:PMr >qNmAO$j>\Li>ZKp ?(Nfp&=xNj?nNk0>0Mo>:Mr>9Mt>Lv@MwBNtCFOtBN6tBNt CdNuDO[uCQs?C}Qo!CvOTdsMe`G\`>8FpJDLKs;DP5yS@SLu@dNBv|>[Oq%GVlBQqg:Jc<>K`nK36S:ABUX.$:cO]ᄳs_GbQoтpbhqtELQfL[<{3B>Tz GXGXdeSb~2GV3uF|QkE6OwjnCO nLRu[?IL2y?LwCWOrCNnJ@ZMq@Nv}?OmHBWOq`AK%X 8-FT=IUSC,OZGTcGXViVGmXkGTnC;OrBNyDOwzGnQsFQqH3SrFQv FPrwsIU0vMZrX ^fQVU%|wfj$sP}e$q<Ôs69xtwiMrz n҆l{^hD\y;krSujzkаE^|Rl]_ɏ}3d0qڒnyfj $l÷s{A٩xru¦5uJp'nFq 8gIjҶo;y/5{u%yf1ȿ{ t-fDhTa-b d h`iOhT5c[oAˠnjme3Pskߠk]V:b>dTr^bh'sQźz2kWA^[ Zam֊ÖyY{nz|姆ŦN:je@Mm8?Kp?EL%o>9M/l,=!MIk[>L8q <Lu9JKRu=7Mw=iMtB`PqZBNrqB_NsB!NjsB4M"uCLwAFOtuACfOpBOnDsOoEOpBOlmC?PlBOq@_O{raAPsA*QtAQOsClOq~GRrA>O|qfDP1unDOuFQsH'SqBLrAJu}AKt`AMuBOtFRpKYgYmip5tW}$ҙs>omPHYVyD_KqCMJrB~Ot@}L"u|@jNz?vPzBQ+nCRe@tOpd=L^:IY 6@Q5:;M5aMa~l{ZjZ~CO>T;fK>O_wBMEo=C3PwbH7VwQ2]txHRuDRq@/Nf FQ\k=WM*n?dNkBOIkBNsfSDQNlERmEQ"oEFRqCPOqBPpHBQ s>:Os:kOurBOPpwDO rCNqDOpC PpCGQ,v@Nu@-OuOC)OvNALw]CPN yCNq&FPRlCOnuAOu[CTRk,COa@rKU=J"T4;IRANY"GUjchGZgFYhEUjFUnD}PsCRMvBC6OsJUrfHRpGQOs3B/OsgH1SsPD[nT\njCQSV\mnkp[y[älz |+sw@p\z yyPnFh46B[neZsDm6w<s#8k^ֈQݙIeW7AxW~i~epWL6rۛw}C٪wmtğslroŸ^Tﭿ4jduѩL7txjw~X4}F'|v [rLXh̟e零#qrso@t\v˨tMJwwqfvQ ;x]I\53cc?o}Lr0xNboe1nd^nln›GËnT Xe-~, [RpIq&/noڃljʨqjkvxŢsȞlin`isX£h{FOw^{r,w6FבrpyHTTNQE_˜qbq-_}_iiDj=ѓp'XtZnP?kI6iYԙjjkqqݫVoٓ1nlvoXsV7sSvtϒu󦞐c}BSq|Ɂs%{~KAz~[x}x{nlzQMT}wBEe/HEbZ FEm`ADe'BFme@AcG9bCH]qCG\BGdABIfAK)o= LqC_Qu5DO5wEMrxNENuHRuUDOsD>Ou/FNtqC MtAWKs8?Jhs[FPtFRPwS%a}JWscALn?JdCOfNANBl'ANm@\N7l^AwM"m AyLoCLl>(KJk.>K~i?M)uN>jNwL>dMx>Ms\B.PnDSPoEOriFP tBLJtCLu9DNSuCMt?KXq!DYOsDPrD)Quq1EPkqCPPrAQr=NqF?N$sC]OsYE)Op&GQrZC(OtgDNvEOxwjEpPs F}Po/DNr B=MsjBNNtcBPEv=Ns{EkQr`IWmVL]ggYfqtx5ybio\dq>GMk@KfqBNNs BNrBNu?Lz|AQPy\D*UoEU\e@ZP^4ATabv=J\:ER@4;L3}9LO2:4PN;CN7CO\9?P7BS@9DY/Ce [nizL]bGmJS_=AxK`O@Lp@MwsHRpYDNdHS>mBOoAOnkBSPGiXim,qz8~ǪRoHffe=fzc~\Q=Xbooo)gLt^UGyPa_aqܯtb3p|S^ؘ,cxa{rn~!ߗy~~~}x}kazxhwK`v^ZtWEuLBqB>CkaRE>DWCB[BTDdXCsFd`AFaBFHaCD`EHdqCJciEOtANvBNjwBNwDP{u$IREuFVQs"F2PpsEJOtoDNttCoMTrUA Ksm@dKZsEOsBMtCOuBMqA0Jl CKoc@vM]@NhAQNg?Mi9< Kg8@L(k>*Ij<%Ih&Mw>LEsA NOqCNpfDrNrVBMsjC^NtDMu@K6w@Kw@LwO>LnxAmNv@/Ls@KerBNr>N~r*AN sLA$M`qqCvNrEZOsC!OsC1OtuBMwEIj]7oVj[}6I\h;HR=]?HKg~AMt@5NtEPrDOjE}Qk?NncCPnAxO&jALlBPk$FViCQjh>NfH?N\kE>P!oDO0pBNO.zE=Ki,;K|:?mOVv<M\pAMkDOkCOl#G4S'oHnWpFUFs,CPw@|O{BP;|$BMyBJyDMvB2Op]DP8j]HdVZmCQk CQSqg=~LZ6^G}Rc<(NQC"RX5GqZXcFYffITZveGV[b=GUp:aXÒ7n{PuFfҢ8`KWz_vw]NjW(V&Hzs5z|7x{_xĴMwp|w{ vqqK\ޕ~W\ӣm(_vۺtwu}2&ѩ9Qw@.ZfsK_`7ݕv Mv8h޹Kw& }kͣ;vퟋrcsiwf[nnC{k嚥j=El7hjas1iyP Wpslc\HIq=c/z_qzR[Iچ`C`~]Y9t]W.DpNbs~Sn JjА]iȟh;͎kqjw7Å@O~$(̉/Kq}_}I|p]}1y~"x|pm|OL*dAEdaC*F^DFdiCE!gBD"eB8GdC5GeDyG1d@DtIf%CL8mBMsAGLuAMnweDPxIFRQ{v IVtHSGsGQqDOq ANoNAhLoALsgB6MGsCOsD-Pbss=Kt> KsAZKmCLaavCOO^@N{c>MedB}OSfHSfPEAQf?KTb@L_E?J`@KnY=(Kwd>L z3COy@MtBNtcAMqA N\sA N7v|BMHwB Lv=AKzALyBM~y@M|AMWzCNwFXPwANsrCaMv@Mt1BMrICOLpCoOqDOYtFQMxDO{yNC MrHPQo]H4QPmCWPq<N1tM?NsvA6OsHCO:qoEQnITsg8IeUaFoThGSq@&L2pBPNu@Lt6=VHtCM:tpBL sBbMvBwN,w5C#NjrDO"s@ZNt@ONjM@Na>L[q8CP|36J25OP6:U9m=V5?>W<6?Z9fBT"DJZ^EQj#SsdvqT ev`FTfHRMb;@L2mR=TLvAOwxB;O$r8D@PmeDPm@O:oA@PoEZR_n>LmhCQhDSiCPj%?NiAOkCOmBNo1AN{@OMX@NyBKvC;NtBNBr0E QjaERiu?N)k]CPgA~MYz=JU=L&Z@O6ZFVDaG7XdIVd(IAV`GTObJYoEQtAELt/C6Kw}DuLvYFOCvF3P~t~HQt ENpM|Sk=T[aMY_dp=`鍩n!Ǟvt[vxg͈;q}]V{(g:^b^qbt|hRS~L\ |7SdЧߏjOÐqBjRrblZ[ה {WY xX7sKhr~C mմxxxݜnF@dsV%z󿔟^}:vЗjڄ [ed\ՆZm,N`vb?RC}Zh̙2~1I~ʗ|EWXbcHggKZc]0m_C5hnszʿsCirECz u7Oouݶqop>m@gk7^ae&J9fK{/_~Z"hsM|cx_^CqWy+݊orn@s|grNWAkup[ jݐrRu*R2jC|SY}%w˱ppʨBs${rޟvȦ'ЛkctA܎Âט{:,t~)כU}d/z(~`xy0p=tܐGe[qMGXEG^>E[9?F+_@Fd@EfAEAe,A;Fe@Eaf4CHg E(MhE?OpENtBLv CNwCPtnE-Qt ETsFVr9FPqDOr@MpCAoMqAM;s_BMrnCO#uAP:wS@Ns@Mq?>Lj.CM}aWYMsV[CN+ZoIbRbNHQ` @L&Wo?J]U>HZ?|Km?Lw`DNu{@KxAoL?wAhM uBNsANts`ACNht&@L`tBMtUAL0u@wKtvnB&Mty>Ky"?LwAN7x?M+wl>aWp:@la>A\IQ[YMZc$WbhIXVgbFUgGSiHCPrq>Lbx@KwBB Mr_AN%n?Mo;K"pAOqANNnAZOYjFUtfFV dNEFQi?Nhk>2MlAoMmCiOpANv<J(x@Num?jO#vVAPPs*BdPpEdQnrDP.l1DPmoCPoDQoFPpUEMPvCWOxD?O+wEQau^EQ&rEOm'EOiCDOj-CkOjDR6gA(P\:JUDPpYAOBZ/CHQJ^DR_IXbGUbG*ScEQr;ßsAr`8u>6 t@kpj;4k,5idtPxYF|fRv`W셀btTv`_jz/fp{l9MvbIq$~v Aq{,`sxhXec_M$=a,;ff 8jǬUt'R~?bKٛF#wv^2|aFAl J?eXpiuxO#XoOSkqo;yquԝrٽfm]hwm&$s~u|]~3mujpPru9sҠʌpdjoO~x|mzΈ2C~}}:|~ٗv|{h'stbN\Id~QNCdEAT^D%G]q@$F9aAvHdAHYe-AF-eAFe@NFgB*HiVELBiHI}Q5n7CMrAWKuCM@xCNsDQqDUtEXtNE*TIrDbO rBJ_rWAJxpALp@LrAKrs>K$u?MwvAmO"s>Mpb?Lk>K bAM[I@LSV?LRX?ILS@LY?IW.AKXZ=H}U@Jn\?Ki>Ls?gJCveC#JylDIKZ{BLwBiLuB%MVuBNsCQrD-RpMCOpC`Nw@ULzdAMXz>Mv)>Mw=&LJxATM y(BK(vC.MsCNpDPo$BQ nBQ$t@rNy=IxjBMow=NsTFlXtBPPqBMrBLsAK\s:D0OXpAP2m GyWdGYEfERpCO6x?LJv=ZL`s)BO/sDVPsD(Oq$E_OoE*Q^tCN\tEOs9COpsCPrfCQ.mDS#gBLa7?>U06O /15O$0;Q~/<:SF59>Vc8@\=IX JW]JY]RJV\DQg(BPjAPla@dOr/>rKJt CLv@Kq=@Lp;JqqANZuAOotDYPpF RlGWcFT`CPjS@XMoAMtBDLr_BMqBNszANMu=OtqAQ sA?PPnCAOmmBJPkoCPoERqAPpCOoLFQs.COxBNxgC,NuDPzt:E?PSpzI_RpDxNkDN$hRFReI\cJBlS[g> OU@NVAOXZyAM:[bBlP*_GpVb}ES-e[EQf^COiEP*p?Ju>_IktCXNvsoEQsFPwpKG%QqIRnpLJV+h O\fYg_FgS_[{{`UqwHAxaKq]nvskNxllnEmԤؑwXl{Cfa&kݙ[bޕS}XbiJۄ/qa^fێhv umi/Zw||RX"-Ca2thho{`]^%TuHOwXd1aeP;"m*s~ŵ.0XWeqsUzb_M!pmZno,,i*zV k#֋blE>hhkk< mn2n`>pٺ Otuܷp}rtwopgy{mix~4F^~}}1~ZݙU~~xBbo VHoRmJHKHw[DDOZ8BEaAE-dYBOGeBFcBwGQeLAFeNAFfBHhaEMnEpOt`CLwC MyiCLvCMpqDQqmD8RsDOQs DnKbt=IbT<#IQ?9JG[=dKdbBN[lN@L!s%AK uCKFxgCK{DM<|CJrz@B5IqwB'NtB,Pr@NoEOsM>7JuBMyBkNu>MrY@OKu.A2M"wBGL,zZAfKyCkN~y>LsANs`BP^t|@4OuN=MwBNFxC*OuDPwsFUo?OUl?LoBLquF3Np9BRMrA4PkWERg/F TmoaEIQx=*K&xn?{LwBXOtD_QrDJUrEO#r0DOtfE8R\vLCPdv/BN[uAOq-CPoBO lpB#Nf@J] 8>S179M]29M81;2L40=M8@S:FYDRR^J^bgIE\S_K\XdjFRkEQmCAQ%nAObsBnMmpCMRpB6Npi?Mo(AN@tUANpP dGXV _~K^_|C|RR[;2LN9JT?Ma;J]=BP]9C8R`rDSTe{CQgDQh|GbPmBDO|rAqLVsgBOMrODPpG SnHRmGRmhITkM\gjS]iL&XA`nn7oc^ύqEqD-qNuwUrljIRq٘qXp+vϷsSj尢{bg-oެu\g̑wINÅto|OAuVԈeOāS5x5ڑfJ]i2pvăuuƑupyĪ~GBwmᢱ:d!zI=wScxZ][xdaΕ$kےsuۡxxv҈f{dx[\xTh4՟x Bu ƝxsΚkkQem"FmzK\fm̡xyldyc9z g]yXh}h3g7u~` Èj~tin+efPrSO j1Gl;J/jQmaZ懻sXH|XؠodL۞C~yPֳ'pϓyFi HCycKqaMxwn&Jp䥆"v PwiUƴgbf߾\l󼖚rs1_tQ2,zSG*wݶd6rz!t%oxSph08{easZrFH| H)M~~Ă~I~ՀvCzz`LtO?pLdx?Lw]AL=vSAL:tANr'>4NYo=Lki;HYZ=H#R9rEN;HR@JV?JVX JZLaWBqOpm*ALMr?JqAKtsBLw[CpL\xZE|LwBKtB2MqlDOrFOvgFOuDDNM[qARMuBUM xA[Mbw@+MwBxN;yBNu5BOqu@NlyC@N_yR@gOt>PqISSrJUkKEQ1kPCP,n?FOqDOPvBOqtxBOSnTC,PoFRuv?hMEvAMpxAXNwC9P/u FPwqbGaPk(EPo C.ORxA1NTxBOxbA=OfvCrP_sFPqFLOuo CFNzkXA L`4=8Q0Q71L3= M1*;Iw4>"S9>E T@NeDyWcsG\P`(J]_aG]cEUfERhDRmDA[NofDOn-DNVhAxLjLANqUCQtBO{o@OnCSnfDVNfIH\fERkAMsAqNvEPVuCMP=v(BIOt FQ3rD QmGUhjH YAlpDzRmDQRnzCQo8AJOIrA.OwxR@LxA+MvAM xTB0NA{;?KyBNvE PsHR sDOqAL`jAuLbBPg^K]\`TGTTV?MO>KsW:JIb0F^CWiCSUnbBRc?\PfXDQi^O]oIhWpBNLr=Kq|DPqHTGnI.ViKZlnERrJWqrU]n[b:flzd[vaeū,g]9u4gxQr:~hp=@v*tӾkwqUuEwOq󬞓osmK0qdorSN܇*] [~ac*vh@njzups\-vɟt2-x$r.\i}֋d`jEs@s~W~ {IwӢAvIni}piO}h.KUoܸ;wzi|&i|}t}Bak,dqB^|kJꜜz inLqKATqua&s4g02qir_?w[F#tT i IϒxZUwmڜ=[acş#Ix֐n|[sQNJrYl'ZimP>kJ m#J_ja­%dsv#r^9oE{|cEE|mO~f_1usa xrAvTGrjmƪhiichOϘoߗVoOyv}rìPMEt^XlҨfajVo~!inj}q5|)oˀJ~}[_|x uz7gfo6HNf>\D[ZENGBWPDH\TBG^DF]B:DZAD[BFc`KAHf0BKui'C3PsAA"P#wg?Mw.?L}yB^NyB`NuDP9tEKR}sHQ_t%IOsC>NrAM9v >JtvAM-v?Oy<N |3=K{]@KwBMNsBZPDq+@AMGn}?]Ngy:wHV ;1GP>IsN?JOA{LrV9BK,^?uI[5>HV;HkT=!K_?eMiANOpt?Kn}@jL qBLt9DLvD!M vBMTsrEO|p^DNpbCNtUEPNwCNyLBM$yDwNvCNrAMrAQLvB(NzAM9vCNCvCNxBgMyiCENRuANue>Lu7>ENtBKQswDQmqIzSekCOjC.PnwBNnAYOrVDSuADP]oJaUXuCPuALvAMwBP;vAGPjqDPoCN+k@COmANs>JguLAMmwoB8OtCOP2<3P4/?N114AI5BQ53B[>IPjGEZ/flG[_D$YcE]b|DZd=EThDlRoCPPrD\P8mTFDR g-CkOj@N$pERrHBOmVBFP^n\B#Ql]EpWj7GYeHiQkuAMn@K3rBwN5qBOq]AOqBOqCOnq%E&QOjiFRzgCQmDQ#qDPrFPuBXM/v@BMxHALw@iKx?JzAMyBOJuGSsHESrDQp?Lj?LEd?O/_oO akM>^c=;KP*^nuqRg^lAwR[\>`OeC:QnHwSsFQtoB8OtCqO tEPqGRn|IUhJRXnG8TutIWtM[p\;b-ekj`y.k&aeNnoǩːwuʧRxkuƘCt~| rgdLmoxyΛutwgJŒi5xEdlc`yV|`ˬ7tpk^>Spbݴw"_v;sʖ;uɼIs2飿t֯ϖg9H^T'aϖz* wƢt߳睴}W[zŃu-Fmٚ&n(sm̕mqI mMp'z]*릙;tHg,.Yb\Sg3ʜwph×md1 hLq^jvmMvuƣ6jGqhn(T܆BmqTZ$w\4oNL;kqAqśVozx1`H{c,CzcxGtOEZ;\I3XnIU}f6J˄wsX)j>ow|&_GrX́gKkmmbÚm,m2poqnݙ~ćQߚ ږuX i7Ejvꆦlqjtpi~zvHQ0KnB{Ayw}K5so/zPL[DN@s?7NuW@nNvBOvqBNvCOvELQ9u-HqPtdCLs@LbuAMy@Kw@qLdvk>nMw8MyLd=K[e;GV: GiRH>TJVQ9[H Yp=3H^>G]V?7GVy?$GTM>H[k@ Igc?Lh>LkANoZAALrBuKOvsCLwCwMsHEN[pE(Q+tDlPu"DOuuBONwAN{@AMxmBMsCINqDzN:vnEsOyEUONtEOpXGQt`APKBv(B[KtiCENRuDNHwBNrD/UInkCSiBaPjZDOo[C OsnDtPlkCPNpCrR+qER.qCO|sD@OOvTB.LuCNGx?N@vLCRztBPvpB2OpBOqAO_qBOr BNOuCPx]GiT0xHKTssDPpLER3m}ALc=ELW1;NTL2];Q0C9K5B@W99yI'_"BXiD\7`E[d\l?Nn?1Nn&APAr? LpEQmEsThC2Q~mCcPq8GPtD N tCMouAaLsw@(My@OMx?KLwL>N#t@AORp$C~RsCR6q/AfP[o1N a?P|\On_kHU7_fd-?tIN5vCR:-JZ_7qM3VI#^dK^0e|FS^D#Re=CPom?DM^s ?KtBL|uCJOt8COrEP8qHR/lJVoI4WzsLVqNXZFmCL`;eVuxohvajyf%Ce: iccxp*s5rফblmΥ]"^?^+aS̠Xo^k֧{ꗫtLd>|bV4nOfdyL(;LUҬՕunƈvH}IvyLswjs^+iZij?qgOami fA6e9jBv~dcr.9LhºH}Tw'"umWGg]EvXvD*|q^uΦqn`j[wFWg_I~.bHeOqAJޜS!ClYRaRzVtwZ{h֖h^iogV=oO~*fPGvdcoUHpHr_r+oT֕Fn o-ӑirДw/̗ku֥nmꥲhhk}fazmKkvs |~e ~C~~~~|}"x{/WpZz6b`+rGCYW@CaZ-B GVnE3H'VEF]DtD:fBcBleyBEeaAFCdZ?FfAInB-NuBBOu@Ms> LskBNsC}PrBO'wDQ0y*G\Ux(F8RJy@MnxBMy@JwAKixAMu@NLu?eQTyX@1PzBBLNtA+NpC1OslLCRMh>LKcz:{I]:HP[}=bJ>Z>?JV>IXtG^K?(I]b8CNhE}Q nAMn@K2q^BLuCMuENTsLFNNr FKPtDOZukEOt'EzO[uBwN,wBvN,xBNsCB NEn@MInBMqC N+oDNkzBNlB\NoA?MqAL?S,aBVcET]Vh#C:TgcCRiCQnQFV4vC=TvAOskBO`qDZSoyAPmC:P`lFP+oTAN[sAMsALrOAtLsn?NpnCRmCSFn_AOoDOWnANqJAQm)DViDQ0lC5M oF@OsEOvG8RwALIu>Kx5BbOPxA@N5t@pNtU@?Oq@xPv@QPxCgPo ANze>cO^@oP[^CP]F'QSALQO:H7T9IhX7qJ;XAiP[EyS`YC1QcGcRi6EOYkSBfPs9BNuESO9wlDTO^wDN)tDM/rFOoI:V{pTIUq KX?pM[lT_Uhe9njv{p|{jՄlʄPe?ƀcoZu>k[{U^ߘ~}?e|h>O^"FIWL:Q R\՘ kAr"grEdhiᡡl(mۓw)]ΔyYEp3Ȼأ|t9B.sgn@֙jra@L],aDeޞi?kaCmЙmYlò l&I`K'b8ze.mwaArѝpPJt5kcsğKtboGf:GAh %l_n(Ó lVk{؛rqwc~a~,jC2xťrܾ tRylݏlm=*|JL~EXmg:ƏKs⪯{lz{Jhr+TXmQ s]`vc[M^Ҟig@xsɔx=|skŇpV~ugTsedvћxf{ؤ~wmwєkתˑuo_j٠iΓwkQl%gӋ z5h7wG|~N 3聐~}~Ԗ3~~EN sAhQOv?Mv>WJ[t@Kfr@Kl @Lig>MY>J"Z? H \>E^U>TF[_=*F]>F9^{<)D_M?Heo@KDm DgOrslEOrUCL r7B!MtCNsCLrCYKtENGvAM{uGiPfuEUO@rDOiw@ NkvC O4tCMp/BNpAMs5C#Njr)DMImDNnCN)mrBN(nCNsC9OtES sGTo C"P,n;=@MpYANss?J6s=IqbDzOqrA)OJru?OMz?L~CM{ALwBMy@ Nh|@JNzS?'Ny?Kw?Kui@VKuAL~v-COFz?3O|}AO{\B3Ps@Pn@MKi^Pd\@mPgLCQ lyES`vEBKQxV>DLu>LErBSpBRkE=Qto?>K>pm@M^vjBO5v>Jr@KrByOnAPgDTj|DcPxnBM_sAO`rBSlCTgDQck6HPFnDNanCNrvCOs COq,B[NtBPNuBuNsBNtAPtNA`Pw@O+zC8OqALliBOb@P ]@P8YC`PT:JQ:EJ&V;vJ\3yEqZ[?VMW|DQ/]GVfGmVw?+L}u.=Jtd@(Mt:@LSr@Lbt@K[ti?Hr/OTe?'NXV?GI,_~=^F#\>vCf[^>DG]@F_|>RF)_>gFbb?IkJBLcrc@KsAK sCL'sBLrUCMrQBMv@-LwfAL uTM#zKx@(O@?N,ASPtfCQVl>Mb-7GR;EFNA8?P0[9N>_HKTIH4V\*I^"eZC9Ydt=P _=O[F/SdCCaOe@LgA M8iBOkAoOHp@^Nu?Mw1?#Mlv?XPqBQ`oBQoq$AOr^=K7YCPZZFzSbJ>Y|jEG[RnA9NsB3OvC!OsAL|qG?RgtEoQ(rrEPsCQuODNxvGRrP^o}T_9kOXybpN(W(]Yd(k$NwǐDsm&njZtO튶nxDC퍟y€g!iU"Y\imsߒn🕋l];kר;lߣؐpZvcό0Z'guQoIo$stBrߜnS㔷kF=c׈,aڙg |dʚ)i[)qϰh^joZeqg9PM-gD,jKyWGm|vp[mEh #mݠuu, 9{r`tlIAwly1+o>Š0b֌wlGֆƱDoƜt̘kr2k. #uhԃ[ÁȯLw+2uep;ks5*v0~"}ez_h:x÷’"mxkv5v/KbȦ<|xG>lՇck5CsjZl/Yotx 7`w pRmֲ l®RSfken_ zl0ivQ{m:Lw2~U8}|$~䖵| ~Ax} jq!mIhOp/F8DWE0FUDHVRBGGZBH_yBiHaA`HcAHUc%@hF@dA8Heh\C\LlH\TbwEyQxCOuDpP;uXCNuCNvCN:x BMzrB#NweK}tAmL#tkCoMatBMs2E5Mr1E-L6q>Jn=mLk7Ja%;-MV?OU=\KY<I^Cg`%?E9`?GacP>Ji=Jl\C1Ms1CGKu'D0Lv0BKsBLs@qLdvBN wDEROtDOrAFOsANtCN7vCPu9D2OttENsbBMoAMqw?Ls@NsP@mNrAN sCXNvsDNuBMzvCN'tBTOp?Np >LkrA%NrA{NsYBOvDPtCPq=/Mp@NNw>Mx~COyEM4xAHy@aL{=kMxxE>QNix=MOxQd?Okf'B.Pm4AOmnBPSiBbReB#Sk>(NncAGM`pBXOoBO"pBOKqCPpWESqgFR0t\C:NsCJNsHBP`u?OuyAOsBQoB:Rjm3C,S>hDUaB]Q[=?MW:8I0Ty9uKoV7JX:I[S=HLDZ,@N[DRaEKRgDOWlBNsBM8uCcNsDWOoD>QpFRsCEQPsE]Q8uFRsHT3rRL\NoQ_#lS=`dNX7bT0hi4|] gn v.sۡĪiѥHYuԤֈw׮Đc؟@`*=j4BRp߳r!By pqrIsm{{Ûu߾vŗTqZ,rƿښiŌk0rп/w|ޖHqJYjtsGTXth`jcarab"|pSϙ'~E\SqKmfQKwt]|^k\B>m޵4xkmkfg~]lДJ~nb(dkjBo1ؓ&k);`9Va]~^ |yPYczy XiCepɮ͘9v hrǖs,8t}hxxƼd7]kFw;anڍr&-օt yNuRodl4Gt۵.vkpkӃ]vxI*_w7l Ǒ0m:*on 훃oșoyouxnδZm9e?{fʒVr[{yوnx~zT{hfn?7_xi}8~o||;/{}_t x0Z`c̀AJgfCrDiWCEYA"G8^BGIaCGcDHe{BG d!@|Ec7@FfC JjEE PqFQ+vGRJxCOumCOYvCOw D[OwIE=QxCOhwCOuBMsALpu@Lt@L;u$>;Ls.=Jt? Ms2ALrC*MtaALrALoAKQm>K_l>6LjE=KdIV?I]G>F^@F]:B2F_)AEc >Ec;.Hcg=]KgBO{l@K'p A5JyuC,LtvDLvDLuwALw?kNuN$\vY e{EP0vW?iIsCMuBN?pEP*pAiNpANs=K uB7NzAnNyrA#OtA+OXtA'M{tSCLLNw[E+NxDhOu`KwrG"X4\:gEVmz@O[y>N{>8Mz@NzxcCOvmBNu$BP3x>Mw*@O&wq@ PvAANv>-Jw=K{AO|@iNx@@OZwLCQuyHYT.pBL![DGbPY2:WQz3-:U6+IUNBiRaD\HcByYLo;?GMsc@ On>COmAgOpbA[NsAzOt@Q'tiQq'̡.DIͫſяSQ#c~~“j c\it*r1ZrqQlo+snt sw.$sǸ,y+|™zoh?+`ft K~nؒWtH `ȯfCp-Cd7zQuzmK[*[vTrqSgJeO6vtf.}5_딞zU#݇w\xjʳo%mݻ?+fr[`e̩ca&gؕ|<`Q𬯔N͡BSMj G0Zi[Jfox Nt j]tݮzrxɖ2pr nVks^{6iGMdA aN |TY$x#L?^mȱwt/;rٲm h|̓cdLiYܗ5lKoto9e4g0qpa}t/ xbB֖)(Sj~~||~ZyS|ߗtuHyhk}hKSEr8AX\BD6WXCE]rAE$d~A`EdfApDeEFfCBEdTAEkdA GpgCJl@D)NpGQv\C1Ms@KuC|Nnx$D>O=zOCOx4COwD@OOvzAGMFt AMtAMu?L=tmAZNq>Ln>Ls>Lys ALUrBLsAlLrBMnCMl@L^i;J`d:I6a6GdW=CJyU2=F Ul>&E Z=AE7\UBD\~D\F^'?E`T?IdNNZvw@NuyCN*u'FM0uBKu:CHNu@Mu=+Lv&AMzB,N{ BNw?DPxQ_BQ_|g=L}?aL~t@=Myo>[LHv-BNuC}PrB;Nr,AMs@Nu^?NAw;*MfsYBPy=iMUzGuQ!7@Ts.9Py;FUU@R4_/ANY_6AYY_fBkVcgBRkAOo>Kqq?MrBOnGD\Pq(B$Ow"?hLv=NtB@Ps?PsC@%Pzv@PrAPrP>0Mvq)B{Os}BHNr=`Kcr3BnO vMC1PuA,Q4t@QuA8QsB,Pr?Nvs@OwBNrW@nNvBL[x@IqC7OpwPa7J_L3\GKX%4H V:JgSy9JQ;qLS@PQ;EovZ!4/U5_az{PiSE{iDo!vQyPxVuUWlM{(^HjVz\jx`A{TUa:ikgcÝh*bYk~zoDkim Tflߍ7dڊ1lk#_{(~$XєrMrNy~B[Οs7M{sw]wmbYWs]P ym\`r;~ŨK[rpl칄#rBoc٤"]wndfJ)g-`:glt̜cytuߘam*fAP_8/b糘i·o#X#qH ]mnnpZД u |0ezg3jwn}{4~z~~}}Vxw|=qovHcbjGIO dg>,Ej^CF]0C$GF`BFf)BDeCC7F+deB\EbAdGAcBG dBFJ7zAM|0CN{GDNIxD#Nav BM;w=LFv@&Nu@pMt?Mr>pLq?L-u=K$vpBLv?JAs@2Lq?KmGCNjEPde6@Oah;I]6}GqX;IQV=:HfY?>D[BF]@yCM]@D^lA9G`>+G`6<;Ip`kAMcDnPxcLFPGiCMRpCLt FWMrEjMp@`MnBJOsFRwIT6zTFL4sAQJoW@M*v@M z@Lw`BJNv@Nv;Mv>Nsw?Nx@Ox=MrCNpDMr{DMvC)NwAMwANz@M y>ULwYCENawALcsBNwAM{@K_DMOD@N xBOkyAN[Ny@Nz?(Ns|AHOuBOQwCRt"GXn@bP|]75INyPAO;YK@T^C[f=USa.C9WhBRfj@O.k@OmoAwPrANqcAMLWt@UM!wDPQy@}O"tL?uOrAOr@NNrfC'QqBPqJ@Oyq/CPsIEOAs1C*O%rBOrCPqET`r_AJRwqBA,Q}pAOs?KvD(Osz?qNk>RNr?BIwE)KyM ^E;K[8IX:8InR88KQ:LUD&SUF\VXB'R^:FR*lwAMrA1NTxBNOtCAOXpDPpIU qOJV>lJ4W1oF3RqE2RtGpTpKrXykNMZgIR_Sd_daBjWd bve^ǒ_zh Fm(w ͥYW3\ìpusĘ$iPUhWlys׻rBӛoTt@WxtDåqIul=5û|󴋗mh\ϛ|YӞP jܘ{{c]g]H@YtKiJoS Dx Y"DzrZ|-_FvX߂fHUtX03{qÇoݜzxX~%cRSjaguRvIW?^VjҭtߘO~pݡ(6e露fIǓe' { \}CZ&^ngl}r;_{ظ\0&q-rÜw=hkfzCf~ay4ikYxtaw-.|^|E~bќ n荡k`؋kʬxpYz$r%Am &i7^ar_osvYuwRwoBn@pFoUo{qltxw|6~Nh}n/}=| yzTxx_o G`:Ga COdGVLeE^Ri?Krj@JyDM1w#D{MrCMmsBLs@Kqs.CLeqE$Ln6EMoBNEuq>Lbx$AN~{>L{?M{;JLmx>MmwR?Lavu?MuBPQrCNqDDNN {>Mz>L~@M|DO>zDPw#>Oqv?P|w@[Pey?N{@M|yXANvB7OvGSbzEV%x;L^vFRa=ZKN&? MOoJTpLV"rF[PqFFARtWGR,qNIVjH&SbOo]bYbdeeeoc^yfƢ}kNMr;㢩 \^ӾSohDrdxUqɼpFŸsX1s]IusivvwTNvE~~ou(uiȊJԭ-7sImSfg)6fwɉhny^xQ;r=Q}Iya~L}h`{lSb|Y1f}UxhZz{XKscњM~Wϖ8jQQnGyyϓ߀#/:t֢ҍ/mkfiգng@qqk/>f4f^dt~WiXУ>]Yd2kc2};y݇KDƏb́kTZl+ {oXPh)bBry+w˻wo3'pvNxxzT.j-<(w%M`Ԋ:e`g%lt{ߤbu}‹gvr¯v>֎/gerasйByzxWv uVʐtyW^|i}D{zj|V}+}||xGylvsЍ,]Z]fr"KNeB%Ln >Ful@FSh AGefAFbH@>F^@Eg^@D<`>?3D _BGbwCIh4EMqFsQFuDPsdCNqDMItUCKw6DM{EOzlBNxxFBO(x@MlwlAMlv@M)u->Nst>'N?s:I6q@HKs&CL tAPK)r@6Io?GMl@@Kib>LcBM^@L\=3K\d::HV{Dai?cA,^g?E]+>Eu\>G^?H`@PIldEDOdHnU]F-ScC'NoHBJ,uCLXu_BL1sD?Js?Jv?aK4vdCMt@9KoS@Ko=BJBrwB=NvBPw? Nzy?"N{=?ZNz>NvAOpuB}OuODPtD.NuAKlyCNw@MvrA%Nrq?MtsBO4x@LxB NdyAdN.y=@UNd{BN{.BN|?|MQ}>SNV{CP}`@?L{NBpNyFQxDCO6x@P9wh<(Ps3:N$y=M}lAN DOyNF.P=sKSwBFZvMe8tI:W3`=GO5BSLR4DO3CjMC]QzWCWaCS]CRA[BLQ9[@$Pd@BO2iBO jCPf@EQiDQjBOjLj+BQn{A?Tnx@|QmmBPpAOrB@NsAyNgrT?pNKr@OFq'AkNqx@Nv@L-tFPsBN@qBOtANvF NrDMpCjPs?wPhsBP]sEPqjISpCQR~ZVe#a{QyWUG}ZhsJ8|GEefno׸p nvěcn揝U:͠ƃUw.FkQbGxM] |a@+g] iwt0w)wg+~4}ܗ?{=}RN|%Ny{m}suw^hTXh/JQcw@+Ln6>GQk[@Fg:BGZeA0G:bBG(`{@DE`=Mw>LwBRNvuDOt(?nMr?LsEbK,tBI@q^AK[oN?wKnCsKqA.Jm@Lh@Nc?NWBQUV@MTv=IQ9ZEP?G[@FcBGvc?BLGv\>EV?dG^B?HbE?KaHP `hKY:ZHIUZ^%DnNhGOrIPuH{QRs@L|p@IL$u4BjM>xh?1LuEP/vIrSJ@tByM wjAM*tYBOvs@Mlw >Mx@Pw@O:u@wNgt#D'Ot_CMuFNyCNu@Mq>KJqBMGv'ENyCMzCNyNANx>/NkyAOy@NwANwAvOy@M{1AAKzfBMwDPvBWOx@Ppx=;Oyv>*Pz>N4E@M.BOkyfGUmIZzpMi}iavISeA9CO;H,R.DL D;SIVSE[>^HD XZDTUC{S*aDSl@Nk^BOfhC7QiETjCSj>Mm;AN%ppGQJsCPR-rDPoIcSPqHDQpAQ>nA5Pn>Ml?K_J>UKV::KZ8AJ>\;;JY:JU~@wM!Wb:Mx?[L2yd@@MwD(RvDQ6u FPx1GPxGQt9GPRqHQnsKUQiP=_ZhjTa=g3aefip#bXy.faJue p䶑xNӼ@j(*ʤV⼵b,mlus2uIms ϟ*tFxtdoy iolBpupyEU`ɓ>bU?<7EŴ5v@j곁Pl?hv/gs}`̟ɄTĚ`]#qU6\ukY}uV 耳Km'U̓ ~c#i۳nDbȶƃE)()WY}lГouF.^?E.]?]E^?E"_>D_>jGbk?J_E!S^FX\NE;Sma@Oh$FQhmIHQs HPpQDxMp@JqICMu9D>O,xIKWpyPHQs?HVsB%Kv!C>NuDpQlvANlxt@"MD|~BPg}]>NvB7PFrDP^qDgO\vDOvwBOgu@NuBMQuB\Nvr@Iox[@'IxDNx?)NwY@Nx@NyAOyXB%Qeyy@N:zAZO}AM{bBN|AN^}BO|ZAOEy4CNUy!@LzcA}N~*APX}BO7yOGdSoRjT|Yi~ Ϭ^ov;DIS8]FO6)HlPA(QbTrB/UU G^.ZC YZDWan@EQj>NkSBPj(=Mj\CQkCRMlT>Mml@2MSp2@MoBOogBNlCP`mBOnBP+oAOm CpPwp@L"r}@K2sBNr=GKnpBSPp?N m@KNqBZOq@M7qD/PqJEQ m=CPn?iNq=LqlA MsA;O3vAQr>8OoCOoF6RrDTKs3FsUnC5QoCPulBO\;IlU7UH)\:Ki\n:JV9DIT;pJkS:JR;KU,:JY=MY@PqZ^BO}_BCOkBN\vCHOxXANwBNzCRO`yBOOAv?BOx(CNxEOuJmSv?GPqXHRlTKoXiiO$`hR~agZsde4ljY+wesɹgo v0݉eܪr¬eзǞuǙkn֝ovGÓ]vmzdJ,~uu"#i"rOud|U?ϬSҮVO̐-nҺ<n'"mȩZhCeh"jѬؐb+Pٟggd|{SezqkgG^-!6Sq]Pafgﱕs!-rŘ0%#D猕~,/,kKe ngєo"͑mt㏀lIϗrv`pE1S^ew}ßdzqöub ˘{p0qԊaO~%MBcƩx¦]Z؄ߺKTj іfeGpga*kfΠ`NJg؞̉jlO`p`jK^ܜbʌyd%n`(g,RsOX)uSɒ7xZk}&mruqq&>c*(^&q~owp}{z|z~Tz}:z}ꓟu{?iHqLVvJ0OdbVEJ_]AGcBFaEH7a7DgG`BE`;CE`AfE3_*@EYCG[BG`g B|JFrDOXtFYR:pEQq\C:Nsp@K tj@LvvAM}yCMzBKrCMJrBLvALz>Lou=)Jl@aK1k&@Iod@JCsA@Lr>J4r>Ip,?uJ m?Lix@Le@;L]@KZ@ K]<I?ZTtGV-pPj:cYr~b4{@DFsVe^H7DSI4wCKFPQ)UD~VZu?6W,Z2AV^ DWh;=Pl>PlAPkuBtPlB PlYBPmWKQnk;WIk@5Lkf@K^?J]SqHUix-F'Sw~FTpJVfK]eDR_gX(cZfeisa-x]sf鞬t-˒"jeg|Ѳk3Wxk[\pjdn{⯺{˻v{.[Y~d}-{ti#™tVʃTMFȂ{leP[b.-d؃_tN]Wj#pvl˜mc~T*(^uEb_.UázM֤bL}p ̑m`tĹ͆¨֧͉ฏOywq-\̥xHdOi[Жdri̹n96Rs.NeEhq|vהgpk/tM՜vfvakumr*} QM­s-ggl׮'kȔjtTmnֲqfxq{Ut׾ uP%9k:gwbymXсmd]ֆpd~"hPTsaܜ,tV^-tVӜpf5p Q_uVyS}!}}W|ܘ|i{.[(|~x<|!zovQ\MjFRnRHHK_ DEv]AnFJ`=E^9@fG_=@mGZCGX#D#FZBD_hDKGZa)FIdEKBjExPmrcEPRuF;Q9uUF/OJyBL|C MyDONvMDLuDJdqDIk CtKn@?ZL;s=,MCr=Mt=Ky= J(x!=Hyu&?[Js@Kwp?J+p?Ko#?JHm =VI+k<I5bZ@JY&;{FX>JI_d^=Ic'=G~b\>.F$^?E)\T?3F2\?xF5_=9F`=}G~\/BRJm[4?KXBP]FcVbAPgBRi>HViKVhGQaE|OaaJCL&p(CPJJyG{MTzEM%wkALt]B*MoVBMs?LYx@L'zV@Ly@L|t@=My*@NtvJAO)yk?Mby?mNwO?fNwx?M{>M}a?#N}@M]|BzL{>_JuACNuCN:xFyP|CMzuB?MxDO/y~?M:y@N}{AePzF>NevApPsy >LzBM9|{ALz`CM{k>TM#zl=Oz= R;vE/W/uD^vpXHnq~|ۇR>`qOF=MQ>CC9GM#APUDYaBVhfJCRLlCQpeAxOpR@Op?Or>_Ow9IL)qBPup;qMq?Ov>ORtAOuB2OtBOr BIOq?Nr_@M:uFPwIAMuFANvBOrBP_oCRnDTnYDQbkEUUo|@Prq@NpAOpAPNr:AMqENvtDO{qsBPm9CR'o?JPjCQm@wNmCPm#DQmA[Q=l=PbBN-\?MV =K4YA:JV2j㟵&Oŕ}}VJYѠ݇M^sXꀲHn[Umf =ipTR)ZOԧИМm=a ȉaf8ck`Ǜo9W&o }6fd~|gq۰mqW>q4ĉ|żÄW} c LpY4vpvSou~k}8wLҁE5~GU|}4wyot*Qa=xFDwOLlFCIcBCj`?C^>?Er[ >F[?H\XBlJ}VA HY0@iGa#@Ge$D>J#fGyOkC-O2s!DM's>:Mr>LJx=@Kgy=|Jgv=WJ[u@K&s@Jp@}JVn@Jj>HSh>H a>FUt={CU;BY@dIr`pCLa=ODZ4?LD^@FI`8AGb>ER_oCG\@GVBM\GW_JGeW_EQcdFtS&eFUfGS\gDFPb~BMKe@EKn+CVKwsDLwF2O{AL4wCiKxrAJq!>fKvA NVyBvMz?K1}?M{B>NNv:qLx>OOX}H=BO{RxFI\YwYJ]tN;_grTUcwVg0{&BNg=WBKx8bA_F;KLQ@|PFTBtRZfE%WujUDTRwlBPjkCOm>sKnB\Os>"L uAN tA;NnDPuDR2vpCRvrCQLr0ANr{ANr>AHO;p?OFro>MvREP{sG.R{7BNuANsW?YOpBnQnChQdpCPq@wOq?OtBOMvA>Ls?3OuAOtASLr>gPp^BR8oCSklESykBPjAN9l*HPQlCCP6l:OdaAMZ@#MYxFQzzDOwF#QwBLrj@J,p>Kr7?)Lot@L!s@Lqi?&L;K&w>I)w9>H_u??Jr@ JrAHm@NHgN?Hc=F2[;BT:@T?E\E+Llc"GMd BG`M@/Ecf=B c{Nw~?+OiyEPux@Ih}@%KdAM|AMyE9OzA?M{BM{A N$zCN7|SAOy@QYzCQwGU[rXK[FrKKZpJ3VnIV#kMCMvU;nC8J0>I=bMTCR8VES ]F9VgEpRkCaQlAOynAOqCO{rCyOqs|A3LpGQrfDPwsES@rCRnByQdp@NdqF@LpAeNwl'?DO`qx@/PwCPkzCOw>XL.rj>Lo C"P,n.EGSoBQs&ANtg@@MtAOt8?Ns?M\vL?'NtvAOr9EPrb?Oo5BVn^DoSbkCQk}BP\j CfP jCWP"iANh=,Mh<*Jb>8GH_>G\2;I{]:<6Lc:I[Ce(_(E`QM)zךPBO~zƬ|=sϽvSlt{z2kvq腮\Ĉhj \uǜuTgxH|qg$krg$GnZMjr#Zs`\d}_ĢhΧmk ҘnEinܮ,w-tGQp whEښ{uNxj^Aj)yvԖڂ#ge"r*XH}c6mk:z͡IRƟcGzTy֜G~}&~|X2;~~[||p-pN&[`r0EOk2AI$fmB0DaBBOa^AC`?rB``A-D_B3F`Y@?Fb?3HDat@H-bkDM2eSGSkHlU[qDN*sDLuBLpsCOq&DP}vD>Q{COjxKDQrzCAPn@?Ln:?K$s?ZL#v@2Lt?gLs}@+L}t5AmKu%AJtBmJs?Hs?"Iq@I)oo>Ff=(Ga:+DWe4=HS5\?T>EY@F[_@TF]P>GE`>rEubB>C^AFO_?E_?G bUAAIB`D-NeyDRi^EScE$UbG:YeJh_kZHXjD|Q1mT>K*lAWM.oZB#LqhBKtJR"{BOTz KQRtBL s|?JwAcM{AN9~Z@N}=}Mv?3M^sALuDNx-@2Nxx=AOywA@N0zTDN{ @ M$yA,Qw)AO=v=Mz?O.=M|>yNe|>N=|>NxBWOxV@M~T@KM>BNAM|A!Nv|?rL{i@uLx#B OxxANuACOsBQ wBDeQr;H1U@ocKN]pdJcYGpH5VpHWMlVIQ0\8APX.s@nPs=C=Ps{C1Q2qsBOlANp(BOr2ESmDR9lBQm\CRlmCQUk9CPjA'Oif?Jc?H\`@OE`BE_P:D['<4Jb ;I];JY8IzO; K^Mt< J9R`=*J:WN>KWA=N]A5OOi?Mpk?M4qBOrCPtdCTPtERUs7G5S6q GsQ'p1H$SpHV otGUpGWLppIYmJYj$L[kM:[fiR[Gi]ahfe`b$odoe"~Lrm#r$9mUj|-]hޱ}-rpkmWUj j{|^DohH~k_tua kQoǼāBG:~͈ҨCŽ6߸͟Îso4Fim,|C ō9}sȞz)%z|wɳz{r"z=dxȍdeާʎdJ/Y)rk԰ٕpSjXTd"Wȋr^ښX~,x/ }-캰K@|Ep, n朏wm`wosڜmZڕ|Tb d"~$]#~oK| jEMpK8{zOYfvP]oTYJ{d`Oh,v3`hb]a_`dshp|}y zctվ~EC3tm(dy7YގY}mgwe(w[HrW ~l̨S~~NjMzuPi@zqsij}ŖN} }4}}М~~,|C~J|}p7oŅONOSoBL2he@F_B!CZAnA]ABob?Bwa?BC\??BSZBF_D!IajCIcEP0hHqVkJVs(EMw-CKFyBL$vBB MrDN]sHDNNuDOtSD;Qo[BOlANNo@`Mr?Lt!@VLu-@Mw=Ju%BMKwAIrAJbq?Hs>IGr?IFl@IaFa @HaB=Kb]D_OeEEVRcETLfFVhGJZjFNSjDEQGmDhPkCNn@dJsBKwDTMtELoFNpA KivJBLzBM|@M~@aL{PBMv=Jp AKrA`Lev>Lw@NlyAPV|BN4|AGNy@NNwSAOyTATO?2NnBN~mE:QP~O>M |?MK{@N{@N}j>M~A_N|hBN{fA3Nu|AN~+@tMz?Mlxa?TNpBO"p.A~O!sDuQuSGSYrHKa\zpM[Jp&I2WoIdV&lZFQf^D/>>U;IRF{S=YCTdcEYkAQn??7OqyDtRrBQ.o@P&mDRoCObp4EOqGRsERrFLTpDVR_p>N{o@PDnB4P^on?NJq@iOrBHPErAgOpAOqAOo-CPoCPpB6Ns?BLv\AMs@OsL=MsByOrCQ/mB Pk.?L#q?LtFSoDRlBVQo"C`RQpBBQ~mBVPRkc@Lg{=G6`?Dg]AE a>C^?G^?K _7HX9LJW5nIM7IH<*JAO;JU=K3\@bNe ?(Nfp?XMktTBM_t7AMtANvBOv>FrRs|HTqIUoHUn8JVOoQHRoHSo:MXjLXkKFWl2IVj O"]m\UKahh`ahdgs n<`|pvwҝ6r]YmGfqk/HiAiZssn2߈ahi!lƱ hSphՠ>ū=׺Ңd!<}m |Px\ɍqPzhZlrͼp֫]Ьtohom\S~qyRpȭk7r"ڒiezssSxhG2b_tu¯y/cR c񝓉drZ~ˢh}Os6j8ܒnwl/mt/k|~B[C0TcCbupFLtpXȄjI^u[ArV:z]=glJamLoQe}ZcNladӁXafHcmibeVdor@zarԇc"opL{^8H~bJiLw-[nt)?yVu͔3s&4l |Hm]xei}Rr}i~}"|~y|}AR|{}xxf`{M@@_>Cg`>D[_AE>]B FWBQG[B,KjESpK[sMTYjvDN>xv@K+zyAPMyV@KqtEuNr F`Nt`DN*tBOq@pNAn(@Mo>)Mr?Kq@IIpAKtR@pK w\AJ8wuArIsJAH3r B6Ir?5Ho@Jj.AL`/8CZ295X4v:U=CX?DZ<5@W =DV<,GtUT?HYU? FuUcDGX2A$G_M?FG_=F2avA,JbCNoc*GUdkHWZiFVGkGTj9IbRn[E^RlDQk,DPPxo:BL uAPKQw8DMuEwMoD3LqBLwzA{KwC9MrwBLxBLZwBLApiCLl)AwJmCsMu`BJNvEQxCQ~t?ZL0~ALy?rK3v?4L{?Mg@MqAM|@K{|@Mk}AN}>(M|"?MN}f?M|~BxNM{A`Nx>@M{y;L|T,q@dP6r3=+On?YQnoL?PVnE`TEpbB@OnDOmX>Ko>AKsr3DRPqGCPpXBdPqMBjQq>]OFn@OpAPqo?LOpAQKpAOmA)PoAP pCRqAOrAL vA4OunBPtBLO$rZAaMqmCrPmk@OlAOpAOrAP4oCQo-D[QNsC RTqSFgV s?`NiALc@IK`?TE|_I@3F:c{>Db:B^KX?L}gNu'CMHvCBMmv\BqNs@Mqn@H k=Da!7>]0:8X8>X;CU=BGW@GKU @FZ ?E^@bF[xAFVf@G5`x>Gd @JfC8PveEUcEV fBQ>h9C'QidHUnNERmBSQ}mDQrCO'vCN\tAMVoESO qDXMr8D^MwDMvD0MuAcKPwCcNuDMrnOCJkCLsA|M=xAM xA9NyA)N?KQCN@zWB&NuAN|z@M|AHN{BN{?J|x@M#~^BNNAN"~ASNA|BN(|tCMNzzBSN>zBN{S;J{=N{ @MzEGN{@JFymBM|r?yJ}BLv)FQoGQJjIvWlZF=[hHcg]dk9@EAS@F-WCOP^CBSaE Zk AQn=}M]m<Nfm+@;Qo?_PNoqAmPn"D^Ql1DJQh7CPmBPNrGBMqBPq!C}Pr,AOSq A*Pp"APqb@Oq?O6pB\So>;Nqj!@DPo#@,POpRBPpDQXrAOotOp:APq]? NrBP9uC^@AE!\@E_|=WAa>4E f:E^#;'I[w9IsX9wIjS98GPK=4I!Uz;&IY=J]<=Kjc>NnO%p;HSsHSqFR8n9GTlGSlDPlLIUmIWVpgGJpZe3K&]gL]h~L]qiRai[ceGY]\vHrVٝۊg(t@]xxlz#gfjkk6vٷ7qG̑aѤՍbMKacln ]uzzh|tԞt8ebkEnҙv q`yHZjI}7gN^|&cM_Et_B*u]{kH};ebz̔#l]mKzq mQ`hݼ@gqN#tbjP`qhؔ*i48\vSzXJ)hǔ~j(aoƝ㨂xRvoiqoVn3nی1lO}R^nLl`>u`F~,hCSv|cteW~X!}vZebI(glhR„cԓ9wRHsIx^Slnlh=ha}h>z^tuT}]Σm,DlFug~?@Hj? H?b@DZ@B}YZ@wB_9B@%_y;lD_:E;a?FcAJfDR6pGZ7wI\wIHYvEPuDOhvCO(wqC+QyAzN`x@L?x@My?LsU=JAqtAKLtkBKsBAIKr@RKkn @DL>h?He>\GN`/:?Y1a8WH5;Xr<_@ZY9?0US=BU7=BZ>zDO_@E`=?c>NAg?CGg?^Ea`?@Ev`?Gc@dJd#FPeHWcFFU#bC+P^DLPGcHUelE}R^mDPblEO|omKW$vHRpLEpOj~CLNlCMpxGOvHP[wDM{tl@JOtB%MVu@zJ8r@.Ir,CbNvzA4Nx?Lz{@Lo}@L&HC}N7COz9AkNuDPQyCNy CPx0AMzo@L}GCNĀ|BIMˁBM~BOe{"CN'{AM4{A N3{B8M{?rL{LH:Z?Oj`AUfE+YlBSk?2P]k*@UOUm@OEpg= MqD@`NLqDRr@Op,AOSq2B`OVr@DO&uCOIsPAUOqyAOnt@}O"t@O/u>M'r?'PqAATp!Hy]V;HX^c;I ]:GV;IW8<}HWLgb?N?o<M+x=nMxvBN[uBN qCOoyE[RYuFvRtGVT oIOZn.HGYmGTl GR`DeYb]fU_dbfPfa[yU^oĸkt jvd󦫑jzk'k1gͤkרjU oS{yiB|]o^5`~Dcts,|~x/Rx1~H^nS[z$b_Rj|_PIz7_O.la`qee^q%` .dbddehvEcϵ[ c`&Lmzpi󫩑eؤ; fϮ]qJuՐXnHijOlrqgAșYkyP}j~SfpOӖj\zh&Ce@xZ#su]wd;'mwgj\W!}-hڏnݡߏinga;a~b͝#_1d}(aNxScj`w듧o*a]uRCtJ_;nL rVj(sѡl0Zd{blᑆlrte'ub%k=mv|Ds~̆zyCz(~V{~zV~y{ɔxqJtUSbP}K]MhxCCcAFfo@YGafAF_{AE_@ D_u>mBu_>6Fa>(GJa?Fc+A]Ke ERoH[yGYZzFRw-DOw?JvT@Lnv@%O%vBPuAMti?,Ms3CP*sS@Lq?JKpt?Ll>LkP?M4r>RLws>KyR?Jxj>Iwt=Kp6?mLj:@Hcd>EV3<R.3: Vu40;W;@W:?U<>VU@_C`<Cbe=Bc@=JAqf?Ch_=Bi>Di?Db4BIFb>IpbMCNNcGVdFT \FQqX GQaH%ViGTkeDnOg(DNgUH#UtoLGTpClOqBvN4rBNMsAENwuGoPyTZ_}oBNMpv@Kq=bIuAmKw@KuEOx}@L~xPAMzA`MzA^K,zBMyAMy4BMBzCrNyBfOwkAO{>M~">K B M@KJ}DO"zA&NxAlNzBOztBM5{BM{A\Oz@L|CeMp=`Lv|>N{?*Nz~?7OJuCAQoCRfTGXdcC|ScA_P[TAHR7?O7DU:LT\B&S\dC Pd@E;ThBDOl?BNlDP9s? Ou=LvtA6P2xK@=NxANy@NvfBOt'>LrBPr=Nrt@OuYDYa=Ec>G_;Gi]>G[G<JY;IXF?f?[Jh%EQqJ(]QzH@Zz)EQxBN8w"COxSAvN-y>rMvANZuSBNrBO{o@Ol?*M2ksA{Lj@jKk?6LVpH>KIq?jLu>VKzc=5Jwz=JtI?3L#pBOiEOfW>EW-6xgBY@E] >"DF]>E2a@Fe>JcAO)fFX+dF9X^A O]Y\EQPe1I{YFj%HPVqiCP-h:?Mf>%NlI?Nr>MvMu-BFM0wBLxALxz@1M#xBMz@J{hBMzBN~z BM{pA NE}VAN*N>PMt@"MD||BMHwB NTw@JMwBNy]DM#}@L){e@yNbz>@M{b@NF~AO-{)AO:{&A]N{BOtFRmrFS;g$FXd_CrUlbEqRYB=K6R4H^BL_EMlcDNgANmBOnDQLqCPvBO|uhCQCtDOvpANwAOct@Oq8B^QqAPqMr?MxbB,OWsD\P8mCPmyCPjB)QhAPro@NpAuOpCQzoBhPSjFQ kAM@d[C7QeC0Tg>O^E@]KyY=C^>B` AE[=EY>Fa=;Eb= G`;Gj[=I\D?dK `;IG`8Mm>aNqCOk4AN]dCPj;DPGq;FOwnCMHv>FiQqSFQIlFRn^F+T8nJaVfkLVy^GTStXET7bK7]:kN^kP_mJZl"LbhLdgevtZGsCg)iĶٙh`[jujeٮd0fi Fo޳!snt x"9&̠|>ޠ{qCoyqMғJ} *{v]1~alSR}k-rlmFZw0v:mm,E`~W/eW~u%1oq9cX|M[ޢ듀s۳(}Hw iԇwX_wPHyD_hR}VJiQ jsku~d܇|l7o[k^iR)BjHl˒qS}mk}~c{~>rz}{n{wty_TiƈQBJzqkEFey@D_tB`?Db@GgB?IkEQrI+\tJq]vCBPuSB NFv=aKJu=ZL#y?M[|&@Max}@9Ns$@O-nAPk?LQj!ELk?.Jl>pJp>KqG@LUt?Kxx=Jux=JrI?|LWnBDQh?N>b+=BU%477GS5^7U:=U:@GV<B^Z?D[lBnHZ@HW]>G{]b?,Fa?DaAFdA,GaCI;al?KaEaR/fPH[/eDVO_D{QganDQeHYlGWmESnB$PmAwN[pFA8Nt?Mt~BO=t|BvOruBO7yBN9xTFOrtFOpEP/r-JV*vJqWwC:OvaCMfy5BCLzuBoM{=AL|AL"}BMy:CNlwAMy6Nx>Nx6? O}|;~Mi~?M|@JMwAMugAMxeAMzA6KzCN7|?.NFy@A3OzMzKAN{zpAMwEPGs2DjQXlDSuf4EoX~eD&X`CQQ BPNQ'4Y=T|7+@]W?QFaCH`.@VEbCeKiAK1lnBNrpDQqCO{rD|Pq:ItTnpWDOpPCBOtu@aOr@?P&qAQpAuPpLB Pr&DPu`EPsDN9pGOlBPim>Pn1BtQVoBPs@eOxC&PFrIFRmBO{mB~PlAIQh5A&Qdl>PhoAPoAPlgARlBkPjtBOgCP `BR-a&9LY\6fGZ3@I=^=J];9wIZN՚rm˳]hkRln%bm2Yr˂$ D򱣒r6dALJb~fň Ű*=<1@~]9Rq]wuj|7nXSi{"vĊo)dmXpnH_x _rٕVgrhptnmqtfKtTx˸r b~o1x­낽{ qvQ{<} ZrRM{gdž@sʍu 5n咩eړG]a𘊃AgiT']ɚoa.kqx*rN}W{SXp%-/6&~t\j'z^L7mH_6a8ݕ\hdTf̃hn4u͎sߊpm*Iq}WzK`#ߖ~:~g{|z|w{ߖExzAnqKX={G>rCFjg?/Dc9@^Lu@NrA NoS@Ko0@JnA@aLo?WMp>Kq~>Ju?K@w>SK~t=JNr=IKm?$Jd=V8;?@WC=uA"Y@Co\BpFZAzI$V=]GXnz=^MvyBO&tcANu=Ntx>Nx@NwAKNuANwANxCNIyAMx2>kL#xh@Nz @[Mt{?AM{mC$O{ANx+D*Qv?PsBSnBUhZ>Qba BQDZAM3X4>*X4=Di_A[G_BG`BMH3bd>XKn@N%q@>P)qU@PpxAOoBOpCOoqEOWrDXMrC@MnCO"l@Oo BPpCERr/? Ms BMqGDOqCbO?t^?M(p+BPn]CRlmEUpAhPo@O$n>OlMBRj?A Ph@P<[ZAO4X7LOWa8G\a=XE/a=Cb?lEd>B`CFd:@GYf=G_?@2JT[P@zG\w?H\>kJJZ=dJX=JU/=K@SE?EM]>~Lh=%KoSANYptBNrBiNvtFFPtC`NwAM{=LUx@N@uDPsG|Rq9FPiHR^7FRW~DUV`VH^kI+^lN]blM^h\LrZf]^KdndnSaOT |[,‘f\ܘ_mlXe .{l𴑘(oqe.sҷoٷzsm+Gf#\aa]exuC1kpC{3XZ`GP\xAųCmɭ㌃X퍡Т|_v~daqI~HWijveyɄuPƿs)%q oa˝ay'Ýyiuhꦉb >jVtUvjvwx럝}ȅ;GQȽ3sYĺڅ͟{͠ExӈkKqGՆoGKs:Ỹeq|`jpX鏿|a@c._;,bYOmlAvf `oe2l{N;NzF¡ei߫ޘt)olxoxuj~^*QpY"ShƲLq)[eڜoa*lcei}s}&``pŘ6orO}~4P}|u}/F{z@uu^be`*BN{9FsCGkB>R@^L<>^<@ aBE=_BF \?E%[@4FY8AmFV-@GV@F^?9I6eEO2kIVst>FRw>*MvB OTyC#OwCOvCDOv"BM-upCNiuAtMsM@NKri@Jp%@Ko>Kn?L0nB?yKp>Jr>Kr?Mr@FKp>qHk[=FHb5@-SL76=VO,7W<\Q,9=UV:?XD[z@DBa@Da?F^/>"F\=SE\>1E[@zF]wCG]&B$GYAGnX?EZP>H ]@M_@N`BOFa ? Nif7GTmDS=rAOqDaP;tICOXr\BqNsAL v@J8xBKe|AK{B)O yH5UgzcLX{HRv6EOw@ LyARN/yBNdy@@L|AM{4BMzfA3Nu|ANL{BNyxDN?ybE@N:|8ANy0BVOvCNrqCO3tAAPu=AP,v@dNBvW?Kdt,AL/t BNEv!BNwtANywHANmybBP{|?M z|@jNzP@NL|@XN{7ANv7@P{H>vP oCR6hAQf>Od?aKa<8C]>B]@DMGY_DGfa@F{`; G\VBM'i4ANrAP6uB&QpBPBpCPomC Pk=E9RkBOju?Nn?Np?NIoBPpCO:pvCNm HQs)DP7s GSsB`]B{DNdADE_`y@A^>-C]`=IF^>GC^=C ]>E#X/CKYI@K&W4=JS(>LaR5BO\C}Ol>JQpDMtAMu@LsBhOu=L/y@hNt|@@NExg?Mw&AO+zD+RsFTjDQXDR TDEW]ZHa2j#Iz`CjOWbFjM\hBP]Yxg^{cDagJiyT{Xf kϭSoԔj"fuj`mAn!|pqn"&mnnjh\ijYa%Ratosٙovl6]cr0z{&X ū{Įг BnbSWĈVeĎHwxwһGhޱk` dlɽKwkob=ih(tnvJxAx#{EJtЬ#%;V UPό {&}~?|Ó{{s\z^9z@(KvVFb`=>HBc@L(jFRuCPx?Mv5@M,w@NvBN'uA>Nv@Mu}@9Ns`@MsT@K2r@Jo@ULp.AwLqA!Lq?IKp?Kp,?FMo^=~KOm?Il@Gbge@fD]+8?6R~49O6:@S9M?V4;AMY;BYe>F]AEHaZ>uDa>E`>E\?F]4@F_@E#_R?CC^o@5EVZAyFZ-??D\X=>FO]?J^@Nk^>O$[w@Ok\ERlgFYTpCN(sENuB+NpCNrVBIKvBEL|DL|EyMY}CN%zE]PyIRyDGQJvBkNup>fLy >OMxBNxB*Mz(AnM{I?Mmy\@`NzAaN {VANyBBN?zAMzdBZPzA.Owx@MwBNNxArNx@WNx@.MwfD1N>x#BNyvtBNuEPw\ANOvfAOxI\yADV_@EM]}@B_BZDd@ Hb>MH e ADLj2@+MtBPt1B3P7q>kL:s@K?s@>M kKrDOprA7OrBVOriCfOrt?dKfvhBMxMEOguL=Kp,AOSq5@O,mAOmAOym<@Okg:mMf9]N`;Of[9NW28TJvU=|GZ@B]AC_?.Ep_@E [A9EcZ?EO^ FTe=A^9CF>Za?GjV?JV9[JZR;~LPWAPZCP6kQBvMq@nKp2?KrBPr?Nqt[ASP{'B8MsySDIOwGD$Ov2FoPszE&Rpr;GSdlD1PTDPRDTtUG`^DfOelVQchM][fR]tg]u\^Xc_R~rVdhh}sm /lؒi@Vl8oIJ@oŘ^kE=m?nҽV h hORjJm$nżmTޔl(g'헋q{F `s7{{Ыlȕl 3)JȞۧtdZhZorpb}|Ǩjz)egWmXhNgoMzljeΏ#k@sHtٜyxAyXCD^ CE_BF`@E6\@FX?FZ@F_@EF `iAG`:@PG^by=GofDZPmrFRt}@9Ns @Nw)AO:{B}Oy.D;P>v;HT~s?CPsD?Mq+AeMrmALo:@Jp?vJt/ACLv@Lvc? Lt-?Lnr/@LpA!Jn@_G6e=A-Y+5)91S48Th8*;V:?V:AW^:pA\\8=C-_?FAas>E`=Et\7>FX?)GPZC?F[d@E^>`Db?DE~] AsFRYZAGX BjIP[N>RG\KORyALy}FO@{$D>O=ztBO9z!>NyE>wNwy@Nz?LyAWM@z[CgN^|DN{/AL&y?MwANwBMwBLNwANx.BNyDOGyNAmMry?MZ|8AOV{@N]x C:QsFVj,EQFcCQ-fBObM@KZ@FX?8DX^@?7BuaApDeBEf=H+f@Jm@L sA+NpqBOp@WLt?JrBNgoDQpgDPrCPq:FXRr1DjRpBNRRq@OpVBFP^n?Oq<)NMwb;6L_w@pNt-Pc!EOd4@F^>EW>F \[<F ^g>EdEWQ=YFW(FaoCAC$aA@\?CB]CjE^?E(`e=3F_@SH`@IdAIgRBYGC^DHUEHZ%B3K]e EOj-D%Qfp@1Niu7LtLCN(tB Mp?0Kuq>KqBKpBNJoj@KNot@LHq8IIp@I*l?Fa9<\369ZO59A]9>\;+@UW=yASY>WDP_&AG]P@zG\BH^:?gF6]O?GdZB)K\VAHyT@`EV>WE^<D\@F.ZAFVAF9WAEc]@F\;JW7gKZ^.BOhHVqdHVsC8P sl>/MPsiCN9wGMxbFLyELMx8DMu;BOrJPrKSExFQdxz>L v?N8x>MxAOOfv5ANtV@Mw>MDv}BnNuBM$yAoL]zA|MN{>"N|??Oi~AWQ!}^A=OSz5AkNyC/Oay!BMfxDNx?Lw-AOw\@NwALYxC>Nw9D>O,xBfNEZ>B_]A]Fdm?LEFdBF:h_AHhENnQB]MzrAMp&BMNp ALrCAMtBOqCOr7HXTuEQdrCPrDQrzAPr4B1QBu>GOqd>OBr;Mr=NorkD{QrCWPqAOTqBO{l@Nk6BPqTCQrA*Opp>Lob>Nr BPnAOnEOel(DPe?P`AW_CSV@LR?GUC@,EZ@^Dk_>Di<Ei>Gb*>G)]?H\?8G\>E\<E`WU>FU:NG4U=MJ8Y7HUk:rKR">L*S[>L]@Or>N)wt=LtBO%sCNskANys@L|AKz_F}OiuFkRumFSmFpSaCPR~COsOD{RRF&X_IO_nHl^qvK^l(P]d W^dVaU^i]!V{ahU{Gn nCrpOpHjjJܛo1 ig%m]pN17onH؛7o#.r\oqql2yK+g쐇a Ry!ʱXȣǬRӪ#_nudNYu]YM4r>ǒz>WkƲ꒗^eݚkqĢYh>OfPH9eLc_,8dԗNhiiZmȧuɯ}rVϓn%Q*qͲcy12{x)c]tvV8p?XV|~wzʀϕv}MjEukzOXRrA-It=CnA@dk@@_CD`ABD_A?Eq_=RFT`nHeBJjD4I]FiI(TF%IB\uA+Ie@nMiFRsCP;v4@Nx@OxdCD_`e;+D_[?FU|AFSCHVu?~GW@cIC[@ F[e? Cg]@E_5@Be\:@YCKZ:EbVF92K]/?N(kFU5tGXpERpBOt?MxBM'zBLzCrMxBDNRv>Or`L^/|u{,io?pKs:5Ht~?fM|D>,N[wBP9uBMuBL}tDC`NrC#Ow\AM{[@LY=MDAP!>O{{AHOy>+LxC,O.yFB@NwBN7wAN[v?qOu?hNu-BM:vHD=OvDN)tYEOy DwMmI>nIԀAM?O}^ANyjBXPtyESj]FVm^DRYEPaFQ_>F@[ @HD^aKB7Gc@Fd@8HhAbKi EP)oEAQuCOv @LrERP[w:AM\tSBNrBObr^CP\rE#R=r?LRrcEPuBPPr>O8r@PqAQqp>N pAP^pB0PlBPqAQDvXDS0@CWAgD_L=A(jG,a;FE^>-G_>JE7^M>E\@fHYy=G~T>7JR>LeU05#GTAcA!lڠ_r`Spٛyo;~J7w!k fk$Dj#E]|NCQw{HzJ֚$9RGV8]n9zdxxPEǏHK:„hxL<u~~|Z{~B}}ue{|yՀ2x2mm}WL/N'o^A6Ht_?Dp=?e>Ba>D~^kBE^;BaF&\ATG6\@G._@Gvd@qHhRBIbFKXeDH_?HfA]L,kDfPrsCPthCPviCPyu.EQ2sC|Nhp DpMIoDNoIBNfp>L`o@rMmJ@Lg>mMd>M0j@ Mr9?Kqv>Kw?RJp?vHf<@nX36W8Q<+\Z6?Z:@!X>EUA7HX AH,Z6D^JSYAGMZ@E`@EWc?F^Q@PFyY$BEXHBFV@9IW=G=[k>tD^?>Dc/@IE`UDHZEJUQ@KTAK\BaN4gGUXq"H!X4oGSmKDnOpAL/uBMw@CMu*@KrBNu>PwK1[ 3pxߐdlB@Jo=FqH?Ky@MzBMxFMxzFMtwDNbv(DMw,BLz'BM)E QBO{BiOwCOv1DNxFO>zAM|xqCOxB7OvJCQlwDPxPBLwCMsCWNQtCrNyAM~@M @N?ANE~>zNz3@OvAQmTEWbES^QDQoaQGiS a=eH\>PBcJADeBuGUg?Gph0CM l"DPp@EOt*>OEtO;Nt?%O&wDEPvkBNsB(O%s5CqP`t@|NpBNqjCNrBOqFRsCmQoUFgTlB3P+nBOHnDQlcAOGpESw>OnAqRo>EOnAOzm[BGO(j!=[Kwl=NWu?Oq?>PiVF$Vk>4O2j >|OfCV^H[[@MXV>EzWAwBVDD\BCe>Cla?{H^9D^P=7Fa>aF)][=C)^>>DI[99DU>LSp9IxQ7RGU1<HV<5GY>GJaYCMpEMv@IGwALwJ@)MvW@Lz]@BNV!@}Ma~CNMw-DNqFRkF~R!ZCAPTFAZOaRDQQESXI [cN_jpN`iNv]"cS$ae_ Y7[c\XR=wby ʚ^o1}pa̘}3y(7ƵUƵCb²}-¥r(wɉ\vC\OvYqý|]hſ4hp]n ½w"tl^gǧyh*Α?ͫQr~_I)|ZqnŴqbzup̿ZkukOɖj`cbG(aS#ey bt_ vd={gy=gyk.twW}|eVzDgayKkr c$kTrIlBQ&r\vXՔ}RFzR;֔luS}|osӁ \F{9r@(j i@l՟|aSXZnEXƃNd/amXz;of}` ZRfM+t;H jsHqfW}U{}Śz {l{)zZt؁hrcc{qGG7pRBgFw?D*oA;CMcBlD`_C-G_SBE^4AE^AiF\!AFZ[x@-HfT?Hp BIpj FI _CF_RCIqfE MoDhN:vCOvAOuE_P(xGQ.vlDOrDMoB+L7m@DMSoy@M+p?^Lnz?wLl >*Mi?Mn>XJxpAxLs%?UKq?Icoi=EYe;?4_7;o]9=Z8?X4H?VEU[W@E^@E_?Ft[{>-FW&A7FZ@GEZ?F[>'GI]`?AF]"?Dk^@=G\DIV,N%|@N(}@N|%AP|sOuEQuB\OsAKMzsBO|tAO_qDPnDaPRpBdOqCOscD=PmmEfRi D+QkBOmDQZoGORWrOD+PSrAPoALQIo@^Pn.@{OgCPh>9MYj=Oo?,QUmOAROi?MQ#kk>YOei:M_BQWGPY@K Y0@F[ BPDXDND>XCB^$?C_>Ilc`7D`= IF_<G\ >C\OB.F"[L/V?wG0n{]FddIq^UBAnRpO~n{w\B|!x}{^zЁǘyurD'A^[wEC3lA`In@Lpe?KKq>|Jyo?[LXn%=Ll?Mny?HLWo@QMp=uKp/@Jm>Ed:3B#X<D[B H^_l@Fk_BXF_?DZ?EY>sEMY`>*F[%<F[?F]=fE]=cFUb>F`?^G)^? G^?H]jCLK2[FP\ G^R']EjQ`EQ1h HUqiEP6p{DINkoCjMqCfNtsBM;vChMsEgMn_GOoFrSvKA\>zgMr'D^i:BKg5?Gj ?Lt'ANwAMyBM'zCMyBeLwC2M wrCaMvDNyDN{n?Kz@mMsz?LzANw|SBMz`CM{B-N0~BMgCM}BM|CjM~yAPMyE?3Lw@ANz>Moz@M{@yM|t@"MD|=LB|?ON"{EyP|t[C-PhBQ!]AaR WuDS\^B#OWCK9W@FE_ A&DdLC[H eBImg-@Jl"@NWq<(Pp:=Pt>wOuC|Q)u[CPuBtOdsC Qt+E SOqE ShDWQth@OoqCPmpDDPjRF}QnADOqAOsIBROrDCyN5pCNAq`BPo@eO-oAOh>Od@ Qi>OgARk@Rkh@Pi[AgPj=Nhk:M^>NgZjA2K]=XC[@@F]@LE[:A]C+X@B]>B_=$Fe8E_;GG7X>GXF?E\WCEG[WI;F[W+J\=J1k@oLJrDLrBJtALvy@Ly*B\MzpA7MtzA N#yC ODwCOnERfLD?QP\CGOUA OSDQVH9X\HtX]J [b M^ahMh`gS`dVGa1b|f=XX x:oZ.qų,no^vgg˭̓}7̳Z|_ 7Cyüu3q 5q_mƻgNkkno>nlؚn+yϨ"vH+)&ư@J|!suSZtBj9sɻD}oem~^BGc*qO"lӗYRzJLLz(\>ւ]`BXg7r|Hwklu`W4d|X3!NڌnA$mD"dwTt2GgdśNj.imipfrjE;hƽAyK뢆}9jz^Hwl}nX/i$kCƌnAh f{qjN}k/roxqggjxg]zb$؀[oP N;Bc|,{|#{srcpW?U(vEGi>8Feq?EZLFIXiEIa DH!f=EIbBH^CaJ^D1L[IGOeiF-OlDALFlAHgBwI0gCOKfFORkC)OsBfOwiDPyBPv&CQuMmS[6iANT^ B]>CCh[@F[AQF}\!@DA_AGcwCHb?lFn`?GdH>G$`?lG_@G`;BKasHLRbIW;giIUdFPkbEQeGLSn{HWtrnDrPQpC/OXqB@NtCxLwD/MvH,OqH'SiDJxoHbPB~IcF3LdYBJia@ZKj@MmB,Pr> OwIATPyVBQt5CqP`tBSPqNC7Qts@DRpG WOiDSkZBKPxrCPvoCP-h!B9O=oO@Mu:==Lt~ANtjFwP:qtBO"q=MOtg@Oo>MeVOj?AP&l@Db >}F^q>G+V=*GU?"GVF@XFVd=GY<$HY,9D:W8]HWK2k>-MDqCCPxwANzCBP(z5BR#t>O{n??Nj<|Lk=Lp>K#r?Kp?sIcI8q:Kv=2Nz@OixDMwEEbMwCLvIAoJuCZMMxBMvHCMwAfM y@ANUyBB2Ncy#BM|?/K~@QM|AzN`xBP%y?M|@/ND}CP{2?BNV{MTy\@'Mx?Lx?M=z`?L{CN@ M@?M~ANx=N rAQ'f9@Q^APcBQ-b&D{Sa,BNbj=H'dCK~f(FL2h=KlEAMl^AOTrCPy@N7vEQfyAOu0CPrERrCP(pC QAkC6QfpEAXOsAPoCQVkXCoQo=BOq,AMOVtpEQ-uDO0n1BwOo?Pr;*Nl@PiNDk>MEl@OakpA4QYi;NbeuD3a+?B_GV6>GV@HY"AG[)=H[p>pL[7GXB:IZ7IZ=6Jh>K?tBMxALsBMsBOuu>L_vJA=MvAMvlE>PLvBNqCOeERIUAPTS?3MU9CL.TCMR]HJU{YlHHV[IYaJ.]leL^@fzN_feW`H_=]ib`qmMcKgBr붶qmrԋ\f—]ێm ey4|0v{vh/)vB&6v2r+mTk6Tfpbјhͽ虷f;iȹm$ؖkdSj^x̧c\21kUzyȄrC$lOi͗?qI6h͡!fDvѩ\v2vst6my [v\Hp8w ]Xwe{OeTWmމk`Ɨ|RŒxxPnq2F Lj}_WFjlW_ư&q9şm k¿IlQ7oMoӨ6oZ\uPz }'WN+issl:fQdi˃`F|VW2QaevsW}z.vtz iN}uczK;}UxTN`Λ6ckgeNM?lED_AEi\?cB.WB+DYmCIa}HYPiHOukeA Je>I`!@dJ&a@mJkfD8K\kvAFf?EceAGIfCBCK?kAN\rTAqO@wpA OyyB Oe{?Mw ?ZNs@N mLEtHoj=Il;K kB;yL#lJRe?Lbs@K^)AZIXA;H,UAH5\?FZ@LE[@E\;BaF&\CyHWDDK\<#I_?,I_DJhYCF=Oa^BP"_:D"Qb\GSHhyGUjGAShoGQfHRiG#Tkl%IRoFOqeF:PtDOxCM|CLz9IsR?yddlUGxȖz>RY|B9Im@WI!v; J7{;Lx@,Ogw5BMGwCNwrCPNvBL%wqBL'xCMvF8OvDN?y@^Mx.A7L$uBbKnzBLj?M-~=MyAPy@NxANyB1OxA[Ox@4P{@^OzALIvANvr@Ox?uN0{J=L|?M 3@M\||AyN q?=Nan? Rlu:!Nj=vLk=Ltj$>\Nj@Pi@RgO>Pf7RNc7J{YX=/GHVqBG[?D \@F]E:5E^=vEa0?(D_@D=`u?D_>EI]1@I[?uI[;Lx?[MtI@MuAMv?ZMyv?qMw]?}L"vD_OtCNnEObyFQX^AwOS@#NUAK;R+>KP9H_X`"K^`d?J[aIYcJ6[lfPHbjeT`aP}[^hdlds~ h9q.옘rmxSi-}]biْopphҽq8s-z5|#vedn鱢oipivfi}aWC~hmDwlnj߂=u;⽣&x@pe|D_y❁tGj민dlqW4^p8ߓoaƓ4u<@tv{w[~^lB^Ki5їvm4 nn`|R91co[QkKiKerJӨHn&m ]|8ܣuzZkjj#iZbkѼ|phPmo FuM骗xe~tˍ}T+r| BjJ`)fqa])xVg[{XcelmNup hnx)ROy| yM}{˙T`S{'R]AFDk5DAA`d@CP`AC]A(B`@xEbBJcAI#cMlQ>M'r:Jdu>RLsBNpf?K6n@Kk;Kg;LZj:JElIjp@Jd>H^-?G[T@G9[?E\?2D]@D^iAsF_zBgH_DK!]FTP^> N#`BO`EDO\iIR`DkQgaFQ]dNG'Uj IWkNImYzjHlWYhcHWoiGeUalfHPlGGMn2FnM rCsMw?KzDOzIT;{a7i6em0yS{3np3>EbKoE4MvB>Jw?MwAO$wBNjw\AMN_zMAzPz?Nlz@N-zlBNxx\>]LmtAPo$BR=fXE(Tf>O gRAOkAOl@hKjnCKl@sIhn@Ker?7Nu@OvCPqDQpUCQrBOnsAMwqEO|oChOoANpD,PypCJPr@OFpDQnWBMr?LwX?NvAOasmAPBr.BN@r(?nMrL=Np8Nm 9Ml@Nk@OgDQi}?NPMeh@qOne=Oe:Nl_=LT`@rGR@CVLAC\/?\E`:vE~^?Ge^q?D\;>C^>}F_=MElZ?Ii_%:F`=E b=NFN]== Iv[>LZ;Jp[9Ja#MY{@OuAM*uAfMv@8Nu;MuiANzBiNvtDOknEQ4cE}P[BOWdCOXCMYD@PWHYgN_l$KR]EfJ\dJ[iK^&lP]eT4[nfV\huqviEK kƖsLcx ~bIs%`rzm g .l[ptZv yޞ{ʱuy\wX[|up{,m hcex Rx6b qz@oprږx˜h A?5`=LAY>ZBXA(EbAEfB[Gg@E|fe@1F@g?G>eCJb!FLc_D0KcRCAJgCGJgYBgKJlAKpALs)ANurBOxATNhtG@Mn@ONjl=#M"l>uL?l?Lnp >1JBraMo]=Kl<Jae}:I b>$Ld =JDe88Fd./;\6<V1[FjDJ hAG|^?G=\=F\=kE7dr>:Ch?B(e@D`@ Fal?FaBJn`eG~Qc2DSgESfkH|TcVJ{VcESe~FV;j/H+XnH%WmZGVkaGXlGUK[zCXNoxCGOvC-PyA*O2|9> N}{BWPy?LUuBN|yR@M{y>L:x9BNuBNmpCuNpAMxmAL7A3K,pCIM~qAM|A Nez.AQN/zy@N:z>Nw@!Ow@!Ow$?UM]sAlNto@MqBPmDPf,BPh7AO:l?N?o(@KkF'LnPBHmASJn ANsBPOTee?Pe@PdE;MLa}>N.\;HRAEPTDE/Z>!A^ >Cb"?Hja7>TF[]^?{E\e>E]k?G7_=E^=F-`5C;^=F_j=E\BJS_,=HI\65KF[8I`[:J i;tKrK=MM{=Lny"?Mq?MpmBMsEBNs?FNt)ANuWBM+sGDO#m ELQd$EaQ^nDO ZBMX{CMO\CN[nGPvdKRjLSiE"RSaJYhJCZhN]hhMe^gL[ jX_dgwwbGvrHS}xu;rb~lWfƋq^YePjnN[p @r|LwQ~hH3^|AE:~6#npe<}6S 1a@Xr/o/oz{cڂdH*nXt!cˉuhPv]MvfPj go㷭q?+lVbŸc+Pitph8vX+nP{h^QmqIrK_kO|NVɨtk㝈T(._dÇxfIveo/th6`ôTXTTbſzr%qBk|ȞimkY]rȕgx[ |rzEojͥ]YʇtUoP /{e蛦_R6VHttn{І}xyғM} {9Ɩjo$_cr@JvFEUg(CXE]=CU@BEVBFjfCEk>ACmBFmBDjAI4iGMfJZKpMwm>Nnc>Ll?L g>[K_&@K\8BHkZ8?u]4:XR7a?Df6FHmc@D\>CmZ)?+E>_=Ce_>AgA Dd@E_@eF`A(GcC;KodlJEXolgH\pH$[pHW jGUfIZexGXgHmXroHWqHEWpAGvVnHV{iJW{gJT eHuSXjFQoCOrD(Os6FfO(tG2PKswJRIq_NWvQU~EKUQ|ChJ#rCKrCLv{OlrMmFhU@4CWAD[?FbL>aEeMqAMqJCOr>M tCNr@JrIBMlBUOb]DNo_ B_MYBJL[@H\!CG]EI_JLbILDcF MaMJR2d(Mf[gOt]iM>^fVN`gvQf^feMg_:p֥ń`˂Ɋ~m{0h[~b TҌnTOWifr[oF usz)Ny"`tsq ق`;~/Y͗ zR7Ym l`ę`pemPoz$lczXt?sPd?2w=UF~a.AyEΤ|[,Cef;igqŬpR{e9]Ý_rƔkֶ {pÞJuɭƕHlΔm=QsrßP{D_ykp$̈ _8h$ys须 kh9U)mٞypso̾rޱ n,W<>BwM]Ll;p?h5`PX\j^,eQ"iعCn񵉖kb@8f d!~Qexexm:~/atȉӮ[ukttw䇜쁶|ۙP~~ /n *ryxUoe9G}p? C`>B[B*GFZcA FJYBGfBH8oEJqIOqkDuMrlDsNmEhMlFMj>G8L)iILjGM}i!DK2k>KnAMQrD9QOsGTGsPDPs@DLsA[MlqANm@MM lA\NnD^PEoz@L n_KhA<'Jb ?H}Y9AQ6kA`DDp[?A\v;>Z2=@Y@ Ex`AGc[A3EY_AE<_a?zD*_AF*acCJQcGStjJ^"pG?X!l:HTiHVfgIYeJ~[gIZMmGVmIqWiGSiwGS=gG`ScJUbHIT dZFS`mCPqBMRq^AK[o|BNsCNs JOqJH(nEIr`APKBvA@LwjC.MwB@LxC"M_{B\MyBMzFMPzBMuyENdyBMwAPyAN{A:N{C-N-}oALI}CiOyDnQ\tCPvGD}OxCNw@Mmt@Nx<@M+}IAYMtoA?M}AMg{D3Py@C`MzDXLY|CK{BNz-A5Ox=M(uAaNu@K'rBOnDETuil>NJeTFOlDEL$iDJhgBJ+kaCmKnxBKpBMrN@TNsBOtKBNqBuPrBPrDPs>;Nqs8BPow CPu@DOamfFPkDeQoESRnHWn)ESRmXAQnr?Pr|@RvBKQq@Nk?EOn=Ml=Nh8(Od:P)a^=P_u9MRa>N a>*LIW>I'Xe?E!ZCgE[EoE/^J?F]&=[Ea_>D]7CF7]v?:DZ\?EZ`6KzQ>Lx=Ls@MsBNs@NtC=O2s@.KNr)BMlCzQeCN^BL]>oF[uAG_FAFr`ADE_~BCHZFyH_CFu]HM`}NY2f_P\7gP^fLYafL_cmbY_akt-plqY-&q5tUu[eJ{cLeĈUc{hlkI*mp xœCy x٢mɘ.bvTQr}KsyHQ^M/cJmo˜k rۢidhCiRN:lPYD(wWBJymE\^%kN7AnABvϲ)}q܎Mkˢ`׊cQjwyzw̘o~qz{ zޜaz9#t񶉜&w I;g:m&hk#lo~{H%1~~jv|xYޠ!Q޳C`)op!m7kg_Rv^nk$GMromsiߠ /f,C_CʃGgmqxfsyjmuP=~j`ǃcZ<݂D'Nq^u9FR~8Fj?NE_i@CV]AF`C-HfAbHn5BIqEKqH`N.oBFNkMH PpHOqGNmE>NlCMk HiOngENOoXCZOrBsO?uPDQv0ERt DPxtnAzMu@RKZt*@VLoTAMkANmAN>r@L!r?J}l=IYi@>Ji=J\eXA@;Z>w>4X>@W=@V?EG\@G_AE\BE]CE\`bBuE`iFgTiES:hDRNdFR>aDCQ,`XDjQugkFSjGRihhEPaCDQgAOmBMpuBtMsE@N vn=LRv"@hKu=AIsBLxw>tKQ{@hL{AIMsy;AMLzALU},EM{DMxFNP{ALF|@ MxCcONv^COu@BNTy.AQN/zTB0NA{CN|ENyBhNax=@LyAN{BdO_yBtONwKA\Ny*@M~OAM~A;M|A_N|AN{AM}~AKD4M׀AJM}AN {@$Ox?ANst@MCr@KOnCR]hAzQeCQi!DJN~i@HhLMsAPtp@[Oi??NjVJKV=nFZ}AyE3]uAA*[CpE[MAYF[1CI0\iAGUBG*V;-CZ@G%];Ll>JGm>oJq=SKp>M\r?Mt?5Mku@Mu/AFNt=A,N(s(B5Nq@Mj5@*Ne1@L_?I-[>$DN\2AE_CGb6BxElbnBE_A F^DFaF=IcI]PdCNXeR`hJ0afJcbP^_lgj6„t]8/&tƚi\Sj'JzjtQfaA@i:nCFpŮۘuߑlvŸv,ʓrhj[z?SSR]M&dǘp̱Qks s'^kK)cGN?doP3HpXN8k-N{Omo^o}kwe񃼴uGǏqdlaF{+`E+o+Ętl—l~nbr[v6y%q{|}-?кtznrƛx' fK)߲G,3Ju͓hXp͝!q뷍m}i#bʅ`.kؘqWpךSonЏ^j,9Ylf\roĐ{W]jbrv0Ci'5 /yUjdiJS ~-=Hj*AD[BD(\DIwetD3K'lCfJ.tDJuDJp>EK>lELiEMlrGOl~IRl GSRncGSrITsAJOXuGU"v5CXPtCPBx*CDOy:C!Ncx?Kt BL$rAL@qBRMmAAMl?Lm=Lmd@Lj@LshAhLfO>]JFbe==E]5:qR8<Q7:O37On;>"Si:9Ra=?U@B2W=@W<@T>BOUy?C\AE^bCEX7EF%WBE;Y?aB\CI`DEcLbHRcGOW e3FDX7jDSkDRpqERwpEHT}idHrTcHVT^FS^BjRgDSoPFSNoFyRiE5Qj@OlC_OqC!OsC\P-tANv`AMuC$Nv@ Lyt?ZL0~AL}@Mz?}Mcy:AMyDaLyBIxCHJxC5M_{I@ZMdyAMGw?.LuCbN yB6NxKCN2{CN"~E`N|@L{E@M}@NM|?NvBP2w:>iLy@N@N|~BO|C,Pt}AN}AOm@M{@LNDOPtDP}ANx@Mu{AfNgs?N?l/@+Pe?PaBR eF+Rj<|Hj<0Hun/AL|p.FOk<3PCj;QWf/9PDa.9O\>:5NW-@NUC>H$Uj>G[BFl^DD^/CD]?D[=.F[XASGTA4GT>EYX<}D[AIZ->EX<|DX_L_p:?Mw@MxQBMvENtA N*s ANo=BMh|BMNcBM]@kI X|AF]@Dp`ADalBHF#c@KYh8>E]e<>W78QQ9]Tf;A\U^>#BV=@GW=BFV[>CWk>@C^^|BAE_HGXDDTFHEXClFk[ E G)]rBEZtGPbGXfCVdgBUkBD]VrDSbp,GUjHMWZh5GgUe*FUbCTHh?Pl4ERqGFSlERZjESVnDPTrCM:sCMtTBMuB]NuBTNCti@LXy5@oM~?EMC|z@Mx`@NuALO2uBNMyQEL{0F'MyC N1y?kMcyAXMO{EAdLyBMxC1MzBLiyBrN|BN7}@M]|@M|?Ny@NvANut?Mx]?%N{APV|BNzBBbN|?L}AOYA?N1 BM%MBMV~BM|}A LznC)Ny_@M:u?N(nBPiBfPrfCQccEaTiCOn?KMo?KtniEyPnAROl=NpBQtwBP\sBQs@Psz>NtEPuvBMQqDQtA\PpDRpDLSpDQ=oB@RqCZQdoDPl*BNn@vM+q:TLo<=OmJ@jQi>]P h=Pg=}Q3f=Oc< O`=LN[`? MWHH]>_EC^@Cb{>@@_=D$\?FzZu@EsWFAEU@EX>CXADU>CR$P&64?&WK9BWf9Bz_>[Gwp?BIqBCLn@KfAMc:IlW?M|xM@:LWvBJktPCKtAyLrAMp.? LdBN\A>M*V_AmJ9W]AfF]rB"FaAMEa/EGzdBZF`fnCxGZfEHcDIbqDmJV].JOYNC]IbN` cQ#afVag!biev0sbxz6yOoxܫ|zD9w9rP(bQ/fxt}5w6sqzr ToeEqZ[i&WAZތ_ciSjduׯ|J8 fmTJ]N'H{vfM}_s kji~Pkyeހẅ7am3hzVJjYyO*cYky+r:trW qapkZ堘r*iVvFdqQPwI: xEmsDUvktV))聾e(:kQ}pd o5qM'mhء0`^Gi𹠜kd0g_evr }قt|㠨 p%nьyR ~J~BCSʂhq`rGJthA4FiD{DXFED]mDTGi_BHq@ I0xAJJwCLoDPkPAQ&jXEV mGXnIWlJ!XpFIURmHU}npHTzmWI;VlKYrDJP v>Lu->vJxA*LuyZAK@tAKqVCLmBMj.?LlM;wKilN=Jgr?K_>I_f@ Uu=@BW_9=}V5;SS2==U06@XVY<@B[<@ X>EDV^NKsu@bMzsAL'5BLzB3NbxzBSN>zbBMk|BM[zD8OyE N+{CKzrD`Nz>Moz>M|@MzAXNwBJOwAqNvANwt?Mx@NzEQx{DN{LEOi BnNAYL=}AK|C)N|F#O|BMl|CYO@M_vAO~rBNhBaOcRFTLdD;TiHDPoAM`nl@J`nBPNn??NjdNo8@Pm ARNiJA=RfC@Qec@JReP=O\e=NMcBN2a_;I[y>IiZ=_F/W#>pF^U>EdE?|De ?+D_?XEYx@U#:?T4>V'9,AW :B_;Em@HdtCLMct@Lem@FM{m2?ZLVou?L`u]ALsElLsCoKu`?Ir~BMoCPAgDPaBrMZBKh\BHA_"CdG`C.FbE%GfdqEFdh7C+HofCG~dAHH&b@CJ^sDWNYzM$^bP`diQ_bfY\g8a^+hcnr _m#sϭayyot[x,x"G&rV@dJ,y?}JwwBLp6EbPFmGSjG'[jjI[BjHSiJThOISg~HVkHFYjxHeYJlTGWqxBPt>QM)t=cKXw>J]y?Jt?eKtpA}M`n@@Mm>*Ll^=K|i>?JLd?G_]>GY9S@T8m:T<:V2>>TR=?1U8>mAMuF@NwA[OxCPy[?IL2y@Mx2ANwUA~Ox@N|@M~CN{ C%NxBO{LBN{B(NzBN|AMŀUB1L }CnNw BODx@N{@MwENt6BLuwAL&ysC=O>{?bMxYA5NzEP>{/CMyA8M}ALC}LI|CYM]zBUM xmENx&A5LyBMVxAMHuA N*sC>O^hBOaDUThYA;QkBzOoBMFnEMnDNnCB;PnBDRxr'CQpAFSpDQp@Lpn.DP_rCCPpTAOr?P r BSoAQpERs?&N4oBvPpEB'Pys_AOtI@[OHs'>Np"?%Pk?Pf`=Od>Pd+Dg=D\?sDX*@E:X@(FVG>bC W6:V77U195aPc29QH:>2W9!:V!>?W9?V;GAW:B`s_GpD@Kt>LEr?NWqj>:MqL?-MrAqNs BLtAL>vC?NrBMjCCNtfAM{eAK4aBJ\kBH;`4BFcBhDfPEFgBEAGjCHBhCG6eAHcCXMbyGQeK]hN`j9Q_riW`*h[0eh[?pf^J sXg|AwWsi{11sU!\E?fqvsx.w8.tb*pgq} _mTVSL\Ĥc3lf{!dca,Vk堎i=l!b|_ks`AJyfN~Cj&xٛ{x |ͥvH_{c%~ɚƇid}hɗ9 lМivݍiRow׻m{sڨnIߑe]ic-i՞jTY[1]cf8bss3&|عY-''>xD_tbݣZ[ʀ\ tO߂8f8^u+v}u_k{0hVPxϼpE;zEgڞI7dt5pL| {|`M, .<},~D'Di@_'FQc G VfFYhC*PkBxNBs?Lu?3Lv?@sK3uOAtLs%@+Mp>L#m~@Km?Kk?MJg6?Fm^= EV,:AdV#549TC:S9V?f=8UA?P4@r@N>AaP;>6Sf16YP4:%T:'@HW<@lW7?BcYg?DZY>CZ@D>^DGm_C#GZDI[AhE3]*BDL`CG^DDJ_[GP'bdIU(eFY"fEE.WYe0FEW hpCUTjCfVUkFZjxGZ jFTi/GRiH>TiGT1hGYkGWM;zANw/CNMstDNvCAMy@M|@M{@KE{ BRLzCrMxCM}C.MaBLU|^E O{DOyDzN:vCNvCNxANvXBDMqDANfBBO]f?Pl4BRsAO"rAMn?KkoBNo@ PoOCSIp.BXSoAQpOCzPqBNtANweAWOuQBPrBQnpcBRl@LQ|q>aO,rBP@nD1TPmA;Q$q?NsNu;4On =6Plz=Pi;PWf+9hOe=wOc?N9\,>KjY>G)[>DeZBFS] ?Bc@_C\m==BJjn=2E_>XFnWu;.DV=&DWtBV06TQf16S0!6!TP5cDDf>^Fi)@8Im@L:u?Nu?Ms'@}Nt@eNsBOutAM{u|A_MsyBPoAoMe?KIb@eL dP@JcBI\]?E#_CG5i+EGkDbGsjCMG*iCGeCpGa;C IdKDKgEHSkRUbo7KO^nZN_voVdVi-[OhhZo]&4Wsf}ΛOxsBy,L>7s{}܇JedS8tNv{uU-yagox\VwoZĢse+dZ@fɣk^Љ+^daRYo`w~eaq9XwggLFcw_1‚KkHxܫcÆw@vWN|?m#sg^Xzfޞ~o?rc\nяkpLo4k\f̨jŦ|(qSBQ^ӇiFR8NOh *pFpPƷ{Y{K7&iX e])`蘋yMgyWFsSgkK{.UzEVsjiܓh-@yt/D]}4pTmR}ٔyI}Ŝ{ zP~YOaK|}—:umj{I]ePgIJYc?DZZDfH[ D,GbCFjBJ sC"N{tKXu@Mr?Lq?M)p?eLj@Kh>Jh=(Ga:)AA]=@4Cs]AC]+B\D\CE]_BEc\7D#F6\FG\uDHSZGL"^fIQb7LpYOg6K]ZfIsYiwFUjjFdUiHWoiGURiGnSJjkHS"iHVhaGVj1GSlHI{Rbp7E.Qp"DOuuCLxB^L^yBM9|AL}BBFN~D~O>_K.}CFN}@L{q@FMS}?LzEBMy]BYMNzAM~K@MNC`ORC O}BOyV@MwANM_yCOxALw^@7L2xAOy)@M{AM|oA?M} CM}NAKx`DMy{@K|.BM|CN|C`NyAFXO|xODNxvCNtA#P"vf@NAq@POj@O$i@&Pq@gPwBOqt7BN[oAN2oBPp,DQUqE UqCRn+CsQoBN@q7D"PtAOwAOwCP*rERpBQo@YPr@OnuBQqCUo3LR@LTU>YGNZ>|DX\NC!G]A]E)e?Ck=Bk>>Epa~?FNV?#F:V:>DVKvn@^LVu>Ks>LuW?M|x@Lu@1LoAN9lw?L`A5Nc@ M-h=Ic@G8[AvE+^*B-GAf@^G:gCHgE2IhDmsLa^ZpU bk._\bWbTav3{qLt˥{ 𤦕=ub=ls4uUu$w%coԊj}wuh pÓn.ns[ufo^}kR:{mYKr/p̨qtSz 4jp||cэ}m;r_{`o[\R]ތdeo}ydWmAKKu#bYtTG*A!\>W0bŏhw0q}m|(w/āq1@f7.%⑄o zhZ<#vvUw\9rEȞ!7Fw@m]eŎp`@|p1=}=z'uv?yfOO؊w[~Myzy}|~6lR}RBrxm^4SrJ'B>`LCB_>@QZD6FaEGHgDeIWl CAJ"t/BJyEBMwIPsG1QOnHReGP@_:FCO`CL^CJ$ZUAJtU;HS2?:K UBKlT*<MkuMvo;DLn@hKi?H,e;{H&f4?~Y7:CV?C?uVMCJ"i^V,r7qsspXoy=@S-5N:3'BZ>t?]`><]BB`ADDaiElD aGE8E$^CEX EG WJDvFYGDZEZMEmFWFI^kH>OcL"YhOJY%iSIf[lHGJUi[HShGP!hMzANmy2BLyBLyBNu*DNtODPt?NrR@OmBLQ>kC!Rn,CP9uA%Map(BLoCM=pCPDtDQBrpFyRp E[RoC&Qn D"Pp D"PpGSrANfqE7PqtDPnAQP)pAOsYB?Nu7F,QnuERFqCG0T#qANOm_?#Mi?BO.p:Lqy=OnyN [@DMT>HS>F[|>D]Q@Fz^@EbBEhnBBEhc@}E`AUFZU?uE,T?SDqVl;~BgG[gp@Jfq?1J=n{I_aALjl>Mt2?MvuS>Lo!?MOoU/7S360NV<~7M>8iPA_?TBdU1A8CV?@Wa?2AZ]EB6C"dDED1cCDe^CEZDF&XXE H~\CE[DD#V'EEW0EKbISiHWhGSZj&E(SMgsF"Qe5IQiHQlBEQ~pB8PjpCPlAOfANOp{CL[rcAKRyAKH|?IwCNwCPwAN3rYE]Os0EPStCRuL>ENvi@LXy?K\zfA3Nu|2AM{@L{}@M}@M)|lBFN|\AL|,?{I;z"BCM{A^Nz>yANK{=N x'APy_@M{@M|QBNxeDOwbCN[t@RNlA$Pi!ERvgESezDmQifCMjB2KImDNuBOv,F+QOq FQImDQpEQupCOmpDQJpNFRlBN3nCNNrBNrpBQnpB4P^oF'PpoGLPpD:PoD"Q'mbCO|j&B/Oh'AOkJ>Nn>O*m?Phh?Pjg8$Mh`6?N [EgM[*>sDXAFa`>nD_s@Ga@ F`@DobBC$Ebi@D_+BHT@FR>9DT8cHh@Jcn?JfACfOp~@Muq@Ls?Lx?UM"xBTMsBN3o=?LYk?jLsgR@L~g?Kh>G aBxG\aCG`AQFc*BkGdBtGeC/G"eCG-bCHVe@Ik@tOq4E|U@rGVjIYhqVi8v)cn8v_wjkQ\aL~{Bq]|jɯ%•yۻOp_t^ynzrput͸rӸ凉w޸}0yetXs\y.uÐmYgCg|Gh)o,Vf|6^0a-xXllL-uW-|hč"XqfzuudƑeC{/*ՂʤקvmЃ/sXudZ_]|^]}^֒]9`8~ib|(IwNd EjQ/Pؒgk 5qu/=rh/fVfܤU%pA6WIۤ8RY(vڋi3okcj١} {fO}Jޝ׉*af8q­vEvP?6ϑgՈ9{D{Oxfz-}܀遏}d`FklKKr FD`C*F^EFbmCHmEMsDG_OpDFM}rWEMwF O;wUHNpiHNjDhLcCMG_ClM^CMYAEOS"D5QQ@NRQ@L0S:FR6=6I^? Mk@Nu?Mw@Nr>^Lk[?cKfjSIY>UMGX`ekUZwbp]{\{hLJGJ,3XI 3:R:=AET|=AR]AC|T+@B{T@B\RB~CafC%EfDE Fpa1AAXDECWDcFKWCUF4\BDZDKDWB]GJ[GQdHXUdE_UeCRe[EPc GQhE^Q@nLDEPsCOtBOoBO,o?MpB`MuAhLx@iKvALtAMtCO{r"EOmHF OpGPrUDFRos+?NvUAMx:BMKyEATM zAJM{DAL}U@N~nAP{/BOH{WBdM{OEwM{DM3yBM|w@M&{ N]x?FN|>lMgF@M}KAMy @KhwCM{mDLPGckCQ(`fDScvCeScbGU[ioCMe7E|NoCNkvCoOu.ISFqFR7mBPim#AMkC{Pp@"Q oET?m8DsPxnCNq>L`pCQoCQ#lEOkGmPnoB0OnC]P`kMC#PJi@POjAPlc>;Ool=Ng?P_ARb=|O]?=OY^@}L\@F^>@DC]?F]D@F]?D_@Dta~AD`4@C"__CIVAFT?DU\;?N/65{G38J17J39%Ob7<U4G:W&5F;U70Y"?sGgvIi~Ms?Ls)@NuAMsFPoF*Sm@Nj^?LiAMha>Kb@@H`@Dp^B"Gmb:DHfBFeDG9eD$HcCGibCuIh BLo\B3PsD5Q3o-HSdLYO`O`6gWfi]hJbwea#ezsnw{>tP{ +u `sgttѼswyf6x繃"|Pus8vvgŔxcĸwn~z׵ΛU|pskhug@UmŬ?ja'g 0d>dWtK_Wx fzn2^샂j枒l4d:Dvǘ|kQ[WobY笷:G=tcpHyNl9spLeGa֌q@1N|C y=SEu ?lRPclmCse jNq~VZÉS.e\e~738ߛ$>ƫjɄ6Kmi=!VyvX{_WvO!}IΛESYOnnu'wम}ȏVE-|{z;|suބ[~:BtBCah~IHpABa?SD_ A%F@b1AJnDOw=EHNnvHFMNvAE NNyGOvKiR pHPYgnEOaCLZA.IVCJX@HINVWrDOR9@LzPALJT0>JWS=)L`>Lyh@Mo@ NrO>Lmi@Lkh>Gb=j@WR46D47F;9J}==`M<)=S^GTHSQbRWT5Sgi7kwtċHuu[x>2FzzlJIN(33J/5;S7RB@V=C{T%>BUa@sBRACVB9D_B9F!a@FDYCDDVDOEeUCEVAD\AE_CE[bD'HD[FN_`G^UawGUY@dETfERxg%ERchQDQkEQhnH>N%|@M&{WBdM{@BL{CM8{CYMNyALD{/AM}B8Mz`CLwD*MzLACL ~AKy?EOrUDNogD/OAtCNuAB'Nw1AFNx+A!NywA:N{|AMԁE`?EW[AFYTBSFY\AiE`?E_ A27K4o9_T38V3;UM56"X|:_>Y]YBIh?cInk>G5k*@I9h>Ik;Kt7>xNw@?rNYt?5N roAjs9.{ߞ@rċmQ_lND?UqTDsMB(pAuUERQ6>p2xK-.kMCz@~ZJTmB{B|6U1jVa#Ҍ7dt_؎w{KwwGCy9Gᗩ ZϢҏog*w0ٝ:wxQ }iD}E֊ xhxy}Ι#Bq~Vo{W]c܅KJznBABfd(@DGg5BGYiCKn DM"vD^MxG~Ow5GOvsI/RCtKUnOR^`nK[hFOB^AsIX;BKYDNUAJO?IWOOCMM;UA O]YxCoRcxBkPhBO3mACM"n?WLFj@KZef?E\v<>O/56F<;jJ=>O?e@RBl@M\QM3q v>vzN4xV\~n$iM-HU+P6N/BQ\iDQj/G1RjxERPGmFuOqAK4rCMfvCwMweDMVv=ANuA'OxnBOvMBNtBNu@:Mv@ANUy?Mz@@AMyA?MyBLx@N|5AkNyBNyxANz>MyAO*y BNtCfOiCP ar>Pt^;gQgS?RKkD)U;mwCkQmdEoPpDMtBcK_w EO y=N2sA?Q2s?Or>|PpZDW(nC7QnGOuAJkvTBMuCNsSEPtDOsCVN6phDPo*?/Nm<@NKn@Pm=mOEn=OjsV=O)q%BR'gAS3Z@PUAO UG=aG\a>Ec9AGs^_@NEYp@B1[`D^F aF JaUB4G?_@E5^2AaF$WUBHxV=6FU>LFV46:R@1I4)M)15+H4:}J37Q79S29kU59Y90>c+>Cg_@;Hf?BIe>EKf?Kj=iMr?Nwf@NAq?NqBPgk^ER9eC.QaeAoMeBMLeCFAQgCLeAH;e4@GAh?G h?Gf BHLgHCIeTDIIg?Hk#CNMr1A:NvBNyYFOCvFQ~lDITfK[Og+Tnb`JZxd]Yj{fvsu'`o<]A}Ŧh{T{ z twѸx~]dZxF8rY@qt ףvvʓ/y?E|s6vWTxNxmB] b~юsΉy-dK(XɀZZKyVX>#qH^7oExSPZge^q~Ktkx(}:J~֊yv&w[{=Aۘוo{!LUx}]C|Ad?? a]?iDiYAFnCKrCoMy1D5M^zJF>OwHQs3KRnOVo,\cxjZdwIbRe?JY1?PJW@IRZ@CHN@rIP*C8NUERZJDxSja@M d!@Je@ Lj_@9LZnUWA+BYAC0a?MBaA^EaB$E`^BC]F'Ea#FDcBA_CGFf\B H+]PCLd!ERvgFVe E#SeBfR{eDSufDRh]FXRkE}Pk C"P,naCOrAKvAK{BL\yD"Oy*BM}x&ANx@pNwAN,x@Nz?;NzAN{@Mz@MMz@[MszO?LryCNI~l=J;}BO}=Lz?N-zAfNRwjCKuC-LzCwK~CL}YCvM|AMyANx'AIMtz+@tMzBP!{A N3{CCMv{BM3zBOz'AOxy5@*O7~P?M|DBNmx#@NvBP$y=~LGv4CNZsfBMYj2?BNd=Q f9P2i~@UZlBV0nBQq!DYOs6ENtEGOxCNyIANuD?OptiBP=wBPpCPSonBPkuBCM xbBlL v{D)P/t;DP6rE]RqDPpC^OoBQoNmG][9oB8^?F]H>CVI^a< K/kILuG>Lo MMdsӍ^_؏^[W̙$\ i{`~jNoM7`yʕͅC1⫨tʳч{}ū'jux*$o}k!iߟ9m46tX"{]sHW2#hSLiDawCFޟX̨rMy{0Ih9$QvC_vE3{TL wZi֕ob܇ rKe=J`7dBZ67ON?.9MD@QUGW@VMyOi~M{˚Mwß*ÐЎoug֋uV~zҁǝnzp{wlJGS*j2Pn1-:T%;CQZ>YF\~D3H]BQDYA.CF`-AFBeCDgAD e3BE*cBOD`CC`3CEB`vDpET^E2G4[:CIH\6AgLcGUZiEVOd]EURcDT5d?ESc@EQedF0RiDQl0>`Mkn?Ls @AKvx@Jz.CMC{CWP{xGT~A4Oy@Pz?K(zC?MQ}I@N~@Mz-AM}yAWM@zQAL(zBvMz!DM}AL|ANz @Mz<@Pqy{@N@uDL[uzELzCKt}BLH|@ LyNBpNyALMxEAMz@N {?NyAJNy@]LOz|AL{BN2zANHz@P}=M|VANO u-AP)qCQrBP#xFQdxC*Pyq0FTqF+VoEUmkBPm}CNoBJPkoc@ On@NLoBCP*n@%P7lQ@PliFi[zAhF^V?hE1UA G\DeH`@CG^CH.aCG-_#CA[DGs\G=KbDE_^94|4hP 35O0";Q4*;=SS6Y=T1: U5u<\WR9?\;GF dZ>LIlkK=GZk>yJgG?KM1kp?4Oaqu?MvLALx@3LpBNgrEO[ BN[]!=_Le\CL&oBLmcBIg?D]BHA_r@GkdsAGWiCHl^B HAlrCHNrC(JtENv]CPN y$C0N/x@Mp)FP*m+H)SMkSI#XlO_/oRaGn M3_mqek\dnt}~鼻xs6 wįv"GyŞwgVt&whϞzNqmtr_ד o>9s$?ؔЅwlsΜPxjEf܋bOg^Ǡi^-QTŁ}XɌj͔]cp`S40q\މiOE:9o{;ƮC7Ə䀗^p}+̚sUlkƋ4fki,csg9wbEnNRqCA}w@KeV\4VȢTAxSS |OR}M #~P]wUÜI `'{Zq KqGGXlDNsZJzVZ L.X4_HQ0cADKWc@IQdOCBSMpK{\$il(xNJ =wőoWv29vs/z4UƏ|p\qLISp+3M00:Qs9DY=HY]C*JZ>CGXBDc`K@@mdCD7f#CcEwe@CJcAsDa|BE_)CF^BE].CD]C8I+`EPdMEUAiDTWg/EWdgDkSa&ESlcCQ-fE\QYkBNOkANoA/N[sx@LvBQM{S@FN{\@`Nz'FRiDQC~AMzBvMzAM|>L}GAM*|dCuNzy?L~y2CMyDMz!BL0|@VKzAcMz?CLz>APgyAOuSCLYvDL!{BrM| CMxB[Ny>L>yAOyAN{>OP}'NocB QrmAPn@ PmARl@oRi>Q gN@(ScuB=Y`?RK]SAFPZ>JY;D<\?~EZ@F=Y@G\@HJ`AH^BuH;^CF^CB^_xEH]DHbJMqHIg853{S04N/e6@P4:T5;xW6v<9W18!<;W>JE ]>THob=Gj?Ho`>Il(?Lo>MZrE@)O}tAuMrAfM,pCbOYdHPXBM)PoED?R]ZrS\e;H_ vy(Ky%~ʟޏπko]kEˁ΄unlF|AT+5RO2>@vQ(=\J[Lox@MMzAM%zLBLxBMz?K}NuyA(NvDEbNs@dLl> H>h?oFcAoFf@Hi=EsMWoEMqCNvaCZOxDP{u.BLPpCcPq+DOpuFQmE1Qm!CQ%pEPRrGSs;ETrDVqEiVoDRo3COqoAN@t>NrWB+RnP?=PlCoQl@Q$g\@Sa;QG\,?R`@UaA!W_nGV[AJS+?D9X>HDT[[?gF6_?F`,>AG_AG]CHZ DFHC]yFIVNM]{JCOfhfp~[iSNnF@aVz/=2aMo1r6R2n7UA8-Ghk{?Hq@KDp>K?q>Mt?6Nr@mMpA+N9l DOY_FPWBMVBYNdALnAIr.AGwlADcC|Ee.FxHgCGgND JZixBKAqCM| C0N?zDPv DNwv-ENgz1DLOu^EP_pIdXjK_i2K]lQEap1_d0mde2mDv\ytOO4s~ɛzazɫkA{T@lzcBYU9A W;wB2Y9B _*HV*AIVyBIZYCFB]+D0F5^AE<_AE_@E_Z@E]zABZDCDYCE^BeI`CCPeEWiEUfMGS\aHS-cBObBANaCM\*D4M^CNnCPu">NuxABPyAN*wBNrBNNsCBMmvDNyC N1yD*NyY?JzA>N| CP|DP{-D:MrvGOz)CMX~?J|BMi{dCuNz_BN'u?COWuALzCB1M/}AMz}B NU~2B`MeAM}CcNuhBNt?Nx@@NExW?dNt?M s3@Kw"CMzEOt|A!N~@5L{@[Msz?ANst}@9NsBANvEaMqs;AHJl@@E~cA`E_DNG``VBGbAJykC.MqEOvRFPvNDQCsC PoF7PrC{NCqGCO}mCEP+mCPNoFQ"nF"SMnES-n>HX8mwJ\nDQlk@KMoAN?s?DNp!A'Pn=7O;mPBBQiBMSfeBU^p>fTYf:R<[ATAb@R_MFQ]@H/V@D>Y?7EY?FIZAEYq?G\AGHZF6ITUCI[LOPaMRRnig؄}(}uTNR_63L{/0R57U9;cQs9+>.V9@W=!E_j?QFdAcIkmG>Hm?JTm@=Mo,?zMjt?[Ns@lNo[BGO(jDOW\FQ[CoN] CMXdEMco]DJpHBG gCFaCHEd{DGtiqCGpjCMImAKwCMCMZyEPv|CuNxCMuDOtfF QimIXfK^PbM]ucQ_fUbc<`f[`{TZA=udS|Ͷzn]y%vbXyxiNx{&m MqsrhRw k5|lU@~g*Ru("-czVw Zizbށoܔבrmex@V~fF5u0Z~atS1pTU87o?}FtpЗ{'̘Nն0^@ԭ}؅K~xu8rpV^TRІ`P>Saݫp’(fHMDם悏HQSS΂OQ~OSyMUtO\nhJC?m HLj!sLҎyzS*'W*"Xۚb^w]$%nB]ܞ~Ԁӄ$=stu^} I\fy7@eDAraEDxfDJrXENzFO~J$RzSSUsZ]qq2V\Vp Zeyi\jh:|MLTgJEKE|Q=>=Q=BY$;AZ;KB\~;CaC:Cic'9 A^ =.An_ >EcN@JdCZL]CuHWC;:T25RE2b:P5$@O=AOFGJL;e`Tgv|rag xa nD$t]{,:{~{utOvcVQZZ=C~U2!BlU9HY0;#J[=&JV;HU;IVAL [nDK_D+I1_?;F[G>FZ?G[&@Ef\AE\BE]B F_^CJbDQgBRmYFUojKG^Sa FQ_BXOEbDQdGPi_CNIkDNrEP{@NnzIAOwB6P!tBO tBOuAMJyDNy>K xANwB OywA@N0zS>MzBNi|EN|FNCM^O@GLABO|;AMLzBMGv~CN v1C}MLx~ENx,BM4{?hL @hLAM{CN6uBNArA_Nv?BNyrBOxBOw|AEM1xp?;LfyDOY{CBMx|BM|}/?LyCBPu7BOq6:K0X/PO2'5~S9;Qe:=1V7Lk.>Ln?wNsBP_oAA-On?N"gFDP ]ED.PZe>K_AMhpBMMlCJjHCFpbCaF4`EHfoD IBkJBIj-CxIpAKyACLCLzDNFvCNw DNwv-FxQsIVkK*\dXL\_!ST[Z]d_[i&emrh`@gD|<}rםzSxϦvlw% wx(w%,%v~scȡ}dzgiYԖmܖuzbCv^Vvhց}gpqraYum]E#t]vC=vSBbՎ ~McVq\ԃ7wb 7sRn~~+ qbrij]=rhuwm\cGzaGOz@N K+]aQ휖|B|De~8FyIR'V}:QutORotPBkILmH0rJKSwPQWf}"U55\7Kb pm:h ٍȘiU8~C {|'}+ܞ~Ģɛq+txGQt8>g#A A2ezAqFiBLpEPxEOPq^JRQ~XM^fy[,cwWRd w.Z fyP"WrD;J^ACU;`@W8O@]<@^d=A`;@d}rDbY>.E`=E`Q>[BuQIJGN bn]fe_|O Iu"Wmj|OA&s|wzm~j'x-NLUE<3EkT8lGW; J"Y>J"X> IU=+HWw>aKgZ@ND]@LD^RBL#]A5JZAHAZ*C J Y@iFUAxEWiB:F _KBH(b@CMOdEWh?FXjfJXlKIRgsFdRe?FRfFQe/H"Q.gjHOpC@MxB_N #@HN}@IOyAOt\>LuNAPNxO@uHDWOu}AANCv@dNBvAOt@NsD?NsB`PsDQXrDT4nBUQjALnBdN)o@@On=OmWBRfD_U`tC[Uc@ ScW@ Rb=Q`&CNT>_<:NU@KYg?EXAHZBHZAGZAEYA%Iy]AH_^ChK` AJbULJ—BfܢꘙyIp8yqldiZ_"?N7FM2v1>Q1G4PSA:MK*mS=Kl?QNpFAOr@=M^~A;OiCKm>CIhTBbFdBCGJdBHhCHi.i~i`l_j\jNWTs+D=dDB_>B]>@^> Cb?DDXd> EbY>G>a?J_J?8I^]?G[; B4U25N67OH:#>\P=:@QA:AmS_FP> W^WTeՈ#yN2+s$KrT|RFEr zt_]pEDQ:DV9;IXG\7QG?Z3BO`ANW[,DFP1Z?AK*WQ> FU@FWXAD#YBE]XBFd@HfCOe,FLU`HYc#I4VrhE3RR/gFRgGDQBkIKSnHOqC_LNv'AL:~[?Nc{`BSOtvB0OuvvBN9xBtNy4DO {BMyCMyCcNxzCMtgDMzuGc(>HfB?Jo.>KtCPyAMIy`AMJy@Lw\AMOl|DSdGXE]WF ZcB@Sc(A=Qrb@RavA;R^=MX?UIX>DUAyGZD?H^AEu\BF\kBH]4BJ`:K_EMa_kkYGOvZd{MsC~n i Y]>5uM.0.0P36"T44:S2>>V:CSWAHo_>Fg<&Gtk>Jp?>pK[n:vLn@NAqDNoANMnDpR`gGCQ^M{?bN"BMy,CMtE3N.uFkOjuzHQsfJX2p;K^jM\dLQZV>TY6h-ngr/{ޭM}@{|u6s;Otv zz3}alxQeu8s៱cu]l}CXJčP˦4SD&^nF<0V{XXmĈGrpҕpX6n|i{sbblFqs]uvlswS~`1|:|~8zȴIlj ~c{tr "t z_p{Z0qJz#HKHU7Dԕ4x/GWXŗ[sX7w!GYu EPT#Q^ ^mIq5lo _^tLRqIOkGM?h@G a@FZ?/DiWN@ODg\@E^B/Hd`@G a=F_5E^>FZ:AT27cK59J;$>L=@? QBrB~O|LJ[MdF[OevxȜqh~7x|S&rVy̛lYw5[\biDEP;9D>Vn=LHY?H\>F^=E^m=H\n;DIZw>aKgZALNWALUBLU*DLRX@*H[?C]?Bb>=Hi@LJjcB}Na1E%RZES^XCP g0ANjE\QYkDQi(AsOjEQql GP8nuDMrBLyAMI~ABNR}ANwB]NuB6NxCOs{IvR~gHQ|BYM^{=?OKByLDOxJBLz@5L{BrO+yANHzO@;M}? L{EOzYCMXxCWOx?MxALyC MyEN3zj@L{@BM }BM{%DJO{$C0N/xCMuzEN ~EM/|BMAy,BM4{AMz}@M}AOh}?M|GAyM{A MzBbMvvB.LuoBgI'cCG`AFbb=EEbAISd?kHh@Jo?Mw@^Mx@Kz@ JczCLy(BLy@M{]?[Mu|@)M|B@bKPy8A^Nw?PNEy0|!;0iJyQubTJ9I/+L#48 T5< T]4>>V;BfZ<;D_EcBIh DIMjAGkBIdsBKx@Nz?M {'?KxBLwE3Nz8ءh{~ß }ܛx_0pnFG_6pb輮DG̍ÏA xGe]qC>#8w7BȟJFvps;gsJn]fmBm̕t{-*sy 2%0b*U{Fѽ(oV)oxmxdǙwjɓ1vybݓhvb J|)fajʵez{̠}͎e㤠p?ۑo?zAPdn>0vCZʨm3{~weo8*Y)uIztQI0S~sX*b׍mfuxnL~HJό՗Çښ. m㖞zQl->joEXKg8>iW@9Fp`FLpJ$Ox(PQRQU`g,hlo(r~&nmw%YWXuHLkAGLeDIeC@GbBE^@AEc_V@E_@wF^@G_>'GI_:[E^;Ecb=EtdV?C[ ;==S07:YK7:NG;> IJ<>OCtCSL}SR"GvketЏwНX~J}]t3tVfq}V]VYcD9EyP\>WD%Y>E\Z?E\@>Fw]?FZ>>IV;4JWW?M Z?KUDc|?I=fWA,M+d[BPkc(BP;`]AO;\>LjeO9In?MsAwNo>5Ml BNl-FPoCNtBnMy"BLx{ BLjz^B=Nx@LwvCMyC%N{*EO}IqR{CkN~A&M|(BM&z~CM{B@KxBPfwt>M,yb@NF~A>N|BN~zXBNwBNvBOxCnNyBJMrx1ALu@LqwEAMzt@M{>L}@3MB{BBNP|CNO.~LDNyBMuBNy?Kz2AM{f@M7}@M=>WLyAM|xANw CLm6BIb`AEd~@Be?Dod?MFcCG]QBLlN@LbuA[MryQAL|CL&} CsLzAL8{F>Ly@NzxAMJy?pKxAMNw@NVz>Kz=?Nx2?)N(v@2NsgB*OJqfB(O=oAOmBPhF3SbREU]CzVUaCSdBRt`C8RZAO]9E]3@xFZ@6F\$@:DaBE|a!BFM^CG`]DHVlFKU@yQSRPQ^x] gyȘ߭RjE{fyQm?gF4-XK0<5S`8J>+U7@"Wt?E'`+=Cd*CeW?VDWd=DRbe@Ga|?FA_?F[>F\=DG^);A];@aX:7D:Tc3)6OM468H<>H??8P#GdEbQf[RR}po|ߦɭ}Ы+KwԄz,uÂ/h(pZax]QNa&DCT;=B\?D3a?eD\?DZ>GVFO`ANQY?aKT@JwV`AYMXXAN[@K^ @]Jc@K`[@LC^`=Nh@<)N>n@NeABNb8>L}m\>LxsAN s6ANvo$D OMoEdOsCNv&BN"xCMzCNIy=EXQyrAMpx@ZKw@kLzXBM| CNd~@ZL>~ALCL{ENzB Mw\AMsAANvnAN{@M{@[Msz}@VM1yCNyA|MMzKl];C^8?nD`[?FR\?F~aiBHobBG_CG] FfJ5ZI9KSM_NXRGSZK z1fXE~Zv~8n~˄ckm(VG{I6~.I@14SG28 U%94BW;TD[=DOeMDTdc@REQ`@,Fd@D~i}BHo1DKu$E{NXymCNvBMvB`MwGDNIxNC!NSvC~M B]vEWsJ;@PJK8Rjxrbt"y}:#x|{5V$ёёJ|kat;OT|FKm9JGZAABU>DQZ @D\>B\?E\Z>6GI[;H\V;Mb8?Q&b6AOZCGNZ?8L&[C_Q]C+R^DNPzc@RLb@K]s>K']`Mkn@NoF.Q]r=EHNnvCMxREOf{CM6zXB9LAwBiN`wAM:wPAaMw@xM z=K7{>IK{BMx|CTMM~|CuK{G NlzDMwDN[sC:OsBENrz@K{4BMzA#NzAM{pCM4z"?Lw?XMTx?LwBM~yB-Mx#DN uCORw~B]Oy=B.Od{AN}7EP}BMfz/CMyCNyzAL5zAnM|J@L8|JDOA{3E MwAMrALAm=UGd>CmaDBEbAEe-EGweDH*g;ERL+nCP(y>MzAN|A.N1zACAOr{BO}AN{CPxpBOwKBTOxBOyENy|_GvNxGSNuFMGr@J[v>Jt@6Mls2CTN6qB!NpjjDO3cRDOV\DaPiUFSnYE TcB5QkpALn?E`i?AaACaTA&FkBIIcuiBKvEVNZyOCLvCMIv@FNubENtCNtCNrCNNpB^NqEMsDGMKqJPjMpSc\HZ Sj^dRBRf\`~Eܛ.ߘ|̨қ|ͱ6z&yutPt,0m$nmnrb0vۣ,q6vltϫQ~:ٝdxƒn[8yϋ>gЬ4r JPͣ~-}uՕx?ymj–fL a[h佼KЩꀺ@;wHude)m io)0z0Mv9ɞ;q$Ft}­X~0PԐfHCG|WPVyDn9_l9$yAGڦs׵ۤ]+*EVvϚZP%zO{^B }:[d^sxJzcF}nUWёo&ɛ SݔڕцāuCvyLx~ԇ>po~JJi<;[CTE|dTKNnS3Uxtr^lcOi(por{efQ^ _|NTM_F@>R>@p_>Af@CYgADg~@Cg@|DffADhFC>ElCzEi>TE`;E[DU;A\Q69"M567hL;C;/M4>?MC'EO ONFQNza!t u$—{⠢ ~oz `eSrCHnnl>C bDEkW?EBdT?;EU/@RFY0@E)`?-F]?GSX^?N<_?3O^BN`EOn`EPO^BMb<;Ih=|LqI?bNpCPVfEPc=B[Kj ?PLq@Ner_EQu~BLx5CKc{UEN{DOMxEMw C%NxKA\Ny=KwAqMy@MzeAMztB/N0yaDN&zDNzXENzUDJNyD]OxCOz#BM||BMzBDNRvAMx@M|PAMT}T@Mz{AN9yAMxDNk|UDLa{mEMwCrNw@&Ny@M}ANhCM~CL{B*LzB?N zAMywA@N0zB%OyCO9yCNEwBNsB]Ll`AHQd>A^AB\zABe^CEhDsGsjDJq@OJt@Q[u_AOtCO&vBNxCOB|BN{iCOyD QyKAN{zg>MzCjO|jDMx/HMwEMwDOsC@O-l>BQ\i IUfGFSaJDR]gDR[DT^CS'\lDSTN@NdU$=^G` >7@c2?EdBF_BF=ZCE/X3CEo\D:H}^HGI\HNn\S8N ^=jQl[yvhF!~ū`|Œ?ysOgfpSK8h.F2D4\T3:cR6CU<H\W"66DW]9?eGgh>Gn)AKst(?J@tBM:ufAL uALMoBN@fAN*`:CO \ERXDRcFSkDNr=AH{m=C I-iBFb"C IwoA>KCvD~OwDN"xJC MxCNwE"PtH!SuyHRw9DKOs+AMp)D OgsEKu>FMu\JBRoLfSNjU_echfPOpϮCF]x:y_"zް`ye>xMu5Ku4Fo}66j5q(qܚJ3vCvt3rLhmdn*y ]G N׿]CdϬhر7~|8~{ߊusjN{Djo/SqNұ.c˫|vq3Bt|vdԚe]0-\uõom y鿟}im܇B`ZGZs;zJ=x|eGRuD'~SQs NE̱Ry똤ZxoJG鄭pVpxcՅmVYrVIi\WLLLxl@[bvd; ɗA휦^љsЁjPz#Iuސ_~#yih{IIVh@? ]FGdwP>Rm$\[Nugrkރwr$xxmxh:f|?\ZyyON`>@|VF:?d,=Ci@D7E\=.C3W<;t>R9v8@O<7L=f=ZL^?.@?PBIRc\sZ6m1e~yW Ql~Vx~n bz_OJj>Be9v?s_AD\BEW@FVs@FN]@Fa2C5H_uEIY]BIUE>KVAA@R\BRl].CQ`@/M`>K~a@NcDObJFPaB_N(bAMet@Mgh@M kjABOmE;RjHSi@Kmi=eIu?LcxANx.CN{9CKL^y>FfN%xCLXuD9NwBNz?N}m?*My@LJwnC)NyAMy@XLvDNFwbB[MbvC`NyCDN2z+C_NzB;N}dAM<~}@VM1yAENwuAkNxAN}?M>L}=RMyFDQxAlNz2CQM }CMx$EPxCqNx#BM{AQM BYMp}EM{)BlL+zBN2zBKOyAINwdC|Pw>cLuBMzw@Mmt CKkCF_7BD]xBD\BE#fCFj~CHlHE&M1sCR|t CGSszCAPnD>PasDOxBNyBBN?zCNyLDOiwuCOGz@N|\CmP~DMzND!KvCMv1COIt3AP'mCmRc)GhVf]DSXDVSXYCRYC"S_JDR](C RY;^KZ>:E"b?Dg*@E.f@E`A(E4XeCkF W^BOE\CAH6]HI[uJiK _XQQcyq̙v-@yƢSw̑up:kkysbNH7H22QC2c6M9jCYP=$I"U;uFZa>FH^m@kKp|@KKqC*Mv?4L{>LJw%AdNkAOgdDXQfbE4QVFRZFQ*jAKtAKsHRqNFNQmAKoE(Q+t`COtDwNx}BLCxYCENawDPIvGxU.yF#QwFO`xDFOwDJOvELw\FDLt;IPpNT|p[]dFijiq,vց˥~qE{{zkߝzƱz8u}ؾd]x|{>pkCmїzԒ xyϋ\tgUrڔ/&l>_g(ulmu䕥{4 h@zg6Ƚ6؊Rȼۭl~5Ety8vm{.}˪Om<xzf=my΢*qB{ɑ}SIO_-x?3tͺn."AZFHDdNOpXX3{k"p>rxΐPpu=|_df[Xw[RPbBCXL;AfX@FlCIkA{FYgA]E)e4?aChb=Ced?>Gk?Gk=qF"b AG\@bEZ>CW :D=T8 98Q<@:DM">7=LBa?Q2M|L,UpkbmvDuě~_ԋ:s]nW{Gc)VuK.HbX=kBg_>C;_oBD\AC9\@gEW]I?D^^@Ba@[B(^AC0Z?HZ;BK[>;P2]gBjR0^SCS`BN__@K`A|MdOM{_?kL|@BM|,@N+y/BvPu@M:xAnMzBfNCPiBR\FX#XREVU1CiSuSCSJTBR^O>N\`FP`!@eLf`9C`k=FA@f=Ch@EdBMFYoD=H{ZTAE\fDGh\YFYJ^HML^LR$f\yާф|ۮ xƜ]v 3x~nO{EdMH73E72M3OY6:Q7ARp?ItU>FY$@"Gc? H"mVAJ#p@Jr>?KYv?M{>M{@rNMpCQtfHhSX^GQUH1SXyEzPgBQMuAmKwHRw!GdRt_ANqDiQsB?OetE{NizC*MyfCNwACCOw|EPy|EOy/FOyGQyrEOwCALvFMVsyIQquMVPp\\cbjg@]xېtg.\^Ķ~"|^{~ߺ 5}RR{ooGx-֙`}ʘВxljsp_i8u!ʏrw?s˅qvu t]wׂհ£sŸ>VA؃Wy_[rͪ_wεӞ?N܅~VlSq{0Ǜ%׽V{0rJ|՛!uApE"xPҘ7i@6Zcɂ4ecgTČjL#pr^}]rޢaXqwDEGjC#q,E{>KYy9rFLdDE 4e IynzO{Qva*%r_{[y!{i,fv\Jzs_\z'{Pyʋ‚dޑl/+-|sjhm}mDJf6D|`>Ewj@+F\nN@OEj?\De>wCd8?+Ete=SF^h=GjrDV?CU:1@R49M5X6K?-7Q1@?%SEP|X"x vg̠FwvY*}xLjw|z~e{e~\UstF^EZf>CZ>D7XACE(YxAD_@@Ed@Dd>BDcqBD$`(AE0_5?XI.a=MSe-BSc.DUamE Wc4DP^ CNZ{@L`7AuOFfB)Q^g?BdPGiXANlBgOkt@cOKjEQoMG*Uq0GUpCNoBLp?gHr?nJw>L)|>vMz>3Nx=MzDXN}~CN%@Nk~@Nq{N>%M|yS@"Nz9?LLz@Mz@rNy@Nz1APp}NCPL}=?O|>O:{BVOyCNwEOUy^BNY{AM|CN z.?Lpx=Mx~@NvXANwNBpNyBNyBWNpy7BMxAIMsy>sKAy\C@O`yVCNkvD8OwA.N1z@ Nh|@Ly@Jz@8LR{0AMwg@;NvAMs@0Flw>B~cYBHH7gUAaG|jBaIsPB0KwbBRObzBQ|ANzE_OxCOyB$O|BNzy/C^OxC+Ow;ENjsDtNsfCNx`@K{AcMx BNwxKu@XOx>VN{[=XMqCPePH5SuXGQSHUnapHTKjAZMTu@KwxBwN,wB=OAv@Mu@N?txBNtCN|xBeLyAKky?VKxWCGMNyBM~xEPyGS{-HQ|D5NyFOtIvQqbOTnZ[bn jRR:k⪐pѥ{1lzJ } STɡ>LzηѠupçdr=%{%DyzݑՑw󠺟X ;Ǚ_zlx!Yn,ޏtiޛc^y:Q.Ł$X{~A~&p掷k vm|4ɝ!|mbXo#yC<<}GzNsu܍xdP؜uԩ; @n˗pRlS:yG2{f[O{=]>\Y(f @inJg-S9>m2:J~_: e A_iR?׉6jo>agDdK{ dOvqZ`\gk2dzglk)Y'sHzۇ߉zߖ=ڑC64UB}|kn4wHAKc >@_8EJpY\ po-!{{v$ueuff|TZ|HyNbmDDX@AU@D_wAsDfA^DhAQEad@&E^?D!_?Bc@DhAKHjj?bHc?F\mARF%W^@SETBWBEX?D\?-D^E@;B_-BC_NC6F_@`G3c<>Km,;Mo>OHi:CRe"FNTvfFZR%^COUBPvbxAPEhBJQ3iD)RgB P>hBP iA@PohCQ#lEMUpHFVpF}Rp$BLqB@QHLr>TIuu?Mx}=MRy>N|Q?M~BM'CN}BO}@N}=Mz@rNy@Mrz@/ND}bBN~u@M~?.M?KK?M?N}AO>|5BNL{C}M\z}CNzGBwLyB Lw@OMxr;MLx?Nx@+Nx@N#zAN{DNyBQMu CMz@mK }XB$NyC6PtiCfOrt?Nw@Nz>MxA@LZz+@OMy)?N%tB9RuANsB LoAIiBIJ*lCJrp7FMvDNxgE"Qz$BOzRAM{D?OM{ @DM2z@?M|F!P|dBbN z{BNzbBLygDNyaCNyBOzz?\Nw2?)N(vANscCOlCPdzCQ\_ BQDZDcS*\CRE_5@P\E_>~BJ^CF`BpEc#A-Fw]0DxIj[@=G\DGIcDH_HI;]MLl`BHPVvkXbrͻ@U$}!Ķ}F>yD]ts S2N;P02\Q7-@\V9AZ ?OEE\Z@G4\$@3HNg8BJn@ImGBMo@\Mp@kMkr&@MrAXO0mnA}OeGdR%YGQTCJNUcGRp\>Lov@Kx>Jv@OMx@IL2wB OtDQhqCuO>sBcMwAJzED0M<|DNsy?5MVyCsQ{KZrFRކGQGPazIQ_sMaSm:L\geSYQfv_zF}(xR3tޢw;|`#L{X/wyxsdfQMRsG@"@pWHh>LtJ>Nx >Mq?DAQkOC+Q_fRDQ_h@NW CsQdDNSdkBQHiCQfBObBbPdaA!P`5APZfCR[oC8SrcDPhq+B.Mq?XJjt;=&JsBCPs'?,Oq=INz>L@LBN{BN{ANK{'AOxy|CmPx?(Mw"DUO}@L~?KK@5Mz@M@M@M}ANY|ANW{NA}LynC)NyC]MxBKvzAL~wB?FMVy*?My?*NzAN'|AUM|[BMyCNxAyM,}?.KMB_N}?O?xAPw?MxBNzy@Nx=?5Ny@NPxAQuS@NsdAtN4sBNnBNxnJCL&pkCKqEE9OtC ODwHCPD~A!N~ANz{ANw??MwA}M^|FO}BO{D)R~DO~CM|mCO/zcDQ@yBvPvBOpD)QmHeUi3DTcCR_DRUe_2DSY_eCRcgA@Q\=OXj:JL`U>xI`Z=VC^KBE`AE\DGZCHWCIc\@.Gbd>CfBH _BGI6]ILt`BG_ U6PU'u\|˧^ar w_?c^P;q@02O 4=Wn:{Cl]1?EYC>^F\>Gkg?_IXo? Jm@Lqm&@LmB>sIj3?CMm>MzKxE?XLx@MKz=A}MRuDQpgEU~nC6PqBMvBLF{B*Koz"DlMLw@,Ms?ENzXEŤ(BGPD2Qs`FQxIQwLUmRmZCfNRR4sarSM~v&}Z{%pEvBx׺ޞ|C֟{w:t蕢w ˜nwv٫ew$ɚxv[|~rhly:t-Wm7 hYƏKsӘᔪyJ|!({zhxo9w say7vR⛊rW{Pzg{inoTxƕBv,P4|c{V<68kOŎ`w(L4qSp]A~jxbsOUB`@xFY#eC]ƒ7vE8kuC}kC~j]CutgF:hH|ymI]qLtgX݀j#-z`ݗ`~H:x<~΀)]C+~ÆO Κ4kˇ1@Uؔȃ yufmHQKhAkA]DJor]Oayxhvs̃{~]?egf}IMm;?]@AW?0CZ?E"a?Ec@EebBFawCGZA?FV@DW AD}\AXFbA4Gk`AFZ]BF[%ADZJADVgA|D+TA@Q8B9mPIFPW bc iؖm'~Wzrq_6mMqPxUFK:sECgc;B?$\BB_!AnA^]AD`AF]BGXA+FW@qF{^?8G"d@Ifm>LMrUA7Nr#BzMr#CNMrANtBO7y#AM@;LAMz@NvAGOw CNzbDzO}zCrQwAPwfE#P|D)O|BFPyEOx}C OvvC?PrDPm(EUai7GU_B/RVDU^GWGdDSB_CTSIZ=aOkU9L$U?sJ[@&F?`N@E)^@FYB!I[qAH1[AH^@F%d?DcEIaFH YKnL`C.Pa`YUd~rmeXjwl:Վb:Gߓ=v%`vO/7E;1Q2O5>}Z>OF`?|EYM?F\@#J3hJC Ml@BLkk?L:jF[Ka@MaBPbB8QZCPTC&P^'GQi?hNuF;Jy>"L{>Mz6?My#BO4vqERoFWum.EQ2sCKv=C;K~{_EL|NDOMw7DNPr@Lz@Lڊ@NBPEQ׉IRH{9MVnL\bNSS*mpKb?'y S|:bhx0h!~PvմF8~©%~& tvӦ뜾vs9$rCv՜w^!wxPx xlwJPuVFxQ}|p}}#t|Rv\uMzV{byyh!Mo}"ymz_v Wv]zy|&Lϭhﮦ}묙2¢"=~Y4cbq{Mnv+#hLpSTem.S]LeEJxlR%0f6S=lE laKbrH+pdF2~oh4Iy` IO}dHiqM0vMIToD{qx~=Cv02ɝ 0U𨏊 My~~{{~lx;_g(nMNPuFFGpGRlnttJםЙgiC&Ije8=k[ >%?X>Ag^?Eez?7Ff?SD&d BECV?jE_W?}E]YBF`+DGbEADg`A^B\NCDsWCD;UDDUInIVJ_~Ub_yPy;s?)|sKtjl]XktKNs/=Ce!BB?`OAA_ACi^ADZAEvZB(GF\vAEYmAF[@Ga?GeAIi"ArMu4@L_|l>fJ5vANwnSB3PzjBFRc@Q\DSfDVh DAVogCWSiAR3l>Ob?(OJZAN\ANfCPik1DPm}COVo8DsPxnG TmFRj}DPlBBLNtAsL{B4N~$>LoypA OyyANyBNzy4CNUyB NdyB6Ny=@0NVz?OmTAMlAO?Or}RBP}HBN${wCNyD@N*{qBKzC`NyCnNy4DO {BN%{AN{?M|@%No@6N}@Nz@Oz@|O{dAsN {lBNxxAPOQyAMyMx?Mu@MOsDOQs5C?Pu@L%yKAL~AKW}hBMxAOxc?N]yANyBOvw"CQtDAOuCOzYEPz.COx]DnOxPCNwhCOs@NukDQ9dEQWz@NPBPXD\ArI]AG^BGbA}FaDG`}FeIYzKN\SMR`e3TOg8 wkY>z}RHٞ z(^N]Gl/=%23R8k?YAE`?DY^>"GW?J)`@KddCNfn>&L!e;La/@KwP?0Ly>L{C=tMzL@NwmDPnRJuYfmIvUsEKuC*JKyCL{jCM&y5BbOPxAMh{@K@L6FQϊHQ2I&R#|tLWtOb^iWN]RYzkbSQWr6󠰆::~EɀO_zZRd6SurVyWTuLkr@#vU}yƠvuOyRx٦yy$Jyx}ĮL|+;x}bUȦ>|txHuդ]xMz޾}λ(~1)|;tkw˦x;xƧlz,~SȪWU/ֈD%ڴؠisĔeazrp;|FowSt\FMzaT/x[}*fuf3Xӌ>p-EkI:pO3t^MrK|UgM6sZNp WPvAdYyc\`-Th:Γoݨ+vAуƭʢl T,,׌G'nR}yoyyԓ\{3^|szac^|'NLt[ay3`}ƈQ!ǜ^g n؈G$Lzo8=X=j>aV?Ba`A FgB*GgADQc@Ca@D`?aEJ_y>F%\?F^C^@BOWA~B}XHA`DA\dBF\ CEUhg4ETdDRfQA*PeBO!dAOreBOiE=RlC$Ql1CPlDPisGTegHVygEqQZirEO|peAfLsB/MuEAM`viANv@NwAMYz&AKjyBNyBOx?VMFw@gM|>Ny@Nz8@pNxAOww?NxAOzBOxCQwCOvx0CNwCOtANPO9b->ZL_>Ll`l>L_V@Mc@+Pc=aP)_9?=RbFW,iF'U#mBOq'AMur@Mx6>LzN>N{@/OwCPpJ3\s`Sa2wOHQ&wAEqLkwBJ$zB9L_z\@MӀo]ܜbkdaɑm^DavHz˯Z}{rs{ecwݪ`ro_qwJt}ZĆېӊ3ڃDiߖz zV~ϗ}x~}1RN·QusjGe9m q{~'D8n'k4~ILj9#?W MgD+PakEQkID)QklBOGl?MojDQgNFgR fDsOgEPiDOiCBN hBLoiqCJOpANuB?N|AsL|BN{y\BO\xeANyANzzANN|BQzCP2yTCOJ{C7OziERPCNрDO|;ENP:zDQ{0BQ}@OzzDPwD_OvDOyDYO{BLN|B Og|CO|ARN/yB3OvWBNv[D N0wCMs_BMr,A&MzuALpuJBLcrCQMq@KnCL>qRBLqgB6MGsAMtCN%z;A.L|CM~}@K|ANzBQeyHANmyBPvy@}Nys@M{K@LyA N$zAwN=zBOzkAoOyBOwB^NwANMtCQjEQp[B?QQWL]9HY?L4_wBN)a-ANmg?.Oh4@Pd>`PcDSl6BOzm@MCq@bLtu`xddik ~^o }f~ǯٝ}pz:(@y /||1yPuɩt>KryҏpMlxnowu5w6]}{jsm1sˢwry֟xn塈m9rZ~Q ٚs̍Oiۋ|څ萚2awGPy1gDqnZ@nWG:pz\u8z gAA߄oLn#xb z`t7rL#}jHJtbI%tI`7Izf;L{}jPyi:Ryg~X5nt,iNz sҵǜny?s✊v | N~zwT]N W@C` ?D~dI?CFaAF]>CD\=!B0`@Ea@E_@'Frb]AGcBH`CJ_JC"Js_vDIHZGFHmXtGHI`LC _|k1SWrsh;aF w$sccpdOZ`IMD/U? DZ=DZODEZsBeBWD,EZdAC.Y+B\D\jBEC*]BC]BD^A_H[_AIaF|P?gjH$UjERnBOrA]O wJ@Lx @J:z@JuCOM|pDHR8qGZXup(FRkyHnQkEPgWBNe@^OhBOeiSEEPk'COl BO1nBAtNMoSDPmBNgBMfkEPfEQgcF,P^EN_DPOhBNnAAMs?KtTCNs/BN[u@Oa{;>N[}o@NO}BOzsEPzBGMOzMCM7{DNBcM.4CO4tCOCzQ~@P`|D_R|nDOxEiO{xEPOyXFO{DN~^CO!~@JNz.BN8xAN(v?N\uBMt CHLqBKraBLu.C5M"tBLdq@Jm/=F]hAFbFRKniB JoA~JvBLW}AL~BXNAvM ~eANg{AN {AMzANy?L~y@Ll|AM}tCMNzB[NyA:N{>LP|ZBNxBNnxCNyCPnDQaCRt[>O[>N_1@O_?O];iM[=-O=]@fRn11&Nk<=U9=XAFVAIU@L\#?KE[[PhST5cNbU}R|)qҠRz(ʈ'2;e*˅gЉMhv~鱆~yxx;|ϝ{vp4ǚcqHrWrW…p~>heqȊizPNr4Hz:mvH|sxtnEwPy尲u=*o1pƜw,w|V󠦈4vx8aeYlUyrLsN{qSv5o[oeR\mk]!By@h@}snCw{iC~yhIuQ턂w^OzriHoZEoB[Ju cQPhyCi^QJv8fuL$zYfaOO|ak4|t nQoar¡2ƘD9}Åf2O6ȁH߃/nܙ*|O|jyvwyx }A𕺓㡗#zkR8G"P54N37V@A`?Cd@AFfAXFbqBG^?hE\=A^ADaAdDaBVFcCGecDI,`~BJ]}@BJ%_D[I]GEH]zGHcPH,f\t\\(j{}򄫡ӕS|dvWtdWkahQ}_^IDgTH>,Ek\=Dm[aACOZoC9E[EpZCEW[4DFO[MCE[CGF_APHcDMf}G-RUjbHUluCQ;ocCQu@ENu-CMw_DMwC\MUsCMpDP6qETqpF UnUFQ3i9DOb.BNc@BO2iBPjBwOlANmB@NnyEO>pBNymAxLjBNiB@P>gC}OcuDNCa&EcOaCFPcFhQe#DPhANiCNjmB#Nq?N{5>M=JK}GA#L{FAP|zC/OayDO"zD`O)|DEO}dDP:WAoM%G}QFQ{\IT |oF+P:yjHPy8ENxoFOzBM{BXN{/BOH{@\Nz@AMx[@MvALIv?LcrCLMctlBL=tCLqB^Kk]A INj@Fe/EEp[FF[C^Ff@Eq@HyuD)N ~B\M|@L|AnM|CN:}AM4{\AM|c?FL{AM|CN}AMh{BM{B Ng@M|PBMviBoNw4AWM0xK@sMpB[Q keARg>Of?;PeAQ)cM?Oa_=N\=NO?\; N];CKy`k^TBG^C9HbD0H\HhLUMNR TR`5nwp<='t[BN.|U^umύnz`{qFsTRl^P74 O5w6XB8DGa?kH}[?GT@UKZX@IM[:I{W :H&XAMk\cC9OD_UALbBMPc$ALoee>Ll_@4M_rAMrBMq{KoCHR{fExaoIweOyiLvReGv hLd|Nh!œ{}ܸ1|D@vTty/[Şy3Hu:ہћ$Ň,fo\x1DÀ՘}v^|q3~Tva҅OW*Ghd}K>jL4\4PR5D9 Z>*Be7@MFf"BGVc]CG%a,AF_>ID_b=Aby@Da@EcCQHhVDsIh{CI3cCKo`CJ`HEG?adGuKbBIKc$[eOd/qlV(~q-uky`(qKIjLDx^CM@[g=C_V?E[oCDZDE3[AXEYAWE[AFZBFXAFZB.G^3DJbPEQfEIWfJYjESnE'TsF:SvwDTONuEeNsBMoq\A[LrDOtDPrdEQ=mYEPgBNfBN;i@Msi?kMiAOkANOmC$NnDNpA:L5nBM;mACOlsD&QkCMgBfLgCA NdBO_F ScEVSdB8PbQCIO#fUAM`m?Lv>fM}>L~CN~FP0{BDSPyCOxDrOzLEOy}J{1DQOrAM;xEOuBNvAMNw'ARNZr>Npn;N?j@?$Pf >PucBSfaCRO_=OZ>;)OTU>2OV,>XLZO=G^?E_@PF_A D0e@g<\eN(RoEjIq\?)ETOBrKY>)K\Z;HJVC{_z9y{y2|߬Is$ȍe0ʀ@c>zkMzck̂{Meeh2♯tÞ{|ȇUz%ئw wrć|. ve2lkÐzuHuS{]y~oXbj2~kcveWBe]D~wXȑ|kd{ge|_b̂fz-YWkJNz^eH}rlIpHZo]G΄_oMK\oFOo LiLF{cJG~]k#Mm=AgpyxdĀg^~O~a,8选o`œĈ2M猖ל"ΏoR#ӛk!愇f& łA%ru앏SygsbJs?P'58T4<_g8O>dk>D0fAGvbB$GsaAMFb@sDb@Bie@Ff@7HjBoKmpFNnHHP#ktDFMdqC7I[cCcDcDEfIL[idSfە@n߻ t]x~xXmfTMh.?K=1egE@`j@n@\v?!E{Z@EjWBC[AB~\BsF+]LAE^+@E%]BEY.CEWRBH^BOWdGFZ{iI \fHYZkFHXnGcWrYFStDPvYDNuClM/tCM;u FOSxCUOrtVCNm[DP$j?Ni>Nj@Njj8AOMkAZNlwBLnAKpfAwKgsOBMpA8NmANn)E,QnCNk3CDNGk#C%P|iCQfDIRi+GS!koEQ&ixBD[h@Evj@Eh4BEEeCC^CDmF^@Fk;CKu&EOzBN{AnMzAMyB;PRzANO0{%A9Nz+A!NywR?SMwACPxAOzo@}MbxCNyDNHwEOtumBOuE@MRv@Mu3>rNo<=Oh@P;eQ?PbAQ`BRf\q>;PU7N/Y>KY`>I]BhHcBbGd%DE5h?AevCE^uCF}XQDuI7[CH]@FJa^\JHO_nR Sg/ju8qFvjРw;]w'p{~ҝDqX}kx9l^`=T85K=V~8Dc 9)Cef>:Emf@RGfcTAEkdACWefD1G]feAG~i@Jp@K2q~DOYp`GQ$mGRfVCPL!b?F`FoHdIJiONpq`m'wv}N+ wUq,e8NBGoa9:.^BUBIZrBnEVCF|UC|E[VCPC\5ElE)_CFp\@E\?F3^AE?YC HsVC(M]FAS(fH[FiI\fI\kGH{Xq!GTqERUsC=QtC}Ou?nKsCOMtD\OvBOZwC[PrC>Qm?Oi|APk@APj=AlPl=LTn@BN\rPBMv@Lov@&Nq@Ptri?INsy@OFqEQdqoBNoAGO0mAPxl4DP:oEdOs!DNpCNnAMp@$Nsu?Mu?Mv@Mw}BnNuEPsCWNQtBMtDSQt*C]OrCjPw$D5RP|CgO}{DM|DN}lByM;}CM~zC?M }K@Mz[B9OzE>SKvzCO|BOy]AKwCZL:zALI}AM}B8KtBsGn@FmAG\lAGk.AmFfBZF^.AF-\?@ GgB?JpFPuFPwADNwiCN9w/BN[u@M-x@ANUyIANw6>rMw?NxeANtBNrCNtC\L tCL?srBINte> Krt?^LnslABQo@QgAPa@P^AQG].@PT@iPCU>`O\]=Ma=K!^?IYDgI_AvFbA&F}e-AKev@Lz BMzBN9xdCNvEmOvFeQzu FPrwYEOy,DNy5D5NpxB}M=wAMy?DIOyGSP5vGOg`=CI^@Dx[HcG^LKhY6Q_o~.oo;$|ݼ¥>hzc[hV~KAt^;P=\AUCYCEWAoEVDCaEJZBEC\XCkB(XtCEWBF-YBhH[MBwGXCHRVwDVM|_FRf*GUhHYUlG'W\r^F2RtFMRXsERsBQsaDPP`sA8MmrCM:sPD OBuA6OwAEOuADOqAP+pBPoBhP6o8D|Q>pA$NpBNjsB9NvgAMwy@ Nt=NWu{?JNx?NxAOouAOt$BNsAoNpBNsCKDwBK6wCKNrWD,MrAMsIq@yFlBGjl]AEoi@IDd@F^>iFkY?KF_AGGlC]LrGPr DMqCNsCMksALv@Mx?jNw@OKw@Mu AMr;CNrBDNqWGOqECMqPAMrAMs:@Nqj@PlDRfSEQraAQ]A.QYgAPUy@OdX@^Od`>Ld_ ? KcY)@IMUWAzFXADI^@9Fp``AF_qBkF]BF] E4H[DH&[tFJ^JN`L

3Hsg?aIe9;H!_?K`BNdAANlkuATOsB PyFO@tLp]tF*ZhuBdOsu ?Iq@LauA0MwBMxCO*xqC?OPwYDNuFP/uFPNxH'Q'|D*NyDNxCMXxWC8NyEDlPxFQtHQuGPxHPPwK,Xv]T[o]aOmuuwHxkt|ÒqS]b {=Wxsҩvq߷q3`q}1c-o}qnXaj{lڡblCȜw?ÏgSӛvdYlswax.xwftvlv! t'Q.!tKى^5n?s.eJ iVLugPDv_ZFPQ{T7q'ze!HychMz|kM%zY Oi͒v[qm@v<^?qmUJ6hrSP2|of8x]eO睥nzuuo |U=kKGxYc6HRr:\Kyy`[{dla[2~QBphg4wiup}r,؈F󚴇炓qYfݡ)׋5Qx+PWq\v `bO{A;Q76rRP;Db@>Fg?DFwi?DeqAoE_BF6_5CGbDIh'FKpDL[uDNvmBL)Y-E&MUEK)\DH_$FF^]kIF]$K2M9fVyUgpmS&|«o~aSqb7eL]U}IB]eR>]@c^:BC]BjD[%DF[C[EA]sCDj]D/EQ[ CDk[BF\5@FY:NxA>NvYCN5uD4OuBMtAfMq@ KoBmMbvAwN=zCMywEOMyCLzD My ELQvkFMyCMzBMyCMWxLDOiw@NjvC Oy0E9Nz$DMx:CMwBLguBJHo\AGygBFfAEeh?9Ca@Fa=Ffc@vGmdA7Fl@DJ;s*IPbqMDNTmfEPlrA'MqBLu@Lv@NNwW?dNtFA8NtCALbtDNsEOqlEO1nCOp@NqJ?NUq@&Po@ZPl@hO_CP`@O`?O] B!P]?O)^B/PaA/N\>L0T_>JT?^GWzBGW?F{Zm=F\c?F[@kE^B*FTaDG\kGJYZLL`_&EZR[hrotjo:u—P٣k|{Ш0y.0vYqiq_OH@3CB=U*F-F\EOI[%BaHb`N?G3eAfL_x@L[@K[BMbArMjAN3rCPwtQ!Yuoq]zu`_zhzKEN9l?KpALLwBMxBNKzCnNzCNwGQ?xMHQb{HQ~DO{C}M\zCM{/CMy8BPowRFTStG(R&sF^Qu4JGRtOKUpuRyZ.r\bQmz+{ y󐠋7}qm x?l|7^ Sgqԋz]ޓx ٟbᡦ6tDp(e}8eākaj4`5lÓutm9iѡ qI}N|o%sM|;gm.} _rݭ<{]~{vvuٛPpKŁ+Nz^$6 k1W)EfU8JhTF|vicF5%xY‡mHoe[JhhxTHKq]J}rX4fzvQwb;o=Y[:lFWHenS\T}srkֹ=BzWiΈۙ+yu R|{h0J8u`J|uIbYwu1nrQz3u|1p{ >} >-͆śڂڜՍؒާ!1ߣ J.C5F&>{uIgLzrAX9mSl<=V8AauG^2EnIFeBHj1CNJq@D:MVrE@Oj E1N\F&L8VDHYDF^FJE\{I F{X7NIP^ZgKf{|jqԐ&~Zszb]3XHdpJI qACb@*A\BC'\:DE^CEQ`B%E6]BEj[A3D\7@8D.]?|D.[AG\@L_SHR`gG7WIoH=W6raIUDs{HRUvFSnvgFR0tDP6q.BM:m E:On2FfOr2DNsmCOYv{BP{ZANY|cAHO}5AN<[AL}BNyAFNwAfM yC4NryB&OxB P{.AQN/z2BNzAUNbySBOv=CSQvANO0{}CTNq~CM}$DYN{]C\Nz(CNxDOAwANvW@nNv=MxY?N{?POxzAOyQBNxBZNwBtNvAN*w@uMugAMx@M{'AKzDLzFM~{BKjwEBMwGNzBKFyAKwICMueBuMukANy!B3Nt{fB Mz"@KNxJA=Mv5CM9tCHLkAIWcAF)_CG^{?E^?Fc?GdBG_g;@BnDSJrhDNMoNDP\pAOo.?YOn>Ozl>Nj{>L\BOB^=MF^=YN^= O6_H=*Oa=M^ABJNL\}@%LW?J[>FYeDHV?/FV>>F9\?F]IAE6`B~F.c EH]HIBUKKaYBgH;XY`'hKrS} ڃHݢ|xBxǨ(oߤlDqQ+ut]M =5E3^Ra\eEPQ?M5IuP/ys@qKoOAKvCMYxBMAy>C Lz)CLzENB{EO|EO{TDOX{C-N|CL{{CpMw&DP}vE?RuTFQrB^PoG6RrKmPOt~OXs ]`k:t+vr~>s n+ws{ׯٵ[JNi=YkD[t ^u9x"pA i@=hxVtcJ sVsAUmlo4oۓt~בJs_$mVw>`J}*kR=q sȗn4MzEDdUn9q)zIed p;Hw1^9@hdTSDvb RBTiTAqW>NzeMyTh4RmjWvJ;`OD4iT_DZq[?yaSF|sc{Muf\Uيy9 ߽x_ߝ5.ZOV bnOcuLU[mmUKzyLtYz΍ 4E?ƘڄBlSKk`sGfSjFmXqGQXu5GTuuFtT uDKT%tWDRs[CPq@MoCYNipE#OgpDOnKw4BNGyOC}PyRBNz BBN@{@NVz@iM?zALwCNx_DN{}C NvCM|)CM4zhBN{@NzzBGNxBNkwHANmy@(N}AN~?L7||@jNzA=NyBMXy0BMw?N8x AN;zh@Nz?M{?Mz^BLz@kJwBMw EpNymDKUyBLw@B4Nxu@BN\rAAMu>rK2xkAxM yB8Mrx?tLw>Mvb@~MpBM\i-@J_A HXb@FVs<*E_:G:e>@H/Ml$@+Nl@NlBOnAwN[p@Nr@NfsAN@sAAOqCPpTBOGnBpPn?OqiBPgAPeGA$Occ?LY@NY?WO^;#N_`9JG[AM[?GK\=P4=B X=E?`>$EdV@iCIhBDWg"CdG`V@2G^d?NHg?9JnB?MvA(MvB(Moq/DZMfODKL\ECIYMFF(^IH2cGNJmaQM9eT]#VjT ~x,zcufZ~URIGS>RKdKbK4dPAB\CiCZA#C![BME^o@(D__BE^BSEwYCFVAJFVW@FQY@G]?'M}bHWjFRYoFXavHF8UxETNvDU[tD>W1vCRwAOvAwMqrE?OmFmQniCP`n\GP uCNwA[MbwiBoNwnB N"xA0MwRBMxeCN!yAN|B#OzKCNzBL3xaCZOxKA\Ny?@MyH>Kxk=LyCN|EMyALMu@O rC%PqA'MqAkMSuPBuMwpALgw@L v@N>sRAOkCOgANeCK-_(BIYH:]Hcb:IkM?2J^jCNl?oKpALotzAMq>L9q>Mr>M(r@M7q BMqBvN4rEBPZr*BdPpA{O nA}Pm~@Qj.A:RDi@PgAPe?BAP`~BP%bBOXb?M[>M[X75K\=jNdKYaN@fa1MrDcM>|'kHxPh{Js@eJm]Gg*UCDgWHg]|Ks3jKE$tVcq}kГsx"Ov7xТj|ؤ{z'%W|0t6ޑp[~ȩ2{v;ąr+ak˜r"eמ$٢]ԤAD4LIÐ䋂VpCהݮ́ Z2Y~T:=W>sAwT=\C#_7>:DdAEdBDedBfDdBFcCHd@Hf@JUmeEOvE]PyD+NsBRKf\FrKW[F HgVGEZHWF _PMKaRLgGdP]nL|O3zmect`9PI6\OKfRG)I`\=NBxW @DjW9BEWKBCF+X&ArE[AqE\CEY7DCFyVAFV??GY@_I ^@ENbJ Y;h0GFXjGaWqFU vF?URsFTVrFWtCR|t'ASPt=L_oB*O>n$DOmVDOkEOn9DOuC|NnxCcNxIB\MqxC~M[yBLvEODw!C>NuYDNuENt+DNt@Ou BPOwDrOu9D2OttC1OtuBtN zB,N{CNIyUF/OJyOE]Ny\CM}CNAB,N{COK{rC}N}CMV}BN(|ANnyjBxOw@NuJ@Ox?5OyM@|@M;~AM%z?MvAPOeu?MrKCNsCNtALv ?Jw,@K[u\=0J_o>qLiC4NAhoB7LhCKgAK.c:Lfn(?nK qALq @Lr;Lv>L;x@Lv+DNbw)ANu4@:Pq)C4RmB_Q?j,@Pi=PfABSYeC6S*c~AOa>Ma@7Od8AOGe6@Oc9@oNc==:Mah^EXA[LA`ERNgBaL:kErNpEKy=PB|FewLR3rIL$yD?|L z@KyCMzENxG:OvuCLuBMyDNE|DMzsBLzqAlL+{ECMyDOxFJQwIVteITpFPpJCFNjqGVPXt&KSt@MXsL[tdWLc{ou=gb(wcAΓ&jrKJQ6h<fGqPyrJXtQ)r&WXw+cooWymSl{t_atw=n\Os`N`bCБtIJGk#vח/Rn-ygy|3t@e{xr`*zubumlbsaN]vcVH{]moLynYNveNveTEzk$`ǀta^uXrQ9v\QD9p*Lrw_GKi XHK\kpZNi~TDvLhoAG {}l/GviGAscbG6ocbIgdLsknQkN@ҹA]ʗlJPt붶q Wrd1y٢otv *net"`џyBĬl~İʎh ۨw{gU@:Dbܓ˓QÚ {>&"x%{trK L~qL45:W==BNVz=Da@E7jCgFfUE,Ga`DrF:aBCGeA{H;iVAJ#p\CoMpvGPQWwG~OoFKGhvFH]HI\vIJ]KM[QQ!Xa-[shwMvgtd놕~bXjPJiMfJfE#G^c?C{Z@.D[AFXBFEW?Dv[@UD]CEX]3C)F[BG[@@Il_BL+fGRfKX0g&I!XjRHVpGFVs$H%VqI7WqF+VqEAWMrDUq??7OqAOpXF9PpEJOmYALkAL.s)BBNDuSAoMu$BMy CLx7DMuENuCOfsDOpDPrfDOu8CPvCPHvC2NDtDNvzDN{wEP0vDOrCNsC#OwC|Nz C0N?zsCCN>y]CPN yBM#yBMyCMfywDNx^B=NxCyN]|2CM'BrM}ANySBOMwOBuPw"ANjx_ANw<[NLwz@ENy@LyCOxt?Nuw@!Ov.DQwTDPuBNtAM.v@5MUwGAL vALs?lKo?IYmALilRBLjNALi>Nm ?"Oar"@M{l5COhBOoAMsBM{sBMw?MHxwB=NvFPwxC*MtBQq.DSk~CRjBQqiM@cPgA@iPe"?GN3bB@xN"h>Nhl@HOhQAxOOhX>M1h9@LKgZ?ONAf.>0Nf?M>ih?Li5CNh>TJf>@LcZ8IHZ:I[(;YI\/7)D,^]BfGFb\?DX@7F?`AEc1CFBavE H`FI` L!LbO$OcmT|UYˏ{VЏ]80zWD<Ѐlg@)zPRy%,ygGOJS?C3EWF6wWBA=iQ39(N 3^9S7:V8>V9@?Ij[ZE{OOj~B`NocAMqAJwCL4uj@KNxBLzCdMy1D5M^zeBOKnzC~M[yEEOvwFDRt8HV#sITnGPn?EOriGcQUv(I4RxK}UvQ\tc^donlt_)Qe2gS{OiNBvQ6K{\LĀblI]}ZZ䂰cbzd}rqTbvPiuXyco_{sf)|5ocN~hFHQ:\ͩ?ruĝ}7ru`z-o\9yoZ2yoG_voij[xfOxe6JA|l?OylPv;hL*tcWMxhhf^M|q]D4uUWpQAxStM(}}j~JugMurhRlYG;yY |uF}jS?wjFvjDMq~eJl?fHriEmsMPz꺶-aۯ+]PfhFVkWBgU{eI()^ge;[ĩN|Q ϻƶ0nCW@4WThǐ΢WZ፲Oj:ЏtͯD+p>`k{C? X_6T:W<5B5Yz=fFbsAGWiCFgBEbBEFbAkFVeCTHhCuJoGAJ]u>ALwEAvNYqrE5OtrENpBNoBOarDRsCPjsB Nv:BLLwwCMUwCN:x@Osw@P+vAO&xBO1{C:Ox F PvHAP5vaFP+xBO]xADgQt)D QngDPrC$Oy\CN}KCNyCfN,v}C OvvBDPwQCO[wCNvCNvB6NvYCNxDNezD~OyCOhwBOv?BOxiALYxTAL$x"CPyDBNmxDM0wYDNuuDCPu~BO=t~FRuCPqE;P t%?OLs"AyNuu~AMtALasA%Map;IqI@BM,r@;MmB6Np@MDt@'NtAwNo=CPoFAO;u5AkNyCNzA;Ll>?NIp?ePr=Np?Mm1>Nn=MrI>N t6>Mr?2M]t=Llt@Mr?VMlD? Mdq:J(]<K_&=Ki`:G^N> G^BFl^?B)_-AE cBFdCGeFIa@LMZSQVdIa|OxZҌx)t?|0 ɅʛI2tA 5qzeRxGu}TNl>6SV=:L4;Lx4";S:i=T)=AP?GgXCqNhAMlpBLbrCKv@YH wcC$LxfAtKOw?MvA|NrCM.sCZMMxCMz1C MvFA1Mu @Lqx@J{BL{BL7zBL7zDMxCM.tJFRsAG'Ts2I?UqGQ@qGPtLD&NxGR|KTzUb\4tY`mlg^~qIٚIu[Vkou#gv Ok!yTHT"lFU|W䖅Dk-hmЁ'wxkzkbe{lZyu]Kw]uT.ډió@y/{YߖssUzhJWo.Q1toX~lVցIkNw}hGHwbIWp\HpZNDpZFr]MPvIeO|jM&l%OuUpL~Ik$J\zgwIwe;K oZ E=[~Qc%~Nsn@I~[j @1y4gHNrlcHem`aC2t a=ulFŽddy2!-ЏBv No{E|bG8hQvYh_ΕbmttH5G_iD٪ם|ޥRiފƋ֎`/& ɌIcMW!ӑ2lX5c=s7O7L;V;@_=Fg-?GDjAgGkJB`Fh@E3eEAF`eBHjCK_q BL>uCJOtfENDmG)La}GI%UIH+UJJYN?NvdaYXlPnxBzg`7rsAl\IJbLHg[E3C|`A?jB^\AwDz[DE[DD[DEZCF[6CG#_/BE`A-E'a(AGbCM(lITt{I=WqKt\vo,I&X1mJYnLKC[qGSo(HTnGLSYmPG'SjqGRsEPvqjDOpDNr BL$r?,Nsq8B^QqE~Sq$DqQpBNsC?NtCNCvD@$Nx?FN|JyM~AM)BvL|D9NwHF{PuEPQ|w&BOvAPsgDStCPvA&M|ZANM}4BNGy@MtBNtkAOsCQuBOw{ANwCGOvVD|OvD PtWE!QrCO s6COuvCNx,DNymENy\BMJxBM|wEuMuHOuDO[u!F"QuEDPtEyP|tC*Ou^A*Nu(AN@t@ NraCOrBYNn>&Mpm@Mt@MsA)O4v'ANxDPzBO>u&CQuA%P2xBO|?C O~ BNzcBOjyBPvyOC)OvnFPu#EP{tD!Qr|DPq\BIPjp BPNr?Nu?HMyvAMyZ=Nu~?Pmx;JbwArNx==MwKqx?M|=Md{@Ou'CPhj?M)c:JI_>Ja5>xJ]>HZ4@F^oAC^BD`BFkfBGdFIIP^rIK`MOc]Lh/|qnt١ʨ.ۇn /14q|ݴXۡt9|~%|:lNNY)C@M39< M>4Jl{uBoM{BMzC MyEMxCOMvEPuGITut0IcVrGRqGP;t/EqMwFQO}ISzP[t^`inmEhVcіuR̥ {t~XbL[KGn@v=N [rdoΆ6w;xhr{TO{oeG~oGQt Uؑ=gt(sjgcoO|eDMlF8rUdnQ˄iMJ{^Bp`U_GcNCg+OAovUGs[Nr\Ns8]IEz bElLnZI~jFw^`/Bu[_ EwcWG~inFΈu!H}u@!`n;{Fh#Bq`DPhVY>(i W8y\;GIlJx]Ɯ[ѩL lj}VL2`(=pS>jsU|Eyi_G{gKpV]~j!7Qk09˅-ב^UF}qS~jy&ko u2ƌM#8; Ջވ.WF8>]:D.f?Ily?lG7k@hFzhA]G fBLHdedCIjDLp C7MR}hDP{^DQwDlTwIER#zEPb{FQ3}/FR,|DPzDPQyPF/PLuH=QtODPtD~PuANueAJOxY?N{p@N{?My3?Mi|&>GNx?O=w>>L{=K|>LN{P@NL|@Nq{@MJz)AMoxs@M~z1>RM>M|BANOoDMfI[x>IoWe?iHw^AD{`)ATAq_ACaCG4`FI][wIJ\LPuNb/[Jhm\f rUVgN(ŏևwQ €z\oVx[Ή|zLC%O63K118M5,?Q96>RCMhzbBLymDeMxCKxmDMCzDOuwFfSt:JXsFQqfGcQEtGNsdGQ0w}ITxvRT\t]faphgvbatcx:z^b폅xOeCΊh7m(Cku9M~aHw͌CxŒy_ـ,iC(|#aB|eKqY_'X |`zjSO7zaB iVBaKm5LJwi9M~DfpJ3wUAqiJOFZqHE]XIAujQG)st[FQp[SnXJnAUAxaCI }kG{g5E{x)aC\v_E\{agHIgsc^G wdBa]u@G xDK}$fAn?]=Kj[0> p/[:}dJ6x_FA7vξCOJ!ɠWP_r71w5[?u\Bq/[E]u-b8Oht+c>Tu{dk]rPewiag*_FaNt4ifzn~i߆|2|TPבEˈ=uU25SȄƠJ2o{xK__PUC8Q7::T:?/Z<@^0=De?GNkqAH-j@dFg@GfvCLJ%idDILmBCKp!D{MnxBL9kBKcEJ[FF/GYHE[$MK!a(TQ%ek>d8e#i/Pݍ,MPyf/mk>'GI_DD^DDB\sCEV_dCD\.DEPXSCDV C(E Z=BF[ AF@^4AE_+CG_eDvLfE7PoIWr JZoEVnG#XhoIYPm*GUJkRFRtmEQ2k{AN2f)EHPkFIV?w.K?]H}M[zLDxMn:BKo|?M6s@OsCRpDQ[nEOIpvFDPorFQgqDOoMCMs#ALYvCMWx\BMJxCMxDNwCMvB`Mw*B0Oy@NzA2NdzbBEOxBgOyBtN zCOxD\Q9vBNxCN:xjCOxBMYyiEMhx/EGN~xpBNxBO'wCOfvCOwdBcNv DPsBNuDNw1DLOu/C{N_v\C^NvDFN`vDGNyB!N|A^MwC$Nv@LvCOvCNNsCbNqBgN\oCOoPDnQrpCQrCQxBQ ~DQ'~DPyF>TwlFWzER|FXQyECQyFRu{EQ^zEPxHfPCwlEhO\uDPVvWBOvfDOzBN}@TNS~ AN;z A{Nw;A+Nz? MyA6Ow?Lzc>GL"~@N|@OFz}@NxD@NmzBNxCNwr@Moy/AMO?$L/rELhs> I`H=EH`{>I[>YJKXg=H?\@SGb_IAaDr^DFh^uDG[XFHY IhI:[MmHaSGgMU`QaύH,&/"uѦrR!dqFeX}w| |VqSDL5h/Jx2Z7YOx2%<}R6Y@2TUUs+EPPN~r?Owq?OlC:P`lCO#pGD\PqEG[Rn]D6Ok/CmNp@HMks,B[NtBOXs!COssANv`AMJy@FLyAL)zGAM*|@N|?Ny@iP0x@OPy@{M>zBhNaxAKBW>HUWBYG](CEX=DFX?E8G[GsI`]KH]QF1[OI%Wrz]oBvhCu.ʚϰljꩰqspKbTڮ=~A>d{{Tj}n[JP6,K66Q4~:)S 62P=tqGPt6JWrPY^o2V^6qNnjeJmF|U}8vƐ!}K:JIb+{sG-Cdl|dc}w/f/2{%|gn}^Emu)S6vZA/yaB}gAiFjKs[JANnbT7w_)B0}lL`}gHzIaaCjP:w`M4?WK< ZM>]NQAaOGd9QyIePH]@LCdPdEh)SBm"XE q \GwjbJydJ zk4M r3TC {WbsIu8^\:kX9k [*AVp_HBv~QmGzz]:bbgpw뙠q?~j?vYm7i r"u`ob%OZbSNUZM{L[QMNc_]jq)|#yG:~ÏNχ5뉹告Jg!Gq|]{؏d=cq5ItA/L8M4 JV7>C.a.B_E7e8DEgVDFg0CFg"DI#kELMpCM|mEiPhPDTObfCGKbD,H^pD C_GD1cNMme hcǰ&vīVxuw.'sʀcOOV64@;W?aAba:E Fe'CCw^CFZbAEvW?DnY,?dD[s@E^?E_*@F]1DI^H0Qf(HUlGVroHYnEXMkF8ZmEVnE:XpyFVnPGBRndEoPp^EQ&r[H[X3t!Q`tcI Xm_AsOl@COr?;OrAiPCr@NoANep@N%rBVOrtBO"qBNm:AMqk@SNhuwAO uAPgnCRoCQ4u`BSOtv`BSOtvBO&wKCNyByM){AjM?yA4Oy@WNx#C(P@xBO7yALyC}M\zFD_P;{?ENzzAMzBNyBtN zANzAO,zANZ|bBMk|?B>N {ANL{k?LwB"NxuBMuR@M{y@=Nz`@L]{@@L|AMyBNx@\NvA#P"v?N1sCOqCOp ENsDNvTCNIy~BxNM{AN{DOzCNw[EPxDvOJzA LzFPy|DPyANnyXB$NyC,O.yDOtDO}rC`OvkANjx>4MWz@XNz!?MayTAN7x)BbOdt@BTOtAN^NzARx?P|w@@NExV@gM w=ILHw_?}L;r=IIf_jr{Jd8}KlҖ!sq􏖂nmc]ENA^M%G`xQ?HeRJnZwKpx[HfdQAMfRCAs~^Iv'^Iuxdm?vHVzyGzdK?OfR;}YL=;Yg^TBqnR5 wtX{{͞q`_wWvD{wl3`ŋz67~2yc|^H`umxTbk]bLaVXO]WU=``Ya8fSilw&~Un朼3\1Лftʖ}JM{vU6YLoD@O54M68;BY?NE_%CH^JBFa5BFf CeGizDJmEYMuD9NuwBDNxl}AMcAJYDEZ?ECcF`DhMHMie&a0mgy6~Hz/u|eNH@U#6zCa@DaBD`[D0FIVACUA+EZA@E]a>D_?FE`>G{]JBK"aEGRBl)HeXqpGVrFUpo7FT~m9DSYlrBRKmmDTMp$E#Sp[HRs EPGtB"Ps?NoBNjpEOg@N_l>wM[s?Nu@8Nu@M)uATNht~@NtANtAMsAMsN@Lbu;.JwD>,N[w{APnDRFmCCP8t0BVOvBNjwdBNkwBMwCMZyB NdyAOxBO%wC R vCPJwAMWw~BLx@MMzAENu|AN{>BMZzH?hKx=&LJxt?Mx@6Mey @MWyA{Nqz@uM{@fM zBzN_w/C{N_vA_Nv4BNGy @L{IAYMtAM{TBN;yj?jMTxAzOx@=OgwANvAMQsDMlrBNwA5LzBN|=L{{BNzCNxfD!Ox9D>O,xCNwwClMLxIAHMcxQBNxKA\Ny`BNh|-CjOvC]OsBNvB>&Mw@NPw@MDtANwICOyAN8xANlxAEN}1AWK=MBL:AM|@Mz@}NyAPwg>OtrAO>vCcNu2?MtL;Ji;=I]V9HW<.KOZ;J\>N> R#9CR:VEUfBL \_DZP#hC2PlDoOmBMqUFNtBCSN-w @L?Lj|@NvCQ1xG(RHxF2PwA`Nx1BeN=zAMyAON {?MyBNy?KyC`NyD]NxFP w*H3T vHRSwBHRwHR%yHMwKU9tRZoFW7]pYf,hl~lҔqxn]{{sy'u r8kC]kr{r du٘khtS{XBh%M8Pa'M=fQCn]JzkN|&_ucz[xPeEHr&W"Aq}VAw`Exv)`yHjcO=@YgI>gYH >8aVNCbPAazPd@lbPEd0SICshVHxvaJ{coIp0WBfQ>7mVlDnTBlv^X5pA53cV MjOAeQF_?H[BIK[CkPMfpF[WpxGXtGIVsfEQoDRnC,TnDU{qE]StGQRwvDPsDPirA$O1nAcNmj@gMsjP?Mo@#Ot@@|NvoANxDMP*yC.Qv)BbOdthBNtA,NvAfNRwALJw@K)y"CN|y?CNq}DOoQCtO>tAO>v >MwdACNSx CMvDNxB(NxAO$w4@:Pq]D StprDQUqDPt'C9Ow@M]|?oLa}AENt{CNWzCNGxAqNvATNSx!AmNw@OvOAYOwj@$MfzAHN{"COxEsP6xNEOvBNNux?Lz @M.~@M{@My@N{=`Mx\@ N8w>1LvANvBO>uAMx3A"MC{lBFN|)?L{@LzCMfyDNxCNwoCNvBN1yAwN=zANx@M;y>WLySB~Nw@Mt@Mlw?Mv?TNr?6NrANwASN@{BN}}@*N|OAM~@K(CcOuBN|`@JyDvNyD[Q)tCkRsANfrB@LunWBNm>kLd9I8X9}IWM=tK[F8` DF]BcA#^-EE`FH`L3Ka;OLbMGkepW`qֆ `tIrS1B>}ʛ|ݬGx=ːxb6~m[Q5B0G5M3N5m; U';DVE]OZ\BO]gBqOIoCMnBLpC0Ns~CN vXAM|~@N|r?2NzyANzCNcxE1OPuBNv>RLwBBOx4DPy@MHyZAFMAz?iKy C!NszCMZyDOx/FQBzFRz|FR{GQ{ IkQwKUqO[WoT^p0fim|b~ndxcRA]rWaH)qqKg`p=I{f$GxbFttYg?v'^:D]u8`Hnw\GdjTEhQFmeLF&_NCaeNRB4g%S@hU?=q=`E|cPGrixIZ~efGwaE@t-]@CsXC|^o6oGAWћqD\Ć(nhGi/T=VL!=VJ>oYBDpH͔WE^ǔv3_qVqYlMC~gK#ufpvmsEcEU6l/^O]i` Qdq\QUb{WRZSdQ^[]y_wz>Xʓc{\ҧ A렝Y7ql9q}t;HLpJFAZL;7U :d;Z??3DQci?E,fn?~Ee@Fa?$Ga>Ff?(Gil BJzqCNvpBOLvdCO"oQDMdD1J[7EF [#HXIbb[I[KaJLaTX^,yZk9 uѧ }wb{@e%QLW7&=ZW0ACnWXBF(WA&FWBFVApFWBFYAGZAI"\[@H%[>2GU@I[SVCMXhFRhHwU)rEQubFRt:FRnE7UWn4EU{q'FS[tGMR4tFQpEQupDO.nCOmA5O0nB&PoCQQoBbO|o$B O~rB5OtBWOuXCNuC N!w_Ley?AMxCAMyAN{gAMx?KwRAMv[BN\v >JuANxw@ Nyx@Mx&@Max4CwO]x?Lw@L'zrAMvC8OqTAN[sBNO.zGEQS|BPG|%AN|BN}BN|AN{qFP#{DLyALvDPqkBPmBNkBgMg7D=O/gzA_N_=LX9uJY5rHcu9kJOe;VGcV?D^DEZME^E[_8DFcGH|`KpM@cMOe\OfqY o𡮊Ƅf!c/?Bkf*;F¯y:kn_gfy@1raXbSP00LP16U;EcVD NYBN`CNjE\N:mBLoCuMrDM#vJ@K{o@L}?/M{C\P~-BM{,CLw^CxN+v@$NwBqOwFxQvEPCyB!N|NA K{B?M{BLhygDOyDFQzFT|FRzGRRzIT2w)KUq:N;\2qnW}_;ndgg4}~'n<\xt5w,l'q=;swҩ{vlj}wҖ2qJ匕cac= qɞtK'j@}to@\n[HtoZmDGjT"Aau^pEkF-&nEhuGlnhJhFyaEv b2Fve8HziK1yeNnU,IcPCmFY.Fo]DpV` E.{j5JpjiGq.ovI%pH݅n F~c#T$>gWCzvdRG~lG~sIS|WGCtM"vXu;{`DmJ猵qJ$k~j67~wt`icj*^Qh_rQbY:SZPPTKUH[QNTii]e}ysyqPJu;D (q:D閇`ٙ%j}nGLIlAHFLZ@?V<=;ZAFa`&CIaB GCcDsGaMCH`?H`hl@JoB6LrCPO+xE@+OhxAOsALg5DIA[BlF9VF%KK^II*K aJyOnbMY_yt^xnײ{qemrkRJCnT6;B[AHCQ[CdFXBJGV6CHWx@FW@3ET\n?E]?8I2\?FGV>GUYCIETEiKUGvPdG8QnbFSPJt^EOmHwQjEQYgTEQm$GeQ[pJ|PoGrQl}E'Q4nCOnD"PmD1Q&nEStnD-QlBOhANkh?MPo?LFsALw?Jx?LvA6OsDOtCLNv@Lv@MvCMWxE{NizAvLx@Lx?KrBBMrCMx@MKz{?JNxn@Ny?Nz?NxnBOvAOw@NyS@M{@Nzw@ Nyx@\NvAN`x]B2NSw~AMt?nNv8AfOw@?N!yAdN.yBuNvECPrF]QpBJOszAeN?{&@XMR}@M>K~B%NzBMKxCMxNA}Ly.A2M"wA0NDv"ALv@LvBMtmBNu@{OwAUP!v=gLu>K=wDMP*y@L>w*BM}xAM;xAMNwAOw BODx@L'z@Kc|DM{DlN_tKBKtqDBN)vCpRwN@cPv>MyT?M{CP{?,N7wCN{xCMwBMltCOn@%OfCPeA:OdCOdA\NZ?}MFW:KJZ:J_K;Kvd:J[ba;Jgb7nIf9BIg!CGx^DsEZ]DD ]DhG_G&Js]qJMhaMoMg^Rfhn`n3ڤIbBP@4yBϸ`pʴʓ |DhUmQ~PZ=~~vnwo7_;=I07FPJNxBNjwFOstFPtwDN3zBJcz,C Mz|CMx]DnOx EPxFuTx4FnTwFSwIVvJVrNZrZ^nK`ja~o^|g~nr3nꠕvW^Lua{N3RΒ{r%ddnNz*wEd/l3OoU^ArU@#g#G݉pgJsoI!lvE^ gFt[FDs=^gFvb'BpJɄs4UygJYmVBGpZGsa+LueMoNTNpKp]HUqIEvq4Bl AiEh~V|(wErqB&P]蝰q` xK>thJDqni=G;z^nN*~mPjI=EhE{cGAxqzYTCmISHNoXELNQ_zKvO`KQ{]0k n[ȓHvo騿{|cbWF?S6<\={A^BE\CZGXCGWBF7[@oDj_\?C`J@Fk]?FZ A-HZAB4IZLCJ\CKd*CLFjXBTLlCMhEKNbCL#^_AMgFOmHMl3GM mD1OMm_B&O2mCOk&EPlSFSmF%R.noCN4mANo@TM,q@MsAMmw?Mw@OtI@OpC}PrA!Nxvz@1M#x@My,@L&z?B]L^z%AJy|BfMuB+NpaBLrAKwA1NTxAOv>-N[v>NyN;Lx%AMkvkBMtBM#yAM{?MF}@M|@ZNxOAYOwCANjuAMtRAM{x@N {@N}{@NlyuAO4wBOsCEPrJB`O@vAOyM?M%z?M{M?M%zAMGw.A2M"wALhx@Kw@Lv@L.uALs:BdLrYB LrA8L%tA!OvA>Pu@M)u=CKwAMMzU@KxBnMqx@LxAMw%AMkvANwR@Lx9FN|E9N{DMuDM9qCQsOu?Nx@~N{A[OxVAON(rA^Mq@ Lp@Kn5?Ll?NiAOoj:>MiANiB_N(b?LV=LV:FK _lv~˝@auMHꉡs䧩VfnUQK9?_McBGOQhbDPo!BMpAKrALvȚmQ8puzXvZ|CmRR>_pE{jIqEԂJf&=tX?gO@.iR@zuaBoG!x?R}"iEnT=*iQElYeNsH^#N}jaQv;p$P6m;HSnWD&l?jkB!hE+r8Le|eBYz^F?ꎡvWPp\)h}G]mx]Fv l@V`vj[{n[]ziL|jHnMz*z2ZZy&kfԖYj.ni?o-&pޅn,y}R^lrcnXrnikrqu}|B3L3wMJ$u ǓkAv;?dlji)HM&f.FFX>I?SB?(AU%DF\BRF`oBF4dBG"dAHd@HkAKuBnMy2BuMy(A Mv"BMyqCM kDOKZCIQHOTMZi]Whia`\m0P*Q7]1ZV\X}m֙3砿{waR^E/ATw6=Z> CaB/E]CEW[CxF9]BF_AEaAD|b @D^?EU_>eD_=C[]@HFa=Fc[?WHwcS?YFh]B?FY@:DZ?Fc?G=iQD,HjDEIkDLl@K jBL3h@IeCNkBMl BKhoA|Lt@L w@;Mu@MtAQOs4AP pBVQeqCOLuALMx?L6{{AM}?uLyA]L@xA]L@w@MtBNq~AxMs @LnvqAMt@Nq>N~r?=5OnvZ?'Pw@=NwCFNpxCM|AM}?L?LV~A Ox@OnuBO|ujBMyv?CLz< L};L}@!O{CA'Oy(AOwANy@LyBN6w{@N@uj>NNZv@O~w?Nu@NNwAOw@Lta>Jfs?LUun@LatpBL sDMMquBeLw;BNy!AmNwOth@NOfwX@Ny7<L yMBN7wCcNsvBMcpCMo@\Mp?XMktj?MPv@2Nxw?Mv?Mr-AMDgLAM[afLZn=ec!7*8Da-pI3~x7Y%|[LJְ"}ދyk0xNÌw]M˚avsk6]PFqCH7@NP9H]8Kxe{A3O%l'BOqCOt|AjKs[A&L3wUAK)xEBLhyBnMyBFM@yVBMx!CNMuFN^qtDNrBrMw4BzLwBMzwC[Nv1DmM]BE^GD9Fn[EF\ EvF_5CE^BCp]@DAl^?lC`A>Fqf ;DDc@E\AFY@C_@C_BG\CEWCCZCCl^kAjD?bTA2EeA9DduEiIgeD~IzhUAFd(DGa>BxE9` AFe @FOiAIpBLx@(MyAMvB8NtBOrVCPoCOrCM{vDNz?ZK{]@dL|@OMxAeMtBbMq"BMyqA"NrAGNsANKsuAOq@?OqU>%Psr<%OsN@ON#{DRfvUAPrAOsi@xNrBOxH?M{?]N}AN6}@NzkAoOyFALhz]DM#}A_NvA~Os >Ms= Nv;Kv?Mv!@Mt^@Mr?HL;s(=Kt@WMFueAfLsBLguDVLyDKMzBMwA(MvAL}vkBNsKCP^sAsMw@1Ly@}LzA1NTxAN8xr@Mxv@L'z@,MybB[MbvWBM+sANuGA,Nw@4Lx`@ M{H?iMB|AUNbyAWM0wBMzvO@Mu@Nxn@O|>MP}@MM}=1JDz@Mu?Mg>KY<KT=LlZ_8YI\<=K^[>LW?'NUAP|V/CPVDRLaUm?E SCGF6ZDE[vGTGUXI"HG]KI`SG-]q\H]U~apP"Y 3ŮPU͢lLK?yjq'wEv[XzI_MsyEqnO9=pԓr_p3OgM)S#5h?P7Fr]ZLLfz@ZN|FBMxFNt EOqGRq\G!TWq%EP5pBGQsVE;Q]t-F%S|u HTyI(WuL>[sSbxt|_hg}p{phU=wXGk|X,f g,]Jaj`h+u*[|VRwEݬR}kmxؔh{ n`^B{^sv\>|bׁv_lucOPpWL%s[3D]tbDrcIrd'K|poQO}n}Ixf8D}jGAvH PjSu)sң@meqO'q}]ugM>c[[Pa_\QlgXe<|ycB|*Ϩ OTœ!ȧu˝qdlHRpGoNg?"F2^>D\fA`GbsCGbzBSFbXC.GdCHHgBVJn&EVN;vNEOvD PsyB7OrBLr%D K%mCG5`DgEUwBBfVFD`zK7H7cHdI5\OOeUsEn^8nw]sj^`A:X6j;]@.C]DFYCHFVCFY9BEV{CDvX`BzA%\K@BN^C=F2cx>GeD@G4^CGZCD>^BB\#CE?ZUCE>\CCw`DYEbAE[a1BFbBDaUCF bAN wA+ODx6AOvTAP`v?ZMdz\@UM}@M'|?OjyCRtyAP9sAO&u@\NvmBOuSAiNw@NzAN{1@|NzHBPy BN:yAMzSAiNw@eNgt>>L8r*AMv=JySBL6z?Ju@KesA@Ls%?OLsA|LrABKQpAJq@:H%ttCJvBL$vCVOv7BNwmANtBOuBMIxC~Ml{-?JLB{G?3N{>N+z >MJz?L}~3?MG~o@}MbxA%Nv?Kw?2Kw*BM}xCMO|?L~AN|ANxBNx@NzY?JN|a?N|^@P{|o@NyG?Lu@Np@O`b?(MY:J/V`=LN\;+Ku\DUPLaw:?L8}>6K}ALgyDBOOu@YO;pVDQnEE/RnEfQp(FQskGSwpF/SvHTwJY.t LZp3XP`p-\^jmurq)a>ќx:vTge5}`b |Zw=sH}ٳ%[ys{صܟ!x WeO1~{Sv_}ZǃrOdp=M|{hIr\~KpWK|GeO8ydJsZ}LrXE}#d M}AdInGR.G8]NF;^H~?wYF>fN+Bz]E 4hEijFfBdCcCA}^.'owrʁoCQhQB^KgAlU-Faz]iK6yg}J.saGv8gFxUiEsbeAwjfECrVM|~Sbϲƕqӓ(t tyo͛&nkنg9luSMfTgM^wVTWaV^ggdNs{HxzьZ#&|FwvcBёTݕl/otWK`WqoF Of?FeN>DDf"B9GhKBEdBEeAyF^iAGcnMA>Iv}CKc{EMxEMtBDMsBKurAmHmM@mEa>B/X,CD9[FF`_GHaEJ)bPhU\mgQxgtu``yFJ?V7*<[W@6D-_CF]DIZJDZIYCGVCEhWCD\AD\CJc`JQmDKfAF[CFZ DD[BE^AGE`B@CIaE@D`y@!F_AF_5BD)_ABD_@E_=C\i@C\\@E_x@DcT@Dc>cGf=JnANsrAO>v@MwAN8xACOwMCODy%EkOyDNtCpNqBMqKBNqqAMp@OLuq@LYwA3Nxv@1OsNBPpBP6m@=wN s';MyfM{?1P$y@jPSv?Mx9?cLzu?M?{@O|@pOAxA Ox@UNczU@WMA{0CN{wBNy1?Ny>VN{<@N|A2NdzBO7y*@O&w@KO3w@MN'tAFNpAMr@YL y@JycC3Lu@Ls@MvrIBROrAtKo_AHwi>Fj?CFofBI;sCLtC7P w>/Njx AN;zBENbx-BFM0weBgM x?Lyx>M|@gP|?Mz@L{}?L|>Kw COZwAN*whBkOyBNY{*BN{?]N}=Ow{CTR*xCN6u2BLy@,OU{>.Ox"?Ow@Nt@N%q@ePmAQPe1=lM]8BJ__:Ka94J_[:4I\Y>`LZA`OeY>cL#Y?KwYx?4GV@CXCD=`MDDaE1E_pGF f3KHhIOBIaZQHRtsRDnI rr>G9~ޕZrV_briEuio{w99n{yTݞgph p%Ʌc_klCxo|fJ>I4WOD(ObD/PhEyQoCMnn IQppE`P oDNtA=KQxA|M=x?oMuAfNRwIAMu4BgNQv@\L2w]BYMNzBzL{$BMy@@|Nv@OsCPr9EHQrFQ sFR/s[GjVuMIVtJEVnOP]jYO[erUW^k`cRlnoq܀ۤtz(uחȓo݊mvQkڑbtwѧ<ٱŸ=}}tSxץvKkV9|Oϊv;R߆>tVpQm1FpE׀k@pUe?!oQ8~hSG>wUyLnX^VNqY;isWd<-dME_LR?ilR#Ίyna]x:ou|LX>oTJ{RivDLkR>Ej=BkNACgsBEfAF_h>HnAJW{E]MHENzHNvCL(w$CyKvBHbmBEbBqE]5DEY]EQE1\IILaLJbQQ]irUjcYГߋ,oTӒx~?mxdE>S7<[?sD`AjEaB@E\\0DxIj[CF ZCE$[B@F(\B^G{] F,K"ePWSqqJaNjDAzEY DE7WBD4ZCARF`?=Fa@G&a@SGb_@G\@F]CA@E'_@D`>E`E>D_^(AE\"IiAKp^BBMvVBLxALvs=Kt6AM9wA[MbwzCNsDOo{ByN[o@Mo!AMr@cLv?Jx@XLw?Nv@N t)ANs >hMjv8KxY=.NJ|>O~}>N{f@[Oyw@ Nyx@(My@M_}x>MR~vBN|K@Mz?/M{FA(N|oA?M}3CN}E?N/{>VN{CQN,}AK{CDbO:y@aOr@NN's ?DLt>LMpS?Nfp=LDt@LuALuF?Ks@M7qAL n@Ik/AFXg>1Dh>EkAjH|mBVJ pD,Ov=?Nx?NyBfNNkW,7LR\}AnKrBNhv>Ov?kOmq?Nqnp>yM&i?Ol/>P(i==ORf;Kcd*:J_i;J]:H];I|[w>LX>KWI?JY?HuY@KEYEFM`CC_mF%FbEC*hH Hm|KIhXN]{SoM`kCGӀB[zqsQHz~Uç߃/hzY\^񝐄6.mte+yjRVy\|BzLX=I4UA(M^dEd2|sB n*E}iNl}bDڎlKYb|YqZzpNvM9w)Q~|fTFn*]NV_LA:f]M=oYSGx]J.VjKm~F&eՋ ~]Aw}^{iLvaD~mM ^fj-}WNy{ l9tle9wdDx]cJ}xdQIxdDpM D$yfiLpb mP\\cHSTbTSi_Vnfaqn3v{v~̋Ǎd8^ 镻"=Xl pcjq'IRykKU iE|Pm=Gdl>CkM@{BgACfBF@j@HQnAKvCM8{EbMxXF4M(wDLvoDzKtjCH0mAF|cRCmGQ`:FH`/GwI&aYJK2c|Q LceaWrht}vk|~K{bddFBU6:X@C`BDW`~CE\\BGZ@EnXBMF ]BG^IA:G^CGecIJhHsI`CDV@AlUADZ@ZE_?E`@HD_ ?FyZ>IFZF>E^@]Fb?Fe`>;Ekd*@%Ea@C]#AC)bI@BfAFhx@I=g>GhAIuntCJs&DYKu@Js@Ltf@4MGvBNvt?Mq0?NoAN1qAMqCMFtD=Nw@Lqw~?Lv1?#MlvOAVM!vALw@Lw@Mx=iMUzs>N(}?Mxg?MwAoNuyAMw?~L-}>LAoLp}B}Ml|kAxM yB*NwAMz]@ Nh|>HN{R?LNzBM{@Kz BNxAANs@Ms8C@MuAMs@FOs?@Or?Nq@NrA@LrAKoPBzJiBHCgIAFyf?Eg?Gh?F}gA$GkBKr@Nvi@Oz3@MyS>WMkv>N/t>OqNANKt@L]OFn%YO;l>Mev=K\%>KYL.w{BNzo?`LtzCL\xB7Kv@KMv CTOsu@OUslBP3x EP{=gKxDSPvCPtEQKoIVbrJKUqMWcMYS\[KZ_P\5fVVjiXadq(}&J{N0x_H}5[^{-Drw}.ht~)j0wiot|r^z&n\萣hx%Qu_HnlwF;xGb} RVzRUwUךGDx/O6{b]#hw rPzUdϖPq`vm#po%yrk^cP+Ie]Iv:\UH= m]RLG{bJ62fDqӗsvˌ_e}NF\ ?IFb@GtefAHfdAF+c0CEc~BCaB8DzcB^Euh@BFIh@yGdA'GbA-FfBInkELp{DMqBMt,ALqvOAVM!vi@Mt)?N%t@.OsRE~PrDN^sBMnv@yMv@Nw@0NUyTCL.~@'Nx@NsAOs9AkNu2CiOz@M{@K{AOKo{CMzAzN`xAOz?Nzc?Olz\?eNTz@cN/zAMyRBMx#BNyv@fLt BKMtCMyt)ANsAPr=No@NpAMMq@J9oOAtHe9BG|a|AsFcv@E2e@Gf?YGf?FlAKPqCwOMu@{Ox>My>Nu@?PsQhNFhBNe?NL[>J Z;IY>)K\Z=UJqZlYRfsH`v/chb=JRCKBUSGO`HQbgEG:PshHHP#kIPSm?GPqDNCuCNvBMxAKyDMxCM$x1C MvBLvsB4M1wBOwCOvWEQzHT}ANwSAObtLCQudCAQ sFRrH&S6pJWac)L[^LZ&]GNhYa]S\YfPXdrxm}R~nyߡxd{倓Qz ralrOPljj=x>Ay֥Ak~zPtqHMu?KuMwFOc`}RU|Pl~vSڃ M^Uojqg67Ҿ&oҧB٪~=֢=| 㗾Q]ttjkOAbZO'?aL=Cyr.U F_{caCAhuȑgx^ʏ,giIw/]oKq{W:ݒ>l-ti{NwqiFvgK)ygdOwg-Mud4Ftk_B$yDcIxnGO yTuUsHezS_/V Q`WT`dF\Ynb\\shdvt^z9ے'%Ԝj֯Z,ٟٓ!΀zfplGQZmNUjKQgoD JejABcBBfBlD&jRCHkBKrBLyC}M\z$DMxDM@yEZNyEKq@FJiFgLf/HOi]MQaON\-SRm lsqx_҇ІEKKyE|}ovyf%cxnCJOc?,E\@B]BYD]DFo[CGZ@F']@A-Fa@EL_AG_/BFcbDF cFG$_hDQF\@C]l?LF]@F]8@|FB_z?F<`>F?_?FK_K@F`BHaFKaBEI^CE]BB_BC^`[BD_dC'F*bhBF]CFp\B-Ea\CIjCDKFnE@NqyAKu3?Jx|@BLw@L.tI? Mt@@MwDOsDTPr!BHMGsA_LVt@Ny@3O{AMVyTCMxBLxCNwA?N xN?LypA OuBpPncANeq@NNw(B$OwUCO%v9BNvCN zBMWy4BNGywA@N0z?Nxm@`Nw@eNSy@^NxA;NxBM#xAMavAhM uaALrxALr@MPs?Np4=M o,?Mq@Kq0@JngA>JfrBH^AEh^'AE`A)G`9?}G1i1>HmA;LKrAN s>Nu<NNxn?Nqu,?Ns=cNt"AOtuAMQsD?PpuqE$Pr+DNoBNrg>Lr{C#MrBLoCMHo@JfAMg]CcO]RcuJw_wCNb[DL]AM`BjPeS@PgBSg,>)R]>dQ\DRae_BDOCc@LqZ=I3W=`JW=IoUQ=$IX=IwY@I~YAF\ACPF`aD@Gb>DEaFFf`HE/`IJcAOxh5gft_Kǫ.v6ms{ F$VbqӓttNxֳv~Nx؋ͼU{즆v/m>MQHQDIQkHO^D;NpdHP%g4H&QkiHaQmFPtAMwB=LxDLynDLxiEnMKu9D!MtCM{uDMvsENhzEQ{FTR{FQg}?FRzCBPr COp%BPx8@PZyL?'NttDYPpGrXkI;_lfK\+cKS\K+T`KV@djt=o [e{s|Уc{QXz}ǻJDw{fb}ky5NUnH9Oks+DIqBChCBCfhB,F5kC-JmPDNuCM|B]Lo|;CJwQlTb{wWy`VsQ:Rj_ap{+t/jw:kÀd^7pSaSiIP3h#BvG`A[B[ECDZNCE%XBHX-BTI^@FbAF*aCG^mDHs`F7IbFI_GGH a@+D`A)Ga9?F+_]AGt`LAHbb?Fa5?E^AFZCG*\FJCaIFKaF0JaCpF4bbBuE`]CEZEHG[AGZB)H-asBHeBI jPBJ mBKuq@aJvQ?RJy@Lx?Ket@LuA(MsHBMr6B(NssCNxtfAL u@ANEw(A$P3y@KO3wANjuBLuByMtARN5sr?M_x[@Ox>MwA/NEw8?L u>ULtAMsAMQs@LIrOAMCp@Mn?lMoB9LqG@IgmU@HdXAOG[AEF]BF_AF\p>G/ij?I&nALqG@Nr<NdtE?/Ow9AkNuBMku:@NMvAPv@wNRxC_OzDNr-DM]kLCNnV?qLp@LoBMj_E@Pdi?K`C}Nc\=>JX>jMd>Ngi@oM/f CMcBNobCP"hERhmBhRRgA~R^{A|R\`CQkcBOb?lL`W>J)U=JOU>JU=I7V>"JZ?6HyZ@C]\DDbDDaEFH _GG0[~HH?aIIbM|Qg>hbsG]=c9ʲv돷p_}W [goðovqkcZ~Ҷbd}C_xϲ}vyMeebGI TJP`LFN-dpGNuf+I SOj:H{SoE!PuA7Mdx}AJ9xWE:Mx5EMuEMWuDLuD N/vfEM xFNU|JT|rIRZz5ERN'z?$MluCOlBMl+M|?MvAMErDQRnFUufTIR/dDWI:UAFnUAiKTYgphl{6 ,[+{^yrܤx׿ux(!`PdxXBRS;Po je\ofCfQ2ajW^ݒ~!P_}yHxLĘeIRjdʂTDy%HY^ޠޖpfFh/z'E\뱋mb-0"US ̪ۉ n{8iULjRA}-ehGdhJlǑ0pxc{uWP~4h܊z~f >t$PGa^?^GUaV@G_(AE0_VEIcFLfRKOCmBNIj>{DcYA H_@'I`?UJYd,BK6j$@KiCbNkD+NlB;Kof?BIs}=IsX?JhruAJnd@K8o@2Lq@LqrAMsr@qMv@MxANw:?mOVv@P9w@NuAMtmBMsCWNiq@Mjp@Mv?%O&w9AOv`@Ms@iMEtz?Mt@Lt2ALruCOqAGO0m@M_mcALnJAJvl@FQcA\E\AFUb@D bAG{ap?Hg^>JjB'Nm@Ocp>Ms?MMtJCN]uA3Nxv@.Owyl?EOz>(M|FCN|yEMtMCcKn+BK^o@Kp>Lo[AQNiCO6f>M=bAM a@@%MJ_*x |RFݦ \䭋hbɛ5indX3t |s~n×{bgJdEfI"SVHONaaE)NgF&NfHRjGRnr]EOtvCNTvArJv{EM@xQB]MzrDMtCLvDNvEOxEKL{yHPwDFwMuE3M)x?K0s?Mri@pLen @K {#?K*{i@LtJ@ZMq@Nm:DOcGJSQB AL> =N:<AAN&]8WU3Onӡz}~l}|{1|˨z&}hj$YU=LGC`\kTK&p LWsD勵sM.uNPyN_x-L~s5H c̦z|f&{4J+|{a]mw4оz#g$GL&߲ƝsցOgxcJhcI^grz wH3ky˖ÁOgyfe{j-0mOdoK^v\si&Vvg`QMh>THbQdGudNqxXPxZjjbt1|Wpc^kt\PaTQUSXJjt { |;omZePDkhenT[ȞD-ϯ.lsAkm}Cszلjoy`M#\jcEMlAIodEF`}CJF\BHHVCI TAbGUeAG^VBGbBFcQBH eaKERkE\`~qwS&Uhj2HJ];EIw]DK`E%N`AL a5@Kc?J=g@LKhAJPfF1N_g|CKfDMmAELlYJe@M@h?MmBIOqCOmEQjB`N i AKFl?lJ{nHNu?Nv>Muu@NvO@NMwQ?Ky>MxAPvhAoO0u\ANOv ?Lnw>MuCPtAxNPv?LuANv?Nq_BMm9BMq?LIx>Ly?L t2AOoL@YPn>MNo}@LMVeAMgd@M`lARh@Rj>kN_9JT;MYK;LF]fL"p@Kt|AXLs=8Jnn?Lbnq@0MGnj>H>]A+DM>=I/?#>:O0;R;QNHBKf^M͒ʍtq˜Ov{}Od{kѦ}ĿplqyY+9OF?W4OIWx>f{Km_H }5fFGxazFׅnKԋtM pBK?Ž̃{ېm|[HzU)_ΔsTUywg׎vX t}]mQb|*fE~(eEρgJ~jYMp \I>bOoEi>XLJlwjPbwfYj1uw&U_-wf^MeEUOXRTimx腋B3o lcijrh9B"1՜w Xjhu|}ٗ{{؎qmCsI}!URaBfFAP iMB$Ls8B3HsE~JqrGOsFH0P&tE]MLuDMuDFN`vCMXxDAMxFK vHaHrF\HFYXMLp[/QN/]'b^f̅zA˅E}~PqJwycWsGKInDjK~Lh?8M)i3?&M'jk?"NpCSQsCPnqCPTh9AM fE@L=iI?LJi1N&o>M[qwA5NtA1NTx%C+O/z@Mu*@Ms(AN@tAZPSuh?NwY?Nr|;Lz>MxK?_Mx8?-Myx@NvABOcsAOpu@N*x?Ny>(Nyj=LwALxAKv9BM`uBNp~CVNIjADLmK>nKw?2M3{>MtX@;Q|q#@nQ{p>MOo@MIn@Kk(>Hf?Eb?DSe@gH(g'CLk?Jlh|@LdAUNjB@NnCjM!sGCNw0CbQzBO|D@L}u@L{@M-xB*O3uCONr@Mq@N1r?Mhp;ANn?M?hh@NXf>=MeD?Jc@YK_>IKaAM2fAMGgAN&h@MbB%PbERf(ADQd!BQMb@Nf)?jLa@K `^BI_|DL-q>aMDoBcMmBLMm=nIkk%?K,l|=Jk7C\:@O:=ND9{;KS:f;R988NFJUHHNnpbيIu|Fl|!uvMrBrYzj(aw bCJˍwZ[wۋ"2,[5۷t z1zQrB;~wyCn֪jġhsGcU!_斎pu+Βn\CvR'vrX*1zL[xRsxPQjvXS{vhLkUJe;TNjaK<7vP.AeSAoǛGbzvWuf;WaUR]TVSqwk~nZ~rzj1|grtwBukїgĥ(\Ö=E଀G"=U~2݆stu^c`dJ=Sl,DNyEL|FLs{GwPTyPHPuGNt3EM3tDNuDMfx3EMxD|M tCKkQGH[XJ_ExVHDVH DtUNJ8Te>em_#r~Xq<~ouxi^uLDNfpDKpDE[JiCFIeBF1`?D[sA|F\.A8F]mAF^@E+`B.GcMi@NkAMk>kL~m>&MpzAOnn BOho@M3d?ELd=I,c>Fp_ADaAC+bCF;c1@Ea?E`@bICb%AL.h?BMpl@!MqllAMo:@\Ms:@VNu+DDQu?Nu@P{vJ@Ov?NyM.z ?M-y?qLsy@LzAzLvBLu=ALUp5CMzmA-Mr?K xO@NMw9@{Nr3@PqqAARp2ANl@L{?L{AM{?MaxBNu#BNNtB@Ns1B3P7q@ NlANk@NiCLQ5h5AN0gM@Ke@K"c*@Kd@K*hCM)ik@MgU?Ne/CPbDOSd@SeC S?hE;TjVFyWmCS_irE_Rb@M{Z6rxsd7sqL qidqfz̑*kAEo"tf-sH"iӞgfelSBsc ~_S푋|YPuJ[c~mZz\l^wthhNIy'oLj1(uUheGb0qaTeWN[PKj\W~Ctn&~v v[hƊߘٝ̓ɔ}qѤ e%ѧeh{}r]w`siZlc&_fNLPnCwKyDKS~0IM=QINW{~INJvRJdNsbINt"HO:x;FOzC!OvqC3OsBMjE4J\GFWGFtXHLhG]OMI_`Idc1.q薡ynzBsfuOOpDGKzqfBqGWjACcpAC^@BEZ"BFXbByGZAGz[QBF\DGamF8JhG$NpCL(nB\Mj BOlAOmD1Q&nAQlZARo>Ol7@O#jAjOYjA=MmBLpcBM:n.?Ll>{Mnp@DOVm@UNlAOn?zMo<_Kl@Mi@Md]@Mb=KbINy>yNe|@#N{6BMz>Ly"@jMTwXA0MsBM*s0@%Nv?MzO>Kz>PLy@KxAJxBKtBLuAL vz@Mt?Mw>=Lx"ArMu0ANq@Npt@]Nq?GMnZ?Lj?Lkn@MjAN,l@3Mrk_BQNEl @Mm>Nxk=KNl>VMnAmLqBOXscA7NvAMz?pM{r@MoyAMzALxA]L@w D-NtnBMr1BN2pjA!Nj`AMj0ANjoCQ}h@NcAM{eAMdA,Ne@RMgANj@MhS>kMgyAP[fAReFBRX iDVLjGSblG7WlmASxhDTf@fOb;MeBQl7CPn@2Mg=J÷#CmduyA6f+4d|HDIϑl'U\Etz-.bLelWXXR)C#IXAJ^HRCi3GvPrwCPz BN}ANyCHOxA NFwDQvJCOvCINzEMr}1JOYyO'Vx>TVa{SRgzOTRTy4JP)v:FOxF-M(nAdJd%>IdbzDK(eBHaV7P@MZ 6@;ITJ9W9Rf::8U7:UJ57Sp8;7[QC$DQJbO'P+gBhN𗶑n"i_?r }amSgWLhYlNoqRaHyDeCqTQcobR~iMၚoRvN}x{rJt${OO"uP=4oU}f]LvbG@sa,Lwc=bx?`oL֎7vFvqF;w _ޅ"qXZ2|Z͛kVi󡩍iȪ,h d~cJВ:m,nOi>Kia h]oV1yQ2 xE_FEyE?ybK3_"~eS{d~pOuhIPs[yN`zRRy^TCtE_kl[PH[ONcTSoc]{:qfwl~gy):k.K՚ޕ(n+Iuv,uy~kmBw1fhmncrjHYTnLzMuL8N}IK8{=OLvWP#MtO;OYsGNOUsJPv}I0PUxFOuAfOrCN^lHK`yHIxXJMzX-NN^VR\chiitӜkSxz>sgctQMp!FJ~rBFjCEBf C/D`BFZBFWTAFV@#GeY?E[~AD`CHdDJM mCUOpCPNpBgOk.DPkkcDQkAQ2lAQGmBsQ#nSAOmAsOn@LpN?AJp;BMm@Mme?L:o*B3NoDPoBOoAOGpy?ML_/AMrd?Le>J`k?[HWA8GBWGCvG[CG\BFG\_@cFap?D5cwCRIfICcKl@HL(mmA/Lh.AK5i?Ms?Ox>N9yC>Lrz?MN{`AcOc{.AO{@M{RAL7{@KxBMuCJNnA-N)r?@NQx?aN z>Lyu?L{&CL|CIv|AQH[rBL'u@&L3x?Ly>?My?LIx#CMv@Ls@Lq?Kpz?+K5p?#Km+@Jxi}BMhB!Pyk@yOWk\CPTlANdo>@O-rD=0Or~Mti@Ns+ANvAMWz@Mi| @8LS|RCMU}DMt&BKsC Mov?MD)H^RFPSNN|g~`ȕoH~y~zafsjVrhUtfN%}kGzKiCep@Pcn}S|OeDLAmMo}U1jT*Tߗ0xZx{`qQ|;nG5ug]חvu};`;sLUvD o:;mqJylzRDqBMyuFWX4] b֞iψjehT)lX{pT&wWAZ{+G8| [gcjn?:o9 ^_J{oFt/y\F7xO8vW hIiTBewUHq`$ImeEXtI섁mZQm&Y OZkONT[QPf[Sm]c`Ypof5`7pi=q sqvy( )녌xx{*lFjgi`lmrrtkDrf\jsL`Vhw\Su_zRrbPp^ZCNpXUPqVR4s@U+RhtKFPtCNs]C%OoG!NWe~HcKYGJUMOUU!V T\Tm'njb5uFo!SЍU}>uvoT_r:Q{L]n(FJoCGjBCcABsD~`BFf_A G]?7EY=D1Wn@FY@F\BHx`DMePFQqjDQmBKO3kCPjBpQltB$R^l@PkBOl@TNnAOqp!BMpWBLoCDOm>Lh%BLg@J9_BJ!X@G}U7A2FXABF]@E+^@Eb@WFIeAIfBKjt?Knw@Lpm?Ll?lNs=N{>Mq{?MIzBoO |PAMz"BLx{CyMJ}VBL}@XJxtDM:rxEOhOBNl=Mt@Osw@OyT?M{AL{CKv'DJ;t5?FIt@KvAqMy@gNuvANx>ALIv&@pLVu:@LSr@Lqo)CLCoAKmICKRh@ Lc@GN+k@NlCO|m@}No(?Ou)?`QgvO>Pv>N@weAJOxIANwBNypCNzAMyaCNy&CMq4AmKiHAKXbAxMe^KDQvdhAMg5@ Lk@Li6BNe\> L_BNbT@Nba@lNc?Ne^B7ORhWFPg&E%PeAOa@gQ8_rBQ_bCQiBQkDHTkDWoF9XqGSqoERojFUi3HUgAN_AjNa=PK^> HqVDIMWEJ\HCIa[JPT҇Xxv ÆJ&;N馮w-ZFƩ h6yzئ.|wJqF=3uF mS:.f=C2h`Ca͡ĈpН4VƝALrLum]KLTRAGXnFNg]LU^jLZ{oKXwExOGxCMvF&OvCMGuqBNvETNwEqNxMGNOz*LP|OMzQzYSsZdlVsp^rRuoXSxeCVoO4<K=qBKrBFKRHLRS^kZym7yid7nl_i+iSyCqWtQxuHfmCC~smMI{iL!xcM k4M摙|YLJ2^pVTtZK|XnGqFF jL?tgrVW$ybO] z'd; wC`HxgU}jO iDxpK<wuZ0$a~_=nonv/0eQTӍ~qAxnJcs7RӚ܀Y$f°Dnڑm2dA{M݋erEԋtM~}gFJePA+UK?ZcWtD}qJF|)Z5u\tfYdWP[RNVcPaNGSNLTO8P:`hWfxp!n(՚͠é.ӑ:qA|Wn҅zSblz_ffriur\|4 }|zktrdps^cm|dl|\GlpUnfY)qj[|rjkXrv_.RtKMSwE!PuWGOjHTLb.FI]MQV`abgwzoD㉬qSy%+z@yow}hZjqRNL+jCIjCFfEPFaD)H_B8I`?F_?iE^x?EYYg@VFV>RDXBGz_,CJ(cEgPfgERojDtPlk ANBl/AfP[oBIQoCO.oFFONrDO&qDOqBNoCGN_nE/PHmmGVP.nBKKnBKp;BLp@Lp BIOqz?Op?N0s:?eNr@MnAZLjS@JBf?@KK_p>IZD?VHta@G`AFa@EaA*E`MAFZ]>iI-a=OKk?M\p@M5pyAOnt=N\x@Ny\@NAv@=Nw@8LAyBJzAI{ZA$KziAKxCMqWCNjB@Nsm}?$Ns>Mv?eOy?Mw'B,MwEMuB%Lr@JscAMLWtA4MGu@M]uANvBNtA@Ls?.Mq?LlA#Lj@KlALk)C NGl?sLm?sLmpC[Nn@Mok>N"s?POuARwA2PyAjOzB OTyBNnxCO*xCPDtGSrAMiQ?J_@ KY=J[@gNyd>fMg?LiA?KQgBM/c=I,^@LMb @?N>c~@Of/@N6jATMkG#P6g/DO.`BRP_'BR`aD$SkcDQidBQkDSk FKVoHZsK2UoAyHrRGLSyG!Mb]JNdKhlWc:T}59RpW1 !FXbhِ0҂d>ك({xF=n 8(yDmF/)x L2q'~9Ks _˘>kQUsV:WYrGRIWpHMeLSiL9Vm GPs)FtMyEKwFKRtFNtG Ot$FPAxFOwJOyLQ{TXVyiB\vF|hx,rDawco~`Yz(ydp̃npvseab\WNOQC#FU>"?V|;2:=S5!6Nl7:N.4=FNZ3c>K>hDjK?JPCQSH^sRKgZTtjpW\ceiM3{=q&R_z_QB#QwPtMD~VkDtdJ,qn_2L3hJ=uPBpbPrYaT7wJJjBrnjEKgqAmhudLm]cP{wrU&mQS3: bM{A cSIp^Jt]&EOwfKx|kL㉻sM&odHtRa.qd9ޱ:5/({՟5GiUuC4osCpF@y6HlԊ_SuH]{tjxW6rIyaD^N=Q7K;[T-DzoR~eڊ}ui~UwhilKh[s]UO8YRORvOM+QMTaS n[wCmӁ7G੶8ǔ֧~+nˀ~ZgbvhvBmqВazt|cȀ<|vqt}inkim,fh+g\`Mk5t[fms]nu]nNoYpY#QsDIL^tJNql~K5QUgE RI`L5[[nrvi @u uNzՋ|nexF^SarUKM@i.BH|hCGenEHb`iCH\A?I\@F^/@D_\AEZBFVAEHXB8F^C Ib8EN0iE'RmCPlAZNl@tMoBMpdEMpGN.uwDJNuMCNryD8OoDOmFOmGNnAIn_AJ:p@Kr@LtANs[A1Ot>Lv>Mu1?Lq=Jp>Kp>Llc?L2hAKi#@eH#hq"Nv5@NvDA>Ot@WNt@ Mv8AKxA;JxjAKZvBO4uB6NsMBPO|pAOp>MsI>Mu;'MvY?kMxvASLtPC&MKj=Kl=LmlArN'q@7MoALMo?Ko{D PpSAOqHAOtCPVwlBO"zAN{C$OyA#NxAaPvCRm GTgDPOd!@L\ L=g?hKe@uJ_=EJl]ANVb?Nhb>NLe?N*j?K0j]CNeD/Pa5?MaBQ,d>ETaFTgCRhGWS3gFKRHhJ,Y&lGMTeGUdDSdEYSfIX6eAMXKA/KOVy2 Q_#Ǚʼn[ӊ*j3СƲ񦯂ʹRҭZcry:@r5=Fn-SpòpxS'ߡ֒Dʔu}pq;oS!X?\INR(cKPc6LRkF0Mr/EK1zE'KJxZGLtGIOktbJSOuGFPzIPwPPfRuJTT)yik*d{ |i{=or|m{v|hKxjsqr5n jra`VO#UdDMCV?6BY@>?V5v6Pa89O2YILAAQ9LHaO)_qUenT@wKsUuK+ŃWnU~$PlnDq/`Gm\hI;{eFʼnAq/Hl)}]G\$z}M;n(CdA/oL tl[r`GQVK>1gQH@_I*9VE;UFH;YeQ>p+[EsoaIJ!r`HfgCab<~`J5o]UK{zȆާ~ W]ErYvxBRV8vJctiŰ]볡Q>嚶q&py W{RhGaf.WEZoT,G`c]Lw#lSŁlsH]~;q\uk$Yja2P+^TK@e ^5QIhaYge]a0i=clsfpyÅ!zΡkY8}LA#e*fx5~N%}ohF| uFvzl9rik#lf>;of^qk|i~ajA}ajeEhEdkTuU[MoOjXrS_iVhSXTb0HRo^OO]m]uzj/xՎwlk{Hw{d]+vgR(PpFJifATGh@fFeB'H`ALH(]AG]@vF`q?UD%bAE\SBKFgUC@GVEGA^ EIbEdNjDE'RpDQnBNmAMVonCMpEMpDM%sAL=uASLrDMoCLkEMmDfLip~?QIoZB#Lq@L"s@L.u@?N5u@Mu?MwL@0Niv=LRv=Lx->4Mlw@ Ov|? LrA>K)rAUIm$B:GcAF[@2F]? GQ`%<[IdR?ANk=iMrn@Nw AOx?MnyA N$z @M*v|?M6s>pLq@Kqt>Iu@L!sB+NtgAMtBPr5BPo@NXq ?Lyr;Kr>KIqZ?qJl@QK\iBZMHgCLdBWLe?1Ki>TJ;nOmIKepvMmIQ~=]8QQd$E]:sXhoѓ}q^qZVDiVGy&Mw>Mz?Nmz\CPjz@L wAKtMDKnAEGd3AF_^Y@G^E?IYc:Igw:%Ko@Lw?Kx@eNsl@JOnqDGPq(CL=r&ALq?HKn?qIri? Ki-DdNj~GO`gqCL.a*?Ja:|Gc=Hd>K^1AgO\? L]z<2KcIMh?MM]h;K_nBQ_PB-Q>^5>6L[C;OJa@jM`?RMeDR[mSB:Q>lAORe:?QOSaAQf@dP'eCQc@EQeHERLeG\QbFR dOE\ReEAR0fDP_=XIXT@BIVGOeWHQ,^W]{l`j{1}zԃEui{Qjh7NkmzF'˧AԄt} z۰C|Q~kG~~Ovmޥ| ={cHqzi\ʌ t쑷9}W^M}>`RJLf[%RZNE`F=YzD9sY)I;gSUIn-YK q UAGbcG,1e^EV=[%F?xDeUPxeO nK^xU k˗jvTRrU ?~ilSk>wԫ\*l’zILrm`ESh`Lywtg~jszWnptMxs8lb8eWMjjf]LA}:uXb~;tf}uɀ7sEsnqDwfwS`vÀwe(Ǘ+̘y,[3~B-v:xBlqjiookl:OqfMwthcsclqa7o[Yqp`OpjTs)m艭m;hvgf[qhe`qh;si#yFr.Jrqt9qOwPkGOKFjIPlnHMgFGcEGcD0H@`BZF]QA]FK`?QE~c?De{@E_BG\DF_}C^EbBJiCM-rzCNtCMltALsAjMFsBMrBLr AL~tsBM;vzBLtC!Lr(B0JrMAKqCO sCRO?tA>MuZBNxAM]|AMj|CXN`vnBM^s@Nv@^Nx@%Nz@MyALw@Lr@BKnAIi?SFc>E\]>He;HiV: JWt?Mw@Mq@Mjo6@NtO?fNwx>/Njx?%OJuk>Mq Ic`Le>Mm?6MsCC]Ov?}MxuBMUxuB?MxBMyAM{@oM?M?$O??O{?/OvC$P9pB}NjB2NojCOiRBNPjDePj}@xNi?HM$f'A_NbS@Nc?MGc>L`BML`?L#\>L^>M\0@iMP]?LeCPs@^O{s>N i@:Oce;AjP1f@QOcEfP\e$ES$f)FQ(f FPicGRd8IlVkGVlJ@%O[<4JnSAJV`EvOSLS^eo&f{$nvQsuCzxB^D@twΝdž4 Ęqyyn$rSyځΰ%`DjAxxާqFw9%txF |{ uXfof7ga%NKTj!cO=A^NF1^.MFbNGq6WEw^FuYDqTOC>qUFwaxJ}>hHv]Cs[D5|hL1viRpe}Q m*SA@xiUGliSDY*LCXVL1DeRHlrTDeN2;3`hJ>>]pI;`}gU |gL}jGAp2O?xb0|a/`t F뇲jCktxawV8u}r˞I*uߣGq9~[v`FdVI2r?iV\ xbzezl{kG|ujdqg [-k\Pl^Pzpc쌱s"nOx@woUtozze𡧇~?Q{ 똢6Ą9 :ќzʖyqqhijȌhfqedt_Qt^n$t]Ft ^=;xh;pNdmuwh6rf+c+_neGg$ium(|s mv=rsotqJq L%PkG,Ovn4KX0tIgR?rwD%FhE_E.eF;H`GCEG\@F[A?G`A\Ea@C]A^DZDFP_CGJb)DJgENGqHCNuBCMFu3CMnu?LsB,NsBNs;AuLuA|M=x@5MUwAMuHCNu?L{sAMsBMvrAMpxBO yBMyBvMxCMFuD4OuDOeu@&Nu>M|y?L{-ANLtxBL tAL2p0@Jkn@Hd =RF_?SHDf=*H k>{J[s@}NuA}Np}AMp@N tTAqO@w?FNx?ON5v?Mr;JRl>Ltj@*M m@%Lt(?&Jv@Ls=_Km?Kim ?zKnAL!q$?J\pA,Jn@H l@Kj ApKjAzIh@9If|>He=H9e?KeB>KcK[p@Kt/COvAQNwCNzWBdM{lBMJ~g@Mqu@Ns>N|m@fOvW@Ms|BLl CNhdBN?fBO3iAO:k~BkQlZBPmAMi[C6NdIBM_3A^L^?Hb&H]1=J` >5N_BMZC!MbCMn@ChOr=Lcg1@NdAOdBrLM`FOcHFvQ|cFQ!dDP`GQb KmRhG_Rf=>L%XJ:HUeFKZGGNXNUSgBrygIzxFJep}:֕cwn0gz sC"ecǛuqWœvаƛv4dPj“MuwוW^{p8mӳ˘qڬs},z'u̓$zՄtS]vx~)r:Hz;)}~lnmf`c%mRxQiTJLzn]VVotl[)qEksxn-q$znnXpo2resr5ttuԊrtӋ8r=rOql qj0njjg* k]e担jeek/hos~ae]M[NGUJ9HS]F+H6TC7IUkCKVBN1^Pn_gnT/^`EUMWRCgPP L\e-\3d#rdCze 4m,.~>{ jl@^5O)=E]NA{cFSHjWKw bJ}fIxQ_FtAZEnTCs\EUvbD5ucI~mJٌ{]etG]Lhヂj#r bNWaJr@VXJ?cPAh S)?biSCAfd9O> jUnV=qQԀyoOЀlMbmHA@c2:)xW8{ bLo_yd<~ kё|jb wXunHxm*T:@QYeLAbRRfF n\}E%seHHukT}pdU m]Ql3[>T p \u[yidGwwŸxȆ{7其Ktܒזؾ*G)"`Aן|"{zRsp`hkhҐ^kQfΕUqdt~bWu8cstdwgdžCqz1yuK˅mm}zHp3mbm*d{HQuu{"{ -{&7zrtDtwORXk L9TqSPayITu"C+FfCC`CJEH^C!F^,@_E[B#G?_xBE{_CE=^EE]DF_CFafDqIfCJLnBNOt4CNZsCOuBuNvBMsA&LsChM vA>Mwr@Mx?zM0y?My)@Mv@LExf?FjA3Kp*C]Or@+OqAOs@eNgtAcNw@MM{ @DM2z]BMv??Lnu@Mth@mMi!@LIl@0Lm>JlHinr?Gl@Ij@Jg@Hae@Ih_?I{j<Ij=>nMpR9KpLd1?L$nA@LrANuANxBO})CMN AGK}B)N|AwOr|\?eNTzA.OwxBTMqA;IeALaCPObBQ!fBPieCPAlzAOnnO?MclAfM=fHB#Ma`BL b/?Hf <F9e?Ia=I`#@NdQAEM^B$L]ALyfw@Kh>uJcALSd@xKa@PH]@H]_AwII\/F:NcHENc/GjObD L^CLZ=I#U>FI\[ EL=aqJ5MR[I\-_[AqPypa2؃@Wd{u4^ A_Vb>bI*2c_5yU; S::Ȅ@1pƫƐhc4x[u@grpokͫiX-u̠ܓs*wk׆BrnrpnoYonlpqnq,pQrq㊝qpыpqmՍqhnq,eCohKlgjdnligImlojpzvM_ye?cN2| @MyAMw%A%Mey?L5z?Jy2AFMQ|AM{AMVyB OyC~PxAOvs>Mw@NxlDPyDNhtDTNlDMe_B[Ka+? H6_ESc@Ji3>L5l1>Nn?nOzs@rNvB:Nx?M}w?#MW@}Lz)@KuqKof?I:qy>I o=kJo >Jo=In4=aIn=2Im <Gj=Hjc@Jrg@JfJ@Jh?.Ki]<@J|l ?Mut:cLu=YNv>DMGx?tLx ?K v@?Ln?MqjQ@Nm@Np ANsB%P {H[ۄ*HTC"M_{CNyB?OQxyA(Nv?NL|tT@;JlA JbBM^9D2Q_JCPcBOUe"CyNkeBcN9H_?KbALaCK_{AlKb=Hcj@H&ds@Hd?hHIbA@Gk_@QF] DPGa&BkEgBJ`jAJCfC#K`CnJRWn@F-T-;DWBK`EQP_ojRa {yH3\×wu QkY\q3\"XZU)Ԑd&z4󪧒g%pe3NgaY[فrcGq:feahXzon@1o傡zMco}@n:x~q"~}:uGMy聥y3vGvj݁keqrW_vgXekkb|pfnviD(rqEppى sqTqo抣snqnόqj.pe>qeےp%jzoTjMZibseiejjArPpt4o*n{i][b;QNK6LMD'OPRHTSHeV-W%OTTFQRUQVI\SOFaVF_c<\Fgc eocρj٣w9x;~WRp4UApUHsubJB{kOK}i>@}_fFxQ`QGuz^uEZr\5Dwt_Gua&F|{kKt7OK|$U{W B\3c+Ώ˜?_RnR:g}RBe+RBb NTAfODjRHeysNn}Lg~Nց^s]OV{]ւtOydqDlS:fRQAHte[LpoN|.h]I~AjM|pZ{iRubMm]4Mk[[J(jXDD_Q@VtN7@XQC_TKh_MYp#kberjdXxkgh%wr+@F3EԭLf̓JՓ${ѓ֗l*ǘ+ے  })Hyqz%rRrtn)jY\jwbozj:dqlSwp9tnjMyiSPزPǡ~oaki`dhXjqtjg}ip]Y{,zx$tua4_qZ^y]T^|GOv\AAE=mCEdDFbCE_C{Fj] CF]B(D\*C.D\CMF];CE\BE[SDkH}`EKeFPm]COpAbN4tDB/Ouw5EuPZwMCALuBJw0BLw?MvJ"h=Ln@Os?Nx@ANz@ NG~>L?L|?CKs>Jh?gK<`@2L6cd?Ki?QJ n= Io=J&sC@Lr!@?JnB?Jo?Klk]=Je+?+Kwh;>wJ\j<Jk@JCj#BVLjAL~n=:Kv=Lw>,Mx)>Kty@Li{?qLsyYAIMlrCOn@ENl@Mm@hM8rDPxWXEdلOZgExOXzBO yCP vA+Np{BMmn;C+NkBOeANP]BmOw^~>Ma@NPdCBN\bBaMb?&LbD?J`@gI`@+Jb>'I\e>aGe?6Ge4@H-b@6JbA}Jd@H`XBKaARIc@Fc?1F4d>Gbx?F}_>Cg`,CDeeCCiIAFll>HiDKbE0KYaFuER"DbDAVEK`][ST~xv`2TvCWx9ƂTo9^ x`?,^*gJ2hdp1@uwQ€A`VOtcڗVepL׏gV[܃(iv̏yd}|hjw{ j{nlqݕ3zա͙`9HQgmGwyH_h@{_gq}gb@i^ oeKLunYs qrBqFq]p9soqmRCmsenbS2qGepgoiR2ksghnσiwwlpxgipolq{Oa^fRHNJGNKCJOGQSLSYIQPTQLNS"QINoTbWNi]@G+k`Aem\^y_dwYhBm$%']JiRVua^p\U| kIvlbCQlVBAhWJqbNvb~Gw_BzdG,|jLue~MrebVvpg&]SnOcNm`FeXCWPATN@\ZQiIg]Xw`qjyqilrc^h{`EZЎVrh;цxlrqJеꙤ%BHƈj6 Vǒ̘k]m6'zv_|Vsupk\loc9k"ejlgljl#g{zrem|p#oxmAnKwraHake]hY&Tq _3Wfsvc/v ?z{+xq eaep]`unQqXTxD_Mv5@F oBF g-CF:cjDGaDF[DFXoDEaZBiEZBFZ4BlFYAF\vBHaFDJmeDNk-CAO~o@Nr@MvANv BMvBLuMBMIt'AMuA OhwCQvzl?OMz?MyYA5Nz?L*|@M|-AM}yANz@!M3zT@M$yCHOx?DNx4AWM0xw@ NyxANwuD*P>vDNZqPE;Nmn^AIj>Ef@G]^AGX@F]\?IGf?LlA*OXu>O:{1?Ny]=L'{>M}@%Nz?LSu>nLmp=Kd=-K+d=8Kh;.Ji=Ik@>Jlw?K!m@Jm?JTm@Mhj?-L.e>TK i=fJl=InB>aH(o@Jo@_Kr>nJw.B NC|h@L|@9K/|@hL{?@L>x.CUNCsKBNnA2MBjq?{JijDAL|oGch @Hf>He?mIh?/Iem@JbC#Kc@GaC?Fb?\Hb/?G_:@(FcBFgCXGhCHi~CIgFKbGLy] MsN]1IM[O]R\ g^PЉgklNx괗ս9Uխ۷֜bqzC8re]mVMOPfK{LGL)QF5QSOQVU QS.TtIGMJNCIHT^PYnO] Xm\XdijPynl8S㋀w^U]N|L݅s^G+P$jdZus ~LЙ o4iL v<[E|w\BRw_UEoxV%?nUl=v^ET{aiJN1q2R|&T/QkU&C{e"n+Gmk92wn]7k~TLF`n^Oo[vNF]K:XHn5!hR?piӥO3DtmooO{eDykeDys dvHqc RmYM&iPRA@qgYCfyfI9~wn6M}pV}^uf{{wnrm^@qfSM?k_4HbVYGaXIb(VMKa:XRl`e]Bo+fahQZUnYR~hWg|kv{D:$H2f;ח>Q5v){`WpWzw~xysq˔pCjkbsjNeNkehCi1gbj?dNl^d8nKZ͒Vo6Zp_ssmcUenkdf1ijhjd"cGin`zǂnČxGssqrbcq3SWuDMItAJnADIgCGbD{Fx_PDFh\|CEXB8E ZBE\AE{[BGO\?BF^#CHuaDKagDOo2ANdpZAN>r7?)Lot0@/Lvr@L x@LvXA0Ms"BaMrALImf@%Mk?dMv!@xO|G?sN z'@>N"z?)NzANy?L;v>>L8r<LXmL>Km=KoCKj;Hk>pJm]>Ir>:JrA@JrW?IuBL!|Y@K|FDL~6@JFz@LJwAMsAMpALjj?fJYg&A$M}m~BsMqD+L5rEMnoY@Mp]=Kt?K%sBgN\oCO@jqBFNeBfNifAMg>Kf[?=L-eAWNc-FUQdqEOIdwBM_eAKZ\Hf?zIg">Ihw=Jez>Kc?KaB,LHb@I4c@HleBHcBGJeCHJhjCIfDKfBGKyd.GJz`ILqaDP SjJM:_SNwU2^&w(r#\q7|ǰ CźS /bI. v"Ef{}mgt=0bSTSwh `BJ~{M@Wf̆wd k1o ^siNTIi]\NW%}]sylhx}g}dRlknYb/UvcTP_VUUPhXUZTTRW'`TeTeZ2PQTRNZ\XKbdjS`fYME]XCqjVF~aFlNzRZ|QwRЊPydl nmiuBwqW~uWBpR": tXDn;UBi2Q:njSc=rTCz?aIQtJ_uK~h[HmhW_gPBizS(EudJq"Rņxy_Sxc8TwikxqjHpeUlT`Kl bLGkaEM?i!^ZP%fM\_RSh\UYl]WdKXRk[]VV\qftEo=Nwơ>~O܏Ԍe\ kr^BVޗ䝎՗|{|1uvp.o}imh\kgVBkhhfh"cJi]Ci^ykeǁvoKjysl1u|gry?wlq@wJlah\qexiGߔD~*zrmk+oSDZp?CMp?@IjBmIefAbE]^CD[rEGp_CFp^BXE:^CEWa,CE`CUF`AD`CGfc6FmMkE5Qs9DQ%s\BOp B=MsGBL}ut@Lcv>.Lv?L"uA MsBLrwBL4y@GL/}AcM{}AMx@DM!w0AMw@M;y0AMz)AMox@RMvA>MwC1N?yABMh{A8M}'C\M~`D8N}E^O}@Lz$B2Lu8AHkj?De BVEc@FE_@I4f0@Kml0CNwZ@Nz=>Mxg?Mw ?JMyALyjBLw@Ls#>Lr0>fKr= IsS?Js>%Kk@?}JhM?2J^j>J%g>Kca>*Kg?KXi @7Kj,>OIk}?Km=Jp@UKqBnKnqDKq*D M wmC9MyC6Lx@K&wD@Mu ?Lyr@QMp?LkAFMngrAMjAMqBL1rB,Mp@MrM?Lsc@@KNrAL~oAMblAMj@MiEA8Mj?4LEkZ@LVgB/OeCKOjzDNjA M'b@HK\=GZM@JRe=Ifdi?J_e6>ZJfU>Kd>K_(?lK]D@Na@>Gb@Hh@IeBBJfDKVgGMfELd]FaK`,FOKQZXHK]5JNbCmMUM\VfbxElsv4׺˧4*ҌoyW0QiHL`XTُ1pCI Rj|Rdg;p+ʁ ekJXH1W&NIhDh`Foyl%~ur$7nw5k݄qkN~brrt|KpƘɟ#Dcɞ]7oi,qZ!x h8q>ha'ncibreu:bzquc嚟qsbswsd!tgŔrgqhߏoiƋmYoq|lrh`J^OwuUMoURl$`]2eb_j]IRPhWWk_aYjkvcTh3` H^r6gLh`HV;N:zd[M.@*ySB rQWua|_zeMn"U]oIms}Rx[t@ydI0fMN?k`SBFgkOAdL=eN?qkuSA}cFU|dN oUXJ]MGAmY_EyCjOxgNiRGD:jTFm[&I@eDR?fP; xDlmԗIk.&oi⎫g]V}yUpIu|!nKulb&I?nTHQidRUHnE\Jv;hL~IoVQ}lOVwhU{ujpcNodt\KndUOtkURujM}n`Ne|XxPh@\Tl_Via'[mhdchtkqڈ-xjpz~ԇj?T)^{lf_|SV4yyukskpmqykfjekf^kcUk^3kJbd~kWjpl[yt#kM|gtMuAYMTv@MxA+ODxBOMvAhM uB"M1wCLxCLT{DpL}CK2|DN{AGNyANTx@)LXvAEJ%nAFgBCcBVEd@GiAJ9pBMv?QNEx>Mv>Mvz@Mx7BMxBLv?bLr<Kn>Jo9>Hfo?IKp> Kk>Ji0?Ki>KGf&@Lfy@Li?K:k AKpk@Jk?yKm>K\oALgoBLlEVNnCMpBMriBzLqB3Ms@Lr@LrzAMq@Lm_?#Mi5@Mm@MpA1MrAMr@@Mu~@2M9t@8Ko`AKQmF@`Lm=HKFl9AwNh@LMiP?Lhw=Je?>Kc@6LBgF2PIlD@O0fAL_CK%^iB&JYqELC_uAKa@LdH?aKd?CJUe9?Ig@lJe@H^\AINYCK;[5Nz@M~zBMwBDMztALqm9@L!hS?L,fgJoS>JFm="Km>Kj@Mf'@LFd< KWft9G `:EZAK_CbOYdFQ\g3DNcAnLE_DE:O`CL#aALaAMc@Kf?IUj=G[g@IecBPHc`BG[DrKY&AIX?@uJdBLkENi_IOe?EIcfCGbAE [;?ET|AJ{TIWZJ=\]aqskq xV.n݇S Xް`nשƥɈ}5bmSsӆaA^fjMjgPa7|_䊳`ړdwXncQIcoiPv\w`x8jBzM};g~v_yln Zq}Twtmsy؃!y|vklYkb`lkT[|`=g&Mkqmnb)*u.`C&wBgc2t0g%sdJlsa"v`^war?fjsir#kJro/pjEn` ncɊ'ldf\^CWh^eiEZN|`Uw7WRLv?aa{}qpGpf_[otb\}`v̆JEqxi\H`GpJmwnnDQecTsbIqKJzvT#W^ۃ\mwHq[:Fx{jf.t䖏u*|w^o[IUlMYKnt`.wfh.PeQE`oMa?}`qMa=_L;\Kqi}y#BLtDL?q(D/Mn>CM`srBM~x@CLzAK| AIyAWM0w@pNtANsCM,pUCgJjAFW`C1GZ8CH`@Jo?M zC=N{<ISd!ALa@)Nb>Lf.=&Ki=@J{hBKdEMb*BLf A"MskMAfLkACJiBJjBK.lBKlAwLhkCNBfpCLO+hCOj2ALglS?LLo?!LqD)MWrBWLs@Ku@Mq?uLn?MqW>Nt>MuCMvBKs@=L}s;Ib[C6NdCM5jC2MntAHL!jyAJb(BH&`2BWIN`sDL^ABKKX@JicAK}j!G*OSiDfKyaPBG_CHa?HZ?HU}@LTjGX]R:ijl{Ss&*ItHwY\sO.Bt6{CMlgwD}ěj\l Tx+n͐mV]?UX~tyN^yT wfVHczoLm`HyskMex}0`otu`pn[undSpkiXZ`&g"^NXh}_Vd]VLgcAa|\RQVgoXsfdh 5n@c,s>chug̗qeuqahtbv6_xGbɘOtKh)>skݒKsm葞ut4)oikn]錛iUZi\w3g_}ki}bpn`|e5Zy`ZfSos_\Uw)jBfgmc]ceX1`%zϐ5y7vRvTwqBU{k mZx^oVx'Ww[OU~,P[s]JnS[<-zeK\Vr4ҀAWpyjM-q`P&pS}etaI)gQyA^8LqaK3xc?*K'vyC+NqChOoD^PpENn'CISlAeF#hBGeAG gAJm?MwNv>;N(vD@GNq?LhT>J:`p=J1_+@Me@>Kg>JiJ@J?gDFL5dELbDLiAKm+AKj8C|KNj@qJl? Kip@|KpALkC@PdDQ\bD4Od[BKj:vGn>7KqeDMVp&FMq$BL$q|?MnR=K'n>(Lq,?NsO??Ns(A,L~sbAJq@KpK|e=Jc JbH;I_8FV6CV74C]f>qL^etAOofAFL>d@J awB~Mud>Idj=H'dBLfvEN0jFLO]kGP_iCL(`CdJF`"CKbC=M`?JZz@HcBAHhDIe/@D^ BF_2@F3^?vIZY>yJQU>L/TZG/U\ KWbfhtpx~{qW9wb|v~@ sjB5Fi1?ȝ}w@g%#<9}ǧq1ri|"I|F `ĔU{Pktg]ygN[q3T5htaQkrkU[o[LgVZKpngWnnaiMo']$ffV=k\icUVSZ&WTaHb7e{Âaa.gtcYizek^-q-gueB_tLe0/rdpIauc~yIa\rzb:ugrwj\s)mep6nelgi[SgVChX&~g[hyi_Qo^0}fcTx]QkUrLfVO`rTsX;\ Q\ulm܂xgtzWx`vq\nuoYy{pRw[U˕"=YΕ^}R}N!FuHyZ?|qWBj0yaՐyGГQtotTubPM&|[fȁb y_cC`j:R@YILq>Pu>>P8v>UNv?RNhvAGNrH?MFk;XKaUOKe=Jh>aJkh@6J_fC#K0dCJ5g`E.KlDzK/m:ATKgjJAJl?3Ip>Jfs>Jr@K'pBGNiBNbDNaAIf<+Gl?)K+nCLmF{MkEzNk8?pLlB?Mq=KqY>UMrR=2Mp@Loy@Jl>JiB?Ke@L`>J].;J.a'=K:b:pI_q:yH_\9GZ:F$V~7ChW5?D]:I,a[=Jat>I0`%?I]{A0LaCMeBOKcA LdDKMcH@PFe.KZSijE(Oe>IUaEMfVALcBKayCI?f\@^EVfsAE5e@DdCFbB H,_4@H[8>vKU*>LSGQK]1L%Z@aZhh'mrj|&~lݗ)v#QTbkkB-mlFf6Om`"}#ken}fؚvpe.Ҕ,zȥ8f}?ovZ}dp_`rfvV+|ntQ`xh>AqҎkxjbxdR]WNJd^ UObdUfl Ydf-XcbcVWTN _Y|TRZ]^h}߅ydek^ZgZveko=X{vdRn0[{KhU8FZp_HxphVڈ~hލφq;n{t@bkr&i7[uk^`,u gA my=ӮBң !x>rEi&z􈋃Jz~·XƁ[}|Yy,wz)x.|D{gyww.uq9q kotg>imXiZ@lZlI~khlgzndچqdc'ovlmm{}kQwy3}צy+|"ΎvY*q{k}nQ\|hOE6KaCrIdDHy_-EDZMECXDDy[CEE\CE_BD_uCEQ`BF_QCJb|EN]qEpRyx8FRrDNNpA[Ks@L s@eLr@KqBsLMoA)MrFB@NwC3NDs?GPqEOIoDNofE PHoF?QAmHQenZGQpFQpLGQR{pFPjoE)QOrDP!rF3PbplH^PonGQlHSai5GOfBH4h@D'll>^Dbmz>Gj?If?LjaAPqAZPSuh?EMFw@M:xG?Mv>Mu=qMlJlp>Hq ?\Jo@L!iBMfeBJh>pHk?AJ m@^I*mDCLIk%ENj>Ln?LRrB8NtD?sLr>Lo8>Ji@fKf?aJc?=Kxd|ALa@LB_=J}^=IZ(;5HNW:G/Zl7DWZ7BU8ADV5zE[9ZG]7TE[=H]?J\$DN`FOcDL7bCL]b9AK\9KQdHfQh%EWPm>pJi@Kij>JbgdBLgEJiI>XAJTA&LR5GPZ\LWUcbSW`fgo9_x9wk|6|ȮZsyQSF{]UTޙ5|19l͞,{UFRd`룦OX@f.r&j5~`}yrfavneXTx|kL}]U-k;mRqX `QJaYhR ``Rj`dODddZVZ\{PYSL^EcKTM`oW[asiudmvZ^deXWbsbhmnok[ rfe s]aqt`vFdyvf̙xgf)wj`0#tZertf⌝k~ec_7b\xUiY]poYYl#Y{n`_~q0VxcLQjj\&K>XP`B_MG>SQRQo*ihmSd*Xg[Li_#MuraYvayntriziN oDᇵoDx/Q~YjUE|JMzT/vU7q@V߅sPoIi`oKMYnjtхr{Jh@S}<']MA[qOFbSJ{_O>hR/:wcD|hDwKwKy&a<`rU8yeN8}hP+hwgVgȜm8­anð7n3É`o!ysjIPugtWw{=fzpKQuԣ jJ}hZ3^nMydH taeHEt b9Hub#I}yiS}l%(mv~wCsT}sr5}tk@xj]}nM]ڊtTz۰XuvEU}ՄW}=*y}{qxErwqyqrb|Xx-}Bxutlo;r.lŇroi:Zlzf‡6j=comg{3o5i"q]lusB wsIm0ܐGrPϤ~𻴨{ ֢3~iAUkE#%ԆW~0rT2`j)DK|cBDAKeEIR_F F]DFD^tDQF_CFp^B0E_!BD<_BuD_CF`@CSIbEiMm^F2RtGvSqGRSpDN[rgBOMrAKr?gJ*rBvLoBVMpBNtCOs'E5PpbFQnkFpQoFRoFR8nHSIoG8S5pVGRRpHSKo2FGR,nERqEJQqIGPpG Qvn*G}RjEITAhVIP;i/B%Hlj>Dl">Fn;Gj>I!g?Ji'@M7r0@%Nvs?Mw@Nx@rNy=tLzo>Mv>Li=J\X@J\@Iaf?0H>bDAGId@HgAHDi-B)Kg3ALfd>K4m:>'K'p=L}m<Jm<4Hni=In>pKUkAmL+k@Jkl?H8m@I5nB-JpBOJnbBLn@Mr=KK1rAMHu?K6p>WJnn#=He? JEc^?qJ!bp?JbA[Loa!AvL ^;>AIVZ;#FU>H^T:pG;T6DW9DW39,E X7mE.[;F\%<@FZ=G$Z?JY3EHP_FP/bA]LEbpB)Md+@I_%FBMc9HP.jCTN l?Jh@Lh@L`hZBKCiwC8Kyi@HGd?GdY@GfAsG8bA*I[?xI V?IURFD&HZQHGaPX]IWgiT_iNh~fcυu|Rp3_:S^7`QMw\ΠG_JdKoA)ЂQFcvQN4>bJI?>RSOS-q#nowqqgqsfO}n]ItmXx{m{|-n}2qVņrMtN>{YG7~XWPW7wGW䋸wZWi4N>~xgwGf@XpNǘ{o*=|}Vax,cEk1VEbQDhUW1JgSDkT>wcDgnF~Ryx0Lu\&:DfM.oZEwleFL$Ʀ}NpӜ.i6ogr4 pm=qr*sÖpG/pn7s\xlsiw[zHʄlwD#}gH:yfK]p\IkXpMZwiYu]cy1cynulYfjcYViMWgRՀwhߜt~Ѷ#Ćn򖡀5|[^z[z8|wm s6uu.rtnvpaytI~{QԜ|xplOmh{g`vc@Z}f^Fkh+nkvo?RzHhIvexD0~5~[{Ж }iu!\)e7rFMeELeIFK^G Ia]EF"fBFeBE`CHF`CFp^CEZCQGX[BH^DLiOGQrwFRtE;R~s&D%OpSAyKym?Jo@L~tALsBL sBTMsCN8rmEOo"GURpF6Rr-F StFaSr`HRoGQnFQco GSRnERnCpRoFS\pIRnHJSnERkEiRFiFP|hBJhIwk>Ksp@Nz?]Nzr?2Nzy@)Ny>L{@=Mny<LXm>^K`D>LIY?JNa>DIfq>Hj?Im>@\Il@Ji4@KhQ?ILm?Ln[@~N6lL=@LjJl>Id?Imc=H`GaCuKa2@ZI]uꕈj-aFElq`'TtjCUsjRp4hN'zdN frqELt^T};e$xsZ{kLzwi`n`od0`^YPTZ]VR]]'TSN|bPD2lSJg]GP(p3pkmqpqdRfjCh^Iguag2oÆ2p:xhs@r+vizrcs=gJuJgBwezcߓtwtctd֏obg ase^J'j\p\~nV~h`Xg"ZGRdShI IvN?GINrFIvMGTTUkmoLx`tnjzmEPI{eIbwcgNxsqa||hʂ uLY{{wW ujKweUI]i]}Q tR~:fK2~eHEn}udM>mjfLAwd9hx"y\T%lJv`"IoWFgq\F6lWkEZiCTOBgra\IzeHvJzXk7ttNoY=]I`/fSR.u]Ōs=ŬrѝomP]mgo/lPў;j1jѣcw9NSiIv{hLudLg_UnIfTGqw^GzxWfANvlj_l!bE_cTYa%SSnYdUBjd= z,7)+Qޛ)w tⓕ|t-pozQkUjcpmvrԙOyw|uN_vSyKzqfzd;s_Xk[(Qp^Xhzim1orrDzq#{$]ȃ}ݑG({ܝDȨU[6FǡzOv=~"g0yB97bis=IOfKn@MtAtMvBMwAL>vAKpFPVoGQq@EZPsD/QuDCQrFQ%o"GR"l#G'R"kDPkC'Ql3CHQlqFRUmHQkGiRl[E^RlEyTjEVgDNPPe;?tHe;jEXgw=H|k>Hj?Ik?dKsqw?hM0z?sN}?dMy"AM y?FMUxf>$Mu/= L1nD@GK_>IY:2Ga=pIi!>>HkG(h?Hgn?Ie=Jf@Lj@M}kAPkAGQiN@O

7M8]EAN]DLPGcDPnAMQtAtMvBKwBIotC~Kr@Kp@Mn9?MpOHe_p=3H^>Hu`e?Ha@J a?J*]m9_EV;ET=GT9ET6VDV9[G"Y:G+[c? KaBL)b@L^!BK2_AJ3eBJ.i ELK]jBHEf>@_HaD@J^?J*]:}JTQFKQIG#MMPS[6Ja\Oery.s^l[jT˃iޟ9zgyd]rҠ~L#o3$IXv?Hj[#z%Yp;fXWHb\M\tVMkUcYL“pYuFuMZTtXȅ.ub2sZy h=Lwm^q(j%Y_TLMLOO7N[`[aHSk^MrY{NUji_Lm|n`MQӀerSP^lԙx׃wBxantumDzlssAohjh.n*kMv_qȕzjt!}6˖xd҃,qqk]xg^iZ/P,m^V}3rgr$1}$Έ5zo;ld (ߓ{#}`~w˝WН3xrLt{ctGclyrHNbEI`vDxGc[LCF[8B@Fc)A FdiAEnFd@aGriA;Hl@BH2l5?\Ho AM$xoA'Nz D4OzRBMxRAMv@Ms=K kB@IWE>YHUJ=H ak=4IRg$>]G|c??E`?H=`>IaF@KeBNgBPh-CQTjD6Rg_BDOCcASMY@CLWfCkN`oCN4m@_MtANwA'LBx AJvBL1se>DJcm:@Keib>^K}j|=Jk>Jft>I0`>mH7\=Hh^:oGXb)<}Fd;IGa<I@`7DX9DcW,<FW >IGV9E+U:NG4UEH`{BtJ|ehEKhFIDiBD%gBFdX@EJW_>KW=:K%PMELQWPREQQIsoV>INtsD|*l[2k!_Xvg-Qz)jNR}o`zpR[^PTF@HKHIRSVM_QoiW x%htXDjv_QLpk_EqkbggYP"ma`:a v=kSo_zm^s0pssr3rcrقolr\gues`Ps bqXm\#VmHcToe\oc. oeaoc T^T,HDE;6LC6C7FoF-EsLIFK"HHLI)SRMiaNvIftLwkeLVuUaL7ydLJy]c}Lwb'KvxvWhtvŅ!h>rRmuRCxRwNrHȇp5K[TmyF gA|e7KzcS;~b*N~`G`?E^@Gl_BKycBzMfCwOfvB[Pf/A0ODh;CNg'BfLcA~KZ ?IXfBKiaBMjCM9sCMux@Lv?Ju?LqD@xLl"AuK[e%@Je>I|i~<Hd>IS_CL[MMHWd\9Ph [JocDUHsjYMubOw:dNUwd`hJTrNÐ`kхoY w`SjX]wJtK7*vLj sJҁgiEzM_(@qu[IsW)N{_K{Y`8GGxo^GqV?FnV C]hP):^@MBVHC}XH?V1F 8X JC;B[LRmVX=mZJ n^OmucJNsme KoCfJWzNmWEsmh_|}pkZwpoynw"qyl6th\V}qZe:yQ؃v͈xznyq!1y q7mW\䃶hi\/q:fxj}}'o(}qy'mHq_Ɖx$d݇z+i4|kaatW`Xzic8sMeN|oc|eIߝ{ĚuMvtŝvƍp{T{gsVzc0{܃%kMrFpgymvb`owJLQ7m>)AdA?@Hb-BC_AFa`AQG9b!@>EKaUA-DaBDcBC cD%D$aBDUD_HDmF`DJneDoOmBcOr?LFr@hM8r>L~o3>JZq?Kw@K{AIWyCJtuDLspF@Oo%IBQpHbQqE2O3poB7Lh/?[J\AuLZ@LB_BOObBP`CP}_CFPh`fBP,d@N)d?L_BN`}BoN'bAL]NCJZdB.GZ]A E"^ BFd@Fk@*IprjCN'{@N~>EN{c>Lv?QLtI>}Koy>ISdA:J4X>'GUV;>F>[>GYA HZhBHw`AJ.clBKudB Mc@ MblAyMof?BLgAJrdHAJ^o@bJ[;BKcEMOjGOYqD}Mq7DMqn@L1qFYJHGWK}I PPQNYWKP\Y`QtO{MjKQO~N,[ZS h&c]mvtrvt nur}hu?pwgx#ogS~{pUl~o htr8ecgY^Ore`\G}UdYтj$bd{d"_[t^[vb`wjedt d8`d}Y~PUIIND=E]H>G$K7CDJ I?GFn>E]BF{JBB^YLdZK[S7J7\KTMl_PseSPweI~niJ㏠l cu}У0p#k,QčsFthJm?JZwA\C(uWAmREfMvDsXvbVLdQ?Bp7l!Ÿiٿӛ.lo֛p_nmgkplHl(hAgnQrjpl/(p9f)qE r[>zmZIteHRypVzqMGxkH{}m*Mo6Yxk]zney`lNc`vpb[|wjcyu_Kvwrn<חBwT4>k~+~cq[{phLU*l^rughxJnΌ7sgqnN_}jLVtlbLnm"}9o5sh8{;r+sy]׊oQ+i'히{@j|&{{|ۉ9pqt{eFs~jN|։{q`s\rcux]nWOT]8|AFk%C@HbB'AU[CDe\z@DBaAEdBxDaCDebBCa EFaCIEz` CGA_OBI]_xCEMjCDPt@MDt@Ms@Lqx?KpD@JCt? JxcAKRyB%LrALo^DqNnF.Q]rG_ScuFQtfDPOmgALza^K_BNZ~BPUDQVGBM Z{B8Ovc?Lqb>K$`?L%aA_MaaAK]8BsIZAGZ@IE[`@E` @F}gAuIjmDOv@OFzu?Mv@Mvs@#M`r? Mp@KhBPJZ@FU\?DX?GYAoIYAI_@gIb(A1JbAJbAwKYbAKdBwKiw=GdA;KcALU`6?HcBEKBjCMpaENqwDMl?J+G`;F$[`=G#Zz~eBaOR3JH%IQMFP7R MlgNwCkfEK8EJLBHL?%FCCHW;QQ@Z]TFS^QPJQTL^M\\NpfQwgLpQԔtk}d{Oʁd{4x^#ktC^rIz}hIpNV@tY)CqzUEh]OFBjpSA[wb(HH~h\N\x;`K;lTD^ N"?UF>TF>U6G;VXE5:WG1cOi>iR]Fw)_(Nud[M;]]LAx1n6LoVkpun#p) pdBn7AknQqPj65fg%Nojus[ lgnhgauEv`>rbFJ0y"kDUBVt\w[tFVspV9pSwhTln`cZhhWXqgZWybb`€nNo=sm¾>פ߿i#r!^|4dmO~ jZKlbnilc|gR4|(hMro\6\r:Y|1Is]?qW'skv~a׏y`:v2^|=6}e~r~(&oyw_|TjsN5kz$vbts }g/ybuJ_q=gK'Z{hBZGd?@)Y@BZXA`E]C"FawF FLa;FE`C$EuaJDETbCE=bB FaRCHcDJqiEANpCNpcAGM`p@ LpHAIoByIoBJs@BKhuq@L|rBlM;oDNPqE!PuhDLQnwDQuERCo(FQi?@NvfAN6d EQ[ GRTU]FQWBXN]AuLbF_V?YE_@BF_JAF`AHfCLpDtO)w@Ls7A+Lqq?lKo@MoANj@J]AgGU#@[DW?_E]N@G_W@G_^AH`CIb(B(IaVBJ4_BJ#a@DJ,cx@KbALa@1K^=G_ABKisDOpq/DNrDLpkCKfBJikBoJqoDK{mCK[i?Hb=H=Y:FW<~G[;E[HFe =Hqc^?JdL@jHOa>F]yJW9BLR^EZNe'DMjCaL jCLdCVJL_B)F\BACb??DfBL/kFRmEReCM[CJU5mMOMI[U|eQ|8|.l3d5fqٗx}|NquV[Mgyrω&}}ly#lzb kIlL|pW^NT PiG4HNSUQKje^HGl\If3UNr\VLp~qX.|zd,m$aV]Meicg_d\FH|JEcOQ[OzQRNVUPd]X`fYTNN?S[[_y_?bb`a\_yZS h]VPtjXbzs4l{Csnqx=qmEne(g+g?Z6`neW7_p~bx9nawibc8VYf[]m`z`4q1dgEe[YIIJ%;jB\G^@BF MGKxPGKRG\IEDUK6ZIK(7JO/N@iM^LFMPJ_YLNoeOziP x[t'aOh6|ҳ֝y)]aw{CnvyKĂ|n>Ivb+Bt]:Bw^HsZERr\ EzzgVJWonR*Cj^M`yesJlVH<#T0GY;UE>cO<w_Hq[YF@oTFjQFWH->ٕi;Unom"º|pqc l·Θl7PlҺm3ofnixfM:oNӑv#t璸jHidb`wFwb@tdzK{kTpX_%uC[vvOai:w|d}o}Ytqa=O~ld^WiWWWoWSv\Wx`e)VnmH z}WÙ9s>xWhUm[(Jn]t_iG|,ƅhqHbgzdN{lw\Y s$j~ss}wguipbnVɔ}C^8;ry"vqMzTȨV~|Ƅnmx{Ojnyvs^p{Zpq٘vFp{pT:[n>@_W~?@X]AD\8BAD_EfD`DFD_DuE_DFL`CFp`EFTcCcGcwDITgEEMkLFPmBNoYB LrCJq~CKpJBJq>Io@KncB LinREcMuC4NawB PuTBQrE\VoEU`n[CQoyESkG$UaxHrUZEOUK@JZ?Jb>KGfu?cL6fBfNifB?N-e/BVNe=A:Mc>Ga@Ea*AsE]B[GJ]C!HdBICnBvMvA NFw@LKu?Kq@NApANk@gL=d/AfIJX@0EWH@E^@F_?E!_&?AD^CEa@FOaAaL^AK*[@bK}]2?OK\>OJXP?hHW6@HC[vBrK`?E(QZlDC Pp[E_NmmCKlBgJ pDKtyELp6E(MmIAJf@I]Y:FYIbS>G`9>Gu\l;^E+W9;FX8F0X:KFCV8ERk8E,R7xDQG9VFSb;GBV;=HX>;IV?IX@sKZDN{_CEMcSB1Mi@BL9jdBLeBKJ bRA#Ga@Df@&DiRD,Mrn'HQgEO.Z-D7KCRDHQ:fSUYh+ct%la~ݽ>2rB^(jÀQPh8pg)~5[gxbN8~{oe$ Cji5x^)y`I|"iU{fr(ce*^TiNM(N\SKq_In_MncZ߀coURcd>|C;ipZ~^si'N\NNMPQNXVO;b]V i[_VoKflY_WIX#]#^]b&e]fk)nQkccoa-h]^k_Y{erBk|to{trqhWhiZU]bmbyXqju3iuzSizwyjg8YVbW^j afGofh`wZ&XKUMaPByGJ1MOPPLP^SKNRGH'EpJM>D)I:EHX>OLHGSQ'M`sZMPjaN|lbQdsa/cjV+юIgDES_Ԛ^S0v&DxKxK{mGw,`@*x`)EydGD|hHւoJ rN 2lvJ{ h7KxwcIyiZTDaaP>DpUJ@ TJQ>(fROBz>eMy=c!MrXoG~i QAYIN;ebB$mfpnoN0+oԡ(iMj8lQsl[ftjÍ~dy2j~c&qNӑvSsXGlDP`܌#vHu`2DqdLv~h.M}jL;l~P3{mW+udiYn`PgWKshY@=SI@dC\A-E^EF^FGF[G\G]U|H I2UEEGW2E.G`DGHd-FvKegEaNdjFQn CN p/BJr0D'KtXA:Kr@aL}r?BKmB~LlBLrBKzBD`yA0EYa}BxFaAaFfB0IekBLrBOOAvANxY?Lwn?M^w7@bNYsBNziCK]@EjW @DsZ_@TF]n?ES_R?|D\a@B;`u?DgaR>I6a?K^>J _3=H[;HUy?`HT?nFHW?wG]/CMiAOqpCOoCLpkBKsDMvPD,MtUCL rCLmPA(Kd>wI*_=H`Z>EaVE _>OI_<#HR^HX:FU:GXW9FtW8mD\U9EjQs9EO8DP9GUr;J[g:IY7>JXW?JYGALaBMeCeNg@LgSB1MiBKe!@Hc?EHvf`@H>kzBKHnyEYOfosFNdBITB5HLHUMLTI/Rl\ht&o]tY\[{gVL'iy!8cwxhuX!m_~M<`[V&I}a*T FpR_Kfl:`NGvmbjg.iDMuxƄ哧]Xi|Wx{qW X VSiOOLR\WLnh_wk._=sctj[g^Sjre1c*oops.tsOuplPrdfW(ynMgo}8t6m"{r)luuBj(fm ^{[Ktfb {'msᘹoqmapOa~USof}\di`cc\ˉW|S]C@|QR?tBZY(AE6^DH`NFeH0Z[HHiQHH PvGGSE0H\C-F._BF_UDBMifEQoEDBPoB~LpA0Kitx@Lv?FLua@Lo@Km:@Kv?2K|I@J{ ALrwCUOrt D"PpXERCp6GWmHUhHS,j@GTk^HgRaiGPcCaL`?MJ_A@bMdANf@-LiBMl4F:Q(jEMe@4FBdBE5fA(DcqAFd}BJIfIBJUiAEKyn? J+t;?Ky]>MO}?NzEPpDLb,BzGX@gEX>DZS>D^@E_?D<^>DaDwVZ>\D] ?HeAMnBGOsALtu?JsBCMFuBeLuwCLvTCNOsD)Om\A`Lga>pI_GVcM>Hb=GK^>-F'Z>&H7W`8ZF1UN9ETy;FUU_9C~V);FT&J\'?Kd?}Lzi`BNi@Lg}BLgCKLf@IeJ?FIhzAKnD PUrD*Pln;DKbD@ERREGJJEPI}K"T_V|ɂ{fzחuqeQ @x=|>q6>wr8RmIA>b NE(^QnQ]vfўO{µ|Şv*tԅGqSk)TI9q[MnzYbEm_EkZTFmv\!LocaGNtkZs?k.lޯzNȍd'b2[uiNSUTTK\MN[T!R1Kg1aVX|l"]n݈Q}kviR]*i]]lo=fjsppyul{pN`yn6e9{'qh\zrAhvkcVtcIcyqmERrآxfw;pUg\lQy_KT*Wc=>Zr@#C_BED`=DFX$GIHKQ\HH1RGHYGHZpFFWB$F\DBMh3GRoGTHoCnPDo@Lq?'LJu ?K v>QKrr?Jr?Jx,@OKq}@JV|3AL{CNywDOp$EMRoAFeV>l$GTg2IVkFSNnGHRmtHQjbDOeAqL}d?KdBM/ccBLfEdNjGOeYFLbFBGeADeCEc@3EaAHbiAGc_A GgfBHl@Ju?M~E9^>Dbp=DgL=\Ede~?Ha5=9HZ+Jg>0JYl`>IlH>H0e~?H`=G^0;FM^Ija?Kj^>1LikANk4ALhCRLH(HNnKK\`Pj]|Khq[p_wF~Dr2j3OBl@9md~TJPw`MhTEJWhKD/XI{ydG>\mKnH~hJtp`LNnZG|dEnMFsG (yUÐsBUy`JkTKjrWVLjZM>n`MQoaPm`hOw4nZ{c+xO_Wq]wlb~v-n.r|$q__l\O<|Ul`{n}suvƞJSϞ$sz+liqhINuaf}XmCymmxJo}s+zOtsr`0~`x=Dx;:ow6iAxo|5uz]ujvTq_+{a鍣f⊨0c|`U~6l~{Ŋق4XЊi{s`!cln]uHHA\ @r@`B_C.bmCD_DFMZ$GHU>GJ_9JMtqnMN@uGHbCF[AKdFRm+FVo}CQnRBM:o@JqG@LKu@L:u7AKtf?`Jv@KyALDz@M{(B$OwCO sOE QpF5SLm?HL~CPxBSNFkAI`@DVA2FVY@ZE_@D6a>D`=DcA=Cf= Ec=IF^:D>W :DSO;DWT Lq @J+q$?rGiT@Kg=:Ih>BHSmJ=tEf?Hc9fErdJh>CLBl>iLiJAN$iJBL:iWCtLElwC&LiXCKfAJc@@0HenA(HisAHUf6A|GaAnFUGLKrE3M&NDPTcidWN܄Ѩ&~txޞz܆9X;m\<d7~PsY2aZOt;zWAׅ)p\CmwQۡ[1i13gƝfo#֎tk~i>j$V.I^MAcjYHb RHdyVP#vh2X0u_uEހShFk"IujrA~Vt\1>/]NC,J!F-HI]HKNMQ`WS+X^L{?#}k Hz6?q%tomIvusb u6_u0jbrih#maai`]^Vt up1} xp:xjhZNhwma]oe\t ldMvmjt)i@bQvh_rIdZDnxaPpiKa3Rf[m;cunzT{"oq}n]lbOcl`P"xpdQr^ M}jK-~`!~kv fwU_|ZK}^[J|#Y|YZ|w,WmTzaMnVIkiS}Ba3P>[LT>`!N?@DfVQ=Xs+]=HwOe M|bjRq[]@J^NDWVG~=^I?nXVIւ_sVf}uPSjbvw[)q X8xQGW[֎wR]rW;d0QP>xjTFq\JwhU\xm7Zvi(Sx$kQZ}lJ^djND u.K1UyXGlsOxuaOM}n7[LLgTJhY^Mp=btPr{eAS|pX|TZ{>Xun\rKbBzEhʏt'l>t_tcR}m^wdzio/΢Bׇ!׀?bu=:qC7vtr`uk~}uys;=yላzaneWp]K}Tl[zArf\|}zpyoynvwiY}{Uh/jWцti1=faYkkfvE؆Ӊ ÛBݕИvuzLKy[B@{B[@+C[NDE]JEF]FIC\ILiQQcj\|lliH"Mh@!IfD3RaqDVsDE'RpxC"Mm+BJoXBKs@KsAKswAK@s@KpALrBKOw@AOrvnCOuEbP;srGRoo:IRiIRfGXRhrFqQ)hE3RFkE'T^nE;Rk?ALe?Kc]BM(hGALeAL`?K_d>Ia=G}`<E^"?Dk^pADDa@BcADdBADb]BsGQhBIpAKLtEQsFP]lCkJe@0D\IADw]|@CcAE^e>Ea=DcmE?e#>F`8EBW6@R;WET:EU=#H9U?J[J;Gb0@TLmBO|t@ZNu>YMyw=JK t?JqCLuCMyCL|9CL{CN\uB@NsY?Lu<@JBr@H k@Ji=>InK?Ht=FpAIm!`?N=aRHAuhMrcDr@\CsRWPӔtؙ_mdu4d?aDUFRNEO IF\OMaTokGgl(_JyXmD3KpLnÀmm/TŎk)Czs74gk䂡^pdYNqYe[g]\gI]dGmyj:f }[=%+NjoنvET՗fDq {l+yo8isvjpfEuhsbuu2e`tb[5u2d,UuehUqp_Gٍ',qtz+b[l]KFmXvIiRFs]"Fw [FWgyhЌ|\{V╩VٙX }W"y)WqhU~hMnX@G bKP5Az\M;?b}PGDcJPD`5O9`O?i^WHzhUPCzeLlSVG^K]A`X5F?PdPXEwfZLyMm@hYudFo]v2c"we0^~PflD?kUECWiZ~M]hc]Pr_iY|gs_~vWcU}nJ}i,rcUӊwW;~`IuY|>lQuc NJkVKgsT9Ln[]MufTQ}~oYy\`yU%s2R烜m/UK,ycՕۉrɋ{f%|YiUxl\r+\{{cnuxC9L8`Uȡ|@ˁs7Mpkgӊv?{;‡~9uzhUxl\vwpdD}q/%s3uwhx#vfÇo@Prn n:9uzaكÞ֐ 9c6xv~M|N[G@D"Vh@EWDC{E[/E(F^lE[I`JpQq`;b{\JXlj15hkDNAnDQrE#UtEPoCLm)CLCoChMqAKhrAIs @}Jjs@nL>pBMyoaBDOr@OKw/BIOxCwOMuNEP8ryFHQmGRijFRiPDRiETlD{UnCSmwAMHeb@jLpd@$Mgg=Ke<7K"c=nJa=H_?H}_@+G[BF\AC^@Ca@pE&c@&Eb(B4Fd@PFe?AKhEQ nEeRm)DLgyAF_@UD]O@Bfa?DbL<_E`<4ENb=sDd?Ff=Gd9!DMZ6UB T27cDS9ET9ER<_FVL9D[^>JeTANMnN?Mu>LvL>Kr>Jr>qJuAL{lByM;}*BLNzVCOu@Mt@MxA Lu@InP@I!kO?YJzo?JAt@yIrN?TIo>Jq<IDsE>eIrS?Inp9Gmz8dF]=HMpA>KOqAN=]ANZBO_BOaGDObEP=f8DNjjCKi=B HbB H`aAVFdAE cBHw^ FLWnJ8O!RLTW/m5r nwޏznΟNo|LYxx:lxuPuhZzkpd\69vQrk2ĉg+idN,j:vzS{o=5nVRddQs//hnVACQXSH:_|KT2nS7IsbqE3XtM{.nIp^J4pWJTjMnUe,zǕfÄh3au6nMk[Mg]UR=wI|eyl\L̈yre^[t-e{gWّk-{;pm!b|oYud ZYf]fh)a]ImcǪS}2]jit{Ƣŕ[nPxqz$ou]ibsgevufTbkr_Xub'Qzh@V xoUp{;뒹q~z8ZBrr`AjRCoWGqO5mz\VdF2jւaTM5TߘD{Ux2T tO}eGLnVBdQAfT EqN]J}lxVAGgeVCX#M>U%JA6lVIVr\"G/s\ICfdQEWBGA)_|M'CmWIo?\O˗(?ˣ䚊f{ }cwt/ rAVs?_K2q\fET1lfWnh0Zw(qsa瀧|ox,p\xKc̈y`su^[eoSxgNMo[O{iqUpPOnE]QvFhX}rt`1d{acE^?wiU}fiMEqyh8|bHqmTÀj(U‚*k:xgŒkbU~?~Q!hg{z88Qtuzovvqurklo$m]cyj9Äq׈Yo1pjs)4 ؃4Aot*KPe>EX:>DVBF[(EH`EJcLvTrX^=GZN5RmmQ^HQpEZQ o FRpDNOnBLl?KCmAiNp ALUr(A:Kw?UJQy=Jt?LFq@(Nsn@NyFAN{D8NxCuNuDOsEPm$F-RlFSmfERgmCQnnKB~PjW?JMd>Lc-@MfL>~L+e">Lf">oJJd?H`2A$G_BRFX^BE]A-E^@ EM_NA8FFaBFbmEG{d_BsGdJAsK)eCWQXmCQnCOju@uHb?D_N@C_AiE`Lov@Nr?yM]q=JYt8A{M>yAENt{qB*O1{ DOAuB0MrBLvAJQu@ IpA0Jl?]Jl{>uJpD>I-p>Jp>aLr<`Jtk>JNx>J)y;I@w=vKm=xITBKGbUCZHbA%Gb@WE__?IvX@LUcKQdQQZbwT{uyulՀJyjC`qu쐽u֓<{dr7}ns5wspH=qn⋌Cч'm(/c05me>xN㈙gYt c׆uWjtYVsBbN,^NeLbL3R}Bg8Ӌ|~GWُ?O_qPu5cNrbPHfR5Fy7hlI vjIuۊ~t]Xro]{Yra|ԑDxzkT~lKQyAeRjlTODs_Ӡ^ku~̳}򰴅eefZXrf]{fjNc`zqo_S뇜qz&BuթRbL[wr zfmKhqcoirJdda\rFaVu~aPzgOTnzlaL }[@M|/𝨙">t|<]y`|Is^`N{iLۇ)vOd}aLEt\9pUSY|~Y{V-tJz_AhjR?jhSzCl[HtaJucFKtdLdSwDORD;VI=b@Qc=o _HhT:I8YKF gSIs]FHwUbIez/XJS~I%ćӺ%N=WuŁmWF}pXtl5VYqdPrg Zhzto⋮[Uj3agQ~Do9rPZ`u?^u]{iNq[Npi]KR_vqfdR&zdl[xm`sSmgp8Z|An]3evgq[si9KSiLqY%vf^Ɍe}Pb+k7Syei.y'#pcveaŘjttcmE^jxnۆznO*}c&c>ؓЎ~Ϗ(sKd@JM$b?NtaCQeDPeAMed@K0eMBJa!?E_>;D_@E^A F_?BD_,AD_APC]uCDaACH5e?JggBOmD]TjoESSqlYEMg>Cb?VD+a@E_=EmaD=E6drJk=WKs?_NLr? Oq>LvANz(CNzCN{D#NavD|M tAtKAuBJt@I>p}AJZl?(Jk>In=(Ipo>OKfqTLur?J7e5DPN_BNJX)=-K[T.ENM`h&e:\|wwoo7mawqBa͆vaj~n,Ovv?od6dd\-o󟍒~M{M}h:}e4=oE$u"HɈGhePp{nO{jL~odwclc#v]?<ÇV5rc5:hnNls`MudTLaSFK6g4UEp"Sz#rӍwQ#(eHtjr”o|kZzeDG2w_IWNJ8B}nrXPzgQ}0rؑüez-Cfmn=^0W2f.]dochgumbmq_}Vcyp;%߃ݳ[dxတҊ;q|mi4n<[6fp]D]qE`-TvbUyb RB{!fLzl;C'~&`-ۂw=^py\Aq?^oorK;Jz^.vr6_ije_Aj auLKgnFpXDp[IMp*]It`%LudoMtadKjVHWId>_SF9VL;eTEHneVSJaP{Ip]LycHwojIǟ?lҍvpX寨Ήͳ$P@jM[Zހ~dC}TpKr#aD>mYI-w.j\f~pF8x/ykKwckLnmYT|bsRybIcvd'On)YxvdʎƒySu|t‘nsR!yRlr\\~hN|anIy{j`G{-bI*l/ScHv^C~jɒvFy=cn،u!_Uu+aÈozksclUn,VSyze˅Izh(ˁv@QӉLj~A&{vWrYymgxpMeZyx{Ew*y(1Lo8vaEz]+ZkCk{^}t y팴L1]peyBHm`=AvU1AEXBHdNDIjfEaHiBKPJEeMKcQKJfCEg?Ho?MBsA5O pC$NnAuL~p:?KKpAOp@(OpqAcN5sECGNvsBFNwtAMvAM xB`MyBLQy#CLv$NxVA%OzCNyIDNzBjMNzInH|qi>Jvr7>Jr?Iu=IRx=RKgy->Kz<}Juy?JqfBLo@LIq?Mp;Kk= Ng>Njd@dOe>L9d?IbAEaBF`BG]A{H[x8eIxLfMH|q PƃNlPvnX߄BlIxi ~`pxNT:mŸ}Ċdi~h&K-e"TJy]SKsi_+UdYhN/aBQIrsHho NxM㋬g~F~P_k~Fj L)qYQGnZS>~lrE6LB22dgQQn~j^ZY|gGq<9@߳NV&~)n`}lafQ.ZmUcXpo]TZubV;xb(Tv]Nq^Br?QݚٔYA֞ w; d~b̈́tYQ~i쒀z\|U,k؃{lqet){}e=lyVp^OycIq[HEtc_IK}wTdJMq`IOlXGh&VHZM CRE[?9RTGAWLGe`PDk>3GMsApMv6CMMooyC4LmALr@LsAN2qAOqAiOrBjNus2D\NuhCLxBKxDM6yCLxB6L wsANv_?NuABQfs(FUMrEF|RqGQmFOeADKT^Y?Ke`>-M`mE K`3_M?\F_lA9G`AE_2A[E`<0Eb<HTe>Jh?LpB0PvAeOtBCLn$AEH%e=@D]y>%DPZ>ODW0>FmZ9DaZF;EX<4GT6DV9DuVE8*AT8BSP8FsT+;;J_ ?,Mblv>xMqx@Ox?.NFyDMHuA*Lux?M}>Ln~>&LE|>K uz?K s=1Iq*>OIqF?Ioi@Ipp>Hp?Jr@cIt;>GIx>Jxz?Kx>Jv@JDtBJu%AJy>K@xF>Ks?TMxoC>|MYi>9Ncc?LbIBH:+>KGGl`mY>|PxȢԚzpgFcV(K.^PIa TIzxucH75iaf`!;v{{ؒl⹿z%L}qdrVSJF%QHEh^QVj cVSMbHk]`V:q^4djgs-a_nv^?\WEEsWJ>^U`=LB7j&]Y{?sYk= p/G~܇R7N^zDʀxkumv^ZjU]^u>mhjxpskukcyg]ՅpaԚ(uʪ3æt$:obq\dP6QfwPP6ldVsQp]SuaUw;cFV{s^KkzZC{tVN/8k tΕSꕴ*dNoM3pxZ*ah2[_;ӄ]~_atIuƫriO9xWunQ~gLq[xGtM`Im@P{wdGlZDe-WGZxOFzQDAjNAAR&GC^Q`JUgNUKuva=L{fL+ydI Z#4H:Q ©"Uko /;Cː|:xcY&w3j@JoKfN.p,fTRNvQkVyxkPxhkOfv_0krq͏ vAuL{Y=SΓPꗳmڑEs|xi‹z k|\kr|\P}iX+uie'zmEgm_˄apW[wgHyyEcp(sckX^pUuX,|c0Džmo~ljysV_0g}nxYkvi[ri`}wqczڣl֓E0Ӆ[^O[NԝM-ݓVuɣK{36xƝqɏ-mɗ{vGVg v/AHJ4V]BE*TB"D]{B)FiB]G^l+@DKiB`Fj BCgCE.juBJpChMsFGNqzC4Lq BL>u4AKMvkANs@4Nq@pNtYB?NuQDNtaC MvCMwD*NwCLw7AL4x?M%ztA0OzDKRvFSrEQWpFgQnFOgi@Le^<KMeL=VMcC*Rb>I%VcDRP`5@Mb>Ke=H d=lE5b>D_BG_i@`F_ @qE`>mD`>9Fc>Hf@IWim?Ho7AL4xDOzDKrBIf?E$]@6F\a? EB[h>pEFZ=!FX< EU;DR;FSx:E5TA:DBU)7HBWz:IFY 9G'[95FW7*CT57AQ4BOg8FT)@J`dBJrA KFo@InP?Hp>tIq@uIs=#Gv>Ix>0J)un?Jr@5KoCKqyC%LvAL[yr@L xfAL u?Lk>L`@J_?Fe{@4E$i@/F eAF4_AGH[@fK`wGR*g4N[K`Phqe~yczvsMqiQK<6]F7QE\RERICLN?>ODb=1^Q'F hTHt_LycOtA_M-3y|?wUn#ݯ L@B)ψ|ߋݪȍG؎uBp`ȟ6y5t}eeyxob]ureAOrcKu hM|rV*P{bbr씀ӄ=>4R@b'Jې~?7qňvc-saiw`xd|[s^~@ts}o̅zcay'rLuHh&vtc7j\mg̋Mr/m|t:hr6{q`|wmIs(/gIt爸|U҃V\Λ˔9RҝtDlj}Ъ7d7kQ ƭ$hܭ]XAinބ m}YeEm_}uGP`DHU~BCHZCEfHCHxkAGkrC8IkCKG&jUDI#lpDMnwEPr7G RrCNr?K>u<@LwAMtqAlMlqAuMrBQNtC!OsBNu#CMvC4NawBMv@AMvAwN=zrBOy\EPewFFARt5FQrFQq7EPnB OkLb=tK6d>Je> Ge?GEa(BF_BOG_@,F`@~Ea"@wD2d?D7hD@$HkAJo:CMwBDSPyB6LpAZIj>Ean?%Fd\?E]Z>DiX?FW/>E\T<)ES:DMU7BV49BCZ7C^8Ga&:xJc9FI(]j7DT6BtQ.8DhO8EQb>G2UAJ[j?;Kte?LNnNEKnAKSl@Lo#>Jn{@}Il?cH&k>KpKIqBNJmBJqn>Iu/?Ju>It?rJw`>Jx>tIt;>I_qEAKnVD4NEr5CLsBMx@LyBLx<6Hl=\IcPADIvb@Dd@D}f@FWdi@F^AFW'@JZFPdiS] cgmd,[tyGuz틐!seGL:=:F7?zPKJ"fJaEz$S0^JeбңՋ|xR1`SXIPUKZEMIHyoeeEzɡ4ig䙿y$xjx}7uj™vބ9uwePEEK@AЉ+uGꛢʎwbbsU{dC czSwJ'pܓOiQU{h{`=vWxeZهvW|cigVpYkOhTDtxgNHЇt:V:wdXGiUDaS0F\nQxISJ@CQ>F>8^P=>gS|Ep{YHu,^Nr]1MN|۳“u+榚ѭi>x3mݍ_jW}S XՋ1IquZzQ`t=enMBkXGl[XIrSeAL(ynTU &rs: {k+kĜ߆ӛΥؖZ~$qѕ~9hޘ^i;tMXg5g$S^\O |Ag7}!~s'|lDl+mmWfibGpYwȉzo]Ԅzܚ3񞢉\-5GM9`wHo ;R'd\@ܰ*l"Ǫ0Z˩F١ 3C4ޮݗەPPemjs+LQd GHTB8D)VBxE_CGheCIxhbCSI8i$DQIjgDK&mDNOqFRJbBN2aBO|`$@ M]=K \?LX^@Jb>yGc*?DaBqF,_{CF]0AE\l@Fk_@#EbADf@G:kHAIoALvI@ZMdy?LJv@gJ"or?"Gde> EDVd@FT>3EV?FY?EV<DT8BUC7;BW8D`8Gg8Ii;K`j.jH]oIkA5IhAIim>Kt>LE`?*G%[ >JWHPaQ[d`jgovidoΌۓ.C^y)WSkID I;?rSRQL([[\Kn`F9trW!9i̟ʙzԂi~j_M*d[Eݶ9‰l]tq \.nZKgT"Gl]K%odL~wd؎nӦcޗ~ןwfd^ {:ht.x}}ʙ'C|M("ɄKiezj{rV$mxdqJi;,JrGrzdb~-htϬQ狤L}R0~ozvM}cmUP=J@.Ө0{5Ňkx貧xvS`]vhyR,VdnDE>U/BEUCH\\E0JaEyJN6v>MgsAMr DFNRtCNiu:DGPw1AFNx6@yLxBM~x8DNDvBMTsCMuBK(uCLKtUEwO(uEPcvEP!tFPqCDN!lBLg+>J"d@Me E3PeCL(]@'KuV"A L2YBK_u@uHb?\E^QBEZND%G[?BLGv\?0F]%AFatAEc2AFi@1HkoD?Ju:C(O |o?L y*AKpr@Gkd?mEUIAGZSy?LFvV>>D]S>@C2Z<fD]=Ed>Jpl>Kn?Kip|@QLq>?Lv?Lav`A_Dh>Dkj]?EgS?FZ̖;G_TZKq?SKF>ojXZZ[M[#QF`TGc^aJ}~a{jJrwm)]qpiOCz~r3XxqJ=}gDޝ m(9}!#gFj\ɇ}{cxhHaU}Jc;RLR>vUrgc~s΅/_qiِfryL`=~{jxfr䅦rׇzm ĉo3~4̙}j0bWSqh^rn\"phsZh[dQVHvBfcNEs)o~ٰ"V~6ف~{YnVx ibyme1wnkwbohwdf[/LnS񪽔GW{k_O#RCFZIwaMKoTLmVX;IbHPBcSODZ'I!;ZL=\?Oy;(dZO9{d?Ik} NdP}z͛Ӂ)tWiW{hUWS# e)!v7c{_1y<\5}iYF:m~VGgR9EܙDžk?vBÚwqk6x[ I 0R3P_aZuAmhˊV{@3TŅ_on`~Oz_PDbSH id_ISwncMfțy9םA!~ܮ[^~܋4]q|6(n^}hB?p횇wnxǡ )z?k?O3yÔl~ cRpD`,%au4jYi)CloPBu5;~bFS.Di?y?߱V󶦬8@h~xѓFts.wx`_lG\fh:|qӍԮ6>_ˇ})LbjxD?JZ=fEV@I\CKba\EXJfelC8Gg.B6GlDLr]GrP"z[HxQtxEOtB/MsAMt:>2Ms?yOs@lOGr@Mt=BNvJBXNv@(Nw@LxA.LvC%Nxs:C NpCHNwr/CNMsVBL tBNu6EO3uoGP-sEOqpDIN`mBOMg>KBd?MfFDQfjFN_S?JYT>IZ@J^E@Ia(?G'^AFYBQFX#AF[@EaANDdZBDdAE@hAGl@OJqCwO\w@MsBMnB@Gd>!DW@GT >FsV5=}D^=C;](=ZCTQ:CQ7{ES9SGDa9JVq9bKr;oIl=IdeV9B?Y;rFYoIWNOCh=Cj?Ff@fGh^??IZ9L[\DP~_MWcxkp+lVt!Vb-zrf9rT1VE< e^Oꇺt8qkoYoVTNgBWKPEUBLEgUfF>zl>Zs[mdGm!gvV|zsWE{qB5vASw]9LIΕ9x뀆XByEgnzAj~ rwhUCgTL6svup^B<~rzqXv~Nw_izM~iBIvVBu{VlyWpiy߅0qc!W~PvdTNpdSxjaDRtl_hQ&hZLWHcUD6WI4U^L5tPY?D}3d󘘈Wl8mӢ]l뚕N|1qdx+bO1}s\zv±*xϚ\Kzg^EFb_N9mR_?wXEHv[ZMqYI`sn]KI|hK5)pG~i?v:`@qmZ,EmUF^|N@Cw@W%Xbep[~>k!n*Q^`ճыp>͛@1LsضOt1XFgvfi]OeXNgN]lJJnd6G\xiGÇv Vws6 ݡIn+Zza%ٱ|ih \×wu؇]x_iJ g<]1a6tݙ||T} |rm֐ey]VCsdI4c<*N\9[6"Xaj-”nM!Jv.fG.rEɪljfXw~Qwmؔc۠t \}CC;;u9[Cΐ`Ġđrl5 ە~Y8[WuQˆIQ_:iCU;H_>JdBtKhjBI=kCN|qAMQtBLuANuWBOvj>KxALZxhAMqANpBNtrNB3Nis!@Lt@0Mv%CNt^F PbqENpCMnKCMg?ULaY@NcPEQyd?D-N`=H5\>K^?OK_?J` >H9`;@VF ^eBE\BF;^3BE*c?6@eB6Cg.ABh;B F"i=BoJTj@dLo6ANvo@Li?Gb=D[@qGV2=$FTd>Dg[> E]<2D}Vx9DS 6EpT96G3a9FKo:Ip6=yI n>Jk:HOb7FW9ETL:ET2:LDU9*DT8CT4@S02vAQ04 DQ8DVF:_Ez[G'JGY=HU;PEpR[;\CS=EW GXl@2HV>gFa^T@DGhDKkaDnLjiBzLq~B(M{sBcMu@KwB@bKPy|@dJw>Fk@G]e?Df>6Cah?E`iAGd;BGYBJZB"O>aHOW~eOWB`3bY)Ya~j8ozYsgvq6^YQ`'JIN:C|B=ggU[}umf^JWH?TEATF?U`SKvnf_~mhz]jsi+NznC}lPEw`FwsM{c\b"7yf9v~|v_}k.o^wGRFI1dMWN}n\OWdInX%~h'Ak`Z@[N?eHN3:oZ>6}Sff|q ^zeCdkEp{ dfTnQGI;]=M:hSh@0hR=n]U:/~dEfHarWPg|u\H{Hr}emXrX\E lATze՜mmxhs^}oLhT@fN ;dWM:ehOGAfQEAqY%Fwa/Epo]FkWrEE|hDCr]ZBmVC e/TRBwYFH(DFÀ^Ut}o1gBSxyxӗ&Ё:l״0A;qas xzf;vlWlwc Kh@`GlaG3vgK~jޖ\L".hLs#6V$o#ީgnFo/iLk mi3eRu3Ido?R7q_frX|y oeovFY։g(Hۉ6^@:^1b_$JPeL_cl}6ƈ[jEW~ڰwqtNq {g.ʌA}7ށcnBEӉa4ad;0 k25sGLfBP|g}AFNe>(LRb >}LXcH>LaO>J[bV>Ib0?E!aAD^=BF[B Ga?DepBEPkACmCEjB}Ig?@Kl@Mmc@K jr?Gf>Dan?F~[?_FVANFX ?2E}X;CW:DTx8ER7G];KegHV9DU:EV=iFV>FY>(GRXEax>)DdZ?wF:e?FK_dBG^YODK`ESiYI]iLPjW_QRXMPrNg^vl e\bNHERG-rK[FEa4f=K鎞sĢF4ouX XI SDAUBH}:yulPxcftdGjtUBYOLZGo?IK{>JNhBfIiOGLT(MN]m`XYeSNXH"Ef R1IuiXO:֬ߒ||udMdM/C]NKA]OmK pnZFsaK&xe4\zA[]zcNOg;SQ^QSa^w]vEs svVpn3PF:RG2BeR=oWA&nwYe@DoX?x^BC9{Z DScI uTӊ}dFud7M8n YEs3aAuN(}EbQl=^OrYygt frMj~TDLXJ}8]Px%Kscl7_&afݦYxʿIR|LKmBOuDPxkCN0xeBrMyBNdyDNuEOtZB Ow AyN`y@Mz5@MM{@M:x AMv@=Nw@Nt@HO#u@M8wXANwnBOv?NuX?M*w?bNDx->YMyxd@Mx7ANv-EPbvGPrBLo_AKoOAOLrp@$Mp2D QqVA_Pm&@Oix&GOh<Cd=,E_`=.E[?qEY>EVLWl:HcW:JTZ=J[>IX=HXV:EZtH?_?G]Hhr?Gf>EdE?Fa?=GU_>rFa?G;crAG__BH ]DM(dDBk\@!bU&Gq`NJKs\ }K|nxlf$L6cOB2VPL@/kv_PWto8aokBWGmdgKTaE=N>L@=%QHFRPGIuNRD> ZRcALwqVqb_L_%SEqN I>GFN@:I9G:KJ>ZNRK@JdT-LOcUvUgbZ5VsYLAmaPkG$fVrI9}s]KpU!|s7aqXaaK!KZJMPLZOHiZMoz^WMp`MtdMkwZn~WfLiNG#pZV8Pl,`\ia[mc\s`ZRQFq;HP#E0hS.9sZ AnY@r\BV|e1K@}bpLdLmoOЂ0nRjW Hkv\In_GtuiL?T{ed\xG/swmVyoco^nVeTJXN@PCD7V[IE~mXI|mJ\Gi^Fn7bEIccQBd@QnFnZLѰ9IrΓgMe|F^zbO܆PiǖUf\-SM{qOcvOP>cҙEk_^#ӫBm ߞ(:҅oarlTg`oP|kaO*|_jdL|ZDfrܵ~?U}·ڝ> ~֚}0eգ9ut{e}*[ڗwÞJu50{j~|`~ji+C|~VaZy[r3})>9k kS! dӂ^PX]A{(;g\qatLjvjmhptXZSzXe>GX'x[%/a%يj"2$yV )6£XfetpCaGV;BG]@dLlCtNsEOvbDMvALx4BjM>xBNuCNvDNwhBMfx?9K{@4MS} AMx@M+v@NtuANeri@xNrqANu6AM9wL_a=La Db>CxhM@5E[kAEj[A5Hhk>@KmH@LkANjp?\I:g1>1E`=D\~=/E]=D$\$?E\Zp>UEXt?EQV6>EQ>HS;J`c;RK4mD;&KqpVIY{>HX=I]Z?H`@Gq^>FoZE?G%V>HSBpKeVqDK\7DLa@Id>|G#fb:Cc>Ect>D"b?DheTA0Ggc-AG^@G@`3BIcBG(`BH_CNc{DRkJZ&mS`D,NBw@S]R4I]TLSZMoATL29j_IPH>"QQq?HXO S#f3YY~dcSak~aMmn^Na QGiTLIiym:gwl;mrL\+agPVq^)PTQ^RM`'TMg WL vbnN$waoJv3]GDmdREW`Ij@p`Rwq3md{uq;vhOvxXuDVI?M9D7ioP6qY: u]>|eJggP iONdjMfLfQBfTEE1jXwAlS^G(wpXZh҈wXyk`rgcrbV]q^UsWJdBQG?QNKe\OfXGaS>AbQ;VEGH:TWcIFmZbQʴ ۵w tvjiEm㒖saFo_eN_{VWy[>pSpPkrdq>ÑݮPz?u`gtNk#V9{|o@W˂$o\O'wp|U,d:q뷝z˺{޸stƔ_ Z5j杜3d hb5nR҃ %󁧶坥)]ۮ I$ KnGRoR*cԩV dn烵رӈԳjܠE4t|uKJnT{qhEhdk9T].Y%AK[tjfeW2MOc=WMd:LiM?tNkBMc?GY?tDZ@DaG@D=d2A!FFf AFeAI1j>In?/KkBMQg2@IOd>YF^>oF[>}F]>D]@FO_>REw\>)D]Wp>ES{?cIV>Ll``=vLGo5:Jt 4N\-IY =G_a?GZ`i@mG\s@xGg\o@GV9?HR*BI4UbEK\JGTN`E+NIe!@IH|b>]E=a6@EbT?(E@cC@@F eAgGrcsAFZ_QBG`"BI`@G]<=E\CO_EHQuf'O]k+r9h'|Ѕ|T4EugsO2TKG(OxJ(J3UNKmdTpu-gLtgvFyDoLyjOdKVKTS KuCzSNCEb\/Oak `Cgx`ڍs~r^}q[TJOG>nQCW5_M8`m+ZWDg"V Hj]bPoh`m_LRlESB"xs h]s֞Byqmxxs\QT`KEJUQD>j[Iu]iOhHZoF^O8?f1TIrj_M,mbY1ondZ7g]QIK`RIGDUCYg?GEecXTs*mf1~{ylm]xbeRGcNDihUpOcoU[Zr[{_r^FdIhV_VcWN_xSLgXLu`I_}gJ{bH\tZIfN>[tg.Sy 斖zm8.TsbM=hDX-QfrZTc>zU_;u_c8x_;bzbE~fVKԆ:lNpkOX~2cLjQAAeQmBe}R=+fS@jYH9w%dmLw4b(H&vgo^n_0Yop[Or[|QnbNCoI`Jvrq]}yj{lfDOb[T,AVI3LP?L5RFME lB[^R±ˎ <5yÈg,9e"]j-q%Znxw1ٓRqKk}f̆j~oOr6$yh>=Vɡ'M͓.|~t])t_ZU{aw [jv;Tӑ}`VG^flڠ:|[{Էiy~Yp`O[hxrB^p6??m@[nG|vVH۟Y t'/yLpٵ֙mUwv Tw9p͙kp?lGvEe:qVǰc4\8'vK瓬v.eK\Gn<{r㻨ƾpߺKfOS^;sޛރ,c/yHUɆa0wUSOZ& lK9U'Vr,qvJmHY\?VD$`>Ig4C;No-E6PrCiNPtBL%wCMxB\Mqw4CMxCKMxCMwALwK@kL y\@'MxAOMu@L s@KsRAKti@Kwa=$Kzh>yM1{?M zbBLylDLw$BLx,@L&z??MwAOu~BOsA`NsAfMtALvV@LxBBOx&FRtF}RpCOk?6N}ho=Mj'=MnAOpCOi@%I_?fD[[?mD^]"@EbN?Ced@VFAd@Hif>HjL@ZKmBgMg]?HLd=EaD7[?+F][?E[/?/EKX:AVGW>IHZK=JK`=LIn HOo;=H j:8GR_K:GdXIF].@#HHZ@H*\@HWH#W@HV@OWAGgRf&Xdmurl@guCb K)]KXCcR%NbcSLmaPyreRMs+hJ|rTxmRh[KxY;QFwavVJy]kUxiG-}-qPN\v^&tnn]mRNH=MWE;RH]6n^8O=4cQeF e\Lvsmf]zGlXOvSXDlj]J_Rp%ʸk(^Rv1quaLbQEnOUxE{fMsP^H=fERCX`lPK_nSMBrg[6vb{pY`fe\<\Q[|]FHC:x gJQK{3}3cc'f7q`M!eRJeSNNl0XqUr`]]Wzlf[wj-athU^MniWsJoaKDwdF5{ahiE}|h`IzdoMu[H{wlsR~gѧ]Ow֋7r sBsOׄlAwk_L;sW7z`!CH~eFm/KjSn{^8L'qfUEmUlF`O@_ O@B+bQFCpYFLq[ Gvf[r aR p{ZMMs^ Lve~I>hÏPQmq#iVWPlFOvEA;K>9GSIZDo)aS> |𳥜;z8imzhPvIARai^ԋm7lKyWfoPOu1tVYƦ ܟ©}F<}s#Mh[$_*gJJ*}v̑映t`r-{L;K[>{E]>IgBNNo#EOs?FOtDZNnv3DM$wxD N y}BLzBLzBkMMyB6NxALMwA%MexBLv@Kv?VKx?K xi>LKx>L zU>Mx?MvA*Mt1DmMMOo>M[q@FOsBO|n@Jd(?E^=[C\>Cla?QDa>@aEQbA1Fe>GjL@ZKm@KKf%?Gde=Dc=jF_;=.EY(=CW@EZA9F[?EZ?EZ=E\Jw)=PIv>H`v?Jq<H{b;GVO=IV\;$JX= L>^!C[PeESf4B}Qc@'QfAxPdCN^n?NIW:DoW:'E\=HW@JV@IWD@HU)>(FR>/F TAbH`\GvOjjGPknA$H ay?lD]_?Ekb/@GaPCbK_ B3IH_CGYcbBFaB{H\SA^IUDJ7SCOUNHUij\fosqT|XrxauтpjlVB\Ij>mVEMl[LO`ji[Oh][IrikL>{sVtiKj^GaY]ROHME9B^Q;Hq>x\XOy<bOAdj*\JwlTmyagxbLqp\Iud;D{Ǫ f obK lESAErW0GoLWjFdVR;D\OIbHSMqc%PvX[KՀe}lr}ev\ziXSDzB{Nœh][x,b|mM[Er^ZiZSmn]0Ysic]\w$i]{zm\m`3OKqQ^GGvewI:nJ{hWDwOaFxh`L{dLDmKPwt= ] ڜyr󔁅dP~fME(rU6z'apA~PHk\?dKdpCuNpENv;EOwqDMcwbDMvCNyALF|AL|AyM+|BNzCN:xALxAZLy7AL4x?_Ldx?|MSw@NNvAOrv}>Mt?Mu:@PMuBTMvAPMw@My@MzHBKNxCNuuDNqEeNoBbMqBNwDCO{EN@z,CrMvYB?Nu7AMt=LEu=YL:u?NtCMPRrBFYq>EPWg?:EY A:FE]AF_>AE_y=D];*G(`=Kg <K?p;ItJOxi?It<HLd=aIU?JToKc'@MriBsPiBjQh'ANPmiAOfEO`@JX:EVr9EXh>J!Xs@L,V@JV>SH{V<*GCU:FSBI#^CMlzCMLo@,Fd>BXai?Db@^G)`D&K`bA=H`.B8GalCF_DH^CFIWBMbOF#Q+U|K>XjV\,cpR`;cQlE\:\aiU]\RfSTCE[IAjRLjp[`'UpObTnbIsjYJti6NDk_Ffr]Ek fNvm`ԉpuYkqCÃnEuStXrhPVO'MENG,G QJG]RCb4S>QkSFziNacelO2~Dzf};kKwv^=kptٖzgq^eM1gSCfR`EmcaSGWMEb7RhGCm[]Lqw[c2{9=pwcNvfH?fxV 0ow7ZۀrudzVego_\mM\Zr6_*[n]W-sdV;oa;Rq)afJ wwdHuocNj~YgTHp)UBrV=J|eiN~iIhwV֙g5ydȫ'؂Vym7yЛ_|rJYxx\/>F=,8K?8;R~EY,}W`Vch[N|V'wPVs>Mȉ{u\TCysVUuV@;{Ot/WBmԒVy}z'qj< ios9m |c:_ޒdJ]vAF@iE}aFuHVᯪj7n vs^tْo?&w';wkZp֟"vߖz\OsB^04Ydh\q\1r귟r\p͢l35q眚j)yAQōvR!yflwi |rdh~+ufnxU!U}ƂǨȊċ潸͓ǘàHƅIÌI ew]^801np}I`LdYl=GNX=JaA>MoBpLMwCMizCMZyCNudB N7t@MawABM z BM{BNyBN9xAfM yA"MBzALx9AdMu|?M6sB'OqCOsBN\u@Mu@jNv@,Mv@zM/xANJ{u?M?{KAMyB@Nt4DBNmAE[OmDNpfCNwFP|kEKO{BMxA^MwANxa?QMx>;MvR?WNr(CtOVp$BJth+@qF_@D\1@"AW<;LTm99R]9S;5V:?\>{DU`AH bR5D#[=EF[WJq>YJr;KsS=[Mub=fKw>Jv=IhO?JZ@K*UW>KXR?KVe>MOilANDiAOh@ OBjHBNxj2B4Mdb?J]:DEV*9EMWB^?tDbAFcACG'cAAFdj>D`(CF2`gFHcCK\EMhPJSYLVdViWnkRThRO\R]VRQe-WOM#iZS3JeO6Hh?WOuGhS|p=Ky"o$IFn`JeZHc\]RKcnfePzreIx b2nH&}cA@|f'DFs2aElc\pJM0LCQNoL^YYUCbUJdWBmVYBzeLAhLǝm{y_Ct]dJkuc8JwJߑPq݁lodG_*PD[OIH%SEIAYL@\OAzWrh{#u4Xx`ptMe\v\O]|d'n^Vxq]Bxa$Kx^My]ISuY@Ms[WBnvUbCoX$IgRIrPBd@XOXF<>S L@cEPEs]IwdIvb)EnPW8|fS;~$]lfkXuYh`}/c~^ӈ [;]T`ڊocΙsdd+~w`u v SenH$&mC>nD tQgblXsuDtC[r!quް||sVqDs[,oXa朗G\a|[0[ڢQ_h/hHl3jʕgMQFl-w=7I~|FԁG_)2ÊGaz=fFb@EF`>ED ]=CWn>D=W>tD[fAbE]NC6F_AJD@`?B]>1E^$K r4>LKd @kLXK_a:7F W9FV+H4];E@`BF_FHbDZJ$]2MO|PSceX[eXhdYY'`TPOYmPLZUmQ-LNbR|Kr-_vL/jTIU]PzF!seKrJ;pKn]oLa U]Kabw[FOidOGumawjjBvybFu_GhR2:+[M;RLBNKB3cF^Vu}pi`lRaTRdUxG{lXoDxdLt\}-t sx4_ELePwKDYL`F]O?V}vZ~oUR`j_HKULvIP$FgBW)IBSgFy;T^SP_[SUYIJ%ZFDfQJ#ClfOo7^?aOo,TR+slSdQAi\UMH/fwSJSE?REZ=WNJGZZLGm[K}oZoDZCb]K1duSDjT8Mo,Q=Z)Gs0PC=qEu9Q%IzAõvϳv&g5f ݕmqϝێq(.p6i猯}]uRrMIMnI톿qK>P~Q]:nZ~伲US D]v+R8\ʸ;vֶ꘧uݕvs i;<\KOc)ZCkn=gwck`{ݿeD><)kgh{W{>KݲاˌU k=}/w_ur pk!|.g{ln܇sՓr1l._ͨ?tF\t~?JșzmVؙub΢alͬIvoǢi+Ǽ4Cءcْͫ\|⋘҄P6Vf?HP^.=I7k"@jMTwCOyDNw1E3QxEUxwDTtk>L-o:AKsBMtUDPuCpOwbBLykAK\xA9LAxAULuCMp?DNnCZM"r_DMw?:LWw=L t>BMwpBO oDTPrAMavA%MexCCO{z%A9Nz5AkNyWE|Qx>HRqyNAXW|OZ}|EU:BWD=F\0@G `@D]=BLY;C|WD\;@Dy^?C^e@CTau=4BdW=DUf1iLy"=KvM>L~lBqO `=MTz;K\>fMgBOjBPkBP)l2ANl? MiC>K_:I W/:HXG{{c_v:cx\pJa Vq`Pn#\P`xi^R|w}nt_N:lL{cPK kTB_N=si_5JxaJr4SEbaqKDVJFOB[E<:>ZC3]1L@zfOTJkP\TO[z p`|l7QzaeJjRPBk W GdRA]OlDsbSFJbRI]NQA8YH8?8WKHPFnDPcV,Otwj_dQOB7I};8"G;<9J??'< II?5KAE7 KmD?J(DB<-҂Ҭ̕kL1kȹw+ѡz4Nt{cr1p >dJ}Z5n{]·ay;^t"T`vT`hh=sߎ2.@wKl썷}pKּC΁Ⱦxʸ}XΕs*fo fıܕkIRg~˗wfaՙypL6~Að5֪#DrDa/̟05y,P-vQx~Nyx^v0k~>j}tdo_un֛a 7MOrv36~iV-e6 kqCޝ{ISr}jǦG᾿< r()0؞ؐ^Ǖ/V]t>G`f<;In;@ NGyB@ObzC.OQw GT{NbVfSBJOs>HrAjLu)DPw8D.PxHCMwBLv@Lw@=LvA@MsALsUALsTCMv4@7Mzv=^Mt?9NsCNqiEO&tB6NvaBMw BN:yBNzC6Pz"H)U|J_W}KU}HR]{FD-PrvrA#OtdBNkwBFM@yzBSN>zAN\wBNrGTOl@Ie;rBa 7<\g7;Y1 7W49U7= Ti9V@MT^CYd=D^Y:Kh>Jm^?QGo=>HHo[>Kr>~LGu=1Lw?DNr@Oye]?]NV;KZY:?hM"f9BO2jSAPjh@O`k@KOlr@UNj@]O e =L]9GUZFnd@Ie)C~Le$FNjCKhBhK6ew@MG.d$@DeAFaC>I-[GCvG[BGz_E6Iu^LM^qdedӍ1mc~wq_^7TEPL:J#LFMkW3MNnl~]Npc;JynKwk#HI}\oTykWncN ga KkRi)Pa`_8Ng aZ|u9xd[WgOGCNGJeXXOIblaGkcamKhZyGuk_N-bfaZzN9PSFFTRHBSeL%HK@E(Im8:GME=HbhLN'wU]QvOOyrP=ToSToP?R"oNPoNNN'w9]S2uefXujZ{kZq[OJwpg[ sl<~ho$_hvf0{dmW\NBhSQD0omW=HiPG^LrFVkKCUCG3>TA8N[=K>jKV6I2rwgRS yrq li@p2c4ye[gTE[WL^?XOK&^SLLfTFFMgXSvFWNwIsN!EPGOYO>KeVLWaJ<RB6QFX>M D|:OJ@>C ;AE=;@POE>XQJ-;M/H9KI.A?HE<@5{ ZV\IuѬR}v {Փ#tdh xBTn3FSq6NkxaOuZ/wdYƕ9gqs8RٵM.sя׮ʏC”c%IKR;Շ]u֙+uVp məg㙮f$Xq:ƅ/kЩ~PĮS^k#=:D,ݥ­1㤠vTʗk lv~^"{Zh2hRwxbTWqg@L:h2^)qB_,g5!j(75g3g?tB䫃j`ʌ]p:"OVޢa( ޑ=bi~@KIjC>(Ijl@B4NxuB\OwD3PwHT<|_j9lTtщKVQy?qHrBKuDOiwUE4PvADN5t@B4Nxu>Mw>L-wAMvBcMwBMwDMvAZMTu`ANuFBNuBMtCNtdCX^n83F\=WE\8=C3X:RCWA;3EXC>D][/A'FXY?PDhW?E_.=8E[b-Ins?XHm)MlK>M`;hKZ=K aBN{hANi?!OjMAPZm:B)QoAOj4BMcc;G\s>H _F?NF]A=G]`BH`@HGbS?Gbb>WGaAHdsE4LKjDLhCJeAyHd@Ee@Df>BE>_BE[BFf_wEI_^MGN.^daMe\b ةI27ČCjh qxrq^R-S`RIn#`Hzk KviHzmR^~raa|$r$\wEpQ~zavqW6`TCJ^ZRQQWOTKFRMJ`V)TzkWvWucdG9i{T @]KYaS(Q@bRGGjWC!^1O:TH=-NA:MC.>JNFEJCIDK B@FTfK C_SEXOBL0B\@\D_9@FLr`-aepø&};#~zZz'Aj(sJ{_C>|cBxs$S0vP^iz&cOg3d{`h_g\Z|@ōl`Ւt%5@/8K)聾WةK|t~h=z͞q{Ýgmegnsg.ݲTȴϏōɉR^޼Ңqdt҆,2 LȺx5W{PЧ,sͨk̥[88H,ꑍthB|ez_>t=R%kGSU ?)E[@AF[ =DVGUIAFWBFW?-DfYj?aD_Q?LE^=$FZ:DV: EU3HFh?:Jgv=Je\:Gg;~Ghe?JjCMl?LAm<>K{e>K \?K^@7MfA?uL=h?Mi=AlPlDRoNDPjCjMd>I_>I^fATIE]\AHZG+_ BHdDJfEMseC3KeAIH`f\@^EVfQ@Eg/AmFKbpC F[^vCiG`cF5J_.NN[`bR=u4ۥU̗mh#m|bW>x~QtdKXWNDaVFmayJZtLhLjwlP4}^q^Oua~rXW\y_uXgTGGXYK|FXMvDTXHLnFghPƏz~]~1}\_iJsWCWpG\Lm\^N]QJVNL?UMIx[8PF`Q Dm=Z\J}nXZ9z~!qgr[zNL#G>YkPJG{fWWK"fY|M+nb XWs_5Y_pN E^lOEdVGVOENJ*>5CTAiM_OfUwn`f`xbFi#x\VY4xOnNEu^SLrRJjMFb2I@Ht^^S |@jS^}ylYoZP2l9XnTswp딩y\qRvٶ̥bsIz Zm\EocQLmfRZogTNfoTQH^K@FZI@_]L<i[Gswjpd'<`%2<(d tNYza6Gn\Jte*TwaH~iJzk!Ouh|Syu@cIFz\gDq^AbPCOD;Ko@?OHERWKESJ3AU,MEgW4KiVHT,HCEI8?K-ӃAzah|{f xh?Cf*kD*v x a qKoL vUV_}c3 k*l}[ܑazZk[Z}U%n6™ή1U*KKwĥkBpV ~Kq8h>lư]yF[KkޟA\.p|wǗH|0њ˅/XrcDt#LM:աGȨ#wlj׽xʱYy{pR~dxZOFs\ks\uR֍m> Ac1]1|`A,G~m.͋cd|nÁȻdtM{@M}@fNS~$@NO}?Oy@pQ viBCQerBCMk@SI{g=Eg,EA[HT?H^T?+G]UP@LEW\@VCZADa@AE2]>dF W<GSI=/GXQ7?G=Uc?G__AKmfB>J@d9tEpb8D`<#Id?Kh@Lh]?Lf@Lla?sK `q@%Me~>)L'g>Lh ANCjBP]j&FRhDCOcfv@Ke>Hbd@HW]d@GY?"G[>Fv^>Fe]?HWa?IadnBJ$dE6NbFTeAG cgBF]_nD7HaFPK`LO\]_N srT!%lvhPnS򇁀e~a~>`8|hUheXLYCVK^\aNf a)OlqmhwNy?j@U#{k2VBsJePtQiNSzRk3MmWFKhQmHhWLhiZrG_gxUVbfbHvT?nUHp\LiX&Mh\TfeY}NbhYOJ~j Y{An[Bz,m0X͑vGQj\pv\GbSMeMKDa\ Mn6dO^aS:Ga}SHiSfG`%N:IeRLFmS]K^gW)JWKJ}TAtHaRSytLp"w/g_Z|R!{[KLz`xM9nQQFEbzFDjpMLlP?Ki]QLb:OlM-_&LMKm[V;X?nV~Fl~Ln qeKtjI~z>gytablZJb N\C@[WJ=ZJ8-aP;arWI%{miCGqNNwjc2{_0r=[Uwd̈}_mEgqT@z`9qR(l8JJpIlFr]EtWMCK B BLEEJS2KsE|TaKBPFA_OGkU+I]MF J@o}7~2s]lH]pkūu‡Dzr{h姑dfp&u꫷vygzɈbÅtT=_a`۽f뷽.sBpvlt9@ixgyim~Jfrd}TotAi?ujEН){AhSDže!ٍɛQZ65oiq Q~cMu9DV_?1GgBKsv@MLtyj@L{CMyKEMuDLsCLtfBLvDNFwBMxAFMP{B-Mz;A'LBy@BMwKCNsB5OtBGNvCMvBMKxTAL$xTAL$xAKv}C.MuB\OwK@vOz;?N&|@N}&@N@|p@N{@{Ox0?[Pv=N{rAAMl?Ig[>Dgp<@ocL:I=g\478XW"5f8V69U7s;T81<U;VA[ BZ@Dc>GDP_>E%Y=FrV4>FV>GX=+F_a>H"gn=/He7;5F4aO:E^<}Ha< Kds@Mfs>L;h=rKg@ MfnCO@i@TMkh A9MhBMhBNgCvPeBOdBLfg!@Je?1Hl^>EZm>F\C?DHr]7>G^v= IdF1d@?Gad@G`|DIcBFvLzbJqN~`\F[Ocq:nM3~i[H[xL\ZBloU-E3m aLŁ`oZy_L6zfWpedU_]QTX_PXYMl6eGM0v~fMucFOhDX(O9f_\;Mg[ M_NFLoS#Iui,P1~}ŋؖ΂:`dDp$QzqWtiVhTFdYI=VoH"9XWH*3cYH 3aiJ7t;YGo{lg6HyuULOTvN܎rwUu|cњ j9ŖHf9yQt^{~f#vJQNiMGSkIj@IuaF^RHOI#GAPI+ITYMCHkUK'CXOC:TS#E;&] N{A}_kQ6GM$DB~̡5skQWwsE{z\c}bMMtI΢e;iO5 "o֐rZv^;5qػɧR}^wЮuG]kzB}PjIt}Cړu@~MI/j!{Qvf-EՐVf~Jȸԧ}đw[n rj[n.%q+ݙZkMdrbT0SbDVcI5fʧؒ p>Sytuv~|3H~SmX$GӱȚU~y-kR{j('oldgd3]J3ΓqieƊT kk1pxWQșə5y_^l~>oIge1?3GdAKqAM xAM%zTBN;yDO7xC#Ow1CmNxA%MexTCMvC N!vCNy5BLz?K|>Mt|>KMyZALyBMycCMymAMfyAWM@zAB'NwjCNrBNu@SMxAM|x&BN"xx?LpxBA/MxdAKvBMv@Nw?OxD?NyA5O{OCOzv@N+y@P{v@Pr>6NZnt@OM5i?7Jg:=4Df;.@b:>X59VL5:V47:Uy6b9zS|8=Ub:@WF^d;D _FLgk=aKi@NkCP6lCNhDN/iCMhC-Me@|N~b@N`EOcVCNd? JJb;E\;]EXD?4I+[>Ia>K>ef?Nd DQvdUEN)eAIb$>F_KB7Gcm?LEFd@}H^fA,HcDJ,cHM_cXKNIb pKi|^ qetY`nPUGiQC)tEePi_YPmY]YYVp)ez;mc[6g_\PRTGMSUK`i\JnaJ\r`-NnWM8s>i [rlcbZ&a%X}ShQBBylI⍕u}]ߤswvoKiN?<^KD>lZkMzImY2zqebtY*xhPbSGin^Qk_ SrcN-lAUB#ebRC eV3LbUOF`ZMne_Py[RZMZ$OAJUH?REf<,V%KE[jMIr]PfuF^uO7fJGiQ\Stn2mX}dxBGv%n~єhbV|!q܆)qbjNMReaF\MaD\Ejb3Lc>N@` L!=hO=lNU;oPAT lUG|Ba㔂dYeϬ^Ým=E{'n_'qVQkEGv?^E!sZGw\3HiSEUMEQ'MGu[SL`uTMVJ4ENtA9NA8WSQI8WM?PFGADºQLȴѾ+Rcq8Ih3GZoMz(Gehzw}zT^v̛~ß!z*Ghu9}O KÂӽ[9|azARpt7r<ċru(OFG}fᝀvrwXW*ɈTwy͞xw5ORyCP*zB P|AN|?L&zBNwDOAtSEPtBNv>;Lgzh>yM1{V=Kw7>Jw@LxBMxAqMxp?KyAqMxBMtBMw0AMzArNx?BNy?LZz@zL{ CMzLDOxANv?Ocv>Nv(AOxB:P@xA7Ow?A^Ps2AYQ7EZPD]=E]=F,^?~D]]N>1BX>E]=GVeO<9H*i>J5i;I`ArKO\A)Lm_(?~KIfL> L_j?hMkuBOpj9GPfHQiFOkaB Mg=Ld>`MqaxAjM_ByMd@!Kc@I]O>G]V>HIYp<J`? N9eB0QfbGdUjGPiAHaD@F^BJE`AKGcIDLM$gcCOKdDJcINhdlLNPDg%ykɡх qKr6a?Ot\HzczpduYod틷lrYlZ'K=SPH{Q4REIUSJ`iVIp-aNMLyaN*y{,fqB~{yitbE}hF~>gĖt7Yyʑchpo#UD^tMWDmZNu{kR͈ xTXdyVUwh`etgP(sjh\qgSp `J^NV TcKY0<򇉭h}uIV&Deݦ՘wGv>PϿF6O{6}Š}`+ҺU-ـȎK?4' 3œ(r퍁HQZlo>C\@IbjANv|@jNz? Nzy$BOzEAN|AN'|A{NqzBtNyDyN+uDOKsBNs@Njvj?MPv?Mvtc@.N[t?MtBP#vCO$vaBMwALZx]CLfwEBLhyAaN {RByOyDVPyBNezBM{ENz2F3OmwCOuBPlu@PtCBQgv?B>Qv@BOvB9PTtAOn?UMeCLd`CaJ^,?F\^;@4Ui6;mQ29T4rW6;_V7X=3V;BW_?UE~[<}DZ{EYy@oEX='CYv>FY@GWCG W?DMT=F:WyLg@mLay@K_U>KeMhe@L`bO@Ja$AJ=aC&K]AGHX=E^f=I%b@LPeCLQk.GSoaEUMli @E`_BrH5_dAE7^BHcDLfFMe*F Le(IOfeVN#Si9̀qʣfQ yt"` yc3ړ|%O~jxrk3uSWpsXYJ\R4LS*RIL_WFNVQItke^LyflJ.dE*csV}F/`Nkn/LG0p[RЁ_rSLw^ߑqsݔnm}kMMFlaWI(o'ZQz_hRvHS'] slwh~j|5tZxf~NbQx@rd/K{k Q[pULC`P?rj:Yn`i\UPGyViLzEVKlHZ^OFc^OqDgSMakRTMjKGdOHKgNAPqRWQ^MhTKf3T=FfjYH_nSbKNcdP'IM.UJ?`O rqܱ>SuﺘsYxn!Zn2ni$iˇs\`j@N(KnPnNnAXjwfhelŽ|zuVF1̨xu2|9؁ukSZ{fKAgO97k7N6xX?ɉpLI~@Lѧ K_ڍuV|Yl־?boVg-k%uּ x7hwQu~ sz@uo>xC uq\k}e Ĉa}auށgȜhOhg/ty-#t͇H~а|vj}WjZckʲ}dƅBuK|ζ`tܷ)qprcc~dQJRYHp?+F[=A6J=i@LSLkjA^F\6Z;T.7:Q 62yH_TGV?EFU>?Et[&AG]DG7XD!GUi=!D*S;FVM!aBNckCOUg!EQOkEbRpBPt@@HPs@OoVAMg3>I/`X@EJW_AH^@FS^=D`>G#cAKvh~E.PTpE~NpBI3f>@C_D@/EK_@E5`@E8d2FnJgIM=hFULfJO]UDLiq`AO?h2`O}mR sIYa|f>Bɛ.vz!`8|\hJu]Fx>hNÅdz^mzQY҄5teWnwX\{lYkkYqvVhT#sxwq|쌝n~mAVXkM[qH;p bSI3}+jIx_DZkS?m]Gk2coNTNBiUZKBYwLF&b.RFiTFkZUKCqW*QJkP*K~bG#I[tEPgVLN}2V2L'}k_gR~sʐ}iځd?hIor6myzlnjTS`PS_MjNWkDC ]GMEib LEbWOD/cQ>q[Cs4^GlHWb>mZ?FpDMJvENvENx#BKvCNFwA,NvR?:MsHAMOr:AMqAM]sAMv&A5Ly/AL&yCrNyDzO{hDO7}7EP$|DcPmz2CiOzC9PyDO3vCOtBDeQrjCSPrPBmOwANzBMzwKCNt5BNgqk?M;Kwh=Hb:CEy_9Db]d@IW?HFV9@mE]AwE]`hDVz>GU<`G_Q=Gmv< J@u>LEs?)LkW@LhCN|hC8OFbcB=O\CO`ANpg?FP`iKCRnUCcR;tAPuBgPrCOVl`=Jd];H`p?IkaDkgTKFoW GlT]IEnUP!kS_NgNBKOaMMRlMQyRLf{#UiKs|V1|[SFbhPr+NQ~_nqˤlA"P)v"s qbRnwg%SYXEFZGeD`ILAEbM?<`N=i,TAq5[mFwbDwcEwh-I]̀gJ{X{xVzovzhRZM,F)PEtFiODTGS=INGTHBTTIEj=VCQ9iTAS8]O@6VK=7hvWAqscQy kpq|ktoT|Ei8SuaLmTJkVdNviO{in=Lr_HSG=CPfD&>a@RFc7SoB }YXq/w7UvSeq*Qsϲݙwxo׊c8VrH$iEɄwmH}7xA|+mDAg_۬뚭v Z}պޝoԤŽs_ʞcnXzTK{\jzkDt:fHl+^EEeYSVn>B![>C^;gESaLgKm:FJcy:CW;DX?bC]ADE_`XBE]*BDW^5?DgZ#>FLS;qFT19DPd;Hr>KrALlgA%L kA/MjLAMyf{B8OvcCOe@Nh?>PiB:RjmE(SrCrP_snBNrptD|PmAPNlk?Lg"BMe?I^CJ]CLd HPynD}LmC,JCdAE^AsDc ?pAdHA Ef,A;FeBFneEfIfGGsj#JOnS=Wma^a&hXQP`VGEh-TJiw\UʽC.̴vGsJ|&jVpd,T fhiT@Hxg;MdrVDŽvTmxVwދ~d^lz嗛Lt5cY{sYǒۅrIGm1Hw^<u>_,DnWIJcP,H`MuF4JzAL}wCM{6E{M6yFMduBxMr@HO#u@N uAL>vAL4w@KyAMyB:NxDNyFO>zGPzEO3{EOz6DOz5COz]DkO|"DO{@FOxBO7yCMdx;DwMvENluC0OfsBOpBNnkCArLb BK5aQ;Fi[3u9R4c6O7_:P 8=PQ6k=O4n>bO/;BTR>LDY?E_0=]Fa=He>mJi9JE9_9dBTH=EVC?DHr]>EZ@zD\BEP`BF]DiG^>CZ=6ET:aEPO;EbY:Hg\k)hU~h H@h ZAHOs{qjј益j#uoFmL.pPWD^N7nY[Dtc0N|n]|za٘tI:|)miċj|{.iC~q8tuڜpp~)b|yzUiu\@sD\6Cr]J.mWOiRLO^LDGwWJH`ePJmQPIhMIjSfPylftoU`^Qr_IQvuXRks3NNQwdPVvMyRwMNu[N\KDsSQLfspgbY&%xY~ofZ&DFqYPDJ\IO^KN^lML@bnR;K[iNsBRcdQB(s^`FDxf[zEsU@g^PEj\KH]MDYcSRHfYKYg[ M3]|^Qpq9e>x,oYLyv`@CZF1SEDe92PvDHAvSJI}dXMk]Hq?bI-zAlJTHngɐBoq^rZHqhZGLucH{:mrL}mL\upfIl_KIn`5Ict^J_hwC1UtG^{O_bdή[kD_ϑ]*k] uzxcT4oxZ4sGXGg{yldhaۥd(~lrZ~r*Oq1}tq^y0uy v 'qC]pKu Ftߡl Ou4t3,u\?Uz0Uݙ:e]f4xt^i؞{vơ8vBvlxvU|ړ7%ϐ ډTɚHܗםnu$<^f|;JI1hDGlBLr4CNtSBOvw@MvYA MuCMGuC]MUrCMls-AM}yACO{BVOy|CuNxE}N9t%EpNwoDPoDOqBL}tAK5x?K|AMzCpOw0E)P+yrC3OyD`P:zDOyrEOwDOxCCN{(CN|CO{GC[OzEQ{jEPwDPuCQkv DmQ:wCpQuPCOpAMOhIA(Lmb9pFe[*1;S6x9Qz6:Q8q>pR5=DQ3?NW(@G9_=#F_t>H`%?Ib:tE\6@;U;EW=gH^oE5[?E^Y@F[BOH]/?CSZ>hDV<DR;DeD PgD)Ni}AsIc?VD|d%?FeBGdDG`DKb F`Q[igRao9fkrn_\]H@FJ9e?i\WLLsmts;z|e~bnz^@g$SB0]RKnb3L~}f7|fx%hKp kQuuh̗ҕGuveNo\RwekK{{lJxkX1obLziIR1e|^^smJwgLRqq lX-SVgzϨw ݌m霻oЎ~\ YmIRt+\.B r4[C;kUBKd:QI]KLF^NIlS MFpSHjL G8eK*H&vT\R7hQImnV@K^vZ*P~sORv`O XyOVx$NQuLNmLL,taXp0t} }1{Ѵۭ/A}fNNGXU>KZDR^IO8bNJBcQC|UqP`e[WxpE)S!?E1Vg>XFZj=!F[ >JH3]>@Lb;pH^7XDKW:XFZ<>G4^"F\>F\x?@G]>F-[!?D{W<BBU9<7DT;}GU,=JZiLukIPt?M5qy@PXm,DTl3DRZm[BQlDSTNlD)Tl.C?Q%opCPjs>E/QrEdPGlExPegEXO=fuDZLfdBIt^>D Z4@^De^v@2G`ASHa?Ec+?}G(e@HzcoCH^9EXLcInQPjR3aEoBq|utdـuaXzO_N>@^YMJ|g>Y򗞀Pg"[Yh s^Rs\CZM@TKME2l$]KrZrVsaJSvEpYywpcҏ*v"2?4Rzj}snphfraDr֎}hxaKkt6^|G/wtbFsf_I`QH]nRI 3q _L7Ů˟ŀ:v^fB/NcxUsuZXCePkS@#jfSx@Zh6T}C[R Cbd[IBndPxAn_rDpg-JuMx?}ytfcTPPuAUD}\ ~.jI+HߟŘp~yUu|yzɸ]Թ׃{m5y)RwGFzSiBVsdSy6>lQB j]Z0Qm#kawqbxk9NlFXWA?]CO9(gQ9wC_C3u*aɄ!x,|*Atgk?d;0p!f;~[I`y =ugt2u8qDlڌa+_Q}tFYr|>,:w8T|FdTt]jOf[kgvw8r|О7~󛝃ZU#i#ϐ> Qu_`~juuKNa`AUF f=AIs{BXM>xAMwf@4MGvBM8tCNrE}N+rF@Os6GPrvCSPvCQwC#Q.wxBMMvCeMuChM vBCLz{BKP~BLH|BM~yBCNzxCNx]B-ORyAOx=CP'yECP6z3COyBNyDPT{CpOz+DOwEOu-DOwCOvxAOx>!MHyAO{BO{@EMGvC Q3qCP-i=mF]3<U58T195 >gU8@U>DV+?DV=FW=DHY=6I[>K b;9J$a+9GEX8]FX;F\;E2Y;C&X=@D]C@Fa>F`>G[`>EY=CVa?GjV;GV ?JWH@LL4TBMW@ McALq>gJBw*=I5u'>Lr=>OnCRn_DRo5EaS'qE!SnER[kcDQkCPmfEQoFxQnOGHPJjH2OchCIa@Eh\3?CE\xBEv`KAFaHBG$cA[Ge4AEH)gAzHbCJ^UELLqeIPh8P]l ptqܗɉ3gVIW=SE.EtYKK\mkVP%|(g_MrR%KnJsbE?VlN=W-NAgvoaJdrN-nsKkK upTVvlMwmeVmt}ev֙Y~[֕wt/G~c]mW@mLerRpAnUH|ojaP`R(JCUID n^cQTfjpMa鯚>{FiS~buo9Tl}SBVG86\APF|]OHZeNGYO Dp]HkSWuC\uRhvW=Y^qAQFkL?Yno][W|qnyQZZ{RRB|OT([xL NvKHqSL2FnN,EewTWJugP#O\pacq4q{Pâ^~u~iY#EA\iCI9bJBLlR/M(jaTMbcSL}^NFe:RxBiTAkyWBmY`@Or_EjcYH]m]I=oy`GuhLtlP~$hn.QzڬE~{vo`fDtU>c*K=a~@V^dEpsiAIʿNɾ" {«vxxwy6z2pwqp[őp q֞NpkFpxi%mv֞t-s(v<t%w@EI𡸈+ҝϊ%;bܖ W^Ty҂zakv\KNC\BF]4B&LnBNuACOwBOuzCNtCNthEM{slFM"sFNEt1DeOMu~FRuTERNuBNvAMw"ALvBlL:{AlJJnCLqBM&zCN{gDN|>CMhzDLPw-BP{t_DQw;DaPLwfD!OxDOyCNxD OutDXOsrDOuBOz@N~{X?8MyFB;OyDPwANv|D'P rQENci;D5]w2:UF6:T7;V8=V7>4Vu9@X>=D[h>DeWE]s<Ij]>YKYCQN$R?LJONBMWAL+j?K0u<{KwGMp;@~OmpzBPNq}FQSsERpFEnQYjDQgAP=f0CQk"F3R qGkQoHN#iBmH cA/E\t?B\6BxElb@E8dAGf@Gi@rHfCHa=EIKy\HHAOdPMSf,[`k pppjaБB|ǘXlbkT&@UIFMC!IIPH_TshIe^rY܇tvgUy=lJ#c[)DaRf=kIt9InyJnez9PMLwUu`uH_P,Iq.aRďIkE3̹)bƾ8T,?mTʶ~ZljeqX{rf[x:o[aj\M_NwIW%KFtofXcfa:WzoڋlgY~;`k.}`gtN,L+vNIHk0JF`p;NLnpLO^o5LR{[[ÈtjPz#yNofhQI c*LwH`KLeJOMgQJfTMfT3LofoS4EiCU AlXJ?u`D;~[lbM`t_M'uGiVvf\JYxGjCB#yoC)K,b>T{<|V䘰Wc[P:mNwkVjMW`FXnTgDil,U_FlUMmRJu[?LwcN0v]qJKpJp~m)JI~Jn*J!vO7~uW#nl:sԙm%plXj rSf@R} Zq7{e_@(dwU;tlFR[z\ a^ĭĽ̌ɻ'б5z8ȳaǙl(-C\Ä󃿡7are;r%>* nߖ7bwڋ{atMlM~m?YOp^Rv^D8P vWFO%rADL h:HCvY174T7; T7=YV8>W:?V;QADX)?VCm\p>CCYm<^FY>: I];J_H=Jc_AMPA~LS`@zLCfA@HL1p=?LwE=LSwC?mMt<>KpB>OWrDPDs]HRlqFhQj:EQhBR j{@;PCmDQsGSGs:FrN2iCHc@TE']?&C^@OCpc@+Ff?FZi@Hk@tIQhDI?cFNv_JQcN%S3`dm^bqCi_vdsTnxSF]MEL'KCI(ML^\v~rurl/pH:gimfEKj]@!q@L>tI"wMZ{GZ`WShK]MF gT+JoTxUzeܰR^̣ȆϘym}ĥ~1:qxs}mv l\hcSKRII_KR*S~]nuٗZ^{ly2u4['`M;#eKOB]PmC[PEepWXNceTJ$eqT:GmaVJp[ G|kvY>_ykw9rOoS]vhc_ˆyN4&tuUer}x`cwU{TQmYORkLP"oL'Ps\QPQsOLlMGxaBR0ucZEse^SgTSpdRgT^/NK]pLF_OSK-j[RkZMgTBgR?<`ul`E8w_z qcb8~zq[t_p{Jg>H{h7+yJ썅sbל|ƛwL!z]~X-3z}u\toc>Oo`Qi]Xk:TXIw]Gzf+RNJ&~ni|hWow?YrpLmm|H߀Qb~8Cjn:`נjݎ%mߘkoelް~[Жzg;r0YڔgdTޛi'|ކjnu2MoPdFB{D*WBPIeDLnPEOqFQuFPwDLvBJxBI0yBnMbuEPq{EkQrCPt @rN4u?]Nv/ANuC)P@wkANy?wM {ANz1BeN=zD O>zpBNxAO$wAzOttBNr EOqpYEOIpBQNtALwC'MswEEN wD,O,xB1OxBOwCPw~C~OwlDvP~vDO&uENrHBKi;oBW=15R5s9zR7=TG7>nX7=Wm=AW@D[?DnY:$FY:I>_^;J`$Ie+?Gex7ATWa7UCQ6EN7DN]8HEQ:GX9H^=K"s>GNw%?oMv_>]JrBNuBMs{GQ,rHQ3nFzRmETp=ER sEQuqI>UsEFL+fDGh^i@,E_o>&C$c?&C+d@`Fe@#Gg@HqkBIriDLf-GPeLTgNSV[\-SzQqauOv\_M%fLE^]JELaRGTJd\ WTK]Ub6xxwxA%lyth`No`5D/~w_t}\ŽwEUʐNs?L~HxuNmWIjWMWpu[:k{1ƅaΤxÉoЙ"y@CuuztdB^KcZpfehb{Euly A`׋džtqi|VFbNU?SaEPD[NG]QQJf]YJGr`Lr\Jr\F7{cdLS=yfԊ{qpTVkUTȂ2uxq?f9͍U]]B|{\t`nyfgnjQUiJMtRNqIOIj KG;iMHmSNsc]umq tsjmlgKYO0YJE']WMLn`DYo~`fQd}RHm^L?whS@$={khlwQ\(n^l`E'z_0}f<3nLILyb—qh҄UWHg\=zuA|/ju/xo$dy/u o\|vz{+nYOhGlnV*Vswsa x.UDpGEh"E#x\aOGiPÒoϟ(q;jB_znrEzwS4wU<ހe:CbjsoF:v|Zffx[%M|6AĠ\ȑUǮ?spլļ|tœ/t2 &8ۭT44C$;nfcrĤ盟8է͚9hdB/tI~eAyZK7{Xs5؂Y`G9c0͊_%:a$:ah'SoI7oDzr7J!~/Nޝ"\OdsZH˫[~S2{S|ۜWAnx_yaKdKYhZVT>76z=7vQ~FrQma`sȏ Z *Lj˜օ{C[[fE2F$VBG$fCL qRBMt;EOw;FLNxCKy>BK{@KyBNs7E.QpsCPzrANt@BNiu?MSw@MxC OwDOiwAMwA NVyLBM$yCN"yBNyxjBxOwcCOvCCMs5DNCpDaOoCMFtB LwmDeMxGC_NxCTOozDOaxMCOvwANuBNv"BNtAM]sFDMq)@JNj:AX&28S<4_9nQ*7a=R97=W87p=Z>; A\[?Dm\_>UFfX9GY9HJ^4:J`f:^Ht^< H]QKGf>6Jf8EZ8vFT6EQ8DQ9ErQ;H3X9lHn_|;uI `0;HZ;IV:0JS?SKX>BM`DXPdBN{hIBNfp^BZP/v?Mu?K1tA6MUv,DaE=C)f?Ee@?Gad@2H!f@pG:gAH8fUDgNfGR fuKIRfOjT^lZ UOxeI~y[GwkTAMa]T~yo2lXo k\~0xln&y~w]P{~DqX`vWmnK4 zAk )vEP&wCvI|iePMWiVPrf_~pdHTgޞe+괫]v㷝j՜Ót|Vu$F)ƈzx|ut,r?l q$ЕSRM}tcJf Q?_tNASEp;?VJ`D`hY&LswhJNu,bHtYFGwUxEz]K~epXqRoMfMQ=~0ps\לЊ֘b͙˗Օ4΅΋zM{nouYWg~G_IIoANJqRbJoQN{iQLH^gqN;JQre`t肇)Z{pNeUXiJtD`OPKooA^vQsp~_JJ=`NDVH%;]}O=~qŠҋӌ烿IUw7Byw]|fB@w]A=w^Gv^SFUkM~=i.=} oErw\-ny;cPmqgO_|vqn떨v։vxW{_zrv_K>j>@oz`JBpWGW;+GYt;Iw^?< KH`<I8c>LhzEbQlEZQ oCOpBOosc@Ms@Mt AMu@\L2w@IL2wChMsFiOMr:FQoG.U@pgGTrEOplEJc@C^T>C/c@Ee@wFe@rHd?Gd@FbH?FFdb3C\NcZGXS)dIHRdHMnVe}gcgH`}y"[C|b!|m\&|~oeAÃBnvfO }r^nơ{|ӛÑN~6p||_xuǍꆑXm2sNNYplIGUk{NjUM_QN6o%[Rقl8ZlB+{rdeE٘*qMF~{<{j<.w߈͚<zOvvj srJdGg&rr|k9Lv^hSqhRVQH&7RD:cZRHu!dKTv*bEtCVAtR@nM@sQF1vYNs^XXNxvˉMV5ݛS̀qzuc<[hIEvpNHoQdG}tFVPozQgHl2PI6pK]i|s[gk䀒z*{L }]p)Hp-[s{gO{g7Nz?aIwZ FtWNB/oX@s?cHぺnJAw_AnZMhdTNvqCeڏhixt.W;e}Ue?ҋza~LdBuZhBs[GzaNz-)di^j|Yk8lhd|^,qL1mBwl$@$c@>sYBkW3D>oYCz^fDzsX7䑨ѮX" 0ml„zCrfzy2ǹ燺Qߌ7'jM.ΰn?ȍފ}W;R/uY̏'.`|WgjqDsDv}W]vUQŽml}9ɇ_`(_ (_-_Q0bab1XaQ0{_2_:3d/0^q8mTVq^{ ף9ѝ~d:~lz‚(p6k砥t\MnHTiYMkOzjfUkqp\xc܃qz~"ف_qG}AHf%nimGXMUFL.r>ALIvDMJvDLvBLwATNRw@ENuCOtuDN)scCN7r/AMr@MvA8L3vBMvhBMfxDNwTEOt ENqDN\rC OwWBNvCN(sBM*rBvNu9BNuBNvrBJMzfA.LzAeMwz?MwAZMcxC?N ywCNwBNuBNusB[MTt*ALMr AkL p%@jIi|9@]/8DU19R6;S-8DT@F!WK]Z>~K V=JRXY;I`%;JhF9I9i82Ia;9HYC;TH"V:FX8EY;`HO\;H^:ZGW^7ER];VH^`<1HR\>FJf>-KmoCNuqEOsBfN5qA Op}AjOq[@:NrAfMt?LUu=kKtC&NrDNoxEPlEQnF5RpEOkCzI+b?C{_?NDa@EaCFa B'H'b8AGqc_@-ELa?F`@`LaIRbJlVe8JXsjooFl%Rrß">w|/)Ev_}jZH xfn\zAn4~>1yfu].ey0~Gª뜏$qh_xG^GjNpS^JXMGCdQI{dywaPbng2{ܐ)|{ƠG:LG4{׀ron~VOvD]TlNR]PdoiTTq~TLo|SIiQ|FRhQEsX`DOPdQ6E\$P:NlccQo;bWpLzoxs5^d[Eqh4\OsQnj}Uyogy=} rv)ld_wj`6pQ^ׁ nJu]@Js[uO>rsZHlVs?mU5>aXIZ0Se$SIMhWwOvpwo䃉0sCoXSnwZoQ^|xQ{aH2rrVJ@lwcJgoV YG_!њ7hm\NpޚOs&At[ƋgMuAMKmpCnAfDr&YiGMl;VFneYB$rVp:h~^o?}e͞ײ!:h2YsNp ejD`uaruSsM}‹S\80ӉlohĪCݰC^!Ӓ㰼đ rcł>_喉ss{cyD‡`jW6!=b2b- dz.:c2kc2`o+w_U&⊷a?$-od9߁Cam?}ߙ>VڗnR=9נ &ĭz;?qԄ#k(Lt֊:uׇ݅~‹z̓q׊~ׇl|돮}8ҁj:prUGM[~=?If=]K2q@KtCLuCMuBMw$@qNw?NvB(OwCMVwYCVM wAPMwk@LyAKwC*Mv^BBMvDNwE#Ot+FNrFaNs>DM1xANkxEB'Pys#CdPr*BNvANwBtONw BNx@M|yg@N]xd?Mv@UM!wYCNxC OSxPDNu~B(M{sBxMrBMpA$Ll?Ig9$C]41'EXY; F^;Gb>JRb>J)]pAM[?L[z<^IEa:QIrh";Jhd=sK`;H,]I^s8F^8G\D:7G[:/FZ8E[k9FZX=GUW>{I]d"?vJo<@JBrC\MUs BMnBwOjCQnBPr @QMt@)NvN?Mu-BNqE;Q@oBPjEQhnGQdnEOiBG#aA6D_AzF`+AE;aCGaDXIa|BGbyA0EYa0BFH^~BVK)_J}Q@bpMYgXL[Nl&spPmo~èőo މ7uasՀmLfgXF}Rz>h7@|҈{ڎ|szdcsѸYC%'|hm]K~sm`xMlTEh UaFc-QFHvr`]Jѐ}Xny,U؞ɘOmyO`y2gB{+>pgDyq^P06;WCirKy掠&|󡗘pj#֕+S}sa]qqRxdG&N];Gc>JnmXBKsCPLvCLAxAMx?Lv@KNvLCyN;xCLzOCoKIzAHKyW@SKyAKx:CMwCNvENuF]OuFO^u}E,MvwCLyANzAOwuCOxCnNz~AYNyANwAfNRw?7Nv&?uNgv@M]uYB?NuBN(uBN6vD,OtC/NqCbNqCNoAL]k?J gm;Fg]4>>5U42:S5W=U4<Ve56;U69T=UA)W> F [>:E]:G$b>Jd=J{a@Ma@Lq`'K]X:KFCV9ETE<%GZL炞mrhkeXلqsIn#xfeMiS(F(mVG3mIFRhJ)ڞ՜aUUlJӎLŒ؍|s{zeg?sMtZ\~{+w sk{L>h3W@{qPiw8ZrJOu{XjkVYH0iZ5LvfOt\?NhCӃkiFx`l?ApT>yma'Kh8qVvDTye3l'w}%7ǒAqm耞3bI:PoU/Jsb [{C~ɋv|XEΗFƄԒdžct nj|l|tbu=lUg~={i"}|O ]Lu%Pogr=֕`x0h"+rC*v C;'tKX|o:ScIɗ{~bwoFMo\DGKs*aiq]w^B-i!P3Dq^CEpU,FUښak†p*Hs]fp^kSZh@DlGKވ|uaNhnKv\-HwQZDu^HJOmZwMr[JqZt[ڧS~Ó]vyf[)qK|y\6vXuRXfџeQ pá( o«VvD-fݰįq0aեhtzדKr坂i6YxAIl:)dd8c5 e'{l37L%p?Ia:uH$ft7Grd&ŚĘˤˆH%g}~Mêɂ默DlӃ̵6T?ن Qʗ1Ǎ3X$OŔVaz||L[S]:XFZU25;U58U;AUW>7E Xu;FVP:2H_:If5Lb?J]=F\=Ha>KzbJlBMp@M,nANkD)Qp:CPuBPmuCvQrEMSrzFSqGdVkpXG\YpEUrGU3rnFNj2D#HbBHD\}@}D]AFe8B$FhCTG%dzC*GL]D+I1_DFI]bRIL]KPTG\c^[i_esLǁƀR];-IQ7slIMtr dDZ=~_B hX-l~urP;pO|5u|qTY;ti&To]P}rgVs[FlUDq^E{VtRfglϟ5nNN@vԡ18y|yfz{Xm_FhwGpjey x"ej5`D l_"Fz`tRtgeo֋{gu8a7KnVcYwpehu`I}FkJ}Hf$Fv_>pU>:wcE~fEh}f@whiR~ykėؘl|L{BޘւDę~oj6ԒXƋpywds'STL=iLEnJ=tWSyPu cDX{>–,0If"{pT3yHjR7nbKmY`GdTCs*kNOyҋT[| ~h݄˞ܒ|}_tCpAsQ%Hx_@œ`\{6vU|mjAzfG?{&iWLV~;jMD{as>rUj9pWBFx}kNjoXż蛘kСdo8qђoYaqI>cSGDnMxWÄuTVay1cIjz`TFY}kRPz'l^sy{f{UׂpjQPaŃk# vNd1t EiCхjl4=JywmB+SiM/hMWQrqDrAC;gwIɒvLx}T emɣ ųP TԉNJ\ʫ1 ɆD"|Sjfy@X:}~JsЛ2_t{cT+\qWQgFk<||pSΚnNwn77zO i|:Z琱'q+}a?Ʒ߂-Nwn{зz՞fW1ݢ؁褥pyCk@oPaf:;͗G`?}À^PU@[:FUQT=5;Uv3c8V9?Wk=pCV>GlTsHp[=OF0W;FZ?XLc>J2f>}Hf=HHgO$Hd<;Gd>Jh@M!m,?Mq?MqOCNqC:OsA O~sCTQ r|DAR-qFRUspHmX=nGWnECUrFTsENjACG'cBJEl^EAF\AF&d?EhA Fe`DQHa_GKekEK"iHNg5OCT`Fhin6qv4{Ď̎ϭY_ԋڢĮߚr|hʂ~1P|tZxǚ%zBP_xhDvgTypn` / {ulRu`Cts^@)q\Bt~hD{_GÓx~EyKc*Lx񧚊4whҀbhuy2sl[Y}rN&hVQAioaO;vk SaySw?MdaUCah)B+֐Dwgxe5tuozx'|U}|u%k~tdys|gRVn][PmWEucCv[W%Œjx?{,w7rlo5qQVSeOMS{Y|Mk~ceXM|gYc=|kC&?Py4 w^Szy_;l;UC\PK=/\O:WKx{ANw4@TLw@LKxKBM{wBNivDOiwLDOxDPz?B>N {BM{"COxBOvBOuA!OvBNmxBxM xLBjM/v@L:u AM{vANwzA4NxBNxSCSNuCNrB4Njr@MTp =9Kvm?,Mo>dMwog9Cb`R5:cUf6U6I\:=ET";Ke>Jsj8?(Jj?Kj>fLBk;Jf$:gH`YqIh;3Geh9OFh>8Llu?O]#~aPFy7YAYy!bDϭbdH p-q|қs9OGgk}`Wm<%bL%ɂsV”scbaAvdgқY`wM<|`\塦sݜRaqi?UitH=m9w^FcojxMl 6[nh4>tOz{eD>lF!uJKz*Q{WRU[ǪbrB"p11̏ƥ։DևżT _(Ɗx~zϹɣ ɳ cFחv\q5nmr9rܤfY5}RQ܍v!Rkxr8Xxi_d}TΚs@O~k AgxZ鐵xI䬁ơg+=]&Зs樶;?ʙrr|zGMJRy:@TF8FZ^h=LTiAgNnOBMpENsGIOktyEMu(DMwBNxAOxBO4xBOwAMnwAMHxSB~NwMBrNuC OSxDVO~zC!O{BO\}%CLP@}@B"OyC%P wAO=uLBOvjBxOw]B2NSw BNEv@MsBMs CdNu}BXP x#B Oxx6COuvZC(OtBMRsu?oLnr=Mp=LqD@ LsG>zE e+8;:-W47U5;SUw7E=2U7=VW9D?WD>CHWG>`EMV ='G[c>Ik @JmALtm? Lj=JSdmMs>?TM8uA]L%sGBKAs@Mus*@Q0tCUt.ESoERkGR^jpE[Pj3EQqnD"OvkxB Id@?@|aBEekBGcBzH_GD5JM_ZFjJ cHLeI*MYhLTifjZn򈑊.3w3}nn}AVzBvފ}6pÏr焜lҌv~ԇȞ:#:ܡ-ˆT;9!͈߭|h|]ܡ8z=oL4~jl_ye}NhQ<^*Nv1=mX>zf]]H|O\G~`B|Ra;s_HGl[JyYtVHV-tL܌ЏA}:vsÂKҒz i؍< nwM|f@nT;9 khRs?eiOWCwZH!mM҂IlaglYa2j،yX}Wm |Av(ty;qQ+p+`~GtBC@|& k̈́G5coPm`U@^oU^;$kWp@p_CIsX`F?n_Gtp]HpYp9I?-fn(ѧ߼C{,}JwT4nRR>tLj U%}wZ|l}b,]x$e{>:!Gn~aZznXauWzmLBy`^C~eJ~a@+wZ>Ká|Ô<vwK(sQq$}_t@XdGbWgvm k6o`9P{waGgzpLGfmǮ盚98v3{{LnzXXWutx]u:l kpIp؍j?nGJ1sz`FڀpSvw5Wʉ)vOOvy;RCo8^Kl%jƒv!kcݬ?y'J&@W&!OA\[DuҮgN1ښ xnÍg@O~OXjuHÇjL8=nbJe=0\6gh?L~QYُr7T޵ Jȟ𔢉Jꐋ$`ތVt sttiK!IOFW9=yGx[H`>Jl#@DKlCM?jALes?Ja=Jga;AHK_D;F[9D ^==I,c=Ia>IKjE?KAnY?YLu2AL}wNB&KuB-K6t@DNsn?PtMDTeuES.oNDRjE RkFZPiOGQdoEQnCOKf@C`AIFOdCZJeuC!JvaEJ`E JdFLj_H@NkNUcbHge:-yj}~?smde%^`k*j+kkluhj{뎃Xw}yw$}㙅zW+zZbo ڄVxƊA,Xǃ1NP<=\|f DdjQ9kZZF5|feLˈiN~cH0|dJiVFXtO>Zl\G> qa?cYqGS8PEPNKCZZ{RzKwa)وq$swsهgLOzCaMzݣ6 d6ygė*Ef'{TvlUuOhyfeGnBUb

f䀄]˃VvQhlTuxiRtUydtrJ}cMFcbL!z@uOo nbq*~TĆ|t{tlkXw$IyA΍#kwbˋpaj ~em{ֳn퉉il 6}hm;kesfqzqOwmXD|i0Lmu_Uwu2S{uCT{^L9wltNM>ܙmDZak>}ɯ*2ɤ/ᾨd %Z3@9oP>h CLjۈ26%z}H/yם i"vPoRĆinC])xeiKy)[M6B[~-Xch8G6oI{`ՇUn|Q 3mՙΒՑ·DtvljQk`hJ*HNX<}DT;FT_c@JHhAK|kBhLoCM;uBeLwdBL]yBM|wCfPuDRvEAQxnBNyaBM{ CM}BLy{nCL4xECLyCN{C;O {BO{ANO0{BOxCkOuTCOvzA4NxAeMwlDPuqG>TtDQ4t@?LqANtDP0wtDPvBNivBNhvdB N7t*B`MpfA,MlVCsO0rWFRyCL2q;?Z:65:T26;U6;U49QW5:WE;@5V?EW=G6\=EKc=Kg?Ke>IZeKj>NLjB2Nd@L_??K2`=NJuc7J%ckJq-?Lv@rLrx@JvBKsAyNgr)CPisGTlqGTXmFRixFJRSkFDQkF]Qp0FEQrBJhT@Dsa@FbEK gDJg-FK&hEJh{GMmAMiIPZVXPV{(e,z}i\Q.PMYT VksmR]DžߝvАĀj"Kz0rɼ4 ؆>̌ѐ?];p|TFy%h7I,xmo S sXy\pMoW.ut_~J]P<[P5>\Q06Z[Tm>pSO>N&J@=[W{Ll$t딝a~ FexA`"oK9}^Fo[ȩM45^BqՔ}ӜXd'ƀݟߚzzqYz (qozc?zeDy`CnKXqGlBSKeqQRJxYGfeG|^Dov^E|o\?{}jlR4պvȼI<ճβ2ˮ dv`?flrT=s_KۄUpL_zYe sPRlZLxt`Dx1Z`R}D)dZmQ|7eFonlzJ܏|yP(ڎ;kot*QݟEo7~R\Ռ{\䞷m.qސeuVUs{^2r gBRkqr`WŨMyȹͅpٚrc]A3iJwOƑJ~ye^hᢱ:dժ8rpvh-pk|v |_%|ڠVmWCgx^ړw ֥vŠ$Jtqw{C~Ysk`vPeJ ug^0AjGMrQ݇~r)V4w\Ul֭=h \){>S{%Z,2ldﰜ@vй܉美ǩ6V,hPsO觔FJVQ,ɝʛ:^wiє0mwlwjPi0Ep`;6ڀ&X.7[|dU={YCYgPRꄇsp{j{KJpwFV-G􆢐̎s\s?V]QsESVIYCAGO;EUE/Rk=eDQ=HY9=FKf=Lh?Nd4AM9bk>KwcGc%=Ib;QNpDP9sD@O&oBnJ$i1>B@a?CcDIg^E@J7hGKjJOl\fy F\umC/NTONOhy\M׋/zaxedtRPP1GK#uuXjX (Ϝsi~ߚǎvǀ,iЙ:Fwjr†7Ek$rS}ɏ-zoɳsv̵㌱y$:ڙDvmcӐW_*`eτceQ{S⏻tRtjKp]Ck`R8\R8YYT9}VR/>`RbN BrUREmV {޿=p6/g"6yÑD~`ۇ(rPJ~.Y@qz E0~#\Âb]|}#[4! Ρ霚}9m>Kzx3ZZp4I!ymdFH{u)_L{J_J~haE{F^D{`_LEx` F7vaM0pb:ŋt;$v bG3̝K Q[,˂;3zexbOk ndGhp>R vVUϑ}ZxTqTu)`FZsZH֫eՃx#d{tKr˱ٖwfyxԚvux"YHvdsaS-pX;0qW9|YhG WnO tWFkO`6NYh܈imbF\w[>z'b?܉sCD^-|0^^󬾊ft,όWӭB 5H?؊kB@2_2]rxڡ J|W/~I|l^nI_0fM5z[HxUX`J1z1icx0yY{u I}YBwH w8}sKuZUcpEAT^@G?S=AQ:GV-;GpX@J_ BPL~d CMkDMFs5C&Mdv|AEM1x@Lx&CKMyeENx[ENTwDMWwAGLxBnMybDMvDMu"CM%y{AuMz+A!NywCFOw*BM}xCNvDOsEDxPtB}Ox@MIy+A!NywPA]Nu(@wMu8A^NwA*OEyAOvCOWuDOjwC N1y4BzLwAKtA LqBIMboDQhpB)O\jV=@GWH@JCQX>#F]]>J+e:>Lkio=&J;eS?H^?F'V+=zDdSLe{=Lg>Mi?Liu=Ki=Jhk?Kg9>Ihd$@Ke=J\e<Jfg='Igm<}Jr>ILHv.=EKv=Lw=LvA5M_qD=Ok"H0RbkMG6QjgIJSlIVunHDU>nF\QnGQt.DmPu;D OtlBJf5>Be^>pB`CH}eDBuRs q[)vZZ(Z]u ^{Eln|_@䌍WՓRŷ_rLjϼ֠v l\0` AkKU=kuqm]TNQΉqKxh{GDfV;a_%T9]cV=h[TA=TOESK_=i-S$E7zXj>Sռ㤙Ɲ so{>cKx+[>)9i,;uP^t?l{]v}ZyΠ֞4 Lң胅g[o|V,zaBzedJXhE1jC_~fuG|2eeKrbZeJiIRK-wGcz[waߔAz쬅λF:o2hQXJ=pQv_o?ibhwUvRJuAb"MŒm*؁-[ "VKtQx>E;wZ7/d̞ېoq&k?ኗi_mS8{đ}g$~&A0v`5woCx&\铿sHic.-t5nZ uޓuƍgexq)kywk^¯5/޵BlTMe}ЃjcwyYjܐhv転yU;{͗Hw{^t cDOjT9>r\Z?|yeJzhpNx`zWazňsQjFLF}\!VvS96kBD}]"*OZ^WǛ)]0pĒƊMT߉aypas?k%_ǩ؝(ė݆񕞉piȎqz|1n_wPiYyʁ~` qi엜ח=~U5}pl_ Q2a9ID^>;T='<{P8OAS%9HeY;H1\?J_ALdBMk*DN6uCNWz@=Nz@MzAwKyCzM(y|D#Nqx]CLfwCLKu:DCNtD]NtDNvAMx<@Mx0BVOvBfOwCNwC.OAuBObrCPtCOwr@Moy?:LWw?OLv?L1w@EM1y @MWy?Mum@Mt(CNx{AuMzi@LXyy?K w$@Kt(U?tBV C=EVw>XEZ?I?eU>K"j=Jf>rI^9=FZ8BU=IS^??\Nf?Mtg)=AKkD?K pJ>xJDpa= JLl@L$g@ZMet?(LgU>Khu=]Jj=IpJ*L|wd?Lu>TLu?8LIv@LoBcMd\I]RYeHdReHSiGT[nGSnGQngIRsEPTtDGOlCKa"@+D4Y@OD;XCKJaDKf"GPhgSdpp{Ԉfx~y__iwQso{U~IjYWfMKT[LL`NC3}cL}YrX4|j\|}kzzj*joǏpu |H݁o}jttr[HBm_hKl yfsrnu`> F+¥K-]|ąĠ1}ѕgd6oؗ|oکf$PqKVk]EG1_Ry;`)Ts?_5WC`gXETOEVN B&[zO@ncFLR؍0x;ԣ$#*r}ntmՊErAyXxqdu`~|veyp]=|hq|aє|,U:ѫmLQ3sqmL~ jL~niA| iAttCU}x_nXzJ[JHFlVTP#y^a0PϊCydԞ!H˹F϶LI󳮋'o8~~ofxHWoxkHhhnKZs[!BbQ9>`aR:ikU[?oWd;+wV^6@zWb.Cv`bF~&lfM}i(8}fix`yfW|Je>tKcƀZ1_fvhǚleL y;֥O惣io[Ek}atfcs_lwJesKMamvl7lQo0%f󣷒3e$dqpgň xrf֨Ó)~ߧ. Чܭ`Bhޞmyc 6en^h}HBQܦMz4Cm|3rU:gWDhS;vs]@owbGHoMDgz®sҨċ0^ou~mT`{hcJzggcHyeGπ/odI_xutž*)}Ƌ/IbAkKeRB(MkBNt BPDzu@5Oy A"NywAL&y_BMMxCMdxCM#wBDMsE3NqhFOsEN"wBxM x$@M]vAOpu9B{OwBJOw9CPO@uBO tCPuaCO3wA`NxPBMv@M_v@MwAMwBN w@MQuz=LtA Oxi?Nzd>\Nx@Nv&@L`tA NDoAYNh,ESPd}@FaU7:R8; V:1?U8<R9>Qp>AT?DV;EWX=Ic=bKg=jKdG>J_QHZA,Na3AN_c>Kh?Kp?J)rz=lJmu?LgB@7Mg=Jh=JjnKwsBLu,BdLt6AL;uB/Ms*DM.gLHsQdGRg`GTkGUoFRan%HRUlJY6kTdn#cjklkh\rtgݛ}xRujaed4lsh}Rs\Xt^Yv[3Rx`{lB}iʍQy#dtaπkj]Lc!rFb|^K9~aP=iZFv_C4dGHԐ'yUr0zJi%(ZhO}mQ=>rϥٌ`mወg6[oDx8bJrVNC.VaN>\QBncWrDbYaAWRS@5X2Q@_ET> XQ<x-psM眎tPNǟN|Ia{O}ypPqSOsiOjdH{loG|^cfHbMoQT<{Y_`H|Èt)rR3{GfEp\ B6z`>!|g,nZFVHxCfPHqT/Gh}fM, ~#j:5“Y?̵ϯ@a&qҔHƍ҈NڔuRPJl\zJ^u'd$EvbDPiS9[N1a T8fHX'=an\b;ycABO~Lg8D]{dB$s:WCw2`BKHx`i%UnuJj(}if~jj]Z4n6H,puɎ*tt[^h"c{bui͡8}!BF0cEdPjph!|+Zr3sʋa-@z[ iqgH[p[c[|o]tbP…$B9X݅hq`)vTc}od[5hVzن^ݗO}G( Rn.A۝NDyrqdR`PA:jT4pg\e=#|j=J"BvX08wd pPs.Swp[by[|cjuւsF̂մRz9ő2,֊yFBωn苣|I $ և&Uizbuܠ⭂>񡣊ǑXm`/Ʀ03֖S|ml\N?WC:VjC_@WVz??Q9@P=GU?Ir]?SI`AKlcBNh@HNpAA"P#wDR,x&DP}v[AMvd@L=wBNwCkOuPDgNsENsG OtEOv@BOv@'Nt9BNuANw@M9w-BNuBNuBO~uYCVPvCPxCOvA`Nvu?Mv@1NiuBNt)ANuN?4Nu@Osw?NPx=N%vj=EN tt?MqANm/BNEj FPe9B&G?[7D:vSt8h:SD;A@S8S?_S78=]S=vAT ?aE W:FX:HTa:JRe=EKd>1K4bz=BGBZ:CSk=#EU@JmZ>[LY"AjMb?K/kI?Jn>wKm=Kic>DKiW=I;i\>JmJr >CKsh?1LuCLuIDMsCXNvs2FpPu{GSPkI ReG~RgZGrTlGmRpALn:DMlfDPOmGQSoEPiBJbADW\%CDGVFEK`E&PkJXn`LM8iN2;[uTXIwZIi}F9d:6o}bn`h&c2wT̉mhHwU? e~PEk[P_E<[1RGfXMGcl\d@jJ_0=6ZW:VPC<1e%V=MXP8\T3;cr]?rJy_EiQd -out #>I#R{l=Wc|uoJm[>bP7ZbM2FfY9jZY=sb8+yd@%pE~'mI|iSD|e7Hd+}/k݊xȄCqFs_5\ƘړbyѠ5l @ml-)lKxHEpq|W\+^qo9|a#Dc>OfW?pnzlMBQ}=IJbTp/dOX][@tW {o3e6:CLb3=]g }R eI>S;_@8]KV_u[~ !Iº͋ʽکJ&|djWJ=O`vODgw>:{A6pu^WFS^$Xǚ≹~TU:> P_=E.RAJCY@IZCLY$D;N`A.Nkl=C=Ps.GRuuEQCuzB^O v@MwA+ODxAOx$A~MawCfLw GNuFPTsTCHP sANtBNt=tMNrC? Mxpm?Lm @MmCOkMBH_,;:>T]8v:QST;?T9&?WQ6;SW;AUW>FW OG\2;BFU:AU;DWT:bGU@mM&^S@`Ld@(Ki>MKSl?Kl=qJ&ki< Jk>Jo>nJr?Kq/AMnBMpBFMrCNBqzDP)pmG]R#rHRoHREkEHSk(FQUnBNo>I>or?KJmC%Ol#G$SMmGQcmBJi?#Eb@F0EZEHac FNylJ WmzLViNNWihR\mejn4y]ܷݕ'`wW{͐khS}VNuJ y^jk)|R^AyUsPa)AHvxS;7s;Ud=p Ur[Dw=aJYkl(J8H._nmcŒu=b);.1Az=Uj%fʎF~*[weOF\#L8|XcJ4akJZj>qZ Blc={jASrzUƈTl̇_Ϟfzt XYD~箈K}=Gީv}ʲ{hH'{݊tÚVxقfy|U3djjzvwip>}:e jyʙcsFs }jSuOc~+LF`dYc0x^Kew`pjjtt־aƈx㬘[?RlzVMaI`n^rˆB~؉~ywǁ\yrI7eR9g]B)czZ0~咵#Mε騭]'s2MoiIv(YB?bwGdI{boXJmtUlV(3Yw`|C.nҒ5ϑeG~+++n해u#рsex'HAĈ7rFҙw~~1m`jR I^LKlJ`KFlCF?W:^O*z=FMW{{ALzD]NtFPjoBLm"ALj@I}`>RC W5:)=DW;=X:>'X5;W8?AWxKh;UIPk>Hj>GX`$=CEW>:^B(VJ80@_Wg;EgWv?"KiZ?KG]d?Kf>LmDAL|o=Jl(=8KMo> Lp@3LpA1LlBM]hDNixCMzmC"OoERnFRnsHRpEQ~o6GS]pEBQqvBMq?!Lqy@WM^qDpQroGT4ocGRoBvN)oIRrI0M^fMC6FaFO mLV:pOhWlOPY@mYaKqjjwX1}~zeŅGيŮcˑQuŒcc sOrSO|mP{kK"}{e]y鄜jz]gI{f{LtVe;x[Ae\^LGfa{V|u\ccqAyr@fيo-s`IKօ _1|qt鉠o}eHu4hmRjYFzmlN|qa~9r]"{bC'}e*Dpoa[?cX*@aT,;dT@:bWCkmgILjlӶ-+e\߈&yƝsvFCp^Z]𒦇cfrTTmLYF#fUKlyl1`~lVbw9f3`5ُ/r}jkpMy?@MxBNsEaQrn^BNpAMuCO4uDOt&B)NuBTNCtCFOniC|Oo]BNuAM|xAMzw@4Nu>FMkv@K(y@JydBVNaxCPPqvBNvAwN=z @Nw?0M+s@#LorAL?mAL,jrCLdjBIZ[l?EV94Itg;hHh!=Hh9=1HcT=G>YfJKV>9LSe.=Kn=iKnqK>r4AMqBkM0mLCRMhCN@iDNmDPp`FRoTFR8neG#S(oERn9FTpERsBOt/@OtYCQDwLDQ3tHW@rHVLodG-Vpm^hr~PnYuO>GdEPm8MUrPUmBT[o_ixKqtP^zwst zʬn~Lutb;zgRnVtbRIpua4K5hvb8x'ڈyĆycp|`hzK}GkGO o&pX9nn;d>}eDՙ&5yMt驅𪐤@g6߄ę$툵qwkRseIFm]eKzxbfKw \B{wfDqCgDqeBqalFqabGpDY?~ln|K=Wx&: zЗKpUђk=bnޅIlR~g^TO@gY0B7g][?pDZEy]F~hMM|kMĐ}_co [@XqϦ@mť|oҨ!lZ>cZ`vSq__JWzcHUtZ|nr[P{jP\rMbMxz3|{«}"ӄ[57IcυZߨF!.Qո(qFØ)AOv}Ր/pZXk"~o mCmaYr$Iu"w%l w㔇os:bb7nzqx˙r|Gnmhp^Ԋ t.wܿ- jE!w[Icb;^7sðwk]!{hWڎ(ʜHˊe8ƥiR|7eDOwaD|u.Sڕsk̅ecVɫx3bu |k Mm[XC=GuZqP򘘌y{`c kǛz_ztC޿ߥ!)`w2 ԋǩoϾ0ޤɆl}좼p!E{iFɹ 4ԍ-WE$=SӗJv}oj{RZTLL`QSpMBQ-nFLDW; LKx?L xU?K vf@xLpDFOkCzN\n{BMkt*DNuDFOwCNwBNtsCPzrDGQs5C?PuA+ODxOAdOy_AOw?tMwo? Kxz@qJzBUM xCOZvCOZv&BN"xAMNw@NtAMqqAKRlkBKhCL:eGCI[>hCGV:d;BW:I;U9=kT#4;V4>W9`DWI6Uc;EK`IlqG?J5tALtALIp-ALRlAFMMkDNAnD Pmn~EQqmuEPRlFFTlFmUkFWmKEU9sDCR&wB[SwF+ViyERwG;UqIXdlKZgmCVa{vtPXs Bl-rRpaMQ}og;t°㦶Er1.s9&5vE@x~WBt]ZŜc˕4ړ3c8ϛ%hufxhk>Unv2L lY#ȗTrd:s+]>Ptc;t{h BUwhiJ/t^Gt`GwY"?s]/B%xz[_#~>BmCgksb\ȐQn~Œftlq/Skt_It=Z@s)P{_5va`pV`p88e(zYcHJaQF]hPDFYNE0[WOIFZN>UJ2>TI=.gfZ?Cj*^hJj> Lqh?KpBMmCOnBPlqmBOqCWOrBMGvhAgNay@MwJAYL x@KwCLtAKopALhBMnlALrDhNJxCMzfCNxDOt&DPrDQZsCPuoAtNwBO)xCPtmBOu@LxkBLxBMvB OhuB0Ouv-BM:vANu?MsRAMwq>ABLl@SKdkBLhpB1J`?BY<{V77A?W93DUY6=}G]=%I`>lJe;^JsjVJ2fP=/F[GX>@I,W;iK^~{nGˋ+qH؉oMGnIiGew8~\P0oYD[P$Ci\OC,Z,OD@^PI[&P!C\QI@:X0ODyqQcRDwg.DkZV?rlT?quv[@y?`qB%)uCWlmc>tHvڒtƧnYgM?fheݕej_dŕ8dLch[-HY$3bji!uÓ0|2p箌>Ӥ6k텬nĹpǬƌ7ɚ:qҪUR6!tx[jZw×yٺTmwf:iom/hcđfk\ߞt伯vbÐ.pvg틑|tp+fwy yR3Ѣɐ!{`җ}]Apu~̟Uɮ3XJY- nmݗy{SJjB_qQHEg|jȺTcEsɉ\vKaHxW`c n2ySa÷'-}޷ws1#;(:AuYEK@GzÐu˜VFĨ@g~P^[۽h$ؔb' xP\Ra)AFCX;?KW ?4?Q:;nQ9?Z#@QIwh@1Kvp@+KrCCMSq7CNLqCKP.t%DP!s?E&Pp>COqBPsDPs&B)NuALwBMuAK)p=AL?lAMp@LtCM7{CFN|YCNxD PdtYFuQiseEzQtCPwGA,Nw9BNuC'PFqDPs(CNvBNivANtBOtANuAMkuAMs@NqANNn?LkK>Lhli?LhAJa*@QD\;;W:+4EYrMGX|>I\^=3LId<Luf=XJg=OJ%lG?JEq?Js?PLr?6LVp?Lns?cMnliBCNnjBNi1DPh GLSgGzT5i`GStkFREoE!RtDQuFyT?tGcRrD,PTqFQoFcRnH{TntJmUk7LT3gLSf LHUXlLVn|PXYhl9SHXnRW[n_gAkr{hƆ<ɡ46Ԏ?p!xPnޑ𿭱_0~rVyۣzӛEzy{G NΣ?P%Ȅj&r0y߅ta^9{i;Tw9eꥏZ5-ҊLߞwl|ੑV~lswQetb61qob>iXfW=yTmQ᛼Gz$Lqd9il brxȴ~riyM }]KnL?eS?K_UC!d`D`>v[|;"fR ?_pQ*BlZO@VN@C ZOzGuWdPDPLADdXKz9lHVnDq"\;eR7w^aEJjhIoqSv{` i oy'{h@qDgߵKDh_pШGs"sg񢝍eǙ瀥Y╬~TɄW2PƊsIfS. Mf0ĤrLjrɵ15%h͸좴̖ŠxK#PuĎAŅ(Ǯޅ~Fc@J#n ALrBM8tB]KSl=cLgk=wKe@Jj_]>NFZ9 ?EXG8Lj=K.g>+JE`>GY|>F9\Ks5?Ks>Krp=/Kna@ Lnu@BLkEMgC"MdSE}PgyFiRhGSVk+FQ|lD$PoCWNCrEOrGRqGZRqE:PozHRlI$UoG6VqGVoJ%XjoZ3]M.Pu[\E nQNmM`gpFA{u]k|t/z͑rwgXidryIv!2oǘ&md`ޑwJ]|+J𡛈PTH_?5GکQfB{εo[(Nȣt?Ѕ~ƫК:)F`ƲOòR]̇cpt7#nn% tkyhwNmfgӴRk)v]xѰr⁎f#{gL}.R1@gz~~bDfԷ[rBttɻB˭b vkr G"rĀhXz$qhj|k'ݞn. wjXmQL͇}h>7|Z>߂,NΫ-A#҆s_qR+g|MG JgծԚ݆3I)ٰCCXpfnskwJz@:~RDz+tѝڞE+p }gpocf-MOPJ8J98'Q6:PJ;yMEw`=Ku?Lzq?Kow> Kn>Lvj>Kra?lJZjY>R@DY>=h@WJ3fV?J/dB=Iw__<G0[f= G\;[EV=FU=FGKn>fKoMAL?oVC0MkE#MdD;MaEO|dDPgFQIlFuQMnEBQqHF7QrFFQoHTDpGRpqHQniJSjLWnGqV7pEW{pI[mHKZi.LX1n;P\6sOZqSe]|o2So^mBSk_Vd>ldWipv`btef74mpؘM~5ÓP @NY[a|Ȯ,~!,vؘƪІױEQL ~#NJ~EqKG[.&1HmuσylƜv|uxe2fӜ-H ۄ=yyNwdɓ͉c:xm2nwT{LxHۄsCqrdF&ynPs~cCu4d7ndXm<-iCՊ&dT˖.uHskgezլvQ@F|h){A%tk؛S{hxaYoHӀgrC|5fIv5dGuvvc9FmZZ@<[RNjB$P`Fx>TK$C1[{NDeSlGvdoI+r^:jU2V:J -jSO@kS^k M΀_A8vHɞ9q)Vu%Fsfcڮ5ga-oliq˵hpζo[qބ,cٗH|K3I6&6SQ9tQ:=P9>R[;BAWX>Ff@HKuBM}4CCN`} BM{BMGvRDOpFRNo GSqWDPsAO/tJANp DnOlCNmZCNq`DrNtB;MvBZNwcANuANrDNNpHEMp>E9OvD2PxCQuEDLQsETRrERzq.DP_rpCNiuYBMv@M_v@Nv=?Mu?MBu(@ Ns?lLKsoZ>Lg>fK\?9JV:EjUF59>V6:W=?W?A:W<'>V<BW0=Er\s<G`_u=Ia,=eIPd=Je=LJqa.= H[IR]SAxLf^>1Lik"2Ks8?Kpf?jKn>lKp8@LoZBMmbCMWeSENOaFDfN_AMa^CNSjDNvneFQ@sNGUsGfVpNHVoHToHRxkHK;TiKVyiHWjF~YMnI[pMK[$oTN] pYcrxYg^*mY1`kYbm[ffUmfO"|iV6{g|ˈEo{gNj-%| ˏQ>TCץN?gUײ9ǟ͈Vp8\6xЊZ dyY΄jNaq*"Ӏ>PӄRÕeb(ɦt҂q~ɍ0q8]yKnVr`LL:~lgSH{zLLɕ~OwS>}d.rKts:?v\D>w_:vD5܍(jٰsޓhj^YYj*Oª|ꨋ{S:~vȴHtb|CMbmIEjRJgCIe)Cz`DEoCVDYLiATIAWL\B^ Q>cR>bQ':]Py7TDK0\oPu8Vvp`(J!k N~auHeFzFQhnbp޸enf?wBwԥut_g@3`2cZKFŅ M&=YuŌcIm;i:|}Yg5Ջ ńo |=ݩFS fjвu.D(óhCȃm4IpKbvC䛶nOkɴDpҲwEoPceWpC¥JuϨ^w\zoŲ},AXx}mytz,GG 鯥QceP^~2bk`'ꗃl2+vTxxJZϘ>иG>{°{zÉɡţ]rr`Lh?˧o?q hE}|c\DfGy$aM'g޴&¤ Σтιlr&DcZ-c/hDro+6媠P]J E hꚶ9CHւvބuyuuFh{0|zrҒQq*}z~ruqd#WhU9B;LsBMwoDMmCM-rCOtCQrBSQ1qEmRlpFRoE4QqB{M.vGBgMz@ANUyA7OwAOKt@Nsp?QMuH?LHt>:Lp>MOi=]K]^v?JXB]W;>V;BY;rF\n<H_I]/?HU >GpS;MFSw9jEU=H\?Ka=LPf}=&Ljq>JOp?Jus?LKqE@tKCo+?Ksp!?KpAM8nPD,PibFPe?D-N`BOMb@L+jB9NpEQQs6FSqFOVpG%Vo-J*UMnISilKUh:KXRgII^YeGXh6IX%pIJY/rBPL^q_fuq2`WahUa`miaa q_n'tnLrqMP/q\YhodNk~t.t,&wDc4":,@I9Rw򯃅 įG߻Ϫ@5(4PAt! Ώ)O NoSaf=c2?mab]LzeH ˋ9O<eϮzMc}_VkFxqZCC<_{K4ehPr=4}iH9Lp{xCgưlwifzĖ̝Uˍ4oygHyiEyQoד3ir_:%ć av@dR`e._U5ڕ{Wwtvܛe˳z[ޙtޏ;s}ol.vmkm~0oavS$wqRՃmptSK8| w)pKK1B_XBFhAHuC-M ~B4O.BM|D5OrFfRnGCSqEeQtDYOx:BLLwaCM;uC PuBPWxANxA:Kyz@Jv7@Lr?LGqBM9oJCXM oBLpBNrBPrCOQpFROpFYR:pEPs5BxMu BMz@4Ny@kOuAO9s?Msa?L/w\>Lov<KqEZ8@Z5>X8BWJdP=J h=J;lE=sKm}<`Jwi=Ja?J[hJ^>J)e=JiH?JoAJr+B|J;p|AJcn1AKo?*LoBN\mhFQkGQsjuDNf%ENfHCUOlDPlsCOHrETQo_FSnG TnJSmAJSjKTiJUfIWRb9IpVcJCSmKTpmQ^jq/\Ndrbgjakmlnrwׂ}mPei$rP-m|ɲ0`x]u{{ poŮQhc],A^]g }&FɗHߖU؎݀`Fv̀t\9|Iae݃ l#A|օ!:3OEƘx-x~谨nr2oX0oT=eN).`WLJ 7]m[MNM[Yj=ʝ f WSgef{$4]M9T(J2\TJ$8aQ\<^cRI=dS>cT@i7[#GzkY ?p^Z1mJTgQxzuyXP4@%xȾu_בRq r"pƴ[lqK#&pĂpxwphtQ\=}o? $IS[j33UVp";ڰԌ8Ƈ>̌ʈT;jzK5Y~QKbx0؝2{ŶYYsejW}Vz@X료h{>q4usBu?{NJ>Dό-kϒ;-&Ã͂湟)sڷb&kT՜oqW{ G{҄]pҩRSVS˸!,m^ͫqkL[ƈVO@݆"RoOsHH{iC񑩅Ak8?mȅ~sK(Uݔj60S`0fEq@(8^:u۝ٗ%&oѾi%鷹qq8~}cuwhYj pk^_2yr_/Mpe1@llBƒ4uxXA(xB悷zWXsTg?{B\`=?V89S9?:"Tv8:GS89V9 =Z?DcAG:pBKyyB}M~A>MzDOqeGR7khHASl,GP,sDxMw'CKvuD1N.vCQxCS|BP{#BLwABK\rALoAMqzA:MpPBLoNAKQnAM9pEAXOs-B6PEsD(RqC Qr DrO sCiNPtBMv*AMvA9O$t@Op=C=PsC`Ow>~LGu9/Jp =LkALObCIWArFW6;#AZ8?W:CVj=>EV<6AWvY=dG`.>J}h=Jnz=LKYpHk@@JoBJpCLJ~pHBOI9mC:Ll@%MkCOknFQQgk G#QkEN]fDMaFQJlDPrBNMs?B>NozEbQlE RkIRmHQjJRRhJTeITUaKdUd{LSiN~WluT0akq[\hgxl_so 2vY{}XvOxa|yVHq!tp|TƲq]Bᨦ@׭;´BdigKô'cN8xLjHp'vnafs4o|$th+uVk~̾j4ĘgԻkD{/N,I曱wY*/xrHCjrc=nt$nT](d(W{Ʋb޳} ͳޠΙUzu̓`!Z9o{wFTdcJm zoM蠄dʶu~=Щ;~Pxu}@uq.lѩϘmtUIoӅvEfO.XI0[N_8UP=fU0AgV;6jiU@iTCo cN~uA]2Ef{zo9~i[gUgeGЫQ9ŝx_zq0nHn,DiP̜+l!mJ)q훞q㖆s֒iiShwN0itȎ(2Ċ̩l ϲ<ʱŁ"kIBrùw֙~69aHy}ۿ<xpzkb`✽eo )w~'zʦ{Lk ztw0ȗ%zaŰ)NV鰖ljBn{w9"ootR~S":g̭o԰).{ԣя.\ԉĥS~gua}ZDdW[C^YˏhڢF.rՊtLboD嘴cЫaFz⾖t.mdfQm8e1zmJ; $uF܌~Daʑ݈tϜ7؇T*ܣ7K| yzmkmCod^~XotWOCOxVL4TuwY9[wcMJJJpg{]mp\TkHJdj@CU99R9%8kU99V89JX7bD^AVFVh\BXInA Ls3AxNfsC&Qn9FQRfFRgGQ pFNrErLqENrLERxLEUF}C P{BKuC+LoCM{nCAoMqf@NAqBNnALBk'BKNnA]O2v?nNvA PssCQsEPTtEWONs,C NuAL}vBN@sAOSriERtFrSvAOs=Mtp?NMckj@&KbD/JX@3FV);@%Y8=qW%;@+V>BV<>Xl;*@^JFn!?KpJn@dJqAKr.CKqCJAmDhLAhTBM|fA$OeDOhnE;Oi"CKb@J\UDN#hKDCPq;BNs_AyM-oD!PkEQ2kFQlGQKjJOSfkK-WhfJ$Ud/LfVeOzZdUZfS`NpcXqx_y~o:j0|s1 Ai|Ӛ M~pzM(qd~6röHz|yA_`m}ɣ|ɐن5@hwqޟo5ˊ`ԇ~} {I}o+au!p0Cd@t~*gpKFɸRahҭ^rc #96*R } ?tW]և hٲ a_٪LĹqIȥb.D ckyڕ@^Vٖ8RQυ]d,WrFI"yM|ݔn;nkxœ`{Ǧ=wftgw}mnszhċ\Ǔ0mzs0zKfP{*]ID,r_5F2`YBO d]IIs^ Au,\?iEZF{qU숵qE}Idmp:DdQX,(cDp~tw ohyjufƼ7ljp]n5t%Ko w֓q/3g🶆X>_vqcIoխc] ծȎXWeZc{:÷g9h|Hk2iƤlfds{ʛMWɷrEˮxEvƄzȂZm.ʾjXa2|:y!rAwЀ?Ѩ׆V)S\`mDޏNՂsUpnχƉRTd^F(Rlj GE{BUJ߅Li7oM$uSBn'Udy8wqJ/:oŪ@.l桮Kڍ;j1d)j3mQtDOsXCNuAIMcwAfMt@NtFRwAJhZyNKt]Wy1G#X]uCePmj@JeBH\ ?aE WD;@hW8WW?AZJ=T>\:?b<^Gi>dKm>BKl6?TKoM<{Is6=ISo@KfR?Jy`a>I\;4HZ<^G3^*=Ha0;H0f=Jej=KwmO>Jq@/LsBMSryC4Lm+EMMjBMd@7M `DMeCMjA+LyfF@7Kdo?Kxh7DcO1qBOq@CLOoBOkEQkHFQkGRjJ[TwgKVgpKVg=LYf,Vu\`aRc7hn\iqmxu݀UrX{短b:ʋqxܚj昖})-sz xx×r%1pr/pSqMqj}hXѧ[( qk~Rm^v fWUҊ:wX1ה<&Mu2Z\i( P&VĹG6FiSIZ~w&&ooNz+.h: АI7Glss!*V̒wgK+rKyrXbh5qb!jɽܣVqoq%ܢs+͛m#oͤl%ZbOvN-rT}lF va#8z`7gN}/v;xqq~vkTfsQ4x܈IȨF}klmСbR<*l๛̝nY$˜EN e7o8]Ž~}ny7@ůWZcы9+s/ Ukj3_$c!)^iA5tHbv6]z{gN`y潐Ĺw%O}.M{m{bƖzJv UDTC<,:fK}?dPKPF XkNJ`.JK.e FKb`rCHW=BV}9;VA_\;%C;a=pGiALo?Kn ?kJyo<5It]tJUh?1JQc@=J^:?)I[x>jH],?Igb=.IfW;Ln@eLrXBDMqDWOojB}O mEQokGTukH|TBkJUkKViKW$ibLYh][`fs:xsftf|$w\gybGGv |8ܠ2#/4U%7~rsb^F4FiM3m HtݤyEȫ}Ʊw~|voԏozXv]Gt!cM8~zR4J={a:{,tȥ΃'aTxǙqxǸj0%̩&KW΀Ň8۲&5SxrޕuDqrۯ'pVк{Q:Iԩԥ"($Kg u7E5e~\֐2wbVvn)cjſċ[ixtZ{=f?w x؜b1 Ѱ7.̝͊G_V*aX-w͡nsunh쬖eiVo쮂yvq pjy 4v9~qUi k@q^wG&W'Cp18`9 v2JS,=6C{|O`{›p7ɓ3jQ/IVWXT`pƺk|ʕP=ϫ ǪRVvGƢ"n}Ж]&r[+īވ:ڧnoɞXps!kiƜ?uЀ0̫ j?ѧ hԯKyv?:Hk3bτDf6ڛ~|̯J'ηh}f6scԔmz,߉"Ĥ`-*6ɩF8\gZ[zIqebxyE،j/^$=`+.i>}lJ+u\tš)V Dz*}ՙ֋~dqű9EoRGiK7DB[D=VJ#H\^FE`ax@]E!d4BJbBKb?H[f<0Af;><_=zCYP?\EV@DGS:>T>$BW<AZ9@f`=GGj@L|pA|M:p>Jl@<JnJ%gO?ZI1cA0J`?I]>MH^$?H~aU>0Ie!k׮`®_pxVSX={݌FbxK_z>XIwlﲋ}ʣG7ԧצ46ШνOmmm̑-W}pŷ̢Mw/Kyn˘kPDUpV/zu٤Dž킪H!kBزpgFu ujkR4`c0_AӐs8K7ʲA7:ip{emm{%fUȤPϖk0F3K}hdpC`}BސgV% )\$!^4{,bD,qY!Tvθl2zIƋWϑ̊E$w\_Yo]JGNCG9L&HFzaUQgGFDd:@c(?If@L+jN?_K5o?eGlC Ga2IK\}FJW2@HT?IAU?ImV@KWDOa GQ5fExO_mDWMyZBKc]BKvdFO mE`PuRHRnxJUwBFOv"BaMrF RlXJRYinI~YrDOt@M{wBOvxD@PqEPp7DcO1qYEOIpFR=qB{QMtxAPwBOtCoNoDLMhFMdCMh?RMFn@M+nVCNRkEZQ oJqYqQ+Zo5GJPdg>IBZ7=SR9U>R>?AV=@"ZM: ?i_C=F`g!ALgmAMtk}?LeG>Lc[>ELb0@Ka?tI`N?KIaa>G_>yH_$>I`=FJ d!;XIg=VJk?=KAqA'LBx@LyBNz-DNxBBEM"uCjMqEO>oH&SoxGV'n~FTpEB'Pys>?Lr0AKnF#NjEOjDOjDQiHUjcJ UslIVoNKYlNF[=hfgeBI{[2œw @}O}Jϑ!Q#kʊק{ؖuijWnݵh|P|$gz|C̡+})x뫿!ln/EOcEBgY1GaI,x.l  yf=KJ[>(dI~cyK+uUJyVwF_~-iQr`MWzUoxE0 /L; ȩ~x_í~Qq+OyR[z a,_f\oC#T]yY˦$BLKsz0[=כ㫤p^߆򮓗^lʎ`˃iC|jNg:emK|8kTA{b>~YV~t|[oz%ĭ @wCޜI 6Ξ؀Zw2mGeDήȔ]-}C}~Rtpgy-:l yxu>Hlsٕ*u/qK-p60jfq~wgN2yٙ{ca?Bى/EoHɍİ8k4u`'Rud~xm7|eRt{Ztl sͶ՟Ə.Ze˜k/K. g޴ޔbu?}w+db*hxB<ڻКu'n,z0}Ω/FӜ,ԫƁtj{iły5,\xhV okۉ!^wCQAbĵޛ{t?}8l#kʘ}Mۭ%Z>Ê㯟BѭO)}`Xy~lCgh20ZY0H5]%D_No\X;u ɳN` {-:|_ Fy׋L}l?~iHViM~FS?{H5FCTfkyŽϗgly=cEdAIh3AcMo?LzrB/MnLRhA[F["gOQq\3A'IR=rIcT^?JV?>JSW9AK\CDTNbfCM`BL^^UDM%aGOhJRsFQOzHXSxI^U[vG1RvrF=Rt|FV7q.EGSo2D8PpD N t@Lw~@NvDOKtREOsYC>OKo9ESPmkEQlUB|PCqBOt:CO thCMRoDLf&FMpa%DnNhANp~@NoAOlB@NsmCP`mK)Qi0G-I`xAD\;a?U8i@{W>@YY0=0B\/?GhdBLk@9LtgAMa@M]]@PL0^6?Kgb>Id>Ib=nG_=EH&_zKxu?(M{@ZN|/CMyBLqtBLqD/O&oHWSkGWiFT4k EQlBtOjA,MfGzPeFOeDOhvCP+iILSjIiSfk2JVImLLYdkT*_i@f gj߉z1dXh4R{<~Ţ򜡂‡K&Sl߅Hw槯ןQ~qţ~a;UC ʄٸĞ rr}ǎk/}\|tbO){dI†YzdmM t엝8~}o)V{TAyZFz`bXIx|Y;EXkM6nTEzk_~rXH+_F;Wry޻ 0zij a {8~H9fO|Uduu0g=: YřEnqevvלaɟ9c׾Uȳ\L?OGæ:Gh뉅k kGrT"B_MR:@pbF9l/>|+Q͞xȠzG͒3_cY4w'7bwOj8/}`X Wd6`lMΩ'KįkXۋDaʃJ"HhpKzZ1_]{×sr/jr ӗhٸcnͳAmNmNp8p؞yAb{Ȭen=6f3jaĭfCԋy6x\ gfv˞f~ߢ``unm&mLkzٗskͿ pRo2Pjh'Cq4T쁌A]ͦy@~:tStf(҂¬@!N٪|&g칐Ɵy4݄[ѭ|av]JH]şz{ nŠӊWUpC"tIqRh[pvșuڥI%qҡchwc]ѬUԯ>Ї_QGϷbLΫ1ũ2‡qޔwI,_4*[9u?hDJrÃkȹ͡K k\ꈗ˃͑ UBvzb9fiJinOFN@RABD`1x!fx0@Gb-DH c?CNqA N\sDqOp PZob1d(n{TmU~`AHR<HUp>IZe>HY?JYCN]eBMD_ANN`DO3dIT8nV b}P]ۃhHT}AHZTAyHU3wJP\xv{NauFV5pBO?oBbMsAsMwdAN\wCOvCOuuCOpE]QemCPmCP'quCOs_D{OtBMpDMtiENSeC,N j[@NLp>N=o9>N&m >Mm&ALIjCG_DDEZBC'\KX8;Vp=@W>AYz;CG]>GeR@(Kla@qLhAMmb@ Ks]d?I`n:HKc9JHf=Il/=qJs>Lw!?May?JMx>BMw DpMbsBLpDOlH5SiHWpiGWjFTj[EqRi}BPfLEeQeEQdEPfNEFQiHGSkISiJ!WhMXhX_jeioԃx;nŭ碓٢`.$ؤ⵩P~֦N?L[1B"{g|6ddj ؉aƱb©Ōҹڥ̃|ХʳB9ɷ46ĸ{ϊpFbxH[BtWj爝dь́rlt|^HrL[o%tQo%Q4s EPrLXds[]pOOv_y?PEQ=GU@=Ia[; JZ`?dLWDCuN&VGCeNXY`B"Oj_D^POeJVoJZ?d||Y3bTLwWJSU|JTwcO]rXepfR`mE5Qj|BMypB NTw7BNwCOuCN[tCOrAOpAOqB\Pwr CO sDOXuDNPNq>vNp?2Myo=C1KjA1Du\gB0A`WAGBZL2Idz=sIi<@Ih Գt@n^[‹֋wA&ʌը4nR"[α@ ߳R1˛і' o>fB:{YZշyl:kk͘tpqlÜބ-sGn8*v;lT n>0!83ඵmW|g}GUX|E Om2&lx0&}:Vmɗjdpb,r6˛_p=apgYrSq 7q6ks]Mw[lRW~[t^aʭIhݜJxc´vuCzϤOBԕ~,q~HNAbJǓİuNcALSwD% shC%n;>wA鳇c z/dß"˩u/yٱfyz拈S Lj[wCrP}5̏sՎoJ]~5_4.ki?wTX^{߿4}ڢlENsxxiC|y l~v>wՅY&\v.JuJ:dMCE+`MA;S@9OvBFc\DNDoHSweNf]{R]AyiS!W rKL_BE-Q*@HeR?KTV=KbX<'L UAM3SCN5UCN[XE4PbLSj{WsZsV=]E{R*[2zKQhwvMPvoMRlMdV#cJJT/b=CN`ALkAN*w@BOvCHQOt*DOHrCOqA`Ns?ANst=ANuBOYtBPt%DPGuCOqBbNEl=AEO0n@zOs?MOu@N7v@LtxC_KnsAFZ_@CX?>D];=B\o8A~W~:CW<D\>C^_=QFRe=5Jn(>K pJ@Mm?JDiP?Ji@-Lio?Jbd >J}^.?IWI?HW>dH^?<F \?I]r>J%g@(LZnA,Mp@IL2oYBoLpCMfkDOgDQfG,SgZHTkoIU$oGHTpERQqDQ;lxBtlw)wHJT=LT?LiS\DWLUDLn[FP_~XZZdkiHvhqD^h}q/{>WZoOOOrIFMkJEL^?IyV@BJ'ZfAzLh B&Ov8BPowcCQivEiQtTEOrCOsByNPuBzN_w:B Ohv[CPktCPs}COp*C'O nBOoA!Or @M*v@Mzv@rLzCKs.AHb*@9EZ?gD$`_=C`D;#B~\=C\\ >"DF]>Cx_? F)d>0HLk>9ITq@yKr@`Ko2?ZJk~A9LLhBALb?J\AKX?HWe?iHw^j=E\T? JD^?LeA_MjBLk'BL/ixCEMjCMMThDoOd&GRgMGESlvHTjoJVpG'RqsEiQpDPlOCMh1D[M_HRViHR [F%VhTH"ZpIUrSLJWmRYkXG]lJcdorror-cqg[u yldrsOch݊z㨗ϭZޯ[,ã^ʇsUˆ%Yųĉ}ZYf@x{hQt-_MgNNybf!nu(ӬSNVXkJi9n KO eeo?Xbtg˙pʶAoֹ,pR6u1qmshȦx]cxl1K{ĝj~9͢6q*waʟdr}:70vzJȘɯ5I9wD̍Jx~vEk𥑏c➽hܚʈeOzO eViujծ ΠZΧ GNΒoMWݳ³/-Me+ `Ћ#ipIYnIHw&ZPezJk.aywx ΆZ.~0z cU!8'Ć"s| opp@KIW<7T>yELWGO8\IbT`eNfi3RЋG6܆V狾r4uvXIZoGNiHDMbg>HV=HwVx@LeB(O%sA@OuwBiOwD/PwD7OuC OgtSBNtCOucBkOuxDQtEEQqCCO?nnD7OmADOoBO;s_AOwD@$NxPAaMwBLq?H?b>DWt?_D]9@Ds_>B\>A/]^>DG]c@E_AFc AHfpBlJ)l@JpA&Ls=ITo>Jh>BKc+AQJ__CJ[ALZ:=HhZ;BF^L?Jc^@GLme\A$LiABLi.BMecBMeACMMe^DO]b\GR hBFQn]HRlqHSm$E$PlDOmE@PGmrE|OZlGPVhIR[ITMZH2X5f:HXpIVyvM&Xo{P7ZjW]qmfuepwv{vdknh_k)ajl![a~{hS|J}Bˈp6OǮ5֯mǶq.{ֺzc~-|X*#yO5[)@kMzxgPފzg9o^|Oa+|!ZJCmd|{عçیV#rёuCrtmU; fO7qU@@ XimXtk~:ꡤZmioEgDz\,8!oS 5iT7t a?||eCdY@rPޥ`zc1΂;Mt4p8nTefCpkY7;`T:_T#;0n\@urZ?EpZ@l^;@h|ok\ kMŜnTsgv.b)\~f pp#Cs~Wױ8Cys5:? R'a;7wٱnHPӯW粉)RM}ߤ#`}͇to+z++1Ʊ+G.3Bެ.ތfܨƃA4as̈v1H\x.khpƅzm͍Tw }{*]mAÑ,yÿ.Ռ"ίsӺXXAfáˇegklr>mҳblswaw[#vAO@plaqttnv;zŗ7zԪto m${r1 ~FkQ}*5*qwޙsok@݄%,Ȼ(xħsħ|[$}ўwi"_awrXp=xL홛&P򺗛tփшӰ(qB<ΜJCΰ83֯7̺E^.ξ͈Sʑ+ƞNѤ_`񢌎qwPV.wKR3rrcy."ɓHK 6w>+K yUb4KՂ~u{n s`|/~Zy jgpt`NTjD7FBeC7B}g[G?KJ,X@NdCOnrB\NvBNNuCqNueCOBvCO$uBtOdsAOrCPt8EPtFPGrExO2oC OtmBNopBQOetAOwANtAN s@L o@"J)d? FW@E3[BF2\HAlDY @CUZ @EZ(AF^VAEb_AG@c6C Kf'A}Km@L s#>.LqIX]vLXnINZgSq^kcgk~}{%9"sux-w?zYwl"Foo˜W|,K{ߩ܂gPƱȉįֹ#{y'RDr+oHSqUU ALx frN~jpUA}f!mpVSfx療t} ~sKv HqR=cCL<@oSbCf3iS&xb7| c2xaيrTjIym.FlI(nRP3k9Td;zfD[lG*cfW?bV:?ilY>u,a=>u`<v]>|Xxpoϳ_\'n\tC~iWcYhfÞq/pM#v[읲|"zZª9CEŇ~MEd1Xg0^̘@ͪ<9v!rߞ'g]kի尸0¬ʹǵUl%01ǧJ{ ];YJРfɞzq^qωpʝ/qisALrsg8觽ۯ{:;7xl\aqzue\uNV}]Nm_^i;ݔf!q˾:zx¹s2ClRk–m1ߛo.m!ylƻșom gdYi8;tq6}zۙvܔgϫzbl{ɿDUAՉÑyCEu7mEMu5ݢYyv[tTw^W nl.i0(rI}|K ޙqG`ԓѦ2ΨԊ A^'ɅQQJʀ!NjˣYO{[yX(~(./SES#BKZ)FSP`I.Rh0XWofOsZe*cą<}|kC[DxiigKIQahBcL\gG@cL3`@ENfAN2q_BN'u+C+O3tBMsBM`tDOKt9COpsrB=PrF]RXtG`QtFPsD PUrkB;NnBNoBOsBO|uA!OrZAN>r(@L1nBJc?EW@tEY^B_F[AD#Y@ EW@ FvXn@F:]S?oD_@G` A#Ia&@Jh?:Mnj?:Ngo{>K3o?JoAJ n?BJ/i?Ke=K;b;DKJbk@MgI@Lf?L&lf?7MqQ?Mo(BFNcFQWF"RTE9Q+\FRjDPm@D1PkAcMld@LlCMlqFP*l-FqQ?mMHR oHRkIUkxIJX nIZrKXlmO[iV`:kfi\k}+L~| vw'|2Cryqh 8|ݯ\ Y* ۬ħvH\X-qjGe&P=o\M%z]@efE2wsK`[=fԫ9!aєe!mЛn[¼-j]ʛ=iuҜjK%-jv¾fV-c\GgӞk&f~b]шw_T}8`#w>@+{e/%Sf>i]^uip;Xnt])[wxn}aZj^w3SIsZr?Z*GrM^TB7sDJW燁,{РdȆZHȮ~9ͨȊ/ 3[ſw~ %7k|h=+͔,œqLj%kٗ, Ȉ~KykАuތo숐}gr ֆy|ۅ, kymv[MsH!Ht J_Kq=ROAgX2_eJhsrCψS:^a6j"EGS?DS3DJ}YKSe^fwtmq.kF[ɋ`wVbÁOX3pŅ%ksXo[k0CM lBMRg@K&el@Kl_BMqiCfOrtCMyukCoMat-E`OsDPct1F6R'uH UuIRZt2GfQirD/PqCaNnJD)PFpRCaPrr"AMq@LlAI`R?EVAEW@D\i@uE%]AFZw@E-Zt@E\&@Ef\%AGZ?GX"?bI^`AKnfAMbk@LGr?J4t@J8q@*Kn-AK j>KeLys>_Lq BMfGaQZFQVDOl`dEPPkCOmmC Pk/CbOrlBNlDOlQF;Q5lFQnhGQ4q:HjQ[nIR^mWI TnIkXnKX*ldQx\AnY3dm?qmUoDyc̗ˆbe1Q?~uI0jwz-NOxo߲lw۪78ԬHkyǞLb yk{NTndYf@nWKpxd[8xcTs[KufrSHTR,}a߭ߡ xuzo|h`& xQ`w6jUzJyLdׁnOhU|SqsbM쬽{p\cmP-nQ/sU=9f FThCx^Du|\D+x9]E{_Dσc@4n|KtaFyfQ61oU?rrXDs^ErO_XEtdaFzdefI([p"K cHE򷟰Qõ5X|{9ӃxiZlc%|itݕnefB:V:xd+IjٵѤҷƉ~U7ͫ荞6Қk4(dYl&szxiȧ /ȭO҈\ˤa!' ҪV)ǧˈĨ%*$62{zd&u󠃋Zcˎ*wOyzd@xWbu$cAxxh]gvظK(:]r }]f{:_zhJCyfIrS`c`Ůdùǘ me0p^miwak}>ibgdeV2`@a΅fȐ=k)iozX_ߔAzLhl,q\TXKRQq]Ŝlƻsű,psDsv֡ v YwokzNhG1yhL~ r TֈyWn8\Qu `Ws bҰc*FͰ:E~Ycx!|ɇFf.\ǛȃŐROSLMQzfڌg{ū<.@,S}Dh4̓f|x!irlg%(mv l{uxr"q.*&uj~Q=P|J!JSvOJ"dg[5Zk^Er(un}‚dPkTaMAgET@EuULE1J[XNQWFkot$5~ڙσma*1^)ۦӖdei;rSG;TpGQk4CXJbBHfDK nD+NsDOwEnOuEO'tFKQv"IuWyWLZmyIsUvCDPqDPqeCOpDTPqBOr@cNZrKBNqA}M`nABLhAI_I@DWAEXb@D[}?Dh]AjF[AEp]AE]AF{YAG(V@EHU@4IZAYI]oBKHfAL/r5A\L1vAcLs@#Lo-ALRl@AM?k}TsӪmtzÖ,Wɺ2_i=Ǹ߂67ԀNgwߕmn펿g&_wP|k?On^#N+fSKfRVD vjQN)ޙOsߢaz}ÞDBU8Xvm…t2&}jm}Mn{eu$uv|Zxt+{u$p_ KTjHR;flWTCrTa2D(in;jF kN~gKzaPEesU>rT:ycCjua@f(R9ihrR!?wDWEyv_BOu`?s]@w@_UEoTg˕elC}JfaƂn^zdx!d܅e4~bQ,\@ g|G]@ic8lTCBLJvtbNÌhb֟6e`zz h%ss sƮvSdyP]ⶲaYTcn2&fD|ߦ#u^j~\3ww}XXAȩat水ū΅pcdqåX-eyqҕSmQzkkD| cGMqb+¾~p3ƾәrˠBbw^mNKrv&cEylH͑|PZ3{bĬ]jT_tPwQJ$sDBn-#lºi'hRbze_oe)q|wnpm\ˇ~Xfz֕`aGİmSɃ0w짾z ģx؝#uj+{1Tq{eAIt;bcKpP|Xɚ }^bq#NRQ΀hhkݧlxǭJx #uq/ĝí9<$&0y;췀Jݪ ᛪSADpҌ|kx#m1҂h$Ƒ{̞Nv4w{p&nXVԑЗn}z pca.iShvlPil[}_OoR^CXA\FX@nFZN?D[@E\B^E_BD%`@QDo[oAFXAGYP?@G[$>=He]\`Xš_u_MrlܐcǃM~vv&`J*~h{G3m`TpwnJli?AzG=6pNӆmxe(sRqlsE{_?sV'@w\=}gBs_>Fs]J{]F\YgB<|f!=`w _>twPY?/{eLqNyK΀VD}W[ wEzdFo']5vPQ'j+8oF}lHncEu\R)XGh3eStIp7n>JZxFm{fOS+\4i=o|-)lfHY}LAVFVV_iu%x:磈eWw5h\l_bg8~>cuy}YݥX󵤠"է;= ?mbgĎ I0ۇܷY}pэJd u[%m$A@*ZxqYߕmϾϭ[0I"C tϣ fģÎt/rlU(qAYWF tL^G1qKʓ}!WO_r,k>v_&xƵuƑp^?zn꙼l;*kZDdȚ^ }Re~sqyFhuhvO%5aѝ^spf̵e֚j䞨r?1VzQzz^»xɠxmۜs˝čgsS wAd_KGnKp]{S(傐TӐ`6hi )߰d?gϘ ĭnq{hȮwk|~ymiބƧceL00},>i=T"̨ԆlXpxIzfrlw'~Iqnp}NlqNbן6Bzu`o]|}ʚ MR:3&ZV}~v> )xƘ|VQR[B=CaV>BI_-JQ4[tW:]\@quYy7[kv]zqƫޮ9s-TsuՀgP^wFNdbFGU|DCWEF$`bDJce^EOmFPsG2OHwHGS{Sv` _gS^~$E.Rt?PtBjVzCRwqANs@NrANeqA0Nvn@Kqi+@Gb?}C[AFY?HFXY@FR^@Eg`ACaBDc?Cbt@HF>`@@HZ>\GVY <Hy`:Jf=K kdAM^u@oLOz+BL&x@}Lr@Lq?MsAM]tCMsAqLVs?JAsAKrA M"oAMkU@MkE&PkHgRUoEUQpCOsmFPi|HRkJ(ToHQ>nHQk G#QkxGxRjGuTf^IAVjIsWnKX*mM\hj\c_{aԖYmv~B@u:^BtaDmRRHgBsU*lX09_nN80hdLm8X7C,UE3OdOCn&]4Lw[iH|nD7b噫~)g}Hw8Kg"c᷒%g陴r7—qQԚ|뛣zܴfݾn[vAVgNjb8~|[:7hGp+ |ǛÌ5piq+|d/"(h/Nȣ"嬌rНl _nyE$g?х!tXsօ|v'q~$z|~Yw^ro!VImVL7mRozFNx^}NǜA`6o?u.ŃuU&oInvqnYcu,[s]Ycy}hەwr省s2tyIJ="{sr-tr0wPātŀv1zMcv=t/~yfԡ.z3oz}V|iJ<|Fm{O΅`wW N>;UgtwګΈΦczЇVtR,|8upǠ|{QΧrũІ4HʮP[;Mǂ{Ӄj\qRقE6xuva&~8j>{vEoȉpm~v׬}|tÐpE/P>łkլ@Zέ^$‡M|TSZBE-UTF/N_8OVZZY]1\lmou%ѪّɃ~< QVEVP?u|r{rr~:P[Qt=DU*DbEiSFGRXEH`BH>eAKmE+OuFPM{FvR|!O\d\:cWm_ FRtBsQtFXX5|,EUz>MsCANr@>NspAMwo@Kk,A,HeRAE a*AsE]>D\t@HF>`f@Eaa@:Db5ADMf>D5h@G5ejAJ\Zm?HUӹYȼRJy_]U=:Cʯì)YuΡ!h_l?jo?FfJGdkIOy1bInVUFm`TI`cKt?8f SB}qvMbw-Tq|jDta=haU4b Pr7W>F5TG5 aUM;wlHvhTtmUsnGH[yֲ[іʲQP =Rw# zv-|ǷӔtܰhYѹlPLꖬ\sXOsojkltugs#j~3W 0nƅqƞoywࢱmUmDŽjb}opG}{bD2xddN|}{iߖ|yrGG̟ԃeox/\vpD\KbuaTYs]5}RQ}RRuma)덑j[EDo'snOr'pt&pюc;}Xw}lMU{nZjtʖw}%Ko띦gqS yaiwFHv vCs#n(p>rf{)NQklJ}pTey_XY\lKDt‚̎\}з/k7RQʪ~;5vhy\ǂ Rz^ec`ho׌.Pr>ׄNj?σ6Ǹt}?t?u]͎|iRzB~lgKa䟀yтzijxG'ɭh?;¿}ߧũ5GIˉF[g[(_GJSIPZPWXX>Y^7\emhn΄|x$ĀįsՑxspEsg]i,_]qJXQlAMx,B[NtF@MoALqoAJ(l+CHfnAE`IAE6`p@D`@E`9AE`@Eb@Elf@ Gi?Ge?5IYh=zI*U:\n4e0R%WpI3jm;^`0(tb0Fb^V&҉]a'Na4^#7_/6k|p< pu<@zY_.fՑ>} Um@/5}L倂 >=&}ϯӅ_s|cF;/zH]ЌwHz(ǻl"F@Q|ܤ%uە{(_S{Q~e[rkGn#SnUzfzMv7bMiSJbm:a>OJwhYb΀I\ B{]}wxcuib?nAa?7 TK%6cSDxt]O:˓mhKhd{ qN3MvJ\5oRAJϴCϥ܌sƂGt$<"ӘuڮopͭLuL2an{6xߣfx{W]{z`R|W]{d2+knВJw&n#F2fӡֻ͈A ґVv%mj8 ^ZsSdv9` HOtV럫q ?̝˶HXuUC|mnT !xFhj5k:ZJgt\m|pEEj˵izmtyzDutr y p3d|XAqT6r.Zɏ`f @vР-7uSi?n#vTu u!DqEynAOnxm(kƲhge]ėSzN-CunO}|[сܢcƍu ˿?Ȋƀ+vk"vt$ԏGff]n}lY֕/uמ7vaowI#Q9db=ԧɣύw@M0ŷΨs6 !SHkkeVL-PSIJ$SSWL?XSuU_[eLimv7t/qDqm<)|(:CwptAXRdWVVqoN TipEAJ^D>HKV:F{IM^ERH$cEISeDIi6FLnfHP_qoGnQqDHQs(NT9uW]wIKVuCM`rCMGa>~H>YJm]BLlBLq@K3tD4OpVFSanGjWEnES nsBOiA|MdNCMfwEOiEP0hoF6R=gGR5eH6RfGReFBSGaIFWfI WjjKHYflPZvhX6VaSm fW}Ga`sHaJ7%]-`*0o`X,^-\x2`z]1gm`y'ʈd'$}d8vhgG(5uZsT`aIxT ׺솵`拳q ̶ڥ)-PzȌB}hnpBѝC+q̟pu}}gûUT?Om$]k|XٝbҢŏp~&_HQȈزѧJcf~˱Ε6l󡱍c(/WbxM֓tNrD\pD{|EN-rhLdvC~f^]9}b>jE4nGp:K؈:p8MiqCRJ}UlMubMocQ Sw[ nOʎrzVc?gwUlbGtmX~nvMaXxg~Qu'P̓Xɥ~oe%⏿ķJjA=䳔_x9V͛knP[Vu9b`Z4 `Nᷗblrgd~TWvpnCsj Cfm]HpH{Tg v~z t65.߲N_qQޠYX+ w1r pYmrbxS\|tP͓hbu$xuȢ ͂sQĐ*hΊpP#l6n0Ifzk{ɸVlHΖSeu;q8vspnApۖ*h:TXzW=x9`ŋwz;cv*k;$||kߋԻ.b?¾;yA~IuErTlqilɚomjC`kdYt_TNYޞfh֔s*ql=v(͂ȭSȯΆe92Ņfȩ/}yvNsXy?@#Ń>>][Ƙ~~k"姢ƲԯqUo~V~6JTkߎd^:Zt-Y|ژcxijðV9_՜= 8%3ɍ.͙Nwt,frQfS4QwKSjTKdZ3SNN7^\d[!d]pttLvI4wg[gpl| ,xpuVSfTV`oDXl]tIO+eDHXFJ]FVH^)H.G\FOG_EJvcWGN~hGO$nUGNwqJAQsV]*wPZu5ENpBKBrD/MvzD2MxELtDKniCKkBI8hcCFkaCgEZMAFZC>;F]l@E4b'AE`@KE]@8G_f@G@b>`H:`>I8\=[Js^< K'iH3`P2b4ׄ~b/0do.#bk){^a2usY`GuwnS[|u\<~"Yrsjƴv&"0*҇ǷPpFtTTdu-\Qm=[m su{F rM5yŨ]󬆋3z/Eg㝦Sa=}|կͿ[SWχʠRwItwzk5d}Y\~`[G~T>^̩zsl~ MT}\I2AuzZ.5Kh>둲rBaqGpBnH#h)H+y'bUJDmnWMwZٛ0P,uݘmn9oyX9q#rJ~Θ}Z &X[׻«txMn0#<ώ`ͻ͉ZϤK=̟Dy >0*>E}T9Wa7cf"i\v)D4sJEk?,,j"C nJ y]ٗ-]+Moavho9!t' yx rHđ~ʤZ9moʙ'~ʌnFsJ]|g[@puiLNy@WVTnsXOegPuhxñ{ھ1nai]ܜp9snHpa@JT`AMau?Kf=KlR=(Ms?QP6t?N uALvBKz@SKzAK[v@EKs@gLp@L*j@Lf@KguB=MjCN]j E OfdH-QhKhSnGsQqkFOPm5FOhEOh?EP0k]DOjDPjG R~hIRmfISeIUcIVeJV_gLYiN=_hlszusyӜ|`fMnDcf5c1ꊱb1rbJ2rf6e.ՆRh4gd-4~,dC;xgHum\qwg΀+cל%Ps۫sÀK@fQ.|,^*˦p-W-`^țƍaV~_&rL҉HsHh|ӦT!u%uxlw7OƆjqԤ㈪KIފHZ´~G¬~Ǿ{@ɘxƙw~~ڻtI{%dGb}{ɡފzm\u9n+-AtVxY#~JujReVtCk>`k4vv>3rPJIzIjCx`AsjTiCrj_RC\nsZўRQiw^†bƠ亣+O+xr◒zڛw5G_ vO}FmTS[ʁڥʲZċK̎޴M=.Z=)6qsŒjƻ~mWo4gEM[9}L٣ W?g u}Սfz_tKʑ:vRD}g*zCiN݁pDӘqվzf%f:l-oH%WAkʖ(lsweQrnݘ}4|u6̗r˼{Լ`Run8s^x ~=p{…}Ć߼Cs4e-fsUl,}CkN{hoCyF|h]y}ʙUxhq4Knhkjp/w̖9tҋf]Z^Ṷ\dkAp`xP|̖;{ڨ=y-z{I,9 I%N֦#{yp_NimCr "ys߁ս+FJ}hٝp|+Ft^5Ǵ]U,ݢdxma"t~7mYwT;u}u@ǔ x=`a,>F)ܵ͞+4ufN|l\e\QNNSQL^UKh_Ok8npNtwV 4^`ͳXU'*m)i$sZ^u/LRniAGcCEaFAG;^I,Kt[*P;RaLWXYhaNQ_FL}TsH.N%]FO gGPkIQp'JkSsJaRqF.Nej+CHfrCGhBEgEpGnbMEFXZ9CF[AB=F!].CEW4CEM[MBFb``BAG aAF{c~BFQdKCF=`aCcH=`QBHAaAJ`BL.d@vMIl?LrT?FMkui@Ou@Ov,@Lbvt@Jjx@K*ypA Lu AKgsAKp@K=j@LKeB&KbdiDNLdPEO*dGPdJiSflLUmGuPn,FTOigFOeQEOzeFPhF Q]jFQ}kiHRg|J^SOeISfIVf[IVGg|KZX(gQ]h^b my|-w GptŌ}ph }Z#o?D `-^1ևLd3dC1d;҂Zd?jB{'nH]wpe +y'ty=GqM{pv?}2ѕt~xf ` ~XxEǐ^ X TUpJwSܐ]rq{TBֆV`׶wbTQL~M ga Ce hA~{~tšl)Tj2axҥ`}ÉYdznOrb0͆:ڲ.3>,mǏ *|Q\Ԋ憨٠,+et`5h_0Q]$b[!^g_[9jri@apIxE{@&RmÔiYˈ.cc2}u{"{kMpz|ZR`p@B-E_AS@&`ElD_ LLaXY%kYz[nlM"Q!aELeWGLNX`GQjfJ]]qT_wR[@ybM:VuGLirB D`DCcCCdpDcE`=DFXBzF5X_A"EXCE.UCFVACPF-_5CGbBF9c,C>E=dCEUduD GbBF_AF^AJgt@LHq&@MwfASMwD@MuANv@M{wALxALKwBBEM"uAqLVscAKsrBtLtnBKgDpJcE]KaFN(bIR;h3LDZkqJWn#EOpCFNSlWDbO8hpCO.e F Qd HbQg{GQAjGR_hiI}SfJ6UfVIUeJFV fLyXg P\{icM%xm~ۨsh豟p д~=ODw'{A=/vEmw[ưgU^a/ٛcPumR~sOh"Z7d,ugieGzl`?s,XEBmTCE4mOtmvطd Ѥ8vın]5~ԤN:֢آg>ݴ{qأYˣ'bJ~0M:ߙ/,xU{?f3ckMGnqn}Jksn5ϊkq‰?SVD/g|Ǔdt~};|knͤ)`Zɦ`XЪ1IT: ``}cv媝|wK.s%ɾzR`M¢x{v÷ߘXqmqIWyM0 Ʌ5T%{ йȭdy.t|Ɗms}3el{_.mTXxނhȓvw(xȮ|kAg)p۬ĂAZҩό{ǀꈘx_|xjWj`Prqfo.qg!knnSrv|.gU(qȷMΟ~j~X{BwvgfjpIH]ME<@P`FzBoaeJ}JeNSPkKMhFaHaBH_FMwd4LSj_kvxAjrk`eHUYsyIMFkLBRCYaAB=dC'EeBDaB'Eg]r@CZ??hBW:CE/UDFGW.CXEA_BF dCVFbBEc\DFGfDGDbjBGZ@VF\BoKi?CLt?Lz=BMwA-LrBMt2AL}wARLy?KyAIMcwkALtN@@KZt;ALrCrLnDJgD[L2aFQO`JHS4j LT\woHVq}C Ovv0@L"tAk=kLJMtdkw^8~Qo`}DߝΆDێ4leKqoK{ɳs"08בϥ\ܡ'_]>87C+dTAEkdAEc@@Cd??A^'?AxYB,DVDEYVDE_DgFbgCF`DHbGTKAgTKNe{CJW@I]AK|k?Lv?rL{AMwC9MIqCqL3rCLs!CK6v?KT{ @$KzwAKx@ Lx`@MvBMLKqCRL`2g~oxFtGnejowLw]ϴ Ɖ'ܑ%((qdMڒfzgwWyURjK-JGeED\&EF _*EFbEFTc#EPH dEHb@1W>@UB[CWDE^^UEGbDwH aFIcKMfORdE/LW?J[AKk5A\L1vfAM{rBM~xDMs.DMJqBwK,oFALJq@Ly?J|d@J|V@L{0@%NvAMPqRBLiDN5^BEO:U_DQ_*H%SiGPGpe@Jv9?cLz?LIyBM8uCNlDfPkEoOnF[OspTGOl IRgIVeJxVhBM$X{jMYmeo_rӖO؄9."W49ٲ?=H}ȒYx&xƁi|iujsn,?JO˛n}et+` au_kR]אo!y8poyFݬׅ4&HvfY/jDt1^BK)sFaBJ!}gOaanǠp9.ohh칡{0M`f~%.[|V|i}~ݸzcjBo8/oMrŌ̘[WVF̭ {ˬͱcΈӓ2SElQdOaBvQ+mJO|fThJWGv{MfCipAucܖqi\2oP˜(plFw}[I8fBDZkFuPM|tPvxyY tOk,)er}Q uXI^{dBoapSVwf󃿻Т)HЕP̀i{ hÅģ׊†7ȉݞ{CՒx|j~fq~two if-kwz|ȝBi͊):#T#ݎ|̶pR]Itbp~~^ZnFFV$D2DYoEG bDkG.bEJ[bHJ_MNt^LMViVdx7xZ{vTa9?%T=@CTFHXHLGfFcJfGiHue;HGP]JKVDJT@;I XCMjCLt DMz4BMBzC*Mw}DuMrC/Lvn]BMpBcMu0ArLy?Kwyx?Lpxu?iMjtA NOqAxLjA8L>aBNc[DQb?HRkiF_Pn)ALuA NVy"ArMuAKqkB`L7l&CLlDLpMEOr9GaQnHShHVGh6IV_jL\Z~jS@^=kmyuHp)?ַwgheۺ[<E ݞ;b|a~PGu藧R}ɋpkw6myRs8撳Vc;}t};_dw{^˝ˆheHd[RZoE'yzZiK vofsڱrzSi5bQ>bqR9e$N{AsZH`r/X?vaiwʠ5w1Q\^ o fե5c8G\(t{;kl舏ru߄U3lYJvﳙɣDŽ}?Ɓ~\6̎!gx$ IhΨ{~XMt$%sѸHǗiZ`e9 _@x^Hn0Y@nU9esY:itM򒌁Y^h~%6YO&~AZE}le:4jKmz5`{۰\y*khMv%CxX7{;ۿށgKB! -mŊxLPs4QqљBfhg{}Ht6?{A}PctPgPX:OycFE'&jtŘqxm>jzSmM,zWv;E~e^U_डYpP~ ͈8{6|ƐeӉ'J}@ y>q˝l辻oǶjnohro2ar ujMp+oߝyEpl֝k͢ŔlkGDpp}pgrvĦh0 TiÓ}4z!*Dz-CiLZ [_kWryyG\zŶ{Ģ"w1ñco+qӞroǥQyyς[vo:xw$|zYKxҹƛj}Buѥg5I~rAC{"Wd̋nՌ!`_zkJ*yo]}oP6qÛ4n'xv2򭐍AL=l煯mL $ΥمsͨkਉAɇ5Ot-#Vz ttz}n2og4htVtv͘Ii'W3|UmykGqFimLEPOE?UEE&` EEkb-EHbIKbO%QdX\kagv/~$ыℙTs)f!_bJKPADHYA3V7> S5kAR<;D3PK}LSVUbh.PCT nQRgmJH TDEPBGQjBIWCLgCLKsCM@xECLyDLw{F2NrF3On]G+Qmݦƕn j͔qnĬ41|۳H?w{oŐdp*ʒl}tFQ2ffdo_[^n}/HUyEUowG@m7GjO9:sVx>{O lO4$rZBu@k䕀\u_3nb3twƎ҂uO7¨r׽ƾ%ጆ6Duoi,k-swɸxz2\~ð{uAxt!Ĭu֥w3\s TrƜwLўdts!~bz¡}3-p_5 ܻ9RQws/O㉫qgFS}^kxm{wjP/oe2U{zy2nnFs`iY+ k}ƭrʲ;9Ơئ=~KJǧֈ@n$p|r}rm`w(tv?Ylk3!ƲA^ ԯm+[#:럐b|wqYLRHNBUFE-_GJFbEKGkc6JLeRSi_`HnYblgoutrD|c`gPPRMILgN]AH!O=GC[O@DzTO?BW=AU5>kQ6CJQ?EP@QPSto vuCvuz|vWblb*WIINAFPCjJLVDTL0e"DLpODM2uEuMvQHNsIOqKVnUboRJUgAMd@LiD|OqqD#Mo_EuLjDM#h(DM-hiFNhIJP mvJ#TrJTqC~MomALoANl@?Ld?I`?oJe?ANnFQpIK6TonIUkmGXkBKXKjM\&g4]*en|:EuB'uUF?+z˷c`<(q kȞЗ=4Ɯw&렌مѨZʂ+eԲlӊq;0HX11))XWto\a%i¥lGn#pjb|_KDoXHnkJSsjVۆ nHv~jwvkh]sZ>ErS>3mn2WtJueURQ{dBtnry,2sU[t"bm`SH?|~hCq,1y |#uys"xʊ ̱/kƀiϱ'KS\ίG|҉vŽCl#agqJH^DFGaEGebCAHwdI"NfMUvUkb_gqK\>joaR1cdK&PxUGJkM`KdMNE`LN?HM;BDL~=QA}P1>AdU<>U7>6QP8B QAET5YXg ϐslaz{l:MOOA,FM(CIQD9L+]EL0iEDMpnFN!vjKOtM\S"r]Qiat ovyOQ_wj#?8L#aH?^LhJDO=r.E>NpD&MiQENciGFjOiHOgHPneI{V4tHcXvuALoAKn@MUk@M>d?K_wAQM4e:BPkGS|oK{SmnKWlYJ#ZmLZlP_k`3iAp|xZtu4gٛʃn>"\ǚน΢憬p1z,z¨Vۆ߄<:cL˰捘B(v¦(r56qks~uv!kYlL"}tm[{kڙ~d51zU{hzvdhdZTD\KK2J^I5\NJmBZK@)sf[D^{O_\,u|Hgbs9ykQiI\JwcEHxU`@lV5kl9~hvTz~c Axp[K`lS[ z7hS׎{b^DehƌsPh EsFVD>xxYKG~bXvJj'A2NjA}Og AOeBP iDQlwHlU~o,KUmLYmK'XnO[Sn,Tbk^ek&zwHpu=x&{*ɗ|&u*|mɨLM|&}g|‹wY{ K\&k̔GtOtwx8Ƚ +Ko}d~,/u]v̙xh#rIb}kA,ypy;kEۅs }ol^HJc@PJAcP4=zjOI̊|pΐOay? `3%Tlh]B=hX\/Iu:b%Fvf^a@gLQ6El\JTdza֞|=LlD| W/vUR٘܊8p$~xv򘸈toM afD~}m8Ŭ4$ɯOovč;v<^oY}`\J~t'k=qmwT{`vj#M$xˈ||]z^}bX6zSd,tdρ\as[/{ ˺}7tʠi[ W&`ƥqݡ+hlZ :U7ے-qϴ֥cwd c ˝j84 oNxb}bZw_cpVNAoRIbyb7jgpgPG!zv\9qaUy7oT3BmT5E}l7U@e1O1rU6q MPu ycut}h:Oݮ:u&Ywuɻ)}pƴ xwsśt|~&9|u}G@I-u{uƝtog&VbĠl@od痣pCឿzsǕعI`)΁֧ޙp|*kq`rkϰ/X2J?!~upqif亹m3dx}t*=[kuNG+x:Ya^҈DaYc{ hp~C1쑫ju_0Z| [rٖuw?}eky\ditIV~kHL~emXH;uckc'jTy|ʁM׉c̩Z}6ra&_o]èw{Ưȋ\'ܣ+39qH~iohw^l+m}U|ťMR[KNӶ6GwƇl4+8؅NJs{unh\-YcmVSePRXgcVEVh"aHclzy~~K ?Ku)q%rjL^^EVHQWT^GRT#? OEQY=K5O:C4P88;qS;7S Vq52ğzxf!vbtSoA}r6|,ߚ}әu0ƃyKm4`OMZHK:_/MUBtkYFrWtO\岬~ת$w5e%Caxda`pve,nOweLMpMbyRtX끯nbg}mbsVa>r|`)sfWl]iI1{hPLOxbvb~uVa'tޓqwX:k?\waprz!©iENK󪅉¹^ZPHоVw#qN$tV{Ip~Oوћ*g nrPh?}o~mrnkB|sqY;xϓӒ̰Í2[&6ijs{p(^3oiCfeh.db^x\]YVYmibЈ}`^aؑ(T,}2pie^BX"]aW}G&US?+QS>LcR;(ES 6:Q;8O@C?mOAETHLS _:]R}ƒx\znAxsPQP'BCI>@PDFKCGQXJM^rSZrpXuoD~{{zt= wyskXIBKC`;FQgBN\lE!PpFN_omFMmHQmMRco~]H[Ho~nk8s+tWw{ԁ݄҄Pd%h8rFLcDM8h/@LIh@MhDNk GRoL0VToMWUmP+]lqs[m]| j{ubXnqgn t*muuz~vƈq.[ut㞝Ӧ7y}oZkmdhuWs1ꄨs۔\ láq5ܓFq{k^\Ms|]_u]Մ3Tj5vóN>IAƽ4ڀ5{#{|k}]ij=񞚒Xyދa}AsoY[P[ZI1>UcOCfeN6.tUDsnP||_~ypDot1_=kT5cQl;Z[OC8qdN|nO9wbGqj[C}t\ˋWlArMyZw1ltpb Tq`BrBfj Oی1&ĝp \Ջ󮟍.>𧯅c逐~Ҳ؁sSҿ82!NNJӭmevܳLuh~|x3Gy4F6eguCMn@uC]?tUǎq&HˏqKmorٝ\iڊ$k5ϑ'n]i0w]~|j,^:xlր@z̥֢,g"jDŽi)=cy\!0*u_HmUlCWHqYNDhIjiPA}h#Y{i[vbRn1UJikTEk\Epj`Jy}cMzdJ|}pTQKs~~9opx*i߇}*˄'{#g䨢zmݛslҘO۲?ĂCužxןsYҠ`tuFtEu`{6t5gcۭtՖyę x 2;z陆Ns{s]ĵՌFˤyho9̈́єٳş֍}:t_wFjW{vwixspc]*]SYTPyr`̑}ݗș7D&OtnjmdYs_{YGSoS>=PQk>LQ<;ES2n9Q)::ALD+DMDkG VIMWa\U݇t~қɛ•~WzfnPQTACM7>AK EGPCNZR` cCmw$~#}zww|*toRSt3z.vjHN>_8Gc'A:NXhFPk0G-OmGKNmHQnN|Tofbpyrznrxz~I_qPrwLQZeGiN9f?AKdNA7KfELMjBHRnL VnMUnP^stgz|χzp|yfnqyÀR WGhYiol{W=~%w͈*m}0jSxgw7T#5V1bZučoxi\ύsU vs}lb\mpScVyom^׌s󦢝 Κ:s _D_oW{/pۧ{[~?zK@ъvkˉ:qjIl\ZkVwoYMh"QsHj+\;NlUuARzIhP؃}j{Ԅ]wybhA_K5OZLF@][[NkAjp^bC`yrjJyUeHh@؀gAӃ mCZoFGfw ZMf~4a*vB_r]ޓ{fUy𿳦DtϪҫ:vĄvsd kMڕ~RZh}{S,6wqNM-f {]EIl̴t[qAgzАh?so /qsv-3tޱyIb1؇Qz$V{]p(\_P^v[VEy kC{t qVimh8o7AsƹwĶ0v1x? oGrXr_JnJ[Edr]xIozbgRWpWO$wbYuGiрjnbcmqSuz&XTv__mUV \jGzEWG~IڡW~Ws)“*{VΆ(]FpƱh/Ðq{ۺzƨ0wӢ]tiBtt? uhDlz{PyoFTKcķ&}¶zl=SFHRI/K>WKKhNZf]Wχx`?w|unk;klsOPW-ACXP GhHGSVZPcoux^Szr8tyomy,qZolwiFMMZ8GZj@L]6FP!dQF?P jF8P|kIcRmV^8q_{wx6q(4jێ.\o]jHL2]aAJ*aCLgE^N(hH]Sj6KUk[LtXUlK\5lX1kqzԅ}"mvo_uebsuj{>z֍n 똝TB*kIy4y ^h3Ir!#~CbKkC߆m7k4+[ߝpjyvY]o|vp|ht;{\gƙm>Ywץu\ˉ:~MU|@a^xAjrDoGf?4jAsIw>Q6Phwli)]~~R<eixd C8]!ULfEK-mX YtGwZPS}e{~=$dzjdeucyuvw2!sޭOu>&twچc8)(͊𷝟}i{mmKhkxmxZ-LJ>wAy|%}׼wBs3ђn[b4vYzrmOreM{n`Y}]ilʝD~рܖ~uA[p&Mo4_?dyQh.OzcuYNvdևPֲ~oԤ1V mՎma>v}@{v@yQxAwtrfvSsEHZd2yŪx} pxzpv~z`mo!s`-uszmvG}w6li|iGKkU8IENS=_JEUE#P^.FPe0GPTiLdUmahuA(e^ՙlȐJ>6BwonM)NSAIZC^Nd/EPfIThJQXhL|ZgM[cK/`aabJmeeh^\[o_7adNgG~@~hv񎂉Mo-s ̿TڬYuh&|k5``Tk.fd%jeډrcl*\')]h%QY9"'}![8,|p_8;o%Jv`%lIh5ʂU rCs\4G"{6bHoGnYTt׾SvشUs멳Fjҷ0ۼƬtr˗~YRɖy{SMhdrLSzg}2ed-*t t ̘yXTw郁rQ^LC;fUDLwgH`%rHr4tW {lo{wd/zd\sJvKgRt_F ma6Nsq_9u9f}Qڐ9 o.)͊s[kǍUW #g㮝(!MþF؄}˹f*ڿ׌;묿}YJ݇n۵"d.kNY5du_sGfz=~c9Xt_C&r^]ԕK{e7eA~(R=R)Nllj٘bpnIdHs`z_ڒ gÛ\1JͲʗ1wiUwwEN)~?}BTzGsxLIpQIjJ2r}IlExqpoxͳmw]qmVH6gnΚjlHdu%myEm[Dt~~)t~ߵ|p(elh֕Qf zmd9w yѝXidmᝬx#y:w{K|w%uŎst~ H~١PLyoVctG{},~F҇յ:fŶBI]>zJt uŕpNl8ZkuJ] {jiSv[tbP^u-|[e{ӹs˕n\ax&`^Duͯ }*bIq5$i) y8A{~JV$p>ǔoa낗sj fj޸l|x۽͞x-tOApjXz ]dxkQkygq|{_}(By=qus̹&wvɚrw{ɀ(4 ʘuȉ_įL^=چmwbhyc|Ns`~wi.Zrs_xJ׈Vzܶ򄃬n:i|Y]8\GN/IRSBPVH]@gclOtjflYjCebw_bjfnpml}{ؗ cu~sԗ+Yt]?YJW;HHRL*NT[hhpsx{\}|xt -ْ])vSTYh;5D*OJ:fGSg@_MZCN_{GOgwJRln@`hvaCME:2cI`r΋u[dTToCJ|UB0ObFRhEJlUi KYg)MZ=ecRM_bgPZxlPk@q1xIq|pm3b^K[l ^oKk$yq={ԓŽǦZƈ |#zUi@p8/a"鍎d*=}e+mb'(Vcb)Ld!ψf]!2e.)ekB{zc@JnRHCEuWEm%Q9tz҅t3eoi,+|>{w@spp 1wy_Wb왿Nh%hֵft oǪen잽l{-cL)\J@KcRNz!iL`d+hu՜ϘBgyf@od}qܙ/ocv+WybkdS{z{kk|um1Z ~lQƃ+7@n@cƾGa:‹J(Lۨ 15Π;wK!wsz;芛UUǒB#InOG瘸xBКA(ܮ_p{9~ga~ǸT'zHGpAWxRCGo&sTckvXHag*.xʶӑ`ț3QrQ{t}Up~sua4Hw{qx_)$j4w&xcV$lAՓ#w@WylD&VVZxY2sRpH}d?wB5~%ŞCz?2{ǧ0x£s sx֠}(z읶u8^]uRNr?ʑgfPRe펔y`c3mx􎲰 {llvyt%w7(w̦x+;|U\z2ju ׇp&3m}m?•uSPXrxFmTawo+n w =VhevkLtɻ‰Mծ~ʭ}lؤ恆yʲ֕HqH/yml=duX]$lX}bflwvpo5wgeАyY 7sÌWG mn @wa|l8[q݁[)wMzC]v[}2iPyMdseƗu@vsmbsrI3oLiP<{ZzU\qɷO-}ozd;x멑xz+iy"sEѩk/JۈÖ@KN%}e?mu^s kW)|xi჌Zj)᧨ֲφٚdt%`jeMNJIR SBR*[DOjqxHƆ{7wxKn4uu_{)Æ|~}ȓΒ8syg[_SVMEzEOKSN_n[oCx[2-zw;€P\ڏn7de$c=EP ;fFT>JW\CSMWGNaJOj1\Per\w‘lkɝʖUĉKg ]j^{EhJ4V}DP/fnHUkJWidL-YxfPf[3d Yclmwv5~qwt{tw ҂;VgħЅrR{e{.Ld2.b.K?f*Ui1'Tfe) jN&vgkb+i\a*b.Ã]!'xg]"ֆcceb&1c={[?zwXA cE}c[Fub0qduK}O%t]HH{᳎+Ȭ3[wrr)oykܥA;gԚC^xzucNgRNggUWR}{i!Nbwj{oƤOЪقxF1Cw?zHK$_ߊb՘OQ_ah>+lo6*uĞr,bhc%TvR~64ϡD|bhЅxjd'{Nˊ~ƙ65?gl9G}@d>{luC npH}daoj{k<~dvSwYjCg2gק7s"m۾ Ov*•灗"y"n[ˆqa%uKtr?Uf԰̐tbǭPhֲpZΑlfbtY}n{R8JoԎ,{j-Lk|`sNu1ȥ:v?7uIdwڮ'xcVs6plcؓe _QYW>O[.Kb>pu5(D̥e7ch\fw˚{Ⱦycöy:lAsbxcy_|krmM^)yֻJ=rƬO6qbҊjăejsD0a,"ku.\`hTxs(oנn6όsYFg4`h/CoToCvnynF?n/n4hȔb|%Wv?Nql?-]j~jɌ{ x@֦uwɱz+ʄyiƘQԆ@ǨȊ̟&lz[zqiX}Lzmj_锾PVĉϲġ)0*A=3uDjMxUkeqLLUTyp:kt=!hbx{g[ͬӆ IIo#ޭݲb SlOP,h|}asI|U5{mGweSÛdrNj* WVv ]>~gLZg[;we7*xX; XkG#y+Q] N^`Нb^Y>iTpl\Q`bJ`Eo^+n}!çi{` ~bx#%x~uk&w&mБt qIQzb?~mI~FlLkXssfz-oQ~-Nmɺy!`vAwSC~2t"^lpiRxk+qq[s EpݷmJemjhYbEt]Llk"%|de7}s[zeyE;{b6qa`=ɉ MFhv9Wˆe}sEne2pvbbޣ!}pEhXRhTHOZkVK@M3TW'GVgk|~ύb tN~zx։W,ZǶOVg7WsЎTP,1Z2rdU.LFD^LNO.^Nyvy\Z#LB^BFxGWHEiW3NNgr^h`y>|~}6xpv5]EC޸#&’Fl.э`|,G=gf9Re*8f.f=OKmv3q9Z*_aݙ׈أ rЌԙyBȘ:eEG}R gɌUrM|T0jNB,mTESwfRˇuw,΁YVwRrs>Y{B u8iw]=HqUBR~mTdu}ĤnwCl͐?M𔅎L_WySw>kFJ*oT wTҘ|.TǛk)qۡKmdt|PqIwQUaAzvQ}[;rcUuEDo$Ym>cxD;dՊ@o||fPP<4QBs8w'bKp@ٛ 8UaՊ5]mD Nr|Qk0FexIobH0gpD{_\;zy|\v݊c.skzw{Զi9ҘԚןX|2k4gTǢْfx kɠv$|ƙ x1qأjl lbXoil^lr>l^)jDKy^?kmNő{$ase_e!5w°u#_OǽKTX #,̓:ѭmr}߾w:hᡇUR~6_|S2ՠށR˥}ӿ\yVoŰbɣш`;pyPuXm%iPgnnX.}@IƂޛndkTih/le}Gn7ȗt“u߫Uit~fa n|w)@u`5rݙqzs:r3o,gg eDvrƋyl {>"|,izE|੫b{σެQ1nCKƛ0Ǽ,rжnٝڒzAk{Yw^rpY}fhmGRN_CJWZ&FMXJcQW.N]hAlyqzu%jᔂBƐ̖YבՏjoNğa͇я䁩zza_^LCRYW]d*jkZm=Z6.`&ʋTHA^_dJ{M)S|IMU`FpLtXFLT^JOLeRYbfTkcB7CĖ$2_&u_mMPlV?"MeDQfHO`FFWJASMN~ekz|dܒm瀑TBj3}7.cj *i}XyY~ }53œܜ&4!Hƀ{۔#yЀlنSNq5o?} `D~ZhPZ\yOjm?ߍrjECkF}]ALqJhqcw۠qr;ôƔpܢwGF{c3IaT$JqdJs_hN{p\TiJrrZ̋lgfux7gBs%Wa2uI=wKm[[^PznTY^tgTS{SX[kgxwx֢1uSĞ>&p!׏R2qrdUWה5̓gޣ.𷹟*vmccsТqӛVrҧtE qCohp8mk؟ ?i&`jKFwH^=k!HSwNyL[Ϡ{YpͯI>ܤ(p%f?<ʧiːƧ}-Rt fWE8`@J{u3|P:1~%y˱Wg١MpzF1#e;tn1]p'oR6jA&my|.U@}Y5rj.Ђ[YģXKJv\ûqȺvtؒkU#gTr֑ukqV‹Wnl'pb4s⮬u\gtB]tݽUv¤v|ŜKzi{ zǨ{ʪ\~ʩEcH˨̆dsPĠ~k-7W(x^[qIZrN0iRFt`Ɨ.省V|z}zO]]GgDO[4GkO7XM"SV1U?c?fsjuwRӚsmfY9Eק^Ba¦0Z:}GՆmnqj]fkcloYeenemjoާ pȝH2?fjjMKPUDKvT!@HVSBI\T*HBMZbPVFbhg!msYI]ܝ,?ݘ~rlTSZoAL\e2F#R=hIQbHzGfYLGBS ZYi4}ي5b܊Eu4ԋ嚎#SKH,Zf{ߞ̐p斊g|et2݁{hOf=1}:(!s>,?\b4>ţ75}ӋͣU̘ZV?G}Vn$|gsA=HN|:P(FwYeHsd᛽|w㛞zJpNr{sbmK6n#JLvZZ(nAHI`9]u>'qU>?hAR8eQN6Pc2LCdo!THzj`|u|gbx@vdS~6Xz\.rjfւOlOgJ\zte_Oq wAe›Ey|hހrLމF8r^QxO2hҜusnmn|ft͊ofmvv:u\}V#h֕bp{ZsݙRSNMU^tgc(o`tLQZ2j/GlmY"nbEQU@2oݙxGwfGjӬaeGЁ=NԘ,~PwQdoF\:dv=)}KSp^dDZ-B,Ŵr|?1{\;lWCjWAiWIur`DZz!kbueHJ m…S;ĈЃkwVxoEW{oQ^x^xeNlwpV8wxYԕF^EkPVx|Ϧ-vͥs~E\;O`Ҳ.z_n\^:ͫUSͨÇXɅZK|lZXpit硾ykv8zt}n߭?j`ғi)6fNi~aRiJv^@EnGzxaMyO.u\^2kzۡU#+GnpbǮćkZV:}vfn^ޟщ\R\s֦8|éB~F&xǦЏ`ᛂLژ3Ti.s0Ylqhqo&lKt/*˳'\l>vnk/G_wQxmm6|)\v9H5p7“kl;l/k 3sjCk]o0(Zrvtoynzzz*۟=xDExs.v+'u9u ҩynԪLިŧ:]tрNOzdK5ZL7IQFBFea-Q:u lKgʼnY'b|_DVMQ:HMROuPSROIZaAjtxm]Ӊ;;X_tKŅQ p@~ۍ#Ԇ}-A|H\~\y^nIqposKut\{tcks\cCd* mnpaorP\c1HPu^>/HwU@H9SNEL T{RLTk[icYkJvEz קҁy-?uWjna\G$NM`cF:QeJOj^IG UHLDWR_`!i{{vȇs΃Xk,m{L{ˆY†;nz>#hw kvYkqam;U35nKы|fюu48W!胲"ըG ˍ1✟Ρ͎3ÔE (jԬ}(g͐jvMbЅ苍ulz oiԊybS@{fRo\ށi-LZqvL^ &z1Vz ]Cr\4Hl^YA>2kU<D4{|[RVwUIkC|Y3.~\: zcU1Kg>{qE\}usdJn[NsZM;nQFWu`R.pޘƙv!֌?R}`0sK]i:|^z_IKb'(gᬰp xh4cuYt^|]tl:NԂW@{,੨c˥O**vhrqEpwzw{Ρviom1}kyiƚafW|b{kjLxaDpJdyRq|W"f~gnRDP9`h:m8$հGnK/|5+l+؍^`l?g|שxŦU{+xō^瘅{[K}X㢱Zlqdoٰ]Upp_o y0oʰ Q t̟Ԑy%o.Y0h#ey.ƥ~ƭy uSm`Yc?k\Jdٸjznl٘oLqjscv7/,|k}Tyx_w6s.恵qw6rx nX*GMQĉT>ǘ~ZydM&`cR-POGKP.avc ^ uvՑ,5]PH;f\A`EZFEJNeKLSRaTvOdRUZq_nvxpǐίE^ 2E›94ǧΎOsqpڐǃ qߘŏzTvx x_qw@wyj[z,Qzb.*&+_z~Ef'i(m1_imUMeUmYFPb BNKXDLSUlVPm,jBW;Lɨ';0\aif~T}{qbvLP[DL]IKUI3D9OwTENiagK}|qiΗ!Se)tTz=|ı":xU~ch`;PlbT{unUpSts6\~qGg"u |n$rc5݋z"qj uV qߐP)@4؟]|7JseRrm-uYufF~mQ va6qZc{e"QvYe:y'iƄ}lzrMs$fJBj?^LrWVy9ܓw:wt߃tЎx_ gAٚVrpRrq;jVՀoe A|`CMhJxfR&eRD_K.WG-=\L8x]e$Ttϣɛ9ۧO@v1gόufD}҃ȝx roPwʉ褥krdn#pƢwBs<-vNvÙQsgfSLux͊ ¸H}}դ#vӚce?͕nxIgtMzVi@ ~yb=gG;| b JlxR>KuR] @ [w.znבKdl6z]w9ԁutX}lKr#QiKs8\7Mzjp[.|-pahxnYiLkRpX|6d{(n*xWanzaÁ^^Ogqpl̞uӡtcBUtӣNxA1~塁պaФ`ƣRڥJJF JqǜfM5N {+^wѼ"mhëvnoYZ9Au~~x¿+nzDwcMķ/<&sh@wHrp-IakCmiKAx]τrudJb!Nl1vF`:S RGm|¦Džң._삆Wǔk4/iʅ?lkApTZpVXjJexQHXK]?kTDtpQ\Jp}fiY|AJq ^`xQMU]lhtXs>rӾrRjs0Pw +0G"lwh݁|h܍ksVaƙl6Σu.z |[ܙu 9aZBM{RZ{5{Z#6eڊTgYl|Sa`[jbui˃߽רRVJ1Ɋΰ5|/ЉM0xxpt givYVNV*Z3_ÝZSwpMڛ*{xPWfKp{jMi?tgY tҸӃИ:Rۻ|qžpz~Zw軆vrxIu7]Xil_iS)_h32rN/uju; qo_u깈!{E|{1˝?zYǷy=vvhɱhwʴz(~pɾȷ֪gJv|ʝmS{=e}qLhljj+xA~v8|tp"leo hMR4WPcVPXmIn$X}K|j{}~tR, "-n)YɡΌzϸ!fAƠ*WF{ig|tπm}~}>wqA1vxx}pnVyrnx{lq$v|Upmtie(miL[WeAIN^=I/THmONnktp0UӖL۪ͣǐgr۷ZZf>xyVU^R>BPBSAM\C:]L?LAMrjdl[)"|j'v}p:Bo%z쒥eqbNRuhUvt` we~yh~mᜱ¤|]I}zd3I hvDwWUxcc{r{arjfL}q)Yޑ{}Y{.Ӆc`WWMƉea[~s\O]zՖJJ~y~k({LzfrGƓ^ ֵ fÐ0Tߔ|φz\Uv3_-x7(Y}/揪VtHcriחlruZ~`*#\OlĻ-ZzE|F2o~Se/rO~*oO2gM1Y$K>+g SJقr\ݰ[GūÎɢzr͌q+?sěv}eBjwC+ic ~~)Hnnܻ!,wpx q YkOkq+^~Ɏiͥ#,y${`CzZPOиOvPaN}K8vSHalE6KQ3oEycsar]bQ%uc2V܃tcօvRjڏ{)g}gT pZētsz-t#TFWfuIkRߊ~Liq7| |RdufyI8zm=\LwiZ1njJ nE xQNzҞ |˜h/^OyB$_Γ6Б xS1?͏^M :̍ݬ ,nd%pKSqX5n}ts٢xwحu{LQt;c>ß{VfaVͲgp:0+Rj/׋C\YOw?{KV,tLP-tQ3goSF|_ZMvY9.h&{D䎴fNi&[FмEզLzZ7볛ZzqY8KY~ݗtաH_␣o:FVe>vvhI.ل]T$j’h"f:*nUjíinboSޛy$f׀JTĤ:g#b`Cު= }qŪz~t:penI`S]R{RS%VF\WjՕuUw.]w&asm9:hG圝pL_tjؒ hPrȂ%ɺ}y|ŜKzy@yѩuþ2d) %pe|N菤l&+d[s}]u"h\y6v0pŊӏzzFh}.u`]y$jlwg{*w~i|xva( fv~S~y |{Z܌Cؓǻ򑷾'_ CoR'rrv<~tOr}f3r5u]܉vׂQzTIr/{{s|S,~.zyxT6\f0E9N\?IXpF LpSbdUnxavr$x˩5ꕒڠ'}}yxC0I-W??SB==ONNDMCg_Y/rg ʼn^}:غߡo3@~\@7ow_O,j|SOwe\tvzg>5oi⣡q3})ўR{uknczgblzm Gjrq^qD?fR[D(cSH$jyU EdP=tn{aKތmםgl vdLoo8bL9ԕόٚH霻gk}$2{i.ݽOe=yV]GiC}+dFeyZnr=nkW]XKkxP4m!J\fݞB|Hƅdlߧf1~o (!|ruweRQ0o=3}W+Kbzg~x)ufDhZxpV$inWiBlWEE=t7Yj؋7`҇{9]onr`x"YЅim:tD@rsq)w%wĿ+䭢e͜3ҪшQ̭T~|[nwxOhTDuI|c7Nv̺6y^vrǺ6o+n(U`mؗ~n(Tyw==ۧꅝǦ9ɷgJͨ˫mr~T{ľߞrwmxvlMFgEZ=QƎfƉkl#m{fXqg˻jij]J{џ1ˇ,Òl% [waoY[XRP*^3\lYRa|Drm>;͝Yas֛fv?zsa*o_L|V'9]|X"ssܞyG;} x\H~f|kJȈt`L,hK-nrƳzWhz|~jKlԤӂ7T߈!̂"رj%ё97Ŧؾ}zu_\*CsE}4O4{0¿ oɷpHb<"%ց>zÍyߛlbi|bxfay?rV=-pQvsmRxRp:ZNKfŸ$iMcTXnOFrgqsߺ xkLO»ps^Vyzp۽v{1'Ň׿oJ|Tsk0nQ*~4 ҍ| }Ii2sPZwcK~ l^M۟zaNc~6 ϝأᔒzؔz{ԝ_LJi`~SnNzfgnvAnwk*40n{V;$[Tb ToR{~p(_A&hrVF+s{m>SЀ(׀spa`c~Wr%OznMfrYaLmA^uQRA`VJW]5VLNS~NMCULH;weQ8jR$7rXHFl#aXvcŽD|ĜƒFw\tTWZoohh|kvui܋rHn}gB4,cCˬ9٘'el"Fg[E*wcBu`o>|eTA%jBRdu'ϦYlҫ 7f.CvJLcJ0eD}]旸\7b_쯽`Y}1FN{%}sZuBup_Lh6pb '`2["X k Ul+] ǠIW\ǗwkEw7w&%F~X'ZgDhJϓlAϕs7E6oGsT3=v[^5wFu]w+Cj%:7^{Ci!sgj|Tȍ~`z^snm1yazmC\zkb?}HP߽ʨR«PDZhJpuNmԸoTTu&|H⯰{-quLoD~Tj0f׺ 􄣸L|ÿɣ3~"mǦt L;hATճ-òφҬM^~¶Szqp0^O?{H55\yLx޹$l {%v%,sͳDGr͸ulwנ#pSɈ-ʱˆ̡-˅!,1y{ι3 j тUhjn $ v(cpXoPqHsp{vQÎuPWmLbn JW|Fۣu4u[‡y$~I}Aaž)!NGyyXmݰyb+ӻ\{dxC1tUoIw}Qx:`mPuul_tI+mL^~7۫~̩W@Q*8@쮚$o䊚͛km:A}"͡Xݤrp z*nz}wwL,uSӒׂҋo? -Q95!Ptf`䃒'}.flspIYgf4HVj;V\lvstDŽNjʠDr\{+Kt:_;g:bWDQQGiNOS|GDlSRL@hT^H^xatnmeݣe7v17€9ê‰(ߌv1zapelwlexilpoHqȹ@ ˶ب.j:xr])mް.詔lב|CocJPe Z5JgafTeds\ThRJyPI?SIv;ZN 8Vt\9?&bR}Ao*[Ðӆks>~|tT)g qѼtjgq>V}|Zv^?rH9!otd(nAHoiOh|ajxExb9|fc='~+dT> j$J|rXvo+d Uט|/𜴆iorAp^CnK{a?*j=kΏ>悺m|Y09ݔoq1ag[vzwGu}&Ok&pj2on$ڐgj3H輩?wްO\vb>䧲u0@v~O`/;Q4rdLs(yZ8My~[7 eJ0jdG,jyK]6ѕ3Zޟ0f YPZwS瘁tD;p:ݓtM2ȔgʲLĪf/twAX-u Aܭ\O|iKs Cld.{EXx[KtC]zWfPsIg߅ֹ53Ƨ$=\: Tfxźp*+p-v(\{ڤ>~{Zzו a-o0Ha0l^Hc4_k'zOЂƌȈ Tx@4Ur)ʲG"`xʨ/m2}oY~2r$Jjlz_P h'}VDŃ!Iyá|}5t{ n˹Ew&rrknjgHejs gՂbŴ|hX$~M<#h2הߚAu!`ҌExc}iy_͉4u S9e!EuesLϚt(كNnxͤv z|c}A ЮWʟlNǮ.áҵnUzQkZvy*݇y}gwu4xn||9vAopyl vYe~XmiM;r]EuoJqV}  }˲Lj^~ʄϤ[ʞೲ´Ο.֌Yz&iŮfQΩ䊐ڃs3rmz2Cy1.ÎHedɥc֞ꈀߜՈKʝUI0bǂчUydj3iK(\>a'R_ef3gjE|Ry#v+ 4ۅϜqai~yzu` f;cHQ!TNSZL0KUUO@R_ HAYr.pmwZо$|~ZBxJjңn~]mDz5iΊ|j‾rϟ=zeq_kvǸY|ݸQXJ6&хrvY)iX%̴/͊'׉˃WnnDd-Rk>c^VifZoX;TMNjHpEN^HFaR@qk_5Bzx[Č57p@Mz{Pb~k8n~ыVwa0nRP}waAtnZV@kSF8^gpPQ:]I9sgXJBOn?q]\LTcm#vUucob>k4{/Z wſXMpWcŬM}DcSMEsMX{DPyQAwFtPO`ˎlQ|{o~bĿ~߿%f|>͜erhZrgyzJɨ3ehˇʥH5̆Svdcmzc}`E_ytFUm{d|hnJAU~\b~fd}lr#R則r^ўg~hă ŃKyۤqzi|Y:?ˋ@ܭD򪐉č'c;j?uk |.[uכl:-qQ|1@|ioSvg-QRrYr6sbXu{fIduO~}ơA̩9͠ ˚Bj: %Rཚ̿J`0᪴CȮ ٭Š%bޘ ̃Kx@ׅ@%AɤЍ޿'wBǟOjM''Htck3dP_^[b^gf2d,zNxQuLq󃭦y q܇j(BvF,׶2rӾ9xԩUp܌qpRyiHtjW8r:_9C5sRbNs[qCtyD.-Vܤj4ǰ~]4{Lyt?F/o hĨ}?+Cz?|=}?թ}CR}XDo{Ec}AL_vTC\s2Q~fԓwYmH/e qSxWl4BrŸtƃrwН s5)vךu߶tڦ lmlxnOq&W<>v@[匏sO(kd~Ck f7ĖCl^utn֕f$yZoٽUǼňn ̨c;@^Tf-:ݠ}Zf{y@nJ}ecHu]C$xbCr[ N_NO8~3nmek)|d}zãwࡑ}x_l-Βwކ%bA*j`sÐsumUnįr/Ws+g"dhjHjlWFg}zmZ wEe:HpUxV7u}!VղK˷Ge |l-2{°{Uņ?Bս[CMNyŢcjȤ~-f~VJD8MC|Ojʃ!4d{}g7TlbcZiP]W(V[[R>`Y RHxoi6LjnE׺>ӲVDEsMecUMP_UVyaS\R$](KNG^X"SpKAzwi;AqڬQ `#!}DD(Ȓ{ՎRuBBp[J|RȞ`R'{aWu VwIߦ)%êhשݽI!0Vr- Ҝ΍zowl]`Ln`LmXSKeCYOYe]pElhrh`R3 |$5x&DVFwĶد;7!…pjv1^s_)>WkhT?~xiOA nЉXsVxjvjRj{gS}lw\n]:? qc]LvfO0qJ]xT|§ ;dy^AFUDK9 TOC(:WI@ueTEVXgڜRv.tvŽ}w5o ҂j~ok>7K f䗀"4%7xҁrjrpGvhaDrLs|\u&c?pI/yZH7pqWCBN䌹jOwmYȈxcT. FHV)(buIPl~Cyc?"|>^|s[V uý8w) y tؤrpp yb+rVՔ~gQBݐ«i<ƊDMʇUڜhtbOdšcHFpzЧ@|y$ye{RVp}VxpKxx*[wg@WnOG(x[ƀpX xJyͫ ?'dzhѶ;Rġw#c|tD9iwGݎxy]2~aߞJW6v~DeZN06b,$m49Moigm󶴛I}x̓ΌBax~WƽcQYt"P@wu=lnFb}IbDr^C|k'FŚ=U[غĨ%ԗvQmr`puØpXzMϦ Ωv+[v߭,g=㤀!{Qd̍^RŠMu٦y̝qܕelM/i|d鏞z[yJfGeidXF#s9cP~oNbS%oZw'X:}]͌JɯzĽ-~ʢ y tsӓs~U3펦~庛zQ`ny.ɗt┮d}‹|~N-ϊO**¶~hҙ2~6izG{smz8| qB䶝(˳𬩛D{&øi_"A+ь Ƭa" O𨭊ט܆xhJq`+JtcHdhHԅBrYtuaՈYq*l{3{̆ ޸I=S̀H|4ݤw"in6}i}pDKp[B8$gQ>eRE[xkR]{Gyiun`Rec^SHznsOnۅsǁ6ueGj[Kpj]rm;TrrZLj͇0ɅLŇ4@C~~ՉymJ]LF= TH>9TXG#>X_F\#XܠwZIl軭m~5nsrÜaWqҮEгFܡnLH`ſ2x N񽍹`h uA؄prFrHjrGyRm\NbJ3vMW7j+`sMCrJŸV&MZ'w_{]ȇ*Ky BKzLM{I\zO̘uG˛qD'm<ob#rǘyApCz\B[pQ;jˁqfWeoV╝cȒkUҜqP=rËqşw`9{l}V|ٯHyIzsҒl kQ"xEjw=YȖѣ \XΕs^ؗlfԼ% eB[rȁ7ʵgFÆ}wrw6ejbS҈t KRUtWIcxdʜ׆l螿}n5>|Lǻ҇ ;Jvy/нyyw.~i,DUxY~DhNTa{I(ujØm~=j:qrʔU~MͶtĭ&9 {NjŤsraNaŠjw>b{ݽ3m`pbs\_vgf$Qo{kN'vhMFnbOj[ Rsd]kXuU};}xŵˋ u$$~eOt ^nIuR=֕ CWdc}zF䆮xg@%yT~t~vkя<(y蠙ꩿEsφɚvtrHU5aXQPL4RENrMWORhN=HIw)] Kxwk͔&~IVvK݋D#KixrteePI3REG>eZKm?mz+n/^dtڳnŵXƖlh }Txԅki~5o'ksՏz< oߩǜ zӱu^w|E5jrnȱgҰ gƟ+W;5_s<[~.b~x<[ (\Tp`cAk/;pXDnVɘgwo6Q ZNV땳qHfsy4~^Ȝ|]|RnYtj;NQoL_?nZ;^o\Dnq[.Hj#[#L3rh>Yn\k1M3_XA3kO\?s`ImVfLdUTM4lhath{[Yxgmȃ_UQVg˪앐Oe>]B8X@C=2XG?X0>oU!SOУvlp>N|rXyyHw֐dqģYr"u񨖊b̊y}Nx$қrح^͛^v@Idy_.{qܚ&;aD:z?V}8}rEs`b>c^P}7W5Ooue^|^kX|aKSh"gmoq{ yƎx$(0|pܔs}ޝ Tz ֫( =ˬd:`ĎKǗI Hɻj}ͮKqחjEjz,fsƝUʘ{t zp6&dTOxRMy|_Z7z=h̅6mwwɋŃ͇Z̫M*ypTg݆;2ƭ)wX̙3q͓=nŠrjhz_NyF's$@o/s2@K֫1iFqTp4rsCzß ɚ؄8x`=cb?fC2\# d2(y_R{TmWq2WR+dF^᾽~{pkibnli|Kp|(ԆЌ"uǴ̇c5w}^qgմjYxHHyh{>Y{g\TiZMt8i V t\i|-xk~w}w{\k[aRIcRCw_’Bzٝc~W}Ǥb?Ξ4|^~/v o{a?vc/ xk荕wH L<~֙@}>x1|{2}цQ׮G ̅Z"9 8 5SvHukByܛ}\nU,r!ngcRy=k^K/;\pPE&efHZ};jatm)x䙑ή4^E9`fN}I^uRSz`MMzSzFWup;nnKt=p—wjUfkGzrT{^tܷwԇ]2C +$rђ~jGjWapupO7u@zrC9%o쪳$j*WŔ~eD{FiBqr\ CeR: YK2(YK2l=Rm6>rRL.uWW/3]`6߇d> 3gv `#Ym)xkLUHUUp^G셚W5|>E| @q@~dfA#pr]pKrRe LN_vOFs]CirU3ǝ(%o4{gVve_gݩ?hYl poxrƛ.yȧN̦|̞nw东}ݥ+z̝w:"ұѐٰʄލaIvm羼Av4ۏXiXiѼo3twxFuɔmgd[{Ty\g(Gi6mø䷇3чjC׬lj;b҃tɰ7ѩi~B!}ĚsFsOYyod?ނ_<{YMtADsD˝P啺ijs%q:tMA "|&+GXEX†;i9pIinP m1xdy_qb:.ڰFʾfW-wAۘn@k~g<Ě7o姙|uf2cg)GѥZi䥢~v8tyoGҜqz)Û{CBioO|`~i>RytXdM~=rc^P|yn[UljXI#l[$Poe\ҀpQ]ce!kȱ,ɢݥ]Ίţ0N.~D{K}аdE}ʐ|bsRčk{N`{`\rĨNŒ ݋hXY}l--Fy冡Fò>E^6Ky +NjF<{ofaRR_ULxkHΓهkÙ߶Q?/0UµBX7`q~<} uAzhqdPXpIdO{‍o&qڡh}P,}ߛ{;қj} qVMdH:zthvhʖ`ΧiCp1r2myMe3-<5"Duɺ:v˱xοY/ʷ柇~dxntky"m_jjlxdрҍorķGԣm}uؘ݃Ec4Lhh`oY6m?^Q(3_Y}AjqkNxheygIg+R=bQ8afU9eNA@hZNq%r+jÃukcڢKvJmCkoa.w`xu`wtary iĥڊ4rrcx^U~dmOLjFz_7=sR-1aevߜYrb~pMj E*yJw~^jSJt"^=YxgAi([k?EsjVFD!t!S5MvT-tuP*|S2hgI̍pwVo:_(;wa8Ԑ-tCق'W`U,~{FGу\I{F=&lChQ@R_4J-8r4Uh9 { eB~r3?[pl]d5i7bn/\pޚFmi,9mqϜq›$rAw:,}$Ŕw}rlȲߔczי@q_Nȟ8py%K˗&7%῾|To`a\xPfpẟ7tҵWr,qFarCk%aY%v6Q6vFZ|c|~c;#n!\ijh 7͛lfOjͬvzgowIq3ZzesU~eRށ]yNX`rDrDDL\QDSjtQu&rĎs$b?̦9P6=4d˂ڻ;?~as앱jln }om|jxkP|;ȳgvAVR t|pbYj hĞpۤyfr<jĊ a2I̋dƥu95rups{|Œw60jQ>I>Uu?n3uc/mȁ ~  ~МG™}Ǧ{0/i^zGZ;(bOgJttȬڑi=A+銦(v(b\K~[r;͚Ɨ,uwx[xo%Q}KPyTs>hѤƌa:C8íȋz͡l^<~+tap{rbX{pZ|ucĎ"<wmyɜkv8V{r;qzv#lB{jCynޥȣϴɿӴéØUu|tu&~ߺtY6:-"@OwҳqV$ʗ5z-ÿxa'nԯ(nAzKhlf]ޑavOESd{jvw[յ!k1W ,k=>dUB5fLdGkoY%wve~$u`}lpN2pY2C|d6Q:gUTCeWEsdD~)oCk`tt[u`%y" "̭hM;\O /vsm\Ck]6qMK*(q\Nc.BvRf0xS)Cam5xXE.Gx\@3dl:ޙ;}~F_KBRp^S՛҃Rt0GoSR6z^7F16cJ6Lr`\i@xhf:xtal7΀Aee,nAQsq nlPq&qsQeqnīowv0yuLpqښp^vn~{\+:4I]Nҷ'Ҋ݉@f{ڳ3qLdh fM-qEZuq?qBC tDm>hF"]AqvNT}q}U*YwqZ}vZXj` Mhh~q#ȴ(uy>l7m)!xezMlZX10vHq"Cs@ zLͨʑ)j=xŸs8ƹdp̞y=TƳT;ώZFXɶ‹7Y-pgׄk*|i4j9gu'ЅxߋL\ݖFdCƌnƢvڜlT۲*rFTʈ}9؊7_}ɝ~klǟ'ijzs'ޙ_~Epjđ}cl dBozoUg. &0Ѧ>bӍmե̿.*nJ`gE1pS{Nqs|?§?ą}gxBwv!^vBC tӀXi-{kg20s2qޛ}e}X-w2 T9oP1#$]^欫XytyKFUy™qs 피qk쑎\ݏk$񯙅6ģhPs~بՕtjY^Kej˚v[} isBfY;Ji?bFhh!NieaNOrmdM,yhHxvbDu_FwfMKmbJtng`H1U$xn!fAs{z˯=`PoN\dJ)0^2M70r|hFJ;m}(zSʪ{Pt\Ւp[uh9xO|}Qn_u[x#PϦs㈓5ѧ ɛ<n0wC,{Pr`~Aְ0$ʨSygĪwsvޑ|Lrwx=@u}M LooĪr|#s]z\2m@OtN(pUQ.uT;/|&\g1{{bn97x`7yd~5:lp`;yBdMr|B-v.M{K6~}Rep6Hy_S6kOj/dpWBnoMtk;tlZ=_zaOg3dnjթYYq(uENvs0rqv7t嚅h0m{S{6E'oّk}Dk|͍||QO9CȮ l͹/ ,Ďh\ tBvozhEh hp:vͷ# v5wޱpw򦅓os gxhwrS~zg.K!xjP|+qzPirNzy ^hHt۲|~𱚉<߫e?~*y3æ7{zwuu lkQܡav)}!sZLyKHܔwF)v2@~eFZ] hNx'ߝsPkĭmd`sܟzlfchƂpMն0!Yo7b(fbjãڔ&̓6 d`NKĝ,{Ȟ9ur_t xu÷ | ȢBƮڄE\%Xʐ]}-zǤ~utʧr=uc_|+}zv mlmlk.alΟ~u΂C_|H]ݡ|ԍʋ@`$<,0wCʤJաp|vy@{ΔiwaMmrXkȩxOoN<]YĄczMЫƲʡjCƴ͉F2$zI'#})+$n(|ʝ ln M\ר>݊ uЌY¯ދrʤ:WUyjq|5č5|/m\Yq[ Is{ڽBė~󸟜p$ rɾevڴw^n1fg%g[tA*` lߢU>KŌĶjw^ϚUщŠr臐̈kϩwMyѡe{"}{v{ph&]Fyn|+n1jDŽX[VBy0 ;dȋa|E;v*a?\gWI@mja+EohDLhbKzOmQ}nK.zdEybGqnUxEfL}zdUHtK=longBΗ{Qi\z=vϚklf4L.XH%.s`pXw CN(R zw@¹؇pȚ}*U}Y1\vRW8uS+!_.e9cg=z~h9o\C=nCma8eihB4qDEt5N臥qrG{Kd9{oct>rpKY}5ZovD:-uElSdj MȎvSjE:yן=zNu\ jr} s9 p)h/ŒRj;sٛjpz|etVcXu=hNJ\ĥ9= -Ƨ3ھxַ%7O¤k~fmtӝr鼑u7{.z3{%sa lZIt\G_ubLzkJ}HncH"rVM|X1b$h1vH~7{y˺ΚvO7wȿu&Kxsǟt~p2n#Yt8u&uˊdPؗ HwJAwCC\"|rsLlGښfپ{b+?nşNˠ֭nA _6s}`Qf]"z\6lq1ˋdʰCYȽ4/|Çz&"|6ő}~?bꂺ2hf\˂h׀qȍ{yHyrČws$Jno\uJz;s*|pґ;iqmþ qre'vgzDz~uʛ]~؏;o/l}ZLx`׉xў+:&QtAˢեìaۄ}=}usa=v"}f pEz|M3!cLw$p| ! r#uj0Dqiz"1ƄȿmRm տܣi5&t귅|c\pʄ`k37~ͤj_%ץZvЊ􈼱a]{s_xv՝AGm [|hbKMm6|K׿U,t؃$BmK8rov(x"qwSju RwqV:z[R\5|ǧeoźťL#!Oك-e*T׭r5戮p(gԲXYx墪{|{wbxܩǔnؙ*bC{Xj }GަظtōUMA%D1wƢRD:Q iPMn'8LqX86l+Z@k]qAcwjLxq[̂lw[~+cE}aHzaIHv~^4H^Eb>mC#trG|g]Q@m˰ؑ^<]Ʈw匌љtmddIG1WRC0u`Br}DfnI{sa@ފqC݀vL͖p6t wCxt>yͨj<ĉmX&"P̃K]]/sÉyaۅ_|mU>4z,Z~ޥ5Ք zuvK'}q!Rg\~3OXxuNyI9GP!Lڰh)`Y%}qh*}WoT^9mFa&ϋf1w?h4>ui>IfD~`wBvT1Jq"W5{mHvQ7oK|!f[?lEF6vKՎzHSDwdD"oB}_jLk{#_!JjuL~d]?yFzྃsXprrRVoKin(u}rڎ})dAt8^n;턛ƹɍ֨܆:NߌrߕɅx>4nChJmĀ_pu;qRuSy閑u cEoKxb9H|)e_GiFH|jEnXIhoKĎ@sHS~Fˆ[Ɛp5=w2ǚyjx}t՝Grt7x|X)wo̚*vlyϼ-MU)/$ޣ ]toPr1tDUvyUxpٳș}4GY\߽όNeu{+ʒQxD _Ԅd0{Ӫ9mv\xYnJ9oSaل m%R/t-ڝt:R w0zG٢M𩄘rh-aǎwZvjS/k ~m]0\# ̝`}j"Ԝ} ƹ{4Ȟnש-pʴx@x$Ǭ~Ïy~autܕeUv`}ŌLˡ[E]a⦘"t1Od62w^=:{iG&tkfVE`}qQ<}fΗLvR~`φ:jFOa;D~ZCtU?)ybP>ax.9^*l5A{EzRz zzI.<&a4_ZI{lNoPD5WC@2"r^xMn~mÏ~DpuCXEzS[BhCˈd26l=K~`8ϲ߆F A~Ez@rq1S p@)t>uT߃yeCWշPa֯ZGn|v:tZo;IuGߋtp H8yP~N۠~|>AoIr$c+DܤὩ {Vt:ք=Zx.=PeY0c7Tbe3d?t}`jBnLTa1hiaR/zNlFUsmQd%oKjNE?q GpDǂkv8j:"y:^:[Y| _퇱oYUu\piȶy9x̴Ol2qm;bQq?ɜr,^ut&H;v1s h,gr&΀0@s ƶRy$SI):zϒeri&0kpŷ rUqǼrɚnuVtVu%l8TcY|LYzMtHnI݁rOroS@'nKq GcxKG)]woyMz/dw枊sqܝrڽ~,:ҘHy|̎fء,n+&c•D|M헸~EwpxhFՌs^Ek\p@xbPٟlenwfcjJ|,400ǼTpϞmx OفipJ\xhnS~qT9 Č4pvˈ1ku(x3ȶy2ܦwau 7xzë.Ҏȕ֨ aĥpyˠvvsxQMqЪh?:kkwtkœjվ=iIq@{E ho׹ylݚ}GlwSx1X{&o+s pE[lM^Ƀrcevi飐mhyv+vi1uY+[vʣx(pxۗ(oxs|`uɽ('ƯŐêMYĐ?%wd}}XsɋmۊPУ^qxRĤ>vb~ګ&K(5`uilXP'"Eǿڈδ\ʅ ө/Ovd+ f(?cw_Ar RytW*x^mʠސ#pYYRuCmC?\i0BVc9?5|tWC *s3Lssb?8.[arfAgwN<;EȨqˍۅ ݤуȩŒFl4ge<[I/ ng\L3zn.xmqT-FhL8lbR@\y F|Uy2?}^8xw?lu|>humEvhE~.e=*hEeB1h?CvlP){Yo~tG \z.`#rMjYD;tHHTz5>ȀRG𳻑mdĜ{+'vqbut)~5f!v='X{n;:^8݄`X2وfA7 jBzJjSD~Fjb?F rYJ kHSal+L>fr?uo9Gfq>GzXdL?va^t4xZ]f9&oԕtJm#cjߟr8h~^t{TfO k7˞q~ury et"җ#s_R\q]bld<koy5lūϮ0nkY$ ܃1qyc();k\EqDĴtmcsyrXrښu@t6qО{lzwi˙panxy1Zy` %zraLjvX+wTw=PΑzTR6gw,z45w tGnȸ wN84ƃg%sAHV+rOpAKkTtC"yDxIsJgIDeZK4v`pfIk9p骆nvExV˖/҄ {}\j=uZ?qdRc6I%| ̬ɍYȾ@q|uvv̨tʧ#vi~,_C3PS*?Hƭ|/g,xKr#HLnßo usx{zp*jx+k4hk?g jxn2n!4q xZqtshp{=¶Ï*;}Ŧ;ƴԁ)™zпٝp[]ls%yNУ]wĬZ3Քyۯuo^kUpۍr%̚p~`ܤ7_(c†'ֆ5D7$7tq~*p`PhKaH6:πcJ:ƌ\o蟬|k ^#D힠|qV}/qrwfcИAj梎cyIvpeor:5Zicue0q(rUŮofubo+{rLP|=M{*xƶb~v֞@]PiuWFĵN3͇ΚɥJcĤȮ`ZÕNSA#s%AgȌ7vSuM(|fw$sRmW6uWޡYD٥_/rщʯƍoNܔ"csn=LBrd[D*wfI|ooVLj{bbBwد1yV0n\Н}>y>tG~vM$#wN8_zMmm{y5Oͪ}mÄ©37Ůe΍AЊZyRoZ:sbJAn:^tZC৉a]X%hFْfh9n,i?jnj+rFąpyV rѠ|QeHMc<k4|nF|Gmqҏ.n;{S y^HGzeQugA鐎tTIuYvSr\n|iC_nnB5TtqhnxA_twuLilĞqǹSs~uu̗vkmn[.^4ܒev3|î7O;82`G`] Gt-~(eԈ}i*uq=s7|qULoǶtq Qt tuugqjp`mˇzgukibJcÑ}[횶X\oiuD{tTjnl~nטlgZm hl2I^x<ioEsrF>8uYAvDZxsK zXrZ[p>a𓳁kz䑿nwt)v)pxZۈ&*~hoޚ~J^`7ws5Z?ny$pR_g'uF J}VYɠɣn|rxxt`]w ̢awߦwɌ~ 8hU n)PɦkF%<~mxn#eHՑ~lPv^y \xwlJk`Pk޶ejG~lϧxts~2˚0,ߙy`ˡ@±Ύ&ǘݎ\ۉب[ä }s~ys]l@vnڝqYQrfwVGކ_xۑ~K]mvT֊FnG6L@⋪ʱv;SLu9n+Dr;|i^rbxp$rɺЛl泣VlٴLppZruwop:! nMj΍Kej<҅Ziw6fEl<8f:bcΔRnquk?nܻ,fҙi뗋m˒m՞_#lIAZe>t8J|IbyDN wF(xnI~Z dvinwےs9l y]|&xޛwRZTѧga©>Uezi͗{Hfz\E=wLe󙤂YքSaEkbuCt,YljfkNi2$1d:fQ-vC)6Im쟞z 7ʉ22hL2w[]ئzN|[8md1ia\m2qlef6+p\}J~7ҙv#qiry-,ɇ?lkQ^KN1=тo~;u*R]r[[$HO'=5+Or<7duSauL̔q'1.QŪk}7zqv}r^}ɚmܵeU͵RÛi~yy@v|ymXz+`m|ovסȎijpCr7i|{zx2Mx\r~“jyǸߡ2mc˕yЂ-ٍ͒7Ξ&p˺⎗œ_Ơ\7&G+†nog~+Ox9wcpAg5pjܒ{:xvkQl[ѳ|(Ҍ|.7;HT̊rOnYElqfO YB{MqrE?r+Kv"XyJ[R|\CD{w=ݮƢ u᤿g|ף腴IbŒȞІĶ;w#qk fx0cjt[AWY>].\C1DmNAisl[玦i`Պ4Z4?`>nhTxX*>@T̀&{<}S䌗Zos,N:n+E)n?zSɏx>GnwIdjSf~ Ek|ʘ@oХh]ǚXzvXams`ZLxW!oKfqy;f7nRukHem|kp!vq^no%Sucurep=Fq ŭepŻqӾɝwQ7Ώzlz]`ZsWъ^nEѮʋMjKG8 IÚځdwkBn`LT]}UR9mK t>lCwjLkûejr/m*'Ipnjwm׏=ds8[4b*l/o2rtq붞j$p@ţVv0pϜaik n̵NmȌb$zF-pBzPyYȁRBxG/vFt${O+`ktHywQu<:yҽPEcO~]y)l8RXEhC]{q5SƔR{נ x:`A|-~ɲwʀqZ;muyz'ɂ|{sϣz}ܬCF8u|Hꮠ~3lӛ)Z>+Z9Վl#zV3xjnAklLi`d- Wd>v| |zk%9bLU˚@R*&|vIql2SiV!nqlXDgߙl){tPvr^n„,v=D|HτƁʋСWچUeq>~pq&a/{)hR_aLMAG3TB@t]NvÕ2wJ{-Gg}YiTw#x{~GǼӄ22桷z{ԩv|Ҫ`tOsŐqq`צrvHzy*|4|8עtA•Zduo^>#.]Kԏu,H{=DҦʹfz}e¹hY >5e!)ăX}ſzrtrv#MmDe|hʋʅ}Ҝ;ǫ`~]ͮȼډϭ®Lׁ!d|&~:_XyPT;m@ZJ~yeoyTcNjĮ9̏ ɏ[rSTzJCpV{b y,[=8b<oܻMxrllnmE[.k¦en^yzLݣzLyF٠~k~ND<0,͇ ?b6qˌ_c&h4@cpYtNimu?iood/u雯qlimlR`vޥz|UN5Niq.kl-H֑Ȫűqtbbpݖ&hiuuSjhTK|ZM,ȅ}jGרqÉq tx~EEGۅ@}vu=symƟohHvȓ"R>;/,]ږ1 (m}AAH_XbaEZnWߜZ|sYȉ,qMIpƅN_qb̤0}OL̂[ɽc%ڡ{*kn |fjivwdw_j HvɤI:NU_܎lݰ.r#-Oz*`ݨMÅʣn^0Rrl8icHVnTqFhXL_R`?^kGU7fbR4BjYyGbsm^I~bIs\U!G,yme,ދ |i0ydǝ~c5zsRh͊2v}$xj*h[Rl~rb}\m}T ylOzlmC\^%=;tuX:|< q_Sгhy}x0wCwרG=I&,k&.YVINp^_#kkflnCm>:t6DϞ{1k:i5{j{uj)ysnPNpdD䦺Ŏe$& @Ǩzy"7>҃>Rc~/{UuÙiktaׂs]hteDn^~@bQ3[c(S=h,T=)se[?SrR^eGrf Rv3i6>reirxh<ؒk,]AϷe6riįkOdLsgs\U[sYƈHqvduG_aYnH҇2|z\Iic&z!yƭJȨ4x!}|VƤ.cNttэ_]ƍmoARb:c2k55ti9v0;&5v47tP-w:r8Şl+7[$$wT7~mR92}Xa1k9pj@Aw]/~]'yi>/ޝ舁R(v,zM>vX&m plDùpŽvӿpR nnN0sxrpm/ouyn]f`NJq8J}ScCLqeVnw"q"ûSaz[vعۙmүF*lőspsc>r_u:Oǧ 4UVQf}61xg$mJRhJjeSujr]uqƶ)ofo(p#krⱁsW q$Гp/q8viSy 9*{Me |ᣝxuIsEu2E!zkƆ|026zF.up[qNcvuաR\ۘh{F߆^ڡf.(U[y:HqzFrIrg`kYtÁ}Ǫy0r:sfHCs!gI{qZ_Kt2lFf|r֫yN߲,үO57֥|'8kb} dixf9G{km2IuY֐myR_67h!n?Rhe*-}q݆߫eѧaRÎʉm4%PͫH.R͌l4 jߥcw7Gw;mF=Bnb+Pc.Pm:Ñloz<ٙ`p)=k/)m<___5b7vwS,0tT gMp>hd̎!̠߮f2ʾ8񞘓zׅ{e 'kqؠh\[- Ef*xv[(~,gs6@-o>Zo?ы1m8;ThmVB:UkWo;zi7U8qm$Z:lX3HnY;Ei0U{:wpWAzfBASG8x=ӵrcVptʪ]mޝ0owwe˜qkoiνmiktp{hlq`Vly^Ot[ND~oQē49g+;4wsxu _t(oqy;s{X/`q1mZ܀lUq&ҟa:ÎFųq̽߃˚_{83xёsz0rnyɔ^pƱr#[qSrLso~ivᒰkKLn7?@jߍjry6&y/|ȱ{ޝpGzmdrvbwEƆvG t8s9wWÐ~)ľ N᪎{Fzd[]W_jns'k}H\"vU~*dfs[Yyz2SvSqzmԚkl*Мr™yJxxsq#hal뗕oD |z\~ Ls9ڨ;&4"ǰЇg`F"}ĦpuwFjwqc ؉=q0t&~BhϞy-̾=ć|îȿ6xAp̚q]q9,pklo wjPj\vo!uƞTxivʼʞy#ņV񷀣9ɴӊ$K借pet.Lqsv%NzwBJ:tskH i-ltyvt@磃t yħ|d;{Þ~8uanu/z~xȕoxؤBvս8xubؖFtXu4LBw⑭pƜ"rʾɡ`tćzR ͪPZ~xrǕVõ,N~csbvyUe->zMN˂̚~krqx1З.ǯ8KrLy ͺ IԤ}t"^^3yl:nJό~r{cL̵ͤϫpű%kH+·袩ثpJ#i̇~`knpå<nyBJ_L,oWM9iG[Bm'[BgUDrWmmSBvS2T/uCxFkޥ{g?z[df`$mܾ z ˜xtLi5Ɲ?iߜtiKsj{`uTo*a{:fY~~mQ`c`VtUuB!ssʙ}rЖrWnWy dx}jd\r_wӤ$<]̌8b͙̑tó&Ǜw ח s uAQpߦfgLȘ n}#zP|Z#|Ч\>#dV.}Dvu/lУ0*kެ~{]Eå|ȔDŇҮﰹkc\ F"޳jgٰxi vȪc$VELMװ>pUWm~cǒ ͌Ӎ7Gƺ4?wҊzsrחd'_n؟ P &tPUyEZbI!+VM7j6_"Ctc[Frb=Iy[7CH*q:c|gb@;k9Ơ>zšqSQBM-rv}sGkH~p/JUrMŖa hba9e <{ݛr"7eo.zɃfıc:ґRǪ'ӦO:QMqtzdZqUi:̍psGNJe;94h8X1Qh{:cf7Ezo;ZXkJ:-=f6 ~e;4h9z|h?'m[9elRR.4l T}. oVq2kU8rYru omzdqDeyp ο㩈1_ ߵԄ+)lozfkڬr~k<`.g{`q plo;"n~ȏmZp–6rϠ}jlj*Pqw~S4os֙~L@ĩ[WL^Ϧhvk vkt\nlG/s ˦I~]=ɂQ>fU[]𞌈cxX|1\C)nq vyx0ldzeT?ttv"px¿yMڞ{׾vrrm,zƨ9_٫GE٦:̟g~9o/i4Bzh4&_{#q+>dn4i2$C~Oϥ.e}+6S]Să؀ !:2H !žzеv`Uu wȘʺ逺8Oc6Ǹt=؈oε؟ڹ,ݤYnnR~xƘxMPjΥ抃ǔr8Ӻo Mxt4mЕ趽"hN{dAYŪZe2"6vǾ ٫mr*_Yʏ3$bzצs?oALaM/WK2ykiH[tXwgsNhSDlY)}WdzZ~d2q'lRDc?Gzĸ{ИK|Üt-rRucv,3(j#dk]4p3qs8Dj x_}kw_ȇ%:g]jK^>Io0vyW6ftYH•Ȃ-"١ y$j9ѓgo4:֓rC:p)j5Yel3kg 6j<8Zm1Ccxd>BpV3KtQX6LrV4OpXd4PD=ub?AkD`NjBuPoN䮍̃BqpFoe=kx7ٛ„tU={LL]b1g+hl{lCoMuFM)x.y}Ůxu qڗjuk cf+ fKp2ie҆^˕rcl ~r#{wJVx̐ͦkϪNMa1x|ds˨y X({F/vPlmCdqb#@p9}xWCvXɜqb rvw~yxl9n묃zyۜUN z =`_qa?kLy)iɦ8Μ1~#eqd \i qҗsܔ6uJ{[FdIa0#ylzpe2usôvRҢxӾɝwaxgh@bcјvqkֺ-wѶr/j0mߜzٿ#ݽzERi fƲ=~)ڨF:#uQIfǗ}ٯImhÅ4da|@j MǏ4ZdMSw?̘6ilJevH_0ekr]hu}sFj/Qu.ؤbxFK%i«|7O駞jo{,bBGYE/dK.w?]JAKw]ۙ$"nlyIls;p~@_~Aer9n-6nL6q68l:zYgzAiv\(s{di+SwhL(zq:\\yaMpt{[iyQ;T C2iTG7STKFwjM gxojASibǖEk{uL|P˽}~]_rIz"gG7N_tnslg^hjd#$n$A`twnLtkn }w^}۫8Tފܪ¯DynYKr[I|/&\Ik6d/OA4(nMK{T VnBKOR^%%h2~aE/6t9čui>{?2v=ӅtBH8}fFMv6\:oS5^iQ{|h(Vr}{#OĐq=~a;sv[cE@hM1xYsǀW@Wel tlY.mW,pq9|sK,y[ߦ{xv|u3KybvQ[&{bwa8jpN hI@~Z౾rb|wjr#5MrdÑu3+VB JީpqՔL/a w NÛ}9z{_x2p`!TjfƽSrs8ޛt^s~ٙtt}(pREpEXO~wlDn,/<-{Fd?KWɦujQs??r-w{䖱q֖-^C]v`lД:mOwAP|u0{w.qͺ#ffdĥ.pyxߚmʩ._.c;Umz+z=KkZRrbRjНv:`s g8nxõ)<ݺDjQT&Ðh’=zZǟxJtYx;5u/Vv-ޟN}nmOyBexNɊuʒ%yI{DцYŚX+v=Ācfqm o|]YՄp^Q|t(P64O4ă˄M=ј)bx`ǂc학Ȝr)y`pa)bk'xh͖FɵYF͒ z9bQjEOo/)z=`}dp{Z_2mybYC2Z_G9VE5^RB[T?XyUy^\#dйh7$i>nlJ^uÒH9)zH~QZƇ?ib>uO]{zu1rmyhr@gyqe=| c9@~mvU1cOY3\\MmA\N_98oW%44cQ/mPCg{ia/=gvB̃'qY^3e/q`@䁔`.i};O~g7{[-_k1hiB9Ϣc& xvH>tAxXKxǀ3lu\?pip!vUsarw.t+蘤x-N ~_+{ڋlw4j2YXq`MMt`|J]vcasK{jN^e{pདྷ(񧐛$ʤ~nnp+ğl鞹jgpuCrGnќOwVw|pj8i2|8eˌ$x[luTم@yZ_xYٓuMIWزqmuaspsCv¼\6BEO~Tvz}cq'Il>Uy]tcsyԙzϥī +Ӣֈ&{3nSqQJ`{b&Peue-:xjÆ~˰%xaŽph{Nc:MkrWv)}@xX]t&vpuqfwPg ǭ,/ xLeΉna릴rϕ$t7vn6#xK2Pc0f֑N shu.h1wĠ|cƙy5vrRhۚaky:wlm'Uu:lravlwƩ[ա$ծFZř_J#z0[w§txVt9sN%ǫ)Hdyx)ERx^xm[{.Ǡ !ȒǼcs2y֙ v"m'\s\ޒfifWlDtE<~[7{g$zMl5Exa4?ulزƓh<яdìg,sx˳VtưjޟtĢ.|GɭɁ*cÐtɄd{Zh|s-Q%vĚhМe_[bJ8e9yZwM>t<^Oy ~Ћف^qax.dǚoXzy őwm(ueuEZzW6"}}Jkw.fTZp_bLraHOqj^FUvf{L&+}dgjӅ-3ZYυţ阊z\ܑ>k^i@k:hdho`טsܮIm>sY~Ou*mlJzmwLn֗h]}*\^b)c쎠gӖszvҲnr᷑usd̀,a)!xៗhiK+~dC&f!B>vY@QxV`EͅqK~>WS'TVXdl'bqu_t;o؛PDrLNJylF(\d{n}xy{sLo5gqUJKs\zwh|p_zdj N䆮xX@1snmzody.Ny_8xBs3Зhxzk2%'e˝ɇj2l}LzawLq_2=zMć˙z=ޤ%r¸ll(YsiDao쿄rTutM_ w_ \uywMx ǜJy^}ŋs{cZRv0ȄXڙN\7szkt6xxYAk|멲K-np+g_tewr'Œ+~zNǶHu6|s2Cm$"i\]p|) {5.~ޡ}ŵ]-z r#]qll>EjȒ.$_6|=\X,RsŷϞ8}ÚtldǯǛqJwIFuy>EM(ن̣ԉ\Ʀ=ݡz/Łyj۞tKtk:pHq"~^, X}褯zhu)ĉrM}|ɅYcN ,ѯhɡ\p?+k/P|ګ}[ҁY͏߆ȼ^V裥uj蟆r#ؔy~b$kcbɈ<@`d+EuAkŵW OmŅf"YhQ{gΡņǨsŞGh$œrd Yp{$]lwAs|]YxU_jB/vcJa4yY51w@/'Ȯ[q4l?lSv^s2.wnx`$kPe}N^`EYhHibifaҠ^ר,iPooA.scPiS^>t)ߦd|D%K-8DFSeLJ I&Bz"}EX]a٥Ovyu”p8h0،cMY=wF?rJOoUڕC~H3p;E֐ ]͏}Trl>tW]>9yk V:fZ[F\vqpXm\-}XTziH[wb? z\9~pQPi܎u^z Xlw:X6c4.e3hjy۝no̍kV]TlAnf(ExԜVe~)mP3ȬRp{B5D|qzCQrvQL"#b;хqQz dD"x_kJ&{KjΜٕy}֮=🢜} l@nqgexEhꚐqœ2@mݐHz/ev aNXU20d4?jKVie֛4e h i^Zo|=n!xvŔ2}#urǣΌ ťpNͨH9Li&}hsET|T׊dmysoȔjF\Am`˙oju[w`uI{Wx\cCnp|ZC(rk/X!mzOjoOzlTw`KnT엹eaUbZ$`DJlCqָnsSjɽhŻf hݗp:,pyjƔ?i{gdud+{ivs;.tfq hYО!wbsoTzd{0wە>oILmnμMzU墾R;y9elI.xhE=v aEuU!CbzvU.?gG3qg餬=mmqFfTyoUrƲlk" ViJu*Cψ?̬߄פz֒͠mЈwZ3vb G|lLexb~&xPgVt]~~)]Auq1S@x Āxҽ ovjظ:wʶj@KsOyl[%rRFx$^^rER\vR[x Z }EwJmGgfyj2p.ޡ1w+{ezlǫx|ڠxߚKuAas#Q%ŢNj1 iXlqHqIwy]Lfoy(v `tuUs{ͯ>wHit,vau]6+zT\W0r.xrlGq礑xm*}9לaw_1uy%nRnIdZC|f#~W\mpJkI졭xeQh;hlΛ$oğKtlJ.Όƭjӈ̘05 u-䝱mEnlqvYǰeOȳ.o~Dа U_N֚3pɖ=؋ЎĆ8ϥ҇˷wĬw6 E]ޘKw;W:nw?m̩#񢾃{t*wDm  { .vG/UwßwFmV{BDɇ+&ZP󯳎l;*ٺߤv\2{|rrEIvOR_+nSn9sN[Cu>gVwƤװҩO|nQY[CfIes8Lu]DlL5qgXILɄjDTeŌcsĹȝ&PsRuF kUjӭij?kx3/m˜ۊlaًkfYmk{~t H|Bӫ=U? S¶N8:ʟWўF~z{^fLDdi@GyM<9U #q>Kphc>H +^"nhq?}c]{5}ZtTrXAeN#9p+X[>'w=fayԝ r[CkWpAMh}epNЈ uUqMdyz VxҮꀘʫ+vǁ+slӒ`m5dܿ&p~wƤ|Q)v{yXLw1tErp-}̜ۋ0 p[sSKVpNw$V7w eohI+tZGx;胈gp܇pvi_RLrP~rt F[;5EgSy6xžwDmu%Zx4*w{bcl] | K`ФFk&x˟݉f!EEkל^SepwFQwMTovmg!jÙq;={ϨJsI-v{xF@GEJnnuϛlwl}ݦKGoG"gV(FK?`\Z+DTrgč\ʦW׺Pՙw{Ԃ+́p讶 tWdTыFyН+|Dܗsm}㠙}-usv|,׌lvPtz)8` x?7ӧ򾅮ΎI2Vr徚0ʞڶ.}TpMv/BnbL$fMA3pZD eKcFA?fa-Ҍ/^.!u.-rh[uMqQѲGrf%Zq˒Іo=uv"sR=jO7D]G+2gP9q[$< u_:l|T- lS+JnV@.~kOGꆸxac'*A*˔rq$=^e,j9ƌoABmE{dS?WgQM-r[pxk{\}5rc`x0g㊠}g[Zfpyy|xtfs9z׬h}zv~ߛˣypԟ0wuwتיg x9zŔŝ7h͒{bX[g5?s?tۚnocsǙ+pޘ k2 k"ku!l~j"%|k }&eK]݅cԉi VdO9YFґfSʴ;r˄Ȉ w}ldpkɺwBYm~ *ņr!zeeLnO:tZZH=jk{7x#͚nȾ%l>p5r x螵% qrժ2^ȩ ftٟ HatLyaBwg(Չг.'@'iʋ9=y¥3}ȩ/4ͱͶ"xc?ޭPÙGմ圈w^ow'2w t3xtl>wXt5Ls-˻¤5ϊԹ~{ZA|F%u&8sQ}CmM#_(I,oWFs_hQ|?Q^ũEħŒj~ߞӔ}Mo]DC[7G&F\MI)\MD3|zeKhvsXneg \UD[BoĞ2pKr! nב)g cc\:oԀ6hӞ~ɻB;u1@׾<ٟEr|bSjHRlCedpPyt`wOvѸqiݏYJ:V_ 4hLw݌"xJs䆔t}bjP3c8KB1RcpOG8:jT?ktO[>7uZ 6&mT*?oRUR3~dYC%w`]8̀硶̦̅k&r~M1h+j7>prB?sj`Ku[@ \dLO/xafype{SungI{3ho/~(kނq`‹x]yOsq`+s{B{v]}ʆJpȰnwȋ^?}[e<9^o[zUgsvƽAy p&`nJ㘈syOq_ykjkǏ:izf~'gg~j፩~*d!}vZjaOjY_dܜ&Yf;{ȶZ}Ɗz|d{CZj~p j˼usOD 寨ΉTՊ+y/gvDZEfIe|kz5ޝfstm%.foٺOte$hƬn$bu)kr\wVc}ezH\zbG4zGf"KwdIs_HubKCzlcRq2Q֑8ظ:cշ٘=vfSAi\Kn3_xP;\M0oT6qPb1hIkǟ6j_vl w?ȒwK'|QxAr`Zk/qVsņ͢NaW. =קT1A{|"W)Qƾ@w>IvўnxJwvʽOrȷeif8hB5m ΕyӏK{U-zY|:ewy4d/A$pSa3hRA6(g`Ro=sZ?{c-@u\2vwXx>oZ 4&hCӇ8ròF}i~ѩۃwp؉uB#k<׊o_@(th>tY?kN0KqVFqNykI|pW^~+etzSH{KVXէ@&i+qY摥p-bl]Lc4tRqs}RxuuQV}VeIV{ _FtoTĨFpr~Ԫ0~2ʍ |Æuؼ=k˶YeiSڜJbqL Xv vcB$GmK}xcϲrsvFƂ{lΔ]lȨT fkwsd`qXwYv_XiƘun|u n j7Zh$#x˧v<?ŅSY}|wYq" &s~uSˏs*l"؇HgKJv9#3 )u\ܷY}^KB@e)jهɀ'řw{ÈZUy#V/`H/qXLduYƚ}Mxȣ|9|fjTL?XlVAqbLDqZ!@v\];\tROd)q]M9lCO:m uD{qx |ɳ{6zɡzyNB:ƥ$¤KdGتn̟|!x{a|%`G2hA񞽈K[8ds9äsp 4q~sg)8E ;}҈`󅌰wdiI~etWtYߊ|b>?y3NPsFx{^ǃg}Wƌ|vmOǏxWܜO8fĩĐzn?p BkV_iaVrN8mK>tyYl[S|`KRnQ*m|Tyϟq@Tyg_bDe vgRÒgvm,qÿ?{a`TߨlҨ|D uY|kV[p[O}jSfd-wV\t_o_tp˖n׆pϑGzRk`mD%&d[@ӝDvR]o|IG}GۇhmGÝh7cw^׍fPɖ0{];kWf"ފolXsBi}zfؑeXq?dK˫IŸ=w烈\ҁ\X7hI28v[JΈ zhT:! FlυrPq[GBweH˃ v-dl!QolJ bMJy ¶sKJYq z!|@s}:ƓxǘvݧT|.f޻b%oߙ$#بtb)+괫49U馁\P+IMre'C湤cp~qƝWu5vFu13pnϼfrgƩ:ip<>Љ*w tMwkc>7q^,7YvO`lIgL҆VhMޒ /صD!vʓʂđiolzh ?рd7rS,jR3fUpA#k.f:h݋tf9i'+nAYqGWpDMAn{gq]Ⓡ~cfDqڮɓs&nj͚{UrkіdM$ۣ8|7~s=΋ː9aZ]duG[xUolN,Ateꊘr"qoĹh'~ [Kɛ:G:6òzW#;KoxpWu}Tk;Cag9Us7gxš$tĿpFdt 1ˇuƭ|{+ڈ}|ksuÁju[ԉz*cN;4h- {(NBqCHs Q{Y\~aZxi۔jÚ}0j뤫ujkj%euQ|hK,rrZrY~eQKFnPЊl]Eʟ;ҠPu;%NfcZI _ў4hIȞkJlۿ2oPFSu4)} (0Dk`u48ʧ~+//4EwLw `rs`P}kXSx nԮMwi2qlqs7m3lU~lo!x򱪞ZĬ.y}̄PjVtF8t{A{mCzeA-o Y̓lՕzuCEcř'|MNSnOMLzi{XNsʘEm|snLJnm vvjwpii8{nNp)Ho,s.їwbι|c׍0) y#v kqp*=wu2EǪ=.D}հAʖډI gtgQYۅ?iE3jW|O ɸԑĒɁI‡K x_ss>$Qy̭M6}Rv@o2l1kKzBg}~v6&|d/^kXf'~aݔ张VЩ9~uR҄/gچ+e zwySpiEYރ]:n L6{_'NÈτzRő)pJS /x|d_zasDuX_DR}mQKybnTlILkbrFu x$椔}{g|ǐwƢ:uS~qSuwNǵB| ݇Gk||+\EͭՋ͡ĥfhZ nh%4Q\P`nnPbȻs>sWp:0nk$Xk{?q|ɭ;MnV؉ŚOK}r]Svc;r^87v_?y^,>Yy}c?|~b? tP :ݩZO⬒|ǣ%x]oIvi@Ax]4oS/c#R59a6T=򓞈=os刞p׍nnWr`Ltpr]mvYm4S}|eo3pG(pTތqі0_mDUlO=qsdw,~*OIՔ5pwX[\ydSQzO\L3MfтlЇnrmiԗJd?f lBi+hbz|z_z ]ću9XԁpPsUSXJ|_(fݜj~o s&Fgg^ܽWZlRhvzc0{P^̹ υƐ⥓!~ˈtfy[Bt}_<8?{]UǵtҢz%ŻtN=#qc uۀs ӌɉO5z8*6v<~sɕiWwb~|nؒ\p̏xT iD{|cGhsTCm,dvŞ!q/siEbaaDʓe-i`xY]|isPs]߇Vw\nlKJ3pSCKmVYpA\y.]n8g˲liwWuОs,o!!p®;hz#mmhudS'nX nxtaor“j}{qii {mMqǢdslCh`}Loq@tHauHx tUڊi}rv闄Q1ya,_oiLG~)p\@jS)vM{sԓn<{kvlRCllOmApotcz/ =jL+(4v~ƣ{]5#xɒIvI,ynk|1wIƦʀ%/|jҮUѭ&tFܒ|qP}[qpkdx*Ŧ jɚÓ}h0uZN'L1{8‡tr qhB{D0Bac9 u.hDX_ȿf-[]D`K^wx-7s^Bjb/ lOҬ +]A~)x@)ŞZ+4|xKtxSWtnä^xdA{)Vʄ?o\ʽ'q&ȦryǷ|z^}B‚9*WtmWpb`'rXseniR8.Qo^U8xYz=]{,aAxfK3vb3 8ˊpQȩqsˇt}p(*}uz+nzMvC]&78rZQ3[O/TK04|4x$s9jJr鏇rrIs֔]lzTpK}eƒGp 4rʛfxȕŜ)=qfD%lnݡ}t AwǤy6ŕ#|EKAxsHm6kCgh,mf,m5hjdùg&lSkpfaO}]uYl>SoVqd;gxhڮȗt)}iwv H?m DwpoxdDu!BmLv0˝j%rÝă쵊Z76+~gLrHawO'ώnhĺpMo¡oZt* Z{ثC`[]ŗ*ݺzƣ7ef(^hӓx?Mz2fa5o{GlzdVHy\d}p,vv@fq՟>nf]ꆶZƉKX֡(]za Sq[pu_0~y[sJD;wViѳܘ5vy|!{}6}w`BpÓmx\ oG0j um|e;𩋎ѧ0Gތlۤa> ۠{oswgY~o.[$epm֜(vwȝm]knuku8oY?q'k`NހXW7_Õ)|NǓsM|}W_ bs3ux֊Wn|Oxv&|\ƍ25bq\'阁y蝻-uHrdap+oNL#n{nQIpy s g{ ^*ƯqnǻuP\~ xܣ=r@e!e8[z8w~) CS̰xRw6jdؗ#uU^`ȱ%dKˉcv`ālwsrHDx %T"|& xEgԙ_ ؘcƙg.%l0>nxvs_ oć`}~P xɯ=*Ss˾iKv1q{鷰zع2zv;mjU7\6l&FӏrJ/@qNkhΧ~zSY3{.Ux*%v*\c/ty`/x_3{a8{cب~iʷ6pȼmwB5yǕn| @DxuSi斀nٱ˟?Ҕ)ä??©ϋŹm%x#4cofŖkZ˭r=5oVQoA"t)pŻ?bs!y痊 uz.zܙ⏟33wnBZ ndW@fcOd2gO41pyS5A{bDmP~g|^— (0W҄\tvt5V`g:qmZ/[NX0]Pq6z 2yjrIp$orCnDdtaFpuu@u%4}1‚׆H%Q3}Ϝ݂V4}vD~uFԍ[%tk׿Uxrݞ"xn?4N^ۋƹ{#ZƝ𦬇21~{Ìd+N\ɤmHϚ}MɁv7pTrvL/{!f$pWA|´#&}HæwG&Br~(ʈ9d|ȅ]՛yʶ~o/} yy۝uhsҔQܯ{-lèYźۜBu8NoբT_z xnoƧ2zʋƇ*oơ̦&уfށXΡɄڻ svl\_sED[XxH{&PGzy~v=Nu1QB(^tYp/ t`.$woay;qqV7x`:sT1~CcaAyZ.ގ2r@}h|Iu˶ooZvtxjd|ƆA~.e|$[qNb %gcׁŻUu~|+wѿ(}pS㗇k,iCr xn@Bn~ok߾5m%sX1Ș9?lq3u[ܒmwHwI`q$Y@fM 3oN2}Oe1 ` Gh^?+i?nċКtuƝ;qń=|dpV#p77[wu\4dQ: jvX}= >ބ ?za3q⏠o* qun֒x zx |VT}{8́5ĊCm6z $ybąxL{:¦%~?ʜUԲ7ճ3vSnmoSrCrJoYkЎb{D_N`HSc$c|yP?bs!K{`u'lFCkݡktxD'u>jx(0y?܈V)}Z?S܄ȍokⳫpÀwRy\{.Dsm3^֔$yPbxW z`!qU݆mIsyMPfۡc@g0m:ɷ{͙iHak* K .w٪SeúA{ҚtTjn:Bl7x3zDŠA-mFl~]-^LsptzX9qr-P0?iJsYnpQq0ޓuѨ~#-nobXJ|gF9GYpSiΠ^g&rô=w*|2YȾȔ`se$r?[?bݱٝ}|6ѪKtr$uwŷ {į@xnNs{q؝o$qé{o>+;˭YsĨ3+wNr׾kgĥԋjٕ+{  x{ֳȝzԯM{{ r lGDim`cf2Ey1j6x%M|YHq͍.L`I©čºѭz_vAmpG_W~D9zQ [󫰕Y~U+ "(LKqHnM$6qT-vd*5z_iDJu`C5v\"7ruQiRFuB`F5k6-bHxvpy2Ys=ul:xz7dcǮ潲}Wm҉j<yW LW@.jzP4; I{\qgΞ8m4Sjlj7m>k+eudSt잌Sk,ƛ~gلyZv\D;pJT/3T+CU/UOۃbfYØܫ-uESet["$ɕe=~|ҞƘ)z}RVp6w Yv0f(R9m\;"     (S `*`*lllllllllllllllllllllllllllClHFHf?HȅH_8HX H 2 Ȟ Hx libvips-8.9.1/test/test-suite/images/small.bmp000066400000000000000000000014661361153320700213530ustar00rootroot00000000000000BM66( ` ` h YgNMHq8֎WW헕{Dk"_hCRf>@dNzG(0CU~xj~uScSa`oSafx[2M2A^aB̌&k4jgtgyc^k.i`X| "5%v v"u!zmTb n3oug'|["ec_f/z6pn,w`fi!o_RELcMtE}q1[IwaSJzRq9q>eE3/unZ9 iVV}_Wm%aBy5&sdWmjuveWo>eAwF|E?h*2nCE3:F4 V#^("IrQUO3libvips-8.9.1/test/test-suite/images/t00740_tr1_segm.hdr000066400000000000000000000005341361153320700226740ustar00rootroot00000000000000\dsr/net/dirac/PET_Da@r? mm KBq/ml>T>T>w6h7B=5r/net/dirac/PET_Data_4/Images/ECAT962/t00000/t00740/t00740_tr1_segm.img::libvips-8.9.1/test/test-suite/images/t00740_tr1_segm.img000066400000000000000000077000001361153320700226750ustar00rootroot00000000000000c 6JXY~l04j[""" -0ov$XEM V ; ( #j9H ?   O H   M cFYIk1 a$,YY   $faE11a p!&**>(%#p!,jvRi{i  t 4 L   t 2~ d C w B  %   I ` j i X H=XCBd6IFC/C :J_=TI]Kw=C S"$%)H,.-W*'A$"yJ,F=|~* . v > d   m C m p R ( 3 , " : ^ b F W9L* !" |,yIo-,{Ny(:rz~`qHSy z3rL %3(Y**,w-$,*Q'$O" ~$(co0& L v m b @ &  ? X  3 b    + %   ^ J/ "7#!<GG;Q(~K>D%OB#ur"'*,Y,B,,*'%'"c /W=} = O ] P U c b 2  Q ' r y o B w j G 0 E F  t!#w!</fb3XIhy/;uh!iq_E8eud10V! $&H''' %$`"<`%E  ]  i i   3 ; = S O !    P o D N v | z W 9 = H 8 $  , . aSsJ w+-+B.s9S-"m6bO4r !G! LPU0   # Y ( [u,{7&n>UJ.: = f m 4T  =  & *7g"\-["_0=4Yk! X L @'zh m { 9 l 6k!(/\AQR'O@; Y  Dac " >  7 }:8 {ht]Zq  e 2 eU2- VaF}W7% WIwiI(U&`!OTh]BMY . ! H z m b<:Rs70~lpP A <  w s &  7 O % 8p(5m7M'LRDPFBjLV R y  ' P * K 3 5htj|.+ bd!% P  ! 0mw    U u T J J ]2n'{9yfW6kzKL@l w"+U hUm3Bb X 9 2 $ (  ^ i  n 7 ; t  |  G Ff2((r<Vdru9l.s  <"Im +,$4IOXtlvhz/d& . { y  f { Z 9 C x   q < .  hCd1Tt4!^M8vJUr},bR~@wbR)[o_5 .emEunW-_M , v M  T F r w M 1 + 1 ` Z = $  u 8z]FD^"K\~*Z)07P_{+v ?_<[= %=~1x(Eac4O  { j   q S aG?U< @K=   ?"*nEAJ{  ] } }QM++p86 _1f7>*I2 a m <kw0 El\?7EY/f0dHwp ) @ [ w q K 6 YU {y; LW% mEO[}2 Nch},R}V"L+er#~j_?HvXUV(5C{  yp1sv3 "6" ! Ur< - f<:%\a"Zp/ T~VwW ,w<%h/1mv}`<1Z;2UH^=KRL#$Q=kH  ekA<1 "$+&*(N*,T--j-+));&$!!R=r  7ARcq;H %[O|?6FA@i",B&3YiEDH=. !jm@  ,{Iu!$':)*+,,)++++v,6-B/ 02468 77Y5M3302-[*&#? K68& nYis; #2`h W|~1Cmy/a !<:txB R i  /C?- $(g,&0:368:L:s:99%8V778P9:<>|?AHA@><|9v63%/},=)l'%$s"! v=x&  r /It|&-A.5narIEUL>qwp n  9LT"&+*/4D8=AXDFGGG%EDC@B AB)CPDlEGHJII\GcEZBL?A;842+0/$._-n,,m++q*?(&$#"!| ci r /6TDYue>\b/mj.,E  ]n2!#$b%'*.27r6:?xDcIcN4RzVZ7]D^d_0^r]\t[/ZXX[XiYqZ[\\]'\\\ZY VDSkPlMKCI&GFEEDDE=EECA?S9K40 +'|"iH J ':vN@D; :AIla v5`%$+i17a<AFiJMPUQSaT&TUWZ]r`cfilpsvxwxKwwyvsuNsr poojoRoPnn_nmmmWljigCeddmdwdgdcd$ddddd b`]zZHWiSPaKGSB#<734/3+i&!=  nsR`*Wb.!d\x1R-F  '&.g5{psrvx{{|^{{zyowutNrr qqppOooooo mljBhhhii ijjnjklwml>khda]ZhWjTPdKFA<<_84J/*p#) k BF p ^J <@ 6u%+J18?FMSYk]~avdghiiiiiik}m npvrsuwy{H{|{{pzyxvuGsrrrrqIppbpypaonlkBjijjklpmmnopool,hdx`][XVS1O!JJEA~=9E4T.9'!P'C% | `]"| JT< k $ k/8$*076VV!j#0'+0K37BGM(RVZ]`d1gj8lsm_n:n-n3mmBlqkjzi?hff`ef)fhcil+nCpsSuwEwxxyy yy xy?z7{|}~ }~*}}l|!zfxwvuu"tCsqp%nmmkjihfdcZbc3ddwddccdnenfUePcu_{[VRMrGAk:47.'!w ] Ls7<,1,,r,++-.2=6_;@fE ISMRWq\_|bdfgijxkHjjai gfedcb2`_^}]]_]^`bdg*ilor$stu_v'vw7wwxhyzz|(|}h}K}u||ezxvtsIqpcnplbjvi ggfeCddcb7a|abd;erfQfgXhikjifd`\W*R;LOFF?81*#qc 47m96!:67 6655y68[UY^kbfik}l,ll l khjhfca`^]c[ZYEXVVU`V WY1[ ]h_beiQlknpqsitvwwxyz|E|}V||{kz7xIv?sqomkzhfNcbMa`z__g_Z__`?`ac*dfMghj"kmnnnmk~hpe4`\BVQ[JC;3+s#> ZVAAA@U??e@BjFK PUaZ_c]gjmoppnlkKi2fcH_\YYmWlUT.RQPON1MJLM?NEPJQT>g> =<;;;<>@RBHCFIN>SW\-`d&hJlpJt vxygz{${zly"vEsDo?kIgb^ZVROLK*II^I;JPKbMgO|R&TWY[]*^`Xc fhj"mporAsu_uusrnlegbZ PF =*?i@CE2G^IOK'LOQXUY_dinyqugwGy?y{ywvs$oh`ZVLCz:<1>'[  ex`iiiQhhRh6ijelmnofpMppxpqnm(i|e`\IW4QKE@L;62/-\,+,!,t,y+** *#*,,-.@0 2;7:5u1.,s*|))****c)(()J*)*++4,.O28?FMsSY`fmrvx9zz{uz2xwsnWf_XGPIB<62/(..c/01{2J3A4X568=9&:>;Z=?CHyNT[bsglp!squAw>wtwu~snh`YRjKDj k?lllmFnVoqFr,rr}rvqo7l"ifaR[hUP\JE@1Q223357;@FLRY_eimpOs't_ultcspke;_IYCSNG7?93>.)k$6jklflmopr&rssrqp'mxiufaO[}TNkHB=9U5s1-*),'K&A%%%&([))(*'e&&''&&c&'+30W7>ELRZaiotsu vw{xxvqxkcR[?RJ A9k2}+(%3%r%')(>)d*y+b,=,-.A.h..04159?_DJQDWe]\b*fimoqrrvpLm[hd_o[W)QKyE@;M6v0*#(jkllmro"pr0rsWrqVnjea[U%MF@:51.*( &#%^$'#z""#%'()!(F'\&&r&&b%$$$(,4":AGNV]f%lp_qtu/w7vupkAb[ RbIA81*y&#$$M%&'(A(()()**0*_*Z+-04:?)DJ~P[VK[`dil9okprHqXolivfc`w\\WR LHC=6/F("hi^jAjkm"noppomif `\UNLFo?>9m3/, )&$###I""O"$& ()*E)6('Q'n'''%%A$',39W?EKS&Zbhm5oAqsvKvv qld]U9M72:,)&%q#H"q"#{###R$%a'*9++*(('())) '&&6(-=39?DJQY7afkomps*vRwvrnGg`WPG?@70<+(c''({)<))) ('-&&w&f&&'E(:+.~3/7t< @rEwJPV\iafwkunr1s5ssrFq*pomjhd#`\VO9GQ@9re;eoefSg+hijjkhifa]W%PI@A9|2t-)&$#"["K#.$%"%L%R&$'*,-,+&))*+,P+s)) (+\/5;@WEJQyX`Qfjm\psmvwwtnpj+c[SK\B:3/+'*J)*i+!+++S*V) ('u'&&&'\)|,$037;./A.:,8+ +L,-. ,+6*f*,06;@EvKQY`4ej@m-psvxxurlf^iVtMD<5C0,F+1*b+f,Z-].--!+*)((?'['&'),M.148=CJCPW\cXhmpsVtiuvfw/wJwwvuls qm@hbH[\TNbbccehfhihiOgcv]dX%QrJA: 3R,(%l$!""0!"l#%&K&o&'* ,/D/.,, ,-..o,**0),i0!5:>CHOV]chgk=o#rXuwmxvtloipaxYPG?72.c,+,-M.s/W/o/,.2-c,O+,)(''/'(9)*,.2-6[prtvw.wrwwvu)splga\)W0baacdf0g*hOhIheb]\ CJQQX^c~gQkot8vsx5vuqleb]UKC!!!"####@$'F*-!--,- -..-+;(''(+k/147=\DKRX]bSglqtvvur[nhRaY^PHAP+])(f''Y'''' &&(b*/49?FfMU]dilprtLt8tdsssrLqpnPlih bb~cdfhhjnihoc_XkQJB:2,&q#"! _ !"\"u""$ &*P,-?-~-a.#./.-M*(G' &]') +8,.P1|7e>EwKQuV[b*gmwpzrrprpnjde_KWP&HC>;u751/-,++v+,+*)v(()))((c')m+/3h8]=3CJcR#Z`fj5ngprrryqq.plonxmlkihcddfhjkpm>ljad_XIPH`?7/)$X"Q O . G !"":"w"$='$*,,,p,,-{..o-+)''&')*+."17>'E@KQVP[ag.leo6q`qDqp4ndjyfaZyRKE@Z<9v62/-2,**+,-Q,++ +|,q,,+y*`)*o, /Y2/6>:>@ FlNV]#c+gFknpq%q oo5nEmlkxjji=heeg i[knoq$p=mgaYQH^?a7,.(#"B!!!!"C"#[###$ %J'*+++++,1, *)R'&N&%&')+-17=EKvQ3V[ag'lnppqapnIjgb]9V@OHB>;d841C-,?*+,.8/g/p.v--./K.-+\)*?+3-/25;AHPW^5bhk[noBocn m8ljihhgg#ff g hknqqru/t4qjd\9S#IA?7}.($ "";#N#$%%(%%%|%>$%'O)8*m**}**))?'&$$#o#J#C$&$&'*.4e:B HNTxY``f3knzppqipUolejea6ZSMGFB(>b;N72.,U*+-9/600/..//.,*T(T'(\*!+#-c/4:#AIQcX!]lc g&k&lulkfjiYgffvfReedeg i[lpstwxvuslf]TJn@8{/*%%$&(")f))*K*V*)X(q(>(*++b+*)('&i$"!! !@!#$^'v*0j6>EL QW_ePkn pspqKpomlBieC_YSM6GCl?;Q61.,-Y.011T/../1/#-++(U%%8%&&X&(L).3;CKRXk^cWh0j&jihgf[eeeddcNbef hkosWuxPw>tfmhg=^TJ@8/*&o&&)r+-../k//M.D,++=+,i,+*)('a%#", x| #&,2:AHOV^9djEmo}opponwmkid`Z,SMID?;151//90#122 0....,*b'f$##K##}$v%).6>FN TQZ`QehihLgfewdd5ccb a-d/dgj,n.qtTw#urke]PSI@L8D/+'(),0024f46967 54U2|1#01F1j0N.m-0+*{('8%}#w! h !%"$'-`3;defyi_mOq2svntqj{dN\RI ?7/+(*,048:1;<=>)>=7-53H10._,+r)'%###5$%(+1978>EYL3S4Y`Jdhjmknkul~mll kkxjifb^MXT/OK]FAx<87466653X1)05/.-'*(%$####$M(;-14=1:865+321@.,***g,-039 >ExKQX];bf&i\j@j\ijkkk)kjjziPhea{\YUQDLGB><:[9864010/.-*(_&l%j$$s#$k%?)<.85=IELVS%Zp`gklkhjihFfedca`e`e'fiKlpNrttrngD`XPVG>80Y-1+/3&8b=ADFJ2LNN6LJ/GFlF\FDLA?~=;:F9875e31M112447E:\?DDKQV[`dgjjkjijkl$lkkkjjihea^[FWSON:I D9@=;9\631|//.,*u(T&%w$o$#F$$).5=DL*S.Za2hkmWlkjFhfed`ba`ddfi*lpqsqm[e_QWO[F>80--1G5Y;!@EvHKjOeR|UTSPNM)MLKXHFDCIA@?u=:97929C:;>ATEJPV Z_bfiljmll:lmnKn$n mm]llkiRf c`]%XwSMMHzC?;841X.-2,Y+>)(Z&%J$A#"!"_#X',4y;CKRZa;h+kmHkkj$hSfUdcbaaac3cdehlGoqspOkd,]VENHF2>>70.9-27k=DIOM4PbU/Y\4\+ZWUUSSSR6OMLJIHGsDB@@@B*CEhGLPUZ6]adhknnnnoap#poobo9onon'lCiagday\W;Q"KYE?:w5;1.-$*('&%$##""\!> kS !%T*2J9BJ QY`gkImkkbihedJcjb_b&a_`c~gk5o$pqnib.[TLE=\7/04--27>EJOOS3X]`a0`3]:ZYfYHYHWUSRQuPPzOkMWK-II[I^JKCM2OoSW-[X^asd[gdk-nop,p~pq~qqzppCp?p=p-plomkZigtdT_LZSMG[@:T4(/x*(]&&%#"!!T! ?G#(08~AIyQZ`hksmkk\igecabab?b\c]a e;imolplg_YgRK*C;5/- -827q>7DK&PRU[=`KdeePb`_3_^]\ZdY*XWXWW]UT!RRnRSTGUW[0^b+dfhzjmpRqqqqr rSqq ppppq8pomljgb]WQJC<50+(& $"!< E #)129AJS[bzi}lml8kjg[dbbab{cZXLZo^mc=gl}mnk2:hC?L5T]dAkmo ml|jdfcaN``bcjUX8\b*2:CjLjU/^dknp nm)j/ev`^]]_aLQoW^dhiBjhkhUc{\ZVQ*JD>d94V226:J?DJOTYk]gadffxgg/gghii hh-hhJiejlmoBprrrspsLrqqsqNqq`qrtuzwxxxx)wzw-vvv7ut{srqpInNjfb@^ZKU*OHB=8T4L0,z(%#!! I#(0(7@yIaRI[Ybimomzlid_\\{\X^f`EKS [!agPijhc]uXKRLF@wIvtsr}qpWnkOgc`],XSMF@;73/*&a$+""a! E!%,3EMW^e+gjgd^YT+N H B;>=:,9h9Z<@aEKQ:V[_aeIg^hi@ii~iFidj-jk"jjkFkmmoprst,tu tTsBqonmmmumnoqnsvxyy xxxOxpx=w3ut&rqpon9khebc@`{\WR KER?;|72,(I%$#"a s s#*212:>C L0U]eqim lwlKh`be\DXNWVX^Z]7?HlRUZbreiMge{_[OUOxIsC?;;l;n>BHNTZ{^be&hik7kgkk@jjk=llZl_ldlmo"pqrrs0rrqpmlk jk*k5kl m{orEuvwwyw1vwTwwvusrPq%ptonljphfdb]PXQgJD@;~5R/*~'%V$:"!&c 8#%)0:BLU]eaiemlYkf`Y2TiRQMRT~1d9C;MW_d h_gf@a.\VPJDA ==Y=_@E KOQ^W]bfgj`km)m{mmYllqlmnnn nuo]prrsLsrqqoim=jhggDhhiqikRmpsouOvcvVvcvwxPxxvtsRrSqq\po4mlk|j+hqd$^WPJpE?@ 9&2,)I&$X"l g =#)1":CLV^oeizmkjgdg\UHOMK(LGM,C5A>IS\blgggab^"WQL FB<>>>BG MTZL`eiFjln0o}ppupIoop(ppppkpvqr rs srlqpo=ljggeddefRgh7il#o)qsu'uuvwyyywutYssrrKq\p0o$o n,lhc\UNI C;4i.)%#! gb!M$+^37= FNX`Eg5jm;kIhJ`XPgIFCUCEE'0;vGwPPYa{hjmjjf]TL3D@S;;<#-s8CNjY`Cg5ijKfXaZ8SMGDAABFPKS/Y_fNjoqrstuv(vvwNwwwwv[uuXttSs7r pp,nlifOcaabc(ce5fFhIkn!prZstuvJwxLxwvuts=r3qqlqiqBpopNonkf7_]YRLKD<]4-)d%:# f #'.6@eIRR[bijmidZMPG?H94X33)4@\KV_)fikhHc\[qTzN/GD@ABF|LKTI[tah1lqBsuvbwrx xxyzzlz6yy(xwwOvtuTsqp9omkhda__`Rabd eEgCjmoqRrstuv+vw!vBus;qCoo-oKocoNnmn|nmi?d^XQKC;h4%-)`%x#f  3!%)18BRK.S]9d iklh*asVLC:3R,+q*%1#{47,%#"3!-p8DQ,[drhlj^f]lUN+FA=R=CKS[ci ouslvw{xyyzzzz~yxSvuctMsrq_onmm:ljZh*edd@e3eggikTmpyrst#ttuu5unuts6qbolkmjkkk2kIkHkkifck]XPIkA:3-)%" M 7 d#y&_,\3;DM]V^Rf]jinkdg^~TG<2'x%x01&Q D  O:'3>ImTs\/cece`2YQGJTD><9X;c>xETLS[Cb5iWnsvlx\xy\yuyxwuMspmkiVhfffggi"ijkQlnnpkr#s5stiuwny yyxxxxxwvts`rpomm,msmnoFoUonnkDh.b}\TKB:c3n,(F" :j %E*3E;DM_U^+diij2c[+NwB7;,![[%6#.69CNW5_bld}`u[!SLLGOA>:;=CJQX_fl3q|tAvuvwHwwTvuJrpljgxdba``Ya9bgdEegifknVpsDtuvjwxyz@yyxxy%xwvuu sr]qXpoto+op)pqPqoqqolyic\TKB:*3:,k'"m : "'?-69>KFOWO_ch g(e^GTHh==2]'Y ( 2)W3=IRe[u_ca]UOIC?;;Lml3ieb_\YVTRSUvY\_ch-lp&s:tuv?wwx xwwKwxgy6yAGSLSZZK`$eHgijjj,ihzh?gea^[lXXUReP"MMNRVZ_e_jnrtv(vwwx)wwhw5wxxy^yywwvvvv_uuuv^www,v^sq l{gaoZRZJ[B+92M+`'"! P#&-4a?D,H/MSSX]`b}bcNc bbaL``^[XUR|OLJGGeGK>NT:Y`f%kortourvwDwww;wwxly]yypxxwwwww"vwSxxxwvIspkYf{_YQ+ICA981+($#%"V%*1t8E?GOBV[`7__TYQ9E;1f&] u/_ g&A0:EO@W[_^Y\XS,MPGlB>==@CGL3PUX[ [}\B\ [ZZvwxyyy6xxxxxxyyzEzozpxvrnid^WuOG?p71}+(%$j$(-4;C]KDR"X\\`^\TK?6 ,Z!Y: |XK|7 3 )3?5IIRX8]8]^ZVPKHF@>v<>`@CQEI1MP\RSTTTT SRRQ]OMJGoD@=;9P9 9Y_dhljnqCrsttuQv0wgxyyyvxxxxyy`yyzdz2ywu3plWfa[HTLD<51,*H'N'(.3,:>A>HYOTZ(\2^\WXSO ED:0'[ GA-5  @ "-8BMET@Z\^\YTONI5Cw?};;q;>c?BDG+IJKKKK2KIH>EPBu? ;8*42070 0C37#=XCKuRYB_idhko/qrstCuvcwyzWzyyZxxy=y]ybySyDyygy vstnuidC_XQIA3:40r,+%)+K-3t8?G]NT*W[\O]YSKH>4'*")h" C&0;VFNIUY\\[kVRnLGpB=;:{?|@B'CODDCC BB+@> ;*74-0-+)()7,0O6=EMT}[`&eiiZmLoqrstv|xyz|zyxxIx8x4wwv]uv"uuMro ie;`[TMF><8^3^1.^.H.n1~4:Z@6GN>SXY[[ZUTgLjAR7./%5 w$+  S)G3>HPUpZ\ \YVPKFA:=:::;;;~;<< 3*h"k5 B=4C $O.S90C~KcRwV[]]ZVPL7HhDA?>l;97l52/,S)'\&{%%$####S$%(a+N0h5GNU1Z7_a`1[XTRoPMJ?FC'@.=:7490Q,@(& $#W#"{"#$f%(0),/[38>DJOTpYH]bfhjlFn#o!pqrrrEpovmlwj[gdba `1^"ZUPJFDA@6=<;=@EJOSVZ^6avb4b_\V NE ;2N), 4 {vZ@;m/()er `"T,7 @}HOU\`b`N]ZAXWV RNJGfDA>M:51-z*V(&%% %&)-+.036]:K>CI]NS7W)[V_+c"f[iukammnoppp)nmljheb`p^][XWRMIFFDCB.@@ACGWL4PUBY9\-_za*ba`\WOF<3J*! G/ >UB ?#.8ZAJ8QAY__ddc`_~^\Z~VRKN4JGuD?:51.v,+#*~)*1+<-04I7 :<@DyIMRV{Y]1`Echehj2klRm6mnnnemljYhfxcM` ][ZUXTPL|IG.F[EkEcDEGJQMRwWj[_ma=bbc1a3_UYRXH>'47+"  U 6>w 4 +C%n/X9CZKTZakdfedc b0`E]Y|U]QYN;JFBX=S9p6r5S4(33!3p46W8<)>ADHKOTW[2]`kbdfhsijkhllmmmlbkOihebv_5\ZY`WjTQLNk5 ,W# E(  dT6 y&1:=<<<=7=?BDG9ILqORVZO]~`1aceefghijjkbklm lkjhgSda^\zZYwWTQOMLfLLMNQ SW}[^7/?'"CB=s ^((B:Dvk#\ re!)191>CGKmOJSXu\_acPdfilinoOoZnoopqPqoumkvji@hggofdcZbbdbbbccdfSh ikYllnkk+jjwjklqllkk=jihfeb`^_\ Y_VS~P KlF@-9`1*i#k 2Jx*OY2N@3E\nU X%i :*&.!4:(=@CGMiSbX8[]_Raehl}n=onnnoo&nkqhecb`^][UR(8+ M?#O)/4V7o9=KBVHNT'WZT\`ddGh,jkkllmMlLj}fcg_\ZxXUSPNxMzLMOMNO#PyR"TWZ]J^__5^^n^_a5bEbaaaUaA`%^z[gX/TQGNlLIGB>'7I/(!lN` t-e  >z%~?B72031- 4W  `d%*.13|7<.BhHQMPSWZM]`axabc-cba]^YUROM'JaG.DsA@?@H@ABCEDH+KvNR$TUGUBU4UUVWKXYYXWW!VUROiKHaECiA?a<72 +7$ ~%8uo*-(/55+$AaT7 u:#',* -W1w6;@EIMcPTVFWFW6WX@YXXVS~P,LItFC@=N:L7v5455H6W68:P=lADHdJLLILLMNOPGONfMmLPK~IGDA~>;96420 -0+**$*R+b+-/O2c59==?A$AwAB BCDOD&C`A@?>=k;9B7420'-+) $P . I`x_t2nOFHe" 3@ 7*R<[ u =!%8(k+/4B8<>??????=:8g5r2/,)&#!.!("&)-T03B555667S777 544 321M/,)'0$ QT : +P8om0[3T35Fh&%":2 M b yF"9$(e,1/2t4;4y444|3I1.,{)&$!4NMcvb@!W$&()L))*x++++*)o((( ' $"#U8c } 9oz@O2 MM4DoL:EUk|yd  ish)XJ rCB #%'B'(:((' %#z!D*@hA , | h  9z] f$ S 0;<!7 z 7 $lM-_ eTJSZevu]  I m r|/,R:xZ .  qG ub=fZP(Ff V_ _9Vponoe]ggRhqgZ^?j) C v},1 { 5+1w54dq 5 ?  ` z F N y8I~?1ll`baO="!  m{vs3M&+cj  P B8+{FaQ\s/ S.k4@bgw#]( jxggZ1! }jjt'I9H|'8mVjKYQp O`[E|virz@!)-Bz{ !=bU1Kku?kR:CSpU3?_~hS0*7*Yo{R$ A8+ P /qK]VR^fp|vikjtN<%/e}wn;bxtQ.  ;<?oU # *D~k9p(' $CpoT8%" )<1!UW%>1$] Rb`8F (\zw}kK/ " )4! ">5,+@D"M 07#Q[FBC-   &+.*-# * ]7R]D$e3(* 4`zQ.  *% 3IG3)!$)*0=27V|$UjvbH& ]/ '"  2L_mzh?,  ` *LYKpkYW[s 4!"!7 ;B/6Aj " { B  & y  3 ! p  R i@X;GeF6_fDf4p S   {d_?** k| {#&((&g%$M"!> QMf&: z c . E (   % U `  L e n s  I }Ni^2k#< ?J!! aIn_^3;]&  " %X(***(%'2&$c"!W s^yAq .  p ] T t  $ 2 < [ 7 ' 5 - * - 7 M S } 0 gX^(cx~a."[uY xZca~#X<dz!$ %b%'()I(&%$/#5!V;Ue4;[, m r n H (   - \  ' g x G   - ( ! P D0zwmH(( (SJ#q g#%'0'c(4('c%$c"! >1m!P F Z X G [ a b Y Q P \ g } % V x m P  } a D 4 - A K' (? i08abfV27o'ilN;9UmW/ !f"j#E###7"! l<.!^ "  &   ( < O N D %   ( : M t ~ K 2 ; a { n P B > 8 /  !XGK  k @pIi$D8w2R9X/_8UDJft3zG X & ) C{}6Y)=b $,! !e - e x M o $\~` E + V<b]`0_F"\dy ]  (`8o W f L J N 3G2?xB01io wfE0  U f, t t 1  Z![j@tUW-^ P[o A cl*h:^  V'l= OQaE8#,{8Ymn5UnT-Cd ^ (HD s l  t|%*z(u+>uYb5 B G C t  - f   R Cfx*k[3 ` *\4Lk\wCZ =    v $ B  O i = 0 Ak&' S   ` v  I x l )7y*q$6wFy2w61e*pv WkE)e ? +  ~  . S u " x/ 2   B 1  ! 4 n A X 8=E|EI k(#~Yq8#7\ Fj{~{zZ __;{ " k , O l X T    + #{BCb6&f[pbS<uh|@tyaqsM uw*GK941'+5WpXxh/wN3 @ D   |  j } b : ) 6 n Z D / I i k6kT6XxYD Q(gVnu}s=]q`Y~1pg _#An`!w~ApYw%AX w   m U aG<dF T/jjejk 3;n` J%.*('_> h n W;zL I,- ):)"gZ:j&8m:L f p =lw#`;p^r'""5WDf | > h 0 6 n kafSRAMc, { : ?e;L~(n0'Dx_C:=b(v^+ I* Li0r d%<otJB> J4hLpPih8Uu6^L \  zP$\9}'u `KiKc'*EMb?%OavY G+7- <1_\qR 3 ,cKK;"& )-e04%6W8s9?99}98766l7 789:;Q;O;E:a9c7531/v-}+* (T&$" a   RZPP@@ "f"zVMhwJEtr g R"{-P1!%l)-U1p5:!=ACEEFED$BA@@{A ABhCKCDvDXD:CSBN@><:8754)2105.-W+)'%$#"!95 2 -<}qA\xi? ch# ,fg63uC"0 ?AHL #($&'*(`*-05#9>yBG]JN3OQBQPONvM@KK.JKbKLM^MMMMeLKJH_FDCKA@?S>V=P\\\n[tZYXdWWyXXY&YsYUY3XXWVUTRsQONoMKJI4HFFEUD-B@>;952/Q+(,$ C B*2$HK8+1Kq]B C$y)-(1L47:;<=>@>CFJ N RUY/\_bdPeffEee1ADFHIJkKM5ORUYM\_c%filn9oop=oo'n#lkkkkkk'jj,iiiShgfeeBdd5cfbaf`^]\[ZYjWVHSQ[MID?:570/+y&!dC 17H@=K?/5E[cBv 8{!(.]4:A/FLJNQ!S TUVWXZ\_zadvgjm5prtKuuuu'tos8qpooo8nngmmmm*m llPkjjiiiiiRhhp83.*%  qT{fFN-DBg>rjP $+2*8@/GMSWZ]` abc)cwd3eg)ijlnpsruwxyyyyx[w utmsQrr/qq"puooosoWongmmlmMmnn{nnnnxn mlkhfca.^I[X/T+NI C=[8Y3/B)#q E ysn s R?* QD 4 pc # )P/g6noqJrt uw(xyrzyyy:xwvuetNssFrrTqppcp7poo+nPmmn1noOopxpq,qwqpqpomkgdbF`,][VRkMGB>9m4L.^("Ka P Lh x IP9 "13wXP +Hxw"(s-4:@wG!N7U\HbhfjmpyrsDs8srrLrs82i,A&a!)u "`I\h+CS' $,N f HlE" %r).4s9?DbJ4PtV]QbgkBnqs5t ttgtssDsVst#tYttu7vw$x^y2yyyyyyMxxx wwww5vhuu'tt;srrqqr)rqrssOssssFs$rr&pomk)hgewca_#\Y)UR6MHB=7M1,P&M | HA 9weVl/.B \FG&QaJ d$j(4,H0@5 :@5EIN|SY^dp*nmIk]ihgfe%cTa7_]T[?WSNMHBU=#71*|$`T[ { "${=9Zcc"&*/!37k;AFtKiO}SW9[_cgNil[moSop|pdpQoo8nnmmmn/opqrtvLwxhxy9yzyyyyyyyz{'{U{s{8{zzyDxvv uytt7srr q p@o{nnm]lVkih}ggggrfte,cc bPa_[\7W7RALHB<5/U)3#Z HB& 9d !"R"#-$i%),x05"9=BGMRIVZ+]`\cZf?h`jklllllikkejihhAhgh?hj%kmvo?q's:tv\w#wxOxxy/yZyFyxz{{|7||||3{{ yxDwvtsrqHonVmkkj81*3#uSD M7$I4q5~66r6689=AA]FcJOOT:Y7^?bofvhkUlll4kjjhOf cqa,_^][ZRY X7WsWVWWXZ\^`cPehkymoqs]tvwxyzTz{| |`{{yz4xw*uEs)qGoDmjh^f ca`M_^^]^5^}^{__aEbdf*ghjOkm;nnnlk=hd`s\ VuPJ B;3+#| @z/e??@Z@@@ACGWKdP9TmX]b/fvilnponlk hfcU_\\Y\WEUOSRhQAP'ONNNqO6PMR)SUWZ]-`McfiloFqtmvx}yz{{{|{Tz4xus,pmkhf#cK`^[rYXzX%WWWXYPZ\^^o`?aczefhk%mnoYooLnmjgMc^ZiTPMEX=e5 ,$nv. k4)xIJKKCKZKLMQUxY]afojtmp=rst4rwpm:jffb]Y!UQENKJ1HGFFfEEEFGIKQMZO\QTX\`/cg@jnqtwfy z\z{j{u{zy vPswpliRf b_\rY}WTfRQPQPPQRT$V.X[s]_aFbdgDjCmo5pTqtqrrqpmk/g0c^X^OG>N5N,u#oq 2+"%ScT0TXTeTYTTVZ]7`d.gkTn\prZt#tspnGjDfgay\VQtM2HEB@?}? >>u>,>2>>@AC{EWGIiKOTX]DaTeimquwyz<{{{Jzxyu.qmyi=d`]YURwPMKJJiIJwKLMP RUXfZi\&]_bjeilnpvqsswsyqoljf;aY/PGI>E59+#1t `:)97\]P]P]2\\]X^ad+filoqst3ut rokgb\UOJIE@=E98}7C7377666785:;=,>@BG KQV[`e~josvyKy{{ {bzxMt~p}kZfQa>\fWSCOZKIFyE8DODYDDHDEFHKNQmSUWY\aeiloqtIuvuurq9mi}b6Z PMG@=4q+#!+ ] b-Pb6bbbbbc?dfhvjEl{npdqbrvr9qomie`[v>>>k>>?W?ACF}HJLOSQU,Y^chl(oArmtUv/vvuhttqqnVh `WO5FW=u4t*"64 2 fggghh%hjWklmopqApponKk.hc_{ZT6MHB=H84'1 .i---m----k,-#-/%/01B248>:E@B_DPFIfM?QWf\bsgl pru\vwwwttrm_g^VNFj=4+# cxhiij.jk1lEmnop qq&pnmkhd`\QWgQL6FAQ<730-+y+*+I+++++I+S+,,-[-~.04!9N@G+MTGZah@o{txy{,{ {ywgrl4d]SUNHA689;<~>AbEJIO!TZ`ejmqsuvuw uTsojc\UNGR>6.("b B 2ikllmKnboqqrvrsrr=pmkh[d;_ZUgOIDf?j:f652.+)(5((N)>**q**,)))*0**)*+/-4;Bk=)84e0-+)''&&'x(*&*+**5)))))@())f,y07e=DKRZbsjpu6vxxyrwup4iarY>PHA9F3=-n*())*+,7,-9-R-~..//014!7;@EKEQV\afimps8strokgwbs^$XRL3E?94n.w(D!!Jik.lxm`njoqnr|rss5rpmiFef`YS'M&GM@:62z.+)(E&|%$%U&e(<* +$++C**)))l('''v)-39@GNV^g>murtwwgxwAupFjFaYQGIAl9P2,)'(()*+ +S+)****++`+-A//26;k@ E[JPV[`eKj+nqs!tVsHr5o^lQhueWaR\VQ%KmF@@:3,o&% hjkklimo pXq:qxr=qpmje`[TJMF@:40m-*('R&%%$%j&(*,H,,R+**+**((D'),2{7>ELDTJQX_JekDpCs!uvww~wovvtromi?d^|WQLe#eghjOklkmJmfnlwidU_GXpQ(I(An:e38-(&p$-##M#$& &J&V&y'), ...(-1--./~/-v+**+-$03'8u9s42?//N/$/0//S.F-],Z+I*X)m((d((*5+U-u/g37&=-CdJQX_ekos:tvwqwwDw@vStrpmSid[^YGTtdevfh0ikkllmvkhc/]VOQG/?81i,.'%##/"#$%%%%~&(+g-e----b.2/R/.,+,*E)*+-/37=DL2S7Yaglptv|x(w8vrVnh~aYQ~IB=852@00F0100//.7,+*`)(((4(()*-t06l<1CWJdQYg`Rg0l1ps:vw wwwwvtsupn%jef`\eDefhVj jkvllm7jgbB\UME>-7g0>+?'#%u#y#"#l$<$$$$h%'*m,`-->- -.U/=/.,7*}))%)*G+,/28M>F3M$T[>ahxmqrQtvvous'pkQev]UN6GuBY=69r5[31t1T100X//.-,8*))C((r(8'(>(`*j-27=DTKSkZbWhm6pl?lnmmAie_[XQI.A)982+'$#"Q"+"L##$D$+$$*%k'*+,@,--./D.-,*))<)j)5)a)*,27?EL4S=ZWagmprrrqtppm7i{c[T#MGB>:f631///....,+E*"))c((('B&&M')f-V16Z;BWI_Q7Yz`uf`j8nq.sGsssXrqupHon6mkaih&g ghjlmntponWieJ^VW1NF>6I/)H%""s!_!h!"#A###$%Z')*+C+,-----_,n+0*4))))q)f)*,17i>ODK+RY`5f*koqbqAqpaomj,d^VfO4IED'@5;730...G.c...T-K+**1*)w('&%&(+D.027=YCKTd[bNfknqrNrqq&on~m`ll)jihghjMlunp pr~qpje^1VaMD<4)-'$"|":!!"e#*#$)$,$S$%')^*E*n**+v++**)Q(())>()))?+1-27>EKR]Y_ekGnLppjponljae_XQKF A=H9a41//.{-..f..m-,(**f*8)('U&E%:%&g(*.y27>FNVb]8bEgko2pqOpBocmldk4jj3i$h(gehikmp0rrutCqlf}^VJLC;2,'$"""#C#$@$$$$%%'W()g)))))),(i'&&&' 'K''t'*,P06F=-CJmPW_^QdUjImoooonm*kpgMbf[ULNHC?A;16r2/W----.<.4-G+*d)))+'&F$#f#P#%d&)Y,1f7Q?dGPWa]&c9gl5n!o6nm6kjhhh_gxfeiiknprsv.uRrllf^VMLC;92m,Y'D%$$%,&F&'Z'''''(3()*$*3))`((u''&%X$$$%E%1%&)+=/5<:BIPMV]cim,ooonnmlxie_HYSMHFCF>951/|-...4-,+))*((4&$#C!!b!k"#*%6'U,B1:BbJRLX_,d,ixkmQl4kxjhgngffedDhik@mpRrt3vurl(fk^qUL B:M1+'&$&'u);*L*++,?,++^+*+$**6)(9'z&%$$0##w#[##$v%(#*G.4 ;?B IOV]ci^llnooonnmmjgc/^YSTMH4CE>9g41/F...--~,Z*)((3'g%$'"h S !#v( -5=FMT[agjkjihg;f/eedcchvhj"lGnqmru?tqjId\T"JAW910+@'&&I(*O,.w/{01222r1T0C/g/0.-q+*)(('%&7%H$$}$$& 'n*K,1j6=DKRY?_eilTnPnonnlmm>kif4b]YSNUI"C>:6Z31q// .,*))(V'&%$"!R V .!G"&,J4N<5DnL*SZ.`fgikuj[ihgXf;eedcbhVhiikLmp?qsro$h(bWZR&H?8/*''{'*-- 0K2h357S9 9o9!7544(3~1/-,++*4)6''&y&'(*-16;BI.OV\b{fjlmmummmmt7.*t'u(),0$36E85:=?@x@q>=,;;A:86\4m3100.-e,H+,",.048o=CJUPsV,\aei-lmnmLmmmmmmCl7ki,gfdad]7Y"TOK)F7A=596W31?i<:97654B2g1;012I47;#?EDJQUW$\a-e2i#knoo4nmnOnnn}mlk?jGhnf!b_D[ VQLGB=952I/j,I*((|'&%%$8##B""!"#( -X5ha+[TLqDq<5.c*(+f-16:a=@FCGK`MMKJI(HH4FD7B@B>='B2FLKQW\`ehdkn.pqaqooopVpopQSTKRQAOOOMKLIG+EDCSA?>>?!?BDuHnLQWm\adYgjnp.r"rrqqqqqq|qpooo%mk=ieqai[V?OIC<61\-k)'P%n$##x#"""!!r !"&,3;aCKS[bRilun>mAm_lGjdh>ff:ejeYe]`5`gbveKhkYl?m^jte^X0QJC;5.+*M-05;@_DqHAMQVYYXGWUUUSQOMLKJsI'G^F=EFnGIK2NRWs\adgiloqsJssssasrrorUr;qqqqpml hd_AYSL^Eq>[8 1-)L&$#""!!!!!!(  !&+;3:C=KT!\LbijlnQmCm_l+igeeeeve\]7_c*fj jkhc\OVPjIpB(;5 .P+t*V-1*6NPRVY^bfi[kloqstuutjsssLs:srrrrrrApo|liPc^YWPIB);?4/x*'%U$"i! !!V!f Bw c!&+t3{;4CLU1]cjgmWnmml5ige]e$defXY\`e"hijgbaZUJOZHA:4.C+*."172``'`_^]([ZXXWVjUUyUlV5VXZT];`dghWkMmynoq-s4tv:vFutt1sssssRrrsassGrqqo9lmgb\82.*(I%"!X! !+  "G&,4hDInNSX^Faddeef|fffesd[c+b$aa agbctdeghhj:lnpqrusstquwvowTwwwFvv uuutt1tt9tJt#sjrq_olhb^&X[R(KFD[=72.+N'\$"3!x!!0  !&p+3;D|MuV^eKlnpYnnWlh2dhb bbcetINT[apfigiBf`YSNLHA;?6$0/'.2S5;4@[EKqPUZ8_Abe:fgoh#hhiniPhgfeee|f`h i[jl>mnoq4rHssQssstBuvwwxEx9ww vv^vuu?ttt]t6ss/qpli:d`[VOHBJ;6m1.)%"! !7  .!%)19=BJS\|cqj~mon\nkg8b`X`H`8acC>IHPIXX_dgi0f}aZUROIOBz9h4/*%#"B"!r :""%,4=ENW_=fjmllXhc_]ZJYXZS\6{>@FPY`dhJfc]XtRdLE>:05548;B+HNrUZm^b*f&hjklllzllmmll=ll;y7966 9p=DJ?PW]bdhklmxnhn}nmmnMngn%mmmnoqqrrMrSrrQqpso9nnTnno7odpI5R\ agg.f`[TNH2Aq<8X77 :>EL%RZ:`dgkm noUp:pcp#oop:pHooNnoopq(qqqq_q=ponmdllm%mn9n{oBpretuGPOY `sgljPljg`XQ>KHDEF'+0:FP1Z`vfggb]fVOOIqB=998y;@GNdU6\bgj|moJpq{rPrrrrrrrqq$pq=qhqnq=ppppIo+mljkdk@kUllmAmnp:rstuuuvKvwvvut.rqJpzooop1pGp:|99Kml jijjek7klpmn_p2r'stucuvAvjvvutVsqoonmmemn6nRnQnnnak fi_WYQJCO;3,(*$`"! {t 6!$)M08~AJRR[lbZhj_lGhvbYPG?:g533L)@4I?JU]ehjfaYR^KDC?R; :9=sBJiQ|X_ekGnqgrttubuv\vwBw"vv*ujtssr7q7p o"nnimljhgh&hijikkf`FULnCZ:93-+*%x0< GFR[dohkBh-cu[ SLgD?;:899tu^uv1vw_wwwvuAtZsrqpko*n0mm-ll1jthggh,iLj jkmo q@s tu uSuuubttOs&qoljijj1jjjpkjjgd%^;XQJwB:4/-)&]$"w!!H"$(-5=F.NVl_dijj"d>\~QlG>_4-4&{$R"!-8FCOYgbg9ki[e\TM\E@;:98R;@HPDX(_ekorsuuvWvwbwx8ww#utsrqpio+nmHll}lKkjhghDhijHk'lmoqstru/u^uuutt/rq nkihiii`iij9iig c^/XQJIB;4.q*&%""!$ %*08@IyQYafk_jViaXLB99.&m&{)148?KU_djYie]VBNWFA ;897d:>FdMV]cjnr sKtuNv vw2w[wwvt{rq}p_oinm l3kkllkjjijkkklmoBqpsetuuuv%v(uutHrpnrkiii5i*iij?jjcj4gd_ YLRJC;N4.*&y$^"!!$',3rnDo_p+p`ppprbt=uvuv=vw vv5tsrqxomHkLijjikGkklkkj(gXa[T]LD/;4. )$"p !9!e$(0O8 HSe[3bdeh_YQJE>:79@;AH6OWX^lejorst43l(u7r( kp)3#=VHYQZv^b|`T\UOIC?;:Z:?zD,K"RYM`f>k]npqr qqq`pn7kMgd"a][YY`YZ[m]abdgjrm oqspst ttmu2v*vvvivwwwwYv+u ss.rqpppq4qrr-rbqkpsmFic]@TLC;4y-'#3! I"#);/8'?GPW_bfd%awXOVCP8.#" `NUB  $(-7BjL)U[`H_^XfSBMcGB=<;/>uAH#N?U+\Ibgilmn5mmll$jg+c>_\lYeW&TSoRTW[Y_$cfjn=prssst tu0uurucuvwxwvuuDuttMss\sasstotMsr@plib\SKCi;94,'#{"s!)#e& ,2:B:IRvY4_Ja\c`\=RH=i3)L .l8}#'1);=@ ELJ-PcW+]3bfeGhhiihg^fdbC^ZW~T|RSONMINPU-Yp^jcRglorsttu uLuuuutuvwx?x)w~vvvvvuu*uDuv vtuu)rplhb6[CSK+C1:3,i'#"!$|(.5H>,?BFK PV-[=^O`atbKaaQ__]7[#XTQN LJ IGHrIMR5W]Nbh loqstCuupuvuuvvwxgxx$wwwwvvdv#v`vw1wGv"trokQf`Y*Q6IyA92,U($$#'_+29@aHO:VaZ^^^XXcPE;1'Z kM] 4[&0:F#OlX\J`D_^}YU+O7IYD?>0=@B-EINySHVYZ:[ZZXYWUSPMJwGjEBC?BwA[B0ChG*KAQ V\bg.knbpr2st?tu?uAuTuvwxkxxxxxxkx%wxx>xxxAvtqmhc]oVNG ?J71,) %y%g&"*/6=9DRLRX[^]f[?SJ?B5g+! 7f< |C  )4a?IS@X^*__\XSMH?B D6G@JNAPQRR"RQ!P MKHEB?={;]:9;1? @BE*GHIIFI3H~GFFD@=:75^3,2S1^2_37); AG=NTZ`dhhko q rstau vwQxyjyyyFxxxxxxyxxw=vgsp}kga\nVO1G?93X0,|+_*7,/5;vB/IHOUX[[\W|PF9@A2AA&@??><9630.,+*+O,a/39@5GNU[0`1e\icm^orEsrtuXvwy&yyy,xxxwwevuutsrol fb#\WQJCW<#62w0./.n/ 26<{BrHOUYMZx\ZKXRI>4+" B(s j!1*5@IQW'\^u_\YSNID:@I=;::?9b9 94999866j55 3>1 ./+P(&%$%&H)|,29 @HBOzVB\afkqnqsetuvwxyy xdww.vvYuCsrtq`ponxkga\WRWLGE?4951w00249=EBI{OVZY\l[\XTL B+7-%-N 9QdnM#-v8 B(KjQXt[^]\WSaNIEAs>66 5X4T20/..p-,*(F&#$~$#p$8$'*t/5=DKRX_dFilm.prtu7v5vwww\vuttgs>qvo`mlfkjqhd`|[V?QNL+FA"<9z7s5/331t/-j+<)7''&&q%$#*"0""# #&\(-3/:OA|HOpU[a{g"kuorstuvAvvxutsrEqHomnjhgfePc(^YSNIENA<9 5z44>7:T?C+GL%Q4Wd[_<^^[6XPHo=3a)  T 0$3K UaO(N2=qFN^SZK]`_[\WTJPMIE\A@=;A8w5360-+ (V&^${#####Y#U$$&'*;,05;BkHNTqZ[_e~in6prsYtu%uttrzqocnlIig"ecb`^ZYSMHDAB>j;86738=AnFbJoNgRWr\e_ `^]XSgJ@6\,$ ?H8;,i[ 8x  *5?HoNV[`aa\YV$SPLGCw?(9*~,e.04x8>CINT Y^d+hlo0q7qsBssrqpFnlkifda`?_2\YT`NI DA><:98:=BGLQZUZ4]aab@_b\VN:C9r/`%d l14k9?B  5 ",7D@HIOU\`b`^7ZYoWTPfKG`C@=|951.+)6'&}&Z&'Z(+.1h36'8X;a>C}HMR.Vn[_d$gkmopqqrq p1nmJkj8h$ePb[`^Z] ZVQLHBDB@?>> >AoDI\MRAVZ^o`Za``r\WO{F0;h1(o<| UJ Ap> jW,$#es\#.8/AqIPX^.cAd#c`_i]q[iXSO9JGC@.;73g0.,+++b,v.1 4/7:h==\=> ?@2B}EH JMOsQTWZ]_acegGhjkmmnno/nn3lkihHeb~_J\[YWTQNMKKKRL LNQU$X[^`[aE`L_][WEQfH->4+#F I&QeoLYt? )(c38>OHOV\cg@jjig4ecjaC^e[TWT!PMQJHjG{FGHdc4a`^[XVGTS0S RTUXe[^s`_h^\[hXVRL,C:2q+$[ Drr.^{`'0Y<[ K.",7AUIOoUZaf"iai:hfff ca`#^]\]]|]^H\ZW(TQiNID<:3+% f_ KF\  ;GkVW6fe N,#3+5-==DHMR}W[_a`bc&d ef_grh6h{hhhhijlwmnnnnmmUm9m!llkiihhvhggghijlm mhmm2llllmmllJkj3hfdcAa`^]\xZY[VSOLID>e7C/(5"m tR,(@H@Nw) 2 S!)2 9?DGL[PUY]_abdgixkmnnoopvqlqqpoNmlkjihfeLd$cjc]c!c8c%cdfMginjkLkk>jjjkCklellol*kDjJhgjeucF`][RXV?SPMI.D?H91*$h\? PU6 QiK~NA8KarVNO s '+.s49=i@D6HMSXWwZv\E^lad7gjlmmnooo nl igved+ba _0]U[fZ5YbYtYpYZ-[\a^R`fb@cddddAd)d>defgIgFgJffdc.`]YV3ROM JH D?:3y,&Q @  3%Nn{RK;;EZS#C9 v#)/37#:!=BbHMRFUX[^behijFkl;lkjgd`^^\-YWTRPPON"NLNgOOsPQT&VY[ \ \\X\F\]$^U_aaaaaD`_]YvUsQ MIGSDB>:u4O."'! V0L5DI@=:;4*=Y ? V20%E*-03x6;Z@F_C'GMKMNNQsS@TpTVVWVUROLIGDZA>^;87v6K6c67J78:U;58T53q0,,`'z"O] MsVzkPT(79&!^ Q C#&)-D1U5:??BEGjHDH7HINIIQH@EC@>E;95630.i,+++,x,.!/147:#;?@A7A@@@+?)>">@=F;9d74Z1/F,)'$"( ~mx > !#B%(s+F-/>0U01#1234q444h43f21]/-6*Q&# Q, j #A$r}WOw=iBS,-@e}$- E 2  <! C#2&)-u/12;3221/-b+(t%#m g7aSz!#N$y$%j%&'(n()(((E('%# GO+   FA9Q#tE-9KbtpZ  wxo| 8 lL!M#.$%l&O&l&%$@!y7 ] B   6>DHsd7|S , / W h}qI)S pRDMR]nnV :& kIggL{-Y " ;4 C U Y=@Pe s E^*^^=SropbXcgP  zgY7# :$~3GI 1  o&Lr  y3=<N7Ykh36 s  8 y A  =Eh9_KnXVZ~|\N@" pmadvp.VxoVF%Z wGJXSdW' zdq$q6xv^XGMoV2! sw &Db[)\t%|Y?gAFpus"Mqf$g' &tt`[Whz@ %,;gx0Yq{gS@]N\$cQ57Kop8$8Opub6 .u~wq}U& !;5 uWS`PlUTMS_mwwrfZO\@T`xvjgW^%aqN+ ! 89 JlO &2:68,+2geR' ~unw\ >A0  1&?dpQ0  -=4!IL+:Q6&d;KK) s-%8+ $?u yyuT3 "".9+ *3,1*K*0l>(/<GF-'e cHIP;     *00+.'!'   3j7F3Z?;?D@* %/Et  ^6   ()3EB0'  (70( 2CD7+,AWy9M[N<|T:69AD9  ":M^soM9  f )Nc,l}RT2wql[nt=D, W#)%%_# }W7 ,  $ f   ^ t  ] jDf@B\b,W*DH]S.Q   r`jD3Z1o3vxK+ /"#$%#x#U#"r!!!!!"#$#!: / < f W    ' ) ' 5 V C W q r y  U  G:T}{v C FI  qgD!mu!$%&%$$$$##p#{#/"#$## !y<. e W L n  0 C L T j |  6 A 0 - 3 ; Q [ @ ^BWdx; ~ ,)^x] xUf"oAN "#|#["#$c$##"X","!R $~D&- ` q = L #  & ^  6 a | ^ *  , 9 * !  >!|u_\xV%+ PL-]r{4 P# $%6$$$$ #"!! s je8Or393 ~ d ) D J H A A E Y p  * : X i t \ 5 f J : 3  pl 4 b}6fKhh`M8;y&dfE14\kpL* "S# "P! .3C G  PZw q k   5 B 1 '  / K \ g { Y ,  $ L v q U H F E <  , 9 L5_ < l,B#f ,L@5L4R: 1tW oA "3$c 5  %zbX#,<L\w N + r w K  & ~ X(U m c  , Uq$Mb3a"G \_|~"T9IfeaV V - a . x Z =-{n9uU] c?, C \  P k L p {ZO AvUU(XShp u  *|I7 P  2 7 ,.XB@F+1|kekhX9''M~ 2@|2XmM&GD ` 7 G X :   p  K uPcYz/CtWT= Q J c  } =   cz0LkC, 9] <-Qso]+ # y  }  I m ( _ Ix*2* T  c { # t   ~  r t {   mG b r$@>xK:Vr Nu#3,9:  6 j  \ e b = , X  - = 3   C *  = u A 5  O p C 3;l= 2M#2 W'@rK|is=r<av }]puL.g < C S  k ] [    % mvP2c-Y{8.2/]Me52}@v F0SYTA15Dn* <KV"BO F Q /  " " s ~ f ? / < r Z 6  ( g V xQ_/Jms5CX)*xaNeU' 5/Yzf1?quz{GF:vG    o V ^p;7rd2`[J1#YOfKFe:zM'EE9e*~J a/(D`Z>C;\BU\#T g r ?rx$aIU;0 ! o41}_#{ H q B s " } P d F  m 6^wo20[Eg3N )Wq>v`,J'@j6^14p,cjFCF t ="SI92u37D* h i '3P&XRM*d atf{Y7Hw-wkONv+l fN~{e/m@|M iuW&]  ! !^!w!!{!!!j! 'nsnU ' T\;#hto4!w5K8z{V)r7  U0t>LPR] !5h X h,$65Xi['\ G: 5X!#&')T*:+$+y+++i+.+ +Q++++++++++`**#)I'&k$Z"3NpH>t \WL D?(#U5VE 9M]I3[boU Z! 87[[  MHq!$(=+.14 6*7L8j88877666666{6S696/66 55P432q14/k-+,(&-#!6_, [: Vj\.dk^Oqv}@@h}OJv p oO=gF!X$w'+/37;+>~@BCXD CCBBAA(A&A;ADA@@d@)@???? >5=m2X358;?DXHLPWSEV2WYmYZYYY@XXYXAXYYZYDXXBWWWWWFVUU$T RQ&OiMJKHFEoD;BA?M<963J0 ,)%X!5Q> 7+7bR63c?608 9[Jw -#(",0C37C9v;K?BfDH_L OSVZ \_?abc8cccccQccchcd,dccbbbbbkaa-`_x^S\ZXxUSyQSONNMK`IuFrCT?k;7S2.e*&#wPT C Fb1w;% 8uP8AH`~&Z?Yn u /Z$).]3j8<@nCFGIJ*KpLO6Q{TdWmZ]`cfnijlblmmmmIllalFlwllllkk^kFkbkksk5jj1ihhg=eca_;]>[ZYXVUR`OKH0CQ=8v3s/,+D':"i^ #&@7F7E~l{|)b2Y^ u [#)/M49?DIALOQTUPVoWnXZT\^`@beLgjloYpr.rrrrr&qqpppzpMpooAnnnoonnnenmllEkigfweMd;ba_][1XURN`I&C,=840+'!C Tf-d}_?G @76]|4`  !'-4:@EL Q#UY\v^`b bcYde5f\gifk3mnprt\ulvEvbvv@vuuttsss\srrUqqqqqqq=qpppppkonnMmmRlPkhf`ca-^\XDSN2HC>950+-%:)7 t \H2 +8E*x 9p!"&,r2J8Y>kDJPV]Z_Cb^ehj jkkkLklmnoqrMs{tuvGvvvvbv@vuu5tt~tYtAtssMrr}rHrqqq*pqqqPqqq}qLqNqIqqpomk/h%ecWaN^[PW RNEID?:50)*f${> Q"3x=A+ $##3Yj.d  G%+1V76s ss+syssst\tuvwjwwwwwwwwwwwwwwNwvv1uuNttWsssssks]sYsKs3s rrrr8q+on lXjig[eVca6^\XU OJE&?:^4.f(""NZ orRt5#3DZ 1JVF4 Qe>@o#&+a0l6u#7N0*>$u3d:B 96Jb !B"4# $Q%')S,04!8oAF JNiSW]0aeh[jkl}l>l(kHjjhfdtbL`_K^7\[TYXWWWXY[2\_a1cfmiCl nprtvwxyz/zz{{&{Bzz{ykxIvtrpnlj6gecsa_^]]\z\c[\t]F_:a^cegikmnoo`omrkhe`\WQGJXC`;4,$ExB (I<>@ A&BCDFHKOSW[`Zdgk6lnhnmljhfc`]ZXVUzSRsQP!O^OiOvPNQ0RTRVxX[]^9adh{6z}ywvsqn`kifgc`^o[YXIWvVVFUVV W5X[]`'b\dg2ilxnPop-poo]mkMgc_ZmTFME>M6-%k{K oL 2BGIJKL]M.NPLRUY\`NdLgkMmppqvpnkifIb^ZVSQPN'L\JIhH'GGG/GWH7I JL\NPSV{Z3^&bRfAimtpsvkxyzz{P{{z xvtuqGn jgc`]ZX(U[STQPPP OPDPR4TGWPZC]_dadgkInpLq/rr$rqpmjfcE]XPH)?U6-$3C Rzrb PRST}UUVX[]`Zceiknofq qpnblEheaQ\WSOOiKHECBAc@}@&?@@/@AC[DG HKN^RXV[`#dXhlmpusvxz\z{$zzyxzuso(kfb\^sZWTVQNM KWJJ)J@JJuJLbNQTWZ+\n_bfj1m7npqTrrrpnkiKe`4XQ.H3?7-%Z zVZaY[\|] ]X]^`bdfhkmfo(pq5qq/oljf a\\VQLHhC@=`;:a:9W98889c:5;=`?U@C9EJ?OTY^chxmPqfux zz{*zzyx-uqmh/b]YdTQRMJH8FERDDxDnDD0DJEGKN5QRSVCX\`eoicl/npirsttspokhaZ+Q%H@07&-$W q9_a@b:bbccdoeghjkmtnoppYp!nYlChe``[UPQK2F6A=T: 7"5444d4333p34x57,89;>?BGMSYD^dfj ntw5yzq{Kzzywtfpxje^_iYT|O`K.FCA0@?%?>>>[>1>?@CsF;I4KNSPTX]bnfZiloqrstttNsr oTlg_`XPH@7.\%R!m d8dfWgogh1hikl`m0mo0p,pppo~n0khhdg`T[ U@O(ID?;N631J0b///@....A.p.002246;a@GgMT2Zz`glrvyz{{I{Gywsnhb[BTNI D~?<29'8$7}78=8t8;8 78:

iELSZb hBnruuvwhvv@ut3qoAjf_Y9QhIzA:<4/>,L)?(8'r(()*,0-{./:0B14E69<@CHNzTZb_/cgkSmxoRoooXo7nmll ji eb\WOH/@E8H1+ nopqr=rsjstIuuvuusr\olhZd ^3WPID)>m940-+O))((()w*+}+++****++.187>FNOV"^elptuvuutgsqwnjf8`%YRJB :3.k+<'&%a%%&'4(()u)**,.147:@ELRXq]bPfilmngn7nnn mAm lsk}hfsb]UVP0HA?:4nopfqqr4rssntHtut2s[q]o~l'hcr^XaQJjC>{9 40Y- *('U'7&&'P()++++a+****w*+.=39AI}QYa\hnrztuvuut%svq}o=k^gb5\UN F6>a8$2/2+*:(( ''''''S&&&'(+-(0r38>5DK)QLW[\~aeNikllmmmm llTkihd`[VOICe=noBop^pqRqqr8sssrMq-nl.h"c^yYRKuDs>#9$4'0E,6)c&%u$y$$1$%'6(**++,+ +**)g(h)z+F0f5=E|MV8]ekprtttt(swqoplhd/_RXRJC&<7?306.[,u+r*o)('&%$#"#I#%Y&*,16=rCJQ8W*\akfhk+kmmzmm ll_ljigdv`T[VxPKG/nnzno_op2p|ppq~qqUonkgc^wXRL1E>n843/,R(&^$#0"t""#{$&W()v*+++++5*U)n(*(*.3;B^JRZbhn:psPsttsqp;mzjg b]WPAIuC=:364210e/9-,=*j([&$l#""#$&)f-2%8C>eE:L"RX^cvgj'kmmmm:ll0kk jh'f@c+_[WS OXmXmmnfno9ogoqo}p*poUmkgc^YRLkEd>'72.*'$"! 6 !"1#%S''(*8+,,+*)(&'>(,507>FOW&_lekoqrtssrqomm~jfZ`[STNHC}?<,:>8F7643s1H.+(&L$S#""#$&*6. 39@}GNUQ[,a1eirkgmfmnKmmlRlkjihAf0c`]ZWllm5mnYnnnnoonkAhd_YT MF?B82`-K)&p$! ^ q!#3%')*,-A-9,+*.('''+ .5?;CrK]S[bhloqDrssrrrq*olid_YSNrI9EtB@>$=<; 97[40- )'j&&$$L#%&), 1 6EFENW^Ve iHm9oqqrrsr]qom?idq^YTOLHFDeCA@?+44h433%10@/. ./;2b5<BnJ QX_dlhkn~oq#qr!rLrr_qoVlihc_#ZWTRsPMKI~FC@(;6Y1=,)' %$$$%&),2q8?JFMU![bglPnjppp\o?nnnm?lEkHjihhFh kqkl'm'nnpnooonlwhFcn\*TLEu>6/)%"!c ^ )U!v "$w&),0P36$8s9z:f:-98765j5I5)7t:[?E:KRY;_ZchpkHn$opq qxqr!qqomtise#`\YWBUGS!PNKHErB=8s3%.*'&d$$$%&m(+90*5pg???? >K=2;;":CjH MSY_cgjmopGpppq,pptnlibe@`]ZXWUhSGQN)KBGD=?:5_/, ('d%%%Z&!&r()* .S39AHP W!^e`k1n|qrsr&qq;ponmelkjiiieijlmdnnpUqqnlpgDa0XQ"IA=92(,&#!!N !* !E!#6$'*.22E6:> A>BDvDDDLCBA@@yB2DtHLQyV[`xdhekmo pvpqppxo~nlyjrfb^YW5URTpS=QOM7JGDj@I;61Q-:)(M&&4%&O&{')L,07j>KF;MT\cjnqsJt,ss5rr1q`pnmlkjjOhPhikulmnpqqo7lgP`XpPHd@)80*%#q!!!!!!!""$w&;)J,K0a49=AEQGmII8IIHGFKEESGILP0TX]mae.hk1mowpqDq}ppso-mkh; 62-*(&&+%$$%&h)*+17@GOW_8fkqsuuHutXtCsrRponm%l6/O*Y%$#n##$9$$$%/%&'*6-T16%;@DIMPRTUW8WXX^YZ]A_acfChknpqrGsttMtns|rp{nkhBb\UNI+DBE@K?P=p4oKmllh'h[ihj~klmp5q[q]n jdZ]dU ME=+5k.)%$#$D$N$%%S%=%X%&'*/-_16:?E"JjNR{UWY[]O^h_{`beugiPjhkmpqsQsttuhuwuts{qnk}gbO[SLGF@=;B98655r432R/,*.'&%$##f# #L# $;%n)/7?H PHX9`gDmq^t~ttstsrqGp_onRmm"hhhijhknl!m#oopFol&h;aZdR*JC:2+'$z##$##$$k$$$%&0'),149b>CCHMdQTWZr]2_uavcSecgjmnyo%p3qs9tuv vtvuvxv0v?umt=qo+kKga[vSKE ?';864~32110/x-`+ ('&%+$##"""#r$S(g-5=F"N_V^^el|pdst?t3s;ssir\ppKonn@nhhijDkkl~no$nfje^WWO@G@P70V)&# ""+""##$#$$\%|&_(+/3c7<,ARFKGORVUYw\_be0gjnprrstuvwjwwww#vvyutroAjgag[?SKD>!: 6a4F1/...Y--+a)'&y%$$;#B"""1!"#&+3k;.CL)TD\cko^sssrrrqppTp/oo6oChhijjkjC}HL/PJT>Xq\W_c3fim`p1rystuwwxux\x5ww@vvutrp?lhd _XQvJ2C4=952[/-,~++*R)A'&%7$0#Y"! o n  #'.6A?GWOX4_g@l.pqrqqYqXpioomoop4pgh=iij\kkmmlAgDaZ8RcJB; 2y+4$!a 7p Y !-!"$%(9*-1)5:D?DaIMRVZ^qaedhknprastv0w7wwwwvvVvuFtQrpnk fb=\FUO H(BP=9E5%2/0-o+**('& $#"! K  Q#&-4=3E{MVU]ekjoEpq3p2pkpRo[nno4odopggchli"tojT  !!"$@%'(*l,.26w:?EIJOThYe]b eWhjlmopqrs s*szsIrqq%pp2oonmkDhe7ac\VZP J+D>9}41./,*b)2'%$#"! + H w"&,X2;C4KS[%bhlnvonn:nlllOmBmnjotWY]A`cfiQlmPlRfalY\QKH@9X0)# eq y !{!"#%U&(4)+?,.15\8=GB`HM.RW5[`0cg/iklno"p prppq;q6ppTonnnHn0mlk4iufdcU^YS_MGyA;m6B2.,6*H)"'p%$#"! , #'&e,3;HC_KS[.bh$ln`on!n?mlkkllm]nLPESSW\ `jdugkllOgaYQI-AT912* #CU,- !L!"u"#$&<'(*A+,.T046:?EMJPUnZ^maehCjlklmnCnvnnoo;oSnnemm(lmllkGigce$a6\VPJCT==73|/,X*G)*'h%$#"X!j ry #X&,36;QCtKS[bhlnJon?nVml{kikell5lm{GKPV\:aTeVjtl2llgb[%SWJB;A2+$m N ^!5""#Z#$%&()D*+,-/25@8=BH{NQSX]!`dgiijl3lllmmTmmnenonm[lllllkgjgfb^XRmKD>84//m,j*+)'8%$h#q"M!` v !#'-]3;CLNTC[Xc hplnQo=n|nqmljj~jjjk?D=JQkX-^Hciklhds\UiLE=34-&!)o !"x#8#$k%4&O'()*+,{-/>136:@BF.LwRbW`\#_cfi-jDkukkkkklxmmnmmZmmmHm.lkjhgEd+`+ZSLF3?94/,f)(&%s$M#"! q !h$'-4;D;LT[cLhmn?oLnnmfkiiWii ii7=DdL(SZ`gdjlif ^WOG?70(e# /- @!!"#$.$%&'()*+,- .J0M148S=CJWPV0[q_cfi2j-kHkhkKjjk=klmn2n2mmnn%mmlck2iNh eaZTMGG@:5r0,)(N&%`$w##""l!!? n!X!$(Y.5FOW^%eilj?g3`WYQIA92E*`%6!N  C !"~#R$$%R&'@()w**+6+,>,.}/2y5;@GNTZ_cg ijukZk8jjj)jfk l.mImnFn.n[n}nnn-m kihf bN\EV/OAHB;6i0,)|'&-%$$##)"!!V!( !"o%d)H/6g>gFOV]e]jUmn onem{k+hledgcbb b(p/8BKtTD[ch\l#jxgax[[SLD<4,&"!v ; !""#$%6%&R'a()* ***+X+,-0t3s8>jE|LSNY^cg:jjkkJkjjj4jkmmnentnno(onmlKjdiUfcT]WPIC"<7~1-U)h'&%%Y$$f## "y!!!o"\"&*>1<8@%HtPX_CfkIn)mnml%heb`J^]\:[!)3^=]GYPXafkjhb]UN6FB>p6.(#"N !!>")#$$%l%&l'C(G)U)*@*9*c**+,b.16972-)['&M&F%%$##C"" !!"y#;&+3:;BJRZahl{nnnl[hc[^ZKV RO#MCKx!=+6@K*Ts]djjjoea#ZZSpK}C<+3,&#!h!i !"W#p$$%%%&e'8'(`((()N*'*,/4:<@GNU[aeijIkFjjjjk!lm!nno/ojooppoon(lk|hf$a[}TvMF@y:S3s.0)'&|&-%V$$H##"j!!!'",#D'Q,.3;CZKS[b0i lnmmjfw_Z|UYOKG.DBx)33=HR>[bijkgcS\VNNbF>6/s(x$!!n !"#.#$A$%%Y%&''f''(\)Q)+.39Z@F:LSZ+`edhAijjjk+knllnnoop pppBpPpm;8&(0$:EOY`gj$khTeU_EYQ6IA9y2"*`%q!!P , ^ !""#A#$3$$%z&!&&'!'(o(*-`2o8 >DK-QX}_cgiqjjkbl%lmnompMppppppppp+oymlj1gb]VpOHA:3.*r(*%%$J$##j"!!'!0!"%)/6>SFNV#]c!hk8ljiem_1VP5IB2;52V.,#d-7rBLW ^gehkQifa2[TLuDR<5>-'V"!    ! !"+"#E#$$v% %&&g&'z'),06!\UNG@d93T.*('%8$#$##B"!!U!"c$',2 9AIQX^chgjkhfaOZhQJvC>;3-Q)% {)4>?\JTh\3dgk*ih0b^#WOaG ?x81/)b$""   ^ !?!"O"##Y#$%%%&&(*/249:q?EKQX^_cfohXijlqmnop-pq2q`qAq)qq9q ponmkhf?ak[TMFz? 82.|)&$$N#$ ##"_"!"$']*i/5=^EzMWTjZ`d&hhifc]"""6"$&*.N3:AB$JQ>W\/aIdUg$g gc_XPF>6^,$W -ef# -G8BMVs^chij f/b\V MF?V70)%^"!?   7 !1!D!""#$$&''+/59H=BHNTZ^b7dgjalmnoopp-pQp&ooooVnmligdaS[UNG@:50,(?%###;"""G!"D#Q&G)W-27>FNuTZs^/bVd\f0e?d`X[$RJqA&8z/%a{ ^ ')&3r>BI:RfZ`Nfhj Q v !"|#y#$&>)-k259>WCIOUFY]a9e4hwk\lnooooodnnznZmm.kifd`]WhQICL=8+3.*'$#O""D!!!!D"n$U(7+05e5,G#  :^ Kl(39>HH|QX`ge i hgc`2ZTNG@9Q2,)p&%" Ee>[ g!/!"m#4%%'+ .15:@FKQUY^bfilmnnnImmllSkig>da]^X=RLFO@z;61-)Y&v$ "!t 5 ; } #"&V+016O=DL{SeZ^Jb\cdcbb ^hZR_J@@80&: ",7BLWT.\nagchhec^xYSIM3F?92N-m)'$" pz9 ` < !P" #%u'*D-05:@FzLQKVH[`cdgjlmMmmmalkjhfc`p\WmQL)FK@;V6^2$-*)&$"! bX% #'{-22|9O@HPV]xacdddbE`\*VRMD;3$*!W _? &j0;xENW]Bcfhfe%ai]XLRLuFf@93=.v+o(%%" -iPR !t"$Y&('*[-916';AFL-QW\a|dh6ikllkjhg+da]YTOJEO@9;6o1-*:'%#|! l2b "%)/5=QE LSY`cfedc`^0XQmG?66-%SQ C < V NR )4`?3HQX`bdhSggVdea]XRkLF@)93/ *($" pJdyyK !!"$M%')-16~;:@EKQW\g`nd^fi ij,igeFc_\HWRMHC?H:51-k*A'R%g#p" d!=#d',B29AI~PW] beZfcdb_[qTvL(B90{'u> $J$ /w"-7B.KuR[Qaf5g|h*fdag]\WRM"G(@: 4L/J+'$!(9m !9"$%O'(+/$3p7<_AQFLRW\4`cfCfgVed a^UZVUQ?LGBj>H:1661-*M'%$#!  !$'&+07>FMTZ_od] cgiggmdb*]eXRMG@:43/*'Y#!!3[Gl !#J$&'),0o4@8=BHzN@T"Y.^a'dddb`]QZUPKFE@! !"B#%(+e0/5F4+# N   7] V;(3=FOW:_DdgghfedaQ]+WRMGAG:4/,5(O%#"!+!6!!9!u!"h"#E#$%'()+. 1y5 9=BHMSyX]`cOcca"^ZVQL\FArCGMMRW\_bbbP_^\IW~RMpGA;62+.+)'&R%]%u%&&x''()+O-/q1~48U=CX953!0/0--`-T-.E..//]/0s1Q233J43579h;?fBFKHPUY^`cXcb_*[VAQ6KmE?940-+>*U)(()9*+3,1-F.W/02k4 6}8;@EBJRO6SW\_b2aY`0\WYS(L_C@:0(" X _} |4&1:CL`T\|affg0fWfrdb]tYKTP8KFB=;87J55@45@56,66778)89:{;6<`=?ADGtKNS/W[_bdVcc_e[`UOIC=73S/F-u++++,{-/02346W7}8:=%?CH$LQ TY\`b bI_~]BXTLDg:1) J N+Ty m})02<*DLHT[aceTdee|da^YVR]N}JFCAm@O>>k==>>?*??@<@ABOBCDEGiI9KN QTaX[_9bdqf8ed`\VQRKmE@:63t2:1<1123l46_89;b<>9?"@gADGKOSVY]n`b\a_[XqRLC:1)8! g d: "XW.J'} !N*4=jE9MT\aUdadeefde\c` \YURO{LJ.HGG0FFFFGVGH H{I!IJ}KKuL4MNPIRuT{W Y]`Kcefh5g%ea]XRM`GC8>e;*8E7g67o79 :&;=z?mA^CDEFH=J)M"PASVY\_b2cBcC`>]^XaSLD:1)!3 mhFQ$sBDj89Mb# ,5=ELTlZ`/b)ccefefd:a^\[YWTRQPOOOOjOiOOOPTPQ~RRRSTKUWYZ\_%adqfhi'ihgc_ZV QM6IIEFB~??>c??@ACEYG^I_KLMNP+R=TW|Y\^`b cb`\$XyRLDW:1I(!t > %96y; <Bu B#-5=1CKS&Z_6bbc1degxgfdb`W^i\[CZ*YXXXXXXHX2X'XhXYFYZNZ[9[]^W_a>bdfhjkJkLkhjheka]YVFRO[LIGF,EFMFHAI}KBM6O_QqS6TVW:XZ1\7^/`"bKce1dc`]XSLD:1(O  ,;_h|K\jl $d-64;WB%I"QXW]B_a{be fgg4fducIb}aa?`n```h`u`5______6__`N`a'abcndVeh#+29?GO1Vs[:^`ce5gxhiiAihhQh*ggghDhih$ggffQf,fVf}fgghhhi2ijjk$kkkkkyjjlhg3db`E^ \YWUTTIU-VWYW[;]&^`bc4cccddffg*ec _[WNSCLDv::/', -*&yapVmU !r>Yu$X WN"*o177=DMKRWZ]_b?dfhkiiiij/j\jjk=kxkVkjjiitiaiKiJiHiGi_i5hh+gggggZgEg8gg$gxghgfeOcba8_^m] [xZZ[v\q^_a bceefcfeudddedc`\IWTP/KECN9/&PE HJyQk+j8/GVsb CJ!-(f/ 4:AtHXO/THX[]d_be~h7ikDkl l/llmPmmmrm4lllLkkjjii"hfdcbaa[```c`abd!dddbdcccFbbCaaabcdefig gh,hXhbgg5f_fe%dau^QZV9QNKHA8D.p%iAh 1k_etoTVs18v+xR; T&,16%5,$1~ <"xf@#W #)a.27=DZIMoOQTCW[^`bcFcddJdedsdddddDcb&`^\YVSPNLKKJJKMPGRUdWY^[L]4_Gabcde3eeeee#dyccEbbca`_][gX5TQ%MIF1@:Z2V*"Y `AWu+5`` Xr& =V!2%)--17q=VBEH"ILO)RUXYZZ[[ZZZ[["ZYX@VTR1OKHEEBA@Q?X?N?!@hB3E5H$K.MPgRU^XZV\]__A__k_5^]]\R[[6ZYXVNSPM7JOGSD@<5._& K Dz=Z\D;L1%r<P h3 u#&+80w6 :>G@dBDGwJjM3OPQ7AvDnG)ILOkQT/UVVWKW6W(VV2UmTSS;QP{N"KHF:CAp>z;-6 0J)#qoI vn -]MoN|UKFWki &h; f:< $)H.G268:-< >@\BTDEF,F~FFYFEuDCB@?<:.7%30-+*1)())_+-/0G3O6a9(;>S@CwEGIJ,JK2KeKKrK/J{IHGF9D?A?_=1;w974[0*P$p`$ ?,o,xnZ^ZWLGLnf}tOH fq]u!&B*L-0I2o35V678::;a;r;::W97531.V+'$I!AQs #&*&,/2m5 7:H<>3?@AeAAAu@?>=M;:/8L6k43V1/,(#  sH-N$p=veulqNWSMELB+|S nZq6#&Q) *Z++,-%-./0 00;/.-I+E)B&# =)M4~d8 !$e'"),/:135Z6P7E7[7d654\21Y/.o-++=)(z%w!r @ Gwi5)uPk{ymH:YDKKWZT?4upS( r a{!f!"B"Q"#!##$_$@$"! J2  K   jh"]$'{)L*+,`,.+*)({''%$## "!Y8 [2+"fz[xwZA/?h7<?Yg[<.|K &  8 U " hz|OZ-fs k ! 2 !3!!8  /P<IL Q ~7( &wEd2"0[}/>?HE7'+ 4Q3q*L 6  $T r O _!# Am 1 (yK s L NnI5M Lt [wW Q+Ujji%<?5!">DxG   ]l ae?IWpn|aQx A q ?  &  N  D2+2l^{ViAN)(2GMHF+89) <6(r\Br]'i?[Qe)! 26$e{5 8iq%3J;t|*7Wd`GQ+C=Y=;;DMJ?'<?2  2jwM] uWU}q/ QjKG[lkK- ByRL#!fl3FvwWKN}sa[MGON8 *CL;(%&:O= SI]& gL?02PP3 .)'A <9)*8QS...%)59KngJBRe`QSM/# 3ct`(AsH:8Vr)$ uJ*7JM8+2/ #ENB.270XoOBKUF,,?3 %[fKD5Gk# uB+KL&-( 15Exn<-GD0"d,J1gKALYQ>1*%*6<1##+)5YrnO6  5gywzjd_FJqZ1  '3" %//)e|lT;7<5+/=;.#F:FhK?DPMB52;GOG0-1<YcN*Gp}{d]Wq wX5 *    #03E,FpnK+#(@ZgbSI?_!,<+ dLCEPVULGOVTC'3:;E?+4>Ocrjet75U7'1  !:2!AIEELXh~~dC87'$1GQWdoiq5<0 oVGILXhmeUOH<//FOKPF(6=I^{ .7e: 0 - +83 "GfseJ<Soo^YN4#$1-7X~0;&kTO\bk{~sXB2%$"-BTVPUR?/0=@Po $|k`V@&  -#  &49. 2^bCLcf_]S</:J>8Gh):*|im|}hL4+*4<DNOG<<=2+-<IbjL<"    (% $#!-66*>jqRKPQRSO?;PdYHBUt+v_J<>CMQOLC5**-)(*;Uu|YE2#  2ri #pY3nk Y4 :b$n !" "#"!k 7K      L   d j D X/QU2`E=]2J   {?[H~`5u:}39"'~ ~  `     % 4 J q |   K X U X x 7  Z~ P2o*Z$}%< DL';B?&$V  %b@{E*`oig,!'AE<NlKhU L ~  . M h 8  , -    + @ t  ` U gFCI.$ UrTm pz`9^%Ov^`|)`@C1n2z6 a !  ( O m v Q   &  ! o   f8#*F{js|#vO&Itt 9!M jV0@)-) q+]Y TB^T 4 d M  I  B b m } u R + y [ -  % T  \  G ,zzK5RPH4bx.k>qvg\Q,wJ OHx%ZE    z  E Lf  M u ~ Z (  $ H f w e E   ) [  3 0  n:CP%I=|.maTU; S qz_a . Z   B M Qh# 5Qk}9 Q | b =   ; R a } P  , ,euS7Q5h 8Q$r]tBtP y k q >   d )b:2nZW+AL 1TKRxkG+3q  C e { U | @ 1{36{iqGVm ` @ uV:& ,  n y "YhY|X=uO07HTSD.'4Vp!:z/IixO/ I8  4 A J o 6 l  Y b1CAl-2vX] :}| " L ' QiOMQtmfzo`S-Tz{nO829P]q 7!6x{Z@TmUpujb  V 2  Q h  O 8Y p  " d %  P >  ; L -r#FC X\N)sDADU? ')2In3hn0! 0%  , K c ! e Y [ 4  I k }- F  # + ; V b @ 4 I veUlx#@?ylcG77+Io 6Nce]Yf5 4|a*  ] : 4 u o \ N S  *  ) - 0x)DqiC?U?D?/}[QK33{,)C*$B-v ( P C  '  ^ m u \ ; 2 I c )  O y Z cjYM9;)( e\b #r DRxjR6$n^K9 Cp_|u(e"xv c=pR z  } e g`Vp+x,=kji5DB,8= vZo^ <mx}dS+rQ0v9 |:isW3zc-{({1P V _ 4v{M06P#*l@o>]{Lqo=# i  $  H D lrr`{QJh]\(j13Q8C<]L3cx4h zmP' &)!dz,.@B^+ f > C w+B.\ { N4$4A6'rA{y f}`\'| ^mycD<gEB[\dUuq^q=1 o ^7;__oF@Dj?#72].fb= h Qrse|&Yj L|@]J^7i1;MNQ}!)0?bf S0 3 Ifq   +!#T%(&x''''!&%$#"!! RAvZvIM C !~%)3'-%=[%AISvq~;%8`X^ohG#u@1^ ` p [ -ljS$ !F"!#J$|&')W+ ,.G/12!3 2210/.-,++6++ +-**)/'&B$"!!B ta@ 6 lDwx2AouCeki68|kQgp`U m "{f\-@ "$X&'()+,0-h.01{24j57R89;*<0=<<};z:9876P5W44J4\4w4I321z00.-p,*)<(&%$I"!Em  tHk~&e\=Pt7NhK k.28JltGU; P Bb'|"!A#?%R'X) *}+-N.02v45t6794:T;n<=>@AUBCEtFGGGMFsEDCBA^@6?9>>>>k=<;:Z908"7.6(5<4320/,*)'^%#!!mkN p ``StO!T_?cU})_ 87AY 0"i%&)-+. 062 3d4679;=?N@ABCDSE:FkGI4JLfNOQS|TTTTSXRTQYPNMTL1KKVKJItHIFElDBA@??O>>P= ;u9"64^2!/-*(8%!o !;.q~z$6 B{Owvzl6Q + !=%),/'1W4(69~;K<=>@rBeDFHrJK L LMMNPQS`U9W0Y[]?^`R``__^][ZeYWW'VVXUTtS5QP-NM8KJII.HHHG EC@e=; 8?5T2t/,)%y o&\ xhs$$jA )GxCd7SES KA"a&+/369<|?B D}F GZHyIKMOQS{TUVWfXXZ.[]l_/`bd?eghijiihRgdfe]cba[``N`_t^]\y[CYXWtV;UFTsSSORQP:NLvJ*G4D6@=G9630+3% d9' qIK CIb9:9 1 4!$)-2O6:>oAEGJLNOQ=RsSU}WBY Z\]Z^D__`b9ceTfh,ijklZmYmnnKmmlwkkjhgfeeewe!ddBccb1ah`_^^]\[YXWVMTROvKH9DQ@=:T6*1{+% B a]g,@=VwU & {!&?*/c38=XAEIM'PS7UWYZ\ \]^`JacdeefghikJlnop pq9qxqrrqq(pp oonTmXlLkbjjaj+iiipiQi hhhkhBgg[fuedQba`_\^\ZVSOL8HuD@<,60*%V W"R O_;:[F9 + ) 3  " & & J  Y "s'^,05:?ICGKOzSVY[^_albc]cddefghniEj jklpmbnopqor-rrrs+s%rrrqq[qpp.ornmm6ll@kkkkkukykkkl3l:l!kjihg edcbta%_\YV[RNJ(FA.;606*% 9" -!a]7&*0BT4 &s,O16};AF&JNRUYh] _bceFfghhhi.ijek+klmmnno0opTqCrGs-stHtttu uttt@ssss`rrHqppohnnkn3mnn nHnno`ooo nn m?lrsu4v:w wfwwx#x3x]xfxDxxx-x`xxxiwwMvv`uutsslrr%qtppojnmlkjjjjjkTklellllkji1gBd `\YTvOIDB>931,&D c Pj)Go<<8:87Y6[679<@EINSX]KaSd-fhk|m:nnoToJoonml9jihggfggh3iklnprthvw wxHxxxxIxmmn?nnqnYmmlvjTgda]YvTaO'IWC=7j0)#>^+\ &|^ -FHFDC?AAABIDGRK&NRhV[-_c fgjkmnoeoVono+o!ngm:k|ihsfeYccbc cdfRh|jmgoqsu vVwwwwww~wqwMw.ww)wAwswwwwwqwvuu trqp`omlkjihgg\gg;g;ghzijlmEnnoo[nnmil igBc`\XS:NHB;d4q-'+!86 hS:wP0P0O3MLLLMbOR UAWZ^bfEhjkmknoppBoonn ljigNecban_^]^S^`(acf+iknXprnt-ubvwSwwwwwewgeba(_^]]]^c_L`abd!egikxlnlokpjpq)pppo+mkigrc_ZUOIB;4-' XK3 _`P`t`X`_`acbce>f>gil mnDno@op poDnmkROLIGF ElDDDEDnDzEGJMQTX\aBeiEloqr"tvw@xNxyQyyyyqxTwtQqJlhc^ZU^QNDLIHH:HHIiJ?KMxORTWY\t_kbehkVmoIpq~rVrgrIqq on@kh|da]oXRvLmE?h81*#}L jlYmnoop6pppp[pq qwqqqvq`pponmdjgg&b^ZWShO{KHFCcA??<>~>0===>@CFfILPU5Z-_chko8rtvxxy,yFy~yxwYuro id_(YT/NJFDBB ABBHBCEFqH{JM4ORUX [Q^bei=kmoPpqr&qqMp?oImakh1eb_YTNIB<4-Z&L{ln2opq{rirsWs3rrrrsrrrkr)q?pYn*kgc^Z1UQLHE A?=8;998^8 7y7P6793;>ADHMSOY"^dhflpitv;xxyXyKypxxbvtq%mgaZ~TN;H6/<'!mnpq6qrstsssssssjsErr plnkh]c^YToOwJwFA>;:76f54s333v3122357:=PAcF(LS#Y_djLns uxxyOyy xSwusok|e^XWPIC+>853345678:4;=>@BE8GuJLPTYn^^bfiRl~npqqqEponmVl/jhfb^SZDTOEMTr[;aBglr+uixxy(xxhwvtrnib[SKD=8 2Y/-,r,,.0?13&4y5708`9;=?BEHLQW!\wa+dhknpq9ppp)onn/ml7jmh8da]X%Q|J[B;!4-np q2rrst2tttu+.29@HPYX`gmriv,wwwvvu.sBqmic \bTaL,D%DJPVr[m`udLhj;klGm{n!nWmmm\m l khfb^YVTNIYoopfpqqqqrrs\s.qqoli"eN_ZT!MMF~@:5o1Y-*F'&%%%[&$'H(*o+^++++**)(')Q+1N7Z?jG.OqW_gumr suuluu]tsqol%gBbY[TLEj?G9`52 0J.n-,++)(=&$$ #r#$F%'*-2c7y=CJ8PVm\`eYhGjkmmn6mmm+mlkj^hfEc!^ZVQQnooppGppppqqqonkhd|`Z[TaMvFA?9j4/,k(&`$C#"#H#$%')R*i+++J++z+r*)('(*_/5EKRFX]cfikUm0mnammklllGkjigetbI_[X2mnZnoWooooopppAn lTieX`ZTMF>8k2.*L']$L" k!!"$]&"')+*F*+++u*y)%'&^'(_-2)9|@HeP]XH`glorfs t!t0t)sErpo$khb\UO0ID@=;9p89765f2/,Q) &$$g##$'%'+.4@9@oGYN[UZ`e9ik.men#nn9mlllqkkjiph ecaK^m]mnYno\ooooppoljfb[V/OjG@=82{-)&#!r <  !#h%I'8)*+--9- +*d('G'z(N,-0[6=>DLT\cimWpYq\rs ss:sqpumxj}e_YQSNNYIFVC3A@?!==<;85r1E-L*V'&%_% $%&),1g6\dbm munno8oAo*ooopp8o'liSdy^WQJkBf:g2,'$! qWrn "$')v+-t//T/.-,\*((9(<*-3Y8@MGPXw_fVjjnoxq qrrsArqomVic]XSOLIGjE(CC)BC@=950K,)'&%L$p$%w').'28?FSMTn[F`f_imokh`b\[TMF>I6i.)$" 3D>`LA! "%t(O+c.q023Y321c/-,p+-.v27?>0E;M@Uo\chlmopqrVrrrWpoZkgb ] XTR.OOMJI)HFDAE=282.}*(&o%t$O$}$&(@+/5K;0BUIPW^dQhln{pSpLonnLn mnlkk8jji5hvglmInoooopapqTp*nk=g-`YQnJ)B:X2+f&"Q q 9XK]!`#N&:)-C036787735w310G0m03y7*=D KSaZaUf"jlopq4qrZrlrqq*njea<]\ZWUKS&PNMKI&E @;Q50, )6&%c###%V&l)N,17>F$MT[b|glQnpqpoonn m2lJkjjiiThl`lmnoop qqqpPnjf^WDO G|@70)%V! oxrL%>4 U"$'+/487;<>w>y>@<; 927U668!;)@FMTT.Z`ej lnopq4qqrqjq nkg8b^[YWV$T#R$PNTKGnC=72-* '%$###$%'*/4<CcK$RsYK`fknqcqqpp9onn$mlkbjjii1kl3mSnoop6qr\rpo je] U1LD=h5E.`'# I !D#%)_-27{;?PACDDDuC,A?=<;h H ( K!J"r$';+if a]ZX6VUTS&QOMaIE@;61,)R'%$$m$%/&(J,096=F)MU)]cj7n1r'stUssrrqposnmlek^jjcipj0km%no$ors`sqCoIjc[:S;JB]:d2H,&&#@!!! !!!!r!!"#&E(-d28>\CBH4KNOP5OML IHGHJNuRVdZ_+c^fil#n8o]pqqQppnmmk)hd`[WU7SRRQ&PN=LNIEA(<72R-*(%$$$E$D%&*2-3:C3JRZbhmrPtGuttisns rPpo^n7m[l8kk2hiojlZmnoqsPsqnijbZfRxJAj9U1H+n%#x!!!""""""#$').4M:@EKuOPRT2U6TGS6Q[O[NAMNPSWZ^bqfhkmKop3qpqqq*pdnmijgch^hY;TUQ&NMLL?KIIHts`rpUonll;khQhjMkm)moqssEpnhkaY#Q=H@78,0J*%#".""#a#$ ###$%'~*[/5Z<BvHIN7RVXZXYY$WUTTUWkZ5\_bei$kmnp#pr rqrqpnmajgb]SWjQMJI1GG?Fll)hRhjk\lmjnrpr r.o|6/)%H#"\"# #$$V$$##$%'&)/:4;BHGNgS=XZ]"]l]|\[[5[2\^M`bdg.ilnpcqqrrs2sXrbq!omkgb\VOKFDBA@R?!><:8b52.+ '%$6#["I!!"Q"$V&6+>1_9AJLRZbiorruuuEt-t2srqonmpllnhBhik l'lmopq mjdT]UTME(<4-p($#I"Q"##$$G$##$$&).4^:AGN'S`X\@_Z`ga@a`a5ac{eog}hj/km~oqrrsWs{stt)s9qonmjgb [T3M9GB@:=<:z9v87642/,)'&%$#S"J!!"!#3$)3/ 7?wGPYXg`gn8quu9tsssrq oomm)lh'hijkl%lnoolChaZRJJB:;2+k'#F"R!"/"n"#T##@##)#$;&:(-29?oELQqW[&^`bQccdegikmmnp*qs]t=thtttttsrp njgma[JSL_F\@=:N8[6H5)4O321/-+(&%b$=#""!"!"#(-5=F)NV^elptDtt^s=s[s4r-pooGnNmmghfiuj=jkXlmn}n:jfa_PX OH"@i70[)I%;!!6 ![!"""""z"#g#%(U-17v=D J+OU[Y]`BbdYefhjm8o p?pqrostuouuuuuu t@spnrjg+a[dSLlE?;75Q21U0H//i.-g+)'&R%C$`#""!"!"#&&+3;DeLT]Rdkpstsrsrqpponnnghi!ij^jk{mEmmLibd]V#MF7>5.v'b#n @ < ! !"!!!"#$'=+m/5); AfG{MRWQ[^aceOfhjmSo5pq\r#rt.u6uuvMv9uubu1tlsvqFokjgb]VNGA'DJPUZz]acefhkAmo{pqrts4tuvvvvvvuu tqolWhc^X+PIB=08?41W/-,+++*n)R( &%2$#B"!!- ! !f!$(0m7@HPYs`hmgqrVrtqiqqpooooppgghijjkGlmBlhc\TBKC<.3+$ b9 > T ` !9!# $'+ 05m;AGNSX\`bdf hjKlnKopq|r`tuvvvvpv[vuu(t#r;pmjfBa[RTlM E@1:7 204-,8+1*)('&$#e"i! w + K  #'.6 >FNWf^fkoqqap_pponnoboppfgMhiHijkXmmXlhc[SKBCd;2++# ? !h"#&r)=-28>DKPV[!_Aaceugikm=nopqstuv5v^vuuuXttrqo;lhd^XLPIC=941o..,y+&*)('e%$I#"!e  L"&-E4.cueMghj7lm\lhc[SK\C~;2+!#-t | !"$1%['9)$,u05:?DIOUNZ ],`bdbfhjl mnDoopqr{rsbs~sLrrrkr?qqpao9lie_iX|QKE?950.(,7+{*)c'&2$#z"P!y  _ "&,>2:BJSZPag1lmnummnm]lm$mnOnoY[R^paLdfhlmlhc\7TuKD<63+$R Bu+  !;!"#%[&(P*,/488=rAF4KQV)Y]_Yad_g,iZjkm noopqqqrqqqFqppoo:mjfajZTNhHFB?;6H1O.,e+*)( &a$#"g!w  !#j&,3 ;BKRZagkmkn5mmmm0llmymn nRDU4Y8]$`dgzklm hdH\ULD<4(,s$ _  !g""#z$&C'x(*-/{26;&>ByGSLR+VZH\_b%eIgijllmnBnop,pppppppooooHmkgc\W)PJC<61.,F+}*)z'&0$#|"! $k !\#'-3a;HC$K#RYaXfk|mmmemmml\lm(m3mmnJeN$S&X@]GaejlmGiQe]V]MF>5-%!|% !R""##%&'(*,.1L48k;4>B~GM+RWVZ]#_cpfi.jklNlmHnnoMopgppp-ooyooeo mkhc]XR.KD=W7a1.,+**!)"'%$#e" d!!$4'-3;CKS0Zafkxlmmmmlkkl#kklrCGMSY_xdil+m`if^WOvG?7/w'n"jYK  !z"1"#;#%&'y(*+-I/|2\57:=B{HN SMWRZ]aemhjkl>lqlm/nnoRp*pppoooodomlhd_YS%LKE+>8"2F.++)('f%$#"^!V - !5!${'-3;CKSYaWfkJlmmnmlkSjkj}jSj;A GOV2\b h>k@m/jOg`MYQ^I{Ac9+1)$H #p e !"."##$&&')*+-^/2B46\8=,BI$O$T%Xr\`dhwjlglllhlm|n:o opaplppoooo4ml>heU_ZrSLE>93 /-,*){('(%%$:#"#!^ ` ` z!"D%(y.4 !`!"# #U#$&&'()W*+",./137'd'("()t*+/Z3;BvIPwU[afwikk}kk2k&kl9m*nnnnnoo|ooMmligc]VPHA;V5'0,.)'A&&&%%1$h#""J!!!#4$Y( ,3:BJRvY`fjmnmPn+m/khOea^\?YWV (X2DG O5V^"cil'mllj_fa \/W72&,#(&%$$)## ""&!c ^ !#J&+188@xHPX _Hd{ikm kkgb\^VPJE4@<9`b'1NX^fiCkigia\TM0Eb=6h.C(^#"a @  ' f !!C!h!"E"#6##$$%&)-39;?aEtL S7Y`%dgh1jkxlmnoTp)pppp}p|7]1j+(%$#i""""B! v  "%r)//35&-5T-R&!b h U&Y0;FQY aejdjie$a ZSL"D=5c.u(?$"!T % / !!!0!"4"#M##$&(+0l49>DK;QXx]`behjhkmmno>ppmpplppo4m4k,ge `[}TN}G@v:3/*'%#""_"!!d 8 !#v&?+/627;G@FMSX\`cfiklmnxo,opAp`ppoCn#ki*ebX]XQKD=Y72i.*f'$#q"Y"!!2 j !%;(.<3`:AZI8PWK] `dXefe&ds`~[FRJA930x&Gm  xA2'X170b+ &$"j!J #|S[   ]!!""#$')-04270EMTZQ_b;de%eQcaY\PULD;2) I% ! zb",{7]BLzUg\ chji#gpb^XRKKD>=5X/')')$W" D9O~ j!(!"I"#%'+-1 4O9 >DJOxTGX]afhkl!mn>nnnmm=kifoc9^ZUOH]A;62.+h'%4#>"h!O !$P)K-4 :wAIQ;X7]aceddxda^FX PG>5,#  ppE &1i<|FP3W_e.ieihcda\WJP{IB;5/+7'%"!Fus|  !6!">"$)%(Y*-05?:@EJOTIYf^!bfhj%klmmjm#kjhfbr^ZU9OIIB<73M/+(%#"&! y n"&+07=EMkT;Z_Ocudec@b7^ZsS JAl90'=] x%!+.6@JS[aghiLfqd`[UOHA;74m/M*(K%6# }<g P ! !"N#i$&,'*K,05;@EJOUzZ_cfhIj]kzll\kih:e=b5]YTQNHB<73n/Q,(&##"x!R Oi/ $'-3 :1AIQWL]aeTeXeb^`\qVN]EV_]cfhg4fXc@_ZU7NHB+;45)/,2(&" k 3 & t !E"#:$%4&%()-17;@vEYJPVK[_c?eSgi6jj5iafdR`\WRM=GrAF)MnTnZ!``cfdc`^XQH@7.g& X@ ?:\g'2=iG]PX=`1dhIh&hSfd_ZTO2IBX;5/+(%"t `m, g!6"W#S$H$&!'*.526:?7DJVPTVZ^abdzf ggeb_[WQKF>@;7%35/+(^& $##! 5g a "%6).4;CJQjX]Yc efdbu^[$TLB91=(j + # .Rj* !+G5@JFRQZ`eghglfcY_rYTO&IDB;5X0#,(%"j TyJ5  l !p"#$%&}'),037;A@EKQdVFZ^ac,dcb^b[VdQbKE@>;?7:3?/,)+&%#"!!  !g"$[&).V3J:+AI4OU_dee:a_|ZUNE;3*!; Ha $.9CLU\c~fihhhfc_0ZgTOIvBw;o40+(C$"%58K + !#!"#$%n&k'U)4+.158O=4,#jR g &| Oyb'q2F?#-|7A$I{RXYv`d9ffgTf;da]XTOJE?]:64U101..c.]/ /0 0X01$12S335 57-8u:C<>z@DGL=PTX\3_W``|]ZUQDKE?9o4z/-++*))*.*,-8.d/H014569;?NCyHMRW#Z^`ba`[X?QJA8/'b  ex[U%/9BKhS[ua eyfRg:fqfdbN^ZUQ3LGC ><.98A66256i6788p89q::;<=R>`?ABDFzI*LOP"SWY[)]`a.a]^[sVIQKF@&95K16/.F.V--.&/60g23576e79;0=v@CG_KP[TX;\l_bc b_]XSKDB8/'' M .O|  dg(1;3CKMTZa5ceedeedb^ZVS7O`KGDB_A"??+>>?X@"@AA|B BCD^EEFGIBJLrMP)RUY[_a'cFc]c4`s]6XESNI*C>!:65f44445:6x79;=(>o?@BDH%KOjSLVZ\`bdbX`>[X4R>KtBg9/'   E< \a<H@ 8 ?)3]aCbkdfhh[ge4c$`_][ZYPXXYYXXXY%YZ_[4\ \]w^^_`abd-efhFiCjIjjihTeb_\Z(W=TU[S^`b_e%fhgkfkdcbbaO``_``k``i`__`.`aLabc6cdZdef#fgUh%hijjjjihge0b`^\ZvWUoSFRQQRR/RS:TcUWYsZ\ ]^"_*`aQbdVf3ffNc`[WR[LJC9/& j @cu&N}]h"M)\ 1!{)207)=ELSX]8_bmdfh^i`iHi+hhOgg|gWghh?hggIfggQghGhiaij`jjjjjjjjjjj}jjXii gfe8cb`^\ZYYSYZ Z[\^!_a!b bc:cbcddfCg gecw_2[VRKC9/3&& \aR!oVf`x]%qHccQ  b(C.4:ACHOUY#\^`cHeghi'igiVi[iij(jkj`j+iiiuiijjMjjjjpihh g^@a@c_cdrdudddeee]^`Aac_d^ddeeef&AMCEHKOQTUFVQVRV9UUQU6UjUVuV}V1UTRMPcMJ[FCW@>3=;;;S<>XADH3K{NQZTWLZ \]^^^^1]\ZXVUTkSRQxOM]JHFDB?;O4-&I[  3~ 1RTA:J)ie O@f#`',S1w59A CFHJL6LMLL0KKKKKKIHFDA>;:75210z00o137c:>hAE*HGK7NQHSU1VUUUU8T)RPNMKJPHFD`=P;u9?4/t("p Y/[IoLwQG?Qe^ J $).25568p:<>?@AyAVA9@@n???>W=;9752"/+)~'M&G%9%o%'E)_,/3t69<:836w5j431}.E)##ZC/  \'/{rbc]\NIMlbr12L    d<>!&]*S,./12D34v545v5555V44$3@10?.+(%"g ?#'=*-0369<=o>????>=w;a9:643 1$/r-,,*))%"D[ l DS~8&W0w<yiv|hoWc^WMQG.D}=%  G,y"%P&K'O'(S():)**u***)('T%#!gV4,(Wvg"%(+.W024 45K5"432>/-+b)d'&%$$#!z ] 'vl>;PgyugA4SEOPYXTA3 s $ +- 8v$qQ b u # h S/!g#&( )q)*-))Q'&C$! 1Bg" dE.%0uaxvY@,<e19>T]U:) Xi  JxlXJv6  E<V3 2\-xf[~g&_2H V 'w0M g5%1Z|1EHJA6+0$ $ %`6XF E  R M s M 9  / H:+.Dv3 +& c=f ~ #fP2pC@la~`O)Odfg/LN@(/- RX~rBEs"$Z`AwqT56@VWir79d O 1  8_8|8ic&ZnHJ'',<EC?/<?0 $:O/^fx7~P} +):Wktc=,/ybmMhMu .E1-O_[HV.HE]B>6:HK< :B1 ' *NdR8S1(R|a}2{jnyXI`+^CL<FNeAjG/vwT{iOHO~ ~kbLBPV< .GL8 $")'$)JV> pBLceyyrbjj4 &Oa74di_F7D\ &gIB8 7PP:*&.;6P9&Gnl4=B1!$8cnJ:?LF84* " %19EUoh 1we@2/Nn ,+(sI, 2FP?*,* 4DC@?RV?!,",lyVABE3@ew~_74\{V<2$:c! tA  #HN#+**7 ClkL94>H@/"##h9];|^LOTC+2?1!;ejQ:#)EizwshaYNF2>iY/ &7$'! .7( (]{ykOA8-'!6F;)/P PS {V><C8)$3DC+!3MstR@;3@\y~oUKLm"uS0 0 ,: 9R=AqzL"-I`f^Y[Rq42?.sN62;:60/6>D; 0H]sqV=BW`fnuwd\q:? Y5  5   )A4'OXLCFZvh=.1)+8ILQfysz:B3 hODDMSSMB932.!?TbqkM6>X_fuv +4$b: /#08/ 1Tkn]LKgw]TL8*)0&0T:D) zf]aeini^J1" (#%4HTZgeP=BTVb|ib[> -%  #)21$>b|zdO\oj[VP?5>I:5Gm->+rqyzupdT?%"48;FOOOX[MBGYduuQ8" *)#!#(%),*%(Di}t\XXQJJJ@?TeWGF_*zm[I:++7GIFILHHQXQLN_u}aQ8  "   >um$'s Lm d z !T! m4z     :   W _ F M.L Z8fG@`7H !  #Ec\shHrHa:Uub;xh3g s{XK7}      # 4 \ s   N X L I h 8  T R%;t/`($@ JQ-BIF*Hv\gTtJ:8LgD=:GSc~]n $ G / b   1 L a x 8  1 0  ! = s   g Z oLFK1  #RqUi q|_/)Mn !9 ybeZ?5jI6#Ofk z { :  ) K e y \ * ! +  v   g6"4Lxjlz) mPQc:!#I"" ][oBiOi? m  $ W  = W ^ o p n Q 2 n { K    M  _  E 0~E.PPD)Xr)zgEt}q^N%|TE !S"$"t!] &5;;vZ qrq v D o A % N l u m j l } } Z #  E k w Z 5    R   4 -  b2CLwA4u;|rVW?> " "!ub6nd F v  \ ~  GT {jC( -3@Tgrx~'  T z T % = Z i N   WmsL(H/\ Ah9h||<4n7md2_U_61 [  w &yL*AjGRxI  "FuEE}M*+o ! J k S 1 m qz+o#6 ttY`#`m'KX]P  ] ] f.mgfUvY\dmiU9))D]&=s2Qfk>>: " 4 B O s  = i @ `.?:m.3]M e aK69 hQEPWwol|aO(;NngE/'7Db0)C}y^DTfM$ppif  W 2   A d  S /Z" x   x  y   f U G*:f^T5[ d6/*DareI$ "?j0 sn4%2)  - Q n % l Y ` .  ; a ! ~, S )  6 < C S V x 1 }  p C 8 @~06T4~= iO73#''"Nk|<HOMNXgO" 8~i2  c 6 6 m ^ N J T  8    TyqX0 SAKL=koyoU6 703B>7N +x / R F  "  \ b l Y ; 3 J  p 8   0 \ z N ;I|*WC@-[nI` "o S-LX<~bK3 -Otik_'_y# - g;kK  |   h gshipn4aOT+.,{ PG1jjykZC% `*Rcz^OFp@*74S S _ 5vzyA} ><@+AI?yba}cq-},q9o% S o T = 0 # P>f*@2pbe B |;A\JTLqUAp9ftmP&790/blY8]B}nF As^;1  h Qgw? \.3 .  T~NQ?es gf&{ZmzcB9c]2F:NT|a)" M TPc$d#@IF-]Xl8&{  9 w5gn@ E^NX5i*<NMOz6=C7HO?,!HD  ; tnX9ye:!/"#####z""t"!!!!!!!- 8>=I=2- I `\@@F%',@Z!,BEPrjv62]kt_5c)'2T{4L O yN_tk8- G !"#~$%'g(*;+,g-C-....A-- ,x,++++,A,K,+,*+('%L#s!uYV.]Vq k};NnAkha-0w ~;,JM 8x @u) "$I%'C()*k+a,-.01X2356 67g78a88y77X66 55P5C545^5554421g/.a,*)v(.' &$#S! ok~N e.vh'dYBNo8OeE o|(DJPd|S*9%xv d v!=#%'(*+K,.T/134V56819j:h;G|?x@mA/ABwCCWCjBBAA0@@K@??@'@,??><;:x957654431x/-B+A)i'%#!Rx? p ? >^RwN"TQ8^W#K~&>1T, * C{";d"%Z'.)S+|-/1345668:g<=>@5AKBzCDyExFHIJLCMjNOXPGPPPPOZNNMM)LLLLwKJIH FEkCBA@??E>=;9k742?ZAC)EFHI%J$KKM NOYPRTEUWXZ=[\\\\l[[1ZoYYXX WWWOVUlT-RQOON2LJIINI:I)HpGQE-C @P=:741.,2($ ,: 7d@?k ?e ex"'+[/i3M69<'?ACEGHI J^L(N/PQnRSTUVX3Y[7\^{`)acd$eef?fxffedcc&beaa0````_$^B]'\ZY|WVhU=TrT SRQPNnLIFC@@DtHqL'ORtCIOT~X\_aceg3hijkYl0llll;kk.jjWj.j)jkvlmo*pqsQtuvw:w~wwwwv|uuNttttu u@u9u"tttRssrorqqqxq,pp oXnymlkk jmj8C1*$ tB_bG4F~DBAz@AC6F9IcMQmUZw^cTfJhijklm_mmmmmmMlvk(jhg|fbeKddeSeghsjlo qrt uv0vwswewv^uutgtssst7ttu>uquuut,sUrqq,phonmlkjhibh~gg[g/gghi:jfklmSnnsnnnmlj*gd@a2]@Y SNHB<|5/6("< OgbQ&POpMLKMNXPSWZ]aefhjlklmnnnnnn^mlkjohgYecb``C_`{`b.ceh1jm o prntuIvww)vuu0tt1ssst5 s*`aeaja``abd3e6f)g hjlbmmnGnXnnnnmlk(hfdUb=`]ZWUSSSpSSTUMVY [^adSgDjnm{prtuuuuvvKvuvvwwLww2vu%smpmjhCeb`s^%\[[IZ[[9[\]^_`sacAe)ghklnopqqqqonm9ki{fPa]XT2NmG@:N3-p'# - _efgkgghhijjjk.klmn3n4n]nmnnznCmTlvjhebD_\ZFW\TkQ*OMM|M3MWM:8 1*$wX> j)klmmno'op-oonno9ooo]o3o=oHoponm kfheWa^O[WTvQNJHG}GYFFFFF5FGQI%L(NQUAYT]bjfjnprtvlwkxDxxy'y|yqyxwStyqblhDcL^ZeVRONLLbL;LLMHMNOQcRTcUXZ \`cyfhk8lnppppoo~n`mjgdb^IYSNSHB<%54-& 6  lmoopsq?qrYr2qpp{pp`pFp'ppopo4n)ki!eaa]KYlUQMJMGDBAAA@???@@_BDGAJ\MQV\#aLej!mqsuwLxixy6yXyyay:wvks$ojbe _MYTOKHRFEPE`EwFFMFG:HHJIKMMNPRUX\`pcfi&kmop@pp0oonFljhafc_[%VQL~FM?80)f"moYpqrstHttDsrrBrqq=;;g::[9989[:=;?IB\EJSOU[aZfjoDruwixy?yyzyy\wv rUn;hFb[xU?OIE0@?=>>?@5@A`B:C D,EQFHlJvLUORBHKOU\cbnglptw xy[yyyyvyw=uyqm-f_XQKE?;87789:;<=^>>?@ACEpHJNRWG[`"dPgkmRopIppep;onmmkigd}`]X{RKD$1L36];YA HOW>]cj*o/tvyybyy|y}xxLvctpUkd]}UxMF?:942t0o113467B889N9:=:<`=@C5FJOTY^cgjm noop*ooodnmlkZifdK`[WTME>70npq$rrst`ttMtIt)tssrqp]nlj`fbr\WfQKFF@<7_4U10/.../ ..m-,t++,--/05:BIQX_af}lgrufx%xyxxwwZu|sokd\TLE=72}/-B-Q-/?0}123^3434 4569;?BpG$LUR-W\aehk)m[n0nno?o?nn>mlkigdJ`[TMG@9oXp2pqras@ssst t0t1srqpo.mifbh]\W1QDKJQV\`*dygjl6m?myn[nnnnYmmFkjhef`[UDO IBoWop~pqzr+rrrsBssrqppo liea\VP~JYD>:(5_1.,*|*L)*B+ ,--(--,,'+h**))*U-m1.7>BF+MU^eQlZptv#w2vwvv9tsoke_WOG@930X- ++ +X+D+<+"**^))('(;(*-038y=DLJQV[s`Id gj6kl8mjnnwn&mmaml*kDiNgbc_ZUxPJJoGoop9pqqjqgq}rFrrqpnlif5at\WPICb=84/,)e'&''')4*+,b,, ++**g)C((+.&4(:\B>IQZGai.nJrtvMv:vvpv(tsbpTm!gbZS0KlC=z7U3g/.L-#,,n+*)('&u%$$%&(R+w.Y28>E'KQWj\aSf hkkm6mnwn*mm4llkjiTfc_[WRno#o`oop!pjpfpqqqpOoliea\6VP]IMBu*+<++"+**)f((=**,27?kFNV^ekLpsuu[v%vvtsq6nid]VO~HxB<85322R10/-+)'&%h%3$%')}+/4n:@G^MSY^d[gjkmn>nnzmmllkjjhAf#c&`>]Y]nnnooGooopqq~qomjdfa\VP]I:A;50,h)0&$!!3 !"_#%&(())*L*b*b)(]'a&~').4M;BJoR`Z)bhVn4qGstGu_n$n'nnnoAoioop?qYqpncl@hCc]XQ0IB]:4s.+_'%"!PL8 " #%)&')0* ++D+N*f) '&'(-718e>FsN@V:^VdkWnqrstttUsrp-l,ga{[$TNJOEB?|>=X=p=e<]:740-8*(Q'e&Q&C&!'9((+.O38?GELjS*Yr_dikYmnoonmmmml:kjihgeUcdmmnpqZr=rVrkqKpJmkid_ZURO8LJWIHHHF!C?;72-)(&%|$$$&(-1Q7EfLT[bgl1n0ppqoqqpp9mkfb ]YVTR0P NNNvMK4H%C?4:%4/+([%%###%H&*n.39+@ G]NVa\cDgl nEpq5poooo)ndmull0kkRjj!mmnnoDpp'p~qrsor>q@mqhaZ"QIA81R* %! ,TQVU& "&)-15Q8:l=183y-)&%e##="#$&)o.3:%AIQ7X\_ekTnqrserrCqqWpo)mm(ll&kkGlmXn9o1ppbqrttrqnmgl_ W4NF'>5.'$! A 5jpS #%(-3 8U,FlN8U]d"jNn:r#sttss0rqpnnmllklAlmnop"pst{trq)l~f^ VMkD<4U-'j#!g!f!Z!!!!;! !t"5$&+06O<A5FsJ MNONML*J.HH ImK|OrS6W[_cfjVlin npo nnn#mUk^iec_\YxVxTSaSJSSROLHDt?:55/z*'W%~#["f!j!!#% (,3C:RBJRZahmkrt2uuuvttysrpNo2nxm]ll;klmnnofpTrtt6qpk e \TL CL;#3- ' $!"6"Q"#,#""","#C%',2 8>DJ~NRTgUUT+RkPOxNOQUXC[_bf8hkm,nvno\oFo*n@mjkiUf7cC_[XTDQOO+O8ON/KIGEB/=9j4j.*&$"! { z x!#&F)/6z>G OAW_f[kq&sv(v-v%uUu;t~rqoo mmlk klsmHn noqsHsbpnicGZRJuA91,-&$"H"##$&$3###7#$ &5(-3i:vAGmMS WY[[[ YgWVUVXT[]`scTf'ikDm_njo-oIooonmkifc`[WR{OLFK7JJ^I`GPE,B,?R;73\.R)&E$&! d p!*#&{,*2;OCxKTa\-djp sFvvDvJujukts[qpAoLmm)ljkklmFmnpqqo!lgR`XIP{HP?70;*%#"""#$"$7##y#U#$&(|-3f:AyH-OTY]_`*`)^]]2\]^^a bdgi`kmoppkpTppponclIjgd`[VLPLIGEDCA?=f;825'1X-)%#! }f 0 "|$)0.8@IeQYah]nr.u.u}u}tttrqonmm ljmjkylllmoppmje^RUNF =5.{)$#!"k"#i####/#0##%(C-3O:AHOUv[y_gbcdcc[c+c ce=g h>ikjl{nooq+qwqqnqqqpoNmkChea"[UPO,J9EC/@?|=<\:87;42/c+(%#""!; 3 ` U!#O('.06>GUOW`2fmqUtttsssLrpgoTnm]ll~j jlkkklDlnogokhb[S3KsC;3y,M'#Z! !""##(""e"#G#d%.',2f9@GkN=TRZ_.cKdfeffjfgijklmlnoq#r rZrrrrrqpgn l)iIfla\U7NHC@=;976s531/-n*( %$^""0!5 !4! "/#Q'-n5=F:NV^elpsttrrr_q,onn9mClliyijjk?k|lmn"mjfm_XPH@8[0)%!  !N!"""6!""#$',18?FM_SZ^cbeg:gh=hik3lnno$opQq3rrrsDsRs`s(s5rpqDnlifa\u:85i3210.-v+)u'}%$#"!!!p!!"#f'Y,46.'# R \! !!!!Z!"M"$>&V+0y7>3DKQXR]dbdfg}hciCjlmnoppvpqrgrsSsst sssromjgb]VOIC>:87+31/.--+*W('%$#""&!!"""#y',4 ;D0LbTT\yczjorrrqqq]proonnnInUnhi"ijDjjkMllkhc\PTLdD<3,%!d k  !- !!#y%@).5: 620<-,,+q*)Q'&%5$0#K"!!!!!""&F+ 2:uBKS[%b7in%qrrq q pp7owo-oGoo^phhihijXjkallkgcI[T9KC;3+$b ~].I  h [ C ~!5!"$w(o-e4-:b@GmMTZ`(cwfg!h{iknmnoppq%qrstotuuKuuutsqp^mjfta[UMG2A;?2g*#}\!x2 9 !`"#'y+2F7>D(JQTW~]a`d2egg%hjlnnopfpqHrHs]ttu"u|uuuuhts'romideX_{XQJD?.:~51.h,+Z**('&=$#""!b! ! !e!$)i158@HPX_gckooooo7ozo'no!op pqeZeg&h1iMjlk^lllgcq\TUKC;2+#NMC `!,!#6$g'y+y16;h@FLRX]:`Radf9hjlKmEnMnopEq'rrsbt?tuuu)ttss$qokhtb\UNHB=T73[/[-P++.*S)K'&x%#"",!` !8!Y$)B18@@XHhPXXG_+fyknpnnmnnnRn=no^op{q{bicKdfh>ijlllgcX[TNKC;3+Q#v !"$%E(+0|49>HCqHNzTY>\^acf?hjklmn5nopqXrs*stVtCtltSt#sssrXpmje_XREKE?9404-,+*)(f&%$[#,"O!p! !T!k$x)&07?GOW}^8exim[mmlmmmmnnop4q9]^`cfh`jl^llgc\:TLJD<3,C$ x9|^3V l!"#>$&3(+0.37;@ZDIOSWZ\]G`cehjklm?mnodppqrsRsYsosAsrrqpn[kgJaZT|N"GAy:5e0.,$+*)(')%$#E"I!`! !!$)1A8I@-H&OWb]di^llll)lmllmnZnoQp=WY\`@cfikll7h4c\UfMET=|4-*%!=] " !g"|#%k&(+/s259=<@jD}IJN5RV4Y\`=cffi\k\l*lmYmnoVp4qqrcrrrJrqr qpnlhXc?\VOIABo;B50A-++$*_)(X&%$J"! _ !"'%*S18@HPFW]dhkll*kl lllmAnnfnoPSW}\`dgk9l4lahd]VNuF>6z.&"3U ~!!"}#%J&f(9*-0_259 ;?CGLQMUY]M`dh4klxmmnnio(ppq.qqqqxqMq/qYppMnGlghgc]BW?PuI^B1:5 /,**h)('&u%>$ "! n " k k!"&O+Z29AIQFX`^6dhkkkkklLl%llm"m$m9mJWMRpW]bf6jtklilhd3]WPIA:~4/K,o*^*){('&n%[$H"! ) O 0!"&,#3:B>J]QY^dhkNkRkk{kl4kkklkkkC)GaLS}Z` d`i4kljif`PYQJ96.($" !H!!!""#$W$%o%&V&'()b*,*/4;C0JaPVA\bgkmmn@mn nMno,oooino ogooon lie_YQJ[B;50,)('g&&&}&E%$x#;"L!!!% "%T*0s8?nGGOhV]bgjkPjkjj*hge caa_^[]|- 3ejj0i&d1_XQIB;f3,R&$E"! !!z!!!!!""#+#|##$#$v$%&&*D.j52fTa[SLKE=7@1N-E)0'#%s%I%.%B$$&#%"$!X! ! !2#'^-41< CKSZaf3jHkdljjixg c=_\AXTQ!NL[ Y(s2(<3FbPX`ddiwjzj>ea[VTfLzET>5.(5$"k! !C!V!C!.! !!q""T"z""#>##$K%!(l,e29b@HOV\@bg jQk!kllmno3oooinnnnnnmcleigb\GTMFZ>82T-) &$$$Q$)#""!A  8 q #(/5=EMU\cgkllpkjhye_[WR%MzHEB#-7ALU_]FbHh6j;k gdG^WOHwA 81w*U&$#"R! A 6 |!!b!!"%"#V#<#$'+17n>BE%LQSZ`e!hik'klmnojpp0poo&no nnmljgjby\UNGF?9y3.(&>$a$.#z#"!!5 w $*(0N70?G.ODWH]dhll)lPjifxb[VQJEM?< 8r3)C3 =]HaQZG_fikhfh`ZwRKvC;4f,'L#" , F /    !![!"W"##$&*05<B9IP_W@^bfvhjkXlmo'opppp+oo\oqoao,mlj!gxb]oVoOuH@:K3}."(&!$!#""!!V [ $)1S8C@#HpPX_eilxll$j,hd_JX0QKgD$=l72.U%).8CMV\dIh0k!igb]EUNG!?7/)$#4!@  J !O!"c##2#$7&*/v4O9? E0LSZ _be!gil moopq3q%ppoooo^ml@i:fha\UNG@u92-(&3$ #O"#!!F! ;  &!&8+39AJ$R)Y_fiakjjhfCa*[SQLaE<5.*%tE!&*24Z?_IRYafjj*iOd`YR0JrC;2+&Y#!r azs  !C!"{"#7#$R&j)Y-2,7;AhGO V[c_b+eKgjlynop$pppppNptp omkhyez`[TN3F?82.-((&4#"!!< A #8(G-5<CLHS[`QfhjiiZfc]oVN F]>N5i-b%!@   %/:[DNVO^di'ij f+bs\4UNSG=?7B/)h%"! fhoXz   d!!"t"##$Q&4(,T/4(81=wCyJ?QV[1^Tadh8jlmnopRpfpnp p/onleifJc^QYRcKDj=?60,v(d& #"m!j! [i3"%+18F?~GHOUVR\aegigYfcP_4XP{G?h6-%4d - *5?J R[Fa^gikge__YRfKC;4,'$@" B* =\  !n"&""#_$%(+.-1i49>EHKQ\VfZp^bfbi1klno_pp"poonmXjgc`C[V?OHA{:5+/,S(%#"@!B 5/}h $(.4q;C JRX^befg]e1d_ZRhJIA"8_/&@{  !%./>:DMV]ehjhfa].VP;HA91, '%^"!rb L  !"R"{"#}%+'+)+.1t5:@mF60w+'$# qvE _!#!""k"$%')a+-16=;AzG'LQW\aei,k7mXnnn%mlljJh1da\]XRLF?b94l0,)&U$"_! 1s!$*.5A;CSKRX]bdpedc`\VO E<3*! Fan #w-8CMU^td+i&iiWecU^YRL_E=q60y,X(&"# !oT/ug > !a!""]#$&%')*.o28=>BH MSTX^bfi3klIll!kjHifd `\W!R_LF@e:t51%-* '4$U"!! ! d !b$#'-O2z9@ GNUS[`d7e,ec'ae]XPH?76}-$.,XpwY '2=H6QZQ`gSiQj6gf"bp^VXJREKDD&=)60,(%]" d<I(0 > !!W!","#j$E$&H'*.A3S8#=BHNU)[6_dLfi|jIjjiHgYe|b[_ZUPKqE@:51e-Y*B' $"! yI( .!#8&*0{61=4DL*SX^bfee[b_ZcTaKB9{0( =oe "#,\7|BKU\?cgUihqgeb-]'WQIK Db=2618-9)%&(" V[ ; !3!"E##$$J%*&,(+0O49{>gD2JPV[`mcMfBg>hfec `\XSNIC?: 51&-)'+$#?!!V *!!$&g*.4;(BIPV[aqdfepc_\iV*NE<3*"V  4D &1;FOW`e:i+iNigfb*]WOQKD=61,)^%" ~L,{h` ! !!"#C##$q%:'l)-1(5m9? E%KQV[^bicdc#a^z[WDRM7GqA=9 40,)&$""! M ^!#&).#29?@~H7OUU7Z_/72. )&#!  !G!!"N#3$5%(%&Y'>)1+u.1\48@?FMT.Y^Gaef}eb_ YpSUJA7/ &>% cR8 *Y$ .|9}CLU\dgj ijhPeaW\W72-*'$r"7!7  ? !!"b"#$&$'( )<+ -/295/8<@F@KbP%UX\^ ^\Z]VMRMfGA;62/,)&$#"L!!y !L"#%(+/308N>E,LSX\adg4f6d_\UbMC:V0( [ ~&gk Wt-'2kDKR WZ\2_ceVf-caJ\WO4+#L1 )k49w #-377@HQX_cfghrggc`E[XSNxHC,>:85g31001E12 2q33457k8:!;==>@BUCEgGJNQTWnZ0\]]hZWSNID>94_0s.,,*+3***U*,O-Q./1y3]68;>C GMJRtV[H^bdSedcVa#\XRJN@c6-\$ {7zk+ PN$.8^APJQY_d^fgghgPea]YmUPWKfFB?=;9{8~78x89:*:;<=?g@BC_DFH!I}JKMxORTW Y\&^^^x[XOSOjJE@\:6{31000//x/02457 8:=#?C FJOTX\`befea']XSnKaB"7.^&G. v9%MH7 Sd}&r/8ADHQIXJ^bOdegggdb/^RoVZ9]^_czehfdb]XRKBb8.&X; Ygf ZbU{ }l&&08@HPXR^=bdffgihgdpa2]mZ8WSPlMKJ"IOHHHIJ_KQL M NP7QRT@UoVWY0Z6[[]^v_`b^cnddc&`.\XUIQMIEB~@???P?>>?P@kB7CEkFHjJ&LOXRVYr\_mbZdg>gqfsbm^Y9TLnC\8.&O` [Ep TTX!I 0<j'0(7?F9NVh\`Sc%dxghgi^geb(_]AZX UzSQQUPQPQeQRSyTUWY Zl[\]^_`ab2bcdeNfDfgpfeb_\YVSPM@JHcGG.GWG FFG8H]x_ `bcndefhgUhhhi:iyiij j$j5iLh ecF`^|\hZ*WTRPOOHOgONNOP$QSaTV6WY[]_aNc e>fhCgfb"^QXTLD79/i&K5 drOoQaS au}K{ l&-4V;BKPSYi\` b"eVgi#hh.fe\d(cb7a`e`$`f`{```a$abd(etfghij3jjkk k jjj}jmjQjHihgbecba5_][YWWVVVVVUVQKuC9q/"%0X s$>>:?gL^\i%xO<'z  #*?0g6=F9MlSqVY[^adfgghFhlhhhi7iiiiiiiijYjjjcj/iih9gff etdddeefWggUg\g#g$gg'fedccbc bbbbcGcdtdddd}dmdded9b_w[VSDNIA8.%e BscH\%q8*M:D- 9 v!(2-3:BIHNRTWqZ#]aadyf;gh"hhhhi,ioiiiiiiisihzghfPdcUa`W_]\\[\ ] ^6_aYbcdPe8fgggggAggWgggg%ff@feeee9eddscPb_H\AX5T}PLF6?n6-C$0 T<mqjISl0Ytx T o E6 r%*/5ACFGGGFdECBzAAIAOAAA<@?1=;;86I31/.o-O--/147T:>ADGK MuOQRCRDR;QZPO"MKJnI)GFEJCA?=;:18151,&7Z ,mpy 6aNyUzOJGYlhTB /sC %+/)24u689:;;m;:9766555m4420.,*D'%$#$"""s#$&),L/u2591<?A6CNDpEEEETDCBA?>V<;O9i754q3:10.J+&' j!(@ fW-?vdd\\QNSvk{ dYbm w&gHi#<'*p,-.//l/E..J-,,$++,**z)(&$" <jzy`># &K),/25P78:f:;d::9s8(6b421//-,j+t*)(&"   j^q(nI9FxzdkWb_XOWL. }0#z xH #$b% $$b##Z""Z" !!!^!  ` < B L K>Ta!$'* ,s./0q1 00".->+F)W'%$#x""! Z*z | N }_Q":YqG:XGRR[[[H3jpo m VCPir,Ed6C x s0l7f R a`r!#t$%q%%($o"!`ajkD  QYVe,yicC.>f4?DXb^D-XU&w[M K QaD>< L [  7 ,36.;6 7fP l%Rx;YW   rRXmBqf*[k6"-Wx4JMOG@77!   9 IL|7Y_ \&/1K M ^#'Wo  8 t  < ^R4:qqM!SU|g ]),Qehj2ORE-%(80>wZm]F>w-&Sb+STJOG=N - O 0 89wkuUSuC]Db=55CJIF5CE5##):cVyH"yv: ol3[P9eJW<)l}?y!L9JfbJ5J :>   nMB7;GK<)BH7$!.# .]v_#7? &DyQ~_D{koormquUCBZs7io CE,guI39r k[E=JN6 4LR="'&%0"$)7[cH xjP!-{oWA:6/+[V)=?.M|xY96I hLB5 >WT; +0 7@0M=%1Nsm2 9p }ohecV8!&1%&N`[MI[>.tkQC5D^ }S2 !9HSB2& 0.1HLJGYZ> UCQ+~vmfcV6 2RyQ%?a_KA%-R xE $MV&52 /; FtuTA9?A.+ Eliwrg`a[G0%$%(,*!"2;Ln}gF<xzpf]P+*VV,(<$#/*78"*b~nQB5"&FE81Lu8{x9{rbUNG5&!-8:.4J`bO?#'QyeVFY  {W3 .  6F(>O7CuxJ /R``bji4SA?%}p`SF<.'#*8>6! Devw_IISKK^w~rho '.a>) 4 !1K; 'IPG@G_zb4""%@KYv(A?-sg`]SKGFECC:'.Vs|nTCGUPUl!,kB"  1-"$6;/ 'Kel`RQloOA8% /->m)AI0nfjsphgd_RA.)E`pppeWNNUNXype[A$   1) ")/64( 8_{{fQ^ogRG>,&3C89W4C1xs}xoaQ?*)@S^da`\VQOTVglO:#  ..))-*/23-%Bi~u[XYRHA<..EZNBKn *nWA2&%$-;JSUWWYZ[YSUbziOD1!& >xk'/<C}":x%Bdt-] >9N]J      1 y   P ]  H K-D_;hE<^5G   (Mnvt{{tA^.99<W(!;AwA?kk 7        # J h  P X K E c 4 V Y+An)a"{ @ IQ0AGL63=hmsmES1  :=  I D l   , A U o ,  6 3  ! ; m  o  ^ vPGH. 'LnWm t"}d,2g !M zxQGr.H +3<ql  i ( 8  B b s T ! ) 3   x   n:"6Hsknv ,o[#}u!?!#>#! yMB*?O2 5jv@ _ } / a  . J V f e a D & } j | J !    J " c  C  1}yE*KL=#Vn zgHx~wbM)4nH  !E""a!f !R[=<; 9      " A Z e ` [ Z h o m P   M s ` 4   S  4 &  _/>Am6-k>yrQe#p#+ ! !!"!ar<(8 A - J 5 P #e&xSA365=HWcov!  Y Z ' D e v G   SnrI$Hu$WJb2{buo?{FW3Nx< ) ,  S oG=HVP.znV!Ep8CL-'n ( M p  N  . j q{*r&2 yV`&V~R!m`5-^  9 \Q l,KVAE  { kpw|uY0<V} 7{y;]rn:  <? + 9 H V {  < h 7 c0;7q.2eH o ! NtP9;wDF Y]bll@+|MQam<*6Qq78TyfGO`N4}wnl  P 2 } 5  e  J *a#& ,    n    k g R Jd{HtwXx/rSO89Sv])  -V4m#7(6*  ) N l ) n ~ W a 2 8 b % ~, ^ 4  5 : A H E m & N k  ~ QAef{DO*'G=%,54 :UiJXXNSak|\&(=}g0  h > 9 n ^ N J R  9    $c|{b9dMS\ZFa:JkyY(f9='HMF[ (u 1 X J  %  Z a k X 9 0 F { k >  0 c N uZk3WFF2TS6l&8aA[]5~U4 Dl|2r^+[{'4']<jJ x   { ` ]nwVOr-ua`17 )|@`N5trh_VNF=6&X&irt]<Y}N26~7Q T _ 6sxn)Wv,1GVA.=\]F8- [a"_>pv p  * H D D ItE]EifOBKcOYQtZEu=h xkQ+ 4A>4 ^b2m ZpGjl;?* ~ N  F./7R A {-16S@"gv&=(}dg&xZiyeA5dZ)B~Ol /{l1im"  L 75e(<((uJY!5Rct < g  = M # QZOJBtz ;=REZ.]-8JFFu2EQ9JBu.K2:.em + j/4n% r!M!"1"!!!!" "u"##x#C"! QONDu_d2{ X >?G& z%:Q.ILKifx3-YiQ+QBNf(3m 6  ~m \ ~ !e".#$&(4)z*++,+,--0,,w, +,2,x,-R-.).%-,+*(:&#!~T{ pl6 IZb+Gbw?g i_03t  x-3S Q [z!#%H&'()*A*++,-.0M1354045156667 66l6%66S667=77776542w0.,*('&%$#Y! .f  HrE[Jk\O :Ps;MaD lx 0ZSG`Y+,#) x } n" $&H(*,-/-051k23456[7-88:;<<=>??p?@AIAAAAAAAAB.BCBFBB_A@?><:9/7644;321Y/`-+)_'%#!d- ' \lk ^@EoBPR6d[yS,%  7 X 9"%'*I,.1;3w51679:9;|<>? ?@A&ABD EG0HIJKLlMYNONO_O\OBOOO7OcOtObO*O7NNLK>>>=c;964c2"/-,*:'8#  q Bd ,p~w#5 E#_z\pV I @!0%K)M,/215 7:)< =?Z@AC)DoEFHHIIJMKKMO{QyS^TUVWXYZ[ZZZZZZZZqZZYXW/USRPMKIHHgHHHDG$DB@#=:74E1 -+^(3$Tn > q;0s@@m'**F{Jf5 y F ?;#H'T+a/U336:<@BDFHJ)KLNOIP{QRSoTTtTUW3Y/[(]^`aabxc+cdDdydHdcccccwc=bbba`_^B\[Y%WNUkT@SSlSURQON@LIFCO?;8#5<2..*(%' E _$Hs7A?cW  k 0#'=*.26S9=ADGJLNPAR%SUVWXXYZ[\-\]^`vbrdNeg4ghUhXhhhhhhyh1gggggjgffffieeRdcba`4^]\\n[ZYXEW2UTQgNJFB?\<49540+& E *}{%5+Cs  "H&*.v2H6 9=ADHgL:ORU`W+YZ\7]J^^x__`FaabcNd*efshiklmn n mmmUmllZkkkkkik:jjrjiiiiGi@i:ihhDgffQee]dcb>`_^]R[FYURUNbJG3C?;611+f&'!p + 4-3 ( = P #(-x159=AMDGJN3RUX[E]i^`abcFc^c6cRcddecfIghijJkm nqoXp"p"ooFnnn;mmNmllllll9kkjjljij jUjjjjjjkjejihgqedcba`&][qX2U QeMIEA<61S, 'U#w S G#) #o#\L6"(>-3:8Appp*ooPonoo$o#o nmm1ll@kkkllhlm)memmmmmfllk j'iKhgfe-cv`^[^WSP8KG|B%<61+,'I"Pdw ;aG !Plu#6(-;3 8=BG"KOkRUWZ \d^aeceBfeghioiiiUihhhiijklumNnnoqr"rsDsrrqqqCqpppep{ppppfoonn mmHmm#m;mmmmmmmZm)mlll`kk5jiiuhgyedjb4_\@XTQ LPGmA;6$1,&k rO7 !@T'(+*6(&%$%N&)-Q2j7=CpHMQVgY\}^U`FaceYfh#iBjkkkkkkqk6k jk!kdl$mn+oopqvras@t$ttttZssGrrrsr,r qrrYrrr=qq*ppooYoonnnnnyn mmDllllllzl@l kkk8jKih3fd;a^mZVrRLF@;l50')#>u i\Jkh/6g5%3y10/0j148:=:BpHM%QVZ^`bdefghiYijzkkkk]k k kjjjkknl`mxnopqrstYu&uuuuStsss,srrrrrs@sgs;rrrqqpphp%ooonmm lMkk0jjjjk$kJkkllkk|jjHigeXb~^uZVQ'KE@:c4D-'M!*k | L|'AeA ?=<-;:3;<6?{CHMRV[_ckfogiijk8N1*$"_ fAcldJIGFhEDEFIMQUY]aehZjqkkkllllrl5kkk)jlihhgg_fffgg~hikmjnpkqrstu{vuuYtgssrrrgr9rrOrsKsttssJrqqApoonm&l8k0j$ihAgggWgghhijklmLmnOnno,nmkGheXb]YT?NHB82i+%K= kQlmjn nmnoypp4oo!oo3oIoSoCo6oSoeoonm>kheb^[XUqRO`LKJJJ&IHHHIK0MdOsRsUY^&bg jmprtqvTwjxPxxxyAyPycxwuGrgnid`[WNSOM-JII6IHHHIJLNdPGQT7VZ,]aMdgikn[oqJqOqponmJjhSeb1^YYTPOI&CU<5.'! 6lJmnoppq|qqqpYp.pCpoopp)ppoanlj@fb^ZW'S9OKIXGFETDD2CgBqBBCD9FUH,K&N_RW]#bfPjTmqsv+wnxxyy(yvyUy-xvt&pkfa4[VQMOHF6CC1BBBBB"C DEGiI_KMYOS2VZ^vae h k8mopqppNonmki=g*d%`\WRKM!F@g91*#lnopqkrs.ssrQqqKqCppppq pponukhd-_ZVJQMKIFErC@?>>n=<;;\;.< <>@zCGL,QW]zbgkp$sovrwyByyyz@yyx<:98877(6S556!6809qvsoicX\FUzO HC)=s966q66667<8$9:Y;j<>+@LBEHLPUZY^cgKkmhoppqpqpp&on%lkheb^zYmTME>?60)mFnopq\rsTssrr`rLr)qq1q%pponkid` ZoTOIvDj?D;8C6433A22W100?///13248%=DK^RYW_ekpu/wnywyzAyz/yykwvdrnhaYRaK2D->S8,4800"/001\12345o6U749 ;M>AhE#INS3X^bgj*m9np0pppqppnnFlkhe?`\|V)OtG@g9n2.mnopwq:rRrs&rrrrrTqq#pp omkgc^YSMH8B=953 10k/////.J-x,,f,I--i/2O7=ELZSZa h$ms uxdxybyy>xxvurSnhDaYyQxIBl*i*+`-K2!7o>EMU\ddVjpt?w2wxx-xcxwv>u qnvhiaYQIzA;N40e,H*)*K*_**+%+++++W,'-0m36:>DSJQCW-\`eh)k>lnDnop9p8ooognm7ki=fb]WQ?JDunno0op9q qqqrFrrrqp\o]m7jfc@^EYRLF@;63/|-w+++*+Q,)----u,++9**`)n)+/3:J@HPDX`LgZmquIvhwgwCww\wutqniwc[SKD)=72.i,+f++C+#***[)))(o()+.149~>E/KQW\Aadhklmoopooopomlji*fbS] WRRLmnGnnoKoptppqr1r82-*H&$"!!$!"^#% &'~'(=(r()C)N('''),Q17+>gEzM9U2\dinqtNtuuutt:rbplhaZT+MGB=976666#5C3T1 .V+)(N'&'I')w+ .28>EzKR$Xh^dhikmo~pfq`qzqSppponn,mQligdamm#mbmn"nJnnoqKqqonjkKgja[UMF>y71- (& #W! v1 !#>$%&'(n)w)))4''A&(*/P4 :A:HPXt` f koGr1ssst%ssqqpmhbl\OV$P:KIFfB?<=<<<;:8B5Q1..+~)M(c'L'?'"(H)1,+/5t:AVGN'TZazfgjlo;p]qqqqQqxqWpoo4nmljNh'em2m&mmmnCn=nsop4qr5qomid]W~OG?71+t'#! c \!#%&~( )Z*+L+k*{)8(1'^(O)-06w!P (0dA6 !#%(0*,l.X/!/.-,M+ ++:-y/4T9P@jGOW^RdiGm nopp~ptpoocli$c^YU4QNJKINGGGGE"C ?a;t61r-)p'%%w$%%.'). 2k89> DKS%Z`fyjmo|qrIrtrr[ryr qhpp_pognmal7mmWmnnnxnoqcrrr o lfG_WqOG|>6Q.)$P!dgU!o$&),/w23F4]320/F.J-r.\/'26=DLTq[bbKg kZm#nnooo>nnnl;83G.B)'C%2$###%<'0+!.4q:A"HJOW^-dhmoKqrsrrrrqqNppp\oon\mum=mmnnnpbqrrhqnYjd;]LTLD;3,(#`!/}xb$J !%(v,\03S68:t:[9754=222G5 8?8ELTZaTf!jlnnn8mn mmDk]hd`\Y VgT+RQPQPOLIrD@6:4/*N')$$"""#%) ,O17 >=EMIU \bgloxrQsQssxssys:rqppppo{nmem$m}mnno+prBsNreq{miNb*ZRJJ A91*&" 2" "y%).3 6:=i?@;?>876,8T;AwG?MTAZE`keikm;mm%lllulj?gdM`]Z4WUUT8TTT)ROLcGyB<60+ 'D$k#",!!~"#&).4;CKS Zaag}lps8tEutttot2surLq"! ! oNP!#|'#+16:?5BnEwF9FDCoAG>=<>AIFKQRV[a4eTiekkllll;lMEI=.4.(%""D!"U"!! [ !"$(-39q>DGKLMeLJsGEWCBD5FKOTY[]b eijlRl%lkkqjjZhfc`]ZXUTwSTTTROmLVGC*=w71+i&#"o d"#(,4a;DuLT]d joNsStv|vvvRvOut&rqq p o\nldl#llmmnprrp~nic[SKC ; 2,'}$"""#3#9"""!!!"#%*/V5<AHLPRDSRQNLJIxJLPTX]`dYg)jkllllkkjyig,dea^[FXTSQQQPO-LIE@;6{0*&#S!  *_ !\%)M0O7@+HPYh`h5mTqtv*vvv[vutrqqoo)nl!kl/lmmsnQpzDKPUWYY0XUSUQPQSVhY]8`cgiklmm`mzmlkjihec``\`XTRIPVOvNMKHEB->:5L0*&8"!]vob`J"B%,o3k<D~MU]elk+peruvvhuvNutrqponn%kkklllmospFpKmk*e_UW OSG=>7)/*G%#"A""#p###a#"#U#X$&+1$8k?X;L73~.*&<#!! !!j$F*O09AJeRZbinqtbtu8tutsqponmmUktk7kkl3lm.noQol i/cS\TxLDELRY=]ac$cbbXb%b-c&d|f/gchjkmoapq'qq{qqHqp1nm-kjhCd_YTDOmKMH@DB><97530),)&$#z"+!z u u! "^$))9/;7?GPCX`@florsrrrFqpomm;;8[64l20.w+)D';%m$W#?"!!!"""#N$)\.7(>GKOtW-_(eko!qr qqq"ponmlkkdkyiaij1jkklmIlkhc\UM{E=53-&"t  !i!! !!#Q$)*.L5a< CIOV[a'd fhgghrijlRmSnndnoopqNqrrsrrqq1on~l\jffb6\UOJtFAr=q953E10y/ -*('M%$##4"s"5".""#%)5.6}>2FNV(]dUjn7qq8qpp4pomm ll'l+lyhiZjjkklmlkig7b[T@KC;3`,%&!Cxp# @ y!@!"$"',3:1A GMTZ`dfh.i_jEkm=noLopoppqhrrsLst+t)ts]rq"omlhCc]WIPJE@Z;63}0/v.@-E+*.('_&%$$#"""#"#$(C-E5"po o2o;nvmm%m0mmSmhPhijck kl/m6lkig(b[LSKTCW;\2+m$[ lEY) 7  ' !J"#'&+}17>kDK QX'^)be_fhqikm'nyo(opop pqr{sst7tu uthsr\qon.j}f7_YRL@F@;6~2/.F-,K+)('R&%$#w"""""{##&+3;5;AGNU [g_cde?gUikumInoopp p9pqr^rstu&u^uu9tssqrpm?i#b\RU0NxHDB.<62%.-r,1+*)}(Y'5&%$2#"""f""/""&*2:B:CJPXV[X_)atdf]i?k}m&mnootopjqqr4s-tttttttUt6s+r2nkd^iW>PJ(C=7/2P.-[,+l*{)s(P'*&%'$?#""[""1!"K"]%*Z2-9AIxQX_xf^jdmWm@lllhm llm:n1nopc[dNegihjfkom lkgb[}TKC<*3,$ ~T* KJ !#-$l&).%2Q7;b@^EKQVZ]`vc&fwix7]2..c-0++D*l)('k&d%o$o#""K!"!""%,)18@HPX1^eil}lQkkkzl3ll&lmnop^`Cb`dfhj'l:lFkgc'[TLD=@4-D%!mAJZV !#~$&)z--048KPUX[^beiklmhnnzo oppqrBrr}rzrhrmrdrrqnk1e;_#X/QK>D>(61-,+W**)_(w'q&}%}$Z#`""!!!Y!" %P*"19AHPX<^eHi-kkkLjjkk{klEman%npZF\^aodNfhkdkk|gcm\nUTMGE>@6.w&"DdvYN !#$&(+.2&5n9<@ExJOzSW[O_FcfilOmrn]nnoSopiqqcqqq[q/q1qJqqNpn jd_3XR7KD=~50,+*I))W('&&%#"!!!Q!^ !!%x*n2/9TA9IEPXZ^pehkik0jj,jk1k"kMlm:mn{oTVrY]uaHdgTjmk5kegd&]qVNGO?70:(n# VAA !#b$^%'*C,/I2 5A8;o?-D IYNSW\ `.dhflmoRo[oopppqq&ppp@pCptppzp mijd_9XRsKfC<4/+*).((y('O&a%$#k"P!!6 !V"&+73:/B J#QY^eGhk>jjj5jkjjkl~lmmNQU#Y^bf ijkhe'^X6PaHAX9~2!*0%!!L5O  !#-#%&(*L,l.1`3k68=CIIOET?Y ]bg#knmpYp`p\ppzqqSqDq%poooopIooglidk_DXRGJC;|3.*)((^(''&%%w$#b"?!n! w "&l+3:BJR}Y_rehkjjj?jk)jjk3kkklG)KOU[W`dhjbkiPfg`KZ RlJC@;4D,7&#"1 f   8 g ~ !"#$L%b&(/)+-/L1z37=aDFJPyUZ`Gefjn)ppppnpq qquq0pwono#oooRnlid_YNRJB;}4#/@+.)(R(''u&&%$#"q!! \ 2 "'C,4<CLSZ`zfjilk#jjjPjjjELfRKW]cimpq q3pppppponn+nHno7nnlie(`Z}SKC<64/+)(/''&&&%%#"!! F !#(0.5=\E0MRT\ag*ik#jejujWjj3iEh giferddU8>PELT=[afMhkjdh`b]XVNF?i8)/)%Z#"4!!p!~!f!}!!!!t!"##d#$@$%|&@'@()i*\-2:9Z@GNITZ`g\ko6opnoppp=p)ooXnlmmn5nnnkl~jea[U8M2EN=61V,*|(-'C&@&%%%$#"m!o  !$ )/7?=GO-V]bh-jHkDj\jmjihfeca_^`]1E7?fGPEX^dgjjic^WPQHnA91s+ &$="W"!{!!!!!!!q!"!"n""##|#$_$%E&D&)-4O;CrJ&PXW]rd|imvnoUo o_opooo>ndmmmn+nmkifbz\VANQF?~8*2-*(&%a%6%B%i%:$]#$! v" %+ 19AWI0Q2X]_di8jkcjUjhihfda_m\YWVf*71R9BKT\b\ejjuid`eYRhJC=;3,'%$"p"!8!'!(!b!}!l!- !7!r!!"G"#,##$ $%:'+ 1'7?aF%LS`Ya fjlvmmnoGop+p0onnWmmn+mm{kifnc]cW OZH@93.+]'&$$z$l$m$ #! 1"&6,3;CKSxZmafW5.(m%;""4!# !! p 8 C v !!_!"1"#"#@#&T)G.4l;BiIPWb^d'hjllmnop$papoonn}nn+ml9jgd/^XGPIBm;.5$/+'%[###{#2"! ^&"'O.5=EMU\ch kll:jj_hea]XT OTJaFC%/68BMZV]b9hjLkCgd^|XP=IA9\1*&#"!g x w O {  Y !-!"~# "##& (-28?#FVMT[aFf%hjkmXnVop3ppp\oooCo$nnKlkmh"d^XQ[J,C;5/+',$#l#="!!Q *#(0F7?GOW^:e0iSll~ljifcT]YS_MYG~A=9O r*`4>SIHRZ`fiki,fa[8SLD<5X-($#! J D S% F !a"F"""#K%{(D,06a;BIQIX^3c?fOiikIm;nopqqqSppDooo4nm0kgd;^XQJCn8>ELTY_)bfiQlmopqqqqppoo:nljUfXb`\W)P^IBx;{5T/+*&$""R!; &?!%&+3j:BJRZ{`fjhlkkigb\sU0NoF>7;/+&!*4?ISZafjjSiecay[*TLE8=5E.(&#! Lz* !"k"#6##%'*Q-d15u:@H O3UhZ^bfNiknoMppqtq@ppOpoKnpliKd`[hUOJHA:t4H.K*>&$"! Hs"T'-5FNUZ`d/g7gfcaW\UUL0C;1(3 u3D(j2={GPX`fjiifd^YQK2C;4.L*P&$Y! 0 b !z"/"k"w"#]$ %%'G),0R5:AFM S^Y/^cgbj lm]ngmm8kBifdI`J[V:PJD?=9k4j/, (&$f"! f V"%<*.52;CzKQX]bejg-ed`]WO@Ep<3*! t0V 5",7AKTS\bhiKjVhMfb]WjQJC(;4/+U(n%" + !  !b!"B"a""#[$$%'1*7-27=PBHOUC[M`dgj}kJl6kfj_geb_x[VLPuJD?(: 50,)&$"! N !"%)X.3:A4HOU[`defcb]{XQ!H>5-#m E'Ql }F&C0;ENX_.ehjiiTfCb\WQUJC0;5)/,?(U%H!M m19  !d!!"0"""#/#:$$'c*:.358=CJQ)W\beKhIijhgdla]YTO~IwC>5940-9)&$`"!! y *XT ?! #)%p)O-*28!?FMT~Y_,bfGfebn_ZBTKAB 8%/&k`n 69 fI *O5"?sHRZ^b,fjjjh}faz\W)QzJCR94[0\,(%$k#'""""#O#k#$%&v'V(()+s-%/G136:>vCINRSW\]m^W[YJTaOJC=7`2.j+(' % #"" !!h "<#&(E+/38]=CJxQV\ _dzfhfd_[TLB8/&,( U8/ychq-%0:DZMUN]chRikk=khea^?YT,MF@;62/P+)(`''&&&' 'T((*.+*,2-A./1b3%568:=AFK7OTXY\]][X?S>NHBt<>6E1-+[('J%$$@####'#$B&)(!+-15d:>DKQPV[j_cfghda\VNEq:1C( a`C-^T +N)h3=FNX0_deh{jk*lfkjEfcn^ZTNHpB`=852G0 .-T,,e,+,g,-N.j/0124I57G9:;=;>ADIM QUPX\\]3ZoWcR`MH A;61. ,*)('|'&&&&'(+ -047;o@;EKR?W\^_cfi3hfbW^XVQH&> 3*5"" {,2 (v"[+5>G`PX_`dghkkkifb_ZUPKJpE>@=:7544454&4w45R689: :<=a>@ABCE7GJaMQ!TkX[]^^[XSOJdD?L952|1//.6--2-4-:--.02548;?B|G:LRXe\`.bf]YGR%J?5,|#U~ztj)eo#-7@ HQY`5eHgfijllVk gqd_[WtRwM}HE-A?~=Gq?ABBJC/D E?FH%ImJ*JKMORUlX[0]`.``c]Z\UQtLGLB+=9665>44>33m334X457S9f8hhgcl_YSK{A7-%)R6 W>#Gz0 %.7@eHFQX|_Hcfgkj"kpljg}c`s]Y[UGPMIGjEJDMC6C%CNDDEFHWIJKLMNP,QRQRS4TVSXZ\_Aa3c5c\c `U]NXUPKGqC @O>0=<<<;;A;v;<=<=?_AD8GFJMQV)Z^acfghfc^ZDSL9B8.&4% )Yn PXZ |&P/8?HOX@^gc e6hil>lzkhfb_\Y UxQOdM:LKK:K#K1KLMNPRSDTXU3VWX;Y,YZ1Z[\^`acvdfHf!eb`\)XUQM.IGkENGU\`jcehjl&k iVfkd3a_;\fY;VTSRRRSXSTVWYZU[\o][^+__`J``ajb3cHdEeRfgmhfh'geab_]!ZSW$TQ.O?MLL`LK~KJJJKAKMNLPRV Y[^acmeQghhfMc]YSMBD9/&~M QB@bEIf c Nk*&f.5Y0YIYZz[\^Z`abcdeg6gfg"d0`s[#WQKC9/&)( AXd:\aBkl)`Dk'P I#*07>GAOUZ9\`bf{hjjjihgg ffg)gh*hGhehinj jk kQkkl9lQlkFjoiiLi'hhhhiijk;9W7F6,44568 :=W@tCFJ M OR*TV*WWWVUTR~QOO>NNMMLCJ@GDB?a=95/(!7: Y}@ n@_^D?R+xJE * }3\ _%x*/36/8:=>@ABBBA@??C?%?>>=<;c97520S. , +)* *F+-0!258<:e853,.)#M   aXdn 9hRtRzPKH`wl,E }l!}#(y,+/:02Y3g467"777@6|5w44033 210/-|+)~'I%#!K UX!#%'*-04 79;>?j@ABA@@C?B>X=Q<\;A:87O54x3+2#0/.,"(h#K? V!@ee\[RU`s$&i,F!  b$l++ 3$J&().* *+P++++Z**a))>(d'&%M#~!Q1hec@Q!)$Z'*-/26356e6654321+*U)'%$z"!!6 *.9 M n U8=KG2awN@_CKN\cfR< }&6" QiNr Bads!  o g ,io a F !i j3~Fo ZcGrH"rohF2Ch/:AXeeL4 ^i6X7 h I y X M t"`,,{U   $Jsdf % 8X\c$zWs:"-Vs5LQSJE=?*%&a=~"*) iwS7)EC(e7$  e g { l gQ!R>4ePs^^)-Qaad6UZM5,/B= 3erJ)h:T\)y0yS s| 7}aF |$,~xf"mkk]pCY:];89EIHG4FL@/$-2' 2XN'hSIDDSq~reL0%KkW)6xFVl:e8kB<$ZrSY;: mPH;<GK@ &EQE+--$.2&SfJ 1s}@ J%Jj_L$uyx{vy}^E8C[o`a9IHFb|p)>*l{=0]hJIw #rcI>JP84LXH)#5/&!#".KP23! U "yz|rU9/6F? IiU-",Nv{oQFT  mOE96T[B 54,<)C4%<ZSE<(;goZPVhkI+;O> >jr`V]yj&)sk[VFOfW7 9QWA4)/3)@D?9HM:CI2K+)sg^_kiH'*2!/-)>e=6`\SR9<^  |G  /QR%759I$?nkH65FP7&=IC+3ReTsnc_ebI1/7730,! ,>=Edp? -lwh_a`B>c  X+ .<(  %4& @? #]zq]CA@(2M\XF-<k!Vd>$ul[PQO<,+5AD;*#@P`~vW6@usgbVe  [5 0 !# 3:>I,=n`>! /Kbqod_aBE?vfTJHH;25@MJ5 (Sp}t]OF68Liuupx!+gC-1$.@0+GI<6?Ysy\9')+7ANYfx .H@3td[YWUNKNQQC(9`y}sbSNNBF]$tJ& '  ,# -3-*I_bVLOh{rYKDBC>=8In7OY>tilutmhcbZK5/Nfpkic]YUSGOmqiaI*  +'!#%&-.(6\wvaLVgdVIBAFLOCD[>O;xp{zqe\M7$*C[hjba``]UOKZxmM7"   .1. "**#%)0.!Aj~qRIJIG>99EZeYMPm "/# |saSF7-&-8J[bc_afkhXNRjcJ@,"("# 8so')BP  Rg0'!\!|!5v'+H>6  3     % r L T E ~ N-NgFl@9 O)G   *Stut|IU vP t!@!z \ ) b$           = y U  I R F K p = c`)Cn*Rrz: JR2ELO7!2>(/\ U!")#[##d"Y!!) O4w=5$N = 2 : X I M |   * 4 L k p  1 ,   9 s  " v  gzO@B)#MjOfp{\'1TvQ/ #`s?idR U I4indI8Et  w R  : q  8 \ y ~ k E ) .  | . ! l1'{F wdlv *  "m\&{p>MC r!! 9I0 $TEj`D* i *  $   C ^    = P X N R >  } j  | Q #     U $ g  < "pzpF*FD;&Xm!ziDxy_N,+q ++Nel7 8//P6 v } \   ) ; E T Y N G ] j [ 2  F s | [ 9    . d   3 $ Z%~-z?q6-o2xkNc'3KV E ^g 1 . u "[/nR1'0DDETedn  ] W * $ Y r } C   GjsE%Jw#V7](jVpi8H#p;'sFL(J d . 8 > k ;U$ {= )[=>P'9  = i F s ( d p)j#5qtUX&U}]-nDH`1@\3 z p 0Ea!)!%#1 5.uswnT*0Ch *yr8[mtG&HS 4 G T ^   5 e , d491n)/eN  5 [j>.8U { zYgGma;Jrkle6 &Ae/2MnR^nZ1{ymj E . r / } f  G +_% } %   } o   T N 9KZtL=U]!s^^o~[+Dh-~}'-F28& $ A [ ! a | \ h 8  > j + 1 S '  ) + / 8 9 f # O o & - } {C9Q eT N27h4QUHLF5#Ig} IRVOMXl3k9>3Ey]'  b G 9 o f Z X `  2   #- oz~~_ czt}}of<gL:Z '%pJ$sq}A 2:!F\Ui !k % R J !  )  X c o ^ @ 6 K h :   5 h O %mo%RMP9G-uYW-y *2 uK Oxx*yp3l>DJ1gG  s  z a a}hta`(+o[_. AD  >h0j&+(h"npkYf^=,t <M S [ 1pua/_:<WiN6;TU?y9Bb_L|#*w9\E2!0T,M 0 h p t *4h7 [cP|ot2i-UWmOUIhZ8pKf |nR).86. Va<|(kSncyLV,~7  @  t+( m c[xaC e=VMwV X.} ^l{fC6b]&L'_w2EfnCZ  DHY`6qE@ Jr'5Ec] 9 n  ; 9 VV 0e%t;)V0].:NKLy#0=+8=?fR J"_ ! s k6o\F~{j/;XT.; !'!v" "#$%1%%%~$" H\A z  &?t<a$6&IOKig{83^Rb{pBISf(??u h g qJy w } b x!!"#$%&'(x))**+0+++,,-m.V/A/000/.=,!*'m$"Q4iu/<^k x BLk3M!ha37v }7<X N2x "$&(())*U**++,p-V.@./0|1?12m23Z34S55566\6789z::::9q84614*1/P,*o(&%$z#!vQxv{X S HC>8' Qz8G\? js *RXXhl@F1#sd{ i wn!$/&) +-/01233345X5671789w9:Z:;m;<}==>>?@{@ALAB_C$CDDEfE$DCqB@>;9754 3271/5-*(&%#)!7& Z N0pNU.>W<^UsE_w-_ P'#&G(+.14'68j::<<=[=>?@E@A6ABCDNEEFGuHHIIJKxLMN"NOOPwQ,QQR/QPOOMKaIFDA?>Y==8<; 926401/5,*<'$!CWl ou?26G My= bd+D %<)q-(0v3s6:= ?,A5BCDFFGHHIxIJJ;JKMNO4PTQlRSTrUHVVWXYDYZZ[n\\\\\K[~YX$USQN[KI{H"GeGMGFDB@a=:741., )&"=9 2F2j)KI % HsKZh1lk H0"')+`/37;2>BTElH'JKMgNOPQR5RS]ST9TeTUXVX(YZ[\]^l_)_`F`abab+bhbcOdde;eqee[dc|b4`Z^}\7YWrUSRR?QPOMKIGC@= 96U30-_)5$ 5g frI"Aw]h_"} B#M&*f.s26:w>oBMF`v^]O\;[cZdY,WVZU,SQOL6HDA==:74t0,'T">s 8  (15 # { & ? += ]"&*G-159=AE^IMQTWY[]+^_m``P``a=abQbcccdTeEfghij j,jMjPjtjjnjIj-j/j=jqjjk?kvkkkkkk^kIjjihgfee3d\c`b`_]\[QY8WSPMIF'B?0;7f2-($ $g 32<+ g}9_ j$)-1593= @DHK~OSPWCZ]G_abcdxddd79N4)/ *|&#! 8)P!G"3%*/4o8<@DHLOCREUmX\_bdfWgohhi$hh:gg}gghhijdjkl.lmn6ndnUmmmOmMmpmjmbmWm{mn-nnnnnWmm*llmlvllllmmmmmllkkjiGh]gifIeHcbI`]ZWTSPmLIRD?:84/+%e xVn'&y%s$+#8"Z"#&S(,05:y?/CkG)K7NRTU%WZ)\_bdfgiBjjjjgiiKhhhhiVjkklclmonno7oYo7nnGnnn9nTntnnoo{ppSppEoo\nn)mmmYmPmFm@m+mmmmllll|lkjji!h`gqfgdca_-\YHVRO JE@ :?5=0 *D# b eaS( /11/.X-;,j--037!;n@uE_INNRUY[]_adfhi]jkHlQlmllgkkrk2jkk4klm~n9non80)"( 0 ,KiG`FEACBvABCEHLPgTX\|`zcgeghhijkllhlllmllxl kkrkjjkkjl>mInoprq*qrrkGkklIlllmmMm1mHlRjh9ebU^YvT>N:HB-;4R,&6 $C VkviQ?P|OMqLLLMORLUX\$_bf(hCijUjkklPllllYl"kk!jpii/hggUgfgEghikRlmo op|pqqqqq"ppqqTqqqqr0rs#s{s~sxs rr4qqpmonmll kLjihhmh7ggggghi{jrk5klmNmn_onn0lWjgd`\DVQKE>70*$Gj r_+[2ZsY WVV^WWY[^{`chfQhk@lomstCttuuDuv v:uu^tWscqpbn|ljhvfcb`_^W]\\] ]{]^P^_acegik|mPnopqLq poGmkBheWaW\QWROLF?92,&( :s # kh*hgfffgfgeh5hijklmn7nn n mmmm=m6luk5hfdUbz`^\EYWVIV UUUVW[XZv\^a"cf'hknoqVr(sstuv@vvw"wwxww utQr olj.gddxa^\SZIY WVVo_o=onnnnnnml'jgd`] YV RNKHGhFGEDD/CTC#C!D&ECG7HKNSW\taeNiZlpsmv w_xxyCyPyybyKxTw_tr'mi0c^YTTOK9H)EDXBBFApA@@AsBDAF[HKNRPVuZ_bf hkmopqAppooan lBigdaX\X;RMnG'@92K+/$Uwlmnno.p pqmqpsooooo0oo onnnmkheEaU\XT[PLH EBB@?p>==<><<=>?AYDCGLQWv\b fk@osCvcwy[yz)z+zdz%yxwtqlgPa%[@UfOhJ"DAE>\=4;;U::I9:G:<~=?BOEHL'P,TYS]aewi knpq`qqpppCo$mclj"gd]`[WIQjK^D.<5-'I l@mNmnFnopppp)oooooRoAonnLmlWjgd`][VRMoHD@>3;:88@7l6696667v9:B=,@EK{QW]chmruwyzzzzzzKxwtqllf[_XRwKF@;8765555 45F67]8F:<@?hB=EIhMReWA\`dh/kmp pq`qqppnnlki!fb^YTMF?=71*!l}mn+nnopq$pp{p&pAp]pooo5nm`lJjgc_[UPdKF5A7=P975322D11+00?/0K01259>D{KxRTY _ne=kpstwCyhyz}zYzzPzxwteqkoe[]VOHH%A;s6211/////0002!2458;r?BFK1PQUZ` d'h&kn opppppp*onnm>khea]VWSPI:A:3lmnrno

EMT\(djpwsvwxxPxx=wvurojd\UMEC>72.V,>***+ **+++++,C-/259=WB\GNtvKwcw9ww93/+)h&%c$I${$%&(9()#)B)>)|)))V(c(a(+.4b:AVHPBXD_fkps]u|uvvHutsqol g[`YRKoE>955371252!11j0P/"-+*n)L)()*-./38?>EtKROX1]bgkGmnp$pqjqqqqqqTp_onlifb_QlKlllmmImnfo@pqwqq.q6oYlgybO[UiNAF?68$2-{*%&%"!!%!"#F$%&''_'(V(((['F&' )e+06!=4D(KS[qbhn?qettuuu DKyRY``wejmp%qCrsDsustKtttdt8ssrqgon4mmmmmmnopqr,rDpunje]ZV;N:E=5/6)%v"G!DH 9 w!#%&(*r,,,+*)))`)+. 3 8r?G4OV]di0mnYo]nnnnxmmkGhb]pX9SPLJ8GYEEdEEDdB?U;61,)-'[%%@$$%!'%).S39n?FNUv] cCilwoprs[sst6ttttwt%ts{rq]p=mmmmmmnoHpqqqomhPb*YRcJ7A9_1+&# !6#)%'a),K.d/=//+.^-7,;+*+,05=ADnL;T[bfkAlmm\m6llkkigbo]YTR OMKKJKJHFwB\>982-}(&h$i$#9#g#Y$&+/T5s;BJoR=Z(`grkoEprssstKtu tttatotOssrpnmmam:m_mAmoGpqqAqnqke_VOF>w6/J*%" g;A # %[(s+.134P4+3210/`/2/P27H>kE3LSZ_a$ejUkmll8kkjkjhhea]YwUSQ(PpO\NO@O NL I`D@7:l4.0(%#Y"""$" #{%(,2]8Z?GOW^ejoq#st[ttrtuu7utt;t9t3ss\rn]mmTmmJm3modpqppWmAib\SKC;48-/($4"q!3! 5~v  "%)s-a1468~89C876^4533259@FMTZ!`cei]k lOkkDjoii+hg da/]xYV"TRRRRSeSRvOLGB<:5m/ (%7"{! !#C&)/J5 poCkgN`DYEQ(I3AK9+2^+'$."""!B y !C#m&~+/48/;=>???=s;99/;?EK;QV[aRe^iLjlkYjii_hgf.c`]tZ*VTSgSSTjTTpSPMHC`<5/o)%"!Di z!$'B,G19yAaJRdZ-b1hkn%qjtuvvuvvv~vu%t8ssrrjrn%m+llTll}m1nppo-nje]VuNcFK>r6~0**&##B"""Q!!F { { !"$j'-B2i7}i,h\gjfe:c-`5]JZ_WDU\TTLTU@UTSPMHCH<5/f($! # U!#(-55= ENlV_ elpputSuw)wwPww%vutcssDrrqqhmll(kkklnCoeomlkhb['SKC;4.5(%##O##)"""%!!O!T!]"W"%)/p5:@DHJMGMMKI/GGI?LPTY]/`dgPjkCkk$jiohgxfeNcs`^U[XVUTTTTSSQNJF1A:4.($! w]!s%y)18AJ R}["binlruvvwHw w;vutBslrqqpmrlbkk}kkl,mnnljf`qXQVIrAC91,k'2$# #*##E#I#""X""." ##&*1P7}=D*I&MPMSTzTRP~ON^P*RVZ]adgmilllkkFjYieh-ged b`%][/XVUUTmSROKHC>9B3."(w$!j 6$FBI"&-f4=wENWU_(flaqtvJvwvwvusrr(qpBom*l-kk`kkekm^nmkni&d^-VVO GC?70 *%#"[""""""w"(""g"N#$#'+2:8?F>KPTJX&YZXVUUVX\G_0bdg[jmlnWnynLm`llBkoj&hg2ed[b`^+[:XVURSR\OLHD@m<7:2K-($! k/()#"@%D+c20:C+KTj\gdnjcoruduvBuv\^_^)\[[q\^acegjlnppoonn$mvl8jigfec`]/Z,WU\S!PMJ-EB>951G-(%"! [E? " $g)0h8A IRZ4byhnqtuHuuumusrponn.mlxkkak(kBk*kulllXi;f`VZRJB:3+'P#0! !*!M!!!!F !!!"k#;&+29A$HJNU,Z%_KabbaF``aceghjGknoppppyp5oo0n.lkRjhgeb^[RXTQNKWGUC?8;74&0L,)(&$O#/" ! !G!E"$)/8D@&HPXagmqstftstHsrponmmPm lk`kjkjk(l7l0kigdp^\WOH@870)%d!  D !!`!Q g !7!2"!# &+29A~HOsVc[adf|f.fef+gNhjkl lmop1pq7qkq6qpp>onmblEjigd`\XhTPLHD6?;85^2f/-,I)r'g%$v#f""!!"@"%#y$)/<7h?+GzOW_f7lps sdsrs+rqonmlllqkTjjjjjjkkjg c0\VCNQF>68.'# PH S a  . !"&+m29A@GNoU[audgigh}hijl8menn?nynop8pqqVqWqZqppioo nlkiffbM]XT O|JFaAH<8520.+)w'&H%G$C#"""_""#$).|6>l95J20N.,+)j(#&%$$,#d#"#"#$>(-'5&tDDJUP|UY\`cgtj lmnooopp;pBpwqqqr r r rOrrrgrCp"mfh bF[MTNqHA: 4/`-\+z*)('&&%K$u#""`!!!D!!$)29uAIQ2X_fPj&lll k2klMlkklmZn"ob[cdKeghikkk gb[TLE5=5B-&"]J)ZaDXV &!y"$&*V-t1U5`:8?DhIOSW[_tcafilmnpo)ocoooppppppppoppqQqpnkf0`yYSMFp?8 2M-,^*)((%'S&%%!$0#I"x!!!e !8!j$*22W9AIQYC_filkmjij8jjjhjkl3ln ^Q_ba(cleg|hkktkgGc\&UJM|F >6v/'#E 5Y8[d78\!O"G#%(+.4159>CDH`M|R]W[Q_cgjm7nbo_osooooppp$oooAoYopDpom=id*^WQKED+<5/+*)5('';&%%_$#"!!!)! T !D%+*2:EBBJbR Y_eiAk@jeihhiziQiKijk6km"XZS\`cCegjck@k\gd]pVOG@28<0)[$!y k5 !L" #a%'.(+j._25?8pMp7ooonnnnosonkh\b\VPmI|A:C2u-a)) ''k&&Q%%0$#""!T!  !q%+3;9C%KURZw`k7&/*)%$""q!!!!!!! !d""_"#!#$f%c&(I)+o,0p5v@F.NrU]RbgijJhh gg]g,ffeeeZeMe=CoIQW^3bgjm kid^WP*H/@z90+ &$#5""Z"`"?"/"'"!!]!""="i"#8#$%d&'q(),168>FL~RY<_fkopqq^qxq6qp~oonmvmFm|mmpm1jhb^WPHA92-)(&m%$$y$1$##! j[ i#6)P/87@GP"Wx^chj'jShhgff dcbb%``g`q6J"N"P"'!!!!!!""e"#$ $%&#&)[,3 9@G~NT[chmnp;p]pppppoKn\mmOmVmm-ljgc"^kWQIdA:3.*e(_&Z%$v$###b"!I 2.[' #*19AIQY+`{ePijjhh6d/@(%""A!7! !&! ] ) ( / s !4!"###~#\#$&J(-T18>|EMTP[afiltmnopepppDoo nnWnEmlj[gcW^GWPIB;4/*(U%$#k""~!!B K(B%"i').6D>FNV]|djhklkihgdh`]=Y~U\QUMXJHQ (2/;E=O#W`^ciklipfU`(YQJB:92l+^'8##! n 2XUd 5 !"[#@###$&(t,k05J; BqIQ9X^cgDjlEnnpp}ppp[oo_nnmm jgc$]WPIBn;4/*'%C$""! /`t*5I$")~1V8A!InQPY_meillFkihfbn]Y/T_O IDA>l",6q@`JS[ah k mjh7b\UME=y5.7),%Z$"!A \ {  {!M"%#(####%z'+T.U27>EMU[(`dhk@mnpDpqqwq%pgooIon?m[jgb]WPJ B<5_0*'$#""! 1s' %+c3Y:CKSg[agTjmll+jh~d`bZcUO8HB<84:%'1B;6EOGW^:ejiGlBjiod_XQJ#B\:2,(?&"#"]! O[- 3!)"#####%('*A,04:A]HPOV\{`ehlmopnq[q_q*pboo nmlifag\UOI7BB;4/*v'J$#"! CY[|"1'-5u=E%MUC\b"gjlkkdhfa\hUOEHA:33/:*C"+5@JSZbg_kgk$jfb\VGNG3?7R0+($#F!f z!"9#)##$$$&;(*-1i6QW\aei\kmo p?ppp&onnm9khgd_UZ SN G@:[3.)&$u#"J!D ?'h $)/7?4G[OW^ch|jl9jjhgdf^lXPRIAr91s*B%{ k&b0#:DNWV?^diFj^jgeI`9ZSLE?=$5/h+6'Z%("!q  "8###$$6$%t&(\+0.*38=>EL*R4W\\a1ejhHklnFnolo.onmhk{i\eva?[VaPpJDD=71v,(k&$-#]! /h#'->3E:BkJ|RYY_dhj*jhhd`XQIA9`0(!V  *>4W>HQZ``g)ik`i_gc_;XRTJC;]3.k)&#![YS !"#P###$o$%&V(f*/239?F3LnRGXG]Nbe{hjmmnnnrmJlDigb^XMRMG@:L4.+'%$-#!! ZO!H%y* 06>EMU[aewi iig"ear[SjKB:71P' {' J$l-8CBLU$\8cgjjifc$]WPIA: 3.*h&s#!wJ(x3 y!"#$#U#I##$E$$&n(c,@0-5~:@FM(S~Y^TbBf8hkElLmAllk ifcf^YSNTHB9<4*/A+(5&#"!L % "K#'+17]>>ELT=ZG`Ydgh'gdb8]nXvPG=55,#T$fSj <%./b:7D?MCV^@eoikklig&b]VyOG?93.)&" m -!:"""##6#[#5"""?"#q%'+/4?8>[DNJQ4V\_bd"e1d,c=`j]hXTnNI;Cn>9[4]0%,)*&2$M"! / *!"7$'/+0H6}GQTYfafjkm!kjmfab2\7VOG@M9}40.+&#!  !"###B#{####3""#U% &),1"5):S?FLnR/W[_C`a`_w\(XSoNeHB=,8N4r0R,)'S$#*!![   !#%x(,16D5IO}SXgZ+[jYXTOJ(Dj>{8u3/-]*U(%$y#$""3"!!- !"$&*8-2A6O$E<$2/( y {?y~- T!+6@J[T\d$hlmroMnmjfa]WPIRBCMHyMRVhX Y VUPL9FU@h:40Q,*'%$D#o""D!!!_!a!#$'*.27i41*!D )Wk9 CA%01:kDMU^dikfmn8nlie}b!]X*QuJPD>;8<53L21100000000011y2(234M5@678;|>_BjFJOSKWXLXVT?OKaE?:c40-i+v)'~&)%$$$0$#$H%';)_,0549n>GC@@RBFI~MKQNTWXXVSSOK E@];51.-E+k*])^((5''''(),[/26;?DJPBV[`ncUfhjigb]VZNvDX9/0%E ?KMwy10 k"K+5>GRPzXe`.ehj\lmntliebK]Y,SNJFDB=@??h?I?l?)>>? ?q???@ @AABkC#CDEGJIBLNQUXXZ[M[2XV$RN I3DK?z:64&2100/i..X.-../1 36:>yBFKzQ,W \`ucehiigc]X]P F<91(4:I I3up l 3$ -6?HUP]Y@_ebgjl!n_nmj>fb^ZVRNL7IHGSFFFFFFFG[GHH+HFHHIJ0JKuL5M NPRITzVY[^&^]^[YU1QVLH2C?-< 9877&6a55!445]568k;@>%AEIN8S7X]bdgiKk!jPhd.`3)!Q !vmE"Gx;4 J%.7?sGOW^bfBhk%ln!lifb` ]Z VSQWPNNN"N!NNTNzNONOP=P{PPPQmRRS;STUW+XZ\z^`kbb(a_z]+YV.R%NJFCbAQ@?>>=<<<=6=>@fCEIBLPUFY^xbe;gij.j[gd_,ZS~K@@5+"CU R0ki UWj &&\/L7>dFdNiW ]behfjmnxmjhQexcBa ^~[YXVVVVVV1VaVW[WXfXXY,YGY~YZkZ[\?]A^4_a`b cdf"eeGc`]ZWHSPM$JHHG#FEE6DDDDDEFcGJMVPTgXA\_cehoikijahtd`8ZU&LB7k,# ,"vNIxx fp&.Y5UWJY\^`bdJeghihyfau]DXSLD+9|.%]Z \Vy*\HWS"~[f y$<*1R7>G]O[V$Zp^Hadgjkl kjjjEii hKgghIhehfhHhWhi$iniij j/j=jnjGiihh.gg fffgNhhhhhOggedcb`_/^]6\[ZYYjYTZZ[]Q_`bdcdOeeggfuc+_%YUPjJB9^/%D J:UY6`h lKl2 v{!(.#4";~CKRWWlZ]a0e+h]kkl^kk}k%jjkk~klkkkkkkkkjk:kk3jj;i-higff efeJe9efgh}i iiiii,hmgfedccGbaa0``aZabxcT5,$,u Q!RMdey3)T?- ,"J&,+2:zB GLtOkRV[4_Mbd$eJeN7?/Y'@ { % 0NwUn@ )7{) ] aeI#)/6*;?BFI$LORT?U6U)UyUrURTTTvTTTT'S:QxOMKIFCA9><;:::;=@C|F{IqLdODR UWY[\j\]]t]O\BZYWW"VV`VFUUTBRpODKH(E A>a9A2+7#5q m\Uh3@kj0n{oTX. jr#)o/58;>@CEGI{IJlJCIIMHHGGHGG&EDnB@>bA{DyGkJM]OQ&RcRSRR@QOMLLKKKKKJ:HBEB@^=;8;47.') ?f>r! ~u0[`\JDV1x:o0p@5 B "p(<-`14B68:1<=>????->r=<<}<:864s1-k(`"D  s NSD\oF|iyOuUOKfo tn]?ni b &f!z&*V-.0/0124 4544M321130U/Z-,*)J'e%D"  #:N& #%(i+1-036]89;;<<=<<;B:98A7w6v5>321O0c/ -*'I"L,W w8=}#K3gb~^\T\k|)p%H * . V e"$"%&Q&'r(5()*) )((X'&%$#!g{Z::h{'NE!$'*],.W/0112D10/P.,+*)h(''4&$"7,  FciK=b|v\dU^^dgsdA r} ] R{38GL] g ! , 6   spB<"a$%&'((.'T&1$"! n.[RL/ 0;9m zN@bBKOakq\B [=  1|M>? L u beyQ%l  8`)4pY |05i5'y{'oO7En2;B\klR6 cr1gky   - H v . t | 0 xKGv3DY ] : A*T= FLDn p 2wn1[h(}c*|C-4Yw7MSXTQGD*/X[%y5fCp{;^UafR!*c48 w !  L?+:Ah~Tzg&f0$1Tfhg9W^TA<?K?  OtvH;*&UW` "qcLcdVT } \Qq,`ljmRaB`E c=99GOON9LSH<276,"(6EcV,2d/LpucDA<* &JjO b .@N[g`@s8;!"Z~XR{?E$ !qPF;=HK?,IUN7% 13 %9H*0\rYgeCwI\GE3rQBEGMMOO^w(675tn5&XkVMp++sbJ@IJ27QaT0%:1%66''4U]==JI))mPDFKI;!&_sU2=&GqyzhUQT{ #)oTG8">agH!64,;:I3,IdT9, *\ |h]`hmfWK@2+,1,/?Xq{pbhzg+)phUPLYb _<$E[]C3(..5FHJIWS/BI2L,{mb`fiaO?2% "&  -7GYo{= /Z{ZNL=DZP$ "8XW(634D*JuwZI?BC0#)<OM+:AbJ xm_XZ[TF7//7@A7,&.7PtmC'apd\\[DDb  `3% 7B+ (5&AG/ '_kK>8'/M]P7$6YS[2&{n[QMNKC61;IPG2! 4JgiO8=o~pd`Zk  ^:! 7'!"7<!HU5;rd;'@W`YOLEj>=C- n\RMNOMB=GRQB((JlkH?D89Lhurp|!-hC-7  # /A- 5SSB7@bY3)1.1:HQ[nzmr&GG:|l`\VV\`WLKH>1 "8[x~_EDOEF[|}(wL) .    + ,-$7Vih\YbzoOFHDA<=9Hp1O[A#}omqmkqqgTD8+'&4Ldstwo`TSXJMh sokS2  0+  $'+*%!AdyvgXcmaNFFBAEH;=V{CVC)z~vcJ4+'2=M\eihjg`WRRMYwiK:*!   13/ $*+$&+0/!(EhzqXPMFB>>:=LUG=C` ,<.u\F66:GRY]]`chhe]QNSibH<*"%" >-q,)ky+e];)?/i!$2%$"G [  e &     * n } G V I ]A^ nDg99L'wD  1g*qm4f xDxEJI  !"#$$o$ $%%"  k w  7        D v Q I \ Y [ z  M  ng':h'Jpx4 HX#:Ta`A)7Uah</q W!!"$%&g&X%g% $+#K!k 0 d ( { d X x    . ? \ n  ' ,    - I   * |  f qF8=%v|PnRjo,]5  `~KV}-/ li !!! 0] > a e (  ; |  * N  b =  $ / (  f,vE|lpz#)-0Q)d1D,b*s&6^   2 e S E b L .   ! ? d  0 ? Y ] T . p e Y 3 !  !  * b  \ 8 oznB,IF=(Yq&k=y~eXL/okWDK.# TBS!< + > : &      . @ G E I N V T M 1   H k ~ j G   $ % = p   +   Z'.{w9l=4r0x`bnIm-L*srxs^ \   pcV=<0.0:BQax O d 6  6 c y } A   IenC#Kv']Du<zbppz[P$n,-}    ! ;  i B,GSQ 7^&:rV6)  X  = l F p " f r|*p&2s}ba4RU=P8NI~OY  :  = bx8g-26 rQh??ngv2Z}O5aa 6 H S [ } z z  . ` . c0:5q,.}`8#U~P7 ] s|W5 zR%   CXn,0P`ewj:zh`  = - s . } e  I ,c&#  +  "  C C yW\ o 3VwGpqEX2X${,-2D&$  2 L |  ` z Y f 9  D n 2 2 Z 2 ( E E @ D = Q  ^ | M ^ yU&_$^UwO fRe=Mv56gicVH-A]>Zb\ez5m94.eK [ I A y n ^ Y b 1   3foxtTduh NPYKi!x~6x!fbM]f ) T E  (  Z e q ` B 9 R _ :   B i T y:)Q]nNHE =G2~e$yP+ gLk z}fa`P3 ;de&MQNyL5^B  m   f cQc(zfUSn4)Q+G{eYV5 mS4 s 4M J [ 2pv lRjQV`Q|6MD){N_ndUw %"3$v?)E5@e n;hJiV?q0G:b?I?TT6n@o wlQ)5>?^ZGM?pRtDNHo'c8\#~c q ^ R M&}!Sy M VHI[Id^tZ_'z `plH9dh'I1@@PZ<D  e qwpy`Kct:r*9k6 b s */U;w_qiTqC8U/d6EYWU|3NDJ9+"kzS DO# A > Cp(?\,?!t9Pg!""#$%,%$#"R !5xAh q Ff('6ad6$BFPqn=)<`Ttf8DAup};=6j ] h 6q= !!g!K s V p!*"#$$%x%%%&&{&'`'(r()*+,-./u050A0./-+)&$!((k0)| RKQ0\k2M lb28v  x5 _Zs +y$ !$n&([)*+++>+S+C+'+a+,-./A//////0 0g012V335!6`7v8L9+9:S:L:097530.C+q(&+#"L LD!4B ~ THMvPEo9OdDnz1u~j?G9L>Z M mW" $'~*u-}/12445X56!6v67D789L9:::99^9:9c9:o;.<= >%?Z@B C+CDDE)DDCTA?=;8j53i1r/.S,*(&R$Q"!x 17 i  L9}D+8D MM3gc}8t*b}H { >C7# &Z),,8/U258:<\=Q>x???@h@AAsABJBC{D DDDDD}DDEFoGnHIKLiMO_PQdRR#RBQPOmMK9HEB?=E;v: 976a4k2/-+)'%#!{^_}t W +-)A KynV\ c ~!G%)-047:>RACEFGHIJ{JKK$KLKKL.LMNzOOOOOPpQORSTUKVZWYZk[\]3];]T\[ZRXVSPMOJAGeED(CrBA@6>2<69742p/-+z)'&$Y / J!v 91I~V2*&N{_Z(qXk b DB^"'u+034b88<?CKFIL8NPQRSTUUUUVVCVW,XY'ZZ[U[[[\+\]K]^_C_`bcEdke0effof!edc=a(_\ZY[VZSQONMLQJIMGECA,>u;8631t/+'#!4 ;:VH2&K%W| I"&4*9.317c;W?gCRGVJNHPSUWY6Z[]\j]']^ ^1^@^b^_0_`abcJcccccdd2dfdde efg}hShijij(jFjSii%gfdbs`][YX]VUDSRTQLPNLJKGYDBA->e;9793/*&\"i9-V ^5.ovNCBt F  B ~ ( J!%)f-8165:">BFJNSVAY([>]_:`abc cd[de,e^eefRfgmh#higiiiii?i2iNi[ilijiij5jkl"lilllmm3m#mlqkjiagf"dc4a`D^\[tZwYXWUiRPNMLJ_GE$B_?[;161c,k'#] y(S7=$6 (:^rrdM" $)%-048<@EHLP\TX\^`b1deRfnfgg gOghhjhiijjjkkFkkkk'jjLj4jljjjk=kllmSmmmqm llllllll8kjiihCgRfSdc]a``_T^J]+[{YWcTROxLIF-BG=J72.)$lh )Zp  " aR[ $'H+p/4$8;?CH@L>OS/VY]a0degYhfijyjjjjyjjkk]kl=lmlmmmmmmm;lkkk|klDlm mfmntoI@gCG~KOSVY]`_bce_ghijk}llm$mmmmmmmmmmmmn~o*ooooosooo~o*nnCnJnop:ppqqtrrorrqppCookonnnnnnHn*nn mmmll9kkk*jjrjDj*j1j0j,jhjiageb_[W|R LFn@:3,T%pZsb )/2<UrML%IGcFEGFFHJNPQU~Y\T_be?fh=ij[kmlJlmm.mYmnmmmmmmm_m-mmlmmnTo5opooooooornnlnoQp.pq8qJ7%/) "^ VTsVUPSPOO&OP^R&T5W!Y\_begiUjEkklilm7m#mBm"llVkkok'jjj:iiMihhi#ijklmemmmnIno onn`nopq{qqrr-rrsrr;qnpp,oongmm%lkkKjihgg?feeWdde=f0fghiklm'mnhn$mlJjge_a]XSMHA:3-R' ' 0`^\ZZYxYZN[]m_ad fhjklmmmmmmmmm&l2jiihyggf)e%dfcccd dfg[hijgk klmnoGoHo>op|qrnrs!sUsst0tLss qq po)nlkjxi;hfed}c3b?aa'``<_``b$ceEfhj`kmnoop=onljh d`\VQKE>713*$g^  UedcEb-aa(acabceKfh8@1*$4?:28 lgl;kkvkR:U&X\aeYiloqysXTeP[MHJBHJFqEcD(CBC$CEG`JLvORV[._dc/f,i/k}monpq[q|ppnmkiec`_[VKQKD=70$)!"Z1m mmmxmEm`mnnDnmmn"n,nmnnCnbnMmmrlNjh]ea^qZW%SOLJBHFEDD)C?BBCDFHKOSHW\afjHmps*uvx.xyy(yjyWycxwurGmidL_YTO1JGADB9@]?O>=y<==?mATD&FJ*MhQTUZ^0aeNhAkFmyopquqpoo\nl&igeybV]YOSNG@92,%`lmGmmnmKmn nsnnNnn%nXn?n n.nVnnnamlkieb?^YUQLHECAL?w>Q=,<;;;<=?AEHMRXf]c.h?lQpRsuwlxyayyz:zz y"xuHr)mBhEbB\PV!OJ.D@=<;A9S8X7656r7"9:=@DyGKPTY]Yae;:/8X7D6P655567[91; >BVGMS4YX_9dinvqu6w xyzBzIzzmzly`xGu\r3m gaZSLF@< 7532111$124X58y;:>B)FINhRW\aehhl`nqqqq(ppvon^mlkigc'_;YTdMF?823+lmGmmmnnno,o@o:odoooGoonnAlkigHc_[%VlQ@LFA=97Z43j10080///0]02y4+7;{AFM`TZa'fl2pPtDvxyz7z)zhz?zCyAx/uCr*lg4`XQvJ C`<730..6-y-i-%-.0&1f3b58<@CH!LQWR\afj***+,M.1W6*;*AHPTW^ek;psvwxxuxxxwwv9sqlf_$WOG@94/->+N+2*+ *++,,,~--/H1I47;?ELK=QX.]c!g5kn[p\pppSpEpoo_o~o~obnLmjh+du`[6l2/,*_)y(()K***+'++ **++(,.26=?CKKRZagmquAvwwvwtvvutrpAkfz_bXMPHA:50.,,,U,f,9,,, +++,-0C26f:J?ELRX^cohknop{p]pppp:pBpJpbonmk[hea] XS lmmmmlmnnopq4qqrqq#p"liWd _wYSLE?x9m40i-_*(-&d&%&l'a(x)-)j)))))))R*+\.28>FWMU]pd?joBsu{wvvviv ttqokf_Y;QJC <62/././---->,,3+v**]**,.615:p@FMT!Z`eimo?ppqyqqqqqrqqOonljgd_[lom3mamllm=mnp"pqbq*qpokf`[NTMF?9x3/, )&%.###$%'''(((Y()8)S)(b()U,H/]4:]AHPXw_fkps~uuv>uu_tRs^quol7gau[SLF?J:E5v3;1111140]/T-,f+6*4*)*+.K156-;iBHOeV+\Pbwg(kn9p\qr!rrrss$sss5r q.on;khebTlHllllXl7lmjnppqfqqlpmhc]VOG@h93d.!*'%#l"F`N%U]d(jsn7qnrJs,rrrurqpRmj<;:,:Z::z:852Z.,1)(''')*.28>ELSZ`fjnopRr2sstTttuvVv>u{u tUsrKpnllmm lll lVm$noppooclha[TL'D;4.)%#"!K ~ & !# $W%[&_'()*D*D)f(T'm&'>(+..4:XAIBQDYQ`:gk=npqpqpppomje;_YTXOKGCi@?t?m?f>>;x8p4G/,U)w(-&&%&'+>.4j9@GNVK] chm oqrt tttuvvvWv"uu|tsrpmcmlmNmll,lDm)nop p"nmhie]W4OaG.?740*&#y"C }t !"$W%'(*k+,T,~+*)))1):+V-28 ?/FpN]VY]fdXhlno)nonnn`n+l=id_ZURNmKHzFsE7DDcCA>K:50,s('&%%n$%j&(+05;BJ QY#`[fknqrt%tttuvMvuv&vuuuitsarommmSmlllmnoojomk)fa`YRJBq:2-^'$v!!2 &?'o!"2#%.')3+7--.f--),/+Q**-+",m05wAP=272,(G&$A$#\#$#&F(,1G7>EMU]Hcjn*qrtuu)tuv v#uuuuuuctsnmmGllkl m!nlo=nmk5hcd]V2NG>7k0+&$&"5! *j'k !# $&),(.01D1510X//:-..p26=DfKSLZa ejDkll\l;kk_jjbhfc[_[eWiTRQPPONMKBHkC?39b3-X(%&#"""f"$s&P* -3:[BKJERcZWaDhbm?q_s u!uuupuuuueutu u5tt/snmmelll l$mJno+n'mif9`gZ[RKC;4.Q*(%#""N!e 4  !X"$K'*-K0\2j4!45"4442P11s48?ELSY`_e iok.lPkk}jjViigeb_\%XVULUYU.UTSROL!FA{;42-'$"! !"$''*06>FOiW_fllq5s`uv3vzuuuu~uttPtstt5ssnn millll"mJn^nmlh.c]WVOH@92,)A%$\#F# "B!! !Y!"$(+/x3158W9:;E;:987:>DJ:PEV1[a eijkkGk jPihh+fdbT_](ZEXWWXX.X-VU#QMH BA;s4.Q($T!!4   !T"%|(H-}3I;ICeLT|\?d^jpruv?vv`v5uutttBssss'rrnmm=lldkkmnnRljfOaoZT LE=50*'%*$V##q""N!!!+!(!,!!#%)-2E6:;=S?,ARB(BA@>>A$DVIvN[SXw\aOdh7ijj9iihbgfeca_][wZY>YZZCZWXVRWN7HqBa;4.`'$!G Y "%.)/[7;?=HPXa9hn:qtuvvv]uujtt s[s!sr]qqnmllCkkNktlmimzkOidY_X QRIB&:31-(&w$j##o#N"""!!b!i!^""n$t'+x05Z:x>B~DGI&JI,GFF[HKWOSW[_mcehijniiUhgg fse]ca`T^][ZZZZfZ*XU`PLFF@:73-'$ !O 9n!J"' +3u;(CLfT]fdkosuvvbvFuu^tssrrWqqpnmlkk}jjl-llj'gbj\UNGd?8$0+'%H###%# """6!!!!"G"%'(- 2<8=BGJ6MOPP3NMMORUY3\_behj/jjiiPhhg!fDe!cbiaj`d^]\\[ZZ8WTZO1J[D>82-4'#! XIz !$(/7H@HfPYainr~tMvv5v4uuTtsrqqpponmlkkjtjklMli>fU`[/SM+E=6U/*%$]""""~"i"A!!!!!"*"%Y(~-3t9?E=JNNR9T~V>VU9TsTVVXS[^ia cehjllljjj$ihg{f6edcbaF_^]{\oZYTV@RpMGBK<61[,'$.! 0; 0 #&-4=?EiMV^fl-q!sRuuuu/ut}sUr qGpoo?onmslkjjAjmklkhez_YRKDP<#4-L($#"c"q")"" !!R !!g!3!"_%-(.;4E;%AGM_QVYg[z[s[Z|Z\^9`cdfhk9mnNnmlxlkkGj^igfeeeca`3^]1ZXUKQ*KF@;*50,w'$"n!| Y "%+2e:BK`T\?djpru)uuttt=rqponnennm l@k;jjj7kTkk hd^YQJC:3!+'g#"!!!!!!S R e !I!$(S.74l;B9HNTMY\__s_~_O_a,ce:fgi;jlnoonn mmWmldkWjihLh.g|ecca_]XZ^WSOID??940,x(&#"!! !F95E1.:+)N'%$##F"n!!!!`"#(.6*=FFNVX^Xdjnqqqq=qqpoonnmmkk1jyihhQh]i#hgdZ`ZTM,E> 5.&"xyv U !{"s%)A/$4;BIQ!W^b[f@h9jkl{mnooSnnknnI@PX_1eikl7l]klmll%lymmOmvmi6i 6.'#m 7}4N6CJ B!"$T'6*.274.$+*/('&%% $P#g"!!x! . !t%g*2:AJQY_evhjjj4ii_ij60,+)(x';&d%$$_#"!!e!%  !%+3:BJRZS_ehiihghhhcF6NVW]bgi6ihg-ff:f#eetefvfggJ@NTY^Xbeirkglk0hc^HW OG@80+&m$"{!!l!!!!!N !!s!!"!"#4$B%l'H)+-16)70K+( &%[$##"r"!!? i&ah /#-)b/8?GyOW_chiih+geff\eeYee e]eCef[BhGNT~Zr_dhkmsl`je`YRJB;2,'%C""D!!!!!!!F!!.!u!!!">"#$k%'5)]+%.R17~=E'KQX]dhmoqmqEqqPppKonmmxmjmmmXmjgb[]HVOG@81,('O%$#""M!!! 2t 5#*a129hA-I(QY `~eHijj_hgg6f\eedkcbb}aaa:b@GO-V4\ag7jAmgm$l9gc\UM$E/=Z4.M(%""!W!!!!!!p!8!2!I!8!>!I!"7"#w$M%S'(h*-28m?F7LS:Y`)ejmop2pppp/onnmmhmnmm ljLgb]VOHN@:3-)'%$#c""!!F z.gS &$'+\2:BJSYZbfjk7jhh gHed]ca`4^]t\\2994AI1QX^dhullm li5e_X'OG?700)&"! !T!a!7! !?!"#A#$%&) */3:@GmN%T[agG@OBW^^(ei!l^l:kihg5da^.ZW+SjOMKx"*49=GPX`djglzmkti cU]0UMZE<4-C(`$>" S +  `Zp @ !"#$$8$t$&Q'*$,16=DLSZ4`ei!kNmnoouooLonnSmm~lki:fa{[TNHG@93X.I)&$u#Y"G! f^'&$)19A;I{QdYC_f2illxlj1ifc ^ZVWQALIGDA}]$.|80B+LUb]ci#kml4jreO_XPHU?800>*%#! CP !"#$/$V$Q$_%5&.(t*.297@BH.OV`] bfimnooooognn5mumkjh9eG`"ZlSM~G%@I93_.s)&$?#;"*!s RSj; %+3;CKsS[[ag82-)7&\$#;"!,l5r"(^.P6=eEcMUj\bIhjmllbj-gci^+WQKPC<6y2-9$X-7BLxU\ch4l&lMl*heM_MXQIB92,(%I#! D *. !"##$a$p$<$L$%'),17a>FM:TY_dhjmmnQnHnEmlkjhfb_YTLN=HB<61J,(_%## ! f3!E$*084?GPW^chk[ml0l ixfo`ZoRLD<&4J-(,#Iz()2<{FP9W_dikzlmigb]ZVOTG?8a1A,Z(%#! :7+7sm !"#r#$ $;$0$($$%k'*.~3{:6@GNTZ_d}gjFkQl{lllmkjFhfc*^ZULOIDf>944.*'$#L"!T QzUmVm #'.:4<;COKWSLZ `di~k9lOjj9fb[TLcD x!b"o#=########%'D+-/q5~;BMHOuU[`dgikIklckjhfc_[V\bfjJkkoichGd0^VNE=+4:*"` o%/]9DMaV\d/hlkkhea_Z)S)L DC<5/<+'$" ]/{  Q !h"C####u#j#e#L#b#$$%Y(,S16=$CmJ PV\`dg+i}j6jj hfH5," b ,g(3=GPX3`fSk>lNm@jhd,_WXRMJBZ:3/A*'#!WU !-!"S# #u##g#%"""")"#&e)t.328>SDKRX`]7adg[h-hgfMc4`J\WRmM GMA<462c-*W'%%>#m"^! I[98!"&A*,/5b<&C2JR:X^bgijigdPaZRI @6-)$ ) a= z",|6AfJR[bhkhmclk#gc]X8Q=IA:q4/,'$!  P !"i"#M####R""b"9!"S"%2'+/5&:"@ FkMSX]ad!ded*b_[W+R~MGAjGQYbhlpm%njlk@gc]KWPI$A;i6c1O-\)%&c$#0"!!"#t$$$J$$%$5$V$"#""5"5"s#%#'*~.27=9CIOUYc\]^n\ZVR-L[F@;6G1.8*(&@$"! (  !$!&*/ 4:O@GNU[A``cgiZjhf\aI] VUND;1(ds, kH I"X-M7B8LT^ek#lnnWmk gbz]WQ#IB<62.[+((&W$$#R#$ $$$$w$\$$$O##J#*#P$Q%+' ) ,L/{48>DJPU(XYZYVR=MnG[AP;51-~*()&n$#h" !o x e 7 !"$4'X*/4:@GN95K2.,H*!) ''|'r''''q'0'2']'u's':';'p(9(*N+..04I8Z=CHNzRVWXVTeOKE9?k940,*(G&% #""k"!!!" #5$a&(,06X;AGMTZ` ctgGiBGM8QHTUVTRfMIGC>\9%40_,*(&%g$`#S""K"O"*"#%'*.27n=BjHGNT[@`Kdg-jklUig a\xTLA7-$ C J c$/9CBFJOURUVW6U:RNJE@<4730.i,*|('&M%$% %1&( *-;049>D INNU Z`/cgimkkjfcK])VMDG9/'Q( ,N mi2(2q?DACbFJ MQdT;VW:WUS_OLGC?1:74e2I06.,+* )B()){+F-30\3p7;@EJP+U[`dgkjkm kGhc_XQF?3*!i 7u|m Q`N#,5g=FYNsWH]c0eik:nnnOkihe@b^ZVShPNM-KJJ IIIkI5I?IrIJJIIIJtK KLMNROQ.SkUXZ\c]]]m[Z W+ThQ MIFsCA.?y=<8:d87J667779<&?pBFJ{NSXv]ha|e)gj7kblkii)d_`_ZBSJ@u5x+#D0 SEA~ 1s#I? V,$,5G>3>?ADG8J5MQuUZ+^dbHdgvhjk"jgdL^ZqSKA7-$2# :th :M( $$s,4<;CFKSZ*_jbfJil|mmkjgfd@b_]\ ZYYXX{XyXlXXY;YYZYYYZZ[s\V]]_`ac:defReedRb`_\ZWUWSQOOM}KIHYFF+EFzGcIKNQUvY8]`cfbgj jljh$cs_iYTLC*8$-%( @,sg:L"y VE$o+29!@HPvWl[_bfilPlQkihgfeUcb`` _z_E^^^^_'__`B`{`|`e`M`B``a{abc7ddefghggfedzcbF`^\ZXVTS1QTONMWLMNPRUXj[_b df6ghkij iyf(b;\XRLlCM9.%M| @0E.e9]& l "r")/5=HEwMTY];aHdiklldl/ktjj>iHh:g>ffJf4eeeeefTfg&g~ggg}gTg9gAgWgQgJgLgdgkgh6hi8iWiii.hhh}hggedobt`^\ZXW&UXTT>UIVaXnZn\_~adgfghjiijche`\gWRsKCg9.%/ ][SdJYK 2c[ $!C',29AIPU;Y6\a/e0hijjjjj_iiaihi*i6ihhhi2iiiiiiHhhzhgff5exddcdcdePefug.ghiNjjLjPiuhfeZca`4^^\[5ZZr[o\f^_abc/defjgg5gg]fVb^YTOoIA8.%tI\ G4|QbW8g|] &{BS u #(.5=ELQUNY]bezhyijjjj_j/jIjkFklkkk[k9k,kjj/ihhOyFeR 3IwO D %*1l9HAGLP'SW[`Qc2eCeeeeffgthRhhhh?gg`fedceb`_^]\Z|XXW[WWXY[P]h_bjdff1gDh\hiTi0hh1gfee%ddVd0d6d&dd ccccccNaf_[)WRaNyID=[4+#t (T(tH\^{64K$tn s Dsu!&,4e<BbGKQNR{W[D^`aaaabbcdSdddd6cba`_n]r[^YWUTQONML'LfLMNQ SWZ'\_uafcndfngBgh h7ggff]eednccbb=aaha_]ZVcRNSJ1F]@:1)&!yq xhFLy6?YQ$Z@= fHwa"([/r6=|AETGKOTVXYY>YY1YZ&ZZ[[s[U[!YXVSTQOCLJHEbC@?>??.@sAD&FJNQcTW7Z\P^`a~bbbbxa`_^]\\0[[S[ ZY VxS?O K,G|D@<{5.`&je( nz<uSn=+BR }w#G*;17<#>ADHKNpOPlPWPPPPPP~PQ Q(P[OCM8K9HFWC@> :8S54333458;?CdG1JMQ2SVXZeZ[[i[ZYXW VJUUTTS>QLOKHUDA>;o60)"{Oi hbERc,:in#c~G9E@ S_Pn%^+15%89<>ACnDE4EEEE>DD9D>DrDD,CnA@A><9s630.,+*)J)6)*+<-048u+%F   R^_ < bWJDY4uD^mu D 2/9`%$).0Z24 57i89:;0;;8:999<98Z754i2Z0c.+(%#2 qnOm #5&)-1447:=O?ACCuCCCCPBBBFAAb@s?x=;97G53K0.m*J%lO&U & m3(Oi)^SxNn[TSsvz]r5/s; I z#u&)\*V+m,&-0.A/a0-0000&/..*-+*P(&$" h`! 53Db`# &H)[,.19356{7'78,8~888M87@6j531/.X-+*8'}$Vm s  2~!;*g`a_Wbs~)QqddQ/i i FM8 `!!"n"#$l%"%v%%k%>$#"!@]nQcZ)  T l [ 1 % N#%')+p,u--.N.(.-s,+*n) '&j%P$1#9!{x(\By z IiK 5UtZcS\\eitc@ xeb^[Q o J 0Z4d*p7f+ * : G~" 6R!"$$J$y##"! mN_~Wo6 v j &,}BH3a~N=]>JTjv{cJ:2 $e Tn`cLJE[ |  N{% T=Ap: -E\{K( 7k&wI6 `l'WH3L=+xs xS8Fn-=Lm~~_DnZnG|y6x* # '  # *pO.^ I 0 ^,: 0 . M)]_9Q,\#I.6^}6NXb^YLM5Ej{RWw(Jp#p<!8gR?cOyP4gTz`m5&6[kjh;W\TB9:KD ,"*bW &CZ\@6%]NnmoBjF)o mCZ0hb}nZn@\?gB;=KOLL :LXP@045(/35H\{b@&m<Uig\OW\O2 $Sz?pSJQkj4R>}EH5!?a{^Y@E$ vSF:=HLC1UdY;&**'"CQ=+Hde>(j}T Ev)>6=2i^T:"+#/a-6O @nye]Vw)& v_E=IO:?ZhX4$5- /$ >G@=>OL(<H"#U(.%~{bWK, .^{h@9VF"e_LRY #mRG:%?bjP*"624K%J_I(,?UG $E: -[$y_YXG>JTE45CDPtdKBEYsv`1.w_I@Tc  `=*JafL!5! <@% %LZQG>KL-JT=E-ifeRBCG:06CBDV_M;=Spl;6dlTF7E`  V(  -@^\)2+EU8 *\|oK=>FF* =UU52z5VEojfT@51+-8@808C@D_yz`;3isf[UCLm  f9 (%"#;E+ %/#,PQ8<i|q`JB9 2Vi\>&4XFQ0)w[PND=7:BKQK8-5JQZsy]A)Dr{eYVp  ^9" ;,""  4B( /P\C'(Fo`< -Mel`SOKq36>+lP@?>CGMY^[M72Fdtv~tZ=.0/<Ofstfs*lB'=#   +E6 ?[_QCD[w{[6%))3CRZ_lukr BF?xeUQSXXSQK?5(/Kl{y{nT>:DDOb~y|"wM' 3!  ) -3.#'@bumXNVpqTE@<>?C?Jk1QbK*zqpneS>."#%6TltlkfXNOVR[s slgP1  /' '/1-'(Ovw`PZhbQD=9>IPGF[{AYI-}zsfR8)%2>Ofqoc_\RKHNQa{lL6"  +*%  (  $&+064$!8\{oRIIGC:43>S`UIOi';2{qeWD<?MWamoi^[YSMCDPj_F:%(.("E01#anR 04f7 G #%'R%"YYr$ n  k (     8 | z D O = kB^!oGl53I#r?  2k0wc~ I j;A{S \"/#%%%s%&&e&3# 3( ) @       5 \ G > O S e  W  v$c&:a I hw1 AT";VcbE7&g8!= jOVPS@!X#n% &'"' &1%%-$-! M t 8 s Y R x   & 7 Q s b      2 K  0  f pB24uvGfMgr'bC L^$Y *I! ""0!! ^K^fB d o  a (  C  < a c 4   0 -  a& uAqbm) +2H;T#j:'0y:.`> 7 . 1 c W D \ J /    A d ! D Y n i b : j [ s g @ &  $  , d  ] 3 }ozk <&CB@0\o*q/rzmg\UyU~5zYUI #H - L  ?       0 G ] g i e p j S * 7 ] q d P 5    / 0 F t   *   Q |,wwCy?7y+xqW{^yP<{]O W V   gduV;5.45BYr|} E u ^ =   ; c w y < Ibi?&N|+cFv@l|GbT2fy`n w f w v X 9  v O~ EPJ!">c"1ia=' !`  B q > o  f sr"j!;whvae >W6.T` ] ~ $  C _ 5774jT~ucG A^~ \e!Mw_Bjf  6 G W b { v  2 _ , b+99v/2ddzh w  f <0$_}5s k_n~V)6J]r?df{q :{qed ; + q * { d  T 5h' v )   b  >=H > Z 1X[5<-a y_=  k\Z%#)+5HZp~ mf(&-<!  , J x  a s T e 5  D p 6 : \ 9 - F H I T O [  l  : d 9 7P5 L3e!6~]h+;i +`y^8L^L5Lt%Mdfmx%k51$XA w X A : o d [ ^ l , " #   , s#@tqJ_^gaMR)`%-n(n"bOYb ' M =  #  W _ o d J C \ G '  > n [ DCG*Hc9> 6C~0bQUa.okLf%yV@$Ije`9VMT{I1WA s  m lz _L}q0#*~(2[%=o E]WnufY"s5mU2~p -}L G ~ \ 7u{},[,fbaGh( qbWrwu.% }G0'Z4r(8>F>*kv(ec}ho;r3G=Z:B6KS4k6dplY4 '71 miPn;OMf9dFBGDDV!8|x]-s x C t G O < K 30 N+iTA4eYq\`$| _p{S<ha7O= MV ! k ) r 3 #woQQpIR/g## a % J eA#fn|nUsE:O8m<Ojd[(KAbL@9x~d)QU  _ X;XW 'ZYW5l=ckq  ! Mu#O7f   < K(2$X^3 78Lkl> 8ElMyuP_'"]wL% l ` ^-> 5 ! !:!""#$=$%~%%%%&&j&'e'~'t'~'(|)F)*f*+'+,B,u++6)( %#N   e;Q0 o 5jh4Re0F_W.7eJ+t$  H ?"$' (b)***+A+,2,-./Q/0"0?0K0 //b/i/0s01%1A12234o45)5h66b655P32/-_*(r&;$!"@ M!X# : y;aV~X=tk<Pa@zdtl|LG@)Jd 6 X L"%-&)-+.?0l2-334}556h7>889:;::::b99P99 9:l;$;;<=m>o?c@:@@@AIAtAk@?>P "gi"&`),/q14^69Z;8<=>?F?@A[B9CCDE-EEEE{EMDDDnDEpFQGCGHINJWKLMN@N|N`NNNQM9L4JEH E:Bo?=;:t91754 1/.,+*R(&$!dlOX]=  j!*& E *[xWGJp ctz %Z)-1=47:=s@B$D.EG H I/J JKPLLMN0NO,OOP/P_P{PfP'P&PfQ(RRST8TUWX/Y[ZZZZGZZyZ"XWUSPMJHEFDCBAp@>k<:8453V1.,}*()%u"X. 9:%7jL 8::__qH!4H + 4 !&+048-)`%!`B & ^o=+/Y o ^ fT}#(1-H27iCjGKOSWZ\]_c`abcd]eDCISMQU)Yc]`ybscdefgngh:hiijjkRl$m4n!noo nnn6mllFkkkklOlm mnnno>oeoUo)ooHoopop_onmlkjihgf`edc.bLa:_^z\ZXURPMIJGlC>9e3/E*% D&  w&' *$&'k&$"  j!$'+0(48]Z4WSOJ Db>{9C3-'r  !LZ <B>=:8#6=44}46*7;>C>G_KvOSW[_adBf{hjl~mxnWnop#pwpZp5oooAnnnmnnoVopApOpqpnp~p:oo nxnano,opq/qr~sssssrXqq5qq qQquqq~q\qAqpppzp;pppoosnmlakwjii'hh gjf!dbl`2\YUTmOI C=81*# 1 +PI G{DBQ@d>>>@UB EI4M|QHU Y\`caeg4i:jlmnfnoojop%pBppooyonzmmgmCmTmno-oopp!pNp1oomoo oUp pqkrrsspsss,rvqqpppppppppppdooo"nnn5mmpllkNjjXiiiiiiGhg^eb`\WRMXGB'< 5{.(="Ig] p_FuSQO L\JyHI HJLP+SWZ^mbNehjIkl{moop,p`pVpkpsp{pkpZp/pooHnmm/lxlPlsm)mnnooFolooocnnno@p=q qrrsmsss:rqppQooopp(pApWpXprpDoo:nmmallbkk=jjwjQj2jGjLjjkskllbkjhfwc@_[WQLpFv@d93,I%= ? [YW[TSYRR)R&SUX[^adh%jlmn]nop_ppppZp oonn-mmclkjii hFh6hpiNj5k kklAlmYmmmmnnp!qEr+rsGssss7?0* #S?Q 9cb_]\[[[]2_acfLhk#mo0pcpqq%qhqxqlqqpjovn6m)lVkk j!hgkfdcbccGd4ef%fghijklmmn+o2pqrst tttss1qpoIn=mll]kjj(iPhgfzecb~aaf``k_` `acdegwijklmnenn,m_kj1gena]cX5SNhHB;C4;-R& 8~ Idh.feedcFbbbce-ghjZlKnopmq:qsqqqbqppp+nm2k/ihhgKfdgb`_ ]\[[\\]^`&ac]eJgGi jl&m^noq1rstuuuuu9tkrqmonElk~jh~fe9cb`^\[4ZYCYXXXY$Y[]U_ad fohjkmGnnnnmljiSfob^uZVQWKaE >7i0)#k \l2k|jii>hhhijklmoPpkq0qr#r`rvrqq(qp]oembjhpf~dca^\Z\XWMVUUUIUVX$Y[^Oa cf}ik-m+npkqsMtkuyvvvvvPLUH,DA?>=<;;6;;=.>N@;AE HMfRJW]bgkXoruvxfxyiy]yfxxw9uspkff`[U-O7IDA=e;?998966667[9a;a>sAEIN"RW\`QdhhlnpqsrrqponlkjEh1daP\WQK;C<5.("SkklkkklIlllmZmnno'oop,o{n~l}jge`\WRMHDq@n=:8655445z6 7*8)9;>BLGgLRXj^1chmqptvxy3yyyyxwvv0s\pYkfe`YSyLF@ 9O52u0:-,+y+N+!+w+,3,-S./036;@GN*U[b"hmruoxxyuxxwwv]uIrpkf`FYR6JD.=8\3C0=-,+++,-,-.0f148D940-j+,('&]&q&'(,()()*6*+.+,-/e3N7=D0KS9u41.n-++++++++, -o/B25:j>DmJQXg^Rcgl;npq0q5pppp=ooop8ooAmakhfb/]Y[TmLn[nnJmmmnro%opmppqq}pmj.d_Y*RKD>73.+(&%!$k#${%M&\&']'(.()j)))*+.28>FRMU]dkp^tvWwwvutsrYp_n`kgb\UN`GD@L:52/<-,T,6++++G***U+,.1>5N98>DKS Y_duislopqq4qqqqJq:q}r*rXqpoimyk}he3a]m-nn2mmlm1mnorppMp>qpoMk]g$a[T0ME>f8&2P.X*x(*%$#Z## #$%&J&&';'((((I((+m.R39u@H:P(X _glqt2v"uuut4rqpnkiN85t1/.z.'--/,+**U)**,>.1w49?xFeMQTZ`&eimoq>qwr-rrrrrstsrqpOnlig(dQm*mmm`lldlm>n0oCop opbowmhc\V>NG?82:,)&s$#"O!!"7#&$#$%r%%&q'C'('&&o&'*.4';WBoJjRzZ^bphnqt$tNtss:r97B543220 -+Z)((\'(q(+- 15;BHOVg\bhkoprrssstuuvueu tisrq]on]mxmmm5lll,lmnoQo=n"mkgau[XSKC;5.8)%#"! { j! !"#$%~&-&'((((>'V&i%K%&*8-39AsIQ?Y`gkooppepUoooInmlie`[VQM'H9C?C<4987,5 2Y/++)''&''(p)-H16ELTd[ybgloqr=sLssQsstvtttt}tttNssmmmAllQkklBm[nmml'jfaZ.SdKC;4A.d(%("x!  H !"$%7&()K*p*+^+ *|)((\()+0N5U;"7`3 .Y*'j& % %$%!%'*z/E4;:AINQX`vflor4rsssqrsssssst*tttOt*mmdllwlkGk@lmmmAmk&id3^WMP_H@9^2,'~$""B!\ R  ; !"-#>$l&')+M,H---5- ,a++^*+Z,05FPNEVH^Kdkors%tTtQssrrrrr5rGrs\svs_sonmcllUkkBk;lmmllj{gb\#TMFE>{7V0Y+m&$#4""(!! !!!"#%'*",I-./U//C/.-N-S-16p=DhKS(Y`0dhjlkkqjj i[hh6gf!da+^[YXWV*SPTM+IREr@;6`0+'W$#/#"a""$>%).4p:BKSl[bj_nrs`tttVs_rrlqqq%qqr3rRrZrnGmillAkkLkFllm_lleif;`YRKD9<5/#*&%9$##"q!!!a!r!!!"#&.(+.02w3X4?4s44T223'6;AGNUZ`id{h]j kNjjj%izhh gKfeEca_#][[ZYoWTPL4GB=#7=14,'1$""L!!!"$)'+/1/7Y?KGrPX`gm,qjrtttsrr6qq(pgppZpppqnRmQllkk1k-klllkhd]WP4HA:73-J)=&%+$M$'#""h"!!!""#$'m*.14V68R9:;G:999l<@lFKQlV[t`(cghiiizhh gAffeVd9c!a`^]][]u\[LWTNIDR>\8 1,!&#!! z!a"/$(-3;yCL{U\e:k prtVttsrqq%poo-oEooo~on2m'lkkkujjklClQk'jgc&\UgN F?L71+'%%$$##f""b!!!!""B#%)H,1(5@8;><@ABBAsA ADoGL]PUY]aWdfh hhhfggfXee~dcc bJaL`f__/_S^]_YUOJD>8)1{+&#!~!3 h G #?%*0=7@HQqY|ahdnpsstLs]rqqpeo^nnnn~nknnml6kvk jmjnk0kkj;if`aZ+S|L!D=?50 *&$[$:##{#*""F!!!!!"J$5&*/+48<@CFH:IIyHHcHKNtRVXZ]^`?c~egh`hgggLfee?dd>ccLbb[aaK```^[OVPJD>{81S+&# f\ !#(U-H4/8 1t+&#!s !"%k)(/7?HP^Y`glqrt:ssryqq#onomm@llhl8mlkjiidijTjjZh\fb]VSOG?8P1+&$9"""@"#!!| X V o !T#' ,2r9?GDJOTWZZZZ[]_bbdCefhYjBkllRkkZk,k jjMiihhhhngf4e-dcAaP^ZuUOIC=71p,?'%"" !% g g K!"!$n'-4|=&EKMV ]e]joqsssrrr7qpCnnmllldmplikcj:i{hiijig^ea+[TMF =6N/ )%&#!!!!!!6 * 1 ^ !s$3'-X3q:p@G+MS#X[_`+`abcevghJhij9kZlNlllllllldl"kknk*k?jihfge[d av^OYST+NH;BV<7 0,7(!&##&"'! m !#%+$1:"B3JRZbhUmpXrrrr+r*qpovnnAmm%llkjihhDhcii&hfc_YRiKpC;4,'#x! v ! ! y 2 J !T"$(V.3:AVGNTZ~^caceefh,ijgk k&k'k@klclmm:m`mmn nn/nmmmvlkj5hfd`\W'QKXEo?:r5u/+(B&$#""9!p! "#)/'7?GP ) g ! !"%)M/ 4;JAHOVp\`dfhikJlNm:msmm(l{l l#llm-m_mnKnoGonooooloJnxmkif}c_nZTNHB=8d3.+A(M&%X$m#_"!!1 !0"r',5==EjMUi]_cinlo5opopvpp&o_o.onnCmk#jGieh[gffggXfc`[-*'&%H$h#l"!!G  !&+3;CKS[agkmnPnnoHoo:nnnnnen=jjiNhaggfggUfc`Z;T*LE>a6>.'#0'FCsz ! "# %)-28@=DKRYs^YbeUhbjm#nowoeoo&nnDnMnnnnomoppq.q\qdqquq3onli.e`[ViP.IC=84l0,)'&v%1$k#""!l 3 !K%#*^2o9B#J8QY`8fRilmUmmnunnn1nnnnnvjmiiUhh2(9AIQ\Y3_eillllmmmmmCmnVnZn6n2j%iii(hhhiMiAheb\UN_G^?70)1$ :4$  !#x%)R,1`5;AH\ONUDZZ^b)eiGkmnoo6oop pop pqq)q$qHq~qqr9qqomie`\EVQJC=8I40-*(&&%$\#""!!%! !!!%7*@29_A\I\QX^eh^kkkklllDllmmmmhhhjhhhij#jRigc^WPPI5A92Q*%! 97 f !"e$ &)-16<B=HO$TY@]aeikmbnnocooooopKpppppqq^qqqnlBgc>]XS,LF;?09s41.l+)^'&O%$$#""g!!a! s!2!%+13:OB2J:QY~_fe-h&jtjzj~jj}jjjuk;l8llm eZefghiiljkjh*e(_rYSQJB;3+&"    V ^ !"$&*-^16<2BRHNTEY^ bf|j/lfnFnoopooopp2pFpIpCp_pqqq4pmje`ZU_O7H^A;940T.+O)Z'\&'% $##7"[!!1! f!B"Y&,H43;eC%K5RZ]_esgiiri4hhihhijkSklB_alcQePfh0ijkki[fa,[9SLhD<5?-i'#S!c/[gji  !"U#%'{*7.626<&B:H[NjT@Yg^bgHjsmhnp%pSpqp.p,p&p ooooopApq"polhc]WQKC7*/&)G$f"K z] g !'!" "#%s'*-26a;AHNTZh_FdVh_lhnpqLqvqq qpphpoolo}op2ponyjf`ZTmNF? 70,-('%$#""'!!6 A!#(o.x6^=E@M}U,\afhiqhJgfffeffhhiBjFRV9Z]^bjegjlmlVjsem` XQ6I-A691T+%#9 / 2 S \ F U !!J!!"#2$&'(+N.2)6<@BI#OUZ`ne)jmupqr%qqqqq p`oobogooonm|ie@^XRBKD(<75.U*\'l&$#""$!D \ &#0 #s)+/V72>FLNVI]bgi9ihUgfftfe\e4efgghKOOUZ_wcfjlnmlhgb[USKC;3k,&#!;  / ; k a ^ !&!Z!" "h#a$y&{(+|.2)6[;`digl%nnvmime]VNF>5.(A$!    E U O . % J !!!"#%&)t+.2h7=DK;QW]ch[loMqOqrqqyppgp ooooon9lhc\VP!IA93D,)3&&$#"o!v CI $T*19AeIeQY0`ejjjhhNgfedccOcLc'cqc:A*HFOV]qbgknwnnjg `AYPHv@]70c)k%L!  & !    6 K u !{"D"#%B'i)=+.p28H?8EL|S Y/_dilopsqjq\qFpppJp;p%ooomnlhci\]VOHH0@93G,)9&&.$#"H!> u (Pe|c $+2;CK$SrZb`g$k6kk3iPhgfe#cba`___29AjIQYA_ceKi m/n;nkuhDb[WRKB:12+/&"}!\4,  H !["*"#$&S'*+/3:@UG,MTKZ`ieilnmpppppep?pHp'oo=omlgb[U-NMGe@93l-()`&&1$#s"! C'3Z!H%-K4GO!WN^Feim ll|jj hf%b`g]ZWW%TIR?P1"*4M=GPX`ejzln2lj e_X PHw?8 0*n%## XH%75 V < !t"7##$3$%&(*F,|05`EM>SZ`+eyhlxno^ofooao4nmll`jhOc^4WBPJ+D>%7[1i+(&H%D#"~!v ivy4:lwX!&,4x;CKS[^a`gkmm|mzkjgd^ZjUtOJD@<Gi)R2= GQY_fj8m+lnkgd=^"WP Hs@8Y1+($9"& ??V4/$>J F!!"u#:#$B$l$_$%&'+.3g9>@}GNUj[Xa9eikmnzo)nnmlkjhe`[T@NGB5FNV]bhekOmwmmkTieaZUOHB<72c$-7BLU\chWlGllivfa[TME=y6/}+ &$!p Ton-?` k!1!"#G#$-$U$1$#$%(l*/w4~;4AIOV@\yaTfikln nmm lHjifcE]WQiKgE@#:4/*(M%$#p"!G Cw#'-C3P:B IR6Yd_doi\kmelljhZcb]VPFIMAx93-(aRQ(2 yFNU\nbZfj4klkwjh9d^X-PJIAV80)$O U%p",U6AK1S[ah:k m=lkvh(dm^cXQ6IA93]-)%#R!$ p @ !!_!"r"#P####P"""$S%) ,16= CZIPVe\(`{dg0ijk3j:i_fd`[UOID?94/+(&-$y#"! qzd!#).44;,BwJVRY_Odgkklj>iKeaMYRIA900' 6 8&p0':E N:V]dillljagb]UVwOH@82k-)C&7#C! 7  !`!!!"K"#.#@# """~"i"."$&).2W7=CJvPV[`cfghgfc`\?W8QJE&?:51D,)&#$#{"! K2Lc #'-z39@rGOV]hb-fiIkukjgeaX[SYKLBN9e0'rJ j A )4%>HQY1a_fklml7jfa[~U}NCF4>]7K2,)K%v#:!V Z !}!"!"5"H"""""b!!!!ED|JQnV\f`cded~cV`>]X(RLFz@;61-)&$#s"@!s i3Q "&+2!83?FKMU6[ae_izjkjJheb\ULD:1 ' .v 4#J-m8BlKS\cBiCkmll(ier_ZwSLD=71-)o&s#"!!!"""#""##""{!!a!7!!y!#%U(+0G49?]EL5R0X \_`a`_[\XS_MGA^EsLSZ_ehk1k~k!hGfa]UV7NpD;2( B4A 8Y &1;?4+"G W {? P"-8CMU_0ejl nXn mjgb^RXRKD>~9`52/9,B*Z(''&&&d%%@$$$$$S##H###$F%&)I+/I3H8>DK5PT_UW!UpSO`JD2>8\2.+o)W'%$#"!Z l b ![#$(O+06CIN*RmSU+SYQkLH+B:SK[jc5gklnn4mFj&gb_KZTNzHDY@>R;-86 4y210W/;.-U,,,,,,--=-y-.S./01p36:N>CIM!PRTS]Q~OqKFy@;62v/n,+8)f(&%$$ #""#s$d&y(j+/E4/9->D7JPiV]AbfhOklm'jgbP]hUMCe9\/&c=c $RVzV 7"-8 AK~S\lbegilnmmlifCc_[VdPKH,EB@m><::9w8 65V4{3444"4%4P455d56G67p8A8:F<;?CGL&OZRrShTRKPXLsHZC>:64A10.,+:*('&+%%'_(+.N2#6b;@FK2PV\aeHhailkjfcW]aWkNE;Q1(=H IS#r 3 (8&/0P:cCLUJ\ctg9jkmmm=jhda]yXTOLIGEsCB @?>N<;;H;_;x;;;;<0<==>>?6?@B+DHKO(QT5TU.SzQNCJFxBx>;9'643,10J.->+*T*%*m,u.v149=BGLR-W]ub)f5hukkljhlc[_XyQGa=S3")! i]Nk ,-<(2[;)C\LT \.afhjlKmlqjgeb ^[W"SPNLK%IHgGNF\ED;CCCD#DCCCDDEEF@FGfHIKNQvTZVmXUXXW(UROKHEB@B=<+:9754#21P1a14609}<@EINbSDX]|bXehikk:jqgcr]XQH_>4Q+:" 8 >Rl]E+ K7 *-2:BJT1[adh ilmmkri f0caW^Z[=X7USRQ"PNMLL>KKKL8LOL(KKKL LMkMNO_PQSUWZ/[]]\[iYWTTQXNXKIG DCSA@2><; 98q895;=ADIHHLQPUZ_Zc0fhk*kl3j$gyb^XzRI"?4+d#j qn ;p<u  g LC"0*32$9I@IR:Y^bldhPjmlk hOfe%cza\^\gZ{YAX WUTTSS6S`$cg5k4mmkji=h_gIeca`_u^]i\f[[ ZZ[6[[[[[[-[[+[\ \]Y^d_v`bMcdefhf4*"vkG6 dA A.~W2Yd, \C A H $+1: BKQVZ_|chjl ll+kkkijii2hhmhgg%ffgQgh_hhhh/gg*ffFeeeeef!ffg]hhhhhvhUhbhPh.gfed8bQ`v^\ZXWVWWY[^&`bdfghiiigcB]9WQLF=3)!Au ]eLZ:II(ylLm- R "(/?6?FMRWG[+_cfhziiwiiiiIiii#iIiKi&hhi*ijjj#ii%hTgfedccLbb'aaabc]d}eifKg4hi!ij~jnjPiYh5fdcVa`^I]6\h\]_`b'cdefffg{fgd`"ZT}OdIC;2d( ZA D-uFSH'S^_uA S 7 7%+2:BIOSW[_c!fg,hggggh7hibij>j4jjj5j@E[J&NPTX]"_aaaaab`bcde9eemenedcba`0^]b[ZX?VUoTS)RKRCR?S[TVY5[^/`pbdefghhch{hggNffDeddtdcccWcbbb(aa`]YTANJ$D?]7.%q i#^p#f=N}}[u,!R/n+3TY &arV#7)1z9@ EGKVNSVY[Q\1\\N\]]^_]``]``I_^i][XVTRP5MKJ\HGFtFaFUGI>KNQUXZ]`bceffg+gXgg fpeodcbaa#`__ ^]Y[X9TwOKFFiB;4,T#u vkyZm]6sGq+;fqC e Za%,4X:>pA}CGLJNQ%RSSSSSTiUUVZVVVhTSrQAE[HL0ORVX[h]<^_aataa<`f^]\}[XZ~YY*XW\VRSQLI DA=)8M1m)!k'K <{fB[;!, 0 9 '.498r:=@'C9EH/I_J\J|JJJJKKcKLKJIGECN@=:7420/B---I.0-3?6]:2=AEI'LOSUPWDXBYsYYY9X;VUTSS$RQPnNRLIEBc?<8\2,%]83 _/g)GY{4?ja)CHOM Y>.a").i14[579;=>?t????v?;?.?o??>><;8630-+(&%a###6$d%(+/3:6:>5ADGJKLMMMML7K-JnIIRHH FDBE?<:I762./'!R.3 f>z ;6_TzWO^,+As Z"A&*o,C-.0&12345%5u5S5"444D3220/.-*+(%" 9'?U?!B$(x, /26W93<> ?@AB BB_BAc@@??>[=&;;964<2;0.,'"?#} x}.FR[SIpJmf_ZtpeC f o z "$%D%&'{()*Y++Q+~+$**)&'&%#!@SUd!$'*-K/13/455p6Q7:77765421@/K-=+x*5('%O!w c ? P!d 3xZZtvcc\bm{*o^G(HQ  f$u5xk{ s\Wu # U5? Y wE!$%&!')Q*+,,,,+)(_&%P#"!r 8}OER QM!X0yHuoPYLZ_bamaBbdg  * A.q7TJ@ Z l +dN !"N"""C!f_u*H]m 1 2}>O"+}I~L8Y:KWfkp`L ;E)P(Tl    w N G a * 9 K n/OSgUI xoIL/Iv >a %k_qS7@g1BRisrZE|F Z%)p3?=![AuRC=^iL5-A 0 izu. k C ;  R n @Q MY7T5~LxA,3Vr:T_bXRJN: UCf!n%6%[zW)HWT B>"J  )W<z|qK- RXsUk5$1Saaa<[dX?7:LF$.Bj}M"!y|\D3%L=Tys3Ss@Itk%*BzdjxL\:nF88FIFG"AUXH8.36/%1 %:IMLh_&P6a#)}3EOO[iywcG(&Bmy~Izjp}"lYFG+Fmuw3JK)yP=4<CE?8QVM7$349"H`?2VdEib(Oq688# vjd`XK=, 5'#9q:-R7oidh.*+"kT@=EF6 :OaW3)<)):' MK508UX0W`-@g$2- uhbYD/( ?hkQ<eY"]j[fq1%!kRB1 #;bmQ((3( =K .QZC*8O_I :L6-\ #'zjdaPGQYH7<JKQi}u`MDNgvsNfgYYp,   _8)JdjR+0#<;#*EQOOKSI%-OR; N )'}lih[PTUD7>MNKQQB68I`rrM% ,Um\UHUq#  R% $ +Adg778@S> !OtsTA667()>SVA-&I~ JE zifhaWPI;6CNF6.* &AavqbD2e{rje`INt ^5,& ">M2):5,S[C4g{eF:6' !3Oa\J;G\9N50nZTVQMHGJQ^\F.'14Ddyw]F1Dqpf^u Y7": , " CP/ 5\hH$&Jza=%%$.CWa_[YMh09C.hVKKIKLP[ch]?+2N`nfA144BWjlq}t'-e=& =" :T< "HdaK>FduU6/613=NYdxnm#EF:qeYX\cfb^UM@)#6UdiwqU:6EJVi}"-vI!4  ((=9),GbmfWU^pudKEF?<?HJZ~5OY@%ury~mU<-+#*@VZTZ[MCIWYbwod\H-  -&  +67/)'#2RqufX]d[NKJ@=CNJPj!AQ@) {dF1-:>FV`]UY[RKLVZhfF2   ')' *%/23366,,>[xu[OKGHIH@=IUOLXq*7,p\E=DTYZ_b_\ad_VMPZqdE6"%&!  L0|2-}+KBYB(p  ? {"%'&$QD%_8  q      M v 8 A s 1 iLh&mAd<6Gm~<   ;c*~vPjt!?,)!-"#%%%U$%&O&}$! F <     0 K r S / E O ^  Z " od!=cKbx1 @Z*>PY`J52s ]R4 JG "K$%B&'&%%$$2"z (  l U K n  / L k p      2 P  , | _ qH97wxEdKft3q>wZ*c{v\=- p!5" "0! seU  5 U  0 r , [  K  o 9 "  g/t:uiq, % % n,kTO1- EO?v _  . > e F 1 N 8    : ]  ; b v U # e J [ t  a B . ) 1 & 6 g  X  : ~lsb8"AA=,\s+o6v{rcCC1Y= h1`q IA 8  H )    B e | n A  " H _ Y G .   * ; 9 H q    5   Oz%ml7l@7u3} n}A1]d% _ b  kQpH+)%4Fb|j * ^ O 1   : \ n ~ } ?  C\a;#Q~.gUzDxXY@k E O + q Z K  k <p G67-MkxHV5&7m  7 g C v  a lq&t'>wqbh@_Wj`9 ` C  N 1 ez095/ i2~lim[E02BhUK:iY<tg / B N X } } 4 ] ) d+69y46fp` =   ;U"P 9kR\d~{U>>F^uo/dk~s$;|sb_ > * t ! w b K -i, } /  $  } Y d ? l ES=i }lK!lS[qQ)!;Riv{@H!y"-8  . N x  e ~ k P g 5  E r : = b A 6 P R S \ Z x 0 i M | < )  ma9WFs,;W\%=|<-IOE0/'#6g,P]jxd.![Mz W F F { n d f p 0  ( ) - < :x|>x Zf$Z,! rG% ;d%o-_GQc # F :    Z c v m O E b B -   7 n h %CeUd']h}bf`_)keOoUeE5-/&&,Hg ! gGZ!$M'S5{  l   w s1ou8 9/!@pu\Nt)%6ig4su|-zPS `QB"uw*xN G e <~  >n%kntmz*N1q)tvf`" T7,<OT=t<9T@P~Bq)-"\IL7LQ=h?p vu\38E@|} [a5T{T] WpXJ>'3 SvT< l%  Vu7y2VO#'Xmy}`^ #s bvzTBoh DaDADi F s V  E&3u]nwv=epH-w 7 w f  =~#g lsl,cpIBN'_7Qjf` 7WLi\H1psbHo(xE   /<'RD}\CPMhSLr]LMU  , !~#!2Yg81=InpG>MrZ}X%j*&[u3^ q}F / !P!"#_$$%F%%%%&&&&&&G%%%%w% $$ #$2$$$%$$>#1"4 GU y 6UL3}Xkh1M}gc8A #hM!BH y !#%W&'(^()d**+,-./1/r/////D//S/00$0//////Y..)-.".../..Y-p,+E)'%#!NRnN > g Ii#TljY 3wl7M`A| :u}o}MQCO3g G!7#%')+-/60123034568C9e:s:;):::/99S88899:2:s:;;M;;;$:|9999999998976i5132$0S.j,)'E%=#"! FA7kU  N!gTLZAE/il 0#% `( "$ 'u*-a/2+468:;Y->?A BYCDEEFEEE"DDdCCDZE.EFDFGCGHCHHHHGgGFGFFFPEDCBA;?>K<;:80631i/}-,>*(&$X!gJ  1J< *Z{/pe5) [" "J&+1/25N8';'=@#AC[DkEFHIJ JLMMNOePPFPPPPuPOP!OOP_Q4QRwS STTUUTUUTTyT!T'T6TSSR2Q-ON1LyJIGFE\CBw@>oM@?<c7O[W |wORt#',16-9=@CGIKM NVObPQS\TUVWYZr[v\N\]7]a]|]Y];]\\\]t]^r^_?_```a````aa``z_^][YWUTRhPOpMLoJI%GKDB?<97q42|/*&!b 05` $ ](l ~ G r_ l$)R.f38=AE4HpL)OXR@TUVWXY[!\j]^_`bJB.VaP4 f Yy$!&*/a4o9?DI]M&QTxXZ]^I_x`#`abicndefghjjkm%n/nnnnmmrllWlkll>llm>mmnNnnnnnnooaoooon(mAljihf]dc(a`%_^.]+[YWTPMJwGDA=18{3\.*&'!) ))"5"+t2 $W(-2a6;5@]EJOSSW7[^AaAcdeRf ffg-g~h hijakRlqmo'p-pqq-ppIonn]mmmmn)no1op;ppqq0pppEpp?ppppppo~nnKmlkjih6feddbam__]+Z_WTQNKiGC>940C+' !5e j? g9 &651+)&z$-"\ d!"~%.'+/49B=BGQLvQWUY]`d\fi j*k]klVlXlLl)llKlmmunop q?qr{rnrmrqqpLoo4o5o^opq8qrs4ssssssryrr%rSrrrr`rqqkq5pp}ooongmlkkihg6ejc(a ^[XURNJ-EO?:50+T%!P _na/45642//-++>+#,.037;@yDIRMRdVZ^PaSdgtj klmnno0nn}nmmmmmmnwoQppppqppp`oogooYopqprMs'stSttttss#rwr r r2rdrgr4qqqpq1qpphppoooo0nmmlkjahgafdb`Z]Z8WBSOJEf?:5p/)m" 'UVB@c={:866579<?~CGL0PTYC]`cfjhkmoOpppqqqq2pp'ooEnnnbnonoop ppq qiqxqoq)pppnpqRr1s stu@uuuuut>sNrr0rHrvrrrryrHrqqqrqppppppp#onmlkjj.iXh{fdb(_\{YXTPJSE?93,&3 a ?p~I,dhM-JGDB@@@TACFJPNmR/VZB^(adg2i*kmopqqr=rSrrr.qupp=onn[mmxmZmnnoLopEpppppppqurrstuZuv uuutcsgrVqq-qMqqqqqq{qGppoocnnun6mmmmDllvkkjjjjj9jikhfdb6_\|XSNI4C>71,*$l wbWUQOMK?KJLzN{QUX\-_cgikm_nprsTstUtWtht6tss&raqponn6mlllmZmnooMooooop"pXpqrttuuvuuFtxsrq]poppWpppppppWonnm-lykkWjjjbjajjjjjkkrkkkjigf cq`\XgS4N%HmB<\5.(", "_E_S\Z6WVTmT>T UWZ]`ncPfNilAn4ou uuvvbvuttYsrqpznmki0gfeNddwdexfIfghsiVjKknlmnoqHrttuuvu[tsr^poMmllYkkkk,jihgfdc\a`` _A^^3^X^`3ac0dfPgiujklm(m[lldk?j6h5f3b^YUPKMD>_71"*# >>jpiEgfedddeg|iijlBnoqrsVstbtu8uauuutsqpon_ljTgePc4aO`^]]I]^&_O`bacFe fhjlnp'qst{u_v8v_vxuu(srpo5mljihhfeqcbO`^\[YXaWW W VW WY[i]`.bdg$ifklkmmmmm"lwjigFd _\XnSNH-A;<4-& M\ "mllRkkPjjjklnooqFrusNstVtuJuuuuuts^qpoGml4jLgda_\[YXIW`VqVWXZ8\`^zacfijknap5rsxtuvvvvQutKsqmomljBh_fwdb`^\qZWUDS.QP9ONO(O PQSRUX[^bdhjAlFmVninoMonmm4ki eb_[VQK]E2>^7q0.(!" $m~mgmCmllkldlmnDoopqrnrsCstotttttusrom jfhYf%c|`R]Z WaUTRQPOOPRTVVY\`cg8jimforsuWvJw4wXw|vv;usrjpnljg\dja^\ YTVSPN0KJHH#G{GH I]JMlOS+VZt^JaehkBlnzo0ppoo!nmkifd"au]Y?SNGs@92*#ncPm7mxmmmmvmmnoopq^r rzrsstJtt\tNssh===>@!BLDFJONSX^LcVh)l:psvUwxxyxx0w9vKtrp,m"hd^YT|O*JMEA>G<987H656<6V79l71+T%klPlm'mllm mnnopLppqrrJqkpWnTlifb^YUPLH=DZA<>;:977y67*7~89;=@CHMSY_jdinr{uwy3y_yxxwlvdtsp\m[hc^XmRLGHA=G964q3t2#11L113)4~7?:.>RBmG=KQ(V\@afjUmGpUrssts9rqpp-oqnOmSk,hd`[pUNGAF:5/vl#mmn mmmmnOnopQpqq=qrqpn:kSheaK\~WR{941/.--X---./24z8Z9rm=nFnonnnnoMopq*q{qqrZqpmkg*cz^ZFTOXIDU?;e842%/-,,5++{+Q+,-B.0q147WQ)J}D8=830-,+++u++,V,.0B3p6;@EaJPWJ]Zc4gl=o*r1stt/ssrrVqppIonsl>jfb]XS MHCno1ooooho[o~ppqZqqrUrQrquokgc^NXS+MFA0;7B3/0G-(+(('k'''(()`*v+-;.c03i8ELT/[cpipFt wyx@xwvutKrq!nlhe<_YRKE >941.;,+N+-***b*-)*m*,|.q25:?`EcKRYZ_ReiVmpvs stssssrrrpr"qqomkheb6^[,Wo op>poSnnnopiqqUqBqq}q#nlje6_YMRKD>/72.#+"(/&g$]#i"# #$%5%%&'r(Q)))*+/S39 ?sG;NV_fCmZqv$wfxOw_vuotrZpnlifa[TMG3@;862.- ++2**k)))")?)=*M+.J1C5: ?ELSrY`?eLjNmq@rsst[ttt ssssSrqomXkhsec`RoooonmmmnopHpepponkdg4`ZSLE>Y8/2:.*;(%$##""#$#$%,%H%%&'d'('( (+a.x49AIQ!YjahnKsYuWvvLvtsrpnmOjhdl_QXRKbD?951/c-,,+r*))(()q* ,.@25:@FtMSZZ`einCprsOtitu6utttttMsqp-nol[j-hfoooo%nFmwm=mln9o+oonon lnhc4\GUNFk?72;,)n&O$#"j!!""#$R$$$%O&&&&%%%'v).4a;C&KdS[d*jlpFru ttssqpoDn;ljgEb\0V$OI_C=9F42#07/~.[-(+*?((m((^(f)+.#1(5:f@rFMTlZa fk>nqzrtFuuuuuvv4uu tGsqpPnmknoGo'nmmlmmnonmm^kic^W[P.Hx@92.)N&$E#I" !!^!" "#$$u$%%&<&&&%%I$%'~+07>FNW_tf/lorirsr`qpp6o^nml~i`e-_HYTQNI?C>964t3m1/-+t)Y(C'''(F)!+w-15;`A GNU\Rbhl6oqstuuuuuv:vuotts>rponnnnnFmllalmn^ngmlkiEe_YRJC;M4.1)%#"(! !T!"#o$!$%4%&@&'$'C&&%d$`$&)-43:eBIRIZahl}opHq%ppp"oo:on8mkg`b]jXSO ID?=;`8752/,)( ''A&'D')*.-16;BWI#PuW^Uejnq"s`t0uTuucu ubuuuou*ttessr;qnnyn2mml8kljmLmmmXkjXfb\"UNoF?71]+_'$$"!!V !~"Z#($$%&]&''(/''i&%&&*-Q28M?GOMW^eim0DLJS[!behmpsstutt%t0tjtit:tssss6rrnGnmm-lkklllmXllxjhds_XQJxB;/3.,(%p"! U - S !"#z$z%j&<&'(0(((9'&&'%),05=%DLU(\ycegktln9n4n*mmllxl-l'jugc]_\wYVSOBJ EA=>D;7w3/+5([&g&6%&%&d')Q+m/3:vAHPXU` fWlp9sstttssdsZs=s"rrss`sCss)nmmllkHkklll>kigJbY\UOG@81,'%""_!!' M 1 !`!"#$%&'(j)F))z((Z(d(*,05)I)*)))})j*,05gFOWa^flp|rssszr1qp+oonnnoOoXopm lkk\kLjjknl1lkk_hwd4][VOHA:d4 -)&%$$$#x""j!!!!!" #$&')+-/e12 2{22k35N9$=,BH7NATlY_:bfwh@ij,jVii hLgglgfSedecaa`@`^L[7UPKE?9Z3+,(q$#"^"N!!!"#%Y( -r3';C0KTU\d inprrrqEonnrnRmm:mammn9nlkk2jjjdjak"kl k jgc[ULNF?8p2N, (%%z$$$#""e!!!!!"#&'*S,/2t47U89::4;w=R@DXHM[R;WB[`3cCf%ghhi hvgg"ffdfee>dd3cc bb`^,XSuMG@:$3,($ "!Z!K !L!#&+0{88@?IQeY'a[glo}qrqpo1nmmllAlEllm%mlckYjj_jEiijkTk~j[ifaZNSLWD=60*'Y%$$]$.##f""D!!!j!!#$'h),0)369=?@j@AcBDGJNRnVFZO^adfgihgggvffexeddddddddZdb`T[UNH`A:4- '#! :  0 "`$Q(-5q=]F1NVk^eYk[niqDqqp5nmmlkkAkknklllSkFjjiiOikj=jjihee`eXRCJCq<&4/)Y&Y$J$=###8""H!!|!p!#!i!#Y%Z(+/3N72;0>BEFGH]IKNQUWZ^9a`dfhhhhhgg9free2de6eeeekeeGe?cV`[V9OcHB9;Y4-(#! 5XL )!#C';+2:CdKS\binm pq qpWommZmlkjjkkl(lYkQjiii i4j jjiKhOd_cWQ6IB":3`-(K%###S#""V!!A! ! !]#F%)N-(15:X?CqGJLMNP\R|UTX.Z]?_tbdgxi?j]jiihhh)guffef.fg+gfff4fda\WEPyJCBGCL-OqQSATV_X[S]`acoedgfijkkkZjjjgjihhah)h{iidhh gffdd.as\hW PdJC<6/*&;$!!4 j @ !$S'-4=yEMU]Gdinlpqqponnn]mVlCkkkl8llgk_jihhShni6iigf:a\]UNUF?!70)*%#"z""v"["!!7 !! !7!#&l*/5>:\?EKAPTWY[e]&_aceRfugThikklwlglmlJl5llkkhkjkkkk-jich;g4dag\'VOIC\<60i+'R%2#"H!] f :  "%k+61:VBWJRZCaglo!ppSonoon=m9lllm.mlCk4jBi0hpgghjhhfd_ZhSLoE0=^5.d)-$"!!!!!!!C!!noo]nmmmmn2nljihgffg[ggec0^ XHPJSC';V3,Q'="! !!!+!?!H!,!>!""%"#z%(-2d8U=D>K QW\a cfthmlllmm m4m[mmnKnnnn}nooso nslki3fb^~XRLIF"@\:5]0,(&$#""!< G = "3' ,5T=6E}MU_]_cilnnnncnononSnnBngno8kjihgffbfggdbx]+WKOI\B?:s2+]&K"  _ ` !!!"8"o#-#&b)I-28:=D+K$RX]b[eCh4j0lmnnnnxmmmmmmmmnPnnnnno-opoynljgd`4[UOI\CZ=83/=+(&$#""5!m u X !&+3;CL'S[bQhknInZn]mnonnn n^nnoUl@k2j%hgfftfggdb?\VOIB :I2+%!   < C W q !N!"E##&K)4-2 7i89851.+)'&l%N$#""0!!X!8 !+!%e*2g9AIQ}YZ_fVjlmm,lm3mm(lm,mn nGnj#iiiZi%hhi|ij7hPf'a [aSM[F3>6/);$4"  x !r!"$'j*-1~6};AHOTYa]aei*kmOnooopHpPpopp:pooboJoxop_oo,lyipd`[{VPJDd>841.Y+)Y'&F%t$#""9!!!I!> !k":&H+3r:BfJhR!Y_f+ikkkkkl'kkl lmm\mggghehhhjjkiQgeb\UkNGu?8 0)$"FH S !H!u"4#U%p'L*G-t1673@/~-A*(&%$##U"!!H!!! ! !"'&,4;CLKNRZ}`Lf.i&k(jjj=j`jj*jjkklUlbbdTeg*ghjJk?kjGhd(^W^PIAw91n*%U" vWa  c !U!w!"$7%d'*I.G27,82 .e+=)'\%$Q#v""&!!3    H P !Q# (-5(5.f'$) aX # 8 _ !0!L!!"#6$s& (+J.27^q #b)"/M7>7ENU] b0g4hihTggcfffefggKghiMfQjV-[P_cfjalfnmm#if_NXDOHY@70d)R%!0&:p ( !=!"-#$8&Y(w+.2737{0+'O&:%$#"r!- $Z@1(x>!5%z,3;rCJRZ&afijbjh{hgf`dcbaaB```4_;%BKRZ`f1immnmlid^VrNF>V6I.e(#U `'6Vp |!!"#$&(*,/3#8t>DK Q?WU\aei}knBoFpppUpvppqRppSmhqa+ZiS(L@EB=6/+D'&%q$#"!\ JiN'.|"&.j5=EYMU \ c?gjjjihgfcb`Y^c\[!Z%Y=+3!~+5g?J-Se[agjmm5mj:g,a\UNF>60+V&# a y!!""#<#$'$;$t$%&)+0y5YSLSD4K84.*($'%$#"!24` $w(.5AcHpQYr`ejXkm=kjg5c^ XQJXB:4/+2&$!  = !!n!"Q"######'#+#\$&*-28_>E?KRVX+]aehdjkrl8kcjhe`[ SLFQ@D;:6!1-()'&{%$#3"0 wQ<! #(P--3:0AIPkW]sbfBjklkk%heD_:XQIB9}1*9$Q -X$ -7BXLkT\bRhjllQl#ifb&]~W-PHA,:;4/*' #" z J & !!|!!!"""#\#q#n#'"""#$'*v.39?F"LSY]bae~hijihse!b\VOqH~BG<73C/m+A(~&j%$#"! F3t"&x,1k8>FTN#UJ\`ehgmd^XNFD<3D) 9k ` &#-8OBL"T \bhcjmCmmSkChd4`HQYafjlmmmjRgcQ_ZyT_MlFA5;7 2.j+)P''&&&&&%%$$V##G""""#$&U([+r.A2+6@;AGN-RV=WXV'T3OJLC=71v-{)'%|$r#b"!!& e Y  v "y#&)v.%3h:1@GNU%[aehklmjheb \ULuC:0'O h. !,}7,AKTB]ci*k"mmn`ljfc_ZT=MGFA=8Y40.z,e+***l))d('&&/%%a%D%%W%&'s(*-$/O2{5:?EKOST2TRP4K5E?483"-*U'B%$w##"!!ae6iCkbmmliyfb]^>WSOE;2( *m W>5G| "%5/:zDMWH^e%hRkWl2mm3li"fcP_Z]TXN HgC?/8@3-.Z+m('&&%B$##J##%""#2$&),05f;YR H?59,#k ~IS w!V+5?.HQ*Y_dgDj!k|m#lkiQghd_a \ZWQMJGERCA@@>=<@;:9B8X77889:;<~=|>?@A{BEcHuLOR'TSSJPNJFcA<9%53271=/.-s,[+ *)N)G(*+.15:}?DINT Z_cfDhj6kkjJfc']XQI?6-$  z v"$f.7@IgRY`kd(giSl&memlDjgeb;^Y|U?QNLJsI8HHGFE{DBA@@+??^?@A$B-CHD0EFHGDGHMIJM+ORTV U_TRuPaMIE}A>{;:876i532v0/...0 15k8=}B.G)KPdUZ`dgAhjk8kuiFfa^XJQIp@~7.;&gY d;\hh IL&^/8m@IYQX^Lbehjllki`gevb_`[XHUIS^QPOONNML{K9JIKHHNGGHHIJKLMNOP&PQSUXYpZ=YeXVTR OKH~ECA@?>=`<:8767 78g:0=AEIN8RJV[`=dgiLijihGdV`[oVPHV?76f.&I ^:U d'|/8@GPW]ajdgqjlmXkjh^fdb_J\ZYXVWW^VUTSRQPPP+P/P5PQkRvSlTUWWXiXYZ\g^%__{^|][YWzTQO=MJIHuGFE7CB2@n?Q>>>@SB-EHMQUQY]b#ehjkkmk;hod_k[U|OGb>V4,z%D j;#5lx{ }'W/M6[=F9N`U[_aehk\kk i1hfedMbX`_W^^^F]\[[Z6YfXX$WWWXTXYYZ['\^]}^W^_|`&`acKcd7cQbf`_ \ZXmV"T9RkQ?PYONMKJ"HGFGGHYJM%PSWj[O_Ibfh%j jkvj-h/c^XTMFK=3+# =G`Ec& p&{-$4;CLTY\`dhSjl=k_jiiYhh g f(eeefdcc.bwaa/``!__``p``a_bcdde8eff~ggh\hvgfdcka`!^\[Z$Y,XmWVUSR9PONNNP+QTWiZ^yadfhikkkikPh?d]XRME<2y)Q"d0+ m,g jg4>NZ<  6'/$+!1i8AdIPUzYi\aehijGiiiiiie?d]ccbMao`__<^j]c\ ZYVWVUUUWXnZ]0` celg&ghyhihgb=\UPJD;1(k R 1! xzP*TV X"h(.[5>FM~RV>Z_7dgAijjjujkk,k4klkkkkk1jjjk'k"kkDkAkjeiihhggftee~eefgRgggg|ghhnhh\2i)01C8hrT30[- C %+>2):sBfHMQUZ_QcheqffgAghhhiaj jjkkjkEkkkSk3jjhgfMe cba`^_q^^z^_`b,c,d2eQfh i2j&jdjj(ii,hygnfLe cbbfbbcd@eefg fffedxb^ XRLLF@?81/% v[Z*:SRuMOdM  Bd" '.N6=DDIMR VF[^acdJdeevffgi#j;jkjjjjzii_hdgGedbF`^]P[ZEYWWWY'Z\^m`tbdfhj;jkk|kk5jjUii0hh'ggggggIfff|eecb[^[UPVJcE> 6,#I )*%wb34fB\AW+p<>\ g8#)1 8?9CGK-OmSWZy\]f]^H^_a3bd)eeeje)dlcba`^^\ZXVTRQ=OwN(LLLNOR6TW8Y\_Sace f)fgWghhhGhNhPhgggffecbaae`_]YUP_K9FA;3+3"u jz4g6j@Mtz Wq,O1s*W qX&$+3e9>AE HRLUP!SUW WTWXY[h]^e_^_\_K^m]\/ZXV[SPNIKIGhE{CmA@f@&@/ACFI&LKORVRYX\G^f`HacdRexf2ggB8>1( 3;X9 :@J,FdY<vGu.9ipK2saX i  7'..[48M;=?CGJLMaNNOPRpSTTTT?SRPN5KHEB?=\:86y43A2246r9P;?/BFkJ;MQ=SVxXgZ\K]^___^^\[ZXWNV TS.P`LGCy?<9 4z-%+0 =-2|[Ee~:(A&^/ lEi!(-1358@;>AtBDDEFGH0HIWIDI\IHGFzD\B%?'<8530<-+_)''z'W(*-0<37o;?CGZJsMcORSUVBWVVUU#T^SR|QNM3JHSD@<96@3>.(! j.jr:Vv/<ia -SK1YO ) rQ#+(*,.00O25+7+89;D<+= =g=[<<;8y5t20F-)J#q 7?5DD}uTJ\(0:cP){ pP: #'$&')+&,.O/1G22229100j/.-@+)A&#!O0aW,"&q*5-1+368:< =Z>>?e????:>= ;805{207-+).&l"UT3L 4 5io@9Z8cd\Wun`o;;:*n Rt   !#B$&()()5('&%$#w! 7 nB=9c ^ 8 t6eW"& (*,.x/1`2y345@595B4d3s1r/,V)'&K$# 4y &~l "qlOP~|dcZaly(~@i3T zg5M0gXb3s_A1 B lxqY G W)m!c#t%(&')B)*X))(d'*%E#"!Mw 7{z i #ev6{dssXaN[_a^j`Bh4D-p V%z., n EKj@8u CG<hK5s!8% MU"PbEf;-qx4vuK:Z7JYhlrbL(UPpXk^R M j [  V3NwWMLh t M1~Jc  id%!Cb0jyThO7Aj)?Uoww^FvHjP,l|Tkj{/ze\I8)DuXh {  1 S @ 5 $ %   ^ d RbCJC<BGt@-4Xv2P`dYSKN: XkHl!Pth#XD!/^ -.o\Wh X<bbC&[li$gwVa. /Qa`a7XcU;39JF#!,/AsMgt>JWLHA?5$nPOOj04i[q 7Yr'~  md.gzVg9emB^9/3CFBE>UWE7.023%)7DU`u`wcm $Guug``W_uqQ/k]{c ^tI4Do@WV1pJ:4=EEA:SXQ:"3:,AWD-AVR2EX!=b8.&u^OOSH:31#*@qw1zjH;Lhusz +-3)mWECKK="<ObY2-F05* CMD@?OP5 =gk<N1,1'mP>EO>&3Nmb7Jmc8I}ngt32.  mUF6 %9anQ)'4;*<Q,(SgS6=Sib4 $M^E5l- )&xpgRL`un[RU\k~z[2 PsvNBhbf:8, ]8 #"+NhjO0%0 CG.0Q\VQMZ\H+:YY;_<< zwq_Vbpj]XZ^`aS7(LrvW( :qeW\Tb|"0   R' ,'%1Gca8 23 J[B.YvnQCDRX?(+?RQ7OIJ" |zui__cc`^XPD7( 1KZ`O)+]kVXdTY|!!&a7 '!&"$=I6$5. 1TW@$ @lzjVWV>*(9P[R<!(B:R5*xkb^WWYbqxvdP>2/%(:MTLC5=mvjlhY8#8 (  )' >J.3S_I14T~t\G522=ISWSIIGo 8::!rcTONV^j~{bJ>?KPT]YG2*02?Sl}{22Y6% <  "#8P=&F`cUHKepTC?=ADHKQYa[j"<:2}vf_costzs_E109KTUWM:.4EKVhy$0p?  3! !((;;/%'2IgukXS^u|eTJFGDB<BUks|.FVF2 }{mY?.'0=HLG@938J^agxy~ rdWC) )$   -8:4/-%3X|zh\etui[NFGJLDCOgy7J@0vbO=;@MVXUK?97@KY_l`C2  !&&  -! #/47687))ChzbZ]cd[OGIQWOJMc}  .(sdYRT\egaZPFBDKINZssK2 !!  M-u00"?YzI /-[G!$5&%"bE> | p       W  w ; C p & z nOj)m@d9A Jk~=   !!?d,xuG`Z!fY7$  !F"#$$$Z#$Z$$" &gO L ?    0 O { R " 5 B U  ^ " t ]!Ag(Uay5 B[*ANT]J09e]ec_)p!U "q$9%Q&h&S%$$#8"] ?h # ~ Y J ; Z  ; Z t u    ; X ! 2   X vL;9EhOe y0n;sn ZK t !t"! ]eIJk c J F  & p ; d P  y A   k2~0|ulx4  % $ r1oK!~"!jrKD`r.~V>U5 "|L  P D . I '   % M  F f t \ * b L a t  c G 4 + 1 & 9 n  T  A rqX3!BB=,ay.u6{}rfHL)$he>#{TAdEW_9zJ0 ^ K    H l | | w G   9 P P C - ! " & 3 2 G u    8 +  ~ M"'fl5kA>}3y oU7YS'4MDRX/\"] | d  yAZ/3Nmq  P F -   < _ o y z L  BR^9X}-gOs;p|bF]K_%Dt 2 % ; g ~ V @ #@"% ,Pu"%C[B44l * Y | K  [ eo$l"Htm|^b:U@EFX] s z p q _ z0?3#*`eSS_UF9=Hh\Z 0a{XA"um 0 ? Q | |  A f  z ]'5762bid 4X}V$  ~ 'X"K ,@ `q6@D_ztXGGI^| x"|af{{.5maPT  A 4 v  n ^ M 1t3 y +  )  |  ? ! y ,hSotg mF%l@%0D^meJ34IXjC:-#-   9 T ! ^ q ^ C ^ 2  F { G ; ` = 7 R M G S V o ( i u  k d : X+]R5+*tMM6T"//&  $+,Cg!Oex#`'XH \ B ? s j i r ~ 4  " & $ 6:-NtvXaeCnDDJwhA$&++-0AXy0y+ OAT  i  : +    T ^ v p T H c A ,   9 g d 6'"yh&MLkG{oP grz`y6cJ5.&+/BV  vkRF!)KtK2{  k   x s~'ce/ b1']wb-ygIp/q*?"L:o_OPLTTvP6S0OiPD1$|r!vN K o B 6n!~qz7-'[9ajY-kEQ,~&I})Nur[%fJVLcc7_x7o|l;8AAqrVP,Xll#nxrSYX&2jzC( G $  ZwI]zz{|R@*d4,bXfPvn mZGqpAS7OT$})oc G f *  wi0a-  e;6q-Rm8r'\ % g . [o~9n,O;@Z4 Xmjf;ZW]Z@!lxjNoU G   =o_l xXE?@9ts  , 8c&d%:*Q/xwxA!4AgjM=Pq\Mm-V)W R9B %ii |!!"""#4#$B$%&e'*'()*<*-*)(('>&O%G$q##o#E#Q#B#*#.""! 4~s#  &fLW,(F Jk\]8J  ] 5$^hXB  ~F ":#%J&v'('(L()*d+[,f-X././(/V/i//0i0123C3333a22;1}0/{.--a--,,,,,k++&*%)'&$" O} w =stm`tfa0FX9/ =}wyzBC@  n -Pua#%()+-/012@23935 6078: :;#;F::}:"9:N:;L<====>!> ==<<;:*9[888[8 777p76|55>4320/,*N(&$#"!s @ w 5SW]L"+!u (EHbV6{c  )x %(,/x2@468:;<==>J?3@rACDE~F*F&F+EEfEE EvEFGHIJJJJJJISHwGFFFEEEDzDCBAA@?:>W=#(n-T26q:>\BTEIKyMNP*PQRS}TUWLXZ[m\`]]0]]]]Y]I]r]^ ^_x```a aCa\aaea``:```__S^^5]Y\ZYWVTSYQPOMKJ+HPECN@l=;8640T+&"2g Taw "6_ 5 jCn!:%d).49 =AEIeM~PSUW-XYYZ[f\W]^`$abdefggggwg ffjff f8ffgGgoggh$hhhhZhhh7h}hhohXgg>f'e cb=`_ ]Z[ZXW5V!TSQO=L4I FCS@>|;_72-)$  g 4rV; *T  E)D/i"'>+@/4:&?DI8MQ3TX[]_`G`aabcTd6ehfgiajlmnoBoono n|mmOllalHllmm+mqmn[no%o$nnnnnnnnnnn>mqlkjihiged!ba1`6_E^>\Z{WTQOL/IF?B>%9`4,/*Z&3! |3 pMN.!l%>).=26;V@}EJOlSW+[^`ackeefkfffg%gh.ijk2ldmompqqqqwqpioo+nnSnJnnoMoppqqqqqppHp&p;pHpJpJpoo2nnmmDllkgjYigff%eCcbL`*^ [Y?VVSaOLHDp?:040k,#'r"V~ & ?{77.2+)'$"!C ""#l&(,05{9>UBG}LQVY]`djfi8jgkklllYlkkkkldlmnoq r rrrrr[qqCpp:p)pLpqQqr_rsust\t\t/ss rrCr>r@rBr5qqq/ppip>p4poooonXmm9lzk?ih0fzdpb`]fYVRNJoE`?:6 1U,V&!NE D8 /:7520L.m,,k,U-/ 148=AEINMRW?[2^ae%gjXkmXn no9ocnn[mm*llllmKmnokp0ppq*q-q$ppprp?pvpqrcsst$ttu)ttss*rr:r3r4r5rqquppupooooopp2p$p&oo(nmkj?hgeda1^ ZTWSOO8JSEF@;F6z1,<&|  Vk&93Q\C}A7><;\9N77X758:=@sDIM{QU|Y]a"dg il-nopqSqr:r7qq0p`onnHmmmKmkmn nop)pqq0qKqKqWq{qqrsPttu|uvAvMv]uuGt[strrrrrrrpr+qq3pp^p;pp$pFppqqqqaqpConmwlvkjige9b_8[XT~OJE@<60*i$f  TEo3WdN'KHECAAAC)DH KvOSW[r^bPegil1n6p.qZrJrss>sis r}qponmm)llYlMl5lmIn9o op:pppqDqrrsIt!tuvDvvvv]utsrqqqqqr qqq5ppoo nnFnmmnn_nnnDmmfll~lGkkjZhfdVa_-\XTObJLEA;5-.(i"E O $XV.SP NLLLTMOS?VZ?]ajdgjgl(mo\qFrttuu4uouFutQsrq}pTonm1ll kkllmn`noVoopp}qqr7stu!uvxvvvMutsrqppzppqq>q%q ppOoo(nwmmlsl kkxkllilllllm&m?mLlkjige@b`]*YTLP$KgFd@/92+%9ra .WsL`Y^[;XW"UUUWCY`\_6be-h!km8noqr;stuuv5v2vutss qpo-ml9k j[iimi>ijWk@klmmmndoopqprstuvOvLvEuut rqpBoUnnnnonnvmmnllkihgg(f]f ffgghgi"ijkl9llllkjihtfecJ`c\VXT.OJiD8=,6/)e# Vgeca`|_b_g_j`begil8npr's sttBu'v!vwKw^wwkvutssqpmkih9gIfff2efUfghijklUm:nKo|pqstOuv/vvvcutslrpnmllYlZll~lkhjoihzgfPdcZaa-`p`_`T`akbce[fhjk4lRlmlllkjj=hgc`\Y5TUNGA:$3s,% SjihugYfeefgbi klmoqs$stXtuWvvvwKwCw@vou5srcq/pnGl(ifdba```*`z`bcQdfhNik_mnp~rsuvJvwgw&vutsqqp(n:lk/jyjii$hfe6ca`_].[wYYXqXXYZB[]k_b>dfhjklllllllkjhUeb_[VPJC=O6/U(%!$K i+mmYllBlkklm2noq rstuFuhuuvxvw)w1w{w+vus/q otmlig da7_][[ZZZ)Z\]_bAdfi2kmp?r-t!uvwowww`vWuBsr(pZnnljilhJg3ed6bi`A^[YWUSQPP1PQ1RlSzUYWgZT]r`cfvi3klilmnnnnn[mlhjgeb:^YESMF@81@)"z mmmmmmXmn op&qIrLs2tCtu'u!umuvv@vZvvusq:nligeb=_+\MYWVU0TPSSQSTUWZi].`Ac(fi!l nqksuuw wxVxwvutisqLomlkKig!eb`4]ZXBUS.PNLJIzHI7IKgLO QMTX\_cLfi[klmnoop!ooznZmjif.cp_?ZTO/HB:2+$whEmmn0ndnnnoTpDqrssttutuMuuuuu0trpmujVgd%a0^ZWU&RQ7ONN MMN+NPRUX\n_cIfj mwpjsRuEwwx~xGx"wTv}u#sr!pSmkXhmeb_\`rdhjlnoqqqqqhponlvj1hFeaf\AWlQmK9C\YUROMKJ;HHGGGI JLMPSW[x_Xc fjncqtvwxx{xkwwutrpnCk`gd`]XTQMfJH9FHDB@ >===?@yC;EIN RW\Sa2eNikn`pqrsPsrqqon}lk3hfa]XS;LEi=601)$ xl2lmkmn(n^noopq_rms*szsysst5sskrMqyomj!f[a]Y8TQ MWJGED BAA#@AuBCeDFMHJN>RV[4_~chblptvx5yAyxx8wvNu3s`qnkggcc_2ZUPL)GDlA?=;9878 79:;<<;:R: ::;=>?AMD0GLPUZe_sdinrvbxyyyxxwvau8seqnkig/c"^QYWSN0HCz?<: 754;3r2323<447#9=B=GtL\QW]{cgkknqws%tu=u9t]ssr)qpnmkJhe+aj\VDOI_CH=71lmnookoopEpq>qrlrrrrrrOpnkiGea]XRM-HUC@ <:o7634322\2|3u4R568:"= @aE"IO]TZ~`Qfkpu"w~yyyxwvCus2qinkUfb]XQKE?;S76410Q..[-.:.C./|1c37};A EKQX!^zci$lpruuv=uzutXsrqponljgb]WR)LFA<mnokop%p\ppqqqr?rRrVr$r_qpmk gXc_=ZUFOJ D{?;n8L5G330/m.-o,,,-.a/02v369>)BHNT[Uah[ms95F20/-]+++W+o+Y+,-/ 2T6;?EdKEQX~^diZmpsu#v#uuttsrqqp3o"ljfb^Y{TOK$FSnpoqp,pppppq9qqqqqqqpnk3gb^SXSVMHG A=;7H3+0]-+)(( (''(+))*,-t.03B794]0-2*(\&%%:%>%%%&n':'()*+O,.26941.,**:)))((~))o+^-15w:?FLSZz`rfj5nqt'uuuguuut/ss;rqpn8khf>cd`T].YoRp6ppp oooppEp[p-opooJnnnooSoZo nnn"li|e|_YS+L9E =71-)'%$^#""##$V$m$S$u$%~&&&&&'m*#-0396ABIQvZajotvx/wOvut1rqocmkNhe`fZ/TMwF@;3720"-,+,*Q)J((('(),.y2k6N;t@FMjTZ`#einLps.tu.uuuuZuuLut}sqp'nmCkigoJooo[nn3nn n5n~npmm2mSl;jofapZTMWE>7x1,](%$""W!!""#8####$+$%.%|%\$$$n&\(.14A7520+-*(Y's&'L''n')w+X.16`;qBHP)Wj^dinxqskt2uWuuNtu uIu0ttSsssMrr,qnmmm'lkkl lzllkiheG`ZtTeMZF>7S1P+c'$("!!!7! !!c!"}# ##$%%z%&%%%5$u%%)-4:[BIRA[b[iElop-ppppoo!no(nnljVfXb^[NVQ}KEc@B<9#52/+('t&&&&'()k,.{27P=DlKSZagm3ppssu&uGtt:t&t%%&''('''(]*,17!>ENVl]dShCklemYll|kkjk kjkk,ifca^\XTCNHC?;62B.?*F'&%%%%&;&(T)q,0s6=0DLT\ccjfnreshtttrsZrr[r?r)qqBqoqqqqlkkhk7kjjZjkkkFk?i!f`^ZS^LE>#7O0+'#%#|#E""!!!. !:!J!"$##$%&'())/))N)d+ ,1n6=DLT[b.f)ijkkhk jgTffnf?f~gAhhhhjh$grfedb^rXaR?KFD>1730*&#"!;!\!!!!"#&+0G7?HPX`g!lo@qqqzonhmUmm lZkklcllmkjjjkjjklXlkl id7\UNGQ@ 82$+'%D%-$$$M###""$!!""$&&(E+. 1O47;=q? ?@_AC4FIJM?PTY3]`bdezfff2feebef6g#ghshshhQh#gDfd`a['TMF?81+&j"w! f "R$A(-5D=?F$NoV?^e4kMneq>q[q2on lllxkjjk7keklkk?k)k$k;jk klllkhc[UMFY>7L0*G&$B$N####p#""O"!!"#V$'*K-1A58<@CeEkFZG]HJghKi:iii*ihhefJc^XDQJ'C<5q.V($3" 8`]2 !%e)F07@HPX`g!kospXpon>mllkjj'j]j|k+kl(kkklk@jjklwlkkg)aYS KD-<4.r(5%##\#"""e" !!!!!"#%)n-e2>6;^@EJNNQ"RT!UWZ\q^`=acegiiiiuihhh\hgghijjjiihh]f6cx^.X|QmJC=;6/*%#!!. n 2 !8$ 'C-4=EMU] d`iYmo[pWo?nllllkjjjkwl!l^kkkMjjujk?kl[D IOUSeVXZ\^ac-def{ghj jk9kkjjjjwj[jj3jkbl0lll1kNjihfc^`XQJDB=71 +'>$""2!M H  M m"%)+1:qBzJRZag"l=n*onmllmlTkojk k0klllkkjwiijejkDihd^WNPIBB:2,w&}#" ""O"e"M"@"/"L"""#,#%'+035:@OFhLRxW[V]`db5dfhliAij7jk&kl0l]lWllllll~lVl^lmmmmFl$kBih:eCb\VOIIC <751+,n(%##"!q ^ %!#(/Z7?GP W|_Aejlnmml-lll{kknkklmzllKkjj iAiiij?hgcR]UO{HA"9~1+H%k"!H!!!!!" "w"#f#}#$&(-17BJQY`:fjMlllklm!ll>l]lmmnSlkkIjj)i^iijj_i gcY]VjP/IoB:k2n+%" 8  !,!"(""$b&F),1&5,:t@5GN(TZ$^(b/ebikmnoyooopmpppppGoon\mm?lll^kmhea^+Z-V@QLGB=k9630,*t'&8$$#"[!!1  !%*2:LB$IQrYF_fKilmlRlkl:ll|l lKlmmxn!iibi@iDiNhhirjjiOh.d^WsQ5JeC#;{3w,&#! L e R !S!"<"g#f$'*N.16Y;gAHO)UY^aehkmEnno+odopGp~p^pJoofnmmOlllkjOfb^YUcPKFk@;74Q1/,f)(&($## "7!!)! ! !& +3;IBJR7Y` f;5.("$_! :lo " !!!"1"$j%((*.2J7u=CIOUCY^b{filno:ouoopqpp1oonnmfmllk8huc]_W QL[F@9w3X.`+)(&%;#"!! w n2R "'-6=IDLT&[a fijj3j+jj_jjpjak kl l(l[\_@b dflgviCjlkBjjZgccC\VNG@ 709)L%!e FPm 9 !^!!!"&#<$%'+8.O27=CIOUZ^cegWkm5o#opp pppooannmumXmm jgca2ZSMHA;;3p-[('X%%S$"!! -V:z3 m"(=.6=E:M@T\akfhj/iiiij iijkakkl%SVZ#^Mbdfi7/*&/%U$N#"!! RwyN un{ c#(/l7b>FN$U\b$g ij iYiui|iisiiij:j[jijLP2TZO_LcSei#jlxl/lBif`ZRKC;3,8'"k   X~  p n !"#*$`&(+.3U7=@BHNmSY^cgkLm^oopq7qJppSooHnonnCkf_*WPhICpNppqp oIkof)^TWO|H0A 9t2,($%I$$ ## "*!9 Kk4K.\ :$6)107?GNmVB]cgjjjijih4fdXb`_`]\[+3q172,=(%%8$h$#@"[!~ %lr 6"'-5EgKR*W]MafilSm9nn+nnnlkfv`YbR JvB.:G6c&0Q:^ENW^[dhk)klHkj&g?d^YiR\JB;s5.*$%"g ; K !!w!"T"#s####$'$x%&*0-39@FM2SYG_!c{gziklll;kohze|_YREJC<72/]+\('&n%b$#"! A*/@@ ")&R+02 8?FNU[aeik!l!krkj hcG]VPYIB ;40C+)_!*T4>HR$l$(##" Q"!$z(-4b:B%I]PcW]Zbfxj(klkjhgc^5UME<53B)! e <!>*"4?WI3RX`e iyk:mBm5*+"=M V (xb#i-w8BKS[agtj/lmml]jCf4b]XfRKEa?H940{,^)'Q&$##g#A""J"Y"##""h"7"E"D""#$'K*=.159?E-KqQUY|Z[Z^XTiOHA;$4/*'%=$"""=!!g TP"6$(,28?FMTZ`dhjmml[iheTa[pSJjAm7.5%   ?~&@0;EN%W>^feUi*l\mneml8heaT]WQK\Ew@G;262.m+K)d'.%%$$##k#k#}#r#*""U"!!!"#v%p'+-15J:a@GFLQnUUVuWVTPJC=60K+'g%""]!!r! p >aS d!$',18?>F M SZs_dgklmm khfb^VGND.:1A'Kd Uj ),3>)GQY a f.jIkmtmIljTgc`\/WQPKFB?>9S5?1/B,*)y(()''&&@%%%!$$:###$%-&(+j-14;8>FDbJ}NRSTS!QjLG@:3-)&$N""y!!!3 ! !s#B%N),2"7>E`L2SYA_Qcgilm5mykifc:^XOQF=3*_ q C !,(6@JSu\ch1j,llmlj fd`\WRmMIHE @<852v0c.-,++2*u)(''':'&z&b&'(B)+C-n/G14Y8b=+BHMPQR`PPNRID=7%1%+'$#""a!!~! !!J!H!h!m"Q#R%(-B18>cEJKRoYI^d/gxjlJn6mmjgct_YQH?5,!#8a~ _;9.}.X $.9YCNLVU]Fcfijl}l8k.hfcaI]wXSOKH%D@=x:L8 543^2y10/.M-C,,,,T,c,-.0Q13468;?DIMQQQOMmHD=725-*'&%%_$$I###$#$&$&'+ .v38?GEKRNX2^jc+gGillmlxjfc^YQI}?6. $_ "1{'1;EEO!WC_cgiktl1lvkiwg1ec _[SWSOfL*HE^B?=a;:c9+8654u3C22^22q23Y4y56879v:6;G83/-"+*u))(w(''u'H']'/'(*,05:@{FLR|X^ cpgjkhmjmmCjgc_ZSQJ`Ao8 /&A M8@P ~L 1*R3=cFOW]bechYikzkwjiEhRfdax]YV,S$PMJGED,BA??>=<;i::2:E:8:;f<=>@AABEC"E---./2048=IBHMMS#XS]bzfhjk@l@kHieb]YQRzJAs8/'S{lI v3a ]",(5>xFOWH]aeAg+iklkk8ihfdr`]hZ WTiQOjMsLJIbGFE\DfCYBAAABBD E)FQGHHIaIKMPFS!UVhUUKS9QgNZJFB?C<@:9)877v7 655444579<@EAJ}OYTNY^wcsfiwjSkkXjh|e~`]9WR*J/A8V/'VS {OK Q($s-g5=cEMU[T_bXehkFl"ljjwihofc_\ZXsVUSRQPDNMLKKJZIIIJaKLMO PPQ.QRTxV{XZ5[&Z~YWVSpPmLIFDSBAA#@@Y??K>\===7=U>|?B?DHLQ;UnY^bfhj2ijWhfb^YU[ODHS?7_/ ': &Z -%4BK ?n$,a4;CLTAZ[^adikmAllkk|jMhfca_^p][ZYXWVUU;T0StRRaQQRGSiT|UW XXYuZZ[]U__`_^\[KXV=SYPNBLJIII/HH_GFFEEEFHJ|LPhSW\` dRgTijYkjiDf1bX]XS MF7>5P-;%Dq f!;5!fa+ #*19DAJCQWF[^cgzjklXkkk1jigfOedc2bga{`_^]\[ZZTZ YYsYZc[7\U]y^l_$_``aHb;cwd3dcca`^[YWSUqSRQQQlQPOO:NN"N3N7OPRTVY]K`d6gNhj iige `p[qUPJC;33+G$%m &kN*A^ "(f/r7"?HPUY^LbgYjzllll3lclUkkjLii/hhgGf}edd)c^bbeffffffeuddDcbba]``x`[`S`L`8__^\]]]h]^t_`bdf>ghhh;hHfEc^1XqQLaFb?7/&W ;/uXw!GP 2] 4 q$*b1:LBJ(OTX]3beAgh5hiaj.jkMkl+lm5mVm?lllIl7l&kkkTjjiifhh=gfedd)cccdodefffgHghDhhh8hggggggg&fqeeMeFeHeeftggh+hmhhZhgwf@be]VPJD=5,$*fHE 4SV$7E{/TgJ6B ,w"'.7?;FFK0OSEW\_acacdefqg=hi j%jkskqkVkk,k%jjniihMg>f)dcb_`_^9]4\$[\\]_<`bFce;fh iikiijj:jjjjoiiiXi^i`iJi$hh]ggfeeedb_ZTMHMBB;3*"dH {WIn$OOeDCZ-U 7!$;+3;/AG,JNR5VuY\^``abocdfh iSijiii3hgfedca_^4\~ZY1WV5TTT}UVX[4]`BbdfhsiTj*jjkHkl`llm mm#lllkih3fedd b[`\WQLE@91( fV17f5T?M |C ZH '/.6H^<l: 4#-$' R5D"=XT3v=}o(+[c,R4:  D$+}036)7:b=ADCEEFG%GHIJKLMFM'LKJPHbFDDA?(<:&75s3$1y//V/602d5G8A;>B E~HKNQSULWZ#\L^M^_e^][ZXVToRPNKH~DB@7>??@@@A@Q?}=#%p'+()+-p/,012333334%4^44E321/-+D(&7#!p=lm #Y&),03M69s<*>]@BsDFGH6HHGFED:Bx?=96Z3X0.,)&P!$ '%1:7trQCS`ooR$ DFAsv !#$&'()P)w))9)(((!'&%$*"T av& x:"!%(+,-0Z2Y4[6+8%9;<=y=C=< ; 9630-*('+%Q#l4 " =P\d:6V0ZeVOvfxh9. (jU$R( \;x 6  " jI# w"$&(*j,j.X0k1222]0/->*'$"!: ; EGVdifIK~d]P^qr$E%+7Xp ^HhKrm=JOL ! wtbG S C 8 !#%'''6&$# c}W@ ) ng18e ^s3u]nt[fNUTZ^gZ? e}3y\`  V ` # <  q W p:h.X06S f rtHZ' =H4Nldw9'fq4o}}rI:_;ISdln[L!*WS4k 38;/-1a 60e&;k yD 1qtuG{<*.esQ~bI3?i1BSoztXH(  x4`7GdY9JT  4X{yvj]UND7) *Hyo B  R GL .@ O<~Gn:&/Tq~}6O\e_UIPC!Z^grt=RdUq=k0/ H[3J `5/#q_v7Mnv&%z$cyZ^((M]]^8U^VB89ML'$#.0=jv@KD{V>CLn35$i:%7Fcz5Le5aJ'@peUiDenI^6*/BHFH#AUYJ9/5;: '))6?LSdSny/_oXVUiZ7+21* kRri8w~[-&GsL[Z7qK<6ALNH #?VYN8&#:= .?P92JK0/jzW!Jo sovy}{u}vN)1hjCI)9_w{"936-p_LITVC&?Q`U30F3 3*@A54:HH1:nyN$^)=5:-vsztju~vff^@%(>@&qs=%;lmi}&=4/ qWK< (=_hN+'2>3:Q/(HVI6;La[, 7ds]0"Z<F5:0vhina]qz{zqikhZ=Bml; 9{e^h%>5* [9 !#-KciT2&7-CG.'BQTPJVW="'IfjP-@{!JJ*,)sdhsliyydQ6BmxiG03GliXYVk48  Q()%$.Cei=  <>GVA!MpmQEBFH8,1CW[I3!8b ?B  n`gwyyrJ#CZeX?8R}|kb^aTb7-  d:$$ =M8 1@1 1RV?8hyjUNK>66CVb^PAJ[5L40hXZhknuh= APKD:0=`mee # \=( 1& '')@F+5T^C*0S|pUC=DHOU[^abig;=C, kZV^ahq~W5(04?QUC,#/@Zq}r  ,0W6' 9  !$":K9'E][MEOhfKAFINOQT^mzt} <<1shafo}|a?*'48;CA1'-E\sy)+i:   5"  )#+88/&&0F^jg[X`r{nXKHIMMMIQf|)BN:#}x{s_M:0/2+$"&'3Hbt|cYS?$ )#    '05972.'2Rqxj]cmlc[UPPSVQS_u9I9#xbXVQMIB6.*05@L^q fC,  "!,!  -227;=9,,?_{xbXZ_de`YUY^ZZ_s+4(rhgkkdXJ?<=CHLJSjrO<%  Q$r..z9`\i_9Jb"oLf D N 2XL i i ) ) _ M N | , { nIg$nImJENq:  $$A[toJyiEcF_!R !!!0 !% \  W B 0    ; \ d  . 8 > U  S s#!n0Kn)] `{6 B\-@OUZD.)t\=OG;!["U#J""[!7 4 U  Q C $ [ 9 5 c # 7 I n q      3 O  1  c ZH@ }CiSi|3p;p P.e+,RiI7nW~/ Z  M  , m ( \ K  :   |Br"qmkr6 %!x_#gPqseAx&eq( P g m 2   , H n ) X { m ) u X _ r } l G '  &  / g  ` ) P  jiS0!BC?.^v0x4v}ygQ, G s]]6M D  M!Qi? d - y M ( 8 9 -   1 G i ~ A   4 ? 7 5 *   & & < m     K 2  T%(iq;rGC+zqWg)p2=$m [ S  P fN d [ t zzcGrG4;@Lo&{ ) O < (  0 T i z V  >Ob<(Qy,jFg2wevCb?v vX T - %  c "  o  d V )x}I?b8Zx<6\fB*2e # X ~  S N _m!r+:lfvX^ ,TvS.q<5D  ^ *<nk0FF^.YXPRVN*6oud9d_;pj  0 ? S  ; _ }  u W#19z1*]j8 e , , Lo   9 s U0  s< J;Ly1*5YopiP, 3azvpBLh{3AxgSW    > 2 m  k ]  F 3n1 x -  %  g  <  F ,?3Wy!8~N2`FI^WA'$CoF8h59-  6 Q   L _ Q 8 U ,  F u ? 3 ^ ? 5 M N K O L t 0 S J $ k q t #(hsg>?9aw$;;$y6H :F #8?Rr$Tjy}e5&mf6 N ~ 9 = v k b c p /   , , B jB-p- d QCRg[D( 2KTRSa*o X'Yc!   ]  + "    W b v k M C c < +   7 l e $"U_1,;f9 UdTVL9ZE#yA jH9EJQLTd#u X;]7-@qP3x  m   y n}/hWN 8>q~#P$~h"B|'h0w(s 1]r^`\7A:$Mykba.v_wO K j :{  3dk]ne.)~lq!. }I?a;|Hfmqq,Zy-KlU[>v(}q$slHZ\,Ka*ztx|], 3?@{sC:<s0B-YckKy@bkvh/>^  > R 'Om)amgijsP5 OAsY@eih~T@ns CIl2QA)}lk M  J(.YitVOnf\ N 9 : k # hoNu!qzwS! l$r?,@[<Zumb:[Zc Mk9KRS e>U / X!uPgN7*G'^\ o :z;K5l q . 68R '.ghn3-;gq<:Fj`YfK =c  yfuY/ 8 !T!"L"#4#$%&'(d)B*A+ ,,],?+Z*~)z('&%$x#a"}"!!!X $Busp2< j|{Y.imF|@:HTz_;=|N2b^ kV 0 `c ^!#"$%&'^'(~))*+,-|.U./0/l/0112K23455554[3v210/.6,++u+%+**C)((G'&%$"![J'5zJ 6HITaxM\JT-BSA$y;}? { %5 O$&)e+"-.0|12%2V23n495e689D:+;;S;L;:;);V;<<=>{?w?@ ??>j==<7:98'76s6 55t44!3h22}2E10/O-+)'&?$#"x!U3 O  bZP$zz;3#D[ + 'uS!&3*O.13628:+;?@BFCDEFkF~FRFEF5FuFGxHFI:JQKL(LwLKK#JJIlHFFE^D'CgBB[A@?>== <<(;:q9b76,472Y0z.,+()2'$|!6jO " `;WA]h ,^P9w=C @#(r,1L5 8;?"ACE/FQFGGHlIJLMeNOPkPPPPPQ&QRRS_THUWVWBWWfW'VVV?UTSRlQXPP OjNMjL JI,HGBFEDDHCSBC@?= :86%31D.,*&'#+s w*)~~>124^R x  @!%).3o7<?CGVJMOP PQvQRSUVbWY;rEc$1VD b   /='w!%A(,05:w>BFJNR&U0VXHXYZ Zv[5\L]_`nacOde}f\fffffEeeeLe*e&etefCfsffg@gh h3ggAff-ffeedddc,a`i_D^K]"[YXWVUTSR~PVN%K"GD^AH>< 85*0z+'J#! 2. |)F- "'R+/3p7<\AMFJNqR~VY\_`#aababb-bceGf~giDjlm%n*nnn4mmJllkRjjjjk0kiklSlmmn*mmkllfl@lKl9lk4j$hggfedcebHaU`^_^^ ] [@YeVSPDMIGC@8;621.*'@#VeX 2}x$"i 3_G!%)._274;? CfGLPTX\d_rbvdOefrggfffg ghijlmPnopfpppoonqmm!llllmcmnAnomop&pGoo\nnmmmmml5k:jvjjiihhggGffeNdc.a_]jZWTQN"JFBN=9i5Z1.6*b% %p  \.\#-)#-9+L(&$"H""#%)(,]05.:>CGKKeOSW[r_Ebegjk8l]lllulkkDksklm3mnop]pqhqsqRppp9oo2nnnnoRop`pqxqrerrr2qppCppp4p&onnmdm5mImmmmmmmhm@llEk:j,hzfdab>_\Y3UQ|MIwE9@<840+&R!4hz j$=".)864?1~/f--V-e/O1;482KFA;W5.(`"j i I X]ZX?U+RON-N@NUYl]uanehkmo+prqs tMu_uuuuu`utBsursqnpoonn3mmim llm8mnnFnnoSopqrrRs7ttuvvKvtv'uut%sqq$ppqqqqqfpppkp9poo~ooop pjpq8qNqApp~p%p oonmkjhlPlmmn&n}nnnnoOo\nn'mljjhgec`;]/Y"UOIBiggHfff.feffzghjAkmQo prtCuvwwxKwwvu{sr\pnmkkjjjniihfe-dba`__N_l__`;`ac dpfghhjlsmnnnnnnnnqmlkAi]ftc_[VP IAB<+56.U'!R `o4nnmmblm0mnpVqrtuvwwwwxKxxxxx1wv(trq o^mkiged{cJbbaa[a9a!abdDeh%jBlnqsPuvwxy y[xx{wRv.trpnm,kej#iChtgWeca_^\UZY'XW9W:W=WXYZ\e^`0b?dgoilEmnnoxopNp~ppOpnmk[iRf5c^LXRLF;?81y*#fLo_onnnnnoopqrstuv~vvw:wvwwww+vutrptnkigMeb`^]\\ [t[4ZZ[G\n]_adgojYm,or_t~vwyysyyy,xwusr p.nkihf7da^\cYWUSQPOsOAOOPgQS&U VYH[_ bei+kXmEnVop;qqsqqwqMpwoml"ig`c_=YTNHB(;H4,&?Woroloopop=pqrstu;uvv5vNvvw9vvutsq(nukhec`F][ZXCW#V'UUTTUV7WY[F]a2dgk#mps[uwxysyyyoxwv4trpnkifc`]Z0WT5QOMKJIOHHgHIJdKN PRUY]b'f,i=lmopr%rsrrqqep(nlkDhd`-[VQKRD=[6/ (J"nnoo_ooopKq qrstNtttu uruuwtsrSpmk/gda ]nZ@WDU3SKRPONNMN(NOPR'SoUXc\_cg/jbmpt vSxLyyyytxwvu1s+qCnkh-ea]YUQNLIHAFWDCCBBBBCDGITLOSXO]'aeilMnprss <a:6+310///`//002;4*7;@EKQX9^dHimVpsuqvavv`v%uttsqponqlZjegcT^?Y"SNgIgCno.op,pspppq qSqoq[qpppp;oBljLfnbt]zXiSNI>D?;|86l5@3311;001 12485`679<*@ELRX ]cj`E-KRjY$_g>mswzz=zmy/x+vu+s3q[nSk f.a?ZTsMkFu@!95"0|-*)(((\(X(5(U(D)*,/49_?DKRY`ejnprPtvww;vvvuutossIrqpnEYLT/[cjquyyz xxvuJsqo*l3gc \VOHA;61.+*_)!((u(L''''(x*,14:3?bELhSsZ^`Gejnqtuvcv4vvzutt[ssrqpnkthfGc`]nop p+ooooooonymmmBljfa]VPbI2B;51.,* 'b&$$E#$$$A$1$)$$$%'%&''$($)S-1{8a?8GIO>W~`go$sx%y"yxxvucsr"om ie_YSLE$>g9 30-g+))E(()''j''1'U(*m-1 5:I@F>M"T Zp`zeajmn%qsu(uRvv/uuMtttytssr pnlkigdnoioooogoXoaoUoDnnmMmPlkHgc^ XRJC<$50,H(&$#"""#9#####$ $%%Z%n%#%&/)>,3:NBJS3[ckq{vqxyVxowvSu!sr omjgc%^nXUQK,Dn>9531s/7- +*)((V'''()+.2{6E;T@FMZSZI_e^in)psstuuJtttjttpts qpo:mlYji\noBoooEo+o)oEoCo9nmllkie`ZJTME>60+;(%#"P!!`!!""""""###$##V#d#C%(.5x=F8NW`*ho,twxwwRutsr'pqnlj+fZbS\W/PJID=9342-/.R,+?)((('(V(*+.26:@FMT:Z`ejn#pr0sttttet:tttss4r@qjpto_nKmEnwnoonnno(oCoHnmlblBjhb]bVvOHv@92-{(&##,"!!o!!!"*"R"S"b""##$##R#/"$h&,x2:BK&S\Ye:lrBtvvOutsrqpoml"hes`[V0PJ~D>9z6;3t1/{-u+C)(r('('((),M.26O;~@GNmUB[agbkko prs,stsstt`tpt srr@qponnn_nnnngnpnoo)npmekksiEe_YRsKEC:7L52?/,*(''w''q'()+g.16L;VAHPWS]dXimoqrssssstAttftsvsrqpp.mmmmmmmnQnnnm6kzjgc<\VDO G@N92,n($]#%"."D!!!@!9!:63W/c,%('X&-&<&&W&H&'})S*.x2|8?LGNVx^djmpqsZss}srs=stss,srrUqql`l.l[llllm_mn&m|m kid_WQIB1:4 .(%#'""@"-!![ !#!b!";"#X#$%F&&&'!'-'(U*-2)7?FNV]dhlUlmJlUkjjJj@jk+kkkhf,b`]OYTdNTGBt=9=50,)D'7%%e%5%%&&'(+/05 ;`C.JRZagkoqArs8s$rr8rQrs6rrbr`rSqqVpkkkll`l.l%lmmmQmjhUc ]:UOG@79/2j-N(%V#z#n"""V!!!H!F!}!z!""#g$*$%&'(s()1))t*,1:6O=tDyLSZafijkjiZhggh,i-jkCkjhGeca ^lYSLFAl<7G2-)w'%$$V$$$%Q&R&)$+1M72?FNV]dinTp?r@r~rzqqLqDqrNrqqqqAppkkk+kkkklgm7mm8mjg~a[TOMcF2>712,l'%$$$.##p#""a"!" !!"I##$%'J()+N,E,-*,-/38?ESL%SY~_d2ghiahgg/f|ffgijkk4j0h#fdnb^xYRKEF?I93.z)&$o##[##z#$$%d'B)m.W3;CIK~SZbXglodqqqq#pwp5pqpp5p>pXpook/jjk#kkNkBl lmm m jpf`YRKDX<6&/+4'/%$$$:###i""}"Q"Z""B"#$C%s&(*,.0Z1d112w47<AGMSAX^b}efggfeeCedegVhjlklkjihfc*^DWP1IBa<5!/@)&*#j"">"{"U"}"#U#%2&+08@9HPXa`Ifclnq|qqpooGooo]nnnnnnvkjjk kok(kklm[llje^XFQ IB; 4]-)&8%;$L$d$.$###""f""s"#$%')+.Q0357l88d9;X>BAFKZP\UZd_=bxe4fffvfeee/eg8hj)kl*ll"kj6iOfaZSKD>60Z)%""!O!!_!n!u!".#%L).6N>FNV^eTknqqqponnnn3mmmmmmk,jjk k]kkklm9llid]FVOgH/@92f+'$$n#######F""""#z$p%'0)0+.25V8;t=J> >@>ADGK~O%S7Ww[_beeeeeae dde)f~hik9l%lllkkoh{d]VNG\@81*&"C!A N J [ T "Z#',`4;DM U]dkwoNrVr\rsqonzn5n6m`lllllm0kxjkk1kckkklmllitd:\KUN\G?70*&>####O#`#}##v#7""""$%c'})D+.26m:B>GA5C_D{EG5HKTMQSW'Z^adf]ftfeeeyeee-f2gigjkllllkkhe^WOHAW:3@,&"!g - C  : e!"s%*l19BKSF[c"jnr@rXrq"on4mmll6llllm_kk5kAkPkbkjkllmlvli6c[TMF@>6/(%*"# """"##""""#$|&!(+&.m16B:?(CFIRJLMOQT,VX[(]`d+frgggdffKeeele;eg4ijkl-klkkjhe_6XPIB{;Z4-D'#w!   !O$M(K/7@@:HPYT`hmqoqrpommml?kkl#lTlmkkrklkTk?jjkqlC6P/~($"z""""""""""# #m%&),049f>hC_HaKNPHRSVX8Z~\^_adfhiiiNhh$ggAg fgh ikkl5kkbjjLgdr^=WPII=Bh;5U.B($#!!x   #&-X4=EMVj^f8kopLpon"llPlgkkMkmllxmZDIOTxX[W^>`cdfg}h=hiVj.kXlMllm%mllnl)kkkklm\mmlkihea[UMG@:5q/E*&% ##"7!} =!9#)048AIUQYbagjlFmnml`kjkOjjk/l-lmo l?kkk jiijrk?kkQkgbZSLE= 4-&#y!"&!"#"G"##$$$%)%'q)-505m:[@cFLSRX]D`dfi:jlAlmmllmnannnnnnnnXmmtmnmn\n_mlijhrfzc_Y RKEB?:;5\/+l'%$E#"n! jh :"A'.I6? G_OWW_ejl|mmkjjkjjk=lXmn$opl]lkk;jiijEk kkjgMaZSLE=4-&#K!H!!!!"D"#N#$$%<%'\)-#05?:$@JFMhTY^bufChkmdnoo[onnzoop(p(popooo\nxmmmnmqlVigdb^`Z/TpNCGB)=N84g/+(&$_#y"F!R UZ!u&-,5=FN9U^d&ikmElkjjk,jjkhlm?nEollpl kjjij_kkk jg.aZSLEF=14-&#I!9!!!!!"A"#$>$$%L&),049~?FLSY_bfilnoppfp.oop pqqqppppionmm-llkifc`i]cYU-OIC>:63[/+e(&+$z#"Z!^ P!R %,4:7_4 1-[*!'E%$#6""!? Jb %+4a<DKS[ag~jlkk jMjkLk jklmTn%o9kkjjtjii|j/kkjjgb[DUNF>6B/,($2!!!9!X !!"0"#%##$&),049?TELScY ]:adhjm9630.1+0(&Z$#"!! BVQ!*%+4H;CKSZ`fiskpk jjjk6kjklm`nohhmhxhhhhijkZjjgcY\CV(OG?7A0($!!\ j !!")"""#%%'*n.1x6:@GNETFX]a2e#h&klmmn nQnop;pbpcooonkm~lkkNih-dp`%ZUQLH B=74E1;/H,*(|&$#"!! f# M!&,4jXk jjhd ]CW?PH@840)%z!  P   4 !&!"8""z"#&( +.2O6~<%BrIEMU \_afijj iij=jjxjk^lQllm3[^\M^)`ce|fhj.kjk0i+f` ZRKPCi:3>+' "  # x !&!!!|!v!"#%()+s.}27=D JOTrY?]b*ei)klmnop$pppVpKooCnTmllEibe_*XNPJD>81f+(&%%$#"!   M"(/N7\>F-N4U\bg ijBiiij2jvjBjRkklCIMRW\q`dgYj"kmGn1opq pppoonmm i~d]VrNH9B(;5-)%%Z$$##"F!_ ^\uw #*08_?GOV]bgki jiiiiiiijjjjk%MtP6TY3^SbUe h6.)*#!U}3^x G p ; & U!!#$&(+/C38B=]BLGMLBQ@V[R_cCfiYkmnoppq qpoonmid\UMFf@ 82*&f###k#s#"D! -aD1)!}$+e19@HAP1W}^cgiRjipiiiichhiiiiiE\I-N-T^Z_cgmikklk$ie$_WQ IVA 80*% "A+  !q"#%'B),0#37<@EeJPU>Z^ bEehk msnop8pq#qppoon*idQ\BTBLLEg>7c0)%#`##:#;""!e DAG.E +"&-4;BJNRY`,dhij iViixih:g^ffgfff=MB3HOOV][afikl'lkjfaZQSKC;M3$,&>"w6Am0Q !S"Z#>$%'*#,/263:?DYIOTYz^&bfil@n+op"pqAqwqq8onGic[pSmKgD#=D5q.(%o#H#e##""!!~ _)5Iq Q $D(/6>,ErLT`[afi[iiii5hh5fee!ddd ccY5P;CBlJvRZ!_egkllkkkh,c]VO6G<>6/($ ?#v) !s"e#6$@%J&(*,/U15r9_>CIOaTY]bzf?j;lnoppq6pqotm~h\bbZ6RWJQB;3-(g%###X#>""^!! Ex (N !%*2^9V@H&OSV],cg0iiihhh>fe!cb%a `+_^]N-T4eD.IOU Z_cqh k'mnop*ppqo+lg;a#YQFI0A"92e,(%###E#)""P!!5 Wz_ GXx "'6,4[;\BJQ+X^dgjiihhgfca8_]![uYXV&u.87F@ISDZaeikll)lDj}DAJ OUFZ_dhjkmno oop mke^VO$G>81+,w(%$"##d#9""S!!* <\nL!$))\/>6=DL.S-Zb`ehEiiwilhhVfda ]ZWyTQOM(H1;E8OaW_pd'ikll;ljhd`aZFTLD<5|/*"&/"A Tr  !!"s##}#$s%I&1''@(Y)-2)8*=DJP VR[aeikmnooBo$liDc\TLD<60/+'& $$N###)"" !5 )O@  r"&+19X@AGVNU\rafhj&iihheb^pZLUQNJ=G?DQ#,6?J=ST[a1fiukklUk&ifc]XeQJ)B;[5R/L*%# (,^ E !T!"# #w##$,$%T%u&7' )-]28$>ID;JxPW ]Xb/fiQlm8nUmlif"_Y/Q'HA+94.+ '&.$$$C##q"" ! = "%v)/6=DK2QX=]bf ijl]kfjfb[U8MME6=62 --*N'&%%4$##"! !#(1-.3:dAsHOV\b eijjiiagea \UVP ICj=73/"*4>_HcQY4`*dVhbjkkkkj&hd`VZUJNfGv@94>.p*%#k!=  M p !C!")"######k#G#+##%|'v+\/49?EKRX_]aeg`igfb^W P0H@93/+?(&&0%j%$\##:"!` Ad !#',s209/?FN$T[`eEgjOjjiVhf6c]dWPIB;w4.* % \$-7BPLT\Ca)f4hk)klkjrg(d&_ZTNF@93s.])D%"! !'!@!e!" "######D#"##5$v%) ,q1/5;@FMjSwYE]acedIb^MY7QJCt;50,('6%%R$$$#p"! h "^&"*n07)>cE\LeSZ=``dyhuj.kkaji hd`YSKRC;3,]%l  0z'p0;IENV\bfjkMllli{gc/_}Z(TIMUF?94#.*\&|$j"e!!!!!!"+"#A#|#n#n#]#S#D# #"#:$I%u(*.27q<{BkHNTY;]_a`8^YTMKF->71,)&%I$###{#@"! u u ^"%*:/k6AHQX6_[dThjm5m`mkifc_=Z7SMF[@:;4.*<'@$V#""!!!!"."##"""""""#c$@&Q(+.317=>CMIOTY\4]\BZUPIUB9;3.a)'#$z#h""""s"(!} P m"%~(.4;BIPWy^bgfilmmkijIge_YHPH?6-$' | @",7/AJRlZq`~fHiql`mmlkphfdb^YSLFA:5k0,>(&$##Y#<"""#d###y#"""""#N$%'*u,0a49U?"ELQSVXZXWIRMFr?k8W1.+'t%T#".!~!!!!; w  # %u).4.:AHOJV;\+aei\k(mllijEhea[tT4KB9/&:X  @Pq$/,:&DLUW\ucgkln,mmji*fc^dXRMGA< 6=1r-*a'&%j% $$Z$>$H$N$2###+""""u"#_$&$(]*A-=0\5G:AWGMaRUdW$UUSOIB;4-($"!: k } U +   " %!="%(-29@GNU[`ehklmlkiDghc_^VNEhy5>,"r< F<-} #*M4>HwQ ZEafiklEm5lkih\eb=]~XSOqJEo@];w7420N/%.>---, +1**I)))(()()*+,-/15: ?E}JOQSQOK*F?F81+&#B"}!!_  !!"S"#U$O%x(!*/p4#:&@(FM3SZ4_dhk%lnmligd `SYRIj@7<-$s Rj-D, ;#,7R@IS[ZbehikWkkjSigeta^YUQ]LHC@6<:8b655T44\3%1000F0///x0 02234f57/:L>CHLuPRTR,PSKG@:V47-)&&%$$2###$$$%&u'=(*.616<B GMSzY$_cg}illm?kifjc_ZRJA08Y/v&/ dE0 (%./9IBlLTZ\beg.igjkk>ji|hZfc_[WSP1LHEBB@a>=U<;;98x7j66e6I66&686789:J:;D"IOT$Y^cgik+lll5ifb_ZSKBk910a'o  e|&C #'09BKgT[9``beg=izjkj>ihSgdaX]xZ VSlPhMsK HGEEDCBA@x?i>====>>?@AyB!BCBCEHLSORUVWVUTP_LRGB =I8w5G210004///[/1/0h13f58BD*FIZM@Q?UY]Ha6dOg[hiiigWd`\WSMG=?&7/ 'v + o  )5>l_f z n'{/77\?HPDVMZH^brg.jQl3llVll*kj5h$f>dc2b`_z^u]\[Z[XWWV(UuTTTUQVPWXlY"YZ[[]4^`|abcca`W][ WTR#O3M8KK]KK/KJIILIIJ>KLOQUX}\K`*csfhiiijhgzd_ZVPKD<4,%p /}5'`SUL : Z&-5>;FuNSXa\Qa}eiRjklkkkkjihgg8fiedcc=b\a*_^^ ]F\\[[\ \]^__``b`acdAeef fdca_\ZXVYTSSSSSxS#RR'QR=RSTVX[k^Hakdg:i.iyihh eb]XRNHB:F21*z#M f14s'cm k 1 $+3_;DwKR>V[`%e%hjkAklllm%lllEkkk jVihhgfIeddkcccRc}cdrdde e%ee4efrg,ghQh[hFgfePcb`_)]\\3\!\\+\>\ [ZZZZ[\^Y`bwdgFijkj;ih7fubb]tWQsKF^?8/{'!  N'NgZU>s5 >#8)Y09AIENSW]@aegthhijbk]llAl3lulllDkk)jjiihggg]gfffflf/eeVddccd deeffFf#feemdd$cbbbGbbbbcbbaaOa?a_b bcdfhYiyjHii6gfdca[fUjj5iiQhhih gfedcbaaQ```abJccdmemfkgAghh6hihiifijjfj=iihhhii1i}ijdjj|jhgec_ZSSQLFe@:Q2*"xHO 6[)4?#Ue=G d#*3<C'GLOnSX \^i_`@a7bJc_deghThiOihh(gggfceddCcbaa_^k\ZYPX'XX0Y*Z"[\^`bdeg.ghijkk$klLlllqlkkkk^jjXiihfecb_\EVPWIPCk=7P0!( `O Ci)HFh:EUsv&>< sz_ (08$>aC?F;ILQNTWY?Z[q\w]_pa8bde0ederdddcba`_^]\[hZ>A DHuL0NPQRSU|WRYZ\[\a\\s[ZYXWkUTmRQP.NMKEIAFEZDDD(EG ILO6RUX[/]v_*`b cdefhAiIj?jejdihg eccZa[_a][YVRsLG7A|<7Z1*"O .g)S0ApuKg$IlO#M-; O&e,15Y7B9<:8c67 7 8:=q@?@ABC:CDEFFFgFDCvAw?=`;S96742q0-g+***4*B+-03o6:h>AoD]GQIL^NQSdUWZ[C\D[[YmWV*TRPNwKHC?:{6S2/*p$E_B p8fi\;Q/wZDk7 #&()+T-0o24x6)7$88U889>9::6:E9865Y3I1@.,*_'%B" 3* "k%Y(+z/436t9u<?  q  tG3&z;! "r###!y;<? S6g ay6xdtx_eLXYYZniB'mu ]<!j Q  0 0 |3y k V*Bf ? KVvN &9A ) m8d)>Gy6Qt> 2qCpxO=^6IZfkynS$9WGcxktCBPa &qynWJH+*P*!(n 1 g } , s QRgx{0 .!,csV hO6?i(?Xr{iP% %j[a P)N&}0 ,Tc]B2$  +1# HvDV X : /^~&jeS-rFJ'i4qu? r?*/Qq0M_e\YSWE % JhiBG>=6g' "$3Ly2@,$M.rhU>>)1:\)LYCX'bsZc0 *K^a^7U^T?7<QQ.! #)>\gK zX7_QW~+@2%^:/Xal 2R@63 {ziHntN)c@65AHIG&BT[O=07??%-) *)'->_a-'<9p{hg~YA'>:)#"eghMKuTNlF]Y6rRH<?LRG$?]eX;'%<B*=) "7>&5YcH\f0Yw wxhaj}dH/7[~hvD6V},//$ tgPGU[C 'F\fV36M>-?3)*)3C^_: '\P,d );6:0zrsf_`o}ubOCBIC+Ql;(J <;2 wXQF!+CahO0/<K? >R0 +DA9M`dQ/#DkrP U'BH8>9#yg_QNN^ykI" 2]kT.Bwrt)HD5 _@& $1NcjW7#4E4HL/8MV^]\TG<19WkdE)3w*PP144#yh_UWYhlE2\iU1!.Em~tvkw 38  R+%%(2Eei>0FA(PZ9!OtybPJYfXECMWWM<*V AG'(({jaY^fwh75JUH* ?qzrv."! e9 "(!!<M:%8@2 4NG+=oqZZ`TF@FOX[UCFY4J77+zdTIO[oW-@ND9,'P{xv  `@* 4**-(!'<B+,@E/"3\pZNIMKKILT^dnp6;F7{cQBGTl}kM866CZ`J+#,Ff~w  #79Z:,! > ""))!";L>&%:MJBDVso\UWTRNNOZk{y@G>maRVfmQ>367<ED."9Kb}(.g9  7%  .+&1?C>2+/@R`cabiz~nga[WTTLO`w~.MW="{xmo~jYKA92&#:Wgv{e]W> $! &-26>?6* *FgrbgruqmeYQTYRQ[q!DR<%||k__^[TG8.*/08DWfzhC,    "+!!00,4:8.1V|~cWZaimgWLQ[WW]q5>,~omrtodUFABILLHN`~~ZB' '  Jzfd{%rZ7y1LnbU5% w o +     & h T V 0 qKj)nOuIGKn|7   #&=IV?nD}Dj}RsDTJM%Uk8! O  K \ A      , X n  , : F [ Y ) z&k7Qo,\c"|2 @[* 7DIH0%yH "ZrXGV5 [n J  # 4 , Z M C c  ; R l x      ! 6 Q ( 6  h `JB#EiPc-e3_(zlvO84 8$ c  1 ( >   ;  1 Y G   D $ ) F!$x$rpgq:" nB!:#a$9s-@~ mKv ] * _ D   D v  ) K e e ) k S ^ k } q P /   4 m ! k 1 V okS2#CB?._y4v1t{oaP"i" h SX% q~.85 & [ U k v L    & D W e L  " 0 2 0 &    ! " = o     O 9  ~ Q'*gr<sIC(scUC 7q0N#q e  o ed   R ?S--?Ue}, ! J < # , M a s W   =K_9%S|+d=[%j\wy)Ls@   P  I  \wxzqI/4%S?J``;&2g  T P  J ]gj#? i^lRWXie |M" ) $ U )" =6bD_*g[X^VE+$-X%vw Cwd<{k  % ; W ~  ; \ v q P-2|1!X_8  =\<! f J @ 4\ 6f:<)&,=RV\'Rt413Nel`C% Fy"wBJn<7i[M[    ? 3 j  f X  D .m1 q '  !  k  _ + , }  ) W 1g a+]EEnp5 `*Q+*EVO:# /SJ; r(5=$7  ) ? U  G [ O 4 N &  @ r B , Y 9 / F > 9 H R u 3 $ &  Z14u?A=Nr7O{DB%# !  $8D\x,Zl|iB7&tg< J w 2 3 l e a f w .   + 1 "o;IW5k'a+sMENze? =]a^m.s M/fy&W %    R a v l R H b 8    0 ` l +T{{LG6$?ASY$oz_4Me;Gip`)^-fHHVjc`m & \/qlW +</4 h|M5x l  s iu/tSXE#8Z8^j 7 pt (V)5bo/#J4|jcSM6+7idui.n] {J L m @uy@+?'2afg6B RVD^fbJEV hF3oJj,&u8Fm7c_[H_N[P}!p.skK\[%J]ul ug4 +96rqi->gl3q{pqa~zu! rs j > B n ! C  RO2 P:v#Q=i h  c~T8ci =[;`cP  8 >  : s D,h";pA__\ , " [ %    ztjq$W p*s53U2[xmZ~+UQ ^PB#MQ J B~F){XL q! !!!!) +5O04>)16_ n J V t )m e$+fil 'y &|5cm;9>]NRj2!Kf.S  $$&Jt !g"L#$ %&,'H(Q)Y*)*+r,%,,,,,+u*)((&%$K"!! TbSrg%U13l ( l?ai;x5.=Lu\;@"owA(j*E2 \q?NGR!F"$R%&x''(!()*r+,./$01 123?34]445z56655y4453210/@-,D+3*t*)(( '$&x%%]$z#L! ScFu  #ZH[-GAH1E5%wqz{E-t L V ey!$'),~.c0@18122v3-4 5>6f79?:;<6<==X==>>4>e>?7?????>>>=K<;{:(87"6 5G44P3211B0003/l.,+)'&i% #"!j. z PaYKM w|r|!7k\8@crI>IM E#u'+.2/58:;k?r@ACODEFG GdGGH4HIIVIJVJKkKKKKKJIIZHWGE~CBAA:@{?}>9<;;^::i98765U320(.i,*) &$Q!24[ heYh C[~] !8f:V S[yt3!%*x.26c9=@CE'<":$753E0.v,H)&z"iT) 1C ?C>_2ML+_G S Gb7!$(d,05i9=AEOIBL;NPQQjQRSU-VuWXY[ [\J\`\{\\\]\]]^.^^_k_``````__v^]\[[[ZZXW&U[SRQnPSNMLKKXJvIdGECA=>z;863n0-%($q Y*. F A *:y"(I3  * ;  %|Z"&^),0O4#8_<@DHoLP0SVXXYZZ[\^_U`sabzcdIdddddydldddXd(ddKdde%eSe}effGfgfeddNccceba`_]\[ZXWeUU TQSS QPNLJGC@=;78440@+'$"#.= .  $ !$!8TYoo  $(,04'7;?CHL PSWZ]_N`abb:bc`duefghijkAkkk:jjDiiii9hhhi#iij$jwjkckkkk+jj'iiiihgfeedacbda_^^]}\\![GYX-US OLImFCX?;7q34/g,(%k!5 0 R/#$[" 18!]$ '+0%4a8`<#?CGKtORVZb]`bdegghggZg]ghijk2klQm!mmm`llkkYk#jjjtjrjk8kl lylm/mmmmml`kkkkkkYjiiZhhhyhgdffezddxccEb3a_<]ZZXTQNJFC7?>;87^30U,(>#f[! X{j*D3*/#-+G)'^%%%'q(+.27@;@*DGHjLcP}T%WlZy]aRdfhj.klUmm-ll|lZlm_n!nno'oLooocnmm?lllllHlIlzmmn5no o_ooppoo@nn[nZnynnnfmmymllllllljl^l;l kkRjihlgdb_\YqUR@NK5GhCY?N;D73i.)k$a 2b:8-:9[642101*24Y7G:?CfGKOT.W[^a'cfi(kolmnoqop8oo`nnnoSopoooooAnnmLllllm3mMmnnop3ppq/q1qNq:qppooWokooooohnnnxnNnRnXnnooooooonmlkigeBb*^[XXQUTRRNJF*Be>x:M5R0*^%  O0HY;G/EiB?=?BFSKO|SW[_behj'lncp2qqrrs!s rrbqqppqqMq[qpp5oo|onmmmmneooyppqrss ssssssqiqrrIr:r qqyqPq$qqq"qqFqr:rrs's rrrUqqjpioWmkikgQeHca[^ZW/S+OK E?9j2,&mM w$g][XUSRRRT;UX[_ccfjJlo?prstuvvvvWv%uut"sKreqfpooooo{o-nnenPnhnanUn3nBnhnopqYrEsYt_uPuv_vgvevuutsr7qq^qqr@rrrxrCr-r&rrrr'rrrCrsshsssssssirr poqmlvk ihWfyc`\YUXPJD:=6/(!t X Fe c=`^t][\\1]_ad/gjloqsstuvw^wwwvvYuttosHrOqPpon!mmTmBmllllm m0mTmxmn=nopqjrbstuv#vvvruutsrqppkpmppqpppTpoooooloJoDoAoop[qqqrrgrrrr/qDp`ognmlkji g,d=a`]}YT~NGA :93(,%yQ 1ukj8hEfeee;elfhGjwlanypruvMw wHwxyCyyyCxxw)uts[rFq!onWmlDkkgk:kCk'k?kwklFlmfn/nopqrsu v%w wgwww3veuts]qpoono3ooonmm*llkkBkjjkkvklm}norpTqOrrs's'rqqUppypootsfqpAon mmjmClkjigfeedcc bbc cdefh)ikUm npoqcrrqq|qUqDq8qqpp'nm2jhea [#UN3G@92]+"$- t ppXoovoso5owoq&ristv wix}yFyyzz|zzzOzyBxgvuksrFpomljh@feeddhcdduefhjWljntphrLsuvxeyUzz3z_yyUx8w/ut-rzponlls[qqoml7jhfec.a`_^^]^^`1acf)hknWprtvxiyzzzzz y xvuHsrptnljifdPa^\NYWVT.S QQQRSUWY[f]`d9gjxln.opaqJqrrs.sCss2rpomSkg/b]$WQKE(>O7{0*%A ppppqq6qr8s$ttuvw`wwxxlxxxhwvuos}qknljDhfd"bp`^]>[ZYXX WXXZ\P^adh[knvps6uOwy>zzz{ zzWy{xw\ut@rpnoki=fc`,\YdV*SQDOMLf(<@Y?l>U=Qmk hd`\X`TMP K!nnno%o\op pSpzppp}p4pooo*nHkiBe$`[VQtLH;C@S=U;::t987655e4445}6S78:>CGHOU[afgmhrvvxzz{ztyzxwMusqnkhfa[U.NgGA;^61/?,+***H*+9,.,-/26<@AGMnSZy`fkor]u;vwwwwFwv>ussr@qBomkshebr^[WSmn6nnno6ovooooSnnznEmmlk]h#d_ZTNI^C?:759423L22K100/K.. --.B.0P035;ozrEtvvvwIwvMu;tssrqonoljhfdPamnnonoo3oBonnmLllkkkhjem`v[U&N{Gi@z:~40,*Y(f''!&&&&}&n&&%%_%9%)%x%&o&W').230:kAIQZ)biptxxyxx8w/vGtsfpn\jBf`RZXS"KD@=72E.+)( 'b&&&&&D&a&{')-f16*:@G&N(U<[afknrutMuuvvv/uXttu=ucu`ttNsttsrqponmLkjonodoooppDpcp$oo3n@m/m kie:`YSL'D|=50M*'$#""/!!!!!"&""""W"##/#+"##'*1#8 @HQZbjpotvxwwvutBrq:om-jfbD\vVsOHB[<7?20I-,P*)(('u'Q''')+/W27W;AHNU[af~kRnqZrst?ttetsttjtOss0rnqponmno0ooopCppppoommtkhcm]VOHg@92-v(&3$#""3!!!!!!!!!"/""#"#"##`%(.5=FE0MV|^flruvvvauYtsorgq pn;lGhe4`[TNHA<^7S4%14/r-}+*8)'''Q''(*,/|3i79>FNV:^ellorTrorqqoppp=p4onlifb:]YSMGA<852/,*X'&&&#%&N&'(+-2"6=hDKRY`f k5n$pqrrrrsstHtutKsssrQqLphlm"mn nnoopQpooMml-hFWMUi\bhl~oprrmrjr+rdrst(tsssUrqpl|llmimmn!nooonljfT`YgR`JB;4v.)L&!##\"#"""!!!!"L""#5##$L$%x%&M&'(x*-r28[?GZO,W]dhlummIl)kJjj8jjklml@kijfcG`<\TX>RLF+@m;7&3H/+(-&'$$G$$$$%b&'*.4 :CAIQjY_f>jnCoqqrqqrrsnsbrs rrBqfpl;l&lmlmIm0mDnno*nn`lPid~^W#OHM@v9N2X-/(%e###A#`#J#""s"Q"m""##|#$q$%&>' '(c())*,166=fDYKS$Y`eJiWj[jihggghuik klkiifdRa ]YSKE?:r50,(w& ###8###$%%'*05=EDMQU6\4cWhYlnpqMqq.q qQr"rrrMrcr>qpp=l(kllmllvlrm>nnmmkhb\U(MF8>n7p0+'$#v##s####T#"""#6#$$%U&"'8(Y)*,,-j-:./Q3?7>FDlKQW^)bfhdi%h"gbffAfgLhj\km2m lMjh'eQb^YQJDV>082-) &)##4"""##f$@$&(-2:bBJ:R3Y~afkn?A5CFJLMQU~Y]ade@eeeeefmgehjl>no$poo}mliek^UVNG@82 +&p""N!"!!!!!#N$(E,4;DLU&]dkos s~srqppipoonnnYnmml8kkkjjk>lll4lSi/d\AUNDF>6/($"-"!!"6"#"#g##o#>#d#$%&(3*-704Q8.<'?`B&CE`FGILzORmUZX\_be`f5ffeff0fgVhj kmcngonnmxliel^}WEO'G@9?2+W&z""!M!!!w!P!!"#' +<2:8C;KT\dktoslst7rqp7ooo)nnhnn;n'nUmlll"kjjkJlll0l4}8=!ADGIKLN"OR=TVY[^adfgHgHffFf@f(fufgijlfmznmmll9ie^CW6O;G@9w2+&"!!C!!c!E!!@!S"C"%)08AJRh[bjo}sBstrpoxnnnJmmnnnCnnmLll}lk;kkljmll}ic[UME=5.'#!!!!""N"# #k###$& 'F),/38MOQS TzVX9ZX[]Q_823+'M##"`"" !!! !B!#V&-[4=ENAV^flnpqPqpTnmlllWl#!q!!""a"#{$$%%L%&N')R,M/p459?6E|KRWN\f`cfhXijk kckikXkl_m{no?ooooToC5.'#!"!"6"h"#x$&$%:%%&\')',*/A48?)EL>RXx]bfhk:lymmn?n mmnpopmpq/q qpppwonmm)lkjOgebu_c[VwPJ|DW>95!0,W(&$#"! _ H"(/j8*@NHPX`fuk`ln mkjlj0jjujk}lmnpEnPmm|llbkklXm+mmmmTid\V_O G'>6M/"'$8!"_"-"""#d$$%8%&&B'u(,/38>EKRX^KbrfilSmnoodoOooopqtqr=rr qqqp nmrlOkaigda]Z.UQ KE@J;g7l3`/+(%$t#<"!z zt:`"'.71?G*OTV^dikZlkjiij*jjzkSlmnp%mSlllkkCkml#lmm4m7j e]WOG?72/($"0"o"8""""#$%$%%i%&( *-2;6<9B+HOU[>_bcfik{lm{nn5n:no@pLqBqrErqqHqpyoimljiog dE`t\XjT[OJE@\;7|4H0-*{'%H#"! 0#Q"](1.7@>FNVT^/chjikk'jIigixjjjjkHlmbnmokkpk;jjjijklrmllieZ^WPTH@K70)g%B"U"I!"Z"."/"m"#v#$Q$$%' ),049?RELRX\a=dgiklmommn noqqrGr qpponm=kigdaO\XBSxNJOER@V;D71315.l+)6&$#"o! %QC +"(n/ 7`>FNU]c2hikj{ii,iaiijHk)lfm6n%oKhhMhUhRhhiRjfkclkl+ie^XdQIVA#81y*$%"\!!J!!!!"@"##z##${%(*.,16\;,A%GMSX]Y`dglklm mpn=oipqrqqnpp`onm#kigb^Y_T8O J1E]@;-6u30B.],*'&9$}#="!P U-  #5)/7?mFNVs^cbhijj]ii~ij=jjTk/l^mmneKeeJefdfgi"j=kjkhiOe_YQJA9~2*&"B!M { !!T!""z"#,##d$)&&( +@.V26~6z.(#!  I 4 ! !Z!\! !"v$M&<)+/]3@8j=CInNnS#W_[`d$gikzmnPp?qrs@ss=s#rdqomhc{\T}LE?83L-D)'&&&&%%&$ "! }2VB"0%,3!:AIaQtX`#dijUk>jkNkqk`k jjxk0kl kkOQUTiX7\`cfhsj jkjifd_#WtPH@8h0T*F$! ) = U L   !Q"$i&(+/3l8=wBGLQ%V&Z_c3fikim5o`prIrsSsFsdrr]p$mh5b9Z;R0J>C<5/)&$%'%4%%x$$J#H"4!: nfM} #]'t._5EM.T[bg4j~jk@jk5k=jifhnhhAhhSgg?DIPOSU\-aeTgijlkjk+gc6[UME=52.Z'# k-0Ku  "#$&( *,/o26:?LDDIaNT X]aehkn+p.qr r/rqqnke_VNF>70>*& $#E#####]""=!u Di !"&>+J29@H"OQV]dihSkkkjijjihff?f feyddo7=/CJvQY#^cfijkkpkhe^XQJIA+81*&)" C B!"*# $K%q'(*,/q259>kCAHNSqX]aeyirlGnp&q?qHqppamj c\TLD<5.)=%d$Z#;#L###+#"""!6 Z<# "H#'-Q4;C>J~QX_e~hk.jjijih-f dXcb)ah`O_C^W/6s=EMVK\beiajl kljfa,[TMEM<5w.5)$R!V W!"##$%'(*=, -0S38T=BHONSX]b?fjmPnpDpOppoal)h7aqZRLJPBE92+'$#"""x""m"8"! ~Q K "|$k)=/+6>E0LSZ`^fQiOk jVjisihfd%a_^ \ZYNW(0I8A IRZY`dhjl kldjhc_:XREJdBH:3I-(o%#! vWN! !0" "#$W$%')(Z)*R,.x27+71-'$! @JN . !"+"##$$!$>$%$%}&"(+0x5;AHNU[3`Ae_hklm{kj;e`kXQI}A(91,'%$ ##W#:"""x"!  q"$(,3\:AHOjV[`dh0iihi h$F###5"""3!w yi #&+07>F.MTZk_ cfli:iihhgea\VQnKE?9520.#R+5?ISNZC`ehjlIlGlk*ioeb]]-WPIB P = !:!"U"#.####l#""m""$0%(,2!7+= CIPV3\R`df/gec^?XPI~A:/3-)&6% $5$]$##2""n!!) :j "i&;*;0 6)=ODqKSYA_bfhwjVjTihbh fc']X@QKDkJQJW\K`buca_kYSL?D=6R0z*'%$i####m#""&!x C o!$)(.4;BJ$QGX^{cfijkejigg-dj``YSLQE=5.R'! t(2d=GPmXp^dgk l,m}m ljwh;da[V)OPHBC;6T0s+'%^#*"~!"!!""u##q##k#J#"""Q"E"J##%(^,=/4:(@KFLSIX#\^`8][CUrOxH@92-\(e%##t"#"""";! Fw|H 2!1$K'-k3e:AHOV]bgdixkkkjiTge~a\sUN#Fc>{6G-&zf <s!+&5@JS@Y`e~ikmmmlejgd`[U}O3HB<61M,L)&$#^""Y"$!"%""#"""["&"!!!"#-$&),165;AHMNTY([ \Z+WdQKDf=C6g/l*[%$"["D""."<"!!!f 6!l# '$+28@lGN|U\Ebfjlmm*l{jifd(_XPyH@7/.&sF !; w#.)8C&LWS[aSfilslmmki|gsc`ZU(O+ID7>083?/R+)S'%$$=###o####C""q"I""@"U"#%&)<+/(38>E KPVGX^YWXTNI+B :4-*(Q$1"!M!^!D!!!!Z } !!$M&+07?FiMkSZ`f>ilzm?n+m>l igdaE[SJB:;1-(e tF &M0;qE=MV8] chkklUmmmSkpigd@_ZU?P@KE?:S51F.F+G)v'&%%$$$m$R##y"""C"V"d"#W$w%'),0`5;MAH:MS9U~W TQLFh?[8@1t*%")!  \ m !!3!x!}"#'#*t0 6'=DL1S;Y`)e+ilnbnnmIkhfb^VNEH<3*>!F !8x (j270*3%"7!Z !!!$!u""#F#x#$s&H(S,A0<6%G5@,n#Ri`,y4c ( U*n4x>YGOX_sdgjmkvllljgi!fd`,\@WSO+JEA= 976t310g/.-,,h++_***%** *W*+5+-.0_3 7g;A}G(LQ5SaTR[OIDt=60)%"l!!!f!4!)!!f" #;$&$%&'*s-C16GPX%^bfhBjk\kjj1hg#dyag]yYURNIEA>;97655<4U322<111|1}11223346{8DJiPKV"[a.e{iCkMmnNnm jgH+PeX^behikkkjsihfc`X\YCURNAJmG"CA?>C=<5;E:r988<888^8{889h9:;:<>-A6DHM,PTV#WTR5MWHB=7v1.=+a*)))O)()\* +I,G-/1n37KFOV\`cffi`jkkkAjj,h5eb_;\_YbV(ROLyJ1HFE D CB\Ac@??l?x?@"@g@A"ABC4DUEHJNR>U[XiYiZ WUQiMBH:C >9@63[2111s1Q1 191235,69H;?DkINS"W[`ddgi|kkll@kFifb^YS"KB90'  zApi@ 4#,c4=FNV[f_bfil l{llxll2jhIeb`l]ZWU RPNMQLKJ8IIHqGlFFGHGGHAHIyJWJLMOQHT8WMY\O\]W[pYAUuQMsHD@X=k::-9999999'9V:V;W=>A@CGL`Q5UxYe]aOeDgijKk'jj4gd`\WRlJB9{0(r  xh {#++3U45-&C 2w1\! ,C!(1.:~CKQWZ[aehi=jkklmOmmmkjjhgfJdcba`_w^]]][]\]6]H]p]^t_!_`S`awbtceIfpglg|gfmdbg` ]ZXVUSST TTTTFT(TFTUVWY3Z];_begui%iIi#gg.db]SXYRN*HB;!35+o$w_* %.n6? ZY'u/8B/J5PUZ_QddgjKjklcmqnAnnnmmlkjihgg$fHeeddddHdccd dHd^dPd d+defghhhhVgged?b`_b]\\\\d] ]a]M\\\\]^{_K`bdfGh=ijdjihfd`\UPvJE?8&0(j!q z@aNv. \ }h%-6?GM2RHVf[`df gcghj+kzlIlllll.kjjiihh=ggIffffdeeNdddcsbau``abcdeFefA;4-%?` dY i{Hr 3P~Y72  R#+o4 `-aKbcdefyfg0gXgggh\iMjGjjjiii|iijjjGj9j7iigfd'a\WZPJ_D>8R0)D! Xg"-;x!BX(X' p!(19(@&DHKPT6X1Z\]l^`ajbcdeleeeKdcc'bbbBaa``_\^r]\8ZX}VHTSTTTV W2XZ]_)`bvcdefghfiBjkllll>kkkYjjihgsfdcja`]jYeSGM F|@;4-%}  3Uu$GI`74JdOkbYi l%-4;?BOE]HLP'S&TV~WXZ,[] ^_```e_h^]]\,[gZYXlWxVeUUSR PMLXKVKLMZNsPSV X[V]_|agcdf9g[h}jkmmn4mmllBkigeca_^\HYTO^HB=n8C2*"3 ;<@bJ"+[0I/=]26H*% B2!(/5^8~:d<:87 43223458I;U?BrEHnKMPSUVX[U]`=abb2a`F_]C[bXVXSQZNKGB=`8M3/*$C ' ~ &=:NJeCm#1bYn, I @ j#C')++. 14;689:;<=>?@I@@@?>G<:86420.,*(' & &C&p')#+.2`58;>AD`FI,K#MCP RU-VOWVeUTSR&PN_LIGFC@BEGdIzJfJJJUIIAH"FDpA>N:63/k,(%4 j :]5b\rl0Bv'WT"HSl ( e5l2B #%&(()))) ) ((''%$"!EtKR!$'*9-/23579 :<=s>>'>f>0>"=;96 25.e*(%#k Vum Q>1@6mqD5G8mW MK WNN4 Yj_:b d WyQ>!$/&q(()*,.013 3d33y371/,)&" qwc W lcB@d7Y_OGlc"' o llk. c B 2;2kQ3  |$ q F   2!$ &/') )k)((1&]$6!NSN 8,r(tXllUQc^QYiw!9<.*}7kXw#; - V  }nZhkIY/!p~m  < O0UI*m~@+u% )dc+rV b{?hsu_hO]_]ZlhG 7Vi!/>HZI\Q&e U =qS N: ] ; xts PN$fFUf&*fyBytJ:^=Rcnoyo]/,*&UWxRtOw: Z" R2E> ko~X0 i  >X:n6  ;%\lTcL3=g0G_xj\= #`WE|o6 0!6V$<eyt8u6/w>5h+kr@n<)/Qp2N`haZT`W),1JmpDIzg_Y n;OVU\o(U 42/;Sj%n+8Ss@V XoZ f0(J^bb6S]S?6<TY9 1. (&-LcgE*H\y+e2 8RheXT]rsmtCs9 ~ E`iK+ mB32BKMN*GYZJ80:FJ3#:3 !*/4=\^%H>%^c?0=LUL:-,A@ 7Kio WgqBPQ7|UF>FRTJ0J__Q;+.KR" 2C'/>#-TZD!6k`=dlcamwF(D}%xE2R($*& vhVQZZC 0J\gZ8$B]M 3?, 0-$0DXYE,0fN ,i *A@C4 nigmnuYOdf`o>.K~ 5/*|_SC! /GhoT48KXI?P)5DB=IYh_6%Msza/ L,GTIOD'j]X^^fww{c0 JurJ# Mtu)B8+ _?$#1Qio\A1?L;EB$ 3IUZYdcO:0>You\1)s0X]AC=&}cQMX^k}oS- HbbJ44Hrvjy 66P*$ !.GinH6LI"BJ2Eosa[]giYF?Jdp^<#O GR33. {]IEVdwzF2FUO91Fmls6#!^7$!=NA(",@I9 +ED/6kxgedZNACYliV<<L6SCC4y\GCUdv_- $=B930(5Zvp! Z:' 4 $ -52*(/CH,)CK4"2[x`RRXQKPY\\]db<FRB* {bPKYgxtD(,7K\U4 4Uwv ).Y9) >  (21'&AQ= 9OKACUqv[VZSPTZX[ixt~$EJA$|gZQ\n];0<HPTE$7Ro%%d9 8% (4.'5CA3$!)=P]_]_kk`\TT\bWQ`w.IR<* pi`h}w[FCIE<3+4Yo{e`\@  *%  $*-6<>8-$+Hgzxkam}|rmeWQ\g[PUj}$ETC1z{xtqreWSQE932)-;WlgC-  "# *5*&1438:5,#8Yyu^Y`gmsm[OYf^SRd| :G9)~rw}tcXOA;=B<9;NetR@& )  "]]Hu"mn^ ?^~a yIx@ B <   a   Q \ . xPp7&z$WEGHes1  "(EHF(>VprDh'*e)*8  e ` m a " V  ' K a M '    ) P w   3 ? H \  [ , :&uBNi,a h)~. 3P% 9GG@!jAqy2-&p N S A  Q    + 2 1 a T L n  9 \ v #     * 3 J _ = R  w`G@% GiM_}$W#t0?=X-L/ n Z   u V 9  " 1 8 ; ,  F   B : d N  |   b 0 < I#&{ nqdk5  ^)m#pzJ "  8 s `  v u    b =   C n % I ^ ^ % T > Q b t x r w n S 5 " #  <  ) s 6 X vpW6)HD=,_}7r1}ybKSff% }n3 R { e , f %  ( Z x ^ ?    5 H S h | | D          9 u      L 8  `64mw<s%PH"{mQ0 p\ f  w @ O W B e B ) !   =T6 /J^t"  > (  3 X f p ~ T   >I\7#W{*d:a,o]rr o;3[}  :  q G " uEM@}8)MwEPmgC.%?t  V L @ Ry[c:]XoZ]N\]j f \ UOPCB * U   ! K r GIU 6EdDm3kjYL@5+Z "rq$CnjC " : W { r  9 Y r  k K '}.T^, | / Jo ! ) o Y ${(|\M6-=SdghXX+fs)(6WbVE, Ac qtuANvhGlZJY  ; 8 n f W 6 'o7 j -  )  u ]  o  > D J I3.5c+g -biBh1X',EF/)Mi}E2H#GK#(:  ( > W  F W I 0 K  }  8 k ?  M > : P L F L K h % x ;   { nZb xRd ? [ vR ).(#  !'4;TxPq{WL+0yoB L z o ) $ a ^ X Z l ! " ) ) o)"Z z>fe |^5 ^KN~r;">Vk7{%L:s|^ #   } G ] t i Q G ` > +   D p k $TtVRc8)s\<U_Y G<{LcV?g?`t;Isihoin}kb MhYU (-=j~S9s b  u h!de{'ul38Q$U\8/>A?vVm+UL{1Bc8D`ex [%sY~? I p Dpt +y%r4? >w# FV$\}'=BJjB#K]5gFT1=4?JG;(C+@h2v (+odBSZ!COl`n{a- -BJ*t]]6"PiDd~6 # !z& U " " + N | o Y %HAt&%\a>$S=i`\xK+X~2F0ca bmbl P b vcg$)Furjx V $ L w oWn2brMn0=3 Ew,ZwhRu Lb*mPH+^ cn@4<27K 2; %!.""# #`#;#2""K!D %( G  3h20  u 5 i 1E<% \af1x #y&O_6 13O<{0?/D"E lUPl; !"#$%'2([)*b++,u-"-..---T,,*)Y'%$i#! !52s xRf?Z.qE+7?`M7>w)3a, 5!,d  ly L!#$0%0%&'I'()*,-o./{0p1M26234%4x45t6 667'77.6654218/q-,}+**!) (W'&&;%$#"!mJrd: { A} H?^;E:F!+!"~4hz8;Ba4 G :  E!$,')V+-/80!0112N34+5E68@9:;9;<<<=K=x==>|?I?@O@@ACAJA?@i?\=;:687G54332I11?00//!-,-*-(O&y$#!c_ ] 1 XneaSx\ewtw%  @7 4#'g+@.u1479W:;L;;=?d@ACDEEF%FvFGGH@HtHIJKL.LLMmMMMLJyHGEDBAX@>=<<;\::987_542#0+.+)'%$!MD  ~ <KoL +>_c_[  m ,!%*Y.26c9=@CmDEEF4FGfHzIgJmKLMNOMOtOPPQoRRvRS^TPUkV\VWyWXCXXXtWV^TSlRPON*LKvJ HGdFKE8D\CBA@?=<'97n42-/-,*P'%!mDPO ! p+IDG8Om 0|IY K-vb # %(,159=AEIL[NOPPQ`R RT!UVWX%YBZZZZ[[\\\\]]^_w`$``abbbb&`_^]\\[YXW5UT\SQPZO MLaKIHpGDB@=[:8;541/F+()$' [<2E z ExL" 8x  _ kgH#&T)7+.91549=ADHMPTJVyX\YYZEZ[\]^k_.``abxbc cbc7cocuc@bbccd]eenef|g-gh!ggfeMddd_ccDbRaP`_ ]\[YnWUTHRQPOMWKHFAC@>t< 9730+(%"LFkw: ~u%(o,"%P:"%)-?036Y9?<@DHLPTX[^`DabccJcd5eefggh/hisiiiLhhhhvggdg*g7ghVhicijklYllkk0jjjjjjiiSh{gff dc`a`^][ZY}XVTAQOMJmGEB-?2;73s/,d)3%!k=(f `$'%# ?P #*&q)-!048;>AE HL6OSW5[^raceg/hi iWiAiKijAjk5kLk|kl4lolskkbjjjiiighhhinijkklYmmmmmPllalPllmmBmll\l kk6jihgfhe9d ca`_+]\ Z[X-USP=MJ(FC?;84}0-($Y " I zjb@)J$2R0-*2(Q&''*--04&84<[@gD$GJNFQUX8[g^be\gj1kmnno4o0nno(oopooooofnn=mllllpkkxkkk0klbmmvmno=oooo?nnno oppypppFp+ooo^nn>mmKlkk!j1i9hg ed`b`^X[XURsOzLHyDc@W<>8f4P/+6&""xv =&%=;e8*5&3;122582;?CH#LOSVY\_zbdgril]mo2opqqqqqZqWqqrqqqIppp%onn mm~mmImllmSmnoJopppqppp6ooop7pqTqqrqqqqzq2ppp~ppsp#oonQmqlkjiJh!fedka^[YkVSP3LGC?;72-u(W#0,/ O (HcJS/IFC@W>X<=2>@CJGK/OT W[^bdgBi-kTm]oq;rs@stttttEssssssss8rrRqq\pp\oo|ojooxoxo~opDpqr9rrs"s3s!rrMqqNq1qQqrs-st t+tt$t"tsssssssssZrr-qppSoznml%ige*c`^[WSpOQKBGC\>p82,&!<oEX 7udg`#T%QN^KVIHHI?KMQUY]a0dg~j;l$mo"prttuLuJunu[uRutsssMsss6s5srrqqiq;qppppppq)q]qr`sstZtttttssLrqqqr{sstOtttttttwt?t ssstt sssArrrIqqponPlji)grec`]9YfUaR NIC=7?1*$r XtS~;^\2YVkTSTTVX[_bcfiloqrWstvw0wwwwBvv\uutDssrrnr[rrrqr$qqCqpppppppq2qdqqros#stu_uuuuu"tksrr3qrrs6stuu-u"uDu\uhuTu3utttttttttttztMtqxppVppp ooPoo)oQoooop4pq'q}qr rstpuKuv:v*vutts.r_qqr#ssttuttIssssYrrq{pFn2l+iJfb]WBPICq<5L-& ^ GoenUm l"kk[kl-mlnpvx'xyYyzaz{/zzyyQx!vusrqhpDnmlekjjjjjjk3kl[m'n?o\pqrstuWvwwx`xxxEwvunsrqrpXoonoo#o#nwmxkjqigffeeXeefkfghjFkmcoprssssssst sssgrqp,mkhe_yYRLF[?}8U14*$*srq|ppZpHppeqrstAubvxyEzztz{1{| | {|{zy+wvtWrqp4nm k^ihggpg0ggghhiklnsp0qshtuvwxy_yyzyzxwvbtsrVqDpeonnnmklkJigfe#ca _^U]]5]p]^_a1bd4ehjJlnprrssMst6ttttu"tsqpmmkEfa[JUOI/BE;=4h-'"Qr7qqqnqsq_qrqsxtIu0v/w;xWy#yyzez{zzyxwzvt=rWplnm kihfQdcUbRaaaabkc(df:h]jloCqTs,tvwYxyz~zzzyxw^vtsrqlonBlkiWgd~a^[YjWVUKTzTTqUeVXZ>\]`=beikmnpDq*r;rsstVtttt4rq|oZmj,f`[VxPJDl=7e1+'!rrrrqrrrstuAuvwxlxyy>yyyyxxw_ut romkOig'eTca`H^]g\L[[%[$[![\^`Ibe[h_kbnp_r93pqCqnqqqrbrsttuuuluuYuYuGuftt6rlpmjgsdSa+]ZWUbSR]QONMLvKKVKKLMOQESW:[p_cgkjnquBwy{yzhyyxxvut`spmieat]6X}SkNiIWEBA8?g>^=\=<<=?@BE~ILPU|Z9^bfj1mtoqrst6tttt*sqvpopnkifc`\+WaR{M5H;C=6op)p_ppqqrrrs=ssss`sRs rqp|mk2gc_\HXUQNLKJ0IGFEDD;CDnDEFHILP*TY_^2bgNkot%wyiz zzyxxvut>rplhc^xYT1NyHB>;R976555668D9a;}=AEYINSX]bg6kanIqrtAtutunuu4tNrr q pnlj+gda]YtTPKFnno1o\ooprpq\qrrGr@rqqqpnlifa]/XTPLIFDCBA@?x>p=q=<==>?AzBEIIN~SYP^ci*mrvjyWz2zzxz1yGxYwut/rokfa[VOIC^<894>2S0@/n...h./11359=BGMqRX^diDm prtuvVv^vvWutsrr-q-omlifc`A\aXTOmmnn+ndno*op pppppppoonkhd`M[>V-QcLIDA?:=<B0GM7SxYx_Ye8jptxgyzzzzVynxw'vtbrolfaO[ TNGD@:50.K++**!**+>,O,.,/3 6;@FL]RVX_e>inYpstv-vwvvuttssrqpnplOj)g}da^[WlZllmmBmmnfnooonnn=nlkxh0d_ZvTOID@4c3f2l100s0H001313[4D6:b@ELSY`fmrw9xz\zzy7xnwFvctsplg7aZT)LE3>*7*2 -{+(c'I&D&R&U&'(4(a)+*),/49?EqKRY`ufkCnqsuvTwww'vuutss5qpnmjhfd}a^klYlllm6mmnn[nLnmmlljhd`JZ{TNSH'B=F925200>//._-,,l++}+K+o+j+,b-.%0q38>hEJL#S[bPiotwy+yKyxxCwTvuHtqJmhc\VINF?8v3H.,)'&8&%&[&&&'"')+/4U:??EVKRZ!`Yf5jMn,psNtuv0vvmuu#ttsrqp nlk7ixgecxklslllm&m{mmnmmlllklhf`[U7NGA;g51-+*H))Q((k''''3&&&&''}(V(*t-257`>pEMU]elar3u9xxyZxx~wvuet qundie_XQIB9:5?0b-*_(&& %%%%%%%&(W+/49?wELTZaQf&jmqs tuGvvuu&ttssvrqnpGnmlwkDihl|mmnmmmnEnunnnnCmnm71,(&%$##f#5"""""w"n"p""#^###$&K*<.M4;DJLU]e l ptvx|x!wvutspnkShAc_zYS&L'E3?9j5E1".r+*b)(D'N&%%%v%&('*7..16{;EA]GNU\)aejnqr[stttYssussssrtqpp'oOnLm3m&mn[no`opEppqKq pto:nmLje`gY'QJBL;U4i/4*'g%I$$ ##m#8"""L",!!""~"#I###$z%(,o2a8@HQ&YaghmruvvvpubtsorCpvnlieb\WOQJE?:5N2/-Q+|*"('W&8%%%%&(+.26<6BIPV\ag7k4nprqrsssars>sssVrrXqq$pbonnnmmnLoop)pq0qr.qqRoomjd^VO!G#?n81,'%$O$W###0""y"!!!!!"""f""""#$'*05=E(MbU]djvpru*uttsrqpo`mykhe5`e[VPJD?#95240-+)'&-%u%%B$%&(+..16<%C JQ)W]chplo(q;qrsrr\rsHsssqrrr#qwpolmmno>oppqr6qqnooYlhb\ TJLHDb<6/++&%R$E$$;###+""{"K"E","?"{""""##:$%'{).3:A|IIQ:X`Afko4qqqqRpp[oo+nmljYgcb_.ZAUPhJD?:S63303-*(&Q%$Q$u$8$%:&(O+-16=yDDKRY,_eMjjmUopqrqqqrxssNs4rrr6qpolIlm9nnoGopqfr qqHonkSf`Y8Q@IAG:4-)h%$$ $h$<###%""""""#<#l#Z#?#H##$W%&(,/0*6C<DKS@Z`g$jmbmmm^llvlll@l?lWkiMebF]ZUmPqJDo>96(2/,7)v&$###^##$%'~)6,1=7>TEMUT[agk;n:oQpqpppqrOrrrbrhr+qpolllmnPnnopq@ppnm(i d(\UME>71x+'$$b#$0$###I###>#_###$D${$}$$%%W%&'(+L.<3p8?GN[U[aehiGiiIhhCghJhijjjgda]ZVPJDg>:"52.)*'g%A##6"#D#I#$/%&)-M3V9A/HPfX^wdi lnApphpyp!p/pqsrqqqqnppoekkl@lmmmnoppApnkfaZRJBX:3.)2&(####$$ #####$?$$%5%~%%& &''(a)%)M*,1"595@0p,a(E%##""""#+$"$')/R5 &'9'()+,,,-/?3 7)'83,.Z)&$#{"#."##N$$m&H(u-=2r9AiIQX`?ejm5op2pp ooplppoooonunlMkkl*lxlklmnnnl*hb\TM)E <5.)%>#B!"7"S"#L###r##$$m$%T%&h'(')A*,.i/001m3&6:>CLHMRW[_0abc2cJccdeggziwk)lmqmlSkhgcc^WPqI,B<6 0+'$$.#####|##%f'$+0X7? GlOW'^djmpmqquppFopfpp1o^o&nnHmmlllkll6kkpl9mUn#mmkQg`ZRK C :3,(#": !Z!"("""""#?#$@$%Z%&()+-0346 679=.@CGzKP#TVXy[^`rb,bcDcpcdfkh{jSkmnaon_m{kdjfb7[VT1L}Ex>8@2X,'(7%$$$$z$D$###%8&*/k6=FlNV^e kUnqr}rr qKpppponnmmmYmwlrl9llkIkklmqmmBjif^XSPH@81*y%""!  !"-""""##$F$%&')v+.&1747:;<>.@7BEYH+KNrQUY[^d_aeb3bcpde4fhjl5mnooo&mlifed^WvOoHA$: 3,(o%$f#$`$=$###$&).75V^WOHA93,'$E## ####l##$%}(-4;DiLU#]e)lptetuQtrq|pponnvntnmno,nmm'lkkklmum m id\UNHFm>O6.'# a P !!"L"###t$0%{&z(**&,/26:?-BEGIYJLNPR=SUX*Z]_abcicddSde\f1gijlmn`mmlWkhd]VNGq@M9A2+'#n""]## #"#'#8$($'+2:CKcS\dSl&ptu4ut^rq_pp=o;nzn2nXnnQnonnamm_llFlm\nmmj!d\UNeFp>85.'q#b E !E!"`"#:#]#$&<'}),7/26;N@DH%7w1*&Y""K!""""k""#b#&\)08@IEQZ}b_joost=ts~rpuoo_nmmn:nHnopp\5.'C#/ ^ !!" "##l#$"$&(*-15:M?gDIMQSV7WY[\]^g_p`bdfughilioiJhhhhizjjllll"k1igd_YRJdC GOXZ`[hmrZs-srqounnmm~mn*n|onnk{fV^\WoOG?6/0'# !!m""##r##$r% &(3+.Q27qon&mm}llmAnno}ppoonnnnnkoooloulf^WPG?|6/x'#!'!_ !o!"t###$7$h$%|&(z+.38y>EDoJQV\[k^b4d\fhij(jjk$kln6o=op7p1p:ooo-nmmmqm`lki`gca!\X6QK!DW>83/[*V&#""6";!!N < Z 0")$*1k:BOJS[sci*monpon[llel|l+l\lmnoppooGnnn0n@noMpoolg_XPH@070/($!!!!"C"#]#$C$$%V%'(z+}.38j>sDKzRW]5a!dgFj km/mn&nFnOnopqr r1rrqqqonn-mmkifPc"_Z\ WRLFs@k:62].*F&$<#")!!2 RT.!##)08@I0QY}aufkmon:m*kkskkvklmnvo~poonnnjnEKRX^DbLf1hkmLnoTop ppyqgryslmTn6oAplmmlmPmm.m3mnko4oop mThadZRJBN92f*&W#""l"##V#$$k$%%%&(*-27D84C0-,U++)('3%#"!u [ !Z$_*v19@~HPWa^cjgijjjoj jUjjjkml^lmCmaabcdce8fWh"ijkalkid^CV^NFi=6 .y)#! D !2!" ""5"Q"""c"f"#%|(Q+3/638=wCwIeNSX6\I_cfikmnoq rstPt4tvtXt4sArKp)n:jcf_XQhJD?:)40-+***z)(']%$&"! iRCYi!% +o2:AeHPX2_"\#k'O,Z3:BPIPX`^ehkll kwkkk>j9icii?ii)hhxCGLcQWQ\S`8dfi/j]kklWj:f`YRUJBr:O3+&"r v- Y!"$&(*- /;2<59=BGLRSW\afei9lnpqxrUrGrqXpl;g`YQmIA:?3,(&$$x#$E$^$y$$K$#z"!!  V!!4"$>(.d6"=MDL2SOZ`fill kkkYkOjci hgg~gbffe 6/%)$" # !# $%')D+,.148 607)&8###B#Z#E#;#1#""k! "_ "% *?0T88?FNiUY\eag#ikk]kjCjpj"hg edcc!a`_4:AHOV\ae!hj(kxklkibdP_kXRJiBb:3)-~(%"w! rM% !#$S%h&'()+L,/ 26:@OEKLQ0V\va"ei%ljnoop?nlgbZoRJC,;3`,'$v"""\"F"" !!!!O L {"%+19AWHP9V]bg`ikjj@iii,gefca`8^\[Y->4=<CKSZa`bd-hj kkllFjfb\VOG@82,(%d#! v#r # "#6$J%%&'w(4))i*-*1*5<:d?WDJPV\a+ei kbmnnlje_WEOG?8}0*%#"Y"q" !!!!o!:! H { "!#'-4lzi^f`[U?ME>71-,v'%,"i! H! "##$$%A%&&x&]',(y+/@408>]DJRPW\a_ehkl|mXkhGbJ\T8LD<5X-($#V"*"G"!!!o!< <xs x!%m)07?oFMU Z`GcgHhiDhhvggf?c`C\YRUQNJG'19BLzT\Japfilln!n mkid`vZhSqKiC=6R0+'$>"; (- b!!"#$&$W$_$P$~$$$%'*/3A8s=CJQWW\aeLhijh2e^XtPIA(9@2+'$Z#e"u""""+!!o! | ?H "3$P(-529HSQOY_ei l)mAnnomkgd_1XQIBP;g5/*&:#n!% ov>G ]!!"#####s#8# """$&*F-27j=oDK!QW]RaBeZfgea[ TLE9=60*&##X"#"""?!!a! |s4!#&,?2M9AfHP2Vw\`dfhhh[gMgfda@]aXSMGB bEWL R8XC\`bmc`]fVP$HA92-(%##,"#:#)""1!!H n3%!#'`+a187?GdNwU[?`d%gchihhBffEdtb]nXRLFG?9&2-(m^q(1<(FgPFX_dil^noponldjKfIa[lTMG$@:4.u)%$"%! !Q!""#0##""0!!9!'!,""$' *.3F9@FLS6W\^+_\XQK8C?EMIT Z_dg;ijj06=DKSYR_cgik6jjhgepc_[DTNcG?7x/D' Y' 9;#-A7BL6U[bgkmohop)o;nkJhd/_YYbSMGA:4/~+(&$##""R"^"""""$!!s!M!!!&!"Y#~$k&(,18m>E7KP@UVWTmPlIB;4/W)&V#" !B!!"0"Q"!!4 Y J !"o$'0+0U6=DKR X^wd gjklkk i gdbG]aWPIA8/'Me %/:fDoMU.]bhsGzO[W^5cfj'km4m;mkjifcs_[LW@RNID&?;V8 4210..-9,,9++z+>+ +(+]+, ,-.{036_:?DeI~MCPQcQ~N*JvD>8|2m-)&$$$F$c$l$$$%%&\'(*-0v38>aDKvQWp\uafilnioFpVo~n#khjd;`$Y}QHq?L5,$zY os@u "+5G> F(NV.\aQeggj-kOl=kkjig{d`]2YOUlQ"LHC@;<:8n7N675443l322233;334[467~:<@DHM>PiS`SSPMGBW<7S3$/&-+m+*^*)))*(*b*+c,.?1 37;@FEL\RW@\G`e0h|k0l~nInoOmkgd_ZRJl@70.$t u #"a+4XXTP{L*HTDB!?>d=$<;;0:w:999:S::;+;<=I>@CF_IMPQSUUUROJF@< 8x53V11[0a//////0f02:4&7:?CHN?SXz\aJdhjlHlnGnqn$kida$[\TKB8/B& Twdt x[;"*2;aCLSZ1^/bMeGhjlBl2llplj?gdPat^n[SWTPpMJtHFED^CCSBBAwAhAB$BBCCDECFuHgJnM$PSVX!YYYVTOKG$B?<;O:9k8j7788 8788Y:<?BG(KPlU%Ym]{`dgijkUkQkk?ifc^ZWSL;B90' &5[Rm u!E)o1O9CNKSY']a[f il6lmmQmmNlig)dGa^[XUzRPOMLKK~JJDIIFIKIJJJKKtLMRNPrR5TUVX[y]%^^][ZXU#QaMuIGDfBAAQ@@1@*@X@6@??@MBD4GK)O\\[ZZ>YY$XXYYYZ[t\^$_`acdDefgg\_SadgiNiihh5fedb_^ZVKQMFb>6;.Z& WT$UXyQl) fB;&.7@HNTxX^gbfhsij]klmfmMlkjihg`f"e dcHba``7__L^^^^__`GaKb9ccdGefgNh-hhhDgeca_]\1ZZ@YZYYZZ2Z0YYYYZ\7^6_acHegxhihgedb_[EVQ]MRHB;{3+$R ~$fy!7 $%f- 5>FM'QW[`d!g"hijlmmmmm6ll kMjii,hh/gffWeeeEdddededeeGeEee.efagMhhhihhigjf)dcbb@bbb(bb!bbbb\aaVaIb)cUdfghNi6jajVigecBaY]YFShN3ID>80@(" #>V@ f"O} H#{*3;C^HMQV[{_bdpefjgi2j$jjk k jjjBiiiDhhnggDffaeedCccbaa`__`jaNbvckdFe;effff3ffff;fjffgEghXhYgffXf&fg{h`iiDiipi,gf c]a]ZUOID?:X3,%l7z }[ bt>f t@cY U]! '08?E`IDMQV[;^j_aPbTce+fghi!ijiiwihhhPgg1ffeVdXT'MGA<72)+$b|i !Zv $=B_7/NcWtX* +!(086:U=@cCHAKNPNQZQSTVFX7ZB[]]6]6\p[ZYX@W UTeRQsONLK=IrG^FE EFIK'MP*RU WrY\^_a?bdJegikDlWmFm0lkk9j i!gLeb(_\ZXTOIC<=83.t' bS #-bC%U0L3J%f6+>3< Fv$+N036-8T;? BDFPFGeHJL&NFPQRSRXQP=NLK)IGF"DCRA@>=g;:_9s:;=O?LAD'FI KwNPRTVXZ]_xad+egXgwg"edc-a_z\YyVT(QNaIC=73/*%^n Ov-K{4jlLgI1>Y$|p U?% ),.0258:<==?.@BD)EFGGGFbDB@><:87M542@0.}-D,K,-0,2947L95X6789:; ;;:8%6F41/-,*.(H&J$c"D!  !{#%(7*-e/258;c=@CKEHKNQsS;TTSRoQPOMKuGDG?;h61-:)_%!W &[guX/Az(sp75l|wR 24 < n- "#%'o) *\+,-{-.`./..M,+l)y'%~#!pg"S$'*.036^8;h=@mBEbG HHHqGG8FFD"A~=83/$+'t# bGI D J)4vXWtl1@q"UT+Obh 4 L]X !"######c"! yS=}^S`+!$'Y),R.02468:/;   %XvWBVP ! !o\ ~"$&'(5'o&%$!y= M1{^OotXP}c\OVfx$8Z4F?+.  cK7j Q Y ` |iZ&h1mo5o> Ib  u=QA +sP"cO gIltwagSadb`sqS/ ]l%%%Vz`va\:z ' yM-*D k W %%5_$tgO % 70I[2lV{uL<[=Q`knyse8/(5_c'2Vnlx0ZL.hN =)Vp~[(oJ]t]:mO x ] \,pI3G//)[i\fJ2=c.@Vnwxg]@ '.#!kd;foVVJIi oPO^x'Zz::QeSEMjpV$gj7v>&,Po||8P^d^YVg`0/5% "Su{S?h.= <Bu9,P79NSU]bma=FBA0?Yu'yWrZ p5(L`cbB[aXF>E`gF)&"0,1TpvR!Hvkp}1#~TEOopYF26;gT=C" C_lU6xI64FPQP2IVZO>5?KO954 )03<Hfc%<V@sgeqgK?4Qsn)#l~8GM;%\J@IVYM*@X^T=++GR)2I0 5C,2RT; /p-Rw*+ xssTSlBu}MSIs  #{kVQ\^D +F\mcA*D_S*1C4583;HYW:/ri8r $@FK;' }jk~sotnc2n~M2U**)&${^VH! .Ho|dA@O_Q ?U/?URFP[aR&(^n. J&>OKTK3tb]iv|hG) EUE,#D#@<1 ^B),Qnu_A0EWA!MK, <OVWT]]H76Owc4'q,T`JKA* wi_cn{|X +53-.<Mo//  N, (Bcf?"AVM#,NT5DhhUT[hmbW[jlH$NFZC>0 {sdajze)"BE8=w,$Z5!9H:%%3CG71JE->m|redf_YU\oyr\?;I-UOO;$ qn]W^rr@IS; T ~S4$ 7% -65,$%8A))AK<1BfsZOS__\^`^\[b_|4J[L6xji\X_qrM,!.R`DCr{  ,5"\6# ;  '54%7K; 7NOIJXrr[Zddbdd\[gxu&LRJ,vqijkxeJ754>PO. 2[  i> .  +:0#0AB7)#)<Q]]WYfnhighno^Uay3NT<)zx{l\QI<454!4Lk |hfcF$  #&',,*1:?;0'-Mnzi\gxwoomd`jp`SWl}+LVB3tqyvorlbXK7,081*(8OshF/    "$4?2!'-028;7/"(AfxZRY_gpqdYbl`TSey)CK:.|moyxruqdTB,'4FF=.5N}sVF*(0  )(dX  =n{X- ZN {Ds@0 C s 3     \   J T  / wTq8%|'ZAGL!ms0  4=SO|?.X?'8i8 _ _ k b , b   , K Y A    ) M t  / ? L ^  e 2 5$qDMn2kr%}1 @b7@SUG c,\g-)b9BK @ O E  c &    - / & a R M q  B ` y !     " / M b @ N  wZB:! EdIYv2T!s**,?Psl W Z R    u W > '    , 6 < .  <   G  B i K  w    ` 2 < ='*zp_f}*(&^)%$pGd   { c g  s v    X /  ! E q * L ` [ & L 6 L ] p { x t e Q < ( % A ~ - v 4 S  "{b<)GE@/ay2r> hKQrXBqu } ; c , T    2 l i H !  7 I S h } G          " @ u      T =  f?AsxD|&RN2sS}*vy3$   E ` b h B  ` 4       u3~Q3 6Pas{  ? -   4 U i { } S  LW[3&Xx'fHh3vbrm  nuRC [  7  t P . tF9?=&Hp@OgW7+#Bz " \ C  O `X \4|qj{cdHRQZ d  &`k z 6  ) W { J=Y!<Hf@[3lkYMD<% -U|go Dsb>"  # ; [ z o  A a   z U&x(eb$  o P B :  X z<UL=-FJQblo_]*Uq($2T`WK4 ;_k|~KU{jNnWH[    C C } u Z ; *q4  { ; # 1 # t [ q !  x u <F 9c$` 4re?k1C 'BD0 'Gbx>0 I*OM #5 " = [  S h Z ? U  x 3 g 8 } a P G W V R S L i & o ; # ? t :Eaa:](uV  !"#*1LpGh|}*`N$#i`2 P {  V S O R c    * ) ( g*/U U|!vRsZUwl16To7}(XAsw #i  0 (   w D Z q e L B Z S E 3  " Q  k MsM=< hH&Jd+]`9tT)_wUp] aLHxkhqr{~ipLi^^&6P {Y8r f   x n #bh}}yxk2:V+NSD6Y* wH#9=C`&Hs%Kh>IdiwM'#}kw8 D i ;lu""7#$f)N 0fd8)D;L /7.BE;NY?  + 2/JLA-6HG6>(;o8y %wSL6OW.YbiR_oR-R^a=_I4  ?T4}S">=Ag.P#X> l O (AiW ' a/=v,,gpB _ X[|Tqs@$T;4_dM.S}F ] 5 = ?  Wr(KqI1U1veQf_ B ! Pl^}3#^t$L}CQ5H F})VpbOu3gw;z 9G*D`y' ; &xz9zE ]!"e#'##$$J##"Y!#x-d!)qPT ;  +z0>Vh@.8|!R^y2%-Lk?>5@ W K R" !V"P#W$%'3()*+,-e-.H.....,+*(m&$#H! ^>oCfW>x ^&@S!oD9V0\F+5dUZ)bmuq0F WIAo!"^#$&&'(Z()*+,-./01234k5 5677T77848765?3y1/.,*)(('_&&e%%N$Q#@! 4Ck L j>w* vT|\K *#xxhK JAS/ / 7 ^x A#%'*,+-k.v/u0911234W5<6u789+9:-:;f<1<=>->?@U@AAAB.B(A@?=<+:`875~4X3]22&111O10i/.B,*z(&$" lLuu~  .0c|_^ 4.o^c~x{ e!U #&*[-^03U6 799:_;;<=>?|@PApBoC C{CDADEFGHSIJ%K$KL~M)MNLNZN:M8LJgHFE7CA@?{>==-+)'n%#! + r:>d8#,G7}Lx2t R'A7!&+*.2"58<^?jB*C~DXDEEFHI IJhJKLgLM MLMNaO]P|QRS]TzUVzW,WXY,YPYSXWV'TS%QP@NMLiKuJTIAHHGnFEDD BA@1>p<:(742=/-,R*(%"d9OUu =Z_{;2+1\| > &obA j@X!#~%(-16 9=hA$DHKNNOOPQRSTUV VhWWWX?XvXY8YZ[\c\]^_`Kaabbc ba`_^z]p\[ZYYXVUTSRfQ$ONLvK IzGECa@=;"86420Z-)H%;!=M,kj S U(,<Lu=o 2MW fCL!w$'*w,.159f=AEuHLP{T V]XBXYqYZ[\]^^_)_R_`?``aa/aVab7bbc cudde\ffghhah#gffe]ddd1cccnbb aJ`=_+]\Z-X*VATS%QP'NBKIgFDA??<:8 41 -)$%"5'  x lk )W2BN $^'+V.247z: =IAESIMQUFY\0_-`bc.ccd*defgg&gfg7gggggggghh hhEhiijGjkl4llllkk jjjjk*k}kkxjjii gfpdb`_]r\ZXVTRUOMdJHSEC@<|840_,P($ D~ 8{&?# XB/J"&*.26F96;N?DHLPES~WZ%\__adgjmnopqr_rrrTqqqr-r-qqoppHooOnnjnnnnHnsnnnoDoop/paplppXpooZo6oo[oplqHr6s sssssssVsrrrXrqq p(o2nlkj|i gf%dUa_\ZWTPLG;B>:6W1V,E'#t\ ,DEB? ;98!9:Z=AiFssr~qqgpp#oTn7mkjhgdIa-])Y0UQ`M!HCB=%72-\'!W 6 @"ZWTQPVO:PPSVZ^bfniZl~nq rRsntCuvwnw~wYvvuott,s{rrMrqqr8r`rSrqqqqqqrrVrrrssFsttuuuttSssr[qqIqqSqrstuuv?vuuurupuUu>u8u4uuu2uLu?tttitssrsrqqoppoml jfc_\eXISNFHB{=7{1b*$19 A b`][8Z.YbZ&Z]_behkn!prttuvwxnxxGwvutsrrqcpoozo]ojoootoeoopRpq&qrrrs2szsttu)uuurttdsrqq"ppNppqrks>st%t%ssrrKr/qqqrqqqr?rrss's'ss8s=s rrrpr8T2),&!ppqp ooppqrsIt,u:v\wxUxy;yzbzzzIyMx^vujsqpInmlzjhfd[ba``___H`a0cseh-jloPqusctuvwxy-yxwvutsrqqp4o;nlkfigdsae^.[UXW#UTT8TTUW8Y5Z\^`!bve7hjlnopqrs1s|sst#ssqpVnuljfbj^=Y4TN0GA;60d*% qqqqqrrsjt8tuovawDwxAxixxy0yExwv}u s#q+omkhihgbed a_^-\[ZmYXYZ]+_rb/dgjmoqs]tvewxxxww+vIuptsrqpo"m&kUhf.b_K[WTQPNBMZLLLgMINPRTVhX[R^beKhj)l?mopqr=rrsrrqponlDj fcU_ZUP`JoD?W94-qrqxqqqr0rsUstjtuvuvvvvXvfvutis!qnl_ige;cha`d_V^5\ZYW|VTSGR4Q;QRUfWZk]D`dZgkmpr?tvrxxnxxwvv u2tdsIrFpnki#ebG^YUuQMJI!G>FAE]EWUVqU"SjQONMYKJIJ\KtMP2SOVrZi^cgjnqt.v`x\xy6xxwIvuusrpRmjfbB]YTO IF%CAe?>====>o@-ADFDI;LQPFTyX]`dgjm"o0p4q4qqqr qpoo0n]mpkig'da]]YTP2KF@op7ppqPqrNrssAsbst ssrrq3omkqheSa]ZJWqTRPOOONMjKIH8FEDUC|BCIDSFHLDOTX^4c0glosvxyzy[xxwjvut]spdmci d_ZU&OkIC?< :H8W7666]679H:<>ADI8MRnW'[`KdPhakan&oqCqrprrrrWqtppo\nlj\hoeb^[W3SqNInno-op6pqGqrr.rGrrrFqiqp nl~j@gc_[*VROLK+IHH^GFEC6A|@?=<;W9t5%200/6/H/,/01246z9B6GMT^Z`fLkrqu1xz${!zzayyx5w|vtqnidb]W`PDI-B};6m1.,#+>*\*}*m++,-./25:]?.DJGPV [bgkvn$prs6stktutt0snsrkqpnljgeb`]Yk;kl-lmn1noo4oxoooonml ieb]SX[RMHC@z=Q;:;;*::=87654301001x3h47:@xFMT[vbh)nswyzzzmyy\xx=w us(ojeo^W^OG@b9B3.+('i&S&t&' '(b()\)+.p27=nBI3OVX]Nc'hwkoprsctZtuuu&tmt&ssqpomHk2iNg\ec7`Gj{kklammn nQnlnnnnYmllej`YQIsA:5/,)7'%%%&>&&&&&(H*-17^_DKRY_dgkFmoqArspsssts4spsqsrpon|mlkjukplGmmn~ooKoXoAo~o|o&nrnym8kgaZSL^D=61-+(&&&;&M&:& %%%%%%%J%$%.%X%%'<(,07>GXOW`gmr vwxxxwwjv6trpmjfGa[+T]LE?84i/,)(v'&%%5$$o$*$$&(6,/49?FLMhTZ`Yd\hknNoqrsFs;rrs-ss}rqpoonzmlklmn~oDop&pWp_ppp9ocofmkf`YiRJpB;4/*g'&S&~&%%%x%$$$$b$H$N$H$a$$$%W%r&'+..5A;DKT\Vcwj[nsmuVvvvv utsrpumkgc^X7QzJDC=83m/,*('&r%$$V$$S$,%6&)-515;/AHOLU\`ehlWnjpuqfr^rsr'qrsssRrrqpWooannllmnop4pzpqqqjqp on)kce_WPTH@:=3@.);'+%&?%%%O$$$7#####$$$/$7$~$%&)-29@HPX_flpsOu0u"u?ttkss&rqoDmjUfa\_VCPIC+=D7i3/E,*)'@%$##{##O#$'B)-1,6;BxIPWm\bEfIjKlop qPqq5pqrsrr_qpppToo0klmmEn\oNoppq$qqxq#pom;ic]jUMF5>81-('%&)&&T&%%r%$$$$$$$$$r$M$$%&)A,1 6=DLASZaflnpq#qqIqo[nykhdc_ZU7OWI[CX= 830-}+R)';%4##,#,"#;#%\'5*T-16=CD3KRX^clh!kmnp/p{p8opqr]rrrqLpppqooOkl6mnoowopfqqxq9ponkga!ZRJC-;5/+G'&%&K&2& %%x%<%(%%5%F%]%%%($$|$$%|&9(H*Z.i29$?FMT[``ehkklEl9lIlZllmmmlxjffb^FJMT[)`peiVlAmlnoUo*nopqqqqppppeoobkllmnnnopkppp^nmie ]W O3G'?8z2,)"&4%%/%%%%y%T%K%k%%%&&&b&X&%%v%%&'6(* -0q5;B%HNTY^yad3e/f9ffg@ghj>k:lOkjgea=]YqUePICb=941-*'%g##H"# "#N#%g&)-4&:B:IQ X ]chkZlnXnnn}nopqpp&pooo_nl7llm[nn3nSo(oplp onDlagbsZSKC<15/*&$$$Y$%%8%:%;%`%%&&p&''*&&&&''(})|*+.p3 7=CbHMRWLZ]_aabc^dzfgi3jkuk}igda^1[2VPICW=84n0,(&W$L##C#f##9#p$|%'*06>pFMU[]bfjl mn]nxn5ntopp{p2ooRo=nnnAll5lzmmmmno`ooom~je_X`zacCefhjkwl k,jge.b_[VOHB<72.*D'w%($$$K$ $$=$%3'6)/B4nnlipcd]?UqME=v67/*%@#!!!"# #c###$9$$%z& &''(9)*\,-//0<137]:>B%EtHLIOSOVmX[E]'^`bdgikl+m0llk i#feda3\UNGzA ;51,,!(&J%%I%%L%$%%S%&&(. 3`:BZJsR5Yeafkmp plppoopCpoo nnn mmll/l(lHllWlqmNn)&&C%&A&%%%%f&(-2:AIQY}agmorr^rqq!pppp1oInnnPnnmllrlbll5lGmmnn nk8f_YQFIfAE91*%! [  !W!!"""z# #$T%%'G(*,/3:658:);=@BExGvI-JLNQShUrWiY[^/`cvfhjglAmPnQnynmljifb\"U;MF@94-)&&B%&P&=&%%%y&(^,19$@IRQYyahnqt9tatsrqqqZp~oo9o#nnnn|mmUm*m2llmnSnnjnfkKf_X0PiH~@J70)&$ h ] !y!!" "h#$ $%&(*-047;E>@BD FHKLMNOQsSrU|W XZ9\Y^a8cfghj/kmnnnm4lLji:f b[TMmFP?9 3E,(%%/$%T%f%l%I%_%,&['+07?H71+'$^##$N$$$$$%&*/?6>-FOVW`ho#rvv>vuosryqqRpVooYoodoppVoojo%onno!opyoolkg8_0X0PVH.?7 /'#g l ~!!!")"#%%')-y049 =BOF;IL/NxP7R]SUtUUUVWWYZ[\]_dac&eNg(hikl m(m7lkajgf$b^DWQIBX;55/)%"""\##t####$%)%-b4;DLU_^GO|X8`h mq8r rqponnnn=nnFoopqq;pppppWpfpqfrqqn9iaZR!IA!8Y0($C   s!!u!!!"*"#b$%(<+_0d5[;uAH/NSY\`[be7fggggghriWjBjk kl7mnnoKo>nnnnmTkthd`]OXSMIF?94/+'j$O!! e = ( #B&-"4nopqZq|qqrrSrrqponlohd^YISNEIBD>9v5 1B.,)'!$"!{ gVU\!$+22#:kBIRYaWfojkllJkjjk2k kKlm7n*oNpll1lwlmUmn!nopYpMqnkc]\UoMrE<5*-M( #"!")"3"h""""###$%I'*/.28>)DcJPV[&_[b>e0gCibjlImDn/o p:q=rrcrrrssas$rq4pYnhl[h c)\V2OJAE)?;52/-a+q)'%#"X! ]A-]! $+=26:qBIQY)`eijkk`jjFjcjjjklmnoii;iijk$klmnnon7"/R)$\", !"!N!!!!!""i"F"#$&*P-2794E0j,++ +G**E)(8&$#.! d !&-$4aZ]aIeijkykk4kHkkkk|llmmKm`}`aNbd)e;f[gikj|kllPk6faZ*S JB:2,&~#3 !o!!!`!K!p!!=!!"#%(&+/U3j7V<A3FKPzTXu\a(eim%opqsu'vv2vvvvAus^pkfE^WOGA(:5f0-*z*(****$)(' %1#"% -!k"&.P5=ELQTQ[ab#fPjk kkWkkll#kkl7lllmU[\]` bSd eguij9jlVlCkhc\rUME=5/>($!!$ !W!`!H! !! !>"#&>)k,k/37;@EJNSW\afrjmo_pstuv/vvbvuurPnibZRKC=$6T1G,*c(()")))L('&$#n"=! NJ  $(0H7?|FN,V\c}gcjklkkl>lVlkkvkljlMl$lMVEXZ]]U`abdfhjjl lFlgiye^XrPH@81*&&"P!L ` e r G *  u!"$'Z),/@2y66:?DHM:RW]ebg`jmorstuduuutspklue^VNG?9B2R-q);'''( (s((R('4&$#p"m!V Y .!!%*2v9AHP@X ^dhklLl{klWlllkxkDkl*kkkORyUY]aDcfhRijkl:ljgGa[;SL7D<4-($"I !  # " "(#&[(*,/M2 59>KB>71o+'M$$$P$$$$$$$#Q"\!{  w "$$(.6>EM8TX[a[fillkkekl(kqj7iWhhhhgfNAFLQW] adgi(j*k;klkid`OYSKACo;4|.)%#\"!! bS4 !#0$&(,)l*+-/3B6n:? DJePV[a e/i~lhopqpp^n&kf`YmQIB8;%3-(%L#f##T#t#d#H#+"""T! \ 6"T$*o08?GwOV\b*g-ikhk>kjk-k'jhkg1fHedcqa`:e@GMT(Z_ccf4hijk l5kjfb\VO[G@82,u(%?#"[! [N !##$%'(()*+.W059=>DJCIOU[W`dhkm-llihe_YQI#A`93?,h'$!#""J"!!!X A_vq $'.a55=!DKSPY_cgijj#j iiigIdUa_&\YWT$QN*2;sCKT Z`jdgiZjk+l9l[lqjyh co_XR FOV]bfhjkllmYl#jUfsb]sWPcINBd;50a,C(Q%##! y+c h!!"#$$4$4$m$$%%'*M.n2^7j4$d.M7A\JSZ_e:hAklmm6nmlei?fga\UOH Al;Y510$+;'$s" &> > !"&"#0#G# """""$k&>)-16;BIPVc\_c6cc_[ SLE=,6/*&%#"E"T";"{""^!! 0C 4 *!q$d'- 3(:B+I~PW]Haegijihh=g7eb^Y.SNYHCd=94'1(:DMV\DbpfYj8kmJmxnnomk]ie `ZTMGAb;!5/+'o$"y!f H  7 !!{!"}""""C!!!!"$?&)-1Z65z @"S$E(,H29?@HJO?V1[aYdh3isjjCicgfe!b^=Y[S LF|@!:%4&/)o!*R4f>HQTX_dnigkmnoKooimkhe _Z1SMGjA#;4/*'I$="!}!$ !!!"9"8"B"!!Y !"q$H&)<,l17>EL4RfV}Z[X[WRKt7-0*$| 1#-7mA/JS/[`fjcmmolop6o mjh:c^XSEM^GA;E5/+(&4$u#""z!!"2"""O":"!!!^!O![""$%'l*.4;BHO S5WmX#X}TtOwG@92-<(%("m!!6!!""!!!. `  3 S!!m#$(z,B28?QFQM?T@ZG`4dOh5jkkkj*hec_ZTME>5.-'v  wP&0?:(D`MV@\dhlCmoyp&ppVo~m6k>gc^XS+MH,A;50,c)'&e%$9#"q"H"z"\"!!!u![!?!]!s!"#$ %',1^8n?4EzKOTTTPKDO=Q6/*&2#!!5 !!!"!!! m |! !h"n#U%(/,18$>F;MScZ_dhklImm lmjShve.b\VNG~?@6l-%k\ U )2DJNRMRRNIBs;5;.)%#n!!l!Q!"+"b""b!!!V!"##%S&*-n28c?KF5LSUX^cgjplmnFmLl9igfcW_ XdQ?H@8 .& `J !*4>HQY`ei\lnMpCpponljtfb]YUP9JDz>962]/-+)($&%%2$$$z$#$X%-%&c',(()+6.28>D\IMEPPPLG@:3-'(v$5"T !\!!""!!""#$&(=*.28?@C]G(JNZQSUaTT@PLFAUP+ rgM~$.6>G:NV\adhjmmnmmmplkKhf b`\Y^U^QKMwIFCA@??>>/>8>#>?@AMABeCCoDDE*G%ILORUVX;WVSOJFA=2:7)5444444445 5n568B:=AEJPU.Y^2bfiTkl[lnnmkRhd@`wZeSJ*@6R,# 8 /m~N zP$,4@BE{IeMR'VZ^aeh'jjk jkyjilf'c^?YRK!A8-.%naIf q1o 6-"*2(:OC`KS6X}]X`ehkFkllmmlki1feb`]YW1TsRPOO%NNNfN NIOPlmJmmmIlkjbhgOecba@`a_t^^=]]]]^~__`abc\d!deeffgXghh;gfe,c^`^b[Y\WUUTUUoUVUUUU?U^UVWY[v]`bte)gZioiihgf9da^'YUQ6L_E=5O-y&1($ Tv9u0| I$,4S|7~/'!O@1 o9_K5Gn-ZC 'O&.6>9CHL@QW:[^`ca#bdff5ghyhijgjjjjjjjj%ihhg)f#dcba`_I^:]G])]J^^_`b&czde_efff(fQffg9gh~i0iiiikhhggghhDhYhh4gfDdma_\YTO;IFD`?l:&3,n%4 sy qa4_T~^{ mx#P+03:9?BGLRVFYy[\]_ac'd|fgXhfhhhhhhhQggf#dc|a`c^]#[WYOWVUUhV[W&XZ{\^`bce"ffghiHijklumAmvmyll\kkkkdjjEi1hf_db`]ZVdQYKjE@a;v5/D(!,aE< B$*)n, s9=? w L q'.49T=]A+EJNQSTV)WYMZ\^g_`a```___^,]?[Z^XW'USQOMKK.JKLNPSV.XZ\^_aqbcefgh{ijkekkkDjjj.ih?fdbi_][YV9R"LF@<7;1+$f/8+ Nz2A:Z.=\Tr05IJ PApH")/407;%>CFIKMHNFOlPRTVbWXXXyWW)VDUiTHS,QPNbLK_IGEDB>AA9BUChEGJMWPRTVXZ\^X_a=bdfVhi=j]jjiiShfdca_\_YWTQLGA<73w.9' R< $oRQ(B">a:2 %S*.1V3u6:B=@BCFDDFFGIJKLfLL"KzJEI%GFECSA@%>=:;98f665578#:0AD.FHKGMOQSUWzYj[]`#acdd(c b7`}^[XUS,P~N+JFZ@;Y6u2.*$+j n8 q1X%0_gH] D(8Bxuv B E $(F)+..1W4y789:5;?<_=l>O?5?@@@?>=?;9754;20/-(+))L)*+2-P/2K47:(C'q&$#! \bRo 8"%(+.{1*358::\<>@BCDD6CC_BzA?k=934/+'.# +x w|0vQRps8Gk KE-Nzm%r#[ E|3GSOE7 '.a l o1R"?$'l)+-/D02r4 5w7788877%42-)$ !Q>J Ums7+LDxn7)6yu9uUnaZH ! E 8G[V7V:bp7 g)'!bt D % ^9cv 2!#m$&(n*H,>-|.o.L.U-&+)&"-,0C q,J+oX^PPoEi}XE6NiUr rpu_3 *  U  K >w Zy)J^ eW@=f "$ $$\#"x 2|? V DEaVey VF"ty&_]zb]KIU|u#0 0oDP?RQtY~:4h@Edc ` AxO}: u%  z4%`9]HlPn|~adQabYUlrV5el)iDxh|9w'4G vxcPG)/Cp  <C{  D7Qwq25BU0nW|Q;X=Q^eftsj? 22 =`k@Bq%of0bB:5c 9`tJ/e{4LvCq5\jO|pN}!E/+$[m_ kS7;`.@Rgpqd`I(4."o09e]lt'tI&DeiLRdc(*>XBvh,OgQ bk>zI33Pm}z7LV\XSRfc5 2<."$Xn Gqz(G.T <\x }RAG]fhjkypP+"8\(&_*1tRn\&yC-1Obhe@VYN?8A]dD./'22>hR&8o|~ [P\|x]?!<d9) =YhS7WD>KTVU5KSSE61=JN6;='+5@O\rf&A?DjjxsYE0 0[_YCw 2CJ:% fTINWXM/ARUK:+.KS&5P; :P?,@WU>5pc'u "$ xrf[iA8jd! q]V[X@ 'AWia@*F`S':N>@HADJXW=#/mW)X*;G>:+lo}~i5f^Ho'&%+'fXF"'Fnza?@P`RI_5)L^VFN[cU)%Yf)[?SWCA6!xfestH1V\N>9\!=8,"fH- &LisbF5FTA'TM++HX[[XcbK4-Bjb9 9EilKC6 ykafqi/5I?-/F]*,S/ ;bkG 9QN$ 0LP9(Qqo]\bljTBE\xvW3;g ZhI@0|sa^h{j:;FG2 2w $"^6 4H<$)=G8!1GI:"!DqvihfWJEPhy{jOK[:[OK7 tp_[e{lE$>H9)P  Z9& 6(1-#&<D/)FWE4Bet]QQYVTW^digjl4COA.yomccmoK2-$,GQ6Ex )-^<, 8 '0-#!<O@$=ZZONZssZTZYZ]bdkv%DHD+xrknraH>B?@KG& $9Z #rE!) +6/(6DE9'".I^he^_lj\ZY`inhfr1GR=%wu|}weYWWJ<61&APe {og]G- !   $'%*.7=C@1'%8Xu|j^iyzphbZ[eng`dw&BQA+vsx{qqi`]UB1-1,.4ETp  _E7   .=4 $144>B;1(1JjvZRZclpj]V^hc^\k 6B7$|rt}|vwocXJ4(,:>?:BU~qN=)'*# #23e $J*LUp9@=%[OFzA)6 Q r +     _  N U ~ 3 rPr8%|/c@HG!po0  AC]Tp<gj c,2 ?  f \ m i - a   $ = O <    "  ) Q z   6 H U e  a 2 8/~NSj2jy)0 Up>"N[YM'f3<  de B c P  n 4      ) % ! ^ W I e * R q      ( C \ ? M  "V:4 HeH_y8Z)ymoM  a  V * (  n \ D 8 6 = @ > A 3  : C - T r  G { m  ] 6 > }5%y3sag,.)d-Jy ) { m # |     Q -   I   8 P ] Y % O 3 F \ v } w c I 3 $ ' = } 4 | 3 M  }o B0LIG7cz8tA ~eMMfRnf71N ,  n 6 F t - Y   2 j ~ e >   ? I O h P   + * $     & $ ? w  "    ! R ;  j@J~K,YR8mT{"p0[\] ? ( $ 1 I i s u E c < !       o/P-  (?Ubt% " H 3   5 W k ~ X   Ued:/Xx+lLe,n`uk S Fo # t . & G 9  l G . c-7={,+Q}GMlL) ,J{ % e K  X l^d!.x}rz^_FJQZ f 0 ^ N d J k c v = , 6 S z SDc(5A\5Q-c^SRSN2#+S{  lk$NtU+#  * E e t k  > ]  $ \ %-z(pb! { t Q Y ~ E 3  H 2 ? @  QfC4(ENVbfgUQBg&&1Qaa^I%4W}d+j:KsmUu\Nb  > ; y . a  A .v;  } 7 $ 6 # t ` z : o 3y_ P  k ^7|rC\!p34>80&/Nl88zF0XQ$$0   7 X  T o d G W  {  4 f 7 ~ e R K ] U J K J p 1 o = 5   8 .&b b|d8.p2J6F   (';dA_quy3gT(#e]- L |   Y T J I Y  & # & - d'4x |yz!0r@jMHm[- *Oaj{(q% `O{ f  ? 6   { I ] p a D : Z ` W G & " M ~ l %P wR0LA4jIo(gC_.dgV YRy9g:-7RWaua| h?hdq2U2fDz k   z g *keC&Y3DwVdcA+F=Kj1>8.P9xwL*L d8In{Fz!{v = E j 9pr-0,#7(5u*_>2CT-P0GRVK<2?!Tb  L sFX RM 9ROP?x}-4n>6| F?.KO2aejV^lO:`nmC {Cv6CmoG}<'J3>FF { f 0 9] , 6 b j R P1i?~nLnZg cSns@$S &# KY|JUsT]E{#   +  P Y J j yv2E0ArNO i ' oswuMf'D|;M?(US0TqbMp GzE2D:RI-|  M & v V/_\  +!D!""#R#0""!!H Ysq9m g " .- >R/!CB/\g0)-GGO.(V  8x]O\&*V\^ "$m&/')^*+,---.--,+*)(>&% #V! z} PraH* .F]B( L|x>OGo>fN05g.kf,j:4T7q q x }L/ !"#$%O%%&G&'(*+-0.0E134B556w677b7J76R5x4031/.$,_*)~('&&-%%&$$#" K(4* t  h^i- #gV"5'tyU_`*?v  _JC "%&(*s+,-.@./0O01@123|4L5E6^78:;Mp?Z?@u@A/AKAI@?>=R;:68w6513211O007//// .-e,*?(j&j$i" \\V K c>wBX@"|imy pCMk C mkrx~K!D% (Y+--}0'246^7789 9:;X;>?n@]ABD,EGHUIpJKkLL~M MXMgLKJIH6FDCA@>=<;;S::~:99o876`420.O,)'%$%"B )}}1Kzq E~i @'Nm?"+FYZf<` bj!%c)2-:0469AA8BQBC C^CDEF|FG0GPGH"HI3JKYLNOQ%RSTUVW*WXdeefbg ggggLffesdd/cc4bbUaaD`__ ^5][ZYqXVU*SRPMJHEBY?=;96R2/?+L'$% g8L 6 d;ZH12:-#( ,0b469;>AE=ILPrTUW[k^`b0cccccEcCcvcdd3dccKcPcdQeefffgEghIhiiYiijSjkl2lullOkkk#jjjjjqjNjii~i+hh g4f^eEd+baJ_^S\ZXVBSPMK`HFoCAR>;:6}2Q. *%!E7 H&#7 o@ G $@)-2p7J;[>ADjG'JMWPSWdZ^b@e8gi jjjjj iiiiiLhh4gggh2hiiyijjUjkkhkklljlmNmmmmm\mllllm8mkmzmkmmmbmUm.mllqkkrj{i>gfQdc$a(_/\ZX*USPNKIBFqB>L95N1,(C#Es S 7~tQ#6 /~,g)[&Q$#x$&)-27DA9=:9$79?:>1AFL2QdV Y]4`cNf hVjlnp@rstu"u(usuLtt%s]rr[r:rqqqppooooop1pNpbpyppqqbqqqrrrqqq2ppppqQrrsysttBt`tftgtwttuOuvQvv8vuLtfs(rpon^mlk|jhg(ecZ`\XzSOJF4AY<61-(^#k) aSONKHED)C2DaEHLPUZ7^`adgikmpnpHqsTtFuu(u:ttt sQrqqq5q$qqppppbpUppqnn%mmmn5nQnnop(pqUqrss`s=rrrrrsBsVs/srrr2qqApp/pp_pq{r>rsAsEsDsrrvrHr\r{rsWssssssssss.rrrrr\r`r71,L'I!Mnn_mmmmnno:opqrtujvaw!x!yyzQzlyyIx/wuOsuqonhljhfecbbabZc-dfBh%jl:nprstotuuruv>v^v utt^srqpoo&nnn_nmlkkigecb_ada.`aaMb'c*deg$hj#kmpnopq?qr|rsBssttt+sHqon7kiJexaF\WWSMHB<6c1+]& p#ooop(pgpqFqrrs)tu vvwwxyiy^yxw!ut rpn*lkidgneTcVa`"^]]];]_ `bdg-ilopr-rstOuFuvTv"uuHtt-srrqpp0onmlkigfZdFa^\tZYYXaX\X^YYZ\^_a bdghjkm nVXY[~]`c'e[gZhjl"mnopkpqHqqqpo}mlkMi$fcO_\X{SNI_C>83,qqr3rsstttttuQuvuuuuu|uHtsrp}nNki(fd5b)`M^]Z[Z1XWUTMRQfPPkQS UsWyZ=]ga dgjNl1nLptu1u@utu]uuuttsrqp0nPkhe[b=_}\ZXWsV&TSjQP^NMdKJVIIMJKNGPLSLVZ_FcAfilortvivwVvvv)utt$rqomj\fb_<[[WlS^NKIH F+DuCBFAAABHCEGIL$NR@ADzGeKNiR*V Z^aehkm;nopqqqq^ppJoonlkWigea^5ZjVRN oop.pqrsshsQs.ss7s(rqqWpAnljgdJ`6[WSPMLJXIuHGF{DBA%?l>82.+2)]''g'1'(I))*+,/C3c7m;76646666=5h433B2^1/../901o36<AHOV]dqkpux%zz%z]yyyyRxmwu+rn>ic\UME>T8w2.*n(%&'%%&+&i&&'J'E(b)-16(;AG MU [aeilPnplqrstitt`tLtssr!p~nljiehfe k9klmCmnbnon)mmmmmmulli}f'`[UOuHBz<73h0Q//4/000///K/-.-,+++,-4/316;C.J?QYs`hbndsvy=yzyyyyMxFwBu rnkBe}_W NF?19 3.*_'%%$$$$$$$y%&(,05;AHyOV]bmfimo pqsRt(ttttQtkts?qpnGlkcjgizh3klBlmymn1n mm"m8msmhmm9lpkhd^XRCKD=71.D+|+'*+=+K+W+`+j+~+++**^)))*r*,\.@27>EMU]$dkVqmtwx}y@y y2xx_w4vtrolRg{aZPRJBdK]UMFF?u83c-*'&%%$$^#####%Q'O+3/4:9.?ZEMFNVi^neNlpztjuvvovrvuttrqWonjfa_Y&QJC<60,)('a&%$$,####$%)<,1"5f;AHEOVy\o`e;hzkmopqrqqrs/sFrbq9onmmamlllmjn/nnnmmmn-n"mnljfHaHZAS*KDA={6p0+)'t''Z'-&&&l&H&&&&&(&7&<&/%&&'0('+\/"5|<CKSn[:bimrLsutttGt0ss+r+qfp"oKlhb\UOHiA;44/,**)(&%{$N##J#T"#V$+&)R-Z16/;BJtQX]beil4nyospypppqrrPrrq*onnJmmmOllm^n"nnynmnndnnnnl:id_8XPIMB#;4/+!)'(,''''B'&&&&&&&&&X%& &"'=(/+.`4 9AMHuOV]sd0imo_ppbppppppVp:ooem9j'd_NYS3M:G@:(40r.5,*('%P$*#Y#2""#C$&*!-16=ELS_Y^bgj{m no1oqoeoxp]qRqqponnMmmmhm%mmWnnnWmmnVnnnnmk^hAb\UN F{?f9M2.,*(''''''b'G'K'I'U'g't''q'&~& && &'*,1v6=/CJQ`W^bgQiUjjk=kzklQlmmmnsmjfaC[VQLxF?942/o-+7)&%##f"""#$')-/18?GtNT[_eAhklnnUnjnonpiq2qpdoLnnNmmmmUmmBmnon mmnwnnnmmif_YRTJC<6+/+(}'&''%'D'(''1'i'''((8(''A'':'c(5(*,0^4:>?FL QW3[_ac|ddef`g7hi0jklkjfb^YUQLXE?:Q63b0-+)(R&X$$#y#w#*#$%&*U.\4;CyJQX ]cgk lKmnnQn|o0oppponyn0mmmpmlmm3mnWmmmnnnnmlRh\d]uVO/GV?83-)&&?%&&D&&&&'6'W'~'(&(((N( ((()*,->/3.8$#####$%(/+18?GKNjUQ[mbfjl mmnTnoopoponnNnmmMmMmMlmmn)mmgnnonnmkbfaZSLD<5g/*,''$$$Z$% %Z%x%%&6&S&&'t'(s())*+-Z./025o9=AEmHLORU8WeY-[\^`_b5dFfhjkAkliugc`]ZVQxJDg? :o62C.[*t'%%@$$$$$%%'*0&6:=EYLSZyafk7lnno\oroppppnnnn mmUmmlllmXmm^mmnonnmjTd_AXPH@9q2,'P$##2###$$1$K$$% %T%&Z&'(s)+ ,/02_3r4"58v<?-BDGRJLO'QCSUUtWZ-\v^aa:50,)6&&I%&%%%&%'c).4<_CKRYag?lmop!ppp|pvppp@o:nncmmmll|lmCmmLm+nooMnnli[c"],UNF>6/c*%%#)!!" """###=##$=$%X& 'Z(*-E035789;>QAmCEGtI'K%M+NPRnTzVY~\._adh%jlmmlkiug=db_}['TMGAUU?AD4FHsIlJRK$L?MNPKQSvUXk[w^b:e`hklmxn83.*e'&&&&&&&&4'b)-2:vAJ;R.Yb=hnqEsst(srrqqqpOooo%ooQnmmnnZnn7o5ppTofoXlh`Z(R~JBn:F2+Q&;"  : i !Q!!!""N"##%(&)+/g3T7;?=BJDdFvHCJLUMNNrNO%OPQRTVCX[_ibeiklmGnmljiygeb^XyQJDh>8N2-%)z&%%%&&5&%&9%'(X,19@I!QDYGahor7ttuftsrrMrq`pppp ppWo nnooCo o-ppq p'plh `sYQIA9>1*%!" FF  j !![!!"#$D%'*.'279<@DHJQLN:PQ%QQQQ*QQQRSU`VYL\ __behjlHlmmul|j}ig e]a]WyPICL=061`+(%?$$o% %_%%%%&'+017?4GPXSa)hro>ruuvqutsCrrNqq(qqApqqipoopp4pppqqppmh`ZRCJA9?1)$ =:  ] !"R#$]&B(,0t5|:@E>IXM5ORASUQUVkVUTTUUCVVXdY[^`cfei jlLlmm3kiJgNdb^ZHSM(F6?93.)T&#k#"#$$~$$$%&u).q5=@ENVo_Ofmquugv*utt^sr]rqlq$qAqqqrPpppppppqrrDqSq&mi aCZfRJDA9,1)$\ uG| 8 !"#&(-2;8=CINRUsXNY[Y[[[PZYYYYZZ\ ]R_%ac`eh j[km.m~n84#0m,j(%H" "7  ("'.w5>pFqNV^fko?opoo&nbnFnn7nYop+pqro+noo1ocouopOpqppn ib\ATLL%C;B3+&"I    z !"$',t18_>E&KR6.)#!  !    8 !"M$s'+^/5::0?F)LRW\C_bdgj3l mmnopcq1qrPrrrsRsllWllBl!lmnXo+pff*fefgh=i j[kllnmWkfaZ RnIA92$,%& "   4 / !"$(_,0f4Z9>%CINSW4Z]beiRkmnpqrstgttu"uSttsqrzokke|^{V}O2HB PEMGUs\d h\klllkllpllhl:lmnnocccdefgi jxknkm>lkgc/\TLjD<4}.W'# # < 5    F !#z&x)-1579>D INN&R1UY^1bg/jcm)npUqsktuquvv,vTuu7sVqmlhaZxRKWD>h82.+n*E)))((N'%#" .wY!' /-7?ZFNVA]hdMhAkakl"kklllll^lmmnUnahaWabdHe=fchijk5lll\hd^.WJOF>70)%4!l z t _ 6   &!!"_$'*-1T49>CHMEQBUxZw_ei+lo q rwtvvvw_wAw4vHuspJket]V=NbG@:.4/n,B))R)#))v(('&$6"!"(^08{@GO*WF^;dh8k$kkkUkl%llllqlmmnn]^T_a`bdHegij9jl=llj:f`_YQIA:%3[,)'%"!Z q i '      !#&#(+v.W1;59|>xC3GKPIUy[0`ejfmjp$qtWuww4wwvu_t)pm!f`XQIBU<-50,A*(x(((((e('8%$?"!i F} H$*2:BmIPX_evhk!klk}kklElllfl>lmPmUmLmYZ\^a=cWe*g/hijkl[m9kqhb\vTLD=6.|(#" ! y /    u!0"$'])+. 149=]AEJPVC\vbgKknqsuAvuvvvLutr;n.ib[SL$D=71-)&''''(#($''&%$c#! ^n A!&,5)llpkfQalZYSGK~C<5.(%x#"!!y , {!"a#%')q*,,-0V36:>C^IVOfU[o`eimoqrPs!rkqnkf9`YQpIA;#4_/)&$a$e$K$$$$$$~$ #Y"Y!l z9!$*1)9_@HKOVV]bgyiZjjjjvklll7kSjjjjihgH&LOPUY^{befhNi7ijtllCkgc]FVOOH@9m3,(%r$#2"!!* & !("Y#%m'%()*+-n/C2 48=>BHGNETY_0chzknnoppo[lh[b7[THLiD=6/+4&$r##I#5#U#:#"""v"!j ."k%,L36;^BJ3Q{W^cgiGj~j7iikkkihhgfe][9?F8LRX]acfKghiAkkldjVgc^GWQIB;5%0+m(&W$#f"c!S N H * !"$8%_&?&'((()+/ 27=;@F_L\RX}^5bfi^kkhjfb6ZSKQC;V3.-(m%8""V6/*^%i#6!!!!!!{! k386d!#@',4};CJQXv]cYfiLiiiQi7iihfb_\4XU#Q3MfI)L09@HPW&\`cfghj|khlhkjyg6d4_EYSLlE?'9o3/f+O(%$""L!R v J  : W !x"H####$$$$%S'6)-5049%>E]LSXX^@aEdid7c_CZ/RcJB:R36,Q'#"{!h!!!!!!X aJ= [!t#&Y+Z1M9@xGOUc[`ze5gijiihhKhf4cN^ZyUQ]LHC?1 (1:{BKS+Y]bergi1jk}llligEc ^sXAQKXD>83.+%'%i##! W  w !">""""""""$1%(+N/27=DKRX [_ _ ^ZUNF>6/)z%"!! !h!!!! 9M1!`"%)E/5=ELS Y^bfhjjQihh:g[fqc|_ZTO3IDO>94!*3""+"6##%'*-27G>DKoQUY[YYUQuJKC*;k3-g'$"=! !A!w!!!D ~" 5!G#%).4;C6JQW]bAehikjkiggefc\_ZASMG@:4/*gP#,60?HQ1W^!bgiklnVnogn5lifb&\VQK$EC?{9s4(/+r(& $2#0!! !!`!!"&"!!!a!J!@!"B#t$&(,1M7>E[KPBT1TTQ|MbFt?}70}*%#!v!* ! ![!!r! S' !S"%(-3%:KAIPCV|\abeh>jkVkjibgMfcq`.ZTM~FA>70*%F<&S/9@BKS Zh_ePhkm(nopyonlbjf a~[VnPKF @$:40,*6(&$#""["5"j"}""""""I" """#$#%&*w.5;B HLPQQN=JXC<5.)_$#!8! !F!t!!~!K!% v 3  m !"S$/&A*#.3: A?H_ONV*[aweEhjlxllXjhfMd%`<[TN2FX>J6<.g'!2>) )02<(ENV\cgkmopgqqXpnmie`[VQLFA;16Y1.+*-( &\$#""""""""""""#R##$%(,S2\8?/EIM;MMJG2@:e3,($"! !G!t!!!b!$ x !"#% '*m/24%:AAHPO!Uq[afikmnEmmjhebw]3WH+PX&_dilrnoqRqqhonl id`4[WRRMH>B=85 1/-`+~)k'&&%&?&6&$&&&+&I&P&&'l'((*.C39?EILLL0I9E?93,(A$# !!!!""5"G")!!!"`#d$& ')- 062;B[HO0UgZ`e.iqqrq p]nll8hd`\XTOJ&D?;7531/-g+**]*****v***+)+}++, ,A.F15:@XE~HJJJsGD7>82)+'$"!!!!"""<"A"E")"#$w%')+.27"=CJIPU[{`jeil8moQopoumkhe`ZSK#B9\0T&-$ 0  x]&/9C1KTH[!bfjl~npqppoLmkRheda]Z{V:QxLTGCC?R<:826W43:2@1122:21112&2x2222347;?gCH7JLKKHEi@:A4(.9*&%d$)$2$5$$$$$%"&'(*,.149>DJPVG[$`RdhkUmn|oonNki`e^a[}TKCX:O1L(|F jLe ;&'1t:DLTJ\9bfilnpdpq3pLomki fBb`"\XTO1JFC@><;:A9999>9t9{9Z9(99.9f999Y9w9;<@5CGK?MKNN MlJGNB6<7:1-*)j(D(N(L((((()^*|+-/U14-7;a@nELQWP\G`eBhl moeopjo/mmifbN]VAN DL;22&( ko 7N i(1:CJS8Y`dhjmdnooonjmkivfd9ad^|ZVR;NsKsHNF CBAArAA(A:AkAAAgA+AA0A?ACA A A1BhDFIMP1QS,R[QNKGB?=E8c410///////00y1}24[68;C?BGMYRX"\`dmhfkm;noVoXo6ljDebN\WNE;2*!3 AZ5} { /(419_AiIQX^FcfSjlnoWonnmljhkec`]YVSS8PMKpJ"HHHHHHII"IHHHHHH{HHIJM\ORU$VgWWVrURPKGCJ>;876666666757l8A9:;FNUO[2_ecg9jlnmymHmmmul[jh~fdb_]ZZWUSNQPuPPPwPPtP_PTPcP~PPP{PZP+P8P*PR,TCVqXZ[m\[(Z>WUiQN!J>>>>??(?H?A?@BDGJNNRuW[_NbeWh}jl#l`llYlkTi d`}[VO4G`=4^+G"9 VA %0,4;CKRXN]sabfi+klrmm#mmmHkji"geca_][ZKXXBX XZXtXsXGXXX7XvXXXXXXYnZh[]~^`Q`a6`E_?]ZWT^PMKHG}F}FqFkFFGFFFGoHJLORsUY]a5d4g+iCklelkkjj!gyc^Z(TONVF=4+#[M g? |u8W#Z)08C@7H/NTY6^fbfhj@jkl[ll}kjihgfe"cbma]`4__&_6_A_@_^^n^p^__^____``abcmd[ddd ca6_F\YW T5QONMMN NNNN`N3NNP#R0TV|Y[^adfinjkkojihSfd|`s\VwQ\JD;3+F#+ %D.ow]. j{&,4=DEQLUQV[Q`dghijklxllll kk;jihhOggZgfffUfeeVe/eFef fdffffg8ghhWhhhgg*eda_]VZYW1VDUUV VmVVuV$VUVWY[5]^a?cfhjrll#kjIhfe*a^7XT/NPHZA 9<0)."^ B DnB V ]oc#)1:CBHCMQW\a(ceafgthijk-k1kokkkQjjjjjjdiii)hh4ggqgygggggg_g1g9gSggggggAfed}c a\_^b]\w\\e\]]<]*\\\]n^8_k`pabd.egijk/jhf}db^Z>UnOJD=5. &_ qR[fMiTr B&.x6>DIONSY6]h`b?cdf3#+X3G:94 ,$2hI R |&o 'm*?t }#m*05[9Z=AFKMOPYQSiU&VXY[B[\\\1[[XZZ^YNXVU3SRQvP NPL`JIHqGH~IFK LOtR"TWY\]_`abJbcdfg8gh5hbhiNii1hgWecap^\MYWTPKD>9530 )! i  L5.^*#OZ[O p%+_03T7:?VC EGfHIKL{NOQ7R]S|SSRRQP(NMiKJXI GFEjCA@g>>^=>{?[A_CSFI L*OQSV X)Y[[\]_avcEdefgggfecc `][LXsUROK E?:]5R0+%a- /|=bLM,=%Yq!Y1v+{ 0 !_&*z-X/376:K<>Q??@AC$DEG"GHGhFEnD9BA?_=<^;;:(87h543R22s3$457:=j@oC%EGJLfN?OQRYSUXkZ\^_``|`)^\Z(WTR O6L[HuD'>94y0`,^'"Cv 7 z>W g(R&1`lDT4 .*9ux*P M $O&H(+-024_5f5678t9d:;c1@CE FHoJMORTVWCWWhVU>SQ6NLI_EA<72.*'G"yR il"jU?LCWp:qP"[s`X11 R ^ !"$'D)Q*+n,4,-%-.B./0002/.,W*( &$$i"!a.l"W%'*-/2U579;=?BdEGIJK5KKJIH\FfDA>:Z50o+(D%["Y P 24fiH%>f(nd1+{gdX_bt :W8!,!"x"##J#|#$ $#"!w'xG F#o"%/'*-D/1~3_5U79<=>?O?@@.?W>w;uktuwoi sgT VC{qt?<;/J4H $ Y-Q)|!n#%')*,^./012345i55 4:1/#+<' "]a G,BoI/ID{m:+6r0xN6? ]d 5 y } Y , l R d5sqr SW  ?,{ z"m$&|(<)m*+=+*w)!&a#j,Wq _5?~mm cfZTi@h}VC3SsM'm.N d  D p 5 tWA|\X;~0 6 T x>=dP e!!}!f lv| @Wqb:f"mL1|~'VUy`YEIXxj4;g|`ka@s3^SvDeF?T\`R_~/7;|~  Y y~*2i > 2 y {')V5/pS ,{Vetz]bR_\WSedG3"s;u#[Zp%Ur9Z~VPak[FPjs!J  J  |  {  r vI]n*'<Y&6{g{{O9X<P]fgpj`762Mv~MP"v&;yREAoIWF#3XzfH ox6uTcGCDR#M,-)b{r1hQ58^.AUmvtb]F,:8(5}A=mgu~.n? -W`JJjj(Ouv+mAjR3kuN-xG22Nkyu;Q\c^TNdc0/:1#8f~2It-O9O3[  W.-Ngx}{{K nx,FiM1/(0z+`vh9{E.4RcfbE\[SC6:Yd@'(3GACmf|;fji{Y:Bmu`= Czw>HcnYD,![JERXXW4HOTJ6+9IK1>B(#AFHUfw47CFk]kngV+ DTnYM?OTB2%&#k]QU\]T'9RYL5',GQ,A]B.KZH6KbaE3{l)v ! z}_PkL9zfax"$++% +,"zeY^]H%@VdY;)C]U/ BSB"%FPMPTc_:4vU S.61;6!|sysxB'h}hMHl42-  %6.eWH%)Bep]@>J]SI_= *QkdRZc`J 'X]" P7NN:DB)tecn}d+'PW@+0_}&D>/.#dD+(IdseE0DWC%RU9,Obde_`ZD52Gl_6.u8deDFB)|g_i~tI5KD/%5S|03 &R-":cnG!@WR) .UaD,Wzyc[]in]MOc{z^66XP_DE=%m_jsH =OVC (c ,/_7 4K<"-@G;%9WT>&*P}udeh[NISfuylSLS0TLSE+ gXdoH- !=D:/! C[:& 4  (.,%$<H26O[MBRspZQQVSPQV\cgmi.AWN9xwxdZenE/02=MI+ ;i   +.a>,  6 "02&">SD*,D\_YYd{s_Y][[^ccguFPK.}|mgnfI?IORTF$ (9Uv "nA  '  +=6-:IJ?3/5H_mlccnqgdaepvnhq.JT>'yzq`_c]QE8&$4OZg} wnbG(    %)-/9AEA92+9[}qbixysoi]Ydpjcfv'GS@,~|||{ma`]QB85.07IVo  gL=& "$ *;1#.47=?=8-4Pu_SY`jqlZMTba^_m&>F6%|}|ym_VN?549:92:PywS?+)+" !99h FEI}{O/N9QX&L~E(7 P h #  "     V  V S  4 lKo2}2iIG }K$ru* GKdRn5Sjnl?v2"7L k ` n g * b   # = M 8    ! # 5 T *  = K S c  _ - 0*zSVp1ku$|/ YtD(S_YI!`()`u T p  Z # l 4     ' "  | K C @ k  < ^ x '  $     6 V 7 G  *]B6!JiM_y <Q!t`P_< c # a 5 2 '  q \ B 6 6 A F D D 1  z +  M  > b C u   X @ C : %x4{jg24"0`*|uKt - v - y  )   | K # & W  C b s [ $ X 6 B Z y y ` > $  !  < w  9 | 5 L m B1OMI6^v8yHbJL|WDFB/  p C ]  6 ^    * h ` :  * D T ^ o  R   - . )       < o        " Z 6 \7Iv|J)ZU>oOvf' Z    5 [  S  e ? % !     f#tM77H[n+~ F 0   / N e ~ U Wgd;*Lw-lNi,hXla| Y  W ~ g  F H 1 r I / ]&)-l*=YxTTk{=  Bx . o H  ] rgf+ysza\=?BJ X ) +   & Z D J c a MQ &9>Z4Gw\hdbcZ<-9a~'rr)Os{F  ) N t { m  6 V | % \")/s%u] m c U N t T  : 9 S P < .q|2<M\rxqUQ9V$[utqY2"BYrh1\)<j`MkTNh   3 . r ( x Z  D +n1 } : , A ( l ~ T h - j +ze"Y ) |"`'qwNS_"H_WOA15Mkx{8;u?,YS) &1   / P z  W t f H W   / ` 5 % g X W h X D B B d ! _ 1 /  ! 5 sLT (q70n1O:5  %*(=b?Vgjsym~?tb3&gd/ I & ) \ L A G \  ,  ! ! Q. bjl@MJ |LwKGm}a: #:CGJYwif[}c  ? 8    J S a V @ > _ l a S 6 3 X i ;lG$< FCo_+M~Xu<TlUIcyQ gpN0)!,3OrZm^ '^b|&)W+`={ l   ~ k"` ^w-v0;`;!J6CBczQw#f[SOr Q4HY*H{My{ x&H D a 4vw(9881<"*g_A?OT6D>Ry#LXZxr  {t%ciOc3t?;+AaNO=mb2mI4N|VI.IF?ou,~dbkQ!Kju{U)k` T%4cz]U<Nx4Z! N 9 G  W l A8K3]MSQxf[V!{wVmm JgyH*Y06P<kBP  @3p!|'  M R 4 k " $ W <Io= } ! rR N . g c85F6 %7h1T u0yE? P\%NuiQvQYn!,0AJ1kj>9 j w < L~{*.z !"E"! v/yG3[6|;~ L 3 - l`8Q$32_ )*D+"GK?jn| 11O :qH0g%.|  U?Y$z n "%'(*f+,-_--,+*)(\'%$l#! BUNq( dePFoyGVzWy]6+rtCG'ep  :0m< p8 !"#$x$%f%& &'%(7)u+M-B/M1224D5Z67776g542109.-j+*)(('O&%%V$$G## "6!\ 1w[Dh  FJ7ki4;E2 po$1{\N : mmt G"$<%I&'7()++,-,-./0e01i12l234X57`98:@@AQ@@R?><;:W87~543221O0//h/....I--, *h(&%&#r! WCM* F9IWb>+tqep4"yH h U $/Ghx"!I$(+*-2.0 1:2425X6%6789:;<A?AOCYE>FHJKL\M LLLKJHGFqE CA@?>=<;;:_99h9+988886531/{-C+ (&$" ` ` [/(i!Rsx* ?Nq!g#& )P-036S8:2;=k>?@AABCDEFnFFFFFGoHIKGMqOzQ^S4TV;W WWWJV3U[T^SdR6PON*MLKOJiItHrGFEEDDCCCCBB&@><:7#4A1/D-I+)X&#[ '=l)h 9N Ei} / n  =4"$'])+.$1#48<{?ADFHIKKL&LM%NOP1Q -*Q1i +F  Ubq"&*C-0q25 7A:=aA(DHK MPRTUVBVnVWW}X:YYZZZZZ[[}\U]+^q_ajbd8ehf$fg%gmg3ff,eeXdd*cUbaaZa```__1^^s]]Y\\[rZYXWVUfSQNLAI+EB@=;~9 6s3(/u+(w%L!5   p<= X7#J(5,15_9 ;>7@zCF:IMFPTWcZ?]O_V`aaaaaaab:bc-cqcVc bbcMcde>f9gThijkl lvlllLkkvk:kjj3iihh^hGhEh&gggngTg>gfffCeeCdcbaj`>^\Z1WTQNxKzHF1CAg>v:63 /8+'h"o 8!K@ &2#P k#v'-:2j7jk):99;4=DAHEgJP#UVZ(]`c2ehikmXo(q+rstTttuttrqppHooo nn'mmpmPmxmmnnOnnonopqpqUqrrrqqqzqHqppppqqqr8rBrCrtrrsHstYtuvwwwpw0v0usr?pon8ml!kihgf#ca^DZTPKE@d:50+'+" n gwNKHEDDEGK NSxXV\ad+ghklmo(prsqt&ttttvt;srqpoo-nnbn*mmmMmWmn noo^ooop&p\ppq6qqrrqqqqqq*ppqCqr2rrrrs sGsdsstu uvYvw-wvvAuWt/sArfqopooOnnmmkjhf b^AYTP2KE@/:51U,'{"S^ FJXUSAPOODPRTX\8`Rd%gjbln|pqr%st8uuuuuttskrqpooDnn4nnmmmmnwo(op-pppppprpcppqVqqqqqqqqaqppqQqrBrrrrs sasst:tuvv'vw[wwwvw vuu.tssrrFqqqqponljg"c_ ZUPK\E@;61Z+&!n r`@^ [YY+XZZ\_jbehkmoq%rXs(t'tuuvuu%tnsrqponmm%lAkkkkkklnmGnCoop7prpppjp:ppMpq!qgqjqXq4qdeS8[2,'|"pqppxppqq>qiqqr rsJt*tutuvwSwwwIv4uNsr9p1n4lCjhfdb _f\[.YxXWWXPZ [^akdfhk?lnnoMpq+r8s(sssss|sr_qpp7o|nmlQjhgZed_ba&_.]\j\%[\u\]q^ _`ac+dfhcjkln ocpeqLqrrsrsrlqKo}mlAjhneXao^ZPVR(MGBA;6b1+rrrs*sstt&t+tt3tytu[uuv vvwvxutms3qYo?ljhUfFd'a_p\ZWVTPSJR#RARTVY\_beNh9jZklmo paqrs@sssssSrqqp:o'nlkj]gecvaU_V]b[pY*WVUU6TTTUU}VWY[]_adPfhjElm|noqqqrrr_qponRm{kifSc`]YUP JE@?:4rrrsstdttttttuu1uuuuXu8tsrgpnlaifdFa_{]/ZXsUSQPNVMDLL3LNPSVY]+`ocfhjlknoqlrstttMt"ssCrqipfnmokhne8b>_Y\lYWBURPNNM_M3LLLMO)Q@SCUWZC]`be4gikmo'ppq'qqqqBpto[nmkiigEdb_[VR7M5HwCv=qrXsstXtu$u/ttttttt:tsssjrpoljgc`][ XtV(SQO_M;K=IGFEEFzHuJyMPuTW[u_vcfChkmptrPttuuuuVutesr9pnlifb^[9WTPN KHG%FUEE[DEEEGIDK}N*PSVVyY]Q`cfiBk_mwnppqvqrFr0qqppnm kei{ge[b-]YU!PLaGp8pqrs|t:totgssstsss2rrbr qpoomjgzdA`\YV>SQOMK'I FDC1A`@V?Z?@+BCFIMlQ@UZL^cfjymqsuvwwww0vvuJsr;omjf'aq\XgSOK[GDA?E>h===j==>v?wACFIL$OvS^WJ[M_Nbfbi$kmopqrrrrrrpqpon*lykhf bX^ZWiSNnopqrssss<:98893;EADHQLQeV4[ _cgtjm?opqrbs)sttssbrqpo841(/.s...//0v2%369)<@EJP:UZ`PdhknpqrLs0stttt!srqpo*m"jhuecoa?^[lmn1opqqqqppppAonnmQkhea]6XMSZNIFB\@ ><;^986J43l2 1///1m257 :b>CIPOV\bhns6wkyh{{,{bzzzMyxwMtr(migc\rTMF@3:40+)(0(T(H(()*+H,r.149>]CIkOlU[af2ilnpqrstu~uttssArpnlj[hFfgdc`kwlcmnoppp^ooooo+nn!ml#jfbb]XSMHnC,?,;}977(543?2<1e0//?.e.4.Y/X0+1258=C1IPNW ]dTjp0uwyz'zzTz_zyxwuFrnjd]V NF?|93.*L'%%%& &7&&'w( )+X.27E+LT#[biorvTwxxy(xxOwusqnlg)aZ5R|JqB<850+(&M%$$$$f$9$H$4$%C'j*-.38|>DKrRuY_4d,gkSmpPqsrtBttSt sssarVpznlk{jiih'kollmgmmmllZlhlll^llYkthEd_YRR\KtDs=f7U1/-^*Q)(((t(Z(f(()%)g))))))i)s)*,&/3{9@!GOWy_Oelptvxx xOwwYv,trqEnlhc\UWM^E>72r,)w&%%$$Q######%G'i+q/F4b9h?FNMU[x`dhknperFsssJsrsNs8rhpnmrl=kjjxillGlmYmmm6ll@lblllymlnkg9c1]VOH}A|:O4n.+~)(((+((((6(C(Q(r(((q((|(.(()*-N07 =aE!LT\qcNjnrtv>v7vauutsr3po!mj)e_WXQIC;5/+('&&<%d$$:$#$'#$&)_,1 5i;!AOHPKW\a5ei lvnpqiqqqqr'r_qpcnml|kkekjlllmPmmflllvlmmlmljfDa[#TjLE>72,*(>(G'''''''''''''''&&'(p+w/5;9BJ.QY`rgxleprt-tt>sssrqqonlhRb1[TN GK@Q93 .*)(c'&%$$###!#r$F&)b-Z06G<CpK2RqX]bfRjRloopXp.oopqQqonmill/kkkQmllmGmmBllmmwmmmnlj3e_YQJ~C]<50,*((((((S(*( (((((( '''^'i'q(),/5;gBcI7P:WC]dsiOmo^ppppq!q1pprpBooOm idd^XRKE?`83G/%-J+p*S('M%$##"##_%&*.-17D>F$MT]Y_Fch]kamno6onnopkpwonymNllAkkkmnllm"mgmllm]mn-nn1nbldidc^VOG@:3/ *)()))(((((((((((]('(0(w)*-05;"AGN\TZaejkmlm0mVmn?n\nKnn|nm>je`ZUPoJD>8@31:.-E+I)a'P%$|## ""#z$x&(-/2(9d@HOU[`feilmwnLnJnDngo0opo~nmollllkmolllm8llxlmn nJnnKmk9ga[TNLE =71d-9)((&(~((((s((((()")R)h)=)E)y*W+5,.j1"48bivlmlngn{nno~pp[oommClltlWlgmYll\lm ll=lmn7nXnn7mSie_6XQLIA:4.+ (D''Z''( (((:(q(m(p(()Z))*K*,_-0 247[;?DI>N;RVxZ^a bcdd~ef'gXh/hijlGl/kmh?d_[X&TOIC+=953"/,)'%$#### $Q$'+29AIvPsWL]tdji4lmnnooVopQppdonxmmYlllml=l!l}llhl(lmn_nPnml-gc.\_UMF>7M1+(&&~&/&&&&'';'e'L'N'(()*A+,/%14R69fgi!j`kl?lifbq^[LXRTN~GA=85k1{-*(!&%<$x$[#$$$% '}*18W@bGO3VS\dcimnoop>puppqWqpIo+nimm?m mWlkkl+ll'llnnn8nmBke`YrRDJkB;Q3.h)&$%0%'%%%%%&&@&&&1&a''(*X,.148_;i>GAD7GKORTVvXZ[_\\]^t_adegikllmk@hekb%^\;XSM'FA<08-3/+)&&%e%`%%$%V%' *0e6>F~NUm\sd_jnTopq qqqqqqpoonmmmlkkl@llVlQm_nnnonljd2^xWOG?819+&%#$$%$$$$$$%%%C%p&6&(*.105 9= @CFJ)MQETeVIWXwYZ[[[[\]_iadXfhjl]mmmlvjgda(^[VP{JC>w950,)'M&%%%%%%%x'7)/6=EMTT\Kd|joCprvrrrrr/rHrqdpkooRnnnlll:lmllno:onoli)b\yTM?E4=C6.)%#"w"#;#$$$4$;$A$[$p$%%&)L,0428=BNF9IMNPTZVYhZZZZ[3[[[n[S[\^a,d]giHkmnUntnmvkiRfca]Y]SwM2F@;6K1-6*"'&& &.&&(&&%%'4).4ifca]RYS"LF|@N:5x1,j)V&%%4%i%s%%%%&(-3;cC!K~S[wd*jps u tuOtssrrr qmqpppqnmn8nwnnnopqUppymia[$StK~C4:3+&"! !!$!z!!""X"w"#,#$j%'h*.4R9@ F-KPsT{X\A_(`eaa`_X^^]v] \\\^4`cfhjl0mmnmlbiyfcb`w\rWQKE6>9C3/+ (%$$O$$%@%]%%[&(0,2+:AJURZcjpsuuv7utssrraqqqqqrSoo o8oPo|oMoyp[q'qppmiob,[SKC[;3+&"^!"   < G j !!" "#~%&*/5';DAHMSWR[_abccwba`0_^^U]]]_!`cf&hHjRkmmnZm{khve>aT]YTN_GA;850,(%##/"#7#$%$d$$%'+e08Z@ HPYai$oruvuvuYtasTrrr]rr$r|rrslpppooooptqqsppmibw[T$LC;3+&F! S  $] x!r" #%*.5<BIPOTYc^72-*&#!!; !""#8##$%).6|>FNW1` gin\qtturtsrrrrWrBrs"ststpp8p)oooCo=opApoomDi~b\TLD,;4",9&!8H+iZB+<N! "$(-4; AH`N=TX^aUdef'feddrcc btbb2bFc6d}feh*ikln.nHnm jfbY]VXSMGY@:X4^/+'$!T y!9!""G#e$V(,4r;D}LT]dl.p(s,sYss/rSqqqqqr%rst)tpp@pooCnnnoRoo+o$liMc\U$M*D<54,&!|vJ!!#z',3~:#@GMSX^adf ghgggzg+ffFeeeefjgijkmmnnnlliud_ZxUZOICD<61-L)%&" vj  ""&*2G9BeJtR{[byinHqxqr/qppp*pp|pq^rms/ttooQo nnFmmmn3nnYn~l^i\cp]UMEz=5`-'"SpgWo.!="&+o186Q.s(s"VI1P!t!"&L*06=1CJ5PaU[`gdmfi!jTkklkl0l^lSl5l lPlmno#o{oXonmie[_YOS.MF@:5V1 -*i'%S"!(p7 H#]'/s7 ?wG2NW^fdknnnonommFN%VZ]ej7mmnBmlllmllmopq/rIkjjjjj@jAjk_llum]ljjf`YQwI-A901E*$& {fSB^+ ")%?(-2/7>DJPV[~`cjgiklmmnfnoo3oFo_oopMppp/omkfb`Y,R[KEO?w9j4/,*)t'&j$#=! O "k'!.6_>FMU]diVllmhllQl lQllql~m4n}o~pqiiihhhhi!jjkhllk faZS.JB; 3:,%!l~9l^oO .!$'+/4:t@FLRzW>[_cgEjFkmAmno"opQpppqqJqDq\pomic]UUNH%A<#6Q1-+* )s(W'%$O"! zq:@!"f'_/76>FhMU]duhllmll^l lllllmjnotpdqeh-gfgNgSgug gghijGkkwkgc;\ULD<5!.v'%"ox u!'#&]*-26&82.+T*)((V'[&\%#"Z >wW"''`/l7,?@FMU]d"hTkklYkkl-lm:mm!mnopXqAf e~eef@effghijjkh&d]WLO-G?)70)$_ bc~E, #/%(+/38>/CIXNkS-W]"bfjXm6noprst1ttxttt/sqoTjad]^UN*G@:V4/k,)e((W(g''0&{%^$" D"(]08a@VGNV]dWh$k%kkkklQlmsmqmn9o%op9pccd deJe)e?fg`h@ijHjkhe_YQIA:3V+&X! V=|#]Z{] "$'* -U05.:?DJNT Y_LdiVm4oRq.r^tSuvav?vkv(vtt@qcmga.YC8[1-n)O'&'_'''N&&X%$x#! yd\!E&,)4}< CJQYo_e_h+jjjjkcl8lm.mMmn nnoo\^_acVdzeNfghijkljhc^WPBHW@92#,D&#!! S j!Y#$&(*,/27;l@JDIOV;\bgkoqtuvvvu_t]qok2e^VNG&@l94Y.K*<&&'%&&&&&O&%u$#p"E!: :3k7 "'.6h=E(LlScZ`f%hjjjjk|lolm m2mynnnnvnWY\^ace2fgiijkSlkjbeaqZTLpD=6[0L*R&$ #1!!O d    !#$&(M)+u-/366:>CIUOV+\6b fkMn{qsXttts1qnkf1`!X_PIA;5b0m*'% $$%v%%%%+%$##"!- L!$L)0c8@GANUw\b+fijjjjklyllpllm*mAllXl RlUnX\$_bdfghijvkllkgd^ WPIPB :4y.)&w% #\"r!!*  < M S !# ${&#')!*:+,/P158=BHO"Uy[`fRjYn[prrrq,ovkgaZRJC\<86`0}+'$x"#E#z#$#####R"!!% l}N  r"%+2:BYIPW^ucGgi8jjjijpkmlNl[7O1,4(C$,"b!m" "<"q"f",!!!!! M1 L!<$b(.5=E.LLSY`Ddghiijpj4jj(kkk=jWj1jih|geacDJO-TxYW^eadfghij8klmlknidg_YSXLKEo>72a-*'%$#!!p !!"#$&''(M()p*!, .<26;J@FLRYL^dVhkmnVljeaYR6IAc92-(P%! r ! H C<+& "/%*U1@8r@nGNV7\>behijsjjjjk4jdhhJgpf?dPb._]%&%&c&'''(*N-15:x@ ELRX^c@gikVih$c]V3NnE=6D/W*%#G!! ] m = RHN ""$(t-~4;CKQX^cfij3jjjijwjhfVdb`w]ZvWbTr4L;C J.PW]a{cfhhiklmmlkheaw\{V3P)IC*=7%2. +'%#"!!P !!'!"v#I$$v$$%%a%5%&)+0E4U9>E+LSY^cfhLELNShY^oacbR`[CUME=5.($!!) h R > D &N^z !#3&)N.5\"b eiUjkkkiihgd`[QVQ5KE?:5~_#k,5>GOWY\aegi@jkmmxmxlBkgi8fb^XXTNHBFWMT Z` eChZkkllk1iigqeG`[UOIiB7DKRWX'^KcVh/k0nooo*njlNjOgd ^Y&QeJA8/'6 .MT_n )t$,,6?I&QXu_+chkn op!p=pToosmkhe%a-]Y_TOBIjC=9C5,2x/-+J)()''(`((((((((i(c(()K*,/50;ACGJMMMJsGAc;Q4.)%#"!!!!!!!!"4"W#.$]&a(-*-!049?`EL1RLX]bfjm1oyopqo mjhc_cYR'IA9K/'+  a%.8oB@KvSZ`\f;imnbopepp`p^oanksheb ^wZUPJD?;N8M5t3k1/1-S,,X,--G-E-=-e------..138 ==BGJMMrMJFA;5D/2*&$""W!"!"""\"#$& '*,V/~26;+@FMSXl]bfjmopqpnlhes`ZxRKB"90'>X <gp '0019CK[S`Y`eikn o pp*pionmjgeeb\_|[WQLG,B?y<:8j65 4'34(4w444445585:5G5-56y8{:|>BoGKcMOOOLID>y8^2.E*>(!&+%%B%k%C%N%B%&(X)+-=/2b6 9>BGMSX]ub#eilnoq,polie`Z4SJJBN9g0(1S ^] sF'1:cCPKS/[afUiOlZmopqpmpnm=jhfc`]AXSyN{IFCqAP?2=IOITY^bfjmnpypqpnjfar[T\LB9n0' G Z (R09BbJ:7h563.222$112 34g6579:=A@FDVH9LQ@UZ_cflilQn;opUpopnOk\fEa[ULmCL90<'?G rKy^ U'09AIIQYf_ dg7kmsopp/oOnnmkyigecI`\?XURP]MLKXKKKVKtKKKKKKKLL=LgMMOcPRUX6Z[\\"[6XVRTNWJEBt?<::9{99;9c9:;=t>@SB DGLP4TX\`d gjqln-oo*p!onkTga\UMD!:?0u'0QA; > _!*"~ |'/N7Q?cGNOVh\g`e#hgkmmn_mmmmilkkihDfmd1as^\9YWUaSRaRQR\RyRRwRRS S7SYSuSSTUzVXY\^.``a`_][SX TQ!M}JGGDCB9AAAIAqABsC\DFGILOSSW@[&^adgnj`l>mmmmMml3ieb`ZTM$Dz:0'( L|(} ;%d-64k#)18@HOyULY^bfhiijklel4kjihgfeQdba``________``aXaboc cdefghiviiiNhzfdb`"]ZX{USQQ,PPPPWPPQ^RTV|XRZ\_b$d^f_hjJkllVkj"iqgea`]WQJB9r0L'8: +W+bc]6 t&[-A5%=EzLgQV[`6cfghijkl>l$l kk?jii(hsgg^gfftfgfnfXf0eeefg"gh8hi?ijrjkllbl`lbkkTj"hfeca_\[;YXXXX'WWXXZo[]_`bdjfOh iklmllAjigfb_YTNH@7.&6Q( kA?S ] coh#(*"1:AGLQ"Vv[_BacqdQeghni?iijiiiZihii*i!hhhhh|hgg>gJg~gggghh&hdhiiZijiivii9hgfedc]b`__7^^^j^"]^b_`Gakbcdefgijxkk?j hfe!b_ZVP=K3D=5^,$K % J7Z BcW +&k.6g=CH LQ}VZ^_a bc{dfsgph-hXhhhhiiijjZjDj$ihhg_fff#eddddccdd}deeaefgZghAhhvhihgff[feeee:ee*evf&fghBhi>ijNjjj7i0g?ec9`\X$RJMGjA:2*"; /@;8*=h| Z#F*2g9>BlFGKMP T{WXYgZv[]_E`vaaabHbc.cdeeeeNdwcba`_^]n\H[6ZZZZZZ[\]_Y`bd efgh0hwhSh>h$h1h6hggggh hhiFiHiLhhgfe>cpa_[\lXSNHC;=7/' [Y ?neaX+ZR@)$n r>&--38<#@93,e$P3 u` jn $)t#,!< uGm"(.]2$5t8y<@DAFFGGIKjM?NP6QRT6TU\UnUUUUT[SNQPONnLKUIHLG[FmFEF FbGItLNQdT;W'Z0\_qab?bc&cocd dccd.defff"fdcac^[YWURNIPCq=9I4/)K!\o % k jwv$"Z" R\_Pex "'+._1g4g8:<=Q>B?C@B C~E FHJmKLSL7L0K{JItH6FED]C$A@!>=]<;;n;;f;=[?*ADGJMQ6T)W/Y_p]ZWTROLHgCR=8o30+]%4Q 3 {J ;i6 ?(4 [s#V b0 X"%'),H/1~34[55679:j?A.ACA+@?=<#:98765232M150///o/0V136f9<-?BEHK-MOYP\QRSTV;WkXYZgZsZ\Y>XV SQ;NKI"EAl<;62<.`*&!* F])Jq6^s"U_CO5";/=a^6y = 1!#R%L'Q)D*+,O,-.0V235x656553[1/-,&*s('%$F#"""L"#a% &),/258<?pB/DYEGoIJLGMO5PaPQZQPONLKH|EB)>u940/, (%6!6a >K(r_N^8 Kf>rU )_qa!_/ .^ d !"w#-#$V%T&')*++}+)'%#! >Si<Fw!$&)-0X369:<>K@ACNDJEE-EcE+EDTCBE@>0;-62O-)%" )/ P2A6_&ig-+ieMIua($ njf+B2SV&QX:5a1pUds*IyYi"%)m,\.0y2Q35^678939::e::R98G63#/@*%"5% E"9IPu=k"6\B:9n_tmbDC$$Eh A S C08^FM Q j ) H t CD -"% &( )+*D+#,,-.e/m0#00Z/-+'#vA Z"oO&X74H7oc8&0|s4hJ6.u[RZ7  M  2t \@  u)2 "6#q$q%&&w%$"[z9 P 2Q.HQdg)cYwC`vvXE5VxV& ]8RK7veZ$bju' t#.)EA I30AYJ* ^-m$Np\H0f\zqb[IL\v =9cpS@PVc,)  2:nwi#A``;TaSL~ G*rRy h " -gY jT 3]qvsZ\xQ`^WSjlM#<'or(Nd+#&j w]q7d{aKxnaej{ia[<7RA| n h   UzPIZiS$C4u_rH6S>Sagfqnb996 Ggi; s#sP~NPfMs%JliT93@Pahl{t`aM Fj*ZN va*J0ky9kR47[0DXnvsa\F)2+!%iz3<ey4v=6eqmkz6AzFB*wFvNyAyfFQ:6Mhwt6LXa^TM^\1*2'(T|z7 W!%FiSQ@opWM[nu^Jexa-'OghKX8;I+_tlC#L54Maid>SUPC:<T[= !"*82;jx$;r"UO_lWRhlnp\C43+?mQz7W`K;'_KAKW^Z3HPUM<2<IN95:&27=Oe>Qb^ztxod^Q>#1rm[S6KUG:-+%p`PS_dX!0@V]S>04PZ47UA"<L</KfaBBn7ucag+vuu "+;@=5<;4~f[bcK&BZh]?,E`\7>UG% ?IJT]kd@%&P_0^(0+50}|{wY\zrXQy.21%.=5aVI$ &EgoY<:H`YLfA (Pnn`irqb@6Sv; Q1LL7>=&vot~|B#GO?03]75% *[?( ,KcpcD/G\E$TS2(QhmnhljZPPcpH)/m.afEE=#plt}{j4 6J=($;Wxw$,'+M+ %;frJ%CVL ,NT5 +Y{yc^eu{jWUfg>8PJ`GF9tjrg1/HW]H(lzr$*>+^8  6N=!!0@C37OK7$,U~sy}qbY`tx]QP)QLSD+ ~ldnz_I(2LOA5&E{ %  Z:( 3 %*,)!"7C24LYNGZ}upquoiimpsrsj)>TN=wshgrqRDIHM]Y7 8m!&[8* 8"26(!9MA)%<U[Z_ltoqmmptrsz}BLK2~wprx~`PSaeacU0+:V{  !tD -  /@8+5AD;+"'<Vimhfn|qkglxxot+CN<' ~{|peeqzs`SF1-9R\j xiP3  # $+016<CB6*!0Syuclvhdo|wnlu&@N?+x}wlmjlsqdQF@77:IVodNC*"  %6.%134?E@6(/KsdYdsn^dqqmjq|':E7%}ywtvtni_QEBCA>39LvnI7(&$  @<qN IDv|bMf;B]!(J~G"2 I t 0    S   b h > iJq5$} :h?O ~H%tt2  HQi [x9P[_PRp:%T P q g k ] # d !  7 Q Z ?   #   D '  E S Z f  Z + 51KUk6gx'3 WyM0XfbO#b %t p u  Y ! d -    ( 8 7 -  d Z J f  8 _ v *  + -     3 S 6 J $ #V63#KgJ]|JQ!uG]f/aA   6 y E 6 '  i L . % & 4 = ? B 4 % ?  7  8 Z t W   Y = A |0 "z2|ih4>-*7d0i[ - 4 y , r t  +  [ 0  I  ? O W x b / W = Q i y ^ 9   "  8 x - t + E ~kC2QNG3_y8yP jQU\D# | 2 S l H i +  : `    c q N $  + A B @ U s S    2 0 (     8 p  $     I 4  ^:IyI}([WEuU|!fc <   J )   < r Z  ] < #    y5Y+ *AQUc8 * J 1   - N a y | W  YjjB.Uu/qXk0p_qd{| ^ @ - ; & 3  V i J t ? zJFH/D}enzw8)Iw , y N ^ pkm$.w}edBCDJ Y  m a j [  o J T p WHy?=PqKb2gWHJMJ2!8`.|?Ytt:   . P n o g  4 W $ _#*-y&" g v e p @ 6 K 3 J a Y V8{  *Favzpm4Oe+27NafdO/3`v>zG4ijHhSH\ . , u s W A "v: B 8 O 5 r U e ) q m,o;6?8}PXtEyHN+"%-572*#%(:RoOKvC.XR% %  0 Q z  Y s b D U   * ^ : # v g k } h L H G d  ] + (  +k5b @xg'Z5&hL%#)+-48S|CYhkuzgsAva0&`X& L & 2 b O B I ^ " :  ( - * X2A;f_mMj>~stN"C_uby}gV|re  ? ;   P X f [ D A e ~ y h G ? a | -J OI>q}O]ZHR{gIwL#n43He   Q\X&[ev |(Y)hA~  o  i /mitRlJWNJO'3*"6@BVt*MhT2Q KeB~>K>}8~x  u(M F l >}z9QMKAP7 5t&jNA=0s8K )=;KI]Uc*4psvFr_ASj)e_Dgj&%F/PCS|FC7WOGpu1mctZ(_e< y)h3/hn7J SS\5, "F s Q C L $ ;+QR  3Ypc0uQ1T J~]nnNoN/]2HH0ZTpPh0(~vs R  k|K0. ! Qlk1)KV:JA'\]*U|oUv+ph-/9\Yut @ 3 *e{= !Zz#$ + 5peI*8b Y P  n M OGdHuTm=O4IUDrw)<9Q-0OrF#S({c|  9 {*-$e WfO/ &.:N "#~$&5'D(A()*`++** )('&%z$*"!0@Kt0%S7f[ Mwyln\Y"[u_hB7}8yT$ sc # G"no[p!#E$%r&S&'r'( (?(g()p*l+a,-/0<1)223O34q44f3|2}1/.-0+*(r&%$e#""c!!5  soPT $~1qq<DN=${}1 EV+ rd q"$%i%&&(|*+-a./0123G34#4G4M4k45Y6679:-;;<="=>X>>=<;@987X54.2j0/*--E,,=+++++++f*^)-'%$:"!LV Y U =xUZjF2{znwiW;o, K A 8n!>$P'*-%./h002#35S68>9:;==>>?)?>>>?@3ARBCE2FZGvH@HIxJJJJIHG_F"DCsA@><:C8766F55m5P56K676u53200 -+)'&$!XeX VC5m 'Y&w> C4Lo!$8&)P,c03g6f839:m;m<=?P@gABDjEFH)HIyI|I]HH{HpHIJLMxOPQSSTsTU}UUTTRQPOsMLaJkHQFnDCBA@@"?@@ABSB@A@?!<:742`0&.^,*(I%B"<c S "S'pO#%Iiy * 0 T  Ce"%) ,A.148G<?YB CEFGHIJKLN2OQ;F86420-)&s#A HY <,%A<^>r,n w Ii#4'I*.158 :=AKDH@K+MOQRST,TU;UVXAYZ[\o\].]']\\]$]_i`bAcdef(fffveeee`ddicc'bb2a`_^/\[ZZ;YXX,WWWWWWWDVBUQSQOlLIFDAg?5=>; 85B1-*?&"=>H s Bv9;  T[f#Y(_-E269:&=g@CFJAMPTPW4Z \^$_)__`G``abcrd7dde eddddeBfgThijkljllllGkkjjj>iitihhhhg(edcccbb&aaab_bbbb `_^k\ZcWU+RfOLJYHEC@=840E,='#  * i&#a _kXk^#'-f27=4A|EVH^KNQUXZ]`ce|g5gh@h3huhhhhiViiiiIihhhhhiQjIk6l)mmnXnonndmm6lll~l)kkkkkkqjihhLh ggggghij8jjjhgfrdb`|^$[YW3TR6OMKOHD@M;t7 2. )#nX P \C%_A0,)&Q%5$&(-B17=>BHULPfSLVY\_padEfigkmJnnoEo@oYo nn9n%n4n%mm{llulkkkXkfklm/nnopkpqYqCpp0oooGonnnnnnnnommQlllllm7mnopqQqhqKpkonGljhfec`^\ZtXVBSPzLGB=83.f(#n{  v):730/w.13D7;AvG7LRUYz\&_Gad}fvh_j+l]n3opxqq=qqq~pp ouo.onnfmm_llTkkk4k@kl*lmqnVoTpKpqqqq%pppvp0ooooppFpMpooo\oWo]ooopeq9r$s stDttsrcq$o}ml9jhgheduba3_4][ZWSCNtID+?8:4.)%N!jCDsA @k?ElA>F:99G;j=AEKQQV[_bodgiklnqoqrsmssssssQrxqppp7oo.nn mgllKl kklAlm1mnopqrarrrrxrWrqqq_qRqqrrXrgrgrUrHrPrcrrss{tCuuvww`w!vutsJqpovnYmQlmkjihfdLb*^Z*TOJoEd@:C4/+&"p yOPKHEDzCEGK'NSX]b8eXh]joln!oWp5qqrstt&sssssrHqZpooSnnGmmAll=kkkkkl`lm/mnPo8p%q qrsrrrrurIqqq{q\qqrZrrsss(s>sSszsstSuuvavw-wow@w vIu[t2s4rRqlpooronn3m:ljWhf=b^)YsTSOJE@?:a51,'"F' 2 "KY$US#PYOUNPnQTW\`dhk6moq3rrstu/uu`uttIsserqppoYnmmPllplkkk~kklYllm%mjmnoNp)qqqqqqqYqppppqNqr_rrs+sqsst*tftuSvvwUwxxAxwwivv u\tssFrrVrqqqyponljfb^YTPJEQ@ ;y61,'w"  I`^([YXXXYqZC\\^b,ehkn/pcqrsgt8tuquuxttssUrqponmlkojiiiAi!i i]ijmkkllfllmmn]o*p pppwpmpLp"oooZo5oqopopqpoonnnnnnunmmllkOjXi%hCgghhhi2ifijakSlVmwnokpBpqrvsDstftu,uKuGtt3rpnaljzhAdaD\XTP-KE?: 4/.*t%qqnq&pppppppq qryst[tu#uuv/uusrqphnxlitgNeb_\YVTSGS!RSmT4V WZ]?`be5gfhjnkmn]opqrrrrrqppoo?nnmm3l5k'ihgfUdba2___]___`Kab ckdf-gidkln'oyprrstNttttsrppo"mukifb_P[WSNI C>694u/s+sisss{sasBs"ssrrs/stztu5uUuuutsrq`on9khec-`r]oZ#VSPNM7M LMGN4PdRUX[_#b&dghjnl"mo^pqqrkrrr0qpp6oonxmlhk7ihf#dYb`^\ZY/XeWWWIWqWXiY[m]^`ceogiknoq4r7sftttttsrqpGoOmk?heTbC_n[WNR LGB>b9gssasssssss]s rsRst&tCtetfttIsr8po-mkifcv_\ZVSPBMUJfHG7G FG^HpJM PjlnpDqsstFtttWsrqpomk3hfpdDa5]XTKOK~GIBrs/sst$tTt=tss1rs"sls]s's%ss rTq=oRmkRi7fd `]YMVSOLIFDBR@@@ABE6GJMQUY]a+dZgjloprOrssss^sr;qdp1o5<{;);3;<=]?ADGKP*TYR]pasehlopqstuuuu???@BE%HKNRV"ZL^bfjQloq@s ttu u|uuuEttsqpanlkxisfc`\YVRp+pqrfrsdsTsrhqqqqqppOoo%mokrhfe]a^PZWSGNKGE.B@K=:8(6i55$4579i;>AEJKOTZ#_ cvgkp.s5uvxxx1wwav~usrkomie`'[uv:5311j0H/6.-K,,,t,q,/,,',,-R-0 27w<^BI2PcW^f[l?qtwxyyyyyVxvtJqm`iic]*U#LD=60,(&.##j# #|#$$B$%(&(,A05F:V@GN1Ul[aeiloqsstu9uGttMss9r4pnlk ibh8490e.--,,^+++f+++++\+V+b+#+V+~-(/3&7p=CKeRZmbhcnor'uvx'x]xxx)vu~spm id^W%O@G?082.w*"'%:$y#$#$$'$g$`%K&y)],x15s;1AMHlOV\afnimp"r rstFtmsssrrpomkSihgg/fOmmnn&mmlllkllllxmllifaTQqXM]bfknpoqerssXrrr2r;qpo mIkjaihh.gn?n-nmmll:kknklTlllkm-ll)he*_XQRJ!C;5/,")a)((())")7)I)])))t)C)=)((I'()-073=wELT\cpj8nrt)uuv7uutsrprmkgc\NULME>72}-)'&3%V%/$$|$B$7$$@$\%'*-27w=DKSY ^bgk#noqqr qqqqqKq#pcnmNkjji_hhwnnn;mmylkkgkllllmmKlh!c]HVsNGb@^93/-f*g(D(d(B(((((((((((((z'''W(V)I,0~6FMWSZ_dDh#kmoppppFopQpkonm)kjjbiiiYo;nnMnmlkklUlmmmnom_kgb=[UT'LfE>h7_1,*()3)E)))S)))())).),)")+)&(()*r+/;3.8>E$KRY~_ej2moVppq+q}qr r"qqypeoli\cz]tVyOI@BP;50J,[*(( &%%$a### #O#%u' *.39g@GOU[<`eail5nso0p pooooponmRlk'jjajEj)otnn=mmlkklmmmnlnInmje`gY6QIB<'5\0r+*8()b)))))d)b)])r))))**D*2*+,.n15g:?fE,KDQW]5bfjAkllmrmno_ppZpppnkfa%ZTNHxA:5D0.,^+)i'&%t$Z#"""]#7$&)e.{3;HBJKQtW]bgk mnroyoouoBoponmlkkwkkk o'nRmmmXlSklmmmnxn mkhc>]VJNF?9o3.*)())K)))O)T)r)s))**V*+I,,y-t.0259T=AFL(QV[@_begJh`hiMjklImxnmo`opoqmxhd ^$/#6""@""$&+C0Z7?FN]U[aXg$jmnoppopqpponmll{lllnmm^m2lkkgklmmnRmmif`ZSKUC:6\2%.+C)&&%!$$_$=#$$'U*1U8@-GOW?^4ekXoqCrrsAss*s&sPrrppooo o1ll&l"lEl~llm+n>nmnlPidG^WPiH|@92>,(&!$$% %%&"&X&y&&&&&'(*-148=WAEIuMGPSVSYZ[[[[\\\]_&a_cfj lopq&J%k%>$$$$$' *0-6>FnNDU]ekprsst@sssssvrqpppppPll%lSlmlm-ngokonnl~i)c ]UME>7/*&#$#$$T$%?%%&&3&G&C&&'(+/38%]%x%&&I'(,05h:c?E{JOTX[^<_W`a `_]\\I\b\<\]t_b8eilXnopppnlheVaM]YT)NnHB=S83/+)&%|$$o$<$i$u$$&[(v-3;CsKS[Ycjpscuu|uuLtt tssrYqqqqrTnWmn1nmno opqqppmic3\TLDp9`50,(& #""%"S"e"###$&+0o8`@9HPXaho\ruuuvtt2sts?s^]^A^v_adGgiklmmmek+hBc_-ZIUPKE@6;6'1-*7&{#!! !.!"/""$%%s).6>RFNV_gmqyt#t-tt sSrrrrrrst tugpp1p oooyopMppoomjzd^nVkNXE=5.&(U" uRp^`cu!K"&*1 7 =CIOU:Z^zac_dddcbaa``aa?bacfh^jalEmmm+ldifa\>VQLFAQ;7"2.*'$\" }j !!!#*$I(0- 4/4;UAGNSYw]acefbfeebdd*ccccdf#gik+llmlkWgc]XSMHB*<73/w,(%" s1 [ "# &+]3:CJRZbNimppqpwooopQpipqrstupzooo nnQn5nXnnngnxljYe_^WOGB>7/>)!#rHV u!2$f(-29?JELQW\a)cfghhdhgcgg fffgRhfikNl8mlmllj.e`ZTO"ITC=8w30-6*j'k$"9 U{%QW!F"%z*'19sAIPPX`.gknnoEnnmn(nno_pLqrsuooAnnn7mmmmmmnlje`0XbPHM?8 0)#U3pEE #',06=6CJ[PV\adfgi_jjj^iiiigiEii{j6kMlWlmrmm?k|id ^WQKE}?9d40S-*(&^$3! D O !L$)-08`@GOW^kejDmim{mmllglmJmomopqs t,nn.mmmFlllvlmm9mlk,faWYRIA91*$ 5n)m"$[ #*&*.4w:AMGN>TZ_vcpg|ikikkkkk$kjjk*klbm6mn mlm&jgb(\@UUNHBCu6/'"?9~ u"B$'U+W/6C?N93.+)d((q('U&B%C$#"! %At!%*[29AKHNVU]+cgjjk@jjkhkllmnpqqrihah5hggAfg,h+i jk~kliXf_YQIqA'9X2_*%K f|P>O(P I!$G&P)-3/9?EKQfW)]dbg~jSlmnoqrrrs0sOsgrZq\nikXe_WOfH@A;50,)''''f&&%F$I#(! v. "!&,4;CIPsW^sd|gjjk*jkklDlmhno4p_q:qrag,ffggfrff}ghikPklejIga\HTLD>CI)OUG[oafGjmJoqGs[tuvvu/trZp;kfI^WOGa@94R.*'Z&%p%& &%%$#"! ] 5 "$* 0I8M?FMTB[aafHh~jjjjjkllm*mnopKpip`?a;boceeefhiGjklmljfxb&[T:KD<5j/|)&J#3! 2I "C#%b&(+)-05R9?;DDJP9V]bgkEnqstv-v+v)tspnhb^ZcRJC-<601+(:%G$$X%%K%B$$k$#""4!{ X 9 % !3#e%+19ACIP*Vr\)af jmqrt@tRtsrqnjAd]`UUMdE>~8c2G-(%#x#F#6#$$##y#S#""!z! } i h!O!$O'[-G3;CJQXX_d h"ik3kLk4jkyll3lDlmDmn'mmhmTWZm]`ubdf]gijjl&mnnnjgbb\PTM>E>8G1-(&\$"!!= ]   !w"#%9&P'^(L)+A-048=BIOQUn[[`eimp rHrrq(ozkLf_XPlH7@9_3-)<$"!L!!"x""""m"{"Y!!a   3!W"% (/5=DLSZ%`eBhik5k4kjkl'lllrlmSml~k|jMQXUY+\`c!e]fhjklno#oljfe`WYQR^KD=61e,v)h&m$# "E!a h R K !"#$%&o'-((*,/27}<AG}MSYA^chknopLnalgb[{TKCE;4/)K%{!  z ! !)!$!%!#!J!1 0l @!#&+18@GNVJ\bfsijCk$kjjk]kkkkGkQkjhg0eFNKOTY^>advfDhj6klnlolon_lhdc]WP]IB;50J,p(&$#G"! !"#f$9$%&&''(*-[1y5:@ FL7RgX^$cgk}lmkid_-WQOjF>w70,+%"eYq\ "$(-4<CKQY+_dgjWjkFk jjkkkk%jAj iwhfdbo`C> CIOU|[?_cl@moonmjg6a\UJNHaA;d5;0,Q)&%#c"!!8 !-!"h#4#$|$%B%%&:&Z')e,0G49?9DKNQW^bghj$hf(`[GSDK7B:q3u,(L#!F[ ")$'G+1|8@G}NUG\a_fpikk>kxkjjkjihg etcw`]ZW5GSPyW^bfhjklmwnSnYnlkheao\WNRLTF ?950`-)'%3#"""X""#T#$###Y#*## "#G$G&):-05;BJXPVY[Z4XSNG ?70*!$"d o>e_!+"$'c+06w=ODKQX^dcgAjnkll[kjjYithbeb?]Y{TO_IC>9 y%r.7A JSZ_dgOj$klmMn'n=nll)j:hdc`b[aVQKE?:q5A1R-*(&1$$#[#b#z#$u$$$$4##{#a""#@$&N).+0R5vPV\afi_klzm4lkjRih fb]WRLF@694_.?'0:DMV\bRei[kNlmnenn{mmMljgdB_[VQKF@":[51^.O+(&%$N$#$$%*%s%Q$$K##""~"@"#m%X',+4/6}=DaJNQtPP*LYHA?:\3.+&"!Ci <tj D!#X%'+k/34;+BnIP0VZ[ateikmmmlkjifc^SYRwLE=60*A$X!|*-3=GHPW^-b`gilamfnnonnSmoljJgwcb_[2VQLF@;63j0-*)('%&G%&y&&'\'''&&j%%x%%F%4&_'+!/G5<&BHLoODNNjJF@I92+':#[! P  t !&""$&),05z;B}IP]VV\`eilmo nn\lk@hfc6^XRnK6C;9,6.32-112x3_4h556h67>766|666 79=BGKkMOINkMJGBX<61E,)>'V%s$###A#[#_#$i%&(*\,.25}:1>DJJbPV\?a}eiloprurKr omie`ZSKB:t1( 7 4 !)2;DK]RYS` dhjlmno{ooo*mkiEg8db_[VR3MIrEB@=;:.99P: :<<=(=>??>>>>&>.?A^DHYLOQkRQQ;NKFAfda]YiUPMsJ'GDCQAAA?ABCDhDEF FFFFuF2FWF}GI2KNQTUVUU+ROK;FA='9:53+1 0..y-.".=/<02x467:@<@CHM+RFW\aSeQilo pJqr~ser4pGlh bo\ULCh:E1<( jr  (08@H>PW^.bif:hkmoDokonnlkj(i0geb_4[kWTQsNL*JIIITIJhKVLLMKMN/NpNNNNOCPaQSV7XwZ[\V[XZ`WTQM"HDA:=;Q9=8>766)6^679:<)=?|ADKGK6OSX] aGO"W\adhkn^oKonnmmVlkjiVgHda^[XVfSQPPPQ(QRS:STUV.VVVWWWXZ[]y_`a-a`f_B\ZGVSPLmIEC>R=>>o?@B`CE5GILOJRVZ^bSei_l6npppqppolqhb]VVN(D~:1&'[ Bt?1/} >pd%,41<.DkLSY]bhf#j/lYmm3m lmmlkjih eca:^\Z$X]VVVW{XXYZZ[\]]]^^i^_A``b3cdeeedca_x\Z'W$SPMKDI?HFF2EEF8G'H)IJLNQ(SoV9Yj\_behqkxmoo%o_nnmGjf>a[JU=MBDt:1(Zk f{zo l? g t"*1h9{B4J"Q$VZ[_e hkhklklmRmmMlkjihfPdb`_w^]]^ ^_``abcdeefggh3hij+jkjjihfdb`^3[wXUS;Q"ONN M|MMNZOBPR=T,VKXZ]_b2dzfi>k|mno nbn]mhlli[e`ZT LC:j0'e ==KvpM * '+.6h>ZEL2QV\S`e'ghhiKjkl5lkCjjiUhNg/f dd"cDbbbcud5de4efgh]iij9jk?kllAlvllllzkjihofeachaH^\KZX#VUUJTTThUUWYZ\^`YaceQfhsjlm1llk@jhfb]WQJB9P0 'od 0^}tAsPSF# X qe#*2b:pAHrMSnXN]a:cdfIgi[jk}k}kk6kjj(ihhhhhihphhiAiijjmjk^klYlm5m|mmmmn(n5nmml|kkj2hg?eMcBaf_^]]\T\([\]_`mactdefghjk)lallnk*j:h|fc_ZGU]O*H@7.% _. :*vsZ{Y8 ;  'a.6A=zC|HM}RWs[]` a`cRe fghhhjhhxhKhh)hi2ioiaiRi@i]iai7hh|h=h*hEhTh[hUhCh%h*hIhiiiij j[jjjj'iah'fedccbxaaabRcdDeTfJg7gh9hi ijQjjyirh:fLdbb_uZVP;K7D=5),$r wrQS=U?`Mqun |7#9*I29?CHLRVY[w]^^`b'c|dMe&ef f8fBfgRh;hi*iPi ihhBgwfeedd%cbb"ava@a5ab+bcidAeTfh,i\jljjjujii$hhGggggghYhijjjjjjjnihgUeica_q[VQ$LFA/:C2)l!al '"!6, CgQL #&-4v9r=A_F,JOXRBT`UiVX}Z[h\]R^^__`ZaIb bcbbbCa`_^U]j\[Z^XWV~V UVNVWXZ"[^``cef^gogh]hhhhqhfh`hjhihhi$iiiiwihdgfdb`C]\1YV8Q'KEAD<67.&3~ t*kM?JHz9|cQ $!(.37:?CGK&LMNOQ5RTURVlW~XcYdZZZ[M[k[cZZ XWVMU\TcS>QON9LKKLLeMNPSCVY\_b d eJfg]gghhhggghRhili|i_hdgSeca^\.YW TwPKE@;7;1*# .e xW[hGmx qvt$)-D0d3Y7;?ACDCD-EF^GIkJL~MOOOOOPOO@NrM4KJIIH FDCA|@@>@ABBCgEHLGOS_VY.[]k_;`,``a/aMa]azabbcdxd_db`^[XURP}MPID?:B61-<', N 5 eam #upT! 3I'cCm XTB(#!&)],{/3689:e:;e<=?AeC5EFFvF EEeDCBAy@>==D<>:9376@55)56 7]8;!>&BEI}LORBT;V(_:c)N _ G  #D%,'*-/001/12457s9:;;;d:u98G65w32r10/.m,+**)*1*+-9/26o:=v@C7EGIJKLLMNP#QS=TUUMTGS4QNKIVF|C?;=6>1O-.)&# V/<<~e,Q^ ANAU+SVh J_~w+\ R~@!#%&'t'(F)&**+-k.0N01 0]/.,|*(&%$#N! EM. #$&)-n0469;=?L@mACBCCEFHEItJJJIHG&ECB@M!%8(l+A.%0s24$5v6{78:d;<=>>>>f=<;8E5h13,n'# zT c\P=2 }E-yXfb!%Y6#/v ^ T~w68>S@S5zW K   ^ l X c$n #&(g)+(+,-./013344O4 2u0- )R$ 0>  "A AVDp#0uXF<D\wrU_[]  $  ,xxb>O o Z  ;ed2a % ! EW+ k!^!"L"#$%'()***J(<%!2 `fOsLL2E2f^8$/~r7" r`P-| H2|f 1 S Q t_ k0-g*x(b 2 * x!o ^J  +er$a]wC]qoS=,RwL/,[, =57FcIUR9ajeBt[F`zV3kn)%&K  " 9 #-{(.j2]X! 5 vY+tfZA7i^vmaWBJ^rNAx |q& =E(k^rrg&jxC&2C| Q@,% 3 q 2 8 2 lo]g vaR7ZoumPUrT`\XWooK;J!9C ThRaT6Ep( eC9'7]mdVTVfnBy<JkS(` 0G22@`~p@*J}9M[bcqm^2%@2Tw{N )v4mh!Oi|]C5'4S{}ztfF"LG| ={pm2=Y1 8w<rX55Z'<Rgmk[S; "&!)oDFislw(d38_x^XT^dv)]B<]{XEnJ^F@Vp~w8Q^bYMGYX.-1% " 3`IW,RsX\ 4UzeHKSacaii]D/<ZqSccdO_(b|wM) V>?XhleHabYF8:S^E /,!1BMFKu09[(iex[HZtvooqxzU%)OaRF1!aLFQXZX4KTZP=1:HSB":>0#.CIO]pK K^jxo{n_bkd`b{7t]+ETJ?0*"r^PT\]U';T]S=+.P_8 5RC%+H]M?\vmI7|s 9 i_psdga5z(;A<2650{cY]\H)BWf\<*Jjb8 @]U1'LWYemvhC&@g$4c&33'-*~m{]isdf &-2)):4`RB",BbnX>CVk_$YvP3[y|nsur`6'DzG#`I^W995wruqxU "Q`L5<j}y--%,!\<" )GamaI;QaK"-^_>"2YszzonhREHbxQ33u<lpKG=#pjnkpA 2HE6.?bsx# $+  O( "8^jK&-GXN# 0U_C 3bnccmsh]\ki<3NLdMM>&oiqqsw}n1 ;QWC.o}z (:,`8  .F>**5BE:("?YWD07_pnqib\cvcUX*QNSC,gcpv~zY2%1IOE6&Mx # Y9&+  (46-#%?QA**=TcZTejbdmmkkov}|*<ME7{{hfu~kfadngC Ix&Z5% 0 '77&9SI1%-C[eeen~kfnqtttsv~>GJ4soxxhfnqmiV1+BdtB  '  2A5%0@E=1+-@\qqijuxmlow~~tln{,CRB+~shjegsyr]J9&&3N_t |qeM0   !#2218AGE<2'4[|mp{}zuoijs{vnlu#;I:%nhtx|qZH>579HXucJ;#   !2- %,5<AHJF=-4Um]^gtytg_fqsrpw 19*kXPNJE7;P|jI6$&& @<l J#H@r|^He@B_)(LC( C } ?  & +   U   _ i A rQw?)=lALO'sq~.   DJ`T v<MZaUOx<+] N  u g g Y # m )  < ] l S .    & M  !  B P W a  ^ 1 6:OIk3jx&5 XyI,T`\N'g%v | u ` % ] )     % 8 : 1  m ` U x ( G c t "  , 2 "   # @ [ C J & )Q82 GcCS}LW%xFXg.eE   8 N : *   S 3    + 0 6 )  @   _  = U p x @  (   ` A A x1'+{ua`6A.-7h3fX 3 9 | 1 g e   '   W 0  8 f  4 I Y z Y $ O 8 P i g G .  " " E   . p % @ zg=+IGA.Ws7yQ dP!X^D  }  1 [  o G j 1  < h    j i J (  " 2 8 C \ y Q   - - %      ! C w # .   G +  gDL uyF|'`` ImX"h^ : {  Q /   ; u Y  a ? $ G iG"18AJa5 + N 6    1 L f u Q   Xee;+Qs1s[f,qexh \ ? * 8 $ 7  T o Y  t ?  ]&|F\M":k _qD&&4W 4 z I  [ jhc-uae DEIQ _  o ` i [  z T X o YKd$1AlQeHzxmgdV07a&tD_}{>'  + N n m a  A d % | X!#v %f# } f r E <  J 6 R m a \&?}(D^y}fj;V~60?g~~xY, >jz <yG.kpYpOCY * ; " p Q 5 u5% F ; Q 6 t [ d $ n v-mA@J@KAd:b;iR8=Tq~sbG-$&<Vmy{vPQyF<hV%  - V  [ q _ @ P  t # \ 9 "  p s k M L N k # a (    %l;_Nk'4 Oq(48*( ,T}0\nmyWf.ZX% S  ! T G A K a  ?   ' 0 + [.@8rk|NniY/dVc pM$<GTs$v"suZ{h )u  9 5   | F T f \ G D f | e @ 4 R | | *QR ]Q| ab[TLyi5iwC[3#6NpQY`##emvn/h'f@x g  r  4n#bvP]D N?PM+ q#+zY:" NMtI>+Q_Jof yWWsX#je9;o0AB w.6K}-l`, "{0uVD7S=nZ9LS3|v*toxJpO/] 4BB'aVyNh$Yp<h_= 5 p v n  g  1 l iJ<}bO  g pd9@Qh_*UFSg`nT!RZ"]x\7{fy35,V%)( U + R f D6bt8^VH"^]1!AQu Y 5 z J D ]e }`0g ! X&N>G8bj~(D@W ;5L zF!L^ntr  _\!  f!'!"#U#$W$$%(%%&*& %%z%$$#4"@!||wZu-m. L?+pe\hy.ah KkU82zHFYC G sEgU; "$}&'9()v*q*+B+A+L+w+,G,-T-..d.../ /]///[..g--=,o+v*'('x&<%3$"#K"!!5 ~J1 p'sz y 9 GNC|3|^c104&|" gB X#~ # ?ma !#|%e&&4&Y'(*,.a/19245?6}7%777u7V7R7z778.8Z888899h9999P88:76543&10R/6.-9,y,+u+,+ +***?)U(8&$#!o \]fv:  j2ec8+caziz](406 ] j HVf">%(#+L-/;/0R0244 579U:={;:o87665/44455-5^442g0.Q,*(&m$#!x4N r `sM $PE^p Z0"P%9'*-03689:;<=?l@BnDEG{I!JKMMIM.LLKKL>LMNJNOPEPPQ>QQQQQQ;PP]ONMJKIHF~DCBEA/??!>>>?p???>n<:8=53%0.-C,/*)@&$!I5 #eBEkw &^ / {#9&j)-0 3 6E9=?BrDEFGHIJKM{O$PRTjVW=XSXXYWW\WfWXnYCZG[?\\]F]]l]f]P]U]6\\\'[[hZZJY(WVTrRQiP&NMLIK7J`J-J JCJJJtIkH=F1DA?<~976U5*31.+r( $!K xkm4j:j2 I O PaB"'C+4.2O58;?KBFI3KNOQSST TdUV WXZ\"]{^_````h`9``abcdefjfff#ee)dddccmbbbbb.ba``{_$]\[vZYXWbVVUUTTTTSTS'R9PO LJHHEuB@?z>+E951,'"y (Z &&v#) aC #'-?2[7=$AEILTOS$VY\9^`cee[g!ghghhjhi,ijjk3kkkkkwk*jjkkl?m mn~o/oloonimll9kk;jjjkknkvk1jxiihhggMffnfbfg gVggjg f ecb9`w^\ZXVUS%PO LWIME@;72O-)$: 8sE0-)*2'M&^%')-27begijlmo+oppq`quqxqpp0ooooomonnmsll`lIl@lm=n+o)p?qZrrrreqppNooioo1oaopWppppp?p oooofoYotopRpqeqqqq>pCoBmlkj hg>edba9_\YVRqMHIC?:v51#,($ }Dq FyBXF^B?=< ;=v?NBFKQ#V[_c{ehjln!opqrs#sSsstLtKtssrr&qqjqpponn0mqllyltlqlmwnwoprrst tsgrrqq5ppqqr'rs's=s6srrrrrrrs stttu7u(ttAsjrSqhppo\nMmdlzkjPigSec`]XSNJ(EAx<73M/ *&^!ZA dHP.MJ`GFF^GISLfOTIY1^"bf,iYknmopSq*rWs8stt*tt>tdt{t-srr+qppp;oonnmhll;kkkklnlmnp(q_rfssstss rWqqhq qq qrrs\sss[sNsJsAs=s%s=sxst{tuSu~uuuu+tsrrq[pooLnmm7l jhgKdac\XTPLGC>a9516,S'" h eaYW+TRQQ[RSjUX\`eiknpKqrs~ttuxuuiu3tuttt)srqpoo-nhmmEll:kkkk_klkukl2lmnp q"rLrs2rr/qkppzppp%pqBrrrsrrs'sLssstfuuvGvvwwwvvEutt+% 2 * %UaS_9]e[[Z[a[]c_bei(lInpqrsWstftu tt[t+tssmrqq"p$o mlykejtiiioi5i=iiiijjQjkklNmCnKobpq9qqNppoo2nnnoop4pqqpqq?qwqqrTrspt(tu\uuuuuouKttssArqqRppppopLoongm/jh5da^[WSNJwEA.;5/)# hgedd?cccdf9hjlo^qKrs{sstWttt8ssrrrXqponmUkjJhg eeeYeefcfgh5hiWij+jk8lmn0oVppppNooKnnqn'mnnYno5oxoyo]onoopp%pnpqrr(rsstSt_tXt8t;tG#lkk2jjFiiiHijkmCnpr^sissssss\rqq.pp{onmo[oopppqqpppqqrrrsEsrqpnljifd\`\XT`OxJBD =7e1 +H% pppY>U>?ATCEHL&P8TsX\M_xbehk moopqrssLsrrSqpo}mkihfc`]ZWT5Q N@LVJIHUGrFFmFsGHJMPSVY]a`e[ijloqSsXtuv/vnv=vbvumtosrqpn|lkhea]jY:URMpbpqrPrrrmrqq~qqrqq ppo\mki\fd-am^q[XTTPLI^FDC@>U;:889$:<>*@BF3JuNSyW[s_RbfimoOqorst2ttot^ssqp$mkheLaj]ZVDR0MIF8CBA-??G>>>@+A=C{FILPuTX8\aKfj mor8subv vpvGvvRutt^svr_ponljheKa^\[XU?oXopqrrJqqq(qqJqqqp:onmkifRc<_\\XUQMIEB?=^:8E54223\4689;987e6656w68I9h;>GB EJ NKSX]`bgknqTstuvEv*vvvov7uttsrponmk^hfc@a^\1n{oopqTqqDpppq q^qKpponmKjgc`"\WSP LGC@;=;964510q/\//013E47x:$>LBHrMSyX]c@hlpsu=vwlxx x wMv{tsTpnUjzfUa[VIPK)E?:6}3v2000/v/0]1247 :>MCGMRvX5^;S9375/20.-- -,-p-/&0?2`4r86qpponmlkihff%emEmn[noKobo0nno|p p@ppoomkgb\WE`LSZ`vf imprIrshssAsr|qq pp.onmlYkihggfFmmnDnnnnGmnno_oozooZo1mjTe8_YSILF@:510"..p-,++x+)+"+***Y* ))V)q)+;-05;"ARHPXe`#flpt.uw*wcwwXvusqolOi.d+^WgOH@*9Z2.c*'%3$g#$ $>$$%7%'(+.38?WEM'TKZ`ej:mpqXrdrarreqq5ppoodnmCljishgg7fnnn;nJn&mmm;mfnnoo ooWo%li`c]VjOHA;40U,+++7***W*9*-*7*J*3)))@((&''^(R)Y,0D6F<71[-F*N)))))))))))))c)R)(((S'()^,j/5;BJeRJZEaOh6lq rtuuu(tsrqomjfb][TLD=[6%0+''%-$c###$$$$$$&b(Q,/4:%@GNV\aeilXnoppppooo)onLmkjiihthgoonnvnmhmlmncoFoopp;oqkgp`zYTQZIB;h50.+;()) )))))))))){)a)))c);()*-16X_fkpqs}st^t5tsmrqpnm]ie_TXPuH|@9 2,(%O$A#`#####^#)#?#%$%L(/+#/4U:A,HPV\aSf iUln8oooo|nnnnnlkjiihhth:pEoonn%m[m m+nnop?pNppnjle^mVNG@93-*))})*/*?* )))))))**+$+u+,--g.15:?ESK>QX_0ej9noqqmr r?rr{rr/qppm+ic]FUSME>;7}0+'%$$$$$##""##%'+/5q;CJQXG]~bfjmnoNooennnnnWm?ljjiiXiIi7poo7nn"m=lm>n8o opDp4pomEhck[TOLGD>F7a2,*z()a)*)**))))y))*-*[*+,-./W02h5{9 =AFvKQW]cgk6lmnZnodopq:qrqqomHgaZRKD<50+()'['"&&.%{$##"h"e">#m$(+706]=EM!T6Z_ddi8l1noooo-noo%nmlkjjjkjmjmpoonrmmlm.n'no$oo@oljree_XoPHAr;540#+)(_() )))M)4)4)))`)*K*+- .0>1357: =lAZDHM,RhW\Xa dUgEhijk;kln-omp{qqrq_oje5^WPIB;|5s0!-j+*N))(H'H&>% $ #5""`"#&7(-g2:2AIQW~]bhlIo!opp~pWppBpLpoKn"mlalhAEGKNSTWpZ^O`cdefghjrl7nopqs ruqkmPhia[UO/Hc@:]41.*,*)(T'J&$$#""#$&p*/\6>FMT[ah5lppqqqqqqqponmmmmnmhonnVmmqll9lmnmn lkvgdS^XMPHA93.5*'&%&U&'0'~'''''(W)c*++.i14269<@CMFIL\ORXUXZ\^e_aIbdeDfhk mSo3pqsrrnj4c^LX3RBKD>F840.,/*p('&%$$a###$%)H-4y;CKvRZ`hmqr+sjs`ssJsRs2sr{qPpo|oQnnno)nammm7lfl&lmmm6m8kieBaZTL?Do=50!*(#%%$%<%& &&'5'b'O'|')),/-3)6:=AqEHLOQSV/XdZA[^\m])]^_ace=gjcm=oqrss;rolfG`ZTNHNA;620-+)('u&%%3$$\$ $%(+29AIaPX_gm8qsttttttpt|srqpppOp"pnnCnmmllmnCn4mEmk;hc^WPIA692-J(y&I$H$"#$$%o%&P&&&':'(),`/48=ArEIMQTW3XZ[\]]a]x]^^`Cadfim(orEs2ssrolga[SU}OIC=84\1.,*w)'&%%K$$$N$$'n*1|8A@XGOWM^flqsouu0uuVu(tutsryqqqfqLqTnnjn_nEn3mmno;ommsk-gb\U}N.FD>k7>/*&R$#K##$$$%%&&m&&'''}()-176;@EJOmS}WZ]6]_A__^^<]]]=]^`&beZhloyr rsrrholgb\jVPK9E?:X52/-Q+ )i'&z%m$$w$b$$${&)0#6>FNyV?]f^lrsuuvuuu!uUu7tJs6rrryr|roo/oFoDoKoo%opkpnnEkha\TMUEd={6H.)%g$"#+#6#$$%-%%%&%&&(U)-)1p7;sttt8st:tu:uvYrqqqqq}q}qqq4onl~ic]UtME=6r.)F$9" V ` ^ !@!|!!""R#%(t,516ahnLq1sst5ssarsbssstau9uvwVrr.rqqqq,qq1pp@nn]l3i?c]V:NF>7?/)$7!.4"Iv  % g !#& )i._3?9?EBKQPVmZ^`bc6ca`____0``aceegikl#l8ji\fEb]X,RLFA6+FNjV<^elgor r3rrsqqr8rrsstuvdw]rrarqq1pprpMoo5nmki^d^]VOzG?70.* $A!@ \_C[lV !$w',$06k<^BINTY]`cNd+dccbVaaabc1d8egDi+jkkkih)d``@ZwTNGH5B=1840,*5'%]#!DjdL /!#( -M59z5*1.$+3(&$" t!#'9,e4 ;DKRZahl nnoXonnopNpspqrsturAqq=ppEoo nzmmqlm2ljme`YcRFJSB[:2,%P!rRr  "%C).,2~8?uFL[RX]aegghhphggbgghhkhijJkTkljj0gd_ZTMGgA$;6>26., )'%$" Bzr{|I!"\&>+I2:BIPX_fjm>mVmmlm;m^mnnoapZqrstqppponn;mm;llllJkg b\[>TBLCDU;8307-+))'%$5"c ?Rk#fb! "K&+(2:pBXIUP W^eiol(lCllUl6lglmmnropqrsppNoo[nmm,llBkkll0khc\V(N!F<>C6C/'",j[ "{%N',2r9@GpNT+Zo_dgj j?jzjDjjkfkl_lllSllrl-jnhd`TZOTGMGKAA;)671j.\+*O('&,$"! GrH!/"s&O+b2:}B-HOW&]dhVk k:kkgknklXmmQmopcqfr=soo'nnmnlnkkjjjkkkhe%^XJPMHp@a8o1%)H#Lx616 SuD!#O%V).58 3/>,*)('&%!#"!z <~w !#^',4e;CGIP\W^^dhjjkHk$kQklammTmopRq4qrnmm6lkjii(iKiEijkJki/fM`iZERGJSB:.2*$ J5haC7NOr!#+&+O18?FzLS+Y(_dOhNjkllmopppqppolnJkpgXggggffffg]heikl\kjfb[TLD=D5d.(% ! eI`[L!"#%(,17~=(C+I OU[af-jmHoqbs~tvuutOs_pnhb/ZRJUB<\50Z+ (%a$$G$$$${##8"!!C q + x !"%n(Z-4[<,CsJ`QW1^/cpgiPkkIk82 -( %]#&""#e###t""~" !!I !("_#:&)X/X5=DKRY`dhjkkkzkk6kkl lIlmnVnen*nc^ _a:bd+deefgi0jkmngnkhcW]VPOG^?81,(&#a! "o|l "#G$;%'),Q0i49>DwJPW5\bMfk#n>qWrt@ssqpllhQacYQmIcB:4.)%]#!_!!""g"r"Y"!!!e!3 !H"#&*x07p?FWM\TZafijkl kkFkxkkkkl+lmllGl+X_Z] _ac ce'fsgiIjl^nopHnUl gb#[XTzLEg>B617,>)$%#! p  \!m"K#,$% %')G,J/498>.CJ PIVM\.a?f^j661*&z"8 ya A !!)!K!S!e!T!. !<"#'e+2A8@GNVK\cgj$jl5l=kkhkkkkkklkkTjqiPTW[]`sb3cegbi*jlnp7q@on/ie_Y~RFK/D<61-%(&%#o"   !"Q"#$^%&&(+O/27B!:3-'# %r O ] * C K !#_% (-4;8BIQX_^odMgjvk2lKlNkkykkkyjjj0ihgfdI^MRVvZG]`ubdgijlopqq$pli+c^+WXPIB<51&,\(%#!  c!!"i"#H#$7$%0&J't*--Q16J;AFM S Y^Ncg8jklkjhc^,V_NFb>_750)*$!P`RI?f !"$<&h*/6=E LUSTZ`Aehvjklll;kkkk=j#ighRge3cOa6_Q@FDKQ V Z^adafik!lopkqqTpmkMfa[UOHB^;6j1-!)(&{#"^! !w"6"##g##$[$%9%'S)-g15:w@EKR&W]aeghkeklll9kkkih f|dbb_&\RYbV8">EoLR4X[]axdYgRidkpmnp*qqq(o-mzie`b[CUlOuHB?;61v,)&f$W"!![!""##l#####$C$F%+&k)1, 014>9]>DK5QX<\abdca`ZUM1Er=6p0M*%!HUn.^3Sf5R!%(*+06>DKRX_^ch ikl5llMkkJkjhcecI`<\XU&QMMu/6>FiMTZ`JcgDikkmnopq)qonkhd_ZfUMOfIB<=7 2+.}*'%J$#"###$$|$$V$$$b$n$%[&(,5/r38=D:K*RV[Z\^E\ZUP"H\@92->'$ SR5|6aT!6"%n'+Q/R53;{BIOOVn\4beinjlkllkkoj}igeXa^7Z!UPLGxB&/7@iHQEXG^cgixkm]nompppooRmkLgc_ZUOIB<743.+e(&#$a##$ $&$g$%$$_$##$ #$%g')-1 6B]975%1.+)Z''X&''_'''H&&%%>$$.#$$u&T(,\18_?@DJ LxNMMHI:D1=6@0*q&#F!N1" !a#$'*~.}2p8>TE}L^RXz]tbfjlngnenmmk7ig8c^YRpKD=<6!/^)#<B#(+5g?/HQX_uchikBmnop1pppoo+nmykhfKb_wZV+PuJE ?;4740.,^+W****+**\));(('p&&&'),1k7>-CHJM LqLHeC<60;*'$L" ufqVt F !".#A$v&(,!/y4'8>ELSX^bgPjmnpooCmlgigc_ XRCJCl;3,% kc%2.8OBLT;[v`leiyln oopQp$ooownmkitfc`=\VW9QLFDAr=964Q1/.../&/;... --L,z+***'*+z.28W>ECeGIKK=JG}B93.+(&$## """"""#$&(b*,/p27;;AG7MaSY_Xchlofq rrrqrolid`ZYRJ}B:21L)!W8@ & E!%)W2B6FJKMbNONNRKGA<72/,+6))''&&b&S&+&~&')}+-/25T9>BHN^T2Z _^dhmorKs]ttvt0qokAgKa[SKB91&' # 6a!*b3n9642\0Q/. --(- ,-J-/O13U57!9U<@EJ[OTY^cdh'koJqAs$sttTsfp4lgb[TKB90(9u~Q K$e Nr!*2;0C JQYe_Zdgxj~l@nHoMpp p oo n0mPlNkjohea~]fYV.RPN9LKvJJ{JJJJwJ#JJIIIIIeIJLTN`QSV4XXYX)WU1QMVHD@>;u976_5T4494 345g78:<$>/@D'H LQiVZ_cag]knq_rtttuSt2rbnj c]UMYC: 0'W=`  <!3)19AA HPW]bfhkm\nooFnnnRmmll:k heb_z\YWZTSR{RGQQQQQQhQYQ`QMQUQmQQRSuUVX[6]^^_8^7]n[X7TDPLItFCB@>==<?@BCEHRKOySW[_}bfjmoq}qs ss=qn>idB]VMDM:n0($- B  u'4/7^?JGOW\adhk5mnqnnnnnngnfmmlj=geUb`^o\ZjYAY XXXXXfX]XXY&Y`YZ"Z[^\C]^`;ac5dpddcb`^[kXvUKQNLJJTHPFEE D3DD DEG/HyJ KMP>SW4Z^adxg!j\m.oqqqrhqpmxic^PVND:1'' quB@P ]v!&=-5g=kELMVSY]bWeijl0lFlmmmnmmlkj$hfe,czay_^^\^6^c^L^$]]^R__r_`G`abbcEd5e egghihhg8eda_\YVTRPNMHLKKKLOLNCOQ\SU2W}Zh]`cegilmnpoppEooymkSfb4[UMwDo:v0(KS p/n}xq9 t q#+2:BJ^QSV[l_4cfiqj[jk>lBmQn0ncngmm7lNkjjYiNh,fedded d7d2d+ccdZe)efgfhOiFjFkTlllmcmn$nmlljihfZca7^^[YWV>TTS4RRSrT UWXZ\^acf hikXlnooo#o mliFe_ZT8LC:0T'l, $=`rW 9/"1(/7!>F2LUQUZ^bdffhik&klMkkkrk!jiiMhhkgggXgFgKgTggggh$hijklmnxnnoo!oUoBnnRmmljkJjh0fcay_]\[oZYYYHYZ\ ]_0`bcerg%hijlHm$mmrlkjhf+ai\VQJZBI8/'1 8We8nAJyA k z%+2:BHILQUZk^`b ce6g9hj"jk kkCkjjVj%j8h0(Q b ,6'Em~? b D&,2[698BEGRIJLNP~QRS STTTU UUTTTSRQPO2ML:KIHGG;FGHKMORU X-[ ]_mab)cQcdddddde>efXfgLgZg~ffFdb_]ZKXULRsN-I*Cw>y95 /k(!E,/ `xPV u` ( !Z%(+`.[2u6:p<>?ABD;EzFqGHHIIIZI:HHHxHIGGFF DCB_A?>=<<;<=?ADGPJMQSVX6Y[H\ \\]]] ]O]^`_@````_^\ YgV?S~PNKGBr<73/+G%9>W R i $xlQ$Kd`G u " 5!$b'M*.91r4*57H859I:$:;<=>?Y?p>>A=~<<6;:9876X5322$1&001{2469<@CFIKN1OQRSzSST$TU:VWX&XYXXVURPM0JGD@e;`61f-|*E&2 0 %+ a ,*?2 l*\Hm : %9Q 7"&)B+-.r/0//0y1U2345F44;321 0/-,+`*('&&P%%O%8&-'J)[+Q. 04I7:=G?mACEQFcGGGH'HIpJ|KLMMMLKJIGEB@J<83.*'H$r!L` M+Li.qZ HX7CAY<%J'>KboA uIG0 "$Y%e%o%%%&'()*))(?&%$D"!>]BqYXx!$y'+ -03579:<%<=>?@AB(BzB'AA@?>= ;88-40,'#  |O)lH@R(2zS-lP%[pUr} Ia6, OxWLEMHAZiI>3."%a'*i,.0,12t34]5<56O6h6c65555E420-)$ B]: <U-~M*wZjh01eV7qW  5 R [ @"%VL> o < y [  t{~ "d$& 'U(()M)**Z**++r+++*'$ 2r . ,\1MDw,6vZMA$Co^p]@?(6.;  : 4 0 (  2 e +Z4>Ec@ , QJ+  !{"1"F"Z!*FY CVFH~QN8L8i]4%5x?|oXA x/[F>&/n/Et[np#=J  S) 5 )kE %v:J 00`y cs ^\xE_olM<1Z~R+ d@7% [iG %((D=P]XXE$n ]   vt [ % + oztVW>1f]qf~ZUGPdx;:f]{Bdc[Qn*[tL>4\3K>A461Uu4Rv*{ ZP1|YntmPQlM^`\ZstN&9(q|C ]x}+G-`cGEXYcwuSEF^h=rBZwMU-9ZC+9B|b rD/L{6N_feusc51* Cj~c:=4]rY13smPJVV^li@Rk-_+,Bd >K`4  =xC{_>=_%<Ukqo_YC !#vbVfZ9[rH Aa}rbcemltZ1 *8]lz,_~WAoO&lRK_v|3L]f_SJ\\0'- -cX!%f :gYx9)5b[HQ\ijekgX: 'Gfw|-_^=B^&_|yP.bJI`osmAY`\M=;T_B**#4GFS3AP'wutPCXstd]VarTq.PaTH2 gTKU^a^2JV_U?1=OV@ =C-%CNYrRODc  rm|kSNRFIX+a%?PH<*!sbSU_d[,@Y`S=2:Zb5:\D0RkeZpxW&8rM5   }_KUdSHOv~&o 4<5(*+-~cW^`K)F]i]A3Oi_5 FYH&+Uinsr{rM-"?yT;m7IL:3$wai|tw-+fsXR{*1(#54]RF#.Jgn[CCQg\ShB8gosyxf>,BrL#!*f VqnK?0zrqtyw|BOomR6-S/2*,$Y=' 1K`rkN8N`G-ZY<$&Dm~tunWD?QpyV9?N^O:|qnror~S%/ThX;.>Vuw  ' H& #6dxS%)DUM%4WcK.,IuujhnmWC>RspIC_c{_U>!tnrsuvwxr5 (I`jS (lto0#]1  0NA%"/=B8(">XZL=DiurqcWLTkj]_<c[ZE,vdbnv~z_:-AalbT?Lx ^:#&  &,,% :L:#"7Sf_Wgofhpmiip{{ 8EQF9" xuuf^aq{lmmvoF/37T})Z8+.%22"8PD+*Fdnmmu}e_ghkmrw+BEG7# ~|upoxk^aowx}oL0+@Pj q? *1=3&2AC;.,5Nmtryk\Z[fqyww~0>J?/taYQXjwtbRB//<VcssmeL,     )"*.18?DA70+>f~ntwoh`bnywss~'8D:)odimvyfYRKMNYczaE6#  !6/&4:;CE@9/:[l`fp{xjagstrov#/8-}{|~xlkooiYVcmL8$$(  @?o@&LEu`IiG DRpGE * = z 9 & . "  V  W b ; {^I49dANN$njw+ KLeNl6UadXW6D6  z k q e + e   ; U c K "   % 4 7 ) . S w  9 I U e  i > @9FCj4pu}q$ hN0X`XH `)rx i Z W # _ &   , ; 7 .  q k `  0 O q ~  " )   ' / K g P W $O83  HdDTs)RSmIXl/gK  z 1 z : "   ~ [ ? !   # - 3 = 3 ! D  ( m  G _ o ~ s < |     q : @ z5 ,}+wwgb2P3,4]&l]  A ; l + s v  "   V 1   B p * F Q U s T  N 5 K b |  | m S < . 2 / N   , n ) F g:+KIC.U n3t]#bJI^J)   ; q ! e 7 W  . q *   - l i H !  9 M L I ] { J   # !     ! - . K + -    K / kFK qwBuUUUrTvm$g A # a 8  / g ~ < Y D -  HsM($<MZYc|1 ' F .   + B \ s t U   W`b;,Po/w.al2ufta d A . > + B M e K W  n:uQ[X+1b[g |Q21.Hm / q M  X gck%.vfi 99AQ e  w h o b  ^ 2 / G e BUs3:PuPf@tppfH0&>_l{5Ss~M"57  ! @ d j b  A ` ! z T!o  dw s  q v L H  Y L k  h APm# ;Ys{mj1Mr5<KnkG*&?ef+Y%<s'`lD4M 1 : }  q M . h(~B M = T : k v L o 1 n 1_.#&dQ Nb5j=bL>OioYIB:@Mas{zvo@BXLgN   / Z  W j X > S  u # [ 5 {{ u u o O I E ^  \ 4 .  ! 'Sc1d^# K   Fs14@<<- 'Dn$] SxY"Y\' S . b R L S e ! W #  $ * ! `)<#CP,2*{tNaZc[5 %;Rk;<hMua&q  + *  y E Q f ^ D = a r G 8 T } u ~T _,('sk&E:|ugLj/\k6vX@$ (EbkHdn40<^Vft8dz]3l X } e  Y$pVea:);S/<4N4M  ZxbXYQ>C_\9jEPZdqn0zh, f? 6 i 5wv_hJB<J2 "p2jOHE,b :agD+de~tj%`7W=25x>4Us-'G?s;r N=&RdQme'~hZxXc6g<{8/kjD-C( ~Cmc^r5nY S|^ !]#% ':()*++,,-?--..".6.X.....|.3---~-n-b-@-,,.++**)( &%s$M#D"!!$ iFkqMq< 2 K 0<jSZ'%) pGcLL^' 1 ^1D $ &()*,c.13"45r6(67w8U9@9::::r:'9999p9!888+777777776^55_4321@/.-p,++r****l*Q)('(%p#p!6B n iYR%qMOm^m2Vi 11~ m'KK!O#'*-02I35k7:<>c?@ABsCoDfEaEF~FjF0EE*DDDDDD}DbD;DDD DBDkDD0CBBAAm@[?=F;98765444B4L44O321.,*(&$#"~! ~ WiC>EkF  }G8"$'}),/268;-= >@CE9GAHJHKXLkM\NrOZP@PPPPpOOOxOOP7PPPPPPPPPPPTOONNV>3>O>a>>=fAD:FIJLNkP,QSUV1WSXQYxZp[_[\:\)\[[[\0\]X]^&^]]w] \\\h\#[ZZTYYYnXWVTsRQnP/NML7K II\HHH3GcFE-CA?=;Z9?7G65]43r1 .z*'#!B YeWia3a ,[ 0 2@B#%'*.B148<;>ADGJTMORqTVVXYSZ\+]^_`pavbccEcdTdddde>efWgg{ggg:fteddlccabaabaaa``6_]\[ZYXrW:VTT S7RvQPONMLEJHGDBA?>=i;9V52-*Y&"=g) r %` j$[(-1x59}<@_CGqJN0PSVX[o^ _``abcdeflg=hhijojkklllQlmmnBnonnmlkjj iGhgg)fggpggGfedd>c}ba`__2^]]<\[ZYXtW#UTR]P}NLKCIHFC@=84O0 +'"Mge KdB$!u:!%Z).3Y7NRLUXoZ] _Rad4f=g*gghhi;ij2jk:klSlmZmn.ngnsnkn~noop pq qqp]o|nOmFl^kjiiiTij6jjjOiiihhgqffffeeeledtcbak`^]?[Z5XWTUTR)OMKGC?b:6K2 -)% ?, '9kB".+)c'&&w(+T/4E9S>BGKORVFY]_bcegikmmmmnBn|npn]nnoo2osoopp/p1p oop0pyqqrs^sss]rqXp7o5nQmlllvlmn@nnnn~nCmmm*llvlIlBl5l&l,kkjihgfge1cbaK_^9\WZXUuRNJFAS<840+'t# :}c } }|H 9642>114 6:>CHhLQwURX[_%bdfhlikJln$o opIppq ppfoooooo~oyoeoDo'onnno oep/q!rCstt'tt@srqp~oonGn mno4pppq>q+qppnp oozoCo3oo+o\ooo@nmmlkjhgfe"ca_][[X4TPLJGC?;7w3.+,']#& STDA?=[<:51-}(#}G9 UNrKJH7GGIKOdRW[^b.ehj_lnsopqrszsssttDt`tsrqq phoon{nmmHmllmmUmn@noprDstuuutsrqqpDpopWqr)s:ttttttRtsssslsMsNs^ssstsrrq^ppDonmlkk,jhfdbs_[X5TPPM]IxE@ttsrqpp8ooZo2op^qtrsst,tktttotTtMtUt\tdt\thttuu:ufu+ttsUrrq|poo nin mlkji glmnoprrxrr'qcp]oonhn)mnKnopmqssst,tJt ss'srrr*qppeonmKkjiVhhThNhh4hZhiLij|jk;klDmCnVojpqqq=poo>nmmjlmm!mnPoop1ppqq2qwqr!rXrtrrssJsasUsrrr~rKr qppDooopJpppp1onmki~ge bN_ZVQLG*A:V3,&P F2kk+jjkjjjkltmnoq=rsssssssFrqqkq3pp,o8nkmml.kigf?eddddddefghijjklmnopqIqQq5pp*o|nmmWmllm=mnnxnoo o oo2o;o)onnnoo-o nnno3oooooouopHqqqr6rqq:po0m}ktjheb?^Z#UPKD=7&0*h$ooppCp_p$ooop2pqMr$stuttttessPreqpphonzmkjihfeba_____` `~ac\e;fh#i5j#kElxmnopqqrqqqpRonncmmmmmmnnmmmNll6kjj^iii{iiiijkY(Y#XY$XYoZ:\#^O`cDeNg3hjxkmnnpq-r'rsss rrqXpp-oonn"mmRmlkjjhgxedcb{aaEaTa]abcdf2giEjlfmopqs1sttuttsrqpoqnbljggGd]`y\WHQKmEr?{9E3.YrUrrsxssnsrrrs*stuuuuuXuRu t~srqxpmomkiefd2a_]'ZX5USRRRDR\RHS(TLVYF\o_qb2dfijln+oprrsGstss,rrqtpp*omnmm*lukjigfdc%a$_:][ZYYYcZ[\^l`pbWdfickmoqs3t0uRuvuuu%tsrqponkifc_kZU OJDH>9gqqr7rrrrxrCrOrerstntuttqtYss qpoTml jUgdaG^:[nXVSsQ3NMKKKXKrKLMP}S>>?R?@ADFJNSW[ _bfimoYqZrqst3ttOt%sprqapnkhf cW`]YVRYO2L4IGEDCB<:9%8z889(9{:;Z=@[DHM+QV[|`dhlsoFqs;tufuuutsrQpnykhd`]\YWUP}LH-DA?r=< ;!:f::B;"AEIpMRXWQ\vafjnqsuEvwwDvvvuvuSt;s rrqqDpronm;kifdRa^mnno~op*poppqYrrErqqpom>jgd`]XTPKJFC@%={;9754v34334457: =AFKQBV\arf7knrsuvwFwvvu2sr-olhd`\&W-R LGC/>;97A5`43334580:>FBFKQoW\bSg%knr suv@vvLv.uuu&t rrCqqZppo)mlfji$gpepc]lmFnnoUoooopqr0rIrqqpoGlJieb=]YTOJEA=;9864c20//A/N.../Z/137/:?E7KmQsW]cimr%t|vwux)wwwvXtsqnie`[UOIsCc>b96V20.-- -Y-X.1/&1?396:V?DJPWA]c!hlgp$rRtu_uuuzuutsrlqqq8pp5oln{mRlEk(jhgllmn'no#ojovopqr/r1rqqpnjgc_CZeUPJE@=97l420/a--3,,,+++,-S.149>DKQX_fhkpsvUw=xwxwfvu^t@qnjfa\nUNGA;63:/_,*X)y()^)w*+*,z-038=CIPW8]Vcfhlogr:sttttt%srqqppp onmlkjjiShllClmImn#nnop&q2qqqq.q9omMie8`k[|UPKD?:7430/#-w,q++***))?)9()*],.3*7=D1KS2Zb2h2nquHvwx xPwvuOtq~njj%fa\TMF>830A,R)'/&I%&4&]&'x()W+x-2_69}5N3&0/.,++>***q*D))Q((( (#([)+L.28>FMU]djoFsYu0wwdww'vOtsp}mhiSeaM[TME>T822/;+;(&=%k$%E%l%&6&'6(*u.175rHsrs7rr pp@ooo4nmkl#kj5ii`ihl`lFlqlNlOllm mnp'ppq;ppn#jd_Y3RLE}??8s3/.- ,N+Y**B*))))p)(('&&&E''*C-3a9SAHQ!Y@`|gmqsv6vwMvusr|olhea[TM6Eu=7;1}-)U&$$#$$%$n$%%%')-16FMU]djxonqst4tttYs@rmpnkie`YRJC;5 /)&O#h""P"""""""#S$&)-16=ODNKS0Y_dhknp qfq~qpp o_o@nn+lk(ihhhMhbhko9nmm6llslm?nZopqFqWqpok(f)^WeOH%AX:@4o.w+T)W))*0*5)))g)@)E)S)_)N)5)2)4))!)A*@+-06;AhGNV] d:inoqr5rssrrHqipNnYmie^X1PVHA93- ($#"#=#C#M# ""a"~"#$'1)-28 >F4MTgZ`eVilnppq(pp oZo?nnWm kqjihhhhp o-nMmvmlslmPnxop9ppq'omhcf[TL-D>F7k2 ,*(d() )))S) ((()()m))***+g+-\.1X49W=CNI&OV\cfhlmoroppqpqOq[q@p_pmj)c]~UNMF?P81&+'&$$$$$9#""|"G"#$&<)-28@HCOV\bXfk mopGppp2ooxo@nml jiini7ieiponmmlXlumn$no5ooXoljme7_WP4HlA':4/+('k''(d(e(3(( ( (W()J)*\+4,P-=.v/13t6_9=AFKQW\beijllmnnoopqqr p?mgaZSyLD=690+)''l'&&/%Q$N###1"#$'{**/A4kk#k;qonmllllmnn n^mljga[SLDO=70,(&%&&R&' '')'F'L'( ()*,#-/W125j7:>$AE`IN3S>X\9`beog hijklmo&pqrGsCr pke^WPjI`Br:4/T,*)Y(z( 'a&%$$##I##%',H1e8@/H*OV]cimeprqUrrrtqqqqpon5mkmBmmmqonmll kl_m mWmmljgQc^WPH1@9-3X-)&X%$$m$%[%&&g&&''()+ -/y136r9$82i/,#*))(R'&%%$$3$7$L%'*/]6o=EMoT\"bfimq/rUssssslsUsnrqpDoono-ooq onmm3lBklym ll8l jhd`ZT,LSDp<50*'k$i#z"#)#v$$%1%&&L&'[(){+f-1$36:-=AaDHxKO[RUX[*\]^n_Q`jac3dg(iOknps"stsr0nib[T}MG@;5-1P.,+N*)('&%%$$$[%K%)4-V4A;6CKK%RZaa'humqrttu tttttsbrq`qJqpppp o5nlmmlmHmmLl1kjgcj^X|QIB :3~.(&!#""J"##$7$%W%&&'A()+.259=BF IMQ^TWZf\%]]]]]^r_`zbdgJjn pstausrEnij!c}\fTNHA<62/{. ,+*q).'&&%$$$#$%.(+29pAITQX_gjlqJrtuuYu utukuZtOs rrrcrRr9qp?oonmmnPnmlskig$b>]NVOG?81,V'r%"""E"##$1$%<%%&'1(),048=AFKROjSWhZ\^_` _"^$]5\\\^"_abehmp`sAttsrsnjd=]BUNIC'>8q4c1/g-,+_)(+&%%/$`$#$$G&*H07??_GPOWW&^dfJlprttu^u1ttuutssossvspscq;pp$ooanno_oknml6jg/b\VNG(?s8Y1,+'$""""##$7$%%7%r&&(/),0P5C9>CI'N RdWZ]_CaDaam_^3\[\\\]_bfk2nqrQsqqmic4\xU3NHB>841/.:- +V)}'&+$$#:""#.#h%(.5(=TEcMU\djorstAtttgt^u#uut#st/t?tUteqvpppZp%oop3po4mhlqjga\UN^F>70+&$`"""u""#<#$N$$$%l%'h(,&/59: ?xDJNOZSX\ ^`bbKbaa_k]I[ZZZ[9[]`Md^hl`oGpponkga[,T"MHB> 9R52:0&.`,+ (&%d##"1!!"4"r$'\,3;LCqKS[Ec^inqVsnst`t[tt!uuuittuAu|uuqqNqpppSppgp'o8mulzj-gPb9\VNG8?81g+&$+"d"p!!""b"#M###$8$%'P*w.!348=eBHAM]QVZ=]t_.aca`^\["Z9Z`Zi['[]7_c3gIjm^mnUlkhe^XsQKRF@<|841H/-,+)'%$ "!! !W!#&<+1t9AJRYahmpRrrsssstuuju uQuvSvvrqqoq?q ppXptpomYl_j+gwb]`VuOrG@F9*1,)&#!!!'!!!`!""P"j"s"#$;%({+05^:@9EK'OTX\H^]`a`]^+\][&ZYZZ[\]_c8fjlxllkifYbz\pUOHC>:Q6 2/-d+u)'%#"!Q ' )  !#%2*4/7?H,P+W_fkl[oWqr4ss8s$sOtXuPuWu(uvWvwowrHqqqrq*ppoo{n{ll#j5gc8^CWqPIA:J2,&#}!8! d S ? ! !A!_!W!!"#&p)t-27+7 20-*+8)c'%$!"Q!4ft $ "$)G.6>NFNuU^djnpq rr:r>r}stttu uvwIwrurqqq`poonmlkjPh?c_XTQJ!B;k3-'1#   ' ` !!"$'+/4:!@7FKQ&UZz]`ab`__6^_f_`m`b]dOfik?lYkkai+fb%]VoOHB=`730 -+E)'&5$V" r&5nI!#()-}57\DNJPUAZM]ac]d+c]bb`bqbcDcd/eDfhjklBk"jh,eN`ZZS_LE?:51-+*(&%8#]!V g!#e',4<^DrKSZaegkLmnopoop6q6r(rUrrst(u vwrErqqqVptoXnmllkjiea[ TLE> 6M/a(%# ot  A !b#%(y+0}6!kklmQmmmm0l|kvhfb~]WzQBJD9>d84=/,*r)c(%&%o#"2  \>h ]"$(.I5=DKRYU_te9h]jk;l lBlplmnnoCpKqrstpppGoomlXk`jj^jJjjjhRek_Z$RK0C:3V+I%!FpC!#0' +29@G6M~SY`dUghijklmnooonnmfkhe`["T[MG<@;152.+)('&%j$"! Go /!+#~%*m/7\>ELRZ#`ebh*jkjkkl'lmRn!n`noqGr0rsp=ooanml]jiiiiSjjjhfa\zU-MER=25x-H'8"*[wtXr[F,M~N!X$)C/6=DK9QX^c{gikhlMmmnp$q_r=rCr]qqEoumTiQec_Y(QJD*=8T3H/,/*$(v''&n%u$O#."2!L x"y !$L&+1x8@G"MS[`ehj9jkskklVm mmnlopqrZs1nnymmtljihhhh)hijkkih(c_bXxQ$H@80*O$!{r.o&FF.!3$^( .4R;{BQHOU\.afeiOkm@noqrsst5ss!pn_id^VO&GA":x5F0W-!)(/&&&4%%=$V#m"! +Q!R"o%'(-Q3V:BIOU\b/fhjk+kkllZlmmn o)pkqqrXm7m#ll,2Q9D?FM"SNY_e#iln^pq!rtUu^u`uttsqdni%cl[T$L4D=7 1- *0'V&4%O%_%U%5$$ #H"s! V   {!#%)6.5:$$;#$$1$/##="!!S ` ;  v "q#&*07Q?F>M+TZ-`eiFjwl lRl\kkllhlllmno6oipeggmh)h@gg$fgmghik~mDmmkohcq]dUcME=6/s*6%p" A# c"!@"_$S&[*.39'?WE+K4QW^cgkmoqst?t srNq;nj2c\T?L8D=460+/&$""X"$""#""a!!! ^ !A"$K',29}A,HlO\Vk\c-ggjkYllllll,lElelNlmnnMnno5` ac7def8fAfgch"iNjlnoomlg!aZCRJC1;4t.)*%"!}Rr~n H!j"n$%(N+L/4:D?EsKQW];bFf ilPnp]qqq~onjfj_OXOG@p9;3 ,(/$"U !8!!!!!]!- !!#V%) -4;CJdQ^X^dh|kCkmm(ll5l0lSl.kkklkllllZ\^abc(dee efh&ijlnp&qjpfojf&_)X8PjHAH9_2,($" |w032 !L"$#]$h&H(2+/49?EHKYQ{W\{`e"hPkm}oLoRoAmWkgb[eSKCmGllDl[ll4kkk|kkk5jjRVTYn\_b cdfch ikOlopr1qpmaioc,\UN_F>71S,(%:"O W}b t !P!"#$%(v+r/4P9>D:IOUY^bNfWhknkkihEc^WbP H@-82,s&a"d-3Z !!&! !"N$&+07>FNMT[afi\klQmHmGllWlwlpkjj?ihhfedKLOTX\p_b(dMfh ikmSo]qrrrol]faEZ_SL{D=B6*0+'$T"0 2%S z! !c!" "#'#$& '+=.38T=zBH>MSX\a°hBhfd`[MSLuD<5/&)$ f TQ f V !"%(H-S29@HGOV]bgiklmmm9llltk~ihg6eca`(^C&HNSX]\`cehj lmotprrrpAmi*d]^4X]QJC_<5630,(H%}"! t j N !>!"3"t""#h$ $l%W&B(+D/M3+7<4A7FbKQV [4^bcdLbQ`\*VOH_@9H2,'"`^d*qc >   !~# $v'*095=#DKYRYC_dhj{lvmmmmTllkj geWb_\ZWU:AH1O U([+_~cMehnjrlcmouprKrrpnkOgRa\VP^IBh;51P,)J%#",!!>!!"<"""##;##$$&T'*.25:o?DTIOUcY]d^|_\]j[WQJCl<25/+)w%_!^H!Ir!+"H$M&)-h3F9s@GNU\ bDf]ikAlmimm{m0lkljhlea^0Z5V#RXNK2: AIPW]Wb#ehRjulmoTpIqrrpoGlviRd`VZUOI-B<72/ +#(~&$###c###$.$A$*$0$c$%J&!&(*.148=COIkOT WY ZXVYQLgEK>c71+&# qCTgZt "$7&(,1e7>HE~LaRY_^eh}kYlFmmmmlkjh`\WRMID@)2(:CLTrZ`duhFjln>o_pq8qqpomksgd_lZUOIC>1840-f*A(P&%%%$%%H%_%0$$$$%f%&L'c)+.16<B}HMR$S_T|RPLRG@#9Z2,({$w"0\)#:_37 w!$&(+0&5W<=C/JLPW]xbgjlmOn#mmllBjidfb"\WQKE@;&6"k*3#A,6?IR Y_dhWkmoJopq q.ppDoOntljzgEd(`>\sWRLG)B4=:641@/d--,,,,,X+*)((V'&&:&\&(*.3:*@EJL1MLJF$A:_3-(%#! n[e5(#%  "#;%'*,04:@GN}TZ_e8i9lnookobnfmVkzj0gHc]X PIB:=3 ,6&!%& .8BsKzT"Z`eil-n[op6pppp\ooWn6ljbgdyao]Y?TNIoD@=;08d6G4,3>2322210.-,+*))<(*h,50[5:AEJlLMKJFMAi:4/#*='h$#"T!} @ & 1 !z"#%'>)+/2O6;AGN.TRY_udhl$opppNon>lj#gc^WQDImAj9*0)"o <'1;UDN@U\agj~mjnop>}>>f=<;::"976O444,5H6g9fFOU\afilmo4opJpTppqEponjmBkj=;}9O764210(/i./0L2469;>dAEZINRW\`diClpormt%tyu(tcsppmid^pWjNE/@NBEILQU(Yl]aehlprsuu!ut;rnkxf*`YRQ GC=4|*! y/ r"N*b2:BIQzW]aeh?klnoop]pqpppponljmgepcA`^}\q[|Z[ZZuYXX8WW VnUUSTTTV;WY[]_a6bbbaD_]>ZWU R8OCLJHFE CSA?>>c?B@4BCEGJxM5z,o" 5 \{) (1&8@fHgOV[`cgj;lncoppqqqqq$po_mkj h\fcdbaa!a@aHa`[_}^^^0]]]6\]]^`$ac+dfg?hihhTfec|a_]["XTUSKQcOVM`KSIGzFFFGIKM/O`R-U XH[^adxgi}lnVpqrrrqpm2id`YR~I?6,$a9 H H" ] Km '.6I=E7LRXm\p`cgjllnnopZpp#oo)nlkjXigfIe_dddddRcc$bbcbbbc-ce f6g^hWi7jJk(ll/kjihRg5-c$F- Byy~O x $,13;:mB+I3OTY\aSehg7!/(q"lo ^{gWsc/ 1  &-O4:c?FCeG KPZTzWIY[P]@^`bbc.cdeddd_defmgg@ff_Sa/bWc}ddoddddddeDeffefffffxfdedb`][Y+WtTPJD>:25j/)"dV ^ UC5BA*!Z] ! e Oc$(+.`1i5 9=@wACaDFHKEM.NOPQEQQQQPPO~NMcKJZHGyF@E DBB AtABDEGIL]NQvTgWY[I]^4_C_`~`aa:a}ab8bcAcdEd3cbb `Z^Q[yXUSQNJE*>94/*$T f R{ ~bS !{^sJ ;"%='m)-15D7v9:;w=??bAdBD EvFQFFF+E4D~CCFBrAR?>=;<;98776779:<>A#CFGIWLANPRT[UVWX7XXY@YZ=Z[\i]\\&ZvXVSPN KuIeFC|>83.*&G!nj h ")M`||L-H]JBSx +S$ "%}(+.t0124d57X8:;;<<;A+CEGIK4LaMNbOOPkQpRSrTzTUT-RPNLFIG'DA? ;772,-f(%-! Ga  rTI(+66d[=o q  :Jb #&()!*e+i,_-m.012 271/0.V,+w)(+&%2#"!!$ I  x!6"$<&9(*R,/Z2G57_9I;`=%>@ ABCwDbEFHUIGJ#JIHuFDB@><:Z7 3F.*&# p+3  <$*Z =J8R@$;#>O\\ `3< Y0' !"M"#$^%h&&&9%$A"!;SRwsDdf "%(d*,/J1]3F468 9`:<==>d>?'>>0=;:86522.*&t"W> CA.k/.G]8 ,2AZ'iH,aweQu|r+( Z , 8B4<a? PV ~   { \Q "Z$&)*,./x0123C3@3222r11/.-*'z#wHJ9 f@ifEu]S,>]j`<.ygR7""DC U Nt1 <X= m 2h Sm? 1 +< "#$%&Y&'<'[''''}' %$v" AWb u ~0<Jiz's-@] O?%7q_rcM|%V@o3-ID P U  O :7n+w#hB _)W5$R(h3 ~7bv?p 3B2k`2%6x7 t]T7~bf7qX(BVr[OAa3_JsO $ Rj[5 Op,G 5 /+[*&vc=?p?ZroL:/ZR!o46^>M^n%kQo*6#!tLu]A1   z & s j  +  cfdRa>S kX%im"d\mVQALaw3 8l)3q6aw"9 8_lH7.Xp j_e_EoHBQf$*o\$g~Efry_]qGXYUTptP!1#tI-l3 l.[lhwpvz`=0;ODHk,zVT7 J|K1d-$TPN<5:X+ 6kSv|~yP:S.HZ`atwh7-# KwcFM&Y[^DsB}v|qrsXB=3 0Yp4}Lk6*d$/J<H/$;k|q5~jKHj 9ThnqfcI " 3ad/{R [7 #Pisfiyd7 *X9DgG{^=q\Vi1L]cZOLfe/ */";mb7;s (YHf0+?nv^\i~}b8)Db}[cUY3dvmBbKMgy|sC\_XF57[jE /-";ROTM$Ob {mubP[vu^PN_mWy @]dM=&bPLZdfb4KT\S=0DXY9#@A)+NY^ob+#XWX xt]OK@FRy1 m2IP>1 tfZ]eh_+=YcV@9A[[+ <[B9\qgYm~a0!I_ +y r\[`NEIn%9%32(! qbedP)E\h_G:ThW+EXG)0Xjovy[:2PT.[8LL64,{cdqio(6m|e` +64$& bUH',Cbm_HISaSRhD7f}rL:Inp=WWtnHB<)rr~|wy||{x|wv:MmiO73\>A. Z>( )E_rjO7FT@0]^A)(Ck|}xfVMWpoL/-qJ[QD* zwwuxV# *Vo`A4E`* P- 5btO! 9NM( 9^jS5.Grump~mTIUqe91N`x\XF* {uz|m4 !Ffwd46xy'i>!  .L@$(8A8($A[]O>En~q_MOc{z_TZ;`Y`Q:}~iepywX7.=YheYD$'R    cB+ #  ).+"8H8""7Qd_\synmocZZdmv{ 5CWUL3 wnvqbbp}xfdjxiC*+3Sz()V7,  )  ",,5MC/&1Jdkkq}smpidejkq} &DOSB0w{|vu~k^[gu}~kJ2+@Us "j8 #&5-$1AE@::@Qhxztqx}rlgiqvnhm/CPD4{jcY[gruiVB16Eas yk`U>#  ",%*-8?B?<:3Aerw{qc_iuohhu*@MB3~odjltm[PKQS^jV9+#8."09=???>3;\ugkuwcW^lmjis +=F9*y{~trqjkljYU`vJ, " 94fA&RFqycRi= HPoDP,& < ~ <   ' -   P   N S 9 .nL8=byAVKbbs) IMaHp4V^gZ_y6,- x  n - b   0 Q b J #  ! + . ( 3 R z  8 K Y n ' u C >2>Jt>kny x+ ^K(JSO? ]-rr Y Z V *  Z %    ' : 9 2 p k g . N l    ' ! & 3 < X z X ] # }T;9'  ?[;KyvHIkIOc,aK  y . s < *   _ >    + 3 6 @ 9 * I  4 t  F ` { q < z i     ) 4 5 |6-&qn\T1G*&Y&q^  @ > g , { {   X 4    $ L w % C W ` y } T ! J ' 6 N p z a I ? F ? X  h 1 P  b3&EB?+Mg1vYz[GM`N0  @ l  f 4 M } $ u 4   8 t m V :   0 G L N ` y Q   % + - ( % ( . 9 6 L }  *   X ;  qNKhsDz ZZPgTys-l A ' ] 7  / a v 8 Z J 8 /  K {V0%$8K]`j s  G 9    + 8 I ^ m x `   !WS\5+Lt2z*Yd(lbwd k 8 + @ 0 @  N a H Y |>~t\_b47bOJmbGIMi / u T  W bZ `.z_a=<EW n  u l v h  U + $ 9 Y =] 56OxW oB{wn^E7/Ed ddT\0 J< ! 8 T n f  E h  m E o_{ w z ~ P I  ^ N n n 09xb2$>Vjmo^^,Sq9FTr}]?+*CgP.`0J~~ReB)< , C  d A ) a&5 E 5 J , i v N s 6 s 9^# [*fLa/c:eH@[ukNEIDGQamt||mox!BUAcN %  2 X ) Y f P 3 G  i  R 0 |z ~ j h u Z = < ? ]  ^ 6 2   (Zl*^p1R$Cr3 .AIK7   E2t R{O [_3  d w   N D ? H `  H    $ ! c1I2KV2{iwUWSb %d/ 2LlY8Y,ybD_T6    o 9 J _ X C A f p ? ) D q q X&e.71w_ u/1kMduT~lBvE& ChuZvC4.EK[ z.a eN.h U  n$b$$\vmF6He<)+dZV  ]*sUMTX<$#A]I|YRfQFbb_;q@ b z4 0 z d 4}BS=/"/+r7tO?:(g =hqN4x Go|Id/S1 /\5Z(5U<d r[O6ZYq^oWMnRwvL j:% :0jlKBdIr sipA! 2FHC1/:Pvdhsm]j.[@[:dzP1kZr<dvI-^'FF8KCw8]F z ( q g"  V = Y ] m  0 ^ } C  a c - u} F;z |Pq$>x$#Mx.j|S>C}zKwnV{?|HY&0Ax}kc, 0 brTv"4P.}%Imyrb9NQRz- 3 Z m n pgcz os pL+x&:{R^s>>X(t%^6\.y+  KR^{L0 5 Z ! !Z!"a"###""""^"+!!!E E3UX_Wy : D # E ) ^aYjMrQ1VF.(ozg^S E k ?=* !"%-'M))*b**+l,,,--%-B-p------,,T, +++E****/)) (L'&& %+$#"3!!S! YC?:@< ,  (;Q;D ow@N<s'K . u Ffn: "%r'X(*+.X0345 55678~9K9::3:999~9288:77.666E655555C443H211/.-,,6+++|+*})(',%#! Cgw\n9 "18i=<[PgQntho^ ,c"|%)=,/>1$247A9;?@7@AfBDCQDlE8EEEEEIE DDDOCCCSC*CBBBBBBBKAA @5?>=`@CE|=x<;;: 87l5320^.-a,P++*)z&# bvs R[JJKAa| I "c%S(,.14Y7K:q=@CrF*HzJLNPRZSTUmVVWXYZ[z[[\#\h\] ]F]]]]K]*\\M[[][#ZZZfYYDXX=';98<654430-)%"hpT .h d"q{ 1Wc/L\0 t$ 'a*}-04`7:=@CFILfO!RTFV WRXY[K\p]K]^^__`abcdde-efFfg gYgUg>ffee d"cfbbmbaaJ``/``_^]\[ZZ.Y`X}WUSQPHNMLmKcJ7HGFE:CA@>=p<:8*4J0B,(%8!j   huV- ,bP!&*--15<8<2?C)FJM4PRUTXBZ]_`aQb,cd de5ePehefvghijk[llmrmnsnnnnn\nm^lSkjimhhdggffffffqedd:cc+bba _^`\[Z:62.*&i!38R[ |F&$E" "$(l,`048<@@CG J~MQTWY\F^acfg,ggh}iiiiihi6ibijkHl%m mno!op2pppqq'q q puornml8kkjj/iiijEjj^jiihhjh(ggQfeedMc}ba`f_-]\[ZWXWV(TRQWO!LIeEA=9Q5(1,($!ptp oLVM61(.y,+!+-+]-k/3V7O;@CGK_NQUY\_;awc;e]gikm/mnnnnnnn(mmAlllmJmn\oop=pq@qrrTrs2sst2srqfp?o\nnmmXlmmnInoonnnCnmmmOllIkkhjjuiihfedcba`1^]0[YW;TPMID@:;730 ,)~&# MQ ia)<:986669;1>BgFJNuRUX/[>^adfh-i{kLmnopmpqqq8pp|oonbmm:mmLmsmn&noopppqr@sstuttrqpooonnnopvqsFssrrtqq|pp8oo nmml?k j:hgd}a^\YrVSOKIG+B<6/)g"w ~`m_{_R_M_`abpdf,hjZkmpo#quuvvMvvvgv uuuWttlssJr|qpVnml{kk&kjk^]^_L`bdgikln%odpr!stuuuuuutssrDqq pp@oo71,rrbrs9scsgsKsAsWsRstgutvwVwwxwwNv\utsrqomkj_hfdb_][Z-Y,WWWXY[^`cfZhklnmp,qsbtuuvPv?vKuutt1smrqqXpoo)n`mqlkOjhVfdb`_.]\X[[j\4]!^`bdfi_l nprSsrtuvvvvuu tss qqCp0nljgd_[U7O|IYB<70qr,rrss$sss sstQuLvvvvw vutsrqon kifdWb&_]ZXeVNTS/R(PPPRSfUWZ^;adgjiknMpcrhstutuvv=uuut_srqponwm0kjig0eRc>a5_\ZXVU)TbSTxUXZ`]_@BF`J8OSX]:affjnq|tuQvwwwJwvus>qo)lfheb^[XTpPvLIGECA@.>>o=>?BEJNRW$\5afkanqsv&wuxxxPwwwJvutss,rrwqq8p nljh'eb`_#nop@ppqqppq@qrrrrsrqomcj[gjc`e\XXSO]KH.EB@><:9]77655679`;H>BxGLRW[\b(g&l#os)tvwx5wwvupsqokgd_[WSOK&GOCA]?=I;@98z878g9\;>BFKPV'\ afk!o$qtvixxUxTwww6vvtssDsrr>qponmlki+fdnnop(pappppq-qrorrr3rqpmkHgdE`)\,WRMI,EsA?d<:8H6X43/10//m/5/0l2377:@E>K4QWK]cinr#tvwxx.wvusrCogl'gc^ZUOKF A=;8k6|4K211Q01247C; >D;IOV\TbPg8los uw8wx*wwHvvutsrrrr;qq"p|onmlikimHnnolopp)p"pQpqr-r>r!qqpo%khd`[WRMGC-?<}:'753?10/--,++6++-$.1|49>7D#J,QX>_ejorvwSx]xwvutrzolZgc^YiSMH6B=9631v/-,,y,(,-/158h=TBgHOU[avfkMorMuv%wvvuuu-trr4qqqbppNonn,mll0kxlm6mnwnooSoPopIqqqqbppozmBiQea\`W"R1LFAe<964y2"0E.[-,+**))i((i(g(:(),>.3 7%952'/- *)s(v((V) )+-/27;AHIOU[afkoLrtOuuuuYu6tsrqq:pppJonnJmmzmFmll$lm.m{mnnBn9n|oYpEpppp onkJfbh]#WQLtF@;=64p10G.j-++**G)))(( ''H'}')h+.u17B=(DLT\cinLsuwwwvuUs*q+njea\WEQJaC<7l2/,*(c'R&&&'<')0*B,V.2Q6[;AH%NT[ja;fk.o>qstu tttBs|rnq|pppQonnmZlll}ll}kl lZlllm2mmknfoup op$oo+lid\_OY>SLF@:.5&1D/-,z+@*))x)/)((y(''-&&1%%&'K),17d?8G+OW_&frlqtw`wwv\u$rpmrieCa[VjOHA:5$0,)r'%$${$$%%&m'((*\-06;;AGNU\b]gOlo rsEtHt3tnt s{rqpppBonmll,lllSlwlll ll-lMl}ljlmnooponnlh]bm\UOHiA<5t0-,+^**<)))Y)(((E''l'&&I%%w%&(*X/H4OLV<] bhkogqPrsQsssYrqpppbonmilikk}kxkklll>lkklllmnooponkpgR`Z*RKD=81-**)))))K)(((x(''7&&v%%$%%&(-2:BAIR:ZEbiohruuvttrhpn8kgdg_ZSLE>^71- (O%#"z" "a"["_"C"l"#}$=&$(,+/4:A{HPWc]chloq_rrrrrOqlppfp2onUlkjjjjk3mmelldl,klllmnopponhjae^WPHB;(5e/H+))))))I(((((i(*''l'&&y&B%&A&l(D*\.3:AIQYjadgmps_srssrqmpznmjPgc_XRJCq<50O*'$#"""["S"Q" !!"B"$%X(#+/4;MBOIQXI^cilXo_pqqr:qq*pZp7po{nPlk~j{jAj3jjnn!m?ll(kkklmknToAop7nmPhc\U0M7E?,8>2,)'(F(X(((?('''( ''''r'Y'3'*&'\')+0 4;'AIbPX__ektnTpppp@oooJnmlNjg{c]W@OHAo:B4-)Z%$/##C#;#2""D!!!"^"$&*.5);CKRZ_eimfo5ppqqgppoooMn9lkgjnj;j)jjonmllEkkklYlmon;n{nmckTfia6YRFJUB%!$##-""N""#%(&+]07&>FNnU\ bmgkn.ppoqJqZq prpWp.oo mlvkkkckkpownmlXkkrkkl0l{mm2mxki7c^aVOG?9*2-,("& $l$$%4%C%Q%%&&b&'d'(U))*+H+,m-d/159?$DKIQW'\w`xdgi%ij{jkll8mGn'nnomIke`%XQJkCz<50h+[('0'&&_%%$8##""#!#&,(-3:B8J!QX_tdjLmrophqqqqSqQq>q(poPnmgmAm m mqZpnmlkkkkkkl6ll j gNa[T*L]Dv= 6/*g%$5"# #!##$F$%2%x%&i'7'(*.+-.".01q36T:> CH9MRW@[R^UacefghjkmnZogopnlh4b[,T LFS@9:3.+")((.''&X%u$$2##{##%'+08?DG*NV]Gc3iImopr rqrrnrrrrUqKp#oooo+nnqpohnDmwll?l;lTkkkkGk*he_YQJB7:4i-g(t$H"!!!"~"#m$ $%%&N'G()p+D-x/m12458[;.?C$GL6PlTWZ\_`ac df|hjm"opqqpwoje_]VOgHB<6d0-;**))\('&%%;$$'##$&.*.5lroprZrsSsGspstsrqqKq4pppSr8q*ponNmm*m.m%lkkk"jhne ^XhPHA,93,'#"!!!"V"#G#$o$%&N'd(Q*,T/.14<6[8t:=o@DIMPTWY.[\P]^e^_aZcf`i_lnqqrEpokafd_WPWIC=8(2q.,,\+*)('&%%2$b$#$l%4(,3:BJ{R-Y`egAkoNpr:rs^slsstptsrrXrZr+qqrXquponnRnnmm*l$kk-jh1d]WeOG@C82+'#"!"?"4""#g#$?$%{&8'(*-1247:}="?BFJNRaUWYZ[p[\\d\A\]`cgXk.n!pqKr(qplgR` XQJD>94T0..*-g,+y*('K&!%@$9####'+18v@xHnP`X0_ fCknpAqrxss?sUstjtt?sSs&sDs)rrrqbpoomnnnnmlqlkLjh+dV]W OAG@82v+v&##T""""#7###$K%%'(}+ .'259=@*COFJNRUYZ[[[[j[r[[ [k\^aaJe=iDl\noypeoenjf,_$X-Q JeD>:(51//.E-b,*J('+%$#""D"#%)o/6{>FNV]ej"n*oq7qrcrrrstt4ssssssqq;pp,ooHoo"nmlokjjgc]VkNG"?82+&##_""""##d#o##$c$&J'*.2L6:>B1EIMQUXd[S\{\\[9Z}Z9ZFYZZU\c_cgj?lm=nml]hdi]VPIDK>:d520/.-,V*h(&%i$6""T!" "#$'.-4cP\V!NGF?81*%""!"!!""L"G"9"."v"#$'+/38=;AFJ^NSWIZb]^^]a\z[[\\#\]^`cg:ikqkFk3ifgd_|XRIKE@;7f3,0.^-`,=+ )x'%$#5"Y!|!3 !G!y#&j+19~AIQX`uf&kmDo]ppqaqr sZtttu uvvnvqq,pppioonnymPkk`jj$gnc]VOFH@9;2M*%""e!!!!!!!!!!!"#&5)/-16v;U@XE-INS9W[D^``~_^^^_1_g_`bcfimkIl}kk/hfbB]AVOIC>840.?,-+ )('6%$"!! X !T#&!+c08@HPW_.djlnopwpq qs t1t[t2tufuvmvqqcq-qpoonn$lkkTjjIgc]W}P#HA92*%""Y!!!n!~!w!r!o!h!@!K!C""%'+/49?]DIO SX\`gbbbaaeabObccedf_hk&lmmkjhKe`[T MFz@W;K62.n,]*)~(6&%o#"n!F 5Fil 8 # %*0T8?HAOV^Xd(iXknGnop9pq:rssst tuvCvqqqZq@ponn(mltkpk.jjhd^XQJXB;3+&R""=!:!sEt uuqqyq:q pUo-mmlxkZjjjji!faF[TDKPW\Dadg2ghPhijkllzlllm:lkhfWb]WQlJD1>J8`3/,,b)('&~%#" MDx k#&+k1<8@HOVx]c&giklrmmYmn=oYpSppqlrstxuWqyqvq&pp nm_lwkjjjO1. !#&,119cAHOV(]5bg ikkl=lylmxnoooprsttq)q)ppho}n0lkk*jiij[jigce^WZP(G?7.(V" D,%88&(Y "%*z1a7>ELRX_dgiAjkkln%opq,ppoo5mdk4gBcZ]X Q5JAC=72/9+)(' & %#"{!4 H{9% !$'-M2:JAI:P,Ve]IbqfhjkOkl lomnnoobpUqrs~tMqppgonml'k#jziwi&ij?kj(hd`\YxRZIA91*$$-!*/  #sMN b#'.5{m n^oqxrs3rrrqdo!lvgc\V&NG[@950#-*(q&&%%f$#"!h ST]!"]%R(.3;B[IPV]bfhjk;kkl3lmnjnnoq,r!rsooo]nnlkjj,i-x*(&%%<$$w#"!! M!K"%)/R5RF;MlTzZa3ehikIklkkllmmmfnsopq:r k)kllolPl kxjjgiitijklPl@iggb\$T?LD<5J-(@#[ ro JT P!J#%*07#>DKNQ9W~];c!gbk lnRoQqrsttrqnkep^VjNyF>8<1^,l'%###6#k###""W!!  t"d$B(X,3:@AIP(W`]scgVij[klWlBkk}kkl/l4lmnovppgThijkkk|kRjjSj9jkulmmkjeY_XUQIA<91+%"5tVV !#%f)L-4O:AGMjSYc_d:hbjlnpqrs7sBqpm-iFb[`RJC9;5.w)%#""!"a"###"x"!!0 | _ t #%%).5<~CK3R\Y_ehjklIllmkkSkUkMk{klln no!oaCcePgLhj[kk|kTk,kAklxmnoFmljhFc\wUMF2>6/)%"` KzB ?j; !#@$'+16=BH8NSY^c ehjmnppppo0miet^SVNF?o8 1+'X#v! !7!""!!!!T! !!$&+08>FM]T{[afiWk,knlllkkbkOkjjk9kllmm[^Xacflhjgkgkkll{mTnop{oynjf`qYRfKCr;33-&($t"1UpL |!["$&h)-2|8K=BHiMSX]`d719+($3!]x e !!x"]#9$&0(+/38/:51]-+(]&%$r#####}##$I$%&(M)+-037V:?;CIKNSUWHXdY3WUPMKD4=^60+&H#P L_[gE7 !!#?%b'4*C-~28&? ELShYh_diH^R"ZaUejflo^p]q7qJqqqcpwonRmjgd0`\cX=ShNHD @:<96a3u0.y,+*)((([(S''(#(()*+n,/2n6;A.GKP Q;ROMiHCR<6$0$*&#"!# KBrt># i!"%]( +.u2~6=CJQ7W\aHfj@m*mnnZn}mm8kkifbk]WPQ8JC=7j2F-N$.<7AL*U]FbhOkfnoqq qmqCpp*onn@lkh#eJa^ZUPKGD A =:75210.--2,,,++++++,-/.15:n?EJN9OqP\NKFA;4.)&$ # !!( ^ ? W !q#%("+9/2}7'>>?ACFJO"RUVDVTRNJ(D?;>734X1n/r-,F**8))`())'*%+- /25q8;@iEJPV\R`e*hl|o&qrwsrlrEqomjfeb [TL C:1S([kk *#R+c4>BGxOV]@bfiklmnMnnozp/qq6pp onqm9jh]ea^[oXUSPNLbJIzHHGG=GG@GhG,FFZFaFtG}HJMPTCVYCYYX VRbNkIE@=P:753240/... .".l/1)36I9y<?LBGL{R W]cbFfj mp>rsst9s}s qYofkhc^ V;:8;76/55+5I57h9 ;=@CyFJzOSX]bfjmprgsttbt,t sqo|lhd^WOF={4/*!VkA tjqo "*U3==L<<=c?,@CEXH9JN:QV*Z_cgwjmprtBtutt7rpm|jSed`|Y4Q$G>5+" . `!N)2:0AHOU[_tc eoh;jJl mUnopq-qeq(q:pp@nm~kj(hfdc=ba%`__^M]]]]^.^M^^^b^_E``ac!deg]hniiijgf^ca)^?[XVuTQeNLhJUH;FEEDKDEmG+HJLORNUhX\/_cg;jBm oq]rsssrqnlUhGd_Y+QHe>6-Q##*  '07>FKMSX]'`*cfi{kkm nJopqqqqKppomlkjdi(gff,f eee ddcde=eff+fCfg@h!hijikllmmmlkuigeca_a\YWTgR(ONELLZKL3MNPR'TWrZ\_bue\hjlo)pr*rrrHrpknWjgBb^VXQ.HC?*5-8% 6 TI`w @ &[-4;BNI_O,T.W[_Hc ehkjl7moMopoo6nmllkvjj=iFhhEhvhhhh0hhxi:jjWjgjjkl'lllm mn:no0oFnnHm]l~k5jh)f cC`q]ZXVRRORSU]VY[x^`abwdfhjlVmo|pNpp(on~mhjgvb^YTN0F=5E,%} Mtgq bC M!#{*n07o>E JOQSxW([_c eh%il+mnnrn4mtll\kkkBk jjjjkkSkBk)k,kl_m0mmn;nopop?pooppzpq`qqqqdq3pyon6lmig(dOa_2\[dYYYYZ~\T^`9bdfhijl0mCnoppion mkhd`1ZVEPKFC<3+$> [$7pO|A !&&,39b?DILQ%UZ]`beJg-iiiiji0hhhhhhiXiijj/j&jjjLjkkQkklRlmmmmmmn(noWoppq qaqponMlDj%ge[cQae`-^^^^_acAe fh0ijrkll%lm]nJnnm=kiQgudS`[NV PsKF?8w1**#N4d J22'zXO  "V'-4%:?BFK%P#TX[^*`bXceeIeeeeffgOh.iiiiiiJi(ihhhhihmhiEiiiiij-jklm.mnoppqpIonlji!gf3eCd>ccdeg#hijkHklilmLmmmlkfig1dMa_\WsQDKFJA;4 ,&w > } eD/" "(.4%8o< ?DiIINQT;UX*Z[]*^#^_>_`waKb=cIdpe%ee\ddBccKba``7_______``abdef2gi'jkpl&l kk jKi\hygffBeeefghijjWjfjjjjjihfdAzCJDaF HJ?LSNOQWRT=UUV\VVVKU=TGRQP/NM KJIIqHH7GGHeIK==F<<=8>@BbDGIJ*M6P:RUZVX0XY YoYZVZ[5[\>]^]_`aaa,_^]:[fXUROLIE@I:(4c/)*%  mi  J,RxYS "uQ4kxw : EzR!#'Q*.0^134n648:4@ABBA@?>=<;P987I6 5/4y33@22K224%57994..* %!T * |q*FqoL/CO<qjy Rb+eR!$'r)&*+-W/13?578M8(76l53q10/ -,)*)).((;'''V'(7)*-.1u469;>,?@AABBDEFmGIKMP:QlRPOMJHoF-CAq>m;962A-N($!} %   \[E? $29]t-ir5 X@94!"#%&(_*X+-[--,+1)3'c%#": qW._+ "f$2&q(+{-023:4D45C568T9;N=?"ACEFFECpA?<;D9>73/*&d" 15 = _ AJ5N >-&$[ A ]"8 B!F!"!x A>Dk@?R2@Glv;m-!#%z&(#()*+-/~1m3e5f792:;:98A6m421Q.+'#5Kg `5Jk@}1<V#dA&QdO@~eX 1l H ZRaB+x i H P ? Q(E6* !"$Z& ')+*,-./1/A.s-,h+L)h'p$? uYx K Km$vyNP#0~SfZ4&hVaVH3*@  [ o  `  ! P*&q|zZo1 l[?q&c !#1#$s##"% ;:Y  `wq\Bt -r-<{VK?);eqhp 5$@S8,5?r{MB99 #d$7W 9 : Q<k"CR   bK=p:H7m]3$5z<&x} {jMIIr6 fC0Mwgf-c#5 rTz& m 9#B7yh;9n?[pjM:.XU%A/ `!Ns2l(-Po%+Rx(A^p/] l1V{F~ <[ n^(ih[W{h|WO?I`| *I2" @f6Thdbm+GeV$EUfpQ9*1\>ORtoJ02%E8vd"(lLfvc_qDSUOPszO.:_   v2FkL_~jqtoyW@60 ,h0 bpt457D PCG NOe4?pa ^CZ)BUYYrwb* )$$es& AkIu nuEZYsivkL5" BwV]9q6.o(@LHYA1 Eq~w?rRKl2NaflbY; $%%-3Rg"!x"Dx8TB3bybWYR]q kA* H-,P|g L_@n[Tf*DV]VQPc]( 16*'0:W]9I++,G)j94K~{[NZbwwV0"Btj^J\6f{rG#iRRi|w=SYTF=A^eA 97$$5OghkN5c`!ltrTGUf}ndlqTi I]fTD-r^Wbkmi0EOVN<2AQS8+HJ7)=^lr{f<;k_Q nivvgdd2[8GRG6  zj]_fg_(;RYN:/5SX% @_M-.Ilq^qrJ<[kp# sku'B} #6:*l^`]L'CYg\?.LdR$IaV<,Cfomt}kM?UW W9QQ83(~q9xrad/45$'#eVG( -Hhq[@CQ]M [uV)'Gh{}R8Irj.ZYxrK@5  tqxurtx}}tts%FswT0.]#C?/ !dF- *F^lcJ6BN;9hiM::KjpXN\uf;/tM_P<xqoqlp[ NkgL7>[+2V1/[mL 3HJ)Egp_F;Nwr\OXrxZ22PecY@ ~kelnxK8_te9!6r%$e?  )F=$%7C;-)5Pgk]FGmxhTP_u{r\V]?g`bO7s_]hnyg;(.HZ]WE(+T   `B/ " %-*!$=NE78JdrbWl~qsxjZRXaoy:IZUK3{osyl`bow|e`^gvt[:&+6V} "$\</%'  )( <TO>6A\uumqupunf_^^iz*BIM>-wv{uqpykeoxzwc@*(BXt  b5 !   -*(7HOKCBOex{|rolnomb_i+8D:.usuY?*/Dew tb[S7     %0<EOPIBARqyvlgjnfbfx (9E;.}x|||znSC>ISdqV6%  /'  2;@MSPG>Gbvms|n``hfgiw+:C7'{xw~|ydWV[b[[gqH-)&  0-`w>.OAmz^Hd@UQ  k8Q/+ < | :  ' - "   R   M S : / wH2 0]IX"IazZm( >CY>m>"Q[bUSyD0/ | x ~ j + ^   . N [ C   " , 0 ( 2 R v   = Q ^ t 6 C A/|ELt=z dw&{, WvC"FQL9h(p X W I  ` '    " 6 : 2 p i e - M l |   '  $ 5 D c T \  z [C:%' ;Y;LzvBGqCSe'jZ ~ + m 4 ! a B &  , 7 = ? 2 (  M  * l  E ` { y A w f   y / ? C:"pm^S/@#$Z,n\ L M  `  { |  ] 4   K u & E Z d ~ U } D # 5 P u j R D E : R  ( o ; W  )~Z6&FEA,Ok5vQxWASnY/ |  < v * s ? T  e )   : w q W =   3 J R U d x  H   . 5 : 7 5 4 4 9 3 J ~  $ $  ! d ?  mLGisD{$__I|eMy&|/k A ) j H # ; d x ; E 4 + -   H {[0#=N]dqr  E 8 #      & 2 C Z l ~ d   "TLV1)Mo1&T`&k\og f : , A 3 G * Z _ ? U H\bZ4!=gMJgdQUSf  c W  T [}Q]'pz^aALYg x  v k q `   V / ) ; Q +J @6KvZ oGtofI41Keag#T~a< E9  2 \ v j ( H ] ~  i Ds [%  w K I   M I x $9 ES7#7NelkX^1Qu9EbeB* 0@\{T9m5FxQ[4$C   7 ; x a A + m4+ < / G - b { ^  9 q Wk(O] R]/_;eL>Uy|ePDEHQU]lvxqahs!B O>V>/   > k # V a J 0 H  h  S 8 y v d c r Z = 5 7 b - x B 2  "j:8YVQ,Jt1  09:C7='oBiH el;  `  u   P E < C ] " @   ( !w<I.DNC '}c)]Wjb0"/Jf|&n7P }uU@i` 1v     l 8 L ` V B A i } b 0  9 i h *m2"i1(!j%L~s wR`rX|_5wG,:^xd+D31C@W>Va{M/f R o/}9#du[ia&7V_ W'z[[elYC8H^4oe!<bZN=QYmHw,<_z3 . { f 58F3&0#GHmA49,bi+w tpjzJm2cMFXr}qO1(L{u^%!7'T&dT<h PlW f[JmQdyme=rx b1}@}bIGF9jYPHIn/;;HwjYQJRcyj7a!sG,] )L.S*\ e$dVy>e|K-c)- ~4l7ou 8`o;\e z : - l  2) | U | Q d f { ! + 2  L Z spo6"VZ &U7n a>qlB<AP~rW)a9OsH  j z 6NV\t3*d!CA;O2 n6[sV } T6WX9j:J%{\,o!5wL^w<;UpL"YYif n Q3}?( B v ] H )  ^ !J!!!!!!k! /^|k*d6UBJJ  o [ * ?SDg~JWtGjH+L@,$gq,Vk5^Ts '] 8 t}Ad,!##%(T)*++;+8+f++++, ,N,},,,,S,++"**!)(((P($''D&%%G$$##s"!!( ^J%Cw|  } ^q2N3B   jE9#wk]  x Rn #.%j'),L/1{3456:67 78'8888888a877)66A55r44l33333B2110d// .T-\,|++h+\+Z+*p)('%$>"; !V[B+N! %y",8nA?_Xp Bs(-tO# +x"$'r),/6147:K<>@ A AB2BCjCDsDDDGD#CCCC]CBBBrB5AAM@@@@@g?>>=c<;:98j7R66T65t43210/[-+)(%&%e$<#"!} DSp E<-c2yeI i r))P  4v+!J#&(+P.0Z247:=@BEOG4I2JKL^y ( w  C!#&)^, .147:<2>bADGNJ%LNdPrR>T&U{VWWXKYYZTZZ[1[\\t\\\\\\\i[ZZ4YYYYLXWWVVgUUSRZQP&OuNMcKIH5FE{D)BA@>?)><;957<5k43D2)0-*&" } i%}9v}./\6EI"%(,/"2 47; >ZAUDF.H+JsMbPuSHUNVXY[M\]^^_h``abc4cd|e:efmfffffsfFedcbbaaaP`__O__ ^^f]\`[sZZIYXVU)S8QoONLK8J"I@HsGF@DB@>=;:0741 - )Z&B#, _ _ @ S p=  + LQcQ-"K%|(,/3'6:= @&CG9JMPRT@VY\B^v_`abdeeeff]gghijklXm?mnnnnn{nDn!mlk\j,i`hhhKgff[f9fVfaf eidccnc1bb `_~]\[YX&VUwTSRQ~ONLJ"HhFDBM?;730?,(% jX ^ e!o*('"%%P%)&(*-$0'3(6:[>ADGK8NRuUWY[^`YbdyefgighiixiiaiIi\ijkl{mmnFoopzpqqqq$q0qOppnmlldlkjj,iijj2jii3hh~hbh(gffRAEIYLOS_VZ]`9ace[gBhjwktldlm3m>mNm*mllJkklXlmnoTppqrrrssDstttLsrqkpoonnqmmmnVnnnnnsn6nmm|llNkk9jj.izhgfeedca`h^][YWLTQcNFJGC >:7340-*'% !]q \@>=a<;;=e?ACFIMPxSVY]J`cfghjsklmnnooooonnmllNllilmWmnoopwqqrrs stuLuKtssrqtqpp ooppqaqr/rqqqlqpyoonmmmim.llkkAjiihfed{c a_],Z4WvTsQNIEBM?Y;P7>3. (# dUT[SfRRRT(UlWYY'[u]`beAgjMlopqrstuu$tuu$u;ttDsErpqypqoTn m1llllm@mnopwqBqrtsstuvvvv@utssdrrrrrsstuvvvvQuu9tssroqquq&q*qPq}qqKq ppDooGnmlljigf5dWb`^S[WTRDOLIEA=R8_37-(C"? b^]]R\]2]^_p`bMd(f hiknp>rMstuvwswwwwwwhw&vluttsrwqEpnmmGmIm8mmnNnopSpq^qrqPppoto"no)opqzrrrrrrcrqqq,ppq"q|qrrXrs@stYttbtssssssgrrrqtpboJmkih\f=c_[VR2LoFU?880)H"llm7mmn'n@ndno!opWq[rtRuv^w wx^xxxxAwwwwvguu3tss qpopnmElllllm mnDnoopTpqrstxu uuuItOsErq"pUoknn0n2nxo+opHpppp>poobo nnQnnJnooQoppqrstKtttu!ulu{upu tt`srrNq,onlkTifoc^ZsU,OHA:37,0%*MoopMpqq4q-qAq{qr%rsuvwswxyyyynxxqxwwFvuu,tsrqp~nmYkjjiiiijjlBmvnopfqZrXsbtWuJuvvvuusrrq%peooToBoop1pDp oo|onwmm lIkk2kk*kl lmIn6oVprBstu!uv)vvw@w2wvvuou tOs'qponal"i~eb=]XR>KD=^6.(K"ppqkqr#r9r6rPrrs$stvPwxGxyMyyyyQxxw^vutsrqpokml#j/hKfyeDd@cc[cwcdehjkmoEprsjtuvwzwwwvvukjmhfdc]bIa``ac dfhjm\or+suvvwx8xxnww vv ultslrJqpo?m=i<;;j;@9'7/644I4568; ?"C{INTpZ)_e,inqtvx_xyTy(y(yy xwvvgv uutsrrOqpoLmlkmEmno1oop ppGpqqqrqrPqp^mkgrc_ZfUyPKFB?]=:9-7.58341/.--,F,J,L-.15:A?lELRZ$`glqytUwxxxxwwu&sokfb|]JWQLaGC(?<9@64310/Q../0258<[AFLRX^diLm[qLsvwxx"x5wxww0vEuu2tssrKqqpeonnnblSlmn nennoo1opppppponjgc_(YTOaID?<86v4M20/w-,+**)(((u)F* ,/038>E8LTZ[c.inrSuwRxxyx!wLu)ro0kGfTa\.VGOIDD>:7 451-/ ,+**Y**+-/z25:l?pEKQX4^&dhmzpsu+vwwPww>wvuutyssPrqqBppcp,op)pkklKllm!mLmUmn#noNoooonkgd_cZpTOI_Cq>^96p3c1/.q-,,G+S**))'((2''}'()+s/539 ?6FNV^edkYot'vXxzxyxw trOnjea![UO8HB<730-+))(''(E(*X+.+048>D=JQWd]chvlfpr>t{ucvuv/vuutyssMrqq3pxpooouopljjjk k83'/3-++*4)))):(((F''X'&&%% %z%(*05=EN'V^Ef lqtwx9xwMvrtOqn@jeae[UNG@:=4/,,(d&G$$2#####$t%&Y'y*-16t$p$b&L(-3E:BK2S[djptw wiwvvt9r@okgc^PXQJlCChloqrsst:tsrrfqponomlllmPnlEkajiiibi\ilj jklmnnxmjf`bYRKEL>Q71M-%*7))M)f)(((w(`(;(''6&&C%%V$$$$&).39:xAIR Yb$hnqttugttHsqomj`g3bb]6VOHaAH:4b/2)&#"!!!!!l!Q!O!" #W$(+ /5"<CJR1X_SdNixloqr-rzs!s rqqq"p[o,mlkkkl7lm{lGk%jZiiqi]ixjjklmsnn7mnie6^SWXOHBQ;+4.g*(&($'('''c'v''''g'&&@%%|%2$%*% &)-29@HPYW_fknqqrRqqqponlTj&fa[TvMF?/8M2m,v(%#"""v"\!!! !Z"$8&V*u.5T<CKS1Z-_eimro#ppqqqqpp;onm#kk/kjkTknmclk jiiijLjkLl;lnmElgc[TM F?8B2,(&k&l&#&N&%%&.&s&&&&&&&&W&>&&q&(8*j.3: @HPOV]]cbh jmZmnmn;npnnnnmslKi eW_SYQJC<60N+'&G$$$e$6##"Q!!4!\!r"$'a*06>FN6U[bfk?moTopqqpp_oonmplMkkkXkkpnQlkjjiij'jOjkl?mlje`Y9QJC kjjOj1jhjRjk;kl_ki(d9^W.OG@:2,'J$"""""##z$$x$%Q%&I&'~((()))+-161<-BfHNSX\`cvefhhj-kmnnnnmje_XKQ3JNC=7 1,*E(c(']&&L%$#""" "L"${&+%087j>FN'U6\xb^h.kn'nppq,qDqgqEqIponnQn7mmem!rp^nmNlkkRk,k6jjkSklGjhsc ]YUNFK?8X0+%#!!!!!"8"#k#$%%&T'6(M)p*k+#+,S,.40b49->DJ2ONSW[\^x`[bcJdfhj2lunoop7nlh2b[SLF$@494Z/ ,*)((P'&%$##t"""I#%)(-4<CKRZ`g'jmnppqlqqqr%qpoooonn&rq.onUmlllclBkkQ70&*s%#!"!!!"&"#(#$k$%&')G*,-./^/148=.BGLQTXGZ].^^__`Maxc}ehknppPpo+mi%c\yUMGAF;'6 0-++$*m))(&%$$;#b#"s#[$P(,n3e:\BPJ QY\_fjmnppqbqqr rorYqppppKooWs-qp\o+nummmwm3lPkklFljga[T LvD=6/i)%Q#"^"s"!!"4"c"#Z$$%&(*o,y.01G27247<`AF JORUdX/Y[\9\]N^A`cg3jmopDponQj"e]VeO HMB<72/y-X,,^+*)(X'%$##A"o"#o&*1g89@NH:PW^ejmnopIq qpqqrbrr qWqNqpqCpp^rqprobnn(mmmWlNkkklIjDg5aZSFKDN= 6K.)`%;$ """y"N"7"S"L""#$ %3&(*-/i1P2357:?RCHMQ]TVzXYZ[o[\\_bf jmo,otp"nmid]7VNHBs<8$3X0..(--,*)0'&`%4$#S"r"# %)0!6>GO#W]eim8n5oeopdppq(qrWrqqqqqq^rrqcpFoWnnmmplkjjjk@ie_YdQJC;5 -q(B$#"""a"'" "!""="#%$Q%(O*-)/23569SljfaZVS2L:E@;87&30/.--:, *{)'&J%%$#["y""%S(.5c=yEMU\dhlmnnokoopRqCrr)rrs,ssstq"pEornn;mllKkwj/i598!BH>MSGX\_`bbecSdddeNfhkanSopocnsk}hab\UMkF)?:@40-=+s))(''L&=%"$#0"T!!Z!R!!",$(.5(=E?MxU>[bgklm/mpmn8no4pqqqr7sstgtpp%ooMnnml(k&ii.i=iihTe`[TMF!>k6.($e#E""!!!q! s D  !@#%+( *-049Y>CIzOETZ^b;cddf ggghhjloBp?pcnmSjf`YR&JrCY<7i1.f+J)('&%$#"!!   !a$Y(.5=EpMUz[bgwjklm mgmmnoq q2qqrs?ttpZpooGnmlkjihi iwj hfb]4VAODGM?e7/($9"!P!^!5!8 h V  K!#&2(Q+y/48>DSJQPjV7\I`djefg=hrij4jjkln op1omkhc]VO1G@:4/,[)(']&%$o#=",!2 6<%  #'.5D=ZEMU\cgjkulzllmm?moKpwppq-r0rstpDpoo*nimlkjiChhiTji&gc1^WPH@8u/)q$;"J u ]  +E. Z!#%(,2z7>DJlPV]caeg$hQhj k7lllmdmnoognkiie`QYRKD9=7/2J-*({'&r%$#g"+!% AU*  $J(}/N5>FIN^U\Oc:gjk1l'lKlllmqnop,p,pqrstp`p?oo:n_mlkjXhhghi8jich4d&_XQIA9b0)$A!L1+!"&K*17(=D-JQ~W^cZghdijHklmnynoo.oohnm7jfb\UNG@^:54/+)M'H&f%d$#^"& H` ,!S$)806>FNV\Icg`jSjkkll%p$#"! ara% "%*V17?|GiOVf\|cg0ijjkwkkllKm n]ozoop^qrr3sspppoknmlkjiKhhijjIif|b\VNF->5z.4'V#PBh~pce i#( .5=6DDK2RWX_dhj@klmnppppppp/n1kggc \VNG@?83.I+ '&%${##;"N!> 9u? "&+18z@-GOV\cfiik0kkkl>ln5o7oVoZpq)qrs|ooozonnmUlbk;ii@iWj%kkjgd_XQ9IA9}2*%! 469ez{ #'.*429AIIPW]cgIij kVklkl2lmnnnopq>qrno5nnnpn9mlkjciijk}kki3fa{[T|MWE~=f5-(E#!M=nKW ]! #'--23w:B8ITPBV]&bHfil m=n/nopqpqDpolid^WyPHN@f9V2u-(&i$G##)#2#A#/""!c D)*!i#(i-b4H;=CJRYs_?e h#j.juklNlBkklmGmn n5nopq=rkllmXmmmm:l@kjbjEjklPlYjehVc^XQRIA:A2@, &# WQtHw !#&, 18?iF\MSYk^cfjklmbnhoCpp6pWomjsg"a{[ESKDV<6 /l*&U$H"""Q""#!""c!!E `w "%+*//~6=EM8Tt[a{fiok*kGl^llokkl#lmm$mdnoop9qhijklmmmlkk!jkzlslm0kif a[aU"MFo>6/)&F" Mfw !#&Z*/6x71+&#W =Qd !0!!""@"1!!!w!+"U#'+18?yFN[U\XbgjkllmKm)lakkjkk=jjkk5kikll8TyX\a1dhk2lmmm|mimn nnnpmkid`qZU]NGl?82-*& #\ B  ? e!!#I$'u)-R1W6;AEJVNSSW[i^a3ceghuhMeqb]mXPIBW:4-).$6!)s , !u"9"""\""*"+#%*/.4;NBIQ/X^dhjkolellll kCk9k8g2.Z)&" mCF Q !!"$L&`((*-16;e?CH>LQTX[^ahdereybo_Z7TMF>720*&!E$?lhI C!G"X""""k"#,%V',1v7>EM"T)[N`fGik2klVlllkk3k-jj#hh5g^f*dd c:bDJQ6W]ch kplnEnnno%o[oooFmlnifb^YySLE>94D/*&$o"*!h !!;!!"#%')(+<.c26D: =AEJN#QUYf\`ab%_\+VQJC;4--(X$ [ """""#$'*/5/;BIQW^Nc EL"RY_&dgk llllll!kYjjige!ag^#ZJV QMJ9FH+w4=wFPY`g/jn|oqYqTq_q qpponmWl^jheOa]YXiRMHCV>:;62/-+L)(O&&&%Y%$$%4%&')/*,/1d47;#742Y0.t,+j**)}(((t())*+-.0?36:y? DbJNSU%URfOJE?W8}1+\'u$$c#H"~!n < 7 !J"$&)-~1n6;B=I.P9V\@aeikmmmmum`lkjihg&c_YTVNSHAmMl%igda]Y[U QMJtGzD-A*>B87U6*5-4433w3u344446y8'&%%5$$Y$ #$F$&'8)p,/397GQY^`eCilDnLnoUo0nnn8nRnoIoobnmtl/igd1`\rXU'QOKHEC*@?=<;;G::r:9999y99;!<@CHbMyQVWXaVsTPM GB ''v'S((*,]/ 159=BINTZ_drgknop8p{ooonFljh3fbK]W,PTH ?71.'r  B_#,-5P>HPX^IcgDjVkm msmmmn#noypp%p o6nmkhhebU^[XUS#PmMgJH]FEGDWCEBB-BAAAZA@AAsABDXGJ NRVbY[#[ZXSTQM$HC >o;8531/.----- ./c1369!<@DJOUZ`dDhTkKnp]qqZqLppJo9mkiTeb]XPH@!7".o&/1  @6$8,^5p?H"PV]|af/hzjklm7mn0nopappp}pQonljge6b_]8ZX?US%PNMKJIIgILI0I4IIHI*I~JLNtPT5WZ]^z^]Q[XV*R.MIDA><975433G22346G8:=@CG4L Q=V\`eWhloqrshrrkqpoUmjgca^XR.IA87.%=x c #+4=F'M@TOY_begijklmnop popepponljig5eb`^\ZXVTSRRQQ PPQ*Q>QRQ:QQS.TVX[Z^ `8b3bbao`][CWSOL4IgFDVA?=I;::9::<[>R@BDGoJNS W\a6e0i(lBocqZsJsssrRpomck$g|c^TXQuJmB9Y0&k1  U~'"Z*Z34;C}JQWx\A`cqf'hj*kmmo opq qLqq peornlkfihfAd~ba`?^]h\ZYYoYpYbYzY{YYYZe[]_`bdfglggf3db`{]ZNVTQOLzIG]DCvB>AADABWD-FHZJ)LjNR_UY^bHf$iQloqstptstksOrNpYnekihdR_YR6JB:1'~ JbV<2 =X!(1 8@'FMoSXc\ _gaegik*lmoCp&ppppGonmlkjZhgfweedcbaa````````abce.fgiOjjkrkkjji@g`eca`^L[YWTCQsNLJIISHI?J KMOQpSVEYS\D_cfPiEknoqrs\rrpoIlzifb]XAPIdA;91( 8 @u,  &l.G5h<C%I{OTCX&[2_behBj/kmoNpq q pXooAnmll2kpjiieiDiVi0hhOggh'hohhh`hMhhijLjklLm8n nnonamlzk~j hlfCd9a^[XV5SQPPNOPQfS0TW Y2[]`}beyh$jrlqnoq:rTrlrqpnkgdu`-\5VOG@8.0)  _N`b D<2$c*1n8>YDIN.QUZ ^eadnf[hk-mnnnmm(ll k|kjjj[j"j(jwjkjjk"kllVlNl kllCHBKO'QVSUjWX1Y;Z Z[\]_)`DaiabaaaNaD``W_T^<]H\\:[[SZZ=YZ&Z[\^W_abfcehfghkhhhhggUfee/e,eaf9g&hhi,i~iii`i(hhgfdb#^\X&SNG@;6 0+T% ~k$o jEiV( uK ! n!'L+/37?@BiDmFHJ6LMOOPtPfPNOOONMLnK#IHGFtEdDhC@B{AAB9CbDFkHyKMP3RUlWY[\]^ ^^^^^_``abbnbzbb9a`_J] ZWTRO~KGA=<;:98a7667859N;U=@WC EHKNaPRSU%UV`VVWWrXKY'Z>[{\s]E]W]t\[YKVSPMKHEA;502+I&w!Rd  af~c(kaCZnC;OauROV xlAx#&)+,-].0a2Y479;A<6<;:9B8[76654 3#2X10//--G,,-./%13%58];=@pCE6G:HpIIJyJJKhLM`NPSR*STTTSQsNKHHECA5>]:5h/*G&"Deo 9*e`F R~[P #6=!R1">I Xsuj p"g#$&&')x+-01f2d10/ -,o+")('&%%-$##N""/!"9"#|$&^(M*-Z0 25179;~<=>)>??`@;9Q62.\)-$v iL+ aTUtr 1 2Qn*\&Sz` zc#/Mj|!1"$&h'''%$%"i 1t] fQLy0 w"%K'),%-/012523k3568;e=|?j@ @V?X><:8e6>31.+'J" R6 fK(:<P 813A(d}6  = L V[ ->#yq=N`v(. G"#%(&:&'()++-/,1V24U4433p2 0.f,O)|&u"xU+ G ~AQuj%,uO1nC%N_W@rxx%4"^% "H+9 4  " P#  8K 8 c v\#jf }!#%F&'();))J)D(d'T% "J' (!i 2m:mK%sR!oV2un``%?[Ugw 0 ~ 8 M_ SCw?*"=' X NaTg.WZ%`k$u( c w pMetx"Ck%0kPO7#6z. ]]cyV]%h4 *;) x=| - g [+h >X/WgY_<)\wR8)8v93>ztZ9#ZTl~Z D`qzEF0[LYa(z D c w ; g\nXLu$b~-0`/KeaXA2\R:\(RfEXl<1Qw.%Gd!8w`Eu|),Eo'&Y[NI{udz`T?Jbv3 f=4rV(y"kL6RueK:) s|&P#a%5|v~F29Ty4":uK_qa^rHUSMMlpC%3Z\_4Zg~E  :uWRdamtTHF6&+l9W saWs&nZ)d^xI%!Sq~aBY)ATVUnrY!-$>}g@Za'u}G\ C~zkm`exfO?)QRzTw_.Vix0V)PF&-PJuRHh2O`cjbV4 (08BG^d$!l%4P{3RG7AOn|rb[MPWx[A;$#+WFpGZ%]lHkVO`y*FZ[OKL^V#2;8>HNa\8@x>:.A!lOUccV_eu]@:FAMnioFS  %Hp|V,aHIbsws>W\P=3:V_> ;=4>QeogeD'Uk (~sWPbwspwwD}'UfkYQ?%hTO\cdf0EOSI91<IN7.LSKCPdkmt~^34jfQtr|{vuq1t#DNWND1 vdWY`c`&9PXQ>--KU'Cc[B>Nj{m\okGAitp&%%~|<B(,?D8#hX\]O)@Td]=(FbQ%NniK2A`jlsyfPJb_XDRR=7( z/,yxj6:>/'!^RF(+>`mW;@P[K)je0&Ab}w|{YCOrj+`exrNE7wywnqz~~z}},6iyeF@c&GE7&\A* #C_j\D4BN<!GxxV;5Ee}zyeW\ue92WcV?zuttop{e%FfeRFPi6=  O,5ZdD7MN.*TuzbC5Is||~_Q\u{]34\ fh_Crlomnp{\% Dhxg<(E9(+_9  *A7# ,=HB87D^pn[CFniSP_t|t^[jAjhkR4wa_imsxp@+2OabU@%.`}'!  [<)$  #--($,FZTEFSfpaYo}yiZPU_p}>QbWH) uxzk^`nxh[U`ux^8-W#'Y8) (  ,.%'D_]MFL`rrmr}zsja^^k},FKL8!|y{urrzuknw}pJ-&=Vx!^/     !1.+<PZXROTbs~xzyuutpdbl+:D7& mT:9Ii| |f[N1    '/>LWXTMDNmz~qjkngdh| *;C4$ z|{t{u`RINTdq ]<) ' !0>HTXWO@C^uin}p_]eeil|1<>,|~{vubY\`bVVcyO3 # .-]|C4PAivU=\>YXq>R0. : ~ =   * .   Q  N U : 0 xB.2aMf(G^bt)  >AWEsE&&P[^SEtM8. o i q a % \  * L ] G $  # - . # * J v   G X d w ; @ >-JY|H n} w* Tr<ALLA r!,u ` _ P d *  6 : 3 v p j * K o   # - # $ 1 @ c L T  z hKD/ +   >_BR|x6S"x*JPb!zi] # } , u ? /  u W 9 , ' / 3 7 = 5 +  M  ( f  I k x A m `    m , C L8hmcV3: c3rc Q R  c     \ 6    % K u * M ` f V # z <  7 S v j P @ ? 1 I $ s E e  %zX0%IJH1Nd1uNs[JZtX3  x 9 y 0 { H ]  X    5 r k S 8   5 N P N b | O   4 ? E @ = 8 3 3 ) @ v  #   ) h S  mMLdwMZ] Dt`[,0j ;  # j K % ) D m H G 6 + -  I W/#!8Ocemq  = 0        " 4 M [ s  v   RMY53Ij+zJS!pjt i | . # 8 ' ? . a h G j ( \v ^__, ApGE]~WKSVfz  g  f  J Z|V g%*qzo[hKRcu  n d h U    ^ 7 4 G X .N F+IuV pHwocI7,?^^i'OrU0B+  7 ] y ( L e }  i ?$te- % p D E  u @ ? w -AKK. .FVY^SX*SzHYmgC)3Vt[Ba/Gv { =R:,H   > E   ` > 2 j1 | / ! = + m k  : g at/\)eV]%\:fLF`}|ePEFDJR_msskZbn%FxK0J@ :  - G c  O ^ J , @  n & W 8 w g V U h X D B F r < I 2    ~`8>.qr:+f"9Dk0  -<?@*8k|r{6jLpsO Q x m  ! [ O @ B ` $ 5   ) 6 /DL,4BC/$k0W[t",\0!&(:Pfw%p0> rgSFmo &0u     u E V a Q > A h } y [ %  7 q x 8{='a&o -WqzazuNVb!\pGrI3 =]|y`2: !y7Cc!3@` b{O7r a   f GJ!sTlcOki(ERw 4x n<}hlqq]KEVk1jc=cHy;'`mz[<8b}B < f 3z.732_Ui;()Le)|%x wrlvL}A xc>)&;R[Q7!&Htt{[&v1s,(rr\wkHiQdiYqT _mZT87~4i/{\;0'=)  .e>U$   jGuK4%` +8@k7-sbY@bzK+Y "VuWuvx%EFV  X h f G < Q V T o  " ; J V L @  n 7  By|SBim!A!JY3 egD6I |FynPp?]^^:hBUTc sjh&s'*s^ d=CI l }Yr b=X1Y4N"s8e .s!Zp  <7Jy:o:Csp2. (  #1=Q3 a-J"x  N C -5Wj RM`vptp   k N  q qAQTeStHthr=cB7^XB/fsVmo@{rFr] & E ' "$%&&&&&&' 'x'()I)*4*Q*b*;*#)))0((.''\''&&&%x$$9##0"" !z t 2-8Q$6M)4; z " h 4voQ1F" ibNqh"vZn ! 'kCy"#%'),"./01`112?23134F45N55555o544r4*33J222a2e2O2 1s00/i..&-x,++N++ ++*v)('&:$"l Mw\J  .+ 6D TUr`otd M9i jF|7ky #%;'b)|+-02478:p;mD>?u?@y@A=AdAAdA(@@@@@m???B?7?U?Z?/>==0<;; :19766[555Q432291$/-,*(T&%9#"n!P ]8 8 ftM(_-%yM | )"!- 6 ) XD$"%'*.,/#12469x<>|@kB@CE$F0GGH%HIPIJ^JKNKLhLMi=Y<;:9h76\43F1/-+*o)q(~&$!Ye [KBBDb Ebv7 < i ( t `~z #&),/368;<>V@CZF HJLMOP{QRJRSbTTUdUV|W5XXYZSZZZZZ[ZZYPXXiXZXcXGWW;VVCUUTSRnQLPkOOMLxJIPHFED'BAU@">=m;9T7 53|206.G+Y'$ X= o 3M]>b en!$-'*.d148/;?4B=DFH6JLORSUVWdXYZ[[Z[\]3]^_z`~abcddedddddAcdb\aa````.__^^^^^]\[[=ZZcYXVoTS)QPN`LKJIHG^EC@>fhDijkSkkkkkkfk jjojljklmpnoprrspssssstsrqppQpooxon~nNnonoonnnn}nnn^mm1lldlkzjihhgWfedca_][HXVSOLtHEnA=:^630C-!*h'$!\Z!D &3GF3D|CAr@|??@*ACEaGKNR+U[X\`Ccfohyijklmrnno o$onn'mmJll7kklOlmnYo3pqr rs;scsst8tttts rZqqzqCpp~ppp\pqqqqqqqqq6pqoonnhnmm1llxlkkIjiChfecaD^\XURP LIELA>;86)30,Y(5#M Yz QPNMdLxKKL1MNPSOVWYN\p__bfielLnopqr(rrrssUs&rqq&proo$n8mmmn=noUppqrstt7ttusuvYvEuuttss}s2rrnr r3rst_uutuuuuutlsxr~qq5ppplpVpapbpTp\ponmlkjhfdea^\ZJWT`PM!IG*DA>[;62-~(R#.} 8P ZYXWVVNVwVWXZ\^aQcfiClig+db`^7[GWRMIH4B=7,1h+t%6llllllllmllmmnp2rsuvvxxy`ydyCxxxxxxawwvhutt/sbrjqqBqNqtqqqqr7rrrrrrsntttu ttesrqpoonn:nnopqwrlsssss1rr|r-rqqrrrsturv0vvvvTuuuHttRssrrqqpnVltjehfd`\WnRM,GA;5i.(&"3knvnnnnnnnlnnoiopr;tulvcwIwxy|yyZyxxxsx*ww6vvuStss r+qpcpp.p_pppqqrrrrsst+tuAuuuu_tsrkq.pnn.mm{mn1nopIpq!q pphp ooKonnooppqrstuvFvvlvvvmvuu3ttRtssqppnmljgc_ ZUPJEx?G81+&5 p(p]ppqppppq(qqstvponmlk%ihh ggqgh83;qVqr8rrrqrmrs-scstuwx;xyjz.zzzzyLxx wTv?usr:poOml5ji gfe,dldedOdefhdjnlnpXqstu"uvwwwxwwYvutt)surrqq/qppoonn$lkqigfGe+dcc{cdfMhvjWl>nprPtOv vwwxxy#xxxxVwwQvKusserdpnkhfb_ZUO$I!Cg=q?qrPrrrrssnst.uvwwxxyyyyx]wJv`u;tr}pnljhfecya`)^]\\\]^`Tbd{giln"p!qs^tuvxwKwwww`vuutdsrqq%paoonCmClZkKjHhgBeMc4ay`._a^]]^6_bdg]iwknzq2sumvwWx[yyyyyUy xx(wYv)ttPs~r.p7n\l6j8ge}a]SWRMsH\pq4qrgrrrssust)tuvw wwxzxsx)w!v"tsNqomkPhecza+_Q]\Z=XW#V=UWUZU{VWYv[M]`d=gYj9moqsuvwx'xxx wvvOuutsrqfpnmplji"gfdjb`^\[%YXWW V|WY4\7_)bPdgjnMqtvw'xyyLzz[zz5yyny=xwvUuut$rqZonRlk*h]d_[W*RoppqqqqrrWrrsEstu ucuv9vv4ut'rpnlifc`]xZXVU5SQPdNNMYMrMNOQARUX\`dOh&knqtBvwx\xxxEwvuts|rpCnCkige=b`^^[YWUSR$PP7O)NNZOqPSW3Z^BaeriSm`psucwDxcyzzzlz8yyyoxwvvs+rq`omyj^ge.bmnjo3op pSpvpppq_qrorrs\ssrkq"nl&heUa]Z#UQN===>?ZABEIMRW\afujoreuvwxyyxxwJv&t0r>o6kgc_[WSPXLIFD>==Y=>.?BEIMROW9\afkMnrttwCx~yzz/zz:zDz*yyxKww@vjuLt1srxqJo`lji3gmmnoLopp0pKpfppq]qqqrnrfr+po lie`\XiT O)JGDBW@>=:;<977!6M6-567V9*:=AEF7K(PV\Sag!lkpt_vxy[yyyIx3w8u);:d865'32t1000M01Y34k76:M?CIOV5\bhmrYu@xyzyyxxvtplkgb \|VPKEF{A>8:8,5$3100//0147::=B{GMSY_dimqt vtw}x`xoxxxxxwwrvvsuttsrqpooMoklrm0mnJnnnnoo{op4psp\ponl=ieaw\,WQL/FAs=9a724310u/.-5,,++J+z+-4.C0317< B,HOV]hdUjosZvxmz z.zay_xzvMt6pdlfga[TNH.B=95n20.+,++**+,.1(446;%?F/LiRY^d-hmapstvVvvvwcwwzvvv,uuotss~srRqqJqJqujkxlllmSmjmKmImn)nnoko[o_n)lifa]WDQKE@q;7*31/.-|,++:**l*))A)5)M* *,/-15;rAI*PzW_kel[pu(wmyzztyJxCusokRe`eZdT'MF@:6 2/,+,))(=('()u+(,/31N49#>DK;QW]{bgkoFq=s>tttu\uuuuJttttsZrrlqqq]qqij>jkkakkkik^klslmcnnnl|jg ce^(XRULE?s: 41.-+**=))k)+(((s(''z'='V'2((+/4:BJRZbMintw yzWzyVx/72.+) 'h&%%)%!%%o%'(")+d.l27=C|IPYV\bgk?mpKqrrs}st:t>tstssrr:qqxqiqiqr)iiiijLjnjUj j jvk?klkmXmxmbkriJe`ZTNMGAA:5d0.#+*)))m)R)&((((](''W&&&&S&(+T06I>1F NW^flruxyoyxuw~u$rnjEd_YSLEl>8&3.X+>'%$_$#####$%+&a';),w1L693b.*&$7#K"S" !!!q!m!l!!"#&*8/T4y;%BIQW]bgjminop7q qsqqaqqqbpoynnn"nnPnkjjEj5jjj"iijjzk9l mn2n mjyg!aD[SLE>u70,})(M'u''&&''.'M'V'2'&&o%%k%$$$%'`+0U7W>IFMU1] cjmpqrr6r9qkpnlifbT]aWPICj=Z7S2,(%$`#""]"/!!! G !#-%).94;ZC4JR6Y^d/gk~m nnoprppppponmm mlmmAm kjjjjj8j&jkjkklmmali/eb_ XQJ3CC;5%.y*c'D&%%%W%8%O%&&J&&&&&f&%%f%%@%%&~(,"07p>'ELSfZh`DfilmwnqnnnnnmUkgiea[UNHTB;6>0L+(4&$$$##{""/!p q!#C&*9/6B>EM_TZ`e[ikmno"op p#p]pRpGonmvlllllnlkk#k"jj0jj;j%jnk5kllkg5b\IUMF@8m1+_'$$###y##$Y$%%Z%%& &$&%%%d%%'(,g07J=DKRQNWn\aeYhUijkjlPlmtmsmlkikjieb`YRK}Dq=l5/6) %#\#"h"V""D"#=##$F$%7%&&E&I&@&@&&(8)-28g>EKK/PEUY^adjegVh{ik(lLlmm[mfkehc]VP4ICK=;61f,)( '&&7%$#"!![ !F#Y%d)/>6=EM T[6afj!lm7noNppippq&ponnsncn mmKp^nmllkkokDk#j{j+jk?kjhdZ_CXQ#IB;3-P'T$W"5"!g!E!!P!"U"#-#$*$%&9&&''K'')/*.3j9@EKBOT-W[^Y`iac`e-g:i9k!lymnGnm4kLfaYS&LNE?93.?+A)(''&%$#"!!'! "Y#',4-;VC)JRY_f7ilmCnodp>pq&qTqqpoouolonn/q9onmmyllzlXlk;jkkl&jhd@^WPI/B:3+,&$""!Q! !!T!"E"#7#$%&'i((o()M)e*,05<B0GLJOTWKZj\M]^`AbegjlonNno^mlJgb[TMF@:N5/,?))((-'&%$#""!!P"^#j'E+3:1B!IQkY%_fFj1m mnoprpqVqr1r:qppXpdp,ooXqpo_nn-mmNm5lkkklkljjidA^WxPQHA:}2,L&#" " !W! !Y!"Q"#$&B's(e)V**+0+Z,.38>CHLOSXUXZ Z[]I_c fjltnoonmid]{VOCHaB0;61-+T**F))('%$#""!"#&*18@HPX_SfGjmnSouopqqfqrcrr q3q q%qppBqponn-mmPm'lkjkkljhd-^WPiHA:y2,=&$"J"K!!= !!>!"#$&P'(*"++,-(.115:@yFAJNQ"TV5XlYZz[H\_&bafAjlnoonmie]VOHB<7l1.,`,++/*i)N(A'%$##F"# #g&v*P1 7@H%P@XA_f:jmnoopzpqqGrrzrqhq^qqqpq qpo^nmmm=llkjijjkih ci^7VOHsA3:2 +&F#"="6!x! !!4"&#%'t(*c+,-.i0307FO?WD^'eojm|n.o o oyoop!qqqqsqr8rrrponmllkvjihgghhihfbF]zVOH[A91+8%#"$"#!w! K q%!1#k%k'e)>*,--/3]6< AHNZSVX[\}]^__`Jb)dgkQmoopnClhfc+[TCLF4@:51.M,K++v+*B)-(,'9&J%$$Z##$&)0E6>FNV]dislmnZnGnnnoTpVq/D0JQUZ\?^_a!ab bycdfilnpFoomkfaLYR!JC>U8e3/,**'))(T'o&%%$###$##&y)0G6>FNV]sdhlAlmmvmmmnoopppq.qryss~p6onmll>kjihpgghi|ih"d\_Y&RkJC;Z2,`&$"X"f!!x Y UG 7"($6&p(2*+.16:@9FYLSlX]_abddde2efhkDmopoo?lj{eG_TW{OH@Ay;51s-%*)((('|&%%6$##z"""9"#%)f/6@>XFNV]jd[hklOlllmm mnop*p*pqr1rspYoon6mJ83/+7)f''&& %C$##5"":!!\!!"0%&(/p6>[FO#W"]d{hkllldlxlltln%oWooppqrsvpzpomnnmHlvkjihJghijbjjgc]VKN7F`>=5s.9'$}"!!L! 5  4N!C"$&X(+./J3s8>,D^JQ@X]btdfghijjGjkTl_modoomlbi&e_XPI9B';q6%0-)(2&&g%$##"_!!|!( _  !v$(|/?6>\FO.W5]dhkkll8l;l4klVmnnnotpaq*r-s+pp^onmElXkrjJi*ggwghj>jk0he^WOG?6/Q(n$!!m bJ p!#$'7*X/>4: ?F]LSZv_dfhiAjrkCkll{lmn o.o-nlj fa[XTLE>>834.O+>(t':&%$#"!!- | D} !e$)/6? GkOW^dhkkll^lalFkl:m]nnnnopqrpponmUlQkVjhgg'gPhj!jki.f%_YQaIA820)G%&! }z!q "#%)@/4;XAHuOPV](bg1i-jkl%lmmnn5n`ncnn+m j'gb]VOH@:K4?/+)M'&%%$z#v"c!O qN Y!%s)07@HGPXX>^ehk}kllol}l^l lGm`nqntn;noxp$q qpponm}lykxjDigg:g]hj-k kifa<[-S1KC2:s2+%&r"t!!2176~w !A!$(h.4<BIPW^d$hjokl'mmnBn|nnvnnJnAlkPgd_SYR1JC;50`,)O'y%% $N#"! JAz "u&+29AIQYT_rehkakl}llllSlmnnonnno0op|qAqpp omlkjibggqghjdkLkigb\UME`<4-$'#P!xM  !$S(.5:7Z2,)&%$o##|""! !q'd "'{,x3:BJR{Z&`ehk'k{lplllllmnnwn nToovppppionmml(kjhhh,iYjkl?jhd%^WyPjH|@?8P0]*%l" 1N D!@!$(!.S4<~CJQX_zdi*kllmmnnnnonnhmkhc_>XQIA:3.*'r%$%#P#*""!!" d'!B#(.5-FNV]qbgiklkllllOl2lmLmm~m!mn@noozmmmmmmfllAkSjiitjmklm1kjgc]VW-OH@$714*',#! &&CZ  Q | !"{$'-29@GNQTZ`dgjkllm|mnwnznwmkhKd^XQ7IA:!3-(($"!S!t!t!"@"P""!!  $7'-3d:BSJIR Y ` di'jl llllykkkl{llkl'lm\mnn|jkkllmZm'lkjjbj?klbmbmll:if'`jZSLZD DKQW] aeUhjhklommDmnmkj fa[bTLE=6A0?*9&?"! ` !L!""!!B j 6 y"&&2*h06>dFMU\ bgjkllm8m1lkkykkkk]k7kllmImefhDjk`lmmlakkek?klmnNmm?khCc.^WfPI[A^92-(&#G! +  7 } !"v$&*.4:AGXM:S X(]`dg iZjxk|klll\igb]W PHe@92-F'$`!# . !B!!!w!`!3 M ` D"$K)-4l; BJVQYK_^ei"llmgmBmm^lkkiknk1jjOj)jzkkykk_fbdwgXiklmPlllil>lmqn8nnn l_j/eaH[1UUNBF>7C1r,2(%X#I!V   Q !"$&*-B17=BHMRW\`DcNf:gij^kkyjgd_YRKD<_5/*:%."K9g t !!R!!!!l !*!S#&+1I81?%FNwU\bzgjm m1mmmmflkkckVjjDiiijj1j:jEW[_3c[fjll,mHm)mlmqm^m|nnnnpnrm%krgd^YS"L%D=61-,(&/#}"3 !6!8!C!8!"$l&N)+/W3r8=BGLfQNUZT]aPcfDgiihe4a\VNG@k82E,G'#a Hn. |!!!"Q"R"!"@"%)/_5 < C%JRBY_dikmCmm}mmmrllkMkjjAi]hh#gggpgfPnUY_Bdhkdm;m|n;nrn|ninnonnmlifb)]WQJC<8611,)7%#!!8 ! !!%!!"A#%u'),/38D=AmEJODT X3\_8bdggg!c_(YRKDw=-5/-)%!rm<$2  """""V#K$(;,h28|?|FN1U\.bfjlimXlm3m llckjjjKihh2g1fceedcbHMSZC`Ff8ilmnoboooooo>onMmjkBGLQUZ^b9cb^YSLF>70M*%#!6f<) A!Q"#"#6#&N)$.3;9@%G:NU\ag0j llllIl,kkijj$ii$hfcca_]^[HYjWHT7o?G`PX3`fokOmp#q)r qqqqdqpoo>mlj_gc_ZTNID ?<; 62/,*)p'&%g$$$v$%&')+-?0@36:l?CI N3SW[_``=[WPJD=62.)%$"Z!| WjHoE G!3":"$c%),2"7>7DKS-Y`#di1k[m(mll(kktjjihhXfd<`]ZWOT-QFNIJ.7,@J/Se\cilp[qrrrrqr,qq! "]#%(A,N06a<+BIPW]cgOklmmhll%kkDjiihgedb\^ZUQYM$I9EiA&/U9=C.LV^ej n]par8rsrrUrqq'psonn4lkifyb_.ZV,QMLIbEeA>; 85531/2-m,++**X*n*,M-0&247<@EJPUiYp]^j]Y%TNIBB<5.*('&%$#""7!!` !;"M#C%&*- 16;AHORU\)aFf@i_lbmsnKmm>l^kkNjii3hf~c_8YTO]ID@;6'1<F;PYwaflnqDqrnrqq\pp7onnnmRkifdA`\XTkPsLHEB?v<: 75B3{110N//../1K3B469>&8 2.r++*)'&%$###8#u#$&(+A.2`6;AHNTZ`?dhk_mnGnnmjlkkOjniMhgd`[UOmHBc:HQZU`fjPmo pPp_ppDooo*nnnnmlNjAE.INSNX8[_`O`\xYSNI>CU=85C21A/.|- +*:),(/''(q(*"+/2+59b=B}HUNuTZH_cgAjmnoo*nkmll)k%jh`g5dan\VOtHB@93z-_(,""#C,G6@)IRZ3a6ej'lUnWnooooio,ooUoooNnmklGjIhea^/ZWSQDNKHECHA??#>Q==.<<=>@OACD~FIMQVAZ^ab,b ^[W4RMHC?;97k54L21 /k.3-",,-.'/2V59<@&DsI1NTZ8_=1;98%6N5433457:H=@CGEKnOU Zd_cbfj7loYpyqApponmlajUh^eIbY]X+PIA8//(!ML8 |kT%-6C?cGOVJ\a eHgj7kmmnno\op=;:::<=?QAEGJNQRoV[X`d.gjmoqrArqqp|omlSig-c._XRJB{9b/'ERV  )$,_4=/EAL)RXP]aCdfiEjlAm mnloopp5pvp5onm~kj.hxfdzba_L][[1Y6WeV@U=TTT TCULVgWY*Z\]_acegi4j|j_ihf\ca]ZWTTIQONLRJHbFjDChBVBbBCEG&INLNQUX\`dhk$mop qrrrqq DRJP{UYj]2`'c\egijjlYnohp`pppBonmlkjihggEffedcccjccdreefghijklmo#opkp4onmljCh(f3dgba_C]B[ZYfWDUXSpRRQSQqQRSU]WSY\_3acfi!kmohpsqr'r:q^poQmjhda]OXXQeJ,B :2)!( XU!u? 7 B$W+29[@)FHLBPU3X\` c]egil$noon`mmlbkk#jjWjojj|j4iijjkkllrlm[mnmnno7opqqqqqponmlpk?jhfdb`^B\GZfYhXXXYZ\^acfeig:hjlcnoHpqQqqqonl|ieb^[VPH|@81})!KwJ M~i Ym]  "(t.5;ABFqKNRW[^^adfilOmn%mmOllfkkhjjjjujxjjk7kwkkl?lmrmn)nn"n*n]n`n mmmn0noropApbpppioonn lkLi`gec\ay_^^)^L^m__`Tbceghj@kHldmUnGnoponmnkOiRfb]|YUHQ"KE9=6/(!m *jMc; s+bd$*h0(6W;AE>IuMRWH[^aId,gikkjjsjKj8jjj&jk kkll/e"3S O8e!-&A+06:>BGLQ)TX^[Q^acdxddddeerefghi*i;iFi9H4P/*$[tCw YC"rfiJ7  w~#'+D/(38=^AACEGIJKLvMHN&OP@QsRSTUoUUUU{TSQOMKJ(HGxEDC]CD;F GIKsMPSVY[I]_`bcde)edeOePeuef/f>f eeeeteLdcba'^\YWsTPKE?f9Y3.)l#cOX T --1ks5z q R /"@%\(-916I9:;=<>?@ABDE9FNG%GHhI IrIIIHHF{DB|@>=.;987@7L79:<>ADGK>N"PS U}WY[v\]]]]^E^_ _<_$_6_2_@^^~]G[YWHTiQNLI E?z93.p)$D;  L+10Phj&p  6h ":%*]-0123v4N5a689:83*-)$ k   ROcgA]xM@HFNnt > ,9s#&-')!)U)*_+h,.001233B22a2!111H0/a-,U*)(o')%$x#`#a#%&#'),m/Y258;>6@BE>FGHHHI#IJ[KTLLM MMMLKXIFCA?`=:7b2g-6(5$1 q:R ^2K.T\U -EO I  C 73n![(| s!"$&j'))) (C'&&%<$O#!G9!t$M'*-0P247 9%:;< <=+=>@,ABChCCMBAN?=;9w75}3(/+&H"t.! -Cdw 59_w#Y%%H z dN{ nJV0mPWwiR^ B"%&'!)D+&-.r/0+0124057\8~8876542v1 /^-+:($1R 1 " 8 sT&8<P @86D4 I+af{' f 7jt2y8^[4 B $ .i~( M \!"$3%$&<'r(*+,-%,,,/+*)(]'$"v<jk S U N{n.,xR/k>*TbZDuy{'^t#t    9 K > aB4MdzQg Q G5Tv X!7!!!!!!!W - 9 >W(4}k5hU"%uZ"lR;$uqfg|'d)~Quu[+xWH\h7` *Y$ D a[f?y&)p / > XAFu+?t-3lQ P5+7~%c<91ziyVPm<^EXkRF: oTdz   x   + u K"Ic4 : Jj<sWio*] G0_xMD2=y?920;O8} BB}g <]g(W0<J b<Up\; )s/r 05i8Qf`bJ7aX&?Z*!$Qshh)v5;d/R>!Sreqt#ydJstoG` +Ez1,_^POzjbV?Jc{ 6 ^B$:g1t=+0Y~@(Qo9:c8{eq0U$ -s*f&K67^>(=yRf|jg~DROGGiqJ$2Jf Z):n%f-$#@v|[PSfhzykO955$8"I&=TV4 :oI8 elV0(SxmLe*BRQNem\),&2vv'AYO!pL%)Npbd[e~eH1!2bN /^<ebq:W%XO+3UP\Os8R__b[X= !067<Eeg&&sEfYykOLUqwls~lg`ehymRFLIVe >zlAiQ#^oLu_Sb.J\]QIIa_*4A<<BLg_<F~5MIcF_Ycsepz~iYD?F^o1pBP ,KuX/hNLbu{s=V]TB7=]gC :?58H`sqqH*Oh8mdwv\JBMVkW5aosaU?%nXP[cfe/FPTI92DTT8-NVG:Mirub72`s"gy`UUKNUwK {'IT_UG0 xfWXae_'9MRJ;27QU&FhY:<TqtespJ>\26 n]hzphkbQ%,BH:"hY_aP&=P_Y>.I`O%Sj_H8HeoosweK=Vt)5qFSK/'v_exptK?rf5:?/(!`VK))?_jW=?MYK,e}a6/Hgt{sK8N}F&q`uh?3)~nlyz7DxlIBg+LG7&_C- %A[j_F2?L: DptZE@Olo]Wf|R1FUZI3{{wxxg25^zu[INd~:B#  Q. 4]kH5KN2*Pr}kPCT{iZbuNLf jdW:xoqqtw||b0#EmM0D|wy9,,b:   0H=%*<JE;6B]swgOLnvb\kyqs?e_bM0 lfnt|~n@/Bi|nS36cy*$Z<)! %/.'#.H[SDFVnyhZjvq|{j^bo 3CWRF) zzllxrZSO]znF*,8` #*X7' $ !--&)F`]LENf|{suzz~ujfiy #:BF5!}yra^kwcC:Od}X/   "0/.?RZWQPYk~~|z{zwmny !-81% {nmflp\Xe x_YS3   '1?KUWSNHSq~{uw{usv ".7-~i\diwykd_dhtd>%  ' !2<COVWQCE]segtnnwx{|*25%{{}iamyn_[bjnb`nyU@# '  1.aB 8S@guV?\>]Vp:O.3 > H   / 1 !   M   S W 5 ,rB+@l[k$zGefv. z KJ\EoD')PX]NJ{P;2 q l s c ( ]  4 P ` K *   # , / " ( G ~ { ? M X m 3 E =:T]R k}f _|ACPPCw&0  u _ ^ L  i -     - ? ? 7  z r , J k y  " (   * 7 Y | M N /rUN8( AdFPwj9X)2JR` yg[ ! | + q : (   o T < 2 . 6 = D J A 5  Z % , i  D c } s : q `    e 7 T  Y':ipjT+A c2ra  T S  b     #   c <    ' J r ) M c k X " { @  / L s { ` E 6 8 . H  + | S l  "xW2'QSL-Ka+kXnWFRqY1  x = 8 { F ]   Z   = | z d G #  7 R Z [ j  Q  & 1 8 4 1 . , 0 ) A w  ) 2  5 t Q  eFIe}SPUQp[],2k : } " l M # # = h } @ @ / $ (     TZ/! 6I[bok  ,       * F ] ~ v   SO[<;K]$y*RPsq} j w * ! 3 ! : % X ` @ [ W| gsh41_QDRjC:HQbt ! u  k  O \}Zr.#cvWj"LRex h _ a M  ] 3 / @ R (ED:W_uZvm^>) 7Q}gdCai: D+  B k  = Y y  e >(o c% "  j > @  n @ G 0FLO. -AVaj_d1TV`oc="-Ig~R9zD?zHY>/P  . $  A 8 w  \ > 8 m-lu+ .  8 % l k  > f ap- Z#_][*nI#saXk|dK;::BFO\fgd_mt > sK;WG O ! 0 F _  O a O 1 C  u  ) Z 6 ri k U Q c Q > @ J z F S <  ! }a95&if-"b*C"OH/DQLF, 4`aXfKxT T O w  2 m [ I G ^  E   - < 1FO.2?F*%|<ut 2:a4 "-?Ueuw}X(4mqlUz~53 'o     |  Q a l W : 6 ^ u p /  5 r { 9t8$Yn1Ymr[ V\m.b{NtK3 &GahLnC"#L\x$7O/[b]Ay e x U LP!oNeaPmb AC} P14C@2m0wtrmXIFYmTzB FCr8> $x<+ \L ? p 0rmEI%29$lhp;')Fdyd nQ@VL}nNM"_6"&24&;p*sE wh@%AAix_VtOh |Z{TvcV7?9c+~Zv# IAk:eM8C>N=;h2ugd]$Bfi3I%3&VyTtsw"IOba 2 s S 2  d < A > Y }  # < [ t p J  u K LK]<h8cVy1^]1GP6;U#~;cR5['IZV\Gy%  DGP] ; _8  {B$]{~ynId7Z{ z   8wPwwm!*Ztg+|\dW6z.l&'=q: }I4e?'-) * # b([(NSe Q- wEc cL'5 B  "mlg8_<oEIqhN>r`ksi7zq`$A1 j n ,%B!{##$$I$##""""# #$ $f$$$$%$$$$Q$##$$$$ ###E"""a"!!0 9`U '?/ . q>#EK.b,^U1E)D)13,[nmNfHfOp ^ ~JD| "#%'R)$+ ,-./....../I//090<0:0////w/T/$..../;/o//E...7--s,,U++D+*+2+++_*|)(&p$F" ;dn 1 ~ 8 dyAqVanevhsgl^Vw!M h TVt1!Q#%()+-0!2T4957<89.999::':^::;);n;;;;;m;\;^;j;z;j;#:;;a;<::n9887*66.66(6544L3"1/-+8(&<$"M a/ e Y`*gmNszS % Y C 7V"%Y'*s-?/13-47 9;>&?A#BC>DDDE!E6EkEEEF8FFG+GgGGGHHTHHHDGGH@HHI0I.IHHHxH+GvFEDCBBzBA@??>"=;p97]42S/-+(&%H$" n"9 ZK>DI Cb| - j C#;&),/368;6<>w@C#EH&J K>L~MtNOgPPOAUDEGtI;KNQRT2UVW X XYYY+YTYYZ?Z[y\g]R^^_ _U_o____@^]]]]^^5^@^^^@^^^^(]\\\2[[ZYWV|TSQOLJHG-EFB@#=V:865(20,,)[&d$!& q N.+SE&A$["!, %$-M "-$&),0j47:>4AEIIL N~P2QT VY0[Q\]^j_L_``````a ab6cde3fOg gh h9h*h=h)hgffAEH{LNOSU:WXZr\w^`bc dde>eeeeee&deeLefghjk/kl}lllllll+kjjRj;jFjij`j:iij>jjjjjjj|jjjjj$iRhgfe3ceaX_e]\cZXVTVROMKkHF/C@<964.1R.*&#  |i ;: 87l6m5O5(5Q679;>BAFIOLPSW_Zm\^p_abd'eg h9hij'jjxjljiiIii]ij}k_lmnopUppppqq'q6ppSoo-ononnn]nmno>oooooop-pBpCooonnfmm3ljigfecbw`^\ZXVT6QsNPKbHWE2A>;8581.C+H(q%"( lDU 2J\$FfDCBA@@@AC EGILPTSHVVY].`obdweZfYgh hijklclmm:mlllkkbk:kklmnro^pp}p`p\poonJmmnnSnozp>q qrsKssst6ttuHu6ttt8ssss%rrrsDttuv(vyvvvv`uuts)rsqqq+pp3onnnWmmlQkQjdi9h1fwdMa_\ZCWTQNK3H*E*B>;G7N3D.)%f!k~b p 1ZZYiXWWgW^WbX)YZ\^`bYdgikmRn=oipppppq#qrIrzr}r>r5qqtpooPooIogoppq?qrsEssstttu`uzuqu'tttntss,rssotHuuvw.wwww]vutssrrqqqqssrrrstUu9vvwx"xqx'ww v/uEtxssscs3s:s?sttgtt3ss\rr\qqpnmkjAhgec`]/ZZWTQIMHD?;6k1,'"8@kdvhhhhhhhh@h:hiDijVkTlnpq`r8s sttt|ssttu%uiuWuGuu tt9slrqqQq*qqWq|qqrr\rr|rWrVrsstDttttttKsrr qqUq1qqrsot\ubvvvvouuett(sssswsstMuuv"uuu5ttMsssrqponmm.kjgeb~`o]ZVS2NJEATnoopqlrrstbu:uvgvwwRwww3vVu}ttsrqqpppppp6oonwmm"l[kkkllmnopqrtuv vww+wJwMwqwvwLww!w%w?vutwsxrrpnlinfsc`]6XTOJIC=q0qCqr+rnrkrYryrrs}t7uJvewgx&xyz{!zzsyyQxxwJvutsrqpFnmlkjj iiCi}ijkln.oupqst uuvhvw4wwwwvv#ugtt[srqqppp[onnmdll%kMjBilhhhijkmcnp!q^rt uxvwRwwxxxyy yyyxx vuttsr4omkDiCfdI`]X7S3MrGqqrBrrssssSsttuvwdxxyz:zkyynxxwutsr=pomOkih?fedcjbLaabbd]egMijlnpr0stuv}w*wxx wvv\-]_QaTctf hkjn;pstv2wxxYxxx/wSvuuMtvslqp2nqlkj'hgf7dbFa(`?_^]\\n\]^`qbBdfi`kmpr)t8uw wyyz{({o{T{Lzzzy1x>wwvtrq&onmCk7heb5^YopOq.qr6rrrrrs6stbtu#uvLvvvuu(srom=jhnfcd`^\ZXWrVcUSRRRS`T>UWSY[_bYfimRprugvxRxy~yLxxwSvutsaq>nlAige;b_\YXwvPN2M3KKGJuJKLMOTPS\VY\`cgXjmqskuwfyyz{{5{*{V{N{ zz0yxwvtsrqpoOm&k3hfmnop2ppppppqqzqrrerscssrqoxlieb-^[DXTgQCN}LJI#GFE"DC9BBC>DEGBILIPFTxY^chVlKp]skvQxyzGzyyvx{wusplhd`\[WSFO KTHFbDCJBlAABCCDFbGJ,LP0SW[_cgknr-tvxySyz:zPzzzzzdyy8xTwuthserqpunm0kj0lmnoppqpwppp_pcppq.qYqr-rrrsqpnliQea\XTPLIFDBA?>K<;:::::;=?ADVHMRXl^7chmq~u5wryzhzzhz-yExvt~plgb]XSeMIDA?W=;:]9 999;J<>$?AD)GKOoSX]=af{jnqtvxHyyyz z6zzzvyyLx~wvv2ttscrqpKo+nIml9m-n4oooppoop*pippq#qqqcpnl_iea8\ W8RMIEB?=;[98i7T654433p3467:g7;75321S0/r.--- -_-/03 5O9O=CJMQX_ekOptzwyzzzyxvtjp_ke`YS1LE?96K31e/R.,,@,~-/102Z4C6:9;?CI-NoT Y^d3hmp"stuvWvvw2www#vv5uttsHrr]qq&ppMp^jwkJl0mmmnmmn+nnooopomnlXj`fb]\WQKXE@;;742 0@.-,,++1**f)**j+k,7-/36^DdJ]PV\|b6fjloUpWq+qbqrNrrrrrrreqqq_qGq>qpq@hiAijk-k{knkHkLkl4l|lmn@nKlk@hd_ZTM{F?:41(-+))3(((((z(`(Y(F(!''''N'(*!,17?GsOW_Xflrv!xy!yxbwxu%rnj^d^XNQJQC8C2-*s' %D##D"""q"l"m"##$%'+/5;yB_IYPMW=]bfUikm]mn\no0ooop+ppp=oooppppbii[ijjjjjjk'&&&&&&&&&&a%%%,%G%&R'+0v7a>;FMU]dk&orYs@tctsr>pmjfxb/\VPSIC=72-)'R%$ #""j"H" "&""W"G#7$T'j*0-5j"iij jjjejwjk%klVm n8nKmk6hcz]VOHA<:33#.E*"(x&&m%%%%%&&,&.&P&H& %%<$$x$$E%?&^)-4:VAHPXo_Xej mo"ppq po7m-k:gd_ZUTNGAq;51 ,G)&5$##0"""J"!!R !*!z#&*/6>EMT[a]fil0mmmnKnnnno0o?nn1mmmmmnkjcjj[jjjjjyjjkml$lnmmSjRg7a[TM%E>@7C0^+'&%%$$;$($4$$%'%R%n%%%%]$$$`$$g%Y&`)-*28?OELSZ`4dsh9jllmmmlki~gb^XRLPF?94/o+('&n$$~####"m!!! ",#',"29AIQ/X^dh;klmmnannnno%o8nn!mmUmmum{ml kjjjjj4j8jyjzjklLmQll0heN_@XQ.82.S*%'&-%$$$0#"!  !$(.52=(EMT[jaf[jlGmmn4nnnooMoxo&nqmmmmzmemRm:l"kkk0k/jjKj>jdj/jJjklkk&gc])VO G@|81*' $ #?"!!!!"]""#B#$E$%%$$$%%9&A'>*-28=kBBFL"Q'V1ZA]`cXeh(ik>kl^kkiOfa[TN8GAk;50+)6'>&%%I$$#)",!F  !#&,q2d:AIQX_dikmmnano oBoopFpoqnnnnYn5nnmrll kkKjjjjljRjkl]kjfbx[TM E>`6C/F(%"b! V !b!")"}"#$w%%C%G%4%J%%&'*.Q3m8a='APE5IMRUX[_^jadgikLlm mdkieE_XQJD%>72-'*''_&h%%$e#q"t! , E F"b$*/7g? G0O8V]cikmmnoo~opBpqqpmooxooUo5o onmllskkXkCk@jjpjklzkjfb/ZSL1D=m5@.:'$!!Y j  7 ! !!"#j$h%<%%& &=&&'(+/49>&AE&HLP,SUWZ^qbQei2k8m1mn%lkUgaZnSMLE@?83{-*n(,'&&b%$$ #&"L! ";$F)5.6/=ENU]\cUi7lKnnotop'p{pq;qqqJppPp[pDp;pponzmelkksk]kQjjLjklukjfaZSSKD"<4m-h&#V! z  i !?"#8$%&#&&'1''(*1-u1S62:>BDGKN&PRU4W[`Hdhk+mYmnmplhco[TMfFf@94j.+(((''d&%%$*#K"!!!*"$$(-5*U%]caim&ooppqqHqqr[rzqq2pppppqQonmimpDp|qq qWqqqrWrrq_q qpq pqvpnlkjj4iii hiAjBkfjjKf[a~Z"S0KD 84/D,***/))''&S%$$## #$E'+29AJRGZRah/ldobop,p pgpppqwqqqWq:q`q{qrpoynl*jiihhLgjgghiiiDez`YSJKDZ<4Z-z'7$!!t qvT6*T "$6%&'(*,i/3 8=CIMQ RTV[WY4Z[2\j^bRfjj}m?oaobomlgiaZ"RKD+>L8)3y.,w**h))('&&@%%$X##B#$'!+ 18~@HPX_fkn-nxnno=ooopqvqq?qUqqrgrpgoJml-jii>hhAg]ggbhbiiideajZSLpE =\5 .'$"! $C \ L"8#%&()6+`-15;&AFGN#RVrX:ZJ[x\]n]^_Pa`d!gkYmoo9olje`XPPI-BK<61-+v))g((l'&&%~$$##"#P#&*w1*7?GOW^ieilm$mmmnEnTnopqpqCqr6rsep?oHnl\jiihhvgg`ghjjJifsbQ[UMaE>K5.(w%"" \N'{X ?"#%&(2),;/ 3e7=CJQVZ]__aaaab3ceilQnMonnOki${"!Z L  !#T$1&[)I.28>E%KRZ_dghivjkPkkkl6lmsnnn2kiea ZSKDp=782^-*(k'~&p%$##"G!!V!+! h !%E)07@"HZPOX^ke(hkgkHkkkl llmnoPo_opqqrkponmyl kjqi~hgg;geh~jjkhfga%[tSLD7q0H+<&{$ !! J 2  ~d !G"^"%)j/5=CJQX`'ejkllmn7nnnann nn lkahd_iYRJqB;50H,)g'&F%$$#" ({6 "T&+3:BJ7QY_eik+k kkllSlclmno6o1opOppq=pp+oCn4ml)kFj?iBh gghijujhgicZ^WQ$IA:2->( %"I!? ; )   " p!!T"U"%)07?(F#M TL[:bgkmnmnyno+onnn)mmkiea[UjME>a7B1,)'%%$$##<"S!M Ix<,!#j(*-h4;CKSZ`lf2i/kjklldllm@nRoCosogop|ppppoo)nRmglkjihhhhj jjiChd`ZNT;LEi=6r0*'e#"R } " ; # 3 I !P!"#6&G*Q18?FMT[bgklmmn9nknnn1mmmmjhcG^WQ I@Ah:H3e.s)'=$$3##a#"!! . C"%*0=7>FNV0]bg1ikjkl4ljllmHnFoo@o7opRpRpCppp oJnmllkj?ihhigj`jkii f?b])WPIA:q4-)%#! J Y R !!!"#B&L*B18?GMU[bgkuln n nLnHnnn7mmml$i8f(`[OTLD=#6?/z*&^$Z""v";"b"Y"! z  $'-M3!:B-J+R!X_{chijPkSkkllll8lmnnnoBooooo)nnnJmm4l^kjiiei`jjkkjjPheO`Z[bTNPG?z82*-|(&6#"?! ! !+!!"#6&)06>4E0KRY)_dhjl[lmlmmmmmmlPjgIc]WPHA9^2,D'#", !+!E!!!!V &5pw "%&`*06>FPN,U\7b[f>jkLkkhklkkpkl lm\mimrnnnnynmsmmmmmsllkWjujjjkzllWkkigcs_XSKDp=6"0+(%D#p!! !! !!!A!_"U#%)8/5!l!x!W!`!/!B!K"=#%(-369?F1LR~X]9aNcfVhjkBlklVlljIhc!]VOHS@92Z,}&# v|d W l /P "%+x07>FNU]bgjlm1m[lllkkIk+kZkGk(jk kll&ll3eig-hj\klmllekkkklmm[m2mclkheS`N[UO"G@y:"4A/+k(Q%0#")!!!!!!"~#m&(-_17] [ c | ] !+$G(9.4;CJRY`ejllnmmmmillkQkk#jjfj,jPjkkjj_ addgQiklm8lllllm@mmmmm]ljgc_Z2TiMF?94/,;(v&!##:"""o"r"9"#&(,0b49f>sCHMQUY/\k_:bhdg&hGiiiebv\VQNH@93",'#5 j&Y t!!Z!`!`!,"4#`'(+2p8@GrOV]chlmnqmmmm\lkkjjjiwiii&i*i hh*X\`:dDgjlZmmmmmmmn)n;n0n]n(nljfc^YSLF?: 40+(%$A# ""U"P" "#/%:'+.V25|9>)BGRKUOySCVZC]ad-fhwhngc_YgRKD=60w*&n"h ]? [L` r!C!!";"O#%*9/c6n=DMKS2Z`fjdmnUnmmm|ml@kUjjLjiBhoggg~gBgfEeqPUZ_dvhk\mcmnnonoo$o(oo4oo*n-lifb^XRLE?:75]0f,)*'%/$]#}#<""#;$&),e/v25Q9=AEJNHR=V Z%]ad0g0gFf\a]tVPIB;4.)&V#!t|(.Y !k"2"#u$3&)6.=3:AvHOV]c1hkn3njnxmm\ll:k`jiihgfedccbWa _}HO*US[avgjmnopEppppppppYpmonl~j!ffb]X"QKE@ :510-*['&%0$##n#V$]%'* ,.1-4(8;@NDIyMQV[_}bleed_ZT*MF@9r2Z,'%|#" 1 n2 m!?"7"$f%),27>ELSZ`ejPlnn}nGm_llQk}jiiChgfodbaT_^P\ZX@GWNV>]chlnmpxq7qqqqqqqqq[ponlheaI\zVQ1KFmABGnKP)U'Y^addc>^EYrSLF=?9G2[-(&%*$e#6" "IT F!!##$Z&)-16:963Y10/'-+*a)[)Q)8)*,;-~/}147;86f420/|/.//90(1247:>BGKOTmX]`dcb ]iYSTNI2CT=7l3/.- +*(;&u%E$R##{##$%d'* -16;A#G MyTY_cgjelmnn,mllkSjWiPhgf4b_;ZXUPL GuC>9%D.8 AKMT\d@i1np`rrsos1srrrrDqqApuon0ljheWa]`Y?U/Q>M}IF Bd?<;871544Y4[4;45E68;:=AKEIFMQ*UZ^addGb^8ZUQKF4@;s7432+0.-+?)((['''|(Z)S,/37x=Q;:87c5320/w..i.a..083:6}:>CHRMSYI^bfill6moo5oLnnm l7k ihfd[a+[VOI2BW;5/*%WL'j0:~DLU\cglmoopqq`qdqKqqqpp?onn8ljgda)]ZWqTQ}NKI9FE9CC0B~BgBRBCD6EHJmMfPdSVJYW\`zdXfhgf^b_\NXTiPn{op_p'ooFnmljiig)eRa]W%PIeA92,G% 0M([1w:VBKSrZ_dgj}kmknioeopp&pwpppYp&oo^ngmNk3heb`#]eZXhUSNPNALKJIIIJWJKM>OQTWZh\^adgikj'hecf`Z]GYVhROYLJPHG3ECA?>L=3<<<,F*LvRWk\0_c&eh2iklmnzooDoop0p8p:okn>lk4ihf:dba_^\OZYXXXYY\Zu[]_bYdfh)ikJlngoofnmkjyhfd]a_U\ZXWUT RP&N+LKKKYKLFMNPSSVwY] `QcgRjmXo/qqrrrqq4onLkif;b]XQJBf: 1!'_ @  $.+r35:ARGM RWA[^b4dgikl}mnFo)opvpqppnmlkjiShg f:e6dba^`t`N`@``abduf0hikPlmnoqqhqpp.onlk i-gReycb`_ ]l[YWVTSSSDSSTUWZ\_tb&dgjm6o_pr rs rrqpnlikfb^|XbQIBa: 1P(uk ME  ~"!k(2/ 5;A*FL$QUY\j`5cIegijlmnoaooopnmm9lkjj iWhhhAgdfeeef'f\fghijlm mn|oQp!qq{qqmq0ponml/jihgf_dca`I^\[ZZtZ Z'Z Z[]_acegj l[n/opq|qqpp#nmj=g;c``[VOH@l80(| mn E>_pH 6 9#z* /5|;Q@FKcOSX!\4`beJg;ikm~nno"onnn3mmMllKkk[k,k>k]k0jjjjkFkll~mmnnno#oUop5pqfqqrqqpp3oennmqlkjriBgfe!cbaa\```axb|deg h^ik*lno/pepqXpp,nmki-eNau\Y SMF{>6/k' iCre= D%K*/5Z;(@nDI MR"VZ]`=cehAikkkPk,k"jjjTj7j1jiij9jtjjk5khkllxllm mmlllzlllm8mnqnowoooooxoRonn^mm lBk;jhgffeidddefghijklbm"mnooCoRnmlAj)hLe/a\X^SOInC;4-f&m H !auk }  $*&/5:>C>GM QUX[^adjfyg&ggggghh]hi!i\ixiijjjk!kFkkkkkkkykjjiij jkAllmnMno>oop6pppvoonmlkjihhFh_hikj5k klAlm5mpmnn:nmlMiheLba^YTSOJD>8>1#*$2  /f+TP  z%*/428`9x3~-N'2!{M: v Y#D5w $)u-26j:?CG993-(" CazL!3 S liE#(+/a37;>A_CFI%KfLNQOXPoQRT6==>Y?@BxDGILOR6UX[^<_abccc1bdaa@``[__``j```'^][YVT|QMHCm=u82-(" +S5%+[W% X!N$(,3.12j4579;q<>v?@A7ABBC8CDD,CCA@>=0;H9s7542112724T68v:=L?CFJbNQDT3VTXY[$[2[Z`YYXX/WXXXYX[WUSQ NLIF'B)<7R1-4(# = LO<1v*tAi]M r w#&(_)*,". /135L677\767@7x78G88@76543 19/s-+)(-'y&'j')d+-/2t5)8[ rM:/b^  7GjL !#W$&(*,]---%,,~,,,,,++)('P%$0"a JX !#%(+4.259<;:8%4/*%"A>& X;MXeT%Mj2+}@zZ  5][i' "###""*!!u! 5l"x-s H#&*t-03P5$78198999::;Y;<;;::87,5462T0K,(#X` ,T=#| 16 c(1^BFp twA5B\j k , Y IO(dh"%')E+",g-.-./P0901|1h14004/.-,+*m(<%}!om! *I- jR.9K A HWxk*MG y U o"o6f n B   &5Zz;`z3t zI!."#$d$%&&-%%%?%.$$#"!$JsC Wg!f4o+'oG-i90`qol~m3h|8  u  J + N1{7}[ l 6_XFd^]  =F t x ) :F+2Q|X!"qP!oOE1 | (XfG6FLx5,D(c!P:H2L? z U}.qqAL g b C 3d0ye0Fs/2fJ!U45E!K 75& 9(Cf,dA0,^+'8sY+ % V f c { P % ;}0n FSf5lD1_wJA2@zNH1Mv6WOJv.t%[x xK??PK]w'F~IcLOVWBmBg#k#IPq@\ka_H6bX1HO#>ILZWht @3Ts 5?4B-# 1WXOo3!>8 5ny6c`q_V>H`}!Ba=-=q s>?2AoC?_++xU'}sb3a?O~2b)X;.YG1EcoljCSPEChuL4D#Qe ))FT h"\+.!3O~qG23KQi t\A" %gd#`N.4kF< Z]Y91_|!jFb)DURMgr`*#B:8zq(Wyh'dQ*29[{UAE>NoyW:!%@[xzQYh7`_v@WMJ/:\V \Nt :Vcaf`[?$9EB=>Dbj28'?\Mu_]`shXN\p~lap~dF86FPf{ Kve?p[ &dwS%iZg1NabULMdc0FQG@BKhrVaHI?[Cjejyq{aA2#-Af9p<J 'Jx_3 lSNcw~tA[`WE9?_lMDH<;HawvxnJey#6}S0)9_l +Zmvg\E) kWOXada1GQUM=6EUX? 8X]L=Mhpv}OCjy$_{dL<)/;h b {!ETbZM6#zkZZbf^&7MUP@45NU, Qo`@<Nhzqg{}SC`//i[[`RNS{$ uXx|%0GL>($## p^ceR%;Pa\A0JaT. UndJ7EdszsTE\v(4v"JQF*#t^W]T^|cFs_s7AF5/- `WM+(=]jZBER_R ,ee:3NqVCTH(tetc80& o_`_wSP~oJ<\&LN?,!ZA- %B\j`G5EUG,Fsw^F@Prxg\f~}V8#IYWI2 |wxwD,)IpfQQa3A(*" Q.  6\hE"@Y]>$/Rt}hJ<P}hV]x~YRl!jeZ:~srv_5(Gu^>N|v 3*!7)i= 1I>'$2FRK>8C]rufOPxw`Xc|yz9`^dM,z}hD;Ntb<;dz$%\:$ +32,(0HYREEUm}ph|x~jZ[k)>UQC {|~eRSYneC8:]!*,S1!! !/2,/I`_PFLby{xtfaey5>B.{aTQcvy\O[i c4   #797EU_]TMQbu}xxwuln{)3(zg`W]nwihu |i`V<    %19CKX[ULCNnyqsytsx+0!gTVXfxytsxybB/  ( (7=BOXWO@Ea~lnz}kjux|~(1.hY]eqzzsmpztksZ>$" 74bz C1SGlqWD_:Xj#q8}O19 H O   ! 0 1   E   V [ 6 ,nG0Gz\epCljz/ v HLa@sA $Xb`LJu\9G7 o m z p 7 o &  * M b R 2   # % ( %   9 r v  = M Z n 4 | A <<gdNzj\ Z}I'KSN?p 1!   e b N  m 3     $ 5 8 3  } x  / L i y t  ! )   * 8 Z x R T ' BxXK1  JkKTzeCQ"x&POX|dM  8 q 9 )   s Z < - * 5 = A E : +  V #  8 p  C ` z i 1 u j    p E c  Y!1k{pT,B%}_0{l E O  g   + 1   ] >    1 T x ( G \ c y } z O  u ? " 6 P r | c H 2 0 * K   8 X g uT8-UVQ3J^-iUiOCTkT>  s ; r ) d y  R     N w W 6   3 I M O _ v G  & 2 8 4 4 1 ( & ! ? w . 6    & 9 v K t V=HiY NTNsX\'}4s ; y y  ] ;  . Q { { ; = &  + &    Xc8&"6ESWby n  *       . L f  m w  RTcBAIXu$WVmnw q l  ,  7 * f l F R \}do r> #S VJOf>7IPaw 2  ` L ]fy5#_zVd#GFXq  _ X Y D   q ? 4 D Y /9 M/DlOs[zlX6%?mik!>^d3D3  ) T  2 M n  j G%0m`} $ y D 9  e : ? k Lk"+_X<.DYjiaKJW_jw^4 9Uiq{Y3r:3uN]C<d  8 *  3 ) k _ B @ o)hv& 3 $ < " h  b  < `^D-*_Z !ei3V.v`\rfJ6.'-5BOVVVUjy$< |XI`O2S  % 9 R y F [ L 5 L  x  + ^ 3 kb l ^ ^ j P 6 7 C q ; H 7   $ |sW"C  ^_*n-B(Qp.  ->PRN38bW[q\h43yG B  6 n [ K J ]  >   ( 6 $y?P;00/SI&k"odn!1?(b5 $6KYk}} X)x~f;&g  $   W d p Z 8 / W o ~ =  3 l z 6l8.W  }{>A^"d_Q*|L}\&sI0:QpgIi9"*]l =K[ WjlO  p   x U  HF0f>KO?<_F-$/P&(@|paF87Me^@7LKV.6+[V E r ,jfDX>%6:fdM3' 58ap,HSy$R-9 uN#iA-(./$ 3w/wD~UJj@{w]i~EAgSq_{O qud;>J X8wS0ugU%@c}uuoI-qzINF5%[ q;|R Zi*Eff, A74 PSNdy\4e ^  w!Lu & n ! C Z r s o O * p E zh(e_CV;kh\s#u8A( G b+;cO1XKk_ L4] -#.Qdk l 4 26H   %  x khX,OMY^cfol_>r> `e Z ) 6 PV"I;3M%$k@J=%D:v3o4s<E\z+r n [ p :%GyCi2f@%e$@UE\A, A } VUBN{Wk>VET{uYBmR`^2%zf 2EWt !p!!o  X !"#$"$R$$w$a$)####$ $!$######O"""7!!!% :KA~] 0qA/j+$@;Y:@A:,Xd>SDE]  >4?_ !"#%'i)6*+,,`,++****+X+,-l.(........X.=.[./ /A/Q/;;;;;<;;;':~988 7;66W6544H31/-+7(%#> ICm}S p 8`ao9}cpq | U'Pt Z < t-[!$J'),Q/1e34568(:<=?&@ A ABHBZB)AArAeAdAABGC DEEFrFGGbGGGnG!G*GGHVHHHI%IwIIHHEG<;X97'41/, )&p$"y!9 tm,3)K !Sz_5#U'*.t147:<>?ABQCEGI4JKLM5MMMM]MMLM;MkN'O0PQRS}STJTTTTJSSTTUTTU.UeUV6VVVWUTTS RPP)O'MLjKIH&F^DxB$?=3:741.,+ )'%# s</x/)"  9&y/v+PT)!$G'8*>-1y5D8<;?BE"FHJLKMJNPRSDTUV~W WWWWVVVVWIWXY[[\]|^&^c^^_^^.]]b]]^0^a^^__`8``\` _c^^3]\\$[YXVoTRPNLJnHDF!C@=;86G420.,7)'%$" ! e m# N@)5&$#F"k!!!#$|&(+[.1L4r7;?QC5FJfMORPSTVWYuZ\]3^I__``]`K`__``^aabd eIfTfg1g4gZgcggHff effXffg g6gh9hihhh+gg]fff!ecdrca`4^\ZqX$VTR&OM JGD{B@=;97T420.Z,F)g%!.Wt Aa?aH{310.j-,,,.!/g1n3U58;>BErIMPqSUWY'[/]^{_`ac cde3eeeeee}ef*fghixjkcl l,l,kkklkkajjjkAkkkllmmm{mmm[lllUlkkk.jii&h$geccpaB_c][YWOTROMK`IFDdB5@1>;9I640- )%%}"UWp8u { _d 0>E<:h87777d89<>@CFIYL[OSW9Z7\^g_aKbdVeWfg%h.i8ijvjjkjjjkkkl6mmnopiqqpqfqAqpqq(q pooopLpppqqnrrrrrrMrqqqZqppo\nn@mlSji gfdc%a3^\ZXVTxR OM0K5I:GD^A>;S73/,^(%W!^f0 v_qHPF6DC"BZAABCXDFHK6MPzRUY\h_acdf'ghhi8ijklzlmGmammmmmmnoOppqrrs[ssssuswssss5rrwrrs'sGs^ssstXtuYugudutttUssxrqqpoovnmlkjihgfdQba0_][Y[VTS3QjO LYHEB1>; 7Z3/+'#  pwMRQONMTLLM*NfOQSUX&Zd\_b/egIhj7k9lSlmRmlmmnonpp@pppwpppypippqkrrscstuMuv9vBv4vvv6vdvSuu{u8uFuruuuuv2vwrwx3xRxwwwHvvu.t+s4rfqqEpp$oonnUmmUlck_jBiihUgeHc`_]m\ZWT0PM4IF#B^>J:761-) $!MV S[ZOYWWBVVW2X"Y,Z\^s`acehijkklmnop p oop]pq}qrr&r&r3r&qqqr#rjrsVstetuvIvvvvvvwwvv^v$v"v8v^vevavFvqvwxxkxxxxCx w~vutsrr qepppQp-p?phpnpHooLnn=mlkRigf[edb`]ZW'SPPLHD@p<`8I3/+'$O udccGbcaa:aa9aAabcdf'g>hj6kmnopNqTrrrtr2qrrrsnssssssss`s&s-sWst/ttufvvvvvvvvw:wXw@wvvvvvvvBv@vxvwfwx#xSxxxx*wvutss>rrkrr$rNrsvstss_rrrCqpotn*m l,kjipg dpa]ZW~SOK@G8C4>:6z2O.+)$ $Viuhh@ggggghhioijkllmo p2pqr rs\ssAsrssstbtttttttjtsssttxtu uLuv&v[vKv+vvvSvvvvvvvsv>uuu>uu uMuuvPvwwYwwHvv5uttssss rrrs*stuWuulutt[tsrqqpXooo nIljh eAb<_\Y4U$QmMIEA=]9J40?+-% -mmnm3m6mbmomkmAmUmnUnnopqzrIrs5st"tttttotwttuvuu tt ss:sss'sstxuLvvvvv~v;uuzttjssFrrrr4qomkig/ebT^[X2TPLHD@=;6@0*%No0nno)onoqo\oFouopvpqqrsvtt|tumuv uuuuuuuuvCvtvtvjv@v)uuu!ttu uMuquuvvpvvvvmvkvsvvvvvvviv!uutt ssssstWtuu uttstrr[qqq[qqrHrsLstuvCvvzv\v uusutt9ssss|rr0polkjhjfcv`V]MYVnRO JF{A;m5E/\ppqpqqaqkq\qkqr.rsstKuuv vw'wx xwwwwwow(ww!wTwhw;vvv'uu`u%uuuu/uQuuvOvvww)wAwSwhwnwkw]wXwMwKw$vv~v uuLuttttu6uquuuEtssr%q`pp@opp^q qrs;stuovv@vwvcvDvuuu|uWuJu=u'ttsrponmlFj`geb_H\YUQ KE?9:ppqDqr!r;rErwrs]st|uuvzvwdx&xyeyxyXxxxxSwwUvvvv\uut's]rrKr qqqqr/rstgu$uv~wwxwwxx)x xxxwwwxw(vvvvSvuuuuuuStsrqwp2omm3lllmnxopqrhs+stuxuvvvv*vOvovv~vsvGvRutsMr/qHpon7ligOe#b`K\Y_TkO2HBrSr\rs]ssttMtu2uvzw$wx;xy yztzzzPyyyPxx wHvv/utsrqq!po5nrmmllwm n otpqs0tauvwBwwxx#x#x#xx#x wwzw vvvrv4uuuouUutt+s?qpopn lk-jihhijlmogpqrsu2vvvw wSwx:xxxxXxjxwNv!u t(ssqp.nQlTjig6dfam\X_RLrs)stptu,uMu|uv:vwwxxhxyytzzpzyyyxxzwvutpsbrqqpniljihgfeYddegijlnpqrgsuDvvw8wwxxx3xwwFvvhvuuVtt>ssreqpnm2kj%hg?ed^cbbcdfhjlnEoqUst}uv]wwxvy6yzz+yyyyx#wv(utsrpo5mlkUifb_7Z3Trsqtgu0uv(vPvxvwwxxzxxxyJyyyxxhwvutVrpornlwjhof?doba`_^#]]^`bdgil)nq sPtvXw9xx|xxxxxw|vvv#uu t"s)qpozn:ljj0gepca`_&]\\Y\p]^`beTgjl np;r&suTvwxyz{{n{V{c{(zzBybxmww3vpuBsr]q^ppomkhea]*qrstuYuuvv/vvw@wbwFw3w|wxwwvutswqom)jhfdb`m^\IZYXWVUUWDX[]_beehl o0qt3uwxVyy7yry7xx?wwKvv u#sqomkinfc`h]\[YWVeUjT2TTQUVXZ]?_behh jm8oqtuwCxyz{G{r{{{{(zyy9xwvuxtsr)q`pnVkif}bpqrstuuu$u9uuvvuuv vrvv utgsWqomdjgeb`][=XVTRQPONfMNOQ SVUfX1[(^bfjmq0suwdxyAyzyybyxqwvusbpmk*he a]YVSjPOVMLKKLMzNPzR:TWkZ^ae hDkniqHsuw}yyz{2{{{{{{#zyy[xtw/utss r pnljgop_qrss|syswsysstt+t ttqttssHqpGmkNhdac^[X'US)PNLJIHGF{FFGwHK&M+PSW[G_dShVlForuw?x{yzXzzAz ycxwuurokhd`![WRNKHG EDBBCTDEGI9KNQUMY]a{e[hloruw x*yVyzozz{{T{"zyyvxwxvtss)r-pomlj3neoOppqxrrpr\rEr&r0rRrnr~rirvrs)sr q9oembj@`BDGK"OjSY*^(bgkosvwyzZzzyzcyy.whuNqmhd~_ZUOOJFCA?<;:!::<(=n?"@BEjp0onmHjzg?b^XSYNHD@>.;Y96j432W1r0/d..01a358e;2?hDIOV\Yb/hlqtwyNzzdzyxvMspnid^7WQVJC=8531b/F-,l,@,-/X1-2469=bAFvKPV}\a.fSjjnIpsuvvvvvwnwwwvuuAt|srqppo:n~n"mkklmymnjnMmmmammmnlno4nnmkkhd^YSMHBG=:7420r/--,,\+d**+,.U/254r8=mn.mmikiea$[ UoO(HBD<73}1.,+*3))v)2((m(8(Q()C**,.-1f4:@HaOW^Hdkotw5yyzxxuMr.m2hBb[UNF?:82/6+)u'E&H%Q%W%c&&'(*>+-037@371.*) '_&&%%%&&#&J&p&&&R&&&&&(*/4;C2K!RZ\ahnqvtu?vuWtrptlGhNc)^WQeJwCa=7G2.A*'%$x$&###m#s#i#$%& (F*.3B9]?tF4MS|Y^dgjlm5mnn[nnnno*oooMnn`nVnnwnnhhhizj.jjjjVj5jqjklmCmVkjgc]jW+OHA393.*(''%%%$%(%$%9%3%=%h%%%%A% $%O%g&({,~07>EM0T\Zbhloqrar/rKpokhd`XZU$NHA<)7d2d.c*c'%$###P#9####$ %'*s.:39@GNUC[ `e8ijlmmmnn1n mnBnnnnmmmmn(niAhhiJjjtjjjmj?jujkmm|mqkjZfaZT L~D=a5/*(%%$ ###$ $+$&$$$S$v$w$@#####$&&)-`3T9\@GO-V]Tcgkm%noonmk\iVf b]XRoL7F@l;N513,)c&%G$##I#2"""]"\"X#/#&G)A.4;*BTIPW|^2c2gjl+lm"mmmmmim@mtmmmmSlmmommn=j iviJijSjjjjjjk?l4mTmmkieI_XQIB :3&-(&5$.#""""#2#b#k#q#####T#%# #T#h$q%(x+16=ICJ}Q[W]b2fThjk}lllkNjThe|aE\W*Q*JD?o94p/6+n'&9$$_####]""q"!"w"p$#&Q+07> EM>TE[a#fbiDklm9mmdmmnmHmhmmmmQlm mmmnFjjij jjjjjjjk=l$m'mCm>k#hc^VYOGe?j70h+ &I$D""G!!!""Y"""#-#h#|#I"""##)$ $':* .39?EKQeWc\R`cfh6j jkkkj0heb\VOIC=823-)v'A%|% $$O##}""!!!"#',G29AnIPsX^Dd(gk l*llm,mem`mOmymn n mm+m]mnn;nkk"jjjjjjjjjk.kllljhb\aTM(Ed=P5.F)$"!P!! !`!!"."##o###V###s#$v%'P).3Y8=BGLR\WK[_Xbdgiakkll ki0fae[zT4M|F@:4/*(&+%%$$ #""!j!F !|"& )076>'EM>T[af4j@kmlmZmmmnnennnWmnnnno8m%lDkkhkdkjk,kbkjkfl"llljugEaZRK C9;3+&"!t u  !T!"+"#d#######$%N'{*#.y37<>@UDI:NRVZH]`dUgOj$kmwmml6jUew_XPIB<6H0+(&z&1%Z$$(#{"!!, 7 !#'\-\3;+BJR`YX`>eikm9mmmn&nWnoooo nno+oPoonemalkkkjk(kqkjkhl-mllj7f_Y QI|A9a1*+%H! IX W !1!"#[$$T$N$"$2$$%N&'(+/4q9 <@hDMHWLuPGSW ZL]aeijkmn$nmKkg&aYRHJC=:61i+(&&Z%%$Z#"" !i! t #$&+19}AHPX%_edilgmmnJnnoobopIp]oo2o,ooopAonhmUlHkjjjk$jjk0l mllie^WOG?70(y# yL5  {!2"6#?$$w$$$%% %&),05e9=)@CG2JNyQTW[t` dhkmnBo$mlhZbZSdKDE=71,-(&&%%y$$#9"!! ! "%F*0d8?{GOWD^djmQonoXozoop!p^pppQoopoop0pupYnml9k%jiijPiijk{llliweQ^(W!O GT?q7/(# ig( !# #$i$$%&%%'(_+R.27<?[AE1HL[ORUW[H_dikmmnmwlEgb[ZyRKAC=S61,G)L'8&&t&%i$##<""=!!!v#%1*5/7 >xFNV^sdjmoooop$pRpfppq proooopDppoqml$jitiiiwi"iijlll0i$d]VNG4?R6/~(# ` :!l"#$C$%%&W&()- 05h:t>ADG JyNQ?SVXI[_di.kmnnm}l>gb?ZMRJC=61,)'''+&&%%$c##<""J"5!#$)X.5=5E]MU]tcj=moooop*pmpyppq pooop ptppoqmkjQhhkh[hhUhThikPkkhe^LWOH?@c80)E$!l E  &6ht !;"#$Y$%o&'')+/39*>C F%H\KmNR TWXZs])`eCiflmnnlkifaY3QxIBEnLOQViY2\X^K`9`a ``acfiklllig@a[T$LrD>8M2S.M*)n('&&%%$t###@""c!"#"%*29?AcI^Q X_-f&jlMkkkkllm;nRoEoso`opepqrpDnmAkLih;ggKg>ffgh2ijtjhfa\.TME=60.)%" { "V#$%&'*b,05*;l^mn"nsoopGpqp nmljuih:gxfeeeghijiieaoZTHLD<5\/)%"! j .h0)  !|"#"%I(,-17=D_KwRZz`f%iklmn:nRmmFll|lYlkjge`[TNF?w9k30,*)('%$#"! D 8 0 ; !&+B3:`B^JPQYS_pfiZkjjijjxjk l!mUmnRnop pq@G{NU]chkIm~nooLocnnmUlllpk)iNebh]UWPIB-;5z0o-U*"(f&&% $+#! xgSv!+"'a,4;CKS ZT`fGiOjiiij)jjk3lCmcmnWnoop$ppon lkjFi5h[gffEfXgPh}ilj i|iOfc^1XQJ$Bl;4.a)%#!! m X f ! !!"#S%)r/r5[71~,(3%w"! !!!"#r&4)/6R=DKS:ZQaglWn.oop9pponmm7lkifa\VIOH@92.)'}%e$$##:"! ) #&, 19R@HPWo^bgijijj[jmjjklmnnbnoZoioToxoonGmlk6ii hqgg#g.ghiiiihea]6WPIA;4/*'a$ "l!&! !O!"#A&)/6>ELTZbTglnhpop9ppoon!mlkheh_ZRKfClYlilmRmnOnqnnnmvkhe_ZQSM,F@:4/+5(&%.$C##""d#2$ &)e-28&=CIHNTYT]`Nbdghjkbkjj gcn]fW;OHA:4L-($!~+p o !$!#&*/6=DL'SSZ`hf imAnso*nngmmllkkkk%jjrjmj`jihh3[_fbfiklmllmm/mwmnwnoAoooo=n8kjhc_XRLqFX@p:4/b+('%$##"s# #%(u,05:?D?IO:TX`[t^[`cehwijihzd`Z;SLF?_8y2a,a($!+_@A  y!L!"#&)/*4<(CJTQXP_ dSil{o4ooo nnOmlkkUkEkAjiii]i$hh@g%eT X]bfj(klmm}mmnIno=op[ppq0pomk3gb]~WQL>F@`:50-*(V&%+$M#w#$%'+z/337`;@)EKJOT;WZ]`cmfihi_hJgc^XQK2D>7]1,8(%T#!! 8 !l"#%=&*.o4W:lAHOwVb\bgLkn4p?pOp4oMnn>mflqkjjjpihNgjfedcbH`TLRX_ dhk,m$mnuno5oopkq/qrrrrreqp(njMfa\W QL9Fa@:51.+)z'7%$$$& 'r*N-148&DEJQX^UcQhIknpq&pponnlkk"jhih\f=c\`^J[Y0VS\O:BKESZafjlo ppqeqr{sat?uu2u.tt^s@qolXhe`\WRMHxC>;'7O4d1y/--J,-.H/147:=AEJeNRVY]` c[e>fed`\[UP.J}D?9*40{.s,+*7(=&*$###o#$t%&)/+/38=CIOVn\kb fcjm!opXq&ppxonmlkkjCifg+d=`N\Y1UQN^JUE1^9BKS[afj m4npLpqrjsZt2uuCu7ttysrpn[kkheGa]lY TTOK2FC?;87544(45F6t79<?AEHLPTX ["^ba0dQf gfyd`\WfR{MlH@CF> :643e2 /-+i)(((9()Q*,i/:2x6;%@DJDOU?[+`pe[hlAn'op]pppAoUnmlak4jiXgd`[W2RzMI$D@ :'0:FCLU?\bfk mkopqrRsKttu2u)tttshqp^n4l`ig'cj_v[VRNJFCC?=;;@:;R;@3BDGKNR&UY%\w_begchgXea^YGTP/KG6B?c<:9j753.0/I.--N-.X0&15l9V>)BGKPUZ`3dhk5mo;pbpppp onYmLljjh[f6b]OWTQKF @;960g'1O:CL~T [c`eil!moiprqrst t4ssssVrcqIonmkDhBd`\Y9URpNJGiECBBB}BCXCDFGJLORUX\ _[beuhXiji4gd9`\XTPLI F"CB@\>X<;A::;?;>NAEIM3PToXM\Z`dThjm`npqrqqqpojn9lqjhgf}b^XeRJlB;3-w'4!L (1H9AJ-QW\adhj?lnOppqqrcrrr/qq}qrqpo5mJjhgda_V\YVTQPPpPPQEQRTSGTVX[]`b_dfhj[lNmDmmkiufdaw^\)YyVTQPRNLJnGExCBwBOABCFTI2LPRSVY]T`dJgnjzlnpUqrrrr9qspoGmk0heb^XQJlBC91*M$#~ @ (/7@#GNT5Y^Hbehkm`nppqqrqqqqrr8qTomkigfe b`^\ZXXX.XXtXYRZ,[] ^`c(eVg`i`klmo2opionmk"hfdbw`]{[3YTWUSQhNLzJIIIJLNQ6TMWAZ#\_bOegjmnpqsUsssJrrq%oQmIj5gdcX_FYSRJB:0(d } ' &`-5,hDJOTYs]`cfiRkvlmnowp@qqrDr"qp^onmlLjihhgg fgfeeffpfg,ghijkmnwopqrrs[srqponTmkjiPhfeca_][ZZXYYZ[4]^`bdfhik7lnoqrds,ssps2r0qLo`m;ifb^xXqQJBy:1L(G 0KV  m E&,3 8>}DjINRVZ^adfhjkmnnoptppKonn=mlkjjQj/j:j]j/iiij%jSjNjRjxjk5kloCH\LPUY]`cegj6l_mnnonnnGmmEll5kkklOlllmmSmymmqmmmamLm:m0m6m(mPmn&noupppppppppppponmljrhg4fe dd5de fEgijjkYllmno@oppq_ppeomki/eTar\XSMM\E>a6r.'wwb l}z,[Z  U p#6(-282=AEJOQSWTZS\`cfgiYijYjwjjjjiiiiRiHiSij$jkkmkkl!llkkykjj(i~ihhiQj'jklm"mnPnoppkpptpjoomlnkihggfofgh)iSjnk6klNlmtmnNnoonmQljh"daR\X9SDNHB^:3,%J  Zt^C 2 E9"',26;U?DI~MQzTW[^accde|efMfffffg!g[gwghhi i~ijjAj!jiihrggfeTdddefghijklnooppqbq:ponmlkjFivhiijek5klBlqllmm8mmmlki=gdb]YSNID>B7z0T)#R QL'\([G V^3"',I059V=BbFoIMP;SVY[}\w\]^E^_"_r_`a,aab>bccmccccObb?a`__]]\k\l\~]6^_%`a?bd%egdhjdkln3nnn]mlkjinhh)hvhiRijj^jrjjmj*iiihg da_\`XjS:NHC>9$2,&v Dpp z Q2G#lb 3d!Y&;*.26:>BEHKNPRhS TTUVEVWXY[[\\]Z]y]]][[YXWVnU$SRQQRRSTUWXX[]F_adfRhVjhklllkjihh*gggh h)hNhvhzhh2gg fuec``]ZWjSNH>C,>&9 3z-'!11 S*SoC0,WPZ )!p $(%+o/I3N7_:=q?BD(EFHHIJKLMO>PRTSTTmTXTTSJIHFDB@><:9-77789@:{;=A?GB"DH>KsNRVQZ\^_`5___m^]] \\)\\P\\\\@[YWxUMRPjM]J E@i:50,( "8ld% 8 Q{l}4i)kRC\ 3}< $(*,a-#.0/y124E5}6789:;=)>E?E???t>=[;:8=6(42 /.',,o,1,-J.g/_1,3668}9h4.*&",6b ENk-}2v5P|82P2 k @V _["##$0%O&(*],-R./a0:012\3&3434 321r/.(,,*,(%#"y"!"""#$&[(h+[.C15#8=A"E>GJ!JKQKG>???!>>z>+>Q>?g?@&??+=;976 420+&"d$ V0Lx UeR1R}B&uc:d9x L ~ Sb!9$@sZ@v:T4G#6; $#i&*c-012M223r34"4_4515_5)54k32,0/X-,&*X'o#  Mp)YB*x3 Ez8/gg v70W4:1 > m |D|H$C45,+P  s E S N 8Ym\(<M"\$t&&'m'()**+B+**4))@('&%$"{Xg3WF i (( $M+lK&7LI"aVtF-g0 J'(g5y ~ ,  V q { L ($?^E % 7 6 @5@ D  3'f$k:v*&kE(j87`{c~wR :Xq lbnJnD 3{r HR)2=7 : ~F=t;ky|    C }9PV$)uT"tURC5u@}A896OvV06Mt/     _ z27Ap-Do)0jJ%[AM[*&E!!jmwq^72[pN   wF,`pb:  KOgTsEXd$u2J%b?)YqEA/=~ \(M%$`::d( DBr  g?BZ|#Jnun]GZO>/[wO@gU#MSvA[g^Z?,\T6I?.19?PUm249Wv/fG7ILH'a@0#BVyH/C@1?@y;kfq^Q8Ec~"(F]4',2oQ,UO ,f;Ip)'a$wR]!d4]7Cg'};h5Y5GD2IgsrnFTPILr~Y?H!H_ $\s*|=ZT9:Kv~_6%*IYv |i? q!<bS9/Y=4gEkO/'XwhJd,DTTSmxm<*B60ot7&[{9zl810PyqJ7>?VxkV5 #RgFnOWUvAb99'2RQ]Sw 8RbehadO 1@A96:[|9.u2=[ZjNNUoaQK]t}qabpqF+-GQatAk>}j "^xT%}h^m3L^e^SPjl;BQJ@<B`yNS]QMmZa[bwq|jVE*)?k ;~DIDq]3 iONeuwoE[`^QDEcpR!DMD@EXmnwdFh8O 4iNA9BFas !Ldo`V@% fPKW[ZY5JRXRB:J[_G4XcQ;F`jvsHAq3$rkOBE;=?d! f :N_XJ1ucX\_]Y)8LTOB;@Y]3Mq`<6Ie||usMCf8< |VCL_XRPr&u L.HN>%"$$ reeaR%>Sd_H9RgZ3Vl_D3Cg|rYOg9 DzBG=! cKNb_gl ?{dw ->F530 gWI- -Feo_HJVeY#-bz_71OwfSbb1*4u^lZ-"w`\kqe P{WGbCK<0$]>' +G_ohO;JYG*DnrZEAVxodljH*GRTC*lemP7/InjWXg*;( +% O)  6`pO&&?UW;$.NnxfKCW}gXcZMaig[9 zmep^6+Kt];Ly,&5)d9  4MC,'2BMI=6>VmqfTWx{gcp{u3ZX`K)}u}lE<S|kA<f| X5  ,54-'-EWN?>Nhztm}{lm|0JK>t]Y\smNDBa "%R0   &22))D\YI>CZu}}uoq.9<(hYUdu`S^h e6   &542?PYWLFJ]w|{}rp{%,!o_[TZj}{lgq }kaW>"   #/8@GTYRI?Lq}{}y{')`QX\hx|zz|zbC0  *"):=?MWXO@Efqwwy %,(zb[gpz~vqwzpw |W<$ 65j }B4QElmO=aDZs/ h5xF,B M Q   % 7 4    C  a h 7 0mD7M}Kfi=ljx3 u FLc?sE$&Xc\EG_=N2  m e v t A z -  3 M ^ N .   ' $ + +   7 q x #  E J Q i / y @ K?hg|Kon_ \K*OYT@r.   l [ K  x ;   " 0 < 8 2  v  / F g } v   , )   + 4 P n P ` - CqJ@,NqQX}iHR${#KPV|iU % E y 8 "  n \ E 6 / 4 9 ? J B /  [ % , j  = ` w m 7 x q    w  I f  O+}o|qR.E* ~\.uf  P X  _   - 0  Z =    # 1 P w $ I [ ^ u { x M  y B & = W w d B ) ( " H   = U c  |y[;2ZYQ2J_.lUlN<OgQ8  f ; ~ 4 c ~   T    $ W h ?   3 L M H V n ~ H    & 5 9 9 1 & $  >  5 ;   ' 5 o J k N7Ll[QYOpZW'z1o 9 w v v  e F # 0 X z 6 y 9 &   ! !    Wa6%/@PQYo/~        4 V n n p XXgFBIQw$[R uqy n j  "  7 3 u  U K _!z eqi5LbbWuY71BJ^w 1 _ R igz6Uz[nFJXl  V J P E    z = / ? Q '<X6PqJmZyiS1 3bq6=UZ-HF  * X w ) D d  s I(3r aw $ p A ;  d ; B v Lt%'YU;+>N\hil[RI`n}[3+F_kyk4l0'u&*OZD@i  1  ,  _  g J A $x8lu+ 2 & C + _ z c ? QkS6*WO+uk/b2 q`_v}_B1-%&+8DMQUVn3;|v|oZbR! 8L  " 5 J p  A _ W < L  } 4 a : n` o b e u X 8 3 = p > G 8   " kt\2KVTe;N/Jt9/BTSJ,  'H^pDRwbo=:{nA ; % 4 q c J A Y  @    ' 6 $v<N6,; eP.}{1?&_-  2I]s U$ p4!` 3 2  % [ o u X : 6 \ m B  5 n } 8k6+T uzL6LojJ@Dm[&vH*7UyxXDnE9;_lHMST{x_  t   { T  JL/b4?QIQva}#]&8r&-,F}sk`A+'@Xniode^<5u '| yj V H t 1kfTfH0#FI%hkM2$' Pw<_aZ~E{i')yzaE)nD.#)1+5~"G[<aXy3mlWak28jUn]wN }zlE(CI LDgD /G562j%\L$bCRpIxye!Fb;`k0Ffn2E!:5$MP4`yZX+!>K B%qE|+ S  > d h J  O `x*'(L gmn~s(h*!Pg7BoZ8]MngM6d.&cV,x"  b k  7 F f : T -   7,U::@Si}|oQ9 B[ 1 d n  yQd:\O/44H=x "2|<q<DVh7x y}vbfs`/ $g.7-7 P dB?@k$~7WUVyu\BiOauD\@ r GTn,+ E(%.2 g!c"(##$M$X$C#####$$>$6$$$'$I$F$ ##X""~"!! /JpRqk 0 t %%jHX=[@DD@3 WjM_<5(d-@ )CjSV5 !#%')}*++E**s)((F'(A()*+,z,-.)....P.-.!./ /R/c/O/X/r////.--X,,B++{+M+V+*)'n% " 6HGTP ? ; _=A?>~np 0Y2_D   ),!#%'t(w)N*|,J.]024e55665554(3u23.345y6]7789D9::N:099::;;_;;;<C?@AAAmA?@?>=>>a?_@YAyBiC[DE|FZFG(GFFFGGqGHHTHHIIJIHGFEDEBA@@&??'><:98641.+&'%J#-! 5M"nI_P^ %y,=.F)Pw"&q*I-1%4p79{;<=>@ACEGIK L5LMAM.ML6K/J;IoIIK"L\MNP QRSSTITSSJS6S~STTaTTU^V!VWVVHUHTlSHRPO;MLKJIlGECA?= :63f0. ,M*)\'%#q!sPb2;0 RG} 06f #!$4'**,-1F58"<':\86420Y.X+("$: V OlIC?s5 20/*.)--*-j./136v9]ZA*D"GRJ MPTXXk[^_9`Ca%bd,e+efghjBklUmmmllllmImnPno7opfppppzpmphppkoono0oYoop2pnpq qrrrrr\rqq!pronmmba`%^T\6Z3XYVUS5PN"JGD*@J< 730,U(N$> 8i[y . OS+PO(MbLwKKLJMNPRUlWY\^adgiGjkl|lmmn+noopqvr.rrrrrrrs s`sttZtu1uuuvvvvv1v(uu_uttu5uauuuvqwwwwww/vuusrqppoonmmmnmnm\mll kSj|ihgeca`_^]I[-XU|RRNJFB>`:]6l2k.J)%"=O Q[YX=VUUEUUVWYv[Y]m_(`bdgiklnJFB>;872-c("#%m6ll%klkkkkklmmnVoOpPqKr)rstDttttwttuuJuuvE83D-(nnon3n>n`nuuuvv4vQvsvvww8w"vvvvvvvvvvvnv0uuu]u ttttuujuulu tt@ss^rrrar;r3r\rvrrsskstu+uuuubu4ttt"ssrrhr&qq onl;jih:fEda/^W[)XTQMIDU>83pp5p%pRpp^p(pppq]qq+q\qqkqJqTqqrRPNMM6MNNOPRMSUX[_ebehknqsv.wy/z z{_{{| {{{ zeyyxfwdvSu|ttMsrq.pn/l pqrstLtttuGuvvyvvvvw7w-v^usro=loi+eb_j\qYOVT)R.PN-LYJIHGGKG>?ACAEMHRKcOT Y ^bgwktoyrxuTw xytyyyyexwtq5mhd_Z:TOJGDB3@R> <;?@BD,FJcNjRW3[i_dhlpps&uwxyzzzz{zzeyxxOwrv[u>t=sxrqponmno6p~qxqrUrsrrsKssssst't7srqoWl{h7d_UZV*QMIF}CA?`=;:9877%78M9;=@CH LQWM\b%fkosVuwxyy^yxx2uslo8je`ZTNWH CS?X=:965J4&45C68 9r:<>BiF>JO,SX]bgRko2rPt[vwyy-y2xyJyWxx,wvv:uIt>s9riqponn2mlmopppqqFqqr@rLr4r=r\rrr!pojliIdP_Z/TOJF'A>;97[5403P2U10S//02 4.619";@$DJPeV\bUglq!t6w7xyyyxwu;rDmuh{b]\VOH7A>;7V42r1.-,,-/0]13f5x7; >CSGLQWH\b;gXkMoqtwv&wwwwrwwwvvQutt1s4r6qipoo8npmmk\lkmno ozoopp{pppqq^qqhpomjSfW`[lUOID>?;G875S3p1Q/..m-,,++,c-2.0h2518=(C I!OV\bhWmquwyGyeyxwptnqDl5f`uZ:S_L=E$=8530 -V+*()1(U((*++H,.80,258>{941.-q+**E*))>((() )d*M+@-.15;XAHPW]djLo svMxxyBxvspsk/e^XvQ^JB;Y5p/,)(&&O%$%2%w&C&()*,.148=BI O_U[af.jn2psssscssssqrr1qqpp=oo&nn}n mn>iijkl^lmm4mVmnnnMo op?ooQm[k>fa[TMF@B940:-f*)((7'''''''''((w)*-/5:;BuIQXb_ ek7psv5vwOv@uQroje_1YRSKHD<=(7X1.S*(&%$$%%Q%x%&R'G(*)+.16;AHZOU[a@ejmpxqMqqyqqrqq>pppyponnnYnInnnh~hijkJkkl$lQllmmanloFonnlid_?XQIB-;t40;+);'&_%%%%%%%&&4&1%%%&&(+/5###$N$%&)q+04;AHOV&\jag#jn5oZp op p&pmpVoo*o'oLo&nnFmmmmnnhhivj:jk[kkll4lolmn*noQnfmkdh*bR\\TM^E=7Q0,(&%$$?$g$x$$$$$%$$$$%%W&(,1/7>:ELTn\bUhfloVpfqqQpnlieea\OVPJD>95g1.-*(P&e%$$$####$>$&(>+/5<CZJxQFW]chKlCmonnno%'*0l6s=E0LtSY`ej`lTmmmmmn mmmm^mmymllmdmnnjij jkIkkkl"lkllmnnmlohc\VKNF>60]*b&#"!!!!"?"k"b"K"j"""k"!!!"^"#$'*0y5aZ|SoKC?;:3E-4'{$!!n !1!!!!" "1"="!!V!E!!"#u%(-28?9ELgij jjjiWgKeFa^>YSfLFAC;61-|)r'K%%Z$$$>##""c""w#%).6= DLS>Z`fil1lll`lllol;lHllllllmn novkkjkkBkk kekkck2kll:mknnljf`^XQBI,@80*%v" \ : !,!|!!"D"""" !!!""#P%N',C06l;AnFLRfW\`5cegkhkij+jZi4h=eb^XQQSJD|>9W3.*)'%%$$$#""[""H!#$G(-,3o:$AIPtX^}dhGklYllVlxllxlmllm6r.V(#u!GEr + !>!!"m"#)#""$!"7"D"#$&*.38F= AFLQKV7Z=^3a1dfBhj=kpk#kigb\\UeNQGl@;45/*'%%$$b##1"i!!!!4!"%)0{7>F\MU\@bg jlllBlfllllmKmmm~m*mgnnoHpmll2kk5jjjk4jjjkm2mnhl_ic]UME= 5,'7"h g~ f !p!"t"###H""""#Y#%4'U+.36; ?CHMlQUZ]adh j4kllejidb^W\P HA;5S0*'%%$$]#""&!!8!8 !M!$n'.C4mkhda[bSjBpG&KOSW6[!_|cgj'kklklj e`X`QIBf;5a0$*'%%%$##"J!!D! "%@*08@0HPWX^d^ilrmmmn&no+ovopp$o{nntnno}opoYmlji/hi(iiiijl5lmikgaGZRJB:|2*%!` xS % !"#$#^#o#$$%6%&(x+ .269lFeN\U]bcNi@l6nmnn\ooppppoonoo7opBq/on1l,jphhhiWi)ii[j3kl,ljgma6ZS KC;\3+&"9 "R , H !"#3##$$%}&)'T(U*.26:=@zCGaKPTSVrYJ\}`6b.)$ !|V  `!"#2$$$%=%'(~*,05 :@DEGJKM%P-SVY5Z\_YbEe^hjkkdk?hf `ZSzLD=852-* (b&&P%%9$R#^""!!!A!% !"&,3;mClK0RZ`jg jllm m9mnooRpppoopNpqrDIXMxPBSUX[s]^#_tamcfikl kjhd^XQiIB;6g0,)`("&&/%% $>#k""&!!!s!U !"\&X+u3D:BJQYZ_faj!l_llJljm0n nhnop=poopqqrpoYmk~ih gsg-g@ff~fogh3iihgHc"^vWQJ@Bs:2,&# b_ 2!""6#:$$f%0&Y(*.q16<#BIONSVY[^`bbcJdfhkllBjifb\VTNGJ@O94g.+}('&g%%$q#""@!!!!r!h !"&+3;CJRYa_fikkFk^k{lCm/mmnoooxopopqrpomkoihglgff.($!t )fiCqp /!"""#f$&U)^,=0S4R9@;GbNvTkY]Z`be&fg~gghiklm ljzhe"`ZT LE*>\72-*(k'i&%5$[#""!f! !!P!R!h!!"&,,3;CK*R:Y}_eiPk)jjjkylmlm7nFo)oQoCop^pqrp1nm{kihggRgf1ee[eghhhrgda[V@OG?71s+&"!7l2 v!!"$)&w*U-27=DLSY_Obfgjk;kkkl)llmmlig5b^WPIBa;51j,*P( &%$#"!! _ J b !& "%#'-t5O83[/+)x'&u% $"! # ; P "%#(.6q=EM%S[`ftij^iihijQk6kklmnmno8opuqqopnml6jiihgff6ef,fghUhgec^ZSPL+De<6@/*&#!y j d   c ! !`""e$',2!8>EMT\bhjmYnSop8ppXp oyonn8ljfc6]WPI0B:5z0[-)(&~%$|#u"[!a Mc c "%C*08h?GNU\ag iBj-iBi!i^jjk!klmnn[noppq#onHmklJk$j"ichh(gf[efGfghggf'dN`&[UVNF?z82E-:(&%"u! !3!Y""c$(-3:AIPXK``fknppq~qrqq%p7oon{lgie\aZTCLE>"7O25-h*'&%H$#"!! EhW g!#&,2:hBIPWm^bgifiihi/ijujkClHmKmn no6oop\nmm7a0+'\%X##%""F!!Q o +!#',;29E@HPVWd\bf7ijdjNi;iiqijjkDlUm8mmnninmnRnrmmpm8llikjj&ihh-gh+hiRi[ii$hhec^LYqSLIES>9%3'.8)e&C#N"!$! V C |!"$(L.5K=5DL5SZbUhlnppq pqppoovnrmwjLf`?YQIB~;4-)$#d"!!r!6 BruL <"%*/6=qE2M5Tx[0`%eVh[k kYkiijj jTjklmNmmmn mmmlmm!mMmlkk jiimi)irjjjj@jlj,ih,ea]WQOJ:C=7D1,M(_$"!! _ -!_" $(D.5=DLYSZcagKkmozopUpDp_poo$nmlhdm]fV'NFV?71`*&"! Q .  i "J #'m-2:A{I^QvXy^cih8jlllkjkjjk[l&lm_mmummmm+mj"k%klmmll kzjjjjkqklklkkjhea\*V9OLHB<)6`0t+'v%"#l""!T ~ c y!"g%-(.4OEMU\4bPfmjlnVmm`llXlBkkllmm?mLm:m\mOm ll=gDi jwllmtmllAkkkllm m?m*mamemlk9h e`AZT1MGAH;94/*'%p$#k"!!=!"1"%)A/&5%G@92-'$ vDb !$(-4g; BJQQY|_eni1mnonnxmmm4ll/lmlm$m%m;m@mXm'llkbdgMikllllllllm]mn8n\nnonjm`jh&c^XS$M G@:4/{+('%$#V""D##&*/5:54@/,H*)'&-$]#"#N#&Z)/5\;B]HOU[`Id,fghLiejOkhklWk7if=b]:WQJD=m7F1:,y'$"# v#!J"#%(,{2e8z?FAM&TGZa`fZk7mppq,pip(onmllzlll|l kkkMjihvgUiZp_ cgDjFkllmmYmmn^oopq=qr qqon*jg3bB]aWRrLFm@Y:L51>.Z+?)&%$r$$'c*0O594t0,*v(&7#" b !K"$&(+.38?E(KmQWe]chxl)oq0rsrHrC4/8?;97779UY]Z_bdXefghjjkWjehe;a]YV(RINnJhFCAL?&=:O7j42S0////0R1K3a5r8;@+DIDMQUZ:^bfjMmwoTq qrTr7rq_po]mlkji7f>>@BFIMQ9U'YR\` b&d8egh+ijkklykbifhcI_\oY,UROsLIGECA%>C;w9U706x6 7<8 :)<@$CH/LPTzX[_lc!ftilUnp9q|qrQr"qq"pDnmokkiygDcC_YT}NHC=t72 S(v1:CKRY^cgMjlnp5qsvtuvvvvquutsrrQpoClJie#a]Z8V?QNJ/GFEEGILORUY1\`bdf2gLhikClmm{mmlkWhfc`S]ZXoUSNPNMJHpEC@>>"=>?ADHcLOSW0Zw]`cfidln pq8r)rKrr9qponl:j/hfRc^XRLE?{993,-'(1:cBJR.XA^ befil]nGprMt!u.vvv4uuutt4ts:r6omuj$g c`m\YDUQO{M\M*M NPuS!UpWZd]!`2bemghliRjKkElmnno/nJmjhfdcb_`p^~\fZLXLV`TR~PMHJHnFIEE0FbGPILPT&W\Z]`jbegj#ln,oqrqsrsrriqHomyk?hfc^XRvK[D<5/("! (19@H'NU Z_.c fiQlEnqrst]tttt`tQTX"Z]K`bdfhjl2moq!rs@ss\sJrrXpnkhe3b]ZWPIB<:@2+|%^x k '/$6V=DKQCW[`ud gjmp(rrsssssttntktCs(qomki;fdlbQ_^\T[[Z\5]:^` agbdNfgiXjl mnnopqrrrOqqpBo\nml{kihfdb`^E[YW6ULTTVgWZ(\_)aCc3egi&jWkmnOoqr_sst#ssrrOpZmif?a]_WqPIAM90_(!  %,29@HF@LKQV[t_cgnjim#nppq.quqrzs/s|srqpNo mkk~imgedlcPb(aaAab_c|dYe:fgh(iUjnklmnopqrfrs]s]sHrrr6qqpQo2n#lkjhkfRda_q]\E\\8]^`b@cexghjklHmVnsompnqrsxs~sprr]q+p mTjeca[UOG?7/Z&^o *E vxUl!'.5;OAwG>M4RvWb[`$cgj(lLm_nyoLpfqirors{s"rqGpIoml"jihpggtgag gCghLhiPijjkklqm,nnopqrs:sssssssjs rrqppnmkjh5fee%cccdeSfSgKhnijlmmnSo)ppqirzs,ssrqq'oTmgie`[mTN?Fm>6t-%z z`A tI#)0!5;AG;LgPUZ7^befhjkm|noppponmmlk j&iHhhi@iBidij'jjk kk#kIkkl l[lm s 1p$*0M61;AjFwKP4UAYo]+_bdfhk%lqmmn6nmmillmkkZjjZjTjjk2kkl>l]lslOlkkkkXkjjjktllmkmno4op?pqrqsssss-rqp~omm l"kkjjkWklmGmnDnoaopXpq=qqqYpnmkrheaM\/WPIA:-2X*#qu= a;hNc] iZ %+0j5;@DIN!RCUaX1Z]`nc;efgGhBhi3i)ihhhh ggVgsghhiiYiviiiKhhhgwfeddde)efgnheijklnhopqr:rrgr9qjpaomm lkgjjjkcl llmmnnrnnnoJo2nml#igda-\{XRM F<>7"/(!.+ pKQfA7 t /%*i/59>BGJN.QTWZV]_Z`bbcd>ddeee ddudGd*dldegeefeee?ddca`K_G^^^_g`a(bndeughjln]opqqr qponmlkk=kRkl%lllllmm,mm5mm#lWk#hg7dza]LXSiNI%C ;4,%M 7+$_PtA *k 1%;*_/3^7:>BvEHKNQTVXHY>Z[[[\ \z\\\\\b\\\b\]^]]]Z].\\[[jZ)XVUTTTUgUW;XZ\'^%`Xbeg;i_jlmfnMngncmlkjWii2ilij#jGj,jiiiiRhhvgg,ec`^[BW{RMH_C=70)~" D7Q}q;" ]EJ$F(,/N26:=@CF3I#KMOHPQ+QRARRSSLSSSrS\S|STT0TSSaRReQUONLFJIIIJ4JL)MOQjSVTYX\I_adWfhcj:kkk>jihhgghh%hgggTgBff!dcbB`v][XzUuQMLGEB=82+%:u 4 w_1 H(4 e 4"]%'+J/B258W:KF=<<=(=?@]BSDFIZLP8SVY\_dbcddgdc'bb$aaaaa]a0a!```_]<[ZXVbSPMID@;572-J'7!xD J^;^9e,M\  4f (#'~+-/1d35E7K9 :;;_;;;;w;;<`<=n=>6>6>=}=<>;e9856#42\00a/0p013C5B79<@DJH+KOeRUY&[\\\c[ZZ>YYIYYY&YFYYiYUX"VySQ8NxL1IyFBd=8P3/,'x!#n 6|e1{?r,6 ju #%'8(A)+-.0%01F1@100d0t01m2)23e333$221#/-+)'&6%$%C%n&q')+=-048~6:6?1E,)%""[  [%zjK$l,w0S|;  O1# ; H!#$x%&&'&&D%%}%&$&'((S(6(5'&%#!v^ #*&)-15w9*t.  & V*j$%{I>*0G <J $!'+%.U14/68Z99w9?8778 89_9:99[8N7'5g310-+:']#Z D"J|?KlJT:sO9r?'n f <<b+: FrYFQ F h .]"%'*, -<-s---.../8/..;-,+*)m']%I"G3@Y\v #cN|s Bo '8 T/B9i:x}\0 +    ) r = ' g 8 / "  Lj^ Qyf ">"#d#$q$%?%!$$F##["""X!t T@ : > Ql,`H 3R":L'_kn?f:(#?WP< l>S<M(9M \(S \y(dg&D(Wj?=+:e0M(+qD96;9| y$TivjaguhDyN2[dQZ5f2TS<) \bFZb[T9&SX8?(&DNS^IR;P5\-wP'g$R*&amc=VhAT.)MPN{no_R9C^)+DO{%-*>|%I|HK $Gj ;a))|\2|Uy%gJRQ,h$N_ &7N>S{ smJ[WKKua@J$@c" kok.oocn\% -?du`F- UPM(JeAJZ8U8%-`.jJc%ASPNowC.I<)d@*` +}u \`d[,$(GsZ@+,.E\sE' #M 0^ jaVg0),YaWOr,JWZfjoV(:C</+-QD<~6>U[{yydB97Qo_I=Nitk\@04HNZf8%zN{[^1 }]Qe-I^_SOUrsA!FRF606Y~XYQMIoeq`\m{Y?4'2LrDsOW5jd;mHF`osoJch^LAIivX$DLA7:Nip|gFi0JC. ];%3Fq+%=Pca]G+pPIWYWZ7LVZRFCTceK 7ZaI1=\l{yLEs/$xbH9%,<o !z# k ';U[R8#|bUY\[Y$6KVULGJ`a7 QoY4.Ef|{UJh6 C ! vYDCK>>Iv  u8  DUG+%%*k^`_R%:ObbN@VgY3 RdX>1Ejx]Nb;M7YVF&pSKSIWz  v&>s_v 6F= 6:bUK0(<[kaMMT_S"*ZqY63Qy`HVm<4F4v}f4%p_b`{y/)cV@];E= 6. Y>+  %DbvpU>JXJ0<biXFCUu}g[gvU=_kYC%tgewX:-HtqTN[&3"/(I& $@lzX.-F]`B%&BcsfN@P{~fT^md|1yiX2sgc^fti8";d`6=o'&;,Z1 :SH0*5GSN?27OitlVSyva^q@c^bG{twuN>MtuH<]~ # R0  .52+&.FVL;9Llxn{umt$8PJ4 q``cwcSMh #Y2 )33**BWSC7>Zx~{|vvw172{aRPbuj\cl r>   ,984=HOMB>F\szv|zw  kYRFK^xtdalof_G)  &2;@CLOJD<Jmxv dPPLYo~yy}~ iG/  !,#+<@@IPROAFc~nr~r{ !%m[^an}{~|wV?# !$ @As~ D2L?gjM<`DYq2j6zI*K O R ' 7 5   E  j k < .lM;#RNac;lm|: } FQl ByJ%!Q`]ED|_AW2  q k x t H 5  9 U c O 1  " " # "  " C { ,  @ I R g . { K HFmeH pkg W|M1W`W?u(  r ] O  ~ ?    ! / > ; 1  v  - I e w v   / 0   $ * I k \ ] 5 HqM=${QsQV{nDJy"HIY~iT % ? | = &   h V A 5 + - 2 : E > .  X )  - h  > \ x e . } w  &  " } T d P&w}j rQ/9% 'z[1ma N Z  b   * .  [ ;     * J n  ? W c {  { O  { E ' 9 S v _ ; ! $ ' T    F Y h  {~sS?4]^V5K`1eKrL=UfI2 i 5 z 1 c {   U   ( ^ k E   # < E K ^ w O   ( 9 < : 0 ! ! " K " @ E )  * >  P l J4IpdU]K|aX(s'i 6 v s n  d @  0 T 6 } < )  % !     V`3'5EJWn1{        & 8 V s i j PXfFFMSv `^)xqu  h i    = / m w T L Sz_r r< Bxji[xY5-?Jb C O E ^fv4!WzerDJ]r  W M N >   z C 2 > U 09U6LoKlZweM*2`!y;@VX&WM  8 f s & = [  m K(1u  _y% ! | s A 7 ] 7 C s Qp'-\ZC2)MZbnomYSN]gswP' 2Lcqm9]"+:+ScQOu  7 & (  Y c M G %;n} x 1 1 R 6 \ | j  4 ZiJ51\Q-yj/]/ ra]rzZ:'%!'.8AIOWYq8Gqts^n`08K  ! 4 H j : V N : Q  ~  0 e ? m^ f h v b 7 - : p B A -   ( vyg6I'\[e7K)Gr4.DUSO2  )NikG[~s~C6tl? 2 " 5 n ^ M L c  { .     & 6 (x8E/ '>b^"0"6@!Q0G]v O, ~6!Z  , 6 "  %  ` r | d F = _ j X . D u | 7n3!Orr  V>M$qjMK)PvRc6?]vR=fUF>j~  MT\'N~b ~ % # [   GM%g9>VQQpc$c&,@{,/0% Dzn^Q=2*=V+zr#vml@.s #vh_ X M =tmMhVE7SLo`yQ=0 +Pr{5X]U>yg%$rt[A,\D895*1{ D>)Dilz'ifLZ^$XQ o|\[bX7 OA  KJ`:w0c/bL}s:d4 *S}%L*:3E(GS&Mm2Ntv7D/C<JX/awTOr"B b1[  9  O | N * d ;<ya4|@vu2h!Xq:Qx^9[W.Q7l)%'/`V,c   Q L   ) R * ? &-R{kPF-tD \ J yY_aM@*q8TA'1;X0@pB3p9m4g f T}vksm>8=pWL^$?LC.$,GRK`_$Qi2 o L~@+ @JQS{u\Hu\wu k7Q 3  ;y. [, | !!"#]#####h#[##$+$W$X$A$C$Z$$$$E##l""j!!@  +qH^57Uk0jKbBEFA6 fpB*2:{ x K ]Q7 F!#g%')*+6+q**)((9'(0()*+t,,-H-.@.R.R.$--.0./9//////0///.l--$,+++,**C)(&m$+!Q%D Z {]lY] YJEs^2.WqI7Y [n 6W `'!"$&'(*,.,02456'6z6 5543R223T475 567@8&89::F:?::!:;;;<<<7]?@ASAAA=@\?F>N===>?@ABDE@FJFGMGSG4G(GqGHYHHHHICIIJII GFED BAs@f?q>=<;:8e53\0 ,)R&#! ,ra)d s*t80 &B1bdR+r"%)-(0Q368]9;p<>?AmCEGIK5LmLM\M#LKJI~HHI,JiKM NFOQ$R{STTTYTSST=TuTTTUUkVVVVVPUIT^SQPANMvL!JIH,FDC@A>;8`51/0,*)'&n$#!d rJTf; W}"U+_"$'*t-1#48x;?AACDF1GIUKLNPYR SUmVVWgWVUTySSSbTUlVXFYZ\1]F^/^i^^4]]T]5]\]s]]]]^d__`s``]__ ^][ZYWV TRQO*MrKyIVFD AO>;9"643 10l.-D+*('%%"GKN`t $ IH?-ZR ,Q)&$#""#/$m%'),A/2g5q8<"?CGKM*NOQoSUUVX.Y[\^p_``a``_@^_]]^Y_`gabcdefffffUeeVe(ePeweeeff~g7hhhhhjggAfxehdYca`_R]\=ZjXVTRfP MmJHEeB@><;{:8{65%3q1`/i,)i%y!8  HBBtb631/p.k-_--/0024 69=I@&C(FmJ&NNQTVsWXZ\^<_d`|abdmefgggg"feeeef{g<3:7=4V0,(/$>   vjA-,@=;N9&877I79::M<3>aAoDGJMJPT^Xn[^_ `a'bdffghjkEl~m.mmmqmllolPlmmnTnop$ppppBp%pp ooannno ogooopFpq~r r0r8qqppJounmllkkjbith}gEfdcaa`/^A\TZLXRVPT2R:P_NMLJG|DA? ;k7k2.~*G&O"xD[/ XIFDBgAj@{@AyBCEHK)N%PS.UX\?_b"cdefh'itj7jklmnop pUp2pooooppfpqvqrrsXsmsXsrrrrrUqqqqr r1rYr~rsOstGt`t`ssrrHq[pNo>nDmmllqlkkjrii(hUgnf#dc(a`^F\MZMXWFUT8QO KIEB=9d40-)% !ef 8S>PNfLCKEJ~KKM MORTWY[]`cfOhijSkMl0mEnnnopqfrrrrrrror[rhrqrsst8tuZuvHvhvRvuuuuuFtt|t_tpttttu2uvvvvvGuu/ttsorMq0p+onnnsnVnEnKnLntuv-vw9wZwCvvvvvgv$uukuAuGuxuuu}uuv>vvvvvOutsrqppoo6nnno)o|opp-p;p oobon]mZkjhegedb`^[IXUQMIEA=951-*&D"/}*ba,_^8]]g]^A^_Z`lace)fgixklmnopq#qrrtrsszstptttttFt;t>tsstXtuv,vwfwxGx>ww~w)vvvvv8uuuuuuuuuuvWvvvvnuuctsrqq&ppLopppqqrirs6s5s(rrrqpopmlkjihecd`]ZWSP KH94/*lllkkkkkll*llmnopqqrLsGttst}ttuwuuuuuuvuuuxu4u utuuu_uvvZvvvwvvvZvuuuuuuuuv$v7v uuvuGuFuUuhuruIutt7ssrr)qqqqhqdqpqqqrrs$stmttttt~tsrrhqqippvoo mlak.ihhfkd9ay^[XUpqmr^sot{u uuuu]uQuttGsssss[rqpponmWkihDfQd`a^ZbV(QKrUr@r/qqqrr@r\r>r^rstqu u=ubuvw)w)vv_vuuutes{rqponmllkkkl(lsm6n+ojpqrstluuv)vvww:wlwwwxx>xjx^x-wwwdwFwvvGutssr_qponbmdlfkk|kkl]lmnoqDrtrrqponMmdl@khfc _ZVstt8t+tt5t[tmtptOtwtuvHvvw wwx+wwHvyuu tCs3rpoVmljLhgXfePddjd,def6giIjlnjoqXrstuwuvvw=wwwwwxwwvvvuu)tsrqqonkmWlMk&ih^gedddeDf/g)hjYlNnCp3r-suuvjvwjwwwww:w0w!w vutt"srqpoofnnl{jh+ea]uuvuv"v>vvvvvvivwwxxAxsxyyCy%xqwvutpsqfonlig|eCc3a`_]]|]]^_S`bdfi4kXmlo\qqs$tuvw wwwwwwxwwvvJuttsrvpo/m9k!i gXedoca`+^]]^m^`4ascreh;jmGoqstvvwxyy3y7yyyyxwvuu:tsrrqq\ppnmkjhe tu@uv}vw,wWwhwiwpwx:xxxy*yayyy#x*w-<<]<=>?@CEITMQRUAYP]af9jmpnsIuewxyzzzzzyxwvvu3tBscrqq.ploo#n7o|pxqrsFsstBtu;uv vuuuuu|t+spnjgb|]YXTPKGDCA>=;4: 8878S89:<>B%EINEAE:ITM:QVZ_d`hkovr*tvwxnxxyFy'xwavuutOskrqqpQoo+nnno!p\qXqr\rrs6stZttrtHt'ttbsr1pnUk]fb]SXRMI D4@8BlFLzRHX^dssrBqXpooYnnnInlmnopdpqqMqrWrs rssssErpoGl'hc^XRLGNBq=96131Z0 ..M-S,,,,-.&/1R416;?cE,K?RX^ejoruwky y>yx_wGtpjeu^XQKDv=u83b0.p-+\*C)() *4+(,-/147;C>C}HSMSYI^cJhkor>txu-uuuuuwt{sxrr qqp+oYnnnnIn*nk km"n%noXoop:pqqqqrCrrhqonjofe`[FTNAGA,?+n**))p)?)^)S))*m+`-/37=CKRYYV`4ekosvx$xlxwvgso0i?c^\UNG@93//,*(&&%H%T%&M&'(*,*.037H<A G)MRSY^dOhmSp:rst2t t{tt>sbr[qyq"pp>ojnn&nnMnFnTnijklmnnVnoop"p8pUpqrqqKoBmhdb^BX8QOJC9<72/,V*)L)((({(1((!('''')u*. 17*=3DLSZaGgloq)svvwvutqn hSb\GVOiHaAg:@40-k*(&%%%1%@%%%&W'b(r*&+.105}:AG~N0TZ`ejnOq-rrrs%s;s$rqppppoBnrnn(nnno'i;ijklxlm m\mnCnnnopq ppgnLkfa[HTMEQ>:72-+(A'"&9&d&&&&&&&&U%%%&s'K),17z>F[NU\cirnqtDtu8t,sXpflg|bI\PVPJIB;61/+)'>%%"%0%$$$U$?$%0&@&(*/#4:AHOVV\bhl_opqTq@qqqqpp;p/p>ooMnn6ngno-okoiijzkWll@lBllm0mdmymnop:ooum#j(d_(WPH@92.i*'%$$e$%%`%d%V%|%%%{% $$%`%').X3a:vApI$PX*_eknqr rr&qnlgwc^Y StMAF@q;N630--* (&&m%%% $$:$0$;$$&A'v+&/6=WDKRY_fj_mnoop"pNppzpoooooNnn^noToopZiijdk"kkkkl>l3l2lKlmnoUnnrkhKb\ TxLD!K  = !Z!!!!""&!!!$ !K!["6"%(.e4.;4BIP V]_bgfhjjkejihfVca^YT=NwHC>:650,)]'&&*%%N$$N##k#7##%~(].(4*;BJ#Q^X_>d}hjlCl2lIllOllllmmjmmDm?moopkq(llkkl*kkWkfkkjkRlemnonmidp\UM+D~;3J,&6" 7 o ! !!!";"W"~"I!!5!!>!H!"Y$'c,y18=CIOVy[`|c!efh@hhhg7ed}a^~YSCLGAk\jjk*lgmnonmic[TEKB: 1Y*$!J] M!!" "G""""",!!P!t!Z!!#&;*/x49>CIOTY\`b>dfgh8hggec]X/QOJD>92-)Y'%e%3$$2##'""H"'""?#%*07{>F)MT[afiXkkkkklElllmmmmhm,mno oponYm/lul!kkRjjjjsj[jl;mnonmEhvb[SKB'9m0*$!U(V L!!"6"}"#$#o#N""G"'"R"-"u"$1&*/+37<7@EKcPuTX[l^kadUg h}iiVige`[BTM-FH?93+.)D&%$$R##D"!!!b!!>"g#(Y-p4;CK-RbY_eehk>kl4klPlmLmmmnknnmmnvnoWpo6mllkjj%jjTiijkmwnvon`lgbtC/HMQTX'[_c fhj9j>jigc]V#NG@:F3.w){&%$$K##"Y!!" Z!D"O&'*18@H7OW4]{cgQjklXl,lmGmntnno.oRnnmn[n~noonbmkkiini^iiHi_jkplmnml1g:aYRI@8u/)r#!6C w !G!"I"#8#9# "#N##$V${&(e,c048-;l? CHMQTWZ^bfhj@j2jihcF]V"NG@:<3.)'Z%|%,$$"#K"^! x Z !1$w(/_6=EMT[aafOjCkllwmmno oDo4ooo-nen"n^nnnopnmljihhiEii,iklm~nmXkf`XQGH@Q8/)V#!8#/  y !!I!""""# #$B$%3%'T)-26 8;>C@HvMiQ3SVZ^2b]fKhj0j/jihDc{]V.NG{@p:33.*'%%y$$l#u"f! d '  #"&~-3;C0JRY`ejkllmGnnoooop ocnn4n`noooqoPmljiZhhhhhiejklnlk'f.`XQzI?@800)$4![R$ # !,!"Q"""##$%/&A')`,o05=9;>>A>E_JPORU:WZ^bfvhjGj)ji6gebx\UMFP?k9s3.d* '&"%%&$#"{!! F"%w+2:B)IQX`:euj%kmlmvn-o$oooioooPnnInnopp3q\omljhh]h2hhEhYhik?lPmglEje`YQIAc90*|$!zLr { !!W!""# ##h#$%'e(+/J4882x-)'&G%%F$#"!! Ew!$+19AvIEL)RWoZ^`UcefVfgi jlZnBnnlk,g bt[TLE$>7)1,)'k&%K$##"!S ? 2 #&e,3H;BJ\QX`6/;)$" D{8Ks/ + !R"%(,N15<$BJ%QW]k`d)fhjk6klfmmnooo|mje`rYmR[JC<95{0+)5&%$#""!!, p o !1!N#'./49h@5GOOW_Ae}jm oopqrrrrkrrJrp}njf_wXPHA 93.*G&%n##F"W! !n*p  B!"&+29AnHP>W]doh jjjhhhi$isiYijklmPn noZpq%mjm/m1mllkXjjLiMhOgzgMggggh:hgec^YRKD=71/,'O$"6!r Q D ( V m!(!m#&,37:BIQqY#a\grltnip/pq^qrxrrSqr4r#rpmi c\UjMXEm>61+y(%#""F! 9D)%t , "Y$(s-5@<)CKRMY_~e~hkjihhbhhii ijvklwm mnOnoGp)mHm\mmmml1kk/jGiZhh?hbhhhShhhg?ea}]VPIBX;5>/*&x#3! "  %!!c#'c-4\JABo;D3.B(%#l"!!A +9:Q  #%|*c07>}EMwT[a)fiYkWjihh>hhhhijklmmnneno>lmgnnnnm8llDkjiiijiiiiihgd`dZTMG>@93-)}%Q#@!!@ z ' !!$m(.5Z=cELT^[cMhmJnpnpppqpppfppgp.mje;^VOrG@/9'1,@'!$"a! gg[_ !$'-O3F:AIPW^Sc:h3j~lkbjki;hi8iiidjCk\llmmumn3nJn8n{lmnoooSnxnmll@kukk9k}k8jjjk$j{izfc^YHRL2E>8d1,'$""-!   *!^"%(/6a>FaNU\d!iKmYnopptpmpYpoopoogo*li$b\T$LEZ=6/*%#m!k  {\V! "&r*A0(6o=E0LTZ`e_ikm3lUkkj`j!j@iij)kllmmnMngn`nnjlnoppoFnnpmmllullllhl?l/l}lkHhfb<]gWQJD2=71_+(Z%$#+"H!2 ""%)0v7=?CGNVT] d7hlmnnogooo5nnnnmmsjf`+YRJC<5/*%#F!? x32k "%^).4X:BJIPW]cgkmnxmlkkkjjkklmamn/nunZn0mmNikvmyopVpooto nnmmmn$n mmmfmmmkiLeaW[UOICn<6z0L,(('a%$R"!!i"v#C&*1,7?GFNV]-dhzklmmnInnnnGmmElkgc]+VOHB;4.) $" ( 7!$',2 8?FNT[V`fimnownymmB<6D1-+)<'%p$#"#$d'+2H8@GVNV\c0gIjkfl0l@lmsmmmlkjNhemaU[cUO HBU;5/A*_%#! Uk #%X),2O7>EZLTS+Y3_chkoopmm!l=kllm m`mnmm9lkLj_cgkmmnnnnnnnno6op.pYp^pMpppOnmjgc%^eYTNHB<62&/M,|*g'%$=$% (,39f@G?NUB[aehijjkaklllalGk^j~hfc_ZiU*OBIoCc=G7Y1!,5'%[# !w~ !#&O)>-2^8P>DDKRXm]cg,kn;pqqp/oo>nmllXlm,mOmJmm}mkjig.Xp]bhgGj[lm*mmnOnno0oplq%qqrrFrqpoljVfRb]XSNHB<74~1-.+)'('(}+/5;BHNUe[LadghiijUjk^kWkJjwigf6c<_[4VQLL#FA;50,)&$y!  "C#&([+/n4e9?EkKzQW]Eafj2mpqqqpponnmllmll.kk$j h;fsc`QoW]cmgzjl m:mndoo|optqNrNs%sst+ssrqo5lieaL]YXTANHCT>: 6h30.,,-J0U39{?YEKFPVG[e`cfghohiqj+jjjiigAeb_[WSNID?:e51y-*&'J$i#$"("#%'*v-V1x5;@FLQWI\aejloqprrcrVqqIpzoon_mpmm llGkj(hfdag]YHOV]bg@iklmnop9pqst+uuxuuRu t*spnlhe(a]YTO_J!E@=:075_34 47q:?DJsOT&X]/a~djfghhijkhkokcj}igf&c`]ZVR8NIE/@<8<4*/,)('()+-04'8=eBHM]R,V[`e4hl9npqrrrrqpoonOmullkjPhfLc`]YTTO?GOWt]cgfikmnopqurysuv=vwvv^u~tqrqnl@i'f,b^ZOUPLGCn@R=(;9:;J>+A#EJ OSW[_lbeighiYijkwl.l?lIkij_hfdbO_~\Y'URRNJGcCc>:v62/.-./137 :@ E*JWOnSX*\`dhkon4oqr,rrrrFqpoZn4m}lljnh3db@^ZUQ!KF75>FOV$\aoeh=k&mnopr$stvRwwjwvv u%srWpnlbjfcq_k[pW,RNJwG8CBk@ABEvHeLSP*T-X[_begqi:j#jknlOmmmmlkihJfQdxb:_]ZNWlTQ|NpJFWA=:8656y7&9H;,>BHLQUY],`dhgkm%oQpqr2rrrr,qmp'nm|lkjgSd_[W^RgLGA9;D+4=GFJN9U[`dhxkmo1prsu vwhwww\vutsrWq+omkAhfdaT]YUQNK%IeGHILOaRV"Yb\_c ehiRjkEllmno8onmlkigfDdb`^\ZbWU QMItEB?>=y>>@BFKP TXk\5_TbNeh/jmLnpqrirs rrrHqhonylkjKhd1`ZUPJ Cv=60G"j*e3lst tttkt)ttssssqpnXl;igekcb`^]^"^`bidTfg}hjFklmnoaoppapq[qrrqqpppKooFnnn5mlkpigeyb_U\YWVUTUVX[w^~a#cWeg5hj,k&l m8np qUrsosssssr(pFmj,fvc#^FXQyJ`B:2+% G 3xo (+/6=D4JEOU8Z^behlRnpqrrs3sEsssssrqonulji2ggf ee e\eg hVijklQlmnqo'opq0qrOrsYsttJt?t1ssssHrrr&qpon\ljh/eUbu`E^J]]0^_`ce$ghj$kFCH\LQrUY]^`begiGk!lmnoo n@mlkjj6iij jkLkl2lmn&n=nJn#nmmmimllIl=lRlmmmmnSnozppqqzr rsVsssKrrq/pnmllFkkklFlm0mnno;ooppTppq~qqjpmmnbno5oop[ppppq3qqp0nDljgd`V[9VOHA392Q*#^ `GtHQ9 I +"',16;e?D[H{LPS)UYC\a_Da=cde#eeeeCdee4eeeelef[fg5g1fgg#gff\edcna`__<^__o`oa{cdfhdjOlLmopqWq}qqgppo3nCmRll kllmmxmmn1nno nnnnnm5ki(fc`_[gWQKE=6F/>(!GU  N|>MX; ^ 3D>!-&+10#48A_DG>IJL7LM MM>MMNGFNDC6AA@$@*@nACOEGJVLPSOVZ@]_aIcCdef:fkfee|eef+f2ee~e0dddckbba[_^;\YW TCPKEu@;60*#\10mb  q^#S x1i0O"&)-1%358i:=r?@u@A/A"AH<;98654.3>3L346V8:=,?C FJ|N[QTVYq[n]F^^^}^Y^'^3^Y^{^i^2]]]\[[+YWUSxQNKHC>95K0+%}/" > {P"N2_&)~ =Y^"&x)b+E-eBF:ILjORTNU_VDV$UUgUUUUU!UTTT$RQOMFJHFD@<72.*& +|h =}n\)p0TC3U_g h !!#`$p&')Y*+n+,+++*++y,,u,,p,,++m*)X'%$", | "%1'+.26:>AD@FHJJJJZII*II6IIIIIFHG=EC;@>=;840,(%!=r~ a 6>KAEe k)y8_~<2 $ S q246T_=p !S!!! d 5 F e (d[>+AY $:(L,B/3\6=9F;{=>?G?>>=>U>?d??v?%><;99n75442/,Z()$!MV e >w |Z5ByCulYG E N )qih3-(B4G5q9 A i 9  Hl5"%)+./123T3@333o4145M5k4321$/|-,+k)'$] 36\ <@pL>?aCG >mn\7Z.ltL k ) 24U4x ~ o y 7  b  eg q -BE "(#%&'(}))s*%*+**o)k(a'%$#" T2E" XTQo;e/Y-SCp6y/|[;| A T T ]S'O'?}4X H ; 2 eR K !\!X!@ .Tt  cN!2_A1J(7L1a9{z.V =#D~kLeP{x#g1In^Lk=ZnR n I] m51? S =m|vKP.<%&oF%g3Mw sK5,g(EUQBa]BTnH'-C^_UVVJDJ]ZAi S   5M i b ^;  IlvrsS[ hL nPlM fT({%~:+5:++E0wPO,  QNL#^DS0j&'VCWq%dJN@Ze4? GNGp`L}aQGNLe"Cz$][S}-zHU;2S1i#~.p'q,C$TsI7"0~h8R!(5_%SH>F7k&Xx  ~rtlHg1LfH_Ju1P S:2&^aFWgbV8#S]%I1J70KbYO9K<E&Fl)U:"P)Y)d|Ont,:%~Q&UG|np]N4Aa-6V#T84,L1C uB\%Mh(Kt&1( q> V,oWg{:Z-HS/NAWv toDRNEJvc LS(Ag-#ote:twdeu|L :Qr%xY2[F T4PeIDa6V=+0c-iNi%>NLNnwF8RB,lH7e-|z\XYuU-,4RwcA"'HdqE%B3mifL`+(.YZ|VPu-HV[egmY#0AG?208_M?:;V\nnpiH?>Vr pT?Mpt]9(1KU]^xM3UtZ],x[Ob~,DUYSPTopB (MVI84=`Y]]PInfzuyzjerzw}gK9"*GsRuWa9kg<gEA[nupCWZTICJenR$!IOB9=Pjp}kMi7Q C0eF18Af9}$CWhd`J, kKCS[]]4HPRLDCQ\`K ;Z`L8B^o|QEo7&sjUE/07d {(n ';W^S6 x_RY_a]'7GORMFG_d<"Ol\=7Ll}TGc?A "gWUVE@Cmx7CUE&")k`ccV !6LdfP?Vk_;!Pf_F8JosYJ_>L0QNE(p\W\QYt x&>zd 6H>9<cWM2"<bsdLMXf[,)[u^:6Rw^JXl?7=}*lra4 ~mcgg~|- ^^B[AKA"!<1X>, "FexoWDQ_R7>fl[JHWuxg^i{Z7Pa[?yyojkz`=(=kz\R_%7%!/)xF%!?kyZ22J`bD')FfvkUIXiW`jXn(tnW+phfq|j?*=]d9>qw! 6(R- 9PG0-9IRM@49Pkvo[Yzze_o}8a^^@}mk{rNAOq{N?`|"  {K+ *251),EWL;;Okxp}wjo3IC2}t_\_teYTn W0 (7:-(BZTB:D]xvsv*0/fUM[nj]eo   q<2B<3?NQLFGL_zyy{xydWJMXlwfajpf\E' #/58AINMLJ?Iozz iTQNYfuzwzzeF2   /$!.:@CINSQ@Aaqqu{!|hZ\alsy}~yV<% # DCvB?ZHloQ?_AYj,d2O1H O V $ , > 5 " ) n I h p ? #uS:#L|Oed7gl|= FTp @{O./]haHJ{V7M+  y q } w F 4    ; S _ M 2    # #  I _ H M  ;  > N [ d / ~ M GOha}G sf#h T}O4X`V?|%3$   j ] L  ~ A   # 2 @ = 2  u 4 M M  = L  N - 7 +   # O v d Y / @nM@(SrOXpGR&(NJ`"s\Q * 9 w = (  r ^ G 9 0 2 4 9 D ? 2  [ ) & c  & C - 4 " ! m l  / (  0 F [  S+||c pW3=)"&~a3wf U `  W   , -  [ 9     * J k  ! L s _ * y 9 ! = O m u V > * / 5 _  '  ? V n  |rS<9^ZV:Og8aO rPDSoY; v 7 @ S l  ^ '   + ^ p H   + = O e y V   8 < / / / % & ( Q , Q U 2    % 8 { W r T7FnaTTP|^_*5t A x r  k H  & F t y 2 q 8 - $ ) %      Z!Z, (7AYx 2w "    " % ' / 8 R s  w z MQhCMM\!y f]&vs} v q   %  8 ( c k G L Zfv c.4jmdY[01Rh ;  c B Zgx? &afrJTg{ ! _ V V B   i 7 , : K #=^5MpMp[{jO$  Cs*6G^UlO  8 _ ~ + J e  e C%.y _}- 3 M A  b 4 ? | L[!TKT<*JYenjhVOMcsU#-F_ti?L9C/[mYPn , !   . ! a  [ O ; &?hs x 4 8 Y 9 a t  M fo8')O^3xk/a2 vb_uz[:! /7?FNU^`u3P~ s\m^()A  1 @ O t  ? V J 1 H  ~  7 k G n[ g o b 4 / C z K T D   ) zh@;%XQ&n5H'Kz>  "8HQIC)   G,r`e~ hl0!jmL >  $ 2 r i Y U m  . /   - < ,J[>,0FEB6+;=N (:Oc{O,@t+.c  # (  $ ] v m M A a i m 7 C p  9wE9c!~60CewhO%OwOi<=_[1LcL>u ;?N*Ro{_  t * + } U    I\:vO\]Ril@q8{4.;w#103.' Ks_RC@;Kb<HI2_s.`5uQR L HwoQpWC3KD"u%T;4>e}p"!ms!k}gQ9& hNBB?805p|P-9.fP`vfrasp*3X?k|`kia7_n""%p*[h{Yi A`4e47<,SN:R3IO(g]4Lyk-Wx5DR^UXkkdk=HWP;)m/0bM X 3 v \ / Arw~MtRT2kZw6j'Lh;UtT-Q&p'89k  s>s&* 0 >   ! M Q [ l ( + t S BD> 4GK6$ ;E  S W dH\#n dIL|"C=v) $.Phe-s+q-'x8"<ph c Osf.*Ih(BhnNsnfSHR`ZTYm}CU}g4_ k " _VZ.+AS;RprfYlhD|L8 :R N g4 ~ C!" ! | \!!"#$#7#-"""""##8#5#$#)#@#[#w###^""q!!J &!>] &AF*>@>jt9<*VB=38;'oj:AF_KjW.X>  ? >&N!V#$' )+u--H-.,++P*Y)e((F(k()*8*+o+,-(-----o-{--..R.S.8.=.S.i.{...+-,,O++%**0)k(1' %k#!sXo  & 2d^|qv+;sud s@t FzW S >u9k! "$&(+-+/l14\6I78087$6[5n433'33H345K5678Z99s99999:#:p::::::;;2::t9}876544310/.S,;)&#z WvI+RD06> Z hm0"Ql,qE 7 :  <knc4"%9( *,.8/136Y8:=?oA,BCC B$Ai@t?w>===>{?6@7A"B8CwDEF:FFFFFFFFFFGG]GGH/GGwFYEFCBA1@>=<.;:9"752/,)'8$" 2K A > )'K'9* AKgIbF0"T #u&)},0F3f679 :;H8T530.9+*3('&%&#V!Tr8nBV # &!1!#&E(+.148Q<?AMBCEH:KM\OPR%T7VWXX W!V\UfTmSSSKSTV WwXY[d\u]U]r]g\\\[[v[*[ZZ[2[\R]]^^]f\[ZYXWUT RTPOPMKIFCA?=\;8v6E4r3&10.,*(&$# qm2 zX|8-*(%$#$ $%&S(3)+.71)479<@jD+HJLMO>QCSVuXUYZ\*]_a adaV`o_^^$]]^8^_a bccdeBeeeFddccbbmbMb'bYbcIddefTff&eedVcbb`_U^\[YWUJRPGN L IGIDBT@B>=;98 53f1 .-*'$ l= Y 69Tx8x5A20/.../12466b8;>A~D2G^KNRITV'W9XZ]^`Aa!b.c]dfgFggVfeeKe eTefFfghiEiij$jiii:hggXfffkfkfZffghqiHj5jkjjiinhhhgRffe\dcea_,\ZXVTR|P>N%L6JlHFEC)A%><1975P2/, (.$!hA> ~ Q"CB?H<:989 9::@;3<>@CrFUHKNQUY0\]_/`:acMdf?gCghijklmll$kkykl7lmemn}o,ooooo>nn_mm5llkkIk&kkk&kklmun0novoooPnnon mmQllfl0kkjigfd\ba`^:\fZyXVTRPNLJ9GDBD?=|:}62/Z+(K$| 8Y@2^ ) w+mKHyF DCFBBBCDF5HJlLO$Q6SVZ,]`GbycefgDhMiWj:kkl{m'mnoVouo(nnHnknogopqqrrryrrr]qqzppVonn7mmmmmnVno|ppqBqqq}q)pp@ooqon}n#mmn mm,l!kjiVhgfedcby`^\ZXVTcQOTLJGDA>:t63 /9+&""XJ & TROMMLLMMNwOQTtuvLvvmvuqttsrr*qqqpq9qlqqrNrs-ssssxsrr qqKpppGp)pGpfpppzpppqq ppponmlj]hfeEcb`=][vXVS OLH3D@;73/+'#TbaK_^^^ ^q^n^^_y`bc d"eoghjl0msnopq!qrrss`sssssrs:z6!2-)}% fgedd ccd9dccddenf,gtDtt tttuvvuuu>tttt`ssbrrrhr2qqxqppNpoooop*pqzrGs9t7u"vvvvvv3uu#tzsssDsrqqp|oomkigec_\YGUQMWHBoMo nnnZn@nmmlllmsnno$oprs^tt>ssstsss1srrrGqq:pp7pp p1plppqtrrsstt{ttttuuLuuuuv?vwea]tuuOuMutttt6sstguukuvvwNwxwwutsrq_on@lkigeZ==>>?@TB+DHXKP SW\`Idh>knps1uOvwxxyymxwvuttCsrqqqppAooOnmqr4sstuuu~uuvHvvvvv{vvvufthrVoli$eHa]wY TPM IFCA>y<:98889:iTAEIMRX1]c_hCmpt#vKxu<:97g67889M9;Y=|@D?H,KP%TYb^GbfyimortPuv_w/wxww3v u)trss?r$q$pp\ooo?nnMp3pqrs.stNttu5uuuwu>u uu~ts|rLolhd`\W_R_MI.EB$?G<9753221123>5.76:=BeFLHR Xk^dimr*uwxyyzGyIx*u0qm%hlb\VIOICa>:86T4310,//0123D469=@DHMRXQ]Iaeiillpr1t tuvvvv4u#tAs}srbq>p5oooWo5onnnopWqqrirssDsttssstst\sr3pmjieaJ\MW-QL%G$B|>;85310/%.Z--j---/1:4&6;/?oE(KHRX^diorv wypyz1xwtFpke_OXQJDx=942g0.-f,u+M*+ +,-.}/147,:> BGILRX<]:afjmphrsttuuuQthsrr=qpounnnonnnmRmnoplq%qqqrvrrrrs$sss3qnolmhc>^cXRLFsA<8520,.v,,4+@**$))~))z*\+U-/37}=cCK%R_YS`)ekp t@vtxxybxvsoic[TMF?*833%.,s*-))''|&&''(4()*,.037;@FM,SCX]cgl%oqrst4uu>u8tsrrdqpoznnnoOofool_lmnohppzppq-qiq;q0qrUrrrpnjf`[oU2NGA;6360 .;,C+>*c*))5(((W(''')f*-126

FV]=dj/oruuvOtsplg7alZrSLCD>7]2.+)'&^%%%%%%_%C%+%&M'|(')+015X:%52/-<*)F(B''W&&`%%B$$$$%&#)Z-4;CSJrQ?X=^e;imnp5pqrHs(ssssrr,q{ppqNrrrsmumm mmmmmmcml{lkl\m\nUonnxkh&a[jSKC?:3~,('#"!L!]!s"&"#L#v#_#s###~#*""""#$^'+X18s@wHTP?X5_#f7jnopp omkhe`;[UOI C>96 2o/,L*7((='}'&&5%$$$$t%/%i(+2|96@H,O7VS\chil[moRopRpqxqrqqqqpp,pLpqrVrsnnmmmmm2llkkhkbl9monoXnnkg`YQI2@x70~) $! ry - !""G":"V"l""u" !!~!!{"/"%6(b.:4^;C@JRX`4eqikmgm1mIlkhea^{YSMIGA<841'-C*('&&&%%$$$#$$'*i07W?FcMT[YbRgUkm?nootoppwppppSp oodop?qFqrsBonnGnnmlll>kuk5kulnoJpFoolh<`YQDH?6/( # N !u!"""9"N"p"N!!v!>!^!S!"%$A&,618z>E!KQX^bemghiini`gffcaU]GX@QK7E?W:62-*P'&%%% $$##Z#_#k$$&9)F/P5=dDLSaZa&fYjlnnonoBooooookoAnoopq5qrponnPn mhllEkkjk[lnoppypim*haYQ H? 6.'"~&z !"""r"o"""""!!_!n!D!!#6%*L/:5 :O?E5JQVi[&^9a5c ef=ggg\edta\V&OIB=73-*8'(%$$$##0""m"h"q""$'A,3;BJ&QX_eOj8l|ninnninnoPowovoSoUoFnnoXp7pqerqPpnnKmml`kkzjjk5lnoqppym2haYQH?5.'"HN !"""###6#"")" "&!"!#%*9.38mlkkWkj6j>jlnfopp>plh`AXP%GA>P5S-&"~ !"M"""##-#""u"""""$&J*Q.26k9=BFKORVYN]9adghhhfcp]WW'OHA;5_/2*'8%$$J##B"!!"  :!c"'k-5%9=AEJjN)QSWU[`4dgi%i+ige_XQ5IC ZAFJfMPSlV[@`#dgj6jtk/hf` YQJ%C<*6R/+(f'w&R%%s$#"!! \ g"'/w6>FN|Vq]ldilmBmmmnoGoooAooonnQnoDpFq!rpom9kjiiUiEhiijl|mnnmjf{_RXPOG">y5.'# PY ! !s!""""l"#$&x'*.3j8;_=V>@CG JN%QSW[``e h+jk0ki)f_YQJB;6/+(w'&&8%%$"!!4 | t"a&.5>EMU\dHilmnGnnonoooo4ojonnnn4noTpqrp0nlktj;ii5i hhiEMU\dRi6mmnn@noooogooEoinnnbnoprq]onl_k&jiiihhhik0lFm,lm(jh#bJ\UTEKC(:3N+&"3 Pr. - !"!!!!"$X&(+/5:@DGIKMPiRU#WHY;\_d+hbkmQm lif*_XPI A:4.*('w&&@%% $#"!Q g = "'?.5=EMU\d2ilmnZnnpnoRoso/no%oao nnodp9qrpomlMk;jFiiei-hhihiVj]kZl'l!l{jhc^yVNF=6%.) #!KQdb G !/!*!"%'I*.38?*EJNQ'SUWZ[]]^`dgk9mCnmmjf_X OG@9d3-*'' &9%%D$#"!!" < #(+/6>FVNU\dOilmOmmymn9nnnnYnonnoopr+suonmlQkbjj%iiYhh7hhijsk.kKkji0d`lY+QvH@d81+3%"FlS !#T&H)-1<6=8D1K@PUX[]_ac(d.e1fikn*oxp\nmie8^VNF?z8F2,)'#&%%7$#""!7 !e!$)(07?MFNjV-]$dpilm!mm mOmnn%mmn nnno[p=q>rsonmlkk1=}| H "$0'+Y0/5;nB(ItPV\l_bdfh}ijklmo"pq#qoomhc\UTLE=61&+(&T%$$#k"!!-  ` !!#" "&*29@HO|W!]diQllm l}llm/m,llmmnJnoVpJqTrsofnmm lQkkmjj;ih9gghi8iijiixfc]4VAMF >770*+%! #RDD< i "u$)L-358?FNSV \bdehjln !#"$N(.$570+w&$""&!D 6nZ^  !"%6*4/7Z>PELS[japg8jlal kqjWj jEj&iiij|klmnopxq^rynnvnn~nTn-mmlkjtiiiiiQhhiAihgxc:^tWQsJD=Z6/)&z#|"i!% )  J g!!X#&,2:UATHP_W_f"komp pqrms7ssshsssrqqn}jc] TLD=6#.)%M#p!!0 g f/AX ! !#&,C259@rGNU]bgjLl+kjiiiiiji2ijjklmno[ppqnno+orovo]nnmlkkjjjii/i$i}j$ihea2[OUNHA:4 -);%f#!!H [  T u!B!$-'. 4? ? (!P"B%#(.h4;BIPW^chjl k_jzieiAiyi!hhijklmnogopRpno'opzppp,oo4n3m)lblkkjjijjj;ifc^YnSJMvG@992t-W(&1#"!Z _ !"T%=)(/6>EMT[c\hlnpNpqYquqqdq1ppppookg _XQ6IB;:r3_,'<#I! 14:U6  "H#'L+S1x7>ELSZ?`elikHlmkjiiiiJi i%j k$lpmwn;oooop4nopqqrq}q#pkon}mmllkjj,jHjjjNh%ea]dWRLOE>71,V)&$$"! !%!1"Z#&Q*18@GOQV]e"imnppTpppphpoooHoRn[mie;^WZOHA\92+&"!< +(]* # %-)Q-4x:BHOV\bgjl1llkBjijDjMiiSijklmnohoooomKnpDqrirr/qqp\onnmmlkkkk}kkBigdh`[W?QsKVD=7d1-*!(%$"""j#$( ,3:BIIQX_RfDjmnkoMoiop"poonnSmmlkhZc]`WPI#A:3,'#!YF> "k%*',18?CF@MSZ*_egil{momllBkk7kj1ijk lmnnowooo nkn#oqrs+rr>qqpxoo nn}mll;llgllTjifd_[V0PJ.Cu=62'.+(&$$1#$%).95><CK RlZ`rfjm}mn\nTnnonn^mmXllk|jGfb]W4PtIB;4-(o$="B y/!#'?*056ErLSZag jWllmem;7J0G+&$[! UvM' "|%'+/5y;BrIBOV&[a%ejf9p52/y,+)*b+*.3z:;@GNpT[ag(jl>lNllOlOlIlPl2lkjjihgecb^8YSNXG@93>.)S&="  -!h#%(,T15;AHoNTZ_dhlnpppo|nmmljjjklHlmn*n)ml)j4h5\}aejUm&owpppq9qqqqqr$r9r#qqqqrpomlgifb^ZBU}P+JEK@2<75 2 0//0H37>hDKtQWJ]sbgj!lllGkkkk{kDkjii:hhgfecT_[VQKE>83\.?*n&Y$"C""$&S(+/W3T8\=TBHNTY_cdgjnpp?qqEqp.orntm]lYkIjk'kkklkki8g|daU[aDfjsmo(p2poqLqrKrfrrsstssssRrqp nlj]fc}_?[V?Q9LFBL=:76N45629[=C I4OUIZ4_ocgjFkkkkqkWkFk4jjjiohhHgg*ed`]YU`PJ^D4>b93/#*(&'\'* +.15:P?DJ:OTY^cBfjmepqVr,qqppnmlkkJkikk-jcjigdb9^vZMTZa,ej[lnmop`qRqrYrsTttuGuRu[ttssqp~nlj)g5ci_[aVR@M_HD%@=<;<=@{CINTY^ b_eikj_i(gTfdaw]YUGPE;M TY[aCfil}mokpqr-rstu~vJvvvBuuFtis9rCpomhjgdN`t\XcSO=JnFCBB C)DHGKJlO TY(]aenhjlcmm|mTllllllokk/jiiihLgoedaM^ZVQLGB-=97p556y8n9<@FE IOSW[_Ac;fj l}npuqr&rrNrJqpoKmlkkDji#gda^[VFQL'F;CKSZ`bdvgil\nopqrsu+vFvw vvxuut,s]rJqNomjgdma)]sYU_PMUJBILHrIK NQU+Yg]aeShjm nnnnn\n>n1n-nmmOllkkjjihkg?eDci`Y\XaSNJ0F7B4?=>%>r@IADHLQ_UY\`=cbfil]n8p0qLr4rarrrqpo/ml_k~jOhfIc^[WVRLGKA;1:C&KrRvY^c ei)kmo@pr;suHvwBwwmw&vuu,tsrqp#mknhreb}_T[WT9QPO?PQTW[%^bf1ikmo ovoooo^oeoio`o$nndmmAllSkkmkjihgwe b9^KZcV9RNyJH6F>FKFfHILP4TX\X_b&dgj;lsntoqvr^rrs/srrpo@mlkiLg'cW_"YUIOICm= 60n(09UAHPEV[O_cf,iCkmoqsuPv4vvvvuu:tt.srq|omk=hf"c`]ZWVVW)XDZ]`=cfikn2opppppVp@pVpgpWp ooHnn`nmmVm lllgkjhfcB`\Y3URbPN*""|r &D2#h)).4r9>CHMRVZ^behj6kln)o@pqerrrq{ponm\kjiiiiij/jklmnojopSpqXqqr7rwrrs sssss1s9sxststuuttttt3sSqpYnm0kjiiqijjkKkl[lmannnnlnWnwno2opqmqqqponlieb] XQ@JGB91t(!Y!_S R hu$<)q.38=}BGLQcUjY]aBcf*gikmnp%pqpponmlqkyjjjkIkklvmAnKoFopIppq&qJq3ppppjpnpopqp]pdppqqvrrs]sttgtuu`utsrqphopnvmmmmnXnnoonooooyoXoVoNoppppp$o+nxlk%gd_[UOH3@80' J4f L>*d$(-s26<*ATFJ>NRVZ3]$_mad=fi#jklmmSllQkkjiiBi1i idijjk7l lmmn9nfnnn0mOlskjjiwi4hhiijjkm)n-o0pVqursattssZrqqp(oAnn5nmnn@nooqoolo{o{oao:oooHonmljidfd_[VQKE8=6T.&6W _R} 6 7`S"{&+}05:?/CGL"P SVYU\_be1fh hiUiiyhhaggggggh;hi+ijjjk3khkkbjihwfeHcbaaJaLajbAbdqf(h>jkmoqBrJsIssstsrQqpoo_nnninnoHoooooooo+o!nnmlyjrhfzd`\WSZZYYYYyY&X'WUbSQPdONNNOPRUX\^bdg~ivkelgmNm[mjllPkjjj@jfjjkakkkkkkk jj ihfda^,ZVR8M7HqC=71+s%K  xa;VX %~'"H&,),0427;>IAE1H/JKMBNOJP,PQQsR S SSRQQ PONMM$LLLL6KeJpIGFIEKDD CCEFHBJN[QaTuWZ]`cdef]ffff ee@BiCDEFBFFGgHqI3IHH+FF ECB}AQ@@H@?>=940,0&!/r < uN|2a1{k6 x0 <  )_>S:!$&()*,;-///005001 000=/.-,+**)l('3%$*"` D` #%) ,(/37 ;?BEHJLNO*OOOQNNNNNNOONN9M"<9:a9+7Q40,K't# S fa\ u$ r a/!Ma:\\x # i  u .l*)q[<   0!%)_-/246|78`8V8 7778F89P9?8765\32p1-# kN  : 9I$W?}K*4},sHb6[  DA-O*d}&=zO_H@WUcnsvfL=k+  ,M} [ H  q j .^^  3f^V hA oMhVs_ ,(( tVznd4a7m,b)*IH40+"axhexlt0;c$ CC_Wo%kM IC`i4# JEF>9tnTuVKVgVSvVlF3t\SvC=7P@3o(LRx *C#Z{S+')s?T!)(C{BeX3&q !b pcY-UoPx#a~k6I^ T1 '_b@PliI*Qb7S3P6*Vdir[k MY *D`'M(JL!wWn#B.+MHIuapSE/Af0BX&e4=+JBZTb$2Crs6 %W{,/"|I ^:~hSr B[ 'AZ@Lw }w=NNINzbNV.^t.,_4cUMdx["9Pr$x^2 V  N|T8'\eDN`@gQA@g-sXp8MNPqvD5SH >wR7c.woGSYv`3!27Sx# ~]@4VuJ) ?5rphVi 7;.Ac^|XRw $DW]ggmY'/EKA668[L>vaH[m|imsyWLG[qcM38V{zb<'.GQY\wc4[u)huW.qSH^|#=S[WRSnrI%N[O?9<^ZSsSEl] wsxqmz~pmhN:$+GpZs[h!Jxb9`>>[ntm=RXXPGJeq[1 GRLEFVmxdCfAI-y_G03@i5|&!NeuldJ+ dHFZ_^^+<FRTLFR_fT$ 7ZgVAHbtzPHuH$*lr_RH0,7h |*s5KedT3 p[T^cb_ )EW\RII`gC NodG>On_UqZ5 '"rXJQZH>Do|@,PZB)~jcfdW6RjjTBXlb?!TniP>Lo}eViO 9o0VTK.~bMO\PUr })Aj+CTD8>g]Q3$AesgPPZf[+/c~iC:S|hPUyn:*0r!hte7%q]Ydbu2]aGaHVM*?6 ^D0 )Lh{rZEP]O5BjteQJZypahvQ0IW]G&{tpa\dzaA*<k}`Wd+B2 11xJ(*Foz\53H]_D*+Gj}sZKW}sagfXkkn`9{h^Wcxh<';\lCGw-* !3* {O0>RJ509GQPE9<Rlzu_Zyibn3ZZaH!zjfotPANr{REdrB) /881(-H]UC=Kktthkx.GE3 }p__bvbURp$S) -98+'@Z[L=A\}wsp})31hTM[mk]fu   k9 2=709JUVLFMc|vo{"j_\OMVi{yf`l ke`E# *17?GRVQJBPtz~w{ z\OSOUbs|vvy mF-    #.&,;BGOUVREKjwxru #&t\S[^epy}~| \B# &IDy 6<YCdoP=`DWh+l<M(9 ? ] )  / = 6 & 0  + ! ] g C .zN5GuPge3 `tF R_vIsG),T]cHEzQ5M/  z m o ` , i   B a p \ @    $ &  I D O 9 < O _ q 6 S CG_c}Hx^*o _W9\e[C r"1  q c [ ( s 7     2 F G >  | : W O  > p )  O  . 8 , " % / U ~  a V ) 7sO@( NrR[ xLMt!JG]#w_V ( = H 3  l T A ; 4 5 5 : E C :  b 2   7 q % . G > ? 1  h m  1 '  , { @ Y  V4|oU| p[7F.'*|X(q]  U a  d "       m H , #   . R o  O ~ i ( j 1  = T v ~ ^ F 4 9 8 \  &  8 Z n  xgE51[[X<Um:bZ(vQCKlX1 v 2 D R l   a !   C } n V 6    # ; X u O  ( D J < : 9 2 3 . O * L N )  ( = ~ Y  { V7?hgRO`c` 3m @ x q  n N A t } 8 { C 6 ' %     g*W('+5B_&o , )   . 0 * * 3 Q s y   DLfBTXg"s6qb-~ys r u  %  ;  [ l N X Lz"o{ d0 ;pd`^e>>[q =  c 5 Nxf{D5oq|?E[v  _ W X F   m = 0 = R .L<0Ref}nS& 'Op}4G`]*(nG  3 W z ~  9 Q d W :  1bp 0 I =  g 5 = } HY!OV+ &3>IOXU_4hkt{T!"E]kta?]) F?)RdODd / $   / & _ H A 5 /Alu$ > A b C Z t b  H l s8*.\&`ZLiE"kdwfC&,>MQOOTRh~4YrYfW$C 6 H W   4 E 8 ; t  < s L p^ v } i ; 0 ; h 6 Q >   mG=.dp0 \"::O$0?KTNE+ K=[]z ed&mnQ @ z t ! ) n m c ` x  ; . <   % ) ~JX5 32KDHGAII%V& !6AJYne /:f0/$)c     _ } z Z K c m t = R t #uF6W~3-D#difq@v[ i<(?Xx_?a#]?6ey1CS+?UiT  } 8 7 } X  ,   /Q,rRcaTmn:Ts_3E\_Z=%H ~eSDHPfub^ (b-tXaa=s>wQ [ WzuhaG4PH^m|G20E g~h% <rP,)  <\?$f;eWUVK8) MxaJ+/"~UCLsfyn:"B2bvny)e?Fe r/HTrcMZM[}\FR]v%9TK1Z i|e`emSF03=q kp6,Yq]#f~8D<jn_  Fo[`X]*2;=3/;m r E 9 v D J*J  U @ M  3O<0o>Z4"~TaJ})v3ZB_yT+OX9MK TN  $ 7 k6poD!Uf7g  jD*F_5Zhj6J|w'zan.[2|1v>(2}q/z2Hb . " krMwn%=p6T`c2oFp # 5G]F)IC! Iwzs}}8P$y @ bokbm !"/"_"!!!t!J!!K!""#""""""""~""""w"`"A"""0"g"""# #Q#_#O""3!* *+63 7Y6~~)2|Ws++@L2?ru_d&"S\.F%h ?G!#f%l'*+,--.,,,--0-;-r-.Y..Q.--W-2----1-;-F-]-`-P-(,,,-/-]-------U,++)(&%(# 'zks P  7}G|FX-9q{hBwBhR4r J .B>!$#&b(*-1/2 46S7777778#888"8*889888[898T889!9a999999~9A9+9=9z9999:998765^320/*-L+)O&# mqs~x?_ $FYsZ. 45;w   _1~ ! :A!!#&)+,.0358):DECEF F=;G976420(-*(&w$A"  5g h zu!BEY YB$K_W wW+ #x&7(+.14M57q9(;>K@CMEGkIKWLLM:MJMMMMM,M,MNkNOJOOPJPQnQR4RMRZR8R(QQQ;PQQ5QR)RS S_SSvSR POGMKIGTE+CBA?=;]864^2R0.+*f)*(&%># v4[5&} jQE B;U6t W"[${&),i.14|7;=?ABkDLFIL MO|Q STUVJVVVVVVgV:VW;X8XYwYZ4Z[[n[}[[K[ZZlZYY?XY)YsZZ[u\%\]D]^]U\[ZYMWUS6PNLKHFDZBM@><:8r6g43E20.,$)'M%j#!aiv &3V)*I&$/!!Q !["F$F&S(*,/147: <@C~G IKLLbMPRU2WXMYZ\^A_H_p__<^^^^^_S`+a/bbc cIcccccabbbaa1``e`#`a`abTc/ddeef.ee)d2cmb:`_]3[WYWUS=PNLK-I1FDBz@>=l;97c42`a2b]cdeeeyddldcdCdepfDggh\hhhhhSggg fheeIddded6d}defg]h'hij@jjBiiShhugfedcb3`K][YWV$TMRVP_NxLJI4GFE?B@{=;E8642v0-t*z'$!=>,V 'F>;a866l5679;=?BDGzILCNRUX[y] ^X_h`bdEetfmg&hhjjkckHkjtiiijKjkl]mmnnon]n:mmZllCkjjii=hhhi,ijkBklmBmnsnnn\n mmmm'llkjijgecba@_^W\[YnWUSQYNLUIFD%Aq?=:8S5A2G.+&"T v^sHfE1BA@@5ABJD@EGILNePRTWZ]`FbIc{defghijnk#kl]mmmmmm+llmmn0no~p ppqGq#pp_oo-nmll,kkSkkpponmXkihfMdc(a^\iZ9XUUSO&JEA|=8q3/*&"*a5_^]]]^_9`2ab+ccdefh&ikRlmnppqrrKrursNssssos4rrrrZr*qqqr=rst\tuuvutsrqppnnmwmtmmn8nqnnoRoooooppppsthttttVtPsserMqonAlljiJg@e@c)am_7\Yk940|,($ eddMcccdgdeOefgfghaijlFm~noprrsesst&ttu&uuttVsssshs2rrrspt tuuvxvvutsrqponnmmmnGnnno o7oIoQoBo-o&o5oYokooppApcpppqqqXqrstquu&uBu/uIu%tt7sor\qEpAonmlj~hg4e\c`\XTT5PJLHD?b;7=3o/+'k"iii=ii iiDiaiiiijKjl!mHntodp[qrstjtuu|uv;vxvvvv-uufuttt1ssttusvvwwkwVwvBuOt srq1pdomnnKnanoobo|ooo|oaoDo!nnnoo*o_oopp3pRpfpip|ppq?r stUu`v vvw vvvvuEtUserrqSp7omlYjigd`]YVS*NJYFB;>:61,l kkk|kak7kkkjkjkCl m8n%oopr2sGttqtu!uuvv@vvvv'uufutt(sssttuWuv{vw:w+vvKutsrrQqpppp6ppq4q5q,pppp\p"ooooooopp#ooooooop(pqstLumvxwwwwwRw vcuttsarqponmmMkifc`^m[XUTOPxLIvEA<7n)nmmmmHllllulYl-lm_nxo.opqrstFtjttuuFufuuv vuu^ttttsssst=tu5uv!vsvvvvguutwtssjrrr:rkrsXsssps)rrrEqq{qppppppprpooZonnoEopgqSrstv9w%wx6xkx:xww0vuuGttsrr!q^ppnlj_gf=d6a^YZWTQ MHBooopo4nn`n mmmm}mnnopQpqrsttKt(t tssssssssosryqqeqq/qBqqr%rs-statucuuunutuuutt{t_tuuuuu|u tthsslrrBqq-ppppoo4nnmmLmm_mnopqs.tuvwxwwwww?vvXuuZttlss9rqpo\mkjighdb__a\YVnQLqbqqq2pp%oooo@oDolppqqrs_t&tttt@ssrsrrLrqqqqpp oHnn\nanUnno$opqrstuu7u?u9uluuvuuuv>vvvvvguuutssNrqq*ppppjonmm$lRkkakklmop`qsPtv=w(wwx wxx www2vvKuu~ttJs`rtqIonmlljhfDdba_1[$Vkrrsrr4qqqOqDq!qNqrHrsttuZuv-uutts=rqqploonbmlljii3hhhhi)ik2lnpqAr;rst1tuv%vtvvwwDwwwwGvv)utt,sgrqpMo9n\mmm^lkjdiBh4gffgghjlEn"oqsvtuvCvvw-wpwwwwvvZvutsrqHpo-ndmmFlbk!iphfHdpa?]Bst6trtwvltxrvp9n:kifc`{][YWVSPNMLLL4LHLFM~OQTXt\'`UdhlpCsuxyz.z{C{j{{"zoxw{udsupmyiie`]ZW$TQO(LKJJkJJIJ(JK_MbOSFVZ^Hapdgnj_lnp qrstfu:uvdvvuu ss.rqqRpp3ooJnn'mmkrsCstu%uvvQvw/wxfxxxyymyxwvBtroljVgd~`]2YVTR5OL]IGmFEEEDDEGJMQUZT_%d imiqtwGxz+z{W{`{zz5xwvt*qnj;eR`$[ VROMJGEqD/BBBBBC3CE;GPJNRVZ^gaehk4lnpqfrostqu6uuuu%t5ss%rqq@pp=ooennnQmq^rrstuCuvvavwGwwwRw/wwwvut r okheba^YUR OLJRGDBc@z??>>>> =>@CFJNiSOX^Fchmquw9y4yzz{%zjyxw=tqnqj e[_YTNK GEBz@>=P<;;N@CTFK/O[SW[`$cgijkmTnpKqrsttttssRrrJqppXoooLonnnDppqrstu$uuv`vvvvv!vvqvv_u@txrp l]hda \X~SNKGEDB@L=v;89j887766u79Dm;97?5U322[21\101257;?ODJQXg^dio'rv\x'zz{ :&75:3b16/.3-- ,, ++4+,.0J37A=CGJQX_fehkyptRvyyzwy-wsogi~c]>V=NF@E951//,+l*>)))***+,4-w.1737;A0FlLQW!\x`dgjlopqr[s6stss+rsGr`qoMkf|az[UOI^C?<894=2&0.-+***3*))((}()+-06s)T((`(=(2("''v&&g&&'C)~+06Z=E,)(4&&V&&9&-&%&&%&"&'(+ -27>EkLSY_dJi lboq>rs~tsu7vRvveuvutfsurqq}qrzrsGsn/noop8pcp=pXp,oonmn noGo.ojnBlid]VNF?7]11+'o$w##z$$v$%B%n%%%%%6$$4$/#%&).4;CKTV] dkp'stutcroCkme`ZQSLE6>925B1., *('N&&&p&A& %%%Z%]&&(f*o.3:A~HPSW]xbgknprrs|t&u>uuttRssr\qq~qrsCstCooop"pPp1oooenmmlmrn\nnnmkg2b6ZSSJB:2,'#$!!!!v"Q"###$$)$T$H$##J#C##$'+h17?GPX`glWpqs2r4qmjea\ VYOHB<852A/ ,l)(S';&&&Q&%%d%$%K%'(,i07>EEMdTr[WafjnBoqLqrrms@ssrrr"qqJppqEr=rsYspppp|pUooUo nmll)l\m/nEnno mXk5f`XPG?76/M)$ !o !"""|"""##"""c"]""# %(.G3;@BJRZPagel/nponl%i^ega]@XSLFP@\;741 -*(x&&i%%%V% $$?$$N$q%&*B.[4;CuKRhY_ej+noqqq>q;qrqqsqppp]oopqrBrsjrKqq'ppMonnomllNklrmnooomkde_WOyFx=5-(B# { !e!"""%"9"""x"-""&!"i"$'K,>1=7>UEzLSSZ`/e6gjpjkibgdb[_ [W'QKD?:62/*(.&%b$$$8##{#>##g#$%v(n, 2^9@HP.W^4dikmoqpppeppppXpoooogoop qqr/rsrqpp?oUnmmel_kklmoMpSp.phn>kye_mWNyEF<*4,,<&! " !w!"1"'""""f""I!!!!!!#%*A.4<9@F(LZRXp]c`}ce4ftfedcxaN_J[@VZOIC>F9z4{0+\(%p$###'""a"!"4"T##z%(.5l=EMeUF\DcZhnm=oFppUpooooooQo=oxooqoiopqkqrtlsCrqpon*mmkkkln%oppppn?k,d^VSMD;_3]+~&Y! h !"L""z"p"i"""]"""J""B"<#& *-27O<`AFLQV;Y]_ac/dde!cb_'ZTNeGA;6514+(m%r$`#e#=""~!!s!,!F!?!!#%+U1:2BJ&R?Yafkn\poo~oooEoLo9o oozoooopqLqruLsrkqonmmlkk5kclnoqppYpxmj`c]WTLlCL:2(*o%!` #  !")"d"J"M"P"k"l".""K""""$<&f*-15Q9F=bBG9LP#S|WZc]`ceMff1ec_sY@RKE)>8i2,)%$###"!!! > l '!#3(4.Y6>FNV^TdUj lnnnnGnSnnnnno,ooowop_pqr:utripon;mVll k%jklEmnpoom iFbu[SKB!91Q)%5!O P^ !)!!!!!""!!"k##,##%(+/]259!"!N!!!!!"b##|$7$&)-t14#68;t?0CHKNREV:Z_wcfi=ikjgd^WPHA;5.*k'5&^%f%+$$#!! l B $*U29AJR Z/`gk%mnnQmmmn nmmn#nnnnoOopqumsqpnml.khjjij1k_lmonnkg`Z0QIl@70k)$ gz X !!.!=AEILLOS6W$[`@dgj6jljhe]_XdPxIB ;+5C.*'&&%%m$#"!!I  $)19fAIQY`gknno nnvnanQn!mmmnDng@BDG ILORUY^bKfilllif_|XQILA:5#.*('&&&%$#"":!!N !/!g$*29{AIQZ5aJhlp ppp[p=ooonenn nVnAnQnuo:p;qssq`on%lkkgjjj5jj4kl3mNnFn8nvlXic^-VmNSE=5-(#x!6  z !!!_"#%}(l+S/5:?wBEGILNnPS4UX\`dJhkmmmjbf_XPIA:r4.k*(''Y'Y'&Q%a$H#L"!!!!!%*2:BKJwRZaim@pqqyppp\ooUnn,nn_nRnnoprjsrTpornllkkYkjjIj>jklmmn4ljoez`vY"QiH@i80+%g"TcDVo b !g"n$&*.3&8?DHLOSQSUWY[]`dEgkmoonk'f_XPH@93-*%''''&%%$ #5"""!"Y#('4,4n;CKS[bimuppqSppp$oonTmmn#n:nnpq@rtqpU]cjmppq9ppYoounmmsmPmmno*pGqsNtq/po mm:llhl kjj'ij jk~l+lm4lkhOd^6WkO60*'%$###&""!!z!"""$',2:oAIPW_ek3mp+ponnnFmmlKkklmCnEo.pWqst}pooJnmmm/lljjiijjjk'llAlljphb]yVZOxH @9L1,G'#$]! gj  !H!#&o+t0{6iue`zZ SLE>(60M*',$" a !"$/'$,2\9c@GNfU]xci6l:np qrt tuvvvvyuu3s pjdd[SdJB;3M-U'$"l" !J! m e q !H"V"%)T/6n>#ELLgSZafk2ln^mm/lkkkjjUj|jklmnpqr sVppMooooo*nnPmlrkxjjjjjjkOklkjofc]xWQ]JCR;5.*'$"!s | !%!`")"$(*.4-;BkIPW_qeEjZlooqqrst!tPtu,uKtt5qoi.bZ QIAj91+&a#!w!" h L ' : & D e !s"#'e+2f9'@GNU\(bg!jl+mZlkjjjjiij$jklmop pqrqppppxp6ooCn|m\lQkkqkek`jjkkll&kfhe`[UOQH @92-)v&#"i! !W!~"["%)9/6$=DKSYaKfkUmjoeppqvr7rrrspsss.rpmg}`XPH@S80*%B" n jog B!!#%q).p5f<9C|JoQX^dgjkllk$jiiidi,i;ijlm1nEobpGq qrPq q8qCqq{qApp2ognOmDll:lkkLjkkl|ldkigc_pYSLE>72=-)&P$}"",!"+"8#;#'+(18@ G3N%UR[bgkm=no}p;pqq;qTq]qqqq[qBokf_XPH@81 +%~" C(\  "#B%(Z-2u9x@>G4NT_Z``ehkl3ll1kRj_jj ini/i_jVkQlmnopq qVqq@qrr}rr_qq'pKo1n!mKlllpkkjkl;lvlljifkc)^ XRKRDA="61+-)7&$#"# #$C%<(-/4"; BIQX.^xdiAlmnoWppLppmpQp9pTpgppom{jid^WPHA 91+%" %^rcZ "$'+*0m6F=ZDJQwW]b}g.ilGlm-lskjjjYiiJijklnoppq&qq.oqqrrrr=qpoon;mmmGlukkklsllkkhfa]WPJECs=+72.<+~('L%%%&(+0b7Q>ELSZ`fjmmnnooop$ooomoMo1oHnnFkid^X,QJ9B;3-'$! J n "K$'u+W/O4;BHNUWZ`ydhkNm{mnmHlkktkjij k/lmnD?x:r631/D.C-(.-/[3`8>DKR=X_d;i)kmn%n]nnKnnnn{mm l\kkdji fc^YTXN&G@n92-{)&'#!m  "3$'8*.38?6EL5R^W]Vaf,iFlndooonnsmlkjjRjklnm'n!no*nnbmkei>knpsqqqqqrqqqquqpoooooo!nmDlGjg6b^Z UfPeK'F@<9]7^5 323_4Y8;sBHNT!Ye^:c~gkmo,o$o!nn;mmmlkkjgjiihgda]YTOaIB<62-E*U''&(9)-n05o:@FLRW]a?ehkmpqqq@ppKonmlkZkkRklkkkoji%gzdaWG\afjmoIpq.r4rssttt'sss rrrqq*oo*mkhea^`ZVvQMHECA@y?@xAnDHNPSX]afTimnp ooo nn=mmIlkjjBij j/ihfdl`]YTO1IdCF<72/,,, -/_3 6;AGMS=X]Haeqi)knRoqtrrbqqqpfoanlkk|kkkjj hgBdb^\ZNU!Z`ecilnoq/r3ssttOttttLt&sssQr~qPpo@mk{heWb@^[MWERNJHFFYEGHJKOSX]beilCnp!q@q#ppooJnnjmlkk.jkkIkji$gwdbx_[ZVGPJD?1:>7r44^356:K>CI8OT^X]ame[htkmopr$rrrSrqponam"l"kkujigf'ca+]YU/PvFMT{[Y`f}jm n}pgqrssttu*uuuuxu>u tsrrq#p>n|lDiMfc`] YTQNLyL#KMBNR#UY]bfPimopqrrrDqlppVooknmll2kl$lwllVkWj>hnfdba\WRL/G"Bk?<<;+uuuuuu6tss@rqpnlij-gea^iZW.TRfQQS(TX+[a_bfimoqmrsTsssdrqqIpp_oo&n+m{m1mtmmmm3lkXjhfvbr]XSOtK7HUEDyC[DmEIPMCRUWS[_jbMehik*m&op-qwr3rrsrrqqonSll jig?d,_\WrRLGDAj;e2:COKPRAYg^cfjldnpBqstuuWvvIvvjv>uuKtt2ssMriqo&m[k.ifdc`]t[XX:WYp[&^%a'dzgjvmp(rrstntktt'ss$rr qq+ppo!nnDnnnnnnWmmlFjgac_b[PWSPNLKvLOMQTYO]x`cf.hk)m2nopr rs7s1sFsrrq#on*lkj h$d~`eZUP.JC=60H(19GA,H\OU[_cfilnpWr.sZtotuzuuruttnt.ssrqpfnm k1hfdtb+``^{]]^`=bejhRjm^oqstyuttt>ssLrrQqqqptooRo)oqopp2p ooonmxjh0daa^ZX UTS6>UELRW\c` dgjmAoq.rstfttt_t>t0tAt8t-srqp|nm1k;iUgfCe4ccWcd-ecg{ikmoqsuuvJv5vu|tts rlqqq5pp4oopwqqr,rKrqrPr]qpoligd-a8^\\ [[]O_bHdfhj3kYlmsnCopqr2rs-ssFsrqpnnlj)h?d`ZTvME>6Y.'!C`&&-&4(;XAH]MR_Vx[_BcNfliek|mopq=qqrr}ssmss;rqpoZml#jcih-ggffgqhujkmFnp%qs7t[tuuv uu&t2s$rMqqqRqpppqrr[sAsttJt,t7ss0qomrIrss>rqqpnmljj.jiiijhk:lwmnopSqprss0st5tunmlRk+jrj[j:jijojkrl\mEmnYnoEop9pdppq[qrrrrqrhrdr7rqr/rsDt&tu$u"uVuquuXtsrq onmWll:l=l>l|llmZmn[nn9mmmnno0op:p#ooIonmjgc`H[WDPJ8B,:,1)i! Tf $,t>"w',16*:?hDIsMQUpY\_b/d:fyhklnootogBEIMrPSW2Z^QahcQdefghKh$ggDg!g!ffffrfffff5eeeded2c%a`A^]}\WZZAYZlZ\][_6a c^eh`jl:noNp{qqqr qq5ppOpoogonnooQoqoWnnnmm]m;ll|k3ipgeEc `]DYTP%JE?92+$Hv } C & <)p"&+@/]36_9=AwEHzKOS|W Y[z\^2_@`&`B`__` `__T^^^^^~]\\\\;[dZRXW5USR)PPOHNO/OQpSUhWZ^1a]d$f9h\ik}lmnnPnmmVmlllldlslllllll(krjj5ii-hec?`-]ZW}SIOJE,?:k4.("j/ v # |Ft~  }#'+.[159=|ADHULOQS TUVW(W2WWHWWWW VEUUyU=TSRR~R+QQPNMK|IHfFEE"EF}HKIL~ORhVY\_1acfgi%ijjjxj3jijj*j\jjjjjjj)iahfggfWdb_w\tXUQMHD`?z:G4/)$k>i 'aC'i v!#$'#*.2r69|<@BEGrIIJK:KNK(KRKKKKhJIIUHH\GFEE_DDKCVA@?Y>=;;=:;o?ADZGKNQTtWcY\^`abbc$bbccxcdPdpdgdHdsdudZcban`_^~\ YaURNJF:A=844.)t$gu W@kg i y .#='<+C.147&9<>?@@0@???@J@^@3?? >j=<;:99,8765|421u0o/O../I0D2#368;?IBF,I+LKO!QT@VX YZZnZ}Z[@[\\\\\a\\\\![:YYWtUoROLHDX?h:\51-(#,t MQf/t]cI7f n V{AG!$'*;,.c0o234444M4%4%414:46433h211//.)-},+j)(R&%6$""V""#%'k),4/a26E9<:e61,($X  F8 T v  @r|kW*-w'uE(sLe$)'`!5GzaK-0 x3`7K&c|waB"h,W; C`Z/u1(]a>gDs`s_ 0?;fs"79fIpI4%4On}yxfF.262[|v3A4Ux?b[\[cVr!(kOI>Zc5"J6C/{IjIzUGSkget Z!lNvl7FK$EbX:Q2g`,(u<V*5#GdA|gLNJK{ zo}}c/dadCuQC\;|(h9&`hGXzqA*$]hA^:ZN $ _}ymLi_ U  Hp &>2|^>" '=T&c g{sz'K19RDBm[qG@5Hk4Ja/ rH>#VLJxYt1=\m1  2j:C7~nP(L:4 t6&p/C`1A\>Boyy.FOKN|dQ\6h6( {n\:rrjtvKCYx$/ |eS78zt2y8+A\@W'jKgI>Ca}+v_w7TUSrwE6VN"IT6^)~`baxQ* 6>Z "( lI4*Cl|H&-U 1 alfbuC?,Bf[ yYTw )Pbdkhm[,0JND<@HkNE\Ogt.qpvoUROd}jL>-7Tuq`alhlt -k /^}  -jsY0lMEZvz<Xc_YYprM'S_SFCKl\\n[Kqf{qxys|tnqjl}`PJ=CYxb~P^(Jva;_9:Zkoh2JWYSNRip\5 #LWQLPaweF`CM3&wU7")7[@t)Qanf`I*eEE\a_b#:HRPKIT^fU%:]k]JPhz}VInO*/qzcNB.2@o Di7F`cV5 nVR`dab0EPUPII`eA !OrjOESrfVkcC  #{aQS^UXf"> G )O^H"#xgbc_U8QijVEXjaA#UrpXDQq~bN_U!J~2XVI(iRP[S_ A Fv )?QE19dXL0(GkylTQYg^1 /eqLBVv\FPzpC8<y#iud4 {v_V[Xmt1(^`LfFRI&:2 X@, -Ok~tYBM\Q9Ep|lZQZt{h]h~^;OVX<}utuiabseD5N{d_n.F6   /-q@" )Ep|[1-D[aF,0Nq{cPXtdkq^ligQ'wkeajwY>Or~QT324*vG'  AVK3-7GTQF=CXqz`Vvmfr1XVW<|xjgr]HPs[Ih ""pB(  "1982,2J]WHCPozkxzxlo,B>/ zyk^]Xdl[Qh  Q+   +67-,D\^PCGa~}zvw !)*yeZZhuznry  e4  ,973>MYZRMTg{|y sb[T^p{{ je_B "'08?GTZWPHSr~ |`MMO^p~  lG/ &3,*9?DQZ]WJMfuv}wy  "q[LPWeptrpr{~ |ZB&KIy 48T@\nN8\BYr5  G~G%+ 6 _ *  3 A 4 %  B ` A S g F 6K.>nYec/_uL  R`|GpD'(T^TC@xV:WM  y h k ] " V   A ] l [ @  $ & '  U  _J : ; R g z B L ::\aIzU-s ]U:^cVB m( z v  f ' h ,    * 8 I I A  }  ? X I '  H _ . 9 2 ) - < d ` O  7vUC'! PtS] zHQpC>]!zi] 9 N R B 3  f S = 3 - 4 = H S M A  j 4  3 r ( , H  h m a  ) ] g  5 -  . y < \ \3}pUv`:H0(+\)n\ U d  } , z    p J - $   , R s V q / ` !  ? Z | k S ; : 8 \   8 a s  veC63__Y;W s?f`/}VGNlX2  q 2  7 Z u " 5 _    1 l s Y 5    & D f P 5 U Z I H D 4 - ) K  > >    ' D Y } U38ff![Wbe_{2k 8 z v p  m M ) 4 V L H '     d+yR$$'3Ehi  4 5 "  2 4 , $ ' . I i  y  } >HbDV`k-|/p^)|wn m i  #  @  @ { U i / sD}%n~T$Fz ][\oNVs~ 0  b 2 HubJ:r#o~;>Qm  V O U G    w E E ^ u D:}8 6Of~jzlP ,Uiz4Ibc4 'f8  J y   ; M a V < "6 ! in . v @ 7 g 7 ; r Lk -nu, :OYP]4ans~V &F`q{~_Gk8E1?J3/[ 6 ,  1 ! Z F @ ; ,Lqt% < @ c F [ q [  A ]} U5-"NAlh4kJ'sfrlI)"6DOTTRSK^t5`_IUD#J  - E ^ / = /  9  t  ; t Q ub q x k : / 8 c . { E 3  w pM`(/}nEAY-'+BSRA8& GF[XpX_( uxP 7 r o  1 u o d b x $ = 0 > !  % % s@N+(3EfO^Y?LD[//CNU`n.|34s{oV:!1X     b   ^ O m y x > Q w k>.K}7WP]8{f9Pt;sLmC&7MbzgMt8Q*}HUq-E_-7M~`J  | > B  c  -   %oG!a<a}s'nSY*h3HEVYL,s8jWLS^u]j<pY{9Im<m5rV _ b_|\=(JHLcn4;kHZF7 .[kBV) zlWNQRD. DrpeB+ lO3B{oyg::{+\t2a@}8] p/H!RJ&0S%$i<&8W`u&G<c'Hqgjr}i:VQgvMlm1#OlU& l?KCt|h ,InJD+_23@N8, }>J B j } Y 7  R ! h V k 'w yU$\A\p-Hv!j,RG g[0U_9W88< [ E * OhQX+ R ZY1S\ tF6RW' G4h09y\r'N'u/tG2$>z.|==Y(v{e IWi`9 o .?\W/`M=ISm7p$=N xQEO;s M{~{-;E qrT a 9L*6j !K!!!!"@"#8#p#z#X#O#U#d#z#######M""v"!!!!!!""X"""""!% 7+" - f ~"s#,<%wG`x-ER=N z$ <3cs>>(y  %^> #s%'L(*+F, ,--d-.[./J/B/..d.:..-. .#.6.L.2---H,,,L,;,f,,,--d---3,++5)(&$" 0Yp)}V* |   8Pf BX(0vzEv]`J ' q _# X"B$z'Z*-g/1;24567{78i89K99999)88889199:":W:H:$99w988v8n889 9C9g99~9P87654820/- +8)&$b" .wqa z " qj 8FFI  ( & 3G>ZD!"%&(9)k*,.25'79;<=?@BBBCCCDD CCCCD%DEEFFWFFF]EEE8DDDE"EqEFFEFpF,EDCBuA?>=T;^976c420.,+>)(&l%#"!m, x_ ,mS%$=^}H d#!q#%'),5._0o124 5g79?AMC_EYGpIKM NiOQhS%TzUyUVVhWWXsXYYs<_:T865H3'0-*('&/$" }   # e3)& #D l " ${&)j+-05258]:w;853T0.,*(&O#!\L)D 3Au470{-++1*+w,/P1368G:=@QBEGJMPUQSXT[UW=XYZ[]^x_`ab\ccmcycgcycdef~fgHgugghggg1ff+eeFddccbbc^ddeVfPg,ghimiiiiLhhbgfedcb8`^\[aZQY1WUSRPQNdLSIG>DzA?5<:7531/7,a)x  J l>:896-55!67:@CEHUJMOR~UX[N\^_`kab_bcKcdefg\h%hi$i?i7iiQ9_4a/W*&S"z ja_^^2^0^0^_`bcodf/g.h6ikln1opqrvs'sussss[srrrBqq"ppqqNq6q2qUqrstJt|ttdt!sgrqspYomlknjjajvjjjkFkl(lmqmn ntnoBop0pqqUqqr.rorrs sostotu&u/tttt~t*srqkp)nmm kjRhZfudc;aF_[/VQLHEC>940,'$: +eddcdd&d.ddefbgFh hijkm[noq]rstttu u7u>tttit"srrPqqqrqqr rstuSuouu*tsrqpoon$mkkKjkkkckkllvlmMmvmmn,no/op)ppq q-qIqSqSqkqqr~sQtssss2s-sttcttvt?ssss4rrxr6qqrrBrVqq]pxonn mm{mnopr-sjtvwwx,x:www~wEvvvuuttss3rrpoXmkjui gWda^{[YUQM*pqqQq)poooo#o,o o_opFpqrDst8uXv.vOvAuuu4ttt'ssArrWqppoQnnnnoGopUqrsttuAuuu[u3uVu{uou5tttu:uuvuuyuttt4ss]rrkr"r.r]rxrqnpUo>n?mLllulmdnoq*rxsu(vDwKwwwwwXwPw?wvv^uuu2ttt#s_rqLonmml!jrh5eca?^[W qr@rrVqq:ppppqNqr{sstLuv5w*www~vvauuZtts)rNqQpNo-mlkkjqj0iijjkm4npqXr2rsmstouuuuuuv+vtvvvvvMuugttssErqpptp]rsAssprrrJrr@rvs stpuuv/vx'yyy@xx>wvv'uNtes2rpnm?kihLfedd ccdeg_ijlmoJprsltuvwHwwxxCxxxxxBwvv;utsr^ponmlkjvigfzeRdd"d^degeirkemAopiqrstmtttuusuuuuucucutsrqpooTnnnJm0kjihfdBrsssss`sGs)s^st_uuvRvwtxGy]zzkyyxwvutsqpJn?l!ige}c=aL_g^1]\\]U^_aXcneNgYisknKps%uvwxy*yyz+zdzz|zy8xfwAv-tsq nljhfe2cSa`_]]b\]]]^`;bdg(iZk:m np?q^r%rcrsstUttttuttsrqppKoo4nnmllkijiugsAstGtctOOOP6QRRtTWZ_]aeimqBtvxy{{|I|l||){zywus,pSlhda]ZWTRjPZOmNNNHNqNsOtPSLUX[^adgxikm ngo]pqsr@rs[st?txttqsrrr+qq pp8oo+nnanmlr5rst!ttu!uluvnwwwwwx|yyyDxwvtrpnl iafb_[Y VISPN)LJIIII!I%JKMiOSWa[`ekjKnruxcy{:{|_|k||{zdyvtZpm>hc_ZVRPMJHGFFFG7GUH8IbKMPSWlZ^]adgikm nopqrarsnst:t@ss(rrr&qq&pp`poooZo nq qrst%tuu`uv3vvvvvw7wwwywut3qoAlXifc!_F[HWTQQNLIMG-E@D5C:BB=B-B BCF/HLIOTY__dinrvx/zz{{|{~zy$wFt plh2b]DWR{NPJmGDC$AA@U???@=@A}BDhFC=(<;:::~;Z@DwH$MNRY*_LdjnsWv2xy{A{|{rzxAsD%GKPUAY]aldgmjlmo plq!qqrcrrr)qqq@ppsp.ppp"p1p#pp noq rrsst6t]tttGssttuut`t'rphliPeCaR\X>SoNJeFC@Q=;e9765504m4:44579e<@=EKQR X^djo`s,vxz{{{yvsCnFi}c]VOICe>:q75(322^11123%4P57H8;=}A4ENJjOTYR]|aehkmKnp-pqqr1rkrrrqqSppp4ooop4pfpjp[pumnpq-qrrsssLs$rrrrsGsss1sqgnjfb]SXRMWGC`?G10//.\.-.O.0G148 =uC`JQXo_Kebkp'tw;yzR{@z xtpajcd]W OH8Ax;62R/-I,$+**+&+W+,-/,1246:>DJKOUXZ4_/cmgjmhnpqdr rFrss5rrrqq[pppbppqRqdq_qm^niopq_qqrrrqqppp}q8r rrr:r#p7m]hd^Y&SMGAE7MT\djq'twxywupkd^SVO$GE?B82.*(X%$###$X$%<%&') *O, -04:@GmMTZ`Mf j:n p/r`sptvtujuv"vuttntsUrr^rrssssnnopq9qUqq=q:qppo;npn}oNopZppomCid^LW9PHAA:3/+&)('''''(((0(''N&''(*.29@HPY avhoYsWvwgxvtojd&]VO*Gt?9=3q/+){&%}$E$#$\$%%e%&'m(J)*-g06D<(C8IPW^dTimp1rsu utuvvvvuKttess.rrs>:52.+a'%##;""""""##l#$&8*.5&9S50,(%#""&"G""!!!"A"M#N$&'f+l28@HPY`7g#koqrBqq4pYppoofono)ooopyqHqr4rutssr%ponn0CINSX-[)^`uaab^aa_]YMTrNBHeB=72. )x&y#""P"n"<"!!!f!z!b""%,(.5Y=EMVX]eindp qkppLoio onnn9n=no=ohop^q7qrirvutusSr,ponmlykkklmno!onOlh(b[RI@p7/)#  v !n5m9kjjikkmn nRnmlgybKZ\RQI<@47/)$!#J! 3 !!x"."#W$ &3)-*047:=BFKNQU>X\`ScegfEebr^uWQfJ9C=e71+(_%u$###r""7!x  [ 1",$*19fA:IfQYag#l#nooNnn mmmm_llmnino;opqir;rwvtprqLonmPl,jiiLjkl+mmamlk1faMYRQ?f7`/r)# <p 5 B " ) 3 % , 0 !!"p#$'?*.258I:=/@DI LlOSW[` d_fhhheua[8TfLE?82,)&&%e$$x$#"!  0!#)08~@IHjPX`fkmoronmmtm\m9mllm6n,no#opq_r[sGwIusrptnmlkk8ihhfi:j8kalLlm kjf`XPH?h7/)$!2%IX  !""$u&)B- 158::=)>@CoFRILPSW\i`ehkpk`kAgd]VNG^@\94-)'&%%%%*$K#L""!!!"$*<09@I'QYyaglnpvp onnnn/mmllmno)opMq>rFstusr'pkomlkjih[h%hijkklFkcjOfDaZRrIA:P2,&#B H c !l"-#%_(*.38Wnnnmlm\mo op$pqsttutsqonmlljihhisjGkkklBkjgnc?\-TL_D_<5=.({$!d  A !5!!!"$&* -2E7Xi\Q`Id[hkntn4mjCf_X"P3HD@93-)'h'H&'/'!&%%$F##,#-"$7&,Z2;BK So[FcYinpqqqMp~poo+nmmnpoppqcrsunw tr}q)onnmlkjiij$jkgkklsl=li(e_*X?OH-@82(+.&"!Q ) / \ !!k!e"M#&)Q-B1i6rrqimXhQ`Y>QH@82,e(&v&l&&O&H%%b$$/$ #$W$&8)`/6{>F/MU]BdjOnp>qqqpppoo n5nn}oppqs tgvwrqWphoqnnun.mm kkjjkkkkljlmBkiad^$VOH@i81.+?%#x!P ${ !"!"$'E+/4:B@G^MTjY\]`Jbce7fgikmoKprstsrnLh`Y@PH@y82#+(%v%@$$$$$$##i##$$'G*18@HOvW^"epjdngoqppooohnndmm}moopq{rtuww qppoHnnnn7mmDl1k7jjjk-k.kSklfm6l$jde`YSKDW<4.Y(%o"!F !""%/(-28>EiLOS"Z)_dog ixjl!mWnpqs@t(tuLuvtsoLiaY(PH?71w*'5$$7###{#\"""#6#~$% ( ,D3\:qBTIPXI^ej`mnpoonnncmmllm|nogpIqArnstv`qppobnnnTnmsl[kJjjjjjjkHklljfb\VOHA9E2,(%T#!/ U % !d"c#%)/5P;BKIPV^chEjlnoHp`qrtcuFuuv uv:usoQiz`XOG\?P7C0*&G##:"""b"]"""E"#;$~%k(-5<&CK-R*Yr_fjm2mnnmm/llllHkl7ln0op q r#s3tMuq0pp oo5nnnmlkjjjjjijwjkllAkhe_ZTMDE>7 0x+'%"!Y B !!"#&*1G7>EL`SdZ*alfk_mboQpqqs0tAu#uvv3vavv6tsnh`DX OVF>6/(%&"h"-!{!!!!!!"j"$;%).6a=E(LnSLZ`vfPilElmvmlZkkCkVkkjklvmnopqrsuqppJp oooQo'nmylKkvk jjjujjjkclPlglBjggb^/X%QJC^6m/($!! !!?!!!""#A%'+108?GN=T[ayfivkkllkOjoj5jYjj%jWk3lKmnopqrst|q@ppppp^ooo*nlkkpkjjkjJjk:l3lmkiea\QVOHA_:44x/@+(%#""G""$%0(-5 <$CJQXi^ei`lmnoIopLq!qrr)rs sst&rq\lg)_4WONF>69/Q(s$!q : !(!Q!"B#f$2&{).3;aBnIyPdV]rbg4ilkVklkjiiiiiikl`mnoqrrsesq$q0q'qRqLqppMonmslskkmk2jjUjekllmLlmk?hd_ZTMF?94/0 +)-&`%$ $R$+%&+40_7>FtMT Z`YfCilmln`no(opBpppq)qwqr0rqokf_fXrPkH6?70*%"p! !@!"#%l&),2Z8f?FoMSYu_d3h=jkll^kjjijiijkYlmopq,qrrrq%q|qqqqqppomllkkPjj(jjkplJmll[jgc_Y7SOLF?940,)'&& %'v)5-3:AI"PYV]#b@gjm"mtnn_no^oppppp^pqqYpnjf8_YYQIA92+'u#"@ !%!#|%'|)n,06=DJPV\VbeifjlXlllkIjj6j.iij,kwlmooq qrCrqopq$qrqqhqpTonmllfl kAjjOjk>llllk8if#bb]/X"RQL`FL@:62/M-=+***+-27>EuL|SpY_d0ikmmnGn^noVoooo_oKonooonmGifL`ZSLEG=6/*&$""X!"r#%'*-z16,opqr\8UOdH7@93.J)''$r#"#%o(]*.'1W6;sBHNTkYf^c!gjmmnnnmmlDkjjij|klxmcnonpDplpoo j'ln{pWq?qqqqaqCppIooAnnmOllclllmemmll;j+gd`\;WSMH?Cf@<;-88 7 8o:g>CI`NTZI_dhfl&n oooinnno onnmwmm mll koiEfbo^0XRL E >j823g.+(@'#&G'),/i36;AHNKSY]b?f1j'lnohpoo|nn m.l7k_jojLjklIlmnonn^mkeikndpqeqr'r'r{rr1qq_pp5oLnemmmnn0nm_lkbifc`&\XkSNJFCB%@7?w>v?AXEJO{TY_^4bgjgmo8pp{p>oonnn>mml4kkkkkkiTgXc`A[CVOICl=83u/,`+E*},*. 1c4;83C[HNiSY&]basdh3jmowqqqqDpp[onmzlekmk.kckkkckRjj1hgdUaW]afjzn/pWrrststtttQsrrqDpp?pBp4onngmlji&fd6a!]YV$RONgLLLN/OS7V[?_cg+ilnpqrrr_qq p~oo=ncmvljkklXlllpkhjthyfxc_ZUPKE@=9879S:>!AaEJOU.Z^vaeFgjlopsqr+rNqqqpPo?nlkkkkk3jiVgf}cai]Z8NUh[JaejmpSqgrstttttvss4rqqqpqWpp.oon`m%kigda^[/XAU_SRWRRT~VgY\`2dgkmoq*rsht$tsrrZqqoponmm5mmmmmmlkvv]vvvXu\txsrrq8pgoUnno0oppqssttuttt?sssYsrrrrzqpoumkih"fdcbbc%dfi^kmoqIsdu vkvwhwVwowvuut(sZrqqp+oopppq+qBqoqkqqp8nkh\esb_y\YXVvVWZ+\_beTgiknlmnopqr-rkrHrXrqqp0nml-k^igdO`'ZUOIC\<60n(/8B@(GO%U[`dygjmoSpr+rsMsIsWs0srrrrrrrroqjpJnmkfjhggf+fGfh1ikmo{q2rtouvwJwwaw2vv uctss"rmqqpQpppqqqr7rrrrTqp/nxl igzdb`^]E]^ `adfgikl:m mnopqrr2r r(qqpomlajijgd=_bZ>SMG@N9r2,T%%.5=VEL RW\`dgjmo-pZqmqrrrrr r6rqrssrrqEonllkjj:ii 6/B'!:_$+3 :OA GMRFV[^beqh1jklmmnwnofopqMqrrqqonmqls rq)ppoo'o5opqrstuuKuuuCt:sq}on4lkuj)ivhi ij_jkkl3lm-mUmn/oopqXqqq[qq6po0m[jhecA^YRKD<-4T,%1"y)/6'.BG)JMQ^TWzY\l^aSK %*j.27;3>AEhHKNQTVWQZk]`bdlf gghThh}hhZh7ggYfffffXfeeeweefe0d{cbsah`U_.^-]#\\I\]]^t_aUcehjkmJnopq#ppppoooyopojoZo7o nnnn.mmlllm-mVmll?jidgneb_[%VR-MH B:;r4-x%[`[ hE 7d\#_'+V/p3769<@/CWFrILPrTKWZ\^`=abccd dd/ccjbbVbaaia``__<^^Y]]\>ZYKWUTTRR QzQRTU#WYh\_begiklmn`nunnnOn(n5njnnnnnnnSmm7lkkkLk>kkejiheda{^ZVQMXHgCC=T7M0*J#oL f G=10~R 1= $q( +a.14`7W:t=A;DHLXORTdVXYwZZ[H[][[[FZZYYXX+WVUURTTRQPZNM1K?IuGFF1FGxI6JMOScW&Z^<`bddf#gMhEhii?AwCFJXN(QUXo[\^`]abycdcdd6devfXg7hhphhgff&e4d0cKbba`]ZXcUYR"MIwD@;61,'*"", E*P?f LK{ 'u!l$S'+/g258;>n@BCDEZEFFkFFF$EDCBAA%@-?=<<;!:876n543$223E4,57{9JAUD9FHJLNPeQR!RSZTUVWWWW@WVVbUTSRQ O-LJFC?:51-)%. ^! P {9&7YbKd" < t Q ?L/!$ %'),1-../?/ /...|.o.7-- ,a+V*N)'&q%@$"!s!  "%T(`+.2H5K8:o<>A C DF:FGmHTIlJKaKKKK_KeKYK,JJ HGECA>;8_3/*&#aK b >r7OF}M#fy .K  ~h1 d!#O#$F$!$ ##"":""!!! hGg9+6C',  L #W&),.1u36U8x:;<==>W??v??@@%@@@@?E=  h  }y/>Q=0N< 0 b r 9 ! ST6 "$'e),&.+001S22=223334V45 5~5543240/D.3,6)%!N8e6 W6QcIz*i sE *FH*_1 4B I A c $)NTL=aL !  yA|8 ~ ,?nk!#>$%&}&z&&'(x)W)*p*z**-)('&&+$#!U_ ( <g *u.w%RDu -0kaG zhO' + g L Y-KR*f^psR/+ 1 z X si~ a;- ; @MO  v ;# =MX*)R<6(C lltKBAc]|jDiS,/8Y? Mb0 "NwKVH1 HY Q%VyT;6zj(^! Z0JB6*rSsm.>V'cOV3D2l}~rq~ w[  S '> ; D - (.!y6]B%rF",1J:mJA(D[|I.q X%WuC<1U=oJ`J6Hl~jvcw(lY  0!YS+2w#k?'nF`<4o/?!F|cu>w.w&O*nH@txJWp7'#9kiNJ#W`:fExcoT-/MM2)o|%<%`RxWIZot^KHD/ IFN`u}4 vn0#5}t__x$,mNWGPS,*+Z,=HskH{U{WGFUT^x)c R9RPS0XV" >cZ7Z8k[(3"j4[2F- Z#`Ay\EI@#Zsmtd qa0lrcZyA *o='^eJYxoE,!Zg;Y<i[)d,~hB^ZO9e%6%yeTB/'.R.]_bv)E@GMDxAlXqQG4Gj3C_0{YH'_UFlJl*8[i0 #Dt;A1 nR/I+*~9@9p$Db=IW@Ll t|{s=RTMP{b JW5nD6qOz+pujp~yP""Kb/9&jT78rq3t<)+O]HS'oHhOACg},sXl=VVSrwC2UP( O]>c%qz\YZtW4)<Ea #&." sJ..GmvH) "L3kbc^u?@1Cb[zWNp)Oackjp['3PWMEGNpPG\K_j&{cfky]USg~ pG2!1Sxn_^hipq 3 ){S 2hlT.jPEWu|#C]e]WXpsI%UcWKHPrd`lU@f]pkq|uwigbjgRF;DWrttTa,Osb>c><Wjof<V_]RJNgoY.KWQNTf~nHb=D* ~]=!$3ZFs -VelbdU4 mJFX\ZZ$;HRQLIT^eQ =`l`PVmVJqJ#(jkYJ1/<kKq"=J^`[B"pVOZ][\*BQXSKI_d= *WvoWKWxfYl^< |h\`hZVaFR,M[J(taZ\[S7OgiTBVg[:+Zyy`KYy}dN\Q@t.SQF)r_]cV]{= Lw ,ARE 0:~\OD* ,CdsgPNT]T-3kzUL`~\BHpm>04t%kud5 ylaaYjp( WhQhFSJ':7R7$.Oj|qV>ESM;!"HtsaW^w~iZbzyX4HRW<~ttxqllycA/Gupgq-C4  -+r= /IpzX.)?X`G.1Os~dPXrahlVd^eQ'uhefrZ=Lp`a313(xH%   ?TG/*4ERRJAG^w|c[{yhdl*UXZ?zshix^GMocVs&% rD(  -341*1Lc_QNZuvvx~vggx1HD6}}z{x~l^\VafXSo T,   $16-,FadYOSg~wqq $/4" iZXgswks  f3   '874@Q\_\YYe|xt~ "|lcX]n{y lbY=  "(19DOX]`]OSs|}iVRO[m}|kH1  !1( ,;FOW]dcRPjsr{uv#"{dSRT`mtrmow~ \A' !LK31S=YiO>]<Qv;-WI% A a %  5 @ : "    V &  c c M GzF1GtQke*RjN  GZxMp<MUYBErPFbZ - i d S  a &  & O n l F   # - * * ) " 0 N 3 E W h E N C7X`R~Q+s VT:`h]F b$  w 8  b 1   - ? R S O ) |  ? Y u | '  C F 4 5 A F a Z U & 6oMC1 'KlJWwKOi A=Z(}^P ( H \ Q A *  _ G / ( + 7 < A O O E  g ) 6 v # P p a $  5 G 2 $  " u D ] Q9|kQuj7E.+2\&mX  J ]  = q v  (    Z /    & M v # J g u Y  o = ! > d w M 5 8 4 W  6 Y p  'r_>.-XYW?^yCgX(^MOcQ- q 0 w 7 _ } 4 ! B s &  c l H &   < L [ u O   < X l f Z E 3 / ( J  4 8  ( > `  _71yXx^&_Zbn ft/f 5 y | u  f J # + P `  ] <     " cwO'%4HSf %r  : 8 0 ! $ , * $   * I c   6@\<Udq/z6vj8k j  h   *  : - k x W  ~ C b."snZ*GyspkyXVfmv .  g  * BocL @v|%63C` ~  { U R Z J  W \ u VQk#:Xp$`ziN%  ;huBSln>Y3 ! N y ' F W g L 11"(rj  $ o 5 ,  j 3 1 h Lr/C9R^jesJs\atR>^ruwwcTt:?/;I52[  1 (   > , a 8 , - 'Kx}& : D o V  ] l Q  8 c qN:=6 1\%[h@uW5iS`}nM.! ,05>ECEFc}Dq.)YCUG%H 5 Q i + 7 )  , z h  : x S wd w   J : ; ] " k 9 *  }a<H@)0.CY2.'/:B>34* *^U}HMdYc+"suP 4 w k h , s q k j  " 5 ' 8 "  ' h9J$-36br=* {hO+$<9+W. #,;LUcF ")jspY40)[ l Z | d U p { q A \ x {a8+@ |t~Nvi~FQ|\R}^j6 h=;V`owc:K,wCSs&:T83|:iE*c o 9 <  k *  & d4{]>hucurb2As!<QTlpd9`0lXOWXgnA;\Ot1?  aCp#dz= a _}niSFlc=I^(HZ*/c<Z<HxF}nj]V[XG*?uo]/ t_@8FtfxoA*lTi}1lrYliM' 6{(f]4(|^zlH5#M +t0c(hL+ $.2k)eB^yQg:BXE vDI4^if4=W1M6d # #bi*Gm  E &"j M  B f K  r !4Wm9ow~z`W4`l!l3as4Isi;_ch{'b_'EiTVW O u @U 2 C  , # z  .bmxb&nE T?#BaRYV&^$/zm7/> [YN)<*D?0Z <O} P7aK W gN_0A6nvibn4s?SLd@*0/0'*DZnBu@V t tPA"d+ j5eBM6 Bf}[s,UJ [)H&utb  !R!!!s! p R b T !f""##""6!!!c!g!y!!!!"3"c"Q"H! \hg`^' & 4 O X #3"g N*]P 08K%OBP>b'/`Yu=<q 0 ^ VNUkD9 b"a#%&')*)+',I- ---,,X++x+L+++++,d--w-o-9,,k,0++,,S,g,,--F-+-,+*)(7&$#1!BOkD Yp D . Xax::Qf79]x -%K   x-tj 7 "%$'*(,4-/C023q467n8988837s66U555566789*9,988[8.78848~8899X9z9188754 20/-O+*(h&%3#s! w^QOQ\ L < oq;_ 8SPZ/ > ! 3   c(^ - +!#%&()>+-P/2{46I79:@9AC DFHoJ0KLMNMMwM LLLM!MJMNLOP PQPPPOOiOi=`@uBwD[FGI JhKM$NPrRSwTUV;VVWVW W@W{WX X\XY YYYYjXX4WW[WWgWXYFYZ[\"\+\`[[YqWVSQOzML'JIHGFED<:8642#/+)&$" 5i 6@t$eN)>%r"_!#&),q.1e368;= ?pADtFmH I J @BEGjJ-LOZQ*RSUaVX-YyZ[\^0_O`;a2@C8EHFJLOSRU WZ[]g^`a)b bcdoegfYg+ghiibioi|iij+jkhklEllllll?kkj\iihuggwg fffg|htiDjkklmmmmmmymllJlllkkPj^i]h:gRfIe cb(`X^\VZ2WU@RuOLIwF^CJ@?4=<89740,'" (F B@>i==/>n@-CEHK*M|OQSUXI[]_ac,df%g8gh)hshijjkkiklIlllmmTmn7nooBo|oroMnnnZmll*kYjii|i?hhhi ijuk:klmjnno o\oooco'nnnoDoopoo8nnmml5k%jhg>enca[^\DYVTQMKWItHEG+EHB?;O62.-'"'t x h 1^ROCLJIHH^IKeN0PS~V5XuZ`[]_cadeghj;klmvmmmmn"njnnnooYooop7p^pqqqqr%rqq@ppLonmlkjjjqjKjOj6jrjkl^m'mnoop8pqq/qIqPqTqqr{sst t&t*ssOrqqpponm^kjgecd`^\YV|TSgRPNJFzA<72F,j&!Y^z ` VTSRWR'R SETW Y}\^}`qac+df9hijkmno3opHp7ppooppWppqqq^qrbrrsrrqq~ponmlknjjVjWjDjSjEjnjkDklmLmnsoop6pqqFqnqqr.rssyst:tttss]rrEqqjpon-ljiGgxeca_o]\[Z{XmTP[KIFA<60+&"qQbS^@\\[/[,[7\7]Q_7aFcpekfhijfkmJnioTpq qrs"spsgspsIsrrr;qqDpqq/qxqqqr:51-)%"hgg=gffffgshij}kklnoVpBpqrs^stTtu:uuuuupu:tss)rtr qqqqrrstuZuuuu t/s{rqponmm lllllllvlpllllm(mnyoIppq q)q[q\qFqpppq\qrswtt}tttHt3sssBrr\qqvq)poo n>mm8lkif}bD^uZW_SvNInD@yqrs6ststttt|t3ssdrr~r qqJpooUnnnUnljgNd4a^[WSJOJGCW?F;6mmmmmjlkkklLlmmfn$o+ppqrys?sssstIttttttttsrrqq?qqrrrstiu9vvvvvQuu!ttKssurr4qqqqrr#qqqEqppppppppq\qrirrrXqqLpp0pppq1rrsZttuRuuuiuttEsssKrrr qq>qqpppnlj0geca]JYUR$N|JFLAoooooKnnmn nOnoopfqFqrstJttttttttctvuuAttsrr3q^p[oynClkixh_gjgtghik ltmnopqrr2r!r r4rs*ssssstbttt sJrCqNpooLnmlWji3gfe1bstTttusssuslst;tuvovwDwxyz-zgzyyyyDxxvusromkiFfdbbh`~_^^^__acegikmp*r`tcuwkxay6yyzzzzzzzqyycxwvupt*sqpnmkWihQfdc.a`aaQbceg|irk9ln9oVplpq?qHqoqrYrsHszssttutosrqppSoon.mkjii1h.fnstttttOtLtWtuCuvw[wwxyfz5zzz.yydyxqwv trp$m[jhMeb`][`Z;YiYeXY:Y[] _Uaicfimprtw$xzz{[{|#|Q|m|"{{*zyy wutrNp[nRkiNfd@b3`)^\[ZZ[!\u]_b.dgOikm\noppq=qrrs&sstAtu[uu,tys{rr$qpp4opnmllBlkjSs`t(ttttsttu-uvuwwwwxy>yyyyxww|vu`sqqnkhec`]-ZWUqTmSSSS-STUWZ#]A`dQh&ko1ru&wlykzx{|||||D{{&zyxvtqo7lbifpc#_\ZCWVsTT>SqSSUVLXZ^ a(dronkkgc`3\FXUBRP#NMLmKL3LMNQSsVZ^bbeRh\jmnopKq qr[rst"tu&uuu2t`ssrrrfqqpp@ooooSnqrws!sst;ttuNuvsvvvvwGwxww1vPutsqpmifb!^2ZWNSPyMXK>?Z@-B@D[GKXP:U[S`ejosLvxyz{{{z5xvwtqmi2c^YTPK'GGCA?>|<< ;i;<>C?BACFfJNSX|\`dgjlon8olpqrs.sst`tt8srrxr!qqJpppppppp'opqlrr\rrs sjt tltVtttUtusuu$tsrqBoliea\W8R~MIEBs?=;::98}7789?;<@CzHNTNZ _e[j|os,vxbz+z{Wzy[vtqmjh]c ]WdQLGB>;O9765}434y5_78H:;?BxGCLeQV[C_cgjlnvp'q:rossst"t3ssLrr qqwpppppqq0ppnopq2qtqqqrrrrrOrSrst tBssrqomjfSaF\+VQKFB>\;o87(54332*11f12f35J8U;@FTMS:Yu_ekp9twyayzyx*tqm hlb\dUOOIfC>952u0/.f-S,,Y,./1r3~5q8;@FL.QV\`ehkn(pBqxrstt%tttqssrar qqsq6q2qqr/rWrqnolp'pppppq$qqqEppqr9rsrrqZpmjfb\DVlPQJID?m;L7a5210e//!..#----./2}59:!?FMSZahCmruxyzxvrni(c]6V}OqHdB5pppo(nno4op5ppomkngbl[ThLUDd=60+'%D$$%u%&D&&&'&&&J&X&n'(,1G8W?FO'W`Pgnrv-vdw-u0rmhb&[T-LfD<6r0-)=&$h#I"U"N"%"u"#[$$%&}'o)*-1S7$=4D_KPRDY@_ejoqtuuuuuuuFtis~rrrrwrFrsHttttqqrrErq5popoppRonnn nozopWooMmje`%XPHL@81^,&$G"M""#$'$$$%2%]%Z%/$% %"&J'**o.5?;CCK>S\ cPjo/rsYt`rpkgba;[6T#LE0=7M1.*(R%$#t#"""#*#$9$%H%&'*Q-828O?FMU>\$c*hmpsDt uttttt%s_rqqqqyq0q^rrsssusYsDs%s'rqppppo,n)mmnvoAopQooSljdO^UM[D<4,'" ; O!.!"+"s"#(#####$ $%s(+17p>F|NV]ehjnoqXpn6iea_YSLE>c8/2~.+b)O&%X##9"d"!!"K"##d#$$%<'B)z.T3;XBbIQX`fluorsgtHtsssXrr;qppppp8pVq qrrrttt1ss?rpppdonmmMmdn3oopQoolicq\SK@Bc92X*%^ '> Z !/!"1"v""#:#$O$&)/4\;AI#P6V^ckgil kjgcv^Z%TOHA;51-+N(r&o$#"V!!!!"S"##Y#$%'<+08%?FNbV]djnqrysNrrr!qq`pp%ooo|oo[opAqR1I.@470*(Y#9G.6  ! !S!!"I"#7#p%M',1w7\=QCIPV[`kbef1f'ca]ZVQKEr?79C40\-C)'H%#"n!!l!!""`""#)#($3%%(-4;CKJS6[bi{m{pqrLqqlppRooKnnNn?nmnnnopqqr&wxvutsrlq0ponmZlnlllmnJnotnnlhaa[Z!QH!??6/n'"={  p !!!"##%2(,05:@2EnJPKTY[^`aaya _0]ZWVIP`JnD=83/+a(_%$#"\!"7"E"l"""""#q#'+g2{9XAQIQ!Y`h lYopqTppToo nn!mm3m8mn&n6nopqrArxwvRu:trqSponlkkl@mmn6nn}nukg`AXOF>45.&"&i Q !`"U# %q(,1 5N9S=_AEJNRUwX[^` aya`^ZUOHB`>5.'C"K|FmcK !w"$F'*/3<6:I=C@aCGKNQUTX\` bcdHa^YT4MF?94n.+,'&s$$ #w#b#6""x!!!Z !i!q$#'.5>EMVE]ejgn*noo?nnm|mllXkklYm2mno pGqVr:ry5wvfusr:ponQldjjjQjkeklMm lmjWfW^WNFb>76/'u"R?2 X i!b#J%8(,p058];=?GBEpILO$RV[_ceg+e7b]gXXQJC,8f2 -)'&%N$$[$#""!_!( !0!#|'.57=EMV]ejn~o"oo]nmm^mlll!l#lmnwo0p)qUrdsvt~x{wutSsqp|o$mk}ji ibijfjjkkl8if_XP?Ho@982F*%!!  3&\]mm "$#&).27;0=?ABCEgH5JNRFV[`MeVhgkigb]WP.HA:C3.*(j&Z%%$$$\#"",!!!!$ '.5>>F3NBV^RfGkRo%opoo2nBmmTmllClNmnIoopr-sStuwvuEtrqponljiijMjjjkklyjga7Z~RZJCX;4-V'#"!Z!F 0 & E !Y"$&E)-g16;?BfDEFGUH{JMPT^X]>afilkid_XRJhB;4/*(v&D%%F%b%U%$x##L##"#7# %)20.7G?GOX_gWl/opyqCponn1mmmm)llmjnopqstZuw'w*utsrrq2p&nlkjjk kkfk`klRlkShb\uT~ME>X7X/*%#"""!!!!!!!!"W#*%(5,a05;E@6DGJfKXKL LN*PS?VZ_%c}hSknXml!g"bZSLD7<50*(o&;%%%%%%F$$:$#$b$X&*18AHPYB`hDlpq'qq>p}oqnn\mmlmmocp_qkrsu^vx}v;u,t:sErrqpowmlkkll\l)llmmljjNd_WlPDHAn:>2|,'%h##"""Z"j"x""""#o$'*/4:}@pEK'NQS$SSSUVY![_cOgk?mp>o`n'i`d+\UWMREE=6 0>*( %%%p%%%%D$$r$|$p%K%(,3:BJRtZahm.pq1qq_poonnRnmfmnYopqrtcuwHxu60l*'%-%$%%(%$$o$/$t$%&* .5!!"1"#$'o*05<BI@OVX\aflh_iijkln_p qrsbtsu uusoPia^YxPHZ@(70*T&##T"#""""##$&~(I,19|@HOV]ci'ln|noronnmmmmm`mnopqrstvw%r*qqHqppppoonm'll}llJlelmnnvnKkhc1]WP=HA:3.")'k$#&!"!""$`%)?-43+97@FMGSZ`ue?ikelmmnp0qrstztuuvzutp7jbZ}QI&@81*&#v""5"r"b""|"#$$')?.3;sBJPQX_ dciIkmmnmmllsllllm]nfopqrstuevFqqpppppppoEyLhSY_cgjelmnoBop1pq&qjqqrWs stsrnjdy^kVO F>260 +'w%$##$]%&')+/4;4AHOT[B`ehkHklMl4lEkkhjjkDkkolNmnopq^rrrrr{ooooooo!nnn mPllkkkkklJlmnynnmrkgd_*ZUNH{B5=8y541/@,,,/2{7w;}8&6 33G36g9k>CBHNTZ_dh!kUlncno$o=opp;p4p3pRp~pqr7rrqn\ktfb[UxN3F?r83/0,)('(*?,.149?EsKQTV[C`dhk+lm mmmelll;kkkhkl_mnVnoopnpmpFonmnnooooGo nnn$9\41_.,+,.1X3P6U9?DJPiUsZ&^Xc%gjl~nn`nnnVmmpmlzl ksklKmbmn]ooxoooMnWmiSkGlnfo=ooooooo>nnnnDmm/llmKmnnamml jsge:a^YTPKHFVDBBuBqDGL|PUbY^+bfjmGo:oppppooooppoopApq+ppnli|fCa\VPwJcD@7;K732x124w7&8<?EJOUYc]aDeilmoDopooinnjmm lZkklPm-mmn"n]npmmkj{eCh&jvln[oopHppq qpppp&ownmmmmn/nFmmlkjhe.bC^ZaVIRiOMPL)JJJLORSTWP[_c,fjmZobpqerrqq pypooooo2ootppppoGmkxAEKAPUgY]a%dSgjmwnp?pqppioodnmllllm+m?mmMm1lkjhf^ubiei8kmo/pXpqr>rrtrrNqq8pIoonnnnnnJnmYlktjgeCb^[HWUS=RFQ6?`@yBDH#LWQwVGZx^QaPdIfilPneopqqTqr qqqAponnmgmm0ll jiKgeb_\'XNkTqY_nchknp$qrsosttsserqqppppIp ooJnnmm5kige^c `_ ]4\\#]O^a(ceKgwilo~qs t6tu2uwuuuWtt\tssVrriqqqqrr!rqqpVonmljg b^Z:UROpMLLMORUkY?]D`cegicjln[opqvqrqqqZponn+mmlkj.geob_~[WS!NE L2RYn_diBmo7q`rpsstwt|ttrsjtItttsss)rrrmrErVrrrqpnmlFkj7i)hhijmoqrtbuvwxy4y1yxxfwwvutt=srrEqqlqrqrs4sstXtttt/rqnljgefc a___a#bdfhijklym_nHo7ppq>qqqqqsponmljkjChVd`ZZUOIC<6o0&.\6>HEM[T%Z_d*g.jqlnpZqrwrrrrr\r:rrrrlrsYsrqp0nmlqkjjqj2kl'noqsTtv/wxxyyxxHwvvnuttsirr qyppqqrPssttu-uu7tsrq omk3hg edvd#d/e6f(gqhijklmm-mnop[qqlqqqqvqp o%ml:jilg(d=_NZ;SMF@F92,W%($a,d4;CmJQWt\`5dOgjlnopq1qnqaqkqtqpqqr^sstsrqyp&nnmqlllLlmoqrdstv wwxyy yxx1wTvu{tRsArfqppqoppUq"rs%t tuvUvvvZu|tsqon lDjihhwhi{ijfkklJlmNmnvo1ppq[qqqqqvq onljhfc_YSL^E'=6i/n(B!b#(*1B8?FLQVZ^db dgik?l"lmImnCno-opqr9rrrKq;p:o>n\mmKm4mmn]opqrwsstuvvvvwvv`vuZtys5qpoonSmmnnoopr2sdt\usv!vvvuts0qpXnmlkkEk=kl0l?l9lzlmmUmnnoKppq5q@qHqqpon&lBig-d%a{]+XQ"JpB;!3,X%K ':-4;AGWKPTY$\_bXdfhijqq:poo%nnmmn\oopqrr@rrsAsjsls8srrrur q9p;o5nfmm"llm'mnpHqrstukvvvu,t rqpooYnnxn2nCnnnnAn;n:mmmnpoopqqfq9qpponlifyco_[VPbHAS9b1)h"rrQ  JEhc#)0R6];@8DIMQyUWZ]R_aDcdf_gik^lnnnnnnfnmll~lZlFllmnOnonnnntn mmlskkckjjNihh9ggbgfghciTjln'olp`qrhsKssrrq pvpoooQoIoHoToeoSo#nnnTmmWmnnnoLpp@p3oo3ntmljgdl`A\XSWM)F>7:/v'~ ]M  {$*0:49y=BKFJBM[PSVpX[Z]_adQfnhrikkykkkkkkZjjj}jjkkbkkk^kjjiahgf`dcb|aw`_^^\^\^A^_abdfi jlsn#onpqCk<}4-%&+ L 1 %O*.P2%6:>mADGJMPjSUWZ]&_a8bcd~deFeff ee}e ddvdgdddBccc boaa`j_$][YxWmUSReQPQ5QjRSUX'Z]`cehRj$klmmnn nn%n0nNnnnnnnmnGmml)knkAkiklllEkji%gfd `]uYTOJE7?A81*#z l.n Y1 #&*.269J<'?(B!E/HJM!P RUWYZ\1]"^,^_`,`___6^L]\\\,[xZYXX,WVUTYR4P MKhInGdFJEhEF GIKNR1UY]1`ce4gihjjkkBkkllElllllllUkjii6ii ikiiigfcb _\X[T,OgJE@:c4@-'j!EK GX}  [#'*-03N69;>q@CFzI]KMO=PR:STUVnVViUTvSRRNQPONzMLKvKJIHFE@C>A*?:=:<;;a;=&>ADHxLPTUWZ])_accde>efIfgggh!h5hOggjfedcccccca_][XUQM HD ?:5#/:)#$ Q"v28  W w1"_%!'*)-B0i3,58:=@EBD8EG?HJ)K}L#LLUKJI+GFEnDBA??%>>^=<;Q986653212Q24#58x;e?)BFJMQ4T%WYG[5\p]^_`aDabc ccdcyba`_^^;]]f]:\[YVTQO3KUFA=9,4/\)$B1 'i5V8M3{@ krv "%(+J-/2>478:C;x<>0?l@@y@$?>=< :9r865322^1130X/ -,+F*[)d(() )~*,^.148%;>AEHH{KNP4QSU9VWXYKZ?[[\ [[EZYXSVUzTT%SRPN3KPI-FCs?K:6W2m.U)$ *0po`XiYc* SJk #F%1',)+/-.0M1234#4h43210/.J,+.)(!&&%%r$#"!U ,S #Z&)Q,/269hh;S733/3+>'v#NK gZL@48t w m | 8 "T$,%''())$(( '9&%$#"!r[aP^[k,0W!a$'~*-0369,;w=?AC$DeE2F*FFFF\EEDDBA@?># MKr  W]AjTH9r8 NL 'M$d9Mdb r , d O8+/u[' \`d"6$'?)+[--.h.^.../2////t.-U+*z)3''%k#pi cJ/ ]|H ,IM(UNq=}a $  W  ! t  x^@i~K*b/  u A a!"?"v"r"#h$$%%%$5#,! ":%> g sIK*ZC<9qB"4}RBm%E_A=*m>W44!Zu/!<  4 v _^aP]F?s   U'9yV+4T3D 3Ntpz?|dmXFV&7,iv*`PCJN<$&N0?s ; S ` =7xSQ%|K a+`F9:}u.^'_3XL7v/o<`Z=:\d>6]f a%izrcP?:<HGa}PI ) ( " @ 8    y t ] |!Pq{k/gv=eP ){G':R>jEC$9U|}@)`>=bpqm\."y9Ru/m0p(z;t lF !`^8:mA4xOX +3Z-QAc}rJo[Q5`,W,c@*Q[&3vV,p,uF~c8)W{d%ZjJgM${c bM$B4LV#*KTcQ,k\hv}twpR1 $'<Pr ([wz J-cV76Dll]b./kTWEMV+ P+Y:KHYV}90ldch\^t&;{W1Qy1.PBjn+cW ;^<i\2&<i2T,>/.Gr IkJ<A<+<n wx}8s[Q?+2.q"j>&^f LZ{nR<1el6U7`Y0'7tOaZU9j/jVH6$l@Mba.>0=K"GwBkXqPH7Ff2B_0sSI;xdV qG[5Z}F*L{ 4=)i9 Q ;@?z+0I[5CVCPqr|wq3IKBCq_ M[7eE?*6 Mnglaj{^-#H` .7')|qQ+ >{q7 qD8Lk sUV#gHiPEIl5sUk@XTNk|q@.SO&JdHs%&`}h WSSp\8(8Ff "&:6x\H&.FjmD% "B-)wrr_m>@/Ce`zUIk:]khkfkW#*JRHBFJk]S f@Hc%uXYcz]VZr#)!zZG,.Kq}]DI]^ad #z[*bkX4hPBPmu(HckaYXorIP]PCAHjpgt D/]X d^m}w xxlleVJ1.Divx Uh*(Gl|}_Ad?:Seld3N[[QKPiq\1ISICGYtwMi= 2!cB,--GpK1+R_iaaR8qKEX\[\";JSPKJS\dR ;^iZGMf|[Py>bjUH422U@&{ 8BZaZ@' vXOZ[XZ2GQVQFC[b;&UwoSFStk]nL 9~aQT`WRRr5 O $I\K)$uaYVRK6MegP=Rg\; 'XusWBSwhR_C 9n'TZN,q\\eY[m:I+<PI$6<}ZI<%&AdrdLLVaV- ,cnHC^cJRwe4%)jqt?*rjkbml+!YuayFPI*>5 P3 .MfukR<DPJ7Cpzj[Wc~k]cuuS0FV\A {}sijyZ?0Gpto|)?/  +,o:-DisS*#7R]C)/Op{gV`mX]{o[dfeQ*~slbfs{L7Ln{W_~)(+$wF$ "?RG1'.>LJ@:AVn~|gazc[f4_^bG#~trxyO<Lt`W{ sB' !2:8/&+BWTHAMmz}n`cs(=UQ?nWQIY~g_^{   T,  +89.,C]`UGH_}~zsqq+6:(jUN\fyofs   f5   -<;9DS`bZSTf~y~~w$#rb[NRcztmz jfaC  %/9BLY`_YNWy|v|~ eSSPYjy|}|z}pL3"  /*$5=DR\a^RVq|qs.,! h[^ahopjfly  aJ.KJ! 00L7ViL9\@Xw=+OL ' J ^ #  : E = "    W '  g i I CwM7JxPeb)M}^wG K\xFi;ITQ@D|Z@a W ( n f Q  g . # M p i D   # , ) - 0 ( 4 S  2  B S e D L GC]\zGxOv-w$ WS7[dZBb   n . f 7 #  & + 6 N V R ) {  A Z x z $  F H 6 3 = E c ` V ( 8mK@, % EcAP zISk @<^%yaQ 2 M a O < # _ D . , 1 = C D I C >  f % 5 z & R p e )  9 N 9 &  * z B [  V!9}kP{qj;F/*2a(oZ  O d 1 s q  $ /   Y +    * R { $ K i w Z  q < ! > c u L 2 7 7 ^    8 X p  #t_>.+UXU=_Ik\-eROjX. v 4 < ] v 2  ; o +   c n L %    ? Q ` { P   8 X l c U ? * ( & N % ? B #  # : ~ X  `:3{[xZ-hddsjw/h 4 x z q  n R 0 ; Z Z W 6     a|W-'4FSh *v 6 7 /  " * &    . N k  }   :>W9Ogs73wi8o g h   &  > E  i  { > Y'poZ.Hzww jvTUhmt 0 k / >kZ~F?u'x%64C_ z  z V U Z H   ! a ^ o OLk$4Mk]oR$9g!yARjg4[5 # P | ( B Q i K 2 +#$qg | ! l 2 )  j : ? y Ro/E{ !?Ydi_oHkXayS<Zlrwz`Rh2 ;7HT;7^ . )  7 % ` ; - . Q$  7 B n U  _ n R  7 d } UCE60^'bqHmP2iTbqM.#!-27;><BIiDp+$[J^J!G  , L j  2 : &  / w f  4 s X  l q y K > A d ( p : *  } tcCYE~+#~JO()%/=E@43( 4cV|NVj_e.t~S ; f d  , r m g i . 4 % 6 #  . & g6G%+-Afyp)tiX9&;6'`2 '5AMTdD .p}y]}1!.$\ d R t h ] z r @ V | x\1%=}MlSq<I}c\\_/pA%CYeus^1N5 Ray!0M/6|3e?#Z _ 0 <  m )   \2sP6csn@Z,5w(>NMbg`8 d6n]RX\np82RV|7I ]<v ^xs4 Q c~icK>e_5JZ#  < hJH.+A5 e3 whbWQRNC- PnY+ {bC:BqhwkJ2lKfo9hnVkiD"=/^{d1 ^iAUGau.l#[k(u@{_QG=6~Y`HgJ d@CV< nP!N7bmi7?^-}L-U  7?ynUN 8 xfj @ !  Y Q[ O j*i=`fb5bm->}vGdcg{FlVf5x \  ~ X   ^ d%kY @   \#^^[&R#/x`w6?D T TR5K7JO> \ DS,Qiv   W\y(\QIBK v 7h *EkU@v38 J H /zGu3C e.`nou"f/X6QiKaB 8 S| !!!!v! b 0 / & M x !a!"5"&!!o! !!Y!{!!""R"P"O!!TQ^C6| e P  DtAMJHEK92Mv,z,BP{p-K , BO P"l$P%'E()+,',----,k++`+ ***+1+,5,,,f+++m+O+x+,,/,\,,-"-- ,v+*)(|'c%$g" BPeNf  0Jq)=Xc>3^p& 1U Ko@9v _  "nL^e"$'*6,:./1b2457]8$888g766a555556`7#78^8a8>777U7@7w78%8\8899?9 8765d421f/.,+Z)(>&$"!AeKqzZ" L @ rv0H$NWfx k Q v e . _ JR4 !#'$%&$'*1- /2U46a839;=?}@BQBCnCBAAJA@AAAqABCDNDDDD CCoC]CDD|DEEvEEEEaD_C A/?z=<:976y5]4f3=10.B,b*('f%$#!?4/ E/[I|eIFUl4&?K " $ %'C(*x,-.j/ /13%5r8:}<>@BDFH}JmKM6MN,MMvLLLLMXMN8NOfP>PQ$PPaOO NNNOjP PQ QRRoRMRGQdP%N/L`JlH{FDC-A@?>=;:\8}6420/O-+)&# iQ>J T>J Aih. "v$&(+-U/`17347 89:q:<=?ACEGmIfK`MOOPRTU;VFVWVVVVW=WX#XY$YYZ_ZZYY>XTW|WVW+WX^YYZ[+[[\[ZYWUT RIPiNM$KJJHGFgDC!A?<:87N5X2/,b)k'%## lSzs 7<cp`)%" .w!#&a)*+-0k25h79<>@CUDFFGHJpLkN$OQSeUnW[Y!Z{[\]^U^_/_r___`Y`alabpbccc.cbb a$`!_/^^M^^_`a]b=bccdRdcbmam`:_ ]\x[5YXWVUT-RQWOMxKbI*FDB@>;8Y5.2S0-+)'N%W#!qz+ X3c/,*):(f)v*-025>7:23;p86420.,*;'"|f}K kw\X=9H64>3y2357:R=?ADFICKNKQ5TNVYHZ\.]>^}_`abd(efhmijkkMkFkgkkkkkklllm?mmmmmm9llPkjiihKggagzghviijZjkvkl\lllMlkkkll?ljlOl)kzjigh]ged>&=t>e?BWDGRIL>NPRTWZe]$_Ma;bde1f94.)9#[%n VTSRiR#QRSUXZ] _$`b/ce_g_i&jkqlmno5ooppMppq1qoqqr-rHrcrrrrrrrdr`rrrrr^qq:poomllkNkjjjjjkZkljmmn>noppfppppqq4qqr+rs#sss|s rrqqqpDovnljhfe,c[a$_]([[>ZXvU$Q[LHC>83E-(#12R]\[[ZZ[W\]_acecfgicjlmnop~qFqr=rrrs'sCs;s7s&ss rrrrrsss rrs sMsssrrNqxponmlkjjjjjjkkiklIlmhnno~p+ppq?qJqMq@q=qQqiqqrQrs9sss[rrrrxrqponmFljih%fe!dcbaJ^p>oonooppqqrrs s0srrEqqqq]qpppqqqr8qqpon lkigdaT^G[XVZSkrHrrrjqpppqrrstu{v9vwKwx)xwwv[uu&tssr q,pXonm^l#kjiiiijLkEllnoqrsttu!u1uiuuuuu>u)uGuvv=vHv"vuuuuuuuuuuuuytsrq&onmm}lzl%llm$mnobppqzqr.qqqnqsqqqqqqqrssGrr6q#pnmnkji!fd[b`5^\Zst9t;ss rhrBrcsstPu$uvw@wxhyyZySxxnww`vvusrqpJomkjHhgffFeeeghgjCkmoqarstuPv vw#wawxwtwwx)x`xsxPx5xwwwwJvvzv2uuu tasJrpoCml@jiihijzklmnyoUpSqqqqXqqqgqrr#r?rdrstEtzss2rqonm?l%jig3edcc-atuuttssds{ttu0uvwwwxxygyyyIyxx&wjvu_t)rq+ogmki|gedkba```ac+dfhjloprtuvwxy2y[yyz*zTzcz/yyyWxxwvuttsFrpnm-kj/hgdfdrccdfghjbkmIIsrqqpqpLp(pQppps]ssttsst;tuvVvww|xxypyyFy x=h<<<=N>c?RARCdG KPFU7ZQ_hd,hlqt vwy0yyyyRx{vurCo&jtev_ZZUEPL FB? =;~:98767R9C;=V?4BExJ^OUXZi^bfjPmNp=r0stv*vwbwvww=vutssZrr*qq7qJq|qrqqqqrr5r/rqrrsct)t}tuAuvwVwwcw@vDu(rpmiid`L[UPK]FB`??<;89(76c656.67p8/9;?)CHsMSMX^chmquvxy.yxwtrrnjrd^XRQLGjB=9532K1002../Z1u368+;>[C\IOoU&Z#_cKgk|o,qstvMvwwwwgvvutBsswrr^rrJrrs(rrq5qgqqqqmqCqPqrsLszsttuv&vvHvtsqn}jMe`9ZUO1IC?T:8N643&10001+1p224 5r8;A+F]LRX_djo=suxJxyBwv?roje_4XQJD?<:52.,+:**q*U))*h,x.1]36{9h>&CJPVH[`tein=q=suvw(wwwwzwvPuNtksss:rrssst&sskpqq2q^qMpppqBrrrrsstuuuELVRX^ chmqtuevwwwwwNvv0ut&sss:sssqt#tttt%q8qCqKqdq;ppFphq qrr qrdsst8ttatrqq mj d*]VOHB;51,-O+**~)))S)))**U*+,O.15:AHkOV^eyk}qtvw$wuso:jd^zVO3Gr?93/*d'\$#"# #(##$W%&(Y*,b.049@GNyTZa ]!*!""h"##h###$$Z%'Z*.5;BJhRZayhlLp(qNrqFok)f`TYRJC#;x5.*'>%j#""`"D!!!"!"#%#$Y$%W%(#+?1+7}?;FzMU\dj6o$qgsttt>ss'rr qLpp-pppOppUqYrfrrrNss3rr0qppipQpap!oo6o o%op1pq1ppnlog/a9XPG>7.(" V  o !!x!" "2"b"#\$%(,W17a>hEMiT[YafljlnnHm'i?eI_Z.SLE>`71-v)'z%W$Z#e""G!!!"("#5#$$$&).i4W<C/JRTYagm5or>rsGrrqq5ppoooo9oo^opqrbrAr%tt sCrqqpsp2oognmmmn<4,& d5"p  u !!"#&F)W.p3~9@GNTZ_d9fiiifgcW^ZU#OHA&:4/+)>&%5##f""!""P"#F##$R$B%'s,19@ GOTV_ ekpnlqqnrqq5pgoo%nn5mmnnnnpqor"r8rQutsrrqpVoobnsmzll[lalm5mn(nn8l:idW^!UM>D<4H,&. (1n  !"%',1v7!jC,GLQiUYX]_iab5b`_o[VPbJCg<61-)'%$##.""##>#Q#]#^##>$#%!(-4;C{K*R[ah^lnoepoo nmMll/kk|kl lm)moEpqrs;wbv'ts{r~AEIMQU}Yb]a/dZde5b)^}XjRLD=7F2W-j*d'&%6$$##u#!"!!!!?!"i%)18a@HPFXj_fkn`nonnEmXll*kkkYk`km mn~oqsrstwutwsqponmrkj{iyiTiVijjwk`klkic]UN[F>7.)$ " d MZl7 E!#&&)U,148R;3=|?BjErI4LQ UY"]aHdf2g6dae[zVOxHPA:&4/=+('.%%$W$##U"!!!!M!"I%d)08?@HPaX_g knoZooFnmm llll"l3ln noprrstuvutgs"rqp nmkj}itiEi8iij jklAjiLdj^VOH@g81+%#|!!K M`G !#^&)(,D047:=D?@BDH!KPTLX].ae-g.ig/dY^YURKDt=S7G1^-W)'%%)$v$;##""P!"!"o"%*1T8ATICQ Y<`qglqsponRlkKjCjijjjXk%klkj?e`YLRhJC|<4Y.4(%##-"F!!Y!'!!#! ! !M!#&)z,0z48jjjjjklZmlPkugb[UWMF?Q71d+|(O%%K$I##_#,"""""="#c%(d,^04v9=sADyG*HXHIRJLXOSV[C_c^g}ilgkxid_IX"QIB&;Y4/H*='%G$$f$$w$N###}##$%)[-5_CsHKRNfOOOP`R.TaW[+^bfajl7n^ml2gWbZS+KWC<5Z/*&'0$$$1$r$h$M$ ##$`$&X'+y0b7?ZGzO:V^Odjniqq1qponnnnnn9no~qr!s:tnuvx8ytsss.rr:qqqLponmm{m&m(m mNmn}o!nnkhNb?\XU3NF?8V1-W)(&%%7$$$y$1$m$%'+;/4M9n>DINRXUW*WW|WYQ[/^"adPgfjmnponid\UKMEE\=670*&$=########$%l')G-}2:UAIQsXq_ek7nGppqpYonnnnnnnoqar|stuvx4ysJrrRqqqqq~qp]onnSmmmn/no(oo{opm1j4d_UXQJRB;50*,1*2'&N%$$D$U$&$%'*.39E?E K"PUYd]^__`aJbe[gjHl^moq rqpl f^WDOG?:7F0*Z&####O#O#^#6#g#$&4(+?/5=8DLSZpaf+kmooooLnnnnlnnnnoqtrstuvwxr qqqq?qFqmqqqepp5opnngnXn?nznoLooonkfa[ZTMFi?l8T3.+(&$$y#$*$%5&)-D28>|DKFQWA\`d]f(gGgMghikmoqpqorertsyrnci#aYYPH@8z1*&##."""###e#%j'*E- 2=8H@GOKV\bgkQmAnnnn3msmm&mmn7nLnp qrstudv0wwqppppq'qbqqgqpCotnnKn.nn(nrno`omonblmh/c]X)QJC=72/+)L&&%*%c%<&(},o0~6WIPnV\daehijkkl3lmo"pqrrssttlspk c[\RJB:?3*+'$)#"# #$#o#~$$&(,1/53;CnJRY^d`hklnmmm@l|ll##$%')-18>FNT[~`ei klm\mll~kkXkl;lmmnoqrstuuuv]ooopppqqBqpoo/nn7n%mmn nrnoooPnykhd_ZbUO3I9C>u:<52/z-++**,<.3-7=CJQKW^bgjamlnoooop,ppqIqrstuuuIqmcf*_)W O)F>o6/*@&L%F$-$|$%!%w&'*,1 5<BJZQ`W]bg/illmlllhkkZkl,lslmnp)qrstytu;uXuoo<`99%8:=BiFKQKV\afjVm noVopSp\pbp9pp ppUpqrstttWqnid^qXPIVBF;62v0P.$-,-k.@026V:/?EK:Q!V|[`dsgjaklmmxmmmum-mmmfmSmnsopqrYrs+srr5qnqnno*o{oojoyooooonnnn~n mmmmnn@n[mljhfc7_\WS$NJGDBu@?x?AfDjIM,QV[`egilnopapyppVpEpooodop&qr=sPt[tAtqokNg a\UO HxB;=9N64L3e2`34 68BFK>PUZ4]adgjlm nnoo onnnnnn"mmnFo4op,pppp^onnjlm n@o oop+pMpppp{pptpoEnnmmmmmVllgkj~hgJe&c`S]YVTnRQ]OOCNPkRVZM]adhekopr r rjr*qpp\pooooopqrsstsqnlh d_(YTOKGD[A)?>?@C=EHKPUuY]`dfijlmnogoooooo[nnimmnBnoYobooMnn lkjgiklmJnopFppq`qqqqqq6pOoznn=mmm{mllNkk'jigsfcag^\'ZbXXGWjWUWXZZA]u`cfi'knsqrwsdsIss2rqppYooooopSq/r@s1stsrrpnkvh4d_[~WgScNKGFEFGbIeKMQVZi^)acf`h8jkm n)oZopSpBp]pRpUpovnn+nno o'nnmmkj'h7fadgbj-l_nWoupq qr(rrs rreqypoo4nnkn mmllIkkjEi gf)d=b.`&^]]N]]^_M`cehkm.o0prsttt]tt0ssr6quppwp^ppqqrswst9ssMqpn]kheua^Z UQNMLM$MO`PSW%[)^adfch,iujkm4n\o}pphpappppLoonnnKnnnlm_lpjiXg%db_[_c filn}p!qrrsHstsszrqpp9oo@nn$mm(ll{kkUjXiOgfzecbaab2cddfghikm3ofq-rstu4uu_uWu tt!ss%rrarLrwryrs'st5tkttCss)rnq omRkgd`\tYV4TSTT9UW2Y]&`cf1hi jjklmmnop+ptpwppppoo?nnnnmkj9ge`b@_[_XRW[`dhkWmoWpqrskssss0rqq?ppRoo*nn mmmlkjiEgfeedlde fhbjfkmhnpxrGsuBuv~vtvvv8v uuXtttltssssttatttuttt srrpnkhe~b_\\[iZ ZZ[\\_Bbe giDj}jktklVmmnopp^pnppppBonnknmlkkhf b_ZVR5MI:O"TZk_ndvh8kmoq.rsRsst ss7rrBqqcpp:ooUoo nngmluk;j#i?hLgg7ggikmoqbrsuvwCwxwwwOwvvVuuJttqt@tt+t+tPttu$uZu}uiuSuttt6s qoBlj'ge6baY___`b%dVfhjklllullmmnTooppXp{ppppoPnwmmVlk#hea]XSNhI,D>DKcQW]ub%filtn6p6qgrlrstuvw&xxxxx\wwwvutt@ssds+s6s0sjst:tuDuuuuuuvusrpnljhfe cccdegviFjl,lm(m+mLmzmnno^oppnpppCooEnRm)lzkXj$gkd4_[UPHJzD?9o3:AHOqV [aehk moqGrssqss~ssZs rqqq]qqr4rNqpo{nmmll,lQl{mo*qMsMuvwxxyyyyy xcwvvQuttGssrs$sssXst;tuDuuvbvvvIuttrqgomkjhg|gPg3ghjkAlCm.mmnnnn@no;op$pMpppponmpkk$igc_ZTNcHA; 4.)0q7>EpL2R7XO]aZdhjmNnpqqr'rHrrrkrqqOq0qrrsrqpoo#n~n1mmnopPrsu vwxxy\yoyyxwvuutrssrr/qqqr*rsOstu2uvfvvvvuEtsrwpo m9kjeihiDi71*$&$-P4^;VB1HO2TY]aae^hkmopvpqqqqwq#pqqrFrsscrqppoNonoo:p q8rtu/vbw;wx=xxyxxx$wevCu$srqppyppppqAr2s*t6u9vwwvwwdwvGutsjqp/nml(k`k`kllPllmqnninnnnoop-pppq>q pon>l igReGa]WQJC'CGLdPtT4W*Zk\^`abde]fhj0kglmmQm/m?mllUllllSlmJmmmml?kukjjFihggff8epdbc:baa1aac,dfhjlnopqr%rWqqdpp@oozo/nnnoo,oo nnnn`nmnnZno'oSoKnnn&mljgd_[~VQKD\<5b-&vH 7 z"(.23?8 5%s#(-!115:>A2DG[IKNPQTVKXrZm[]^__`aaaasa``o```u__Y^]]\\[=YW~TRPNLJI(GGFGHK MIPnSW1Z^bFe7gijk]kl9llllllmG@xBDFHKHMOQNRTUUVWvXXKXTWWvVVVVkUU0TJSvRRRQxOMKHIFDBH?=;;/:<=H?B;EIcMRVzZ^Facefhhij j~jjk kklkkjj i&hhgg4g fedb`_c]>ZWS(NUID?82m+%To =.#,  '#v'7*-0 2X4\68:<>A)C5DF$G2HaI[JXJKKKKKjJJJ)II_HGFF(EEELDBr@d><:86P4M2M1142^3~58G;?aCH0LPTpWZJ\^|`Jabcsd7dee\efsffoeedc*bpaa`J__ ][YWVUkROKtGlB>u9V3-'"Q'V :t+PIl hwuA2!$m&o(?*-/B1?3M5<7B8:y;<=w>u?/?@ @S@E@2??P>>=6XZ[p\`] ]^c_s`#`{__i^\]X\M[gZYXXVTR PMKYH DO?<73f.4(#  <,&Q'P }{ Y #d "$'(*l,,-/K0i1V12344H4x4s44\4 3P210/.--{-,+*j('&%$f# ! {  !#%g(*.l259=r@CFEHKbMsO7PBQJRRSU:UVEUU2TMSaR[QyPONM7K9IFDBi?<8[4q0- (#D e 3Vd^,g(zVOm , Q". !H"S#%&&&'(P((((((((9'&%$g#G"g!! iYRIIEc$M"& )-1+4_7$:;9703/,)d& "$-Q U{CH=B'>E  Z F 7KgIs;9#+Pt 0 , 5   p&6\"|%(+.1c4t69:h;<=>X?C???/>>>==,<7:86431..+(p%"nW~N  ]3p!O)/djSN W ,\:KE=`^6N? G uZTpY4 /0 #&*,|./01e12Q33334332260/#-+)(O%#j{ u ~}SiRe[GG G%i f ^ }  e u x Q  Q S  f W!zJB b v,  "$%U%&'&[&'(y))Z))q) (6'L%$Z"! N_9~ YI;|0`R8LO,WL6'2u5UhNo:RSI{jI -?  Z pQJT30l@ t SuWLC:wE(>V@b ?OL.5>5W#X Du}_<("# "KOuK$Z n 'd2'nG,]1; 8 k )q_:6W8LEc zqwKTpf/l18J @F>PjhT1 Tmm A     _ Tev>-z34~u)V%8#vHbO/X3_M~o(X:jObw+p*lyS4  (ta `?"=}R;.At\6`E!o:$F^FtN>+etPKi87zX13D~"ls7XVN2a!3TZ,`cg# "ae<@$rG;QX~" J5W<UuI whY6TBY@-0'8[d<%Po'@_GNr,vCw<_$~R#v[-giP8.T[$0ju1j1>} |lpx|obYXP[p'  .`{Iq"xonOM`4niZm35s\$dRY^)$M0`EljhG +~scY]\m@X1*+kwl UHr#m%YL;X8f]2(@'o7R!@,0Vz`fBB5(6dytt`Uz9A6.m`=$al IZ~tO9,ck6R2^M-!~ErMhbM6h"|qfQ1 b2<GP/?69I#I{OmZ{UL7Gh3?Z& hRK8uYxRs5DcvC (R+7+ oG"H  2D6c2Kd7?P>Numwsq?SSJKwc KT+]ID,D#\2xzkmxS#-Yl,>1+mM0KZ# 'H39xsSb1pBeP@@d2jKc$F\ZUsyF2TK! EfIm0.oxWPLgT41GL_|%.;0gI) 9PquS5 B4uqiv 6;0?\ayRDi8\mlqms^$ 0MRF=@FkTGjERc"hJO\|ub_Zev%&!hM4<Z}~kL9=QV[Wo+^)]o\7 lUESr}%HckbYXtxKO[L<9CjpizM5`Y ZUe{|{   |wlroXF15Kn}z|Xm, $Efu{cDfB<Tgne6Q\\QIMiu`0AMB9<StYtJ<)sP78>_U+)O\bZ`U8nJBRWVV$<KVTNJT^fS5YcP;Dby^T}L!fxbN525\F'v5AUZYD( sWLUXYZ 3KX^VID[c<$SsgH>NnhZnY4"n_\\LEDf/Q$GWJ- &u]TWYQ#<RkmU@Ui^;%WqmS@PtiSbM 7j!OVN-ygacVYl|5Ot ';LB1;wSH@& *AduiRQXaU(-alID_hNUyn=++hj~n:! ypngvx2&anSlBND"84}H0-MhyoU>FRG2>hwkZSarci}yW/?xP[<~|ysqz_>-Eqoem 9,,+m7  .EkuS)%;QW?&&Bjw]MZvdhjQ[ bhQ&vpmt{qF.?a|VY!!4+zH$  !?SE,&.:CC;/3Nm{vedmgm|/]^\=stvQBNpcXw  sC%  $034- ;SK::Nl|kix%:LC6zc\Xkmeb}  R)'6;+$?[ZJCK_y}wu(/6)lYOYh~qjxh3  .B<5BU\ZYXVazw{ %%|j]MMWl}mhy qi_C! %+17COVX^`UZ|| n[VPXhy}xz mK5"   2($1=FNT^d[^{||$ n`bdmx|wz_D)II 9 9P9YdG5V7Er8 (\S'5 B ^ -   $ = C > '   V * ! | r G @jN= GyDZa*O}as=  O`{NwI&!GSR:>rLBZU 6 y q _ ) n '   < a r _ E    ' ( ' & $ 8 W N  C P a ~ 9 K M=^\uB xPt(v% YV8[d[En#  z    > v ;    + A H C  ~ ; Z t ~ 1  G I 7 2 8 8 T w c ` ' :fB6"  BdDO~ |IT sLAY sU@  > Z Q H 5  e P ? 9 0 . 0 7 ? ; 5  f 1   < w ) Q l k +  : R = ( /  I Z E0ylT| rj>H3-4m8wb = K A    v N ,    , S v $ H h { e & V 3 C b j = # . 6 d   @ M a r_>.(SVR;_~Gp^3pa0fx` 3  n 0 q ) Y y +  D  > %  0 q v ] <    < O a  b !  3 T j ` N 3  & U * @ ? !   % 4 s S \64}YtV*ihcqs0<r ? x q  \ 9  # J [ k H ,   ^!]0(6HRg@ 3 4 *       7 Z v  u   <EY8Idr5~-t_1x x t   '  2 # e w Y  P . \.|bv k: K|,~mrIAPWgx : ` 3 Ivaz@?u{,)FHWp  V O V G  W V o c Z|;"=kRsemO$ :m :BTmg+X?  * V v  A Z p X < .#-& - m 4 ,  g 5 4 f Av2>zA! &8HQJT+]gl{}M FcwiRV7=#MZC?d  %  2 , h E 3 3 #M > D k S j h  C ]\Q:6)"FrBrl1\;qcpkG+" ,5>BEGUhCo,q{oYgV#'<  * D ]  3 A 0  1 y g  4 u W u q | t E < E q : I ;   { qQ#66@I2 1}C'?PSGB0,0>dWjF[}kq4#fgC 6 ~ k d  ) k e c k 0 , ' < #  & 9 : xFV2$.x#Zgv>8$ t1:FAZ* (;GTa|3h(l  $^ c N j | c X z w A \ 8oA3?tyhlEfiNiY[q>j~B e40Mew{^t L7-Ue),;&=>k@!\ a ( 4  p ,  ! %4xA }W6`jT^|bKC-k:?GA>-IqdX]ha,]KOI3w)e{s9 P _jaC1WWMYm5?7gk1c)SzP=Q|*VA)rAg\KB=:5()w$I }KEUmKbazA 8u$Php8jkS 6V ~"3e Mr]*RYs> 2duG!1wuvvpU4"`Ym#foE)R\E mV,S=mun"Ee|Lm=)Z!^{c# [6*J["  T F -vC,%+BT} 1 [ | N !jqBVY4E{B\\hc@ur74y{PjWd%=Q}`=|!  R n d  '726, 2GJ)9 % K_%X-#~ jVi/ CQ SY~I2M;KiM N^W-]nh k 3  1W='+m~#j3ce~vc^~X-4;U4z r E  9 U%m?'%m,=n,ankmJa4F4Qq1q z 6 ,q!|>~` T!P"r#=###### ""!!8 *k qi; = lH5 <Eaff5(C49XkD  1 I   62 *!"#$&;'(*=+`,-./;//8/ ..8-,,\+++H+**^*'*)*<*e***w*[*L*D*_*9))(B''y'o':&p%d#"!2}Y b76`l<8an$ 7 'P+ * Y?sxv!J#&F(*+,-/,02456789j9999e9 88A77U76666W6*66656c666h6?6'66557413 2 111!0Z/`.+-9,*)(&$M!>~cT  /bPKvs!FOc^L G : T z & spRd"!$R&"'(*,/_245678:;=?@@AqB6BCoCDCCCCCCgC*CBBBBBmBGBOBwBBBBBBBlBzBAw@A>=<<_;:9877G65R30.Q+)X'j%$"!5S<#L/ T',K |UGv]DOdr@)2_1_ !=#O%&(+--/12468[:='>@hAeB\CECG1I JxKLPLMuNDNOMOmOOPPOOO[O'ONNuNMMMNNANUN]NcN|NNNN)MKJzIHGFsDCBB#A@s><:'75-20.-J+*'%c"k\e ;z  <^A-E#[!#W%P'),N.025T79;\<>r@LBdDyFoHZIKKLiM{NPDQSfTmU9UVVWX\XYGYZZZZUYYiYXXQWWVV]V_VVVWW0WcWWWWW#V:U/TSRQONMLL3K0IGFCA?l=:875y31.+)&$"j 1Fk=d Q 3j!hX-") %#! !C"$k&(*,/314M69z<6>ACEGtI>KMOPRT_UWzXYZ[\]^W^^__`(`apabsbc@c>c bb%aaW``_j^^^u^^^^^^_&_f_}__'^]]];\[[Z3YXX-W UTGRP`N'KIoG3DBA3?R=Q:741/j-&+(&"$"1 eu@ i62/->,**+ ,.0.24]69H;>[AD$GTJ?LNPRTVXaY[P\^`:abcd9de\eeeeeeffsfg?gghFh:hgg\ffee?ddccvcgcOcLcJcMcGcGcUc`cocSc bbbbbbbbbNaa `)^]>[GY;W U S PNLJHFPC@=:8 531/-q+(%"][ 8}@p<97/64446T79<>@CEHKO8RUXGZ(\(]`ac$d.e[fh%ijk^l"lllllllfl&l ll8lylm'mimmmmm1ll(kjj*ii!hhhghjhkhhhSh8h"hh,h-hgggh hiij*jnjj]ihgfqdcaw_][aYNWTR,OLIcF&C@>p<:86i3^0=,5'#SZ _ Xd4HEsC@@ >>>@!ACEHwJLNQTX[^h`bQdLf gi ijklmnoCop)pdppwppspJoooLoo0oRooopp=pTpoonxmm,lkkkjjjjjjjjjjjjjpj.j)j:jkCllmnynonmlljih f|db`^N[Y&VdS{PqMKJHfFECA>=:62.H)$#  jGQ1NqLK JOIAIIJ3KMPSRTVX[^VadmfchMikm?no{p,pqWrrss~ssssssssOrrZrqqqqqqrrrqqpToo nummum ll^l8lRlrllllmmHm[m>llllmmn[o'pq2rrrrOqqpBonmlCjigdbn_]ZWUiSQPO/MIFA=9)4.)a$:.$ WUTSRR"QQRlSUXZJ[]_Madugijzlmnpqqr^rsDsstt-t3t1tsssss3rrZr%rrrr rrrqqq p^onnImm_lllQl!kll93.B(#|!]\\[[/ZZYZ[\^`Pac dgikknmn2opqrsDst`tttttttwt6ssssis'rrrIr8r7rUrvrrxrNr=qqqpOoynnmm.lllOl4ll@lolm#mmnHno:oNo nnnVn=n7nrnoopqnqrBr(qqqqqMq ppeonmlok.ihg4edbb]at`]YU=QMnmm@llelkkkkjigeb`<\Y#TaOJ|E@<"84Zjjk0k5jihhhh%hhhhjklmYn#nopxppp{ppqTqqqzqNq:qppookoo,oaop6pqqrUrslsssnsmsgsosDrrsr qqqYq3ppp=ooozooop>pq.qqqqqqqVppsooop7pupppq%qr3rnrdqqqppQoonUmmLm4m!mCmlmmmnm!kjah!fMc`\XTOjJFB?l llllkjYjjWjjjkslmnolp*pqiqqq:pppppp[pooooOnnAmmn.no0op5pqurFrszsst t%t't9tsssBsrrrrrrrfrUrCrVrmrss^sstssssr[qqpQoopp8pspppq;qr2rmr:qqxq)ppZoon|nnnnVnnnnnnlkizgoeebc^ZVS-OLQI6mnnnmllZlPllmFmxno)pSqqr+rrrrqq[ppp{pohnnwn1mmllWll$lmmnnop{qrsostXtttttt|t*ssssttssssst7tqtu1uuvv$uuutsrqpooqo`oMorooppxqqrr-rqqqYqppIootofokop@ppp[pfonmhljvifdCa]ZXUSDopZpp+oVnn4nLno oZopWq@r2rsVst$tMt ss-rqqypp%o'nNmll\kjiiiijjtjklvmo-pqrsRstGtuu7u(tttuuu"utttuuQuuvvYvvvvv-uu_ts:qpo3nFmzm6lmmJmn}oIppqrrQrIr=rrqqqzq1qqqPqrTrPqqpon`mkj@hfd>a_^5\[,qr8rZqq pap3p^pqqFqr;rstKtu@usuuButvsrrgqp}o=n2m>lFkDj%ihggJg|gvghhikKlnopqrstuvv}vvvwww.w-w%w w'w@wcw|wwtwTwvvv6uutIs_rpoZmlkkNjkXklmnopqr^rssrrrrrrrrrsttsbrrqon^lkjxhgQedccobsEsssTrqqrrlrrs#st&tuXuvRv}vv\v1uut+sirTq on*lkOihEfefdvccccddeg7hjlmlnp8qsu9vcw`wx[xxxy yxxxxxxxPwwv!ubtsrqpOo mlwk8ihgggZghj5km\opdqrjsIsssssssssttVuuuttcsSrJpon3lkjPi2hggggptu^uVttss~sttJttuUuv$vwNwwww{wHvvu t>rqomkihfdTb``___?__`adbdYfIhikn+prtvx xyzyz-zSzrzKzyyy`ycy1xxvutKrqp nvljhg~fweIdcccdPe`g^i`kmoqrttu:u0u-u$uIuzuuuuvwwPvutsrq?onmlckjjkckl!uvvuttltWt|tubuv6vvwYx xxxxxOwwZvuts q^oljge#b`^ \GZZdYZ6Zi[[\^c`rbjdgyj`mKprtvwxyvzz]zzmmAmgmnknvMvzvYuuvutu3uv_vwgwxxyRyzyyy3xxwTv1usIqUU2U_UnUVPWoX[ ])_bfiilpruvqwxyyzyyQxxgx"x%wvusp*mujgeQb_\ZSXGWMVEVUVaVWX[v^apdhJkemprtuvvvwxxVxvxxyydyyHxgwutsrqpooowopmpqHuuuuu$ttuuvw4wxxyyzdzz/yyzxww3utrEolhda^LZWrT;R+PrOObOtOZOOPRSTVYl\M_cgkynqsuwxkxy2xxxww#vutqokCgd2`]ZAWDTQONM]MLMMOPxSUY,\`dhPknqsuDvAwrx3xyyWywyyz'yxwvdu]tsrqqppqEqr/rPuuuduttttuvvwJwxLxykz5zzz[z1yxwvu|sqmieaa]sYU3QgMKJIHHHHIJKMORUY^bg$knq;tvwxLxxxwwkv}utRrmnkfsb"]YVR&NKgIG/F=DD~D!DDFEGJVLPTYi^ bgjnqUsutw'x&yysyzzJzUzzEyx1vuuBtsrr5rrrrs5s/ttttdt(sttStuvwHwxUxyzzyyxx!vusqmjeW`[WcRNIFZDeBB#AAAIAABD4FOGJMRW@\maf.jnqtyvwxxxww/uteqo*je`[jVQMI\EBd@K>=<=;(:999:0:;<>?BEJOU[c`f)jo2ruwExxxwvtroEkfA`ZRTUNI`D@2<9/75f443334 57T:M<@DJ\P/V]\8agfjnqtv^wxzyMyzz/zvzAyxwvvuut`ssis{ssss|sssksCs(rrs(stuuv.vwx9x^xuxwvussq{n?je`[UMOyID?=;m86B4z33R3y344l5Q6;78;>ChH~NU[laofl/pctevxxxwCusNpl7gav[T*MuGbAb<841f/---4-z-z-.A/147V;>DPJ>PW:\bg.kosuvwxy yyyyyQxjwJvPuuutossstt!ssosYsrrrr,r#rQssttuuvww+wMvvuLtqo&k,fa`[UFNHB:<74%1/. ---O-~..n/1/1W2f47ZDVKtR]X^d ipmqt%vNw9xNxy:yFydyxwvuu;utt'ssvstt2ss_rrr6qqq"q qOrrs|sstufuuvuu`trpmhOcZ\VOHB;b61,.h++)))e))*g*+I+-.0Q27ELSZr`fjorxuv(w^wx7x$xww#vNu*tqrdsAsstNtsrNq6njc]QU|ME=7/0+='G&$$$%/%n%&&Q&s&&'E')Y+T/4Q; AIQmYLaMgmq2t,t|tsOqn7jc\TLOC;4-)v%u#"!!"("# #y#$^%%&')r+(.3[9@HXOuVJ]rcimnprOstttst2ss;rqqkq1qCq:q#ppqgrrdr#qqpboo6nn{noop*pSpLp{q$qr`rrrrq;pIlhaoZeRIA92+D&#""}!!"-"# #j#$$9$X$i$%,&(],:0t6=EMU]dknrwsDt(rqmigb[SKqC0:3,(E$#Z"!!"X""#$#l#$ $}%1%&'+A.5+;CJRYr_fsjnpLqr/rr|r(qq,ppUpop'pFpHoopq^qqnq/qOpzoonn?nGnoWoomo&oop:ppq qq oo kg_X6OG?N70($F!% ( z !"!q!""b"""#L#%&\)-n3:AIQTX_)ejn oq9p[olbhb2\TME7=D6 .*&$#t#H"#####@#n##$$%%&),2>8y@0G{NVC\chlnp]pqppiooXonnno!olooSo_p"qqiqOq4qponngmmn6nnn"mmzmnhnnoo oAnDmj3e]]VME@=4-&P"AF J v ! !!!3!!"#&)/5=GDKRX_chOjllljfa\kUNGO?8p1,'&5$n##u#k#&##*#b#t##$p$%&(%*{/5O o!#9%)-2:6:x71.*.()&K%$$$$###d""v"i""#$(-14<2DL8Sh[a^gujmmmRlkk&jjpjkDklm n-noqIrtDu5vsr?poAnm*llTkjiihi iijFkkll!l&i;d]W O7Gw?7K0I)v%""!+ _ [ ` b!a#T%>(j+0e48;=?ADHKtO R]VZ^ib6c2c`P\IUOIA;40/+)['&%"$$C###b""L"<""#%(-l4?AnCAFI9MPxTfX]Iacepb_fYS^LE>8.2-*'&s%$$###F""6",""$%>)+.5=F MU=]ceiulonon-mLlll,lzmmPmnp^qWrksuHvwxsr5q"oo8`1-1(&C$A##n##i#G"""#$u&m(U,29AJ QY`fPkn{ppponmmmmnlno,pUqs"tWuwxSyyzs qq*pMoooto5nmm6ll9l l4l0lm3mnnnmje`nYSKDv=61-+m('&T%%$$:$(#$%(x+W/38=BnG=JMLMLLAKM.NR@U>Y]a:ehmk(j|i'd^W*OH}A':d3p. (&)###l###~#/#O#$&(+/5>nn&mm8mm)m:mnLnooonCl8gc \V}OrHLAt:5V0.+)'V&%%$$$&&'+b.38>6CHMQSTSS!RShTWZ4]`dlhjm=lkfaTYROJC;4f.(%##r#,####Q#$<&'*-28@&GOW]!c\gl moohoQn~mllmnnnoprpstvw6x>y:zWqCpbpoooooooknnYmmmmnVnopp#paom`ioeD_`YRLE~>9W41A-+('&N%%i&&(+I/39>DJOU XN['[\[cZ[m\b^`c^ehBjlo nmhc[TLE=6/)&$ ##c##$#$%'*F.1u6E+KQV\5_bctccQbcce0fhjXkmnppFokQfy_WOG@8F1+i'$$.#$'$9$$%y&),04:A*HPWZ]bGfil:lmmllk7jkCl@lmnwoqrtu v vw:wx{o2nnno+opp|ppnoo^nn_nSnJnooop!p|onkhc^YQSMGBk=]9Z5$1.-+?**{+-0m49e>EKQW\ae,h0iiihh{hijlm1n@onpbqqq.miibd[WSAK~C;59.*^&%%%%&&P')n,049? EMhTZ`dhjllllakkTj|jAjklemOn/otqrtuvvvvwnn?nlno;op>pppp6oonnnonno^oop\oo`mjif5b*]RXS:MHKCQ?0:74K250&//X02K59r>D^JQDWe](afilmnmmKllmYmnIopq qsIsYsDp;lve_$W:OG?81n,(']&&&'(%)+/3G8@=8CJ^QXi]c7fik?lljlLkk'jiij k$klmoOprtu uvLv_v^vnnznnonop6pppp-ooNonnnooWoopoo{mkh.d`\X>SGNOIEA>_:86x55748<?DIOV[aeiSlnop?onn9nnBn8noZpqrtUttqnhb[9TLWDB<51,+ )p))++.0V4)7=B[HO Ub[`adgjhknlRlkkWjjiij%k*klmo\qrt tuuuuuoRnnoooop=pXpWpooo[oSo1o,oIowoooooQnljig=c`\XrSOiKrGDQ@>F;;::<>UAEZJTOYTZ`ehknp&pqq#pmooPoyosopfqfrksuuus#p>je^WP0HRA<:r51q/---/50I2599A=KBHNT!Y_"c(gi!k$kl%kkkjjiijgk]klnoqYrt7tuuuuuoo5o"oJoooopp.poooooooooooo'nmltj`h_ec&_\WSP$LIoF CA@@cB]D@GKYP TY_"ch/kmnpRpqOppGoooLoppqrusuuus^plzga[XT?M F@y<6864 4356=8;x?yC{HMShX]b+eghjkkl7kkkvkEk$jjkYllmKnspqrt tuNu6tt spoosoooooop2pNpEp7pYptphpvAEIuN:SNXl]YaHeg~ijll5lklBl(lkkkllflmmnp/qrst!ttussroodoWooooop1ppppq qq pppl#lmnoop!ppOpwppp+oo nnEm-khfbJ^#YWTPXLqqppJoooooGnmm#l>kPjfiShhsi ikmoqsOtuvwexx=xwvvuvuu:ttJssst(trttu#uv vqvvvvvv^vXuu srpooml2ji[hhhviijklQlm9m1mllmmnoppfpsppppZonnwmm k5hda^\WTQLGBA0G2M6SKX^LbofhkCm6opqqcqrr0r)r,qqqcppptpppptonn mElukkjk|lmroq%s8.28,-+2=9?F?LRW2[P_|bf2hjlqn nop ppppprphpqqrWrrKqpponnnoovpqsZtv3wxy6y.yp+q^r}sQt tCt_t#6.' 8:m i @ "',287$;@E3IMQ8SVXZ\0]_"`lacejgmijkDkkCFIL]NmPR{TZVWY[]`Kbsdef2ffBfEf eeteddodqddddpcba(_^]U[YWUTUSQONLLLULMvO5QTFW[^adgjklm=mmNm,m lm,mzmn9noopp/oo>nemmmmEllllAkk#j>igeBaP]PX-SJM]G'@91*$# f 2M!&*/37;m>/@BDFHJkL@N=PXRU[WZ@[\l\b\\]\\\;[[=[,[B[;ZZYXWUTIRPNPKI-FDC8@?<>==>[? AC?FJO/SSWF[d^b6dhftgmh\hhi4ijjkaklGlmnmm:l kj?iihh gff dcbK`^![$VRMHYB:<5K.' x ,&a T #(&,025768:<>@BDG}J4LO?PQRRRSRRRoQQPPPPUONMLDK IHECA5>=w<5:86420/ ,*)A((b)&),#.2S6j;(?CHRL'ORUWYZ\u]^`aUb\cLd eeedca`_h^c]Q\ZXVU3S5QGNKGDh@m68J9k9:[::::::]998v77m6543021/.z,+-){'&%#E! q  |!-#.%T(,049=;ADHKMPOQ~SYTVbWY4Z[\]]]\[FYXVUTSbQNOLKIFCn?;85710,&!-&c pza7] O * ,.Yh "$X&)+y-.5.|/ /J/l/V/_/>/..#-l,++N*N)'&f%K$""!_tNeb\Y3_"&_)-f1>58;>A?CEGIKL|N OePQRORERQ ONDLKJIH'ECA\?=;7~30-*x&w!M #dPjq4ma<&>P "  M#q!"#w$$"$-####]#!"""*!O s(v-9n:}Y!j%(,U/25a8%:|<>@BCDEFqFFFEDCB|Ag@}><:h8v642v/%+a(C%k"lT QC U V_4RJC*.u2'_ba p FhAg&#|U @ )8Je  s NRUL B |0K !Z$u'*\-#/1357&89o:":^:::::9y8c765W31j/6-,*'A# 3%D m hhL15boD ^PVaO D  zIwA B h & ?"J R |"%'a)&*+,-w../5///t.-,t+)'&G$# chUR  OWql;gPncL%T2S%}@+#S!&rae  - 4 - p]w7]dO_"j&5 [ \cH z!!"T# #$%X%%)$q#! {:[AS- U > +p#e(a#0R^`(eTk%jx~[EhITGaEvO! x9\yK|% T } CQ\V.@;<wU4E]@FIv|{RbU)*q#JTL0   %0{zh^ e l t O _$FrI  oWu"9Z77V6Y$If&zlqy!EVSTX/l1~-UebL@86/,Kr"d.~iC?Z4;GaGz)X+A"yNaJ4 `7U3wto+W1YxFv>&kwl]N>3"wJG^Kq3!'h(hH"sn72?k] 4TKq?)2MeGxS~3~7WI\'6_>CMw*U+O^OI;0m>*g2^)[!(f5dHouo>!*l_@?!*~Q?T[t.QTsQ]~odCuhXCS4zgMGG`{_5'=e}&06aWH!d A}}JLc"Z!y`/jrXw E5lr1.~gt4g0A t}iYXZq 388FVj?[2ilbcxKzqXn9:wh%gSdf2+N0fi8P)PZ"92Ia<bf~I$O . {pcM  c-D~C4@?AyO*PNp]{YR=Lk1@X!jUSB&nKqPx9EeoB%%%@d.8(}T)&4[}884h'1Fg!A<TAMtnyts?WYNN{fPX- iII3FY5tudepf<0<`s'3%%}^;H\0%zH?M|qJ_1sGgNACc}.lOk#H_\Ur|I3UKQmT|*(hxWOKehG>OXo #(86#mT6)!5MurN5'C#*xr ny<;*;\a{UIp8[ljmisa(,II<;IX}hYg=Kg(kNR\xniiz&*% fQ:A]^C=HKRPfu&~a Uuc< rWHXw~%E`jcXVsyLNWF9=Mv~o}"I1^Y VP\ }{pryfU?=KgwmRh-&@dyiJkD?Znuj7Q[^VLMht^/BLB8<UuSgN;!zoR=?FdM "'1R\ebfW8pKEY`a_,BNYWNIU`fP.SaP=HfzZGnLauaR=:=`;%{3>V^ZA% tXNY_`^&9NY\TKI^a:GmgMFVu^NcW4sb`dXQNi$BATG(%u^V[\P&?UkkVDVg]<QopYFSt|_L_N 5dJRJ- yfci`dsz6 Dq$5F<-6xUMG* -GhtiSPVaX+'^oLCZdPWxl;'"Z _wl=*voqoy7&[sYnBJ?3-~J7)/NgyqV>EQG0:jzmZSbpafz{X/;qFZ@!ytr}]<.Gkncm$9(+(n8,DlwV*#6MS6#Fn{bR`p_e~pW]\~dQ+|uqx~nA'7]kKP{$!0'|H#   >SF-%,9C=3+6Qm|xfd}kfk{*W[^C'wr~wP?Hl{YTtsE'  ! "/44-#$8KH=<Ll{ier";PKA!~f\Wjk^_   M(  )56*&;TXOFLd|us+4>1q^QWd{rdl}  d1  +973>N[`^\^m{~ *,"oaTTZiwzkfo og]C#   $%/8@IV_caYay %r^YXbmx~ywz| mM7!    /*&5<BNYacZ_|~z+*&nadlw~{{~cJ0  FE|6 =V@^jK5R/:c. /eX/0 H Z %  9 A < %    \ 4 * x v 9 4hOB"KxAV ]$K~`v@  Sa|FwJ'%Q]V=@jB4W ^ C x r b % i )  < Z n _ @    & ' + . & 2 R H   B G U q : } D TCZ]p>pO}(q ^V7Y^S=n+ { p % G q 8     / A E E % z  4 S w .  > 9 #  , 5 U t d j / 6e?3 FgFX xIV'yVIb'mK7 w ) | V U M 8 t c I 7 - / , 0 > @ 8  j + ' e ! V z ~ > ) 9 #  1  L X  B $reN} qn<Q9-3v@j 4 > K    x R '    ! D k . X t q 3 H , E b e < " * 1 c * '  9 J \  |fW;--WXXCeLni;wi7np!= q ) f  k D j 7 & Q O 3 ' _ a 7   , L X b ~ h  ' D Y U H 1    P 5 G H )  $ 0 l M } Y0,y[|]/icdkv7L| J { v  O /   5 n g  x X ; *   VT)+>SZk<        : c  q  6A^=Rdr3z)mO!~{  { !  - " $  P b G U 3 f9epc.'\'}{SmQ58NT`r F _ 0 HsdJ:rp*'HJVo  ^ V _ L x U \ x j bG!>jOr]~mS.<s1C:MH UL  9 ] v  > ] s X >(;%*( > s < 9  g )  Q ~ x )d+CQ&/BPLW*Ybm}W(Ce|w BR 1F 8]iQDb  %  + - i E @ A 6W+ 8 < d M  i k  X d Jy?.2,1W >d^*_=oetgG1,%,8GOSV^a|DV or sxe,+=  ' < Q z  0 ? .  , }  t  D ] v o s i ; 6 E t @ X K !  ) !} pJw&2Pa#G3E-CQWJ="(?[1~`>^(}{<,id> 1 w c Y  - u q j j 0 4 , = ! ( C E 'ThF(2g DcVP;#o/4<9V+ 5O^jyaq"  "Y k [ { ~ a V v x > U FzRHW|}HPg8}\nRYr @jm8f>"@b|vW;bG=Biv&.;!7CoJ0h q 9 ;  h 3   &7uL6a=d[;Hyv` fc%`;AKD=&C }jiw Mo)jadcK+t(c}@ ` \y{O(AHEo=! ?*]Tkb9b ^HV[5(tB~X@'!#.62$   )]' Ay=;aQ\xFZZo?.mNm {0z^F;z,!"5*kv5U{H3'>KoG' 3NirdO7Y6#r-tj@!NZKzN'QTtmdEzYL6`G7V<YE{X:#$(Ah  ( 1 %   Sox: c Vdk~^:pxEHysKg#D,GEjxe?4S\k  p x^VOVWf  _   U izUNj:gJa*>H TdO*E6F^;uJg%XXOW$^R l  . Q )!/8Q.Gl&)Xmo*U kv4 Kt" rf&5a/hxuu.qqcT/aM/2Tm%b'p    ?|Q !d"Q# #-#N#""o!!i w ^!AcnN *S1Y `@'M <v0<^`` 0I8I/keRGE.1 d V J+Uw E!Q"$7%').*,:-.3..n.@--P,,*++,**w*4)))))))))j)H)0)1)E)U)K)2)) )i)*N*,)(V&$" @ =( M g ~FH{o%Wc?=x PCQ ] h E<) #!#%'"(V()*X+x-0.024s67(8?8888H77y766c606555555555n58444j4T4O4?433x3Z3q34,4%321/-+m(%"0 :>|o rn`1 $Z[0NKX | e  ^$mmR g#p%')+S-z/12344z5V68m:\?r@AyBIBBBBdB6B"BAAABBB"B.B'BAAAAA?@@~@A@-@$@ ??~?>>j>b>}>O=<<:9t7T51.}*'%/"! 9' ^ & tx{fX}Z8?Whvgx:%- n"%(+D.0e2D4u69 :<=>_>?I@NACEGwIJ@KdL*M MMMMMMNNMMMMMMMMM\MBMLLL?LKLL L4L=L KKXKJJJ-IVHFEDFBV@U=p:(63D0-,2*)>'%#!o%w  \+WKg'# pF  !D#"%')+.1s4\739;=@iBDFiGHI.IJWK`LN[OQrRSTU~ViWWuWWWX!X7XWWWfWOW1WVV_VUUUUFTTTU U?UUUUUUUHU(TSR5QONdeGeeeeeef feeeeeueDe ddKccebbb/aaQ````aaCalaaab7bbbbbBa}`K_l]\.YW@TRzP|NLJI GDB?<:7531/-+)j&"t[v SCp?==:9766S679;<>@C&EHLORUWZM\_acdwef{g|h/hhi`iijjjkLkkkkkkkkkkll9l8l4lkkkWjj?ihh@ggRffReeeHeYeeefef)fg_h hi:ibiWhhgfdb`^\ZYW/URPyNK]HJE>Bn@=>E<:8630,(x#< CK-GECBA@5?@OAAC$DFHJMOSVrY\^`c7eTg5hj"k:l8lmwmnn n-nAn3nIno o=o.o$nnnncnfn_nno1o|oooeo6nnpmml0kMjjii=hhph1hh%hchhhhyhphiXijklZlmmlmlkOj(hg"evcb5`^\UYWjTR"OTLsJHFECA>`;27%3.*)+$6s  ^RP NVLLJIIIJMO.QzSGU>WyZT]t`cregixkm+noupqrVrrrrrrrmr*rr>rerCqqqsq'pppppq0qqqqqtq-ppMonmml@kk`kjjjjjkhkkkkEkkkllmnop;qq'qp1oxnymlmkoj6ig>e:b`^S\YWTRQ\PO;M)IF(A=83[-(w#[ tXV TSSDRQIPQaRTVYZ\~^adCfhjltmokp~qWrsstVtQtat.sss/rrlr7r+rqqTqpppppppqqWqqtqTppp!oo"numllkkjkZkkkl l}mmmmbllwlHllmCmncoopq?qVppEoo nnmqlk|ihfHdba_0]d[ZiYXW-SPBKGB=8%2-($ ^g\[ZZ@YXXW|XYD[X]6_`bYdggikmopqrs&sttuuuruOtttss9rr0qqq9pptp79510,eLeMeae|edcbc)cde[eghjylmcnYopq$qDqbqqr]rrrrqqq@poo nlnmnmn nKnoIop;poppqGqrKrrr{r.qq9poonmXlllmWmmn+noYopoouo"oo!onnOn!nooFnnGmmm)lllmmmHlljphfdb`#\Y>UQMIEBhiiii?hGgghmiiij6k lSmnopYq#qkqq(ppppppSooofoSo6nnmdm-mmn_nooppq>qqr$rrs`stBttqtNsssgsrrqq+qBqyqqqrrerssDs rr-qqeppgoo+nno'oroooopzpqCq*pppoo0nnunmmmmmnn*mm;ljigf*dMa_\ Y URKNKjkYkkkSjqij8kkll?lm/n'oopqUqqqqFppRp=p/ooWnnBn mmm]llNlVlmDmn3no\ppqr6rsstssthttttt`t>tsss3rrrs]st t)t_ttu%uFu tt(srrqponjn.mnnntst tttts/qponmylgkjiihhThkkklElpuvv,vuufu`u}uv"vfvvvvw=wx wwwVvvCutsrqon_lsjchBfLdb~`__$^~^_`9asc'dfhVj^lnqXsau?v\whwx-xvvHvv%vmv5utrpmn-kifkcaF^][/ZBY}YYZ[c\^^`cfi(lnqs3tuvUvwwywxx$xx xYxxxwutsrqpp+opppKpq>qvvvvpvtvvwwzx xyy^yyzOzzzzzSyy;xLwvju>sNq-nakhebM^[YW#UiTSSSTeU5VX(ZL\_hb6eVhknq s5touuvzvvvZuu]utut[sCqnkhebS_&[Y;VTSQQQQARKSQTVmX[;^behknq'<<5?@BDGK/OTZ _3chltor,touvvv\u1tps qnkg+br\WR=LGC$?<:9[88889;=>A`DGKQV2[o`qdiflpSrtuwxyzz{{Y{zy_xvvev u5twssttxtttu/tttuPuvvRvwxJxxy;yyyymxxwvtrp lh3c^sYYSNVHCl?>;9765D44568W9d;72-[*B'j&O% %%9&&'(w*"+.1T5f9}>DK9QW]c:hlzoqt:uvwxfxxxtx wutttvsscrrrsvsssYr_qqFq>qqpqqrqrsIssttuAuIuukumtosdpmhcc\1U`NF@ 83r.h+)L(''O&'('d'()P)*+.j05:ABGOUV^ej^ordtu usar#o*l f`XPH@92-d(Z%#1"!"@"#$-$%&'*,M/3m8>!DKRhY^dimprt uauvvwvvPutsssosrqqqrrrrtq$pDooooopTpq9qxqr-rs_sst@t>t\sprolst\tttUtsrror?r=rqqpqqqqqponhn$nVnKno/opp0p\pq9qr rUrrrr"qjnUjdK]VNDF7>47/*f&;$#<#!"#\#$'$$%$%a%d%&F()-18O?G OlW_@exkos@t tsnrolf`XFOGW>7Z/*f%#!"""#d$$$$%%^&J'#)Q+/4e:AIjPW>^'chlnp q3qr=rpr~r2qqqQqqq(q@q p^op(pppponmmsmmpmn\no nnnoGoop(p|pqpsolhbS[SL C;4-($A#%!!!p!""~"#+#z##$F$&'i*.4;QC@K3RZd`gEkoqrr$qoelg8aoYQIA891,'%#)#"#i#$F$$$$$%&Q(+*-28?LFN&T\agfjmnoopxpppYpoooop1pp}ooop|ppponmm lllmWmmm lllm@mimnnZnnnLk1g`3YmQkIA~91*8%"S! !!Y!!")"Y"v"#$$'+07>F1MTZafkGmooomkg6b7[SKCh;3-(&###i"#P#{#$$A$>$C$J$%\&(,06^NUF>7"0+2(%$ #)#I#0#b#####$\$&m'+!.5.;C$JQY_JeiKl6lmmmmmm_mmm7mmnno*ooop)qqr%rqpnm"l3kekk jihhgghjhiijkkki2e`^WP Hc@h70)l%T"W!!0!@!9!f!t!y!~!{!e!n!!" "#%/',17=BH M$RW\_cdg6hhfd;^XQ IB:.3-)&X$###n######k#$%g&j)w-.3Z9AEHPEW^ dhklkmlllllOll-ldlmOmnooppqrsMsqpanm!kkjjoihgfffgDghhjk"kJkiNe_YXQ@IA9q2*+&#"!!!~!!!!!\!2!F!w!"K#'#&(-!17+;?CHLQVYt\_bdgEfd_ZSjL~E=96^/+'&#$$Q#######-#@#|$%s(M+2!8o@ GOV]vdXhl lmgmmllglkl+l{mmn@oVpUpq'qsttuqpZnlkjjjHihgvffDf;ffghijkkifc`+Z R`JB:3H,&'$5#%!!!! i M !"#.$D&)-2=6:#=@ CGLOPTSVY^aeufe|`\U,NG?82-Y)'%/$$8$$#####"#$&$'R*07/>FNVM\dhlhmmm6mll=kklLlmomnoqqrCs&t;uNv1vqpnmlkykWk2jihggJg"gghCi"j$k0kvljCg~a\TM/E3=5.)%$:"i! k F L !"$G%(,:0h48;h=h?B`EIMmPSW [=_[ceaea]VPIB;4/?*j'%$$#####{""#$.$'+1/7o?FG?OHV]dim0mnnmm~lltlzmmn?_AcDGyJN Q TX]b!deb_'XS L[E>71,7)&$##y#)#0#:#-"""$$'+18@HPLX^ejn8nooWo.nmmUm^mnknoVpqLrstuvwxyq=onmm7m2mxmmlZkHjPii;i4iiPijkllkxid`@AB^CE9i540-*('B&j%f%p%x'(,u/4w9A>CHMJOQQQEP[OPQT#VY]`dgjGihdN_WPINA:^2-"'%"# "##$1$C%A&),1/5<*BJuRJYx`7e#jlopoo]lj3e`[XUOID3>:q52-.-*)(((*-X1a5@:J?EhK0PTW@YXY\Y XHWWXwZ9\)^acfikkFjf.aGZ%SL$D=5/*'!$$$c%%_&&( )-Y05:@GrNV\pbrfjlnno$nmlkktklmn3noq[sKtv2wIxxyzLnmmbm.mn/noooo\nmm-mm7mnnnohpppn+kgc^YT$NIxDe?;7M31/.-,-A/2p6;=@FvLwRhWC\^````+_q_7_M`jacefhjlllhed]fWOH#@9 2,)&&N%&I&'(*-L1B5&:C?ZEL9S"Y_dh'krlnn nmslkjjmjl'lmnNoqS X][adfggBf|ee!def'gHhJijlEmmmjgGa6[ET'ME>b82.o+=*Q)G)*+,/2e6:?EK7QW^bgilCmmmmmAlkjiij[kl^m9no^q'stuvwDwwx_nSmmmnpoopqq]pp8oZnnVn=`<^:::=6?CHPMShY^bg8illzlkjiiLi^iOijkln(oop"mje_XRIKGC=7v309/-..0I147<@PEJQW;\b,eik|m2mcmllxkjj/i?i-ik klmoprtuvvww&wson`nTnoonopq)q_ppVoo nnnnnnno0ohonmkci eb_D[X/TQaMJGFD@CFAAB&DKFJjNgSqX]bfjolnno1n.lkkjjjkmnioqUqr"pmRhZc]fWOPIC=:065u44b468:;#>%BNFiKPV\^a)ehkilmmmfllkxjjiIiIikklmoprtu}vRvyvvjvooEoo4ooop{qq9pp[oohoQoJoKo!nnnoo:A_DHLQV\*aaeRhjlmnAmm-lHkkjniiSifikklmo3qrtu|vGvNv(uupp(oopoop\pq*ppp op pp oooXoolp#qq!q)pRommmmmnUo^pgqs:st%rspm!idi_Y3SiN{IFCB@~@@BjDbGJNRGV[`^dhjlmrmn(mm'lhkk~k jjijkklWmn oqhs tuLuuuttqpppppMp/pqqrqmqppppppp"ooo^onmmkj5hrfeQca_]q[pYXWVUTETUX=Zk]J`cdfjGmoqwqrqqpondmumAm3mnoprswttZsqo4l0gc"^YTP|MvJHGFFH:JQMPTW[`d8hjhlMlmmmmm5llhl=lkkl9lm8mzn npOqs tUuuurttZt,q}qppqppqqrrArqqqqqqmpphooonqmlkj hffedgbaP_^]\w\[*ZZZ\*^m`lbegjm(oq]r|rorqqUpXoNnYmcmlmn^opr sKstUsspnjgBc2_[QWTRP8N*M|LNhPUSXUX[_bfsikYllmPmkmmmmmmmmmnRnnno?opqrsttfts[rraqqqmqqqqqrFrsAs>sss4s;rrwqqpYonnmlEk7ihug2f-eHdicOb=a``aGa``asbdfhjQln,pqrs/rrqqonn m_m?mImnopr s3sttt\rqnLkhxe3b _"\ZWU~TjSUCVYe[)]=_behk#lFmmmBm[mmn$n{nnooaopJpptp@p@pq:qr0rs%s.rqppypp~pqXqrrr9rs@ssssttss(raqponmlkkjhgffeydd c'bc|de5eefOgiVk lmo-pqrsRs_rrqponnmmmno?pq.rhstsupuut\s"q#o0ljPgeca^\H[Z[\^Z_]`begiklhllmm@mn noAoop%p~qqmqqHpppq'q6q+qdq)po^mlkmoopqrKrgrrskst3t0tjtztotsrr q-p3o mlkkBj]iZhNgfff:eddeEfghinjjlnn opqrs'stss4rr-q*onn mmnDo-opqs%tfu_vcvvuu-srvpo4m~kig|e:c b ab bfbcadTegli2jl lllllm_nnoppEpq qrrqqgq#q0q-ppNpo3nljh"fh"jZlnoqpq&qqrs'sysst tssWrrikxmn9o0p'qrt(tuHu;udu(tsss rdqq1ppq)qrsIttuvwwww|wvv5uu tsrJpanm+kkji2h8gghiijkal%l{llQl lBlnoooppq%qqqqnq0ppp nlkhde@aP]bYVY]`dTgPjFlmnOopqKqrRrrrrlr qqrponumlllTkkjhjii|i1hhhijlnCoq*r)sPtQudvvuvQv*uutVssprrrcr~rrst'tu,uvEvw#wZwAw+vvvFvuuotzs qRpnmlkAjihi!ij-jk2klXlll@kl5mn5o2opp:pqq|qqSppoon4l^i[fb^YTP]LNOTY<]aehjjkmnopqaqqqqqqqoponnmmmmDllkkk`k#jjjkllmoqxstMuuv,vw@wwrw%vsuutt/ssRrrrsistptu uuvvww vvvvvvv;uTt5rqponlwkNjWjOjkFkkl lXllllhll\m,nfobppsppq6q|q^q p^oonblLiea]*WQL-GBDJEOTY7]ardtfshjltmnouppSppqppaonnunHnsnnnDmmmsmPm#lllmn3oxprt6uvwowwxwwvvu5tts`rrqqqr\rs#swstuTuvmvvvvvvvv6uVtsrqzon[llknkllllmm9m`m\m1lllmnopMppq'qqponnlkBh7d_ZU3NHfB<7 9?EKPPbUY]`cf hjxlAm\nwoooplpnp"oonnooooooWoDo4o'nnoopHqhrtuvx/xy*xxxxw'v6u/t71+/4:@nEJO[SWZ[^*aud/fhjklmnHnnnOnn n0nospp

BG K*OSW[^ace}gh%iij7jklmn.nnxnVmmmQllmmn;o,pBF'IGKMOQKRTVXYZ9\@]_V_`2____J_^^^_`P````q_^\ZXVTDQNLmJJHOFDCvB.B>BDbEHcKNR~VsZ<]acfRgi}jjjjjjkDkl8lmnoopoonmll"kjj'iiBhh g}fFdbr_[X(SwNISC_<6/)+"u(= r ? }#"&.*c/.37;">@B$CEGBIKLNQRTUV`V?V7UUUUYU=U]UVaVV|UUTTUS9QfOMJHEHBR?c<:<87643X3457~:+<@DI`MREVZ ]~_bc@d@de%effgHh'ijkol^mlkjishfgfedUcrbac_^][WTPLH/C~=81,&5`5 T rY$  i0$(,0:3468e:';=?ACEGIJKKKKKKkK/KKKPKKKpJJ"IGEDA?<:C7w42/\-*)=''(@*'+.159>CHMPTWhZ[] ]^_`abce f^hiihh fhdcb@`_\]\NZXVUjSPPM.IEjA=8 2r,':! G lt[ .H ^|]/"B%()+Y,.0R13579;q= >-?5????t?G?*?.?G?`?y?G>>M=<;_9754 1/-|+@)&$"{! |!#%(,05c:>BEILOPQ#RSUVVXhY[\,]}^`aba`^\\ZYEWUSQOMKhIG^Dy@=[951,'s"=  .FP 9 LFij "$&y(/)+e-k/c162]3]3333333344 3|2110.-4+)(!&A$Y"b ja<7e#&+/o37\:>aAsDLFTH;IKtM0OPRASU.VXYCY|XTW3U\SQON5L,IG7DB@>;841.=*&?!{ KMQza<aZ*q|_ P JTh@+L "b$B&"'g(a((((((())G)M('&%$#u! zBK&[&?YCO $(:+.2k5z8M:u<>T@(ACEG0HJ(KMMMLKIH(FODC3@>S;9_7k5f30(-)&# >. l%* NIfm?+XK  v  faLdZ"q8SIDEIJ)[ D G V  s"&!)=,+.02579X;=<=?U@jAABA>@g>=;:U8E520.,*('K$:!:h Y P%PEG>C<,L eq ap?gt' wM  mGj K!$&|(*,.01234556@55321,/|-<*(A&$"q7?7 V 6iX@/ KDN6S9v</u 8 W c * @ !s Mz ) Wj "$h%&t&'()*+>**f)'%#!pLdx6< t c,6 a^D5uLa*qj( RnE' }(q 5}Qrj[MA3ItG O Sw+!_ !T m z7 ^ uc_4Z9_3 ~BGbvpzU9'YW/j6&"]7qaRLDCEHO@1tvV E am[% s:z=6x$8q]L`(rWCz"jekOYa%[kA} $4.' < bz7 v s= * 9 "qm^w?m,9X4b'_y0vjj%?<o| nfO3XW.VxyZ9*&Dc5^bVOy9,<68Ih %Z 3E 7^bDt Q7gRlkx7)` :fBzDBoJ2*)"~Y:mJ~_x}ds+mYW/n!jh ;_Hn?&.OhZf*w|ZW{H{< i7,3p%? ]@YpeS6( }CPIk$H;*~R>] s+ |>ZrQ`{> q]S)U2mZ[Uje>"G}.BQ[zDA(~VZ t2}T!{g,u 'h s 62mx<4cw -i#.{zdWYQf<EMrpSN62{rs cv36vi"j_$jm*"U 9xbs|%k|))|pZYhdj.A+_Lt$ ?D6j/pO2 V7jh0)F*:@H&B1Cks`o8-"*K rdjOU}NQO2|6tB,bgHW{R>5o O`1NK!1.Om;\#gT4[(1~r`8*8s3.pAIR;O\2XNqY~^XFUv?N]&gLU@)OmT{?I]pC,21In4:, f;0@f B+R 8;Uo!FJaJRxmtxsGacXWnRX+kS$I9P1_<neWbopI<Ilz2?.$ycI Gj=#g,#GviHo=wSqUIKe3lOe$Lhd^N9ZM NoR}% @+m}{KKLirSJY_t/2;0mO83'3JsuVB',>{!xu|EG6Iin|YNq7bss}m26QJ73AKoh_qBJe gPXb|wqq **% cJ;Ja}pSEKQ][kk'o 0gzmIt\Qb#HgqiceY#SWB48Ent|#O/YNUR]wtq{~oaNJQhzexQl6/JnmO$nGGdwzo;Wbd[QUsk:CJ>6=TtYpS#AwqXCFNkA~7X`f`eX9oII_c^[0FR^_WP[fnY"2R]M;C`x`QvQ! ZyfYEBFh5q$9DY`_G(  mSN^`[\(;Udh^QLagAHg`G<JkiWfZ %pzffmaZXr':&K^P0!$|p^Y[ZS-G_uu^I[l`<HgjQ>MqfP\R'VJRK0%igofiy8 <l'=PF"/8wTLE+ $6Mo~s\Y]bS&UzkIB[hPRso9!U \tj>1"vpur> SkQeDPH%40 ~I6)$6Ws{bILSH1 0`rhWO]~q`dzwS+:qD[H+}su`E3Bc{f_h%=/ +*n9 %7Oua8/>UY8;d|t[IUq`f|lV_Z{dW4 |zswtB+?_fGMy'&4, yI' ""'CUM6,/=G@2(1Ji{ye`}kej}|'SY`I*y{T=JpuQLl  mA& #%"184(#8KG=:Kozjdl7QOA mcXefVUt  L% !  ,41&$8NSLBGc{sjs-9>/yfZ]cvo_gu  d/   !-7639DQXUSXiwlt!-)" }qla^cox~~lbk smeE  ")$%/9=BMW[[U`}}rp%(o`b`gr}~xwv  xR6$  &42%&7<?IT]`Za}xw~}|y/1)nbhnx{~~v}fN.C>y @ A]B[_D3O)0t[%0g h>3 L W !  3 < 7  d  8 ,  r f = ;mJ< Jx:U Z&QmB Sbw JL$"NXX26[+*L Z C n + n .  3 T i Z =     " " 8 Z  O   ? J Y x ; J R@[\o>pU$l _Z7W`[G!w.j~ i # O  v @ "  % 9 ? ? ~ t ) J j 6  < ; & % 1 7 T z ^ f 1 6b</ DkQ_ w#Pe8!Y<KqN9  q ( w T V M 6  | k P > 7 8 0 , 7 : 2  k / ! [  J s  ? ) < %  )  N T =~tmU{ ym?T:+2~Fg ) . L      v Q *   7 \ ! P y x 9 L " 2 T g < & 0 3 ^ " !   : B Y  y l]<,)Za`Ee}Eqh7wl:m{g; g  O  X 2 Z *  J ` G ! ! 5 d } ^ 4   B Z o p % + I a \ M 4 " " O . A E )   ( g M o G'/yXi%ccfn DJ H  p m  E   ) b c  } d L ;    P nD 2Oc|% +g          1 Y u m  x <E\D Qdl/w2m[.% o     , I [ ? V 5 n;]dX#9d.~]Os[?@S[fr @ U : N|g$G<qv38ZZf{ % | O K T D l L W u h jU 8`DnWu^@2P|:y-=RR"[A  9 a r  4 Q q \ D6H"(. 6 y 9 +  _ $  > d a Q8mA%#+06@>G[]dqqA/OnZFY'BG2\kUMl  &  e F B U =T/ 7 > j R | ~ " U X?o0#.+7f8%Ljd1X5k]j}vS1",?KS[bgnp+Zxi vf4-7  & ; L m : I 3  1   E ^ x q x t K M c ` c O $   kkLv(7Tv2@`7~F.@IK=2!=<jF^v~A,`\9 . l a ; z m h n 1 5 + @ #  4 R Y 7UfG)i9cVRG<) K 25,m= 0L^iv~*q(rU   |  f { } a W t v 9 S QtIDRny<<pW/|~ nz6gd)|N7QlhLo)P96fx$)3>KuP;~  8 7  f  1  % 8ZRAS*XX7@nnV &9{,6EEB*r6v <J9aP]"B* s<nW m `zvW.M`90}~A .&YQad=d L!4mH$`J2$ 6z,Y#W[es@Z_ty7&H.\ 9{[J (J.w&dgYGzG.xltPV_R?/0:<9.+7KY^iU/X,RSO~#9lj%"7t`u<5c]a-}P%RGln_JHg,"ZA)is\ U$p9zC`myrQuO4&.8,/5x]_hep}J1~}^KvoCcq7<3E\]9 c[c + X   wsdk7 * k w p y H  6 q !s"VbgtPIrB`CT:`Y-yC'<(?#tlMG-dcODg 'kuJ \ j  5 Z^j%i&y V^!V= u/~tW"B&uB}yn I+H.#z1m(P 2  $,^2;[%S " a!)!!!!!!4 N s?'_qGTl3 %@_ ~ ! F9$@#Z""z<W[8Bu j7V5J:({ Y z Va|pkg y!#%d'()*+,3,,[,/+++E+ ****[*6*)))V('&%%d%]%X%%%&1'!(s)n* )n(&%R#4!~PK  +< vdgWc$) vJ.Si4 o o6 "J#%2&I'$''(L()*,.s0F13$4G4566E646'6 55666(6.6:6/6%555,4o3I100<0000700+0l1;2w3m33k21[0&.S,o)'# Db O ` ZV;E=2&LLW( Z Q-  iz #&(|*[,./1512|223@346679;5<=q>S>?@@i@@AAEAyAAB-BSB|BtBaBAA=@d?=<;;;<;;;<={>#>H=<;:9Q753N0",)&c#! hW s u<dal<x[1@_qr"( s ! -IkA7r"J%(+n.d025789q;,>@AuCDFGSHIIHJJKLLqLM3MgMyMMMMN MMMKMLvKJUHGGGGHFH\HHIBJe;k8R51/,Z*i('u& $J"F Ac,'# k KZ4T%"}uPKv"%(+X.)1(479;>@CEF2G)GGH1HI0IJL+MNPQIRYSpTZUJUVwVW6WmWzWQW6WWW VVVZUUU T?S5R QaQQQRKRSSrSTUHU SRUPORMLJHFDA1>`;864n210.h,7)'s%:#!!K z S9? s=/+(%#! U w!#%E'*6-{0t36:==@BE1GJ9MO5QQRS#SST>TUoVEWX*YCZj[\]s^^_$_o______y_]_L_7_#^^^ ]]:\[ZZEZ ZTZZ[K[\*\]x]]\\3[ZXWV/TRP\MJHETB@>=M;:&8530Q-+)y'$v!pu8 , =`95k2`/-+v)([(K(*C+./25O8;?EBFUI7KNPS?UX8Y[S[\],]]^^g^_@_`apbncmddddedddeddddddddWdc|bb^aa`e`___``_`a aZab8bkb\bhb4aaV`_^n\[XV7SQNLJHGEOC?A&>;86'42 /-?*(N%#B;4j  ?Bq>;9H7g43:112 358|:=r@ACGwKrO}RUfWiY\?^`bd=eaefffffg gMgmghhijAjk3kJkjjjjjjk kk;k@k:jjjPihh,gnff?eewe9e3e#eNeef#f7fXffg ghhhhh+gfeca_p]B[XVTRPNNLIhFGC"@]>+<+:075M2/-)%!% :"JQFD]B=@>H<; ;.;=@ BE:50+&"u W}UgSRQPNMMNPSkVSXvZ]`ddgxjkmTnnopqqr*s#st#sssKrr+qkppdpPpNp`pCp2pLptpp}pspkpdpppqq,q[qmqvq1pp;onmm7lwlkkl/lmmynnontmm^ll*l l"lm>nopqqdqq p[oHnbmjlsk^j\igecb/`G^o\[,YXEW@USPMkI9E&@Z;=6 1-,($ fF\[%Z@YXWVUV2WY[?]_ad[ggjXlnp6qrNrs@st?tuAu\tttsYrtqppNpooo}ooop.pOprppppq*qDqQqwqqqLppioo1nmmhm9m$mwmnVnoJp papboon.memlmamnuoWpnqrWs rrqppognnm0ljihJfedcbaa _^u[XYSOKF1A;7#2.*H&\"wt_^^9]]j\[[A[\^,_aMbdgEil"moqr-rrrs,sttt ssCrqppoqnnnHn"nnRno"ooppEpgpppq qq9qFqWq*ppaooGnn7mmmnnhno?opnpppoXnmm_m0mxmn3nopqrrrr&qhpooPnnEmlkkj0ii"hhrrUqqpYonnQmmmmmnno op+ppppqq>q`qpqqqqqqp{oonnmmmn6nnoXppXpOonnEmm{mYmmnnopqrss@rrTqpp)ooXnnCmm$llmlglkl=kkk!ji}gbc`{\YHUfPL.GC?;730ddddd6cpbbccdeeghjlGmnpjqVqqqqr rhrwr:r qqFppupopnn1mmmnn~noptq qfqkqqq~qqr!r8rWr|rrrr>qqp9o}nnnInRndnno2ooooGnn"mmmmmn nopUqqr"rsrHrqnppo~onn9mm:lllllllqlBlnkjwge!a_x\XTPM3IF B>0:fYffffee{efBfg|gh5i9jlmqnopqqqcqFqKq|qqq;qpppdpSpo}nn`nInMnnoOopqHqrr r9rZrrrssGsstsssppNooooppKpppponnnVn4nEnmJmXmmmkRi8fdb`A\YVYSHPL:H|EhhGhhhWggghi`iijjk9ljmynopqqqqsq5qqqpppXpmpVrNt)uuv vzvw:wewUw+w1wYwww utsrrPqpppqq{rr_ru:uuMuvvw#wxUyyzfzzz{<{m{Lzzz4yZx8wmvpuKsr!omJj fc~_\5XVFSxQPOOPLPQS UWeZ]`d$gRjm`pYrkttuvww5w6vvuutGroli ewa]Z&V^SDPZNmLKJ@J2J~LMOQTHW<[_cfimorAsu uvJvwx5xxxxyUy2xwSvttsrrDqrrSrsUsstttuuvAvwqxxyz/zhzzzzzzezByxwivuFsq]o lhda \XHT%P{MKIHGGfG"GH`IJLNQU+Y]adhlor/su]vUwPwwwvuts$qmdivd`k[WiSNJGECCNBOBYBDEH,J0MP;TjX]-aOehlotqs{t[ukvPwixKyyeyzznz6yxXvutt~ssrrrsissst1t#tuuvdwwx.yyz/zLzzzzzkyyywvhucsqnkgd_vZVPKGEB)@`>>@=>?ABCEI7LQSUZ_ddhlp4r\tv)wwwwHvutoroHjf2`[rV)PKFB><::]9: :<=@lBEIN5RW\k`ehlor$sQtuvx"y#yzlz{+zz_ywvIuu5t[srssUstPtZt;ssttugvvwwxaxy9yByyyyyXxxwvtsqnkgkb^[Y!SNHC?<9856k6 5689q:_<=AJDINQSY)^dcimbpZsuwawww vtspm0gb\;Vh8[2%-)'&7&%&`')()+-15;h@FLR9X]chElxnqrmtPuwxy}yyyixwvuu(tt,+))(%'?'b'()))*,.15U9@PFN$U]1dLio]ruvHvutriphlf_JWDNF?82,($#""##$%&(),0P5~:@F1LDRX_1dmiWlto.prtv=w;x2xex{wwvvutttt*ss r'qqr qqqpxooop5pUpqqqqrrrsssstAtdttsqokg`iYRKDQ<6w0K,)](:&&T%&V&'6'|''(u)*,15t;BJVRxZwb-hJnbruGuvutrvplf^VMEE=6m0x*l&#g"""#S$$%&&'*`-"1}5;P@FM`TZ`]ei}lnq*rt0uuv6vGIOXA`ngmquvZw%vu`sql|gB_WWMEM=t5/J),%"w!!{"h"#$%%*%&#(!*b./16;B(HOV\bxfjplo6prrstssdrr_qqqqquqpJoooooop o7nnSnunnoyoooWo/oJoopppBpwpppnmigdd]UNFB>60)&"""!8!q!""###$S$%#&j'+)/25yEVL4S"Y` e ilniopoom2jLdB]U/M0E<5.j)%#T""c"=""#M#B#N#P$t%(+0I4:ANHPV]bb\gNj0lmqnInsnnnn6mmmmn noo{oMo"op*ppqMs qpRon'mm*ll2k iihhhhi.ijfkDkl_kjgbZsSvKCS;J3j-0&# F !?!""# #y##$%'}*05;AGMSYz^LbehIiklmloj{e_VOOGF>7~06+%&Q$7"""x""# """#$'N).B28?RFNSUh\Iafilm5mmn-nmm;lllmmn`o8opp&pqbqrnrsrMpo1nmTllGkjjhgggyggh#hijkJl$kkIgb[mTLD<4.w($Q!!T !!3!!" "v##|$$p%s&f) ,A106=;@E1INSiW[^racIf7hvjjid_WPH@9[2,'%R#l#S"## #7#3#/"#O$ &v(-@17>jEMT\ agj?lmnDnn=@BEtGJM9ORU9Xh\=`#dUf)grdn`OYFSKD=I5/* &$I###I#5#U###]#$&T(-"17>&EMU]\bohk:mnsonnnimmmnnoppqrstYu*vvwx7sr*poo nnnmlkvjfihhh^hiijk.l!l*l~ie^XNPH@82J+O" } # ? ' s !"$0%(+04j8'*|.27<@DFHaHlHMGG(GI;LDORVZ_ctffcd_VYRKD<5.)]$"s !9!X""#"#$'+x066R KwE>:252/-|*)(]((*+/328=C7HLPRSxRQOMMJMORIUX\`d goggUc ^tW|PIEA:2,'z$""#$ $%&2')W-_18=DAJRY`NfillmmGmOllgkkTklnAo~pbpqrtuvxyyzw{q]p\ooop8pppp o/nQmllm mnnoplqiqr3pnbjfa \VVQ KDEAG=96x31/L---/7148>=DJ OSWY ZiYXVTSSITVYP[^madghhnd`ZTM2E>J71_+(&&w&a'()*,V.v27=CNIyOVl]wcGhkKmllrkkk jCii"ijlnIoUoprwtLuvwxygyzIpoooXop\qqqoqpQonnCn*nQ&LYH>D:@=X:75333\46:?*DJPV\ZV^_a`|_][ZdYZ[]\^`c ehIi5infc^IXQJCx<61~.[++5*, -'./148=[CXHNT[afyk!lmlkjjHihhg}h=ikmbnoZpjr.tuvwxSxyympooocopqrr+rIrqmpp&oovomooppxpqwqrqolif4b^ZVPRSNK@HDB?O=;;z:AEKtQV[_c4dfxf'edPba#`H``abocekgZijjhfbG]\VPJ C>g9963?223,46568;t?D;INTZT_eimSnSnlkjihgg&fgnhklmnoqsu+vwwwx xHpoooxp pqrrrrqqpptpgppypppqZq~qqpmkjhueb_[wX5U7R-O;LIXFECaBBIC[DH:L QDV[`d5gikmkvkrj9hg(f ee7ecefh(iklm(kjf.a\V]P}JEv@=:99l:o;m=>@&BFJPTZ2_dpi_looooBmIkjRihff"efkgjkvlmnprtuu[vSvw ww$pp oop'pqxrErrrqqKqqqqqppqqKqXqponl5ige'bU_o\ZiXURPMML&JJmIJKNrQVh[2_dOgjln7ntnml5jihhhhYijlImnoin+liXe`c[]V PKGDBKAAABD]EfGbIMQPUZ~_Fdh,lLnppomkjNhgfeehf2gijklnbp_rQstuvvGv#v/q3pZooppfpqrrqqpqIqEqiqqq~qRqJqUqgqVqZpon{lk1igecoai_][YWJTS'QQQQRaTW[`dXhSk0mo9ppq)pJnm[lBkjjklmnDopq7polhd#_qZxU}QoMKzIH$GHIjJLN1PT7W[`3dhko4prql0npr8rs rrbqup8nmm llm6n7o+pSqrrrZrpAmjkfc_\ZfXVUwTTU;VtWY[^a8dthk=noqr r\qYp nBlkjiihhi4j;kzl"lmoHpristu{uuttqqg(edYbb3abc/d'degik2m"nopppproooXoQo$nnnnozoppp*pq8qrOrs`ss>rqqLoUop3pqfqrBrspttttu[uuuGtts`r\qFonmllkihhSgh.hhhhijkkll#lmfn,ooprssstsssrEq5p1ooo-oJoppqrxslt+tutt5s[r)qonmm0l{k[ihzgg)gjgggghikYln nooooouoppYpdpFp,p[pqlqqyqCq!qFq{qzq_qqMponxml9mnsoNpoqSrrs0statttu8uSuTttss2r2q*onXm l0kjihhgghthhiik;lmn0n`noipPqWr6rsttutytRsss(r[qNp8oo-oopqFrrstuvrvnv+ugtt s>rzqqFpp^oRmlkkrkEjjPiiijkzl`m[nnnnntnoZpppppqFqrerqrqqqqqpEonmljhfhjalmoCpq{rFrsnssssssssprrxqpon]ml6kjihhAghhii!iQijlpmno?opprsstHtztttt ss]rqpp8opEpqrsZtTuYvmwww>vvurttsPrrlrqDp;on+mllVkjjIj;j6jk klm#mm~m?mDmno|oppp_pqqqqqqeqXponlk)if8c<`Z^ bf hk7mo%ptqrrrsrrrrrrmrqq(pon2ll kjihhqhhEhi4ifijk"lnGopqq|r>s8tFuuvupuuMttttss.rr&rrr}sstuCvvwwwwvv@uuBtt7ssrrqCpionmlkk%jjjBjTjk kl.lWl9kl)mn7oooopEpqqqqqqqapHnlOjcgd`\XUZq^bebgjlnoJpCpqqqEq]qcqDq/pppqpo(nllHkk*jziiYiiYij jjjk*l m:np`qrzrst[uOvvxv\v7uu?ttUss{s.ss=srstjtuduvQvw/wEwAvvtuuu.tttUssr8qppnmlkk%jjjgjOjjkukkkk>klmno oUoppqFqcq>pqpp\nlOhfb[^YTOuKLQV[(_.bfJikqln noxopp>p^p]pkp^p]poon m#ll]kkjjjkkbkllmlmnoqhrttuvvwFwwyw/vuudtttsslsst+tuu9u`uvvfvvvjv%uuuuuru)ttsZrr pownlkkktkbjjjjk9kVk8k jk/lMmnnoFop.pq,q,pplppoYlieUa\WOQAKVE@G8LQ]UY^1adfhjk{l]m6mn3nnno8o$nnsmmlllllPl&lLlm=mmnno?pq4r^stuvwAwwwwwBvuttYssr[qq{qmqr'rrrs?stxuubuuuuuuuuuutt?srqvonmm%llllklkkkkkkjkkrlsmnzno@op pQppFonnml2hd__ZTNeGA;V5uuvvuuuVtt@s4qpoo5nnnnnNmmJmlll\kkklmn}no)ooooooHnOllxjhdU_zYS0LhE =6o0-)16<@EYJ"NxRUY%[^aqceVg h8iOj jktklkkll_lmqmmn ndnoMoopDpqrsturvvw.wtw!vuu srq%onmm>lek|kjjjkl,mnoWpqrsst^tuu^u\uTu ttCsrqq@ppYp?pkpppoannn^nm\llDlpm nnunnnnnnAlkii`h1eb]IWPIB:3i+%W&+05:&>CbGKO]RV\Y\_ acYdf3ghijNjkFklmNmngnno oEooop8pqrsztHuumuuuuitsrqpnm"kTihfsezdddefh.ikmoqr3srt5ttutttttsrrGqq~qqqJqrqqppvpoonPmmYG[]_waXbdefghijkll?l}llll}llm@mnopqqQqqCpp nmlkaih2fXdDb%`-^,\[[[\^`JbfegjlnpcqyrRr~rrrr7qqsqppppppqqrr qqIpp^oo*ngmmVmZmnnmm1ll?kinfc`!],XSLF9>6//' 0Vmq#'+058TX)[^a/cfgi"jfkkukklXllm,mnnoRoppppKonnmlkk j~j-ii"hfeBca*^2Z VQ6LYF@92+$L( Z 7 eC#C'y+048=<,;w:::<>pA[DAGKOSW6Z^1ac e;fxgtghi>iijcjkl@BD\EGI7JKLLLLLLLJKKpK]KL]MM]MwM%M LpKJDH/EGB?<96S30/$-z,+,&,.0s36:>CGqKPBT*WZV\^``abc(cd]e5efghiiihhgRfedc>a`_]7[YZW%TIQcMJcFALbMa8`N_][ZGXEV0SQOLIqF0B?-:6G0+&D!. ;=  AbY `pm M z&! "`$&(*.,-/ 0234o55?5555Q444=4L4455 5544\3280.I,=)'u$"~ OI?"&*/48]<@CuEHOIK'L.MOHPRGSU~W XZ[\\)[Z/XWVVTS]QhOGLJHmFbC@=<:"63/*%!Qs+ ZUl   0W "l#$&'w(w)A)}))))I(((K(v()Q)X)((t(J''8%$_"W iQG!d{aX!%)-15N8:=#>?ABDFFHIKMOQRSjRQPeOMLmJIRFDbA?=;k8p51r.+(`$C7[ c #s^=fNIAdT \ { #Gr#^i z4!YoVr m \ ` _ 4 &_#W&**-8/1394579v;6= >@BDFFGGFF DCwB*AB?>;86420[-.)&$T!Uy! Y "g5Pmp cDX'V C o Xixb|w r SlIr\| x al!R#%');*,.02|4_6 79:{;$;;::9876420'.,*8'$!oOt W 4RGPJ=t &RN1(# D $ t p U +   w # 7 6 a  {  3 *\v\M N j(ni "$&(2)+,Q-`./O///.. ,+)'%$"l h!1d G J "[!)5(|UJF ]}IW2-df%DMo*jiEZ`vf[is l-,RYJ ]!"#$$$#"!l k*=7 Z J?0 b`D@{Af?o^ `/DJ _]K990++( <2%2| : $@40d$UO v HIv}LL&S<e-QT<<6o/FIRe& mYeF4+qo\UL74J]ye }* /  |GcjF*n"6q^[p8kSHBDr J Cr~8L`U '825,/IseEz}2_A w/ zSYuFj$+L.[) f;yv0"s5{i1A;BOt&oKpyxjXB1& d c,ZB";<uN`hiNDZu +\"<2SeB{o6'f^aVb#Jn(P,u-aUsU;+(! t3A%kb.`[}j=}CdN ,N4<B_ PW$z os^oy*K2OEP 'x@6pHVicW>+ T..pQ~>a;k;=\JE |h=>#/W6Zj#!-W~YcG_ykH]~hX\[sqK*.Al Mfl0q3E=#NR{&tJrb*{&g )y4r{::(9f"=zk][TeGZrN / YeWGgzwer14tl%kf-pq6!51pY"xuO_x -|{mkrjl}"7!a!&L}(7xn8zT7`Ars2*G+BMR,1!?w{gr0*3Lrik|b)*gU}EC*=~K&]h M]P=4t|UmAUN3/tRj:yN2\&+]NX*={M ?@KRa<X~JjVzZUEZ}=Uh.mGJ;!e oTJOeh>(03Lm01 ~];+(>PvC*"W 07Fm0OK_P\sfqtqD_d]]mZ^0kx8E*E;R5e`T`plI>Hi|+6+*tW7>zoF/ k-%>iZ<^:Oq[MKk}4oOi#LjjdM>]O NeT))R7l}RRSlqSJ[c{&+:4pR2(#8Ms]@&.?z)nl rFJ<Kgf\Kr8dxy~k7 9QK:6CNqsn( SYr-w\^d{xuv%&lS;DcdX[UTNar/o   5g~kBxdS^GhvpkiZ$+Y^J=?Im6%Z4[M_Va!ythnyoXP]vg|Kf2 4LnqNtOJczt4Tdh_Z]qwf? MUIBFUlzayW%@z  pTBFJfHy;Y_hfk[7 uOLbjhd'CU^[WUZ`l^*9WaTBCXmk_W'$\m^MLMk4o(:B\gbD!nSO^b^^'@RZc_PHbmG Ec`J;Cd}lue$0v uu{snj~; $MbP)xl[VWTN3HZtwY@Vl`:DeiM5Djy^cU# )WJRH,$rqxps=;s$7OI" '0tSIA*);PtmOPZ`P'Uyd>8RvsUVuk6U[ti</"wrvsE(*WiOb?JE&.(|I6*&8[vu_KMQH4 1`k\NLXuwfj|{W1AvB|WF-~z|gE3Ee~iaj'=-  %%m9!"6Qve@4@V\:>_qn]LW{iowciUt^U6}{Q0:V|dHP~-* /%vG'  &ASN;25CNG808Kcuwc^ngk~&NS\H+xu]FLlxUNn    i>$  $ ,88/(,ATQE=Hi|ta[c{3KJ>}}lbYhp`\w  {F    ,64(%<TWL@C]}ypju)4:-n`bi{pbhu d/  !/72-6EOSNLQfw|*)$vmmpyvd]d{  ti_C#  &"&,4;BMTUSKWz~ut!%vedfpxwtww  yU:#     !0.")8>BMVZYNTqwrutvv-.'l^bky~|{dN3 @@~# A ?Y=_cF4R-*jR *ak?< Y  N   , 3 1 !    e  @ 2  l f > 5nR<Bt<Q ^+Ti~B JXr E|L$!JV^15^JR ; m / { >    = [ e O /   ! % ( # 4 U  E  6 F Z t < L KA_Zk5iU&m \T6[d]G" y([s i {  I    J -    ( = E A  w o  E k  7  5 8 ( # , 6 X w h ^ + 9dB3} EiL]xMk@LAHnM7 e " w P L C /  } g Q F ? ? 8 4 7 6 4  m -  E G t N  % < *  1  H O F voS{ wr>L3)3 ~EuZ + # F   #    P $  / M z # R { E D  3 Q g @ $ * 2 b    : { > Z  x pdB-+X]ZAdFn_-tc1gye1 i " U  C  O "  C b L !  : s t G  % F ] p q  ' J _ V I 3   O ' > @ #    ` E l D&7\`%]Ybx%HGx L ~ m l  I   Z U  v a N ?       Dd> 8Rf$. #b         - O l y e  w AL_F Rfm+q6of@3     + : U < w G ( n:W^G;f /z[IqX=BX^fu 5 Q : Q~i%N @t~87^cm} Y I Q D f D O m ] gU.>jQfNtaRB#4N{5s'8MK^? 4 ` ~ n  3 Q o ^ F1C'*~. 1 s A <  b )  B ` MI/x kC#9=HTYZN[2QMUkhD)JrPBS#=L(VgSRs      e J E  H 5X, ~ 3 ? q \  |  $ O V._. %#.e>(V{yFeG(zbNXpz^D/"/BIQcrusnz}'Zwyak[214 ! 9 N o  @ P :  4  E ` u n v \ Y h d d H   ( !ilR i-Ew9Hf LP'%(6>:' <AmKdfvC.][6 3 r e  > v n p - 6 & 9 $ 7 P X @PW8 *qw6]LHA>+ |G $R8Sbpz'q* k U    | f  d W q s B ] L{A0f t|C6Xi?+y xy!FqgDi4 2RyiHg+Q8.jw$%4BV|T:x ~ ; =  f )  1 >_`9i9S^EIiUS 7W+:FDQPD ^+*HwRCjFZ'C' vEzW l f}xN8;ktH:&G*"/P;U_0LpJQ+$ mN%6s4\'#%wM]mnEYYu=2Q:g;xr_- Sj0-!9TQu7sA >m#[}([h|wpL(=aRGUVqGf_^+~%A{z  =qfvB>hm^+~M$U@YZ^%IwM}4W[+fGTOi)He7Z  P{*& :De3XT?x,uSaegn}G4"RHvk@dpd J$QkDbP^ @t}iUL N  h 9 l 5  ] >  *3DS>BfI aB\@ne+uK(<(?| }LQ ;D?).?4*Di3 N E t 9 " * q  xE-^S"d,=n; / +^gN} Z M O fsb?svZ*Q3Jx&"V _p !Tbv B:w&3K ' X *`ezro6TK|! ( 0) 8(d:37T^>GZJ=G#<0 r Wb{-404~O Q!"#k$$%Z&&'e'(3()O)*^***`*#*)).(''0&#$$+###N##$%&( ))) (>&}$" Sat8 [Za]p)) 9bt.|P   "=#^$%&k&''A'}'()*,--.0.//01<12^3#445666565532104/:..Z...=./0123e22c1/.,)g&# k"H=_3S 4 Z %cY`I'.PQ\*[ s1 a 7; {#&&(f*,-/J01T1112'2m3 345678+8i89N:1;;<=>?@AB(B?B^BEBcBAa@%>=<+;3::c::::;";<=j==&>?AABCCpCDEGHIJK KLMNNN)MNMLKJbIGFFbFdF*FKFG6GHIsIIHGFE CBp@l>J;i8Z51/,G*(@&%#,!? | 7Ce>/%"&|4_(3 #q&V)\,/258%:=z@}BDEFfFGGMGHHxIIJKL{MBMNOCP:QWReSQT+TUV!VW WDW4W&VVVaUTSxRfQZPPtPPrPQ'QRSPT0TeTAS QPBOMLuJHFDA?>;86+320v.,*(B%#r!Hb l aw=/4+($!q s1!<#W%(m+(-04Y8;N> @CEILLNP'PQ}QR\RSSST;853H1.,*'%Y#2  L *t BQ>;\8521\0040x2.369ADGJGLPPTX[&]W^`ubhdfhijXj`jjjjjjjjjklMlmmmmmmrmGm5m7m`mmmmmmmcmlkjji^ihhhhahhh"hXhqheh3h&h@hioj[k_l"lllkkIihfdb;`][YWW TR;OLIFDvBA ?T=-:75`20.*&B! 8 %SP2MK$HFEjDbDEqGJ(MPSmUX\_be/fhigjlRmo(oplpLpRp+p oo{o!nnnoXopp\p}pppkpGpppp1pQpnppppNp%oo9nqmlkkkqkk|kxkjkykkkkk_k jk)klmnopMpppzonmktihf2dBb_][wY VTQFNM&KJmHFYCS@|<9T40(+6&"O s<r YW UNQSVYf\^a/dfi(jl4mmnopvqr_rrsrer"qq]pp oyoPoZoooop?ppppppppppppppppHoo:n|mlllWlllmmDmmnmmVllUlElNlmnopqqrqyponm7ljiQged#b;`7^D\QZ;XhVUTSQANrKGC?:50,(4$ ^]U\/ZYfWW@VWPXZ \+^acbeh(jklBn!o[pvpq qLqrst(tRsss}s rPqrppoooooop/ppq qqppqqqqq q'qq ppaoon}mmmymmn;nnooooon^mmfm.mn"o&p)qBr_s$sssrqpoonlkjhgedOba`k_s^]\[YVRO JF A;72.*'$J!6aa`[_o^w]m\\]8^ _abdfhjl?mop7qqppqcrEs.sssxscsrqqp9ooMonnno!oop^ppppnpqpppppppppphoo5nnmmmnnEno oopooBnmmmRmmnopqrst t,srqqp]onmlkjiih-goffedd1b:_[XCT0P4KFA=e952/I,(ddod&cbbaahbbd$e fEgik`lmnpqqqLppqzris;ssswshs*rrEqwpoo7nnnnno]ppppp|pMpJprppppq'qFqeq4ppEonn8mmmmtmmncnobooNnnvnmm{mmnqo8pOqdrhspttwt;ssrcqppcooanmmxmllflkkkjigdMa]_ZV3QLHpDA=:963IfNfIf$ee+dRccdyeAf=fgijlmnnp&pq+pppqjrVssnssos{sisfrr2q)p,oo)o-ooolmDn%noop p)pwpppWooRo/o]oooolo9ooo:o[okooHnmlih}fdb_]g[PY)VSPkll"kk=jjk;lDlmmLmnmoJopyqnrIrsrrrrs stt?tWtttu2uFtsrrqqkqNpppq]qrrrrrKr r rzzsz-yxwvv u[aflosvnxyHyyNxw uro]ic\UOSHCd=x842u00@/002257952O/X.,-+-t.K./02<369#=AGN!U[aglqttvw8x xx3wut?plfI_WPIC)=T72d.1,I***H*+T,W,.1S5:@GM%SX^PcwhlioqrdsEtv\wy yzz6yyy/x7w5vvGutss.rs#srrn nco>pAqAqrhs sissrsstUtttetlt^t`srq,olid_YSLF?83/,*G)5(\(())*T*,8-z/15:/@G1NV8]Td^jos v+wwvv#trnjQc[uSKC<604+'&!$%U%v&6&'(W),0g4;AGwMSY_eaimkoYpqswuvwxxxxpxTww6v~v)uuqtsrrrrxrHr n nDnopqQqrVrrfrrr?rssrrrsrrpvo l+hc{]W9PIoB;d4/+)I&&B%&.&y&''N'()Q+,05;BOJVReZ@ah6nlr.uvVwv u9s.qn iNaYPH@9f33,("$@# "S##$d%>&1&')-&16v>uuu|uttt{tUsrr&qqqqcqAnLnfnopXpq\qrqq1ppq qWqKq)q(q8q~qOponvkvgb\TMF0>t7q0+'6%#""|##{#$($r$%|%'@(,n07;>5FOOW`fmruvwNv8uesQqmi)a~YPH@81d*& "! D!!"h#R$:$%&)-m28->qDPJQ6W^,c*gjtlmo+pmqrssssRsrrrrrrrqpppp`pBDKXR6Y/^d~gj4jklrm)mn3nUnJmmmOm[mmnBnoFnnlno2oppttsMrqqq[qon`lkIjjjiiijtk&kltlli7{0*%#T!!!S!!!!" "#%*f/6}hi:ijkkliifR_YQJ A92+l&"! !m!"h#$8%J&()*3+/X39[>CH`L\PTYo\_4`kacJeg{iiQhd_XRFJCh;4.)&'##h"#0##2#M##U$7%K) -4j:mAGOV^\cgjkllm@m mllllkklkm@mnkopqqrst^uuvCuotZs8rtr3rqpNnlkEjfii9hhhi}j%jkl;ljg:`[SKC;4-v($t"!J! !a!"4"$S%'),/O3N8>=C G(JMyPSW7Y[>\1]u_Kad fghd`ZZTWMdFN>7g1+ '$##%#l#\##$P$+$%).94:A;GO Vz]6chBklmmmmmmhlllnlm6nnfopVqrSrstuvwUv/uatksfrrrrqsonlkjjiXi.i1ijFkll]ljgb \UWME=6/*&$ "!{!!^!s""$Q%(+\.2 6<AFILN`PRTVjW]XAY[^,`degeb{\JVOIA:34,(s$#i"Y""##$:$5%&*).5t;gAHOW\^3eidlmnnnnnnnCmmnnoooFopr.rstuvwxuutYss4spssrq.o_mlkk@j}jv~wxyuttUsszst9t@sTqpDnmllKkkUkKklDlmn/nlj/eF`ZTM'E>72. +'&Q$$q$$$&(,0>49(>@DJINKPRRRvRRRRS7TVAX[i^PadNgfes`k[TTHMF >'6/i*"% " !R!s"\#$$&L(O,2s9?FMU\wbhl}ooKpp p/pp oooopqpqpq2rs:ttv wRxyzuPtt.ss}stTtksrRpogn~mm0lllmmnho`opnllgc^XR JDD=9$4s1"-+)`('((3*,^0w4s9Z>#CwIzNRTV;UUtT~SSsSTVYV[^adHgg+fub&]VP H@92R,'%(#8##$%W&'E)c+068=;CJEQZXb_e8jmo|oUooooAnnnunobpQpqqqTr?stuvwyyzu tkssds]stWtsrponn#mmjmmmnnopq1qpFnPjgKb]WePJD?;;731.i-+++-0l49,>eCIxOTIXRYZYXVU"TMSUAVY[^acfgug_c_YbSSL(D=V6;0+r(&&&'(*4+:-0'4:bAG3MT[Pbg8l9nhooonnUmm\mlm/nOopppq;rVsuv2wjxyz{kttss s/stWttsq|p>ornnnMnZngnopqrKrqpAm/jhfSa\VQDLGC?5;a8}5321136; ?SDJ OUZ]^_^m]8[HY%WWXYS[k\^a5cfhhlebn]WQHJZCa<7y2W/-q-|-x./112_47R;@FLTRFX^diUmo onvmmXllkSjjkJlnmoqoppqsuv@wxxyz>{ tkssssGstu[ttrquppooooopqrssrqo=liea/\UWrRNJFB?<;88{7996444z568S9<>CGLQWC].bhDkoHoon-mClckjiiriikmno$osp-qsxtvw,xyyzfsss:rs?ttuutsrqqVq!ppp{pqCrrsLsrqonk@AD?GKOSX\b.gknqpp,n4lkjihhhQiCjlmn\noqrt$u%v9w wxhy surrrrstuuuQts1rr-rqqqGqaqrassgsrqp*nlj#fc`V]ZXUQNLJAHSGFGIMPUY^LbfSik kkjitgfdd}cd def1h j@klkjgd`[dVQQ@MHFDDDEFH^IL3ORVcZW^NbglkoqqErrpnUlkwj.i9hgglhmj&l m mrmnp*qs9t$u&uvwwrrkr(qrnst uu4tssrr`rXr0r qqrrs$sNsErhqaonlkhec\aA_b]i[XUSBQgOONNP4S6UYq]afiGldmnn%mlk0ihh8gff{fghjrlhmnmlj;gc_z[VRO_MKKKLMOgPS(UY\2_cVg@kqnqssrpnlksjiggg:h8ikllmIn'oqZrsntcu uuvYrrqqkqr=rst+srryrPrQr}rrzrZrcrsstsxsLrlqkpnml^jhgedJca_]dZXWQVUV(W!Yz[v^{beilo>pXqpponl9kjiijiyjgkUlnopooljgMc_m[yXrUTERRRSTVWY\^a|dzgkUnqlstLtsq*nlk+ihggfgitk7llflmoiq#rds0t#tu uuarLqqWqqDqrrs)rrZrrrQrrrrrs6svss~s'rGqWp)omlkjihgg6fReWca_^Q]\]l^7` acfjm3oqrMrr'qqoomllKkkklmWnpiqrMqq$olmjg"cv`][ZYGXXYZ[k\^`bdg:j.m/pqst&tOrqnlkjVihagghj8kllmrnwoqrstdttttr=qqCpqq1qr5rrr1rrMrs)snsssssssjrrq-p*on$mbllklkkskBjjjhfeedeefgiknaprtEttssrqoncmmm m/nnpqrssOs;rpn&kVhhedb_al`W___`(a!bQcdfVgilXnqresssrq'o0mlzkujiiqi`jPklmmnopr5sSt tu0u0ttqqq*qq@qgqrZrrrrs'stt=t>tAt)t/ssrrq+pVotnamlllllllmmtmdlkqjj5jjkoltm5n^oqsktuv*vutis`rponnn n(ooqr}statjtsrpnl|jiDggf!edddefCg'ghOiTjlnpYqxrrrrponmmUll(kllmno`oppqrsttttDssqqOq6qeqqrIrsessttatu+u\uEu6tttsSr8qonn0m2lkll'lmDmmn@o)oooKnn|nop_qAqr~sytuvCwwvuu7t5sr q(ppoopq2r3sIt=uu\uttrq.onmm likjjiiij=jtj8jMjlmRnopqqrq}ppooodo"nnnopmpq%q>qr rxrstsssxrqqnop?pqrrsBststu u6uuuuuyutsrqbonmllkvkkk?klm5m[mnop*pIppp[qLrZs[tttuuv^vw*wvv@utsrr$qqqqrrsTt?uuv uu:t`sFrMqwppoo)nsmllkl&lkkjk$l lmnoap&pzppip.ppPpppplpq qrrDrWrNrurr\rr#qqEpnmIlwlqn2o:pnqKrrspttu-umuquuuuZu(ttsrpo!mll'kNjjdjjkopEppqq>qr9rrssssrr q0ponklljPh4fgj8lmo)pq{ros stitttttyt@tssr@qap5nmll7knjjjjk%klyllm>noQpqqqqqrstuvTvvw&wzwwswDvv6u\tEs_rrrs^stOuuvwxww3v=uqtssrr\qqMpgo}nn`nmlkk jjjk=klMlm2mamwmnnop p5pXpqyrrZrrrrrrpomkifc`^2bwf hk2lnpbqrWsLstHtsssys6rrqpp2oDn>m.l(k`jjEiijjrjjkk-kCklmnXno odp.pqhq|qqqqqlomJifc7^YTPKRDWb[~_abfMi4km&npq;qqqqqzqvq?ppdoo5nnmmWlllllm8mim{mwmmn(npq*rtstvvwx!xbx'wwqwvv[uujttt\t;tYttttuu7uuuuuZttgt&t t sss|srqponpmnlkkAjjljOjXjjjjjjkVl=mImndno&oppppppppmj{eb.]oXRL&FAGM:QV(Y^KaegAik.mn!nnooYoooo8nnlnmm^m(m mmm/m{mn+nKnCnFnanozppqYrsuvCw wwwwivv:uutissr>quppppq>q^qqr%rs;sttssstt8t>tt)ssrqpIo9n~mmglll"kkkkkkrkOk6klhmQmn(nnoopoo nUn>mTlhd_UZTNHA;6L=zCGLPUY]`ucGeh*ik=klm mmnnmmmmkmlm m{mmn2nno+oAoKoZop7q qrstv3vwwwpvutsrqponmmZlm#mkmn[nogppqrirs2s?s_sttmtttttnsrqppooUnnn mm3mlll2kkklmvmn nZnoBojoSnzm}l/kigc^X(RJKD=\60m*:27r)po6mkj{igffeef8g)gi!jZkm(ntopq[qrrs"st't]ttqtswrrYqqVqppp`oo=nnwn1mm-llWllmzmmmmn2mm_kj1hfd`[xUNHA92o+%O',1i5::>CVGKOJRVvY\^u`bfcdefhhijwjk.klm5mn nn!nnn.nOnoopppq_qrqq6pofn!l|ji)g@e-ca/_']]]a]_`Obcf7hjlnopqPqrsCstt'sssUsrrEr rr8rqqYppyp oonBmmTmbmmmmNmqqqqqqYq poo9nymmfm'lll#k{kjjZifc`]&ZU~PMIuB;23,%8flB#&'+I/4(7;?CGJMPS.U0W9Y.[H]Z_a7bccd[e"fffffpeeee+e-eff`fffffedb`^\ZXVTRPNLKXJIJKLN1PSsVZ^WadLfh ijklmnhnoofoppRppqTqqrrd@CDEH&JtLNPmQvRS~TwTU.TTTS}SRRRS4SPS2SRRxQ^OMTJGEB ?N<:'8654312P12=246w9i ==p<<BEHKNP[QSSTUW?XZ@[]a^_`a``z_^]:[Z*X)UROMHJH7E)A>:62,'", [xVm;U u :}WH o"R$e&(*,-/0#0122S2#116000o0s0b0$//\/#..H-$+)'%#!W;3S1{c  i$O(-$1O5C8u;> @BDEGGHJOKMKOQRT[UVVVpV5U/TRYPO LIGD7A?<@962/s+'!"?GP :~t p 64e!z"#k$p%B&&k&&6%%)$$$$$$$`##8""!,x O+1  x L wN;#2'*-03B579:;<=?@wBbDFHJK;KL5LKJIH%FDKA>;9b630{-R*'$L f#, vo ND0[H5  Z&c E s Sl,$8#+~`(s" O  Q|H H  w^. }#o&5(p*,.Y/01235H7-9R;_=+>N?_?@u@o@W?}>=;O86(3e1'.+(%" vzO  0,T\ <P$=l=N  N .f3)X(WK: E ;nt^bVFI ~ a L6!"$^%&')'*,;./1E2S3j4!4505s431/-P+(&# Z 0 On(gvoC4|NK 6p!} 3 j 2z k k  "  t b[_ ( Q[<+= MG21S} !#0$%&(&))*=*)(&$"!<[(C  rh#8XNO]oSCpAtZBN8V0~{L[6aU[/oooB _  /PXCP* &LgLG 5  }U:ut=?}KmBa} j=pz P0nn6/.AKORG-0-Pph < l |   5 H q~5o.Z]B[ W 'R=/;TK ]$NTdPOILCj)G=~]r{lT=4*+2hY '(]N o T a 3  }hT(qLR1>B6uSQf.c`%4=dE 1piu+Ek Z+@7- K;0P)5$&:cdBubh/OY!o=g98Y;O]x9|r",2%i<SDb{@B`}y`L8$ 8$G:C+K/q]p&KZWb|=h1.PdSy:1j`bev,Mv8[1)-`MlO1 NuY1JC|3V]0b1#Jg]?T.3>[US<} nnedny.W:}PKZ  Q$6tNdn\SA/b<&._ ew>n$F/*:UI~gNS,4T7W n" )EfOjB]l] CR}lZ\_z}U..Eu*9K,1s6^"p-Us#S#wd*q ,g 67]wGB44d!Dxl_]P]~HRY1O @U?crczobl46te#na0rrF$5ng)VgB~ldg^bv +?#]&Mtlxq!w<yT1`=md*)K,BK]558tpm2.&6*[ megx}R!%3n,Cvm69-?|I'\fPX~uJ<8v{ Rg@ZQ"%xFf9 p|J4`#{J6F 2R,d?08NUa8U}Qz]uSRD[~@Xj9qGC5"cpZFNhjC,16Qp /4 iK;2=AbRAD('<s7WGcPXwtx|pz=Y_\_p&%_h=sz8@/G="^9onclxnMDKi|9B.(v]B"?owF+ (r#2^A-dEPmVLNi8uVeHehfM@cW!R\M-%TBowYWTkqWLZd}+(61pS5-+=KimQ26J "{XXrBE:KhlbRp7awy|}e.=VQ=7DOqsx!"ZPe$rWX^xyrv&lR:Dcidjjldu%z_  5hyjF~eUb GguqkjX" 1\aO@AKn</`-SK_XbspgprgVVfu jD\$4PpmLtLJew{r3Saga[_wlC)PWMGKZp|dvb2G ~\DDJjT f<\cibhZ5rKKbd\[#=M[\WSZbiZ, =YbWGJ\np`}]+$Zu`IFKoN"l%9DZa`F"oRO][SU 6N[aYJBV_?$Gb`M@Fb~isd ,s yuuhce @K#J]O,!}o]URNI,EZssYASf[; AbhP8Ccyw^gW$ /ZGQN5*{vykm}GIl!7NF! &3tQF>&&8OsrWV]aS- RveA8MosZZxrA,%\ ^xrI9' }~u}F#(ZgGU@LG' +){G5)#5Yts\ILSM92an`OHRqzhjz`8EyE_M2~tS:Gkmbe%;/  $%m9" 4MouZ71BZ`?"CdunYGTydf|xbhVv`V8{^BLd}XZ(( 1'wI) !(BSL:4:JSJ;3<Oets_\mch})RU\H,z}gOVveWr  " k<$%%4=>802CSQG?Ifzvfdk"7LJ>~rlakrgavK!*7:/+>SXPDE[xyumu)4;-mbhotkw h5  *8739ERXSNQbz}ry+)!|uiglzqiuxmbG&  %(29<@LUWSJUu{ut"&xhfcju~yzuR9#  ! '60"!.<>>ITYXNTmvs{zz{./'tfgju}{~dH+ <=x< DV=fc?(I)(kT! ~YjC> T c /     4 > 7 !   _ 3 ' _ e N =}H3=o7Sc3 Shz> LYt@{S/%H[g5%UDF 6 } >  =     ? a s d J #     " * $ 2 V  / > Q b y B G F;[]l8d`$i ^V:^dY@%[t g r  y D   G %    $ : D F )  ! B h '  @ E 3 , 3 > a ] Y ( 1^:- {KmLZzMa9'Q@E hM7 k & z N D 7 " y e N ? 4 1 ( & - 0 ,  G   ( [  F r v < v w 3 K 6 # & x  C F 9rwuU|qqGO7(.xE{c  } <       e A +    9 V  O t t 7 q , + U p I - - , T    6 y 8 V rxlH/.Y[W?eKud2j]/ij9 j  B A  I   6 g V 2 1 K | r L )   E [ k d  / M ` V M : $   ?  5 ; "   ^ J f C,Ca`&`_an|IN S  f ^  >   W G l \ L @ "        `wJ6Scu [ * , #   ' #    @ ` t c u KQbFMgo.t/ob84     ' ? V > j 7  j7cw g/$Lb[\lMRipsw 3 G B Yh!FDy~37aix + _ J J 7 c B F [ t Ka`6aL q nU>$+Alcr1H]Y( _/ 7 `  w h  - T u i M1A'"){6 9 M C  U   5 U G> *lr\;GBCDEHFS2zwty`7 $FlzMK^0CAIeZXt    w # o  W N  K :U3 > D n Q  z 2 V Zy}2`+%x bE6_|r:\>%v|iB$'(/6BQ[b`MTe4m# lQbZ1//   0 @ g  H [ E & <    E c ~ p w t H I ` d r Q % 6 )m\M!u(t1p7Fh6~F*FZ`bP?QZzJWx \k7(VN, 8 z j  4 v q m s 7 6 ( :  ' G Q G]_B%j u1ao2338,v:Mpj]+l4%16BRex;#&z c _   | c ~ g ] x s ; O G M6o%s_;,Ob5+ma8;r<j7 BgzZ{=J%e}$0>y Ne`E~  9 8  l  +   .[tFtDEI>Jqh\cR5.f 2:HQa[KZ /Jwv&9dWv2PD|TQ j dqT8.W_67>\?/ 1ZOep ZP#_+mQ@8*5_,j> b<\be<RP_q=;_Chy@kP#iu',@:  ~V|TtEoRCi"+i%>uL,Z]U3 2HQR@1s5ob :qd{NP{wh'~[2^Ljj`=j g('E.A?8VOIA%\7hr80;d|=)Kg% T>bmnun@D!3`H{{SrAy?~/:{(0-l"8Efbhc2 9 t  G ' B # y  l 5 q815z(!1^J"!e2C Q.t1vL+G8Iotl)V*_0-3IVYJLRb;x % 3 I .  } s7'5=h=2 QdN,e^~\?7w Q ..m [R3b<Bvxt8F Y)_j g / _ k"0wQeq.OR,E{?~95<L[F. % (  aK*[#Ay&(E%<!*:JR9L* =Dmq0P/  r p]Rg#0k?(34 D!C"##$?$d$h$###$ $o$%&&''@&&k%%P%9%6%t%%&m'9(=(){) ('h&/$t" :D^   &LCeJU_ x" PPb0{ B  FRR !C"#%K&&&k&3&%&'?(V)K*1+ +,-K-.#.B.$-..T//0Q11223)221I000g00l0012y33p32|1m0{/--,'*7'%y# 8 1]aB u 4kqA,Z^6-UR[!O [btRK+C+y rJ$!$&({)+-%./011a1F111212y3_445t687789'999::t;6;<=>I??d??'>e=<<<<<<<=V>>v>v=<;:987642/-*4'Z$"7 $:`AvI vk'<g%, H}]0Hn|x<h @ G *W"&a),1.03&5 78k9:`;P;<7<4<%a? ?@ABDEEFeFFFGGH3HIJ7JK)KWJJIAHHHIHHINJJK3KJHGFEDCB6@>=?;8530- *m(&$!Q'Q b D $ #me`nJs)  ;#\&*.{1469S;>}@BCDsEFFG?GPGFG=GUGH\I=JKLJMOPUQyRRRRRUR@RqRSSSTLTqTxTSTRRjRRSSS4STUUUTSQPoNMLkJIIGFJLORUHWXBXYZb[W\\~\j\[[[\]_ `tabd8deeeeFdd<964 1/j,*' $c"# XMQ _ 3km@<9z6421I0//01469|;>BA0E)INQTV\X[j]`?abvbcacddeZe<9741/,*'%!U 8 R\IFC2@><;:u:|:h;iVinipi?hhhphhinjNk!kkkk=jibhDfed5a_ \ZWU]SPNKKHFGCA.><:R752/,c(y$e )=! ROMAJI'G6FE.EYE]FHmK+MPRUpX\__bewg@i/jl6mXno>oopooooodnnooopqqqr(rSr/qqq;pp>oo#nnDmmmZmll kk'kk'kukkl l l-l1lkkajjjjkQlBmsno3ooonnIlk6ig,eb`^\hZAXUSePNPKIzGEvC @=M962.")U$ UP Z YfWLUnSQP]ONOO:PRUTWHY\^aYdfhjlcmnoapqqrUrbrwrSr9qqq[q pqqNqvqrrrs'sPs$rroqqIpoo(nn?mmmlmEm ll2kkkklFlm m@mmmmDllXkk|k6klWmnopqIqqIponmkj?hfe c5a__][YWUDSQqOMKH-DA?=183/*&g":@0_^9\[Z|YgXXqXY,Z~\^`bFdrfhjQl0moap]qq95 0,)G& ";bb7a`__P_^_>_`acWdfhuik#l7mo p;pppqKrrst4tOtttst*sssisrrrvrrsjst tIt'ssGrqqp`oo.nnOmmmSmlll7lll~lmnDno9oTobonn0mll`lmnNoUpqrt tttnsrqqp9oNnYm@l!jihgfe8ccb+ae_]YV]RN}ID?;W74Z1E-*(/feeeYddbd-dde-ffg|hjNklm9mo+pRq q$qqqrsmtttuuMuquUu>ttcssJrrrrsUsst3ssrr4qxppoonnn5mmm`m llkkkl>lmnCnno'nnnWmm@llmn+o;p}qrstuXu;tssJrr qppSonn mRlkjj$ii)hgeb_\_XTzOJFFB?ys rr*qmpp&ooooppzpqqEq,qppMoo3nnnnnnImmsmllkkj|jqjkEklmnop8ppqqq;q#pppq#qqqqpp:ooooooBomlqjShfd3ax^\NZVXWUSPlnll|lkbjjkllmm;mnoopDq qrsYsszsstpu uuuuvaw wwwwvvIuu ttssmsisxsss\rrq>ppBp2ppLpq(qr6rzrcrTrqq.pp,oooooMnn8mmDllkjjjk>k}l lmninooHoppzppppqjrrkroqqqppppppJp4o}nQlkXihKfjdYbua_][Ynnnemm-llmnnnno^oppq@qrs9ssssttu%uuuvOvwQwwUwvuu9tssos>ss=sst7tsrrFqqquqFqgqr@rswssssCsrr*qqMqq pp{oooDmlkvj>hgYee d6ca`pypwpLoo"nooppppq%qaqqr rssussssttu uauuvavw@wxwEw vyuutUssXs=s'snstPttqsscsrrrrrs=strtu*uutttt1ss7rrKqq1phonnmwlllFkkkk;k^klmJmn npnopq+qqr1rwssjsscs-rrsrRrrrr\rqponmlkjrihhgg/f2qqqqEppqqrrrrssss;ssst t-t)t"ttMtuuRuuvvVvhv~v9uu%tLssrrarr$r8rssssss_systt=tettuauvVvvnvrv_vPvuuztt sGrbqnpgoknsmTllkkkDjjj8jXjklm9mn?oopqr.rrrs^sssssssfsssssNrr qpnmlkkQjjjYiidsesSs4rrrsstttuu4utuubuouZuWuFu&u tuu1uxuuv uuuu~u%tsrqqppq:qrrrsfsstt~tuQuuv.vtvw`wwwwww|wgwYvvcuutsreq onm]lMkk#jjjjihhi(jjklmpnzopqrrsLstst t:tItjtkt:t$tetttt=ssr6q4p nnmOlllllil5ssssnspst>>c>?i@AYBDuGkJOSX^c@h~lqtwxzez{c{ zyxvCs\nj6d^Y S@NaIFrCBAB(BCDF"GyILPTX\`}dh~l.nqDrstKtuvwxyzIzzzzyxwvvluttEtttCt;t5tTmmopqs>ttu)u]u`uwuvOvvSuuuuutrqp;ofmzjfb \W~RLQFA~=:8w7 667S79 9;y?BEQINoS=W\gaEej+mipnrst?tuvwy!zzz{F{/{0zyxvwwkvuutttttbtolmonprnospXqfrds:ssscrZppomnnemmAm.mn=nnn=nll:hdq]QVtNF>7]0)%I!!i !"I"#k#$$y$%&*1. 4;8CL/T]gdkptuwWvvtssokd]U8LD;~4,'#,!z S !"#$m&'(m-829?FLqRY_8dtg|jkl8lmn?o*ppqqppqqNqrr|rs rrqr qqkq\pq8qrs@stt9sr;poVnmml=kkllm:m~m?mZlMkegc[ThL9D(6.)g$6! > !!%"[#'x,3:AHOPVy\bf}ijkl l~lmUmnEnbn5mmmn5no%op`pppKpppqq^u;u1u tttt|t3s qYoYmlkjjiiij|kkkl}kjfaZSJB; 3-'/#!!8!"!"v#&#$%^&#&'(T+2.4:AHbO U[b'fjlTnEnoo;o(m jeL_WP=H?70\*%y" r !(!)""%*18?FMU>[b=fdijkl+llmmCH]LPKTeX0\,^`abdegibiQhe^a/ZTTLEB=660V*'G$e##n####$$|&*18?;FMTG[ bfjkm m2mmmmRmmlllIl!lmmnoBpZqVqrBrst=tuVx wvuuttt%rq(o'mkl"jj6i:hhhiajkkltkjgScL\UME>71+($$#s$$)%&&p(*-c/36&:r?wDIDLORTU8WZ\R]a]^`ad/fghYeb\VOHA393x-R)|&%$V$$$%!%%(e,O29F@VG MU[bgkQlmn nVnmmmm_llllm{nFnopqrsstuv,vx9wvuu tttsXqon lkjiihi iNijklEkjg;c]LVNGo@b9q3-)&y%2$$}$]%o&),/62I6:>DcIxMP]RSUVXRYYxYZv\]`ucyegf6c^TYRIKD2<5/I*&%$$$X$%-&G&)#-&3:8A_H1OVN]chlmoQokooSo nnn|nmmmnTnoAoprrstpupvjwCxwwgvuu!u:ucu0trpo'mlkjj`ijjMXR!VW]XX WVU}TTUVXvZO]`Hc;fCfea\VOyH @9`27,'%/#$g$%&(*-x18?ELSZ`gDk~op9q}qvqzqpp^pNp[p2p+p`ppq qqhrsstu~vwxyww4vuuuv7v&uGt)rqKp@ornnOmmmmnnoohnjm'j;gib^ XRL&FwAk:p7j43N112}59->BGMR~X<\%_J__][YaVUTUVX{ZE\_befgda`[WUdNwGA#:5a/-b+,-/13H5(8<+:899<@5DIRN#S:X/]f`ccceaW_K\Z"XW`WX[Y[Q]_beghfd,_YSMGA=8534579;=@DINRS;X \bfkmoplpp oTnjmm4llmmnopppqqrtu$v6wIx_yz{w]w!vv}v}wwwwxvutsssVrrrRr[rrs\sbsHrqqonDkvhTdY`v\XUQGM{IgF8CB%@4@@nC?FqJOSXE\a[dYfffdb`w]\B[[[4\:]^`c^fjhdihgb^tXSlN)HD}?=d;<=@ADFILPTX\`egiFlnp}pppKo9n1ml4kk?kaklxmnoopGpr stuvx yAz?{>vvtv\v.viwwxMxwWvslsssscreqton]lidf/c_]ZAWCTPMKIGGcGnILJP5SW[_cfiihilgfdba___7_`adbegik1ji{fb-]&XSORKjGFEq,on=lNj-gefc"a^\Z)W9TR+PNNY[^behhk+mqn>nnml,j~hg}fejeet`tlt_tgtttt?spr1q onsm0kjji6hNggfedmb`_<]]\{]]_aDcfhkmopvpp|p6o*mljj,i!hhijlmnoocnlj6gda*^[YYZY:Z\n^`kb3dDfXhPik3l|n5oqrssJrqVoml:jiiYhhhik*lom$mLm]mnopq/qr;rssr}rlrrsfst4tttsNrrs9sttAthtu"uXu@trsrTqEp8on#m?llQlkkCk jjhgqfdd[cdCdfsQsrq oonymmmlm&no'ppppq qsqrqrrrrqqopEpq_rryrrrrrr~rsLstVttuueu!t{s1qpoo>nn|n@nnopq>qqrs srrrs"stuvvrvwswwxwwvvu6tKs\rfqqppqhqrstuv;vzuts,rq;pRooOo'nnnnnooXoFnninoop*pqrmrrgqppk8=DBGgKPTX\"^acfhiijklAlm@mmnnnnmmmmmmnJnnnn1mmllmmnto^pqs(tFttt-sCqp npm kjihhfhhjhijNjklmnop:ppqqYqr?rs ssssrqqpQoo"nymmllZlil|lljlVl^lmWmn,ninop%p(oo8nymYljhRc^YSMF?92,2t7<<@DIQMaQDTuWZ3]X_ac1df g"ghifj jwjkjjjk-kkkkl,l\lDlkk0jjk4klKlmnopppon:ligedUbat`(___`a@bIce2fhjklmnoopWqqrs3sWsks+rrrq_ppsoo>nzmmmrm`mDllllmmOmZmumnOnn&mckjqhg)dD`ZUhO IB;4h-'!',u05c9=BFILOS~VYZ](^`ac'd9eafLg70)"!%)-159=6@tCG\JMORTVX{Z[]^|_`a^ab(bcbcdndddId cccccd dFddddddcBai_S\Z3WUDRP:MKJHI^JJLNQSVY]`Vc emfhijlmGn,nooppxppppppppoooao*nn5mmllYkkPjjjiipgeb8_\DY*TqNHA|:4 -r& Oz"S%)-114x7;?mnjnno&ooooooooVnnJmlldkjihzgg fRe{c_[XsTPK#E>7H0)#rh   "&)U,037:NOQ RASJTUTUUUUUUTTTU UTTSSqRQOMyJGDB@>q@CG@JNfQoT'VhX[]_ac=dfgbhUi$ij>jkfkltlmm#mllkkkj%iIh fdc(a`_]ZWRNJF+@X:V3-2& [K U O U sc!$(O+/%24W68:7AEHKNQTWZ#\-^"_aSbcdefPg+hiijBjLjmj-ii0h[ged a_r]-[=YWUQMIE9@;{5W/h)B">4 Dq   6x!$'* , -/13578:6;<>8?{@,@@@@@@{@4?????>==!;:9630-e*e'%&" @B20 )"$',*f-1y5f9E<@%CpFJM+PRLTaVWY[:\j]]^1_N`abcHcMccrc=b]ap_^E[YBVSSQOMQJ[FdB>1:E50h*%a e XSty%  : /PD6!`"$&(*,]-.0F13 4<45X5Z5d5O5W5O554444_33a2t10Y/0-b+l(%" 9Ov=a#'+'/(269Ay h[;{F9C @!#$G%&()/)*5*5*4** * **)))>(('=&f%/#"F xs: m ="&r),v/Q257:3<>?ACEGRHIKjMNrOUPPPPPfPON?LJNG2DA>s<9x630,($ C| eX?ZiY x'y : B A]QbUe^'s`s?ayd5Rm & o(;  <  H2ut" $'k*@,.02w4T6g8|:}<1=?$@B]CDEaEEEEDCA?;96:3j0-*(+%2"ETas B:F ,Z % " g +(T" "Uw{o? > 7OZM7  !{2h"I$R&')+-/1524568399:M:::986U30.[+(%# ^t;X R/v,.VR 83C]f s  , # W 8 h F . S   k`U&eKVSbidJ" S  IU!# $&j'()*,M-s./////.-7*(&o$!?Ui `CUum @-sMGI(d=/}Rg9Kb-0XO=;PguKREUnK|S }jv^b !n"#$%f%^%!#" [d ([$Xkl*wqQEv;`2#Zd&T61m2fpd8Pk^XzMi @z  j BPF =H}!o T  ap'Clm23m Pn;sW]/0? [v__AhYV8S*,6MY]kb?  3k%<  9 O D  +L ]*~] W R{%`$`!/$d\!] xB[wvX"Hm`'&8BA a>:@/!-X6f(j6dithJ?n/ecXA_3EL6x>E_/m _':4bV1{w'NeyY"-$!0n|3jOjsm2Lg!nu>O>& EtK~Cc<1V<>Rt =7<1!"i#DW` Z 7XpngM0  +26|X:-g^gdi[Mcfr"=j (!}ObS @6mY SWm%Ju.W9: <gGu\>%s@-Iu;`l7V77O%*Nrr.G[5;6XX\@lapy)N3WS^. Q($>wNajWH1lSLO<24Qq'Ha3Ju=RN~m\[27X.T|2#"$*OtTbTf|maSawc`^y ];A^ 4GU) CkE+{` x"V!v_!l 5o<<pG:10b"H (ugbXk1UYeBIZ?%kvK]fvffg53neiY4roK.(62p , M] Kxjfkeiz#CT4s*l/`{sfj$s5wV| ;b<gh%'L-HNc:;Beqn/(@ 0^c[^rzh1*.` =Qva*1/<|G(^iPU~sG<<x ]sJ`Y%&De;zU=i# [DNa ">wG(;K Rd9T|Oz\}qKLCY}I!au@yTL:"ekSHSnh>+7>Wv,,gQGPQm  cQ$U 8w5R@hRT{!zz~rz1MWTYu*(goBz>T/A;$Sz/nneo}mOFPm}-7& zm]<+,Q~pN? 7/@Q7$iIKePMSh}Bv[i@^baTGfW#UaY&SFhs[\\tpUL[bz&&-# tWFF@JXw^I2=S2pPNu?A6Mml#^Qm 3]tw~|n5=RL:5AQtuw,_Pi%w^bnuop sXJZtk]ZW]Zq &oX 2ipeEt[M[u@_pojhX 2Z_M>?MrB1_,THb]m xqq|m^\bryo7Q 0Jl|~cFpFC_pun+IX`]Y\vg;,SZPHK]vap_,A  nTQXtbl7TZb]_N.tIH`b\] ;JWWTR^fiU) =ZdVFKaro]z\*'^oWRVwX+s 3>W`[>oOK[WNP "8LU\YPK\`?$Gb^JAKe~ktf&1u rlmGR !K`O(yjYRLD>)@Tnr\FVg\= DbgQ=Fdzw^fX(/XLTN4*zzQ!Os3LF "1sOA7 2JoqWU\cW3"TwhF<OpqXXtq@(![aypF9+K/4amO]9FB#'(|G3'1Urt^JLTO=6dqdRJTsygfu]6FM_M4lM;Mqtin 8-  k61Mqy^:1AZaB"&Fgxq\JWvafxep_{bX:X9Da]a&(-#tE%  *FXQ=6<MWN=5>Rixvb_jah/UV^L0 gKPrk^y !$lB) #(7@A<69IUPGBOl}rbbj!5MNB }sagrjM(  ,9;42DXYOFK`|yuny)7=+uknnz~u~ j6   *886?JTWTSTd}v ,'}okq~toz  tkdI%")3;@DMTXWLUw}tv%(qplp{}| wO2 (6/!%2>??IS[[ORnts{xwx-1*znru}xv~ aG&   7a|pN& JouZB*1MZTQB&>j{[BBWcsyncUMJOPYfu~wiZMB@@HR[^blrpjklihip{}rjd^YSS[a[RTTI?=EQVO>/''(  "\~P! P|n=6Vd\>$=sxO03Jr~xvm_OFDMR_s|maZUSNLKOW^aabgqxxpkdYRLSdtvnjgeb][\^YV]`[M<4:HRO=("" .]T7i_00PdiR/(>Z}lE,0>`eQOVPMPZgqsorndSA72;J]ipy}oZKIJT]hu{~tcURYZ^irwri]RPS\cdbVE708NYM/  [b# 3ye)0^|tW, &Yf*AlzfTC?BJGIWj{~zj_N9("9Tp|\C6(-6MezlYOIR_nxwthWMQ[\Z\ZUI2*:MN9 OR9{].(Os~rK!:cwnK,8on\ONNYhxsk_PA40/436<GR`mv|~nW:%!6VumWH@KZobRKDIXek[6.CF9 2{R3\#<juEClk4?P++0Kayz_@ )BVetz|th]XU\hwx_?$FluW>9<Vzv^I8:FWe^B")=C- ezO5\.+Gsf>4YqiO,=nzKVwU6 4Nhqe[OE<859>IT^iloiaP8''3Pt^8'*Ii~oN-7TfX5#-& GgD6f#&Z|O%<j~m>\e Oc.BthI50-///00.+(,3G`xmQ7$:eT%2bg95bpY&'! _8({_(MgE-$4L]`I=n\/Cwl5 8Wr~p`O<1-29=;6674/(&%1C\vyO% 7k\, (Nptb7 5PL6 3qLGza+)Gcs]/=}s*Y@XwM/,:HY_\TVYXQI<,!,Jq` Tn*N~p.#R_<  TG@w\/"HcdS.JxzR<4E}o> !7FVqwcE#Bwc8;<n{R@K66S Cw_'&JedBW}t:OH` *_Im$5@<@EDLby~kM)UGo22h1G-{Y*gw]3%Ha_D6F5S{~C-1A ;=b~}bH.!#+AOT\TC&JW}%SsY' 7Vc .\qT(.IZU9 3+ [Tc eCm|.n_7 (H[`Y^YH)XL&O\s&2hg-% b_,'eze>$4QYG+ !)#\P mzxUy3d~`[K!{ssu)=WVIth=Ra6 ,<Vl?.6Q]C# 3sin<~qr k{M 7DISWVPHJTfi~.V^`-O[$E}q'.3UVc)Kkc<6G< pf{0bQffg{<u{l-g3'_^8_~nZE0 ^0E{9nGuC9I Oo_/2( }BC>ugMV/32Rv0 a|p-TgueuR5{iN{IG?=}M1D4?$76QDtNUo.\ki[5+c&YSm   %    ]  / G ] 3 yrv]t-yM$v ~T**CH2  6#+t 2 >  h  _hTA2* #c!;Io[ ! vCAWQ0sXi^/zut5#&  # <V[R*+qv7^;\L OPg93/P ) 3 eGl'3Vx a]di\T3] Md/ # z & }Ca7 $!!!"x"##/""v!!q!Q!x""##@#:#A#@#K#P#:#>#F#$U%G&D'''( '&%$5"` ui}gM& G T g%XgT,Q vp| D^'N ph a!#j$M%*%c%e%/%%f%&'(z)*+b+,,,,,,m,,-,-\.&.///4/@8ABDDEEFEEEEFG*GGGGGGGGGZG*<;97582|/,*j(.&2$2"J  @QgIU!7"?d?| #' *.t1467: <>@ABCDEFF'EEF;FG5GHJeL+MOmPQRYRRR!QQQQPQQQQgQKQEQFQJQ4Q2Q/QR RSTTTTcSTR'PrNLK8IH_G/F DB@>f;853+0.- *(&#!Q^Cy`  M ws, ($; _2kI T"%g'*.159ZA$C^EH;9753|1.]+)S'H$" $d6r2d.+8(&%$f$*$ $%')y+.*03 6;9=AaDmGMILNQWS.TV/W^X@YBZZ[B[#ZZYZZ[\^d_ac?d[eHeeee\dcchcbbbobaaWa+aa`````aaabMbbbbbzbaV`_w^U][ZUXVTR(O}LIG&DBv@r>nBOF3J MPPSUXZ\^D_`abJbckcd cc&bcHcdeghVijkl+lDl|lRlk~jjTiivihh?ggpg?g!gfffffffgg5gXgggggggg f}edcobL`^\ZkWUR~OMK~IrGhDB,?0<97x41.+)"'#%"^o( MXCJGC}@D=;:9s9Z9:;x=@#BDGeJtN QTWZA]>_bIceLf@g}hThii`iwiihhhiijvk"klmnOnononnnWmmFllSkknjjj:jiiiiiiiiiiiiiiiniiitiij j.iihh;ged;bp`>^[YWYU2S"Q7O LIGDKA?(<9641/-)%!!X T*PMJHFuE`DVDQDE0FIyKN-P{S@VyY\_aadfhjklmXnUnoIo7o@o"o nnQnnnnogop=pqUqrr qqqqWpp>oo$nn6mm[mlllll]lRl^llllllOlkkkkkkl1lmnmn8n mll,jigfVdub`^\ZXVTCQNL<{:7^3/*&"sHlD a [4XV SQOON*N8N OFPSnUfWY\_bdSf4hKj/l'mnsnopqQqqqqqqqrq8qq*q]qtqqr#rrsihvfeXcb`U^\dZ?WUWRPNLFIGDhA>,:5;0,(Z$s w_a_]\ZYOXXX:XWY}[ ]#^`be6gRijl.mocpqDqrrs\st t:tsssstssssttQtttu%utttsfrqq,pdooncmmNmllllllm2mn[nonnnnzn]n"mmmnnopqrvs s rr_qpoon&lkjYhgXed bZ`j^=\$ZvXVTRJOrLICE!@7;y62.*&"edKba`__h^_$_i`iacdfegijkm`npRqMqr)rrsttjttttttu@ujuYu5uuuKuuuuuuuLttsUrqq p@onnmflllhlTl3l,llGlm{n2no&o9o;oo&onnnpnnopqnrLssttbt srrqzpp o)mlk`jhg[edZba`a_Q][YVS1OnJFAj=/9d5r1-*(ihNgeffepe1de eYf#fgijlm/mnpqrsJssstAtu%upuuuuvvww8vvvvvvvvvvluuYtsrr"q`poosnn5mmlll_lkkklHmmnynoDooooooovopopvqNrGsstuuuujttZssorrOqkpeo0n ll k j ih5ggllllmomnqnooOooop ooo|op;qrrsttuucusuttKssrsrxqponn,mllPkkrkkjThUf/c(`j\XTpP~M IFC?da^\@ZXUS%PmmXm lll;lFlm"m7mHmmnop4pqrt9s6r,qpBoouo6ouopqqZqrrSrrrrNqqqKq&pppMoo/nnEnmmmomjmhmn nopWqqoqr+rrs9sFs!rrrrrrrqqKq q qq8qVqFq`poml_jifdb|`_][YnnnJmmmmn|o oooTopq{qr;s7tquov)vwPwkw8w0w%w vvvwwEwqwxxHxSxwwrw>wvvvRuutssrqkppprpq qr$rqrrss&s/rrr8qqq,ppZoo8nnmmpmKm lllm mn3nowopypqRqrrArVr;r'rr#r"rqqqfqBq_qqr#qqqrpo6mlk4igf>ed*ca`Tpp%oooovopq0q7qq`qrZrrs>stuv/vwZwhw+w(w%wvw w)w,w=wewwxwww$vvvvdvJvOvuu t@syrrxr%rqr#rs7sst+tWttttnt2ss(r{qq9pp ocnmm~mImDmllil:l-lmmnkooppqqjqqqqqqqqqqqqqrssXs6s(rrqonmplYjihh~gg8fPqqqHqqq.qrs+s?s%swsttAt^tu uvvnwwWwSwwvvvvvvvvvvvv[uutttttuutt7ss\s*s8s9s^sxstTtuHuuuv v/v9v uuttsrqq-phonmmllllckkok0kklmnXoop=pq5qtqqqqzqYqdqwqqrHrrrsrttttdssSrdq/onmljkjjjAiiis3rrr^rrsvt]uu:u/uuvvv.vivvvw wwwwMw"wvvvvvcuuuuuXtss2rrs"smsssssushssstthtuuvGvww\wvwwwwww8vutxs_r`qhpoocnm#llgl'kkTjj}jjklmno)opq0qqr'rqqqqrBrs'sustu$uuuttsrq onmmWlllylhlFss8rrs7st~uwvhCh2hGh^hhijfkmlWm=n0oopdq"qr!rCr;rHrs4stu[uv|vwwwvvgutrsqpoouo nnnorr{rorsIt/ucvwvxxyHyzLzzzzzyyy$xuwwHvvuut=sqpKnljhfpd}baazXz{zGzyyyBxwvtrn[jfc+_\vYWVUV|VW~XYPZ\^`ceAgqikmzop'qPqr r0rys2tuCvfwIwxYy yPy[xwvuu-t!sUrrrrrrro'oop9qstmuvXwwx5xyyyyxy)xxx=wRvu tRsrrpFn*k4he5a]kY7U:Q@NQKJNII IJ[KNqQTY7^byfkWo[sSv xsyz{{n{[{RTCVYp\;^adgjjVlnp?qrrss@stuwwxxyyyyy@xIwviuttYsssssst nmnoprfstuQuv4vw#wxJx1wwwvwmvvtsrrIq`p_n7khd`\8WlRN.IFCBbA?AACAHEOINSY?^dwjnruxHyz{x| {{zywvrn|hc]WRMvIaEBA%ABCECDFHIZLQUY/]^afimor]stuu\uv|wxyAyzzLzkzztyxwww vvuuvucuBuSullmnpOqrssCsss_sstttt!tJttt7sruqrpzpnmfj;fa]WxQKF @;8O5(4)3424{5g67:"=AFKQW]ciQnrsuwyzV{:{*{yxv,sojdq^ WQ}LFB8=;o9:j;4?BzFJOwT?X]bg`knqgrtAtu%uhvw x xypyyyzUzCyxxbxwwEvvuuuuulplm_np qDqrrr\qqrErrrrKrs sNsrqpooUnl@hydv^Y$RLCJP?W]d}josv\xyPzAzyxwGttqlg5_XQJE?-:53123}5 57K8|;n?LDIO T6Y_'dIiBloqrs{st"tuvwxOxxxy[yy0xxUx%xwwvcvvuuumm mopuqr8rr|qqppq,q7pppqzqqqqpYoromkg&b\UNG@94B.+l((i(G))F)*M+-0 328=CIQIX`Igwlr,uwxTy8xxwNvrojdT\ZT}LEh?384=/=,++,./,0148>DIOU>[U`fbjmKnp{q2qqrZs7trRrs'rqpsooooo no&opspppapo=nm,je`Y{RbDK6QuX]chk}lnoDoop'pqrst thtuufuuuuvv0uu%uu=uttoopqrsosssqpSoyonnLmmmnSoooooonlj+d_2WOG@I9J1,G&$|"##`$"$d$$$%3&)-209@HQYahqorv0wxEwwv_tqn-hPaYQDH?8I1+&#"!!I!6"?#$&)$--39@GNUs[bfjVkmnnananoRp3qqr%rjrrsRssstttt}stt\tWtRtmqqrxs1st{t}t{s|qp(o nwmm;llGlUlmn6nnnnrn5ki$c]~UME=6/f)$"!l!"L"#A#W#E#e#E$&*B.56/C)$! z !u"R%(.5B##$H$%& &&()-2@8>ELeSZ5`)ehlm`noip%oo/lje` XbPH@e81*+&*#R!! !I!r""A$+&+19G@HOV]chjmmymmmnno@oooopp2p\pppqrEr qr&rsbst9wwvvauuhtsr\pXndm lJkYjiiij jkSklmrmam0jgb]\hTMaE>V71,X(&L$%C%%&'()*,.3,8>,CI7NSY}^4be g6hiijkmkji d`;YZRJB;43.O(%#L""#K#g#$*&(>-(29@HaOV^(chk%m\mnYn:n5nInooRogooopprst0tu0yxpwvuutSsZqoml]kjjiXi$i ijjkllmlm_m.jgbv\UGNF?d82V-)q'&"&N%&( *+-N.14g8> CHLPTY\`&ac!c`cdnegi hhd`Z~TsM7E>L7 1Q+(%$$@$$%K%').b3:AxHPW ^)chkmkmnnWnBn0n_nnnno o?otop)p_pqrrrsNt>u uv;y:xwyvjustt sqomlkkjj3ii`iIij4jklmwmZmjgb]}VOHA;y5)0,)'''#( ),.036}:>DINaQ~TsVY\H^j_=__m_c`@ad fHg g{da\GVPIA:4.+'g&%O%%&']), 05,8 3i.,$)('(*[-^/26 :%>CIO5SbUWXZw[~\'[[[L[<\O]`.bdfpe b]XRDKD=g60,D(&J%-%%'(7*-273=DKRX_Wd[i8lno{p)ooomoFo"nnnoo;oopJpqr ssgstkuvwxIyxwvuttQsr\po!mml4kkjj|jjkGklbmllUj#gc_ZT>MH B<8;30A-.+*L*,R/v259=BHeNSWYJZZ[x[!ZcYhXXXZ[k]`c`eehd9_[7TNGr@ 9-2.)\'U%&'(*-0o49@G.N TZ`ve6ilopcqppp3ooo7o ookoopMppqjrfs]sttuvxyyxxvuuAttsqp5on4mvllglkkklllmlm lgjchfdaj\xW(QlL-GDB8=841K/h-X-.248mmmmmnnDnmmAkvifc_ZUQ-LHD?H;/7Q522369e=xAFLRuX]`)`a`_;]|ZX>VzUUUVWYY\&_}befgAdc`ZTMF?95J0d.,Q-V.E0379=BXGMSYD^:c8g-k&mopq>ppoo'nnBnNno)opJpqq?qrst9tuevwyC>G}LRaX ^ ad}dca^[XiVETU%UTVX[}^bGegahfc^Y7RKE?;64s2347:>6A$DHMRW\`e-hkmopEpp?onmmpmm.mn\o4ppqqMqrstuAv w=xz{ryyxxwcwvvjutsrrPqqqxq;pppqqEq7q pPon=ljheb^2ZWT`PLGD0A?p?G?BEHIfMnRLWg\vae)gffMca/]ZXSVVVWYN\_bcehihIfb*]WQLGCe?,<;2<)=d@rCFILP9TFXe\`dgj*lnBooonnll kk7k|klno*opqpqhrtstyuBv'w^xzC{yyyx{wwwwvv5u;tRssos[srrrorwrrrJqqp\ZXXXjYgZr\_Qbeh^jDiheRa~\2VRMJFDBCEbHKO9QT|WZ^7aldgBikmno{o(nml\k)j7iiiijQkln:o"op pqsstuw xz&{yyxxKwwxxwvuu ttJt>sssmsJsOsCsrqqp nmlDjhfdHb[`k^[XTQOM*LwL4MORVY]afhjjtigect`^o\\y[\z]-_a/cgi;kjjWgdZ_[/WSaPMaKJbKMPFStVY[J]`cBehj km4noognmlsjihhhhvijqkmCn(nnopqrstuwCxz!x0x8xwwwxx1ww$v?uuttttNtssssUrqponmlekih fegd-ca)^^[XFV+SRRXS_TdVYZ\`rdgj"l5lVl8jifdYb:``__C_acyehjfkkkifb^[uX?US_RGQ_RTrWZ]`acegikIlmnio?oQo%nlkYihggrgg_h injlMm%mzmnHo.pPq4rrsuOvxvvvvvww1wJvv4ubtttxt|tQtsssssHrdqtpbomnmlkjihhgnfec`^~\ZYXYeY[]h`Ec]filnnSnumElj8hf(ddbbce;fhklmmmrki+ebZ_^\ZXXkWYZ]`c/e*fh$ijkmFn8noCooo*mlkihuggg gthi[jl lmm2mnQoIppqhr9sKtjuuOukunuuuvvutt&sssssssst4tsrqpoo,nmllDkkk[k;kXjipg`efcba(`Q`g`abdgiln~ppBpWolnm/kqihhgAg_giRjl mop oon{lifca`r_k_s_(`7adfhj}kvljm mndoFopLpAppp omnlkih~gggigh0i]jklllm,mnobopqqrssssttCtttts;rrWrrs(s>sSssthtst srq0ppoo(nnmmn n&nqn2ml1jiFhgfggTh%hj!kmoqGr\rGrq6ponlkkTjk7klmnpnqrvrrrqom[jhsfeePemeeg!i jlmNmn`nnoRpppppppnmljii4i8hiijklmmmmno7opMpqqzqrr;rgrxrss9s+srqqWqMqr?rrssysttt;sr%qdpppop6ooop!pipqq ppMoRnRmmmgmnno3opqs5t-tttXs|rrponnmmnToHp"qwwIv{uutDszrrqqqr_rstquSvWwww`vu)t&sOrqqp]oo\oo+oOoooo^nooopRpqqbqlq}qpHoonnnnnnoApqqryrrrorerirrr0qpp8olmnropZppqpppxpq3qrr2rirsZssrqpooooopprpq]qrqqwq}qqqqYqrLstvvwxx'xxxxeww9vuu,tdss.rrsss]st?tuvwIwwUvutt s0rUqppooEo:obooodnnpnno4oopPppppp ooxoop p(pypqrsSssss\s rrqqon;lki^kmnoprppppppq qXqqqr`rsrrqp)oo-osQsVsrrrrBqqUppeoo1nmmcmllLl7lmmmn)nVnnoHop/ppqr@s!st"t+tqtltsriolhe3`[[U?OrIDFyLGQU{Y]`9S<^BOGZLPTXD[^2`be#fhhjQklm$mmnn%n|npmm3lm5m\mnn[nn6mll!k~k!k6kk{l7m}nopppZoJn4lZjSh edbb `` _\_M_j`-`abdxf7hRjxlDmnop\qqqr:rrr[qqqLq ppGoo1nn{nln]nXnKn)mmmnn6nunnop5pppp%onnkhc^Y!SMF?82-L17VQBAFIKNbQhTVWY[]_,`|abce)eeeLe8ef9fgwggZfffhfee~ehee.ef[g$g-fe^ca_]0Z>WSQONMAL)KJJLca~] WPJD:=6/(!c"&w*.26F9@ClEHJ(LMOaQS ThUUU=UV^W WWWV?UUUUUUUlURUUVU)SQ;NLIFD.A?=T<";:98889;4=l?BF IMQ$T}WTZ!\^a*cMe3g;hjbkflim"mnnonnoo@B>CEGIIJJJKL'LLeKKJJBIIIJIIJDJnJIH EkB?=4:7532h1110000>1G2X4L6?9;?TB|EHKNQTfWY\W^a"c dXefghiRiijSjk/k&jjiMhgfercb`h^][YVSNO'KHC=7|0*$~` i"? -0"h%&'*-/.1O3F5L7(8:<>8?)?w@@AJABAA@C???U?(?*?O?O?T???>y=:c741.+)X&%t$y$;##O"#1#$%'*,/2595<@$CFJMHPrSRVAXZ\^i_aybcud$eeffffffe6daca`][YdW^US1PLIDAq=>8/2 ,& j&  "#" X K U~Zk }"$&(x*[,5-/1234D45m66666t54444k4344(4-4;4n4R463(1/|-*+'H$I!9$:m{6L!#&* -1'48d;?.B_EHJKMlOQSUWXZ)[T\]^^^^k^]5\=ZY%VT`QO5LJHEAR=96K1,'*!D d t&- { W]e "$&W'())*G*+L++*D){)?)\)F)')((() (('&b$&!p4i1b<  [M ;#'E*.>1v47:=E?B>DFI%KLNPXQSTUUUUU/T/SLQOMKJcGfEB@<96"2/ +A&!u 3h> QPoyE w R CdA=Z3< G D{tX;i].%-CQ<} 2 V  [$f*"%'*-B/14A68;:=^?BA%BDFH>IWJ6J\JJIIHHFvDA><97}41.+($!, o//sk l ih9Ru: 8!oN } % e_xq\]6Hm X  ,ah"6$n&(+-x/14689;=,>e=;9S6q31n/,L)2& #!1G TO#kgKKn8M O  0  O 7 \ $ \ 3 Q K  ;JHMps6Np^:I= g +4F[gs #%B'h)g+m-+.0012344g4D4Z320.5+)'H$!MXIaW C- ^Y1)l|tKA_X\LpSTsLQqKHrm=VH.16`#LYE9e w   F!"$8%'%(D()p)g)e(b'$# !66U #8EUu&2v*J/yeEI${ FR|4(M1>U2DZvDu}py  K=~ =u`#@`M ^ c[}*["2(rTQWHJ2J6u QaPTU,5JC5t`SK  vDm !9xL8xDO![>rOzeP+TI87rgO 'mWI# #%(q]N7 ] X  _ ( f  y qu%cE3i)`.`%!vke0)QM pj=9Zb^B=76-)-3/-0>Slzm3Nvdar2&?A%8:?92#BoM\Uc1Ih{'J8D0%7MpO 0y} #Nqhkm9=5f  ZZJ!j+<T<6^:mhzO_*_/:&V8#aLh!aPAq ^b\BsQ8T<R6!_6Q?IgR#-qkVh_SL%*Kx)/3," l6<X|7ITB*SA5ozq\?#52eD=MuF?Nc.Q&tzD! 3Np#a.LI#bk.!W [ &~ OC>- KW.--(G-FwI[YrFo][fdhteD51CPm" n2R8wX<"iOO) @ 9?kD&0Um5#=,Iotmru}la_[dt>S2gwBm- [Z5H+,?G1qeH*#0oc ,g8~wuy~zvpcbmXlIzxVf( ob*:&'$_3ST^/:+z[ pDw1Qxkd[ZYbj{W) D4I_<?Qeu0H# 7 <S2nO]H  u}s/{R!hi60Zwkloi> Af&0^$s]0'~}3>5" AM/mu:nJ6 `iDL SzS4 *Jm{`F(?pY=Jbx/!+hp@(0!$<0-ei;bu'"2/HZ) 2SnkJ47C^vhM2("=iZ:, e.eh Vm&'(<) JeQ!9xd%?<-%0M*/=Uk~uaTGM^x|fG62EUrdA-*A~0bk FolG'  2?%@KE2#%5VzO"*mlqG;-24Fb}ufk~gLLajE/,(4;]'1K.ZlV,'%  -J3 4NQ@*%3TtsO=EuptX0&!4JezrnhsrV@277Lkw6X $Si`M1"  + ;9$)BJB65H`batWAYDI]C6?ES_r}~sb][_agj{PJh8?[dT<@C2 $  &<;" -M[I4;Q]fr|qVG_L BmJA?OVh{gXSOUZlR\u:!2LXSG983 +&  /A0B`V;5BYmplteKQ{b"1usZTadmv}rnfaXZaxOIo<",IPJB;>=1+D* $ 9B2 F\ZK>E\r|aIUe24e|wty{~vuyxGD}m?+3DUPEGID6"!3. ' &CI1 %OldJ>JkhRUu{D(/`u: %PR0)<W\RGCQXH.0:, +).BK@$4\mfQCMh{ygW]sY<D]iB-AgeI@LX_XNNQTL5#$0;6 !16*-QbG%#>atkQ>Ehyw|wfXbvVG[}{}~W46SbQZkwmYLKV[N8(&4>6" "4'  .4/%&BWN8.6JcsoXK_~jam`V`~gTQfjSUfnkaTRTVO>13=B;)!%  -;4)-9DIC<8Fhxddq}yijxp^dtzxtsgpv_U\hodURW\ZM>47GPD,   &-/03>GID9<Wrvkgio}|wvpc`osghjwuqsvvqgafi_N?87>JI5#'    2879=FJDAHWcjnmimx{te``qrc`dowzzuopxnov{s[C;@EHE9'#)*#!"  (/38=CFFFFN]mz|slr{uu}~siadlxrmov~~wuy{okowzueRGIQTOF9-&%(*'  */*$"&0:@BCIOMPZj{ulo{st}xmjqx}zpg`fp{uu|~}o_YbryrbSNTZ]ZPG?:62.*#   5[thC Dhs]B( 7PZQI9$"?h}`IET]n}tj^PIEKPYbmy}k^SGA>CJTZ`ltslihegmu~vpic]SQ[bZNMLB::DPTL;1-,*!  "X|uGFp{h<9[f[9 DrsN47IjwrqhYG>;DN\jv|rkd]XUUSTWZZ[^gvulaUPLUetxsqnlic^_`[VY[UI:5<IQNB1+(" .]L+\}|V,+OgmS-?bgC.6Hiy^KKSOLNXdmrnlcYNC@>GRboy|hQA@DR]gquxpaTQX[bmuysi\PLNVZYWM>40:LUM5  [^'l^$1^z].Qb( M{xbP=8>JILZm}|kZG2&(2F]ttQ4'#-E]skXOKTbowspcOBEONJMMJ@0*7GJ: IO,lT&%NtvQ(9^qoR18roUEFFQ]mqh\K;0+'))2@Ralw}tcO5"2UuoZLFQ^qzZIC9=M\bR3,BI<,q~N)vQ5fvJ#!Gmf7 >T(!=UosV64I_v~oc]Z`fo{xdF)Jq{]FBE]rZE22@S_W@$,BG1exN3Q$$CriB$'@asfG&!Er~T$OynP4 1Oi||rdVJ?;;?@DIS_irmdP7&+7Rxb;*.Jeu}iE"/J_U2 "+' QmI8_TT(!Hvl7ch#V_(DyoWC;4412783)&?]wjQ: #<jR# +VxuZ+)YjR&# e;'xY>{eD)1PehL 9pb1!Qh3 4PmubSJB@?ADEA=??8-/E`y~Q$>q`- Dfl[04PM9 5 iF1g}[$ =]ue58z}7]9LnE'  !;P]ijg``_YL=/%#&0Km_^s, Fyl**ZhFOD 1dpU+ Fad[;HqsT%AH ;wn> +H_npP. >xe=z/4ftMDP= 5U >kvS#(NkiI' X{j0Y]rx%T:q#.:ANY_eqvT.\Mr '}a /I5uU%`hH##IdaD(9G4^}{B.6|3 7dscQC74/4>JTRH93* P_~zQoV*%A-OW %Uh@ %GZT5.=*jSiMn/hr&ihK2 $4@SaogT/ ^']%9Ygv$2hm9"6 `\'#av\) M\K-1=!`i(5Am5`mX:&FRb_aC %&y^7 Sh= /=Xj6A]I %8# !&OmcjZyM,  %-.-+)06Rz$6| Xf%Hzn(MVe- Ad]336nW=xPx2kR`?okd0h4)?HWx (U{WF Tu/h>n?AT->]Q#g7vv0%6  6m5!GzMw}f9 myz !DRHC;6xNAU GM5 u9!D:<>pvE"^ "Fj)j  S j u AR A 0 m> "- \~T1"%,!  ONH;LhE( r r Y `  , 3p~uSEOv^.aini >$Mp9ucL c"Ls]gP x/I c DHFy;BygoF0~-aO=nU H  ; {Tn!Mg qlhbKttg-$qK q + $uGhS8 ![!"7"L"]!!d 2 > P M . ( N !!;!""#$%%R%%%x$$ "!.h.)[ H P dFs_O)O#~c8^# Q$"% 8fscR1 !"l##$$%8&'( ))*+Y+,,Y,0++_++++k+,,,,,\,,,--4-z. ./w/////\.-,+j)(r'%$"W  eG~tBO v $XF]]U#B X KXrW(yv? H 0 !"7$&$($)*+~,=,-.:./o001q2`3Z4^5`6367w88,87788y899&999b999999:a; ;;;;f::G9`8}7=54X3'21/.;,N*F'%#P!C. F%=  W^"mr ? <u a)#&$(;)*,.023456I7789:*:;p@AwBCDETEEE:EE#E\EEEZEEE7EEEEjEEFhG1GH7HGGHFE{DPB@>=hpf*b&=# GLlF."&*.0`2r4 57:;=I>-? ?@ABC|D3DEeFPGwIJLEMOWPQbR3RLRQwQPPPPXOOgO,OIz:731/b.../002:3679;>YAyE HdKNQTVXZW[\]^^t^_Q_``Y`aubmcegWhjkhl3llmllZkkOkjj@ii2hh9h ggg1ff5eeef4feffggMgcggcff4edcbTa+_^])[YXUSQaOMMgKIGEhB?==:r741.+)1'%"l7 nHE.A><:y99C9:U;alkkEjii#h&fed6baF_][YWU8ROqLoIG;DA><497t4X0,#'#\nz&w ZXHUSRQOOnOOOQ&RTOUWYq[]_aAbe1gikslm`noup^pppooAoo5oNoopppqr=rs]sttQt~t]t6ssarrrqapooPnnenmmqmlllmm\mmn!nPnenvn`nFn mmmmnn-nxnnn$mmlmkjihgfWdb`_]ZXU)R~PWN=KHFFCAd>m:691-)]%|!rs-bG``^`\u['ZYYPYZW[]^` ac_e8fghj,kmo:ppq"rrsdsgs8rr!qqr5rrsscstWuu~uuuvvuuNttsrrFqmpxonn+mmmNlllllmnnooeoopooooPoCotoppxqqqrrqppLooInmlkijgf dSb`L][YXVSQ NULI%Ez@<373/+'$ !0tfe+cbaa```s`abdeifgi}jklfm:nMopqqrrs:sttsscrrsQst\tttu/uv_vvvvvvFuu't^srr,qVp`oVnFmzlllCl$kkkllm=mnoTopDpppppptpzpq"q[qr;rstt@ssqrrerqppnmkuihgAecbJ`_^m\ZWUROfJFiA=:N6k2/,)]jmixhggXgffggi ijlmVnop!pqcrmsgst%ttItuutuusu&ttu!uvmvvvvvw]wwwwwTvvuut$sCr[q|ponmll0kkkkJk?kFkl@mmnop'pqeqrr4r&rrr?rssystuYuvcv^v!uuBttt'sqr.po8mlkjihgffsecca[_9\PY;U*PL.HDDA%=964kkjj!iiiiijzkllno@pQqqr>sdt~u?uwuuuuv6vdvtvKuuv vwTwx wwwwwxwwwQvvWutt,sCr_qpoo(nrmmlllulel9l7lGlm-mnoGopq,qr;r}rrrrrs0st tuuv!vvvvvBuuu"tsrBponmmoll:kkjjbiigqe|b`'\XTQ MJGD@A?>mlllzllqlWl-lhlmn noqqrsothuvwewlwwmw^wSwcwewDwvvw#wxWxxxxxxxxpxwvvGuutsrr"qXppoonnmmmnnIngnnoop ppq9qtqrrUrzrrrrssast(tuv+vwwOw{wcwKvvvqhr+rt uhvwx>xSx{xXx$wwwwxwAwwwSwxxPxrxfxaxIx;xwwvv!uUtwsrqq3ppBooofo>oo"oKopplpqqPqqrrOrTr=r qqqqqqqqr rGr^rsxtQuuluuvvDvkvJvuu8tts2r[qpppRp$ooooioHn[mji#fda_=\ZXVTyRSnmnnNnnnnnoohopKq&r(rstvYwx?xxy xxx-wwwwZw3w:wKwwwx wwwwwwUvvFutt&sErVqfpp0ooooiosooppkpq3qqrr8rorrrlr1qqq_qppppppppq!qrhrs>sksst`tttthtssdrrPqq:ppppppppp+o7mljJhfdba>_^p\[>nn}nnoJosoopp)pupq~r$rsrtBumvwxxxxxux-wwww]w2wvvvvwvvvVv%v(v"uuuttassr1qeppwpMpoopp=ppqq`qqr2rWr[ror\r6qqqSqppbp ooooopo'nooxpp^pppqrrrsrrrPr&qqqppppq q@q>qqIqpfo mljigfse+d5cObkabofo/opopDppq.qzqqrTrsOst/tuvwtwxZxxx8wwwwkw_wGw vvvvvzv urtttttvt2tsssSrqqKqpppppqqCqqr;rrs@sessesHrrsqq|q!ppgoo|oEo?oPonymmTmpmnZnnnoGopqZqqqqqiqZqEqppppqFqr8rfr`rrr)q onmlAkihhPgggp#op2pq:qrrrs3s|ttttuPuvw wwwxxCx:wwww[wAwEw$vvLv uuu`tssrrrrrrwrkrmrrrrrrrsjt tuuv*vwmww%vutZrq5ponMmm>m3mmqqqrsstauJvvwDwx|xyy,yyyyayFy,xxxcxww&vvvUutsrqqp!nmllYlllllUlmQnYnoup"q&r\stupv.vwwx5xxxxHxmxxNwvut?s qpo2mlkkskPk#j{iiijjk^klPlmo"ppqEqr'rrrrrsRstu`vvwxxxxGwvuwsrAqoo[nnonjnoYqnq?qr"s0tRuyvkw$wxyvwQx'xy(xx;w6vhutusrrrirqrrs7oTo1opqqsu-vlwRxfy9yzX{%{{{0zzzEyyMxxww$vput~sZqom,j/fc`r]7ZWVITT?SU"VWX[G^ae_hlpswxzt{{||D{{{zzznyxw:urol2h~d`];Z!XV TSSdS-TVZY6[^i`cfilnpqrssrs{sst]u,vvw@wxQxy:98889:$;=AXDoHMURX^]d=isnzr5uxzz{j{X{@ztyx^w sp;jd^WQKLE@`<9889:|<]>$AFKPV[O`fMk orttuvjvsv2vBvw/wxBx{xxyy/xxJwwww;vuuvuuvppq|rFsHt9tu{u}u.ttttttsssssssFsrrqp_mJjTe`TYS-LFT@;732K1T1123;469 DKRKYaglrhuxky+z%yyxx"v"t`p_kd]FUM0E>82-*8)(*=+9-/T3S8\?@ELS@Y`wfko qr(sUsss-s sHstKttttuauuuvvvwvvuuuuuurrssttuPuyuuAtgsbrr|rqq9ppq$qBqHq2qqZqPq`p nwjf`ZPRK/Cnm5i:d^NWOG@n82,v(%6$H#z##$$$%(+*/4;BKSq[HbhnrIuwxxxwvwtr3mhK`=XQOF>60)%I"!!E")"$%).64=EMIT\DbiKmVpYpqqqqeqq5qr"rrrrrs3skssttuGuttu_uuuuauhupuuu_ttsrqEpqoodnn@mmnnn*n nnnoml$h:c]2VOGq@82,(%$#$$$e$j%M&l)$+0k5Z60-)O%D"h"e""#G$%)W-5<(D2KS[#ahlopqqqq5pqqjqrnrrrprrss&sCst_ttttuguvvXvvv5uustt)srqCoonmmNllVl1lYlrlllmvmmlk@gyc\V*NG@M9.37-)?&>%r$S$N$M$%&%'b*,,16=DLKAR_Y_ej;mmpdqsYstsIrpoPk>e^&VNF1>G603)o%"""##%)&)u-4;xCfKRZ)`gko>pq&q,q/pppqAqrWrrrsrrrrss_tttttuv0vvwwvdutt s&rfqeonmm\ll(kkTk6kdkkkl8lmYmljkwl)llZkhd^WPzI%A:T3-Y)D%%s%&&=&')y-)1^7>5ELSZ`fjmnpp>p\ppp p_pq=qqqqrr_rrsDttu!u[uvwx;xww+vtsrqpon=mlBkkQjjjjkkMkllym>mml{k>h d_ZUwOIC=73/.X,?+,,./25:4>CINSVeY\_b6dLeeenewefh'iijDgd/^XTQJCq:pKoJmllkk$jjjjkkCkklZmmSmel>khVe0`\WSMGB7CIOTOX```abd f!gQhdfc]XR"KD=60+'M& %`&'),[05;BJICP"Vy\afjlmojop"oootokoopp6p^pq(qr#rs&t'u&uv%vwyyzwwutsrqponmllhkkkAkmLml$kOi}gddaau^ ZVRMsHC(>;Q76579=AG6M SYA]w`aib*a=`=^u\[&Z+ZjZ\]1_*acf ed`\pV$P'ISB;T40J+*){+-00e38}=LCHNT~Y^c g$il*mkoopCpooyoNoioop&pipqEqrr=rstuiuvwy[z{xwwvut&sdrqpp oFnn(mmmmmmmmmmmmlkjmhfEca^[uWS3N\IE!A><<;=R?CFLQWK]`ccdbZ`^[YXYYTZ\^D`cVeff'c1_YT)MF@:6J10L/237u; ?D#INSW\^`dYgilm7notooo|onno6oop9pq$qxqqrMs3tGtuvgwy!z{yCxwvuu7tssrBqzpp-ooZooo&o7onnnnnnKmulkaihf+db:_\XT?OKH8DC2BCEaI7LQ}V[`d#ffesc`]ZXW2WbWXZ_\_bWe8fpgaeRb]qXRLlFA(=R9779;?nCTGKPT_cHf hjSlm n|o1oo_nnn3nAnhno op+pqqTqeqrstusvWwy2z|-yy xnwvvEuutcsrr)qq'pppppppXp(ooolon4m[lji,gfdb`l\Y6U7QNKJHJ0KOORbV[Z_cf)h g@fxxkwwww,vuu7t}ssses!rrrrrBqqpooanmlkjRiZhh8gmfwdoa^\WZY&ZE\^adg5hhh ec_I[XTReONNQESWZ]`bdfhhijkUkl]lm+mll!kFjj1jEj9jklmmndnno$pqrrgsctruwsy zxxxxUxxwww&vuu%ttFtssssus(rqqpJonn2mlkjiiiei!hgecaaY_]\&ZZZ\]C_boehtj"kjigec3`Q]\)[Z[T\j^acfhj5j ih eb_\YWUUVUXZZ]~`cWeg\i ijjkk~kkll7l@kkjjiwi"iEiDijOkClHmmmmnnp'qr stauwsywwwwwZwmwfw3vvuXtt]tsssssos&rzqppobnn mlkk jjnjojqjihgecbnaA`__`=`b~dgjRkm_mlxjifdb~``P_[_`ce6giklll}ki8fca%^u\[F[v[]_be*g_ifjkkkkkllllkkkekjiifi,i_iqijkol]lmQmNm8mn;oPppqrtGuw vvvvvvvvvuUtt#ssss{sbs|s|s]rr qp_oonnmllkkkllwlklkjhgg f5eeeefh1jtln;oco$nmLljhfee dldegiMk%m9nooonmQkhf>dbb1bc dkfhKjUkmun nTmmllllllflIlkkKjjj iiiijJjklmmMm/mm4mnoyp8pqstu_u.uiu^uTuEugu^u*tss?rrrrrrs&sZss&r~qppuooo@nn mmJm`mammnmmll]kkk>kAktkkkln)opqqbponmljiioiij[klnop7qrnrsrrqolji!hh&hhi:jllmnooonnQmmmmXm-mlll9kkk4jjkk,kl lmnn8nmnn{oAop\pqrhs&tst$ttttsssreqqqr rOrhrrsLssprqqSppplpDpoonnnno$oVooo\o?oNoopCpqUqRqIqrAs4stTssZrXqponpmlllmmnoq0rsttusu&tWrpo@nmmtmm+mRno$opqBq;poo0nnnpnPn@n2n mmym5lllGl:llltlm=mno"oXoq q qppp2poooooooop/pq5qrst{tuuAuuv4vDuu t s6rVq`pyonnoogpbqrrstuv+vvvt}sqq poonnoopFpqq pwooXo@nnnooonnnrn4mmmmmn5noipppppppqAqgqqqqqqpNqqHqqqqHppDoooopcpqOqrhrsspsr@qqpqVqvqqqZqpppppVpp0ppq%qr[sIttuvwQwxx.xhx9wwvPu]tssrr9qqYq>qqrts9t-uuvw3wwwYv u't6sVrqq p=ooppqpq pp;ooOoMnnno.oLoLoMo9oonooo#o7oppqkqrMrbrfrNrVrXrSr-r qqXpp[mcnozp-pVppDooWnnnoXopTpqNrrsBs;rrMqqqqqqq}qGq"qqppEoop"p^pqqrsu:vGw(wxaxyxxwv2uKt]srr?qqrrrs_ttuxv+wwx0x wvutsrqppooSoopEpnp(oonnnnnnnooo3oJoTomoooppXpqTqrsswsssFsrrHqq pnmlrjlmnoOooo.nnZnSngno9op/pqr`rsrrYqqqqqqqqOq!pppooXo oRopTpqqrdsuvCwAwxxy>xxMw1vYutsrr4qqrrs[ttuvwxzxy;xxdwevkuCt#srq&p)ooeoop!p ooHnnnnunbnooo&oLooopIppq qur rs%st ttttsrr ponlQjhehjlmm+nn2n.mmmnneno]opiqYr8rrrrr:rr rqqq5pppphpoSnn"n5noIopxqVrsu;v=vwBwmwwvutts{rqq pFpIpqrjsmtuvwxxyxxwutsrqqp oo~oooooHo nnnnznno(oj jj j]jkllmInnoqr s sss~srr3qqq8pp|pooooosonnnoo^ohojoop#pqqqr@rstbtuYuGuKu u-tJrolhd`f[VrQKcEF/KPTX[^`gb*d5/a)#&T+059=@D FIL9NPRwSUWgY=Z[\]_;`bbc"cUcdSe#ef)fe\dcbbEaa-`u`6`eaaaam_^\ 7j0*$3!%*:-15(8;T=@7BDFGGIxKuMrOPoQS TVXTYoYZ*Z[W\A])]a]6\X[ZZYY XWWWX^XXuWUTQOPLmIECA?i>=<;O:g:z:~;tg@D$GLAP5SW[3^I`MbcBdfYgiBjkylfmBnQo3p pJp=oooo}nn0m#l3k`jjih-g_fgffe9cU`^a[jXSMFf?9|2,&] 0LF4"&e),/2|479:@B%CEYFHQJ?LeN$OyPPQQRSTSS R*QAPP'OO_NNbNNOSNMtKHF(C@=:87.6(54o33 3338346p8r;?VC[FJWN QiTWY&Z\_7aceg+hik\lmmnmnnmmBlrk]jjithgf7dccbWaa`=^*[zXUdRNI B;4.(!@: | pF>"$'y)+-/12468B9:<>v@BUCDELEFGzHIH|HgGFEDD}DCC[CCKCCCA?X<9734z1/E-<,\+++:***+ +,@-/2f58;>AE6HgK'MORbU#X Z]%_`bedTegghhRhhhh6gvf^e_d:c.a`0^B\?ZYZXVSPLJFB=R7]0*x$d pR  "pY "V$.%')<*,-/r125 68k9f:d;+;561k+%vF  9B+ s : f}.7w d!#$&F(*+-M.S/e0?1@12b2511 0s//.]---n-m---,+)'$" oZEs$ #&*"-1g47:=@CF*HJLNQSTV^WXYZ,ZZzYX>VUSQOOLIGME{C@=:Z63/+o&c!fLu wKC3D =U ~ QbH2 " #$4% %&q&&&+%_$$H##1""[""!"Y"""! 9u0de F ? 1 \ e @+<  D#' *\-a0"258;=?ACEGJ,KMNPPQQQPNMXKIGDA?2<:8P52;/3+(R$F Ag 6AQLfzN`N 7 }{cWw@)7Sr~wpO> = X 5"\ B a0aD!#& (~*-/2E4D6 79x@AABDXE7F.EE%ClB2@><8964&1/z-*'%!c  `-{.)_47j!  @81c,<wm8) <V6q M-;X"/$&(*,.1<3W46f789::::87530.,")t&$%!r_` uxfZxvB-RqZ/%_|` - `   S ~ T x i3']@k 00ff & bp "$&(t)+,1-}.o/e/m/8-,*(&`$"aMn  |PpVJ ~(lu-q-[D:KIGm\>f;WujhI?Hy';N^2ntg~Y cKMT%8[* z!# $@$\$ " "D=mo; P #<}Dq&;y%FG0 1mr0 [O Yc#]!*+%)<T^g{m ^ { 8r1$U d M E  .x!UTz-$sOH}Z 4M`GV!`v9:"6/]crhX3yhq[M*u:{ h So-%+ t  >OqdjS4!K T<hDr Q,O"Gz[,{eS+#%*,-)%$!E}0RysU3@ V  H  ! GJVRtC>|4e*{X*[*:x;4dHj \Vpq\HI:2/6>FIG>FgX J+&^T:{ CMYl'lr. ?:7>u&@ xdmda)GXl K:R>6FW|T -wt%"``;Qi#(bs|I'TCB d4*H"5;g?{t\Z'^ }-9]C,oXz5v_,ows@$8$~XBi3F6"  l@VPTdK#ohHNTZR,{,T !$ L0RPMx7$ YRLfqvV@#8;lG LRzF2?_;/ zD;Xyh=*XE/ [_0mB}~M8;J[-6@2O$.nOUS#xSpc`jims]@85ENj% s (D xc= mKE'86<lO44[f x1,Q oxmpyp`\Zgw=R/tZOt/ de0D#'?I9ueS++( hT h;~xwwyyyyvieoP~[rcw&9%tn-> &c5VTn,A &tS|bLx4&Uxh_UTYfkxc1 H >;\DG[$gv8L) 1 BU1mRoM lt.vF,oi<=dsccltQ"H^#Pv^0*}185%FO0nw<!sP9y^\3PY}V7#)0NvfH/,'AmZ@ >a6,0ktD#,'&@5 2jj:]w*.)7M- &<]ugK35Hh}v[8($AfbD5'l.tr ao+ +,@.TmV) ;xh)48%-P/!6CYow`SNYexjN>5DXylL7#/A|+kp!QumH '"!5A0NWQ>-.<\PeirJ?159Lf}rr~eLNaxS<85@@[#)M-]qX)&"/L2 =WZF0*8XxuJ3<qg v\5*%9Ng{uokwy[D5:>Tn,a" $WofP1 #"0 !>9"+HND65IacdxxL9W5LbF9BGT^pvd[UXYbk_ByH##B_k^FFE3 + )>< 4S]I3;R_iszgOFaHGnLCBRYiqaYQV[oWSyC$$3MWSK>;2*(  2F3 !JfY=5B[pphlvdMT|g+8yu^Yejs{||umcelK@|h9",GNH>6>@1%@( >G5 &Ma\H:D^r}{wx^HSf5:l{x{xz}IAzi;+8JXSGHJK@'1. & +HM4,VpcF;Jl{y|aJMnyF.9j{@$&PW0*Bci\NIWaU<%0=/ '%5JPC)">cqeOBOj}wu`S\v[CNepH1@cjI>J\haSRUXR>+'.:8-6*!6XfM/.GhylP@Igxzujamx]M]}d?<R|cPTesm\OKUZM9*(2:3" 1"  15/).GZS?4;RkvmXN_y}oivgYcl[VgnVT`hhaWVXYRA59CF=-#( " 1;7.0:HNE<=Nk~vd`jw}v{nnzsbix{ymepxd\`hk_SSZbaTD9=P[M3""   *3767DOKB;C[psiabiz}xqgdquhjn|~usuwrh_]dibRB:9AOO: "% )=@<AHKJGGKUahheclx~wgbdt|mimxyoo}rdfpxr[D:>DHF:&""  &"157@HHFHLJN\lsqjhp|{vlfil{{voot}ywz}phiszvfUJKRTPH</&%'&!  +-&#%(1?IGCKTQPZitwungk|zvx~yrqw~}vmacp{ttz{||}~td^dqzvfVSZ_`\TLE?:60+#  1Wna<:`n^F.'B]g[L7 !>b|rV?;KTfwpg]OFCIOYcmx|hYL?;8AN\fmz}soldafq{}tleb^RLWaYLLMB:=GOOI;.&'(  Rul>>gsfA!Cgsf? ItlJ24FfypjkbUF=9CN^o{yqi_WPLGHJQV]ep~sdQGDPcrvoiddbXPSXSOW^YMB=?FOM=)"  *TyB %TsrO*0Xt{^5 !@b~y[6#-?^{x[EDPMLQ[dinli`TI?<=FR`mv|lZKJO\foxytfVMKSX_hnupdTKJKQY[WL?6/5HRH.  U}T!c~S5cj7 $UT>kj[N:3:JKPar}zveR;$(@YqaD3&+4KcwwaOHGS`mxwrcRGGMLJJGD<*"0BE4  MzG+iK&Sz_4!CesoP.1igM;;>KVe{rj^J7,*%&'0=O_lux{~q[A,5Oj|kXLCKZotWE=6=MZ`P.&<B3 6w~J )vJ3hV/+Uzf6 @V*5MhpS4$;Sh}}iWNIQYhzsR2>fz]B:=UshP<-2DXdX= &:=&  m|L -~J5lrL14OquN%$ElqH@inQ4 /Lg{ul`QC7439<EQ`pz~t\A+*Ip_8''A^qxc@ 1IYN,   WsI+|V =nW0"-WE dV Cf.Gv}`F50+-/38:72-2;RprN.1_U& ,XwrW)&RaK mBkS.gwcG/';\u|`. <sY*E}d4 .OnsaSJ?<<?@?:5551,'*.>TnsF 9n](?ena6.IG5?`D.[nS)'FiuI>~8 [}7 B}oF) ,DXbje[OKJFA?<50+2;Su[ XiE~w4$Sb@ K? 0^aC"&LjqjL%'PtuT$ ;|F5nqA-H\kkZC)Csd9w);o}Q?K76L<hnA)SptY9$ <mn3QEjjM:t++8<FMPXj~yfN0M Ko/_+E2wK(cjFNkgQ3#,EY^@\xo2& )5<c|r`J910&%2EOUdieSH1Ia}y VpR&=) ZN#XlE Ac_>"*E]NkSj <\#hs+lrS5AcwzmC ])c))FWw-7gk7- 'fVYqV$ 2NP5(GQA_b#|,q1o5dl[D"Doc.(.sjD Qf;5<Er^( !:6>O7\]}  6[VaWR* ZkXg0Wp%5[Sd, )OQ+ *9cJKv4fHV;mkc.l< -L]lY#:q4qubN[s5vM|K>P%$GA +u(_a#+\# )W0Ut]9k$+=zIz?~OLEP6H{'9(  G0HtDA,_zM$,Mix &9Lb{vS3u#x!| wO}O^B&' XAu  1 C A 2   (  a Y .* u r 4@HPgwn@ , ] <uq ?>~R=qAP-gDMyi_q;OCf  <Gov6[Dr~odq&7WC?  @ nnPlMrRHykjjZR( ;v,B6F` v  $ N{ @1Jw c!'!!!!!K l&Fmy  x  0 E l E PW<u~ H R a5aaR1[}; ,^ U t V=Wq !"}#:#$%&'()*+;+++++t+***++Q+}++++,%,++4***~*z*k*]*L*;*A*))O('&%Q$ "!= q qH@ | ` qBH.\~z0,~ E vJKSAlT -8$#+ T"%&(D)9*8+%,C-N.5./0n1G2H3U4c5q6?67U78877788\888888988d77M7666f6&555?44{33$2<1[0X/e.:-+u)'%y#d!v( % g BY , / K}X D :YKtz!#%q'*7,/02"3%4F5x68*969:;X<<=u>@0ABCD~EJEEEEDEEE5E3E DDDDDDDCC"BBBBBwB8AAs@@.?'> <;:w9q8W7=54 1/-|+@)$'%3#_!c(H(s  7^ & BKxfH{/ /"&N)+v-s/2Q47<9P:<0=a>@.AC,D7DEFlGI#JL|N-OPQcR.RaR`QQaPPPgPOONNNNNTMMmM!MMMEMuMMMPM#LKJI0GFDCYB,A?>:&$"QzJKYb V"r%(,/25t7:=I?ACElFH!IK?LNBO/OPQS;U1W#XZ\]"]^&^]]$\[[[>ZZXYY;XXXX4WWVVVWWbWWWXWWnVcU2SQP?NM7KJwHG3EZC!@>_;976v420.,*);'&$g!E;   l{y1D-*(C&$##"#$!%!%&y''(s)*O+.,1Q4C7o:=@CFJHJLNgOQ#RFSUVWX\YY[Q\^`byddeef"eepdd$cc:bb|aaa``s`__;^^]]]]^V^_"_x_``_^]}\'ZXW[UTkRQ=O}MtK]IFDBA6?=<&:754323/,)&$y"W ,Vi T<95361m/}..)./z012]334+5 68:M=H?BFUIMORWTIVQWYZ[\m]y^_`^aacdvfgi\jkl}mm/mbm6llmkkskj}iiKhh ggffeWddxdddeZefPfg>g~ggtgf*e>cba0_^C\[hYXUVTvR\PXN}LKIeGECA|?=Q:8=5[2m/-'*(T%.!s: ~4QGDA!>s<::<9:;F<=>?S?@NASBDFI$KaN;QU*X ZC\N]_a%b|c6cddeIefg2h#i&jWklmnoSop(pPpppsp!ooenn3mxllkijjaiiMhhhSh|hiijjyjk;kkkk{kFjj>i|hgfeKdba`_f]\ZbXWBUSQP'N\LTJ=GEuB@h=:8;5330&,)%m! , RiOL?IHFiEEFKGHmIKKLLMOjQZRTVYg\_bce@fh3iajmjjjk@kl&lm]nnop{q;qrVrsscsssss>srr1qfpoonfmm5ll%kkkl#lolmgmn[nno(oYoJo#nnn mm;lkjihh gedcbqa_w][ZFXVTRrOMaK&HFC@\=|:{63)/+ &"I/\ ZWUSRRPPxP1PQS3TUVVWYZk[\^_bdfh6i,jpklmnmnnnnoNopkpq^qr,rs=ssstt;t9t"sss*rrqq&pHotnn1mllkl-llOlm&mn=no}op:pppppp?pooooKnn7m{ll"kujjiZhgfedca`3^] ZXwVTR OLJ8G.DU@=c9=5/0,(=# :b`_^h\[[ [Z[\^5_a aabcdef@ghWiklmn*o opq8qqqqqrs)stt[tuuuuuuu_u@tttssrr3qspyonmmxll[kkklm mnocpQqqqrNrfrrsrSr(rrqqqqqq]ppgoo\o nnmlkGih\g=fdb`^] [qYWZTQ~NKH-D ?;^72.~*&# YgedLcvv uStsrqpoonlmm lflkkkfkEk7kklmgn1nopqrs[ttxtuutttuuAu\u~uvvRvsvuv>v uuu=tsqrEqpoann?mmllkkk|jhzffca_=\X*TQMJGLD@ooooCoooopWqr rs}tu[uv&vw/xxxxxxxxxwxGxwwwgwzwxx6x2xwwwwww`vuu#t>snrqponnCmmglllvlllm mMmnvo4op}qqrJrs_sttQtttttttuLuuvbvwwGw{wsw`wvvZutsrqqpp-ooo!nnnnYlk0hgWeAb_|\bYjVT'QPNUKPo|oHoop5pVpcpspq;qrsXtVu;uv?wx y yyyyywyUy#xxx_xwwwwwwwwpw5vvvvv_utss r=qbpZotnnVnnmmm[mmncno-op]qqrTrrs"stsssLs/s&ss+sQsksOsAsWst3tuLuuvvfvvvev(uutfsrr qYppzp;poooofoKnnmk@ih"f6ca{_&]$[3YVTHoopppqqq1qlqr1rstuYuvwxyz zfz9zyyyfyxxxx1wwwwbwqcqr@rsSst tFttutttYss\rr`qq%ppp^p[pUpPpAp'pPoomlkkihGfdcvb`^],o^omop]ppqq5qkqrrstItuv5wExKyy_yyyVy xxxzx8xwww9vvvOv uu0tt7tt)tssjrrreqq!pIoonnnn[nbn}nokppppqYqrVrrs rrrrr%qpphooroEoMo'o)oIooplpqCqqr3rurrrrrtttttZsrrr*qppDoonnn`mmDmmCmnn~no oLop*pspppppppppq5qqrrs%sssssrqp)o0n|mll*kkkkcoUopopApq4qqrGrsttuRuv:vwrwxxxwwww_wMwIwVwzwawvxvuhtsrqpRooonnnnno oEooop(pq qrryrslstptuuuv>v@v+utssirr:qtpooDnnnn4mm&mm0mnnunnoBop&pkpq q6qOq{qqqross[stItutuuuutsLqpwonn%mjm"mmsmoPoZoopqqr rsstuv?vw8wxx$x>x+x wwwwOw8wHw^wkw+vvuttsqpon@mmmmm6mm:mnPno6opEqqrsttu.uuv$vGvvwPw^wPvuutLsrqponn_nFnNmmm$mmmXmn9n_nnoppbpq8qqr,rorrst2tu.uvEvwXww#vutrqIp6o?nmmmn-no!ooHop pqrrrstuvw3wxGxxxx~xTxwww[www%wEw?vvsuu"tRsrtq onmNlmllukklIm!mnsnopqrtu uvsvwNw~wwwxxRx;xw[v|uZtrsorAqonmmm]mum?mmm%m2m]mmmnn`no(oppq'qrr{rsTstu|vvw,wxuxx;wvusr9qponnnoJponooEopqrKs/t.uLvzwrx;xyeyyy&xxxbwwwqw0ww=wHwvv$udtsrqlonlkkkk2jjjklmnoJpNqrtduvwx,xvxxxxxxxxxmwvu`t7rq@onlkjjfjGiijVjkekll\llmimnZnoUopqTqrBrs1stuv:vw?x xxx~x/w7vt~rqpppoopqq#onoo*opqrstv$wVxQyHyzzzQyyyOxxPwwww~www=vv#uVtns-rpnlkijj-j iiijkqlnocprsuvwyyz"z*z:zyyymyYyOyxxw,utcrpnljigffveefTgbhGiij.jkljm1mninopUqqrrarstYuJvvwwxxxx@wPvOu srqqqZqaqtqroo[o|op/q+rxsrttuvwxzz{%zzz>zyy6xxExwwwww,v_utssqpnkihJg]f]fefjgh?inklnprtvCxyVz{{~{f{\{zz-yyyyyYxwvtxr&olj;ge_ca`__`abdpefh-ikPln nopAqqrarrs=?^@CFKOUZ_dWimq,tuLvw!wx/x wwwxxpxxxxxxxwwwBvv_uttttttttttu7uuv@v_v1uuudutuoutttwtNt;t@tYtktpttYsqplhc^yXSwN~IUE3A>=s=>;?|@lAC5EHM`QV[`ejpswLxz{z{&zzzyxwu?rfm9g{`rYS;LF@gEMOT\Vbinqs:ttu"utt;ttt?ttttttttuu*uauuuXtttthssuuuuuZutttfsor0qHppoo\o#nnnnnoHopgpp omRjf,a!ZWSL3E>U7c2-.*((()*,T-049? ELSZahmru7wx}yyyxxv"tpl@d]TLBD,<^5.*&L%q$d%&q)-v39AIjQeYa`zglprlsttytOtssussttStktHttt@tItittujuu9ttttnssuuu6ttAssBs#rqpYonnn5mmpm8lllllm>nnnnFmkid`Y[RKYD;=n6G0+(&u&%&'i)*-17S=>DYKNRsY`7flpsuqvjwwwvv0tasoBjc[RJB:43-0(%t%$n%&c)Z,28@sHPW_fUkeoqpssKsssss=s'sQsstXt{tct.t*t;t2tCtetu>uyu.tttttft uuhtssrBqqWponamull4kktkHjjjjjkil[m mXllYjth@c_XR"JC=5/*(%V$#$%&(x,/5;CDJNOTXi\r_cQeghhgg|ghijkkWhe`_3Y;R-KDD0<6/+(''l)+#.28>ELSZG_ei'l9m\nnoaopouoioloopq qwqqr/rrsOst tuv/vNvw&wwx3tsrqpCon6mm#lekkjjIj,j9jnjjjhjhjkklKll)kjicfd#`M\sWRM@G+AX?SOMHCd?<;x:;<>hAIFK:PVJZe]_aubbb)aS`^^0^#_+`acejgfd`_ZTMF?}82\.A*a)*(- /K3_7=CIOU[_dOgmjkTlmJnnNnkn,mmmnKnnoOopDpqr5rsKt|uvXvwvxMyFzzuut srqpbooVnn5mmllTl5lFlVlAkkkkl)l{l{lkkljih/ec`]uYThOaJPFC6B@AB$D{GTLQ8V[^abccUb`^\[ZZt[\^`c#eMeSdaQ]VPKIRB ;q51-,-.0x397CIN+RW[_wbehjk*lnm@n"nnnnmmmn!nyno7op`qqqrEsbtu_uvwyKz{ww,v{utt sfrr.::;.>BBGKPUrYT]?`Rc9ehgijklmnrno nnmzmGmmmn7noKppq1qRqrt/tuvwy,z{xwwdvuuIttssrr qupppSp5p"ooo+nnbn@n#mmqlll*kkk jikhBfcX`\YWVUUV8WY\x_befgfeca`^ZWTTSU"VlX[^beggfeia&]WRMIBFfCkC]DGJOT(X|\w_bdfhl0lzllm_mmYlkkKjjj~jilihik lmmmlkiheb`]\k[T\]F_adgjlFlm kjAgec(`^^]^_aceh6jklm#ll=kllullllmllkjiiiijjk;klmn"ngnoqqrsu)vFwFxv"vuuuuuuu%ttAsss6rrur=r)r qqQpp%ooo,nnrnmZllmmm`mn?n{nknDnn$n6n:n mmRllmnoroonmlk/iNgdbaaabdfshkFmohophonljhf{ePdef6gnhjl?mtnnnmm9llllllmm!lllhkxjjHjyjjk.kl?lmn nKnopqvrPsltuvYwutttttmtpt]t2ssdsrrrrNrrr5rRrUr qqpppupooCnmmmmmnn_noo;owop4ppqppp0p]pqqqppnmlji+ggfgXhijl{npr"rsSrrqo_mkkjk(kklmnoup0p0onn!mmommrmmmmmmmllkkl lFllmJmnOnno`ppqrCs5t#tu[v)s[ssps`s=s*srroqqqqqqqqr=rrrrIqqqqqDppjoonnnjnkn]nnoppqNrrs%st0tsssttss#rQqLponnm@lkfkkl-mQncoqyrttuuutsWrpp^ooopoiopppqMq-ponnn;n7n9n`n~nnnnnmmOmmDmKm{mnnrnoUoopKpqqrjs.st`tu"qyrrrqqqxq-ppnpBpKppqq@qr!rssrrrkrgrsrTrqppooRonnnnoppqrsOtuuvv vv v&uutsrrq;pionnmnnopqs tuuvw wv4ultzsrr;qpppqnNnmmmOmemn.nopp pqrst4tttttttsrrq(pkoovnn#nnompq[rSsltuvwxx}xxxSwvyutss6r{rqqrErstMu6v&vwxexyTyKyQxx"vuts3r+qJpp^p9p3p:pooo&nnnmnnnno}opXpppppqqeqqqr=rs5ssssrtqpo}nkite+hjfklZllm mmm2mun nop9qr3sJt1tu%u?uMu0uQutsrqpp+oo n7mmZmnpopiqdrpstuvvwwwvutssrrqTpp8p>pqbr.sGtuuvwyxTxy,y xxMw\vtsrqq ppJp:p2poopo>o nnXn nn nunoop"ppqqBqhqqrTr~rrrssVssvrq~pKnm.jheWb `Gdgaijkl1llm&m{mnroCp>qqs t*uuv,vCv?uuutsrqqpAonn!mm$m_mnopqrt(uuvv=uuu,t2srqlq pppp3p%pLqqrstuv-vwiwwwwOviu@t_srqqppphpHpoobokiifAb^ZBX]agdvfh i=jXkklpmmnopqrstuLuuuulu?ttsrq8pooHnmmulmmDmnopqrsptttsrqppnmllzlllllmlilmonSo2ppqTrDsNtfuudutss#rqq?pppppzpYp!ooozonnnn|nnoFopqqqrArs3stt8t sssss9qolif"b^Z:UOPgVYZ^`ceghjk5l)m n`opqrsttuduVu;ttrss%rMqmpp5.072B5EHK&MNPOQRSTUVWYYZ\>]j^J^_8_`/`a,a*``._^^c]]8\\ \\K\]\[YWTR%NJFCnA>=81+F$."/'2+/3w6:r=&?AOCDjEFGTH4I@JuKLMO/PR1SxTSUUVgWWWWVUUTTpSSGRRRSFSxRQ\OLIGC??ABBCEgGHIJKLsMNNBNM!L'KHJJJIHHIIGIXH/FCA(> :74,1:.-k,+g**)(q'(3(*,/3Z7\-^`7bdghjjkjklQlMlkihguf}edcHa`_l^c][YVSQbNHJE@S:(4.(r"K A >!$>&))*,F-`./i001235'6Y79;K<>??@^A1ABBBA@??`? >>0==i===<:85*1.+(=%#""!!!a v  n "`#&)-15:7=AACFI&KMP RtTWWZ3\_a@bcjd^deeezdgc\b&a`_"]\(Z3XbVUS5Q7N|KkH%EB>94/)$q } 9)X !"#$4$%&')?*r+-/1i24\5_6T67776544?33622e2E2y22~1O/,)&##=IJSmHCk6-!%)-15)8;L>0@CuFHK$MQTVXZ Z\#\]]]\[ZYXeWVT2QOMuKIQFCl@<:'62-(#-J  9 kcUW'!4"$&()*+,$,,,G+`*))I(( ''_'_'''&%o# {BS S b ^  !  e X!#&*L-[036^8;J=@BEHK/LNUOWPQtR#R#R%QPONMLKuIGDB@>';3741r.+'t"j)k X6%wB = 2 {J-{Yy !!o *zkP= bCY?=@ A<' X#Q&)a, .^0358:=?ArCD9EFMG G,GPFEDD+CVB@>"6p $  *;$:h'hV l k R q H  ? - y : 8 6 *   IOi * }9: ) `"%2'a)p*,.,-.d/$///w/"..--Z,;*(&$" :4 + f[[ y@3_iW;k/eS0;;XU*gBPI\!N f!  }dgj !" "#A#$W$$t$j$#"! EYOp8 i(!>zWsi5cUU,VZopPz![ 8m%@gwjUTi{yEY | 4/onc?Z#(Y B   \;xl;q 2lL}kEO:&/1gY,\Q$s9.BSZX[hwv}fSNzR . K |."xy VLBbil'uiEI9cqU[dq4{p#cLXO~fD* /CE<( _]vj&RMi{LLf%qdC_' #H1w ? I6dC~&VuL(-R{a!:*uV9, &3BEAAAEB3'&0#=|3}" ouceNI=Q@^4\{iPS/9 B6l7# w%fd. oOC?D?@L[bedl~k/T,^0u _{< G>liT$|4n&p:xiwf-LW_@8Z84M_c %,}~{  chn1J~!?BCf+-8*y>7O~ 55_?d]&Zq#3 `;!i*dFMa^X5z4!qWuBU8 f9`UTa@ _`DGV]C }08j # LFUs*@Q\LD:H6.cxj*@18f@R*XD%}&M6 4#x H$$I^x  m8 "SJ(i~#xfv|5uWE0 F U(;K'=W#"ZUYOu Tlbcolnyf=*"7Hj'l~t &)c2pQ4049iQ>; `e}h6&S hx{|yiaV[fDD{Yt1! lk)<:D4ti V6'"eL]8~|vx~}ynktY lc*4F~x"4@!^2UWv8> %jMycOs5.[ugbYXZfoc9 J?VvVOc%vFP) / >Q,qSzS mvr0yG+ol@>h}reelwR(MV R#xZ+5?<6  AI 4nu<*~N9r\[3W\zZA+-9Z~hL1*'FrS?Jt9#/o|P -5#%</2fg;et,!'8Q4*;ZsnR?ESntX8(9_W=7,p('Su Wn0&'**<+Uo[1F{l,06&.R01AYl|yh^V^kjJ80@QqrH-.AyA wq KnjK  .) 2@ 5T`\I::A[T^noD8.7;LhuwcFEY}_H>/24T%.J*XkU- %*.'"+J5@^aM93<XxwJ/3gg xX3)$8PlvmepeM>>8Hc"?i%#Wj_L3'% !)) ( :;&)JQF;:J_bcvsA+M8PbE5>H[gyvfb\]^deul# X_3+EbnZ=@F6 !&&  %@B"8YbO7:N]iqu~_D=^JIqNCCU_qqfb[]`qZUO,(4LWSF686 20   5M8'SnaA3=Zspcgr|_KU~f, 8v{aZflw{zywomsI 6qp=%AHC:28;2 -J0 BG1*Rg`F4Cbtxup|pYERi:#=k||{}yI=vyL8>M[TFFHG<&!::  $ ,FF--Zs`@:Nnrnr}{]HQvM5<iw>'*TlKCYuxhVLXaS9"0@8 '$!7INC,&Cgo`MDOhy~ysuaVc}^ENf}oC,>brULWishVQSWQ<($.?@(  -6-$';]kT54KhviO?Gex}xngrw^Pb}z{g<4IuaOTesp^LCLTJ6&#0>=."1$ -3/).H\WE9>SkvnYM\u}}to|g\f}|o[P^xoZYfprl`YVVQ?12=D@4$(, +62+-8IRJ??Onyc[bn|yuvvrbhuy~}mdm{hbisyqgfilgYG88IUK5& $("  )4:78HTQE=C[qtg[Ybu|qgdqymlny~tptxtnhgmneSA74<JL:$!)," !"/DE@GOQLFDIT`fb]^ky~vhdeuxllr{zqknxnaepwnW?25<CC8('+)!   &%468DNMHIKJN^kmgacm~|}|tmhkpwqmqx{tu|{rlo|}jXLHLOND6,()+*%')#!#$-@MKDLTRR]jolhd`gx~z{wporw|{vpilvyroty}~|yzuigpwc^aa^[SF<8960+$ 0QaQ/ 6^lZC-"/HambR<(#$=fiM:5BL^v~tkfaUKGKMVcpy|{iXK@><EP^gmx{wnifbdir~|oli`VKIQZXQRRJDDJSSI6%    Nk\- 7brd>)Mp{pK& #Jqe<%+;Wkx{hba^WI?:@HXl{yoid^WPLIKNTX]eoyjZKHHWm}|pnlf\PIHLKMW^]RF>AINF3  2W{o3!OmpQ,4\w~a9%Df{b>$&8Xq}zuhSEEPSUX]bfihh`SD756CRbmu~~mYJILYfovsodTLOXWXclofZL@>DP[_^RC816FL>"   !^~L _yS#4ch6 "U\% >huaPE9:DRW\iu|xsdT>% #>Yr_B2"(5OfvpYJE?FTckhfZI>AMRRTPJ>+#0>=) W}E _zD$Nv`7!#CfwqQ07gy^B0//?Qf{um^I7,*''%+4EWfpuz~oX;$3Pk~}zjVF?GQavzhL;86@SafS0$58, =Lf|B .`Y5#6]p=B~H$9WumR4$:Oas|vdWRMT_okG'Bk|^F>;KgxtZD4)3H]i\@ 06% &uR#k> .eoM59VxyV0)LvqD8\ylO3 1Mg{wiaZK>665:ALU_nx~vmW8!+Jp]36ShrbD($9P^O, a}R&pB5h}W1$1ZH (ka >wa1 JwyW<--)*-37:;8119PmgD(.Y|L!Qvwc8 .XdK xLg=&_r`G1)<^zk9Fzc1AsP7YttaRG:46<>=:76653,+-<NgoC2hS?n{m@ 1IC)  K dy3&UgO'(Df{V&J;Rp&@ykD) )?R^gc\RNMMID=5.%(2Mp\Z] H<%OX2  U7 TY<%JekgO,,Ry|Y&F<"bsA,EWg{r]B'Avi3hGzY8C- CK'U`7$OklP5&$=jo9 aMi[PC :3=<BIJSfzjK/U Ff =j&?-!O MU5 Hd_H-%6SfiJ#e<t9Bf}wfT>1-0&&6N^fomgVK3N`u u&_z])6*`T?S. ;[V61Vte/'ra`x'CSr2mbD'/Sl{}k?h2k.|>Ip =Cso0 +8uc" DS8 ,HG0%L`R'hm;0y-pGwl]I%Lu}d2*( dw[W`0  OS"=\<3/8QA !be ;T>EeX+ " #"]iVb.Fz ^3BsN["  9/G:"0&|]H`W;:%ito7N 9\kvb'8lD}lTYyxKhY/A,K4 #- OUW'S(?q/Ri}zqtqjFD|w/=s+W/]_P\!4 IQ$XB`"t [n)E 8e6Kkb(7nUT--,w."aqHZfJUk}E#7 , ' ) S !  ~         / H Q F /  # @ i i # L py9LSo]~Nj/yR;{ 8K#\AK}|ie=Ub Q |HOM)U'57G^i,5 $  Z  ; r8:`f=xi/-bvy+XK.ie XD a ^  +l '3%+?+TAv28`rc?:M]  /c,A v`S* DJEF = 9eRr 4!a"i#d$L%B&5'9( ()4))* *)))S)J)***+++7+J+i+**))k)=)4)Y)c)g)c)i)))Z('&%k$$"!| G1B~,  F,j|7 2 I/ ijl +5J@!#%&(W)+e,-./_001234`556.666667788L8V878P8S8S7786j555z55k5@54444 3#261%02/7.C-+*o('%!]I,. S6 a^$ q,?  < @Sn !$#&)5+=-$.0246j89 9:m;<=>u?@ABCD=(;:{9e8^7J6,4391Y/v-U+.(&$"87 r .?kq!-B:brgKM;:;(5"'$u&I'*,u.1Y3z5g7h9z;=?AC]D`E*EFGI%JL[MNOPQQRPPPOOOOONN0MMM=LxKKEKNKKL\LLLLL8KJ HxFE&CBAT@,>=;:N8B6319.,*(o&<#! h1B T ' *fd B!C{D}x /"%(+-02:4749;=?B'DtFI'KpM5NOPQRTUWyY ZV[h[\\\\=[[:ZZZZYY2XX@WW'V8UhTTU UV/VVWWWrWUTRQ/OMLK(IHlFEB@> ;916420.},n*)&'&8$$!}=' ? XfId{,:(%#a"U!z!""#$%K%&'#'()L*,.1369;=@RBDFHJMO3Q|SUW;XYZ[\^\_ajbcdYddddcc|cbbbbaa$`__L^]\[[\'\]X]^b^____<^r][Z7XVU|T RPO]MWK%HF\DA?W=V;9754,216/~-,*'%l#  f X)7N30.-,O,-D.N/70213223+34h5-68P:LfN`PRTVpXRZ/\+]_`b#c*d1e=f`ghj kkl8lhllllkk;jjjj7ihhgafedd$cccdXde}ffgKggggf4e]d"ba>_^>\[oZXdVfT QOMJHFDBA2?|=< :{8a5310-+\(}%!_% t x _fB}><988=89x:;~<=>?6??@ACnDFHKqNcQ;SUUWXZ\^]_aIbd,efghijksl9lmnmoooppzppp$ooo-nnymmAllkk jSihhohh3htiijCjkWkll=lkkajjIi{hOgedcabda_u]s[YWU`S5Q8OJMLJHFE%C+A)>;96}30G,(%I! I J-MIGlE7DDEE EFGHJ:KFKKLgM^NP3QoS TWXZ\^f_`b`degh.iNj]klmnop=pqnmlkjihgXedcaz_][YXdWUT5R9PBN+LVJG^D8Ah>G:7.3T/3+)&"Z#[hVSQOOOPQ8R-($!+` ]n[ZZ[2\$\]^`3abbbcFdde;efcgiBjkl8lmnlo;opWpqrrbqqp o]nnxnmNlJji>gg=fedb`_H]\YwVSOLbHD@?;73/+'$"f!d6c=bcUcdewf]ghj+jkjkckkkl!lmznboolop:pqcqrr,r\rs!stuBuv:vpvvvvv{vuuttsjrrq}ppzooVnn)mml_kktknkuklWm)n o2puqrs*sstto:7 3[06-akjjAjVk?llmnaopqrGryrmrrrrzrrs7sssst tottttktfttuvvwvvvw0wQwfw,vvNuutksrqqp-oknn\mm{mllHkkckk#kBklAmmopIqrstttmtu u=uHuPuDu7u2u2uOuuuusttotsssrqposnnnnVmlckjjriEgbdna^\XTPhLI*EB;>;78LnVmmn2o8ppqfrs*t tuuau{uuuuuv+vDv=vAvHv[vhvvvav;uuuyuuvDv{vsvEv7vGvnvvvWv umtts_rqponnCmmmqm,llllHlkllVlm\n nosprqrss#stt}tttttttuu8u{uvv#v uuru ttsrqpp$pooomnn;mmmkig>dbt_\vXU9R"O$L%HEBpbpApqrst.tuIvvw!w[wwx!xBxxxyCyyy^yNyrQqpp oIndmmlmimimsmOm.m.mFmHmgmmnloop*pqqr+rrsCswsstt ssstJtu&uvvvvvvvvVuuRtsrrqqqquq(ppypp6on$l.ih&fcY`*]KZXKURPMp/pcq%rsstPtu!uuvTvwwgwwxy[yzrVrYrlrsast,tXtuvvwJwwMw"vvvvvv~vnvvhv'uu tUsrqq pFpop(pLpRp=ooovoPoLoLoMo/o*oBoopQphpkppq+qrrerssCs9srrirqpp$onnnm|ml[l"l:lmnuoop0pq{qrWrTr:qqqqnqvqqrrIr^rrsVshs=sZs rqpvo?nUmmllkkkkNnknoUopbppqqq>qrs3s_sustueuuuu3tttttu u5uuuvttussr)ponnn[nnnnnnnnoo[ooopRpqrr-r/rWrrsist4tttttsmrr|qq pkoo1nn+mllJl-lmln+nnoYopfpq3q?q=q,q4qNqUqqr/rs!sRsst`ttttttLsrqoonmJllhllol@kkkxkl]m5mnoq+rtuvyww1wTw^w{wwxJxxxxxw/vVuw)w;w.vvbuu sr omjbgda^[ XX%WXFXXY=ZK\_Wbfifloru>wyzUz{zzzzzAz0yyxw;tMqlngb]pXySOLJUHJKCNVQiUY^sbg#korIt)uvuw&wSwwwywnwwxPxy'yXyqyEy9xxwDvvvuettZtvtttu*v\v5v*v=vvwbwxgxxy*yFyyyMxxxCww~wVwMw'wvvv{uuKtruoliVfb_4[WRSQPPLPPQRUX\`dgh#koruwy/yz5z#z2yyy\y@xxwuP*UX[`se|jnr`tevDvwbwXwwww?wwwmwx2xxxxxx:wvvvkvutttPvvevXvuvwwUwwwwwwwYwSw7vvvJvuuuuuuuu]u tttrupslice#a'] XTOL^II7HI IJ?K_N4QV;Z_c[glMpCsvxxyty^ymy0xxxbwwcu{s:nic]iWPJD?;|98h:3sss9rpntjCe`\DWxRMHDB'AA2AACD:G>JPTY^cirn%ruuwxgy'y y&xxxUxw(vtPql_f_iXcQQJ{D+=S8*3l10524j9Q=CJoQY#_fkpzru1uuuueu&ttttuLuvDv|vvRv1uuuduMuXu}uItsssssrvuuuv vvvMv uIt4sjrrVrqqq ppqqpqr:rZr^r!r(qq6o l|gc6]XfRMoH$Bj>;;:a:;#72V-,R*,.38s>EMUN\cinqtt|ttUtss~slsrstRtuluuuuku-ttttu0u!tsssssruquEJQ)W^=djjosuw$xMxyyxxwSutrn,gp`vXOG@99f1,(I'Z&$(*8/3:hA`I}QYca-g4lprscssKsrrrrsstftu;uZu(tttotXtatu utsssss%rttMsssks'rrriq?onmm7lll[kkFk_llm4nn}nnYnn2mkidN_QY S@LFR?9v40/---/16%;AGNU\cNhn'qtcuvwMwwwvv!tsplxeZ^,UME=7/*&&B%').329@H|PwX2_eknqr5rrPrqqr r9rsytBtu-uQutttXt>tAtuu0tt7DLFSZafl[orsuuvEv7v:uts=r|osk9d\T}L9DG<6.)&&%(<*/>3:A+HPX6_eZjnpqqqbq;qq0qqrs^t8tu>ufu)tttNt.tt\tu!ttftdt{tht"ssrqq4poo;nnqmFkjj0ii6i&i h_gghi3jjkkkl2lkj!gc^Y S{MF(?L83.,Y*))w+x-28K?[F.MFTgZa1fjmpCqr%r|rrrrr@q"pmj&cj\TLE.=7|0g+(;(E(f+>-27d=D=KqRY`ejmopppkpRpFpgpq=qrstftttttOtt st8r1-Z))*P-b049@/FvMRTr[aXejlnnoboHo6o0oNoppqrsJsssssssst&tueuuguuv vusrqpo/nJmm:lkjii1hhhhggngYghTiijkNklkllkxifc ^2YSMGyA|<86V4a4496,8y=n:nDnnoIppqqrNrhrrrs=st tuvv0vvw@wZwesPrNqLpMonnmmyll1kAj^iiGi#ihhthgh:hiIijkakllm9lTkAhea]XSM>GC3><:::<>CHNTY^wae#ghiJigg2ffVffghijifM`[KTNzGA:4k0-5-z./149f>DJQ$W\\aeimkcllm:m2mCmGmDmXmfmn\ooppppqquqrssuvvwwxxxyt8sMriqpooTnnimllkejjjlj1iiKii0ilijk-klSlmPmm&ljheb=]XSNbJECAAA:C!EoINTBY^,bJdfggfedbbbibc>dEegmi h-fKar\VRPPIC!= 63>00z1k58L=.B]HjNSSY^8bei9klWlwllmmm lllmhnnnno ojopq=r rstv9w wx@xyyzMu=tdsrrqCpp-oo(numllHkkkAjjciiijvjk}llm:mnmmlhkBhf1b=^YbTP_LlJGGtFHKO`SX]ae7fhRgfdb9`T^^^_Y_ace-gDg,f_b^SXJRLEE@:5634M59=B#GSM RW\`dSfikl/lYllm!m=mEm#llm mmn#nZno@ppqrjsftv7w,wxyiz9z{_vxuutAsrrRqqKppAo{nmmvlll#kkjjk"k|llmmmnWnWnMmlkiebL^'YV RuP4MMoLNPTPX<\`cfghgeegb;_4] [v[T[![\x^!`scefg dH`[oV8P~JE@o=q:;D<@DINSX]/aedeg1hjlllmLmmmnmm|mGm]mmnnFno.opqrHs4tuvwxy^zFz{wwvluutss`rrrq_poonnnnno nnnnnnn_mlkkkjk/kel&m"nlopqrt u^vKvwxyzzww_w!vvvvvvCuu{ttsrq p,ovnnmmllllmBmmmmmn$nPn{ninImmSllk~k jjjujijjkmnnn8lkhePa)\YKV]UhTgUsVY]aQehkhkkbih~fec?a_^_acXeXgikmnoo^onnonnnonbnynSmm,l+kJjjjvjjklmnoq rm}mmmmmmmmmmmmmm_mllllllUlkl6m nno0ocndm>jgd;`s]gZYXY[^ a7ei&lnWnnmlkijhlfMddLeeg{hjHkmcnoooyonnonnwnn4nmilkkYkMk>k~kl3lmnopr!svtuv]w]x7xyXyuuSuu u%uMuauZuttXtswrqq:ppoonn@n)n;nwnnnn2mmmmxmSmFmJm}mn n;njnnoBo_oPnn}n]noxp.pjponlj8g5caZ_^g]^_b;dhblnpqbqq2pp#omlk jkjklsm)nnopppporooo&nn}n3n!n@n\nVmmHllSlflllmHmno^pAq.r=sbtiu;uvwxXxy"t-t ssstt t sss%rrr7qq>pppYpooooopooo8nnRmmmem?m,mzmnznopopqqxqqqcppqOqqqqp'nxlj?gecc>bcdfqhk~nq9sststsrqpoopoop=pqq:qqq ppoooooko&nnnnoo nnfmmmn?nnnoappqOrrsttuuvPvwRwhwrrrrrrrrrr@qqqqqMq'qqpppppqqRq|qIppRoo,nnUmmmmnioCopqrus>stttt*sstssrrpo)mGkMih gg:ghjknwqs,tuav5vyvvmuuFttEsss0rrrrr>r=rqppFpoooofooocoooodo no5opp:pspqZqrys+stUttu>uv8v_v5v'qquqkqq{qhqGq@q&pppppppq-q[qqr rrrZrrrr?qppMooDnnn^noopqrstu]v5vvvvuv%v uu^tsrFpoPmlknjjkklnprt2uvLw5wwww\vvuu@t~ss@srrkrqqqdppjp9ppooooopipp|p4ooppwpq4qxqrVrsyt,tttttu2u4ttLsoKp p"p[pEpoooofoIoqoppEpqqqrrs/sLsssssrr,qgpp oooo(opq~rstuvwxxxxzxwwfvutsr,ppopnnnwnoGp5qirt!u7vTw1xxxxxx^wvutssLrrsqqqq~qpp`pAp ooooopBpq pppppq'qqrrerssttuLumu5u$tttsrqlamnTnnnnnnnknmno*oppqHqrsJst@thtttttQsrrq0ppoogoXopqwrstuvwxxxxxWx)wvutsor>qXpp`pp'pUpq;qrstuvw|x6xxxxxwHvtsrr#qqEppppppApoooozooop=pq4qFqOq@q-qMqrrDrhrsst8tuFu=ttt'srqomoiklmmnnnnnnncooprq/qrstu uuuuuuutAsmrwqtpp+oo^o:oGpqrestuvwxxxxx"wwyvuytsrr/qqGpqqRrrs`tPuXv?wxxy;ySyy;xwvujsrqqSppptp`pEp/pooooGo$o/okoqopRqq~qqqqqrirrrssOstLtu&tt8ssrSpnlidgik^kllmAmzmmn.nopqr}sztku_vvvvvcv7uut%s9r=q.p_oosnnnoQp5qrstuvw%wwavvXvutsrqqpq pp-ooopq%rst4uHv;w:wxfxzxxIwvu|t:rqpppopppWp7poooooDnnno:oVopYqqqr4rHr]rs'sssssst7tt\srdqupnli}ea_cfhikDklm mfmn>o pqBr@s;tYugvsw!wwww'vv(u`tXs[r[qNp}oomonno.oqrs)tCu.vvvvvu8tsrqpp:op pp%ooopNpqarrst^u3uvvw vvXuUtmsVrqp~p}pypp}pTp%ppooo#nnno!oTopqGqrdrrs sktttttttttt"rpo3ljgc^YW\`dceNgThijkk&kljmJnkopqs%tTu}v8vvvv0uutHsPr[qopoo/nnn~nYnoopqrs\t7ttts]r8qUp-nmm-jg6c_+ZTO OpUFY]`bdfBgChiiYj.k(lemopLqs#txuGvvuuSttsdrqpoo~onnnqn[nnoAopQqqrrrqpomljjhg f eZefeeewe+eddde8f fhbj kmoDpqaqqq?poo[o(ogoopTppp`p[p(ooNnnnnoopFpqrHrrs^stu*uujuMtttsplmliTeaS\WQzKDzEK"P TgWlZ]_4`bcOdaenfhi\jlhmoopYq qBqbq pp onn mwlllMlkkkkkkkl&lmPmmmJkjrhg:eVc`^v\[[{[ ZZ8YYYYhYZ([]$_b&dgilm`nunnnmmrmVmnnocopooooo#nnKnnnVno\opqqaqrrs1s}ssxs'rgrpnkg;b[]XS"LF@9I:@FNKNROUWYk[T\^_3`pacdfShijkklBlDl%kkAjjBii_ihhhnh%gggjg1gg(g}ghh^geca_]>ZOWJT[RxQPPONN`N N(NNOQTWZZ^Cadgiok kkkkkkl lmno-ooooonninmmmnnhnozop p-pqqeqxqq poo?nl}id`pZUOIbB;58.I/5;D@ CGJMcO`QlRTUUuVWXZu\,]_~`ayabc7csc?cbbb}b1aaa-``c`_^^k^^&^V^_>^^[ZWUnROpLHFEdED\CBBPAAABD6FIMQ}UY]8`ce$f gg^ggghjklmmnn~nn^mmVlll|l&ll#lwlllllllllkih8fd+`[7VRPJD>670*$,%*0?58<@C%EKG_HJDKcLnMsNOQSKTUVWtX~YOYYYYZCZyZnYY{XXHWWPVUTTqTqTTUBTSQOMKI EB?;=;:99"87J666\7q8;>C%GLQ@UdYp\T_`bbc@cd|egi6jrk;l0lmWmjmpmll=kkDjjCj,jLjQj,iiihihgfdc9`^[gVQKF?9W2,_% %*C-1479;=">~?@zAaBVCE%FHIIJKM MN_NNO]OPONNM=LLKrJbIlHHHIICHGQEMCA@9>;`8532]10/.. -3,,-h.e148e@AjBCLCDDE[EEbDCBB"A@?>=====<;j9$7H5w31/-b+'))((M'&&%0$$-$%r'*.27<.@gDGK7MOQS?TVYB[^+`Zbcdeefff:eSdcbaa2`l_^]\h[oZ"XVTFQkOLHD?m94y/("50 H O0!#%&'(c)B**+-,./0124L577899:=::b99 8'766q543222x2m2y1/-+)'%#! #?&9 w5!%#(,048;?4AD5FQHqJLORJUWY[\]^[_!_)^]]\B[`ZPYKXVUmTRQ+OuMKHrEC2@?<8s3.W)$  J`  ro4n!"#$%&(`)+,-../D//V.--,+0*9)(0''E'$''&-$" _K+>tT)SR)Z $(,0u369O;>@iBEHKnN)PRRwSUGUVVVhUUT(S)QPOeMLJdHFDB?<974z0,Q'#<  Q T;+5&QjwTe] "##$$%1$$1#4"f!~ \Ru = oM* o3 "&F),K.13W57:=_@*BDGHJ#JKKtKZJJLIoHsG-FDCA9?z=;96319., )%s![}I =8/Yc / P pf'L 2z fWtb  0 wKs3 o]"6$&(*-=<;:8X6b420.<+C(:%#V Ke/, 'R%L de* } u q ~, ` 9  ! Q v I 90VxB&,q  _qn:!,#S%(*m,.12445l5554k3320/'-|+*B(s&S# N!$  vjzpyQN  z9]XW=,!N u:]' O Fy1*+e"S$X&a'()))))))J((?',%#"!E q * ~v8D|p5,Yj)!dhI*"N'6upurx"5X7[-sXej D SJVe~*Q%TY7IW>e  T"4x Uw]4Lf?*SReOH/: QL3RfuoeI%#@2b4ub  _Ylds1& 0 m 1 EEe) p|dY.p <x, f{!A1TN5J14:-nT!?`kdgov~dSOGPR}#&5 V j d f ? H 7  xw=vWS/R}}ouqR]>}0ul[ Td>&5+"*7GQTKF5+pcjEDu & <Ug|0Q: 7w}~F6fHx>{dK [vg#9# lbC+$/5<@BGKPSSPMMDV">Hc]<Rw H|-*enVN`6Y|eNX9@</m=$~  MUcHA531;K^jt~|>cFNnanA GGxjW$t*f%l;*q}j)JYd8FfQR16u3l  kdcul4KJ208Pm/5I@};4Nsv55^Kl]#Ux!0nH,,^Ay&pmhP#Q8 Vw<Q r-f7ja V\4z e]BFOa:6)W   ['EXy2HHVI<> B/.m|h(=,<iAZ)]?pN63-{ P, ;Ut  u?&WO1v{"{`u';\I+vD [/HR%DZSZ_N3 elYUbekwmC-$6@^ /} q )*-c8 uX1#59n\@2ado[: #]+swruu~|ldX[f~JL|Sr=.!pp$9 ;D6xo_1cKru_ @upry{|~rluYqX"z;N"{$,:[/X]|49 j?pgQv:  5c~l^XPSZire; I9SnLTn(xHL'/ 8N,xT $~Oiyj(vH 9|uJ"$JmocX]h{Z/ %U[&S r\:<C=6 BM<uxB-E:nUY2T#daH46:TtlO3,'EsY4Kp?$7uT .7"C4 <nnB cl*w#4J4.?]vsU<;Fb{|_<(2X`F;$]$Nv Ys6 &( # 0B0!_ze7Evf(*w1&*X8&8G`s{fYOWg}qO;/<KkwT=)3?s Btv$MqnR' 0,6D& ?`ldL;9@Z~NXk{PB8AEVrsviHCSwnUJAGCY1'Q0\nY3(-.-&&! ,I6 !GdeN80:WusF+/bh y^:2.B[w}rgooXGECUk%6j((Yj_N9/+!&+$ 89&,JRF73E\`aso='E8OeK<FSfo{xga^b`dh{hQ^0,JdlW<BK<$!*  (AC& :YaK15LZdlp}y[@7VKMxUKM_fswjfcgeq`UR,)9U^VH:>=! 03 :P> ,Uo^<0<Vlh\al{xYESj2)Eibnrz}~z{{T 2tzC!'FROD:@C;( /M7!FN;.Td[C3@\mqniv{hQASmA-Iu~}R5qP7<M^YLKLLB+'AA!.KN40Xn]?8Ji}lhlusXGRvS=BlJ$ I}qK=QpvhVLXbT:"5HB" #!!:NRD-(Cck^JALdtyuq}ucYfhMTlz|{S3:[y]NSdqhWSV[U>)$1FJ2   )2)")>]iR64HdreL<Da~x|qm|eXj~w|mE?MthX]jto_MFQ[Q=*&3CE7#3'  ,2/*0HZTB6;PgskVIWpz{uulclsYRdzrZ\lsqi^YW[WB10<EE:*(-# /:6-/9HNE<<Ml~t]V]iw~wuy{whn|~o`e}yf\bq{rcaejh\J62BRK8)#&)# !"'4=?=>KTOD:@Xmm_UT]osjgt}oljtvqquwtkejmfVF:38GN?) #+-#"%%"&:LMHMRSND@EPY]ZXYf}vifgvvqt|~ur|tjjpvoZB68=CF?/##*.+#  %"!+8;>IQQJHHGLXbfc]^hz}voknp{yunot}{y{xpmq|zhVJFILKE:0**--(  #'$"#&0BNLFJQPPYciie`\cv{x|yssv{}yqggowmjorvxyzzz|qb_j|r^X[[YVND;8850-'  1O]N. 2XfXD0#-Heun`G-$%@ggJ62AK]vwka^\SKFGEM\ny}~}n_QC?>HT`fkuyulhe__dmuvqigd^TGDRaaXURJDDIQPB-  #Oj[/ :aocA$+Mr{Z9#+Pv_4.K`nt_WXXUJ@:>BPfz{qljhd]TKGIORV\fu~vl^PKITfrrihe`VHBFPSU[^]UH>?CC8&  8Z{m2'SmnP-;a{iD'1Kgz_:"%5Uo|{wiQ?<GLQX]bcb_b_UF735DUgty~n[MKLXdowtpcQDBIJP]gi_SH@DMX^]\SE813>B6  (c|J awP";jk<.\V!Cnm\L;7<IOWgsztkZM<& 8TpkO>,.9QfszgM92/;N_fb`YLFLVTOPOK@-$,8:, [}F #d~F#Pz^5$-RwwR1"6dt\D433@N`qyzpk\G2" &',4CTes{qY9"2Oj{wo[F:9DLXnvjSFA8=QbhT0 .7- >L iH+]U.7hHH|x: 5Qm}~iQ3:Rdu}re\SV]jyw_>#EmmQ>:5A\qsaP?.1G`m^?*2#(uR"i> *_qO25R{i=)LxnB:_{dE* +B[rxg^WOH?;8;AMYerx|tkV8 &AayvW.3UpqL''?UaN% c~S$k;0`zyX6(1Y\#'d^Jc+HqzW9%$&/147;=>=AI\ud? AkuH'[m96^fHxLg|9#]mZF5.?^ypI.0Tc1>lT&+Pouj`UJ<53;DIF?<952.//:Kc|k>&^}ONw~mA1B8 Jfz4%UhM#-HfxS)*eBLa-jb6 .BUctvn_WRIB=6))Fn\ RZ P?@J) "U6QX; "MgjfO+ =l\%@8/fo@ /BSen^G* CvV ,|x/H|_ .<+AI%QZ3GkmO5'#?|>RPsI4 s13CBB@>Ic}w_@ O=d 1@p$A1!~R NT1 :]bI) 2Le}m2&c~>ts(<WlzdK4-2;2.;Q`iwyp[R<HXm, i[#7+ aV <U,3LQ<(OkeG9gcf2K`x5r`># 1Unyxj=Q(`!q4J?Ipd# +" <v`":K4'60&!H^O$3kn4AQu9ooPHA'$Pwe.#% | a SX)  TT 6O1 ( 5OE?d\J{lmO {D)4:31'(_Z9Y+Fwp9EO|IV" ;0C2 '* G`6tGvLC/=NOJU,`{"p5 4l FuMN "c{ Ysc!8 0P6 JnCCS:k#6Q >x #5Skw`TG=h'wy? '{ZdbbBY\[]&PV'}j$=t/: U  '9%['=bJ#gK> {X,y8r yn=^G,"fKp1 u[_Pni  2 \ (0^0^ !#%L&'(()g)**B*]*2)))*=*++3***y*W*)g((/('(:(l(()%)))V('&~%e$%"!: Z D ^G %oF<  QZb( F ? %mg "$C%')*m+-4.0P1234@456B67=7A767#788V8M777]7'655344M4+4K4_4r4w4n44[33210/ .O-+)'%`#' <KZ : F 0 xVJ*sg  hl0CQ]z S q R :KV]'4!$&(*,.024U568N9;=@>?@ABCDE.E DDFD6DdDDD8CC.BB~B AM@???@ @c@@@@@I?>J<;:\9S8v7Q532/-p*(%#z! s!1a I  1c&so #`+ 6V!K%!$(&),/1355T79I?A:BpCEGIaJLxMNOPQQQPP!OOOsO#N~MLLqLKJJAIIIJKKKLLgLKYIHdFE?CBA@%>J<:8v53f0-+ ('+%O#!Cn U j & QK!<$Q1iw!$%'S)b,.14Y69W;>@C$EH)JKMNROQT"V,WYQZW[V\\]L]l\\["ZZSZ6YY%X!W>VUUSTSS1S4SsT3TUV=VW^WeWUTSQPNM6KxIxGECk@>;7521/i-+*('q&%#!i:@> A17Z+(%&"s!_ !!d";##$%&e&'B''(*<,-/02508 :=5?ADhFIsLNQSETVWYZ\^`abcd/dwdeddUcbb;baaa`_#^M]]\)[rZZZ[\S]]^_z_`%_^]\z[YXV.TR)PNKHEB?=Q;w98s653w251]0g/*- *'%~#4 k+w (R62/,++C+,-./01233363568M9;s=?.ADGI?KMP~SUXZ\^_ajbce?fh:ijkk3kklltllkkKjiiiiGhgff*ee dTccbc cdTe efggNgh?ggffAe7d3b`^\ZYVTQNKHFDCJA@ >e=<;98520j-+K(:$ za;F cA=:8_77)789:;=">,??j?X?@cAC;DFGIKNFPRTdVX[6]|_aceLfhiUjfk_l!lmnJnoo'oDokoppoo'n|mmmKll\kjjYiii2hhuhphi!ij3jk;klWllll-kkxjih;f^dcNa`^ [XVSQeO`MLJI5GFEDB@>b;9 63t/, (Y$!0~ey S xzLIFPCCkC.D$DFGH/IJKKKL3MBNOQR{T[VdXZ\M]_uaScPe7fhjklnJoipqor rCrrrrrrrrss2s"rr^qq`ppp)onn$mmMm*llllm?mnQnoPop?pqq!q6q%q3qpp!omlWjihf~dbt`<^\1ZJXWUTSRQEONLVJG}DA>;7 3 .+' "j)BVwSPNNNOP}QRSU7VKVWWSWXZZ[\^`bcldeghik%l3m@nNoqpqrstZttttSt$sssssrsesCsrrMqqjppoo[nmm~m-m:mGmmnnoIppq,qqrQrrrrs ssrr qp,o mlkRih}fed-ba1_^]\\C[%YWVETFROIL|IEA=951-z)O$!EA_\[YZ!Z[\S]N^}_aEb7bbc2cd^deBeg hwijAjklmnoSppq3rrsu uvvvvvv uuttjtsssArrrBqq&pzooQnnmRlllm>mn7noplqkrErsJsst;tyttuu$u#ttsss{rrponmll2kUj2hgffeeYd~c0ap`^y\Z=WuSPLHD@<=84/+(&%L"ecbb bcdeDf2g|hjjk5kQkll:7#30-k;ii{ijklmnoq!r rrs sLs`sDs&s6szstssksZsstt ssst!tuvvhvzvvvvvvu|ttIssrhqqp~oo;nnmm'lllkpkkkl4lmnLopqTrrsOst;8myllmnopq{rKsut}u7uuvv.v,vv*vhvvvvOuuuuuuu)ttuuuvvuuuuuuu?ttVssrtqpp:o|nn+mm\m9mmllkkklm%mnoopqr~ssjsttUtrtat9t2tOtttttuuuuu.tssnsrwqppoooppooGnnXmylcjHgeb`\YQV ROLIGFKCoroBoprOsNttuVv?wwwx-xpxxxyNyyzyyTxxxx\ww{vvzvJvbvvv6uuPttttttetsrrqCpoonzn mmmmmmmmcmmmWn-noptpqr rs(sEsss s4sYs[sGs/s?sqst ttuWuvZvvvguu>tt'srrHqq_quqrqqqNqpp nljhfdRa^\1YVTQCNoBompFq^rsYstQtuTuvJvw wkwx xyzzAzaz+yyy]y(xxyx ww1vvvv,uttbsssUsasxsis:rrq=ppocnnnnnnnnnnnnu{uyttQt-t!ssUr[qippp[oooInn^mm,mn9no/ozooooyopppq1qr-rsMsssssrJqqq{qCq>qSqqlm?mhmmmnnnn&no?op4pHpqq[qqqqqq:qq'qrrs1sTs@rrrrq>pqUqrtsssssIswBwxxxlxExQxxyMyzzrzqzYyxwvuRtsr-qqrst ttuvvsvvvwkwxxyCyKyVy xxvuufut`ssttttuPuvqvuuvvw wxxty yzIz{zzZyrxxww_vvvLv4vIvvvvvvv&utspnlGigebdKcfccdegil2ntprtvwyyz"zyyyyyyyyyyixvtq?njg+d a^\Z[aZ\]7_tad?fikmprnstu4u|uvMvvvvwwxUxyLyqy|y(xxPw=v!uu%tussstttuuvvkvvw\wxAxy(yz4zz{3{zyyy+xxwwwwnwzwww`w[w vutrpmjgdWaw^]U[[\ ]{^a4cfi|lpoIqsuwuxzy0y)y5yyyxxxxxwvgsplBh-c_[X U_RQQfSTWZ^Oae0hkosqttuuuv v!vuuvEvwxxxyxxxw%vuuuthsshsPsssstivvvw/wxxtxyVyyzAzjzzz+yyAxxIwwwwwswywzwYw$w3vv]tsZpmj>fb^[]X2VuTTTVsWZ]?`dTgkIn)qs>uvxx#xLx*x9x*xwwwJw#ut4plgb]Y/TPKMII>HJM9QTX]#afj*nqt$uuuv uuuuJu:uvvvwAwxGx]xx wvvuettxts_s s sWsrs&vuvvnvwwCwwwwwwx www6vvZuufuPusujuduruuyuluumts#qmj>fa]XUQlOyMMpMOQSW[(_1cOgOjnuqCtuw wRwwjwlwIwvvv/utNrEni6cJ]XSYNIjEBQAA(C~F$JNSdX^ cEhmpstuuunuttt5ttHtuovvw$wIwwvvEuu ttyt strrrrrru0u*uFuuv v v[v}v>uuubu7utt}sstrrrsss9sVsssstssfqInjfa] :o99,;>CHMS{Y_ePk5oQrstttwsssNrrrst#tuuv2vvuuu&ttztft)s|rrrqqTq!stttZttet6tnthss rrBqqq~q.poooop p[ppqqVqrqqpoGlhhd^YvTNJEC/@@@CcE{I3MFRjWL\agkostvwwxw9w(vvv?uttmr!oUic\UNH4B|<774#3258>BC(I#OpV.\bi;mq=r]ssMs&rr9qqqqrFrsttuEuBGMVRX_9djmnUr'tDv4vwjwSw]wvuu[t7spmga_YQJnC-<51 -,+.28> DKURY`tgXl oq'rgr6rqq*ppppq3qrst1tttt|tet@tst+t/srrrqqprKr7rr qqLppponmmUllljl"khjjjkkl\lm-mdmnrnnpn#lie*`ZfTMG9A<58e43369c>YC_IOVY](c.hlpsuuvvvviuu$tms'rVol;f*_XP]HA:h3,.Z*))),07784+/..O1A4?9?ELSZ`fjoq}stuuuugutKs~r qnYjd^VO=Gx?9O2-X))()-1:7=~D;KR6Yx_fOjn oOpjp:p7oooZo4o^op qrsst ttsssssstjd^WP:HA;40,,-Q1p5;AH NU[avgjmnoo`o[onnnnoopqrs#ssssssssttytgt"t?t0ss*rq4ppo7n:mlOlkk>jYii"hhhhh%glggpghi_jjjkl2lllpjhxdP`PZTMGBm<843257= BMHNU[G`eiHlopqaqqq_pppponlPi6c^WQIJcC~=7_300H15C9|?{ENKQW]bgjm`n.nnn{nZnBn7n$nHnlnopqrJrrrrs6s}sst^tuuuBuLutt5qq'pronmRllOl8kjjii`igiiZhgg|ghhidj$jkZllmBm3m?kj fc^-XRMXHC@.<;:vD?IOU}Z_dShjm,mn"mmmmmmmmnnopppqQqxqrrssjstuuv"vvvvMvrpqq+pBo2n mQmm lkkjjNjUj_ji]hhEhvhiJijk:klmNmmnmki$fSa]WRNJ3G CBACF?JOTY^sbfTik`mmYm~llFkk0kk"kl?lflkjhRd'`ZUOI@C><9(9u:t>BH]MSX]4aei#klmmFlllmmllllm^n:noYoop+pqrts stvvwAwx5x_x0xss1rqpooDoonmm!ll>l)lkjj;iijjkklRm mn[nno n`mkirea\\X4TgPMJIHJiLQEUZE^bfiIkl@lkjihhggghzijGjih^e a\XRLGCB@>6>?CGMgRW\`ldgjSklmm lllllllcll lmnnndnno]p8q0r7rsu'v{wox xyIyyyuttsUrqqpppoo!ntnmmm lRkk(k%kKkl3lm`nnoJoooo0nmwkhdd`x\YUSP(NMO~QUY]b1eijl~l9kri|gf4e ddddefh'i)hhtfcg_ZUP:KGECDEIMSX.\adWgjklm`mZm6lllmmlll7l:lmimnQnnokp`qmr~s4tuuvwxyzzz{7vtuuktt6ssrrrhqq$pdooo nwmmlllHl]lm>mn]noopAp%p ooWn5ljfc2_\YWU SRT:VY\`d$fikl1kHifdbavaCaaabdgf{ww5vvHuu5tttat0ss rBqq6poo=nmmmmnRnojopqpppppCponki>f#c*`^x\ZYY;ZX[^a`d0fhjkpkjAgduaD_ ]X]+]]^5_ad;fhhihgUd`]wYWTSRRTXe[`dgkjxlbneomm-lllLl klll>lalm1mndnonnnohp>pqq?pomk;gda_^]^>_ad4gknpq}r:rYrrrkqpppqr2r|rss|stWt>ssrlqqqippDooWo@o:onmmmymn)nnoSppqrsttuvv|wQxx~xy-sJsOsWsstt t!sss1rrMqppgpooKo(oKoeoopp!ooo!nmmmmllLl/lillm?mn^oop`pq pppqdqqqqp7nljgZe8cnbbbcDe6gdjrmpzrSrsstntnt.ss+ssysssst t-t=tft6ssrrGrqq\pp+oooootnnnoLop7pqqrcs0stPtuu{uuvuvw'w!wpqrr(rqrrrsrrrPrqq;pp~pdp!pp1pppqUqqqcqpp#onnyn*mmmlmnnnopKq3rrsissssssss1rKq\onljhvffUef7fhejXmorstmu`uvjv{vjv%uuvvuu!utttbtVt%srrrrrLqqeppppppVooop]pq`qr6rstt$tu u3uiuuu]uZuuuuupppqQqqqqrqqqq^q pppppqNqr#r`rrrrGqqrppopoooro]oopjpqrRs@ttuvvgvOv;uuu+tsrjpoNml0k iiEhi+iklo(q]s!tuevwwwwwwwwFvvYuu"tttOssss%rrrrrPrqqBqq\qqxqpppqqrrbrs[stuuuuuiu)tttt s*rno]op[ppppqqppqpppqDqkqrGrs]ssssss/rr4qqbq2qppqqdr rsEttuvwkwxQxGx1ww]vutsLqpso3n&mlllOlmn9oq>rtu:v4wIwxxxxxxwwMvruu ttNsslsFs$rrPrWrwrRrqqqSq[qr!r qquqkqvqrr}rs'st*tu=uuuuhu$ttxsrq"okm mnocooppFpcpyppqq(qjqrrs/st_tttttptss rr!qqqqwqqrs?stuxvew5wxExxrxIwwUv{untrqponnunnnnnopr,sAtKunvkwbwxpxxxjww%vAuZtt ss2rrrrYqqqqqqeq,qpq+qr0r0qqqrr4r|rssJst"tuuuuxttssKqp!mkhjlKmnnno ooopp]pq'qqrQrsIstu uuv uuumttVss:rrGqqqqqrshtSu%uvwxexxxyxwcvvusrqq'poonnoo.opfqRrWstuvwxHxxxxxwpvtuZtOsprrrr8qqqqmq;q0qSqfq3ppppqqr=rOr$r6rbr}rs sfsstthtuu{uyuDtt*s&romjFg?bfVhjlmmn:no]opVpqorrs+st_uuv8vovvRvuttMssrqqqqRqq-qHqrstdu>v&vwrwwzvvutfsrOqp+oo-nnqn mm~mnSnoq rHstuvwEwwww_vvusrrqqcqRq0q pppppppprpIpOpXpqfqr&rr6rvrsstt:tSttuu#uBttPs(r;pnkhdd` ] aodgikOl7mYn:oopWpqrgsstTtuvCvww1vviuu1tssBrrqqNq-qVqdqr[s8t tuvYvvvutsorUqonGm'lllmmWmUm^mnnokpIqDr7sstuuvjvPvuxtt rqq?qpppp|prstuRuuuatt=ss:rrqq ppapOprppppqVqr}s/st ssxrCqoYml jhffnf fgWhhYhahhhhij7kklmo.pqrs sfs3rrOqnpp8p,pppoooooooooo\oDoaopq[qqrrqrstkuumuuuuu6trq*nckh8dO_YSMKQcV6Z^,a_c}eg!hijokklmnopqrsttntsrrrDqqapppKpoooooooopcpqponAljhfdb`__X_`````j`l`a'abceo=o3oDobogo?onnnnnnnenlnoop?qqqrrdrstu4uuuuutsqnnjg3b]zW2PJC:AFLQTX}[ ]_)`abcdefgiU4TTZSSSTUVtWZi]1`~cfijlFmmmmbm$m m&mTmnn4n"mmmmmm_m/lmmnn(nopKpppqUrrssYs5srr`pokh%c_MYTM0Fo?X8C6oK=`<|^@'ABDmEFGoHJDL>^;97q6O55w43211,012t46:?#DHM%Q=TXZ\^)_U`Bapbd_efgrhhdhhhhmhohZh#ggggh'h1ggKffZfedcbha_]uZEV9PL1F@:O3-7& fQg %z)-h0-246$78r9:n;:<;=?ACE.FkGHH]HnH GG}GGHGGGFF}F]EE?D_CCVC*CBB@><:864F2/.D-6,,Q+*)(h''X'(Y*7,v0O4M9=AFIM^P7RTkVWY[]_M`abcSccccdccvbb`b#b,b aa`@_H^|]\[Z'XVbTQNFJ D@9:5#.("qY"$$')M*+V,-.a/)0 13l57z8:9;;IB#EPH JVLNQTVqXbZY[]]^b^_ _;_S^^R]|\\![[AZYyXDVUTSxQOMKIFiB{>+94/O)u#hi  sH9 !"n#'#$&')+-E./k0l01W1J131)1W122+2611000/I.g-,,q,"+*)'G%A#7!8rHEYq#f#'F+.26P9%<:{8K531B.*&o"d*  P71 A N M  ? 2 V7?6v'73`I#i _k=2BObg < 6*o!>$'*,/147g9<=?A/BCDZ=&;976420.,*(%"A)%g FahkZj 5_BXdAF\xl r | ^q("b7 zfjt!$g'),p.1 3 568g9I99:39876i5%32l0.,+A)q'p%Q#3!gf$TJKf R B &'q3{$uiO   i > f q f a 2 7ubqq:Z[z_xfPt}r es"P$o&(*,S-./:/T// .3,+*)'&*$t"!O^HV 5A %6A gfUd:NX]fojF+ d08]  ]*v$Aw [!"#m$ $)$Y##j"_!{ -a! V 2 sm5t/ov #ZO-Cqs0L-0goD:8/f%x[JPCGX #?_zRqX1h } lqa]J@IdD%S4D V  3 i ,ed0ti&4a>*E13fvPns-kiIBLZ9[ovnyiG[\mc L 9n<7j 0 O EeLb23`RD#z% 1t0W9eSLA7m9+Qn}|{|U/ cb ` & f G &Ul<LuY_ weu` gG+w >\]`?37A9,%)1BWcaW[T:Fz`KtmL?ob%L_P9x3puB:qX*0hi:Iyl #7$paA*&-9CJMQ\eeen|y3F:4z($Fo/M.% ?g} g`w+PukFa?L)xS>xD_dH?1/-8EXiy".&^kQbzbvg0+#\Z~Jh \+t /%$vrYEry$PZ[EF)<?xka\k{i-03\`v ,A[FKV@m*%9f|j@3`R aOR2;! e>)<oW1,;pkBD+q,;b+Qu<Kj" % n?pi}GtH(wlg:?JU7=5\}yI L<c)?QK4CA <4B)t-6(6>jD"b)Pv;w'U21$u U2$CWrN*+YD& xjf~.#!!N/"dO& o DW2GVA^'"[ng J3fwgajin{nF1)9B]~+ ~~&mB'%tV):8q_G+]ho]<W2y}snsu~ph^coOO qVy D:%%tv3AF={qe6 _Mknx^Gvigju|ytz\ \Zs;N *2+8 !Z-\_~1, tAmfJr8 ;kxgZVQU[hskF G<D^FZp.,uHF$)4F& uW$zItw-tE"9wqK%!.X}nbVYawzW2*,Wd+o<og> B8 /- =F:rxC /|A1p]T*J"`cI9?F^}x];-*Jr]08j@0Dz~S'2 >3;noD"__r%)6y-.Dd~qW@?IavnQ?*7YS=7!YNs ez< -,-A2$czc:@pU +w0,O3%:Kcz}i]RYf{|YA9GOh}X>-:Cq:pv&X~zZ, 2. 6E( GbgbM93;UvtNbl oG=4>H]wwylI@Qvr_YPRQh(Z 9h|h?0/.,!!-L7*KcfR9-7Sit~oG.5hf x[:44JazylrqXJLFSk&+r/(]pgXA5.!$)$ <:$2LVL:2CZUQfy~i=*F-LiRFOXgq|kf^\[_]lj!Kf7,D_kX@GOA(%0 +A?&:ZcI,2IRXblyv]F:VBKxYQQaixwkiceftcJT2-;T^YNBGE&.4":M="*TmY5*8Naa[bn^HXe.&Elepuz}}{}c&1im;'HUSJBKQI3 ,J6 "DN>!2WcV>/7Ocmjfw~iQCWe<-Mx~~Z#6nyJ4;M_ZMMQUO9%*CE#.MS98\lZ;.<]xueekspVGPs{Q@ItE#EzqL>SrwhTHUbYC-';MI-"  %%#<QTF1,C_gYB7Eaqwusxf[fdMWp}S5>]wYIOaogVQT\ZH4/8KO9  -7-#)?]hQ40C_m_G:Fd~sn|x_Ujz{yQHX~iTT^ig[KEQ]WF61<II:"$1$  -1-)0I[UC6:NdmdPGXs}~}qpjeqv_Ud{t]\glkf^YWZVE78BJH=- *-   +53.3?MRI>=KetiVR\jw|ztr}vpv{ntl\avuc]es{qcbhmiZG65FUN:,&),& !#&2;@@AMTNC9=ReeYRT^p~vnkvokitxsvywoe`glfVD85>NSC-#&-/$  &++'"(:LNIMONH@<?JTYXX[i~~wjhjzuqs}~|qa^fnjWA47ALPG6('-/+! $'#"-;@CMROHDDADP]a_\_iy~~vplpu{unosz~yy}{rklu{wgWJDGMPK@60/0/)    "%##(-8IRNFJNIGP\dec`Z`t}wuy{xz{}}xqjkptortvwuuuqqzyla`jzta[]YUSOG?==93/)!  8T`N/ /S^P@0$.IgyreL4*(?gbG5/<EXq{pd^ZUOFCBLZl|pcXHA@IQ[gp{~ypifbcdhopj`^\XPCAN^_WTNB:=GQPB.  -Ztc6 >al^<#!,Lr~^>) 5Wx\.+FYgy~wida\WPJ@?CRew}ssuqjf`UNLOLOYizxl]OIEM\ge\YWVPB9=INQY[TH>:>CE;(  ?ax<1YnlM)>d}nK.%9Toy_<!!3Tkv{tqfSFDKJNYbda`^_[TJ=:@Q_m{{gRHLQ^ku}zueO>8>@GQZ_ZNA9>FR\]WJ=516DH<#  .jU$gtK9lqC7eS@lzhXK>;=FHPdtxneWH8'*E]tcJ>17CZqjJ0('6FU__]UHBGQSQOKG?/)4BC4  bS,mFGt_7%/U}X27cqX?012@Rev{zpnbJ1!$(1;J]ny|mY>* &;Yp~scJ70-8DUkqfPC>8=O^dS2#8@8 DZ+rM'T|}T-6fSH}p63PqoZ> 8Qfxvkc\]bmx~xeF& IopZB/,,>Ylo^O?.0D[j^B 5>-*vY*oA#VwykN35UrI-3Ntj;8[ukM/ )>Wn}qh`VLC?<?AJSap{sX:$ +C\o}vhK(0QmsP*%>YjY/ )%  ^zS+o='TomP3*4\e0 6m]Ja2EibH6203358:852:F_jD% =dzkB%Xq><juV" rK ,tB &ZfS=-*@`zwO39_a19juK )Mm{mb[SNGDDHOQMDA<4,$&*:Pjl< RxvKMw~l?=M@+ FvE1\jK"AdwS*)hF JT:l]0  6Nbo~xh`WK>4-#!,HoOCUL{: FS6#`A&XY5;[ecL+">lf+ :{z8)bi> :Rcq~eO8!I~G&uw0Bw^7I9  DN!PZ,/U^I0#$D~IGFk E5 d$.AFNRQWkwdN8%],d {4;w0N< "\MV4(FJ:#(Gfzg5 -b~y=l }17Pd|xjWC88>76CT^cmpm`ZE"CHi+id+@0 efE[5"?<$!BefBGhc^ Jt?|eJ2" 0Pix{qH(= Bm.C:Lwl*/7wh.AQ: &$%HXT1 I{p22O7jcF:3  %U~n3ovwz [*\`2 OU'=U8=SCNn{}Puae[r4.AIOG?) -hTl DAs p/& Y% BzJ|f0j'Rv#Zea(A PqW A[L IXpL_hw&0h 5CQRK<6*Y|FmZl`a@QLI[3%hq@!#ti$`%BhRG)b 7IbbW8F**m1:H86 G#|x3{_!<N*PJ  i     M I /  & * P $ n m "  K t8 RBNp UX7t&jssC7TviOFZ`E{:{yS _ ]^1yV7Y <zY:sfDz5m ]I#ggwe ghk=Atr{<t)du(98^  gldH/ZI Ch_#G,cVpa1(t~c>Vy]MByO" I "bV|?vhT8z|kn9)AL / -4CBXo "$t%&'Y'(?()_)))6(((()(((v(d(z(((((()%)K)N)@)();)-((('Y&%$#k!pB E4E8 e|'p0 eo  m MgG|@ !#s%&( )w*,Y-/n012}3)3456d66m6-6"636S6O6555S5F5C5444445 444B4 33O22711!0~0.-~+=(&F# OMW NA*'c^ d]@BE{l T D r #q~e!#%'* ,'.U0@23m46$797:<>?@ABuCDJDGDCC,BBBqAAa@@@U@=@??@@*@_@@@@'??m>=<<;>::9&7530.+(7%" :nl^( Q I4@NI < J]\ 2"&)+-0J2579;=?@dACVE3G7IJKM*N/OPzQPP(O1NtMMOLKK/JtIII}IKwKdKvKJIlHQG#FE.DCB]@s><9630-R*(H&$" H/L5 O Ytgi_}\M "#x$')-00A358;:=@XC EGIJLLMOQTUWXYZs[\5\[[YYXCWW V4ULToSS^S&RRRRSXSTU4UUVhVyVSUTSRQ{POsNLJGDA>;K742S0.-i+)'&{%i$"P6 A c  Q9_*x%"+@o} !#)$%&z&''(*)+Z,-/%0358;i>@CTF HKNoPRTUWHXZ\^v_aDabbcccc4bRa9`K__^]]+\h[[l[1ZZZyZZ[\0\]T]^_#_~_J_ ^P]\[ZaXVTR3OLmIvFSB?=;/983643 1R0.-c+9(%#!_Li G 5J0b,('p&W&'(4)O*,.0A1F2 2f23|46>768C9;W=?iADG2ILO^R$TWZQ\^S_a6bceFfghiij5jwkkZkKjihggff7ee!dd?cccc\c"c-cUcdAdeHefg)ggggg`ffdcLa>_R\ZWUQNKHFuDC#A@ ><=:9m8 630.o, )'^$2 ~nZ P t@t;74L2223 4+5H78:<=p>>?/@*AWBCpDFHIKMP%RUWZ5\^afce~fhbipjk:klJlmmZmymmnjnnnmMldkjjjJiiiSi,i hhhhhhhi>ijjkkl lWllll{l=kXj;hfdc`^s[YV9SQAO*MLJHG-ED!B@>=>>?A#BE3GBHIJbKKMMNOQ1RTVYWY[^`=bzdfoh,jkmnppq_quqqRq7q"qqq!qMqqqqpoonn mmm^m*mlllll~lllmDmn8no3opApqqOqqqq2poWnlfjhg eb`^2\ZX{WUT5RQ)OMLJ9GEB@=:63 .+('"?(U+PMYJIIqJ=JKLNPRTJUUVWXY6YZ\:]_8`8aFbdf&gi\jkm!nvoqArTsNsssisrr8qqqqqqqqq.pp)onnn8mmm\m"llllllm4mn;noppqdgcbb`_I]\eZXVfS`P_LHDy@>;7I2..*G&$&!da`^__P`3`abdfghijkZkll_lmHmnn7n;njnoopOpq2qrrstuuruMu%tt%srrXqqqYq+qpppFoonKmmllJlkkkCkMkwkl=lmNnopqqrsssstt sssssssxs+rqqppoonGm@lkjAii hgfedcpb`_\PYVRNJuFA=v95d1/E,jhggzhhij jl.moppqrSrss sessttssstsss|sMs&s1sLst9tu+uIucu,ttqss?rr.qq`pppfponnMmllmlkkklk0kjkkmllm!mnopqrsnstmttthtBtsssssst&tsswrrkqqVponmmHlllqkk!jriivhgCdbG_ \XTPLNH7D@= :N7m$l>l l-lmn}oopqrs|t6tu[uuvvyvvvvv{vLvuuuctttbtatttttttKtss rr"qqgqpp.ooonn>mmlldl1lkkkkkllmCmnoop~qQrrsstHt=t%sssSs=sn-mmm0lll]kigeb_\Y7UQNYK2HE]Bo5oo|pqqrsstsuEuvDvwuwxExyyyyyyyyayxxUww;vvhv6v uuYttdsssrr>qqqMppgooo$nnnuctss2rrqqqqqqMqpppqqVqxqnq3qpppooInnnozp1q.r-rssssshrr*qeppooogoaosopcq,qrstuvwwXvuu tt!ss+rr'qrr'r)rqqr qq`p4o/nm=l'ji:gfecb)noAppqr"rzrrs$s]st)ttuOuvwxx"x:x(xxxwwwwwwwrw v^uutPsrrcr rrrr:rZrkr}rrs sWsssJrrr*qq>ppoqo9o(opPqCrAs sssssrr=q@p,oWnnnRnanoovp4pqrsu6v-wwvvuxtttt2ssassss5s.rrrrrqpp onn&m1lfkjihnnopopqqrrqrrRrrs?st$tuuuuuuuju\ulupuuv?vlvFvuu%tssrcrqqr rlrsost'tltuujuuwuttKssqrrqpppq qrdsHstVtItJssrr>q9po,nfmmzmmmnnoip&q qstCuPv7vqvxvuu@u,u>u9uttt\t^tttFssttssrVrqqqppCoobnmno/opDppq"q ppqqqqqrgrs`ssssPsrrss+st"ttttttxss-rqqqqqqr~s@ttuujuvvPvwvTvuuuqutdssBrrrs'stZu uuuuAtt;srqpp o`nn9n nnoop^q qrstueuuuuuuuvv,v uuuuuuu\u4u#u;utsssYs rr~rDr qq~mnQnoIopp6pEpooopkpkp_ppqZqqqqqqqqzqqrs/stt t;tssroqq4ppq qjr3sstu uluvvavvvvvvv^uuYttotetuuvXw!wwwQvv&uotsrqqCppWoooop5pq*qrrstpu,uuvv#vMvvw5wdwvwTw+www vvvjvw vwFwx&xyszttEssrrrrrs sss#s%sZst*tuuv=vwkwwwkwRwpwxxy$yzzzzgyxwvutssrss+sstPtttttuu!u[uuv vwvwRwwwxAxvxxyxxxxxPwwwmw1vvuuuvv0v>vGver1rDr8r!r#r\rrrordrrs.sZsPsSsrrSr?r-qqmq'q2qCqr:rsxstuuuuuu%tt+sssscs4ss rrrs7st2tu.uvwvwwwwrw^w}wxxgxyzfz{ zzy;xpwxvfuetissssttltu*uSu`uQuYujuvuuuuvIvw3wcw{wxxTxyy\y_y4yOy/xxwwUw'vv?uuvJvvwwBwnssssgsvst"t&t ttKttttttswrrrlqq{q$q)q:qr$rs]stuuuuuu tmsssrr$qqqqqr.rsrt9tuvwfxxwwwZw3w.w]wkwx?xyz*zqzywxpwvnuwvvvvuuv/vwwawwtttttu:uuuuvvIvcvvvu9tzssXrrfqqqqrrzsst+tuMuuuu>tssCrqppopVp1pPp_pqSr7s#t"tuw wxyxhxRwwwrwKw\w]wx3xyyz6yxwtv$ts4qp_oNn9mmnoopqr\rst-tuuRuuuvZvww1wTwxxyOyyyyyyJx~wwvv_vPuu[unuv}ww{wx?uuuuuvmvww$wywwx xYx:wvvuvttesss[sOsRsst.tuuwuuutssqpopnmllllmLnopIqrt"u8vwxDxUxgx&wwwtwywzwx0xy7y>yxx7wvtqn'khewb`^^_+abdgilkmp qs.ttu\uuvIvyvvvvwwxQxyRy|yy?yx2vutttssqsttuuv$vv;vvwjxxy/yz(zzz{{zyyy4xx+xxwwwwwMw%w?wFw1vutvrpnljgekdc8crcdUe(fh0j@lnpxqsuDvwSwwwfwDw^wwowVwpwjwvus4pSlthda]Z!WUUVxY)[^zaWdgjn&ptrvstu:uuv uuuuuuv~wwxCxxxxdwv_u tLssSrrlrmrss\stBuuvTvwaxxyhyzzzz{<{KzzKyyxxxxxxkx+xwww[wwyw3v&us#qnyl iRfFc|`_`^Q^^_`kbcfNhkmo_qs{u;vvvvvvvvvvv{vu^splhc_-ZVROM'M^N{QTX\_d*hHlYoHqstpuuuuuTutttrtuauvwvGutswqLo l0ivfdb_][ZeZZ[\x^8`6behk&m`or.t%uuuvvvv vuuuutr>n@id5_YUPKHEEG"KNRW[`eyjSmpr,st>tttt9sss5s,spttuFvvw vwvutss}srqqnqGqdq7q0qgsst&ttu@uv`vvvvmv8vSvZv)uttsos6sOssbs/s#sWsstttsDqom>j/g6c`2\Z XWUWWXY[]`cgiloqsuvv-vXv/vvuuuu"tsplrgM`ZTO J#DA ==?:CGLQV\b8gko_prs&sssdrrir$qqrrsattuvv1vXuuOttssvs7rrqYq pppGpEryrrss;sLs|ttLt.ss rrrrrq.pEooop$pp ppwqqrrrqpnn/kheb*^[[WVbTUU&VdWxY\&_ubfiPlYopqtuGvdvvvvvDv%uu{ttr"oke^WPJEM?c;779t>bBHMS]Y_ej!mooqoooVoopaqrrstetttttssssjrqqq%pyooqjqdqE>8=40&028C=zCIPV\c)gkmmoop}pGpoo+nnno opyq{rqs5st-t{trtSt sssssSrr/qqppq+pppo{nntnnn?mYlll lLll4k?jWjjsjkkl!l!lomFnEoo/o$mljhYeAa]YUQOALL_KM NPSX \1`zdhRknprtuAv$v4vuAtssqpnkEfE`ZSLE+??95;12P4\9?ETK8Q@Wj]+c.gvjlunXooooconnonbnnofp,q5r4ssttVtathtGtttKt]ssIrrzqqpqq/poon,mmmmlkkkkl3kk j&ijBjkbkl llGm mnnnmlVj:hReb^ZVSFPNMMLN3NQPT7XU\D`KdNgjm#oqsJstttwssXrrpom1jfa(ZTNHCt>#; 78:@ DJgOU@Z_dhdkRlnnonnnn_nHnVnnoip$q rrsstt;trttttu9uttQss[rr*qqjponmm mmllkQkkkkkjiieij:jk@k}kklmnJnSnOmblQj~hfc`\YV*SQPPAPQjSV9Z]aDdgjloPq rs&sslrr;rqq2p oljCfa\VQ[KG`B@f=>@EIOT X]af5iRklmn9njn0nn mnn.nno2opqrors5svst9ttu6uvLv]vvuuKttrrQqqpYo3nm~m[mnmlkkklEll]kpjkij&jzkkVkkl9mmnnnnWml;jifda ^[4Y%W5VsUV?VX[^]adgj*lTmopqrrqppvpKp,poEnljrfc^CYUPALEH|FDMEFKWOdTX] aduh+jlm9n n!nmmmmmnn_nznokpDqqrrKrrstotuvgw$wwwww|vvqtsjrxqLpnn3mmmm9llclmmqm"lHkMjjkkkl lFlmno^opoonml jMge`b`<^S\v[Z[q[]_c fhkgmnoTp[pqFqpoononnnn7mlj^grd@`?\nXjT PmM-KIJ@KOSX)\v`Qcfikm@mn,nmmwmFmTmtmmnn nAnopSpq q*q[qrstu`vwx_xySyyyxuvtsrqpooooannin'n^nnnmml[l?l^lmmYmnnopcpq>q@q5p}onDljheeca`_L^_@_acfil%nXokpNpMphponn-mm'lllqlllYkTj\h@ebp_@[WTQPNOqPTX/\6`cfikmn0nbnn|n'mmvmvmmmmmmneo0opPpppqsrXsqt1uv^wxy:zzszzzmvvussssjs)rrQr?rCr%qqApootss:rr qppjpq'qpqqqqrr2rXr qponmfkihf]eUdWd cdeKfhjlno6o2o+mkhfdczcbc6cUd-epg1hj#kQk6jigfieccbb&bdfrhjlnppqqqqVppmooHnnnintnnn2n4nopdqq}qrCrstuu}vswxgyyz{x{|_yxx2wwwXw;wvvvuuuyu&ttDsrrEq]pppqqQqlqjqcqsqqrqqApZonm}l&jiTh'ggg?gEghik\lnTooo(nljgd*b`G__x`)`bcfThjlflzlEkZjjiXhh(gghi+kln5opqr}rrrr qppFonnnqnvnnnPmmn4o"opq+qr'rstuuRv"wwxfy0yz{{y[xxxpx_xax_xGxwwJvv uttGsxrrq$pp;pWp{pppppq$qmqqqpUonnlkkjBjij jn1nmmlm7nnoppqSrPsrtLttuvwwxpy0yzKzxxQxxxx:xBx4wwyvv#uZtss'rQqppoo4o;oRoooooppMpppgoohnn mCllkkkkllqm&n?odpRq2qJqfpEnlFif)b_]\[\]_baei kmnToo o,nnnPmmrm&mnoopqqrus[t?tttssryqponngnmmmEll7lmmAmnooprqrst'tmuuv^vwxcxydywwkwKwVwwwwwjvv3uttsrqqpDonnsnn n9nonnnnnnoCo_o8nnmmm^llvlZl2lTllmmAmnopqMq`qpzo.lifhb_]O\,Z[E\@_ae9hknop6pqpqpooro:opfqQqrwsdt]uOuuuKtss r^qYp@o6nn"mmm+lell&lmn6no

vwwOwwwwgvvyvMv?vuuuuttttpssr`qqqrqqdppqqr-rs.stctuuuutsshsrrrGqqmnoop p`ppqq(qq?qVq>q'q)qeqrrssnsssxs rqq~qppgp4ppop pCpq2qrstuvwvw`w/vv#uxtsrRqon5m#lJkkUkjk kplmo^prs2t=unvUw wjwxxQxww-vuuu]u"ttttRtt>tbt0srrxr(rMrrrr^qqrr|rs=sttuuuuu5tssarrxqpoojrklmnyooqopBppq qKqhq~qqrRrslst?tVtrt9ss^rrMqqq*ppppppqr"rstuvpwIwwwwv7uutosNrponmmSm6m mm"mwmnopqrstuvw1wwwwwSvuu-ttssssssKs=ssss rr1rrrssfs]s rrrsBsst!tvtu8uuuutuss rIqp'nljfi)jl0m%nno=opLpq9qqrKrrsastvtu>uPuYuttKssrrEqqqbq^q"q0qrr)rstuv~w=xx6xJwvuutrqpp%obnnwnSnn7nbnovpOq;rKsFt:u>vvwRwwwwwXvutss]rrrrr|rZrSrrsrrr1rr0rsksssssstBtttu(uxuuuuutksyrqpn{lHi9f`d)fhjXklmno^p pq qr>rssttuusuuu.tt_ss(rr:qqNqpppqqrsvtbu:vvw2wvuts[rHq=onmm}mllllXlWlm-mnoprs t9uuvHvvvvDvutsxrrqqqqpq&qq"q~qr r qqqqrls8stst tQtuuZuuuv'v2v"uuQt~sr3qoOmhjogWcC_Z^b5eggik0lmnop~q qrssstvuuvuvv uu=tt*ssrrqq"q pq0qjqrsvt\u3v vqvvfutlrq"onAlkoj]j jjk-kkklJlmnYoopqr|s`t9tuNunu~u:u&tsriqqpppVp6ooopGppqqppq1rrssttNtuIuvOvvvw0wvvuvtDrqoZliea\WQVZ^adfhqik4l:mmnolp2pqr&rstUtttsrr|rqq%poooeocoopQpq3qrssss.r2p_nlcjfhfvdcc"ccdeff8fzfgGghwi.ijkmZnoq%qrrs rqpp3ooRonnnninonooVooooopqrssbst=tuv6vvvvvv9u*tr&p&mhjgic^lYJSJM~HNZSW[^`cGdfkghui9jDkllmnopqrss1rqq1ppopoo ntmmmnnKnnno?CHMaQTWZ[]=^W_Q`CapbdPeg:hjkrlmmmFlkk,jjjkii0hhhhhihhhifjjihfdLa_n\ZHWUWS]RBQ;PPkP>OOOOOP6PRT VY%\]_begjkZlm m,llCkkkklkkkkkkll%l lRlnoppq`qqrsBsssssr qomifub-^LCFJMP\QSTUVXY[|]`_&`bdfIg(gg(fVe]dddd]ccbbbbbbbjb#bBbbbbQ`^[YQV|SPMK-IGFF(EtDDACCJC;CCDFHKNRzV]Z3]`ceh hiikiHi,iTij$jjjwjbjwjjjjjjkk~lKmDnAoooopHpqMq9qp3o@mljgc%^ZU}OIB;4-).U307;?GBDF"GHnIvJLMOQSUWY[\]Y\\'[.ZZqZlZ>YXXnX^XcXXXX>WXXOXyWWXUSPN3KZHnEBx@>= <;::9<8777T8#9';;=!@CJG`KOSW'Z]0_azbbc`cdefofg}ghh hgh&h_hqhh}hijTjkjjjkkJjjThgleid ac]XT5O0J+Dj>71Y*#~#e(&,0`469O:<<=?@qB>D/F_HqJLNPQRvRQaPpOOOONN>MMMMMMMM*MTMMM#LXJ{HhECh@>;;86~43y2h10/.-,,W+,-/1l48 <~@EeIM1PSVYZ[\^C_aVbcdejeeeef/fafHeeefffff+eoedddca^\qZWSyNIuDS>83)-& m7"^%)+./0113/4t618:<(>9@_B;D-E2EE}DD$CCCCKCGBB8AAAZAuAAA]@AAMA@@,>RAEH1KuNP2QSUWY[]7^_g___`I```x__(^_&_}_^]\[[PZYXKUSvPNKlGHB=83.-}(2"4 aL) ("$ $%V& '.(n*(+-0234\658/9D:99E887777766}6I676K6555H565H5m442D04-+)l'<%N#\" xh )!*lq"&*r.v2=59<<@C/EHJmLO QQSUWWX,XJ;9-63l/+&"5I NxJE ; ?>0n1l3hQhS!$"$"""".!!!!!!_!.!! +Z] ? u  z JlEq ~ 1"H%),02}4749<>g@'ABbC*CDDIDDbD)CBAAAA?>?8h J ;~* + j  P |(B}]XCg E ` x%!Q#%()+,-.h./ /s/e/.?-y,,A+*)F'&$"!:g * +O%w}Z<HWI.rJ1H_ifnD<D+0DP!&|QFj y I1/  !"#$M$%/%%i$$5#""X!y S n~  & sZ2ADsqIc WZOlW C`=)]. "*)  9NPIb 0 _<,@}I@*jV )  R-__]6PQBd zA)nN-MV :0KF'>VQ3 /`=]kppVL?Zflqe`  `#pvEC  } tE+VH68#P:-#%{P`$( 2&3*g4|{=nhz5c4Ef}xvaI|.qAk^y]=fgq(iTC6 w&/n*fk[FJy"){E $CXhznM(4 |cz<V^Y1u9&uW!{d("|fn6qv6O\I~aRGE?=8;CSgqodb\QA2!(UNz^i2houdsA(V?(G{nTB{d.v5xqvC Iqo.G9&xcH8*+/9?FOYahnv<WZ4#7z[{Q|:BYw~yp< \trY)hOE'XCyC%q0'fJ>20)/@Wdr,DN'_xN`6TG*7-q|xT$w!Z2{@&4fwnG 3ttIc\JH$3Kne\cr{/A=eo7DQ!by1x=BN6^."AnaB<gX[C M2@(h9~&L{h1:HW R0vVh 4[$|G.Dl$$qCzn ~DsI,#xnEKSU'J! $Ad~~PI Hj&3G5== #>x{(f% :+<AlF)[&Kv=w'V22 l cB%%/IVmY6":W=()%uy8(M5-eG/iNX3KG<^&PlbC7fsjlbdtxS=6FPi'2>EW]( //$}Y4@A "u%d=/csiU=];ymktwsndeoQP/cK< "w}&: DMA{% k9rbil+|UR{mio}xqzb-eR cv:I$7*8  "]2_f v1'&9ghJh6Et{i]ZTV[gm|m@JEG[Iev.%mzJC% 6H&xW jAsl!i95wnM,*9dn`SU[p_-Go@!L&H;y5).BH Az}E)w;)pZJE%bfN>GTodF7+Ah^ ;7sD+@qsL- !F4 HywI(f^q,!+u/1B_{qZIMUizmP?0@^]B6OFuf_p3 )&  6D1 .j~c4Bm{S +w+/ Q4$6HeoeXZf{{ZD;HQjcE3>DrApt TysQ$/+ 9E)"G`cU=.04HjzlG_bnD7/>Kc}rsrOFVybWZRTUn @'h7eze;)()*!!0L;-Oe`F4/5JapxhD/4bbrS438Pf|zkogQKRLUk30z2 #XkbS<.&"'" ;>.:VXH<:FTQQct{j<'G~/MbPHT[gonh__cjfni!;_1#7ScP7AK: #/$AE)>WZF//>IT]evuW;5W=Mu[UUcjzwie\]cug' GX60:PZVI<DD$ +5%8Q<(K_Q2!(@YYS^lvpRCU\*'Enity~zusjkul5"ExS/6U^YMCINH4*J: 'NR;!0P`V8#-J\cffrtcPEXc>/Ks{wx_*>uW=>Ob\MJMRL8#&@F  -=VV>%"9^pX5*<Yrrffjsr[MWw|R?EoI'BuiG:JfmbNAMZUA)!4GF,  *'*?ORD.(CadS?8F_qwur~wf]gcJSmU8A^~`QVdpiZSSYWE2)0CI4 *1*#'9U_G,,B[fZF<He{zoiwu\TlvPGWzhhr|yjZS\c[H6/7BD7$5&   -20-3JZR@5;L^f_MFWp|}rq~hetzcXe{{edotrkb^\^ZG88AHF<- ,1 # 1==8=GQTK@=G]lbQNYjzzx|suyowvim~wf]coul^[`fdXF43EUO;.(+.)  "$ (3=CDDMQLB8;N_`VNP\p~~}{toy|ono{{}}vlglpk\J>7>OUD+"%-/% %**% $6GKFFGGD>;?HSYWTXfz~vzzqkpohkxsqxzhQB@EMQI4" (,)  (*%#,:ADJLIDBB?CO]a`^ajz}||{|try~xmkq|{}xrrz{l[NGHLNK@3*(*+'   '*)(,3>JOKDGKFDM[dhhfag|}xw}vrv|~{tsx{uvvy|~~{wv|n`]es}zkYSTQOMJD>;84/-( 6T`L- 0SYH8,".MlzpdO5**Ad|~eG20@JYq}vld[PHCDDM\o}tg[ME@GQ`hp~rlib`dikhc]YVSM?;IZZPOK:02?KMD1"" !-Ztc7>bm[7*Jr}Z:(0Tw}[22Qak{xkjibVKC?CHVgwyvsokgbXQPSSX`n}p_NEBIT\]XTQQM>6<ILNWYO?428AG?.Aby? 5ZmlN(;a{tP0';Tmz]8#3Rmz~tqgTFHPNMS[acdb`\VOFDHTbp}|iUIKQ`nx|veO=36:CJPWUI<7=CMY[TC5.*3EL?% 1jV)jqK4hwO)$=jW@hyfWK<9?JJN]lsngXH9*% )6Lcx_E9,3B[smK/$#1=JUXWOFADKOOMFA9)%5EE3   eQ 0oDDn~^=/5V}X5#3`iTC545APcx}nh[F1# "*7DSdqz~{n]C/#'*<[sq^E2,'1>PfmfRD=7=LX^N-)=C:!  GW-sJ*TwwP-!<gOGwm2$6QnmT7 5Ph|sg_VW_nzrR3 Jm{~iS=*(*<ViobRA01?SaY> %;C3 )xZ,q? "WtrcI18^vM-2R{e:Dcv|hP6 *@XlyxoeWJA=78>JS`r{b@&",AXhtm_D#-Ok~pO*6SeX2 !-. ZzW,r@"QnhG*%3_n:*:nWP[/=flTD>7555435604A\|lG( 9\px_: Sm; 4crW!)+nJ )tE%WfT9$":[xU4:bg/:j{J0Les}xk_WSTPOPSTROG?841(',>Slk; JnpGMtyf9:NF3,ArG4]iL 8\voR-!`FEa CxV- &>Vkv~yl`TLE:2+)#)4PtK?R Ls/"K[> .^D&YX2 0O\YE-*Aie) 5qz4+e]0 'BYkxydM6"K}@$ou49lxO:K: %DNNY(#GO=&*QQIIj?1 h+AMWZZ^jzq[E3#!]|}en4-h-I9 UGQ/<?* $Mof5&^~t5t|78Tfx}{o\I=5626>LXblnpg_H)?=iu"Vw\)@6`` @W176?ijB ?|gaW-I8rkQ:'5Tm{U3 8+ n/Dy ,=pm09. 2sf+ @R<   =[]:Kzn43gDhkK<5' +X}s7ioayL!]f7(& MU'AZ@ +ML+ WtwVgb\e9  1AJLSL<(_Mf3w2ciCMHg Ua*&! A*H\K  Dq[E~`XKKZkj3rK']&9<B5%U) 'S!S}_(YEm+XTM.C% OqY G^F?YqAQ@A}xA9s#-,*" b&Qh[ofeFE;1pK!6 r(jrDCD ,i.-}FB r-arkadlz!}/Mcj GJM*#r3m4`&_l+>(2m#P$ &  a " #  O  y q m , 5  y $ U / q_ZLiRnD[O7'nv!J6Oo`A)9rU5d&se"Db l i!|yHGk-4j!&DhJ: ] , Y J 3/ OTaI:lSR @r)ca/N  ^ 3 Qd)"k0vzHgp-z>&{Y0{?T  }}<?t1. wW7xpq5;z" ' 0 GE % v"7#$%&&'z'(('''~'x'|''''n'y''((3(f(()%)N)>)(((5'',&&%$$ "!TA3[ d h~mlC![e3T gmq b7 [g{ . o$O3N!"e#%'T(*`+-O.01123X34444444444{4j4o4444455,56594433k2110\//e..-,*y(V%" #_u a W$l2# l% #u-? K k A "$&(u*D+-t/F124457!8:<3=>?@ABLB]B3AAQ@@@l@??????@@<@@AA,@@@ ?d>a=?;:9988F7642/-$*'9$s!"'WF| w U"1>tsu \  K 7)Iug2hu !%( *-6/g1e357z9:<>K?ANCDFHJKLMNONN*M3LiKKJuIII.III9IPIIJzKKmKKKKK#J3IGFDCC@BAA?e=;0852/,\)'a%$/" 0WB; y z$vc}o?7:RH#2gx !"%i(\+/%247i9ABDF}HRJKMO~QSUWNXY.YZ:7,4110.-P+)'%$["n 38_`F l'x)%!!l o2- 1"#$& &''p(") )*+z-.1B47 9<$:7530-*(L%" m &/T?7:f63*101 1A2M3<469,;<2=!=>?u@=@A:BCkEkG IK2MPRU\WZ\1^q`cbceqg hji1ijXjkuklj;9(6h30.#+1(%!0>m* J!IEAQ><<<<=>@CE^G-HCI?J K1L*LM;852/+(^$n $GiRNK[HGG`HHPITJoLbNQ RSTUVWX6XYZ&[]^_@`budeg4hijkm1nvopqqq|q#ppgpUpYpppppp]onn&mNllTlBll$lKllllllllllmSmnoGop@ppq4qqqqqq'pno;nlkji1gedYba`_^T\ZX9USTQ%NLIFCq@=~:E62.*j&W"eD'`[X2USSaSATT]U_VX[]^_`abc~cddevfQgghLiDjckSl,mmno;pqr%sssssIrrqbq ppppqq ppEonmmllclll!lQlelzllllllmmnrodp4pqr9rsMsssssssurqpp6oqnmlqkPjAi?h@g9fOecay_J] [Y4WYTQNKHpE9Ai=^840s,g)&+# a_G]\\]]^D_:`bdsfg[h=ipjck"kkl)lmmHmdmwmnnno oXoppqKrrsdsss[rr+q~pppp+p)pp%pJpIp/oo n$m/likkk=kkk=kNkpkkkkll@lmIn0oEp0qqrst tntmtYt*t$ttssbrr9qpp,ofnmlkk j@iNhFfeGcb`_j][+X UAR:OTKGCi?#;77d4>1O.+gfeDdef5gghikzlno$opqrrWrs#syssks!rrrrr7qqqqrrs:ssss{s"rqq.pp7ooooooonnnmBllkkvkVkjjjkk'k^kkkkklHm.nBopqrstuukuRukjjwifh]gifedaj^\YVgRNOJ$FMB?<96jRi}igijuk>llm~nopqrxs1stgtuuv vAvuuusuttcssIrrrrsOssstsCrrkqq1pp0oooooooYonqmm'llHl!l"kkkkkll]lllllmmnopqssttuttttttttuCuuput(sjrqqpFoonmmKllOkk2jjriigEebca!^[}WT PMNJzGDBllslmno`p/pqrzsgttuZvvvwrwxyy=y xxxvxwvv2uttttttStss'rqqDpp3ooogoEo1o*onnnntn#mmmmmmqmfmmnn^nnnnnnnoappqrqs=stGtZt.t,t9tAt[tjtu!uvcvvnutss@rqqp0o_nnFnmmmKmnnjn_n5nmmmmmTl=kaj hfdWb`^)\5ZWmn nopqFqrbrsxttu+uv9vw-xxyyyyyyyyyayxx\xFx*wwpvvu|tss$roqqwq1pppppq,q}qrArirUqqqqUqppoooppxpq?qqqqqpq0ppppppqqqq-qqrFrs,stuvwvvu!tJss=rqqpoo-o@oOoWonoaooo3nmmkji gf|e*camn[oopq5qr rjrs\st}tuOuv`wLx xnxjxxxxxxxxXxxGxZx>x www[vvwuuyutuuSuuvdvvvvuuhttasssrNqpppqqrersFstuvw.w#w0wvvvvuvVvuu~u-uuwvvvvOvuurrrrrrrrxrgrmrrsrrs]stssssqslsvsvs>s#s7st"tu/uuuv)vCvLv)uuuuvvjvvvvvvvvcvnvvvvvwwXwdwBw!w$wgwx*xyyz zyz\yy xIwsvv7uu&ttDttHtuu3uYuuv2vw/wwwxx)xUxoxwxixexUx9xxwwwxxExxxyyxxxAx"x wwwaw.w ssssssssssstt-tttwtttpt)ssssss_sCsTst(tu9uuv+vvwvvvvvvvvvEvuu^u u u1uIutuuv+vvwvvvwewx2xy.yz3zzyz y"xJwwvv3uu.ttttgtuHuvvv=vuvw/wwwwwxxcxxxxxxxxxxxyy2yxxy,y9yxxbxAxt4tyttuTuvvJv{vpv5vv-vvwwwavv9uuVuKuxu|usuouau5u2uuutt'rqon'kiDfdc]aaa\b)bdwfphkm oXqdstvvavvv\vv uuuuu-tsrbol1gc`p]ZcWV7U(V#WZ"\Z_ae hkemoJq,rgsvssssrzrqq]q[qr.rsot?tu}uuntsrqqOpppoop=p8pp8ss*sEstOtuuvuuu~ujuQuttHsrrnrLrOrrrss!sFst9ttt$sr5pomHjge'ba_)^|^_ _acfiml nqcsu(v|vw_w?w"vvvuvsrr qqfq/pp p-pwpDoorrrtrrss:ssssrrrrQr qpp_oppp{pq1q\qrrs`stsrqpVnZlZif]c`<^&[ZZe[o\A^m`dYgijmpstv;wwwwwww+vv ubtRs\qolbhc_[kW%SPNNMNPSVqY]CaehSjlnopq0qhq ppooonoopSpqrst:tjtnsssr}r'rqq8ppppoorrr+rrqqrr-qq pppp^pBooHnnznno[opappqir#rs]ss1rq6p n#li&ebZ_2\ZFY*XxYdZ\<^bOehloaqs5uvYwDwwwwwTvuusrpnjkgcZ_i[sW'SP)NMNPSVmY]Ca dgj~l mop'ppppp1oooop p|qqrst-tftxt4tss|sRsasGrr2rHrXqq(psErr$qqjppppp5oyonnnnn_mmHmmvmnfooopIpqrrs^rr:pon lieb)^\4YX>WPWXZZP\`Mcg"jmp!qsu.vTvwwwvv=uKtYrqo|mJj/fc_[W~SPOeNbOQSTXVZ%]ae:hjbkmrnop@ppppopSpPpTp}ppqvrCsstkttttttttttFssssjrqssPrqqCpppponnrnOn#nmmm6lllm\n novop#pqrTrs5rr ponqljg&c`^[uZ+YYjYlZ\`0c9filopr{su!uvvviuutZsr/pnlj g6c`]YVSRQRT}WDY\` cfiAkVlmnop,ppppppppqqbqr{s9stitttu uSu}uvv&uuuuuytstsrqpooqoLo5nmmmpmJm9m5llqkkl+lmAnno3opLq qr;rrqponmSk'heb`V]\[[[e\q^`cfilKnaoqs4tu*uuuxttAss qpfn`lRigXdb"_S[YVVUbVnWZj\_^behjlrmmnknoopp p$pKppppqqPqr+rsjstt:tuuvvwwywwlwwwpvuu$trqpdpooaonnoo^oyoAnn}n;nXnoop pfpqqr&rsft t'ss@rqq onRlBjh,ffetdddve)f h&julnp$qqGqqr6rqqwqGqppdpkp*on[mkj hsgeGb`_W^^;^_bceh[jlmnoroooyopq&qrBrrrr-qzppSonnmm]m`m4llllmdn,nofopMqqrsrt tuvwQxay`zIzzxx@x xx=xtxxx-wvvVuuu.ttFss5rrr6qqqqLppppqqTqDppGoo3nnImmHmm]mn3no3opqrr~rJrEq>ommjgdbX_^]^_bPdhkTnpeqqrjrmrjqqq6ppoop pqq\qrlsssssgrr qmponmmUllll;kkklWmmnLnoWp)qr rs>ttulv,w?xEy$yoywwgwmwwxQxsxxww\vuu-ttss$rr%qqq]qpppooloeonoopooHnnunmm+llm/mnn^noMppqrqr q"omWjgdVao^][\r]``cfjmopr,rxrrmrgr qqppqQqqr1rsRstXtt%srrqWpeoYnPmmlll5kklkzllmqmnanopqr:rsXttu9vMw[x2xxxv uuv>vw-wTwavvFuitt s]rrKqqpq#qpppxpAooVnnyninSnmnnnn5mmm]mllalilmPmnn>no"opppqpeoUmjgdha^][t[\_bCehknjoqNqrYrdrrrArrrsrrss0st8ttuttsOrr,qIpCoInnmmm>ll\lblmn3noop`q7qrerssstuvwAwywttVttuvv6vSuuKtqssr`qqHpppgpjp}pgp$oonn#mmmIm@mUmXmllll\l'kkklxmmmnnMnoooooo8n.ligdaN^][|[\_*adgjmonpqPrr^rrrs6stZttttuumuuu~tt`ssnrr q povnnnrnmkmm&mndooppqKrrrrss:sTstuvMv|vrrrshstttttrzrMr qpoo(nnnndnUnGnSnhnnnnnoJp+pqrs"ssmslsrqqpnmkjhg3edrczcce\fhjxlNn oqRrvsgt tuvwDwwww$vviuuuu0ttjtssssssErrrrr5qppMp+ppqBqrSrs$susqsPrrr?qqr'rcrnqqOlmnoVpppqvqqqqqqq}qpqqr rssFsrr$q[poooAo:ooo1ogooopLp[pq qrstuuuuQu?ttsr)ponElkjji)hghhMi-j#kglzmo pqs stu}v;wwwwwmvvXuuQtttisssst t sssstt ssrYqqqqrrars3sksssUrrxrqqqqq1pohj|klmnoOopvppq.qgqqqqrrs sqss{s$rsqqp|pooooop%pFp|pqXqr rs?ttuuv uuzttrqponmblkkk#jjjk%klsmUnnoq:r]sSt>tuv%vw w"vvVuutt2sss{s#s s:sssst t>ttuttLssSs srs s;ssssssarr?qqXpponljdghjkmmno}ppqqrrQrmrrs4stt^t ssrrqpqpppOpUppqq\qrKrst tueuvvvv uwtsrqppo0nImlll*lllRlm^n"oopwqcr`sMttuzuv)vvvvuutt ss?rrrjrBrjrssLsst4tu uuuuju ttntPt4t?tPtvtttt)srr>qpp-oamkhfB^a%cf+hiklRmMn@oopqSqqr rKrsCssssTrrYrqq&pppGp@pbppqHqrrstTtuEu_uufutrqvpUornmllVkkYjj}j iij5jklwmnsokpkqjrmsStAtuDusuvuu tNsrrpqqq#ppqIqrrQrssttumuuuufuCu(u&u-uBuQu_uuvu$tVsrvq\pomkiZfb^W:[^Badfh;ikAlmnopqqqrrgrsksssrrDrqqq*pppyppq&qqrcsstu utu;utXsrpDn^lkjVihh|hchiiOieihikijjk~lOm nop7qirstluu@uuu(t2sfrqq/pp(ooop pipqXqr2rs_ttuLuu|uuuvvAvmvvvvutsrApnm2jhcd`[W%N1RVTZ(]D`Qbdf1gijbklmn2nLnoopZpppnoooooso#nnnrnjnnoiop)pq9qrarr@qpvoljhecb=a9`__`ab}c cVWX|YYoYZZYZ[/\]L_fff~fDf/fvfff-f fff/f1fSffgMggghgWfdb^y[2WTQO3MQKfJJJ_JJK"KuKL1LM#MNPS"UX[^bReihjlLlmmmllLkkk^jjjijjkTkklAlmoopqCqqrFrsIssls>rqpo`lj1fVb^rZV PJD>?7/49x=AEHKqMNOQ6RTUXVWXZ&[]^W^___q_M______}_}_z_Y_S_u_` `;`l`'_^][YU(QMJKGHDXBQ@??Y>? ???#?H?r?@&@ACDGJ}MQLUIYT]+acfDgiiiiiiiiiLiiiOi}iij)jk9llmnmooZoopbppppnmkjEgVc_ZUQLcF@m:,3,%*[.26:d=9?AqBCE)FGIJMKM NPJQSVT>U&UkUgU8UvUUUUUxU`U8TTTUUTUrUUTxS$R,PM]IEBX>;9?7m544X444m4;434*4[557a9J<>AEIN(RKVgY\^`b bc6ddeSeeff:fufffg7gtgh:hi[ijjjjjKjWjNihg'ec6a0]YTPK(FL@;q5r/l)J##("+/]246>7e839:<=9>@AC0EFHIIVJkJJJJK*K@K5K9KJJxJIIJJZJeJII>GFDwA>:7c4)1/3-++***b*))I((()* +-~0j36:?CGKOeRUWY[A\W]_3`uaabZbcDcjcdd_dsdadJdUdde dddccc+ba`^r\yYWTOJEE@x;550+*$ a{d!$'W)+?,6,-/K0V1q24+57V9!:>?>? ?D?Y?Z?q?P?>====>>>==;:8R52A/",F)l'@%;#"!!!!f! >r !Z"%(U+/38 <@CuFIHLQNQRTVkXAY[S\0\\]Y]^;^]]@]]]8]\}[}ZYY>XWVTRP|MKGC>:57/*% t kk6V  !D"7#g$l%&(>)+-r/0123j3333334333S22"122"211X0/.v,F)& " GP?d=<' $((+/37u:=AGDRFHK3MIOQdS/T!TTUV@VV&UTTTnTuTS4QPONMMKqIZFDBL??U?@y@A@@:??>>=<;9|8)75420.<,k*1'x$ )?9 +o}9jY | 1LLNEre9`C- {F[t{ ): 0 &l V#K%(*,/023445565544J3321/.T-+*)'>%a#[!]. r}K3mM3]/jC<Q   $ d d x k  p * q  -[6)"h? R Oa!P#%')**+1+y++~**;))4('&W$~#(! U(zb  oWqY& a\5 )8A2=]pszdavA] `t66{j  ) v !!",!!O $yi1k a-Xe2+]vMQqcD^qJ<NgyIk]VPgt/QK*1ZE{~  snm<gmi ` 7 ?u%S \:FA`8F.b@4:7+Txoa My 0R^^mzmS7TtT  T dL|! 8 v 3 c DN>K;] J0*{]=RXE<*-'1y'!R.?Icsrema?X F:JvO PC]' OH4,p]Fv,'n(Uk"[w ?Ra,=b?1=ASneUAz:3O#[;g\C)}} }_&l4.{fjA2u :o \"uZU[NB?FLWhqmbc`QBBA*"FkNjj*XSiUPv@[I3Wq"bB|d, ;oi* Ovo9R?0zmM6,249>CGO[glt >WpY5<}$ ~BZ>b#zcoIq#tya.gJJ 1$N?tA'x"@6bIA3-%+6K\o~9NP+ x!urCj[ 6HD}|Z-*[0~?%,pyWFwlJZY?;B$el_T[fz #A >9ed4LGPd"o"+E0c()Dw_C =iW dOT/6%f116du<:H^F0rMu!*X,Sv9L y) .tCwiKzK)yrl0;WQ'M*3Lle-.Y Pu3HJ4%>C54G(&o,B3HFmF'[.X?r Q *8!r oR98>SaxgF0 ?c6((|v6}'Z7 `O 7rUZ4FM&Nh*KnV<2$pzwmo{xVC=KTj$.7E]N 92lS;GF s#`F7my _O;UBtovzvqhkvS T.UtRG#np.G JM>~wkFwd]c|Y%[xllswqzo7(nWXiBW  +0/D&]-__z;-'7Z[Mk9#Qxh\YRTZfm{yMFEAP?ey**oyEG/) 9G""yM mDquS$6qmL/5Jwj\NPXod6 >sh:{>}B 6~w3+1CF Fxt? .z:-cV6D [eSHRa{|kN@5Hi\5*r;.:lrN1!$F0 HspG .h] k"!q++Ab}s[LP\p{^K<KhgJ9JDlg\n6 $)  8@*-ew^4 Ho|X *t&&E+#<Og}pf\amdNCMVncH4:>i<dnPogK$). 6=" D\^R=58:JoqI#aYa@=8DNdxytTJVv_PPJMNe=~[ /\pW, $%#  .G2+Nd]C559Kfv{fA,1_QwvR88;Pi|nrnTKQKUk2#xm(Sg]I1(& ! 99';YXE;<FTTUcmr`2Dm'T`QIS\kvzujfipltm&5`,5SeT:?F9# - &@B% DZYF21@MY^aqpO55Zy:Pt[WZkt}rma^asi*E_7*4O[XL?B?" (2# :R:.PbT7&,G`\R_nulTIVzV''Fqp~}|zvjekj4 ?qV33KWYODIMD. 'F6    (PR9"5TeZ;&4S_begpobRCQ`=.Iu}zb.";pZB@KZXNLMRL5"?F 0>VT='%<cu[70D\opfceppTCRy{M9DsU1&FtmK=Lej]KBN[U@'0EG0#% +',@NQE0,JijVE@J`szuo|s`Zi\GWs[=C]}aQR`lcRMOXWD.%-@H7 #  )0+%)9U_H/3Lck`L@Kjzyphsq^YrrNFSxwfemvseSJS^[J4(1?C7 ,$ -32.3JZSA:ARcjaMEXt}|qm}~hgy|f\hz|gdmrrkaZX\[M>7:CF=-"'  ' 2>=7<FRUMC@Jam_LKYiu{xpn~yrvwnypt{kdhptnc`bfe[L>;EOL>0&'(  &%'3=AACNVQF<?TeaSLQ]ovz}|}wuspoy}|skilmh\K?;ALOB/$#)+  %%$ #4DFCHMNJA>FRZ[XWZh}zw~z}yv}shgqy|mltxqaM><BKMC3&#'*(  !$ *7;>GNNHCCCJV_b`\_jy}|{}zysnpy}ypmv|veVKCDKNH<3.++*% "&%&).7FNMFGIFHQ\ceb_\ct~xw|uqu{|tu}}~ob`epzyiVPRONPND;;<81,% 5N\O08T]N9'+C]qn`H1*)@gcF43DO]mx|wung\MDCJLTaqwj[I?=IUbip~~xrjfehmmeYURLF=<EOROPLA73;MUJ4'! +PeX4"Edj]=#DdrpU6!.No~[0!5Sgp||vnpqj[I?=FLXix{wsqmg^RLMUW[`l~zgUI@ES^[QNLLIA<=DJPZ[VF4,5DI@1 >^{o><cvrR06]ygI1(9Rk|t]>%%4Smzvm^J@EPPNPWahjed^WOHHKVes|}|x}yjWJJQbt|hO<7<;=CJOMF=33<KVXWK9,+7GLA) /fV"8tX+9etH(*Bk~T$EhydN;*)2BGLZhtso_O>-&"-:Ph|`F8.9Kf~oN7.'-6AJLOI:17DHINMG<.,9FF5a|I7tN&)Oq{^8'3Y~yR.;feSE:617DZsodVD5*'"&*6DVfq}}{~{mYB4-47E^r{qbK3%(3Faj^F<;6<N\`O1(;A7 CL(nL 0\~qJ(1`GH{e,*6KhpQ15NezraTJMUfx}nV>*#Ffv|iO3 5Ukm[OC55DVaW?" "7?1)pO-sE/a~ycC,6XpH).Nxj: Jht}uo^M8  ,E]oyyrh]N>3+/4CQaoynP5!"(>XjseU: +H`tkN,#9Sf[8 ++ UnJ.xK 3b|sM)/_g5(:maTnG?jmWIEA=5-)+,//7@X{|R+ >^koU-Cnwe97eu]($% d: oE 0dt`?$4VtqG*3]b09gG3H_n{{ynaWRRPPUY]XL<2/,,)*+:Sti8 >bwdABmvh= 8PJ4) 7 d>1apV' 2WpfCX:Ch%JzQ. $<Vmxr^QIDA=6*%$2B_I1vQH~t0KX8/PA&_d? 1PZR96b`#3ux2 TW- %@Xkx|qaQ=$0V~Cdh';nzO6E3$6P!Vh;,PU<GMEQc"c/ALUXY_p|l_L4 &Y|rX_%0i(A/  qLCT8(HH- @du\, Ttu?{r9 B_p}~ym[KA?>0(->M[lrnb_R<<0bd" UuZ'9-SzL4P.&DC$3\\44qZkW6?9rkS@0! ,So~kK7m/?k/:nj,6) 0hT @XD$7/1PM( Csi,5qNjvVD9+ 'Z{4ptQizS#`h6&!LJHhR8$$DB WqagRIgC*<LWUP>)"gSp-j%[[+<Fm\d(" B ?ZL! "!GjKX`kYXIhwGyT/#&Bq%>TQG)i57Q3Tm;_ 8iM_N0D# 2aL  D\84ZrL]H3dmB,`%#|7z4QJdfU5CA9rL$4 ~ Sj@ 9A } /,?C3_m.+OspO>;;8"$Egw|]8}7nvQki}A7H2+y:( nf`.  O]"= ~ FVunq R   J G ?  U  b  4 L 3  u ,E!jIsHp Qa`F @aBmdzxR-2fE'U|<d.3 l   k cW6@8L:.ez9@M! #  D-9XP9tSQ 0jb 7$7$~  :  g_,n<7g=}L'SsMPRKK\V- >E81$tcZD-!NowB  [:u L!d"#N$$Z$$$$$$$~$q$o$t$[$e$$%&6&&&''\'''Z&&2%%!$$d$##5"y!  HZ% Z {1g9jr@d tWSMhDLX4 ^ "g:X>!#%')#*A+k,o-.z/N/0j0131d11q1k1g1p1z1a1m1223*3333333362v1`0a/..(--X,,h, +{*)'L$"NmI{  YB&c}0 i Nk%86 <  Y  v^yj "x$%')**,/1324m568"9:<<=>>>>>I===p=E<<==>>? ?;?f?|????a>=k43]1/w,*/'%0" z7] !Z  -w|z- , o a dS_><0;^#!g$'v)+-l/H1F35468:<>@AiBDwF\=%;863k0-+9('%'#C!2^n9 N &x3/ZqK ^ber:6k-s s!#R%(+/14&68::a<>@BJD&F&HBJCLMOkQRTuUV9VVVV&UTSRRQQPPQ#QRlRSLSST>TU!UTT%SRQQPO(NM8LLKwJ]IFDA>;853N1^/-,)( &7$" "<"  i_x *i*&# o$!k"$%%&'()*+-&.1437$9<{>@C1EuGIKMNPRTVXHY[A\]^^_^^]]1\:[9ZdYYaXXXYYZ[[v[\\\]!]\\N[[[Z[ZlYXXWMVUT)QOLJGDD4A8>Ndeeeee)dddhdQdOdcbbJaa`^\ZXUSP!MJGED?@BAABDFHJM.OR"THV8XOZU\k^'_`bdSf)glhQhhiAij2jzjjjjj iUhfgtffVfH;852/,)&# f8 6,JLFuC/?>Q=!=?=-==>w?AkBD)E*FPGIJKLMOeQjS%TVX[']6^`zbceNfgijkmUmnUn%n nnHnnnnnnn m{lkk=jjjjjk\l lmXmlmfmGmImqmmmmmmmnnannnnnynn3mlBji/gfdHb_]k[aYXWDUSQNNKIqGDaAb>:741V-*U&"anS!OLJHGHGHEHsIYJLwMOPSQSU0VFWXYZZ\k]_`bNdevfghijklmnop@papKooofoop p poooXnnmMll\lAlkklPlmLmmmmpmMmYmmn+nuno!opppq8qFq]qrqqq`pZo:mlkjdhge-c~b#`_^\ZX^US7Q NL;I2FB?;630.j+fCdccWc[cscccdefh i j+k{ln/o[pqrSrrrrrrrrrXrrr-rs^ssssJrrrq{ppooooooooovonbmm4lll&kkpk`kykkkkkkklMmNnFompqrt"uvw?wjwwwwwwwvw,vutssr&qNpzonmm*lkk(j=iHhzggRf=db$_\jYVmRN&IFB>;9;6hggggh(hzhhikjak klmnoprsOt1tttttt[t)ssxsrrrsJstss>rrwrqqp[oo{oooooooo=nnwn mmmmZlll\l\lzl}ljlOl2kll~mnnUovpqrtufvMvww6w,w7w.wvvvvRutsrqqp-o;n]mmll7kkkDk kjih.f#c~aa^[_WySPLIzFD)Awjjjkellllm3mnoop3pqrstvvw`wEwEwvvvYuuBtt;t%t\ttttAszrrrqqWppouo8o3o^oRoJo[o{oooooooooCnn\n8n7nNnHn(nmmm{mn(nogp(q$r)sPtuv2vLvpvuvvvvvvvv?utsrqqp)oIngmmSm:m-mZmxmmnnm7kih(fc`]]9Z VT8QOkLkllm(mn_nnooup pypqlr rs[tuvwwwxwwwwuw vv*uuv v vuttsrrrMqq pooooooppZpqq_qqqqqq;pp;pp p"pp ooooEo"o-o'oYop!pqrstqpppipipZpXpapUp,oooojoGo(oAoNopqtr&rrsstst9ttuOuuuuztsrqpp#oFnmmmn(nojop#pq pp oWnXmjljhfeGcb`nnowp'pqq7qCqkqrVrs\sttuvxxxxxyyyxxxxxxxxxBwwkvuu(tt&ssQrrrvrrs8sttbttttJt*tssrrq\pppzp`pnppppcpFpooo]o%nno?opq"qqrKrs4stHtuLuuuut!sr&qjpp%onnnooppq-qr#rCqqRppoDnLmkjihgoppqoqrArMrNrmrs?st2tWtu>v@wzx]xxxxxxxxxexbxxxxxxxVwwvFuu2ttt:sst tctuNuvvTvhv:vuuu~uItts=rrqqqmquqqq{q8pppkpooxonno1op pq qrrs>stu1uuuutsrr9qq:ppOp%ppqLrrrs3stt ss&rrrqEpooCnmpqCqrlrssss'sistJtttufvawcxxCxxxwwww~wVwawwwwxx ww{vv0uuwu3u tttuPuvcvwwOw_wRw!wvvvvmuuQttssjsMs1s2sAs6srrXqqq?pppBoooopIpqKqrwrst/tuuvttttuv{wTwwwwwwwFwvvvvw'w?wIw}wwhvvvuuuSu9u#uauvMvwwwxxxwwwwwtwTwvuunuttttttttt6ss6rr_qqxqpppq qTqrPrskstu$uvDvvvvCuuIttlt/tsssttu@uuuuvw vvsv7uuututttvPvLv[vvvvvvvvvvvww7wgwwwwwywlwgwkwawiwwwxwwwwwwx#xPxxxx.wvuu$tyss>rrrrsTsst;ttuduv@vwwNwnwwwwwJwvwww w5w`wwxFxxMxx}xyxxx7xwwwwVw vuuuvvlvvvvw wWw{w{wUw[wx1x,wwwww{w]wvvKvvvuuuvvYvvww4wIw`wwwwwwwtwUwvvvvvvw wMwwxxxx7xvxxyyByy{ykxxwv'uStssJrrrs=stDttuCuuvOvvw,wbwwwwwwwwwxx3xpxxxyKyyHxxy-yKy+xx|xVxJx(xwwwvcvRvwvww[wwwx>xxxxxxxxxwwwew.wvv?uuulu5utuu/uvvwwswx0xxxxOxwwJvvvrvTv_v[v|vwwWwwwwwxx`xxyyWyyyy1xswdvsuttsDrrrs^ttu uzuv vPvww/w;wUwfwcwywx x x x9xxyvvvvwvvvvvvyvw0w}wx2xyKyzzzzzzzDy8wvvmvTuutuu#u|uvfvu;u$uUuvywYx*xyyz9zuzz{zz_yy xxww_w v}utt1srrur#r)r'rrrsUstItu(uttttRtBtEtsttuAuvMvwx=xyAyyyyyyyyyyyXxx&wFvAu&t#s\rr-qrrrs'ttu\v v|vvvvvvvvvLv6vUvwwuwx6xyhzzLzuzKzLyy`x9vu@tt{ss1rs s4st0tu$ttuuv|wxxiyyzdz{I{w{|-|{bzzAyy,xxx*wvuttsPrrUr4rr>rrrs sNssss:ssrs sMsttu4uvwAxxyz+zzzzzzzzzyz-yxwvu^trqppop8pjqqrstxu\uvvvvvwv}vvvjv6vv vHvww:wxxy8y{yyyxxww9ufsrrqqlq q7qzrrsSsttu-uvwxyz?z{v{||||{{izzIyyyay xewvuutEss&rrrrrrrrrlrqqqxq_qqrs*stuvwJx+yz z{zzz{{zzzzppSoooppqJqrtuJv8wx/y4z1z{zzzzzzzztyyKwvtrp[n^lkj+iviijkmInp(qrt/tuXuyuvGvfv4vuuEtuu2u uumuvQvww@wJvv9ts1qp~po}onnnop8pqOu@uJuvrwxyzqz{[{|{{{{{\zz!yyxxx|xOwwvv-uu tssTrr}r6qqq0poo4nmmmmnEooqHrt%u^v|wxyzMzzzzozlzWz4yyyx?vu)rpnkigfeefg0hLjkmomqrstntuQuuuuJtt/ssssssttuYuv=vhuustArqpoo#nn9nnRooop_uYu^uvfwuxdy*yzMznzHz]zOz0yy@xwwUvvvuv}vrvCvuu,tttsssfrr~r qpp3oTnDm l-kOkjk1klmo\q#rtvwxyz4zzzvz6zyyy[yxtssrqppdpGooBoNoooov uzuttttuttAss9rrqqnpp&ooyoop!pqRqqr:rsttTt%ssDrqpo?mkigf?ede.eHfPgiknoprhtu^vxxxy[y{yyxjwbvuGsqovltisfXc;`]\OZZ[-\^aQdfiknCoppqpqqqOpppoopopqrrsdt6u uuuujttsjrr]rRrSqqyqqqqqvuu-ttdtsssTrqqfqpp oon]mmnn2nolp0ppqrsttttPssQrqonLl5jhfcevddrd:ef hj;lnprsuvwwxyyxZwvutZrpnkif%c@`^=\[6[7[a]^a[dfihkmo%p pjpq7q\q3q pppypqqrFrsQt tuv&vvgv.uuRttrt5tOtotsst"t ssw)vTuxttstrrrNqppNponnn%msllmm>mno_opOq0r@swvut~surhqqpoonnKmmmDllFkk{kklGmmnoAp,q5r0rst5t#sss[sr!q:oml8jihh-gdggghj6kmhnp!qlrtu uv7v[vIuu`tt!sqpo|op{qqr(rsstStuuu!uOuvVvwqqqqqrNr_rqqqgponlkMih,feVdQcccyd efhi|jklmnnnmmmmmmnOnop~qqdqrrxrs,s/ss st,uuvwy yz{f||||wvu|t]sUrKqqppUpooppApUp,ooo&oooiopepq9qrsut4tuGuzuFuttsss+r3q4pGonn&mmllmDmnoocoooowo&nnno_ooo_oooouo nlkNjigffTf4ef!fhi*j.kklm.mmm}mamXmgmnmmnWo opqqmqqr(rrrrrsstuv|wxyz{|w}4}r}wvuutBslrrwrKrqqqrrJrwrirBqqqTq@qsqqrrIrs st5ttuttt?ss}rrqdpp\poo8nnnnno2olotoon8ml kjjk(kkl'lmnooo~nmlkjjJii[hhiEjjk`klOlmPmmsmnmemdmymmmnUnopSppqq3qqrKrHr5rBrsstlu(v w'xXydzT{_|1}}E}]xwqvvu|ttst&t ssssst1tctbtNsss2rrsssrrs sttgt}tt;sssKrrMqqDq ppppppppmpXpBpAoondlji>hff}fgYghj%lmopppooann7mmllkkl1lslllm?m|mmgm`mbmcmom}mmmn8noYooop psq qqqqrOs stuvwxy{||}-}?xYwww-vvkv&uuuufu(u u u'u;u.utt_sss}s`sFsrrrrs;ssss3rrr1qqDppypvppq0qpqqqqqqZqDpomkimge0c(bYb cceDgHilnpqqqXqpp/oonn*mmmmmmmmnnmmmmmmgmIm lm)mmn(n/n?nwoopbpppqrKs:stuvxyzO{B|)|\|Uxx{xKxwwwwwZwvvBuuuuuu|u8tt|t&sss_s rrqrrkrrrrOrqqLppjpoop4pq3qrrkrrrrrUqQpmk5hBeFb_^]__bdgk*npqrr9rqq#pp>oo`o nnnnnnnnnnXn(mmmZmllTll lDlrll~llm]n*no#oHopKqrrstuvxy^zb{J{j{QxdxAx8x7xDxVxJx5wwrvv/uuq qr3stuvv^vov+v1vuubutss`s rrrr,qqKqpppp7oo8o*oopq0pppq>rrHr po;mnmoopCppq q4qXqBqpppPppp6pqJqrqq]ponmmommmmBmmnZnoeop pApqgr0rssssssPrqq:pXo]n'lkj5hgff1f@fOghiojl[mojpqrss:t-u8vew0www~wvv.uu/tt`ssssssssssttss,rr8qqqqqqqq]qs"s@ssssstDttuttt5ss}s2rrrrrer qqkqpp&oo{o`onm]jhe*ghjNklm.mnoQopippq(qpq+qr-rrrAqppQonnWmmmmnZnop0pqrysstBtu3uu|utQsrr(qupooGnnmYlkkjjjkCklm^n+o-pXq}ros2ttu~v.wwww+vvujttSss?rrrrs,sUsst?tu4uvvuuuDtt|t>tsss~s rr qppoXnnKmlTjBfcQ]`befhijkmnnopCppppq:qrr#qq,pnoosnnAmmmmmn{oopqQrrsstQt>t{=c<<====>>V>?E?@=@ACxFHLOYRVZ!]`cegyh:hii^irii`hh6hhhhhhShiHjGklmjn:noyppqq po2ml4j#hVe^a],XTFPK3E?9P2, "'8+T/.268;z=|?AaC-DFFGH:HI?IJKLMN7NOPQRiR>QPDO=NwMMM9LLL?LBKKpIH+E|B?<:-75321242~23&3#33 3$3{34\46!7:?<@ CDFJNRxUYH[^ _`abcd5d4dcccccbcTccdVe%f$gghDhiiRiiihAfdc%`^[W{RsMIMD?:4.(u"N $v'+-0r2e4D578:F;;'?(@CAjBmCPD(EF>G5H3HGaEDCBBAAV@@H@E??x=;9:6{31.,+9)((O(w(((((H( '((((*D+.1>48;?CGK'NQXSVX#Y[\]^p^^_$_+_"__ _%_%_w``asaaaaabaa_][YtVTQtMGC0>94/h)#N&L #M%')-*j+-O./X0 01123457789:;<<;:l9766B55h44,433p10-Y*(%$"2 Z!gk% !r$&)-0487;?BjE5GJWLO8QfRTUVVWlWWWWWWWX XXXXdWWxWVV#UASQO1M/JHEXA<73c.)% Z z 8!p"#$*$%]&7' ()X*+,-./0|1l1^0/Y.",+**)((''v'%$!b Q8|hY)t!|$(+/H26F9Z@AhBCCDSDDDzDCCDD.DC|BA@@ ?>=H;N9653#0-|)%"56v  \dEB% l ) dL$. U z, \B"=SF*%#`x 5 e"Q%(+.1)3/57678g9R9:999r9E9092988N7g635,4:32u0.,*('$!S"3p &Z)]$\  y0   7 ]  z'd;7Ksd~  M!3#&[(T*@+,-.//H/ .....t.9.-R,M+))(5'%d#b!:F3 2 `dV<k ; !e4Xrsb[S.Xa|/"v|  Q_ ]!"$$w$${$~$c$-####M"H! 5j_hd V :?WJ5$eSzc@A\JB!m]h@!P}qMy1}FK ?V 4 / w,~tk>!(oyHZ E zB8@^NeJ v\>[kxjRo2\>%8C) Dz#$ k  9M`  7n,R)FT<F/hiQlatgqN:oCW\gntz^0tuwQ X  h  : s ) Y a x RB:~G:7$M ^B4hMk'^hv+Vf@ .e*%X})@K`klbi[;PaMFwDYue #3Tl;pd-gklT??/5t?p[![\uKl4%rJ3;F^qjN8! c?|k=$V%RY%|9{-.u?g;8yYXA+ :fF"g,E2w_SRHDFPWapxxpphVD>>34?_8|m6y(D[@tCw!V5l_"LTsa<mO0[bm7#n}+CR:)lZ=/,7<AGMRYbiim{DYeL=4CU^4_kUdLenm:a=CN:B3yY@7/~ZGC6.',6J\ny;QT,A(ujwJ1ETWzz_5 Z}F7W/'%mc#Qq])^QAH&F=qhXLR[o(A 40\d '_S Be4n !;5v55TcQLrM wY$a&*e :@>i|BABXR!< lUw#-U(X:R$)2sCg[a^9n`-<ag'd@"#&;Oh~g41eIj.QPA->C  76L) h,;@NKqFO6fMmC %70wuR:;=NYohH3<]2," {1!*[6 !`O 4i(d&d3>J/ Ys/5vgW/z5(s tofjvvVG?LWox20PiB>0 rZ= PM)qWLDw$R7;` MvlgqzuiahsT U6Hj^O#ln3J HJA{meN* kMM!^5lvohlt}vv|C #g\N]Oe*}w*.G$ ,`0]TxC<&#K_Ql>#0Zvh\WRTYem{zS&AzJJN9p(+p{GG4!EP)"pxDnKad K 6urT79KvgVHKQfd7!9jo?z>E9}z; /4 %GG ?mj5/|B4TP2 >'cmWLWcz{v{pQ>3Ff_%0-x=+9hmL 1"#A. @ie>1ha o&n-5GcyzbPQZku}zaN;FcbI<EQdm Sye. " 8?)%]lT4 &KwY$.o}*H2*@Ofpd[_fv~dODLQgzZC28<cDZr# Fd^D! %+   9=?STRG<<DYytNVN}cEB<GSjwvuVKUqbLGAHI_=w\*SgN&&(% $.E* *FWYJ:6?Wmw|jA(.ZU tyU<=C[q{}}xkosZKKGTh2$ti+ !ObYE-((!"816MRH<:J[XTerr\3$?tr-VbVTbju|vomkmjup'>^+!;WcS;>C9% +  ,<6;V\I37JRXafnfK6/Lx=Ryedfrxsohgdnr, Mc9+9V_VJ=@=$%1&   9G4*QiY:0;ObaY[ajfK<Kt[,*M{x|yxpmjzq97n]95L\`RAEIA-)E9 " )HM<#;^k^G7@Wglg`jn^L@Rd?4S~~}j6&8j`GCKZ\VPKPL4$>C#/8RV?(,HjxeG=Kf{uechpnXKVx}RBMy]8,HrzWCNeg\OIRZUC(/ED,#&  -+"'=OPD79ToteRJUkvxspzte]heQ]w\@E^kZWblaQPTZUB/$+AL: '.5* %8Q[K9=SlvjUJSjvzyngt{d]vrLBPuuhjrxugSJUa[F0&-<E>(#2*!12-+2FURF?FWhofUMZpxy{|~rn}lk~~eXdyyefrwtmbYW^_O=6:BE?1!#)   *!09959BOUNFDNcodSOYfsxupq{qtzupplbgs|ug``dd^RA:EPM>0%""  ('"-7>?AMVTLDFXhdWNOXix{u{|~~yqlt|}zsmllh^PD;=HM@,"!%'   %%"-@ECIPTSMJNW\\WTT`sxw~zv|uliou{}~}tswzrcPB?AEF>.! &*(  "17<GOQOMLLPYab_Z[cq}|~zxuqqx~}zsqy}vfXNGGJKE:1+***%   #)4BLMHKOLMU^eeb^Y_q|srytqw{uu{|ob`fq|yiVORQQQND<;<80*#!<S\K/ 6OUG:-!';UgeX@*%*GsnN95BJVfqtpqmg\OE@DJVbpvj]K@<FQ_kt}wpjfegkkf^\ZTLA>HQLCFG<1+2BLK<,"#$!  %3Xl\6%D_dU8"(A_mlR3.Szl=%+:R`fopibfhbTF>9@JZiu~uuvrkhbUKJPPU`q{gVKCHS^^VSQNI?9;A>?JRM=*"):GE5!  CcsABfunO- =_su]?(,FczxgI.*9XlsujcWE<BMMLQX^aedaYSNEDKZfoz~}vxsaOGMTexzhP>7;<AIPVRI=435=JPOB0%"/EOC(  4iY$=y}V+?jg:.UxwR(BhylZH:,,5EJP_lrmj]K9*&"-=TguuXB:09Mi~jK4,'1<ITVWN?44;ADGD?6(&8GF2  %iQ!=zM#&Mu|W.(Nq{oM/&+JqlS=0/*2?TlyzmeVA0()%&+8DSfryxyyvw~tl^G5/67CYluk_K6)"+8Lel_E40-6EPTE),;>7#LV 3tN)SxwM%)XzD)^u:#-@[ukO/%:Qfy~k\QEEL]o}vY@,!A^nylV:$ 5VkjTA2(-:HQI4%6?5 -tS 4vG+ZwvgJ//Kqc;&OxB E`lqidVE1 *F`qxwsiZH:2**-:GZoqQ3 5Rkyn^? .I\h\C(+E\W< 04!UmI0yI 2^voM/'0TS ![k"TdA?fkXNI@92.*)&'%/>\yN'=bu{`7Cej\7*[q`/.1 f<(wE 0anX8 :Xmva7#LvnB$Arr85NbjtttmaVQRRTZ]]TJ=3,&% $+@Zxg2HlnI3bqb21PO9 1 <qF4amN3\sb:NC Xc@ynH* (A[r||p^OE>;63..-8IeB9W:veM\: . WE'`e>/TaT0 %T{wNF?NW('B[o{wl\K9(  5XI%ua6bj@8F5 ! :PUi=)R^D,it2KYY!j$ #2BKV[]anz~whXG9,)].}b v)w_(D6 ~W FW;?H3/PdP]b rq5AatzpaQC;6,(*7FVdkron]G%2z$|WIE`yFh}^9<Vr7vFj55B.'Mxc*  :R'wpju jZK\w'Vj1utw p7&Cc 8 ^>:Y=&< r euK  VZ]`F O-Ea"l ,6>5* -AX^[<UvN+6O|G8&k_m(+V!% *o*r`.+;zYFMX.JNgL  K r W J  c 1    0 E e  9 ? E # ^O Z 63z!n`eZ'-lp%r[pyXGSvAM/z>sY 2  =<F?$cX "f5iXW y @ m )loPLy5]SP*:y6, OVaw+pb4dQ :fyp4 EfcG<GOJ=~1_%%> ?  .KAn\GP;UB'y Cx~@>=N 2 O d/(  !j!"!!!!!p!I!0! !2!E!w!!"E""""""""@!!g!  i 7 bF$9AN w $"m7B-kuBb % &m~2L)j { i - x_"Y!#%'6(3)R*7++,-@--.....--..%.]../D/w////`/0..I-,,2++,***O*,*0))k(Z'J%$+"? EGR2}Q =2|D/s~,@ 5W\I0 B NFc6 # %X'*r,/302j3m45679.: ::;;:::K:9999::r:;;I;P;f;O;5::j9887W655P44=433;2T1{00.-+(&$#! Q|~R: mL<U(ieoH E %  E?%*HXG "r#%"&(W*z,.1L36G8:<> ??@BCqDF0GGGGG>="<_;X:N874206.H,+)!&$o"% PrAxNf -PnE]+.&5_,sUxG9!D"j#%!')A+K,./k1)3+57:_^@CIEHJrLOQwSgUVjWY,Zf[9\ \Z\V[[&ZVYXWVVAUUUUVhWWXX)XPXVXnXaX?WWW}WwWWWWWNWVUTSRQhOMKIMGEC @><:8642@/-&*z'$f!R#nSu t3A.+O'%$($#$%&D')+o,-./0246(7>8:7<->A@2ABCEXGkILVNQSYUXAZ],^`Va!b%bcdd|ddeccHbza`_^^,]]]]^_S```aaa-a```e`3``C`t```a``9_P^]\[ YcWMU8SQNLJGEDCB@l=:742 .+(%x"=3 w "I=952o0/ /+//041Y246889:W@6ABDPF/H IKLNO'PoR@5ACMDTE`FHJbL%MO PRTzVWYZ;[6\E]_:a bdjfgjkmhn nTnmmmmn nnmmkll k3j]iihhhhijk~lSlmlllllml'kkkl.lm)mn n@nfnEnBmm>lji^hfeWca_y]+[WZ#Y WUNR^NKHEC?<5863g0-*'$ A6}QM*IGEDoDDxE ErFHJLMOAPR2SUW1XZI[]{^_abcde7fghGixjlm\noppppoooooop oonnLmll*kkJjjk&klmnlno-oo nnnnnno op!pq4qqr!r:ryrGqpon`mKlOkdj1hge2cba`^\LYURP@MJGDA? <96{3"/a+'# YVtSQTP0OZOO[OPeQSUWXZ\1]_R`b]ce8fwgkhFijBkCklelmJmnohpgqer(rssJrrqq0ppppq q6q(q ppoLn{mmllll%lmnoppwp~pppppq q(qr5sstu=uuv vivsv_uts:r.qZponml_k9jwihg7e9bo_\ZoXOV ShP}MKHEBn>:62.+(v%"_][YY)XXXXYZ\^U_a.bdneghikVl3lm6mnnoNooop'pqqqrsUsssssrqppvpp*p=pyppppmpoDnumlllkkklElmno}ooppJppq(q`qrrstuvuvww-w{www9v_u#ts:rqq3phonnm`lk(igeycXaz_^j\ZWUSXPMJEA>-:f7 31.edWc5b>aaaaab;cHd\efhLik9lKmanp_qqr?r*r@r]rrrrer.rAr~s"stutttt2srr&qWppwppppppprooWnn mmll]l>lmuvv0vuuuu-tt6sst8tuVuuu3utt0srrqippppphpppqq!q"qqqqppypop puqqqqqqhqwqqqqqrKrstu`uuvv>vqvvvvkvuurtt$srrrqppo2ntnmmmmmnnUmmKkjhfgc1`"]ZEWTROmm)mmn(nLnuuv uuuzu8ttQss rgqqKppppq.qqrWrrrss'rrzrqqrErsSsvsPrrrrrTqqhppqHqrss_ssssst6t]t_tXtHt^tLtssrr2qqrppo0nznvv^vuu~uttjt|ttu u{uv"v?vuuuuuutlssbsSs\ssssosWstsgs%rqq7pmoo(nn mmn$nooop9pqYr)sssst sssRrr|qq7pppqWr>ssst7tuIuRtt!ssriqqRppxonrrJrssHs]sDs6s0ssIst-t`tuQv&vwx x6xzxxqx7x wwwwxxxx wwwwvvJvuu{utttuCuuv vqvvvvvvvvhuuJttht\tbt{tzt]t7ttssrr?qppXooynn:mn*no8op7ppqrswtt]tWtttt6ssmrrnr rrrstbttu7uvvUvu@ttMssVs rrrqxs_sxstt:tAttssstKttu uvw*wwxxTxTx=xwwwwwwwwwwww?vvpvGv$uujtttuMuvv:vXvvvvvvwwvvvuu)u uuu tttttt7srr=qppdoo9nnZnnoTopLpqqrst:tttuu,u ttttsssst*tuv'v?v7vLvwRwvkuuu4tttttTstatct~ttuttttttuPuXuv$vwHwwxx,x(xwwwwxwwwwwowww>vv~vOvDv-uu}u,uu!ubuuuuv vDvvvvw"w.w/vvv6uuuuuuuuuuu5tksrr#qoppnooo`oop p`pq qvrrstKtttuXuuuuu^uy}xx-wwwvyv-v)vuvvuu ttuuvwxkxyzzkz{ {/{0zyy*xxewwwfwvvuut,sirrrrrstw@wxxFxoxyyzMz{@{Q{ zzz ywvvqv$uMtt)tssstt)ttWtmtuvx xy9yzszz{r{{{zz%yexxxwww vuuUtsrrhrAr rBrsCstuv1vav uu}uttuu2uvvwjx"xyxyzHzzzzzzzzzzzztuvvuuuxu8u-uCuuvwAx#xyz`{,||||||r|k|W|0{{{{Izyxwv>tsrr2rrdrsstuvpw9wwxxMxcxfx5xww\wvvvvvvw`xxxyxxiwvuvsqppooonnznnnnoosuuvvxyWzu{i{|||}}Q}'|{{zZyyByxxx wvvu tsVrrxrXrrstSuuuv uuuuuuv.vwJxxyzP{'{||}|||||f|6{{{{ zy-wvqts9qppFopIp`pqrsuv vw7wwxxCx4xwwtwvvuuuuv*vw?wwwwevlutJr~poonVmmYm$m&mqmmn/vv^vwaxy{{|j||||||E{zyxxQwwwww,vv3uptss r}rCr%r}rsstll5kkllll\w7vvw"xy yzvzzDyynyxwvutssZs\s^ssssszs4rrrrFrr'rrsVstssWrrsqq6pppqKr.stv wVxwyzSz{{Z{R{4zzzzFyyoxwv_uspmjhgf}efEftghk)moqirstuwuvFv\vCuuOtssPrrrs.s|t tuZvvBv?uzts^rpo]n|mmll{lkllllwtvvivw!wxz)z8z yyxwvuszqngkihZfd1cbcjceFfiulnnpKq}rstrtuuu tt5ssrrrrrsDsttuvsttBt5ssx vuttss,rrxqq#pppGornmm'lllmmnsofp pqrtsQsttuBuv vmvvvtsrapoiml|kAjjkjlJmopr svtuvwcxxZxxtuxvvwwew\w7ww7wpwlwx8xxxy3yyyiywDutsWrnqppWooPnnnnmmBllkk]k~klKmnnopqrsYt tlttuQuvvuttrqp-nm$kkejk>klmnp"qxrsu uvRvvvvvvXuhtHrpoljhg=eeee"e{eyffhikglmn4nannoo1oPoTo,o,o_ophqqrsQstuuuv3v8v/vFvww?wxyJyyz)zzzzdvucsrqpooHnnZn#n5nPn)mm3ll"kkkklDlmnopqrsZtt~tuuouvvuu tIsqpnm\lkzjk klum'n o p.qUrUsBst]tuQuuuutsrEpnljhgDeeeyeefcg;hijklllm1m]mmmmmmn>nopqOrrsZst`ttu uu!uhuvwvwxyz;z{#{| | {v|usrqpoo=nnnnnonntnmmum-m"mmnnozp@q qrst>tu"uluuvLv:uuJtsrq-on-ll1kmkdklUlm8mnoCop;ppqfrFs ssszsss qpnlk i)gff:f7ffgghjjkkkkkkkkl l(l2lmmnopqHrrs'sssssttutuv6w x:yaz'z{f{|||v%tsrmqpooco9o o=oppUpUp@pooovo?ooHoppq qrGsstZtubuv v2vvvhuuZtsrbqonbmzl|lkkkl lcllllmmCmnppqqrqqponlHjiQh%ggh%hhBhijQjk&kkjjjjjjjjk(klmnop`q0qr\rss;s5s8sasttuAuvxyWzBz{|x}+}l}vEu5t*s?rqq9ppppq\qr!r?rVrKrVr6qqqRqFqRqqqrrsst:tuMuuvvVvovSuuttOsYrTq6p/o8n'mWllZkkkkujjiqiIiijzklmnop&p-ppon3lkjjJj2jcj4j%jWjk$k[kqkEkjjjHj-j.jjjj_jklamNn*noptqqrrqrrrsqttuvwyyz{|w}8}}}vuutvssPrrrrrsspssttt9tssosrrrrzrirOrrsttuumuuuuuuou6ttwssPrqponn mnllGkjigfedeegh"ik_mno|pqkq;po-nDmmm llll[l,l llkkkBjjjAj,j0jiiijjykklpm/mnoappqsqqrCrst}u;v8wxxyz{|}T}}wWvv]uuuBttttntpttttttttttxtssds"rrr[rrr^rsstotttttttGtsssds4rr~qqpQonnpmlki/fdcahaabcehjlnpqqqpoo"nnnnnmmmEmllgl kkKkjjjjjVj)iij&jkkl3lmnjokp8ppqgr#rstvusvwy y{{|||xwww]w;wvvvWvuuuNuuttttttt'ssXsrr/qqqrYrsXst t%tsssts,rrrrrrrrqr#qqpionmGkheb`}^]J\^r_bpe h+k#mpq/qqoppDoo{oooonnnDmmm4lldl kkkkUjjj[iiiiijLjkKklmno*o~ppqrsHtMuvwxz5{{{{x#wwwwwwww/vv8uu/ttnt,ttttsss1rroqqzpppq>qrBrss!rrrrKr qqq{qvqqqrrqqpp{o3mk heba^\[ ZV[]J`8cf`il^np%q pp/oonno3oooSoPoCo"nnnAmmam lllHkkkNjj`iiiijjFjk!klmn6no$opqxr5s'tHuvwxyzezVz2xx x-xjxxxxUwwOvuutRssWs5ss1sZsYs!rrHqq8ppooopbpqqqqqqZq/q pppppqqUqqqqTpp}oHmjh?d`]QZXWzXZZ]`deh kmopoobnnQnkno2oooooooolo!nn$mmWlllIkkkZjjQjj(j(j?j;jxjklmhmn.nopCpqrks]tjuWvJwxbxxxww wBwwxwww3vuutHsarr,rrr=rrrr qq4poo7nnnooppeppzpqpbp\p`pcppp}ppppppppvponmrjhHd`],YXwWWY\_cdgj#lnJo_o8nnqn9npnobopQppppppbooUnnBmmfmlllBkkQk"k4k;kDkk3kwl-mmnPno,oprqqrrstCuv2vwdwvuuv vuvwvvv?utt-sOrVqqqqqnqrr.qqppo;nnmmmn4nno(o9oKoWogoooppLpppppTp oogo7nAljhd`]YXWWYE\P_b]fi_lEmooonno opSq$qrrr5r8rTr"qq peoo%nnnn.mmSllIllllkkklmznAnnoppqqmqrOrsetuuv!uu-sst)ttu1uttt+srr5q`ppSpepqqrr9qqppo#nXmmSm1m'mtmn%n{nnoo9ohoppMppqqppypoolo#n0mjheb;^\&ZYZ[^`1c)filnoeop p p.pq[rCs.ssssstsserrqrpppFpoon]mmmmm[lllmn+no*olopEppqqTqr r^rsttss,rrvrs&ssssps$rr]qqEppoop)pqrrNrqqp2o5n_mmFmlmm`mnRnooFogoopSppqQq}qq>qppponmkj$gd}a_]\]r^/`+b dgjmnopqqFqrss_tRu7uuuwu}uouMttt)srrrIr-qqppTooo\onn(mmn;nooaooppp$p>phppqqrss8rDqLpgppqbqqqqqqqaq#pp[poppnq(qrgrrjrqaponn(mmem$mOmn9noLop+pbppqQqqr)r>r;rqqq~pponmKkig$dbaaabce>gsilnotpqurrzs1t#u3vvvvvvevuu`utt#ss~sss|s=rrLqqq^qpoozoAo\otoooooooMo:oHoCoZolopppopnn\no3opVpp|ppppppppqpJpq qrss=rryqpp o'nrmmmImumnoopq,qqr?rs sSsssis0s rrr(qponm@kihff@efTfghj`lmo.pTqbrrswtdusvw\xx xwwvv/uuzutt>t:txttttQtsssrs rxqqepppp}ppxp7oonnOn6nmmnnnnJl^jujAkEl mmnKnonno^opMppppqqrss+sxss"rqqpIo^nmmmAmomno!opqrvrsRsttKt`tss4rriqqVponmlkj+i8hwhuhii~j.jlmAnopqr[sstuvwxIx=xwpvvCuu}u tt%sttyttttttu tttssArrNqqqqqqp=o[nn mm=lll>l]kjXgdeghjVkml:lmmnIo"op|q qbqqrs>st$t7ssr!q|ponnmmHmjmnxo'pq(r6s*sttuTu`uRtt9sbrqpp7oCnbmm5lhkwjlii0ibijkklumknvopqrsJttuvwxTxxex w^vv'uu(tt'ssttttu>uuuv2v.uuuPtt]ssis*rrrq(p onUmmlYkjjNhfb_/^p`bdf{ghiVj&ksUrrq:poon?mwmlllmwn3o5p2q+r"rsstssOrTq\pnmkjiihhnhgg*fffgih_iijklmo^pqrrsetSu@vw$wwwSvvBuu%tssVrrssNsstMtuufuv!vEvFvvuuRttt^t'ssrponmlkqj7hfd&`\-WVY\^`bde-fVgizkl`mnoppqrSrrrBqpponn$mlllvltlmmnopquqrrrqpomkigfdctbbzbccd"de#efghOhiQjjl(mo pLqjrstuvw4w+vvuttt"surrQrrrJrrsbst5tuuvvivvvvvnvuuuu tmsLqpoounKljhfgADGIKMOR'TxVtXKYZ[\]-]^"^R^']]]]^^V^U^]]]]]^_^^^^N]\ZXVTQNK HFEDCCIBC^CDEWFIG0H@IJK`KLWMUNPSlV_Y [^aEd*fghUiVjajkk jjjkjjjkOkl1llm#mnopSpqrw?6?@aABEmH K$MQT(WbZ]`ac;d;e*efofgbgggh h`hhi:ij jklmcmno.ooooonm@B(CDDE EFFFGG(GKGrG}GH\HISIBIHHWH"H$HEHYH,HGIFpDC@A><_97 4K2$0J/<---.-../k001,123W34579<?ADHKUNQTVXZF[]$^_`aaabLbbbcc}cde5efg"ggh=h*hg~fed[b}`^[XUQ_MFHD >82+%Bn"$')+-/W13C5"67Y8n939:):; ;X;;<<@<=6=>B>;>== <A93.%'!"7o!y#2$&#()++,-././#//0E0011~223 322d11E0000^0/).8,+H)J'!$",}99 ]PN #U%(+.147:x=?CACEH JKMpNPkQgQQRRXRRRNRR!R}RSLSSSSnSREQPNjL7J8GFC*?;}73].)$HE8W *jCy(b 0!!"U"#q#$Y$%%y%&1&'\''''<&&4%%7$$$#0" | 25sB*UUv& 2 "%H(+ -0358!:<>@BD}FPGVGGH.HmHH7GGQGG>GGH HHGGTF~ED?Ba@>Nu*?Q,8q{lQCL w& '  05 j R C   _ } S"`%'*r-/13579W;<<<==9=.<<=;;_;W;~;;;;;Q::09^7632Q0.}+(%B!C>4" I,8d"s9+ , Z F   cCD*afvx Pf]n<1 N hT!$)&S(r*[,i.%/01122211(00//0 0///).. -+V)'&:$z"Qw #n$v_ |<6  F  i p )  C2CJH ?mHV\9 " f2QY^ 5"#%n&~'S'{''''K&&*%%?%G%]%$$l$#"! #%P  P^Dtjvpo@XH{k(rrK, p'r])eq>X ;  h%e4T(H#/IBA YR0W  !4XP/#UI ]o4:+-B<0?J;*+9UO&fO\d}-]jnQ> t/l4s @%A a gVy$Fw7  T }t5 3HY Xzw$g\}!p'6& |j$ ( x < 0Gt0 D>`lZL5[XC2?ncL7&jr2`?QRZ`elvLcE Jv%M'8+ <%;NiJqZ( e Fs$YH_IV+!cDzX} \2!Vy +CL]cd^cT7yAr^f]KVVoV:NZ'dw`TBG6=w']N _^m5h<QG fA<EasqN1 :|/*_ ,fKyL\LNwoz;G~CoC= ^O9 SMu{*@Q9!sbUVTWUZft{{}xtiZJ<70:Ls Qiekn3udr;$nIy"[Co JW*jO}Y",O ; W+?UB(jZHC:=FOMJQ\adekt ?U`C)BS5zn2Mo`Qj:_ts@f6@IE[Fk  SS):'hNA73$"/IYht 5HO,>S;)*GoWSO~qT%vR{D:Y1!r`d)W~f.XD,3] PwbUBBNj #K@*IB}F;Eo=g>:p19NxZRPwJ{sb,g+(%]0"S#)PpK E CSB 2r!(W1O=P t},8 }Oj]gkC/|/8W W)gD,.)5Iexh7*ZCk4WiD1mu9.D;P1!e& 6DSTyMS0qX)vQ~,+y{\>8:MWlaD3=Z+$/ N8,/^<$dP-h+i*h16F-d~85{lOp,7 qodhu{WA9HRh|""|?cD;0 wa5 VQ/pR@B3U;4X &[pgeq{tj\]iWR7Qv"eQho#(?MMG~obA++VT%y`)>qrnjoyvlm|vA *nm%\tiw#sp("80b5_Rq<@.&K[IrG&(4]vj`ZQPUafq|S'C}K EL? ,,ktF@- ER.#ntAfHefC.kvV9=R}}gVDDLcxj>%=k_1f-E<}w:45 'KM@lh7'sB:[R'3Zo\S]gywnpxjOA2@_\"0%~I0=iiI"2!)I5Ahf?)ef*"x ( a".Ba~fSQVguz_G7CYgN@ Kax~Tza'   >C+%[lV0Hu^+5t't?.(@VqrdWZewuaSCENiy]H234\Fa|+ Ca\>  #- %;;;RUN?59BXytN""YOvaECDR\nqrnUNSjgRJFKDQs4 m`$LaJ$ #" $,2C)#BTQ>/0=VnzlH27_VqxXEJM_wy~}ypgns^OMLXd5ot5"N_WD-(' (#932II:04FZ\[kx{i?-Fzq)Rkc^fq~{pjmknn{7Br?3H`kX?AG=( , .@<!?TT@.4HSZbgrnS<4Or8Nnhm{vnhjgq{6KqI9F`f\NBEB'!0( >N84UeU9/;Pb_W]foiK<OxT'(J}zspo~q:1da?=SdgVBFLD0#A9  ' ,MM9%$<Zg^I<G_mpokuvaMDW]=4T}|xk8(:kiPMXgi_VNRO8! 8? %4 :ON:&'@dwhOIYsutuxr[PZxxREP{b<-JwcPZqwn_SY^XE+.AA*"%  !4.!*;JMD33NlsgWQ]rzwh`i~eR`|_@AWzkZZepj]XX]XC.#,@K9!('36-$'8R^K58OhrgSJSm{~xldqxfazzRCKlq_^hspcUOXa\I/",>G>($3, '461,0FWO@:CVgogVO^u|z|}{mkzrriZct{hdmvypd`bgdUB66BJC1 #) *!$3<828BKMHDERhtiXV`luxtop}tnt}mn~rkpzulipun]KBFNOE3#   &&#/7<@DMQPJDGZjfXQU^lz{uy~}zz|xqlt|ytrpopj[KBBGHA2# #   "#-?FGJMPQKGMVZZXWZdvvrw{zznlsx}{zyjjqtofWHABFC9-$ %%  )3;CHLLLLOT]cfd_^erwux}~{}}tmnw~~}vomv|vi^VMJMLC70-(%'$  "/;CFFLQRT\dkkg_Y^o~voms}~vtyvu{}y|yxy|~qdbht~p_Z\ZWVQD;;>7.*$ &@TZG, 6MRE8,$:Sa[K5!!*ItrT>9EJTblqnlgd\NDBHJQ]lztj^NC=DPajq}tlecciqsj`aaYMB?CHE@BB:0(-?NL=1*'()& (9]l\9! ,F^bT:%")B`mhK+-SzpG16CW`cjjbZ[]XN@99CITcp{|ysoljhgbWMILOV_m{gUKEL[fcYXWSJ?86868BII=)(;IH<* "# Bb{m> GgsmO/">^pqW5%@_xveI21A[mqoc\SC;@LNNQV_db\XSLGBDGR_m{}tsl\MEJP_r}tcOA<AAEOWYQG;/,.8BHKB1# ,AMF./d~yR#>uyU->g}]. JoyrQ)"Hj}qcRC:.0;LSXenuofTB2# !.:LaumS@7,4G`t{zgM80,5CPVSRJ:./7:<BC?4%"1AE7!  $gU("G}N$%LswQ'BdpeE,&-MypT>.,)2>QhtwkdUB1'% #%1BS`hptxwtrwzypgW@0+21;PftpfQ;.)2<KafX>.)#+=LSE)';C>& L`+DP &PvtI &S{n:*`D"%-?Uj}~xaH-$7L_t|seYODBFVk{}mS?- =`vs[>*'&7SdaJ8)!0CNG5(=H<" ,nzP:zD'UtucB%&EmsQ+ LN F`iog^O>. -E\kr{}|sj]QE:3*((4E[mynL+8YqrdF"'?Q_T; &@WT: (9:% Nb= ,pB+WqnM+#J{? Ul)La>$HjvfUG@<:61,(""$1?Y|oAChyh=8\dV1#Ri\0 57$Z.*xE,]mY: 2Rju]+ ;lk@&'Lzq39QgowsmbVMIMOSVX[WN@4,#!%+=Vua0RwrJ+Yi_3,MQ?#3"/xP 6bqT$/Xrd==}~B dn8umD"&A[ow}r_OC;841,++7HcLGV/kg#OcD.YL)`hE-R^P+ChhEJHP\0)D\lu~rgYK:)  0QxU -yW 3dnA=O<  8USg@&Q]AYt_!LnV%r,#5ELW\Z[gv~}~xqeYJ<.  S6q rt *xZ 1M; _N]@ >L4 )L[@]o$#{o9 'C_q~xo_M?87.*+5BQ`jrpm\H'BPvW_ ?dT,)OB ]gNfB 1;(-SP%"u}7|#5.@upZF2 #EdyNT A z8=F%fs@-QB +jZ%JaM,(+F7W`3S` 2jqWG?3( @pu;#}TfT<_tC:2 EDHeQ5$ %?0!NH2 WiJFOj< )9IU^]^N79sN8I(7cG0U bm.0&BVsb9(&%*?VhfQ;Ve@qC1(Dd%AMZXWC*g[Wn:i|+o3Uph/mCi5@R'5 U~B( 6Kzq-wskO 3Q~Co  ["db^y$aw3z +HL79 Z=:T)la $ ^)F-p1l2PX*GD!+/9?G>3 ShD&'[/EFV,]&%@x!np?!!/Jtl8ett~ITQNM$ z y G   9 _ { m * Ri5 J$hom`^&4Uy@qyoQR8*&ao).PS < E N >a k ] _F  f X B 1R(qtNo6s$"rp 2{^O/'ME E bVa_|7DES]R40:I` + ? f RfLks]\D?:/1!FYS bn-\ x L K'?X1'lei.l J z o P 6 . ( Q !L!" "<"\"@"-!!! aiQH7f:WtWcF{ qQo&vsE^ )(Jq52tp3C z Q ! {C!t#0$%&|'D(2))*+]+,f,,,,,,,--p-.".s...|.h.--,C+g*))6((y(1''U&&%=$(#! g{RQ$[ XpffD<|=l ?Ec nH > B   Z)Z5}":$'*=,.Z/012p3456789"919C9888M888A889(9t999999m88D7y6554i332W10//-.M-,{+F)(y'%%$#"m  x'T/ e l  RD~Mzq 62 , . j 2Rd7t!""#&#%-'D)f+.o1368j: ;x?AfBCDE=EEEE DCC]BB`B,BVBBC CgCCDD4D7CCCBAA9@??><;:99(876543810c/-,*'%=" wBd% F dqf|7dX{v-XW.!#f$&')N*,,--.0:257:@LLM$MkMMN,NJN"MMM&LLcLKKJBIHFEDD.CjBkA(?>==;:986420R-+_)?'%$"MB+o % {_* Eg($!DgZ6 D"#$%'')'+X-+.013|5V678U89:5;><@CYEHJMOQS7TCUGV#WLX?YYHYY`YXX WdVUTTT:TTT[TTUSUUVAVgVVdV;UUU`UgPgwgg}ggcg)ffDeddcZbbbbbc>cdee{eeeyece&ddscccd(dde\eee?edcba`U^]A[ZXUSlQXOMKIMF9B?7;852+/-,*W'%#r!9_ G}C#?&;866678)9;>M@BSC|DFIKPM^O2QSUWY"Z-Z[@[\ \]_a9c1eg&ikmtnCnnlmnopcpq q@qqqqqqrssYt=u uvwwxxSx_wvutszrrqfpoo2nimlkj/hec`^]"[YWUSQNKGD4@Yd~ba|``4`1_`,`abd eHfh ihjkmo*pqrrscssstsssysttuvCvvvuuitt~sssrrrssrr9qpooKnn:mmm5mvmnopqq5qbqqrOrrrsstuvow2wxrxyyyyHxwvutssLrr9qpoo2n=mRkjXhfeudd ca`]\tot_sss=s rr|r+qqrmsSt1tuwuv]vwQwyww)vvNutsrr:qqpoo'nQmm#lll{l%l#lzm mmlk~jhfdPa^[YVUSQnn n$nUnnnnnTnmmmmnQnqnoq;rstuGvvvvvXuuuQuu0upuv v1vzvvtv uuttWssrrrIrprrs?sesYsNszstt0t sst!tubuvuuxu tt smrqqpqqr[rsWsstQtu u)ttt4ss6rrqcppQooTnmmblllm5mimnKnop&onmlk;iZgPeb`^]oop*ppqIqPq1pplpooop ppqrstuvew0wwwkw1vvvKv:vWvmvvvvvvRuuu5tttIss]rrrs*sysssssstt*tssst}u-uuvuuhttsrqppNop*plpqqMqqrOrrrrrrer.qqq6ppGoouon\mmemmnro"opq)rFrrrq?p o>nlk0ihwgHfdp,ppq`qrr'rqqvq2qq&qqIqvr st8u uvw2wxxwwwOwww wvvvvviv-uuqu9utttpt=ssssst,tMt,sssrs|swsOrrrrsstMttttttjssrqp>ooYo&osTs=r]rs sXsst9tptptQt*t(t>t*t[tuuv^vw1wxxWx8xwwwcwnwvwVw vvuuu\ttsss0rrrrsxxjx;wwwwwZwvvbuuRtssds rrvr3r rrr>rgr|r]rTrxrsXstWtuu1uUutt#ssOssHsst/tCtit^tRssPrzqppnpooYnnno2oopcpq*qr!rrs,ssttttssssstu:uvvwwwwwbvvmvDvuuuuv vFssstthtuuluuuuuuv4vw*w@wAwwxKxxxxzx+x wwwqw vvuttsOrr_r.qqqqqtqpqqqTq;qYqrks+stu6uuuuVttlt/sttettttttxss+rAqdppooOo nnnno6oopNpq0qrbrs9st@tu&uzuuuuuv?vw4wxGxxsxNxxxx+wwwvw^w>w:wFwcwsssttwtucuv9vvww>wowx)xlxLxx$x`xxxxxGwwwwvwgw>wvvUuuuuuvgwwxxJx0x(wvutssrrqqqqrssstQuuvOvvw-wWwxQxy\yyz0zz{o{{{|{{{-zhyyxx_ww vvTv uuuutlt.tBtctuvwIwxyQyyz{{:zzSyy3xxxxwvv8u\tt s3rbqq&p_ooooopFpppq#qSqiqqrBrs/stumvHwXxxxxx`x ww|wWw>wwxnxy yEyEyVxxgwvuuru ttktQttuvvvwwxxsxxxxhx|xyxyyzz|z{i{|"|{{{{z xww{w(v^utttTt.tttuttu+uvwxGxyz#zhz{%{{{zzeyy2xxawwvv ut]srqqKppoooppPpqq3q.qaqqqrrs>stuvwjxyyUzzJzzzjz"yyyyyyzyyyyyyxnwwnw4wvvvw$wxxxxxy?yyygyEyxx}xxyy2y[yz9z{H{v{w{${zyxwVvuyu!tRsrrr;r"r rr(uuuvAwwxyvyz{{C{S{|{{&zyySxxrxwvv.u2tUsurwqpploooppcpq\qqqr,rmrqrrstDu uvwxyz{{|X|F|2{{{{b{I{U{a{J{zzzrzyyxhx!xxIx3x6x_xy$yzz:z&yz zyyyUxxxDx8xdxhxxyyz>zzzzz^yxwutKss-rfqqppyppppvvw wxby@zz{:{{| {|D|>{{zoyy$xxMxwwvGuTtksurlqppgooppqqr`rs'sKssst%tu'uvcw6xxyz{||}9} ||||h|*|||{{y{zzyxx*wtw,w4wwwwxNxy,yyyysy|y~yVyxxoxwwwwywwxxy,yyyyybxwv1tRrqqdpp$oo7o%o^ozoowwxxyz{n|:|}}}!}}||H{czyy$xx@wwvv?uPtTsHr=qkppKop pUqqrsrttltu4uuv vcvwmxxyz/z{|}I}}}y}Q}||||\|e|Q|{~zz/y~xww;vv@vBvvvvw]wx]xyyxyy,y$xxx^x!wwwwvvvvwXwxPxzxxxMwevltrq;p%oonnmmnnNnnxxkxy3z0{{|}?}s}D}5|||f{zyxxwwGw vv ujtsrqq@ppVppOpqrtsmtAtuGuv.vvwwZwx4xywzz{1{|}}} ||||B| {{{{{Nzyxxvuu3t{t=t*t`t]ttuv-vwiwwxxXxxxxpx$xwwCvv8uuuvJvwwKwwwpvusr-pocnnEmmAlm mzmmn4y xyyz{~|O}(}s}j|||V{{=zgyOx)w0v^uuuuuttsIrqqAppgp;ppopqrstuuuvvvw-w\wwxjyyzSz{r|||||||N{{{x{K{){zzryxwvu&srr:rqrArUrsRt4uuvvwPwwx2xrxkx;wwwvvJuuTuu@uuv;vmvvvutsAqonmmSmlPklllm m\y8xxyyz{:{|{{'zzPyxxvutsssshs=rrpqqnq!pppppqqhr,sttu8uuvv2v=v6v*vavwnxxymzz{*{{{{{t{&zzzzKzyyPxwvNtsqwpoooopEqqst1u uv'vvw-wPwwqwwvutsMrfqqqqqqqrqpppqqqGqqrist tuuuuuuuGtttkt|tuxv;wwxy%yz9zzzzhz\z.yyy7xx\wuvXtrpon2m\mJm6mn_opr1s~teu)uuvv.v v&vuuuau5ttt(ttNtu1uuvHvvvvu,srrq9ooCnnn!mmnunno xxw^www>wwww[vv?uuUt{srq{ppWpopbppqpppq2qnqqrJrs.sttuYvvvvv&uutesrr;qr rrsJt7uGv&vxxyMysyyyyyixxxwvuOsNq'o5mlkkkl8ln>oq%rqsKttjttt}tEtsssssxsXsIs*sfstu'uvvvww0vutsrqqZq,q6pppqXqqqxwjvyuuwu9uAuou\tt%sssRrqq poqo#oJoKoopTpXpapqAqrrsst1tuvwoxwwvv#u&t rqpopp/qr$sxtuvwxxy`yyy"xxwxwywutrpanWlkjjyjJjkln1opqrrsrrr;qqqqqqqrr*rs^tHtusvvw,wmww?vuu0tsssssssttttwvuzttssFss rr{r r rqqYppAo{nnnno oqoop*pqYqrs"st?tuvwx=xxx;wBvyuUtrqooo ooqrpstvCw>xxhy y=yxxux5ww2vutKr[p8n0llk`jYjijIjklnooppqppp\pp p#p\pupppq9qrstuuvWww`wwywvv=v uuuv1v*vCvwXwwww.utus,rBqgqppp-op pGpAoooFnn&mmnnRno9o}opq|r?rstvtusvooUo4nnoogooouo%nn5mmmnAno o[opqrks?ttu;uvTwwxxxTwvuts~r ponnFn%nopqrt'u:v1vwwwwwwwvv2ts[qGo#mBkjiiWi4iij&kklvlmmnmmmmmnncnnno.opqrst$tu_uv[vvvmvJvpvvw"wxuxy yzLzzzutVrqgp?o'nnmmmn1noo9oPonngnnnnXnnoNopqrys^tuXt&rqFonmmTm*mnPolEllm'mimnVop qPrhsAstuuuuuuuuvsvw-xxyqyz{S{|{ugtrqNp3o$nnn mn8noIoppMp0p ooo]oHo]ojoop pqrrEs!stuIuvwwwww|vuusrdpoxn[m+llFllmun noYopqqrsgtttuttskr:p^nGlFjihh|hiiDijtk6kkkkkkhk-kjjkkkllmPn7o`pqrs stgtu utttu:uv(vwxyzz{|{||usrq@p2o)nn#n9nWnopApqsqqqqqq8pppppjppqkrrszt-uuvwwwwwqvv!u`t1rq-onsml.kokIk"kfkl.lTlzlmImnoqqr:rssrUqpnlkihhhimiijuk kZkUkokFjjjiiiijj&jzjklno]pzqjr"rst4tdtttXt9thtuvvwxyzg{p|\}$}X}auhtbsUrBqXplooxoopbpqrgrsmsssssrrLqqiq ppqJqrorstuvivwwwwvv!utsZqpo>mlkkjjjjj0iiMi}ijklmnopq:qCqqonlkxjjyjzjjjkSkkkkkdk jjiiiicikii~ijjklmnopqres+ssssttuLuvwxyz[{~|}S}}vuItsrrqqq#qJqr@rs~tttu$uttbss?rqqWq!pqq}r:rstuxvKvwwvv=uuu'tfsr\qEpnmlkk#jjjigffBefghiklnGop|qqpo{nOmmll}lulllllllSlkkLjjajiiiiipijiijnk>lmmnopqrrs"sFst-tuvRwxyzk{|}}}w vvuttKssHsrss&sest3tttuttt sLrvqq&pppq#qrsXtLuuvvuuStttQss|rrHqpoo n*mbllkj|hfecbc%cef#gilnKoq[qqjpgonnln?n@nenTn4n5nmmm1llXkkk9jjjjjRj$ij j*jk0klmnopq|rr`rsstQtuvx,y y{*|E}!}D}Nxwwwevvzuucttxt*sssssttQttttEssr?q|pppeppqr>st tuVuEutissos)rrr>qqqq:ppoenmlkjZhZec^a__`7abdgij8mopq[q}pp)oo9o4oToo~ogoooTnnnmmllql%kkkek'jjjfjLjjkDkllmLnao}p^q qfqr$rs[stuw5xyz^{|_|x|~xxx~xgx%ww`vvugtssmssrrssLsssQrqq p|pGopp8pqPrs st2ssrr`rqqqq>q qq*q.qpzoonrmYl8jEhe9b6_]]]_`tbehknAp>pqpoooQoo5ojooopZppp1oo\nn6mmum llRlkkkWk"kkk.kskl,lmnopTpqqqrrstvvwy z={ {{xxxyyy xxw7vbuutvssrrJrmm6ll\l kkkktkakikgkkklmonao:opPpq>qr&r{st u(uvx"y/yyywwwxDx{xxTwwvEu^trsrrRqqqr8rssrsqpoo:nnnZnHnenop}ppplpop=ppq-q!qpq ppp2onnumlzjKgdA`e]4ZYXZ[^aeiloHpppoo'oo-o7oppqgqqqqq2ponn-m|lllUllkkkll lllalmno]opspqkqrrErsztkuuwwxxcxMv]vMvwwhwww0vhutss9r^qq+qq0qrerrr?q^p8o:nn$mmbmmmn;noooDooop-pqqq q qppponnmljh2d`]"ZYXYZ]`dilkooppcp:oooopTpqr\rrrrrwqppoIn{mmdmllllllllllm@n nop pq9qqqrrjsstMtvvwcw/wtLtItuuuuuttWssrqq>pppqvrtrrs(st'tttlssXrrTqqDpp>pEptqqrrrYqpoonn`mmm2mnmnoboooo6o8opOpqLq]qqqqqqzq$pploo0m}k\h=da__6^}__acgQknpIq2r?rss&sXsstWtu^uuuuuu1tts1rFqfppoo%nnnzn}nnnnnnonop5pqqMq-ppapp3ppq5qrsZssrqpojn&m0llk_jihfdw`]\_eb=deg]hik klmwn`o

t&t=tvtuAuuvGvvvv!uuu=tssr8pnmlmki*g/d6a;\XRMM>Q)SV[X>ZM\]_*`acd>efgwh hijkkjii+hgg$fDeUddeeTfg ghi i:hhgfe)c2`^\ZYxWW V4V%V,VWXY]Za[\]^_l_`ea&b)ce fhRikmnp3qaqrqr.rmrr|rarUrgrrs ssssrrss~st9tu-uuuuugutsrq)o\m[kih eJb^ZU`PICC8GpJCLNPRTVJWYDZ\%]_0`Waabcdd5cc9bb2aa2`__=_!__`ahb7bbba`_^I\IYW=TR3P;NMWLcKKKLSM&NWOcPQSLTUVW"W{X,Y8Z\^`cegDiklmnn7nnoo&oOoopApq3q{qvqmq;ppqqrrzs#stwtu tttKsrqomkig"dp`]VXSqM,G@t98yJ?ABDtF GIAJKLM*NNNN[NIN$MMMMGLLmL_LLLM{MNbNML+JHGDBH?<:z876'5R44n4g5 567{8@9.:P;~<=>;>?ACME{HJMtPPSPVY8[\^S_D`/abcde efghiiiiMhhhiBieijikkkl7kksj]ihfmd5bE_\Y$UQLF@9_2+%&#r'$),-/u1'2457*8:';<>S?U@+@ABB?BB1B.BAAA^@@@@@@AA^AAd@?>a<:8\631/-w,+Y** ***+,-/-./b0=112z23587\9i;>yATD0G+JQM OQ@RT;U}VX_Y[R\]^`Pabbb5bWb*aaaaabbcccclccb8`_^\8ZX*URNK7FBk<6\/)"a!'"$U%')G*q+~,.m/0283>4456"6c6\6666p6?555\5>5/44455V5 4b310N.,<)'%#`"!r b  - Q !"w"#]#$}%%&>&',()m+-03J619;>A^CEGKHJiLNOQRT}UWcXoYOYYYYY2YY6Y=YlYZ ZSZ@Z6Y|XVUoSQOMKNHD@<8/2S,D%Su[a "#~$%&'()t*I*+%+2+d+{++p+D***_*:*))))))^('U&<$#K!T'\^]Yu$M'I 8!\#z&(+N-0V25D7k9/:<>S@.BCEG2HJKKLMMNQNMM_MMMzMMMN'NbNIN/MbLbJIG7ECA?X<18v51-w( "M/ < AzQM - ' Q"f0+i<6 a  L 5MR1U%;~!$&v(+,.02468W:.;={>@(A!B4BBB^AAAAAAB'BWBBkBUA@>=;3986;30-*B&" AyXRlW s  % TB_{}Kd9]I " ie^     " 4 9  \ >_\6@ $"B$[&?()+-2/023<4566661555k5z5|5556-665e4l21/].,*( %j"c> uW_ +  6 T    & / W j = &   U g  SxA=fj9mz - DM v"#%_&')M*K++,+ **))s)U)X)))))))B(*&r$#a"; bDm s &BzK.Njr @kzqo nm[TKl<#Cr#dK I *1Wj%@ d m <  'rM{G*G| i > *bUY3L4R9*hiBT VD0zA3eIyG >pd6lH`yU 1O& =  5> Q{#2bD`   nA$0@bsEYcG1p1d)z'[Sw  5  cZ> j  , " & LuuoB!{&j)`!MN."^(qwz_  v?v4+@87mBKHcAMPw( j6Z,Uz\ Z:VXL4!GdG/aw'0[}6FEPY[]ptf;yN$H"iaJ}KLYq!F l!=iRoTW&+k _W mF*!Nv/BEWa_T]P/|@ vht7{KTy^`ygHlYWM~C>M*3cN `e,zz-oAZOW;AF]voR<" K/@0c?oTUUuwCR@} HKiU5W(Sn3FX>t_[c[W_msx|{r\G@B7<Mv1fw}]~Y(q0\A[B|Y*DZ+sQ`'*N";]+6EP6!mbJ>>IMPSUW[bfacp5JV;$<t,#%+w0Jo]Ln5]yyHg<< DCbOf\ ` 1% eRK;/#%-BVho~+@G%F['JJ+DvXOSt[$qW}=Bb6#vYwwZQo 6Z<$0hV ~aK8;E^xRI&A:oG7ApBf5:~;I[y\M\P}ra,h":+ W+ `0 +Kk{K"H>LJ2t!(R+REZo|(3 +ZuaotJ 7 +2T W%sM0,&3C\of5 -X5[(\oJ7rx8,H@T1 f)/;L\S(T3y_(q[x(-xvT612DOgbH5;Y#$5L4/7d="cR'n _% j3BH,k87uKj+ :ufe^euyWC<JRe{)$z=n=E4#xe2PP4rT>>5W@0V!'^|f_aozreWYd}ZR:Kn*r[ io'':PT Lp[<+4\Y(t`)Exujifkvxmhq}t? &kt ,Wlt 'tn'$54h< bUo:@3)IXErG)-9^th_[SRU^dnz|U)?yP EF9*-ksFB, JW2(szH kHck: /lwX:;Mu}gUDBFYomC+<i`4Y# D9{t976  $PRHsn;-uFA]T!+YqZOYcvsikqjO>1@]Z& (G19dfF!2"0N;Hmf= )bm2+z'Z *Aa~|eRQUcq|r[F2:R}cMB#(OhuQv_' BG0 -anT0Cq^-5r#$p<,*DWplaVYdvwbPBFKcz^I577[K`3B]Y= - &<=BUTM?23<Ts~oJ VPo`IKHS`v|qttYNSllWRMPHSq3mb *L]G##%! &1  4F* (CQN=,,:UozmI38aTmy^KOTh~vzzyrfi}w_TVR[e7"ru;,R_UC/,,#-   &=41EE9/2G_ddt~mE5Oq)Spkgpz}~{|qikmrqz?ItC:QgnY@CJB-2$  1B=&#?UVB/6LYbjmvqYD=Ws7Twpsyrlmkt:KqJ=Lek_PCGF,$4/ "AR@&#7YkY:0;Qed[^frpUDSxR)-R{ytu<*\a>>VfiYFHME2 &C< #(0OS@)$=]i^J>Icsxslx}lWIW\;5W~|r=*8hkSQ\lmc[SVP8 !:B#)6":RR9"$@dviQL\zwv{|aOWwqLBQ~iB2NzlU`x~teZ_d]H*,AC- "$ "3/$ *@PN@13MjqfUO_w|zfYc}bSdeDCX|q^[ivo`[\`[F0$*@M=!#)"06,$,?V\J68MeobNGTlzqeasxii~VFKjo^]epqgWNXb]I0$,>HC,&5/  "23.-4FSM@:BVhneWR`u||~{thizuygXbs{fcnvxrhbagfVC78AHD5#%-)#07525=GMHDGUkwn^[cox{wrq|{pjq~hfwtjnzvomsvp`NCGONB3&  &$!,6=>?HOMGBGZjh\SU_o|{sv{|zvv{yoel~xy||ysopqrk]MCAGI>."  #!0BGDHKMLEBHSYZVTXewzqnt~~|ytx}rlot{zv{tgelrpfWHABDB8+ ! !.49BHKIHIJQ\dfb^_gs~{roruyyyy}yw}}smlrz~}xrkjsywl`VNLOND7/+(&$ #-;FHGLQQT]gmkf`[_n|yofdjsywssy}wvyzttstuw{qdbgstd\\\[[TG<;=8/(  ?WZE+#=PRC5+!(;P^XH1*KuhL;;HJO[fljid^VMHFJMRXboy|zyke]M@7;CSds~zslilmeZTQNI>8<C@=GJ8& ,?MOA/"#)& .ThZ7"#1KbeX>)%.F`jcG',Tzh?-6EVXTX\YTVVPHAAEMSY^cklgacecaee[OHGDKYnzj]OOZfdYQJHF>65602COI4!!3EH8"  2Ple<DesnS4#$>_qnP-"=\tscG/-@]oohYRL?9=FHKU_fe_TIA;:6:BP\hxupdO@=IO\nwZB8;<?CFJHA70.,2BMK=0' (@OD* !OhiK$;lxX2;b}X$GjrkL)#Gkp`PB;12:HPXisugWA- +;N_ou\E87-2B`}sM1&"+2<DGIC:205;?A?C?.$3EF5"  RvnJ((LzT-!,OtyT$ Bdn`@(%/OwrV;)'#-<RgqtkeVA--=M\eklopnklkhbc]I7/6<Nh{ugQ;+"-AY`U=-'%-7AOI.'9A>) ;ouQ(!MS'.V|wN& !Q~k6,bF#!4Oh{yu_G,"4GYjszuk\PG=;<IZn|bK8"#2Rm|{cB%0M_\F4'#)4BC4"7G>" )ahAA~>,Uuxb?$(CgtN# L}KAXbhb_Q='  4HXchopogaWJ=3-&% '3Lh|bE/($5Sn}oZ8"<O]S>" <WV<%8:" KW00u<.XnnO&J|u<Sm*L{dE")PpxpeWJA=8520.) 7[c3 6\nuX-8]eZ7#Tna3 25  O!tG.dt^@&-SquU% 3fiC+(Iwo56TltxjUE>9=AHOTXTMC;1"'D_|FIonF/`ob3.PR?!1 fU 7h}d21Yzp?:x|C #dm6ruK!4PgtzraUI:/%&,89BRr`CU7qeMbC . DO)_lQ' /Q_T/Cea>RSHa7 8RftucM8+&&,Ju\ )}T 8fmB ?S=" (|T !PdC(NY?Ss[Rq V%$ s0'6?JQV[fpwx~xjTA667,,Gu*u[ zv,wc5Q<  kPP^D!CL3(KZ?cn#*{w@6OahqstmbSG=4.&&+58>HYp|}kX># SDnWa ;h_3&MA EvO *YjI$CG-2[W'$x8y)*OxcM?1-VyS!bAk.6I%lv;&NAWHVlQ$=>' 0I< UZ1]`BwyO7/& #]|"{oJgY7aq><194Gr]$<8 *C0O?6ctMAV|N-I]bXYN> P/8N&/m'W7)4Rbn05**=opH 47/$=akpU{;`tNeO6;N|@SZOM>.~utBHr 7yfp8p;c7AU' :+qyQ/'6. !5Gp-pp^N 2b2h SQB{9*pPAR81ZI;W,Ksa.!)& Z(E>6F`bJH[-,LdlzkYeduK3}y@Rd#'Q(6(H zTsbD%%) '}Aom;vkL-G  n M   S IFlZ]k; 7} remj*8*bW/&)0"Y]6&&fm!h#48 y _  7u7 I 6^F=B <  7dR3XQt*a(,hg,@diU2*(Sa=emc9  b .U^4yw4 I1 ,IfID$^( e H & | a RiV}PO9( rr)b4.1 a vO\>uc$.\ Y n ^ > > !a!"q""""h"2!_ P1 b.Xjs * +pS Zj;X516)E = 8 cTI\owc X"#B#$%Q&@'2(()r*8+*+,,,,,,-2-.>.....I.-K,4*\(d&b$#J!!g> 0 6+Y-kW F \iVT52}@  {dW@L (  cGO #D&0(+k-.5./z0`123456789988s8'888f89F9p9S9G99#876 4>2O0/=-,+*=))*?*++1+_+*)('}&Y%.$("!1;p C5qCL ~J;  P$!4_ !!g"1#G%J'm*,/^2<47489:;b@C DFFGHJcKLMNLNOlOOO9NMLKKIKK/KKKKKLYLnL2KIHDG F E DBBAAAAABBOBPB AK@b? =p<:86R3t0-*'$=!D}B~ |f0-)%#$ +  !"$w&')p+,.1P3658N:WZ\m]^W^_5_`4`n```a@aOaC``+_H^h]\\([[[\\9\]]M]S\[ZYYJXX7WWX!XYZHZZZZZXWVITSzR P3NKIGFcDhB>;8:52 .+\(%^" G I:.;f740W-+ *J)*+c,-/1O3 4618#::8"544^5:5768:?ADFHKMpPRU]WXYZZzZ[9\ ]^`PbTdIfuhjlmn\n3nmmDmlm mNmmmmmmFll&kOjSimhhXh#hghi9ijWjjjQiiiti hhhijklmn,nn>mljiFhfed4bo`^]W\3ZYaVSOL!HEB?<97]5/20_-h*'F#{XKSPZLIpECI@@?t@&@B"CEwGHJLOKQSUXZ]_aIb3c5cd6d{de8efh&ikkm)np1q7qzqqwq+ppjpApp;ppq qpppeoodnzm_lNk`kjkksllmmnn(nmmmmmnnopqr~sssrq^onmWldkyjeigfdeVduccb_`S]Z?VS~PMK,HnEC @><>9,642.*&a"R*Z4W>T*QNLKKKLDMOPRSVXZ\^2`$be8gvhj8jklplmm5msmn~oZpqsttutttt:ssJrrrssdsssMrrzqqpnmllJl0lmBno oppqCqLqVq>qq q8qrstuvwOx$x'wvxusrHqWponnm9lkkCjig+d2a][:XVTfQOLJHHEA>:51P-\)'($a_P\ZXW8VqUVVWXY[\^`bdegfikmPn%oop;ppppqqKqrstu0uuuuuuUu tt-ssksgsst)ssrrqqonmlllmCmnopzq,qqqqqqqqrstuvwxxyy x vuotrrqpp0oo8nn@mlkiiQgdbY`_][YVWdU9ROLHEA<9520ghxg ewcba``c``aabgcRdfhFi`jukmoqJr[rsHssttsssttulv'vww6w vvvvmvMvuuNttuu;u9ttMss:rr9qbpJoMnynSnbnoqppqMqrrFrkrrrrsHt3u=v`wZx xyz0zTzIyxwov$tss$rfqqqq pp onn%lkjhVgffdcal_Z]tZWTPLLQHRDAa><'l>kjii'htggghgmggUgh*i^jsklDmInprs'st@tttttVt#sst>tuv/vvvvvvvmv\v[v:uuuUuOunuuguttssssYrqq/pqqpqrrerrrrrrrrrsLttuvwqx&xyy%yxfwvutsrqppbooVnn/mmuuvoppqrbs8stzttttMss#rrsestxuumuuuu[tss)rJqhppoonnnnoNoop>pqOqryrrssesstttt)tuUv"vwUwx!xwwwwpvvmvPvRvwvnvzvvwHrVrssdst tuuvv`vvw wJwwwwwxxexvxix$wwwwTvutsrrq2pIoSnn mnnqnntnOn>nLnno-opqgrfsmt@uuKuu1tt-ssst=tuCuvvcv8uutBs9r>qLpTonnrnn1nZno-oopfpq\rrs[stt{uuv vLvtvvw5wxqxy#yyyyDy'xxxwwDww vvvqvvrrsJsosttu`vvwFwwxVxyxxx+x"x9x'www4vvvv[utsrqpp o*n+m}llm2mmmmnnHnnohpqqst%tuuuu?tt.ssst]tuv9vwvv}utsJrqoon1mmnnmoop^pqr3rstu$uuvuw/wxoxxy)y^yz6zzz{2{Y{zz3yyy+xwwwKvvPuuuszssst/tu[vvwx2xxy[yyyyxMwww^vv@uu6ttttTsrqpoo/nrmllllmDmmn2nno\opqfrssotguv=vvvvuu tttuuv?vwgwwwvuttsGr+qpJogoooppqrs0stuvYvwawwx;xyyz'zZzz{{n{{{{{{zz7yy_yxrwwvuuUtttitUtotttulv6vwxyy y[yzzozyy!x1ww+vuutXss^sVsPsr\qppoYnnmCllAlPl`lmmmntnopGqFr_stuvw}x"x?xNwww&vvvvwwwxPxxxcwvutts(rqqqrTrstuhvvwixxyyByMyByhyzuzz{{3{w{||-| {{{{zyy xxxw,vuutessosu|uuuv9vwx.xyyzzzzzyxww+vuu,tVsrrr{rrBqqpJoo0nnwwxGxyKy|yyzz/yyyy+yyyDyQyfy{yzDz{{,{={zzyxwvxv-v,utt3ssrqqqwwx0xxyz#z{I{{{{{{zyxwvvGuu.tfssrrr_qq2pToo"nnnfmmmmnnoopFpqrstuwwxyz{||7{{{5zzzjz7z,z?zHz2zyyVxxwxvvovJvRvuvCvwx!xxyxy2y[y^y+xxxpxPx=xDx=xMxUxy,yzzAz{zjzUyywvZu'ttt#srrTrqqJppxxyKyzDz{v|'|}|||||p| {Rz(y wvvAuu7ttss:rrrtrqPp~ooopoHo-onnoIop$pqrTsstuvwxyayz{O{|7|4{{x{!zzzizPz`z}zzTz!yyx]ww vov vvuuuv`vwxx>x[xhxxyxxxvxWx;x wwwwnwxxyy,yyyxxvussrrrqNpppp>ooytyyz-z{a||}2}u}C} ||R{zyxaw;v5uttnssrrjr3qqq&pp+pppp5pOppqqXqrsvt*tuvEvwxySyz?z{"{e{K{zz`zyyyyyyyyyrxx/w]vuuqu7u utttu.uvFvvw5wuwx4xxxvx?xrfrxrrs5sssprqqpIpoppHpqjrrsot)tJts=rqqq=pp~pBpRpppppYoonmgk;heb`^^l^t`adRgVjnprsSssvsr~rqqqqqrr7r&qqqqqpp(oo=nnwnmmnmbmmmmnn_nopqrrSrsfst{u uvwxx9y z.{{{{y xxxxxbwvutt sBrr@r+rr0rrrsbssrrqpBooopp[pq]rrs2sArr+qqaq(q pppppqppproonmSjhda^1[[)Z\D^addhlor^sBsss4rr.rqqrr-rrrrrr@qqBppo~nnnLmmmmmnn mmmn^o4p,qq{qrXrs|sttuuvw_x1yLz)zzzxLx(xAx|xxxwTvOuotss+rrSr r+rjrs|sssArdqHpOoooooopxqqrJrxr:qqoqeqnqqqqbqCqSqPq#ppnoonmkhHd`]gZYY*Z\5_cuglohr5s3tssKrrNrqqr rkrss,rrriqqpYonn`mmmmmmn nLnnnen1n;noKp$pqaqrLrsSstt~uuvwGxQyyyyWwvw9wxx?wwCvKuttsZrrGqqr:rsgsssFrmq=poto9oao2o#o.oppqdqqqpqqIqqqqqqqpq2ppp!oo"nkhd`]FZYXZ[o^bCfkBnqrssswrrrCqrrhrsUsssssrsqpoonrmmmmmn/nnoonnoop{q'qqrssosst$tujuvwxexxxrttu9uvgvvv4ukttCss5rr3qqr%rs[sssZrqpeoouooooxoppqzqqqdq,q6qsqqqqqqqqqTq!ppp oljfqbu_K\\@[z\g]f`&c7gVkoNrst t#t/sssDssBst!tntttttstrqpoonSn mn n?no oioooop4pqWqr/rrsAs]sOs;sist}turvUvwSvvors stZuuuuDtt ssMrrYqqqqrss!ssswrrq#ppppppppqqrMrrrqq}qqrrrr)r^rrrrtr4r>qpnkhda__^I__b?e$im1pqrstu-ujuBu&u tuuuuvv7v~vhvuJtsrqp}onnDnn8nknoUopYpppq>qrrRrrssrrr8r6r{ssLstu(uott0ptqqrstAtMt"ssXsrrrQqqqrrsistDtssrkrqr>rcrtrZr\rrssssCrrrrrrrurrssUs_sUssrqomPj=gdbb;ab?be5gkoqstuv1vvvvvw wIwwwwwwv!uytsrRq(p2o7nn~nnoQop|qq{qqrJrrrrsrrr qppppqq'qRqr(r ponopqrsssssJs.s+s=s?srrrs4stu3uuu>tt sssssssst5ttutttYtStatFtssst.tgt~tt:t&snrpnQkhfeke+deufhj~mprtupvpw wwxZxxxxy yxxx8wvuusrqpooUo*o|op pq]qrerrs8sVsHss3srr q>pgoo3o)o\oBo!ooo/nlkk3lmo{pqrr9r6rbrrs,sDsEs=sxstuPuv=v#uu9ttBtssss[s9scstjtuZuuuVuFu ttrrrdrUrArqq'p_nljh3feeefgUik'mprt5uuvwOwx:xlxxxxxxxWwwAvnutsrqqrriqponnmmmnllak6ifdCgRik?m1nopq3qrrs sssttPtueuvKvvvPuu*tt)ssshrrrst1tuvvbvPvKuusrqpp=oo?onnnYmlkLikgXeeeeefg~i&kmp.rTstuvhw%wwxxNxrxxxx6xwwAvrutt sKrr q`q*qAqqresst_tuuttt'sscrr5q4po nm{m;ll4jige/aX]` c2eFgi`jklmn]o op$pq qIqrrssXsss_rr qcppBoooOo:onp4qqrs snsDs%r5po,mlkj$hgg@fffffffdcsbnab{bde fhKjlo#pqrsft#ttu-uuvvvvvIvHuuXtt2ss3rrIqqqr@rsstituHuuu`ttDss>rqponcm\ll k%igebp^ZUX[^[acdfekfughiuj`kil\mEmnOno.opqpq,q5qRqLq5qqqpppq0qrrsbttmtttt srrZqpoYmkjphg1db(^.YTO>I5C^CGJMOQRT1UUVVWmXxYZ[\]^}_C`3`F_^]b\\[[[EZZ[b\s]^^^]X[ZXVSPwMJHGvFF0FCFGHJ;KMN4OUPR_SUV.VWXbYuZ\=]_ ``acdfgvhZiijUk klmy<;_;:\:w:;<>?x@AuBICxDFpGHIJKbLN3OQSYU VXqZ\r^'_K`TaabxcdeftfgPghiTiii~i{ij;jkZklPlmmllvkkVjji%gWeTb`>]MZpVRMG @v:z4j.._25T79N:< ==>>]>?@ ABD6E^FrGHJJ&IHuGFEEEE2DDODE[FlFFEDBA?=3:a75'21//c../10-1024 5r6P78+9:<=6>>?j@|BCEGIKsMOR,T/UVWTWXZ\@]^_`|abd,dddddePeffMfffffOeddcba_][XhUQMI9CA<5/*#$/'*u,./v0h1g12G2r23945n689;:I;<===VXhZ [\<\_\\=\\].]b]a]W]"]\\[Z YXHW]VTTRP>MJ>GCC+>82r, &[!:/!:"b#$r%x&&;&@&t''):*+-#.4/x01110/}..!.(.--8,,- ---,+*$)'r%h" Y/-=*9E_ ?!o"2"#`$'$%&U&'6'(*Y, .024 589;<=>x?]@C)EGiHJLwNsP@BD2FGGUFFGBGHHUH'GGHG!FEDCeBE~kg  c 1A  w y2)h!RL!#$i%&')z+l-/i1#2468<::;:;Y::;J;<&FzO   Mj<'b+k- }  @D2 J^2  B , .  7 +  > yPo-q)a!"$&4')B+,./l/\../E//0'///;/,.._-g,|+n*Z)d('&8#!~uV :(h n l  UaeZ"URq,*1w <0W/gxod Q ?Ys@(/3 !#S####$#p#####i""""o! }j [q@t4& lA,zNzsV:S0G@DTfzkN3p&\*jI: C 6 N an.qK,IphdEw  0 6;UkQC%~jNPPI7ivMd|K2RR-#'hA#Fs  - :icwGtc|f0I > - W 7 bXO 2Dw(6V-:mLavO Dd I`d?&`&u~FHti4 S a < m J )i's5E 1Ds[ITm/<*48!ik*h fZcfwo*tDMc4ed<Q}Q-2/l5.Y"NpX ]9KG"B#7aa:Wt11Wt-<9FNMISSM+a>9yAv=`,7B bg7k\-mT'UV 7 vG&Jn,?BU]YJG8!t; rxb[TS:Tow|A k~(cl|B4XE Zm_w *|}0zE`VW=BI^swW<&?BS?u CqlIVsKT*FD%~mId)Zp%%9IT4ye\a^akx}ui]QD>7AOs>=:MeD@ {]{%r&;[.p[i,0E  9c 24=I3naNIIQVXWUVYXY]fmy~,CK0!I {.gr.Mw^Gy6h,u p@rJB7)hRZ_n -iVK=2#"+?JWez2<S g)2CO"6oMca|V"w0Vz33S.0,`wwH; l/b:.3!r&(XtZG45AYk{ J ^8XQ~ a8Bl<c RZIHOxWIQxYpP\/3&#a)i<!-Ol|xHY >QT4o|#]DbN[t ~y+8&Yveki@ ;&*EXtK/.)6H_k{b5*Z6T]d<0jr.=7P9!k,2=M]X1\5ta-v"Z j"1{rS502CI[}[A16P}%+ ?G'#2dB !bS#qZpARQ.lG6V n2Bm_]SYkwS;2@I]s6< L9I= -yd & LH8x'bCABS51Y% /es]W[lxzkaPOYrd%\<Dg(t`.*mo)"9LLNr e?.3KG)l\*Iw~pgihlt}qc_jsyK $dj-I]u".un*': 2a7j\u;=9@WCqL16@avk`ZTTTXYbpvO)@vR D@3 2<twL D/ ER47Q&nHjg: }2pbECNp~hUFCANayi:<inDZ"= JB66$$QU V~vF 6zG?cS("\u^QXbv}ohjkslR>*7X`/&x;1@moM/" 2S?#SuoH2ij0 *}'W!-B`~|fVUWcp}~p\J5:NxcNC$%Egc}Rva+ CI3 9jv[6$GpZ+8u &sB2.F[voeWXbts]L@CG\~dO=><\RWz0C_\E#!-  %>A&(L\XN>239LkxkJ"#USmhOOM[j|no{pTGKdxr`YVZU`{@me (L`M-*32+/:5H00JVP<--7NdqykJ57\U j}aNQYo}twwyn_auzf\]Y`k@&rx>,TbZJ898$*6)   )A9#!9MK=26G[[[m|oE2Lm'Qphfqz}z~tnptxsxDBsC8Ngr^DIRJ45)  :KE,+I][D17LW_gmzv[C=Yr7"XztuwqmonwBHuM=JckbREMO7):6 -M[F+*AaoY90>Sfd]envoUHYS/6W}|yxuG .]nGBVfhXEFLK> 0LF#   &9WXC/-Fci[F=Icsxxu}}kXN^^C=Z~|}H/7cqWPYhjbYQTQ>+ 'AI)  0!#>TT>*-GerbKFYv|z{x`R[wtQFR{oI6KqjRZpunbX]b]K1$1CF1 "!   -.&$,@PQE66Mej]MJZs{xf\ezcUelMK^~tb^jvm^[]`ZG3(/COA&%+ 19/%+>W_L67I_h[HCQj~w}qdaqzml^NRruefoyzo\PZe]H0&/AMH2!,94"45.,4IXQA9@Rdg_SQ`tzwxy}|wodhywzl\eu}feqzzsha`ggT?5:EMI:((/ $ %27539DMOGBFTgpi]]foutpnpvytmks~|nguseet~qgekpm^H<DQSH8)"!  %.7>BEMPJC@GVcbZUW`mvyxtsstuuw|xqfi{zvvy{unllni]L>;DKD3& !#  1CJHJKIFBBELTXUTYdt~}qimy||uxshfnqu{|zvmknsqhYJ@>@@;/$!#&% #18=FJHDEHGLXbd`]^cn|ylimsx{zxx~vt{zmfhry}wmhkqush\QIGIIC92/,*'"   #)4BJHDJPOP[gmje^WZl{}rhbbju{vnnt|zusv~xuvrqu{~p`[`mxwk[TSSTTPE=>A=3*!  8OTC-*CVWH<2%(:Q]VG1(FodJ;9EKR]dgc`[XSIBAFGKQ[fotv|}wlg^M=25?Rcq~|umfeknfXROIC:67;::CD4"#:LM>0&%((# #FZN1#3Mei\C/+0C[e^B$'IkzZ6(2@QYZ``ZSSTQLDAELOQTX_b`^`cefkh]NEDCLXhyweTFHVddXPIEC=853-/>IF5  5FH;' %A]X3Fiwu[>.0GcpkN,#<WkiZB--@\kli^UI915AEJQX`_XL@9676:@M[hy}qkaQE@EIUgztW@7<=@CDEA<5.+*0:AB9,#%;JD-  AZ]E!?sd@'/Ko}V% !IhnfJ+ ,NpnaQ@2$%.?HP^eh\N;(!-9J[k|~r`L>7+.=ZytP4*%-4:>=?<4-/32125:8(*<A6#  Df`@#%J~`;/9[{P AbiY9 *KuqT:*)#*7Lbnqe^N;),<KXahkpplggikih\G4*06G`t~ujS<+!);R[Q:-' #+7GF-#8BA,/afDG^1 8^{LLxa, TzC &8Qi}|v^E, +>Rcltqk_VNA<;I^ty_H4%Dcy}eB%/L^[F5)"-=B5!%:KB% T\7;yE 4\{}iE# <c|oIFyyL ;Ueld\L9& 3HV]^glkb]TJ@93)$);Uo}cD&3Wvw_9;O]R;7RQ9&;<#?K'*l{? 4]tuW2!Dwu;Rm1 Gub<#Ji|nkeXJ@<8664/&-A`c.Bl{|Y+9^cU/KbX.25 Cg~@7kydH0'8VkoS#2a}`<()Kur= 6RirzsgS>32;@FNTYWUK@1!!0H^yB PrqF2_j\/)LRB.WG Aum;$Ae}j86rn4\n(:wtI"1Let}zm]J90*-3:8?OqaEV9od%SkM) 7D5pb6CgnY,Ee^7 QSI]4 8Qftp^M=4.(0R}i1U 1_kD CYE   oM+b{[$>gqO[y^Yw]i) 2@LRW[blwzzocUJCA<,#7Ir 7s[wr !n[7VB  ]tHWmW+ 2YcF$L^Aci!/|q;2K_fjhkh_PD:/+)--26CTh~hVA-W>r[\9dZ1+QE:hBQkR" 4QZA*TU'tu*{,1Vyn\G9+<hZ g> q3?O$iwC)QDG8 LgT)6LK8 2H: W],_fAyrG* Btu{qPkP. ZrD?2 &=jZ*6SJ* !;K3&SD? f~]IPsK0HWZS]W>/U#23[ABq'S2 ' D\q65'.`c@8ST0 ;B-B\opb@guKfU; lkEDs T 6 / ( i ^ Z ] ` M <^7Z| 3t%'Dr*s Cpfgc-<  GE!'6- J &]zN$_*y  @ X 8  U8kXdrua w H|]!} fsqwx qn 1vL\9?9/2vRh  } @zq6/wkM @q~a># m t 7 { # R j f \fbQ/"\Q5^Jtq~G R(@ Y _ADWCC 'v  ! ! !?!!"O"}""W"&!y d5zzK& ~G  } 7<q8_Nb1JRYTl,I \#({ 3 v lf]h!#P$$%&a'9(()l*#++,,-#---I--.[...R.$-,+*7(M&W$m"!A\:-+ 'D s n"^6xC _jE& m Y 5k1x^"%~(@+-./@0%1 23>4T5@6678s8888i877838|888w8p8 7653240p.-]+*(d'}&''-''(&())O((X'G&g%]$Z# !?XP d mz@ Y:dl: a? M Hp !#%(+p.S11368::<=9>?A+BBCD\DDDqCBB5AADA,A(A9AA A4AHAM@@ >=6433222334%45C5#4321~0!.-2+)'%#!hx= ? Q|X(Mllrva 2 ' | >h+ "~$y&B'))* *n+b,/1y4T79???a@@A)@@?c>y=.;:8|65H3r1c.,)'|$y!sY^ g J\cZiA%"MP.wl{9!%')+-0B2d4'45~567-8;=@JBEfGJdM)ObQ%R0SZTJU\V0VWQWWXBXuX~WWUTSS4RR?RQQQRGRRRuQPOxNN0MWLlKiJJKK0KSKZKL!LLLKJIHG\ECA@|>=<:8g5S2d/-+(p$!oY  # )N3"0e-2)&3#: yh4AW "#$&)d,/2N4k69U<*>R?@A AiAC DGI~L)NQSVPY>[}]:]^_8_``z``a aoaaa`<_^]1\b[[R[ ZZ[[\V\\[ZYY"XWVUUUVW*WWXXYYIXXVUTSWQOMKJhHFDL@=963)/,/(&u$""ww.KD mI;85i1.,N+3*.))[))+2,Y-.0<2c5q8;=@BEHAJKoKLMMNPR4TRVX[P]`dc&ef~fg%g gfgg[ggh(hZhpgg;f1eCdmcc b{b1aab^c6dddccb!aaD`x_^Y^^Z_`abAbc.cncbb#`_^]?[YWVTSbQOLI"ETA>|;<8;52\/-+)'N$"w 2GD@=6:8765y54`45D6790:8< >ADGILSODRTV7WX3XYzYZ[]_\ahcregjlRmnnnnHmmmn n0ninnonn&m9lak|jiihh)h\hikkl&kkj>iii"hTgCfgLhikllmCm_mDlVk>ihgfe'cya`a_.^*\[%XnUJQrMJUG?DqAS>t;97y5O20 -*&"RqOLTROLJYGE.CA>;9'52--)v%"*@\ZoWTR P NMtLL*LzMNaOGPRT V0XZ]$_naceghj;kkl;lxlmmnoqr6s0stuuZu%tttCtst)tctu u?u>tsrqpoHn&mlllmMnpqqqqq`qbqaq'pppqortucv}w:x.xaxMw4utGs rq6phoonmmqmlMkjh:elbc_W\ZXVTSQOLJlGyDA=<84F0 ,p)w&dab`^\ZYXXWWXXYZ\]_C`bdfhjEklmooplppppqdr rst0ttu%uouuyudu'tttnttuAuuuttrqpoVn=m3llflmnp-q qqqqVq^qnqFq=q4qrt?uvwxfyMyyxwv)tsrrqKpp;ooonmlVjkh>ecbQa_][5Y%VTQO'KGC?n;85'2hkjizh8feedcc4c-c cdcdefghjcl)mop4qrrsost+tssstxuuvv6v6v!v>vavmvcvgvLv uuuv3vwvvvYuutHs}rqpoo2noopqRqr qqq}qqrrCrsYt}uwWxsyqzz{{zSysxvutzsrr4qq}qpp2onmlkPiihh fdc `^\YVbRNJG6C@>LoZo>nn?mll`kkljjj3j-jk1kl8lmSnp+qXr2sstVttu uttbtBtntuuv5v5v*v v v v vv uuuuuvvPvkvLv&uuuOttss1rr3qqrOrs%s"rrtqqqqrrCrsFtWuvwxxy}yyxx^w_vYu+srqq:ppLoo.nnSnmmmllGlllLki{gqeca^[X TQNLSIrsQsxssns-rr^qqZpp"opppppqrttuov&vvvvvvkuuxuTuvuv0vcvvv^vuuuuyu\u$ttttuJuuv vAvhvvvv{v,uufuu@u,ttvssFrrqqr4rr r[s=tHuXvvwBwwwwwdvvOuuuuuuuuuuKtttet8sssrrsVst9tuuyuv&vIvqvbv1uuuv3vwCwwwzwvSutss?rurqrp\onnmmmlmBnnopYpqrrrqpnmlwjhfdcYa`z^t$uuvvvvvMuutissssssstuvwYwxaxxxxx6wwvvtvIvuuu]uttUsssPsrr(qqqrVrs7sstt4tYtdtztqt>t&t.tu&uvwWwwww@vvOutsrqqr rdrrSqqEq6qqrr qqmq+qpp3oann2mm_llm no,pYq]rrsCt+tGsrAqoonlkjZihhYgsZtcuMuv,vIv uu}ttNsssssst[u5uvwmwxixxxxx.wwvvv9uuftt}t ss5rrrLqqwq-pqqNqrrhrr{rzrdrErr qqqqr6rstuv%vhvvw1wvvusrr6qqqUpoomo=oppppppqqppo\nn@mmVm-mKnop0qPr rrssssr8ponnVmll8lll-l rstuuv uuuu6ttstmtXt^tIttuvAvwx xrxwxxxUwwwwvvdvuut|ssFrrrDqqq7pppppq/qqqqqqqrqEq%ppppqrHs>t/tufuv vavvwvutsrrFqpoonnanoaop/pUppqaqqpp/oanngmmNm=mnoqqrgrs.s^s;r?ponnn3nmn?noors3t;tu*ufuhuuputtstst_ttttu?uvJvwwx2xxwww'vvCuudu tt,srrKqqqqEpppSpGpHpipuppq q3q?qvqqqqqqqqq/qrrs?t tuu4uuv8vsvvauutvss+rGq=p5o$nnooop.pbpq+qrr*qq p@oo.nWmmn)nopqr;r`rrrr+ponnnFnNnBnoVp*pqssttu uu;u0tttitztrttupuv%vwJwxKxgx www-vvuttKsssrpqqJqpppjpooo[oPotoop pfppq6qqqqqquqDqGqr+rst2ttuzvvvwrHrmrQqqq}qr^s+stuluuuuutssrQqqppppq2sJstVtttttu#u3unopqrsstttttdt-ttbtuv vw[wwwwuwvutssrqq'pppsttktttttuGuuvv*vTv^vtvAuuQuRudu!tt^tsssmrr)q ponHmwlkjjij jRjjcj?jGjkq7p;oo?o'nnnnonnnoo*op>qMr]sVttuvBvwvvvvw wwx$xy7y?xxx=wwvttsKrMqdpp)otGttu uu u7uuvevvww vvvuDtt'ssArr)qqqqq\poonHmllk9j0ii[iij'j%jGjkNl lmnopqstIuuuuuJttptGtsttuXuv:v_vlvuutJs?r+q2pJookogoSouoopqpq!qCqxrrstufuvvwXx"xxxxxxxuxxxyyyyyyxxSwvutsrqppAou5uuuuuvv\vw^wwwwwwvtss2rqppSpoopoojnnmdll2kk jini.ioiiijVjklkmnoq r_stuvwwwww;vvvwv^vlvvvvvvzv,utsrr5qq/pppqNqrWs sssstqu%uvwwbwxyzz-z;zyyyzyz zbzzz%yxxxzwvmutsrqppvpvww3wLw^wwx7xyy3xxxMwyv5tsrr$q5pyooo^odoo^nn:mllol kk>jliiwiijjojkll>m>noq'rsuvw)wxy@yyny)xx_xwwwwwlwlwZw0vvv.utt3ss[s9ss ssstuAuugu1uSuvgvwpwwwxyyyz zzz#zutsrqqwwxVxxxy yMyz@zzz yyxvu?tsr+qGpp oooooynnm6lukkk;jji\i iBiujjkEkln9oq7rsu0vJw%x xyz6zzAyyzy xxWxwwwwww%vvvuktt~tYtnt^tnttuguvvvNuuvRvw3wywwwxcyyyyyz"zwzz{{5{\{:{z|yjxxbxuxwQvvZutss r]xxyeyz$zEzhz{-{{{{zyxnvutus]rqqjppppppUonmllkkkjjwwqw>vwwKwwwwgvv`uuQtt2sst%t9tLtRtytu%usu`tttstuUuvv.vXvww]www~wxxyylz zgzzyxwpvIuuuku#ttttEss#ryyzt{{{|;|}P}}}`|{z)xvu^t9srdqqqJqPqqqqXpoonzn.nmmsm llm,mnAnopqstNuev@w)wxGxsxxxhxww,vvRuuuvvvw&vvuu}ttVssXs1s/s\sqs|stsssttsssttuqq;pppqCqr7rst0tmtptss2rqpppooooooooppoop ppqr>rst't_ssNrZqqppooooopwqWqrFryyyyyyyyyydx{wvkuNtZsrrqKpppOooo(n2m7llPllolmnpAqrtPuzvuvwUw=w viutts r5qq#pqq8qpppppnpppppqqrqqqq"puooopLpqrks&stCtess{rqponnOmmmvmammmnn9n/nVnorppqrsust5sso nnn9mlkkyklEmynp,qsrtBuwwxtxwviuPtrqpQoxnnno&op[ppqQqrrzsssstAt_tzt$srqpLo$nn0nrnoHop^ppq%poongmmallllzllmbmmnnWnnoyp8pqrset;tutttDt#t%tt"tStwt?t?tupuv"vuAt6sCrxqqvq3q ppp_p/pppp oozonnn`nmm9lokkllnEoq5rsuivwx~xxw%utQrqOonmmm"moppqUqrrs4sttuLuCuOttZs>qpo.nqmn n,noo~oooonmmmJllllllm,mnn5nhnooppq^r.sstuuQu5utuuNuruuv6v"v7vwgwwwtsrqqtpppppfp3pppp6pQpfp@oooPonnnmll;kl_m#noqCrt uvwxJxMwRv_tsrphnmll$l&l7lmnn$nooop[pqrst*tttttjsrqtp=ocnnnooeooooo5n{mm0llllnlvlslm;mnnFn}noJopXpqres@ttucuuuuuvTvwwywxxHxyzzytsrqq@ppcp=pMp9pBp[ppq;qsq_q-ppp:oo~nn$m?ll%lwm n@oDpqsmtv"wiwwvuts5qpnmblkkkllm&mnnnnFnopqrxrsEst5t0ssorqppDppp-pDpAp2ooon=mQllUl kkkkl"lmXmmn5noKopqqrsjtCu(uuuuvLvw]wxcxyyzM{{|0| {uqt_snrr&qqeqBqRqGq^q~qr?rrrrr{r4qqlponmllIlWlmn3oNpr&stuvKv8u]tsrqppnmmolllgllm=mmmlgkl1lmpneogpprsssttt{ts+rrOr)r&r qqqKpp(o)n mJlllVkkklDlm\mmn0no`ppqqrsntKu:uvvv;vw7wx{yyzrz{x|M|}o}@|uttsMrryrLr)r2r(rFrirsPst8t?t-ssrrqpUnmllll lmdngoq-rsutwtt~ss.rjqp~o~nn&mmmm{mmnn^nlkjj_j@jkmmnprDstuuuuu.ttt9ssszsBrrYqponn7mmmKm mm|mnHnjnnoKop}pq]qrstuuhuv-v2v|wwx>xyzh{${|U}1}~S~}v}uuttGssssRsrrs&sttmtt~t6t ss qptnmll%ll"lmJn?opqrs8s7rrHqq/proo!nnnnno&oCoro[ocnmk$imhxghhjklnqs9tvFvwvvvv-uu~u;tttass-rQq}pplp-poo5ooPo~ooooopjpqqqqrsotKu;uv vvwwwuxxy\z)z{||}~}}^w}vvv,uuuettessbrrs-sst t*ttssRr8pommXlllmemnopqrrdr+qq1pp;oo2nnooqop4pppponUliigf ddeJfhj&lortvwWwwww\wvvlv3uuwutssCrrwrGrqq:ppppprpBp4pkpqqq=qr8rstuguuvSvwGwxHyyz{.{|}6}}}}xVwwww}w[vv5u@tOsrrwr^rrssRs~sssZr^poDn2mmommnnoFp`q^rrr9qqqEpppDpoop#pqqbqqqqpomkzh~ecbaa\axc!dgPjrnq^sv5wDx3x-x#wwnw%vvvguuu_tt\sss_s rr qqLqpppSp>phppppq qrVs0ttu9uvvvw6wx_yyz^z{|U||| y&xxxxxxEwevtsrrVqrr*rrsSsssrq/oncnmmmnndo,pNqSqqrqqqqqqqqqqrPrrrr[rqomjfc`V]]`\^{`9cgkpsBvwtxxxx:wwwuw,vvvSvuttbsssrhqq+pppp@pppIpppppqmcm4mJmhn$oJp~q@qqrrsst0tttttttttFtrttu[uuuutsqwnejfd`bay`abethmq't&vwxxy'y yyyxyy0ymyVyxEwgvCuPtrq o]n'm%mlmnnopqst-tuvuuvv%vutssst tttottts>qoq,rAstuuuGtnss:rrrmr.r rwsttu9uugu ttsstt^tttu(uv0vwvvvruuuvu4tttttuauvuuu t*qokhvfadd7cdeegknretw wxybyyzzyyyzzpovnmmmnFnoYp.qBrIsPt{u9uuuQtttts4rq@ppqq*poo\n loidfhhAjlnoq"qqqqyq|qqqqqrrstuueu`usuRu$ttctsssstBtuvXwwJwPvvtsrpoFn mm^mmn88N83y-.2)47 809:;;);\;V;<;:;;5>z>>>>>^==E<<?8@ADAA@c><963e0 -+V*})**+,.r0?2D4457869;H<=>?1?@ @ANB)CDDEFBFFGHtIhJL/NP8RU|WY~Zg[f[\]]z]^d^_`7`aOab0bFa`_^^ ]\[jY-VT QOILID?O9Z3--("#'f)+,-./3/P/h/V/Z/c/F/y/01v22222322l11900001283'4D45U44220.H+j(Q%J#! e !"$&G(M*J+-+.//0123A33445156789:2::;S<-=>m?AD)FIVKvMTNyOPKPQRPS STZTUV VpVVVVUSS R|R!QSP!NKI0FDCA>?:4r.(#($3 !"k##E#B##=#s#i#$6% %&;&&&&'&&o%%:%$%%a%&'^(@()&(('&%" #KoRirX "#A$%& &'z'((7(n()|*U+h,w-Z.1..../0d13k58 :=A?tABD DEFrGmHWI"IJKKKL\L:KKIHGGlGFBE#C)A><9Z63|/-)$; h:gOc1sI,Uth}Rh m =0}O4r f|xL cxoW !""#d##i#F#C#$&-'),:.1*3\5}6789u:w;v?Y?@H@@g@?@>:=,+ $/T0~Nu[0g:+K W n Q 3 r 7 !"=kJz5CT4BA2n`Vfy|wY@=W~I3]|EUY7\ ku~>}1x2JGe/[!0G;_A:Frd-V `o>(Tlk_<!dt4.h sTHQVeve8xGcL9Y}lkn&QPVHfFjYU@F?+{m%8bznA ;~3&Nn$20>FD:8.#rJ(.oN 'OCWi!_%%s `1j_ (w0c?2y*_N }!~L&Gi!15IRO=5! h5,VDl BPR|Q?$Rqx;#|=sy zA4YL Y#*nw8}q'kE^[!`@AF\oz]A*"V07'e8(uV. BX+ JG+&s[!^0Qe(=NY8r_TYZbku|yk\NA<4>Nw3L<,"{I7-tr,2]w2tfo//? /Q;28@'cVHILU[^^[^^YTPTXfl8ZnS<G_ XT(\{\Q0h"mo@uIJC0eF[Y#t#iWM?4%"):BKVj )<( \ c \S%?pRjls`${/Zy1/N*0+pj!I w -T:!u/ 5bnS?*)3IYj|W)^1KE,}Wccm,\c9U^~bEOvYg V*=TqG(.8VpxoqvuN- (\7CM?8't+kPVUfw('5*]wfwl5x5 A Q{S63,5DWaou[3 &Fp/JMj3 fl&%)PB/r47;M`^6a=c%l^h2|rQ3-.>AQqrO8+@])A  K(-fI$gX!pZ tGZZAM8Q`(IyfZYOSeoM5-:@Sk6= )nL#$XMob# LH>- lKPCT8/O!3emWPUfp{qbWFCMg{b%UT Lp2|e/$ej+4 MNWv#mE6 3MF#b}V+!Jwvhbdaep|~lZT\bsT Yj*>Wt}2wo.$4 7e;m^ 'zEJ<7Q6uS:<Casf^ZOKNUUZew]3 <lQQ?58=svL "E0MY9:V.tX*rh.y $dhKFNlzeS>79J\qh?%4^iC t/IHx<<:  + /[`,!^S#>V FhS-S|}fVY^p{nb`bmz~lVE5@]~Z& +;3?klI #3$ =_O+1bY+:qs7(z)U"8YzjUQS`kv~|yywm^PAI]`G9:\YoMub- IR<CviB(+Pzf17v%"o>/+D\zqdVW^o{yjWKBGNdbM995V[W{1A__G# $1  %?B'*QebXF9<DZ{vP%%[RgmSQSdq|omyiOFKbxu^TQXR^z] &{x.4UgT3-0,%0=8J16R^WB33>VmymH29bW f~`OU\p~sut|uh[`tn_\XaiU4zK&2Xd]O><8"*8-   1G='*BTP@6:L_^\n||gC5N}o)Hlfeq~xz~vy}||zytyIFuH9I`lYBJUN7 !9/ %>KE/#2N_\H8AV^cmt{s[GAYo8M{vy~vstosI$$TzWIQfkcSGPT;!(;;  /KXG11Fdq]B>M`noikpyuZJY}X02R}{}zwvpwO-=myTRfssbONRQC#,GE) ( =Z^M:6Lgm`PIQev}ztnZQ`]>6Tz}zwE09fu\U_mmcZSVSB/#(>F+ 1&+F]^I35KfsfPHVrxx|~wcWZplI=FolE0DjhQXnsk\QV]YJ3'4DE1 ! '*%#,AQSH:9NfmcQJYr}~|yteY]p{aQ]xmNK\||idq~vga`c_L9-2DN=""' (1(%8R\K68KcnaMGTi{|tvy~zj]Xg}li^OSrxv|ociqjV=06DLE-%4/ 13-)0FUO@:BTdh`TP\nutssvvrj__ltvq_drnnw~~ypifkhWD:<FLH8$%- &(7>:5;FNNIEFQdohZW_irsnklsvpf^bpzy}}xox{k`bp|xkcagjdUA8?MPF8*#" (4;?DIORPLFHYgf[UV^jtvsmlmopllq}zrhjxzutwzyrjilnh[K><GOH7*$$& #3CLMNMQRLHMV[\ZXZbpz|thagt{}{y}|rq}~pfcgjotwuv~snpuvoaRHFIKF9,&'('  '2=DIJLLJIJOY`da]]cmy|tifjmrturt{vpsvzoiipvyzxyz{yvqmmpsqi_UKHIJG?81.,)$ %('%'/;EIIHKNMOW`ggc]Y^mz|rh_[akroiho|{ulkoz{y{yx{~}vh\[alsqgZSPMLKHB<<=91)! 4HOA+3IYbYI7*/@R\R<%".Hm~dK=;GKSaih[QIFFDBACDJQZcggfkmibecVG=@IYgswvsjc`cfeaYOFB>1)-521?E7$#7JOD6,,10*! :KB*.JafdS<05I_eY< -Ni}tZ=08CRZ^hjaRIGEEEFHKMQWZ\YRMOV[anrj[QMJOXgu~{o]MCGQ]aZM@;:3../&%8HH7!.BH>+%'(% 4LJ,CfxwaLA>LfsjI$9VicS>16G]ihg^XK6'#.6CR[_YRG=6.*$(/@Oay}wl[MEGFMZj|kR<03:BC>=80)&&"#.8>8-! 7IE1! 2JN<!BsqO<EZt~T >^g`E( 1Ur}{h\M=,(6EYbbRC1! );MaxnXI=+'.Gd|oL.!"/68842.*('(%%*198()<A7' 3RM2#JyeD;Lp}Q =Y^P4 !+KwnR:*($+4CT^aYTF2%1?LU\alsusuwxsqcI0 $9Un~wiP;,"2FOH5)#'4DC,!3>?-KP4AxX3%@nO !OuzU%%U|D"".BYjwrhQ;% $4CO\cif`XUTMJLYj|~_B*CggD"%BUTA4)"$&-:=2 5F@'FI' 6u{D"&?jyL&$@gzf:EuyR$7Retm_C(2HXcdgbZPHC;89<865?Ne~wX84Yx}a37KWL:! 3NP< %;A, >A!e{A?mm@#$Hzm,Lf5=kh7(OkodUA1&''.7>?;644CVsW(BsX" 6TVL.Gb\7=D/ 8Ut: 1jrZ@3>ZoqP'Zz{[8'.QtxI(Jiu}rhVC70338@IQTXUPG=606CYjE*Xsd9 )Wg_5$JTH#(7#>wo:1foE,2Mno:/ml5av7.npD -G`p}~}tk_SJ@=AGACNlhFI6ng(NiP' op8 3mjD+6Zz}d2 <[T.PRKyyW2,BUfytbN?95$*Dmg*tQ 7dpIB[L Yn?1jk:!0]b&UpQ S}SN"-1468ANas}xjZONK=+#9k 9pWli*vc8\O!J_5XmY0!Kv~^(*O\<dj)-z]#.DYelhdWH8*##)4=HS_lyrY=!Y 6k]^>f\6-[T %Q,LfI@ftY'7\X%"{|2v/LSr^H5%$@^sOd=f0ESdwG0^R 8%DfV(EejZ;"#CXC OW(lm!%ad@*:ht((tmSkL0 [wI#VF%,c\1EooQ:1?Q`EA2D "ei^)oC!4>EX_ZA" "LpgHO~< }Dax@#P= LW:0XhL()?YV2!0cw{sBLQ2nXDL]~/>XbbH'4uc,/oyal2i/W-Ni;@ AQ1(FO@ 5Y_3/Ab}3{q&`3 P;s Rb,U;/~< }0TB;TCPk= yrPB1KTB''YmGH78FUi')y3T; !>-f-PBdF`@.xo/CL >@_4}r 6:&.MR?"(Jmb"#w.Tay0eOA(/WYQdht C U  ,M nou1K 'oe 5vwodbDa6 xJ  5@* 0SQ!U+3r9M,{! ;  'C<6_yKJ8s 6v]14t'+F0wnwz z{-Wcp242F) J&K[pO9 w o :maI R zq? w9  z t e c >  1 H . U  <3#ohaN1&YkCcw-aGTt3M 1 tKkNs/, !"#,#######w"! Z wMFiI2P@m 5 ,gh&!U@1|L>x61}.-="$06 h F r p Q u H  D-"$4%y&'=( ()Q)*+V,;-+. ./-/G/////X.-,*)(o'%$"N 'hx/IRSc:xX<4  K? N :C l KjLvP!|$'*-r/1?23n4~5c68678T99:T:::f:R:+: 99n876Q5C4W3|21m0.-^,h+*)('&&&{&&'( ())-((''m&O%)#"] #+ i $tESWNL}  ZyyX2B>l ( @ Y>Mv5;e6!k#&),0368;L=>@AjBCD1DEeEFF:EEDDoCCeBB1A\@??+>_==|=CCC`BA@??I>>>?H?@~AUAA@@)>=2;N976S4F2/j,*'R$ - ; h Xs!g( ?Le[%! $&),/01262s235H7:=@PBEHJKMNAQ$SWUTVWXY%Y?YoY|YYYY0XWW4VvUTSRQXPsOOOOOOJNMMMMbM LqKKbK?KK+KKKLLMPMMjLKJI3GAEfCwA?=;8E41._*'a#{ %Fg~-h 5 o[,*I'{$U!n@kBe $'*-14$7:;@CYF%I(KNjQSVY\^e_`avaaabb b bbaa?``_a^]\[ZZcZZQZZZZYXXXhXWVVkVEVVWvWXJXYYYYYXkW USsQmOHMIK3I7FC@O<85r2.Y+'%$ "! e \$oQ  r9630-+m)((!';&&?&=&.&&o'),03W6B99X[C]`c.eufggggggghhhhggxfffeidccKbbqbc)cdRdd8cbb a``F_I^^_`a|bQbcWcdd!ccbC`_W]e[wYeWcUfSQwO$KHRDm@=:742;0O/).,+7)'$!p]'EC_@[=:764432242A22I2C359H<'?&BEHHKNPQRVSSTvUVY;[^Z`c6egjkmnJnnnxnAn&n&n1n>n;n%nmmmLllekjj#iiiXijllmzm?lkkZjj!i]hOgghj k]lmBmmmmlkjih[fdc*at_^~\[X*TPM8JGDMA9>>n>v>,>e>@-B\E_GJxMgPSVXZg[\;]]^<_` acfhIj9lmlnpq0qrqqqqrq}qqqq~qcq+ppp'onnmll.kl2lnJopq~qwq;pp'oo!nmmnmnoq+r{sKsssrqponmyl5jih\gFf\e+ca_[X#U RVOM0JH:51e- (fAdb`?][ZLXWVV}UUUUVQWXZs\^`Xbdf?giDjdk kl'l_lmmo'phqxrrPrgrs.stFttt[tst$tstuuttctsXrqpnoRn;mmmmnoq;r6rs's5rrrlr+rrr}sHtuw6x[yyyz yaxyw#utts`rrqippIoo6nljhfrdca_][ZYBWTRNLHE.@<}874$n[ml9jhgQedcbbQaabaGaabc0d>eg hj*kulmnoopjppppqrst%t,t ssttgtuu"utttu5ubunurr6qlp}onnmn n%nompqs+t\tu?tu tSs$qLonlkjihgg>f-dtFu}v1vvMv ugtssr\rr*r?rrs"tufv|w]x@xyAybyy{y9xx(wwvuu tzssKrqpp;oooonndnno>ooooyoso{oooko$nnnoopqr6rs/stuvCvvhutfss[s7srr.qoq,qor*rs rrcr(qqqpZokndmm_mmmnRo(p$q=rdrsrrqqon lkwjj1ii5hhhhs'tpu2uuDu ttsNr^qqvqqrrHrt uYvkw5xxoxxyxxx(wwrw)vuttKsrqpp$oyo!nnn$mm&mm+memmmfmXmtmn)nknwnSn/n8nJnopqbqrArsXtEu[v=w vvvuu ttAsrqpppqrYrrr;r"qqqXponmlllllm"mn~opp#oofnnfmgljjiiwiiaij(jkrstbttQtss)rqqpq2qIqrrstuvw:wjwwwwWvvavuuutkss rnqppo`nnnvnJmllOkkkkkkkllmn?nnnnnoXppquqqrSrstuv~vvvuuuHtjsUrAq=pq2qr}rrr\rNr/rqqp nmllDkkk@k8k@klmm@lll kkhjiihhhhiijkirwstt7ss{rrqq ppbppqr/s8tUuivjvwfw]w`wvv9uttt>ss&rrqqCpp,onnenmn2n%mlykk%jjjjjjklmmn,n>nQnhnnopbpqkkjj8iiijk3kkbkjjjjAii.hhhhi*ikksst6tNssjrrCqppIp-ppqTrs)t7u+v vvvvv+utss@rqqptu umuuu$tts>raqqiiii:hiDik%lnp&qs1tvnwYwww!vwv uuuu7ttttttqssruqqqlq%pooozoooocnnznopqrhrspstttt\tssrzqopp:p6pqTqqqqr@sFssrrqApIo#mm lruv(vuvvvvvw wwwxvduasrgqooHnqmmllmFmwmmmml'k7jiij)j@iiiiij$jjjjwj]jkXln;oqOr}suLvxxx}x wEvvVuuttt@t6tFtCtssrrrqponwwkjjjjCj9i]hhifijek kklDlmnboqrstNu0v4wxxxwwvouuutt6ttt-t8t#ssOrrrxrrr@q]ppSp]ptp>onnnRopqrsit tuuvuuuQutttu#uvvwvv3vvwQw#veuunutXsargqwxxy;yyyzz{L{n{ yxPvtrqq/pq}qqwwwlw^w"vv"uuFtsrqppooAnn,mmmmxlk[ji:hhhijln}pSqs ttOtrsrqponn mVllllm|n?nnnunqnwnnnVnSn!mmDmJmQllzlstas8qoljhfddcdsemghj klmnsnnxnIn1n-no=opappppppppoaoodopvppqqq3ppo*nnoo]oeoopqrsVssstXttttuujuvvuuuvvvw3wxyeyz zz~zzzXytssrfrqqq~qGpppapJpzppp$ooOo1nnfmGkjIhhDghhPidjl>noqsqrbqHomykjhKfeweef)gni j]klmnnnpmtll)kldm)nDoopqrstu>utHsst"tRtDtsss_rqpp=p$p-p_p5pCpq^rIs+st'ttu]uvvv:vovwwiwpwa_`aBdglq#tw~xyzx6x~xy"y'xxxxy;yyyfxwvuZsrmpoIn.m?mmn o!opHqrsGttuvv7uuDttttrsscs;sRstutt sqqolipilrmoqprqqqppDoopDp_ppqrsthtVt>ssTrr2qppppqIrst#u;vvvwvfutqo lHjaihhhiujl-mnnmejhfenedeegim6pzs uNvmPl{kjj.iijRknlnSopqqr@qpnIk>ghc`^^_]p]^ _bdqfghgedd'd*dUeefhkmoqrTrrs4srr4rrirs8stt?ssErIqDp nmlkkklrmnoyppqrspt&tsrqq/ppKonn=mmnXnnn1lj*fc^;YZw^`bc>defIfnfg!g|ghQhiajjkdkjj]iQh-feeccEbbcBdfdh]jTklflFlkjngPc^Z:VT\SRtRSUWZ^2`bjccd de2efgghikalmnnZnNn|nVmmGm+mmno^opooo/nmlkjjdjkmn[oKppqrsswsr)ponnImllk/jjjjj"hf7cy_AZUlP9OSUWY(Z[\{\]N]^&^r^_V_`aOaa``^]\K[)ZBY7XWWXzZ1\^3`UabYab `_D[WRMJ\GFEF-FrHvKNR4U`X Z \]|^`aGbbbccud deeNeeeeedddeeffggh&hhhh]ggMfg ghjZkmmno~p8p_puonglkjihhfedddcb"`L\YhTOJKDEyIKMOPQRBRsS SSSTTU@UVVVVUMTRQ`P1OENGMLLMNPS*U]VW_VVUlSOKFA=;::9!99;>OBEIL1NPRTVWXYYYYZZ[[k[[[[[s["[[[\]A]^_`abbbbccdf&gi+jkllmmhmkj`hgeedba`#^^ ] [YWSNIDf>8:A>N@BmC@DEFFFtFFFFGkH#HIIIIHSG'EDCQB_At@??@+ACEGI"IIIH#FWB>:5>1.-,-[-/1588;>@BDAEGdIJWK>KKKLbMMNOOBOOOUO#O'OOPuPQRTUWXY(YZ[\^"_aFbdredf0f]ff\ed2bp`^]\\ZYWkUTSFQNKG1B=F8/2- /*3 5D67|899::Z::::;W< <===<;:9^76544333z568:<<<<;g962-v(%"! !@!#S%y(, /L2A468+9;K<>#>??5?S?@dAABcBCWCCCCCDDDEFHJLNOPHQSTV2WY[]N^^^^^$]0[UYMWIUTSRQONLdJIGC@V;61K,;&!J$')+E+,-. .>../)/u//01t2110/.-<+*])J(]''G'q')h+,./000/.*'#"Xt!% '*:,U-/f0223f3e3[3]34"45\6 67R7777778E8i9Q:<>@RACDgEGIOKM!OQnRSxSSSRQOMKIIHhGFADjBA5?=;8W40'+&!5 Bl !t"""##$$?$%:%&V&%$#"i!,/P "!#$$%%+$"Z BcpB4O o"q#%:&0'H'(=(!'''(r) )*+,>,y,y,0,,+,>,u-m.02n4'57R8:o<=>W@hBE5G==[<;D9x76>4g2/,)K$ .x }|;/i"5Mi:AmMattI H 3 m C KPdg~=( !a!"!!r!,!!!!}!"#%g&(*>+-&.0247-9;=>6>>c>$= ;975a332j10{.-f+)'Y%P"{9 A * fL +m@  . q  . Xd^W 0 >1[j <;d((a|/5 j~!V#%,'){+.$0`2G3 33Y310.,*).(j'&%$x"  ,t 8 XGZmF!/m     2R="7@ / N Y > 8_ d { ~  $ _ f.|E^S\ #(%P''((d(-'.&*$"!Pew  qCte_^;Ar]TE4f_F}\f4]MM]* T("w'/)SN% [ eQCQqG+ !#,!/A^uz\Z _:cyxdP02}`&"O> 7FeJEze| }  :gxJ^`]}hl !ftjke RM8z~~G- 1Ejn07ca1mg {o)UGLA.iu? mS)!Db !->CB3+a1 ']~={hpN8&a^T1hs~F=ZOKx .|!A[S5VVeKIDPaxlP9%O+6(jSL*q"Ym*: SR/&eL$n<LY !AOW6pSFPV`gmu|wfTE:81;Jr #=1&)5Z_ q]&~#>$Ck{: ns$#=-IN;@G/|WNBFLU[[XTWZVPLOVei2N]A+M}/"*DLYxa\ >s#oyI~G?G2"pKZI 2}-wbTM@2"#2;EObz 4Zq+9&o!N '^4tt~i46Z.5T07&dto%M6N8 l2$7d}iO<*).@ObqT*i9YS@5AuFK&mzMbi d= LsW u.`4HO zO-1?a{torsyqI('a :K[O-rZh]aer&1}- %[t\H<+9 PX=<8=?HQcy]6 >g3L_|9!ak vE?~=>=;Oad5Q:x6u"ce+xxX@9278JioN4$ 7S4S %=m[C1te/ s$c,PXG=_(=QVDsaXLO_whF-)2Jb9I4x.|LD/}p 3%TRI4 gAONY:,{C:ggPKN[cn}j]RA>E\q_&] _ 3Y!p\/)kr6(B QS _|(kB; DOC[xW5*+LtjaZZUXcqz}{hWPY_oO!Zz70Fnw ,qo3(<";j?r` sAMI 0K,utV><?Z}n_TNFDFLLR^p}Y0?n_%V3 /@uyT&I8S^> >T$mW +yk%tPhH@Ilx_I3-,<Ndy~d;!3atM(u% 1RH )C@( 3^b1 &aO;{[ KqS,AofX\apvh\ZZdo{ygTF3;Wd27{*)@ptP*9* @bU5&7iV*6iw90&&Z2^sZPO[cmv~|zyvm^QCJ[aNE!DdMj Dn`- !  *Q\J(J{fB*(Hwk7$<{*r9#!A\{|gXX\iwueRF=BG]~fQBF@^aKs)8X[I' -9! 0KP30Tb\VH75A]~V((bT _aGIM_qtoxx`F<@Wkq`[X][ja"nh" $F]P5494, "=G# >R8:PZVF41=YuuK3@nV ^~cQVbysqs|tgX\o~h^`[blb 9vyA'IWTJ=?='!5D7   2I?*$.BPOC8:LadfziJBYp/Dvmqxsx|{~wuwzrtY QlB5DXaO<EQM8 %@9 +CNE0$/GYZF6@Xckyu`RMcq=Gz~|uprqwU20[qMAH[^WJCOU?&"/EG'  !)8QYF/,>[jW=<Ncsxsqr{zdT\wZ2-Bu~~yyz{xwyv~Y8GtrKH\fcRBEOSI,6SR7% ".((D]_N93Hbg[NJThz~v}q`T]ybC1Fn{yN8CpvZR[jgZPKOOB2%)AK1 1) 0I_`J45JbncQKXswtvzwdVWjvO;Co~pK6JrpUZntl[NQXSD/%/>@. !'*%#+>MNC77I_haRLZp|}yt{}sdX[g||]LZvtUQblenyqaZX[VC1)1CK=$$* '/$.FPC22C\iaPJUi{{stwzvk^RZwugez}gX[x{w{ubV[b\I2(3FPH3",:6"  ..&!':IF;5;L_gbXS]msrrqqppk[Vbxxx~~vdgssrz}ui_[_]L:/4CNJ8'(0"   (5:724=GKF@@Lbpk^Z^goqmfeounbZ]gz{prt{|~xpw~pfhu{mb]`b]O;18FNH8&!!"+3;??@GLJE>CUfiaYX^irtohhklkhffoy~~}vphlz~yxz|yqhccc^RD76?IH<.$%("   %5DHEGIKJEDIS]`_[\coxype_dovwoikwvmm{~yw{}rf_^djry}}}~qjjkiaUG?=AC@:3,*,-%  #""+7=@HLLJHIINYbea]]akvyrgdgkomjfkxuoqu~|}zsjefmu{}{||}{yupnqrk`VMC@AC?875/)(&  '*''+09FNNJMQOPXafec^Y\ivyqg_\`hnkhku}ulihoy|{xwy|~|~ujabhqytfTMKGDDB939>7+$ 4IPC2&%5K]f^P?12CV\M6  +EkgN><HQZcc\PE?=?::@ILOV]bcb`bfikrqdTKNT`ipxzxqmh`\]bgg`UMGA;/&%*,/89/!4LNA;778:4%6GA+*@V``Q>5;Pioa?.JcwqZ>16@P]djcVG??>@=>DMQTY\\WNIIS_m}xg\WQSV_jszxtfTG@GVccXLA<:4.)%*59. ->DA82031" -DC*!DcstbPFETlwmK# 6Qa]RC9>L^hingZC('1=IR\\WKA7-& ';QiyfSE@:AOcv{yfO<49<@B@=6-& !#&-.# 3CG=."#'#)@D6!#FtxZIQhP 5T[U@++@ay|mhZ@# !/=OY_WL9& 3Jc~~bL:!#@^vmL1&#,4970+'#"(+ &01' '6CB4" *GE-(P|iJBSwU! ;X[J,+Q~kO;32% #4JXZOI=."&2>KWcr}{t_?#0OlznT;("0BI?-'$'9<.5GL:# @F/H~Y5%>lZ((V|Y$Qt=)-6I]mlaG0  (4@IQV[\\[_b]Z[fvuS6 ?hhB $@QK6-%-64'#>SM6>A! 8y~E%*AjV.'@evb5 :m|S&;[msaP7 9TdlfdZM@998<ELLKLTasoN.7`~_0/BRI3 +LT=2GN769 c}DDpwM.*Gs^<m? Dr])&SvtbM3"%4CNUURONVbvNJ{T0RUG#DaY3 +HL4,O}q; 1j~o\G>IcsoK#QmoT8,4TuS#Fbn}|xfP=21.29FS\ccc^ULEFKZex{A0^vc4&MWL$"CMK20:#5pk:0d}i?*6X|x>8qc+"co< $flL.-F]n|qeYOIDB9;Edg OC*[rREk`3'im: :qmF-<er9 =[O#TS9apI#&;L_xr`N=/%>fi,uJ'UfH Djg5 TlA =utD)9jv4LgFN%hA $')&$&$1IhrcSC1# 1h4hPngnl%Gwn4 !CZ5 'cw`6$O}p;-O[< Vt0.{J+PmtvfXF4&*8GXfrz~hQ6\1mXU:jc7Izr0J'QmO<bs_5!Cd],ou4r34zFp}cL4# "5H_z~fCiAg4GNodrA N|h-DhZ,Gdh\D47T_C BGn|5wWW5 !"-?[wv,-nnUp>rgQjI <fN*c_4MwsTBCXjqI 4P2pd} jm]A&2QtcJ5',2H^nNQ~3& qs1RuR /U<MY=9aoO,4UyvK"1g )9%}r{zyv|%QjH'Zn-/nuXq/U 9Pa#D {DV63RYE ?oW8K\{w)*R*+:+n+U+^+,-./G/y///h.z-Y+v)x'^%r#"{!t dua*QRKJ  X4\) %3@qh  {rvxCK | |XNR!$1'+/]2k456I7D78888899:8:{:\:Y99{8d7'5S3Y1n/.-{,,+++n+?+5+ *))(&''&&&&@&'(\)<))) (U'=&9%$'"!*zH n2rxFr < s G%F G :P;e i "e%(,/*26:~=?ABDbEPF?FmFHEEEEEERDDpCBA@&>Yx\ @ S8DzJ^/^u\q  YK#' G ~%w` "%&&&&g&(*-)0j3x69i<@EHKNMOAPQRRRZQQPPP^OOCNMLK7IGECBBAAAAABBqBBBA@?? >t>u>u>?@ABPBB A\?><;:9c752j/>+(@$q B : k  mF!EK/ d & 9:9! $$&*j-?/01`1U1J23n6 8;>AMCFJO RUaWY7Z[Y[[ZZYY5Y XXWWVUT'RPNM0L KKpKKKKKrKLCLLL=KK"JJJKK}KLMNCNMMQLJHGfEDB@=:B62B.[*u&W!|de' ,*M'S$  /F 1>$+#'**m-047::;;;<>tAID2GOILOR4V=ZF]_abccd5cc bFaaQa```d`%_^]\EZYEX+WWW:W1WmWWW VVVWVViUUUVcWWXXYOZJZ[.ZYXW-ULStQP N4LTIKEAA<841,(%W#"#""":!O ]xJo I 9k794@0-+))r''%%$p$L$,$5#$%i({+/_259GYIKNQThVYj\_`ccf1ghi#igi1i$hhCggfffffffUee`d{cbaaHaaLab$bbCa``d`/__F^t^]^_`abcCcde eJdcba0_k][Z'XdVT%QLHDI@w<9!52G0i/e///o.-k,K*@'$!MusKFMD$A =:7643211X000j0?/0(147;>@AzDHK-MLOOPQ QLRSSVYI\P_a|cfYiXkmnookoRnnnznmmllllll{lkWjiiNhhigjck|lXm llkjYihh(gffwghjklmnnnnMmvlkjsigsedvca_\XTPwLI*EB?<;;;;;9b853h/+'*"R>PTM]J(GDBA-@>==c=J<<H@CsFILORtUVXYZMZZ[\^aLcfvhjpl!n7oq@qrmnp!qKr4rqpoon/mPl1kkm nxp;qrstt:ssrqCpoonmlOkWjNirgebR^ZWhT=Q)N|KtI^GGdGxGeFDCJ@>:61- '"^\zYVSQ=OtMLaK JIIIIHHI|JwLNQATVY{[]_awbcccdUefhjln6oWp@qrsst?t sss@s+s(s>sNsJs4s s rreqpro_nenmnoqls/tyuvudut4srqqpopLqsQuvwxxyxowvnutt@srr qZppnm@jgda^\bZ%WUSSRRQPNPKI{FB<729,feca2^\oZXWVpUUTTwT{TrTU_VXCZ\^`bdQeghiiiij@ktlnwop+ppqras s`sssssrrrss:sXs]sBsMsrqponnmnno?pqrsssrrrrqq.pqqsVtv{wxyyzyxwvvGuuBtss6rr q"on&lHj7hAfndcaj_^J]\[ZYWT{RVOEKFB<7onmRkihfdcbaa3``````azbdZegGh|ijlmnroonnnopqr|rqrSrLrs$sstssshs$rrrrrrrs%scss$rqppBooopppq*qppppq$qqrsu\vx[yzFz{{DzzLyzxx4wwvgutts^rqponn mPl~kkj+hg}ffe1cb _]G[5XtUJPLtGhBss|rrAponmglckejiiiiiimi#ijkklmin'nopWq1qqqqppqrs2s\rrrdrmrrrrrrr9rqqqppppqr!rrrqqKp|ookonnnnnnno6opBqqrsudvwxyizz>zsz6yyGxxBwvutsrr"qppvp$p:pypppppHonljig1eb`^[X}TPLvwwwwvuttsrrqqqqqeppqqrsgst&t{ttu>u7tt[ss;s4stGttssPrr3rqqqq&ppppp8oo[obopppq0qppoo-nnnJn;n*nPnno4oopp@pqijk5kl\moWqjsKtvHwwuwewwwvutqs,rrstEtJss-rrr5qppon&ljihhDgRfeefffffMeeeWd]c aaba0a_a a@acne u{vEv3utts0r.q;p4ooppqvr"sttu`uuuuu%tvsfruqwpomlkk#k jjtihhghIhgfe'd`dGd0d0cccde f!fg/ghVhhiimj jk|lVm>nprtGuvwNwpww vvv4u>srr%r,rs rr`qqiq-poo^nml9jihgffehe_e\efgff[fffglhjm4or suvw|wiw!vrvuutssst ttttMsrqqqjponm$lEl lJl?kjjcjkmko*pqBqr'rrrCponjlk\jIiieijklmOnnooooVoVnmlAjii6v?v.vovvvvxvivwww]ut"rSpo3n*m{lekk{klmm lblkrrrrrr_r^rssstssr+qqHqqop_nGkjNiii4hbffgiQkn4oq r?st/ttJswrrerJrrsyt uv>w>x#xWxwwwxxx wwwvEuatw>wExxyz'zo{{}T}|zxFusrqppo0oPp&qs1t!tttwsAqom|kjno opqAqqr*r$r.qqipnomllmm)lkLihggggKfse4eegjQlnoq2rrssr|qqqr|sstuv\vwVwFvvSuuuuuuvuuu tx xjy|z{|F|}~~c~{xvsr=ppeopdqsu+vJwEwqwvvAu)ss$rs*s/srrrs&s1rrrYrErqqpXoppDpNonmmmnnmpllmn}oFooooEondmlkihhiWiihgqfmf:fYeeZdsdxeg0ilen"opdq1qqqqqpqqrrs]stmttttcssssstt)tgtytBssxy'z={q|n|}-}~~u{xv-trqppgpqs{tuTuuvuuuttu(vvvvvvvv^utss#rpon;mtm$m0mlkMj`jLjk@k8jiijykLl l`l/lkk:jihgfffhg-hhphg>fsfjffhee3e&egKikmbn'olnprrrrrr;qgp8o"nn.nnnoonnoo4oio~oop8pq q&q pq q1qqrgrssGrr/qp*oo?o6nvvv^vLv uttsCrqponmm'lwkhjjDj9jihxg9feefgNhj.l)n oqrpsrqqp nxlej8hgff"eeefgi,k?lklZkYkjjjmiii%injWk^kkkkkihh$gh5hj(k8ln0oqqqqqrqpp8ooopq$qpppq q?q3qqqXqrr qqqqr3rs9sttst2srzqq ppouu8ttatsrr$qWponmmlJkjihhhh[gfpe)dddPefhzj}lnprsnsrpnakiJf{d*aa `oa5aceFgjklXm(llllgkkfkjk klgll\lnlkzjxi_hhHhicjk_ltmopApppqNqrqq&ppqBrrrr@r!rGrrrrrrsAsssus7s!s4st"tuXuv/vuvt}ssrriqu+thsslsmlkXjj2iihifeGdd d;enfhJj7ltnprs#s=qKnkifca0^]]w^`bdfikmhm^m0l/k?jaiizijklmnop_qVqq{pppqqqqrhrsrrhrrRrsrrcrr-rstu/u7usuvww)vvwwWwwwww*wwwxxyhzzzzz>yyy:xwu,tRssZsZsWsHsrrhqqxqppoon mBllkjhgeeWe ef:ghjlnkp=ppolj;h;fQca__I_{aPc+eSfhjln.mmkj0irw"y{|}.}/}}}}}}}}}}i|{z9y)wv;ts6rqr#rst>tuuvqwwwwwwwwx0xxyygz{|]}~n~dW:~F}+yy|yyyzfz"ypwusrAqq5qa`^_R_bfk~pBt(wzyD{{|{|} }>}V}p}~~s~w~}|zxuvtrpoan2noq(rrstv8wfxfxxxxwwuwwx&xx#xyz{|}.}}`}{zv(w wrx*xyxwusqpjpooop0pq#qhq`qfqpp o$nnoprsstuvrvw:wvvvwywwwwxyz{{{g{lzzwtokyh3e.cb/bbehmqqtwxzZz{z{{| || |3|}}S}|{oyx vjtrpQnmlmnpuqcr,st^uwCxzxyxlwwvvvvvvwxyGza{0{U{zzbxwBtUuv vwPwwvsqonnn0nMnoHp5qqqrrr'qq8pprsQtuvwUxxyAyxxx:wvwuvwy yyyxwusprr@rstOtts#qMo6mlmlmmtn\opq_qnq~qJq@ppOoopqst tuvwxxxGwrvTutsr#piowooprssttuYtqnkitgQf]e~eegimpsvw>x0xbxxxx5wwx3xyByyy"x3vuQsrp1n%lklmop|pqstruvw wvhiuiiiikl5mJn&nTnnmmlXjthgghhijLjjk6jjqibh&feef5hfjm@nopqirRrrr=qConmlllkk]jj0ij$jjtjgeLaD]}XSRVXZ\_^^___```aa9abbbGaM_=]H[XW TSRxRR~SUSUWZ]_}`T__*]\Z V2QLHyEEZDEF`HK)O+S^WUZ] _aAcd-e|eeeddde,e\eVeOddmcBao_^^^_p``apabcDcObaa`N`bdg.iklmnWonnmlCji(h>gg,fedd ccba`]ZVQLGHsLYNPR_T TU*U"UVDVVVWWXXXVTRP^N#LIH<;]:E:19:]:<>ALD4EFFNFDCm@<8 3?/,,,+,- .1+48<@^CTF5HeJLDN@O7OONfMMmMMN-NoN/MLKLII HHISIdIJLPNKOPPPQSR(TV@Y>\s_\bcQdFd!ddcb`^\[Z$YYoXWUTRQpPMKG'B=9u4/w15J79[:9;<6>?[??$=;9p64~28/.,,,--w/ 1368W9[88763/+I&#] ^ - "g$(+/369f@B CCwBB AW@@AAuAAA@?>o==e=:=f=3=>@BDUEGEFRGHK{NXQUX[7\D]\\[rYW~U&S4QPPPpOrML;JHG EIB?;861-T(#&)+-e. /B/0p0112*2223t34'3A1/-0*( %#0! t!!}"$'o*+,,,++'(%& ,}!w%R) ,B/F1s3567Q7665F44455565e4\3,2V1111X124y6>789:{<=@DHLNQRARR%QPoNyKI^GFEEEnD|BAL?=;963/+9&"N!8!##$%7%&C' '''(N(s(w'K%#+ %8CFvu2\I !!~ P)Q@ J#!KQ"X%5'?)E*z+,,0+b*v)((()*l*+0*|)o('&}&%%&&(Q)+q,-.0{2~59=ADG}H2HGG?ECQ@=<::p::9764201.3+m(#t.(}FOK  L u M Mdc4 U ;I Vw !"""! t K ! q|==B;; i!"#%S't*.269p<<=<;:'75Y20//~//.-R+*'%#  T w!HD~(-$ y jEdd  D30( ^  )n Kc _P#c.N.Og1P p[eQ2~#h'1+.012u10/,*`'&$$$$$-"!D?<g Y u ,+: {  [ > ^(-`a V Q e inQ5wF{ `I8cI 4 ! ' d u \ X d } z ;    #e&' ''&$# yAQ 3~]$'frhe>Mn&otAsf_3WO%QE(mA.: 9W&@%zB ( r ( Y(3Q(ta U VZj3)Z{[C6K E@ yey'@b|d U=`tJ'0{tkUGL QD t N D 6 }+g;V\VHz >+BO[*GFYBFFSbtiT@*%V!0$k lg0 3Zs5FTN0,cJ4>SK $:HT4 qXKRTY]`bflpvtqeTE<9-2@k  4%-H.U@OS&#F.Ltt9ynu!} A- 2?S@EE'^RDBBGKJD@CKNOPSW_[q&IZ;"DKD.Z>w9gdf'Cz+otEJ@Y>4CWE7 #pXF>4*(2@Pe{,Z"t1G6INzS;~{q98Ww%2P-?)fp3X#+I; c-&<gkYE7%!':FXlZ.l6RQI"w!+e<H 3vGfs [4EkYy<jEI M wQ23<YqriachsyiG++b <Kjo $|hGrd\gy2:!{)yUrU|VK* *NZ<707=IM[yuY/5_*Hf:W-fheGDHHK>Qah8L9F/k[*u {X=63:5@_qK1" =V|9 $c%@ 2dYK:}m;.v,j3#Y _ECo7AP[>re^KFQht}}lI*'0Ji9J?znlFH .s$:. YUM;l>V#\ ^9,|D6coUIGRU]m{~|ub\XE<@Wk]"_s)NeS2(js9(D NM^+n?AORDMxU2)*Jprd[WNLS_dfpo_PP]cnN Z;C2Gej ,qp6$9!6b:ub #pDSW,I"mqS<:<UszfTG@538BCK\r~X0=mj6c-/<quQ$F9N[? CSeZ4g!uOfH?DbnT?)#"2D]vjB&6awO#!7v"ND 'BB#/[b1 )eP 1u]QT.>ljUSZn{j[PNLVct~rcSF4<Vj6Iv(CprP ,=/>aT5)<kY'2l}A8,+T+W~kTPQ]fnsv|{yvpdUI<DUzeSI&)V oN` Ite1 !(% /WbO1)QlC)(L|wA+H({p:$:Y}yjZW\jrz~scO@6=D[|~fUFHDf l Hk";^`K(0>( 9SX>):Zhc[K::Gf_00iP\kHCI`oqnw}w`E:=Ulq]WV_]kibb!HbU7361);I' ?R< %?T]ZJ86C`T:JxY \]NXbvvvruyxiZ[kzdXXValu-<sv;BUVL=?=&2E< ,D<)%0CQOD:>QfjmrVPcq,9ttprtruzppoqlso:6coC1;LWI;EQN: %B> ,EOE1%0FWWE9F_jqzeYRek=#=v~vqtos}c@@isN?DUWPGCQV?%,CG* $#'3DY]H1.@ZgS=AXlzzuzxaS]wb6*Ax|wywxyy~_?LzoIDWbaPAGTXK+0MO6( &0.3LaaP=9LcdYRS[l|o`XbucA/Ej~yzuuySBMxz^V\gdYMHPUH6(*AL4 #  -($5L`aN:<NakeXQ[w|yzwj^XayrL9=f}qM=W`cuwlZLLRRI5)4CE4$! %+)',<JMD99G\ih\Tav~uvwri[W`uaLUryXSgsfoyo^WVVRD6.2DL<#$) )1&)@L@0.@]pkZT\o~|qlmsul_PVsyfcy~n^^z}xwyxn[OW`XF4.6EMD,&61 ++#"6FE:28Lbli^XbqvsolkmplYOYqvu}xyyz|ygjuzyzqfZU[[G3.9FMI9%)1!  "284.3=GJD>?Mcqnb^ckrsmdaltk[OQ\s}qpoux{|uouxquqe___[M5)5JQI;,%%% $/7<<=?EHGC?EXild^\`hopiadjkida_i|wyz{z~~|tmhmy}sf```\RE52APM<.%$&  #'((-9CFCBCFIGHPZbdc`\^gopia^epyyphhuuher}}~}yvz~ujdaemw|}~rgbba\RG@=AIJ@1)'&$ $%&.8>BGIJJIKMS\dhga]_gptnebfknlhcfttkkoy~xsrtw{~~yrjedju~|zusof[RJA==@B@:3/,($ &&',3>INMJMRRU[cjljd]^juwod[V[dlhcfs~skijrz{tqrsvz{wusrqu|}|rmpw}wfSJHB><<87:<92+#libvips-8.9.1/test/test-suite/images/trans-x.gif000066400000000000000000000021311361153320700216140ustar00rootroot00000000000000GIF89addf3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3!Made with GIMP! ,dd@H*\ȰÇ#JHŋ3jȱǏ ^I$’!S>,ʗY li͖ iִɳϟ@ JѣH*]ʔΑ"q6tΩzQ\sjju԰hӪ]˶۷pʝKݻ ['Q\,^fGݫ8|Gflk`rOϠCMӨS^ͺװc˞Mm%s^ZL0辣ǚN.gϡ_m}%<gͧ.v ߞOϿ@;libvips-8.9.1/test/test-suite/images/trans-x.png000066400000000000000000000006641361153320700216440ustar00rootroot00000000000000PNG  IHDRddpT pHYs{RkfIDATxn0EGeBB4 笺(Dn? yǵN;{z+3YV!ȴ ͣk,sQT%ܠ21:nKQ*E $U2FR;^vlvQU~W6]~ZHzG?_Ƒmtdƶ V1 zGu Y{n[֛=S51چ!-#VrqalݔT 2SR1!nU-GR*A͔TjCM r[Lɬ {j-Kכg.=[7x^)R1@0IENDB`libvips-8.9.1/test/test-suite/images/truncated.jpg000066400000000000000000000234201361153320700222300ustar00rootroot00000000000000JFIFExifII*V^(ifߓߓ02100100"0http://ns.adobe.com/xap/1.0/sample xmp stringDICC_PROFILE4mntrRGB XYZ acspAPPL- desc|cprtx(wtptbkptrTRCgTRCbTRCrXYZgXYZ bXYZ desc"Artifex Software A98 ICC Profile "Artifex Software A98 ICC Profile textCopyright Artifex Software 2018XYZ QXYZ curv3curv3curv3XYZ OXYZ 4,XYZ &1/C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222"" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?oM0kT10So vȞ9*)]3TJ\Y. MRUNqU笠U)MC7jM[q["U<5^(;Ckm-p<ޚi'u'!<k#IJ&up*M$C`{IX.lO:9rrFq< ڎT]؃{\`Rs-Ӏ9nneR"8VLw8V+XBۥY VѨ(.; [N=*ʴEդ_J%ܾdIA:Sb)=Tv# ,|5mD+ {Q}#C|FJ9,hZD/vCmbd3w 4ijCTy7QsD _7 d҅.bo<.(%VઞbY#1NE6PZw< Q.IlF!vďP[L%rjy,sPLQ_q[d'>h=OCBZjrͰhݏ̌) +]M%;ZDp 2̤Z"e(mO46y^,|z8xCH.# Ҿvs \b1Ԡ'aҩ3mM?a/h))*jhn$|i䎕cvEֹSfІT!"Ah" RCpc2g7<kԵ,ד}8vF$K${vi5PHdVfkk(1zҋ ;YyqҕȵI+zPv AgWy J-̔mXdfIM[W}4Z%PVP"#a̞`0@< nB |Қ ҹIbdi\i#)<9ڬ*Y$<c ENq⊛1܇Pp:BqYn5oQz^m[#?f+klQT 涋%0HvonG'z}3RWnF9wMTE6^UZvJ0a]M(n9ڳK/0c]J @BJpy_ʨJ]4~['ԚH&jKʺY;F{һ]JmG$d&CgڕOzZB$ Y@;)֘ =j=;E% MrI]\=lMPqi (Ŋq$e7dRG}+GA;T4jQF:M> U=jR!Îz/UG(ZZoI]VèF$EV9 K4F3b)uJ;I[|0zP"ccS&D]z5z-©Fj؟Rhyg1$0{ԹT dp) IwmqUe=H'\<ڬ4Ⴂ]VH< )kqIEq~ eY8/(qҴV H52ƅ7'>^L^dQ;m 1 T鍜dݎGJT 3ݩw!*w E i!9åK"$?3z) qUCƖp!ދ61Dq!ڍSYIC&FؚݤS $Fu;o6Ynm v݉WO 6㓐qԑ&s0Ctm1|40 w֩+dR5i& p(nV8 E@ tM %*89Q{1O;pGcQEm%쒋nT-$qڑ8ÇepZhyF4{lc͸YUܭ]-rcZ$FiUgnYd+sUq\51SysR퍕%q.0=*b';Z,G gɺ.q*9kg6sKmdbۯ 42yY Fb:ԓ pNj8UxT,wHqo#E6і̖ZV =j4ݻwF$h= m-+KF+R"0'Y0 2;R`$B_zسdA(u8s3ZPN >)M =RDE~~ޕu.^M%LUKMFIBT쑀y%ė6ě۰ *doy*~SC3FBcA99#.Ӂ!9 ==3[nxvw5<3g< WyI$1ĪenToˇe2KVdvU]`r+YH+$]Mimw*;{˩.L쁞ZMtn!؁ e²Fb9 ]}c/j>U- +!v ckxV/Z `8ú$C/aMy2Fԥ+K`&C`>cUqZG6tG&9^jj,v2+po}KBŀsp^j1)H0/*gRp}mܥd,7PGvl'O- (w4p6&plzrɧDvxjQPfy񜓌RȫUg <4]̯8$}(m{ũn)Ȝ危܅#bc86ddE~wzQԧw1{Dsзj b/= KsB.2Am4jTcNhzj-..dRF; 4%,9̾cNX+q[]IK9d[>c֬<gm.˺؍Lv1ޘ)s fNr)b\LuFE>kI^5R}1ړLEB޴F#tTKFu'ڹwr\Š SuV^*#R I0(c[%,J~N 9"*Lfp}*P%GAU 4T_ wO iJJJ=D.88KNT1[Φw,`O֣攓hMN(z =\B7+A=魀*|:1nS|dz"ji4 -䍁1mAgd옅 9Ls!Q]]`L-+:);CsjɕKQޭn'n b9);XvGbbS{=O#H6x=SIYm jq-p+/펂HLy#5{ 楴\G$cb^MqZ*[?6U.c "45EXZP.Œy%c8tO09SGfqZùYeu!Kl o"}FC s*· j(HOkcO:WfIGʮ2"Yy.- gbHfO{2#@rGCn<6^WG}~s-˜*(ԖF'5j05ږOAM17iHsQ֛1ONM(k'ES9ϵ$D'Ҝ1h4t)S9[-@Z( Zy.u&Jm#>ԈH>: ֹ+C^((/Z4{QE0^ ' sPs֢Z!2S:ӧb'vzқtQ# kR77akzߒc qVmϻz Տ1_z^vLu3b@u$(#aG4 NN{U9e4;McXi+SO]6cGޑ%ߐE>; "-yoPha\A|JH$w5L@V<}k$Pv\ܯG88U)ryQŌc9Y]ew0t+@VD0Mt*o=əeߴJ59 WIrweP;TNz`$֞[EjC*68Ri'&L&;m .IH*SRGr@Y2VaҬ7cBEJU ɶPWj棫"R6Wcq EcT1&}EMLa+T(P"u0擾(-?E w23DU"ZŲ T7Ճw2.Z̉}5K&ߔifDU^@wȂ<)~nRՆF (vE)Hgh@>ů.O\P8vz`ɯn qj#2u&$x;\sRԉc]®Ir\9،ǰPX"ipmIX泫VF78x N*xkU\=SU31ly5PՒlibvips-8.9.1/test/test-suite/test_arithmetic.py000066400000000000000000000477431361153320700220500ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : import math import pytest import pyvips from helpers import unsigned_formats, float_formats, noncomplex_formats, \ all_formats, run_fn, run_image2, run_const, run_cmp, \ assert_almost_equal_objects class TestArithmetic: def run_arith(self, fn, fmt=all_formats): [run_image2('%s image %s %s %s' % (fn.__name__, x, y, z), x.cast(y), x.cast(z), fn) for x in self.all_images for y in fmt for z in fmt] def run_arith_const(self, fn, fmt=all_formats): [run_const('%s scalar %s %s' % (fn.__name__, x, y), fn, x.cast(y), 2) for x in self.all_images for y in fmt] [run_const('%s vector %s' % (fn.__name__, y), fn, self.colour.cast(y), [1, 2, 3]) for y in fmt] # run a function on an image, # 50,50 and 10,10 should have different values on the test image def run_imageunary(self, message, im, fn): run_cmp(message, im, 50, 50, lambda x: run_fn(fn, x)) run_cmp(message, im, 10, 10, lambda x: run_fn(fn, x)) def run_unary(self, images, fn, fmt=all_formats): [self.run_imageunary(fn.__name__ + ' image', x.cast(y), fn) for x in images for y in fmt] @classmethod def setup_class(cls): im = pyvips.Image.mask_ideal(100, 100, 0.5, reject=True, optical=True) cls.colour = im * [1, 2, 3] + [2, 3, 4] cls.mono = cls.colour.extract_band(1) cls.all_images = [cls.mono, cls.colour] @classmethod def teardown_class(cls): cls.colour = None cls.mono = None cls.all_images = None # test all operator overloads we define def test_add(self): def add(x, y): return x + y self.run_arith_const(add) self.run_arith(add) def test_sub(self): def sub(x, y): return x - y self.run_arith_const(sub) self.run_arith(sub) def test_mul(self): def mul(x, y): return x * y self.run_arith_const(mul) self.run_arith(mul) def test_div(self): def div(x, y): return x / y # (const / image) needs (image ** -1), which won't work for complex self.run_arith_const(div, fmt=noncomplex_formats) self.run_arith(div) def test_floordiv(self): def my_floordiv(x, y): return x // y # (const // image) needs (image ** -1), which won't work for complex self.run_arith_const(my_floordiv, fmt=noncomplex_formats) self.run_arith(my_floordiv, fmt=noncomplex_formats) def test_pow(self): def my_pow(x, y): return x ** y # (image ** x) won't work for complex images ... just test non-complex self.run_arith_const(my_pow, fmt=noncomplex_formats) self.run_arith(my_pow, fmt=noncomplex_formats) def test_and(self): def my_and(x, y): # python doesn't allow bools on float if isinstance(x, float): x = int(x) if isinstance(y, float): y = int(y) return x & y self.run_arith_const(my_and, fmt=noncomplex_formats) self.run_arith(my_and, fmt=noncomplex_formats) def test_or(self): def my_or(x, y): # python doesn't allow bools on float if isinstance(x, float): x = int(x) if isinstance(y, float): y = int(y) return x | y self.run_arith_const(my_or, fmt=noncomplex_formats) self.run_arith(my_or, fmt=noncomplex_formats) def test_xor(self): def my_xor(x, y): # python doesn't allow bools on float if isinstance(x, float): x = int(x) if isinstance(y, float): y = int(y) return x ^ y self.run_arith_const(my_xor, fmt=noncomplex_formats) self.run_arith(my_xor, fmt=noncomplex_formats) def test_more(self): def more(x, y): if isinstance(x, pyvips.Image) or isinstance(y, pyvips.Image): return x > y else: if x > y: return 255 else: return 0 self.run_arith_const(more) self.run_arith(more) def test_moreeq(self): def moreeq(x, y): if isinstance(x, pyvips.Image) or isinstance(y, pyvips.Image): return x >= y else: if x >= y: return 255 else: return 0 self.run_arith_const(moreeq) self.run_arith(moreeq) def test_less(self): def less(x, y): if isinstance(x, pyvips.Image) or isinstance(y, pyvips.Image): return x < y else: if x < y: return 255 else: return 0 self.run_arith_const(less) self.run_arith(less) def test_lesseq(self): def lesseq(x, y): if isinstance(x, pyvips.Image) or isinstance(y, pyvips.Image): return x <= y else: if x <= y: return 255 else: return 0 self.run_arith_const(lesseq) self.run_arith(lesseq) def test_equal(self): def equal(x, y): if isinstance(x, pyvips.Image) or isinstance(y, pyvips.Image): return x == y else: if x == y: return 255 else: return 0 self.run_arith_const(equal) self.run_arith(equal) def test_noteq(self): def noteq(x, y): if isinstance(x, pyvips.Image) or isinstance(y, pyvips.Image): return x != y else: if x != y: return 255 else: return 0 self.run_arith_const(noteq) self.run_arith(noteq) # comparisons against out of range values should always fail, and # comparisons to fractional values should always fail x = pyvips.Image.grey(256, 256, uchar=True) assert (x == 1000).max() == 0 assert (x == 12).max() == 255 assert (x == 12.5).max() == 0 def test_abs(self): def my_abs(x): return abs(x) im = -self.colour self.run_unary([im], my_abs) def test_lshift(self): def my_lshift(x): # python doesn't allow float << int if isinstance(x, float): x = int(x) return x << 2 # we don't support constant << image, treat as a unary self.run_unary(self.all_images, my_lshift, fmt=noncomplex_formats) def test_rshift(self): def my_rshift(x): # python doesn't allow float >> int if isinstance(x, float): x = int(x) return x >> 2 # we don't support constant >> image, treat as a unary self.run_unary(self.all_images, my_rshift, fmt=noncomplex_formats) def test_mod(self): def my_mod(x): return x % 2 # we don't support constant % image, treat as a unary self.run_unary(self.all_images, my_mod, fmt=noncomplex_formats) def test_pos(self): def my_pos(x): return +x self.run_unary(self.all_images, my_pos) def test_neg(self): def my_neg(x): return -x self.run_unary(self.all_images, my_neg) def test_invert(self): def my_invert(x): if isinstance(x, float): x = int(x) return ~x & 0xff # ~image is trimmed to image max so it's hard to test for all formats # just test uchar self.run_unary(self.all_images, my_invert, fmt=[pyvips.BandFormat.UCHAR]) # test the rest of VipsArithmetic def test_avg(self): im = pyvips.Image.black(50, 100) test = im.insert(im + 100, 50, 0, expand=True) for fmt in all_formats: assert pytest.approx(test.cast(fmt).avg()) == 50 def test_deviate(self): im = pyvips.Image.black(50, 100) test = im.insert(im + 100, 50, 0, expand=True) for fmt in noncomplex_formats: assert pytest.approx(test.cast(fmt).deviate(), abs=0.01) == 50 def test_polar(self): im = pyvips.Image.black(100, 100) + 100 im = im.complexform(im) im = im.polar() assert pytest.approx(im.real().avg()) == 100 * 2 ** 0.5 assert pytest.approx(im.imag().avg()) == 45 def test_rect(self): im = pyvips.Image.black(100, 100) im = (im + 100 * 2 ** 0.5).complexform(im + 45) im = im.rect() assert pytest.approx(im.real().avg()) == 100 assert pytest.approx(im.imag().avg()) == 100 def test_conjugate(self): im = pyvips.Image.black(100, 100) + 100 im = im.complexform(im) im = im.conj() assert pytest.approx(im.real().avg()) == 100 assert pytest.approx(im.imag().avg()) == -100 def test_histfind(self): im = pyvips.Image.black(50, 100) test = im.insert(im + 10, 50, 0, expand=True) for fmt in all_formats: hist = test.cast(fmt).hist_find() assert_almost_equal_objects(hist(0, 0), [5000]) assert_almost_equal_objects(hist(10, 0), [5000]) assert_almost_equal_objects(hist(5, 0), [0]) test = test * [1, 2, 3] for fmt in all_formats: hist = test.cast(fmt).hist_find(band=0) assert_almost_equal_objects(hist(0, 0), [5000]) assert_almost_equal_objects(hist(10, 0), [5000]) assert_almost_equal_objects(hist(5, 0), [0]) hist = test.cast(fmt).hist_find(band=1) assert_almost_equal_objects(hist(0, 0), [5000]) assert_almost_equal_objects(hist(20, 0), [5000]) assert_almost_equal_objects(hist(5, 0), [0]) def test_histfind_indexed(self): im = pyvips.Image.black(50, 100) test = im.insert(im + 10, 50, 0, expand=True) index = test // 10 for x in noncomplex_formats: for y in [pyvips.BandFormat.UCHAR, pyvips.BandFormat.USHORT]: a = test.cast(x) b = index.cast(y) hist = a.hist_find_indexed(b) assert_almost_equal_objects(hist(0, 0), [0]) assert_almost_equal_objects(hist(1, 0), [50000]) def test_histfind_ndim(self): im = pyvips.Image.black(100, 100) + [1, 2, 3] for fmt in noncomplex_formats: hist = im.cast(fmt).hist_find_ndim() assert_almost_equal_objects(hist(0, 0)[0], 10000) assert_almost_equal_objects(hist(5, 5)[5], 0) hist = im.cast(fmt).hist_find_ndim(bins=1) assert_almost_equal_objects(hist(0, 0)[0], 10000) assert hist.width == 1 assert hist.height == 1 assert hist.bands == 1 def test_hough_circle(self): test = pyvips.Image.black(100, 100).draw_circle(100, 50, 50, 40) for fmt in all_formats: im = test.cast(fmt) hough = im.hough_circle(min_radius=35, max_radius=45) v, x, y = hough.maxpos() vec = hough(x, y) r = vec.index(v) + 35 assert pytest.approx(x) == 50 assert pytest.approx(y) == 50 assert pytest.approx(r) == 40 @pytest.mark.skipif(not pyvips.base.at_least_libvips(8, 7), reason="requires libvips >= 8.7") def test_hough_line(self): # hough_line changed the way it codes parameter space in 8.7 ... don't # test earlier versions test = pyvips.Image.black(100, 100).draw_line(100, 10, 90, 90, 10) for fmt in all_formats: im = test.cast(fmt) hough = im.hough_line() v, x, y = hough.maxpos() angle = 180.0 * x // hough.width distance = test.height * y // hough.height assert pytest.approx(angle) == 45 assert pytest.approx(distance) == 70 def test_sin(self): def my_sin(x): if isinstance(x, pyvips.Image): return x.sin() else: return math.sin(math.radians(x)) self.run_unary(self.all_images, my_sin, fmt=noncomplex_formats) def test_cos(self): def my_cos(x): if isinstance(x, pyvips.Image): return x.cos() else: return math.cos(math.radians(x)) self.run_unary(self.all_images, my_cos, fmt=noncomplex_formats) def test_tan(self): def my_tan(x): if isinstance(x, pyvips.Image): return x.tan() else: return math.tan(math.radians(x)) self.run_unary(self.all_images, my_tan, fmt=noncomplex_formats) def test_asin(self): def my_asin(x): if isinstance(x, pyvips.Image): return x.asin() else: return math.degrees(math.asin(x)) im = (pyvips.Image.black(100, 100) + [1, 2, 3]) / 3.0 self.run_unary([im], my_asin, fmt=noncomplex_formats) def test_acos(self): def my_acos(x): if isinstance(x, pyvips.Image): return x.acos() else: return math.degrees(math.acos(x)) im = (pyvips.Image.black(100, 100) + [1, 2, 3]) / 3.0 self.run_unary([im], my_acos, fmt=noncomplex_formats) def test_atan(self): def my_atan(x): if isinstance(x, pyvips.Image): return x.atan() else: return math.degrees(math.atan(x)) im = (pyvips.Image.black(100, 100) + [1, 2, 3]) / 3.0 self.run_unary([im], my_atan, fmt=noncomplex_formats) def test_log(self): def my_log(x): if isinstance(x, pyvips.Image): return x.log() else: return math.log(x) self.run_unary(self.all_images, my_log, fmt=noncomplex_formats) def test_log10(self): def my_log10(x): if isinstance(x, pyvips.Image): return x.log10() else: return math.log10(x) self.run_unary(self.all_images, my_log10, fmt=noncomplex_formats) def test_exp(self): def my_exp(x): if isinstance(x, pyvips.Image): return x.exp() else: return math.exp(x) self.run_unary(self.all_images, my_exp, fmt=noncomplex_formats) def test_exp10(self): def my_exp10(x): if isinstance(x, pyvips.Image): return x.exp10() else: return math.pow(10, x) self.run_unary(self.all_images, my_exp10, fmt=noncomplex_formats) def test_floor(self): def my_floor(x): if isinstance(x, pyvips.Image): return x.floor() else: return math.floor(x) self.run_unary(self.all_images, my_floor) def test_ceil(self): def my_ceil(x): if isinstance(x, pyvips.Image): return x.ceil() else: return math.ceil(x) self.run_unary(self.all_images, my_ceil) def test_rint(self): def my_rint(x): if isinstance(x, pyvips.Image): return x.rint() else: return round(x) self.run_unary(self.all_images, my_rint) def test_sign(self): def my_sign(x): if isinstance(x, pyvips.Image): return x.sign() else: if x > 0: return 1 elif x < 0: return -1 else: return 0 self.run_unary(self.all_images, my_sign) def test_max(self): test = pyvips.Image.black(100, 100).draw_rect(100, 40, 50, 1, 1) for fmt in all_formats: v = test.cast(fmt).max() assert pytest.approx(v) == 100 v, x, y = test.cast(fmt).maxpos() assert pytest.approx(v) == 100 assert pytest.approx(x) == 40 assert pytest.approx(y) == 50 def test_min(self): test = (pyvips.Image.black(100, 100) + 100).draw_rect(0, 40, 50, 1, 1) for fmt in all_formats: v = test.cast(fmt).min() assert pytest.approx(v) == 0 v, x, y = test.cast(fmt).minpos() assert pytest.approx(v) == 0 assert pytest.approx(x) == 40 assert pytest.approx(y) == 50 def test_measure(self): im = pyvips.Image.black(50, 50) test = im.insert(im + 10, 50, 0, expand=True) for x in noncomplex_formats: a = test.cast(x) matrix = a.measure(2, 1) [p1] = matrix(0, 0) [p2] = matrix(0, 1) assert pytest.approx(p1) == 0 assert pytest.approx(p2) == 10 def test_find_trim(self): if pyvips.type_find("VipsOperation", "find_trim") != 0: im = pyvips.Image.black(50, 60) + 100 test = im.embed(10, 20, 200, 300, extend="white") for x in unsigned_formats + float_formats: a = test.cast(x) left, top, width, height = a.find_trim() assert left == 10 assert top == 20 assert width == 50 assert height == 60 test_rgb = test.bandjoin([test, test]) left, top, width, height = test_rgb.find_trim(background=[255, 255, 255]) assert left == 10 assert top == 20 assert width == 50 assert height == 60 def test_profile(self): test = pyvips.Image.black(100, 100).draw_rect(100, 40, 50, 1, 1) for fmt in noncomplex_formats: columns, rows = test.cast(fmt).profile() v, x, y = columns.minpos() assert pytest.approx(v) == 50 assert pytest.approx(x) == 40 assert pytest.approx(y) == 0 v, x, y = rows.minpos() assert pytest.approx(v) == 40 assert pytest.approx(x) == 0 assert pytest.approx(y) == 50 def test_project(self): im = pyvips.Image.black(50, 50) test = im.insert(im + 10, 50, 0, expand=True) for fmt in noncomplex_formats: columns, rows = test.cast(fmt).project() assert_almost_equal_objects(columns(10, 0), [0]) assert_almost_equal_objects(columns(70, 0), [50 * 10]) assert_almost_equal_objects(rows(0, 10), [50 * 10]) def test_stats(self): im = pyvips.Image.black(50, 50) test = im.insert(im + 10, 50, 0, expand=True) for x in noncomplex_formats: a = test.cast(x) matrix = a.stats() assert_almost_equal_objects(matrix(0, 0), [a.min()]) assert_almost_equal_objects(matrix(1, 0), [a.max()]) assert_almost_equal_objects(matrix(2, 0), [50 * 50 * 10]) assert_almost_equal_objects(matrix(3, 0), [50 * 50 * 100]) assert_almost_equal_objects(matrix(4, 0), [a.avg()]) assert_almost_equal_objects(matrix(5, 0), [a.deviate()]) assert_almost_equal_objects(matrix(0, 1), [a.min()]) assert_almost_equal_objects(matrix(1, 1), [a.max()]) assert_almost_equal_objects(matrix(2, 1), [50 * 50 * 10]) assert_almost_equal_objects(matrix(3, 1), [50 * 50 * 100]) assert_almost_equal_objects(matrix(4, 1), [a.avg()]) assert_almost_equal_objects(matrix(5, 1), [a.deviate()]) def test_sum(self): for fmt in all_formats: im = pyvips.Image.black(50, 50) im2 = [(im + x).cast(fmt) for x in range(0, 100, 10)] im3 = pyvips.Image.sum(im2) assert pytest.approx(im3.max()) == sum(range(0, 100, 10)) if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test-suite/test_colour.py000066400000000000000000000152631361153320700212120ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : import pytest import pyvips from helpers import JPEG_FILE, SRGB_FILE, colour_colourspaces, \ mono_colourspaces, assert_almost_equal_objects, skip_if_no class TestColour: def test_colourspace(self): # mid-grey in Lab ... put 42 in the extra band, it should be copied # unmodified test = pyvips.Image.black(100, 100) + [50, 0, 0, 42] test = test.copy(interpretation=pyvips.Interpretation.LAB) # a long series should come in a circle im = test for col in colour_colourspaces + [pyvips.Interpretation.LAB]: im = im.colourspace(col) assert im.interpretation == col for i in range(0, 4): min_l = im.extract_band(i).min() max_h = im.extract_band(i).max() assert pytest.approx(min_l) == max_h pixel = im(10, 10) assert pytest.approx(pixel[3], 0.01) == 42 # alpha won't be equal for RGB16, but it should be preserved if we go # there and back im = im.colourspace(pyvips.Interpretation.RGB16) im = im.colourspace(pyvips.Interpretation.LAB) before = test(10, 10) after = im(10, 10) assert_almost_equal_objects(before, after, threshold=0.1) # go between every pair of colour spaces for start in colour_colourspaces: for end in colour_colourspaces: im = test.colourspace(start) im2 = im.colourspace(end) im3 = im2.colourspace(pyvips.Interpretation.LAB) before = test(10, 10) after = im3(10, 10) assert_almost_equal_objects(before, after, threshold=0.1) # test Lab->XYZ on mid-grey # checked against http://www.brucelindbloom.com im = test.colourspace(pyvips.Interpretation.XYZ) after = im(10, 10) assert_almost_equal_objects(after, [17.5064, 18.4187, 20.0547, 42]) # grey->colour->grey should be equal for mono_fmt in mono_colourspaces: test_grey = test.colourspace(mono_fmt) im = test_grey for col in colour_colourspaces + [mono_fmt]: im = im.colourspace(col) assert im.interpretation == col [before, alpha_before] = test_grey(10, 10) [after, alpha_after] = im(10, 10) assert abs(alpha_after - alpha_before) < 1 if mono_fmt == pyvips.Interpretation.GREY16: # GREY16 can wind up rather different due to rounding assert abs(after - before) < 30 else: # but 8-bit we should hit exactly assert abs(after - before) < 1 # we should be able to go from cmyk to any 3-band space and back again, # approximately cmyk = test.colourspace(pyvips.Interpretation.CMYK) for end in colour_colourspaces: im = cmyk.colourspace(end) im2 = im.colourspace(pyvips.Interpretation.CMYK) before = cmyk(10, 10) after = im2(10, 10) assert_almost_equal_objects(before, after, threshold=10) # test results from Bruce Lindbloom's calculator: # http://www.brucelindbloom.com def test_dE00(self): # put 42 in the extra band, it should be copied unmodified reference = pyvips.Image.black(100, 100) + [50, 10, 20, 42] reference = reference.copy(interpretation=pyvips.Interpretation.LAB) sample = pyvips.Image.black(100, 100) + [40, -20, 10] sample = sample.copy(interpretation=pyvips.Interpretation.LAB) difference = reference.dE00(sample) result, alpha = difference(10, 10) assert pytest.approx(result, 0.001) == 30.238 assert pytest.approx(alpha, 0.001) == 42.0 def test_dE76(self): # put 42 in the extra band, it should be copied unmodified reference = pyvips.Image.black(100, 100) + [50, 10, 20, 42] reference = reference.copy(interpretation=pyvips.Interpretation.LAB) sample = pyvips.Image.black(100, 100) + [40, -20, 10] sample = sample.copy(interpretation=pyvips.Interpretation.LAB) difference = reference.dE76(sample) result, alpha = difference(10, 10) assert pytest.approx(result, 0.001) == 33.166 assert pytest.approx(alpha, 0.001) == 42.0 # the vips CMC calculation is based on distance in a colorspace # derived from the CMC formula, so it won't match exactly ... # see vips_LCh2CMC() for details def test_dECMC(self): reference = pyvips.Image.black(100, 100) + [50, 10, 20, 42] reference = reference.copy(interpretation=pyvips.Interpretation.LAB) sample = pyvips.Image.black(100, 100) + [55, 11, 23] sample = sample.copy(interpretation=pyvips.Interpretation.LAB) difference = reference.dECMC(sample) result, alpha = difference(10, 10) assert abs(result - 4.97) < 0.5 assert pytest.approx(alpha, 0.001) == 42.0 @skip_if_no("icc_import") def test_icc(self): test = pyvips.Image.new_from_file(JPEG_FILE) im = test.icc_import().icc_export() assert im.dE76(test).max() < 6 im = test.icc_import() im2 = im.icc_export(depth=16) assert im2.format == pyvips.BandFormat.USHORT im3 = im2.icc_import() assert (im - im3).abs().max() < 3 im = test.icc_import(intent=pyvips.Intent.ABSOLUTE) im2 = im.icc_export(intent=pyvips.Intent.ABSOLUTE) assert im2.dE76(test).max() < 6 im = test.icc_import() im2 = im.icc_export(output_profile=SRGB_FILE) im3 = im.colourspace(pyvips.Interpretation.SRGB) assert im2.dE76(im3).max() < 6 before_profile = test.get("icc-profile-data") im = test.icc_transform(SRGB_FILE) after_profile = im.get("icc-profile-data") im2 = test.icc_import() im3 = im2.colourspace(pyvips.Interpretation.SRGB) assert im.dE76(im3).max() < 6 assert len(before_profile) != len(after_profile) im = test.icc_import(input_profile=SRGB_FILE) im2 = test.icc_import() assert 6 < im.dE76(im2).max() im = test.icc_import(pcs=pyvips.PCS.XYZ) assert im.interpretation == pyvips.Interpretation.XYZ im = test.icc_import() assert im.interpretation == pyvips.Interpretation.LAB # even without lcms, we should have a working approximation def test_cmyk(self): test = pyvips.Image.new_from_file(JPEG_FILE) im = test.colourspace("cmyk").colourspace("srgb") before = test(150, 210) after = im(150, 210) assert_almost_equal_objects(before, after, threshold=10) if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test-suite/test_connection.py000066400000000000000000000055121361153320700220420ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : import sys import os import shutil import tempfile import pytest import pyvips from helpers import \ JPEG_FILE, PNG_FILE, TIF_FILE, \ temp_filename, assert_almost_equal_objects, have, skip_if_no class TestConnection: tempdir = None @classmethod def setup_class(cls): cls.tempdir = tempfile.mkdtemp() cls.colour = pyvips.Image.jpegload(JPEG_FILE) cls.mono = cls.colour.extract_band(1).copy() # we remove the ICC profile: the RGB one will no longer be appropriate cls.mono.remove("icc-profile-data") cls.rad = cls.colour.float2rad().copy() cls.rad.remove("icc-profile-data") cls.cmyk = cls.colour.bandjoin(cls.mono) cls.cmyk = cls.cmyk.copy(interpretation=pyvips.Interpretation.CMYK) cls.cmyk.remove("icc-profile-data") @classmethod def teardown_class(cls): shutil.rmtree(cls.tempdir, ignore_errors=True) cls.colour = None cls.mono = None cls.rad = None cls.cmyk = None def test_source_new_from_file(self): x = pyvips.Source.new_from_file(JPEG_FILE) assert x.filename() == JPEG_FILE @skip_if_no("jpegload_source") def test_image_new_from_source_file(self): x = pyvips.Source.new_from_file(JPEG_FILE) y = pyvips.Image.new_from_source(x, "") assert y.width == 290 assert y.height == 442 def test_target_new_to_file(self): filename = temp_filename(self.tempdir, ".jpg") x = pyvips.Target.new_to_file(filename) assert x.filename() == filename @skip_if_no("jpegload_source") def test_image_write_to_target_file(self): filename = temp_filename(self.tempdir, ".jpg") x = pyvips.Target.new_to_file(filename) self.colour.write_to_target(x, ".jpg") with open(filename, 'rb') as f: data = f.read() data2 = self.colour.write_to_buffer(".jpg") assert data == data2 def test_source_new_memory(self): data = self.colour.write_to_buffer(".jpg") x = pyvips.Source.new_from_memory(data) assert x.filename() == None @skip_if_no("jpegload_source") def test_image_new_from_source_memory(self): data = self.colour.write_to_buffer(".jpg") x = pyvips.Source.new_from_memory(data) y = pyvips.Image.new_from_source(x, "") assert y.width == 290 assert y.height == 442 def test_target_new_memory(self): x = pyvips.Target.new_to_memory() assert x.filename() == None @skip_if_no("jpegload_source") def test_image_write_to_target_memory(self): x = pyvips.Target.new_to_memory() self.colour.write_to_target(x, ".jpg") y = self.colour.write_to_buffer(".jpg") assert x.get("blob") == y if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test-suite/test_conversion.py000066400000000000000000000647331361153320700221020ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : from functools import reduce import pytest import pyvips from helpers import JPEG_FILE, unsigned_formats, \ signed_formats, float_formats, int_formats, \ noncomplex_formats, all_formats, max_value, \ sizeof_format, rot45_angles, rot45_angle_bonds, \ rot_angles, rot_angle_bonds, run_cmp, run_cmp2, \ assert_almost_equal_objects class TestConversion: # run a function on an image, # 50,50 and 10,10 should have different values on the test image # don't loop over band elements def run_image_pixels(self, message, im, fn): run_cmp(message, im, 50, 50, fn) run_cmp(message, im, 10, 10, fn) # run a function on a pair of images # 50,50 and 10,10 should have different values on the test image # don't loop over band elements def run_image_pixels2(self, message, left, right, fn): run_cmp2(message, left, right, 50, 50, fn) run_cmp2(message, left, right, 10, 10, fn) def run_unary(self, images, fn, fmt=all_formats): [self.run_image_pixels(fn.__name__ + (' %s' % y), x.cast(y), fn) for x in images for y in fmt] def run_binary(self, images, fn, fmt=all_formats): [self.run_image_pixels2(fn.__name__ + (' %s %s' % (y, z)), x.cast(y), x.cast(z), fn) for x in images for y in fmt for z in fmt] @classmethod def setup_class(cls): im = pyvips.Image.mask_ideal(100, 100, 0.5, reject=True, optical=True) cls.colour = (im * [1, 2, 3] + [2, 3, 4]).copy(interpretation="srgb") cls.mono = cls.colour[1].copy(interpretation="b-w") cls.all_images = [cls.mono, cls.colour] cls.image = pyvips.Image.jpegload(JPEG_FILE) @classmethod def teardown_class(cls): cls.colour = None cls.mono = None cls.image = None cls.all_images = None def test_band_and(self): def band_and(x): if isinstance(x, pyvips.Image): return x.bandand() else: return [reduce(lambda a, b: int(a) & int(b), x)] self.run_unary(self.all_images, band_and, fmt=int_formats) def test_band_or(self): def band_or(x): if isinstance(x, pyvips.Image): return x.bandor() else: return [reduce(lambda a, b: int(a) | int(b), x)] self.run_unary(self.all_images, band_or, fmt=int_formats) def test_band_eor(self): def band_eor(x): if isinstance(x, pyvips.Image): return x.bandeor() else: return [reduce(lambda a, b: int(a) ^ int(b), x)] self.run_unary(self.all_images, band_eor, fmt=int_formats) def test_bandjoin(self): def bandjoin(x, y): if isinstance(x, pyvips.Image) and isinstance(y, pyvips.Image): return x.bandjoin(y) else: return x + y self.run_binary(self.all_images, bandjoin) def test_bandjoin_const(self): x = self.colour.bandjoin(1) assert x.bands == 4 assert x[3].avg() == 1 x = self.colour.bandjoin([1, 2]) assert x.bands == 5 assert x[3].avg() == 1 assert x[4].avg() == 2 def test_bandmean(self): def bandmean(x): if isinstance(x, pyvips.Image): return x.bandmean() else: return [sum(x) // len(x)] self.run_unary(self.all_images, bandmean, fmt=noncomplex_formats) def test_bandrank(self): def median(x, y): joined = [[a, b] for a, b in zip(x, y)] # .sort() isn't a function, so we have to run this as a separate # pass [z.sort() for z in joined] return [z[len(z) // 2] for z in joined] def bandrank(x, y): if isinstance(x, pyvips.Image) and isinstance(y, pyvips.Image): return x.bandrank([y]) else: return median(x, y) self.run_binary(self.all_images, bandrank, fmt=noncomplex_formats) # we can mix images and constants, and set the index arg a = self.mono.bandrank([2], index=0) b = (self.mono < 2).ifthenelse(self.mono, 2) assert (a - b).abs().min() == 0 def test_cache(self): def cache(x): if isinstance(x, pyvips.Image): return x.cache() else: return x self.run_unary(self.all_images, cache) def test_copy(self): x = self.colour.copy(interpretation=pyvips.Interpretation.LAB) assert x.interpretation == pyvips.Interpretation.LAB x = self.colour.copy(xres=42) assert x.xres == 42 x = self.colour.copy(yres=42) assert x.yres == 42 x = self.colour.copy(xoffset=42) assert x.xoffset == 42 x = self.colour.copy(yoffset=42) assert x.yoffset == 42 x = self.colour.copy(coding=pyvips.Coding.NONE) assert x.coding == pyvips.Coding.NONE def test_bandfold(self): x = self.mono.bandfold() assert x.width == 1 assert x.bands == self.mono.width y = x.bandunfold() assert y.width == self.mono.width assert y.bands == 1 assert x.avg() == y.avg() x = self.mono.bandfold(factor=2) assert x.width == self.mono.width / 2 assert x.bands == 2 y = x.bandunfold(factor=2) assert y.width == self.mono.width assert y.bands == 1 assert x.avg() == y.avg() def test_byteswap(self): x = self.mono.cast("ushort") y = x.byteswap().byteswap() assert x.width == y.width assert x.height == y.height assert x.bands == y.bands assert x.avg() == y.avg() def test_embed(self): for fmt in all_formats: test = self.colour.cast(fmt) im = test.embed(20, 20, self.colour.width + 40, self.colour.height + 40) pixel = im(10, 10) assert_almost_equal_objects(pixel, [0, 0, 0]) pixel = im(30, 30) assert_almost_equal_objects(pixel, [2, 3, 4]) pixel = im(im.width - 10, im.height - 10) assert_almost_equal_objects(pixel, [0, 0, 0]) im = test.embed(20, 20, self.colour.width + 40, self.colour.height + 40, extend=pyvips.Extend.COPY) pixel = im(10, 10) assert_almost_equal_objects(pixel, [2, 3, 4]) pixel = im(im.width - 10, im.height - 10) assert_almost_equal_objects(pixel, [2, 3, 4]) im = test.embed(20, 20, self.colour.width + 40, self.colour.height + 40, extend=pyvips.Extend.BACKGROUND, background=[7, 8, 9]) pixel = im(10, 10) assert_almost_equal_objects(pixel, [7, 8, 9]) pixel = im(im.width - 10, im.height - 10) assert_almost_equal_objects(pixel, [7, 8, 9]) im = test.embed(20, 20, self.colour.width + 40, self.colour.height + 40, extend=pyvips.Extend.WHITE) pixel = im(10, 10) # uses 255 in all bytes of ints, 255.0 for float pixel = [int(x) & 0xff for x in pixel] assert_almost_equal_objects(pixel, [255, 255, 255]) pixel = im(im.width - 10, im.height - 10) pixel = [int(x) & 0xff for x in pixel] assert_almost_equal_objects(pixel, [255, 255, 255]) @pytest.mark.skipif(pyvips.type_find("VipsOperation", "gravity") == 0, reason="no gravity in this vips, skipping test") def test_gravity(self): im = pyvips.Image.black(1, 1) + 255 positions = [ ['centre', 1, 1], ['north', 1, 0], ['south', 1, 2], ['east', 2, 1], ['west', 0, 1], ['north-east', 2, 0], ['south-east', 2, 2], ['south-west', 0, 2], ['north-west', 0, 0] ] for direction, x, y in positions: im2 = im.gravity(direction, 3, 3) assert_almost_equal_objects(im2(x, y), [255]) assert_almost_equal_objects(im2.avg(), 255.0 / 9.0) def test_extract(self): for fmt in all_formats: test = self.colour.cast(fmt) pixel = test(30, 30) assert_almost_equal_objects(pixel, [2, 3, 4]) sub = test.extract_area(25, 25, 10, 10) pixel = sub(5, 5) assert_almost_equal_objects(pixel, [2, 3, 4]) sub = test.extract_band(1, n=2) pixel = sub(30, 30) assert_almost_equal_objects(pixel, [3, 4]) def test_slice(self): test = self.colour bands = [x.avg() for x in test] x = test[0].avg() assert x == bands[0] x = test[-1].avg() assert_almost_equal_objects(x, bands[2]) x = [i.avg() for i in test[1:3]] assert_almost_equal_objects(x, bands[1:3]) x = [i.avg() for i in test[1:-1]] assert_almost_equal_objects(x, bands[1:-1]) x = [i.avg() for i in test[:2]] assert_almost_equal_objects(x, bands[:2]) x = [i.avg() for i in test[1:]] assert_almost_equal_objects(x, bands[1:]) x = [i.avg() for i in test[-1]] assert_almost_equal_objects(x, bands[-1]) def test_crop(self): for fmt in all_formats: test = self.colour.cast(fmt) pixel = test(30, 30) assert_almost_equal_objects(pixel, [2, 3, 4]) sub = test.crop(25, 25, 10, 10) pixel = sub(5, 5) assert_almost_equal_objects(pixel, [2, 3, 4]) @pytest.mark.skipif(pyvips.type_find("VipsOperation", "smartcrop") == 0, reason="no smartcrop, skipping test") def test_smartcrop(self): test = self.image.smartcrop(100, 100) assert test.width == 100 assert test.height == 100 def test_falsecolour(self): for fmt in all_formats: test = self.colour.cast(fmt) im = test.falsecolour() assert im.width == test.width assert im.height == test.height assert im.bands == 3 pixel = im(30, 30) assert_almost_equal_objects(pixel, [20, 0, 41]) def test_flatten(self): for fmt in unsigned_formats + [pyvips.BandFormat.SHORT, pyvips.BandFormat.INT] + float_formats: mx = 255 alpha = mx / 2.0 nalpha = mx - alpha test = self.colour.bandjoin(alpha).cast(fmt) pixel = test(30, 30) predict = [int(x) * alpha / mx for x in pixel[:-1]] im = test.flatten() assert im.bands == 3 pixel = im(30, 30) for x, y in zip(pixel, predict): # we use float arithetic for int and uint, so the rounding # differs ... don't require huge accuracy assert abs(x - y) < 2 im = test.flatten(background=[100, 100, 100]) pixel = test(30, 30) predict = [int(x) * alpha / mx + (100 * nalpha) / mx for x in pixel[:-1]] assert im.bands == 3 pixel = im(30, 30) for x, y in zip(pixel, predict): assert abs(x - y) < 2 def test_premultiply(self): for fmt in unsigned_formats + [pyvips.BandFormat.SHORT, pyvips.BandFormat.INT] + float_formats: mx = 255 alpha = mx / 2.0 test = self.colour.bandjoin(alpha).cast(fmt) pixel = test(30, 30) predict = [int(x) * alpha / mx for x in pixel[:-1]] + [alpha] im = test.premultiply() assert im.bands == test.bands pixel = im(30, 30) for x, y in zip(pixel, predict): # we use float arithetic for int and uint, so the rounding # differs ... don't require huge accuracy assert abs(x - y) < 2 @pytest.mark.skipif(pyvips.type_find("VipsConversion", "composite") == 0, reason="no composite support, skipping test") def test_composite(self): # 50% transparent image overlay = self.colour.bandjoin(128) base = self.colour + 100 comp = base.composite(overlay, "over") assert_almost_equal_objects(comp(0, 0), [51.8, 52.8, 53.8, 255], threshold=0.1) def test_unpremultiply(self): for fmt in unsigned_formats + [pyvips.BandFormat.SHORT, pyvips.BandFormat.INT] + float_formats: mx = 255 alpha = mx / 2.0 test = self.colour.bandjoin(alpha).cast(fmt) pixel = test(30, 30) predict = [int(x) / (alpha / mx) for x in pixel[:-1]] + [alpha] im = test.unpremultiply() assert im.bands == test.bands pixel = im(30, 30) for x, y in zip(pixel, predict): # we use float arithetic for int and uint, so the rounding # differs ... don't require huge accuracy assert abs(x - y) < 2 def test_flip(self): for fmt in all_formats: test = self.colour.cast(fmt) result = test.fliphor() result = result.flipver() result = result.fliphor() result = result.flipver() diff = (test - result).abs().max() assert diff == 0 def test_gamma(self): exponent = 2.4 for fmt in noncomplex_formats: mx = max_value[fmt] test = (self.colour + mx / 2.0).cast(fmt) norm = mx ** exponent / mx result = test.gamma() before = test(30, 30) after = result(30, 30) predict = [x ** exponent / norm for x in before] for a, b in zip(after, predict): # ie. less than 1% error, rounding on 7-bit images # means this is all we can expect assert abs(a - b) < mx / 100.0 exponent = 1.2 for fmt in noncomplex_formats: mx = max_value[fmt] test = (self.colour + mx / 2.0).cast(fmt) norm = mx ** exponent / mx result = test.gamma(exponent=1.0 / 1.2) before = test(30, 30) after = result(30, 30) predict = [x ** exponent / norm for x in before] for a, b in zip(after, predict): # ie. less than 1% error, rounding on 7-bit images # means this is all we can expect assert abs(a - b) < mx / 100.0 def test_grid(self): test = self.colour.replicate(1, 12) assert test.width == self.colour.width assert test.height == self.colour.height * 12 for fmt in all_formats: im = test.cast(fmt) result = im.grid(test.width, 3, 4) assert result.width == self.colour.width * 3 assert result.height == self.colour.height * 4 before = im(10, 10) after = result(10 + test.width * 2, 10 + test.width * 2) assert_almost_equal_objects(before, after) before = im(50, 50) after = result(50 + test.width * 2, 50 + test.width * 2) assert_almost_equal_objects(before, after) def test_ifthenelse(self): test = self.mono > 3 for x in all_formats: for y in all_formats: t = (self.colour + 10).cast(x) e = self.colour.cast(y) r = test.ifthenelse(t, e) assert r.width == self.colour.width assert r.height == self.colour.height assert r.bands == self.colour.bands predict = e(10, 10) result = r(10, 10) assert_almost_equal_objects(result, predict) predict = t(50, 50) result = r(50, 50) assert_almost_equal_objects(result, predict) test = self.colour > 3 for x in all_formats: for y in all_formats: t = (self.mono + 10).cast(x) e = self.mono.cast(y) r = test.ifthenelse(t, e) assert r.width == self.colour.width assert r.height == self.colour.height assert r.bands == self.colour.bands cp = test(10, 10) tp = t(10, 10) * 3 ep = e(10, 10) * 3 predict = [te if ce != 0 else ee for ce, te, ee in zip(cp, tp, ep)] result = r(10, 10) assert_almost_equal_objects(result, predict) cp = test(50, 50) tp = t(50, 50) * 3 ep = e(50, 50) * 3 predict = [te if ce != 0 else ee for ce, te, ee in zip(cp, tp, ep)] result = r(50, 50) assert_almost_equal_objects(result, predict) test = self.colour > 3 for x in all_formats: for y in all_formats: t = (self.mono + 10).cast(x) e = self.mono.cast(y) r = test.ifthenelse(t, e, blend=True) assert r.width == self.colour.width assert r.height == self.colour.height assert r.bands == self.colour.bands result = r(10, 10) assert_almost_equal_objects(result, [3, 3, 13]) test = self.mono > 3 r = test.ifthenelse([1, 2, 3], self.colour) assert r.width == self.colour.width assert r.height == self.colour.height assert r.bands == self.colour.bands assert r.format == self.colour.format assert r.interpretation == self.colour.interpretation result = r(10, 10) assert_almost_equal_objects(result, [2, 3, 4]) result = r(50, 50) assert_almost_equal_objects(result, [1, 2, 3]) test = self.mono r = test.ifthenelse([1, 2, 3], self.colour, blend=True) assert r.width == self.colour.width assert r.height == self.colour.height assert r.bands == self.colour.bands assert r.format == self.colour.format assert r.interpretation == self.colour.interpretation result = r(10, 10) assert_almost_equal_objects(result, [2, 3, 4], threshold=0.1) result = r(50, 50) assert_almost_equal_objects(result, [3.0, 4.9, 6.9], threshold=0.1) def test_switch(self): x = pyvips.Image.grey(256, 256, uchar=True) # slice into two at 128, we should get 50% of pixels in each half index = pyvips.Image.switch([x < 128, x >= 128]) assert index.avg() == 0.5 # slice into four index = pyvips.Image.switch([ x < 64, x >= 64 and x < 128, x >= 128 and x < 192, x >= 192 ]) assert index.avg() == 1.5 # no match should return n + 1 index = pyvips.Image.switch([x == 1000, x == 2000]) assert index.avg() == 2 def test_insert(self): for x in all_formats: for y in all_formats: main = self.mono.cast(x) sub = self.colour.cast(y) r = main.insert(sub, 10, 10) assert r.width == main.width assert r.height == main.height assert r.bands == sub.bands a = r(10, 10) b = sub(0, 0) assert_almost_equal_objects(a, b) a = r(0, 0) b = main(0, 0) * 3 assert_almost_equal_objects(a, b) for x in all_formats: for y in all_formats: main = self.mono.cast(x) sub = self.colour.cast(y) r = main.insert(sub, 10, 10, expand=True, background=100) assert r.width == main.width + 10 assert r.height == main.height + 10 assert r.bands == sub.bands a = r(r.width - 5, 5) assert_almost_equal_objects(a, [100, 100, 100]) def test_arrayjoin(self): max_width = 0 max_height = 0 max_bands = 0 for image in self.all_images: if image.width > max_width: max_width = image.width if image.height > max_height: max_height = image.height if image.bands > max_bands: max_bands = image.bands im = pyvips.Image.arrayjoin(self.all_images) assert im.width == max_width * len(self.all_images) assert im.height == max_height assert im.bands == max_bands im = pyvips.Image.arrayjoin(self.all_images, across=1) assert im.width == max_width assert im.height == max_height * len(self.all_images) assert im.bands == max_bands im = pyvips.Image.arrayjoin(self.all_images, shim=10) assert im.width == max_width * len(self.all_images) + 10 * (len(self.all_images) - 1) # noqa: E501 assert im.height == max_height assert im.bands == max_bands def test_msb(self): for fmt in unsigned_formats: mx = max_value[fmt] size = sizeof_format[fmt] test = (self.colour + mx / 8.0).cast(fmt) im = test.msb() before = test(10, 10) predict = [int(x) >> ((size - 1) * 8) for x in before] result = im(10, 10) assert_almost_equal_objects(result, predict) before = test(50, 50) predict = [int(x) >> ((size - 1) * 8) for x in before] result = im(50, 50) assert_almost_equal_objects(result, predict) for fmt in signed_formats: mx = max_value[fmt] size = sizeof_format[fmt] test = (self.colour + mx / 8.0).cast(fmt) im = test.msb() before = test(10, 10) predict = [128 + (int(x) >> ((size - 1) * 8)) for x in before] result = im(10, 10) assert_almost_equal_objects(result, predict) before = test(50, 50) predict = [128 + (int(x) >> ((size - 1) * 8)) for x in before] result = im(50, 50) assert_almost_equal_objects(result, predict) for fmt in unsigned_formats: mx = max_value[fmt] size = sizeof_format[fmt] test = (self.colour + mx / 8.0).cast(fmt) im = test.msb(band=1) before = [test(10, 10)[1]] predict = [int(x) >> ((size - 1) * 8) for x in before] result = im(10, 10) assert_almost_equal_objects(result, predict) before = [test(50, 50)[1]] predict = [int(x) >> ((size - 1) * 8) for x in before] result = im(50, 50) assert_almost_equal_objects(result, predict) def test_recomb(self): array = [[0.2, 0.5, 0.3]] def recomb(x): if isinstance(x, pyvips.Image): return x.recomb(array) else: sum = 0 for i, c in zip(array[0], x): sum += i * c return [sum] self.run_unary([self.colour], recomb, fmt=noncomplex_formats) def test_replicate(self): for fmt in all_formats: im = self.colour.cast(fmt) test = im.replicate(10, 10) assert test.width == self.colour.width * 10 assert test.height == self.colour.height * 10 before = im(10, 10) after = test(10 + im.width * 2, 10 + im.width * 2) assert_almost_equal_objects(before, after) before = im(50, 50) after = test(50 + im.width * 2, 50 + im.width * 2) assert_almost_equal_objects(before, after) def test_rot45(self): # test has a quarter-circle in the bottom right test = self.colour.crop(0, 0, 51, 51) for fmt in all_formats: im = test.cast(fmt) im2 = im.rot45() before = im(50, 50) after = im2(25, 50) assert_almost_equal_objects(before, after) for a, b in zip(rot45_angles, rot45_angle_bonds): im2 = im.rot45(angle=a) after = im2.rot45(angle=b) diff = (after - im).abs().max() assert diff == 0 def test_rot(self): # test has a quarter-circle in the bottom right test = self.colour.crop(0, 0, 51, 51) for fmt in all_formats: im = test.cast(fmt) im2 = im.rot(pyvips.Angle.D90) before = im(50, 50) after = im2(0, 50) assert_almost_equal_objects(before, after) for a, b in zip(rot_angles, rot_angle_bonds): im2 = im.rot(a) after = im2.rot(b) diff = (after - im).abs().max() assert diff == 0 def test_scaleimage(self): for fmt in noncomplex_formats: test = self.colour.cast(fmt) im = test.scaleimage() assert im.max() == 255 assert im.min() == 0 im = test.scaleimage(log=True) assert im.max() == 255 def test_subsample(self): for fmt in all_formats: test = self.colour.cast(fmt) im = test.subsample(3, 3) assert im.width == test.width // 3 assert im.height == test.height // 3 before = test(60, 60) after = im(20, 20) assert_almost_equal_objects(before, after) def test_zoom(self): for fmt in all_formats: test = self.colour.cast(fmt) im = test.zoom(3, 3) assert im.width == test.width * 3 assert im.height == test.height * 3 before = test(50, 50) after = im(150, 150) assert_almost_equal_objects(before, after) def test_wrap(self): for fmt in all_formats: test = self.colour.cast(fmt) im = test.wrap() assert im.width == test.width assert im.height == test.height before = test(0, 0) after = im(50, 50) assert_almost_equal_objects(before, after) before = test(50, 50) after = im(0, 0) assert_almost_equal_objects(before, after) if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test-suite/test_convolution.py000066400000000000000000000204231361153320700222600ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : import operator import pytest from functools import reduce import pyvips from helpers import noncomplex_formats, run_fn2, run_fn, \ assert_almost_equal_objects, assert_less_threshold # point convolution def conv(image, mask, x_position, y_position): s = 0.0 for x in range(0, mask.width): for y in range(0, mask.height): m = mask(x, y) i = image(x + x_position, y + y_position) p = run_fn2(operator.mul, m, i) s = run_fn2(operator.add, s, p) return run_fn2(operator.truediv, s, mask.scale) def compass(image, mask, x_position, y_position, n_rot, fn): acc = [] for i in range(0, n_rot): result = conv(image, mask, x_position, y_position) result = run_fn(abs, result) acc.append(result) mask = mask.rot45() return reduce(lambda a, b: run_fn2(fn, a, b), acc) class TestConvolution: @classmethod def setup_class(cls): im = pyvips.Image.mask_ideal(100, 100, 0.5, reject=True, optical=True) cls.colour = im * [1, 2, 3] + [2, 3, 4] cls.colour = cls.colour.copy(interpretation=pyvips.Interpretation.SRGB) cls.mono = cls.colour.extract_band(1) cls.mono = cls.mono.copy(interpretation=pyvips.Interpretation.B_W) cls.all_images = [cls.mono, cls.colour] cls.sharp = pyvips.Image.new_from_array([[-1, -1, -1], [-1, 16, -1], [-1, -1, -1]], scale=8) cls.blur = pyvips.Image.new_from_array([[1, 1, 1], [1, 1, 1], [1, 1, 1]], scale=9) cls.line = pyvips.Image.new_from_array([[1, 1, 1], [-2, -2, -2], [1, 1, 1]]) cls.sobel = pyvips.Image.new_from_array([[1, 2, 1], [0, 0, 0], [-1, -2, -1]]) cls.all_masks = [cls.sharp, cls.blur, cls.line, cls.sobel] @classmethod def teardown_class(cls): cls.colour = None cls.mono = None cls.all_images = None cls.sharp = None cls.blur = None cls.line = None cls.sobel = None cls.all_masks = None def test_conv(self): for im in self.all_images: for msk in self.all_masks: for prec in [pyvips.Precision.INTEGER, pyvips.Precision.FLOAT]: convolved = im.conv(msk, precision=prec) result = convolved(25, 50) true = conv(im, msk, 24, 49) assert_almost_equal_objects(result, true) result = convolved(50, 50) true = conv(im, msk, 49, 49) assert_almost_equal_objects(result, true) # don't test conva, it's still not done def dont_est_conva(self): for im in self.all_images: for msk in self.all_masks: print("msk:") msk.matrixprint() print("im.bands = %s" % im.bands) convolved = im.conv(msk, precision=pyvips.Precision.APPROXIMATE) result = convolved(25, 50) true = conv(im, msk, 24, 49) print("result = %s, true = %s" % (result, true)) assert_less_threshold(result, true, 5) result = convolved(50, 50) true = conv(im, msk, 49, 49) print("result = %s, true = %s" % (result, true)) assert_less_threshold(result, true, 5) def test_compass(self): for im in self.all_images: for msk in self.all_masks: for prec in [pyvips.Precision.INTEGER, pyvips.Precision.FLOAT]: for times in range(1, 4): convolved = im.compass(msk, times=times, angle=pyvips.Angle45.D45, combine=pyvips.Combine.MAX, precision=prec) result = convolved(25, 50) true = compass(im, msk, 24, 49, times, max) assert_almost_equal_objects(result, true) for im in self.all_images: for msk in self.all_masks: for prec in [pyvips.Precision.INTEGER, pyvips.Precision.FLOAT]: for times in range(1, 4): convolved = im.compass(msk, times=times, angle=pyvips.Angle45.D45, combine=pyvips.Combine.SUM, precision=prec) result = convolved(25, 50) true = compass(im, msk, 24, 49, times, operator.add) assert_almost_equal_objects(result, true) def test_convsep(self): for im in self.all_images: for prec in [pyvips.Precision.INTEGER, pyvips.Precision.FLOAT]: gmask = pyvips.Image.gaussmat(2, 0.1, precision=prec) gmask_sep = pyvips.Image.gaussmat(2, 0.1, separable=True, precision=prec) assert gmask.width == gmask.height assert gmask_sep.width == gmask.width assert gmask_sep.height == 1 a = im.conv(gmask, precision=prec) b = im.convsep(gmask_sep, precision=prec) a_point = a(25, 50) b_point = b(25, 50) assert_almost_equal_objects(a_point, b_point, threshold=0.1) def test_fastcor(self): for im in self.all_images: for fmt in noncomplex_formats: small = im.crop(20, 45, 10, 10).cast(fmt) cor = im.fastcor(small) v, x, y = cor.minpos() assert v == 0 assert x == 25 assert y == 50 def test_spcor(self): for im in self.all_images: for fmt in noncomplex_formats: small = im.crop(20, 45, 10, 10).cast(fmt) cor = im.spcor(small) v, x, y = cor.maxpos() assert v == 1.0 assert x == 25 assert y == 50 def test_gaussblur(self): for im in self.all_images: for prec in [pyvips.Precision.INTEGER, pyvips.Precision.FLOAT]: for i in range(5, 10): sigma = i / 5.0 gmask = pyvips.Image.gaussmat(sigma, 0.2, precision=prec) a = im.conv(gmask, precision=prec) b = im.gaussblur(sigma, min_ampl=0.2, precision=prec) a_point = a(25, 50) b_point = b(25, 50) assert_almost_equal_objects(a_point, b_point, threshold=0.1) def test_sharpen(self): for im in self.all_images: for fmt in noncomplex_formats: # old vipses used "radius", check that that still works sharp = im.sharpen(radius=5) for sigma in [0.5, 1, 1.5, 2]: im = im.cast(fmt) sharp = im.sharpen(sigma=sigma) # hard to test much more than this assert im.width == sharp.width assert im.height == sharp.height # if m1 and m2 are zero, sharpen should do nothing sharp = im.sharpen(sigma=sigma, m1=0, m2=0) sharp = sharp.colourspace(im.interpretation) # print("testing sig = %g" % sigma) # print("testing fmt = %s" % fmt) # print("max diff = %g" % (im - sharp).abs().max()) assert (im - sharp).abs().max() == 0 if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test-suite/test_create.py000066400000000000000000000346141361153320700211530ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : import pytest import pyvips from helpers import assert_almost_equal_objects class TestCreate: def test_black(self): im = pyvips.Image.black(100, 100) assert im.width == 100 assert im.height == 100 assert im.format == pyvips.BandFormat.UCHAR assert im.bands == 1 for i in range(0, 100): pixel = im(i, i) assert len(pixel) == 1 assert pixel[0] == 0 im = pyvips.Image.black(100, 100, bands=3) assert im.width == 100 assert im.height == 100 assert im.format == pyvips.BandFormat.UCHAR assert im.bands == 3 for i in range(0, 100): pixel = im(i, i) assert len(pixel) == 3 assert_almost_equal_objects(pixel, [0, 0, 0]) def test_buildlut(self): M = pyvips.Image.new_from_array([[0, 0], [255, 100]]) lut = M.buildlut() assert lut.width == 256 assert lut.height == 1 assert lut.bands == 1 p = lut(0, 0) assert p[0] == 0.0 p = lut(255, 0) assert p[0] == 100.0 p = lut(10, 0) assert p[0] == 100 * 10.0 / 255.0 M = pyvips.Image.new_from_array([[0, 0, 100], [255, 100, 0], [128, 10, 90]]) lut = M.buildlut() assert lut.width == 256 assert lut.height == 1 assert lut.bands == 2 p = lut(0, 0) assert_almost_equal_objects(p, [0.0, 100.0]) p = lut(64, 0) assert_almost_equal_objects(p, [5.0, 95.0]) def test_eye(self): im = pyvips.Image.eye(100, 90) assert im.width == 100 assert im.height == 90 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT assert im.max() == 1.0 assert im.min() == -1.0 im = pyvips.Image.eye(100, 90, uchar=True) assert im.width == 100 assert im.height == 90 assert im.bands == 1 assert im.format == pyvips.BandFormat.UCHAR assert im.max() == 255.0 assert im.min() == 0.0 def test_fractsurf(self): im = pyvips.Image.fractsurf(100, 90, 2.5) assert im.width == 100 assert im.height == 90 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT def test_gaussmat(self): im = pyvips.Image.gaussmat(1, 0.1) assert im.width == 5 assert im.height == 5 assert im.bands == 1 assert im.format == pyvips.BandFormat.DOUBLE assert im.max() == 20 total = im.avg() * im.width * im.height scale = im.get("scale") assert total == scale p = im(im.width / 2, im.height / 2) assert p[0] == 20.0 im = pyvips.Image.gaussmat(1, 0.1, separable=True, precision="float") assert im.width == 5 assert im.height == 1 assert im.bands == 1 assert im.format == pyvips.BandFormat.DOUBLE assert im.max() == 1.0 total = im.avg() * im.width * im.height scale = im.get("scale") assert total == scale p = im(im.width / 2, im.height / 2) assert p[0] == 1.0 def test_gaussnoise(self): im = pyvips.Image.gaussnoise(100, 90) assert im.width == 100 assert im.height == 90 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT im = pyvips.Image.gaussnoise(100, 90, sigma=10, mean=100) assert im.width == 100 assert im.height == 90 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT sigma = im.deviate() mean = im.avg() assert sigma == pytest.approx(10, abs=0.4) assert mean == pytest.approx(100, abs=0.4) def test_grey(self): im = pyvips.Image.grey(100, 90) assert im.width == 100 assert im.height == 90 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT p = im(0, 0) assert p[0] == 0.0 p = im(99, 0) assert p[0] == 1.0 p = im(0, 89) assert p[0] == 0.0 p = im(99, 89) assert p[0] == 1.0 im = pyvips.Image.grey(100, 90, uchar=True) assert im.width == 100 assert im.height == 90 assert im.bands == 1 assert im.format == pyvips.BandFormat.UCHAR p = im(0, 0) assert p[0] == 0 p = im(99, 0) assert p[0] == 255 p = im(0, 89) assert p[0] == 0 p = im(99, 89) assert p[0] == 255 def test_identity(self): im = pyvips.Image.identity() assert im.width == 256 assert im.height == 1 assert im.bands == 1 assert im.format == pyvips.BandFormat.UCHAR p = im(0, 0) assert p[0] == 0.0 p = im(255, 0) assert p[0] == 255.0 p = im(128, 0) assert p[0] == 128.0 im = pyvips.Image.identity(ushort=True) assert im.width == 65536 assert im.height == 1 assert im.bands == 1 assert im.format == pyvips.BandFormat.USHORT p = im(0, 0) assert p[0] == 0 p = im(99, 0) assert p[0] == 99 p = im(65535, 0) assert p[0] == 65535 def test_invertlut(self): lut = pyvips.Image.new_from_array([[0.1, 0.2, 0.3, 0.1], [0.2, 0.4, 0.4, 0.2], [0.7, 0.5, 0.6, 0.3]]) im = lut.invertlut() assert im.width == 256 assert im.height == 1 assert im.bands == 3 assert im.format == pyvips.BandFormat.DOUBLE p = im(0, 0) assert_almost_equal_objects(p, [0, 0, 0]) p = im(255, 0) assert_almost_equal_objects(p, [1, 1, 1]) p = im(0.2 * 255, 0) assert p[0] == pytest.approx(0.1, abs=0.1) p = im(0.3 * 255, 0) assert p[1] == pytest.approx(0.1, abs=0.1) p = im(0.1 * 255, 0) assert p[2] == pytest.approx(0.1, abs=0.1) def test_logmat(self): im = pyvips.Image.logmat(1, 0.1) assert im.width == 7 assert im.height == 7 assert im.bands == 1 assert im.format == pyvips.BandFormat.DOUBLE assert im.max() == 20 total = im.avg() * im.width * im.height scale = im.get("scale") assert total == scale p = im(im.width / 2, im.height / 2) assert p[0] == 20.0 im = pyvips.Image.logmat(1, 0.1, separable=True, precision="float") assert im.width == 7 assert im.height == 1 assert im.bands == 1 assert im.format == pyvips.BandFormat.DOUBLE assert im.max() == 1.0 total = im.avg() * im.width * im.height scale = im.get("scale") assert total == scale p = im(im.width / 2, im.height / 2) assert p[0] == 1.0 def test_mask_butterworth_band(self): im = pyvips.Image.mask_butterworth_band(128, 128, 2, 0.5, 0.5, 0.7, 0.1) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT assert im.max() == pytest.approx(1, abs=0.01) p = im(32, 32) assert p[0] == 1.0 im = pyvips.Image.mask_butterworth_band(128, 128, 2, 0.5, 0.5, 0.7, 0.1, uchar=True, optical=True) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.UCHAR assert im.max() == 255 p = im(32, 32) assert p[0] == 255.0 p = im(64, 64) assert p[0] == 255.0 im = pyvips.Image.mask_butterworth_band(128, 128, 2, 0.5, 0.5, 0.7, 0.1, uchar=True, optical=True, nodc=True) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.UCHAR assert im.max() == 255 p = im(32, 32) assert p[0] == 255.0 p = im(64, 64) assert p[0] != 255 def test_mask_butterworth(self): im = pyvips.Image.mask_butterworth(128, 128, 2, 0.7, 0.1, nodc=True) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT assert im.min() == pytest.approx(0, abs=0.01) p = im(0, 0) assert p[0] == 0.0 v, x, y = im.maxpos() assert x == 64 assert y == 64 im = pyvips.Image.mask_butterworth(128, 128, 2, 0.7, 0.1, optical=True, uchar=True) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.UCHAR assert im.min() == pytest.approx(0, abs=0.01) p = im(64, 64) assert p[0] == 255 def test_mask_butterworth_ring(self): im = pyvips.Image.mask_butterworth_ring(128, 128, 2, 0.7, 0.1, 0.5, nodc=True) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT p = im(45, 0) assert p[0] == pytest.approx(1.0, abs=0.0001) v, x, y = im.minpos() assert x == 64 assert y == 64 def test_mask_fractal(self): im = pyvips.Image.mask_fractal(128, 128, 2.3) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT def test_mask_gaussian_band(self): im = pyvips.Image.mask_gaussian_band(128, 128, 0.5, 0.5, 0.7, 0.1) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT assert im.max() == pytest.approx(1, abs=0.01) p = im(32, 32) assert p[0] == 1.0 def test_mask_gaussian(self): im = pyvips.Image.mask_gaussian(128, 128, 0.7, 0.1, nodc=True) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT assert im.min() == pytest.approx(0, abs=0.01) p = im(0, 0) assert p[0] == 0.0 def test_mask_gaussian_ring(self): im = pyvips.Image.mask_gaussian_ring(128, 128, 0.7, 0.1, 0.5, nodc=True) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT p = im(45, 0) assert p[0] == pytest.approx(1.0, abs=0.001) def test_mask_ideal_band(self): im = pyvips.Image.mask_ideal_band(128, 128, 0.5, 0.5, 0.7) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT assert im.max() == pytest.approx(1, abs=0.01) p = im(32, 32) assert p[0] == 1.0 def test_mask_ideal(self): im = pyvips.Image.mask_ideal(128, 128, 0.7, nodc=True) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT assert im.min() == pytest.approx(0, abs=0.01) p = im(0, 0) assert p[0] == 0.0 def test_mask_gaussian_ring_2(self): im = pyvips.Image.mask_ideal_ring(128, 128, 0.7, 0.5, nodc=True) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT p = im(45, 0) assert p[0] == pytest.approx(1, abs=0.001) def test_sines(self): im = pyvips.Image.sines(128, 128) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT @pytest.mark.skipif(pyvips.type_find("VipsOperation", "text") == 0, reason="no text, skipping test") def test_text(self): im = pyvips.Image.text("Hello, world!") assert im.width > 10 assert im.height > 10 assert im.bands == 1 assert im.format == pyvips.BandFormat.UCHAR assert im.max() == 255 assert im.min() == 0 # test autofit im = pyvips.Image.text("Hello, world!", width=500, height=500) # quite a large threshold, since we need to work with a huge range of # text rendering systems assert abs(im.width - 500) < 50 def test_tonelut(self): im = pyvips.Image.tonelut() assert im.bands == 1 assert im.format == pyvips.BandFormat.USHORT assert im.width == 32768 assert im.height == 1 assert im.hist_ismonotonic() def test_xyz(self): im = pyvips.Image.xyz(128, 128) assert im.bands == 2 assert im.format == pyvips.BandFormat.UINT assert im.width == 128 assert im.height == 128 p = im(45, 35) assert_almost_equal_objects(p, [45, 35]) def test_zone(self): im = pyvips.Image.zone(128, 128) assert im.width == 128 assert im.height == 128 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT @pytest.mark.skipif(pyvips.type_find("VipsOperation", "worley") == 0, reason="no worley, skipping test") def test_worley(self): im = pyvips.Image.worley(512, 512) assert im.width == 512 assert im.height == 512 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT @pytest.mark.skipif(pyvips.type_find("VipsOperation", "perlin") == 0, reason="no perlin, skipping test") def test_perlin(self): im = pyvips.Image.perlin(512, 512) assert im.width == 512 assert im.height == 512 assert im.bands == 1 assert im.format == pyvips.BandFormat.FLOAT if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test-suite/test_draw.py000066400000000000000000000052761361153320700206470ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : import pytest import pyvips class TestDraw: def test_draw_circle(self): im = pyvips.Image.black(100, 100) im = im.draw_circle(100, 50, 50, 25) pixel = im(25, 50) assert len(pixel) == 1 assert pixel[0] == 100 pixel = im(26, 50) assert len(pixel) == 1 assert pixel[0] == 0 im = pyvips.Image.black(100, 100) im = im.draw_circle(100, 50, 50, 25, fill=True) pixel = im(25, 50) assert len(pixel) == 1 assert pixel[0] == 100 pixel = im(26, 50) assert pixel[0] == 100 pixel = im(24, 50) assert pixel[0] == 0 def test_draw_flood(self): im = pyvips.Image.black(100, 100) im = im.draw_circle(100, 50, 50, 25) im = im.draw_flood(100, 50, 50) im2 = pyvips.Image.black(100, 100) im2 = im2.draw_circle(100, 50, 50, 25, fill=True) diff = (im - im2).abs().max() assert diff == 0 def test_draw_image(self): im = pyvips.Image.black(51, 51) im = im.draw_circle(100, 25, 25, 25, fill=True) im2 = pyvips.Image.black(100, 100) im2 = im2.draw_image(im, 25, 25) im3 = pyvips.Image.black(100, 100) im3 = im3.draw_circle(100, 50, 50, 25, fill=True) diff = (im2 - im3).abs().max() assert diff == 0 def test_draw_line(self): im = pyvips.Image.black(100, 100) im = im.draw_line(100, 0, 0, 100, 0) pixel = im(0, 0) assert len(pixel) == 1 assert pixel[0] == 100 pixel = im(0, 1) assert len(pixel) == 1 assert pixel[0] == 0 def test_draw_mask(self): mask = pyvips.Image.black(51, 51) mask = mask.draw_circle(128, 25, 25, 25, fill=True) im = pyvips.Image.black(100, 100) im = im.draw_mask(200, mask, 25, 25) im2 = pyvips.Image.black(100, 100) im2 = im2.draw_circle(100, 50, 50, 25, fill=True) diff = (im - im2).abs().max() assert diff == 0 def test_draw_rect(self): im = pyvips.Image.black(100, 100) im = im.draw_rect(100, 25, 25, 50, 50, fill=True) im2 = pyvips.Image.black(100, 100) for y in range(25, 75): im2 = im2.draw_line(100, 25, y, 74, y) diff = (im - im2).abs().max() assert diff == 0 def test_draw_smudge(self): im = pyvips.Image.black(100, 100) im = im.draw_circle(100, 50, 50, 25, fill=True) im2 = im.draw_smudge(10, 10, 50, 50) im3 = im.crop(10, 10, 50, 50) im4 = im2.draw_image(im3, 10, 10) diff = (im4 - im).abs().max() assert diff == 0 if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test-suite/test_foreign.py000066400000000000000000001050551361153320700213370ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : import sys import os import shutil import tempfile import pytest import pyvips from helpers import \ JPEG_FILE, SRGB_FILE, MATLAB_FILE, PNG_FILE, TIF_FILE, OME_FILE, \ ANALYZE_FILE, GIF_FILE, WEBP_FILE, EXR_FILE, FITS_FILE, OPENSLIDE_FILE, \ PDF_FILE, SVG_FILE, SVGZ_FILE, SVG_GZ_FILE, GIF_ANIM_FILE, DICOM_FILE, \ BMP_FILE, NIFTI_FILE, ICO_FILE, HEIC_FILE, TRUNCATED_FILE, \ temp_filename, assert_almost_equal_objects, have, skip_if_no class TestForeign: tempdir = None @classmethod def setup_class(cls): cls.tempdir = tempfile.mkdtemp() cls.colour = pyvips.Image.jpegload(JPEG_FILE) cls.mono = cls.colour.extract_band(1).copy() # we remove the ICC profile: the RGB one will no longer be appropriate cls.mono.remove("icc-profile-data") cls.rad = cls.colour.float2rad().copy() cls.rad.remove("icc-profile-data") cls.cmyk = cls.colour.bandjoin(cls.mono) cls.cmyk = cls.cmyk.copy(interpretation=pyvips.Interpretation.CMYK) cls.cmyk.remove("icc-profile-data") im = pyvips.Image.new_from_file(GIF_FILE) cls.onebit = im > 128 @classmethod def teardown_class(cls): shutil.rmtree(cls.tempdir, ignore_errors=True) cls.colour = None cls.mono = None cls.rad = None cls.cmyk = None cls.onebit = None # we have test files for formats which have a clear standard def file_loader(self, loader, test_file, validate): im = pyvips.Operation.call(loader, test_file) validate(im) im = pyvips.Image.new_from_file(test_file) validate(im) def buffer_loader(self, loader, test_file, validate): with open(test_file, 'rb') as f: buf = f.read() im = pyvips.Operation.call(loader, buf) validate(im) im = pyvips.Image.new_from_buffer(buf, "") validate(im) def save_load(self, format, im): x = pyvips.Image.new_temp_file(format) im.write(x) assert im.width == x.width assert im.height == x.height assert im.bands == x.bands max_diff = (im - x).abs().max() assert max_diff == 0 def save_load_file(self, format, options, im, thresh): # yuk! # but we can't set format parameters for pyvips.Image.new_temp_file() filename = temp_filename(self.tempdir, format) im.write_to_file(filename + options) x = pyvips.Image.new_from_file(filename) assert im.width == x.width assert im.height == x.height assert im.bands == x.bands max_diff = (im - x).abs().max() assert max_diff <= thresh x = None def save_load_buffer(self, saver, loader, im, max_diff=0, **kwargs): buf = pyvips.Operation.call(saver, im, **kwargs) x = pyvips.Operation.call(loader, buf) assert im.width == x.width assert im.height == x.height assert im.bands == x.bands assert (im - x).abs().max() <= max_diff def save_buffer_tempfile(self, saver, suf, im, max_diff=0): filename = temp_filename(self.tempdir, suf) buf = pyvips.Operation.call(saver, im) f = open(filename, 'wb') f.write(buf) f.close() x = pyvips.Image.new_from_file(filename) assert im.width == x.width assert im.height == x.height assert im.bands == x.bands assert (im - x).abs().max() <= max_diff def test_vips(self): self.save_load_file(".v", "", self.colour, 0) # check we can save and restore metadata filename = temp_filename(self.tempdir, ".v") self.colour.write_to_file(filename) x = pyvips.Image.new_from_file(filename) before_exif = self.colour.get("exif-data") after_exif = x.get("exif-data") assert len(before_exif) == len(after_exif) for i in range(len(before_exif)): assert before_exif[i] == after_exif[i] x = None @skip_if_no("jpegload") def test_jpeg(self): def jpeg_valid(im): a = im(10, 10) assert_almost_equal_objects(a, [141, 127, 90]) profile = im.get("icc-profile-data") assert len(profile) == 564 assert im.width == 290 assert im.height == 442 assert im.bands == 3 self.file_loader("jpegload", JPEG_FILE, jpeg_valid) self.save_load("%s.jpg", self.mono) self.save_load("%s.jpg", self.colour) self.buffer_loader("jpegload_buffer", JPEG_FILE, jpeg_valid) self.save_load_buffer("jpegsave_buffer", "jpegload_buffer", self.colour, 80) # see if we have exif parsing: our test image has this field x = pyvips.Image.new_from_file(JPEG_FILE) if x.get_typeof("exif-ifd0-Orientation") != 0: # we need a copy of the image to set the new metadata on # otherwise we get caching problems # can set, save and load new orientation x = pyvips.Image.new_from_file(JPEG_FILE) x = x.copy() x.set("orientation", 2) filename = temp_filename(self.tempdir, '.jpg') x.write_to_file(filename) x = pyvips.Image.new_from_file(filename) y = x.get("orientation") assert y == 2 # can remove orientation, save, load again, orientation # has reset x = x.copy() x.remove("orientation") filename = temp_filename(self.tempdir, '.jpg') x.write_to_file(filename) x = pyvips.Image.new_from_file(filename) y = x.get("orientation") assert y == 1 # autorotate load works x = pyvips.Image.new_from_file(JPEG_FILE) x = x.copy() x.set("orientation", 6) filename = temp_filename(self.tempdir, '.jpg') x.write_to_file(filename) x1 = pyvips.Image.new_from_file(filename) x2 = pyvips.Image.new_from_file(filename, autorotate=True) assert x1.width == x2.height assert x1.height == x2.width # sets incorrect orientation, save, load again, orientation # has reset to 1 x = x.copy() x.set("orientation", 256) filename = temp_filename(self.tempdir, '.jpg') x.write_to_file(filename) x = pyvips.Image.new_from_file(filename) y = x.get("orientation") assert y == 1 # can set, save and reload ASCII string fields x = pyvips.Image.new_from_file(JPEG_FILE) x = x.copy() x.set_type(pyvips.GValue.gstr_type, "exif-ifd0-ImageDescription", "hello world") filename = temp_filename(self.tempdir, '.jpg') x.write_to_file(filename) x = pyvips.Image.new_from_file(filename) y = x.get("exif-ifd0-ImageDescription") # can't use == since the string will have an extra " (xx, yy, zz)" # format area at the end assert y.startswith("hello world") # can set, save and reload UTF16 string fields ... pyvips is # utf8, but it will be coded as utf16 and back for the XP* fields x = pyvips.Image.new_from_file(JPEG_FILE) x = x.copy() x.set_type(pyvips.GValue.gstr_type, "exif-ifd0-XPComment", u"йцук") filename = temp_filename(self.tempdir, '.jpg') x.write_to_file(filename) x = pyvips.Image.new_from_file(filename) y = x.get("exif-ifd0-XPComment") # can't use == since the string will have an extra " (xx, yy, zz)" # format area at the end assert y.startswith(u"йцук") # can set/save/load UserComment, a tag which has the # encoding in the first 8 bytes ... though libexif only supports # ASCII for this x = pyvips.Image.new_from_file(JPEG_FILE) x = x.copy() x.set_type(pyvips.GValue.gstr_type, "exif-ifd2-UserComment", "hello world") filename = temp_filename(self.tempdir, '.jpg') x.write_to_file(filename) x = pyvips.Image.new_from_file(filename) y = x.get("exif-ifd2-UserComment") # can't use == since the string will have an extra " (xx, yy, zz)" # format area at the end assert y.startswith("hello world") @skip_if_no("jpegload") def test_truncated(self): # This should open (there's enough there for the header) im = pyvips.Image.new_from_file(TRUNCATED_FILE) # but this should fail with a warning, and knock TRUNCATED_FILE out of # the cache x = im.avg() # now we should open again, but it won't come from cache, it'll reload im = pyvips.Image.new_from_file(TRUNCATED_FILE) # and this should fail with a warning once more x = im.avg() @skip_if_no("pngload") def test_png(self): def png_valid(im): a = im(10, 10) assert_almost_equal_objects(a, [38671.0, 33914.0, 26762.0]) assert im.width == 290 assert im.height == 442 assert im.bands == 3 self.file_loader("pngload", PNG_FILE, png_valid) self.buffer_loader("pngload_buffer", PNG_FILE, png_valid) self.save_load_buffer("pngsave_buffer", "pngload_buffer", self.colour) self.save_load("%s.png", self.mono) self.save_load("%s.png", self.colour) self.save_load_file(".png", "[interlace]", self.colour, 0) self.save_load_file(".png", "[interlace]", self.mono, 0) @skip_if_no("tiffload") def test_tiff(self): def tiff_valid(im): a = im(10, 10) assert_almost_equal_objects(a, [38671.0, 33914.0, 26762.0]) assert im.width == 290 assert im.height == 442 assert im.bands == 3 self.file_loader("tiffload", TIF_FILE, tiff_valid) self.buffer_loader("tiffload_buffer", TIF_FILE, tiff_valid) if pyvips.at_least_libvips(8, 5): self.save_load_buffer("tiffsave_buffer", "tiffload_buffer", self.colour) self.save_load("%s.tif", self.mono) self.save_load("%s.tif", self.colour) self.save_load("%s.tif", self.cmyk) self.save_load("%s.tif", self.onebit) self.save_load_file(".tif", "[squash]", self.onebit, 0) self.save_load_file(".tif", "[miniswhite]", self.onebit, 0) self.save_load_file(".tif", "[squash,miniswhite]", self.onebit, 0) self.save_load_file(".tif", "[profile={0}]".format(SRGB_FILE), self.colour, 0) self.save_load_file(".tif", "[tile]", self.colour, 0) self.save_load_file(".tif", "[tile,pyramid]", self.colour, 0) self.save_load_file(".tif", "[tile,pyramid,compression=jpeg]", self.colour, 80) self.save_load_file(".tif", "[bigtiff]", self.colour, 0) self.save_load_file(".tif", "[compression=jpeg]", self.colour, 80) self.save_load_file(".tif", "[tile,tile-width=256]", self.colour, 10) filename = temp_filename(self.tempdir, '.tif') x = pyvips.Image.new_from_file(TIF_FILE) x = x.copy() x.set("orientation", 2) x.write_to_file(filename) x = pyvips.Image.new_from_file(filename) y = x.get("orientation") assert y == 2 filename = temp_filename(self.tempdir, '.tif') x = pyvips.Image.new_from_file(TIF_FILE) x = x.copy() x.set("orientation", 2) x.write_to_file(filename) x = pyvips.Image.new_from_file(filename) y = x.get("orientation") assert y == 2 x = x.copy() x.remove("orientation") filename = temp_filename(self.tempdir, '.tif') x.write_to_file(filename) x = pyvips.Image.new_from_file(filename) y = x.get("orientation") assert y == 1 filename = temp_filename(self.tempdir, '.tif') x = pyvips.Image.new_from_file(TIF_FILE) x = x.copy() x.set("orientation", 6) x.write_to_file(filename) x1 = pyvips.Image.new_from_file(filename) x2 = pyvips.Image.new_from_file(filename, autorotate=True) assert x1.width == x2.height assert x1.height == x2.width filename = temp_filename(self.tempdir, '.tif') x = pyvips.Image.new_from_file(TIF_FILE) x = x.copy() x.write_to_file(filename, xres=100, yres=200, resunit="cm") x1 = pyvips.Image.new_from_file(filename) assert x1.get("resolution-unit") == "cm" assert x1.xres == 100 assert x1.yres == 200 filename = temp_filename(self.tempdir, '.tif') x = pyvips.Image.new_from_file(TIF_FILE) x = x.copy() x.write_to_file(filename, xres=100, yres=200, resunit="inch") x1 = pyvips.Image.new_from_file(filename) assert x1.get("resolution-unit") == "in" assert x1.xres == 100 assert x1.yres == 200 # OME support in 8.5 x = pyvips.Image.new_from_file(OME_FILE) assert x.width == 439 assert x.height == 167 page_height = x.height x = pyvips.Image.new_from_file(OME_FILE, n=-1) assert x.width == 439 assert x.height == page_height * 15 x = pyvips.Image.new_from_file(OME_FILE, page=1, n=-1) assert x.width == 439 assert x.height == page_height * 14 x = pyvips.Image.new_from_file(OME_FILE, page=1, n=2) assert x.width == 439 assert x.height == page_height * 2 x = pyvips.Image.new_from_file(OME_FILE, n=-1) assert x(0, 166)[0] == 96 assert x(0, 167)[0] == 0 assert x(0, 168)[0] == 1 filename = temp_filename(self.tempdir, '.tif') x.write_to_file(filename) x = pyvips.Image.new_from_file(filename, n=-1) assert x.width == 439 assert x.height == page_height * 15 assert x(0, 166)[0] == 96 assert x(0, 167)[0] == 0 assert x(0, 168)[0] == 1 # pyr save to buffer added in 8.6 x = pyvips.Image.new_from_file(TIF_FILE) buf = x.tiffsave_buffer(tile=True, pyramid=True) filename = temp_filename(self.tempdir, '.tif') x.tiffsave(filename, tile=True, pyramid=True) with open(filename, 'rb') as f: buf2 = f.read() assert len(buf) == len(buf2) a = pyvips.Image.new_from_buffer(buf, "", page=2) b = pyvips.Image.new_from_buffer(buf2, "", page=2) assert a.width == b.width assert a.height == b.height assert a.avg() == b.avg() # region-shrink added in 8.7 x = pyvips.Image.new_from_file(TIF_FILE) buf = x.tiffsave_buffer(tile=True, pyramid=True, region_shrink="mean") buf = x.tiffsave_buffer(tile=True, pyramid=True, region_shrink="mode") buf = x.tiffsave_buffer(tile=True, pyramid=True, region_shrink="median") @skip_if_no("magickload") def test_magickload(self): def bmp_valid(im): a = im(100, 100) assert_almost_equal_objects(a, [227, 216, 201]) assert im.width == 1419 assert im.height == 1001 self.file_loader("magickload", BMP_FILE, bmp_valid) self.buffer_loader("magickload_buffer", BMP_FILE, bmp_valid) # we should have rgb or rgba for svg files ... different versions of # IM handle this differently. GM even gives 1 band. im = pyvips.Image.magickload(SVG_FILE) assert im.bands == 3 or im.bands == 4 or im.bands == 1 # density should change size of generated svg im = pyvips.Image.magickload(SVG_FILE, density='100') width = im.width height = im.height im = pyvips.Image.magickload(SVG_FILE, density='200') # This seems to fail on travis, no idea why, some problem in their IM # perhaps # assert im.width == width * 2 # assert im.height == height * 2 im = pyvips.Image.magickload(GIF_ANIM_FILE) width = im.width height = im.height im = pyvips.Image.magickload(GIF_ANIM_FILE, n=-1) assert im.width == width assert im.height == height * 5 # page/n let you pick a range of pages # 'n' param added in 8.5 if pyvips.at_least_libvips(8, 5): im = pyvips.Image.magickload(GIF_ANIM_FILE) width = im.width height = im.height im = pyvips.Image.magickload(GIF_ANIM_FILE, page=1, n=2) assert im.width == width assert im.height == height * 2 page_height = im.get("page-height") assert page_height == height # should work for dicom im = pyvips.Image.magickload(DICOM_FILE) assert im.width == 128 assert im.height == 128 # some IMs are 3 bands, some are 1, can't really test # assert im.bands == 1 # libvips has its own sniffer for ICO, test that with open(ICO_FILE, 'rb') as f: buf = f.read() im = pyvips.Image.new_from_buffer(buf, "") assert im.width == 16 assert im.height == 16 # added in 8.7 @skip_if_no("magicksave") def test_magicksave(self): # save to a file and load again ... we can't use save_load_file since # we want to make sure we use magickload/save # don't use BMP - GraphicsMagick always adds an alpha # don't use TIF - IM7 will save as 16-bit filename = temp_filename(self.tempdir, ".jpg") self.colour.magicksave(filename) x = pyvips.Image.magickload(filename) assert self.colour.width == x.width assert self.colour.height == x.height assert self.colour.bands == x.bands max_diff = (self.colour - x).abs().max() assert max_diff < 60 self.save_load_buffer("magicksave_buffer", "magickload_buffer", self.colour, 60, format="JPG") # try an animation if have("gifload"): x1 = pyvips.Image.new_from_file(GIF_ANIM_FILE, n=-1) w1 = x1.magicksave_buffer(format="GIF") x2 = pyvips.Image.new_from_buffer(w1, "", n=-1) assert x1.get("delay") == x2.get("delay") assert x1.get("page-height") == x2.get("page-height") # magicks vary in how they handle this ... just pray we are close assert abs(x1.get("gif-loop") - x2.get("gif-loop")) < 5 @skip_if_no("webpload") def test_webp(self): def webp_valid(im): a = im(10, 10) # different webp versions use different rounding systems leading # to small variations assert_almost_equal_objects(a, [71, 166, 236], threshold=2) assert im.width == 550 assert im.height == 368 assert im.bands == 3 self.file_loader("webpload", WEBP_FILE, webp_valid) self.buffer_loader("webpload_buffer", WEBP_FILE, webp_valid) self.save_load_buffer("webpsave_buffer", "webpload_buffer", self.colour, 60) self.save_load("%s.webp", self.colour) # test lossless mode im = pyvips.Image.new_from_file(WEBP_FILE) buf = im.webpsave_buffer(lossless=True) im2 = pyvips.Image.new_from_buffer(buf, "") assert abs(im.avg() - im2.avg()) < 1 # higher Q should mean a bigger buffer b1 = im.webpsave_buffer(Q=10) b2 = im.webpsave_buffer(Q=90) assert len(b2) > len(b1) # try saving an image with an ICC profile and reading it back ... if we # can do it, our webp supports metadata load/save buf = self.colour.webpsave_buffer() im = pyvips.Image.new_from_buffer(buf, "") if im.get_typeof("icc-profile-data") != 0: # verify that the profile comes back unharmed p1 = self.colour.get("icc-profile-data") p2 = im.get("icc-profile-data") assert p1 == p2 # add tests for exif, xmp, ipct # the exif test will need us to be able to walk the header, # we can't just check exif-data # we can test that exif changes change the output of webpsave # first make sure we have exif support z = pyvips.Image.new_from_file(JPEG_FILE) if z.get_typeof("exif-ifd0-Orientation") != 0: x = self.colour.copy() x.set("orientation", 6) buf = x.webpsave_buffer() y = pyvips.Image.new_from_buffer(buf, "") assert y.get("orientation") == 6 # try converting an animated gif to webp ... can't do back to gif # again without IM support if have("gifload"): x1 = pyvips.Image.new_from_file(GIF_ANIM_FILE, n=-1) w1 = x1.webpsave_buffer(Q=10) x2 = pyvips.Image.new_from_buffer(w1, "", n=-1) assert x1.width == x2.width assert x1.height == x2.height assert x1.get("delay") == x2.get("delay") assert x1.get("page-height") == x2.get("page-height") assert x1.get("gif-loop") == x2.get("gif-loop") @skip_if_no("analyzeload") def test_analyzeload(self): def analyze_valid(im): a = im(10, 10) assert pytest.approx(a[0]) == 3335 assert im.width == 128 assert im.height == 8064 assert im.bands == 1 self.file_loader("analyzeload", ANALYZE_FILE, analyze_valid) @skip_if_no("matload") def test_matload(self): def matlab_valid(im): a = im(10, 10) assert_almost_equal_objects(a, [38671.0, 33914.0, 26762.0]) assert im.width == 290 assert im.height == 442 assert im.bands == 3 self.file_loader("matload", MATLAB_FILE, matlab_valid) @skip_if_no("openexrload") def test_openexrload(self): def exr_valid(im): a = im(10, 10) assert_almost_equal_objects(a, [0.124512, 0.159668, 0.040375, 255.0], threshold=0.00001) assert im.width == 610 assert im.height == 406 assert im.bands == 4 self.file_loader("openexrload", EXR_FILE, exr_valid) @skip_if_no("fitsload") def test_fitsload(self): def fits_valid(im): a = im(10, 10) assert_almost_equal_objects(a, [-0.165013, -0.148553, 1.09122, -0.942242], threshold=0.00001) assert im.width == 200 assert im.height == 200 assert im.bands == 4 self.file_loader("fitsload", FITS_FILE, fits_valid) self.save_load("%s.fits", self.mono) @skip_if_no("niftiload") def test_niftiload(self): def nifti_valid(im): a = im(30, 26) assert_almost_equal_objects(a, [131]) assert im.width == 91 assert im.height == 9919 assert im.bands == 1 self.file_loader("niftiload", NIFTI_FILE, nifti_valid) self.save_load("%s.nii.gz", self.mono) @skip_if_no("openslideload") def test_openslideload(self): def openslide_valid(im): a = im(10, 10) assert_almost_equal_objects(a, [244, 250, 243, 255]) assert im.width == 2220 assert im.height == 2967 assert im.bands == 4 self.file_loader("openslideload", OPENSLIDE_FILE, openslide_valid) @skip_if_no("pdfload") def test_pdfload(self): def pdf_valid(im): a = im(10, 10) assert_almost_equal_objects(a, [35, 31, 32, 255]) assert im.width == 1134 assert im.height == 680 assert im.bands == 4 self.file_loader("pdfload", PDF_FILE, pdf_valid) self.buffer_loader("pdfload_buffer", PDF_FILE, pdf_valid) im = pyvips.Image.new_from_file(PDF_FILE) x = pyvips.Image.new_from_file(PDF_FILE, scale=2) assert abs(im.width * 2 - x.width) < 2 assert abs(im.height * 2 - x.height) < 2 im = pyvips.Image.new_from_file(PDF_FILE) x = pyvips.Image.new_from_file(PDF_FILE, dpi=144) assert abs(im.width * 2 - x.width) < 2 assert abs(im.height * 2 - x.height) < 2 @skip_if_no("gifload") def test_gifload(self): def gif_valid(im): a = im(10, 10) assert_almost_equal_objects(a, [33]) assert im.width == 159 assert im.height == 203 assert im.bands == 1 self.file_loader("gifload", GIF_FILE, gif_valid) self.buffer_loader("gifload_buffer", GIF_FILE, gif_valid) # 'n' param added in 8.5 if pyvips.at_least_libvips(8, 5): x1 = pyvips.Image.new_from_file(GIF_ANIM_FILE) x2 = pyvips.Image.new_from_file(GIF_ANIM_FILE, n=2) assert x2.height == 2 * x1.height page_height = x2.get("page-height") assert page_height == x1.height x2 = pyvips.Image.new_from_file(GIF_ANIM_FILE, n=-1) assert x2.height == 5 * x1.height # our test gif has delay 0 for the first frame set in error assert x2.get("delay") == [0, 50, 50, 50, 50] x2 = pyvips.Image.new_from_file(GIF_ANIM_FILE, page=1, n=-1) assert x2.height == 4 * x1.height @skip_if_no("svgload") def test_svgload(self): def svg_valid(im): a = im(10, 10) assert_almost_equal_objects(a, [0, 0, 0, 0]) assert im.width == 736 assert im.height == 552 assert im.bands == 4 self.file_loader("svgload", SVG_FILE, svg_valid) self.buffer_loader("svgload_buffer", SVG_FILE, svg_valid) self.file_loader("svgload", SVGZ_FILE, svg_valid) self.buffer_loader("svgload_buffer", SVGZ_FILE, svg_valid) self.file_loader("svgload", SVG_GZ_FILE, svg_valid) im = pyvips.Image.new_from_file(SVG_FILE) x = pyvips.Image.new_from_file(SVG_FILE, scale=2) assert abs(im.width * 2 - x.width) < 2 assert abs(im.height * 2 - x.height) < 2 im = pyvips.Image.new_from_file(SVG_FILE) x = pyvips.Image.new_from_file(SVG_FILE, dpi=144) assert abs(im.width * 2 - x.width) < 2 assert abs(im.height * 2 - x.height) < 2 def test_csv(self): self.save_load("%s.csv", self.mono) def test_matrix(self): self.save_load("%s.mat", self.mono) @skip_if_no("ppmload") def test_ppm(self): self.save_load("%s.ppm", self.mono) self.save_load("%s.ppm", self.colour) @skip_if_no("radload") def test_rad(self): self.save_load("%s.hdr", self.colour) self.save_buffer_tempfile("radsave_buffer", ".hdr", self.rad, max_diff=0) @skip_if_no("dzsave") def test_dzsave(self): # dzsave is hard to test, there are so many options # test each option separately and hope they all function together # correctly # default deepzoom layout ... we must use png here, since we want to # test the overlap for equality filename = temp_filename(self.tempdir, '') self.colour.dzsave(filename, suffix=".png") # test horizontal overlap ... expect 256 step, overlap 1 x = pyvips.Image.new_from_file(filename + "_files/9/0_0.png") assert x.width == 255 y = pyvips.Image.new_from_file(filename + "_files/9/1_0.png") assert y.width == 37 # the right two columns of x should equal the left two columns of y left = x.crop(x.width - 2, 0, 2, x.height) right = y.crop(0, 0, 2, y.height) assert (left - right).abs().max() == 0 # test vertical overlap assert x.height == 255 y = pyvips.Image.new_from_file(filename + "_files/9/0_1.png") assert y.height == 189 # the bottom two rows of x should equal the top two rows of y top = x.crop(0, x.height - 2, x.width, 2) bottom = y.crop(0, 0, y.width, 2) assert (top - bottom).abs().max() == 0 # there should be a bottom layer x = pyvips.Image.new_from_file(filename + "_files/0/0_0.png") assert x.width == 1 assert x.height == 1 # 9 should be the final layer assert not os.path.isdir(filename + "_files/10") # default google layout filename = temp_filename(self.tempdir, '') self.colour.dzsave(filename, layout="google") # test bottom-right tile ... default is 256x256 tiles, overlap 0 x = pyvips.Image.new_from_file(filename + "/1/1/1.jpg") assert x.width == 256 assert x.height == 256 assert not os.path.exists(filename + "/1/1/2.jpg") assert not os.path.exists(filename + "/2") x = pyvips.Image.new_from_file(filename + "/blank.png") assert x.width == 256 assert x.height == 256 # google layout with overlap ... verify that we clip correctly # overlap 1, 510x510 pixels, 256 pixel tiles, should be exactly 2x2 # tiles, though in fact the bottom and right edges will be white filename = temp_filename(self.tempdir, '') self.colour \ .replicate(2, 2) \ .crop(0, 0, 510, 510) \ .dzsave(filename, layout="google", overlap=1, depth="one") x = pyvips.Image.new_from_file(filename + "/0/1/1.jpg") assert x.width == 256 assert x.height == 256 assert not os.path.exists(filename + "/0/2/2.jpg") # with 511x511, it'll fit exactly into 2x2 -- we we actually generate # 3x3, since we output the overlaps filename = temp_filename(self.tempdir, '') self.colour \ .replicate(2, 2) \ .crop(0, 0, 511, 511) \ .dzsave(filename, layout="google", overlap=1, depth="one") x = pyvips.Image.new_from_file(filename + "/0/2/2.jpg") assert x.width == 256 assert x.height == 256 assert not os.path.exists(filename + "/0/3/3.jpg") # default zoomify layout filename = temp_filename(self.tempdir, '') self.colour.dzsave(filename, layout="zoomify") # 256x256 tiles, no overlap assert os.path.exists(filename + "/ImageProperties.xml") x = pyvips.Image.new_from_file(filename + "/TileGroup0/1-0-0.jpg") assert x.width == 256 assert x.height == 256 # test zip output filename = temp_filename(self.tempdir, '.zip') self.colour.dzsave(filename) assert os.path.exists(filename) assert not os.path.exists(filename + "_files") assert not os.path.exists(filename + ".dzi") # test compressed zip output filename2 = temp_filename(self.tempdir, '.zip') self.colour.dzsave(filename2, compression=-1) assert os.path.exists(filename2) assert os.path.getsize(filename2) < os.path.getsize(filename) # test suffix filename = temp_filename(self.tempdir, '') self.colour.dzsave(filename, suffix=".png") x = pyvips.Image.new_from_file(filename + "_files/9/0_0.png") assert x.width == 255 # test overlap filename = temp_filename(self.tempdir, '') self.colour.dzsave(filename, overlap=200) y = pyvips.Image.new_from_file(filename + "_files/9/1_1.jpeg") assert y.width == 236 # test tile-size filename = temp_filename(self.tempdir, '') self.colour.dzsave(filename, tile_size=512) y = pyvips.Image.new_from_file(filename + "_files/9/0_0.jpeg") assert y.width == 290 assert y.height == 442 # test save to memory buffer filename = temp_filename(self.tempdir, '.zip') base = os.path.basename(filename) root, ext = os.path.splitext(base) self.colour.dzsave(filename) with open(filename, 'rb') as f: buf1 = f.read() buf2 = self.colour.dzsave_buffer(basename=root) assert len(buf1) == len(buf2) # we can't test the bytes are exactly equal -- the timestamps will # be different # added in 8.7 buf = self.colour.dzsave_buffer(region_shrink="mean") buf = self.colour.dzsave_buffer(region_shrink="mode") buf = self.colour.dzsave_buffer(region_shrink="median") @skip_if_no("heifload") def test_heifload(self): def heif_valid(im): a = im(10, 10) # different versions of HEIC decode have slightly different # rounding assert_almost_equal_objects(a, [75.0, 86.0, 81.0], threshold=2) assert im.width == 4032 assert im.height == 3024 assert im.bands == 3 self.file_loader("heifload", HEIC_FILE, heif_valid) self.buffer_loader("heifload_buffer", HEIC_FILE, heif_valid) @skip_if_no("heifsave") def test_heifsave(self): self.save_load_buffer("heifsave_buffer", "heifload_buffer", self.colour, 80) self.save_load("%s.heic", self.colour) # test lossless mode im = pyvips.Image.new_from_file(HEIC_FILE) buf = im.heifsave_buffer(lossless=True) im2 = pyvips.Image.new_from_buffer(buf, "") # not in fact quite lossless assert abs(im.avg() - im2.avg()) < 3 # higher Q should mean a bigger buffer b1 = im.heifsave_buffer(Q=10) b2 = im.heifsave_buffer(Q=90) assert len(b2) > len(b1) # try saving an image with an ICC profile and reading it back # not all libheif have profile support, so put it in an if buf = self.colour.heifsave_buffer() im = pyvips.Image.new_from_buffer(buf, "") p1 = self.colour.get("icc-profile-data") if im.get_typeof("icc-profile-data") != 0: p2 = im.get("icc-profile-data") assert p1 == p2 # add tests for exif, xmp, ipct # the exif test will need us to be able to walk the header, # we can't just check exif-data # libheif 1.1 (on ubuntu 18.04, current LTS) does not support exif # write, so this test is commented out # test that exif changes change the output of heifsave # first make sure we have exif support #z = pyvips.Image.new_from_file(JPEG_FILE) #if z.get_typeof("exif-ifd0-Orientation") != 0: # x = self.colour.copy() # x.set("exif-ifd0-Make", "banana") # buf = x.heifsave_buffer() # y = pyvips.Image.new_from_buffer(buf, "") # assert y.get("exif-ifd0-Make").split(" ")[0] == "banana" if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test-suite/test_histogram.py000066400000000000000000000064661361153320700217110ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : import pytest import pyvips from helpers import JPEG_FILE class TestHistogram: def test_hist_cum(self): im = pyvips.Image.identity() sum = im.avg() * 256 cum = im.hist_cum() p = cum(255, 0) assert p[0] == sum def test_hist_equal(self): im = pyvips.Image.new_from_file(JPEG_FILE) im2 = im.hist_equal() assert im.width == im2.width assert im.height == im2.height assert im.avg() < im2.avg() assert im.deviate() < im2.deviate() def test_hist_ismonotonic(self): im = pyvips.Image.identity() assert im.hist_ismonotonic() def test_hist_local(self): im = pyvips.Image.new_from_file(JPEG_FILE) im2 = im.hist_local(10, 10) assert im.width == im2.width assert im.height == im2.height assert im.avg() < im2.avg() assert im.deviate() < im2.deviate() if pyvips.at_least_libvips(8, 5): im3 = im.hist_local(10, 10, max_slope=3) assert im.width == im3.width assert im.height == im3.height assert im3.deviate() < im2.deviate() def test_hist_match(self): im = pyvips.Image.identity() im2 = pyvips.Image.identity() matched = im.hist_match(im2) assert (im - matched).abs().max() == 0.0 def test_hist_norm(self): im = pyvips.Image.identity() im2 = im.hist_norm() assert (im - im2).abs().max() == 0.0 def test_hist_plot(self): im = pyvips.Image.identity() im2 = im.hist_plot() assert im2.width == 256 assert im2.height == 256 assert im2.format == pyvips.BandFormat.UCHAR assert im2.bands == 1 def test_hist_map(self): im = pyvips.Image.identity() im2 = im.maplut(im) assert (im - im2).abs().max() == 0.0 def test_percent(self): im = pyvips.Image.new_from_file(JPEG_FILE).extract_band(1) pc = im.percent(90) msk = im <= pc n_set = (msk.avg() * msk.width * msk.height) / 255.0 pc_set = 100 * n_set / (msk.width * msk.height) assert pytest.approx(pc_set, 0.5) == 90 def test_hist_entropy(self): im = pyvips.Image.new_from_file(JPEG_FILE).extract_band(1) ent = im.hist_find().hist_entropy() assert pytest.approx(ent, 0.01) == 6.67 def test_stdif(self): im = pyvips.Image.new_from_file(JPEG_FILE) im2 = im.stdif(10, 10) assert im.width == im2.width assert im.height == im2.height # new mean should be closer to target mean assert abs(im.avg() - 128) > abs(im2.avg() - 128) def test_case(self): # slice into two at 128, we should get 50% of pixels in each half x = pyvips.Image.grey(256, 256, uchar=True) index = pyvips.Image.switch([x < 128, x >= 128]) y = index.case([10, 20]) assert y.avg() == 15 # slice into four index = pyvips.Image.switch([ x < 64, x >= 64 and x < 128, x >= 128 and x < 192, x >= 192 ]) assert index.case([10, 20, 30, 40]).avg() == 25 # values over N should use the last value assert index.case([10, 20, 30]).avg() == 22.5 if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test-suite/test_iofuncs.py000066400000000000000000000051411361153320700213470ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : import pytest import pyvips from helpers import assert_equal_objects class TestIofuncs: # test the vips7 filename splitter ... this is very fragile and annoying # code with lots of cases def test_split7(self): def split(path): filename7 = pyvips.path_filename7(path) mode7 = pyvips.path_mode7(path) return [filename7, mode7] cases = [ ["c:\\silly:dir:name\\fr:ed.tif:jpeg:95,,,,c:\\icc\\srgb.icc", ["c:\\silly:dir:name\\fr:ed.tif", "jpeg:95,,,,c:\\icc\\srgb.icc"]], ["I180:", ["I180", ""]], ["c:\\silly:", ["c:\\silly", ""]], ["c:\\program files\\x:hello", ["c:\\program files\\x", "hello"]], ["C:\\fixtures\\2569067123_aca715a2ee_o.jpg", ["C:\\fixtures\\2569067123_aca715a2ee_o.jpg", ""]] ] for case in cases: assert_equal_objects(split(case[0]), case[1]) def test_new_from_image(self): im = pyvips.Image.mask_ideal(100, 100, 0.5, reject=True, optical=True) im2 = im.new_from_image(12) assert im2.width == im.width assert im2.height == im.height assert im2.interpretation == im.interpretation assert im2.format == im.format assert im2.xres == im.xres assert im2.yres == im.yres assert im2.xoffset == im.xoffset assert im2.yoffset == im.yoffset assert im2.bands == 1 assert im2.avg() == 12 im2 = im.new_from_image([1, 2, 3]) assert im2.bands == 3 assert im2.avg() == 2 def test_new_from_memory(self): s = bytearray(200) im = pyvips.Image.new_from_memory(s, 20, 10, 1, 'uchar') assert im.width == 20 assert im.height == 10 assert im.format == 'uchar' assert im.bands == 1 assert im.avg() == 0 im += 10 assert im.avg() == 10 @pytest.mark.skipif(not pyvips.at_least_libvips(8, 5), reason="requires libvips >= 8.5") def test_get_fields(self): im = pyvips.Image.black(10, 10) fields = im.get_fields() # we might add more fields later assert len(fields) > 10 assert fields[0] == 'width' def test_write_to_memory(self): s = bytearray(200) im = pyvips.Image.new_from_memory(s, 20, 10, 1, 'uchar') t = im.write_to_memory() assert s == t if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test-suite/test_morphology.py000066400000000000000000000032421361153320700221000ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : import pytest import pyvips class TestMorphology: def test_countlines(self): im = pyvips.Image.black(100, 100) im = im.draw_line(255, 0, 50, 100, 50) n_lines = im.countlines(pyvips.Direction.HORIZONTAL) assert n_lines == 1 def test_labelregions(self): im = pyvips.Image.black(100, 100) im = im.draw_circle(255, 50, 50, 25, fill=True) mask, opts = im.labelregions(segments=True) assert opts['segments'] == 3 assert mask.max() == 2 def test_erode(self): im = pyvips.Image.black(100, 100) im = im.draw_circle(255, 50, 50, 25, fill=True) im2 = im.erode([[128, 255, 128], [255, 255, 255], [128, 255, 128]]) assert im.width == im2.width assert im.height == im2.height assert im.bands == im2.bands assert im.avg() > im2.avg() def test_dilate(self): im = pyvips.Image.black(100, 100) im = im.draw_circle(255, 50, 50, 25, fill=True) im2 = im.dilate([[128, 255, 128], [255, 255, 255], [128, 255, 128]]) assert im.width == im2.width assert im.height == im2.height assert im.bands == im2.bands assert im2.avg() > im.avg() def test_rank(self): im = pyvips.Image.black(100, 100) im = im.draw_circle(255, 50, 50, 25, fill=True) im2 = im.rank(3, 3, 8) assert im.width == im2.width assert im.height == im2.height assert im.bands == im2.bands assert im2.avg() > im.avg() if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test-suite/test_resample.py000066400000000000000000000176311361153320700215200ustar00rootroot00000000000000# vim: set fileencoding=utf-8 : import pytest import pyvips from helpers import JPEG_FILE, HEIC_FILE, all_formats, have # Run a function expecting a complex image on a two-band image def run_cmplx(fn, image): if image.format == pyvips.BandFormat.FLOAT: new_format = pyvips.BandFormat.COMPLEX elif image.format == pyvips.BandFormat.DOUBLE: new_format = pyvips.BandFormat.DPCOMPLEX else: raise pyvips.Error("run_cmplx: not float or double") # tag as complex, run, revert tagging cmplx = image.copy(bands=1, format=new_format) cmplx_result = fn(cmplx) return cmplx_result.copy(bands=2, format=image.format) def to_polar(image): """Transform image coordinates to polar. The image is transformed so that it is wrapped around a point in the centre. Vertical straight lines become circles or segments of circles, horizontal straight lines become radial spokes. """ # xy image, zero in the centre, scaled to fit image to a circle xy = pyvips.Image.xyz(image.width, image.height) xy -= [image.width / 2.0, image.height / 2.0] scale = min(image.width, image.height) / float(image.width) xy *= 2.0 / scale # to polar, scale vertical axis to 360 degrees index = run_cmplx(lambda x: x.polar(), xy) index *= [1, image.height / 360.0] return image.mapim(index) def to_rectangular(image): """Transform image coordinates to rectangular. The image is transformed so that it is unwrapped from a point in the centre. Circles or segments of circles become vertical straight lines, radial lines become horizontal lines. """ # xy image, vertical scaled to 360 degrees xy = pyvips.Image.xyz(image.width, image.height) xy *= [1, 360.0 / image.height] # to rect, scale to image rect index = run_cmplx(lambda x: x.rect(), xy) scale = min(image.width, image.height) / float(image.width) index *= scale / 2.0 index += [image.width / 2.0, image.height / 2.0] return image.mapim(index) class TestResample: def test_affine(self): im = pyvips.Image.new_from_file(JPEG_FILE) # vsqbs is non-interpolatory, don't test this way for name in ["nearest", "bicubic", "bilinear", "nohalo", "lbb"]: x = im interpolate = pyvips.Interpolate.new(name) for i in range(4): x = x.affine([0, 1, 1, 0], interpolate=interpolate) assert (x - im).abs().max() == 0 def test_reduce(self): im = pyvips.Image.new_from_file(JPEG_FILE) # cast down to 0-127, the smallest range, so we aren't messed up by # clipping im = im.cast(pyvips.BandFormat.CHAR) for fac in [1, 1.1, 1.5, 1.999]: for fmt in all_formats: for kernel in ["nearest", "linear", "cubic", "lanczos2", "lanczos3"]: x = im.cast(fmt) r = x.reduce(fac, fac, kernel=kernel) d = abs(r.avg() - im.avg()) assert d < 2 # try constant images ... should not change the constant for const in [0, 1, 2, 254, 255]: im = (pyvips.Image.black(10, 10) + const).cast("uchar") for kernel in ["nearest", "linear", "cubic", "lanczos2", "lanczos3"]: # print "testing kernel =", kernel # print "testing const =", const shr = im.reduce(2, 2, kernel=kernel) d = abs(shr.avg() - im.avg()) assert d == 0 def test_resize(self): im = pyvips.Image.new_from_file(JPEG_FILE) im2 = im.resize(0.25) # in py3, round() does not round to nearest in the obvious way, so we # have to do it by hand assert im2.width == int(im.width / 4.0 + 0.5) assert im2.height == int(im.height / 4.0 + 0.5) # test geometry rounding corner case im = pyvips.Image.black(100, 1) x = im.resize(0.5) assert x.width == 50 assert x.height == 1 def test_shrink(self): im = pyvips.Image.new_from_file(JPEG_FILE) im2 = im.shrink(4, 4) # in py3, round() does not round to nearest in the obvious way, so we # have to do it by hand assert im2.width == int(im.width / 4.0 + 0.5) assert im2.height == int(im.height / 4.0 + 0.5) assert abs(im.avg() - im2.avg()) < 1 im2 = im.shrink(2.5, 2.5) assert im2.width == int(im.width / 2.5 + 0.5) assert im2.height == int(im.height / 2.5 + 0.5) assert abs(im.avg() - im2.avg()) < 1 @pytest.mark.skipif(not pyvips.at_least_libvips(8, 5), reason="requires libvips >= 8.5") def test_thumbnail(self): im = pyvips.Image.thumbnail(JPEG_FILE, 100) assert im.height == 100 assert im.bands == 3 assert im.bands == 3 # the average shouldn't move too much im_orig = pyvips.Image.new_from_file(JPEG_FILE) assert abs(im_orig.avg() - im.avg()) < 1 # make sure we always get the right width for height in range(440, 1, -13): im = pyvips.Image.thumbnail(JPEG_FILE, height) assert im.height == height # should fit one of width or height im = pyvips.Image.thumbnail(JPEG_FILE, 100, height=300) assert im.width == 100 assert im.height != 300 im = pyvips.Image.thumbnail(JPEG_FILE, 300, height=100) assert im.width != 300 assert im.height == 100 # with @crop, should fit both width and height im = pyvips.Image.thumbnail(JPEG_FILE, 100, height=300, crop=True) assert im.width == 100 assert im.height == 300 im1 = pyvips.Image.thumbnail(JPEG_FILE, 100) with open(JPEG_FILE, 'rb') as f: buf = f.read() im2 = pyvips.Image.thumbnail_buffer(buf, 100) assert abs(im1.avg() - im2.avg()) < 1 if have("heifload"): # this image is orientation 6 ... thumbnail should flip it im = pyvips.Image.new_from_file(HEIC_FILE) thumb = pyvips.Image.thumbnail(HEIC_FILE, 100) # original is landscape assert im.width > im.height # thumb should be portrait assert thumb.width < thumb.height assert thumb.height == 100 def test_similarity(self): im = pyvips.Image.new_from_file(JPEG_FILE) im2 = im.similarity(angle=90) im3 = im.affine([0, -1, 1, 0]) # rounding in calculating the affine transform from the angle stops # this being exactly true assert (im2 - im3).abs().max() < 50 def test_similarity_scale(self): im = pyvips.Image.new_from_file(JPEG_FILE) im2 = im.similarity(scale=2) im3 = im.affine([2, 0, 0, 2]) assert (im2 - im3).abs().max() == 0 # added in 8.7 def test_rotate(self): if have("rotate"): im = pyvips.Image.new_from_file(JPEG_FILE) im2 = im.rotate(90) im3 = im.affine([0, -1, 1, 0]) # rounding in calculating the affine transform from the angle stops # this being exactly true assert (im2 - im3).abs().max() < 50 def test_mapim(self): im = pyvips.Image.new_from_file(JPEG_FILE) p = to_polar(im) r = to_rectangular(p) # the left edge (which is squashed to the origin) will be badly # distorted, but the rest should not be too bad a = r.crop(50, 0, im.width - 50, im.height).gaussblur(2) b = im.crop(50, 0, im.width - 50, im.height).gaussblur(2) assert (a - b).abs().max() < 40 # this was a bug at one point, strangely, if executed with debug # enabled mp = pyvips.Image.xyz(im.width, im.height) interp = pyvips.Interpolate.new('bicubic') assert im.mapim(mp, interpolate=interp).avg() == im.avg() if __name__ == '__main__': pytest.main() libvips-8.9.1/test/test_cli.sh000077500000000000000000000043511361153320700163310ustar00rootroot00000000000000#!/bin/sh # this test is also in test_resample.py (though much smaller and neater) ... # keep this test to exercise the cli interface # set -x . ./variables.sh # verify that the version number on the wrapper script is correct version=$($vips --version) major=$(echo $version | cut -b6- | cut -d. -f1) minor=$(echo $version | cut -b6- | cut -d. -f2) if ! test -f $top_srcdir/tools/vips-$major.$minor; then echo version number in vips wrapper is not correct exit 1 fi # is a difference beyond a threshold? return 0 (meaning all ok) or 1 (meaning # error, or outside threshold) # # use bc since bash does not support fp math break_threshold() { diff=$1 threshold=$2 return $(echo "$diff <= $threshold" | bc -l) } # subtract, look for max difference less than a threshold test_difference() { before=$1 after=$2 threshold=$3 $vips subtract $before $after $tmp/difference.v $vips abs $tmp/difference.v $tmp/abs.v dif=$($vips max $tmp/abs.v) if break_threshold $dif $threshold; then echo "difference is $dif" exit 1 fi } test_rotate() { im=$1 inter=$2 printf "testing $inter ... " # 90 degree clockwise rotate trn="0 1 1 0" $vips affine $im $tmp/t1.v "$trn" --interpolate $inter $vips affine $tmp/t1.v $tmp/t2.v "$trn" --interpolate $inter $vips affine $tmp/t2.v $tmp/t1.v "$trn" --interpolate $inter $vips affine $tmp/t1.v $tmp/t2.v "$trn" --interpolate $inter test_difference $im $tmp/t2.v 1 echo "ok" } # vsqbs is non-interpolatory, don't test this way echo "testing with $(basename $image)" for i in nearest bicubic bilinear nohalo lbb; do test_rotate $image $i done test_thumbnail() { geo=$1 correct_width=$2 correct_height=$3 printf "testing thumbnail -s $geo ... " $vipsthumbnail $image -s "$geo" -o $tmp/t1.jpg width=$($vipsheader -f width $tmp/t1.jpg) height=$($vipsheader -f height $tmp/t1.jpg) if [ $width -ne $correct_width ]; then echo width is $width, not $correct_width exit 1 fi if [ $height -ne $correct_height ]; then echo height is $height, not $correct_height exit 1 fi echo "ok" } test_thumbnail 100 66 100 test_thumbnail 100x100 66 100 test_thumbnail x100 66 100 test_thumbnail "100x100<" 290 442 test_thumbnail "2000<" 1312 2000 test_thumbnail "100x100>" 66 100 test_thumbnail "2000>" 290 442 libvips-8.9.1/test/test_connections.c000066400000000000000000000065171361153320700177170ustar00rootroot00000000000000/* Test stream*u. */ #include #include #include #include #include typedef struct _MyInput { const char *filename; const unsigned char *contents; size_t length; size_t read_position; } MyInput; typedef struct _MyOutput { const char *filename; int fd; } MyOutput; static gint64 read_cb( VipsSourceCustom *source_custom, void *buffer, gint64 length, MyInput *my_input ) { gint64 bytes_read = VIPS_MIN( length, my_input->length - my_input->read_position ); /* printf( "read_cb: buffer = 0x%p, length = %zd\n", buffer, length ); */ memcpy( buffer, my_input->contents + my_input->read_position, bytes_read ); my_input->read_position += bytes_read; return( bytes_read ); } static gint64 seek_cb( VipsSourceCustom *source_custom, gint64 offset, int whence, MyInput *my_input ) { gint64 new_pos; /* printf( "seek_cb: offset = %zd, whence = %d\n", offset, whence ); */ switch( whence ) { case SEEK_SET: new_pos = offset; break; case SEEK_CUR: new_pos = my_input->read_position + offset; break; case SEEK_END: new_pos = my_input->length + offset; break; default: vips_error( "demo", "%s", "bad 'whence'" ); return( -1 ); } my_input->read_position = VIPS_CLIP( 0, new_pos, my_input->length ); return( my_input->read_position ); } static gint64 write_cb( VipsTargetCustom *target_custom, const void *data, gint64 length, MyOutput *my_output ) { gint64 bytes_written; /* printf( "write_cb: data = 0x%p, length = %zd\n", data, length ); */ bytes_written = write( my_output->fd, data, length ); return( bytes_written ); } static void finish_cb( VipsTargetCustom *target_custom, MyOutput *my_output ) { /* printf( "finish_cb:\n" ); */ close( my_output->fd ); my_output->fd = -1; } int main( int argc, char **argv ) { MyInput my_input; MyOutput my_output; VipsSourceCustom *source_custom; VipsTargetCustom *target_custom; VipsImage *image; if( VIPS_INIT( NULL ) ) return( -1 ); if( argc != 3 ) vips_error_exit( "usage: %s in-file out-file.png", argv[0] ); my_input.filename = argv[1]; my_input.contents = NULL; my_input.length = 0; my_input.read_position = 0; if( !g_file_get_contents( my_input.filename, (char **) &my_input.contents, &my_input.length, NULL ) ) vips_error_exit( "unable to load from %s", my_input.filename ); source_custom = vips_source_custom_new(); g_signal_connect( source_custom, "seek", G_CALLBACK( seek_cb ), &my_input ); g_signal_connect( source_custom, "read", G_CALLBACK( read_cb ), &my_input ); if( !(image = vips_image_new_from_source( VIPS_SOURCE( source_custom ), "", "access", VIPS_ACCESS_SEQUENTIAL, NULL )) ) vips_error_exit( NULL ); my_output.filename = argv[2]; my_output.fd = -1; if( (my_output.fd = vips__open( my_output.filename, O_WRONLY | O_CREAT | O_TRUNC, 0644 )) == -1 ) vips_error_exit( "unable to save to %s", my_output.filename ); target_custom = vips_target_custom_new(); g_signal_connect( target_custom, "write", G_CALLBACK( write_cb ), &my_output ); g_signal_connect( target_custom, "finish", G_CALLBACK( finish_cb ), &my_output ); if( vips_image_write_to_target( image, ".png", VIPS_TARGET( target_custom ), NULL ) ) vips_error_exit( NULL ); VIPS_UNREF( image ); VIPS_UNREF( source_custom ); VIPS_UNREF( target_custom ); return( 0 ); } libvips-8.9.1/test/test_connections.sh000077500000000000000000000003561361153320700201050ustar00rootroot00000000000000#!/bin/sh # test load and save via custom connection # set -x set -e . ./variables.sh if test_supported jpegload_source; then ./test_connections $image $tmp/x.png # test max difference < 10 test_difference $image $tmp/x.png 10 fi libvips-8.9.1/test/test_descriptors.c000066400000000000000000000051721361153320700177320ustar00rootroot00000000000000/* Read an image and check that file handles are being closed on minimise. * * This will only work on linux: we signal success and do nothing if /dev/proc * does not exist. */ #include #include #include /* Count the number of files in a directory, -1 for directory not found etc. */ static int count_files( const char *dirname ) { GDir *dir; int n; if( !(dir = g_dir_open( dirname, 0, NULL )) ) return( -1 ); for( n = 0; g_dir_read_name( dir ); n++ ) ; g_dir_close( dir ); return( n ); } int main( int argc, char **argv ) { VipsSource *source; VipsImage *image, *x; char fd_dir[256]; int n_files; double average; if( VIPS_INIT( argv[0] ) ) vips_error_exit( "unable to start" ); if( argc != 2 ) vips_error_exit( "usage: %s test-image", argv[0] ); vips_snprintf( fd_dir, 256, "/proc/%d/fd", getpid() ); n_files = count_files( fd_dir ); if( n_files == -1 ) /* Probably not linux, silent success. */ return( 0 ); /* This is usually 4. stdout / stdin / stderr plus one more made for * us by glib, I think, doing what I don't know. */ /* Opening an image should read the header, then close the fd. */ printf( "** seq open ..\n" ); if( !(source = vips_source_new_from_file( argv[1] )) ) vips_error_exit( NULL ); if( !(image = vips_image_new_from_source( source, "", "access", VIPS_ACCESS_SEQUENTIAL, NULL )) ) vips_error_exit( NULL ); if( count_files( fd_dir ) != n_files ) vips_error_exit( "%s: fd not closed after header read", argv[1] ); /* We should be able to read a chunk near the top, then have the fd * closed again. */ printf( "** crop1, avg ..\n" ); if( vips_crop( image, &x, 0, 0, image->Xsize, 10, NULL ) || vips_avg( x, &average, NULL ) ) vips_error_exit( NULL ); g_object_unref( x ); if( count_files( fd_dir ) != n_files ) vips_error_exit( "%s: fd not closed after first read", argv[1] ); /* We should be able to read again, a little further down, and have * the input restarted and closed again. */ printf( "** crop2, avg ..\n" ); if( vips_crop( image, &x, 0, 20, image->Xsize, 10, NULL ) || vips_avg( x, &average, NULL ) ) vips_error_exit( NULL ); g_object_unref( x ); if( count_files( fd_dir ) != n_files ) vips_error_exit( "%s: fd not closed after second read", argv[1] ); /* Clean up, and we should still just have three open. */ printf( "** unref ..\n" ); g_object_unref( image ); g_object_unref( source ); printf( "** shutdown ..\n" ); vips_shutdown(); if( count_files( fd_dir ) != n_files ) vips_error_exit( "%s: fd not closed after shutdown", argv[1] ); return( 0 ); } libvips-8.9.1/test/test_descriptors.sh000077500000000000000000000011301361153320700201130ustar00rootroot00000000000000#!/bin/sh # test the various restartable loaders # webp and ppm use streams, but they mmap the input, so you can't close() the # fd on minimise # set -x set -e . ./variables.sh if test_supported jpegload_source; then ./test_descriptors $image fi if test_supported pngload_source; then ./test_descriptors $test_images/sample.png fi if test_supported tiffload_source; then ./test_descriptors $test_images/sample.tif fi if test_supported radload_source; then ./test_descriptors $test_images/sample.hdr fi if test_supported svgload_source; then ./test_descriptors $test_images/logo.svg fi libvips-8.9.1/test/test_formats.sh000077500000000000000000000107341361153320700172370ustar00rootroot00000000000000#!/bin/sh # this has now been mostly superseded by test_foreign.py ... keep this around # as a test of the command-line interface # set -x set -e . ./variables.sh # poppler / pdfload reference image poppler=$test_images/blankpage.pdf poppler_ref=$test_images/blankpage.pdf.png # giflib / gifload reference image giflib=$test_images/trans-x.gif giflib_ref=$test_images/trans-x.png # the matlab image and reference image matlab=$test_images/sample.mat matlab_ref=$test_images/sample.png # make a mono image $vips extract_band $image $tmp/mono.v 1 mono=$tmp/mono.v # make a radiance image $vips float2rad $image $tmp/rad.v rad=$tmp/rad.v # make a cmyk image $vips bandjoin "$image $tmp/mono.v" $tmp/t1.v $vips copy $tmp/t1.v $tmp/cmyk.v --interpretation cmyk cmyk=$tmp/cmyk.v # save to t1.format, load as back.v save_load() { in=$1 format=$2 mode=$3 if ! $vips copy $in $tmp/t1.$format$mode ; then echo "write to $out failed" exit 1 fi if ! $vips copy $tmp/t1.$format $tmp/back.v ; then echo "read from $tmp/t1.format failed" echo " (was written by $vips copy $in $tmp/t1.$format$mode)" exit 1 fi } # save to the named file in tmp, convert back to vips again, subtract, look # for max difference less than a threshold test_format() { in=$1 format=$2 threshold=$3 mode=$4 printf "testing $(basename $in) $format$mode ... " save_load $in $format $mode test_difference $in $tmp/back.v $threshold echo "ok" } # as above, but hdr format # this is a coded format, so we need to rad2float before we can test for # differences test_rad() { in=$1 printf "testing $(basename $in) hdr ... " save_load $in hdr $vips rad2float $in $tmp/before.v $vips rad2float $tmp/back.v $tmp/after.v test_difference $tmp/before.v $tmp/after.v 0 echo "ok" } # as above, but raw format # we can't use suffix stuff to pick the load/save test_raw() { in=$1 printf "testing $(basename $in) raw ... " $vips copy $in $tmp/before.v width=$($vipsheader -f width $tmp/before.v) height=$($vipsheader -f height $tmp/before.v) bands=$($vipsheader -f bands $tmp/before.v) $vips rawsave $tmp/before.v $tmp/raw $vips rawload $tmp/raw $tmp/after.v $width $height $bands test_difference $tmp/before.v $tmp/after.v 0 echo "ok" } # a format for which we only have a load (eg. matlab) # pass in a reference file as well and compare to that test_loader() { ref=$1 in=$2 format=$3 thresh=$4 printf "testing $(basename $in) $format ... " $vips copy $ref $tmp/before.v $vips copy $in $tmp/after.v test_difference $tmp/before.v $tmp/after.v $thresh echo "ok" } # a format for which we only have a saver (eg. dzsave) # just run the operation and check exit status test_saver() { oper=$1 in=$2 suffix=$3 printf "testing $oper $(basename $in) $suffix ... " rm -rf $tmp/savertest* cmd="$vips $oper $in $tmp/savertest$suffix" if ! $cmd ; then echo "error executing:" echo " $cmd" exit 1 fi echo "ok" } test_format $image v 0 if test_supported tiffload; then test_format $image tif 0 test_format $image tif 90 [compression=jpeg] test_format $image tif 0 [compression=deflate] test_format $image tif 0 [compression=packbits] test_format $image tif 90 [compression=jpeg,tile] test_format $image tif 90 [compression=jpeg,tile,pyramid] fi if test_supported pngload; then test_format $image png 0 test_format $image png 0 [compression=9,interlace=1] test_format $image png 90 [palette,colours=256,Q=100,dither=0,interlace=1] fi if test_supported jpegload; then test_format $image jpg 90 fi if test_supported webpload; then test_format $image webp 90 fi test_format $image ppm 0 test_format $image pfm 0 if test_supported fitsload; then test_format $image fits 0 fi # csv can only do mono test_format $mono csv 0 # cmyk jpg is a special path if test_supported jpegload; then test_format $cmyk jpg 90 fi if test_supported tiffload; then test_format $cmyk tif 0 test_format $cmyk tif 90 [compression=jpeg] test_format $cmyk tif 90 [compression=jpeg,tile] test_format $cmyk tif 90 [compression=jpeg,tile,pyramid] fi test_rad $rad test_raw $mono test_raw $image if test_supported pdfload; then test_loader $poppler_ref $poppler pdfload 0 fi # don't test SVG --- the output varies too much between librsvg versions if test_supported gifload; then test_loader $giflib_ref $giflib gifload 0 fi if test_supported matload; then test_loader $matlab_ref $matlab matlab 0 fi if test_supported dzsave; then test_saver dzsave $image .zip test_saver copy $image .dz test_saver copy $image .dz[container=zip] fi libvips-8.9.1/test/test_seq.sh000077500000000000000000000021761361153320700163550ustar00rootroot00000000000000#!/bin/sh # set -x . ./variables.sh # make a large PNG, roughly the size of Chicago.png printf "building huge test PNG image ... " $vips replicate $image $tmp/huge.png 30 5 echo "ok" huge=$tmp/huge.png printf "testing vipsthumbnail ... " rm -f $tmp/x.png $vipsthumbnail $huge -o $tmp/x.png if ! $vipsheader $tmp/x.png > /dev/null 2>&1 ; then echo "vipsthumbnail failed in basic mode" exit 1 fi echo "ok" if [ ! -d $tmp/readonly ] ; then mkdir $tmp/readonly chmod ugo-wx $tmp/readonly fi export TMPDIR=$tmp/readonly printf "testing vipsthumbnail does not make temps ... " rm -f $tmp/x.png $vipsthumbnail $huge -o $tmp/x.png if ! $vipsheader $tmp/x.png > /dev/null 2>&1 ; then echo "vipsthumbnail made a temp" exit 1 fi echo "ok" printf "testing shrink does not make temps ... " rm -f $tmp/x.png $vips shrink $huge $tmp/x.png 230 230 if ! $vipsheader $tmp/x.png > /dev/null 2>&1 ; then echo "shrink made a temp" exit 1 fi echo "ok" printf "testing reduce does not make temps ... " rm -f $tmp/x.png $vips reduce $huge $tmp/x.png 3 3 if ! $vipsheader $tmp/x.png > /dev/null 2>&1 ; then echo "reduce made a temp" exit 1 fi echo "ok" libvips-8.9.1/test/test_stall.sh000077500000000000000000000003761361153320700167040ustar00rootroot00000000000000#!/bin/sh # set -x set -e . ./variables.sh if test_supported tiffload; then VIPS_STALL=1 $vips copy $image $tmp/x.tif cat > $tmp/mask.con < 0" | bc) -eq 1 ]; then break fi done if [ $(echo "$max > 0" | bc) -eq 1 ]; then break fi done if [ $(echo "$max > 0" | bc) -eq 1 ]; then echo error, max == $max exit 1 else echo all threading tests passed fi libvips-8.9.1/test/test_thumbnail.sh000077500000000000000000000032401361153320700175410ustar00rootroot00000000000000#!/bin/sh # resize a 1000x1000 image to every size in [100,1000], check for black # see https://github.com/libvips/libvips/issues/131 # set -x . ./variables.sh # make a 1000x1000 mono test image ... add a bit so the image should not # contain any zeros, helps to spot missing tiles and bad pixels echo building test image ... $vips extract_band $image $tmp/t1.v 1 $vips linear $tmp/t1.v $tmp/t2.v 1 20 --uchar $vips replicate $tmp/t2.v $tmp/t1.v 2 2 $vips crop $tmp/t1.v $tmp/t2.v 10 10 1000 1000 # is a difference beyond a threshold? return 0 (meaning all ok) or 1 (meaning # error, or outside threshold) break_threshold() { diff=$1 threshold=$2 return $(echo "$diff > $threshold" | bc -l) } # run the test with VIPS_STALL enabled to stress the seq system export VIPS_STALL=1 size=1000 while [ $size -gt 99 ]; do printf "testing size to $size ... " $vipsthumbnail $tmp/t2.v -o $tmp/t1.v --size $size if [ $($vipsheader -f width $tmp/t1.v) -ne $size ]; then echo $tmp/t1.v failed -- bad size echo output width is $($vipsheader -f width $tmp/t1.v) exit fi if [ $($vipsheader -f height $tmp/t1.v) -ne $size ]; then echo $tmp/t1.v failed -- bad size echo output height is $($vipsheader -f width $tmp/t1.v) exit fi $vips project $tmp/t1.v $tmp/cols.v $tmp/rows.v min=$($vips min $tmp/cols.v) if break_threshold $min 0; then echo $tmp/t1.v failed -- has a black column exit fi min=$($vips min $tmp/rows.v) if break_threshold $min 0; then echo $tmp/t1.v failed -- has a black row exit fi min=$($vips min $tmp/t1.v) if break_threshold $min 0; then echo $tmp/t1.v failed -- has black pixels exit fi echo ok size=$(($size-1)) done libvips-8.9.1/test/variables.sh.in000066400000000000000000000022221361153320700170700ustar00rootroot00000000000000top_srcdir=@TOP_SRCDIR@ PYTHON=@PYTHON@ # we need a different tmp for each script since make can run tests in parallel tmp=$top_srcdir/test/tmp-$$ test_images=$top_srcdir/test/test-suite/images image=$test_images/sample.jpg mkdir -p $tmp vips=$top_srcdir/tools/vips vipsthumbnail=$top_srcdir/tools/vipsthumbnail vipsheader=$top_srcdir/tools/vipsheader # we need bc to use '.' for a decimal separator export LC_NUMERIC=C # test for file format supported test_supported() { format=$1 if $vips $format > /dev/null 2>&1; then result=0 else echo "support for $format not configured, skipping test" result=1 fi return $result } # is a difference beyond a threshold? return 0 (meaning all ok) or 1 (meaning # error, or outside threshold) break_threshold() { diff=$1 threshold=$2 return $(echo "$diff <= $threshold" | bc -l) } # subtract, look for max difference less than a threshold test_difference() { before=$1 after=$2 threshold=$3 $vips subtract $before $after $tmp/difference.v $vips abs $tmp/difference.v $tmp/abs.v dif=$($vips max $tmp/abs.v) if break_threshold $dif $threshold; then echo "save / load difference is $dif" exit 1 fi } libvips-8.9.1/tools/000077500000000000000000000000001361153320700143425ustar00rootroot00000000000000libvips-8.9.1/tools/Makefile.am000066400000000000000000000016731361153320700164050ustar00rootroot00000000000000bin_PROGRAMS = \ vips \ vipsedit \ vipsthumbnail \ vipsheader vips_SOURCES = vips.c vipsedit_SOURCES = vipsedit.c vipsheader_SOURCES = vipsheader.c vipsthumbnail_SOURCES = vipsthumbnail.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ AM_LDFLAGS = @LDFLAGS@ LDADD = @VIPS_CFLAGS@ ${top_builddir}/libvips/libvips.la @VIPS_LIBS@ bin_SCRIPTS = \ light_correct \ shrink_width \ batch_image_convert \ batch_rubber_sheet \ batch_crop \ vipsprofile \ vips-8.9 EXTRA_DIST = \ vipsprofile \ vips-8.9 \ light_correct.in \ shrink_width.in \ batch_image_convert.in \ batch_rubber_sheet.in \ batch_crop.in install-exec-hook: chmod ugo+x ${DESTDIR}${bindir}/light_correct chmod ugo+x ${DESTDIR}${bindir}/shrink_width chmod ugo+x ${DESTDIR}${bindir}/batch_image_convert chmod ugo+x ${DESTDIR}${bindir}/batch_rubber_sheet chmod ugo+x ${DESTDIR}${bindir}/batch_crop chmod ugo+x ${DESTDIR}${bindir}/vipsprofile libvips-8.9.1/tools/batch_crop.in000066400000000000000000000015201361153320700167740ustar00rootroot00000000000000#!/bin/sh # Crop a set of image files # # usage: # # example% batch_crop left top width height image1 image2 etc # # writes output images crop_image1, crop_image2 # default prefix VIPSHOME=${VIPSHOME-@prefix@} name=`basename $0` # check args if [ $# -lt 5 ]; then echo "usage: $name left top width height image1 image2 ..." echo echo "$name writes a new set of images called crop_image1, " echo "crop_image2, etc., each cropped to the specified size" exit 1 fi left=$1 top=$2 width=$3 height=$4 shift 4 # convert each argument for i in $*; do dir=`dirname $i` file=`basename $i` new=$dir/crop_$file echo "Cropping $file as $new ..." if [ -f $new ]; then echo "$new exists, skipping" else $VIPSHOME/bin/vips im_extract_area $i $new $left $top $width $height fi done libvips-8.9.1/tools/batch_image_convert.in000066400000000000000000000017531361153320700206630ustar00rootroot00000000000000#!/bin/sh # Convert a set of image files to new file format # # usage: # # example% batch_image_convert image1 image2 etc # # writes output images image1.* and image2.* where * is the new file type. # default prefix VIPSHOME=${VIPSHOME-@prefix@} name=`basename $0` # check args if [ $# -lt 2 ]; then echo "usage: $name image1 image2 ..." echo echo "$name uses VIPS to convert a group of image files of" echo "any image format into a new group of images all of the same" echo "image format. VIPS can read almost any standard image format" echo "but it can only write VIPS, JPEG, TIFF, PPM/PBM/PGM or PNG." exit 1 fi type=$1 shift # convert each argument for i in $*; do # drop the suffix on the filename base=${i%*.*} echo "Converting $i to $base.$type ..." if [ -f $base.$type ]; then echo "$base.$type already exists skiping $i" else $VIPSHOME/bin/vips im_copy $i $base.$type fi done libvips-8.9.1/tools/batch_rubber_sheet.in000066400000000000000000000014501361153320700205040ustar00rootroot00000000000000#!/bin/sh # Corrects a set of image files for lens distortion using a preprepared # recombination matrix # usage: # # example% batch_rubber_sheet matrix_file image1 image2 .. # # writes output images rsc_image1.v, rsc_image2.v .. # default prefix VIPSHOME=${VIPSHOME-@prefix@} # get name we were run as name=`basename $0` # check args if [ $# -lt 2 ]; then echo "usage: $name matrix image1 image2 ..." echo "writes rsc_image1, rsc_image2, ..." echo echo "$name uses VIPS to correct a set of images for lens distortion" echo "using a matrix calculated by the 'resample' function." exit 1 fi rec=$1 shift # transform each argument for i in $*; do echo "Transforming $i to rsc_$i ..." # bilinear interp., don't wrap edges $VIPSHOME/bin/vips im_transform $i rsc_$i $rec 1 0 done libvips-8.9.1/tools/light_correct.in000066400000000000000000000024271361153320700175270ustar00rootroot00000000000000#!/bin/sh # correct a set of files for illumination errors # usage: # # example% light_correct grey.v im1.v im2.v # # writes output images ic_im1.v and ic_im2.v # default prefix VIPSHOME=${VIPSHOME-@prefix@} # get name we were run as name=$0 bname=`basename $name` # names of our temp files t1=light_correct_temp1 t2=light_correct_temp2 # check args if [ $# -lt 2 ]; then echo "${bname}: usage: $bname ..." exit 1 fi echo "Preparing grey ..." grey=$1 shift # find image size width=`$VIPSHOME/bin/vips im_header_int Xsize $grey` height=`$VIPSHOME/bin/vips im_header_int Ysize $grey` # smooth the grey out $VIPSHOME/bin/vips im_shrink $grey $t1.v 20 20 $VIPSHOME/bin/vips im_resize_linear $t1.v $t2.v $width $height # and make the correction image mean=`$VIPSHOME/bin/vips im_avg $t2.v` $VIPSHOME/bin/vips im_powtra $t2.v $t1.v -1 $VIPSHOME/bin/vips im_lintra $mean $t1.v 0 $t2.v # grey correct images in order for i in "$@"; do echo "Correcting $i as ic_$i ..." $VIPSHOME/bin/vips im_multiply $t2.v "$i" $t1.v $VIPSHOME/bin/vips im_clip $t1.v "ic_$i" # remove the .desc as well name=`echo $name | sed -e 's/\.[^\.]*//'` /bin/rm -f "ic_$name.desc" done # more cleanup echo "Cleaning up ..." /bin/rm -f $t1.v $t1.desc /bin/rm -f $t2.v $t2.desc libvips-8.9.1/tools/shrink_width.in000066400000000000000000000005501361153320700173670ustar00rootroot00000000000000#!/bin/sh # shrink to a target width # default prefix VIPSHOME=${VIPSHOME-@prefix@} name=$0 bname=`basename $0` if [ $# != 3 ]; then echo "${bname}: usage: $bname " exit 1 fi inwidth=`$VIPSHOME/bin/vips im_header_int Xsize $1` factor=`(echo scale=10; echo $inwidth / $3) | bc` $VIPSHOME/bin/vips im_shrink $1 $2 $factor $factor libvips-8.9.1/tools/vips-8.9000077500000000000000000000051211361153320700155640ustar00rootroot00000000000000#!/bin/bash # # Start script for VIPS # need extended regexps, hence we insist on bash above shopt -s extglob # set -x # name we were invoked as bname=`basename $0` # check args if [[ $# < 1 ]]; then echo "usage: $bname [command ...]" echo "examples:" echo " $bname man vipsthumbnail" echo " $bname vips invert /pics/tmp/fred.jpg /pics/tmp/fred2.tif" exit 1 fi # prepend a path component to an environment variable # be careful to avoid trailing : characters if the var is not defined, they # can cause security problems function prepend_var () { # we have to use eval to do double indirection, I think eval value="\$$1" if [ "x$value" = x ]; then export $1=$2 else export $1=$2:$value fi } # try to extract the prefix from a path to an executable # eg. "/home/john/vips/bin/fred" -> "/home/john/vips" function find_prefix () { # try to canonicalise the path ep_canon=$1 # relative path? prefix with pwd if [ ${ep_canon:0:1} != "/" ]; then ep_canon=`pwd`/$ep_canon fi # replace any "/./" with "/" ep_canon=${ep_canon//\/.\//\/} # any "xxx/../" can go ep_canon=${ep_canon//+([^\/])\/..\//} # trailing "xxx/.." can go ep_canon=${ep_canon/%+([^\/])\/../} # remove trailing "/bin/xxx" to get the prefix ep_prefix=${ep_canon/%\/bin\/+([^\/])/} # was there anything to remove in that final step? if not, the path # must be wrong if [ x$ep_prefix == x$ep_canon ]; then return 1 fi echo $ep_prefix; return 0 } # try to guess the install prefix from $0 function guess_prefix () { # $0 is a file? must be us if [ -f $0 ]; then find_prefix $0 return fi # nope, extract program name from $0 and try looking along the # searchpath for it name=`basename $0` fred=$PATH while [ x$fred != x"" ]; do path=${fred/:*/}/$name fred=${fred/*([^:])?(:)/} if [ -f $path ]; then find_prefix $path return fi done # not found on path either ... give up! return 1 } prefix=`guess_prefix`; if [ $? != 0 ]; then echo "unable to find $0 from the file name, or from your PATH" echo "either run directly, or add the install bin area to " echo "your PATH" exit 1 fi export VIPSHOME=$prefix # add VIPSHOME to various paths prepend_var MANPATH $VIPSHOME/share/man case `uname` in HPUX) libvar=SHLIB_PATH ;; Darwin) libvar=DYLD_LIBRARY_PATH ;; *) libvar=LD_LIBRARY_PATH ;; esac prepend_var $libvar $VIPSHOME/lib prepend_var PATH $VIPSHOME/bin prepend_var PKG_CONFIG_PATH $VIPSHOME/lib/pkgconfig prepend_var GI_TYPELIB_PATH $VIPSHOME/lib/girepository-1.0 prepend_var PYTHONPATH $VIPSHOME/lib/python2.7/site-packages # run, passing in args we were passed exec $* libvips-8.9.1/tools/vips.c000066400000000000000000000727621361153320700155050ustar00rootroot00000000000000/* VIPS universal main program. * * J. Cupitt, 8/4/93. * 12/5/06 * - use GOption. g_*_prgname() * 16/7/06 * - hmm, was broken for function name as argv1 case * 11/7/06 * - add "all" option to -l * 14/7/06 * - ignore "--" arguments. * 2/9/06 * - do less init ... im_init_world() does more now * 18/8/06 * - use IM_EXEEXT * 16/10/06 * - add --version * 17/10/06 * - add --swig * - cleanups * - remove --swig again, sigh * - add throw() decls to C++ to help SWIG * 14/1/07 * - add --list packages * 26/2/07 * - add input *VEC arg types to C++ binding * 17/8/08 * - add --list formats * 29/11/08 * - add --list interpolators * 9/2/09 * - and now we just have --list packages/classes/package-name * 13/11/09 * - drop _f postfixes, drop many postfixes * 24/6/10 * - less chatty error messages * - oops, don't rename "copy_set" as "copy_" * 6/2/12 * - long arg names in decls to help SWIG * - don't wrap im_remainderconst_vec() * 31/12/12 * - parse options in two passes (thanks Haida) * 26/11/17 * - remove throw() decls, they are now deprecated everywhere */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define DEBUG_FATAL */ /* Need to disable these sometimes. #undef DEBUG_FATAL */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #ifdef OS_WIN32 #define strcasecmp(a,b) _stricmp(a,b) #endif static char *main_option_plugin = NULL; static gboolean main_option_version; static void * list_class( GType type ) { VipsObjectClass *class = VIPS_OBJECT_CLASS( g_type_class_ref( type ) ); int depth = vips_type_depth( type ); int i; if( class->deprecated ) return( NULL ); if( VIPS_IS_OPERATION_CLASS( class ) && (VIPS_OPERATION_CLASS( class )->flags & VIPS_OPERATION_DEPRECATED) ) return( NULL ); for( i = 0; i < depth * 2; i++ ) printf( " " ); vips_object_print_summary_class( VIPS_OBJECT_CLASS( g_type_class_ref( type ) ) ); return( NULL ); } static void * test_nickname( GType type, void *data ) { const char *nickname = (const char *) data; VipsObjectClass *class; if( (class = VIPS_OBJECT_CLASS( g_type_class_ref( type ) )) && strcmp( class->nickname, nickname ) == 0 ) return( class ); return( NULL ); } static gboolean parse_main_option_list( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { VipsObjectClass *class; if( value && (class = (VipsObjectClass *) vips_type_map_all( g_type_from_name( "VipsObject" ), test_nickname, (void *) value )) ) { vips_type_map_all( G_TYPE_FROM_CLASS( class ), (VipsTypeMapFn) list_class, NULL ); } else if( value ) { vips_error( g_get_prgname(), _( "'%s' is not the name of a vips class" ), value ); vips_error_g( error ); return( FALSE ); } else { vips_type_map_all( g_type_from_name( "VipsOperation" ), (VipsTypeMapFn) list_class, NULL ); } exit( 0 ); } static GOptionEntry main_option[] = { { "list", 'l', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, (GOptionArgFunc) parse_main_option_list, N_( "list objects" ), N_( "BASE-NAME" ) }, { "plugin", 'p', 0, G_OPTION_ARG_FILENAME, &main_option_plugin, N_( "load PLUGIN" ), N_( "PLUGIN" ) }, { "version", 'v', 0, G_OPTION_ARG_NONE, &main_option_version, N_( "print version" ), NULL }, { NULL } }; typedef void *(*map_name_fn)( im_function * ); /* Loop over a package. */ static void * map_package( im_package *pack, map_name_fn fn ) { int i; void *result; for( i = 0; i < pack->nfuncs; i++ ) if( (result = fn( pack->table[i] )) ) return( result ); return( NULL ); } /* Apply a function to a vips operation, or map over a package of operations. */ static void * map_name( const char *name, map_name_fn fn ) { im_package *pack; im_function *func; if( !name || strcmp( name, "all" ) == 0 ) /* Do all packages. */ im_map_packages( (VSListMap2Fn) map_package, fn ); else if( (pack = im_find_package( name )) ) /* Do one package. */ map_package( pack, fn ); else if( (func = im_find_function( name )) ) /* Do a single function. */ fn( func ); else { vips_error( "map_name", _( "no package or function \"%s\"" ), name ); return( fn ); } return( NULL ); } static void * list_package( im_package *pack ) { printf( "%-20s - %d operations\n", pack->name, pack->nfuncs ); return( NULL ); } static void * list_function( im_function *func ) { printf( "%-20s - %s\n", func->name, _( func->desc ) ); return( NULL ); } static int print_list( int argc, char **argv ) { if( !argv[0] || strcmp( argv[0], "packages" ) == 0 ) im_map_packages( (VSListMap2Fn) list_package, NULL ); else if( strcmp( argv[0], "classes" ) == 0 ) vips_type_map_all( g_type_from_name( "VipsObject" ), (VipsTypeMapFn) list_class, NULL ); else if( g_type_from_name( argv[0] ) && g_type_is_a( g_type_from_name( argv[0] ), VIPS_TYPE_OBJECT ) ) { vips_type_map_all( g_type_from_name( argv[0] ), (VipsTypeMapFn) list_class, NULL ); } else { if( map_name( argv[0], list_function ) ) vips_error_exit( "unknown package \"%s\"", argv[0] ); } return( 0 ); } /* Print "ln -s" lines for this package. */ static void * print_links_package( im_package *pack ) { int i; for( i = 0; i < pack->nfuncs; i++ ) printf( "rm -f %s" IM_EXEEXT "; " "ln -s vips" IM_EXEEXT " %s" IM_EXEEXT "\n", pack->table[i]->name, pack->table[i]->name ); return( NULL ); } /* Print "ln -s" lines for this package. */ static int print_links( int argc, char **argv ) { im_map_packages( (VSListMap2Fn) print_links_package, NULL ); return( 0 ); } /* Does a function have any printing output? */ static int has_print( im_function *fn ) { int i; for( i = 0; i < fn->argc; i++ ) if( fn->argv[i].print ) return( -1 ); return( 0 ); } static int isvips( const char *name ) { /* If we're running uninstalled we get the lt- prefix. */ if( vips_isprefix( "lt-", name ) ) name += 3; return( vips_isprefix( "vips", name ) ); } /* Print a usage string from an im_function descriptor. */ static void usage( im_function *fn ) { int i; im_package *pack = im_package_of_function( fn->name ); /* Don't print the prgname if we're being run as a symlink. */ fprintf( stderr, "usage: " ); if( isvips( g_get_prgname() ) ) fprintf( stderr, "%s ", g_get_prgname() ); fprintf( stderr, "%s ", fn->name ); /* Print args requiring command-line input. */ for( i = 0; i < fn->argc; i++ ) if( fn->argv[i].desc->flags & IM_TYPE_ARG ) fprintf( stderr, "%s ", fn->argv[i].name ); /* Print types of command line args. */ fprintf( stderr, "\nwhere:\n" ); for( i = 0; i < fn->argc; i++ ) if( fn->argv[i].desc->flags & IM_TYPE_ARG ) fprintf( stderr, "\t%s is of type \"%s\"\n", fn->argv[i].name, fn->argv[i].desc->type ); /* Print output print args. */ if( has_print( fn ) ) { fprintf( stderr, "prints:\n" ); for( i = 0; i < fn->argc; i++ ) if( fn->argv[i].print ) fprintf( stderr, "\t%s of type \"%s\"\n", fn->argv[i].name, fn->argv[i].desc->type ); } /* Print description of this function, and package it comes from. */ fprintf( stderr, "%s", _( fn->desc ) ); if( pack ) fprintf( stderr, ", from package \"%s\"", pack->name ); fprintf( stderr, "\n" ); /* Print any flags this function has. */ fprintf( stderr, "flags: " ); if( fn->flags & IM_FN_PIO ) fprintf( stderr, "(PIO function) " ); else fprintf( stderr, "(WIO function) " ); if( fn->flags & IM_FN_TRANSFORM ) fprintf( stderr, "(coordinate transformer) " ); else fprintf( stderr, "(no coordinate transformation) " ); if( fn->flags & IM_FN_PTOP ) fprintf( stderr, "(point-to-point operation) " ); else fprintf( stderr, "(area operation) " ); if( fn->flags & IM_FN_NOCACHE ) fprintf( stderr, "(nocache operation) " ); else fprintf( stderr, "(result can be cached) " ); fprintf( stderr, "\n" ); } /* Convert VIPS type name to C++ type name. NULL for type unsupported by C++ * layer. */ static char * vips2cpp( im_type_desc *ty ) { int k; /* VIPS types. */ static char *vtypes[] = { IM_TYPE_DOUBLE, IM_TYPE_INT, IM_TYPE_COMPLEX, IM_TYPE_STRING, IM_TYPE_IMAGE, IM_TYPE_IMASK, IM_TYPE_DMASK, IM_TYPE_DISPLAY, IM_TYPE_IMAGEVEC, IM_TYPE_DOUBLEVEC, IM_TYPE_INTVEC, IM_TYPE_INTERPOLATE }; /* Corresponding C++ types. */ static char *ctypes[] = { "double", "int", "std::complex", "char*", "VImage", "VIMask", "VDMask", "VDisplay", "std::vector", "std::vector", "std::vector", "char*" }; for( k = 0; k < IM_NUMBER( vtypes ); k++ ) if( strcmp( ty->type, vtypes[k] ) == 0 ) return( ctypes[k] ); return( NULL ); } /* Test a function definition for C++ suitability. */ static int is_cppable( im_function *fn ) { int j; /* Don't wrap im_remainderconst_vec(). * * This has been replaced by the saner name im_remainder_vec(). If we * generate wrappers for both names we get a overloading clash. */ if( strcmp( fn->name, "im_remainderconst_vec" ) == 0 ) return( 0 ); /* Check we know all the types. */ for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; if( !vips2cpp( ty ) ) return( 0 ); } /* We dont wrap output IMAGEVEC/DOUBLEVEC/INTVEC. */ for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; if( ty->flags & IM_TYPE_OUTPUT ) if( strcmp( ty->type, IM_TYPE_IMAGEVEC ) == 0 || strcmp( ty->type, IM_TYPE_DOUBLEVEC ) == 0 || strcmp( ty->type, IM_TYPE_INTVEC ) == 0 ) return( 0 ); } /* Must be at least one image argument (input or output) ... since we * get inserted in the VImage class. Other funcs get wrapped by hand. */ for( j = 0; j < fn->argc; j++ ) if( strcmp( fn->argv[j].desc->type, IM_TYPE_IMAGE ) == 0 ) break; if( j == fn->argc ) return( 0 ); return( -1 ); } /* Search for the first output arg, and the first IMAGE input arg. */ static void find_ioargs( im_function *fn, int *ia, int *oa ) { int j; /* Look for first output arg - this will be the result of the * function. */ *oa = -1; for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; if( ty->flags & IM_TYPE_OUTPUT ) { *oa = j; break; } } /* Look for first input IMAGE arg. This will become the implicit * "this" arg. */ *ia = -1; for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; if( !(ty->flags & IM_TYPE_OUTPUT) && strcmp( ty->type, IM_TYPE_IMAGE ) == 0 ) { *ia = j; break; } } } static gboolean drop_postfix( char *str, const char *postfix ) { if( vips_ispostfix( str, postfix ) ) { str[strlen( str ) - strlen( postfix )] = '\0'; return( TRUE ); } return( FALSE ); } /* Turn a VIPS name into a C++ name. Eg. im_lintra_vec becomes lin. */ static void c2cpp_name( const char *in, char *out ) { static const char *dont_drop[] = { "_set", }; static const char *drop[] = { "_vec", "const", "tra", "set", "_f" }; int i; gboolean changed; /* Copy, chopping off "im_" prefix. */ if( vips_isprefix( "im_", in ) ) strcpy( out, in + 3 ); else strcpy( out, in ); /* Repeatedly drop postfixes while we can. Stop if we see a dont_drop * postfix. */ do { gboolean found; found = FALSE; for( i = 0; i < IM_NUMBER( dont_drop ); i++ ) if( vips_ispostfix( out, dont_drop[i] ) ) { found = TRUE; break; } if( found ) break; changed = FALSE; for( i = 0; i < IM_NUMBER( drop ); i++ ) changed |= drop_postfix( out, drop[i] ); } while( changed ); } /* Print prototype for a function (ie. will be followed by code). * * Eg.: * VImage VImage::lin( double a, double b ) */ static void * print_cppproto( im_function *fn ) { int j; char name[4096]; int oa, ia; int flg; /* If it's not cppable, do nothing. */ if( !is_cppable( fn ) ) return( NULL ); /* Make C++ name. */ c2cpp_name( fn->name, name ); /* Find input and output args. */ find_ioargs( fn, &ia, &oa ); /* Print output type. */ if( oa == -1 ) printf( "void " ); else printf( "%s ", vips2cpp( fn->argv[oa].desc ) ); printf( "VImage::%s(", name ); /* Print arg list. */ flg = 0; for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; /* Skip ia and oa. */ if( j == ia || j == oa ) continue; /* Print arg type. */ if( flg ) printf( ", %s", vips2cpp( ty ) ); else { printf( " %s", vips2cpp( ty ) ); flg = 1; } /* If it's an putput arg, print a "&" to make a reference * argument. */ if( ty->flags & IM_TYPE_OUTPUT ) printf( "&" ); /* Print arg name. */ printf( " %s", fn->argv[j].name ); } /* End of arg list! */ if( flg ) printf( " " ); printf( ")\n" ); return( NULL ); } /* Print cpp decl for a function. * * Eg. * VImage lin( double, double ) */ static void * print_cppdecl( im_function *fn ) { int j; char name[4096]; int oa, ia; int flg; /* If it's not cppable, do nothing. */ if( !is_cppable( fn ) ) return( NULL ); /* Make C++ name. */ c2cpp_name( fn->name, name ); /* Find input and output args. */ find_ioargs( fn, &ia, &oa ); if( ia == -1 ) /* No input image, so make it a static in the class * declaration. */ printf( "static " ); /* Print output type. */ if( oa == -1 ) printf( "void " ); else printf( "%s ", vips2cpp( fn->argv[oa].desc ) ); /* Print function name and start arg list. */ printf( "%s(", name ); /* Print arg list. */ flg = 0; for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; /* Skip ia and oa. */ if( j == ia || j == oa ) continue; /* Print arg type. */ if( flg ) printf( ", %s", vips2cpp( ty ) ); else { printf( " %s", vips2cpp( ty ) ); flg = 1; } /* If it's an putput arg, print a "&" to make a reference * argument. */ if( ty->flags & IM_TYPE_OUTPUT ) printf( "&" ); /* Print arg name. * * Prepend the member name to make the arg * unique. This is important for SWIG since it needs to have * unique names for %apply. */ printf( " %s_%s", name, fn->argv[j].name ); } /* End of arg list! */ if( flg ) printf( " " ); printf( ");\n" ); return( NULL ); } static void print_invec( int j, const char *arg, const char *vips_name, const char *c_name, const char *extract ) { printf( "\t((%s*) _vec.data(%d))->n = %s.size();\n", vips_name, j, arg ); printf( "\t((%s*) _vec.data(%d))->vec = new %s[%s.size()];\n", vips_name, j, c_name, arg ); printf( "\tfor( unsigned int i = 0; i < %s.size(); i++ )\n", arg ); printf( "\t\t((%s*) _vec.data(%d))->vec[i] = %s[i]%s;\n", vips_name, j, arg, extract ); } /* Print the definition for a function. */ static void * print_cppdef( im_function *fn ) { int j; int ia, oa; /* If it's not cppable, do nothing. */ if( !is_cppable( fn ) ) return( NULL ); find_ioargs( fn, &ia, &oa ); printf( "// %s: %s\n", fn->name, _( fn->desc ) ); print_cppproto( fn ); printf( "{\n" ); /* Declare the implicit input image. */ if( ia != -1 ) printf( "\tVImage %s = *this;\n", fn->argv[ia].name ); /* Declare return value, if any. */ if( oa != -1 ) printf( "\t%s %s;\n\n", vips2cpp( fn->argv[oa].desc ), fn->argv[oa].name ); /* Declare the arg vector. */ printf( "\tVargv _vec( \"%s\" );\n\n", fn->name ); /* Create the input args. */ for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; /* Images are special - have to init the vector, even * for output args. Have to translate VImage. */ if( strcmp( ty->type, IM_TYPE_IMAGE ) == 0 ) { printf( "\t_vec.data(%d) = %s.image();\n", j, fn->argv[j].name ); continue; } /* For output masks, we have to set an input filename. Not * freed, so constant string is OK. */ if( (ty->flags & IM_TYPE_OUTPUT) && (strcmp( ty->type, IM_TYPE_IMASK ) == 0 || strcmp( ty->type, IM_TYPE_DMASK ) == 0) ) { printf( "\t((im_mask_object*) _vec.data(%d))->name = " "(char*)\"noname\";\n", j ); continue; } /* Skip other output args. */ if( ty->flags & IM_TYPE_OUTPUT ) continue; if( strcmp( ty->type, IM_TYPE_IMASK ) == 0 ) /* Mask types are different - have to use * im_mask_object. */ printf( "\t((im_mask_object*) " "_vec.data(%d))->mask = %s.mask().iptr;\n", j, fn->argv[j].name ); else if( strcmp( ty->type, IM_TYPE_DMASK ) == 0 ) printf( "\t((im_mask_object*) " "_vec.data(%d))->mask = %s.mask().dptr;\n", j, fn->argv[j].name ); else if( strcmp( ty->type, IM_TYPE_DISPLAY ) == 0 ) /* Display have to use VDisplay. */ printf( "\t_vec.data(%d) = %s.disp();\n", j, fn->argv[j].name ); else if( strcmp( ty->type, IM_TYPE_STRING ) == 0 ) /* Zap input strings directly into _vec. */ printf( "\t_vec.data(%d) = (im_object) %s;\n", j, fn->argv[j].name ); else if( strcmp( ty->type, IM_TYPE_IMAGEVEC ) == 0 ) print_invec( j, fn->argv[j].name, "im_imagevec_object", "IMAGE *", ".image()" ); else if( strcmp( ty->type, IM_TYPE_DOUBLEVEC ) == 0 ) print_invec( j, fn->argv[j].name, "im_doublevec_object", "double", "" ); else if( strcmp( ty->type, IM_TYPE_INTVEC ) == 0 ) print_invec( j, fn->argv[j].name, "im_intvec_object", "int", "" ); else if( strcmp( ty->type, IM_TYPE_INTERPOLATE ) == 0 ) { printf( "\tif( vips__input_interpolate_init( " "&_vec.data(%d), %s ) )\n", j, fn->argv[j].name ); printf( "\t\tverror();\n" ); } else /* Just use vips2cpp(). */ printf( "\t*((%s*) _vec.data(%d)) = %s;\n", vips2cpp( ty ), j, fn->argv[j].name ); } /* Call function. */ printf( "\t_vec.call();\n" ); /* Extract output args. */ for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; /* Skip input args. */ if( !(ty->flags & IM_TYPE_OUTPUT) ) continue; /* Skip images (done on input side, really). */ if( strcmp( ty->type, IM_TYPE_IMAGE ) == 0 ) continue; if( strcmp( ty->type, IM_TYPE_IMASK ) == 0 || strcmp( ty->type, IM_TYPE_DMASK ) == 0 ) /* Mask types are different - have to use * im_mask_object. */ printf( "\t%s.embed( (DOUBLEMASK *)((im_mask_object*)" "_vec.data(%d))->mask );\n", fn->argv[j].name, j ); else if( strcmp( ty->type, IM_TYPE_STRING ) == 0 ) /* Strings are grabbed out of the vec. */ printf( "\t%s = (char*) _vec.data(%d);\n", fn->argv[j].name, j ); else /* Just use vips2cpp(). */ printf( "\t%s = *((%s*)_vec.data(%d));\n", fn->argv[j].name, vips2cpp( ty ), j ); } /* Note dependancies if out is an image and this function uses * PIO. */ if( oa != -1 ) { im_type_desc *ty = fn->argv[oa].desc; if( strcmp( ty->type, IM_TYPE_IMAGE ) == 0 && (fn->flags & IM_FN_PIO) ) { /* Loop for all input args again .. */ for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty2 = fn->argv[j].desc; /* Skip output args. */ if( ty2->flags & IM_TYPE_OUTPUT ) continue; /* Input image. */ if( strcmp( ty2->type, IM_TYPE_IMAGE ) == 0 ) printf( "\t%s._ref->addref( " "%s._ref );\n", fn->argv[oa].name, fn->argv[j].name ); else if( strcmp( ty2->type, IM_TYPE_IMAGEVEC ) == 0 ) { /* The out depends on every image in * the input vector. */ printf( "\tfor( unsigned int i = 0; " "i < %s.size(); i++ )\n", fn->argv[j].name ); printf( "\t\t%s._ref->addref( " "%s[i]._ref );\n", fn->argv[oa].name, fn->argv[j].name ); } } } } /* Return result. */ if( oa != -1 ) printf( "\n\treturn( %s );\n", fn->argv[oa].name ); printf( "}\n\n" ); return( NULL ); } /* Print C++ decls for function, package or all. */ static int print_cppdecls( int argc, char **argv ) { printf( "// this file automatically generated from\n" "// VIPS library %s\n", vips_version_string() ); if( map_name( argv[0], print_cppdecl ) ) vips_error_exit( NULL ); return( 0 ); } /* Print C++ bindings for function, package or all. */ static int print_cppdefs( int argc, char **argv ) { printf( "// this file automatically generated from\n" "// VIPS library %s\n", vips_version_string() ); if( map_name( argv[0], print_cppdef ) ) vips_error_exit( NULL ); return( 0 ); } static int print_help( int argc, char **argv ) { return( 0 ); } /* All our built-in actions. */ typedef int (*Action)( int argc, char **argv ); typedef struct _ActionEntry { char *name; char *description; GOptionEntry *group; Action action; } ActionEntry; static GOptionEntry empty_options[] = { { NULL } }; static ActionEntry actions[] = { { "list", N_( "list classes|packages|all|package-name|operation-name" ), &empty_options[0], print_list }, { "cpph", N_( "generate headers for C++ binding" ), &empty_options[0], print_cppdecls }, { "cppc", N_( "generate bodies for C++ binding" ), &empty_options[0], print_cppdefs }, { "links", N_( "generate links for vips/bin" ), &empty_options[0], print_links }, { "help", N_( "list possible actions" ), &empty_options[0], print_help }, }; static void parse_options( GOptionContext *context, int *argc, char **argv ) { char txt[1024]; VipsBuf buf = VIPS_BUF_STATIC( txt ); GError *error = NULL; int i, j; #ifdef DEBUG printf( "parse_options:\n" ); for( i = 0; i < *argc; i++ ) printf( "%d) %s\n", i, argv[i] ); #endif /*DEBUG*/ vips_buf_appendf( &buf, "%7s - %s\n", "OPER", _( "execute vips operation OPER" ) ); g_option_context_set_summary( context, vips_buf_all( &buf ) ); #ifdef HAVE_G_WIN32_GET_COMMAND_LINE if( !g_option_context_parse_strv( context, &argv, &error ) ) #else /*!HAVE_G_WIN32_GET_COMMAND_LINE*/ if( !g_option_context_parse( context, argc, &argv, &error ) ) #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( NULL ); } /* On Windows, argc will not have been updated by * g_option_context_parse_strv(). */ for( *argc = 0; argv[*argc]; (*argc)++ ) ; /* Remove any "--" argument. If one of our arguments is a negative * number, the user will need to have added the "--" flag to stop * GOption parsing. But "--" is still passed down to us and we need to * ignore it. */ for( i = 1; i < *argc; i++ ) if( strcmp( argv[i], "--" ) == 0 ) { for( j = i; j < *argc; j++ ) argv[j] = argv[j + 1]; *argc -= 1; } } static GOptionGroup * add_operation_group( GOptionContext *context, VipsOperation *user_data ) { GOptionGroup *group; group = g_option_group_new( "operation", _( "Operation" ), _( "Operation help" ), user_data, NULL ); g_option_group_set_translation_domain( group, GETTEXT_PACKAGE ); g_option_context_add_group( context, group ); return( group ); } /* VIPS universal main program. */ int main( int argc, char **argv ) { char *action; GOptionContext *context; GOptionGroup *main_group; GOptionGroup *group; VipsOperation *operation; im_function *fn; int i, j; gboolean handled; GError *error = NULL; if( VIPS_INIT( argv[0] ) ) vips_error_exit( NULL ); textdomain( GETTEXT_PACKAGE ); setlocale( LC_ALL, "" ); /* On Windows, argv is ascii-only .. use this to get a utf-8 version of * the args. */ #ifdef HAVE_G_WIN32_GET_COMMAND_LINE argv = g_win32_get_command_line(); #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ #ifdef DEBUG_FATAL /* Set masks for debugging ... stop on any problem. */ g_log_set_always_fatal( G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL | G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING ); #endif /*!DEBUG_FATAL*/ context = g_option_context_new( _( "[ACTION] [OPTIONS] [PARAMETERS] - " "VIPS driver program" ) ); /* Add and parse the outermost options: the ones this program uses. * For example, we need * to be able to spot that in the case of "--plugin ./poop.plg" we * must remove two args. */ main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); g_option_group_add_entries( main_group, main_option ); vips_add_option_entries( main_group ); g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); /* We add more options later, for example as options to vips8 * operations. Ignore any unknown options in this first parse. */ g_option_context_set_ignore_unknown_options( context, TRUE ); /* "vips" with no arguments does "vips --help". */ if( argc == 1 ) { #ifdef HAVE_CONTEXT_GET_HELP char *help; help = g_option_context_get_help( context, TRUE, NULL ); printf( "%s", help ); g_free( help ); #else /* !HAVE_CONTEXT_GET_HELP */ printf( "help not available, your glib is too old\n" ); #endif /* HAVE_CONTEXT_GET_HELP */ exit( 0 ); } /* Also disable help output: we want to be able to display full help * in a second pass after all options have been created. */ g_option_context_set_help_enabled( context, FALSE ); #ifdef HAVE_G_WIN32_GET_COMMAND_LINE if( !g_option_context_parse_strv( context, &argv, &error ) ) #else /*!HAVE_G_WIN32_GET_COMMAND_LINE*/ if( !g_option_context_parse( context, &argc, &argv, &error ) ) #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( NULL ); } /* On Windows, argc will not have been updated by * g_option_context_parse_strv(). */ for( argc = 0; argv[argc]; argc++ ) ; if( main_option_plugin ) { if( !im_load_plugin( main_option_plugin ) ) vips_error_exit( NULL ); } if( main_option_version ) printf( "vips-%s\n", vips_version_string() ); /* Reenable help and unknown option detection ready for the second * option parse. */ g_option_context_set_ignore_unknown_options( context, FALSE ); g_option_context_set_help_enabled( context, TRUE ); /* Try to find our action. */ handled = FALSE; action = NULL; /* Should we try to run the thing we are named as? */ if( !isvips( g_get_prgname() ) ) action = argv[0]; if( !action ) { /* Look for the first non-option argument, if any, and make * that our action. The parse above will have removed most of * them, but --help (for example) could still remain. */ for( i = 1; i < argc; i++ ) if( argv[i][0] != '-' ) { action = argv[i]; /* Remove the action from argv. */ for( j = i; j < argc; j++ ) argv[j] = argv[j + 1]; argc -= 1; break; } } /* Could be one of our built-in actions. */ if( action ) for( i = 0; i < VIPS_NUMBER( actions ); i++ ) if( strcmp( action, actions[i].name ) == 0 ) { group = add_operation_group( context, NULL ); g_option_group_add_entries( group, actions[i].group ); parse_options( context, &argc, argv ); if( actions[i].action( argc - 1, argv + 1 ) ) vips_error_exit( "%s", action ); handled = TRUE; break; } /* Could be a vips7 im_function. We need to test for vips7 first, * since we don't want to use the vips7 compat wrappers in vips8 * unless we have to. They don't support all args types. */ if( action && !handled && (fn = im_find_function( action )) ) { if( im_run_command( action, argc - 1, argv + 1 ) ) { if( argc == 1 ) usage( fn ); else vips_error_exit( NULL ); } handled = TRUE; } /* im_find_function() set an error msg. */ if( action && !handled ) vips_error_clear(); /* Could be a vips8 VipsOperation. */ if( action && !handled && (operation = vips_operation_new( action )) ) { group = add_operation_group( context, operation ); vips_call_options( group, operation ); parse_options( context, &argc, argv ); if( vips_call_argv( operation, argc - 1, argv + 1 ) ) { if( argc == 1 ) vips_operation_class_print_usage( VIPS_OPERATION_GET_CLASS( operation ) ); vips_object_unref_outputs( VIPS_OBJECT( operation ) ); g_object_unref( operation ); if( argc == 1 ) /* We don't exit with an error for something * like "vips fitsload" failing, we use it to * decide if an optional component has been * configured. If we've been built without * fits support, fitsload will fail to find * the operation and we'll error with "unknown * action" below. */ exit( 0 ); else vips_error_exit( NULL ); } vips_object_unref_outputs( VIPS_OBJECT( operation ) ); g_object_unref( operation ); handled = TRUE; } /* vips_operation_new() sets an error msg for unknown operation. */ if( action && !handled ) vips_error_clear(); if( action && !handled ) { vips_error_exit( _( "unknown action \"%s\"" ), action ); } /* Still not handled? We may not have called parse_options(), so * --help args may not have been processed. */ if( !handled ) parse_options( context, &argc, argv ); g_option_context_free( context ); /* We don't free this on error exit, sadly. */ #ifdef HAVE_G_WIN32_GET_COMMAND_LINE g_strfreev( argv ); #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ vips_shutdown(); return( 0 ); } libvips-8.9.1/tools/vipsedit.c000066400000000000000000000171321361153320700163410ustar00rootroot00000000000000/* modify vips file header! - useful for setting resolution, coding... very dangerous! no way of setting non-used codes in variables like newxres so need flags to show new parameter has been set.. boring Copyright K.Martinez 30/6/93 29/7/93 JC -format added - ==0 added to strcmp! 17/11/94 JC - new header fields added 21/10/04 - more header updates 22/8/05 - less-stupid-ified 20/9/05 - rewritten with glib option parser, ready for xml options to go in */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include #include /* We have to represent all header fields as char * so we can spot unset args * safely. */ static char *xsize = NULL; static char *ysize = NULL; static char *bands = NULL; static char *format = NULL; static char *interpretation = NULL; static char *coding = NULL; static char *xres = NULL; static char *yres = NULL; static char *xoffset = NULL; static char *yoffset = NULL; static char *endian = NULL; static gboolean setext = FALSE; static GOptionEntry entries[] = { { "endian", 'n', 0, G_OPTION_ARG_STRING, &endian, N_( "tag file as big or little-endian" ), NULL }, { "width", 'w', 0, G_OPTION_ARG_STRING, &xsize, N_( "set width to N pixels" ), "N" }, { "height", 'h', 0, G_OPTION_ARG_STRING, &ysize, N_( "set height to N pixels" ), "N" }, { "bands", 'b', 0, G_OPTION_ARG_STRING, &bands, N_( "set Bands to N" ), "N" }, { "format", 'f', 0, G_OPTION_ARG_STRING, &format, N_( "set BandFmt to F (eg. uchar, float)" ), "F" }, { "interpretation", 'i', 0, G_OPTION_ARG_STRING, &interpretation, N_( "set interpretation to I (eg. xyz)" ), "I" }, { "coding", 'c', 0, G_OPTION_ARG_STRING, &coding, N_( "set Coding to C (eg. labq)" ), "C" }, { "xres", 'X', 0, G_OPTION_ARG_STRING, &xres, N_( "set Xres to R pixels/mm" ), "R" }, { "yres", 'Y', 0, G_OPTION_ARG_STRING, &yres, N_( "set Yres to R pixels/mm" ), "R" }, { "xoffset", 'u', 0, G_OPTION_ARG_STRING, &xoffset, N_( "set Xoffset to N pixels" ), "N" }, { "yoffset", 'v', 0, G_OPTION_ARG_STRING, &yoffset, N_( "set Yoffset to N pixels" ), "N" }, { "setext", 'e', 0, G_OPTION_ARG_NONE, &setext, N_( "replace extension block with stdin" ), NULL }, { "xsize", 'x', 0, G_OPTION_ARG_STRING, &xsize, N_( "set Xsize to N (deprecated, use width)" ), "N" }, { "ysize", 'y', 0, G_OPTION_ARG_STRING, &ysize, N_( "set Ysize to N (deprecated, use height)" ), "N" }, { "type", 't', 0, G_OPTION_ARG_STRING, &interpretation, N_( "set Type to T (deprecated, use interpretation)" ), "T" }, { NULL } }; static void parse_pint( char *arg, int *out ) { /* Might as well set an upper limit. */ *out = atoi( arg ); if( *out <= 0 || *out > 1000000 ) error_exit( _( "'%s' is not a positive integer" ), arg ); } int main( int argc, char **argv ) { GOptionContext *context; GOptionGroup *main_group; GError *error = NULL; IMAGE *im; unsigned char header[IM_SIZEOF_HEADER]; if( VIPS_INIT( argv[0] ) ) vips_error_exit( "%s", _( "unable to start VIPS" ) ); textdomain( GETTEXT_PACKAGE ); setlocale( LC_ALL, "" ); /* On Windows, argv is ascii-only .. use this to get a utf-8 version of * the args. */ #ifdef HAVE_G_WIN32_GET_COMMAND_LINE argv = g_win32_get_command_line(); #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ context = g_option_context_new( _( "vipsedit - edit vips file header" ) ); main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); g_option_group_add_entries( main_group, entries ); vips_add_option_entries( main_group ); g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); #ifdef HAVE_G_WIN32_GET_COMMAND_LINE if( !g_option_context_parse_strv( context, &argv, &error ) ) #else /*!HAVE_G_WIN32_GET_COMMAND_LINE*/ if( !g_option_context_parse( context, &argc, &argv, &error ) ) #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } exit( -1 ); } /* On Windows, argc will not have been updated by * g_option_context_parse_strv(). */ for( argc = 0; argv[argc]; argc++ ) ; if( argc != 2 ) { fprintf( stderr, _( "usage: %s [OPTION...] vips-file\n" ), g_get_prgname() ); exit( -1 ); } if( !(im = im_init( argv[1] )) || (im->fd = im__open_image_file( im->filename )) == -1 ) error_exit( _( "could not open image %s" ), argv[1] ); if( read( im->fd, header, IM_SIZEOF_HEADER ) != IM_SIZEOF_HEADER || im__read_header_bytes( im, header ) ) error_exit( _( "could not read VIPS header for %s" ), im->filename ); if( endian ) { if( strcmp( endian, "little" ) == 0 ) im->magic = VIPS_MAGIC_INTEL; else if( strcmp( endian, "big" ) == 0 ) im->magic = VIPS_MAGIC_SPARC; else error_exit( _( "bad endian-ness %s, " "should be 'big' or 'little'" ), endian ); } if( xsize ) parse_pint( xsize, &im->Xsize ); if( ysize ) parse_pint( ysize, &im->Ysize ); if( bands ) parse_pint( bands, &im->Bands ); if( format ) { VipsBandFormat f; if( (f = im_char2BandFmt( format )) < 0 ) error_exit( _( "bad format %s" ), format ); im->BandFmt = f; im->Bbits = im_bits_of_fmt( f ); } if( interpretation ) { VipsInterpretation i; if( (i = im_char2Type( interpretation )) < 0 ) error_exit( _( "bad interpretation %s" ), interpretation ); im->Type = i; } if( coding ) { VipsCoding c; if( (c = im_char2Coding( coding )) < 0 ) error_exit( _( "bad coding %s" ), coding ); im->Coding = c; } if( xres ) im->Xres = atof( xres ); if( yres ) im->Yres = atof( yres ); if( xoffset ) im->Xoffset = atoi( xoffset ); if( yoffset ) im->Yoffset = atoi( yoffset ); if( lseek( im->fd, 0, SEEK_SET ) == (off_t) -1 ) error_exit( _( "could not seek on %s" ), im->filename ); if( im__write_header_bytes( im, header ) || im__write( im->fd, header, IM_SIZEOF_HEADER ) ) error_exit( _( "could not write to %s" ), im->filename ); if( setext ) { char *xml; size_t size; if( !(xml = im__file_read( stdin, "stdin", &size )) ) error_exit( "%s", _( "could not get ext data" ) ); /* Strip trailing whitespace ... we can get stray \n at the * end, eg. "echo | editvips --setext fred.v". */ while( size > 0 && isspace( xml[size - 1] ) ) size -= 1; if( im__write_extension_block( im, xml, size ) ) error_exit( "%s", _( "could not set extension" ) ); im_free( xml ); } im_close( im ); /* We don't free this on error exit, sadly. */ #ifdef HAVE_G_WIN32_GET_COMMAND_LINE g_strfreev( argv ); #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ vips_shutdown(); return( 0 ); } libvips-8.9.1/tools/vipsheader.c000066400000000000000000000133201361153320700166370ustar00rootroot00000000000000/* @(#) Command; reads the header of a Vasari picture file. * @(#) Usage: header vasari_file * @(#) * * Copyright: Birkbeck College, History of Art Dept, London, VASARI project. * * Author: Nicos Dessipris * Written on: 17/01/1990 * Modified on : 17/04/1990, 2/6/93 K.Martinez * 16/6/93 JC * - now calls im_mmapin instead of bizzare bogosity * 1/6/95 JC * - extra field argument for testing particular bits of the header * 29/10/98 JC * - now uses im_open() * 24/5/01 JC * - uses im_tiff2vips_header() etc., for speed * 7/5/03 JC * - uses im_open_header() * 1/8/05 * - uses new header API, for great smallness * 4/8/05 * - back to plain im_open() now that's lazy enough for us * 9/9/05 * - display meta fields in save format, if possible * 20/9/05 * - new field name "getext" reads extension block * 24/8/06 * - use GOption, loop over args * 4/1/07 * - use im_history_get() * 29/2/08 * - don't stop on error * 23/7/09 * - ... but do return an error code if anything failed * 6/11/09 * - added im_history_get(), im_getexp(), im_printdesc() as wrapped * functions, so "header" is now obsolete * 27/2/13 * - convert to vips8 API */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include static char *main_option_field = NULL; static gboolean main_option_all = FALSE; static GOptionEntry main_option[] = { { "all", 'a', 0, G_OPTION_ARG_NONE, &main_option_all, N_( "show all fields" ), NULL }, { "field", 'f', 0, G_OPTION_ARG_STRING, &main_option_field, N_( "print value of FIELD (\"getext\" reads extension block, " "\"Hist\" reads image history)" ), "FIELD" }, { NULL } }; /* A non-fatal error. Print the vips error buffer and continue. */ static void print_error( void ) { fprintf( stderr, "%s: %s", g_get_prgname(), vips_error_buffer() ); vips_error_clear(); } static void * print_field_fn( VipsImage *image, const char *field, GValue *value, void *a ) { gboolean *many = (gboolean *) a; char str[256]; VipsBuf buf = VIPS_BUF_STATIC( str ); if( *many ) printf( "%s: ", image->filename ); printf( "%s: ", field ); vips_buf_appendgv( &buf, value ); printf( "%s\n", vips_buf_all( &buf ) ); return( NULL ); } /* Print header, or parts of header. */ static int print_header( VipsImage *im, gboolean many ) { if( !main_option_field ) { printf( "%s: ", im->filename ); vips_object_print_summary( VIPS_OBJECT( im ) ); if( main_option_all ) (void) vips_image_map( im, print_field_fn, &many ); } else if( strcmp( main_option_field, "getext" ) == 0 ) { if( vips__has_extension_block( im ) ) { void *buf; int size; if( !(buf = vips__read_extension_block( im, &size )) ) return( -1 ); printf( "%s", (char *) buf ); g_free( buf ); } } else if( strcmp( main_option_field, "Hist" ) == 0 ) printf( "%s", vips_image_get_history( im ) ); else { char *str; if( vips_image_get_as_string( im, main_option_field, &str ) ) return( -1 ); printf( "%s\n", str ); g_free( str ); } return( 0 ); } int main( int argc, char *argv[] ) { GOptionContext *context; GOptionGroup *main_group; GError *error = NULL; int i; int result; if( VIPS_INIT( argv[0] ) ) vips_error_exit( "unable to start VIPS" ); textdomain( GETTEXT_PACKAGE ); setlocale( LC_ALL, "" ); /* On Windows, argv is ascii-only .. use this to get a utf-8 version of * the args. */ #ifdef HAVE_G_WIN32_GET_COMMAND_LINE argv = g_win32_get_command_line(); #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ context = g_option_context_new( _( "- print image header" ) ); main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); g_option_group_add_entries( main_group, main_option ); vips_add_option_entries( main_group ); g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); #ifdef HAVE_G_WIN32_GET_COMMAND_LINE if( !g_option_context_parse_strv( context, &argv, &error ) ) #else /*!HAVE_G_WIN32_GET_COMMAND_LINE*/ if( !g_option_context_parse( context, &argc, &argv, &error ) ) #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( "try \"%s --help\"", g_get_prgname() ); } g_option_context_free( context ); result = 0; for( i = 1; argv[i]; i++ ) { VipsImage *im; if( !(im = vips_image_new_from_file( argv[i], NULL )) ) { print_error(); result = 1; } if( im && print_header( im, argv[2] != NULL ) ) { print_error(); result = 1; } if( im ) g_object_unref( im ); } /* We don't free this on error exit, sadly. */ #ifdef HAVE_G_WIN32_GET_COMMAND_LINE g_strfreev( argv ); #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ vips_shutdown(); return( result ); } libvips-8.9.1/tools/vipsprofile000066400000000000000000000316111361153320700166310ustar00rootroot00000000000000#!/usr/bin/python from __future__ import division from __future__ import print_function import re import cairo from io import open class ReadFile: def __init__(self, filename): self.filename = filename def __enter__(self): self.f = open(self.filename, 'r', encoding='utf-8') self.lineno = 0 self.getnext(); return self def __exit__(self, type, value, traceback): self.f.close() def __bool__(self): return self.line != "" __nonzero__ = __bool__ def getnext(self): self.lineno += 1 self.line = self.f.readline() def read_times(rf): times = [] while True: match = re.match('[+-]?[0-9]+ ', rf.line) if not match: break times += [int(x) for x in re.split(' ', rf.line.rstrip())] rf.getnext() return times[::-1] class Thread: thread_number = 0 def __init__(self, thread_name): # no one cares about the thread address match = re.match(r'(.*) \(0x.*?\) (.*)', thread_name) if match: thread_name = match.group(1) + " " + match.group(2) self.thread_name = thread_name self.thread_number = Thread.thread_number self.all_events = [] self.workwait_events = [] self.memory_events = [] self.other_events = [] Thread.thread_number += 1 all_events = [] class Event: def __init__(self, thread, gate_location, gate_name, start, stop): self.thread = thread self.gate_location = gate_location self.gate_name = gate_name self.work = False self.wait = False self.memory = False if gate_location == "memory": self.memory = True elif re.match('.*work.*', gate_name): self.work = True elif re.match('.*wait.*', gate_name): self.wait = True if self.memory: self.start = start self.stop = start self.size = stop else: self.start = start self.stop = stop thread.all_events.append(self) all_events.append(self) if self.wait or self.work: thread.workwait_events.append(self) elif self.memory: thread.memory_events.append(self) else: thread.other_events.append(self) input_filename = 'vips-profile.txt' thread_id = 0 threads = [] n_events = 0 print('reading from', input_filename) with ReadFile(input_filename) as rf: while rf: if rf.line.rstrip() == "": rf.getnext() continue if rf.line[0] == "#": rf.getnext() continue match = re.match('thread: (.*)', rf.line) if not match: print('parse error line %d, expected "thread"' % rf.lineno) thread_name = match.group(1) + " " + str(thread_id) thread_id += 1 thread = Thread(thread_name) threads.append(thread) rf.getnext() while True: match = re.match('^gate: (.*?)(: (.*))?$', rf.line) if not match: break gate_location = match.group(1) gate_name = match.group(3) rf.getnext() match = re.match('start:', rf.line) if not match: continue rf.getnext() start = read_times(rf) match = re.match('stop:', rf.line) if not match: continue rf.getnext() stop = read_times(rf) if len(start) != len(stop): print('start and stop length mismatch') for a, b in zip(start, stop): Event(thread, gate_location, gate_name, a, b) n_events += 1 for thread in threads: thread.all_events.sort(key=lambda x: x.start) thread.workwait_events.sort(key=lambda x: x.start) thread.memory_events.sort(key=lambda x: x.start) thread.other_events.sort(key=lambda x: x.start) all_events.sort(key=lambda x: x.start) print('loaded %d events' % n_events) # move time axis to secs of computation ticks_per_sec = 1000000.0 first_time = all_events[0].start last_time = 0 for event in all_events: if event.start < first_time: first_time = event.start if event.stop > last_time: last_time = event.stop for event in all_events: event.start = (event.start - first_time) / ticks_per_sec event.stop = (event.stop - first_time) / ticks_per_sec last_time = (last_time - first_time) / ticks_per_sec first_time = 0 print('total time =', last_time) # calculate some simple stats for thread in threads: thread.start = last_time thread.stop = 0 thread.wait = 0 thread.work = 0 thread.mem = 0 thread.peak_mem = 0 for event in thread.all_events: if event.start < thread.start: thread.start = event.start if event.stop > thread.stop: thread.stop = event.stop if event.wait: thread.wait += event.stop - event.start if event.work: thread.work += event.stop - event.start if event.memory: thread.mem += event.size if thread.mem > thread.peak_mem: thread.peak_mem = thread.mem thread.alive = thread.stop - thread.start # hide very short-lived threads thread.hide = thread.alive < 0.01 print('name\t\talive\twait%\twork%\tunkn%\tmemory\tpeakm') for thread in threads: if thread.hide: continue wait_percent = 100 * thread.wait / thread.alive work_percent = 100 * thread.work / thread.alive unkn_percent = 100 - 100 * (thread.work + thread.wait) / thread.alive print('%13s\t%6.2g\t' % (thread.thread_name, thread.alive), end=' ') print('%.3g\t%.3g\t%.3g\t' % (wait_percent, work_percent, unkn_percent), end=' ') print('%.3g\t' % (thread.mem / (1024 * 1024)), end=' ') print('%.3g\t' % (thread.peak_mem / (1024 * 1024))) mem = 0 peak_mem = 0 for event in all_events: if event.memory: mem += event.size if mem > peak_mem: peak_mem = mem print('peak memory = %.3g MB' % (peak_mem / (1024 * 1024))) if mem != 0: print('leak! final memory = %.3g MB' % (mem / (1024 * 1024))) # does a list of events contain an overlap? # assume the list of events has been sorted by start time def events_overlap(events): for i in range(0, len(events) - 1): # we can't just test for stop1 > start2 since one (or both) events # might have duration zero event1 = events[i] event2 = events[i + 1] overlap_start = max(event1.start, event2.start) overlap_stop = min(event1.stop, event2.stop) if overlap_stop - overlap_start > 0: return True return False # do the events on two gates overlap? def gates_overlap(events, gate_name1, gate_name2): merged = [] for event in events: if event.gate_name == gate_name1 or event.gate_name == gate_name2: merged.append(event) merged.sort(key=lambda x: x.start) return events_overlap(merged) # allocate a y position for each gate total_y = 0 for thread in threads: if thread.hide: continue thread.total_y = total_y gate_positions = {} # first pass .. move work and wait events to y == 0 if events_overlap(thread.workwait_events): print('gate overlap on thread', thread.thread_name) for i in range(0, len(thread.workwait_events) - 1): event1 = thread.workwait_events[i] event2 = thread.workwait_events[i + 1] overlap_start = max(event1.start, event2.start) overlap_stop = min(event1.stop, event2.stop) if overlap_stop - overlap_start > 0: print('overlap:') print('event', event1.gate_location, event1.gate_name, end=' ') print('starts at', event1.start, 'stops at', event1.stop) print('event', event2.gate_location, event2.gate_name, end=' ') print('starts at', event2.start, 'stops at', event2.stop) for event in thread.workwait_events: gate_positions[event.gate_name] = 0 event.y = 0 event.total_y = total_y for event in thread.memory_events: gate_positions[event.gate_name] = 0 event.y = 0 event.total_y = total_y # second pass: move all other events to non-overlapping ys y = 1 for event in thread.other_events: if not event.gate_name in gate_positions: # look at all the ys we've allocated previously and see if we can # add this gate to one of them for gate_y in range(1, y): found_overlap = False for gate_name in gate_positions: if gate_positions[gate_name] != gate_y: continue if gates_overlap(thread.other_events, event.gate_name, gate_name): found_overlap = True break if not found_overlap: gate_positions[event.gate_name] = gate_y break # failure? add a new y if not event.gate_name in gate_positions: gate_positions[event.gate_name] = y y += 1 event.y = gate_positions[event.gate_name] # third pass: flip the order of the ys to get the lowest-level ones at the # top, next to the wait/work line for event in thread.other_events: event.y = y - event.y event.total_y = total_y + event.y total_y += y PIXELS_PER_SECOND = 1000 PIXELS_PER_GATE = 20 LEFT_BORDER = 130 BAR_HEIGHT = 5 MEM_HEIGHT = 100 WIDTH = int(LEFT_BORDER + last_time * PIXELS_PER_SECOND) + 20 HEIGHT = int(total_y * PIXELS_PER_GATE) + MEM_HEIGHT + 30 output_filename = "vips-profile.svg" print('writing to', output_filename) surface = cairo.SVGSurface(output_filename, WIDTH, HEIGHT) ctx = cairo.Context(surface) ctx.select_font_face('Sans') ctx.set_font_size(15) ctx.rectangle(0, 0, WIDTH, HEIGHT) ctx.set_source_rgba(0.0, 0.0, 0.3, 1.0) ctx.fill() def draw_event(ctx, event): left = event.start * PIXELS_PER_SECOND + LEFT_BORDER top = event.total_y * PIXELS_PER_GATE + BAR_HEIGHT // 2 width = (event.stop - event.start) * PIXELS_PER_SECOND height = BAR_HEIGHT if event.memory: width = 1 height /= 2 top += BAR_HEIGHT ctx.rectangle(left, top, width, height) if event.wait: ctx.set_source_rgb(0.9, 0.1, 0.1) elif event.work: ctx.set_source_rgb(0.1, 0.9, 0.1) elif event.memory: ctx.set_source_rgb(1.0, 1.0, 1.0) else: ctx.set_source_rgb(0.1, 0.1, 0.9) ctx.fill() if not event.wait and not event.work and not event.memory: xbearing, ybearing, twidth, theight, xadvance, yadvance = \ ctx.text_extents(event.gate_name) ctx.move_to(left + width // 2 - twidth // 2, top + 3 * BAR_HEIGHT) ctx.set_source_rgb(1.00, 0.83, 0.00) ctx.show_text(event.gate_name) for thread in threads: if thread.hide: continue ctx.rectangle(0, thread.total_y * PIXELS_PER_GATE, WIDTH, 1) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.fill() xbearing, ybearing, twidth, theight, xadvance, yadvance = \ ctx.text_extents(thread.thread_name) ctx.move_to(0, theight + thread.total_y * PIXELS_PER_GATE + BAR_HEIGHT // 2) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.show_text(thread.thread_name) for event in thread.all_events: draw_event(ctx, event) memory_y = total_y * PIXELS_PER_GATE label = "memory" xbearing, ybearing, twidth, theight, xadvance, yadvance = \ ctx.text_extents(label) ctx.move_to(0, memory_y + theight + 8) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.show_text(label) mem = 0 ctx.move_to(LEFT_BORDER, memory_y + MEM_HEIGHT) for event in all_events: if event.memory: mem += event.size left = LEFT_BORDER + event.start * PIXELS_PER_SECOND top = memory_y + MEM_HEIGHT - (MEM_HEIGHT * mem / peak_mem) ctx.line_to(left, top) ctx.set_line_width(1) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.stroke() axis_y = total_y * PIXELS_PER_GATE + MEM_HEIGHT ctx.rectangle(LEFT_BORDER, axis_y, last_time * PIXELS_PER_SECOND, 1) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.fill() label = "time" xbearing, ybearing, twidth, theight, xadvance, yadvance = \ ctx.text_extents(label) ctx.move_to(0, axis_y + theight + 8) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.show_text(label) for t in range(0, int(last_time * PIXELS_PER_SECOND), PIXELS_PER_SECOND // 10): left = t + LEFT_BORDER top = axis_y ctx.rectangle(left, top, 1, 5) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.fill() label = str(t / PIXELS_PER_SECOND) xbearing, ybearing, twidth, theight, xadvance, yadvance = \ ctx.text_extents(label) ctx.move_to(left - twidth // 2, top + theight + 8) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.show_text(label) surface.finish() libvips-8.9.1/tools/vipsthumbnail.c000066400000000000000000000310711361153320700173750ustar00rootroot00000000000000/* VIPS thumbnailer * * 11/1/09 * * 13/1/09 * - decode labq and rad images * - colour management * - better handling of tiny images * 25/1/10 * - added "--delete" * 6/2/10 * - added "--interpolator" * - added "--nosharpen" * - better 'open' logic, test lazy flag now * 13/5/10 * - oops hehe residual sharpen test was reversed * - and the mask coefficients were messed up * 26/5/10 * - delete failed if there was a profile * 4/7/10 * - oops sharpening was turning off for integer shrinks, thanks Nicolas * 30/7/10 * - use new "rd" mode rather than our own open via disc * 8/2/12 * - use :seq mode for png images * - shrink to a scanline cache to ensure we request pixels sequentially * from the input * 13/6/12 * - update the sequential stuff to the general method * 21/6/12 * - remove "--nodelete" option, have a --delete option instead, off by * default * - much more gentle extra sharpening * 13/11/12 * - allow absolute paths in -o (thanks fuho) * 3/5/13 * - add optional sharpening mask from file * 10/7/13 * - rewrite for vips8 * - handle embedded jpeg thumbnails * 12/11/13 * - add --linear option * 18/12/13 * - add --crop option * 5/3/14 * - copy main image metadata to embedded thumbnails, thanks ottob * 6/3/14 * - add --rotate flag * 7/3/14 * - remove the embedded thumbnail reader, embedded thumbnails are too * unlike the main image wrt. rotation / colour / etc. * 30/6/14 * - fix interlaced thumbnail output, thanks lovell * 3/8/14 * - box shrink less, use interpolator more, if window_size is large * enough * - default to bicubic if available * - add an anti-alias filter between shrink and affine * - support CMYK * - use SEQ_UNBUF for a memory saving * 12/9/14 * - try with embedded profile first, if that fails retry with fallback * profile * 13/1/15 * - exit with an error code if one or more conversions failed * 20/1/15 * - rename -o as -f, keep -o as a hidden flag * 9/5/15 * - use vips_resize() instead of our own code * - premultiply alpha * 30/7/15 * - warn if you autorot and there's no exif support * 9/2/16 * - add PDF --size support * - add SVG --size support * 28/2/16 * - add webp --shrink support * 29/2/16 * - deprecate sharpen and interpolate * 6/5/16 * - restore BandFmt after unpremultiply * 23/5/16 * - no need to guess max-alpha now premultiply does this for us * 1/8/16 * - use scRGB as the working space in linear mode * 15/8/16 * - can now remove 0.1 rounding adjustment * 2/11/16 * - use vips_thumbnail(), most code moved there * 6/1/17 * - fancy geometry strings * - support VipSize restrictions * 4/5/17 * - add ! geo modifier * 30/8/17 * - add --intent * 23/10/17 * - --size Nx didn't work, argh ... thanks jrochkind */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include /* Default settings. We change the default to bicubic in main() if * this vips has been compiled with bicubic support. */ static char *thumbnail_size = "128"; static int thumbnail_width = 128; static int thumbnail_height = 128; static VipsSize size_restriction = VIPS_SIZE_BOTH; static char *output_format = "tn_%s.jpg"; static char *export_profile = NULL; static char *import_profile = NULL; static gboolean delete_profile = FALSE; static gboolean linear_processing = FALSE; static gboolean crop_image = FALSE; static char *smartcrop_image = NULL; static gboolean rotate_image = FALSE; static char *thumbnail_intent = NULL; /* Deprecated and unused. */ static gboolean nosharpen = FALSE; static gboolean nodelete_profile = FALSE; static gboolean verbose = FALSE; static char *convolution_mask = NULL; static char *interpolator = NULL; static GOptionEntry options[] = { { "size", 's', 0, G_OPTION_ARG_STRING, &thumbnail_size, N_( "shrink to SIZE or to WIDTHxHEIGHT" ), N_( "SIZE" ) }, { "output", 'o', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &output_format, N_( "set output to FORMAT" ), N_( "FORMAT" ) }, { "format", 'f', 0, G_OPTION_ARG_STRING, &output_format, N_( "set output format string to FORMAT" ), N_( "FORMAT" ) }, { "eprofile", 'e', 0, G_OPTION_ARG_FILENAME, &export_profile, N_( "export with PROFILE" ), N_( "PROFILE" ) }, { "iprofile", 'i', 0, G_OPTION_ARG_FILENAME, &import_profile, N_( "import untagged images with PROFILE" ), N_( "PROFILE" ) }, { "linear", 'a', 0, G_OPTION_ARG_NONE, &linear_processing, N_( "process in linear space" ), NULL }, { "smartcrop", 'm', 0, G_OPTION_ARG_STRING, &smartcrop_image, N_( "shrink and crop to fill SIZE using STRATEGY" ), N_( "STRATEGY" ) }, { "intent", 'n', 0, G_OPTION_ARG_STRING, &thumbnail_intent, N_( "ICC transform with INTENT" ), N_( "INTENT" ) }, { "rotate", 't', 0, G_OPTION_ARG_NONE, &rotate_image, N_( "auto-rotate" ), NULL }, { "delete", 'd', 0, G_OPTION_ARG_NONE, &delete_profile, N_( "delete profile from exported image" ), NULL }, { "crop", 'c', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &crop_image, N_( "(deprecated, crop exactly to SIZE)" ), NULL }, { "verbose", 'v', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &verbose, N_( "(deprecated, does nothing)" ), NULL }, { "nodelete", 'l', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &nodelete_profile, N_( "(deprecated, does nothing)" ), NULL }, { "nosharpen", 'n', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &nosharpen, N_( "(deprecated, does nothing)" ), NULL }, { "interpolator", 'p', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &interpolator, N_( "(deprecated, does nothing)" ), NULL }, { "sharpen", 'r', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &convolution_mask, N_( "(deprecated, does nothing)" ), NULL }, { NULL } }; /* Given (eg.) "/poop/somefile.png", write @im to the thumbnail name, * (eg.) "/poop/tn_somefile.jpg". */ static int thumbnail_write( VipsObject *process, VipsImage *im, const char *filename ) { char *file; char *p; char buf[FILENAME_MAX]; char *output_name; file = g_path_get_basename( filename ); /* Remove the suffix from the file portion. */ if( (p = strrchr( file, '.' )) ) *p = '\0'; /* Don't use vips_snprintf(), we only want to optionally substitute a * single %s. */ vips_strncpy( buf, output_format, FILENAME_MAX ); vips__substitute( buf, FILENAME_MAX, file ); /* output_format can be an absolute path, in which case we discard the * path from the incoming file. */ if( g_path_is_absolute( output_format ) ) output_name = g_strdup( buf ); else { char *dir; dir = g_path_get_dirname( filename ); output_name = g_build_filename( dir, buf, NULL ); g_free( dir ); } g_info( "thumbnailing %s as %s", filename, output_name ); g_free( file ); if( vips_image_write_to_file( im, output_name, NULL ) ) { g_free( output_name ); return( -1 ); } g_free( output_name ); return( 0 ); } static int thumbnail_process( VipsObject *process, const char *filename ) { VipsInteresting interesting; VipsImage *image; VipsIntent intent; interesting = VIPS_INTERESTING_NONE; if( crop_image ) interesting = VIPS_INTERESTING_CENTRE; if( smartcrop_image ) { int n; if( (n = vips_enum_from_nick( "vipsthumbnail", VIPS_TYPE_INTERESTING, smartcrop_image )) < 0 ) return( -1 ); interesting = n; } intent = VIPS_INTENT_RELATIVE; if( thumbnail_intent ) { int n; if( (n = vips_enum_from_nick( "vipsthumbnail", VIPS_TYPE_INTENT, thumbnail_intent )) < 0 ) return( -1 ); intent = n; } if( vips_thumbnail( filename, &image, thumbnail_width, "height", thumbnail_height, "size", size_restriction, "auto_rotate", rotate_image, "crop", interesting, "linear", linear_processing, "import_profile", import_profile, "export_profile", export_profile, "intent", intent, NULL ) ) return( -1 ); if( thumbnail_write( process, image, filename ) ) { g_object_unref( image ); return( -1 ); } g_object_unref( image ); return( 0 ); } /* Parse a geometry string and set thumbnail_width and thumbnail_height. */ static int thumbnail_parse_geometry( const char *geometry ) { /* Geometry strings have a regex like: * * ^(\\d+)? (x)? (\\d+)? ([<>])?$ * * Sadly GRegex is 2.14 and later, and we need to work with 2.6. */ const char *p; gboolean had_x; /* w or h missing means replace with a huuuge value to prevent * reduction or enlargement in that axis. */ thumbnail_width = VIPS_MAX_COORD; thumbnail_height = VIPS_MAX_COORD; p = geometry; /* Get the width. */ while( isspace( *p ) ) p++; if( isdigit ( *p ) ) { thumbnail_width = atoi( p ); while( isdigit( *p ) ) p++; } /* Get the optional 'x'. */ while( isspace( *p ) ) p++; had_x = FALSE; if( *p == 'x' ) { p += 1; had_x = TRUE; } while( isspace( *p ) ) p++; /* Get the height. */ if( isdigit( *p ) ) { thumbnail_height = atoi( p ); while( isdigit( *p ) ) p++; } /* Get the final <>! */ while( isspace( *p ) ) p++; if( *p == '<' ) size_restriction = VIPS_SIZE_UP; else if( *p == '>' ) size_restriction = VIPS_SIZE_DOWN; else if( *p == '!' ) size_restriction = VIPS_SIZE_FORCE; else if( *p != '\0' || (thumbnail_width == VIPS_MAX_COORD && thumbnail_height == VIPS_MAX_COORD) ) { vips_error( "thumbnail", "%s", _( "bad geometry spec" ) ); return( -1 ); } /* If there was no 'x' we have just width. vipsthumbnail history means * this is a square bounding box. */ if( !had_x ) thumbnail_height = thumbnail_width; /* If force is set and one of width or height isn't set, copy from the * one that is. */ if( size_restriction == VIPS_SIZE_FORCE ) { if( thumbnail_width == VIPS_MAX_COORD ) thumbnail_width = thumbnail_height; if( thumbnail_height == VIPS_MAX_COORD ) thumbnail_height = thumbnail_width; } /* If --crop is set or force is set, both width and height must be * specified, since we'll need a complete bounding box to fill. */ if( crop_image || smartcrop_image || size_restriction == VIPS_SIZE_FORCE ) if( thumbnail_width == VIPS_MAX_COORD || thumbnail_height == VIPS_MAX_COORD ) { vips_error( "thumbnail", "both width and height must be given if " "crop is enabled" ); return( -1 ); } return( 0 ); } int main( int argc, char **argv ) { GOptionContext *context; GOptionGroup *main_group; GError *error = NULL; int i; int result; if( VIPS_INIT( argv[0] ) ) vips_error_exit( "unable to start VIPS" ); textdomain( GETTEXT_PACKAGE ); setlocale( LC_ALL, "" ); /* The operation cache is not useful for processing many files. vips_cache_set_max( 0 ); */ /* On Windows, argv is ascii-only .. use this to get a utf-8 version of * the args. */ #ifdef HAVE_G_WIN32_GET_COMMAND_LINE argv = g_win32_get_command_line(); #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ context = g_option_context_new( _( "- thumbnail generator" ) ); main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); g_option_group_add_entries( main_group, options ); vips_add_option_entries( main_group ); g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); #ifdef HAVE_G_WIN32_GET_COMMAND_LINE if( !g_option_context_parse_strv( context, &argv, &error ) ) #else /*!HAVE_G_WIN32_GET_COMMAND_LINE*/ if( !g_option_context_parse( context, &argc, &argv, &error ) ) #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( "try \"%s --help\"", g_get_prgname() ); } g_option_context_free( context ); if( thumbnail_size && thumbnail_parse_geometry( thumbnail_size ) ) vips_error_exit( NULL ); #ifndef HAVE_EXIF if( rotate_image ) g_warning( "%s", _( "auto-rotate disabled: " "libvips built without exif support" ) ); #endif /*!HAVE_EXIF*/ result = 0; for( i = 1; argv[i]; i++ ) { /* Hang resources for processing this thumbnail off @process. */ VipsObject *process = VIPS_OBJECT( vips_image_new() ); if( thumbnail_process( process, argv[i] ) ) { fprintf( stderr, "%s: unable to thumbnail %s\n", argv[0], argv[i] ); fprintf( stderr, "%s", vips_error_buffer() ); vips_error_clear(); /* We had a conversion failure: return an error code * when we finally exit. */ result = -1; } g_object_unref( process ); } /* We don't free this on error exit, sadly. */ #ifdef HAVE_G_WIN32_GET_COMMAND_LINE g_strfreev( argv ); #endif /*HAVE_G_WIN32_GET_COMMAND_LINE*/ vips_shutdown(); return( result ); } libvips-8.9.1/vips-cpp.pc.in000066400000000000000000000003451361153320700156760ustar00rootroot00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: vips-cpp Description: C++ API for vips8 image processing library Version: @VERSION@ Requires: vips gobject-2.0 Libs: -L${libdir} -lvips-cpp libvips-8.9.1/vips.pc.in000066400000000000000000000004421361153320700151140ustar00rootroot00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: vips Description: Image processing library Version: @VERSION@ Requires.private: @PACKAGES_USED@ Requires: gobject-2.0 Libs: -L${libdir} -lvips Libs.private: @EXTRA_LIBS_USED@ Cflags: -I${includedir}

ACF}ILPV[G`CdhloDr1suouDurq"lgQ_XQIAA8#/&@:< ^Pfhijjklmnoppq?q!oo2m(jfcd^YTNHB>*952/-- ,,,,,w,V,,,g- -w..P/15:AH~OsV\cjHquy5zE{{${"yGwIrmf_X.PJuDF?E96D2212q333334568:9}0)"U wfik7lm2mnopqrrMPFD?k:4P0--:-.(./////013 457:3=AFKQ>V\afjn:qsuuttqnid^YSkL%C;45-9'  j{kmAmnopqr9rrsr'pn^lh/c^YSMVF@;B6-2/",*W)'(#()*+d+++?***{*9))W)*'-N1U7>FELTP\udWl`qvx5yylywv,qle]~U=M3E>82/,,m,U-O....e.-.9./s0Y1248L;@EJTOU[afj*nqpt tvtsqmCiXd`v[:U2MF?82+%OL9kAlmno=pqrKrssrqolid_YCSMF@T:5X0-++)'&&P'')+ ,,,o++I***G)(((c*.4::HAHPY'aRiou$w>y1y yyxvr2m/e^ZV8NIF?>92/n,,H,(- ----,h+++,,,./268:>DI~OU\afkosPtutspnjHgHc$^RWQJD>]7h0(q"ijkm8mnopqgq{r3r/qomj5fv`[TEN G@:40,*)(Z' &&`'U(}*8, -@---,Y,,++;*)X(*-428?EF7NV^!fmruxMxyxwso h'aaYRCJCa=62/W.-._...C-9,-+Q***z**+,/F2 6(:>CIP%V]bhmqsuuu9sZqfnliUe`sZTOIB;3-'ik3lmhn*olpTppqbqUpnkgcE\VcODHB;5/,z)[(''&d&c&')*,.C..R-,--5-1,z+))*,1V6=+DJ'PX^eCjosJv%vw(vts!qolhd9^ZTN*F?82hik9lVmMnoWoopbp-o"l(ie_XQJC=_6|1,D)'b&&d&&u&'(F)+j-n...G--n-.f.u-,*)+D,05 ;AH9OW~_fmqYudw=ygyPy"v6rmNgaZ*RKqD>!9O420I//7/".-,q+&))R((((()+:.049 >DJR Y^`Qf>l`ptvwpwvuts5qncjeb ]W\PILC%=cg;h_ikElmnnnooEmjbgbq\yTMFq?B824-i) '!%z%%&G&C&&(0)+-l.d.---./c/R./,+R*+,/3g8>ELT\ScVj9o.svHxy#ywStokd]V_NGA;630//P/o/0.-,z+_*)))G)*(()y+h-9038=DKSZahUm}rWtwLwxxwvusplier`_Z SWMHfOgDhjgkmCmnKnHonUlheb_YWQsJ"C;5/+c'%$%L%&/&&!&m')A+&,----.}///.<,+*+,R.1x6K;.AHPX_ fEkq&t7w:x ywuqmgaQYR2KD>9 520/0 0//S.-,,+b**)))~*r+F-/48\>E(LT+[BbphTnqtvnxx9x?wawuspn+juf:`[UQAefgikhllmmnFm>kUgc[]fVwN`G@82- )&5%$b%%%%%%'(*,-T--.S/1050V/.V,++F++-{/A36=CK3RYa^gmquXvxxwwspke_]VNH&B<8k310001 002//+. ,,+**)f){)p*,/p28>}EM?T\ncin6rmtwAx"xwxwdvKtr.o%kgtb^[ZvefgikHlDlmAmZml4jeaFZSKDD=o6'0r+U(%$$f%%%%%k%~&(j*~,,-o-./0n0T/.[- ,A+++,r-A/28A>8ELTi\ binIrtvvvt>rQmhK`YfR:KF-@z;63111111+100/.(-(,^+w*))@()),%.38?F}NU\dinsqttvYwRwwKvv1trpn jgc`ff~giuk@l(lXm%m$mk hc^WPH{A:A3 -)&$$($#$%q%%Y%9%F&c(2*B+,m-.-/0000.-,,P,+++D,.39`@GO V^ ejkpdsu'tusro jcm\#TNHCP>9@5u2212112!10/n.C-/,(+)('''Y)+/E39@bGOW^e#jncr|tv9v:vvCutsqomkhff\fgikllmmmLjgbc\UUME=770<+j'H%###$%5%Y%!%%4&J')*+,a-O./r0!//.--B,,n++]*+-L27Q>bDL#SZbhnBqsrrqqKnjd}]V^OJE@;7i32k1111211:/.-i,P+0)('+&&'*(,/5P:BIEQ Y `fEjoMrtutuXttsrPpornkj=hfffh j1lLmvmonmjgIah[S K!C;4O-);%~$2""#A$&$$$$$& '))*E+(,9-c.!..g.>---g-7,++G*J+;,1r6M4DkKQR>Y`ek5np+ppFo]o ljJeS`/YSMHQC? ;64 11001#10/.H,+*)S'& $##$.&,( ,06Lo0oQnndljfLa\5VuPJEA<85N20/0%0?0/.--+*)(~&$#`"!!# $L'`*0K6p>GOW^ dinwpqpponlkkjxiiRffhTjm+o4prr|pkf_X OF>A5}.)8&$T$$ $%!%e%%%\%/%j%&i&'q'(S(t(|([(A(<(?(u()%)z**+-K/2b6;FAGNSY_djlnno n]ndm8ktgd0_LZqTOiJ D@<8c4g10Y0//F.-:+*L)c('K%#" O !!#&s+19BNJSYaf[lnonnmlWjj\jhh#gffh(j"lnphrrppgje^VME <4-(g&s$n$$%&g&&&&&~&&&&'w'('''E'''''4''()+-137&$"!/#, "'-F5=FqNV]Yc$i~lnllljimi hgg,fffggi4kmoWqqnhd\UL Cn;b2,(&$%V&%'([())*(*.***I****))i(((T( '''( )R*-n0!37 ;@FLRPX0]cgjlnno3nnmlji fb^ZpUdP=KFAT<8842e0G.-H+)(i'J&h%O#"b P!<%+Q3;D&&%#"^!$ 1{ U$u)2:BJR?Y_g5klkkjihhEh'g^ffeTdeg i_kmo)mjd_3X,PH?8X0C+ '@&%'&(+L,.^013>4d5555*5543 10}/3.8-`,+++-x/38 =B GMkS+X]Bb eil3nopKooooon4llj~hf7c_\W5R}M1GB/=941.,)(&&%$#"!! 0 f $*2Y:CBJRWY`S7&/]*'['&(u*-V/H13O579;`;;;c;;:97e54210/]/,/U14v9=CAHNTZs_cgjRm&oq)qqpppppotnmlkihea]sXSOMkGTAABBoBo<:9.765'55M7:?PCIOT[`_e)hWk[mWoq.rs\sr6qqqqCpp#o~nnlkifb^pXRKE?94/,((&$$;##["""U"2!!}!!"%*2:C)KPSZacimnmkmAlOji|hhAggg`|`Jacf]ijNkide2^1XRK C<&5.u*(C)J)h+O-1:369=]AD FH3II0JIIFGcExCJAX?> <;::=e@!DIDNTIY_dhkWmoZqirtt8t3ssgs rrqqq*ppYonlkg~cS]$VOHB;54/+'%##C"""X"F"^"X!!!!!%O*p2:CKTS8[aiomoOmmlkijhRggfgg]]_behikhac\W9PIB;e5.?*()*S,m/ 259.%71G,(f& ##="M!!!!"!!' !-!b$*2f:=BKnS[bGimon3n lki;gggFgh[Z[^$aIdgi"j9g@b[kUOHA:4-*(*+ -J04$7;?DI^M{QQSUVdWWrWU9S:PNMK\JHzHGIKOSgW\afjlmHnoqstuuuu~ttIsssssHs srrrqo"ke`XQJeB;v4p/0*1'^$#"a!!@!]!!!}! z!!^%*62:nC*KT2\_c#jnp9nnmwk}ikhgghviLVXd[_c}g(h\i|faaZ[TNH4A3:E4]-*)Q++.81,59>IBGMQyUXSZ[]\\ZYVTRQGP4NNNPRUX\ae|ilo\pkqZr@v93-*)+,/j27/;@F KHPUZ%]_a'bbfb&`^\ZXWV8UuUV.WY\N^b+fimVoqrs~t=uvwwwvuu ttt_sssst>ttusqmJhb\UNF>871H-)&#" !/! !0!%w*3:CLU6]dkoqKoonykigmgughjLPU[f`e=fhBe`XS MRF@X94."+t*C,b-04\90>CHNPSX]h`ccRdfeedcHaS_m]\D[[t\M]^`;bdg9j`mRoq:rstuHvMwwwwwVvuu!ttPssssttstu srwnjen`iYRJC<5b0k+($" !! !!%L*U2:RC3L T])d!ko2q"oonjgeefgThFKQXy^ncegd_XgRM/F@w94i.,*-.2}6 :@EKhPV[`cf"ghiiAh}gjed:caaacdeg#hjlFn_pAqrst^tu.v vwvwwwvuuJtttVsssstEtu,tMs olOgwcA]VO9G@f9M3.*&u#m! z !! } !6$)i1<8AJS,[bjin7pyolomuif&dd>d?eg @{F+LT[uadtgd`MY.SNGAe:5F/-+.034L8#=?BHN6SY>]bdgi=j]jqjjihgxfff8fghjkmn/7"@ HQGZaBhlo5nMnBkgac#```Uac9@GPXe_cfcd{`ZTOHBb;60d.,/*161:]?EKQV\C`dgik@lllllIkQjqiijjkl~mnopqGBOX_gPk2nmCmid`]2\\H]_3;$CJLU] anedsa[V{PoJDC<7:1x/#-0S3%8HFOXX#_ofjIm7l5kjgKa[XFWgVW Xq.6 >HQZ_ddKb\WQKxD>8Q20,.1W4:\?oELSBY\^bfZiakm-nnmn*nnnnmkmmmn@no_op\pqZqqrppUoop?p1pEplq rsXtu"utttttqtssrrrrrar;qponn~khc#\TLEP>81+&$""%!!k #'5.5>G+O[X _XfQilkdid^WSCQOP9Qg)k1;-ExO$X^jddKc^jYRLFQ?Y9x31>/2R5DKuRZ`eyilRnno0p:pppqpppooojooopp)pppposnn[n9nJnoovopqrstItvt8t;tss^rqqptppopApq`qqXqp-nrijc1[SLE>|6A/P)Y&O#"!! !r"%y)<088A$IJQY`gilbie]UN3GD2???!^*4?J T\.cdfb]`V OHA;531{4j8@)FMU0\OcLh9lnp{pqqr&rVrqr=rqqppSp/poooqooonmmllmAmn+noHp^qst!t}ttptQss]rqpoonnYnnQnopop>o+mi9c\U}NG@70*'8$s#""3!q"5#&*2 9BJRqZargikh{cGZ1QI_B=76,5J'175x359AHP[W^fkoLprrsrs@sssrrqquqpoo]nmmWm!mAm|m>l^kEjgj\jkl.lmnprPstu6ttt sErGqmpioGnlxkk+klcm m>mmml.hd^AXpQJgB:4&-)&%## "$@%).6O>FNV^%ciij&d]RH?6X/K(b%#O +k6A)LV_kch`fcM[^TME}?:86&36$9AHPXm_tu*uu>u8ttEsCrHpo8mlk@jkNkllelmllif-_YRKD5^*"\2$/":EOYX_Kefd]WOJH1B;x746h94@FNV]dinpr+qrvrrrQrBqpnmkjjliiii[j!kLl7lllmimn-n/mmnplmmemm!jg`ZS?KD<FNW6^\eYhkid[*PD:!0O%_r +-!3+5@KT[bcc^;XYPJ!D0=9579-?iEM-T[bhZmp qq,qqqq'ponhlj|hgbff{fftg hZj klmn2oopCpoxo@oqOrt?uuBuuuuEtsOr]qBonm1lQkl lmzmn%n|nn3kgaZSjKC;G3,'#"!!!$(t/7@HPY-_f1hHjfaV]K?5?+e  J u tmQ&1H;F-PX_ac$^YRLZF|?;7g79t?"DKSZpaufloqOpqppp[omligUeFcKb{abc?dfihjl,mnopq_qJppq!rt uQvv vHv8v@uusrqp\ommlmjnnoo)oo~olha[qSKC:3*+&"! H!3!^$)19BKR[Madfgi>d+]!Q}F;C0y& l% !,*6R@sK Sh[b^a_[UO~ICa>99o:5?ChIPX^dj]mooooo*nmkDheb`^\[\]`/bePgj-lpn'opqqqAq'qstvuv/vGv}v~vvhuu trqupAo*nnopppppq=ppvmhaZRJA92G*%"!Z C!"U&,C4wAGN UM\PbEh1kndnnmmlkiSfbF_\bYWV0VWZ^LbCehknDpqryr)qq,qrsttuuPuv5vwvv u0t&s)rsqqqqr r6rmr|sr.qmhyaBZ$QI`@81M)$!s!7 4!#^(}.7C>FOV^aeVcb0ZQlE{; 0& ky* E!*4?I[RXB]^^ZV[PJE?=;>=@rETJQ&W^cgEjEjkDjmjhgepb]Z W0TORPhPkQ TmXP]AaeiloqUrlr qnppqrlssttuvwUwwvvFuu&ttqt!sssssssrp0kf_dWOGS?K70($!!!##O%+2<:GAIQX^`c"`y\TJ?4+   %c/!9DKN5U(\^o`F]ZcTOeIC?=>(?2BFL\RX^bef$ff+edb`y]LY/U+QNM1K3K7KNRJW\ayf~jnprrrGqqrArssmstuvwcww{wVw vvuunttttu t}sqo(j3d]aUMxE=5u.'$}!">" $(/R5=?DL}TZ(__a3]:WMD 9.%k W 0 W)46>IwQYY]`_^XT*N[H7C??#>A>CPGLlRW[p^?^__)^][YFVRNKH~GEtEEHKPU[`ejmp@qqqkqrrsesttuv|w?wwx www2vwuuTu=u^uGusrolpg(asYRJB;Q3h-<'$"#$Z(U,3:A'HP.W2[C_^^&XQG>=3>)2- #465R I:$.9DNV[a:aa]vYS MGB@5>?@oCNFxJOSVWXX WViTR6OvL HoE.B@p>?j?BEJMOTZ`NeiWlno6opqr[rs%st2uv/w(wxQxxx[wwWvvvvvusqmic]VO7Gv?8L0+&%#!$&+07>;ESM^TY\i_]\[SKk@6-D#R hcu2a K(3?IRRY_ac~`](WLQL3FuB?? >@cADkH KN^ObP OONM,J}GDnA3>H;<9q78S9'<>CNGM%SY^bfik4lnpqcrrsKtu'v^whxGxxx|x,wwsw2wvvMu;t/qnj5em_"<==>F@&BE>FGOFFF>E`C"@=9632 0V01C46;/?vEK7QW\adgj9mo0pqrstuwZxNxyxxxux)wwQvuuXsrvo@kfE`ZTN F?892-+ '''+d/61<BIPVZ^ ]]XQG7=3*?#>>c==B;963N0\-,(***-7/48$=CJQJW \P`XdngknMpqs.t&uwvxxxxx@www&vju3trqonjaf`r[U?OI0B#;5M1>-,B*G+,1b6=b _ZV3Q#LFAX= 98'6(43210/.-y,,+8)(&$###%'T*-28+?FMSY^c:h3l or stuv vvv|uuDt\sqpmkigeib^(YNSNIHC>|941F/./1?5 9>mCIsPUZW\u^]]XRjH=3m*%! .K$)A 7B(2=bGOW\}abb^~ZNTPKFG@< 8531g/l-o+*#('?&/%g%$$ #C"""?"x#%7(*/T4M:AIOU[afkoXqstfucuvuusrq\omkahfBd b_P\*W[QKFA=29l5>2001037;@E(JPvV[ ^<^_^[ULAe72-$49 RV-/Hpc !}*5b@ I6QqW]`b`]XUMQ{LGB>:W742/,b*(X&V$#O""# #d#$$$%K&(,*-6135};nAHNTZ`ej3nprsttu+tlsyqp_n}lj)g]doa_]}ZW"R(LFA=:l8532I35:C>[BGKQ0VZ[J]_P^U^[\VNHD:0~' OQ'&<5z7 a#/-C8B]KmRY]bZba]\ZVMRNID@<98'6558F;@DIvMRX \'_g_`{^]VX:QkG)=/3)!px $}s]'_1BM ! c%n/t9CK^RW^IaYb`^oZXUR_MI+D@=951.+* ('&&'E)>+3-/14 6O8_;>BCFL|QV[`7dhlnq qrrrlqpo mkiwfc`N][XU-Q%LZGfCx@R><5+""# aAD:jA&oWc &a0; DdLRY^c3dc`^\'YV@R5MoHD@T@hAD FVIKNP|RTWfZ\_adeg~i;k@lnko5op?pp^onmxkChebD^[YVT Q'NyKJ@HIHIJLOGRVZ]l^`_D_][VPH? 5-&&b Mjq]nT'o, P X)4[>HO8VN\*c gkjjgf ca]YUQNfK5IFFEGHVJ[LNPRVTVXZ\_aLcseg hLijklTmnojp!pspppXo,n lifca^p\0ZWU?RP4NMsMMNOQTW[i]_-^][ZX TN)FV<4-%` MvJBs|A 9(]C 2 W!k+69@IqQW1^ndhjxmndlkHigHdb^}ZW`T+RP OOYPRTUWY\^_aceBfhj klSllmmJmnop$ppqppozntljhkf8db `7^N\:YWU\SRRSTnUXV[<]___q]s[YvWRLD ;2q+'$S O6jv?BS2B ?a",7=AISOV\\Rcgh;kkkeimhQfec`^#[YXXeXZYwZ\^R`LbEdefhXijkl}m7mn(n4mmzmUm{nnoWoopBp$oo$n^m&kj^igfdcla_i]F[&YXKXWXZ[]^^\ZX:VoSSOI_A`8/)#!  Pg8-V2PJOd @##-7"@H6OT[a+fi jj,ihgg&f 5-C&S C r`!9FmaLAq Bn#_,_5>aEKPUXZ_bdKddudode|fWfg2g1g)gAghjkm.nxoodoLo}oooSnmlknjHiBhggSg gyhi"j"k3lem"m~m]m`mWmlmemZllSkfjih1fAdGb|`_^]\[Y9VTR%OKG6@91*6$pf e}y+ !HRJY8| kD"u*3;AFJOMSX\M_I`abXcehj!klmm\mnop?ppJonn~mm$kjxhfeVcc:bpbIb bczdf)giijgjSjpjjk_kkkkQk:jigec{ax_G\ZaWU)RPNK:GrA;4X-<& }W) /Y 6\IbTJb|j@ Wc!(0L6<8?BFJ}O@SWYvZ\_bBehej k9kyllBllljihfedb`^\[YYYQXXXYZ\$]_O`abbb&bccde>eeeeVdbv`J]VZW\SPMUJHFEA!<55.("oE # &2nZ \SBIYna.E2 yu% +[158N:>9BoG:LP7SlVSX\8_jbdfg_hfhiOhgelcYa'_H]j[mY!VT)QP(NN3MN N2NOQ^STVrWYWWX7YZ.[]T^__`4_^\EYqUQMJ,GDZB3@O=:50 )#( #7j+6nl%AD;@CC807C ? zFt &*~.;0359>iCfGKNQTWKYp[[\]^_Q^][XVCT QOkLIGZDCNAAA!AnABUCDF*GIxJfJK*KMNPRT#UEUcUTSQMIExA><3:38-52}.)$  9x-u/z{0aQt-,%7E?) *; ="%(+C.16L;7?DHKMOQQRS3SSRPLN*KIuGDB?'<: 8q766J6678x9;s=">?@@A,BD*F%H*IJJJIHEB>;%85\20y-u*&4"\G ]"vipAx`DM|4G@# 6F " ; "$w'*$.927<*?BCEE0EEF6EECDA?\=];-86~31/=-,X++,,G--/802O345D56Y78:<1=0==== ;9p631.,#)W&!"e<- 8VJxlx+wN>@c#++'! 6~M r -2"&*/A36~8W9:>::{:98642{0k..+)q&$"!B ~ $ !"$t&'k(`))*8+L,.//01111Q0.,)'$!Eg  l/!q[r7g=^/&8b~!," g 7% N d#F&*,c.j/#///p.M,*(&$o"7-9V4(H-E!&"$ %& &[&&q&$" 2` Y ;!3eIxR)x`,K'U1/>ZljZ  p w)5!l"M#(#/#X"!j~Rc X W PDGI<:(1V Q ea4NWfJk|^aQp{]C?BRddR;2oRt 7 z>6_ #1JG X8a  i 1fYnN RD`~[MMsviaSNY]J x]'L_ C ) 0 F z q % , #l'=+`!31 E ; p|I6rua@4IgqSG<! ! {+mNuLC[:rR?tC05Wr}|%aVM^q%Q5K:FtP0 nx,g23mk vBpW32Nzf^]cO BRT3%(LhNHIfx>#& *hm/]ns`I;0P}<CwSJ55@`wjpiF&+)/GB"*jxqplj]fS#  '" u | tYEHCGKXozw`K98+oWQPp+_ojrqP'  )16TB4HWPB) B:`P9p_SPB>RMJ34;<FYfwsuN0#:49C5 ,JV@1>v,20}qiX: 7XaK308Ee zsypW3 %.;. #7AQK5W ~jWA@Vga> $0R bG@B2    %%)+/)% (3??9,#>l'{fY`dW8 2Ii ^9!   %!+77-% #,%&1@RWK;4BTy+5?5#pbaaWD. $?^yjJ;& j (Tm3x61oUJS2!O@T")%}(.(R'z$B!yT?h f   ( _ N c ` #rGlFDYZ'fE]Qa&\5 E   q`lH<kABlKNRO^ , & !["Q# ##G$&&%$!L/ _   & ( , = X > S u {  V  J hk|%~B MK  vv?; _!|!!t !f!"#$Y$l$B$$$#a"]{M ( J p f G D r  5 H P ^ v n  / E = > A F W _ J  bP9K8@  0)ZpSuw Sh+ uF,r!8!!E 8 S "f.} XeK Z p $  T  , G g x j I  $ ? : 6  ? 9az\ z - }NO-+{?!#n#k"! XLIP*R=T ` i   E 8 * > b q   : L ^ ^ a I l Q C :  vF|wQg:cD^]UCw4?~#^^:+2VvMDB> Z!H! HpH-' :    $    5 O i x  r F    ; j ` M G I F  - 4 MsFJ2  > x6G*V0QE1@(N6)[,h]K'!nE8 P 6  <{tDX,9HUm<  r h -   w N* -_  ; )]gC]=kCV[y|#gIu"VD\d g  } w EX3'b}^<iBDW<#"5 x > 1 I Q e  [ | SH@vRN RQhn ` . }$,?uKV & - S p W8NPC<& t^`po_F8:Z}+m]c}\2R4 P D r U   r  Y sO\Kv0EqRM;  Gl X  Q u`@ l&*jK?5D]|UxqX#  o   T l ! R :k%-, R c w " a   ( 2   x Q7_ bCyy}L#7U}0 '$" !j-.$E< 1 h  g h ] :  M t , @ .  = "   A t ; & 3 x y ~Oc1rRxG0o*)dxq\; +[2s_Xx%X3h K = H x d X ]  !  # m rX$y +OAxBR Mn33u8J`cQGT~v;PW@\  S U +   c q y ^ = 2 A w ` 4   ` S rOe<TzXfr21lu*rrR|sV> U ?f?.ioqv@DI%tDz q  o T [f33la.HhS>xxqC-Uj\=C;s{{aM*V W 9YbH)F7WCcg'D U i >uw!ZIF:  /CEm>ig$x#@s<l r m Z ?   # - 3 G T [ F 0 h Kn'B}KJ[z>n0R:eo7jzd7I!}8l4~P1%vr wK|i1 6a_u@< 9z^w}qzI$u * sW,nN,UYT)_%gvdx`GX~' fpWTzyg!hB}tb /p + 2dV}  D | !!i!!!!`!S!=! NL'= w s $ Z_X\[.h!=:}|T)wF6R+h&FPT^#- aZ _525L/*.@K1:b 5 25t|n[!^#S%K&()*+~+,,,%,c,,,`,-++++s+K+;**z)b(+&-$*!%3[B| G< Xdpq.tV>aY@IUqsC#9aekN[   DPu `PvcCT "$'o*',/T135u67i77777z777p766i6555555I4e3q1/-+A(u%"Y`z [|?rQ'xh{q0iqo13zM>^tYm x h} ^!m#%'*m-)03@6F9,;u=?(@AAAABAAAABAAo@@@+??????]>=<1:8w6d31^.+)*&$" u8 ,3+ 'M&CIn/OrU g}' /^d<,g E 1 "6%'i)*,A-/26Q9<@ BEzGBHIJK"KKKKKKLhLLLFKKBJJJJJJrJ;IyHGElCkAu?H=:86-31.,P)':$"\'A. t ml \^k;FS1dM{}~T`` :: $'T*g-032~48579t;?BEHKNPRUTTUVqW)WWWX XbYYYYXXWWWWWWWgVUbSwQO6LJ\GECA@^>`<9 52/C+(%3!x 'BC\H9N|.D& Bz.V,  co!$(|,0469<>J@+B)D5FHyK]N]PSUrWY[]b^s_z`:a2ab*bCb{bcddcc bb^b|bbbbba`^\Z)W|TR-PN/LKJwHEB?;A72.+4'w# N ?*t0"KQ/3:XxBQe0 J+6#0'P+f/4;8<@_C*F4HK LOPRTWBY[]_b.dgf grh9iij{kkQkRkwkl3lwlzlkkjk k1kkl.ldkkiZgeyc `w^ [YXeW8UT{ROKH940X,:(#TR +u1+9bOE+"Ohpq:0,@1j $)|-2[6;@E HLNQTVXZO[]'^`ub\cegikmmn=nnoFoooooooooonnfn}nooppzpTp onljhg0emca`d^]^[UYwVSO;JE?:S51W-9(##a ck -(G:5\|2>pt g ^5$).38=BGLQVTXg[D^h`bcefghiljl#mno pqr}rrrrmrrrrzrQrDrYrpryrAqqfqq1qWqr2rss1sCrrqponmlkjj2hfdXbm`]YUPKiE@;72S-' bB5 j%. 5DCo 5D$*/~49>CzHMRV[^Zadyg*hj+jk{llm@n>o_pHq(r>s"stt)ssPrrrrrrrrrrrrkrqqqrrTrrssrrr{rqqbqpooEmkigec`^+Z0VPKFA<72E,& G k;m%" 870@ct9 X #c)/4:b?jD9I{NSX\\`dngjlnopqqqqrFrsYsttu?uuuu]ttOt$tcDJP*TW[_+begi2jl*i-#1T5:?D.J PUZN^ `cf=hj2k^klm m2lll6kkPjihhhQhij?kmyoxkxxy&ysyyzyyyJxwwuts qp(nGl igedcVbab3bdffi k llmmKllojhd`[lVQ1KBDK=5/K)"0"  T(+,-.0.135h8d<@E2INTTY^dadfwhyijjjjjaihgffeJdCc a``w``aEbdfhjmAodqys tu`vvwAwxxyDypyyyyyyJxxY'^>bfhk2kllll)k;jeigecb4`_^T\[WZXXkXXY[w]L_b dgbj&loNqs^tvwpxxynyzHzJzZz8z/yy]xwvuxwuVs3olTgc|_k[XVSOL+IFDCB?AA5BDHL|PUY ](ahfjm_o0pqrr{rp'njhc_(XRJC<4v,# wGuZ|\^^_`bac:efugikm_nopponliea\WSNK#G1C@?=='x@BEHPLYPV5[1_dhm&ptwlyzV{zzMxwOtqmiFd^Z4URmOL#HEC(A5?6=<;e:;=kA7EINRpVZ`dhknpqrts-rqqhom.ifX`ZSMfF>,5^,}$Jf;C L`-b5cd{eefhhijkm nnooppRpnUlciea\WQLH_D@=e:~98776Z54454e4679;j=@FDdINTPY_2dOin"rvNy(z{zz_xwsp[kxfC`ZZUGPILFHFE#A?=<.:9&7656\7:>BMFuJNRW\aei0kn=oqrrQqom?jfa[;UNG?6>-% G [Eegh~ijijkmPnko opqbqqbqyposlj*f1bN]WqQPKwFsA=964I32911`0//F../0=1D2358/GMTZ.`fkqkuxxz{Izzxvrni b\&U{OJ EA=:E8Y66a543]2o1z125~8;?0CAFKOTZ$_ cg[jmXp"qsLs rpo-kgbh]mW.PH@6.-&\G Lmg ijkl9mFnmop{qq\r8rrSqPpoWmCif^a]WPQ=KE@';u74[2/..Y.I---,,+,,-I.'.02=6):A]GNUg[biotcxry{Bzz\xJv2r mgt`YxR1KEA<#853\2I2k2G21[0/0'024_69rq95 1.,+"***+!+,+'**~*'***!*y*+,0U4;4AIb8490F-+6)(()1*!*+y+++t**v*8)))**{-?06="DKS[cktq6vcxqz;yy`wQugqPlfL_XPgI7B.<7/30/..//=/?/..b./-/0B0247;.?CHMTZ_dimypArsEsrqo#lhe`~ZS_L"DS<4,%h)KklnXoopXqrsstttsr,o5lhc]X%QK D$=8s3/`,*m(d'''(y)+,,,,B+c**N))(((k*-928@HP>X`i$otuHwz%yywvd8L3/1,Y)(''4'*(,).*,5-U.)--e,y+++`*))#(w)+06;=DM5Uq]elsvsyVyz0xwsoid]hVPIB<853110=//.r--,w,>,,#,,-.04_7<4@FLSZe`}fcjo[qt%twtsrp^nkhgb] VZPHAI9k1k+V%jAl*noprLsittKuduu/rpylSh@bn\0TNG?f83/_+d)F'';&w&'(W)+,.7..-- ,,,+*v)F(D)Y*/ 3:AIQYbPiopEtWwxzy):163p0//..n--,,r++g+$*))o)\*+.1Q5:A]HPSW^eqjposvwix4wwutrwoxk gb\VZOJYEhjkmopqr@rssormnke_dWPqHA2: 2-)'& %%%%%&.'(*,^-m..@./r0L00=/-,+x++-0z5i:[@GO;V^2ek4p\suvwvu;r/okMf`ZS LMF^@;7"300/r///n/.Y-,,,$+4*f)*5*,.B15<BJQyX_f#lVptKuwwwvvtrjnkgzb]WS:NhikmoDpRpqr rr'pli b[SL#D<5/6*'"%$%A%Q%%E%g%'0(*,J-Z../0111S0)/-,,,h-/~3b7S=ACeJR9YaKgvm;ptuVvvv srSnjdc]VPJD>841z00(000001/1.--,+)))W*W++-16v<-CJRZ-ahm2qt)vwww*w>vjurfolshd_[X:hikmmpoop.qqrpnjf_+WOH@9-2,) %%#$%3%_%}%@%[%'(*, -..0 1 1210//.,--'-.1W4N9?6FqMU0\ciin r suuuvtsfplf`hYSSM)G,A;?62111122G10/y..,+*d)~() )*-16=ED)KSZb|hamptJuvvkvv;ugseqUnkhda_hik%m,noopq&q1o7m6hcR[T0LD\=B5/*,'`$$$%M%%%c%t%&(*[+,-.0A1h2Y2l2I100&/P.---5.05;BHPrX_f k>orsst sZsmqwnhb[kU OAID=840212Z23 33^2100H/:-,t*)H('&')J-!1+7m=EMT\cikmKqsuuv7uut#r}pHndlDig}ehi>jlnzoMopppmkf`XQIAK:H2-(&$}$|$%q%%%m%v%&()*+[,v-/D0f1G1q11400X/.. -~,-/4E9H7Y0_+'1%i#$ $f%%%c%M%%%U&4'f()()*,b-.//0J0u00y0*/`.N-w,X-F/38&>DKSZaWflntpOpQppwpomhd]WQL6GQA<742223-333A251@/.n,*(&%$x$$')|.K3O:&@HQ'Y`!ekOorostztts,qpo'nlm&l9kg)gikJmXn^npLpdokhb\SKC;4.e*?&[$#$$_$%)%$$$%&'a'(:)I*+,~--|. ./W///%.c.-/1.5: @F'LSZ3`fjmQoBorooonlhd|_ YYSiMHC?: 6322N222y210 .-c+)'& $##}#d%&*.5\;CKT[ah7lprss1s?rVpo,nOmll kffhzjlnnppoPk gya2YQHI;FmNV]djo#qXrr$rLqton@mxm(lPkkffRgil$mnvppjnje_ZWO8G?C60i*'%H$$|%"%q%%%%2$$%A%]%&&'t((L(()*U+%+,-)-./14O7;Y@EKRPVx[a]ejVlnPnnnn~onPlilfb^YTGNIE@jnll%kkjjteeg hk7lmp(omhd9]kULD<4|.;(&$$$%~%%&/&%%|%%%a%a%&}&&&' 'k(#()*3+", -/1Q37:;>CxHN$SCX|]bfjlomn1nn|nnFljjh`eib@]Y6SNID@S; 7$4020/n.,+@)('&$Z"!A ky!R#R(D-5=FkNV^ek|npYozonmFkjjiiiddfgjklo0nlfbG[jSJB;2,'&.$c$$%&e&':''''''k'D'(I(4''_'M'|((o) )|*+.%0b3~6:>CVH}MRW$\0`ei;l/mcn|no&o2oenmkjhfNb^ZUOJuEV?:641>//-L+*T('&%#"$ w !& +3;{DLT\cFj5monnml3jiiihhd?ce2fhjl n4mk e>`^YyQI$@9g11+~'%$S$%Y&'1'()G)* *V*C))**`)(''u'T''(}()+m.`1a5z9>SC;HNS,W[`diknnoqoRooooRngm7lkigd!_[UaP JFC> 9/51/2,+7)|(.&%$#V! * )$S)19lBJS[*ai6mo mmm kniihhthYhtbbcegijml iEcJ^OWPG?8L0K*&%$%3%'O(/)+*j+,-.^.u.R.0...,+-*I)))))*,038=C,HNTY^ aei#ljnupvqq pppppmonnmljhqd`[UOvHBf<8C30,*('&N%p$f#W" !2 >> V$:)T1k95AJRZaiImUoNnnmkOihhh;h6h^aambd9ffhikjgoa1\UpNE>07 /@*)&& %%&`'(*B+-/1.2K2223320/8-,++A+F*,@.2?6s<:AH~OUk[`pdgjmUoqrrrqqqqqq0ppp9on li|e`[5TMF@;:40,*'&&$$Y##"I!!; k  = $O)X19IBJS[aimonSn/mkAihhlgh hI__abe0gijiFe_LZSLzD<6.)&&`%&0'()+-0Y35/6789=:]:w975320//Y.016Q:@FMT[aIeilnp qrst(srrrrrrrdr>qqpolie_YlRKzD>472Y-}*`'4%##z#""U!!!!( R !R$)24:BKwS[bj`ndp\?]@A@>E7K|RiYg_eimJnpqsOt/tttt)sssst tssssrp^miGdu]WP;HA:e4c.+J'%#""r"v"+!"!!!6 !H!%*,2l:=u;:9:<:@DIOV!\bhOknoq=rOstuNuuttttttuu"tuttVrpl~h&b\5U5MFb>8-23.)&$Y#I"_"?!!!!!!' !6!%+*<2y:JC!LT\ckopo]o&mkih5hghWiXY\_'beg{hfkb[*UOHA_:'3,(&'q'A(_),. 1/48=AEHJLNO/OLJyGEWCA@?@AE"HNCSY`ek n?pqrcsttuv#uuuQttuuvv*v.vv[vGv8tsspl:fa:ZgS/KECQS#PMKxIGFfEFGJN RW\bh8lorrsqsuvvvv`uttuZv#vrviv^vXvvvutr=o9jXe_0XoPHAz:l4.*&$""J!t!J!V!!> r!!%V*d2:eCPLNT]Sd)koqdpp nluj1hhhijPSOW3[`rdflhe7`uY6SNGP@92,s)'F(c(*+/2O6;@5EJOSVX[[B[+Y)VSQOMKKLMPtSHWy[`rf jnps2tBu ugvRwwwwBvuukuvVvkvMvLvhvvwvvt qmic]VN[F? 8y1,(9%#" ! ^!!%W*b2:\CFLCIOSW[%]D_S__^.\:YWXUiS R QSXTWVX\v_dhloqstuv+vw^wwwwvXuuvuuuuvv+vvavtsolgKaZSKD(= 50#*'p$" y u!!%:*!2&9BKT\ck npo~on(kmhgAgughjDI4NU[adDfd\_XDRMF?82,)z')6*,/P3k7u/uzuuunuBuu;uvNvcuvtrpCldhb\UNhF>71l,'$"*!k !^!{! !F!$)K08_A IQZwahlnmcm>kgecaaabds78=E!MU]aec` XSMG6@d9B30-*H(s*:+/3^8^=CZHNTY^adfhOhj)jUihgfeeeffgi=jlnopqrSs?ssSs stmu uruuuftu#uuu/ttttu~uuttxs qnkfaZSKC<5V0.*&#~"x!!!!!>!l!$(07@RHPY\`gkJmlEki"d`]]] ^Z`1f8@IRZ_dGcx`Z#TNH-Aa: 3-+&)J+>-I15;GAG.LRUXE]aQcfh1iiijk?kjhiii%i(ibijTjkmnWozpnpqgqr`rrNqr^X6P?H@N9^3-t)%=#"""E"8!!"%3) 0?7@HPY1`Jg;jslk>jKfa}\cXWV`WOX+3^DKNQFV\E`dTf_hijjkkl kkkckgkl3lm3mnFo ppqqqqqrqqq}qrirswss%rshsssDssrsspssszss'rqiplib\?SKD6=47#0G+"&$#(""w"{!""%)08`A)I/PY`xg iljbhd ^BXYSQOPQ2'l/9XCMBV\ccb]4XQ&JD"<6c09-+x-068;>AHdO>UZ`cfh]jjk]kqkkllkkklzlmn nooplqqr#rqqqqqqtqqrBrrrEqr=rrnrqqqyqjqr8rfrjrrr}qpnk$eN^VMNGn@z:2-(.%##<""!"#K&+2N:BJRYZaggxiki}faZwSNHK$GGYG"+5@YJT[bcd_ZRLqE>71l.,.2H8> DKSY^cfidj=kEkll>lel}lllm mcmnXno,op-pqq9qmqoqSq2q7qSq_qqq|qrrorrprqqqqHpp@oouoropSpqppq?quppnlg%`XQJC<51.)|&$b##""("$(,s3;D-L Su[b!gitk=hd]VO.HDW?>>CD(\2=UGRZb%d*eha8\eTNG?9U3 0K-0F3:@tG]NU\afik!kll,lmm*m(m;m`mmnnhnnnoPoptppp|p7p%pRpppq#qmqrss;rrrqqppo@nn&nn4nonOnYnoWooion-lMgiaZSM7F0>7 0*'%$#]# "N#g$)F.5=^EMU])chAiYjg6bzZIRQJRB=L754u%;/:EmPYadfcq^W-PIA;,41/`15M)l&{%z##"$&+1R99A)IxQfXu`6e9i|i>i DLUSqZaWfjlnQnnnnno5nn-mHllllll4kkl:mn@ooPnnn_nyno/oppqrsst3sssgrqpponrmXl k@jk k6kllallk.gc]XEQ[J,B; 4.)&%t#W""%/'- 3R;CKSZbFfjdiKhCaYOE;1) j'V1x DfL1SPYa f:jl`nn[nnnnnnzmxljiiii-ihiJj#kmnnnonooEoZopCq8r^sct't]ttUtXssAr'q0onmNlk[jkk"kwll~ll;khd^EX@QIBf:4 -)K%$""v"s%=(6.h5j>FMV(]d&gjhf2^UJA76,s#f$<.8DRNXl^e%f1e`ZR\KCD=9677'8{=DL S`Z:aHfcjlnEn\nnonn|mljhg=fWfQff8ffgjlmno>oooooopUqOrisdttVtttt1srrqpnoml\kjjjkl%lllBli0e3^XQCIB+:L3j,(B$#)!k!!$(j/{72@#H OXC_)ehjgd[CQFpqrsyt-ttu u%tt sr:q3onmAlWkkkldlm7mllie^X}Q IQA<92 + &"! U!!2$)09AIQtY`dfohie`^VLA7u-"  %/:E+OWg_b"da]VzP\J#CX>T998lklmLmmnzn,nk f_XXPH@d8)1)%.!^ p $* 2:CKS?[ayfghHR9X~_a!a^MZTOrICe?@;h@EKFQ#VeZ!]_^`__\[^XTPoKHED)BCDHMTXZ`9einm npSpnpQpp8pqrcs4t,uFqMU[E_`ya]dWMC8.%, LCS }:(34>.HQqY^abbla=\[WQK;E@G=;<=AE%JYOQS)VWY[XXUT0Q^N;JEiA>==>M?SBGMPSY_d-hkmnwooGopqrks@t%uvvwwwxwwNv5tsrrrrrq_p mjd^VOF>70*%U#f!#C$(-4;sBJRX\`C_r^Y#QGQ=o3( 5 Ka,, C#g-8DMV\bcdI`3\UOIgC>;;r:;=847P689p=.ADGMSIYn^cbfiklemnMo}pqrtshtmulvww;wxxxAwvustssss9rpnk=gka[^SL D<4. )|%#"o$',29?FO)U[^`^y\ TK@7-O", y UR,(,36>I RYP`ecNeb_Y}SMFA=!;a9::=3@aD"GbIJBIIGFB?<8T5Q2l1\0s137;@F$LRWw\`icfBh^ikmoQpqrtuvHw"wx$x]ww'vu7t|ss@rqpnbkgob\VOH-@82,)|%%8$'+H175=DKSYN]^_\DWNEa:0'g \O&M k "-8DNhV)^4bfecm]XOQK#D>:8>7679+;>@AAaA=?>< 951/,+*+-n1 49>DJPzV'Z^ae gjjlnpqrtMuvwx7x+x$wwv)ubtwsruqp.nkh+c^WQK(C<50O+)&&' +:/64*! b*I '2=HkQ*Y_+dee5`c[UOI]Bw=N9[755576A8 9:S99=8$7^53g0P-*s(S'&'(+.38=CIOUCZ<^4b1ei:lnp;qs;tuww{ww@vvNutsr2pomkifLbS\WQL0E? 82/+*)*,16J`_\ VQZKE@ 94/-+p++b-1N7 2Xe<L %>/~:TDN}U]a{eca\jX;RM%F@l;753K10/6.X-s,1*))(}'&3$#"I!"_"$&*Z-284>ESKRRW]aafjn(pgrnsNtKttttyssfrBpnl`igecc2`a]xYpU$OJEg@;,62}/(.-#.0*48A=ClIsPUZ~]___ZTaI?4+c"Q 0A|3M %V(>2=H PX]c!dAd_\VQLpF@:7k41.,*)D'&|%$.##-""!!C!!f!#*$'*/4{:AdHGOU0[-`Leimpr.rssssSrqpomjKgmda_]ZVRMHC`>:620k.H./26:?-DJoPkVZ^*^`__]VNB8n.%} @C 6PgD !*5v@DIR%X^ada_ZVPQLGVA<8520 -*('-%k$""?!"O"#"#n$$&'*-B1Z5;AtGNhTZ_ei;:753102}49Y=hBFEK$PVU[4]_"^l_\(g <Cx@:Fd T#+-N8SBL)SZ:^cdb^[VSNrI7C>:7P490-I*i(h&Z$#U"!"#8$%'(M)+.l047+BWFLQCV[`|e"hl9nbpsq4rqqonmel"ig)c` \Y}VoS:O{KYG5C1@7=<::99;>mB)FJNS5W\>^` ^^n[XQIT>5a,a#fW c)jn8,WE2kEL &1<ENT8[<_d|e"da*^[XUPKGCt?G;741/--4,i,-N.025 7:t=:?BDHKOTKX]+a'e hk9mLoOp%pppnn1lkixfb_ [VWTQ/M|IzEB@?>G={==?DA!DHMQUZ1]P`0``^]HXRI@j6-~%Dw# r+`%*ia0 \j'2=F|MTZQ`d7fjdcW`f^[XTPLGD:@=:)755t5 56%7k8:yGOU\bghhfdbg`5]#YU`QLIEB~@==:<=>n?A?C5EKHKNPS2UXZ]!_bdnfdhCiklnRo.p p)poanmljgc`\MXUROLJHGFFGH@I0KZMQUY];_`f__]\BWrQH?b6 -&_*  [nW,s) { *5^?HOVm\bfii`hsedlb[`1\Y&UQ[N\KNI"FEEoFiGIQJLNQ#SVY[K]_aceg2hijklmno{pOppoonmki&eb6^[YsVTwQOMLL LSLMNPSkVZ]-_^^A\[[XUNF=R4,% jx;q~C='X4  "+6A4IPV]cEhk/lQjiJg9eca1]ZtW6TQOONOPRTVVIXTZ]7_aceghjkclDm mcmmnKnopyqq5qpp,ocnljgeb`9^"[YWUSRRRRRT)UkWZ9\___v]\ZXESMD;2+$ ]-iy<?P. &#t-J7AHOUl[afJiiigfedb`][tYXWWRX8Y4Z\y^g`ibdfhEijk`l*lmEmmmmTmAmhn nopCphpnpoopnmlKjehfe'cxa_][YXWWWXY[:\]^ \[XVSPJ BA80n)J#r IhK (Y4EE7fM /$-_7&@HGNUSZ._dgiihggfff)ecba=``M`ackdfhjl:mwnoWooobnnamm/lkkxkXklmnoEoppUp;p#oomlkjUhgfdMbn`_]^W^!^^O^m^0]\[YeW^TFQpLwF>6P-&!H T"3|9M|fI/ #,n5>E2JlOTuZ^bdddrddeffffTeeffgijklmngoonmlk(ihgKfoeve3eefhnijlmmnnSnRnfnmrltkjiihVfdcan`+_]^]\jZXVUTnROLGA,: 2>*$ < =V&H SSi@ ""c*36; A FNJOkT,YH]_a1bBcdjf"gijjjk!kkMklqmm~mmmmm2lYjhfdbaA`-_^_`>accefhDijkkkl=lHl-kkjoj i4h f*d6b`^^\Z!WhTR4ON"K4GB,<4-'E!>  zKM>fN~aZVkr @" rui ($/6R;?CGEKPUX#Z[]|_jad{fh7hhi ii7ihggfFedc{aZ_$\ZXVUTTU/VX.Z*[]_`bbcPcd===>=?@_B=DEGIvJKLMNP6QlRRpR,R:QMP MJFC@>-<:752 .6)i$} xmdju1~VJj/1-<FA,($iGSa hT= #'E*E,/^27;@MCGRILMiNNOOPWOOMIK~I^GEmB?<:7l5322,23 4w579l;H=0>?@ABDAEaFjFG$FFEDIA>;9T7520^-7)%" 7yJ x4u^e>rV<Hu!#<KF)%  } #U%'*.37s;>gAB BBBBBB}A@J><;e9a74k1/,*)F('(;(*3+-=.02i3556789:?:c::#98753i1./`-+)&"9Y] a8\K}px)yK6:`&.2,+!drT" KU #&*.25677777P6n5@3z1/.R,Q* 'u$"} C7 t7x!"$M&'r()*x+D,;---.----8,\*)+'!%J" /Mb 2 pZr4e:_*0]|}%2% mO|8 ? H"%(*,,-L,,f+0)'%$"e }S|bi$iN)3 !k"4"#"# ""- s>zW P *  Q4fCq\#?T+%4ScaV !D" @P }*4J: J >y/ 9 k K -d 7_G&s& jN( )iI[Z`EjrUv~zVKk_@9<KZZK I`;i IS\"gp  )"@Y. H D - j1g|O  #onTEHq{j`OHQUD |gE4&Od0w { Y + h > ' Q  *4UBfvj3q?O$r->yxb>.AdkMA8""5y#yIW#g|jcvV6*(7?KRe55%/,^'2JKA[7N;AlxK-   qO>uso0|=d>@2?[p\?uWUTB UOkPJHdv=" "3Y`_N@;3Q|8DM0:29Ebvi\B'/#1v}smkl_gT%   '%i8)=CLQ\unL;'/hlhqpM$ *6L64Nb`YE"aD^Cx^O;".2.'6=N`itntM,  &!5/ 29+ #:]mVG].+s`M3!'51# (6Gkyt{rW2  ' * ,9-  2>ME0c}nbZNFJF4 1VfMGI7  "$#'+/( /0 *561'"#(M} {mZQE0 'Ei ]8    !"%/2+$"/6) ':PYSIGVh#"q_OB4*$)&0VxgF7!  j *^u9 )}l:RIi,]!Y"N%(o((%9"%-  (   " Y } N f  W qHV3C5`,#`;E    vj"sSFn1pPd5r/n3KM+>!Z""#Y$&5&&-%," |PcL     ' , 3 E ] 7  P m r {  Z  j<wYpUi$&~@ KK $+!W] I{QrL!"#$[$V$%$#" y*S S   q K ; B v  < R Y i n / @ 4 2 7 C Z h  L  SoUXE  /(ZqSrwSr1\:pY OP7i( ^ t  . c   # 8 N i w n M  $ : 0 (  / l cCrW4`x[m/  VX<9%v!!w!P V =gf$ #J@2KJ  . !  4 c u  + E S ` _ g P % { } _ J @ " . ( Q @<+UPg}7aC\ZQ?t3B%ec@19fSEd5O|q C    < Y r | x A  - ^ w Y E = 9 ; - 7 # 3 |}8g}d  B  t3G) _ 8TD-B)TC U[ B4}( = & - t #yhP'yN3 ;O_s3  j  \ +    g 7=  9 (`kB]Aj:V\}~+B 3@{.? C  t y { CpM&Y\J 1]=K~eR+=>f )  G 3 ' 2 U O h  X ~ P=AoMO#QPlf \agti 0  N t ;0 OYB4*)0/ klffnpgPA?Yu_^UpZ; ^H )  ,  s  V uQ_Kw2FsZO> r ~VT  S}P4Oi vuqWH<GYx  GxyTo9m 4 2   q  }  S m * \ Ap&/& O  g } %  8 hr!N{dcSnVXj^^T*,I`w1{1xb;tK 1 g  b g [ :  H q . D )  : $  $ D } E (  D 9'Xk3z:d4/`DCnhQiqQ$Jw 0b@!ZG\1g H 9 C y h W S _ "   * bgkw(I-\< ;G'Z465.(8YW[8E]  Y \ /    f n r Z > 8 F y \ 4  3 n V xJ[%KTm}8'_j+ma7{E0/MbWk)x| L$Id~@PmwHQG+xI    q T Yi64rg"?Wiz~C,<c :[d^m6_JBt-n1R 8ZgJ!$k:VH]n/G W f =wx\O2D,5C*M ?UVr\kb"mPm 6 #  X (     . A E > #  % Kw $v]`rz%+Q-aw8]q|b9;>p2vI?W/qMy~cG ^ SkPoyZ@& _)'# E 6OqE!I?fJ,gwe{hCS + coYWx{*s%kE|pMr Y3x'^g\  o,@6<=NK 1 W shHaN4 _&YG65NZ:`:G,Z8v-DOU`- k]a CV;&+6L\d ;,VY "$V&({*6+5,#,g,,v,H+++<**n* ))))))<(d'&s%" MbG q/H`;+L@e#U &IQZuuD)@eZe~O c-"T7Er  4 '']!D#$'4)+.03L5 67Q8 8'8D77766&5544S4D4j44|4)3x32 0.,*#'j$""Q^2d Y5-fDq5mdxo,]ki+0dM^6/{i C `:%> "b$1%')+.=03=57:7<4>C?AAB@BaB|B7AAA%@@?e>>>>>>>:==M@BDGHK.MDO$PRmTUWlYZ\^'_`abLbbcc cbbah`aa[ab0ba`n_^(\Z%WdTRPCNMLKI8F}C@<]8G4$0,-(X$| JTN } YII 6w(Q9!4Hr_FaM 'u %$([+/48xCGL2P6SlVYK\>^abdeghi?jklmnoppDp,pp$pOpppqqq3qcqqqZpppqqrXrrrrrrTqjpCnmll9kUjLhgecba ^[.W"QLtFAE<572-( "FH! YB*. :'?o"Q 2 *;RG:$*0E5:?DI`MR@UY{\b_fadQf"gijXk7klmnop~qCqr(r(rqq3pppqq$qq.qgqr rqqq[qvqr7rrs ss=s4srqqppXpGooUmlgjqhfe-by_[KWQLG B=K8c3=-(p"O `Jc=?8J^$A m "(/ 5V;@oE[JOTsXm\6_Ab{egik@llmnoppqqr[rs/sstIt:ss[rr\rrr.rdrrrrs3ssss[s9sMsst:txtttttt sdrrrrrrrqFpnmykigNc`\tWRMH^CP>6943-'"" q 2N:B<J J C J Z"'-4:r@_EyJaNT9X\_bdgTi[kllmnKnolop+ppq?qvqrks!st&t$ssos/rss7ssst;tttuuttuubuuuuuutsrqqMqpqqpppYoonlwjhyf^cm`I\WRNHDU?=93-&!@R N:"6CY&Hp|J"\'V,2V8?LEK2OTaX]adfh|jkmmnnhnnnno"oUoop pZqr.satvtuttttttuuuDuuv!vevvvvvw#wUw^wUwvv.utsrgq`pp6ooovo^oloo}opnn'lkigda]iYTOJkE>>80*o$[ +|-?^O.!#'-e2g7=CJOTXW\$_cf>h2ij;kkllkkkk6jjQjAj=jjkel2moq[rsttu ubukukuuvv7vwvwwpwxxwx xxwwvvdutsbqpknmlRkjj4iij8jklm:llkji!gda].XT O_IC+;4.8(!"J 3!Dp t!""#A#% %'*_.28f=C3INTYL]Q`AcfThj"k7kukkkk8jjihgfee`e e`efh0jIlnqrst`u9uuuuvavvw@wwx'xxxxxxxx wvutZrqEomkigfjeFddOddfgiklmmmm,lk0i*eb(]YXSMF?v811+2$%FJ g+Z*,a-@-.1.013I5:(>FCRHzMShX>\`FczeghijjHiihgfeddba3_^e]]s]^p`ad7fildnpuqsFt)tuuv^vwswxIx|xxxxxx`wwRvPu\sropsnflige3b`_]]]-]]_adhgEiklmn>nnm$jhkd`[VPkAAEaICNSEX]la,dg i]jikZk*jji]h)fdc'a`M^]\YXVVQUVkW(YZ]`dgYjlnqrt3uvEw:xxy/y\yoyEyHy xww_vjuPsrMpknlisfca^X[YWVVVWyXXZx\`Hcg=D;::+9I939V:<>AEIMQV[`eniqm`pt5vy&z zzHyxwufs$oQk e`[VRN;JGJDB@=<@;;:;=8@=CH%LOPTY[^cgjmotqxr[s+rKq nnlFhe^`(ZSMG ?X6.(&/C Eeace&efvgBhjUl mnoqBrs sPrrp9n$jg3b]X=S$NIF%Be?<;m:J98*654333468<:>@DIOTZX_dimr>uxyzz8yx}wCtqmhb\_VQNLgGZC@<><<;:87o6a6H667: <@DHLQV [5`#d$gjmxo\qTqqp2nl0ieaE[ZVOH@7/' ^ \!fIhj jkklOmoKpqr#sxtu%ttsUrojlhod5^YS&MHC?<9~6543210/..W.V/V01369=#AGNTZ``ejpjtpxypzz4yx7vsp+jd^ W|QDK7E@Z3BFK PUhZ_dzhKlnq5qr:ppmkagc^YRK/B:3'+B#- Hjalnnoipqsstu%v/vvVtsqInfie`QZpSMF@<730I.,,L+,,+,++c**x*u*R*+b,.71z5o;BEIPW_!elrvxzHyxvu@qmg`Y>QJC>844*0/,. .-. .D.x.../Y0302375V7;<>CH$MSQYA_+d1hlGoqrryrEpoSl{ieNa>[CT|LeD=5,$C% gjlncoOoq7rst841T0...M.o...../*/c/01D258=*AF.KRX^d-hXloiqrjrr(qomuifa\)TN3F?07 .w&k2m;npprMstwuuvwvrusOqlh|b{\V NGY@W:51)-L+((E'(^)*:+Q,9-1-X-,+G**))1)8(*-K28@H,PmX`hntwyyySwyvrnhb[TMFu@J:52w1//E...w.g.%----U-.,--0)26s9>DJQX_*dXimpr[sssrqOnlJhLc]PWHP5IA 8n0'"jlnoq rstu7vZvw"utqnjd^?WPHA:50-*)4'''()+5,-...-,I++.*))(P)+\0;5=-DLU4]?elQrvEy5ygyxfwVtDpk;e_ZYRhKE>95421 //D..~.!--O,,v,+f+B+7,.M149 =CJQX^dimps stt;s}qeolzhc^lX QJPBK::27,K&iln+oqrttuPvwLw;uvtplgaYRK/C,<5}0,*<''/&`&'d(*+-6.g/O/.|-{,,,+L)('()-29@I$Q8Ygai ot%wxyxwuqlh>b\VP2IB=9B632G0/..s.-- ,_++;*i)))*l,/`3i7s=8CWJRY_ejnr;suuut$rpymie^_Z-SaKD99EM_Uc]el9pu,vxSwwu;rnje`[TNHGA<9.53=0// /...-L,,+Q*))1)8*,/38=>CKRY_fDk.oru1uvquetrpmje*`ZT(M:F;@;`hjlnprs st1uv ujrplkf]^WP2H @K82,)&&#%.%I%0%&(#)+Z-!.R//*/?/:///S.,,+V**+*d--0|6>;C J2RZ a~hnrtvvvu=sup/m&hd^XR5KEq?;F6310//0$0/.--,{+*N)E()5* ,/3d7=DLqSZbgmmqtv#wavv9tsqSnjfa\;VOJEhjtlmnp:qr+rsPttspLmhfb=ZQSKaC);45.)'j%_%'$$$%o&!')2+,-.///0d1&1<0/.-^,++-0N55:@GKNV]e[jor>t}tutsqbo2kgb\U5NHaBM=B8 41U0p08141110/..<-n+*)?)#)6*,03r8>FcMUR\c2inrtvvvuPts'qmjfqa\WS Ni#jlZnupqqWr rsrqmjd^UN7F>B60+'%-#$3$'$}$%%'*(*,-./01222m1X0b/S.--.b037=CJRyZaglorstttirqnke|_oXxQKE\?95b1002?33^3W2p1S0/j.,+,)x((#) ),i.38@ G|OvWQ^rejpsv vvuuts|pnUjg}c_4[Xi|jl9n8opap|qQqreq.omkDgTaYQJB:`3-[)%$o#$6$G$$%%'(*,-3.S/f012322!10/..J//25; @GNVp]dEjDmqKrssts3rpLmDgaZT^N9GA;6211l234F4321M0/j-+)('((*)+o/c3:AtInQJX`]fslGpsuTv/uuut!rom&jgdKaz^ijskmo6oopq q[omhd^]}VMF&>60c*'$##$f$$$%E%&(*S+,y-.0j1233,22`10//0/1.038=GD6K!RZ`g|koq_rrsrrq2nirc\xVOID)=8x32134l555F4~32+0.,*y(''.&'i("+F.5';CtK*S[ahUlq|suWu1uu*ts%qpoOmki7g8ei ijln_nnp!ppqn%kfaZCRJC ;4 .b)'@$$T$G$%%&%8%%&(4)*g+!,9-/ 0B1Q12$22#11D0//.02L7L<[CIPW^ejunp&q^q1EyM\U\ci01^1111 0_0/(0Q2{7U<B`HOiVU\chlnopppq9on id^XRM;GB@=+743l4;4555b54$3A1/--*(&& %$${&(+-2#97@!HPVXQ_elosFtFuttrsrp|onmllgvgijlm5mvoo^nkyhkb\-TL}D<5/&*'%$$%4%%%%%%&E&''()*~+,-a.*//01%1Y1G1$1h1^3!5:s?DJQW_]Zch,lmo,opp)p0p|o m0iAec`9ZU)OJID@:7t5&444443210f.,B)'&B%Y$_$)#$&*-.5,;CKT\&bin rQstt4t's8qpo nmpllofghFjklolnnmifj`PYgQ#IB:3G,)a&G%$%m%%&%%%%%&*&&' '))*s+@,B-^.u/n00012!3446}9a=BH'MS5X]cwgkm8nnovohonli-eav\WR.LGlB=:)7544s332_1p0u.-)+ (&%?$2#2""I##'A*07H?DGSOX7_flq9sUt}ssrqo_nnmllyef;gZhjklKnTnplhjdh^VNG?70+,(L%%n%;%&&!&9&&%%%%%& &O&'(2(z()*+,-.0 13j57:>aC GM$R(V[`3e0ilfmoo'oxoHonlifc[_[>VP{K$FMAs=97*54 210/.q,+V)|'%$0#""!!_!"%.(-3;CL&T\d\jorsrrqpnzBGYLYQHUY^cbgfjmznuo|oooonm jhvec_Z~TONID@;8'53.15/.-,+])(1&$#J"2!N! t "%-*G08&?HpQ:530P.-y,+q*('T%$k"!!' ( ( !#a(-5=eFNWd_f,mOprJpqpn\ljkRjiiicbceJg.hjLllYjd_XQvIAE91+&%$$%C&b&'*''(((9(0''L'(S(''9'W'(?()*0,.37A<-@F?KQW[_Bb^fej'moqvqqqSq|qGponNmlkkyjsgd_ZkTNQHwB!h2il(ki+c]^WPbH@Z80*&{%[$$%O&'0'([))*****+c++*)))))*b*,/49T?DJQ+W%]aWdgljmpfqsCs@rr3r.rqponnwnmkive` YSMYF@-:5`0.&+*)#( '&D%S$M# "4!!A v  }!?%<*v2:XC(L8T]fdKloqp5p=o@mikaj$ihhi``ac&eDgwi3kjhb ]VVOF?&7/)%%#$f%6&'1'(*+.,*---.H/|0/..-C,~++/***- 0c6A;BnIOV]#cUgjlo-qrsttts'rrrrqNpppponmieb_YRDK"D=7h1.=+")'&l%t$$v##"V!! ~ !$)239BKT]dkoqpp nm jiihFhSh^_`kbdUfhjif`[[TME=6.z)%I$#$M%*&'H(B)+-s/401235d654218/.--r- /d29>FMTO[agknp qrstu`uTtsssssrs'rrrrrpmgidco]WPHAo:40,$)'@%$k$##}""q"7"!! !F!%;*W2:PC!L$T][dRlpqppnljiAhh h72F-*'%$(##S#V""""k!! !!%s*2:vCKLQU ]{d^l oqoonlj^hhfgh-hZ[a]S_beg`irgd]kX(QJB;>4A,'$G$;#$h%'?(O*,?/j258:=0>AbBLBJ@L>B;9G755V469?xE"L3SdZaflooRqIqris#t9tu-tttttttu]uuuv&utr[ocjte_OY(R$JC<:6p1R-)'Y% $*#p#T""""z"!!!" %*2:C^LiU]dKkoqPoonljhhhh1hiXgYg[^aeEghfc\LVPIA:E3k+'$$<#$%')c+.i2-69=@\C3E\HIIFDA?<::t9;>(CLHOAV \c}hmp.qqrYrstu tttt_tuuvvvww wew vtaqmiyc^!W[P/HA$:5 0+(%$}#n#:""w"m"d!!!!"<%*2:C\LjU!]d?koqHop%o$mjiici+ijTvVLYv]0adfhfb[VLOHA'92+'$:$$%%V&)F+X.Q15:S>BF IcKNO|OMaKHEZC0@@S?ACGLRX^din.pZrrArrs{t[uuttUttuPvMvw,wkwvwww)u|spZlgc\UNnG@994.*'%?##"O"!!!!h !"&%*2:'BKT]ckJo!pop;oTmTk(iiijkP RW [`C{HKO^QTUUSQ8<1,(-%#"!!g!-!7@VHPYX`igkMmlljgdc/cMc:dfH6=ElNU]saedaIZT?MF?8 1+`( %&'g*-27=UBHNTtY]%`bdeff|ecbJa__?^_`qb=dtgLilEnloqPrrrrhqrPssisst$t+tguuuuuvv2vnvvvv utro:kfF`YQIA9u2-(s%J""Q!!!!!/!~!$(/6?GOX;_Zfyjl_kck#he-a_o_?^`3a08_AJXR[!_ddKa[U7N?Gn@X82,2(&z'(,0t5;GA=FLiRW\_bd`f fgh gfeedSdddefWgj lEnopqhqrRrDqq9q\qrqrrs ssXt2ttttqtu uouuu[ttsrpmid] UMEE=61,+4'b$a#""g"!!Y!" % (/7&?GOX_ei!kjQif5a]sZWY^X1Y-Z+3dE4JPYV][R_b;df=gh!ii}iiKhhh`hfhiijokwlnhoq$qrQrBrcr/qqEqqNqqqqqqrsZs`ss sHsstDtStEt tssqokg`YQlm4mnBnopBpqrCrrrrrr}rYr7r=rqmpp'p pNpp`ooro]op/pqpppq6qpp4m_j9d@]nUyNG@92,(%##V"o"4!o"=#`'g+3:CHKRrZ`fhYj:gdG]VPIEAK@ ?\&18<FQZbHefb]UNG?82@.+<,].58:AHO^U[)`}cfghiij7jjkHkkl)l4lUlm1m}mnop$pqqXqrrtrrrrrsrr;q\pppp{oo/n[nnhoooonootooeo lidt^MWPJJC8;4T.`)/&$u#""!f"$4(-4975#[.8COQXase!hd`WQ>IB;4Y0,-0K6GdOLVp^]chij e`FW-NFu> 7t0-+ +]5@LsV<_d4hBebZhSLD=62./W17>E>LRY_Wdgjk?kkkl*l{lqlkkbkbk7kEkkklllm{nppppphpq(q`qqrrrrr&r rrqpoo nnnnVmplllmn mml7G1!+K'%;$8"[!!$&c+1C99AAIQX`Ve9iki=iYdJ]SJA8@0)N%"(m2=InS]chGg!dA\VO G@}9m501239^?GMT$[`f%ikl.llllmTm+llk9jAiiii*iuiNiikKmnopooopupq%qr$rssrrrrr^qpoonnpmlkkkl~m.mjml,jfb\VOlG@M82M,(^%A$" !!$'S,3I;CKSZb\fjDiIhwb_ZOFo<2w)!u%D/#9EPJZ`fg e_YQJCCV<7X224G:@(GNaT[|afji\klllmlm#lkigfdddpddeifMh(jVlnfoGooop@pqqrQssxssUs1ss4rr\qJpKoknn-mJlkkkl&lmbmlXkZgc]MWOH3@82O+'$r#7!]!!% (M.5>)F'NV`]Fd(g}jphfc_+VKA7-=$'*"+6=ALWZ^keffa4[SLE>9V44_5:`@;GNUt\:agj llOm#mImKllkjhVeyb``(` ``abeFh)kmnoop2pwppq~r4rsZssishsassZrqpoon]mhlkkJk[llmgmlhkhd]WvOHq@81+=' #P" u!!%*).0H7@HP[X_fhljgd`\RG=3Z(B '2 =IHUS;[be-fb]V"OHAP;655:&?2FMxTT[`f+iHkqklal\lSkjiLgea^:[JZTZ0[s[]._ bOeilnoopppqqur#rsWsssttDssUrBqcpoo-n,m0lkllmmmllRid]rVO?Gn?i7G0f)%!  !%*2s:ZBJR["augh@ie`WNB8.#. q #-8CO'W_cUf]c_XRkKDB>P876R:>9E KRY_dhkkklkkj~i fdOa ]5YuUT5SUW"Y\_ch knooptppqAqrsut3tuuOuUu{u)tsrqponmllmBmn_njnmmiwd]VCNeF(=5.(B$/  !&O,#4Z3)v  8?)93>J/St\`Hdca[BUOGA;97y:!^Y!RKE?;=8: ;g?DjJQW\`deefmeeicb^ZVQMIGFHKORSYH^chkn6nojoop pqrstuvTvwrwvw1v]utsrqq2ppopdppppolm[h;bZSJA91+%B"  !$*1:1AICQX_becaZaQF<2(<y Q)M3?TIS0Y`bd`S\vV/PIJC>R:::x=]@GEfKQVuZ3]_T`__]\TXTPKTGnCA@BDcHMTZ/_ei/lm n n6#.^9DqNV@^&adb_YTiNG+A<;=9;n<@EE.KPJSWIXZ3YYWVRNJ,E/A=;:<>HB`GMT0Za/ei\jlmWn%nopXq3r/s8tKulvQw7w~wtw vvvIuitKs$r"qqqr q`pmj9d&]VMEw=<5-(e#" !"&D+*29A*HOWW\i`aa].WcM|C9/G% q_v v(3>IRSZ_d"cbK] XLRK~E?<:a:t9<?jD}I-LOPRRRWPqNKPGC>:7%5579&<@FM&TZ_dVfiYjlmnopqrstuvZvvvvvv0u srZq]q qq pon$jf`cYR2JlB~:3,O'##("%#%t*8/7x>REqMSZ`]a_^XQ|F=3 )  :1X #.9JDNeW]Dc^dd`\IUOIaB>':Z97A89=]AxEVHOIKKK_KwIGD@<85 1z0W02S4J8;A\GhN+TZM_b#e2gGik3lno)p2q_rstuPuv3v]vvutswr\qqPq2ppmkgb\iUNVF?e71*x&$$*#%(.u4<BIQW]O_Aal_\>T|K@6-2#!U TSO (3>ITRY`ceb_YSMF@;9#6X557:>*ABCCD/B@=)96;20,++-/37noq*rvs{ttuuuv&uusr~qXpoo1mlig bT]TVPIB;4w.)v'3%^&<&j)-4#:ZATHNOV,[_<_`\X NEO:0'w p1a} ( b#-9D#NlV.^;bfeca]XnQKDX=9 532=2469:<<71/,('&}( )u-29@FNTZ^a`K_ZSH>4*!  f"l5'2d=}H*PY^dee,`\)UOI4A;64e211 13545n5C5B4Z3i1W.+)'%$$M%&),1+5;@FLQV[_c=fibkm^opwqst!ttttlsrqcocljhfd;a^MZMU6PRJE?94:.+)K)S)(+.39g@ FWLSY]_`aE_;\UM.B8%.$ RIv% y!+p6]AeK/ThZadf|cO_YTN:F?9;510..-.B.v.W. -0,g+)'%#"ELRY4^Sc_gjlnop_pjpqooImljgd`3\XUgRWOfLI4E@<952/.h,-/37FHQ>Wj^XadNbZ_ZVR!LG)Ai<8520^-+F)N'&$""0!!!"8"t# #s$&[)9+04]:?FZLS0YK^UcRfjplwnXoooonmlj fc` [WSPkM.J/GTD?;8m63200s02G5,:2?&DINN5TY]_a:` _\QWNE:Q0(@ kG@@+ R!+7AKIR|Y^cdvc_$[W-S1NIKD?;[8 5R2/,G*%(!&$### #T$G%6&')+-0,370<*AkGMSY^c^fjhlenCnoo&nm^lTjYh!da{]QXT[P=LIEB?W;r8H5433;23R4]7;APFbKPU[/_ aab8_^ZXQG(=3)!Y ?O>xqALdg  _$o.9CL6SYd_cdbc_[XUAQ`LGC@ =F: 63}0.r,+)((j(g)*-.03I68y;J>BBTFKQ3Vc[j_cg,j[lGn"noInn!lkigdaK]XTOL HQEA>;9f777K779';>CBHgMQV[*_ab``L\Y,QH>O4, #Ig _#eh3+ZM 8]P &_"%0;EN7Tr[`HdedaR^[mXU1QLHwDAt>C:74200.../0357:=@9BE@H|KP+TxX\`d)fikmnGnnXmlkigdaa \XSVNJG C@>GOU\afhh,ed a_] ZVCRO KHECB@?>?O?r@gAsCnEgHDKNQTVSXrZ\_Daceg7hjbkmjnNo nnmm kQiJfb^ZOV,R0NKIGFEE:DEF[HILNRV[%_a bmaa;^]WQHx?5-6% ~`t\! b hfS *5i?HyOU[%aeh_gfdcJa_]+ZVSNPaM{K=HGFGmGIBJLNQ*T+W6Y[^_axbdf2gh{iWj2kDltmnomoloOnqml6j_gkdV`]&YVT QON}ML:KK!KLNDOQTX[^``_]\YxUOF<4%,[% ^U x8n{?-Q "+6@HOUQ\ahfhihgqedcMa^[XUSQQPTOPNPRbSUXZ]o`&bdFfg2hVi1j9jkkllFlmnopTpJpo>nmDkiEfc`^n[YWVU-T-RRIQRLSTVwX[i]`M``_3][XSMD;~2M*$ t \](as9 6J#v #[,6@GMSX_c|fg_g0eeZddcoa_\ZYXWWX[XZ5[]_b'dfhijk kckpkkkk}k*k&kal9mLn[o1o_ofnnmlkiXgHe^ca`^X\[[ZXWW:WXY]Z\E]^_ ]\DYWT}PJDBa90k)";% ]GhO/\.?;'W< #,6>FLJQ\WP\adffff[fffedc5a``K`abScegilmnooMnnlkkj izhhhijlmOnnno.nnmmkji7gfKdcla`]^]];]X]^o^^^]q\HZ5XCUR LF>6{.>& 6 )}IZc<} -# +i4e<{C@HLQW[_abbcidhefgfee5ddefgLhjl mn@nnZml0jhofsdcb#aa"acbd.f gi3jkllmam6mlbkj|iJgfeZcb`q_;^?]]]B\ZXVuTRPeLzGAF: 2I+#$5 R 7YZXl7{~  8w!h)o195>CGLQVZ]_,`ace?fghhhhhi2ijklUm!m=m B6FKO5R3TVXZ\^J_}``aEaata`#_i^\ZsWT{QMJHIED(BC]DGFHJMJOR TVWVXY0 ? A`c#(-0=259>=B[FJ(LPNMOQiRT5U.VWWWWWUTRQNjKGDrA+>;9F767U83:8<>6@uBEG+I%JKLNNOOOONM]KIsFC@><;#975U1-)$BNn Clfm}?YKl373@E=&%1 c!%(+4-1C5[9>6ADF\H=IIJ4JK~L LLLAJIGEC8@I<96]3Z1.-q,p--/1358+:y<>?A_BXCyD)DDDCC/A@=; 86q43a1/,)%p!H ^U+[fCoV;Gv%)ALD%c^TM O W""$e&)w--1W5l9-;=>}???=?]???B>2=4;z97'4|1w.~+)&$#"#}$l&D')+-/1356\7%88888]765S31/.,+V* '%O!l& & ~wMdir*mB14Y.7:2, RQW @ |Jf"7%w),/y23j4}444w4Z3210J.,*''|$!D v$1!#%'c()*+,,m,T,<++)('P%$*" GgQP U R lc4^9\)+Wxz .=/i2c G@S:B #&'))*n* )('%$"!%myZQ{2-J t!!1!T! FI4 L  ;!]S!<\1'2N``S ($ &nJ<3  2j2P??5+}^  - 2 X_rt  r Ff5]Wm }!#&COO#?gPmmc?<i `?67GWYJ.jh0B(V 'lGR7 c v%[   R dto(G~I36hsaXIDPUE pXTRz e?P  i ) $ # q /]kLl>^Z r!DX8JSmCLh1r}h>'5TjLB9 # 4tfo*CuINW}mP7  %Ae~c)4RR@H/}J59bzM0   /0~Xdf!UkH9HHWmuYD"gOUaYB%8 EfMF@X~r= "(#/D;2)(5:Y; }`8)>CMTnta[D, 2M9 "q}vnkkjUXx|M$   !E+M,'BR^^iT?2 "c}kge~nJ$  + :I0 -NmrhO,8t<H%`O@  +% *.2Iciwql~zP/  % " 5+ 49-2Oo|mbqs^O7#  */=gz|t[4 '3 +2# 1>) !8?<(/sxmbXL@8/%  1)L iQE@1   ('!'-,$"(GD.%2-  '&5V}nWC1!   )>_ [;'   &.3.%,, ';?- 1M]\RJWu v]D1#"44"3QodB4%  s 1fO42N  8qYs5!$'d'&$ !~!`  # & _   U f  O e>N)0OTg gq/%`7C   o0zfc7WgS%{|L!,"f""$2%I%%%$!ILh!   ) 4 J e I  N g i s  J  z|>$O{#&#~8 TU .3)  _+`i&{niPLq^ "#$)#$*$#"|!jLo 5  q G 9 = n  3 K X n {  & 4 ( ( / 6 J ]  YeW`I<   '&\sSsv _}:#6%v  7i  e #  Y  % @ \ z  \   '   uXVtRm,YTDIJ|3M2%]##*cP< `    + Y q  / N _ m k q Z / z n M ; 6  (   =>0k:a \v2^Fa[O;o/A}$_^B/1u~B:e"H/D,hcKG4 c 2 ^ L  : \ y } K    . Z | y f K 3 ' # *  / <My/ 9 x3F-\ 7SB1G4PV kz,G3U<IeYu3  ,   ev`BuH*1G]u4  ^ o O "   i e}_ ~ y  2 XpA`?h!G$cdw8dZ5j> e t 0 W M Q !uL0ZW~I=l=>qx^F 3!S } l; ' & G d  M o ~R@?vZ_,VDk`7xC=o8{Ga R L w 1:q;TH?70)" ]gZ_mhYF@C_#*gZDtdN,OH 5  (  t K vP`Nw0A~eRw/ z L zdA 2xM Df{csfRNFQd4_`zDvC  l 4  p $  O s * \ >o''. ^ h i 2 /  , - !Is#Krdw \`A5DEUxM .E_z){^`f,a/s , g  Z b \ <  F o * : A   C /  * @ s 4 h + b 7 j ' %![S+@e++jX,TXL^_G;Xw>gK1qF=$_{ @ = A y i V O X  *   =dVg%Gj~{*L# /p|KKz $?g|j3m&?X  S T )  (  e m r Z < 4 B u b =  < o N l;|,pFam)NSgS}`RJXe'w ?zf]djz}. .P}E kw[oFVF-W    q Q VwA:wY K[^tm|iG'#,-Z[|.V6dp[9Fk)VkR1=/RN^i)K V d ?mp\?!}sY/C CUDo%( z ,-._       @ h M ,  >Be0"Y\o8.,T$Tl2bst`; @)=hVZ5Vuq>h<zt4=Y|_7(    6 Z9e}UZd2 O Q , )2ObyV*YU{Z^yg{lDO 0^urTHnz-r_-yD^P0N0L U  bOO?#* !0!!!!T 5Dj]l.H )#h`TI,PTQ1b<I.bF4BSSV.6H{,OK"JvV"3K E d<Nk!0#&O(*+--]--(,,'+**e))(('''Y&%%I$Q#L! k, . l4SvT =Ci&O#FQey~B&7]whU FUL*QFUt  l4r  !u"#,$k&_(d*-x0!25789 9(98887N655+4w33222x2G110//3-,D*+(%#!ya}?19L I*/zb9g_t) O#wk37Z6F~?9y V  Z3H!$A&R(C)*+- .0\2u469&;o=?ABtC`CCBB{AA1@?>>=h<<<@BJDEGIK$L,M*MlMM#LLlLK~JIIHvHGGG8FEE2DCBAd?>L<;K9Q741).)+U(&%#k ( <"6vwq1NfJcP| jGI( +z!C $'+/82[5h7:}<>@+AC+DF GI+JLNbP^RTVWY&YYYYqYXX4WjVUUGU TTTES}RoQPOML(J9HGEDB@W=:7k30-)%"pqe  ~K8.NJ4? "x>  f!$(y,J0947n:=@C.EH>JrKMYNBO+PPRGSUwW8YM[]_abcdccccgc.baa`c` _` `__]][ZXVxT>R@PONMKJGUDQ@dCGKO/R$U6X[ ]`bdfhghij6jkpllm#msmmmnpoopUpppq.qqqqq/pppq;qqqqqqqppnn.m}llji8gecaK^ZVXPKF%@;7K2-(Z"ox f5  -A lg[%,*06:;\@ZDIMQUHX]Z]_bFd:fBgiOjNkBllmno oooooolo7oPoppYpppq;qrFr_r.qqoqmqrrcrrrrsrrxqq`qppponmki]g4eb ^ZaV&Q6LFA=8@3^.i))#W, -.Ok$ 14/8I;KPYj+ ; *$()/m5;q@FKDOTX>[^aKcheg*hikl-mmnjoopPpq=qqr@r*qqUpppq qQqqrrs9sssssQsZsst)trttuuttosssXswsssrrpoml iifc_[WOR+M!H C><94h.(" l|2Jo#m05/9 A 1 (  8 * cm`>$).4s:y@UEJOTX\_[acfghijjRjkvklVlmImn'noUp2q qrr qqqqqrDrs sqtttuu"ttttu(uouuvv'uuZtssrrXr?r;rqqqeponol`j5geub_[WbRMHD?:w4S-'"Gh%+ $7_";*4J\@a$@(-3I9A?tEaJOTY]adheghj]kkik'jjjjj|jjkQk}l ln/oq&rVrsrrrssYsttWtu:uv/vkvvvxvrvvwwBwwwwvutsrrGqqvqpppppPonmkjrhfc`\XSOJE?9623+% A8 K/3MnFM&e %).38>CINSoWg[_cpeghTCWHNuSW[_beh,iRjBjHjjZihhfedba```5`a bdgjm3owprrsttGt`tuuv,vwZwx xAxBx3xxxwwwvvduFtrlpoBm}kihggffgpursUt*u.vvwxrxyxxxxCwvutsrzpoSm jge'b`b^G[ZiY,Y@YtZ[]_gb!e%hDk=mTo,opppo[nkZhd;` ZmTMF?;8$0(i ) |HwCvCD&D-DkDEGSILPT{Xy\`qcehijpjjihfe b`(][TY`WqUfSPNRLKXK JKkLN-PT8X1\o`:cfimoqsuCvwwxay/yzyyVy-xwvutrFpnkifc`l]IZXVSReQ5QRSU\WZ]`Vcgjmo'pqqq pnliGe`\*UOwH A@92*"7/W =NqOOWOrOPQPRU:W[^Waemh?jklm@mlkigda^t[XU`S(PNwKIGNEDDnDDDFI LPUY]aeimp?rtvawxyyzyyWxwv\u rpDmjfc`]:YV>S.PFNKJDIIzJLN QSW[?_Dcwgdk@mpXqmrrsr*qnMkglc^SXuQZJCJ;3+i#X '  WqXMXXYEYZ\g^`rbehTkln4no>onljgda,]1YU6QOLJ GEqC~A_?>>>>4>F?AEIKMQV;Z_dXhzltortvxytyz>yykxmwyusq mi`eYaK]LYURFNKHFD"BABB}DbFCI]LPTWX^\`e/hl)n(ppr#r&rpnnkOhwd._YKSLEb=5-n%m, Z_a abbc/dWeg[hjAoDHLQ#UKY^~bg6jMm.npqrreqxolif#`[vTNG?7/' S3t ^df2ggh[i"j7kvlmn|pqrssCrr pPnGjgc^%XSNJ6FtB@!=;:87854322h2:3s47:;>AF|KQiW'\bLgkos6uxyz yyxKvspkf`[UOJEB.?=;976T5h56278;=AEKIkM@QkUZ__c~gXj0moqqqpo#lj,f;a[VpOH@81M)#J pijklmonSoZpquqr~stuEttsr]omhd_YTNaIgD^@m<:576d53210/..F../136:>DJNPV]bh0lqCtfwaxyyyxvPrni8cF\uUOI3C>P:7B543!11 0012357;>ZB/EIMRW\aeilXoSprvr,qonkgb]XQJIB:3b,$"  j^l0mnoEp=qArQs!stu8uvu2trqmj6ef`wZTbNDHuC>h:7)5+372<1?0//Q..9-- ,,-!.B/h148=DJQvX^TdioVs"vxJyyny]wuqmga!YRKEM?:6=21?//s..}.[./0134Y6v8;>BxFJwONTZ+_(cgk{npqqpomk/gIc^wY6RKD=e5.K&`1PL $kmobpjqr#s'ttuCuvw7w utrxokgUa[UFNH7B)=98,41a/.(--6-8---$-,,++.*+<+-t/G3@7>DKS&Z/aTgmrv*wymxxvtpl@e_W{OHA;662/f.<-,,,,-J-./ /0135O7;C>BG>LRsXR^ c gk npr)qqplo l3iMd`[ U5NLG@ 8O0B(  kmopq`rstbtuv3w#wGwuVspm!gc\V&O H A;7y20-V,7+-+F+c+,v,---,,+M***Y+d,p/3d9m?G+NVU^!ekpuCwXy"xx^vNtqpl9e_~XPIBl<~63*0*/------a--..B.[./0}2@5E8<?EJSPwV\b%f[jmpZq)rqq&o7mifam\VPIrB":1)"%ln9oqBr&s|tu?uvpwwwWvtrnjcd\^WPJHA;62.@,"*))F**+,-...-,o+U*m)))M),/4:B`J6RZbwio;tw yfy)ywu/qBlf`YR|KcD=74/1/.--F-,,,,,,[+++:+,.1F48i=HBIHOUV%\{agjnp{rcrs5rpmk^gc^YYRKC;B3/+q%kdmoqr stuVuvw0w~vurp?kwf[_Y"QJB;6O1@.4+3)(()(*P+],-./0/.f-c,^+~*))(*,16>F9NW^flruxyHyxvarnhch]VOHB(+'-1i5:{@]GvNUe[agTkoqstsrdpnli5e`%ZTLE>82ikmoqrstNtv*vv~ttrnjc]OUME=7c1%-5)w'&Z&a&['O(=)+&,./0}0V0/]/'..,+]*%) )*-18>yF5MU^ e=l@puKvxwvsplkhxc^XRL8E@;85(20////..a-m,~+{*)((3')E*-05b:Q@GNU\#bgmp'rstsqon}khdh_ZBT6MGBSZ]ai"nAru wvvtnrnkggTc']WQJD?;7G4|100{01Q160/.e-,,*+)(o'h'(h*,04:@H_OV^dEj_nZqs@tossqopnlThe `d[gUPgKFhjXlOnppq^qrsVttzspmhbZScKhB;&3.s):&$d$7#$v$%&( )+-b./0 01j2i221u0D/---j/E1O5:AGGOWv^fSkpsuEunuts/pvn jfa[TNKH\B>9)522!23 333Z20/i.C,+J)(>'')3*j-p05;BJQY_` fkprsssDqqTpn'k&hRd`\UWSOhjal/nPopq3r rssqnCkeV^V=NF=6b/u*&:$#""##$$%'`)<+:,.0/P091A2T34432100/015O9 ?E-LTX[ciYnqt.tuu t^rzpmjeO_ZXjQKE@:7 333045z55q4021 /.,<*e('&''),J16=ADLT\ciAnTpsassrrr?qvp+mkheb_'\Xi4julnop@plqgr rqokgaZRBJB:73,)%#k"a"# #$$%'(*,G-q./02-345t54322;122598$=CGJR YaBgbm@pstNuAttsGrZolg|aZT3N5H+B<8U4335E6.6z654=2_0.-+)'&&&()-29@HBPBW_f0knr"ssQr|rrq*ofmkYiEfdQa_i*j-kmooopqjqomi|d^VNF>60*'$.# "{#/#W#$,$%&(r*.+c,X-u.0 13i4555534y33R3m24U6;A+HROW&^eEkorsttBt/s\rpnaiDcY\>UOJD>|954Z4/567;7654720e.A,)(<&&}%&^'*.n5;DKS\ bi.lpr9srvrrjqpoWmleki:gf%higjlnnnp,ppnl9g_b+ZSKC<.49.N)^'$v##y$$2$r$%w%&(2)*M*+-0.o/13Y45)55a544+43V46;@GNV ]jcjbnqrss5s"rvr/pdnAid]KW Q4KF@;7R5t45677~765 3|17/,*d('-&%%& (,298@^GOX_Zf jwnqrrmrrrNqfp/nmmkjighikmmmohpomAjek_WPH@9e1,t(&q$$A$>$$%!%|&&f'( ()@)*m+,.r0*1345555c5(5 4?5H7m9756^67 73665y31/r-!*('V&%%%;'()/25`7$/+1'^&8$$%%x%%&&}&'9'(f(j()`*+,.S0)23n45"556(668#:?VCIOVf\bh0koUpqqqqZpoDmTie`h['UP2KEAH?BGM&RXx^bhknp q2qq'pp6nlifa]WRZLGC`>;]8h755544'301/-+)'&j%$$x#$&h*/-5(%%%&&&&9&`&&&&'''+'Q'(T()-)+c-/182o3468:&'''''m'(*+-k.y0W26y9>BFKPVZ^brgk npqrrrmrXqpo mkjBh(fbY]WR&LSFA,)*)(^'%$##"""d"%s("-s37;BK0S[ci6o+rsrs(rwqo?n-mllGlbbcdfh3ikkj#e`YRaJ+B;~3m-1'%$<$%&''7''(:(r(((''(M(''v'(Q)p*n+,.16:P?iDJOUZ_VcfLjxmprAs^sWsmssrgq`onmMlkOifb]'WVQK'ES>9C4 0.--(,(+*)('&%$#""!!!#%*0/8?HhQ^YagndqsBrarqp`n}mGlkkyk[aabdegi'k}k:iVd_pXQ`I4A:y2a,D'0%v#$%n&'0''(w)))*f**N**+**)))m)*,+3+.:1l6;}AeGWMT2Z_dgj"mp0rhsatltwt:sssNrqXpLo{o-ntmjgb]\VWP(IBTDLKS Zb6gmopqqrs?st#t)t ttWtu4uWuvvvvvvEts orkfN`YRLE >83..+(&%A$$/$###>#""V!!j"'"&]+Y3g;CLU}]dkoq[p p4o.mUkKiiiQijWY[~^&a=dxfhgd]hX QkJB3:3+&#"!"#%&j'(+.26.8;=@cAyB@>8I;AG#NUg\dirnpr4rrfrssnsssstTuuvHw#wx$wwvwuqojAe^X~QJC=7o22.w*'%$###H"""" !!a"+"&z+e3V:CLUM]d3kwo.popo!mTkaj$jijkSUY\`QdfThgNc\WPoIAA92+G&J""":#.$Q&)'t)H+,.f2`6:>AyCFGHFEBH?=;Y::=@EKQdW^ehjdnpr(r!r[r[rrs8sksbsttuvwxxxxqw_v3sqmigc^=WQjklIMS+X^c!ehgLcs\V:OhH @L82*&A#=#t#"$%(*-05:?DpHyLORSTRQNKIAFaEsEHhKOhSX^cpi'm9pJqarsBsss~s4ss;sqt tuvAvw5wxWxxnwvutr_okgb+\UNG0?92-)7&y#"!D _ e H [ !]%)1`8AJzR[ahlnmn*m3k3i>hPhijWkCHO'U\ae!hgcX[UOG?8p1*&R#C#u#K%&),M/3n8D=CIMeQTXY?Z(XVSQlOPLKKNT\VY]gaZeHiloqrssslssrrrrst0tukuvvwvwwgvvv@utwrp m-hd{^qWPbHAt93-)%#K!s!+ $ !:$(07@BHPX_fjnlkkigd}c cpcvdf|6=EN\VH]b*ffc|\VOMH@82g+'$6$0$a&)M-05n9?DElKPU&Yc\L_B`aab`"^\[YYFY!Z\X_.beGhkn|plr+rsfs/rrKr=r^r.r2rxsstWu*uvv9vvvvvvutsqolChb\U[MF=70,&$!!!)! . !*$x(u/6?GOW^ei*kjjjjgd|a]__|_"`hb$08hA4JSM[`eed ]WP7HA93V,(%4%%(+j/38=C+ISO.TWX)\^abdcc9aa`e_u_%_`%alcehekmtoqrXrs&rrrqqrqqrrsrstuDuVu)upuvvuuCtt-sreqDnkf}`YR/J%A:3.(%c""!!H & !D$(/7(?GORW^e,hMjiPhhe@a5]FZYX}YYZ+3q=GCPY_)eed^XQIBq:4-)& %&*-2Y737 1J*&##!!U  !Z$)0 7@ GOaW^{dgihHfb]Y3USQRS.&?/9'CMW_]dmef`[3SKDNTOLII!I!Z*5 @JU \jcfgc]UHNFj>J780,('):.E28O>4DdJ'OUZK^{`cgdfgxhhh=hMh]hhijjkm6nopwq9rRsDt tCtSt"t ttsswrr%qqqr9rarDrqqrr>rprOqqmq]q?q:p(o+kgaYQJDV=\6/D)%$+"e!  ";&+p2:CJR(Zl`f-gi|fcx]VP J1FA@8?&1G9V75#-8COUXaeigc[qTLDi<51:+*+16=sCJPdV[`cefg/h?hiRihhXh^hhiejjklmo]pqr_rstst'tUtttttts@rrrrrrqRppq q~qbpooBo&oFonnn?khbE\_UOIEA:f2,'%#p"! <";$)/c7=?GGOV^d=hiOje`TWhOEG>714.+0*5@ KU_edihe^PWOG@>94.^-:-38V?LEpKRW]aeg h3hbi6ij ihgg/gmoqrQrrrs!sst[tftAss7rrs0sUsrqq'ppppeonnin'nInnn_limd_Y~SCLDm<53/1)&W#" !a$'-4=(ENMiU\vcgkji0c[rPGj=3*"2#-8XD6OJY`ghhb\UMlE>7821S05f:AH MTTZ_cfh,ijj}jMjuiqge ba__`aacMe8gjmpq~rjrmrrs"stt-tssrrssHsrqqSppppofnnEmn"nnnzlYjBea5ZTLE=5/)&"! K !%)0Y7@VHwPSX_AehkHiWg,_WLB9 .P% 0O& K)u4&?KjVF]ehi#dP_VOH-@R:L4z215:B HQNTZ`djgeheijLjiigeb_p\ZZ[\y]H_#azdhwkoprMrkrrrs:sssVrrbr6rbrssrqq^qppp9oznmmnBnnnlkgSb[U MF>j6/)%""!' "&+82:CNKjS[b#gikhe;\SH>4\)Bn Ip%/;FQYbEehKe`XQJB<64P259@GFdLSX^cffh^hhgfdLa^DZxWlTTgTVWZK]BaYeimoqrrrrrs srrcrrr`rsTsFrrIqqqqwqpIoAnno:oognm kgb[TMcE=6 /P($!D a "'y-5(=5EMU^d hij~faX|NC9/x$i : X *6AMV^c@gf b[4TMqE? 853w58M>(CJPVi\a7defffec`]2YBU*QNMMP&R4UYe]bg3knpqCrrbrrss#srrrsWst$tss1rr}rErqq3ppp:pppon lhGb[hTLD=5$.'# w!"(c.7?GP=W`VeiiRikd^KTJD?X4*< Ke -&0<GQAZa_eed]WPIB;8567*;@+FCKQW\]`*azbb=baU_[[WSNKHQG2FIiLPzTZ_Dd"ilanopqhqrRrss2sTsstYtuuttAsss+rrrfr qqqqppqnvl)gaPYR|JB:3*-&#. B :!$m*1:SB/J RnYaei gzfR`=XN3DR9/2%BL N6f 2!U+"6NAL:U[ce e_[T6MF?:666f9PH98679u=xAFKOSFUCVVVUT\PLGCX@*=*st tuuuu4u u utttnss1rrrq[p,lhb\KTLD<6/)$" !"%()18@HIO`Wo]c/dea]sTKv@6--" A]T R *p5@K&SD[`d\b`WZUOcH4A<9D666=8;@EHLNOPPDNMjJEFA=69668579>yCJQxX=^cgj lmn[o7ppqqrnsYtNuuuuuKuVuhu]utss/rrrvr)ptnjf%_XQ,I:Au:3-(J$"!"#x'j,55ADFYHEHHGuEB?;7U3100~249=fCJ2Q7W]Qb!e!hil'mnopqWr@s ttuu&utuu tssr/qfppp\omjfaTZT LE=71k+D'[$7##$&t+a19@H;OVm\`Wcb+`YRG[=o3n)   T 5i}*%s)q4?JSZ2ac*c`2\VPIB=&8E52Z11(36:=y? @AeA@>;8{41`.,++-0s48>2D?JQW;\d`cfhjlmooq qrsttYtttttsrGqwpoonWlifa\2UuNG@:f3.)[&$t$$&)/60>E;LITY_/`c`]rU=L@6-@#C S #.9DNV/^adbbP_ZlUNSGU@:620./t1p4789:a;:6852/,*(x('*0,149>DK PV!ZR^Ja_dgeikWmnAop|qrWs swtt6tBsrqponmkigvc`>[U|NHB)8E3=0|-4,],t.Y/1r2233-2W0-*(;&$$$a&3(c,$/4 8>~DWJBPTY]-a4K*q! $M YZ t# -h8CLU\bdee a)]aWjR KqC<638/`-~++,,--.--v,7*l(%$"""h#%( */839>DJP=UQY^Lb&eh1jlno-pqpr;rvrrwqpo[mekphfc `C]YUQLGB[=d83|/?+A)j'(),/51:AMGMU Zt_`Da_7\UMBB8.D$r sBlwKdI~&1=GNPX_cfd8a+[uW#Q>IB0;51K.+*)(((((7( 'w&%*#" v 0!"$=&|*3. 3/8X>`DJPU[1_cfikmnopCppqpoml'imfcT`\Y5UR9NKJSEAV8P^I.A;q6o30c.+_)((T't&%%0$#"! +  !#b%(M+05R;.AQGMSYQ^bei>kwmEmnnnnnmljDgd1`\YAURN{JG_C?;730-,N*+[+.`17@EVKQW\aRdhzjlllmsmdm]llkki7fb^ZVRNJGC@0<95h2[/{-,L,3+-/38l>^CIlOTPZ2^9abab`]ZUMA7.O$ +5@BJP YQ(d3>GQW_jcTfd@b ]YUAOIC?<;85R2/.-*)F'l%#"!"#!"F"#$&:'*b-31b5;@FLRW\a8dh!j&kl llylSkrjhfb_GZVRN>JEBR>;8520/../0@26,;A@hEJOU8Y^'`'a`x`M\WNiD90(ad H%qO=s*2 X_!i+6AuKGRZ_eeea^TYUQKFB? ;B741.,*(&%h$h$w$b%8&H')_+$,/G15X9=CHNS+Xs]aqdhikoklkk*jiVgada]4XTTOK"FB)>^:753 1)0001359/=VBGLR)W\+_\aaa_^"XlPF<<2@)i!o\ >U=x q?Hx` HF$G.w9~DLTZ`cf(dJa]hZ^WS_O#JFB?KKLMOSQSVZ"]`aa]`i]u[VRHKB9Z0(! @t8tU Kj  bo#-+7F@HNSZ_ad}fgff?ed_ca_\PYiVTSRTQRSUVXZ]8_acetfhhitij>j{jk kl}mnoupoonmkig|* 4*#,5 =ACIpN4SY^LaVcmcccdjddd]cbbaavbbdegyidk$lmnnnamlkMj"ihgtfg@ghj1klmnWnxnnmlkjiLgfePd+ba`^]]7]b]^^^^G\ZX UROJ$Cu:1)f"IA F  CR}t =0 "`*Z2:&@[DIMS5W[]^_*` adbd*eePeHe defeghiijkm2mmlkiigeca`F_z^_d_ac;e@ghjk kl lJlkk1jai,gfedmba(_|^U]}]"\\?[~YWUKRP MIE>6.+& S =d1\~[XmJP[  o'/w6o;@SDH~M RUY&Z\p]_ad'efgLggh^hiYijkkkjhfdba_7\ZXmWvVWXZ\_QacefhKhiiiii*hFgjfjedb`_]k\ ZY=WUUERPN;KHE5?91*J#U5bt ",1l[re^]|~%> ;$+16z9=#@E INrQTUWY\{^`abbclccc]c`cOcxba{_ \YVT&QrOPLLKLNPyRUbWY\#]_X`?aa_aaax``d__]\`Z WUSQqO LJ GFID\BT>j93[,& h/ Q ./+d!sls~^ZNZi{f1E3u; D_ u&E+/3.6 9=BgFJ|MOPRVTVXYZ[\]L]M\\1[uZYWTQNKHECgA@?@BIDFIL NmPRTUWWXYYsYIY$XXVURGO|LIGKDB@>=V:72-F'#!KD( 3 9kdy7~tEIBJKF3&+F \z/0!%),p/15c9=AEmGJK]LMNOQ QQQEPONMLK:HBE]B4?<967443468:#<>AHCEGI9JKLMN'NNMbLK@*ADBC0CCfC7BOAv?=w:75B31w/.e,*''L#iK - ` OE];lR8Dv'.K[V8 G]  ,jcz!#S%)B-f15V7}9969m9<9_9X9-88W77531(.,)'7$" T !4"V$7%(*!,B.k0g2[35]6[7y7877A6A5:3n1\.,*)~(>&$"kc 8,EoT^n>+/V7AE=9.# ] !%)A+-./!...-,,+*(&$Y!);jU1 %")$&')*+!++++X*)( &q$"! H =Cv?v{vv3S)T!)Vwx;K:!Kk`l  ; m"#$$$$k#"h!9L`% w /:y;H  WKB =  , 9$YZ}KV7GM'$2ObbW85  " ,DaL_}VJd LS? 7 !=[0ZB Z [/4$b7CD/b Y;78GY]O'% :r Q- ^ ? +&_ Jb@z\nN+4Jl S $ 6X ^-K[?ZucYGCRYF &unkUJgF/b/ TOY{=mQu+7m~s^X^~eLG>%.D\RKLQ/dq>m {}wiUGKJ9&KdD d #}lPLRpuN6 2- 9it& +SxX<hOS]VB"*c"!Cz|^Ya^ksB  5/*<?.J>#2H}?#zD8+21BZi^O=,J[Q/ 4cvil}|rR)   #H>vVi&yaORR^iaI7+ 5Yu{w~lJ&  " 8^_83f~rO*<'24eP< %(( $1568DUtvy yK)'%%<G>/ 6eyu pZI4$  %,#9>F[z" |u}y`6  !  & 6E6"#6BG6@qf^VH:3*  1:,$8BZ bIBE9"  ##$ 0TXI,%7:-'Dc ~z|xgO>.  #&"9Ke Z4  " $1/!$ <V`I'  &8LY]TYt pWA0" +0' #7Sm|pI5   w 0kL+q(+ !!$'2'u&$!|5z1  &  1 n  P Y A  [8Y H"^M+ J    v4zXPGb;m8L5t.I [ ")""$%%% $!KSD     , K r P > W [ g I  `%A*wB_J}u4 TU 4<,~ xbQOi /" #$ ####"n!oW U  x G 8 = o / E S m !  !   " & ; W  - La2g }.*ZrUrrb8o*n) /:l%1Mvzc*C , 5 w # ! V  ( G h d %   J`Z8wuJq,bYB.G;*^nSG!<'QeX p     # V m  - Q k g 6 s }  X : 1 5  & > % u  uL~-b?\^R;r25y)hhL;=rWJtiu+{&$zr&lpSeW ~ F i P  3 T w L   = ` q d S 7    - * F P g D  \ = `.?] %F<{9R>[Ox4|DM]:T X< - 5 9 ~ uZ:nF. 4EYv% F q Y ;  ; F @ ) z T Q  < 2 - 0Vj :d7a*L/kl1<<:(P;k/X1 %  b I D [8UWH&N}>*]f?')]  b e    1 J s kL7D{`i7]  Qjc) HBXN4Is V , K vj.o-@?D=2-&`d\\c`U?9En'0kC&W{]6  K-k :  l s  3 e  K RZO r#DoV5  h \  nv>Jj~\ds{\CAFdfkm\ycj A  ~ A y & d ;p)- b  s q $ T &  u X <  #7Ga {<iQ,fcB9F>GntH  4Qi|V<%,i+$D] ( X   d f n 9  D t $ {: F !  A / ! 8 Q ~ ; +   f  q[$sX#z#rV  6/V)QPAX`G(Gby%Gjxvs3F(/s6; L @ G x f ] ] ]  , & ) a{qqsBbn;U%6vL0ZOr"K#ab  N S / , # h m w c ? / > t c =   I | [ vNt::FITZ!ZZ]N }lPIIZcy ^7tjnt~v.9mW +WuvdkN*W    l P YwGEeGt|{ydFy O\ GbMgW avskks|~pkLX ?kN C?_hhk.N [ c <jpeK-YGNXCe!JTJy(/v0*)ESX g P @ ? N d N M  ` :  m > u` [bsBf Bq-0[wA`xv_7=,Io!hL #QjIRy >b hVkA  S5Zc?=RD t VO&Gdl)=`(o}yQW9  aukL@f9*]9~ Zma <T? q k<,` F/lk5YGyLbI f =mcmP,}:KFvIR;!hK5<IJQ{/;P(3WX#GdU ,*:J[R nA3, "h$&(*++=+j+**Y))L('&&G%%C$$z$ ###8""!~ A_, ! re}{1y@X8U %KYgy}F5Y{q$_+#/63)w)iw Y  !"J"g"#^$G%'),E.1z3}5;66666r55U443R2u100C///W/.....'-W+*E(*%#!ClH8L D&7a1x^ [c 7S"vk2<ya?N e]3 +ezL #&(*+,v--.01357:+?@UAA%A*@@@??>p=<;; :v: 99]98999/88B6531/K,)&# !.>/ {.kQB&Ha&8XDa}Vnz /4b|oI[i9R } AN!'%7),/R135m6789;<\=?;@BzDRFOGIaJ(KKDKgKJJQIIXHGFFEE$DDICCCCCCFBA@?1=;9<62.+^(<%v"h " ;)J P>NrRbRx h5=K KJd $s(E,N0b47:[=&?%A B?CjDAE!FFHI=JLNPRTUWWWWWW$VV&UfTzSRR?QQQ)PP_POOGNML'JIHPFDB/?.;G7O3B/,([$!$W. # d,foH3X Q731z)  !%*(,t0u4P7;>BLE/H%JVL`M}NNOROP PQSUoWZ \N^Z_a#ab(bbaa{``&_=^N]]=]\\\Y[[uZZ6YWUT`RQPuOAMFKGC?s;$625. *:&"\o QPw?4:s?C^uXV 3 %8 $(,3/38<?CFJ=MPSUWXYsYYYZR[>\S]_paBcB9|41E-*<% Si[ I mKc_+KB:,m]) @W T%+05:C>CGKqNQTWZ]`bdf8gkhhi5iijCjklClm'mnno\ppVp\pBplpq q=qppooop%pgppq3qSq^ppGobnmm/lji(gqeb_\XT4OID?;74-/*% yJ ,>+mWL`DYf : p%8*068;Q@ADIqMQTXZc\_m:h51,+% 5, (P@ fs- (+3b p #\R$)/5;x@EKOTTW[d]`bdegEhHij}kUklJlmnLnoHoppq"qMqpppq-qr%rOrors=sstssxsBsCsst,ttuu&u8tttsssssrqon2kifd `]ZV8QMIcE4@<&60*>$. Pl1g'+2 \ ] ) h& P$)/4:@hEJOSTrX\o^aRce1fgghhhii~iijfkklmWn0o'pNqqqqoqfqrrsZsstDtuu-uFuttttuupuvv)uuu`tssms/ss rr^rqon$lGjgevcU`^T[ WSOwJFA<%5.(m"em +YSd"80C~Cy2  g%).39?EpJO`T9X]aceYghibiii^CINSW[h_CHN+S&WJ[9^bZeFgi iijihgMedbz`_0]\\\`]/^`Lbeiknzp4qrsSsst tuuyuvw*wxxTx6xwwwwwwmw"vvuLtrqConmll kvjjjcjkkwkklkl2lkjqheb^ZU0OpHmAD:3-&( ` <;m1d00;//Y/;0?1937;?DIMRVZ]acfWgii ihdgfzdb`^\ZXWNUUUqVWZ_]1`d6gyjloDpqr|rsWttuiv vwtxxUxxNxwwHvvVuu,tYsnrpnm?kzihFffe^e7dde.efgi'jNkLklmmAlkigda%\^WQUJC=?6]/T( >i TBe<;::Q:!9:;>B FJOSW\Q_bdghjjRjWiLhgfe+b`^[YW TRPPO5ONP'QTGW'Z^bfJiHl.n;p>qrs{tujv3vwxxxxx{xwMv{uatFsrpocmxkmi%fdba~__^u^__`b-cte,g"i/klmno*nnmljgRc-_YT!MsF?u8j0(! 7 9_'fd8_}FF[EE,DDEFIMLtPTqXe\`Vceh)iajkkDjFiPghelb`']PZWUGRPMKhIHH}HlIJM8OSkWS[_c2filoqKrtuvwyx8xxxxxLwvItrpnljhfYca^\]ZdXWRVVVWYNZ\^`beJgikm nn4nn+ml]jg`d*_[PUOmHIA:#2O*}"`:t ^$Q\QNPPSP"OPQT=WZ^aeEh5jkmhmnnmljheb^[WXTROL>IcGDCBBB"B CCEH=KOTX]aee`iYlortUuw wxyyUyxwwuKsWpmjhe<<6/'!;E6 abbbbbc|dPeghk;mopqqrq^p8mk.gc^ZUUQMOIjFB@K=<$:.87g66C668'9<@HDHNSTX^Vc:hkoruvxxyuy7ywv rokAfa]X@SHO"K_HFYDBA ?a>>?@BDGaJ LORyU]X\^`cbf'hkm_np0poml.iGf;aI[UNOBHcA91a*"" < `if%gRgh]h{hiIijklnpdqrarror;pnkhzd$_wZ)TP/KGC@=o;e986g4322222;3S4{69=AbFxKQW]@bglGos/uJwdxWy[y=ySwurmhcd]XRqLGCY@>Y=;}:a9889:<>\@BEwHJMPTAX9\*_cfj&lunopJoRnlXjgfbL\xW+PJaB;4,%KV +iklm!mXmnDnoloprsdt@t=tesrppmie`[aUzOJEB=:76D432Q1 //.j.x.f/ /1W346:?*DKQvW^cimFqtHvxyQy1y`wuq,lfH`&YSLF@;86;533112%3~468L:<>{@CF\IjLPUY^bgj0mco:pqpolnRkh;cS^Y>SLE>6/r(!T k&lnno opOpq?qrPstuZttsyqnklfa\UOID?<8E53}2a1_0//%.]---y-5-?-)./149B>NDKRYl_ejosLvwyAyyw6u phksd^%WOI?B[<7z4N10`/.--.@/124'568:=E?ByE4HM+RXW\aeilYo?pyq:p_onkhdn_[UNG@92*#q xlnsopqqrssWstIuvfvuusq2lhcb]VP4IC^>K9^520..}..---|-R-+,,+z**+3-*/,3v8">EM T[bhnrv7wyxxqv8soib[T>LE>\83O0W-,++u**+Y,u-/00124J6b8;p=AE{JPPVF\aeiTmAoqZqcqpoljfbo]xXQwKC<54i,%|<Mlnp-q$qrsst%tuAvQvwuur/nid^{WPIC=<8X31D.-x,{,,-_-....k-,+*t*)*,/3:@tH6OW_filq\uwlyxx?usanib\ TMKF$>930.d-,_++)+ +?+,-h-.Q.//02577:>EC0HkNTZ`"d{i1lzo_pqqq`omjngc_-YdSLE>6i/'k!hmo0prrstu&u;uvhw-w@w1ut pql9f`IYQQJbC<62/-H+e+ *+,G-G.=.///w.C,+*-)\(Z()+/450;eCtKT\ckp uwTy{y-xvt oYj_c]VOWH)@:5(1/@.1,,+R+*+3+{++++S+*+N,=.j0c36;@FMT;Zv_e?iem[oqrgs.rWq)nli`ea\UNGp?8R0*9$lnpqrttuCuWvvw"vv8tqm%ha=ZS4KeC<7?1.++ )*?*+,./`0I100u/,-,+g*W(((s*,2N8?GPY `hWn svykyywuq(lfa&ZTbMF_@:26U212/*.,,{,, ,+++/*)(((*1+.R1059?FM SY_dim p@qsMsrpo%l|iea[VO>HWAF:3-kmoq`r[stuu4v3vwvugroic\mUM!D=61-$*(((p)E*+,.d0 1110/.-,+K)(')?*/4ELSZB` ej_nqs`ssrq\o>mTj.fa\VPJCM=7jlnpCqYrst tSuv&v*tspFXMU^Nemquwx^ww"tr1nPjfb5\VP9IDB?;S7h42m11612521~0 .-+*)9'&&&)6+R/@3C9'?WFNUN\bhlprHsrrFponFl]iOf9b7^.YTP.Kik;mnopqyrrsss2pnjd\UGMDs:8.5r44y5~6r654&2=05.-K+)'&&r'),5/T4:ANHP_X^ejCnprrr-ppAo+mkri&f+c=_[XTOiklnNokp"pq8qrruqlnKkf`FWPVH'?]70s+&$-":"h"#w$%&')+-.0&1124d55(4 3100#/1o3)72;gAH$OW_gm;rtuvvvtrpm=jd_>XRL\FB>U;T8?7X7M89:L975+20.,*(k&%&4&(+7/4<%C}KS[;bhmForkrrXq0ppAoTmlih eb_\ijjlPmnobopq3qpokhb\SLD;W4-)%1#?!":"d#2#$%')+,./C0X1x24V5b55T4322Z239427;:@UF@MU]edkFps uUuvvu]sqo3lsgb[QUOJqFJA>q:99h:<DhKSW[/ci[o r4tuvquuwtrpnmidd]WnR6MIEVA=;;M<=>5=;9d6z31/I-*;(&Q%%0&&*.5D<DCLTTY\c%i[mpqrqqqq?ponvmljiUgh@i9j|kmmsmo op nl g~b[TLD= 4.)L&##"##?#$P%%&(()*|+=,;-.0L2535(55555S59557X:?VDKRZEahmqPtPu uu7tslrhp^njyeE^XSOLKH6DT?=~>G=;:75#20M-+!('&%&%&)`,3 9zAjI(QYN`Vfk[oqrrJrMqqq}poon:lkjgEhiAjklTlnIo&oElje`-XQIA:2+,'%##|#F#$$%"%&e'$(A)B)**,F-l.024Q5T6/6|6667Q78;M@pELRY`fluorsttStrqonCjf(`EZUQNsJFBG?8==>X>g=;:U8353h1.+)''&&0&(&*06>F,NVN]dinqIs rsrrrqppponmmfRfhijkTkmnnkic]V+OGV?@701+2'%$D$<$$$$%m%&''(f))%)l*0+g,M-/S1I3456h7N889_9;>CHsNlTfZafknqrss_sqpnmXjFfyam\sWSP LHDO@>[===r'((w(()*+J,h.0=2H35:6F79:1;tAFKaPV][ahf=S<;98C6`4^2504.+)''&,& %w&(&,19Q@cH7P"W_f.I,+*)(b'K&.%Z$$@#$$'+17X?!FNWh_fkpr[s/rbrrqqoo'nmmlbbctdfghklkje!`ZRJC|:511.-,f+*)((J'&%$$#"# #%u(J-3;CoKT|\diioqrqr@qpnnmll?kbabcekghkkiQd(_XQIB{;E3,'%$\$%}&}&' '(()$))))())s)2(((()*%+z,s/L3%8=CeISOVI\4aehkn[qsstttssZrqpgoTn{mml%ifa\@UOI_B<+6 1.#,k**((''+&&8%O$[##8"k"J"#&+l1H9A@IGR$Zbhnsprq quqomllxkk|kTaeaabdfhSjjhc(^sWPHAM:1+&%j#$%3&U&'7'(X)&)***b**|**s)))p) )2)4*Y+D.3&9?jELSZ`fjXmnxprstvuhu~tsssrqq"pkpoZnlje_YKSLD=72 -+L)(#&&$%%%%l$##>""!!["$m)O/7>G*PX`g2mp9qipNpp+nlkkejjj`(_`bdf:h jj ga]VOnG?80p*%$#f#$%&l&'y(e)*+,O,,-H--~,,>+****+/x4I;AA|HjOV^"n#(G-5=FNWf_floypoooWmkjjjUjj^^_a c[egjiAf`[{TME>\7.);$$"#t$5%Y%&G&()+;,-._.000//A.0-,*+'+,s074<"BJQYafloxqNqir`ssstetztKtt`ttt>t4tssrpnjfv`VZ+RKD)<60,)B'E% $#^####"""P!!!"#'E,4<5-(&$-#"#%#%%~&&(*,.0U1245n5432:0/u.!./)27=D&KS[ubhampqzqTrrssEs\sbsstEtttuu5u1ttrwpmiJc^ WOHAi:4/+(%$d#B#D#P#g#"w",!!u!B !"&,$4#;D3MUe]wcjmoXnKnn lojiiijkXYZ\j^adfiihd^XQJB;X4Z,o'#m#"0"#$%f&X'}),./135u79?:[:98>64201Z2 59?FMU]|dinpqqqqrrLrjrrs!st\tuvDvvv1utVrolxgbk[UMF_?s83).*&$|"""""*!!k!O !"&+3;CLKT\bimnmn"mljaiij&kkUW(Y]/`dfilgdZ]iWPIA:n3+&#%""4"#%$&!')U,/M258Y:ww6vutquok f`ZSjLLE8>,82F-(%#i""-!!X [ z V!o"e&R+]3&:CKS[ahlonm!mmknii'iijkQNSW[`*dsfigd1\WP'HA%92+6&T##"f#;$ %')5+^.26:i=m@|BEFG}EC@><::7;>B#GM3T[7ahlpSqRrrr`rmrqq2qqjqr;rtuuvwVxwwvMurqQnJje_YR9KC= 61+,'N$?#.!!t  !%*2q9BYJSZa>h0kmylll_ji4hi1ijlKO,T Yq^cfuihdR\VOH@9i2+,&x#<#,"#$&(+R. 16b;%?dBFgIKM#ML&IFDB!??@DCGLRXD^djnwqIqrrsrqqLpqqVr4sttu|v7vwwwvNu8srpLmi&d$]W|PI{BQ;P5.*&H$"! g~|`a X!9%)19#AJR*Z`gojlkkk:ihggggiAjEJ0P V\beiVgdE\VOH"@{827*&V#""#$'D)-0K49?)CGKNQRSR1OLIHEEFIMQV\brglp&rrssdsNrqq;p|p}pqrstu#uvwww}vbutsrplga\UNG6?91,(n&%#V! ` }P ) $)R08J@I$QY_fjkjkjgfeYffYgi>DvKFO-W^bgfdG]TW,OH:@92j+u'#u#%#%&)-'15;9A>GMLPUXXU[N\]\ZWUTStSSVIX\`e"im,prt)tQt}ss%rDqpp+opAq9rsttuv3vwvv:utt rqo&lIgc^WPIJA93E-*b%#I!{!8 Jb  $n(/7%?GOW.]dgihh&fc`2^^^_a2D9BKPS\afBf;d^9X0PnI A93%,Q($,##&+(5+/49t>E K#PTX[^_a`S^\RZZY`YZ[]a@dhIlo qs2tgtrtssDrfqqpXp p,pqrstuquvBvvvuRtLs}rxqomjUfa[TMYE=w60,'~$K"8! cN $(/7e?GNW ]dfhgxfc_\OMJuIJV!\*74?{JTB[beHgb]UCMF=6/+@&p%&*>-38>DAIOTY]`Kb cdege@ddWd d]defh%ikym~oRpqs:t?u&u^u_uuttfsrr*qqqrssstt^tvttPss@rRqrqpp nFlhc\kUMvFv?902+'7$ #A!! 5 7 P"&+35:CdKRcZ`fgThf6b\~V;PJGBAo@%0L;+F PY;aVdgd`XUQ-I-@9'2 -X(&'`+/5;@AhGBLRfW,[^abde+eePddKddxdefh(ikvmompqrstuuQu2uJu>u-tt=srrrs1s|sssshsZsssrqpp]pon8lhc\UNH2A:4 ,( $#"K! f e #K(.5=EMU%]\cghQiUfatYRKE@$:87!,66BM|V_dhfct[nTLsC<4/*((-N17=CJOUOY^D`c ceeeeMdfccd;defgiek5mNoFpqrstHtuu&uju{u~u#ttsHss3sssssArrs\ss!r qpMpoonmid]uVPDJCo<4-(%N$H"" 3!$*L07?HbPkW_eiMiFie`:WoOZG^?9Y2/-6(h2=IfSm\bph]he^ZWOGp?~72},~**4.u39?^EJKuQ3V[,_acdFeNeed{ba}`ababce&fhjmroqrs|sttfttuutt!srrs,sssstsrrsKsOrqpp/pppnmj!e0^RX=QKNDH<5\.)_%$"" l #_&y,n2:BK*SQZub)fj`iiud}]T+K_B92+s'$I|Y$.w9EOPZ4`higaZRJB:4.,+/4K;@@FLRXT\`c*e eefeed@b_^^^_`bYcf0hknprpssssttvttt}tsvrrsssss.rrrsrrqpp6ooopo1n$jye_zYSJLE1=u67.*&1$"! e !0$(,.5l=EMV>];dyhCkAihb[PG=4+#]V *25 @KV]f,hshb]LU MUEm=g7+0.,0 4e;1@FiLfRW\`bide*eddcb_]ZYYcZ[]_Wbe8hlnq r1ss/sTsbstt ss`rrkrarrs!srrrHr rqqUppooopoKn1jf`[97/*&Y$w"?!g  !%*08iAI PY0_fhikHhfu_ZVLBg8.u%jo _%0<3GR[ dgiKd_nW-OG?9)20K-0a4:?EKQV[^a)cdvdcb`/]RZVUSTV-XZ]aueiloqirrs0ss6s5srr$qqBq\qr&rrrvr,r qrqq[ppooop:odn1jgbU\UNF?f890+.&$I!  "N&+3j;WDLS\:bhjkh0d\SS:H>4)< k P9(!,7LBN5W8`eh_e@`YR&JB|;512/803&8=~C!HNSW[]`8aa`L^[XUFQOEMpN,OcRqTX\af*jmoqr2rrrr~r7qqpp{pq9qrWrrlr)rrr7rqq$p{p/plpponkhcE]_UNGh?80+@&Q#!7 !T"'-6>&FNV'^dijjf.a+WNC9>/.$m{#g  R?'x2X>IS\]-bgf-b[tUME>|7401<2q6;$@EK PoTXWZZ\]H^\ZmVSDOKIsG GRH]KO#SX]cgckn,pYqrrJrrWrqqppq7qr$rrrrfrKr6r qqqvq4q.qqq|pVovlid=]V.O G?8F0+%#U X!#)/8@HQXafwjii^c]SpI>4=*o s"? d!"-08DHNX^eWed"]X1PIBE;622+148W6/*h%Y" ?"w%+C2|;oC\K&SmZbfih fu_XFMC9J.$ "lc(3$>IT[1bdd_[9TXMFD>94V21U248=AFIMcOQQRuQ"OIKGCu?=;Z;d;>B,GN!T[s`fiTlBmo2oprpwp{pfpTpq/rrsYssss=rrrrrrrrs rrqvpmZiTb[TLqD<5.)$" !R #r&-5}>NFMsU\cfi*ficb[~RG=3)I {p<"-9DPNV^b]d_a ]WdQJB<74X11248<-?BFiHJKPKJbHEB.>':u8L6n669vIR][C_cb2_Z<;b964$0.,->.026;@FM+S8X#\_cf7hjlSmnoqrrstYttttssurqpoonnn/mGjgcY^XLQJ7BHRoX_ab_:[VPOIaB;6L2.,+ ,-012356736:420.,@*c((),=.2d6:@;F)KQ"UY]adUfiSk;mnpzqs-stmttt(ss rponnGmRll!jiXf"b]YRLKEr>82-)&$%$'p*F0&6>FM)TZ`bd]bH_WNC'9/p%Zl UR i)"-_8CXMQT\``ba^YTNG@:519.S+*5*=+-=./01g0/.,Q*('o%%&I(+.165:?EFJcO2SvW[_behojloprrssss_rqepnVlk:ihOg eb_X[VQKE?:4/,+I'&%&'+Y/s5<`CKQX]{a4avb_;ZQG<2)y to w[<'p2x=HPVX]bbb ]qYSMFo?%930W,)''(W)*Q*+k+W+)('%$s#M#K#%1&),049>CHMRWK[_clfikn_pqrss\snsqrq~on+l%jgec+a^[XET\OxJE7?:5 0D+}(&g&v&H(q*/4;BIPW](`bYa"`[UlJ@6*,?#S  Qt[zD !,+7AAK SZ#`bc`]XPSbLE>940l-)(@'(((8(,(( '&%~$""-"?"J#R$J&(,0849N>~CI5NSX]1ae1hk]moqqrr;qpinljhDebP_'\(YVTPLH,C?:51-)($&((,/5;kAHaNV![` ab_e]V{N`C9z/%% +l_ %0;EOV@^&bHenca\XSAL~E!>9H4M0,v)'&&V& %g$$$$`#"! !F!#P%(+/:3P8b=CsIfOKUZ"_$c@gxjmbnpQpq pooml iqfc`\,XuU)R2OfL}IEnAQ=E9!40,*U( '')+05Q;8520.,+2+f+-0 4M8>DJXOU5[_ b;bnc,`N\UDLA7.M$ i$W]u6R i'2==FOV^cg7f)de`,]XThNHCw?;741h.,s*('%M$B###$$%_&$'l(*-"048= BwGMS.XG]7a)eCgjOklkkjigdQ`\XTOaJFYB?=6:{7521 0.../14 7s#:7n41/G-]+)('''X'(*+,.0H258gijKjj`ih eb`^ZVnQLHCR?<'9642[1H00012473;?7DHsM.RcWD\3_aQa ay_f]WOD:1B([ 6 zB %U[1 $#-8C]L TYZaehGfdr`^0[AWRNIEB>><86w4310w/*..^//12469;|>aADkGL P TX7[_behijljjEigeb__"[ VRCM~HD@\=:86]4456679Z<?;CNG?KXOS$X*\H_`s`}^]ZW OAE:1)~!$l aF:[2`uv0-%0;F7O U\bgkhh[eb`]tZ!VYQMIF:C^@%=;:<8766056K7 8:<2>kACFIKNQTW[>^Fa(cfXhKjjk-jigeb_?[(VR[MI.DA5><<:9(89A9;Y)@JCFJNHRVZ^abN`_g\ZVOE;1)! -c7mk1;yf) #(3>{HO@V[cb eh=feTb`^\Y@UTQ2MJGEsC$A@2?>>>?%?ABDG ILO(Q~SUWZ\k^ac4e%gWijkl/kk+i@gc`\XT9OKHE[BA@A??@A=BhCiESGJMQTSW[y^{aa`]b[!WpSMYE":1)+!H0{K_N*0ANh "!@*5@gHPUp\4afh,hfmdc a`]=Y|URsORMJI_GG;FG1GUGHIKeMORU=WY[];^`anbdyegOhj|klmzmljhPda]YVRNKIHGFFFGkHI1JHL>NfQ~TXN[^abc_ax_+ZWRGLCT90(:!L1>  @_h|=1h.Q G=f^",6@bH#MSY+_cffFeccbad^[XUSQPO_NNO#OPQRTbVQXSZ\^`bc&cdej5K,%Y$z _"cK0n!O ?(r#x+4\[ZZ-YYZZ|[]+^```,][RX8UQLD;2k*M#N 2`&YC v: C!)2(9?ECJOTY]__`;`a7abcdAdddddef[guhjk~lmmnKnmlmjiBgfqeme'deLefhgik kkkmjji6hRgifeeddcba`_^^R^X^____r][XV-ROyIzB=9/'!  *%yCZ}>- ' !'X.5;@9DHN6SW6Y{[&[\^n`bd|elf-ffgwhhijllmllJjigteb`$^{]\\P\]_2`bdefggMg0g&ffff+eewedcba"_^|]g\\R[[YWU7ROMJEv>5-%DY' apL/Zq[^xVVW k9#*1w6;>CGLQATVXyY\+^ace}f~ggghkhiqijjjihfqdCah^i[uXVTTWTTUWY\G^Y_a6abc$ccdd/dGBFIKMOQSUkVX Y,YZ/ZZYBX|VTQsNpKG|DDA%?!=4<<=>@CEGIKuLNOP=Q5R/SSTsU1UzUUSQSNKDH3ElB@><;9J61- ')!hD$ )Bx eD{~IOINPSD00~G^ Kq! %()*-16:y>!AcCZEF;7431.00|1u2h4?678:<>I?ABBDEPFGHIJaJJIH/EZBV?;97Z5431n.S*%!6' ` T;tRt2Jj;~|XOq574HUP7) &F 1+X|!#&*B.258;f<=>?=?@}AAAB AM@s>y?&???b>>)zk) z H\ew{)C + qq$6rrn  n !Gl<`:= Y #S7KO4h'~U63;N[YM*) nX\  = m @ % 2 | S&_M=MhU=DP_ s [ : W Z &VqRj~gG^q^XNNWXF!+ -!grDezg]"^lp?-vm0R7GVU$g:y*[zxlhgmTI:00%WmS.&L.lwiPFRegac`WNVO,3\J{$ kfQTd{R4!63jTUTg"KA,Rya:Z# K*2Akum[ZcftuD  %?<NN,'RmyC67OZliR0!  1MJ./Yzd_l|s} ~S, ( 4VJ)>>Ju[SdkxmR7$!6Uq~||  kN,& , EhmG$ImyrX4?~*jQ8 "*1<CNA!*CF??IWp|#tI, *  #%!4HXN0  (GitpW?#0=?6.')# &)DEG[z%* {yz]2 %  !CSH2 &574=:$ AjXF?<BNPE+  !.%&<?R~_MHI;!% 9\cQ3(**-33'"/2Bd{qhd^YXN:  $ )BNa T2"  $%"&.)&(@]cM4 -G\^WR_v yqldYI6'3B=%   /E[nqE-  z 5wZ1n*'Wd <"!z$'S''A%#! F L2)l8 d  & j   N Y C U5P32:@BxRWS+E    !G}afcP"oS}  -/ ""g"#%%%\$T"z! |1q` ?    = f Q B Z \ d C  iAt6NUNyw7 PR 8B: kEW%?FbO '"#g#####"! #|233 ` K V h / C X ~   "    % ? W  W  8a|*&WqTojcD#Fj?S epJ ng}&i)D> 1@ J     < j _      N h ]`H"1tsFq| ogR L]r$ + A b :|$G@>v 0 l f a % S q g 3 l { v S 8 . 0   . q #\e O  {D}']A^\P;q18s-ns\MM.Y{q-W<>g0 A  D + + 5 ,  1 U z L   B e u e P 1    "   # T Pi   e 5 f.? Y2N>}8[Lc^HrT<Z R70C4a< 4 _  A qm8rG/Jl$ I t [ ;  & w [    J 1 * %Si>_7b(H4sp;JA}7N9`   _ F B !}O2 %j"L5+^fI5)=~ D .  ~ W   =  F m nL=9 {cpAf%Xu`qc+UNv m 5 < 8 WUe&5-) . ygTKB9" 1a %_E'TpP4Og `  b 3 p  F |R\Op)7zcB TW$   F b_pq O( 1mjR84;\hfhNb|` A * F ~ , ^ @m""+ d   | }  A   q Z Q @ 8;Z@a/hNVa,{^``r_2:Xo~V9{%w @;"EV + T  ^ ` d H L t ' 5 D   A 7 . B V D !  " } 1  |k4jj;_W\(+k b! *Omukyj< +H_rAbpsr"VH\^1E H K K o ^ V X  -  , 2 [|t~&j~[dbA&ApW%OyM%A^m`  R M #  / " i n v _ < / @ v e ;   W c ~Et1DgTeq+ C@ C&vZ6' .4Oj[g!mVMUZ_\`ls7lS +]}pnN/|V  q T XoGNjCt|x}Ukm|2!HAZ}b^G829@GJHBFdur>rL:j_%D>f lkl.W W b 8ij hM&[O]hPk#@KR[bA ^%Atj_ilY F @ / +   o ` H / $   %  a_SPij ^ Bs01XvDsysW,2& Ty#fF *[rKZ "D)m c A 2-*1%If{/p1 g l-.N}EWW&q~sPU:dxcHAbG<g:{ Z~.~,{L{k 4 Jqx8Qbnn7P<AX>p R{LA : {emr`G3CKw@L> kF6?GLV{-<Q-C_ U  RnW'MJVD do;X7F('elA "$]%')'((((o(G''&&V%$$f##o#""# #""! p>S 7 ( {\Hc5P CWhx{L7Xvs-a*">D;":6mS a vxk k"&"#~#$.$%'g) +1-+.02$3?34+4)433j22g110^/..g.---.4.t.u.p--%+*I(5&#![$Tsz fK[cn,im4Ty'}k.:u a<Gowr Y x;"%(*d+,-.9/ 0<139568:;<=}=>B>E>&==|=<<;q:99'8~8#7778=88888!6532/-*!'$!*+p< %Hx^Q/Ob&4PDdXox ,<i}T%Rr@P @$*u"'!*.{13z56b7I8J9_:;=X>@lAC4DPEFGcGHkHHH=H"GGG.FEEDFCC0BBBCC6C>CaC#BA@?e=;96|3'/t+(%#\  1RG`V>MoNcTv & eEM3 .Nh!%* .42j69v<>@EABCDEFGHJOKMnNPiQSSTU U8UUTTTS~RQQ$PpP OOOOOO]O*NMLtK=IHFE'B?;73/,(N$ ) 4 <h(oE4X M>6)3)8T%  RXYEYZ:Z[]f_V`bqd eufghi&i`i?iKihhZgg/fveeSe.e*eqeeeeedba9_^ \[ YWUSOKGpB}=U8G3/}+'$D Bwe Ak9_j cF5I] n H.f!@&'*.2c6G:>CJG-JMQTX1Z] ^^_e_`?`a.abceUghSiPjdkLl@lmmmmmmymUmll1kkjjjk#kklEl0lkdji95T1.*&{!^T jxe2OA7IjJt|^c 7) %+E0R48=AAF*JKN%QdTWZ]`bdTeFffhg ghWhijzkmmnoEopgpqFqhqbqAqPqdqpqNqpp1ooqooppvpqCqiqq5poo"n8mfl0jhfdCa^[WSNID@R 70}*{$ V +X Hr**@)%'&&&'t*-"16;@EJOTcXt\W_ceghIhhihlgedLba_^ \[[:Z[\_?aeThknTprt;uuvvv3vvw.wwx!xJxxxAwwnwvvvpv8uu7tsrVpo{n:m'lFkx9xwovvMuttasrqrp/nlk>ishffe>ddddetfLg@ghi)ijgjjjOigfc`)[WsQKUDg=70 (  u "8Z@?p>D<<;&;tuv,vw1wwwx3xwvv utrqpomIkjiBgdba?__R^^_8``b.crdf"gihik#kl`l:l!k,j=C<@D GL-PU]Z}_dPh@lnqscuvwwxwx wUvtrolhda.]kYV_S(OLJ3HGFFGHKiMPyRU&VXZ]`gbe$fhjklam)lki>g_c_Z!TQMqF?s7/(h! cDcccbb?bIbd-eeghilznp\qpqrpr#qpo'liIeW`u[VRjNJG4CA0><:9U77*6W6y68$9gkoqusu/vwM<:3865e32222/3X4d69L=GA=FwKR W]~bg~kor,t*vvwxxMwkvspl)gAa\VPKFB?V=e;]:q9r99:e@XBDG[IYKlMPSWQZ^b!eNhjmnoonljghcJ]X[RKDV<5.a'  ikCllqlLlBl[lm!monipqsskssWrpnk g[bB\VQ$L)GKC5>;865e4L21G// .J.>././B026<9>DK7QX(^achlpscuvx x%xwvspLje^tXQKAEv?;\75332m23C4698F:<>B@BDFILPTY]]b fi<nppqonlWiFd`ZTNHGg@ 81*#. X >jlmwn nn_nno"olpZqsst]tCtisRro-l9gc]BW!PJE@= 9764+211H0DKRY_ejoruwx`x]xwvsoic\UvNGA;J620..W-.l.0Z135J68:]<'>K@nC*EI{MRW\a`eBi*lo"pqppnliGe`\XVPICz<}5-&v lnJokp%p_pq/qDqiqr{su8uuxuKsqsmidU^XQJJD^?M:V63V1X/..}.m.--L,,,+V*))*,0.I27>EM~T\chnrvw^xxmx`vurnh~aZRcJC=Y62$.,i***o*+P,m-/"0`1235F7R9BFpKQV\aTeimpqrruqtpymkCgQc^YSMF?709)!mso(p[q&q~r,rrrrsu'vvuurro^jge_Y QJD/=9A42/S.--->-.8.s...--5,#*)),()+4/3?9@HPXq`VfmquwyxxvurnhHaYR JC<516-E+*x*k* *8*f++,-.8./W013j6#8y;??D.IvOU[`e-imSpZqrrHr%pnkzhd`[V_PIXA:G2+0$n^pqgrQrstMtIt;tuvwwZvtqm g aTZlS KD=730.6,F++j,,./E0000 .-g+*=) ''(j+.5B;DL`T]sdkpuwyyyfwvsFohibZS#KcC<50,+()))})))*:*+++ +++-/Q1V478.1neoq1r=st9tttuvw*vv.spje]V.NWF4>73.P,*))*e*,a-02G3433K2 1E0.,*;(')+[0P5=sE(MV2^@felsvyz?zyxurulg`ZRK!C<61.,s++^++++++Q**)K(D'&'N'), 044P:@G!N$U [agkoqzsst"rqp-nlfieaV[UOHxBr93510/01 12s2p20/-,Q*('l%%&:(+1/3:@H2OW^Ud(impr7strr;qponljqg co^ZUUPl{mcnWoypnq3qqr7s%sCrpnje ]#UMD=5i/*T'k$$$\%U%'')+.1244]455531/-,,,.27=DL8TQ\dpkpuPvx~xfxwurBnid^W\PkILC8=954m3|4R567+7R65G31I/6-#+)'&&%|'(,b/5_;PBJxR@Y`cf}jnqrrrpppLonljYgd|`]#YFklmnopRpqqrr2qpnkf`X4PH[?70+&$"""$ $%&(*-0t2Y345666=5'31/>-z-&,/16;BOI%Q&Yaibnsuwwxwvsq=lha[XTMHB>:8789U:;;;9q7+4,1g.,L*'x%$%[&;)'+06Q=EMU]chmpHrrr,qppponmjkifda#k?l ln%ooNojp*pq*p*nk~hcb\SKC;[4-)~%D#i!"S"#$.%2& '*,/p1Q23556635Q310K...n0N2S6:A,GObW_gSlrtvwcxWwvtrnjd^XJRLGC?=c<<=+>??>00 126s:B@KFqNU]ekYpsvwVxKww u#spm2ga[UQLHDA?@.@aAAAA?<9p52 /,)'%%f%&h'+`/7>?FNV^NdjnNqrsr!rr/r+qqpplownlkiijtklmlln@nomk(fbZ[T|LLDGc^XTPLHEC&BBBMBpB Af?=:7*3O00-*(&&F%&^&*-4;nCKtSM[IbhmqCrsrrrsrrqqpon{mKghpi-j,k kRkmUn'nkid_XJQI@91+g&$""^";"#H#$%&' (|**+-.x/1 2 2222223T35a69=IBHOiVr]Lchnq-t+u1v$utsEr(pmie`\[UVS'OL/IFGDCCkC&BA?>_;8+4Q14.+)''&$&m&F(+18o@H@P)XP_fkprt'sssssssrrqpeoygDghVi5j jXjlmmjh;c]XUNF>S6.)%$M"""#}#$%<%&'@(>)1)*E+T,-./0h112!23t4579R<@F-KQX9^Rdh{lorPsbtgss5qponlifNa]Y>UfRNKHF?D1CBAAu@5>e<:7h31.,*(\'&&&)'*(/5=EMhU]djortpt?tJttRtdss,srqpofg5ghiZij`lxmjmifa<[SLLD2;46,([$#"#X#f#$X$%&&'!'(d();*C+,-_.0./01235749<?CIJNT@Z_bdHgknQprsrqp9o*mlIig6c_[WT@PN JGDBA@?,=\;963t0.,W*u('&&%'(-3;BJRZbi:oMrWtttt0ttssrrqpoffgh9hiWj&lWm5lie_YbQJ>B:2+'$f$###$;$%X%&-&''e'(+()*+,8--./0236J8;?CHMXRW]aehl3n`pqrurq)onmrlMjihMe;b&^_ZgVnROLHuDAk?&=< :r86411/V-+)(t'z&t&%^&c',1q9&@dHWPJX:`gdmqntDtitdstts0r!qqponffgghghil ll;hdd^WOH}@813*b&$#$$$$$$%%&&S&&&''M'()r**+,-m./p1?369=BGL1Q~V[`cgjmlo pq0rqpo~nIm"lLk igmea]Y4UPLHC?R;976o531f/+-f,*)<''&%$%p&H*>/%6=EMxU^eGlDp?ssts's}szr~q>pponmfefQfgh]ifklNkgc]VNGK?7y0[)&$<$n$w%%%%%&'&&'>'a'&' '((()*S+K,-E.,0\397x;Y@EJPCU[*_cfj^mohpnqlqr>rqrpnmll2k]igd`[WQMGB!<8Q5u210/.,E*)('&&%1$#$E$(A,3:BJdR[bincrGss"r,rrwq`ookonFmm eqeejefghk%kjfb\UMF6>6x/)Y&$a$$%%%&I&'=''''r''@'''(()8**,<-1/38W_gl~pr rJq5qqppBnnmm ll#dddqdf ghujk+j3ea[}TLE<=5s.(&a$f$%%&,&i&'X'(d(((~((g(((n(j(()|* +c,n/X3"8=CJFPW]cbfj?l]opqr"rs srwr qDp(o&nnYnlk}h}e=`ZTMGq@:J4#/,F*)){(}'&&&V%%$#U"!!!$'L-4 jopqWp(prp>nm}lllkkccjcdFefhAjjie(`ZzSKD#<45-(%$2$%%&W&'+'(x)))))(){))b((((f((*+%.3+9?rFMT3[?afjKm]npqr=rRssQs r_rqq$ppCoonTm5jwgbl\VOvHAF:3/*('2&%%2$$$$$#""r!!/! "%A+(19AJ R[c7hn@opxo,o_oml/knkRkkk bbNbcefhjji d$_Y"R:JIB;'2,a'(%X#$2$%%&a&'()x*b*+ *+v++V**H))F(()*.3:@GOV^1ciuloQp1qwqr!r$rs rr{rprqrKrrqq6onlkid_YRKDF=U6k1+) &%$}###7###"K!!M S" $?)08q@=HQ`YagvmoonLnnnlk"jqjj|jkaia%abdf-gjih b^)WPHA91H+&*$#<#$2% %f%&Y'<(2)X*+,4,-1-e-?,,+a*U)(){*/ 45;]AITQeYA`fdknpqqr;rTrGrrrssZs|svs[ssdrqpnXkg]b\UNGH@82-)&%\#q"v!!"J"}"(!! B D!v#W(.7#>GPPX4`8fkn nmlmmkj5iij!jkJ^^` acegEii1g az\UNF?V8/)%E$"#[#$$%=%&(*)+}- .`/D0X010k/.-F,*+,1R6(FO+W-^djm,n lllijii-ij#kk[K[]`be'fihhf2`.ZTLE =6.y($t#"o"#O$$M$%z&(q*,.029345(432=0a.-K. /48w>EfM"Uj]Hdinprqr$rr)rLrcrs5stUtu@8AA@g?3<:O8Q6;68=AFLS[Cb)hm5pqss%s%rrbr?r1rrst4tuvivwwuwvts]pn6jfa~[TMPE>r822-(o$! >{ "#&]+3;CLS[aaohkVlkokk!ihh`iPik>lK5NTYn^cufoj4iaf&^XQJ-Bz:3+&#a# "#_#$%'),0448;?XB;BFxKQX*^ekHo"qrssssZrr]qrrrsPttuluvTvw=w)vu0sqomj9e`YRKwD=j7=1+''#"3 -H  !%++3:C+K]SZ`gjlhk.kAjhggGh7hjkE0IPV\bxej>ifd^XQHIB:_3E+&"""h#n#%9&)+y/347DWK[RZ`diiLf_pY6QJ%B]:3b+&"""C#$5%'*-16;@DILOPRQYOMJHFGIMEQ!VF[a.fk^pruu^uuAtss'rqwqqirdsst?tuvRw#w>vuusrpnkbg]a[U!NaGj@:2-&(&9#R!  !%*19BJQ~YU_f]ik5jih7ecc cde/f8U>FOQWP^crhhf_YQJ\B:3+'##""O#$&),0<49?qDI\N[QTUW/VUR~PRNM^MO_SV[c`:e6jnqtuuv=utss3rqqq2r rs:ttuvvvw@w4vcutsqpmjued`GYSL}E>n60n+a(k$"!t!< y  !%*m19VAIPX_,ehmj3i hfca _`~`IaZb29IAKKT \Bagh6g`ZRKCC;4G,'#""$i%R'*.27=BH!LRUXYxZZ]YVU?TPSRTU^X[_ch6lsortuuv!uttsbrqq>q6qrPsstuguvwJwuvv tsrYq-nlfh"c]WPIBG:r3.k*&y#"M! Dp "&V+2?9BHIQY_beBgioh,g:df`]V[r[>ZJZ\3+3=*GKPY_fyggwa[SL&Dm;71-U(K%/#("!G um "K&+2:BJwQY_eTgBhgfbX]YWUT%T@U&.8CM.V]egh c0]UIMF-=6L.)$##%'*$. 3b8=bCHMRW[<^^__ ^]]U\\\^ _Tad>g\jVmoqt?uzv^v4uuzu\tt?s1r qdqqr rstluGvww{wuvvu trqp.nkhc^7W OHA;:4/)&Y##9!  . "'-4T<DwLSF[lanf^gi5gVd`ZUQOLKK )3>IT[cfhd_WJPH?706+%$M#&(+/5:@TEKYPUY]%_`O``1__^_3_a9bdgilnpr]stuuuu[ubu2tsrr:qqrEs st&tuv9viv}vutsrGq`p5olj/e`,XQJC=7B1~+c'u$#"]!p a!!#) .e5=FMU]ScghTigUc]WQLIDCCB%X/:EPY3aephfTbYRJB&: 2c,'R%X$'(,1Y7f$["! !$*0h8 @HmPlW_e i"i:j gb[SMFB<:>8!:+6qAMV}_dBi+gd{\UMD<4/)&%5')b-28>DgINSX\m^``:_^~]1\m\\]_:`c5ehkn=pr`ssttttu utt:srrEr$rsDsvs|sst t-tttJsDrDJ NSX7\y^`_?^\ZY>XMXYv[L]_beil(oqs_st%t3t>t@tttnss!rqqrjssBs$s,sHsmsttsqr`qqpooeml%hb[U^OHA:3-$(%$#'"P $'.@4=EMbU\dqhkj:id^\TKCg:3,(%{W+$n.h9tE0OY`vgi#haC[#RJB::3-7)'&(d*.3:8>DJNSX\|^_^][YVURUVX3Z\_cfjhn2prssssoskst&tssrrqrrrsrrrrrsrr\qq)pproon%lhcS\vVwPITB::40-t)%$"" !%@)Q0<7t?H PX_filVj@hb[aPG>K4,$ oJ *^59@KVA]ehchb]BTM#E<6/t+(r(*2.27=@BHBM+RV#Z\^\[YpVSQgPQ=SUX[_cgknqqrrrrrs/s=rrtrqqr&rrrwrarKr7r%r0rqppppAoon&lwhNcy\VPIA:4-d(%$K"x! !O"j&+22:GBJR[9ahMjl4iEf_W2LvB9.&x: h &04 ){ xO A06!,D7~BNW`udh_eBaYR+JwBO;4>/+X*G*-)0]5$9q>RCHM$PTVWVUR!OKH-FEHJtNR^V[`eimohq9qqq]q:ppp\oookopqrrqqqqqqvppDooooo?m]kPg>c\V}O&HA 93,(Q$#!!/ "G$)?/-7?H PW` ejjjf>`WN;CL9/$t] & ar'2>2ISO]#bgfGc[U6ME>72- +]*,1.3=7;@EIM3PR9SRJPM8IFmopWpppppQoooXoQopqiqqqquq?qqpp{p,p#pBpp,omskgcA\UNGG*@:82n+'$O"!3! "$*u1%9BJ2RJYbg5kiiVc]>RI>U3)> f"7 _]#T-8D|NX_eedQ]XSQ IA:4/-%*+- 038a70*' #"!!M!#l&?,371.+]*+!.048<@CFG{HGtFB>:7 5a35;6:?E^KRYh_dCgjlmnnno o no.op_q-qr^r\r!qq5ppppqqLqKqCpsomk\fa+YRvJCtR@ABAt@}=:'6220/12A59h?ELRX^bfYhgjlkplm)mn-n~nopqrGrrrr qqZq:q2qpppOonn;kic]V_ONH @93-(%""!"#&S*2:pBJwQY_e>fgc^ULA7-# R#\ SZ(3?)J R[`cbE`Z9U1N_F?/8y3/ ,n)p)I*3-[0"3,68O:;< ;:E8(5g2.-+-%.149>DK`QW\acfhjlmcn2nopqrs'sssQrrHqqq pvooenn\m-l.i]f`qZsS$LD=7k1,G'W$"f"\"#s$O(m.-6>)EMT\rameef`ZqPE;1' ^|^[ X#i-9LDhMV\|ab$ae\XRLK|D=7|2e.*)(f*Z,q/1'245554l21.+*\)4*T+/$15l9>CIP UGZ]adugyikm>noprsstssrrqqonmlkki\gdV`ZU(N[G{@:+4.*&5$""#~#%m'M,c2;-BIQX-^b!eid@b\sTI?5C+E"! ]&52|V('3a>HRY_ab_N\V,PHI5A;X51,)''B(_*,J-v./0//-,.*z('b&6&(H+H-1L4V8=EC HNVS`W[_>behjlnppqRr~s#ssssLrqpenmJkjikgec0_G[UHOIBzSyMAF8?p95v0,(&%%%%%%x%%%X$s#"""9"#$&L(+.!2u6DJ_PVB\j_bda^a]>XP"F;2(" ]62 z)4?TI PY@^d;eda`W]{YT%MGbA9;73"/+)''%$o##d#^#p#>""!!" "##$&T(`+/I48>DsJPV\5`ePhPkkmllDjiNfdaJ]Z!V1RaNKHDA5>:74/1-+J)))+t,/39?FKPV[{_aKb_]XtQG>3*e! 7jz,Y (#.(90CLZT[{bf(gdb ]Z U%OcHB=8561-+<)'&$##""""""#f#$y% &(z+.38'=CgIvOUg[ _d7g"ijtkcjjh f b_\XFTOKH%DAP=:85G209.5+**q+,/163;/AcG8LRWq\`Abba^ZRJ0?V5`+"J v#_hk ,>F'2[vCzHN RX \<`5alb _^BYgSJn@6Q,$vA =Q  lY!  E +5@WIQY` fXhhBdbV^[WRLGoB>;J752L0H.-P+*)))*=*+,.T/1z3x6R9+<@EYIN_SW\N`$dfXhUhiehgeBb^[2VRNJEEA>;8g532$111124+7 :>+BFnJOTY^]`baa"][TXLAW7<-$` [K!)Y[ /$.8BKtSYaLeHgfda^_Z\XTOJUFB?y<975432w1q101P2 3q46G7:<<>A`DGKO>RVZ^Zadghi3ihgec_a[WSOKwGGCB|FJOMQUZu^Daaa^]XT3KB7[. %Q &Ea3du&10;zE{N1T\+a\fh heRcr`^m[W3RN%J6FDA5?=;:9888F89-:;=?Bm<;::m;]<3=>@C@FJNtQUX\`bca`\`YSLBH7-%~kW 4 xs2?e& .gn(3(=G3NRUZW`dg~fekba^_\]!YUQ~MKaHFD~CAAAIAkA+AZABD/F-HMJMWOQTVX+Z4\I^k`bdgEhjtjkrjigea[]YURSNtK GEClBAAABCDF0H`JNXQUWZ^2accob^N[WRK0B 7r-%< pbKyChJ*5@Il l!S*56?HOTGZ`AeghYXgWWWWWWXXZY>Z>\^*`cddedc<`a]YUsNGH=3*"x2 9Tk~*iI g L "s*3D;%AFLcQW\`ab{aaaaa`_^^]^9^_`fa.b%cadeghiijwjjeihhg)ffgyhijk!l&llkjhz+  ('0L7=CxH\MSLX\_1__`!`bccccdBdefefghijkzl"lZllulFkcjPhfepccGbcocdf1gij#kKkYjiqhMgEfmeed{cc3bbaa+`t`_``taaaa_]>YWOSP IB38/8&[u< [o/ xGY}@%o ;l%-39>BG^MRVfX}YZ3[0\^a bcde|foggghiJij(j5ii#hg ebcaJ_][XZZ=Z[v\^*_acSeef3ee@ddddLcc`bbb aG`;_2^X]]>]\\3ZXVVSQNJF>k5,$G ^*0gDq~^]rQKHww h ")/59T=AFKOS/TV4WY\*^`bdCefPfffgg+ffHecb `S^[Y.VTRRQRSPTVjXUZ6\]_B` ``@`S``aa(a ```_^]O[ZY!WVTOR8P9MLIF@:82**"6TV &\gN4gT{eha]t" y -O%j+@/3K6:?1CHdKaMNPjRmTW:Y[]^>^^n^v^,]]\ZuXVT~ROMJyHFFvF6G%HIK9MNPRkSTU1UVVWOWX{XXY[YXWUrSdQzOTMJHFEACB >:j4-p& 6  s0ykse`RVbs3 ' L u o%)-0F37x@2ACEGHIJKLN OUPNQ"QiQQyPNLIGVDBd@\>=;972-'!Y O/e7p?wvRVLNOTH6"o}3;S [ ` 6$:'8),s/483;>@5ABDAEG`HIwIJ2IIgGFKCA?<974Z1/.e--.\/0Z13468:k;=)>a?A7BD_ExFkFFF!EB@n=;997&54391.*&7!*$ge iLg? gBt|VKo?A<MWT=/ &>\ G "%)(c,/3x68Q9:;<= =l=w==|=";:X85315.,')'=%$##F#$%&()+s-b/D02f35@68r9:;;;:x9 6420/0-,L*(s%"3~ m/#MgDgK8K{/47RbZ:#;t5 n!K$c'+#./1D12 111<1 00u/j.),D*a(H&L$J"* 11)L !#P%&(0)*,c-./e///^.[-+i)(_'-%$" g, .$P) bk*m8$2b/DIQKA1, ndR""G$Q&&'m';&&W%%$P#! H{krn;R(14N [!"#^###"" c: P@L . g\)iA~E_6O-^yzw&HRG/%$.#xW 4|E R7OHOOg> v P , # &  K K I '/[Kz1$7n{ h aL5H[lLV"zD!$6R^ZS!9=+jQ- (i wb; g N+{;yB >l7p ] ZmP7"?RBy%8&|T99;IXZL+. t =z!'>m ) } p)1om$9[]="")B /  5 i**x+n]wftfOnvd]MHW]F'.  t35PiU;-XS-~WmAO{\;b eJlvgbjoTNB24 +VgU55h ;SWJQO9 -EC- ~oYQRtN_XfmpX2xc^LOZxX;!#87  |t?^J'@\|lfZ@ rO>9_*; 9bkaNQ__l {F! $=:NP#$4+#1 n|W~cPSThrpp[A0(" ! ,GJ4$$NylVM[sxpU( (  9]T0  74Fppmx}c`[;  +Lkxuwupnr} oQ) ,4PtuL#7SrweH,@{,A-s_YM( 6LW`YO7 .B>46DQgt|+$vM0 0  **3+$'=TaT;2Ke}un}-2'wd\R9$$8MXRG5& #1GA=Rt+,}vX1  * ' .MVG6*.:??B;, ;rtlh^UKKW^Y? $/)$1C>It{ hQJH4  *# EbdU<0/0353-*.75@Y"~{xpcY]]Q9  .CIX|^;&  ))"# (&%* &IagS;%#6PaaVNYs  vh^]\SF948<7(  "0ASez|sK8$  ~ 0x]0,+Su?YRc;#%&&{$#"!!dCL g  _   S b G  _9sopWW T+D  {E{\aik>dI.|( !) !#C$B$6#"W!n 9/%y+F Q {  1 Z Q B [ a i  ; #'n!IQ0RRt h, ML7D=  :J gM`  * +!!"T" !!" ".!!. ;Ho/eS o T \ [ % @ T   $    # > ?  yiJ X~(#SjMjc_I!*@IR=D No>r$j/r;;~}wH %  ] ' u   B m } V     j,Kc9o4{zEn}! pfPD]CsMP  &o^OQ:':$c+==5 > O | ` j . Z s Z -  p y X <   %  P 0 E 7  }I}&[>[[R>t24u%ejTHH({ ~>>E}k11T  j  N  7 &   4 _ ~ ~ P  $ E ` x q X 4 $  i @y<7+ T  l = c.@ [ (F:|5[NcY8<ArO sinjI  W 2 w 8 tm<yJ1So+ E z l F  G   M# k   O 8 . *Vd:[2_-D=zw>?udZmj-l L x M  q ( xL,  )x,Fy0@\hL4 4 ; = 4 ? > N q oG5; u]oAb)^xr.g[Rk 6 +^  23zbXUA-$1[$_\/eW4' N   w [ v  ; t  H wL[M n#:t[C o '+p ; ; n -r}?|N3,SnkJ45<Y||qY-=bl!cu{ @ * C w - e >m&* a    $  ? ) z m  l VHe~8u"[8BY!mb`uj7 8Qcsb< |4 ;FjB + [  f c h C # J w ( : D   > 7 5 R i G .   s  nyGtwH aaKbK3Nerp|kD<ZvDk|sjh\3Py`;U^: Q E M ~ j ` _ ^  1  2 2 o wy&)ia\m~rLz0SZ"7m %Nz[ +s%i  O N '  % # f g s a = . ? x e .  N \ }Vt3Fr LYm73CB#T-xY@ADVa})}T`MLRG;7?AYVJf"5BR`yv U(tK    m R V_=L$t)Vpp}e`n|>WG+@x?bO/  `0yl51\ zq2U V _ 4fgt _9`KR\@q 4FIU+je'<e>2g q Q 3 0 $ Z  F h3^9$ewU=l!23AC?hIn |uW*( U/tT(Uk@m)/ hchF2f n%}'JB<Pug- (4AN_a+*z_8,e}[\7hzbD<]}75bB d.BAzd b $Y!E75j( p^Q)i9s [ 9  IUt+c/J}MS:\Ay5>FIQx,2?;[Z "MhT Dlc^* S '('? "*#$%&'#''(!'''P&%%C$|#""G!!!!!!! - Y.1^~VE\ AM [~qzG3Yv}d)c* %9<48(XS  IBy(!u"g#r$Y%2&@'m)*,.s/1$122363P3g3#22210//.<-,,,t,,-+-j-6,+*)O'%#!B,e6 ZkTrz$Uo%P"Zne.8u`CX {  N~##S%(h)+<,<-~.013468T9:;<-<<==1=9<<<;::958T7666}677C777F6w54p3(1M/d,*'%9" 9uG _ =mv66Q>YuR mu$PyxQ$6v|B/ P *P#'+.13+4f568"9;= >@[BCPDE+EFFcFG(GfG~GHGFFdEEDHCuBBAAAB B>BoBEAA'@e?L>E<;`9D641B.*'$"?$P U ;FJjMcPuvr+!p91 1 5L!&-*.3,69;=?N@yAC#DFDGHJTKMmNOPQCRRSyST8TT SS\RR Q4PZONNNNOONNwMLKpJHGSFDSB@=:O62.+'z$5 ;U 1 SP_V'{AmM>:8H=!'O5n .} $Y(i,16D:R>_A{DXFUHJK6L$MuNOPQRThV3WY=Zq[g\]z^q^_l___P^^]]K\[ZZNZ(Z_Z[ZZYY WVTPRQ)ONYLKIIFQB>o95S1-~*''-$/ { lpAc=A  9m ,jx& E%U"&Z*T.378;x6 e 0h$k(,049>iC G*KNRUXZ\]^g^_i`%`abd4egyhijkkltmm:mgm8lllKlkk5jj$iijqk2kklkkjihg;ed b3`q^\ZRWT\PLG~B>C:`641Z-)$!;\ j(F;= 2aW#O.  =<9$).c26;E@EIMQkUXu\?_>acdeeefWggheiMjkmnnoMop2pqq q2q pppppvpooNo oIoppq4qqqq3ponmlkAigec `z]NZ V1RDNIEA>;8-4P/Y* ${D vB19/$>&x \ U r< %*/48=AOEJORVCY*\Q_,b7dZffgnggghmiAijkultmnop8pqqmqr(rRrdrUrMrWrrrrOqqqyqrrrssFsVsssErrbqqUponljh!ezb_\YVSLOLuHEA>Z95"/U)*"-<\. :A}y+#%%3C u H {l!!N&*0J5:?CHLhPTX[^s`cZeJg>h`iRiiiimiaijRjkl\mnpq8qrrsEst/tztttttu utttdt=tntuCuuuuuumutt4ssNrqpo6mjge;b`][YVvSSPLGHD!?93,%eT 6e -3LK(D<E}#X', 16N;@EIMQUYm\^`bdf+fgghggggfgghBiejlWn$oqhrksEstStucuuuuuvv6vPv1uuu`u}uvvUvKv-uuu8tssCrqq9ponmkigCdba\`^]Q[XUQM>I!C>7/("cW# [X_"<"9)$8m $)f-26<AFKOSWU[V^}abdVefgh>h"hgg5ffedddefhjlnprstuv;vwwUw~wvwpwqwwwww*vv|vvvvvvvvQuu#t?srqqpo'n\mlldjiEgf5eQddcb>`]ZVRMHEA:2b+|%U. !x+:^#$B#""!!""%'e+`racfGhknOphrysu[vvvw9wXwmwtwwwwx wwhvvvsvHv&v uuu>tt6sOr,q1p-omlkjjii hSgfffPf9f@eec+a ]ZURPJDK<5/N)F#= * 1CaKx-.?-,++H+,v.159>QBG2L-QUY]p`Mcqeghi9hhhhgfMe"cba;_^T]\[[\\^`d g'j9m#oqs|uuvuvv*vFv|vwwewwwwwvvvJuuutss/r*ponClkjikhggLgg0g:gbgghhohhhgfdaM],Y@SNIGp@p9Z2,%J s*_8u88X7656]69I<@4CHLRPUkY]`cfhkijjrj5i+hMfe caV_]\ZXrVVaUVvWWY\ _Tbei#knprs~tt tSttu'uv v{vw7/0' o {+6^_`_^]]]_D`begj lNn*oqjrNrqp'mk[hc_+ZVROLIFyCA8?><=<==4>?BFTJOTY_dh knqrmstubuvpvwvvu8spmiea]YV ROLAIGF[FEFGJzLOrQSUZW=Y\V^a;c8dfhAijkjSidglec_Z8TNHA:=2b*# w gD eUffff/e\deefh[j1lHn1oqqsCs{s=q8o khd_ZUQMVIFC@>;:8u766679;>CoHMS{Y9^chKkoprstuvLvw)vvtrnjf aG\`WRNfJG/DB\A??r?*@?AD%FIKMOQSVY\_bdgik6lmm kk,i#fb]XRLE=56-%R B++hEij[jjiiiijk8lnpqrrsIrqnkgc_QZKUPGKGC@>n;97u54+3%2&223358Y@BEDGIKMPSwVZ6]a0dlgjlmnnpnElkhrd_ZTNGX?850)"y~  klmnmm[llm-mRn$oqrrs[szsr pClhd%_ZfTOJpF Ay>; 96421b/.. --.g./159?EL~S4Y_dim1p{rttjutvwwwZwtqlLf`;YSDLF@A.CEEGJMZPTY0]aehlnp%pq%pFomkfb]XDQJB;4,%E lmnoho8onnnnoqrVssOssrphmiod_@YTzNI8D?;86=421w0.--#,,L+++s,'-0M39?mFMT[agZkorptvw8wx)ww^tqke^WPhIgC<73S1B/>..T./g02B4$579=;*=?JADUFJZN6SW\ae]i3lopqqqpYnkhjc_ZSLF>703("VsmoNpoqqqppppqrtttut"ro"kfZ`Z`TRNJGBh=,9^53:1L0[/..-E,,++&*))'(@(p(+^.539a@HXPW^oefjosuvwx xcwwtApjd\UTM E>73.-+X+)*+?+,./02F3~46v8:=@kCG}L~QW]!afj mprsssrpp@mj:fbF].VPsI\B/:2+v#np9qOqqr0r)qqqrstuuPV]bwhlJprtu&utsqolieU`ZUGNcG%?X7a0)p=qrsqstt:sst=uuuutsAok-d^WGOHJAE;52.-,:,+,-K.}01411E0/R.J-+*]((Z(+/\5<5DBLRT]TdkpuBw}yzzgy5xRuRqlf^W%O=G`@83., *D*D**d**++W++i+5**i*z*,-f027+;AHOV]chhxmpstuuLtrqlo;mifaT\VPFIA:4`ptqrsEspst5sstuWuu9usEqlOf_XQI.A;$60.++d*+G+,-/z13I4 3c210/.,*p)?(+-39U@HPYua=hnusvywz"zyy!v9rmh'a$YR1JvC;50@-+J+*+g+,,T,Y,P++S*})(((J(*,15 :A/HPW_^ddGjUnxr!suruuRtrqmp mkQgd_Y~RKEs?oqqrBrqrs(rrsttsspmbgaYRRJB<-51-U+F)))*+G,{-/24N5,44,3h3621{/,+)+-27>qEWMKUd]XePkquxdy{zzywtVojdl]V;NG?940.--A../0/0A04/a.o-+*5(''(#)w,05Q:AIPXW^ejoqwstvtsrqpogmk:hd`zZTOIPopWpqeqr rBr%r;s+ssbqpmib\=T>L-DU<60-+)(*'G(({)*L+-/24555535b431.,*+-1+5^;AIQYbi oswWxzGyywuqm`gzaDYRKTC=g7F300/013+4W44331/-+)l'%%&/(+//4r;B6JQR@Yaflo+rPset8srqqSponZlj9gbW]kXTSFnocophpqqq)qRr!r&quo4mid]VNFo>7t2,)&&%&'("(*,/ 24#55646?6615420O.,,g--04M:?G!NV_kfmquwyVy^yxfvs%ojHd]VO`GA;744(346,79998530.D+})&%% &(P,//6?*?#<:6W340%,)&%8#$%(+1I7Z?jGOXK_Iejcnprrr qpqpppvotn3khebrlmnnooooopJo,mjg a[SL%DE;4.*&$#E#R#o$a%&&(z*-0z24567Z87642L0J.h.\.1c48=oCJR[binsQu}wx$yxuwu;sojd~^AWQKFBt>=<=?@BBB@Z=\9(5j1.*'%$J$$'/)j.\3;CL@T\c@hbmzp%rrrNqEqqDq^qOqMpon7lig?kl(lmNmmmnoo&m|kgc]VNF?(601*'$I# " "q"#$N%W&'),/k134637 8775*3$1V///2-4G8jo{rurrqqqr@rrrrEq7oml/j j|jkl*lRlmn+n&liea`YRJB;2,'%a""6!"E"#V$%%'(+s-/124X5P6\6c643910121359=DEJR$Ya5hlqtvw?wwBv\ts=pmid^7XSOL~HFDDEFFFeECAN=b9C40-P)'%%$%&K).x5=tENU]dUjnrDs/srrrs:ssssrqonh~hi=ijjkAlmTmHjhnci]VO9G>7/)}$#;!m![!S" "~#1#$%&(1**+-/A0223B4M44332p22357;u?ELS+Za?glparu$uvutsqomie`[sVSP?M!JHaG`GGGGWFDEA>P:E51.G*(&&e%q%%(o,93?:kBJRZahmqs]tDssst=ttttt-s,qpg}gh)hiijl7llj)gwb\ T=LDC]IWOQU\bcgko+q#sJtttrq(on+l^iof@a]%XTQO2LJ-HSGFFEDBo@8<9P5O1.d+F)N'&& &%'*07?GOW_fl-qs ttCtHt/tttt_tnt s qpfgghFi i~j=lllitfe`Z)RJB92>*&U""!O!""#2#$s$%w&&'()+,_-./e/001;23#5)69=3AFLR[XZ^rcwh kmoqrvs4rvqo;v8-41D.s+)('D&/%%&(.4=DLwT\_dqjprtt|tt;tttstsrqpffgh0iijolfmlie_YPIwA81U*'&#"""6""#B#$$%L%&0&'I'()*+,-.F./0 1]358X< @AEJPgV7[a$eFi!kxmnpqUrq]p&nWm(kjifc_[{WpSQNIKGDBC@?>UeCZI9NT~Z<_'cg%jln6nop,ppko`mlMk0jwiahetbL^YUQN`JFB#>;:~87n6 4L22/-+*('&%w$#$%*0+7?MGKOHWP_fmFpsssssas~rqqqRpzoneefyg5hJi:j]lylllhd^OW\O;G@070R)&1###$$$%N%&W&&'(&&'?'(D()@**+,J-W.0<3!7;@F/L{RXp^/bfielnjooopppGo~nlkfjjeigd`\~WSNLID?}:74210/.i,*)w(P'}&%$$"#$(-5n}meQe6efghj#lUllShd^WNG~?7b0')&g$$T$%Z%u%&"&''U''''A'(6(5(8()=)*|+1,k-E/3"8@'( ((((,()((());)*4+,/k3D8>(DVJQX^dhlmp qq\qq`qqbpp6oWn3mClllljh~dR`,ZU,OIB<6,0-/*E)]((m'&&%t%4$$/#J""!!=!$)0$7?RG;OzX?`gylpBq-qSpCpponSmmmDmldvd*dewfhQil-lkg~cG\UMF>M5.(%#$g$%&"&}''(K()[))<()R))4((y((r((*%+H.3R9?FXM{T[agkznsoqqwq{q,qqq|ppzponnn?mkiea\@VPIC;5/+($&%%r$$(##_##""!u! 3 Z b#!&-W4081-[)J'?%e$#Z"!!"'"U!! J"$%%+`2:BeJSP[Kc:hmo#onBnrnLm=lkkkllcb[b`cWdfmh3ilkjUeE`yYRJB;02,&$"#s#$%%a%&'()x)*****))`((B''(*/40;YAISQZY'`f:knppq\q\qCq!qAqqr rsrrrrr q\o[mGie`[UjOTHA:4/*]'%O$"V!^ !- ,6b9!B#)0b8@HQ{Yna\fl:mnkmmHmljjjkJkl_`a~cQegixkkid^WPHA2918*%#"S"#*#$$c$& ':()*+?+,r,,++@*))-(*$, 05EWMUC\dQizn~prqqq:q qq qsrrstzu)uvuutFrolJgc<^ XRKD=_71R-c)&#!An[K v!i#(/.7?/G-OmW ^d5il#lkkkjiijlk*l@m:WY[_ bf3hkk hca\KU*ME>`6.(#"!e!!"p"#T$,%(*,.0r1344210.T-,.f16R;XAHP[X7_mfkk2oqirr^rqkq qqqqrstruv[wvwvtrIoJk&g\b^OXRHKC<61-~)%}"m /Jf> !#(.7>FNV0]cTi=klkekkjziijjk5l[mrRTX\a;enh+kkha [(SLD=5-}'#Y"\!J!!"M"#$'),/v14<684887*5p3g1k0/\139>EdL7S[%ahmpr sLs rrqq\q=qr rstuvwEwTwvvsqPmjg/c^gXQJ(B<<61- '#! 2YQl 0 x" #(K."6N=EMU5\b}hklkrkkjiijklmLOTY_1d:gskyjg`ZS6KC<(4,' ""5!Y!""#,$&>) ,b/3,58:=V==;9K64324k7l=gBIPW^dknrrsssrrBqqTqwqrstuauvvw6vvtr#omej~gc2^+WnPIJBlEKcRZ`fk4pruucuutNs\rrqppqrsHstuv3vvvDtsrq\ojmie`AZySMOF@"92-(&^#"/!% w _ n !#9',40>=p?CItOW?^pdj%mqt uvvButsrrCq=pqqrQrstujuvwvuusrq2oliCd%^XRIKD=6j0j+(%M#g"! c !#'z,4p6G.))$"!#$%'?*.391>CHFM6PCRRQPMZIGEF@FiI&LeR3X_WejnqVtuUvavGvAuuAtsrqqWqDqrFstuuvwxx w9vu|tfrqio"lie_rYRKD=R7/1-(&$#j! E } !q#O(:-5`=KEMT\ b+gifk ihte(a,]|ZZXXY'.8BM9W!^RehiZd_TWOH=?70$*%#-"$J$&(w,0R5;d@F JORUU S2O_KIHSI ILgOU[;aglPoqt=uVv4v uuWu2tts.r2qqrrsEttuvwwwvv`uotWrqUoHmKj fa\UNF@ :4H/*y':$$"d!U *!#)*.6>FNU]chik"i]g-b]YNUSQFPQ!)4>IT1\0dBgiifMaTXRJ;A91,&##%%')-2C8=BHLQwTWW#TPMgKJNKQLO R Wb]ccimqrVstuuunuuttssFrr~rrsttunv vvvvuu srFqoVmkhQc^WPI,B=61y+(X%$# ! >!$*908@"HP~W_eijLkmi%e`GZU P1MIHHn9%0:EPYybfigcb[0TyLD ;3-'$#%&Z(*.3l9Y>CHM?QTWW!TPwLKIKKNRWS]:cimpqsEstxtttXtztttYtss2s!sUsstttututttrqxpio mkHhd:^WPJKD@>s72,c(&% #w"y!;! "%+1:B7JRZ+b@gTk jkwh]d]VYOIEAB?>n!,6AM6V_dihea]aVNF[=5/)%$ %&)=+Q/K4J:`?DINHRUHWW1TP1LbJJHJ+K,N`QW \c#impqss3ssssst+tHtsss#ssLssssssst 86p4Q(|2=IZSS\bii.f_YgQvI@82 +'N$%&)y+n/44:?oD|IMRTaVUSSNJHrFGHL"OU6[a4fko2q.rrrrrrrsXs|sQsrrrrsasWsss+s/sGsssBreqpp8on ki2dZ^WQ[K+D>r7s1u+(&$#"!J!@!$(c/5>BFiNW4^{fjlkjFeV^UM2E<6[0B-W*d%/:EP0Z`hMiha[SKCC;4B-(%&&)+/"39>DI#M+Q`SUTkRRNDJ6GSEEFJNnSY_eJimp7rr"r\rqqr rsssrrrssDsrrrrvrsrrr3qq/ponnkhc^W1Q)JD@=v6n0+p(l%$#6"z!!c"%)083@HPY`gjmjhb[0QH$?e6.'$? S!+N6$ALsV^fkhi7cm^(VJNFW>6/+?'=&&)r+ .27=1B4FJNPRQOLHH}EvBC+D.HKQ>V\bfknBpq)qqfppqqr(rMrNr3r0rWrrrrorKr-qqqqqDppponsmkih%b\V^PAIB;4/u*}'%3$""!!#'R+3<:CKS_[bik l[ie^V`KB9/' T 'V2=HS&[BdGgid`JXQ_I`A 92n-) '&)*-16R;Y@/DzGKMONMIF]Ci@@dA1EHN^SY_nd15:-=@ChDFEDwAZ>L;88I83;5>DIJPV\bGfj}lnonnnnntnnnpnLnknoop7m0n+b'(%;#)"g!W!!#& +2T:C KSZ@b:fjzihb*[/PF?AM@?<964M33t58>VDJQrW}]b/fiSklm[mxmmn&n6n)nUnorp$pqqqppUoooioRoKoNo nmluie6_WYqR@JCf< 5y.)%$l"v!!!!$t't-4=EM(UI\8cnfi|gd]UK@6,{#m; E&P )4K?JT[bde`\UO|H@19K33/*b(W'7(*Q-/26+8:;1<;:8{520//C138=DK[RX^c61,)'f'(*,/[1456\66J54i2/T,,T,=.h0k4o8>DKsRW]aegiij*DGJPW\`cf{h?j>klmn2nopnqJqrmrsrRqq8ppRX^bdcOaZRH=3)  9=Av4(3>:HkR-Y`uc*daM^_XSKDM=61,)%$$&2&'e(((((t(?'''&?%%(&'*-j037Y^cdEc_u[UOHvA:50+z'$##a##$$6$W$$~$L##m#"T"e"$&V(+'.71r6:@FCKP^TYo]ae>hmjnl3m@nop]p]poomn kjFh(eb_\@XTNPK4E@;a62.)&$1##&/(+W.39L@+FMSY]_a`_ZTI?5+W" V^iq 4  +6rAdJT Zua?ceb_OZU.NG@:6]1,(&P$$$Z$7##$"$o$d##6"""%"\#\$J& '*-k16;AaGL[QAVz[F` cgPimk4lm]nnnmlDjh)fBc`]WYUQMgI;D@;Y63/7,(v&%%&),:0Z4:@GM.RX\__`U][VTLA7.o$ G ]$/;)EO5V^cfeWcH^VZ~UNGAZ;6b1-$)&%$$:#E""##^#@""!~!`!u""r#w$&(,05;AGM7S)X^b%f7hj_jkl%lk j(hZfQca6^)ZVRNJFxBZ>M:6,2Z/+)8&&%')T,05;B_HMMTY6^Y`a__B[`VNBD:0w'I d  )4?IQZD_efea^Z,U\OIHB=830S,*X(c'F%$##$$"##@"""#@#$D$&(m+/94<9?EKQWp]aJegiijjBigffda^[XT8P#LeHDA=t:63u0M-*)s(()a+.2-7=hCIOPT?Z#^EaaaR^$[VtOE<,2-(  L Gh(j 2X#X.9_D MU\d g}hec^[VaPJiD6>:&62/,*('}&G%%$$_$%###$y$%g%'Q(+/&38>DJyPVU[`Pdfhhi%hgeOc*`-](YVR8NIEBy>;863B0.},+R**+->0^38>{E K PV&Z`GbdZbM`\vXlPH,={3*p!j Kf$ZlIg'2=~G>PW%_dhgweaq^[eWgQKEA6=:.7-31W/-,++')((=(+((F()!)*+E,.b1B448=,BGLRWA\u`dyfxgghcgfd9a^;ZVSVOiK5GC?<:/75321007/0^02q47;o@FLgQV-[t_ac4ccJ_]*WQH>4+R# M  l` %!6+6A.JRIZ`ghheMb_\XSMHD@>:85u32r10.--X---./p0s1e2479=GApFBJO&SX]Oadfgggg#ec\`]YUR N(IEA>;976O44%34/4569;?CHMRX \raGceKca]YRJ/?5,#3t gxb%+cg 9 }$.9CKTZbaehgfda_]BYUP-KH/E|B}?=R;:[987_65Z45\5678:;=g?ADHwLP"SW[_|begjhhWhgfdao]ZWSOKH D%A0>=;t:99:9;4;=k>ARD==4<<=4>>@]ACEHJLORUX\[g^yada\YWRJ@6,[#{ B~u38tc? p(2=F'M(SX_^cjf8ee ca_^[8WTKQ NLhJIGFFlEEEAEVEtF9GHJILtNPRTWYn[w]t_ad8f1h,iRj;jGjiifd `]kYVS0OLIH FF_F!FGIH8HIJLNQISVY4\_bGddLb^[WR-J#@5,W$c` vKozJ&<U ` )3=ELQXx^cf grf:eKcc a_\YUVfSRMPONvMMMMMNNOQ7RU WY[\^`ac,dfgijvkcl#l>ll k%hfb_@[XURPHMLLXLMiN[O5PPQRTVSX[]`XbtdeZedb`6[WQJ)@95,# d/:Q{ow0 +xD,l {o!>)3uCIYNU[_e`aa}bbcFcecbjaa~aKaab`bceddeflgBhhij8jPjAihguff:efhfghik3klk@jh8fddc`baa-```a_aaaaaab]c ddeydb_f\aXUQuLJD=;1Y(!e' gh7-`<% B9% -4:@`EKQiW[[*]^_@_`bcKdJee~ef^fgWgh:hij&jkk0kykqkxjihedb]a`aBabcecghuiiihgfff_f2feeee}e?ddyd(ccdd-dIcyb`].YxV}RO HA8/3&NwK s0A|J^zE 3r"{)17;@EoK:P9TVX XeYAZ\_Zaobd:deff`fggmgggg?ffNedob`b][9Y-XTWWX(YMZ\^`b.ccccccd$ddddd%crbba:`__e^^][)YVSMPMID=5s,$\ o1-kH u__tNCCO 1 &6,2c7 ;,?DIMuPQSTUX[j^`ac2cyccccc}c ba`_^\ZX#URvP>O_NOOkPR4TSVyXqZ/[Q\g\]t]^y_H`.`aaza7`\_^]\Q[-YX VTQOMVK%GDl>817)"{{0 PwjR7jX}dea^m}|~w*?G ig"(.148Ob 4.^r<$uBwu~OYVQKUQ? I&)E m }X"% ')S,u0E47I9;=?>@BGCDEREEEuDCB@->h<:8630-++ *T**,-&.02b35w78:2;=?xACeEErE]CB@><.9754l32I0-)$ q m }Z?hAx~YMpAJJSVVE8   : 7t2,v[!$~'+8.1.35D77899N9P9y9%876 4J20/=-C*(K%|#B!^   Q!E"D#%a'(*D,-/y15357 89:986420.-_+*)B'*$!EDYK fl>" + QmIkO<N{4>DX`Z?( 1Y: }b}D"&<)`+-r..k.--\-,,,Q+Q*!('&%$W" qP U!#%R&(*I+- .--c+*k('O&$#" =G.f [ CD-gt7q=*8d/IRSF@5.0 9^ "E#6###:""!: _ <s(>M/jm>FB`$ !!! E7?J 1 ol#hId>T2axwt"GUE($). /; x zt$L}; i - N*/~  d _1ka8E _ mwmt}_uLX(I&(:U_YS#?;#fl0+ ' KzeU R 7 gG\tjoguqF8  S  | } ( {$H\{tLF)<.Y;9<JVUG,) [3?tc'Z=cF#cJ7==.< q Q gJ#I"2<ckWKp|eZMIRR=(1" m Hk2)siLBsk*,;`f@^! HY)#bwqWN[g rYK899  *\iG3o/<E:& 7LI'uJ6Dn \Nbyt.qd@9Hr `; )<;#  Mn`;!990&-<f~kF+/9&bHFXOa-B. @rwWGHH`~N"  &B@ GO0 1B?<)7hzVfHC?X~ysXBGO@/34" )NQ9* Kyyma]ahl[]yZ,  ) 3^cH! $#99J  g]UftneC''3+#+/'6/'$0Uw{q{~thhksS, - & $=!R`20?M_cZH+;{2I5rkZ4+3>R^_OD('+KNGOZ[ikl/'tL0  2 1%2;1#%AbujK+%..-*1@Ywsi} 48-pfX=--?KWebQ4  .,KKJb04y[3  / %* 7UZI;6CRPINMB.6p# ynf[WY`ijkX4&7,-B@My 'm[QK9"    0) #&$""JddWC>A@?CD@;88/8U)|yxupng^I(  %,EOa[<+ ..%!%& "/3"(H`hWD2*-,28CU_WLFWs&~umcXJ8,-.% /H`vpG4" # 0w\'8)C].-D "##t#{"!NIx1/) S    V  Y `  U `I  1_D r^O,|y?   HZTk*<6,V/y  sxS !;!4!- A UUV G     3 W Z  J f k t  > e;IXP9qSYQz n2 OO8C9 2=DP{ !"i!! Hy~6[&Kg r  - L d } "  . # ! %  @ G  %S@B0>e|_"QhKk gb@a ) L vnvA;\5%{b B  H !  l / N i x O      5  _X rG^.}yN oz! j`?!M   8HIP]VS8o^X e e e  l " H d m z O # u y E / h F[H :  }E~-Y:XYM8n.0x`gPIJ&nm{ZrfjWsZV]]   m ; d / ' V v p J    % H h c 3   1 # ? /x,%Wz f " o ; j1BS#HA~2_OaKf}-d;GV *S| # w  t r 9 1p7S4Ri{/ J ~ V  } N 7Yo    O 6 - )U]3W|.]/JEvq5"9 diaPCYP f o Y lkvF% ^Bp6?apBB X _ 6 .  :  J p jA10wezC_ *i p [ 1&X1V] m! H/2K77ILF739Y'j` @w`,~ D   c K l  6 k K wGTIl"A{ZS 4 + y  x ~apwZ?4L7[UPLb{{`KC?Qm)D9f<iu ? $  F v & ` 8p!2( c - f 1 a % v ]  k bHi[ JhXt3sfSS_lnZ9   .FRb}hU @<M*X6 * ^  j c h 8  D s $ @ H   : , % F c > 5  A oL H}a/p |N*Ttw_U< 7c1Y~iOObXx5OqN[Q 4 M 8 E y f [ W Q .  4 5 1+ Mz ObQOWSB@&/d`0?  '_\ %+3se  Q Q )   _ b o ] 6 & < y [ # H  f #yY*NT`lr7?lf6&U# %Ob}?q0aL?0$9mRI|91I`gzlv ~W0uF x   r X ZaBQ&|Dcrovxe#p]z.'il$t2udG+sW#~3u8 -X z u7M U Y /efkXI[=>OH -KY'dtcw-JZ -       F X nQK(r hS1mI5f'<4CC@gGe }iK"& R=Z"H`Ec/%0zw F f V DaxLM28u`   6XT AWv !veB d~{yV^3cpzbF?bx0=ySi P@rZ  (zw\aozZ 3vjMp\/  N 3~D{{=dEx?~I<];j2>MRZ*4D1Z`%PcM2H> V C ; \#K !}"$I%}&'t(6())) ('&%$#q"!!l!-!5!J! kpL9 a `1w%IbiX=O #AHOngw;2[yi)Q" (:95+TNj  FD_D?* !"#%d&(*d,-/A01237334K4/43]21B0.-,,/+++,>,F,'+~*)(' %#!(ima Gsu;*Zr2FZe^+/nfQi@-P d _NQ"$c&')4*E+-7.024z6K79=:H;G;<=4==>===C<;T: 8766(5556D6\6D554&3F2 0/-6*(&$"=X  FTU 2_ af#>Y}:OiLgyHvb<.S X/A#c f4*K#\'2*-|/q1D2p346\8b:^<`>c@ABCDECEFG(GGH2HH"GG8F2ECBB AVAAA5AwAtA1@y?>> =<:9*775\30-*'$"A|\  sl<D&IR(\qNaLqp hD># t3e"&*.2y5s83:;=>I?A]C_E@GHJLKM$NZOJP,Q R(S(T T}TTTTTRQPONN.N NNRNNYMLKJVIGFE7CBP@><96D2H.+#'$!M mSW1Q3<!)%(TG YT!%)-2]6:9=@/BDnFDGHJ6KMjNP;QS TVWXZ[6\]^_|__` __]\[ZZ$YYYZKZZSYXaW&UTRPOhMLKJ(HEBi=95h1_. +(S%"Z4|d  l0%:$97:q1pXhj = K]#'{+l/4]9)=AEHK7MOQRT"U)VlWXZ2[]'^`fabcefhghwhi=i%ihh g&f5eDdPcckcd.de[eFdcba`E^] [QYWVUSQ3N?J EA4<841.+($ I\O `&eZXX9&Ff ny  ;:n K% )o-15:?_CGKqNrQTW1XZ[\y]6^_3`=acdfUghijCjklmRm}mmhm=llrkk%jkiiHiij(jkkkkskj&iHgfdc-aG_]\#YWzTPL]HC?{;852/h+&"K# m P3;6-L@l="I WVz %*!.3i7<@EJNR&UXb[]`5abcCcdse5f=gIhiklomin+noorppqqqppppdpoo!nnfndnoprqq`qqqlpponm^l jjhfdb`\YVRNKG9C@2= 961f,f&!M X:00, "6 7Mza -   !h%*0*5 9=BBFKkOSWIY\_Dacade{ffstMtttttttuuttht8t3tuuuuuu|uttgss2rgqpooJnnlkLi-g!e.cYa`_^([Y6URbNaJEb?81*$kR %\!@7KE0"&B#;'+/37f g-hlhihhh0hggff^ffghj kmoq'rswtmuuvv^v^v;uuuv.vNv8uumu'uu^uuv uuubu&tt)sUrwq|ponnm|lkjni gfhedducbs`][/WySNIC[<4-'!x$ Df$$$###}$%~'*-16D:.>vvvxv uuFu2uLuRu7utt^sslrqponml{kZjiiihhgffsfMf=f-e}dba^ZV?R LeF>81x+4%kG_ /" Kt./..--./148x99x88^8M9I:"bc@deef^g6ghhhhgfqdb_;[VQ,KgD>81*#3yD *x^#@[DADDDCwC;DDFIMePTwXY\_beh^kln8nnnynlkhf5ca_][YWV*UgTUUWYk[^zadgjmdoqfsst@t?t[ttu\uvv+uuuuutJsprpomjhIecqaD_]h[[KZ[\|]^_aBbce!fghiEii|ihh4fBdK`]XT N!H"A;Z4|,%@h, HARdNOLO$NNMNNPyRV X\7_beh jlnopGoonpmRkhte@bL_\ZXUS,Q[ONN(NOPRTnVZy^aehl5nqstEttuumuv9vgvqvuuEts_rp.nKkieb_\YW4UwSS\S*TUUWYd[\^?_aRc=dfggh0hi iih(g#db:^qZVPJD>d7D/(o!m2 gBXYYYpXXX-XZ[^`cfik7loKprirzrTqp2nKl,heka^&[WTQO=LJIHZGGH I\JxLOiSPW[[`ndhl?oqstVuuJuvvvvvNvuTtrq/nkheaR]ZVaS,OMKKKrLNQSqUWY[)\_$awcefegIhni@jj#jhgd3a^(YT&NHNA:_2+W$,q TY`/aZaam``__abId0f"hPjylWmoNq7r^srIqonkUhFdO`H\=XU&QNXK7HF5DwBA@@@ABE GuK~OUZ-_?d)hTlor!sJt|u uv6vvwvvYuotwrNoljhd`q\WT PLIIG$E.DDF GJILObQSUEVY=[^s`bdNf>gijkskj3hHfdOa7\_WrQfKD=6K.' z Hfhhhgg=ffghigjlnRopqs s{s`qpn kgd1_[hWSOoKH>E.B@z><;:n::;;=?CHUNSY_cilp>@#AD8FI:KNOQSVY\_2adgikYm3mmlkj0hKd`9ZUOdHA791)"=^W +k(j kbkl"kkjjujklm_np=qrrs=rqo~mYjfbx^SYUeQMIeEB?=;9765445z579?@C`\5VOPGL?`7^/(Q 3 7n omp$popooo=o7ooprVsIstQssIpnYjIfEa\\VW!R!MwHD@=:8?6 4?2#0[.-,,G+++,n-Q0y49@GANmU\c hm6qKsvw)xKxxxZxv3tojd?]VwOLH~A<+630/j./%/1246p82: <>@7BE=GK NSX]bQf/jloqr>r&rrq^oljRfc>^$XmQIB:2+#rAompqqq~qgq/pppq1rbsttu\tqsol#g-bA\VPKbFA=:P75 31I/.0,+**!)(('(K(+.49AIPX_flq'tvwxy yBxx usnib[SLE=8[3/,++#+,-L.0]13,4679<#?ADHlMiRX^HcgjnprstniYbZRJC<71.++=*++'+,./ /012l368;>&A_F%KhQX]cg>knqsBtut:trqlo8mj|fab[UNGS?f7=/("!q@rvssds8s[sCrrursstPtuu:troPid^WPJ@D->%953k1!/.7-B,e,++++*w)('&&&z'(-18?HPLXa hnrvxyyyxwus@niVaZRZJTB;50C-8**%)** *V*+,,,-2-F. /}1369>CJVQ.W^2cdhlpsttuctsr4q%nlqhc]XQIAT92$+]qrs_sssss(rsBstuttsroNk2d^XQ2JyC>'8410G..$-4,,[,,-2-?,,+.*W))('(G(+/5}8<1.W+y+;++,!,_,,,,N++/*')N(()i+-15;B8IQX_ekos tWuuuztsrqom]ifYaL[{ThMlG@qqrurrrrrrassxsqqnkf_`Y\RJCr=L7R3.,+%+&+++,K,-.///p..i.--_,+L*)+w-27>EqMEU>]dk-qtfwxz)yyowYuzqmFf`,XgPIQA;V40--X-2.I//0v00/.-,*((,'(*5-06;CrK2SZaglprttu4t~srr9poljfb\VPyJpZq-qrrFrrrDrrrron}kkga*ZS%K]C<7D1.S*)[(X()-)*+},-//0e0G00////H.D,+*h+J,05);AIQeY~ahnrvx.yyyxFvshoicJ[T)LD>7D3//q/O013P44432C0$.$+)'&<&e&)V+05= DMU\\ci;naq st tt srreqqHonkh\cY^|YTo&opqNqrqqqrtqptm_kBg`b[TM2E&=7K2-*(' &r'#'(e)**+s,.N/Q0 0s001500i/6-,~+!+,X/39?VFN+V]^elqu vxyyxwtqlFf_;WPpHB";b7>33\34698 9:]:n8630.K+_(&%%Q'(,17?G|OWz_Kefk8nqrssZrqqqqoppAnukhd=`Z\sn(oopqTqqfqqrqnkh)c}]V}OYG?R8<2.+)'%J$$%p&&'(*[,-.00112b2 1a0.-V++,)/2U7==;<=?XA&BCB@v=n951%-L*1&%?#$2$t')/5>F2NW)^fejEnprrrqq}qr r&r_qpnlj'gk7llnJo@oopGaOW^_Le{k3n{qrsCrrqrs"stssrqpnh hiajl?lm5nqnnkhobe\1T[LD<@4,'-#."% !#!l!"#v$'%F&()*,k-/g0Z131K1#00]0m0|1U2&4B6m:S>_D/JOQSXa^di m7orstssHqq o;mike|`[OVROLJqHLGzG8GGG8F@CA>=K84#/,)8'O%%$$J%%).-[4b;CLS\bi8mDqRrsstsXsbsttttt@s-qpgggh8ik9llmnAnkga>ZRMJ|B[92+*T%!!c q !l!"^"#$@%3&|'()+^,.;//00//0~1L24K69=BIGMTWZ`2e[hlwnq0rLsr[qpomkhea\X>T-QCNvLcIHQGFFnEDbA?s;73/,)'&%$%6%f(+S18Y@HPwX_fkpirt*FcNV^elp^s~ssrsKstrrqqppouddefhjnkmmmeif_hXIOH@;70)&q#$F$s%I%%&N&')'H''''(`))r)*+O,,,-.@0o3c7;@}EKQW#\adfikSlvlm_mnAn"mlkjj^ii\gPd`#[VQMDHC>9531o0G/E.;,*('&%$$.#]"!"g#'%,@4;CKT\cjo$rss r"rmrqpppoo7ndd,df$hikUmhmm5ie_WOG?7z0l)&$c$%*& &v&'Y'(((A((((()))*+*+d+,N-A-038=sBHO;U[zaHe6h_il(mSmmn2nWnvn)mllk?kjjhfxa]~WRLGB;6R1W.p++ *^))'&%%$##N""!!]!%/)1n8AIQ7Yavi mqr?r;q1qqpooo_nn}n0d.cduegiikmRmm2iue^WO,GX?z6/)K&P$ $%"&4&''(M(()-)b)D)=)*4* )*/**+9+,-0u4E9>DKVR9Y_ehklnuo!oooDoooonnnmvlll3kj"gc3^Y+SM{GA:5/,3)<(5'Z'&I%j$###`""+!!H u #'/+6N>FNWa_)flpSq&q4ppaponnKn=mmmd,cdZemgeiQk&mmm]ixe\^qWBNF>6E/1(%#$% &<&'c(%()=))*:***v**k**&*u*J*U*f+,0&4:@GNUU\bhlnoPpTpxppp5pppoIoo nnnimm-k"hdM_ZTTN0GA:4f.*'Y%$$b##"c"""!! R"Y%,3<3D(LeU \ejso#p.pMooPo^nm{mm mm4mUc_cce#g55.%'%##$R%{&&'(T()j* *g*s*j*+**G*F*T)))*,T0D5;AHP'W^djmp>p}qpppppppppPppzpmonloiea\/VPJD=560,(&$#"!! !! 45pQ!$+:2:BJSi[]cwhmo.oennNnKmbl_kl lPlm(bKb:cQdgi@kDmnm hpc\U0LD<3,&$;"^##$%$%&'l(%()~)*6*M****H*1*))`)4*,J05!#*09ZAAIsQYag}lnn_mm72-*m'u%"!f ?  gIXgZ!f#)0o8@HQ&X`f:ktm#mlHllvk}jjEjklmW\9]_adgj'm6mk_e`wYQIpA90*$["1  !!""#T$k%&'()*b+?+++L+ ****@,j/38?F#MUC\chmp[qqqZppppqqyr?s stu1uuNtsq;mie;`[W&Q2JCI<&6+0,)=&#A!*~LNy!$))0 8_@GP.W_qdjXlDlkkkjiijkYlzmkW[X[^bfbilldjldg^W{PG@ 8B/(#]!\  !"q#%H&()*+,-e-,,s+**+5-16;BmIPX_!ejoPq8rr5qpplpvpq qhrrsu(vvv|vJtsFp=lhd`\[VP?HA;.5=0,e($" R G  "}$)/8?G|OV^~diklkhkkjiij]k0lRmPRTXH\qaeGhEl kic>]V NF^>6.@'"s %i >!%" #%')+l,-/./// .(-++~+.2z8>8DKSZahDlpqsJrrhqzpppq6qrAstu`vNvvvut.qnkChGdaP\1V0NG@:580+&#`!2 1   i!!U"$)/b7s>FNV]wc9iklkukkjiiejXk,lTmjLOTY]^cg6kkk_i>b\UbME=6 -'N" On {!"$'*O,.0B1F22210\.,,},/4O:A GNV]djnqrsss+rPqqRqq9qrSsstuv,vv6uDsqogljge4`[PTWMF@1:N4/)%#"P! $  F !k!#$)l/7>FNoU]bhklkl)kjRi hijklFJDOV\b\f'jjhbL\}TM D<5W- &!pe  "2#&j),/13455542r0---16=DK9RfY`fm ps:stotsrrqppqBrrsPttuuvuRtrpanmjhd_YRKE2>83%,(%$#"!^ v !!#+$)/6>FNfUs\bhklllRkih}hQi`jkl7?DGJRY`;dijkhb\U$MzE>=.5-b'U!  !d#N%Q(z,/25 7 788864;1/g/0m49@GNV&]dinqt tCttesrr[qppqqrarsteuLuv1ut}rqionlk gEb\VyOIsC <6/*'@%#"!!! !!~#$)/s7P?0GVNU]jc`ikll l!khffgighi8>OEN Vd]chihb]U]ME=y5-'"c gP K H! ""$l&*g.~2v57::;;J:853T111397=DMK8RY`]gl prttutt s6rrq>pqErrorstupuvfvuatrqpnmcj f`YZTMGy@:3O-)'%;#""o!! !S!."%*,/7?GOCV]cikClkkjOge4dxe4e?ef18N@uIR[agi8ic^3VcOG>6.)#l!1 !!" #7%(l,50w4x79<<=<<96424<64;X@GNU\ci[mqs5ttztttsPrrGqqaqrkrs^tXuQuvGvvvKu!t rqpnkhb]W^QjKD]=6v0,x)&%##*!!" ! "%"*0X8%@;HPV^dri^k lkkheNb@```J`aS+2.;*ENX1^fPhid_{WPkH@;8>0Y*h$l! !"#$\' )-2O6W9;=>?b>=O:754_6@8>CJQY`ekoKrsttttKssjrrFqq[qr~rstuvwwwwuusrq"olie`oZTNtG@94/\,D(&V$#"*! ` k"^%+*08@IPPW_ejik lkjsg3c _J]\h[ [ [t%-,6y@K:U&\dhj3f>afYURhJBM:/2K,+%"!""$%~(L+D/53{7P:m???=;86`5J7:@F;MT[ bglorsttssssQrrmqqqrsLttuvw4wwvutsrq%oljOfHb3\W;PI~B;61-)'+%/$%"l!M h X"|%+19BJRgY`a_fjk}lkOi4d_[9WVSS0S'2:;w8~76c9!s>srrrsNstuuuvevwvvutqsrapopm`k;gd+^YhRKD>9@3/*'%$"! a"&0,3 ;CqLT[c1hbkkmkgbZ\W5ROLyKOJ$'.9DOXafk(i+eN]0VNFV=6 /($"$ $X%'C*-A1=5"8i;q=%>>??6=:8 669=JCFHOgV\ci8moqrrrrrrrsFssshstst(ttu+uuuu!ttsrqp)o)mkhe_ZS#LQE?:74/*(%$#^"a!"! #'Q.548J1*#%#g$\$&'*-15d8J;<==>>!<97636c9=CIOV] cimoqvqqqqqrrss_ss}sst=tttttttWt9ss%r$q7p*ohmlife`ZSMF@:4.*U(%$#"!Q!7!*$K(g/6P>FO;W^fjmoll6hcc[ZSLF@;9,6(p3>@IT^:dkkhaV[?SjK3B:3,'$L$$&'*O-l14^69U:;;ib]!UHMND<5B-)% $$&'),03567J8h9~9: 9^8>64R348B<(AGNT[afkWmp`pq)ppipwpqmrrrs sNst t;t3sssusesMs4rqqpp9oml\hd^XQKEU>81,('%($G#2"!c!"&+_2:BJR[ahkm(jhc%[QI7@80*&v" ",7C5N1X`Nhiic^VOGb?7y0'+P&%N$&`'Q)A+.Q024567(7`654323U6:?E8KR@X_ d>i knppp7ooopxq qrrIrssyssssbsrrrtqq.p}p;oom%kXg{b\VP>IC%< 5/+(&5$p#""b!"#(e-M4$&&(*p,.0224+444D32112=47=RBIyOV=\afjmo4pGoonnnoOop1ppqrJrs/s-s rrr6qqIpooOnnPlzjRe`ZRTNbG@93-*N&%:##5"T"=!#a% )/46>GVOVK^dijkgbZQF=i4C*,!407 uJ %>/; F%Q"YbehseaZTME=61I+(p%& &O')H+-./012v229100=0}0259?EKRXd]cgkm=nnnn@mmpmn n2noopqrcrrr-qqqYpoonmmkic^XRTLE=61<+(%n$!""""N"z$&+19AIQXr`Kerii.hc^iUKA 7Z.$n !{+6ALU^tbg4ecj]WQ7IA:y4.*'J&O%'S(;)+i-.:./0V00v/..J..0V2 6:A#GWMT8Y_chRjmm{nmm^llm$m,m~nnopqqqqqappooNnnTmmYk$h b]MVPJ@B;4n.)&##"!!"I"%(-4<82.7)'n& &'`(*+,-.1.r...-$,L,B,c-/266;AHNTZu_@d0ghjk8lllllllm0mnoo2opqFqjqppqpoonn`mljfa[U}NG@;92,'%""M!W!j!w"#&*P07@3GOOW]#cefgeMb\SH? 5'+9"6 7 ^#:,7nBLpU[bdea^;XRR,JC<51 +(o&&'&v'()*+,c,,,,r+**<*+1,".16;AHRNUaZ`ndPgipk]kl9kllZl`llmn\o.p2ppppgp7pooo4nmWlheA_ZSML)D=,6/*&##"! !h#V$(j,3;DCKfR[Z _def}b_VMBa8v/%m P`4,Sm'i1_wZ PF;2)su @m d!+6`AKS-[`edc[^yZSLUD=7z1\,'%$%&+&'4'(Q((r(('''^&''r)]+~.26;EADG`MT#Y^begijjGklNlmm`mnvo4p2ppp'pooo)nm.kidg %/:ENW/]=c?dd`]WQ*IBW;5\0Q*']%%<%/%%%&s&&&%%&/&N%%%'K)D,f/26 :@F3LfR@W\5`cf_hj0klmmnno]p9ppooofnnlkihegb^Z SMF@293.)n&:#"!*!5!#%(,29AIePGW]bcde:b4_]X!OD:j0V&' Db0)^4/?%I2RYavdfca#[V2OG@/93-)u%$V#$@$7$Z$$$$$O$9$t$$$$d%&)++.1~5k9?ME KPUZ^`ad5gi jklmZn3nopBp?ovnml^jigea^ZTNHB<6,0h+'$"! !"%'+07?FN3T[`kdXdfd`\^SJ>4w*  R <!A. 35#_-8CMU^bf_eMc^ZT8MDE>82p-(%#####$$&$########$\&`(y+^-1?49>DtJAOTX\_c*ehzik3kmmnnnml~jhfdb`E\Y TNIC>872-*#&~$v"g"+" #%(+06> E3LSX_ b6dc"bK]JWRMCs8.{%b a } t'l2c=HnQ6ZQ`5eff}b@^XRKC<61,!(0$#"#""""##"""""!"#F$&(, /3~84> DIOsSXb\8`cg hj'jllmWllajicgKe+b`e]ZVRM~HYC>%9Z4,/+b(n%`#"# #&&(G,*026H= DKOQXj]b{cdb _YQF !D!u"y#%'+/5;BGMSFXk]aejg hhiiUhfdb _\Z VS3OLE3KQV\`d=dcp_\VMNDS9/&gj ;iy9j ?$.:DM5U\Bcfh!db ]ZZUPkJ@DK?<:7B3}0.-q++*,)))l)_)5((Y(,(O(U(()+2.016p;oAFL#QWr\adf-gghfe"a^ZWDSOKGD~A><9364-1/-,Q+++j-,.149?yFLUR!W\bdyecaa\XGP/F;1(r; >1P_ij%5=(53=FOV^cg-fd`]ZnVQKFJA>;@86X43V211H00'00*0/////00247c;?DINSX]adfoggh6fe)a]YUQMJ-FoCj@>hg eaY]^XTPLIaEB@L><;x:876616Z6O7C8`:=?AE;J9NSX]!ad.eca] YQIV>4o+ "0 'I_ %\c _ R$.o8BJRX_cfdc=`^^\YUpQMIGED*BsAp@@@j??y?&>>>?%?-?{?@ACqEHH-KNORVPZ]adxgh:iliVizgf bj^ZV.RNKH9ECZB@?>>=\=1=,==>@UC EIMmQiU%X]y`d)dQc`]AWR/I|?5+#b 7`$_m`2^v I&U0N:D=LRY^ceecbI`t^\*YU^QO5MKJSIZHHEGGG}GCFFFFFGnHILC/I$O U X[\z]_^\`(bId/efgghhijTjjk kUkkkkkHjiRgf.dObl`w_6^&^?^r_a bdf,gggffgf7fNfg@ghUhi\isiXhgff eMddFcbaM^[WTQ`MGA8:/5'  8FCNxo9WK P 0k!(/r49B=BHsMQSUYVWY\^m`fabcddee ee(e^eeee{dcb`D][kXVUSSTUjVY;[v]_`aaab/bcd`dexeeeadcca`__]\aZWTZQpNdKHC>?0@BDFI KLN O=P>Q3RYSUVHWXX?WWUTRPNKITFDBA ?;q701.*$  5 /FA:}#luc[ILXse'6s !*D6!2%%(f*-1 48<>q@XACOE*GBIGK^LyM,LLJJ IH%FECB6@%>;964R2112@35f79;>?ACVDF=GIKMJNOONNLfJHa<:9r64/w*$r\ yQa90F~kvOTLKKQH9 + t&"&#%(,J0K36r795:?;=6>@&@@@?>=<;Y98684 1/B,*b(&%%%'/(*,.02468:Xr@BXD D{DCPB=@T>D;9_725,321 /M, (/#d# ow8|R\HlBHFRWTA4rA ru\f #'*-e/x0124 4444f332 1$/.T,*(&$M!TO!m#%')+-/1357Y8887531/.',+/)(5%#F L=   [zWwX;Es6@EX_W;$2&- n 8+suv"%i')()O**))&(''G&}%$q#4! K#4Nx@!#%')L*+,,,9*)( &%=$,#! +&X S\f*fx<vC-3Y}2KRN?91*+bB   )}s?V-   O X o 6  I^GZ  yRaG8; ' vLaOkGgFZ'2[rvv#HS=%+6-|ga4 ) * )uS#FyA o o*1<8h N  '(FI\*Y I  ~BnxlRgIZ.S24>S^\X$?7 74f& dE p P  dSae]>#PmJz  M xo; z  XjWYod?<s:.aFB=CQUJ.*#"Y~RVF2/d62.1=x 8PD) Ng\?"s-I$DLngQDg n`H=HO;&4)s4V`2H:!EK7>46U&'y'_g63m|rTDLYnPC67>  $al40upNCB`   tWEVu5/g?27[v[9'><!  *-FM..|[U][[_e^giM>42,&&Y;1BB^8S?T}YGE>Pn  I '>8  *]W/>aaH7(QTl|olZXf}kYOJKHC>4)?OE<1"/XmcchjXXq  W' " LjgWBCH@1#"'"jFd8~lip|iM8,04::53%/2(.73<]~sdac}zW+(  ! @. -a[3)?Se[9&y(>K-fC))>Vfgm^C% ">YYOS_gyeby/*}W9% 0 /&7GA77KirQ?8/02<ISVTFRz:7. p\E83B[ovh[A# $;YXVj (-b; 1 $-#BbgTA<OjupiYH8(%#6Sv +~l`X[]fx~wY;&%'9OP^ue]WC)  0' "'%" /[vsbNNX``VH@>>@88<Tw'zxytpvtgM0 !):P]o`B1    ,+$ )- >_swfVIHH902AT]YH/1NzpnkaRC7/(  !2@SjqL8$!'& " 4xW l r`7:> :TT\ %!#"#!#A"T!4a2Nh  :    X Y ] P $<+ 3+fJxk M'sz9 x # ~JzLAoH]%\5sT  V9Pk .yT  E     7 Y X C a m p o Ewpz|Q`] iPm p9 QS"9C>{y3}^& !"a! ,@A5n2E[I #  Q x " < N f x   , %  )  HolZf`tm~ MjOh~i lG|Yy{~ h mzopDYWGL ]   q  - O m t I     1,&^q)2~N qy# o_93I>Ym+}L\-(O*ZIo\p n +   F ' I f r z P ! u  4 ' !Ir4p_ X ) D&T6X[N6m.2|%djSKJ$i/bA/m " c G K\  . ~  u jy 5 a ~ p H    B i y n H Y 1& w&%| y  2 t 7 b+:T'NH:iVbHd:epg/k % pT 6 ~ = ) \ w z z 6 J5zPF#  %Idw- R o Y  w h 'YR   ( X 0 ) 'TyY0T/b:SV%zs4V!Zt '}XnZ G {  : ,~{u~\A->ik6Al>5lo*0 I 5 S : =  E G s o=|+2}nH] -k # 2rr;9z w ) 7rQ %,1=HsN(nhA=AQZWF<@^*rU >n`= l X x  1 e  F j=PFo'?XS  } ' 48 * D l  sz[5`f^_zSDR 5DbzlUGEXnw&{;$X O=|w A  v  : } e \ :p$7- p  1 7 b j F 0 VWz_'wn)[B}7.I[_N<(%2BN`w^R.I4U@ 3 U }  ` Y [ 2  B r ' > Z +  < . , O l B V '  - ` i k_S"QS mA8 2==<(,Ww,YyrV>EhtP+heLXQT O 6 : n _ V U S 8  7 6 3B&n@KUxXQZbWBXJW}wI;  %_8+5y`  K G    W ] k Z 8 * > w a &  I  g "+uE??Ymb[[Z9";/Hs[RmQ>1' 7iqG ZE 9bl|xvqE$fA  t   w ^ bhQe-}OmqZNz\bu u%gkS<fo6VBF7$n*[:~weG ~zPV@rx tq+D Q X /kk W ]U! # >T*jdY j 1 5 {   < pR9Ne^N X-tZV!/6%R~D<hz9ZvjL!5+\:S )Ijf)? p(^3W lB#xr_EMq< I v bp#Yn9@v=*%tO T#~ ar{aICc/Ic_~s|\w-*)H 7 wAZOzs =~(`a{zyo8 + z il|.g)l`'t<)C2f,?LVa:?F'/]x 2(;h+[ # M HG Hxp "$-%'3(?)&)*#*C*j))'&j%#"" !!S!*! @SW [ uaX r Li~+J79Klan>;cx>_&  /;a #$6_M p!#$&*')+-i/023k41455r5u5~4321/.\-,,],,,++**8)'&%#c!;O 8 5HL?@G\aX",mTFk1 X yRY!$%'()*q,6-/1357;8:;[=>>?H?P?s>>3<;M987666L6A6T6E65_43210.-?+(&$" p_S-: P 'eM+UBGBV7Op2MjIl| M`-&d0?#  c_ n!$(>*-l/0123579;=?jABCC_D>E0F"G@H!HIIeIIIIGFhDCCBeB AAAAA?@q?>=<;:9N7S5]20{-+(&#!83  N l ?GH0AE[=fX y8#{n a-!%(,0 3F579;<<=?@CDFHeIKSLMNPQbRT'UUV VGVVVTSXQPPO}OQO,OO'NNLKJ[IGFE|D!B{@><963_/,*7'%1"" g  ^[):3?:?IT*@N: ` V"%),P0#4083;p>C@:731.U+(%!! U%W#,u7 D(Du$E CX{$(X,3/3p7K;|?C[FdI6K_MOQRT;UMVWY7Zv[]!^_a-b]ceEfhhiIiijGjihgfvee deeref)eedhcXa`p^]D[YWVHTS!PNcJFB?;8852.+M'"r% =~UL\<45Ro#E ~3!%*^.26y:F>^BkFfIMAPRUWmY9Z\]]^_`acNdf;]8 41---(;"jD  9B7RDFm,c U"'+0N48=A9EbIMxQT4WZF\^`b;cdaeefHg(hi:jbk|lmXmn'noxp?pppppqq0q:pproopoeop!pqdqr*rIr qqQponm keipgecau_]?ZWTQMIEB>[:62),&!AX dw^; -?>Bebc L fc#p(-26;C?FCNGJKOS=VGY6[^a:cedf fghhhi}jDk&l!mmno oIo|opq0qqqqsqkqr rGr2qqq*q2qmrrs4ssssss;rqqonmJkjAhOf$d5b9`][YVSBOwK;G#C(?;61*%C ],> %A',8?   !  : C p 0Un#(;-2^7=@AF=INQUYG\C^`cegghjiijk kQkkklqlmnro$op[ppqkrrssZsKs"ssLsssssps(s3sot tuCuuuutuXu tsrqponmlZji*ghecb`>^6[KX1TJPJL(HD@]:5.)# V\ ^E+6<{zj <y$j).27=8BGLPSWvZ]_acme6fghi i7ij0jjjjjkklUm'n"o$opq!qrsttqtstYt9t\tttvt !;K]1Jr!$%.)q.x3?8A=3BoHM`RUY\`c"e#fg9hiijiiiij%jDj=j*j#j joklGmynp qqrstuZuvuuu|u{uumu#ttZsssttatu>uOuttUssKrNq%onmllglkkj_ihqgfwewdb`^[XUR;MIC>71+%A q Nn$=$h$E###$&(+/49=BGLQVIZI]o`cfhi i iviiii$hhggg~gOg$fffghjl6mopqrtuvvdvvv@uuuuuNttDssFssIsessssJrr$qqponBlkIj3iRhhhshhhhhUhggGfeecb`_\VYzUQMHB$;5n/a)&": l ZM3#Y.H.w.G---/0;25:W>CH2LQV[A^breh jklllClkmjihhgAf}ee#dd6cccefhjlnp8qrstuuv4v&uuuuuuputgssVss rrrrFqppo}njmhljhgeeAeCee`efDfgh7hhh~hgff&ed'bC`\YUmQpLF"?V932+$l P5g99C9 88h89:=y@}DHM!QUZc^abe hj;lWm[nNn-mml ji0gfedAba`s_v^^l^^`GacehCjlnp$qrstu2ulu~uouuuuu,tsshrrr2qqonlji,gecb`_^_#_y`5`ac6dfgggggig$ff:e!ca^[XTCO;HC<64/(' [ E.v)?[DCD~D5CCCDEH"JNR~VzZ^b~ehjmo+prppp8oml#igedb}`^\[HYYcXYAY[\^`cfiRkmoq;stDuduuuvv*v)uuxtt"sTrqqpo)m~kthfCcaz_Y][XWWXY[>\r]_acemfgh1h9hwhqhtggf"d`a_\4X"RvLF@|91*"| `V]oNO&NNNDNNOQT"WWZ_]aldgjlvnTp[qLqqEqonl8if~caJ_]ZXEVTqRRVQR`RTU"W&Yc\_cxf}i*lnqsujvvvvvvv=uutSsEr;pon0ljGgd)`]ZX$UiSMPP.PQRTVXZ\_a9c>defgh hwhhhtgedea^Z;UOJCu<4,%NUu5 p hYKYYY|Y'XY*Y[]J_b0dgj~lnIpEqssUsPr3q]ormAifb_\YWTQOMKK]JKSKLMOQUY`]a~ehlEoru vvvwwvvv u;tssGrptnljRg5c_\XeTQN{LIHHJEKNPXRUcWZQ\_ a1c@dfmghi?jZjjihge,a]XShMF?<7*.'^ DJ lW?z`aaaa^``aZbceghikmo3pgqrsrrrYpo/lgiRe]ar]YVSAP5MJH=FE DjCD D*EEGJMQV[_d h:lpswEwRvvtutszr$omjgc_[VROKHUEC6BnB3CEGOIL}ODQT]VY4[^g`c&e fhRj$kFlkkjuiIfd_[CUiOIFA92 *"#I r>eghhihhEhh;hijl7moppqrsssrEq%nlhe<`\XiThPMIFDcB @a>=<<<=>@oBmFJ-O]TQYk^mcLh}lps3u^v?wBw}wwfwvuFsqol(h=dn_ZUPLHEB@<=<<> ?7AYCFSI6L$NQJSVY\_be[gj,l mn:nn'mkjWg+c[^YXSHLD<4,$$B v2k2lBllll(kklMlmmnpqGr sswssDr4on kgc_[VRNjJG=DIAr?4<; 9 766678m: ;?BHM"RX]chmptuwIwxZxwvvtrnjf/a\LVPKXFB?<;88'79I:]<5=@jCFHKxMPSW;Z^b e)hnjmknpp&onn4li7d`[UNG?M6.&r Wnop)p`pooo`oopq%rgsNstttrqmk(gac@^Z UPLHEA><0975v3S2131H1L12*3m48;AF?LfRY _ek%o2s)uswxfy'xxww'trnjMd_"XRL+E@;85492X123c46`8:C@DHMSX^icYgkPoKqssttst rrpnkhc\VNF+=5-%|;?qrsWsshs\srrCr\rst;tttsGqlhSb]{WQKFHA=6:7420.-,q+**J))f((c((c(*w,'0D4< CKRZbiAoswoxyyWyCx>whuAsnj\c]UbMFu?P930;,+p*7*X*]*+O, ,..00247:,=A1F KhQX]cKglIorstttsrpyo l-hc4]hV9OVG?7/v("rstt^t7t7ss:rsst t=ttsqnidP^XQKDE`?;)7%42f0/-,N+***x* )) (_''''()=,|07b>FFNV_Mfmrvxyoy yxw3usnjd]eUMFl?9+3G/,*)))*)*?*+^+, ,&-.J026B9>gCJ/QW^?cimLqAs8tuuu%t`rrp miCd^4XCQ8IA92+rNsIst-ttssrrs|ss1s,r9qPn9jpd^XQKD?9521/q.-g,++y++++}+*m)))O)4(((+#.L4:BJS2[c jp=uvxxy x'w^uOs]okep_ WjOHd@:40-,,++O+=+R+>+9+a+u+\+ *z*k*,-0s3K7838.m+Y(8&%&L&n''(u)p*+,-. ../..I-++*)?)*X-17=EqM0U^!eolpKtLv"wxQxxwAtrn|ic\FTMF,?`:65;425J68@9:3:8D630k-*(&&B& ')-2,8@ HPPsX#_eknrstssWrrQrqlpSomkgc_\9lmOno+op opppomifb\UOeH@92.*_'%$'#$$G%%&')*,5-d.=/3///.-r,*)U)B),/4:=AQHQYathmDqt0vwRx?wwutqplf`?XQK)D@;:89;_=L??h?@<:62/7+(&@%-$K%u&r)-3:BKMS[b2hlpqsrsWrqqqqqJ^F A?>2>?ACCB?<8X420>,V)[&\$#$$'*0x6>FOAWt^ejnprrrqqqqqqqpHnakig~i`j&k l|mnnnnomj0e+`ZkSLFE$=5/e*;'$h"!a! !S"3"$2%')w+,./0400S/.`-9,`+x++-/37>'DMU \ic]hmpt u>v9uuttErQpkyf``!Z!TOKGlECCJCEGF@EEEB?H:51]- )&%###%'-2:BKS:Zb\glo3qrerWqqrqqrrvrYrpnmkhhiklElmnn7n1khcH]WOH8@91+&$"! c !"#%'|)(*,a-/9/00b/.---I. .02T5:@VGNU\bglp%sSttu.t}ts!rq)o|kga\UW@FLS>Y>^dcgknqPrIrqq*onmljHgcO^YUeR>OgM@JHG)FFcED3A>;623."+!((&%$$$%N(++i18l@HPeX_fkor6ssssst"t0sssnrQpp%fKfbg7hjKk.km>mmJjfz_YPHA81}* %"l"%!!" "D"^""#v#$&'m()+w,../0/2...~/14 58c;$?cCIOU\Z_%cfjm=oqqponmlkig=c@^YUwROcMSJHEDD&CRA?H<9`5^1;-*($&$$X#$$(&h(.t4=LE M Ud\d irnqttt sttHt#sssrqqpf=f?g"hj`kyl8mnmj@f_XPHA81*}&###f#$$>$p$$%3%&+&( )*R+,-.A./...0258;>C2HMS&X=\`dJgAjMlnopooDn!m_lgkig}c_ZUQNLHEC@?><:852[.+)u'H%$j#"# "$&+1: AIR)YaxgmmpssssKsssjrsrrqpLeefh:j ktldn nBmj%fm_XPNH@81*'?$$$%%%&A&&&'''()*+,-././ ./#/148.:>kBSGQLQW*[t_6be_h jl2mnoNonmlkkcjhkeaz\WRNKQGD@"=:87&5o31/<,[)'&D%>$ #L""m"#A$x(.6>FOV^ejlors@sYrss-rr,rqqOp~oeeGf-gik9lXn)n1m|ie_YX+OG@W81U*'%_%%&&'/''((2(y() )*m+v,.,-.J./>/(/03h6:>;BJFL(QWR\__bdgjKQW]boeAghk4ln=noo(o5nnnvmllkjh^e]`h[2U0O~J D?:[51..m,+*R)(i&%c$d##L""+!!f !3!%)18A"IQ YR`h0lpqaqpqqcpp"ooooOoe demfhjl nmlhdT]V)ME=5.)H'%&%&?'a'(n))))*$***+,,,-p.$.a..0159?CILOYU\bgkiklncop0pBppp1ooo}on8mlki,f$a5\UPJDv? 904/8,)`(Q'z'%$##""O!!V / #()/6>FNW^f{kopbpoppeoonnnnne/deufhjl6njn5lhc\UFLD<4-(7&R$%B%'1'()k**M*k*+-+1+a,$,,,-I----/w1}5:k@NEKRWY~`fUkmAo&opqDqtqEq{q\pppp&po}omlMipfaa\VPlJ#D*>q8W3-*j'V&% $#""!!R!9 d r"l&t-4=DLUH]e!jqnoono"omnnmn n;nndsd$efJhgjlTnntlgb[T:KCk;\2,&%-#$#$&&'()F)***++I+,,,n,-C--3-7/1W6:AFLT[AbkglPnipHpqqqqqqqqppqq\qpomejRgAb^XLRZLF%@a:O4/+('&T$$0#"!, +z`eI!%,3mnntcsc\dnehj]laonlgaZS+JB7:1*%$"v"#$%g&$'#(() )*R**+{+++,/,,_,,/16;B)GNaU\chmQo@pqqqqqqqqqrrrrr`poPl;i4d`kZTNHB<71i- (&$#"! U  n3! !%I,U3j;CKT3[d iEmn.n.mmTmll klRlmn$``bcd-fiknnRle`YKQH@8/~(#"!!|!"#X$%%&'l(T))**+K+a+K+++,F,/28 =`CIPWF^%diRmoKpppqqZqqqqrs@st]_b'e(hZjn&mk dx^WZOG>6-'"I! !0!"#$%&'()m*O****+6++,0#39{>E>KtR'YQ_fjSnWoqppppq82.|*(J%#!!X R 5 % E & "&-4sqrs#sthtuu`tsxqonolkdhfa\V{PLIC)=7M2N,(%$#."_!!_ f #~'/6>:FOW9^Xf3k,nno;n9mljXhzghhiCi8=DLoTm[a)g`hgb\TMlE#<4,&k S !]"$&) *,1-.////f.[--/27=[DwKRZ`cfjnpqrrrCqppppqMqrs7stuhuuu]t.rq"pnmuk'hd`EZRT?MG@:5+/*'&#$[#m""+!\ N #p'/T6E>G+OW^fko,o)onml"i;ffffafgP1]7D?GPX_ehhpcR^JVO\G7>6.(" s- "$&&(6*O,-_/0400008/9//<14:@ FMU2\mbyh\ko!pCqqr7qqYpppqqrrsztGujv2vv9uusrSq7onlj_fb]9W[PJWD=71`,)8'{%~$u#"! ! j#T'/P6D>GSPX'_(g)l oRoonm^jgcbkbeaab7*(09C+LV\dghd_X Q I@80*g$!. i 5 "#%'|)+-_.0O1i2"110//0i3f6rGKPXJ_SglldosoonzliCJcQqX_ejmpq~r]r4r+qqbqpqqq|r rstuvwHwvutarq}p[o8m{khe`[UOIB;e5;0,D)'%$n#q!  5 #'s/ 6 >qGBPXP_hglcoUnosmk;fa\YWUU(T&0;aFAPY/b*fj3gscf[TMEE<4.c'@#p!w"d"6#$%')+-/;0S12332101L2/59?|E KR~Y`fkn1pqGr#rrqqKq q5qqr rzsG{P9X_gloPno lic^XT8?3i-*:'h&N$#"! #(@/6?XGPX_glGnmnk*f_YqS^MIEDB8*i5@8KUR_Ke=kj=go_YRRJ+A92+ &;##[#3$U%&(y*,./01273*3r3 2,11|26:@FVLSY`fkknp pRppqppppqr rhrsWt$tuuuuu$tYsrpqFpomljhgd/_YRKD>9 3-)';&h% $<#!"? !$z(075?HPqX_gknpmmild \ TMGA= :8+'27=GHS]^cjjhb\`TLDt}8C2,):&&#%$=#I"!U!"&%*1$8A@HPY7`(gk,mkkfl`W*O8G?94"1Y.j%?/q:pFP[ubikj+c^WOVF>7+/d* %H##T$%&O')+-1./0|01[1j1S0/0 149>DJQqX^d0iqlo6oppApooopqLqr&rsstJttttttdsrqp^onmk.hc^W1PJC=7+1}+(&e%$$&#H"!"D#H':+2v9B$JQZ`gjljicT[R9IAs81+'$g>",7C!NX`5gij.d`XQIjA!9i1,f'$#r$c$%'0(*,--x.M/;/////q../26'%$##z"""$v&E*/7>FNKU6]bghif8bEZ&Q?F=4*"L7m SV&1247W0,'%$"### "#4#%( ,2j:AI}PWN^cggEgOb]pTLJ@7..$$< l#|-8CNaV_>c\gOfc]XQJB;5/,*&r$#$%W&j'()***+ **>))***,.27T=hCJ PVt\;`ehklmmill`lelm mumnopqrsrrrqapKo4n#mlgkgtb\xVxPJ C<'57.*l&x$#""D"|"~#y$i').5IrRpZ_deEdC_[[PU?NG8?9o3.&)&z$$$%&'(q() ))G)8(( '((*,;/368>RDK)Q1W&\0a:dh`jEllyll4a*! Y ; %f/9{DaMV\ybde?au^7XRKD2=61@+(%($$%{%&[''i'z'Q'w't'$&&5&g&(y),/4 8?)EgKR-W]naehZjkrkkkl2lKllmZn nppqbqLq>pp:ojnmljh>c^X_RL'E.=60*'+#"!!!6!"$&*@.50]H]QXu_beB81-9(/%$*$$U$R$C$A$K$3#####$-$U%%'),/438>DJQ6W\aegBi[jgklflmm6mmnop3pbooon-lk)ig+d)`\4WPJD=71x,'$"v! !!S"$|'*~/6;>=ELT?Z4`_cdb`ZSI?*4*"7 (K? w6'1HPY_e5f6fb^YNSyLE?V9Y41.*Q&$##q"!!!|!H!?!P!!!!]! !"% '<*`-p16v:k63 /,+((%#"""$&)-17=ESL R-X^ bd&db_YQ F;1'ZZ  5{S x",7B{KT[Eb\e:fdab\zWRKE*?D:.40+)&&$$#-""""""L!!s!% !*!#x%S(h+R/41:#@kFLRW[s`cfh9iijjWigebt_~[XITDP\LuHD@<852q/,*'&($$$&5'*-2Q7j>DKQWP]aadcxc^ZRI>T4$* ] (7EMmC+&:1TkE:KQW\acdb`[ULA6,$ |f  [*5@3IQY_yded`^=ZVQKEA=F85A1.,+c)('=&&e&z&,%w$##G##%&&)+/q38>DJP5UZ+^b|egohhhgOeYa^[Z9VhRMhHC?hHfsd`\WS?NID@<98640200D.-,, ,+,-/1<4?7t<^AGMJRgW\ace b`\EWOF ;0'  LT[da"Ch(2=^<;:9888"77t7767U889=; \)XU`QNLJQH}FEPD'CoBBA0@@????@ACEYGILPMTW[^Na(dOfijk jjHh*eav]YJU5QNMZIFLCA@d?>`==><=d=?&@9ACLEH~L"OShVZ]`ccb_\VPHR>4)*#&" 8n#arQ"Oj /]$k-7AZIyOVG[M`cd`cCbai`_\YVT1QPcNMsLK.JJIzHHQGGGGHJLMOR TWhZq]^_bldfhj[kkkk(i%fb_D[bWTPMJcHSFEDDDD+DOEEGHLJKN"PSVZ]K`c*dRdb`\X&QWIA>4|*"(FzH_&kZA  $.r8F@GMRY\^:bbcbb>aae_]6ZXW+UTS?R/QQhQ/PPvOOOOPQSUWY\^f`bdf~giVjwkllltl;jheEb^[nX^U?RPNMgMLL~LQLLMN9O:PRQSxUuWY\^uaCcd{c~a^E[_VaQ!H?4s*#v j`]~xn..>qu K$.u7?F:KrQX"^wb%dldUV8VWXtYZ\`^.`Abvce}ed$a4^ZeVPH>4E*"+0PA[lq^t[}`"# $.!6=CxI7O#Vs\]`bpcQcddeWdcbao`__g^^^_6___R_ ^^_{`[acKdfh i~jkl`lmmYmmn'nnnmljkheca^]\[[H[[\c\\] ]3]^]^L__z`Qacddd4a^ZWS{NGA>3*"KJ bq's6pCFed J$7-'58;AG)NT[o_abbcd?efg.g ff@eee:e]efQfgfffg g{hQi)jjkl7l|llll^l4lHlolmqmnpn+mljwhfevd%cbccaddde.eddd>d'd,dodeeeeYc/`]!YURLBEu<@2})0!7 &d,{br&a}E ^+ J x#i+3 9N>wD&J QV[3]&^_`b@de|foffffgDghii^iivilioiijj$j;iihhDgffeeefghijSjii1h'g4fff1fTfghChhhh(gffIee:ddd+cb4_\XTQMIA90p' j& x$6,}'O4a}?o _!/(/5;<@kFxLUR1V0YMZ\]{_yacefgVgghliiviijjx6F-&>  %O#<|?Fmh,0/P RM%,2 6;a@$EJObRSTV:X[[ ]_`abbc-ctcwcycwcccccvbbS`_d]"ZXV`USST UIVX[ ] ^_`aamabcdze(efTff5edcbb`_^[XURNKHD@=92I*#v P ;t $VVJX2 R "J(d-}15:P>DHKALN2OQTgWYZ[]]p]]7\\$[[[UZZYY'WVSQINLK*IJJFKMVORT7V8WXY$YZ[]^_`!`aTa`_^]`\#Z=X5UbR\OLIFiC?:S4`-k& D8 4htd :l]naSJ_wf)w < $)?,/37L;?B?DEF}HsJM#OWPRS>SSR>F>@ACF.H/IK(L)LMNP2QRTGUVWWlW UTRQ/NLHEC7A><84X.V(")%+P  ~6zms]UEFRpbwn6^ o L'#l&x(+/V36|9Z;D=>@BACEyGIHaI@IHGuFEDCBAl@Q><:J753]201&1s2469;!<>Y?@B CEZG5IJLMNNEMLJfHEB@F=;x9Z7v41,'":y B2T6$vC~fkLOGFEK?,p# @ a"W$T&*--03146689\:<=!=N=D<;:987r6 420.+)E'%$$%&_'), .#0124f679<>9@ABCpBA?=;p9 6421t/-i)%! hU _Rr2oNRAaAD@OVO8. WH w D {-q!9$p'*",)-5.B./01A1K18003/d.-_,I*)'%#Q b'q "$&G')+V-g/135677w65p31/-,*('&$!# \  XtTuR7Dn8;=WcV3"408 Y ^ W} |";#%/%&D&`&m& %% $$#P"_!x _^TL1?Z6*/Tl5$6!#l%]'()*+3+K*i)`'&s%#"!`g*, h+Q2 fw>yE-4\6EELF8$"4D  "  j k\?`<)FA2Lbk}s0 D { y  g1_.q>3[ Z ~ z<{CAbFeE])1Zrvw*CE9$= \+[ S MLo}l u  !10];YF  WWh\N 7x jdNg DW-S119LYZW $54" &EF(E<$T d e  g 1_Y@!/a<H`  4 ~ 0  =iap)9[f];=x7.^CA:?NSF+-! S}{E'7Vhd1s{`b05v .HGemL$cF$QaXI@h  |i_H<HM7+2" ah Pt +G^u1S {}|a;n%]vINQ>KUiJ@475 #)S`G.Xxsyn@'-PdrYJSe~D5P49`s}R4 '8=( (""-1%>{ys`VSEOti; 4944#yJ3@Df '<-YwWC<UnzG   #BB  )\Z2!K_U;PJkygaML^{lI38LTSPD7)*&EO>-#5Zy|tdRZtX-  ( )! HieO3/:GI3 *6.qXp=$}oYXdzjD**>JNMED;2-,(0Da{o]` zU/ #  &/.I+*]tL+)702JdqcE+4>FR7yu|zfA'%;N^hhogX3 *IXZZ_kp`z'(~Y8#  ( "7+ CH:4:Kc}~bCEN>07HSYaaMV ?=0zl[@35Kdv{ncM8 !&*JXao,+a>$  ( &-% $G`j[D9Lee]gfM0$*(9[$-yj]ONTf|hI) '0("-DQg #$vaabH(  '! !&-/)1VsuaIKWVT\\K<@I>;Fc{  ,~uoopu~|qX;$ !!/H_ygD.   &'# )*$(.53$4Wpr`RHACGLFG\kaM<DZ"~}zrgXH=>:%  $3NojJ=%!(    /t[j_J) C4B`@!~""#("J!.Q@ 3    [ \ e L *>Xx>5xQ P&v|;    "#zHQCsM@ij9Q;{iz e<'  >   % ' # 1 V V  > ] o u t Kt=XFSjx? OR 188x|)aHHGs i Rhmt}Z    Q x % D U f  t   * '  + !6zRNsJy LgLh mkDvPwcLLfhHI)y_ ] 3   o  / J e q E    ,t`E}H,|yDn~y o]5>^[ob4k" o ym@usS<W [   ? { ) J a j { L  t  9 ' c1bJW v  ?}#W;VSK9n,4}-fjVQL$izS!4` i O IW  * }   Vz  6 e  m F  # E e  } v N y 8? _ ; / 2 h2@O +RL=hW[HxWUdD'S ! L 8 ` { ~ : S /}SF! "Lhw4  L } p ` ' ( < Y  ^ : q + & "SvZ 6Y1i4SQpe2^RWx_`.#%I4 I 0 "|pqjR>P'fm6>m=Fgz6F 0 * { Y  9   3 Y ; j l>33 wq>R$g} ~ * ;w5o H lN6@DQ[]"fg?9:K[]I89W} #od9mh(: r z w u + d ? f;MEu-@xSQ  ] >:O{ / @{biN(Quxqt`7J3@Zpy~oVC>Ph&A R#?+u G v  = g  U 8t-7+ t  | 1 = '  z Z Ci!~ QuA{^-o*(=KNA6)-?IWlgR~=5s C._a  = X {  ^ V Y 2  B s + > ` -  / ! ! A [ } 8 V *  K t df!]4&\}>)&X@ 0;5-!Ls)[_<<_x+TLT<FZ1i J 7 < q b Y U R  >  , 0 4@$y*=3F~|aUXiiTquo<3y  Tr,.xa  I E    Y ` p a ; * @ } b $ C x c %|&|K!J6pOfvKCMGz /"T@L kJ820 3cm; X;LsqyoP'kB s  } f jfPc+|Kpw_UpV_{YUezSk yA\s  !`hA xhU ~%wBeburkj&~H L _ 4oqyO_^*+"AI+Dy{? f ) t Y  K z^NclVqPkv!/ "+Uu11[m1~_qkL0(O8Q!1 Opo(;n#=,2\^5%3 )  L DkxgO Xa_ D _ #u4&B_`Z'HgH Rzq^r{`GCgy$Cfbwp|]{:N Z 1 wjR `Aj}^]5!eL6  _ 7 Mnqej<e%o?6 O,a*BOXd@??#~ ] #9';alni V " :L<+Z*.0 "$& 'Y(n())))f('~&/$#""!!i!B!% $is$A.z i<~&z*>&=,ln$I :@LpfsC#>gxB `+3B5 }]` bZ0bs N!"E#v%&(*,.02v3w4E4~444453S10/(--7,,N,,,3,+*)('&($#;!k}w 2  W%\D9Wg`*3s XHj'|7 |HI)!$&E''(T()*+-q.02a4579j;<=~>.>R>>>>=J;:s977566c636>6e6W65`43w21j0e.-B+,)'%b#": t]g #.nJG4G 7Mn4OjK p9}k2*j&ONvP\ H D& #&*c-2/1/2F23346p79^:=<<:9}753K1@/(,*(&$"U$*F x " iSBE ({>QU7fYu| Sh x~j Gg #^&*t.;157: ;<=>0?@CACD\EFH IPJLMOQS T"TU URUUUIT RQXP\OOyO^OGOCOWONwMKLJI@H FEDtBA(?@=;Q852/-+D(%j!;w +yR]':4 H ,EUH~ k'#g&*-15945Wn*d ] $q(,04r7;}?CGKNQQ SVY$Z\]C]^J_ _`aIb/cZdefgij\klullmm"mmm[lkk4jjjk0kl+llllfkjii8gfNdb`X^'\j[6ZXVeSPMJ FMB=96C27-(k"%Y_ : 4<;\RMl(k0w z R`pP %*D.3$7>;6>BFJNRUXJ[]`;bqce!efOfgehhibj"jklm0mnoYp:ppppmpippppoooLo~op^pqr$rlrr~r"q;p_o#ml_jhfdca`E^q\{YWTQ LHC?;x7M2',5& ("o u{^4  0Fy|" g: %*/49=AEsI-MPTVY\]_PadAegfhViLijrjkllmEmnVno5o\oppqbqqqq=q,q~qqqq^qpq!q{rrs>sst8tss*rqpo9mlpji'gfdobab_^T\YTU]Q2LH7C@;6]0*%G k/ (*J# /7C Iu$)/4:f?DHL=P(SW\Z7\^acMegi ikklmnn}no=oop_pqqQqCqHqr*rs!s@srrs4ssssVs rs,syttu(uuvuuu tkstrsqIp-o mlkjiIgfeId7bv`c]YUsQKLI D@ :4/ )$ gM ,6BJwSY3 %$)j.395?0DJ3NeR`UYt\{_!`b:cue*fh3iijjklm1mnnZnno^opkq qnqqqzqrsGstt ssttttttEsssstttuhuuutss>r,qonmllgl kjihgxfeEcai_[XTQMI'D?:4+.Z),#(G9 d A $<UTx+Ow"%).~358=CIOWTKX\_)bdf~fgh-iij]jxjjk klWlmhmnnanopqrorrrs^t$tupuuuu|uv*N,0I429=BGM{S$W\D_cehijtj'j4j'j;>CH LRW2\+`8dfikmnn(mumlokjj;ii/hh4ggFgKggghijl:moRqr4rrstRuuv>vivkvhvw vvnuttAssRsrrrr#qlpGo3mlkxihTfee=edef$fgh^hiiiiPhgfedb`]ZVRMwGA:4O- %br -/`:u9::::;_<=?BEI0MSQUZ{^behk:mqnuo]o%nmlkj]ihg8ftedcbbabNccdf gijmnopkqLrFs\tTu:uv v4vvvvQutt#swrrKqq)pon+l?jbhfe#cAa_^^_Z_ab cfdfghiUiWi2hh"ggfeb`f\YUPJD>T70[(!+ v8MqE5EEEFFGHJLPS*VZ^bdehkmoepqq[pon.lujeh_fecbaL_^]O\\]^_`bUUVWXYlZ\^_adfhk mpRrtuvwwwwvv0u0t4 Hb/c)ccccddoe;eg%hvj/lmnoq+rrr/qpKnkhjdE`q\YVoSPDMLJIHGGGH%HI}IKLPS:VZl^aej4mq sHuwvwx xwFvuts!qoClhea]YVUQ&M,J GE6CBBUCE^GJLO QTVYP\^amd)fhjul_m{nhn2mlki6fb]6WQoJCI;#3G+#y|* R#hijIjjjjk(kklmnp qqqrrrqpn\lhRdJ_[WTPLIG#ECBA8@K?@.@AAC1DH KJOeSQW\+`ej\n{qqtyv;wx7xgww,vus1q^nSjfb^8Y\TLO[K!GDA@?~=]<E<;999Y9:;<==@CGL PU[ta!fgkfoCs?uwxtxxAwvusqGmiod__ZUOaIE@>;:8,7w728i9;=b?BEGJM>P/SIW[(_Tc5f|il[npZqqrqRp4omWjDeas\"VOH(?7'.& E 4nopWpq$qkqqqqrMsHtEttttEsr,p>mI;:<8w64323&34A4f5M69p[964&31k002<357%9,;>oA`DlG$J M(Q*UZ_|cgjnp4rQrs;rr~q,okth3c_sYNRJLA9R0)(!~2O ppqRqrr|rrrrstuUuuguUtOs$pmif8a]5X'SNeIFBH?.;9F65_32?0///J/}//0h1o36V:q>DK&R&Y_fkaqtxyyy?y xw2trmHhaX[TTMhF?941Y.-,x,d,-/%02Q458T:=@CFUJDNTWY^cEGLTL[bioswxyy4y wwtrmg`YRuJC5-%_Aqrssstrtt}t]tuuuutt^rLokefa\_VQKiE@6231T/R-k,U+c**t*-))))x)Q)*>+,/3P9@GOW^_.f2mmrivx82.+D*(((W(x(()*)w)))*,.048i=CJLQ3W^Kci8m,prmsstsrpon'kgc\W P{IeA92,'qr}s-st*tttt[tu ut8sqplh{b]VPIC>9M5270\.-,%+)))**[*k*Z*,* ***+)))Q*,2@8@GP`X`hntCvxtx#x.wv3t qmic^$W?PHA8:41*-,Z*** ))))))s)(f(_(*f,/D27h830-,++*B))))p*,******+%+**))+0v5=EMMU^fqlruxxxzw}vtirn>jae_Y4RKJC=*73./.8,,d+++M+**)t('J&&&(*-S16'831.l+7'&$$$N$$%}&A'_(})*+j,O,-s-I,+*)o''($+j/S5'X$a"!!!"S"#$&m')@*+--.7-,+y*5)'g'&)q,28@#GPTY`hmtqsunuvvuzsqnkWf`"XQKD\?;`98089::::8g51.2+(?&%$$&l'+_/6f=gEMU]9cvinqrsslrq|qCq%pooml6ifdUb jkrlm.n nfnxooIonJkgnc^)X!Q JC;4.+E'L$"T!9 1 9 : !n"$ %')@*,d-.v..Z-f+*)((&'* ,17 >$E[MV]eTjo3qustudu"tsrpMmihdC]VPcIEA@>=<==>>f=;8r4/,>('%/$$Z%v&!),39}AIQY[`g!kpqsWs4rqvq?q5pp+onmkigeioijklm:m]n/nqnlje `oZ>SL7El>6/*'$V"m  }!#%')e+Z,./L//I.a-,+s**r*S,.27O>DLT\cIhmgp rsttL; 6S1-d)'%|$$'$$')/5=EnMUZ\rdinopyrs rqqbqcq@pponmljiqhahiljklDlm~mmkhc(]VOHkAY:o2,'%{"! k"  "N$&4()+-/4/00//n.w---.3.09269:ALGNU\ch lolr9s0ss9rrqpVoalqhb\VoPLIEFDbCB>BRBB*A?<7s2."*e(@&%O$$$&c(-2:UAIQX`glaor.ss?r^r'r r qqUponmCkkgghqijkaklmmj}gKa\[VSLzD=6.)C$#d!v ([ o!I"$&(*\,r.5/01#00/R/"/0_1z2&359>.DVJAPV\bglnqrsrIqponmkhRb\VQNJHFIDCwCQCkCBf?=83/+-(&%%%$$%'+0b7K>}FN$U]djnqsgt6ssxsBs[s-rqqp4nmmgRgeh iNjk+klmmjPf`Z8RfJCZ;4-6($E#.!!! !"$%')Z+-.0B01e10J/0 1S24H5V7@9=BJHMSX^ cxgknUpqrqpon|mlifa[UP,LIGEUCB!AAA@>;73W.+F)'&%% $%&*s.54;UCrJRZb#hlqAsitttt\ttbsrqq*onn!gggi'jkDkm*mmjf`YQJ Bo:3,,'$#"""""_"}"#$B%&(*6+-/\0111^00302s4(6+79<4@wE JOTY^RcgjmVp qTrqKpoml~kthe`ZTuNKHFMCA@S????<:62.+ (&& $$o#$%(+1i7@ GOqW_Uf@k.p]s!u=uPuvuuuu\tskrr pooFffgi*jkldmnXn*jg^`YQJ9B:3,(S%6$$v$$$$$% %&#'*(4)+(,./01Q1110136 8k:#`ZTNmIFNDAE?,=@A&DIKNOS W1Z{]a4dhNkWmdopqtq7ponmljAgvbh\VOJbEB?<:"877\6531W.+('%$##!"r""$&+!08@~HPX`NflpysvstLstttrrqr q6ploeefhjlmnon}jg#`YrQ!IjA93Y,)t&&&'''((_(t()D**+n,.J/x0h12J232359=:7h513210/.+)'W%$$4#R""%"5" #J$`(-5=.EJMaU9]*cjnqrorrqspp$oeefh6jGkm5oonMjsf~_XP'H\@82c,\)n'"']'((()g)))*n++q,--./0123*33`47<;y?cCGFKPhU\`deghiDkn]pFFAo<84{1/M.:-,b+*):'x%$##z"")!!!>!"w&*29AIQY`hlpEq qjqqraqppppMp oeefh jkm4onmiei^W*NF?160*(&w&'+(+())**#*F*+W+,Y-//001C2A233%47:5U1c-{*('&%$j#4"9!!P! `"&-4=/E0M3Un\d]iKmgn@nrmnZnnn!n4no'op.ddfgWi[kmNonlg^b=ZS?JBR:T1+4&$g""#@$@$%&'k'([))*'*+,- -f.3//a0026b;@FKRY_fk:np^qrscst:tPttgt(sssMrqpn^kgc^Y/S"MG\A=78C3/|,>)N'&\%y$"!!Z hZ "2&- 4-mnTVZ]aehl~kha$ZRJB@91("gy707- Y!"#%&&'()?)z)q))* +-g175>D0JlPW1^ ci7l`opqmqqqvqwqrs snsysst"tmtsspnkhea]yXSLF^@:y40,l)s&B$b""!! ~ 8 7  #E' .4=E=M|U]digmhnnHmImcmLlckklmmnfNfPU@Y^cg kEGKRNX_Jdilnopqqpppqsrrrrrs&sKsnrrpMnbki{fdT`\WnQyJDc>i8l3j.*'>%#V"!  R { #,'$.;5=fEN(Vw]elj_n_ooCn:n(ml|kklKlmmGKP(U[a)eijg`ZER5J6A9;12(t"VZ4~ #g "$%x&(2)L*$*`***))+-28f?FTM SY`leqjlnoi&gaX[xSyKC4:2*##-  S!#%K&()*+c++++*+)-Y/4:@AHGNU[af+j2l1nnoooqo no6oZopqHqqrrfrrrsqoJmNkjiafck]XQ;JDV=82@-(&.$0#"a!! U  2 "'E.5>`G'OXr_glpvpq oo=mkjijWjFjwj7GPYY`hmqfq{qpomjhhhhBhVh0>5=F5O W!]Mdvg gc^VROF>6~.4'!a=!@"$7%')'*,B-v.)..--K-.V154`9?ELiS%Y_edhDklmHQ)Y`i%n4qqrpolHheddccc(.7AJSZbfhd_WQI@80*E#!.O "$%'w)'*+-.//b/.-./n26;AGNrUS\,afilKmmmn#n mmmmnRo&pq?rSsHtPtuYu#u trqonmkid3^XQK;D>e7\1e+(&& $##<"!H Jv"'H.6>HQ@Ya iIn_qqrponjjfeb``\^^^")2GPYg`hmqpq>o4ligb^o[eYWVV*$.8CMVO_adVhfcX\ UNXFU>6>/(m$J!!!H!"$k&')+,_-.011<0//.01G48>*CIPW^diykmnhonnmmmmnnjo4p q4rstu,uuu@t rqonOm-k2i.e`2YTMG@93.X+C('?%$#"! "' .5>GPX`$hDm!pJopCmj:dx^YUSSP7ONgz!x+y5@K'T<]cPhge!^1XtQI5@902V*%""s!"Z"$&"')+,p-./01N00:/015m9@>CJDPW^dikmn,nnnmm~momnq8rtsttuuVtsrq#onKmk/i_e`ZTNHAh:4/k,('o%%$&#E" !5  D Z#'/ 6Z? GPqX_gl;o2n^nkg`>YTLOKpGpED(h2=HjR[b5h|hf`F[SL,C<;53-S'##"6"#e$&P(7)+,-./0181 0z/02+69?mDJQW^dXil nn1nnnTmm\mFminnoapq rLsstPtuEu5tss&qpqnmkjfYa[UO,HXA;%50E,)#'&%|$#"! !&$(/7?HPX_g^knUmImTid.\OUMNH{C><:_& 0:EOY`ghgb ]YVtO!F??70%*d%{#"#M#r$%')9*|+,-./00///1[599/>CIP/V]Cbh6k8mmnnOn mmlm`mtmnoPp prs(st^tutt7sr}po2nl[jfb[UpNGA5; 50%,#('Y&%$$$#2"r!B!"&*18AVIQY`lgZjmJkk=f`GWOHAO;53m1O#-8CBMW_1fhhc_YR IB:2,'&$"#m#X$G%',()+ ,--.~.//.r/ 0_47=tBHOU\:ag2jrm0mnnnSmmmnno*opqbr:rsttttt2srqojnjljfb7[UMG,A ;5/+(g'O&!%%$\#k"!"$P(-3;CeK_S[aPgjGlXjkicf\RJ\B:35,)'jJ!|*5p@KCU]egie a[TLD=5/)T%#A#Q##$&('g()*y+,4,,-->,-r.v15D:?ELCRY_6dh#kplnXnxnhmmn!nanop8pqnr rs?stitt{ssqpnml1j'ea(ZoSLlF@L::4.*''%%j$$H#e#"$H&n+)/6>F_NU3\bhgiJjhe{^VLD,;2+-$R!  2(t2=HS#Zc,fif c\VO`Gs?8F2$+Q&#q""#s$%#&F'U(()*f***+*+,/42l7DKXQWl]aaehklm~mlllm{nnoopqrs;sssorvqpvo mBkig{b]VOIC?=7Q1,4)-&&+%$$ ##z$"%(+085=DLVSYm_cff$fa\SJ@7u.$w! ="-7BPLUe]b(ffeA`[TMF1>8a1d+&$"#-# #$7$%W%%&7&}&}&-&&='=(*8,X0F4:u@|GMYS+X]bmeipk@llllmmlmn\noZp0q+r rs\s2rqponAlki9fvat[UNH[Bp<5/*(N%%6$9##v##$&P)->28@H O;VO[adVf5drc~^jWN D:14(.Ir~ 1  6)h3=HQY_deea]WQJzCM<^5/)&R###!#U#$$R$h$p$y$$$$X$M%(&/(:)-05;iAH NSY ^;bHfJhk kllmOmmnbno8opqsqrxr@qponjm>kjmgd`^YlSMF@:_3.<)'0$$#I#J"#d#%'+/6':4+&"`-7 m %Q.9MDM~V[be*fqcM`YZUNG@O93-(%>$R#M#H""##"""# """#Y$J&,'*[- 1f6&/HQ,W_`cedRbL]fY%SLZD>(71f,o( &$S#""i""!!!~!|!!!"6"$~%(!*7-1w6"ELTZ`cf6dQb]XKOpE:1V(:w Ki= rx#-8-BL.S\ `ete`dS_\WPQ(IB<5506*'%$'""!@ q  ; !!!"#%'L*G-O16_<)AHONUZ_dfikRlmnfnnnoo[oooonlkigd/a\XSXNEHBcFNT[`ef]fNb^SVNYC9#/%6g` <, !+5@QISY`d+fdbs^eZdTUMFz@&:q4I/)&$;# !f hJkv 6 !x"$'*?-F1a5;5A)GNAT"Y^3b|ehjlfmmn ninCnml-jJh=eeb_d[XKTQ LGfB=84]/,=(!%<"! ! "$9'R).4<5CK?R5XG_Rcg:fYep`h[URH=3$)lt RT1 p$.9DMT\aeUeda#^>Y!SGLgF1@N:b4.*j&$"! 8~W ! ! "$'*.-16;B@HNTKY]a0dgjk9l\lllbkj hfcF_\TXUDQN~JEA<840-*)&e$1"x"!=!"$&*-3h9AHOV([adfdb\VTLuBV7u-?$U L4u,NK A{4(Y3>/HJPY#^dfbgdXb>]YRL^E@:48.)&$N#! I:: # !$t&*9-i16:Y63_0,)'Q$#C!!!"$N'/)-28j?G+MSZx_hd;efIc ` Cg 4"2,M7rAKSZaeZgf)d`]uX R7KE@t:5?/+(O&$#""!!!e!A!-  / !t#%(+0@4:@GMMPRX\a[dhijjej+h|fc`\XTGPJLbHRDT@<841/},*(}&%r$#$Q$&(+.q28">ELRX.^addDc_[gS+I>4e*!T -E\p %k0|;ENV+^icgggca#\XQKE@;51f-:*('^%$##;"""K! I !A#+%(*.3`9&?!ElKePVm[;`+cg;hii,hfco_[WRN8IEE@<851/,+N)(''&j&y&'(*,0,38>ELQX'\ace ba[\*V*LyB7-+$Z t8 g])f41>HOP,X^dfgUdb_\RWFQKFBG=~941_.-b+*2('&&}&$%$##i$:%-'(+z.15;lAFLmQV[`\cg6hihgdap\XT&OTJKEK@;8&42s/-++$*e*I***r*+5+-/#1~3{6:@FaLUQV\`Ycnc3b_[\VNkC9/&:$D}br|s "Q,7AJ]RYaXe|hfe,b(`\WR]MHHD=@K;8n5m310S.-++**G)U((\)"*$+-/15U9>C1HMRhWg[`dgrhihg^d`^[RVQ}L>FA=85_20.-a,f,o,l,-.f/00_13Y57:Z>eBHgMvR~W\daPcodjb"`\%WOFd;m1g([| eSZk9!+9%//9C4KRZ`eeeeca_\X;SNJG~C@=};f98f65932211F001Y2\457m9@.:@754Y22112W3;4506L78:=c;::99 889s:l;=U?@BEyI#M Q>U X\`Jd9g?j,k,kjhheta~\>WHR#LH3Cp?<[:b876667579A:;=I>@3BFDGKNROUY]VacdbV`[|WPH8=3*"$ K T\#+|ELu " )>3R>]===>?s@BrDELFH4J_LORUX Z^`cocXbB^m[\VP_G>S4*#;M b/_i#LLqj m; *4=pE^KS:Y`_bdyccbaa`_\lYVTS\QPO4MLLaKK&JgJ IJhKJ4&*"=<*SG`&has P!S*4l.3*"py wr&anj(;~$0 AoM!*3<BHOV2\`-bbc:cdddcb>`_^]L\)[g[1ZZZpZYZZ\]3^`&acezgFhj/kHlkmen~o>oopoUnljgd{aA^,[wXVTSSS]ST:TVWyYZ[]J^q_`bccdevfecw`H]kYPUOG=3I)!iq2SDZj n|XjP%sA N6!.*A3N:@FLT Y^m`-aMaibceexe.dcOba``~`k`Z`l`l`n`F`x`abcdfgShijkllm1mnXnnnnnimMkig;db/` ^\ZZhZZyZ[\u]l^p_`abxccddeffedar^YVRwMFY=2)&!\ Un$t1jz;5Dd; <V v)2 91?SDKnQX]\_V_`acefgNgvffkf efJffgYgggh hzhi'iij:jjjjjjkkKkkl3llmfMc`\YTQKOD;p1(\ iW<&z^o#_w9AZQM l :(07" ? \V0(y J)&B  +Hs&-38=5BHNYR TUWOYR[^acvdevfBfghghxhi1iRiiiihug:ed2bx`^][['ZZ[6\E]v_ `b\cde*eiefJfggghChi=iiRhhQgfffedcau_[XATyQ"M=IqC=X5?,%G)fYu9w5?iaY#^ L$*q/37BEGIuK8MPKSU;WFXfYcYZZZYYkYXXZWV1TRVP)MKuINGEDDETFHJMPORSUVWXZ#[=\)\]F]|]]j])\\[iZY WV9D3&,%R|U 68fb-d[ifXN_rgh z!%(+.|2(68:O=J?h@B CF;HKLMNiNNNN!MoLL-KJIKGEC~AM?=:989"9;q=&?aACEGIJJKkLMOFPqQ?RRSRRRPO@MKIGeDB$?=;83-X&!&^ :;xs *|vms_YHCJmd^@ YZ"h$x&*-1468b9;`=2?@BBDDcDDCfBUA@?=;97420-,+, ,.L/204y68:<|=?d@BDFRG{HI%IIIeH#FwD B@> <:=876d30,4'!q  \ qf)k- q?zflIPIA;FA*  ag[" %u) ,./1X2X3456889}9E8775420.)+w(&.$!   s!#u%'*,C.1013z5[79;<>>>>|>*~$Z DgAdF_+ 3[prs*EG9! e!M~9 R  4Il p ) v{|8.  = @ fG-eLG[ P bK{DLs[Nk >R-S33;NYXW)88& 5(q'y7?OeH:? K  z / d_9 {(6Ech[;B|/'`GC<@NSG37% Eig;"7h9)f7AawhSKHT]nvAj:  831d& SmdRKs   maH;HN724  $ -CfsW@-+73+Y>un{RvE\9VY@KXhH@6!64"  ':iuS EV^lyxbE58IHUy|kqoL,%:Mc~yZ(U62Sm |P4(7@0 %+*);GD. /jpk`^eogmzhG0-3(!76yzcn&5; PaM>QqzD  "BD)WY:!6T_SE0!c9cN~y{jhyuoS?ALHDQR8")\hK/$Nzt\`  Y,  - GlpaF?CED:1386.7I^- qq}|vpO41@DIW[N84&.QL.-Orvda~{V0%  ,63"*eX3&00:L_qo]I1N177xsjI/+=J[ovr_R:2>,"59<CQ^wp]p+, Z7"+  &>,1@;02NsqPIMD>>HTcrveh,&kc\G;;M`qyeG4$ ""6>*$>DL`} &*jE%  *$ .2"A_aNBF^vxlojYC1-+Ag#~k_\UVZfvpJ$ 2B4$+@H]|hc`L1 '  %,/' ,YrocV]hg__]TKIKCFWt |tssvvv|{wb>!%" (6-"*@QjkJ3 $$!*.*&"! :]rxlcXOJFHIQajeYP\s |vqdL:<A6'!!-)&+@ZtlPD*%(   ,uejY>*~-9YI-UtE/z!""#5"a!Eg @ /       ! ] ^ e M /?O9AaG6U(z?   $!zJ P=oK2x&_'wr !H 'W-  >  ! , , % 1 R Y  L g t { ~ fzitvQ@k&0u(Qk~D IN /;>%z&x" wFi QupU  .  " Z  0 O _ o u  ! / )  2  eWZ w T uaDLM*y  PmPfqdO|ZG)Xi} epult ka e 1   t < Y r u E         ` O " _=",Hoxv"{e< Hil/v ?Q'7tp5_4~LH/$L Y   ? | , N f n v I  { l # G  M K & M u " \ t F  9|!U:XUH1e#z,v9mq^YS*p:U!ck[g #>9 V ~ Zo  4 b |  b 8   D i | t s V N f .     B ' , f3?O{$NJ7fX^N3<&sGQ'  u U n X { { n ' ;-mB:&Pm}/  V k ` 1  & C t v o } A & & &Ww^2X7k<Gmd5cay9H.Gb! _ r H Dyqj\Qf7 UX)"DlDDrD"-Jw - c  E p : q rD0=jg>Q$f| { ) BgO 4 x x # > G }:M3<@UfcYm\:9=O_bPAB]m_Bss8 Se  A R r . ` @ g9OFv0FuWM j PH@N ) ! t CnYv~[Hiolr]39 &6Slw|nWD>Nc}|,XI}Hbil  # Y ! u 8 ~ b  W 3l$6 l  { 6 ; .  X I Y-ceoPq;m-@IB8)!-<DRfjW?W >( * M e  c  X ^ /  < l ' < N  !  F b < \ .  3 ] =EilDN~$2CtU  %Mq,]gJYpA^ X : ; m ] U U V 6 ~  1 4 :F)Z#AT0dQRhoY$o> 5{ !3p:! #k  K G !  W ] l ^ = . C | f '  I } f (*[9+`YAS[,.X\2&&TiJ{T7-- 2dm: #q"~xs  uQ'iE s   ~ f jaNc7Jz vw<\FRc3# e|Wa[785:X!a5 t`)&SB3!vjm&E K ] 5sv\bo;$3I90I_n"saTlz6n I w 8 o b U  m A C]nzetU6_mM-;:`|53`r3XlkP& #Z5]/C<Sjm Y  .? % e # 7~& Rz Z i +|<7 +OPGju }opL S|"v{VmzbGAes(D`bxp!3.y 6 m$?@lVbF^{|ktX. *kF# b U ZyYR1>u/`r2|H: Q1e>LS]#-70a1@51Z ) U fe$f 37FE/ ="q$&s'(d(((('I&$#"!!U!I!C!C!> (I_Mq] u>u:)*"^N1T$@HTvdkA&?fhod0 o?'*$,DR2+O = z[E^l !#*$&(x*,.1!2334"33}210s/-,,+++,,<,+*)('Z&$#!YMZ  {;uZ?goa&2|lTp"T >h&H"Y$&Y'(*(()a**+,.0.135U7I94;4<====r=7<};:G876h55j5556(655$4W3H2Z1J0K.-C+<)$'3%$," J R(=aeGM@St8UpIv (Tv@.kApx |+' $0'+-0 1Y23%34F55679:g;<=?R@BDF,GAGGGGG-FEOCBAA@@@AA^AMA@X?>v=<;:9g753M1[/j-Q+6)C'D%]" 1`"< i VE:@ 6}AMY<`[:Mt(+_)K 1 c #'*.2b58':~;=>i?A?@AB8BCDEFGI[K1MpOQSSTT8TTOSRQ8ONN|N&N?NbNNNmMLKJJHGFEfDBp@>=[;W86*31.,<)&0"Jx ;U'>9KxENYc&F ~ })  $'+.\26: =l@\BwDFHjIJKSL"LM MWMNzO#P:QNSU"WZ8\4]^K__L___8^\[ZZxZ>ZlZZ[ZZXWpUSROPO6MLJIgHdFDA>;863e0',(z#p7x iPP#N%.zA (RCTs-~V"g DfK#&'W+M.2=59=AYE#HNK9MP RT UPV`VWWX=XYYZ[\^/`b,dffg/gh2hthhhIgPf9eDddqd\de'eeeerdsc8ao_^\RZXVTSRQPM|JGDAG=:6_2-(#%fK `cP]?54W8H~ [ '\q!%*(.i2{6,9=?A&DHKOQTW49 =1@DHLP S1VYB\1^acdfBgXh>hi iWij*jkCkllpm mnop]pptppppp~ooRnnsnno\ppqCqrqqwpao\mlji g#ecaaa`^][YVSDNJE7@<%7{1+%u b[B-  +Dy r 5  +0 !&+06%;?CG{K@OERV X[ ]h`Obe fh i.jkllmgmnnrnno o o oPopq6qqqqqqrr qq pp;pcpqqrrrstsjs(rHqmp8omlPji,Efr!+%*./K4'9?lEHJOsSWh[e^xa4bd*e#fzghijjkylmnopXppq>qoqqqqqqrrsLst9tutu uuuu/t}ssfsVsIsls{sst=t~t?srqpoin>m l'kTjjjjj$ihhgZecha]YU~QbMHD?.93.8)G$[e s}s8 "5K SIo!y#&*/n38>CIOnTX]I`d{fhiijjkk'kjk:klmnsoQopupqrrrrsgssVsCst-tu_uv vGvwwIw5vuutlt-sssst t9tctsrqpFomlkkjjkkUknkbkjj+i/geecS`],YVR\NIDw>83S-'!  =1~ux !Mr***h))q)")**,. 15?9=BGM2RW\F_dg'jk]lGl(l_l8l kjjx?>>>5>>??AC3FIMQdUzY]adhCjm~noooo0nzm3kjFigfsecbaaabceHfhjlen^opqrFstu vvww>wwwvvutsKrrr qVponlk hfeca_^^_G`aObceIIIPIHIJKMPSVZQ]amdglilnpQpq2ppnmJkBiEgbed@bh`^]t\?\\&]7^I_acleZgjlEmnp/qs=tv8w wwx&x"wvvusrr/qzpoOnKlk hfcj`^\oZY)XXjY[\^w`.acfhijk4k&k?kk&jj.hfd_b^ZUP IC=)5.&S} RSjS7S-SRS`SUJCj;x3r,%H,  9bcVcddUddd|deaefh#ik.lmn~op5ppRommk~he[a^+ZWTRxP]MKJ#IGGGHKHIJLNQUVY7\`CcgkoYrtvgw,x(x>xw7vfu(trgpnk'gdQ`\XPTPRLIG!EqCBBD/EHCJMPSV_Y7\+_(b:dgi|k]lnZoFpoodmljTgob^Y SLE=6p/L' u< oh^i@ijRjjjjkAkslln oopTpq$qpomkhNd`\XUUQNKIGDE9CZB"@@4?@I@ABDFJMQUZ^?bgkoruJvwxxw8v|u+trol~hd`\WRNIF3CA?b=X<AXCFIMP%S/V.Yn\`dfiknoqnqrq pWnliGe`\UOmG@901E)h! 8kllm/mmmmn n!nopq*qgqqqpomqjgHc_[KWSObKH[ECA+?=0;:@9x89B9:;=?BEJRNSRX ]-bglptsuwxxEwjvu\t)qo$kfb ]XSuMHCGMRX^djOnsuwxaxwwQutro j?eK_Z6TNsHJA<8W532e00E0=12469<>?lBF HL(OSXH\aseTil o;q8rsrqq>omj|g]c^Y;975310/c.../(/0C1258o06#.@'Yopq6qr$rrrs&stEu&uutts)q#m]id__YpSN\HC?6;75`3F1/.`,,+W+6+0+q+r++,-02961:@G/NU]dBj@p@twxkyx!wmutr;nic]*VOHbAW94 .+)U(w'V'x'(*+-U/:0257:=AE4INTZE_dmilWoqrrPrGqupom j^h^eYa\VOrH(@C8_0("~Up=pqrLrssJscst3tuquju%t smqOnie}_YSMGB?=~852o0j.-,+*))**Q*r*P*G*`+ +-.`15L;gAIrQ X`gKn rtvuwxw{vut!qniwd?]WMP7HA:>4L.+)'&&&'()*,!-".A/`1L3v69=AFLRY(^dhlWnqq[qq ponkjhf7a]$VPaI>A:u2,J&$pq]r/rsSstttHtutuuLts4roDZKQXi^cihqknppppp.o mvlkKifb])WQqJC<5/opqrssssstttsrpnkIga@[U NGdA$< 63/r-V+;*1)>('''(E())* **/*~****G+-3,8@HQ Ya"hnss|uTvuuFsrpmie`[OTN)F?[9 3_/,{*)5((O(d(N(](((W'']'(*, /27=CJnQYX ]cgkmoopmp(ovn+m\l3k8hea'\WuQK6Dv>93oVp;q"qrWrssssss~qpn ksgb[\(VOWH;A;72P/+*J(('O&&V&H&'()Q)**i*+J+_+*})*+06=EMVZ^Kflrtcv+uuAsrpmj$fb?]WQKJ!B211)1Y111a0.,*R'&$h$3$-%'O*-318?G9NU\SbglnapqqppnnImlVj|hfct_[XoUolclm`n%no5o?oEoonm>ig2b^6X!RfKD=72-*x&$#"p!!!"#?$R%v&(/){*+,,,=+)('O';'O*~.x5]qnmXjfg1a\0UMG@~;754R45*666053q0-*(f&*%Z$%&)+0-5*<BJQX_ejvmpkq-rqpoo#nmlXkMi}g&d(a(^\}kl/lmnAnnnnnmkgd_Z-SMG?82.&)&#! O @!B"R#%@&(*+,--0,f*)(N&&(%(!+Y17?G`OX`g:koRpqqrxr3qpomk:f}a;Z^SLFA*<:889u:e;"::7z4`0u,)'+%$$%H';(,107>oFMU\Sbqhlpqrsr*qYpoonmm2kj9hed0bk3kl3m-mnUnQnnnmjf6b2\VvOIBB;Q4.*&$N! h$ "J$'%'*,./70/.-=,*)3(n')O+06#=`DLUD\ch{lnupKpqqqpponje_0XR6KFBj@(>==>? >=:7s2.+I(&m$$$&u'*.Z4q:B+IQEX_Nf&jnprhrmqppZp,onnlkihfejajk]ltmemmn[nCn%ki/d3_oYRIKD>60O+'$\"M Zf0] "$&)X+.b02#3.22N1 /.-i,+,.2K6=uD:50,)',%W%$%&_(+1<7>qEMU\cimorkrruqOq pp~oomlkj$i7hiijyklmDmVnmmk/h(b];V9OG@:~3,-T(&#\! } S!#&Z(+.14G57a77s6543321237:A G(NU[jafjQlo%opp7p opIoom id^XaRNKIIlGgFyEEqEEDfC|@<722-)'&%%Z& &('*9/4A;_BJJQX`flD=IOU[acejloopeooonnbmkhc^0XROJLoKIbHcGGFFEB:>9C3.*(&&=%&)&'r)-A18m?XG-NU^djn`r;stssshsArqpYo4nlkk'hEhOijykllmnmjgTaZvRJCo<5.h)y%$M""S!! !".#!$'),/37r:<>?@??W>>\=<==@ACYH*LR;W\b5fjmop^ppconn:lkiNfa[UPALJ1I5GFEEElDCAA>93.*('&{%%%&(G+/x5<=D&KS#[Vbuhm$qsuJtuttt%s qpoamll8gghjklmnwnn|kQgaHZ^R#JgB;"4Y-C(%1$T#M#E"""""#$&(+X.159= ?UABC`BBBB9A@@A1CFJNSX]~bPf\jDlopqqpoInrlkchke^`]ZeT N/JGFEDCCbCnC BX?=83.+)'+&}%%H$%&),28@HSP Xg_fkpsuuuuuuct[rqpo7nmeggh8iklmocoolEhb[$RKCl;t4-{)1%%A$$$$$p$$%&f(),M/26:=@hCDjE%DEUEpE^EDTDEiHJNRV[%_mcgwk mpQqrryuu8uuptsrq&onnffhikm:nBpEppm.ib[SjKC;4-)&&I%&A&)&,&D&&'T()*-F/37z;U>ADmFGGYH9HIeIIIIJMPT2WZ^aaeixlnq>rhstsCrqpnm&jfa[TNHDB@?5=5;;N::_86309,)'&I%$u##2##%'z,1:AIQYnag:mvqstRttkuutFrrq>po!nffhikmunpq?pmqib[SjKC;4.(*d'c'&'F'@'P'''(u)-*+-0R37~;">ADsFaGHJGKM MNOQTW[j^D`c_fCiloqArstYt5ts qonk>hc]VOIDB ?+=:B8E7 6543'0-*(6&%$$#_"""$9%K)u.7>FNVm^KdkqoKrOrs rsss.qqBpoo*nffgikmhnpqXqmQijb[\RK.C;?4Z-*|'''~(+(H(m())&)*'+r,c.d147;Z>ADG.IJLO3Q RTKVaX\m`!cPegEi k9nprsuu]uuQu8tDspnki=d^WDOIuC@C<:=64c22;10/-+X(&%$$t#""l"p""#_',K4];DKS[bimpqYqqEr.rr$q ppPoo]o$ffgik}mn|ppp[l\h.a7YQIA92,)'&&''(@() )/){*+U,>.)047:=h@wCFEGJLORU WkZj^b f+i6k_lmoqsu4uvvviuu{tsnq1okids^WP.IC?R;r8}41//R.-,+U)L'W%%$O#""L!!!x""H%*2:7BgJ@QZahZlopIpaopqqp0oooooggh+ik[m nppok}g_XPH5@g71 + (S%& & &'K'(_())f*+%+-/258G;E>"@BE-GKPORZUX\a5ej]m\opqrtuvvwPw"v~uxu tBsEq%nk`hLc^IWtPsICP>}:562/-,++*F('X%$##k""$!z!! !!!0$e)$1 8@HPX_giko>opobnopp@ooopp&paffgi$jln\ppioj3e\^VN%F>05.(&d$%$0$8%%_%&'`'(()*,.0t247v9;>&@nCGfKOSWm[af2jmp[qrsu#uvovvvuttXsrqo khd_8YRL9E@;8F30-,O*)('&j$##4""7!p ` ]  #(0\7@eHaP3X^_gkno nnHoooooCoppvpff7glhjxlqnp]on=hc\ITLC;3#,a&$k"F"L"I##O#$%_%&F'(()+x-j/3173`57H9|;?CHMGQV[`fYk0n9prGstpuyvvvsvv+uttssCqp,mhjfsa\(VROI|C>:Y51.,k*E) ''$%$#i""! Dz #?'/7N?GOW_fkngnnUmn[onninoiopq5cdLeg[ijkmooKm>guaZKRuIA90* $"w q o V !+!"P##$.%&&')'*,%-/1m257ID4ImNT!Y`hej(loBpr#rsstnttttttt0ssrrq\olid`%ZUO3ID?>941R-+A)8'&,$#""! 9 , a i#w( /7?kGuOuW^fcjn#nCnmJmn'mm'mrnao#op]^aAcfilnnkVd^nVfNME=c5j,& ! p}>s , !"#%&7'T(D)')*+,.17Fj2lnZopqrr8rsssssFrrrrqrVqxpn:klgQc^ZTOeIC=840[-C*}(&u$## "N!!D ; #(G/7%?lGOW_4fk-nnnmmn"mblmmnogp-YF[^a)dhUjn%mBjkcV\TLpC;c3i*$>qO H!:"2#a$%''())*V*-*0J5<BINU([EafjakmnopOpppqJqrRrOqq|q/qqqpton/khea]Y'T3NGGA<672.+m)"&%##*"O!!* s a ' #(?/7?VGOX,_wgkoo5on(nHn@mKllmn:noRnTX\a@ehllOib\ITKC:2)#om>7" !"$%R&'(T()r)*X*-B0V6<+CEIOV[b_fjYklmn|nnnnoXopVppWpoonoHo6nnzm kJhfEcX`}\LWQKaD?9405,-)&%7##5"?! -  #( /6?=GPX_glcopponnmVlglhm5mn2nKN_S,X4]bfkBkPi6bE[SKZB:.2))w#D9n! 6!T"x#$%'(()B))**-#045;CIPBV\pbfijlDlmmmwmm mmnMnnnn)mmmmmlkKi.gec_[eUNGA< 61;,)&%3##."%!e  S `#['/|6?&GP{X`[hIm5pqq9p+oomllrm3mmmnbBJFiL2RRX^ci6j-ib\TiLjC;d3X*$#hS!!"^#$%'.(D) )|*"**i*+U-06v<2C,IPW8\bfwicjXkl'lllakklGlmmn8n(mmmn n,n/mOkj0i+gf!b^ WQ3JQC=72R-q*/&%:##L"L!! F  7 9#8'/^6?GPYN`hmqqrppRo mkkekkll9>ENLS[`g&ihc@]UkME8<4,M% 9ca " #Z$%'()*W*+9++w+,a.27S'/K6S>GPY`i,n[rr,rqpnlQjij]jjjg1T7 >FO7W#]dgidU_FW7OG?I72.("k= "#C$%'(Q)+$+, ,o,,--03$8_=xCJQ|X>]cfiJijjkwkfjjhjek klmnoo5oppBpponyml8jifb\V}OrHA;F5/+j'w%$J$ #A""T!! h O V#Y'/66,>GPY~`i&nQqqr}q;om"igfmfueee)W/8NASJS_Zbfi'eR`XQIA91x*$}!7' "9#h$&'^()+S,-R-X-e-U--.039> DLJQY^dgj!jkPkYkkCjjLj(jkTlwmnooppq)pppQo(mlkjgd>^dX[QUJC=|7{1,*'&@$$##I""`!X  R T#O'/6>GPY`in4qqWrpnk%gRdYbbJa``#*%3?.--n-._04,9>DKDRXY_ehkOklzlUl9kkjjdjkHlemnopoqqoqqqpopmlkjgd_GPY<`xhmppOpo+ligcb_]=\Z1YY:$.~8vBLU_5di\g|d&\VO"G4>70J($]!x!y !$!#$&k')*@+Y,-./(..z.+./'14:`?VEsKRZD`filJlmKm%llkIjj{jkml~mnppqqrrcr(qon-mkjhe_ZCSMbG@:M3.*m(&& %$o#"!  8 (#'@.5>IG;P*X_glooepmjWd_[ZWUS4RQd !6+/52?JSo]kcih,e^XQIA92+%"h! !h!#g$&m'(*2+M,-./)/)..//25Q:?{EKRY`pfj"llmmmglkkjkWklmnppqrLrrrqvpZnml6jhGSOX]_g[knnPnkg`[!VQNJIG'1W!%/X9DNYf`ghegpa]OVOG?8d0^*Y%-#=!"$" #$I%' ($)b*z+n,.--..0-.W.14]9=CIPfV]Bchtklmmmmllkl#lmncoZpWq?rrsassrrFq omlbjgb]WAPIBh{dax[RUMOEe=5/(%"E"!","#$%&'()*C*+:+++,E.'0w48>|DdK QW^UcRgjRlmnmmmn"no)op`pqEqrKrsssrr posmlwjgib]oV|OfH[A&F*/6>WFNU\b2gjijhe_$WqME}=5.'O# H7(T2|=pH/RZbf1hf cL]LWPH*@ 821+&M"!!!""#$\%%&'((Q()D)*!*j+.26;A1GMT4Z_dgk@lmmmmnCnoWopNpqqr]rsssOrUq]onlkGhea[TeMDF@;[50+(')&&*%$$###&(p-`29AIPV^bg gheWaZQG?6-Y% tn%/:E/OW`!d;gfd_Z'S%KCd;5d.+($8"!C!!!"x##f#$%N%%&&n&'(I)+/28 =]C_IhO|UZ`dh'jlhlmOmomnXnouoppqLr!rs?rrqMp.nmk ieb]WPJC>-913v.*(d&&%%;$$j#$y%\(>+0K6=E7)1-))o'&)%%$$4$2$%Q&*F-3'9wA,HOVD[E`cSec}b]WN"EA;2) kL p #)j3g=HQZ._oe=ffc_YStKD;= 60))&#3"!v!H! !*!3!L!H!o!"B"0"9"#u$~& ')W,05V; @jEKQ/V[`dRgiklmnoo$ooop:pqqxqqupoJmkjAge`\`V|P~JPD?9s4R/+L(&}$$s###$$|&|(,06=EPLRYY]bc=ca'_Y$QG>5,# 2  m%9.9CMVQ\Mcegxdb#\W_P,HA6:F47-($#d!! V % +  !"$%&(,F0G5:@eFKQW] aDeTgjkmpn3o oboooppypq%pp nm d1)o  !F"r#Q$&(+0Z4:?ELR?XH]3aehCjJlhmno2opoSo\o~op p%oxnlkchfNb\^@XSsMHB=72B-)'n$#x"_"R"""$%),817?PFNUZ`Ycdca\qW)NE,:1) ]\ H h5#Q-7BaLHT0\zaf,f[ea^YRKAD:=71o+'$#|! g5kl  !g"#%( +/~49o?UEyL RX^8bkfri kmo,oooooooon}mUk+i#eb]Y4SN HMB=8E3o.+ '%d#"!E!Y! !"E$]&y*c.:4];oCKQY ^Hcvdeb`YRI>4+#yg ^  Yh'1';F_O>X]cefca\WPIC<7 0+'%#P" TC|)4lB  " $%(+/49?$ELhRYM^ZcfjlWnoHooeoLnnn;mkj$g=da`w\mWRMoGBm="8d3/+(%#!!S !#%(o,18?GNUD\F`e e*ea]NUMC8/%W |^) U!(*5x@fJ;SoZ%andg`edg`^\rVrOHB<6p0+?'$# !j#=t%^ 4!#&(~+/|4X9]?F!LSuY^^brfilmnnenBmmkjhfb^^ZoV-QkLG}A<73z/b,%(&h#" P " q"$'q*t/5q=DLRX_cfbed#_`ZcQH>=B3) Sp 16  $Q.9CMU]af7f\f(b`J[ZUNHB<70+'%#!d` "t$'*-165;fAsGNFSYy^bfj%kmll^k)jhFfc`O\WSkO9JFVAn<7)2/q,>)'$"! !K"O$'$*.4Y:BIP*V\aduecva\UKB7U-I$= Ow(R> '2=GP X^eg%hAed+`[UPO(HB=6e0+3'$#5!8@}f;6gy "$'e)-17=CIOU\Z_d(hJj:kkjhgHdbV^ZV QLHD-?:51^-+(&$#T!!U !b!#9$'*z.3Y9@HNT_Z_dCeVebK_XPF;1o'q C) Ji!O+364@IRYaIe=hg f?b_ZwTN`HC<71&,)I'm%P#"x!! _ !yk ?!:#$'z)-06/;BaHTMSY^cg\iGjihfd^a]YUlPmKG B>095w0-z*p(&%$$!#v##$%(*-20"4:#@G2MbSJXb^%addc_P[HS_J.?4+u!N rjUa1o \#.9CM$T]bg}h"he b^ZZT[NHB=73.,u*2(' %$$##L""! u 1!!#%( *-?05;fAG`LRW]affhOihSgda]YITOJ]E@);i7]3\/,7)'E&g%%%^%j%Z&&(*p,.2A5;RAGGMhRXE\acdbaH\=VMEC)8.K%` e " }k'o2#*.)q((+'.%% $%&(*_,.1~49b>DjINT Y^Bbufhnigf\b_TZVaQfL1FA<(740.|+)(I(#(>))d)*G+U,/1$359?=}C#HNKS$WZ\o_bbbz_>\V]OE:0'^ON 1]y|S~ gP l*5?HiPW_dgg fca8]YTOtJF8B>;9<754:21-//.-)++*+,.n0236O9 =bB"GyLHPUZB_1c4g@higf:bi^tYKT]NITC>9q532/.Z,V+K*+ +,-./1257Q:0<@EJOTTX\`bcza\_[WOG<2)!O 0_@J Un+ R#-8-AkIPY_]deeceb[`]]ZUPLIFDA?>5<;:C876544 34s5c68]:;|=@*CHLQUY%];aeGhjAEEInMQUY\]x`Cbb\a-][UOG=3*# vOW~ ]S &k%0:BIRY `xd6fdcb a^[WT.PNLIH8FEFD#CA@p?2>3= <@)ADqG JMQUXz\(_Gbcd$at^ZVPG=4+#".$^%{FOx$ '1l:fBCIPX^jbcOc>aa`_]@Z]WTTSQyPCNMLKJIHGJEEdEEF@GoHyIJLN]Q4TqX[]adgcilmBmkiea\XSTNvJ'EB@#>===g=>9?R@B]CEFHVJLORUXRZ]X`bdca]ZiU.OGu> 3+#qk /WcEKwY :"(;1:BJIPW^Sacvbbb}ba`^\RZoYXSWFVWU|TSSQPwNNMtMNBOKP0QeR~T#UXl[&]`abegkikmn2nolkgc_[VWROK)HyEDDD@DFDEFHyJvL9MO=PRUHWZi\^aQcXef3eb_ZVZOG=3*" Fno|>}T$klR "(|1:A$H$NV1[_`aabQbcOba^_^^^]t\[[_ZYXyVUU U&U^V9VX YZ\p^`bd{fgikklmn7nkmIliifc_\ XwU1QOfM!L1KqKKLM^NPRxT&UVXzZ6\]_aDfJQWf\;^V_`=acefgpg]gggKg\gHgffeOd{cc bbbc'cd]eVfegyhpi(ijTkklhlmfmmmmlrkhfdNb` ]\4ZZ YZ,Z[\^!_l`abcdFdeefg_febk_ZWRMF<2(!Fr ~A1 /yew4gv='=a : N-o'/5gfd4a2]YUHQKD;1!'d6pdyYe WyB:#X>  %-R39>ICJ OT?VXJYe[?]`cf g;h\hitijCjjjjjUjihggCfaejd=ba``___`C`abcdecee{e5ddd~d:d3dVdegffffffffffMeeddbbn_\ XLTSQ9MHcA8/]&g?" P!x D}*- Gn#z*0|5e9? DqINQ0RTdVWY9\`HceUfjg_gh@hhii2i"ihgfedDb`x^@\ZXWoWVVWJXY[]j^`Xa]bKccdeXefgBghhThgfflf eeGdcybh`w^W[+WSPLIjD=5L,%E O$x*q9=bdZ =z!Z',0t4*8 =AFTI*JLFNeQUNX\]_ _`_`3`i`z`````_^\LZdWU@RPN%LKKK&KiLNgPRTWXZ|[]r^_`abcbbbb+ax`__c^^][Y/V_SWOLIGCD>8|1:)"I8 gOtvRER/![3 h#o'*-1>5n:B>mACyEdGJMQSUxVTWLWWWWWwW\VV{UoThRPMK%HqECAA1@5@Z@BQD"FHKVMOQSrUEVXVY{Z[g[[\ [[Z1YuXtWUT QcNKIFGC@=Z8N2, %kb# !h_%a]h`SK`wf!  ow"s$&)-2!6=9:;=#?AVCFWHoIKKL KKK_KJmIHGECAE> < :6k2,?&Z (n ;/f{'yw$pw\WJHOma"7 ? n|"D%)-03;5f68:N;=)>?@@AMA@@&?>8<:8`5m2n/,+)b(''(G)+.$0s2468;=?1AOC.EF`GsGHGGEDA?=;O927l54Y1/*% Mio v ,g-v<jAwekKQLHAF<& p,r q *HV[!%(+-X./c031233f45m666Z6q55532g0-*'e$|!>Ce9"$.&~(*,/1j36D8r:;==<=m<;9753m1/.g-j,*i'O#%d T7)a+iHzuH7XBIHSUM7+ /[ E"r b"$%q&&f''()t*1***r*('%#4 Yo-ORBOKXX"($&)p, .20E1X2F210/-+*(G&%$," Q$l 3 Ad [qQkK2?i9@D]fX7# ^AK ' Z DTf dXlK{ Y; 1fDRb "U$)%&'+&&%$x# ! 7 9+z  eM&jx<zD.6^2FJPI<*%pP6Y  CU(uy)T? s ZG.%   z\>HpU' :j;WMqIiH^)-Vlnk$AH=&!=z?"8 } F # 6 @ F }/>#\K=<z  o m#nzdF< "\wfUn DX2T.*1EPOK (<:% .Mp:x97!v4YL  9 1 : > ^"p(Ug^CI5/fHB=DQSE"42$Zw2|'(zdEX!c{U@<.*'8Iu#yE *hftt.e@Es~_QPyqfRHTV=18& $QW*u022MwCjpzreUQM:2FVG+ BG\YsmY\]"UziM@M\gJA5%?=!#$-PpmK (& 1HP[tucNGO]XYqwvwtrxsZ='+<`y/:c907Zq qF)/?A. /@FBIIG2   YmpjpzkSCCF:+.#%@ZJaaIF@UsuA  (FH$ &5ouQ0#=ZS6#p=W9xmiVIKSOILH6 ?enXF2<hzqnlY__3   $0!% YjHDG=. (15")O IS!zsnVDCLMLNLG;1;TN700&.Il~{f`a} [6% '/5  7uX3 !)6JdnaQFh142yslUDBNV]bcf_R9%'59(/HKGIXia]t*+ [:% ,"7, 0><8A_tO?:.+)6Jbt|u{%"|j`ZKEGVhtyn`J5!-55@A-!3NOP]w} *.kF' .# '0' =al`TRh}ndT?-#?g#weYURW]h{mL*  167EL>2<NNXt!"{hc`K1  -$  #&//#'Xz~o[amog^QC;9=7?Uw& wopu|~~u\;"!!#*/+)2:2.:PZjjJ6! ))$.,$)..%7c~mbYUSLFAER\VONayjXC7:@;1,'"+*-:Qg|iMB-!%   (ofW{T ;'[V$ !!!!y  n       % Y  e l P 9B.'PqG8S(}B   !v?U9]:=|\nK8-@L&T &vC  _  ( - 2 C [ n   W l p k o P]M]mjMBp2,o%OtC GO+76}f6 K5_Q}Is4R:@y$ c 0 m  + D T n , , 4 $    E48 W 2 [ ]@GL*| "RkKbmgL'JoYif+Ml+jSc<DJRS   : t  % L o x M     `    b?('yCgpowiD:A Cxn!$v1&R4( ' p & I s  ; ` s  t r T $ u t 0 2 . : _ p : e H  5}!V;VQC-d$z*r8ilZRK)tzQtJ4?/{!=)v? o ) @ N S "o 1 Y q ~ w I !    O x i ] ; 4 S %     = % ) n<GM| (RN0cRRR" 'c/O.2`Y + e p [ 8  ~ B & wH9"H^l <  f a N  = n  p u B % ( (Yx[ .[7o9D`Ss=GC7  r 6 e {  p [ cG4>Tny~6 ZU"#7VXEz:+Hr + g  I r 5 l m;y)4ik4Fk ~ ) #RAX:  ' 2pl-W|^TcO?KFFTYB2?bu2c"Kh_'Mi ! H \ w / a A n<J@r)>sPY  Z _2 7 5I3r8}'<QN-7]hclhO<CZ`o'6}tA2gQclq  U ) }  ? m  T 2m&, q  . Q 6 / D  o^ 5 3 gtJ8f 0IE-#  .(+Gn$}`6` @' % H d  e } Z d 0  ; j # {4 O     ? Y C ] 6   Q "nE[|JEx-JX" ";f0LijSCVk Hc! V 7 1 f [ Q N M  3 w * 8 <E0WRP]#vsiRP\W2xT'$c$#&f*E$m  I F !  $ Q ^ p ` < + A } c ' B u a 0t&`E2H_782-KeK )\FntsOzaF& )Wh, ['x! yZ0tN  o  } f m^I[9<{wu=+rC7=vtCAyf>vK' v0^]wLN{={rr*> H \ 3nv|\Yf*.@9 +/ n+w;Qc ) ? f 1 > > H u hv#*)Z":y{;[mU5?8Y>2]r3QhaF"Q4a0K?~b<_61grG 9wn . M Y n.-lk Aum3S!GKxt{UU )z|XkybD<ihDr^ ZQr[ ! I j E 9 > UZ0~%^+{u4{chS" l =  5 6 SKH0Br Sq6SA^:f,ETW]"+/ s$n p 3, w4@V a * u;4L8'E*[!#%'-'(~(P(5'&%$#"Y!{ re:; & pF@"4\(EN Pkar>$9dimuZ(}N"%@M/*C? 8 " V'L#  !!"$%x'&(*,m.P0F13333y3 2G1j0;.-,s+*****B)](p'D&!$#"!m /"> y US@46!t_GfgU$,r\mB} Vl!#%}&s'v(1()*W++,./02o35868w:?;<=[==3<<;D: 87V54413333v2100/.K-},+*)h'&a$#u" O9&3 u5'ylq U\@Xz>N_? m Gc^7i B$A  r0!$+'f*-n/N01o2R3'4556789;'?@KACE2FG?GGoGfFFDECB`@??>>>s>=_<;:99J88)765420.,*(&$"> 6>Q#F>Z`Dh^7\`m , HYm ^s|! $'+.S2!5j8D9;B<=A>u?@ABC3CDEVF%G GHJjLsNPR}SnT(T/TvTSRgQON=>;,86B30.l+)%! L g N'a%E4  A{6Npy Ih eZ7"'>+W.2 59}=Q@DBDEnFH#IK,L;M1MMN NTNOPqQ;RT]VY.[a]N^T_5_e___]\[_Z$YAXtXWWW8V;U+SRDPOjNAML2KrJJEIlHG E!B8?+;853 /,e(!#`2%z vNS#G"0z;$C|:4k R 7 i$j(-,159=4ADH8JMbNPQSUBVWXXY"YFYZ>Z[\]_ma}cegghhihh9gf dcc"bzbDb@b@baq`_^H\[|Z?YWVUTSS-R%PNrKHDAt=961-P()"i@? tDt^LZ6+2S0"b, N'?z#'+/38%72-( "BB   +2 :Y{hT/KF+[ E%Iq#(-206:>C.GKORUX[]`(abd eg h1hiciijKjkQklKlm)mnopqqqpq ppoo9nnmmmmlmmnn!n*mm4l]kjjigfoecbb5a`r^\ZWSO%JcEn@<=72A,(& d  wD3 *> w A E :#(v-}28P=BAEmIMQUX[]V_{bd3efghikTlXlmammn$ntnnoo9oopqWqr?r8r*rrArJrqq,ppOp oooopp poo[nn,mllAkcjbirhgfeedba_C\XXSNJE\A S#$/$5###H##%<&*.276;@F1L5RWk[_bf5hdj jjjjkHkak&jjjk@l=mGnYoBopqqjqr\rskssssttuuv>vuvw6wwwUvvruuputtwtWtetNssRrqqp on)ml\kkl&llm mlllWkei~ge+b_?[WSOaJE?94.v(#p_ K=l-....D. .w./1p48=5AEbJ+OUZ^bMfhknlmTllll-kzjii/i&iijjklim1nopqLriszt tItOtu uvqvww2wPwxx/www$vvuu\u ttqtstrqponem*l jj iViJi`ijwkkkllljih fdzbK_ [WSOJ5D>82-& 1J ; -B~%O8888889(97:k<?pCG8JNSoXf](a[ethln:pppponmlZjihhgWgfg`ghiklncpqs7t'ttuupuvvw/wNwkwx x7x wwRvv)uuu^ttusrqpornlk ihXgfg g-ghisjfk_lmm:lkjj>igecD_\kXCT/NIGB=.70)"W l?4YuG;jB BBBBCCCDF|ILPS;VZ^beiil"npq*qppo/ml+jwhgfdcUb}aabcdegjln p%qrs\sthuuvQvvw+wwwwwovvAuu-ttksrqpnm^kigfdc)bb"bbcdfgshjklrlilIkkkjihezb_\\5WRMGdA?;4^-:&l 0a u[L1LMMIMtMNN6ODPSUX[^b'e;h jm`o{qBqr2qq onkigfdRbc`^]\\\]^`be0gjlnp}qrstuvw wpwwwxwwvv+uLtssPrTq&osmkig0db`y^]].\]^`atcdfhjllm7m?mmmmelkiIfdP`\WIQKE?B70w)t#; $ l>-TUUV!VoVVWAX3Y[]M_b dg i k1lo&plq5ppo_nkifdRb(`.^U\%Z5XiWdVfVdVWXlZ[^0`cfiNkmtohq/stvvwwx5xOxhxwvvtsrqeonkigfca ^)[Y3WVEVUVX7ZG\!^7`Fb|dgijkllmQmnnnmm!kWifc_lZUOImB;;4-8& |P 1\]^-^_<__`:aacFdxfh jkln^oq q|qipom jgda^\nZ;X?USRQ-P;P0PAQQSTW)Y] `mcfi\lnq s)uv9wAwx@xbxx)wvuts7q]omjgda^k[8X UJRaPOO NOQUSV&X[E]`UbecgikFlnoRpppponljgc?^YASPME>7p0*"D b3c.cdeesef9fgfh9ijWkm n nopqq"pomkhea^c[ WU{S'Q.NLKBJ[IrILI6IJ KBLOcRUdX\`cfj#mfprtvv vwx"xbwwvut&r[omjg1cS_[XTQVNKIGGG{HuILJNQTuW/Y\[_adgi~krmrnp\qqqq oenkchdZ`ZUZOHzA{:3,%U\H0 g+h3hijajk(kkl?lm}nso^pp~pq.q%qomjgd_`\XUBQNL~JH/F?DCnBLAAxABCQDGJQMQYUlYc]iameKi?lprtv0wowxww.vu.sRq mjg1cF^ZdVQMJHE CAAH@ABEGdJaMZPaS-UX[_buehk^moqmmn<;::m::b<;G;:;No@C>F IKNQxT~W[_fc'filo$qrsfrqpIolieb]aXSM`F?s70(!K kalVmEn&noqop1pypqDr*rs.rrrsqp8nyk3gb^]YUPL5HOD[A}?%=x;H9T76@44a3404S5}69i;>B'FoJPUZZ`GeAjJnZrctwwxwyvutr6ojxf2a[UPJ{Do?;z96P4343458:0T0/0@0D12458;?CIOvU[agZl3qt"vwx;wvuxtqnie _VYYRLFP?:?52/.-.J.k/0357Z9m;>MACFIuM@Q}V[`ei2mor'rrqqJonakiofdC`\WHQJCR;o3+$m)nnopq3qrrsIttuut7sr|pmi|dd^XRMtGC>:;6s4+2^1U/.R-,,/,Z,,,,-x/0t248g6s/)un[o%ppqr=rs!stuFuuGtsqnkfGa+ZSLFb@;'620/$,7*))A(H''(7))***I* *O*+'+, .]1,6DaKRR8X^cUhkno oojo}nmll)kJj g7dF_ZTNgmCr9t"uttmrqolhe`+[TMF>83L/,j*k(''a'''('''-&'')+/.2|7rEM SZq_eoi7lnoromoVn{mll(k igeqb?^ZVQNMldlmmnOnoo-o-oonlCj#fmbN\W0PIB<6N1 -T)k&$\#!!!!D!!"#%N&(O)*+, ,+6*3)''(!+/6=FNNV_"elUorsltsPrqbom(k gd_iYRjKD?;k7644333321.?+d(&$# ##/$&*I-39@H/OhVp\bgckmoop$oVnzmkllkiogecH`%\YVkkl2lmnn%nCn:nn:mjgwc'^SX%RbKD=61,){&#!  !:"n#%\'(*+--,+b**('^'!')-i3:yBJR[dbmi+m/pqrr{rqpomjh%cH]VOhI%C@ opApp"o6nmllkjirgfca[_8]hkkklmCmmmmn/mUkhe`ZT2N"G@82A-R(%" [&a "(#%')+-.#--+*%(&&B%'*n05=EMVq]eimoApq qqq_pionl(gb\U`OYIF@B@w>l> >P>?^>;73~/C+(&Z%5$&$%F')-2q9?GNWUr\bhl=ofpAqJpon{mmlkjihgexd)c,kVkUkltmMmmnnnFmkhdf^XcQ3JDG<5/*~&#!(.G!"$&)r+.5/00A/.=-+)(( )_+/4;BJS Zaffjlnop}pppponkg=a ZU#PLkHFDeCCoCCA?x;)61-c*M'T%$$%"&(E+/5;C8JQY1_fFjnpqqPpo)nnJmlkjihg_f|ejjk)lmm{mnnnljgb\VUfMGS@9+2?+'#" EVr R!$&(+t.302|3332~10{.-,-2-1w5;B`IQX_jd6hk2mnop pypq\qCq8nk=e_Z8URENLJIHHtGECI>94d/G+((&%%%&Y'),28?G6/*&#X" ^P B!#u%(I+&.\1468A89887065 3346:0?EuL RY2_Kch3jm>nLo[ooopppnkf`[WTYQPNLKK JGEF@;6H0,s('E%%%&m&(+l0|5=6D}L.SZb>h>mdorirrtq:pp=onmlkjiiCiiiijllm"nCnncl5jDe`XGPHA; 3-(%$"!!  !}#,%.(*-1w58:<=>==<<*;4999g;>yCtH+MSYy_cgjflmooHobo$oPoomDje`p[ VTRQP@ON2M+L&IGAB=8/2G-)(&n&@&&&(e*2.3`:rAIPX`+florssrrfqqlpoQmmlKk)jjHhhhj)klom no#olj}eh_cWROG@f9x2,D'&$""4!!!$!!/"0"$&),0K4L8G;>@ABB]BQAAE@s?9>>@CGKPU[ `$dMhCjmAnfooonndmxljgcV]XXSQOORN7MILKJHFBc=82.D*j(&&&0&&')C,17>FMUt]dknrt tt#ssBrrQaNLLsKJJFI{HGKEFA=83I.*) 'K&%%%&'*.T4o;#CFJRZbi mr8tuuttQt=srSponm`l~lffgi~kHltmoppn(kf=_W|OG?8!0+V&$#l##t###$$$%'M)',D/38#p;562<.*('&r%a%$%w&.(+1C7?GOoW_fikpsAu(utt`ttrqSpNoknm+lffgifkPln pqqolzf`TWP5HC?8M0+'.%$b$$$%%u%&@&(*,0C48=`AEHK?LMNNONNQNeNPSUXW[M^b~==:8i40-** (I&&$$j#$l$&(.4ATZTU5UVX[]_ad)gj:lo/prrsssrqon6kFh+b\UO4IEmB@><;q:M9_8c641.+('i&0%$##}##%4&+19AIQYaugmpssssessrqponmmfgh5ikAln pqqnkk0e^+UNkF>I6/+o'&%&e&d&&'P'S'(H)*-v0487;?DIHLP?S UX[!]V_Zabcf:i!kclmnprtbuvvvvv$utsq=okh%b\U.MGAQ=:74311)00.,*q(f&%%.$##"""O#)#'-e5=MEMU]d~knrrkrzqr`rqpptpDoo&ngghijkmDopOo~kf_X~PcIA81+5'%$$^$%%X%&g&z&'S(),/$36$9=BFJNsQTW[9^Hacfilo4pqrsu|vwgwwwwv$utsq[nkgNa\+U MF@.;751/.N--z-,#*('%%($## "N!!!h""&>+S3m;)CKS[bimqRqqqqqqZppdpp*oogghijkloMo}n.i1dC]UMxF>{5.(%#""##1#$$$%T%'(((*7,0F3629=B)FPJMQTXx\ _tbei3lo8qDrestv vwxwuww\vuu t5s]q]okVgbz]OVOHB/=$852$/-,, +*)l'&l%8$u##8"E!~ !L!%)19BJOROZahm;pq$qp\pqKppppzplpopgghijklnnlgb%ZRJC5;3,&3#!8! !^!k!"G"#7#$A%Z&6'*,/Y2B5k9]=uAEIMRVKZ`^%aedhloSX%\I`dgk$mp1qs tulvfwvvvXvuu,tvsr\q=nl'gc]WQ\JD?(:63V/-+*)(''%$m#j"!! c ) K#s(/7[?HPAX_g9kop%p=ocooo9nnopp{q e2eghXikclnmkxe4_.W3OF>7f.(#" Nz Q !"#w$&')s+-04%8=BaGLQVq[$_fcg/jalopr!s$tquOuv v#uunttZss?rsqpDn+jnfa\VyP IC?(::6E2T/,+P)('%$P#V"y!! k ; U#e'/6?OGOX _FfkSo oonoo4nnmnLoBopLpa[bKdGf7hUjwknimk!d^eVBNE=6,-'!  @x7  !`"l#w$&'n(*f, .1Z5~9?E5JP'UZ0^cgfik{mopqrsVst9ttuts>rrqqYq1pnkhd[`%ZU NIC>.95 1.~,W*g)';%$j#""!J C < #(//6?4GqOW_+fkBo oonnnmmMmno$opk]^a3cfiIk#mm4jc]ULLDbG,OyW^fk=o oonnnmlmnnooUX"[_ic#fillijEc]tU/LDKa840&-*)' %$w#""!; 9 2  #($/6>GOW_ fko`opoonmXlqlmZmnnN Q5UZ_Scfk9kick]JTLD<4z,% PY{t: !r"2"#$&6'R(T)e*W*+-04R9?-EKQZW2\2a7dgi jkQlemm\mbmmmn nBn mkll!llcllak8igeb_YT5MF@:61-*)!'%$^#"!   #(/w6q>G"OW_(fkopGpooknmJl8l5lmmlnDHNbT\Z]_ciCjic^$UMER=65-E&!$E !"f#;#$&'2($(* *+2,-i038>GDJPV\ ad]g9hj jkll*kllSl{lmFmollJkklullkjthg=da\VPI]B<728.c+)#&%m$?#"!!   #(/6y>GMOX)_cgMlfp2pq p onlkMk kkokl*<@G@NSUx[`gHiid_RW7.(h"<n5[ c!N"B#6$!$%'"(V)#)*++,-0d38j=hCIPGV[`dfgi6ijkjjjkkl lmBllulXlm m=m@likLihfd(_!YRKEO>93P/ +=(&|%$ #""!r! F #(L/6s>GZPXQ_glp|pqapjonAljAijiij39@tHqPW]e'hoiea=YlRIA91+"$!M !4"!#$% %&(<)}*A*+~,-,^- -0b3L8 GPQX_glpcp}q&poligffeee+I19BKTZcgYj(fc[TLD<4-&"_ "#$%$&(&')]*+u+,+,z,-$-/27[;AGNnU_[V`dUgRhriijjj7iijjklmmmnJnooon&e'[(,)*-+K,\,,,,-I-/165:n@%ELTZ`dhrik\kkknjjij j}kzlmn>noLopppolnlkj%hc^RWmPJ@D>371,>)'&&%%$~##,"m6m/($!!: !!##$%&'v(()D)*~**+r,.:15d;CA(GN TS[`f:iWkl llllm mnDo opA94.+*(@'-%%%9$$9#n"m"!"$) -58y2g/#,]b!+e5@KU]ehjvgd^XPI#A9O2i*%"!A ? !!"#$C%%&'H'(h) )])* +0,A/028!=D{JPW-\bfjk*l1lrmmnHnopdqqOq[qaqr7rrrGqOpro2n3lVjfa[0UN F?9)3.#*'&%%%>$$,#"""$''+08f@PHPWH^5c'hik hf`XXOG?70)&W" |)3>ILS[cgjhf`[oSLC<*5.-;'^"!- d k !"C"#_$L% %%&g''(<()^*:,0)5j:AFLRX_cgikWklmnoxp3pq8quqqrrarrjqponfm2k!i;eH`YS\LDD><8"34-)'&z%%%]$$$#"#2$&).3;CKSoYf_cghdi6fFb[SJA9O0=(!} @&m0;FFPYaQeii=gb]VOGG?8|0*J$"1 s H v !C!x!"~#4##$3$%p&H&'(?*-27=:BsGMSZ<_wdfijqlm4n]oopHppq%qMqqr%qpon_lk!hfXb])VvOHA;6`1,](&&4%%t%$###C$a%)q,17?GOpVd[ad"fffb^SV9MD<;l2)! 1#-8C?MV^chizhd^`mYRJC ;46-'#x!  K X !M!"2"L"#<$9$%&(~+R0 4:#>DIOU[o`Qcfikm!noVpp~pqqqq0qEqfpp nnljifoc_IYSLWE?:^50+O(%%$$$M$#y##%( ,/5P;CKRY4]bVd[fdc_YPH>5q,"  / * 4.>IR[`dfph^ieb\V`NGE?82++ &v#"1 p S !!"_#]$%&(-,16;?E2K Q,V[_cyfilmnopcpppp~pppZpfonljhfSc9`[UMNzHBX<8%3.)&%$##l#$#>"#$'*e.3M9@H_OV\_cpd@db`[PTpJB39/&% U l%/L9DNeW]dgQi]fd_uZRKD=6q/ )%##c! k j * !"#z$&x)-t2$6i;U@wFDLZR%W[`QcgjIlmoSopppVooooomkifd1`V\QVPJ)DF?95N0L,&(&%##N"u"@""R"*#b%=(,\1t6=ELLT:Y_xb^dd^d*`]WOEg u9 %( f)N3l>UHQX`bdh+g:ea]^WPQHA;I4.B(&#"! -Y3kLl w!{"#/$]&)-1u6C;&@FLROW9\` d;gjjal4noooookoqo,nmlig-c`I[VQKE??;:6C1-8)&h$y"!!4!@! !!#&9*.4P:BBIQX:]Zb]d=ecb^ZQI9?U6.$$C<G V,#R-!7BLxTS\afgSgcX`HZTM~F@9534- (%$"9 `e? ( !{"s$Y&P)b,g05":@XF_LJQW\fafe:hk mfnooooooSnmkifc_[BVPK$E~@6;6624.M*'$#!K  5 !a$',07B>FNET\`eef/cua\HV LC}90(]J H  Fr/k&0;FNW]rceg db]YRLEp?,9I2-)L&$}" xjFXsI 1!$"$^&(,Y015W:t@:EKQW]2aehkm6noo0nmmlkhiea]Y8T^OID?:6*21.@+9(c&8#! g "S%)(.4 ;8BJRX$^cfHeeJa^XkPF=~4 +>#: &t h f)4?ItRqY`dug^f8e#aP]XRKBEG?g82-I)q&O$}" -Z/x'c "K$H&(, 05:I?|EHKRQfWv\aDdhgjlmJm{lPkhitgdG`\95Q0-*~(C&$-! wI0!W#h'd+G1:7?GBNU[VaegeFd2` [TPKA7v._%B8 GF/$$ #7-8BL6S[aeffcaZ\WQ]KE?9{3-)'8$U"= ,g'].q @!#%Z'*o.216;6@F-L!R!W\`egjjji@geJb_ZUPKFB}=9M4~0n,*;(&|$# !d ^ !$9&+/54*"Ui +Yn<f |)4~>GPW_dwgffoca-\WtQKnE?93.*(E%~#"M!! !!0!'!*!!"b#%'),d/@3O7:5r1-*'&J%%,%;%%%%&')7*-+/*2{6&;AHNjSY%]bad,e#b`[VGMD{:0'U1 V2|7' )M%/:ClKTy[|bjedge~db`p\VPL GB=9520/k.-t,,-N-v-+,y++ +.+,-/20S2@4g7;|?D7HMRX\adg,ffeUa^7Y!TN(H A;7.2/,*(''(B)* *+Z+,.*00143669=CzI/NSW\`>cbbF^[UNEb;2Y)c!>dx m7ZiFS]( 2??a>v==4=== <;;M;C;<=4=>l?AtDAGJMQkUBYv]aegih|gb^YSUM0FAv<8L43c11P0113/467T89:<`>P@BEJ=NqRV0Y]`_bbA`]5ZUpOF=z3+ #W,O { oTSo8- A#,6o?$FOSV^mbeQddccQaa^ZW SPN;KIHkGGFF?EEEEDCCD9DEaEF)G4HKMPSVZH]ae;876667N889;`=>@A7BCF#HMKUNRlUX\]_@bcca,^YVO{G=4+/"=< W!*s??_E< P7$..7?GGN#V\accc;cc5b`_\YWU4SAQPPOOOtOKONmMMLnLKLoLM>MMNOR-TWaY\}_HbLehOkllk?iZeaaH\6WYRsMvI)DB%?>=>>>?A~C)DFH*I@JwKN*PSnVJY[}]`bdca]DYT{NF=3+##s  "?K? :K6? D%T.7?_FvNU]a%ccdxdkddpc`^h\yZZ"YdY XXXXXWVUTTTTTUGUkVEW}Y[]_adfghkmmmlVjg'c_(ZVRNK$HF7EJDEE5F/GGI JLNP@QRTVX[]S_b ceeecbB_YUqNF=3*" 9 YUQsvQ cnz! <%.7->~ELTZ_abbd de4d]cat`o`,``L`!``[``_^]R\2[[J[i[Y[[\]_vabceAfhWj1kmmDmslUk0hfb_<[XWU=R OMLKLRLMNPRTyV)WXZ[]^s_acDeVffhdEa]XYSN0E^h^S^L]]p\G[XVSPMJHFEDE0E F GnILKOQT(V=X Z\^ _e`g`````_z^]]\[ZXWTuQNKHFPBy>7x0L(!D$ k[mB imO?J7&  7&"n&N)j,0/48AC EfGIKM>MNNO+NNMLKIGEXB@6><:851D+}% 2? Tpy on_e^WFEOoc} 2C $'+H.13\46899:<=> >q>>$=<< :86P30m-=*K'r%d#Y"o!" "M#%;'*b-I024739(  ;+ E-|a#' )+u,-k../02233]3+2P10 .f+(%"<|f!$O&)B+.]1,4'68:8;U;e;:98 631/. ,+*)1&7"  # k@+$j*"lMpxN<\CGERXS>0 .jg 4I!g "#W##$p%4&&'c'm'o&&q%)#!&x*M\l\!@#&),n./00Q0./-,*D(b&%D$"! vD V  +^oQcH1>i7=@Yf^@+ w0v`D : ,jY\v'h+qrw#  $ V k  9C h"$N$%%,$#"!i f( CA6&pw5m7"-X|/BDHB9-,~2t*:R C #4/6JGI F iF9B)t A $m ? u( N ]<E RzNpKY"*Vlnn#?C4%-m#;:z:N p  [ i d   D=*.YE+ C Ytc :GeV(ra~K_:S.,5JSPN ):9& 3w:5G}5ttboAnl ! < [ b4n>w!*NccJN"51 ^B><DOOB %:=2 _}c (#|\\!MkM a&mW>44;0-3Tw34S A9a&].?nnUOPyxe\KCNP8 $;F5  ,QL z;&\r&8m?27]z #vM13GH1" 1EF;CJO@K}t^PHHKHG-/FbR"X^DB:PtvD ,FD .0!4opG)&GgbA' Z-R<{oaXTVXVO?, AnycR<@o}yrb_aNTy\1 %0 +]xcJMTJ6!!./)>@Q$zlWIBGRYUID:- @[X@73$+Lr~ua_^zyY6  )   (/-@u~^?,(#7P`_TH9W*02veN?6AWkoef]I/-/.:>.#0DCBK_nfdx74Z9( 0 &;. +679E\uyZK@+")=FPcoej*+#whZNJEPliZF- "4:9BC3*7LLO`|}*5k@  .)/7.4Xg_MG_{xp\;#'!.S~"1"we[]fejaB& (268DLE>EQQ[y wg_XC)   *   !%)0.# RxjRZnupk[?/7E83Ei.%umv~yxW9%'4:71-2:99@NYkfH7    %"  **#%&& 3d}c\\\[YQ?:NbXGDXqsZH@8:@CA7+$%-06<KbzxT@-""   -pjb gAIC1Dxs=% !Q"M"`"2 hZd ( f      " V   g j I $P 7EeD7 W+|E    yAW>jI7zji%8%( `!4  +D^LG  U   # * = U } y  S c d g H - UX',m#Rx#B CL4>; y=T[(% t%1^0#<- 86C>,   f &  n  " : M k 3 , 0   m + # e c "  R ^CFF#~"!VnLbtoR+U Q0^Va]tY>H}5W~LV #   > w  M s s H   f m Q  P   c<!!}= dp{$ nHBfb7AK( !V Icbts7` R  " M x  3 ] t w s T $ v m  e  5  , a E  ,vR9RLA-a!z.u9nr_WQ,u?V?!m X^BD !m> r m V  R ^ W :c & K g { N #    F m { j ` =  2 | z ; ; & j;EK|&OI.gXTOdAs:Kx ; f n N ' w H 1 %  !s@2 =Qe ;  Z | _ N "  ' X w { n i w @  # #TqT,X6l4JeVq7\HIpg5 L - | Z _B,7Tsnl$ ZR 5UZJ|{H 7c 4 j B n / e i4q&=|eg=Ig o - ByMda Z b s X S  tq )Y||P\^F7KPRRH4.9Zt8o'Ffc4Nu  ) H X s 4 f < k;G=t/?pQV  A B b fEt'6GswsG/2&WqoiU>5:P_v14~P<i Sdjl  O 0   ? o  U 4g"/ m  & y < * A _ 0 jqWL2`nNr)r!FQ=# &'/Gj.]5_:$ " B ^  ` v W e 1  = j $ 8 J     + K _ < M   V 9B_vM\y.Rm>  @j(Ghn]MVvm   B}] T 7 - d [ T S U  - {  * 0 48XLGg;1F\FGQK&|kR2&i'!<t&E%q  C A !  '  S ^ o a @ 1 H ` #  O y [ $piS>@G!-<#o=h9Q-l|aBymZD( (X^!e,py  a0xT t  l s^Pg14eB)G4Ge1xyD0lr[3tM) u*f&lSZvw5|} rs-H K _ 5v{ YEW+6L'@"Jo' \vON;MD 4  - F &  h *Xaro ^ufnHR\K6=1R|<*Vt8WliM# Z0T3QNyr~TOCLug+< ? = f  Jl,C yyKJDS# xYQ} 1~Zo}fICnw3Ae`y5r`Y%D  =k=s99Jew!qJ3 o  I y Y ' 0fEOD/?lwSr=^GdBm*EV[a&1<dn ',@Yh(u # $ z M Jp-mmN-!p#L%&'((t(O''&%"#"! { _ |^~J q&v # V;5~2Z=M Smbr=(=h\fyh=uI  *F8If d`yoA  !6" "$O%'L(*,\./12w3/33t321G07/..,+***d*5)('&%f#"!ung u EC3(3#kY<[gW&.x zUfn4O %^Y!#u%(&'()*+-.L/1+235T68;9:L?M@pAC9DFGGGGuFFDCBA?>>==x<<<;v:|9w8s7655>432l0/-Z+*(}&$"{%%- ^ ! 5B1bHRjQ`YUj#9Iw j QA"&$'5*,/234857B8:<>T?ABBCDEdF7G(H IMJLNeP@R-SvT|TTT0SRkQWONgLKJJvJIaHgGiF*DCBLAU@d??F>=<;U975t3L0.,F)&"U)" | M{j|t*8 Jt.^frlq. D7`] %4)H,n/148;= >?AcCUEGIJL7LM~MN*NOwPQS.TWY[(]<^_``U__/^][ZRXWVVSUU.T'S QP4NMKJIIHHG^FEtCA{>CWEGI2JLbNPSTVWRXX{XY0YZ\],^`Abceg:hZiZiii h]gPfpeWdba``c`__^[]C[ZcXWV}UlT^SvRQQLPOMKHoEB8>:763+.)$o 3c^"P A*1UeNHjE~R.   $ (U-!26:>AEJHpq+qTq}qXq.pp6oo(nmmlSkkokck`knkk@jjiihgfed3cba{``_][.X+TP`LGCI>:%4.(#N( l #> : w $ j g ~  %D*/409}>CuGLYP^TWZ\p^`@accdue@fTghijkhlllmvn no;opQpqKqrrPrQrRr3r$qqq?ppp+onngmmmmmmmLlllil;kk:jSiehbgpfeedDc a_]kYUQGLH!C>93-(#V KZ~/(9RhxF %G*]/4/9?VDINRpVZ^I`bcegfghphhijklmnIoooppQpq3qrrwrss}sttt3t=t]tUt(ssshsrrqvppppppp;oooo[nnemmll'kk3jji2hge1b$_[VRMHC>83-X( # H >j; '8="G&3+&/49>DXIOTSW[2_0bJdf:g.ghigiiiQiWijklmn9ooop-pqqrUrs$snst/tuuKuuvvvuuuYutsszsrrrrrqlppRoo|nmm:llllllWl kk(j)hfda^rZ;VQMBHC>%892C,'" qn ` C 2M''n&%\$M#m#$H&e(~,F05:9? CIUOToYI]`dgikdkkklWlUkkjUj9jlk3klmdn!o opqqrstLtuuLuuvivww6wawwwwwww7vvRuuuCuCu+tt&s]rqq'pgoxnUmallollmmm/m(mAllFjigefb'^ZVRgN%HC3<71B+%z X@\8l111/..-./13D7;+?DHM^R}W\`0ckfilqmn~n)n/mmlkjDi@hhhiijEk7lMmnp#qrt>u#uv-vzvwwewwwwxxPxxxxxox"wwnw'vvsvDuuftsrfqponNlkjjRj3jjkkkllllkyj9igda^gZoVR\MyGA;50)"m  - =" U<<-;S:;9N8979;>AEIMQV\[_]bfpiDlmnpqFqqppo)mlj]hgfffkfg707("L  lSOOOSNN:MNVNPRUXW[)^a-dQgiWk8m}oApqvr"qqpoAmZksiZgqejc `^]]5]]^`4bgdgjblo`q)rtu+uv{vw.wWwrwywwwwx wwwEwvv=u_t\rq!o"lkidhfeadcTbbc>cdHdegMhjlmmnno[oPoann\lkbhf}b_ YTNIB;3@,%Y @bWQWWWWWWWX2Y[s]_qad!fhjl(mtop ppopuonljhnf4db _]IZXXWXWWXY[]`cfieknoqstuvw+wwwx#xUx^xix"wwveujtsqjoljgSdb`_4]\\B[\;]^__:`Qacfe_gikman9ooyooooMnlkh/ega?\W7R>LAE>(60))#g= P bQ^__`2`<`.`acbce*f\giklmnoppponmFkohf-cr`^\pZ)W`USR9QQQRSBTVY\`,cMf=i;knps"tuvwmwx>x~xxxxxki!f`c'`](ZCWUPSP`N4LaKKK+KKwKMNQTXa[_bfilojqsuvwKxx|xxxxxUwKvsqnkgc_[3X UeSnQON8MMXMNPpRTUXiZ]a d+g&ikmuo.pOqnqrdqq6onol4iea\X RKD>w70,(!f4 gij5k kkl=lmmmnro*op?pjpWpprp|ommk%he>a^4ZWT Q NiL8IGEDD,D CCCEWGJ3MEPT3W[_cgk+nqs2uHvwx*xxxxwvbtqnjfb]8XTPNLVJ1HGxG FlFGdHJwLNQyTOWZ^iae$hDjmSopqssFrqpo_mjgc_Z{U'NHAw:2=*9"X ikNl|mwmnwnoKooopKpq7q-q%pppomkgdy`|\XTQe==c<<= >_@CEIKLgPTX]Naf-impsuw'wxExxwKvurokgb\\W|RJLI@FBDBA@@r?@F@B!CaEWGHJLPlSW Z^GbeshknoqrrqqWpo m jgOd.`[VQ(JpC;3+$ Yu Ekm*nxop5pqEqqqqrVrrrfr;qqPp&o%litd`[WoSNJFB@*><]:8776766678;>FADzHILQW=\afk5nrtvwx/wwvvUtCqmNi8c^SXQLEA> ;98s653222222E2357:=6@E6KQ2W]chslqitHvwoxwwuv{usplDgb[TNG@;75e3:22o3 3a4:53679:6#.%tmnpqqrs(sst5tytuttsrqnLkgFb([V.PKE@<75 32H0/..D.T......0 1359y=D^KR1X_1ejp`svwUwwRvutrojfV`YHQIB;61%.++]++,-/02 34628f;x>eADwHKQ%V\{aweeilorpqqpp onpm0kjhfa]7VP"G?7S.(!Cn_oqpqkrrsJsttuuu`tss4qho=kgb\V

M\ۑds%XjbK5&B{ >g>[%,l3w];uѷc` erDo]%7O6kTWg~B|Sȼ ݷB#)Wk#Y5TA*3dg^M lLL 9fku6}3L>=*#-fHm/~x&X ~9.'#glibʭ/YWTiCK5r3!rޘw&f_IsokhfcY'L<1Pj[r60XjT[wM/}O\0j`$R$(m7[(̅l"6QR?q:8I"5˱+a{mbr.&;XMGǫWN( T ef;z"uOG2.AȢd  Q کҾ^Uհf|LOmh?Zij62h*SS嗔ar']dۡ#keOՕ.WVF TIlYdC v_ *!Af5`RCD3"xJ&0=I&,M#oSM"ո/.4۰$*qi;'0Y:mpmmc0iTcz'7"t}I?`9ȯ' bsgQB?8o&C _x~; Q9J*Ygʘtc51k P/4cڮ"GM青8 B 01Wd&~̙55Hƈcz h6wW)J 0&l zI5xIRߤJA_VG@'y~;4w&Ȏ8P~ů 6N/ 6m4kul$7YklLmi{-^o$4V/~`7ڏZYB av _Egx"J=°$]mw7 9bf̻nmG" TS:{D4@n8f낽>Ry4ѣ{l8Cv=o%S6ϒ%埖\.(2Y1zܷL/6lُ,dqO3lcr3EvsRhQy#yw@j^B}Q`W%X}V%kn L XVI&B4 NJn8Cs9@ 6QVNQdSh \ U=T445t f2 sԘ`_'S P6q ;;8e*_L ͬuQN3q\v>W`TwQ0>O);J@KdQ Yx59BO˰Xr;J<&=Kx73L!YDatbL났fKs: I\b)gsK9/;L+&|{[ `=.OXGM'C2cpJLC=gjwmӉ]ԤNy *}S74"9޿);2TօU9|Ǽ{MS<ɎW1]$m7q=ԕ9KsfH29s;doiUyM|wQOBf!Ze$]AEQy֔Twĩ/mEm~*?xm#[n|Lp׵S#O~%A^ҾG|űp[Wc\G1'T}:7+d=>Ӿ.zoٛXbݝg=&Z㽥mw:3P[}3*oczWmX+,.py R)J86჉B|/[A)x{ u&( Y, RLI*|:Y@/.W vr=l$&|E%_k\0X sܢ¸Cu̮ >@w]80`KRS>}@wQ*FnfR\zx5#W؏ُ8>Н=nz&9փir r2-r <&/vQudwd{Q%6JWVeޢgٚ@ ~ٻ^Wfg4.O8t4}s@vTmO(:.шkrٚ]Iܲ1hgcOG 6d[b[y^o/XJ6v8_8ji-$TM0E]Mp\!fu'_L knmGfR?6U^n OmLպXddgOP;[]grUfd*0RZ*7`!*e*^op05ptgruw[ޘSarr HglfCspit? {ё}*/*i*-ah4?zfr*oZYkBt'H{}s4͆ӚZah}T'j+j#zz 9eYm3m!Vb챳D%y5 u;BC&q jrVPui{u<:Rn*S/\!וΩ lVw8q#Ԉc<2tsr&^gN6iyRLJCg2ېׂj?pE ڒuu&"tBh =5Ӱ9p 6`̳<-l w|#1^kO1`B"mNjX4ijҨe ?WЬ=(-WXX$nAyI9yZ>I"lq}]_f B%B'#+$ϙ3/+)k`@:1#0<W5H^Yvpkϖ xC%{o٧ F ʧ>dJvy͞kIPHSVE{Q{L+G`ƶF<;8W);|W(;'C pv!`ژkoLX74[niB ~Ek{5K?z'ey?5^!x M5//;QX>*ve{bG!HT$EHW qrj_qn y0ivC <j W~V{Pf_" GAvP[\ Mѽ҅((p|9eCts~463> Eyu u0h!eligޏ@Eg閭6#8W-W<[̫ܹrLT yBr u={Gss'XM+zB;eO> 68C\af/XyEl sĩ| 0^c\z9 =[M}")FE?`/ PP#x ."ŵs 'uB[>9BP&l5Hi ?徳8@!X+R=W졿3l!A,ax$ʿϼ-`k?!pq,P]~lBKAYע}Kί(3//ُ2TY! c}g}R6%)7AǍ2EW-$oLnijnE_o%ƌhI|_!h[ʞNWCO|o |wwE$ͮA5un%F .h;b3߸"kӕħ0]KͰ(2γl}@rbyْqR=A_dh;:Gۍ:C etgq(R@HYyefv7$!$iq(]Z"%]R3ynqul>wl왎ğLoX{b!ӆI!xr}k=)@z1ٕyߒkW  x(WWg;n |">r=4WUQ $ =wr0(2;K95CMPS }–vFaʈ=J +J588c5J?'+K ӊzͪ(2+±E}f4^,ga'۟;7Y6 {:Mwer:7"N;eOh H(GV($IaV7z7LJ zy3Z{$1ǨS&hc+ǧ6;L4%ɵ LU?DN!.Ç92ۚ1?x R*90=j*'Imš?C"LᅷjtՇ%e1* mJw!dK 9 V0.bzߺ K WON=dW`L۸Eq0œ徺^a^.5Z,+hPrBu3\AХ{ylIe[.M@̄*6h{/g e gs3hG̴c?'qr p,r'~$N$9?z:;\οm}>J_caCξ*8.1۶;""ź?PG{\{oC ~7н6è\)$ N+Q+>RׂHj#GxVm'4`'h$3qڤ ij*җ]3tWG&R4H(t{%Sh"aÆ!o Z>KC]cLo  ޠzݧ/] ŦߡAx>8<м@-cFpKJ烈p쨆IU$ p })])-2gz9!$ {Gщe}k;V&c]^9h}1ưR;OB @jSTu h_{4>uM|ƞ,Ǫ{Quc'FTY4slTMo<ض,wQ4J P/pVp'R[j}:.'K]EޛE%15|i?>B)@شKь)G zw3Λ bS⻍+@{Z[sK\5; U29Rz'n2.`*j{!jC-E]4 $6H}`bkcOp﹏%'i:hefsD)?Dlrq͵̵.;UY{Gg./KWJVvR$X]H68-Ü#8CajfG=F_gdq>j3zSF"MHݔG; Z!VkP>> .Kz\=oxVSr\j@/*p[QF[.l'J(-vfl,lW[&4GryQR jf0J:MF[f}vZGB z<:t BZ-FPn4.T C=gZ6 Sh ?TT=D* x=9xw``P+4nZBjmrο2"N#S=GdUM 6z>MmM3O>s`^BX,tn߀mԋoclo l7үyvYdf ~W#F{;o pND*h30;PctT؃O8DD]B9Bpϣ9Gnd"%SZWtCoUGw/߷[d␸ێl gs\MH"z<Pnbj?l7$-)2ݚTI˥l؅b:5Vi9|/s %?vX.eP넊p&UThw* xn]Jy<^}^; ZM)\\$<u GUϬQoBpߥ&J5 cPOjk8Wӌ24oq*ڨ`2l[p#Reb3G],R2}Xa7o` \նj߁ 65&.AohUډBĹ σRw33sQaJ;u,Ng 5&N=w6'"pց3%WMu>f͘y2qFAf~&%׌6\?t^\[h,/œtd-Dο=8;<8lgsP%Qrߠ+/x˟4yt =hN `fz[!n5Y]fp* jDžvn^cYSI E_sklw lPOL%=s(g!>*DSmcx =Z!0;L?6AҖ9~Cg @^KOBh 4EY/܉g1jȏ>Zj1F+#7 ӾDPI]DH8ޭLn=ݓ6"1˝.׻[{z{to[65ݲ:v@JH`N 8J@/03;hOg73FVZN^Ac}kq)Q4eSҷ!7Rf0BU%ZBg9]mh,H[ZzhZ2x ϩpppqݑ8 >5AgP?ʠh3}ZĈ}jfNPkė.sMZMЋXk}{}:ũj}\5]A@)|]/[Fg}1JG=Bo74?x;JE[QSt\Q"t՘dCTy.CgpI$K[b/حd]nt~h鶦q9^b˘DNUs=k5y3"36e9]əs(wլ!fPnmK~#ZpA r\c p?$tn80amOO~V_o4Z!iq):"m>=3IW{~n+Kxqp]q 4`?OR)zfaB\|%<"#J-S3rvbJlIɑCRV$c@=me͔)3ϻ9#n4}39FZngG4C]m0v6otF%XTԢi796qu\!!f~yWmJ!$l$&}]SGg;'ki :Ca~'mf:ݜBfyu~ h+ՕN0uowy|UORo~v1{^墅R1Fq70[b?Fz]Mp>$r2l"8>#9m:Ň;^r{!clj-SӁ#c#E(v&n3]]N&1;\xH$+{5MAжY=F).XtfhZS;]>[S^5QO+޳v$.HRxWįMB3th?f2"M~vcr0ezy ed[Cj/as)$J~-_哸zW BE?EOOU<<>"] $R LxDߠv'&L)-*><{jN\_2s Σ3ڸ+]35fq9]?'~71uL\3wܖ`l[Rɽ*ȹY%!F^N+j(nKJzgFoWY˄Gbc{"wR{ܡ39o3slɓ ځ; #PK3-Bߛ/!>φu|=Hs(T eP?Cc1sͲPGnT6VS)̎Wgj7KL5z;}r~ؖg}ld /'8)ݑ;QϔHm<{ed,6PYRi|^ƊY^H7o=z`W U)һ*ByWjO:R{vbjFRZkJ=PC偕fGR^c1|툅va8v<##,{N7*!Up(GqK]^54x=jc衛G9]keR al[@R%!~6 2_Ձ`Z[zwQl&ڀh5B~=YqQRG[a=Kw|L*f} i~MPBɖ3KqK>\$ 2Nmq#|[DLx`q0%SKc7;zM>!h6mKTJ dsosV^2=S?#lH'TNO|Ou8mM(>f]\9Z?o/$F4ao=,[vFV޸E H#*n3{qh@:n1=I**O$=C 7$ ZBU"Sg"v; zZm|?rq([Aw^țT]6_xlhhׂThDk:_ȓH; —.VɕBuopfZhsFi+Q7:f+]J}uܳ;}ɼ`HK^ōiIdѪiXXHqTK"UBClQk C0:WjuA"Q9삿7ߛ JM{-;a~t[ _,T $Sz ,rfT_rIHP*,|+ s>gA𲵨^n/,Q˭Ֆ>P 4@GBN3]_FSUsjlOo%$OvrH5su< ;!>@P6QO)7ɛWQzkp"%"ZcTc161Xa7C5AO4n= DP$PQ ȫRZjf^Y>((\*T/]ZL~{FLJC|*l<]ǰDdBlĝfҧdP:RG{N`Qͬ/yYѦ };VT[ƼHG[c)_+B ǫ0Wh$C. 7.' B(KV~֕gojmo^F'=޻/tF4.U\"*.KGSG\g;h{3o;9uBCaLTUkmw!exgۆ@(ZxIH lmvvٍAR@(h)N[K!;̏9f㾯~T+3:uSjիPl&9Di-%:/q ɢ-# \6 :P]ԆDhk=4SFIn|s)π+4 } ,osz&ĺ+a`XX#bk#϶t"$(# 5t 7}b3<^%BNԟnʊEㆺ{~|ϟ$$==ir^ٮOI=%9ojJY-C\9ˬ;u?l|˰ klLFf3[%,Av ٤?s\6lPӇ0S-&O1{fe3t3zM` O B[>uWʨ̘,UZ-pO+._~ұE\QDSkw;PԨK*j.l'|U82BG1Qxyp8 ^*J !@XbT'ti9prf { o_ZslA 4TG.A+Dp7]b3y:ؕ⤶a?StO9--G @"GoE\998rc׼PF 5JDF{zGwб`8{QiOu;AÚrG>{YI|hi˼RjV ㍉umbDJ&F1Yk5Yzݴ<ܑd/R`{;bםq7b  ÕX=JBKN{-C;VVjmg%Iád)YFLKSHcRE~dӘ>&u:v"I8f{JBU/`,L!Z$Jv71ncj>b~bb|xĖqf*ԏ*7ts{4-I?e”arXJ}9[sw7ۑ_BEY>L{<gg{L"l 5`/FpL!-sF3|c:z0l=_r9^ Z4!Y6&YK_ \̧j#KFvy3:;׌[2_v_~Y ~M2Jϧ%tsf@:3g߸Ǹ m0%OvEцЛc ˒w+_P֡\fw #Jz}3- [vDݥf-Nӵ\_6AG :f[=Jh# .K t!;:'+c24@\"P񕢋IJG46GO@GMB)X5=Ǘx{&z{7~)W3}[(L.% ;E(]%sg,o; ;EDwzZD|V@Зhݠ.B"J^IuCa &&S٢VH_;p*jM}Kd0CWp%LgLu@ wPL㥚rNa6<)5[1pWI?&o;.pw|3<ļ[Lj TOgɬuhG4,Wԩԥjwgg0EH <ԏo78-xUV\_& (܇)U\Gel)ֺ>AM Uqsۮ.+uٗ7zY݇{~s9j[7Zp<.tdJ'w~rx25 w'JzIm5? z]C^:O<'*\lM+=X'<RxitL~I^{I 'f<IFQڛ{bLV˺޸ =@;Wz^wӆo^v!s֌!i?%MA|SJTϪvjZә= 8$юh]j&R'bY`L@wHnZ1]/c-qE| ^S/fHn㥥`?[T:[21dATԊ􍾏~?Y QLwq[]a8GxCQqüƋN*Wed6y'ʉZ]]nPG_ZV[.afðqYȗ"dfT.xUHLz@PKp.h U e4":+' .o&d_4e(Cbef xnc-N`齔`I*x F t a38 n;$Fy'.磄gKޱ%0 UbLETP7FVC1(VKo=ʺcEI~௨N5#I}5VL%T&qҗ(ߞo67qt7lX|dZh`h6}wwK #lG쇸R{h+ؿW;Mi=lh:mŒJ?E2#"6` xi|uA0U@8 p4 xY E(LTN)L-T,L?5՛)HJ5`wfRC۪G3rw5trvHTcO$c-I mJSO7{@nô~WR7>zL4hӫAqº!{X"ooEpe ΰ+Zz#=;\E:k' [ 9XnI8qB*) Dl9>`>mUuzo,$ =R#EmH q+dNְA?JZhdpVk".Bq *..i |BcV'~F{_VgF;"Uغzp^W4YNbTj#]Qh>C).+;}Zrrkœ%iKohfP:A]CM <"A^:(w lGn fu㉝@4 '[A B B ņBmq yAji3%N8 ÏepRp ,a5 fHr"(yZWJ -ʒHff8uIV*_¤rsu+q9SCǑAm#Z`RaL2Uړxz| 0w\@@ udxYz\;X\ ]:nemc5M7-l'y$3Jgo=Qh/f6Nz:;zPIƫoѺO7h u'bU+KG( D΁~m@G`0EO`vbތP _ӀQy 7 @-8N{DilVzk9 D  OHWRq9We^'qzqZTތaI.TLZpuMƈ]f{ }[G ܿS_Nz^"qZ_%F^'awb #;,D'mik`8Zgel9`o/oV\uvƫqI&$,EYzI ]W+g-T .8B\/9,p[F@,ttOS/YCˎHlo{g.GUn!)8HFeD:~)8•(Dz76:ISZQ\)BERƒģl 'p\,Ǣ mPR?D{i?xkD*'QKӬ78h`s0Bol&wI-jo3_[kϪLXt?1~0߲Av83- p-hKV3|UJ)W`r|>h_(܋,uDkK&H9TI6je5u uu[L]}nG(-MqìYv*t s_S%E0۲ýBh'j8Q?%SˡUhK' >gVڕ4CjtD} MfѬ $ ߍe P#芶 y MX0l{rFֶk(TT^Oj|ƨ;3P)j[!̮I!ZgaXZ-zմxf 8'#oƽnhgh<ҐJ|HNhe'^DkIT%Og5 4efNꝚߢ]}iߥF\%C "o0jSOvJ\C+imm0ϬG?eé#gFBlWJoc\-u:(zW|ReE“V=dPƨφFp؟ɵS|T$-"?.+[ɥeґ`61{U`!sX +B\EFjo>C]OS '2ݫ.&l{'mky 3Pܝ7GȊh2F5(R*aq˪Rԅѝ2Tax3Y+I *zEI)a@ؿDGv{g|m*cRqkz8{*pGc]$6 tXj$}MF,._yOä0Ur%<^~tU.?y7p[]ݹO>-1?cn{uwєmnI8]b3u{ym^RvΗ;<~@B̺Z29@;;smHmH "x GWl 8A}+pstmSj&z`:l8XWGFjI_2Yp~ZҼetj"]gRL?@2z?y UIcg7΍ M ?sg6D9y:kl8f=q]25MfB5gS 9YrD߿ ~yBO:7{ufER~Wt7GiՎ{nqI~Nfs֙$Rnlʎ$*{⛄NqtZH?gLP{f̴f> 28291)MHI&ao1-ŀEz~,]c1e ..d#tO)ϧ UC?}I&5Ho2Rd02_^bttQմ`+;I'pB ~G_>pc&x+g>CqHrQ7MOM_a'"GK$~t- 8D~bUY{盡g+[!d[ZϻG1:W& @r zc6v3ԀpߒCS6P]K @Jہ A j7x '\37TxݸB_X0.3+Xv^RnJ\gfͳ>W>fR=d91Z!n FԯMdFmxp } (Mȟ8 G)<,8BEfG[T-fHcT7y-z#SR 5AfpE>kVewzB̚U=w Njͮ]hԍvjrBG5{7Vc۔B*fJn#y?%$e&Kaߙ!SZ?|YiVvv')]OțB={EDKs-L† :Z+W2G#6g oiySj#3 ܳ?>\34[bl+,q2zN :Q{|wX T!y$%/j0"Ŀxp>vxe1Hud>:V9Z5Ƕ4#D݈8 )aqTp]̢+ .X"ir6ynexۇš8/Hlwd7뾳#g9gvv#8)X! Ń[ }4\<9yBhm)c;JΦ^ѡyymryp2Ѫ:{o:7  |I%M&)Sz2aZ| [: %oֆiM[|}n+W+K]Z[8P^*詴|kdL H2^%a }hc8=xϻ@ca:7I7?QMO;B[gЇ=nʕ~h =6-Jʑ<#*ŧb~C1b3ZnH8 L(+-3VH /; .LŻdͧѵboFbwXJq#2pd#-PndID@HHZb8Ql y G h4ӧ"q88D^1G~!`6n.q8G h-G:)i"W+)^{2N5H|VWPZ___0i;i*85hkT(4a97Zmb@V }~ pXW ďW#M~[yp=FK Akap頚$a.p4pwGפv4_T,, ָqsEwP|=pT-ŷWj*zYz%xLpC+W<3{U;@/3&e.gEɼٹrg^OH8]_*,(4(i=8B//dx2|-=3sLla)?!P,.fXoMnpZƝ&hg;u]xK֨PVv/4*EdRuyMRd83tY̴sw[M35ub3[t[ϼ3Jb1|#t6#?~ h&oAZÙNgf3;܏_i<X .rq}m1"Ύ5"S}&f]l߄'%Ocm76qAR.s_ƀ9B'iWi)kӣVͻr?8;x"#믜#eN8V06m_Դ22S L<C 1ab[/Z&|W KIt\5]Hn{\c6/4\LMjOPKH[)Q tg5avKq|nί~ԟKtү7jy%%k-zqiIiiC7j55ÙygeIgOh(LQJރaXW|p@[ q[ް]3XM0@z!|A^,IY8l;[,ZAAh Bh+lrk{< <(|17]#r+y)ը8 s=t>;rz_l.6J{@R87ɰ؆j?$܃n6xL)*[|$2 ߆sv> ;"_.ťb+-Te~>?K\&AZXZznY}'JE-vN1a¬XjIܿ\Kwr:ܧݼ/I)5Ɖ76T(q֚݀R@s 48ײz/:Kwnl<ͣO9\ V!a.\YT^(O~oP5 a>B(s߀ lCw)/T<aP u=a sŽ{ : )q/qG8JFJX;WO0V|Ed}EP1ψ]*`S]=-M(=#"?OOW` C9vo+twSay-ij̀,؏,n4=0mzۮ?`0<6_uG}͵ J_'$%k S2k?dO'BE0H8Ǝߜ w]ыln0K]Tz17՚@xz* O ,pb{==(؆lp㹚 f#=couk-FO|]E5E** uHvzl^1; -x|$E߅dK[ K5gdΏ A N*}THֲYX_kWLu -]fvlUٞ4x%pNj6s~u d80^SsT2sE=ԿN껙3O+gJ=?֝]_D˴82<,as2S)u?w&;c$UHY =.]Jĕ۠\X~yY+r٢8qjlk{3uڞ &k ͅ?%\Dž!Clko㴻[.,@w@{C/1ӄy~w|'۔{ɽaQp;q>xxJ&' Fa74qWvZ ~ 6Xځx) eܖM/d5N%B!=VbV)$Y{#|d9N _& AbQZCtվ$vՕ-䨈+B`es 8AJrA^h gpwvulFsO dcgBam zhG'd9i304l7m5^Դ.^<1m6&^i$՞ƯU42[2Qu&XF`\&'anή38 B8[p0F'4c2uaq;\35RЋh>qU #4/$NNܢSZQ(4;Oq(u/KgK}Hے|>4eăH>_$_ Z2vKn(/g#t1c5^c~đ_vE\Sq'Τ#i|sQ)^ۖR<pySTS 0t-B2Ԍ#R{C{a^sqcf>>dfA5쬑8=feBr _ԿFZj b5T6VGFWGo"êZ };;2gu e5,t_ mí JS{zy|EJ:ћTqF8QW&V8t=b3c(*s4o4 u%48_=-Fd3u|nlXͬs,_ũÐv/2!nݲ#]N]?AA]">{}jU|`t/B(5Bm>68&9RZ}O]6uִ7g M]u KmG]W;,#kiGq{={ڙ^( ֗FOlebzG5~Vٵ4Tt(CtE erxGL1$<ƬigmW]SU^eC|B[FIػ7[4}5λzA``cb>bH6 ˵7UTy;bfF7n bǫ\2|/H-_7她sbMW)v)s3ĩpw4W;iAhЃCֳ&ƹś2ӨsTKo{.)&yR#鳐"]U(?P֚{{O:㿝Sq/_mKoCOR|R&$ܻӥ8`U[YﵺzPw୦k\3g} Zj~3Gt:b-4'_쿍uߒ64[խxEo-}YB.G b:#׀Rh>_BQ _ް__L3Hʝb Pq A?g6\Q%!`&8y($5ړ?t{)G3%7U#hinx;Ks[-_QJmbvb*Bj#{|_#po ,b5Ufd-dY&f^\{ Ul7[xµ%k9s[bޭҲ=)|M^ upICz;w !$ݙu8q!h`Aw'xЏ9gFϺH ߊz[L*ynӝ: DxEѳ8Np$oSH.ҙ 5 062"L|/QP Lf$b)y3ĉ.>s+rЉG )}8^,E_\8U'M+/ 8Q%݅X&'_.HJPK:q fq^А_Eq;^n#gg~S%Oj.2Glg Ӝ % dg[%d(} ##%jY E.~{::bLM M hb2W|>գC07/gsVL%}9θ!nͫ0*VsP=8Ɣ"%;SbTZ$o)t#px=5dq $l,^gԧ=TN tn~].u7iΩUt#4'IqaA_L}qD- pG-3#3*fAb¼g{%R*cQnb~MN)ªX ;I"\E&5x$gS8=Z3F5M9-5_=vC0_G9ƷTm%}k*GbF4ޑd7ٕ(w5lM/ u'*-mx ҥwvey2}pqdgv ړuߐeBezY8t;d_ݓ=)E=7q~Kuikdܒ}k>l EWCj˞Ǝmrd5߂)'Q"hCqD#r' EBlf ;Q`݌y `MPOD ّE%ҩYvu$_>Ewk @>BS O>즫3Ǖ=t_{4*!-.Az+Jhx/ʼntOk B?l,X`&4GlSj.y W/8dF(r#wGDЄH`2r!ޗCAH4wۋGd4i] ֞,0?YǙM4`7\Zo<`tM9[? vHy³>Z^"x:o-?ZΏLGx1/a\?F2S94w@6̙āA ήϠ)p&&A/ΞT')IHI8p8)5u2 SLKIV;;+k4"&Z0bz4ٲss?fM^)ZPQ4yyȊEV=YAVʝ(/;Bj>K.;dTO yI]+0ٌ#,)#>LwL=5["=ov \ یl7ЇG{2AoFn }g^ѻA6bg Jx%' \$|>r{nW TB ?p8GE \#=qHQ:qcr -]4/qYSZ8v{^ܢ-m^$[D>L =1*'?6]h;@5. zmҤb8M)<8pL/:1\n> btA# VP |ۄ ]kjVM!b?045MC8L&Y*WD~H`*H~,1\1̊`xW|9=NOGqo. {\]F+ ] 2^}~njcgkj+5z_yHlkjc`cnl6pdxF&]5UA6+;]a>tQ1 6#KP u+e*<W;h2ܪ5hרTTU:uT]QPtk L G~xXexf5[#KI9;!f^εe_N 3Ƥ c6qS'&/\u,Rna7ikMG|ǺXu֪ SjY/ WLYTc3Fmvfگiu(|2NR]TVS }BqY|']A]Jj+PmRV')!Qq&eҵկsBq}qeG[OFk̓l%P6>[{NK;}ev윴Q/Fxk>!J_ʝn'7S pZJK̠3Wl cIV|+}nd^4"aM\KM.G8MQ|*7 oeHuyݏ&q|,[\syG ;ݱͳ2=3Z^ zL's׳ KY4ˆEud;wbג ly)5X(E/O[TմS%LL{WF'[{g o'F-3m9XXa%h5S[ء@b2t4uM]c'oD4 ;\zz"<SȞT_GFfr59M~!GG"#[ؼ`po`)݈,&`IxD1A[ǿdwM8 t.cxX$vp &O80_F-3",5Yjќ'w9?A(z\\ pͩP;Fh`3@¤;j$>Mc6oU, pp{aa̅F]˹ұו>yv8/8myiq~ 5;OjSy}ȯo8=Q\El_Ô =TеlShFd2MmUa8C=WB !U%őZNR{٪SAWfih UZ.xԶٕrNY,{e9` *&`,rLMK 8ߊ ĶeӛϪOOpJmjSv)1%R)>.E75-<ۉjD'ظM*Уpj77"O˱kttOveQ#$7+kG|W~ c󃵍m騋>¬xeǒ@]'h'!cҼUBJ/-*9[qcɩdGK9PP$ʬW\fۑ2Öth+]=*nrۙ%]k{7U>ZͨՔD1Pto{l|݆z1VΑc8Ґw.,HɘN!7T 5 M?!L$~6bBg VC^M>VW+L r,* X#tOAoa4Q*OQ+vnu>*p6D0rnh n%\ F`B< ȯ;Wޱ~*1_" #BFp L,sCLEi]e/:d{m`uHO3+]Lņcʼ40e s}UOUgy tVsZ8hwT'U.eKX6pKVv団q.p՘iflg7٧kmMFm7rѰݐn+Fw+:'X MսoqZ=HR@N* h2mL`ԙg*c X =06;Q_k9ue}A4~䕁- }otYKřv膟~ mHo$-$"luSOJ?\80=Q M[J` lʎIUH8z ?-r!\SGBLn:.f ЍknW:>IH̡* Fn R%:BL"b/G[% VF`dh%Un~0 wd%k|["ɇQC.K`Vpg`C巉~A|'nk+TeAe2IS#bnfM\>O`w o|||Yfyj*v9~Z[X[II<_QJMGeUwmm_p,,cx#^^OI~A=:O'\ͅ0PHL[E;yf;ok|Ol/llpK雩3Eb>C99xx})LAڣ֪ƩZ;6DOcJ">".;6JQ+1U/=>RMWu_LSɘ9'lFT,yoꡥm㇎sǙO_8@me9>Ts`-Uj# L1jA_FMkF_swC<8Ne7؅\v\S9TkH8r"3;8z{`JR5v<ź[1g8fǩ wpA(o b0>7HXH'>'Jb[zYLcYLEА/A]/OjЂo& P&Ms9q^Bfr~zmε(;  eTUUc 8J݀}ιK( &19&:(O^k{3T %*(s٬(|VP$߁B-?Ll6ʶd#o6(:(Ʌ7ihM8d h wkwl֙>$ҘLSԫ4[/*&ظ^V$'I)D^{QWn=|4WVu1Joyy/u{95sRL8X٣lm!'W/7 MDC)4$#WQyV4&]U-$*rr6|v,B0+qcf1݄6X =L!&69T^d鱓UkZܽ[ɧSۋ&*~ 6&A4#S3[|K:{Z0̆Ry-#!9pSsGL+v1 ?YT.ZImuNĽ=hO?!01=>3[ 9Y>.m&AaY}>f]?n/#f D3 f C^ɣD 8cIz'Mkc0I|&z: j[^;YjoAPSX~z2fw}+A<[ yh i|%׌˥-%NTP*$ |n'لPm@fna,~>]G/H8 ) .R]:9;;GZ=P[m)Z@3BV\WxTXM;_1|W4"U,T"MX>\1XW`X] x%MD#mtAޚ2M?Caq%qmroh { L7l5CO}yNx/zv=0tYxu㤎nq$Bo_b4"XOjP;toEzwʔč Ww0yT A^lAkƧD=#QMO{. a:8I?-={=itQ 6zO,ŻBs31qe?1dy?zy!6 837C碋 <@+SGk.4 !tx-R]X{mJ-?hi43]K4u4T0|rr_ 2TW/X0&Oh]jGdMFk2}sMLxmb:gfobӍU(6TWENX;ݭM4?88A#?[>Z 5-BP[?-kRGva^axTrp0B£;G<EF kHn&~JդL4۷)>JOiyվ>wȔ;1} YI+cVRȍM<n!{A'J[.̓f_67n ّ+qE9Ip L5@a(Cݑt!TOyokg ,~S5.8pcNu*[XҤMENegG_֜{ȘwD/Q>[p ʨ/ߎuQ3MߧvQS\#ZK\|?B.A aV$:PA~,'!U-b0WE9ڙGGi^D4`IlE8. syY "C!U<Z %'i* <) OSl. >>ýIe$~C% mIK q3፰Z ^zv" 3I3 ]Hl_?WEBj*.$3X-{.KiL_r| ?K2mr>Ӆ^oDjVg%(]mďR1gއ'aO7J^\~+DZyB5H9AQjPU'3/5$9ix&,3o573.M"O6")%xC.Xj997(WcP_~4U-UeKHL9VV6fu(]ON <>u ă1 |]Ldds٨F"rk:5}dfy$61aIwElT֮3UKzn@ow%M=\:snv~uq?6[J3 ewII$r}bx' `>[E&9[R1vMcekPb!/.>s,-m]_x> ϭGAeKSKEo/Ɂg.icFEN|/wyb RWa2݄'o`i=.bS0BN>6Eg Gjhޑp*34%L^l/6ѵ.Jqq O(Y7yKn-GD'z v G ;QXGsQH yUk+ό~b ޟڲ&\I}Ɂ5{Q( 9}@#N:dYQƷu)UDωMl岭2we˰&7.&IܞR f0ͨMʏYAl%h &B^tq+e ;((1e1m/NZ<;'׺"H%aD6{PuTuYAENמz~</O,y~L,(~qcTxpv-[XRG\S6s.wd.[!p'BTZDCak-w!)n/*ÜU?Hj%5Z|[u\,[ +.fiGf5ޜIM|70^}b[E 1C*Kģb)*74fxi p_|2GAgi<0#YKn(P"Tvبbk)$*2<+ȭEsY hN ވjq<8^T [XՕlJ=[bn,<5'錧O3I]'SDg oT(}-b0Bt6\w"X'of-JʰU;Fvwum.[jyU2U CTY&\۝gMMiiiAf*մUI$]fn:+Vɤ9ǣ6_NI&o~..+> sBzܸFJ\ƫUnswvl@!v3Zi!}du#œтsFjO/q18I7EK $$zFqT:y3tw䧒.y.|~,K=ˢk'o;_^y,8.urTK o}lKd)<ۄ5Bp% >A\v8h vԶXj`kfL5ܳTbD0ށFtK/ZA? 鹘 ֻ@ f\l畻/ qw;OfqpW^_iƟʰhO-}f4/i:v_˯e/ ~bRf~ax zzz^>;R;5L3W*@Yt&nkKŸϕ݈m }sux @UXF&4ZD>1_vW]x'4 a'NΦv|tlLT T%=ȳzh 1u];# O9RKxq ꉮ@Z@\Ni\th&&~2irޅ ^LmҸǘ_ٯƛǸ[`?F&D@ `";OtD3] jmk9,-tcuNɲlrdTԾȿt}y?0Y5qf⎔V˞%ӭCzfnu8-A',d',Cp C DGw/8k?lڣqދD˾Yh/D:}qw@g|+Yo)H Ķ`Lyf "3wox)PL3 ;#j̞SYR+KA"p#\4$E{oyURU=;s#\^ /Q($JK,=1{\x xV7 F~7b2 uLs5Ӂq]N!b_>@{0yEESy\%yI %éT~%=j9FNC}:p@{/~Q[6neu멕R$e%^MJX|UҎxMªi~~|}wk{lڜ^KE'5S5Qˑ v 7ן W E`6|Cm ‘x,3AdQAWj=:ð@ߒ Q*_&a:8G+sʹ{eraXw拸b-#eX9&{#e9KkI #7[xلE'`#\!@'3MI\86[ꎪ9*V\=LM$TG dpW[G7x^Z]6|0L񺺰KV* #N",sVPq%ݞ'mAŪʑSU0}|wxQ&i74mt,3a?,#㬖`V_qm2G3zB4|x:bsc aSI3:%,^#w⒄ cDW%\IXKft~%r'?泽=O@^ýY[$&4ǐ=5:IZԅ&d42(&ocDnAGG6+qUZuecȞO뱕׽[|oYf֧~_bؽEqK8}vPFPk3+钠 b44*o:NYmwZAJ_[|$Z^P4a4(*B<_tO4U*9QV?W;d"A̬Ai:u'rS}i5Z& xUl& 7Ivڛ'ɍv5 [!OsHOW_cq\0UԃbG|!Yvc 5vM% _l+/$p#Ɵ! \_ꄴstאՂ[C9RM t8z8K_7B(z?O3h}gDF/:E`Ko{5ۙ Qh.[2}M"(7Q95_5Q57 P*"'au#ܶ`u@gg옝x) w!r>~FOb(~NH=sL&§kݳ{Ў^V*@.~Rک$_PYrŒ'#$P^K͉ҥKvbN3PZ7nI^x?bbn5r'q YGoq@_j!Ig6Z1-d˯6yVVC偻 p;#~µ8:>a2 Y5b;d5)SbBAuluW$ "I;V+U LB2Vɖ EZ 5.CZ&I r2FQ>((T%pQ(gɭ:Z],BTA EkLs2iT"6| nH_%.{{G.?p}[+kTrj|j{i!tipY#AK !cB? jTqqoBzo{zyERk.ҍz;M;qq7mce}(ϔPi+7BoΓ}m>"ϒ]8i뤿WRqgI_>Qi5DmMЪT'~ZH%TNmrfOlJItB~A.I#ګ Շ SAPoERq x9pT'vtIvel.a#]XvR+= 9&@\a^HTJ~`v@ 8D`l=+3;/Kxf4[Kw!ף0ڜzV[8Ϸ凳ߠ휬@ =֡ۥk[uz,^ CO`xG^ZwuAu,;lK튃p~:c-u-YEL#9htǟbs'!+<$v`IΨgzN ab܀.[ WUl]{^ g2ċ垎zh i_ ~{?-ygtȯf1|Vl$"ߖ㒊O-`R<.H*X\p)e:^\bU>%%Ip'nQH9]ڥM< vN JhP`BO`6J'ȋRz ߉-dC;'q%hSv6 i3~FzfZ )_C.x#AtOr.Ueh$xC4>P'Ct}؉aʋ8 5eP +-4N/8>pZ)[&:1G n [c"|cC 3(L726x A\>m?_oM1T/9~D{ m!v"]+@7v,Ju 6؃1z9v#:x9쵴6ݤC>PKC[7 ݉sa3oemsE w|hD4 /X㒱_,\0 kJ4"Xc_1X12  fź2ۈKY_bNu{޸\gSkg{'!lm|ܨJ)OON_#"Z:~b匁:u9gN0V|$OH~%+I\e8\q>ᝄ1B>(+^ihrɦ@<[F*bx[ܮNVU:OKS-פ;zjϴv*<Ŭ$$NZSddHh{^Znڴ݉}TXrsF JuY ׂ{b1h5F?P?/Yݭ't*KX'|[r5õQiL9FY/=Ӟco76L-Я0v]O/s{h &PAѝXv-@aT)UI-Z2{~#Ut;=TOya_Iƿ!u8FC9׃?-tW##uuIR,slGct$+ ~~ҟ[?xR.%EJwv-ft,c Nd*xPMkTҚAUaOڿuT^I0 fWuUpiTYM]uWdA U'[zա&JxZ^x!&Fq>cØ6!̑{*U@,0l,%&PB*U0ѥ!fq[CeF wt&}ElO*d~Dn`#+]tLo†cW_t,fsT=|P pWBA6~g4xc;2%0i9eh~j1u4̳&;,I>aޏG=j:3d6*HmCy1Hx)C8YI,es_2HBճ1xt`8=BH/Hw櫅 f&TO:e dwis:'sEϋ.>DM Q@? bVlY]@6vչR%}kG}&lEII}+t;|ohoni% KoYzx_Rf.%y2%W&FQ\.MLS!}: !n,[2rb9qީ&j xwx1o?`}qnqqyx*Oba.S@i[a=i9=t`xWd2Ć$/ZʌVh id!LcWT0L<? s{\[(<] ӕ,-2SrL ;%.2@ޥ.+]tKD;?7&5DE(^p yi~asi#?f_jTKH'Dt\1cgs7azN+ p+];v"<I3Kl6YHHkQ tOclz=\PHs@U0#b|`~6,\Xz+VPGm; ڀ6Z5qq-tCq6Rn;=BY @&$<߈?& ZJEw?WX@ڑ!2+dzwjTwi{;SL]ަ}p3:8fzl :xv|=#5!F!1bꛈJi~K/<蹅pwa3N;NC6x&ɽ)aCMi~ж H9B K žC۷}c^=b'q+SWM[.i g/14/f^FVKd"rO`?tBAx}|u=pc5 .{~~4!A=}w؟pKun\vmt=!-crIGf}5|nȾ"Gm.y+?6 -7 ~l@߰S<.׫vLsF5~-{;¯Gء@ Tpy. ZCV.pU=u_p-jfjKRo5OZLowӿS>Hm'  wMvN3=ħ1¿r#uLyoik9~~obZd5t-,τnOzpgs* ƹ1ć&zv_3B_9 _ A#LW6 CMe TU b|[,j<$CmRLBQ 4p7^D8>яVR? y*x{"Ȯ`$=͏^"C~]ה sy99G*!'S[dHM$~QK* g֤jSOERs a}^_}hƣz4x+cLb1yK*/c+{/omEKg/+(O,^]8o,ږ2=s0$&OXGa]!'j[pCn܅cuFrm%?eo6.(s9C/~V!s@8OqLȳaC##*~zsKN?y)_=_!R[b<˨"[J$.pMJ*Ks'h"Zf, tK%I3|CT6r Nr4DVEmc1<P_M%r{^τ3e<K}߸;9xO t`Ppv@yW:sWyYjx Q0V_u:nL&Qn^K WpMU!^!J;jgi 1q&-e5mJSsNr$K,t̎~m45MLˬLt.A!C3_1p}d~ 3RP'yg/u#j /r;CC5D}yYºAoh fXwCE F ǝq1ٽ,.-ׂŽH(Ƿ~1ï\*n h|{ށeüpN]NSdr9k,W*ե /q%{tغ4vӿF߽bfieM+y \<{)C[Ǿ2g1kP9@HA{wT <F]=FM ߎzZ{Z:`P:naD?!ґLuA|(TgS,4GϹ[:{vYEGfK+H~,e!'rOW:Ҟh퉧R{eN-R:0vB7TW ͟)]-̀/3qTp{- utWšlvΎJIZ\C@q(VKp h3;{A}1InQt)Y^i EYI'|uo BuຮAbsmw+h |S* :jëxQ7*M1tWbƵKxgtƵ͖{Ï`KfBNΐk)8(x9?/؅1][ Wc)= *TY-޺ӽH=;Cw M'~ɞ~ja?$ e IN:&׫ۼ9cL ?f8jX\r-ӿ&ln4ߕ_4#୙\Ne )[3;'Fz|L߂ŵ0i^ڐ#L!CH˚u9ݙiƬى^)11AZUg욑/ay}y &Hlմf-) =Fa:ox9FN`ELӘD[$o D!16P?Cn-kϽK2Zv~܍zǖ8jS<[rjX׍x@.?v,ş=Ė5aՙMX_B"[w6F([?YK z.E(B\X V qyf z*9 :o9= jI (dXH%{w?~AbiĦ ⬟ V-ԉb5kL,:"([əz%b2y۾So.Cv$>>AUD@{FΩyHCSˈTN-?_olk:n4O|~@CITkĿ j$]}jbuO&d0@B2L3a`zpsd:6"ggp-,OJ(typ*sۦ`c HZv:!J:LP XW 5=9h.к6蔽o^_o)#*T/J|]nUʃCY;ҤP[."KX&< O*k8NF;Ƽ+[8v`*4e6+`Q:>u91T[r1:j,2Q,$؝~Ք<#snԜrS2 j6'4UީUw穹LvtKz+e}J@UpxOޖ=aWi-nrR)L6}b7d5yNE=C zZfy4GX[== Gܷ9'.[`n@Z< An㤋~GOb uOR"y@7ѽsaks u,~pxP8ė)e Zˍθ =:syZ NC!CePg3Va_`S>t5޹p,nĘM+0F73zޗ)!V.n.NL\]G݃ Nڠ MfC#މƘ?O&spܜag(ܠM=ZZN&-us.r/D$1 -CY[ƒ<|yAax.F>:,ox˔ʂTUM) TI#Q+Zr2/{Vh_SUHkK!̜}&)Iyv&d ''uT\Duz5Q6K3BԺJWzy[*%mp lx݃Х5r9qN~&DeN2IlW%(Frsג[,/U:_~vrøLoF\W!fq_a -?%#1Yr~vRD"ajXJ^CF#2(Dzyomoga,PC^gXRXg*T(؂33=~ M%vpl!̃yE#f_JN HĈ1D[= xBMr'?ȶ'"­v`(@G< 4< ͱNy68{ t$# F :,0z<81ۙcF+Jvf AG,A\pse JDP/Э0 C$H 1W 3R&ZtZvi>ڛoK5{h}Z@O ),wKALۄO-@nkݎݱ~|.];+b} 3)]֒NG^`d0v3zF%Յ+a oacB_i>Jg4N쐿 鿑%_!tKd91E [pB#qT\9GMc1OVzjQL?:X`a<3Py(ૐЯm\tHԉ9@4^E-Ы.Ŵɰ7qt ogp% .Wq?E\npG|gIT@!z<8[嫲ӔkBrSYM iC;2#|TӻG(̀;0/?^ZT`|LY&&H;* 7'* JOny.E(XW$n(fla[D[ |4=|)SLr9OS̽($3ج5֥IG\xA-VO.窀"!|4ڝQ sna)2Qohf1c2 i*VxˑI}dgǬRg9+Yfe9g%ό*e.Zi*4CFYxF|ڠP4+iz(ހ3WhjJt#KC~ -߼6W΍bَ.;@'aK n2o ƫX-YM2<Rz44s=͡ \:z CZcSFPD6A/mg$h|ZcCu1?&4mb4u~q }Ce:7 "Crh'{_{oqT /|e@(yFy@!ꣷY^yZt-|+>mgT^./$?pQkQ`vG pP:Cow;hm<;j' %XBa{}̙7g_2̕Qj]ilu8W\۰_ 񊹱͙ׄ)/7DC ]y7}l'NҴeq_r~ߕioyCg)U*fg.Npvm@#pKjeNl)S#t9]H\n2^ߊS{^9|ӱWvNB:uNB]ZWnz*!? PDÞ|]]7̘I4nN5VZ:%%bC=H%8Gs{t[l͡ s3҄8#^*&ɬ$Yh+bEs.$(;]BJ{*3? y_XOOIy邅YZS]}63T\}5Ʃ|;&j'||ô^סQ^ 'jšց>^+|RMO 5&ы+kck)˲\zź )zTnK}P9]stu==MtֻIfeY I5-9ݓ8hȭ%RB,ep'-P~ɿ(]}EK!_&*):]~^kI!KCvٛt1=AlZ,GӰ|1ӆx "qfDBi}j|h&fǷ{ 913 GqS 2kДo{!R& rumϼdVY}f 9sw,`n~a6vir>l_)Zh4|᣸x"t H/ ,~%l(^Mu6Z8}VrV$MEғLr.}.g[il1VB87Lf3wٳ-&u4~ÂxS=| 9Jl2,MnNw%^٤Ҥ694)?)wkt.p\RmckߖHidZf~/eeyP9 etTgq-Bq+"h)DFXf ! Dq Bq{P5Y޻{>޹ ',*koD}<-qA@o/"X/t.3@G<% @n>}N'/ $Oc{Wz\?]ޣ)n?P݊K&5vHa1DYdžj3繎;c:P\@MӻEJ;٢lR=%Bޭ}?Swa :ZmCӫd>^D?R>Gr#ޅNѯm,-t!kGu E嘀«ZEڦ$g5q}O-̪eGFSRjלSkux=,gIa+3{&)7)0us栜zY %od U'tz[ ep ʝXp`ѵel{XxtMiý-oTk:ӎAZ'3kرOl%^B{{K',1O#'0H,[8Pc'\@#-?"b^{^ܶ,a# 򓇥q8hfhi_g/r z,<ʬLf W^q|$JgE.lXL,NgE@:![JNB(㄃3Tx=$11yMb\ga4)%Y0AnnѵNo5mErurm]h%w]d:FP wk|x] mN8"35qTŃ&#T/"#ϡ;Yct؄m5/0I0m7i560KwGUb/qRd%A|T|UXnb:_hsΰYi[ {2'|&Mn哄.E`?񩬉h#]~a'wj&Lc% p%ӋDR 5&݉(.ER6&vouP[p& A%zPmdv`uS/ j:] ;Rv[k_6zUe3G~u/7͆Έ|NA0Lk9^#V:S΄SC}aOL_2{Y3@t$n̎G)t9c2 =&ȱ$3ꀜ;MV 'U,^oc{-T"/\U^#oX@si}>4zۇB)3{f ,puVb*փlaW4 B* ^Cwa@v9zmʎHWfN_$490 0J2{/UEQkn ωNJ͏'kbzSEFmY]K:yC^'](_ ?1%bA;qgL > 0ǿv ,Ϭ_'m Fq#׉IN,ΦkbcYMRs4ԧE{9H+O N%r6Jn.fv%NZ]ȮE4kAvv2n.Ɩ(Z-gdٖ:`'p?Ag|dTሂcEM&eVT)YR0Yet#\p6Gwsp)L Tx,~\bs?cbpK%cL MiX]gDI{#VC>( B#O0B?MXu1F8\{]?9+zKgGWvM1<<ծ\C9%&RCO 8gR˙J~Q }:1qHq0$U؀W#faى98 >D΢`/lCXXr̴U܀&<&,fHi9=JgjЍlMXli)%.5e8sٖVhJu>Nb 'n،Y^XA`aM`5Sbcb Ό&{?!]Cx}" ߌjXO.-(uEWjUω*FG$٘c,CH/c`7$ gE`Xux*`4``H??7&W`v v%wuP{{oz8۹ <6ݬ1֪U|'6X+D !EuH~#ߥ&.Y.'r|{6Ն7~TɖNo 7~Jd#Hl6ق,fs՜ 7,:Er6?QTD; Ez L#m b/B_#o_Y;3Ȗ|a%z!QN̴G>{5hs|ofWF~TCK~DLf .6'a} oFB\$?`>WAAAsѬn)+X5Eȧp#z4WqgR?Zs܀0#id(nHzj/JY]Ij Rs'!ٙ$ ³[.͒,5jEJX U<οED2 mGIDW߁#P ?曉㕄 =L@ȓ""YX~n`#P֪lj7b:Goʈff ;T`欄ֶJ }`ad7Sj8Σn7u RbN}P1_9~@WݸADa+E.n5oߑ3\ {D'R=ARש%|E"&ZNK%d y rKW{Gd4I: 3原7+kK>OJҜ`+؟S[d3ϑ*.5n.XSzuJ蔉F([0.koL|*v)b{ub"?|?zgŒ\^_AB gĂ7=ЦcSڦxEKZi|%c .gd%uG3ψ.X9އ^ņ(#$ >cNd,6po3! -u?)a+?r][+[[iYh* P>'c t 97x_[Fni3%zlԾ~&w1KĶMDB%yzj v'3E؏8=!5(/xawE(}')M)[Bu2Pi NT{zT'P,LdKo']Ƴ'L8UEkaƟuAh$Rg>p:;CW ԗ>@ g1#6uE{׸,9I'<6H[%o \g.n^R@7 B8DK[Ih2 tM Fžzu6ry?v!k|#fGT>P*qit쏱tA ( G:[#`# gxBQч h0X3ݍ#W 'b cLK={N_""Q`5pǨjrx|I$bY3z3&PR8 jAvg(_9Js>-uI.7\,)5/ϑz*;(/(sR1={1P0:=i^CgYw~QvY߰9ls\i݌Hr1^fJ"j5NbJxl ڏ+tv:1_,ڦ hS`C ,9L]b챻Zhdth/]].澞*9-g:(fxK:.MJ}ʧ38y\@~$tmثbQĬķI>0p_"}R]Zr8P &r<,oa| `k)rG-h_RusWJ9F;yم%I/rB$?O.S&8mX1ޯaMV2TE>OOx9҈HK;Bv1qػYw$f[́jkE™8G|ئ1c̷!ǢsX[bԩe]urXKF/-,=,_K_@` t$dx6ev6@r9 mY^\fv L脠8U(z]M]\|8? _ |17T)-0wI!Ln[-,yW2Tco!ߥzޖ9Rp:}q4-gyiܚ5IZ܂yKs'ޤ 2F'/J2jG$fN ӕ?]ҧ+>1E e'{wdE#(|6:\E}!"ˎ㧊+T9i_I(P3r5ӪFuY:,4RvbmPos$21if N"oDvWC& +h1%۠%gDF~,5a]H%Տx >ߍg,jtp/ >OB@ ?9uqfc۾R65i3DflM/+̷gPRo @rø!+.~1If[)ł_yLFpGUivFE.6+4WK1;cd=eϢTz%esEU^LgFIN`RCK+iYr$OAC $e YcyASLA&| er`2%_ EK&5JMxs3_-+!s5t.C8RR'O$6MbW׋!5PXDȲ.~\@YI_*qNCY=Ra}@ g%Yair:'O_~SOS(oᗰkAeA:Sb|;r4 ; V xbHP o@ƞf C` F?"m2st7/`IӇ_rJa8\tIMsx ]Du^9r6 rq;q唭4AG g.9 sOx`>: ;Iㆋ%t,N5U鼭ɢK={:ެṻW֐#iMReGS'+ɃimGvtu&98;mI&KrK&{S}LrgSR?ʩ5 rUh>!uӂ{Veԋ<er;aDggk1{C:Y!K utGqww !x!zcRkD 4Ui7"c^a _ڵͲˋO/itEe=o.jSrȚئv !b+ v$vV+&Q6q fv˄q^IQuRoIQa?r&*'ht>?c/@ HL9v8*eq5^N'=ȰNoZķ+bk%8+X[_mZG][pĨk9 . iTGV~ȧ6Z)S";K1Lv=kiCuz"Jͤݢ"R >H{*[#\rSmlgl'>B[Uhs G-PNj_̠ :OllM!Rx]/#lcۓ>Ų'n~ZxF =-H!ډot$J|rnAp~iևc讱 iPB#K Eh79+s۾Gl2j␗PX$8N!n\C{!Ubˑ|8#~@aW|.t Cwfg15|xP-TމӅRZW)Ǖ8Onb< NcsgWCfPFޜ*э7[lfQr~,~03*/8Zol2DIcRzkE!>nj. ]lS*e~lNX%<_coLQ' 4H}~.f˺4$vq-#Zȯwfnl=I8k} 9Zٓ/7-K7.[伕ʻ>e h *1h.6 CP*,U 5YLb-R}aێk+NX^ր~!g/U~&u 60D}uL)q~ʹyR<[j◳0u={IZIi=z펭v2)W/TR< q%<#@G|GVh\.\Ey,T5`&J\4#ZC%p0,T XPQC TLuē0lUf,m5UjTйtQ,%(]tQ/'z! %v8Yzrk-HiخW/H[|QO@ۡ_xGvsVS{k;x\.!$?IgC6}68w@F7X#.(p2 iD ƈ\ဤ;8t@?p\C.wph6f ;K&0PeG9VHG>/>O)Bd|9+[O(_2kdtybyXwC1!i`7gz,>9<9mZb4S?zyʒw$ܛȾ]{^|*n:N8:s@yb8IcSnpJiIk7Z{U cc҃ǎu2 m[9fɼq:Db&Y\&ֳ13TZa2!Kz /Ļ8x+R(9[7&OJ-bMB4uԏD"qMWp /5Y.ƨNez-0EG"T(ð"e:NFf!y.ar+zgsWSv*Qz䉒jzC]$ Njm.Z/@bK|; QTTVW寠8Zj%s-; k8p%y>",7K#0U,ȢXJT'G崜%g^M׺*(8pKtR<)Jj=V.oow^dֲZSGT:S m Œ7Z$ !'gVߌšӉyf᫽#벻e_%cb͉ZIl?SoXbُ.0b'c1|r|J}h&ڊKAD4-\6b-q'sC Պb&{^ z@ob;'=ЉX^ bo0 CT1d|@sp.~G]s>e0D>&JصBkǁ|Jd& m@sN`Cw{b}OYjv" ̴yðґ1} 1xt2_zԪ޶;Od^ʸ%C($rE7JsԖyg8;:dQ-اڏУL{X?.Zc8Z|ꭙ7enNuX=#akqA^I~R2`@Wl)9{/ \ 0RfxJtTU_iZn;&$ԭZ^`oI// 6VW5dLS*Kݠ*p'UF#xwzh%4YQ[d`&emBj-"SigN=*u@l巉դ#,Q2J| v0|t&ͨZya1'l0"n}p}ts'%>9p BG:lɨt*Ėґt.ɏp|!b ޜ^KALTwb3hb<6¦at SYhf Ymaigaxp@;3N R{ad"a-l6B ZAD0uO+HG7's,󙎧s](@+;a킸(ۖ (eؤ~[nwVb{?7u>1s^1;/=ѕ \Y^%#.ajD=&zo'.椺-|2ٹ=ҽ¹v>V%M6+ȴGݓI6j.vZ%ˢ3&_~~'P+o6(w_L˰=֦>دrOmNz1Iq69)cyrEAe{W/PZ*fAioHcH RW+6ৰe8&5TaٍuŦ'h1{=B,w>c23s)@P %4r& 4 '+cP{3T1I"@ uaX#Ӷ>խ> ƚLWNxN(ei,7?pZTXVYKPU\5V U,/ȥ@NF;'_ěW,(EyNPb 678Ѐfƃ-5sf3t:={xi{m)98(MxyK#l6Qpq98Z:m ^$I .ڨ΂[c+\6ՄO?B:] (xNƋ&4^Jll.A#Ceqd5$ZN`Ix?֚A) π2l<f`Fan%{Q-R$>V"ds v z'좦XU?i[\Jc$n,"'U0:SVwVZyjZ yg3'+y(~J8)uصCf jyʬ1iY 7emL}fxO]ǟέ5sS;E.IDd=G%sus&g6H_½Yqh[~oƴҝ(AjOt7)yMt )z0;$L:A/f1TۭUW7 {B1~36g%O?-dآӋY=uJ+JB8ΥW|O%Sr=Sa!q7$ 9?d}OQP%E!I}dPaD_d*'Ci:Y ,Qۀw9OIӏ_]nlhc>S)%H |#X"T:=DѤZUnowEuG뻍 rO"UZ+uQwe4'+u|KJ΀@*M:rL+a?[5Ymi,.JLIZz]@@qbVBKEX/XVa֎$]{][V ;1S=BՄCh2Nr/:$0 >+:Jt?rmZ1G#rz>Şak h)xJ!kgO v"yBBT5w$iM={p9dZO^l~Gw'.!xKt"+"Ow1pWFQjGR]zCǦ͛A]nܠ|^~r|+\?sWs}Î>-S'fk]r;iOu jLa֪lk?g[22'pu\ܐ{4?ꓮLX6) n2dv=%V*aOQ!:SqbbeEJw.WdXzy+ezO 2d2Z'NC:|}^#AXюEurCqɶdC<CXg r!E/ht(WnʷGIճO署-F[s}1QɵN5PS+0on|59EUguTt9R:RHPl!wl]6M9)J+#_#Psmk*Y/h7lH!K8(j/9C)`T(x{QV/4quT-R4MǯR(#ty2O9-]+W Lr rAB}Dd ZT*VB-mLZg?&g݆\>hv}R L,"~3N1?؃GAC rB$ތ4c˱urwhL&:#8@bLq1ȑ<D;eF|lK̆΍~]_upYL )2kb˜)ii{#ݼӚ4(7Nehq3|HwumQim/ j&Jɬ`Wn O?sR@`Y5ҵY~,͖N=R_=N*jl@J3B[=Q*kDJ,=SkTyfg1N~ŋ|D1{e,&C <4oJ`  3M5x4xT>q`K4YH_h)LNjH>Q)Xl32]1_׺Zhz+<Z ʵa>4N"^L"Crl9 31X1,+>UjtkkT ;QqH墍71 z;91Kl8%׺z̛[?&xP Ջgn]d.al3rJX~bQy\50:/ؕ?*nz Aet2b)D,an1dK0CcI=~KQur>s÷piBoP0 χ..IgnoҢv`Z\#(-fJ?Me쭌kWۨz?Y-Gv)?>ǩdW/ 6A)POÀ_=ܒD)KÔJzR'Qh[Nn}H= od6%IO`T+]|+ Q_+[J!X5C}`,T>2/ waU n x卹 t-~VŘ $M[! fx;І勮[x aLu{}3'*j'p?;B9"2Z`,+a*thy,Lo9׼p!Dh'ےDQ+_T[3FaF!9 pI,Iܞ9FSߣ̭_?s exSE}@qha0PB=FoDi\6uZw(C6p00={Np/jTbZT;ӏ~TlKgIQj$AJ˫eųWⳢ"3$jfiE|6OܣqQh>ZQq|gGbTՌ S'C7an%H {1׆IۧSqz.C=#?ggMnO{p3%$?\|=$4wr/Lilr2 ]H!t*4573Y.fa32RVQGA#ϔ '%?II2>q0A`x\<%AFE)7)>:IYjCC UP'l4OˆCAybQ]ʴ_x xVKj^ϨQP ơrhzVR$?JHv(^ (UdiXה k@,d38 `.nT)uEM«e˲S.(/9"Hǿ/rW~32S 9-~>wgG=%}k+[~wo|ʢ w`[[V;dܻz9&a(wq-6*O-{.;:$J‰E҃>_Qc\| 5Ɔ>+h|^oZ?>|Qeu!fD-:8hz_ޝe6wRSab=jv&Q.oZL3dŰ&(mm-Z D+-:jߪj&-QRvR8'$IMW1ʭ=IAxN;_e;.vU G:5%m/q/UJ3V$Qu*VҪBP1ſ0Oږ 5 i;]QwNm2兽]Ý=ɃRR^Is6Xn:9o뽷 @yqcw|o| u ە95u{ |X*_uwxhJXWXٚ/L1q`bO tN. Bƀ&Wtx|zX. >+7W77]o %^MpK,{ޣy4+FktZE!A\U%ɥVt Lm_+$d|  *-Jퟻs7kGRi8KM *b'3BOWQ}ytQ.3Èx96 oDRs 1, I7I I,OPN- %$j~ii:Bmb$Kk+DrŭLhzCh`XLNdAKA)trFƕ\gobT~Ʉ.Qd(x@~Ti5 WI@dQ, TjuY$*3IϢAN@r ~W(9TM b|ڢ}r;iAejzftE4O(K?ʍ;_<(_ `zҭ}QU];S6Y #;A2 tZ:ɒ5U9ƾdA x?&5| M':4%uwg6柵 3uϰ6NYS,Lgny\yso> O\ZJgXHc,::ݷ‡x/&iG)ƪZG7$&β sLZz9⟖7o]]X:PW`Kspޘ;\ڮz>= h CM$,Շ&ZmuQ1GwWU@_5tj= MJ.3y,B.UK--Z=jZjeuղŠ+ۭ޹JXw鼚ZjJɝX#4c嘜۩ڊ4z"1Kj>[r6f&fDi^[3Ü, 'k '?zQ쬺b0n.\OՑ>B-ͺk:rt K)HN&nGZ$/a[qj0#Go$I6Í)LIfjS{ȓzD= T|"^ r,@}k>Q r,N3^Ӥ$#~ Vp|ZvCOzL2OU1RHL*d)13&K׆7PTx'qүQ-*|f]+D ?xRTT[T'eU/-W3PQ$ JN}\[J9֨Ⅻ,U*9"!^|o]jWF`et8*|dᅪVyS)nyysG_$8nWܮKB1U-OKe 4/\2|EOVs,E @cuJd 8g9':9@&Ev{C[;|4o)8kas;z(fDۈZ^kҍ{ DR+`v_ʶwaeWj63A^hVKqK-~?t^MŞ)3H8MීC Au' hhV,9Lܴt[e+|Wwo}̺k.WZc4OC~^ji1_wcL7JFNT8B51(IRC*u4֡!ٻ|<^qn,E? t1"fq3A\J=#x3&?YC2R7Hw!R_q[L\mDǮts᭥8O3Cng]gjF+ddrBaVQB&_{tpbݲ:m a=>NJBe#`: <#:?,- $p&+>**p?Fp{|H,B,|݂'|<' wcne>oxgf%Ds/geZFO7_0mjm/3"?x`۳@i %IUW|/{Ykӕu}U_+{F5Ny6 h>ai^A_5>7a:b/S%Vje36 b E FKpFi>@+|*);p1;9naq)-vs,sLy jnRIm$!;SމG1'&)P+~K ood;}9JSӇ[лreXݣ4!o="+gU*ZKk:V& mfIpnď$!V3_H}L  ^p7H*(R%x§wu-4AX-Wf:PTXN'ngn] l/e:C=ԇCS%;vqXge۩XLWVbJ|SJd#c{+ſٮ's?b!gxr>?OeZ}_Q&Q#mXjij2d!Dz7JNKj`0CG]|>2kvH-v K &Nz~3(K}d\ Oi~YcdXئRMlzpޟKתÁ{l| yHH53~,ۿgmM?χ[>䟬|Q~n@Z{z[Oy俵8lUm5UŦeتrD|Qo4F\sZAZvGEB}ޚWo ~r5F1ck ;Q Ƃ 'VI]TK[&1+R$,:|-zZ/ GvSzE>%$=[rld/sxjMkn)0#4 cT_O^:;k,fJzf>RXME7+Olz68[A5/ǏnkK@&otk#YlBNX4CeL/a^X;w˙Jt=|UQG74x;5E&)\gi}I!Q2hKk)act7B^ҵnS^hT5O::יs{.Ջ-bJP(}tPƫk7ڀ 'J vF I&im*B'č4 W$$ĭEEe"S%ǥ"E|D" > z8G9OEHe ҭ|<آXOcV$;$,z+",%;r{T VF$#Eҝ2HtvoYOY).nZKWt$Kf/H W ̲7|EK'[;[np[s)CK }'lW = h?jcI7>!$|r{" Q92 U<-5.FoR]oh7`0Va5kL(QK9Gfu ~R$C:Kٗg+ !1^7eB{:.Fgerjm@VfcyySme3 M͡sjJLJ!ʘg$չ)^ؐ88!Mr[g}%'OCyXX/ɂfA5=sU1j m"ՎkZgܲ?>7GvydS*c1L,`VNoyESr iTQM^e&@ !j6Rkx"1޴Dq u#.@,Fơ3-?MfB7MFz$CI"mX'"@wS[ 3kzt_pC1 <쁢 {]DMS?1 HdF! } .M, S$抓$O8/>@"V|?HhA"@s>s/?@o6v *\VFT#mX,QXd9;zv9'a8<g<8v{#8}w%\~LSۅ[6Hi.ZaMq4eJ5HԋF;,Y$j?sCvDB,}tNbr/G%+"Ɲ3[C`Q?l ۣGI8UH#5)m{9]#;M΂H/|3BP<6@‹Q*ݦG*g9;CmQgFoFڟXXZ{ZGyb>byl>=b&B 񕒪}?OA]WM  1~yX GJUn"Ft#,s%Bl7`h/lx̜F0 fq2olfEmp9)e7 H>QZ?Aa3,Fji$ӀKWQHlGQAP%)ƿ =t[KC _U)r@f翔<gJ+V_=qDn?%׉@ddp8QrCF2^z\HO],+7-1J ypI!sOs&T'.T߀cHX\uTmRMV }խ,vYLyI~=Xœ茪\DP,e+H"^?+#]Xp&zd"] .5LeNMƪ6"w:KP=u (i oMpk #m}-IFCAgkH.Hg3%0_uy/ 򾷥0kXugt]_6L&k< ?:9xZ Bf;{W`5D!TP86-=]4=r^ J\AoHtT7xeSlَlοPPJ$s#y5mЏ(q%blC6&Q KQaike/'A (zyDޮK.9| {SqZ\w +PM-{sroIۤmaC7\E|}c)ys{gO: ;-`҈ sB#?q{ݏDW$n^o8LVsb_"!CbΞih^m8E%^Wڎf71CU nN2YTk= ن"}Yl}YB{ua }1p?E7E\|gSE}H2DƓ@Drpשi[O#ՍDcP LDmyl5To]Cصޑa’k*uu2ZlHT:\8tϴr ^ƍpʣ7/wA= -yz)P FDha81!~#iyePyT(95>,sm!mioz VG*Fks?9.j#Mz)իpU7RsǺ&{>RP嚲%Ņ+#E Ł+J?yQyRWZ%Yno;XKS(ʌYLm.Lo\^ms?hW1joc?c*3S|5?̑W/\׾J͈ɉ$ٺmc\Ŏ-rWm* .Trhxp[py|aTMxMSl?pmeʶ= G z/a-z#5ʨ(;QzCeËlV;ٹQx^g8a#&9f]zζcs3N IlwszGUDf7 h3׾|Q6QM@3]Ð}7 |]~J=[VmGt"Rkc)հo %&Ek_rzיR<ܲ$)󜻓 OLk.Y]ZUbK".)-۷]g~ {tyl흥HCcz 948`RE_{OL͎' 2; ĚTޫf K%IrPyT/kXItDg9,:; VfzY zr8-"\k,M[s=atWOPſZN`~'T1 <CnIבd-bAˈ4*g6rϨ @9Jz)+jDs6j$$}Sߌ jQ \\MNaζ4T9HWUer,xx;E}Mr撾0zA#75́.ko_. DcJV#^uH$jkʾʓp+諏({+F\V:1t|upo9\&vؽ1ʼ-}%zƴw䬪o|ߤn)}ӛfl,+ԒvPF*J`:ubfʵ?6$5Ⱦ;gM3+*>QA]tItL|QAua;MEC CpamQ|$1m=9:./7o/ O OC[[jg.shԤ*[qxA**iیto5gI/Lo˿gDg8{37u#P`FL(.XUE7) >c ' /s=0϶%P.Xd 9&^X/F\74~ϡC\*ߍlBzǑx)f5E!"dn_(: jVW'dx]*g=י 6~ OCe3l4IqjP3"UJBE:/?Xf[v2q96.GwCma/eqq1~%Ymb-6P܂AY^lg~ EIGAb7+O\#ñ\g_$}9K#iq<'Pk?ѧ)?iR`6pKaTmޮo@'>TtG%s:LvBU}#b'xEܢYذRlhXۦ eZ-^{F.׫lT.>4h!`RI\kQ9^ˬHqk,$ӘF/ΩdS@[Ѯ/Li?~Tu$?͑3cNϺ=0yQ ل)s2NfHKfK"SӇgg&U%/%J1iEuƱI-T^P`9Y*˻OVpbIu( Kx3}ue[zPkEYA0$\\RpPW+s`+HIiiF~IU_Ѫ|IpkJnFV)~3FDeDl̞ahK3.KJ3Ks{sX [%S齗w.oBS\vұyVKe`IPY ,KRJGv )w+ی"tPMI \uB3=9:aGciVѱu:u41Uӈ;) /5*g{o|MԀGP/ QOW9Wlt 'O0^[`.Șt"vZb}Sœ.<']m3mWkNyb4wkMv/M \KOgͿ.3|Dv 4${]vL&pcyt >k'qDyip0ӭg!f|c]1@;@Cq#j`5 8ywF=BCv10~t!?5 Ho8gnfn(0uPk&ZY?ÐaN*F{ZN2TrT `Q ]0}=v8weL9T+񧫵.".ĕ J;/="dI>Jeqsש&o.OMj`M'B+8:(owC3G?KɜĕV\+XJf3|ϔ9|tlR7W2ݚ%gM,%F s8n^}.:_U䷼p\X&gEO=a٘vfWSRwE$=J}yPs4j HgzV~(AΎkش}1\<`]Byfe>@MljxxC^[Z#sO%ox1sD tۈ.*$t ƕ7QDyC>7hn:p?KAݐ|43+3BKElr5LW|9&"C]"  ?scd{qP$< .dѫt>Σ"#93 tykm"q!ST/2@i _\5y§cXQ)/ t> Rٴ *0Uy?'KjnitI\vJm3rEa!8{TԵ_YYUr/eP7ͷ ]tu e7eث3]tccͦSYӺmx 4\}CӍ02z#0|epG|Ʉ^?XYC[,v>C6:%DZϙ|ҋ -]||bxNw\cz3sv`9C̦{q?B1~z%K-cz4NU2z9 ;>[btrUl]7WHCګk Ƃ}t=XhtL " 7>$0 L6-0} tZ1 W(̙p33l' Փw1751)u7`z~k5 uk[qWF"<\?x&e+C \I{|mZKcəi a:,# lC$iqM:jʧasVx(ݑ<XA=.*?ΦFMzBeYUBatPOwzBB% #֕'C@;#X5Vz JO}2dnԅ$e59}ECN[Ei<*~D#/y(A}ox?=lr6le ߂BEF3To[$U8黇CE(iWy/|\!#]5m4-@޹yNy_<{}M=Â+9Lu W=D/WGkc+]Nҋ u50O2rϚUgd,\G'<sf=cO˿ngvy8s9POf+$^.(ݽ~Q%ӛKWf7)c?'=Ѓk, py6IL:HmSh;ݛE7#'pu޹&Sao OTGț^je;ߺ&>6VOut5SɔZbae7 .h>*fψia`u.zIML 9/8W㯩Ϋ5kKJ k8Lj6qƱYD*@Ꮶ"n&9򃹳c&<+(WM,/,Q䊿=p?]hv*H~RNҵ<*wQ+~ϛ=[5ゔZJVRŬ1#4Kʑ&gNA_vWְ/d}%^KF'O%KS֧8IV I/ofAzM%t9;(iG%=,o J~w&IݴRuAtwv9se]/~h+';g$Ke뫮(8p y yiIimm`->`8F*u,h? DliVʐh#U1O+To)U /=PCh'uw#Gkz.{K$Ɲd9*x_\<v% #z b~Na/]E6@>ؔg]0Ryx71uYWwj\zbuQZ~BϘ͘Ż`Ñ s}EtS_\V_em $J]=]|u ]%՞c7߲Y a2#1|z7WXpC|xR~gѧDǩlہ{a^|,F2 nBT-}"Q Hl=:Th j2ؠ\U}t!!ظC:[^zrr|EyyJPS5j?rnז7P7:й07x/3 oHc;ƴ~$mcSKhZehffb#MmwM/L5m&f޶}3ŞLsUoڲm,mzR<`%Ր (fA= gCVeoN}wdo#-8Sue񖅖75Ieqf+oo ?ӛn^^"+MVͿczF$^rDgBn:zw+*a*8Sɿb#:NW_Ѭ}ô2G|+!W3d3? k~kFENnrG{d\ZfqZ/&b`}ޟde @Ej4&ׇxPHGlInC xh L m-._3-=b⬲V9PV , IV:ƪޠ<(׎W~L+$]RPwΰȔRzEUΡ(G`fNk`v嗂HO[}ZM{'FaUiSRL3u[EJRGM:"v'JMz;S_i=D{XW`7}CcR;k?ǸjWykyY[_rp:2EzEHcm#kݽh&,.htU?*n[EѵNy3/ݗC)]D(WBԹ RLyvc9;jpKf%O'uMe/:awY`L15 F:<øưVTzG]/agH)MA!a$;y^noDz~QArt)ubCTN"&gCK-d:[w[Gt2u'RmZi @o `,P*r,6 --+C,T»:jn֡A5?< 705   U\XJ M,:Q3!/9+Qy3lDf+=8H`I'ȵHɟ4&{tHLLK,r<+4]׵:;7ǚvvtV94t3q3;^5oY g{lzf/WQԀ`.5Nv+Xj?$5%QuGZިΉsO+Yֺ;;g ^k4m8a&>;7?>%j-k+ .Mt3;59 wg  $ "#Hk+.x+OS9шM\ş?7_ֆ.Iݰq, 􎏪nOD+00G|=Qvyu.sl\;D#GZ|`WWQJ[~5'3BeND?IbRtԪľw5W[kնvOgxWza`oogʜmOpB! 6zC[C[G896nT |!*D~v,Gc W 1G3XGwyIB4+Ne-5 0ѱ(,U4N~^9R=Ő܅SZNpEtv7A:/k ZK6e.B3}'lLH^adja}NiieXe2JzE;V69g P?,qk}z晲MK& 6u}dq,9"y .)e5OKQ$(:s[8 6ՓU^SnLQE &Ko+BH4'r,;q-qKOq>ssb`?!ŗ%&/ #[q $`풷7]+)i.T:hu uJ]=2ҊѼ) ۓ']у1b29p?h&cBᤇyhi*=\Typւ)RAK5/5/j.T{p K<*i?+ohɤ]⢣XtZr%naʑb"3BFUTQ*)WU̟Vls^?] _ 5E<a1k33E3D L~1֙WP/C:fXUJPm d^FWb?uI>ISjF"x γ! ɟPPcto?4= bȑhE[.>,191&&~v2Juy X^ 6,W{>b%:,͎N. %Ul$h2ETIjRvUeGe V "bse=ZUsiڭ,h:YpV5|i\ۢzR>FKb< Y3'ceRZu]ۢC3-M~B(b*-c vw(W\Jc\0X.!SoPuŌ:a)o)>ۭ\#4ZHzs?wy! ,5ךOt5tXTz4@kxyA$"Z?ʛğ?Ŋw<`p#gI,w$ k_-=cdV3hUU |96{j IBl%܁SjIk idcI>8)1 /3=ll7َg?G.F~ m :$CV_?dϹ%I@Síh|H|C<~>-2/9azܪ[gOH >4"WL,8u_zPU2r&+=[p"%b.+W}0Bn>:WCُOrVsܷ.UQ_S3oU&mТk ]?`z܂/OvN?#PP({eCoo)11C{X1tzAQ=X.,f cĶa񍮎[TInYM:W]65۾g- UnһYᗇgzcbglw&=Qa],;΍M `zt}Å$&XVe G2)LkBT jf-.0lc2RS Yq_W*,ؓU&Ξ5C0h /I:piH{i] 7sͳ o IZuPԡ<+&\BO[gnWߠv[7dBkIP,_&! {m/iam`~a7ۍ'_ic#Wy6sGez?:F3R?9A.)*Ad IZy[(q߳&0­o5qB@Fl_`PW$-O U/."r (5H.!?d2p,'0s(Up> m􃑡nDơ5[ -QB.ZT&!w]7e:O50EG{[LrԹdKlb 55_"h4RԈ6W7YL~LLBc,d4ȴiS5+ d$ m7L'@&ѵj]oҝ35ި3[ou0zc&8;y+V D- \t %N;$~3u<X1Gjo 1vϐ=蔟w [{x)Aot?B NcV%ǘkH>^ëx~bc *{ƈ2_6]MEOJ8U!*Z % "sBf~Ag;x[ݕ;e)D G)W ;rQ6;ӈ&am<5k ;1g1+4CD?N Pisqᦑiih|ܪ!d>L{TSaU0cʾh3GhCC VזVG(m%鸬7as:<(nܘ $x_rMV?=4y$jzQޢ~NPr8dccs.4iҔʿJni*4ա `pl&~U1^.: $xL6ⷖ/f,POrl'IRGk:K{2a{0n;wRvN3Yn. 77/`X،xy":8ظ6p2йJUAUړf8YQ-5=qKN j˧Z\} d+̣i-cV.w6{&#^6#n!$=Fų j}ޱQћĨxdUbQy[=&7U#uDZء}tU uوV XToU7|F  KL v6Rd;x!r63iVL/Hh܎Wd/H j]ύ}{zGĬQlk/Up'x]duݫjWXc](t6s(l^i<3mbA3MEx NTKuOԿFI\|ICOiRQRݒ5Ӻ_t99xWH)5q3fYH) : g _Owys bcaec 0v0:3E.Wϴit+)h虌^]FFPf,'u6ԫJJTazM&anm||r=M1U$DlN%V׼2)њT &:3ȿ3()_iqCp3D[)KJG 8u\(]zTr5^{njzAS{8g*CZ <qڸS3 zcvl*WtmsFxeg0$c!nͷP-+֡V^< بomeˎU\ 0`TՑΠ,Ɔ}s/IjMNuUJ<6`nSdwYaN&F[KPI}S.j2,~qHDGag\"(.Ngھ=Ps"!Ǯv<0_%g[!?i˼jC!bVnhkd~ܒB/cG``f8;v:~5:<$urC0$Lrm0$ 3;ŲrIQi;iہ8.U{ 4TYL|R9vZtouk EmwFII.0ftss4-P;hV1P^tjUG] AwoA|H]ʊnA"L#k,`3 +@2T<ړ!cE[xvOQcܱ C}g){ho2'-!;21pt3w{ 'MhyYt^ʽ|Ϫg9sy=GD:Ƕq6Op^ \%1dZb|@麀}$Ub^(?ߡyM4Qϩt75JCME]s᪮$JjJcN{qÌ5F,#]>&f g[C CtXwky .IsUcGYYd/sӋga<4x ŀ6`Y}vp ҙG *>vLP{Ol+0J.kϑ#=P\\ݎC!ur`@s.r`nM} ;H\S=_Nt9,^iIzsdƲg7c;1ImWW>Ajh(X<&?>@ہ$88tSeC'{@V9 xy탭~<FS] ;]pG#AhL#/*X-$+(WO f OV`Gw"BA,X,,ɕ%=$eguqRX)إx%>4Mj,].} 6˔6ywJK)TΕ N*ee]esruѡۣv>hT] gJ2HC-ղsҡj?7#8ڃ+ɷßmb_f~;F/iUmL=X&^\7/(T]rM nn@@Vg֏ֵs2"y%g$ ]D[ؘ.^0,+l|N &y 3 :URju7TZHrT)M[;zX+ea#j, Ka&sbfz:\Eۑ1.]"a?ZnOk 9̧'ֆ;w:TRթk%=hRdYD'D04 fpHrn&C$`v&q\%hYTKA#G"{9S r>473~D#GK'$ ,7O >`>. 8L )a_&moP<Y"K!S,^*( G* ] mDK% TibV-p9xW$۔9LEWUNP(x&#i˟*3!ʠGiU.P({vC޴ Ead(| LW\3k+şEKE[į˔QUn30PoѤد%G"ȡsy^|IIE]B Qˌn¨BX?v \fZ/D6r`Xy[^XVxג[h" NqNdFU `{%0Qwd1W5l3[* I\ `:*NHbbD1ۓd,O:8۟C-[KMH>TRx!cZ/ZYY< M2O%\2&WResnC]r^Ttdw+%B ᓡ40U⢠&r`!~߽/ٿú"չ/p e8h9MxepcI>X/.ʜȞ$0Vtyzv~9AU^/-^B*Ɂ7de/(*]KzOJrҏ,ڴoJk6=+} Ṏ7ڳxUyRuQʃGjE猜K(y_oGg$É @=ua .^dXg |I̤c 𼶽Tt4>atPY 9#3h.E@bdtTֻxA)ht(;'E%[?|tȁB? #o4Sn5w5BG~5aSCZh6h8n׾Ͳ]B ;)rO!Lt.&3ŅP&cpbJWDR4؆XSo1EuHp8Ҡ5udU-lBW չrخ`ZL' H_t:Lů{1Yd0HܓF6_4bRӵ%+Q[@Ly[XNU g$)$_ZziG}hTB@4XTtW4J6H7+Z_u[m>6̍UΖN"fV[CttdzH `m5h4 j2_RlԾtE w0LPAP[o2s9R(\4Iff ^~Zy=&閠,zr亦iapԼ @.'+$B?!o WevN6uT\wU>ФԤYZaYQt?vؑjeqHJf7[1]S_O[G'+KV&KfMd[ўyzU>/djzebFJFš0&^ LXjήl&ªN^ ֞).6zNYW{:B d6/Fm)`85ܾf)}NL ȁxY,p=}%sZz֒U)eq\*&"0_!W˪Fsb͟E뢻#h8wv /]VSw\:[;d}y#q,7$&}J\v*\aVFU^etDP&XB  &@|ܯU&P[N.WźQEuCܦB@*);"B#,6,l&GX9OӨ{EG?K岿mP2>[`a~bmVztl O7)dpQg3h9WIk}" vzyHG\I% TmKzU8S#$3`\Y67Y@nFG0 lOJX,wt$3ɇv$݁&[Ǚbژ|/eJ(,\`^^$ʣrr{pVv2]y2V}%) &\+SShH:"LiTOמ F>LqWQY !U>%p?VG;w;R& 0E{1(s(-8%[7!P7\Ċg'%SԕcBྕ-02oq9g݆:w鷒Ʃ@&y5~)=_²egoH[.|]\2i\2i+*#;-I??r=Qyمa'؆ÔUxM]ekW7SZ*]VAFYǃqO|DL\T9v;*cczzRph-cU1G,hY"'ɻW--KlK MɑUܢ O7pUE?9d > Ui&zP[(:^UeeC#M`ZBW04 oЪޅI5Pe oڽ]Jq~9林*erye[s55mY[KJ;m!+xQU;ڍ~+jEex\DPi*ë099d| f^_Yzy>\CW[]mAanaIdhTk11U,"kPT:RXEKFp\NfzjO\+WiBZ ?pf$W/Dhxu<^npDdgK*s.^2=[ݡ,WU<ׯ6~# /wrym|p,g)ovksԆoKsB ,pykߍƲXkVWu]Ͻdžd0Ŕ`1|%BA`e0r Hʾ]LBIeg7"v|#SAcJx 1k -dsQݹY=zxgcF؞ܵsқ(hz4Ut꠬et lf rSXJaJ寽G ٕ9w趔 ֣.s48k o`u4-9{ WY.XF;;Tq[]xqt n[6ôOw_,sMxՅC"".uQt a~/fb7#me6|<5Nhn1rL]p9W]fYf F fmAK妵tKͰ=cU~ס,M~Cy3 HrNU""~)8Ot -{hW!N!3}4ɜ,(ݱ߲AOIj?BFr|ؑCR9ΟK-㭐}:yߊ]vKRGaS<r阩Ȓj X73ͻu2P jI CVaȳ Yґ6h/Ky ~ Pل΍. ^5ۻnvC$d#NqTDGgi۵jn^Yx$*ui«±VnCXj-kNFx'!GEj:!|G&,=]}݇dzEYɫd,e ɮ) :,?/]8N_|G< e>d bocUeI2gsZKzty6a轨~?xn~C#::%_jHPsT.# 1sE%ʌdᬛ"!Oji{Cp@WH3!z.sOizw42Yf ܹ~y .քEmFűE[DONiȬ966qk%aSѸ*H*ns<8>:_L\dvб*; +9L2x o(-Pb{3 _m[#Hs69^+;͖WP-bHWE}HݖKj &Wgx>v>vA[ϰ8?,z~79eZ~6Qc !q2 y$obae?d{nŬLu7;QP'|N:TU0_E͂b:|NcPd ZuV׏MnK ]@HՐ':A1F9ƵdA/Hn%G`a>.c QΒ3UUf ":5CcMc~$΃dIEhc} a橘zк!U%0?[MUg\T~)34NӦ&3;uSuԱY;R=]pE5v編po,z˵;OJ==b(=&"HkI_b;|I &}3T҅HgVM)J%oPqŒ.Nۚ6?$UZFܡ .ht֓f sec'R3NM4!c9ݒ(4F*]n,[vɕ#_rͿCAuK4ILppݲwk4_?u0fo|,_?Vya9,/Tmo_hM {#xu':`pi~qXHbt`Er372k,S~4|xno&yrI WejB\ 4'֠݊܇]79ڽPW\\Av'f׽\ w+uP9TZf^BrHukuvm.zrָi^ssTz(w~HC/9S Ϥ4 4U IKKFI΋߉GKW wxbE0G Hj&E4t"2ד̴vA'rՁAyc٥)̈́*Db9]Ppx މQ4;DbuVcn[n,~R. t>:sF{ )jm/$[=V~B2WV3Ke63w?"$i .LoT^(cלԂPU"g{,!4IgVQ+Y1A$C7]#ʶUJ*Vo.> ?d~ S^f52bq\G! cSY1ܥ@Vؠ6ޤ7Mڸx]>Ca[}lp>RNBNY{4MRn^{PzFvZ' v&UxY5ёcBӗM!;bf"1S3nԵ]_x,qooCiFOmuE6xUhX: ?ub/\t*k4Qq4-*$$lW"D&Rr0q }`6P=Od0iiWiAKmKKԮIYˌ 6;Xe)[\-X8Cw 5޳\Emm}`>R?9n{&FWmIb>ϳ)d U!`dJK@ }\*DwW3M[. rLLgCG"Pd(o(ݏkRIɫTLt8QCGp+_D?b``LPS"Mrlom:ߨc|alͰ6M 6[FX[tp3Ujk tuuQuG~zF7K8FBP;U(~-Rm DOGf@q@s6Y,նڬ0v f5,O԰mg-"v*yH(Pѕ{Jv&i"ƾs=m"vfZ/`'PO Mf1бllu#LoΉ-ݚIΉNŪb^>Ao͒<كvu~g@II$CBJV%ʳvyZO}ތuu79k޴ڄOoc4MK ~cM1<M,9,X~*+[.yyBU)WDʑٯ/Pi #D.y~6k=ϕH,Mf5luug!dޗvzyga"=F+j?#NuB!x"9pxkb=3M͛}:si%tI%7!A1\xї@|8-W7wVoetO.]&Y'S6~1˛\`RNJ<$^#w嚟F^%OtEsw@&*TsIt'l7&ѻ=h(+|L#"o91+x0u=-nȑ)q5˾~ϗ2m#ߗ5M(kKMkۜu2 E*;;&JO*h=ϵV2QU,:oyNzGuP1j9>p~i9ք^"_boᯒEET A\Zܗ2[[P,,h{ PVU_iOysKٛgp)v1ԯ`#ՙZ@p-qb5b[Cbq1 ۍJG8nz`tm ,zWcs3~E1v$ȁ=w׃6i2a="73'ٷ}IxPϗG_ǒvi5GBm!a?#v}L{iÞmquq+GȟP3o9Ѓ7D+M^:f1Őxge`^5eb&<ט'r#qf#h.53ƿ^vÞwᙓj%7br9*)܂ey7K5rꏹvfg9sfǹ:BV0fqky.Rl&n!()#1;(s[c Cilmd+}j:/˸wO9%,5\b#yH8WR:*pƴ"#&mGmAJͨ׋%m]=x`\opFw[UtDN9=N\+`7eU$ Lّ!ewf4jicy d씫6I8LmԦMYӃwe7kJo*t%vTRp/=vݤwVͫ>ڈB-mIxsY?紝ӊ3ֲ%zBOVy4l[$JGϒSI&y$#1OH:(0].ϒ'i7c 6(`7чKT6fn|hJ.#&WǵNNў9,ɽ {= }U\!u,+"x{ 똼#IxQQ~w, bw~Qj<·N9n9\2>X`J=ߖK+.RgD6+>bRKP- B)B? =ByIw U{3V}WSog%UO䤥_T(̎:#RM[&}I|%9\-x瘨%թʦf^HiMݫK>RO- b| ɍ S>/}^jWYQI@>e0'Y.ZPo}W֪/3whJ3Q"!W\.+$QZP(W0}NOP,JOHem&5ŁD\]]*~T<oԨM ۦ?(H4f( {ɹx<3+s&|ηΏqb@)߽(|[ ɌwE`*&Ϸ,ԧ8 ,dܡƲ$*5mЍ~BH}wGԛԋ3b܀u'X:@I{Ⱦ0"H|41DlaZAou|IəgI/#y_P(]D0-$=$*ZEQ:GmEρ_\s@;;B gu!xW*O+1~O|S8ه|9)ӖiP:0M]򧔧M1jH ro H5yT͂ҩ)]S8Idt%WkJ"~&nŅsÓS$J)bRzGgQ5U*EF SGIpWUxzle)0Kg$Ȧ-+𙞕/ִwLeR BylrtnRaoIAA|5']5DU֚E;duyU7n- =}Du:BQܦaSQ[CL TW\4~ nϑ ]P#3S '`7-4ذ&P4Zhx#ON={ NyX%"+o98͡{_#H+\R ~I\DO|ͳڻ >HYվgGS6+aHr{8\uCY{k4bowܔy-赭[ @@zgŵKВ2YY?_8| T!(@ )-$]E |ZL6- ȯH<1K#GS6ox |3 V 2Oʱ 4-!B=Qg4 E\NµO-~s`o8MeS 5\Kut 6 uWjFw+IroF^t2>O3?BWR4O'?1[YB^Τs鎴ǎfvQ=e|Lf/4v@CGA+88dm7Fq7BM84FtR00WXp(}QY0ѡ<ťt@L΍V m#>sǂ;=t=eaF/7&7 Xru6n;g0:}5Bm \ނ)x=q8&ydL20L/5-һW|["/[εCv~fʪU`lOOz{$+]v4: IZ k_>?%I~ @ԋt4#%&& wC +GNZ$9C ɯG~mP??g-)V8K.FgDZZgȱ\^e0nn/s$}/4_t˼a,g2ÙTf {)ce!7q6!W{X}<ñ5f^=ܛ6-TOt68Q!ʌ3ΪÌԭc52[Cwؐ#׎ꙉ؋h2*-RdXT RmhjON'((v?N'g5B+Զr&:A;ox,w *yFމ.L 5!sRƴ O3'F J-y]/jdi^-;g4Ϩ"t{J^W;9eL^ҟ}3FW7ɖ%x;=.[p\m2 s}CVcAeQU'!D$?[*"`CZmtvfaB)d3Wpw~$w\l-ۆvĨ^BG˙ TS=&;h3】RKռp˼}O&u+\dg&ueecN!B61y,`z[ *{ނ_fb*0_GDyR{?4ȹl[kuW"ºE,c_jfjy)cNfz1B, )V"s;ٔ=+b:q;Ú<9&Jș48S)thqWB'i$(FN7*mv X+Լ4 q="[HFu?~]ύ?yװ=m+E4PW.-~(:j:tTM@c?'Ad7KE#k9eu(,G(+YYJd^U_ s^aQR O!-|ǭUw~5|` : Ţl.o`+2Hq4kwvBG;^x[..H^b-t&xZkv]=_OGuWmI=x; Z뚪몇#Z, \$s1,["E0Oȯ_ɌeOa]U2< 9 \Ȣ!xkθcm$0ł&Z ǢaX㖥Ao!if,8lyVqnoO6c65*{\[[퉹qTG\SSujPQ 2<苽C;`+}4q#O $F ~0w1F51\4#'KVyy)do~`<դ;Z.ق泖Lx)=g-X$j8;c_`b/3CGqӽJ_m'|`Rդ>ڸffvEZ3W#پ_զ˺+&(<Sh~Hl2ƨ@ejzmj CY_usl byX u2PǧOi^"Q~4q \WJAYd- K] [.S5i&؉ݤOW޵7Vv*O{^h $~=̨J=~l'~x\䍰D40y*\ʪR3D<7g3m&o͛QS=E:IK|x3xcUXv ކ j,[Q_sxfƊB;pB q$M*ONȄKGbOG-Gn=;y~)^o;l7s3XV: -, gׂ͇AW7 S끓9&s8D_u%սf=lpNn!%WH0{[T<#l+VF e|SWq6\7 {$MH%nMnzzv؆; 2F1^`0\~=s~9y\;r.f-*YHLf^ >C۩Caa gK.6a&:ΰsk"RQ(]ˮx2]ߑC! |;mFC{u7KFQ7+;m8I-?:12s;==6"Ǵh}c ŪPv1{ū>Gs'6=Tcz;3c6Ґ6>k_?*6$SEso m}y1w&l`o{3\o]]_;ށ.j2Mc F$6f yAv!1aX'}oj63=?)TUuVùs.Wm޸ӘlD'7Yb dǀeMMk|N2CK: .7 n3)gc0NŕSƊo>xw~<ޠ7[@ 6|:L֟ꕺKv_*8G19 z% [{ ]2I'}},>RVJ36K%{2KeJe-󙝳:9rlV(exh,|v+7\/!J<GR_gճ>p-%jef&'|N*ڙ?z&|0 \ZU6ܧdخ䨦B)PeWF|Z MR7Ԇں>Kčf点Vvj[ҒO_V..UexFɂ20|'l _7W*O,M ݧt|1{IGiD͜ z{ 9doM24*5@Y/܆ܶM;,f޶yH!|vU(9EC[8^ %o~|na^eU@"۪RRLĪk ].=+L4* <(3 xx1f"Tcw߯EVbdB2߃u4p+dRٞ\g}@7ʾ&f2ہo f!_1*|r4O$_m %+7Ϭ>-RHHuQjhg3BύL {5'Q.Y!(JAK ղuM|޾ 94mM !=S4;mzH&( &!{UzZOZQNNޒxG2 6$rq_S %uk6!c3BjSd$1d勠䴓Ɉ$d%ӨsْъCDKӒK=,= #)_T\s3,sEWk̢K쁡)I p%XQ $c:'H%i.?__LYx0Yőg} սh_7"o*6͓/k[^vqiǦ_ۣɴFQCI+^^X~98yZgYUxW]8|_,0#TYUdYV4glteʚ \E/Rsw(9 Wy`~ܮ6fڇBSm#uHf I5uxd:-3w1tǜT 0'2~9&cCөDm'ڄyGهc=yq]9S9m($:(O9bGƖ1tL| J({|FOiVlPOR> jxRr[ 2r4#/r&u,heӺuQ?ָ+T. ~Yҿ<̙#d0ӯXvA`[T\6DV5W&U-jM>Iupo),d[3K#WMOK W ĎgHPle<2hVzÇSn!_~_ihf99N~!vn-^GH 0߶Q%Oay ~wNh;iڕѥJE[TuZ|)iO鮌2TͰ׊efSN*(WG&asÄ# {ݚK |_yZy-t}R^/VxR\ ]$6;ů:pR*2B>?Ƌltc[xĔ3]#V 5 sFGg?D O!^(11BF@ξ P[غvfU\ Rzd1 3#a7$\/z2W>BJ1db_pbk!Q>wOW0=B#gg#{=:*zl"^jWcSdYs*^zYCK3lV\"r J䕙5ӹS>fȉN"]&,53DQէrfa1-ՕLi=gajk(ST{'Եaʛg]o*Yu}(I_ijg|e$TX E&k5c~S0ۻÿ7?}iBdP1ͱћ>_m{)-mWsmC"G=~j"f+8 `Rz`3pZPD@HPgibfk;g iub_{&qLfy۳w >=l.==/#on&avZļSy/kavcOx!>4/%va/_fnwo&Pjod`.lX|LQ9#8g9.#6@{Pj_۶TI9VerhB|HEʊFln(E0ަl SIIr}^fW~|ۘ;8=/."DRE88\m<oCygFf#4p`<ۏ:LRԩXwi}ǚE 7 9R4AҲ z ZmGvep]*5a S*V8{r.ތGqI '`K@Zql\z09'-FI'_? uƏWzxB,^irG-%gQ@ZH -.!k^'8I-<@o;Tꙕm? {M flK>x{-,yeӗ za[ruNB|2<uwed^*9/í!#+'2 1ISuaMQBi+OX3QCm6|Pver4Z;e<#SQA{tƩ* ~>+wpp( C3~m6ת4+ Yl=Z08 t!KBNQP9pӖkam ]][ e|Wqؐ:J]T4$OwMS2`Àxq":|?M U'3%H/Hb B0Kl\eR.R?F*FeFf^u٤{zƸIuAy/'yj )=B*W&^tB:˗RկwޕƽC(fT:(Xc쬣+2\&EtcG!p >0":ܬY0_?qj@T8RY$TbDJ7A45u{^$) 6X&~b,k1{o&7ðO v$[< /0d0Nr!٦_xd:0Y($c\cHvDOg_/cFI#f3i+׈'z{KyR-YDU!x|Ζr ۝R*YRΒ$Js;T4K哄u"Low:J[<#V 5Vֈ}bfG{1MW ;<w>ٗ+";}y=I.f24:5!7YR>w\.YSzl@el9QSlszDx?BtfG.8Wq3֯Lrue~zEpqa'uǍaǝNz ~%ϑ 4mOJ4m ףhJG*e`Y3;L6cT8oR, hQq#F0/*=|W.MUG$ E'zZGt eY80ʒcPcK9 T2KnOT;Ֆ는ȗ]'-zA#)gEK[`OptuGCMΞh 'Œl. XB{VP+n\-f+>?W|̜uzN\Q>Ȕ)Ožv٨JD){GZ(J{G8(80JR]%tG| xed7& #;n:=l9? цFpkg-BN[7Ivppa侞yu2GBBmtAZNy~sXnv/-]52 2nߒ'dU{v;fۛb |r>W=?އȃ4.@L~:kl@,tF"_&5w4LX,)^٬Yi9^3÷\& 鰕Qy-U}d(lgs|b2er}H2\ cks+uqLP˧qx*^-ޗjU'Ow?.'>p8ſkx}#+ra) 9r_8HélPB,׎n7QI'⪇!XobAxW~Wja% 25;ۗ+8޳gxѹE sK17k''H~t+VNh`yO\NiRPAsV('-|-N=7tGtA1&N<02ygy1Xmi͞7BȢHPIP+h>]0gžT;, W{"809)vߚknHޥ@I]>,pr) yxꮖ9g'S*O W4ItƷЛ<]5H-qWAU+iJvb.B}, XlPSͩQ tA2Fbtw < ns"_ 71x8ĵu?ڊkZCHPpCdMچ%Gj%߳U *+a%"v9$z0$7#tbO.O'$Y.GjJUЧ[9Xٯ /T2^Xk$:A\ãލbp|kgdBZhtc ۣ5H-@_#5mq%̾7@}˙+C<ה.~ȿs=|Ge| wACՏ @rS_\-ג_$<3{t$DSs,a9G?EЛ*(t ډr8x jd\P`]lj?z-aXkEY~NYqwνVw4ӼX?RyD;QrVw"pQg [(lw?bD, Y:fulؘCѫ =&r''~|b&:bc1^LWƒ<5GN~ S޻O%jJ~myb^ze?9͋&U+ 2o/'?WK(|5Dl:I pw뉰#9iXcauEiȜfP6q!$c#VC=d:rb.`:~xrX:ř:F~ ;L#]5Sb㉽1Kp9P߻;fG Yy l _/ufW{7zOֱ>r%^Lq,`5"NJl]nXn-avbE\FJ8s$4e*W|}9Z&.;Df#F.@>$>NI6ZW[#]K;0(y%&x:&92; h%JIk#.Qt*|23֞i$Tgʉ ^`6:!`@9"C kfґzdz!ٜJ\$%hv|/vuEXJ1lkz#d1 [/9KXr|:j z.89n K(1} D"{ Vk;{g2Gv~=&lGyt WGXlg;؝!nd FdwXZA:ÉB }M䭞f0B׀c{a^5 vimqF1 "sdoresi\<`4 )I홝7hQWs?6p9=MlCl'R{(u:OBFbc8JyzM] K=Kn##o34{NK^p[Z C87NE!}BT"-!7ރH%^_ 5yXYefNrڇyxLN$>9h MH_;; B~$Ƒ{MbRN?l8kP +?r84ǽH]2q!&pŷI G@{հ,w!`m ?ӖXXQcؙF'JFg}P5X\k)&01vl6Fgl8gM.`?6ᔱYbu@>0alțzhqgg6+|&'Z Qa/m{㢃s.liÛG?+85ru;[&\n+wx2Og/":WA:,(*Y_V@ZMw;!n6s͗;{)%꓎jj^j_V0# 06e*5?%$O}C_-.cmCZhG+T3R3N{.8LM@ĴpėZxw&OFMN Mbtg6N׿Nڣ +d6l  1{DWv=):$@# # כſ`=.&4 N50LDlT^Cm&],HL0a#bꪳQ$lRUe^S2K%1r]B'>Jcߑ/`ݣY)ݘ Q2OC3lk E0;\_-dԉh)a#.2I Pô4(T#Wc 9 'nYµҹb <$#l@M&2l5ۮ$ֹ# ڥڷ:!{BB1P^ B_ JOWeR~cG7)_K<[i/ȱx:<Y~ʶ>hBېd ד7PnM~6}50\Gg*is_+lEMY"_:vPg& ەm>n`hXmY +1%d'Q|]D%=vW|C2.QMBJs}`j谮_#u EC _ݣ>LLUxUժĜ%;<0>#稭cM~N?zU0mYC>jQb+f++qSBQVV-,Ґ=i@>pîD?KY#ykEM M^yZMn5;r6&3ABC"ȓJ!Sb9Rj6veqwIjcWqm)TB`4U;Bpm$S[OF|=nl/Qx_XuͦR)v% PXŞ!߰ H?69s1Rmd3#G4my<_4I^i%]Nc?Z?'pԥppY.a,'bCd@0n騽ԚnU\r]uX*܆$.PS'C4pO&\$UOx`j%;9gby%p I;s{K"L)`ϽAdAs]+J>;g%הhSΛr\Flsn[ß$y'J4*UJko_\&腝yi;c_(?ݞ_.RWmCߤ>Ͼs=Tgک?hgHW\=|YPmeݚĈ rQ]pHa zNT%ǧhiMsӮzho%o3{SƱm+ uI&i&Mzr$Griڤb+PdHa:g /0a~nU?b&%>5+:濪]ec8r&p')8*gx`]{iUͰ1P'PCdm5Nϝrcmllýё %kl3MCZHVZF•X-izɮ H\fPwR-{$z}W5TxΟ B:bfkkPO+ӛR9^kuuhpSAYXv,# {_9۳blýqiHj-gSȀf~x-lN7CP?6$mwm!l;blymqkiO*c9csdS&%Ϧnދ"}3ߏK 4:/&ލ)0ΜMJK$\ȃ/7d)AR^T?QzY{S~dmv&J}U%btwz G0_5;vgnZ uM ל*G3?;Z$XsoށqdG Z_ 4Anήk IBI|8al4eV#-mXIc< InD R$ǵ::3ىt5 5 6Wە#T [1`XU6D+?VY]PATw~(l1öͺBc\D,Awu#uk ~fװSo1r@N8)w_ 67znEz!EwEq :{:rl?bzVK t-%R}s@l,{ߥjkۀG`i8) a߇FJ Zh@͘7::ndzt&Ccw:'2[?W'}ε|lr.n͖fŊ' B,>6 K*VsosyzW.+_:YĺX@` K''66^)~)u*A岊R(ȚB~./Jf񽒁{3]OoF 3L)Oè䟒ߓ5,-%;G4:b\i,Ee~+R>Xu#NMާ9rcIff宧JצM^IzQʣkG߆WDV/Ye|]r׵(4Y]Չǒ|e+I>>h CO#ٲf9Q&ߐ_CQn`7}Kl|`PE{`@pzKd;{VSϗVHx]ٱ_V1?4!^ں7F/u2'Èi1ʴ eǤuSj=n1 *b.h& b:wLZՏK;&|XvkIҁ1VZ F/_(-lϛ&5b |Vnb6ɫ)BV骉~JӗY[kbU|BڷYad]m04pI fk;yzd5Qx?9bSh߁l L'a-AbW8R/ѮTt6mΈ@0,@k9uUo*n1XYx`o,` v e^DROJ9S鸒"ɼ)#ٹ-:|w(?9zH N6>\7J@=։NARvlBFÍWrHҞ/IYGsv>raW45yӠ{K~\ěTֺ}kuS|ġf55l&t}eH{K hVη_1&QhYū;@1`{l6_$I~)WP !L"2\Nsĕa|J34v]#D<2J2 |0|fCϛ42U+T*F;a$6%wqtR\dX%pFjGۣpؾ:Jzr2ng}#ъPmmeVjHN&8La{~XbF;Ll# uGwsEST`e륅JBQV\6= OUW5k XE sdaDw>(jtb,~;N@8D)fruYsrbT+jo+s~rlgL]:=pC? ]Q9z5t[rM\ hHIcBeڥ'H=X[k VIo ТZ8ᬼiRU}Dkg SpEo8Xd8x1oj0DlޣP"8s@pj oH>;Tl~>j^A^ch%_Gk1nnap$Ԇ"&F~G7gzos˙Ch+&f.Srb򠨽[^l0.}mDuC {D/FZl-;-"kюDQgePBrѴVwP2bg.ڧTdy Gܷ0'`I8Gp[bۙ l+[xY꼌Tڑ>6?>[Rd*PEL++g~K;Ȃq =(W@@gP;3tr't,/>翜TkU2uIPLt]6b@27ưʐӂRɽnԳ2wo <vn#qd\:³z,-8ʨ]ʻf .) Qϡ*gtL_e- ?T"r`4vA|:\cUm?V?>r.k"c";mApm,6zTQRnFGIdUf]ab_xtr}:0b &hBe9ki&9[k-arlAu3vg@2]m5"D9 nY kM#d|nG0jKeb|%I\p8C( +0e8 >ۍ,60+F"ǑFxq~K^`Bd1'wfKƗ0&KC?FObNް*Ino}i/6?R3󖥖}Dqv덋a QGtNPl,xU̲,-g^U<(W:Ax~``p=٣o>Z~򎣇_SakF p[_6?S s&DǢC™VjNovkeXAhf.˲g>̼{L+/\ܖ[ *ynR}Hm-&j%M%/dԛY,n[ &UX,:*cYtbi,VeΥ!~vWuecݧi]M[R":oHNWRaj[81p"3p:VT[|OzW:~{ 9^J/>~ԑUjUp<Ἢ^Ny4lZ|)צjhv7z\۪XU~"SGg,+}n5qocfhN~l x!0M^5&j*@ @ ^6[9 }~ Zy|U-qJ7|ow|םvXǢ7y+y|Y./_(,9Pv]w ּͽ~(>s4m[n+fk7N yJ ('νe7DK0PCZf#BIIkn,:]=: (NqQf ~ {n7gGʍoOSX| Sש6Z7sV֛q:2Dƒ/>_ژ%b]cWDr~QVzFk&FVcc4E)(eenvn,{XN~^Wٱ|I>+rBFT$i3# IfCUh8x}JOn2OB<?v뾪pZ#/ԋ+wJ-[ wϾ:j/-G?!ױю*-e+ĶbkcCzH-q mKΧ}=)I c TE>cC*;{6]PR_%Jvt"4+ 4Y+~5()b+^taHXY0ՖoOpSa͐L-zT|ojnOR%** sJ,LXi-6;'|%yqH؜ o]b٬/ӶeF;:T]炋3ymZ+V6.S+0%p.{Ʈ4k1ӑZAꭑ?0ꗽ7"p2{d$QS1#*ʃSVՅ7;d$|xu 8f(-Au '[:wKM^C/v@ d!ߘ!oF=FJZ:H2,XD㸧)5RQ'gbUCm]F$H uK~vwA{Z:?O!ҸmhmM,2oY'IDoȀXβ<--TL%S[~xG[O8΁^ְ:PUغg26<8Xe!sP12'T nysqZ:9ΓlbQ--H1޽Ww?So,#\T'*CVeZQCO5NjRL3Oߣљ`j-o-[&6B7Hgpm RcTvn}ԾNW-(ftnHi79-_gm $Ozf=o*")|g @~CQ!z%=IVb8Vr_!?Fu2-+EӂgO ,;[ko#C`X,n]J8WO;xݛ{8g'ڗ+6hiWHh]oɇ%&ǞNrXeaL' K?)$&}/rǐ rdg%99&€6=3} 'Q$g-n]> vkjBh +YcE߈w-9Zח8LqL5+;1@&ll-n8SyU]_bs{݊F-nn^q`lM~sF D\6T2;*T\%vpqg؎Ro"oMM6^6$21磀3i9wtWliQr H~GMNG93tcIa.?W75ڕ ht!`?o<@~؎m t砗 [`ہ|n"n‡mX>˟Z8/.f: !ezN|9< 1(:-#Z/Z>m.k|&vV %?O7{h&0o֟ߣ }lNDo~>Kb$W5tѳUտA6=\6ŕ+*S+yY[l &y=;ggrH{pR_DPcxl3ס v㕌 D|G.vN`nj!z(=O`#u;z:x61@Wd4W04:JM@ʺ5&EY͙Co{a܆HwV w۽B*eo1kePwaw&L z:S9E4^xP9+҆Le~wcj6&# !_ >ri)홃yI[?{gOEJF5J1[ڴe4{oR;g=xt/REiM^˃D.\%\J?$wԽؤ9iXSXUcզH}.4XrSъԨƗ :ްvi5X>Uzgl ZG֚Ȋ#k-r+ FS}ߝ_8HE쓸RA~7C|{W> O*ڐqgͷ;5Y3_6|@6SG'bYj2lĆ YwYfv>0. iJ䋡J.2U<k 1X#}ٛ1y!sk  xErEP`n'G?Y~7%#=e*6T5?j8)`` ށ^YpfU]$t^;[~؄^){dwdsz#HW4(8..tݵ zf*UN,LrxDkm3%8Jl#YL0b3KZDF|A/IcL rz>;t\_mxxbSweۊw{×an검OWcQz\?/m~Wj[`oד+Ԃ c:@#1/?Tк&c%:*o㠚)**OOfF ު&BL@NU},Z3ÝOrR_\bam{R4/-)fJ?K9'OK c]yJKM:^+nfP_x%ȍJ3+[Ұy/5gkgʬb{CObI R*Z%窸ˤ)w6ֽd}gx^kFvFO,h)9)~" x&t1r>^qt"ЎJ_/&Jjß+ϔo-]-SC{1fY𑺥?}MBݫT\M>s5T~\P2M͑WY̑"gb,iD~'en;2S:?Rm4.Daf!! 1pAp{DG@`S>AN2?߻y'sw!qF5V6?S {Oek:ͿJpՔPw15#{Y>VQ&8^xJuD@k0ҢЋ:a;KzSֈ`ӃuƣCKfW899T n]k j;S\37zj.)?Rm&qya\s #Y.?ӽ ~qy|]xC;;[ l"^tB23@B;ڽ+OSqԠ2TMS-LRQe*\"M O'~Ǣ–I"P#|ٮ' b~9mFVn-#0o_Llnvj5NX?E&H.PZnќ&9'+$J9Bmi'S٫ 3랔`IhzCc(jdjVř*QߚZiIC!bm'K)fiѼ`7-.KòIjH=\/Ɋ6 dSl;VYo֡ zot$s,ʍvI 䗜!Nk 5<; (9LYx ي @7dZg:K9lū>;M[,Qgf?ѓwT;\Tv& kXzp8B={ S)D3$c5 L?d8w$>GXdTVW& Zfv]wKq2|Zp\=ap8sݦ8 X']f{' (8TC5UL,kk#1Le^Aj"Elt>RDYOV431 )tBYA5QNck@roo{-NWtEݷG٢P7$xnAZxh`m2'cQ':cXk·G^767N5<3ka,vN읲~ a=;%Jp?ҷ9y%ّz7}v]zcp%3%{`vl# XbkcQ,ZɯI RV*۞QƉlMqqRZǤoSp  s6ԉcK|ھ1#l9( "sF(Zt)ǔ3U͕j7ŞtbTZl_mMM0u뻵$,U.%lqb?cdKGg {8M3MD3^!Z(,ybQh\p|5lb P|>9(P܋E hmty}boh *ܠ=!7wYlIZU;̀:h~;-9ʁӆֺ?"b dsXl檿5 u(k P\B]wX [ ByBLY%U ρ0xœv] 8eێiG#ǡ")ŷ$.QD7YhtMl?Jx%d-(ZWtr\V~GҘR~Φ\u#OӰ-8x@8VuZ]vbcx=X׷E啪Ț@e*y{3r uֽ- G͇eIIvMQ9U*%3=įW{p 4ե}M__> T QE{0.<-7s¹Ygωz: w‚˲KI;kmx"s  XrH'A'}@e/_drߒf,mzVYT֮ R>]}e4?3^/˻+pfe^xɶշwH(o?B/Jo|a?sY[wJ!UG9H=wз?xV_yk>;9kl_{zecVBYQ,d8n [`N#Ո  8~Мle _c3 G3X.7ٛT,3KLr%ZVv<]{'WbXn8.72QQ ]o= ҦLJK`ߓ@Ąb6F' Nۮ>ַs)ѶrMh|#ZFyM|I"Lv6N`, yD;0ծN71?1WkT=j-4053\3umg9'k1f0ʹ̝;cBG&NZ?kBN@,i, {Bt|r3+W j 2,os}]C?G ͚w"䓰Fq PH VїKXYi2FT,yH90h~’n}g`19Y ,v 8rӌ0x Ɣ i64ҽ϶4'l\.; ;"fb3/k7hVs9 Ǩu%([j~QԬB8 t9eph==mXh61kt4yj"#-zUSNfCmnғGO3d6g?GVq4V-wQr^`\!{ɽ̾ SXEBlzZA>kʫzsޜ'”J܋_^P= ?Ht%uMٔ"6}uuaE{Y})'!?34> 4Rh0#u-upuRkp+[ٞ^<@aX3?Umg"?>=-,}N_]Kr?eZ`sLVk|ff`@Qh26 we&8Pzn;v;+2PWX*:@6Hu o p#:] fy^PS$+Zq|zhXŨS.ULhXM[3 c)6P5 Vn)T~7uo|@H+qtѬioXř%CEY?v!hjפO8;oS;n"am ~S1_ Hw3Ka/Pu͞gl=h)8hoWg\#=ױdž)p՚tu[?d LKk@{Eg~oN[ +A91|q3 T)%=uc-M:$XS()$ hm{ }j;V\S8wm ƤDhBakۆvwxZ & MF}BQcq^vԨjf6pًwfGW71mqILN+rG/gǥ븲awºȾ~*;CcƂ/׬sn1T)C(m2WSu w=ψixc":o+V/]C44K퇊_1Y^=bL7Ci_mZJiYpIw'SclŒ~̉\N*: 5 U!Ƙơ-J4͡%PŜ%TgS{ iḗ2? HK;4㏴'$|Օr w{>:쉼=AX-2h+~ @Gg~)IOnhPIJݭ0_4N~40bBd7iVKY} 9 ȁjۀSzQL~Z gPb3*VVS94<Ean_BL q=;gMS}}^xfީGxmݴ~fSG2Xo$hr'Yt># '}(xdd<229FQX|wfG'7KZf;Q_ŲI=VBF{ʘH/.b[G.@V]U~4f:N)$=!T|6I/%4/ kri]cq#^ůaks恠۽=2lԚ%LSvdx҉?:CI1oկShm8ְQ]=%&ѹnS+UŅӅE*iYhm_ UUl JUo/wR3z>mJ͚s;]Fi4(o6iw~6}IQwaP7/W)NUE~w$<2,yܮ(ތlX'Y\-183U2,ҩy.aC pqi C?>M~9Km,%+m:/{ Fs2[ aq 7 D] Ef˛ᷡLs C-bL<&;[Ph¾<$p.vVù.g[b_gVi8y;bU~: { D$==g ?F|h?X|]%gWsuO6Li{EV;b;HQɂ[k45WwL2i/#JOj6!8Rr^mW>mfnPZJAlG}w=='OAٚWŧy {"YMZ[/K9 K%zy: {oXC`Hu  rV ń2I9_2sVB3ɕ44lN5Ls10~gzyzWû8ֺ }[K2k7$ nڑ#YU;-=D[o+ eYpgS׋*UR&g8**p6/ =%밚7}iSjSm㬏Q#cJzw;r}IOgYfSK8G BJO5h!4i)S!"@hgM@ E:K4̜ioPZhvxgRYYhx,gyI<$'b:e7p,X2)2V^;2~fTOu5真l  IA+x6_a+"v03G^˝cQYgjQ#O=sѱ/kjLW[TI5>w.wh >;ڻE^< :%ǝ@^o\4GO:ʵz0yеG8FA O  ts@)j +Ml!Пmbnrm {~~UTX%Tl˕ڊ^`1Z+t2yuM;Kh6A@ӣZ)+/=͡^cr *]M{maYc/s{YWV<%7 ]=\*ayCMcZqLIN{R#VBYv Y69Y&[];Jei:fy"5?6 T.̞[ZpA0{gMf/ )ɦw%O¼yYH[ R77OBW*,C>j<;QIZWE*s;Q+ڃ QZ"ߛ316삊3Zk@CiKe }tϳJF[cXiQhwsL XG'MNW/843EOok;+y29)zH ;BT({@ xʥېf#Bv$js֒܉u;5<3õ2+hULw7GΖ߉eEѭ0fv&8F}+a/B01DG!C|?smaX>bI[uΜӼ,"{ntF;R GAs+tw8㲂qvk|C9r[lYt/nrc$.\?B*nh;8]/=([tM{!*\*cKEIRm.5|?GFkdbfA0]XY7濐ȶmަ5{VL$\-8`顝W5r:*TJD_7`59?Y#3:uTa #Z3 )`F a:l:b'1|ʌb-Iވ=t?kc"M{B]U-iiS/q?w* '&aܝ[+/ 59tJ.)R&malUvZC&~56k [KPО8ѓ$3Uє@ *cDZM$`ngg3XcgOXBqE3jZVLJ3Ndftn+\jl5}*݉x+,JkVq*XUo_1*y^V}9,B)&G0ƢÆO&%wcv)64ec.ĽqYZ3"U>X* zy^zk7CIKa5`g9{LD^7__ij{WsDGkMQ;ݶ_LpuL\*pE]l"lu>;(QGp01q`Y̫LFA@rʢpϱg2rI7fPnлrD<V'"t}Kn HUݢtLspr… m f"".];} *X5ij^/7+g)_ҧf)p,Nj=Bi |A%gtAv?s *=3Ҫ3S2HdgR1y}#ߢX^4H>Sux"yNGy*TkUTrk g@k.a՟jn+W3hrĻ93im'RA^xgRnOIoP/9l]*x=͞M?2(I:9>/56Rr~`u7JCp/g-ѹ}VjYE*,xcӰXB(@LRDek.<es](KYd+x']<9 ezn͖YO"?MVhxH3K9㠝Sj"`7>e1cQ~R?${{pW Eqv[qܘ_mg<=oo{z7D~MI[)|ČJdM|p1 jANOrx*A5Ͼpw*8+8W( ^oz"x[цHD/&3.jWmeMZ092K/}X8 <_/r\YFz@\@qȳ ѭ+z6f.?[@ Ik;V 5 zId31Ӹs;yaX7wc & ⹇9ܯ|<`{Nil_ή^\ V󻰶SOi't#F/OcM7F5pI?L`3*٥ʳnMfG 卧f;}!ЯH'@^|!nN͞OnAopϪ5gjTmZ_5Pj|u%5uZ,pծ?YN+ٞEm?zn|RGch՝pDajxѝ3'lO-}v ^%6ea~f2-RFarxn'?3=uXdJ!{n/F|bw}6e($>,g17x| 4;24! EP!0@VDcقbc/ճƹ}=׹:H LDFueZ+]MH^+%b qzC޹ci@˼p@/w9~ts4}tK,Tﲼp\Oڴ@ J~ fuv=tVXX W^hR| 4!'ѽY $r&vR2s>/YÙnf-~=_X"j !*WTTI oae22gQ\v^: h+2Y ?c$4ҖPVLyH^Z$:T*?T`(ƈcegY !'>y8|ܾlg)w [GO /_@} p婓bPpDnEy6qxjK'˘Wvɮ2iGGsG_YT'vahfR,[+Hn왪LUX(ۛ mMK_)0)D#+lLcn66U|7rEW`;TBM,nſye7dL fوA~Wb-CZd %)33Љxc}?(>(Hu4 ӭ=d>9.|*u6Zh/;vzP 0}δ]gcڛIuʓ`<_Q))k"0gWs$;} TwӾ= [B?3Kdٮr˘ڍR20C/k=>sHWuݵɽQn9PV[ DA\5 WeLid6yAaim&L |<}k©bɶ?U 2dՔQ[1@{2GFp RdGf&K7H zv9=Hs;3Rfݝ!?1v??CyHIzJE͢l$Qe8X(ydl!it4;շɥL/p?m>--iѱ,Sq&_g3F3e h H (_c5S~c>z޳/,.SPbn2P} o8b0^<h]i^Wyb8 k_DHbK<3'*PRO+uQ'lIщ ɽ,K˃0?ۤv*"5Ti2JDv:*+A|7gKn0%w+9ss)R~ 5NBOm7,4sU0@SuƱeoEᗐ꟝L<.|dOc\=aivJ? Y ~О0(wkbiApGbԩBL 9%Ͱ4nT Ji{hfx߭ɒ։%0|=}gbGTe:T WvcY>,7-` uuF֨_ ,ďKM W, bo 9緦r[afs4qS=VFTh&,?l{mvDF=#xƄ.5GvCl{w1vc$E:{сHzJV,7r_ ąf=Q gXSZW]s8d읰 =;BTVEU[Mօֽ'>?Οy{!P7PRŒ{?'ag$OPǿKLf\b caIXoyC܉a/ jkZ8K½&Vif&5i2)Lf 3{=;#xxh88 Rё/V7nƪ)ݏ$h$:ǵҽ >#>4[;|=;$JsG[ D1ވܱ낳*xXz* pm?#MjӅH~쀆6By2 UxqKs[}+|_ҒzhAVJ))6l|O_z[s|n]Vܱt* }Μ9N92UbŤrbFrq.3}*;?sK(L*/H"\Ga?@TltI 3dFdl֯ym QH/0bSxҒli!_yy7ĎMm]󫁎6X[;[bަR?V{qG,8@ ::mlכ;4:5]JA `r`q߂L,W/R %Od;+ǻ3 4c6 N?uO 6_>*768g'HI`ە ,^(!l|I:ح _8Y(x^Wkw>f9"}6Sjcb;[`Xjz `f52V6;E03{f6gҖ0f, ̏fr?tgJ2y386a8fc q 3PaYhjEvV[Ng0c{͎adM(x3]WlݡFzM3s3&e{-k+pIWl4n_2kAlqQnt Wbq.Rtf+iRؙ/њkJId#93$hckbhpne!9׮ 0H1 ^捾e3II5aו {  ;36{r/3i"^`Xfx>Vi fG$qxx_3SҢ!~j,!ح}نl+ @C5qYe_Ys|,W'beKF< QWj/>ES]IqR/WOb<cۚf}gJWiJ$8||P?YI"^)g<i"\+&3~/ulz%/ziEq2vZ_r:gG"T~QTRUl=aǜL^{:Q:Lucw-3u ' png8qL=sE&1]{:3U~ƽJK'D 6x"O_Fż3^YmZgv"/ f ea;ηLRo[N)t:weXb ƱL.k7UQ~,;xK2?J;R0@OVF拥DEAykh/W UPe(`,JϪK `\H olumjZsuXS:0;`.Q)\(9.8e3nB/t!D@] ;t&K≴Az]-a[47;b3fBgQI]NLG/#[v` '_=Od)Dwklp}j Ra}hVKu.XIVVs ֽEp]rN7W _CXY,Ŋvf3Xz!aW#~!O,/XlwSD)^*} $%K<}g菮.o1Py>uյzK۲tZGtIhprJkV߉֔<)Es^NκȲO\3t<mY!ϲviDOs:XسStqzɪ>21~F»5FN:% 4B i ʉ&C4{Ntd?0JwOLsYgVOP~-L3"D@*Mz8t/ ىq=ҥ/{ 4sIBsJwâ!y#5!)~W$qA{j|@.>P:Un+V_۶!>BT]pH\:IüP 1DFr1ќ$"?@>&2R1$yvqa,}gxm:K@]5&׺ wf9KWTw ZkE 9c}I&j5\}Ȇt.[6ϽYFY)֧Dq㔷˶̴;mK97fa|#ge>H[y'Xy鷍Igꀚ4<#LV) ;Xt~' 5m5SIvPenLe}̧nZ!~VIiA Sog(} +%cw"lk_(lxY͜d5_ 8mG[8o`vH >r-l&-T:iuy_o[`G廪ez۳ķbL ZlI`xblnٺt|e~Fh|9\P:ռW@[$If%6>^ȶLQJqE1֩ S7_ІNfAQə )#IE ˰hC׉PCqbMID"x3)e xzV G!7axJ5ނ7BQe\Cm%$W1L N0G>. SP+xZvw  @cZ+@rL!T4P[ `%] xW ֙ $h5Xnҝg+KC|yU XR$X?9`Tz\T-Ԥ*9VU $&La|cqur91m ʏN@lzuh0biZcr8b>ڕG(j ;* *BO-݀$C/p:mHFɦkrbo(PHVk$Isp;bG7V21"ܜW8@k ]i\ ]S}-9sXG휵>\5 _d;itI7;SNW'XH57"~]u%ɑ!5Hȏɏ qRd(3^-i766Y|ȓ yzE3\Af. s1ZJLL=VhYN y_|A~>VT 7]gɚI|&(Lm1jꭲIXQ&$<`}%IC#H{ueSpRtEA |]Q)堁ʥ^f8#Uܱ4V79""5M3֟dK(+IΛi#%d5SBkKUIhcȔK\]<3򉈀?$+'nlP.S@~M˦yD>BuŏAwF 2R}cɟHCVmW 8-  8x )] Wхƃ w蟀װS?Y[ԛ. 'M_ϛ U&a=h=:dДd*]f,%kEG5wspxxu|>q02ËO\70Mp GqPEDiҙp:BcvtNQW>kN6CeuxR† ;jG#q:Z8|Nb9dj>GHǩjsMkZ//(MErJ mѾkN,h{'ԎzgVm).WfpkAA'~G8]]5k|! ft>:}ڗy?w4Xũ8"MوukWfNgg{ %Q0[<+[8題i{5/*@1t7wkA#gSXL&idkret@]-=N u(Y& D*QOYrҴeL>9myrgֽ]:\N;W&vtݦ^YkFx!j++M$os^>!UyZ&NQa'fOI2b mܦï̈ny+m9bqU7‰ $-H1.]enn٨sl/əpULWV.!Oг:Y٪ЉHnn_" Xpއo1{4Ǹ{JHY9#+C|Ӹ1tC%Wk(X/"x'?bͺcp<ҩxsC-C EK`6]u3}dսYgu$tn+&f꤄*EzWe;%-b~`1ϑ׼ " BmB3[kW!:Tcide]2Et;._uM3't++noj Y+~y8Y3Nasrrp?8+esI|{$yxh ^P2G츝Ā-;u!Neqt0᭼BAuMB6z!cQ:U |ukW4/Txu iRS~ds T-/"4-m,9 qcۙZjNƜKȝ?8ޘ1%H^41༐~I!ߝ=ļ:wlۉfl=g0uA 9(}/-~oFH"T|uOJHhsBhWc̪$h 9|52~i*i=Lhow}.[RSuM7fg`X5ŜTs~uTeaQڊְ;D+ nAyfabBKÖqM],p>v;!/:\b=AUհNgXR7qk@.)#49*&Mh,+4Yl+n EY{(V584홠H$&⪞R["'.۴4% X!/4Q[>5r嬻ԖA)H>FS"-!}g'{l/أ+X$:/ ?gEy"SCmy9j*w/=*&եIMeFp[9Ԓ&>s_1]6[ީ8kDs=g%ǪWlYy*^(/)8׈BQ `y6voY-fza++L3|AuA G݃_g=iqpbz6emFr19 Uy:o_#Z7;D`+@WQ_B3"1Ս D}u$|Zi*K{5=g8z#\D E!O,ްOSlQm[g/,0c=Z|WAKo.&XH }]tׇjM%9[PwM_ AJC ƍД"z,29L,=w喾?پ}5TZ6~DM 'Xb%n]d)8 _.ȖhZ JΡ'|l ]ejհ %Ԣ`x1) ͡%ѪTeBRe?[%`0ۏطw|D~U:~.J-NDJ\[y!.(GdܵZHnbSxU>l7|tiTٻraYo'BMD`4~[q8>J͖\Iz &rQfs35q0%}._+LePdMH{WrX69GqFUedn#ͦ,y:2P'ǤLQhcihQ]$0)k`%{q46yY7sz9w`*$w!ݬI &{;}3fkYoX.(_Wu?\[9  wqpp)RO%m6m_{Hn`A 6 >{<ߩ!eh^zl# zڮMMk%rSڿ㓂#bTIObБ:T{rM }gz/cqJa@;HpCO'}-㹦<y_0}ҙZÕaDYUt LPCW\eD]Y-P|tFFԭ518;MLAj'YX3XQۀEۣYN旖op>7aͶ=-~Ww@Hw57s |&:ZVVY.N<壙9ܫ2ь@~3PoXHp&`¾ֻܷ H c>10ViF$ nqUj(/uf{ eHp*D\^m_VoIXG3\J #!11&#R賦CEg} UAK;R/E;h3{u C6בITu7rb3jt#}>sr~*E~wt wGf>tp씺a?ױe ^ɢՕg(7[[͡pՔnCC9T /DM9dn+ ]#? fgk@(}N@Ȣg%ܾN;u7*^j'V>op!ik~5VprO Q,.sОon-~VfV^Z$wC ܋1[Mہ5 'Zw;$*~=+M#JIk]`8zsbcu7cĎ%ާzRhxnUZRqWb d@ٗe|于)Xta-Ł yEY#;)k6kHrYQ+,|՗鲼 Tfp3ǑnSf=Dم%H;C@G t ѭdhIFeLSPX5cw͍?"wOChv`ݐ]RPvD[ Pժ3{m bˍ9K3: ^tBy'|Ar|M3FL uT*Kwj2비:,fhfl!¸Sa0wW|y'c =Wә8s•fDʌ/f`_eib" #xi1OF@wtYҁ\5A>3~bA5$S8>~r]D"cAUWsCFx US;'99C5 X:0,%{MQAOGzĖF8[@1#edN>uhcɭQEOm*mDl^aD 'E? WBrPEsV|9hh RO\&;\gls35o]%4Qy ߱դ'hMd*cF?Z-oBY >JLe^,BK8g``t *\s0$F+9p8x[,\WHbTd]|C̑^^7qy7+Ѫڰqo]oG"̝cp~%?$ 9z&'~!)h0,I:\Ly ''-j7ħ s:Zc ;cfODJHVh_Osı28ce{HPa{ZTxs&@ \ -N=%M[j\ivø")*'WGW=ñ> KE}dnLa ECqVMte{X10zݶ= ;V[guIZ4Ϛ@XʞڵZOU1q7OǪSև~vTTMmw+YfekƟWh>i4[]H%5?kXkJ5qmxX'86vN}e8&pmY5-q@)s?/N|^1ȞYT]i9. {k;% ŖƊ8#L%)`_8 76Jc0w(Xd*Ae&2>,ݝ{p>1T$rތ1}Y>Tē{,Z>1 `cQ!Ig$y5,7̔PQޫUi8'd+wʺbױۍ`èt5}5ju(ο܏-1MaWNi[WLc wW$vD5cl`-_zr|v;M?ݗʧ PsBi һsKLГZyRE#TQNi_)_)ʹXq8 ii':Z0USfNNmn6f={6{t%-5*wZE'$Zl ;6JB/!-\ 7 3>!b@{[AKj4 7t5jмy.|]h!^:X.[gB]VSyNɩ,}fxIoҩMW(~]QYqH=[y%]2yK^!-xN;o}8^N*";\c<` ÚLL)^,p?sBh J)SM_I {n:"͏\ X%2C43ȷU<]#æb ikh`5;j$8؜iZaj,P<%<w677[l Ӽ`ytNsdUInX)=Gy _$MO+ڹR/0 a^' fp:uu2l(/,, @|O(_$氙#Xg )kB/GD!HY/\%׈~ (|o DޕMU ]c$Odp"b<'Џv9e+g>Nh=Nf_*\1 > ,ȆAyٱiNLNƯG6'}/'֕6NMN+c7ĊOWXz54O/^UAu ߁A9Hl`{͒a$ZH:P?^[eR@q9hNT=juLʛ N2n0h&l9b3܌^ZF^?naC+p$Z7XVve2Wn*QUہӠ!ʓʽVWZCD \l/t bΘv =&q1Nw@w%UJN ᑲ2kK5]͕%G-hFY.rBd&OQ>jyd\`W eWGfnz늿zOg@M#hZիѼެz!/j|q8 Pz+hƠ5 Գs햝Fg{(lIt__:>M|[#Qxn宥Wgǟ.Ѷ>"+AKy7?N0bweO{ygU%9;bwވztb.,VF"@Fbe&Vޞ}*hB JG&@tqrwFi5-Bk ݤ }MzLoNosVG ! c|)k#%JwZxij5*aܣ7Y4B_,7vrC!vZ &=Ti\dXXFLTZZTfڋ?mts^CGT0N),Va=o?miDg+)hkGս՗e/kT yÝ-]yv晱2v{] mj㏻ ] In-A9ܲ IQ@u)[Z^!uǝS-WO`.z~&V}="`lAaYNQÔ-Y[nCmsdtx/6Kϵع@MMlBmڥ J]ĕneI[DҘe<zB_Иw鳚XYd0{+N  /Z,26(~lKºOn P9Lhzw3Ng]YO('<8G*"pԞk8*bݔS (fj<`-e47;͍Q]] 䬬X{;w!qIz*kk"p>)dͯ&۝&oWn]Qz3-˫"$&Qʏ@QabJ >vv G}[A& H}\5ɪ"ǘdXeoDj:20B 8m`}YmRq\^RTӕ&W(BslQ lU,~T~⁂*IBQ];پTC(b5эmln=O@yXv~̇s;ƧF>STf@Ӵ PzĎKN>:>[! )5 0Gc;s00􃆃D=hjd:*YFۄn^T;A"~&<2MjV=Srl4ɴPRk0Tz@)dV*+eM 67!bD HyY7#-\ gΙ^+9&a&SU_;f额qFzJEL h@3ԹU 1/. >-ŌwOD? ovo=eǢLjW Ro+tX`y4>Y:)nmnEFrBO"u)wꤷ6eBeV SkE~'`PDžT~jWDD{NØ+xKomUo"KiD&3hR,!f̧p)Fo~¿ b 96 iXLr 4e'4Vc}{؜FRϘ'kz;VmwVc. _UunP-,6)j3',FS k7=XBMQ}(= ht{5X_Ise[tYȢ,L80wXiQgfbusY+c؟x٥˔v1rʂo\sAVT~Rk}Pl7-Yb Xu=P̘ypjP ^g^UA$KXRTNFG!zMZHwKԵTTpEcAzrEp1T_ ]oKΊ_L$2_%~,嚅Me~Jq$$ kU3;"FΖDTOoҢJm_UUUWm}eՠڿmNK^cR2`dmtu _L{pz,<^Lζ]0C27% ?nz~$X7(#FdB yώ'ΕL0kR+ORyqqSRV_!D'Q["vW긋y=oZ{z_Fuyqi`+PG5g( -d12GHRZH |[R7˽]ș]((5mg٨`jnoDPL*N>*T%2Q7즽>h4``9CJ[6 wK 2,EOQS}E.XuoRӉn3>(m JvzOsjqȟXE8їH򤩁MYt~Xt^ur3tK(!Ʃҫ+XXK@YnN䙥9ZyxMdùR;_]>JOR(S1#nŭƙF^Tߓ\*)&7gtizN1H~libvips-8.9.1/test/test-suite/images/sample.png000066400000000000000000024511421361153320700215340ustar00rootroot00000000000000PNG  IHDR"sy pHYs.#.#x?v,zTXtXML:com.adobe.xmp+N-IU-P(.)K<ZP[2 IDATx`VkWU f˾6Vnٶx!n5R\J}Ua(Zc\DŌ*a `nj ||(L[zm,%z:tVTиꞅZ[ކ>{ <8eNWU|G9 ߺ b*q9oqpt_Z7Wt=\gLޟuSYNGdL3F7 ؇`cvzvY L@BxAvyTFͿ'M;o8ig ״fzgcy763x̛ +^S) jZ[`h΃}JX@G>: R žjE] GD -hs5TP Y`6HMyJ7k{{> G}1Y]v9 yxIZڕ;1yʧ7#Y|l܅ArixخNrVTsOFeIhBai5(AmLKT6?圆|A "`Qx^JFň@2&Rp6n+kdoo/qXf 0.8 I*ζ5;k֪ J@G p7pwd?CN>Ǻmne*7&[ a; SefxUQi#Lq FrVMd-( |&]bNc*&ˬv&PlEnH%nPNUX/8\V&c{Lmj\KH-//j j;ᰍLPyRQM7U\( pJ_Vi*4wײ+%1+=),ߦ9 NE9`O5fcx `&Ӗ/"MȡwȢ\}r#r ą8`xT[x)ѻh ~w ݊tYs(s*d-Sr͸ lXOt߂LwPTE~ KEe8M2x7ZAAa^'q0݇D}Th*3a6w]^|G|p&T ?ZagLx& m%{-[|r .5]L.Z̭~J=GU Lí)Bwܘ\MZl)3ktGaHTin`Ȇ* `/R@}xDV3L!jXA6U$V|m;z7 k4@b]W?М"Q6n<:w 5ҢUZ@@iyE9`Fh2?b&hxB5 E)?/ 4U9-_s!b=p^nS:(=_葮 T&M`x9/'bx sVvhzdԪLHbSBYJdI%p8BUBټRC]ԂP<:V[^{yp!i>:љ{Mei X>ɵh k:EwTF$^Q7D! Q5_DB UH3 ΊzN V#gZV|f(Q`DW!/@2C VWQUSʎ #\~BRLJ6U[Z ʀ~ A]0CQו^ʬ>O^{ɢ\)b[/;c*&TnP GW@y]0 tTA-U@8KdG;0|E.t]M=Pk8^\mcEPSC_+Rx^* V l F鮯rcQv8@;8!ode؟qJ-Н7d$hBܕ_d(IPdG<8i%)kʔen2JdUƖg_s9 ! ^IKrv ene&aftEoW&`,[)`LtUlWcEXіUU5>>G|x1r"yvݜXK\I5w Q( MUCDZp \nBj(؂jj>w>9!\zdg~[fJb?<{ly*̹KGricpU~e3Lܽ<{- +S'ZuV- pE 1X}:;׃.𒤹ÝvJ仾+^+'tfM4F {#~>]U,;L4^_X=RK}/"TzȇJ ,Dɝh=7EtƖףRr'W4V$x\2FQG.4'3MuPLQFx,YkArN;h@?.(LgGNւӂl*O*Uq A@p&l`18B-ar*r\6*dnj?#>y*T֒sI7 Ft۵zqMCMSj īg+ >RN7z>VvGWls1.}|hn{)U=e-;8NV85Ea(JVeeԁb9X*h1YY p |kqFPu);-h jM<=5fS{CR1+f}8U4'CHW< ބT^L$lXU34\&NEp-N{yQ2p ʂ!)YYx# -$ 쌎`e5Om[-\)˒d-XVD>Lg:@FHZOGTjN}Uy$qNثVcv ie<Z6} JJ=ӎQ*($g-#Vt0Shbzݴu;Ȃ/\'luE6 Wf;U-u!&p=ow v3Aˤmt8b7:&:qp>jk_'Dn wroIwsFd0f]EGh2W t P:3k#%a3~1N>qeD y{G%[H l qnS3yQ~, SLRAIx{2 0G30q_k?L8?Nr0'ʮj^zXvQ!7T;^ũF~J6{1*;="Z&<`}&wlcq~5Y V =[|Sۻh&._b؀?춘H7϶C,S|fd(_ /⸬HmYameaCx2崶CT ez+#xX*TtY|;'Ixɞ|$ @XJȖ 'MQLjy0JU1odxn#^n&]QO cŜh}O'<4])ĢF|lgԁSSh-ZUV6X8K.% N =gA~ev9WuIozfSĖ]gaDk6bK?qnȑX\,>S]eg5^o]dSbT/$_%{ӟMbMm_n c`̫-vdyH!b0&:eW~F"1^şB;w1 e8zNHցݠ*1zEXDHl5qΦ`soAL5糣|#1'Z*Xc˸ZXr ǻ۹wz kIu*h6)#rOI9\"[GєX;yRt( ^pdkcί*/7]r vo;i%{@B`<pUґ^%u2Ӊ2v+Ey3>H(:OUO ^R(UQE /:j*:PZZ6=FEkz*w"nIG 2B~7RԪ6[a܁i@Jݰg:`[RkIS#U$̬V-gOUVs4Sc@D@]-K1bcނkP7vV'(aFfMh̞5w=DWjҁO6ח>ˏ!J ).H8`x  U*d}.Q4(/]CkA}μ IDATwla[" {c6ޚar}~yo2Zr `6Kn-HZ`U tcx']&Jz5a1Q,/y36͹ȼqNmqz*" b2T$8/ֳ79Y>l պ :y4@X^kx+oH~f#=f _Ūl|PQL@:\ֿC.Ӆvv?hom'4 5KZN;$kM4_/R^G ]ULFX5!TGXNnvv֊R?Iߪ69yK0YwZ/_."b+;|XaC7{c0fxoy[D_u紓w甈"l}=ZDsW;}yahN` Ⴘz ɿGIl%Db\Nji3R5]$Fl&/ o \;h_GeN7mQW6~<|m50g$m?+F?/,h Ճ7}R&eI2cmp\>Dk>xU5 V6 |6-𵴾l+}־g>aUs;&oL4"qm.J EtQgY eg-S >8U3NpJ: `#=,VJf@?Kf?(OfǷgo+~?!o~[oN^I[Rs P=Tm%Q0'SXXFHۈ I9S=OkqK'?mv nu!gݍ{$ܣZa̦ex~Eq20Z~;xײUx-l;o s·6tg0qTa_yp |Ճ[_-I2 u;-)o+\r(5=T5-pmEC˄e5s֚ﳶ˱S^*4tS?d$^MK[H%gڔeTX' o'_L`&+J-V5.cQq܈x|đM1|@IU4LN]>Y#YUz#3 r)ʚ* ڽ`sk 82fr:7kşVz*{09px 'V%tWSmnվcq^N3n J<ľ/cp2QrWK}w`PONb19cnZ.By?0h۲& ~/nd|̓v:Den ˠ"(]G@n!k53ϑ?z-> %jD?2~KΩw#dTF}rCgȢ?\ ;yRk^)P]& H놷lH~Y᩠-_.m;>m$ O|Y]P' _Ϻ.*+rBe5=yBZsи"`5 Ξ:A9~>Jp]﹭jv$=mST('vDԐߌSm@uW\hl4U #Ȣ8.bxh!z=t5T7 evj_8ˠ3ky[Zř0HS:IHVTgU'ڡ*ʝj5@~ %CKe%S<֖'3bV ¿TIWDma[+AxZ}E[Nnx5P)MjJ>/:3iuPgpX)7Pmgy`{{ xi ၞcݞ5r4sap!# h$7ymhveBfZg0ݵ=C+nvrU6#j"3EҎïp6J3m/)i)]S3WXXN'K$mU7cU2I§\ ԕcxY/"K`9`.޾hxs(Q D4Y$'7vJP7S$5Ye3 8k\-qZ>A69PXb>Ug.v1 U6~kh-a2)'Ҹzfiq0EcW*j Lgtzryp5wcYB5Dq~T]ʵ5pwqވr8YIS(0g$Q=HC ?AIG ɪˆp,̣Vრ!7EhQEoz+l喡KŠۛE]d2/ʀŠ6' jګh`]fI ].z`u{G;䮞YC}wOX:t =RB5Zӊbx+5W}G,=~#gj8Vd h]vf,֪":֑*Zb7}ހPq[sQE׵>x @9QN!~:e&gaZ /oXZ\!3E&#k\R~SĨ-..)}✫{q3sٌa1ü皩"$/v+8HD$nB`Zri7)=IBpO-3Dk@q|Tv!X?Gile=`&+7ZjTͯ a,ܤȩ%kܱU pEGg6=7Da]ĕn}b]5F(t&O+6`.w'.2(bIjVb1xN899Tv@sp\xʀt-C-=IK6JN|ỵjo(7>s'x^ * x|\_dV -DW,kiTs 2 2OMB54g Դ|hěKe:,ί2Imlr-5&g O Cʇ'[-tVuZ ƀ>x>v3n!oDI"فWhw7j>!>F` $5_iZG!NϬQs=qK p5h `NċAO17dP`'RFhbxb~Z0vD絪fCZw 떿cZNPXԓ)qŽ uU3٧nw]M ~GHI"hT^X^q8uInPQy֐7V^XXV <5F\ j.s1Jrkj`ej=Ew)#,a%vQUU4~8d*FE\xxAuI@qYɚnȇNj _ CU 4N"As8R)T즥0E++nC"BƊ06&}{NWjKwkTku6"#IwwOL3i;%|t8?t0" e[Uoz_z:EF{B%լ 'N|* ^S587J<3e)qzn: ^n &;d?G[h!J%V= 6W2]>+F#{W e2zgJi?BiMʋ9GZy`qқ"9_d*bHŗLZ&X&ESi&lcE (?vZBAC7k#[f_%v&ZCkʽkF$l%ǙC(!%O=J1\Ɨk+֮ϻO CSr YګE6`sH҃jwfo[笞>8#1= EB=|nKa=pOX~ XjgU64KI#t,a9[mA]O}*"r/}DY<d]ُJwDžr8yv@#XyZ#_|= W-`UMjӞ8?mP=D?+D1\DV -ᣌUi >?\ktjlU!ué#w]YS!BRc\EQu8l) h뱘.Ǩ@(cE^m4 `|evQ탻r)-Bk(SyN퀫DOpZީ٨=]kodEӑV2 IDATM!A3b|cajuu4#!jdFa74ffCDOv|YQ,$M?FO6•V7߫_TŝTy5vi(E//JbH2d{C)Pw-&Gkyd%b Z k494ΦVث.:Cnʒ/|M sPU@Unt.;Ej'GJ ℨz j16vIԖ 5GOT'FLrא_t)Ic7Z54BpkZm]kK*Kf۝ rZO9VL*bl ).5x5 R:A[;+V#k+jUUɰHP A0 ?Qnzt/P*Σ~8mWQ&(?vCUUh4M*Nבj.y/ 3` mDxLmAU E Ul^.sd1|CPFeȞb[*KtZaÞ{J.[,oHjaJYm^q$}ᤈ5s_3>93eAd?ٹ6CsyQY |aj@M,vDjRɵF&|n46(VJ53ŻS)ޤR9_ VI(,+6ro15-⁖+}M k8N@a=oDsJQPпڅڊ*5 -e3BaF63ňJĨvƬ<p^7 \& 4OyBe/!/>FSKKfsz >!C~UOAq O2*ND;T!kh~Ԫ[}&D6A k:XD]L ᮲*"joWJ2$; {GPWSGE8͘M_g߿a1ID/k4)a 4 c5Dt2 Yn]RK;غU3TY.CqdƨCh0 SK"UTDQoUxt]mo['3:ZJLK}\E\'*Vݼa8Nʬtd )ʉ&dUs,6Ve ꀚhIZK?;:&dL>YY'γ`t ,Fq*Za!YKA?d ]dóۍ'7A@[vX}mO]&kWb|l%g`Z$~l7;⒜vAUTRڋg<->jGe#yO x&\خޡh&JtaNpB͡, BwϏ)]Ru-|! ߃٩Y*vO^.7#jh(5egP[4-y{4TP 9*Eg"oN2㸱t42hCwEΠl/\dLJٿ~ |SSr:u pmvK2 /X'OGra=( ə*4ce]!^\r:)&ғEE1@N2eYݏi'o4T7ŌzO\-D>@/a_G˻q;%{C59a%K[exC΢j4#zp ɶ>6,ޝtVX2P:$w*Y]fmF!)[Ύxm&c0L Sת\WH+⡡tډ꩖t%}҆Xje&hmx٘xtxFU p< mWm7;7v_>x C)l/i1|[CSqb{@K]t>7U:2ju ǮjlN-,Imw"gɢ۹!W"]=—Y<9Q5bO[rӿ>z9T<6n'py_o.AJKxGFߡ]ә?b˩ɒ`N;=ܵjٻ:t] YwTP[Z*)F_AYQ&:dv9|gX4Fdɩ8Ï^n\qiIf~P9ŧ312oP/UKev 禴EE]$SfOKif[ K#kQd]+-_GՍC } 6 [lF+WP:v['b/,`Y zG׮$V N\ HMk%[3Y7_XT.v _ tMM+T-QrpJ ѺxNŘ]1zUF5=ٚlqӊwVK !O-J#t>jeiO_\b W?I5RGܫ^EaNxW 5 VWEl!$j6Vk={qW(@_2 +tMKѶncoX*Jjw.;l%9Z84: B-BSXftCYNm$; w!)le4+a{akNs;۫\3C<\\bRciqc؄F٘u?V?5X`%t q.#!0' j;Z/OLʱr7ێ^ O5\X;3ՠ& ÕuTTN_`{cI=4ӵIUSE?br!Z(>Ǹcl~ͤyNFЫh\$"!HGeدhS$#3YMq "QY+d;9`􏧐ހ$B޻aT$.xwE& (VOF}Ž ݃ yb]Y4`' we \ZmCAX|^ğF܇jyH QVP \ʋ8ד&L<o:)Fo+]UҚD6*&(ywboq;q\B1?:Q\ ){k8hmYV~fuuE7).{/>ؖg8˜o<{o( jEqN!Ax, Aeyr ҩZ[Ɂdv? Fl;=I t:؞l7Kl٭T RI61γA KճٛϹ|^;&ªlk|<殡Uїoa҇Ѵ Qj&Jx3<)t`1quR-)][ 8!UB0&-3W ՜hL(*4Y.Rׅ<™߇3̛)ۼC"A:hѝ>jlN4br[aO˞WޕiW׌yz=ojQ֧"vZCBŭ)Ճ`P`z4v [>wg+%{ʖV@VLvRGsf;!vʦhj.Sbe@jS#CP OP0KQDmЖ#gOLM:r&X ['E#(lwa) +6|AKobJQz| @HM7IV'_#F/bISjԄHU唶i 1Aa࢒*Ka9UdUAho^[ʙ̢c IDATomRvc>M1Z?K: Cnk$Q2oULc.lv $yFhՕ3*/gv,A*v.j Jn@.Am {*'B]uupcXhMCqL;)? !+ӫ9kHRTgݷ_Om6O?zwObt]G|g{cJ5fAgki>Z3 Rwg킸L@kFccTnSr'kc%Kiߝo9)T)r+5#y?߬T^>+/go\#hcijɁg\ H{^2؞dWwdfrĸR+Xܙg?aTeX փd#حr4JN"O $6"~)lDTVgOpXG{u xX LS4!.G9HN3ҏYfMr6;ꌺȕBwY/ u7Ђ,Yn%e\ h=E wicz=D8ƚc=i!0= N=iVxa")2F ΢jjX/ȳ(6ɇZ]LB#<8d]Oͽ]|$Rx%$Vz9Ge迤H Pb/cG~[]!'SY:SFPOX\}|)ӓ&L}e}4OV_w#-yYFZvz(B V4yz*pg5N@~9{x]tH C1N hr[}oEy8cVF{z/r~^i-y]c'm h֐~~G4%K8# ztTZzq~p| !2i!:j(,&zڵ}p+;`E/I64XLVc2m'$i js#'D+^Xx7>넾fO?SvTf xSD.3'hK6u$,g 1 MHsګ4ԠF(I)XjRtzuy`w.RXaW|ZXboz֑i߂;>بN^jl3\ڎt07/MlB`ԫH;٭!R^7֩V3ބB%\<Ͳ,7 e!<WTK:k*$w(G$OFPU%WMwә7h%F=c'!R mE[@{*FmVegg(a0mrX)f;wBo%_~ &ӗ-Jd:IBjZy?B{.\ O8W3'yh\iwJۮCD&dΆ.c*3\|JjYHCdfBv. vʷnp ds*2*"濎=|xBNw]\/›Eɹ൥}Y;%qI4>&d VJMsb6RAo tuQV*ȅt% KHs&Dj'v6_hVxy3ϸ5F+ZFS .\s e(rF)XH,_SQQW܃R9n7ւ D;pK*/}6ޙ m\o}aRA;6F/\؍ȇORCO[K0&>0I3&/i\5~4S|^I"2 YH]E1U.Uq{%//0^,c#;yAOaNvep-ud]k":~;汔Lw:hJWc:t"6@?[ ! 9*ETjg Jlr 2|Kj~-QXDin]|P9~{'Gxh7Yv򦹓ZA"\O<qrWsf:\Dj[M%Wb`[>rΒ|l{+#E6+Uf* W 㣠܁6~zO@i9Sj+?܋L\HIU^9@|7XiN87 닖uDhT[%"ExkɞxO"D?.%,ݤi1c=?%Boaj&0'l#أ/CˊZpT[<I]D7~Yearb=ed!c:ި75~E9v, Nuul;괎ǙP7U/֒9̓a{A~Yb+F[魟(D<0Dֶ|j1Y!5q=A^qjsh:2jljL>gˊh8lMn@{km[.AKVBr! /hmp҃tڋvj]Zj˳sDDXN= ! +x2Ag9‹;x. =?YlJ JCeDya.*mNK+c w&_"cETA]R'T+mP@a* |l;ÇPeZn~I&.hLV!mx7=/b'tSyUG('j Micy"gvHMH}꧝ji9*X Ich-3QqEt}'YYV"QZ*8d!wA'\S1 '~aj;նjVj۶m6Rfh13_)Tϋ‡ (X'ڠ¼jJm0VMe]WoUyCshGx8K@':/G VV!;ʫV.݄`(ɬ*T&e.uOJ"+%pBi\2GdIZ[!>lئVUX tkKbJCw@qWGb6qU56ESK `EIu@@&MA ,m)O<;I=9`M)y+:87En$URe `wK?dg'Z, ;HuKkO *-^ᯣ݁h_v{?>RO fmp#O{]juo ^Td6ǎԮ̪lΫ~ "(׬|nXf8*n[:BQ wٔXY䵿9f@m+a_՘O= 4#wZuTqZe3e*$WNV=ւgE%15*!KG_N-GAG l(7!ܩwpCkb Hd흙e. i{q~}>S\cҩuah8M`Ղ[TX@sԜgQh#j|RǪ 8mĉ8x=Be!P&j-(X.XlArtnyQE:8lQ+SfvdwO|Q7Jڑ\WUcF(kxq5imDk5D'5Rn '{]DeDO=bBEABM璳JSIkc*Y#3,~g+̑`>z'._?q֗giwC|wRH'" ;X9d6ItvZo70 h[G|T&nKRkHj퇹ӻ[+An` (Cp6K]FO - eyE_/rZEʂpZg&‡ڳzp__yK^ƀ*#*@nNJs6-vek`C: 5Z~dˉ+c]Y%Q_Jdx,HI OcC9h (֠yz!-x&r;Fj%39Gh a[ힾN{/OqoFU\kb>G-p#ytW[5 _zipW}ݬ^d3|NXgVh~{ݿu!8JGשJe)18*J 9׋NauCLsgb:MI2 CP6rX!_+8䌵8EMKЛd!UT=V׾tZ &^8akTdIK)􏝋MCTEt s RP7``^0fe_?uqwYRm!(fUujChqA|ocn9`^7bCz+8'8j)ŝ|8cEW~fAWQ󵫁{ mBzEO73uUcCUw .6%WN4^@s&2suR[Srl&x.XDPӞ}x ]p-*Џ9" ۃ9.@ހBU^UMdSi!bUwJ9RE*3Jא7~ʁ/dWGj1*Zn0ѫvAW)z3R03O,H9va'1f!g6T6/ȫO#νx#r=&N5"M|6Ozz^M(NUa{x lGd^*~c4 'h8}kc=A- Ì27 ϲ9=JL]>_⼉|$W*=P3;jNR2F+qtIT7h }.aUC/x~paa'x60noPUEyx ݱhPDF#,NYq]a%fG$^ַ/B?}vfp^4-ޭYɨx 眫JzU m^YNM93L~9I`+6tq Ypj ':ZQ48v8]WF7UsLrZWv?Gr]PO'12췬SŹ.;bGclƪ*jFh8I {uN9@6ԁ7O<ߪ#<+vxA?0I {9"} Z933Ìtţ渚J$5`uEX^bh**3/WL^Tc#wAu<t:V־hމ>x3X1b7Z I2{poboM22IZ6P߬}9p5Ahf,SV8+kGiQn?%uvO0^n\^}T{k;j s ]2 ^AԮQc35ĕ'E/ى,*X"ĉ !?hU%4HhkqY#G|U,qvzPhשȜdZdʄbev^#&eMlF=IEihiz^}hJ Zڿ.18c眂tܩ(S]}OSӷf'(ڝ,<9@?7X]=o¯$I sxғ}U5l"=j< :!ܞNuh-mi7OЎZq~LP:Ɨ`Br1Wtt'Ūtt=ߞ?Z0*!/@Dmno3nj)WX$y%,ś" ΃6-鏃bx7P2`e(uIf B]3+Cw-Ma2Ϋ: GuH:=Fup#B̕Zwz7b0& }cXrOW#1=yD*:n˖7l$P>X`xP`Y_/﷽o}l? Wb`+KZ-@#'ePm߈h/Kgw >/䵞 w3;gخ0NpyRƩs*\>rl\{T Ct wUtmIUFVkF>6h UwuAW+\ͧnU"+\Ȕ>3(MvM߬=6U$dZ`Ukf^FNOKqvy%Y -\]s6$I{mK8p򌧝F^_4JN>@Lzhx'AZ!.M==VP &B!*<1sHr$Z^d -8?dPnunR pMu> 'j;L DKlrE2bIx, *h*"8E[UR|m.N$i`X6ryUBMPAzPN_trATR58C]&a,jp{Bz]t& Â;܆7s)*w}sLqrYmlHïolfp֊ `JRRw= q s7liKiSp䙨~9f*gh!I@@FP}I>%UٷkSBuD<N7`l΋%*6j>5xܬٝ?N$;gǪ9hWAT 8ΈvF:v=bj | PeAՖv@?o~֗ݍKhkYP+}A_%y0pTQ1n*5QMx zL_u^kbM#$ ZE -quyDZ-;Ac ւ^~FP^v>ٌFHCWڙ`6\O\)稖+f8Dp 5\f;:FP50rXkJ$ϫ@>M[h1TT-DpC/An +g畦T0Q䤍*σ*iDړ"=:?Vӷ<3pS;z`USSQNE<=E!艶A[{Q}GkԩvȋX 䒧!)D?,ʲŽI_ (hZW,IO2GRxYMVU.Kiѵi
oog8ncvrԯ#zҫ\TA{ )ẗ7s-2 r@_ ~u@#fUA5Ooe~<5C4XA{d8$h ȅ"Ԓr2︔^0\B?ZS$tWڜdzr0w&N7%ɭNk=+.b,ޢIbRL 'G'NlJIMh\t((Ѓ 6(w"3XG5Pp_ =ͯҊ(V2>+{kxHgsVI^5v2?d D$&08̖_Fa{rKo'_ zlr1:TFm#X;t<~M"#6\OGkV3w?eE>)+ &k.4_X7"kRE厣*Nʆ,iR wwse1%< ^Cm "v0ajVP ˞甇J!ep8JC =ǺkX?8;|ӣSW[-|I:zbNGh<BC0+n3b 6ڊ`cy>XEe \Qml8G'Dof¼;F5oj C~jK*7x ?OCgu m0A3R6_#_VU:*vaA4bUʛjْ* HZ%^B][O&ُQ lr<7"pmn jS43YӞW@l)v.MQJG\:,-Y(l`!'º`٦m12f$+~Cx %GcYr86PJu갽{U](n!45dGPb)+z{mC#i+fp½ȧp vq()'犳&И9`D}Sf|5LDt :R;p;AC: N~cT.ϓfUOLKG.t>ly^eFu6Vʤ@vWe4eE?{R`^ \o{{4=؅#O fvzⓞ~0Hj,zxUB-q72@S3 XԂT ́mqYP 8E& 0mqĀ(-б Bڥ/ٹ hOPxXTk`v|2 ~ _͖XMp(u&]v‘@ZĚp-{O`?pBY[I;G%p;m `t oKAe/Nl4~b3@ٵRc'=K_v5M6VV'ՕQ"'zNn#FHv.($wryEߤ1&Dj<5hi m%܉;|}5D-IRh]N[fסIEj;}*RN TAxhpz"znüA0.mcʾlQ=> .-m7%:kp;EC eCPKl#AsU E`o]bu [Z4 Z`u/c~[=vv״Iv1/6Ipқ7ExX3Fϱv`q"qpg=c|z3#EoV!{o# f= dB nz3zq'7Mi6$p,]iHyU  Tߋ'X %+v{^'^,sE[y}'vbo7\p!)2벶4,b<| gÓ G]Q>YRG"`D I vVoDbS%7ijJF^҂dB\dI0s ](sfwo3;!=wZ9R0>r54?MR#nJo`K˓+;:bCyjXShV㼪+>[v9ƴ.i-T~s*KѰ>'kݟ?J{PvۉsŚ_!Z 3ž nE)QwNW\S4<fԟڟ6< kp>M$/RF9hP*erOxSݡUw6 K횰|_ l1*܏β6/}:܍/{)>e*?3Qde_pIXc'' /ߒ[]/@&y>T Mwy XvTE U&Rqr"#/  - =4Wt0Wlq j_`dsDWQeb/}]9_.C- [xT QQ"D{[2PC-h+K+%&mXw>ɳm6|6; a*J &B=e*(8%Wz9#?Öj<(l`zGFThyqd z ʃr@n;pVü!D+ t=h_rHA=1y߹,f^M"N>X Ǭc8PҖ:Z1o9A3[l*H/|n)t6=Zf,jKKnn m&r+? "7.~"zcS6Kԥ*|7IvNjʼU/? OOz m-Pֲ,ZMZF6CJvVƼ״\ .0w[]ďxI m9"^]TS߷7U-5!\?#䐌'rlhaT\Y :oz߹F7pz8$rb=,^M,l Mr*FZ],E0/(C sŊx}-a!!q&u:.OQe=EˣhPd7>;+kLC9Ū3V0-PZޭ2(+8yR-Swd/ IQY*FJmqŹ !@b= Q2žr*r XkbVkHCaAgC?Of */Gjk8Ks^k.ʥ QpAk泧:"qAs>e2A6MI-OX.3m 9٩4Exz M) ^stC5&>FjZ6g}OxQ3B}Ls.xnkǭH6ٝ_CnWU֪Y]oUI7YM1㴃\{ G?7:=QYJ;j-5ǙSzc"oY9@ FpT 7Қ^f^OI'4ǯ8XfyxW:GFz-wh?b˩\f_m2 |,̟V9VpX؜NKk0_.wpz=yB\fILz@..}!P)]FD/xSa[2Qb'E2t1]x<jUwhPM W6}Zɽ4 *;yWװ7r-r$" *7NdE`| IDATS'$8d@LY _HG-8s1 y]:.*+g-*,' "^؛/#+M"OiMЋq;@Lߝ9^&"t ͑[J?au8F'zGpIygE)Z"5껮jzC~QZ}^>)M>I p$x-^\ϥ7#p=<ݸ $E*zz/Nn=h/,̚_j TgJC쵕hq$tEqٵOak5N|({;kH k$@XDhOjb*_ cN}"b* 3؟ğF8kiP%r-B}Ukh2St;/z)ol$A"+oSɟUfcgwn6s'E`wr؟v+-[߅BI=־;G8wzGM'rF:te^Hר)B>&o &X? KGN]#g[q(;;.g=p>(lp{W1W)#D5Aאٮ 9Pi'zYPk+-lKv  xWzeX[$&.rx.g TG`95˜z">pPSցk_0$kO$ Q 8 P,NH:*mnk *p:yh9AM.9s,p2C`,e4#) [2؇_T^ftu]X xA}o`%X$+d/t  eTK{6g<)V_pXr9((N6+| 8;W~$ H\#PGbOp9KPyV%kUx;I gkcTSPPAKq O7\_ G]%oDuD+@nN4V~m>~XXN.Fp?4-&] '0QTAY\3CMV_hODnƹCNtP }]Q>g)}R7j8dwNZ5AWE jJJ& ,^ZTS߭=m 7.!1$͕ٝ&Z(c], a"M/llC5] IjG$5ru6ybU?؏P=+c~he N I,hVVs^kJNH^ xSK&Nh=Pcsqu}VȨ>+NPg]t2TV&܀ :**SZݰ?/j:Ѳ2w2sh;Z3VaF&/MKn`vB'P=6n <(+xP/.KZ3!!>8?&h|U$jZ-|gPX82C_T {k`_A1ӻrjl x*]8ȶm۶{M1dۓmtm[7LhEVieIVDvd;<-$PdU4"繫7Qq6ON=`o]I$KA'LyITxF 1H̤Oy%߫5 !ʝ=عlhfl쏨dwU&)/hבЊ|jHxӝ)|2T ; [KR܍UW=m76Wl%5JI ? Nё|1'|=QwvWAnژ5:uEuZfoDP~Mr$Vkv":Z&7%4.B4VkMdVvq8 Da|TN܍Gk DiDi+ >t,)'6%PEka pk[GYmF[r_kDeUګd~Xd]BY|bX*;g'lh7ljzslOX7Ljx+Yަk`Ƃ ,wG/~⏕JN]UdtATZU\t\GuPAuIVZIv, h `9k1P *{P^ J!1O,jz i!sj %Z)b!3\-ɂ(Y-V cDA啿E".J!ٛ Gg"9UP;<C0^JfB$ƃ(Jϑ *mi9?.eQV_b9U\Cᑒ꽚ɒh&Eڐ2,D+w(oF[d|i9-9\kdC~4q%m~<_;&kTkEPx1{,Ul:c)VɮkqIi7$Nۆjt:_ӔrIWk͒~($S?Ǵ6֎Wfډ׫*% /ĪO x ۡʋwxצs2Cƻښi(Sh4q*x=cRƏZv2./i7^E\f|"xIeU.*#݁PEds 7i]C*%GQ5cwe1;AN=ajwwk42:YwAj, ߑt:,2jV,=e(= 5J.vo hkhӇzY OlOĊWwgT XX[G_l!j9H}#H24#wCK6RiXq]}4ca-RKC"qo73ki+lZ(fmL.qBޘfdS=>>JzZ\L3YPf8BMw眐:(U4b<62)`(wS*xK 2iCIFSGd:# p&| jj"|0 f;z7yߺFI'=V P_MՃ#0d^d#x~H9^aM~BJc !O R;NG ȍ/wPvYmѫF5Yv?γJu3Pĥ&:xs^Էn[^i#m *yPgt {#*,αNCuc ObP MV@w8vfPL>PjYgM37 Tr{h(ȀGrvuy7,\A 7r&jN٣wyXv;(*}7r!Sw {-Z?֡;K#-$PnXC>؀qaW_8|''"1hcHS^[.NF)GF(l?/ $}LJ>o5~^mf<$;Q#VgNѳj *;# wk6Po)y+ju8* _hxZkO,F2S\W4VΖQrdTЛ꽵89myĦj"Grе[=A_-"*:aN˫jnt/5r<-w| OGRS5?eX|RCpZ6q;7J Qn3W[r%AmӬ} A"voe)VZ["AvMcuQߋߙ7B-V~%L7JaqNC[b4yLVSUϰat\[-D=[ChVwWx =A'o=2*)|Nu?B~eS[xYZdAEC[4Y(suY͔ŔO'u\RKYsTgSqbJVj̾)We'2 =^~f?B=3C/^ľ!Ex;UL.PdvAUQ]:cਗ਼yH>/.^ 5>~ŻoGDw˚j;J孝P+?ڢ^\@iJWPeC[1yV'R~yT=/3GJj,Ҟ.wFK@GiZBV9ʋ܅Z27PI}dE nG,eJ%d4 2KmB5/wE4z8R78\gwfbzRVNqJ ZJ6x!諼-Y|xlSέETWPhɿL>@h6YY&*ohlDԄop3! IqyD7í CwD\ J:koN{3.EXWCvB<$*?oC) "mlZ͓Peߚf)XqWXCk' 2~أk dn"ܯ4-8D P;HTkTS{$Ig,/M, w#Skl9Cu2]I?eX`+np&Z`jfts'>zCe/EbNwsZE;X/ͺ<̂D(sC>?j,H?UFu#S13[|l}^ɞ=) CnTև"{WW0S)Ci-i\=LH 7e^\:xwGG>7? ˼#N''8-8 !<ݗ^ߪ/#'`:Zb1KpҮ*osHoVҼ5>j3x8_6`D.gFx`:?"/d:YyPPo 48^G=@ (;ȍV5۹iPM-䛨ҊmhF'O;e>~DSyW9+˓1p묔l Equ{(:.XD7 q&>OuT8}،nQp\~.&7EfGZG>0HUU$^Yjy"Ri5VSDGv,TTUDd' {q!ڃe`ez,"Gdܪ,j6@AG+#A7kߨKDD׊vg ^ǚkϛ]ؔBVyET3I}t0P\G絼BvV^08rz6ʰOM&s2TGr܅QICx2Gh`nFHMjt@aAvhj+41j7rٙ dUyH)ElFMpR(gJjE)cD\6Q"=R{)T:A҅l%:l.K8EAEL.,l a$,^DF 'g=$o88td_)NkhUmʏ3<>)mμ&Zʰ_8i יWNgLji!^ QY/SdHkK2 %) IDATB4BH֘." )fFoh&1ReM;ytU%S3ΓvKO\![Ys ' t/M_VU%:Ii[G:v o1"h2_%<_.>D#euQDaZI /'xCX"QnJ~;Zi--M[MEGn!qcVD VHT U@sy,(]/]"c2G%Zbkw~LVduWRBVhH̭PhYΊL/LJdYߚD%@7O^PRH<4$+tů\x_Z_h'h=Bi*Z!J E|aH]zI1?`Ed}o/c-C-Xg*/d=JeqczvjIoQ} oxghx`|֯Ch$b"9W&i Pm5_9i9 @@'4oВv+gNmZ2|!CBig ^Jm&4%\hЈDWrBD*6,tOUmTVJK:<%A L~htC;کcs|./<ΧԒ#"?,᱁4,c,6U[`w1_I[pp*ݩޫ _q5e(22¦LIjo?j9 砧2}mGr`8}F R% g \TFBs<NAY}-1|9-3ܑ>A 0GEQFu#=e]'N zO<+o"[NsES9(V Y&rX=9ve2(VSl#B%*8uzᨉ-?rpeZhܤ6R%,\+QY!ދ Cv$ezG_dvӜNC ^xSS>%/XGw |T7::p'dsTv %S/)2gk4rB#kC=8L/P- Ng =o-VUX-#pDg.1T<*AmT٨[QUF $f{XCN b<(V -Pfg)V&iR )G ^^)zGxf!-a `Yh=)baJV^8?nꭥE-Z2EevY(' 6qYݐp?6Е)yr@)yVoHҐ4sV=Ɨ]\5W?tGՋ ~K ekvX.xD[E)W#a Ӝni`XEA-]rF>5xR|ky֎o:e}Um9m!k~hM5o#fQ]K|=iWw]69)r5yqfx5ǞZ&aL;V|['ц#y *i=Եsv G{H1DHpy/kR?ʵϼV]24 fUvUՍ-&ծV}$G "t>(6+?/IՐcS/>C٠-Wep)ݝGݩQ팭=ژViiO*P&:\dS]=TN{J.|vkc8C/M+8\5RO NLnmGe=^:=ÍL; G0EBS{ :{V9_t>cLaܟ$>HpLL'oMHO'78eS5a%;gOmuogJP%E:JG=ZokGe5E w[W"xgqd 7$dev\߬fPEqE53%w$jJta (Z9D!:aY&5DC!>Ei+9qZOHVL\J2̀:Q뫂3jSXJ˄9F32Œ|hzB;r$i%4O+,Fk!\4ʏ0d #ڍ#6tʆaIf4f6ohS{GKݪ:wTy kpubثqc`#n$h?^dj;9]jX{!j):SN-?5MudQK*ހf{U1H3'ȏ۪J'Pzl("C;vvis`NjgʮJ@ΕW95VyBCk#UlG)O1r+>bqR{5 ;HNЎn rG&هw%&r:5BCݵĭV`)˦k]m.A:WPW$݅g^N ]1O&Nc-oB3jꯛ-cܟL߈߉'ؐHR Ĩzs+27 {5K 4G‚kq{DceqV=M%>3 #M d8ynz{}]# t^LoKo oc8y'C2y(zlbƑd#*Z\SX`6Ι!iB`KG}I9oVoj}g,WEFl.fg7*⻰>uF;lQfQfnhUcXsQNkQ`S5P5G{|>yj3ъo`9eYWfH,)C\ u:^d]aY O7aF ~[/<5+8]Ul&ZnZV=K^6E4CeHS&ʋjrOz% kZ|vhw}4L)oz_BK\KYw%H ,qeAMx0 zVP TRv:niAS43A*TyXT=zV벘amab<QsG}Pe ?Uz5ӺdVQ6XleLݝiluGlF8~2s(ݜXlXLěV2p>\#3Dgh g=vnE5K'DZ5lhGf}@m;UMŎ 'j]M f=z?BuAb2D\zg yy^4~'C}=FU$CR..oЌNk=;=LW%dz>FF8WC;^c1T@QLev.>Bú,rV5<7!g̛ՉBd=[s oF\Oos:%bBo# Iw#RO詈N( v!/z `,dmNld~Gm*KcS,$8[j CjuDox&o(EUUa۠ G:픱xF >ǓQvvw <89Cω^+:uKdT[܎xB$|$(UZm#,k{Ţ6ӬM*YJ၌7I4;%>w7Um 5b}ܗhi}{JG,nhM4m O*:.=#VEʉ2#W2Yp\Fsg5O$8tW2k|{}-<{rlx{SZo4? WxrBCg\fd̮/֚@F׀7tZlBQsY tOȧRrLwDPct>at7Yj3bT/>:"NWݍ*^b+:?$u">GB(j2IfNy"pEL3&}Ծ4cy_!H#I67Μ^ 9z8_gpAA/y3`ӧ-Atw~[̊kLpR<;Rȕ'KVaD:s:<0*?W/.J #c] S۝'!qZ>CPZZ(k<<\{j]<{\5sn/mVM̐UO%ȣ|K(~Mamqq#hN֠(|eFY[{e",%jhxk W! sj dEdgc5G֪,ó7GATeqzLBQjM=R^4VjOKI?$85MS{zp5>7_+( CPQtrB]YkGN/ʫ6&6xl\h_@Fv shYB6:Z}8&iy"zZy'2NEy-L/cUVa̪h\ =GE74 ǜ>KQBlULmj{B,OQWS}\}PUܓϗs8Lq>͇O F I“,ہb8(o9,Nx9~^E?uʼnRiX=닒a &KVI.ov$Ȏ J:r Mm*|3ӚgAĐ㢄ZdO¥lՈ7~ґ9goKSIQchOCF4|bhP:Hf)p%QYKTF\ϣK{zBo.@_R^jfI*Z;BO\!Fh8 h#ZI"co>=gd> Yʢ D!љGoҸ]-i)r,G<6,S?ƣpC:@CI|" G.qWE9ta*JerZμ.Y*7\TuA5v JŵPvò 8QfmwMǹ#^5o"_1R {Y X+%S*BjX퉤 jd.Ʋ b)4D|C,#*\h,M2Vx l9a]Yvl[`ß|*$+ڍF3ӪhVsL]9Q(n2Lb9 <'lA&q'SO7$݋RLۭvwTqeTv7t^B=qltCUZmxW5妚O3W bs$_ >4(o\?pq]4 3Jɲs F.j/Z ZWKP2G) џ=-V.猝^wc o1mM?9LCuk"Mtޕ W+)a}\=,Ir?`?jhd8?ⅼ:MN0ʠ|{ B/TZfjo 4c2EÕ-tzA,l[6Z;BfϢ:-R}#/#%Z*yN(k<N" 緹ժlGv^V8oBĮ͎<3e¾ETF[=kZ;l/nOnsQ0tՖ(E>+Z][oqF%"/( " }#mxRV7凌4TdžF[8 T,d-:b!^K4YMF]%MLOX{^zJK9̩z%t.1-_<  VNϋZcwoX^H,0T1P8QZAN62rK&t9W-BkyZf,uT@p%J\|,U±䅸,wxAr\ӤC`ӂ@Ek'3H9_;="!w8XDςwnUVaAsx\hTJy*➰u]ch EuI0d:>|F.hP =[MpHQc8cb?%5yԘBpSh- = v t3R++lw4ċ@@,XGi>޴ :t2DE(,G$ ,$kE r /W hBPN|w*h2Qqvr^lOK$!ԏ/Ŀ[/OU'.(ϱ סHVe`ˬ':kܵ|JVz*1J y5Tvܼdu&ZDu;c"J3j-WiuVK^ef1@E%,JFf"@umS)j,v(SW /nV4WŽg.Z^$3VVaEZGN9'SHn$&XM#x YUQ< k|@Cq>r'?ˢbdY} ^J՜*"g,. k+$2Qcu}Ej^.E84~=૜CΓuT)8e:N# HitCBMe/"7 ub|3Cq$z?Ӆ6zHn$'rA (򊪶Ճ?E6Կev/flg̿4*ۘ))~3R2F:yIPI1lj"\!ukʰ :l7)$ywQ5Bh!>RM AyNp)'Kxˡҭ!M!xnf#k9-B:h'\%\FcceI!U΁Ax<\Js2 $U^ieoAnZMqH?%]䮤ߤkn ZEe/+ cէatVGZA7_ q{7D9R~8Dv1dn,+51ɾe޷]Hh)5Ja؂&;2U#!rD}ipF.e{\9HR])JO M #&h8JcMcWxx~zhE}n`#??oF%ewK=)Cb~)%D[kw :nkO1䈹YՃ8h) vb !mpV<w11_~ѡ`3-,˘ُa&e"Y!; ZW_=x7=E CfWf ?tW Q5f*fqsΙ8g# %0ejホy*FԆXKqv$Ajh 7:>N<,ru'G f'K<0N18?&"Hq_X$*~MyUNbAQ*܋IQmQo( ncgBCv@hD@Hfx<8X>+c&WrƦZ%{$~C{&jqƱ?g,UC 0UrpU,`i}5TsRf *{;حZ%JddyuF/%*!R^f{losGI!,܃-:->~;X#HiEZ|;#NqŹzZ^%$BL?c8 GI:{̖L\5twg=ԚmWqC% Dg:ttI,Qht2S'QZ|JK]Nft2=*y)JI:\r(W(2D M2FyN?:zBW-2( ]X!k> ʦSldz"G#U =W?0S{ʈh\O4%7<Ƚj]pq!Qa@jDirh!63tFf9S aSx Pc.u ]MGi?fD&b=P6=hP>}[G+Z;B{h.:xMIIRreRGi7:芚G[Q{\_r:Đ\涐Ǩ߄2\Խ_th_毮PӔj3hAu˞G2NYpU+O .&]%Q<Ӆ݊UΑukh>Mɀd,[(Cvu+YS+o`]wskW+i5Q4]݁߼DF>vxz;Nu V cEM|%,- KD&q$9f$7 w2JEIk5?G@ȟ<(c?4=R (=v3e_Y+>m4CD{PZQ脺q]'4Gs>l97el86.P.*jyTU~)<>2Wd_*MjZOd5,Jk+r@wmxUWwS-+M{BYHv44Y4~l? 7D=^WƩ.G%an&́Yi[/&1D ^܇@ %Vx W{qOQޭ-V9FyyQnvWw# (á\䃧rqtc35fSh,~ɻ5b\XaaDZ)Mh~CEeeyV+^a$+ȧI4WԔ/`T4/"XOhqSʿpa+F/K}8h'z>-ްsYfIwvg[k3y7OO5N}7 Q&)vbfjZ.uVQmR;CVXumPdl5nCeˍds',s(w9LiZ6陭&\ exC'-qD~;RR=1Տv/DwB2eiYj]QjqWP~%|}>^C IDAT~nV 8dw{ *!p @-E[ԹxQ2ZI%JH!tlGi+sh CM*g@cg!Y:#gujXE ו~t Lz=Wk9ޭ<8.x}ff̃eYYX"y:#p>j5"ޡ(lyy%Bf5R5r\롙Br#NY7&,["ɍM-Fd[ٚ[Jȋβ<M '6zVg2rʦl"U͡26Em~Xf%B p$"]-j%ޡLwf?N>YB:]iꅼT}` ZF$͑a 'XdYq~(X?.Ʋ(4&ko\9,ճNYX`  Wz^7+ h%Lv*zZu3)T" Z(q((Moѵ*g=)uO;vT4RtPT=Se#(Ȃ5rh^9z uv͉A]>lqC[Ll5Yj=J PPұh0B`hf"4 6H?ʢ355YL %E-hKut+>A9;vYJ0Y'P+j:o m ~N+5C ̕#P3؞LlK~G;Ÿa `'UkkAת &8ytۭSz\htVSj%-us㺤1C]qQ>9!  >zr,JSu\CCIP:|:$<O_F(t%̌Kn+͔tvZlx!k\]uͻ >`{Ea8Miוt2ڧ3ǡk UlQ;( (_ rGX)X$'A*& "pz\(!g8Sɶ}" $|aܴsƅ'WP:FW+=Ll>J.WQ%œi>); C=?G"N>פ7I~v'.~۹>hxC<[0iʭ_Wʩկz)m؊ϰ ݎ:sP {G-=lYVb.Vr",U}Rb4CnON?3KʓocZ ke>#rshIi\PUT#l=d >Ej( g@kxGkъ/.c hz:lh7䎞/)\9yO̐MOǢ0CRH4qb";e!kx$<ˋ="vp^j6NIg3l@'O߱-V;35wz wٸR5EZpT΂;uU禈 b ,PnzPSü" c:>*ANES`Ur9 )>pJK=Aއ'dGD;x%ڨ; a) 4GJW3|Ǵ0푝D"-A #D¨Xʫ[?!mBz}ݭhu"hh/'Zv1ۼot~xDº1>lQ.BB0L唬Tq2Xf{%wQy3>L -x#y?W!o[u )Hm!=gLrrxa0II(*X".(=C ~3I|@!\EkpuxFkf_{i!LFyFޙv[&P_e%fq9C 0¿hqȳ.Prۀ9` ,+3 c u >[ / (gE}u5O%J  ]iV7.ChG;v_RVu%VTfqFŮ#?T9Ӗ,hm58w#j(F꾯 +Jܸ݀&}E+8ϡ#ʰN6Uq?D 6U܀wkpj}DkQ 2!t[0 2S-U6R,dXqkӌ{QS})|/rY3ܝo]8V6j;) ;Đ2*yavq:G?/Flw88zZ4.-#y( x pb"mEy&ဨ{] &d,["rvsqx>*W)<,: 7PJ*}{\LL"&8-01l,DB"rZ1$qEYTwv̤h0@"'֟E12JGpQ<¿"nnp&qݙڱpLfOcBQ11˪j>9DY}U@t=P>+e>Ù̽cQM<;z{Ж۵$|?>(B(V,t1Mt'~RIʱ4"BU7 Y*,OcU#x" )T׼\Z'>#TF̢1]ǒ6Y P~֥^$h"ܵ3쌯 .! ar(%:\&?&7P[ZJq?0Mgp)x"zX}e$QRU=I <;$]T2[z|;sܧK0yԯF߮-peUO\CVP2̀0XnQ#HEz+yy C#F|y(Oe{m]D@C(5Tn)64f Qϕ=4Exq-vKGRSB2H,*b kI.hI,bGV9GrT3=̼jf"cX;Ͷ F Mxo43ݻ{GmfBxdv -_]"O_VHRk\qb(J9K؋۸/M[v{7Q8l`{/īiP ws$2#QߣQZ !usU 1l~5Lk6 w֘~ %O  {f-켓^fC'h`>/n[ݩ174TCbhM߼d+i"|iȬt'ʊ86CP"J"xn'tȏ4$y978e Q*HP.~6l$ó$^Xw}v|&u]I?oZ/OR]Y=1߅jEh:mE9*$fI!V@a2YF+qJ:rC0 ,%k\ņYC3^\_ռlĞ tf4@HMKW.A ,,{yFEZVwk\DUܰ:aytF驔sjU^ _dWh^!a,#:HKnxn(Z.";."&tETQacmdXT(̐ex 7+\b>rq%~]QS#cM0: L)hqZ1&Gi-IY^q.4 ?C?_d%r_"̪qf:wC!Se-2?Q8m<x,)hb "4tfϺNaFTqymk.&0"A'5Wz|8:}Ap#Jy y.a'Nˠ";I#]DPUl}h'}[ 0#轜6<ģ.! Q3{E TP-㸆ջ,#E (rdh ti=s9íoc񬚼;Vt;18Pexo\lft -?xEyr/72^dT ]&IzWi9o8{CKlh8췽Noo0kSʠ}w)$9iG/bS9@XwkA2d)@{-Ug/Q_X/Q-|,J%jʔہR!H1|O?ȷxŨ-=psIҌv}.Mqm-[7e­m-۸76l-,nm ^sv _gfY+J:9w%~Mv37 e pH8A!0Вu]SCqOXTw e \nOoCV{Ɗu%sQjL)7Q w0 x(<ϊۭt7H?Aq+J]|VZp_`Pflj\ʲhcgufw ǣɾtXV ^EqW$ip38(r0'?Zo [ ;]WTc_:&{ȷ%G+&Z8Q݁:BOinWwH1{3F3f pJ& OZ.pF*SڮGkyh<ͽX -jYKŤz ߂[}C[Af͢,Iv j_F _v-+%PO|[gXFgfzWX?&x|+C xOHcd|#l ɰZ,S$(#Y0S!A<:8o54dɌob,P;0`=x7Z[j:>p.X`8h(߂bG+؋$CY8$5$&[S T6OJhÖQ QE@equw%xe#Y̖_2BQ&n(q  IDATb?Zs6P7S/M Oc9ꕵh#30}c?ǬB# sڰ('h ū@9q]+ ?hMW{\G-s+An;RއWaK+mx7щWafXfc]RGx!QDԙ,XnMh!LrED9' wA?F{! x#?~]{A_D6z/0Ufp_(&xó-*g. {p o ΍>M3*`:xI $j FE  p W'`U@@G CD| 7d1ܓ@j`.<ˣҨ &pb/aY)j&% òpx,77v#']&sb;h.3 q*[3ʴ{t ҙ$+x`e̪x@KN']DRIkepspX9_Mt&.3FMjT ?)9~8ž RJVcrJΤ{hs!!IXD9 Wҕo0Tg6k3X1sU5>WLGq!R)$-rY5I'}5qZ!CNV O_.*۳w1% ,.ƉbR%L<*qQWt! ߭ΰ J˰R(JLRxa|e.߁xR q\J΋#ExsGuc 6NtEq[t#V `xŊ3Ya dm c4>o6:FXr8Ƈid &N$m/| t;7we~34|`5E3xK@_Ӎ d\hފ=Rs4s̀&6U#djV$$J{"k Yhm={Zi)0d^K%\vϪhg*umOwE SCWz#Rqѿ&kv<aGIYROouR^s&Z"cdި^wOOXKI=QE9IUJvU͋ ;GNwY< ͜ wv'`MьOkz36`*- /HjM3b-}<'mޱPAB* {{kv\O>&G;zΆz_rM~ RΫKf}?9Y(SI'Y;=8ҁ.cM{YZKI=̝6% b5CCQhG~b;xx4h:g߰'Zb_{ai<ԷH@-7Y`G2рkރbmDi1BbϛeH[6(N[{> ,$ߧ uqe 3Z+ +jM%R[_ aơab1 c! o6E@]oIpqԞfvxkϣ|ǸKo!Cxi =YW.IJw +<+l!Z$bR^y98W\2[OIMq005174hVS;fô|"Q) ]h.R\%D m ngS$/9_NspIMw@גLly%, +L7*3rKԏ i-Ǻى&}V׶5xؚY%o]|PEWzl{jb3sI?H!Uڏ)VWT趈,&l=thr])EYn&GpE;XVMpYSZLq+ ]6R7o칉ؙ[U#pɬ? |o6;ǁhV@w@bHC! [Џ`*ï| OO6 Y`ၟ`7Xc}؉M`I1^0.0|ip8ʛx0!ւ2(mnتN%jAl d7?.p,j C ڇ(^DQWX?e? &ɗƤ n$~:y5gUXDIvAMip-C?!"=Q*7"AZFJUHSŝWnRqZG#< gmr tR|1$-w2ǡ")jR$i1o!>tvQuvoVLox7#'KNJÝi7x >I!_]dLE]Hy\u~m =JgUQc5mG;;ag2R<?(bŢ" :kЃ4vyla tYnWz!-"r؝&/OCrk\ gV}Ǻui|"͔j݌]1R]:wAU:R+ɣ71`䢙(!a8#ǗwrB( ^I+)onHck/uwҦ .8D땍)lI?Y,;" w -@Dix |-VlzZ>URw9lǍZ.d Ywaۋ`Q"̐UTJ<,aETUT:h-;%(Y҄1;x }-R͂vOJHޡcb9z=}06EFite3:fl3 y т L(3@kASO\ɳ*|C l@]Oj9 CQ6$cr#mhאrԓoQTVilYtB } Ƃ grIkz!EX1|`q˸QA>%(r7|zoy~[Um;޹$aeQ`iv#}Ƈ칾RƽR9r iIN Ӎ 1WZ6C07f 1֥'Pt98*<~>'|vW/$U6i5 EC=]4i (X2ձۖr0X譞ȳ@wPb5Ĩ {Pp'h[8XWs(0:kk|;k^4PTWۅS{T]"#{;g45Nf_'Pcq7Uef3'D [AG8j%nLte/OLZPk mY1vu<w[e` eSf E~%ߪn5,l"FM_ͬ9uib]>D/\fD㛭&F:;kN0s<|:$š2TWB0"ɶǥA peV4-jk.QӾHX?Tv<:Ek\@wF:EGٽ s㢧dHY %3˧>_>E@aL$+Ge^:/jzt|.CXI~gkyǺ}ϣW$-Q |U./l| _*`6Ky/g"i\DO)׹l]?47[='y">]4Vj)Ka5x~#MgہhiȾim݅"2P]D(G]!cNfN߱voQi;/@E8SV{:DFʊ ʴiۈNkpJ9epXd]Ɉh ziV^y!hȏ"Mk2w{YT:5@c@u.Uv*V*d >Y9aKXL(@GZ2J\WN4FK+/̛`Fi*ϡ=a yK _&0Ap ?}D. vHKQ6n,%s6T}B*J80 nY; 皵u 'k,-eh_ bf E CZy"qI##+C-:Xsq!WE| ( Z7@+bDy{P`D,طV`8؀ΑY؄XJ];acWrVI'ƻy{b%,wfIk[ i Q٪V}JkWHRCsXJ꒪bo~2yȰ1>f1P3=,/"'*բsBq^2k~@?do#,`(`3XS._N*М}i?I dL/⭙W+s#=u4"0XM$A-hڠ,9D=VUX ]hHkI5I= %ߕ'ՖdTjyJg9=ˉ>J̾v;sJ@B~a>>Tga0#*Xz_>'Vd++! ? 4"8_2x"ox EPLN#Y9uFoY7fSPL*I' {c `Ln%jb <̙5"pj@k-r]?{VR_$B`GNJ lPI@%Q_` >ԛFAXXWyfg+,Ɠi.r2*cjHZ}^Q $ B Sa*Ss1Z: Z#b B7 .&,ͶF}XGr I%Nz -?pؘCpQDv_9 0Y"33`_E(by -"pzCptV+:]oD(%NMv3PaX#x2*l[0n-ڣ\vujLj{t;a+OPnm6 x{:JE*XTnfR$8 6* >?򀯲@qĀ!g{-&!&|(  h3[Nٝ"k#wW[;HoOY ~:WXA׼Ɵ,֋KGy[ARXN ¯;|kb O鰣)<m+-ʊl?ʰLa^'1(J_H&MQV;˧}tTT$ib-I).ku#4M3J_Wlg('R(]=Ba+BN9+E v8tQh "-c}|ĝx_$# .軹y:/t+lk!x5_,69]z=*-M!d7 cw:rJOp5H'`ɵ*:mҀHa]<]HLj!cC!$^?߰r9Gw!3Q](OT GntgTIƯSV,GOX3Y{% 6tApͥQcE YP# ރ\V?BEK0G!8@}pj(1(MuUXm[2.\48 Z.F`4g]#Q UoXO×k>.E`2$hO}4Zj;J)0M%`<5Pd {sD~F}Ug&#S'}h%^p}稧[nX&xB̵98k\2p aWڳ->VFD} Y_1vK>"$-!~k.ÇA0}:2ʫ(i/N1lkkoZWE/LSjv7=3FZIh/ȗ6r$Iyp{VH#I,Hk*tC@K@ pQBN'TKO4$5b|$S++nEv: _ڨp*]fOfVoA aGM\Jk Y 8vDg8 |mѿ-zV[S܁znG 9N*7h\|p ,x3ꮃ3X]t{xpM2 -\ ^A2h4JJtҗQ_^1l9R⥥Cy#bi*=LPgec G8uf\ƛ/-ZY^GPU+ԙrw'5@Q|0xFv(f~Fw</@Ŝau \ӪYp (DB7.;Ūi4j ÏԳ!Os upu][+ G ʿEa#Džs R:ɯlφ9G,FV#v*j!h9#f;{X+IܾHpT POMb^NwɓSX&C> &mD3ހEOx@|doʄ!BRGRBNm>r)_ )w@UѺfv;B(?B_f k^SD5yX=Pli{VR)GΎ8VyBly.(h\v'vdSX;6e} S sH@-_NhqxCN,rȂo..o_(%ͺW[9^7R6;I9ZAh&(=ԍدF7D08ʻ9\7W]<Ȯo6s9,t Ũ_/ =Ii@N5d讠/vmgc#+תc'F'Gc y. r},/b;jߠ$dY# S[ka/7 @yH&* ð«seAY=.x'ѯp#:nNpLBzjC5|EAIyj (ÕjA (G rb;~ۍh-0Z&CGp+,@g1,p=r5x=H& k$΃SVkhc-cJ^l-퍝`,[yEq/@ͳx'veÎ`u{+$6G$/c<@lfLk-}؂~<&W} YY#~ph&`ˠ,9*@:eh=|Z)Q gx +H9Z^ `CH(mXAݔce?G h5tʋpK@5t  `Cε; (5RLab!9`vzOK$Td<&˔⃸@ٯj)vO!xY/x31~ϝ r 泿cnDJ^H2_.>|nNv\ĩ9,~B|S/(o``JC+]j-8 ~D~cv8ٲhmh]1I&JYb ܯ¥N9LvDV(0^cs\7lum%~}&㬲 SO%-􊥬Xdqy"W\%#:Ga5 幤@,mC{#KDfG^ibKM;ʃ`noF'f~}Տ9VNvnbΎkXm2-cv pr[y>Ts7omUp^[]ul{j)i5GFg)4rVL8Eyr^ ci>khB Y#U^\}vKje`zo'blm7멋`W,;7 ;""&Ȅ]GV_&`l5cµUY IDAToT)GQe)^#4/9&r ,ME`nF8?fyy:w6-|i0%H)\{::hGZ{^ez~md#ϼ8+` ?WvP8P,ZOz(]p%b]*d.ډX<@zKApRS2V5d':ڱ7&CmqZAƼEu+S?hfUo\)boBo$=4ZIdg8{^ܚ̅&{4ES|t@Y#R+j~]G֍_?.sم0mEYnl#NDUٯ"o?̮|X' uUg(kQ|5;eBv^R+ pc-Nʙ1KE,F򩨁iVJiT0Ceߠ9, %P~?`&k|"!rm 0C#<@orMPE*"҇U`!)ȱr`PGȩ2Â>T\ @gLbE8/:~JLX<<]DkQu}2)$F >K=0:HCv8nd紶(/h2[FK?s{ZuLL+㩡e%Q1laR;x:M(HYFNTon/ }8 &nU#w|q$;ĴqyFppTeÓgeE CU:n-sAC;!6dEKV$ףqih6>v \fN$fd3H9<=MoX8|\ߑTTs4/,5%-VHx8^r#;aotQ]١H;'{;d讽.h-w=c^Ѕ<]"+&_YJ5zdR(<\PV^QFPO<$o=t|͡[V+AIMOCao_=2V{ 2$bASeO90 QZJeob9u j4 ja6'e=i4NCe |GP>ܟJ 59 }ݙFL1+ZuVANo?Zp>Ctnɇ, :KM9APKnZj>?3촋u2PŕXƿ,oiޮ'|T,#廇2oKPG M 3p(4 Lل ~2'lΏy-= Y7C\xfy;F [0=0#nY&NJPS(zC8gouжt]bͬY_W?q8h=/vrāE!/j@MXv= =l K Tߩn>7+N~ڝ9^*@ >9T./r4&sA`N_/cUrŻ*yF FiI_]n8ـGjvR<г&.k~仑U)[/x1H;PÇ5 .+{"I 6[8oJQ<% p;ڼb~]F|[W/Dnsvw#V!nwVoc4φVB܍+%wҟ,>s*Q=ήc yʮVCyt$l  W*ig5-z}?~QQN+j89< YmL!1 .9H-W؏p1mC|.z :K8_Ջ Eկ@÷X梹vfP/cat[+gb('@ЧrR1Rl( g,h}A D>Bn ʏt2y]m5p(QT@%VA0 TWe.d;C tҀ\,**S+X Iɏ`x#<޶AN|!/f`nev)8OM))yëz͜aY_̦F]eGΊfMԃ`*ޮ5Tj&rmNTd rJ7ƅh#*{"M51f^?"KV3efb f6 0|kA,$W˥,?|8 c1ADզZ{@rFU*#; k奓m2;[˜ ֮VM !t((U+RG?I(2QDܤ*2DbeҦt$$NeUb6J<0 _W |2pwz̖wqNԋtkJ0w^OK&A^[GQIb;o> (lZQ-?8'N6\r-`;2*2}պYqD]pt+𪬛ZjFvxpT߫,iwA'֮>MGx0ھem:Țc`GѠ Neo\D1.20FI!j5'1q|/Y ܎+GTBg0){N'O  YG0ITׂM` çY&?C$myUxAI@9RZTu|suVE3%G{aa+yV`-Te]uݛ5փ-xCT/~2\Km8ʆ߈ jCf o8`n3d5nwHur-_)} {3_8RfI;jA1Tnfd,d-V̭_`7f  no8E>w9sψ@69j8abuE||i]Uȟ86Rt}'1ЋttfK^Ï?_,TN:(hm;|EdE4=CeH2w}|v1О% uW:&<;9AK/c7 Z 9sъ/;x\>%#$zʳ[|Le)1} Koz4 CAKX "aT ¿^*)l$tâ nR5D] TTɣ J0 6ƻA'P[Bh'-ہ[vKԧ8jfNP]`GWʢ?pct tg's4.zW` '[b%Қ/M}?e Vae[r5,/ :oYPD~U;p\Qޱi68Cυa*|멵%ܕǭ5̢YO~noOsyǩmTqѪb3("֒9K.e->V+qOwQ#A([8H EB\^I-8HӳU)ủ1#9GNRh)'Aa䵮  Oa~\ Ʋl=^Igjq6r=?ެՎii[C,ŵU}o96aW{NK U…&>p|(%ڲ >))vaYtDp4o3WA]/Uɴ,}JW|}\͔ !6nOWm7zJ=^@Kd @3:8 -}@Nk3"ǁ] K3Aa,2<;)DXv%fVEクo>1O3*l57NEP9孞[*w!GٖN8.n}CBC@@9˸kG6wfiJR +}t=uDJ wgGQ ]~_oc۠!VQ1 =P t6ʶF""W5QuA7Xiࡠ-Vw;f`%P'5{PT f^ P4^x ^^5B>A x}۸& F@%~T wPgO= '4Aʊс6KfīGYoadAx]>|@)6m7.ʩ5YkQBmXJ׀~(ޝ>C"GE&ވJ098n^ﲫyK'dtL˜xo1=?# \h*j%w ?˦o/~υ,fPTx>?ea'DW_e%կ1kfu"KGY=f?H|zjiwG =DKT]+e+ERRu6`/'3?۷ۧ`r+uRU$V$Ţ{5~x2Ge{eICh;i##Ŵ)#Y=QSvEOٚc'd^|yg!M} ByFuGp\CuFl8KQM8T O{@QXQv)UUlxKExjgcS|+S(vEuG@Cd5qf9`1XM9_#a%h_A‹pjVgOR-mHKq{1/C15Lep 4d59 tea#{5pS@?\W>_p4_(o(Jy Dn_F4e6590[Tc&T5bb2-F'*8l*h$[,XZ'Vw~VZUkHKMǪw9\Ky cno cX\**H 4 4ڿ SOeælf7D2;O}27UH)[6םb~wơ#5|QMטK!ށJe"|vmPW+];ocX&Mz:(fQ]K }Q3έ8#6xq>Bs]n!>l4<a%7r|RcHXv4/68jo1rYփ.I|)$v7z?NY'2"2x+M.9'L}Uai*~;PMc|PUdZX{]xQj5Y?K2 'eQ9VNic=MP"O0V{ ]LuSZQ%W{VhϚ)Z\+%fȐgc>MVuu92YNKb _r0L`\)O>ڐCL cZ]qG}exQ!nQ觽kX+K¶d `HWwC$wxCV[(k& }jsd}"*Q$~ae ՖD6foӮcF+#zp4֙Q 9R_/h=^ٞG86p+KhoRuv`>ZΖIz [~} &>auoɸ4k@IπqNS6s湬G]CW]kwux2<_SrlfoZT6(\EyS xy Е$Z'(鰗hEGzxL\ݱM@$'+s:O;q(]%Y7,./J^@#G@E!Pe tF@yb5Ǻ.rV'K hn:.dT-dWESޅxר]QE,N'^L|EQycFjڋ!3Ζ,NgOE3FҐ2]laoؿ$|SNeq-pnaHN:zDzY>?43,c> =E9~2=^_FU14GO\{|*n/7".´-uQ˄jEڧ]wxDx[@M;']gH3e;tSP$]f%X^}ĺrX>{d7SY4e϶ ӖlD"ʃhH#܀jIr08+))C~5\>VPe8Nqd܆g*ec `ʅp L_{&9񠔕n1}{`KPޒݮN9¯lףeBPs#U=s :{F줳̈́Ԫh??>gVGcaPl3*u9=s+`Caev>xXmN_I3lu%ytNYN>F9T$1r}?Kg}; x.z199rgKBTrTn9X^}:%͔I`4C;wfջh!1$\WԝN\mEG$ Uު1X:Er&,[;3>t+"*"0/|bR<7c7!P.9D*շ3=KRFvUqDq8F q|w Dt^eS IDATWSj4s]`,©h{QUCÝd;'5!mEg)I)|' 4BYFXg].~;n2j-|maqTAJY+cV^V[e呲4E%n Ϲ$MigY ΁[.k^x\ib)O'J:Xv1Qx66`TE/^D& ͆+ޖODCw(QT%)~tP^'d) P n#{fo:/;m؊z/R5Sx=1^݂bhƏi`Es8&jęNs^pW67 VF+b[orBQG$7[omF7cX}CT}R=ir]MgوT/b{Db_"[ܙpʷ)-z$Ͳ13|tӦ)s1ZTrگ8$[8,πhުPḩ86>||eą ~jdS;m637ӓF*wG.&g#KGk/RsGq,H^cg5az[; =w,j-]6Z+.@s 'JGs`YUh$g4ZOikԵ{\=NW}=Lqo) VOB%s4i'YU;NYYRQac0Wa+1Hz:=*eUq6N1F5Ɓk,c8OoJb.vdult]/X rZC[XӮw"'ypOY}WnW+>`\4'F_8N;ܧ=kE9pp?WeL֓#iߐ.h,:|d Hnu| 'AC %DTH{r@a}i & hZ*!*hkT f[.c;C9Q5DT>ۧM>W%d8ʣ xݗRhbx/'/w7(/{^2atqnќc 4=)x(f+GiLdO#~yK>AnW3$EId<ʫj OõlF6>D LD_AZE𴠣DCGË A'@tCy8~)3(cdze+v$%I1j&:D+26X|Tkyg0x(^D?|QENEׂA?/0ё -ЂsZ`$W>Pց稹zQG}*\ሴ8 r`,)obRoT\ud&HQr&.Sc{٤@-Ӵ(P9̪'XMHZ&6w,X9v;#\ew]F/}\awv]]w7^TR[,E#yg)e5 $h~^N= A"$t6ǮOZ&Tm'C:=w}Lo y`3.t7ՓHbu$4W8&iEɁZȹrW->revp!Ejc6Xs8MW9ȚY| G LEZu)'[43To]/J0^G(Y so4uIja5j7`H%q˴zC-ltVVT#F6?a2ʲy/7oj 4䦺^5ȒKn7fxw:jugYG>*`U{4ǺhnOw'VZox/?Gt|)cpx{(G+lxd+IeCiN࿠/=(?YO|╂d%F7 k*m2\Ge+. '78mV~VPc\&0u|@xAϼ l Sh~4wwg8gdѮ~ &E9?܆q":T_W@8P2\ґޫ:m#VtSYq5?[ \G+1RNkzk0ZJgLfV &/q A F#)l4H *`{!Z;iμ%g-XM騕vLSBjoU)_|lU'l*^zױ䍕s"ts rr4%zWl6O۱2Gm'g٣`;% {z=Wf6%a 5_#N06UPmݵ#14zDJ OL{;($EiAA뒈|X*$Sx%U'A[N.(2 vxR\Sr܅3у1,/[+py܄s/10 q;$â lL/yNR0yQȞF Y)&TzAe'>F X5|639@ABX6CLoq/@B K l)?#<#:Λv'5JqwX{{υS/K I|aaSL*Ocló9'к9׉tPr>obLVdz@/,+r2Bz!7g`0&^2K*{wOLfyV5)RQl`E^йZSu+D@1i *p579 ~`Y `p\?㽳!_Wa9cۺg3X= kϑ^vQ,r_PY">w(ODCOAN{2\$Eύ2`GxH&7@= %mWouOc3:I aOF]ōczGqvM9M?@QWڃQT?gkTd`苑7|Ii~,e7B6D`3b16Xu ƒ_ }A%QKQZMZjy$I!S9}wZ2su AHZxY*o5&Eg6L]wm증AcKPkOhi(+"C26FA_Imum?rKPWQۓI5JD8ň{`/9G3sFdIr+#||H#xx63 XC4qދTȟ4:iI]dj6#;$f4/CDVZS*LuV>L`}>@%LEhn5#J8sy.c=|\J#< <~^J );AvBd85ޟO"=Y-Jn1}K(nnⰋCv6S>kqq:G} )cu< Gc,CQJva *2CZD-qBpWf 1lODoyIO|>tcӀ7b3h$p_2պp-yvw%A[Բh1(!XȘY~p7wQn%9@A3}0l,8#> RfZ.@\B8}9+Y濠ԻvPєcUghr}z>v7ZLz#}<9d ^Q Z%׳FZ<X&3~O/2>$MƃY(Z,sRp\~q[3@w~o;\Z O7vxp_f57/+缭%擋p8,a簺ij;j_>d-P1Ԅf2jR8Lƕ]KA5ƛg19( *AHKEO@8YlHOf4͋lF2[OV*O M6FZ&k@Muw$yrdk56\(9 T LWV:V2x6Uk+뉫8# TJwM/a5g~( #H;-{!ͬL, c'xV?H+Tx ? ʒN~>NڝͲ5r /1:"&)OiZ{q;oh+璞Kyܣ]ܯXkYol0+UisWwSl;y>11ݦ>W* FsA^^j!RwV5Qshٌ˹y24PB#QсJp]N6S׺;;YڸۦLK$鯃,Vyxb5o{x{?l`s\_|C!N.:.7}.n|/ߠxgZ ECI ]FzWY{Q#d5lw3ZOB=9WG !Ew~<j:%Vq . GRul pMj p*'itp|Ȉ)#Ft𿉁 j&n3_!3[νeX#ÔYhB]#H?愎VLsI|J&,*hZcw@[Yˉc!pf0-<š ?eIp>mKi}@&:Q|H(]L^FD۩%ˆ  "Ild)0V{wi2-| w~ȇ(K8킇Egp JA^n5ç#T4E6Ih?j ~mL$(N+];􎻽ZߍkNm x$|S\sTjM,+U\=h7p}#!o?`j[+V`~Np:i" CQܹksf]`J!b3!#;$V Fnʃ,W8lSF{cq_p/NOI)mEХo*8-A]73o.Q%n?X# K~_ ZQPK\I>uueEǜ(/ϻ!}&9&zM'΅YJ,ɑ_9O,:nۀ&`=0/.;n>s6tZ{G\R[YY9ΏQ_b -xVae,S{B"Paƞ?|o\R'8 jvQ33a 6'ґ<7Ms^g` gĄۧ;}߼36pc eOpH'xGE_X<8ۇ;M3@?}.v]OHrz```ЂˬTCU;^[>d9 4NHچPg2{=Ⱦy:T<%r6 E.|ݒ$0;&* Ǔ:^ia~!O"fjSoWKݏ+FYKa }NE >Y Srg͹-` p.atSKJN;@Yga~'nsORy}tו(%T8҅4qz4ݽruk8$eG(7u a-<  Ga \}+3 ʕ菄N~LH:;YuX9٥;͜}CQhT8x]\|sJEȴ" y&) h.hLch,H}12lFp#|A h&>Im-ז"cR#PKurN '3arpvt,A7?QpBT* 4!d.9M,f9B`(*-tb}0c[, jqu/Eq{Dd_Y=IGA ~ڪUTPW

V楸! x5nO9BJHFrhOAF!uyUV`Hr\1Zoo$2+Vc*Z袊D$?.{`рSIU%ӂ?J[Iaɐ>71U/4ˈU/\K2!V~fztb ;cjHP$9Yl!ZzL P#%HUo rx$;⻂D dH.=j1^w;\,ҒUǙ,Bvss<:H3$ <毤$YXIBF6>MC#4j#VNFgK&%p=WC㓊-,8rr >ׇv6^)n~CMhiqIUF{` S-7<).LuXWtYM#0U.sH Lc/a\y=+gyT{KH_1ӊ#7bzT~Ks (/()7u (ZRUzzpc!m@^pb.XT.$;鞕Jy0r=+CNmϹ+J_G+BC8KpF{RJ~~ؤhm O"j @jP9 DK'(ME 5~[,tݚ0r5k<@UF$&c O"˜$ڮh۫׆U.A+gkd؃Qj7G0.R@Χ=.ټƖBFi!?*ρ| <~U%R Lm9l*B+=jlx'zzfKhQU{R>:wg֥@Qt Up/vRWM3~QE]vYgs[۞{ h gڴOa֘i Zn9"sMث3G^ASdx2? l bTHOjrw0%ԥ]ݜv_JzXC(bXҲn@`=qK KuV8Vc-#*t}!㞢Ler8cC1MF$qQܰ& OOjYȊ&Q?ʖf rEsAk,Ak,A5жZn -6 Z` ;ZԮ7 =*VpmvZh* xU9j,T)xJr]9dk"ԄsmF8 E GbjqYWv;Sem7)'%]̀Jk fX*B6w(ԫ Ǹ5W]?2݈%uY,Â3N݆܎C(޳n#j0D < 5AGjI6F24;J;CBIbC=9 U`>LkLZvXN56Cީ ~v;A9KyM 5˘3ޜGHqR-b݂}jZմ&?sb.-gG(1*5³`)]5ҫ#Kl!Jm/ExXag +uVR3yxLzTREQE.OMý5}iZlv9yeI)QXy7b/R1yS&% b-H$9)UY%2Dg?2wCQ#W'/͸uyifyvnr|\ p"R VŴO \1STQE-RipQ!}~RzPpjX~xpvQ&Ȫv ;N2sVD<@F+JΒFRWw͓ޘZ@Xl#2 QIBQK)1Tc?#.m4RB~d2O*XDn?ZFd 9 $mŶ۴kf4*}Hi\ SޝDf^ y9jtAI{ J%ABN EZwڼ?@Γ!|1dQ>9C0^e mV RKo@cawrd+y%jaSjчUM[!&ĊQ{$dA~F>bEIlka)a&[D HjRdH) F1QL05ʰ4r )P=+:H$\1BEeMo(<NwfG+Wó I7W|W{9Tkk"ɝLdT#өi V.=+Dm2l } gjg,Xb8PYM{9jƼ;$f+2eda[,r9i1sL()r9PeUhʑժF;@\v8CZ0$֮JKHij}ksH`U9cZt~U)wc֭ڳEQEQQME0FwFS~C hB8=YCvQ׊o2:T2ds1K2ySީͽr˜5$]E,~Rp*88RO"HUF\`HQa|2mjBVd+ 7*HyV2o94yp%yuO=(ݓ[Nc/ [1(s]ġcl96bZi 08Id٥|8VOThӃdjR9@y$ V}gdr lu54 h:*ʓ2֢r̄Il,G|UW\d%N PsަqW9=kWqqUu$#m;Q]dR6>^zu#8"lFsPc^s*cRXU+q lsUD%*22W`OZ,B ,Ri.ZmcoUlN7VBv5i?;u4b1'8{R"#qurIk.nݼu=,2I'O4ԙɗ;4t@$J]I<j# <id1PG< y^`#T VE9ZȻP(9tWEAu-QE-QEQP]l6e nJ TXHYhѻ37@x11,x5,fQsNx2*K&`Bc`@ <}:RH]FڢyUsǐ/cݩܑ@y^j 6@^j />Fy%sJXB>*GڡI%P xSbǽ_"B9;C֬Cwv#ҟl=Ό:*)r=E] V2*dp+FC\`zU^4l)5a˅8IN] JŹWԞ+>k%%cCTݏ%H^1y#G!Sƨ-^"vzt/c]؞u!'Ր"#RRpZr]21Arq/2>w4۴ŏy,z.j r <-ni]]cߢʒ"d33ްVe͟k*#F+IzgEh**Ux늬GPXSFؖ8`QZ.xL%##jK 1z̶֜ڴQg؞uǩFvZ~ձi(((lH 䊐7ppj=>yҳ&sM `GS* 8T8a9W=M8-'#=iJ)< :ԬI#H Ƅ/5F(%w~^j+-]$il&$$ E{Uwl/*ʬY)y6'*qlfN#ԗE$cmn Q kmn Z̽qdVFwҬd';K IerƪەrZZ )]^kVIf򦙕0?:Ҵ$򤐇뷵hb+Dۆ]iDBӷVtS^[i!;lezSbz*ޝ|4DaX!ȍ\c#uV(ݷPEdE@772k\j0(یnwq12*̲T`(5N"C6'֠ڠnbKC$d~D=7sE{fz1G_zci0cːBYY[sFVyc^7j.obdqڴgcR,^`IojWվyw4>J1\+5ˡ3V5Y0 L'H֢ wm3LW8Ȉ,a/)1(l 8 yn; 1R{N6g \(9-+Op3RERE!Hփq֡p(PeH츪@3#1Qg\9Z*v S=S,mӜՇ #]ho֥u ^B1N'aj ؄c9W#7Vdr߅feϠB4Hێj@XULzUYgArF*viUwY J$W$mpj aw@KTEoSLX2c|?=ǚRBΌ>9tclcp޵lBD pY kzNY>Yx*+WA-mu?+{bR^E/e$rSlG~Y8<3nfb -NpVw)gcHLnA;ϥ-4*ޝc:\+J͵>`}sڬhzuۣ@KXMߜT~uzr[llUF3Z 9Z }lՠ2ck $DN9*O*D%?ZwUy#[K HǦj%$c U?:fc*;V6-$5f_)[r&\r999?LRi_BpA}. qWtYJ(( LTߥ1XVwy>NT. =S}zsҪr1Ƭ>^4}R5^-ܝ+:\[@P@aS2]Y6Gk9g9`,OZ"qUdSֳNϨ5Xlb;ts?N*:|ťUYbe@R&?fo{&T$?͏NjQ.%ڳn-l#T4<9›A¦fqҥ>dr}*XI!#&dQ0!]WgA?lTKU9m wU kJ1Msީ\]A08$lk@d81Zl;Fv br0k!턐lVY>ns~+mn54%la4*2JX/]KfV.'p),98HR[y LUʡ9nn0pzt2OWS#+=]ӭA,?Z~)h)U5)c5P)? 8Q\[=+=9ڟzsMrcCrsc8eFt895 Y3Xf[8e#R>A#N *PpNؒtw0qײ)Ri3;֭v+lv_"~Hg5*gfIwcOYl=M88EZu)?t9*Xdwߔ+1>a;N1P7vmfN1PR7!zmTd|Ȥ[5YV]Ѿ}z|X\ZR2 sO9܌/>>ǹeeq֠v (e8aOH<)!9WVgRMfrde,߅Msm |d'Fxb2{Sb *@ᄋq֡5WIϽH++:>F VF`qUx؄b O5]' H5_KsR$3eBG+Vh%S9Z{˻@Lr>H F1RW[˷mpQ:c&}꤮㎵ϼ.W֢EW3덣խ3k݆'㊍d IVNV?sUTdK& 1\|Z0 8jiZyB.?ҤqIˆSث1 3֒V5.!2ǖO5] 1fd"ت[r=*H^{o*27LtGw;yxKw5|HժBIhfa8Q\8ȞEeh6 ddJðn[jIQ>$V<ӌ 0x&n~ xf\rJ$0^p*#Uy \ځ=}sJ7zzFW(YL.V u(pݍ5rui Ut >9TRzTp4sMEssnǹw%%%9棒qMt@zI.r1mZ AIn6 ĎPffL;#2sǵfnV awpPY%gG-Yj)pISW}rGQ*$- Ò;{T1EeV6dz7#TVp}7#g+VP)OF9!NJBBj9=1*)~ &wcg$Zp'ֺU "=3]3U$&dS*\A2*zj a~\CU˘縛 sO%Dvf(;La:1=F-m7 ֳY95Ey {FXA\4ShivnU *b,U{UIX<=* #cW^{pDZθr-iW~^}@iAz⬀q'=j669^Gj݌ڣ*cV!A)WIӮO 9u-{` N WĜT7'mF~aϵFaWlC{[oE1C)SjN=A>nSFÌt3e$xm6ɑH6YvᏡ4Du~bjS "cGސ?ZIYn#t⯄m\˚BIsjr7/Zؔ L`0Г1T>BFeoF9f&bvLU+"͔lrO9""`U =M>$]Izv"0^N>2l@c nS&1ĤpXjǐ03׽j pjT=cD Rjx-!Tx8#73 ޙy(L|[ T'uu+OX7$('Ҳgun.j DR3@;EA2DLmJX,wLnK_JkP)FM\047A5--*=&;yoJdxK7zǙe-!= PyrX>b=byRnQN2G6ξXýZuhWp|RpH8'"&X ׊$c}TfYUcX!|W!|XO+f%}{ҧۉzvىzAQ:SJ+c&?ZF-`PRڝ9tsljaا0OTg {O+iqpi|)anJV9$G~4zP P-dZ#cbK~j]zc`VQaQmiRPriKʨUqv&a.R~񪭄8 /̸u8ڮvGUeLRӖ qִcè= K[a.[ szӭg1J*;r;Ol[hσsZ$WBQ#)8BXRl ~uSk6[vP.HmxӬb{7aG5PaT=+"Q>Z)k5ĞT{'2G>VPa:ļ (` +79rU* yeԢ818Yȃg=Egc O=>r5Fb'9K)P%y%LB5fڧ ŶuqD@v檤hXjs_eFb F֥H[ yXqOn <+"[ZEǿf(#?]m?]"l3mmjKR-3ҫn[9=QPEnsMN8Ȧ!FeM2YLn4 ޖNxS\J-Hl\I$%7K 3.ʟ~p J1:2H(e\d)ukWҥgXʏJ͚K)o/o5NYD WҩK8BH)}})zoVbRW=1RFgfua*XTіۼ@Y:Y Ȍskj CF<9;D>Ջ8B6nȬG(Pwzω#vb` }j;{H0TrAlx'cʚGAo}&|QCwX∲㊿k"EhDy_&BNsUa+W= Rjd"9 pvr>޵=gM6'kKF؍pG/j[UESeZ<Q͂'~R1ڛ8#?.:d m9Yz ͦ5{[cHNҹLMY#\TrO|.'gen49сmd#Ys[ߛ&{T}``ZԒ{k98W%X6zS҄?(=[ Ag#[x+$>O$RG9W&eu}*Ť,U&CI~$nAUsQ-`zIhmMN@y!I zc9#UOI Rr} ŵ6"y{{kN{QOZa׬g& r5.W|qکlv!$ p0A78fEZA8l d RpP~H\FߒIŬj9+ڭZFE\$;cTgMrs¶Ay ki$QIQ9m^.bGIpcX6fJ40CMn7Eӹ~Pz!OZ(rdlHYCǿNY ӓ݉4cT |ҜV L{x؂5-I⟆l"cw.!unVXٰpcT!5Z0F*)7?ҫ]F!P֤h#c@u0ƱCiF=oڪ08O* nejjqTo+&جǺGPZ#\eYK/9Fzud(Nvlw:BX |sc\DF6m1YN [<#ၡrT̡̡2ϵE4q)0Xr:$pu ?諢(((Z(Z(Z()((()h((J()h()(*8 ƩU 5{~ܝ̸UkĆ'$_j˺HcrIxoWK[QE-RQE-QEQEQEQEQEREQERQE-QEQEQERQEQKEQEQIELҠG_e]V!}+p|f\Mecwrp{d3]uw(()h((J()h)h(((()h(())(" Dx$X.ޕ:S>P:W}x3x_=(b۬$0,ám"I 6$X+ֺz(()h(Z()((J((((((()(J(+3S/2xRC4ҊqᏥ >=@" b(()h(Z()(((((J((((((()(J(()h(((()h()()((J(()h)h() RQIEQIEQEQKEQE%QEQEQEREQERQE-RQE-RQE-QEQERE%RE%QIE (()h(((J(J(J(J((Z((()h)h(Z(QE%QEQE-RQEQEQEQEQEREQIEQEQE-RRQE-]y, !bwff[ rC+/TYm"rҲog#%@b^YͿ yg36SQzsk٘ڻ뵢((ۼ!E9 =* ȥ@\sP#1>{Kdx $5HY'?|W;-֝bW,7g֘ 9 tk|ICW@.J2(UcJ@#2*st=QEQEQEQEQEQEREQIEQIEQERQEQ\橭O*r9?Jmzt!x-ްu=jX1B6>s֥`k7v{ö-U9n®`eS?,M[?*KtN]Y4J\>Ww=ikƊ(((8ᦐ$tnͥvn&VM: z KaRjl ߗҖ6PJT]Omc#*hPG9T((J(((()h((QEQIEQT.tK4PGR[rN&u;*T*0^P0\Ӱ,+ک8SwW`?5"?/Q,O[5VQڊ($i늋1̎5#-#t55R]c߭`jZ3\DY2\&D+SkGsY0kq-j*$b'R&mc=Ᶎ_4R;`@؆=9z((((((((J((((PKt&cFv8U'ڑ"nd+u ]~}6TXÀqRWO>[ܜDo㚷 SsiDž*g;8k*7 éf+ YwW`Q\MPRد=kx\Dfufh(ߌA&CRuWKD˞Ojy{d˞P\囟JǞi!%p9b6tzVMܲ)%=*lHb1mV`9Iy|v`S/tGa0N!A+ 723Nb>_uDDF00tj] "ơT` }--QKEQEQIEQEQEQEQEQEQEQEQQ'81PDfX1Q 8 `&w)V4zDgjJ;ԗ.a7sRy|IHCM!Ͻd6q)*9YFiYoKHhIXg")'&3$`(ڶ |I-鎵ƟI}*Z}QEQEQEQKEQE%QE3}e@z㡬=H\G;yTRyJ˼VCU'Tne՞-n R"$ gҤ>"(+*m5ʎ5<_ghfcߵ1m1cU~\{n8U ѤYG+[QH @n ҫ;3X1T攻c<{UYF=PrDBaQS"  㱤8Y2|~icbd.ADct2 t w">'*kâbr*IoTК"6Gt3eb*ҶU WHURx&dS6X/|pϲC5(&?:1[\qM7P 7j3Z~82~BZQ/lLvkNyU3sZwr z]@!sQFSP/ZazդB:՘Шv9XKe8f9s[xR3>̶4Y[18+Ȓl(}+cQNJU;sӚt 2Đ.Jjw- %;nVboՉFJ|x5㑂vZ?3d\حM݊2NQ؊7J#ީ3ceąWo9I-#S)+EU.Jj,S>apF?:dUt,NZG4[l"-J!<ʷĿ6.(Jzg-q[5 1Iq[uPYƏ1~Nk TNWΑFSo p7"JA`FsҠFI@)VAMi"n2 ɕr\zЙ3Uu9_LUv7Oc$6Ò- Mi#A lFhV혹 jc5N=jݙORU?>[yEGk{%ɵLX+;bYoic&+`%V'pVj)((((JH⼐cֳ&+c!֩I\US5so%4[c9`$8VԬ28;]*c Q9+xxoI7DWsZV 3"iӕv걫H;@"aY4ɲ>dR~Z0PnI,)rr3?'vX* Y$)=GG2QΧ$ZLTJ~qW(]HE^uw @ zf|1MTmf\t5 %\g {R.J  3W]+*OUW ui" {S`1 JOK(?t늘aa*>epTDJmZx[ۂQ135bo7znF8 jmpZն2+Vfq+it[Y1%G8.n%Gj|ppjqUe]Tn \앭ُ֮> ]t)h(Z((bԌT7RFb5gxc5czdݏf],?$+H&[V']xٴub\zVDRssYl0==*}*Dm6& $mZW9$\;{U-֧i,m> l7($& ]F +F6TR@*0Uj&kqzt;sTO! vp)Dq5HLܭS0sSazX`qU'=jp Zn0mlc @ `֡ ɲ>MF oڝSQMPMhG_!?J0jHdmU. #sUnm 1" J>Y"t:ibu+mjk&熩l<WV$m?0``]*0<`(()h)7FiF%tjGMPN}&1|ҹ;"^3K7}¹tĐ@}JH+Uc 5VyyXV%,BePjRcSʁQNE9zR*Hxj9sVQs\Z۹5Vc5LZȷG#pÃWPҍdu08ݏ\U1Pa  ,mwgKfW*Ǚ3VDuc@O ɨ`wriuC|dWlᗜQ»8eԡèR@pj`py2M0Źa4ZKc,8_5,8SQlcRÁUc_g T1&qWv3ڮ'N=))I"Mxsf@el^Fo?9ƭ瀣X7]t1VqI52B>:pG֤#(()(܌uV {71c88YZFC -XMje)c99`,>[ 4(ҫPӥGg?JI`2$0GV~wV;ڤ$*Cy 7CާBzd:wԒ1U 1˻z}jt 1@Bi ka$s⥊ፃzY1cZ ]\R@T67 *VN7 @w$_=i%-UP\X=꒶vQ_lIj{z攲d7F4ebr0zNb܃upb }@GG2i27A4$013Acӵ8gsFYyଜ`Tiޥ_p) r\TxfZ =jdcTx,x'yҍ8>֑|iVSޚ85Z7UL.$D\ᛧt&<]l 3+pgTc< wREQEQEQES&A4m8 Ԏi4.Ai(&Vlֳ'<;\g<{`b8>槵h;685rlj 3l150>خj0CzjC&t</˃v4؍ąG-3WwZ:L2 nSvkXѮ);V"InF--FU nLBR[,]xq&-&c _J cUa9엌Tpt,el:6Pv OU*@j{\U%pUel%azRBМԑ ɞ,qt A1Nf})ql#n/9lɡҔB7v84{pj1rsU&.vg:+$*YHaR*#*UG4G+H[#drbvFH<j6Ar+zRǵd]H3qP4@Iin"  9!v»;;G<*JZuQERE%RE Ea6֪0ڠ#sTv֛im?^I8!^¤՛nGKn+[MfTGCb1]e!-=v53&'Xgչ|Ȅ Z3HlQ9Kboo hs@RDZt ON> ÞNܐw ҳuKrw+VKrz)䴛rcG3ˑϭkz|wWЉáR jXu(</IsDlQhaTo:ocߌjЛFf#yafc'XAAU\`(R;vHLzHPj)î#5cU8[\ 0;{cg1O)s9c4 d uU3'˒9/U3wLDZދ ˃8b8bKKEQEQEQEQE Ŗ8*9=zԄLH[jTɑǭS˞bλגkdw9Fნ&y9jLdrJ3Iir>gvB֔P.Xs,{9Ҧ9F$ ܎ɻ!})'wAp䏘EI玔\G犲F7Q1R,JsҤ'l$UuGQUyD`Tn?]t >PqU$%0j4OJ]Aĺ)?Jl B4QI@*^4QEQ@ EQEQEQE{QUoL*l9B>aT5&<+P!vkm=k1sl ުg*TNTR)Z`hr6KmpG*1WM( {nR7]bl/ ZT^_AZdzuPtxebMYr0=E9[i=Ѱ |l7i&W TF$)ʎ)#d+cocQG{THp~=d-ejH 9Q9wwWlKP pi iFASI7qVG*귙qYfH8\ikKy[D;H!t JIe1 *ԫs)%kA;SesUB89rMD1R+.q]FE*e+>8Iv+PW(REQE((((HSub>\" Rj@Rj<w2Ǩ\1r QsTXh?*cWTeiǕ`ǹ$mA:Aҡ@#Q0x5.HE&tqɢ5*5hwh4/:}jFVf**_Oz!!4*A4)@(T1#jmăSʚX^03KlR#ei$Vp TV lPt94G9{STrdHQ6 } *˸8摝%b 2BDW`=@,d3UEu9WZ"v tLE8Փ<֢xTNoD˃A@<h=9}i =?HQVn*hϥQERE%QQEQEQEQAUngi>GR6)jϒ\I)wlxJeiK$bH=KLMCүET*nElH88'Ҳk%8=jȧ%XYN%XɈ j<zwҝnqږوKlH;AU>v8pxh6ӼҢ}Sq> lMTL$g5!@00* v!82O"Fz6ϽFܒAL-2H9Ql.%@։rā#+FI׽B9qP8\yg'*ݽɋ'0CtPOyڪ4<>,v#f09.:rSm#|@0^Eu:maG.\f((QEQEQEQE^>8|ayam23Ag[ƁwGoa (f]ơUKH *DeP d p.J6 ?Id=}k J3ߥg31^ eYI=GM>u|9 W0eVQ޴B'Nd,ǩW UZbctUeZ@ `S!ub08`fʬO +n:*pqN`+R0i R u=1F:q޳G&@>uZǝv=k:g*ZE`Wҝ^ř@S94Cqq .ȓn@zNe3:zІpr^ {`o@]0p^T8cH8)h(((Z()(Z)i()())k=Uc8۴+(0<{`WfNUmGjXgniQNjte^rSI 0Pa3E6RوRخۉ<*b U; ƸB']tgNfsNs+1>[[!M?D #>>Vp\֞Ux *ԫ)ݢRS5̾Dm)#j5! *pF:j{VCșgCWsprI]*osWc3SOAXԕ'=*Ҫ[ĩ|ƧUXQUǭ*Ȯ>\J&Rpcڗ ~ojnI8s֊((Z))(J((Z()hZZ)(JcFsQoϭ1F0}h'B[G X{gN\ qI/(£qLSU N#Cӥf^'WzUmS*yYF_Z.Tu隷[ɑ\‹m$cWNv8(9f-'.0ONjH7l fZJ))ȦgZZ(((J)h)h()()(ԴQIF4c<`C H}[hE^`FU rnvU 0':Vv: C~p+wCVß# ÜUWꎥS*Xq՛3*8oGcj٪Z"F6ݚ)O9"qoڵɬ-Fwoq\ߛ4Qęc[ lpx'Y.z{b2[ҥI6/c+[ ) nniַiy-= ^5W(((((J((JJ(u>h5KPyUڠ ͖BV- ՙ4HQbO2SǥFwxQD(xd] 1(֑ϛ eE3GjljUMKkgksR@fqPir )W _dTF͖SEXGcKn}*\QEQIEQIEQERQEQKEQEQIEW B)\ \*fB&-uZI,<eJl y9dXBcN}ic%*0MIqUcYIz>Wf uZ2vv5̻{{e=z w0TKH[4S[HKTzgyv䊫~fId~d`>g&xbVVpĕ HrvV3'j]2 w.Ϙ{ YI£r=*jtN?v Nz <PƹY`9QP@Uj;mmgL&z@{VxLUNXU4[ QZg"&81Uq kLǗ 遊h&?YR43^ }亜,-d9"@M_ƼP; TQDԐÞF3LIi fFUs#(ɩ4@H#8In==iiiih)h(((J((﷾jcp|Dk\m@AR&ۘIazSGf$Q>b[ZvLG,MMwd4i= S5+p5R\^D SĢ?/qH{C~ u,{r8$ST=BI@!!ۂI<ĩu3w ¬ѐ9#N޿'ǵ?zxP]w$JgREQEQEQERRQKEWu*=[wq>p+F4$M(=jTEx*ƠAH.Ѥ#h@LLR-ʗD$|ۻ8U6.Br܌i)*G-I"0m# ZcY>Fڙ. ,VspE)2ǠnS)czT.Ly=ir4X9@ lsRD M R1@KnOޕ7lbљml MN#)rMdLDF Fw71STntq)ZC7w-Ͷf5X q-r+1]ˌr uf+3䲖۸Yen[ynX֩bV(N:i)F=jPG{T *"ҭ[Y CcR@f+S&HY[|cfc+0@nߥN!XM\vmT֬G+۽Y\8$ՎԴQKEQIEQERQE-\$${ 'Qƹy6Tpyq+;im!2q֖%''Q$lRM ;qSO +>SSLCUYfInhq'́Ud6*Z |Ə4٣Mg~B|ρL?6md >,չ&mo/$΁aܱrڢfp=p#ڛ,1sR[\9<sNpxjί#MѾڅ\/p2jIRE%QERb)ih()kω.9$^xyckBdn9 qCʚqw(5zxI2sVl`ܱ8⦴'/ Jm>H`eQQZ&$F#ȗkGқgŎr \U+| Qާ[267֮3ɺ5ơ =µcL,@.EXLEcf HWD0Ym.Fpt LB6 ƃ#vYv*5weh>\:P16Y?qZ@*0ǹ[VfC{֤$d!AY#i*+j7+>6T򒩸@ Oxc.O nj=Jf 3p=+&iXfڲc$ǂğʬ7vcߚڰDfݏF;H ,ǽUE(QV]pcg 8]ebhi4X(jd*\nS J8?2XG 6H%KǥU9gV iiFn!zډȕzq]WgVH8QEQKEQERE%QEQKEq jxpB{W#ǵk€F9㊻ʌW $T&xjX>G8Kźb,FL#Hmǩ˱qLuӏ ޝwe")3(Jm̈$TtK6Ki ;]&ՖV93e .29;7yD} ';1Ҙ 5 5yKU=IEFe *{8k2VNцwүiv*]vr>ۛ}>0 ܑZt&4 0O&ڳKEQEREQEQE-RQE-q~y[}9'Ұ5A95bY1$*{2Kqd$dapgce!WBbRKE8VQh>cSGzlF0o["8D` k?ҧ l$w+& 95YXn$9nD>idND+8@P8 @]`ZJ 1O[ܡIr(YcPvJ/?¡0dqSflbTLXN{qP s&<̠>,#Q#d5U uZuiP ~RDA#qnO"-8頶NznXzTMy F/?FQyD{Ð$Ow(zVc,+"K ץ5hiȦ4L9yw|PxB66*KY$F5[j77P/Mj[Q I[i%F2yWr:gWZY_֢Ey$=jbQڑV2c}Xu_J%NGJȿ+F1ӎd%/` rW ;dPJ3i!a)$VYzkҷIwQ ɗ[=jM1L);yL\ښX)ДbrH})8xv19$d{фbs޲u9a+5UH"rJi#{C1]r FCa]_@)RQEQERE%REQIER lCtO59COz`{#1'9)ŝؑԭ#zV /AZ6썾N1Z12~f|Ҥ#p$ j'1<c#1ѵDG,YcȦa|sښBg,Yj̚xÈ[qȪO ӐWT$TVT9 :R m98 7{jHa_m4*;Af-4;?T늹i_jYۋETJ|5FN9NkHD@Ξa=թ%G=09-@`9v6dI)Kgmԙ)mǒj+F_=o)no Y,ޫD_gY=XWej7 KZɼK;wpf]JSO czx,~RXb|@$V)W}+F&C1 c5~2TUީ\Np>8{UX%Zn-jYk.4RXO\W}1]zNJ((Z()())h`.H*bpW޹8y鄙' 1"HhKcVPWu5~d5 H;9Ds RIOɟȪU[[gFf~5^C-yg5bT#e[xΡ_%j'l42:(WhiƬrSYHH}+FG@x5nQDQ Ğ֫_|Xҙ nG 5!LFw'1PrNzS0X=jfe;йNy*VK2V&sA< sTX489'UiFym-%Ճ)rl%YJV+ެ1Fұjϔ`k$Ц+Bfs`\wՇ#|Ƒs,zVhTfڴB?&N{VkeIMē`"fiX௥e\C| ՗$!$g=f7;sVt@G} Z&Q15N6Ak$`C8$)h(Z(Z(()hOu1t`O,+cI! IsR皱mf:Ԑa^$VmfE{%^߽nJz*GCZҠkPJV@FSY8ěVQ*x+n*tU_?20w<>ʆ"OZ b9ZpY{\*9Wbo͒@TY! U,IHFjr@3x)GEw~o^ΪIެl$Z6zrD\xv ErR6.H(xT7 JN¤PLP/@.. d xާ!c,y\1 \GZG }>ደ%nՑ>ycslV|ۧ|vNՕcfգeꍒ&|lwVIV=kNKcocqw3|*ܷf2 p\I=qUu?LsgT]cI!^zU0ڬA od#ZfLC]U['9oZ'ut-ԴRE%QEQEQEQEQE-pҮrOZȑmF}k޶``! z܅ iĒGB*Ӕ'L2EXR2B&S<> \s?J:40e[Ț$!NC bgeĠrxZH>`|P 85; SM".0{H0ϥA*,m׭2@ШVa+GM2W+xV3^K~/k&ײ6+`oj4'PDS^^$Sc$H70U(L7cTf?-MRt!@ϵUr uI¸9\Q4RIo#{$B΢@2KQ$'5^884jN"EL.WQꓖ%Ɏ@A9إ6A{38)hTS6v݁]8n ʤqֺ/ .YH ]@5-Rr>9D!'i|ESly+JJJ:r)IᎣV)h(Z(Z(Z(+in{nrr}m1-+zd (<)E RAQjqʤj P8ndC֍?s nL' шB5$W;C5$nQ_ҦDYB ";.O$jv|JBǜ$y?1*gROuoicl\k]? sVn.aJ+KA#k&;o0dqk>g$Y#xR †hN?HO5v88eċzbk~.M@"u[XXT=@Z4/Up\6:+`4kv-9vi-^ܱ;xjeYsN()h)h(Z( czv̄b1ˑd IPM0 IQ(T94s1Pƒ{@9#y ^Bi㰤bA!<1I3ڒFgA$}zBqͼZ:]G2sZf϶1x^i5EiHv!:e]c'SҬآP X.' >cz=$ 4č12G4L>frt]YFvXԮoJ1@mVG7~\VYeiW,vg@0Xja$!%ʱ GN浾Ʈ#^0:ַ@z`p*[u1K<83F{ o+Gޒ{5'%MBӈQډUeQj5w5řN;P*STQEQEQEQKERE%QEQX>d7>}A88|˃qS S2uJTJr6U։cmUM|cS/+ >V ;UHTaÚ|7I)Ѷ:jU7>BX=˷5!v' TچF'⦆^K] lTj؞3Q꺅ܻsFqR(ˌI.:L|=O&~/4Jp%V̤ JKegGo.V|猲Hcs<9brI&G,O$甥@,w8;d?xaOHA?\g8Kr~qS̼ҡ_Qs{S6(bsR(?(@|dcZYDAd#Vtǔ36mDoW":^h֧JzE%QIEQEQERE%|wv"Ƴ˅@( jHI 5~Wi0A 'J"@+z3sڭFx QIy1U繬%=^˗8)`njf27>j͸³ScR6$MGaJ2sK ̋椻P$jYT4\l)QvTBXqLWkVTT$FzTE*0㚝NأV#6מjcWPNOQMʫ S1x,@"2dR܀;`Ӯ ;b;VUo(ܣJm0xzm01 <'Q[d4`nuVx=}.:UVhJ(()h(v~V ҹ."ݷ+W!b0v2X#ML|F zըUY@)qTRV(T8ƹ=Tg]GcRf[Σ֙mcL|*؍DQ1d]@'>"ޱv/^wv UL]'f9iF 5Vsp*9UP:T3o([ZWsR}*?}U|}j(>z 9R>&6LQ|IX3]*cSkwejm0o).~nV)3m9=in l5 w [sYFFM4g*V%B6xI1ؤuZ%!TR֣dL#Se L,+ 352 χ|a6lϩk-{>Ft [Ao*!;db./ p1z+NkpNTC@e#8T6wRV3Qt@6 ⴭvnyjWmfX&Y/~bf8E_ĨRSQEQEQEQE%QEQEQKEQKEQEQEQE)(Z(O8I{!8,j؀tⳔL'n5Py UQyT<{ P0Ċ8i1Ndd_` ӠU4&GVrshh689#Hb!y*a$`yeLr5(x|tM298ldU2*rg=VF\V.dYh3*Z}:J()ihJ(Z(((JZ)h)h((Z* Tcj)xfPHqRዩ9 sBOIyUsw[f\>8vҩ~C Qګ^H{ڧQ$# UwS#ii!O]OzYZ0v:$0.S"P r l8UxrRhelGOo4H[:՛{>wt5L3`vVWB@"_Y[wOI )Z~79_Ưcs¯UڳERRKERQEQERQE-RQIKE-%QE%QKEQKEQERJ:X$H:yڃ)h1hcV_-B.N>U;R:)?tsPI!]0X^'FaAhQt&”b>]4RRQKEQE)hE%-REQEQIE%RIIE--REQE-RQIEQE--%QIERE%%QE'zCIKEQKE-QIEQEQKERQERE%%QIEQEQKEQKKE%%QEQEQERRQKKE%%RKIEQERQE--RvS.H?ZF`$QFAWV 9rE-(J(J)(Z((J(((ZJ))h(JJ)ihJ(J()h4nM 3L(l旜)$ 9JZu:J()h(()((((Z(((J)()(JZ)i(()h)h(Z))()h((ZZ(Z))))ih((J)((J()hZ(ZJ((J)((((JZ(Z)hJ()h)hZ;EQIE%QKEREQEQEQEQIEQERQEQE-()hZ(Z()(ZZ()()h((J()((()ihZJ))h(()(J)ihJ(J((Z(J(((JZ)hJ))hy"EQERQIEQIEQEQEQE% ?룮J((J()ViVNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEeGEQE-QEQE%Rҭ*үzu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)REQEQEQEJNS(((((((((((((((e2EQE%RRRREJNS(((((((((((((((e2Z()(JJ)iiViVNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEeGEQEQEQEQE*ҭ*ө((((((((((((((((LQIEQEQIEQIJNZu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)QEQE-QEJNS(((((((((((((((e2EQEQERQE-QJJu:((((((((((((((((TuQE5ڻy!F+ۑQ0A2*/3k|4Gj<SԱEV@ D{K{TRIz-UV` {\۝~m &a);(= ¶|s3K2~訦[,}>p[$.JC03ZVQEQEQKEQE%Rc &1ҌzQgo #u-QEQEQEQEQEQE%QEQERQE-UK]y5DYLLqu\B79bz5gE<0:a\dT(u *9>shy9r-Uƣ5AORGfMB1\*kV%0,hh028 0j [c=AU٭*(()(((( BJQE-QEQEQEQEQKEQEQIEQERQEgj kIp\:6ik(Wofj- 3ujӝ8$m˞q5fny0\n/+i~{c#6$0>M9 esU(FץV?J6YB$qd3gVB0sUEQKERQE-RQE-RQE-QEQKEQEQEQEQEQEQEQE%RE%u,XG#Wr/+\!@ʞVӓ¨Z(/N)/nc kw?f`Hc|08sL]Q\qQX{UwTV,~T*I#*^1uB^ UҫQEQEQEQEQEQEQE%v/lQKEyQKEQKEQKEQKEQEQMcO#6'ڐJʺMdg#5]WrlۇqVe^YN8eJɅ1+&`VevېO8p ۞j[/vxsbR9 z>EiVnԴRQEQEREQIEQEQEQEQERQEQGz3J(Z()((J((EfdCB'!BWᘐVlI Ivh90|ue>ǽi[C?Jfvo[(9B3j{U BlbF1n~ a?2 )s+J+`Oӥ\Is9RT%QIEQEQEREQIEQE-QEQE%QEQIEQIEQEQKEQEQIAEe0u#O; Ʋ@X:iK@8!N-N%Ӛòoހ8s])[+Z܀Yޕm' Sa.z7֯w̄X,arzԪ8P\.xPOz8 dSEQEQE%QEQEQEQE%RE%RE'~c;EQERQEQKEQEQEu}ŀ8e+7_O TD- "iH]RpIs-ԴdH|EFyw1{Vl== ,i%?*@!ޤsPpg1A&6k(((((Z((i)|š zCx:KERQE-QEQE%QEQIEQEQKE^Mr2 $I4y]5ZQ_p,}+ɭYCf%l9.>SЁ{m'L jm=8QERQE-QEQE%REQERQE-RQEQKEQE%QEQE-RQEQKEN:"A+_T4W(g uidI d+.H!H?u&T,r9pҡb>mgF=[*, êj_r0A )`1\ gқmm+$w9=4ȣ ~r*QEQEQEQEQEQEQEQEQEQEQEQKEQEQEQEQE%U X<Xf|Bо70 :_ˇGKt!V#mcA#hY&Vlo=UME✱R0i=?tzbF}zڬFҭp nHΊHK1GPUx?tJd v֭^((((()h(((((()h(((P)>KP%x"IJ:2#Uz屚ƾTIQ^tdGPr8 ȨD \wlrUs}@׽[>qga*ųyzU*~QFVR 2D5_Jdvs:kӜ֮V[(J(()h(Z((((Z((((Z(S0:}&ϔOWp(<̼A扇/\5wr= F"1vA@Wǿ0#&uYt/7gVt ]*\c` UѱO5Yq208sRڤRXRT%QEQEQEQERQE-QEQE%QEQERQE-RQEQEQEQE-RQEC7߬Dn8LU97 `9,1YwSܟNFtڤg$fo$qƫ!JvDv xΆ5 HF.2kSñle2Z*FkL1 {ֹ}Î1t0^IO$aNBITb((((((((((J((Z((J((PzqG*i?([|:{Vuј|p@U$aXBY7;ajz{nnX8泤(O=IYN+kkI Dqӊ!In +sFU^SU@sZ p&?9'jJ1HKcՊѫtQEQEQEQKEQKEQEQEQEQEQIEQE-QEQEQEQIEwxfj,H[+?1?u>( dL9-EgNB4ĉkMb|uXtQԱ9Mcs䷥tvNaDQoVqg5a Ld֔\T/*вHA׭JPU=~=hU(((J(J((((()h(Z((()h&6z97vopmwjș3^k@#3@UK9]1֠upQZk@s|VQ DGZ?{  ር+p@=*xbcEE\ԗ$#(^E7WXUy3Q|?GAV^((((((Z(((()(;RQE-QEQEQEPzQҢɄgqU-\bʫ }Zǩ@:ĮtX%-qgF(l3;T*-S9q+jKy2?:U$_SJ1$v")5w"c?U%ر=2C+nww9v,A9Z5QIEQEQEQEQERQE-QEQEQEQEQERE%QEQEPzPzQӚs#Q2=}+S0@Q0P£a PHN:u"*ⳤ).I$CDUTYI֕ہ]Ej3򺍼VٰxnzT[k~?VfHXU?SHМ籪W,0sL5 6 %kWS[QEQIEQEQEQEQEQEQE%REQERQEQEQEQIEf8.=Bu܂ RWdjQT/Y 4n2#?cyJ~\,d9\ϙn3TYs2ERxR¨2QBNīP+TY>vOA@tJ] ) J/d m=;? @PT~kԤuuܨ&#"stQEQEQEQEQEQEQIEQEQEQE%RE%QEQIEQ@2({{o-[lk5jfk&'"(8#X:^ʌ琷!jːޢe`TNiM s) 2]8Fs)VLg+AdU']T2/]TR*XG6#$sE3ǻ) #w8:֤,%wG5~&*#o dwS;=GscW)u1ԙI0?W5q!f \@?(8?vWgERQE-QEQE%RE%REQEQEQEQEQIEQE-RQAA;QL*Y;?ʛ+fY~n5ĠI>(~IOq֍FԌLa{qZȱ$x N*?ʩ&y픇F*%܎82*qns@ MhHʐ^(V!c:QJ" KyRYC!YcA+rώ+i-Go-dzI0N8݂p>]ocpIjʺ7Ψg$AeEv/SD%ITzWK]tQEQIEQEQKEQEQERQEQEQEQERQE-Q~P\ȣ3sY긋 dFUv2'sAY2i~OZa/8e~=X1ϯAV]\U{ݰBʧTۥX2d *IDmM[TQEQEQEQIEQE QKEQEQERQE-QEQKEQ@O*aMsmČO,zzv;C<*$QR}* \q5c,@9L K'Sg tQ!qEbsi,Wz  ï>U \:'>i1e5xGpm#+WGn,fQ@֕o$s"b)Y~e0׬ܐ3#g\HeKuo|ޭ$o(XCaoj[}jWܿ)} JvA:,0M@Z1^MCCi19$@Ucxc:v\:R[ѩ;Tэː;U$)\j`$M$wP FsNB@_9vd N|ߚaS ß1OB›G8AzS|Ӈoґ$He>Om(5JEf+ڨݰf#*ӆb8(VU7^1U<뚲۾ 5>OAtj~~O`sYFL~'6[ 67Otoo2;Q⺉4v3I!D+k;hv*GoLXE2@UdsE6>M+RHT $ W6+SXn^99!< ҭL_jf[ eTS$:kCd9̨6֮m?Q90Gf;*%KRpAңUs1Uی` Ӵ2cz^՚fڨܴAUi=UDK?'V"\v߽Vb#Gpێsڨjz=ȍYQM/cXttkE ՆfIs'Pz~Ud2:# `(H* ûhF?Z63 m5hR^F`?Aios4~-1QYp.ѕXvsV#JD+d|F&:A-$8\^`hgw!GQ}bU=O"aE VL#n0a+7a[9*'G(?@jXmACޥ;#!UsRD)"/dIYI+6IXϭPCj{Ff/rj(m{p۶ȫn_.L zՆO#s׵Xe;B6z3KFocQJ ڢp,2I 9tc ڒ7qec$M, 4`;wGAO_u*9'|ǵ6}A?6sڣɍlzSr0U`*&#Xt"gMc|d֔y˻ Ěі2lgkBѕa1qv= lG@ 1ډǛC!@ޕ `9jay''G=Bބ7KU-0%]H'ߵKh! 8FL`IqZKxfI+B‚CriJ)|p02h1#g*0=5$i#ҮBcAg<)y9ALFP}VKhDʬW1 5Uĸ=Oc%ܥɔJK|ܰ=jrrI*5VyI\ A+8 Gi .tÆcߚ[h\ʹrO1Q꺮ʇz.GJ/ &@02*;Eq<ӳ^nf >eGKif]*@AuU$ IyP=$8 CBoW "E;OB1Qi=;^>S]Q@o-p9i4\7 #/;e1tSz qI,*5$dztdQ|Bpèk˖wgYs>_9tdO5wOζVYEX:UHgι\;w3FpC4ڌΠSlc(ynWQ`VƟ6"FU7'=1Y"GHv WT ~n?8˜o$9#JݲR2gz1Gp{,A@wwBA {n"e9BfW@JPFCK qҔ/N) >YZ2YTo/CO ]JޖE[8`)'&ݱ\bE6lh5 OzGj>|РRFrzUc. =GGu۸Odž9VfvEApFT2]Bd"SLFHn+|=)Ѕ%c$֥Y$0 nvO2yT5+J :{: egj) 85FC#8-UILc8[ӐYoaOr2/.}Z͏"3j{c]cB4R2GsZ(>-˜雒܏JB4 _VU7DCG@>cU&8=2+.ض6@7p 6E)ǽ9>VlcFݑBIߕDӴR@$)TffS觍f0PMUJҴ$mJ߾nIh"K%;TJ\)b9qtzL:qTS`Ī輜uwtciX8Sج Y2zS';!ڙ"%VL(3[B6κmڃG't %c1P(e p1ֲ)į>\E#GacȯE:4Tn!Du2}3Vg9 Zgp"3u#j}iЩځ\I皚"$X'j[d"D䨫VgJsP.(TY.N޴Ɣ!8M>Lȣޚ&ܗzO1'(LU-u+jŹr_)oJ|!dïLh@hgJ54b)\3P qRAmު r1lUfF>~gw~FpqQpx۵d$q=?P*;Lo_j6uVVZjA.Q5KMMG>^jWVDjk;aH֪7W˪yk2tTrjq|Zp$UvD >gH+2ڳ8N U*@*yrćH,󻳚k:̛H9L3OF5VzkFq Ly\'´ B]|qLPafIf(2$jfG> )(ģۜj"ۣ7$3SYv1@mc"$esH"*ogT0OV41E^lfOPxh"?1P{-qNL;15stLi11!LWTX8,N=iT%GS4IǭV}&J9lh8nj+{s! 5 eٻPZ!BT6\};UnHsW6 4HT`Km:&.09bFCǽ#e$`xl+{WFܭvoRLWHqOJ̹9~S\$7 wV/hfW-ݱB}*hdgQqێe#Ȣ4Q>dP8^MX2w+aOLU VgRx?jkϛhtm~8B@~rU"^cbUnC<7q#G=~SJi d=qk $*I=(KUޠVZ\*8Tu5+"q=j:| o) s楱G v!S,`=Q!8VA rG3H>I1A!H8AFbVGr)$ltS ~c`)ңC19FAǧz%`Ȫ6r+AQ}D *JbTJIP?Y֗[\%weUx%xfVlcU 8?)ʱ]*M7mGLf{k8TC WG7Ij "栻KHcgr8yDmU[imQTPY]Sode]3Y]yUUe$T!G # 2T`0MCta+&nG}WܼTWpѩ"Obs:=Xc,:|ji>%3p O0+LT3O2`$ïҪxV>iYXd:`TcݡY2ߏ8G,+6KeܙV{0.5QeTQh*.@mڠHb8h8ni dOCBݲB/GљT`bo8Ͻ&˽Ƴo4Q*JȼƩd^PÌ5GQa=*;U qCeWQ8NpI s͞ÜUgOJgLݛC{*ͶczJ$߼joݸjݻaviHڒ%d2H$RF\\2)# pظ`ˎ#,|1ҞDޱ)mG6T8Vʒd8S"@ p(/=Kkl’ {Ԑ&-HSn傢V!\  =ISʷk3L:9hLAϙtU\{:,`ɢUDT@h"P:\Q,jƥ᥅D:r*T̍D}@4BH*IbYbE;8M=qT w OI!UD I+!@nJ]~oR:UB~lVZo)J99u E"2]cIpܲ p~(6;r Ue̥Sd2:sՈw)T=MiYR\ɾu)|5m[|U}UEvbFWEUT :Rөjbp SYZD8P)>ˍ6y_Ik|o@H3\<=zec[PG=Z~oDD9J} +jg U=[h+ {Ue^ݵ1C 0pr>SYg-r+>CLB>HP cw ""pf {e.%\&*kсӟ[tROpF9yqM M7aP.icJ}JA6:S#@G4Ш )|f1±OJR%Ln?0q)\v"XgZ&$|)rG˅#֥Y~RW(A_+AiW XuJ AA9_bMVB$95]tC LRf U՟67hq֫3z3G ,::WVHْOtzKH;dTo`Kvխ*[$p*Y7C{VBLԪOven#!P0HɪITV7=jHwmWv@EPt=ܭ͚YS𧿽ZŪy;FUUHДezhвG5";*n#泙ɀZ&(9۟?#G,/TCeF`3j"V=VuI5Qr֩ZDݤdj,I![x$赿k^N4p Xڝlku\-c #n[atS&r5;DZ_&TvMXHNsZVŖ/xRy5ȕ~VZÅц=Y7cRޣ//$8j1`=%Rx+d&YYL֤:s,Np3ZQr1:UxҔeitLk(iIj 51 {Rfr ;:F򩝾tfEIn"SLsӎePkt8&pS\Oo$OjAH>ڤXZS@!OXRR1LxM?-$ӌ=5Uw1޵ m2tgD.2=PYNKw쏷Vm' ҋ R={Qm+(&isdm`zp(>v3n唚k`rJHR[wYɃ~\27 v-Tn_H$hk@}j-ؑ}8T!nĄz=k5IEZRk7Tx!O*̑y5\[Ԋ槖&< DYٛi WsvHdY0xǥOC$a`8# gbC\4?<0N1Vlhڧml =kaXsP&?-TM8az P`Hi@Y#Hi?O֦bDUqp!\TS 3yOE*+Kj;P@);sQGn# aiA@@^/ʨ Lqo ̓޻J̇ qxg;T$n XU}o* ~^\1?wn4HS*vIVndt$$`d-<&Zl2bH=jmU5ip :qն;g\nI=jY*Qu@:|[ǥ\ڌEl1n.c.9}ij0 Loi4Aլ !De[td\fUp.:$ߛ_tc ?Ll:$CF Cgިä(bx q#)duiZ9|eO_ʛ<[\yWjFz)aבЎkC^YMAZ!I !pB+G^Y\[,JYrShYyxlf%BTT)o2ݼH#v|mu@\Eߕ(2nܕ(F OnѸ2oܽ3~n},sܑ~Gr[T歴AaAZ]„#j\D#whXǩA<d99?E+$Dc<= ,\?rMsUMeEBz\|/沐0emԐ? PrClyeb(WQ!N<Ñ .3uRK1\֜1,ABVcPYArS?Zwi5ߝ8`'̻Qz`TSDLf*1Vmǵ39椌.G>bZA- Q3I =86V!.p Q5&.]68#kN;'8$uNB é#9/[G]zguIt<]\.&<3I7v/&G,rH9?J&wZJ3դmDE8*vO4Tۄ U#ppaӎԏ|PF95I*°wx+5fm*r'vc=*9ޫAݖ>=IMMl>Dq>4 `f)bg%4pңs[:dtQܒު,l dmYW9*Gݩ`AV54l &_meW|8vʨƒbw͸昻?758-Y)y}zR}Jd}*Cl2NS,1 Z3v`00)vlqVq#$TuaS9հQ2y^F\m?JdqbvvR[Jc8$w~I.FHs3X7WK;yNV{887*Ǻ(-MԆ0텕~ZX$fң(14ˎ5HF X<`2{=bϗO1P~zn9 mj5!z֭E9*Ǚh޲zIP9B.1# oJ).ḣc)ญ'Q9|S}\mW\@w'#O 21Jٞܐe|g0pm d1Sd͹LDS)*22Q#H`a$K}̊@ҡꪟ|gs$[ |O 3+ѧsF`urb}k&KG5@ Hс[HY(ڹHb03U.r >byJ Jλ9_jVI:ԑC-.;wR)'lBc /F欅[,,e~PN f'kD'N3V-^_>X8^sq;]^inW#ZV~i#bğf`]=Hy*k!9*rDQRADcsI'q*GK; s#5>$9<<ϓYVd1z >Nf'قt/Uj}{Զ_6xmrG㚚soW뚖o$ ޵$"O LBzaB#!HziB"!lr QcOq֨`֝nY)UQӽ, dwX@\ƭl '=iX ALO4"yQd3Zզc Ҷ '5X H dڴ )<OUV+tbYyW g-N?Ƭڙ'o*g5%m8@x>>p* awz T$3U]riZYx>2+Q@H@֫y\!(|zbKy BJDq؄͊ To$I>ڈ00 cs퓚d{%qK,<Τـ3S@U#9-£dJ>)+ v3N_|fGFھg|>Ӆ8۹Ðp=KR@bC?ɧF¶"lnaQqҠc&)7* DPVLVŴm%ÊԎ@ ,Y{va]jN&Ty9}罐˶xbMw),!'D:}g|=,vSȦgsM*YepTv)U%c~P*D7|p)ݳhOZx(''SA "9yS4pw{ Hd@sIn AH;TK .LS<7ӷH?xs5QI˩_L]Hc _P;fٌW%f Sm|za]Ҩ돭IzҲz:'QKpUfR sV#'b=I!msq֙4XgKdg,ʠG,iad:thP9zs3I>Ty5RiK :d)fl)H\ 9^UKdg$8ぎr[8O=W* sի_ `6:⧻LHTzԖ*#g(cG6@ہAd 1ڣi=s;Sb3.8adYe"` /㌚F+!7v 'Rp'i*R۸ |TX\9#V,lb8`j tn8i'e,&$=Nr)$ Pw|Rr~nbv'>qgRB֥G ,c,aYI kW+{nO\| `I:Z͂BS8 pArJW;Ӷ1"l2 g~STu2H]ܧYobrJ\n\yYro^ƞcV^#IM0N"laޝj}6(~zX Y ڈad*ǣJ|C nY][l|^L H? ~ul"A *r09= MWH=OJ-0+L S$ϭ2IHr8PA=1C|u)ߑ)\'~z ɖPcZu7,F0Ֆ_'7 ՗Or Oedђێ;vl %um%q֠F9ϭC, eڠ2UM (*\ypЊr>pTjT}pF^|1ޘnM*\i 2ڲ>W@P~VK}5w9 ֥1e =jʂr N,j܌$-$*J]d\xO.QdKGպTfR_,.*RwmbmŸ+Ġ3eӵe -3%r 㚸I fH E%p3B#<՛C>槷)=i¨7USoQ 02=)sw+ne;Uc>l"BzP|)S6 ŸKrmdE;0{uNaunJȸcAw~+ $M& =kRmB/7B>pOja<k!1cihDPa==*KyfDv~[-n'gPÌ.@5z+!lx3Vf 30 f*2ש{/rݟSe$cdlb2 %^^&% қXNwwR/E6A=jϦ ղ~qP}ؙI1Ï_zۓdІV|5NbVF)lHRhϥT'JTYאe§R@ɰ+95lB?biЪ)n5> jpm;u 25Ucba#+5A^L(vcU^FlPjNϞ֍BqnWmyk[UTA0sށ"$1 ަ8BH dM{Jw *A"U_=9 ]mžX?KR6s֞B^=S:)Sj?֫Isڠ~EW ҵIF]UŪ+B$)c2 90BsZkfgbGsOUrCu7*R Pw*I9-ګd;y-ڡkm<*bZ >o @O|ݠj}GZk9TD&tSQK݇ZEFi})yLYO?Ё: vTL$t\,(zOr%x8QӞϥVgP& ŏC )$Jڟovc#i.RM6?Zi)8y&8]qO,, aFdv&n=6[Hc])P;A9^FnrqY#Ha!=#e^ =J+x6ڹ'55--yc55Kx!@HE娘+u|IpޟW *C7͵r$nh%RyqRHqI)8;O^C}{LfHL.r7 ,JY@jI_sRpi`==H8_aXLrμ(}"I]Y(/fZF[.ls0 vObXf`> !yCb;(jG0!W5j;yjiɊppqjIf1[ c<$䞵k{c3pžf2IJ #vG}v+נ.*{܉/so/ ރ׵E5tDZ[#w(5fբ|)<<#+*0yqhKeB;$BqA-ARI8bJvIk6~z{vatg5D *<"=֑=+cj0̻Q-&<_Kx'!;TR"]i2#+ɜJpR9'\ZF$V;|ğSYk-'M^mcjݬ' \Ub!ݜhŔ18aF Klp *H'Tvun@m+}E:^ހv=(<JFwKq>խxU3I9|^gԊsЏZ|bl fbmOF<*I)xF?#|!ΎBM^ӥxՁM[c-ܝ+%bBHa+ϸF0Շg/85b͡um9ܬYգ"hNߐGcV&ϛ1 V $Ojm6YN~V迆{UAձT4Ё)QXYZ| ڨ_(<T5)^=*' \.$̹=_䐌ɆW:_O \=; y8ҷRi&H FI4 vvkxF,ҝ"c+Hn".XӒ7 cJp9? Ⱥ.mIۭ:kS @fMn'r9{J2E >?VdT6c5oOg]F=* z(jđ.TzHl#gU$ Wv>cګT0ԕ˓#ԑDXv|+Ϯ*YN}3QpYaaJqU VL-F!b,~Ecҟ<yRM#"gARL쉞2I+3{UGw*Nw{Sg+n˴ TKvIɫX*v*F#*:qڔv$zqAa8ds*2G`aG;=N*sZMCԲ2!*{޵$̄:GsTe4t6)& }ڬ} m =g6Bqz!q@ FFj+dfLUR1E ycce!}P)+FS3EB,sOqSY#i$ka13JdE'*tThKU.y53)8~1qS0;NȦ@yP#< a@{(D!z / EWu z~pʹ u ~Ro*@ qYݙ8X3[k)w$95mXL1QSI QpXE"r|9jEƜ6*.A#~F+wj#' -abʹʠKxy$-jU*zjpTc5 ʨpqޕA *-*6#$S-1I"GyA+#:16"oI\vWW~Ҭ QqJ8t7#%*%Vj=gPxqvI{Su[aOjiM;G褓jz2"ȠbjWpʮ7Z F/'psj~bI1$թ6#|ms &=oF򋴃gD*ybs0[>U:mNl)RëaQ7Up oPW\)q4[ Ibk>I$ʱXf%P'5ֱ28 !mh EfpXZ-TڠNqEDPHSm%xE6)kayy>,=Oz29<RAҔȧn'!I4샐 (jaq1W;؊/`>cJm>LkܝKޣ1o׽$EY=j;%#ablX+ۭExX29Q"maH:sV"ka!8#_JxsYg8p~n5;ؔ45gUg֓PG4u@i[̯<Ei5nno0wetAWh")\ǀ3t&RFѳHjkKx\,a[%0qT(rݍ>3ʩqN8tȧB!'wYjN.IשЬQyrOCV"}G6&]g#ޙ4-8>s䚰<*T Sʳ.:?CHZaY~y/*31ZgsLxGq_y(}:ӌbN[;ҔO"*Ҵ+871MVq⣖V!xu+C]T褌{T7dRIe;&+XgR[qqV--ȈdqWbfPzwf2#5f2N//չ-2u*TpCcڲoRc)pֳnVC}k:vO8Zs)qBF9ZͺFsЌlNLG5 0P㚍Bzd$9j9W'#)$;Ud\|cҴS2}:7jfbL*\>Aq =*vU.H!#XWI`z沧]YW[ [÷X>32Z6e3޵n`Fx] Ojrӑӡr`Y*۲V١YU&0?:"U%7" ̹&yjT:1RjvÜc5 ~^z0܉ET\40=ri{S#A*򧱩^Vaʚ~C \94␞Ԅ旰~Ը*,"K D~4X}Mу[ XPT#OREQEQEQEQEQH)#}ڄO.*>8'$qF;&YGm$+>]_壉 Ʋ[6ܿOjEw}{VVeṗ޲o6 e_v<{܆w0+Ɏ}֩cdr8GzG#G> j`2[YHCKA3;zC1]tP; =(((((G!T5U9s9T@.54!@Jj$jm5VV۴sTmR#O!+k5ao9"o0=wǞ՜-v'rj͵A'8Ȫ j@VIv7A`=]|2*8Ĩ2~G6LNBi3! g {ҶSqqSR3K:g(=0i|'q>"~JQXgnܻ&ʛXW R0ML֞р܀(xCF&:~4݃&A̿7J*ՙ~İ@w Kکݷ#X?M]G؞hmp<^mc\1`)v038F*@PMsORDwdR /QH:E`rGQN$;H1Lx*3L)08YY 3U1+aEA嬍3W4h]#U.YсZz˕_8PFyӊl`r ?/";^!l#E9 rGTr:5 ;Uk|vcM *%.r}*՜!2ϧ>ݕXUӏUCR֧;ۆS=)Π7RV`O ɗ顊@zRO%QTwuZɸGݫv7OWf@ORy5z]bEpjS8# 'uuo=J<=VEWgZ^[(#'o `Vb;u,c>YZGl#hH ؛}]]((*VOfUw#*s}1P1!fxDb4؟]96A؅{V8Ul", ];ү6*TثP=VʡSU/DeۜqtA*ʼuS˸xj ]SV)ڙfV0Y=+\ J G;{U\mVG95t96tS-k,Fy9Cng&YEm<`q"E\A7VF_7 hhTݤ;t*@C#DAsڝl4sMQJlp?QFpy/*hvK' Ԑ͑VP|ޘ zV92=*uMUsJ#Ք{xp^\9'W>|2[Ԛc$@V\n$vТ((YJ\[H`$uԘm2M"pGFe4HU]> z4as} c~H|/sY{lY2܊K¾׮d*(5 ҙ-2m)'xa GIEb84MG$pj]-i$ 5%9*G0 SPf;r*& fk.H=D&HPZ98lr1iZG2shۡd$G-̫o|QtC]Su䩍֨F2ymssOt9 T\ǜU2*~hBTS NqSG+ҡq=jXuy|Sw"QeH o;{UeLmOj Q'61K3H8j=1q;J#{ԓNt9ȥhsʕ'#Fv†F`"!$c3ΕM o#+A nō?$Ci|W/",*Y2 wjYѯ͵֣a| ՙ8Vh/)W1'*A֢wq1f ՘c={{SԜC֙xQ'!p7 W!S4g{֓J*GCTrwsR_${U78񻚳񚶱"@(!P*DSӨI>CP.!zrUi0 q$G:@;:`LHBzVn=ES.T # ң7tQFggJbbި9U1Y$%&z477'nnɮLG@iN&MF^9Fv?Zb)z9SZl$bfP\pƧ |e5X F&}Y]\#ҫ5E~I~n@?> E~G5 ۷Q-恃Zdp^8'\qg8Wa&!FrNܐ}E'$Jy?x b"Ghy$8SBqHZ@l@lFz4US?ZFz֪@LÕ0N*-$Cڢ20c֛[)2K`իh<ެ\ж_19a;:T,sۼhX#"4$:.H&VGgjj[:\vnڮͨY\[H[uj-崰fjgr+ v1@zӚE A=)*4W? lE+j2qҮ@2~!浭~ԕ=ILO(dBK dwK`zg QZH+ǵ6w !Z&>Ͻ ?ʋi.-*|"B6ޤɈmSGo,>U*2@v3MyUHβqMHI8yRA'X=*$瓞'X֭[O !_} O ެ[+R85 5VU֭$}* t!#"m%q֭8#"'V%Gp{T8EYW&zn{ppFj {k]mjS=a)9/p=MH=*DS@bl7j#LnrU)(y ]w0l~nj՛T(NҧuHrsTSB$TPn d{T9gT10i98iRz{ՉZWf9bjO!meUk \\++l\bՌ;)%EhY8jg3Oqⴜ|zU$ڭ;1Cd@T{Lڍx>v?JMd“sب0=j'&J⍎Gz0&jHKASRD >}eNx*tNIÖ~ SW TkpݪڤXsVBa7(GSVߒ:b\){2O\ԆVֺ,moaOl,.*{T ߜ|w.P߯Zf\/ҙ;(~ty+zR,lHGk398Tj=kt"1ꃭi(OpPOjT]dsӥhm9#Yp?V.3*e 5[$SқjqQcyVKgǭ[8<\˸CDFPv9\v(Sx8MfU$g𪅽~U3Y3ߖ_O&ÈvhT zN0"g Sc4AFq7att݄tMُ3cF@Py}:yl Nv&>ԑt}'PE$To. Dsn&)MiA\ IsR,jVy!H4/2Q<P_kEˎZkO\~^1ޫKttq4pB#1ȤI<flqO@BǃR dU;Lx2L<Xjdby~C@Kpպ|_7ݧ`ڑb~W bPGnj1Vo$* z I㯭J[u~G^ߔjXeeǸV8˦XPBF[K"AI\)K5Gtn Ug2۰=p2_kY j׵p`zT:wEK+~b2>U EL=?J-dctbV @ AcUpcԚhePsi)ޫIc#rOfkb܆'ZVZ[%敄0Ė!#;U!K`Đ{O^[ޞ*rpޤRJx^ԂLL$s B@S9ӵ1;c+zU9ʯaP49}j=Hy2nREc~~3օe,95mzZN pW_S*1Z7##QGϠ=*QrE6(`zߐiZ⹛Jͻ \bO͙ SjZ'5|8V}sg)<'m8q)3P\Z,pqG,!!)öCS#Ӥv֒;Gijw8SSGiojpX(b; L :$mh*C.(*S.aE$-jƤMXԶH` SrQҞIңRjY[bkԵXrjė+l3rji.ԟZX[$c\nf)QıpP:w5rUPEcjaZȂp/YAόuBMKsRb(ԍG+U# :laPHqMxuJDLhw$fCHޤXc\ 4@H R z]߳1D/Vbz>%Տ?ă[HSKٜ8i[gbH4 ;y#րNpHWz0AP)BAI~`vSMrSLb_>W5V- SP UI5b-x3n6ۀÓWm0RN1O=*@INw475"'j$BzjXI늹ol>ih: .8YuR6#.A5-[[=ObiӘn!fBzD]%rN$*OV5>WVƞ'#A,BQQ܊xP<{1-9s5`)nɫ8:~U7.U4b7LsM2Gq4kxܾMD+$+*ơb;H$'ԒEsqT'[VqҰ/@汤&zFIEp > DIV%07$4Ф2@@㚅Ij;T.]OJ-68|~fj=@_rc5mˊ{ #qLoʫs隱hEMni㊕zzCҐf1HzRHcC2ǂy43ǭV3NAڹP8f_0GN5<2ɼ&)JîvdR zV!$%aqJk\i]!+c#l3#ڨG"I^B Bdf;mǶ*94IrppSdSeS~U犪S8!7|ݪH0Į3ҟljHՃdsU[# 9.yl%?3;E$AI *@{բhX\.6QS8.| >f* ՁLWb$xwWB%$VI$y Ԓk7k$ZZ^eRF{֖7:N?Nfo2eiʩ .xV.Zm/nj`8ɗ ڣRKLBTOD&Cűѡiv2ޥE&BNrM'vnQFj3!I9<}:i `r?*M:̻ϝK+RY|Ua0ĀGZߝ9*0zk8 ҃wg@4bly>1U3T'<`}<zS"XSG=sޟ|ʹSP984'Iq^AƯCA?bR:Qh1Ҝ-Ge&!=ja!S FM5ZGUYdю)Niȭ;Omj ӭ^$sVR*ͪ[ fg=$s]I%T[2rkbMD徵man"cֵC&KʈlqC=엓yj<.ZM6b©${s &㜰P2~BF$~4!Te,k77Rx&Ԯ%~3ֆWv3MшԻJfދxH!PzR'H=*y0H5<G1Ȫe^ZBF>TN.TU༖ DۊFkFlUI%gbsj{[g_aFzH(ǑcMp)Gx1M~zfeңJpʝҜr)Ul׶):HXXِaPb,tL_j'ZKxF_n)""ҮC;En)UR?g6bv ]ujg is;@) fQXsV#v=럘l8i]!aY጖,9I=!{B繫UU;'|}< cF^^f#c䗨sVf 68*ʹl:UX[~*ҘJ4acNN.L@d@(e<Uv #SVv #SS\u  qݸzmyv!$i%w8*6v0SWE.5icRqӢxi ( ɥʌey.?tqv&`9ayd=rOq`?z2x./s֮L [OZso~MLէ3Vj<4fXUk$H=*Pn)\/OnrǡUddCWTN*q*azQn2 99H\.~.=)eF&4 1v0pMUB|~75D™[$1Q.ne~I-?p-#׊lVyN`rqMa!T&a;G4R0E")$mЊ*-#ZEFs֗Fc6yݥz"@&s/IUBlWFЉKR=vy`9jA S<v8{^JrG cBĆ8T/mHHԬjbhX} KL1rt,p*j>R29qAUyA7f +O؊H=ieƑ`AI4 /aҞ#iNcѸt4x4Gzgع4McrMG ̮"MOJt$b5Ϲ4dG®W5O!,xAaM-&؏,U@E_*+2 CYqOEnk:tZI!*+Gr}-Ԟ1TcJd=;URL?AR7AN+2O')cޤf!McC}ӢvTyC` z5 =qYhDWڳuפ!DWK+Zjx 5Bm9m3zv["VHTJՋtD' "Ŗ'!EHIVn˓ҫ('֫,@0xL $C8^5FoGNjәP8pT(<,Hp*\DaL` Wcg"B!cJmL|4KjlǷ< N~EfF&b{w[[%Bd'-O!FcBxPzxOj"7dU2.ze_4M~df=^Ɯ\J1ZA'֢i7mC®=sR(1c3SF#%#f~Inwʭ1M{)Q&RyM̌x_Fg=)ۧ&o&2K%Hm!,fҟ"Gn;ns3Mf#tsTfz b۞E2!R%>ͣ< rBBvQIj8㊛`/$'qH0:iy9cښX} wƚOoƚOoƢsS;cZݸ,hZ#%}h(}űD`ݻK"HMIw-Fqޟqw$\w_;\Sjl@NyI>9GNv^r'4)vjp>rh&>4sM39AnnH׷SڟUAۜիba^$$2ǵZx,Q*0Փ3|+!㎀qv1LkY¨ݞ傎sMh](¶T{^VFjQJ&_Q};u#InlUȪ1J*B{xXA'G8ROsDB\9'dc'yҪ v-H*wW)".&?jQq1)LϖhHvNhdO&,I=2#ĚH嘓M} U5 o'zV\Y2ӹvsڜ:8攜h'hO'NikqߚkqQH= F>xZ8׶X p0 (Q ?ʲI.A8/eP=T可TI"0+ԊxG;·%QJKޡQp}0(V`Vu?@O5JaibTrxT$WfG4Db=5={9+Lխ6/6W^Z=;-;QR#;TEl 7%)d ʿ1!A&byj~cY{Y HHK5N6-[L<5qL te`ڧ b6UULT*7Ҥq%6RwF3KpZmjj FTqB洼9hd;Vlİ\ïȦ4 ]cLAf^ȭ9^ߍg]Ke8(wvʅ~#mD2gwHJUwdt*01'p\ \9c_*Z,rVk$iaxO=i#/ZO0lNzۄ+;Bb瑂Ɲn"fǐh6 +_WW<`zC,ZZȋI&0ەsgHO6Z0߻5RͅK&H J1+8HN) ()()+ mR=/ԯdYZ%Iu[Yj"}BǧWKx0;RO(ܱ# t$TW'<.ZKrI'`<5)i5dӫ֥Q9,֤yA楶m㹐d՛ oGSȰ['gΫ%#$X"S%{XI!y=$ZmGN)dNA QR[R1)O8&T\2%z|Ѫez"wOҡSTrX¯I"|cYlcUX梑1"1Ke}MmmI Kn,']~V-?WKM5wlsX.ٕuc{K*UgXzs1X#! p,A0jĻ,;ԸaOO0¡-89J8c4pɸnhsr.\EֺOy&.թu3n\_e$B׊F%sV4[n6X̑1d'qT,Dދz֭h5۶b{w5n8Ĭ}sV&SVEQIER7 ZduAni'f O\ LpGZiRd8ҤqVU.2.SݩvwvE&:TVȾ[mcvcGI݀ZæǓ+d`f%Lͻgb{,;:gj#d>,Ğނ<-`*xJYJsNcpj{c S  BV98im ^ӭM̸>Uٵ"o,kKN71MCPdCmGJ551(2cQZWhDHl~B\袵AwUI?RYw꼷Go qi .(sCjbpUUbA),[D&` Ǔ-AJTQEQKEQKE1ɮ؝ҹf9f=j]sYR^lި;&k1/7^PKd$EkۣZ֖ȬصRޡ(J sgMw@vҪܖp ޢ;@Κ巆/d:Sيܑ҄w7jADl|烜/5a| c%G;RYR^GlNQ4>ҞQ]G@~ιeׁc֋ZMzK=c#$%mH98#NXBs*ճ5SR+Y2)";wBpH\Vޙ% +qַfē`kvIY4 G )b8*EI K`^·#E0T3Z@F3Yکly:j>7(2z4+ "@+ǷҲH8-FA'Һ[#-Ř.FOEm3u<}*" VU* p)ih(((q-gw\qg9+ΤzSqOۓk1!&I @jp*d`)'HBjeM:beaIȁTbL`*VhYh( 7%LOjgSH- _riQi>4nZ` @5ҧp'*ijSvK8X+${vAUݫGHǗ" *LPVX7u>'* Nܙw/tHDѝUbVhSJT0 St9timYV_ YPKk)Yo$`T cI aCgڑ(@x XWVhiGTWHɱ'X/ Gf(1Һ/om8$?wtgd ˓[*x--QE-RQE-v(cYmV]c'qPn$j"̄8cKpU\|bVێM6vnkdKnw 5zmĤ5e\P,gǎY0[ 2c|ǡNo9BBwQEQIEQERQE-Wx#$m낝`b'kU2U6?7Jc Vcq yZT^Msw6&<;F1HN8)rz23rzgҘ _(8j9qQ\)'ңm8BN8lpi.[,͎)&9 5qKr(U.VP~.'5̢ɬ׻f۞3ިzg$b\@\>#,MO5sMK8 }sXZ}Ž} r*r*>0}j?Ydrj{cٱ}ign+.qUKxc_T%kf0*L1P~s m^cT76rGz. FNjPlɦX<iQ'M7*FzdӬEGsj]*Icy _rSdui1l %B3ڒ+A;R]#Tna*%Mq9jHD1b]Ì 2Kq#DDzjG}v7yzx7j*Tj-kFJ[(V];NaP1UF㨨aa4*6>% g3cPĊHA Ԛ$U_Z'}ep Ճ׭!<ϺɻlҪs1j)'*o܎p1U T_2&j #ҪݮLX֝@SmС=^C<0$^dYQ\?)'1Í [.ESVkV%QEQE-QEQEQXۀSڹDar{V94PAj±m$|rENHz|Aj}æN}. A?U?z䖔(iUA\)=4#8f)2X U;R ¡SJKQ!WT :Kְp>Cgm-lܒ:V2{jPfI8ww8$,jhTC&8'wEu >b3uqDz8t #vS1ۘt3nyzg1A)HUsϏʧ92i^JS̖ *9Iuڣp,y50wqVk(\ag^-̄lwQ;uGksHT[%+5qrkgLU[$~j_TQEQEREQIEg}$S]rA#ڛ$ ՛;B>Rq\i㑇ڲmäU»Z2y^>fx#4P<zT*~,H'ҡԮjx,XVҬN Ǟ梲x^LAPںIf\hC2,|VVLnP)R/5c'8Zt K4v0w zU/O쐳 V; ng O{bh{_c[ր:GZ:=K\-A1kPD$*!kU*9i]sTA8US#{1Q-Ȫ)5ZCE?9G8<0e8+ Ui\ڡg#<2Jc9ɴd jS/{nZD|+_B3^,Mֶn^\ >[ jmp, zTڲ<1S},S`*K=J+;B {Ԑ^kk6΍I,Wڸ늽ɨI3ƨ~Z6l=_QIEQEQEQEAo%G̽HX5~eJyDQ219iIR*YR^E,ܹi˃2n=iO)®޾@l : N-#BY9%܈Isjk C&r<EbVnb *O;~P0r#3L!qh+JJ}:51 #>žTLrQ r8L^kS|mse`mlW4[?U9e=G5a ǚGO4w՘Q30TQo*]k@WIQGV&>lk {q<~~Y RT8j_9QjU\Jr*ȇ*{'U[$CbKCTpzvNEVt*J֢*C`wRջ;!$ =j^t!ϏýhYCʊ6? >لkPY]CenV%؋>WKq[@ɬzkn')1$g?EpVb@K'/l]m?-QHl +XGcjGrO,RʽO;Kd1=KEQEQERQE-V|]'\$Ghk6Y7X0:@&BU2VUM複ƣUPd7@6lBFEI!Vp?*%9ngR$o RƝ{icޠA Q$Ng(jB ?pFHv :ORуө4U0?VdERU}巟#Tڠ̏#QrYJj"lAVY+Jl.~ⴴ܉c=+Jr}؁cZvFFOZ56^5H7 l*xz 5k9 ?+?S[Tn.>Mg6K>X 9md 0@wzHG4@lqD0 *$Q}Q[ò\Z|E,cwRQJS![QxA UD~8|Iֶ5yž)$/lj2b 5II8AFSzƹGbCjD[WLن#үik6|tLuxTB c돧JtQEQKEQEREr w 'n\ Dpj(̒uЈ# ZP9gO71,Vᙌ\ ]OT SR,qBG<"]cp*B ?<\q֣YW$P"K6p~Ei ǟrj'^I*M;;^jɴtS#I sԨΒmA23s."Tr3Rly~Sk4V1T2ۨo#?C T5]#d^7w"X]xR޻Զ8O%̩F IJw EWN ¶C }lO'>d,ISIT$;$ӀwNgYU`:α5u$7nYOn^f '}iep?:5IR=2C8ɷ⺽^TM>zRuOW{{+9e`HOȽq\2XZM!~Ei a_#rkt6/#rz]YŴr9M]f(((()k͔iE!z\흆3Z2썇NH(HYH=jʨPa/`oN:̉@ ܀ Ze?#=xzm̧קǗ?7\T d`'$ ߽E+`2>^Tr`Qp0}n,h0_j~ص>SWOj!«t gTief;[$cE3:U|6ݥ-8S_8SP84ʍLҽ)WJEW V=ix;I)%c敹ʯN?pMg_\lA`H*Xmi ƙ8Ȧ-FTaʚѴ&,1761WZF*K-NGC}krnp9?J׿n1Ҵͅ{zuY8̯OjfaXy˷mb|5rU(((Z((|㰮}Uv2xCnZ/ytƙ0NIeeT|@]ܨ8U}I;]ى&JF,N}D1q})(HSAk.[v).oq&Ipw|Φk` Oq_s0D䚉 d5dhCqY0\?\qT1.qU3U+qU|:))\f7: SW$╉ h\zSd}*H푚zSK2"o)~~{JcRc$zS~hv SJH< 2O=#B.WlJB ]pǥ]6˷z tF)\ސ0,T-REQEQEQE-QEQEQY1H`ɮ| G2@r`dy.V8 iRrOV(U-1Vɉ885VvƉz; pq8aUTzԁ 9 Ŀ6x#|C;9!o{R49# ڑ$&x.*SK3``{SrXRiR2qP cqQ`&D@{Ԙ`sRUx!Vdv 3GƐer88ug֡pB3[ bo-#Xֵ#vXag-:V{aMpsuc}jO b s\QZ(((()h(؅'knJĊ.' 91'%$*'L9☙JjpK09^b+bC-#ڙ71)[/zKi aOzmTIqZVuH7'j[kR-eܮV'h[jl+!g1ڷ;ַӽQEQEQEQERE%W6ݞ+bWsepj433@j$gs:Tw%Nr8K! j9cd$ Om ۮz楊1jhc/N]A?ZTTA'Jcb4oœn৩JE6DNi'6zUR=*hU |a7 ԑ]p0}:tgV 3S$uwMw~ǐcQPoZ ܑPOEhL0+ѯGna+gJgHV/x[Yq޴[`TpzU:9W5 QԵ-Ue*Cjb!Ywq`"@zŒU`% "޲y>ͱp2*=;Pncv{pE:+)s^ob('g 9WQܪG2@2[s" ֵ.4kY$2+Z3ipJj 3UA+r ;2(sUѶ v*3V "M6x+VfT X8eVR9E+X֝](((+g݌\1`Mrɪ4 ,jJxVѲ75b*?x՘c!}M2H֟{M0/)9n} Sci'sTxi1e*X _Jiqa5}m@S+ HU +:{H»s'|$d,1Z>m bsp3rͺf`;VԳ]ڒ8.OZ5lqG>MXY6s1"m ujegv+O纳b%V=œށ3$Y\K]X!zOޛ+Ř(*:j\Ae ,ev:u>0G#ظH!p;Q&˔7LtmY.'8ܹN$dVpF9HTM֪{лsRԝh((Z((LN햮\kFY<*|MIK a9K$R *@i7cǹP) n7`|ƟrO\3wJ%w=iRȎV]x2F$b)ȱsjAF\)s6rN#ba'g`m8}ks!#o- >[tQ[%>*vZ[!O"˝zVu޾HV$U׈B9fk!kU9|C3 ?'xV=VZ!'eM-Lpz˚i! ɦf%83I }*#sQ1 N)Tœ>@F=i1i ex )0$iq1ch0E(l)bq\F) j1;BIͨ$23N=;G<%;ЋR+1b 4x$1֬2ɱRmj7V' ֵ Id z{:pQEQEQEQG֊Z(YPkU$,IɧZ~O)R5Wv z `Wvoj j ڶ4)c Lpj4! A$npGJӴՅwʹvWXj[DQ#jib2hfq?8rwR,.kuf q.=&H@f}UخŖ!VYpf[k,`fmژ jkǞF8U:ۖ>i_1!>5ZK$sME%Ӹ>"' 1LI^ 0';aR9riI89#^~`ӈ mێM.(:R zѐ)sS/83HHuRn+ލ'{Q#9zUsN'QvUlJ{#,>EmGLֆ~dti}1 BrutJ:QEQEQEQEQEr&>×T)f,c)wpp?3Mhh|[sO5kgoa(f[֖0iA=b(P2:Z\w WSd37rȃloXw2gq;,øsdJID5n$\rvt=iwWHGU!z,yNp)J40='4&cRqJB)i*@R<38s`BwN>PvuE!%= Ozh;jhGʦXv)\jh@H_bgl&K)c)blji$C %0ۚ0Z,3EՅJcHw+Y ڄ@_Oz^!C Iy***ߵ.} tPt/%JV-6\4** ct wz m9rU((((>)nd\3\e3rzA\TpMtvdO e{(m/AɬGX{aޱ]ujaY`yj:d޳eeg ,:q%~lM:$ Y|PrR+Tr:zzcϵFPK(*7E,jn 9ɩE8tN M8qɩW旯ʝڗp)ͅTznNR@{R($d)L8fw_-AR R-{Sx?{  =8[G$SJlHcHqsH19±AsQ*E581jo3n:-L{d S-$Q*ep:UKd8*ΐ 9Uk_D@#cbZM.rMGrEd9ϥ|sɭ E-qZ:ld?@ fVZ(ˋ\f*r]1P]ǵ0;UHjmȜhR;oLp֮QՀj u",ROT,A/ efa'#ڱ/dcj{v{WdtG"!}KPiY:`w@k=F95EWhsJa$/+N_K#mSNf8iN==2JɽH*)F?nF0jd*j1*4g͜ޤUژӀ T!G)ڥ )㢊0 * N3ӊO I9y;AlH< iv\~4 ^9g5!'f;0*)T$m0*sQVNPjcZ\`g֔ sSISRFMIN0N +Gz3 Զz8imNn0j:sy{Kwܓw*!0b=*u2حH|`YJ꧵hYŋmθsگǶkB%t1ZQ.>E#wvqHy ]#9(&d0;zG.mD@+&@=wp8l}5jO[xCu8hXPiT?0jݭlI_;#rxH*V.&QNSN~k ?뢮(((((((()(((Z((((ZJ)(Z((J((J(Z))(((((Z((Z()((Z(J((Z(((((Z(((()h()((JZ(JJ(ZZ((Z))((())h)h(Z((JZ(()ihJ(()hZJ))hZ))(((Z)hMɣ(((()hJ()h((()(CQERRRQE-R~g~QE-QE-%QIEQEvZ(((((()hZ((J(((((((()(()()())hZ((Z(J(JZ())()(JZ(((((((()h((((()h(Z()h(((((((()?JduPQ9JZ((J()h(((J(J((()(()h)h(()h(J()h(())hZ))()h((((JJ()h((((((ZZ)))LE-QKEQEREQIE%QEQEQEQEQEQEQEQEQEQERKEQEQEQEQEQIE%REQIE%n@ p#0_@3.zdy 8NǘڼZA %Ja^8)J XՄm诌ڦSJZZ((((((ZJ)((JZ(()h()((J()jUc܌j $,B(*}9#Cr$Cr[zT2nQeƨìYL{股iQeip.|!#<=C˄E]R0T iʵEQEQEQERQE-QEQEQERKIE%-RQEQEQERQEQEQILt44W*E eܹ'51~h eyKo04D fT-%QEQIEQEQEQEQEQERQE-RQE-RQEQEQEQERQERQE--%%%QEREQEQIEQE-RQEQE%RE%REQEQEQEQEQEQEQEQEQKKERIIIEQEQEQKEQKEQEQERQE--RRQE-RE%RE%QEQEQIEQKKE%%%RE%QEQEQEQEQEQEQEQEQEQEQERQE-QEQEQERQE-RE%%RE%RE%%QEQEQEQEQIEQEQEQKERQIҎt((()(((((()()((J()h(ZZ))()(CGl֊(((J(((()((Z(()(((((JZ(Z((((((ZZ))((Z(((()h)h((((Z(((Z(((((Z((((Z((Z(Z((((Z((((JJ(Z((Z(Z))(((Z()()(()h)h(J((Z((((J)ii)(((Z(())()((((Z(((ZZ)((()((J)()((()h((J(J()(J()hZ((()((Z((Z((()h)h(J((Z(Z(()(((JJ)ih((J(J(J()h(Z((((Z()()(()h)h)sЃG^V{⼆T8aTtt%US(J()h)h(Z((((()(()()(J(ELV'zW=} kS [QAaNO֨Yd1`I?Zi){2r\y޻O&J)((((()h)ih((((Z((((((J+ ?뢮))(Z(Z)hE%RE%RQIKE-%R AE---RERRQKKE%%QIEQEQE%%QEQE-QEQEQIEQEQKKEQE%RE%RbREQE-QERRKEQEQKE%%RQEQERE%%QERQIEQIEQE-REQE%%%---QE%REQE%RIERRE%QIEQE-RQEQKE%%QE--REQEQEQIIE--REQIE%-QKE%%QEQKIEQERQEQKE%%QIE%-QKEQEQERQIKE-%QKKE%QIE--QKEQE%%QIEQEQIIIKE-QERE%%%RKIEQE-RQEQEQERE%-RQE--RQE-RQIKE-QEQEQIIE--QE%QIE-QE%%QIKEREQE-QE%QE-QEQIEQEQEQIERQERE%-QERQEQKE%%QIEQIKE-QIEQEQKEQKERRRREQERQERQE-QE%RE%%QIE%RE%RIIE-RQE--QE%QE-QKEQERERQE-%QFi()()(J((Z(((((JZ(J()h(J)ihZ()h(Z(((JZ(((((J(J)()(()h((ZZ()()((()h)hZ)((J(ZZ(JJ)h()((JZ)h(J(Z((Z(ZZ(Z(()h(((J()h)h)h((J(J(Z((((Z()h)ih((()()hZ(Z))()ihZZJJ(Z((J(J()h)h(((((?(((J)(((((J)h(ZZ()hZJ(JZ)hJ(JZ)h(J()ih))(J(J((()((J(J()h((((((()()(()h()hZ))(J(J(JZ)i()((()()(()(((Z()())h)hZ()(Z((ZZ))()h))(J(J(((()ih(JJ)ih))hJJ()i(Z(JZ)i(((Z(J((Z(Z)i()h()(J(ZJ((((((J()h()()()())h(Z(()hZ(Z))(((J()hZ(Z)i(((JZ(()i(((()()(Z()hZZ))()h()((JZ)i(Z((JJ)ihZJ(J(()h(ERE%QEQIERQEREQEQERIERQKKEQKEQKE%%QEQEQE%RIIEQKEQKEQEQKE-%QKERE%RE%QEQIERQE-%()hZJ((Z))()h(()ih=)))qɣrh\EQE-QERE%QKEQE-RQEQKE-QIEQIKEQEQIEQERE%QEQIEQIEQERRE%QEQKERE%QE%REQIERQE-QIE%-RQKKE%%RE%QEQE-RQE-RRKEQE%QIEQIEQIEQE--RQIEQEQKKE%%QEQEQEQEQKEQE%QEQEQE%REQEQIEQIEQIEQIEQERQEQKEQERRW ?룮(J(()(Zr^u:((((((((((((((((S)QERIIEQKKJJu:((((((((((((((((S)QEQKEQEQEJNS(((((((((((((((eGLJ()i(iV{ө((((((((((((((((QtQEQE-QEQEJNS(((((((((((((((e2EQIIE--QEQIIJ-:N((((((((((((((()ʎ)hZ()(UZUNS(((((((((((((((e2E%RQE-QEQEJNS(((((((((((((((e2)h(ZZ(iV{ө((((((((((((((((QtREQIEQENZrө((((((((((((((((LQE%REQERQEJNS(((((((((((((((eGQE-QE%QKKER*ҭ:N((((((((((((((()ʎ)h(()ViNS(((((((((((((((e2)ih))(Z)ViW:N((((((((((((((()ʎ)h)h(ZU^u:((((((((((((((((Tt)h((U/zUNS(((((((((((((((e2((J(iN^u:((((((((((((((((S*:)((J(iޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLS(((ZZ(iV{ө((((((((((((((((LQIEQKERQENZUNS(((((((((((((((e2)h(Z(U^NS(((((((((((((((e2EQERE%QEN^NS(((((((((((((((e2ZA~4QEQE-RR9iޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEe2)()((J)VޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎ(JZ)i()iVVNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEeGE%RE%-QERJޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLTtQEQEQIEQE-JޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEeGEQIEQIE%QE*ӖuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLS()h(J)VSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2QE-RQE-RQIER*ӗ:N(((((((((((((((+ ?諢(((((((((Z(QKEQEQIEQEQEQKEQEQEQEQEQERQE-QEQEQEQEQEQERQE-RQE-RQE-QE-RQEQEQEQEQ@8h(((Z(((((((Z(((J(((((()(()h)h(())((((((()(()h(((((((Z(((()(((Z(Z(()((JJ( )h(4QEQEQEQEQEQKEQEQEQEQERE%QEQIQuёE4RE&((A"(((֓ґ.2y#4QGhKE"Fh(Z(Z()( zLZZZ()((((((EQEQKEQEQEvYfa|nP}iT҃NKN)(֎RE%R  <@y< RAE/^( Ĝ abN!$Oi;RE%QEQEQEQEdH(*0ďFSCpcM87P}iw ]Œi-QvZuJaooP (2O52p)zR(((((()6曷'Lgy .:ѳ 8ۆ !0N)(((QQ~n:TF\8>4z4$u@G4HR¼L+ҼHA<ii:HF0h<`H8J01O^*ARvQEQEQEQEQIEQERQE-QEQE@(Z(&أ4xusIo&ݷ=} XsBDP(>E;hi7qMMI8҅*M(\sKN(((CA(Z(((((has0H q“x`ju>(((() #PiLޝ)1F(OJA֥1ORw袊Z(Z(((()(2=h)f@'3Q[ONzio96/sޢ{m8 G\$U v5(# ]12[ `=j>p|H?;JǔKw,N8FXp}+>+7F*WCiXrx5zF(Z((C҃1I90d{A)fFqBB=iاNb(((<}4Z-48Jncb }SїH zqRcӞ~zsAaМSX>߭!eN>"r[hMWsГQKpx3_ .Yw$lGq؞Bm@d \DrŠ:2k2m$ r2k>@^pT~|lp1> VDf L)!C})403N `Oj3,DLCqsF`WVuQ1,0j.r2a\F`@qH$!]fBzeO_"ܺ! yi^`qBrMO.ry`BMK%~fejHms5Nkb=IKs+ f9ĎǭG!vcG#K1j- T%SM "R(2ǥ8s=1J.7j 0[|vF9-8D`'zڳY03Sk 0)nn1p9NK{ӅLK9Jkf((((%u O* ]w20tttS*iTRjAOԠ%.R,qfY:6I]5 pHґnCH . IV $wcc.\$Axg8qBgWGaڴPhqrT#LWnT[RH|6aecP~PeBqjJrEXČUxcX$zT1$ʧbusZVQEQEQEQPO^;IG%x>⣑2[1Dt$pҪ'Rz.ʤfJUVi rnf'1MKhd )f'Kx,Yt DeS;7XBxM4E2j#Q\Uh[ 1˶*Ƞ>Lx81kۀ1AFY'NU`1:UlU1è!c`b"#6@FLqQE9H#1=9GWrzd⚖ى*TP[$v#S04 >73?PErg v)škh s*KKEQKEQER7"R7JM=)F0iU¯CŠ\FV+N޹ڜ#CqBǽHt~EQ>+HH])R;@qJ{>٥{o?얥x>\3A I'#ZBIoChzSDsʜtPlwr:T~r0ȥP%B#֞;ʀy*lf>u#EE5bRs榎5EڃNҟz v)sgړmp)6ҔqR*}U P )h)CH*@= JU@4V){birp) &/sH#c=َO'ߵ-?--RQEQKEQEQEQEƓZJ11#iA֚Pu(N)ih(Ĥ+U9feé#9,G>Vǽ2K.@S#im>"8VaRΥA:u>EQEQEQER qQHrؤg ϵ!`cLR*4 h`bx4/\~n:(`qP> }(p`Zy8ػANcd,:`}i#fe)I\jZu:((Z()2if84=&=Ӏ@-QKEQE4ujbPߌRKKKEQEQEQIEQETp~ <Tpd,6=2jJө: EP(#p敀a#ނ20zSL`YG!?1b(Bx'@)KEQKEQEQEQEQEQފ((T{cP(i{E%QEQERQE-RQEQGGEQKE(((((Z((J()h(Z((((((()h)h(Z((((((((()h()((((Z(((((J(()h(((((((((((((((((((( ?諢()(()h((J(J;EQEQEQEQKEQA'#I҃ZZ)(((33FE-QKEQEQEREQERQEQEQEQE-QEQE%(Nh):G^(IғޛH3Pxgi٠֓p!4K҃@EHH:KEQEQEQERdzњ)h(Z(3FEfFhQ(3C8? -QE!8E&*3RPNi 4Ps@P}>ޔ⒓'!'٤.I.IK@(ǭ>QEQEQAGGZZ(:uP3J((EZ֎=i֊;R␐:Qғnt9 >cz69I=)3)s94휚3I/H^ 8E# 4#nig8x sF=E&=E MR)h((((EQKEQEP@=0 KEQAhJQIv書u&J P(;A,}I$qL67.7HO= J;Ԩ3֞1Ҕ)ZLI e_FzdΪp4OJB봶;v0 3Te eڀ,QۊI}Ӷ؜~V NH''U!2~c/{ m̋,cIWrt+*96 $c ܒjOZnB¦=:PZ+6OJ .=)qy~%}Jg iAT8JqnjA-4ڮF®Wv+5q$$o qm\y`v:b)h()RE%RE%QEQIEQEQKEڹ&\<$=+^%WsY\#裭a\_\ܸRpnf' ,ĕ5gTc?ZiܡETէEDsS.5`+pj Je`v5N/Ȫkaw#Kquggf(q!%fAPmb=1TqKSo{TR9ʐ޾"7qRX8rTɕ?b&9SX>W#wzVp|䁍Y¯5]jwKEQEQEQEQEQHH#: }h,@.bi24"z`C6PFI76JnqzlcIoc8!cErdC'ڑ$^u8ۈ,|0!EV65[+Ȍ=jʠL=VNspfP6tCmM: 䞤k>(I $5J(2IֶR߼5i)wE>mmDݽ1"71[MVlN2;KN{yߌ㊰,(Rzxԑ#0Olӣ`٩/+ $t:Gm%"I;-N +ukqPz[%|Qc4.ZEU_֖ #aj)%ڢ%Ly!+}7+'cD(K;3!FlR=3K .N?4+})F$ $TncbQI֘Ꝑ:yR@8QOݨX vP~E%rF{Jb_%ڨ0,}(îOXIUH3!UR Yb'r0H0EkW[]-QEQEQERg3*YǩQIu֣i M2W\9vX2f>ib}Tfdl$U+QٙGQs!rB3TFĀj8<KvdpOnԸ2&ČW3IXj $ifx P)-{T&$b޵n oZշ2q<۷I8'. hEIsV džH[TyGpw?,(U&lBЎlbm;te5-P:&csЎ3J,PoM;>5wk=E1c99n_Ioa1Z{!0G` ϖHmL28˧7qҤ{EyGNxwX1V0D#C{S7@{w0=XJ0qSe$"sL\䝹j~t8V!2ÂNjXōԓJ%%[veXdڤeATZq6O$U8 qU|2']ɕ51Gs JQ9ݎ" *'6fy\`qҦxU*xr;㊊[!j/E{󐣁i\~b@zT"">y^ S:u x#Aڟ< 2+tIw)I%ǥ:n] W ӪԱOs(zuZ$o(;RM гwB^V| 4٢G95BNFQ6pN5H0{(8b)ԶݠgTShᇣ ~ LJH=m?E6{Lh ~VM*v69ҡ}>%v`i(,c"&#v#(@>ȂX>\qv^K;&(g;\յ(4b?pxz⻥&D@iYv#Πy%\+$wP4$+Bݢ($(#KQMhgb̠yy֪^]m䚪rlrMAqp둖_8Ww]sN*s/T%Pzk>Y<6jy}j2{up+tnZ輱*yb 8 Un dcUV^@9zPOj 1qgF OsC,9c5M*) Dۥ*)bc;J @T_S^8d1AN$)T_mHa_O$=T?18P|ۢjX#dF59Oֱq; \o| dW]SɂO 8MU}*1:&F(:N[ښA؞*%q@;xdzT(O~E8O!E8?=U\6s:qSAb\2=TmʤN*K=é-zpjW7r 3Uy$rڦČ:? srO󩍯 LOuȋ'=y?Z/ڮ5VSDcҪrA\J饹H-gn<ʃ"X푇ٯ2 g\G'J2#Ufyldd9 $2|')$opE2KR1 ucNF3n)C/K3u] dX"T*ntPME uB#w"';#JDq,ϷP9n*b-3a:zT<͖_kI t4'i7k2eݖ,q&]\pD5Rːb`$YdV5stح[j{mRU6mj>V ni4[s*M#ԉ<8ƘepH40wa5t\ͳ=ّÊ?C>;?NU99lv)o(wIND}|Ra'?th11y!AwE,E g saҪem= Pcj$p8;R)=jY!vBM5ˀRrHSu2g]ǒQ5:rSQӖh<vaZf=:9q 9tF[9sp+i$˟-r$ӛF2Cs6 3DmҦi0P8Z,i06s<6nT}2Ku ?UzAA<ŀdaV% %󚸆*˒sjBRsҫͽ#)Ռg NUo7)Iq#D(J䚞ght`ZW1.\Fi[]˱zK]>bȪ[t2&<)-[$q7V\*'~sz Uci@F1HqSf]169)$2cV 1PWq݌tOH a )ʑ#*q:֮u7Qd*88$TOrpIg$/͞`̲Djz><>ݺ-ʌx )7G;q?ңvT'Mv?1'ץ&te\eANIrZ$Gf:tPu-bD\-5D5x,@BzA5qy7y#Ak*{)gu~Ysm/q֬/g`[wS[.i*8)LUm ʤ@O+kJ`[%gӌ!_1W?Jw!yzԫI̐)/ZzO ;Aq֘,~M BrfT9W=lvSŢ 9z(۟ƥKQI;n lzS?&W!.BQ8R}uce 9S?!w'?x`9M$R.JrFFrN:71!hrI\VH{Xr~^5\QEQYd`6s\H2k Wm(OSO@+ H ##$u$7wzI&% vj'tޜBGԊKzR$Po5ie0TriZ2/?y[%>jƛIlqYG݉9 p i]tc$QToXlrH~> D򝨥j4`-4v $(h>2:U|Vi tj&mG { 0{}KRR2R4bt*SL1"Q-@pP.߆*je%ƬCH ?3Z[B"@QԚ1#pԕ%QEQEQEfEQKE+tld>VGwaU5cF+Gz~QDegC_}vFѪ:64I|㎦{8w@3{ӌ#|d}N0 -(\$ !WT h]"94Nd䞴#Fw&Z{w)9g`bH9" 61ҮǮg=9q][UOJ5MNQڃ^J*h[QrL1Sse1)(=;q ᔑ3Yw) GaEpByrXp2*7o)7kd\ؘ+-i̕iu5vLT+_AV9 ۚնmcn#зdGcSScV0 0{T(@G* œPSB( ={EQEQKGҏj((Z(((((O>kvfP R9z4kI%O-~SܟJUHGp>ScbBW$})!]Nr$r7 $O<Ѕx(S<) ְbk&{rrWf\]LH;y2 v= j e$I:nD<㨫k`­`ҟ2xR$[kVHS8dtǨIk<و0wNAX3 qRas;*TMw®Ǡ?7id>m®E PkR X-Q0#@1MH}HڹU?<'G/E%RE%REQEQEQEQIEQIEQIEQEQEQEE$ F6=r 0G *) Y0NvQP;O qϹgir誗 3qAH$& * agI NK%nsSwMI5ޭŧ rZ- Wh[CK*"@GqՔ4Ԙ?Jq`z 8)((((Z()((((Z(()((J(u6q֙,I*uϭ#qR` jSxb;F=b(((J(((Z(EQEQEQERQKEQEQEQIEQIEQE-QEQEQIEQEQEQEQIEQIEQEQKEQEQIEQERQE-QEQEQIEQEQEQKEQKEQKEQKEQE%REQIEQIގQEQEQEQE%REQEQEQKEQEQEQEQEQEQEQE%QEQEQEQE%QEQIEQEQEQKEQEQIEQEQEQEQERQE-RQEQG4QERE%REQIEQIEQIEQEQEQEQEQEQEQIEQE-QEQKEQE()h((ь(J(((((((((((((((Z((J()h(Z()(()h(((((J(((( ?諢(((()h(Z(Z((((((((()h)h();QJ)EQERQEQKEQKEQE%QEQE-RQEQEREQERQE-QEQE%RE%REQIEHZ)h((J()h(Z((J(()h()()()((((Z()()(((Z(Z((J(((Z()(()h(((()h(Z(Z((LMdzKKKEQEQERQE-QEQERE%REQEQEQEQEQEQEQE%REQIEQMfEq:[w?EeHSs{UioFpEPYT hQU%Wh*zJ6 *_Ue@Z}K֟ERQE-RQE-RQEQKEQE%QEQEQKEQEQEb:QLgQIpmS@S)\랔▂@c 2N&Gb?:M4?x{sJxP J26xWwv3YwDYc@77o䑲zaoAqZdU]rd~UycvH|BsW;K`})'~ƖA8w= }k$d4 ƛ'o<j7Hx4!+JhaʑM)Rl)zӞWbUە`Bϵ_(TnU?tT$PGLsZ *nJD-)Ja ӆ EQEQIEQEQKEQEREQXqo9'̍Oֹc$IӥCe5$e 9le{'TԖ2W'M<%2zoJſwBT8SZXlWrJ"Xܜڥ/\|}WT#)•SJ+8NGZPM5Ow^ wn=0j?$9'cR*y* R3R9ǭ2P L-#yԁI.ݥ`|)%#i_REQ:dXRW sw!ޯ*0*@Vw(Tq"v5"?"Q5"7 :S:G22ҬHM*I=;T$RF zVuΙ%̊pkqU7 $[znFK&}0@8;0跱a fKh !f߃SC^Ս>-&03RG]GzM@m1RS*fLcGpaNT"\1P3;}*7QA&2CW,F ĦǥY B@^ǥYUIV[KF?(!zyu,0zSjآJ(KEQE%RA(J({Q;[`.X\ݸo$i@1u-S&|>ZE4 SYi%s֩\y=jHkwrI SI!89m)t $@oUdx.=09ySkĚUTW/\rQ\eTi)>)V-zT#+DawR՝EzN ywwd\㌞Z{$bc߫T0I9!!OQCm,;R@<ⷂ" prz[ 'bbG'G1Ia㢎 G1_'##ٰc ±/$1ơ$d˖CQB6Y?uFz&X89H}8\ʓ;56<*BQ10'Şh|JګA]Bٕ^9 7߼ĩVD #ߵm2\B$[i"ȁҖN/ngl u,I,MCTڳ .~`4߶޹`#?8ʂ3Ozʉ0%œ֖EPwAGZRN=iRQ|JY`O:,lŶG&@p!UYXĀ51ҝd(osOqwmIEMr1*=jӢ3s:UͲXxc<P T=6ܫ/jTqbF [GANcׯ4Ejb$Rp: T|t !P8bH@*-2CP<}/#Q}<,L|*gxLUK9Sqs#J&%L=9,_~}D;2>h,71>٥M1eW6GrIM@$AAӚ,ʁOlp=Gb Vg'R—TV?1U'QsgUqY8owSp]Bdulf7&BMYL*܌:O v8Qߍl⤎Df*}3NIxcYabǶidT!$Q%슘ߓUf8YZ%ǘ}3T{8&rW89HT<`>,2M#! @ራo#c*!ɐKo4Q4$9+Z]սKJUa'U;R3G`_A8֜.#$ yO[Y B30o%^OְeϗwCf%03LKh!*2sQmP{E 1l;,pyT"_eHjqo!TGLT#qLuV$Q<4o+{""PUAښX,L2nWLmnU۹z"iU *]좫\[c}3PIUdmʾ UW%k.dfg [#.]Q%,y?ϚObpjd c\һ iAy,{Ư(<b3Eg`xXAwGуY_(LѼgQ2SerP)[2(>g8CQ˒:1~\Q 81>A8nNv Xl$BZϻʋx>΅ʟp(nT([O#G&9/nYPE䣄c{*żLzT98bysV]|dFVeHЕIr#yG^b#zPg̑JXvPqrGaF|5Bgt5$ VR椵,nMkiqm*Z1nkemy.ߌ֐بdPOb r\G>apgR-;T%lve<]@Z{_OjKn6;FyR(=)La3 ~%\]ǎ: OY%1XaJǹ<aTxhE$`)lN`1=\c֬}nj3enj)4]e)=i_ҘK0N1Ԟ*&`bq SK\3RiNnFzfK\dhm2%1e UF.5 6ˎ ܠ0 XD 碓1Ia]ӽVQ)s#&2ÚolĀvɧ}l_k?1#Ix'XЩgbA*4V )#^c89}BpgpHaF[W0&U E_z[XQ3wrml:#Hϸ:B,p'@8+HH ڋՍ$;Gʣ¨$뚬qɪIF̓ƙxCAlt,21PB3tBiKK859m.f*.X=Z:!Its`e!9>s`*@´x8?J}GvŶ7sU{8X3PɧBYN:hv)a=&!dʑޛ%#2MUox=MGqbvH\L(9=+6[pyɪONrsѷ9Ƙyc#֙錊r.?t3V/1 &X'4i_֕U\)Ƌ ǢKr.ҫH|,{ yEOp$yh}>8Hfð<8zI#eA$p)8 2Hǐ(\8WSNDbҭ[O1Ty5k%Qvc prȨͼ>\Y.`\M!$,Wz堶0Ǵ6*˿ XrJ[ ȒR-4:*0pi^a8 1OypkNi6-hZټu@_η 8#q֜qJ@4Ƥ?AI((MdHT Qtov΄}ޠIPJK2?:Şx@dƲ巖3ѱH8D ;LE1J<=F9Nwpr*Fܬ mVZFnpLV TʣԫsWۅY5d*y4qm;nMg\õ&Vw4ppc )vǸSR@ž-Tze+zh$|ނ~vj͆ S0'jŞ2gm/UӦk`mq1jA@9RIEQE-QEQKEg(EW1Gji"ʰwUG$}Y0BcՍ|;vmWEIukq³72=JN]9*c7 |֔bX3f/"i6֔Iƨ\:RT(()h(((()((((Z((()h(Z()Z(()h((((Z()((J()h)h((J((Z((((((J(((Z()()(((()()()(()h((((Z(Z(((()((((((((J((((()h)h(Z()()((()h)h(((()((J(((()((()h((J(()h4E-QEQEQEQEQKEQE%REQIރE-RQE-QEQKEQEQEQEQEREQEQEQEREQERQE-QEQE%QEQE-QEQEQEQEQEQKEQKEQEQERQE-RQE-RQE-QEQKEQE%RE%REQIEQEQEQE%RE%RE%QEQIEQEQERE%REQEQEQEQIEQIEQEQEQEQERQEQEQEQEQEQEQERQEQKEQKEQE%REQERQE-RQE-RQE-QEQEQEQEQE%RE%RE%REQERQE-QEQKEQEQERQE-RQE-RQE-QEQEQEQEQEQERQEQKEQE%QEhKEQE%QEQEQEQF=QIEQE-RQE-RQEQKEQEQIEQEQEQEQERQEQA3֊()((+ ?뢮()((((Z((J((Z(((b3tfq(%nj{rҹ?ʡuZFT0ܽ(6t'ڴ`Є>?W(GMԫ HoM`UK>M2`cFAdSe5# 4)w8$mGQD*T0_Ң(J((((((Z(Z(Z(*88氼C>olz͙cgLc NmSLЇb.rOsֆ&DۜK!2&ޡ9 `whA61B Sъc^n ٌu(gcop ySK*C$+$l˻ӽ$rD2Xr3֩NvglQiR֙1 X޵kc Prz݊8 kCn(E.]NbN:b9ݪP2O@`j6a A#jmín~1Ҥ`"P[DKU,ky| Ӝ%b}N qZ6WuX }2EUsɆ Msc}@OoAPER8|+Bm !]vXض-SST%fjhc7P|uYz{L8 0ުEqnR@3(bnGMԞ0}n9ʺJ.y ~_*߭Z()h(()(q҂q4RQEQERE%;RpS'-idU6Y¯Y (鑚o)/|09|m(W#UQ|T*‚8ڔh8 j{h|xڅw2p?٢5iRz]m=EN%vӭXke`7gG2"{9 SaP\c3A.6w;56!7 >yE[=H&j`򭃑>rUA2d,cJ0ʩj-6?Ji-b0$r+>yҤ]Ė#׾*qsT$"((((((Z()(((_CPr8EǍsM?G.I<8E=Y;ѡ88=jp8f(Hl4&YKq3Wq[ hGs ۂx8J:GxvJY^8v >~ W dftzyRSTk`_Qp4FKJ,ڢ-YGK@ TRdjtH7Q[ ָa@`[v(J1#QeR3'|osT57$y#MWFϷ@0HP,^cpJ :PsOeePPsR  ZU%RGIEQE-RQE-RQE-RQEQEQEQ@@Jk6cz+%,{뙺9H4O(Tr?iʿ[O,)#ҴO=~eem\+&<j;vUozIpyp^?tnqzn3ZUig0X{qI|#hR>&AmQԞ֨u } wQp1~ikO8 "lppW&NVkVQAEk:\RH+U}mpVfYTF8HTSr[*|ږ8+)eJX! FDqw5]]oE%QEQEQKEQEQEQEQEREQGNqAsG5yM\]:n$<Z%t򟛃T0#U\I3*=?Ze,81U5vY)gV$DGR0Z%' =}? ΎsU$)jd;IBQOsn߿~He@3JF;Yp0\TnmWXT;pz 9yw( ;b2Nqa[lF囖J|Hz]-^Uhz5fQExhk"{{@Q3W7,ӏX֧U( r[fL]m sHajY@U5)s5~nh)!q…!}괧~ j;ҩHrI?vO*ϏýUz+8+8ժ(7]Qq]wb(O&y!#늊O"y{>m&YҐI!r oROJ V|3y5@f n3CrH&J|ʑeJ7M HbpҾ_$tLD $Z<(ё#.OoW_]QIEQEQERE%RE%REQIҐO҃j9 ߽Uic'j5ZBp39֫]H(éO$p"aq"#CQ$@wW\C\N"1A*73'lԫ<[a;WzTLV:+K:Z>K8Xu9VSNτ^v#U;W"6cQ{Ӓ8BQ~TOZI/ zcLidVXc'(iNd0 sT$" mU,s^q4ٶM&>|vlTzUxŜƟmҾ@x%.b2Un#6;bK;/KD>[eSMEPͲN~|L]TL隂fc5V5UV cX( Q?Y$b4D͑uc!J){995^"PAQVCߠk+(E@Fh]٣| ?zV W n٫i1C}ҥGWB` 4uQKEQEQEQIEQKEQE!deWR2`jB)d*1;yҩ. 9jx=9U1"3|UqcU*U=;=;j:SX4Уt4dw˂R03TBn yj%V4'eL6;]Gsg*VQ;UlUCQ⣉ Lcz:|RQ{Yy)l?ys{V1bld辵=\iֶR]N)E\cW! Ӗnk[afvVݝv,{ԕnQE%Wp}\*F#nprT E9e?0,b3V,ȮJ72c$te@IhwUAݾaҢoPoy!1ilA ]ETXԌˏº812Hܸ8cBZpc~d`">p*~5!#\"m-ps+Z(B J*ȩE-RQE-RQE-QEQE%REQEQEQEQE!PQ\H[ʨS'qLk&}{\}6V5EG珔HDN>P:8BFpWtSU^v=K%b@qi)))(Ƞc: d_Ձ{<xs'ςǞh圮8 ~jpUYƒXāJ|{To|䞆G ڀ#V].ބ4Wi\` wM @pȬ\qk2(f7sTeb=Vmf3Yq[zu wXb,86{f8y(((()()(6NA҂qA8>QEREQU%ھZ}ekw}>f',GAY!OUXa*YtH #DJj:̐Gc) SLY%ڠ&z՘mD8b[A(LCyy!c#4%m )WQ8=qNU`y)c*&jHt^6zTjf 1 >=Cld!0VR89ZQ\E/n٫*Iʷj+"I-c`ؤesN=Le#rm>Ȳ5eFwB>pqMK8 S;GWӭHXZu-QEQEQEQEQEQE6I$.ˉ㷉eHc29ֳش|u!UcߵbB0$gX̯>ڒCH'f%cA*H4۸n}ih.!so^)Z ?htf25@`=oD`kFj%QIIMf'욎~mp*l'Ҩd1svhހ~_2 ƣTW;v=z{Yn Rw:m8_SI誱!5-yע dԶj&(ZpESZM ٛ ZW QI0<{xXFqgjrTu[ l@xU}gyܔTĬ/ZQ6_?3EZч>Sޥl[#n3ڴK6JH (c v“^5{rQ-8Þ!>i?xQAb]p<M x֛n|IқavStiqOnF~{Nb4Cw{ףYQ O׫vN0:(q+cNMajKh߶1ST%%QIECt82: YN}#Em{I/M8 eg ڲF3I,d3*y9fm#ZXHcqԖC7JGEj=;qW4 >Iy"u)+eGC/7QNo2 G$v; b,;' "RV& 6u?jL>7L2DRHR_4J QQQ1SNc4 6qڥ ,:jjUNW{Ӑ)(j)F\ku9i~(:r)"+)jD+t# SkB1ӍHw"'( ȁv4Q֙'FM1v DWko?ZlRy Q1ƒ)ZHU3K7Qu<{SE@!k'<{FQAD e85K~nF2=jgv~L~4= q@ {AtRdzRǽ:)d=sާhdRjh&hT4]NlU#[J qo)c'<*y2Oq8VSw:oq';{=mr@䚒ڀ0Oj [ ;wo BLxA"5fܑ3V^y`1"08Q\DDk{ӣ+(iJj["*.*74C3ʲl} CxZ>Fv<\yl-@2s\OLS=dc-׭Y8G.7ũŗ*?yiamۓ֭5H,@lq9`ۅ$b+iaf剪iisl^YA%RGHphc$TUtWϏp$Aҩs9*9T"tAGM"#+0c\TTsF*۔r2eWZ'@9|2yUz{щ<;"ʑ&qESk>aӢ$ >95^)bw71Ej,클n2 m]۽jA(yGIgQ$H#VeĒ;0=*Y]2 ܃Risti|Υَ)I*/PN P PXƩF7VoDIҶ/mbL{wk72er2 횴j2E=I.w#XݾB:SĐSqϩ5hQ911$s4,K'etSD/#T,ކh͜(?(m/H0:N: ^b v7 Vd8HHʎUp`nVhvL!~Tð–{ e~l*S;mZ!5Mc8ojF$eL}C<,ΡUBx?ZBd wVFF mJJJ(* H ۹n#)]Fz+p#} ǻu#c=E4y̎ fh~aGq*ni {|CrpdijIЍĞ?FfW\ V$UE.CnR1ٚHO:F(E'59FAV,וֹ8&raUBљDX"nc9>O)Νu8DHmKp.EddyrJܓ}r'޳$nBId@G;dցݯ!=kB-:jhIjeo *+0`S뺦7)v`MN-@2];Xtˈe95+Cw`N=XPw);D\!OlR%2Z$-<,RE݀ d[]ȣ.'DF@›I[iI9,zH!H#$51IET<ڳ% $Dw>-5sJ:SmqhV]5gkXXjc}Fk)U@f'=ZNyֺ;J(.g:6qUu!@U)(=7bnpcY7*>U'D >R9G>99'W9`2#&xF);v%vӊM$$bJ)V9#=V9šLd s]u5EQEQEQEQEQEQKFM.i((>R/XUtW;ҐޕdBVe.2HRFZD9}:QE5dBVMsDF?2hx91JM)̍Z6;}~V-*v 5N79pP}9FSu},\+.Cqw$R6v\X\ժ_·-¬Oާ JA֫ݟܢɪzڭTekO5*N)"-)$e\\#H'8 63L8WÜMOmuRAe%qVu)`xuw9+e92G򥥥a>ƒПNj-j|Θ{(ZGDh´ΐ(Rz2?QxT+ԷU-dzj,6ޕZ?ޅ< V\@2R[S=!x9j_y36Ӹ6Yk0nEXicm~jpGjNC -) 9WqUBR?ß² äf8c|=gSɶ^jJȻ_KdVvсWGdS"'BN 7/ 2*cxBG5xex#f=j} 隭)b<c$EH8ɫF[VAT8rjݣItbQ}2h؎з%[vpt rPcgLPb()(QE-RQE-QEQKEQKEQEQEQEQMqG֣LT^W dfe<BuȬ;ˍY 9Z˺rNCވG 6WLa ,~]yݼ0 };Io8##quIm\XQɥh7ˆ3(Kwִ:uP4{ +W㳂8aK+rA9Gq$'{{vynŎqN(NcN}I;qǞG4V*L ޒxdR~lsV룭Z()(((Z((((((((Ev6șW9GQsde|zt?MhE :T&c4q85.%y` )PQXn~n*FA phCztI(f4˛Anf`RI=,tXTnZN Ֆ5ʲn/5ǡ=W<1,܂zҬѪȧ! xi٪Kw#tV,CgUPIV" KjX2FH$Vɨ,g`8'ZϚlBxYpTG&}{2`x[-nOJӮ()(()h(Z()((J()h(y]$# ~otB0w GҡTfeV {A2pXV$pOc֧>SI.MM1$yM>I-YK9!W677jY cF?SQ]¶x:ԖȏiTd:rOJonGLƳ'o>SOk3 Fߗ+Ͳ!>_VfKWE+t ('l)H Iֹ738[-Z*%KaP-V hCHY#EE@^(vg*) :pT$Y c>m`dm*FqVNW+ZJ(J(J()h(()(((Z((+MezV~9ֹC.޲H1J1۠ ^W8#ެO8{ԲA;+D2z/qU)VQ]#ҫ P9Y~{2EEGbUVZyzA٭;zukuhޤU(Ys%mHC\-K6Xޱn`qShʘG5'ؼAAR;69L9 2sҠ%} g!c)#YX,I!Y9rxj)1J֫IvF$}R袊()h(Z(((J(J((Z()(*c{)Wbq(WҸ;泯#}NH$1\KfnP- {i9r=)IV?-g6Xr3ޛ`#3!LK}t5)LK.}ri +@޴3G4 gN6{BN¸-I٫/ɭɊ4,6gfw 6u)V61zКE10++gq⥴`򑝜DjޒGEr.{ɫsPXE{3*$g*Pd*y 4 x=j((Z(Z(Z(QEQEQE%QEQEQEQANI `k/PI0BQ=m%QeC_$ < T~v 7tUUE3، xK,r9Ԯr.m|T I ㎽Ᵹj磂+q:~n^9 p<{ӆްMt$;eu@1Ӻ 1[m<+c*k&c*[YT5AFNGS2Jn fMxd:*jҫtQERQE-RQEQEQEc4`sE-QEQERE%QEQE-RQE)HI 8p3J$ U8ߐA>YU/U#?{铚 v9_@')v;Y7ݗ~ޣZwh;Sޫjh(ۇP{Ҡi|ȗ>`=Csmc }ݩf弧3sH{(bXE.ܓ^~vŃ+JӞ/n7-ڗVpNN>lRjL$1E(1ý:hA &T.X|j|@\RK=5%+8T lcKn}6B˂jŕmnj[->A7F _ANA@F5jR I OҪ`6L,(CfnWb>\Q6yG'n'd+.zVf;YvV^.B6r3-k!?F*k MS5,:  x~,Y@5"8fzTöT8:dFijPW8Ƞa^)H{р<6eQU&U%}ET9pFG2 I\ƞ_~VwZ &N:~Q/NsTd>SfH)3$ /yğ4=I?ZC&+ т*E8S,>\jK)*sӎq DT称r5U `SZcȿ ;F&I08l³cUŽ=EG)%T 5ȈBޣpB.PPIF*o~ ;K@y1>z |砨nd'r{Q)V9QȲ#nxU&%~#H`˖^^;{iO <6ZK(8qҡ+yw{UУ qִ<*>|)cwR _V!\y5Fʈ` q=}<0? 8 *hZwF-;@;oK+1ǯUR|*Nr· @c΁sƵk:~]Ƶ 8aGwbU|$8FzS.X*#2d+(r8 ;oD(v "k[u"V;AZǖe|sBsg:LgKe8ZwhV|ukB/An|{ӢD(`ic | 4ycsQߔdup+ԊK0ML7`Võ@bdhwDIq֘.y}EZU==*tpELrA=SQГL)Q\YOqIo3(x )\0(F,+r#n@+Z%3QiGY|ӀݩF C[c=*h[vc_;OJ3C͒fvj2Q)$QfG b#NeHAϥ+K\p)󻵫\pDxQNv?;/IsG nT,1|LD1C׽Zg|Ȋ㚳cr!E'6s$od:[ 1Vu-:ΥNӎ3711׬+gHՔ4P5)%\沠dS+Ҍ,vgE£3Wmjdr$\ffs$T:D=ꞙ\%LUF89m2eYڠ즎ej20U,YP+?h;9+?^aKXPk)iD;A-j{(Ed*}2F1 $ gFA($-=fL d!Fc!(j8n=m$h8?(4ʐ6%KYJgTqBcCF{FRxɜ1j   m<.{dYo&[&M͞j͚y5f=MYD,~^{zԭӞ#p) MMzp6s* V Ccrzԟ;TLr*8؝hӑ m!Sl " HæjW@⑐03.sUeqyT (zi #c&Oj2IvOL(`y9vaB\ARC4dY8 IOnb;V1ԚY4s9&4m$i$FG TbB梔fM#=i#"Xcf!,mBrFB"H67sUdM}k=ݤNTUظBثֳ-»* FzVm{ERc?Zn (!sS S9tV.G뻥YSLԒNʹinAv1ʮG։O8C+6p 2_  lGzU&܋tf%OL,&q2i%$op;51kpV[jq1֨i'GJDZhգ]06*!w /85ҢF;R7J*(H1JzVm^ICrβcɻ֨قanGZf YA))+j ^F*1&| Xdrp֋U.[}j|RKXI% j00M5! '4ԇ{ Nj`J0N08zG!SЩeESt[R@WF̲?Jʸ"x4G2 B RFEɱdԉ \#OGXU‘l|77xy&x˜]|OFTaiB1֌zZb8׊(;1SX:TBGzj^vn9x% $hQ~{Hݕö>)@d$I,**DR}Tjj#jc_YL?8a,:1/8CSF_ټXFiдnbIaR@ϒ_=)m"h킑!Q"+c0fDvϦkUfϦjDgWUTo?7ȫ1%R_T+u89䌐 砪jB * 9*{Evo5ĤM-e[V\dv5_U[; e>[u :&vnqNCyf9 ݪdOZ,f|»8%Njݬ"m%8z=yon ooBƫd(q3{8p[JF/#{RG g99$NvK+!8dBxڲb@Ic=VIG>n 9 _,>8*(7QPksC#U,q!c9S.I9Oҟ4pnhivX=/ =KDri & -zRi/8-Ϧ)4qsOZ%_9Zr 8ː5p\!njhf:J1کڴ8׶$aKap&ZnVHKnN49jKCpԞ`W65{/ D]Q7"F4$KӀݩ`͉ZZl\o 7),-0‰3qIg qFoT ]y<pKʿ3pp~\{"b9'^ 4 {VCg~Iޕ;KXU+n?)h%Ro~&}#Uݥ?Cnn՝~*ˆRVYsUaO2MUS# .HknTT2Z2%@_0zuZW,1ۭW䔓^&y2A|f`sEmCl)}qKs`f1#8?y$⨏01VuT/ZoZNr?JPGz h92sIqm yO>÷=qޜךVӓOdRsڣsϱ <ΛM&@ HB@H@'f$|f,O'Y7']R~Z$U?g<桰ݍP[`Z{Ɂ<uo\(sq\LQ)Tv k;!7q*v:xrTcSp'`9#֧Dtq8yXj= 9m啟`$QVl'I<ēVSH=ip;B$T(S'%})~ 7EKnRHN^26H 4d'$qM1! POj[CyX"ܨeMFA&S\5OP:)i՝KPW- ,%,z-Egs $f^@뚆h|8V!9@˃(ݞF(xHY=F(xHmpQWަA0LZ,,JW`{չ#yb\7Z&t?0vQEW p[@棆 |sV[gjdFec,8򃏭cVԷ,ڿ.zQtDQiD[PqTtHݱ'{j-25{N**01cz81*)$碊ؕN{ ֑cBIȀDSn=sU&=sUoDb,z ;ҫ8R);a\Rweuދ‚r;T `֦@eVbAgcq;h-tbr=PJFQҙJn-ї2/ !S ˧E.H&hd櫻a$*Wjs۫*/CD 8#աEN!?6B ~b*cYLrO9BW;KxRsM:i`@[02 ġG"唌i̮;.8",@Q߿?T9b6N3,q݌ujk*s׵Ec;^N7AqTѪьMBpr54aJL UNUP8U=R2AU MEUQg/N{t3JPNOJc/sҪi*$HU'cjIzKX4+ gnz g5mҢ-#P; ?" 6"]j R%1U!Yf,z2,?W3R8`E^;n CtbqVU F2C}'aPa=9 hpx>Rd02qЊ*Ln8<jQ^3 &LNd dFIF-ޣKCە~Tl*(m)o?_w.@==V}y>e|CHpMh 5`ۺP̪F)PvU#B)tB)H S5|j6TAle[K@RsQئFa~=UNcx ޮYpX.9Z$08:Ӱ7);i9Nɦ0PD , _Ki*[tlڜJU/S $9GW蠜,9Y NU~|LaT3ժx§O-HcEjZvjүŲ"n(&oQAzv];E]XY 1V`vb'ӵ$7aڮa*႞洅m{|*ʤdWUgr5SQU@qU B^6  `UK1kHH18*żea?v…b۰h!%sޔ,QI ﷵ,Q6N楎hD i@T7? 3ޜy\{б0_M"IF ilb4֢- lg'ޣ%Q0ïBE2B"wjDHF(ZE;ަHABPǷk Q]:{XA )c1$q֖4x"#Gnf@ׂP椹llppFwsOrp i l?T⺏ 9UaC.@ եrQHH6\bxjR&,3]X,Y =$y < 3?nG+iHJ{'_ƣ<"aT9B>ojX>R9ExQʷVe#b[a#)끊{ 0fR|*v2)t42ʨhHֶb\ӵk@dl ڵ#A"<ـnXorzbn$YyVφ q"HWR,ʍ [ҧEH輁S[КG eWִ.e("f@j˕2D6dQVd)v6S=M rqӊϲs%H'Tt%ga:֞\uۙFAjQsY%rѿJΜk:lğ⥴}&19M44pkdrxLFNONI\'3M0'ZBrH'L#֚ a3r@ 9'֢KyIRzRZK%"T$ C>fPY ی*i7oF28NqߊoPm›jtl>Q9R^Lec7Ӯ2Ʃ|޵,%X IYj䴛T=l2niZM q[s#ӊcXwַjܚЉ )c'xGoot0p :jE"1U sQ̗Ȇ(^1;Oob7fgq1orYck#P@D<ےj\sʪ (TKhYQҺn.F6u,L k adoCR&Tc)(2 9_ž )rbxmv3ɽ\=iS#gn?.G9p-$vqvq)w"tl$8STz|y%QH͐ Sle( ÂZKENYz>RJO~j Qާ @8W֖#;yo ;֫^["3Ƒs׭RL 'AU# L: Ӌ:ԐsV}>[5`nWk:PIZPs. 21VO$=Mh>=cF;UXs9*їTgTF :UpRwt5~Y45r/Y27AVN@Tr-#kHt vxAA=K¶!Wrk& YQ͓fFq$b ?o8vJ0v+>+ւN(,F0)R99$3#mϩJT&F\ƭN@1N+TÓ4%r }jOs(!Ϲ4i;e0H:tVHZ@YyyIE"E=)cYa} /8xT(t{t `ܩQO4*=ODLT)5c}RUcM~$PENcY\4M%3.9.B~jܸ"R瑚ֽP\CZw-@/fɹԂUII*s$x`0;UXXx"8 t1lg4u"צ*=1\\+(bUYZ]2KȪALk nn@c:Tm`݂烊YɸRqF.#R?vlxuUt,5EmxH,m8cڼ$k5yq U4}N<8Rn܊]ɞjmFSޫ$Wo+U$[;ھ-Xa}PO|z20}iDDrhx'8q4;HB@@6qP;+(LmFHy<{VF}\H1fc}֕RĨ6;)bKҨ?gKo ܟZG6IP*1B,㞕B4i,'R3UUK /)(P+'iSP xk崅-]ϻyR3[[x!y\vqPƛ sm!sD6K`b;pw|G +F_1=*(. 14T]ِy4"C3BĎhG8s=+=\!;d@rGnhD'k*yex O> $e'5ou4:onz]zKk`gkՄQu~Ӵ!V_hi& ɦbʁR̒7*ieG<ڤ-o,^٧ܳE Q܌⠖IKERka8ګO<\3A O؟CS#n$Tǚsx}95,ql[81P=ɴȈ ?:n͜[`1Dn%ÎVnQȌ$GqUfYP9 T6(ުw 3*2 8b0xH#),##Sژd'-sH+],۳\קHT:b3Wc˽1Vuɓ1KcԶ[MpU3T?bQLjXdgR~8AZA86]HF.8p=6m %ǐG~a4ۙ$ `jYuaRXg⥌4B<V ^h`aW¶Z6l/-C]`Sy<ȉA&uaʌTmHbPHx5Bdp.HE[$y qރ0V'mē$VוF)8Aږ.%BGj֒-$Gjj5M  *YKciP3id7?3RvcK#$\1ABA:fPwL \t#*r?w9T.tSd2>V<Ic4sٗ‹;meFY:2x-ɼ呸oz}5ٚڏ&5xg=͔rݖF}i%hQ·-3Oǧxdzǧ7?LkK,c?)jvwbX'ǭS9+R[Tw#=#;5yA9RZ$U $q*,;{ T8=)DzbAZ!(_Ǯ)#.sK朒#_8I<|3cj弳.*3uRc'sP\ј,gޑthqgpWr"8 HueʠM>O$r t99⛘wd#)^Cۆ-iVLFn[Ӷ(8{k7e* 1^K]^3* wzSh#*8"y1fJvڿ**T*}iČ^Z@0+k8cԒʽGֹMDDAWu(IFUe]fۥJ!B.=辉RrpEYbaC P Cdq dZ$V*Cïjy"B1 k<rFGJtm*Un*Rԯ<]ؘj۲yMz{}WpT6o3[*sY9VUIaExF=ǭHT#&˜:cqxi\gf 28cPE3>EljY[Δ)u8[#gMt3V$mNֶW! U{"V7(a<$[SK*=1[7KvM/Qf[ @T-D\tg9o@ g$Zt@d֣I DPzɦ%J i$|TE|矾dT;d98WaȨ`a'hdw<㰬KAfsv7Jr}kKv!^0IV2C9'bU4dH*d*sRhC'ltи9 B+@ x(kFWؤGm$к5#kC$lW3jX?arX֞{`Tr-lk٤9Q-Zt^vc.u$k}V'6Txk^",kqEh]FS*ҩۣ7+$>`d`t'csj)7 vnHb*"pɼeQG |Ef]'E@]Z9WrۛO,Grv*M>m ?7kJd"s?Wa"jUۘڎyhޮy3I&+c$f~>|1) $+#z5v ݈;~A$.ne͚Ic9sN>Z4S)Yu{K;y6s:&$o^igH!ˍõs;ʓ۽cJ.&w['k*GgMu,B {WaoE-GQɮ I:kl7+UFF<ޱ5J+k{pw= Xl8ʡz4k"!L~jVET:+*N3W78c}*@${S4e1eC6KEϚfRD$ɀgH'<^DJwD#z#C$Qrq[aFz5R-_JȜxp*k&P~k2@MgnΤ3bmFA`3ڧs rj;%rTҠe?hXَJL) w]BInr{k`dv}nJiDFͦm2n e$&*x9@<+^$-2]pDNLmBā=jA0U c9 P8HK(c9֠,7~=ɨفlz[.VҺ+Kw2ֵp݁5*pH`s6N"D͂?ñ!5)+ZU޻*ݫχrc#mNdg(yR6K{lOxфmtjW["R@aX-Qht< M@-ݶm$Umt慿rX>[L1(Hf=Mt$sjzA~*[F@PUb3!F?Yf$8jy+}Vm3(Ɍuwk nW-Wrb1 Z"U3w`Oo^:iБċЃJ- })I!sޠ31m㌷zg ׽Kczf_U7!b^g vXWZVrn b\%e0+N Vkrqm+^+21UbF;oD$m1YdnEHf>\M"Dk6lCL6:fN'PnV<*K#57ѱb8`ɜ57Q9Ѝ}kʶJT-&njl20{y+bm'8!-=*݅K)2y$U[;!`wҤI7r,JvZM%Lsõcj1M-M!e/Cvmt͏sR[ۺձ_jH!xIngirnN&r8}^^1TZrc IpTͿ;@V-کP'YJRY[;)7hSD22O4uI߻(sñKg*4r zӬn9jjy$e0Wjcb)(,S#[V@Z pj[YW?)-yo3Qe;+{դ;$隀@9oCPX"|p%%j F~tۭCh*pcX] ܟ $d9Y6W%~tg#$8 t=[yaqbm4*HDHjk- tvSRK- ׇcNK{hܰ ?'i 1$dʸ$Ŷ[ƩMfdmO5:0 ҵl:N; Ov;Ub0UbV9-kLkn;^ S8ݎk^|"-RپWZ|RKr#n l*rO"FTZK4BTI]@Q:ՙcXZGAsQO90.r*e&{TMhfn{UQ9|ヷ֫6%v5[QXH$8qYOqR|w3U6f߹jV?<*,[ Rj)CAR{TKV GZ[cu\YAIll w`.Yr\b(SɄy3޻Ku[o޿@]TamaČ3ޚB!9$7q rPʑܧeqٺT<~aN:6HKqc GaO%O^[*W*ޕEpWi VVpTAT 퓊TD~W',SF'o9#JhdVW ')Th9ﱩm1"3k7[LF\8#0`*o#] ݌Ժ|q`wO1c֟h03cMfy 7R}jɽnԎZ!2ee +ީ1FdܲtK{Q b[kcn7$܉-`qKŭ99V<(Ԡ9ʜwi.ڌ9<0k7eހG$rPۏrk?_uLpPm"ϧĚ*Tj>!@5Z]-| ZŒQerg d59)6``U2`խMAnRi 99=jmI丗՛0&85bHiÀxɩ촮B+Q-G kV;HUrF21֔VnĩҚ+(ܚ7kD9Q&2@JX/<@=MJ[[-*ra_ix# (s[Vptw?_JմH"pϥl[FD#p;YYŽ4ZIDfW{rqU@j 99WY7g+maH|nEIlx~}zU) Q@8EWUIq¯ *.S5F ͲCԆ_:K5#\Z:6zOypDapkIpa4Y"/Ư$YvMdDZSr[Wg)\N %܍oxrOqK;JB*ұczɺy0ER"\];6UVt,~$zU;-GK{NXu(2UC15f%uMsjh{$D4ņxܩ|8 zSE[T) CdO%"(=) {qV~p2I<=6A!%FI'[m:(K9k Y$¾?=?UA5=*M$g%j͍ W;j͔ҴyrV [@7.]T{ LcFbǒ}Ν3eo$rU,ÝeftfF*ퟖI8bوd瞠"IK׵2ܷJQGn[ ex8 K{M E žHNxQdB#Z+&Cj+RVꫦ ,MAd[sv{Ӄr~`zS3FrKc {U7A 1 Gsܤq3cRfyI9~ug ,Fٳ~nEWE &`ȩ;%1*ė$`™BVXh"L}׭OR4vUH6 ([97pKupUUyź?Ʈa@@ שk;YwռִbvnoZ ew$pihT)8sޥ.<}|}@879⠺T0cŻ {C>\,  y!Gv88H!'qc)n{l`WzTHʿ6WzlrT YU^L(,^Cs#Ɂ{jUd1#;*Ҹ(HUQfQ]dG"wr*Kc X % Y5%ܲψsk+enlMmn`#b25Ilֶ"'1Z& gTr&ܭ؊LBw؊V ̿?ӊ$!9(C㌎)dœǥD%8H@#'W GjjK(l#z&rď3Gd;FYYhRA=qTW!BHY ]$AajhXDXǖj;+֢Df>b>R[SՒǦC78#56Irka=c̅jՖ$/*yv̸HxQaqilQIal(8ߝK7 `r).%.p yjQ7Rj:Eypn$tȣgu8PyNU*x4@1pў3zcudՑw4$n#PFl{ ӱ]6f3=󫮗qs 3=Nj&AN;QiHyإIQF؅'7NC%ɭ+΍$ldݵʫ չ,԰ap ]ӡ 1*Ķ+,Ix٤ʨp7`Q*+C3 ne1Ph&P2GNƢ%(()5CZK(Uh=Qգ{3ֱbpǹc;q>42@iD-m:1)<3|lf-= ј]-QY+2yDV=[:dԱYcOVbyt'P[=m9}i򞼊EqPlٌR!{WTa7!NX}jC{X}j00P-M(X“jZsLUm<+Fx%xќ*ƛttq_v}:|Ac ֣W,J5TSreHUJp{sNOJ$I9>,J>Cמ)b҇]dzU)ye)ǥYW2J8 :n,ۻ2KXc,ijv`y MO'٬cM1QՔs> Ftu sT4UЏJαx&\V}E:cgWLrldG89VěA"LQ.C(Ͽzi'Hvڧjn Mmć`} ⥂&وdoMGud˹̽ȦOhFW) ~r0 zTV$f7rY7g Β@bq[q!WV]ĦT1XS}vڪ$w}n€i(;nB^>wSZ12)> &L!| &)P^̻nTڌB.ݻjۑ85N, r8S1HyqUh%E\+1W[% 6n;UJFEt W^IQaPrB?ZFgQ6I|5vEf*֦'E ޕ#wR/IR5(ei&pTQ]0g苅8lGJ tEUnN0[Šգp0A=$`' R?۹ 2ۃHV8jKʺ^HB#G>{Չج8+\|Zq2!8)A]<֭=Y#mv^ARvTP3\R'\U"|'#4n $A+i.)T4) Zgk.Q?*غke'3Ij#&6oj0VW1\ǀ >y&I7Y%tCj畮WX[[эEsڥq?s۵lYJ۪cZ-ͮs5h=7ҳe/{"ǖS,wLxڇ+;k^!+\~vⶎ?23rjm.O>jS7 U꣓O8p` U*"3n9HO[Q2s׈6+L?fjz`z^AU}%MsޣY?%"zM0dPpOiHA˞>svQ f{f'(y.HyQoV<f&gHպb3wʅI86vRȄgwM'$e$z㊷i" y_J[e%4dlyϒޖ6>pAJ*;wѺn`BqHn\m(p;7zj,BjWL/9KZGZj:94;սa#&njz]]0 |ZM.yN#,Mnjc`˱ S]~ $d3ʾֵkcbdN\k㔴4rҹxuKRsu9B%n~a]E 5iSƱrܨtv2l{U=W˸F8oS wy8ڪ&R89k{ e8L5 (H}"V6wrKb4Ѵ#2}KEE:ly%NDPer1NR.0DhX\a9'5OHK0LA)Kf*]$)J♤NGt$g "b;Z.9z#}Vc޳o"uZp~x=N_. x!dc;WH"($w&H4 ԎFÞCp^ d7qT1r2ҦYR|W Xc GZޛHV#Dְ漝]Ghx#[ďESO{|1;$8l1,LmsWл&"nUě*̼.OF62'ҩld5fWĨp:FyQU]?jyE 8oQ]>%XCoޙ&6=ު#KGF.7?Fz -fG9֨;&#+qEe=*etjȥ|'!{5zWH'H U^ȇr A c'5-9#8cؗunJ4,:m0V7q`uzU4O8T3AVíL *!D c#jd.XrPM<3U.V.iy)i΋vnjU+LdEWHکZBLIHU-YVE=ȫJAR9 !HG1jpP]ErE$w*)+nELr[YuwK*1Vny58b A4$vł}OSek[i|{֎apUk;hA^K{:! 2\VV\/ /Ҭ,4VOip)(.%$zSF>q&XE*(,֫K`<5ZHU'+I< k ?{̉J*ޑGZk{T2LRLyT.PZ_ *6=z53h$ ui*@=¤JAJ&o440riJ`=8{Ջ,et\ՖiYmqTP1 rrMPp'n!dXfgaDc%KjBb~=Fcl3@Ng䞂e#s*axVcDޜUWf>Y\,NsUay*/E@.$WJ\8|%@QNq 7w aGi"vb 90( ϸ9}*U&ހUh3>K%$qRW8%2Xr.{T,㗦ofK1.ON sK4'ossu=)8@߀37˜ * Y c8<  Ue%lUg%<(*5C<Ґ+gFTr!k>Yc,)b$]bdT?xlQ$q@8R5vXd]X Q nx&lh <хh40~;R11Nn3Hi>jj $g iX(Y-rH[ erHLI0%$*A*ILy" J|hTo8!l9cTSVN\&hK̫R^]nOQI 4'j~= %&;Usb<5Ssn9-JE\OJl3Ո٩_[%tbI#,ey!ƒa9fLN隴?a5eڣT y߽***N) ;6)s1b'y#Hơe, faz9Ww=!'Ґ>t<0^O< c9= >sL#qv`ZFH=je|=]ԥi&?"5ƞ ={S}rԖJ_ha :Wެ]\mVn=NAYUCh7XByjsUU0*0g݅TE{bb3)Ĝ3{1-Ȼ<Ϝ1J͸WkhIyըkuqD`PX|ǑUj+j+G~QUu\]8 "* bT UhMJ*õJ3ԠNH""0F NJ`Nw7JsrY(QM9cŽcvF7 ǥffF}WRoT̬8K]0Q4Wwn&;t=1n}M 0ϭ >^6x=i{S@6IvGt4 ׵@Ns& 78F nE✑a=F_ɤcV|zƬ @OT< 5Qˇ1TY>fʫ& Ԣ ;]1U@늙sud1M@H@#ޢ@48irp=AӈP=JL4m`1-=̘ c0|AP,fc*a$ڣ*ͼJOSPK fg]4.ܞ•0X{ SrϥGz~oOj\${p*XJ:]VH@C9V*ryjT)sM'4I"SԱnϩP}jMFV֞_sIH:uɠt?Z `!Lx468ڕ`~43`{UWm#O֒0Eg8-USxT$+JXlT`sSڳ8Z9q]ZW*PD5^$2sZb1&~cޯ6$nTǩ[i$$idTY}MRg.N9b<95o8mP8J:~41^(D;LSHdXð09sS` c&̩SN_->XUOza*TMB`$75_%5X] (@*Q(n܁Q=iFHcuϥ) N1f FALwǯ=IRbdTJxB( hbGJF8 $TaKOM&NV3kLd2k[{SQZa⠺o.nj9*)dY8OZ\dz|cPC,xW! [G5HI֙%5 R[GnC1ԑ@0-AOaavpFI?jv眊Riv#Y}4=J-όuZHZ`v-,viB zsUfpIwl+96WE%p%m c89­NEG>ojS)rjdC&$}*H 4ߍǎ vp8QRpČJiO90rq4{SX$)M1sHOJBMA!-K]T1J6ңO9QO#xT-3HHF8ͷK}QvvQG sTJ=MUٴ`Wkxg=r)=s+0\nǵ6;lI)aJ")݃ uu D 5qaW@1I$I=I#i'-ǡ4İl}I>pmƤ2p HAԜTAN@cҜo¤ ӭ<8ٴ.iG;0F}M2bBm3ؚd?:bwaUSU l8 {u5X9qVD1.;VlE^>_:CI2~&sA~9sFvc;qs׊xgԜSLp1 sHqLs$?g,ܒ֘s88L#Qy?\Zfz晴sS.8׃O5InSOROJiJmdA#95b첰Ojk[AVM$rX*vK,Kgj@lrI5A+{Jӷ3#jszO5 U'zUZz'MXٙӐ*h,rjx`'>pAmڴzۏUgޣ FEEg5 ˶F^-LwbLw[0bjn:q18$7JV-rsSCs&2:y'=UgC#dw.zCH4ӌw'CF I H6!GV"*0ڸɩ{< }iy]ңrF$AzL MpbOsK{z^Ap1Id CӦUazP47'5jǖ]p"mߩDQ '_ơMFόQI*6li*rÏJG=MF*6LnH8rO4ÑMcɤuv9#F5DdӀ[DpIao%Ԟc@) 䊵4HZ**9vv UBqg*qu>*E#΃<|46In]A9mMSҩYPETyˇ@*>GYBG9";LsZLcQiя%i09vp*#<J^Im'M[S!Es[DJ"BT<9ϥJP#CXЁM x*u0~n~Ȥ|MFZ6 @) 9)cp$^iw(L<(8Qɦ:7*9/Zvm)pD?Zt0GO ;M<yII,.TIv3OM#I&pqHYsEjXݪy$BK-/B/Y Oz ߹ 7?CZ +UPuʡלڟ8;|pzlрMlQWmۤe)R3-Pt֦*\5L[̎p:5Jj 0ZcTww|nJ=6o9^P~rG_n NvVmsl#@.Fs֯[h #9Vv{pGDY'#'m8'U?Lqyh,wt ^zI` L*yjd>r3U~|dn,7abː1)q@ZQ$_/98&<qM@b@j0IqN dzӕ8F@NqƑ,77ed<ʑhlɷsޣTy#'Ees{UF<*nedܧ,jz\Q@9ǥFO=*6lMFdLt8=l͑ZA㎕ǑZwM$e#'i=؃i~f K1=*كOZ#DQGJ U?SPGN /\N/^N:RJl#jWX 6Ph;sLgd]) UyGݎI'}é$Q[B rIAȫQ,LH9jx09 wKg1vbeQ:}hAm=) gڄG\P{jBPDG$!qA[,LRRt4.yMFA!{ԡA!GZxB^K,xnl䞕d&'scQd(H}i )xNh={TO }M3 `BY0ؙ# ޕ#TnG1UYx,)8jk^MMj6s֤/ONqNf'iu3qکgsUmOU~xTng4iM$. vM:sV|N+kwiNvJrUx$T1$^2rir w)HͰMcmNILZy-ڨt#{UDcWGNg/=Un)G=s@\{R2N*Q9*'~8Ubk~vK GFs\FI$JPNIOi(楹,Jŀn`4! J;I ҧ56aϵ^R3EXp}s֬8zҢP@ F7cJ`݃\dj|:Q)Aʦ.sUd*sP><k'>KN~7&_mV`wp8W эM bCR >A=ӊ} `ZttPٶFA=*a6ڨՂ3N}鲹0/MY})1f I;UvHUYpǒ*Nj`_lշ z)F{jpGN}銀?ƣќnV{$f]=9-نA,P 6=/,|-K"5ZQds/j_J[ӷtcA,Z~.;Y/=zmܱqOzuOt_5AҠs4|MCu'_JMFxSN -یTdasQ3RZeob**KV)p}NnIeNpy=94l׵)qRbO;@M9䞝)'wHJ#K)Li|^)R3㠧9@6 یTid>^xlc54v,}<Rb. asvIrI!B3|sx#{9@4`q#4p=O'b2OX,dHOG&n*vi[*ܚ1b:Ә_Ӝ 0mV6l3 ԡ8<9 'ޡdɨ8*sPNxcE*G*R[ĐFN%2HF>~4a+cO5)# J~ ~U$_ГJҝmuojEf;Sԓy{ՑN]H{T Gg,:zT6(G_P@9M3p}*0?N*8L\sH :@8*ēF)r@)9մ`i KnaaHn`CjHg3) 0vrG!iA9;#cڬ@{}jʑ#?m83fXAp*"FdedU+[/Q&x#Uyn9X!8Vi.9ÜtZr5kiqр ռ> XRY'B2Y R1[ W kU+BB p2LF8V}Maj!>Piv̪]n3RZ@f'wYYFzU{jsKWmTn[.bjxTcwz =~!H(H.÷9)ʤzw$Jڟ$@`:dh$20T#'1S'ڜߖʜݖ֛SI?7?1n yP梑xUt:Dͻj;SM 86Oҙ1˙<: L`v^)'r(0)B !Wiނrc(<'~)pB)\ `LIE"R4 I8TrsڞO^ )ʬrK"i\iLݑfs0jk(4N:M(쀰+EŭrIJ=3qQM1ٟ] |sH;M3de9db79 ZlbuSLVPLfɦ1f+ҤrTq6fi_hU5v{۫UxU (ނ1JF1Jx*'nMDg+UW% ֩NV3NޟViGˊe0{"(~yF;Td YӟNq֖u+˚tCb}iЏސ'SA*0@ݷ`t` EjPb9.)jP6*9Y|٩ {pG/,} S,1 rv!VQx8$y~_*늬9#T5Ƥ1iflѭ4*$z;i9O77L_@*KǺisxn.)_Y򾃥MkfЫF]H$um9?ʔyWCOPNJ8[vqD"|zva¨a`ja;Ad GNŖن<\lCەǙ=4<$mec@=i`? <%(sdQһBzz[D['_KxNrrqM]Ds ?1n!TJ~ҥV l7jɸϘnphU|ݍ(OP3OPwOj0ڞg=KbzvR쒰 V,meu=0ׅ!Sc4g?*ƪZ&P٦Tbnj5;xJq=꼤QPPQ; 5jG|qڣU,Ď:KLQʼn̅eOJ(ÎQ֭ ҧ\X\N c)#b1׊kc< X1Lb;)wjnǞҹ~X𨥗 u qT[qoMW䟛U9'5f1*ÌS1JG|F(a =@Әmc~9 >f~}ii6fW4cs;*fnuvU!{ cU#rb<*8[櫗W0CrXI5hgŹ^5^Y˶Vݏ∬d6~n0g>Z GZ,mCTE71Ớ˸W{ 65d@c8=sV 1׮j\ZFǽJBA d0 L8G;riC݂pe8+' ?F0elmnxR8#Dp"c =fe\L}jV`ΫNyI^ I,P$Rw˞Fh fi".Hx(hɀ8 quhb0hA94‰tHSHW34ȆA-қtICQP)(f, Uf'}MB1xQޫ7隃,XTX$q԰vJr9x)x  i񐑗n0TRL[kY.$Xc *F5ܖGN{&5#m~N~1g&XIݎI$Ptlg9J*cޘb5O< jܽzT~qʏJg 1HY0X`cO)Y@)0q1LF^b3WQg",O=Hd˜d|:fS R()ǵR*}Ui2@ᤔ :o!|F0Gz% ;ٲ dU9RFU֚8p:#N4!ץS8.+qǭ҆`X E.7dR0[K=A O InkWv珘Tڍr:RCgtv򌍠dmab[ȼm(789GN&΋`jzx+Q C ڱ3 VL} ^ٛM7G.B1*ޒKXV;==MXsoX|ޝkTǝr~Y9=Mgt9aXIwqUcVʪ obj,zc4]m]*WHAGJK$<6Pq3DKu;K#aҚZKF%H|>B`(vJ[8ݪ93sjob4UpXo$Dެjohdm>Ҝv|o_zoZ Riz sR̫1x2i P<I4jSRJ$r1#Ac BawjKrIz]OZP$1zQR#>0H{8J}{Ja ׊kJvcSZCR|ƅ OU协-8rz`fp֡<+NYxx R oAzI֔ r4:NݶHM1iiv?(\=J+˚ҭ|*}zyG$ ,UQ_njZBYVp1EyLB1:+b=vܑۊ!P?VA\U'IdD`~oE1}~Va՝$&h8(էSnz֝hgkN2&˲&j̘F (VL#x^ym 'ҲRǒk2,9&[ݤ-p$On RYbիyiD([-QՁfV 7Rd`w# Dx6VUֱw*]Jpִ{WpeQ֐bw0 si dB'  ~5R8x-w{T?%D&L&+I)M<|HN1'I=B=lUP=B<( qךkajV T.*M6|1Fj]R)T`x8S=xMj ';incDKC'ڻ84&ߙO]UqY#q,'jɒI-!ڨ^G,'<{UnۓT08n& h)ꧥKi4@S$.Мs>A=]H2zY7#YQyQ _`;Eʘjf6y1P@7S_Z͵͙Q}+:<rJnd'R/fi1¨?LUϙ$|?ȫ,l7*ۦ1j}R`.okhV$ኔ_[2\}QZHglm |?3%X TQ>#.pPpۭ|p{1)mښQNb~w)++!)DZKZTnl},10 `$I/cnn*BacJ~F=A9#z]AA8|'$ Vc:#'UilѨ}_-)ߖh[`dT3@ZmxϭH!$dSYOˍ4jт isVns0 M+W*7+Ԯ#^+;gzsKY s$R(1MܷUXw'hۛLaCzբi8OaՆSg*QZ o$Mg$4v3rű@@K}&`Hs+H"[sL*S9*1aqҚ@# qW)c֔2R;WUiEQ\ ~\VCu4\Tm E8(c 7{8wfHu"gZz&.&ȁ:Źi=kgH(_KW֤&i6TzoJ6(j n/Q#E.u.OzCJ74Lk? ?U養5! &ozVߺ(z=54AsLmIa}48>dIb3N-Ҥ|(#W]nL3})7Tr2H*7ajV2-E)[yte>cn#8ؼ{Tg0tQK2 U,rz֯!jnXg=UzsT2zTFra0ʽ摃1bN)ץ54# :ZCzc12Widg44rzQ֓94$NqOwʅQ (HO$#8#1<.N(OExMHR)XM6ێMLtNN>Y0G^:!pj99c<zJPk!M&ң) *Hg]!cMIL8XkuE;աn#Y})e% U@L̪paRM!!FJKj̉ Qz[<41DCpĜTڔ6$mS5B2b䑟ʳ S,@noSҤ~cRycasqH9*Spq=1֬y { U=qMws'jd2בl9'3UeybEVNEEivLY F('%QKKBW;$yX(9BX>§*c TM.ܓ;lS,s=i-MvIa޺T sQv_At0=---QEQ֊*ޙouuEvczwr=ꍦdT<>,YoM-ݙD`Ov/ Uql d gs/\ ٲsɨdrIFNF3Mjh˃*( IU+1|KvwQ9~5՘D('W?¼y3k1=qڔG#'ڔG+P$\H6: cC+(ۂNz Lp)689}i80eq杜 x9P&UWRҮ2j{8e ɀMOm /ާާ)Τ^a;B/Ҋ8bv!`$W8\) r*/: v9l t-p**\1W>Uq0H_p<[ABTqZcqj3O Wo A0 ʭf~TxZDӖ(_J[u4۷/!̓'߭(((Z(HF/8zR6 ێ(`65JC68@+t"Gtߓo93Z(8{Tv ON.OZS!8c@:˔4h; =M8uSM8N49ҍ< Q\T<6zɩRIڇ֥GSI] Oh®H,ǞiU<S伤cBP[ڠ1 TlA8$),1ҎH$qHw ~nqu478}J *Wwr3;NiX%9fsZYQ\unZ=i'Nk>85QDG Xg犌bUg#+>]~֥!xDTT}j{f&Bǀ:TWyycR$z3 \R\$EvJ#$Svh"PmcHF0JVjZ(()OJJ* /-bU,:EURZ`?y5FJAazY5X)UIumD1}3:M,(9|S$ZtM0JWEn85vT9gGhރVh}j>\) y$r)@ar9F0)$N]mh8hfGVhGAVR/i 7ˆ2G{7\]rV\p+̉.榈L(\/ᚖ"ouHr23S@M֣a 1u]=8_OEQEɡu %Ad,*96DYYk 9aO $0\Dي0!ˀC'j2BtL)AYglIx#m?14sS0UQ5Q1U]cli+`(Dv<G u+;&!@+jzV6 q61һH,1R0HzpA9J!.{1PpDcP SwTnx*mALHAj)iKdP<5]-[ *5\F%-^Xcݶ`G2W< cW HcT%$RɪR'&ÐO-W=) &ب0@zwsO?(ڔKZQ0U Tq'&O#gpl\CcTSԞGJBIjC'2s׹|4s ' *P_'JoRHᛠÅ6r T@n[7!OM `Eg"e8 ַ5!V )?t q=khgڠOJTōU# ޮib<, FqkMxBeAnbMkҺÈǘǼ"3w b(r{Rөhy6ST5+ȌUCj |k1˂D2jd/p9cP\jmFR}WP(\'i=Z/%Z-YzkLȄZUY$˫v{0Wn̐"j$U+5A95-)A\v)ɷQ#G]+u agMβ1B܆늊IW*p9fY1cp)o3GF*4ʱ.nCcңLO|TRɸrj5JrMT$jjGj_,`R sRy>DIgf?$/C\`aM X2~#o9j7bY&vݻSA['pqrE;9;S*C9UŒzӌ)\ S[/=3RB4 f*dI'͌MJ95 /1=6O~\ft/jme<}еE! We aR0 V  V5Z[UNXTI%5廕6GI1;b~\Ku<.6q=̇2Vh |Vm֭QQ'Ǡ/.D .GZr6d@McJ؍a XM#}kK%1좱IX'y8) s׷ZQl2i,ʸA^t5'`Ž֎%A+NsqB#Zqܻyӭ849)1Ԛh!G4ĒO=2GjCzޚI&O'sGJ cI9n(W)F9KPQݑz &%rMdrh#(ri#-IjX1ڵ{C`+R&08[8~5 b1WY#L"҂F7VfSp#kwV[W1MҒ "+ kIĎj)ßP}.{=k9srǜ ܱ}kSn؎ .Obi⵼8n8%!֚(?:<֔wϠ IqH1p1"L/0g] YZYN; ABOIo**9il֙,-,2*6;ZQN+#nl ftavoL sFSHO*i6&󜓒xɨ~~T > 3J{R) S@3H 4uNN?ȥ)qLZ_.c\㪃jCjk);Iza!q,x 7Q *51VΘA dӏדNThK0Tb}9u ;]ۏ4}'v6.onu C4I;RY2^jS.QH2%PXcRn̊lQS0jdB$*&XܞxjE,yltK A2W¯&b3*҉rqcwU{rUr>W-QwrĒM3,NMFK3dԸ}qJPJN8!|pBؠ)Ź0Z҄&sFۭqHSj {{Q@xN 92g n=3S#|ǥA島GQgq+;Z1و#[_[O,Fqɭœrhe)u]".| ªj+U&SdOl}EAh>r<޴ImӡpHoJ$nƧxx0jBQGb{XRxMڹptsafq'jJ~fDwV8*kKH #,oս*ԈČ\ݫu,RdUĎ'kõHcGZ U7ry5"F[ڝs`="w63ۊ;ڿxUiguQeUMO`U$qT.y)<UMEm 6{Z%iX.O :~>ѭ[#HaFcIcXDR8O:Vm9)Y) qY2L x*?vVt+%w<dz5gEݧ]ѕ6kZ[>w\b2l_H5ω HM+ Xsv+9n*Jsn&Oi$dӁކ8S$FcޤS>R#1 f !q=kѲXaWL֥<*=@`S_Z{wsU/IXQvWj{pg\sV ثLIZ}ђkJ "隽>MWyL- b=DHaӚy$AaIK`T:Br6\֧5L,y}:ձi 6cOh_E-23qOr8:u]8Ԧ CN jy6oq׭Yp|ņcJ+g-Fw3a=1Sjs7˟j&9yx8wF#7;1-= U ;}jD2)y#vsmO)C6^9\3acJ(\e;dtʬ!k0D^"nw52*D8+֕#ydtI.6ǻrvQxH@wnMD =F@W8>v)#5~%Sw wgr3L|E ?7N-u\SlLiFceBp>cvlOW֔8ݎxnڪB.j?Ƣ!&dSjרeB8mR? ]ZbLǽrdX~hV/3;kfilm٦d6>QN+i[/-I8$V2,AVq]Xd欩 Õ#j 1vn\~b+ݗcS{Ӕc<ӣ܌a#8` r*0`FAZv~g)lědO\}{T YNN+Ft䎼 ۳ 6 Yq[\ɴA-AWt*V97p­I==c"A9)o-zs"䌮VҘ4qulH2H^QҪGLgW|ch["G0YٕɎ@eݡv8QYrZ?Vsڷ o=}e墋q&X05w`#d[Rzޭ\B Gnա.26<Deɔ'ri,, gj@ X[[qo?5"$V5-MRPJB0i"Fܫ 6DY#({9K[rQ+՟c+Cy$>d۞V_z(0C<';VfmΛ82n\?BL#Cxkd35r%Ybw1<#r[R8(-n*aos9yn{歭YT0=jزnCĤg$氮\O *GaFʮ+vWl"cWr* Qq1σSdFTs";G4ݡi*<`8!iHf!Pc 9'T9ݧlQ=iUcq v`Ҝ1I8R@exFQÚd`Tm9@kSM:o@J },Zta2[PAZ .Ci.Z0_#vجv +\Ue_sUFo 8Z8V(((OR2ij?{g6fh!aZt<}}Ke*K?ΟL@'⥲<@wXj;ٕqUus\TܨPBIaц*Q6Gz0jW$~\#uj\yr޽Fc1]ZSTl ;TtmaGm_ (TE}*lK+h69=0)AՓ>dV\)NZ"BrO˚bBX5^-R}j՜YAHOz3l杵 ?d2õ9O/{q֞chKw(6 ϭ fV^qINi>S'QrѲݍ9 n 9StJqޞ7cz&ݎ)[4 &z +{;q +KU Im4895j)[Ζ^+COT[hdO:YyvY<ǓhK]yЫ7 s]7&G"nѠBvVb$D'iejV pTr rƥЮX)ATL䩌&J((()Ys'$$}3X^$hZbn欝r}X ;Fk-Cʐךv{s=y4Gn,8ÖqZȺ-l8Y7SUҴS %Uս95n@=h/Miix'63WǕ8r4su\=똋]Kŷm.GnL2HޮGq we&8{{?cC"SE0wd'5\Q2?5Q>n]"yHPTse >9E8R` "$3"-[SVcէt kETj6/0{U8m2iH$L1$qD+[IɹH*n >Pr:Uڨ<&vDQc:AobyĤAތIQIEW`nfy\*8w5"Ě4M<&=+͍.ܑ].flDdǓZ5{[Z2[[޽l ?m/dA mGk|fi7B k>P3-&#f8SU-nV$jF^>aVGӎ/zWuk rwL++M@BxjW+r96Y]T!֊u:(((f㷭'n+F V\VWlWzV,VR?.oJa+xQ.t amP: TP01YZ 憖1Р<>lQ(bg_@"ب\=*(2[VQM(#si&r Qd$1#5ôE\űjͭ8$aHnRL0mcrʳ,;[ cOm藎%ܸpn>xAzJ(hݞO?ZA#jZF 2Y#cAMwXX5ZY vdZ-ė$?櫼>?֬ƥg\ D՘T pO<cӟJͽghÂ;7C3\odGR8硪 g8Y2Y rӏNE~tYR.0EcrMg5؈;oZHJRVv$}+/]şjl>%n `^jgin[?romq4Eu4wl9uo%~aZC#v}PْB0* lGz AKCD㝣R)eYXv%ĎEf+>I]SңhAaT;Zg֭F` vR8RpKsޝ'4~bJPG[ ~6 ̫,oΦ#+1롇T[KҺ+]Z)u}E%aG_z5u5Hq $0?p w\m16$f4;InW(ue>goN6!8⺫KQii~|ge?ZD<Ȭ J-rA,ۏO>"gߓN|Nu[kV3Lc{eO)qJsy8f&s CQdalww[1}k5in sT"e%!.KVH6Ej}+F{UsOڊ( x#g$mM@$!\,;Ȧ+|8*HRDka3Q]<N1L;gя˛?5~V9=+#(yOs\,(1}k4H֙4JcC{ d!Vs2IdfVl*71S@FWHr7 ʉLNH~^HZPTZ6Bqڟ{kC=u2i>ݦc֠gf9yڬS<{V2XsY9#&qR$_9\5 j,:FJէIEv.I 1%3,N{D(I1L :9Vb>gb[=c$'` kc#>V+Z$w5oba#e]ŚOwՊ$5l$^HUas.O+֛u`.]9)Y#$Wm"P>#ڴ--!#8@BCu5:>:Zۚ((Pjv/3*gos#c/4CsU;i|T>TOb*gˑ=KM7ĸZgď d@I(gi@,jAjLA0J`mj_ ϭ:YAϰ-c*N{ &ުj޵1vIXLhr0M[`Xk 577/PK2nB沯,ɸ`rk9q{ Z=:pB]|TbUXb]ќz  @*ǂu EEF+XQH7T#:O$G_CQ41-XW?Ľj'J޴3!M>Zu:gс(3HgF3Mm@@:JNFR`vKEQEQERԱ9 ^9-ڨX{b 'tfhHJwf$f zڦY3lJslM!1>7&f7*~rj3sUxPsW`G~>lcڮrض8#ڮiHnPܰ jnz6@8߅6Py5D Œ߶u$\BGo³Itk*I^W%'yf$NAb8)i$am f߽4HOߧV%R;ܲX\s޺-2')[P,#w֛qymKqaȫ+cwHnsڥʗ b'jdI 2ǧ[usSnḖ( b+!)+Nxh%=mt)f 4} {Ky)ria[O!kjH¸S[vpZFR ֶ-mb$*zp#oOJPن67U5 VE*OJ}f[>°$^MV#kS3䃊c:W9톼^s]s t6-"D<ۉHéRT(((((*CpoҪϨAvr/w\$."YF9SA8#Qq;yJ:-0pikvM֤Xq l=)R%Qku T98rjpjՄ$G#8U5Td o.e&xM8ua S')5dgP&=NY"VO'P;A+23;;1gbO#geB77ҜHN)rsMs87 ]PA?:PKc<1q8HdfQ:ӵ.d,zV` =+bqX `RG889v%KrIWvI&&ڬlUڢe;sSH:Sx H"r:]g-1999F9x[կEQEQEQEQE8Co~I40K0 mҨA$e $iщesnQ<*&1jaaj7{W325= ?do9MaHs3޲V3>sՍ4^GjNY^>#Gs]% $+uvZGUֺ[[gU HݽkD>{ZTQEQEQEQEQEQEQERQE-QEQEQEQEQEQEQEQEQEQKErK( 5i! 75MN{t@T|v+}Um:VI] UM^̬AێŠ H/k˨=`F[޶R}BQ{ճ֭QEQEQE-QEQEQEQEQE%RERKIE%QEQEQEQEQIEQE--WتB; dPCĨ*Q;ڨx4q8SݍRn66`? Ć@}jcr)==|u0HZKlbr?Z#;MnkSF~nivWh(((((J()h((()hJ(((J()hvW 1ٮr+pVB]HwvV2M 0 - E#` ==M%` ^\I 1,DX[\푊ОMW9WnuvGz=\\#AXW Q)iԴQEQKEQEREQIEQERQE-QEQEQEQE-RQE-QEQEQEQE_i\5, 93a]ic+cW;}3?:ȸoY7<1D6R[b8_z-U cĂ߇ܲ,[Dh9z~T T UڡrN2{ֲ%1OJ((Z(((J(((Z(Z(((((((MA~G XFq=+( <cҧ3mmEXZubij{[29r.1WSQEQKEQEQEQEQEQEQERQE-QEQEQERQE-QEQEQERQEW' &dq ԗbUHv tc9Ec֤Ә%@0c?JCp%GFZLmeZ4QEQEQEQEQEQEQEQIEQEQKEQE%REQEQEQEQERQKYgVYQX[ڨ `.+=bI9p}),ҒR}ik\Ep `m'?Λc>$t}:s=}( pO3FNS!&z}ܑ2)eܹqUwF@'U=MˢFUX(u_:##*9fc4~kE8T.c-2\*(]6PR2]Y #!zaX<)<ͭڪY,y đtwB#2@sU._jiV+\M6{;ePriA EjfT끏¶tKq2{V`ccKt2v%YLnfJm{0QMt2(2*'ts@T V$w}qDWm'&->gCo}$fTAtҬ v5s ՌEQފ(Z((J((9RA@$$ƀrih)(\S&LgJlq c~2o'W 4/OO~`jz!4#t?{jմ3l{rZ RѼd9&s%з=FMo(ОpR藲BDŌjḎ` CtE8>[scVr$(sjBة :qGl@W*B ds稬V2' F&W@OvT̻?u[y_ 4c wc֬_1RrEMwnLBj[XojeA9wf-݁7SH 9ޝ< ,iu>"/In#˶ ߭6qa$ f[a"KrtR3M!LF4fˈ >i³;s!S60<59qKKEQEQEQEQEQIEQIEQEQQN!?*)e2Gn'5KV'AGRtY 3^{ufRwE^uz8zUc'5luj~k',bHSSr);}MT]IPzRij"p&#5OLEv85Wַֹ(QEQP~W{u^LRSҡ0d8GH wN.xS=U$#8^Q3ҌP(t$(ւvJHd@CޑpH`}(0 jv)>4cQE&()(Gz((cR1JB{U w # GOƳ.#wsɪSI 8_ZR̂h#(;1> Z(IۿWL[Cv0ֳ<Wnors$%FI_(ݔzxU$h$K+#|ثSW6ҳsn缻g#Gzmf$I팚&4lF'$VΝ2c,f[(AïJضKo1fFT։H<Ue ݷ; S_Tުl2)xpW 6=Sː4~I}*n.= h2O#ߵ[D܄u5Se2Y2EO摙_4 74>"pRV1_LUfA0)g$SQ.#+3Hx8Wkd}*r2sVJd*b'і<ǹ4dT- $qש'At!$y1X[Dq؇9CX$ݻ0k-s8|[7h-bI0+i|3DwJ;nv7w vxƬ }V#b#2R ՘ubPP{4z$~>ϪZ$39|ieM+_n>“N4Fp>tnxI[Ni4 4f4`=OM]U=QESfV_l?ZďŒsXV>\VnYzeSgsA+ExD+w\/gҺdbSs! FJ5$qZA8IQ+VUI?zGz!鎴7̀F@}+/'gTZBF6,f!?2&F8ZnvA8l;aI,llx"O%k)Jӡ.k1DB'02TGR(%A׭e.{r_$P)NLZTԳG#p {̹[>u)!1=?ʹ^ !)?+t NoS ^P2[x[r mi%3ۇPv N9acb"E` ݅c4F{ɋ3ۈQvZ.6 4,cc|+gv$Zô ǡˠZ4x07SZnʴ=f~ F]jn*}L$UFur]ؚC[HEy;d)`xVM| 7Uxt=TvcӧHX= Y[dVayjӭOsW XHոPqiX:g>e :u-QIGҊHRH>mв}jY"*G͎ s$rùzmrIV) Ԓ_<RXErL.ŐCXurux知l$zV 4T?.@ ӽ2xc*STsDDzA?g^EHٷ?)mdFr= egp dN~ҭ1{p(p?ɭ!1,Ʈ8b +,jæ:z~.pZulm$ލ~} ZeHv"@ڽ}yWNK¢x zzѲKUUG`&_vU|&6BW'޳/ӴrGUynY: pbcγu+G\7hWlĎ,kw/ a2yWDu."RɞGSX sKNJ8,yaROmIFzN& :c9d ]鎵~2p]ksɫ68 j퀂i;q -ޯI!;۰=7|Pؓvq\*{s OZՑyneR|Ѐ`pj vՎTn"H-IݻnxQK E+YLiedimTѲ[#J܆aȨ5<˰H8S/r'3Y-gq4d.FX\u8縬?YN12X?is1iKAkGQhHrJu &/g! nqjZ6|Stn ?̞lwU赤MF@SjQE-RQEQKER&m$7Sa Y&X5љXǵXlpkL*>jbڟNEUL /%SƒbIu{T<˂gd"Ü ;Ӧ&\#٤mQ͵[XvZ,]o5e#[9{VSgk}XsLptrVm%7U+ylҰCܞGsW{X~zK$Ұo^ƠysҠ0zGJxKҔM!8Tw,d8})IJPYPk~#o9J&QR1V?JƏ6wpkB'%@t1$ką7< Ir#jgqU"w(#Uy'1jylC9ltּKvѷI+YoЖs8⩋Q;rvYDPv="^jdTQI8ngTR;Rh(x1Y) ʼn(N׽lhA 9V#mku" ѥ((QEREQEQEQEREQTdf0r1Y nvG#˲LSQEov6pAޠPF`# yS{a*L&FXQ2F:U߳+ȭO "` ǰDhiw=3RisasSXJf%U1V(=j-~`G5yy|yZ!J`OZd^pಀOޡcm {S#hc֙"`1#EI:P3#'!T.2T|xԬWj4;ސf.)$2eF"B"nMc"T*.EJHSޒMXo#1هO5dggJ8;Z$-)!8%yYNAb,yVC5 AC֦hBrHD %;A֮J 峒b3FK ~gS߸30q={KKi!P)`GCNX݅#=cSI#N6 ^p)PmKNQEQEQEREQIEQEQEQEQEV3j=Ͷ eM{pֲ[qΒffu8j\j4xQUO`u ~@b?QI."_3t{/b:ֱ!osҤ_ȥ_< n#)=B@VD _9WV9ȫ*Q">TRHV>]03Pݶ5rBKd}&9Xwu,C-z։WZjtFV˻A"a;NyEL|t m$jxSIɨ ɍ̽8PZ˯JF՝Yk'kw(%q;33Gן\䲴|5v8|ˌ8gMk'U<8be ձd9g4d#9MoIʄ2WE$繧-:((Z((()h((((K}AOUq=VO*u$0}Edj: C`z5.K)-֩FlKWbHs4;_qS]l;=MoLY@3;P9m o%NqTZPMf_z+T3SH-nk*_&a#GFzö6K.Ӕ8+&  }޸+J]A# s[jp>n&俍ݹO-'u19?.OWaL % Ģ<c=\ipUu\eZ.pYAyc2 CO#>kȒ6%xg;F"F˜ghʞ1S:O">pz34W),Y#Ooƒ\q25er.q/ueSr=룂U! 9-IEQEQIEQEQKEQEREQEQEQEgTU-0T}9٩#qJV+::ARx58J㚡}JąŜ[vUmcG?ze$L~#mazkN6hq"}jYKm>o1aۼ6#ZPQ끊̒DZH`RNd.czTVHr%Ka !I(0*8"̌q#,,mtd="*2dQ`q|J!mzV~nbCrd>ZJIN{bHT3Ȯr;֥=WozѳhI#Z(l Ehi 5~\@^E{g9YMcjA|& tKurH] y:F[Jg_B1i,$ wsZ:LWPdFU:) xdo~V{QEQEQEQEQKEQEQEQEQERVȖVO-i, ,Vё1ҵ+Z*+H-PF qݪ;WRN0B 9OR98cQuI Ǟ|=ĠZbk~qZFcB4-F9b[Y&^EE|y;z+@],_gXK~un[!agKϥ[Ta@bp[rrSqڨj־l&L|vzd{U,8܏#X%}`dȥ&F{QtQ#mo=yNdI׭4R*f<sZGWVFTP+QQQvU#Yk!t(8ڭzHߨX- AtD2lJi4%cqg3)eF9R4q P] ` ~})$\G E!QIαO!QZU?lUy#Ҝ=y4ޖZ(Z(()h()()h((J()i()((ieRazkHKOAHΪp[eҳ[9 :E|59$uzYS$=*0̷+)3m U=י _*ȍ;6ҭlH*26$mnbgjvʽMZ/-[dWX!ܹ$5,Q$|QIsMOREQEQKE%%QEQERE%%&(J(6i8IblgPsJ<өh)ihJ(J(uk;ܙ#lYwWxST rj`94 s殯\vM.MQERRQEQKEQERQIKEQKEQE%RRQERIIIGz)iih)((J((Z(()ih()(((((J(J(J((Z(((((Z)i((Z((J()(JZ)i()(JJ)hZ((Z(((((Z(((((()h()h)h)(ZZ(Z))((()()()()((ZJ(J(J(ZZ(Z((()()()((J((Z()h()(((JJ)h(Z(((J()((((((((J((()((J((Z(J)h)((J)h)h)()h(Z(ZZ(Z))((J)h(Z(()((J((((((((ZJ()h(Z))((()())h)h((((((()(()h)h(()h(J(J((%QE-RQEQKERQIEQE-RQERQERQE-QERIIEQKEQE-RQKEQKEQKKE%%QIE%QEQEQEQEQE-RRKIEQEQERE%QEQEQEQEQERQE-QEQERIIEQE-RQEQKE-%RE%QIEQKEQE%-RQE-RRKIERRQEQEQIKEREQIEQIKEQKEQEQIEQEQKEQEQEQE-QKE%%QE--QERE%%RKEQERQEQE%QEQEQKEQEQE-RRERQIEQEQEQEQIEQIEQIEQERQE--RRERQIEQEQKEQEQERE%QE-RQE--QERRQEQEQEQEQKKKE%%RERRE%QEQEQEQEQIEQEQE-RQE-RQEQERE%-RQEQKE-%QEQE%--RE%QE--RE%QKE-%QEQKERIIE-RQE-QEQIE-QEQKEQEQIKE-%QKKERQE--QEQEQEQKE-%QE-RQE-RQERE%QEQIKE-%QEQEQEQKEQERE%RIIEQEQEQE-RQEQEQEQEQIEQE-RQEQEQEQEQE-QEQEQE-RQEQEQEQERQE-QERE%RE%RIIE-RQE-RQEQKE%%QEQKKEQKE%RQIEQIEQEQEQEQE-RQEQEQEQEQERIIE-RQEQEQEQEQEREQERQEQEQEQEQE-RQE-RQIEQE-RQEQEQEQIEQEQEQKEQE%---%RQIEQERQEW ?룮JZ)i()h)ViޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎ(Z((Zr-:N((((((((((((((()ʎ((((U/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2襢J()()iW*^u:((((((((((((((((Tt(()()iViW:N((((((((((((((()ʎJ(()hU-9{ө((((((((((((((((Qu¯$nr>ԅA`Ǩ* )=EIޝN((iW9iuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLREQIIEQKEQJN^u:((((((((((((((((S)QIEQERQE-RQJN^u:((((((((((((((((TuQEQEQE%RJN^u:((((((((((((((((S)QIE%QEQERQJ/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)QE%RE%RER*ӗ:N((((((((((((((()GE-RQE-QERIIJޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:)h)h)IE-R9iޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEeGEQIE%-RQERJN^u:((((((((((((((((TuQE--%%%--RQE-JSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2袊)h)h(UZrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2QERRKIEQIEJNS(((((((((((((((e2EQKEQKEQE*үzrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2襢((()iV{ҭ:N((((((((((((((()GEREQKE%RR*ӗ:N((((((((((((((()GEQKKE%%REQIJN^u:((((((((((((((((S)RRQE-QE%QKE*ҭ9{ө((((((((((((((((Q()()hZrӗ:N((((((((((((((()2(J(J)hU/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2襥J((U^SQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2袊)h())hZU/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:)h)h(UZrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2QE%QERQEQE-*ӖiuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLTtRQE-QEQIEN^ޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE ?뢮(((((((()(()h((J(((((((()(((((((Z(Z(((((((((((((((((((J(((((((((NQKEQEQERQEQKEQE%REQIGz)h(Z(Z)h(Z((()h(((()((((((REQEQEQEQERQE-RQE-QEQKEQEQEQEQEQEQEQEQERQKKE%QER (((((()((((((((((Z((((KEQEQEQEQEQEQEQE%REQEQEQEQEQEQEQIE--QKEQEQE-RQIEQEQEQEQEQEQEQEQEQEQEQEQE%REQEQEQEQEQEQEQERQE-QEQKEQEQIEQEQEQEQEQEQEQEQEQEQEQEQEQIEQE-QEQE%RE%REQEQEQE%RE%RE%REQEQEQEQEQEQEREQEQEQEQEQEQERE%QEQEQEQEQEQEQEQEQEQEQEQKEQEQEQEQEQERQE-w((((JJ(((((((((((((((Z(Z(((4gKEQEQEQEQEQEQEQEQIEQERQE-QEQEQEQEQEQEQEQKEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQKEQKEQEQEQEQEQERQE-QEQEQERQE-QEQEQEQEQEQEQEQEQIEQEQEQE%REQEQEQEQEQEQEQEQEQE%REQEQEQKEQEQEQEQE%REQEQEQEQEQEQEQEQEQKEQE%REQEQEQEQEQEQKEQE%REQEQEQKEQEQEQEQEQIEQERQE-RQE-QEQEQEQEQKEQKEQKEQEQEQEQEQIEQEQEQEQEQEQEQEQEQEQERQE-QEQEQEQEQEQEQEQEQERQE-QEQEQEQEQEQEQEQEQEQEQEQERQE-QEQEQEQEQEQEQEQEQEQEQEQIEQEQEREQEQEQEQEQEQEQEQEQE%RE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQE%REQEQEQERE%REQEQEQEQEQEQEQEQEQEQERQE-QEQEQEQEQEQIEQE-RQE-QEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQE%REQIEQEQEQEQEQEQE%REQEQEQEQEQEQEQEQEQEQERQE-QEQKEQEQEQEQKEQEQEQEQEQEQEQEQEQEQEQEQEQKEQEQEQE((((((((((J(((((((((Z((()h(((((((Z((((Z((()h((J((Z((J(J()h((((Z((((((J((((()()4Jm? өi((((Z(\QyRH <ƭƥQT듚 9=REQERE%REQIEQIEQEQEQEQIE--QEQEQEQKEQE%QEuF3' v(=Ju:()()(((((J QE-RQE-QEQE%REQEQEQEQEQEQEQEQIEQE-QEQE%QEQERQE-QEQEQEQEQEQIEQEQE ?諢(J((((((((((()h()((()h(Z((((Z((((Z()(((()(((Z((((((((Z((()h()(((((((((((((Z((((Z(((()(()h()((((((J((()(()h(Z(Z((((Z(((QEQEQEQEQIEQEQE%RE%QEQEQKEQEQIEQERQE-RQE-RQE-QEQEQIEQIEQERQE-QEQE%REQEQEQKEQEQIEQIEQEQEQEQEQEQKEQEQEQEQE%REQIEQEQEQKEQJzQE'z;EREQERQE-RQE-QEQEQEQEQEQIEQEQEQKEQEQERQE-QEQE%QEQE-RQEQKEQKEQE%REQEQEQEQEQEQE%RE%REQEQEQEQIEQIERE%%QEQEQEQE%REQIEQIEQEQKEQEb(()h(()((((((((()hьюh((()h((()h((J(()h()((((Z(Z(Z(()((J()h(Z(Z(Z((J(((()()((((Z((J()h()((J()h)h(Z((()h)h(((J(J()h(Z((J()h()()((()h(Z(((((J()h(((J(((E-QEQKEQEQIEQIEQEQKEQKEQEQERQE-RQEQEQEQEQEQEQIEQEQEQKEQEQIEQERQE-QEQGz((Z((()h((()h)h((((((((((Z()((((((J((((()h((J(((Z()((J(()h(Z(((((J()h((((((((J(()h(Z(Z(((()((J(((Z((()h((J(N(. ]rM2(=5-{j,kF~$+]'pO<`R\${Ŭp?*~vS7=zRْa,d(3s&m7so|TP O!?>j ›j"Gjm EsahU>Hhy{ļ"!׊ܵ X[{ֶV9.}ZRFY@P>ae=InLHSگ}cm;5=hժJ;ERE%QEQIEQIEQEQEQEQEQEQEQEQH OUbrt l7'W(arJpTu5w*A'g\.xF.6r v3.C`{fM3Yެ ׭Ro^ q=k2m]~̐bO8&wHʇl !pf5k?/l28w(+WM$Δdrtz.dAi'p$fSclIs5^sן4cd1nҫ"7*~5VD7";?P U";' {4doJGk`6GlRݩicSMqZ6/tɕIY aqWa+u`N*sqVkVRQE-QEQE%ފ((((()h(()(R0N*3g"Cv3lù2N zi8~r=Jǚ\y+Q+Ko ~fV;r痌9edN}<>n|ƛ 54ч2 dqщͼulF`flڶaY}v#,28ٷƄ ]M/HXS͑W+OKp̡=_P@X8crg1 }pM"6g)28HvtWaSL6Vb?B-Mg`y!Zy.*jJ()h(Z()(((()(((((&|2FP>³uIQCA>PFn*P]zV1Ā=+7hsDhN޸$]F)@g˟zf ހU%ft0yq;SUePI銽^mrd j H=*XWa[0z}k%)#\tQ54ufgִ4S$3#OW4r,-ôqHc^JH`B0_NrO.5نzZ5n(()((((Z(((J()h㞔Y*携bnq1*0BSYܭQA U(YcOJdpLշ) *o)*IVW~_洴U\0m6% &N}s0jC2XA9F*մgc_xYmۯF_ Ny銥,ұ;x+,q |!=u4krvr#^OK4c<hgߪg֯hM$ xqjޒKoB5- e@K+d)o7rbQKEQEQERQEQEQEQIEQEQKEQEQEQECxv?h:~5[QBGlqT2_ZLRyS8ȟc*qOg ?? q )ʮ,WȢhdlǼOBji䛉˸Or'LU]fK,n2WTÂpݴ".s ~Xȑr-lr}4aT)oxF@lD9#FT]H>f(wO3 Q@lͅSӬIo`\nK]܂ۘ*yncaWyvÍZPBġqګ+r>XWs]el8qs%e zvV-RQEQEREQIEQIEQEQEQEQEQKEQKE8F'w$ iI><3P+ v=+X66opT}M1ZVS"UM﹀ TIl;  h^k$+Az[&GG& fŷnߘҤXlJ2>VYۍݷ|#VeV;Ol^ydTB AV&E4tidӮzTwH|'T)uw|PE=E7q}?ֺd  ]7tUf]* JBz9;A5;Ơt=*Y"TLyV89?0 9Z5CIEQIEQE-RQE-RQE袊((()(((I[jEw'lS.ˉLU_@Ⱕ`rO.β`"ˌP3yRw7b~cF*8$fhrXyi'ޮ"v(բLITs_j} 2Ȝgw#TؘJɾiH֬hd GZL',$Y%[$ UMoz&HIA#}q޶ 7:0N\׽k=ɹH(O#9܀R@A 1̲ςrQֳ?:m,9axx4E{gppqL[#p#Qu0* |bk(()((((({ۚ)h((J()ONhTu`|xr*7*`,x'Y3% cȈW9Zkl-` ]!;j[DpHvJlJIY5Dm7MC99%A|1 \5^6FQr3ܞEGs# >6;[-Um+Wm: ֫D9%HVlN.G8]@eG׭3G`xd퇶7wIjޔ'j&.cs.c{{ 0\ cMiW]]%RE%QEQIEQIEQE-QEQEQEQEQEQGN(%Fd^|=z prŹ$~9yO+~ V+w;qڲ4QAb{c*3V5YR,rvi\,x*ܬkxS7<@8Wjy#"L,--˓NK4̹F2SS!.\}Zód"x՘4s8Ě{Wp/w( nR5dQofyAI+oM{qPޢvP~R_tF>kOO`.0 $lMeilؕsߊ±Q< :=,UnFK|7deup9&[R"qgTJԮֺ(((()((J()h((((Ap3B/ŽIfcϸD1CxYnTJG9Phsǭ1K1i𹪥F3;cɨ vo1n=)1e*{t['+gS@2L%Sm$N0=M7Ϻ}RRlS5M)i xh^wӋk7 oRZܭî[}m[:\oAdm"\K-k$;Ip隞 E(a>rݵ+%X˼dp`n>9-)g!s$㓉W̆-bDe#޷]WSYv0"f$NX ~5Y21F@kgZ6M+R*()((J((((J()h(((H wgVQLYn  F>CްeKsr8F8 $pe;6v :=*+eG.Lm ])/ !e<5&*e4gjV񶎲UPx0sFG q\9\XUbY_OEAebI$g qSk j8O WIbh!sݶR8^VP\bƧbE j U9QKEQE%RE%QEQE-Rw-RQE-QEQEQEQE-S]K15 [)iX{w5nNGT6^C _1L;ޡҳ&wu2;rt94L-2j՛ H#]niޙnJ:wC08z :Zl5UmԶ~POzo| BNh|%vYx` Dy1ZPʹ; <[7VQ+J52ܾf[i)&ʯz ov;c2Il` ĊM-uOi|Ĝ{u6XY'gvi$d:TQEQEQKEQEQEQIEQERQE-RQEQEh\o# U C ' I~\S1$9ka,4X5,21$XUZ48n;[Vq6MWܫ31 d Y_&fr9Ts;rT<6&U Y2r^5#3O8'V 4KH=꾐;7>EhidzԖCmcOҖIeyg6Ǔu Kd OU;e^s#($?ҴB%XsR`گKXcQ"Qde e\IY6qiy`)qQ/`Cvfsjr\q5gP>UUޭj(((J(((EQEQEQIEQE-RQEQҡϕqY"((?Ϊj@T!Y'aY 9#Q)%p @Fk^YtݨH G:>d6p?S?Xoc 1Y|:H?%9qRE@IP0?ӊوCH;{;+,  Jgn!B}+PF[Tp~֪C(SOlrkHE/$+ңE$*ب`;Qw_QɐA8kW~dY09=h706hd &s*Eef-ȪQrwdln'?Ҥ ߦIjIٗ0oO"WQ[QEQIEQEQEREQERQE-RQEQEQEQIEJOECwh|0*;İ=T<01=̚ cFɌmGK/ z5~#&\T*0023YI+ba03\=diw9Uc)AVyp'bgsV`8ؘ!Lw"##-~V?":#L-쌥LKrGsKpZ% 5p6x4Ɂc+V-Zv,KJoolJaLRrgi"pyyٰw1 9$Jxg,[`SLxTӴVӵI ȁXN$y9?ʩI#_,`z]TES4y]9"m#-#NB U ]Q@F=U`~IQ+w$1<8w1tpvH^()((J()h(((J(J(Zrޫ`Hpo_L[Es}(Q:2FI⦻q\A)u`{桿$: {ҙv%;ԲGRO2QR1Eڴq$yxcM%(qK,yΒBm4ŋqO w͋&+!=_,2K71V3'jcQ3~p#ޘ*X49ȭ +(Z(()((J(J((()(b^d`BVnsHT2Ƈ1Sma@=@F}iUi=M7OMBv.6㯷TIU  kPI !*v5c9ϵ2 K6]b2S^nFf \S+33` !3; ث6vLq튱omkpIsVxv0T_6ݰj{qL^ޣYQRFMEO.bm=*va{ Ea) 90HF ҳ?t/իLqB;TA$Ky#?ʠUPB@jH"bl`+c#^8QtQ0lU8XG/ϸt8?h c1IF=sZWCEQEQE%QEQEQEQEQE-RQEQEQEPxT7 wJ|,j䛱j8]sPY'S叿QF%F~V5sTvl(0r>c^rOҠ ZEFo U [d cW|ەiiU y*BrWZ3#Tiv ֤?աoΛ+C|r=9,]I*Oҙ#nޥO9 -I-,6k6a%l ިI[ރ+H? iZonn.%_[hL8*/a!]TcڱUGF;e s'0jKmX`c֔X0Ozrp=N8VܷU8@wQS0;/Jz>tշKEQE%QEQEQEQEQEQKEQE%QETrȨpj {W3,Q8gƫrEX͖\FĒKL\cZ8 Af=^-HRQ`H𬩤fy53Bsqު^LZ*ñFNH*m)|L2QrTIgRNJu,5h ?1`ɫ ?@5 riz>J*4ts;rEUx s^E2y !\pGA<(ƫ$穩X̹RDl:eQ\;f:Tl br*fv}jl-*.m=?TF)4;X O1?:@ U+V8wUtVYs\[kƫ1b661nQdCSsܓ5f>wrHY(((()h(()(Ҍz˻;:gJϽ ~\隩q8`6hI5^y)c9M1=7R}n'80lNqpyA0tx7f}ʤխ+5>OIrZi_%m=ZcI*2՝v[eXnLtiy!' a5~+R)h(()((((($ܨ8gvzZnZ$$B¨Mu;")7@jzeX!"2Ƭ:vqWQJNxZ ϥQF[98ϽsRsq;1ĚɝnOh@d^'y 2RO1 b_$\f2x?&11?QF ~A<Jȋ \ܱJ$hM6p}9F ?P냎ToQE=G08>㊖clF^^c6koQZEٞ/&C[# Ίp6JG&J;Jv1SzD0X4}Pk]#TaWBi}Z"Mr$H^r21ҰeFGa T$;5&Ұ#n2vPRJQ׌+n\UB6G}DnerˑE7Hw.xړJ.|QNa$k*T=(8Z2NqVTeɪ^GrAg45bFE&z֛Lr ;d0#-BP9q3T 2/v'$'a\zi׳r|Rtd_=*~WaOjҮºJJ((Z(Z((((͊~w*"$;ȏS*1g#jv!1aFqjhgs{֕vB|z* K ^}INiQEE)oS~%ÁPN++a^F0湫7-9U^*P.E{3^y#q"`{T5Ep=GLMo;  /7x5f^Hpw毫F+Nr2#n˕Q~42I>6\bPrX"-Q-' :RX[=ԷwI0 EI1Vz3XhYyTlddTXg'c|٬` joj**7zcCl}RZA#+F~Rk>OJ  Of5B_ȇ*zMiT B Un|N:UxZS323+GfzqNXץ ?ۉ{Vd&pZp˹< YpbxoSX@&݃gKZD9PI]К͜'gσT4n(J33!8Q4lOһ4P ,;fY.I> yoz{G,cy( GtFurp>+{՛3֮kuxg9rLIO5ZYb3ه5mrm$wUy0֝z$2ea)" w錐 ޱa.hrT~5EoX˻=TI1pg7]d ǭhLĩ.]Nz)2yAqK( $a|<FQ٤ ΪpHNypp*2>e+G\be#nzUKT,w7Rt{ (,%+B-a$d,^\.q}XABсq?ƴZY9MXU6P}D` #)B0zg72ms5$IGުRJ*5FXxܟC[ 9lc~L届22ub++xEl19Vts޳m9n[#T-9fow-[kkdP#lIAoH c*MqpK7\U{H̳4oJOmogx1JJZ5r=RvE {r?9 E:K11x$G%O$Sve~1ۯ FylL̡pAS-̎9{.mCn¬^##ҟuu 7}XXi6|sSG-0\HG͞<kc#XypӊHY/:6y%eBjr"\9✌""t>9Yv\TW!W8#,G]\S֨o2OGcPcFy!v}>%lбtk2ajB%[YңI}& +=|!Q 5~{hTҺ+A0im9_kX턁psͽK$<VuvčoOjϻKXVXoVl!+ _V"yYͭ#4F[!FݞԭjQz2iM_j/RzBI8ES ?cTF}jEB/qڮ lJz>0i5a5>J#'ҵ'{u9%zZx$`HJr,͊|30=59&٘ޑJ0#⢞41`vsQʃd AFV9\cenV⹔ys  ٨ Ep:JO~ z8>_̛$pj2A *HwUò=j݄ff$PA޻ k^~W* Z,.>[ ޺{eSݚee/:*qyH9T茮<Ў1\F+1okMakBL7R9cXngqw#4Q%@+nw,1K^ܣ +ږnB\),\#.N85j7FHힵ%շ>j[y8OKXvm\Njt;Bj70n"٨.?³2Lqy6o=*NFlݕ`N t*F}*v県< V-xv[L=~Gb{@N BcCjV#+=e|j\çإ(Б48Tӊ|]5G!v@HG[9CPNy"nX|rsT0}M2-0}hO\tPqt4{ 8!G#YnLLw$͏f9 ϵ}zUHyy>^8@<ʥ+u}Lֆҗߦjח j2О3An{ҘXݲ@=OM,rsҠ捤 A9RC2q1nxjec4W]a^yncʗUcA%jU'#'\ vj.a#ܫ0{]`@i9#W  FIje-.8 o[ 8e'j[3XzEc_B~a>y q1Wc}kOF[NA]=.B%M#n1YVmm$|8*j[2Kǃ֬04ZdVmU~HY[~´^"omP: /r)=ǵ%©y=^y+Νvv}ꇈ{;*/;gL簪#koJ-,`v Zŷ b˜n nX[pjPZ!g$UkF$| 1Ү56`T yQsX{ә`M4ڲcM?xyWPR(hqZZȐ[Ơƿ;cjz,1 #\,rI!;M<;IIbVy^?6 UFz@d E*mHm`"8)YGMҙ +V#[IBW$sڦȟgVغa&2OZ;?m% zjsԚFGnbc,[R52Tvj5rdg9֫3<3r2x*̒m9^6v~$e;hhrYFI =saq0ɱYTTn ppJ$ cQTZm#jlX"=T(;GU  6NWQNH }x$0iqdq8UW!w#{ҤxP8`PQv,xXۢׄ "q޳.ٓ[wV7Gpϻz$(;{ ޝr`qye\S$#h >0ǵWM"_1CUncU/1ޫ^bQu-’Uyf`aޠ}:yd2c@2+J<; N]@j}>fDnj;V5$Wltbk"KvгM6c\sK4Ӡi3\c =+9݌X唞³fc$I e+dN]nb>7$fZᶌV.c ,+WW6$x,W+>$|qTG#?X9\:m=+27 lЍe#rSFͬ%Rb,e {yyQ `gkASҫ\#w'X)c^Kр =pjcϥKw`zT:Ҥ$ajggCYHʏq\F=zTэ1NzT/̗ARD|ﻃ#Ct#|RvI1ys3J]@e!'X!elzT,tGG8ުZIGֶ27s;w+գ~.,;UfPc}*ԅ ǿ@ ^x;NfVߍmP[n1RY^_Tg+SF! ?*us#v~P d, QheY_&VO8T?+F֢͓+pXerI UCUU-zrpj)2&n˹Soh 0[!qɧ&B}b[x1먖HrV pㅝҧ>9\FmnqMl Z*wݏkIz=*) Fb^y©רD<6]/rB) KG# Cjt'ۥBk0'$ [T&?6IHZT 9J)8$ø;d'9穬Y94FLJ.VR>qW-CpfZ>܎2SdGU:xZȱ/QB),K3itZȭġ=1ΰ7ɻE. Ƨn*]RUe{Mد#o 1*\G*G˹.ӟҪo4Ԕ*o0l{B&dPM.ϏqI4N1R;<ӓbr AQKD7KzTrCFqX.UJ8;􅕉ځ=qP#! 2i2OOϩ*@߽[pȪ޼gڲdr=*1-VHԄ'SS"&8sL3?z$`wU(S6wY@]ñG$j|oJcHX;Ҭڂ-Y˞2JPǧ4zJh,:Pp@\7$~OCH\>een#pO|,3l|n?GHUH'B˹TλXt&S\)o`*I`3~sXnPFcY8*xe;Pk2\gfrd jZηYy hʷ ;$qSK}ם:#V<#E=/#M6>RM60nFzhE WW$Tw&DgP[2]< -ùlZ 3g`8#`@E=9OxHfNxrpHҬEU7trSW)Ugف zJʳ*+hLRʹ$t"8RȹlT`\O"&񐱞:sV-l#M9g;"n~$$8gGZثyc5(0r5?**Ò`~4CʖB 4QU|?HFFpzU}=N1VlDxxjPѷ@NjrStffH7~QVH 'Z~0p@J#{iȲ;Cz~ً#KMJI?:aLZxaM RNG\Ozq8T%%“8*ۥhEЄ jkVw# t^j*ERҢTM>$fDQP}ilʨ@sJoTqP39LQ4K1g;[fN2ĻPP2InHY0rSupU*-n3kiUrȫ8fU Sָ9%djc#Or;MNJsR-)m0*)b,GV:eCH}ifU(X)Ъe3Ig4tU̝F9dpB!0Btry ) QY/w֤!k͐:Q^J0#-EFW9ޣ*iwʬx/{zc;8#sWKm3Ɉ̽y,WQ1S۵^jnerZ!62n!ۄo53- ךg4hىA> 8n@6V8On*S!5;E+B&??5.U4[Ǣ z\fYV(0ڣoy(z4,` 1]@U16ci+,j6ٿ= +x}0qSLόW*{T%Uyː|áq/{֭xJOzhps>Ҩġ:U;wp;Ev])W A YWCu"_dkJlt%zؒlaW?9g@zՍIRpNݠtUB1`0E:D6ՇZyT{o4vjO@u_%V}?5IQq}}i'ǚXv}zV:wx[>YqcҲS>* epY]  \.O)ީ܍ZFUѰTm94 yǏ֥TRB'>HdPN1Զă8ZOJ3ZrHIjB걳ǫgTHup95$E| 1zCi'9g:|urѰ+|tv]Ivm|v1 ZdsXQ<֡;6(6FK{hH]RhL.N}Đu5yL-RRq2R1F0-!2?P:0_lv/&LNQ PzT)Z2{ZO|Ӻ>[gǠi*^+p*:]pz8>6! ߭+.O$`w`V.0,JJ}f1XpiR] tHճ>ج[{#,csYm$sTu2QSq XvqvbzcZFkiIvZ 3 Zo/m Juʑx$G\G0 j!d.Ћj?)V^ZP3p$*kV:e.?V6N{RrPg֪L#d2d֡d2;eչ\@vrW.>!/_N:#U8ߍ8' H*ilر(~wFHE?Lrᑰ >veޯH7Cvт{jӰ/q8'ӐrT9ebڢ~!+ݩacbB989RQ+UxX Gj{9۟*̿-AO~<,9g)C09 *4-2(w^B b L%ye!tXf$l>2 =)ay1<*/:Iq$1ey$񊲟+dqZ+׀Eh(C}2*?{NjԂ3hi U`PB.qrW5^CtTfEO{EL;{TOa)O #f'3WԞ[t0ٰ&=h‘ޣ5#-^ŕ 0_íAup'.:nX[Z$olu#88z!o.t$ʻ{ E]C՛|RG&ݸBj"[#vQueR0Cc O0$y4:Q<&<{GjgW j%ssQzTeFH/4FsMTV$3cR[}s[j1 [VHϸ} TV p7֯ꌱnNj*BHq+*;$j(p:#(cP}9h mH}:V8CqNjęmzqy܄ ÐG\p+JV :!1jXSF P]F%U Tw"8Dٶ"[Қd8#Vhc"1#A,8Fٺc5JiMz4,fQ4"`jxhĻڬDڕ 1S㑱*RN=`"% fJda۵I CfjFX ;Žب/vw; F1',NSIl)md Nݰ2I*=Ī$f{< ;I j[\D!M=F)î{z$:I"Pp¡Y`%B~PyJBKC dR(=9PbpjhTA+3pnbX#rejHKG@ |b3X{9KNV1l -G(/f; :Z!K}NO8$ ,K}sfG(ެ@jS"1Ĭ.~5"թ+Iq ?*3Š ]Mdװf[}ځRj̸e}B=XjVN8c/ kA"% 2*D0*xʙ 2N;Q|젂 qIX2i 0G:y6Z٢D$@~KkA*nge&p2154sN?fResOa֚r~\?ίMAdVt*(8ofƟg- '' 6(~Z^ \HŸg_ʦdC1P:7jER >%{FȌFޫy-s zDfGxz69#C:{̭q瑼ALr=Vɨ|IoZi#zRAg-i]NOAM ֣JPpҬ<*5Ieg3Gvӫ˜Vn-[ː==k?KGIF+Ul^l;֋Dd5o,ME'z=>HVyKT RVɜqڤ1,λM!qF8g. 6TwڼTB5C=1Jz;^ax=1K5[O<6\=)mAg#6im;m$.~F8?i$65xv)Zҍ3/G=ѓi\NHڴ!-ZFc\ ,b4T6Jt{yEe'RfA:̞c8!:4B ʵ*<* pGxj[CM?moxQ?U}Cnc%eĘ'٥B1;yO%3JG9JC)={Xd2?ZiAj]`*JJ@c;Ӑ,8 {T+qrju$b28㩨Nd 16R)lHG^N&8n֦Wo5wF p?JJ\lթ2:>٭GdR3s. :UddSfXל*M#|48TFpMYIqRAH 8‘OMf'E, * H>ZqGMLS`2$K62p^;WvwE\s3W6U@V/CXs&Y3e؜ Y9]Nxl溙aF#=qޝg0$cIu#9#NFM[j[XZ^c gHWvPA4F7 cޜ|OYvB x_ 10ƩϖBYy'N3WW6l`ckw59BVymm>66ϔJ}(9' ޕk2YfL)YfL|}j"JPq&7C`8Wthm9蘪B׫Q! Tڤ¨P2`HHc+@9\|02<$182K=+qݕ>Oj\:!ջV ͎O5їa|u'Lxƥmʀoo,FyE9Aj"1D71})ӿ${v;P;NQ㊸ܧ̮dS|Ù1TnBBXJ"0m'UY#2(B Vm`>Kt@'#֝u!PJudSHddRm/aڢ4C);MõA5m.wQڳIw+׭SۨFXdSg&, zֽ#Zr.TMLĪ)cH@%Ijqؓ9*VjC*[-d'r``e5kO,L(*e?jl#p9^ J.LwJϺwA4# Tnd|a$D8fi?p#8$cMj$FM6'5g16p^4p?C6^DSRmW=jw6#d8YT%L;d$A櫳$TIY A#`j9TeV.G|&G6U+p7V)YI?Q麣e,1f`LZs,c|P>*ΠD8K"TP_Ds ±Qjq@lNe^֓&Y]gEK{),<ɀ*AUlVyqnWVKÖӏ֫,=N?O֫%\]!VBӥjD5*~PZȦY؏“QFtvgsn9Gyptb;WHccj/znBv6nR=-A AwjR . 7$y-[Rq[ڿŴi'/aKBTܧjh ㊈ xt*Om8lAބr*'$)," ܪ̿7~ jvRURyAԦ5YfEXf3ZvS"DTSzEXf sXFc=k'RVizbt@j2Dҳ+6?:GyA?:vsS&$ZY71$ӡCp!vs;V+t(;Hi >E,2nԢ2!#X\#wk]b QEhIHlf\yOx.[70'hR;_$*;_뚕Զ1WAd〵eɅs;.pUD H^wXsޓi;zT762cfPd8,).5p"~vzf!iky;;vV|mU55˳d5glffs5-')n^5#nQ   W$IsqGQ$}*%]1Ҩa>dZnpjZ6"R<jIgk<*qKk嗚WiGJ&bu''q\[){imjLno,kWQO#NYL֮<;Ló_X?汭Fڣv+ZW[im,~b3YۦOjž-s]Xc01s;v4~yni Hǒx3,]r[f-luse~ I e@ϽXӷ @ϽMkL.\z/Yz78||@: n$loUn{rl^g%UitV󠜻ղIRgζq%'ڤHٲw7Է퉙x=K-#B1Ӧ2[;H qnRY ʺN,z|)Z-,Уoi98u~kQigݙ$OW[KXS'sSpb*TUV`@UtJG ҹc:t`D EA=z,veV;2;T9+T+vtdHޕj"M#/P4a9>]9" Ay{t e2Io ͍גx"5Bf9qnd񻎼cڥpP@RO= NRHXԭp=)='d`𤙚[umI;on\Β!3Ⱜ?Iw5%U-a]~:Km{WSc"a*ex 7 GUYj+.U|MVEpPfO@Vuzn8}:GFTJe$^\D*Jkf٤H_,U4J!k VF{J7)jjϥ0<;hS;H?9XNb9U-2땕}:M6Ϲ&,}1Zykir1j(^ႎk8gb!bIQҢIV<bP=*)Xr[wZi髩L1۵E-wҸeE htKip̣imgjo恲HB*{<!_LzU -nh]-gm/*ڝeyIrݩlt\sNU{ּN$%RGO_:Vlp1åO$k[8@tԖ6{ПNNY/?u>jYkl "7yp86*w]ܵDz1R8<椆b=U7oT3Qג<ͻ?LU8Myn-s`j=751cf:j'>`)/];R[KcIcT>njH^$GхNѴKFC'矺;UyxC'׏jKh/{%nZH4)Fu$ $ U5Tsz֮!9l$@)֛$o,8 85SCtwL8I1+[U)>&B1֭zTqT٩ 9 S)w-NM5ചǿ6=sUH٣iTB<֨#_%AbG;@"CY#K&ϳF74(+*êa'l2|jmS΋;c~ӃY캯q1ޠHx`+SRԚ_ֵ/o脇F X C X'ڣd1.NH[,zf9cɤa=(a3ݩb o-c?tH9euBp6HPp3 s"VHK%T=ia98#?>BpVp嘌u-0"a=#Ul9,A'j+˽]ڢY@xhSoz>A\U,-c[q5V;[y*rN̞5 +6Z&6lZ["qҩ(S9g1e2sX LI \9ϯKc7p1E$SL_1~0I)y[-yr/r L?lBv\Q4 3cATc{ə:Xԅ?(86lȤH<,zsKEfAnqW̊6o0n<⠕i$jr^@䓒Ly52`Ir}zюܛEw; 6~SY^=!c}q6&58F鮦 vճäJ3r=jg;zw2ƝR) NvÀqowvUrJu+֧^%T,Bu`sN0$.Eۥ-:D*Hc"H<`9"$H班Pq֪A0BgZ-ӏ-dd`kKr7ڡAhUѭ=>ѥ$+j;aT~u!`ٺXyP[HX ¦y9%~V''w5]˷'=JɼYj'=If2<T$yYdc*ñ N2[?§ɈrzM2ǡ=?WdQe` U[Txq0ܾ?Vn]c<_iދ* N'k{UDp]DT\~nG_; z6GO֟ !篽:3Nbp@>tgl20*+ 'QNs@0/O&+0q-ݿOL9{dEG֛[{ e@mکyPF ͕s~Ue%\ 3vjiXrAk6m>ORB\=Q-8'mØXP #. kYG0 )6LlO `73TwV ߐu K tP{|*?_>1figeŸ@ >Yf)fe>Ӣe$ObVIdf>kI`MhA>265Uu9~u Mמ^ gM©=֡B FQUGss-FU@U9g{˨y bXQ PABBX0KcQ1t \ս*I"+ۂWlPcrEZDB3 sZWPlqPXY#o1ڡRw1$dK1%I%*]l*Fu88s!xw "q7;M=Йƒ$[Ai3Hg֭x_@wɸ%+; >\YZ8';qT!s ET(=Xp{S+`84*U YBV55nRHFw `NTLWԎ"*lܪ?J;7.VI2zl+,`vqX;o`+R;o |ƴh0 A5csoi D+x(͞4M1sVQs&r61J2-ٹzuZC*!$WU;]10=+ϿS_\TL1u8bzȸ oEb:w58'q!`PqU.-ffJ4끒1e\Aro-WM.Ur3x W?LJjGAocP}XwwPZKudm$\f5;P sȹq*G!{,Vvya*jm>%Q<8#==j{(m$yq+ uSˬ+#{+3Q2r*8/4qbF^dU,T`8Tlc0KNp"hT($mDM9۶>/L4Oxc(_Zh!$}O9=j/6=1֪s @?Sv, sIelT7 v2O,;T)TKtg,{.[4v !-A*Bc8U93M `:#˰?4+*d΢|@Qc̜Ңnyj0nZ$".r:4by u=?Uef}MBdă XTɓKgBM:IbJR<ʹmI;h6m"/˞Ү2MJfq}sɥR򀯒6κIfgq$(릒I wxHf4qґ`uO6PV3VD{zֵߦ3Vƨ 1ZҲ4 Z6e&A87 x ,FH"O"UdU | dB-fEKX(xq?tMIē@Q !pg-)YTIYۂ*q`槈m@j{WEHG).x?* ,6÷+:(ty'؜W9b]~gA^<Bl]ݰXəRZ3dY2tVw,eD=jY N@SiD5KÐl3n .ZIbztGF*-ZKXx_Uw!TGA]I< ^ 0;Y.ɥ~g`cZy?J"?AFE^qqq=zM3XmV'90]Il隒7HКXT;X`{S%l2^Ugsp3ޫ#H*?eHظD۵ 3AϨc#y?+N8dnz#y;u? wM2#hNi SQg+HˆU7nZ#HdW?"3Ҟȶf"$@8ޥdX% gufW(Kֳ/'Y"u uV9 ) o&Qz .KIQS苙 Mh\j0;mS@j܈Ua#pjO6 u u /ʊ=kKUGc]%U/ʪ+b-ÉX3lVKO;!\{ona:˪{LmԎSo#?Q m ZH 0[5S"sPHE=Y'C'$؎=9+y~4F`ݻv~`qʢF @8P6)(rLl6;s).XGPJWjsW>S-0zH +JO=ҙ0{u2H,Bjވi繓LՍ(oigc\ШeT* ǎ̑FOʤn&uGϒƹ)nFI5<>d`k\buEL`z hUpέEp urnyg%_hs5gH\\7rxz|i[h";G 55Ǚ,1FW>ٮ Ajk\[*roMWi/-bӬ_ =;U{ e[rZ-clH2Qe<y.vEb43ږ{9Y'Bi#؋4lcw4cb%!*zZ?!6G'ʢ V,wɓT,c$~jJļ2E^ӖI, f jmǟ>̒*xc%E<Ԛ( 5%yU/^ 0ǵDX*Zc0DR[D>s]zT4{V/˕׹\%{ٷڐ -W$+2Ovj#l^{.сZ6Wo0;ӂ:־<@3Z6wm*ki>N]@qևR-aOT( : g8jdDj!ؑr9.]MK!=H9n$il&.&v~X}ne A0橤kHF~Gҳ69BKb)i(cR£W*79SJۈJ>6MF́Nc8BvydJ)2?w1*ҸWqǭ ^M&:KUZޕ8*MQ5cJe"=lY)\sn(\s&w9<X|&I'hEf;άo,ܚ-DG) 5mk뱂ȧ׵\M29[]S[[!p8ǧzg&cUw'PLijdOSUlrjXKO})K*2jHʃڦ/o8Z[I28 sv 'Fr{,S|lp9Hhʤ[ MʤEW>vTOT9,6)5$j<_,w51`h iqTyM3p.89nO\SnU;< i'p n Y8=ErǞ:pv,zՌ'$N@Un y ^v`qU@%szT=G\dlҶLCh<d59vuQ~kgA0sBjm=q֞NJGz j>R0ކn0iBi ;>S(k " wʢuE ?]6F a]\̒ $=x<5S㍤>Tϥ@*S'd̀T,1R'P4aTQ'GNYZw* 攒*M;dnI4m!X CMZ=>7NtrE ջ$2Ja{ޠJ,Qf ԫw1z f2/J UmZQ=EB&g1F>D5)F'9X%L͒I?ZOfHǯj."w (m;*.X, ³RFS$%$o~{Vc\< ;ǁE$x5n Qu/$օ]91 5v0Aκ͉Qt+.f2"=g\Nz":V1<+S|TzMBt{SdPLu p:(?j688Rip:u&AB!JBlgǚ\U3 ]?"zՓY?*Y5A)9nYrrAGnm˽WR܃Jz]#4d+\xi=r2c[ H F0 G)pJq)H>^E68d'S$q44آg$ noJ@#V,)OzTlOx$#_M@n u5~(Z/+J0֒ vn}j}tUŸunk0ng+\D>\}~u#n17tUqtϭG!Āj9ThI-К`$0<Ӏ;)q3\ߚUN1*qJi%g4p:I^A}*>C'N$Xg~UR&#ҘHp8P{)qOFqRiN |^iAjr:R\Cf`?Z|`I4qyjH@{=: *0~ ֧ʋȾ]ߑZ:<*bn/a8)Zٹ!-q9a?y?VIF+68#7Ñ֩^,qyz„of>V<_1cRI+!/&Y%=l^`Genc^dnIQF4穩Z_%6F2ƫܵڴJ)LOvwˈXCArM* L>b{VҤzEa>=6P ,MLxQ}é#HZd[JYsO;OH\x[UvmU)u]sQڣ›Ά{B[A<5oi5_Ŗg[v~!Uq9]& 9z}:Tȩ(皵wڤHZX* zϺYxdsi+ڳ-VL0GN{r-kkKټr~\`֝@w$Ҳvm0Jfڧ:vA Tp;TlwnG5T=*7Rsi`0 z`5"ME~oޫd|3#=}5* }Ǘi@ Dt;G֜{jm"3>FR2XGJjw|r?ZG_,|?h 8\RbU⛬]}v֊+m;te%#Ni#Y+'y" K䝼6KdVdd= W\Ry"ާ+eX3#c2%H>a$Y*H5c,n%'sSm8]GR(~vjE?OSa~F@nt"ڨj oq E,E7Ubb3UylQɪr\H_dQ->%[e^Xqp_M$(8!VN9Qne8ZֻB29% մY`"8^hۆsH ?: Z`䞪:T|2ڬIoM *ejy&F*99,)%)22"XtE{,dZGjVJ'*# %ہ;ǥf9Aު`})Lgi$qS y8ґېpq\/5|bQQLA)dc_jP<1S`M|ci#p1I@8׊Aԃ%9d 1L*c ˴j1U,F2x6dڗҜOjU-9A>jHp~VcVF%nr:Uq[C c{rubqom& 7'jYXҴRHIgaWBK-[n(e06^+bI% W'KVmq*X5iG*Nid2=Dp~Y[)@͖ h9nW9?h[Ɏ۹vD8䴥9XT)8=] K&qVS\ǵeCy"U@Ⲣ2Y` +5/!PO@Uv.GקAu~&1C5H*~Q`n>&!1vJ奸Aҧ?z?Y,9m|w#aQ)*w`aycWde "|ޯ3 AޒG@٤rmi#5kܟJ<0xs߽4Úc*9p {_-2N@UFVyqV|銪/RF04HxfiAS͑WN/'Jr\IgaKs#S,^8; N>E+05&hnLe7e"H?tׂ7]ƪ0wSgeDC[𨮵re mΠDa! r;Rٸr 3K˖r#=2;~[ pSr9 O'“2O!X]5x-:UTw9SZ6RD*89<;;T+H+dR~xQ֬vj֧o=⤝d;u?Oz߯^j[mvֲa$89R9:*px=+"d ͎oϸRCp-(+s&Fjdk$-О™kk7c%U=MC;nX;Uif''_j3Is)Ҷ"8m3p~I=h̲rOnTqZ(؃VӢ[HXIU![ȩbx=\4mGמkuʞ[D+ch"=9A̟02c)'>)p"q=j1`uYw[w3p{Iw9z@YUn{A?V=U~jXȳSD6Cp ~4"Q029 SJa8#݌u SA 5JGuG튨Fj r4I֤w<'3Lʞj@Jc"YݮHVs[2:26pI>خB* r& XC$03ǩZ/rȡ=buGp?OQvCh .;Hb=&0s,'44HFEi_T EҴ*@p TڠY:쑻եX*[$9Y:##5 d,y)=k;,Aqpl*KkdzpYcXsMe))݈nk9vȤ ݍ`\Zi!Y<ޑ}ڢtU\/ ˑx5}p*Xg"T2ߊjA0Hm$HqԮlcOa5I!S\)@< ?3w`#֚sۊj'Jl?*G'I+zyfYSUTi [NJBsT2i0IlguUc)v4*.KִSOXP}ȫg墳F>A[W30jݾJp=8kImPcsI`aBI'&=IaBNKK5|:m\CFqi >Xӥ.*?D#cn#3S|9HxiKƴRE |8E8Aw Y:s\#׽s@߽:iJTӤr$F55-q޶ETnpY1!wm[q"tKɅ°/ZMORR 𢱯UXW~ief/~YۭĽ5=XhҊ+#X7- @w=sNmH'Y:7=@3IoJC8 3ozn{ [>-s2zۈ"`{~?Bdc^"4WalB,[EYaCVG,bS1,R#027SSImmdkQyzj9?tǦ+Ҷ)`wU/] -HXT|Uv#F T&#`SX L0W5'I]~URwp8SZo֤(`45Z.#ﴥsTn/ fen tļv)׸Y~WO֠VrqYYNUi37SC`jw$zF2zqJXG4dg ֔ Ci;PSOqL?vBE Q| Q@7MP,Kx#dlcNqL*ʮ9Q `TRX``#38QjK_EۛoM]Qsl®ih>yDTP0vQFF WR#@`+.|Ԝ,|UfP.k>m?,}WFʇGzM]8XCdڗIG7іrU[6!5VHʼn%3Un*:BMyQ Q`ukC@CD#9*iltn &ɤirOF;U$dObLONӭ1~շú U=ORKEQI(^3ի'0?U5ӷTH Re=kjh>vq[Zܭd'#=JIR .OcLbe{bbAcӸt_5$kzDjk[ۤj~b(IRTQEQEQEڭ8 ]Bo #hUo'hă :W*[4pT ╈)Xx<`g҅^!#sA#LJ~\tj9RsUp?V{Ԅ%p)pH?'@SfmQܾi3h~b}ovTqWS!emʶ0JВEK;`+Ni˹Jg8BY2뇙r.׬ǕRMy+J%(tm)s'7*gVF*+Y2IFsc'Cq'hnfycgƯxzѥ"չ. WA&?̌*԰tہ|iY]2ѣ4\?KDžsZ\b$Vb#WVm~l%qP_B.-;Wq e7&*⹣k47qX aL+R{x~5a{p%}z0?ε.e|$z!Lf 7꺰BDjC* z}IRR(RgL3hYu+xa*@`q!E'vH.cj=pg]j2#s1Mv[;9ltYyU 0PAJR ֗.r?:o3֡8NTSx޵X8:$bWVV IaRd 98'QvҖRʋQ e`UUUw"q]PP8u?-,GJEOQYZUFFZ!i8B[5U\Id$2CoL=Jc7#y7#h f"5 bf$y_JPQvn\> HBV޴|0B`y `XjMqiGsRiR` RkmMMo,`E] *xzd]#Q¦Sk8*b]FDs>OJԵK;jWx%ڭ4A$y0&BSڛE }CҶͻ }qs[ <$e\IL`yWKw.O8Xa'lkT]\Ͷ>r%pwZ/c֯G`9//aLwe/\FEGsugҳYfH`oHj #+YY-8ۅvϫ6A:\vb}U|5zᮐN=+OKkLUp:+YRդy^Dx;-fY.u37zf9Vef_-IA = $pߥO,PrZdyiPRL尾 XWmus' Zgj'JB[9m{U9FFܸ$UI#F_Uk٘U.s;1CprjqrCn9*QtQë}*UccW$RSҫH]>RBn= TskzsUH{UgD$Uw ┢o+O =Z={Ҙ8!LnaOZ%F;{KhYv2jȊK2#EU:‚Z cUɐuVu&dGhZVwp]4`H+\0o~5kP:}+ ?8L*3V*<\w.)g9ZBFLB~S4~SU09 c**qPkezqQ^EDzU@M'4vOnnucU2:P~5P`B7QW#_ |v^k8Hu4Amy ެY¶$xy г,tf?y?O?[-4H,q1[DD{ihXJy}s&h+c]-+-}(g$%Kj[hBϜm[].\G.|F=EKa{{ra]e{ɑѴ {#O-s'Wte7W3J/Vt9%W`ϭTէkm#sgrs|f=SoRx,pkM4Q/_$ĺ2}X֤jy1ƿaHQUTeGZзUFrjP$@m82\i Ai|wn@5嘺pk5ecɣC#i:VS(1㌑Kmqt=H:Y~5dhHn`hgm-w>sXZ;ebI{Ufe =jJi1pi҂Ux=~MbcsOzCҙI-PWOOoZScHjҫ1/jL?n`hqbIpGl~/.K[Z[$fPj(+]&"e 1[ ~m!y88IMQariڕKld:p2MèeVf{3ˮj;Zme}VgᎢM&ĝQ%d%[7!kX*,9VS4dH_i 5ooK ,ձ*جwz#3U;WHr=VX59o2l+QjߎTnQ[ `E->r^ٕdde;7Q4k=!SXS=k9`2ڭ;Wݴ=&vk> YCHuoٔdZ$U}Gzyz+dqpYSeoZ϶{5 ֺ+Kmmֶc@jmԁltQ0F^]є`i̐ ~f_OJib8NO $)- >y{''d&Z,sU ȽƺKi; ?/oӎ+MˀOYvXW,\pzr"kwC;pI$!9y!a[HG?e]IHV#ݬ!*dN"vQ -"1G sv֝c 0_?w}; >堰)XJh;PjriӅ3acչ, 2A$]ƭioۜ̀uɫ4tr6ս5NU^㸫z2\*ޘF8+U=*jw~Ъ&?JuAo#۪3OLU;!~lu靐XW *3鏭e$Q#HY'нv@w&(x&]{l`v=ik}ȨDuESғTbxL*(qx%iӷEijZepijzSU NMfkvdsO5O[6i{m$Rw75=wYL$ s֭[[ffI׊ S'+F/rۉA=띄''{ bs֮]y c'j໸fZ,.>AN`nm z'cR[̦ Asl)UYlU XFX K+cS@UYp0JyﶖE r@ ҕp%RHˁ})$ F)yqOBN8 Sz~5O-, P:Od+GZǖ);E"BU i2EPYUXdx?k62瀫*)nykBV٧@.Z2m-6 ; +KA._OPJHVnOW.s[G>B[ySHnbn*пtU4:Dti ʩ#Tt]*T$Rʩ#U4:Ddy xֳ 8ʞս$k,eeOjeWRaU3Umrjm J7AVfjj 'Ʊ5mYqRcPܳ3YO  agur=kck] ;V}2:lsGZȝ9c=k>v(*czܗg%fi vcR\䟘Y2HLU9=tvm2GJNr[*w[*dm,?Ug[-GN( 5iov+Fkk*Jpn,]݌*Le\uao!`wg$VqC$$36e"<҈w;@􍧛^I871.> eQ>+5ϸpZhwInwJEM *m.DR2$nBF bTO~ґFQ_j@2McP2N:SZc;ri!T,qi,Fk􍋷ZZ &k5dH_IۘTw5 ͸Mprf.>#X8\~ b݉ؿFym )Bbxy1 qSbv||sW4+3#}OYѬaSO62SlpP۩M>R V4>\+GLӡК0Ļbsх\Fh$-@=Pd*'SQʪx}[1<+kKfہ7Hfq%BvHs.|RXӪJ}QEU-V2\ѝ߅foYUr~KSt"@2PvV-QvtYG#n*593t~]Y9V:ܛdS^9XwlFi kf fص1ldnbA5b+:p3S[̫XurwƲa0~5,%56?,TH$RW~2ͪ}4sM֙ D|*{2oOq%<⧹03I}+r_Im2O c1黩~gP8?I}Iʈp8ݢX^dC=dT<1fGGR~_jyjsr1Qߔ qqɤI] sB pv'u5pIC1X5҉f$)e >XZiZ'+gNÊd]˞Jr푓a |QƠGpWؘ2bmZf;;v Jq+{CaT5YXS}]VXc3TuujZƜ\W=HҮHռܑ[OZs qQh R?_ÑK4jnfh;EC:E捺 בPE;ozfT?b? mN3VյL+=q,nqqٵf^'57֭TQE# )V` 0z+ {y4V9Sٮ~KVd3$[Ok{ HMogOJژx\I;)pͪ81r27*Է2fVcb1Snc9mKRF#v?Zl >H[7j!T_ V栂N4V"T^A/1XwœVoTJyWAz {iz f[QfḶxeeūĒ(,ּS@чVpk].c$ `- Ack7i ME2NCn6P|*Xwj%Yޅd ZmJZ-vVlx nrHQBU5g4'kgM'g' ǜ=ir; .)KmZ~9 2G!}媣 UF 2CW[t>^2UF&3z j5G?jTqSYS['+"m/?Yw)PPq1QbTiJGsQ)FWu -hxXgdGAYzDjnu؇4tfs+d^hnOK%(CҦ[EFZ3֤c/ʣ=j^KaO|09>Gat~_zVbŐ8&VVǜ[\|}]xk|S&X9⵬&-< rpM#0[X7<*5V[X6)$B5fSySBsZzvs49VBquj.czdun1lҴ([85\][?QyȬs ah$gQoZ>(H-NO(Hȷ~9mȶ~y=}+KGAINHc]7^UaM'T(N$U2y>wphxP~ V6jlrH9md?zTw}C5^EHcV'"yʱqKch׋X'XpA9a]] 1l6(0 ;E~l`W*ss0OΩ+sԭACr9櫰p1*6W H*2Nbd|8A摎M!;SPNL9njN֡=z3g5]zӴ+6-ub6ZvdDO8Rvl@yXHeȬcyuf-foZaY.ƒ\v-"M{htb}"tDVrC_D(G)Z# 2cVsۈPvmg=65[ [!yv{hVɸOZ,L[N2j G g2=IO${pVv(MQsw/T>\823ʲZeovOae5X(rWmr -~6VbSի B#,@}*͝Y1d\ԳJ F4vfqV4e!zniPzԻ0 ؽw0i]]kÁ+O<_JmfIȉx]tH8OP0GNLr$go/;*&}+[KX!@F @)R0рߕjو0F k>]12Oy-te՟&̹B˟ҵaM5gg 6նG55X`=Mq>P3S\(.q ֆG5WcUռ23ź7db@jO\⠇rųҠcC&deT0OKmu5 XqZ.Bž@7 lRG@:k q w!REZry'ң@vSQ[۴HksK1-܅HXS?S*<  [zY\J@?wGi-S\3q}J!_jfXs*hb+'Ҡ#AnbYc$Qt圶Nv|r+w'>e"c-'k^'#wj q#Yp%y 4AcCđA3w9*Q[C!9܃'bc!8cOkH.RA{rW`㹭tPv}TYPCƅEYo/ɃQֹFPb^]58Q޴46u!&*aYePrjHEjkȭmف8!GYԯc HP=jkۨszo"egkHHәd`oa/6loDmA d.1]FOa Vդb KVeW֩12V]dϮMP;h!ҾyhIf(:ڑ;Pl#rڛwe&.rYI A84hߥlW[;zVz(ǩ+|Prqn9?AP!!Ie3P'=3PO4s!O.y u>_<HtlTW?.O5oN4J~QW i<(гIe=E4Iay` ۹?t5>2:Zٲt7?9[~_T2zdv{aoV-ebpA}+:̪IVn$B@ۖkhNAy% U7H#>zLz Z jlw!Wqdd P+J{Uk*?/ }D;z1O1<)ְ {d(9I-COjǻP8bccXڔ9TYwy .AoO:SVӭr0E=X;(|ٺZWڡ+fTCfT$Y񚍮nv*2]NX4 멋p)\HIHm;`~\$6 &`* leys֍{Ehj^umYm ~lXŽޟ"Mt]~V/Y<vsVtݮNF 8NsU=;q+P \FaL@C*+~PU~0'  6c`R=[F T %R4gty{lY&tޓmPsW^F3~Hg$E >u1,3%>mH~04Z%Brkw3,v <ɀēVH =+g_-ҲmIxP5mToTr%C-1<:6!JEۨRH5ؠAʭU:na2 ?/#sZ1M*~{}oʵcEf|l𢙦Nj#sZ"pDcUΪjpX B1~mXicZC_Es۹>T;F>w/y""mʰ/&k ʣ֯ih`ֆy .e1f=$qYk#Սr.?MK[՗CYx)ܽ5 7"YEȩd&B@jŋkt*y5+Li6&;X4;S2G6nx.* }j.zT66<홙zjHmq򴇟em,BIwEMuaKeA8]O1ڊ(w>ܩfBv\7cl8+f՘HF;׮bY9.wzĸygGoѲxүWK-GP+O÷Kth"khОn>_I{*.db?3\澛o-?3\ry#5%hy,{WB067?W@o 6Q(PX `jsUUru?2]FuVmAR>:v^f;BE8PkyY_ @20u!F; +uQAE=V>H"E9H+u@9_ʆ[T Ȭw9f[qn'saw0_8lH.λUcΝJXpx벁xFr2H Gx(PDDy5i*MEP;҃ұxs+/hwppk+G;+ &gՌ&WBQvWp? M[l7A!SU,6VajQǿ#4!Cq[Q5*cڵLGJb̀T:8*lv=!\U[i?JwdyWd/!wJJĸ>^&f26VNPJ1hZX!d߷,s_BBջcՠ ek YpAS5ov6 ByeA05/'T +q*Q $EbcmzLՉV=]@O;ը#(yUn*z_*,GcVRg]7t4d,#=jR+.AD2Fj ${pp=Cy*75Rp?bӥYxb1;W,yذ}*͸iNAڣ1$w5qԚgbf³5V2vB` 0ONjeXCY INwrQ?xJsFGsP*ǎsQ(LsWg4sbfqH3V?/ccmwSl`Uzf7ՑKF"/ ?*"UsGGZ^`[ڳ~RQcN)sF3Wp\HUFsWT*}f FM  $Q(ɮwj5ǾyNz I3})-HX1fiރ| Su9Z-*—e* Li0'ҢxJāe+\#֡dW1Z^Rڛcaֿ#VCXֺ`` tQEQEQEQKEQER@HH#bոtk_-Mb\oYKȫ6~U*Ɲ|WqnMEy.؊v$1\̈́[wL BVʗSΨɃT&^Hr($?^ЙT^Y=s8ƺnQEQEP:Eckۣ٠˺`L.%rY̌'5jnjH'\RGRkaۭsAI9&GcڃϹWtq(zc 8pAs$V`F2cYOҹǙ";0ALwf`NKbGZI8*6Jf ToǯAVVSX:f6ViSJsVB>y*˓WTiUQUg=2`|~u5 "IbXj~Jն ԰Ҭ_|ZGA](((=*;f[kw *+V0+7"K n Աم󺌳p) AQ_=jX t*Hѹh`ɫ e2GQ+ǥYiceDl1Rd+p^l#21 {G\!* u 4 J嘌[8|qEK=6 {(e(` _V+ܓRKc;V']/ hVe]ɜUpsViZ(((((:S&F͎TgBH™2uNLp6SodHlw8H\S.Xe,qơ@W%8g-19+%7³{u54yc=f*dS y)EL$UNG^J{ӌ HyuOQ~1ij|Q-(PB3J6r@i I=AeKjL_}g]Zv,%<B1[V7o$#jӵ@AD֍[(((((a ҎQְՑ̇*=k-l|=k[?zֳN3PJfaJtES80]ɧ!gF@p4fA/i!,8ZbNژ{U餎7p(\9[D]NI$"KHd515UY ##+WíuTZ((ڍزypZvV;u/֫B']\3sX V$ƸO;K!95h载i,U>¦U؟x*={ԣ]@ n# q tc/e&sJ\G.yf8OOy&xU9Ov}j"Hr)ȩ!ny = tF>gXA%(Iڵt?,I++qq&99=jjo2թeNpѡ#p?rtRFGkNQEQEQEQEQEQEW) #0 2ӓZƣS; 0Fウڢy<':S$h"NB7B'^O֞NF́[Su Bw#'ӟ <Ɂ m֫BwMj%t9lխ&x` !ԃ@sW9R+pJWGR`af!H,=k93 bB{891RqbJzR5⋖7 n*${_wE[*${9[ӥ92~ (X0Y.2'EHANG%xΗzUY%PHA 4FXaZoznՌaP*Op)q䞞s׵ZmcvBHSÚ-mJ9ZlĀkj8 Q\>"DBm_ZT*IN((((Z(#~}ߥpw( +FBP:URFF*.PrQ#QJԬmSQ{I9KJT`Pln#-LgSAANL bojpƦI*50].;4A,JI2gտM:8U4=ϛ$ҚBnURXji ($i۸$/?*3N,d`f-SLM8^ eUi|8_SNnK w7AVty$9\.Sz&'/~n1jqA߮}+c4QIEQEQEQEQEQEW'=òl9p$z!4 ?:R#)Qr/E.=-''vqbajՠFVny5`zq)2CGq#6v'C5  I3m00hckЀR]tJF3WVxؒ)`SI9 Nj5\UO ]7alaWTizOIO35s|ǿs @SW-z~n2i8ʧE)Hz/ALBNj4RHtNƙ݁Ҥr[H7(vB{|H_ t#M:zS;GSO)L7pQ0 lڣ*APHD@(?wS5y#`H8@]ڨ,rK$HHF~o>!  UKTyueDS`0vj먢((((((Z Tg\g6WӢ#{in>`$SU,1- 23WvՌg晨Ǻ N>v0v=uZҤY+W`8ֻl溎y((((((+37/R5N3LTq!^ 1"ϭXe+}jvRzQ|e9QK\wX-s*IW(S1)Ư$BFڥOGnF%mX}q$۱ByjSqǸ6~+7VLk!Xy~{IbT@ Q?}nJf!mC88*@5&uPzs8*($O''dX!Lr/eFic%a87YvDA)ѕMl[jҷkYrv}> ^Ʈ_"vn2*7dǡ<  ٻa99.܊5cYX 3 m]Hr Ҹ޹FT oTjӯ_.96Qҳt"M8jH1GeA,1M+8TLVyޗG{[m?5?Mxdn+u9SҺ$eC=T4QEQEQEQEQEQERGIEQEQKEQEQEQE-Uwu"@#,"A5  rJȖLlàqhS3±Uǖy匢Smۙ_R[LTgkj㖭[ca[ rmy`+m $'کM§w)t* G㊂%:f lAZ6h%s~krgs/Vl%=y+bH nO5[Ҽ1lCH:nZKU6V܏% !Q ҵwd Y^ 5z5BqZZ5<:Vރvdc֮q@W((((((()()((((52xÊ-*&$c2ўrs[ AZ*P)r}irisIAEekF~p  ˌ/XPZ-^j[OqXJHҩ SAG]QҶG ZZ(z@Xx*dzUpU)w*Sz͘dQU%$ma'2h!ݞvc!ݞvكIB!X\皎ЈX4b#g歍RpU-v~eҭ(*2Y/qϵ]ԉOrڧV 9qֹ9aް`єY*g KwG aݜpEmd,l@ɭʐ3Zą!ܠnUlc"---QEQEQEQEQEQEQEQEQE-RQE-V&'ww PKCҰ4y|BoN+KsD+kkx2+cQF3uQ"(rՃjhN>jQq(A~j TӃ>aЊ},0`w!<R·VNKN1K"xN~d~uZخV^}U]>їT9FG=* Kr/]*Ǒ֭_V9V z>`&j{&TGRD$l_X$lh%N}+=#e$ :йY;nL2Y_1ǵG=|֝k.>ɦJ̡L(/{U=LjOW-[1*lK[DǺ/z((((J((((((Q: y&KEWI&Q 7l10r=+b+Mi8ltZpqlydtkTr2h#pǯF) Ym, }+#Fy*v# G\@je.J'jT_cOx8=;1}%X!;q89H[h5p̷D/ٮی p1w|`c`+#(((()((((((b` QKz38Kk+S+BgKb!sOI/=JI \=*[Ktrĝ֬QGoCP X(VqJ5 1OOQEU4Et**zޑ0r=DD\"=# ڝ^ڲ2eq֪jQ:eqU+Dee"!^[LaE {wԅB9^ձNea2pA.mtZ2aEZ \5p'^=a.fFwgYi |9W|[p8QW$n=nc}<\njev Mdp!E/R>+?Y6x<+7YP%ʒIW* Wl7gx:֖,#Wo3vpOkiĶ%yhX'ap }+[[cʘ$H 姷{#Ȕss2?**Jj>v8luMIRL\JEtpJ08Zu-QEQEQEQEREP:TZm~1L{֬k}VIulQZaM[1Ǹ Z@Un 9>L}W9ܤ!'^iJReWhl9wZA4`|X~2M^Я&m_j[%|29;ȣӂ`5gLRn&|jdccGPTH&G\Z 4),/m%)r5[_hD-mXM0֭y &Q Vtf(}ڛR$@n]߈{tm6ϸ5& ɧ1wgU? 1}ҩ^\XIl9*ʼnG<)u;'G'j=SPI#%ܗI"X!H~k[$(0֜10j0JEQEQEQEQEQE(gҌ-/HdR\u&F~t!o߬~e ҿ-4)2Q|֎$`3 Ehji_11=k׶+I@}ԎZ&SHάLJ3z*iq4A4bn 8۠N N3v+#LօǔGY~ۨEu;v98]+pTT|[[=kRQ7{;]G5fK0Hp;漃Λy<.Op7A˒zi(|AWbbxUbk]->щTdW¥'$2-eU P{+$r^%!Pz9$R]L$`/fp8=8xY巑Cn]=*e [1Z#EaN+:o<ʿoSTt#{vnn1*oZejn>28A[c1 P۠LVm57:2ZH$U!煕s40%?3W3n2,qJ`Hʫ[+v;HBCea*e[6֩=Ij(((Z(^uV>%Hn>DM5򁟓7 suNPs{VuU0xک +""|*e8'ұe2\Y2OW%5-[ {V,Vi1uUҶf1j!w/kJ9Q޹i<nzprV +p=̛TS\;1]YŒw G8Z|lbwwZL,pqXdEnfEtEAoJEޛ&o]v$i;a7m$Rʕ棍eXU#<0IBK+ǿb cV{E"]=~9qpTh8{Crq XOz#VRx+J;hF=s[D5-ܚӂIUq$$+ުkYm|*؝ \ gӊ殼1Q.]v7~lLRl5%SIk/ [fF@uI! f/okkQBPcj{,bP?*ΗɐTX0V*X)rh-%QEQC2cޚ̨2h) )z9TKHӁGH?KnWtlY zT|v\N8dIoqqRkdS46:`?"0IXBqeoi>F-6?263-IVK]KJ$wnoj,eö1~Eg95&VGoESgqdYVd<Z\,p֚_FWRuQ޷TԇZ{';GڝaBsM76UM7DC&WZ= Ia pZ#B7']vJ8_֖+hZKHSBYjQX(((l,q~`zl+ePpG\̗rN%scGyeOSQqPxTmY~[e=?E> /eg~ J NdV Ҹ6Yzs}=pp[9Ku5°P+7@k;F..0P!oJYQP!}+XL6k[ XCg$u^ֱɄ>$FbXf$ɒ(5iPT3> O\ |*}F}AQ[n7GA[hE'ZnG`8q1؃K\`cjzvCOL`ڰn;idnzVΧu,1'ұ`QI>բE/%t5u4Yk8WSOEmppǃQ4lǠp $>5^[8yg%>S=*y$TK#]v ?OrG$oMA]}wݷi& 3Cku$Y|lzR ʐT+  AʛMe0i9\ljcHFTq\ֽjK\nb}2qXJaۚʷ`#Y1|#+SDߩM"'۵t:UѸ9;QߵoiW;QU'1M;asi}j++ ci$ +Y#˅U ¹0snp*eVk2Aʔ026G6C\E 28u!R~UuR 5]XH}@=oHy{o+[M7.gsi4<VtŀD-!5RZ{XT38*oGvEspo'{M=lQq֮سlŽ5DgksKE-QEQEQEQEQEQEQE-RQEuR6C \g\obq%1QEfMnG{I tVoƵR8jNJ>|Tǚ?Lf?T'~1C )$i0N{ !;''֬!kpLVMgMۉp_ڴt1%8_SW4`X2F +i '́? lI%$H nitMuCcc( -o5;v7)([ k,qs>@#D( xl:#D@x8&TpBpӎ{{V`GQV-w0;nUd R[N+g*$V3%+,\J .!I9FWCc<Sړ@cҤk'#']J`>#Qc}k.qHcW@ԓ6Dv[NI]pO (K\ =j+D.8nKY ֬i}SڰvZ1H4Sʐ8" Ya҅o 3MU{y}h^CulV>퀑>º[-H~S[1ۂ̡mVIhH`ɫPFGpJoa]bM OE \cK<)q2Җhx7.> 뒕<'~8) wvE %ɡ+VtQ31֢\H#2 h7l#+VZ q{ԳeoN:܍XáʞkXKʚ؍XáM->Mus8~puަJ4p`ЊPASi([vp1w94QEQEQEQKEQKEQEgG1dRrsޠte9QSG,lSj(3Qf$gjr#j0sj(ܩZܰzՈ3@0pzzl֫؆Qʞ뚸n G {Ճ,o5xVbbE"N#Ҝ1*=i2T zҲ{JVRiޱomAPVe*}jkdKmWp?Z[m~.s]R nz:WYӎWKi%iɲ<4b1/Vfc+\Vc0?3V,n%|!oj9?Jd'-UeyS=ǥ5LxzmeR':ECt"H9گhw7W4,,~W}c#J(CAO"v٤XjeWQ:mS1r:S .r{0rBҥAҊ()h((J(HTZki6LC+pxBIl}* 5dDMl꺳,l 4N*j-!,p=M`Lri6w^jUQS6iyh 2Jus aʂqGx 1:$X8=z;px 9})ǕnEVEdFV΁z8?/??l+=~7ZϽH"Yg-8j ZiUX38zwlce*\t=M2 0AQ XVqWœW-2ynz)`:e 56r"88ۮqQHFsIgj{ȧL Š|"MN3+zDԺۣ}%Ñ`zZO_RRQEQAU]EoR8Qσ dQ7DF3ҹ'I*z\L'=88W zVdWfAjгynNAW-o@d 8[ " "ފ)(((Z()(t#4f< ⬛wGf[,>-+K+$Tv˝ qde-Ɩ8^wR"1V$KBfN{Pc{f'KYLsRO TZJUӂsw5u.zE rB\RxS0#1d\Cc ;U3vf2Hv_A >OuzsZA*ȻAҧ22zԱƸ8:-ҤI=_j,`-1ٮwSw}UP 0rjɜu':HH`*A(ϩ5 ~4WZoS&znU2XE>*f =MtBTA!@IA0Slr$7WsMGIcea)]+H+2fGsJK1Š 捉(F2;+ C bvB@4|P RӢrfOֳ5.ȇ˔wR'RqwMwTRV,2r7pqky\:b4۰BE==kJPxAWp!OJ ʃvVr$yrqZ "mȭ=zRi1KKKKEQE%RE%QE=ia#et=Y}YYcSuRI9`> "Tl,8*xڟlQO#M4I5[}\TVBGe F>A85n;Jgv WxZ(r#*{UۈfGmA2JK] d# kD]MB9#ƴjj֑8gEUYwꌢa#w\K" eTe=* ܲvyjZZ((((Lx>R)A )1>8B?A, ©5I3+]sk ki :cy35b;va늻ocxYRWa/![J@弙X)F*)ϖT)yf*+>@sN[e{ӵ.evpAoJ 6 Wj)D3!;Vrf2.G8*]K? vs5{q&JD9?QKɤvS{_ߐI<*֜-i3 :UEO $3ԩor*@x/*j  7Xn$P80[*\cT5LAX,QRwQ }TthԚ]fGN~6B:6)u Xrrz-Fv}AwH3ukoO d歈ÅjT.V/nTƉ# vԮÐkGLr!12a⯖A=K=W2)X0 ƒQV讛Xdu ye+ڹJ[)Km/<0X7ZHXI*[r~#7׵UVj W႞[{VMm,`wJҷxͤ7G淎h:mE~J%d}rJȹӥ%ڛ msUE1ߕ@j\ld˞Le~W֘aZ$2ᑻ5_Zk#A黡hC=~n  ǭ^fo=i_I73Fd[iu Il| ֲOO$ *c#FcT7*cNWz``RUIYS*J_',fc$J.eQ ]F1Le\%Dd|*ռL!Qwz"~U?+ʍr`CU턓d 2,&B]df;+>Iw"=x0$s GSLmϖ<&qi-3C/hG`J-6sUŵUa$r)$s¤KnnՋ%i 27TSqX _B#gڣUw11֧s1֬G?SL8j@8?SI$k,lV׍$rtY ݫ.j &[`GǟN@ۀIkI/CTЂ1 eM,XgZO>X[*NGZMO#tdwb' Y[lyuVu@1uaɒke!~:CS؜V EQIEQEQERE%RulGܲ& +6;{$l0k=Q :~Q\.?0mH&2mQբbB'rt;*nlrYu/,-oaZFn?kZwn/s1]:bόisʲ(~g$gp: $2Fc).ݽNEsq\`tTḫ"_o銧jYb㡨4ے@?%ݍ䥤!w W~8-j\hL`9٧ɧ\JW|Cy*̖ɷtkunaiew?2'%*9S쌑nnv-B noN@#~i$ mpإĞ|,6ҭi$,c.%zbiw rV>`qZg 0qiE#& +.wfPZe{&[O[Z }Izr yֶ8+WQE vl-RQEQEQEQE-SҚL_WYqTfH5d- rI}W5qj*-ѫmmP|͍ЪEʟB8\C =h'Lm}*'y[ ?bbv4\) Z7D9x)#R,2F͵I=Tt<^޳E]BH)jIʐV!{qFVAbںA3[}=HJ921Yz ȥ[=o?ek)gnAEgjn*`;U a[1b{jE ,HMAxԲAԜ]+?*(GqM3[^hQu' FmjDn>P/#*AZGv$b8R@r}1CI{gچp$; Fcx3O QP\[' _2I0 5T!Ybx?nc,lCP;Fak.+i3n_c\b! +QTrȪ[J a{4kmr7)۽&: ҵSSi?F*ՃSi"(] VW,#Uמ}J銹?zX$wTavxHWҫغ/^jU(((((2bҀ; @(F{PJ*)Bї\}3jOwVkp@ Ozc0 GH7qZ=i$>Te+KM)B[Q2Jn2# {b-n ] JQ8iy:((((p 'w$I8*׾Y;wgj7nJ5UY&N>퍲1&`R)9:m`z&ǘI<{З@,6k 2ط.W g# ⤞lR N88[}+Nh@$v".B7?+Sֳp9XȨfv?LCd6U[_Kd|f^tpV+:֥Wht  QڷKnCpEjWL7B)~CdcsU -z˾ {l,[}jq 5^Iyj\ƨIu,1Tʏk'NZ$ B~K$#s,&VK㹅q)Ď#sܳ2:aoUi.: x|Et2\ZmL6v֮CŘbJf0Il12L5|Ȁ#O)6oջ\r28ֽ2c;U@A`h=@ Ttg8icT-&KG ey qι%8ȫWXdU7 U7UMmJmRyz2Z<7;cb1/\Ҥ9gtgzUJKZzf"ǕG5wQ){Du 8d}$ER d"E;Ӗwe8+3W[Ei_UbkPB>AnIrR&+ˁNG[t5wLH #D;gӏ+ASYoV &-'Үi2:'P\iYc;T I8KU;юsPAeb*H; 3pLd>B0YK|]vRQEQHK1 #"vUQԚ cVvx U)5jA`qfŶ,֪"3W_TD/ow r9&hW292,Ϳ=TP_$J U3#Fmb< k'OjO7zSpe9fHT-I9HI-X[H\7 "Z1I# Zn`g*%lR0dgb)r><>#/ۤMtd=[t)[ui[ZhW)[2fγj;-Gk6C此h'.)Xv43ZI"E9#Ql;ryY0yr/&\ʰ={V=c(t8,dpzS`2?!QoZ7p@*pHn})]2ŹW {uuO2'WrIJa!9Rmz`ڤFŻ{T+y3 AsA/$~8\BHXsrw"\Huby,}O\[c4 W1 zfC֋;s7m#w_qMZxco!pp~aZѴHѰVlxՑzPOUe^r;1NҠޢ $2/]utTQE6YV%w.#{$ e{ިO);eu.ÅA;˦t˛lYRb&gU<|v֨<&_pj&&yP;zj'0 -ڣ˜.jզ%OVU*kHo\՛]6KI*f^wb֤Gx=w3T695A ؤhv%Ae(Cgm.mymFp:<#Z\:α99ihR'ɭ *Vq[_^޵(Z(dЈx=1\Υo_|5{xympe8 U t}*}(_ nMZ-.~KK1جHÐb5[VU9 u:f;pG̽zSn (|ѽɎf)qSwjRTu8?5%ʣr9Ee%Otz}2 PZ"$d0UKpc;pՕ@QZQdFGF#FGjεR\gTgFO<<  jLM3E:-;Hb=e^ Vz> Oz:LJ{j.lF6=Ԑ|MLB=[+tڳ ՟"?f̎qҭZ|ƯDF,rKy5Y6ɿkL8%$18Pqփ'rIr.gڧ.9fc/y"Y4!GI \>\TB)r 5\12 MFLѨO@)AԜqZ.(IcZȃ-m;4ط;3Jܸ)9v 9E6;9 ͎Gr+jݬMNMIX;浫Ԓm$w5]\!8t\}e1樰e8#54VYc̑NS%t,pl XnO[˿U^X>ثV:z^~*Tkqsfܫ Ӟ6vZܟQMAj{ 0AX:bCqX7ڥԤ>u\N>ZobsZ ŌY@I5v++XRs9oicoo* dઢ&Oc^n 8'# s̘^:*Td>3SIޒc|VmM(ZFA:ݫm+"I[4öQ4* IG YnHkSӥS|tW FJ8ٸg4ϴwOА&$׭;MTZy}T$Ϸ*=H~D2]A*U8$g-ڗg#?n7cbcW@}zQTvºSA 4d?+*}Zd5x;ysL3 ^A#%+"wgDdzVw{R~I?v}*u?ukcקuG\@xi }ƚ'-MzTWQ(F>_ZۙW\n֫_C#-Gru676 ma0n=4Ho#+2ÑZVDpF\Ae%L2V;>=9cIM2Q}HW=Pjl ?O ;[8=;]c=ld֯ - W4 1qq ~ ]Hz'cZ`2cC_B`sS/`ݷ:ɉҪ[ v6jEQ+1TVeK FEEqC?v,̡Sdc y ~_c޵R`Yd .3w5}Cz̰o`CaHTgSLV0nXgWXAnyF?*콪}pUWMpҟ n7) >Z=1YhM LT³^DpZ֋˲@̘bC"Z0KzSК( MV`MBay\$qU=MT:8m XpA" QV8Nn=8IqC"QW>^V$]،&R8ft;1H奈vA{9i"8lѮZ+dҴS2EB2w5P<=|͸#p@rێ\8pŐ18R/C>A)<;L3=;B7$fT`NKT/̈́uS*Y`S;'_5$C& z[EeH\=Y++V^lΗQpFw+<4dV2)Rx6[ʗvNyjeKeO~e[U<0Bڅ÷ 1FӃʊ(OUA$RW\SH2GP0bx"5B^#ç>`sK֒Apc>nwCJXaV a 6 (p֮mx]Bv헅JukǹMׄSRyr!nv5ee J\afcw\jd;zY"K|cNڲ|ڔK_zU y\[dj"HqJNeVQҚчjĹg\?NPWqYdi6NoϵX/ F`{zԚmɴk0]T3$Y s]\RN"țבK!9Ғ䅈?$FAEWQ)c?Jy%b,21ɩ dSS匑ۚ]݇V60W@pA%dwQP1u|>p66 oaYC:܂A"GcCVM"Q#:g\uu $z\9?j#1Dmz f0SҴl\?+pGh9${N21L2&PN+;TEu@ym[^PbuOAHiW֕dUl t@zɦ2spp2+i 1z\u̒Jw ǰ<$j`j}s[m_6NҶE*d~}rmCqv<=+.iCf#1U4x5PB̡^7L{ɝ݉n1#N圜aQ̅L&#KN:T (+JAiKnO +,~e㓚!d7H򪲜J;fLZnݴv4ҔS ~U8J+C;F|d;ݩɒ]PzZrY*E{f77 {sCqFٽ*kOvIsr*X瑑 !eMXߑ)ŹQ" HirP&6묒#CAUo&K r!]nm%!,kkK!dMk ye.9\A-ē& <\S'?Zཌྷ>݉oHjUELuK 9!dcGjfdcKV^yԍjVt'VYȎuZA.H_@TuOi }GQM1)  ?F;4"E!w>=n#CIR9YFFq]QZ#D`#ޓyaTeM [IUv?Zo0G!9Q {tH ڊ=)Zb Jo砮" p$A;Ȩ85yc.۱vfkƍNn 1j ;Rw?u̎MdǕPMS%cߊrA-@#,z 0b>nէ[eoDޮ.׸SWtWk' 8QMnwc*)2HGzlҙ Ҡ!'j&8}ǥB>j^>bq9QN N݁P2FBʪ2;P @qE6KYNZJhsso~&q{UǺOS9B|}Th^@DfL1$Xè0he\1vPd0r+idw6p]H6ুkZ^ɴ~=1Yw#}ڥpec1Im;NsMCtM};Ojx53סhܙ*Bſga$ͻq-,hс6]֩<,lcWia#(~>-<N`|`'z{RByȤAtjoj_n'!@T`m~=Dd)zՇEQ ͖7vQGzj-s:T",j>ULdgEFGjEu8}iG)QJ04r*$%<aW#$uɑqY<hCA9銍4RdR:>X犑#i]Q9$P)TNI$a:`sLm<` 2S4ԑ%?!h%6> M ]W4ʠI뽊e$9]Jƒ/;T@'' ` KKKL2rzo^dn!q%IY7*A$U3 U,QֆrVesH:t5Zy zdp:z[v9~8D{ b+1(Fv*:zU$$%jʅU7cjMaU-֮Zcʙp)̶Bv婸`p;TW~e`PPz0r*R$gz+V=_'6_ڭ4WJJ#k(WH 3[cKEQIEƱeMpDڸNWlmbE:,&$:օ|R09aNЛh?&o ?AM!V1Y3Y~ojbwSSp Pڕ853%K%=J}M>)J'F($fwf55>[gnޛngQ('swgnM& &9vZ2O'-J]pG\Se0],2T)47JÒ`=Iۿq){@*7m5w$U ;*FNAx qZZu#FNcvGWQERE7Rwc$_g\OM0ǻq4@)”:( ҕur)XurEZ+#;{VMݳ%NSWv1#6t⇝jC|#@cn3OJ}̶;zSdvTVsoԒ;1qԲ zDаl=Z ⺌M72?kO>Ԃoފ)(Z(()#޸gSi*쌻zzxLc c#&0W$N]>Nrş=?ϵsPq,I?MLbL&$%*8帬cb %n}*[x2TFcE?w'-Nx\=)QmwSHFjc tn:uSx5#x/g;RwL1ϥ&?:n4GLP9JCP+Fߧz8pHҎIydOz])@ZRv/GZڵ4 }*kEY mɬQXCi#ˍqSTKh4alP:ZsZ{uⴸ8J()hi\с]a-zzU)i%21;0O| 9fr>BKH}Q *9%:챪[JXtXz60~`TrMQn.RDckB3yPHꖟEREr 0@N,Ada>#$:[acxS$EhbՅ?s5 'rzi#5n8#5}:/Zq_alY,19*a2aaFՙ>rj BG&$ޚ@F@ɪy4M:$9q>4.aa&XŒb߼۷P3p1B-Rn\ T)U`N9LE94ߕzu:QL8N3#d)a|tz%^vt8yc#H0X;FXz=z5vg~p5C(Sèoλ8YcIWu ?uJ\}}1ORE%QEQIEQE-QEQE%QEQEsMd%qkJ{W2WH=Z;c*Ȅ{c5E#w@F;Zc Տ$N+ tG}Ӓ? y 9.4jqN'(ً֡;TlǷ*' i`犬 Za5#Jh֐ucYO$uQ<xii͕'96sP`3MDij j3lAΟNh_Zٱ0pmGBaލDh{qZȡ(NNW?X1gnsږNjĽ-E[]@Qpt=0V0 b((((J()h)h)h ?뢮((ZJ)()((()h(((J((Z((((Z()((((()h((((J(((J()((Z()(()hJ(((((((J()(J(((()(((((((((((Z()h(Z((((Z`擸l0`?1CbHفs)m{ S(()hJZ(Z((J(((Z((J((((Aޫ=棎Vٙݎ})0>KH֖۟]dc(aI#)HN5InQM6)dd\zUHnH|8n9D ueX2 ӨZZ(((J((J(JZ(Z(h(jKo?vOr$p9}D9?"r$I7P H<+ O ZV[Zs GA[\QYZ.9eְ]5D#?oOc[ QxqZjPHbI &Jy nPC߈ -5*w_~%X|ϕ*0zV\prG 0;|3w_sMoV!sҲ㝭fRG!{yoPk[F//1sVqu3C7#uB{LS \;g ZVn@oy<VY}{ꆯ,H:{fD͉޸PԌlR'`XKѹ89mԝăˆm7=kG ێZd^3+fF~v_¯U(((J((Z()hZ(Z()(()h+%i|`A;W8OJk ll?]8ѥ?3ӊjH/kSCXm njΏgpAR~ͥZJKނKK*eltCtb8U46K"q":cQYlHrm@J s0-B;|$s+3g$ f=\1Wn;?*?{0SvmRO $3 F}xh sϨAgx*ޟiT~Z6z$gW-죊.2fM\%;Kɫ0@.'=I5b(%ԕ%:((((((J(JZ)i(Z(ZJ))hZ(c ð}+xk z łx~% VA zY+q)yǥYW7-; W RxEݾc5% z/g``V,vv,6zzV? I W4cG%/a2͈-OVbǮEOD JR=iIlLʜ4ɴe@*zf#: F%P,2}8q9#dnsի ;#Z=LnOLUsmӷ'ҬUʱEREQEQEQEQEQEQEQIEQEQE-RRRRREQIERPx8c8r) i#f]̀L@2[AeܞVH2G{drJ-M9ĚXwY]f m4$LGyŐI\yNc ĜN&ݸsTǓbw=NIEQEQEQEQEQEQIEQIEQE-Rt(Z()()(((xPCu`J){;h,)nN.Î1PYQYj e*jqeOެªOg>Užk6&ڹ~hUK}x8e5VdkiG tr8,[7 A9־ $(,gO`c1PM$fH'-`9eCo"(+zuh2 ?O}1ISq϶*]C-b2~V ݵǧdX]}9ݵe (i.P ?km[ʻc>gV YC8*̬q{,* QD'T]_$ Ήt>2ۜwww+2IݪIy3`Rɪ3Br27)-ߊ}"4b;?baQc4"%ĂKgS`}G5rU_G5j7Yʬ[9VQEQEQERQE-RQEQKE*"b{/MgԶKgI ]~i=IEQEGbxV%gCv!V5$뎵͙n,y_cg!5CXY쐌"UmV9c E TU]F9VRzx`M+ǿyM̼rVAZڍ:A/洯JraPxok6:Ѫ8.g‘l\r{X{.kwcm$=ydT$P9 |qV4>{)u?Z.Ju529ǽXՕykGS2n͵v6:vv­wiM2aUJޢFڻv'Ս6m&q ;vsLEQEt搜A;A8*~f +#RٕZϾe ڳҶ95CHuISLu 3W5kHȢV`ִK!ޭꗶE_1o1&v!YOX1tݐc Rp,Qo¶uyB6Ĝ I ~'L ɲG4ݨ[uB_&NS1/"@.U z2'x7(=XMra5TOs*p4>|hШ˖a*vAuT+BK%9 }nسO85]V{w6Xn1{;_qPdm±'PO]3TWT^=Em!tam ZԺRv}jjӫQEg)h)h(Z(GQr{UhR!;YVYV\X* V1ڵmPU`((RA>ZFV p0 E3 x 9Evہ#mdKwX)8?7CYQ1I@Qz42'*,çҫI̍Ue̙^]ǘ^O=*kWQ vGOj,|I !ew77Ȏw;UIYfP=J餸ap~gq-cj{v7< ՎP\\"*n R}M$ӈUlSD҈zt`g=3L{f۹n#86ܩ=j)7 Nӳ'J4dW6(i2iK ֶOX8k$j2 +Jd6ڀejԁC[vy.Y/~}M\6!,a{17JQofh%h,w?:Bu"N880a Mt|fSTQ@EM"rh~4RERE%RE2V!zdB Q\#3 8P>:(e-MWj%QEQEW; Vui]NN2z1NU]FQ! U=^Ak6ڛP89edo3x)V+Cnd!*r,zrJ6H Zm +Hǿ U|w=j}VNԍ@j=Ÿ֧dׅҤ?:gwc(:D|.$o$vW2n&f'-dXo9l+JQ+YVJH?3b%ypsQ٢|ϽCyl7'4/Co϶9c}n% }c{9c( G@cV?k\UYR7=O1*Oj%;ݰ-fKx+>Q@jx#,(d1ZU v-ĞZ *֭t-JYA =Mΰ@SjպJ(J(J(( NHH Y&Kt&G$)ojyfp3dw$) ڦv{gr[EZ:U-{kN-sWYi#v%9`8Ui`ɀ7ɜj]o>vD=jXB}o>n,]F܆Q6X@T*YJ%r)o1p*ƵV%yZQDU9ڥl(è<ڟy`DNޝy)@n⣏hqŽQUi[⠰:(#Tlg/T7itn3Ә9y^Uwd_.y?d''eoLv/ 8w~ȫ%Msq1y7O׮ҺzJ(J(((((((J( vRTI(`jźϗ,*GYI'֪E{xK)a{ L LETA-+7VyXZt5{SYb p>Wҫ`찒=Xs! dOPb؁+ϭn},ݎsZZFW-cPRѩb Dy|<ⲅ(Ͽl15jс2;՛f@AʰG4,0 ۰zzn#v~ *;8j"Dk ĎU$91 f%S<ԈV<OAm+h>tkMM { )Bp@eQv{RD8m,H^B)p> Iz.F?2NE}ӯs隣 [|n{ ͈2g{ 8Ct[@C}~2$]!p Ml.A"Q=2(e\d 5p#Ӛ H#ji]EQIEQEQGJ  ucu'i$rE'i LӀ4𦝃H̩*9g>2Ic0PaNiȒp` )ԴQER5E~4Qcc*i䣌 RyesszynWڬVc*>@Lful팲>A{u l錞Z.1zTSa-m܃O}U z r1Fa.#R!CT̼ ښnG,(sAAUhwj'_lV}K 2MRx8WHGX*.A`8VuGnd*LXnV=?\YEs~kWe]EQKEQE%QGEE$ ͹T{N]ϽWY ;n+UJϕMKJ!c#Ga=)e|'csڢgs[rښ`0#=jXgZD [Ҭ_ K lHǞ7 .u V[TMR2TKaSpA֧[Z=?N ޔ; m>E !cH!!,[iI ;S'437PCjE Ta:Ftc&B9jŖe8MmfaJSʷ(1@ATzבla\ *-Rʀļ+@'s6vՏ9+OZnYʫgwJ9pjWsS]đu2(Iҋɻi'E'˒J*HM.df9\j#{n0m.gF Nw>:o_j|D3O84r4*М4 "G%cjE؜[x g7Yw'LDby5rьqI1Pz;)Ɂ)]a 2ťzH#Xu4YcH{eXT*c vj±ؑ2DaKjpjFaR}F)Pdwsz7}ہ;a}?\ +IgeñFO2Oۯbg&Y~X`,ܱYA2`QOϰ$!{>٭Jk(Z(((sFiFd* Xqs늎h#Zlq57<=TM/J`,A;)e"rSðKװ V.P9iTeӅSas(˞5AБX G:&Aګ*@ck=@YS&( / VF3xvgʉ~=ɫVÉSs(l j}Sl~=ԠmgBF ǽ:8$@Ҟ-o1HA8@e$sCC t ~򎆚bM)i6DrGKb989)c˺2w }O]8} aߖSĹPGֲw=̍r3]眞YLP'%ĥTm%BKq)UܤkOJ%wO_c9Yg"ϱDxZ7)Kl6zUc*HX'5 ԫ4Z$3޳5{Թu/1sF+uH4ww8*}j 畓#YʺV-@8jtյ@-RQEQEQEQEQEQER`Z)h(h=+G7Hι1:f r#'v╧ښhs<asvO{KXd2(,rqz$bι$>VD#I[o%"k P,ǵARܒ 9f;836zog8vVG*li"ؒx+HSUP$dS6IT6M9^XS#.r*Ԙګ1ִ¹#r_ZL%]ڄhTC#&*(kuj|,Cb`*d1~\6Ɏ#kgIɍ>g}qZT; `$^+[Oˌ.0rH5FZ!Y8+7Q۸5$dӊc}_LI>smtՇr0{TtQ0eO=o֩B;=Ufʕ+&-AGGlV_V1ɎLVp29OZrS-! _ZrL:Ɵ)i1Z,k,CVU]䓰e[fz|7r kwW,I`jw~R(*%ޭ:\lDdޟnp*ܜTw)OSOXf8?5sMyi8V*'r\Fa'4^K@:`QR7~dP`>R{NW~)?Zh)h(((J()h(((:,rmz6lL)3UY$V/Zʶ:˩ J5n@*̶Q8݃ZqMh|`` p+B C*1 WBı1Ҫ >d5ƒy'#5F۟AV.?B{6!p8&O$F읢$I,v wFbȏqǽD#%ɪW%cbȼ:z+*0*9SXR[j[Bбܤvu )18 zμx/rl2k^uY<Z$ lO9{Zkʱ mZˊfX+:;Q+)ֻ8F>Gpe84ܓmnmD ?Y '1}jIu0qFu5jCV&(g&pG`_A5X7 U+r(((Z(()(((Z(Ahn"+سJmIZgC1=^?ιRd2XȹbިZuX,qC̦!9=}hyTƩbzF._G֬@e_Ո_hZ\MH A'g0$}*mHs EK Ǘ~cS۾,P ?5Om)1Qܕ`d@ 65RD]рI8 wnI$;g9Sr:xv"S&h|ȝHTRڦAT~BGAilM#>] hKq֡e=OJ~8L1TK8&\1О 8W3 OWl9T|JzpG)'rI='H>å8L#g%⢱<|7f785, n(?Ph((((((Z(((=*+k#{UaiU8B W YCbL8/Ty# U,-i[~"G˟W(3WLiGnO_Ȕ`,rĉ2:9j[.G j *]6A.M˷ H"y'TN}j;5 H}{T}.b,QUQ"9ǯb?8Αb}0Njkb ˴a P*ŋ)⧵e&R8Vl-E03s U6H Z(((J((((h³̛ z6횠mb`UzqSXNaQ«thP\OVjsy'(}+B Dn^kf ۴U}~T(#n[Afķ@G\Ab3A5m ڳ'1I);FhQpo%~ЋUIؼ̰aEU{+H!$'+ȏdkґ:v/z|+¨c5@Kp0 K c}9G]JтZ*J46!XrIf%RK~SUIXJ}>6*zwn[Oovg#)yyX =LTƚl pսkLQXYz59GB9Sިiz\BYGU 5,FQ;`lÑ5ș#8,I_H)\j2IuT8-`ǥ&#o)>:Hh\sc$*9$@xqUUI9<{3$V1 b-FrYGnb0"x*GwIWӭIVipyr]hlFiCO$'Ң,?Vc}+Nߢ( LyZ)h((()h(()($ax=ʼY:bh^) +5)PxVXR<HR4K=VKi {*1"A;r ;F`&B<ޟ[lFN;Ȼw5i߶*2+֦p!ʓ\qZǔsjUt"t*pۤLG@}*Ռ4*ӱBnU!c{ԳH7r=k`KŸQPt.vFq!#5gq*1棑rOcC(/* W cs)s•XoseXv9cLܢ 1>՝i41 {g۴&?I0N;/lw$ }{D[>H&{gZ4 X[1¢2ù[dG _r% HCܜ}EFph )ԈJEn "c3a:{TQVfxYZIf#Jb9n¥wJG =z}"8a#g^޵E<9Dqi$ԣ/!ޑ{+uQ*c-mCz UT}}>;*/nVbepO#`eO5Ĵ^'Z$Wb(((EQKEQE(((((q?[A?y+?Z8.z[td+~A[ u w jE9>`Q{[9&' ֱRyɵկ.$PBk(킡dP֧ H<SiM%ޱoZ9ZS"G^3,vݷq1Oy<˜v>Fو.Xҕ!>\*h#|2G֙*cγW*{`UCF}̀ݻ⩝N%7*ӷ#P7uծZijLq{V @u )fv`fUYA21#Smr8˵M! {c`p?Jl.%8Ɏ4RSj,!Qytj-S,lC @tZ۸?(?ʶ1>9/d##5\s4c8iy]Nޤ((E((Z(((((Tlz`kcO\cY:'T@;%axU%P=4GrW'ޜw#x=r*I4O##4HF˂h|4e/(9?Z$,#6򃓟\R1Qɫ/,voP*g-$?9AQc-#5+1~hBQ)/ lUVr1Ums9V1 .xBbzVt:uMLm}2yn=tMtQvvʌZ HDp!yc`H"D[nv J^FzzMlA*|=w?JIJ#gǹvp' ;ZY„V^69_mWhPG&*{V#9N?ִ,d-<Stf{g|a8\}k.q#m|{a$VuRQE-QE襥((J((()(q6F o4B}jsՒ?.G&u@VT<G(Wznqc#?8W[V3 ~gsj;ԩȏ,\jp. }X(ĬX^By"f-֕B܋9G8 fg+N>|Ryfv!d?0T,D)SS#^7. ,Eu~Dѻq3)!3{QEq9=h[obdR 4Ee#͗90wO=jC8T#֮H|S"ā n'>%ˆ 9$eĄ4xfi66 fH՛;t`cQ"яQU1Xi?L]GZU-RQE-RQEQERE%QEQE-RQEQKE9\T7ctxTS?xNؒzc`,fĮrOYWɉ tˆ /@zℛg)U:f̎~] RoW(]J̍``>߹ .w=H 4ò PƘ,NeTO*3SD_0fQL8q'pgе>GSض)gbێr8J׷ >f۽d1k/7ׅMnŵgh*$Úl2$ZF}钰ʏ֣b$beh8 ~Tew ;WdF $; IJQX ˬ6%; ˪B4JǂYUyH'UGVQEQEfqEQKEQKEQERE%RE%R?*㊯zpqQ\{.&YFx7z tVI'jLqZ>2&#f8 s$EП*bUT| (~5$`0F%rܕL 8Tܘ8V4璩n#G*-<ۓ+̒nRpIV#:U;"hV|G*]06;Yw1(F}iFM̟j"!{㚥u TX$Cj{|M#@V0Y" H#߽Zr%VMf. OS<˃7`U_ݢ|[e* Ǘp[*z/Q;@r:/^ܲpʇvW& $x 5]zJs#=VDGlJ:[y-9g@$Jb[5V%QEQERQE-RQEQEQEQIEQEQM=W`#Ң!a$NX+§<+e7J1fʦfVNvzs|:RNA劃|sI0qBɵ皫3M[9e8PyY@#S(Îe^*DJCrBe$RTp jMTzӯnLC54\˰}F- ![qTv %yMa@늱{:9XWZQ$@0*=Yid FKdU/!sJJ$g qG^ȩeaq .Tv"vbNTN"Ԭg 6 :Dh3IuH3 s)`x|ތ{ҕ܄/p@,*Xn~ɩm`_&C('sn0D-2Ē*լQv2 W14GϸW7#bGs.뜎2:iU!|-_LOvxv&q(1{AH#W!F v4 &&`$ UQ-Φ`U$BA~u*Np+FU /V#[VE7L(KWV"%QcU~ \`(:mE>թA˓QKn&m U/6bTuFyQ[rѢ@$P2kb};ܞPVbww'SRIqҕE9i͓u@ SONO15ت[iK"M_)2dzәĪm۵9 @ s3jȉqR1jxw"yJI7cB'm+Ic#*D}QyNʩKn8P+ܻ;zלZo,!$Z3ƹ-g59[gySm\[yFOg1$Nc#𤶗hx@:4#Wp W,j1\q1e>o*#7~p}+&њPAs3Y$HNj.rSpkY"77sIgՐgD{B֚@w=G8ɫX]B9dըgv&KO0Ȁ(9M/'8==Mf/'?RI@{BrI4*<ҢP=BT 0Ae 9T~g ?)5bt4M^G/zi$ἄC ՘Cyj1A+@ mNjXuӃ2I q!l~ 4͟,z[(摹B0-mېxX(lwz)M5oH^3sZޫ/ی0"ǫw5뺔_Cr;9r6wM!.d9o(nU^.?~y%o~|!%BPG ^PH Uvdrp2G)frԓJ!>+ZBzoYQR& 0m^:Ty"݅U'HļX} Iێ~ A9Zt lloIێ[=MNI!dT6޵;k?%PPӽhݲn"^3A)Csmeu* (wLі8.zsS] :tJV 6D Ŏ QsIU9Mxp2T n^AԖ/H21֙Kll*\>\rR-uA$R֫|;ӷ΢ɁbNy* @a^~<69ˑMLNry: ^]5b(¨Yg8H?:2vv3}ꖩ;*SX)-yaFseF=rK$`+ҬF, cM0#=cyJUrvP}ӰU\>Y}0A8B,A'Y?DgjϻRO 񟛞jPK Z[ȚpZ[LWZ1"1sN7OKu5S#HBN ʦBJ^7Qm=h;`=i/c9cY *c-e2yiEhZA)_u;G0UP >@)ԀW@18R>*HX*jCPdkAIno5u$9TQB1')ILJb 9?`>덄l'&% jcl"=[r%OqȟJ@{ m$6/FA|tF~1"R3pFM= L{UK2U1l}蘍ʀQP{*+YaF{e*1ۚI ko٫Zs 1߀ǰ?3*ծ^+Q]gz3GOz _/r1[EL(欠1Ĉzս)bf,j w7$rQb>^?8'oS'? 8YD}z {#!$V>ppnzVDR"r65>ZLC“i$sMJztc$R٨IjŤdG: $]8T6«Zڐw?AT@A;Tm;]cVXQVI'N:w4ghFp>_70Av%ITL@wZVMpq.dPOc*[c<Hf ;U}[U`qPiR}}WpA 卤ғ[T8G.rj%sUG/ZizGX?koO\z%\J[ 5_O! lwgrSQL6Rӥfh _^PTUu i׀}TeޅxpTpjY[,ӳ4y&xz&59gխԋerJPZҒO=KIۑV/fḌ Cu' `3UT&mX^UKwYoQF%lm#׭5X6qQ0,  *WF3ǭZkQKj@}N3XW7;ӏb67+YN8zT)\y c_Ғ x ޮ^ $ vm0awz p>ب.#7c>HcG4rpKqN9;1N( +uݑF:*dE"IcUPRst} j:`jc A$ǯJF#N*iI`U 4 %ĀqlxfŢKLmϥixzɡ3WuNu>6zv41u>.rv)XS̐e} YR7gDus@*Hf(P7VMuenةiwC?tczuWO 00qv2GSQޚR"(QNzwHCjL`51Xr37ddvHSe vu9=6O: G^8JpG@s~U}KVԡI*D#2(4CIW\BOYGƷ-[t,sQF?I4x@d<YN T[,HsYZ,$$ }J&YA9?e9Kţ[;|zƴb- ~:],=ÔE(zr:D `iG\ ;m2: B)7?gɸ)oc51׵%40΍4|V.Ra {$q8*ZQv*ÑYvWUQgnBn_NF{iq"gu{O6 |Xӊw ًrVp.K1ֳ485( 'ۚәHf'~ZҐ`~Q*)!6Yï)T NӗEق!Q|sW4uvpZ$$9 o.Ɯ"\H"Pq e$*ڴ]I$}=*zxgifo}I_2OZgy_2g=iתnFwN]ƖwA`1R 1PXVG!2;S:BʊwM 3 |.NOǀ3)NIJ6psJ< 00?3Q &1_ƛi'dhܓ9j]JǃRiW'h%bW<W0sn]2kNoh'"\8法NU&ax0pLR3"ʐ0m;qšc;TY_1l`*R͝6m 3R؝Ш^iw584rJmqYѲr xѲ16[<-]n-M>Oͩ#W)b;wxsSisdoQGSX[7/̢e @ GBdڃ1z (G ݟ(+& =8ZLYv(#ԶQGcFdbvR*Ycs=[X-pc.wH힔تn'$wR2~`5SKF.BsUԹv8 rrZIx8:P҆ l-)->5;A#s U,p騤?y]&(!p2j5ڔ;>2_8Y׻sz&Se{Uuڣ Qҩjpbǀ=;C9?ʵhlG#֭ 6,Y v#L(<(:⌮aFc6֡I!AtƍfEc4 E\;TD~TC Me+3ެ|ʒ9Ikⷬe-bCiұH=Qna;1H lTwDldFRvv?:e[qɪDX\ӰT1!B2v^$A'd)v?ٷ9j idG4NFTqJJ4md2A(b+JGxdx^X:u!Ͻ-vZO/AZvR>05?SM&p`@?ZѰg~ʲMzU#zU'a1#bk^ȩl'iU{Kjox=$bmeOYUԩwz V( cUv'To.׎ɪB[5SQwXDJ흔`=* vBP; Ȋh&Ybr@]o0t;jܐK*ը/-_-_CWWLqi<ՌZ>0G\GZdh.ET0wUh2[hÀ[=j3皘 Lw֐ǹdln- 8',bI#FFpOItY!F۹[)a8ʞIKe)SŃaʩN[]* YŤCy qMMm#^pMOmFuc}FO_!^aSFD*r)5R#{S.pdX# nN)Yļ(TFuK#*(T@KLHhb >DG>8L R)@bOGz򓁞w5{n`7LVib3c]V2f*-) pNu rh %@GL***A4趮 /riPFi~f<=;SF9oG&7HqGGV5͹E@m)f*kv@"m=1Z9U5w_sEiHHUP|!YgS,}j ܼFJ.I$y Ͻ2`. {B>YQiS#@sKs+Ρ(7Jv^jJaFi{Tv=JT}Y(e*"=f5`Fc=*X?{.㝃{Hϸv>oMO2_5Ip9L[̙6qGTRe Fr>c6AJ!BUQ)eHB˓*;y% VI̷RQYdH8>ݚ\ct;*:e|Bqw7t[I4䚫,️NGt$GPњH`UFYIVܡÓAL d+=9 Td)ҨY8ӵTO.JFr]*q 3,_­*i`OSE2(r? ɷ 2}JY8W< &Oa^ϖS(-@ES7ϼBH-Gj.\*6_3}YmR) =>kOcieNnzU>K3p>oaq$OWbr}OlRG'#p›Ԡ`0q1ɤcM={w%gW MlBzS&alǥAFmI@jsޢA>V9H$}A;$$g#?0j Pq.0$#?@*]d~菺nJS˖6'ة*7j;w8b[dQ &uڪA`U[I.1U#Q+ddB3"EfB㚚Ң$Z61c!bSZ0 ~ZzQH[IV1_zm@y c7a!~zS p?GVQ{ F :a:uX0QUm&@X$xUh2w\Vqե@ GGR͂pOBC8V8 qr}`@|֬+ Zi];6H<-:sUbyմ61 8Uq?U67 YzC;p;(8ژT|xʮ?:HHaYdެ3'Ci8= qfp?<S|}=9g#a*xΧc-q$JbBƬ$r6Z3T=&GROpa\) ٮ ajk"%냅_v5yovhuGnN ص"|>cn=Uvd Hzʻsozθ&a9lVm̞SyKZ8`ƹ$oi!-٦YaWvy[cR6/) =Lx <JVxLp)Ěe™E$:=)'Uyc) HUPLem>EĭW=UjwgSmEƇ$cZ]!n,եal H;dzn!-qU+.>܃U˨r>U!pYP; ~JQԴ7aU ."A#VtI%܊<8m85zCmxsZZdZyTmn&Uep1߹[ty\'Y'u29eJC>\Ӝԯ GzsFhqޒw˵: z8KxY:U1v:qR[)D$`Zm3Y+oo}+ʌ䝸g$Q]H΄nA3,) 5+U+xěDj~f!OjSpք 6jVJA9VnIUdsLŏ-=[:SR!9=[ޛ8*sIhLfV{Z ">c*;LQ(;8L7"dL%s[6[-xi|1c[-3{foV5Ld<5s$1XBYX}ۓV]G Oy%HqMimG% bJqS$ļs7Z̹ެosiX㕆3 "$q =VQCZ j?ojWcS<Z֙څB4)sF⑹8-9- &}j.:'?U9ڷㅍ f9+j+) 78k-o\(\jŜWhJN~#8;5?ˊjUn!oҙSPq{flz$~HU.>gԷwUSG2~!A*[U2NҮ_iѫr Ҭ٠HF6wJن(}@s.f>Ĵ䏠.U|޵m;zqk¦rӱݷcVrec Av2s:Yr#)q䎕ry9;X0ZΚsm7vaj4BḪwDN (CkuJy ޠwf=kǘj{xԚbj |~) B?JTiYNpN8{`T*>}H;jߏ^-~|9Sf6sOdV pg~>ٛT6VUPUYe(P d)*7zn?#wool,d$p{ƬKfaFH';8KxY*uhG#(HT3C9c,@mCucX}*$m 33m$IQIqj )1Z]H1Sܺ2ǏjF<}* mUC r}G'Mn8s#5v]OaWW+5nU\銻..P:S%K+0hU`v\Vf+}*>qe_\\[ YsͲMg]Njf̒ "!Gj|z dGsVw x5h8;rz}*$EiNЃd*7$c;^XSB Js{wS;L!El.?^ip̀G^wwN c5jXdXIȋ'f0ʱjAUsL6YX0OzD!H%ޢt2Yd]mF=V3{UT*!L$Tc^ܜ~c>ddSQB3{UmbCG9izte`,j Rg1ncPf_9*-:7P:n /6TL(_JIKzA$GFڴd;eUi$oҮ>ݷ2?J x~-W%q99#pTL܊OPP1(ybR;iUSkny<gA+;"[)څx.4{\C1Uw9UWN$o)$An/+ćl1u?N+rI<A}M"2J'$c$zT *%xEa18Ed1W78=*b8P]'(ǷҫɗBݍVpZV/6<qW0m29 gT,q T!pUO.GR rZŚ6Fn3Y/Y 'ܠgߊ>erNEmcj;U=X2 GW؞z$, -I^Q{&Dpu||( <3RkNm`$}6{*5(TdoRt.=1ޖ]#p~1%D^>n=hn$$AwCvpIO<;K&Zvmc/ U 3<5ԚG!0yBA ?$ j)T2prZs; S B܀jzxf_|5t*X ZQԐ~*m_dqFU/֬Y~Fp~Yޣ`eϚ{e 1 @ǭf(>mF?kZ\1ZEBxpj܏/;y~ ;A%E);0 Է0 ER }ji @${vq?Φkdߊ}Ԙvj1$)͉tɸ/N#ϙv8Fc-P1AMX,P9@svi1m\n*;Vn <SfZD|5BYAF9V%6F9# WV"Aol Rv3Jp9,{Ui MRf ,yRMd֥&:7ӭE GzRiStaUA#i{NK%!Sɫ:'RBqŚ{[S=k耶05F٘n\%F24Y#p#~5@d ىщʩin*5UU Ȍ_:ջzX OuS A|t~|tB6M /H9bSۑTS7wg梛TMjruU?iv^HQ\,9fUCP=֏_U.q1WQ"qVDPEON^>h\dΫb8 qj [& gc8oyv~i]֥l"ṠPyPG$v{Nj# Kpd/qd FQ{*ځA2ׁƒP35ɕT5H2.w~5JBwpn+1]+`A܌³4m OUeAÚg{,/"5shQ#UԈTH{2TeUowEU玵^犂䓁#=) [qҒ8=~ERL!E'T2Q2>@91o'7sPE/qRZ!:gsSMlK$ t)*N4j").a v{+ޱ㑚9-m r9-K[4gqO E ki$%j5kw%˜q1,>w;J#T(tY &`޴#[fA)} ( H99s֫]:E{d'/.$TE7N*̏& 1*}SFIF*hY'yX 5cj.n%snz͖I T8Fqb~=ⲵPŎN{VulAnO[ݺ:M\׹-Vu4Vt:7mbDm3 [U <#P*Qj3AҪ9>4 Wɾݦz{W޹^i2ZdJ{:l2~N.Rl2~VFH@O?fGannԥm9CYiF q⨭b+(lt"v*:a=,H};^M }iNTl+:rk27i7,z d gf[t]}sVKHzIyqv +i43I,)P.>0>GBQsM acq$.)nl.ŒU=s~*( \@\GSv)j>g;jvĄIު^1!Տ5pD B?$~ue1IXT#GVMɎ_F@oG=ڥ 1$~mMĶ3d;6KO>^Hضдc8io;Xp+Zb 1oՇ ɔUf߉N~k.+4́*T h?h22qӷ E2rd6Rzgwܹ8,jG2S,1e===~c)dR|4 SC0O7$9MoZnx{gQHMdu1W"c*UwH'>C`1#qqR FWle[@H V. WqElw$0ܠZhӜn\rp2=\(q=Az*g\* o\+Xd+W0^v~yp)c'߭h"Sd,%a !Nijnv*}呴էè yrZّVhSOV"U=}ϖ zYگb"9=1֩F}.sv{zU ?6FSϧPϸc­X@"#vz#,zl\ |cl hCԜUkD%Lɨœ*O>l^rd91-NYFkF3IZ*0vUXc T4qtOcpO*R*F$*vT(gqp9tȒ3x09FΕ Kyz)2/Ud2N3UIScǸmneW06~?έX$|ʬY]4zqcon)o5 ]B;kpDAI/5@_Rin/u?tS;N6BljvZ+5ByHYZy1ja i1GjjGZjrG{R GcRmN ݘA seAӒii2NOI'5N55ZR͓~ <}zqR9lPǧzl*G˺SH')&95l"~El " AprzVhPXizvkq*0&_Q?8 0kn[#rqZ:"=z{x!ɐJCb<3-b!~[fl]KI95Li˞&RTdm"i%ڹ0p;"SN%Cw'i^J`, /צ*̆4€7㿥WDal\6ӷUbųJi #ܾqֳ5 1*8;{+AjS,;$C^bg4۳MO&`"ctQaGE4ǜMB08$Tn<9#=1R[tf}*H'S0Da=zS"7yҞU2JYLd,C%=)~v-QY۠=ɘ(*JΘɌ(赝=ْvE<;m)'c#3nDaҮj`frJ?^@yT 镋,ÏXXUo+Գta"Pr0>R趃O4eg'8!ew+MR3 ~]CϹ5:L"4xFdwDyeRXu(XyY*pR8TYjAUU-Rv77֛$;Q$TnZ8C q4ʇsu#Zwd%\2i1ktrjcHp<S 030⡐WE.jS*9=h{⓵'4(=jTj8vΥ6`)dWb0W!dVb1rڃw>e@,uGV(ԃ13Cā֮b%O\FRi'PɨW]zwJXbV5>SJ@]̄֠d{z9-:gQƪN Z@ܟUn;5^3_ƀP~_zp^r+?UՅن YPbL-U[osxrl,7~Dy`=3DLwAopvSRlI2* [!JC*P\9 ~]23MH>LKtAϵ$<RH!G"`\}95r< updFgXdUn$9c֪[4Y"*NJԲgc )*KX(nsoF# 3?{U(mP"#=zjN@=)0|;qS#kH@.J|=橈 vWwv֑c c uzdqUSUZ#?$lI,mʥ}Bl ѽv<͖ݷ~qPS(-)m}GqNPo͐sYH O`*y~I7w;fn` xŠ{cQOQNeQs%gڭTT{Ԡ@08dp/n(|dސCIґߵUA#ؑUi '"G~΃3PiJe SU`8Y j.%pDL|DB~\`J}֠ϸL1j[?˷p~i7ҹtdmT\؝WS;e: ]۝#W8H/#aW#xuvDN g*'m{-ڡo_\jeLnEڭZKF)9@7L8 "*8B8 @EM8HO=&GaH\{Jt!kK1nH\qͼky rŊF|Ai7DN±/̗;AYtdڦHJO%!>sR{&i$?*RɚW/5nLLp=֡L|xTJQ<j:4`gǠ<ҭL0sÑ7#G<5RH@p =U]٩0g0"Kh QmB  WY I 1X0&%F23lXKΊ%CTdR_vjz#nFjx-q~W35n @s(STGe5;c)r*q\u/]cZ\v]99\6\I8y4|ү42͐tK yh}qTP*uz’ yN¤aT`5e4';N4G>D jxlUI]G rlw Tfq,vHsVmXى㊫# FpN?*sT>J9-`C㠫]b tj%߾zVVr#m\S+SmJ VUoUA 6V^ fV>S?4|NqEgim"CտXhբd`HsH  ]A]߭UXE4]̗ZM>O)ҬjhKDeTRYb`$`>4x|jq0}Nj[tP ?SZ =k_R[6D@C1^rY:R@Tf1P .K3q*&-3r-W tC&=&P4%Gl`4$ҕ2Xy!p Fȼ 7250=k.e܊& aU!@c9**ѩ9fn~/9b l XO5pX=~cn98婑 l psSl:c‰O8۞›3nmGJr6?+1P}{ +3SPi@pϰZS]B#]t dw5rRWqӝ"IdI98e=E\rrqډٴci98@m:*1GUmF|:M 1XՋdI@(c+F-丹A&q특jO&һX_4tXrXm`0+"̼is UDPV8LFnug^l1Y[#vK5N.n'bҧQ2ĪqSW; d7rr w(#1T,AQ9fҫi<䊬3UIZF$t4 ;Ӥ\c䊷bֲUj.>pj}>,B2qS־eprA GҬiۮDc8iKYBr JH㱺T۸dw``Dpx9LoIl tp8ubzqᐳ}K!anZ[ҟ!"ն)}1${D*8'}>$(œ$7ryjEK4oBA)q%ޅN*㧗h\N*U< 7o'Kc'\~q5 jfni9!SG (dnK(.0T[aqi<9$1Mr|(}[;R>9kin >\*԰1cU@?Ո$f1jadz#GVvh_VHUF9ڭ,q9 ( T%$ a>ϩ'~汔aٙP6+F0UTx'u`6AVJIcK $1>bH!#sK6Р}lgڟB(HB5+Mw}V=:j̝ԇ2Jz{Tzdf8tjV?LCd!u5^I>{Tj&o:王5c5E}kQ6 ?pPx ҮQG`N e@L/;6̹U$_ni1`p}+O6>ջñ$|sH6"V9Ja\CsT..~w)p*ӟDU[`'kDV ZW %(!1GuB[,q.CzU{ؖ |yFQWsNpWu[>+0ZĿ+nbFbgsǷYg=iK66:5w4q[h8WHPtY77 J˖=HC1$Ց>XЮrI YyN8Cӎ[0){wi;T ĨW8B 8H|JṡsmXbقܦFXS0i&e8\\oVRG0jWP2V%5SXp 1rBjTR[oJɿd93#Ҳnd9;Vm܂I cHRl!;G֑fݽE"lYqIÕ3[d)IXDfS1V,JOw$dC?M`yeS'5=%iT_5r*q0faふ S&qU|m;K`VR8*EeX@'c7)+(&w%9l[X7ǔ"%#'Wmb1zU#hnrrsR\$^'] [2Fs9$t|RU#P7{Ubhlb>늖Sx- lTjQB@9~Imq~#I$n'ڠ{i qU 1u8 )_N Q.n;5n8J" ԀƊ[ = ('4$Q&piIF 9l>ƒhqD@<G4K)H5tcӚ~> 9Lc֣9RFLTgn1TlyEBҀ]#mFO$ i;ќi+x^H H@~ʃSpzjBrJBOurK}u#t翵t$vRN9d$:20ݳ=ɮj 为i,yid<]{UQSOpRQ ǂHӁ-.<7#UHUW jYd[{w`p\3+71ߌ=ĢيVQrݛVK,w2Ov=#+[?5bg;(,"F?xM[X9) VNѱkRVDH5pbD ԙ(Z͔G=0xv5v"4N8k2qe*Q~^*wc 9=!0}MHѨUOO6*qK0#o~ 3z`䟔3ҳżmI;q! e'rEgg{mcvq w<-*ۼ^\!n*;}BPxQQG{qqw#e m_qQ{=̧qUaҬG*1jgXZVU-3Th gl1^C%ET@R>:/o^uL&%\ 7XdJt6~k. 922= Ļr[+2 ps]sRzҒ((=Fi HT3"ĥו\?ιicfy]p,D>~kUR 5Ed"0qU+V>ě Gnp05/|ˆb0ә  7-f=rr 7 cOSr~Y+bc%ێ&m$6ǗWk(<^[O!sYZ|8}: 2o>g~o)E?*nC +uD$qX)k;Rxֱ4ѭISVv$ih]zآ((({RKI+W-'$Xt/$"f ȝo-przc2μ}jRVx\e\dl2q0a7 ?D!4}'B?tȸ`5"\B.aBTO 70z㊭qwl'^⢒xK\SWSt%z`0 9MЁ$6Y5;6CA)X ZeTsUM,^ǿcKD$_}{t0+'n1\%>M5.FjRF*BM|rZ1Gw*ŻM.>ªZ]c<8vM+<0^k=kV!Giر!Yz|^= JZ|czννPu yPqP6<;9'~OMSJq'ڦX=-3 }I^̼r>5cqYϙHy=juāNsS4<7B]q1~L)|6YWsZuZ4QEQERzU)rvI=1.>bz$uEckV@B2ѫ7^)ph1nffv>I@ g^ E?2Ef+,~e"6y~UF#Jhe :=^E(02thjRL4rr:6Qf0x&hqFvҭWȱrb^Ket W>>5Ue]uodVAu~GJ%%e$dtz•r2dtznr\Z%ߕ8@N4烊ڹgp85$3\f\9c8R2 ɳ4_Jsv)^rkR!;qvEZՂ}̓X棷<sֱ"&i$ l֥wfItFhx'ӵYfO1H \E m&&`,`My1,1ʯsZ:F?lC{dC隳Vz(((3+5I}j>}kLSB9Aum,c9ޱ.":yxٶHGR;5c4p@dݫ"hňQqVɖD FQ9V4Q gZ|QXv^Cg@`b΋h.3Njmj59,2F:-B!BnVR1O`+WBK`4ueXդEu55"Uӡ99$NT֪@,B8x`gQZ#z )Rң_lԺ|&(p'隟O}Z:̞|@PxM~o>(??.F󥳉ܩ#[5}9G8 d2T圆aT2ҠMשy]A]zJ((((ny5VS^9T71UU 0=MWĘ<A~pe_ue_\c^j24k ٬@5F`^Gfh2+.0c f+1E^tЎEm'C=W_6&_}EhXLx+֥}l2p{~H0ZuW6BBcm\KH-DE`_"vu(ʟZ捩uQo09oUQ1U#kXPd >l~eE<+ɪȭH$䚅^O43K!qIv<ۘIWGͺCAsI9.?\]PpsTͅXaVop|ͅUUy#7Ϭ+* (w_]ow(((ER2RaH2)0Ʊ" $j =hDTPT:^Z]%OU,ͣ?xr[PvO,94֮1\Ri](D*ۿ:tAc[/ِ?TSN, #|5XO7f<2䗟jw̟*Hl曩 l966j@d [@;vX).l.Ό}EIR?8jYZ L+.UrqMlL)9QF'cPGEJN*@Zټ$|dߓ/.KyqRhhܷasU)΍ҷ5)Vw ,f6bOl64ο3s'ߵ2W?,ɬ}QfG?+u5,S?#u>HeN3go'Z\y*s}j6 ˖{2^F]ք#vu"j>:¡ڝv6_C9>OV=Ieq/(RO!y4I6z kkB&<'Gu< rBaTwm\w'U`̷}zY&Đ韔wpVXrcV.`$rNĞWqcR\H{Jد#7+eX0o+ǽjȢ(bQEQEQG4P* `L58WwD0Dʯ"bMWEI4Jw*ɥRdU#EKf>u_S[wF8nZ+6c;/Oo$HXeO^X5ݐEPft;fFsk25Qۤ0*: ϶+1ϯ>?}*ęr$(VJ;另*ͬ[vɢ4ZHWCvxǶO__Zt*'4)]N20tm(vZ34(p?SK[1 si|r|ϩhvc "idQZ,˅cVi%_lwE@uTI ExXgk=*rH1i@F7VݨunJ҄*Z}QH3)EQE}Մ]YZԗaBb&Cڨj8\ uN;CAmnT̠3''baLyb|tiO15^[%>_j5. ٽf`CnѱZbЙ#l:GaG OEJgeJ%3OpO4!t.8'HoNFv:|yВ3:ߎx 0kxf?!܊X| ;P8͞cf ~yj죿".-lf#y/' ڳP6xytk"yX`zІX# jV#q޵F>Fr+p܍V=y7pF dFMVPaXcj-?cS `XwΰF}N MeL0zđ?JɕoaOP**_kS1GZu Y2OF1P;Wth7IVcdKT~$,*b۬ⅸ-ֶZ3f[B,fZ:2#n?Jtg2\rE ΁CTdJ<'UuwIWHg4Eqp$3icM腀'GZ2$+DA>­>ԴQGQEQES]SefFG})D(+%) +4jVxO%tFUbNs=$BM}!PdsӌEzoUj*Z]`nx }@XyxιؑďUѪim\ >ƧT15,F\u+= @< Bs֨ρdOU>>}J,0OPHD8p1b<17h݂G}ijxYQO18oW`f){w1>Eq\s8à"\|˚hr2vd'CoDOz$><Ԓ}#q{3Iz>UT?-Iu#j3#jŤ`Ly“V4Ȕzj[(y5k$ ln1'S\ӭY!FGQ. s~#*JZAj/} cΣGMC% f 䏫H~$չ i=vՖWwqy?Z魡-!Qqq]1aHT->d?53 7U?W^i?*GW[i&mX=I:1۪h*EQEQEQGJ:QU ee,W UW = ˁkg${gmO`}2O׽g0&A3cZaXzܔnHgf=?5%Al:=QG3ښ%H#ڛƘN3֫>fqOUY!X`OWhnNsNIL D77ɁrM1c6;U +epxVy-fpxS$n} TXnc|C{VIIe1ǥosxɮNqLqkn*H2H ѫpu"8k25GAt-ƲB/{6 wGIq+v~2΂HQZ8ŽQkIG!pO5pd%ߕqrC8\<-IdRI)"2}i˵OҞg8~ͺ{8HCÐ,tGvr%8,k.2f}Hn}߀Vؓr߀Ydzw(((((( p:3X CGv_¹fwjUpF㹭+uHsԟ~cZkOz׶aPzd=IHHk K*G*^kEHϓEVOa;ko7(i .2_=21,)$R K 6d¤B65I^$$a *tW i7#ګmqXed}֦.e x խ*UBǖSظw,9z7Nq%aC8k~Xf> &h8㚧~m!{m;fe0M1&ސ I6|Մ-5Jǒ9*nw$|ߥL\}7|?Jb.Qr~c5W/!BBilk:JAӽ*; z1ډH$Z@NY,Z[t$hK~| ױ>NpǓ)|=iB<B0h4 6[H ݭFzֳ0Aӽ U J0A((((*+I= l*+n\~]V =Z# z+Tz]AҺ԰YuSZPİֶ-[xi ERgץI}VcٕRʈDcبeػ(iL'80MQE=*bFܳY腉r*HOz%V*AsXy"$%YySSKk[y`Ðk2ͼiak͍ .sY<քwRe>pYO]U6> g=\*95* 525K[Rx4 zHy=3W"ge^*ad`>FoUN ђK}dQˑ[,Om(˾d#ֶtJ槻hِ(8W$!!T F[w8u]QH6F=ƋrV+ kLۙzU1#5dA Mq;vFiuQEQEQEQPȎcgA,R49}ڢ71HҹH<20#h3庖p%?ڒG*;#jޛP\FpkYr0}OB*R UA)hKEq d}K\(ӢbL(ǩE0)4ө(,(˷ALA Ea6G cۥT'Py?ʀ$ع6WifaM`G'kK'秵Z5v e穫DVjz*Q\Zr%@}U6B{ =>4@OaQ-'\_4ħޮF?T߻sا0;0'J+9=I1؁Z7˱Lozպij2K` vgo*$58UNLK k@UyjK+RlYZR,")BCS9ePcƒRm6 R>cziW^)zz9eϗZ[N@t{5ݦ~ziRQEQEQEQEF@z8ӽdI 50 =Z奖ԝȍLJ|/N>̋"9V-jCVov M6qOj]6UF%[Ic"7C[qH& A ΂H*k^)VT܇ SQEQETO=-BDZZرVoTnPC$V;v1u&--ӁUg%rOkk3ՏZ {=Z((QָrE# r() HIIA=U d$s6J:ر"] AkL?kg#5~57ǶkeIZg5([B;E_qJÕ~Ө kAYl{Ձ~o52BrTĒ$KH#X؃U'ϻV1PD"v(((1zTf21Q9,({p?cF͕^ ;VN=Á#zB }aSgiHԘ9 ĈqҔé(z6:UT}>_22^3ګ,lЖҫYI'l_z㪚ܱaO~m/#N VnRd`PNI9|oXI0DAp_V[Ő8qXh]^HCr\G$%ܬXj#Ip~ʢ-©] .=Ż_7s7@jt՚J((+|eבdr 쾦KX+ y8 خ)5F Si$V!=XQ[cSد?dJpTD_Hl[3oh;u4c;oh}3;oG8.q庮~Q)ײ`AnnsБK?3@}G!/<%Gx.UBAK.#xKuf:ʠұybzCzbI/.?+6V[IEQEQEQEQEQYf[ӻ ~vSͲ 9LҰ`AU>"EkxTvFFZQ8wڭIe \}*F0oI*ƽ&s5:]֟5mV]e>E/N{՝+Y"p vo5v9œneVo|!YaSS-QU5B+|Pu&j:vd7 jZG.~ k9ej9f^P9ogTvo^dᎳ&o*BZg!-Qyt ZIcV<MZz:w95DU쏰DFvv X좻{ 80-eVR~E VF& c7SmZ6QmQG~kZ! /hZTu<Ԓmppgx M>\y.[ cikaݷJW?sul?Ft.kp>IEQEQEQEPzQLuQH#*Q";5 M!ͨ$&@?k3NA<;X3ګ5cl=*ZkH-{TQ4#+vtdWGqAڊE0rTi)t<ؾIGqYƐ+HoÔzVT:儞M,gR8 t:ūS@.Tu_Jˋ{@oZ۲szUVh(QEP2 G0yȵOS@ VPzkw}rT:f/1)M!J$eO8T n T 'ӊ坼3WHM> \un+ZXGi2iR0ִo|UkC]} j3rk6f t,EvZDe[}̻%d 쏩n~}Aǫm ڊkwjlWOqU5)Ow2"MO+"7X!ir?ZO!  tdn>vܖaXlNI - 7r*JEQEQEQAE(8Mwֱ|PwVVb;٪II>nՉ%ΙrEcVw\cqa8eDsiêA&7⵭kyiC} o~p6@#zWs=*=ꞣy bNƨdwU (%lT~ŤFvi%;XV>^GPx5 7JՃøNT{KKEU{m̯=궡}NOE_z-!ڳ47W9OoCYMJ%hzT4W9aklFOJaJoJ: HaF)`q\u;hy8Fn<^*䜫95,Xm?Vb˷Tz|!BL{? RŌJzMhYS[d  .Lnxk_NƾSv5 |pCn'ڣg9-Lq-'##ӭt9ȭoqީj6ܞ:yE8jO6$ hdt+*q5by"e#,~5#i1ʃf4@ԀRB2Mog9ҟsҌ(((3h9Vƻ\V#n Zc jՖE['oj` wXZ>j~ 2(eVuR28T]#1YؘϥSݞ*_n@]EU}B%F/Z9.@_֌2@})LRl5'ZA$!qǩ.Ewl=i # 8qӵj':vӵ---94 Jo:v~0\@ybO]b80~k OQ5ЪEP00+ UWQ[B(P0b(hJN߮j" rw3e$;88-ObUT܅-}5e$py}֕zjsi `*уcuʡԔ5$}a7Y1ݍS\5`I V._#eQblH퓐Fv^fDS5$lBtNn̓C`#)6md@`ȥNASJuQEQESUAc&[ >KW*8Bza[u"Fqֹد&8$ņK0t.ȕQ]d(cC1NӨ(dMқ$k(@㚮6V,zUdӭGv@w,M%$cRɉB׎=yh:{Tdӡ[;#h)q-Xj;iT7 cWGJ"ne=vy5ᘼۉnOy5ǾWڵ] EI]~\W&,dqo%1[ïA\g$m_θp|O^OaZzR$G|ߍji c -4.Z}ͱ !c*[V!)&?/Uv l}9_JDBOSgs MnS;f9U~0Td'ό{  ~4n]3`A[@BGɍ:z0xLI޵4i$te?twjۭ*()8)15&6z;d6 Yu7>$1%ăҨKX\H?R`{E n}Gʣ] ٟ:v &>P:&P$IVlVQEQEQEQUT!tTSra`j-:9ZPE3LW/ :ձsZЃWApsPjNn3jNMcFC6 s{t!N*٥nOlӕW$ֽkVQT5I9$VV0!aq H e #s/McD&qR0)^jx`¦MDivï*޵o-NfNQzQ“\UJ: v}5QrJG560nի qG=y g0(gӢ#Qp'$q@ 9Sw&t#95)梼δtFktL\d&bf@pvse\j~RDisc53ug?3_[Z*iA?ZTӡ(0JknUm#1ɫUrAsҊ%ߴt܁&Ҡ`P6̧Vu"ɿqS*Ugoan[$awn}35n;koVF3ڒ(((e Eehs>m/4V۞³o4vp)F9&;]6kxeӒ}-즆5zԖdݧs* vV,04~U6Q˟vnoϥSl=̃生ʵz֭_n>Yʵ\Y{1JD_!rSJVm>3%oSG&hݞ t gj@֫/ {TXOQ Ҭ*DXK}j)7,=k ݁[ F)tm6|tt +nگ)$ni ^N+7]Y|߇z i~>gkkC*<\ޱՃ٫c,˚qYHKen s5_\rlOp,ʚVlV}++Rl܅nBlT1mS*#7{T ,OJοrpNf^Iw,M5OLEvR3ґs+2Z n ZHwɼW9?0k(WF@@T KKE-QEQEQҊZƞ!>sUsyڥ~Y}1nRkr^ON<bcsqkoǥ.!~lƋJ>UUDhj@RҎd2?鼻Y[j9eAXWҨX-TkkHזZ,Gy2p!j.8W40L W'Z}=UX۳)?Þ*ZH>swSi>ki'ֱdusQ}fISIrdL &hCe2(zV[mC*vesUOAYie\{V_2ڳ2Lw}vڦ(O{aT׼c6YR%{fYZ6H϶*h]] >:vNT}+ltJZZ((('XIP7*p>v<`T3\| e 框[ +^P@7\¡3V|~IAP~UO338T6D~`Ƿv;7!s=k|jJJ* @f`;Nt${ ι3߄ [Њ~d eڽ@n;KrSt%8ڟYlf*% GZ)yT$AB UIL>P;#ːGuf vT1<:{TVUCX199ki7o&O+ qjE*;O5(msWH7t4]x<k~".?G2p*Ͻ&kRw'ӸIgp֠PwǟJu[LmG̙$ *mF2 ~m=XZKgs_ZAhO֏,vHV;9y{ZCΒ*Đ $OizS`8ɬx 2+zջݑǵOFyjTjr##vcr#UnG94% ȮFu"󑌊|Rh8zR$ނ@=P6@A'YZc_.܏sYFH'AdH7ˌR{ 8j@n;f_헐iж~l;f)#2b[9#@',.1:gER;xjr-ϔ:j75ZE]<-[fbuZ+L|ŀҮcc9hͯE_4_e>ߐj N>Sg5/#+6]6X1"zwM#eLGU3Y g1S I#+~j,bHFF=: &UY9FP8ʪt аiZU\7G[W ?Êgt@Ǯ8Y..z 7T;'#4IoQ9_cNքrm cKE2cWed>͚g3 ~sW-%+~842ҹ#siil3OC|lr5TCn;cS&.]}IkfH`2Aǽl![%8vIx SgՌt(^V"LERi&skեibG7\!LsiK#UFLζ]/FccEj2Xi 1^V\'&xjs}6KU+l.͹A$q5U†PcQ42 6ZpX QZUz9XÑR[%s94_(C isqOdw&q*H't%}>9U܄⤩)CV2BE*OP-wFOB_A<zp|ߓ>`ň#}560> Y*O^Kk&HUƝm:xp5|aKH/OSFfXZ)<ϜJFTln95F1Xn920?:M*\U5V r쒘ĻHSȴR!sֹyN*d`sn#󧬄DǏ¤Y2Q~R+gG5ЍF6V ivAԺ֟pKG}MH?it}D\g`ޝjB1Y`{Ԛm蹌q"pA+H&~7LWGQkWK?Z˶]KQU,DPDY֑Z2|8SoW9>T*Ԛy%G Uޕqp("h oZ["Y\kĢ( 3\Ťzo#{vmIV.`FG=jDѝA2Č*ҥLЪ~GqՈ>*14JP n@NJGBSkb0O❃jLJv!I=1C #gi9w}DrR}I~˽Ii *Och ;m?*c-޳o^Ι!Ļ9!s} q$%~HbX9==(bXTw_@bʾN>7T yhr1$ڧ ۄ2Sg]cxl,SEMmN  K`7[QH *⠸c9u$?{,[-b#qi}jq8v0"~1+R(P? Zx(;z.j_FY>kZSުdsL}TFQr5 w.}*[ˮ=oqiW*LNaMZԑG3ῥOox!֘ד!UG|Jgp_P7s(;jŽ[(ی`VG**؂9aP@+!,>l+K9_EiJ{Ci]U3F;ڱZ"ڣk}]]C!`rA+qOcVVL/WQUȿ:wfa/{#_CZu_ùFxe=]K/p޳n.lmO@gg7$0dQOu8EGi&  좤`Zr嬄Rhqզ=db|bT$hљGJZf$O*f{ܓ^ZdY9 l־/`8,@h2yvs 7C5> \Rݲ`r+Z[tWbIX _jK3 Vf\{4S!9)32})G+ϭ\43=zῺrU$8힢+ɟ!lz`K%8K!.Gq|89_C4ķ.Gd2}d2$WQ!#ZfqNkUYZPG8h]p:T`UEq O#Ғ| v,{s7Z@I˳95GX\Y$'Ҩk(n-'g͒sThF%y5#\i}(%k+d?٣LI8*Yl6XڣeVpO ;W6Qj{t>UjՄ|Ʈ0kıs%`x}X# N#LJ&h$}Ԛrቚ/*[Hxu/<5vsyxf5Ph/E0܏Zz~5g5˸k?k&{)fWH=3[Fg?<ϫp@k>pn+!T/f a|xKr, p8EϯzB@TY$aT.G'tЊ0PO-̤*ݤRhcId!C _D@"(osUL`ϕ-IksD7k ?ݶYSڶRxGUyRE!b}?uJ9ᘱgQ0O5Gg#y#ڠV8#IOJ׆,qQȭHګ:V{ǷPvQ9&$e􌣧@juڸ{Յ֤Tvi6V"9\Ԩru~<jDȥ#=Td皖TQEQEQE1U\`R;*.]ZF`,j:#'Sq޹}_TLq|~@p1ޥ{)?N zSPdpW J5 .JFU.Oٴv Ǜ1|䰷}l/ح>//P)~ͽqRxNSYg_p1B6CmU+D01USh<)cy~Qh;P ^jJ/Wդ`.eNUW_{uSWtȮvv ;-.Wt^>8 ]6'f $y؉63yDk(&GP5ך"#p @Dz2)T h{mU?R|ui&1q66#1zњwiXĂ[žJM^Z5WI <[eA<;׽UQ]j5rA$t*˹隃2O?Zi"iedǡ?AZtgo•߷Wę1zFC־xa洴6i#Bj䵌IUo{T' ?JX  ["wU*\8T08=*cwy:qTۣ6G GUfV}jB+}}Pl+n]q#xޡE%YDp݇>",P)g=dcs8ZW28WAgb-™ {{o)FʬUʞ(((,`ɧ=0_L%b]q\w5صBs:භݵ{M{s{|uY -!O8򠌁6~mw''## T3<چR ׵];ݸ)kXMHӰ8QM$>D(UW,gZmƫ5-P!FɤPh?uHG L#yG=sڲ%g/#.%;$3ݜ FK*Ş%4O=HEsWWRbq&j~BME)6xȤCx- ;REls*spT43Tˤ;ePǰ< zHٮ'}ʫj_ =ᷪ;I.ɤfܣY%E ׬)ˈ\vy'[# F**gXK!F:'YrD*P76l9ԞflcEu'krUFa";'oVmO:;?w`S)a)u)Tm$$Lgy0'=FƔ]Ɯj55Yq=RGQ'SK9Q\j@{'vk|J袡RV%ķ34HӠ{iefvc۠{.åXӴ˛¥Ty~oMno 6E_XvZF&l53n7 ޾{n4a1n0ZFI2KFOk݃":XXṥ M\M❰}%|?n-eB 6ԉcRPΤ^ r0q]~H2 t,J*2+r2:U)sq'pG3jjC?֫g kFSj#7 *ԟ9cp+8 ;砬.wdϢ$U+Hq.d qTKIAީ1$xWكwoJߋEۤ}>\v>^46b*EXBjC@8ԯ $SA^?Z-B ڞKl=ŘyMU{N$$L5>7+l5=([c{{XęX#pu<̑L5r;ʱ1?Z9?Z9A=wn.\'f` =jWS;,d@$fϨ\찑 QjsHG߽Uhrn@"o$Lk UGbñiV\;C`OzeXe=82LvtU;d'n©^H3s7w?UnXE;y?4 .p""^ ''tAI;2N)]3D-$ 1E2Kݴ6b?L1V8'֫g\n9P}݇'D}kgCX6;OƘyFKH &p:h%}:5; .*KWSHT9>iWB4aNio ~ZFu1X[EDp:j{TSjN(P1U űH­UOHV[;0VKP{HtE5jZʢFEUҰu+/eE좨3(QT#aT$prW(|I'曼[34 ;uSF@Zdm̌9J3)^{T!\ao:U?89<@Oh,J9:n$Zp2ruj&)V*!Re)mè趆KvES՝X(SiH浏4ނ#4aSLhF6g7OJ}luRUum.!+;e85VVW5VdɏxPGZ_Am zk/Ty[D$ e줲YbrAtj$dqIs:Bd~q/.Rq8U5%ovX65.:J:o:|[TټL T'){ ﻜt3"=DFJĄާH ؄1Jzޢ"J[rqAۉrp_cv8+BA`kzIʯdkNDy@{?+f&9=n>DAIzշ>TaIm" G~,a۱k'Lk+?qY56=+Qs (8+QRqb&'tEfXIITg `wBЈVqV,q桐#B($H9GJ]_xK9=)亿rp,ӵkh~eޢ$ZI_ִ[1vrs[CodeG+f#8$VѴ󋼀gURYxNuI=S(W TkV >@5+Y2W8 'Fn-jɀ "FTڐ% U\Fsr3Kʦ0[?CSʐCRdAjf<{jޠC,CaRۍПJuasf\Xߨ9.D90,+bP L5KHE蓑Qb,>Ojnxi-fnLq庌QyᝎzV/{p!?+.Igg8QjݼrK=_Y3 HW[7rג-Ӽ1/fwx`Js"XHzV~|k)Lw>J̿D$x{߁КM{B")Qt*aN; qlaoOsZ +x#K0GmZ2ҲwI Uk3$Acwy3wI0=9 }!GSQKzefBn?Ѯ쬢&H?| MiiΙ'Ւ6_^r@95uUFj)5sQ]?b^};H"AXz +?sV5]^TH7 '8=@WEB9Ap}*VfbLjv!uy6E>Z7_R+`NIuS2,#Ė>g<$I5#3&"GIsF@=j6`Ā0jk83x[i)=kXf(ǹ5v=25׈Ӡ;q3 <Y)˲9/2ԫek&mtA-֭chݪP~dZ۞(? [:"«Ds\4B%8R,.>^" i]5!a'F#|m6K]#!ndhY#>Ty;x#dFՔ/ڇj l@^sƻc8\jh=.nn/g]\⣚{qipA4rtvVCt#Vo k>Tv-rrqDmYqz{\KvE@L\( q*Ō}}>gJU1 |=Oa.N.~0_qSڞIqRjc:qY7b^n\CiIgˌw5?!ilrD jHҟQs,3NkCR=&!@Ul# (=kSSKDFQ\K%rҹTsqm$99,rƴ}jNִV!98fH[$qGjm;*֧6@rBQzj>"OTQs2$c?WH+Z[x1W_gp Op6BvƂYXnƲ#Y;b? ',K4 xLT@N YrƭqڜlڬB;6 H l ԄX T-)+ZbW`pT|'@Ǎw)9==d~z`#\ U:][iڸA)g(խF-#6ָx8뚚m޲#ҲlaܲO*HN\Jγ0i2IZZ˫;)}K&D })Vjm,B~ѰElmIH^1p8\U̗O3$+rIc=qח^ݳK([ hiZv-#jӴ }jn҆>= |̗6YlD~%~I$_jMҧ !$_NO5wJ%ĆMji>$2QFs2} /2?v4^ NiPTZO޳K!cz_K[55[O楴%e>B?:FHQɪ3WRZiˀV(9ꦢ:S9\Ԅ|ԥA~}iq''?>$ϥKa XdXP;I81P犜ĻMBdܩ+}8Q+^{Qp\bV ;W$\F-w79\2'yO~k)W dd`ZcNJAY[#/26YͿr5Zkh{No\\Gzk]\(nCkay*}.\1]jik%S'G^i}A~'zmSɶP_ϝ821QdĉS#i"${V7J\VfR=j7HW\TwIi`?/[c~14ʇtVJߙ5:3H&>R]cCF?OFl4,cYdh~usTXCVuͭΝj,}e[gg }kZ[ăz%ZٍN\ҹ>|}??"w5CO8{xQYjO)㠪1qJI4a!ޖGDP=w]FBgAެ~dT e*X>rAVd[T}*f6 1ZBj׆`RY׏֙-,16)6Bˌ&$rsԚ\KdMXR09=i XʗJ&+@Ҫ.f,z桒B5rw[4Lԥ\d HSl1,: EzT}*hfaVT>78$Pqj$r}j'.8XJD cJ~PI9> UPI]ȣ+TDso=_7֩=Üzbeng1sw;[yIŊAK h@FҮuɿhC s:Ɩ"HڌǺW=EMnz*xl@¡Q=⯛+ơ{Ǟz/R*+{oNIqy}ΒQ '3T̷Wq>TGE_Uڪ WW'#]UI=D jpUp^`>DXNe==ꎧ{xvF1 ys&9Jdn+0]I)f?14"Θ0>wC7obcK75՞aZ]=N%qUR頶!kZ6ֻclI/w:Ɇp\`%\$Os'n:Z%X_ujo n/'܌]`D9Hj.^<,Nq$쿻񲴲LF#N ̷O4EK7;JOJ,tWҡJFy? el-C8%y's{ dϿZB <R'`J8 Qh<v ҈cL 9#(E^^S^acK8S)v+(^<'m"6˽r*6ضVjd{ 8 piSel2X4% BU֢;`@z0s~ù=W*9_G#Tl|94B=tk}8mm$^IjYDȋysNxFA5֥qs!ܬQtL繐n|qkQCn#zSmǙf.yK O.y2*zO$Z=9o61$z56CZҦkijij5<-WҴƾo r=.rbEUP #tK(U>N"U@FJ}>Q "~[@Ϟ{}j;|t'Xfe2?'kiKM/IM\^-b?;|TTG?4!7#V5 +W5˂&hq4µ.32%I88zN޸"ju0b#xx՜Ǧ"u8nbds׷ou)OOV-Y%`p}j:EycT\gr#*ZD2ϩ- Re\ܯʫP}2DjpCw7SQWݩ֫aUUIjzAnԡ}U\FFrzʊ7Ɠy@z@cԉ Fr H#zbT{d\gbwm^ cHC`sO| $¾cco>, :Aַ|DJO-pTuf<S̲37QUgvv,y#0, $6}49'"9joʸb (3Q @)vwq( Oٵ(56jn$~t̒ :]\W1HGPkI'\}_؅GW9l6!CU_o%#C)4= QdB{nwPL<WLd82j{ZD23R[@^@7ɒ~Z -pqx؈}pJ&l/Ҡ'j/ޠɓԨ##ӕ[xQ֤UŸJp:pj90EWr)yXP\簡U!J*=ˁǩ*֜MTG)v1۴⍨iϽ!Œ:TCF854Q֬E=jbw&8ARLbCT6/Xv>cH1j $<⡐<㊋i55]K"F;OZ-tEEkKx9^‰i&3WG d˅֙y%0>hק /OγtgWSj dumȴcAV/Qof706/uTstT~-}jia/1K.%O'F-OOҧ}[X[sJٛS0Y!7%8ol 9|vw^\Gmi-Pa# Einۑs֋H"(ciW`u簪AIR N;})aa{/f\[EiRA;[ki{ DFLc @*333x\ķP;T# j7b# ڠ%Gǒ3Mw ,':bGOf'Pk79oF'@#i_sp+BDJがsVbMZal:SrSIP9>e'ژ98qm^\/=jH@VEb:TBB#`gT0*5C+֘]S =*c?CRzvx))8[U&J# RF5sB\s'ElxsOK] +KAIEt]'O[T7w0LÎpdt V:ް.#GsWZ >ʾuuqz =Klh~f?j}MY~$5>cp:];WK~¶ sG),é+2W"caջ q*|u>JIɮ$nesy⩼6rT-\/,x䚭! 2,njuWPd+KOªKp>ld'Ι,jr_JҲ5Y%0+Scӵk8 ;zUUA ~W7;%Ԅ:~έ Ks! uGJX)+&ѝ\_zdz5.?β;4`c֥|ɾf}Fa,3whne䞹$fկ~ s#)^yJv̎;-D7jwF0vƨoUB1 |*U;}ʃڪ_ܬb4T N>fګZEs9<tSL^}}ۜ`Ҁrx!h\K2|zV/*[s 8ہZti;qR8!$1$t-vcߚ-Ǟ4,@5,q!a'H">)tn듑N™LM㊘N@@q)qQ̀:wsx&*j _tUy =Gmje\%Z4[=6k޿ʙzQcl5[¶H8%:=IRW=ڌi%Pem徛Xir9Sڴr#h&u__ZK`p"KkH)zzրM[a(:T仒4q#?k:}BKh8ƪKt9DS{OGs UD^0qTD\ ZT!1PCNCI,Oj׳}:=aAGkYn3;ռfc5bV8{hi\m$v6G/k4i#ek:G[CK M 8<"氞 VdpyW5$2-g-Šti9cWAo#ct1=+jl,7&nnQvr]I^aoBLgA˵1KKP>s6Koh֖a޴nխm?1K2{sY9ɤN81sPؿHI1~j1\9MāO9C}jյ,z>ZUSNJP)@'NS9N)qlp0~֑2ci6n9S(ٱ.AҥP#G (]FNMFM1 cLrS,s?C_j~`~>ifpJ: c`/Ƌk`Q]**EOREDp#9X䕎5/ڇŭc}?7ځXAfXG*=~[8Oڳ bGYe"f v cTrևn0xRRb)*=}jh/+R*ntԱǒfAB 0v1#ntg#?;ejpŚK%S=1Y3Np-O<K wޤ'HN&"(8M_XFӔSPN/ )g8u8QM)8'ְuI6zp8i+ Usg i;VEޣ-tgzH#̛DZ~sՏcVm~vI=ϕ H5|ݩڕEEQk,6=5E.GӉbNp:CqcX9̤tH9˱+<421R1%ysM$jT_-2<G=vi(s4imb2&9i^%{=xj.qivA .dF;OK(˷jt  T|ǫUVh)hEU R x{k;W1 IjQ *H7"2}ꥍaD^[ޫC0Wj"$k(I BJDX`RԎȑsGSH쨍#QH*s9~yn5 E뜞{rC 1)zŚi[%gg A!Ar{ܱ0/͎XKKH# 42:zc3ޤ-2H\=!gcZd{6 f8EuMɐr~P;;iBdڪ^nUo]I)͡'PpP` 'ߛ"yT)߷2vy-G㩥;zX`SIҤ I'{@{UV@Jp>D=*9<yۂ.,_6sWc1e̼Jy(ŗs2W2qQdeN3Q+=qQ#3c84݆ &g8t4z ǁҟv"X0znW@!=MG\N"3HɃ.pƢ (itvIJG-+tȬ' 13J߱KDB95p}*=8X/j>iiih+%|vqG3\MpGOc$vӷZ6Q~ײAXxQjz#QmEiEFګԚFeD.jwjCm9_ͩK#dRGb{,v ;H vpsֵZ95ORaRCTuMn+5)Mڪ.![+^_]Xzk6WVrY[]jyLR^n!ۨ~HP65[L*ѵ>B$ HYaYMg(³9cMd;SIҘI-ݪP1N*E\QM"00)ѡlqN lq z _|J ֒g;Yc늫1̹#p'~yɚBj\V`D ǹ3ښ\8-SA^i&sJ 8) /0GsK 4Ur.9ljj!rh n]cdIcOzQacFJltc,YAB]Xftnn:ۭ[hM0eԴ)OJZ֐P((:?1g8;ְqmnaӚj'  kH*%b qHv?*K;R"!vILC{Y+^sAM@|5A5 )>Xڤ T~؋x):Y%ΞGE<*z5K"+t_ZtNfEn{43wiFPhaΐ&i6`HmNmR*pZq -mVqidv3^tNN]'nhQyc\ UycMrA*9|ˇ0|S'~T䍥}t :tR6vbMU.*H *{P8~ 2OZrQб9il1qMs#u4Ӂ=i8^sMM')=9Fj0iE5E! zUxh=0? -Z7M g]ݮ=[mݮvyk4,d9E·&"*VՖSV E <=KZ}͢=ȧit#+<ȸ~56;Pd 85RHEo:n\5ц_wzfr=FiiԴQEQEU&=5ŲٜXM6=^Z< VrN="K)AX:)k*f^jFU;U?"ڌ~ozlȧjִl@Z֖Pi^|d =66dk6I Օ4jOaT{0za[v8GU7ֺ{;qkl Om c`rkss%3ߘT\.%yXE.-5" 3aQ\eGl;lp)ll['6@k4k7'95*Bv2 #c>oZ' ֈU'&cޮzDvTj Ҭ<֧Q¦QGy(<'JNz46$'7qQޙ=*OO=}S֣<\T`r\Ɯ$SU\֘sȪ3;LKo1VgvSa NՍ6#Lw4'NMt҃nI;uEFO-FLP)589G֎ayO9GC޳u h}S ~F{"f/D 95H*E$sO(z _$i2uPuzM']tf$D#_,vgOMW9#ڳ&ݳ'%k>_ۼqZZEV1,H>U!`c` f{!qsqa=x9Q(p 5yVڨA*+Њ=*\qH)@ QRE^Zp=Vn0#qGAyqxK{VM>@>c\K-۩5U#Ѡ{U̺`SAV6y ÷Of5id/{1eOƳ1Z˶,1ZGrǎI51TWBֿuQ\rڦ2v?Zu{sZ7C(8P*.hD>nHӅg"aҭ_:iv3GkB,략|svv~❠sӥ^vOLԒdzB̼w3:ӗ(EɥPG^6Ӑu $NA9&AGJQԸ 7wܜgQ1ґ\=)^p:t4֗ ҩ:;TImm6: V9ogXREt~) }kDXcwtvz|l"ՓҭT/ExL{mBۗ@ WlՑaCgvy={-KP]AOjʹ{VځVpgf[< wit69Y_PfNߗ=+n^Bb˞5ȸ/TְiGŪDM7!~T$j 5I?\Tg^GI!o5R?v8蠊,yqԪ"*ҺTP)ihE-v絹 x(jwXZIU[8~sjьյ[E riJOϸNy_2U=\WF?*ޝ~`fN_1 查D hn SfVYzMg<3Yٲ ³5X0=xcQiŦ[= 9#mDl=6L?xGz˸%y9f==+&KiN]>².nVX=`N~f(?֟@m=&wFRcH94qKO&}iȾqϠztj'cp*'rTNROUW2pj01ECyq WMX{]fV62޺>m-1Fd)̇3PԢR3?2;d jҳ`˩\\ĤA+[_j[=Jf0,%wޞ%ķ[yECz1ܴCgcRkypE<$TDhuۿzU4;Kl7$13zԱMķM_C  Tcyv+Fw3UGkwrI8QP/t3+ kIt1:Z]|6=+{N[$$7_jW(((+y`x$&}{աQ} ܰk$K M>W;cś<RZSz-[b$4М(P\ndl }*S8![/4*G|vR_j !\3w$&+n"QzÇˎpʇ8=`[4q $5j Y>min'_2f'v-ķ2o'6K #(i-.AW\G㖫!7jHP-R[ r9S֞N IĊxR0 srirϖ/AZGŒ-Dp7vLBf9SJ1VvgojtmKi+aCԽ@ʯַ4m8RLVzvߺ]}+OTkH2ߏ]nZ/ݮ5J\5Ը|{W=/u&VtK))%N>R7B.^\"9g2D$RAޑ : ǵ7#xv |w {" { [HqƤCDc[[p%K_LpǵmZXCj23tVY(Iފ)h*Ų0&:5hu֛pTf \ܶ}+%\,#<*<ٖ!֌ [RbBkǹ dKkrv aA.hrXuJ?߬w&Wbu&YY(nN;,c;Z;ku:|:MsԚY t+P':Ոo l_ϓjR;yqڑmp|c85gh P$4F6hFiP4~lMlSNwdy8Xn'X,7qަּ"C>գiid)yl+ݯ?S]8 xUF+fH$QkucLEsڮāsZB w5jG2O4BUKY [=;i f{T2[=gDKT K1,zU{v@T۞rG&H80=Z6㊳FXN2mUs &Usu.TjIRhܹ. \^ouj1[J@Gq&؀UUcQp)iQEQEQEQEQEThɬVmcZ_Jt tE&F>X[8 Caީ^@q̌*ԍދhc9vncKhV5DZDH" ArfW\ǐ WUp͞h6j b,)]vҦC'4A֮\#E 8$}*Ĭ8*luD ԖќoaɧFvaɩ\cn1S7́8^pO|qm8^Zl.Y$d0lQ-gD!EL$}=%',}8Y@nt&ss2MpPz";X0 >KK|`wU-rHu5r8~Q6}+pq+|LƱi[,B5r6zZ˲FVХ`WWm툂`WQ `w֥+{71sf$Jc3!$uy=#v@Fiwi<܊|*]ԢW-Ŭ"1=knlؿ{jZۭA-QEQEQEP)Z+I؜j$}˹9`.v#,`Yԯ$zU ;zӵ;4L aڵ4X.ܳtT|}kJ,j2ǹ5z-Ws*~ ۡGuK~R9]ԗ '"jevMl;οAQOjq5<Gf`#Jnm(JC@4|=⯮AqF8]*:R* <5ٙTݘIي[)vx8֥K=jhOZR[H̀OSòy`)s?MGЭFܫ1=+P0u:tJ89 3[!(aEQEQEQEQEQފZ(St?;~WoI̭W6ɻ+kIV?2Aw䞸HV/13$կ-~cܒjvp4{ի۸2@8WՋ# %>Z.I5*JŶKZϻ<˺pdmp 1序jSmOȦ |r-Y LaWqVXTt^IFnb>ݽz7OΒFc$ ҼxҘBL1وQ5"FT 7RC>RQ#쏧sTd|4~{-k%cXk_QK<֝Ž[ e{KbYϩܫ>vzU^hk7ZMb-!*֫,vV}GkhkrY?{֞l#*̎f ¦Hs+M>¦p$d .qU'e!?15"7N}K֌fȪ*W=;:qԇ >_O ZtN(%PɥFM6#SRZ=ƃ-/{:tz\vܚ-4m>n ]>8Z*WhWBQڮ(p((jMh՜9aҚQK#u:KEQEQEQEQKEQKEQE%REQ\e"Ulx (7JUZ`- Y9K6 `rkkڶkJ(((((()h(Z(Z(Z(AA-^}Nz搀 ֚949Hc8Ӻ.)\~5',ry7K{'*/HǦhhq'Mí)L744xl"`ujr)0«lC/=i$85oIi!kx'Xz1]ly+D8Gan-\>T@w5fQEQERE%REQEQEQEREQEQEQEQEWMy RF):Ԙ6:yCV,[=i6U*O `1J[:4/J| `J~9(_ԪrzzԿuJF8)9z@4^ }wSw5sպWQ kFa閟eቾo[RM_*簫=:QEQEQKEQKEQEQEQE-QEQEQERQEQKEQEq)*LJ WBdaN I4G:){T{&(*=ȧƞ:#"xJr) sJk^ Mvqޥmۨa Oִ4 3u0'?j[10:=Cڊ((()(((()(((()(( aJ9&4%,N8& WX P`ziǭ7ߊ`RsSpC1sPf={$q<3O# K$iEcIks+Ջ=.Ԗes]nf z5%@--ts5b(Z((((()(((()(-RQE-W 6 @kPJ08ݼrMs{ t5"mO ˂'0'1Zc0kbR)Oxʱec'Mkg5݊B-%HRtr} oXh1GJ2kbG/>$J8#P1ZHTSiԔQEQEQEQKEQE%QEQEQKEQEQERQE-QEQKEQEqڀq66OW'(0/ h`8{Hgڐ:;P؞mg^bkHҖBgb IC&Sz k+$"(T"(#Bjߎ4@U'ZERQEQEQEQIEQIEQERQE-QEQEREQEQEQEQEW ϿW ͸ pNF 2Œ޴3 FifƊF8?:F,N0)O6neRJIjSuri949g#"#=)7gޛ>ipsKKތ{R(((:RQIERE%RE%Qڊ(((J(J()h)h3EF1ӭGҌRbGqJyvP(QEQERQE-RRE'EQERQEQKEQKEQKEQEQIEQEQERE!(=(=( AҌ4(ITqSA)h((((((((()h((()h(S98#ޔ9ڽIw;Ҟ8Q)(Q:EQEQKEQEQERQEQEQEQEQEQEQEQEREQIEQE((()h(Z(Z((((J((1((Z((((((J(((((((+ ?뢮(Z(((J()hQEQEQEQEQEQKEQERKIE%QKE-QIIE--QE%%QEQERE%-RQKEQE-RQEQEQEQERE%QE%REQIEQIEQE--RRRQKEQE%RKEQERE%QEQEQEQEQEQKEQEQEQE-RQE-%QIE%RERE%QEQEQE%REQEQKEQEQEQEQERE%QEQE-RIIEQERIERQERE%QE%REQEQEQEQIKE-%QKERQKKE%QEQEQEQEQERE%-RRE%QIKIERQEQEQEQKEQEQEQIEQIEQE-RQE-RQEQERE%REQEQEQE%QEQEQEQEQEQEQEQEQKEQEQERE%QEQEQEQIEQE-RRKIERRQEQEQEQEQKERE%QEQIEQEQEQEQEQKEQERIERQE-RRE%RKIIIE-QE-RQEQEQEQEQEQE-RQE-RQEQKERQE-QEQEQEQEQEQEQERIEQE-%QEQKEREQIEQIEQIEQIEQEQIIEQIEQEQKERE%%%QE-QEQEQEQEQEQERE%QEQEQEQEQKEQERE%-QEQE%QEQEQIE-QEQEQIE%REQEQEQEQIEQERQIKEQEQEQKEQERERRQEQKEQEQE--RQIEQEQEQEQIEQEQKEQEQEQEQE-%QEQEQEQIERQERIIEQKEQҊ(()h()(Z()((((((Z(Z(()h()(Z((()h(((((J((Z(()(((Z(J()(((((((()h)h(()(()h(Z(ZJ)((J(()hZ((Z((Z((()hZ(()h()(()h(((()h)ihZJ)(((()(()((ZZ)(J((((()())h(()h()(JJZZZJ)()()((J)((((((Z(((J((()()(()h()(JJ)h((((J)h)(J(J(((((((()h())h((A֊)h)h()(()h(QEQEQERKIE%QEQE-QKE%%QGj(RE%QEQIE%Qފ)hZZ))(JZ()((((Z((((JJ)hcʈȇǙc4,x!OE%RE%QEQE-RQE-RQE--RE%QEQERQE-QERE%QERERQIERRSJۑ) ) `du:J)(Z)i())h())h)(((J(((ZZ((()h(Gz1--RQEQEQERRQKEQEQEQE-QEQKEQE%QEQEQEQEQIE%RQE-RQEQERފJ(JJ((Z(Z(Z(J((Z((J((J(((((((()h(JJ)h)h((()h(J(((JZ(((J)h((()hZZ))()()ih)((Z((Z(((((()h((Z()((((Z()()((J(( ?룮)()())hZUNZu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)QEQEQIER*/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:(JJ)h\nw|RQKENZrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2襥Z(()VNS(((((((((((((((e2E%%QEQERIE*Ӗ{ө((((((((((((((((LQIIE--QE%%QIJN^u:((((((((((((((((S*:)()())hiN^u:((((((((((((((((S*:(J()h(ZU/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)((J(iW9{ө((((((((((((((((QtREQIKEREJNS(((((((((((((((eGQKEREQERQEJNS(((((((((((((((eGQEQKE-QIEQIJNZu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)RRIIE--RQJN^u:((((((((((((((((S*:)()((J)VNS(((((((((((((((e2((J()iViW:N((((((((((((((()GEQEQEQIEQJ/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)RE%QEQIEQJ/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:()(Z(iޜu:((((((((((((((((S)QERQERQE-RQJN^u:((((((((((((((((S*:)()()(U^NS(((((((((((((((eGQEQE%RKEQKJJuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLREQKERQE-JNS(((((((((((((((e2(())hiNZu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)QKEQKERR*/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)QIEQE-QKJJuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLQIE--QKE-%R9{ӗ:N((((((((((((((()2Z()hJ(ZUJuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:J(((A֒rӖuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:)ih)hJZ(Zr/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:(J((iN^u:(((((((((((((((( ?諢((((J(((((()h(()REQEQEQEQEQEQEQERQE-QEQE%RE%REQIEQE-RQE-QEQKEQE%REQIEQE-QEQEQEQEQE%REQIEQE-RQE-QEQEREQERQE-RQE-RQE-QEQEQEQEQE%QEQEQEQE%QEQEQEQEQE-RQEQEQEQEQEQKEQKEQE%REQIEQIEQIEQEQKEQEQERQE-RQE-RQEQKEQE%QEQIEQIEQEQKEQEQERQE-RQE-QEQEQEQIEQERQE-RQE-QEQE%QEQERQE-QEQEQEQEQKEQEREQERQE-RQE-RQE-RQEQEQEQE-QEQEQIEQE-QEQEQERQE-RQEQKEQEQEQEQE%QEQIEQERQEQERE%QEQIEQE-RQEQEQEQE-RQEQKEQKEQE%QEQEQEQE%RE%RE%QEQERQEQEQEQERQEQEREQIEQE-RQEQKEQE%RE%QEQIEQERQE-RQEQEQEQE-RQE-QEQEQIEQEQKEQEQIEQEQEQE%QEQE-RQEQKEQE%QEQEQKEQKEQE%QEQE-RQE-RQE-QEQEQIEQIEQEQEQKEQE%QEQEQKEQEQEQEQEQE%REQIEQIEQE-QEQE%RE%RE%RE%RE%QEQERQE-QEQKEQE%REQERQE-QEQERE%QEQERQE-QEQEQERQE-RQE-QEQE%RE%RE%QEQIEQߥh)h(Z()()(((Z()((J()h(((J((()((J()h)h(Z((()h(((((((((((()((J(J((Z()(((Z((J()h)h)h(Z()()(((((()h)h)h)h(((J(J(J()h()(((()(()h((()h(Z(Z(Z(((((Z((J((()()()((J((Z(Z(Z((J()h(Z((J()h)h)h()(((Z(Z()((J((Z(Z((J()h(Z()((J()h((()h)h(Z(((J((()(()h(((((()h(Z(Z()()()(()h)h((((Z((J(J(((Z()((J()h()(((()((((()h(((J(J(()h)h(((((Z(()((J((()((J(((((J(((((J()h(Z(((((((Z((J((((J((Z(((((((Z(((J((Z(((J()h(((((()h)h)h(()(()h()((((Z(;ފ((J(J((((((((()(( ?뢮((((((()(()h(((((IEQIEQERQE-RQE-RQE-QEQE%QEQE-QEQEQIEQE-RQE-QEQEQEQEQE%RE%REQERQE-QEQEQIEQEQKEQKEQKEQKEQEQEQEQKEQEQEQEQKEQEQEQEQEQIEQEQEQERE%QEQE-RQE-RQE-QEQEQEQEQEQIEQE-QEQEREQEQEQEQIEQIEQEQEQERE%RE%REQEQEQEQEQEQEQEQEQEQERQE-QEQERE%RE%RE%RE%QQEQKEQKEQEQEQEQKEQEREQEQEQE%QEQE-QEQERE%RE%QEQEQEQEQEQEQE%R3`摜)4g8݂?:((()h()((J((()(((()()()((Rm_J0=(:R:RE%REQEQEQEQERQE-QEQERE%QEQEQKEQEQEQEQEQEQފ((((((((J((()(((Z()((J()h(Z((J((()((J(J(J(J(J(((((((((((((Z((((()((J(((^QEQEQKEQEREQEQEQKEQE%RE%QEQIEQEQKEQKEQE%REQEQEQE%QEQIEQIEQE-QEQEQIEQEQEQKEQEQIEQE-QEQEQEQEQKEQEQERQE-QEQEQIEQERQE-QEQEQEQEQKEQEREQEQEQKEQEQERQEQKEQEQEQIEQEQEQEQEQEQE%REQEQEQEQEQE-QEQE%REQERQEQF99()h(((()(()h((J((((()h(((((((Z(((()()()((((((((((Z(Z((J(J(J((Z(((J(J((((()h)h(Z((()h(Z(Z(Z(((J((((()h(Z(Z()(((()(((((((()h((J(((((J(((Z()((J()h(((J(J(((Z()() q)H(i8<1 A3REQEQEQEQIEQE-QEQEQERQEQKEQKEQKEQEQIEQIEQE-QEߦx h5Cq̐v?ZSqӵRQE-QEQKEQKEQE%RE%REQIEQEQEQEQEQEQEREQIEQEQKEQEQEQEQE%REQIEQEQKEQEQEQEQEQIEQE-QEQEQERQE-RQE-QEQEQIEQE-RQEQEQEQEQEQEQEQE-QEQEQEQERQE-QEQEQEQEQKEQKEQEQIEQIEQEQE(Z((J((((J(J()h(Z(((()h(((J(J(((Z()((J(J()h)h((J()h(Z()((J((()()(()h(Z(((()h)h(Z()((J(()h(((J()h( ?諢(()h(((EQKEQKEQEQEQEQKEQEQEQERQE-RQEQKEQEQIEQE-QEQEQIEQIEQERQE-QEQEQEQEQEQEQEQE-RQEQKEQEQIEQEQEQEQEQEQKEQE%REQIEQEQEQEQIEQE-QEQEREQEQEQEQERQEQERE%QEQERQEQKEQEQEQEQE%RE%QEQEQEQEQERQEQERE%QEQEQEQE%QEQEQKEQKEQE%QEfRE%QEQEQEQKEQKEQEQIEQE-QEQEREQIEQE-QEQEQEQEQEEQIEQERQEQEQEQERQE-QEQEQIEQERQEQEQEQEQEQEQEQEQERE%QEQIEQIEQEQEQEQEQE-RQE-QEQEQIEQE-RQE-QEQEQEQE-RQE-QEQE%REQIEQIEQEQKEQEQIEQEQEREQERQE-QEQE%RE%QEQERQE-QEQEREQIEQE-RQE-QEQKEQERE%REQIEQERQE-QEQERE%QEQEQKEQE%REQIEQIEQERQEQEQEQE-RQE-QEQEQEQEQKEQEQEQE>QEQEQE% Z()((EQEQE%REQIEQE-QEQEQEQEQEQEQEQEQEQIEQIEQE-QEQE%REQEQEQEQIEQEQEQE%RE%QEQE-QEQE%RE%REQIEQERQE-QEQE%REQERQEQKEQKEQEQEQEQKEQEQIEQIEQERQEQKEQEQIEQIEQE-RQE-QEQKEQKEQE%QEQE-RQEQERE%RE(J()h)h(((((J((((()h)h)h((((Z((J(((()h)h(Z((((((()h(((()()((J(J(J()h((J((()()((J(J((((J((()()(((((J(((()h()((J((((((Z((((Z((()h((((((J()h()(((((J(()h(()()()()((J((Z(()((J((()()(()h(Z((J((((J(((Z(()((((((()h(Z()(((()(((((()h((J(((((Z(Z((()h)h(Z()()()(()h(Z((()h)h)h)h(QKEQERE%RE%QEQEQEQEQERQEQEQEQE-RQEQKEQEQERQEQKEQEREQIEQERQEQEREQEQEQEQIEQEQKEQE%QEQEQEQEQEQEQEQIEQEQKEQE%QEQEQEQEQEQEQEQE-RQE-RQEQKEQE%RE%QEQEsEQEQEQE-QEQEQERQEQKEQEQIEQIEQEQEQEQEQERE%QEQEQKEQERE%QEQERQEQEQEQEQKEQEQIEQE-QEQKE ?뢮((((((J(J(((5SQG ($P^!x9&"jFnG]m~VPS p^8?Ξ5³1y*;g7ޔka ֡eV\u#\P:⛒eC`SS휋l|jKwqH,3R]J6s#рM,D Xר&5QeTA ;G fU 2CSNst>Ԍw}*kxҀpGʧ/ߑ 8$qЀïuQn)/NfqDͻjer93$NI;aI+'2i7yJT@r=OjdpP.eY@R=zfH#n&HQĿiv#k&Zy,?srOZIdE?3ӳ«Zk][*XOaqUʙ.}*tչIEQIEQEQEQEQEQEQEQIEhj ucT9zNӽVB~ӽUxۜV3K`Jg֟NxTqc+M0H\v?{' ~椔,m皒LsCUvcޣ cG#dHž1ޤP2g{lknVGvH&$܁O'$`W Բ?rT?jY ; sPoc#ֲ丸v#SYi[ۊ{sIcS\D"DA ,MM2Q0>|iETEϠWԕ`G}03U F o:ܓ!jO >K-̌r+^@bCI֯+o |ҟsRa!CTuO-X[a JΕmJ׮*(((((((()((wP9}KʇdJ^ J$rl`3yȏ$]v\j 0@̲*Yp=@HHX'Hs+=s{¶PTz֠_%g#J"u8$X942<}Om 4[:\,7-mOJ ?!u": K)I>֏*;yaY'ѱ!5$k=G5-H1猚e Qz{H1%MjKZ@z/_jX%$ ]-ԒmQ A?F%rI$ASoK=³NHJ.4?{WբI폚Z8GՐIlfIÌTZi, PsSUuӣ2i|UϐKTGl}4 擩 4g)^j߈"cu'9Yc&^9F܀灞Slsc]9_(Z(((((((((uɂG۷\/7PX\ͼyqI#=Nd,H_c X)ݕ6FzR#fEa a'azߑic*"7,rsԹbǐ1sw!%B|}Vd9NˊʞyfAh04};]nIwuL>N0Yw"]1|}qɬ]B^*BF;d my/kcD+@ i1H:^\Gj VϠί"3rO>T,n)-a}ݣ0fAV$7$8I/>‹|JxΌ>zڊ;f;L!H =+>gpPMYv="(?fʹT֮XQ&dJy8.kC3rPF389qM VZ((((((J(J(*$ؤon>yy1H0OEQԮi7H0J4t 3ްcIF{Ru&\=R۾1R[~QO2+_,:Z2 A*GT5G*o/,N7>O ʛ.I¡BI;yclV0ܕi2>ݪՎ Ǒ2ŵRg_5keH+5w[z\x'<ڼNvs%ɟ<t٦ppI)}kWA) g#j%I#7!t+Qn#S T c֕Xc}'L?iLZ`FvxDVA+H#ӧ*`i\toj#$ Uok3Xɶ 8g\1.HFO%!n|sWn^8Fi om@MWv]bYQ2A$q 9^2c,?S3Ÿ 62+0d,:Ir:آ)(((Z(()((( `pZkm Kp2~' Yw rI湋̷H0=aK^9 }*ISrL_-mGp\sHa^z0@ʹ8R#K 󁚗6۲3֯6|@WaB>pr}L>k!!$;bp/Xs*u1G [WBu2!YDC8, cP\,Q)#cPjmUb#JlaAӤ py/-@Y°G;rOU]E CQsgwc+Ri _n!9Swb[!rNFr*r6!%ML0i?J9囚7;y#JvUQ^})Ĩ:W+J(J(((((Z(Z("$XFxɋhK@V5Xm?3sY(2wO~+>1ʹ皒so]d)nyi34xY}gD-.Dk{E620v>\`5[ssYmd#.wWBʹ t'޶%hR5!p=l\J qsZZzGsW-v|ɦVP-HˑרG V.@*faK%@w#j$RFøRMɥ@OV"6[ژN=j+i Qkt5@5˃ xQ$f{S};_K2"8QHQȁX88o$d}+oXԎ@4ܪqҤUw*1'2~GIW?1oʮWM[4QE%RE%QEQERQEQERE Fq&\Ls]+ԏcFA>@D`J# o s9Q%%@|*H .+ijB 3vAR 5ta*[T|w5&E!  YIbvO@OGHʬC?›Pi=ܫ^+gCww+ƣȑSPouT`>P@Q ۫}x (9??¥0m8ȧ9bӊk}A9'5^ʈ#rO嚐W+O8jVRWFrw)>ZUwE眃S(+.$VhcvF_ޭjŇGUen 8:Vt o&r<NY) G"tG.T.LA1yRR264+}$aOW dF%ᓞBZ;: hidoduԞ`J=d'r*H҆1=*/znݸ*&?]i(((()()((c6}*)[jVFqajYz˼W4p<ZYXG~Y6m?.*($9,g4?\}j+9LV@mǘSwqVA̛UG]ƬYIee1ʑ:r[+md,k[*tqO?+,,WOK,-n'X{q)b&K7~"a/C⣼} vEu 0g9OQ0*~7?k8xkpxU )F7FliϵF6Z_?9=pj? 0+QMl\7kd? };|d|=ItS T3DZ$gjV<܁QOۣzI7:9SlJpZUg$U1j~-ɦ,@p8PF}68S\ gҲadˀ4y/ilzLҵe<5f-RQE-QEQEQEQEQESdpRN* mdEq'oS$"I-2EA'aHMAȂr~)(T1 9Iu߽?LR]u҄Ìmߊ!3:zq.8֝mC?m5.aV92t>ZTw[ 16* U]c#r|s[/̧B| Y~\R\ ӷ=})q<ߔQ"4n idCkҚwA(XJ0ꅳ 0j"QZ?)=S-II$̣j՛|0 Kw76FqϽTD$,>j($DcB*Xp=z֯FB`>WVˍhSծWi]U%QEQE-RQEQEQEQEQPܢ;T9%ꖥʱ$5b}hU$¤dTzXՋ%bm褶q̿&h* /XU{9;ȉ8 }* 9B]!<ޞ@fH-鎵$$c叵I#+1ēB1K$g KT`NDal]x,x4hٟBpO.ZD 0P4EʟRLZ8 [qskx*advZ%[H4Ne SP/'恴ƑdQ۾j_0I4`uzU.EaެFQ1!| ,~cRIoܓjփ?.b^eB\ |fx{|9oy ֳ󎴩&dF'Vc|I-J<2gk}Ik,R 8XA rA0[V?pǷ>j$+eϨ=N5ܦU!SRC/ Te\%Jȿ;6z}+6MYxn2C1FC|ۓUyݗJF CQWy⋸s峒qby$UGpP ~iqF)q׭h1(tJ7ӵP9jGcvtķeT&}ҷ폖#ٳRĤ/',DZcPCEs;rďx_;Mh%zTXQGztj6C}U}fѺGơ*)~5Yyݰ'=EgekӟzKQ]Mv5EQEREQIEQIEQE-Tr`H^Q5`?b(o%He~@A\u.ù#W;< ěA9ү[BR/1ASEm@?H8֬Gm@EIy3V,r|̼{ Xw ~T#Ƒvh=]4F햕˨ %Foq%we9l֩M3?jY{- ]vp H6Mg-8v?6Oc$15f$6@|;]*g"CGj]2$Ŝ|>nSX8"xq۸چh7B*D!BU{YFcQ$MNo\:Vj# uaL ޵̶ V9ҬAg͏֬}6VjU6"с1ڡRCMm9Z28RV}{0d7rk`O8+dd@<̜ _.1$T #Nҡa,dAަ :Uig#OtU!!@ Ю袊Z((()h(_Z(pGoH1Mf0ifzvs3Iq#6#;gy_bzv1L A$t E$S#,KldzfH, =jݝ\XKp'kWYy,v1_ݏAOd׫y 9<֜U OnxO'?,~bW=;%lx3-:±t"N?r+ܗ~E洭`ϻ"kBݖt*)/rňP8\ic9:jǾsڍFm #?]c Fxަ_Ff(#SZuklA?Ci, aGEg,֚ϴ%~YN9KSf-N#tZm: $9b0kv'nX4锕g9L#ͲmS/!O/XW}ӌFa8?H\(YkypσV3D򨌬Vk`]SL}A?O¦ARp*X*O *dQզ"TUc;cB}ФUT(!VknPuvU(,U5EHIZeh$K=MWE&!7rvdpaRۏHI\'d8BӯfeaApJh˙@eiXx 㣽X}?1޵on2< y-v~\oeb&0@E4"Vdv Rb`?Emn.wI")@cTR؛2HdIki: .-K;+>#6˖#*Һjk)((((((E^"N8= ejVYhxʞBٞV"2ZȬHu zpKX榕Dr`}@53CdqU%nXţp;#'V-ܙ$Tti%p8czI?1i_#P1az~1;EF[PN$B9ޚ\I2AsLv3iiPszao9'wڬ 0}MEC7g8oγfQI*.p:PXK-ʥc^QXK%X"Bndtls^.̍=i.TrǮ3]%vUQEQEQEQEQEQEQE#3tVG@$u8+[b@4w>M(T4>Ywyp7d- /L~${bu[ˆt##8MR9sTC֥;v_Z4Ş6V09=1(ҠTpïʼ vO$eͻ{g&3$%؟JfGP6Il- 5& jrM< T 4Նe33cV8jͲJ"Tm+N!1aQnA?G[a< 2ӚNJ#p~qڳc{,j[XDwG}3ޤHGȣ!0=*+9ZU\ޙg)BS(EK9>ywA.GyB]fE2J]*2(g 'ђؙb,1FS@||$dEg>w9kZ١n_=p?dB?>ԣjMIec#zT5O/.޵cHyļ:1vT*(1C[j;n1^l.=ºJJ((((((:Qҙ#`d ơ-{$⣜ J/ZJ͕V[f!H\/lXFIUjg˧Fg`2j̱ `?x`HrwfB2XbXu5WܽWRY]~d@B; N6w[z [l~^+F0-Y4Lg#=ITXNETv2KV$nb eX wy6"1py8Įmu֕Nagϡ51\UV"kn{_,,_y}Gm =pS/Q㱨5>T?.CP ܎i,ERe9,jn0R\`,y e:Ld7Ԛ:f̿A9ƙT^#۸76i#y+"##rns`TLHH$`T`bϘrJw A$$ n.wXP1Zzoq;@#WoURZF?PO槾?7)b_pnU UGh3;@ #yp'1TC€>drx M.{zdowM厃־9s q־')N)"0TU?ΩI /U~5Ypw |Ȥe#w`3fZA FV)#P254L*c2Fj2dS=?w~ZӤuHʜU9w)ZnW3`n*qמDf`720{V#7qU.ci\1X|&k0*ޝ/$Ja{fd6c95bXQ}*v eϽ^ˆ( c%I9nUQ*` ~m8Uv;H O Ny8?]X";%oG0O^WRqMU#\9-V]ag9p֫]yas qO!%DIQd=A)c9/ջ$o3H'jh5kx^sSĭd֮fڗ o@ jB~وKr+R+N((((((GXTWS:}j;D@Jo#MyzW7o+ߗ`Oki{cX7$q;/ƨ]nے qY !+}Z;__aVgeWrNGz1oߝ q80qLZGOB~)CJ@?ZO;~+nMO>Igҵ-l E˿&XLXb duy&O;:&Wj6J²u /sGVN*TG&;dS]m}VAMXUvJ'ڙ [ƍ>T03 jm%u;#}@."JA$j׸ Zܾ6SpZS-['zRonZKŸLL ,C‘ ,ӚkcUJp4FSE \/DbA(bfZ[a%CΛl@ \v[Cqޛi0V'h)!!С+n1 dj1=ݹ#ݻcsSW*b_\^yp2qڮ#oh.*rɾ@@1灀|`p[)ig'iڬyon.w'Ufqaf @G,> g۽c˽sj |V<@ItNw5dۑ-FNrFk, X$f?XM/m\8$ S-ɕ sV<;nę\sB!GrkR/v=! gpQݩjJu-RQEQEQEQEQKFhuQaOҹivM#\uMUH#q??`bnmZnZ=pN4ӽGoy%>[Kh0L1ݽp $c,OK5˿j3/NdXy%d HL-#Iڥ.rIkVWrIZZGĸ~Ux"1{VW&G8 ~(i5 ccڔUO$&Tmi䁓UHZ$Qs= Z@:Tiw8dHPXRK'+FFy>򘪝zMS05oO#I Á5n+di݊hQ()"#fFܷP"a5bgWJ9u־xOKq֎r=$6Snㄫ TW 0Tjv:p?S\U$(8$ٷoךLK3F/z TijuYW;U;Iq'&ܯoܧj9$hltcֱ,ەa~]\A'{˰FkAsZIs_W#pЯα$.y^kLN1Z4q<`cVL6=kJ40/'2!/KV*ZJ()h(Z(dͶ>߿g!v梺m늫8S-dd bfNNYaf r en3*RCɟUYحEn?o6.k[OitؑZCZVpRIosS$623-EݟLU79ʰ.unYXwm#S{ĹGlc^=h(KI>}sUFv,XMBsdգy|ZtX'siy@˹ nݏNL˼]żYxFP22s$ U"ܮh<6~U_*챉vv&sHxL `23ҙ4mxMKV9!W+nځVM sdE0@ F]M!~t^_$nL9gD7`?X $8lW-1"?0V_Y#aSyzv㓞b==;RD/Ƥr;S[?O _6Ш;AlU Xa*}!{u3n{UdMxo~ԭ;#)w4YJfw4i7sć<%;%?(mٻn"~hc8A5.19^4JBИ#UѫQEQEQEQEPK1ڣ6I8PucMwH/#mQyCuEG$8NYq ʓ+%finY5fSy[ڵ=FKǠU(KݴVͩ), m2UTzj60]@:}~O`II 8 [uIE袊'OA@ BugTRh9Sr͜pzNOҩ^Iql~]=X%0l91Ipde8<͸柷 N 9482,1+3n$ƌpXosRD>jhCZ(9 +cG+|8M;A`ޡ6p \O\U 2vV#;WU;$DmF|ӣRpaeJzR.V w={Tpa5#dx80x4$vH7qG.&;R)£O^Շ4R̉q1}x'hϘyfHy%mh)(=@LU=Q;(v#Q_3P1B,mi+<}aGqY9KoA\}ynFXაOEQ[j~j#57jbFy ?处cRb b8vnF+f_&*XlwX_eTf ;cHxQs׬l'n#`]#9#VZBcq[RgE O1zԒZ~\3VkS\\H]39|[EBcs*Br G)4ϳc(,{J8o(KC!"\:*ɐޟ,j0I5b;uy?54q$C 44RFXǭbxFT/\VmPAs֢e?xYzyXj`~ъS`8OӌUrTBb UrG >aSkvjEô䬟ҋ;F0 8 ֩2~cU$OJM- U<'0ҭhg=dE!N>ֳd8#Ot$ ?b?:'[u`*Sh@SyxxԷ-h8٩Hpq ~1|?> viy?. Z1s/ը1Gڎg1(뚫g  OPY$2IOZ@AGUp58jʦ#Of|1`N>ZCN59$yn$$w#1[78˥v~-ӶX0>k-$db5{9?01=L\$Ȥ\z rV# pCU",h!ႠSZtYTޤ`d09 pNqkiGdj ~FRq9vAct=7U}sYH {)8-da7OUVt  5KND8FVV8Xn}*ozpgGanJf0ĎzT@ǩYѯQFcsDHNp ӥO\]`1s]ϟCZIu/ZAV瓒qcݏjg3j ;>{MM^2D'/Zė}6 RkmO\ lj_2b+\Z&7βU,`oiSIqm#g-+kH (iY+cL)aےMYl7'w7w cSMugګI gmSO%CPUO$4aUEڵ\0xqLK=c.(׀ϴy"/ҫ%sUXl`AZb1B.zqI4O^Ր;u$]Rjj >AY"Tbxi5aBz }3 vqQY.p3L [f{TĞ?J@*2rĊyNjS*^8*CJ78=y{'JwnHQ֢)8AQ|W(#LXƤYBOZHLsۥ0`Lu 9H*78B1ڐBQVKF}*g9vD_?ӶN[ ѷ =XSї#*pTY(X ^jųqNIx2. p1VE.qڴd8Ed;^L v{Zf}JvNZǹF0sw5SQ$g0CLpƫjyT`Ttcޠo9\.{Ud?j ;##*%w7o}ȆǷ4j3\IsI|89"Zq<ZZo1ի[68*`5%Z^#$ƤcہWuݳG!͏kg#<՘ᴱ'3Vȱp:GﵤnFp+6P3i: pf EEwjh!,>ͪy˔;ON\[`󧐐/X`E &aP` t,aaS]m\2X%Fyo_J}0F2d> "/̜Ʃ\~&kPik]G =mŷdQDž4i~6F>N.Sbt I *}-~q+{)- q)[+ROp9829M>yM2j6GNyqэXFBs;(T$TwE8P{ pU: *Fp @ȪzUu5hZ{LTDTd #8<"#UJdPNEASj90ǧA2y.%ڟ; dhV@䎴8~)e5V3H}(+[;B|8>-i̛~#{V_8,S Z/,ppǧ54wSŽy4n%GX^_?>vD8Q*C!nd* $Fgrsj=|'qm'䃒*|C95q0 ,Hdcު'q"T{Y^ASQQƮ㧱ӑrśE7LU]̹jubRq)q}W?r$Tqi[\cl9*Aִ,du2n´--`HO3f~N:n\Td,~O {k[QZL*O|ҽ``20XWI<mGgڄqXw2ҲDQ[:j4o[ZlRpH("Q*RQ]OĠ~$#kZy pRI5hƛ=Jr4(Z#0H/R$K qn8Ep7`O`\y?jdvlsX3nnX(8c3Xk.[̐xmy?v?xW=c_~aY ޕ\-XVy:㚅ɷbX3* f 1ҭD4$J,_Uc@ ߝ[>hdGP)+o w;Iy>P(Od಴{zTM@su#r9 ޥ9'ց4Ags&TP眊Ėȩ2>z3anr5q]5R&I¸fm1W@HeVwœ^YFpA?Nod!ٞ9f|(9o%{)Y=[wyI`c ȶERX}8uH"Uxd [&&bdFga͐z5!E؏6nF襾3|} SlVqTlziVYnTPvMMc YX3"m,d>e|`ZdGMtmQS‚ "3n_$tUF#֥~u&N0*FE@ZmNyQklv~Op4n1yI\TValE{4aN{W.B+l%Izm pMdQ]JSY[Z)Cq|RÕ:Y4-Nήxzo2=TV$ԝ[;AՑZ'2lVFU!V@1ȭY-c2`g<8UMs-X ᚢmC쮱 ({HqVJW'VT6>,~4uFʯ,'v?{U]*%T#=M_]LQJQ\\48ڧI+ux5]A(dUJ7aS!G"Q 8™xuvj;V|EpK|qڴ py]9e^ #TҦ]Ks7DEID2">iu;;RK#6F!(Uwaҭɸ9bT}3Zzc\ eW>W41m× Aؓ 6Qɼ}#jV<@LjG7L?{)?jI^39!yZEoodQi< yOC;O$v0?<~U[un',HsS]!⥱dH,zХ->Ne2?JAT{{ҪH p@7qڬO0nfZB8$?Jb&nM[Ax; 80n%bcǹI& 4xiƒShֱZp< {JF|!xU?Zms퓌c5~1. #EĠp6E2otڧ?ʰ@2w5g ņxsU5ĈʿGe5i:H$zuKQe܃ lz/ApZ1†lZR*] 54d]O5< Q do<goii;sM pWsS.",zTD2pjYQL6}6ԜG7֌dRc9>cܒm1T*qQ#Ҙb*I28ɂNN)_9*((w z!t ( zlnޢs4nRnr] .Ojp2MCКpA"CpX]1nW5˙m!If +JhT174mUA01O3+`7«^F±늂3LU ɷ;eO/d?aYa IsP.$8g=Pd zʬ%2֬0]Au,pevǥ3WIrڣ՟}ʢ8Z (`3W۾Rߥ_|E"$ 銭:O1XӮ$OhpǡRTisM$/0?,@zZEV{y 'q$\}^KY/k#1A5mr@r:\$UVl ,Jsy*r.7/m7W?1I(9f?Cx4(MRdg`UbIh6q,R8"0NW?85aF8p4P]yŠl6p\B*@fqԪDO z㩩뎵(7\0J{ZV|p@/#7qKgێ*Wmx=kLݰO)Asޕc 8)8H$SV=tM B<~4 .TwdL;@!PFN4pj)y]e1)r3L|۞jn ר ZHAܲBĹ玼q]V$0GCSZu #c:R1=8i7ټrIcͥ:=z-ZΈArx硬Rq4jA`{~8E9$V2Aro`qY4tJZ2qwhK?`t9cjlmW-ְ&D69?TZ{:UM\8o]ac@Nϵn"6?wϷljLHN'l[9c_cޱܪ_c޲o(Z?OLxuxW@P9ir8* yKǵ7g Fp}iFbNz!_= LD%e$MA.>~(.7b mc,Vmвn Gd.S y?CZ3J|:V4~4X`zU J\w8ұ윱$M?*bx ϽUd2<+8Pn 2=-m^C2*;۸ٽ7=;˕%IQvމ)9DGRѱb`—PVy Y7SEXgp=Y"e۸D?[t}جJk%P}MuVkh.lT'>Vj>s!1A5e >Չy );,AZ;H=}+Ng$L{_Z"!jUT"6|ߏM+;fr!}O<,95YXIN՟|,1U4#pnx;&PĿV'&Fj#_ҁ++(!)d@#i>QVsPc8b}*͸Tp65ra=t3x h~ 'jY_ϑ9*K>*r*4qMŽ99"# ;fX9Q㜞Nnue=+1 A#-*6o[8l%8;?ҘÌnjmN6j.`P1QБ]|ؼtRۧ V2\|s,rI1vqHxy$'d|{)'CN{}6p5ڄ|*?Ʊ%,uAP,b$T{_s?PyH:(ll:o<իTű8>vv2yIWk4jԱdr޴BMGaN?b=7WʌVm5ޤ 9ck#FR*#`Ž0k3E}@J23޾Tvlv1裚 f5iT {)]ڪ0\ro|ij}ޫ;}qMEg#2_$ 8ܢ +Kif@=mYʢIN2=ԏq ?SMJm5RyE|fؐ 99V+u FA9?έ2g&.CO5 ъ0zȄ{T74Ikm$>TjzڱA'o= E"eOjq7ڭPcUbV'h8;PfҬ8H0pvXM)RF cKz~Xtq+4%:CxX5vF59/ sYPdVP[Epr3W/[on~H F` A;9 zl!* g9N[bq$㧭7iX}zR҆PF 0c#EE(99g98*ɭ6R%j zҵt  9=+_O.~cjvz4 wj_gߴqݽjK߰H20U}.Iy&=*k%̲ cWӭrOLռ1õ:ImVp@і8[p[ŵ@un.cx#J{hz{O,?53) ,Hf=MX6۬iN{Է0CİFP~u4E豯Ɂ.e.*MB[ q on>Z?w6*4xGOjcjyqDNdn|:E~5kɦ2O0 /=*8.#(qzTQ v=+RIKöA+:Vh@WykKx'8kO)kaנv0 '$*F`n4܃!SNߵssQK:!9{rL~vu>f'c0P=u_66BE{62HSaO{gaه8uilm6rdl@$lS#oN99j#G 2*X'u@p5FD_1}8)timl.1ӥTIx2JqVYw9Wd,zu2VόndnS8+*W\j 5.)PcTɷYPH/!:g؇";d5ic!_23Gu8/XZn5%U8=k*F0H dL 5ڗ;%OO]f;n$)+IE`Pَ/04ʦziz^[4mau qEߵGlp]Mvs r* 4 nP>-)6A즐U{HAUjxl2GJvr<)֙MyJ.Du{T/|TC 22o^y}r3Տ9m?y.LDc7L/ه( "M#2ǡ*@#-Š"\Ǧq[uܡJEP{I {IO: `V<褀ߝv,~٫W:j]>8 XtI[G5XLtyͤUBA(稐c]Ve8_?7jмD!=XTɰc6U3P˯1T@{hIasکہq 2XI8pEŠ}6鿍cVKb!p"?VzKӖIhƤY!)E]xm;VQ%Pӥ^Hų ^ FkcQL^IPps2 jeHRdҭBl#n#&zU{BgqMx^@%JaBU\jK;; ;`1XG2=3S\ZIGC! aAFGzo1V#+ޚw1أxGV57j{UW;8vM V(}jg*zb"H5QqP`Sd\HwۃM8HgFp=y.e z0<!̟Q\?qwʸ}ڨ 98V2Fs8(֐ʐn`E4JcS g \)8Dዄ'S^_]1GD~D)''y/DM#L*{ܚM*{b&rTC*'<UV7*$W.2A<57+eMEr\bI7 bIFX$5P*PycQq$zjHt^9ٵ6>ͨnJҷVNF[JNפ#K@;΍a犣`'+fd''Y65f eZ0Tc s(Uf{{Sm#)C;qXZ&y4nRG.rw ܟs\|kZnnɀ$kZL9ԉXRVu#ޚ!ʮ9 y݅@B*F*/L Fޙ#8>pzS};;nzp]NUZ>~TgoZ첌HvYGNZlPOwJnt@tVŰJTNUWWݻXtMaR7ڒ``l>`HsM7\zsґWt0G>aʊ+Y%,CHޔr]ΖTvs3nj;M5bQ=}k:b[X6{vVu]ݯ8 2MoF;wte0q=kr@oAY]$i|E$ˡnWRb<< ̱I>\>gOLq^BP2vNԍK!|nd~5 Gp9AkjbC69^X!hPQ k ܹ*Ju`xB~Uq 5aڪV|@2!ux &mG۩Pz.+UTP0( qU5{22{VG'ڂ yeY̸ZҬcTg 6(~0eytiaN$,O@),ُg-EJ&U^=Y3Lҝ-M4.* e,PpJǽgQ,Z9)g{V6ù>+l^f  7<`}jglw"Wzi54?5Dj4¸apySI$hD,N2*y0ijY0<#YViV/\pjq>N,+;ÃBMe@ڸ٦#Ic &:4`eMW9>jҦ86*V8Elf>mj6c}WqL`!{B vMF;ka;)QիzC N+h3E1'׭snQoI&6dԴaeZd{$:|n_Rkn7 =;W{ޫ0;GPڳghR4Q[Dq]–k9,W%I E RۘS$LՍ8e+1 05b˵VV%}WZ%Pd>WΒ@ldӌSgIQ_UD qcw#XW r+{K lnGk[Xfܶ  ϴdڞobBUo)b2>\\|j}*r8‘Yg; g|N>*|8H+nA&Dlul5|PQۆ 瞾B#ޢ@;5[P z츤x6So/ c*kƱ\0\G"UA:JUU# W)UI#4趍܎ޖ2Җ2*F?5Y"}j8(4# !"T;Iـa#0Qyxc57'jwu9QVa. 10Fv8_:C v7ur; %{NLnRM(\|n$2޳G[g|o>K'm;#277"2-屗>5 W̓QASʖ?:t#5oTiʽQ0>ui˦O*pUp?ԧ6,PwjS}_Ei.ZVP[RP>nkFpWf>lSTnSUM>Q"I倫KϭOmfM3+>v4$ۅPpTe^H󼇑*$cf9ojylSZ}ldl*}o`d 3E8L `;‰rzRJp>= rE^6=jӍcaH,(Gy TaGDDDہn㏥50Acۭ:$% wN#<ޜT)e8Pr}P19>?ϵWIq#** <;A*AP5qϗ{Bp׻!FT ŒշlUDyPprߝE^ԌF摏iKs[we$~A%ę,Z[xD@ԊDkiD**T efai|Q"c.J7 * :CkJ0]AsH,IG{Vu{cXcqzӁ4GWnJױhtc8VL#J;?4ܟ̇'? u 1,x'Tg$.1ב5Oʠu;fH9bhH}ky! P dp16=*̤ip|9jĿkgc¬KwPPM!#lK'iIĻ-"]?v5PG,054s,ݖzJ#R&P(=Uq299@/ uHSWSr06LTcxFώF8 aC@ [pX#)1ޛ;YPzҟ 4xc͐kH$K M zZJ;RN9 sP2 Ci 78;cv05#͟M. 9SL]lenY7vmY"uɬ}JAw@ ҷZM!;WJ\`8{b4w9V-e;UqD=Ol*FFJuH^A%I8(9TB_U7;0RO֡$pIU<$A-)xnj]@P[t>a$5^IxOmŔT -v*]Fi pEA m6dA8ۻjcU.vU<>E^ޠxd 9Pp#j7yYy@sWYyc>uUQj6$ SRG$ӏ2i$ڈĞ}1DU'>NOJ.m:8#?D@ʹzIcMac6E8ώƫ!*r; v5 1R=A$p3h5i잴.7aiF3׵P>jUCyyc[yDL# tujP 2`svTPGT6~c[(LK͜J2rie)].aRxKY\3RM*6Үw4Y`U%˻`9V}q(]7ܫg9?S'urO5-d09TڎشT6fn*[%(Y85'0i#8p/8oWf(=X$0XFpqK9U aXR؅'k.Prz%sl*SH ?h GJb =N9~\ګmU?pzE "3!<:굴QBe`{$%ĸ栏0$LyJ̉$f>Y?NB6$'$ң GG;x^3RGvVtQˁdh-!'*q&/)"4ڴ!!Ų8n@-"q Uki#?s%:vi#$\CʂX}j=.5|tStII`sO2՗h<⢖iUJ'8ERV~w)J@=cR uX G=t-'h)3TWLQnG\zW UAN̈Ḗ=±5B)<j'dqJAFIo/̑{ ͖X{oSZ ۽d8r;h1ʏմsRCG/n5,Q (1um8rOVeಚ͋L2J^4zuK4(;fclK(LS"l婻qRO4XV'zip[cґ2 ci#b & 'R3qqǯZzbcӌyMb )֛'`G;8Xv>҄E$6L)=i%zn&vqGqM.$BzWjr}^Ӵnc*j^ۅ6vz~i;HPz-O$%ܷ.٦,S:TW 41QA=*dFj8ic8v1q1~e򱲿Vluܝ_Sdą1Ú\؅=h$6UHs`mҧ#.G 5{w 3\ e܄Ty+S*Cb=:#E*jrR ]BDJF2wmVFb"a=5yGH'IJ]n9 RU_;(*A'-RTNO_0 g ) v2?9Id$@rɓt>ᐛ)$o3c夐$Wۆ5ߘtUc`r犲r:Dz$ !*58CLS>hs=qU.~L5ZUKdK͐2ږ-!8Kk|V'hV\U{U䨤 Қ͚>Qy&-3jǔ A=MMs"Ԁlrx*ΫxbHDQxڥ.C 86yxV;bUҭZ8XcPik1xXo&x(#{Tx$ ~o@jΡy<*7y&eU{쏀ntcUb>U6yj8@vyjHp$-냜$m2G5ǡgI8j[m@ҿ12qǽHJw6SI)\ajMqNI4dy&FN:j=5rIJ› rrW͡drGo9y[/TI,6I^gi[``ьp94( o*zJ{P@%ϿC4[oH0:BO')a!rIc)Gss)Ɍˌi;/_8I2A=\jpfhO֠`Y* =*FQXq |B)$b8ܕ<ڮIrۋkv‘ՙ& z*u*D& irıAdD2[YbX\9BKtX-KtlZm.G-[QxUϽUlȯOZbӖ gqk(RH$0Ojh!vUe2Tp{E`i*Z:rX* E*J[Šm̄U]Z*zzvڔITʝ#i ODn .2MIklvKRFUTbOڪjN <lj#Ȍ5=UBOoQb[6nwj\m@^-!'A^,v P dsީZinY ij=rJZzj+ bՙ+`c 0BTHi2jE >r;qW"T<8j(Q%889䵍4sqs0UDV;5 ) o'UfCj C{|Rt@j} ODT(xRLsHz:Q)89A֤ Τbj,aaX$BVMHʩ§LMHrZ.eF ?V 雐=)mkiXs)YFGNIU=Oz[DyCK(8ڼpIqz2ZqaӮm 7m9O1SOD0=BY>aU4Ba@ZW& [ڮ$F(d\XS#Lʲ* U84&  U٤ aWgcj4b*ycUݜU39U?IOHdu9I c֚YpKIP7҂dwvo ȩQ { |SoA 0C c`M0f/9߁1X7K*\1#i%P5^ Ojncf#˷Xsxov˳u ļf׎*^L2F_*8v,e?lQs#v*}4yF9U9v5AV立Jq|N@g{~#qo.ܬzgRl  c pQƖeIe={T%g-jO,Kp *ܠ) *(^*QRZqZǓ3I 8O(w5zJ,E6yh[$Jm(SY=FNߗf{$k+ SxI WsmhBT$5f6mF6'@ۄx-O?g[nNVFb6nrj8 bq7NLjdyn.^nQ<)J9./iFکOxJT"\dԄqA Fq.<.p UY:֖B9==aʮQ 3ʇJ_U}UOٗE# Sͱ7cQjm^M+@SU|;DWILk~X&"cMǠ"s>ܓܝuqj$3_m$Սzl^T ( >5cS}ݍT(ԸW`ZG%3UQVli3<t\`TFi/\gc\+M}{Տ,v+ ~K$v;Gs*ysg(f1W+e@&}kOFWη|qcZ٨y1 mQ{:z+7GWMu1][B [5K6Hjk jVU0:U{Ȁ5SR̄7cJ^޼ep¹`rܻXV;QuiOM* >4}7GRh:t==ks֪rtۇB֪jy:e@H"$=\ŠfӣI$oKQXU`h~dMIe 6@Oi|SƨH=PRx 'WOhְ;O&2vUEjM{4mO#=sZ_K^jKqvb'qȪsF ȪܘPEiAd_N.zU,n_W5zU擖ңO`İmkg$^tvvE-yRsV/t)YO>}=|9ǽ[YlVe]O3+,'$Ui#խD0.xKÐ}>*UǥU&S6Ngn֭*YAdiQةo2HsREh `Lj+dQ?!Tl шUP3/gQIsKW'?!X:LF,w=)W2zd~Jfwfo>ǣWKm'z7呭w2=Lz™1""s­n@p~NV]˶:=AB~GPr{_dPOGxm` s60@`gN|FbSW+O:Gk=kn+3mIp?~>%(ҳ|@t¹̪YPn.'|mE 8Qjx|qsq ?N+2QS4hg8!kUqf؛V,LpU+rxA<+ɬ]0;X6;8fm D VnoLwe$:æH9c '$C CXHR?5Cq0I7&a6t( zja9^ )FYK*ʎf"T5<2r1r>b0*Xŗd?12l{ٲ繫%&~cޮ17Hv=jKj{Vd~fGsRkG5 !ZڜAnOȲLqH_7`sȶOG"k j_9YT3W,u$rF֭ 6[Ko'BFW,'xn ktrAV^/YZԾKOj/Xnņ囂M`X=Þ@\Ʋ@Ӱ ft7 JtY4v$Ҝ=n=W%gs]Yh`[)J~QEc4Q\eՒeCr?s:jx`uk x` IfPkFrOɘ"Ě\01,+rEje#A]0lhtRQ[3EyxǘX4MNVң]a!\=),]RYsCu&bSqVw[T~yqnkm4yhRXw,iʌu:v~Wꢩ*ciZ9r(s}hsMks:$0#\[â` q<.Er0e oԱ.qjkePcSO'd:u5 Xz*[| )&*!-NŪl|Zw]cM?؜ ZXpŠXUInrrvuxHs&W[;>sֺ]5١#Zjj+h9CTK- YÎPMJotuME\ q4cjD3ٛy-)]͏pj6{Wc( V[W + [Hfdn>:Uiw,.PL(r:6*]RWS͇{խUYpqКKXr0'֡ m$To|T:% vQ^2ޅ"^I֣1j'S+Zb*z6BhRop!lz_Kot-HIiti?*87Q]ym2:r(t c-QE8 q2s<>n/̍ڳ5<5`2UO]!' W',pW Ts"ơ\׉buKn'!TT&$0G4S,1ED\L_1sRZ7inn՟ F/#}z;qU9eR8AT9Է;PU{k(#uZw̟ҟ4_ilecU=$\kvR%Tr6AZ#F{u'zgCK$ԣzpAԀUO+:0OJ✥d-00 7LЬvcM"8\8`kRg5^ZtKh k%[ H w6 {duf"aX`3RT%9ceEa".ar~;}_YV ku^0x<²u.X.+/^,aҳKVHH|FQFvh+8P !MiC<ˋC#ҧYncCV,ZK NbUu5ȀB:hvW0LJ1K skk,mbf9b&aB'-KRQEQ֫mpH MFkx]'a*찤0i@dy۞Q5KĮdՑMS\ɪ$iP3V'ik!sEL=+6BqSk]:V(@Ң. nf=;=GtP[ׂ("6ܓ+=]/֢ ҵ̇'ZiyG;ETon/_!Bx෹l8-\؃͐t 4dU>'grI=0<}85jQ9HHPK0vJ/#B:=53GjnjwdJW}p=gi'+wp*\XXT hمN >T@5_i"F 3Hr0EW3œַWycnxR>v/o @<.'` +ְݩGldg9v[<_TW߅n;+{b1DeR%G[`펴Vt?Yisq /YX^]IB/Ykqq BfZ+iFsVl셳 W1֭Ny!3XZxW )S1O BcUsaa8ҵf>)$+r>:jrmXp gHMrrEtZUvVtw1=tN.1Vflqj[}r̹\|o oxZ @_N*p7jpF HNܞE:T1}]gI*`tڨSi &$Jr6 :'9Le_$d ~WE^_6%x5iseXT}jilk:'}F#{z},MYsb% r;կc)d=Y V!(u${ ̑F +#ct!ܐv.ܰ,)d&Sgڤ`v+]-(YL`3YQ A}(*+N-2 65ۂ|Zkŧ% Pu!.$Eܾticb:u')*(YDQ8G:8⥊tD]ZErF x٬Il z#5ks+SjAݢ2z*Ŷ 3 T_#J<d޲7!*ј]uTn.*hHkpREBQQNΝ)lc7ZSu4`dA;g8bH?Ju6V xw.L'}HrTf~lnyq|#mH*6 cjgj?{B{rۺ͞1r۹5F{9 NY$Uݰ{TIgt;K% iرKPj]ŦTV˹n/+dog2HAYwwr]^B}C軜"S$ƺ->]]`.̗q[}j4ʭĀcs)TMaAX1V+& #V5j`309*΃na G5[JhuIp7ә^\-C+'QL'_M%hj ˌS%(e8ߙn-MaVڢ,ZX_,[q YGHƳ;cjpL7J2m8]ӴgB1]vpV5XZGcozVZ95j}p1OA\rn]j|YUTדsU$ ~ܻ"T9{T~x⡠  0?Ḁ ;D *G'n:/B9AtRTz )d/؆ߚk{u[;dYT8,`HaH"\Q6 £6οґMuVR4r#Iʎ) H6{bl:d.=OZtH#BM7֠VFϩ3[v?FߏzVBݎE`9B_eIo{syBPkK,| j bx"߈ Qk3Bg=(wMbӹcAx:je ĞjƞKE~&iiplfU]q*º@1L#$evq&ni3myW)W`@A+\1W/ s}괭e+-$e޺[MFW[h_m}m+ba0**ZgSq?oҲuPYs3~jB?.3> oZtۛ.c}jnP$M`]۷-x{֤Zl>\>$dh9$Y'tX2Đ*](#VYnIF$qbF}j +1%ʫ*ԨHc 0Jc@8U5[p6W?jn:1co bdX0ZI=zՑ~*U֬,xL9\G= rzƻ8`7=qM*pQn upDLz֬3,j?xԮBǷzFH = dU|懅/)@(hFp)56$MNOcF))Y@Ee?QQH>Iy%ԱF鏕HeXK3zR,E/ZjC@~ݭ"6lc!8Px"zmpR&PpN9./>IpV6?*?jy5ȷ-$PGSYI,ۖF?S{dr2k(O(|sM#穦>IMpO[Wf1{ [cr#=cІz|W$?w 5;ǥcvb{_9.? OflF7\ K+p% ׵e\NBu3B^E^ ͻ$.b꧗oAynsǹyn퐑tyUo>lEA܋KGkjo"ݜu>6QԤ{XFrkѭ-,XZMykU Ga]RQtjT"P]%y'=VKHAwrGך望iX}v7wT>IV8 "KpF<-.%=el:<,#qj%NwwW/pa'ZֵV3?wkyaX{5K3dICm랝6qң`⢐rE5A_L}Dg_cs"BzBZ>e_5nqQ8ۑҫ6:sMVX>}isD-,اxjH[ ^*jq02`ՠHpAUHT4;yE[k "^3EXR2sAYSy iI;UnUV,)S9UUsv >QZXm܀A;.l3VrC0)FG dUkmZP#03I&g*4vn&']D--cCZ5 ilU07(õTI ᷶>M i"A891&S&o?9 ncIc}:WcÈ O,~Y_Xmv ѹ[[r0䷻suoUٻzcL7m &bO*U͞@O!OJ ,UcK#HO$MU@9X|n(8NiCe#OƜ样{{iR>$=ߜmA;8+n5B\c߭m֩ g1ֵ]F?sUH4 h(sTY-< ~OSqI?fJ"WuRIoj8&o pX}6ݙ*?ns\ko.*Q۵E}-Bʫ^x*@#z^Ue6+BIS<7qڀ} )OB2Ɨ40C/_ztKՏZXqQ ` 2 2v1{n]psʖFQ#TeҚH94C+qN0`qOZrnW#i)럕6Q:AP9QBapv%Nj8؆RϭE8*@<[ 0I $m$Z)$^)$"FCs(~UA*;x֠r[{ w8-m˖wsR% N8m9gl{TVklfQOjmԊ7qSP)\tUi$$ p:UuVH<iL`<'iWu' ̄ VY *qS߹ YsQ+M0("mPgʪwDl02)ڪF@kZ#]5mo{"P=OsZĐɩ;Ե%r:@9RhvBꆡe%kBvq* 0$j"hTbqP58`pg<YھaY7ʹxSc˚~ϗhjP;>'<)#J#!rI*B9';x(%u=j@QTu=jE]:bOݒ59n҄2 a"sjS=֪=1'wu;eK'hxgbR99jA(^3Smkikӌq!bU OIWf`ц'kL)h* 5j]eQo!O;w }G5naRp=ORE- B),p)3*JȺ^VeE;%XA˫bBtTCe$]ϽTl8zoxrV哅ۧyAͻkF@[$*98Ė!EJ7ޑT#=pJj|1.܁O6a9<4(۩TЩo7 HRƤSnu4]Ȼnc֥ۻaSR=z(*?MG9}m1{S-;Smш,ԯ f遜憈#h61io)SLX=8:ԙsG8N*=z}*I@Ǔ')`"Ӌ?4+?ނGnVFCl6vPI9#8ܰ҄ 7 R*=JHeA*t; 3튔6уgҧS(?6})%'6Qs<`Uur$1zT!޴z\L=>Ni;HG҅f R<S)Y9V/Y5^y[t&00{EG,y 8\ d ҵ4}YV8qjѵ8mSZ^4?l [kwn Ej,0MZfF^RX_-޽ c}jv ڍ<IW'*O $ b8H0i E!R9j-:ՙDGS0TtenYVe_P9nd9<5VL6H)Q,p+G!J\*к9'['#lW* Ԙn$M5'&.^ծy1Cj%ZR/CjĞӏWTT˱㹬3ܟsY<;4Fj #FpQ׭M@(r?Hdo'LgC̸,8MǠ+y@tx#F zC#'8ePg<_@N֣ $ $6XztE TyϘ)l`i$8 ЊKuz@siy<[;ai9v'#OeFmÀ:Ґ J'=(I$#'P8i& 3aM(MɅ$iꛐ18`~p2^In4*5Rg\s[p"ieӚ5(bSYlO%袲-@?K Ѽ[Lj3Uo,(Cnf~ *e g5bD aeڦI v UxcjݼJ9JoasԳ̠ 1&bq*YI$}1P%);WK^"glSXTb<>iX[55uQ8,V"Wd+ATī{Tyo¡Tw' sI.phc񩕲/Ԋr8⣑{/?sMpH*? hG=ONzRl;rz&R_i 8# SL ^)sq桏tsN? <=Oc TfH#a:YLd`0]1K9gi°*Snv1vzThxy qRN=9b8T.cCP(Rvg?xk}EG+~txSL@ɒ@@*sR"Qs8 SARyHolӷC#<˵>O~)U";/N6:H*m´ݖ'ߚW$'ޚ$.M\U[qĒ2Wb/5:ԈD6"j{=1s٪7ҥFB*tKʁ£ I+opi1RHtzЊ@ /M,jFNqJ2E jk?YOw'o>qTs3{]oҢ79QFޥuP#뒠NvE'CynI-{T̰gmȉy;b@\_ZP֡AILgʓb>9TmWרz)m:#6ЧhA9,҅vI#*7T'A=C$X `ZpB2=9fF@f66Z)C ޘz'(k*ݏ6`"#H sND/Km(aZ[Za2t=GJ6I =0۪-ә#@ڤs4bP*Y̘VXcPr0zbN~cႀLȨ+OBt :R'Y\~/CҬD\m{Ӝv=M=e|5BHU@;:TGF)YǩUzBX*OSAHʧpiL{ou="D>Pz! )cV2:}*bG__Jp=jXT MHTH Kc;*FgEVp .z @i S\*vJYqVAؼuSTt`u*$;ڸ=M-W';T7=)0\zm83sڣ-"dX)s=i3֪k$j4OUӒO˚Qx#D*lQHF]DmǓMwj7/5o#+QeȫP~^ޕ/b/S5(?/j/Si2Gx8<€y4SEm=E<6=Tv*/jX{Uvm[L`cZX9Q=XM zKd>S#̮GZOX?i%l=)2IQL?atsH` ;4` h IH*11) @rFUHǭN m8Q2G.0sQ:#'֢uHю*y rj AA[9|cFyL23Ͽq˟xCqmcj{Th37TH$)')>YϘh/ wހT(;J5,@1ӵ>%_J>TN>Tui9ޘO), XT.wuSB|sڦF={T|NzL4pmiUm# \0ع*,dث(vjj& dM@E42j$p:p:k|)cVjfyjmۜfEl=kn?&CrOjuWlJ魌z@'S*Gb)eaAF`}iџsM8@ɤ5o=i&? Ua\7Jч劷 Z0|ygr9maeSfVH!ҶwPm}*8AP"nLH}sO 4q9i[4%\UHBڣ/s˕?zS"8mnUcqF t9'NܪG֞YA~ɱpI'#h|ɴsU \SWe%1iΤ}1qn05Զӌ#-԰c$gSLHzX} *OX*L3cqO}iυi͎-ynaSAFMK |d\tK!j ԇvORVPx0g84ϺO`&z=A<=AjM.ROAT iJN3PDQ:!%Fq#)<'z'ң1!VEq[UP.bG=j'bGLye%OP?aV l(9Vƚ7Z*nUsT߃3Yv;sR2NX~*FM)vtu)c j ǥ1Es\fQ0U4A*{bzj2 ñ^E KޮK -xL7&ݭrM7Q&ǮZ- Q FA’$aUevby c1'A$ ӒzUJ` v8I6B7ʃM4e,^IKcZNew"Pp} ymn^"&i\`/ֶ;==~e ҨM oBIӧT_k u8$jԙFN+ ?ǣBI 0K֞-HUZHXy Xj 5Aݾ~ 5{^rר.c^?Ʒn=3OwpT`}MnݴZVD `}Mk\2i.0T'}1cgI/n^B٥(C@9~Dw^fr3<-OKR8(wڭ6Gz1QVS,YXi^j1i6Zv>AqRrH4vH &@})d-K 1 ~5cGiYiXBWBm@nk{)isUgr yCTGKڣ7ڈ ;A:Ve%V<WQc#Z6[{.ҴY[tYq$ؗIm-דM_l<^´t0cX\Xk7[ԄNT4iEV4i>Z‡UeWTd [PHjtLrT/@x*(jmGQϱRmSG&`I!N) cRFiF;{FiF)n{R ($)s<'?JCw{ mr?1{.j3q>%o/'oҜv{ӣךrr ڽvaN "|L*95Z0jW^xm# $zTK+E ndX@»Z$H\*{yUYؖ4*oj)p5 v38RqP@Bk]6"t=u6ʰ@%BF*\9<ex@STQEQEQEQEQEw((o ڛ=5bvn|5xr?|֯gxl(b=Z~$8 +K]BwOlW,ILs\%۞Vc,q C*xFոF:06oaޞ"qҭ'2w=ڦ_ݡnLKto=sOMަS֜ 2\I=[= 3s:SJe)NOґ"VeOxЌ)` ?SV໌/RVV{qUQb@dU#z$+>) ]ߥVI%mgpM,UNIb2wS^31rǟzx]1V4@ zJܵ!1cR[̏XUiKprI\@p$ԐNXg֦lmP0֝ܮq: ж3}V4VSC)acTc3"7zό#m^$V|!ڕ%IrrTtڮYxrg$JkW!Z\ fh 3Z!n[RԔQEQEQEQEQEQEQEQEVuDx_\5,"?(Xz}3W>ź5Ϝ`u5[[;DQ@UO"1qS|e_jtSN;p:_Ӄ, iRpkAӞL$l\X>>Uh$1[K}>&v`3Q)[Y%TaVu;8 Q28T:]$8G[Hei ;iOoc> T3ޟJӀ\FB}+B?5F,NH[fA<}MO(()(()h((J(Bv\# iGa+I9|,-Z(L r2ˇv )%:"FIɫEN\Dء{NTQc'ۜ(6p!y4Ҡ6b=*(H}3Q(R; l#'x3ҘM8ΞK_:S)}ݱK$RK {G4 0(6tqnn09MmԸ[xIg[aciRYGi&ǍXmp9%?ۺK0j‘,ʊE,(KQIq B֬*F3 T[R[.Nš gQF㎇iąNvΈwN]UIqN(J((()((J(+pPy%&*^]ڬHKK[*x2cP{԰&>(`Q6@9SNMyU;j됾Z9?Nvw~MW un Kl/P-%>rBYTh Ap)7J͏G-!b;Օ*ڃz^8?zreQSo.vqjqf%OkFc?Z P6Ў}QmSX=>#sS̋e ޵3FTvocQY2j(=2s L[Ivv[r3Zjol7kgh$V2~gdskz##^X@0rP0JTQEQEQEQEQKEQEREQEQEB \$ccmXJ%QڤONwcR@ ;T;[uPthtUOtq9Ci4=*VWbAPKv C,"F xp7A5j#Q\{T{"]mU?,a=W}(O'F'֣|GSQ](kY#V6|zՌx^Ӡm!kMҝƙlmpyM6b?3Uh@oWo< Ud'Ib@.<8bG"dqVj9+kV"#,7Zw*7 T6v-o͓ iWyP6nkB6uT-QEQEQEQEQEQEQEQEQEQ\xR5ªyL!*BY].FjxUS 1mRz*Bi#h4Jic1Mbo<ʚ9Tnr__OpC;j;eP=yo9ۻ5j6L}֭ 5X}HrOV*DX&9?JP`w'?ZA ra#4¦Nh ԈKO3znt 1ӊz++Sʃ1צjեH:J)m#*ͭzuVĮꢬ[–0dojn7fEׅ%'>. 1, ;*+B8 *ڦ8UTjcMF6->EQEQEQERE%QEQE-RQEQKE \WR1@U09I8N$\Rq8;i>lP~M3-;nS]* Fc). ΪG>Y r]DhUhJTHͱ2{ݹʨ=)7n!_0GF T#dVnDCkODE#Z:L[+#}jk Ct/㲷y#?¾#{ εS$Mrs 1%ܗ1\=ē8kɈ9n},1I]ۼy=DqUGPcw 5pOP&H!c=@NZ =zS:*r?Z4ؿxHu&KEQEQEQEQEQIEQEQEQEQErѯ͸\R'湕9=1gnGR*Y8ӁB?D󚉉׽)Z穧7ȾSi,nR?֤P2r90zw:TSvt[⢔361YD]Ģ1I.V\Dڥ{i˒A̟p{Sd_jִWy ǵo(m25`E֨qr]ʃV1i7'*(HUucyF%WɄ&r}Gz,j)'ռEA??z"3})~'~x Ҋ(((((((((Z(+B9f%n+b͒: ˇq1VqUO|THvB>nThv昧7zI O'ښ۹ퟩ`x:51=dpV ';vy&8ZoyX|I*U-O|~v4Ġn԰^5ǥI1y"1 FGWĶrUQ{ UZnl4bx;hC1bV'94f bN9oJX <ң0>Wpmc=*{kW jiv nZf 6f- =>k֏?\uŠJ((QEQEQEQIEQERQE-RQEQKEۯ3\\ Zb]czVRjYqQ8%NʘXL'M}IL.yjhOjxbϥ2Tbtbu5]L00dqIGeLvn qO?JiUXICgSաY4OCU>դy覝:c'Q<5icɛfV9WdG`yU%T ċ(v(_LTG5(eҴm26!縆=wymAlp[ t*C gjyZVr͞+%i< ]ێp)",x؁wzt'7v># kD[Ui8%@&HJ4w<KKE%RE%QEQEQEQEQEQEQEQEQEQE̸؁Tǩ5(޹06qOQӽ!<M!87SUɃ#*_ˈ桖O*&QsMb~f)P}xuv2۷/uch-ЅN>cZVΒ" sSKxżUڜ⥹0|%؋ԗ71pj8FYq9fcި<,Ǯjueԡvt R٨Rx HoG'dcI$Þ=+D*t* UU)ԴQE)!!Af;GsA=;R\ƃ`{ qAD۰q"6nSŽާ )lV NIr@=n3!V`"cTJ#&r(Z(((()h)h(m0G#=m:6z {dJKq1\q1t~rIu#Xw[$p۳YWX@T䚳&cߨBjK1EMl~p(OfjD8+ 0o }+T (QM 7vi5J}5K龵{&Ȩ^5Te$`UvRGVmroVf>L>cVh׌jlUJȆXt67ZΆ89 0T%bNU6if#?JҢ*{(s"9$gZ~XF#WU)BrGZ6F[I.GGʖ-ԜQIpneb[]#NXq24TNS`ٗ*U0cAϐ<2do5$ S/n5RTS.Q~o`+[Nľa裁Z6pbj(z&' y2,b.=־i;{T ē^wn)$Bq"nXU4[BL{YNJc$3)Nb)s Y`s׿\TB"rw?8&ahzuIOJ3Ȝ1 Uz*ܓH\csX Gs*'jN֬A$m>>iPʮZI~S H'&`Y HPIPN`U^Y]V <M5(((J(OW%{1C F s&D_z. Jl>TI5V 1j(mٛͬaE xШiw.!'Pf JTǝ步ۧv$lsZiigiN=E` {Tq {T}1ےk#wS%B d wR$'ڳK=@;Gzb),{q:H]-X5R9Py"R20BP5 3ޫio֡"\)<WTa@5@i( J)ԴQE2SG<^OlYx:RGF.sXi;c*(3~.jOQH@T* >RCQ IŔ#9'$8As*}9.*[FRϼ`6^,]t)/0W$#lB._!K PQE-QEQKEQEQAErBF Iq7 t>W+t#.`>r__2T<Ϊ2ƬDgP24;*0} <cKeX?JֆMt)ظ$rkr;F֠ݑ sU+sBGԚ_-\qZ´[^AߵsIn&ieEs,nK(ȑ H ycZG J50y4vzqNU o-⟃۩avwE+ҬZ;Ku8rFV Fq1x 5y9QEA!ۖbFW_,dzc2͌U9h2>9ҕjDƒOҢNbpR3J,ջB\ _5J/nI'X>ZkJnZa"iώki>G_&?'im8O1@GCk}֢$. Spյ웎vnbf} TBO oU∟ƱDz[`N6 {9-hx<՚ӫFM5F)M7&AUH`1NRJqzPHpSA=;Y\2qX:py5{pVȤ;B?Zd(cˆf4pqqtb}7Z|jADm >|Ҭ(C~U! 9Ҫ4ORiɲшN)]JenoۤF!@E*J1p BJ?g܍ZV<)r?udVl~BZ撊JZ(()(< OBQ.O&Lc=OJC斺qEkhArIEh+IY f @Zl@+*Kns n徜"p}YO;Jx J{vQoqKr9>ߧri|At[eɔt\BKWCH qZ35 /d\o)9vbFwi6zV\2Hd^BrzU*gk_NRs7_jѴ@{-[vPz{-Š8+RtqK S]EH+P}k~زƱa@5GSb̹IY:!Cԯkޛ˾9%:-Aa1S;co%Чh9>Zr9k͌p?Z ZIe8E+cq|~S_´5Y\ |dA3P\hs3bTF${ά%nI%ڰDx ƴ4or6C~u{Ob ZBn1@'?Z ;{E--QEQEQIEQEc^ ϥr,~~!2-*1-fU}k`=5ӳR瀢©c=N}2!uq7Ze&Mi[ Q֦1;TUwcN]J$bNYP \Ψ7<{][ 4n͋[u>3c5R42R95)f ic@+j(9b@=p9 d é̪MEDp9`3,H 1q#kixGQچ7BGN. "r{*4~ެ}^2HSI[,ҷq=`sޤ]\Մݷ}jU H5F#!w֯%#H)`wU-RUCjRGk7LI9''*WxĻpjESrew'ڞdfBǥKj5m$Y //d[v~lG"a2J7Sɮ?Zh(((((~NKu5V+5&>YImmB$:ՏMA-v :؁oN\3/fcsiuMj!#p-#;,x+3Hp:hX#}tEHy2I+wM[Xw& $C"4cӶ)r5$q՘CG5,q*sRR!=*n47WW=wvp)>c3LXUFJ`zZ 97봿t)tsYȾÅVbQЊɰym`@u4+)&$eEj;+9go1"/]w&֮V3$ӢKHHK3[nx>l*ؕ3hV 2))ih((($h2J;U;e!t\;Uq;,[BF+X2KY?I,ұ1XI3I)-4sTnD6 Z[,H>fֆe.Ÿ֧VMHF 1'n18#JbHPO%}G'c=*ڤc:+#7>bssIA1`j;}W̡'hWd+ӝ6HòE9d7ThKT`T-sNӤcxҖ܏ҭ8eg["PG8 ZnFVNda  911!cmҹȭ^mұ٧ephR"-Q?N03>N9$` Yy }vI wZ7*l=/M)柬̳^hN@yQu6HUSKGS]J¬[A#*xc{ː1E ޺xR k K-IO; i4p3Nvfj=EsO nZY08 <Y21 a7OO6#I6xNB-e&UK=5%w,qQlک}jK 0*[wl:Ŷ\kAQF8U?J%tH8U\#ijG~\"VZvTVR0ykUFzt0ݤ c*yu氵X(?d2ܔ$Tv.bxS2C?kH$4dY~yw544ر\͝︓ؾw\]Q%- oϮ)w%)z#ɀg4#zKB&ܹ'@jKKyOu+9 ڣHq#I#OnI$2~^6Bݷcڦ7Bb_fމHcFw3ɢ['w5 o98\5ԡLt3O ': Lh֮n都}7-[Ю lַ{֯CIEQEQYEʳ#-FC{W>۠^*ED.03jʪ(i?Ok=C凔ns6#HzZn5CZ$gHd@g@NdSVD-ۏܧfG=V.MZE{fǖڹl1soj]M\GesU(W,=jʧ|WS$C?) UU(3L''=@~l^y /$Oҥ]c 5-_dftfV߈K5~Uo6 pXݢg9]2Cy'%Ü y| {(1xjΘvʹS/$>p(CFW+iF=W?Wt6&OHջ+f}?w֠55hhj]GU Qbٔ^Է1jK2:jЊ13aZ\XR=jQ<֯[*)9aE%[$8ɨ8gEPzmhWF94e(6P LDn 1r۬&4T X3y7p޵OLɂnt9ᱜVÒ9>FhlizԃJ}5ٗUR3ZgtuzQIERE ?諡hZ)h(((J  @--QE%REQIEQE-QEQERE%QEQIEQEQEQA4P)EQEQERE%QEQEQKEQEQERQEQKEQEREQERQEQEREQEQEQEQEQEQERE%QEQE-RQEQKEQKEQEQEQEE-Q(((((JJ(((()h)h((J(()h(Z(((((((((((Z((-RQE-QEQEQIEQERQE-QEQEQEQEQEQEQEQE%QEQE-RQE-QEQE%QEQE-RQE-QEQEQIEQIEQEQEQEQEQEQEQEQEQEQEQERQE-QEQE%REQEQEQEQIEQIEQEQEQE%REQEQEQEQERQE-v(((Z((J()h(Z(((J((J(((Z()(((()((J(J(J()h)h((J((((((Z()((J()h((J((()((((()(((Z(((()h((J(((()(()h(((((J)(Z(;QE-RQE-RQEQEQEQE-RQE-RQE-RQEQKEQE%PFqEQHsۏZ()h(((J((()((J()h(()((QEQEQERE%QEQIEQEJ)$Cn;42d7ɎE!?qҙ珴,Ddj!uږ0^wxcӚV.1E%QE!h((Z((((()(((()((((Z(R H#tg/lbɔ%NAYr~*r Og4 >kKL҅0jip֬ dU|E!i9=JB]pF ᘞiHg)`ԹsOQKEQEQIEQEQEQKEQEZ(((Z(((J()BsjG;TJ ?27C!FNOJhcJ&zU`B)h((((Z((()h()((hhcCHLXgPm^4F+%BxjJp+_O֘g4#v}3PY:^F TgEjԓVm<8zخ'>'C3aR —ZyTsҢ?/zF"1ޑ8ӽOF}W$m,GQٲ^A¢z2mcǗE7S)ݸϭ4+oI#\)8ݰ("'SP{x6>2p|QQg';MIn669{;r8>QE-QEQKE8{уGjZ()(((>ȅH?fxf:K PFmf忴?3Y:snDQɬ:]ʠpzWe`0rv] cֲȽCK!=EsfPIaw;V=}dH9jG:L\E2L$g*+Z9Vhӣ 6DiQޱfqE]S\4$W8&I85a' 0V)[Ipsv9(tv#h'ԮJ]]q]ԡ՛ks(YwTc튞%pN{5mMhC:~hgڃ;FsB\,m*5(Ľc)O*@l*H#Q V,2߃]vUԄ  ).6v2LqA#p ږi>n_nBSo滷{v8"ӮݥB.8{Tu̗6in2M"\$j!E;ӯ4E/Z݁bfqQ< T8i|✎eNqwYWrSÌu:u-Jy]Uw5\Isx"Vl.=kY..DqHW qZ;'Xȭ]: GWY#[xOִ,"*UՓujREP(J+7\ mi8 gkDE<~Y5KV ,?`[7Q+۞tF<Yc`1~ike Zݷɷ6mռF x-RB#eGaTq5p>d>_R|A/SUYPyq;5^InA8= Sgb@Hy#p-'<~+,9;O v+sӸgsӽ"4L0Vඹ G*0O!/ ҮNG1-{U >h(v=?ZЊ͝5r87vS$cqU58m[joc*#yM %W}K{yRgjSK Rʰ p4r3T%#ZGLVtCB_J˒o>VVT =kW`0*}Fh1Imc;=ƓiʘvkCFw*ƵF0?ia: t ch؂9=TT})%fB`U`;x gj$gQpQm X;QSb"ȠڤTw#+ $YQ¤QE( w'nu9Q͵ʹ|dSD #:T܌GS2r8"mb湩]R54I]>cqlV-`ֽ-՚(()j)mWBڟڠ'6>cQI*;dv@*pH:mj\\\UiٟrF1}k:i&fcg珩g6>^f({z֭uQS_.c^^ '=nݸpj4.B"gBrYH%-JCKE+.I A6$1y,e(0p =E O/Wcor@e-m85d[%#/#> 1 1]LqHQ+}cUERSԟNRU >Ԏc8Y3V>:1WjLm!zw>m'`cdF23iȢ2_;*`7VmrYp tN`vXgX#Kr(y/VHT_ėR=؍X`j杨(,}9vڛ[hX/<~~Ť9h?JT5j3.Aj23V4?{uqkqv0$ա#Vk֝QEQERIIE#-i  F$ x`P*k]NJȔlu? fv?0čJK\w<^;Xc9X--TrD- HT7_JRҢ Bƈ29ZvA'9>՟s*(3=Me׈0qOIU`gURNv32Z7ǒ̀6Et Lq=xl=ibVKsT5Jv Ʊ޲ōxZ.{sVv9-۞*,ȪjZkU'>%^2ʴl[{eAԌb(((k峊kP18N})GLR32i!yzdF5tۮaL/DP8*k#P2JAAY,RRǥQbI~=P z ؍] w'jE4tɬHlCܜ$wA*õeGd^L,7ر[&ȌNN+V͑N_kdܔo'e($Rjzge/-R_ʈE*3$ȓ&%t'h FEB1֥ar6{ק7B65Q 3rm J$Rx>Ԛz$%"0>L{;Զ9k [jWx8س0px5oPn#J9c"7 ҥx-8mp)ʒaݷڟO(b+6aZz\.e5}_eqG6rR[ QNN{4moQU:60#'ڝgvnc3|6s2 u*E)2t *Xڀ"@:Ram%J8Us:aԪPؕ0|x޴RwFzuZI%-1)< cK.~b8M dpU`zin[֭[D 9בR($1uF`=:қHBEO,kqQm_nUPmSi(e8؋@%SqY͐lrAi#bʥ=+ؘ(mbUz֔Q(0Zw9A{ֽ'!dF8^y Q/j~q}9\@:gd`-j~9xCM̾gݐx{ZU$gF&0;\+$k5܈vgN=v+fC*{gxE?3TZX4>69ĞaԳw⭴1ǽ*i. 2l\I4(*,֊Y2-rOϜԚbMbMf^ou"ydla4lZ+22OSڪ#F:RYB #Yƪkrt=5UX:9݅L!% z{S6U3L7v+" NpZo Nv< g/ڒR`N[p?+f0V%^ QP{ }-QIK@$ҏ*;<ʫ>Z}⢹_XB ӡ[s;7O$W<q"ue~y1%cU$bK ZHa(䁓Shsr1MKKR=yۨQ{nB:n V jY%r=6cwɜjxOYPOg*8mEr]1ҢRS2.6z)yw`ԺhPn}ahs%Pr3֫jIq!(X8M+_2OC(ՙ;zazl8g{ELt 䲪k;Y76ϧjS@G^+1g1v=Zƚy/o>ήȹہ:t5ϔ=Z`/8V1aǽhLҳuk `U-Ei[NH<Ɑ$[A( \? Rk W'.҇ ͼ <חU۴ [a(71;s\qZ2x 3ҺsU"OV&BJIaڦ,Aݨ_rkQ@0+gRKEQKEQE%T](vCd* a =⢒ef}6VE܎2Oqsd~eM.h|`wMC'{sW,aY#I-ӵ3Ҫx!xe ~[ZPL}A*(2\ycPػg3ުf̞tުj7IstnF*Aқu33rzjHZ*ki[C-Ny#:yj~SժK[ *mϡ= ˉgԶ)o7sGWEejFઆ#u7OH-Mgl k6;!+QMUka*9[ȓiITzV%Ɯ%E=+bVIwJ+Nkw ;=mDfk !zjRx/o!14#o֤4'o ޭ֨˓Z<5R[`8H^c8%W/KXK"H Md}8MyHh9ʪ67ī4bxfYYcCҙZ~TBz[$r9\b(($FBH;R2R+TpOC\bQs+s#ŷ[yX^ZLnC ?뢮)((Z(҃ҊARE%袊)ih)(ZJ)(Z)i(((J(J()((()((((Z(((()(((Z()h(Z()((()h(((()()(Z(((((J()h(ZZ((J(()(((((((()h()((((((((((Z(()h)ih=(IE-QEQE%RE%-QKE%%QE-RRE%QE-RRE%RKIE%-RRE%QEQEQEQEQEREQIEQIKE-%QE%RIIE-QKGIIE-RQފ()(((((J(((Z(4QEQKEQE%REQIKE-%QE-RQEQKEQEQIKE-%QKKE%QIEQERQEQERE%%RE%-RQEQEQERQEQEQEQKEQE%QEQEQEQEQEQEQKEQEQEQE-RQEQERs1#RscQEQERE%RE%RE%QKEQEQIEQEQEQEQEQEQEQEQEQKEQERKIE%QKERE%-RQERERRQEQKE-%QE-QEQEQEQEQEQEQEQEQEQKEQEREQIEQEQERQEQEQERQE--QEQEQEQEQEQEQEQERE%QEQEQEQEQIEQIKEQKIE%RE%QEQEQERE%QEQEQEQEQEQEQEQKEQEQE-QEQERdR;lB 8t:=h(((((()((((((((J(()(L*؜Pp48vK)h((((((((((()hJZ)i)hZ(((vehE-QERE%RE%-RQKERQE-QEQEQEQEQERE%RRQERE%QEQE-QKEQERRQEQKEQKE-RQE-)h((((Z((((Z(ZZ))()h()hӎQH3z(((Z()h()((()hZ((Z()()(JJ(()(((((()h(((((JZ)i(())h(()hZJ)(JJ)h((((((J(J()((Z((((Z())hZZ(()h(((((()hZ((((J)h(J)hZ()(c> [)9NGjZ((J((()hZ()h()(Z((J()ihZ([cR#җE-QEQKEQEQEQERE%-RQERERRQEQEQIEQIKE-%QKEQEQIEQIE%QEQEQEQKEQEQEQIE-RRKIE%-QEQKE-%QE%QE%REQIERRQERIIEQEQEQEQEQEQIKEQEQEQEQEQEQEQEQIE%REQE-RQEQIEQEQEQEQEQKEQEQE-RQEQEQKEQEQERQEQEQKEQEQERQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQKEQEQEQERE%QE%REQEQEQKEQEQIERRQKEQEQEQEQEQE-REQERQE-QEQEQEQEQEQEQEQKEQKEQEQERPh)h()()(@)(Z(ZJ(E%-QEQEQERQE-QEќ.ҁ =G:((((((Z((((((()(((Z()h(Z ?뢮ZZ(ZJ)()VޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎ(J(J(iVuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:)ihJ(J(U/zrө((((((((((((((((L褢ZJ((U-9{ө((((((((((((((((QtRE%QEQE-NZrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2襢()ihJZU/zUNS(((((((((((((((eGQE-RQKEQE%QE*ӖuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLTtRRE%QE-RQIE-9{ө((((((((((((((((Q(Z()()iVW:N((((((((((((((()ʎJ(((U/zrө((((((((((((((((QtQKKEQEQEQJN^u:((((((((((((((((S*:)(JJ)hZ)))VNS(((((((((((((((hZ(Z(JJU-9{ө((((((((((((((((QtQKEQKEQKENZrө((((((((((((((((QtREQIEQIERҭ9iVNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎEQEQERQEQE*Ӗu:((((((((((((((((TuQE-RQEQKER9{ӗ:N((((((((((((((()GERQIE)hiN^u:((((((((((((((((vQIE-RQEQEQKJ^u:((((((((((((((((S*:(J((Z(iޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:((Z((iW9{ө((((((((((((((((Q()h((U/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2QERRE%QEQEN^NS(((((((((((((((eGQEQEQIEQIE*ӗ9{ө((((((((((((((((QtQEQIKEREJW:N((((((((((((((()GEQKEQIE-SޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE~GKERE%QEQER9iޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎ(J(J(U-9{ө((((((((((((((((QtQEQEQEQEQJ-:N((((((((((((((()GEQEQKKKESNS((((((((((((((( ?뢮)h(((()hQIEQIEQEQKEQEQEQE-QEQEQEQE-RQEQEQEQEQKEQEQEQEQKEQE%QEQEQEQEQEQEQEQE-RQEQKEQEQERQEQKEQE%REQERQEQEQEQIEQEQEQEQERQEQERE%REQEQEQE%QEQE-RQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQIEQEQEQKEQEQIEQERQEQKEQEQEQEQKEQKEQEQIEQEQEQEREQIEQE-RQE-RQEQKEQKEQEQEQEQKEQKEQEREQEQEQEQERQE-QEQE%REQIEQIEQEQEQEQIEQEQERE%QEQEQEQKEQEQIEQE-QEQE%REQIEQIEQIEQEQEQEQIEQIEQIEQE-QEQE%RE%REQIEQEQERE%QEQEQKEQEQIEQEQKEQE%QEQEQEREQIEQEQEQEQEQEQKEQEQIEQIEQEQEQEQIEQIEQE-RQEQEQEQERQE-QEQEQEQE-RQE-RQEQEQEQEQERE%RE%RE%QEQEQEREQEQEQKEQEQEQEQEQEQEQEQEQIEQIEZ(Z(Z()()(((Z()((()h(((((()h(((((((Z((()h(Z()()((((((Z((((((J(()h(Z()()(((Z((((((J(AEQEQEQKEQE%RE%QEQEQKEQEQEQEQEQEQE-RQEQERE%QEQEQKEQEREQIEQIEQE-RQEQKEQEQEQEQEQEQEQEQEQIEQIEQEQEQEQEQKEQEQIEQIEQE-QEQKEQE%RE%QEQIEQEQEQEQIEQEQEQEQE-QEQERE%QEQEQERE%QEQIEQEQEQEQEQEQEQEQEQEQIEQIEQEQKEQERE%RE%RE%QEQE-QEQERE%QEQIEQE-RQEQKEQEQEQEQE%REQIEQE-RQEQERE%QEQEQKEQEQEQEQEQEQEQEQEQE-QEQE%RE%REQIEQE-QEQE%QEQEQKEQEQEQEQKEQEQEQEQEQEQEQIEQIEQEQERE%QEQEQEQEQEQEQEQEQEQEQE-QEQEQEQE-RQEQKEQERE%QEQE-QEQEQEQEQKEQKEQE%QEQE (((((Z(Z((((((((((Z((()h(Z(Z(((J((((((()h((()h(Z(()()()()(((()(((((J((()()((J(J(((((J()h((((()(()h((()h(Z()((J()h)h(((J(J(((QEQEQE-RQE-RQEQKEQEQIEQIEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQERE%REQIEQIE ?뢮((()h(Z(Z((()h)h(Z((()h(((()h(()(((((J(((Z(Z((J(()h((((Z()((((((J()h((J((((((Z(((J(J(J((((J(J((Z(((((((((()(((Z()()(((((J()h(((J(J(J((((((((()h(Z((((((((((()(()h(Z((J((((J((((((Z(Z(()((((((((J(J()h()((J(J(()h()(((()(((((J()h(Z(Z(((J(((Z(Z(((((()((()h()()>Q@()(()h)h)h(((()h(Z(Z(Z(()(((()(()h((()h((J(J()h)h)h(Z()()(()h((()h(Z(Z((((Z(Z(Z()(()h(()()()()()()((J(()h)h(((((Z(Z(((((()h(Z(()(()h((((((((((()h()(((Z()((J(J(((((((((((((((((()h(((()h(()((J((()(((Z(Z(Z((((Z((((((((()h(((J(((()h(()((((Z()((((()h)h((J((()((J(tQKEQEQEQEQEQEQEQERE%QEQEQKEQKEQE%QEQEQEQEQEQKEQKEQKEQEQEQEQEQEQIEQIEQE-QEQE%QEQERQEQEREQIEQIEQIEQE-RQEQEQEQIEQEQERE%RE%RE%REQIEQE-RQEQERE%RE%QEQIEQEQKEQE%QEQE-QEQEREQIEQERQEQEQEQEQEQKEQKEQE%QEQEQEQEQEQKEQEQEQIEQE-RQEQEQEQE-RQEQEQEQIEQE-QEQEREQIEQE-RQEQEQEQEQEQEQEQEQKEQERE%RE%QEQE-RQE-RQEQKEQE%RE%QEQE-QEQEQEQERQEQEQEQEQEQEw((((((((()h)h%QEQEQEQEQEQEQEQEQERQE-QEQERE%RE%REQފ(Z(((((()h(((J(J(((((Z((((((J()h)h((((Z( ?뢮()(;EQEQEQKEQERE%RE%QEQIEQEQEQEQEQE-QEQEZ(Z((((((J(J()h(((J((((((()h((()h()()((J()h)h)h((()h((((Z()((((()h)h(Z(((((()h(()()((J(J(((()(((((((((((uEQERQKEQKEQEQEQE-QEQKEQE%REQERQEQEQEQEQERE%RE%RE%QEQEQEQEQE-RQE-QEQE%RE%RE%QEQEQKEQKEQE%QEQE-QEQEQEQEQERE%PN[襢)(((Z(Z(()(()h(@()h(((((()h(()((J()h(()((J:QEQEQEQEQIEQEQKEQKEQ@(((Z(Z(((;EQEQEQEQEQKEQERE%QEQE-RQEQERE%QEQEQKEQKEQERE%QEQEQEQEQEQEREQIEQIEQIEQE-RQEQEQEQEQEQEQEQEQEQIEQE-RQEQEQEQIEQIEQEQERE%QEQE-QEQEQEQEQEQEQIEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQE-RQEQERE%QEQEQEQEQEQKEQEQEQEQEQEQE-RQEQEQEPh(Z(((J(J()h)h(Z(((J((()(((((((Z(((襢()h(Z((((((J((((J((Z(Z((((((((((Z((((((((((J((Z(((((((Z()()(((((J(((((((((((((((()h((((()((J((Z(Z()()()(((Z((((Z((((((((()h((((((((((Z()((J((()(((((J((3ړ88QKEQKEQEQEQIEwN(4RQEQEQEQE-RQE-RQEQEQEQEQERE%RE%SpCa %$m4$':N((() Sɤ,ZZ}-%RE%QEQEQEQEQIEQEQEQEQEQEREQIEQE-RQEQEQEQE=0?3HrxZhB?}i#)QEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQIEQE-QEQEQEQERQEQKEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQERE%QEQEQEQEQEQEREQIEQEQEQEQIEQEQA8I4QEQKEQKEQEQERQEQEQEQEQEQEQEQEQEQIEQE-RQEQEQER3F)ih((J((((((((Z((()h((((((((((((J(((((((J()h((((()((( ?wjciFW[7a}Ѐ*Wo M*j1ڝRSh)hhYnV]IOJ9HYpbzxMEcI۲H0>k@ZLYiqTveh??֪Y1-!o{0 Ko>|2}I邑Ԥrb"08FS0:Uo-#Oin#f&{ []>@ qK&<"O6{- X'tEv\zH`|ՄL0n=jYO;w)zVy[# ҴlMA_zĶo#Ӛ~o^L=;QC#ßj~,]?]H;joQ--xRL˩(Svx; onj2 $PvֵxI@8Z(у"5X.<ѿɗz.;[jE`s {SE~>CqޠYPn'nNz K2{TIՂ(DwhTBsEfɿQBz} QMGE6@f2ļ[k$-]Ȝ\~fۉČ~TVș4:ݼIaIWevQE]1mkr(m GAk_U1d>㊀&Yy`1JktB3w{ѧX3&1[Ӵǀ6==WW2==hb(EQER6vQJŹzqdĬ{*`I9z_\1Y/͑ ~R ' ٦\hurٶʪiR7t Lx1xTH'b>傏ʩ-,ՋUf1ZLVQC"-mDp ۸׊n˓QI#́Tcj&4P' K$@˲@^Yl'w,Y>xHɌI+YI7r>"JI1p~5$#lpj뷯׏ZZU8׏WuG\~tñU?<{㊬H0zqQق&g &5>6\K.N~6ZGPjY9uV`ddeAVnWtZJ%n ZY*UqT.dvZRiֲ[C$ދW$Y|ՏE*ݼD%, e41_jE".ye^@嗥E:MQʠ&2P5W/͟ҩdwNjO_,e1+l U7'b .yk sؚlcR}~bqҥӒQ`VHN ԐMg!2?.Z4Yo9LWTyqJK080}*֖fQ׭eM6*ci=^%>ʊ/Pk< [VQIEQEQQܶVԤ&a#o'sA9\,{eIoYhDgRK) BUM-؎=. ];h$JLS^*?!R83FVW΢ıBӮ (ٴUbYߖ2K6Z(v݌Mojqr|b|*0<&\ ATٞ=YL1Ufw$=\`{,q#<,jw< A'5w4*N95kOF0X/$U=LhJԗMT3Vuƣ\f ݽ~QPbA9D7čLp*[uVBeԏ`e-˹cި=FWf?S^I8*)"eo&݉ bFcM/3>`?֖WQe$vLWp:S9RE heOh{VlRȭZm$G9 N1 D|.%X0о?ZHY3 QpE:O;]^LݳW뢭(((dOӚ( @格ǐlxUrr 8++6%,YW5,`ḏո;yQl:Xv-lp&[ZMʶVo D# lJ,DNtTe14kޡIϥV&D3uo2I">g&ư6ˏOm n@djGJ+e:*"EBC 6Y ]v8Lv2%aT&ÃɬKKsYS1 qԓ C(V&ʆwDsy1`I +L^p^it;3Wyy$:fxr7=U2&sqU&2gjcn C$:So2I QAtь+Oj"$m8#Bx\Ϩ>F=)5()$mЛ!p~֬ 4XIunfmG 7Idv$?LӉair{E^&j */,ǚ}̬XӮ%+"#Qs}yȦiC[6Df?~Uz(Yao_Jd[Qd>f@p;UQD|*Or^+@f{;yb)pZ|3cifMF&c=:{T ]e6?J/]MnRQE-QEQQ\d3XZ)&L[ g +6њff\NشE|N? p d ?ɹ9ޔ LS&Ic?R$'je'D ]$*Hܥ!Q lթ beG/9e:3y^kS³ǖ$U?׾bFZ1Zˁ&TbVP>NvK?JyaNFU\N˻n~|d+fy[ⳡBx$\Qf@\v5~I*rsR![2EY{ݎ2ӓH{A[;=Z6K?'4`U9{ԖK Icab0Z!@㊢ͻo\ 5[Fi[mcqI@2sP>4&>ꟚX޵ |j30]9r>pJ7UӓU):7|SnwMpS%--rFۤʮґX{ ⧒5[`ŝH.e8&+XaZţʥ`kKcF.= >Ts# cҪMd3z$h3v"CGn 戒bd|ydǥޘz-d9WRͥ@lY# ;Uۭ*((( 蕓K]WY3Tn.k,$F>`I4=#U 1-Fn#-C}X=p3ץgH1NN#\TZB;Z{TzѬɈQ ;&xsCo4}Q@7i;0X h'$NBO >DQ="EN*fGG;VQ=9(kÁP[ܳg[UII 9$)=s]{3|Edb%BP;mk;6U]D wj&"Y@#Ax?Je9ZVQKEQE/Z fx>+39;qڳIfu[r$Ā_F(7^۬g oq9XDLPCdg :7T$>ئꖒZKb~xfnF [`<{b;W*/0z󚳸.FWz/-z$ rMdI?YC YYa=+_Aث ]̛dbAUXIMKrԗq<)8_UQLI.Yp6zV*@f~nH& 0<䑞jjNs8$jŎt\Z[G+7sǵ-ŶbBBʹGa5 J 0k r1jNT皷 7+COːsު3şp9u]&ƳV+nۚD.e^UGT 6jB-``}jSq'z.m8a#pKgj[#lq` 'V @5qt<QvCv&`Gndu 7*n$p?t-6RlsjVR;Z+v8)*m \j| 09+bj?*ѹud5Ip6`znq.ӊ̆?ӡ'*Q7~"va ew+Fd1sP~2< ʁ/z3e3Q̈5 eY@G{ o3Q퐊 Դuw1V'JwT4>\7'-1m_=IY,O#C,{r1Vf_/qn.dOf8V~X'=]4QEQER6vwyMl%N @rVXۖLgM ynsP# ǨPL=@vbd?|$dmuǩGې˿Iun8i`!,?41D=H@ tQۊO<*6_1b0w5!*'G+x=XN>V4g=ibnƳش7ҨHpz Fu'is0sՍ93rVt&n@utȤqVywec wXc,ǻ3VڸՏZrx٣`zP02>=DwFBu{ <ѰRa 2^e oazUdR>nJݰB|Ojڧc r(Z(Udix*+tr(AQgE$4ex",z9gH7`2m#z ݀I( Uu楸Ja=]]2,xq֑$3aWq3+GwiT'$'Pé~*- 7 @X|K0޴JAFEHV]e<4mh XhD2k%}G5MZQqI$}ЖDBI*T_ixqziN;3|\vJf˰IV. ;-A֘4apsM` 7N0) bF[23+U ]vY)([Ω>]ލă80q0*27PGițb FR*-6vs >Ϛɝ)VtZ'd ! = MLI8NR\1bNv䑻NK:(4i@`""69j2իX'F*CmaےEh^ȱN BM]uUb@156t?ʧ f@x˴{P1cjv:zXY^NQRAjcrsօ˦s}ȧjyVܵ4qF'suڿXT<B>YX0 %#vۅRrǑRaZE1KYe(4,IR;HEEIqS򨭩ǗZ"F1Ӿ;j:-IbX!G?jK$yrۉzt!cg$ |3U#ʟ YTzqY`N66eQOUęELX-*c|MX3ʾP*DO+ܞƫ ?&eIkݏcUݮe''޵+(()ry\qHWIQ} zҹcnOv'+2c4LnrOӚa1D̠ҝ$Ďޢ09$`:R\,*ybQ! pWMh%pzWȱYpF*f""R+`-A^'6D+ RPhac;wDOrkRL( \gV-i#AL3t,Weݪ#&Ǧ{U(UFb6(ʏSVx[w'*=MYң&en|8H8nuH⅞4fldqZw tuڀ#o,t9ejǚP;Vl̂A9^* hrI**Kn#;pc{(#{ M` mžjhtl@ UWWxezZqRˆr}I,jЃɩ#QLyw1l9R9?XIw4AOV=OSJ `}jem0VZ}`\(ZѺKKoŲ\Hb!-x6,"y z:e_rTrcxbQut2^{g̥[>T$]ӷHk̮6nEW\t,>co40Hކp s>jq['ǜ-C*!' T 2v's|E."@d#5X r$~\U FB-IoH?OLEݢDQң{U(HNO@V MsYp[\\D .JΆ{joGj~a[آ$Ga~EXQI)h 1 3*m-3UA9+f((Gm[TWN#f' N!bN oڤ3\Iڜ?αTgkEܣq9"< *MX"63֤ݣVpN4Tc-ږ%h1G3FJƑ;Uo]C}ޏ"lx>S5.F}2f"˱裿Xu2 8^ǰYl (胖5p?88F8_|U۬یԒęwP0cbG;ر|c4GlR"D#I QH $D8N5/nXѸgM*nT/>` vPd~?*H~VpXfc:@?J{ܡ@?JQpR :Je/lUy}Qu/|ժ[C٪.'*}qU늊evZcgIv4K\J)دx*y[0>,1Td{l䑹f=R3 <};UHٱ=_,f}nǠLiUH'S+}i'9+GL77;U|Kd2yȤm33C G~jK}whDLP&[u . z&y!T5femÂu9u so[+dOikXqg9zc=H[vCVi F Ċng@Xdj~((銪gP=MU'W]+^?Zͱi?JkURڸlPv֋)N['˞ƒ@df 1osMI{qׅz*8^9͐(ow#kmgn^n$<jolzewGy6mI+]N&+*_RsYvhJ1j X:8X㈺DR:ۘ,"^ngN\ %v)frJ('r@V.˞*o\(]zX xW"FXUđ &8y'o,{TRU?/'ҡڱR#zEX+õF#Mr S>ˁ0ҏ8ĄzҨp8ÑY,2 s%FcXb8G l*䎡~U2 5 &eGqL)*%E$%FAqC(hܧ9*71dU^NIeHA GF*o. ar˲ F*̯`늤lsuyND@8'ToshJ6{VH-AkBY :H }- 9,-s 9?*\Q~y9?^jKɷn6SAj6s֤޾Tڂ<Ƣa *TPw_Z$8Jҝ01m8 tV۔aHՙogq笡3[-簬8W=>bk^ݢ)h*S޲ug`9p6/T.A|)b&T--3gޝIrw !_βaI uGd+<0zg$=LaA#9>kLMWY?̼=e}(f)>vJ<),bM}tl *Kcrr\N٤SZIYmj.sh|#\SL^i N!Yۻtg{ZuƳ`&Hjch$,0Au֠;ੌɦ_"J>FH_U`1⠅z([ S"bnXJ&K3p00p*O+gVdԊ |U{;Pxp}c#x5eu4~lTwWRSZ0A֮31Ԋ`Ԩs:T$py:繨|5vRܦ\jrU &~Ew1W&Wf@K^p={U{ițmQٓqWV*/u򧳔%L$h,m*eM~41n(e4%@W/N+שʼ'IlR6r-W]%\.Y0H?߫nx+G?کoI}0*ޭsZxna֦e$:s8||A_W"/ҢS[ERE)3i OG)GPΜWn@=9Jd<қvDV5"brHExjad-ʰPXVM\+en= Z)Cu $Z[<*؎`TnJSj EPf P?Z[%z(WqgѬ*hAڻ[a@ .j uیOZy;+p=j:H!*"FI#dTcH'F=(q,sS[0<(ڃ-۵IQ znIa\ܯs<0#y^IyX>&Oqӷ q}i Vu4]JȤxf1XH˖e}3E읗+/C~v@Ojѿ꞊w "󯃣W//~F GV̻%N6us1t_sZwڭܨRǎBAgf$2cꪲS ξPX ̺A&׼Q Us+ (˱~U0<LL,H1Z _ƞ*3@fPFyjX'ʤ/w P;*v\ZO =)I*FMEX4YF#Ry-$b%|8<*!R=Ң LKH46c/eϦzUvp6dʟ$yOpmjMK`;)v5%f8hjn֝QM@z`*9@M,(1 f2 )ONJv3}IVh Ǐ)QH퐇9L/6G 1L&\"w==?xcbA=; o~ I#Ivn77AXbP،Z0>GӽTViLʫ17\FлmmB,DHdTGw2 TUp$`~r@~b+M!$9? 䀰ol !԰1ne" J 9BYGgIY̊Svqң\\M=aՁr7-? G 346xF@=)6S5 it86?Ҫ$fya"] {i$q8Eߥ=Qؙ\QM, Hɴ >*ag5pvſ j&>T-ث|65^naaڃ'֫%h5+&_OH*NTP@J9 ڣla໅Q rdn U=5]c-›x/**q}H#PjqQ$N#NJMǥTH&NH Fjż2\KX)$YNqV,squ&FcǥMkm3rJu,wE㿽K\t#'z :~4sJRZN)5# Pg?ΣycjBU@33ޮT2 ^`18OUxHprۏgpp9`ꛁ $0ܶ=Se? ݟscMRN~B$ prSBps©dQ1jO<ɔ^|?`vJݙ#eU(I&5|~Z%z#)fV]fRX7 d܂jhV@GK9PuSsӞj|튯rOI=X20&`1B0f1ܫ98%Ja)8ŵS"Vl+fBL P~&HBsUTӁZ&wW'Y[^%xD>k~-2016dmDۊG∮C-bE]Hj.z󚥨J+iݜA'jmV`*IH:OT~eGu~T^H3e:uler.}$> _jg%16qF ?Zk,cZ0!1] **(wP"Q*L㚜s !y"XkD*[7U$6>L ib8.~bzU9d!2@.rj?c nM9YɵH5YyIU`饊,QrOAS~ #MҰs M<3#ALgJ`FvcQ3(ܥH+iw2bH9< p[$n>9m9>^EzA x…V_)0?I?; V ǖe[` ayEI Byn{3ߚ!ݞMY$f`= Յ1 L3pqT'!p[}MT$$Z'3y'O< rJ7I$k.0JHRJETX$E>`R˅h<Ȩ]*TW /8H݁|qRC_ˌK(8Ul ,$2IU̫%1GujC\+m1MQEMOYkȢ\"P"4U?"v@U AHR Bz|k{R\&TM^Z}T'Vo.a1NӴ Fɩt8TpyPc8˓9-WVm7P3g#;>NnX/v׵Vq~3= Pz}i!PYnY9'TGrNnXԘ5c&?0Qj[Ck!@l S@x ¨#|U42ǵS|2n*uUn4nHQ\Sm2rp)a=w\IZӜ?Wu:;ok+wZV˟6CS[m>8ٶ7-B,2'Ɂ8gW0ݵ>_Ÿ4eh6,&A(*8L8FH8itcytLwRXĄkU@ WN H(^nB&B cֲIZy#N`7k`gkaKkԚqPWojVgA4PWoґا %4V0HX^4Iz m9'3Y2.y,G2w| P&RQ|ˇwaJzWU6vru՗|zU6! =*^DrsE1FYxQM; 6;S/QpN@qڡe q3 ׭S( lmOFcpź#kvU(arÜ;,qzX}Y6nMOq\[bFەݐk x[>ޕnEXB>Ƭȫ ]f!d[F=Fzn* F~3R],c)>́0g'BAVBg*aC/3Tلr 0Gҟ[ ҥ ztv\7(OpgqM*dm/"4zQ0D.;U4fiϧ5Və9j 6-ssV?6`?u*RGZhi5,mǷ% =IAg8B׊2Ҫ_[3Ƥ}lN rjd*kH"@8bv n=OKn#u XF J7nK1ڑʎ>RDb%NL嶮X㊗  ֢` xOG V+q˱@G$ٱZ|i /FX?6@e;F3DdcH ϧ2+dLSCy2>?jX{Ӓ-q'*G-z*,X' 2OJZ[!$TW1 M}QZo'jo;fLWrLITosY3aخ\Oja3 &,R1ޔ͏$BK&иVqޖUڇsNb sTng xNYL1<**r<ѕXcw*P9 1JWF;fJ6US Zьt󓺭>Z; Z<PM)FOP)VOP5})'uG)gu&b8YΝjZSM㌚ݓfp1xK3Nm'֝rw}in籢3p t dN] 25 ᙀqN33! z$])1LeO-FUcq#<*ZRfg>!ӌ7S.e~v=83~| 95 npO8L7 XdMb(:x&%IuO֤1*ށSueir,`(8z5 #W bF[dKfC_F`b0m:O[UDwV!UI-$3+ t9ǭ1 -U.|],LT7;Tmdnj/%d1?P*'r̓73HԁI28UwX38ҹEK!&ۃՏִQ5sˌln"RNXq;TIF1Ϡp@?AQZ͙g\ mǰ}K2ö@*, X7R/^j;pvxv=Z)8#}kv3?Tֽ5_΍$vIՙY]Zv͐q޲([D;{$N֩^#,q3 c8X2EC BV[(,T)^,H*eJz$?¬DFw79 += TmC䎪?:䎠TqRF Oi1S(:b;B?SަUz>#nqTzn Jz"Hn#%2\J;,rG+XSH1,嬇a#sץdC^Ғ_&R~?'׽X˞? fGVl"ZֹQiIlC*T!'$vIJj\脏$zVCpr H(fpA+sZuGR}sXz[C V>Ybj&)\+bBONֺֺ֘Უ= \=jKbH!_0`J,>B#d%5Z:|t0>nP@#]c@ i$P0>z w'F?ZINăV /cVH(QCRy&zI;0h=1O31ʃfSB/GJc(Qq:T%w(FъKIVTHQ\i##׽G:ns";c|N^Ź-(yVm||݌ڍHW1'i<JʞqY4Irc?e1$FOY\ 2}jq[i‡q8{ dW)y >C})p?t;5d1HpvTԤ`leFqZ sn*qϥ^dZ]s ##֏0e0ˑP] H8SG2eN(9=L׎6ߺ+ 0RIcÄ'[AX瓚сXj(ڠVVp޲u Yހː:)?t# j¯L~¬eL ŬYsGzɖ\c+Ց$,FkWN,-pqU|qJD*s*.Z2v{ `*ͦ^y3Md̅>l;mdr?mY+5GƋic h^)J"<ur'|w".{ M̫'įytYXpYmq OjRX-#I'P9'Ԟ+s] 5V爃%1|Gg;UK)Jypl,:DZ=TdO倪ZEb ˌ~^,`rFiv^ȭYSW#o?5R/xR& j YH3-@1ޢYь(vj0#ҳ:|aT#V%. l$c U^٭t|d78XZ /F:%eil9OSU Z٧xJNYPHg*us aZ {2E_uVxZ2=8뚵 .1FSXX엛جvvKOzlIfxA8 #4g<i+s!l}n8̅*n=*9 트zbލwVu]u7Cqb;b$$$ZP3K!"8*\vOJ19fXkJ6ep\y*yP9C|ү-!:zUK@C$d y#?,$1FCw6&-dmcqVlrp1c5 _s޹R9!?ZþENQ1\QZyC8TVHI-^ks!;`vO1m^Iy>,UYPKb}d1k5 dwR+pLnR Uާ9dY9."<^=9lsGSŁօ(N*n@mA'@ $U9ӏ6GF? 7o] C%I$N#T2B$d&4| Ւ"2ӚZ8g̞m*6=e" 6b=3QDglqia?RdD?}MKm /c9 NTw3BLv]k(OIp2B`p@)sOLթ+U0oLl2YB)FsY''א})p#H<`>\D&mvzR7j}{X1x%Z0G92)'8Z;=jRcס"V={ 15ZҳחTSҴO1I\֋qgy!r@p X]uyjl0A GnaGcN bg*Q.@@?JP>@Hly@OCa+>78eR{U9mоOn8HT!1_ִ| y!GZ؁8glkR"ְc$ 0;lj`rX媿0=4N٩umD[ZD\䷭&z^,NM[hfgEݱGǜX#'$֍%#-Ʊİ gsgMBZs `>²/.I-ד4ϰ#8'7$ {_vO~CwPATU sAp:mI,cl4 mO ;bzU&8c'sZF&'r~6em$IK Q}!}.1 iӞI~fW=Kh&Hjޛj!qMZˋɨ瓝@pN: BO)_Sq^\4l*rFc_ urFl5YaI=hTa ݎ*o'ڧ'I1j䟲\09V"mv {H(2ҢY^TB zS!W`}X`d0 Ӄ޲巏w2HTu`ljEER j86̮<2)Ήe7/HHJyHIY6 oۃɩaGojؼAokk) _kk1-` HO˧ʊ, M ?M9G Yi{qrϐ{Uhof>saZkk+tɈqiX72;XP@rq[UY9r{{WUY9s]d,#9>xumy5,iiʠrW }~dRQ=ɮvSyz͜v&Y ۸ݏ)/n9U- !n%IYElZ\G u+u2ʏ!A^>ߔff0q꯫M8#;:gthfOxN#KuPpM2) $8'n$$J< InH=NY"!gq{枯Il~Z+mpNOQVeUu'=*(`MfNV)0W˻b#`TYlDl1V]Dl|f8.I=aUlZCiEUi@*wv`ÅRhB nFGYYx{U*;;2n5PH˸vȢ$a0&|3Ԛ[ #MvsUs F02 UV:*ir?YRIgZEKVTHԹSȸUy[aF{isV{ߺ?zn 栖!agQIrY2GdrEJ[JSp?JV9’jrCsݪZR_QPV'7^1{T'h`A<۵2I۵A@> VxLj{oԻ<@@!S <7cOc84@҂N܏CAb[w#ҌO҂s9ь((4zKwoc҂XʒJgdEխ;"-ҊIx{7Z]rk^#i$6GXy;QKz k;}wU+o;T'%jT6 ϽsWWW=}WLBW޴;lv6Zz,+\0nR*1.2TRUTҧv1խ5=|jͫ fs\Rf˜ .e7:~UU =@E]6I0*"'%Q9B@-C؊nOM+d!@0IQޮ['٭T6Yc4Ta $} :ՙ} MH>B65Y 15A}zU5fr (*Fs9*Q_+SnPa><}?;`S5%H4k֛" cTzmm2Y. H6bYQƬ_մʹgls#C";tN%8SZXdCJ8j_/n1ꎣ' 'y@5R(4HܮpqMMӎ~QIlE^8ldҭ1;vɤbA>4p@vMg'GPgҏF{Ru#4{u?9)LS1qҀOJ;*A@$}qG^4y('GFI$U<~jށNY6,ΧeB0Xkz-7C+wFbR7Lv~7t)T,l)kvkѾHr2+z-$"G=-!.E0*'?šϕ ۿ6=ރgջ|4b^cѓh۸mwlhaYzEYdpQk0]9V5gcիI ,i+4^YWWzu+'V4+C̙J >6k4IAxs[a`r+V T`"hJ)$d:M@fRyYGҪ\IKT:±,InW9Udi.QG3zU5y/Qxyo݈]" ; kfE!TDz٨ (1 ˀ k1QW-ȿ(WZY Wey/cP XxѐqE]C~T@T Աiœ<楏sNgԑA>ⳮy.IX1Tby''nA=;Ip#@eRJ Ӑ2KU* 5V9gwɑuI]X*V~X*uT\ǩ%}jeQqԀyyva j]zb:T*z;TcNx8cJh])p=yirq9=N_ ߚRzPs#Hi<3?k3<dȪdȨ[9<Iv[]5 kmd;5Øy2riV5Ԇo6E>z ܄j{ԕ8@;kRd˟{=m LFA+ZbzG ;VFq&vmoƲ5;/ *Nk*'h"%ԚҲ F8T 3M_$Kp !w5~V qi@:T:ϒ S}߻\N!*1ު+u*lPM4m#o>_[G`RBomON>ս=:Y2u{d.\zEL:wX[t9w_a/M5n|>Y8 9!@q!BO ',N!fT%⧵H6NB CS[B9Jώ* aP s9B_璣*X;b]ÃJĽp;\Z:CrL>v}j|LuEp}VSqZm ޴ $m,;b?*kPʧtYI@!N 泴2]2Xsj!{Ra!WB>40HXp>~ة#'œ67c88ix%:tBXLcW檨 ^*9֪JS.e؃\)bilwbil֝jiGS@! ԠۺTqKn'R6}}*CL7}j/&_Jڙy6DQ[3!wW P#f: ܗ.Z mSYWM+.x=M>ƤaڤҡY5(/b:Sjm};֞8['.GvwR W7r*lEry{Vh$Gm!5GL3qkr^/7 u HcVzz{jp8R s{%0-#1V]e#Js ;Ɍj1Ĩ>^bl*T->e8h_^NT@ y\f)ǭor}+ ONm9/J1lsYznq/{V24v J³ͼQʲ%jL>Qɸ}܌Vn3eF<L(@sޒ1ldgK ]Py9Jl$0 [ĮP"| p A݌sQ(M5pst4Kqwjm(#$ pAE#8540ArM=~zS߉0y')Ï^Ҕ=}){S 0CQ>j3Q,Z֖Sd`"&FTdTKo$Kl"KP2 f[yipAlNI+ޮh4Ҷ19̐㚊9n^0EA)Pѫ;y52aYCy@*;TV5\w&+5͘ >⛥L^ۀWue.qP] B⣜LgJћdoJw;Gjr.=jPhcWeHvop8ª9$ 4C+{Xvt\ɂ65mHJc+sY&iQ䔑X}kRZ`d#PS#prQeNq~OVq_U[6] ]Vf%} KN` `1V eWWnbL/!%WUf]@mo/$c5@1UG 隁<@FM41H0϶T@@j1"#3 XWrOԢXfr*S<a@Ҡӛ$~0ѝ3V"`B?*tP̫TI)@`q52`‹- q~4Ƨ ZH?W2O{V%. ܣsV.*0޴!&UO#"2sf.=iF }֣ƔI˷AG,qF,{Q2XVjHҶy`8$Hpdl0QzVdp6K/z$R&8 4@@i)}vsڜ~e۳yKˍ ސ79?0@qIǥ6N#})$@9 @1[!v.=vv̹I2pHo&GQsܱ -J*K5-s*n*SZ**c@H JغbmBpx9ae ׌de zkK-.692\Dhi91q֩7HتLNN*R-nvUsmcg"GoÊF#&5mtnn"u,ʃ*3JUT!Oҭ)<Sip<~fN?KBbY3'Zt2CEm`em.F7eFāXduT72p rANRL+ğ}Eb9U8C~!sVY}T z.ഊ< =ϞҖ 0zT$A<Z3P ہYB\noιT9,j+x*M?Y(A}~UISi{pMUa- t I mE$vi!k:,d\򾆰S6Pe\qaVӲc) qp1JGp#mܝ@Ө9g"3s7=k\ƙoJnQ nIp32?$(RE&4 u5u pV \qү_ c;.kњkmU# F5iKm{[=>rI+ o۷ 4kjM%Ć0Xm$nev 0j[LOejmn%ێ Y)yU;qTz-NFOCUm}R7M*H5SĩP~[ y`zU=tS*j·$쬮bVҤӦHdbbRzXK,[W7y9ޜx435'1 fs^sP[R9B.X;t˚Kā|b[CG;/*Ai5ıaخ=Yi.$ұ5{ #_.l'c`8-66,[K`Fh+ z]94{18V,'80J_q+ެC&:ԥي|@)eb9lsy+^ڢFnY,{d4xzRL R!, 1";wgfv/ A]Qգ`Uj I!vt iYL aVWrҌ6HLK`$6֕IBrGZpeQ ;!x<BsB8H@;֥7Vƹ9`:esHIy;~Ϩْx'QNfX،.OW3'Gv̘ TVHW>P-Ӓ>횐(ˮؗsPN>4W\U Vb=)MnGQC i-0ܚlmJ6) 6oF+svH.,$o+$ˆ<?3E]_cX_MtiPGeE8|{qmzM~vd$1hT2@ĤJp?dSU8 Gj|:H{Uek1Ԓ~cWRFNw#cgOR@ 8\P iwz䎂?xv#=E8mn$c q5;K$ҫIPv弸/nGj{{jS9fbO5Sq?M$I=3S89 BY$DV?JTuӝW!lR:֦if$-:Z-nchNmkIcp˼xR}sdR3rμf&C@zҮ\3y[dA[&$ [vsZp;eWmj.KrzVEǒ?zZDb3W4L+̲2QR#,N1Pi5֫,7TP[I5+d#YzFrAǯ' r\GBz?ֳIsJֈm u=Onl$jV^pT/&he'?.U#֡ $#}OJ4{YI(zT&Y=2u8 5 c'2TjS RGE3PWEЅ2Ajx-Pum2_C@k:̓uTlXnx9*Kr3NvctFriR3 :)܆m"1q?-TۑFv ~u "BS8V;TI9u$gy9=*P 9Rwr56gj_1j# `c媷|;v+H1L[u.c5Z⭽#^sVZݛ Yh^$@:u5y8Vsӭ\i#XvJ"Ҫ/d2 [[̀sd;ױڥS܏Z&ϛք[cV85Enui?OrOuIe8-\2jzZ-9fUHx?JZX@'үHokGZҪq/̥%zfn[9O,Fj«%fcTbYU-Uds*6 k! 7,qYXg5$*<8SMiLJ[d] :H >;vIg2 >Nd֮[ZGcV XLNH< %$*v4 p9Lp) H,X~?wQ I'J{GO`0sGzqr0EC'(ê9)#֙& E_jjP}/EP?#{cd~4ǽ!"?@i; Abs&qSpzbMBlwn*86r[b)j'p0~a cߊ^u>-Z$a$ ؑyDZ⧕nIZa%PUAwzpQt'vx-ĝ$gs5ܟTgl`ƥ ѳr=* 8*FÑU=#6PsP٭Ua֓HOך{YA T,LULF=H⦷ZRs i+F隿ijm{w=̈ϴk:DW()6@<Jr++F;pwʏ##.G͎eADL)]M[<)M<4J] Uts%mR漁A|DsUi.cB[Lmo.BcA?\Lf*Yy@! ֬#7[BGji1\JӐ!GZ.|{Y1^j/!f^k3]@95{$sMQq<,8 icn.i;ӊ>zi[f a8W4U{S"[/.?ѷźsSZEpSP$`I"f0s8]Fxʎq̌Q(@^kIl [,:TRƜ$9Zl)Kmpe} NhJzqjF?vr~f(]#D ~e#f'KD딢kilKF! zSp^C.?ʜ)!:LxsS=Ld%3ޫFJ"8'TQ$ g*8F O'ڵnDi +Aҵ5 SdPBV09ar;F*l7 Dm5mo0H80|ۙO=YIkRs mQ7%P+1ϵUӋ,0vA[ {8|;UdǦ*ŋu:BNzcVc9+GGy0ljKQzwL@j]NfO'TbgkV^6 NTNUBD̤{ڇ%!c<}Iʬ\mTꏆ zz~cVv\VuR; vJVu$bApU0g>TM>_Uf_]M6*|z՛crGͷX,,lOU[9n99y:1|qw2 $ibqx>ni#ߌVb麬F 8ՈNяu8{ܞ Jp6OޞqOZp1zBQ1=6裳+JϹ!O*z-Ǝ'͚, k*1l5RײlL+6sm^# y>ze$XՋ2[R7*2 x dy1pW^7SivTmC&)@Oz?rz }jt aO?V-ʱ( b%5,ŎA*pZԮ ڼ*l Tg{'?7Bjo"Ha?ҪѳS`D+2C{ֵQXۇNYSZG 7$\\+#<5KVYHUu rQ,Gh2ڛl͍2SYǾ`;.[USZGV4t¶K,Acg ,^ݳ%=*g/${Sx w5vv8ʠ˿ws,mAH_wKyZH'HY~TQ pH$Tsg?zo\SEa \Z%Pvj6E=U{#xc?(q6*y19w8y1噱z÷Ɍ䞵1#?w898_jS~iC#j)Q;J[esiSƻ!qzԪ1T"ϽN£RSS~ryIZxT 1szU3o+89Fp -==҅<8b:VH!cҐAǹoQ@늓r>Qޤ.dw:TnA?tE!sOZk<ڳDZ5H[1r+vrk]Ok_i#n}sZeci6P"Y@c֠o®_qQ|`@8?6="NF:i0iHO vR0[kHWoO҉Aך!@7E2${\ri-#w}MZ BK}B53aSNl٤[]ʇtT.OJ9\2Xц'VM @rOh_J9nڇ;cE _j/6pJ\g<( A AJz zsӠvIceF<Ap0sȩA,O!6⴬YmMv1$2>1b@yM߈HGf;kl3 7\E/wQ*trW'JD UiR9s۷M坎Cʬ[[,yx`+eX nb8H^!8>As֝H=p~lz}i0y{_~})t1F2M58:MrH;_`A=Zvs׽/nԅ 0F2qB>`;c40vh{ k*@'ґ/Z;e8w55i&qzKr`VILd57LhFH:PӓpQN7*BqU0>215UpGBˏ@1VZ,>_3V# +>Ztn,+ɲ1hȰC$9wj/#u.pe?4YL]ܞܳM(V?wڤx-ydOj _?J> Ox㚿,caO SW?pj/bT#0ڙbxW?x%f®X+"V[ HU&E~9X}wa^Tn;>#~ jaɜCtn7\qi,!8nu) wwW@Ԙ ; ͣ0(1L}xen P?V̒]2@֬[ ۊX`b&ThL UT2=+&g"68+e+ܔ%{WtDf'#!=ZcbI=3Y걶RDfQɩ&2~ZՓ) )zMaF⵺ ?iEo$ɼO2>yj'_zЖ ޖw|1yIe)^~nfDaV)*XչYTm$ҎXmq:;P~NqRn@^^݀rE= Od⛕ΐAH 2h`pHu4tﺛt! ҜOI[InNiޚ~=q'r}*"[C=@sDUTerP*iDp85WLK%cuoI wA>}Sy?Z'`l.[ @xXjD /E! ?[ZAiKҷ I+6Vh!;䊽p$O?=MZ%FH->-(A{ma HF ==+X!v AX7I X󵙆~b&`xQZ%軜 >A]F1Y(b[$4e-e|La R忳c8(Q@# *mJݜ_a?\Ԅ@OEK`&40$֖prM *5\&%ӥXlRnI*# de &bQ0J< pq}]J*3!k_G֬$#humwt"vU4! yv6YOVj{r6ʢdk VgFc7OjVVfYgd9Ē #$|ǞXdIgnm,n=H-`[;}*Kh1枠o_Id,hX"Ww3&8)͐f_CҔܧڝ={R?8ϥqKW=)sS>dqΣ?3w&yl gcMsdLl9M>ƚ~6)&KѩKIFy8iO$IFמ)!qF\zJth7FT5N$O3TH&('֨CpHcP c^=:[WWeeL}Z6OYH2R[T{VRc('hqSVȂ1#3V"kK\6{*›[X_b~ԖQ46p]qX7X!QYo?Zi'Fp+vI%6`V$jӵgO ¨rf]kVRxE 4nTP9W6V~rX֥uV$4c+]wEj)af"dO57 |8@chv܄c0,4ۍ!vV ONHkREhɭ}&N*BZ:|O.NZKL=j-N$H N|D^s:wGs{cJC1P/=Apw1SXY*.n׎Ap &d`qU7hJx\[G!%vuCshyd]G:V VhnJ;@|90Ѯ95f/5捿)*3;nRH,2$әatl9$ ^aeS}뜒v$W2Ӳ\I9" . VO8=x?l;O^Z6SH,ۘ )9#ғ9n>ojLlv?@~iIS;TwlxaOlFxwV&=1f =OMHS]9hZ)u#z[n9_&I袲YonAo5,=3* HE>k-#{HjkJ?`}ox$PB }+c[+Q|*;S9}zBC}w]8ƛ+C2[OŠnre\(%-a$Ah%٬-ذK!/"vʝqO{.7`|ǶhAGZA2Tp~B2OVETO 5,2< ouEh^w_nj+5ld%}֞2/??SWcqw⩅2\4p_$ֲn34pXt[To2 `dxqZjKp܂F։ceN0X)e:]U%g]>;tPto[mX5y` @{VecӶ+& oDhAǵC#8@4cT;Y<Ί*9ݓ[IN{zt4[[<~U#%wS?*cݓCMcczF?ɦl?x9ƛ3H=UX=P^F1sϭVw5~A>=g~_zlA,I~WYmƭÜZB" sUo" V"y\ 3Ze]q#ϧsZ^d38= -OMҩ#8z-G6nHIɎRxiq)@D#r8ZKLI|P5f_Bv]yːČnVs7zTsEB8=M TRQ4 8jk1yrnURژO*: W (UM0>@=tqi5̟x/iV+}>#sUD߄mtrBbԶU.ųMUR]w&Ys֟q=>.sMX'z&@jPf?`̜Ƞ`c`a!ֺ2Mf[!xz9[̏0Ÿ 8Ԉ /_sڝ++ghږ1TN:`YcJy:϶*o/#~y8qG!9Ms_H!MR#nLF9"a9L,.N;PqS,wo۳ǭYnLUPV* J'銗PLsOҪjH +!fŋ0UbпT}dl6D,hɹ$@{cs %*4vI!OJG yPRfn~IHUqW&^GhAgS)i$fa9Ҁ#]U f! tw ]X62ψnJWV?.&"ǓPX[r.} ^b"X,i-PCe?֗Lmą2r[;Tq-'u)ϐ |w:4EuU/'i&Ld ƨ]yzi*şS{/PR sgw3~U  gidGd pAu5 XnO9FI8`V]ݺL ٞyά>f#|#,G)ګv|g,p* Zp/F-ڭR, 2UR2iYc%yܧ .[o3sn ż' U}ŗN*d `ULp5jeWQxϧдht٥\"z8kfUb@rYIӊtxm#)a;}I33SMӥkv@rp=@_eԡR8=]ҔK|KUۏePp_mBU_f,dh8kP6[J#T?ej ,ZvCdCZvBGORQQwPG\UYF O Zȵ q{lOCg{b3y&squ3845̭i EWCVֆ5T06xOK9^4P?`>fMn#DҗnКnz%`t&*#btۻSY@ ,#Pvdg֖Vb 9>~ҐIj6lAzkdsV}#/>SI989R?Gp;3bZ-ߓy"<''=OxzjkjMHp$<ⳒAk6gQI Ysp8$. |FH5~H(Xt-Fb([d+.XθR6cf*&u8#iNrs%ܜz|QW$$~4cS)1P"d 3:d*)28=6=ѩ5DzU;@3P ^)'[ jK)G򄷧%,e ji?_Ul~Gk2EIJFGT-R0*kI0JpeI#pœfdj2J'B@6O^qg#V)ITz\n|¡UfB7U[v?YWn`SbWhQ 63®,s\dޤK E@f\:gY`IRE8Mw8ǥ$sF;n.`Wº* u/78I{y8xdGLb0VRlSO6gbM/<7 UI̕5@s ?֬+XβJƱQqOoʺ 0s}{X6cI=cR1C?}V#T<X)ӴH$R'%zyD J׬nllU hLkԁk'[lwc >y C,}GBN?NJZ-{֥hx ihc?7W^28%ڨ@rQY{$lk2O&2lTV3o<5LY=̀sS8`NU>@?3ɭ٣=(=JӲv] O.AlV91+!w1&smEH?FֻKH6p?DW g}w71G'UFNuq'k+C"-J_?fndHkRܽ;v8EO QyyPykw8ަXy>eT}>5i,簩C, ? T2`y㊅z`pGCQj3Y8c&\ uąur0IK+ p>mg؊4G@~4Wpz?T?-w`/P t6Ρʲ! c~(]]ϥY 9MZ.cPXd}9OH [;@iw*E7Ds[BR#-D$Y,] oԯI->k'-NkP $ A0*ܪd"Py\Eʆi)|>5݈LckO[_Ꞩ%jWoRSU yJS_k= XnѐHʇ!iaV![pQ3Xp|=zcO3!T40Uh`( ir7nRnp}y#Ɵj3oj3pN8}k>LqL~W?B[QڢTdZ{5V}-jd2s,ٍe(AڎKaLg#kkHɸn~R [`V;]8_ħb3Z| ݘ}ķ18Dq 2E}:4p1OV $;N+:Uj o, ګKpME\iƷцݣ֧AIm&} J1Xf',{S!94m6*(\[ i8?u1n'ezzU (n2kgJ4YiXZ$O=ꎳ2Ip3j"U$g5E=3UK`}j}sgq B Ǿhԯ'PCƛ{5h!TT߫HNY'vdq%F^ie n Md hr[\cWVŔAPgWPV#cO5_S-c:gFV* HpPhU1΃v:J^I lp ٖK+{?M/tZ@ۭq)rPւnXfZ5rFfu\ܲI$H.G٬ $gfSةgRV(|YU2n=U>BkvIqYɊl7],7#67:'W/g|WFv~5Wk0x  (ҠݶLvZ,*U(\ _˚nILd0-IC[UO1?+rCFȭ(ьc6d\.> }Ֆ\cfYӐͿ֢mY۸j5?e\r3u`[x ܞ(pxz6w&ផrME$*<rxU9An IVA&9Hɸsڑp Mg#Q 4vI߫SWXթB^=M4 O)`)`94=G'pnDa~c*%_EM!F" 702F4Aay$A`Aݪm!a"{vlIhBWSVp2Ԩq =@nNsޞ';rM?sIi3cMxFE*Ǔ*-4jxWx ?^3SB(4H2F95BitW8Svj3@jǙ$uYe8f<js,qMFI^)S^FgO1R\*> zSx۷ֆ-HhbCڢBڋscjPRj6qT:l76@2G$$hm~~kH2G+SQ Ú1OdF\dɞ}: zbgfWJ_J ޼Ra~)OœF;A463iN:SAh~^V,d?/-RڴV[y܊p}C5и9Qj F٭JMQW8RXpnM3Y|Xyjٕ15DK!$u5nSiW&;ccWLv G~G)"/#Ry뵳v J%nZ^" VR#v?N宮؜* ;tUP.}AT9sT'!Ɵc8Ur{qVsT瞸4{R/LL\gc끜SZ>x*SٽjNSӃ/zxnޔԣO*N=h3`[n 1Hr~chIsaHGgs֤ 9➫⍛^3Ҝ ;`A;hQ0E3xJ~N) O$@p%:$^~RO9}{"s= { t:S$8-jS8-L޲pR>Lu kGIuZch58';W%໰?AN|-V C;GӽDžtMXc]0L~±(2j%QX@?P/:R)#gϧPɐc3dýAn<5v2NG^QF!$AVb\9>ÚݹA!E'w隕\7xvk?b\1\nX1 ڷ-1mZTx 0DZ}j#Ԛ4bۺ֝2ג=HK*j08WNJrqQԻ\.@VԭfOr?ZbO1!ښm2O=3I杴s֍vW jNp4:r`d `Z $ dT^H:RmZjMdjKlHc9qW q֐ * cނvȦ-3'>R&z7G8'__JYU*\MW!W!ըSn*xn*tR8#v$ԐeMI (y4Kp Y )?f;'41$->aj'sIw/H"SۉhvҪږrp ,ۇR`f}`زw~'OҮϯyy^*IģQ/,x?CR9ҟ~fo' ¶V` @*by!W3o}띏gkK B[{s)BUd-9t5_-1d4N`{98rq:ûw:Tol0flq&i,ULqŽsS<~3' *F0H7qc3$sqP>H+x4 <J Hq#ړfIIFn&1d=;S$bTf#pT嘫FF*#"l6>ڼv\}+Zݒ4sP'Od'UqOucJ8'y3dSu3 uoZ=*2˜6SF= +y=J)fҥeqv 2{ }N)˼])f_j8a!\%cb4hKu'Ѻr{T*?(pje g87PN*DUPXQ(FjK0*:-o̮>X{T\>uɐz}jrM>Z] p~HǖWWM.>ꍫQX[$ASP[~wREYivg;yC~39cS$b)8sZqp =*ܓADqSp|J>!T֣$nv+:o'F䢒{UvvFB90*3 ";wa*Jw|¬ *PZp~T881Q~aQrڣ}*cNjbؖ_u5<'#ڞ#U+q0;m4Si!S#؜@FӚњHJ\1+:yp*31$TeZh%X`~C5=J5b%2jQ»Ǯ*mOZ2„JҳU՘-޶49+ 1 ڹigTv!w*,N:^_1ε|EHڤaf*\~4Sc$H|Zd؃wB('UTgT0~[h֠}^^F`qZI jXLQ^{\@O( &{[ʃPW-•qJU#)F$ y`Hw}jB4Aǭ`ހf:6$;~|tiߎG9N\ K!OJnvͬ͟45Pd|xEP\&s) Lue)'*:#%yJ@󊽦ʳmu:`BWYyϭ[I0R~NcßZy?98qL#妰$,rzzryFzՇ;b~Bշ)e%lHrNsXH=sM6\/O7ˈqS@GmPÒ9iR+0PPT\ =X Grj=B?6Fq Kvw؅'z|x7څ<^$+OL[ StcxE]u "@aaaIڱ;3J20nY^A JwRo,q3H\“~{ vtP77aN J R2q^Oj?*Zrd (╥TRHJ*)=g JϽ'VfÞ>қ$1H2aO9$ ŸUUO2$ԻqPrZux`I=HaUL31*UWj{* Dؽ{IrN{(=: vXe@.nހt7P%X3r*ilw=>`)9|vN@vo=j7UU1$>=rƙ0#2^PJQհEDĿO`LŰ5r1qUA(6 ?lRJz{U  zUG˱?SUh"}55%*3n']poqW5Kj! U{*#  O9ܺbF OD1!K+9OJ?*F\眏Ex63s\Ta^AT4af~U&_@+DO[+)sp x|u'kQw8ʓ髲JEd]{K㎂M_7n8㠧>)vŴe,#pI4L)"3M<͚Հgڡ$PT31QNr[銎(BHqǕ£2=*IXTҞuP*+O"$5YUpI5UCJ㿭t cHZ,̓URl 8DNXduc<$Ar?$lSeliXI}N),w| OpPjqMpe+&ixy6tZ9NGZGyXqU5X!vשo0md\& Eۉ$#9Uga5GS*"wxKWJ\wz`V}%zU;g|dE<{Tq@XNQG=j8=dEV߲ iR5 Tʱ(\eAPr%??ʠ|UQ@'֢i6/zIBJvX(y"v3lU,ǰk i%MTlo6iRG*fytIFLL~sYrkcvUCNi.?vOzC~PN:{TRfOjWlW#I$H梅$a]Ԋ8ԴOkB9RF$ɂUPjRܝ0vAemW  ȫr^%HڣjTId;wJcUeRFlF: dUڛ+)ޕ6@*JJ *Q)RgS&.X֡z]K{рH xrL@'?Wh]jZZY8rru2? W K T 2$X~L"EgpiabQK"yh:*m܂-_7>MkTݎd#FcO]f„a?S]b+X qVjZG1ڋHOYfA+C/9fHnzSj6@zT@ޑbeMvo)ҡDNN*03198sHFOz;/WPGT ~^X*JAaOJiKW% Iw86=NJӠ2vl煭*#408?~ a2Gz7jHL7M3v *G{n),qJdqe8+*bn3͗9q) =܁ ̘jq$o#\wz3a=ŭ( joii$}hmYb W9>FO IfBcو5y$_ks5x;%zkTD#6.*YmcpP2P=zG^$lN輟*7AySSDʣk'ߚ%˱I ~?Je@sP<7ZUYe>aΡ1=is u yבQ:;z<ϸ;o ?T3Hw98;U{rA1UDAMV#'jepQrXV9*U sZRʂUG"%"-$n!I>@ v9%IY6\$F[ɶo8k$sRg(l}{@MWozFwB}Oɮȷ>]mEj}pĻy*jYr0~qU;(_ڳ,Zܣ&Ineos}X;UHoVG\.` !y[xAy˞{٬0f\z82Y}3U-C##9s)F@9VQt^ߵOnbέ[=%4YzAY549iK 1nHW"M#8rxӞ1R`ҤE@?yFƪqpޡ3yk­VkURY? l[JuDF5% 4ȃ ̀5cYrFבRgdF?t?QlFqTNNEKۧ9赵*qt* 5tsZ9 FM5jFm521ʃְiJA'֐(OMiMV$ޗDbB7|`8O>\n78SK"A#4]Q |#՜723"֪B0ƒT-+ AU[?U{UVKujq8T=j"\K,W<5IJTzU#7믙b ZGRO@IccI8.~ x0t1Dx5[0Vy%oh5ejw-{y$XaY75Oȧjn@#VYvGFg-qevHOV5Ɲx NV6rvwGT8][+mxASFGpxǮj$lTYY# tfRǎ Ko7#j}RB~Jv0rڟ))Ljf+Oj#jDR# S"5^Eڄt' sRc֘4QL'iMyDQMw)8E'6I'_Oz wbx-)m$9lYeq{M̲L>^(UjG{AHnf0: ImMZSP@×S0[`ie[,@TWn]C8&˾*T}`Evl~G_kIm8$ju$*1҈YEr!&(2NX\CmҫX' EPNX#$%AlUk 5awaE7%?%%i.fk_F]$tdkŽQ<QK;#͈ZYe>RG>&8pC<73Rgp5={ _ W<;* sV,wO={2X1_MA؄5&gۗwW'ޤ̭#=+Rv2 hNУ.}+GZq8EP\Jܱ|,Td v#qC`:1}ʢ@cӎT>ǜ#Q ub?Y1YϾ Xd-}j7O$qS;HDgF&qK5I#qdW>XnX#=O&[ean:rAr1j 4h$zEB6'$cU=ʍ=B;SsN~48c?SLjq*q*nabkF?. {({UjzOo:W{S&OP81y:r*hȆ$,3¾Xyz._svW4L dqU/i,G;iFURv%K!-.P>X󊷣1խ17ݧFtչڊJ*pYU{V~P`! 4@#XrOZs1~9kV85R>^ίa9ȭ@f^JeX&9y5s!qG/aNj9>QS!Aׯ5DsFu#Mv>榰y,l1}HSX'Tlj 8~M,EMkw$S<drpOaS\ʒHp} k"Hm8=*$BH&i Mn[hbr0WֺKXҬ2ChD:mʺ('+?Sy;%OA?QA)PJP 6eeF֡HF߽$stv { ɒd&7&Gr'U5H8?E?ZS1ǞKt%-OQ?:gPTP-LrS"qo9og\6:Ͻgdҳb;U;t,7 $C8'1)0 0 DrM qj!R2G8ġb-Vc-Tr͟^lrh9)ښ[DfQAR-2J]VڑGV0Xq`-lR ]|WJJ/Qp\,1;?LNX'Rx?AP]W\FIWwVt<^aOSطHz*w,J~TʠE,@~r<} ͚СcֶvjAs[h| pp 7좲td dLHsY2cVV8w7ʣ֥`35!b9f٣enҪ^V̏sژ#\4Aǭ0pB<Ɨ(q={h2rrrjiwT y*WT'8N*:,mPySW`ɷ.F3ޯE{wxa#G\0Gj΅l\=Î[pѧ(MܽEiK}9h/vW Jw]ƣeQ.]ͷjl2i]vc%e;b hRNO\T %9\£CHOjTG?Q}X -jWU+mj; qj[w4q&S=rQBՁcުHC/ppMUA5.]'͓U|nmr^~aj%OKɝjG͚W^Z&1G֦ZNMO@0bSm⦙/`(Ρr}*G&j6Fg1|ȽPMXٵ^bf =j+ˇoCu377S;{U{x[#85^5-"{Ua+Nn6wzUXfP>X$nC$€ըI C[Gic!mL}ʜͷny;"3u1u\L)!~DJDɭUO^0-h)Vucavjg^YjPa޼s0F-[8'w\cLgjŏx}MĜsPs#w,0ңN8<5Aq6x5]#g TAK D~5b+lE<3 pj"8GbpX8AV,ڮ#>oooƵ/TZ*+Ҫ̇'OGy|ltwH{L0l`~5j?݁dbyS `u95n?@I&r *ʑ3v SL1Bϙq&b\D[$6R?,4? u<TGF~E!d#Z &?НUS;`+BWhr{MgRbQYHv(j7 ]m4譣I򫲲$9P@$0樌pGÌ+Os=\aG5oL{y?Ү9$ ڝbW$GaZr rqR1Ҭr:T˂($0֩;y{K rR 'L\|ͼ8^5LD:QaBۡ/Lm}5J~leFcA/֛ M3<SLeP>,4fxCM$=ZDLWE؆wMpJ JhσȪ"-F8xXt}XT5;N^C*˰oUkJnr"ciŵf?,\ִtsIkK 9Ǩ"cۙK61X/d;h) 'ƻ8BJpӉ iX5?5]nxOD~oβ*(c\|jP6L:K>rp>$?'Q֞bWW{=i  \{֎f, T6,8\+X!r^fۅ8=kE"(g+sڴmrwIޯ$Q@\u4+}̌=*GxG&YN1R5*V VGfYjygie-֪ pIՏ,sGQNv U>q.©j/jέ\ φmBˀrzU+k9u Uj@*_ڊ~f.aciN|A'Hds#gjcb!Un i<ݣ_OHl5#dn=>#@4js&3#wڳ`̱F;}k1zu]¨`7L%aSƁ2r}*1jFI"R L GM?1'SVLɕTbݗGF/=MޥXj/h;Fi&2#o bXi#3$uz+[#'ZY.}{k[r(< S*ŏ/q:^ɇt âRF./Ck;*ոQUg!c?J͝` X#,sV.$kkO[[7r}+>>:T?fy)==ꥨgj D$r.n U$99}32!8'hAx7HtSU|ycR"yHڕ­ZyG~œrq̏F'AS"NjESo&2ҦEQ)S~ہS %Ӝd)u2H;(FW HAfZr3vV[qִmq*DŽiwj Gwd\\*K(s҈Ua+ N)n&v/,i$HpDzq$fVlgsFY5*Ι75/`~tI߼)0C)jrzS?%A1# fpU|]Z6rb 7JngH][7w,G.kCSNE O֥W*'ҵ5MlJZȒ^8{ӠY>';d\̛bO\e^E8ݎjͻr7)azf!u+?M ǖkLBi{\W%w՞'%Ifm3ci!r2d Dq@_Z! ,BԸUHçjL .GSlg.slVoT e?{Xҷ\qQs>f?-6Iۆo޿n­GUcqN^Hc*F94e˿A2śi"(z;LUwA$㠨sj7'pAU=r2ZG uiHa^. ȴvjD!ch[$q@@HXcÊo 1ݩ8+ޮ>P nbN6a @EaF9`{xU< `R'ĞjuuKfXK)u2l’N88/2y#!s*]mzV̈,dLaP#gEsϽc\3);=<brw A yϸAI,mèO':gך9B̄u*DYr*ug.J[$?yOZ ) zSlaS5By,꤮Y-ީJZy>IKJP7N* `5#b=(*4K6[5ZI $j$ L߼ەވqsAN8JXK,c{qfXT9RDr<5b!|~g$``H,Ob! ۴5cH"2{)gS'䊝PcDF88w*YjK)hM s\j𤚧>e8T|n<Ud-XL+1wJwsSBR{befw|#.Hjk@2tR԰) SSP>vԁ}RUX_6dA['OӪ l| $Pt Ts$Q=j⵵XðU! 1rK&k5c!cIp (H[ڣ vzk}f!]܌v=)bdǵ,8e` ~rZ3E)1yxqGV%ܤZxF89dslNriveri$,p\6ʽ֢y깓 ւvzsx)p;Ԗ_LSሸz {pչdU*U*6$I8r~QқmVfcEN\S yj ΖWV=U7u $jGqV-b*C-=cK 9cڴlOjsqӠ]?.NlW8֥ƁcUVPjG1Cx7E9J::XI~"DFcr K$?#9!Z[)eN?x9sBOx^BK5ɴ. qշBjH &0qޤH0oC6x< lZ"OJ`i{Q;TPO$(6IQ2"DeBeB_jG]B/ӊBsM(XRGiLK*@Sj 2O*β pp1OEg>T{∱NԱDN1YUwn$>tcbr)^[,4㓒ЅC:*n(LfNAө6zTrON"sޞsUiXf$ђķJHNJgM*8=jdGNC~tI- ΠIuK`B'ʴ]NNwG/TpoKxT=*Am< :>U.B*4p:"63P<2'?ݩ?v HbE&>e Db =3C pȮ|/`GS5]JéɌp4o$1%M^n5϶V3e;[w\arǨdPCKzJ}@Pn1 yz5 a$mv$lgnsD*%sc4،Uz;RP[8EHJthD<6:vOew )VA]S /.3V Dn}jIdbSl b1҈{Jۺ,aZ=@`KAMXf)!F{Nqֈ*Uz娉K|%6皖V^{ b^{ |Uw`zUflZ=$l $- dB(=MC&LED3Ȩ%ڬ/ȸdsRTzR Uyg%O Q31zT&F,px,]G-RHb -RHcMR[wyU0y_)UDNdPF{֎A`n>5,UN3R\Twk,aGoh־U/[PݶD59ćnnSsLi>qSa(v-9VLzqV;S0楏 T=6YBB Ȧ\hјM rEWr~B>Շ?\ 9+.M`M;"wlkidRxP  ?,z4*Hͼ*MN$`z~TQ$7ݦLt4V<~}_K$#IY;+;եo7W"I8aV,EQL U$z@NywKVyɮ&w\T /M Tަ|ª:Ӊ q8cOclm;}kv@{ԀcMXUSsE:)HaN>\$Lހԉ\9+C,jYݬ]ZiBqU@ɮDK#}MoE$|ɪ}V&F]+'Q7q*PKhj* _ɧ]1#>F.9 `3~"FKsqmivvi %XE+L=*ג8Ok,,I v8?z]j6ĸgpwS̵/¨$R>G I T}k" $T'ep $(4\ksK0(Tƛ.$B[Z}Ѹr,kwJ76r4.ֽןh%zKw&b8'ۚu} `9L ނ\];QquPaXDR\|nkA 3U{%2y (Z$5SPIT ,cnBh )ݎK3%Wcw7AREg-ͪ@#|}EV1'8\Qbhg0 6WENp`t}*FzRB7sB[1*߸2[]I$?SWDd=}͋?UMuܧAh v\.l~Q k %U?ZӳZE p3Z:mW>լ3*\aGR d>Tk IZs~XkbB&krOZ"GMtS#;F ߓjvJE԰Sd 3cfZy8 cGWt9|FUc[}RF}jxs3x*v1*yic59Nx =jY6FBHCg ,{teW l2Z{vʞ1C*n֍F p p)h+KE>Yyf\nYJIPzWog!#u0~}MRQE8^+- o vӵsNvT1P1bVPs[zXM'ߐqZrv因}ŜqVnL46@1M#@I5%?asRԔ3ghKEX54s^o _|Յ{rEnMnQER1UAHOJYp7Ny6H^ˁ9aYF*Q߷G^yȍ$!w>TL1"yԲȥ$9 VgYgHcT3J*ć!p[j- 0GF ePS#OY=jXnڴl"Dl2fn]U˗'G.c0G#ӽ.y' )5+<(>qF,L+2 U8">NSSF~qZYZ$#ft*mC qkV2#3 vETh{|.ޕRMpI7[EcyYSu% Q3N w8XF"\Y-dDC)cP$ ;M^!#N~eǧn `VF.31M2(U oR\zS1֗~0QQ)V&'VSr{[.[10烊Ú'`c`3PMzD!緽({${һ8r@l.ђAP瞂,֗eZ:M[I\>Q\Cϕ~յp$B}j&!ohFT9p2`-#‚p={Ԁp94n3A$Enp>KSk['|p«^-&@mDw'{(ȥH=^袊IWEAz3oفb0wͼ';q5KDc4'nVs *t9=G?8ɭ 1AlΫϹ,#Idw&ڰLDrwU\,?O;s֎5 )A`qQʊPi#Upa7 *,#"rS*x+}W95FVvS֪w6:RyldZJ[ v{`4c ?j9.nďGd5UWi]Zڥlgojнl0wǸ+*kU7Xð v++Tiⵇw1GZVA9_Qx$0oF_OoJԵa:J2I+x?SʹI+v>N"dwcP%# I=)-Z \#*bHI l弰 ;|19TֶL2⺍"Z5iyܜ8 c efLEvަv@ᛦi@鎢*8Jq< I<ޝj?(W5^8氵[4^>خ۷a[%QE,@r N k(y4r9~;{ yuMs4SRin:A'Q|ZR>]L7LsU3-G/4 [֯i6C\Kz YwKw P~_ukFR8P>/X}!FGy֪|#98%0\Uȑc hM*ح#0Y>mUFV(n>v`7&+`g1R\LgHdfO(1,J3ܚ[U;oW*vjb0b)~`7ݩw_?>o)sr8M(d8s=h-1p ֋q#'!\B>QZQP!\8@@RSW dzE/P;w>{Q֩}qYژ1ŐzWwDVW,9X}cMݸwx3DrZ-n 50.W05õzxI=gvl$fH*nfTI )jee=9znEdׇE 3s$UV4+ GKV>biu(q"txR?ʦӯK}pTJ8..jάz`UK^Ekhu$tZf9ދMӴ䎋WQES%Cb~lqUnVI ,qYqϜ+Q;$:$՛q1]GmO֭N#`ך`}ÿhwշ t#۸?kʆWUos6՟p&~pNU [pL#7zIeqSC?0kft]`yq:0!51R?PV?s7FL;Ҫ^\*qTޕXŲDqUH9eOONpNg N2=Fj+#%r'2yז'k';yk|c>{ԣ H`Z~J& 8ezS>Ȯk֤HBz( 0ؓY$?4FuC\8sғMbj.$us* .NXuԅyccԌۜ6?THB+z?[vy#>-,W*ƍ9w6yg8j/vinKON*T,K[+ąv@5ɎH`~U$y[0n qHHBe~'wz)%+#(9MI&g"{֎j"JXr<](` pCJ>ƌu|'nMfGv8j3M$Ҍ?0ʙj{@#껨F99wde'J wj sRZ0wܚOJ>Mǟ^jk!M,8LV%I6BcKvy8NOQL{%Wִ,Xr5\[jS3TxaL (1 zzM="3 4m[fJKa^><{t^?xs\nX®lXH[(_8zҬi`Ir㓜O :U2?2Ht 7qJ#=Lc$VAoLf9o-86$SyNxO QN5Xx G#"|a?Z}{0V`=5`=ըPFj9XߦTdkWdѸQ)tx|ؒl.*m"̈́Jte >-OBbڟs1!yk[1 NKe1XZƞmg;1X$81ƭ,+8|ҡ(cFǑ֚ɶ 0Z(ۏZZI(q+UޭZqTu;d}v-TsE35و̮b:O/f5n*(pUU+y:~1Z"f8ڈT ZBV0; ܕ5{L27ސWA`ðwb,Gԓc1%Wqϰ2j(yFOFY#ܧ՘D;^z5/ܚ'޳)Ԯ`=Hjr@Z^F^T55xNxT*sݵyy"{ Ix nr<(?col$2?Gҳ>wBJnU>oFԃ vWCҶj̛eOݬ B싦(yqҦ'#ޮiwr5j8-Su0tO5҉c#Yw0**Mj3wnosN,945,xzR3N8xF+Ɂc ؉6F 0jP<~_So}ɬw_<`sTcaOv0c(+*cݰ2ǥg3R[Vt=*k3њ\dUL`EY+{ۉn+RYnR;~J:;ܸg>?A3'*]2o&ցT$8 V7a}fk18PV19Y =A˵ƷH+-־۹juzU? 5ӝVO`ʰuA~r}Fy5GVt2Ih8 wq){}\a}?Wdw7Ru9\ Ktn#Di*Oy'VJn%;}eƞtsie>UP=Cײ.#ʕr3{ @x ujqClu+o<2է}0G>s(sYe+Ԋֹ_{;Pzf&գ"JYm8+rGi| IS$cޕܯ9cR7AO MApm5Gس˳~\UK l]jǸbzareyk'?`?Z豁λ,`cҺAJ*F:Xڒ88g)W8NfV:hQRڒsیUW~ k A9w2tFI/d(1 VSǙ/brOҙFgS6~= `w~U?{赽,=A,&ʐrf_sg"]]$!Udb Curp<Օzh?tDZrs~hRɘVޘZSj; Ւp ͙呏~\9Gc\y1M! #GCH#riDɵִa[$}pEupYXw5Fmlz _H|;YG5M(YzǙ!Ube+l jȰ w qoYjsylJHd dG#FĩÞ+-Rn  pXSIHG9&]ɵ6$uNHlj^ꥼEf +&զG`?:ε2G M( mQM6#@٩y܌nkY%i _F m,>j96C(vڳ1Fceo S Ƭ˸jXrKtF< g*@yY`}qRLcv%o1ㅧǂ <*<@QVclPO?l8xXx`Z0LaAаK^|[Fq؁WԏYSnm"{hu\YСuk|JU6{JՐV~ Kw6bF-*YjV!b6J ,d\8MjS[hQZJ@8X׶42Avkաk8aV&krTvx4١d8aRY0.c8~9Q]LL HXڢlڧaJJ2. >2E)8 Ӯ6Rc#i#$UKUV_Ƨdd\cC͊F덣[ZTHp@րZ u r1Y9]y,pGrd9p@k(.r{Uh|YջX hۑZ47 toS2?wAj;2w;~W}NA(/8l\zUZw\V^u0KlV|Vʨ4-de Hn ) ʂ^_APm9;d !L\;B=RKUglNRF[l0i v n⣅p)PAN/!;HU!b}iF͟>Z#>XmJ"Xb(X۷yVmcZh=koR֖1\S})VFz6zvמ-nƗK1^=i0e3WkbW{H-Uk+7|| zo0F0VU9P߳dSRp4lFPj36Ys!UBIUPd LFU2m)]8n{z{u{V-1e+v1g* }#fx.Y9>6 `#^6}j}jbӅSPsPD!\%P0j6H#k{ScҧrCS㚿$v*x"bZI6[[>>zMe!Z;e=ҝǒ x2yyJa=Ϙyb8 Soۊe&nzbSx5%ڃ5%&B $aQkkM>g*kEv\N׉w^M/~Ƴt̛;k@b|vؤbɿ՚̽ Ҝְ"yx#u:Dd؊n:wM1UGSO,6}kX|>~=f|,9":[ yP`OǍ^dq/ ?Yh *U-ULd0 EJ#_2%HF@ vI 63p f˩HV1*'bwΓ{ʥ;MQpE,sH\֥ ɑFsVS$㎍cioi?4j/ʵOZZZ)))5M|Tw/UYF{ ̳G'ld,Xv8Fi08nV`rGQLAa*i$ VL@/R*3Ԋ},1l9LzeFۈZ[i(7oj{}3ҨNJ$d*\»2< ؾo7*!#{ҩ p 5SӨc Z]L\ѿh8>*yC|fvcצjś]žȩ- ^_*!U/XJD}G9Պۂ;+'*=XHќjxG~b&"✄чOlgL?s#rpUW$,l?JP>+*䭥ۨX>7˓rɛ"=RmQ֕`[gQV_[cv mJ7|/N'Fp`] cZ7z^Rdڊ3 d~ud9*tdf љ0倫1K8u=;WDxR80:c)i(dsKUUN\4X GAcgιvN 7vUX$Yp2=;q38V4 *Ɯv;wVF`ʵcTVlYU.8I/zs!Vc+]Ɲ*'ٜG4˔H))Gp:/B[<2.9Orwׯ~jXrGS\)r0yV25ji3~vWӚ7;iINт "Jza-$5{I\O szrp52ISʚӎ!ek}Wo,퓐y_&e|T|@ # ~k)Znxmҝ n~Z~mۍǭ\=9V`t9W`ۚG2vsY໮8VOx+;s8[cdoTu ;TRyE|߼>y$n.RҬ"f,F*E!.Y丅okmI<,m DG^hyf1'2dҬk+HVNdcW$[~XNv-jlYj ssID%qޛF8ޅ g7n=ji `)l?,psUekƌ)bO2*ho(_'ʡL63r\犞!媂9#jY)O,GkJyh$hݨko8 N*ĀXڙeG .6!9"J(@E?7:BV+T`Ou$ @U %Okmm(JuiRAny#5;!v3Yr.HcWF{P9.q\i@䱮uэuc]6鰌 ֻ]?pz.+ӳp 3P8p`6Itpcdk 4c(#֠VXm!̀`C6Dc4Wrj(Tg$Tqޟ<^bSҧϏr;=*KS!0UlH; >X`ud$%҆ ` (eR @0jQUT>Xˈz"6}1VMČGS40Q =ֳIB>**05<Ӣ&؁ ÒGJ=؆ ૲nih!"ʥyYp jZy@FO]s~.NMZboVf'~1O8=+N>;V|o*Nsc޹x{{k<(%kYsO´^x-'jR Ȫ4sL |SfFvS9jn1>lӥ)#&RH%S0pHXnF5gP"@H?1h3S\H]Tt'Z:Ƅ_JVQsR1r8ALmզuc620AJ\c? =pF\wuӮ%89Uluy¶?c< ZP}ZB>1֞,C @1L-ԏL~5 mҦf-"8#J|x9?*s8QF[;? e=21MڳV)&O¾kddą+Nr4"G*Rϵ#1U,mF0:c5 ^)SP&HÊ5' rWԽҦ1;@ fOFP^6{MdZ60ow|λ5b4Tžy$P=jŜkz *+DBҮdA;B<ՋR2TMnU1q-ӢA|q+:/4vқiaTpxreOI<`jeG)>?J I QWSE55itR. x+"[4ol3!S#3z E*ұ>,(FI r(W;樬Tu#ۻuI }|[-AEh[F6L`sHsVȨL {dF"0T66ÀU[LPہ~:I}QU3vnTi0'PnvǭKn1:`d|g*HHˌ˜wIr1ۯ(̊3΍e%:E@PƮ̈8;*,8,,1&m" wc ;Wf*N*O9 +~L3V;GLڵ8{RO `UsQ]̰@Ǩ U ӧkglF͞ri΂x߿sSKXG^+(CyQmFfصQEP~fmmwQO,EhyLl$xU։h!skjСPgC>U#' U[q;zҫ8b:#6CsD0h';v-|j#/߱CSDT6m 2 ^U j2JP>EQԤyD;lGATq9H8橡*f)ڨ&+9#uk1`f95/֝ҳr$|ֹrϻX?XZɖu*f(['gnlgA#s FkN5Rb3洮m`ryeY9 d Ҩ8),`'28 Y *J#c{UnRF7NUR`Iӡ[w`qZtk0^{GV*n·XR%\Sd2  'urITdzB7(i~} h[*F0?,U5N\<~ussIzj. *Ω3\ݜsUkkZD`2>b2Gz݆/팏sZGZ$x=).1U]QT= /[̀\38?J;8?J9ԞhG&xl`wt˅F d9;0sQۆ,4A%Qxm (sF$ sW.y=1ڵc8$pEh4\J&X|NMa7Z0ygq]J AE3Ep-ȉqS!qpS\ɲG^p+J"+u)2:+mTpqlE?*|YVn0NcZg'+7[nTLK\椯ۘMb߃q=122ͷ'Co(_5֩bB2G1ww? ZK/uJePI'cnMqۉf?xgbOSNO*;zУՋ U N~y[1ǭk\`7?3rj 9vUc8G=m-l,ߒ;բ[#ǜd=@Ub̊P̐CB vOz|Xw Dʞ=kDVwajhФdϵ^cW->3a~x=ʴIS5p SHr iZBcT? o1T'4B}Ә5# R=!R81iUy)G(<:њ-P@#U8G{'O~Զ$u!͹TVfywNrỌ޵4u>\y=*o_j}p ZUݨ9+> qj 1U 3:C8UUw֣F30 6pҤQ9VvNO\VO=qW-m5˞zf`qqU˸[w*l/j{;{~$rs)BѮ{ae3ޢ&ܫ>i8z{Q^\I~]$e21T̷S9)& jƧpvQň,Gn)n;$u"Yfo#lr>)Zڼ1K,ӷj 馐8%NxI \ [2:staRNOB!\p~'?P+0BAV## !"thƚD).axDyk6[vQw0=bOqRn,)i $cj:kD|Aڴt&weL=y>_@52;E1P"+Pz#@OSMwL㡤. ڍ`R q麋t,a_֋x٘9RL'\OrnjI Xǹ*[96ñB=m:eW'p2䥸B8\KxPJIMׄ,:"(ƠI|If`8F=j2*HE;#`:.G$;bGA"pqtqQ [@{' v#57 zoW-&;',/_zڳ8 ofПy gj2~,c+TzӮ\E / Sɶ8̅@|GF*>ɧFcZd`?Zn@u?#K}9UZߨ|!TUt/vTqg& ;زCֲ5bJtOֳy޽1φl꾜]TΣQ,1Ys@B;ZUzhb>C"py!9~K.Y ֆIQcq@֑OӲv pxSQcS I84a2+Åtݖ;C  S;,v|p-p$G_+`A TR8!gqȢ݇$#h=>EDاZ4'Tdwo O^#YǧXgB:SmWv &h*p}9Vi7p@f[lH~L;KHSJһtrjϛuZbv9,EdM2:b ^DV=5@qMk #9i&?qO6M {hL,\Lӿ;N4BK>mcV 8_jc7<[wyPw٢sGLvf Y"zSScOJڭ֨*OZZKŁT#7 \B1>F1N1O#b"A##5 ra`ݸk-dgYIOihAVt>=͒~9Hn*+m]I; PHmϥ&'Nl~Ic,J~EM>1's%üyTwwRN {R*=VTHCx 4ECv h[\579=<Vo-#E'@sW/㾷JpOwlQ~5,hFQ*hXbXaT`{Ԩ5SiT*;#SefMSE,O/n S˥/UM!m+&)92# I ʣ f~*[szس*n Vœуi< kW#4ƍ&[£]>[pAN.g1Ck1$-"x6ϑ?'mbu~Uu+_.m[#eO\f7R*EI,Ţ0ϭh6,5yFPոa[h<[vVia.ycZgT1j9n[ kJj vQevqƑnddÓV#4z[[>w|p(̙I V́Y0;́Vd-*x–BFO>@cfGv>Y]@^3Q]?JĐ* UaKg;$VkBO"GliLjmX ųPi$^2mtnFyJعT9~ޕ;R~j[쮱oTP m\~^PPvyH۴73+J8+2)wFvm ڣ @=*F%8Ԓ:7aYIJEf27`qucҭjsZ۴*3"*q/̪8ȭ9exᄠQ*NсǡSQ'-w "u#'Yzu?UZONqYH?{ F3]6$ ̽$!*trZrƺ 8j >cK݋K){sojϑ0L`u<\c =[ F 'Kq||+z[i5o]/5pi}BƼ.{տ~[!Sj*YۄA /,oU>՗w}l6#o v#Eϵf;I tOZL/Q\,s= -9-4k ( 5s[j㠢)h((޺hxݓLU bALx1UuTnO]\l)# wfvr*֛ipTD{V46yI|S26db<{^!>đPri ipȠ/]{6 _gHFP?>s̬ YP@ _RK)|K;sN˝`@H~ RRϹanyggdjKy.';Q$2ns2RҙJ[5}#\_e {~S"dERMh5J DB8WnTU[r!:{p'IU;LYDn8=jtaRu#ޤ7NAfJ/gҔ1IQx{@$c>9sPj*h]ml,sV)1jޒ1[c8j@Uðk{w'd|u\ޫtnpqbR[Fpiђ1Up$H~($0GQGkPGzٺR]IW ޵" u$cekl6\GEo.|k D#y% yq+ßƲ4(8VlJd<rOWxJu w=ө6zTkrU8 WSAdzMd;@V*&]@002)iz ZJ(()hP{YK zծRi<~Udv|\pOorCsҺ;)rrd m![ Vސm$[?J/ ,W wz=kQTYX~6PH}o zfVh``psnBym<8a+-fy_KTPC{SFDuOWHcJ;eγ&3sP$fg5Em^$zա}@H,3g9{f~18}*xDRTЉdu$eޤln&r59H9 zTƹ9cޭ y?تs RA1r2x?d[əe taǯj]^38cIrPMXs9)F${[vJc ͸1k%%e7ʝI"Utkq=Į~@~QXV*,<{6n,xǿ5UrmUc 2k+6 wI -R28nqV PjbKIޙwExfu>MnKoQQa==*j(S PVԜG#0 qȭr{[uKEQEQKEQEQEQEQXpp 8,ܷHk3rAXӑ\0P6ZZEYG؊'3}jweZ9v/\/4 pcoZ'+S,nc>VVYCAʳdbY~f"d&R}I9,h,;rirgY2k.F$#?+6Zkid; ҥ{ےc;bAԷ 3! }9M>^LcڪSĘ?Jkd"07SlEHWyw/Z8yƺ h$3݆NGsZϴ0\K/;qVvN0_/'֪Ci,c@6ڪɫIdcUj$ԥ)=g$1ִATJQڳ4a,30m3qTm[t+ ߎsH e׊׉vD64*|T7 M0*(b0ڙl2OAQꛑ#} GV kU1Aޥ Gk(AީLv1OY*8sVR)ǧiCwaNz׆-B7ZqS3YxPP2ʳI|cih(x$.2M]fa;ddӹ3eA uKRpئM4TAGßAV:*Sxl'~[@ ?R!18sR@!j+& lW\B$`=#EۅLP=Q#LO!wbkƬі,${U>P1xS\*6Z,J \[0xpTux4*܀Fy<FޣQ&;d hˮt{TӮmMai z?iVlt!?i]w9S;WCYgLAyV}іQs[ZXpSr\{%# PۨT<*;hB0=3 Vih(Z((((*yb2+`#XP*ݝz74lv*Pc,9T֧u)L򉇘T qޝos9ctǥZ_1U銱iqb;g7(U]VV9~Px~[OEJB|]{N;al}yWHB%c(Z.c]48`zzv2OjͺnUL*yo2W`V' XwֲH=OJvJ +S1b?v>cOdb1jwY E}jSG$*V#E#PpMOhAg#Dc3ܐ}j`:BgCdSvI~,~9 wU[kF8S!vc8q7'~s#90A1j`  tIbi*1 9tgXmq%QA Ĉ0FM"8Q-KN(((((Z(q7#Mb6}n\qץfv狄\G*aGe܍c5p 9#8'ȢP@'R1sQL ϴ)e ZL .=ZL"DP7 )n"Tݜ㰬;I.4y&-mtEk՘eVQ\[ [hbخ`]jw֢iT骤r Hg-_ZRYBXGyRsJ&R9U9LxȪX*iud'ٿJ!9j YyU=CS,{d؁YG}UX4륙nFi%ȫR 6*i| Un>f5ycW~(---QEQEQERQE-QEQE69%\⠎eJ0 nu{Q>8+I.f>y$q؎,M`cx͞_*3G,AnƱ 2.XYA {S 56Q)@Zڭӭ!Ο.}}kOR`157> J6U;yDr.yYxаcIa?BojH;F ڭqj+}*=D!}_=QބUNѼҷ3i vǷ>fc6yJV=hH<6ǎ$-\'YHPoyRS袊(()h((((x ³,4X QU.ml7heXG=MaIp<0OSXNXTiy?I1VjmWjA&KZxnv ̤F@U# Z61JPG<.ss5cy%RݮnRnӐUmg{|ӷi뭕-q׊sۨEQEQEQEQEQEQEg7&ڟuOꗦNW=}?(SN*Up2•f߽nl|V [.̗m[6Vwm t!f;~N; uJPYvf˥Xi$A<*}K8z|@G9++B``nE˄b[3n+B]cu~L3*D1_±۠#)u!*sNW+i>9 22OhH%yEtLuox\>i-iw9bJҼ?VGIfv4Fq#2RhevgCD*sudT:5]T=y=5}zT?jH9Krzn(c9'\jOjsq_7vr:."}bZFR%a7fo(cwN=KWv8hrj-K)*ʠdޗG<*s4d[%rvYWrkwi֍QEREQEQEQERE%Vb+ILeByziڤL(ݺ ic4:Iy2H;V@EڦF 5ڧrE2W1#O*K|i&5$gNO*j#sS]pKJųbIs$g5*` AwЌa a^20A%c}*͑#OAJSܧr(؍}gTR d8zfHv~qWCuYQ [>~Vi3mN'1¶,o'{eT{;fO9wcu?3ZQDfD6Ӱg=YPv-d)_&_:T3pnQ>f2 ]Gb0 Cr&ӑȨLjSϥ@tu Xcq~9*` ֶkGd\m?l2]zt5t޶r9n2{ vj iAFrET`<ꇚĹv_Aۺ\cwoZ]}=k:G 럐d^դU72}sZeF ջX|1=K-сHlgzfXGVc J#AeӌU]J_1i''pj(,1^3qSi3:MnyBDpNʎzg9 (+rRxHVqڴQ9\GY:rdSiQE-QEQEQEQEQEQX,pY\{36rq*2@f Ŵ 2[WMiѭ |7?tV6H\vWr%F(T 9#`vxG9HH483 1K*Q<(\)1\rIY8byrPC9>TAsЊBpݸP(F~*t&@aU=u"F2G.SKX*Wvፔ2 :ZHeF Gj:(jXaߵr#R$#= f*y7t@F?1 8{Un׏#F n-b' 5o^k;P2Oez\\n7pU/rդFkt8V ֓dį~rTjdƧ w9^Q:0dr$&8gu+ye#9ϵUӧHbGja+-!Z;w y] eYs[r#*Z)h)h(Z(Z(<\)\iO͍hhf@qц~ڙ8<֙b)1RtO)?0`Gu8 Duk#ۊIzCY>5[Kk;q16'AY_gj ?ިQ5Mɚd4s<0mns@94g#MkhVbqߊhFcjZi 05/c 1T]DʶO/49)*Q7C'9 PΊOp( eKg#qLi|6CI=ǵ!pXڪE2[>J1 aA$}j]tW1qw*q!>pAnN[V5cM,3[0S-j単O˞իe/=O~bxǯAO4H^ESѣW|ڛodd,.7|S"o9`t5! q{Fq8kfY175`FGR1dREQEQIEQEQEQEd2|ڸeCո,|*žO]>4w&=!6X QUuA":åe¨kM,g0i+Ȥai&S>* @L5gNd-ҹ>*$r8#Rǔ/JҦ U8LlWp^):1,&pv&j1c#}MKv뀼j查s$;g`P%^n8Ojׂ_8 ЍA:S#T8b)8\96v=USz6i_uxNM7R@7&+<|ɪ&Ü}+>ՄV[>©]5ДۘYPpeaS2(ɟa*KK*8f9ZU  ӭKR'$`@^u$dc*PZϒO=6Q Ȅ>ő+K乒D#+IKa zr+efWHޏRԔ(((((((,!qֹG=+N (aaec]=yV'Ӫz(/2%y^K5ejIkۿs~N-(d'a|؏Cҧ jMQ6L`+`{$.;S[mn2־'O>^t嗧zG|ڡH##5B==i/IvG~jBRĀ#d)2n#&EnX9=NG5cHҪN#0fٵz*WVR㿭Kqc2zjYmRAAUR>X:bD7"pH=3t'十dVSF$+i$;:۳7"cQFNWFA^dq3jht$Y[;[0!M2sճ9F=3=vf܆ VMT:d_ЫK"FQYI^ïRO,3W4FϘ^F!=ihL}LҮ*.9=+wiօQIEQE-QEQEQEQEvvw!ߡ">?һA֑1EPzP~T$O"P8>V9 a#u081*sl<5z2ZܡY$kj/FԁV(هFJ-}ҬXl1WW?a\>kHi񂿍22C ؤ1[ĸnV[ƿ]G- ҚMC0WR(F廳u+J(a{x.zgj7.zIFyV C 梸 nvi<TY:&RXӶ;YD@gsQ@}>ŒVE27 1HP4p w8հd$F*vVi-2ZQ"j,!]ŰB nmޕ#V,! t.YG͚()ʃaMs;@tmgAFH³2_a< s3`r9m) %---RQE-QEQEQIEQYeھpk 3*rrE >ǥu' JJJ(i OCzθm\ H30]Ȅ`EsyW,=LsjyTm$0 $U=<f#I1Q1]]Tij'.kJ.I;XOZ%LL̿*.) "WkPq^!)q*dQxWS-T:˔[\KZ`Xbi1$A*ng'ޫ_٤ǭG:9 ?N {ԓQڮOn#USXpK .vM>I0 `d}0siή Sr,.pVr"U0HqI?J։o 7PyYy2/q*V[ZcO! 'ӊx&NI5@:C3XbE1fSsqU♞uGC66@zd#8K$#|Ú؈ivd{ U`D(W9IAc@31$drG`dLE3=fEQIEQEQEQEQIEp 1 qHT9Jf]Z-5G[YeOrjĒ-[|?*yH3Q5w%֬RA,G`*5;h!EBڃ21'ϟ_і4 )u֡7ەEةܨLjklC6?OG},~ z }@5Z+dF,N(]IqQH,[zj[LӬ { k+L!oҴ-H#zz,^.޵mg eyfdu(ZMxY2l|(*$u*lQvuZƠ&Gn7L.Jؽ ;RԧPn|wm_ DmEp;*8(h00m@QI*,:7!)1$IC֛: "taۊWrFI0wA5\$p*B(skgEAo#I{֞s} ?Ͽt mN˃Wp>Np[aڠP1AAe-ѷrŜGii .٘.Z2bs3aV$<˜] ʷ85o$=* қ)mHjY78I0 \ @XScq}J0z0%x#$ozV;aP\ ;yֳiaWTnR%Sjmcp桌̐9c EG*vkq&vζ _8Mg%@;֔Vmh隞3隚ˇL*@X28k2B P0qҨ_9 8\Ê yT'd#=uqof'qZz|Dq,KڮMI*>vR[kS{֏֊(((((((D0+Aa \պf@Mo)@D:qӽUH8 98^uL]Wj*h)\JG֫m0pDʼnO!$UgI&'Wi@ҾI*{xɥ+GmOP=+riFFdcjֶacU!i:R5,:.Mީ.W i49烜V}#us9QSiziR.'?J#8Zuǐ{L6ڿY@) JK #5Bq09Bq4>sC']8zU Fmg]*Nyrp-M̃P.UX=m ị#0X1kV!bnj;I8R4$޹.V8Tֲ..p&qQDb ?%`0O҈QbݸOOz̰yj2 _ǾiJ" ܽ;M*HIUղ̼«$ӭ`y.c T:Fi/IA4"nD [;9 PhĖ-Mg,7#Qv5nq5|N86p1T7I?zj24vcf8Ȩnݖᘊ8ަ#Fޤ 0\j8RpUIWPb3\WCj ϙ;>ݣf,͍ߘd.9凌+`>aՃNm29~!@!8rƈbw.Xj-pi9bOsO҆-W>!^p9X!sWXֵY֯8 T7W$͆`xv*9W=}jɼx9Pɂ+* [4pH~5b8gXr)WSep-K; R ЏU&(mqV^h4ghQ=BJ0@cm-,73zT&E)n2OV`cxU#F&48Ry?P"ԷV f- :H3V/]-T dhc/T(giOn1ν`yNZMzUeȭ)@?1UgrI ~8/FHܤXҁDRvb̊^wR6F~n#R0kᤔD1?(cK#54_jkgOmlv1?ʶ,0q5n["7$J1 VP;ĎAǽYH]>Pٓo+c6#i$U'ڸ_nޕn[GJ$Q+<˷tw>Bk~fo-sk:ystIo,7240sM{i2:Eφ%nZ;Olr*f6蒱m##sK')-0PkY~=[7[r}G}n݌@[aܘ=k^p(ݰ_Ʋ5x[` 7m;4FۍP1g>`+sQf5GRjƜMpNOozƣKսp-l|uU $;&#jĭ-cOjYd%ZpKTh`GҴlq†O8 e,;d|ֳ$q kh`>TMl2P[z[[Dx νfd1\};BNM-iy]GQS˔H6}z}1'kPeq;ֈ~u?Ɩ((J(((+8]1'rŖj5y)O5G\2p^D+|o˥EOj O r1֠" b)xxW !}+J!9A":[2mtjͥؕ6J5=ȑݗlxʥoX2E2/rOdesn #܂֢I3$?(5ZD~@PHb}џjf֚DP&44R3Yڴ< ?Z|q Q$sT/k8 :l#T6GkGد_ǰJԆ=>S9cJcYEVB7z U tlFoJh&F1*ռՋ+[Mtfh ^IF%F   5A?E jS {[yH Gak9K|:mm=_T4d=;uD%;yUh2閈&voMZ1mI\}Mkr*Gj_QT.S3tt,2GCzU0y׽XUdDZS HFcP+EpNw+nqLh3|hfw(8EU=gwvP~U ]^wMFvj|TxxHF;czemr۳b8*'idR:46o np) 3JڂFڛ"3ү!ɫP&T%%QEQE-QEQEQEW ?뢮()(((((((()(((((()((J()h(((Z(((((()h(((((((((J((((((((((J((()(<~4j)h(()h(()hJ(((((((((J()h()hZ(((J((ZZ))((((((((J((((J(()h)hZ(((()h(((J(((((((J((Z(())h)hZ(J)h(((((Z(((((()h(((Z(Z(()((((((Z))(((()h(()((J((()((((((Z((((()((J(J(JZ)i((J(J(()h(((((((J((()h(Z()h(JJZZ)((((((((((((((((((Z((J(((((((((((((((()((J(((()())h()()((J()h(((())h((J(()sIE%-QKEQEQEQEQEQEQEQEQKEQKEi:EQEQEQEQEQEQIEQKEQEQKEQKE-%QEQE%QEQERQE-QEQEQEQEQEQIEQEQEQKEQKIE%QERE%QIEQIEQEQEQEREQEQEQEQEQEQEQE-RQEQEQEQERE%%QEQE-RQEQE%QEQE-QEVVj UV‡8nnflo8qŖɖn?YSj![?3kʙ'_³徒SmXEt7]Gj ~<JѶ<3Vj(((((((((Z((()hZZ)(((Z?ZJo/5@>ÅFSTwܪ>{eq{m򊽇[UNkcMHjC޵fRQE-RQE-QEQEQEQEQEQEQIE-RQEQEQE%RE%REQEQEQKEgF9Z(Z(()h(Z(((J()h(L|٢Z()((LrNzE-QEQKEQEQIEQIEQEQKEQEQEQERQE-QEQEQERQE()h((J(()h((((((Z((():QE-QEJ $dI ZLzԔQE%QEQEQEQEQIEQIEQEQEQEQEQEQEQEQEQEQEQIEQEz()h)h)h((((h(((((((((()(((()((((3ERQE-QEQEQEQEQEQE-tEQEQEQERE%QEQEQKE()(((c1KE-RQEQEQEQEQEQIE--QEQEQERE%QKE-%QEQEQEQEQE-%QE-RQEQEQEQEQEQKEQKEQEQEQEQERE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQE-RQE-RQEQEQEQEQEQIEQEQEQEQIEQE-RQERQE-QIEQEQEQEQEQKEQEQEQEQEQHsQϵQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-%-%-%QEREQIEQEQEQEQEQEQEQKEQEQKKEQEQEQEPzQE zhih(((()(+ ?뢮F}(~4ޖ(J)(rӖu:((((((((((((((((棨h((()NZrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2袊(()()VޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎ(J(J))iVޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEeGE%REQIEQER9iNS(((((((((((((((eGQEQKEQKIE%RJޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQu--QEQE%RE%-*ӗ*SQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2袊)ih((Zrҭ:N((((((((((((((()GE-QE%%QIEJW:N((((((((((((((()GEQKKE%RQE-NZrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2袊()h()VSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2QIEQEQEQERҭ9iVNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEeGE%RE%QEQER9{ӖNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎ((()?:3hNZr/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:Z(Z):J(׌(z/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:eRQEQE!((wz1F)Rҭ9iW:N((((((((((((((()GE-RQEQEQER*/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQETuGKEQKEZ(r/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQtQERQEQKEQNQ֜ޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎ()h(JJ)ޜޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎZ(((U/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2袖)((()VNS(((((((((((((((eGQEQKEQEQER9{ӗ:N((((((((((((((()GEQKEQERE%N^NS(((((((((((((((eGQEQEQEQEQE*ӗ9{ө((((((((((((((((9#ޣh)h((iW9{ө((((((((((((((((QtRE%QEQEQEN^SQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2QEQKE%%QEQIJN^u:((((((((((((((((TuQEQEQEQERzr/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:Z()()()VޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE ?諢(((()()()(()h)h)h((J()h)h)h(Z((((Z((((()((J((((((()((J((()((()h(()()(()h()((J(J()h)h(((J(J()h(Z(Z(Z()(((Z(();QEQEREQIEQEQKEQE%QEQE-QEQEQEQEQEREQERQEQEQEQEQEREQIEQHQEQEQEQEQEQKEQERE%REQIEQE-RQEQEREQIEQIEQEQEREQIEQE-RQEQKEQEQEQEQEQERE%RE%RE%QEQIEQE-QEQKEQKEQKEQE%RE%REQERQE-RQE-QEQKEQKEQEQIEQEQKEQEQEQEQEREQEQEQEREQEQEQE%REQIEQEQKEQE%QEQEQEQERE%QEQERQE-RQE-RQEQKEQEQERQEQEREQIEQE-QEQKEQEQEQIEQIEQIEQEQEQEQIEQE-RQEQEREQIEQE-RQEQEQEQEQEQEQE-RQEQKEQE%RE%RE%RE%REQERQEQKEQE%REQIEQIEzJ-RQE-QEQEQEQEQEQEQIEQIEQERQEQEREQERQEQKEQE%QEQEQKEQERE%RE%RE%REQIEQIEQIEQE-QEQEQERQE-RQE-RQEQKEQERE%REQEQEQE%QEQEQEQEQEQEQKEQKEQEQEQEQEQERQE-QEQEQEQEQE%REQIEw()()(()h)h((((((J((Z()((J(((()h)h(Z(Z(Z((()h(Z((((((()()((J(((Z(Z(()(((Z(QKEQE%REQIEQE-RQE-RQEQEQEQIEQE-RQE-RQE-QEQKEQKEQKEQEQEQEQEREQERQEQEREQERQEQEQEQE-RQE-RQE-QEQE%QEQE-RQE-QEQE%RE%REQERQEQEQEQERQE-RQE-QEQEQEQEQKEQERE%RE%REQERQEQEQEQE-RQE-RQE-QEQKEQEQIEQE-R}(()h((()h(((()((J()h)h(()()()((((Z((((Z()()()((J((Z((J(J(EAcRQEQEREQEQEQKEQEQIEQEQEQKEQKEQE%RE%REQIEQEQEREQERQE-RQEQKEQE%QEQEQEQERE%QEQE-QEQKEQEQEQE-QEQE%QEQIEQE-QEQKE((J()h((((Z()(()h(Z(((J(J((Z((֊)h)h)h(Z(((((()h(Z((()h()((J(J()h(((((((((J(J()h4QEQEQEQEQEQEQEQEQIEQEQEQEQE-RQEQ_ ?뢮(((((((Z((((Z()((J(((Z(((J(((()h((((((J(J(J((((;QEQE-RQEQERE%QEQIEQIEQEQEQEQEQEREQERQE-QEQKEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEREQIEQE-RQEQERE%REQEQEQE%QEQE-QEQE%RE%RE%QEQEQEREQERQEQEQEQEQKEQERE%RE%REQIEQIEQEQKEQE%QEQE-RQE-QEQE%QEQEQEQEQE-RQE-RQE-RQEQERE%REQEQEQEQEQEQEv)h()(()h(((J()h(((J((Z()(((()()((((()h((((Z()((((((Z()(((()((J(J(()h)h(((J(J((((J(((()h()((ERE%REQIEQE-RQEQEQEQIEQEQEREQERQEQKEQKEQEQIEQE-RQEQKEQEQEQIEQE-RQEQEQEQEQKEQERE%REQIEQEQEQEQIEQERQEQEQEQEQEQEQIEQEQEQEQIEQERQEQEQEQEZ(()(()h(Z(((J((Z(EQEQE-QEQEQEQEQKEQEQEQIEQIEQERQEQEQEQEQEQEQEQKEQEQEQEQEQEQE-RQEQEQEQEQERE%REQIEQE-RQEQEQEQEQEQEQERQEQKEQEQIEQIEQE-RQE-RQE-RQEQERE%QEQEQEQEQEQEQEQIEQERQE-RQEQEQEQIEQEQKEQERE%QEQEQKEQKEQEQEQEQKEQEQIEQERQEQEQEQEQEQEQEQEQEQIEQEQERE%RE%QEQEQKEQEQEQEQERE%QEQIEQE-QEQKEQEQEQIEQEQEQEQEQKEQKEQEQERQEQERE%QEQEQKEQERE%REQIEQE-QEQEQEQIEQEQKEQERE%QEQEQKEQEQEQEQEQEQEQEQEQEQKEQEQEQEQEQEQIEQE-QEQEQIEQE-RQE-RQEQKEQE%RE%QEQEQEQEQERQEQERE%RE%QEQEQEQEQEQEQEQEQKEQEQEQH(QEQEQIEQEQEQEQEQEQEQE-RQEQERE%QEQEQKEQEQIEQEQEQEQEQEQEQEQEQEQEQEREQIEZ(Z((()h((((((((((()()(((((((((((EQEQIEQE-RQE-RQEQERE%QEQE-RQE-RQEQEQEQEQEQEQEQEQEQEQKEQE%QEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-QEQE%QEQEQEQEQEQEQEQE-QEQEQEQEQKEQEQEQEQEQEQEQKEQEQIEQIEQEQEQEQE-R  ?뢮(((((((((()h((((((J(((EQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQKEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQKEQKEQEQEQIEQEQERE%RE%QEQEQG((((()h((((((((()h(((J((()((((QE-J((((((((((((Z(()((J(((((Z((J(((((Z((QEQE~QEQEQEQEQEQEQEQEQEQERE%RE%RE%QEQEQEQEPiIό^\FԴQEQEQKEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQC}2p I)ap0M->EQEQERE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE/cޑ* %X(((((EQEQIEQEQEQEQIEQEQERE%QEQEQEQEQEQEQEQEQKEQEQEQE-RQEQKEQEREQIEQEQEQEQEQEQEQEQEQEQEQKEQEQEQIEQEQEQEQEQKEQE%QEQEQEQEQEQEQEQEQEUs*%!ޒGX. ?ZZ}-QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEV2_-yT9cXכ7+/Yd$9DjmVQERE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ@AETw'%EajVMlNIǽe^A9\դZ(((((((((J((Z())((((((hF`G*ҩv<1yc,ҫ_D,eYIjY(((((((((QEQKEQKEQEQEQEQEQEQEQEPx GA{"cj)agSKEQEQEQKEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ`zQQPކ65G[_o%HoU]MK&STzRQE-QEQKEQKEQEQEQE-QEQEQEQEQKEQEQEQEQEQEQEQJ==F⒖Z(9=)sJ((((((((((()h(((((()h^QEREQIEQE-RQE-RQEQEQEQEQEQEQIEQEQEQEQEQERE%QE }h9֒Z((((((((((((((((((((iJ GgT/ul౪7{NȰOvjZ()h(()((((((Z(Z(((((()>ҩW>LAdʫMEPВzS@enZ((((((((J(((((((((()h4}:zUiX}㩬]M%y(@SsY^pPʏ<w 68 ;NAگU[ԴQIEQIEQEQEQEQEQEQEQEQEQEQEQEQEQEQKEQKEQE'^(ECydTZ{nF_We2rEEt]G]ZbVfJdiE-o8m_Jϰmpz0sIcrI&q ۶D5vܢ(Z(((((((Z((((Z((((((PE*jCJG W(+W?2'" 4\()((((((((((((((((((bO*WLTwO[;z \$X=jIq"c:yF]mt4QIEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQP^1Vn/dvTuy6Zj2=IFx_ZTC!>Jvv2K%?Vm̪@*tEQEQEQKEQEQEQEQEQEQIEQEQEQEQEQEQEQEQEQIIU5+X^"lg6f?JB y¸ZfFr:U!f# VV0e98V +'[F1A ?]w1[% ޷QHN;z\F =[;Bo@T G4!i,2 Ԏh`UX+BsALlEMbwe@츫Bf2]դ̵slTM_‘*քC>?X?x[Ec.H\zSJ@|r> s!9#ZκˈЌOJsn ښmnOkxQH*I%\ &QuŽ󨜺( q֣bv>R_?샊A2qqB͞:VV][kl2k;Q,Ӵ5.[Hr:t%.rERdb@RJA$o- 󑸷5%#qnilLY'? -1'Klg8\Z7i[7B@*J TV.x^8dۧQե'N+ 9)aן)`=MSg5c&SCp *y v'SHcBjXI?J29Ih~uY6̜U^5pmIqV6wEL3=jf|y*!f_-JVU."d\JV`XaE#կbMQol @o7LwmQ3;^ب󤑁v̑#*IrH5e`g%U'M+OAQA9pyQC?٤'ZxPb::gw;)\vS҉| Yږn.-Xr|fYg8<)d2H0P1D^nr; 3Yz†0xsToR}uwA)p_1AԀr=CӁ$zWa\U?qV 7YO={SrXI0069jPȃny[0nSKq\`/{΋8ޫ4Uʐ909F*f}ihV/GOv9~ [rqT4*IMZao9s*O=㊊Cq*'njY<nwl*r*qڳǃSII,IV4f#hl\㚚͉7`~U=s*Ώ }z`ۼӴ ; Gimn-U%dde bzJѺCQm%J0W̙) v5y!l1SGr~uabW 1m̜Iq9⬒ǒ0=fI" G~o9!"Wj3ݏ&GI.Tvjɩ\?/F0ΤךM-^=Bes(8ԭ`2r=ƹldhg'GKA {Vkօ%R )E#m 02gXwc_zگqk{~B V"Wlo ƯX#y3!OF*墑o+b2zNwС"^<ΠC58$| zsWk\h2hBE✲lҕUiI ߶Ww2~P6|BzB u7!w"F,rOAIq RLc69#9\(^q9c}n$G JQIn$d!,Ty2?B[H 5=l1j[Mjkmh~'z.3ڹ7jܼ}?g].<QmvSTlXV, Ċ0qqMfGx,j[t;N4Y6'7\@8U뚫%IOAPId.A{F59UTcb{Ufn܃ܚ*602MHrɧ,r;m#)*9mcߵY1Y,IG*J pL &Ip?V ՘ UYB"̢%@,:ށ%̲-j*inޗSh[s[<7[Ѣ*#*` q#tf]8sQp05+0¤aO>Vg27zG/U.!#޳ИnzFLW1 LK;O|sKrLǀ_9viY=[4)Â԰1w Zm\":@;e6H3˞Oʈ#crN0qTu;jAfsU+ٍ qy12֖6$Bx9RLDFIcvNYK,jrY c)/EbTdGK2T$vI VGbQ":H< "z߮I e:OZ\#3> [>XXf|OYL}flAЁ6(v(j~AFݽ(GS0YTP8 ]s)˗*`j]#S@D6Ѐ#Qv.$.YGq+ېѮYg#bKmxɲb0sDWM))Rsr3ڧPAa܀3KJ@<> :S#)8>u8vV捣a.ܨEbF%-`+ Ԗsrsibx$xZ< * *0mV-2HAKTe?JtEz'O,!j;tnyI~GүI[4P:\wֹoc6OTiB@ʿfLGPT8*ZQG%F8! |f6vS v,cf F胁TBtzbd;A>PzT`wpR3dWbѝ E %j H cD~u-oTijWU[ut<˝à~5kO_e~(AXyeQQ@|NvP:T:MX|xP:St+[BUOʼ1jJ;$ӆ t.diX}j8\nǽgD.2z(U9QLd/@;f>?9B(vMhF#%zÑ?Zi2J#.q7ifu3)dvVrZw+*ӳ ګU[l.<`5 vrwD,K FO|4,yKGpJO);@MK'85Z1Ap#b⭾ F*ˀ1Sji D#ڣnzS X=081OAU@ٲ?.h+4M, c,1?¡b}:Ugpį: sa wvlg==qTnj9.ڭv eYie#ZU|N:Tn0=hƯr#=^]n#v%®V$F#DA'#9+9E9 vly r=ŸAQ(_Q砧o]##x+M=N #Fj)<l3GUmsgr֫@&T8= \/OqdK<QUU$l!{6]IS)F`I$T-u'ԓs2ʯHX1މD")vҖK(E%,|(Q&d6R&Qľdeܣ"% W$<} &FCGL1(Zrh^n ݵTR`.y Pe EZv=0EYz:}ܞj4E;TyfV ;ȁv%@>\29`,Ķy-38jey#'UT2!ǘ>cV;7W1QZˉѹ*ď7-!Q3tGLw4-3N==h *f`)6n)Qq,zQs!wb\۽G]oHN1;⣽.* )i/?0zCN~pzarBG= uc9%Jپ˦f$-%@X[&3U9 PMhg|9ڧ!+NHBLw=i )< d˻`Ҩ\Eb1KJ%U&L&iRi6[9Uz,gsl=@Xgb9œzT^{i\c/5TqvILJq g1$L$9gʹI$9ڨc\Zp<ǽhd9̀W`nq3;@UAʰ/# 9SjHFGqZY#c8U쑵5{C}3Kw= (ǜX9ܤgd0`p;A7ADImdhݩjNesnnexA0G${BpgrcJf_.F-)|m݋!jw,,[0836t5rN֭VgݗqoZ#Fď1o CϨ@ >IZ4Tvk4 X3NIcܬ-,H Rp7"/- $ `Gp:U;DLˎ*1nq.ePN1qV|{, ʓ>ԗN/-)K3}ʏ,d}VmYpFyU+ I;WYül1 +sQzLSnn ۸R\N#S1q8Nii, >914Svq1؞MI!(Xn;8fEYIq֢?Zb7PMcc4]f?Ϛm*&_*Hfۣ[!K@$%s;?%fH6) U-(2C+^⬤ %p A-(95)l P]""4i: QM'FvLIGy$GZxWMqҶW$J^Zʾ2N5B_6RPϩBb(P~2; e [2;uԜ7'5\[r8<>H;UWpA&Qٛ:U=KG?v: ׹G(4HsMX™1qQ x'|b@oSA-ӊy>M֨JZn~PZɑɪ'\z[ f AY+Iq֪ )wN1д]ca?`H$ 䓟=!cʬY%HX榴`,O~^n6M6폙Tmۖo3ߖ3H'88 zjABd#tpMPJ4Lyi_LRZT䜹!N1QjVonb#^:܃Q^<$8mFo4{B'-a'5|GH%p3fIC+\JR0 Ei@ >B*V˲@}0F]g Y?JfɵKIҪ̛0d;$ݫCNݮϕJaU4ϸ2A B3˸; {iw=3Y̗?Ar0X*kxO3~1t41"<+U-=Rn,1UmFo##jn @t ֳlB@>l,RjfOި|.Nx_8S%v@ Zw2rlTK̿wnXc9w*>RBb]{gݍv=ie%~b,Q{ iq W #^*HʜQD.Fw^`{Jᓠ 5$,Sv'i%\+>ѹ$" Ra*9P`ztDI¯OPQr1֩ۯӥUOނ8+ւ>#;Jb͏nmJ;'$p^ RPmbJ~)] gXFI ޛǙ(e,"=H.OB?3RG&GF= {S @本✄|S@E|nDxB>lֵo;Ie^6VIr?&>ݫJ&Ӏ'STFH2w u>cc*zT>TJC+O>aqvi ,`s*!79`OV,ʋ 9׊j==34HhGf!p*;E&G gTɹ?έj K PҰ_4Vf,Py&R8mcbˉBTmcbberMMy.`q  hjcF/\Ԯ?ѼHUC<8p!ͳG%C *4Q\^dF8*lVmqҦ@CsZrqkCXi/ZFw}sFCп1%yTi8Mpq θtlTFKq #,)өU&mϒGZ 6dܬ>9HZ¸T|<'db10wSe>7e>&dNKyZR" j "Fq>T'f&$yG“Nӕq4cM\X1V,j~6qJ JisPg]tj \e~jİN:i^*Vh9@zta')qWRMQ٩x3T0|)U\ \%[xm`iXR-\2!9'5f݅֒34QhdYd`8\sEyrΤ rKp8E^J8SnS͸w,0*q@(1{]%A* yϦipTQ.X}P19p͸s$?33~&bzKVUԐJ+mƎ/djXuD,j"R^Iגpy <6aڡf*d\bmy?&A1u XF*fPX⧺$!8@>ǜ(ֹ)] 0DVl BI=nGjin%kV+ |U,hTⳬ_Ϻ 2#}*y1dp9 }*αn7cR;z̖~~ltj6Ѵ!޳Cu͊(ᏌPA՛xG֬Höj/ex皫}n^cwn%wVIKx&O4#X(9aG0?H0ݩn1R@玜Rg /g;?4BF\$tbhdG dqU΍m da?|O86^Gc#z!=*NQH,(1 7cVvJn 8B~lګFs)! 8^CwPۍ!=MjM*y$c+J3L{Sm縊GU~6R_\dN2y ڦR-r ɧ@1c#z1d84yb$*W=~Fn bJ}A 8b_^sWai  5nHl8򼠌1Nu~6?Ju[$vFEcY9r76pTKV<8ÖsUd$Qj3ޒD&:ǿR IZ"nw?*aC Q]xmi`9&B#Ǡ[ƕۏi$/y$ űwqwgع0HBI'&leT3[:\lYG cCr0 =*s,sq޳ y"l3k#MZyGyV\e+%c<m6b]#'K0XI$u=6i?fJ":v[Y +fA{j#٭+,H֯\@T@dj*zTR^G#`vl[81Oz[CLyTw7͕\()#læ3Үߜ`j|5?LkddgLbAv \0^Ԫ ^AHzs#cccR2#[Wʡ\ӊ`sDh^ i([F Gݦ>9$9f9)|-YVr+C/<dx *j05%nE^+V[tfxI8u:$SJq"ᜮ>Β5 ,F*fG\tێû:&w)t)aޫO/ v'L6L3t,EGSIil.%Uv(@]Tq$0QGEH(]`=3XnHzgڳupjN}j ?>rQxh[E9QDƭ]DZqٿ$_5v5k3 ŏ=kHVn''c$k.sϹVܱ^QFyUل*<.JძIF>Ro(U;~yeDc'q%6.IA+Hv桸 3mW;VTn+ҝq@ʹ|ѭOIJU (L{9-mHwU-ќne㷽j188 U1`FINYy$7vP#4NpzkH| /NL9'_R&Rbs;*T.ONsҝ('zSR)-|jH;-0?Zti.zRդh;ErC|9犯}nU?$naľbGcP$9gZG-yEWZ]*3WBaUNH nc⥙<+;YO8?JDh0W@UxakjkfTuZ71 (ʚv Ifܓ)+*v2q<{(i>R?ObK/p1ڥHW pE2HMS8 '$OX6+Ia$:3RZX`1gL}mʌc5dd U 'z3x r>k!u9j÷"x*vG!TY3+ ԖHzֆP #WtDl0:֠.0J |V4+"VݖOhwQGFrPmխhnZ'w}Rj UBwmg ½=sR[B!ixth8C"S&\uB>\g?OM1aRnU RX>=5F,PyʥHk`!*X#ڤm!Q2GV1zdA%ڣ>J兺(~Uo%Z^LQ=A.7c'Ҫ@,KO`9;M(9%p};}QlF⯍g&dq6bpyv5!fh+9iK4PXxaK2ҭe\sCu"lu~,'9ꬍұf}O`{g͕Wh]͆ SgwWscMʁ`SwhtJFĞxLkMcR̢m+JбX}8~`#~8@G4K,5=y:  cMq!tg c g:"㊤SʒdQRְ.*>+ ʃ5%;_{~gC[J6#Y\*ӡ nێ>Ƶn1z g"Jr?V=qxW XANW#q·5f{"+Ng  T"PcT/_̖!*L!s Pu%clp3SF]k9G %rg8Q~k}_9Vf2 gj`k&KUK^My8`j)}ClI ¨ދKv7߰"žf*0C\((\O;FǫUԜyYFjɈJjLByRs"TVQƧ\_n?RUv U!fWQ?*Һ+䌙–H `*Ga{a~p zRgld|R?s$W*7Er8UMH?J#NNjە/|皆PjqqoΠڨTqr`NXUۨt1)VAH݆rrAvXM(0#*]U8$SF &^7RFF}*ҷ+ bp25x 'ʣ,A%Ua]v3iF#`Zyi8*adeR+#"(=ꌰyw+rqTe,N 1l*i"E>|w$B$%wJ,YL_-Kh3R͒UJY A>!"8? ƘpG$~5)>kbjpd)Vuyk,),iI78kmYV(*՛92ږr5HL?2g 2drA~uuk|Y3ͺm۲T^Nd/$¸VXF[,:#9Y[,Ѻ w~>&F-4] 8$TϒPYOpFw;.fd iWБwT̋*kvwN|q[!lndX }Oy0K9psgiPϒ+ͰUFMeZB~H]'v TwZ:.2C)W 02Cǯj]Al5M h-#?_i1O.ܚ¸R^Me IAoi(l>O,Z@K`vBjuAri!31Wx1VX#+4 2>TG<}ުcrz0-eڛG~iү0ÁKgefvi'̥ݟzu#.ǔ8]c*~%90a⇵m3^C۝j;miޡ%o7f{LOlV,qڭP*6Nz Qʎ>EXS`Џ~< v3=~pb\`N5I\5bƤbW-clbztW䌕ʫ iuđ*O+$rA-w*TcgJ O" zSᑖ28SY\R;y :֜I"Psi {?#FϾy#ɸG4HY p9'5ØlnUdk) jI˴H!M܀Tt܀+UI<ô{QnO=,8 C9̮"| 5KjdERTr{SΞYWpڧڝ J0VF\>pnnϮ{S0Ӟ6̚&bc JUfYR@"O kS&^JZͿOq~cߞ})4*7~q(?GMj^W@KGlsG_kW>d:8$lA F1qP8 IQ}f~RMԁ=?JvmؑY.̎8H#ƙ7,q+qI>d>I#*EQL{CɌT'f2 E 01S6S cic j1i94ܞ4ܞQ< oTMg-OFb˖P^Jy$T7W?-&wIdT9u@Ȁӕ5vV̮q 8R6#&vzvMQdyS#y|S/֠%'*~|EW1`A"Lw8yr7r}xs'ԒZ,OrIY]9b7&KH̙&@Zb%/;yT~thY;J`iq^)ﶎ>w;H̢km3\G\O2 m9෰|Xܕ=p2:d~UF&->u<Ҭ*yK#<ig@:!G`98^zn8IrKRWwʪZ鑗gN)*ތ=?ZIuPG40i4^fn-YeQS*JK!)U Mrr 7֓Uס84lVZÐyYU .Xx%YdE [3*~nNj-Кe`~險eaՎ;Uo2 8יƎP>f&m8LB;q8j30p6gZ 6OKv5kmǜީ؈%%W{=89 {{1IŸA۴w$A'imˬ(㜏jt2@ʡ>.17?N3 )y3 (zr*L(6=jXs*a*Mlo.,GdQ#D~H[? RY8EF?*>^R[w''Tbg5U3`k2lsU. #za¬4E ν;klщ%r=j{h {r7c1VY.dRI$,2d^OzDuK@Rz銣1-q(=7Ui2fpU[;YdŸq󩭐$c?I76R|~+k! 7Ϗ֞rm<ب ?IUՋ ` {❧/8 qT:< ɪw TNxN菷E<׈fќS >9Ѯ,'5}F-NJJO[!XOSa~|R,_4=)\*a~ӤaۃJ6*3 1D /*ܰaFsPcnE#WSsH5UK>|Qm| n,{Է^t0 8 714čTdSMHmazRH} @ޛ0&7d#cjIw1كujb ?c%WJZq-aI6$]RB֜xU\S̊*y"")XyX,ĂӹF.ebI0c۸4:+rWQOV5.ʹlQA*.p>Uw-2yq~.6~Si|ۭ偏$įa1jųn#qQ X‘i}*HsZ05n?(±L݉c8OOnj8Qȧ?.isuʶ=9 ]IV+G!%$p*(F]O9_ɴ2: #GA;{%LIp?Ux>HݻTr3l'${TAO6g${Tj?zjoŵ3JΊ}Z\9Ul={Ie{Fb#ïOo+Y"ã:O []0rHYӕf$zg.'q$ҨUI$Òp~53!ަ\JUc 3MJHMax&H0@50RJ8 S R¾eggqԐ(`yΟ|F_l[N;of$|؝HK"^.⌏WV6>_jWutx ZX#y@)aG3;-$b $P1&O];i¹892RDW"ȓ:M|5`ⷧf eH<3*,h Ȭ 蠎tlBԆ8ո~.G luEpNأP1ZH'`sXwQ^zVVS5qm,0^PAld~k!$YtEO0Ha kԆOP v E1{Tl.Aa =1ԚXA֜p3sV݅Fpj̯x"03ℶsEejgW=7Gine`o$npxF,W!!hg 3ڬwjyڱ`i ;<*&Dw, Td.?co"F,Q-8 #;X\b2H* O橛Y#S^NX7v9I#6~=~96$5JU|ٜ3 {53nXք%k6AnZDcW5M=5?ԟҨE|g'VJqVfl*x#Լq'\7ʠ u]L{ crUʷz-=R }qT Vҹ]>ҙ rj5NCPH9ֹMUePuzE ,FWH >Bɵ :ȨRY-e8S֒{)ݤ_H$ӝ7z"oѓ8P;S.icOF2@%1좴<[/ :/^Yq/=)y9s+6nzU]*KwmǝŽ=))8|tV2Fq;;qsz/aQZ$b;S7SmSs>a:1ZM钘ܒ?@acylw хC3ʶsTLCAlTNs*y5;<6֪L)r31#fɭ p>lqVb~9j̰jh qzZXCo˚~U?{\^Ƙ8U5Z5;>P=i&n.WڡC!Bd@p ~84n"vGQʒ${˨a;RFsscMN-9wJ-oZ'l qPg*X^xtra#rq3NF ĢݩHcaS٧䛶mTcsK h`JIHS;S/[5;` onپ '.pI%YIZY7JRz՜aqmKTh:U!Uޫjkv<;J:DcޜW-G=qnYMXjA %b; Y]c7ֱ/$rYE>R"}sj${,J7!bù))j@pwqLK>oYIl{9Z1g$쉘$ՉrsHXQ޴zWګzU(ہ53n_H tK9^~%Ð}k>ܟNJ6{*[" T௶HmAunp+Ǹ-ɒ6++9 FsZ-yܘ$ 8=jL¤*똣0p*{"sUKRBixj f+?䍦ӏirW8hEʪ9\1Wb 9PU)sW5,c¬G[p :rό?LG 2zqZQܙ-f@9"Bs*uRqU:0~k1c `5HFͨH2pk[ģ1\o^4!l֬Q)"Vԭm"Hn`uⴛPTC䊳Ew ;X⹈S۸sEDT4YGMSBT^=B[toa [m9{)$0Gư5 [\q#14Z8gw+5O&($SjyrE; ' FOO *IHM BX2]6dzVg,6ȫRr13W$D|Ҳ-7pX~XB&}2?*$Ӂ Ae@}*0?Q P23U~#q.]3;V%߀ү;U3(HuI]X`(rKԱip$2ǖ˹`EE"8}{~ZhR$xH WR.J+*65::5c$uAtQ,gnGVͽv>~NϞbGAT_^ ̾GAUۖèqִYLu+j(ETE&cdZȅ68'qT!Bnd?v(ڠrOjL ,i\ٻfz-a\5͎Tmp8WM*&O]Lk-˜cV- TW@9d^v#N+2oyz/HډKx3r SwUQǶ1Z$R#cڴ!f@n2.!ʟCbX+k*ZF^z TtGZ=y5K| C`k Vby]DbUƒ|}9+EKɹS>H)W;z)drǑ#ҐN?9Մ &T5l"W9ǭZ)"Đ e}f\~u8X# A_ eFکqcXq*PUM It>C[,>?F1yM9fۆ TG9;@hȠZ0GִU[->0_Pl9)om'm,W-+"T=3XDnB8lDDH.).F?.)&\OJҍvu0*Nb$#8L cEr?u!,Sn$% h+¬^&yɭT2K~_~V)w[vg!7q8l;zvm-W%;U5 A(G?jѼp>{ T0+VosSW[C'!d>Q>GQVsg5\`Y6)>Al-bOksxU9M?*+V\dA wL<7z+9qc Mi[G m=H5q=7`H/P`Uyfb0UXBϳŸ"9ҟ-|ĶG>X6ǹI&FݹϭZ.W sQSiFCԊFfB c3|9d-B=gMfa5mIn1[dџ!X?}sMqX1LɗPlY888mu kHY$ƲtF)9ۂ >:4JIzVԮ#G ޡ ?5K"[9) #Ww' :S`_6VfOS`O19#۵:A >dB\R~P81V#rG Jw3Q (灚eiY$ՂjcKo`*5m\]I$ +*Vy.OAYnGZW.ph p:VV HPdq 1M[ȖXT֬ I}}jp3O|1*I=oƟ(gS+&@ENVc2@*nXrNOOD|rT1\ Wl!6H"&y@W\*‘23>@b\ HϷQ JT|ReT(Ztp:ڪV;a*Պƣ͵F/@TUU ʵ5f?cf`U{Qbmr:?UkF]ܜ$R{vM|,bhlw%M ?ӰA7TS89^?)Q:G*/P\(Q,fg <)H1^G=1{r1*]ͼ@pj-SpM'u(]N* jBG_ζ;1ӻp'+%#8>wJǮՁ)%xս3GaV^fUFTTƪpzUNZz1CU-b.#+6;Tp=*Vy嘕AG)$:L,K>ݗ.6ӁLr7?5ZYpA<+vKq{c V}fmE76>Et-fy-hŅSj0ۀ# pPn.q֣l7,8Ja`!- x_mbX]!>rF@Q9+*fRv/SYkA;Z[1x*{[RdiM)*IONJe:h v;T }#ʛ*䝵bo$iJP: qn4eʗP:j{Y6AlPqU?{ҫN ɥDi(9 )^NNJ\gҎIZNKNKgSOo֚]!<Êg;iE==NQ)Ai%i$5~&z%ǐHdM52E,(r;X U^sB;>"䔨%B~= *2K^VQʞ? ڼ2H?ʫjv#HRO9 b@ʌ槸&DvoQN)!>5L|U/ ̑O83OJ-ך{tr0^Ckɲ`OX1+;QlL1+>_uQ֚㊂\-dy5[G%F(?ΐeJ25Q\*U"PqKB"UCu!Tڼz֒a|WE ؃:!?U;x~X3#y({8k5pyAun1oPhB0SB`OJdk;}MNw_µ]Lw*X'کƛBqө,Jc繬vy}j6O'?^X <ϥ?f=r+7[߈ʢ)QTSEEQro6@ S|˓Kj ֒9Pi œKin `}7U :Զѕ]݅LeCߎ8yʃڢr(0\#Pێ*HO#@ ›R@'f f*,`9w6Ҝ@biTӴ@Wڞt+mPm:tQQڀMZO3X>GwϻT$Ojݠ__EW]8X351%̊}$Zmֺ]qs NZdF\~q,\ƉJKfQli)1Yn"̝ wk"UVcYS фz&G"(O^sNӖD12Z[ c[.F01]U#F!F8Uy\.޳/h@R9**񷚎̃3$z]-fg<*OJcJ('` mgg@HI!8Op~pO]0*͓VFh­G!ambP}1'?;#h;=j[ O%N{֐y9rr) 9b1TRJRqp?ϵGn'8-FDyܼZZNV0v9#ӭ\Q*ͼgeo9Yw{v8XeCVbFpzbZlnR^*v T?@}*lPlK/~Gҭh&*.7`tan&)JYYؓSɫnsj>I;p硪H%2W=*Hd9aFj唑AUsqro#Abh_,\mh\ \ qO2f2|ýH0N2nCӭ0{oR@ը 9y7)qL[LI5B(U;(ۭ9 bF\/\\jsoV./fӬ.mVe܌Gҭ-"4@|ޝq?W'ՍBte+'wEa˸ "H z e#'?Ζ?F#(1\c+chi8 #Ұu Jюlqw?ÅNaVGGL9ըNOjXs(s>jPW{TOݮ@>V% ޮdHsQ2~R{Rvƣmk~TA45ȏ$CqzTn'`D4+ɜRNaX#})HqS֠(% pjAP<GTPwnˑVƍ5Nb+ONnW¢S{5qsV\ ]I[ pF ;+5F#ӟjN#nՒ.@Qv;|CT%"K?Zn69ڡ ѩULK֝8 JQȫ튯me,dD:x-LbuQAj唸ڙ=JmǏ860y[Jx=>꤈3j ǭOlbFqG=jͫEgo)4 k{hctkmr:CϯQs҆)jr!)M>Pzҝ 9.:AHHR )GEcTos)v;TR #DH<2kNB&bPܸW9%rR- 4p^SpV*s˕^ժO$Ȉr;үns变j!A{VdwA%>M⳼D(UKg,8+;Z9h y5r82kk<? F#UۏL jn냈\Y 0 [!_Rs$&1WK k(u#dX9e{ 82P~tp@Mu"e /eVk`}ZTث++FnTTsֳ0 ?PcpIR %'-{T1LxK`1{mp00{AlVhZfݶN1UmstgSK9#$cڕ5,䌑jXز,H<``Ҳ. rP M  ¢2lp3iL f\G\;,VP 3֩@EW*1җx4:`b* r{sS"WRR;d4DHojfք' LǖW0PYA뚍4vjkN{R8[QNOS]n&}X.2 .x-$ס:Fn%>BEȝ߅SѠ)d֌BB՛ 97kL< ];Ũ.*?QO?N ", ǸDg.矩q 9cqW#GCC`Ԓ"ȢBqt."lЃMM2&`r HM a{(O:W}UG=gR^jU)QȻvcjTp$@Fn:L=iu\FXH9=9뚣p~.q#{T\8>aMW-1@`ո#1[70c$ҟxu?s1ިFGAT8jz7٤T|N}*#ΣvU3f1R@2Qʢ,e<*}Lj̇9 p*v*~=EX|sV9\TqRs8cX&$5x`X8ot=O*#=Mn6Rz/RmCT') \9i3=Q ,3̤5s?qQۯ<:<U&1[Läcp>*JcDߥafݦL>X ۙ9'>K04O;k1$ToCg8.r3B8,rqU1@YwOv0~Օvdc+6).8 mD'.9lFfi;֨UEqN:)ۅvEb6PpsGJo5$A,v<'ڲus*F8Aҫru~ҟ=WV rڥm'^CT#r:UYr3](T U>PAL)P~Mۇj+dݕ5֗J4\9ܽNfH@ea 뚤vAڳNLOC6x FzJiM?T<1ػ{Vi4$ODU315>h6b1Kҭ@>nKUuI5˒rym쥘19K잙Y\$5&rIcuPM>pddM 1.'o)څc='8\MC#'1YPe'EZ͸T?n\!FR,;sjKjqňgjLAaVmVG;k#V.DڱuH{:ՓDf.^kc.1Sf:TT1":Gm/%o'ǧzYb'1 /~w)qV.LSKfQwOY%[0$% R-͂TJ<ܧfۘe}] sڨ E#4֝ive;Glf 8dc-Ԓ21''$YkB#+1ni>fri<'@OݒďBiD$}B~$d(XxP$eTwFUG6=O`V&ܸc g=1O`3Z N@@1㚉 c[$@]& Z,Hrn+ ^xH;VFdDM!fABϗcC溁Ȍ*Zc"B!>?J!B5̦;vuxw&6u8NncXwnjsw%@,k AJ|2!A ~4y{ZMF5DkZǿ֢mw~nɤj;R0MWpHA/q,V`{bM zݳ I =j l/^y!},@>q7̘ڷ/nmڵ.nZFa2f_sF0k]4m7 ʔXp]}jk'Fe#/9i˶$r+j"my(=ꎨ*C/TRARowEÀHǭWQ|TlVÈfqrk~A<[Q;`gj{3X>C˲8'$k(۵Tr3IcPIH-! :̎H>XRĨ٨UI|Q Ԝԓ ~^Ď8Zغ?\fG#[FPU Qͬ`2aUyw!TC\r5gP$/c؞-G'>꣕&[rxZlrzV0&r);0fnK3]5~X+c}*嚜2naXpig\rqOZY9֝*dT`[1M#,nPSRJS3sN:KqT.wqT+qU'V>02>_j%N8J0v#ձ0ێzmg1U/sL'8ctc8Hp=O;'iZ27+cqǯՇqNgqէ*?}[l&a5ilOSMD6ȠjCai:` f m-P{6Auw8;`N_6wVcvS*v٫G鑧jik>@p䲨 ǹgk.KًܱU/6T÷VkǪ=aU8T:V~r\#$g`߷]񪏺9vĀT|ս}fDPp7MckYPquek,J 3xqs͕=̱'n99(Fe `֖1=DQZV'!T1Hr[ZݨL%S]\3H; ҳNf zUSb'QJm ɓzX;h#DքGo֋{e&voa4A|I D1ICNnI0Jn_zwwS7$SY銔~Rȗo"XSu.Uޗ é E3C#MNC2٭PA]+Ue:d$|g8"Yryb+ǡ6Q֨;rpX9Ҫj @x,i['aǰO;l ێI5:mt򗍤UnmeabU5k@<&zXY /$;׊H-P ,3hNc1'ڼS.>[vU?9Gk^s(@ t=*_*ܹ)s<".q@F\(̎Byn˟aTH=OZ.^=*ɸf*ȁZ ۚ8|`RUrh[LS_JMIW9oӨJH-@̄csEkʘC58l梇#OJKt3:f3 ǭ=)%FNsP ]<db1aǵIBgIЕ{ ΑEVzqriXUVިpaUU:)2.ɤ{y=,D==V(.01W;d)b|=QO S=)43=($ch;pzbd}*xҡ)*~=*D2156mg3紌GAW4tݗ˹6JAUUﯾ!L7~kd (jX6*ߵS.W͹Z;TnI(+֭+:sza9ʸ?>jsԖ1?yAZd^<ːOCW|@y8Uce 3#ީHJ@ =ꦥ[1H9E9Q\`|yg(@!S[UbbK#z3rfzfJWlJUS$YYK9,Yfo.{X`VfXq >l;n @*B ڮyF6L)QCHjͼ*NBƧ5kwҘ0*W| 2c9LU;=)!_.AI1js|.6jl͵qjd8 C(p04+($*ak>8⺙Q*qPw2)㸨.$`/)n`0)+R\&0%E:x,iX&8,s^y!fcUɤbnoK(Zw \d ֍&8f [v"yCR 7w5!!:lf`086F’m8@2+9gi r"w~-3Mq~5/;3`WjI9ǡ`}<䏼*3FY gE NE>[4:THyo&sRX(mTrA}vgnErwpde;՘ 6GL'ޥR|b~5sWՖ|c=hX&s/^z1 1JfaK5Nr <й,j)H SS!6G$$鎟ҧmYpTyR۷nxw5,I`~MX$nl`gm2T >IWbp V7GDF2*̑v]n;QR;YBɓjq*\rV[2ZS)eB*ī[,?Zvg5n6AAjŲi xM]De'j79$Ź2TIzVdoVb1K;&7;c>AlDeP߾M-H"@@,ãv⡀Na/l䪸\oXh4qJHXYHc9-S;Cj(;(1F\㩤.?IDG+f?Jr d 4?& 犫T&N`C!_&;U+R'0࿿Sbc X֎i,,5zӕuXS֯1[yyj ۙn0;TF[r`eL.sz .Ơ>U֢4=i(wEhV,iWE; U$gc qΑW?0Iػph^PpX†!u)!;Evm4~;(ieysʨG `8(MS ^`5P,b!Ayh * (A8 @Ym࿷ҝjC5knC_Iyl)ěPՠ=2eNTF< 0)ܺxOڿʷ&4{05?0QelTQB4n 9z# *88 M?,T6wmSzE#mY%vxfK[ ÌW,*.Yq݌5ҋ`\Ű=kRGd%Gh鷰*>TJ8BMq FyBN9>Ibb<ګ;: Ui7,#sǧfu+KTJ͟ʖm5P?g=/Sv*´5a["eTcڞ"OF7nHr'=*[u7AҫǺF iǿ>S5{v,V$[&3b"zAs"ݿc2(ԚjDl觀=չ)rͅQK JmO2p*]za9#b8PzIKH)8nBd~n՗ub@y76id7e~YS|t7'j@{\qZfm>H8wV+>|c$Աȳ&H4q*zru )2I[} n3gE' ǽFڨH}bj ڪH`Ahwe,x*hfe,x*xщjiG Xĉ1|yDs="?684GNIxS p=q󒠜t`HUoݯqFsLԥ7@;@桺/8PEA1t^*)⭫[)p[I23jv;ScRF~nY#hdp +ulTn@5JEjᐑUXoZ{hk#UkkqI)u۴ vlnAMg9usEh}MiEj* ..ӚО>$Ad~.+HNHNAzxOSZP./;0ߺ_h^lSQ̌{96A˸I;qǯ_U.5Ƒpy1p5By< ڧqAA51(>|ݏ:&X>_ZXKu%D_\˷y~;՛gP3UWa~o ta6qު@:U[($Ts9G<`ubqk1 ۈig7nǭ2#*BN=jZIrUQٝ]b8QU i77rҾS4XF[%e9y;{ 歲PYfߏzU9gyIU6哹oAZ:ɷ_"_bh-~j[ ugLp*rH+r\ jҒI  :U$wL #38ڡ ,gF-ޤ#c*53{/#?*/LF~T_zx@lye$42% Xfcl"Sal2~mβV[O?^sglq(8+X؝?*Z.g*KE\qQ{9g$c"ᣟ a\1W1,3) kOSfbv RkOQW!v GQe#6`%3DXn*߇kkR_v->V%YֹiVLEd27ϑ#σ73#s[#OU3V5KR>]@'ݨ\8'JvgjO .~T'쓜 RhlM!v9jF*8#G ;9 Mqd AzsX|r6aXr?f ~kƑ{Nh\#;PP/DABzr˽W'TItQI$*ZccW KP.S_ո-VoB2g>Yݕ 3*3:U=+{in%vc$y؞'5y Tؠn#Mj>cڭ117!XY1]S鶮P句Ym'5=l,O5:iY۞qEyT,O|UmJ1"u+WʏZw@n@E'΁q*'wbqTU n1|la2{`r0UmmDJߛ1)Cׯ5X_ CAdZ[$sY5M$ǖzu?h3E*IqYX۞ tl(Qݽ "yE~Wn=m_TGtRB<(T^9w4F0*yiNL1F>m֫I`$TnFX+.xQMrSԘcBNjL|xKDt?* F?*ks+sVtXp]_9$Mu,a֒@E T;dA=*|VNURNj;$q ʾA犹Ij۰=}~("ܑu5qG@Tnv$|zkՌ}+"BNzU >0*Ϋ"gn'%--˷՛41b4dHGN3PEF ۞g۪X ΪBO3H9݉!Zy +yF❕yUh4l"a7#6&=}hgGj7 `(Z~vzͻH'5OSUgLe9 kVN:T6NT2pA)ceoaN*Ԡ⧔)9? mƒSxYHz,s j[GޢpdfڹE3:(ZPTg* XHgE(lKT!X ·sw\9o˚̷}iԖRYVܛR4 `jA`Fa1W9 uMpj͡$ܘr O&HҦX+ޔ|g5] cXp+)~~QQ*h]jLg{ոa++)e*q8G2`qL%1B"R0[s`tmB'Q\.s2n kU#f/&Io٠oZPS(rk?/ȐtL֨k-A#"òl PXDlN{S,O"9t"B0}kGRagfoj}3aU]jNJZCVtPŤFΓ7 㞦PsROa5, NƲIo76<㸬<ˆ[)8Eaz ʸW^F )6ޚOzJ /S*G(X@QVU baDNBQ R?1@c_(1k)#+m?+j7^K7zv% 2X.cG$K[=cQZs4F9Goktv5rW+qu@/čq ^jTqf)/~ al .n2*K)gϔ_Sm^Y NUGNԖ$'e dk{W.\5V>X`j럺:TjG9M}hǕQu =nE!E=\N`Qn[g1ЌU;ek sb0BҨ`QƱ*MRk.kUU{E]K9p*E[fx%;T+GTnƞDt#=*2}tudYg 5R@ZΜC z)Jc9JlC]J˖SP;QM:&6 )@\=IG2xy@m@L.ʂ#V˪G S]H@E_wX.`ys#"E8gW$o}w4θLg\ipVŤ)HH[-笝8_j킧#|q.7b̻xNy[o:IĐ5j,zT(Ӫ$Qoh.gNh$-JW/f$-$c?FTS*)/ ۗSGBj=89c!P kÖ,p ,JG$Yy#"0M$fIX&>ED̐Q ϴ& *`uSQceAޣȪ@< zJűn18#cn RF%. TXgSB (*epø$8UMB'? B!/LC*1lG sOjc.h*A iO8"L){T8K4ҟ=-|Tූfj0s+ c'$xayٲ03ִbT~sVI?5,>`c}ͬVucpVEc4mߜ@⫳K5RLPIg*HxXW#4JGy@=*Hg,cyqNڱB4`@ϵ+FTzLvʁ ŌAQbD,rG8#r̈=GZq|;)rfUi`=*0#*$ 1NbYc cqV.W1Lnv9#„w}0xȦø[dzcB$~ZbJ*< rǷ>aH@X5;F Fv@#¨ CPyQA ! N:cy ihQܚzJf. G57ږ0R\ܸJl93q+֛I?GQMaҗ蕎P3jCyG8+z#%܀%S:R;höATqSMT }Wt}g۴^}aU-̏pf$y>,UXrIb1JNC'Iu$DDuZZG̕ jLw?>8 $ame8#$wib[$Ev~~ҠHC=k3ZI#HG'jȪsSC)|>e_s*MlDDoMHh7NԦKU2"|94RH;㌌/L]BDnE# ֨lڋ,ƫr}*oY(sV w$7ȣ[ c=q!{+%/Z#slx{fy MP_\~f#먮6.> HEO0 :j8%SL$A=wأؤ}*upP1YX0 qSn(XHd[o48$Ac’/F;;bH/tb3 p) h>US򑝫Wp EE")`Hy{Z`{$*0r~NqBN,0ґOaJz{ k c^2dch X..٩$56c$$cSێ{VLBETk.YC\D=}k9&FReD@G,"j~d@rƪjS1VV 7ڡm ?3 B ]*0A4%c==ǘѵWzy21GzTn1ǿ-xD' 5LQёNL 媌S.P;U)2۾cKѯ=+.rPcH-Oȭ{x..?"-2qsO+{"ӯV" _[sך;TɋQޠ)t>o#;r}h[%K4yHzi_DB *{՛tg8_aR\`dF8ҙ ,@ly6b8lz{P ~fSdϡZHʅo-sksWY }xP[n ΫF;9cG'+JQ^OJ}<]:"BqjԲ=ÀqFVXNW8hVXz?(a Qe:F{,MB7`%]@';S idS!:։!9mԃ|HdzGIGJ7@9J6-g`8C}fϪ ب.-K s銵F#*9')0GSc*r]JPsǵS7/q+/TPY'Qnb|t{R4>ZOڞ0pH}wr 7 'u Xnڽj9Y|UoIeq~gU{$chM)"vɍU r) R.NFNi-;RBn$L0zU @`m㸧$ %-pi*rO @)))Y`*1.ùylgd^*s)9E9Vp & j99A41vP).*zҒf/ 0DQR*jNT{*)o*+%@=34W,ߥRXf*It%?/,sּCNskM'O󬋍y!?gI7_©"3onR}]!Hjշ^[G:(0{V251$8G$՝HV 'ZF,HswjX8E'>4jB0+>w C}*&$00#t ~n0pSW2TTT- C"G&&@CcAltc'__ҡeY1#6~$p>sj[F|,̈zSLe8>Ly#⡻r'nd5 jGkgq{@3 =%-''ެO,q'.gmi^['7*PŌoe+[Ah^~Aޮ~GGt n#VE˯qÌSY%VH쿧n-Trv3@I7} E&5r2TME-rBTXtTWzedU4/q)G=.@X3jkwmKǔ0'*B(ds,1\(?|ISnعsZڧ*ʪXgw\lycʈEu3Sig ,PƦ>V8<ӥ %ݏ^d*wVp:TTulMFDeg U`p1NP@T5_)zu,#1lq5Z[{kBy7CHN:TRHv`ED϶Fa֘37Rj*\&l'^ȰXϻ*ܤ yDIaX\WwnX (}OSYyC3p-slܴbR}zִ҅ʮq׭J6~=jX^*d:Z\X.jX'O*G)U#+RF".A#(dw*t4il;`~P=1P* =)$GA!tL҆Ͽ5^`9[ϛ [JeH ֛k+yyܒpvto!gʰTO!s^iP6zޠh#;J'{S\ @cПT^yL6;V$Sؐ9GeI<6qR-M'*KkXX T[YEP0S֧iE<+uC⦕@Vnp`I+F![~tF7SM.Tc895R0W] Qr1pⳖfGl*p'?2F$`sqJ4O$biXSҧb+liVo'VG nj DbXb>:VD!9"$VMŁ!nyg)`C6yPCB{]q(vA*w۟(1qB*6mε_ˎ~@ٰv+*pEb}=9?Z ti'h;W~pj{$ (k>+bKS7()U^YzjF\ ^ ?~U7\ #!@#? 8)T y 3K,CdM,F2KF23nYW PcUrrHl+zI:-N8ۏHS%zZdS!*vש{)ԙF xl9lcnA#4ԃE-BgcI4IPw1b$pQ< R;GRp*v9%V3ŊaHÍ㩦#nxi[%[sQs8bAQ'Io³W*O<.@8?9rPFG&3L'HL?wO⁗azzPb:й-iOҝ$c^=ns4UyiP eG#5 s2#eޙ#+#|OZ\d יq#Zg;Qfc8F~vC\dJLNil5qAcEjTm9ir78D7 L #wJH5 ¢N;Tnqڧ+e 3eNeYlNh~g>;fe^*)ޢN[2 'l'eDzT.k8+3jى S-x]$`Ȥ3YD*#\99)aUI;Z;wU5SGG6|پT$zhG\۱ʵUrIFE'9,K~uƾ51lU598JGp#C0ڢ]>fzي|p>!|D9'hcERD'K:S FSFՍB3HhqrkE%MfHhsFG@){RgxϵQ*C7viԇ0:){fqŒ$@\iB$H@bG2ES 6egPޛ2PcU}\ U`Xc]Xq s$8TVDzl)QE_dY*g29ݱ眚lyjRG,qj,q@@MvS;T1dR#2 468J`b8=),VP0I95Y\0UTNp*jHx;TSv-wO9J| j+jUw֭ѨU1AVbV1 qNi >搼vM(VݻDCG Ptrb!KXBİ j w?.k@FxRZZlWME&wg߰*?ҙ f| 4I-(1QXǛcTb, v:S3ATW{3$dEf~cn_2uNiG\NYr9nW܀)HS }9➋9OE0zrуޗpߥ)=JN: Br$SIK~=D~rښ1/R5bOWRGCq!Pܱc8:$QM,8;*PsSsE!, 23Ȩ SRMZMM+my&zn \vs5&Pr*2QҘ˻*:R q=R!&Eөآ}ڇ;u490:{X=Ѯ{rDN1Qr&)aMRNxT@ZŸzA-Zh'Z/-ö K!cRGsc؎U;ˉ@K>KqbFnQg;£V8dRpyl,5?[W(zTRV ,T-!z92Mkƾ\j_oD6]1Q*sNȩ2)QA6 I觯Y:+̱SBJ?tS V3늋Iq,#g}i%!gc&. ?lP]%~7/?Ҫ!ڬ=EVL6;ua9sV4q,cRƦsMY7yyLҼKsT2Hd2i`TzS*e50Զi(zwUS&6ګ0<{SHPwg<0zu֑e+צir@E>fdu5 |({Хy P4scXAH: $c#r=M#r=M5;?JiK{#?)zr9c919)rS76zq{ԪvJ%1'˓w’+XȦ#EQ V pj\^>ׯFC'^e߭81V9li W ՍX!^:oSW 3ޞ?7 ֚͗MAN~fL:"FzO^{Rt9"Mw :Ps Dyx, & 6`|d[q5]w ӻ3)3s֙';%PZAН276T}j壬-#YeJv'j KcnB38.G5R20FKkO6ɒq@ r7'^C gcVؤlw'OOh̑fٙc`Đ:R҉X:fCOiT>1Ԇ9?tTRI9=J#$x8d g駨('aFJ }{Ы0q/|zPsփQ  SJ)L晌w/dԡwEK/y8r(A 6Y 0?:kʀqǽ2IT6 { ǭ6w =i!q9p`6ė_- U[TqH85ZxĎZ!^)ł3zr3ڪfc> J<n6*I*5"pw1HF5NjhW} ս"36,oK}g<t''SY Bvv:t3I0qv1y7zTgW G5: Qdf'~RY/Ug,Ws!FOsYd`=Mg9xH،>x~ O@ҡ۩Ѯxo?ҦE~Kd-4|5{A +Gʼ &8 ʕWo! ۓYd!TjwF):Nb'sLE& ؄jprITqZ @R< >Km?w.{P"?Rqo*d J1f}8(ŎsLIiܨ+ZRv^ z7=yF9>SI^xҔpuqL= 5sDNU'@Q>vɗFjn<#,v!q'$A["%A">f%{Se>4w!2t$S$*HHV] I7tj)$өlua9BNiO"li*ЋڦP 52๧M@c6BRc=#qMqvFi4\R1}`mAيp@piG+M$1Hq8dSLl2 lސچIcT?$v]c4[c4Hԉbm\,{V3g~7sQlh2z@RiѠF*YsLB#j?(,Anh2x4N%U`1HҖ4E&BAŽq՘J~¬DnՏF3p=gkx#MtN8lLjfmZp9(u#2˜zBA,p*ܢrkSv%"9YwXYBY7y9s.\}=/yqޝ`Y#i#4s[S9v@DZ8;֤ҙH@@q‰0:Qŗi* D7W?ΤTL):՝Z7m槾FdV-~Y+2O&?%>S ^J79vV{p>YfRCOҶftiAT[1ڪP+NVV McNsئ4)2z {⌊QܼJwBrsdE1V?2^[W)wp7R.}:W+<<ٱ7q!w?l 4xƺ=2wcVi"8P9>D.8 dJXtWw_5\Uga*!084c rzj$`ll^KzԁS{E< *>@uWzkum٢p%qq0j8z;ʓ>zG1]N^ɷ*J t<ӆTICVq*^ #7SW xtz{}F찌}Ut&XڣjŊW-Str4ѕ'j[DId$Qoy_jޚ8ae.pHSkw;"GST#S\݌*&M2Ms𢛟Ьʱ0'w.l=m{VRQ Ymr0X)^dJ=Z4r$p=j]qӽCkR{VV}SMUnޭ_,Q5KSxAS UwsKT}` ߡ{'Td09B~U}EvT;ME-z Si|o{WSߚumq >t[ƦN9oO^t'ɨuI)D zf o$K;el}끚K ~Ɩl>5JBsBFFz dfi)cr8iifTl<7L~0PW Q[n6(֙*T,gpRć=;iq#g4#qҀڗhvϽ8F)b4Z~W,w5jiqRFwCjHX$qN~&J}ɫP1Ou#?|ʻI3O0]8Xr=j֍vppMXS̸r8X3WZ4d(+[rE4~[֓&S-;2PZ[GC, vJy>w>TS7@@[SCb$*f&pqWto2щzS B8g1Mq N*]8m$n*3YzɍMdk7&Yۚg-#c5oHo8qn$nTHv@$#v5^caZed_Zұqp:So%|9QʙyC܋L'TvQojY&D:kH $ոZٳ7Ob#y3tO\ŴMwyn}D+t#OۀZrp*[3SsRٜ=&|o&gڲw'q̟t.jG9[LXxVjA=P_p(@O$qO,ϭ<c>`)晟|3У(-څs aAEԫHIs*űH |nc2)QlSaX6K"JeeJ{ rvpIEDf;?Ï֬~p?*nS(V;z(߻  SU9^W?69>:#VUsCCԗz֝7ruY$(j)v<Ɍ8ȃ݅s`I=MXE%rޕ.8-ls,;V% ڬ4b73d{O7qY|lFZu09fnYFkuy2dֹOq7")"Kek@.胚f~Viz}HO}jZ[A4W&ⳬ۟'vjۓ~51ɖF<?X i27Ƞe1Msd-/.KQ$&![+8h|<3R#yLNN7VU"]VJ5ѿK>VU4$ |AS2s6ܩTZû UF9*w9*x 8Q*\gjpY {HWR{ԁd ڣ?{9݌sO8DvcOj=iq mi[kDd;qɢ.pz3U=Dp:pv=oᚖ@՛y6۵Y?xxTw N ‚DTe] )e8qDT.OOǚ8$0 JLR y6@B".֍  HUI#9 S?'/eN$4)7˶[jJ]PwS[i^)Lr6Z|-pGʒ߯zuRj֖40u$jbUaI r{Vȶ`6WYqc98 F?FSԸDPبlv\1Q nIoRǾR[ {yDަM~~-x>B6/y#@:kJQÑWXt5 Ϙm՗gL9wbuqΘaLCKc;fS0+AhGr6t"<~B@ehZ'Q+3L*[tJ UD9Utj)ؤxz$R<@=qޛ+q\>F3Q$`OBjLAJ ZA&:ҡ߃OSJ8Hl/suBH$;Y8=t#'$E [*( *ҤPj:(F'j֝8p՛X0*Oz}싈R1Q6zu܃tj*}hnRWgzqzӉԁʎK?'?7ݨ $IPd6p55~6Nvm[Ѧ j*OZ  t3@lռ㞕 ϵQy&=*Ť.scҘpjn&Q sG9مd Fv$rK8/?* Ut2՛I>26K!`G, ZS_VHsPVԜlU _1?՝rkF>vEoYCr:(#уU*)Uu 0A͙\rV9L ՘}.#uGa۶j!zQǥKHw z[hV>Y}>Zf޸n;ZhS̜88#w=BsVA\rry5:A4ˎPn=):~T>4Kz Ӈ >5rΞudb>N?*hqk)JY3ޭ[K+UvTgj2;[y R;@ΕsQ戋$2HѩцHVNҢbE4ӔRA˅ !7PDܳQPğg +zŀFII`+gn؝돭T.) _+IV>8[N d^)8?h2qZ~qYZ J噛8s3gsWT5nKw?a}z[g<` ƣt)#`Yb[‘8yzڟm5 =zVQcؽm[X$1,k=M2Pꥨk.U+ees|¨ sUĒ*tN>{fctwA I8$BU8*Cy*adf &і6>ֹ;dr:ߩtv£aoȚܶB<>SR7ʈ#&7ʪ3SLA!W֬2mN~bb7*(Q(zX*'ƇOn `M\$v  t gZߚo# 5$ s5e?t1c\O&Ck3j nþVg}ڶmi_ly[ҵ?7SVBP6i 2FFG'9]P#;:dsX-yqs)u5 U޹ԟtdpz{wj p@o֣;$#™!qژUq'PHY|(U';FHj\N3E$L c񤍾jDninahKpV8=e&81-<Ke.E]NZhk̄+V(@"$!8$=[RNrx,4+Ɓ`{T$1siڏ=軹}h0H{nn".{-%ԥP(pGd?tG] ,¨@CLF·tAK#U5~>bzn5B.Hک(d yq":SQ*b:RCR[FH.8j0jF#dq͚䉑lN+c}.Շ4q*&7Kˈ" '#ۚs$i`b*.d~cB1s5n]~F3^LN'uҧEXWwje[ ~u@r\*{_qZ[sZ[H>oThxXs5Y4OL.B@}Y>#1kp( >C!b S*ӴBp*ÖjʉhӮk"2#FgB @8_"bS&?JKF۩H#-ժ;2dWGo#JF׽2Laz-#WJiZd+<{t{t$.?&Ԛs1F^'8+˓qḆ4=qPi zӬ` wm$;«WHP`ՈAxX0vƣ/IDecA*rvmD`3Q6_ 0j;|ǐ1L32֔ Tz6޵jHV$?<#R~[X[1R`t)AR:Twa@{V$XmoJ7׹$bXciF%E rE9m;8gj9g2~_1˒ieT'ަ.'D=X yN;ӧ}ڑRqR[UI8=H(Իuɬ3&u sj[] ,h ;Ž3P,aGM ,BAAh0y'n ypXasZQs*) 0#?|{+#iQ2~u.@;hW FKmȇS9ϥ"{vyi$e+su-O9ZuBciI##Zz`,]r/,F;fJWPg+ꇊ}6\3c,Nک[s}Q>D䪄˖-.j_jɌH#STB5$'D[PCGET2.*K6+7p1XT&KtPNk&/:瞃(78#͕'wQ?)>z%)n_RqUtﳁHCAeךl q[4yxSֵt.Χ?w?ʡt3sQj't*#@J< W5KdAycT<ąU {T̋'$qOH~0G#tj7o$S@mt2#IL`XucLe,zLdn!i=xZiB7.d1i1vg4_`z(K_4US\& {Sg,Q!q6刴{:D^@m>klwWYO4𘔒0OCKo #ZQ ZLqƴmbXc c^8dh;lw~5ɹbp>QN8:ӢC1`d &\RZnstpƃp1Twr16W2%iHx8'Zg]:rt5bI'做K;~. ,ưKyqI&[?GzݰG:V坉E8qƹ$ZVvfaӥ]0H:p,ULpiU7 ]Us ="%+Y 0{Չl͜[7d9`V˘m$9.*BJ@Q\ ! Ԛ M,U?"p?5-vcVR]K$Θ߳=9'қ['zH_E?68c]-IieFq5s(xW7q" dc\Gc["݂K 2PZ6XaeXyk?OMjp&5}Ҙv3pGy棉wfsJnntd`"kU[UV=ȸS,i<7\g̻=xs(,@FiѨVYkȃh!ES!AToQǥY϶<΀>c0{@9S79P:V|  kDžZ PNA@|]s ?$v9?қ)HjxS_!1ʦoo+ MV)Qj n2kK8.\qS*SжZ7hnBÕ`/zidjҳbFtNy"G:)?O KxۆҴ+I$~d=ۼvvڡ9/j>pYعjBK%dppRKɰ#<TnKɶ.zZf-cNnk_GӊF6ki""cZ8VܣE@">޳.gi%H \u4f9 \q$%!A[KY҄trI=֞e(}񈓒H?K^sM?T9ɨ_@0k(N8qSEG@jP,Q _Vb!ªž|q6I?J]:pV?JuFIFF7s:.r_V"EhKWu-UMLVRzbn*ҥHJW9sӚRee:Ӥmsq`sqP&9%DZ<"v}Q=j2~ws8 Ag7'jPJ\Jnj8 8#Kv!U+4,@c`k>FbƾjAX Dq JY؝ҩY6/EŞq$yQŕIeK'Y$=j/xR 5Zn(T88.OOẸrnI#Wn`2B۱GXM99Zw qVlbkJ/8% *󊱧L/5bIk`AV]r6 y,cjxY>QYo֩^}>Q֭U?1~c%hF]vϽXV* C7ɞG,}MVbal叩D)8ޢAP(QO\r|J~0?*{H&iN*^l<|gMZrp]0#$ּqԔ(zF =k7Vcp=*;:|GjΊi<O2O|q[l>"69=i6'GFN*8@2*9sV^HB# rg}ʈ| Zmd :$'Ϋ޲9 ;JEwœV>⫌G=A&9x1ƛ#sS񸞦` 5cPZhErkoDLEOZb>;Sv4Fo~[Da|nM P^P/y-&e)qۭWu۽DABE ?L֢%(5bMQsOrYoҖ /G%F$`$o?{j{\3J:qcU0XVc1(<~5XŸ%?Jz ԋFE=궮CmQ OzWAcH85i8sƺ 8|xMOVjjZ(6Li)nbDP泦Mp,!j!fߜ+j ~W9aƾu3&e@wRs={ӍY'jYhlc>(8U}~s'nجei$I姂?4a+Vblٮ1. cK#hU]fC=1UGĸE!8¥LapOSCi4s8IYmGj4ya1zv*; (()Av!Ͻ2vjVǵTu@|pv5XȨw9ʯd4,p?*t#2sBsǮATi,AT4Y?^.qGڥ JHscOSJSq鞕NMe\{ҩɨ_rw_Vb4W`cqy!|3V4GlGe$V$ o[df!*;> [wW-,N}+"MLx,j #1Y̙cfYG1[6 Z6x |?^gձ#C I9T5q5VzFo9j+t,3Q3>6!6Faժlˉr-6F2)TRpj6V3!<1W=Mh @կEQREQEQQ UndqP\0*Ggg 1s8pA)5s FY$H鶜B @Csm(v VE˜>mmQ)G(@h&Fޔ ;JFȿ#A!E-^$0WD  ŒMiU*;ЊAíGpja銧Q?³h$U# V5٠h;7FJB怌0Yz/pnnif~w"Fdbun( p:9QNS@ PÃ8^p_(}jdeZPH#=C*1̪y&@'ҥޫSYBLO r+9IfpGgY#ޜl p~P>c|]fVDP0$c>kcMP"Gj˒Zo+MHFF\5HIYG#YN.'j@8&iYdl?l~&|m9*#r1MqsicĭG)d^x2 "dFN$3bgU?(}(=I`fu8&Bz55j֍1@֓(n~SS +>3s$%6F VZ26PI{r*F#/QUfSsR[NNjzy4)彪͕˼;@SbE([s (eYDCAeqګEkm7:vR,APLR&-ZvJ4P?8}&>610:[dgW8^yP(0}xH &epqZeŽbT94S"Tg qۚo* S?&UZ v ]* :-m弈Rbe8)VrcO-UHEzY2zְV k)lzwE2sPvTi)V}nF1AÒ5)v_Ir[[:|mךas}`71L9Unbygv oFQcp*[kMFE(W`Ңii%R<sޣi˰`1ά=ͬV`X ГQUL72|V#MY%zdǿ&˂ `4*w$ s Aj{3-BxO^٨ZFcf:U',qNYBn}pj2[Ȣ6o)AjݻmܘS&]f' ˱@fcTSnb}+#XŎ#)֨jn]*'DUFSڢP 'j%)11%eajѰ 9Y8=Le49ScR+3m.[8su->ȁqTSs<{#7pUMʫx:8a 2H <ĀK:C tֺ"n1 t&l%f/+1"Iv3754Gtю٫ {,?XVxB:[<~xC{ b&&Ar6Xr9 XQ:tjFa3N2wVXEOpG ӭ`3M]C.G, *QL K#֭i(֧,%Ɲt{*κB?K*iUxGPUI-Iԓj @9裮=C[k"zޮjO85 2CsYR4b>n|%#fy4d#Q"i<-T/$JS2jrf#o+[uJppͲLA\kBG|5 gmb29.[kg%B;֎>IR՝&2PӝyҨ]i0iNŜܵZM *j4|)UPAbPU[lh00s~~ա634{SU&0czz6Maj25ΰdt:T@>?JϼvWA݀>Oº'H<6T&IJF-bhgYEV\vpE.qR[ŵ˓Šڔi8uɌRs+|ӱjJ^axWYS0u_ FNGjV R( *XPv (]Ռ1;,dE$][Ns&3qTr}ig8j;Nښ)OjEVt^7J ٻFs[ZFQjBR?xpNDX˒^*,z|ew)9 Wvc?Unm7= 4'2&>@s4HMI-bnZOʺzq>0W|AdkJT?ԁS<DҲBYLvN)o58|%O)]th4uFF".O֜Fzґ&Q'*( `! Gs01u2ϵs{+wV9ث7°ⴢD¶1W f 3b\Ftf1²K}k>,wl~Z t{aO#].<Y3\yNbR1N*я0BFpsv} q5 1ҫYdC^AKHUw !x^F#ԴRg&XScnl̹q+`SY%9ی3^E&K8\aEN-CF<=?ZЧ':Ո}OG,}G2VVUҤܺ#{jk^=H^ 0sҴtڷݝU7 7˻ި- n@ TqLaFB7p>(#ҥ%킻 J TAQ).bF1F]os _[Un7<{jl*n_j ɴp(y313uY_G~-YF'OA9rI> qVr @ZQv{{gl-Ht2H-"TRF+ :w̗]YuPȬHo]A̛F1֞$&Mj೑Yz$8#2,39SK A_H#`7 ҫ3o9X3\F"-6k1 ;I fLӑZHd UE_ך4^8֋] _5uڶA4RWgρ:U]M8* "FP2Q}k.8v#Ҭ 4 f0`1犻(U73}>vtcn6l;1ҠstmBZ|FZo}]*Ց2ˁLe630S~ujxJ[=i7$^wqi8WPPFnT3MˏcĻWv=>Di% kJH!m*eȨe&Á |pI gYO]f8 8@Sd>]?#&y=-*?)PyUA&.HAL1Pܪ@-"O7i,d_ASX` )Y&U'!94| 3KHx#mۦ|gޝ$mO#eGTnBwYVPnjl6}3YQKjY򓲱6OI}fO> W,i!x W+eqt~?#`+Ȭ/2ÿ+:(L®jE3vsZ:ؗ{RaTR @("U#C2U# +q1[wUd. h%`c Dr{ԖoU"$*ęHRa}|>&e`Q@`I^{,D^v\QQZdBcyXp*ż%C@+n8Uc ؃^OCj =kF;EtV7{ tٵ[n MVjZ퀷RmOVm*x8'78:kvORyd9'iFb|9?v1{ ,IۊYbQ7ni1#Rv1ژ)1vUk0H{VJ2Õi-^3*`zй؍$\G }ݝ=%-T.>ޕv:#G#soHf\_$hB`UA YFO)7 rX0[8(y,K xq犳x4 azc0X1Ud2?0 ~5rVγb DZ9}-jy[3 #55Ϙ,s>rASdX_m} }(Hp>UBJ>MsԟZȗ=;q&8v,?NhX4qmJyhZwq9awZYZXhYZg'&i#5?'o>HXfLcz[뤭 ؍y\CyjO=j.m"Cęީ̨ޝR ojnNN1>i[$iBgʢ3nd@)S/#j7!JUB2/\P7`M3;y ZpHZ[ ֌$pyxGt%='5n_8QȮnk%$)^I7g>v--ɮGOBˆ~MnV20[U`S1^8oe_PLG\qYqQԁ%#aԀ sgz;nU7p? )32j*U=8$|Alc7%$jy@8ݶw]wҠQ&sKQ[I84qT8glsKJEpO#;Q11tmEHz{b"(epAZaX#XQZfO9j4#9a9tLÚLtV zCUF1LtTqR!0K[nAU]iߚrFw~ǓoRIPǿD3$Rcr3IiNi# ;>e=ڴ {_0_)Ȣo.I}.NbK=C#!2Md xdUvEY?`9aϵh_hc ?ݫsu(݂M[8lّ8#V%̫:MEAko>]sŹ>my~7íR{5ؼQ uNnW[<&F3]6W5Qela\D5r2^0xq@XBmS*e z QlIdm!RY;ҴU9,{!IO'iF1pkGI<{cMIvXRZ}xrW-,]Vl7JYYyvX$9_ _My49FTֆ@%܄=3Hk*/$Ou+"K_`![~vЁ$ RY\Ы:Q7jKGZvx*VO;Ձ<ǞBL,:9ҹ;M;s\\H )*Ip=*ySFcxcWB4.cWuNs:dS#՛+v\Y9횞?9C R+b՟LEd0d0x1F%Xa0,eiGoz!• fiҤ7J >rs&w+e$lW5DYNU@[ CGJ- $Nw,CZqéPjuuFM: £dSS"aC_Sª>=Bw]At vqԒl%-mU n,2֠A#I䚊Gc$26gRayMv.xS[-2Zp=OS]]ckbD)I_mҫk{osPjy!Q,8Hnbġq:~5Te(ҭnÏs C1 Lo}iF//+Dq([{Yd4>jr n8sڃ å61]Fpvii[4wH$δ^+=ky;U%$c*^,~zF[52#̤Dcl7\3UTU{qهQܩ$ wB̫]:,d#I2IaՔN/%IoSF~aNW,qH'mG6H#EnX7?JPyI*&3ӽGY9_yjX%WUy)_qXrN84O3LLʆt\}Fw]y20~m)Ž?: I*5k95[*({_3ܛʫR|qSʕX$~4R'+? E!Qv;ATIw^,ŗ>Y7K)8$UVȅ TC/PLaG ä́K+n*Sxq!$;~&di$$+9ݪRv=k3SvJ}*v6ֲqΨ#T,'P ۟J:$3+#HPj/qTP'߿L=j̷27 (8ªpõLH >T8 YK_,';gh.Ȭn^ ZvFTkGNyɖ\q5cj2LN~m\y $+UYM*AR䞄?Z~IHU_Paڳɚ[CWuQfW r>StmY}x$F+AT,x+ ll؅ER`ܚ.-!M@UxxYNH5]&h"N'V8)iw} 'D8a[7"Æ^BG;WhO+JWPaBzbQyه2svQ*K~)I ӧ;'nW4H9id.deS>QeiZ48L0SR«IaHTW,XA'֧]CVU]T"P7cƹBKG2P61+F̃v6ew{T1ʂyoVfQJbag\!88bǃ6qY:iǚwǹRg_sCOCx-4"pSʨ02VAUrd2h*9~;Xj ba{dԱC<9&`#qun?6!Ȧ#c`1JcpI.ϭ_< {UgOsR8-/NI{+[GjmFea9>15w"0u5~[ SK6F sk~ȶiUWl[p#61R9y!PGVf2Bꑕx'ji *Lxi{pwmMheSCyN}ޣ(!3ϹQ& RܞR]b,VV3Rˤc}tu*5|2jm1U->bVUr8<[ݤѺzҵdV^SV(8dopÜT$`՛Xc[T(y_qօJq0*jzY Kqe>^cb8Bsv?H2G`2?*}řR}7SW!r@1L#89࿦kB8ۻ6jrD>*0pCT5ocҬM >r=i8c<{r(v&T%H5^M6vU# 㚁W# GGf@D a eobmly-W,IH KU,'^ú'%N&HIvO'֫H99?~x}("c 3-DiNF욦[ I J质Dvzڱdɧ4qeӚ%3ITJ5w>OLq\֭m{ڸC S >YKwۃPY6ۅ`3ȟ=N9$ 1${uOК55@XE-MRđ]mVlv4vޗ :\;rᗒL7c4cj~ 뜩{]l#ہzmY%AU'ޛf +6>l`Sygo@w_i- WXY]Nd1X򨭧*݋V0HIn#p1\ܱvzi<*IA ,x7իIgp>ՋMSV쐍@u, 6yΒS*cV_d#sa'i>ӕ~ȤsV7?@5zi2$Vbؐ*EϿQURK\FqM=@WQ)`AZ;L^$l}9gZ]yT\]9YwLb#EeٷzIe>v7eLTt(ΎRh-VW#+I[S\(K֩`WKdS!~j +gjwH7ώWK*JArH=)˻i# 6G݌W8bޜVuRb @6}i 5;I]U@ɨnd'֙qy12G隊CU=,j~l,Ge5ɕ[& ђNMk^@јsWb#뚽f/K{v \zioqdLVl H嫒ʰs}hOrn3^Tk1MqE68ZJ9fXwJT7 3W嵊oV"!]HE ۊ,mb]"Q im n T3G<)?Q59.˾%>bYQn~S8/o|}^Juי TVJ $Kʍ 'Qkgc)*O I!:SF|=IMȊsT1-@ nΙkJ 8 ٦mICH&^d gV޴(G>ޕ#j AƹLjYU i.x}95i!Gn*0c9Aݪ[M/p"N^PEKph8ÿPj _48? ]Qv]?vp`=*3hC0x-cuKf>~SFBбu}]O'nA'50Dj=9s ~B鋝RbuOïWFUiS7,XF ~Ji5ȣr;M_$"ɂ85wL#:x?ldr>^Hv*hՈG.E*P(NfV`;5,!V-NX O=<bkcQgXڞ`p?ZHOvJ"Z͌º 2ts02}Ol&Y_jҭ ޷Y@+C ݚO)8 t3"s\O)Q©ᥐ@#Ue%\08e9VSgr*S4CH]к`2qWE@rLn?tۆ]Zڹ"Ec QVK?dӉԐN0& Fzs2{*8$P}٬ˈR * θ%t&&7"U?δ4'QN9ʭ8#98ȭ ,j!rq+&p:er_3ޕMiӥ~Zkn YU 4͂b=hVb2TP{kVRCvYDgҹT ?%\? r򬧕lṙ#֪>d#\r8*Πr1V4viF};{+R2B2HpR 1WX9y"; It|"$2˚c6i?ZVҡ˳Lt]#%ۨT@mǒDhNjwvj*,5}2{TZ"g5iIp*^F0Zif]9-T쬚KsuD1]Gm(R1m.Ak"d?jr= Tb%w$z^RJU\}i񉮑\A$}#)>Wf1ED퉏օVuTc^eʀ~M9Ȫ~@h%ʌUvA&JGUSǽ*D yrEJmK* A⛨4(ۦsr*үS*# o (9?^+H\ǵpFi((+XUcGo*^՚LfV-mVMbȪvH9 V[&'5&NTnΕ%~b_.[ӊc&vr Fj %b~G7Se-5DW`c~@$-z3ibqՉu|sjݴ;`kkN Hel#TrəVuiR2=Y5sED[%FnjΔ%yxP1R\H@O3&<O"ZGlFcN2q`}95t39sYw=ȠR3+6E>`L YmnieEY>%B{(n<ʑ.?63n%[^z~< S<;98ŸNBrn> 9>%BTj͸ @>ja`c:\,A@?ZKRX q>l*=Z'go$Tz $j,pHp8m9XhN]_VI #rZ?j͞Z 0X"tuShL qO 1;C#mic"3U._tS򪐃'lA X45Iwαݢg٬5[L߶0X0?jEj/Tip/nsQ^Ev?Gqt 3wіi<{KR:c3ĽVX(iiiFdƨj>?wnKwzÝWMe\(jq8uUrGI1X&HR@Il[2cv䅧unA2@gu1`Y\c>2Ǧi/0.=MiJ#59fkt ;7*ޱS+Ge0:UlD o1;[P؊CbAS&!@87L8ķLՈ/O5iTYch[6^ch9?޳ϰNzYNjYF-"}HyK[`rFZӖTb5 `%5ٮЎk K]J;Mm)EH犾UQUUU 63ܙX3=M]jk*9-RXOy9u5ϕ$g`[K)Oz֣T,uGށ(*vk?P|p)SfJQ7g#~Tc CZ:dջ7#9"<$O)]̳GVnS}Vt.W"c5͆=:sR$m?T7/1&ݾ ?ZӦ0܅_Ʊ0U3⺘9j݅_9!! sY0wv?*ͽٻ[m :~xbV.[ڬYv0>e9^V u`Vn`u->i!'AՅ2e(Y̎y#UJLr:+bRGSNPdSL?ɷzl*GPl푢95iDhcGa6ksO;P[INeH\CPcD?,PN1SmF.#"k$yi&ǔ}8RrH(*ekJHXcbI7j!u} e@r֧ q~^|/JWpx>Ԗݹ L_-+J>;|j}bb8'隃SHlhwҠs60«ep{;@'j2y]*AjsxZ*czGI@@ RnNI'`8"9!sڭ I$~Uc%i*Ul#5SXX_P`EAp^H>u;I" f\ͼh8lONlT\었EIV x=ʨ'5HsYq 5ŎI>0ܻcOʤԶ$BET> @Í&X+csҘxڤm&GHқz/HڣRtف+7EW2I#}j5N֩ip9w8Pv"ݱ( ;/BPFw.sT1dciKYp[S̿#՝)KݟB*|º |~ul]E*~GQTJGQH28(Rq:]eO$s\ζ5)sXZ%{hry8P UU0JXTm{Ҫ&!ڣ$TA?]=al'޺t-W5Y77 ܓ\vrYXkg2O$V$FfaQ"#Xx#$*" v nP>T>/1QExÒT{R2KrW{XM$l uX[4CLgҠVfbgtUf 9EUlWm9ڬA$mP RMkyf3HܚжAU}Mfl}?Đ<#I+{FĞimFe`)P,KA['Ijv\aUf$`tASBdJʠt:Յ>lB[IFܓQ;>bQiU`*%|<~UCs򎟕11`n1FҤ˺=GZeo6G؃RC(YC/WI36jj ep`28^5 Z̒HYJٶLU1j[EbIXQJBU0jFQ>HSP^<>T'[0A/};xLDgA=KR]͸R_.J[7ׯw0F HbEYqZ6ĢAUmc8Y7!@Hw5B_>n jy~ռ0sm䊞K2:K{uJz֢ilap}:z:#23b/$wS;OxE;+.E<)@˖\tRNPO6vFڸNjԱmvlfvUȣɭkKr[̕>"%:vExQM=fm41&ryq2'˓ɪFu` n[='5n_Vƭ_/LjҰrW5GCDsc>E3kVr 1,Z{wrVmҝpEN)VfaO:S)ZUaH$U4r5$%p3;>اW'^i[{+JdH#<>X,>y9&6?$3qT$EU!je?fs#tysanI]"6l)D3sKh| r FcR-/˞Iϲ )n1Ӭ 2 j.FOjʆUA,;VGjl&V@2WR3G0\jݙd#jHA]:0g!vgUI3D@Py\My#zUV?9$/" W` ,YHSh><2,"M2AW5dgs1VneDŽ^%A*/8GǭQӑ^"Aگ֪ {b y՛1rѡVΡ)|,c?Z7o<,Ngft%]J͌*>i\HN:t(vrc 0Hc֦FHhI#yNXP̹lwNsHXk޳,ن0Ij̴wYW#Z̳濚V9E?Xg,M@߼fO EubQ0bkA6bkPjg85{ۜy"!P52)~U8 VC%ʴd jjncڻӷ5 aK$C>? >d:odJ1W,:0*ڬ*uF'p^^5fQ@kgU%,$ =Msְ*ͺT /z#Wg~Q޶Xx$ʑҝz^ŀN-nHaQm1/,BI03U=HA3zѲ-Phgw_қqtb $̢@~XU}F@'1U{j8-l8ˑ8Z}uE6V9HȤӞ?J&̟0,<~Alǖ<2b&+r}]+r}'gb?Y4Pj鶱V?z8bԮYgRa?K!hYG=F\.j}-DQO=jqs c}ȇު4l6rB?mbUq:Vz:U?1cT h#㶈gjI|۲[P2OI22*Ky$,8K{ ҇i&?(c׊/%-ǽ%ԒJXqjn |*֛XO_Jlnr7a&ࡓ/M(?y03iu0 C*؟KvΚٳJC4R8;cXnPT"'# N-vla*ŵIc*kKA~v;ڶpN~Yy3 sVͼc*a95+f$摜{Wwϕyjw#Ar*ݲ{s463m*$k끆#D~ Jn)Bg@67_mbYqj3Ѩ.1;B՝q3CjQ݁j| b5s\}kSVǞQ`wJ#?Z#JMlٌ)sQ\!cqE^g˰7pQN0ڪI&ZG6L]92m4ll6L[X-D]>1v(QE<959>^9Sm )kjcQT T6 Yo $TY#'8=鲖,cҪ3ʪyU- P:sR$]ZO*~F+#w? o=})&`+JGjG9`\ޫݯc+&@B>+1?Wa|;vjA,TVEWyn GעXTpzU1W@K|GC~kF]ڴ5gIPPfJgq%S Lw |FnGZ .B>8 "՘ 9Cyٴ+yj ,U|᏷j;K28\*P]I"0 yAwqd<ګ\.YH1MtM@cѫAUcMN@DpP g$aS;$/߼tPO3%ڥg&W$8-q$œ&:Y^BwlTS$)cLǩwm$D82pc+% <%T!d#= U@O*.]G1ؙWK~AQ 2?*ՕD֒*C!zWdeNbE%Tu>Gwl1G Tq|[98"HEˌLNj֖[NYc}IYcO69T~t;ͻy5 |M Us߁MOM}mt|Z`*=}kޫ{z|pEpZ v EUĚ{0M &əX~&O#K2; *dXdRYE#ˏ֯3#S.XnjY>SUѕz6!Zhn8rS̬2Huoa'rybMJ[rŜy(XfuaR˛eA{ry5R8q#'j*`OZ|MV,%1S[HVBG 'ZHeݜjdjI =LWn3ZV!^3DVY6p*Ε6Hn*ɤ LٮWiP#ŷ{܍#F!kUUɪVFpMV޶ˁTŷȇp"Kv%BV!^ܮc<X}ޔϔ!ưR 5_ryKԃEQ(:U!~u5 nMH6H08oSR(&S ?AVٛ zQE 0.3a*˵v_:HWfxLhخݡTQȭ7Uޠ͸3IѿjIyD'Lbp:Y]́ݝ9OmsyE SP nSTwu`8ڤHyPQm,#IpT{RY8F2Zz-7 Te F2N0#l0 M iTyrd\CZ-y1k;?ZľI&j̯)}jm>UU8ϭjEčjms'e@ہ[l})-zUNaGֳn-6T.eN?qn l^%݌LF%*0Ҵ[T,>r85Me"v^+e`P3#8j.Jd0k~x"L{t.:5T#0eOsX(Z]~I=Y2Q/ R+ˌpKfٺ$6zu-[3(;g &..0 Zb26Tai`Щhʰb}1NxRHrPOqH2cwj X*;H7݂9*m sJ*rZjѩ1*Y㬪< R/\JZhN`au~0@ߞyᄦb6|#%K<g^7h Ӛņ z;` U=Ҹ'_I%рc`֪N4@S;IdQPx֢i1’~RʷD'"?"HAx@(:{qR()h)h)h(+>+&K3+H1bsM,V,Vi@]YSwj[O"e@rN}˜9a :\VvDr$T\X4:~@<5(f}9-$JIKs֫D-+<`zݻa90D7"r21Õ (e񸁜zq[avg@`";0F~UZ~eqׁ+.y.y<܂1)#w![\OȅS̆-)8ϥ8]8wR` ;r.riJ.FwtǯSٴ77/iCz]uVW4dUЌ{R4FX_dLb@K}C&c8wqcivWn韖e]8Գj!2;qX$#r0K UI_X2_%pO'-e'q $2+j9)KX98m5]Y8##iZc\>WbRJO޺8k*)OZʁQO0T梞PqO-ayYUFIl.uld{ ZBa,>T֞B&_:Sa,:I!ÞHU.VziP(A?ŚzdYSLH'1 JtC1ǥ:YLS.PWdKs:*vI2A&a5<.~L= מe o֡|ɑyߍEmғ?MY!.xUQ1aSU]Z<}>K*[#95oRPy8ϵOzF|sf3I,JT$68#?@j:L85s ^s(/+O9ji$er|;VxZt.9B \VwAz5 7;~`0Mtv11ؑ[Ӥ.9<+ M۞<*h{=zӥwO~ܚj}}X.=+e]X r85->IEQIEQIEQE-QEQEC2o ^ejV\*;-UId ²%fKuVpڳefXT0SJ_p2EWq^r~nǻLIhNP@nXf-,sUP|zVڔ$dzV5ҕFW#ҤT!H>٦4,bP:/Jm?0ۮ;6K{h`KK9D0)q~@#=U\1{UiVՕdX!+LYΒA ?NWyBt*G5/c׵g ;r)6Da?jm2d|j~zS @2}N)ɺ0q|#dH"QY'E9^9In7Jæi)OZm\1|[WP?`Vq#:(?JˮN}+$/ANX8?r'V՘^&W#u|w0x~Dl)컦]voct7J2r*+lV̯[q71ȭYG ˅>hڰ? 5pϠK㚱t!t*i~3qVVYO˝خ$Fa58BQ*<ZɼF~#ϵZg?3>OPcnb:UKjw#!Qp]}w5AfГӚJ͵7]^]өn+zS;i7xmu d+i][ QZ@G5|6zcKEQIEQER)PCsqԈUn+MqYmsZ޷GMB٠bT Cs* pYIw7\~kK i=ɦO::7fM*ɹ8W P} \?*>Xqc,N$H,>$` :(UnI0oޮFWn>r*D =0HԈ5 r7@P2 ~I6!A@}1 ;֌F>lϟ*ErĵC\# LeqOVR;SmW6Ӗ9)6Jye,ukpArw6u?f E$ C)#V 8=sV 䡉vQAq%<{bu&^Z20kcQ8vld`9X"ӯ8Yr r#Np\}Ӗ 9j]Xp2=9X+H\Qv~kIc6HW Y;rknw0}kVuf]HC>u;l݃Ȫ[i,ZIBV,?:1 sZ.L:dej+to~PIn2Fr7t,p? 221⤌+¢vH0||n%~Rx>]:>.T3gڢ`Dq|4dW IpvCVc$( 8Z6EV5QU|W+IjG6¹Hjo)X~uP-9^ U9;c5Lc=qR^/)u`=[Zq\[njpحTC,8MTE=Q{*X/a!HR8ni-V(\\|jِhe6"$$j;X!G$s祚7 cM8UW OQU,U#BI=jA bIYO.l$SW \Ӿ[ #p;?PP2TT-K3yXd1\FNc^ب1ϷjGTOƩAƞˈ%J=Jk(#(~JL't {TPۿ灘N?*]6kkFah{v Nɮ`~u,O0NՒ'޺F!djߍ[${V"X7PI>°羒¡!_w ʁYy$7$d)нDbvOSSwľZO.fQ}jƔ/T|Oz[á9\ս%U&8zƶUOʠ{߰S e^j:E# k ݤ]SRc @bsti~@wgskō[ sXITFbeTa;Ӆ"I.?/jX%R |Q"2<`ś+(WIa=[}.0sȪP)e-7ӤpG2Oҷq,k"*+F"akt<өRE%QER IGX:Ռ)xk'Sq&OObx4aX 5%9%bb+S-ojyAYZv˹#+6P^a;w|{jNrXw]+s_՝(B5<|ӌn` ;|٪`yAH[1vF D~DyZRA3Aelt3rTr}T#E8l_(dÏZ#ܒ@WέZ:ПF}閫!8Tj}mсj6dm*}rV {jq s?VŽ\ش>V({S [㢏~euPCd6836HNJgz\)AZAadÀzfql׍2 +R<\3G;<'k?L{BH,_-FWh;dCZt_ى?t ZTeS:fI!zsӊkC OLjbmb]+±F+CKnfW4s'?+OtJ> .F3ǰ8]FGH}sQeF#*B1Xe P/A[ķAY x}Iq^?gMQܣzfGRڹi#S!d.ښĒHqL|8L|ڜT-3IDKX,rI@'M#Fr <昧iҤ9*ހqVu 7nFM|qC(eG`|rZE54X2m6=ջlpOcr$#;~O~*lcv!Jģ,~o֬^eeObj+)ew Jv 8XsgYV,͂ފ3ZI"%fcW=N|m}]$ӑ.sV& f;+'SG\jtDIn.0FW~qcQcߜr fKĩrG#К!.!YWE2 ZGbqYdHPӥ9cMzv}nD 1Vӭ3m)ޡT\!;0{9IAq7آH`ت'C,cEESK6hT/#Hg* ?4啣|fl1ܻrҨ  jy|ăw h#c'$ҙ5q?Qj+L, ջ[4Jya2HXpGZt`t9X[:V6*DkZKxsc>%{ւeqXS((w9\G\Y&m+)!Ryjv*^P6j6o|Ā?N*Q:T&: 臕DvsF~c;U?3ԎoĪt^Z>[1V#֒ aQ U;6p:!?T8:) dQg'9F~= N^xS:phl=iYHQ!xd!|„3Px?ʖ,|N>\zt;Ap)ۖ9WsWR"EL6Z Fvm"Uf; ִ#dǒmàS.a $>j vgp50GWU؄c91T-Y" cf#RF}qTH¤a =*^f(P^*Mo ֯iwO,s֭WHAZJ(+)FrMqPA8n^fa={Up`B>\o[ƒh1# [q*IFƫmˑdK ї"eˎsHibA9(5?ږw ~z]k\N TK&R"fm"CxZEb}j2;b# ۇ+HG9d̜SIm$d֧y0gJl3ƣYj9 \KV3eeKmkӂ)_ZSd9jg˂0EK}̡ KuqdQ+d!0%H n-ʶۚ-7'>_jߒX*+EĮYGNkcE`7\gHtcDSWSN{ȂwWKșT u:gH:/Et:'MW=2HIW{u5Ưuu +)xSqOul5ؚн'FqV.-6nƫ\Ivxg~ޕRB۲ĴzJ#R#v]"[Y&V8NH*힞Ad{`ÞE\iI^e~:w'b$HSVN ;+EPLשD>GFY12`Gŝk2~TZxL@KG9Rɧxw?FKqhmr̬0֙NoШRiOЪ~iL ;PZۭ~QEQENc $\[d]'޹scZLF LEe7RS[ vol_9cP&2*<CU8?׃ҝq!X TEeԛoqOeĂERN%/lY@[ĚYCz6R.UF*S2/QD(4H}HzBqGG,ҫK m*3$G\ZYZgsv/5*#lS59 lR1_pCQg sOC,28RkcË*[ #+WDYٟ5^zV`#֋}Py1 so @ ֲmH(ިk ]<> liG[WE`Zm'mjvcEmo{SuL/QSBW#=BNpH^ +zVL5q0۽;|dx#\~i\tdzhBr*E8Ig {TY'|JhcUe!~ҶD豱2zXESw/˨Y:FEU^7~qWt}0qZsoӣUF[M^m˶{sTȳ3.B۽ŚQ[,(l9$Ϟ $8w Hw"[0}pXQZ68`*KRRQEQEV|AUZa޵ö0ȡC\[c #qpq3؏J& 9'w^IUBm722[F:K2sڵ DX>~QU-xM`[x"$=5KQ0G8>ľ^^m#Ui* Aɤ̄ $mqi.58 |zI@!nwɫrBA;@vɫX\|u +H0a*Č3W1ʩSi.2aeV+OåOFXd"3$f2XzUܑJs1cV]2^ R q.>L;5i=+GE"r8* lY'pIYwaYאh8^O$KeK$-`٩{${W_hc0d{W_F_LpÜu7$VnH%N8NA.Qo3kOJ>5qCLRiIdVK0\})FI] C$ zVXmH`XrEl[HۜBVTP*O>RayyC٪q_c *iuXڷonI XMX9RKYBF IZ8K@TEE?JKEQEQEPe"wR;~uN+#o$~\J'Së ơ;ƤUtۚ,OʝhnSќ=+RG 'ҺɄQQV́i*?yÚѳ`#{N.]N[UnбSTJMpF 9f&(8D/Bz_ZVR٣rNno*<7j^b5d pݪ͕q=-Y>pk-@𭂿\U-RmuwDXW,Ä2V6VLn7 aO K4⭃FmSEgpQ⴬Tv.\+;\[6+DJdN≦I2a~]Ԩ/V"g;Hg/L?*/$!\W=kkk32sx+ic_?u+gX~47Tlp|y*9/JA IV4"22隽Kխ"fk;Pnʨ˛08:Lb6@Ih8fDnq].wlwőާ2OZM\Z-Ȑ+R mV'%qޡDzV|iIH:)⌿> n4L3m T#%h]_Dj•~+%c媜)^)e?)Ԉ8@0j $W `Z}--QEQERr {OHXF`c>|8[Ov1׶R"[<}*8UsW":RXe LLNAY.[?_a%ԤO>W\Hܘ?S<<> cO9UՍ6CvG Кc(u8Oi%yrp&<;=Ē%9--'ƪi rdQ?{+P|d֤rOf.!i+ŕy1iJ3R%ܗ<5QܝB<-譃tKyg\U8.fx,BPҤD; wU$cYHk8a ۊm$ս,L&;oXn$1aĖ#ҪK3+2+R;(/dk%@=jKdapI@lXAXm{*uo@7YBM88ZҎ46 I!.Np+MP'&OQEQEQKEV$KO߅ajSdQg+/P*Q>37je|pIlT _2&pNpj#u\䐦[l*^#. 8c6psG ϭcc=!x8>-q~zHXcPK1)=3L'dsljR7uңEdx9Q#8zbKMDi{:[%6q[tcۊ}82fDh[+)%֝PG&^Iq犟X0]7CnޟS$–r$x M*)j-ǜх<"b:ۥV8v[IHYX 'p-ǵXQ,Q#5Q).R*,BT7r;~,s4p R m9Ί3ZwM4p:*^2FCz -cX :Zk5:@A<[\۶HB'=9ڍ0~V^B1[x^wY35Xn+ z|ssJK=:T vq;Uuwϸ+8b@Ē1Rcn02A϶bRh EdEƼ [k&>l[Fџ@ $T9 f. |x@b]33ڒW 8 9YpcP1%̒NtWl0[oܵo閦+}ֽf ߽OVzZ((((2"jk *b5a]Jeĝ ?*H5Y0Xr&D{2“,Js3 %p9+S\[^9 7U+sihpPdwhe9(w~FEܿuQJ{Gop={RjBO5C: zO$\".'8Egd[9'@UKb۸;~-`33׌KH !rT4<@!Ү+V{uEqYV-bA8!`ڄDK$6 xC,8QM3/G.I2Xh֢IV\8V4 %n[fi((((+9Pݱ)oֹM TݣDR$:N!o!*H5=f‚E~X -$0KM𬨵&e)F=:U5720=*D*eKiDO#{UyB! R 𿙩VcTj@>^EW[9 a=t@@~ր8Y{'{U[y ~5 EcW>̅V8$Q$BkHVZ 9+9c#FqOiD*HLgҤ2B}*O01ڣb%~R1W%)z#F˶lQ`Wٱ0LީJ\J\3[XX n*ƒ5|Φ_m] Bn =Of 3Ys2v+U-L+SSA[|*g@8T"fc?TJOT$3+sU\\˳ydeʌu<̑A8P(uCƑOrB1R<»m35˕7o]`}k_N qֺH c#jIRRE%QEQEQEDk)`: [H±!e/[fϭAkcwt5Oƨkɐ8 #Ơs 8JʳIPgr&֨[Z&uVqO `I2*#v׵:@wa(F֠Ԕ$E;$ry%vn#IE0LbT;[f1N2ېY22+dK,FUr$ViO8AqҴE(!IhSyN}혅"%#JuհP+1֙"VT@sUPrծ.5 >@Y F> d ,\1XsP[# !Uek'Tzl;XvT.{#=Aq'X(oƪڮ[5h;A7P1X<ⱒgݜ˵I${ $#ޫޕ o*AF)L`B)``n))b#'nrتЪ27d*d)r;{TWNUq<*Kmǔvb a>cJͲ^~@V]tQEQEQIEQEQKEdP#g-4:H2\ZeE X{v-vaX6 {UV!ǎtmFb: k"i e\HGЁjorh'SIBȣ3˂[!XOɟMIzE$cRt{TPQ#a|P['TVc@ `sUnOCUZMD8ltu7$ݜV WsW&kUb'Z%rlExV 7,qTO9%]v)V;d/@RirrAK{ofʯAlWV>n1<=)-g іnqU氈̧bc2ZFe Ty^doS,RrԶQOB$s=FjXdDJt*d&}ڮ&uMXJKkot$όҚy]n0kG'v泝t9Y;y0ŋv 5T3ݏOV# ejǓ@#5E 5==pG>b)s:cA=kn>Elq3ZV_bT z֧/EQEQEQEQEQEV}ow<=ijX,;yD}iҌ"xŸ$=䟝@iȁNsź qGdBdH ;vCY)35UIUPf)]d6*7o5ܜ:sFΫ,=ڱ<}*$vuljOJw;ڤ<$xJ8U6L5gN1s5wM%2&,Wj$>dzy1GE4o"8`}a$G"r=3Zur+n4C Oz1&C3 ,O*xffaxfxC2HDxDqw -|67]*[F{U_bV;U$t !ۛdeW I<*6$s N Ii}ojImڋ{mN+ L}QUc>wümBI>CùMJKXլF3p 9W!RQO5v&#K1E\k^F.KZּ6FRB_PdIxٔ*HzUͩ$T*SU4hkblcIcڧV?x ՘wrk~(Z(Z()(*Ie`K.}>yZ^G5NMԃc?!Yw/1ʖag;s;E)U<;Kts'1\\Ï֝W* `Ŵ,Tm[kr$vr)-c7[7856aiY \PWEkycK/*+E$j]l3sJ jALUB :yL2uV<yܤMOg.mf|e'>TֲfHeH'{U-;yLA^v9&~A늴b[ R9)Y85xr2.P-LyXZ!OZ@'.#hk"%}Ĩ g96r$9 # Ts؋pmVf,:֟{[,d^Z]Cʂ1PKdV^6 \|泊@|ǚ6F*}I@Vmb( o;TnQc%=U Z.͜o;sp[`薿gVn $Vj`=+r+B()h)h((*湖`)q&mʾvFڼ6Pqܚ>T5D!; )sבǯ"rB(jt NjT4Um Qs u\6~\O* <j9ٝ@\frjxт9Szѯqԑ6gNESUE?* dWG2OK Nq`S):1 x 8oTwkŨ[Bn8}k37pv+HU،j;x1)((Z((((( T` \cTRe:GT@^6P/EfAtܒG˜T,1Zp7D팂Fl}*yW(N:B1ҡ6>OJXV](âQĀ zUxYEb4$Y/8Iv؍Jojc3y'{UFb(c15)J4jFu;cVV\cj/ER}|{a;Nv\Mor C:am.bt I2:dΑ#xc$Eq"z1vS$ԥF!4@Q AN`}qĜݦo%ypf?6;w"}kg`18P3]d+Y.UtrGkH\sڳ sw/W7*FGrHX40]Gz*4h3Hj"w"Xw5q^WNM20yl)_T@.w aH5$`Sc7 U*O h9i<SD;sRᑟ=GQ{Xl,`Vu56LY2Jnu?19 ]_9簮BzE%QEREQIEQEQEt'fB8?aJןʲ6$ Uy S%9Y۴L VUer8rˌj=݆j"л ݹ (x꽮 !gkH~Fsަ'{HN>ip3zm]ɳ "ջSpqCɭT|TWH)Em%vj|*3޵jph-N 5x-P( >KcVZsAH+A&nvYp>d-mc|VBͧG.N՛YAU[YQy]IXpqLҭ%IۏJN7D`6,ǚGWy7&CϷQpxQȨ~V3McaV9QΨێHclTR"ڳP15%buvBF@?DH=TQDA?[vGX?qGVfCL?e@zH*=n&5Fgw%5҂OJI^TZ8VwpkE(7bj;*i$3U X5\[lY Չ#8 d(B Hs//&]Ubܮ85FY|I{UIf.')VCګ1ǐjG4#0`b3Spxjv]+waQ8R1Mf28d` i>dc=إzJxntVFdp:UWF)|RjidґUg2![p/VSn]Ub*&l(Ue zdmre Ohyw{K0j(c]P[;k_)#KRS((((Z()(Z((((Z(((((()hUrOt_^V]]mr#W]Yٺ0kCMLVxv4yAկ 7(?uoND]tKEQEQEQEQEQEQEQEQEQEQEQEQEQEQERQEQKEQEREQP[Ct'0=ECsil8=EEqm XcJrORhB94[l!M9jZ(((J((((()((((Z() 3EQIEQEQEQEQEQE8恜s@(((JZ((((Z(((((J((((()h(Z)h((((((()()(3P)QEQE-RQEQEQEQE-QEQE%Q((Z))((J(((((Z(((ZJ((()(((JJ(((4(Z(((((()h(Z(ւqґبƆ8P99QEQKEQKEQKEQEQIEQEQEQKEQKEQEQERQEQޖ(()hJLb1@(NQEQEQEQE%RE%REQERQERQIEQIEQIEQEQEQKEQEQEQEQEQIEQEQEQEQEQIIEQEQKEQEQIEQEQEQEQEQEQE%REQEQEQEQEQEQEQIEQE-QE-%QE-QIEQEQEQIEQEQEQE#gZڏ()((((((())h)h((((((((J(((((((((((J(ZC␜Q@(J((((()h((J((()()(((((CA@v-QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERKIE%QEQERQE-QE-RQEQKEQE%RE%REQERQE-QEQEQIEQIEQEQKEQEQERERQIEQEQEQGֹMJMt[qfvQW|g$qTb/6zWAޯUEQKEQEQEQEQEQEQEQEQEQEQEQEQKERIERQEQEQEQEQE7M.b:0qN(()(((()(((Z()()(Z()())h(Z(Z(Z(((((((((((((Z(((Z(J(((((((((J((((;EQEQKEQE-QE-%QEQEQIEQEQEQEQEQEQEQIEQIEQEQEQEQEQEQEQEREQERQIEQEQEQEQEQEQEQEQEQERE%袊(QE-RQE-RQEQEQEQKEQE%QEQEQEQEQEQEQKEQKEQEQEQEQEQIEQEQEQEQE--QKIE%RE%QEQIEQEQEQEQEQIEQEQKEQEQEQEQERKIE%QEREQIE-RQE-QKE%%QIEQEQEQEQERQE-QEQKEQKEQEQEQEQEQEQEQKERE%RE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQIEQIEQEQEQEQKEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQIE%QKEQEQIEW ?뢮)(()h)N^NS(((((((((((((((eGQKEQE%QE%RGzUN^NS(((((((((((((((h()()(N^u:((((((((((((((((TuQE-RRE%QERzr/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:(f)(JU-9iuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:()hZ((Zrӗ:N((((((((((((((()GEQEQEQEQIJ/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:(((Z(UZrө((((((((((((((((QtQEREQERR*ӗ:N((((((((((((((()GEQEQEQEQENZrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2袊(Z()hZU/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:()(())VNS(((((((((((((((eGQE-RQEQERJN^u:((((((((((((((((TuQEQERQEQE*ӗ9{ө((((((((((((((((QtQEQIEQEQE-*Ӗ{ө((((((((((((((((QtRE%QKEQKEN^NS(((((((((((((((eGQE-RQE-RQEQE*ӖuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLTtRQEQKKE%QEJSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2QE%QEQEQENZrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2襥J(J((iޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLTtRQE-RREQEQJJu:((((((((((((((((S)QIEQIEQIEQJN^u:((((((((((((((((TuQIE%REQE-*үzUNS(((((((((((((((e2(((Zr^u:((((((((((((((((S*:)(JJ)ihiW*SQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2QE%QIEQE-QKJJuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLQIEQIEQE-QJJuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:(((J)(Zrӗ:N((((((((((((((()GEQEQEQEQIJ/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:(()hZJUZrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE ?諢((((J(()h)h)h(((J((((((()h((((Z((J()h)h((((((J((((J()h()((J((Z((()h)h(((J((()(((((J((((J()h(Z(Z((((((((QEQEREQIEQEQKEQEQEQEQEQEQߦ=Ҋ(J(J()h(((((()h(((J(()h)h((QKEQEQEQEQERE%QEQE-QEQE%RE%QEQE-RQE-RQEQERE%QEQEQKEQEQEQIEQIEQEQEQEQGZZ(((((((()((J(J(J()h((((((()h)h()(((()((J(J(J((Z((J((Z(((((((J(((((((J(J(((((((((((Z(Z()(((((J(J(((((((((((<=(Z(()((J()h(Z()(()h)h(Z((((((J()h((((((((()h((((((J()h(Z()()((J()h((((((((()h((((()((J(((((((((((Z(Z(((((((Z(((((((Z(Z(((((()h((((Z((()h((((((()((((()()((((()h(Z((((Z(()()(((Z(Z(Z(((J((((((()h((((()((((((((()h)h((()h)h((((Z((((((((((Z(((((((((J((Z()()(((Z((()h((((((((()h(Z((()h)h(()((J()h((((((J(EQEQEQIEQEQEQEQEQERE%RE%QEQEQKEQERE%QEQEQEQECAQEQEQEQEQEQIEQEQGz(Z((((((J(((J((Z((J(J(((((()()((((((((((()h(()((((((Z((((()()((袊(((J((((((()h)h)h(((J((((((((Z((((((J((((((((((J(J()h((((()((J()h(((((((( ?諢)(((((J(((((((J()h)h((((((((((((((((((Z(Z((((((J((((((((((((()h((J((((J((((((()h((((((((()h((((Z(((((((((((()h(((((((((J((((((((((((()h((((s\ R ---%R1HI'zZZZ((((((Z((()h(((J(((((J()h((()h(((((((Z((((()()(()h(()((((((((J((Z(((((((Z(((((((((((((((((((((J((Z((((((((((((J(((((((((((((J((((((((Z(((((((((((((((((((((J(((((((J((((((Z(()(((Z((((Z(((((()((((((((((((((((((QKEQEQEQEQKEQEQEQIEQIEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQIEQEQEQEQEQEQEQEQERE%QEQGj((((((((J(((((Z((((((((((()((((((((((((((((((Z((((((()((((((((((((((((Z(((((((((((((Z((((((J(((()h(((EQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQERE%QEQEQEQEQE-RQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQERE%QEQIEQIEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQIEQEQEQEQIEQIEQEw)((((((((((((()(((((((((((((((()((((((()((E%QEQEQKEӝiv᎔斝KEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE((((((((((((()h((((()((((((((((((((((((((((( ?뢮(Z(((((((Z(((((Z(((QAⓝ4R}(W7Jf9Xy Q4F1|q, Ǡz5r>ol֦|A<$o#3իW(((((((((((((((((((+qU56s8/$ےO^*Y>Úw%'˚KuR}OʦH'k{y'txϩOUtC+IZ6rBuw(rmWl/|®V^(((((((((((((((((=(bK7 &bݎGI+FVc'~P嶌w=JASGBGaTf_j>f ?CMq@dڟ Fi$ʯ 8ҺuD#NsR288՛Dҩƻ#,w\䟼rkd.OV95~ h((((((((((((((((F[x5f&[#]H;ʹrOQ;",i1 ]p$C43GsQ/,h83ʈS/8fHr1LV3l<2C d֔rXYP*WR `}k>k0W3K:#? 1\dQc$LqM"s^袊((J((((((((((((&@8 w0EWNZ^hUhozԯ[n5 *(T?* @hkRmْna:y\dni6ic 'qZ~ոF+*ՎUb3)LSI'Xn!wJ^XPscӭ!G$}A4icEN0FM0fl1.,XaR# 5rjڣQEQEQEQEQEQERE%QEQEQEQEH͵Yi rHeqQwZ)q( pqȻsWSm>sTY_\ܘۖV5̻'QP.eidҨ4]sU$ۓTy?tԪ6ߊ*33+_ƭGI$~\<qf--Unm=*m 1)gtbCPj%+">ҠR@ PC1T<JY,T{YA f_/<p>I0T`\r9j%q1nۙrW-6Tp %G@=I{|FYG\،rvrV(((((Z((((((uB) z(?fO$.ʲdc99R8MBWl84S"ȿFW=j)ue"r⛓$yQ=ۈ#0т1N,[#Wer9y3RI  Cq#.˹=E ?oj]lQEQE-RQEQEQEQEQEQEQEQKA GE8F( ( !ֆA0 0A%w).5PO'Q֪\ rxTRG G?Z,apƯFD3 {Gj-$#bU Nݖ%%[-6U ҫ0D_o_Xm@Ggsؔ5sk0cfdLO/ f_>_+lfbeӖ#83D{-gfڽpyj:C"0S}Ftzmb!ǥiGZQE-RQEQEQEQEQEQEQEQB٦`)vsΒܟ-OQFu @\I"$\V/6]"~{cB?t ~JUq'H(JqTڱCүU+\x|py;xr$޼R+dH~U&]Nuj*]^TOj(fŒx20/$v!rp>]Zzn-v$ yv FަYF1q$hmzVZQEQEQEQEQEQEQEQEQE})` rU.ȍ'9ZIOMU>vٞ]1AĀgy,Jq@؅^h:"T2 2cȊH`2>`{jS5e[rXQӕAjsICԝ'IU9 fcV,陱®?kv<<8DZxw*P3ϥm\68;K{kNf"&sTnsܚ .Bszi736j ޘ[;A̪8RFHS^bfɵr±twj֝@"Lr>6[ު;W"$`s{֌QPu88O. \#'+ H]IyI^((((((((*Sq v҆YW##V}IQBM2s~5^FU)##?)P c)!5=9d}"UцWZk6tb~_z+ [WuL`I9f Y- $ן +5I^ JX8o1u֘qץGL),yy[vXU,$W!gXmaXX殿d%TuV Sf>|aN@x\ c*c˒f Hn􄍹 ׋`֙aB609ZtQEQEQEQEQEQEQEQEP:P:I&#9$?`]]e 3Y7&uQE6؜M(#zsRh{1SrԚe@W8Y/˃!-_]砦[t]G"iF1zmj\9Xr0'8jc>EFaTnVas0Ui9PA+9?*BcՒI!t^=7Cpel>viFd1H1F*⥒Y?zH% `f+Q`}1닗K`Y_.ރ,5IK0?1LF1}jq&$pM6|ne^).dڽ5^jhH⋡e7lBR`˹Z({-Or5=oV9vR_2l!c෩w+5ҤG参ަO0`§+g5XZ`rkF)((((((((g>Vd̒4=7:󮢌p+f[ UوX;:w-Z+lS*m_qG`=oCq <pIȫڰ\g,/D-6@'#k>Wk}hN>JR1o|b5uWܐD{S5֢e?w ڛlEEe'p;Z?/O9‘W/>XZqML0?j]61B~lK[Fy]Ϻ&X/|q|M.wUG|L͵Ɍ'T6r-3:dcHl.\ ~5R$9?Zv";$Ԑ‘I'Vċ ?V><1 5j,p ąbKJ$ XOhN9f<"@}Ԑɶ9A jrO׵TUN8 Cʩ<&Y9,jtUEQEQEQEQEQEQEQEQMp Ulen#ʵF*̹@F0ws+ӣpG+"?:ќg3ns>k~8@ sS{s֤e={w1Ny$ g&Bsɬ ɐuo-$qIX4|x@Fsp6Qܩtv:}Wu/\z1c|ܴvb(4H_=T1nRq9nK(Ⅾ[9$j$)Lww U x3҉',h~^`yC*ʂAcԖjf,TnBjB 6Ri@Vl8q|G_b\B})Р.H7*.4ve1jsK+n;pd{jqy̝> ,$3*tu5$b[aWpS,aU%Ic&<#$ *lH׀*ARܸ栝oW_]QEQEQEQEQEQEQEQE;G@k+]g pg+M30X|Rv FAANQ\|t<:5]'^*ź\/0áry3'ʠĽ6w &eZk!U$1JpM|#?(P}u;eZ51$3`V> OSY[J&3q2" Fvnmk_H]=+WN\4ۥ"T8j~qKFjcQLO }?2gPXnyz/YeAUV["AP$sPF ꥨYD+c5F]o-g8Q^M_ݾY[QqWG||0jܸa+ax K7V0xsL%A{RWDcP!AR+; Up'27U3 'tҫ3V5VY $|cF* O inS?!QBԹB`]ƺJ+(((((((($wjkHMͷ ⢒ugڟq @;bQP_Z}l|Zz>b Iڱ2W'#ZF9H<(JNcR1֢nZ {XUK)Ƞ}._&.~R.mO~tbd8ȮPMÕȼJ95@B;7$2NqŒO,qY7H6+ۦ)ܻ ;dvҭiR4zFا#Ґݫ6 CV@g&?nT KW5FYXGjtةP9\21S ^z(OzK)TMEd ҳ +In@))- |Ƀ#i'$2 Y($?2n\Q%/nƺJ쫣J(((((((((ց֊1+`cXeܧ9ڲ<}8F0NU'bE' R>!V>֙*Œ|d]A2b]0ȪGL*LHDQ C"?}"p;5k h 68 A^k.A! t~]|'<lW5?u?=Kh;~Af`p6w>((ZȩmT=+Z=!=F0c'I` ./-ͺILۧ.ҝ܈c<}((Zb02H% }U K$P>crH&S 1X.稬fXnUv/=ŻkjЈT6SpczVuEQEQEQEQEQIEQE-RQEQER⎠T!K ",dU;NEI9 /f8)\mPpzSc* R1$,ilUy5 Zi`Z./E8jJ/j+@bıD~1$֓7v k3෯t}5}b$*N+#VVTYCOjϾ |H 3S5 qljVF1< IrFp*{UFj[XPЇjSب]=Q6d )mE?mE+n6:[so,9+U>nV,~ncW=ECsf:LF 2(dǽ68[8)>8&]F$ ěOJ봮(J(((()h(((Z9 w]VYVex@HXDL~aP,9 dp-&˜#j;ANsM5Ts6nelЊvKXU.y9O4[jr=ՍiI`# c/Oz[L Ouc_& 54ao0XiI>\qFsk;4@9+%!b,a[ t{!bH)#c/mH:pVhwU5QEQEQEQEQEQEQEQEQEQA@Cޙ3ul2jQp#uJHٯDwҳR<6Mv@jop0$}σܹ\"WtEwF՛LU jpK!#֪B"{8MWQv c_:<;+B5f$>]X`Cm$1RHa*F1(!;F0b߻Nu5Whf-.cMWےZ@U;GSOWS*0Rg95.RE@ *X$puR h'=o)X9dQ.<0.|Wc\nNHQG  90a[d)ױc;7wC==)R,bH<O4;['cOaL"&H*y=鲁庮q(7 ֳQF}.YGTOqֻZk(((((((((iV!^~~j8sY 3f3ֲZ`R>ZpsGEZ@gX{RZ槽a؝Ojծ<n/lUF"DcяOSYi#p5E"pNpǡFf8ZJ#}_Wa3sǠ )ۓg$T"c$A#`oBQ1󁃏Qb !ivzb,^\sڜ`88+nF8Tۀ4?0Qm$m3qL*̦F9p$݀K]۰#?@-j#ųmY¡h?QRİY=b40kI)tSKiԋi9SFMM0dBbv;T mN9Y|& -B-8psQ F`Aj+(Z((((4tr(0KqAŽ=EQGҌzQ*!q ]8CUNHa;o܊Kt55/zUϹV=)9g-M+ƿs)Jƣ|{%DǞI9-P=PEoB"O-~昱IpJCRp'ҢK b耀}J#:) sWT0ykiaϐ.:f+g?Bxvۆךd$iBq:rD 2r;ҹFNIWA+]`; s09£p,8$-AaAҿʹҐet?бNiX m"rGqǚƸ؟oec>EQW'2PHl߻HCUpRݹb).ݘ8GnsD@('ڙUMH3V+$a,qثlOBk2a$!`Tf|S:$Z빮(((((P;Jv mIE~eȬJ(qG :@OXgj;+n'ۜ։!$GDYVDXV>}vҪ݉$a;BK*#޲'P3o5*/MƐdmqLFɽ\S|Y|alXㅭD3B mX{qV;Fga!TP?TN椚C ep{z,80p3MKeHb!Jv %ȥX<Ƨ-tl}j[XRqi "(>i5qH[hFuII SMI%CojTYSw!@v.s4[s>17q1JnM#=zy04G7oY#^NÚιMœQ 5)]Az`\nle*Y; n'!FOj|@o91uD:N v\[na:MiځWL#E@~5U 91PόlĬ9m"^ZB=|)4e=cX:'V|xL Ov*dZ@m>[ԨͩN[h:SOR׳,QPAL$!|?S5d/xؙ̥͐G4Jk8UoP؊xjgN6wAnufN٪1#~ehݝa +"s6bد _6خPC0#8Dy$/8*ia>Lh i5DljyWS5Q6w);q%nYZu8iI7'双XO:l/ʜP_j "y U.j6}H;x\zP;o7^Nq?TQ 4dԖj#jX.PTr::Ԅ8< ~rpx^?އ@H"?ނT3+ELqKk Cdp3LRɒvOpI#U9N*; + ?ao&DDF\p̀imb+K<#H )5brA>4OK`Q*e$M°R„4_'[<ȏFɤiԟM>pZsJcR?ZY=GvA?k27;E}-LowV.Z^e;sL #GCYapC8jQa _\TӪ3@hmM0Wf܅lTv˔ mU5 J`}[Uč6'm'P6?So.<=jm9 d=~Mx'K c{*qAf"1N%H=IiRGZ;X8Jb\y8;5X[Ϊx$4Y 4 bx?:eNIvzaݮvk`b]);j ܩ ;b +wT}ptAP9j_{HbH,Uu=:ۣ`ߏ[M:U! H$Q^[+kpY716!A& 3 .;b`ȊFt{TD a> y yh~:X)$~6AF_}3YHfuBJ=d`hi +wM+J+wK!rha[SCm?(4oV'X Lvg (f<*Ҟϸ;v:(D!Tcw,6@QfJ1Ue$6wUw$(W'OeJ0|o.Dyā~b:75_qH,q>j쩅ՕbF)93q MϖN8ԴnB.L@ϹԲɅ^]xyW.)y=UT󦔕a^zZV>X}M2h٤ݸ8v,3{\[`8O(l\V6($2O.!xϹU$ y;61%T$[ҡfXӨnI^̊FWCl\SR}YHpj_^*"CH5c*vN|àw5o䐤gpMHLtnR»G ,yr 8튨 ǐ7pjɉYGA波WitOZYGqJG)!s${Rj-aVB$oj35U7cAӔ%ԚװGrxMjƪmԕ9SAF.ۃ :Mѱv=I\){Ioo8HċvZN'VUĘ'ҟo(EW>1ϥ,LlNӯox$'팁7<\8rH.f2?G4P3Qq|n$ډ]>˩东ҙq+O1b:ڟonYĒE_t.ΤcwN*,T`xJ.q@wp-Qɻ;8U>Ks`Y8qښ]d=G5 @3W ?)rݻ֣ch5Z@ARROZmE{OUsޒ`OV(kpF ;Xzb"/9IRw$AqM1{95\t 3:՛E6 oDi'mGN\*˕h*ՍE^apʘQnم&>m l70=Jk㊭u##Ku%9³̪AC0fT|lA/wHVPrQȥl YhNkhiW=Wgd #-T2d;e~P%'%(ǔpĂH5hf׷Q "wlI;daG[KKG%Kphdv<ګJb5ܦp=֢t25^WrX+.䕉$swRLw+kO+č*q[mW[B8c /E=kZAR+GPSTh1kP`{Ud9u$c-ϵg#8ϵY9G5ad 鞢dPW ؚpF5r$^W5gK/F8 歺Iz%S;M9ǵI"1HLs/f~I_ƩӓdhG35-<~+~5$B݀5r;$qwpUQNAQAg9l4RF~KHrۿJIИK&'x"&󼪟8QψXHM,r[U 4h9;JT*5U6ǐ$w'59;W`rRi-4g09GNAoI4;ҖEH9 -3>*Xʽry}*xhD8'  uaY̩ޑ51?Z033`_^M1#-r)/5P5N6c֬>lf%"iz3#Wqo~cSd=J8.aSNj+exٸX}2inEcx#6.2 "2P7DlS$Vkف_5KӐ䕿do,SʍşQRLk)|_*IHX^~P0Zf9ǩV:kWu(M3:RN bԉ T*[Q`U[Fnd$Vs^l|N<T^xުxz) |x~Sdq+9+1K!2HMœyuX[0A-1'>$4BmBQ%q}* 7(a$Te:O;O|d/${f$F0,N1Z]11)1?E=+^ g~RӽTRo*7rG8Uc֨LA FOZv)#=qU٩R]?xWlm|6b E'ݍN8n?{5[*I֒6 qz+NH&@B}3Ydݿ&a[o( 4O(/嚭;+yM~Y\gBطy\ OUk%2az~<nThdmsjnhCF0_j&Ì 5}UMFc+~cĬpƴ|⍈#׿ZD["P Z©ʡI$v7ڃptUVFHʛ\)%l'ȌF4Y̭k*1˷L֢&XayVŤ0 eՒ1mKZx| b>Ҙb $}ߥ09PYrYASDZ\zV)2gqZmHy^'oNe,7r:֫{X7s4n5(# &)nL1R(;Ƞ)ߵ~ӱG4?GHU9@ӊu8'6ihvXS鎵D#;?SdYH?ުڼNR݂DU&bF;KrNj َ9'5c+%K9r=ja"]ϽVH \{֟ <L]>nPF2ש/"(mP bx#. 9w_ la$Nz F÷,m4 i#Ӵ+Ɖ$浤?go6 ]8OoبƒVcs(>åo,kbY ؊!1f#paF床#In$UKQFeF*OZ gH}jűW_~+t1;Жp =8$B1 G!P)aצB0W':1ao7.Q,%.sQH*t.nAa}ꞣ?8 |0$DfvEMan/#Vy9wnJlOb3RݩI=;Ӯ?ss5Slu"u XA֨AL"\Ջ!`}ҵ5IEv(֎' ZB9aUg@bej}e$ U$Յp 5͜DchD?A{kHp?Asj6k8\+bYڊ]8UBkhQہ ügّۅ9YW7)ϐvnU"I|zTqO  ԕ W o&Hݼʰj_*9id|t>zFtl,:89MfCGjnb*Wi ܏iJfx2p͑A#cҢC>aQ#S- Vܧ, $|Y!H-~ZҮU0\arM HaU/uxH?J"ӪH5bF31ڵo I# }*0=q#6wc2m||g6;K01{{v.1 f͚uncN\iڀ| RqRćcLhzַЪeLҺ*e%eU)t˦ȧ:ͱa"0mX&V'[F._Yu1,#u5;C Xj%$yrW $kJ$@Uڢ䁐隭seGJ2dv$h T U_U`mpjb=@jAnV RszւDVш ɨԏ./g=8GL5Y%IF,~dڝ,O̿x{R7OjuҟUSsK~(ΖrUi͉_T[n_\Tsn7v [ʯW ׊~bߊ]L+m# ,~{b~j??U7ñCP/Ԛ*nyd= #lʙzs2j[?N*4u;qTs*!=MJ)f n ii崮6'hYƁ|ӂű\|dH:1ꬭaa$ x5+Yqbk_,ayU>ony_% 7c\"J 4*QFON}kBesڨ^w)Corܣ ;[K9#krzWEv)Ql\3!d` z v ѷM'?05Lm؀sH y];+"e ̬@)\Z?)"cnn}jm2Xd1<55nZ4a#n{UKo^cg5"& {!8%!dny?l+jT t*|-#S{O ޤwɂWb]_2I*Z)3U$ nVWi^xbgCmf3+85V;; @5T\ su7 Nx`?o<,D: ǵLeґʦd褶o'ߊ Ջ~*8Ċm %n=R\>Ab96IP)*G.FH`j*1#?0p3+BBA ,'cO5rJ)p<{,B:Qި0&=è5a43s4l`pXu,e%xRU4͂~ erАI dm=7|Aydyhd|g{"N}^aqh@63UAZ᳃p4C&R1uT: Q]2梌|͸j*?U]ҟ((K#j61Ǒb61Z\hۿ=ymY2CөPYd#;{u;tUzpC7^EkCi`śV(Fde-\㷜˃@r3[瑖@XVOLS{OZ%Ɲؘe5loh.PzV*loih.j"oS,Pm}мk3`uYdsl]P4h7ˁ8<04rC#huJH"ݒ:}J;X:TssHnڣ)1}VWmg,ǡzogmwzӧ>a=p B_:CNLq#3p;,L0ʊ֩ya4UP;tm*PsNȘb\p4>Ȅ Ԟ- g~@rzT@ dwܜb~n9&NH#ʹ JTDĐHSEFw䎕fpHF\cǽ^$c]DF[z.AKtDGU4%UinXp~SEPk:(UD.HEK*(\erG=O"M6E[ 11C݅;pN~5A1n .\8UJa5$m0OaRJF0j'0aY%dbjqO- cP]gZw!} ю>|v NO͑HT6O*ݳ<ҥU(NE]O-j)f y+mbcS'3A+U/(q*9v>n|igw?}*YN#!⛬#.8d?Su?|uJ3/]z{cG~~:Bszg;A摚4'Y2o+D̐BX|5^'Y\OJW;\j}'%,RmsHrIa,z+b02*m*#/sU=bN#ީ˰Fp|ˍNj&.@.1#[g*ڏ#tĚR畛HP1? +Eoz9*0Tzaqϥ6+p}EH#`\&rvuO/(#4QX~U{o~ƠsX2A;:g T7a?*e0*=qI Ī-rIp7fU= Y-+5y=HOE+=N*-@_S.) BIg'=r)aaqsVHls=;6*0OR}j "iW'#'֠IEI*Z<m Z&a*!x'ʯ QLF  # HOUlʧ1V@!_R|a79SL;p3uS2cP|V'{qHsw-liM$i 7>M DǜgbJ 浵IWe"]9R9MJ*[v'kPk#3Zǽ7,k/Ӄ:vCSi23ަFC@=A{ qWeAGi2vn$cR9ڡj#Xvf%œUMK!&͜.޸nry;~SV;f,ߑ@SI )"2KPwV#&TNTc>ԑ *.PWA|6*ԅc*#,d|(ƒq=˺^:Sm$Ls}jg#p=mCΥ;G뚒&!/RiěrY=e_nK G,Cs>FQA[nn,,= c0fۜV>v1_bEm:0F#;^*ëZF1Ԅǯw=o( =*-Trq#^uzp;U7cbX?aĹ* OFףP, ׊ԗIׯnH d88ڭ16QTaqڧshmAXR{i'$ OaA!iI+fQMH$U n M+aH^ǑW FWF Fr8/aMr̲FtHrSm𣞽MUT HP[8\pJs8Rs8ʉ +gj,GjħlBJv>l qՠK2o5GWeO;=3y33X!\(cº!1kK|F195fTqoEGf;F?1S9[hj峢p#Q(gYkA\ +\Rf)_ZL;ttbȍ\S՚96s3Ek$N~~Z5/=²Pnr{u1'&C.3bGʃXeAnT+-r0 ֟.(a0yԗQ^y5%djQ.%\(x?Zrj(F YPVIX\CǓ&w2,51NiQ |y>f,)v,xϹ6E 8b̸GEXtiFBẔC4gs~5qhJYX=H?5]}A @rzcH^@:F>^L3U㍤%͂~$*Bp_Sj{(H =rjy " _Z|m=+ s x3,uՋI-:MMo3\Be{Ux/+>k;oު[sRF$ujO&b%o<RR2tӖ6e{"$3q'i\ԫ#R[Fހ?+'1^^V$@a3{Bg*cn3S **p_%GOnQIcaOQֆFg%MG$HgZcTRfa#翭N ̜O@zԻKo'hSAAqG@+P(A[8m-Rn5 E` ddtDŽS턻 vv+y ;OO8R>_̕1T;eh%#U(=M89Xm d3sNV $q>ف8͏ʙ&pw5ZŽdǶy5 ~ ~dd#>eْ舰 Vu+b,'ʮ.GqWxHzɫ8R2XեU]JAaN0=*tҪ<ʕ\!P?vZ4d*&[ߞ)c NvEtQI $E:%F]U=Annojf25? ^eFxʂ)12F)~?ji&JoyT8?J|t.WXvܨhL.U:TżHvsޒ"J(BvJy@aSFe-q*1V.>⣟'`q $,ˀ8>ZI r $\ei߀2W)l>vZ*M+c}lemQ@k4H6@Vk10S0pQ]8dj VyM('p"9Vqp3oz};P]dA%ASdUGf`|Uo qTn\ p(bD.a+pyБNUV̽*`w[AS39^L}骣x$gpQ!UGU7\OsqR<ɮ70)7)p P'ߵE|5$#}vFU.1%,~5oOM)l ؉NލD4$q]0KzlrQv*g.v኎FdX£,epy>؁h '=HtiFLbE` L6J7pdRmqGJ}O*['f_ϥ5>dQ);rP=#w :tFHk!bDB c{TcTR2y8UN8(=%T9­g<էD7 zո8ݐǧZUlIfb8Tؒ[QU %w<.ݪRm~㊒X88R j1!YXNH|sU|G4h:V|ͣ^"F  cMw$7^[wf$?ZȢgcTP r1Yv<ִ-^@y=8(ܓ(85Jyٮ(#nUҨvLUw#1V.Xc`y?*{ɩ.cGq8 4XјqUÕ*;V>`eXxj&v/<Όv$޵vLnoU+U}tm#yj T2;`WS 8oZ 񤙶Tfv~`(<{e c \pDO!7c<܆E2yUҢ #=5$Y-XOtHe RO6uL`;qVX766] LTvL JmV{TY* Wdxj8RIϻ4u)Bb9S0pYA5+n9,B@=>C5\BtqWj兠Rd%c[wZP%F8>ŔaccB.W{W 6ʴF2WaPbK]rŇ;T{׀XIHm4g*=r[gyuf{ĖT?{o6lPl8?Σ E9gg'LG叙fo$/ X&AYI<vÑ;GTaSiBW 568eӽKd4`=>udGeEi^1VCE5VIW~U6q ^Pb΂irPe ghnvu~Ny'Wal1RHPsʱ)( yF_֒ſE 12B:ln-A]Y\,'TJZ1$q@v@3B : )]X1f1\RL=OzdlU.3U7`}3ǩbZzIW?RMhi  {\/#6s RLcsx#LdU֤u'Bv) '8W6%$0 4qM+dFN>) ؕ3$n} x@3Ɗ2sEEnYczT3FQFFm8j=:(ż>UOX'jؤp92涷F$ic_{Q Iby<bsTrI<㊴ij zUIf=MRM;C~3SO"+%!@.Oe@6jF rZQ`XFIQ(뚽/jzՉ0[Ú,2, U]RsP4nj)mI˷P eۗ>b(.r˚B\.pr\ v?^Fq uM2_{@X>PTS"n?3=Jf<<b ڵh[3w^w+4T4nOLd{ )YVBW #{`T$8oIhv@1L0_TQimhw?B81j>QԶɼh9" $?׭X_&HO&w<`t\tdo (⛩xTE/$*5r2IeUqQ| 3MY W`ia x\cH3R1'5%Ҵm(<9M:ue,:sPo :x=3όR {R9$sV3IIpELIwɵ-v䍀OYM ?ZITO Cڤ·#~BOEfWc `Ҟ؍r g3Xj&=r,N'TZ%7->ZF~9Ջ g,djŤ-!37 5/$8HQPcmT\#@ lTRT%\M1qM/wcz`O+\Mc;M"qUidN2=*x~ J,=026;b7Gڟ*S(>eeiYr׵E bBp8Wk:݁LsΦ<'N݌`KќS#׽>.r1׽>,cs֙, 3};KJtvRB[q*ϒ>UZ;yn#^"a-]4l],>ox#֝B)G~?KdXzT1V!3tcF#OF£Mds؜{RʿUlYHy0g+v1:֩KpzyϾ+@Vs՗9VFTWUn0w2ǦzU ~*Iy2;IQ$O6m?Jhib!)!%20ImqP4O,ev4 ۂA8Xˎp=Ӯc~8#5\2T wU/) V#ن`>Si #`=Z 4|r6`|8=3Y۳p5At^*|$֔Ev ơ N䟘tt GD\wwQ6]t` v711r?*Ք 5wONqY6>BZ1?XYch2wPjxQdLgT/坰)_i;Y#҉cMYG_jYs8>Id~#$.Jtd2V[#Jr=X1s,,=XIbj+Ϧ?Z 9*&@=y5|9 n r9<SN'&TUC$ns>ޠzRdQ3*ǸEamc77ee$zU;d ݧ&Zc֛L{ڴUT1A[,!j >^G8"834J2?_[-BoսL[qlItUJDEYe|N<2 ,~]ܐb?L$e`@8֟pH6q1Hʏ0ߕC| UB9#2{U(bONESOJ~{~jh ͷ~T֖x[)/bx>ST˗m9ު5+K[G' Ŝ >~* #4gp,1ިdnT|d'KlTY$mVj[8}mIf2ҳneG:&V`Ԩw NZM`m*(U/ Lvʣ[b\p;!FIF[8>aqFI$sҮZͻLdtpK6;ʦGcVAxj !^!ÍyERH>_<{>>bǏj2m$@,%3#HV-˕$DdRKe1R^prĜdT39Ye,G Q\$V.(goYaj>yg5˭0N p֐xT?+~5uj KۏT,2On*#n'Te:zӣ_N܏B$95n=z%ɩCN1L/Rԗ|i7''GJ[S}1Ha4ZPWsCzv\ޫHr})lc3܇sW 'RMZHq`H!B/VI7 5an=K唓?DId`L_.s_Js}H*+I>RJnn][v4WCC'%2X*HlRpzSXpCB2B TDeJ0=6x]!x6UbbhU%n=%RW*>cڴ$1T^´,WL_-}Ẫ1љUk^@I9PQԐ'$1=z1.swf$[WS78;ՖE>d~rB5#K> FdUN)1k{uBa)[=Ī*lB8F8 <Ҫ/5 SYS%ܑ:ޮˍz  .܌R.U$|Ñ縡p0ޖ$GV!&rbq%x# QMx-i =F»3L@ dI 囓B!; <6kyJ`nTSeͬʕ|Z JSHʐj`cpzSszz7,rJs'* X' MWr~O֜ y“ȧ/Ju88U~V!Vx :ɟ}O-}*p=>Pڶ~ q߿jE @Zz.aq$*(K"> >Q#un*ƜVj#) E^Sd }MFi9ſ#TkN~M7e'857Q, ߟ'zrWpz&ܙF@Z &܎jV#H5\.Adcӊ>K1z0T)3:ϖu\R4HrEK%ʱv HO˜j3F/s\׃@XhXlc UY<N83JTt+*fȪʹ4JԅĠ 㧽HtcS!u5VT`=꬈D:BsI?- *R ե99o$=*PvZER$ | dc4W!෭084`S~"4%վnGcM[խUWvҬm€: /NHZX(ipG A)ѻnv&8$œŞ6P\pHا4JMXmN1ƨp=-f5@83EP:gYj6cεr5f=f$ ~5[&@GNjj.H)Z@jROURD,9@z Hyܸ$zҜT3: wp;c @u@+=$,{x Uۨi7$U V+p+-2݊F{I#G?Z+4pj?99UE1ccnIXHݟzH" ʻמ֐Hc22rCn~OTy'c֪~[ԗLOa~ؙobCWg |dk8! 䚑ՔR"t*0m_j)`=Nj)d{G4v>WXUx'"S ޖE/@+=jDlGRiO 49SD؅c'ih<)r}X1rr5Ν}\b݀oz#M=(#4hp1֘W,F{昻W8# L\gׅ%dtiQ*'zrRIG5/$ۋer9 ǖyL#ұf=SDI0JŐ 5? GִtZ\p3ZajF+U*j^]ǥ6?ơSFpW]HS[oj!}DW N1Q-~RqVRҢc6.*Ke/s6j[u2\")T/j֪C SMvu$lbHfLV)ĀѱI^&su zh,)`&$mWw̬@jrLʑ}){aoId`ofBVRW sS[|DF 8nitzR[ؒƍVR }& =ЍemBAU"0*XԒg?jʹ{-s^4 ݮ Wf~^q5Z ֠L1jY3ˏc5nM^B?jiUzm?I(I?( tdF+eP*Պy*O&Dc:S5_SP9_^T;X»~oB#S35~܃[Dc }+Gqy (e6֪^;v֠C$@ O:67w7ȸ zzlNnvs"ǃj77*8š+ޫAF: M$+crpn. p:֢ʳa$ Wì%2+5Ųՙ;:-T&9Fp}FPcqN?J ux~*Ďv=fḿ5YcF+TWf#BAzl*! 4⅊ni9=* DjU&ml帓~lY߇oj݌"I~L 3M;w٬<"mT湐!6}*È2~&)Nq)(hFۖPHa($dVgʕ]ylqZ`񓻿hFLR?t [9SY&u(&BԖ>إsSȡnX{?Or_SK@ɤ!@>J.甁n_#TdrzsC0 }C! 3~|u4:R.ڤ Zty?ʞ1K# nW'`EPG$DĞ<^gdA7֗\YITdF7dzMZ'UA2k%$/?)k=$ޥDX;>^Q?jȇs~]D̑'&27,qFO'>♩1J:3б9ۑ5WIpejlǧ>l}kWP+g,2{!ev4c0r̝v:`OTgJQt|#S[H>4EL!`A0A1M吘3t$Q nYU?*N7[kmms@a?rYxYڛ<>TԔnOŎj{nA"1ޡmk;֌o&WwUؘ S XUظsʱgG5K4y5dqBI`* Ď3r$n>r[ 'yufi-UX 3²G1){{ ͵CUYsۍ s_O+P±FKR9S=Ed5짎yuXG q޴bq=I*{֌n%r tP'pQ9q[kr$rʸEe;mU5qfQ09'Gr[䞂ۿl`}J&dA>¥U4M9f Gˏz n=J[HAJLb8" hќαLG* v=Ȩc_Q071a$tx%_&-\'F枑4GfjGc3 j[Gv!$F4jS-ͺ,Dmpu#Lԏ΅cY13j H>B%UČV𛄍CjVQbwƶ̼0{jEsZEu+W 5[43gu&Auf?yb)UROuVŇeɑxt,k{dWhQVd犫fW1?cƧ c'֎`i\"@#Ċ=gy5LɻIۆAR?ի7A~ Ջf0Cr$)|ԯ:ϕX9z%Ux3[%, 7gڋ||ӑ~5ۋ h&s UKƳ+#]aPHG*ٌQvv5HZbJPVvL(TVvT* ֜pHVqaԝ;sXLVh]qNUO,="F2gNC`~R|ӻNӵ8SRؐ@ဪHuUT NF}{TA JvڼІ"WauVB֪}wjnFCҡbҹ$dJb+ ǓM@͕^19Q׽\Fgf$l\F}HqV[/ecTNlT䪏Nx%U{&!z73Na/V>!*:pNԛm󢜈UGhl]?9U ؄]sR+]#jT\!pj8X0/ Nޙ))8'Mq1c&4F&JKʌ՟Ax||wR1# #26E2)"1)"Őۣ-0l?( X;pzjqf4J NՋQ$$;0l KuXOs҅%_ nx.P)&9Szm7g> scX\y[`}==vGoS ? ֳ&UWG#8MPuH2rqRCs2/#35-cs;gDL\IOj !o_LS Yn9Q۞OϮ*|w>ɜv2) юǹ5d=;{(AͫY $EͫYK#h{rIrA*l W, KnfΞ ޝ Qd<1PHrrQ SH 2Fޢpz1sK y * O֝@*3T_/ J*P>] HZFVc@ z栙- Aqښ@'c4 mǻRެ(_Uˇf8?NgbriJ%n>)8'n1i~Hҧ )OQ,dIю)@g̒.4JLդ&FS8sUxiUUA:s# J  GӚ̍|d'J4pFr. X a|jl&yǐgV!H; RF;՛apkmiDCMi.#"pcӯw ӮsvI SPjުY1S_Xg#`q {֫to};"cN=>2A8 d'7c1X)zvC`0W:cD5c;j.b/^F Kv nTҴu P9ے>n.tfPaֳ%H5JfQAE \ޢq tP 7tPr]v'201 ͞ 5J\)&\/K/DQh`!:4K֟;r6?ˌ 9JB Nc>#-,Y1&Чޝm5/ggoڱf tjʒVYqͬrS~u· ||ubWlwm;խ9V6u;HI{4ٔȆ2q.<;Sdh>|gv>Jk~eˑvUK渍maNUP:b%\9Un_3#2E|Uv# sLvhPc ZgHLU=S6?raN678&9vҬ36+E;2;dbG9-oKIÁS g9}ʐ,>W}#1>< G?4ٲc۟Qd`c' ~unm?ƤVEs lkZd& ěV6Cu{}kY(@5sx!eN ?@ @`OK4Y]A` kj9f !sP"B)E=>: UO6M:ՏU6s+P}WfiI (uf8KmVb5p*up@:Yc|6y$YLViT >?vsW4k[R"NiVl  Z_yȈi柳BqJ]VP0y>i$EeBQ~T6SI,&RU~Sm$wDZ<9PNӌUES3(o2*T%ݸ, 'OL=sI1Rp MvTAOe*TNV1#CVzfsˊ`Aw !VV }x ;v:-ҸS@Oz}$x"I,ƴsOTc5KaV<~bvP^<gyb?0ɓP>]PLO͐EP%wW'9'g )& 7}iڄA'4+;TvB$S]hдXCc*mRx 208sVX)Y$8!F.XZǠ)',0zk"ۜ=i,έcm#ƅxOSPdnjrƄqinj"(yRu֡F*UF35IPE=0rX$CX*I8ȧsQ*=F+R8#LT9JX<;UwR$svy#שk &j򪒱>Byu5А7pZ"oi1igMQv1t>T#G#2EvCjO'a8=\-~˶Mrzymr{ƣRN8ڣIqrKmAqQNhsP i@CQ%4@?\E\F+~y6{V3_JךRTC*AxtM ˜;UxF:R2Ko)61RHISqCmS|q=!$H82sަ17Ipy.3Q\J[*9dX@m<^j*lA8&DjZ7z6Йvڳu-`x|`jVDǽ3Kmz~Ӟ(6-1ZMsbU *2;R][c-3q% ]`qF|*v1 ${Y>?D*:Pb_{sMb['q4,y<7.\]*-hO,m?Fe;cҚJܒ*peQt@0U;f^KY~P+>_6BqpX`A 1 '"+!A'[]|Mm2̄2S_Pb<*rP۴# (xℳcқ$v0ڪ۞|c?bj7l| w99D%H䲓WZ~lD3t-P~֤-.HcOZUE\Sus F[I,uY r+,?zj?+& _$WXm]aRƱDlLT"UmL఩ѕXT+sV,I SVeHN B'򤎇cO=fGQk&}xm)}<2QZ"O^%23߱aY$-%}w%dOAw6ňʑSAВ@%FAOHxnx7+x0M:+nX|Úh469*l]Iq YN; ߸aL\ʼ&,-95[r!VIvS YA*BOsR1ư@}k8`ԓ[qT @҉$;8=ן3yc2OvjPSR4|O\R(+⢻#pW wgqGrx#׵fPr{U7"<)fU^2Pd\z H꼬qֆj$wdC$zgA|NM* }AN)!5 r)L9;cYǥQ?ZĄ'-KniڠqزIvj@%dp˔`ku,Bc^޲/fS %!zDyi} 2V>a` Q85FVp3\v E P8oc[@@ۄ1Mli‘֢u7a>w}rin&/9A㰨5;=̀z 1ɗo9f;pO/k2l=jȱϐqY2 n*O'PY2,kȱh5/ J*`er:qY{j4x'NbH}3T4oF=[]B\XWikg J*sOJ렶 l;ӣ ŸCۭabW2a<țwQޥyPܞõHΠnvˑT䚬\8 Ā7Bs܂s\~6Y%Ht6 A39^ޕ31^8n.T;q[1y{EA*S&=+jN7n,Z2ޡ|O+1!UX*G$jx$TV',3ɭDM 0k^ajG@2N: F1ӯc2^jy10ZبSh^lH7y݀\P0-<` Pd%7̇9Z,l&[ ޯd8,Krǩ>cȋjHS ̫z>$Ѻ;@Xij ;|v5K"̬vz*d1N+Eb˞j7esn ZFWFջ4C8"fJnwwP{iVL* $8! nZV6dJҌя.@Y67a[v&EcJŔ;W <[N)nؼl C#v"PSJd ԬM*"44.SwՁ }M"i6 ]?1{7ɨXUI#H*!NO"\d8\3Z:u4ʇQI^z;)' $X 6f3( ڸPjrھFJeHX&sTu6yh9!sz0B_H3Jn%tVC3mF3+i $XrpzVsAr+N9DC$dLQB@F G@VT3\m'H?:~5,m8eq{}jIQTveCˀFl@+YsH6H좪J/һI=6+)X|F=i[99ؤcr0bm㋕$ZNFs}*Q* ϭl܂rEtViH$VղBIrqSqQԓ)D8Cc9'֠tseQ:5-@pv ɾ.?֍v5CUfĈHIUVjĄIZiX"x[\$U߇5&:$;н2D,ԖI"Tw9]O0zY[dx"bȉmf?J$8ͼ<U =YyoHc2~?fjp;3ƛǮ+Tr|aʒ`=Xv+c#>ա=28!pp+CD^}{֎`iePſkd*ŴD)Z35q12۽ioW O8=j: npBPJ3lӜ ȒK6$fܾcƦ&Q~}S[`T}ORzs^sc1,0 * 囇^NqNER7;dS㇆sOcg;J('S+)fY t-T]BWKW20` n`/=*k$4I*IL`So!i'G`Ux>UQϽ_vUTQG5vؠ|MLZ'U>,/15}*I|AYxFp`Yuڭݫ# ⴯=W?fo_)Hzʕb=T9g .a=@ W—n-x^ʳɺn^:c?Egi%_jX$ɵқڡS;|7>U;F@; { +t,3T>S Ug]cIK%EY;3/&x47K@m{TAzCm:&7( 54n {sx,V6T3N85PjdӽgvU7)\ޤ/( 6o>٠r o:rQB"DynU;H0^D۱TrO886m$SY*u#F3RXӒEE,9,&}vS۽E$E=á yB.8'x݄װ>P1۟SDIŠj?"zRIyy zSnK2@Un<.ms!,?2*SAl PG.8ݖvAX?1 rA)6?<lmI^0i$p jFzcgv2M=0A&,>1j0x!Zd q5*E |kV䈤= \Qa9SVǗ6b Rv&Hp@"vA) RL^0Vن|Z҆EeqM&UzV|AN'NQ;U),nc/9U]ي>]f?@kȘptbd ʊjf7aeugcmd >tzJHp[h#Gi>ۆ;Zlґ2VA-o :si G2 6Jl ‚r>0&8fe<2zP DIOH,. %%O?1=fnw;mc#}qˍˉ>9tTeÐ $er byǵ-ˤ[pw4L.>sI$Wx,юH#Ux"nV7*Ek:BV-ez n4ex@8隣$Ycѩ7DJP;AtxFpvid#MWFbDX P$H+'$0yQn.NNFA:y4d0Vǒtb{U(C7#ӂ@>bgo{)v3Cp s{S7pBwH$vߔi8Yy 8fwA#T|OLUhTHLV 呷²a{a#nA=)gUh;yvqE;ݣօ$1Y23ƒ:+GnQ呢A<ݠ҄ݐM9"0Oj# dT1:Tvⶤ10G]o [- S(v>SԙRw3Yd66L{DW_*guh[ 8qV\dZ9v?hzT:z;fYq4̮[;j0Z$,`fZ8Gm8ީ!tւ+ҺHB+f0nP>TOҨk0'@ZwSޱT?f.6E!XX'ҧ"X'Ҧ*l2^*9$lm#chj\x UK!P9jÅ-KI-.rPiHw7% y7-ID<3=yIYb9c[ep rrG$`V+`CCBy@a0@W`K֬YcxlK* }zthJXN2zFY0b 5껨Cm Af݆q#5nWf5IS ;J{#mL|c]Y<iLCdnڣkY.qLIڣ&VQmo x&0 '*Ofo4Ryn5VHdF=^&C?tֶ뵢W uN('֤WͺF#y횲I{BؘeH'e>a3PH7+ zniCLsGsS89T8 "k>aqaw>h9Qm2dh UX{$jvG}<0!W4^;fFcQSizwT8F*y(1= }3>’0sSثxw6;xʓRi g1Mn2UKh. Mk 63 \і kg3 ,܎E, 唜_Է:->yp¾ɦ ˌdSc`t2s_WKHcء@43No a44!OzT69w~nUU, xyۊ\t#SʲqU5O$(|FHS [(6MZo $*\RۂA&E;_Zoo\+Z)6\ qn*},.[*3wn*kF@54 #V/%(8cT% .Ř K5dJ!9$sY:(]A5CgrodBÕ/OG U,9*5c3`M0#vL_k0SS"P}{S2@S&gzgOOZtΦbnVp#e- ]dB?Ja؆%'j#8 U`6TM@#m̻~l|ɑͻ mB~bޕf! R\dj G#Wj`F("VLn0 d|@=NFCMң#"Z \6yۭJc9Bl l '~JATh c8\ o)pךmɍ/u$pE &o*#P뎵:Ec 8FL%]JʞC PNTvQ&2$ "3-'$#yȈD1B)$ GZI"f@ɑN,dA_QMco5}``P?ziiiCW+5cq |{ք3 zdtP : )DNI^ҋI8;OҋYYo#9jE_V?Zւbj@d, +0#GGLFusK,y 6׊Tã׊ 0r9P]TbyFJGS&[=)J3?Vˌ`ڤϴtk' x֢GgÍ% zi^Y #gg˚q2GQީܾr@^֪;t^֫ztPJV/3.бƘbYr6Tks:JbyR20Vj;SYL SX&bOzt2`@LƮAHq&XI%b@dI$g/P74]O/E H~:2]2bJʗ"P`e,E(֒G3*|t3K1ASR޿|E]F1+w/cQǘHf|tDk|۳mbEw1]H-`ɽ (Œcnq$ FTnsd)  Igvt4Ln%%9>-ħ[#&4`&ʌ~u5RDoIGұ&{VX*톦BK`=G]3XEA!=hXjKG08|C`:Mpjez"84&g$n\d5eQ"0x 0VVPW^ V A2X;ADFaxGkw61AQ@3Izع0u#$hR: '9BaƆ8ڳh(N9=`2q֦ލ"$} K,[X7Ķ8WUG,p:<j&jǛ1ڹڢw)U/AQƣaC=#l_UۓW$j4揍ǿmhX$9=ҵt'qBחpTaA7ɕc% $UvR"ێ*NsqTw=+E#ymw NuBt5t!x`t5B]6wrGSYUۻ SRӅy42NQzSn>s۳9vKm$zӭЍzVD( ǹ;Vjݹ<8b(̠TR19pe-{ S 3b'Z_/8'ޠ&X|lQpXvT gw2_7a8rHI^ +) K*)2 xϧnEsI֣D": F{.FABpc˩3ЎԖ`# %ʹQ_mM]epIzVFǭWҴ28 cϵEiA ڡ9OAww BbPOV#$kxfL215" 5FǰcW,#H-t㢓Vcۼlrl$ɜQnuǚòtt}*ڴ%GA{qD )隯u?z.jXH$l nY9HrԌ!*͛+4'x㱭] XXX.=CJ$ 8șBtb.1ҟ:YQq{V,1qdd#Y [\DC=]>٢]ݬ$. Vb1!-0ⴣq=a1Oy6tR.OCɩcs8 ?JSL*$'9ne<{e'chsSAU# G\E' i![e?C [e8N~cKR Ak5 +89h@=:m9^0ұ5|*.0sV]>`GLB@QXyцm43*!Brj@(c)\J o=LѭQqLd-*9'ڣs-۲ѱYj 6޳6H% p gn&^tj:ZPXU0=Juy% ;hʶE%ۅy"+'*I")5<皔pDK^2{sޤۼqzt|Îޥ$@(RIa#L;RL$z@`{Uy3X.݁OV]ĻYI}i];Tu',5DcC'&1OfyU]ƜKǩcC=zT$R*l_zBvx֣1 DcAj5ȣ%IEql`"oTrFyRe?ʆ-ˑAsJrqQɟ=)\PFIr{U-ݱ,9 b7w$$CV3<*=yc3?LsA|Ǿ@gpSo[;IIx,9<ȹ#x5s!gA-'jLTkFƪ:%Q:EM~e9Ѯ~]zUp.viA$#eJH]r7>X(/#w\ZBeS`/!r@K0SSU-YKfaaԳd'rzy%v`dtv',W%Bِ@Q_!`e- >IBFyLwn VxEI;0e6֣rw0t#+P[,C\d`Db?3wj#Y"R7Î)D |3H!c||W2ZMm<0NKiL|Ul,,6 ~@ZKV8׆#USR6Ha^J7^$1O'mG\b̄߾V*i;e4\ArxU/ MBedÜ693) jm^z icr;"&p8~Փ̱(hѴ;n'=: oU#K?kY@>@8hKhX uv­#4VNGi^-d8"Ns 8:9Ғټn6sDoڔat-8bʫJH@$Uic" cKE0@jK4sGjKRI˞8=3R3N[@+ G A]Zj)Y $dsqPB$$C#'⤉ ?/8hy˟fYfNǎk'P~tЩ1V~@Ygjܴ0Fάj];Q:\*N}}JGTmݛ"Fp!09ע !Yw; Hl*TrZ5o-Lp `񻸨- ۃBB%Bs6+.+hRNxK`pSkhHGFw5##~u"8 }DZ;bl}Jsf,H@̗< X,Z\23Xb5S mLo>Jma+;BezyւK )n珖q=äk' Lki V{A&)}`:EvsWmuv_vx=hxEܠ!t#;g8ܣ44@ r\1P6z kX1P98U#p!jrOPAfld!Y1tQy6D+z3Lę673Vs݂rs8<*I RUIy6GE!uyV*|S;|P14\G&D=gF߸G**}M(ІVsm)")T]!W9chBvGN ;%XTV-ުVqΌNS^ e۔TP1LH0JGzH&iF 2dDŽx>gtvqe=k@IL(#R.\gu5Q"Ğu?6c<{XI)qH)6Vq8&=<"zP>5vW]LMZ M>iOCX㨭DS N[&B9Z2|ӓR4(*yyPBx\$~RۋвO!_ozw 2cɪYiI<,O M To2/.>K؈>laM* w0(Q}b),\T(G|Sr}qQU<#B/VchHv/X Җ(l֥$$`} wKW4;@rs?ҡ1wm9-P,1*y4ǹE=Y>UcG>H;;gq56սj)HqQ_ӧ֑7ʣI NeeUD kHݺ(DTŽX7,jI411@i/nd-oTlS9hp> "+i$c4 1fyl ?r7ÉC2,b[k?@U ]؝tj Aۻp8RBoZ%pO8Fzԑ[8VOjе Ӎ|=*彪Y3S¸yrM:UPrXӤIr IIn9cPś8y&w,dUvv2gi*!AQ) Yvd횛a P3Ի msL1񞿕UtV|?Vu̻IUٱ rOiD l zM'2?rǁI$7?տAH򈟦Myu9;z{]AW\gj c֫*rx5]PzTBBsVb¦vŅNJ+|KA3D,qiΑ_i r1KPL`H4qXִѠA$ӥd$ wmR]^,ULD:%Llf654jJw'­D`YRy1V"F94 :cMsnF"18>hp  ؊BW֢fgǝ@>%O#Ŕ ޲3PxPH3ս< Ae X.-ޒfl5v (?+cmhn8 J-QX3Ahg*.>ww%!k& :-<ew1Sٜ$sR3S|٘/>QLI BsؓB\_bhY#hTsNiUO9%e ÞH4䄀IrR \5f]>fmt)%fN gE7TVi>Ԏ329ګj"\*Z+M( sҧ[w<kFKLB`kU\秭NtķHJ)Xel֙tIB&SJL~BEE^}JSƫ\DbMjh076Ѥ[K%K?9 ;iN1$_xօ%їz7Ȫzpg921r)lo/xg=#]щÂ)L .Sz`y[;0$o%]Py&`!}( 1XWY߼F?Eq\8'SNRn:8[Ͻsu*#{psJQ܎)Ryjj~m]đ*x >\̼cR&ݞC寙XPJCYy(  }ZApinJnu"ʒ{Vs! Y7BPNiRޚc쬠|M,0б9Sm1hި:VgRʧE4.\CB";*b5V`R:G"js.jhـ[0 J%㊒yդD7*Ƨ|Cn /Բ$L6(H)ek=yrInM'$JR Rm Alm$zUnTSɼAQt*6;t͖˷҂f Av3RyX 1OAR}M:Ug 0VVBOڞ=*Y>Z4[S#T1 "fn) n1Y\r>EgʯjDmev:e"=bT0e*En$;tVbj~NTtU6bO5g`{Tڊ~ ST7}*2oNqYSO#4`FibQy r07{VΓ{}j{q_zV39Ks8Uw8P*}2pU;Id9\Viln#UȢ.AV.cD S𫗰=8`w!qVnU\jR,qX6m岰zY@j9O;Բբxvv>UKhNk8 >G˟E9 9=ŐrSxj)6 oOj9LJ ֧b0Py#;XL#W̜ὪF.%ڬ7qڡ xYHZ&e ;T" H.`tz1S$cӌfRRm4tϐr p7luHj_Ѻ1qJgr3*Fb"g'USbXSeX*`1I D ޔE@sވ?M}Y7/!G~:YM0x#d%GA4*@0z2 [Uv'rGSJ>QRHzi_ފÕSDf|w`2jAIk/>^6C;1vFRD#SI;κ+*G1@^I 08* HɿsMB ˲:и<bn|vHt1Vn`=Xw]kR썸>zWP_jpYF` MCU삙}g%e%|pq~}[P$)حV$!zU;5C$VAj# 6.mzPwy jͥ8t՛H7nf85ib *,kJ U۸ޒ{vᲄE&8]GmHgc# 9cjʎWyV?ZA }2YH~@@wU_l1=xHK;?[|ko $1sZ֑#i#3$zU[ƖMv7&G1ʲ{SHϸ p~lwpgUaU2r8I,s$=F*c*?~'X+M 8gXqݼOjK֊LsfCq8!Jo#19=tfjA61V(HAߟ'59#'5"GG54p QsRR `XV-Cg\眊P`+:*Yg]X񎂃p;ݪ955F9=7\Ex(d.9frwG-+2F0r0r3ޘ[vUrz{ՈNt9#[lXBd|էWO93c,V=l.'a;Z˹:RX+!~4I'"v9UIڧH¡,uJeyȊ z_pޒA:2e)lSRԃnp)5S`](SU.nC&% =OٵWS?Zxꑘr0mUĀc+EƸ,}+=!Llkɓi+ g&PVBʲ).zRR%VlΜn5$Q,ev'psS GT_CeZ&m%jD z۱|7N=1<7 g]S[Ijwwhe,`vq[XM弶fAX(cK"rNWK۵"ɓSP\@E"|8)'#u.#ߵ!ڥ81!nýSVNxe,KٟJwBSO%)M8^}KDoA'P@1֬-1HʽvBK2Q)'&@ w3& p@LO mR}ح"(Iۏ v$0 4d}~#+$`YiMvp8q,Ho 3iqE\1/搠)zGE!`(X=XVSSn@FṺ٦IRO\lQ+߄`w4b Gsza.$bS:?ZU$0v(л^Mj0r9$t_%׳@G Oqtbq'ס}6ޭzw_JGsU&Hr~]j1C8%'=Stq30̀j ̠#;X~g"BNӑ{TӐr#{TNGJQ\[^9Z䉝85^r%$BrҪ2x?vo!QOF8`/+K (sqSXy\oUh2S[6`pz"5gqD@R~iSn'V%_^QX3O;m˳p-/ &9YVwo.5twSy^-lc%W!B֣7RyH>P2kln[`֧a H\aWX0' km' NV$nP]^It Y@z⢚b>+PN k+p !$YNb = =ͱ)hfhPIQ$9`NzbC3Vo~lTp`]j{VUACO5=@pp ,3Ά6T/(>N{1A~4}Hܣ֣S$!n*:Pӳ\5#JGQ-HA+ן֥զu,Գ2;NO:!QkT/nqZ:R}gc~z~j$Ux1%ޕB/ZRKƪ[G>d圜 !ELT(|}*ۘB̪W\@crjW3 01T'A-B8l;dZ(-Ȏ)b y<+f5= I=j Hv $$m:+Jŀ,$2h["Q!}ۀ=Sg_,qRK4nqҖO*i%BF tCu42"P0[ Wh%I1Ҭr? .(;0d8uF rnpR0Lr q;v%`*FqMW8o-)#,Y8,$j S1?T23āiG $h1Q+; )!zPTnvӷ8% $<<K d,<硢$;VhHR@K-U/Pj ۅN݅F>^W$h(WΘ814 O*ە9%*VrIؒUPݨ$nRKiWFF~H;(6$$pz(m@$OJ]۶8P:Tf$g),)8OC'#<f!mg' i=[d[)dE6<q=MR睊5R]Fi.Ԧ2FldH% \Mfx%sM.!._zIO"\^@1ҙr@0i`ǹf8-[g t[Ӵ%q5ҭYX1q$ÓȩK0LWoe6H\鑚O Z2,  Y n"yWW,B#Ė9ǥUgUbYqP~B%Wײ4qF%su;5RgIQ#+ԖePoJ[ip3m:\ ýjQ 0W5jqaFj߻erK ߥ5$Da g4"FEM Z eoJ!rHer8Zc2FP7OQem96&,c:K$q5! #O.$mI㝫ȥgMiX8)H@'ןʠSp>UfD+ԛbfF9=8!sDO\v5lI)MX,b4Ebf-w1ÐbiU .Ap?{):`qH&;J#H g֥[FFs֥BHNi&U7LTI)ϔwtF|=j^Td0,I'7) $lgswc<sf]|WΫ'LO:.Tʫm K A$@$hZKu( ? k0?h%GBjܳ>2>r3gȏ+j1rT(OE\N;UMJX7vUd,3ryZ2vMebRϟ̈X[TsE28ƌ6?j{H>vb ?Ik<)cwcٗKpF2kF[]NF[Yg\1ݐ1V֚lp:V[1gg3sRGj孧5jۋlaGzqz#El6Z-ȍBB0"N\uCQs%-T ұDIRyG4)֥%? ΊC5s#o#4H=1MvGv8 b}p*hJP7je+#SK~ˁS4.ÁZ0 [!?J `9`jlB/f[FUsޭ<^U21VO*i'AIǘz ?sq?tU;vfS#b4_5RFt.pSUnp\E=Kk("PM-Td{RZ UR }OZZonnSʰ Swgi$`V%Rr0F+*,ڮ(V/ϵX >2wjp軻Rem*ŅY†sؼe$yK+ s){$\d[+)oʜzԑ^C3Wu.!&;SqdUjp k+߰[d%oiG7Rμw^UHU/3TgSlL%% Hɭ 1mϼ w$hLste>p4쪵,{m_2oEOWA}tPFp񭋽> _Ƶ`pHU;B|y8>YՏ4A561on u$~^55Lc!#X85X;Or!TV_O:͌"a:ٌUʇ5l>nUrBXa{U[UO˜b gb(%l/u;M;eicpdJh>US¦X*(n;G`UxUbXѠXu2 XzqդfGcRI?/ERIܱھ0Tp1ϜP{-N.3~c4[G4\`G彪wTLdGq5B c,>#J겷*aӭnu#\ 8@cZeuR BzZY[ZN=Ob3}sI_Ok(T@j OaPcUQDFsߏ5uS)*O)"8צM]v}kN!$Z/*3sP]4<I6y6oNHNMQզ_`Uu GڋEԮ3Po~cTL[YPUC̱d՘ CDvlhUZp©8V|+&P`{E܋nQ˹rXu RIbqL0rO4ݤi6BMhX-V ~f+bॖli#+F\oqQ[pï=jٯ]/ 5[kss @{dc$.y,nq7 +I)h|]B,}%S+W*@Co\MF12D/ڱv,Kk>df}{?@2kDq#(.F`?Z}F{N֜Q=MoEnPpy5"7)@"Q=*  M2[ǽ6IU;|pzbB)u8Xeؔ=xYEbXtZf>&8\vQ0+kPo Vܞ\XA7v#*f8>`UݱRú)fln'ǚ|Qe$Qupḩi8a֥~#Fk*Ss4~ZYWSFcT#8r[=(-iiEL0'W aLEl|cKfx/!?TXwv&vJw9qNN(dG.KsM3(A3=j܄ƘηY%~^barj؀pAp~n:suheV,08?37~f)i8 Mg7) (MS1 /I#6AAZCikHuj[i&;z-#,I~l\8aU$bO)% #xoJs2 gl!S4cYo2'5Z 9#qSZIqF\}MXtu99XvV~jYjucmB)m#E\#t#gɎ´jHXJo22 TB==5>v9g([n탨ȭm()h+9W֯#+zf3#TU@KոU3c%V4ɤl(^I !ǚ/ulBpUF8!Ă'.FFMVcFj3м!|FͶK8~,;X[ =ϛ5 :s0ݦ) ZҝʂǠmSM e$3I x=:ĞpC\pVeS*Gz6CGOjY@6*6#=6fXCQxS!~UZGwzT)#45Ԍ7yh9$ď3vLc5>J܃ =b_̌`mQֳ/2Yլ@ *}: Ag`h> 1d{1R89cZ"jTN\zVK 9oz@yg]]1̎*eGޮ[°Ĩ8Eah~b$ͭ ^qh-Ym@2jعES*3Le'ҫF&Ib,FSELI?RQ<8.b{32܊PY;uB: jGIZGZ5f@=x-iY4㊸챨Hm6prU :Q]\$9 i5۱{UZ$V zp\H3,c UEB>biѝSHŒ}sN#̝%!@ld/ҙI"G& '=)#nKIYW!~dO+JX ً]?֬C %~K=xoY[-PrHJvf{-ʖ$ 5.xH&v\nEtX̏̒WO 4sТ})NzzEʔ`T 5!@Ldf$/=Talt#+(ZQ۫7st[9QSvbrb?݁toi.HB"CވF0w~Qw?Jt<ۀyJlxv}I׊g Ū iT \f4T$n0YnVmeܼ(c5-. n~g pAڧ7IKS!|>R^HB~P96;}'`y_h~AitC#:*@<+j;XN8ִ-48F9$id0\}2x+dYXgұw,HFzR*\ ˿JW囩5j%Qϵe9#T/S6j͵}jKeG\rWԚuP2B?:~ tfW7$Ux!2cWtE 2j֞85`pUۚ5#Zr"VҩF\`&C~5A'oHq’bE(8!RU!Ey#pW8wU6W-[863άD=ݱ{c5yځ"1 /B d~Qh u3&/ 6Mkށ4 0V omI¨8ClQ$x@#] Mc+ʚe6r*l9#+K6FCGfĥEEkƑ?.3[ah* Ry;9&A#FOJ8Wt?6MOc{]QHfY LfsA?*)QڏB Ԛmd2TOUg\tHȪy1>E e֮L(rvj y9o-xvN;ӭo$F'`S&p1i6/EƽS+\2BpRYr'#d9'h$⯪X6CZOY彇]pm G2 S LKDy$g( MT^Mfxl*Etq"x4B>`FF+)Vkp8gXWKy7& Hx"IneWY=j+xW<(O8ўwmrgE4M)CJq:Y[Qʚdc(pa#'9cXi9XwnjkByLcwJc 0Q>•pb>J!ɌS^ī9x"b[ ZVVh/@5z'=@棼q0S:D`r*tF2* d$6jsgв3lمVf-{9~\St,N)4!$l*k9Hb sT bP=-Uy"xn}nߕY91'i'M^B RHV,t+'h!X8*MT]Β`!@7X5eܡ߽fڳr$J8ȍp4Q~P{d* ҫ;?!!jIi05Hd<< {(E.id_-F]:Ȼ{R$i$!M\!{ d&y>nQR9.yNf0*Ԇ݁0©fr8<ɌpI㊖$yrH ~M.2p@n9n(,1Ҩ9d%M%{$cA]/[ޒ%r^OsV3c 1Fj/Kd|ڑpB'{thOtgo>&߹ `xIff§zmS ZPll(=qYS#+Y! JIŸlG4G֩me_SZ 6(SWZ-ˈ~5.}wOzE3]7r_M]Ғܓ޶GL-K5N,}+6pҞrDvk#s?ŏR oN _(OANV ~sS;|gN,ʊE#Zd`;/ܡ9;k}ɟx?]F󚣬_*(zNHOX}`S4ۅ"sG Nvvr)srEj#Vău&#7|TP1#Vm#2+` @򴟘>D@ +9ǸP\CEK x'^8cC78zԖj bhIq;L")jk[g;#Rf$kUjy"S&8MYR"|{ԷWVUtګާ{|rzVTm2XK9',hw$mEWǔڽҗ\ a?0Ȥ֫ʧ8=j[8̩.wMyvli%f3g8`@;{) wXI7)z#LTGAuzAin'ˁYUc=jd#'Xjǜ,N+2R$\Ӗ#OJbn|"_/H8lE `j8Kh$޵h-eQ ִt[<4IՇ^ީdw|aAHdva]UKtҡ G;S $d"pVKe@ˎ<,*\S.YQQȝQX6a Q@cdňV|qRlJ0RN=MGo 7)R&.zJՏXk?UU@FWO18FxV(HXՇos r$̂)iu34󺴴l Wt6r3MC ;\ #F/= +W[#SGn.Tlkpv6M (7P}VOkw62>Z$QUm'0ATt *JGc늱pMQL>an/C:-@33EGID:zZfG Yjf|?T;7F_lITzy=5;8mM t8 Zb0p MApw((jb@Qs9p㢨 N }+T/7l ۞ i:X5HnSY85-WOᇷj6&ثX=Fsp/R(/"Cl(lVt+@  JxSM>.$ |ucOuBlVr)VPvOSW&`\q+WSCœ syHqqT8i_wV4ɞDarz ػ0rjfSmdPOfc@qUi0(ҚҔAՏEV$QQۚmm09Eb(/ҞHjy;Fz} }:(]QpX^^"ۛ=r8ǽXdXJ˷OZed#ZX $0`sOzƺYC9l, @zTvLKy(!_LTpyp5Ì#֑I,ycZEg~X*nt.F=}RCd' *HS.z w0S|PJs|ϥBhۨXֺ{4XcP8kv ب/bYpJEW]N!q` -9*7!7r hMrHkl~kT!O$UM0W#lt K'L9,cv=ɥ-9<5ByK͜4s$ y#*[0;5(h8 eSl{V[sXInX$]N6y7K\^Iu;ڰfyf|*ȣ4>LkRXD`}+̓tEP Ip>T,~x]TR@8JUt[E 9#ZzBK!FSZ:D{]![5)p})@=. B p Sq2sԁU'v|UYUPHZ[cqNnu*"zԤnݪOrzAKYdn]R™[I,HUh?N櫠Ha? j_Oz0c8AV)a?JzK G4gu܌"[Шw4:Ms3=ޤO_hՎIgdivfFaU~ՅYDdvn*o|lwgVNx@ ?Za(˳HSKTHp%@[GRؒ#}*h%S.=jTȞilAZ!uNVHv2 VsR\Gn2i7:U2F8i}I8*, FWC~<9 L~v6ٺۏҳ\-sJ.=+ /+nO1]:?-<;3}}F k [$ܤۛ$Ye4[.Nˆ?HU?p GzLׄ'W )\fKV#GWSZp8%*Ql c$ !V!}]2HoҲ7.l{? ,ǩ\TWY,J&ėϭYn`ެIzf$}=M-z 0$P۰ cЏJzǪƸQlc xDQ.Fʫ tӷp^s?(1H@9pԞMF>f}j0ǫUoǁ[zJaݫ_O_&٤n )ewͿnAM#UMJi- *-I,ITWe+;1\NOJI9sG$@ffYA=..|̄A S[eF:(5 Cʃ}&U m TK諚\*ˊ2fr+>6{ח.۾sr$)dV"]&@5O̯T[Z.9ke]EsFޒ3qHժ0Ojݑ>V6GJhmU8QԕԝzJ/ѥU`VS+q pT͏UWX^,wa4u/˳JEǼՋΟIg[lgqG9cU攐KsjYIRZuk3_Z vRcjJUK0j{|ga}MhkW o@sSEfp* |FwK|fmQ򯸪6{yUSOzfꙓ;@%OM./rAqU==jڒqe'9;r6ɘu8wF =p8~sR9P9r tI@j[I2)5 sy IɁv|, d@pph%;lWt 1+qUNݣ Q8,,&* }WMٿ˰/ O˜ɲ>erH?a/U#׵-) 0h9%rԞjS2S@=]dOGu\ :ĂIqEYTB0qy % j5s2Z+|A=\Eg#>b_hٛwηVꭅ¬]ޛ4hB=jX 4=SK6# qi@^U!"ZCkh Z7O\@qD 9XqO Ep+&$iu'b+QksXak}[ jf))*8Tr' 1u'H`# CLe$ ǽHya.6Tv94pfQ&"@$IY" &[>4 'd[=1ڤwMRGj]1 'R1K"M8Z\(bsF~D.?tfw7}}آ _JқFIv4; |?sU>\%>0@*=7HHoަ1XZgH 'sT{g5\8~n 'jl*\gAǵC r棆p9 od!@ZWI:,l0jo"?Zl1>nzmWcΡ&PapiFz)6޴G=*֪djէA-O7[6IGWDq"ozj`1UmbVe@\})dT8bhQ G.Y. R1P2?Z N\7G"i%e;p*6ޜS&GS4L3 ZpUp[=OKi օvˮ1Wm?P>Pimeb&i7(dܣxb"]f=}AQ.K3ʢB<%8020[]˄q*_T}j;A ޡgYdUE+(Au|jKo8Qњ!O.Հ8g{Rƞ]V17WyPtC+8 xe`cc4i%Xg828YDknա+{F w>XY kKhUr&FFަx5N[.]/vR.[(sX_w, pM fgLٙw)Hevd=UF؀:boAa -i(`UEY-X0#O3徕)qm>D۟&XcRM$5%vQ)V`zUxS :m!@Ǒڹwն\R+"dMEBtR6#޺vuaS feX?l푷NH6GVݭB3Ҵg- UifRe\\[[@8qYC^LCsqIcgi[<;ogp#0*繭{֭6GF:Pm%uU\n:3{d\DNs?s}yD28a]lЗ?-mi 'jK¬cvb$ ܰ{Tz"&ڱhc!fo A>$V:$nOu6-QVlq'j` VIH йA%rKə 3)CS3Zp"y?1t=f$u#_j!2Mi`_: z"ӥ8gG,zJorǒ}*>O 95{yTbF3ޘA䁊HѮ3#Q3Z2H.N3WY4oIֺu{dV.}*"tɜ8L19fcw-T%ćҡɑSӢTLت.7Pڛ+CUT5j 3ʺ)>H$ ] `BiE g!ڱ$ǽe,rR¤g5-āmSoKpA*yԖ s~n Nϵ\a7XjĥH ]h]d'>v)RjL7ɮzQm0u^k ]Ry'XH[Xԍr@tvU\m"14GJV+7n`nCnE#Y7X Mٵ n#CNO67]Aҩا~Xʱ4Y{5 XQqAwWwKe) G K qu,1Im''8ښ@1~UbLy--J*8jn ,{zUQczv坘^.: .,İP C*EmU vV*qwG=}y9d'5t17d{T{eM[ٷ9'nqW#+Ym#eQ\R9<UUPNCs2؀xAc$rąNOy2W.cLnq(TE=VC@k#~֥mG#n+FԾGƯ[yћ3H?ҭj3WuyWryd/E9faU9bGnyjr>L"NXi9-Ub ']L%E'k~8BtTqt<Uwp:T fg"rZȆpD/33lj"826sWp<7ssWbaNuX:V 06;WeZs)\f7?Zfr3ʪ|Xwc~a`/k"=yST58 FƳ+V3V~,rJ+7$jut,Q"!A&pvdýC4'4<R&9G R*Er۽:$3JFMI,pE8UOsx Fvqzkp$*Lg֎sVc F;re}xp(ҭB R)AT l+SXeGrqYqғ1Hqd<0&)&Oq@ aSLm.95#`G$RHF4, Kd.ޤ0(?UV*{H~G'8ƒT J,})-c{i6s-m<8.* 'U/p_ZB`Pizzl-R#==G|3!̗3~7q/jYf aս*Yg[qII(Fh6}Og`sSYEzcQg3iۯZR7,k^*iD ["bZ+r&< 㰨Z7#SU^a#/^& .?Z.o+hqӽYUG<涴RqrMhD~IM[AOAQRAb&h t`A굔k[v?0mwmdDKuݴnJs)qjR}׌ʯ{ xT@g2т3銎I馑R~fy\WT6^j嘳hfU3g4a1/ udlr\չ1Cpm89e[bU8PY=N چe~BH$u6D68["vszjTG2rT|VfHP|U Qc*)!|}75$LmmLRFEVwƋVf+5 yH"o+Gm +Z!tL0sH1N-ʶc- a=\2isE ;|1|x/ŅUeK_բZ`bHZ~[6m~1rT\Tmlub0*6`I),GF|Q2 =khZ8s=+OOkXTon ;o'ח?fIAdL(A|8*ѷiۚӅϜ\g$QC g9ji$sWdT#?{EYԌ)( qR]DWj t޳ OOMm& P om=SnXASqB@gb!F`p)?QȨUK3MTYrj)lfOd.YC[TRZ}@ ݾ haIǩ?ʤL1s=ԑXl1P gF~vjeUVB$J9TBr )JrYx,$Je>QJ;cIM8SM ۏ iQ}* G֒i*I(2<RNw.ކ A?֩4`wTde\U_-b)HkkM0FkB6{;Ӷ¤s6XH9#N l\(#9R"qc$Q_ݑ{G.pk*/W8Ϡt2O9hT[#P ~/vJ}E3i2=~ޢB~z8ִ݀ ˿_Zѵ VHӊ|AheH۷#YXy;[)&ǀ?6@AϰEx!86Ir@2gXwTSdd3 TWڊژ6m(stОD~I?0no?0j*;Hղ:C*hĎsQŋ%~rߥT"Ò2a`ElYTP# 5nFu剁lXڕl);x}v\TIֳce`jR,*[ X7JڒI$jϼ8U٤WpS>8U#U$Q'7[5};g?ʫݻ$vG]Һy,(?6}`[Y#·q'ej̿Zٳ 8l2?+:mq[<3`GFéZtvwq "=j5bԻ[m#cp}E$)-H }L@xa5 h\޵ކ.#9<ü]SNj[O2FA 2zUs:kPs*ްAmZܴ- es(PYN[n{>sb)6pA4F$r0jC\r*Œ-#甒I+sD cv9$ZdA`2KV+FяZkT4{vA\5Xs\\ni7 jker֘I_.}}A@;~1U[);c'z YE?[`65'R͕3 h !UOpYeiUTWv UfW!ީ.u98"Yػҷ0ZcAZ6+nU5¬6TӁ<d-߰OzijM{{ʅqU:}dvޗ8E<:|fI:վѮЀ[XG9ҺW`1 Ȼ|J>G ϵ2C*?ZB?Z{Ud&؆F{Vplfŋlc#"JA'ҲVvXc&^ȰU"$J7i#|3έ5au8v=I1yr$^0{ذǵv=蹀brjJ|ery#+fVq.7qT'kAdgO\TF6 mdpI㨦qZ#(?ֵu8:jDr8+WV`K 9H+r˜8˰I.:~=i9$4٧YR3PtQꢉa"O-oEQF-<Lo!15%T 8i~l-棓61=+.Nl=*iۅb:յIJ4r@:ֲn'EGVtO$ R[ݖSFz/Q"gOl葖3S:,ʻ~R`UȣUhP61%ƒt)SX|–Zf5R\ j^N6ޯ\J F͎IFՀ:s6RM#M)c ld~!TS)$ z|]ɁݧU>'5r?.T-If?Ur~BLI1˒O8wN%mq'.Ϻ([.L;U_zS g$ֳIT 5 vb%b9aP:Oڲac/NQJ3j€z5Ң \ EMm^ugMMbVB_0V57T9\XVJNӎke `%Wm1lY["}Em|R1ӵk 7 7ާnT6iM>6nn;Q+dg ~|S VxUzVӣXPXq֦+5U@ =jy;1 XwfvqY7Fc'T~~JWSFK";+ב`pX0"nϯjbDZzjRQE4cv^){U]1I8{i5ZkW~fZ$GpZ5M]ԛ{|–xYWzmha³wnP7cq3]TmImms>ҁEM* *`R=(8ֶD 5,f 01Q[ onU-fˍ7֠%)L8UCjWRʎUBKŘ@ ޵qg+#<=k0Ҍ3Jʔ t_s}ս2Μ4"V}`/4bN>y3j7b~UC{u {l]Ȗ:n GhHxQT]fi ndci,YU,B_kF6r2IqɁ$StOvH'?ZJR7SXˋO/jFrwU"تZڗAQ{U=lfU8a3L Xa2K9R<Vc37Y[vS\_*UpAo_Z%!?Ɵ5b<0jke Vysko,I⠞Ghʒ@!1{TrcnFԚŲP8 8\Iښ1onTzsZr?R/yc0xk9$ҕc[T̲0x5?<CVJEl\,uJ D\4L3JVo=;ųFF}+Lg+O *@,eRp@)iSyz y$uZC=x)d[O^*6gAă ThBX8 2ż8cTQ{guIWs_ ?_Ud/B֬ i#ӤrVE1"S#:ʀpxe]5.&Q5{ċ) G8a5ZLT]۫9?η:lCƊ,juUlZW Ub҅Y7ȷr1i>+⠴o2}њ8عUn̎t(MnV=_"5nbBsjb[nx-j&YG{tSީwX G/$s+>sJ -ʩWӴpPI& 3đUs}k2F`ZVRZ4[*T_O֛`g I:X:ջi_9Z<" l8#~5 ɋ6^f6ە-k$54 JM7O@՘Nۉc<(;W.#<*OzU:rU`IYF%;T8bB?{<Pj Jw[# f?+ Vqyl-V5M.&&t!1K}a(H4Gxl-а(9 +96^A)0QXgpj_-xe qVןu8Pۏ*YsȂL-~2!L1Mc=q8jI+&O+SD?{*hFdzVՂu5Þc'lG"q}i5[i F#^ocjMpd]Stq*F%[$ ( EA( zUL}<1]&4IBkz azmU-!P= SEӰk-? iRBUub$/CQFŜc5j@jFdu5jjMLIZN+FXRy~"Pȸ>V`#x*)IWPzuˬO> B:g]5#[F;f5iu8<ا_$'|zeVOCYC!OjMg*Z5ips{U뻳5[Zg*I'w>lXG5 MB`ֲwx);@ddlg8Bv]K`,lF>75QMoJqE/<սJC "e'j!Ah˸C.?ݦi 2Stѕ*%ӕIv^5AG5JE"Vq4ef8GPX* 2B-"pp~jwH:{VVK1c;Ok98t9d10aVf+S i8dZ": ɭRB-t6bYQW̓ˑ~YT*-=C/VvI;W+M0nJ5WʚQ7~K~Y|1Ƙ\_=qQn¡ i4(doq*o 8v|λh!bҴt2<{@'%{Upޕp(0L!b0+=tP+<=+&tc#0ʉcfqDj,9 Z1& NI>ϦDmHPpd"GepdZ[tJ鑊X@ N NHb@IT\Iq&~j~-WEggZ~O$]m*Yb-ޫHKsX,\nq9v}L?*}dE.kq7 u(6ẆHy5 &C'(n<֒ĎSd0.J5& fr$9f]L.Xҩ c[ ުXJ\8^Шrǎh Ip`iH &}o=M6吣H@jG&'W,7GzM<綷S 8%m@5(CPV!)I X#l>Kg#K+iG!I^fn3sarFKV;NM+ 43pGXixivR|'ΣaXT3=HeXtqS9`H9Q\̪wt$vA0q2%kT1i.d,fsTw72Kq#=H xV0{*5pė٭:/*%auZ`EԻG\zԀz}Lt)?@5 ֘T?b:- !+>Ȅn~o? $o_ \cnE]qE!6֥<ǽs8'M9#OjKLwAAI߅8s, I nZ`RFcI3°5=$9<Ջ]wkԓI&{%c좝$u^)l#T"ăj}Cx,``/|-˨H͞lbo>]%֑}r~y>\ t2|/˻n+(GZC叔T nwޠ2ҍz}iJe'#S8V^=)Įr+S^fK&mF';w{W2 X99">mR1޶7z\h\ *~k!A>ޛp@}̭:T *G|k29J2[ҳB>`jy2yq1VkY;b\1A(;Eh8ɃF GaƼ)ՋDد),z+oBʶr>+SJ˷yO;$}ޢԵ$aLh 2Z)# uG"юxe|sF:r[S?z$ t fto,-(<ȿ´4D6oƣysڹ%Fef?ҙi( , rXa [늧*+Q޻a$jq]"P}QoxkH'>#p/nOvZgiR8^cY t'#RS sA#= /њ! xbz;V+nE~kE~2kNj>AG[W]ӱc ~%#vgٱb3j$]-;qݨ`|n )<Զt{|?Z/=sZȖsӠ.{Zn-NÜ79Z,'$rHP:Z[I# +9jdS#ވxu&a3} #O{x=Y:2H]q#gJ<^mn&x>ƹMqȧBB\~O֦XnYH2~m>Qέ~j |oL(=CK4ֶQF?U!;Oe X1 Y2"jH3#qЊ?7QTS8=zdkH Lmbx1Zb`)[$%OMk-v>XqҫkgB}bj P|B-}k6$_!ؐ1TcA(9(P1 sڬ# XalzֽLhY|7֭Y٦|NF*ywms>Jew"EDɰ0=SPNO#IZ??MͰCՖ;Fi+UYGX ߩAe -Ұ;1ޤ2W n+fQ;pެ djI,wpd6z qh$ǔ=ޱuЮ}ErDVf H'{{~k*L2FT.~?δ<<5AYO#v%C"+kR3!#+N?:DVlM5qW'ˏC33y 0vZ\QH@jC^#*Sx8Si|뮁vv?S̸`c(v#],=j9b{2|m1B"5n3"jM%ǒgRfBN)-0dzz4&K!(Ie(N!X {R c13P Q(+tP9҅~ϥ‹5~!DZY"Vw )ڝ 81[Pzg*ŎSreh@~NV r2 DO4`pYI ֡Xa*㚾V8'/z0&)Fz{dS4Oީ7IR,xo5n;{K<zT<3.8'P lnW_[}"n324Ʋq#0}*deH81S" R?#&! I{xާDoҟo]>qS)AD8IkXm8ե%q qI8]z2b ~;@jL#?5dwQ pjfTXz!38TйPCj1:fLT|儰j.\H&BҒ=H܍٩c"xq#=R&iQgYe#k[ʷ t"*Vzۚ!ޤ: &PQ}<獿wEb<K{$2Rf7(JOՇ<88*ɞfpT6wE7.:Ik0̠}M6\D!%Ux̌;Z-V9P=UmN7vW#|QYۢKJ( e E6C/L桹ޝEArAҒۛUQk0:^vu6}jNIFOEs~z#B^2`u'֩ę|u5$Z<h=C cxcM8 (dR>+Z;9^EhE*`Nw4FXKb2!PZ,/b7T,m̲KuN=Q@ɩ(HQޛ#DQ!ZKս1L©>cJөf' WW!oBIVfEjk {V@jVxð?ΧU zRMsEMf8H֦spOR1Qyx0?֍QNqM/MOʭYIH# z١?Z$O $qP]#̳#Gn9VK)Tc%D'ku֚č`S<_yzު3C"·8&FdYWa郋e" ZȚ9 *Kwkf s>J;p 1qR$[. };Ԑ*Ȑ ~UHi M0ܭ524oM Xyqq 44۾UQDwAI?>sNG= >гJ eDj>v=XֆnUbWc'0;ɢG{w9yP0G2u;lT2r:Q{Ur/^N l ɁE<9*|Yޞz}O Oă 4  t~Rr$F8zߒU;uv[%H3UXbkBQ[,8-tbdG,;"Ӓcc=䃞M]Le8>Yc>*YRaqOAxY&mIhB8s)~QrI޴tzW޽?55OWQW:xVu;mJ c(>\@F íg^[:JH-puJ8][$c5 *ߜWE6ءU9; ԹE;uUې!2~f> 0Q# =m6iS le@9+Ӣ0@,3ڭPmqp\u\BYXo~yOO:׆ARͰF 6_V Ur $XfwgsYFgy0 f8ݼWhWKdg\.:/sZVN[͘c}jixVL50OOt ?*,1Fkx#UPJΚ@ 8[=1ޥRE!KޥXH03ӥXY[Ks*}+IeE4ISӮϥ'h&A6 "m_sP 1Qٖ6ûd~5ktv!i VGhV59zB1G恢T1_0} ,R#)#5VZ e8ɨa2۬2fb\<1kR& {tp͌; X# i"M"Z2S$2wl9@_VCyv(6PgA" UVުԿjR]Aj]y+E?L~n(Dri kU XdKa:ݎAcZ ,$=*9 98P*;zgu((=xOz~5~2ǽ[^8U=_.EɒUTs̿RL&,hz B!ҡ_ujm*'ީY":a$oY>T۬θGb1ڳLnp |Of2>R9,.rjӈ0u =Faol? q82:;+ {v =+"k&ۇ{u2 κ $}9 lfT/qZM_ 5@n{"~BIk`*&Q1򦘈K*DL2>\Տ'qR{U&8@G1~N#?%C6EVPc_-cU=(bKxRCӞJ#X`?*qNsS,Hw }N52㓑T.F)r~V1Ucr ncdUI\.:r=} \jP\?0,.j6oz4$lcj-GPH[>FL'jO;?;Q`\Q{s5B _)59[VړmK_x5XH=zG-pZbO=RKGjҲ  ^Ư[۵KIVݑЯgUed# ͉!sJקְ2:~ur2aٲބvZVe0ýhBe!ٲsQB{2gnOjȧSDTPfpݯWd;c nܰKrfTzӘa yǙڀn&2:T R>R6\Tr+}S $xoWFYrd~L`9ZJd~aG֝pʎrKp\S$0nlYX-(J*tS`ՙjRt匇xYjځy؈cZKd # ;Q2b\ kS!|P9ΪΛK9\JK9SҢ:zT@84r0#pz-coLSXq$K7RIJ~$2HzMInt4*\vI) %=@R1Ӕ<`L%9#)H{$FHɿ05J6ʞ.4SOzKy9yOojA':TϥH`4v) cj7%{Sz܍[.Ek$2:qkYCaڬ*3ZS>vBG qU,юYsym2\͙@Z˰K@ V <Ch\'o=2Yvs$Ti\因Yy1a-rfqӠ6"e20S6㑀W80stdR.>ZдD`Y2:9vSvTdn 2_Ԛ˚2p:zkg%[[R~E7PVQwR^K#/cVUQP!#9UPPi!,F1Zm)ǮjV})|n|T@| (x- ý=F9IB:rjc֠@zuqU&%) DosLH9FEic"H7QQ eI⥙wHJ[2>–fu K8"s^.u#֡.DsYJMDS#63Qv9Cd֊Y-ަьjv5&F[$9kI:WC>;q,Lp3Xzv3Ypl!R塌o,?]"0ծb l*&{ g>Jn 8\ګX 欐67]|AZ-R ?zrw+gN+&F1[I8#ۚv( n]|S^H b0T'ZաO/i| g,E`8 :2w2vN=xGpӷTE8FHBASۊhR r="dHM(>A4WR Jࢗ9V%"#9튯w78Q¢~Ni:S,bY& Ց}ݸ[ȩ-~u!Uw^KsYe{׊({W@FXP$o6m$ҿ\q;[aHgn5р9BQT, f ,:-lZ[yVʥ ZerpʼSmJet,L`Gt<^PAuy-ʕqu$_jō,~l>񭿟2wtI . *ݣ$Wb f(0y#g].pRu#6:wvЛ!"b[^`o%̈́+Sq. BrkEb1q(*akLNރ]vf훹ޱ^BwlsY; x% }MQ)riY~yN:sJ. Հ|!S@/OZKP)gL.j9`l ʖrRx'X# {urH *°rJ>| O#|qRڡ*KT;Kv֧ ӽ,xYJ©Il(=rzT{z.y݊s))凯5 VrPvԖt=kBF?Z g}+>pUY9K԰M=+i}RC$eAOI)/R8buMlV&A%͸}.dG}y*#3zҕ?D@c%goMYmM'|mp[R<,yfi,V/ɪ3yэ)޲K  P3 0)F<X? XyҟH'4ט/v*V#0E"YϗB 䊎ܤdf3U-Cpdf5Z܈.ǓVldQԫ|}n:|7,y^JF b)Q*Hpp  j#fJdgAU&rO!*͍F+-9w4 72p1ޙ8Gۦ ٘rL'xilf W r lGj[HWPX9)P*UYAU8`88Ɨ1SIL2'eU@SPʯz#p`OYU<@{8Sa@jkt) U ['N) W`9=jWc lg*!8xd?ݫL.:2gzDf$*H$(i"!' u@ݛ|uj9 0N{ < ڈb:#;36IA1MǽU˹>[oKzUp+I^IkDr9+>p35`3SYUg~nhv]-< n NVHf~V)>14N$` bQj0>*76qRyF;V+r6G15$*2sޯHc8u;Si.m\r}kfT[>5Oִ뚴I)xJ&sZ1B}1SUۉ6ŷ UQ'h֠-̋z,ZUU㊫M5rȬz$ ¨jc& DqK!Ȉ8Sa!_'"Wo00,Yׯfg˵em:*9jֳ"l=nLD chGqWBPqWIF7 ~Xx\sW|pajKKMi+ Icm~9˩3n}!yW1ɸ| !L}pР 5o$=z{U1pCt*U]7u%BdVeu T S3B>dU^O&{@4`;-KiƦy4n=gzRp1O8y!W]WPA֭ Gs*|L/5:HccjԄ?81`>q+^R Er6-ED6ql?uRyVVv|tv_{W  $clYږ)po*1d7M6)Nsҝzm_b1jϩaRq53\P3^qk˔%cg2yQե"Jݹ1 ki*2 !h.c8aޞwbEX}^71)\EH{ǩRFTֲf7P>_ȣWVD;\1Pz/VYƇ1QK18$,"SԜCzQEUAAp@ԃ_ި}K!D6RݤA[Ks/VR`Fӂ+8. # wd`Gđϧj6(? #F>b0k91\iMI 5XVRJ!AHSO*qcEE=Ա('`G6&<3jfB@N{V,td"mB2kH&c 5[eCWۚxH  J.3GIԪKE\`nj \Bs֡O5b)Ea֦Gb>XWa'":ޑNW#4`մX\RSc8ءhOZZjCI<i$*F8]Ro>;uoRG"p<晬Tg oO֣ #U71T!3AU2n"P߅t66Fp+b @jxm2ɜnx!89L\纃IDsNHZD|F.K\ghn>[^w*w**Ls")\ʤp@56tWifX\=1ZQe!I`?ƴ.M:)h@=eCswrw|ҹͨN!ϑg7ߌU/BQce1j o]x nSA ~eg^P%l3o58*;H֩_yS# Aӯ8$c֢6ҡQة&Aq1y#9<=\4aK,'@xdW\rKnL!U5T9qPgw$1a<ԍ;G(:e r6}!"@MfML#Ur%v9Cd#ʑ{Ժ̞|k8Qo25WGbybyQhlwtsޮsV K`b3JI.kP\cQ{W$nU h%mr+M ;U;7$x;=V&f!\Ӣq]GzDR`lR3VHkH.\B@>*iiij HC{ FyMy${Uk8fUa&̂b{ ¸a`vk&uTM=dO?0= 9a@ާ,bXIhltriG w"sf E$桝8<sm˒EҪKߘ Metd g-_ IImG[* R 2VnmJAVQW&TJh3_ba-(dpj k0Op3NNM~lsjKImWawt7E>dc8 m^LDɒp9ʌdxQ|=qIq#BA)mG}"rшu1❟?1l}xh qgZp8s5@ H\0)a#5A JE:(v6ӁNRNۊS2v}Ќ=*@їD:iw!l&r:ӚE.u[+;.ը-Q\CV |14ll62 Xՠھ5UȼRB|_m@W(y"CU۬mU BUYƋ7 l0waiQa#݅4y8%HyiB'%,-%NȐf9*wci /8$[ʷP."sVS!tYO-ǝ(Vf?* $#̓iIX zc5-[|p=a䳑1W+j{b# ^\"116)تC3,/M ёԚk!f2r?hE0j3(i2ުWJ H˅'S"r1]\֙m W $c@X'͌`V@l05ubKiA.65V9aבLgcMپNf gDsz`9lJ Y75 }sUmԺ *[6qN̂LERȜ㲚o0㰪ֹXԃqTij+gGc [jo\mPjܥR"1 Z&"qګؕfum9*Ļ&{M*/# ?T@m*nAjWhBuR+lT9+~68\qҪے sZ1Ir7nn<r?;Y-m¢t.'$` (?qu`b`*3ژsi[yW ʆr5^'̾uhrMXH 7uZP5v( Mp*b%5pZې7u[dw5}pȀǏ9NLe21XRo%.ݪCȇL/#޶l5dqj H86A`z6Xc6_ UY Hw7͊FPVI$?wT;:J#ax;_H.HNVԮ|r>j|Ҝ,$W\jlB9AOjcѯee"~94XNAfNcy.$t\1dpE3Z%oA?tG[EF ݺb [NnޔF$+b6UXgS`TZcb3@F9 IY(f"M'3a08bً<N+2,p&"H:gp{tK:tr Ip9|C?9>"9n? o’;+~,~Yvb%f^V`/~ә>>SLs*+ 閧7v?>jqɧ#|ih)QOYCc~XwFSMQd`! wPVdP$U r7HpqǽR1rE F^{k,uS,0AqS#8|5P%*?7$9UuFr~ (8#A8FzcSJ8B#X]+ѷ3sUwh.n>Pr}j5'қ ,rHJ jif1x:Iv5.)BR-sۼd =fI t n5 $qf [c^}cAf. sW6T6&ѻ#Ib= "MU '<~5^au5glf%O?:8 8¦90Jx'5 9QU&PHiUmH Z&*Npi>Lп$9%*IA8ï޺8#L`2kr#p zܶHAYԅZ/(7zV@//aGUrҠXYxݲ?:ҬlfR{TcegA:rq1*U_T@rkT(Ytd9m ʳ7kߍwZҺx{IeuvªX6:dʮESɴIv9(I#׼oh#zq" ɒ8"C0{ᑳ. '&%$ɂUIt,%cOpN=j]PmHS${A[U%`&/_zdl Ͻ2F_[%7zqҡۘz au⠸;T) xBME!& :y=EPܟbPx7E G2&8zU W"v?1γ.v(LyuSs90Ǩ5Z ֙oiC#֛d0n­^7a/皞JČ6ǽM6"G=φY$UGV֪~xsET'UP:jm 3Nm8l~л Յ2R.#:LInQ@ǚ6FF@~u\1?P 1.EC敗n"!Oʹ;O9S C=نTmq3TR[(Slč]R+N'dG޵-n/cq)%XSqGtA埯ҪmNZNOҠdXAҫIlШ*nwJW  Ọǚe!bV<NJkfB~@JEpl!#'b}jsJv7.1ZIdbsUa~prI'uhUWb8b-]g qhz{<2ۆ F#|p g\.APڬޢXpECc]+ۣgH횵 @A]x8⡙d`mQ2F8ZdL}H%_98d&xtဦsڛ[r; dQ/c+/$RΙPGҟp@G^1#8 F~iob26iyTɲ,3MvQ^,jKU$U9qrj(P8 (@q *[y]#etr0BJ|N?Im39`O̜Ԑ'"rAje X|HJޤYA|Z|?gK)6ni2*Er[VV˱Ej+\vV7tdհ͟V|^ws7&ӵ`\ &pMYR<$Cn}$N#z5R#r2jISyw]:&ɮ {gѲk3P'2dɂ泥6{1m6n+CGSÌfU5Gy&TeOZ~ZYv2;Y۰i$|+7Kjm"~0*ԁcOVSʴu)eNU%[=8J%spڔĶ?rsZ^xY&Bmx\Uu \"1}9Q ~ՙffVҙʰ9֧ ԪJMD/ Iy JȞ8mw4tsTvi? T|=$!U/r)BTt4y^ƦRQ"v6FA"jFϡv;inWݲx"I|TRr OZVZ|HHXn1?uSqέ?dέ;zQsTa UB7rp +տqaB[˵Q` ;L:`X+=8#yzonFk[3{ ڵO*(jI(vR5e:gI -S y (hi,Eޭ#ax;bjpAvSt56Uvpj_|Wbw,Wo03֧9;=fAWgR6 qϥSF0K dY*ݍ[c6 a3(B֩JŮ˝ӲZG*3Tvq̀ՆkKHA"s & f'P x5$2Xc>hݚf3yA2VHXeo5q4.X9XI)Q =.hR'9U4"9_hQ JXPDAr=钢YGqQHTzSV({Њv:sK;Hj߽?rǀ iHH`6wO  08E@;Q8"NHШ^]Ѥ*]F5$)ڦb~۠Uj3G%92nSS"5q2OLUdW!fE< |*eӕ^Vاқ /<00p~ȠiTn<՛/$vF}kWW5xK@ ֞DXڃ 3FN3YMJ̇eI)i /@x7!0ILj 07KKÜXe>`"ơ\)ZyCrx swoBTw'0fPA'OwUwe$ M!yvݑϥUYطgQ\F< .oza؟Oƣނ5!FG_JiD!z4֎d#%~աkKFB8Zzl.FZ6¶xkhdhl~+wr iW*s nҝ=KEQKEQE%REQ\-A2irz1OUnc0⡝NbكF08mʩ铊ܛsӰBqީvcU;&dj@3T&cS[!gUsSWf cާZc+P"TJiuT>Z4墨PijvZ)mFO\9w#h(fmtB O$WՓ"CUiRASޯ}Y#g1խ6aprvY^TxB/`\)wˑaΏk|8*IZʦ cNW=օZf(=^ +O)ڣ˱spDPW=9Nw8-Ie"<qM!4P*hUb fX>HNaP02ic˳`b9@;)ǓUUk`Lҭq%Q7i9ocfwQ5#ʜQy`*u0B'\ <{$y`ֵa8 ~U \S/UNsڡ`{GD.EKk,M7gR@ڑ,c iڍb]FaPs[h\,@AUk 0i"ZD0 <I$Dn8'hX+ˬc<$?AQMws"w$|^ vU=>m.)3qvMeMgˍ[H#2LSYNE' ;R0*!*u)LTauLcml;Z!#1ֈ>LHO9eH }i'BrJFA<3sMo2ECy xjgI\psǽC)GJ$ fQKCF\Ҥ ~ g2t c 'J |PO'Njj o"FA#֠cOUYqcڭZ_,Qjh/4eaօCm쑀6zԱV3i\Cqb`y1rm],G#TS7 Dlب%7=XМnjDzdSAb:RI@RqiyAV C0jir8PXUr .pt4ـV䎆+sŀ,CvqxLwS֔`zhi3Vf`1q[%棻6m{V3JbqW(((!'='W[dqSEҥ=ຌb8Ա*hԠbzΉl;eԱx˜?K= 2h@ /&Y^:b@fy'b}dڑ=*g}8$, sWaKb9lrjfIw86W6xQKip!whGB)rGOcڬfة'b!6Lab'gj=.-׮P\B ڄr@4$<}:TIY`ePG33nRw>QJx^R?WH0qtQOj*0(,T7@.UI 8=)8lue6MYӕFt<jhqXO\*6R}}kF+B)h(+2Tʸ5R[łA WWrcj'T>z2l8'қ.ӌ篥1#1 &61 Qd@Smя'I3es󤉚`jHȗ|ڝD8i0JXÂm 9 i\AS._M1yeoJʏyUI_$yZw=p*[w18flE>&U%Tsg'#cw-VBrHL㟖j $xQ?eU% |Z4-NvM:{"U-?J۷ X'}E{֥p T{ŵ@!sի fvRzV^a,\[ܣfj/)I_>?QIh{u^;˘Vo *:X`ҟX9s#ON~<wO 0Q'bKs D0KjwXqEn `@bNj^9Mi\aUf4cw3'itD'nsU# Bh9[ gG+pq]tPǑwZhemg `Uf)h)h("S-$ \I+5펕fi7Bz>Q[F*ĭV둊؟4GTQd_SQÁ=Mia W6O*E\!@U+"ÀiX{~*Ą n@0;*uwl*W#6}QQX\=QCr P۝)A[bHf'#M?Z"+ ܸe Wq'ҭbޢ02GZHP]FR*ɮNd7EVǶFPW(U1SRKEQE%QEt .^3=k'ĖMsb4r~ #qeo\quG9L&vA> 5Ԏ6Dr*{+v򿨭FVFZ<Ș =֡ ,lA=抳_FAeP:(BAN(Z((O\.e?ZHУA'**"3f5hG5VLnLvGSĢs7LBb߿]_j,@Y-Dƌ qT+(\ڪVsI a!J#!3Ks3G +X%|q֒w)gUK3ٛ'5n$O\!'YP#y44feU/,8*DYqҭyNdݽ7ޭyOz3V.LZDkˎե&K8kCGMS$vq5ERE%QEQE-Qڊ>N}2e ǴrK6{pr j6&׌Nr%D+I< E"&(n}jVEf FH4gb2E;Z(()h(+ IP넕Ǚ5T9^>42x<ߊ7`4qڛ}Bw};Ÿ]L/^w A"鞕Ȯ6GAn٤H5$q*7&7@F iq ^DOcd#yKyM~oZXDpNXkmþ<&޴"ݜpkkÊY?AҺ ǷM?G$ނ/W'95~-If`gִFO%}&>MQEQEQEQEQE-RQEQEREQEQE( 'ZZ6f'qJn =*hsO"OIwݳPL>EF'5,jX1f ı-)XI=TrEFsqQ1x2#'4HH).7aRnR,EH]J}ZIwdPvF*6I⣗nҤ4z}xF~soi7%pF yxO~+cOKX<*i_jSV 1&]wwVv,U;ZLzɵ=jHFMی|r s<i%M'rid_zimF `bKr@DvNjБmۇ V aM[,6NÜk1#LY*: kLU,JdZYBFS\чBgWS` ?]`1!]*bEQE-RQEQEQEQERQEQKEQEQEQEQEqѻ B+ upk ;-@u"}9Dgy>j"ay[M0(@!7AL 5+ ;֜iBls ؈ecsLnec< b7ޢa#]:R]ǠKjsY;1 )i&HTAV`@=*f"d!E?XcA-nb A&NqN-@ ʻ\`:WZx#Ҋ)(((((EQEQE-QEQEQEQEQEQ\2ۇ}IW*A>)H'An*V e@U ruR-H9WTW.u rdUqܙ 0v(UX1'w1XMQ';]͢(JZD|Fs])fiQIEQEQERE%RKEQEQEQEQEQ\܈Fq:O<z g* _" 9fmF3qj/Z#ydtRRG!bzIKs< "6AV[w,O_Ztt4r&e4D9}֙cTX'I|qe> ջD*\}Njժ,O* ͐?Ң2H }zT N{tɤ34`0U̮<ҩLFqږ>\8Dg84<Ԍ,sc!]4ǽYЬ#2Na>խ>)ۙx 6~Y$ʹ;C]ѻtk >REQEQERE%QEQERP3REQEQEQEq]06pOzS`\t֯[p2OO3S<,>zDvV2^EhU8( v eڣ[A$}y`SW͜3@$`%_VIajB9>q Ǐk3ST>f9MW5(>v`Xb$ ayH8R5y ž ) +(#׮*YBjICXJ g5cMYnrj[1)H$%#%bup.V2vvoO{딏BIZ^--mQXb\*((T%>)()()((((((((ql C B 5y!$ ǑTG'늳;F[ZFS*ˁؤdcV[l(E66gP_qU`wu`{69}Hc>\f?_"IR .? <CH|ɥquL#מE\F谚cEPf[pǍ[CŒ08mKBpw }*K^j'Ui~~ cA> u;viTʌsn>fV1QQ,bKvAo^ir˹oZŚC]S٤VImno[B]juQEQE-RQEQEREQIEQEQEQKEQKEQ0$kyVfʚҷ +nPkV݀BIWu1X*z*a*!V '"6dޞj$P 5$Wb*xÎRGt|(vt5Fe ʿ1P 0rAT>n⻇| >~Q5+ąR u5-zU[#ѾCU-Re=Ūʠ OH<2;ṬDm.9qj47\SaH78#=Hmd{n"ƁH,G+H<Z@b݇_4"4og\"Yf9Oj`If$Bp VqҗqvKEQEQEQEQEQE-RQEQKEQE%RE%REQ\e% !WpQFwjCֶ # I҄*ǽvH"# ˑZ,[2fV25GcqCٍG7j)"lx>ң9BTSc/yc ;My.&`:gHrr)BƣfPri=iƻT>>_Jb8< 6Iﲬ)ȨN9'ڧFqU+P,^fmoEI7- =+ONwb;(ݫvzn +؍H Vsg}3N((((((((Z()()((<ط0I\Q0vF2Gs޹=:ք'|A35r&L"ۢ mHE,O'w:'Pw0,N:Sf (Y՘(=2[W,q/3S  U94z⠉yƛLg.sccJc 'ja zӉh€;ep_G\YccM$s gh9'1Ƞ{wWDfSџ[Ɣ(-ފJ(()h((()h)h)h(Z((cfYCkQh؉5õp lBTmD3RdOfrc$T3.;u 1!n1s֘dU}B0d$6ޝ%`b?oi%TbDT> L{N fJs}j ;i`bk\:zv6@F~uYvTu p\^N7qA yaO.ax=a=kG6S8m&H0յW颊)h(((((()h((J(((+jW9#!`\dp& QҮE)=EhC79)*rM:[2zK%W i~P;QÏON} <`9SSV#3JK1r|гr|N1AM͗?'lUK륌U ^bEsK%¨ E> ̍dX5uf e+J㳅9!v--#ETm^jOޖ)h(()(((Z(()((J()h0\MMrYYX䟕3y[rJ)o'#Q۳zTVĴj,DT`5 GkNF}Mi #mF {P$jT)sڧ&v3I&uPnT\2c ʻH@*9&ʬdިȬdKúiVr3] a"48@iaasWBkkki((((((((J(((Z(((( ?뢮(((((((((((()hREQEQEQEQEQEQKEQE%QEQEQEQEQEQEQE-RQEQEQEQIhQEQEQE EQIEQEQKEQERIIEQIEQEQEQIEQEQEQEQEQEQEQEQERQEQEQEQE-QERE%QE%QE%REQEQEQEQEQEQEQEQERE%QEQEQEQEQIEQE-QKERQEQEQKEQEQEQEQEQEQEQKEQEQEQEQEQIE--RE%-RRQKE%RE%RRQEQEQEQEQEQEQEQE%REQEQEQEQE-RQEQEQERE%QE-RQE-RQEQEQEQEQEQEQERQE-QEQEQIEQEQKEQKEQE-RQKEQIEQE-RQEQEQEQEQEQERKIE%QEQEQEQEQEQEQEQEQERE%QEQEQEQEtZ((JJ)h((((((((()h(()()h((((()}j99 6N>'g-QEQEQEQEQEQEQEQEQEQKEQEQEQEQEQERRQEQEQEQER2P@?Ҕ:QKEQEQEQIERQE-QKEQEQEQEQEQEQEQEQERE%QEQEQEQEQEQEQIEQEQEE-QEQEQEQERE%QEQIERQE-%QERIIEQE88Ҋ(QKEQE%QEQEQEQEQEQEQEQEQEQEQE-RQEQERE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQIEQEQEQEQEQEQERQE-QEQEQEQEQEQEQEQEQEQEQEQE-RQE-RQEQEQEQEQEQEQERQ(Z((QKEQEQEQEQEQEQE-RQEQEQEQEQE-RQEQEQEQEQE 4QKEQEQEQERE%RE%QE%REQEQEQEQE-RQEQEQEQIEQIEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERQEQKEQEQIEQE-RQE-QEQEREQEQEQEQEQEQEQEQEQEQEQEQEQIF(((((()((J()hMREQEQERE%QEQEQEQEQEQEQEQERQE-QE-RQEQEQڊ()((J(((ZZ(((((Z()((((((()(EREQEQEQEQEQEQEQIEQEQEQEQEQEQEQEQEQEQE-RQEQEQE%REQIEQE-RQEQKEQEQEQEQEQEQEQEQERQE-QE-RQE-RQEQE%QEQGKEQEQEQEQEQEQEQEQKEQKEQEQEQEQEQEQEQE%REQEQEQE%Qx&Og֊(J(((((((J(((Z(((()()()(h{j /NIQzZu-QKEQEQEQEQKEQKEQEQERQEQKEQKEQEQEQEQEQIEQEQEQKEQKEQEREQEQEQEQEQEQKEQEREQEQEQKEQEQEQE-RQEQEREQIߏփG4QEQEQEQEQEQERE%QEQIEQIEQEQEQKEQKEQE h((QKEQKEQKEQKEQEQEQEQERE%REQEQEm8'0('g8QE%QEQEQERKEQKEQERE%QIEQIEQEQEQE%REQEQEQKEQE%W ?뢮()())hZUN^u:((((((((((((((((TuQE--QKIE%-JNS(((((((((((((((eGQQE--QKE%%QEJޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEe2JJ(Z((ZU/zUNS(((((((((((((((eGQEQEQIE%QE*ӗ9{ө((((((((((((((((QtQEQIERE%QJ/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)QE%-RQEQKE*ҭ9{ө((((((((((((((((Q(Z(()(Zr/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:((J((iޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:((((Z)V{ӗ:N((((((((((((((()ʎ((((U/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2襢J)(((iޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:J((((U/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2RQIERKEQEQJN^u:((((((((((((((((TuQIEQEQEQE*ӖuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLQIE-RQEQIER9iޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQEQEQEQEQJN^u:((((((((((((((((TuQEQEQEQER9{ӗ:N((((((((((((((()ʎJ((((U/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2袊J((()VޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎ((((U/zrSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2袊((((iޜuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL:(((((Zrӗ:N((((((((((((((()GERQE-QEQE%SޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎ(()h(Zr/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:(((()VޝNQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEʎ((((U-9{ө((((((((((((((((QtQEREQEQEN^NS(((((((((((((((:uQEQEQEQEN^NS(((((((((((((((h(Z()(N^u:(((((((((((((((( ?뢮((((Z(((((()h(Z(Z(((J(((((((((((((((((((((((((((((()(()h(Z(Z(Z()(()h((((((((((Z((((((((()h((((EQEQEQEQEQEQEQIEQEQEQEQEQEQEQEQERE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERE%QEQE-QEQEQEQEQEQEQEQEQEQE-RQEQERE%QEQEQEQEQEQERE%QEQE-RQEQEQEQIEQEQERE%QEQIEQEQEQEQEQEREQIEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQERQEQEQEQEQEQEQEQEQEQEQEQEQEQKEQEQEQEQERE%QEQEQERE%QEQIEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQE-RQE 984REQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERE%QEQEQEQEQEQEQEQEQEQEQEQEQEQERQEQEQEQEQEQEQEQEQEQEQKEQKEQEQEQEQKEQERE%QEQEQEQEQE-RQEQERE%QEQE-RQEQEQEQEQEQEQEQEQEQEQEREQIEQEQEQEQIEQEEQEQEQEQEQEQEQFh4QEQE-RQEQKEQERE%QEQEQEQEQEQEQEQEM'zNREQEQKEQEQEQEQEQEQEQEQEQEQKEQEQEQE-RQEQKEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERE% EQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQIEQEQEQEQEQEQEQEQEQEQEQGj;QEQEQEQEQEQEQEQEQEQEQEQIEQEQEQEQEQEQEQEQG|ފ(((((((()h((((((((((((((((((((()h(((((((((((((()((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((QEQEQEQKEQERE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE(@)h((((((((((Z(((((((()1EQERQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERE%~4QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERE%QEQEQEQEQEQ_ ?諢(((((Z((((((((=(R ()(((((J((()((((((QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEtqE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQERE%QEQIEQEQEQE)99'GPZG:S>,@ǥi pJ8,ZIF JOJC,ʤyJJޅ?Rj`]bI "KmO.žONr r:ԓI%AnrUOTjy`j v`܃YDb6H%Hj!#k҇a?F-? "o/|ޮ-1=ض1#8ښ0eW?{v3׊HJ{D` jG`<{ن69UTD8v!?UOP6'`*l#ztC[٪@b T[n1ToO`'R)>jTvS(wda>F1ǜH1TRj!mEVݸ vMjBێ񌑹r+B#H8ȫyyV8j^<ۺ7Կ֫m̌O ~IkZ(((oe08KX6d/~Um:*qpNI'0$sX;KI40>4<{"S1R,-enV;&/!J?(j'*bE2MʧiG+͒Eh"?-ڧ@l5vuBgaV B7VPHs paUVfYh `nÉ ~ASE(`A4Ӯ)LWs1GqLft(Au-P^߮R`e2rMߕCjvL~Pڢ_24'm§dV2qʯ] 3ǥ2>YJh*v bol>]~d1Dc?҉>@ILIKn>UmiYcQ˲##6}Xu",p~QT-pXVc;,O^ʄd8Ֆa0+B[.-N I'#wLG>dlǍ55[rm)$~4 玔3HF5~[ *16Gk|9R3_Zr oZ1.*T#y>cN`1c|Ɲ,OTe1Eg)F<[ʩJ8&\bl(VlH08sP.$JZ)"Ri&78dlʄl•rBΖ1dR6>/bF*9 `:6L1aڡ zQ Tqw*Uqt>n0}8>e8 5\s1H˺B1Bߥ;b*$ Nء+~TT2?wZVQEQEQEW bx|k+Yګft|K*. 92ĢImqJPcaSVim"*-A"2NU$S Ud4aR(ViT'v8p;U4N~u4H {J]Z0|FZh󓒜$ n T{9ǭWNd|Ńb{-jG\T1B` o;U;d1  U;/ͷ>lA#(\*⣒*ϔsTI p:S[;#֥ Ҥ|c>Unw:=Z%GXtH;΍@h!(O@ҕIsJpzjB&Aps.;U|GE;؎gq5DH|̞THCJB ;Izv)%f=*-g86%wR6RqYGS`OS[ˌdUz;Vc@p YElǰ'RzUf{nlzDAK>5ḃp8UB\4Φ"[Z!{*IDd]8I!$)j.0R޼/CNr*G[wV(CkEWZ\ܘ:cZ~ѧ8nLDRơ*0~u>8 +{4]gi(ݴh@ʻ{玔Z ^) sϭ3R[ۖR78 aOm % "ǨFv^iѻbxN@d/+">@5lrx^޴JF8V ?R}0@j*6mJnf-ԊdQ;| zm̌t;Ld'%+('n{UY 0j SYIR1sG!j>u4o=N",?8oN4]`Z2Y>\J2I'*Q6좰p)bPzA4MI iAy{S9Zd-0:fAh:h[qˈǞEWo.3w؆1<yb=qҢQ}).T9ơ8=;S 浫((J(= #C}1H* P-^CrrMF"9 ޘ2[%wBV- #\|qZ&L֎VE3KQLR;Z^|m%O`cops? jR dIBz0>_8*hXE  V㷍m\ bRLD1Jm|LUXe@CF#Y1 ' "'=jՒ[Vm܏85otWz{gT* JVR)ZbGblێ:0۷S]B<`;pe*88bRF })kWv|X ū/(1Th o8*a+j~ޫ̏ߌ5eD-W#")nxasPB>MC)N*pUz[s#QPxEZm,gڪg6H\$ !Hiȷ\yYA*JUQ3 4ܼBOqұ@un>hF G;B)W;p?Jlyy#$8#,78yw%q)˰G =`Ѫ0{qLu>,őɒy\Ka{c<ՉwLReQb<ڳʻ6pjʨ9a=&֊A!\d`.J{SlIfQ c\vRhڟyXp5 L8M;P]rѱU'a=CtyGPlNsU/tj2~n9S!d;Um!b `&%:ԢHcOZC'<qSU L(xTZ'XޫԊ#K  9ϵ2==EyqRwf թJUa 3U>6\8ԸN =%)cL|w5hqF*sg`S$M@c8KkXV]1)ަWf԰k75l gi=y=Axf+!/#u5Ϙ\n> `j# En{ާ˷ ۴,ǂbH_cPjH%= N>{Y]'oJ1 ]bS"![Y8I}EHE`{Qe GIjGo799R@GKg+(t9cӵ-%Ffq.p[vKw%A pr.g g9ve,;RʛSS.w}je#% 4ː3֝ igݕnr6J$BzpjɸqjcQ]`G4ےqQUDll`ƫl, 0*RA=8I!T*im 9lÑ֦kvqa*Dϗ2xRdjHT`w!RNz,N|Ւ f$qS B*«zXɉ'lԚ}Qcx_%J23q7nTI@Kp\eHG(dݎq =Mhv_ƭŜ=z jPy?);(g^cǭhiQEQE2eg=j ؞kfD=j;g橼z3.<9[LVDHx#Vgt9@WIu %Gzǚ3E2 |!sҡ܆wIl3=-#>T ňAzqK{+'s-3T Ѧ' v*VbĈɢĬ8۴>HJME@j]Ș%qXEv-N,$bUԅхvoZy!ii)miIub8^~UY'$:"VJ$[vJ?) q՘pQAHC/}h f(Rh !zt rNL>fw,|;щ?*Tevfrrvr>POOJvf%{Lk$=}i#1NriPNֈfS\G'sTi[&gˀ;Sjhq<2?xKvY1֧Y۔(ʕ++fZ(lcMÎZ᭠Ozc {Tlz럺u 3Y.DO&f*FHx4 gu16Au(rV>Ң;@j2N˸k^n㌁VdX*;+gPHt-9bEiNٔ^Pfq -cٳTNiG" (d.}=}ٛwSԙ0RsWULDK)l5goa@ʞj,# HUHI8T8 )zsRQ|:T-q弑>p8NU65c({2ٔ4x8$c޳ cuD5 B5,pDnBG1\SA 5yqӁVHӥY?(fZrı U0* g)v0C/[7p%a6`by;qzI]tTQEQQlJضWw?Wxv5,jӭ4ׯgVQHpAbҲ"s$,ҳab$5=3žj֩0wEOJGAKh<$e!SXm>)ڼ(tUHT{d$=̊8,@7/x)*U }hі%v0}h6)Q\ҤbUBCcqnMKk"4w6qNJ$ |gw8U[F`AA= W}k* pϟ2M|یS`Pp65=1vBzҁsS̻Wx?)\P[R6oZCJrOIcՙՋ5S {(SI bEt5H1_bpz Ԯ*6s+ oÖvL&P\XwqQ#Wiq֚I01I=>#bB_ҟ:P-g.1Z2*-۾p@\uvrF6z/9 U \ڡ fP8Bŷ:S;xƺ*((iFW(8sY%{ҹ+.$W;qɤ+F\4 G^?*/I>>+jFŃ 1U,SqLⱬD>fX71~+DI~8%*O,yKɴ㚞G4RkN⩡ڟķOQجSS]`ƓWX1ɫ7*7UD~scG02IĎÚԕY᪕þs:*π*HB;J}{vcmimn>GD ў=O*O$NjxOsc9#bx5|{QFzV*cpxc*@c8XiU.9j@99eNr993FyIx:Pw-:4>շ]MnQEQEh7%Ө+ՐG"=E8Zjݖ .j(FjDInُʫVdY̫)ny$W?>sOJŜ%3׿J5w&㚒C;K~G;sնa^s8i0@ئ2;V;eVR< "Ȥy'E?`iYD`z){vHRH3N+pA;Sb7qNu#'Ұ˱,4B0*Hh…?RE*@|xz€6ZɳqJ*3!@uMMgid-ҩf$jbI ZN"Gw~zR2@nU\w51(B2TCC$͙8L}Ojc'j,OE+?5/ ޼dJ=ri #2Iخ袊(ӊk qPF%MV\C?:U+q,^bzf#d?*{5\$);+"?Εf"BNII )Q~o)0+)l\BwGZ'Kn&G ~sO4O09$4R bNzx'*i#w' :Vr\}#xj9 ;4 XY Ԟ*Q6A<Avy;TWLlvqU@Zzd Ο0qJ xm&`  yqҮ.܌J0z$cJĺTw.8(O6pdcsSa\=1>?2R8b(8WDN({L &w*T\9UϮE>!|y: :$Fzaj%Flㅨc7I!|?~ꑏ9s00 PsL'j{X68f-Ͻ*kX6ڦW;'O;*[b9Wnh( !U,H*[\<ޱ=ܦPGIu<&QIKq^ @bci@8]mzU MRTD!z{ՋY>2V-pGP-{]ʧOi͎=2::sJZ^y=@AX#ɐMY&Y b zҴPvmJ-cU9=>oe!4#ξ Bg